{"diffoscope-json-version": 1, "source1": "/input1", "source2": "/input2", "unified_diff": null, "details": [{"source1": "zipinfo {}", "source2": "zipinfo {}", "unified_diff": "@@ -1,515 +1,294 @@\n-Zip file size: 2369076 bytes, number of entries: 2011\n+Zip file size: 2378061 bytes, number of entries: 2011\n -rw----     2.0 fat        0 bX defN 20-Apr-01 08:04 META-INF/\n -rw----     2.0 fat       64 bl defN 20-Apr-01 08:04 META-INF/MANIFEST.MF\n -rw----     2.0 fat    64402 bl defN 20-Apr-01 08:04 META-INF/DEPENDENCIES\n -rw----     2.0 fat    11358 bl defN 20-Apr-01 08:04 META-INF/LICENSE\n -rw----     2.0 fat      166 bl defN 20-Apr-01 08:04 META-INF/NOTICE\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo/\n--rw----     2.0 fat    45114 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo/pom.xml\n+-rw----     2.0 fat    42653 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo/pom.xml\n -rw----     2.0 fat       60 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-config-api/\n--rw----     2.0 fat     8066 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-config-api/pom.xml\n--rw----     2.0 fat       71 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-config-api/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/compat/\n--rw----     2.0 fat    79727 bl defN 20-Apr-01 08:04 META-INF/compat/dubbo.xsd\n--rw----     2.0 fat    81371 bl defN 20-Apr-01 08:04 META-INF/dubbo.xsd\n--rw----     2.0 fat      200 bl defN 20-Apr-01 08:04 META-INF/spring.handlers\n--rw----     2.0 fat      145 bl defN 20-Apr-01 08:04 META-INF/spring.schemas\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-config-spring/\n--rw----     2.0 fat     6414 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-config-spring/pom.xml\n--rw----     2.0 fat       74 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-config-spring/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-cluster/\n--rw----     2.0 fat     2616 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-cluster/pom.xml\n--rw----     2.0 fat       68 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-cluster/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 security/\n--rw----     2.0 fat     4520 bl defN 20-Apr-01 08:04 security/serialize.blockedlist\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-common/\n--rw----     2.0 fat     2978 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-common/pom.xml\n--rw----     2.0 fat       67 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-common/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-filter-cache/\n--rw----     2.0 fat     2283 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-filter-cache/pom.xml\n--rw----     2.0 fat       73 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-filter-cache/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-filter-validation/\n--rw----     2.0 fat     3093 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-filter-validation/pom.xml\n--rw----     2.0 fat       78 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-filter-validation/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-api/\n--rw----     2.0 fat     2385 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-api/pom.xml\n--rw----     2.0 fat       73 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-api/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-netty/\n--rw----     2.0 fat     2326 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-netty/pom.xml\n--rw----     2.0 fat       75 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-netty/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-netty4/\n--rw----     2.0 fat     2399 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-netty4/pom.xml\n--rw----     2.0 fat       76 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-netty4/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-etcd3/\n--rw----     2.0 fat     3689 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-etcd3/pom.xml\n--rw----     2.0 fat       75 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-etcd3/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-mina/\n--rw----     2.0 fat     2445 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-mina/pom.xml\n--rw----     2.0 fat       74 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-mina/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-grizzly/\n--rw----     2.0 fat     2125 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-grizzly/pom.xml\n--rw----     2.0 fat       77 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-grizzly/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-p2p/\n--rw----     2.0 fat     2200 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-p2p/pom.xml\n--rw----     2.0 fat       73 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-p2p/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-http/\n--rw----     2.0 fat     2746 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-http/pom.xml\n--rw----     2.0 fat       74 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-http/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-api/\n--rw----     2.0 fat     2480 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-api/pom.xml\n--rw----     2.0 fat       68 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-api/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-dubbo/\n--rw----     2.0 fat     4028 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-dubbo/pom.xml\n--rw----     2.0 fat       70 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-dubbo/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-injvm/\n--rw----     2.0 fat     1971 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-injvm/pom.xml\n--rw----     2.0 fat       70 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-injvm/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-http/\n--rw----     2.0 fat     2504 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-http/pom.xml\n--rw----     2.0 fat       69 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-http/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-rmi/\n--rw----     2.0 fat     2097 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-rmi/pom.xml\n--rw----     2.0 fat       68 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-rmi/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-hessian/\n--rw----     2.0 fat     2774 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-hessian/pom.xml\n--rw----     2.0 fat       72 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-hessian/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-webservice/\n--rw----     2.0 fat     3188 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-webservice/pom.xml\n--rw----     2.0 fat       75 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-webservice/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-thrift/\n--rw----     2.0 fat     3202 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-thrift/pom.xml\n--rw----     2.0 fat       71 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-thrift/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-native-thrift/\n--rw----     2.0 fat     2304 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-native-thrift/pom.xml\n--rw----     2.0 fat       78 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-native-thrift/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-memcached/\n--rw----     2.0 fat     2111 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-memcached/pom.xml\n--rw----     2.0 fat       74 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-memcached/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-redis/\n--rw----     2.0 fat     2611 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-redis/pom.xml\n--rw----     2.0 fat       70 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-redis/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-rest/\n--rw----     2.0 fat     3999 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-rest/pom.xml\n--rw----     2.0 fat       69 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-rest/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-xml/\n--rw----     2.0 fat     2850 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-xml/pom.xml\n--rw----     2.0 fat       68 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-xml/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/\n--rw----     2.0 fat     2755 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/pom.xml\n--rw----     2.0 fat       69 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-api/\n--rw----     2.0 fat     3313 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-api/pom.xml\n--rw----     2.0 fat       73 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-api/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/assembly/\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/assembly/bin/\n--rw----     2.0 fat     2943 bl defN 20-Apr-01 08:04 META-INF/assembly/bin/dump.sh\n--rw----     2.0 fat      832 bl defN 20-Apr-01 08:04 META-INF/assembly/bin/restart.sh\n--rw----     2.0 fat     1196 bl defN 20-Apr-01 08:04 META-INF/assembly/bin/server.sh\n--rwx---     2.0 fat     2002 bl defN 20-Apr-01 08:04 META-INF/assembly/bin/start.bat\n--rw----     2.0 fat     5249 bl defN 20-Apr-01 08:04 META-INF/assembly/bin/start.sh\n--rw----     2.0 fat     1635 bl defN 20-Apr-01 08:04 META-INF/assembly/bin/stop.sh\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-api/\n--rw----     2.0 fat     2390 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-api/pom.xml\n--rw----     2.0 fat       74 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-api/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-default/\n--rw----     2.0 fat     2997 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-default/pom.xml\n--rw----     2.0 fat       77 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-default/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-multicast/\n--rw----     2.0 fat     1999 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-multicast/pom.xml\n--rw----     2.0 fat       79 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-multicast/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/\n--rw----     2.0 fat     2476 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/pom.xml\n--rw----     2.0 fat       79 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-zookeeper/\n--rw----     2.0 fat     2584 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-zookeeper/pom.xml\n--rw----     2.0 fat       79 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-zookeeper/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-redis/\n--rw----     2.0 fat     2601 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-redis/pom.xml\n--rw----     2.0 fat       75 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-redis/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-consul/\n--rw----     2.0 fat     2450 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-consul/pom.xml\n--rw----     2.0 fat       76 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-consul/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-etcd3/\n--rw----     2.0 fat     2300 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-etcd3/pom.xml\n--rw----     2.0 fat       75 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-etcd3/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-eureka/\n--rw----     2.0 fat     3013 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-eureka/pom.xml\n--rw----     2.0 fat       76 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-eureka/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-nacos/\n--rw----     2.0 fat     3123 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-nacos/pom.xml\n--rw----     2.0 fat       75 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-nacos/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/\n--rw----     2.0 fat     4787 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/pom.xml\n--rw----     2.0 fat       74 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-multiple/\n--rw----     2.0 fat     2889 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-multiple/pom.xml\n--rw----     2.0 fat       78 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-multiple/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-monitor-api/\n--rw----     2.0 fat     2406 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-monitor-api/pom.xml\n--rw----     2.0 fat       72 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-monitor-api/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-monitor-default/\n--rw----     2.0 fat     3183 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-monitor-default/pom.xml\n--rw----     2.0 fat       76 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-monitor-default/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-spring/\n--rw----     2.0 fat     2127 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-spring/pom.xml\n--rw----     2.0 fat       77 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-spring/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-log4j/\n--rw----     2.0 fat     1995 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-log4j/pom.xml\n--rw----     2.0 fat       76 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-log4j/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-logback/\n--rw----     2.0 fat     2125 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-logback/pom.xml\n--rw----     2.0 fat       78 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-logback/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-qos/\n--rw----     2.0 fat     2954 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-qos/pom.xml\n--rw----     2.0 fat       64 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-qos/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-api/\n--rw----     2.0 fat     1977 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-api/pom.xml\n--rw----     2.0 fat       78 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-api/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-fastjson/\n--rw----     2.0 fat     2108 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-fastjson/pom.xml\n--rw----     2.0 fat       83 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-fastjson/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-fst/\n--rw----     2.0 fat     2125 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-fst/pom.xml\n--rw----     2.0 fat       78 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-fst/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-hessian2/\n--rw----     2.0 fat     2112 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-hessian2/pom.xml\n--rw----     2.0 fat       83 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-hessian2/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-native-hession/\n--rw----     2.0 fat     2035 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-native-hession/pom.xml\n--rw----     2.0 fat       89 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-native-hession/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-jdk/\n--rw----     2.0 fat     2102 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-jdk/pom.xml\n--rw----     2.0 fat       78 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-jdk/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/\n--rw----     2.0 fat     2231 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/pom.xml\n--rw----     2.0 fat       79 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-avro/\n--rw----     2.0 fat     2125 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-avro/pom.xml\n--rw----     2.0 fat       79 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-avro/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-protostuff/\n--rw----     2.0 fat     2347 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-protostuff/pom.xml\n--rw----     2.0 fat       85 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-protostuff/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-gson/\n--rw----     2.0 fat     2124 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-gson/pom.xml\n--rw----     2.0 fat       79 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-gson/pom.properties\n--rw----     2.0 fat     1140 bl defN 20-Apr-01 08:04 MapValue.proto\n--rw----     2.0 fat     2781 bl defN 20-Apr-01 08:04 ThrowablePB.proto\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/\n--rw----     2.0 fat     3855 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/pom.xml\n--rw----     2.0 fat       83 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-zookeeper/\n--rw----     2.0 fat     2268 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-zookeeper/pom.xml\n--rw----     2.0 fat       83 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-zookeeper/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-apollo/\n--rw----     2.0 fat     2428 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-apollo/pom.xml\n--rw----     2.0 fat       80 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-apollo/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-nacos/\n--rw----     2.0 fat     2073 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-nacos/pom.xml\n--rw----     2.0 fat       79 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-nacos/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-consul/\n--rw----     2.0 fat     2089 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-consul/pom.xml\n--rw----     2.0 fat       80 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-consul/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/\n--rw----     2.0 fat     2771 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/pom.xml\n--rw----     2.0 fat       78 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-compatible/\n--rw----     2.0 fat     4410 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-compatible/pom.xml\n--rw----     2.0 fat       71 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-compatible/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Jun-29 18:14 META-INF/maven/com.alibaba/\n--rw----     2.0 fat        0 bl defN 20-Jun-29 18:14 META-INF/maven/com.alibaba/hessian-lite/\n--rw----     2.0 fat      108 bl defN 20-Jun-29 18:14 META-INF/maven/com.alibaba/hessian-lite/pom.properties\n--rw----     2.0 fat     9689 bl defN 20-Jun-29 02:13 META-INF/maven/com.alibaba/hessian-lite/pom.xml\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-api/\n--rw----     2.0 fat     3058 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-api/pom.xml\n--rw----     2.0 fat       73 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-api/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-zookeeper/\n--rw----     2.0 fat     2155 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-zookeeper/pom.xml\n--rw----     2.0 fat       86 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-zookeeper/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-redis/\n--rw----     2.0 fat     2383 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-redis/pom.xml\n--rw----     2.0 fat       82 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-redis/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-consul/\n--rw----     2.0 fat     2148 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-consul/pom.xml\n--rw----     2.0 fat       83 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-consul/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-etcd/\n--rw----     2.0 fat     2659 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-etcd/pom.xml\n--rw----     2.0 fat       81 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-etcd/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-nacos/\n--rw----     2.0 fat     2023 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-nacos/pom.xml\n--rw----     2.0 fat       82 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-nacos/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/\n--rw----     2.0 fat     1806 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/pom.xml\n--rw----     2.0 fat       85 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/pom.properties\n--rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/services/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/\n--rw----     2.0 fat     1137 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ConfigInitializer.java\n--rw----     2.0 fat     1116 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ConfigPostProcessor.java\n--rw----     2.0 fat     4895 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/DubboShutdownHook.java\n--rw----     2.0 fat    24129 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ReferenceConfig.java\n--rw----     2.0 fat    32215 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ServiceConfig.java\n+-rw----     2.0 fat     1173 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ConfigInitializer.java\n+-rw----     2.0 fat     1151 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ConfigPostProcessor.java\n+-rw----     2.0 fat     5044 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/DubboShutdownHook.java\n+-rw----     2.0 fat    24683 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ReferenceConfig.java\n+-rw----     2.0 fat    32942 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ServiceConfig.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/\n--rw----     2.0 fat    52396 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/DubboBootstrap.java\n--rw----     2.0 fat     1132 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/DubboBootstrapStartStopListener.java\n+-rw----     2.0 fat    53805 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/DubboBootstrap.java\n+-rw----     2.0 fat     1166 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/DubboBootstrapStartStopListener.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/\n--rw----     2.0 fat     2533 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/AbstractBuilder.java\n--rw----     2.0 fat     9212 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/AbstractInterfaceBuilder.java\n--rw----     2.0 fat     5506 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/AbstractMethodBuilder.java\n--rw----     2.0 fat     4105 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/AbstractReferenceBuilder.java\n--rw----     2.0 fat     6787 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/AbstractServiceBuilder.java\n--rw----     2.0 fat     6767 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/ApplicationBuilder.java\n--rw----     2.0 fat     1865 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/ArgumentBuilder.java\n--rw----     2.0 fat     4350 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/ConfigCenterBuilder.java\n--rw----     2.0 fat     3389 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/ConsumerBuilder.java\n--rw----     2.0 fat     4303 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/MetadataReportBuilder.java\n--rw----     2.0 fat     6115 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/MethodBuilder.java\n--rw----     2.0 fat     3460 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/ModuleBuilder.java\n--rw----     2.0 fat     3748 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/MonitorBuilder.java\n--rw----     2.0 fat    10054 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/ProtocolBuilder.java\n--rw----     2.0 fat     6786 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/ProviderBuilder.java\n--rw----     2.0 fat     4644 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/ReferenceBuilder.java\n--rw----     2.0 fat     9666 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/RegistryBuilder.java\n--rw----     2.0 fat     4440 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/ServiceBuilder.java\n--rw----     2.0 fat     1034 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/package-info.java\n+-rw----     2.0 fat     2615 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/AbstractBuilder.java\n+-rw----     2.0 fat     9557 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/AbstractInterfaceBuilder.java\n+-rw----     2.0 fat     5719 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/AbstractMethodBuilder.java\n+-rw----     2.0 fat     4266 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/AbstractReferenceBuilder.java\n+-rw----     2.0 fat     7059 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/AbstractServiceBuilder.java\n+-rw----     2.0 fat     6981 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/ApplicationBuilder.java\n+-rw----     2.0 fat     1928 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/ArgumentBuilder.java\n+-rw----     2.0 fat     4491 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/ConfigCenterBuilder.java\n+-rw----     2.0 fat     3507 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/ConsumerBuilder.java\n+-rw----     2.0 fat     4447 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/MetadataReportBuilder.java\n+-rw----     2.0 fat     6352 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/MethodBuilder.java\n+-rw----     2.0 fat     3592 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/ModuleBuilder.java\n+-rw----     2.0 fat     3885 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/MonitorBuilder.java\n+-rw----     2.0 fat    10481 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/ProtocolBuilder.java\n+-rw----     2.0 fat     7079 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/ProviderBuilder.java\n+-rw----     2.0 fat     4809 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/ReferenceBuilder.java\n+-rw----     2.0 fat    10049 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/RegistryBuilder.java\n+-rw----     2.0 fat     4601 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/ServiceBuilder.java\n+-rw----     2.0 fat     1054 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/bootstrap/builders/package-info.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/event/\n--rw----     2.0 fat     1145 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/event/DubboServiceDestroyedEvent.java\n--rw----     2.0 fat     1680 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/event/DubboShutdownHookRegisteredEvent.java\n--rw----     2.0 fat     1688 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/event/DubboShutdownHookUnregisteredEvent.java\n--rw----     2.0 fat     1444 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/event/ReferenceConfigDestroyedEvent.java\n--rw----     2.0 fat     1642 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/event/ReferenceConfigInitializedEvent.java\n--rw----     2.0 fat     1274 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/event/ServiceConfigExportedEvent.java\n--rw----     2.0 fat     1282 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/event/ServiceConfigUnexportedEvent.java\n+-rw----     2.0 fat     1177 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/event/DubboServiceDestroyedEvent.java\n+-rw----     2.0 fat     1726 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/event/DubboShutdownHookRegisteredEvent.java\n+-rw----     2.0 fat     1733 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/event/DubboShutdownHookUnregisteredEvent.java\n+-rw----     2.0 fat     1484 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/event/ReferenceConfigDestroyedEvent.java\n+-rw----     2.0 fat     1690 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/event/ReferenceConfigInitializedEvent.java\n+-rw----     2.0 fat     1310 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/event/ServiceConfigExportedEvent.java\n+-rw----     2.0 fat     1318 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/event/ServiceConfigUnexportedEvent.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/event/listener/\n--rw----     2.0 fat     1857 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/event/listener/LoggingEventListener.java\n+-rw----     2.0 fat     1908 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/event/listener/LoggingEventListener.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/invoker/\n--rw----     2.0 fat     2045 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/invoker/DelegateProviderMetaDataInvoker.java\n+-rw----     2.0 fat     2112 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/invoker/DelegateProviderMetaDataInvoker.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/metadata/\n--rw----     2.0 fat     4697 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/metadata/ConfigurableMetadataServiceExporter.java\n--rw----     2.0 fat     2579 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/metadata/ServiceInstancePortCustomizer.java\n+-rw----     2.0 fat     4826 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/metadata/ConfigurableMetadataServiceExporter.java\n+-rw----     2.0 fat     2643 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/metadata/ServiceInstancePortCustomizer.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/utils/\n--rw----     2.0 fat    29526 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/utils/ConfigValidationUtils.java\n--rw----     2.0 fat     8829 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/utils/ReferenceConfigCache.java\n+-rw----     2.0 fat    30184 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/utils/ConfigValidationUtils.java\n+-rw----     2.0 fat     9081 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/utils/ReferenceConfigCache.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/dubbo/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-config-api/\n+-rw----     2.0 fat     7844 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-config-api/pom.xml\n+-rw----     2.0 fat       71 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-config-api/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/\n--rw----     2.0 fat     4552 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/ConfigCenterBean.java\n--rw----     2.0 fat     4956 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/ReferenceBean.java\n--rw----     2.0 fat     4443 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/ServiceBean.java\n+-rw----     2.0 fat     4659 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/ConfigCenterBean.java\n+-rw----     2.0 fat     5080 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/ReferenceBean.java\n+-rw----     2.0 fat     4588 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/ServiceBean.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/\n--rw----     2.0 fat     6211 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/AbstractAnnotationConfigBeanBuilder.java\n--rw----     2.0 fat     6768 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/AnnotatedInterfaceConfigBeanBuilder.java\n--rw----     2.0 fat     3037 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapter.java\n--rw----     2.0 fat     3124 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/DubboConfigAliasPostProcessor.java\n--rw----     2.0 fat    18630 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceAnnotationBeanPostProcessor.java\n--rw----     2.0 fat     7388 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceBeanBuilder.java\n--rw----     2.0 fat     1814 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/ServiceAnnotationBeanPostProcessor.java\n--rw----     2.0 fat     4469 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/ServiceBeanNameBuilder.java\n--rw----     2.0 fat    22089 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/ServiceClassPostProcessor.java\n+-rw----     2.0 fat     6425 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/AbstractAnnotationConfigBeanBuilder.java\n+-rw----     2.0 fat     6982 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/AnnotatedInterfaceConfigBeanBuilder.java\n+-rw----     2.0 fat     3121 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapter.java\n+-rw----     2.0 fat     3198 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/DubboConfigAliasPostProcessor.java\n+-rw----     2.0 fat    19046 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceAnnotationBeanPostProcessor.java\n+-rw----     2.0 fat     7565 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceBeanBuilder.java\n+-rw----     2.0 fat     1863 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/ServiceAnnotationBeanPostProcessor.java\n+-rw----     2.0 fat     4590 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/ServiceBeanNameBuilder.java\n+-rw----     2.0 fat    22628 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/annotation/ServiceClassPostProcessor.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/config/\n--rw----     2.0 fat     1601 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/config/ConfigurableSourceBeanMetadataElement.java\n--rw----     2.0 fat     4435 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/config/DubboConfigDefaultPropertyValueBeanPostProcessor.java\n--rw----     2.0 fat     5548 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/config/DubboConfigEarlyInitializationPostProcessor.java\n+-rw----     2.0 fat     1640 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/config/ConfigurableSourceBeanMetadataElement.java\n+-rw----     2.0 fat     4541 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/config/DubboConfigDefaultPropertyValueBeanPostProcessor.java\n+-rw----     2.0 fat     5675 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/beans/factory/config/DubboConfigEarlyInitializationPostProcessor.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/\n--rw----     2.0 fat     2658 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/DubboApplicationListenerRegistrar.java\n--rw----     2.0 fat     3109 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/DubboBootstrapApplicationListener.java\n--rw----     2.0 fat     1859 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/DubboBootstrapStartStopListenerSpringAdapter.java\n--rw----     2.0 fat     3756 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/DubboLifecycleComponentApplicationListener.java\n+-rw----     2.0 fat     2717 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/DubboApplicationListenerRegistrar.java\n+-rw----     2.0 fat     3189 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/DubboBootstrapApplicationListener.java\n+-rw----     2.0 fat     1907 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/DubboBootstrapStartStopListenerSpringAdapter.java\n+-rw----     2.0 fat     3853 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/DubboLifecycleComponentApplicationListener.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/annotation/\n -rw----     2.0 fat     2710 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/annotation/DubboClassPathBeanDefinitionScanner.java\n -rw----     2.0 fat     2767 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/annotation/DubboComponentScan.java\n--rw----     2.0 fat     4465 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/annotation/DubboComponentScanRegistrar.java\n--rw----     2.0 fat     4789 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/annotation/DubboConfigConfiguration.java\n--rw----     2.0 fat     3172 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/annotation/DubboConfigConfigurationRegistrar.java\n--rw----     2.0 fat     2055 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/annotation/DubboLifecycleComponentRegistrar.java\n--rw----     2.0 fat     2857 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/annotation/EnableDubbo.java\n--rw----     2.0 fat     3469 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/annotation/EnableDubboConfig.java\n--rw----     2.0 fat     1589 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/annotation/EnableDubboLifecycle.java\n+-rw----     2.0 fat     4564 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/annotation/DubboComponentScanRegistrar.java\n+-rw----     2.0 fat     4882 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/annotation/DubboConfigConfiguration.java\n+-rw----     2.0 fat     3244 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/annotation/DubboConfigConfigurationRegistrar.java\n+-rw----     2.0 fat     2099 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/annotation/DubboLifecycleComponentRegistrar.java\n+-rw----     2.0 fat     2938 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/annotation/EnableDubbo.java\n+-rw----     2.0 fat     3550 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/annotation/EnableDubboConfig.java\n+-rw----     2.0 fat     1631 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/annotation/EnableDubboLifecycle.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/config/\n--rw----     2.0 fat     2421 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/config/DubboConfigBeanCustomizer.java\n--rw----     2.0 fat     3283 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/config/NamePropertyDefaultValueDubboConfigBeanCustomizer.java\n+-rw----     2.0 fat     2474 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/config/DubboConfigBeanCustomizer.java\n+-rw----     2.0 fat     3369 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/config/NamePropertyDefaultValueDubboConfigBeanCustomizer.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/event/\n--rw----     2.0 fat     1847 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/event/DubboBootstrapStatedEvent.java\n--rw----     2.0 fat     1846 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/event/DubboBootstrapStopedEvent.java\n+-rw----     2.0 fat     1897 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/event/DubboBootstrapStatedEvent.java\n+-rw----     2.0 fat     1896 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/event/DubboBootstrapStopedEvent.java\n -rw----     2.0 fat     1734 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/event/ServiceBeanExportedEvent.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/properties/\n -rw----     2.0 fat     2368 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/properties/AbstractDubboConfigBinder.java\n--rw----     2.0 fat     1963 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/properties/DefaultDubboConfigBinder.java\n+-rw----     2.0 fat     2011 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/properties/DefaultDubboConfigBinder.java\n -rw----     2.0 fat     2189 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/context/properties/DubboConfigBinder.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/extension/\n--rw----     2.0 fat     2862 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java\n+-rw----     2.0 fat     2942 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/schema/\n--rw----     2.0 fat     2898 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/schema/AnnotationBeanDefinitionParser.java\n--rw----     2.0 fat    22542 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/schema/DubboBeanDefinitionParser.java\n--rw----     2.0 fat     5007 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/schema/DubboNamespaceHandler.java\n+-rw----     2.0 fat     2977 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/schema/AnnotationBeanDefinitionParser.java\n+-rw----     2.0 fat    22964 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/schema/DubboBeanDefinitionParser.java\n+-rw----     2.0 fat     5112 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/schema/DubboNamespaceHandler.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/status/\n--rw----     2.0 fat     3414 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java\n--rw----     2.0 fat     3692 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/status/SpringStatusChecker.java\n+-rw----     2.0 fat     3503 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java\n+-rw----     2.0 fat     3792 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/status/SpringStatusChecker.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/util/\n--rw----     2.0 fat     6338 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/util/DubboAnnotationUtils.java\n--rw----     2.0 fat     7305 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/util/DubboBeanUtils.java\n+-rw----     2.0 fat     6488 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/util/DubboAnnotationUtils.java\n+-rw----     2.0 fat     7466 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/spring/util/DubboBeanUtils.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/compat/\n+-rw----     2.0 fat    81361 bl defN 20-Apr-01 08:04 META-INF/compat/dubbo.xsd\n -rw----     2.0 fat       91 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.config.bootstrap.DubboBootstrapStartStopListener\n+-rw----     2.0 fat    83041 bl defN 20-Apr-01 08:04 META-INF/dubbo.xsd\n+-rw----     2.0 fat      200 bl defN 20-Apr-01 08:04 META-INF/spring.handlers\n+-rw----     2.0 fat      145 bl defN 20-Apr-01 08:04 META-INF/spring.schemas\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-config-spring/\n+-rw----     2.0 fat     6233 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-config-spring/pom.xml\n+-rw----     2.0 fat       74 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-config-spring/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/\n--rw----     2.0 fat     1526 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/CacheableRouterFactory.java\n+-rw----     2.0 fat     1563 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/CacheableRouterFactory.java\n -rw----     2.0 fat     2084 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/Cluster.java\n--rw----     2.0 fat     1738 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/ClusterInvoker.java\n+-rw----     2.0 fat     1778 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/ClusterInvoker.java\n -rw----     2.0 fat     4387 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/Configurator.java\n -rw----     2.0 fat     1332 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/ConfiguratorFactory.java\n--rw----     2.0 fat     2832 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/Constants.java\n+-rw----     2.0 fat     2934 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/Constants.java\n -rw----     2.0 fat     1738 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/Directory.java\n -rw----     2.0 fat     1842 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/LoadBalance.java\n -rw----     2.0 fat      977 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/Merger.java\n -rw----     2.0 fat     3315 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/Router.java\n--rw----     2.0 fat     4120 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/RouterChain.java\n+-rw----     2.0 fat     4232 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/RouterChain.java\n -rw----     2.0 fat     1881 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/RouterFactory.java\n -rw----     2.0 fat     1077 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/RuleConverter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/configurator/\n -rw----     2.0 fat     8518 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/configurator/AbstractConfigurator.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/configurator/absent/\n -rw----     2.0 fat     1330 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/configurator/absent/AbsentConfigurator.java\n -rw----     2.0 fat     1270 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/configurator/absent/AbsentConfiguratorFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/configurator/override/\n -rw----     2.0 fat     1330 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/configurator/override/OverrideConfigurator.java\n -rw----     2.0 fat     1278 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/configurator/override/OverrideConfiguratorFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/configurator/parser/\n--rw----     2.0 fat     8529 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/configurator/parser/ConfigParser.java\n+-rw----     2.0 fat     8754 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/configurator/parser/ConfigParser.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/configurator/parser/model/\n -rw----     2.0 fat     2915 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/configurator/parser/model/ConfigItem.java\n -rw----     2.0 fat     2058 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/configurator/parser/model/ConfiguratorConfig.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/directory/\n--rw----     2.0 fat     4820 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java\n+-rw----     2.0 fat     4961 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java\n -rw----     2.0 fat     3787 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/directory/StaticDirectory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/governance/\n--rw----     2.0 fat     1732 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/governance/DefaultGovernanceRuleRepositoryImpl.java\n--rw----     2.0 fat     3719 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/governance/GovernanceRuleRepository.java\n+-rw----     2.0 fat     1772 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/governance/DefaultGovernanceRuleRepositoryImpl.java\n+-rw----     2.0 fat     3810 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/governance/GovernanceRuleRepository.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/interceptor/\n--rw----     2.0 fat     2260 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/interceptor/ClusterInterceptor.java\n--rw----     2.0 fat     2201 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/interceptor/ConsumerContextClusterInterceptor.java\n--rw----     2.0 fat     2661 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/interceptor/ZoneAwareClusterInterceptor.java\n+-rw----     2.0 fat     2316 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/interceptor/ClusterInterceptor.java\n+-rw----     2.0 fat     2255 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/interceptor/ConsumerContextClusterInterceptor.java\n+-rw----     2.0 fat     2723 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/interceptor/ZoneAwareClusterInterceptor.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/loadbalance/\n -rw----     2.0 fat     4289 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/loadbalance/AbstractLoadBalance.java\n -rw----     2.0 fat     5355 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/loadbalance/ConsistentHashLoadBalance.java\n -rw----     2.0 fat     5615 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/loadbalance/LeastActiveLoadBalance.java\n--rw----     2.0 fat     3328 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/loadbalance/RandomLoadBalance.java\n+-rw----     2.0 fat     3408 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/loadbalance/RandomLoadBalance.java\n -rw----     2.0 fat     4812 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/loadbalance/RoundRobinLoadBalance.java\n--rw----     2.0 fat     4565 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/loadbalance/ShortestResponseLoadBalance.java\n+-rw----     2.0 fat     4665 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/loadbalance/ShortestResponseLoadBalance.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/\n -rw----     2.0 fat     2393 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/ArrayMerger.java\n -rw----     2.0 fat     1678 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/BooleanArrayMerger.java\n -rw----     2.0 fat     1639 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/ByteArrayMerger.java\n -rw----     2.0 fat     1637 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/CharArrayMerger.java\n--rw----     2.0 fat     1349 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/DoubleArrayMerger.java\n+-rw----     2.0 fat     1386 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/DoubleArrayMerger.java\n -rw----     2.0 fat     1647 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/FloatArrayMerger.java\n--rw----     2.0 fat     1332 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/IntArrayMerger.java\n--rw----     2.0 fat     1492 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/ListMerger.java\n--rw----     2.0 fat     1337 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/LongArrayMerger.java\n--rw----     2.0 fat     1466 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/MapMerger.java\n--rw----     2.0 fat     2851 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/MergerFactory.java\n--rw----     2.0 fat     1445 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/SetMerger.java\n+-rw----     2.0 fat     1370 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/IntArrayMerger.java\n+-rw----     2.0 fat     1535 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/ListMerger.java\n+-rw----     2.0 fat     1374 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/LongArrayMerger.java\n+-rw----     2.0 fat     1506 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/MapMerger.java\n+-rw----     2.0 fat     2927 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/MergerFactory.java\n+-rw----     2.0 fat     1484 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/SetMerger.java\n -rw----     2.0 fat     1647 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/merger/ShortArrayMerger.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/\n--rw----     2.0 fat     2028 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/AbstractRouter.java\n+-rw----     2.0 fat     2099 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/AbstractRouter.java\n -rw----     2.0 fat     2610 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/AbstractRouterRule.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/condition/\n -rw----     2.0 fat    13172 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/condition/ConditionRouter.java\n -rw----     2.0 fat     1344 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/condition/ConditionRouterFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/condition/config/\n--rw----     2.0 fat     1419 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/condition/config/AppRouter.java\n--rw----     2.0 fat     1623 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/condition/config/AppRouterFactory.java\n--rw----     2.0 fat     5147 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/condition/config/ListenableRouter.java\n--rw----     2.0 fat     1445 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/condition/config/ServiceRouter.java\n--rw----     2.0 fat     1345 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/condition/config/ServiceRouterFactory.java\n+-rw----     2.0 fat     1455 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/condition/config/AppRouter.java\n+-rw----     2.0 fat     1672 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/condition/config/AppRouterFactory.java\n+-rw----     2.0 fat     5274 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/condition/config/ListenableRouter.java\n+-rw----     2.0 fat     1481 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/condition/config/ServiceRouter.java\n+-rw----     2.0 fat     1382 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/condition/config/ServiceRouterFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/condition/config/model/\n -rw----     2.0 fat     1330 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRouterRule.java\n--rw----     2.0 fat     1748 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRuleParser.java\n+-rw----     2.0 fat     1803 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRuleParser.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/file/\n--rw----     2.0 fat     3124 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/file/FileRouterFactory.java\n+-rw----     2.0 fat     3200 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/file/FileRouterFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/mock/\n--rw----     2.0 fat     3923 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelector.java\n+-rw----     2.0 fat     4026 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelector.java\n -rw----     2.0 fat     1303 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/mock/MockRouterFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/script/\n -rw----     2.0 fat     6962 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/script/ScriptRouter.java\n -rw----     2.0 fat     1691 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/script/ScriptRouterFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/tag/\n--rw----     2.0 fat    11640 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java\n--rw----     2.0 fat     1309 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/tag/TagRouterFactory.java\n+-rw----     2.0 fat    11904 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java\n+-rw----     2.0 fat     1345 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/tag/TagRouterFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/tag/model/\n -rw----     2.0 fat     1320 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/tag/model/Tag.java\n--rw----     2.0 fat     2783 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/tag/model/TagRouterRule.java\n--rw----     2.0 fat     1553 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/tag/model/TagRuleParser.java\n+-rw----     2.0 fat     2873 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/tag/model/TagRouterRule.java\n+-rw----     2.0 fat     1597 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/router/tag/model/TagRuleParser.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/\n--rw----     2.0 fat    12855 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java\n+-rw----     2.0 fat    13174 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java\n -rw----     2.0 fat     1350 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/AvailableCluster.java\n -rw----     2.0 fat     1756 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/AvailableClusterInvoker.java\n -rw----     2.0 fat     1304 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/BroadcastCluster.java\n -rw----     2.0 fat     5152 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/BroadcastClusterInvoker.java\n -rw----     2.0 fat     6268 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/ClusterUtils.java\n -rw----     2.0 fat     1369 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/FailbackCluster.java\n -rw----     2.0 fat     6871 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/FailbackClusterInvoker.java\n -rw----     2.0 fat     1369 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/FailfastCluster.java\n -rw----     2.0 fat     2897 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/FailfastClusterInvoker.java\n -rw----     2.0 fat     1369 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/FailoverCluster.java\n -rw----     2.0 fat     5517 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/FailoverClusterInvoker.java\n -rw----     2.0 fat     1369 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/FailsafeCluster.java\n -rw----     2.0 fat     2370 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/FailsafeClusterInvoker.java\n -rw----     2.0 fat     1365 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/ForkingCluster.java\n--rw----     2.0 fat     5323 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/ForkingClusterInvoker.java\n--rw----     2.0 fat     1292 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/MergeableCluster.java\n--rw----     2.0 fat     7649 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/MergeableClusterInvoker.java\n--rw----     2.0 fat     1168 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/ProviderURLMergeProcessor.java\n+-rw----     2.0 fat     5436 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/ForkingClusterInvoker.java\n+-rw----     2.0 fat     1324 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/MergeableCluster.java\n+-rw----     2.0 fat     7842 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/MergeableClusterInvoker.java\n+-rw----     2.0 fat     1197 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/ProviderURLMergeProcessor.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/migration/\n--rw----     2.0 fat     1123 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/migration/MigrationClusterComparator.java\n--rw----     2.0 fat     1776 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/migration/MigrationClusterInvoker.java\n--rw----     2.0 fat     3280 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/migration/MigrationRule.java\n--rw----     2.0 fat      954 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/migration/MigrationStep.java\n+-rw----     2.0 fat     1150 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/migration/MigrationClusterComparator.java\n+-rw----     2.0 fat     1830 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/migration/MigrationClusterInvoker.java\n+-rw----     2.0 fat     3370 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/migration/MigrationRule.java\n+-rw----     2.0 fat      976 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/migration/MigrationStep.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/registry/\n--rw----     2.0 fat     1419 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/registry/ZoneAwareCluster.java\n--rw----     2.0 fat    11256 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/registry/ZoneAwareClusterInvoker.java\n+-rw----     2.0 fat     1454 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/registry/ZoneAwareCluster.java\n+-rw----     2.0 fat    11508 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/registry/ZoneAwareClusterInvoker.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/wrapper/\n--rw----     2.0 fat     5320 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/wrapper/AbstractCluster.java\n+-rw----     2.0 fat     5452 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/wrapper/AbstractCluster.java\n -rw----     2.0 fat     7493 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvoker.java\n -rw----     2.0 fat     1466 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterWrapper.java\n -rw----     2.0 fat       83 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository\n--rw----     2.0 fat      162 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.interceptor.ClusterInterceptor\n+-rw----     2.0 fat      163 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.interceptor.ClusterInterceptor\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-cluster/\n+-rw----     2.0 fat     2548 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-cluster/pom.xml\n+-rw----     2.0 fat       68 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-cluster/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/extension/\n -rw----     2.0 fat     1487 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/extension/Activate.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/annotation/\n--rw----     2.0 fat     2623 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/annotation/Reference.java\n--rw----     2.0 fat     2711 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/annotation/Service.java\n+-rw----     2.0 fat     2736 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/annotation/Reference.java\n+-rw----     2.0 fat     2831 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/annotation/Service.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/\n--rw----     2.0 fat     4343 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/BaseServiceMetadata.java\n--rw----     2.0 fat     1362 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/Experimental.java\n+-rw----     2.0 fat     4480 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/BaseServiceMetadata.java\n+-rw----     2.0 fat     1399 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/Experimental.java\n -rw----     2.0 fat     2475 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/Extension.java\n -rw----     2.0 fat     1183 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/Node.java\n -rw----     2.0 fat     8858 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/Parameters.java\n -rw----     2.0 fat     1000 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/Resetable.java\n -rw----     2.0 fat    70537 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/URL.java\n -rw----     2.0 fat    13668 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/URLBuilder.java\n--rw----     2.0 fat    13473 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/URLStrParser.java\n--rw----     2.0 fat     9765 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/Version.java\n+-rw----     2.0 fat    13840 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/URLStrParser.java\n+-rw----     2.0 fat    10043 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/Version.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/beanutil/\n -rw----     2.0 fat     1364 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/beanutil/JavaBeanAccessor.java\n--rw----     2.0 fat     6309 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/beanutil/JavaBeanDescriptor.java\n--rw----     2.0 fat    20174 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/beanutil/JavaBeanSerializeUtil.java\n+-rw----     2.0 fat     6516 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/beanutil/JavaBeanDescriptor.java\n+-rw----     2.0 fat    20660 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/beanutil/JavaBeanSerializeUtil.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/bytecode/\n--rw----     2.0 fat    13023 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/bytecode/ClassGenerator.java\n--rw----     2.0 fat     3506 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/bytecode/CustomizedLoaderClassPath.java\n+-rw----     2.0 fat    13410 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/bytecode/ClassGenerator.java\n+-rw----     2.0 fat     3611 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/bytecode/CustomizedLoaderClassPath.java\n -rw----     2.0 fat     8215 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/bytecode/Mixin.java\n -rw----     2.0 fat     1182 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/bytecode/NoSuchMethodException.java\n -rw----     2.0 fat     1190 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/bytecode/NoSuchPropertyException.java\n -rw----     2.0 fat    12109 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/bytecode/Proxy.java\n -rw----     2.0 fat    17928 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/bytecode/Wrapper.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/compiler/\n -rw----     2.0 fat     1255 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/compiler/Compiler.java\n@@ -517,137 +296,137 @@\n -rw----     2.0 fat     2843 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/compiler/support/AbstractCompiler.java\n -rw----     2.0 fat     1843 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/compiler/support/AdaptiveCompiler.java\n -rw----     2.0 fat    15556 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/compiler/support/ClassUtils.java\n -rw----     2.0 fat     5050 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/compiler/support/CtClassBuilder.java\n -rw----     2.0 fat     3504 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/compiler/support/JavassistCompiler.java\n -rw----     2.0 fat    11461 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/compiler/support/JdkCompiler.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/\n--rw----     2.0 fat     4350 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/CompositeConfiguration.java\n--rw----     2.0 fat     6853 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/Configuration.java\n--rw----     2.0 fat     4779 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/ConfigurationUtils.java\n--rw----     2.0 fat    10005 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/Environment.java\n--rw----     2.0 fat     1267 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/EnvironmentConfiguration.java\n--rw----     2.0 fat     1904 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/InmemoryConfiguration.java\n--rw----     2.0 fat     1201 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/OrderedPropertiesProvider.java\n--rw----     2.0 fat     2636 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/PropertiesConfiguration.java\n--rw----     2.0 fat     1197 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/SystemConfiguration.java\n+-rw----     2.0 fat     4477 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/CompositeConfiguration.java\n+-rw----     2.0 fat     7032 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/Configuration.java\n+-rw----     2.0 fat     4912 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/ConfigurationUtils.java\n+-rw----     2.0 fat    10238 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/Environment.java\n+-rw----     2.0 fat     1302 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/EnvironmentConfiguration.java\n+-rw----     2.0 fat     1968 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/InmemoryConfiguration.java\n+-rw----     2.0 fat     1245 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/OrderedPropertiesProvider.java\n+-rw----     2.0 fat     2700 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/PropertiesConfiguration.java\n+-rw----     2.0 fat     1230 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/SystemConfiguration.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/\n--rw----     2.0 fat     9806 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/AbstractDynamicConfiguration.java\n--rw----     2.0 fat     1739 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/AbstractDynamicConfigurationFactory.java\n--rw----     2.0 fat     1096 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/ConfigChangeType.java\n--rw----     2.0 fat     2827 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/ConfigChangedEvent.java\n--rw----     2.0 fat     1297 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/ConfigurationListener.java\n--rw----     2.0 fat     1095 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/Constants.java\n--rw----     2.0 fat     9201 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/DynamicConfiguration.java\n--rw----     2.0 fat     1987 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/DynamicConfigurationFactory.java\n--rw----     2.0 fat     7035 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/TreePathDynamicConfiguration.java\n+-rw----     2.0 fat    10112 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/AbstractDynamicConfiguration.java\n+-rw----     2.0 fat     1782 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/AbstractDynamicConfigurationFactory.java\n+-rw----     2.0 fat     1133 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/ConfigChangeType.java\n+-rw----     2.0 fat     2921 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/ConfigChangedEvent.java\n+-rw----     2.0 fat     1330 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/ConfigurationListener.java\n+-rw----     2.0 fat     1120 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/Constants.java\n+-rw----     2.0 fat     9446 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/DynamicConfiguration.java\n+-rw----     2.0 fat     2033 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/DynamicConfigurationFactory.java\n+-rw----     2.0 fat     7221 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/TreePathDynamicConfiguration.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/file/\n--rw----     2.0 fat    22570 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java\n--rw----     2.0 fat     1487 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationFactory.java\n+-rw----     2.0 fat    23176 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java\n+-rw----     2.0 fat     1522 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/nop/\n--rw----     2.0 fat     2215 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfiguration.java\n--rw----     2.0 fat     1316 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfigurationFactory.java\n+-rw----     2.0 fat     2287 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfiguration.java\n+-rw----     2.0 fat     1349 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfigurationFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/wrapper/\n--rw----     2.0 fat     3914 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/wrapper/CompositeDynamicConfiguration.java\n+-rw----     2.0 fat     4015 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/config/configcenter/wrapper/CompositeDynamicConfiguration.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/constants/\n--rw----     2.0 fat    10256 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/constants/CommonConstants.java\n--rw----     2.0 fat      959 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/constants/FilterConstants.java\n--rw----     2.0 fat     1071 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/constants/QosConstants.java\n--rw----     2.0 fat     3469 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/constants/RegistryConstants.java\n--rw----     2.0 fat      950 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/constants/RemotingConstants.java\n+-rw----     2.0 fat    10649 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/constants/CommonConstants.java\n+-rw----     2.0 fat      983 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/constants/FilterConstants.java\n+-rw----     2.0 fat     1103 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/constants/QosConstants.java\n+-rw----     2.0 fat     3591 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/constants/RegistryConstants.java\n+-rw----     2.0 fat      976 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/constants/RemotingConstants.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/context/\n--rw----     2.0 fat      949 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/context/FrameworkExt.java\n--rw----     2.0 fat     1469 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/context/Lifecycle.java\n--rw----     2.0 fat     1146 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/context/LifecycleAdapter.java\n+-rw----     2.0 fat      973 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/context/FrameworkExt.java\n+-rw----     2.0 fat     1517 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/context/Lifecycle.java\n+-rw----     2.0 fat     1181 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/context/LifecycleAdapter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/\n--rw----     2.0 fat     3680 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/Converter.java\n--rw----     2.0 fat     1041 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringConverter.java\n--rw----     2.0 fat     1330 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToBooleanConverter.java\n--rw----     2.0 fat     1300 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToCharArrayConverter.java\n--rw----     2.0 fat     1498 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToCharacterConverter.java\n--rw----     2.0 fat     1326 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToDoubleConverter.java\n--rw----     2.0 fat     1320 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToFloatConverter.java\n--rw----     2.0 fat     1326 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToIntegerConverter.java\n--rw----     2.0 fat     1316 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToLongConverter.java\n--rw----     2.0 fat     1267 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToOptionalConverter.java\n--rw----     2.0 fat     1321 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToShortConverter.java\n--rw----     2.0 fat     1106 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToStringConverter.java\n+-rw----     2.0 fat     3788 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/Converter.java\n+-rw----     2.0 fat     1068 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringConverter.java\n+-rw----     2.0 fat     1368 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToBooleanConverter.java\n+-rw----     2.0 fat     1339 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToCharArrayConverter.java\n+-rw----     2.0 fat     1542 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToCharacterConverter.java\n+-rw----     2.0 fat     1365 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToDoubleConverter.java\n+-rw----     2.0 fat     1358 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToFloatConverter.java\n+-rw----     2.0 fat     1364 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToIntegerConverter.java\n+-rw----     2.0 fat     1355 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToLongConverter.java\n+-rw----     2.0 fat     1307 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToOptionalConverter.java\n+-rw----     2.0 fat     1360 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToShortConverter.java\n+-rw----     2.0 fat     1136 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/StringToStringConverter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/\n--rw----     2.0 fat     3377 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/MultiValueConverter.java\n--rw----     2.0 fat     1908 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToArrayConverter.java\n--rw----     2.0 fat     1295 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToBlockingDequeConverter.java\n--rw----     2.0 fat     1336 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToBlockingQueueConverter.java\n--rw----     2.0 fat     1238 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToCollectionConverter.java\n--rw----     2.0 fat     1215 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToDequeConverter.java\n--rw----     2.0 fat     3106 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToIterableConverter.java\n--rw----     2.0 fat     1208 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToListConverter.java\n--rw----     2.0 fat     2163 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToMultiValueConverter.java\n--rw----     2.0 fat     1265 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToNavigableSetConverter.java\n--rw----     2.0 fat     1239 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToQueueConverter.java\n--rw----     2.0 fat     1199 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToSetConverter.java\n--rw----     2.0 fat     1225 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToSortedSetConverter.java\n--rw----     2.0 fat     1291 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToTransferQueueConverter.java\n+-rw----     2.0 fat     3469 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/MultiValueConverter.java\n+-rw----     2.0 fat     1968 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToArrayConverter.java\n+-rw----     2.0 fat     1328 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToBlockingDequeConverter.java\n+-rw----     2.0 fat     1370 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToBlockingQueueConverter.java\n+-rw----     2.0 fat     1271 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToCollectionConverter.java\n+-rw----     2.0 fat     1248 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToDequeConverter.java\n+-rw----     2.0 fat     3186 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToIterableConverter.java\n+-rw----     2.0 fat     1241 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToListConverter.java\n+-rw----     2.0 fat     2224 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToMultiValueConverter.java\n+-rw----     2.0 fat     1299 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToNavigableSetConverter.java\n+-rw----     2.0 fat     1273 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToQueueConverter.java\n+-rw----     2.0 fat     1232 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToSetConverter.java\n+-rw----     2.0 fat     1258 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToSortedSetConverter.java\n+-rw----     2.0 fat     1324 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/convert/multiple/StringToTransferQueueConverter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/\n -rw----     2.0 fat     3450 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/Activate.java\n--rw----     2.0 fat     2631 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/Adaptive.java\n--rw----     2.0 fat    15367 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/AdaptiveClassCodeGenerator.java\n+-rw----     2.0 fat     2690 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/Adaptive.java\n+-rw----     2.0 fat    15763 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/AdaptiveClassCodeGenerator.java\n -rw----     2.0 fat     1209 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/DisableInject.java\n--rw----     2.0 fat     1165 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/DubboInternalLoadingStrategy.java\n--rw----     2.0 fat     1220 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/DubboLoadingStrategy.java\n+-rw----     2.0 fat     1200 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/DubboInternalLoadingStrategy.java\n+-rw----     2.0 fat     1262 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/DubboLoadingStrategy.java\n -rw----     2.0 fat     1146 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/ExtensionFactory.java\n--rw----     2.0 fat    40175 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/ExtensionLoader.java\n--rw----     2.0 fat     1422 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/LoadingStrategy.java\n+-rw----     2.0 fat    41222 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/ExtensionLoader.java\n+-rw----     2.0 fat     1464 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/LoadingStrategy.java\n -rw----     2.0 fat     2354 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/SPI.java\n--rw----     2.0 fat     1225 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/ServicesLoadingStrategy.java\n--rw----     2.0 fat     1296 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/Wrapper.java\n+-rw----     2.0 fat     1266 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/ServicesLoadingStrategy.java\n+-rw----     2.0 fat     1333 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/Wrapper.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/factory/\n -rw----     2.0 fat     2048 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/factory/AdaptiveExtensionFactory.java\n -rw----     2.0 fat     1551 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/factory/SpiExtensionFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/support/\n -rw----     2.0 fat     4564 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/support/ActivateComparator.java\n--rw----     2.0 fat     3066 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/support/WrapperComparator.java\n+-rw----     2.0 fat     3160 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/extension/support/WrapperComparator.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/function/\n--rw----     2.0 fat     2341 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/function/Predicates.java\n--rw----     2.0 fat     2683 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/function/Streams.java\n--rw----     2.0 fat     1592 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/function/ThrowableAction.java\n--rw----     2.0 fat     2032 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/function/ThrowableConsumer.java\n--rw----     2.0 fat     2181 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/function/ThrowableFunction.java\n+-rw----     2.0 fat     2415 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/function/Predicates.java\n+-rw----     2.0 fat     2754 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/function/Streams.java\n+-rw----     2.0 fat     1643 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/function/ThrowableAction.java\n+-rw----     2.0 fat     2098 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/function/ThrowableConsumer.java\n+-rw----     2.0 fat     2252 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/function/ThrowableFunction.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/infra/\n--rw----     2.0 fat     1561 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/infra/InfraAdapter.java\n+-rw----     2.0 fat     1607 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/infra/InfraAdapter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/infra/support/\n--rw----     2.0 fat     1284 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/infra/support/CmdbAdapter.java\n--rw----     2.0 fat     2901 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/infra/support/EnvironmentAdapter.java\n+-rw----     2.0 fat     1323 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/infra/support/CmdbAdapter.java\n+-rw----     2.0 fat     2973 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/infra/support/EnvironmentAdapter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/io/\n--rw----     2.0 fat    25880 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/io/Bytes.java\n--rw----     2.0 fat     6914 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/io/StreamUtils.java\n--rw----     2.0 fat     3051 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/io/UnsafeByteArrayInputStream.java\n--rw----     2.0 fat     2958 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/io/UnsafeByteArrayOutputStream.java\n+-rw----     2.0 fat    26815 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/io/Bytes.java\n+-rw----     2.0 fat     7145 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/io/StreamUtils.java\n+-rw----     2.0 fat     3169 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/io/UnsafeByteArrayInputStream.java\n+-rw----     2.0 fat     3059 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/io/UnsafeByteArrayOutputStream.java\n -rw----     2.0 fat     3173 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/io/UnsafeStringReader.java\n--rw----     2.0 fat     2773 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/io/UnsafeStringWriter.java\n+-rw----     2.0 fat     2879 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/io/UnsafeStringWriter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/json/\n--rw----     2.0 fat    17621 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/json/GenericJSONConverter.java\n+-rw----     2.0 fat    18149 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/json/GenericJSONConverter.java\n -rw----     2.0 fat    13189 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/json/J2oVisitor.java\n -rw----     2.0 fat    27300 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/json/JSON.java\n -rw----     2.0 fat     4912 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/json/JSONArray.java\n -rw----     2.0 fat     1461 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/json/JSONConverter.java\n -rw----     2.0 fat     1198 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/json/JSONNode.java\n -rw----     2.0 fat     5627 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/json/JSONObject.java\n -rw----     2.0 fat     2214 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/json/JSONReader.java\n -rw----     2.0 fat     2247 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/json/JSONToken.java\n -rw----     2.0 fat     2796 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/json/JSONVisitor.java\n -rw----     2.0 fat     8159 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/json/JSONWriter.java\n -rw----     2.0 fat     1161 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/json/ParseException.java\n--rw----     2.0 fat    29369 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/json/Yylex.java\n+-rw----     2.0 fat    30215 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/json/Yylex.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/lang/\n--rw----     2.0 fat     2306 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/lang/Prioritized.java\n--rw----     2.0 fat     1160 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/lang/ShutdownHookCallback.java\n--rw----     2.0 fat     2336 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/lang/ShutdownHookCallbacks.java\n+-rw----     2.0 fat     2382 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/lang/Prioritized.java\n+-rw----     2.0 fat     1195 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/lang/ShutdownHookCallback.java\n+-rw----     2.0 fat     2407 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/lang/ShutdownHookCallbacks.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/logger/\n -rw----     2.0 fat     1214 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/logger/Level.java\n--rw----     2.0 fat     3800 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/logger/Logger.java\n+-rw----     2.0 fat     3970 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/logger/Logger.java\n -rw----     2.0 fat     1861 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/logger/LoggerAdapter.java\n -rw----     2.0 fat     5253 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/logger/LoggerFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/logger/jcl/\n -rw----     2.0 fat     3342 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/logger/jcl/JclLogger.java\n -rw----     2.0 fat     1784 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/logger/jcl/JclLoggerAdapter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/logger/jdk/\n -rw----     2.0 fat     3355 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/logger/jdk/JdkLogger.java\n@@ -669,370 +448,400 @@\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/status/support/\n -rw----     2.0 fat     2215 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/status/support/LoadStatusChecker.java\n -rw----     2.0 fat     1793 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/status/support/MemoryStatusChecker.java\n -rw----     2.0 fat     2004 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/status/support/StatusUtils.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/store/\n -rw----     2.0 fat     1280 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/store/DataStore.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/store/support/\n--rw----     2.0 fat     2247 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/store/support/SimpleDataStore.java\n+-rw----     2.0 fat     2312 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/store/support/SimpleDataStore.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadlocal/\n--rw----     2.0 fat     1849 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadlocal/InternalRunnable.java\n+-rw----     2.0 fat     1902 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadlocal/InternalRunnable.java\n -rw----     2.0 fat     2445 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadlocal/InternalThread.java\n--rw----     2.0 fat     6904 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadlocal/InternalThreadLocal.java\n--rw----     2.0 fat     5464 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadlocal/InternalThreadLocalMap.java\n--rw----     2.0 fat     1630 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadlocal/NamedInternalThreadFactory.java\n+-rw----     2.0 fat     7102 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadlocal/InternalThreadLocal.java\n+-rw----     2.0 fat     5631 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadlocal/InternalThreadLocalMap.java\n+-rw----     2.0 fat     1677 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadlocal/NamedInternalThreadFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/\n--rw----     2.0 fat     1355 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/ThreadPool.java\n--rw----     2.0 fat     6805 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/ThreadlessExecutor.java\n+-rw----     2.0 fat     1397 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/ThreadPool.java\n+-rw----     2.0 fat     7007 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/ThreadlessExecutor.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/concurrent/\n--rw----     2.0 fat     2316 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/concurrent/ScheduledCompletableFuture.java\n+-rw----     2.0 fat     2381 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/concurrent/ScheduledCompletableFuture.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/event/\n--rw----     2.0 fat     1243 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/event/ThreadPoolExhaustedEvent.java\n+-rw----     2.0 fat     1281 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/event/ThreadPoolExhaustedEvent.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/manager/\n--rw----     2.0 fat     7728 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/manager/DefaultExecutorRepository.java\n--rw----     2.0 fat     2329 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/manager/ExecutorRepository.java\n--rw----     2.0 fat     2042 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/manager/Ring.java\n+-rw----     2.0 fat     7903 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/manager/DefaultExecutorRepository.java\n+-rw----     2.0 fat     2400 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/manager/ExecutorRepository.java\n+-rw----     2.0 fat     2108 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/manager/Ring.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/support/\n -rw----     2.0 fat     5991 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/support/AbortPolicyWithReport.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/support/cached/\n -rw----     2.0 fat     3197 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/support/cached/CachedThreadPool.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/support/eager/\n--rw----     2.0 fat     3009 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/support/eager/EagerThreadPool.java\n+-rw----     2.0 fat     3074 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/support/eager/EagerThreadPool.java\n -rw----     2.0 fat     3262 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/support/eager/EagerThreadPoolExecutor.java\n -rw----     2.0 fat     2951 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/support/eager/TaskQueue.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/support/fixed/\n -rw----     2.0 fat     2723 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/support/fixed/FixedThreadPool.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/support/limited/\n--rw----     2.0 fat     2933 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/support/limited/LimitedThreadPool.java\n+-rw----     2.0 fat     2992 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/threadpool/support/limited/LimitedThreadPool.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/timer/\n--rw----     2.0 fat    31161 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/timer/HashedWheelTimer.java\n+-rw----     2.0 fat    31975 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/timer/HashedWheelTimer.java\n -rw----     2.0 fat     1692 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/timer/Timeout.java\n -rw----     2.0 fat     1897 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/timer/Timer.java\n -rw----     2.0 fat     1175 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/timer/TimerTask.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/\n--rw----     2.0 fat    21253 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/AnnotationUtils.java\n--rw----     2.0 fat     2358 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/ArrayUtils.java\n+-rw----     2.0 fat    21735 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/AnnotationUtils.java\n+-rw----     2.0 fat     2437 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/ArrayUtils.java\n -rw----     2.0 fat     1438 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/Assert.java\n -rw----     2.0 fat     4681 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/AtomicPositiveInteger.java\n -rw----     2.0 fat     4986 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/CIDRUtils.java\n--rw----     2.0 fat     1296 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/CharSequenceComparator.java\n--rw----     2.0 fat     5560 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/ClassHelper.java\n--rw----     2.0 fat    17955 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/ClassUtils.java\n+-rw----     2.0 fat     1333 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/CharSequenceComparator.java\n+-rw----     2.0 fat     5713 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/ClassHelper.java\n+-rw----     2.0 fat    18451 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/ClassUtils.java\n -rw----     2.0 fat    11618 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/CollectionUtils.java\n--rw----     2.0 fat     9054 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/CompatibleTypeUtils.java\n+-rw----     2.0 fat     9283 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/CompatibleTypeUtils.java\n -rw----     2.0 fat     4553 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/ConcurrentHashSet.java\n -rw----     2.0 fat    12213 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/ConfigUtils.java\n--rw----     2.0 fat     2212 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/DefaultPage.java\n+-rw----     2.0 fat     2294 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/DefaultPage.java\n -rw----     2.0 fat     2063 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/DubboAppender.java\n--rw----     2.0 fat     5181 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/ExecutorUtil.java\n--rw----     2.0 fat     4929 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/FieldUtils.java\n+-rw----     2.0 fat     5321 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/ExecutorUtil.java\n+-rw----     2.0 fat     5071 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/FieldUtils.java\n -rw----     2.0 fat     1091 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/Holder.java\n -rw----     2.0 fat     8471 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/IOUtils.java\n -rw----     2.0 fat     4172 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/JVMUtil.java\n--rw----     2.0 fat     8550 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/LFUCache.java\n+-rw----     2.0 fat     8835 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/LFUCache.java\n -rw----     2.0 fat     3010 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/LRUCache.java\n -rw----     2.0 fat     3498 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/Log.java\n -rw----     2.0 fat     4289 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/LogHelper.java\n -rw----     2.0 fat     4258 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/LogUtil.java\n--rw----     2.0 fat     2400 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/MemberUtils.java\n--rw----     2.0 fat     2361 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/MethodComparator.java\n--rw----     2.0 fat    14795 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/MethodUtils.java\n+-rw----     2.0 fat     2461 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/MemberUtils.java\n+-rw----     2.0 fat     2432 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/MethodComparator.java\n+-rw----     2.0 fat    15184 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/MethodUtils.java\n -rw----     2.0 fat     2139 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/NamedThreadFactory.java\n -rw----     2.0 fat    24007 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/NetUtils.java\n--rw----     2.0 fat     2067 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/Page.java\n--rw----     2.0 fat     2394 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/PathUtils.java\n+-rw----     2.0 fat     2154 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/Page.java\n+-rw----     2.0 fat     2468 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/PathUtils.java\n -rw----     2.0 fat    33568 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/PojoUtils.java\n--rw----     2.0 fat    47389 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/ReflectUtils.java\n--rw----     2.0 fat     5895 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/SerializeClassChecker.java\n--rw----     2.0 fat     4554 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/ServiceAnnotationResolver.java\n--rw----     2.0 fat     3261 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/Stack.java\n--rw----     2.0 fat     2588 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/StringConstantFieldValuePredicate.java\n+-rw----     2.0 fat    48784 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/ReflectUtils.java\n+-rw----     2.0 fat     6045 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/SerializeClassChecker.java\n+-rw----     2.0 fat     4686 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/ServiceAnnotationResolver.java\n+-rw----     2.0 fat     3403 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/Stack.java\n+-rw----     2.0 fat     2655 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/StringConstantFieldValuePredicate.java\n -rw----     2.0 fat    37744 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/StringUtils.java\n--rw----     2.0 fat     8696 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/TypeUtils.java\n+-rw----     2.0 fat     8920 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/TypeUtils.java\n -rw----     2.0 fat    25423 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/UrlUtils.java\n--rw----     2.0 fat     9926 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/Utf8Utils.java\n--rw----     2.0 fat    25642 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/AbstractConfig.java\n--rw----     2.0 fat    24311 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/AbstractInterfaceConfig.java\n--rw----     2.0 fat     4661 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/AbstractMethodConfig.java\n--rw----     2.0 fat     5621 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/AbstractReferenceConfig.java\n--rw----     2.0 fat     6722 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/AbstractServiceConfig.java\n--rw----     2.0 fat    13583 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ApplicationConfig.java\n--rw----     2.0 fat     2126 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ArgumentConfig.java\n--rw----     2.0 fat     8859 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ConfigCenterConfig.java\n--rw----     2.0 fat     2849 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/Constants.java\n--rw----     2.0 fat     3568 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ConsumerConfig.java\n--rw----     2.0 fat     6022 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/MetadataReportConfig.java\n--rw----     2.0 fat     8564 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/MethodConfig.java\n--rw----     2.0 fat     1626 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/MetricsConfig.java\n--rw----     2.0 fat     3573 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ModuleConfig.java\n--rw----     2.0 fat     3712 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/MonitorConfig.java\n--rw----     2.0 fat    13245 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ProtocolConfig.java\n--rw----     2.0 fat    10388 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ProviderConfig.java\n--rw----     2.0 fat     8359 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ReferenceConfigBase.java\n--rw----     2.0 fat    13074 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/RegistryConfig.java\n--rw----     2.0 fat    13449 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ServiceConfigBase.java\n--rw----     2.0 fat     7142 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/SslConfig.java\n+-rw----     2.0 fat    10155 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/utils/Utf8Utils.java\n+-rw----     2.0 fat    26256 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/AbstractConfig.java\n+-rw----     2.0 fat    25069 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/AbstractInterfaceConfig.java\n+-rw----     2.0 fat     4869 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/AbstractMethodConfig.java\n+-rw----     2.0 fat     5847 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/AbstractReferenceConfig.java\n+-rw----     2.0 fat     7013 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/AbstractServiceConfig.java\n+-rw----     2.0 fat    14087 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ApplicationConfig.java\n+-rw----     2.0 fat     2209 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ArgumentConfig.java\n+-rw----     2.0 fat     9148 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ConfigCenterConfig.java\n+-rw----     2.0 fat     2969 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/Constants.java\n+-rw----     2.0 fat     3703 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ConsumerConfig.java\n+-rw----     2.0 fat     6249 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/MetadataReportConfig.java\n+-rw----     2.0 fat     8896 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/MethodConfig.java\n+-rw----     2.0 fat     1679 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/MetricsConfig.java\n+-rw----     2.0 fat     3726 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ModuleConfig.java\n+-rw----     2.0 fat     3872 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/MonitorConfig.java\n+-rw----     2.0 fat    13843 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ProtocolConfig.java\n+-rw----     2.0 fat    10860 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ProviderConfig.java\n+-rw----     2.0 fat     8623 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ReferenceConfigBase.java\n+-rw----     2.0 fat    13607 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/RegistryConfig.java\n+-rw----     2.0 fat    13864 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/ServiceConfigBase.java\n+-rw----     2.0 fat     7330 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/SslConfig.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/annotation/\n--rw----     2.0 fat     1444 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/annotation/Argument.java\n--rw----     2.0 fat     7538 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/annotation/DubboReference.java\n--rw----     2.0 fat     6794 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/annotation/DubboService.java\n--rw----     2.0 fat     1873 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/annotation/Method.java\n--rw----     2.0 fat     7067 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/annotation/Reference.java\n--rw----     2.0 fat     6844 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/annotation/Service.java\n+-rw----     2.0 fat     1488 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/annotation/Argument.java\n+-rw----     2.0 fat     7836 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/annotation/DubboReference.java\n+-rw----     2.0 fat     7072 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/annotation/DubboService.java\n+-rw----     2.0 fat     1944 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/annotation/Method.java\n+-rw----     2.0 fat     7349 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/annotation/Reference.java\n+-rw----     2.0 fat     7125 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/annotation/Service.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/context/\n--rw----     2.0 fat     1937 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/context/ConfigConfigurationAdapter.java\n--rw----     2.0 fat    18420 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/context/ConfigManager.java\n+-rw----     2.0 fat     1985 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/context/ConfigConfigurationAdapter.java\n+-rw----     2.0 fat    18951 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/context/ConfigManager.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/support/\n--rw----     2.0 fat     2038 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/support/Parameter.java\n+-rw----     2.0 fat     2099 bl defN 20-Apr-01 08:04 org/apache/dubbo/config/support/Parameter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/\n--rw----     2.0 fat     5846 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/AbstractEventDispatcher.java\n--rw----     2.0 fat     1371 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/ConditionalEventListener.java\n--rw----     2.0 fat     1124 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/DirectEventDispatcher.java\n--rw----     2.0 fat     1566 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/Event.java\n--rw----     2.0 fat     2268 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/EventDispatcher.java\n--rw----     2.0 fat     4714 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/EventListener.java\n--rw----     2.0 fat     1123 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/GenericEvent.java\n--rw----     2.0 fat     4621 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/GenericEventListener.java\n--rw----     2.0 fat     5306 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/Listenable.java\n--rw----     2.0 fat     1213 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/ParallelEventDispatcher.java\n+-rw----     2.0 fat     6014 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/AbstractEventDispatcher.java\n+-rw----     2.0 fat     1406 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/ConditionalEventListener.java\n+-rw----     2.0 fat     1154 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/DirectEventDispatcher.java\n+-rw----     2.0 fat     1615 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/Event.java\n+-rw----     2.0 fat     2334 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/EventDispatcher.java\n+-rw----     2.0 fat     4832 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/EventListener.java\n+-rw----     2.0 fat     1157 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/GenericEvent.java\n+-rw----     2.0 fat     4751 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/GenericEventListener.java\n+-rw----     2.0 fat     5437 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/Listenable.java\n+-rw----     2.0 fat     1245 bl defN 20-Apr-01 08:04 org/apache/dubbo/event/ParallelEventDispatcher.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/\n--rw----     2.0 fat      996 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/ApplicationInitListener.java\n--rw----     2.0 fat     4776 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/ApplicationModel.java\n--rw----     2.0 fat     2617 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/AsyncMethodInfo.java\n--rw----     2.0 fat      964 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/BuiltinServiceDetector.java\n--rw----     2.0 fat     3054 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/ConsumerMethodModel.java\n--rw----     2.0 fat     7069 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/ConsumerModel.java\n--rw----     2.0 fat     2992 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/MethodDescriptor.java\n--rw----     2.0 fat     2673 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/ProviderMethodModel.java\n--rw----     2.0 fat     6669 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/ProviderModel.java\n--rw----     2.0 fat     4362 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/ServiceDescriptor.java\n--rw----     2.0 fat     3100 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/ServiceMetadata.java\n--rw----     2.0 fat     7293 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/ServiceRepository.java\n+-rw----     2.0 fat     1022 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/ApplicationInitListener.java\n+-rw----     2.0 fat     4904 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/ApplicationModel.java\n+-rw----     2.0 fat     2704 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/AsyncMethodInfo.java\n+-rw----     2.0 fat      990 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/BuiltinServiceDetector.java\n+-rw----     2.0 fat     3155 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/ConsumerMethodModel.java\n+-rw----     2.0 fat     7288 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/ConsumerModel.java\n+-rw----     2.0 fat     3085 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/MethodDescriptor.java\n+-rw----     2.0 fat     2753 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/ProviderMethodModel.java\n+-rw----     2.0 fat     6874 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/ProviderModel.java\n+-rw----     2.0 fat     4481 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/ServiceDescriptor.java\n+-rw----     2.0 fat     3202 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/ServiceMetadata.java\n+-rw----     2.0 fat     7478 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/model/ServiceRepository.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/service/\n--rw----     2.0 fat      897 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/service/Destroyable.java\n--rw----     2.0 fat     1041 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/service/EchoService.java\n--rw----     2.0 fat     1062 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/service/EchoServiceDetector.java\n--rw----     2.0 fat     1993 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/service/GenericException.java\n--rw----     2.0 fat     1886 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/service/GenericService.java\n--rw----     2.0 fat     1068 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/service/GenericServiceDetector.java\n+-rw----     2.0 fat      920 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/service/Destroyable.java\n+-rw----     2.0 fat     1073 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/service/EchoService.java\n+-rw----     2.0 fat     1090 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/service/EchoServiceDetector.java\n+-rw----     2.0 fat     2057 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/service/GenericException.java\n+-rw----     2.0 fat     1933 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/service/GenericService.java\n+-rw----     2.0 fat     1096 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/service/GenericServiceDetector.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/support/\n--rw----     2.0 fat     2889 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/support/GroupServiceKeyCache.java\n--rw----     2.0 fat     4189 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/support/ProtocolUtils.java\n--rw----     2.0 fat      163 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.context.FrameworkExt\n+-rw----     2.0 fat     2960 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/support/GroupServiceKeyCache.java\n+-rw----     2.0 fat     4280 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/support/ProtocolUtils.java\n+-rw----     2.0 fat      165 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.context.FrameworkExt\n -rwx---     2.0 fat       76 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.threadpool.manager.ExecutorRepository\n--rw----     2.0 fat      113 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.model.BuiltinServiceDetector\n+-rw----     2.0 fat      114 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.model.BuiltinServiceDetector\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/services/\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 security/\n+-rw----     2.0 fat     4686 bl defN 20-Apr-01 08:04 security/serialize.blockedlist\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-common/\n+-rw----     2.0 fat     2896 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-common/pom.xml\n+-rw----     2.0 fat       67 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-common/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/\n -rw----     2.0 fat     1770 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/Cache.java\n -rw----     2.0 fat     1730 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/CacheFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/filter/\n -rw----     2.0 fat     5835 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/filter/CacheFilter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/\n -rw----     2.0 fat     3128 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/AbstractCacheFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/expiring/\n--rw----     2.0 fat     3154 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/expiring/ExpiringCache.java\n+-rw----     2.0 fat     3231 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/expiring/ExpiringCache.java\n -rw----     2.0 fat     1631 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/expiring/ExpiringCacheFactory.java\n--rw----     2.0 fat    10601 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/expiring/ExpiringMap.java\n+-rw----     2.0 fat    10987 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/expiring/ExpiringMap.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/jcache/\n -rw----     2.0 fat     3656 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/jcache/JCache.java\n -rw----     2.0 fat     1806 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/jcache/JCacheFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/lfu/\n--rw----     2.0 fat     3150 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/lfu/LfuCache.java\n--rw----     2.0 fat     1566 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/lfu/LfuCacheFactory.java\n+-rw----     2.0 fat     3230 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/lfu/LfuCache.java\n+-rw----     2.0 fat     1609 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/lfu/LfuCacheFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/lru/\n -rw----     2.0 fat     2933 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/lru/LruCache.java\n -rw----     2.0 fat     1609 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/lru/LruCacheFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/threadlocal/\n -rw----     2.0 fat     2929 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/threadlocal/ThreadLocalCache.java\n -rw----     2.0 fat     1734 bl defN 20-Apr-01 08:04 org/apache/dubbo/cache/support/threadlocal/ThreadLocalCacheFactory.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-filter-cache/\n+-rw----     2.0 fat     2225 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-filter-cache/pom.xml\n+-rw----     2.0 fat       73 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-filter-cache/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/validation/\n -rw----     2.0 fat     1640 bl defN 20-Apr-01 08:04 org/apache/dubbo/validation/MethodValidated.java\n -rw----     2.0 fat     1507 bl defN 20-Apr-01 08:04 org/apache/dubbo/validation/Validation.java\n -rw----     2.0 fat     1145 bl defN 20-Apr-01 08:04 org/apache/dubbo/validation/Validator.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/validation/filter/\n -rw----     2.0 fat     4842 bl defN 20-Apr-01 08:04 org/apache/dubbo/validation/filter/ValidationFilter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/validation/support/\n -rw----     2.0 fat     2006 bl defN 20-Apr-01 08:04 org/apache/dubbo/validation/support/AbstractValidation.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/validation/support/jvalidation/\n -rw----     2.0 fat     1475 bl defN 20-Apr-01 08:04 org/apache/dubbo/validation/support/jvalidation/JValidation.java\n -rw----     2.0 fat    15679 bl defN 20-Apr-01 08:04 org/apache/dubbo/validation/support/jvalidation/JValidator.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-filter-validation/\n+-rw----     2.0 fat     3011 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-filter-validation/pom.xml\n+-rw----     2.0 fat       78 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-filter-validation/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/\n--rw----     2.0 fat     1850 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/Channel.java\n+-rw----     2.0 fat     1923 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/Channel.java\n -rw----     2.0 fat     2121 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/ChannelHandler.java\n -rw----     2.0 fat     1419 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/Client.java\n--rw----     2.0 fat     1844 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/Codec.java\n--rw----     2.0 fat     1372 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/Codec2.java\n--rw----     2.0 fat     3707 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/Constants.java\n+-rw----     2.0 fat     1905 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/Codec.java\n+-rw----     2.0 fat     1412 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/Codec2.java\n+-rw----     2.0 fat     3844 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/Constants.java\n -rw----     2.0 fat      940 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/Decodeable.java\n--rw----     2.0 fat     1528 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/Dispatcher.java\n+-rw----     2.0 fat     1569 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/Dispatcher.java\n -rw----     2.0 fat     2109 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/Endpoint.java\n -rw----     2.0 fat     2408 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/ExecutionException.java\n--rw----     2.0 fat     1555 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/IdleSensible.java\n--rw----     2.0 fat     3222 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/RemotingException.java\n--rw----     2.0 fat     1705 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/RemotingServer.java\n--rw----     2.0 fat     1929 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/TimeoutException.java\n--rw----     2.0 fat     2068 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/Transporter.java\n+-rw----     2.0 fat     1589 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/IdleSensible.java\n+-rw----     2.0 fat     3305 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/RemotingException.java\n+-rw----     2.0 fat     1763 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/RemotingServer.java\n+-rw----     2.0 fat     1985 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/TimeoutException.java\n+-rw----     2.0 fat     2126 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/Transporter.java\n -rw----     2.0 fat     3097 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/Transporters.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/buffer/\n--rw----     2.0 fat     9220 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/buffer/AbstractChannelBuffer.java\n+-rw----     2.0 fat     9561 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/buffer/AbstractChannelBuffer.java\n -rw----     2.0 fat     7858 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/buffer/ByteBufferBackedChannelBuffer.java\n--rw----     2.0 fat    43632 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/buffer/ChannelBuffer.java\n+-rw----     2.0 fat    44583 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/buffer/ChannelBuffer.java\n -rw----     2.0 fat     1110 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/buffer/ChannelBufferFactory.java\n -rw----     2.0 fat     3155 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/buffer/ChannelBufferInputStream.java\n -rw----     2.0 fat     1893 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/buffer/ChannelBufferOutputStream.java\n--rw----     2.0 fat     4770 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/buffer/ChannelBuffers.java\n+-rw----     2.0 fat     4926 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/buffer/ChannelBuffers.java\n -rw----     2.0 fat     2629 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/buffer/DirectChannelBufferFactory.java\n -rw----     2.0 fat     5608 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/buffer/DynamicChannelBuffer.java\n -rw----     2.0 fat     6575 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/buffer/HeapChannelBuffer.java\n -rw----     2.0 fat     1913 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/buffer/HeapChannelBufferFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/\n -rw----     2.0 fat     2468 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/ExchangeChannel.java\n -rw----     2.0 fat     1050 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/ExchangeClient.java\n -rw----     2.0 fat     1465 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/ExchangeHandler.java\n -rw----     2.0 fat     1416 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/ExchangeServer.java\n -rw----     2.0 fat     1970 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/Exchanger.java\n -rw----     2.0 fat     4957 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/Exchangers.java\n--rw----     2.0 fat     3675 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/Request.java\n+-rw----     2.0 fat     3820 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/Request.java\n -rw----     2.0 fat     4036 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/Response.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/codec/\n -rw----     2.0 fat    20719 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/codec/ExchangeCodec.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/\n--rw----     2.0 fat    11499 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/DefaultFuture.java\n+-rw----     2.0 fat    11800 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/DefaultFuture.java\n -rw----     2.0 fat     1467 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/ExchangeHandlerAdapter.java\n -rw----     2.0 fat     4453 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/ExchangeHandlerDispatcher.java\n -rw----     2.0 fat     3541 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/ExchangeServerDelegate.java\n -rw----     2.0 fat     2486 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/MultiMessage.java\n -rw----     2.0 fat     1302 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/Replier.java\n -rw----     2.0 fat     2730 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/ReplierDispatcher.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/header/\n--rw----     2.0 fat     2878 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/header/AbstractTimerTask.java\n+-rw----     2.0 fat     2975 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/header/AbstractTimerTask.java\n -rw----     2.0 fat     2192 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/header/CloseTimerTask.java\n -rw----     2.0 fat     8570 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeChannel.java\n -rw----     2.0 fat     7803 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeClient.java\n -rw----     2.0 fat     9342 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeHandler.java\n -rw----     2.0 fat     9442 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeServer.java\n -rw----     2.0 fat     1947 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/header/HeaderExchanger.java\n--rw----     2.0 fat     4466 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/header/HeartbeatHandler.java\n--rw----     2.0 fat     2607 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/header/HeartbeatTimerTask.java\n+-rw----     2.0 fat     4582 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/header/HeartbeatHandler.java\n+-rw----     2.0 fat     2671 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/header/HeartbeatTimerTask.java\n -rw----     2.0 fat     2768 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/exchange/support/header/ReconnectTimerTask.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/telnet/\n -rw----     2.0 fat     1247 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/telnet/TelnetHandler.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/telnet/codec/\n -rw----     2.0 fat    11885 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/telnet/codec/TelnetCodec.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/telnet/support/\n -rw----     2.0 fat     1304 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/telnet/support/Help.java\n -rw----     2.0 fat     4046 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/telnet/support/TelnetHandlerAdapter.java\n -rw----     2.0 fat     5789 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/telnet/support/TelnetUtils.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/telnet/support/command/\n -rw----     2.0 fat     1848 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/telnet/support/command/ClearTelnetHandler.java\n -rw----     2.0 fat     1409 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/telnet/support/command/ExitTelnetHandler.java\n -rw----     2.0 fat     3664 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/telnet/support/command/HelpTelnetHandler.java\n--rw----     2.0 fat     4221 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/telnet/support/command/LogTelnetHandler.java\n+-rw----     2.0 fat     4316 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/telnet/support/command/LogTelnetHandler.java\n -rw----     2.0 fat     4624 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/telnet/support/command/StatusTelnetHandler.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/\n -rw----     2.0 fat     1901 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/AbstractChannel.java\n -rw----     2.0 fat     2320 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/AbstractChannelHandlerDelegate.java\n--rw----     2.0 fat    11864 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/AbstractClient.java\n--rw----     2.0 fat     3990 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/AbstractCodec.java\n--rw----     2.0 fat     4120 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/AbstractEndpoint.java\n+-rw----     2.0 fat    12207 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/AbstractClient.java\n+-rw----     2.0 fat     4097 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/AbstractCodec.java\n+-rw----     2.0 fat     4235 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/AbstractEndpoint.java\n -rw----     2.0 fat     4184 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/AbstractPeer.java\n--rw----     2.0 fat     7171 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/AbstractServer.java\n+-rw----     2.0 fat     7363 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/AbstractServer.java\n -rw----     2.0 fat     3227 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/ChannelDelegate.java\n -rw----     2.0 fat     1642 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/ChannelHandlerAdapter.java\n -rw----     2.0 fat     1021 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/ChannelHandlerDelegate.java\n -rw----     2.0 fat     3967 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/ChannelHandlerDispatcher.java\n -rw----     2.0 fat     3566 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/ClientDelegate.java\n--rw----     2.0 fat     7642 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/CodecSupport.java\n--rw----     2.0 fat     2505 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/DecodeHandler.java\n+-rw----     2.0 fat     7823 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/CodecSupport.java\n+-rw----     2.0 fat     2574 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/DecodeHandler.java\n -rw----     2.0 fat     1129 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/ExceedPayloadLimitException.java\n -rw----     2.0 fat     1717 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/MultiMessageHandler.java\n -rw----     2.0 fat     3141 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/ServerDelegate.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/codec/\n -rw----     2.0 fat     2379 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/codec/CodecAdapter.java\n -rw----     2.0 fat     3422 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/codec/TransportCodec.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/\n -rw----     2.0 fat     4613 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/ChannelEventRunnable.java\n -rw----     2.0 fat     1987 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/ChannelHandlers.java\n--rw----     2.0 fat     5306 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/WrappedChannelHandler.java\n+-rw----     2.0 fat     5455 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/WrappedChannelHandler.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/all/\n--rw----     2.0 fat     3608 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/all/AllChannelHandler.java\n+-rw----     2.0 fat     3689 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/all/AllChannelHandler.java\n -rw----     2.0 fat     1313 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/all/AllDispatcher.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/connection/\n--rw----     2.0 fat     5329 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/connection/ConnectionOrderedChannelHandler.java\n+-rw----     2.0 fat     5438 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/connection/ConnectionOrderedChannelHandler.java\n -rw----     2.0 fat     1361 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/connection/ConnectionOrderedDispatcher.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/direct/\n--rw----     2.0 fat     2227 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/direct/DirectChannelHandler.java\n--rw----     2.0 fat     1278 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/direct/DirectDispatcher.java\n+-rw----     2.0 fat     2278 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/direct/DirectChannelHandler.java\n+-rw----     2.0 fat     1313 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/direct/DirectDispatcher.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/execution/\n--rw----     2.0 fat     3147 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/execution/ExecutionChannelHandler.java\n+-rw----     2.0 fat     3212 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/execution/ExecutionChannelHandler.java\n -rw----     2.0 fat     1365 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/execution/ExecutionDispatcher.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/message/\n--rw----     2.0 fat     2320 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/message/MessageOnlyChannelHandler.java\n+-rw----     2.0 fat     2372 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/message/MessageOnlyChannelHandler.java\n -rw----     2.0 fat     1350 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/dispatcher/message/MessageOnlyDispatcher.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/utils/\n--rw----     2.0 fat     1800 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/utils/PayloadDropper.java\n--rw----     2.0 fat     1550 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/utils/UrlUtils.java\n+-rw----     2.0 fat     1848 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/utils/PayloadDropper.java\n+-rw----     2.0 fat     1587 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/utils/UrlUtils.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-api/\n+-rw----     2.0 fat     2326 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-api/pom.xml\n+-rw----     2.0 fat       73 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-api/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty/\n -rw----     2.0 fat    10364 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty/NettyBackedChannelBuffer.java\n -rw----     2.0 fat     2043 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty/NettyBackedChannelBufferFactory.java\n--rw----     2.0 fat     6854 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty/NettyChannel.java\n+-rw----     2.0 fat     7069 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty/NettyChannel.java\n -rw----     2.0 fat     7388 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty/NettyClient.java\n--rw----     2.0 fat     6778 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty/NettyCodecAdapter.java\n--rw----     2.0 fat     4889 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty/NettyHandler.java\n--rw----     2.0 fat     3281 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty/NettyHelper.java\n+-rw----     2.0 fat     6948 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty/NettyCodecAdapter.java\n+-rw----     2.0 fat     5017 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty/NettyHandler.java\n+-rw----     2.0 fat     3398 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty/NettyHelper.java\n -rw----     2.0 fat     6761 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty/NettyServer.java\n -rw----     2.0 fat     1586 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty/NettyTransporter.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-netty/\n+-rw----     2.0 fat     2268 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-netty/pom.xml\n+-rw----     2.0 fat       75 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-netty/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/\n -rw----     2.0 fat    10214 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/NettyBackedChannelBuffer.java\n--rw----     2.0 fat     8769 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/NettyChannel.java\n--rw----     2.0 fat     9286 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/NettyClient.java\n--rw----     2.0 fat     6249 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/NettyClientHandler.java\n--rw----     2.0 fat     3547 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/NettyCodecAdapter.java\n--rw----     2.0 fat     2654 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/NettyEventLoopFactory.java\n--rw----     2.0 fat     7939 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/NettyServer.java\n--rw----     2.0 fat     5243 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/NettyServerHandler.java\n--rw----     2.0 fat     1614 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/NettyTransporter.java\n--rw----     2.0 fat     5550 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/SslContexts.java\n--rw----     2.0 fat     5835 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/SslHandlerInitializer.java\n+-rw----     2.0 fat     9045 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/NettyChannel.java\n+-rw----     2.0 fat     9503 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/NettyClient.java\n+-rw----     2.0 fat     6410 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/NettyClientHandler.java\n+-rw----     2.0 fat     3648 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/NettyCodecAdapter.java\n+-rw----     2.0 fat     2714 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/NettyEventLoopFactory.java\n+-rw----     2.0 fat     8141 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/NettyServer.java\n+-rw----     2.0 fat     5381 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/NettyServerHandler.java\n+-rw----     2.0 fat     1657 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/NettyTransporter.java\n+-rw----     2.0 fat     5671 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/SslContexts.java\n+-rw----     2.0 fat     5976 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/SslHandlerInitializer.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/logging/\n -rw----     2.0 fat     2243 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/logging/FormattingTuple.java\n--rw----     2.0 fat    14622 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/logging/MessageFormatter.java\n+-rw----     2.0 fat    15032 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/netty4/logging/MessageFormatter.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-netty4/\n+-rw----     2.0 fat     2340 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-netty4/pom.xml\n+-rw----     2.0 fat       76 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-netty4/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/\n--rw----     2.0 fat     1578 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/AbstractRetryPolicy.java\n+-rw----     2.0 fat     1623 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/AbstractRetryPolicy.java\n -rw----     2.0 fat      988 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/ChildListener.java\n--rw----     2.0 fat     1737 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/Constants.java\n--rw----     2.0 fat     6379 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/EtcdClient.java\n--rw----     2.0 fat     1975 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/EtcdTransporter.java\n--rw----     2.0 fat     1243 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/RetryPolicy.java\n+-rw----     2.0 fat     1792 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/Constants.java\n+-rw----     2.0 fat     6570 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/EtcdClient.java\n+-rw----     2.0 fat     2022 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/EtcdTransporter.java\n+-rw----     2.0 fat     1274 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/RetryPolicy.java\n -rw----     2.0 fat      996 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/StateListener.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/jetcd/\n--rw----     2.0 fat     1132 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/jetcd/ConnectionStateListener.java\n--rw----     2.0 fat    16648 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/jetcd/JEtcdClient.java\n--rw----     2.0 fat    28360 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/jetcd/JEtcdClientWrapper.java\n--rw----     2.0 fat     1152 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/jetcd/JEtcdTransporter.java\n--rw----     2.0 fat     3433 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/jetcd/RetryLoops.java\n+-rw----     2.0 fat     1162 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/jetcd/ConnectionStateListener.java\n+-rw----     2.0 fat    17121 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/jetcd/JEtcdClient.java\n+-rw----     2.0 fat    29112 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/jetcd/JEtcdClientWrapper.java\n+-rw----     2.0 fat     1182 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/jetcd/JEtcdTransporter.java\n+-rw----     2.0 fat     3532 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/jetcd/RetryLoops.java\n -rw----     2.0 fat     1386 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/jetcd/RetryNTimes.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/option/\n--rw----     2.0 fat     2923 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/option/OptionUtil.java\n+-rw----     2.0 fat     3001 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/option/OptionUtil.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/support/\n--rw----     2.0 fat     7250 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/support/AbstractEtcdClient.java\n+-rw----     2.0 fat     7444 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/etcd/support/AbstractEtcdClient.java\n -rw----     2.0 fat       59 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.remoting.etcd.EtcdTransporter\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-etcd3/\n+-rw----     2.0 fat     3585 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-etcd3/pom.xml\n+-rw----     2.0 fat       75 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-etcd3/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/mina/\n--rw----     2.0 fat     5876 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/mina/MinaChannel.java\n--rw----     2.0 fat     7402 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/mina/MinaClient.java\n--rw----     2.0 fat     6103 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/mina/MinaCodecAdapter.java\n+-rw----     2.0 fat     6067 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/mina/MinaChannel.java\n+-rw----     2.0 fat     7576 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/mina/MinaClient.java\n+-rw----     2.0 fat     6270 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/mina/MinaCodecAdapter.java\n -rw----     2.0 fat     3255 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/mina/MinaHandler.java\n--rw----     2.0 fat     4221 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/mina/MinaServer.java\n+-rw----     2.0 fat     4333 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/mina/MinaServer.java\n -rw----     2.0 fat     1580 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/mina/MinaTransporter.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-mina/\n+-rw----     2.0 fat     2383 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-mina/pom.xml\n+-rw----     2.0 fat       74 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-mina/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/grizzly/\n -rw----     2.0 fat     6527 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/grizzly/GrizzlyChannel.java\n -rw----     2.0 fat     4294 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/grizzly/GrizzlyClient.java\n--rw----     2.0 fat     5968 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/grizzly/GrizzlyCodecAdapter.java\n+-rw----     2.0 fat     6110 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/grizzly/GrizzlyCodecAdapter.java\n -rw----     2.0 fat     4554 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/grizzly/GrizzlyHandler.java\n -rw----     2.0 fat     5283 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/grizzly/GrizzlyServer.java\n -rw----     2.0 fat     1628 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/transport/grizzly/GrizzlyTransporter.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-grizzly/\n+-rw----     2.0 fat     2073 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-grizzly/pom.xml\n+-rw----     2.0 fat       77 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-grizzly/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/p2p/\n -rw----     2.0 fat     1605 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/p2p/Group.java\n -rw----     2.0 fat     1328 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/p2p/Networker.java\n -rw----     2.0 fat     1933 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/p2p/Networkers.java\n -rw----     2.0 fat     1267 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/p2p/Peer.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/p2p/exchange/\n -rw----     2.0 fat     1281 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/p2p/exchange/ExchangeGroup.java\n@@ -1049,420 +858,530 @@\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/p2p/support/\n -rw----     2.0 fat     4002 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/p2p/support/AbstractGroup.java\n -rw----     2.0 fat     5056 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/p2p/support/FileGroup.java\n -rw----     2.0 fat     1259 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/p2p/support/FileNetworker.java\n -rw----     2.0 fat     4159 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/p2p/support/MulticastGroup.java\n -rw----     2.0 fat     1274 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/p2p/support/MulticastNetworker.java\n -rw----     2.0 fat     4255 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/p2p/support/ServerPeer.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-p2p/\n+-rw----     2.0 fat     2146 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-p2p/pom.xml\n+-rw----     2.0 fat       73 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-p2p/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/\n -rw----     2.0 fat     1319 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/HttpBinder.java\n -rw----     2.0 fat     1386 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/HttpHandler.java\n -rw----     2.0 fat     1769 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/HttpServer.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/jetty/\n -rw----     2.0 fat     1289 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/jetty/JettyHttpBinder.java\n -rw----     2.0 fat     4750 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/jetty/JettyHttpServer.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/servlet/\n -rw----     2.0 fat     1576 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/servlet/BootstrapListener.java\n -rw----     2.0 fat     2376 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/servlet/DispatcherServlet.java\n--rw----     2.0 fat     1263 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/servlet/ServletHttpBinder.java\n+-rw----     2.0 fat     1297 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/servlet/ServletHttpBinder.java\n -rw----     2.0 fat     1340 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/servlet/ServletHttpServer.java\n--rw----     2.0 fat     1696 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/servlet/ServletManager.java\n+-rw----     2.0 fat     1746 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/servlet/ServletManager.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/support/\n -rw----     2.0 fat     3299 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/support/AbstractHttpServer.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/tomcat/\n -rw----     2.0 fat     1257 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/tomcat/TomcatHttpBinder.java\n--rw----     2.0 fat     3833 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/tomcat/TomcatHttpServer.java\n+-rw----     2.0 fat     3928 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/http/tomcat/TomcatHttpServer.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-http/\n+-rw----     2.0 fat     2675 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-http/pom.xml\n+-rw----     2.0 fat       74 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-http/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/service/\n -rw----     2.0 fat      959 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/service/EchoService.java\n--rw----     2.0 fat     1966 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/service/GenericException.java\n+-rw----     2.0 fat     2028 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/service/GenericException.java\n -rw----     2.0 fat     1125 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/service/GenericService.java\n--rw----     2.0 fat     7812 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/AppResponse.java\n+-rw----     2.0 fat     8067 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/AppResponse.java\n -rw----     2.0 fat     2608 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/AsyncContext.java\n--rw----     2.0 fat     2600 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/AsyncContextImpl.java\n--rw----     2.0 fat    12324 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/AsyncRpcResult.java\n--rw----     2.0 fat     2408 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/AttachmentsAdapter.java\n--rw----     2.0 fat     2584 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/Constants.java\n+-rw----     2.0 fat     2678 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/AsyncContextImpl.java\n+-rw----     2.0 fat    12661 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/AsyncRpcResult.java\n+-rw----     2.0 fat     2479 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/AttachmentsAdapter.java\n+-rw----     2.0 fat     2681 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/Constants.java\n -rw----     2.0 fat     1343 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/Exporter.java\n -rw----     2.0 fat     1452 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/ExporterListener.java\n -rw----     2.0 fat     2405 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/Filter.java\n--rw----     2.0 fat     3965 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/FutureContext.java\n--rw----     2.0 fat     3745 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/Invocation.java\n--rw----     2.0 fat      887 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/InvokeMode.java\n+-rw----     2.0 fat     4073 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/FutureContext.java\n+-rw----     2.0 fat     3885 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/Invocation.java\n+-rw----     2.0 fat      910 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/InvokeMode.java\n -rw----     2.0 fat     1489 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/Invoker.java\n -rw----     2.0 fat     1434 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/InvokerListener.java\n--rw----     2.0 fat     2000 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/ListenableFilter.java\n+-rw----     2.0 fat     2053 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/ListenableFilter.java\n -rw----     2.0 fat     3568 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/Protocol.java\n--rw----     2.0 fat     1484 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/ProtocolServer.java\n--rw----     2.0 fat     1757 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/ProxyFactory.java\n--rw----     2.0 fat     5441 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/Result.java\n+-rw----     2.0 fat     1531 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/ProtocolServer.java\n+-rw----     2.0 fat     1817 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/ProxyFactory.java\n+-rw----     2.0 fat     5629 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/Result.java\n -rw----     2.0 fat     1438 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/RpcConstants.java\n--rw----     2.0 fat    22275 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/RpcContext.java\n--rw----     2.0 fat     3363 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/RpcException.java\n--rw----     2.0 fat    14986 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/RpcInvocation.java\n+-rw----     2.0 fat    23133 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/RpcContext.java\n+-rw----     2.0 fat     3479 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/RpcException.java\n+-rw----     2.0 fat    15427 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/RpcInvocation.java\n -rw----     2.0 fat     8590 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/RpcStatus.java\n--rw----     2.0 fat     2912 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/TimeoutCountDown.java\n--rw----     2.0 fat     1189 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/ZoneDetector.java\n+-rw----     2.0 fat     3002 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/TimeoutCountDown.java\n+-rw----     2.0 fat     1221 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/ZoneDetector.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/\n--rw----     2.0 fat     7579 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/AccessLogFilter.java\n+-rw----     2.0 fat     7773 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/AccessLogFilter.java\n -rw----     2.0 fat     5667 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/ActiveLimitFilter.java\n -rw----     2.0 fat     1827 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/ClassLoaderFilter.java\n -rw----     2.0 fat     4025 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/CompatibleFilter.java\n--rw----     2.0 fat     3400 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/ConsumerContextFilter.java\n--rw----     2.0 fat     6200 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/ContextFilter.java\n+-rw----     2.0 fat     3472 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/ConsumerContextFilter.java\n+-rw----     2.0 fat     6348 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/ContextFilter.java\n -rw----     2.0 fat     3267 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/DeprecatedFilter.java\n -rw----     2.0 fat     1852 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/EchoFilter.java\n -rw----     2.0 fat     5798 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/ExceptionFilter.java\n -rw----     2.0 fat     3810 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/ExecuteLimitFilter.java\n--rw----     2.0 fat    13134 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/GenericFilter.java\n+-rw----     2.0 fat    13371 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/GenericFilter.java\n -rw----     2.0 fat    11294 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/GenericImplFilter.java\n -rw----     2.0 fat     2875 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/TimeoutFilter.java\n -rw----     2.0 fat     2581 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/TokenFilter.java\n--rw----     2.0 fat     2561 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/TpsLimitFilter.java\n+-rw----     2.0 fat     2620 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/TpsLimitFilter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/tps/\n--rw----     2.0 fat     2716 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiter.java\n--rw----     2.0 fat     2580 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/tps/StatItem.java\n+-rw----     2.0 fat     2783 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiter.java\n+-rw----     2.0 fat     2672 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/tps/StatItem.java\n -rw----     2.0 fat     1656 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/filter/tps/TPSLimiter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/listener/\n -rw----     2.0 fat     1709 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/listener/DeprecatedInvokerListener.java\n -rw----     2.0 fat     1301 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/listener/ExporterListenerAdapter.java\n -rw----     2.0 fat     1271 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/listener/InvokerListenerAdapter.java\n -rw----     2.0 fat     3226 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/listener/ListenerExporterWrapper.java\n -rw----     2.0 fat     3415 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/listener/ListenerInvokerWrapper.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/\n -rw----     2.0 fat     2294 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/AbstractExporter.java\n--rw----     2.0 fat     8018 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/AbstractInvoker.java\n--rw----     2.0 fat     4350 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/AbstractProtocol.java\n+-rw----     2.0 fat     8226 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/AbstractInvoker.java\n+-rw----     2.0 fat     4466 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/AbstractProtocol.java\n -rw----     2.0 fat     8676 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/AbstractProxyProtocol.java\n--rw----     2.0 fat     3926 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/AsyncToSyncInvoker.java\n--rw----     2.0 fat     4009 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/FilterNode.java\n+-rw----     2.0 fat     4028 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/AsyncToSyncInvoker.java\n+-rw----     2.0 fat     4126 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/FilterNode.java\n -rw----     2.0 fat     1837 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/InvokerWrapper.java\n -rw----     2.0 fat     3408 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/ProtocolFilterWrapper.java\n -rw----     2.0 fat     3352 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/ProtocolListenerWrapper.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/\n--rw----     2.0 fat     3502 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/FutureAdapter.java\n--rw----     2.0 fat     1033 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/package-info.java\n+-rw----     2.0 fat     3601 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/FutureAdapter.java\n+-rw----     2.0 fat     1054 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/package-info.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/proxy/\n -rw----     2.0 fat     3246 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/proxy/AbstractProxyFactory.java\n--rw----     2.0 fat     4848 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/proxy/AbstractProxyInvoker.java\n--rw----     2.0 fat     3857 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/proxy/InvokerInvocationHandler.java\n+-rw----     2.0 fat     4975 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/proxy/AbstractProxyInvoker.java\n+-rw----     2.0 fat     3955 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/proxy/InvokerInvocationHandler.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/proxy/javassist/\n--rw----     2.0 fat     2236 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/proxy/javassist/JavassistProxyFactory.java\n+-rw----     2.0 fat     2288 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/proxy/javassist/JavassistProxyFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/proxy/jdk/\n -rw----     2.0 fat     2124 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/proxy/jdk/JdkProxyFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/proxy/wrapper/\n -rw----     2.0 fat     5842 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/proxy/wrapper/StubProxyFactoryWrapper.java\n--rw----     2.0 fat     7911 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/support/AccessLogData.java\n+-rw----     2.0 fat     8192 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/support/AccessLogData.java\n -rw----     2.0 fat    11093 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/support/MockInvoker.java\n -rw----     2.0 fat     1630 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/support/MockProtocol.java\n--rw----     2.0 fat    11062 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/support/RpcUtils.java\n--rw----     2.0 fat    15943 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java\n--rw----     2.0 fat     6371 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/ChannelWrappedInvoker.java\n--rw----     2.0 fat     2232 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/Constants.java\n--rw----     2.0 fat     7990 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java\n--rw----     2.0 fat     7072 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java\n--rw----     2.0 fat    10983 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/DubboCodec.java\n--rw----     2.0 fat     2585 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/DubboCodecSupport.java\n--rw----     2.0 fat     3102 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/DubboCountCodec.java\n--rw----     2.0 fat     1457 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/DubboExporter.java\n--rw----     2.0 fat     8153 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/DubboInvoker.java\n--rw----     2.0 fat    27447 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java\n--rw----     2.0 fat     1812 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/DubboProtocolServer.java\n--rw----     2.0 fat     8140 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/LazyConnectExchangeClient.java\n--rw----     2.0 fat     6087 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/ReferenceCountExchangeClient.java\n+-rw----     2.0 fat    11335 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/support/RpcUtils.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-api/\n+-rw----     2.0 fat     2417 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-api/pom.xml\n+-rw----     2.0 fat       68 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-api/pom.properties\n+-rw----     2.0 fat    16261 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java\n+-rw----     2.0 fat     6554 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/ChannelWrappedInvoker.java\n+-rw----     2.0 fat     2303 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/Constants.java\n+-rw----     2.0 fat     8185 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java\n+-rw----     2.0 fat     7256 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java\n+-rw----     2.0 fat    11231 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/DubboCodec.java\n+-rw----     2.0 fat     2638 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/DubboCodecSupport.java\n+-rw----     2.0 fat     3188 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/DubboCountCodec.java\n+-rw----     2.0 fat     1501 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/DubboExporter.java\n+-rw----     2.0 fat     8336 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/DubboInvoker.java\n+-rw----     2.0 fat    28133 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java\n+-rw----     2.0 fat     1874 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/DubboProtocolServer.java\n+-rw----     2.0 fat     8409 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/LazyConnectExchangeClient.java\n+-rw----     2.0 fat     6298 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/ReferenceCountExchangeClient.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/filter/\n--rw----     2.0 fat     8744 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/filter/FutureFilter.java\n--rw----     2.0 fat     5704 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilter.java\n+-rw----     2.0 fat     8947 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/filter/FutureFilter.java\n+-rw----     2.0 fat     5831 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/status/\n--rw----     2.0 fat     2276 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/status/ServerStatusChecker.java\n--rw----     2.0 fat     2950 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/status/ThreadPoolStatusChecker.java\n+-rw----     2.0 fat     2337 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/status/ServerStatusChecker.java\n+-rw----     2.0 fat     3017 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/dubbo/status/ThreadPoolStatusChecker.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-dubbo/\n+-rw----     2.0 fat     3916 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-dubbo/pom.xml\n+-rw----     2.0 fat       70 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-dubbo/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/injvm/\n -rw----     2.0 fat     1526 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/injvm/InjvmExporter.java\n -rw----     2.0 fat     2742 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/injvm/InjvmInvoker.java\n--rw----     2.0 fat     4466 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/injvm/InjvmProtocol.java\n+-rw----     2.0 fat     4586 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/injvm/InjvmProtocol.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-injvm/\n+-rw----     2.0 fat     1923 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-injvm/pom.xml\n+-rw----     2.0 fat       70 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-injvm/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/http/\n--rw----     2.0 fat     7560 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/http/HttpProtocol.java\n+-rw----     2.0 fat     7750 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/http/HttpProtocol.java\n -rw----     2.0 fat     1065 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/http/HttpProtocolErrorCode.java\n--rw----     2.0 fat     2283 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/http/JsonRemoteInvocation.java\n--rw----     2.0 fat     2828 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/http/JsonRpcProxyFactoryBean.java\n+-rw----     2.0 fat     2344 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/http/JsonRemoteInvocation.java\n+-rw----     2.0 fat     2914 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/http/JsonRpcProxyFactoryBean.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-http/\n+-rw----     2.0 fat     2440 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-http/pom.xml\n+-rw----     2.0 fat       69 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-http/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/protocol/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/protocol/rmi/\n--rw----     2.0 fat     1408 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/protocol/rmi/RmiRemoteInvocation.java\n+-rw----     2.0 fat     1447 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/protocol/rmi/RmiRemoteInvocation.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rmi/\n -rw----     2.0 fat     6866 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rmi/RmiProtocol.java\n--rw----     2.0 fat     2659 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rmi/RmiRemoteInvocation.java\n+-rw----     2.0 fat     2722 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rmi/RmiRemoteInvocation.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-rmi/\n+-rw----     2.0 fat     2045 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-rmi/pom.xml\n+-rw----     2.0 fat       68 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-rmi/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/hessian/\n--rw----     2.0 fat     1160 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/hessian/Constants.java\n--rw----     2.0 fat     1586 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/hessian/DubboHessianURLConnectionFactory.java\n+-rw----     2.0 fat     1195 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/hessian/Constants.java\n+-rw----     2.0 fat     1627 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/hessian/DubboHessianURLConnectionFactory.java\n -rw----     2.0 fat     8893 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/hessian/HessianProtocol.java\n -rw----     2.0 fat     3316 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/hessian/HttpClientConnection.java\n--rw----     2.0 fat     2341 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/hessian/HttpClientConnectionFactory.java\n+-rw----     2.0 fat     2399 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/hessian/HttpClientConnectionFactory.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-hessian/\n+-rw----     2.0 fat     2702 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-hessian/pom.xml\n+-rw----     2.0 fat       72 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-hessian/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/webservice/\n--rw----     2.0 fat     8937 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/webservice/WebServiceProtocol.java\n+-rw----     2.0 fat     9148 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/webservice/WebServiceProtocol.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-webservice/\n+-rw----     2.0 fat     3103 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-webservice/pom.xml\n+-rw----     2.0 fat       75 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-webservice/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/\n--rw----     2.0 fat     1219 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ClassNameGenerator.java\n--rw----     2.0 fat     1436 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/DubboClassNameGenerator.java\n+-rw----     2.0 fat     1250 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ClassNameGenerator.java\n+-rw----     2.0 fat     1472 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/DubboClassNameGenerator.java\n -rw----     2.0 fat     1486 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ThriftClassNameGenerator.java\n--rw----     2.0 fat    24656 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ThriftCodec.java\n--rw----     2.0 fat     1320 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ThriftConstants.java\n--rw----     2.0 fat     6104 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ThriftInvoker.java\n--rw----     2.0 fat     3891 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ThriftNativeCodec.java\n--rw----     2.0 fat     9871 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ThriftProtocol.java\n--rw----     2.0 fat     1644 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ThriftType.java\n--rw----     2.0 fat     4218 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ThriftUtils.java\n+-rw----     2.0 fat    25354 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ThriftCodec.java\n+-rw----     2.0 fat     1352 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ThriftConstants.java\n+-rw----     2.0 fat     6275 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ThriftInvoker.java\n+-rw----     2.0 fat     3987 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ThriftNativeCodec.java\n+-rw----     2.0 fat    10143 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ThriftProtocol.java\n+-rw----     2.0 fat     1695 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ThriftType.java\n+-rw----     2.0 fat     4353 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ThriftUtils.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ext/\n--rw----     2.0 fat     4158 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ext/MultiServiceProcessor.java\n+-rw----     2.0 fat     4279 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/ext/MultiServiceProcessor.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/io/\n -rw----     2.0 fat     2385 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/io/InputStreamWrapper.java\n--rw----     2.0 fat     3057 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/io/RandomAccessByteArrayOutputStream.java\n+-rw----     2.0 fat     3174 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/thrift/io/RandomAccessByteArrayOutputStream.java\n -rw----     2.0 fat      136 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.protocol.thrift.ClassNameGenerator\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-thrift/\n+-rw----     2.0 fat     3119 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-thrift/pom.xml\n+-rw----     2.0 fat       71 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-thrift/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/nativethrift/\n--rw----     2.0 fat     8129 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/nativethrift/ThriftProtocol.java\n+-rw----     2.0 fat     8318 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/nativethrift/ThriftProtocol.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-native-thrift/\n+-rw----     2.0 fat     2246 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-native-thrift/pom.xml\n+-rw----     2.0 fat       78 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-native-thrift/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/memcached/\n -rw----     2.0 fat     6488 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/memcached/MemcachedProtocol.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-memcached/\n+-rw----     2.0 fat     2059 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-memcached/pom.xml\n+-rw----     2.0 fat       74 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-memcached/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/redis/\n -rw----     2.0 fat    10106 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/redis/RedisProtocol.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-redis/\n+-rw----     2.0 fat     2543 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-redis/pom.xml\n+-rw----     2.0 fat       70 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-redis/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/\n--rw----     2.0 fat     3030 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/BaseRestProtocolServer.java\n--rw----     2.0 fat     1012 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/Constants.java\n--rw----     2.0 fat     4599 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/DubboHttpProtocolServer.java\n+-rw----     2.0 fat     3110 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/BaseRestProtocolServer.java\n+-rw----     2.0 fat     1041 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/Constants.java\n+-rw----     2.0 fat     4730 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/DubboHttpProtocolServer.java\n -rw----     2.0 fat     2581 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/DubboResourceFactory.java\n--rw----     2.0 fat     3144 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/NettyRestProtocolServer.java\n+-rw----     2.0 fat     3217 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/NettyRestProtocolServer.java\n -rw----     2.0 fat     2017 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/RestConstraintViolation.java\n--rw----     2.0 fat    12786 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/RestProtocol.java\n--rw----     2.0 fat     1236 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/RestProtocolServer.java\n--rw----     2.0 fat     1701 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/RestServerFactory.java\n--rw----     2.0 fat     4502 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/RpcContextFilter.java\n+-rw----     2.0 fat    13081 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/RestProtocol.java\n+-rw----     2.0 fat     1269 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/RestProtocolServer.java\n+-rw----     2.0 fat     1745 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/RestServerFactory.java\n+-rw----     2.0 fat     4608 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/RpcContextFilter.java\n -rw----     2.0 fat     2538 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/RpcExceptionMapper.java\n -rw----     2.0 fat     1939 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/ViolationReport.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/integration/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/integration/swagger/\n -rw----     2.0 fat     2137 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/integration/swagger/DubboSwaggerApiListingResource.java\n--rw----     2.0 fat     1734 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/integration/swagger/DubboSwaggerService.java\n+-rw----     2.0 fat     1776 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/integration/swagger/DubboSwaggerService.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/support/\n -rw----     2.0 fat     1315 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/support/ContentType.java\n--rw----     2.0 fat     5479 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/support/LoggingFilter.java\n+-rw----     2.0 fat     5627 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/rest/support/LoggingFilter.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-rest/\n+-rw----     2.0 fat     3888 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-rest/pom.xml\n+-rw----     2.0 fat       69 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-rest/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/xml/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/xml/rpc/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/xml/rpc/protocol/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/xml/rpc/protocol/xmlrpc/\n--rw----     2.0 fat     7663 bl defN 20-Apr-01 08:04 org/apache/dubbo/xml/rpc/protocol/xmlrpc/XmlRpcProtocol.java\n--rw----     2.0 fat     4530 bl defN 20-Apr-01 08:04 org/apache/dubbo/xml/rpc/protocol/xmlrpc/XmlRpcProxyFactoryBean.java\n+-rw----     2.0 fat     7859 bl defN 20-Apr-01 08:04 org/apache/dubbo/xml/rpc/protocol/xmlrpc/XmlRpcProtocol.java\n+-rw----     2.0 fat     4672 bl defN 20-Apr-01 08:04 org/apache/dubbo/xml/rpc/protocol/xmlrpc/XmlRpcProxyFactoryBean.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-xml/\n+-rw----     2.0 fat     2781 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-xml/pom.xml\n+-rw----     2.0 fat       68 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-xml/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/\n--rw----     2.0 fat     2649 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/DubboHandlerRegistry.java\n--rw----     2.0 fat      876 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/GrpcConfig.java\n--rw----     2.0 fat     1950 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/GrpcConstants.java\n--rw----     2.0 fat     4069 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/GrpcInvoker.java\n--rw----     2.0 fat    10459 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/GrpcOptionsUtils.java\n--rw----     2.0 fat     8464 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/GrpcProtocol.java\n--rw----     2.0 fat     2622 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/ReferenceCountManagedChannel.java\n+-rw----     2.0 fat     2722 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/DubboHandlerRegistry.java\n+-rw----     2.0 fat      897 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/GrpcConfig.java\n+-rw----     2.0 fat     1991 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/GrpcConstants.java\n+-rw----     2.0 fat     4187 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/GrpcInvoker.java\n+-rw----     2.0 fat    10684 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/GrpcOptionsUtils.java\n+-rw----     2.0 fat     8699 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/GrpcProtocol.java\n+-rw----     2.0 fat     2707 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/ReferenceCountManagedChannel.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/interceptors/\n--rw----     2.0 fat     1094 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/interceptors/ClientInterceptor.java\n--rw----     2.0 fat     1458 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/interceptors/GrpcConfigurator.java\n--rw----     2.0 fat     4384 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/interceptors/RpcContextInterceptor.java\n--rw----     2.0 fat     1094 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/interceptors/ServerInterceptor.java\n--rw----     2.0 fat     1121 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/interceptors/ServerTransportFilter.java\n+-rw----     2.0 fat     1120 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/interceptors/ClientInterceptor.java\n+-rw----     2.0 fat     1499 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/interceptors/GrpcConfigurator.java\n+-rw----     2.0 fat     4484 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/interceptors/RpcContextInterceptor.java\n+-rw----     2.0 fat     1120 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/interceptors/ServerInterceptor.java\n+-rw----     2.0 fat     1148 bl defN 20-Apr-01 08:04 org/apache/dubbo/rpc/protocol/grpc/interceptors/ServerTransportFilter.java\n -rw----     2.0 fat       77 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.protocol.grpc.interceptors.ClientInterceptor\n -rw----     2.0 fat       77 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.protocol.grpc.interceptors.ServerInterceptor\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/\n+-rw----     2.0 fat     2681 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/pom.xml\n+-rw----     2.0 fat       69 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/\n--rw----     2.0 fat     1312 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/AddressListener.java\n--rw----     2.0 fat     2669 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/Constants.java\n--rw----     2.0 fat     5145 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/ListenerRegistryWrapper.java\n+-rw----     2.0 fat     1348 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/AddressListener.java\n+-rw----     2.0 fat     2765 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/Constants.java\n+-rw----     2.0 fat     5303 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/ListenerRegistryWrapper.java\n -rw----     2.0 fat     2612 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/NotifyListener.java\n -rw----     2.0 fat     1338 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/Registry.java\n -rw----     2.0 fat     2003 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/RegistryFactory.java\n--rw----     2.0 fat     1529 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/RegistryFactoryWrapper.java\n+-rw----     2.0 fat     1567 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/RegistryFactoryWrapper.java\n -rw----     2.0 fat     5634 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/RegistryService.java\n--rw----     2.0 fat     1166 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/RegistryServiceListener.java\n+-rw----     2.0 fat     1207 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/RegistryServiceListener.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/\n--rw----     2.0 fat     2099 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/AbstractServiceDiscovery.java\n--rw----     2.0 fat     1731 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/AbstractServiceDiscoveryFactory.java\n--rw----     2.0 fat     1381 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/DefaultRegistryClusterIdentifier.java\n--rw----     2.0 fat     2160 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/DefaultServiceDiscoveryFactory.java\n--rw----     2.0 fat     6064 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/DefaultServiceInstance.java\n--rw----     2.0 fat    10791 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/EventPublishingServiceDiscovery.java\n--rw----     2.0 fat     8176 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/FileSystemServiceDiscovery.java\n--rw----     2.0 fat    12067 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/InstanceAddressURL.java\n--rw----     2.0 fat     1504 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/RegistryClusterIdentifier.java\n--rw----     2.0 fat    11945 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/ServiceDiscovery.java\n--rw----     2.0 fat     1974 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/ServiceDiscoveryFactory.java\n--rw----     2.0 fat    21022 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java\n--rw----     2.0 fat    11484 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java\n--rw----     2.0 fat     1677 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/ServiceDiscoveryRegistryFactory.java\n--rw----     2.0 fat     3498 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/ServiceInstance.java\n--rw----     2.0 fat     1494 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/ServiceInstanceCustomizer.java\n+-rw----     2.0 fat     2155 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/AbstractServiceDiscovery.java\n+-rw----     2.0 fat     1773 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/AbstractServiceDiscoveryFactory.java\n+-rw----     2.0 fat     1415 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/DefaultRegistryClusterIdentifier.java\n+-rw----     2.0 fat     2209 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/DefaultServiceDiscoveryFactory.java\n+-rw----     2.0 fat     6285 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/DefaultServiceInstance.java\n+-rw----     2.0 fat    11106 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/EventPublishingServiceDiscovery.java\n+-rw----     2.0 fat     8397 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/FileSystemServiceDiscovery.java\n+-rw----     2.0 fat    12446 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/InstanceAddressURL.java\n+-rw----     2.0 fat     1540 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/RegistryClusterIdentifier.java\n+-rw----     2.0 fat    12232 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/ServiceDiscovery.java\n+-rw----     2.0 fat     2027 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/ServiceDiscoveryFactory.java\n+-rw----     2.0 fat    21520 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java\n+-rw----     2.0 fat    11749 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java\n+-rw----     2.0 fat     1715 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/ServiceDiscoveryRegistryFactory.java\n+-rw----     2.0 fat     3624 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/ServiceInstance.java\n+-rw----     2.0 fat     1532 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/ServiceInstanceCustomizer.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/\n--rw----     2.0 fat     1270 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceDiscoveryDestroyedEvent.java\n--rw----     2.0 fat     1275 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceDiscoveryDestroyingEvent.java\n--rw----     2.0 fat     2159 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceDiscoveryEvent.java\n--rw----     2.0 fat     1659 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceDiscoveryExceptionEvent.java\n--rw----     2.0 fat     1316 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceDiscoveryInitializedEvent.java\n--rw----     2.0 fat     1322 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceDiscoveryInitializingEvent.java\n--rw----     2.0 fat     1653 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceInstanceEvent.java\n--rw----     2.0 fat     1351 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceInstancePreRegisteredEvent.java\n--rw----     2.0 fat     1359 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceInstancePreUnregisteredEvent.java\n--rw----     2.0 fat     1344 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceInstanceRegisteredEvent.java\n--rw----     2.0 fat     1381 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceInstanceUnregisteredEvent.java\n--rw----     2.0 fat     2214 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceInstancesChangedEvent.java\n+-rw----     2.0 fat     1303 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceDiscoveryDestroyedEvent.java\n+-rw----     2.0 fat     1308 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceDiscoveryDestroyingEvent.java\n+-rw----     2.0 fat     2226 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceDiscoveryEvent.java\n+-rw----     2.0 fat     1707 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceDiscoveryExceptionEvent.java\n+-rw----     2.0 fat     1349 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceDiscoveryInitializedEvent.java\n+-rw----     2.0 fat     1355 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceDiscoveryInitializingEvent.java\n+-rw----     2.0 fat     1700 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceInstanceEvent.java\n+-rw----     2.0 fat     1385 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceInstancePreRegisteredEvent.java\n+-rw----     2.0 fat     1393 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceInstancePreUnregisteredEvent.java\n+-rw----     2.0 fat     1378 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceInstanceRegisteredEvent.java\n+-rw----     2.0 fat     1416 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceInstanceUnregisteredEvent.java\n+-rw----     2.0 fat     2278 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/ServiceInstancesChangedEvent.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/listener/\n--rw----     2.0 fat     3618 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/listener/LoggingEventListener.java\n--rw----     2.0 fat    11317 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java\n+-rw----     2.0 fat     3703 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/listener/LoggingEventListener.java\n+-rw----     2.0 fat    11585 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/\n--rw----     2.0 fat     3702 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/MetadataServiceNameMapping.java\n--rw----     2.0 fat     1495 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/MetadataServiceURLBuilder.java\n--rw----     2.0 fat     2794 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/MetadataServiceURLParamsMetadataCustomizer.java\n--rw----     2.0 fat     4771 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/MetadataUtils.java\n--rw----     2.0 fat     2296 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizer.java\n--rw----     2.0 fat     2755 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/RestProtocolSubscribedURLsSynthesizer.java\n--rw----     2.0 fat     4021 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java\n--rw----     2.0 fat    13453 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataUtils.java\n--rw----     2.0 fat     2159 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/SpringCloudMetadataServiceURLBuilder.java\n--rw----     2.0 fat     3710 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilder.java\n--rw----     2.0 fat     2120 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/SubscribedURLsSynthesizer.java\n+-rw----     2.0 fat     3788 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/MetadataServiceNameMapping.java\n+-rw----     2.0 fat     1535 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/MetadataServiceURLBuilder.java\n+-rw----     2.0 fat     2859 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/MetadataServiceURLParamsMetadataCustomizer.java\n+-rw----     2.0 fat     4873 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/MetadataUtils.java\n+-rw----     2.0 fat     2351 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizer.java\n+-rw----     2.0 fat     2822 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/RestProtocolSubscribedURLsSynthesizer.java\n+-rw----     2.0 fat     4109 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java\n+-rw----     2.0 fat    13771 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataUtils.java\n+-rw----     2.0 fat     2210 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/SpringCloudMetadataServiceURLBuilder.java\n+-rw----     2.0 fat     3799 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilder.java\n+-rw----     2.0 fat     2175 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/SubscribedURLsSynthesizer.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/store/\n--rw----     2.0 fat    11874 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/store/InMemoryWritableMetadataService.java\n--rw----     2.0 fat     7562 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/store/RemoteMetadataServiceImpl.java\n+-rw----     2.0 fat    12175 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/store/InMemoryWritableMetadataService.java\n+-rw----     2.0 fat     7705 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/metadata/store/RemoteMetadataServiceImpl.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/migration/\n--rw----     2.0 fat     3221 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/migration/DefaultMigrationAddressComparator.java\n--rw----     2.0 fat      920 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/migration/InvokersChangedListener.java\n--rw----     2.0 fat     1108 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/migration/MigrationAddressComparator.java\n--rw----     2.0 fat    14787 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/migration/MigrationInvoker.java\n--rw----     2.0 fat     2745 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/migration/MigrationRuleHandler.java\n--rw----     2.0 fat     4504 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/migration/MigrationRuleListener.java\n--rw----     2.0 fat     2612 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/migration/ServiceDiscoveryMigrationInvoker.java\n--rw----     2.0 fat     1027 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/package-info.java\n+-rw----     2.0 fat     3295 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/migration/DefaultMigrationAddressComparator.java\n+-rw----     2.0 fat      940 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/migration/InvokersChangedListener.java\n+-rw----     2.0 fat     1133 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/migration/MigrationAddressComparator.java\n+-rw----     2.0 fat    15177 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/migration/MigrationInvoker.java\n+-rw----     2.0 fat     2816 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/migration/MigrationRuleHandler.java\n+-rw----     2.0 fat     4616 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/migration/MigrationRuleListener.java\n+-rw----     2.0 fat     2672 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/migration/ServiceDiscoveryMigrationInvoker.java\n+-rw----     2.0 fat     1049 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/package-info.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/selector/\n--rw----     2.0 fat     1705 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/selector/RandomServiceInstanceSelector.java\n--rw----     2.0 fat     1699 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/selector/ServiceInstanceSelector.java\n+-rw----     2.0 fat     1752 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/selector/RandomServiceInstanceSelector.java\n+-rw----     2.0 fat     1742 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/client/selector/ServiceInstanceSelector.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/integration/\n--rw----     2.0 fat     3892 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/integration/AbstractConfiguratorListener.java\n--rw----     2.0 fat    11260 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/integration/DynamicDirectory.java\n--rw----     2.0 fat     3267 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/integration/InterfaceCompatibleRegistryProtocol.java\n--rw----     2.0 fat      916 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/integration/InvokersChangedListener.java\n+-rw----     2.0 fat     3989 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/integration/AbstractConfiguratorListener.java\n+-rw----     2.0 fat    11545 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/integration/DynamicDirectory.java\n+-rw----     2.0 fat     3340 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/integration/InterfaceCompatibleRegistryProtocol.java\n+-rw----     2.0 fat      937 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/integration/InvokersChangedListener.java\n -rw----     2.0 fat    29242 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/integration/RegistryDirectory.java\n--rw----     2.0 fat    37486 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/integration/RegistryProtocol.java\n--rw----     2.0 fat     2095 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/integration/RegistryProtocolListener.java\n+-rw----     2.0 fat    38329 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/integration/RegistryProtocol.java\n+-rw----     2.0 fat     2148 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/integration/RegistryProtocolListener.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/retry/\n--rw----     2.0 fat     4424 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/retry/AbstractRetryTask.java\n+-rw----     2.0 fat     4557 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/retry/AbstractRetryTask.java\n -rw----     2.0 fat     1487 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/retry/FailedRegisteredTask.java\n -rw----     2.0 fat     1760 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/retry/FailedSubscribedTask.java\n -rw----     2.0 fat     1499 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/retry/FailedUnregisteredTask.java\n -rw----     2.0 fat     1770 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/retry/FailedUnsubscribedTask.java\n--rw----     2.0 fat     1438 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/retry/ReExportTask.java\n+-rw----     2.0 fat     1479 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/retry/ReExportTask.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/status/\n -rw----     2.0 fat     2086 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/status/RegistryStatusChecker.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/support/\n -rw----     2.0 fat    21375 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/support/AbstractRegistry.java\n -rw----     2.0 fat     7562 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/support/AbstractRegistryFactory.java\n -rw----     2.0 fat    17966 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/support/FailbackRegistry.java\n -rw----     2.0 fat     1362 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/support/SkipFailbackWrapperException.java\n -rw----     2.0 fat       73 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.registry.client.RegistryClusterIdentifier\n -rw----     2.0 fat       84 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.registry.client.metadata.SubscribedURLsSynthesizer\n -rw----     2.0 fat       84 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.registry.client.migration.MigrationAddressComparator\n -rw----     2.0 fat       78 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.registry.client.selector.ServiceInstanceSelector\n -rw----     2.0 fat       74 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.registry.integration.RegistryProtocolListener\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-api/\n+-rw----     2.0 fat     3225 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-api/pom.xml\n+-rw----     2.0 fat       73 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-api/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/container/\n -rw----     2.0 fat     1175 bl defN 20-Apr-01 08:04 org/apache/dubbo/container/Container.java\n -rw----     2.0 fat     4373 bl defN 20-Apr-01 08:04 org/apache/dubbo/container/Main.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/assembly/\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/assembly/bin/\n+-rw----     2.0 fat     3051 bl defN 20-Apr-01 08:04 META-INF/assembly/bin/dump.sh\n+-rw----     2.0 fat      852 bl defN 20-Apr-01 08:04 META-INF/assembly/bin/restart.sh\n+-rw----     2.0 fat     1236 bl defN 20-Apr-01 08:04 META-INF/assembly/bin/server.sh\n+-rwx---     2.0 fat     2002 bl defN 20-Apr-01 08:04 META-INF/assembly/bin/start.bat\n+-rw----     2.0 fat     5381 bl defN 20-Apr-01 08:04 META-INF/assembly/bin/start.sh\n+-rw----     2.0 fat     1695 bl defN 20-Apr-01 08:04 META-INF/assembly/bin/stop.sh\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-api/\n+-rw----     2.0 fat     2327 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-api/pom.xml\n+-rw----     2.0 fat       74 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-api/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/dubbo/\n -rw----     2.0 fat     5956 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/dubbo/DubboRegistry.java\n -rw----     2.0 fat     5760 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/dubbo/DubboRegistryFactory.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-default/\n+-rw----     2.0 fat     2920 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-default/pom.xml\n+-rw----     2.0 fat       77 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-default/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/multicast/\n -rw----     2.0 fat    16724 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/multicast/MulticastRegistry.java\n -rw----     2.0 fat     1252 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/multicast/MulticastRegistryFactory.java\n--rw----     2.0 fat     1932 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/multicast/MulticastServiceDiscovery.java\n+-rw----     2.0 fat     1998 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/multicast/MulticastServiceDiscovery.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-multicast/\n+-rw----     2.0 fat     1951 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-multicast/pom.xml\n+-rw----     2.0 fat       79 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-multicast/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/\n--rw----     2.0 fat     2078 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperInstance.java\n+-rw----     2.0 fat     2155 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperInstance.java\n -rw----     2.0 fat    14879 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperRegistry.java\n -rw----     2.0 fat     1667 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperRegistryFactory.java\n--rw----     2.0 fat     8284 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscovery.java\n--rw----     2.0 fat     3183 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryChangeWatcher.java\n--rw----     2.0 fat     1241 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryFactory.java\n+-rw----     2.0 fat     8495 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscovery.java\n+-rw----     2.0 fat     3258 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryChangeWatcher.java\n+-rw----     2.0 fat     1270 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/util/\n--rw----     2.0 fat     3185 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkParams.java\n--rw----     2.0 fat     5462 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtils.java\n+-rw----     2.0 fat     3287 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkParams.java\n+-rw----     2.0 fat     5579 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtils.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/\n+-rw----     2.0 fat     2414 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/pom.xml\n+-rw----     2.0 fat       79 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/\n -rw----     2.0 fat      993 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/ChildListener.java\n--rw----     2.0 fat      975 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/DataListener.java\n--rw----     2.0 fat     2021 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/EventType.java\n--rw----     2.0 fat     1058 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/StateListener.java\n--rw----     2.0 fat     2039 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/ZookeeperClient.java\n--rw----     2.0 fat     1189 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/ZookeeperTransporter.java\n+-rw----     2.0 fat     1000 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/DataListener.java\n+-rw----     2.0 fat     2086 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/EventType.java\n+-rw----     2.0 fat     1091 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/StateListener.java\n+-rw----     2.0 fat     2106 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/ZookeeperClient.java\n+-rw----     2.0 fat     1219 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/ZookeeperTransporter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/curator/\n -rw----     2.0 fat    17076 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java\n -rw----     2.0 fat     1276 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperTransporter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/support/\n -rw----     2.0 fat     8166 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/support/AbstractZookeeperClient.java\n--rw----     2.0 fat     7040 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/support/AbstractZookeeperTransporter.java\n+-rw----     2.0 fat     7222 bl defN 20-Apr-01 08:04 org/apache/dubbo/remoting/zookeeper/support/AbstractZookeeperTransporter.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-zookeeper/\n+-rw----     2.0 fat     2518 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-zookeeper/pom.xml\n+-rw----     2.0 fat       79 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-remoting-zookeeper/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/redis/\n -rw----     2.0 fat    20135 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/redis/RedisRegistry.java\n -rw----     2.0 fat     1239 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/redis/RedisRegistryFactory.java\n--rw----     2.0 fat     1858 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/redis/RedisServiceDiscovery.java\n--rw----     2.0 fat     1230 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/redis/RedisServiceDiscoveryFactory.java\n+-rw----     2.0 fat     1922 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/redis/RedisServiceDiscovery.java\n+-rw----     2.0 fat     1260 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/redis/RedisServiceDiscoveryFactory.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-redis/\n+-rw----     2.0 fat     2534 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-redis/pom.xml\n+-rw----     2.0 fat       75 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-redis/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/consul/\n--rw----     2.0 fat     1601 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/consul/AbstractConsulRegistry.java\n--rw----     2.0 fat     2515 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/consul/ConsulParameter.java\n--rw----     2.0 fat    14467 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/consul/ConsulRegistry.java\n--rw----     2.0 fat     1233 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/consul/ConsulRegistryFactory.java\n--rw----     2.0 fat    18301 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/consul/ConsulServiceDiscovery.java\n--rw----     2.0 fat     1233 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/consul/ConsulServiceDiscoveryFactory.java\n--rw----     2.0 fat     1233 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/consul/ConsulServiceDiscoveryFactory.java~HEAD\n--rw----     2.0 fat     1233 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/consul/ConsulServiceDiscoveryFactory.java~dubbo-master\n+-rw----     2.0 fat     1640 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/consul/AbstractConsulRegistry.java\n+-rw----     2.0 fat     2602 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/consul/ConsulParameter.java\n+-rw----     2.0 fat    14847 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/consul/ConsulRegistry.java\n+-rw----     2.0 fat     1265 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/consul/ConsulRegistryFactory.java\n+-rw----     2.0 fat    18782 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/consul/ConsulServiceDiscovery.java\n+-rw----     2.0 fat     1263 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/consul/ConsulServiceDiscoveryFactory.java\n+-rw----     2.0 fat     1263 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/consul/ConsulServiceDiscoveryFactory.java~HEAD\n+-rw----     2.0 fat     1263 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/consul/ConsulServiceDiscoveryFactory.java~dubbo-master\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-consul/\n+-rw----     2.0 fat     2385 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-consul/pom.xml\n+-rw----     2.0 fat       76 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-consul/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/etcd/\n--rw----     2.0 fat    15864 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/etcd/EtcdRegistry.java\n--rw----     2.0 fat     1409 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/etcd/EtcdRegistryFactory.java\n--rw----     2.0 fat     8180 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/etcd/EtcdServiceDiscovery.java\n+-rw----     2.0 fat    16219 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/etcd/EtcdRegistry.java\n+-rw----     2.0 fat     1445 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/etcd/EtcdRegistryFactory.java\n+-rw----     2.0 fat     8386 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/etcd/EtcdServiceDiscovery.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-etcd3/\n+-rw----     2.0 fat     2245 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-etcd3/pom.xml\n+-rw----     2.0 fat       75 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-etcd3/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/eureka/\n--rw----     2.0 fat     9897 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/eureka/ConfigurableEurekaInstanceConfig.java\n--rw----     2.0 fat    11128 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/eureka/EurekaServiceDiscovery.java\n--rw----     2.0 fat      943 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/eureka/package-info.java\n+-rw----     2.0 fat    10266 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/eureka/ConfigurableEurekaInstanceConfig.java\n+-rw----     2.0 fat    11409 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/eureka/EurekaServiceDiscovery.java\n+-rw----     2.0 fat      965 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/eureka/package-info.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-eureka/\n+-rw----     2.0 fat     2934 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-eureka/pom.xml\n+-rw----     2.0 fat       76 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-eureka/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/nacos/\n--rw----     2.0 fat     3577 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/nacos/NacosNamingServiceWrapper.java\n--rw----     2.0 fat    23611 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/nacos/NacosRegistry.java\n--rw----     2.0 fat     1910 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/nacos/NacosRegistryFactory.java\n--rw----     2.0 fat     5828 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java\n--rw----     2.0 fat     1241 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/nacos/NacosServiceDiscoveryFactory.java\n--rw----     2.0 fat     6779 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/nacos/NacosServiceName.java\n+-rw----     2.0 fat     3664 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/nacos/NacosNamingServiceWrapper.java\n+-rw----     2.0 fat    24235 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/nacos/NacosRegistry.java\n+-rw----     2.0 fat     1959 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/nacos/NacosRegistryFactory.java\n+-rw----     2.0 fat     5982 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java\n+-rw----     2.0 fat     1274 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/nacos/NacosServiceDiscoveryFactory.java\n+-rw----     2.0 fat     7013 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/nacos/NacosServiceName.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/nacos/util/\n--rw----     2.0 fat     2744 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/nacos/util/NacosInstanceManageUtil.java\n--rw----     2.0 fat     8001 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/nacos/util/NacosNamingServiceUtils.java\n+-rw----     2.0 fat     2811 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/nacos/util/NacosInstanceManageUtil.java\n+-rw----     2.0 fat     8190 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/nacos/util/NacosNamingServiceUtils.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-nacos/\n+-rw----     2.0 fat     3041 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-nacos/pom.xml\n+-rw----     2.0 fat       75 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-nacos/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/sofa/\n--rw----     2.0 fat    10603 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/sofa/SofaRegistry.java\n--rw----     2.0 fat     1379 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/sofa/SofaRegistryConstants.java\n--rw----     2.0 fat     1383 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/sofa/SofaRegistryFactory.java\n--rw----     2.0 fat     2340 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/sofa/SofaRegistryInstance.java\n--rw----     2.0 fat     9905 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/sofa/SofaRegistryServiceDiscovery.java\n--rw----     2.0 fat     1241 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/sofa/SofaRegistryServiceDiscoveryFactory.java\n+-rw----     2.0 fat    10899 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/sofa/SofaRegistry.java\n+-rw----     2.0 fat     1422 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/sofa/SofaRegistryConstants.java\n+-rw----     2.0 fat     1424 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/sofa/SofaRegistryFactory.java\n+-rw----     2.0 fat     2430 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/sofa/SofaRegistryInstance.java\n+-rw----     2.0 fat    10159 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/sofa/SofaRegistryServiceDiscovery.java\n+-rw----     2.0 fat     1269 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/sofa/SofaRegistryServiceDiscoveryFactory.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/\n+-rw----     2.0 fat     4654 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/pom.xml\n+-rw----     2.0 fat       74 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/multiple/\n--rw----     2.0 fat    12406 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/multiple/MultipleRegistry.java\n--rw----     2.0 fat     1214 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/multiple/MultipleRegistryFactory.java\n--rw----     2.0 fat     7811 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/multiple/MultipleRegistryServiceDiscovery.java\n--rw----     2.0 fat     1254 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/multiple/MultipleRegistryServiceDiscoveryFactory.java\n+-rw----     2.0 fat    12743 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/multiple/MultipleRegistry.java\n+-rw----     2.0 fat     1247 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/multiple/MultipleRegistryFactory.java\n+-rw----     2.0 fat     7982 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/multiple/MultipleRegistryServiceDiscovery.java\n+-rw----     2.0 fat     1282 bl defN 20-Apr-01 08:04 org/apache/dubbo/registry/multiple/MultipleRegistryServiceDiscoveryFactory.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-multiple/\n+-rw----     2.0 fat     2814 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-multiple/pom.xml\n+-rw----     2.0 fat       78 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-registry-multiple/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/\n--rw----     2.0 fat     1290 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/Constants.java\n--rw----     2.0 fat      918 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/MetricsService.java\n+-rw----     2.0 fat     1320 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/Constants.java\n+-rw----     2.0 fat      940 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/MetricsService.java\n -rw----     2.0 fat     1100 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/Monitor.java\n -rw----     2.0 fat     1261 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/MonitorFactory.java\n -rw----     2.0 fat     3396 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/MonitorService.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/support/\n -rw----     2.0 fat     4918 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/support/AbstractMonitorFactory.java\n--rw----     2.0 fat     1120 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/support/MetricsServiceDetector.java\n+-rw----     2.0 fat     1149 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/support/MetricsServiceDetector.java\n -rw----     2.0 fat     8660 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/support/MonitorFilter.java\n--rw----     2.0 fat     1120 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/support/MonitorServiceDetector.java\n+-rw----     2.0 fat     1149 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/support/MonitorServiceDetector.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-monitor-api/\n+-rw----     2.0 fat     2346 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-monitor-api/pom.xml\n+-rw----     2.0 fat       72 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-monitor-api/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/dubbo/\n -rw----     2.0 fat     9041 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/dubbo/DubboMonitor.java\n--rw----     2.0 fat     2821 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/dubbo/DubboMonitorFactory.java\n--rw----     2.0 fat    11086 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/dubbo/MetricsFilter.java\n+-rw----     2.0 fat     2892 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/dubbo/DubboMonitorFactory.java\n+-rw----     2.0 fat    11347 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/dubbo/MetricsFilter.java\n -rw----     2.0 fat     5940 bl defN 20-Apr-01 08:04 org/apache/dubbo/monitor/dubbo/Statistics.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-monitor-default/\n+-rw----     2.0 fat     3100 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-monitor-default/pom.xml\n+-rw----     2.0 fat       76 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-monitor-default/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/container/spring/\n -rw----     2.0 fat     2450 bl defN 20-Apr-01 08:04 org/apache/dubbo/container/spring/SpringContainer.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-spring/\n+-rw----     2.0 fat     2075 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-spring/pom.xml\n+-rw----     2.0 fat       77 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-spring/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/container/log4j/\n -rw----     2.0 fat     4598 bl defN 20-Apr-01 08:04 org/apache/dubbo/container/log4j/Log4jContainer.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-log4j/\n+-rw----     2.0 fat     1947 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-log4j/pom.xml\n+-rw----     2.0 fat       76 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-log4j/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/container/logback/\n -rw----     2.0 fat     4047 bl defN 20-Apr-01 08:04 org/apache/dubbo/container/logback/LogbackContainer.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-logback/\n+-rw----     2.0 fat     2073 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-logback/pom.xml\n+-rw----     2.0 fat       78 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-container-logback/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/\n -rw----     2.0 fat     1015 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/BaseCommand.java\n -rw----     2.0 fat     2176 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/CommandContext.java\n -rw----     2.0 fat     1190 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/CommandContextFactory.java\n -rw----     2.0 fat     1192 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/CommandExecutor.java\n -rw----     2.0 fat     1565 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/DefaultCommandExecutor.java\n@@ -1470,299 +1389,355 @@\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/annotation/\n -rw----     2.0 fat     1607 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/annotation/Cmd.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/decoder/\n -rw----     2.0 fat     3987 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/decoder/HttpCommandDecoder.java\n -rw----     2.0 fat     1725 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/decoder/TelnetCommandDecoder.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/impl/\n -rw----     2.0 fat     3716 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/impl/Help.java\n--rw----     2.0 fat     3384 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/impl/Ls.java\n--rw----     2.0 fat     3330 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/impl/Offline.java\n--rw----     2.0 fat     3381 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/impl/Online.java\n--rw----     2.0 fat     2864 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/impl/PublishMetadata.java\n+-rw----     2.0 fat     3472 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/impl/Ls.java\n+-rw----     2.0 fat     3410 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/impl/Offline.java\n+-rw----     2.0 fat     3461 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/impl/Online.java\n+-rw----     2.0 fat     2927 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/impl/PublishMetadata.java\n -rw----     2.0 fat     1305 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/impl/Quit.java\n--rw----     2.0 fat     4228 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/impl/Ready.java\n--rw----     2.0 fat     1536 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/impl/Version.java\n+-rw----     2.0 fat     4323 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/impl/Ready.java\n+-rw----     2.0 fat     1573 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/impl/Version.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/util/\n--rw----     2.0 fat     2195 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/util/CommandHelper.java\n--rw----     2.0 fat     2717 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/util/ServiceCheckUtils.java\n+-rw----     2.0 fat     2259 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/util/CommandHelper.java\n+-rw----     2.0 fat     2779 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/command/util/ServiceCheckUtils.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/common/\n -rw----     2.0 fat      990 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/common/QosConstants.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/\n--rw----     2.0 fat     2832 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/ChangeTelnetHandler.java\n--rw----     2.0 fat     6757 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/CountTelnetHandler.java\n--rw----     2.0 fat     1775 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/CurrentTelnetHandler.java\n--rw----     2.0 fat    10965 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/InvokeTelnetHandler.java\n--rw----     2.0 fat     6684 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/ListTelnetHandler.java\n--rw----     2.0 fat     3964 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/LogTelnetHandler.java\n--rw----     2.0 fat     3845 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/PortTelnetHandler.java\n--rw----     2.0 fat     2775 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/SelectTelnetHandler.java\n--rw----     2.0 fat     2696 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/ShutdownTelnetHandler.java\n--rw----     2.0 fat     4027 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/TraceTelnetHandler.java\n+-rw----     2.0 fat     2897 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/ChangeTelnetHandler.java\n+-rw----     2.0 fat     6920 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/CountTelnetHandler.java\n+-rw----     2.0 fat     1821 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/CurrentTelnetHandler.java\n+-rw----     2.0 fat    11226 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/InvokeTelnetHandler.java\n+-rw----     2.0 fat     6850 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/ListTelnetHandler.java\n+-rw----     2.0 fat     4055 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/LogTelnetHandler.java\n+-rw----     2.0 fat     3941 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/PortTelnetHandler.java\n+-rw----     2.0 fat     2835 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/SelectTelnetHandler.java\n+-rw----     2.0 fat     2759 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/ShutdownTelnetHandler.java\n+-rw----     2.0 fat     4120 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/legacy/TraceTelnetHandler.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/protocol/\n--rw----     2.0 fat     4307 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/protocol/QosProtocolWrapper.java\n+-rw----     2.0 fat     4430 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/protocol/QosProtocolWrapper.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/server/\n--rw----     2.0 fat     1253 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/server/DubboLogo.java\n--rw----     2.0 fat     4554 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/server/Server.java\n+-rw----     2.0 fat     1278 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/server/DubboLogo.java\n+-rw----     2.0 fat     4710 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/server/Server.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/server/handler/\n -rw----     2.0 fat     5174 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/server/handler/HttpProcessHandler.java\n -rw----     2.0 fat     1953 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/server/handler/LocalHostPermitHandler.java\n--rw----     2.0 fat     4111 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/server/handler/QosProcessHandler.java\n--rw----     2.0 fat     1770 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/server/handler/TelnetIdleEventHandler.java\n--rw----     2.0 fat     3201 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/server/handler/TelnetProcessHandler.java\n+-rw----     2.0 fat     4222 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/server/handler/QosProcessHandler.java\n+-rw----     2.0 fat     1811 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/server/handler/TelnetIdleEventHandler.java\n+-rw----     2.0 fat     3274 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/server/handler/TelnetProcessHandler.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/textui/\n -rw----     2.0 fat      983 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/textui/TComponent.java\n -rw----     2.0 fat     2734 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/textui/TKv.java\n -rw----     2.0 fat     2269 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/textui/TLadder.java\n--rw----     2.0 fat    15617 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/textui/TTable.java\n--rw----     2.0 fat     7374 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/textui/TTree.java\n+-rw----     2.0 fat    16183 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/textui/TTable.java\n+-rw----     2.0 fat     7640 bl defN 20-Apr-01 08:04 org/apache/dubbo/qos/textui/TTree.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-qos/\n+-rw----     2.0 fat     2877 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-qos/pom.xml\n+-rw----     2.0 fat       64 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-qos/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/\n -rw----     2.0 fat     1059 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/Cleanable.java\n--rw----     2.0 fat     1444 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/Constants.java\n+-rw----     2.0 fat     1480 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/Constants.java\n -rw----     2.0 fat     2284 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/DataInput.java\n -rw----     2.0 fat     2741 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/DataOutput.java\n--rw----     2.0 fat     3412 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/ObjectInput.java\n--rw----     2.0 fat     2281 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/ObjectOutput.java\n--rw----     2.0 fat     2519 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/Serialization.java\n+-rw----     2.0 fat     3500 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/ObjectInput.java\n+-rw----     2.0 fat     2340 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/ObjectOutput.java\n+-rw----     2.0 fat     2595 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/Serialization.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/support/\n--rw----     2.0 fat     2088 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/support/SerializableClassRegistry.java\n--rw----     2.0 fat     1171 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/support/SerializationOptimizer.java\n+-rw----     2.0 fat     2149 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/support/SerializableClassRegistry.java\n+-rw----     2.0 fat     1203 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/support/SerializationOptimizer.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-api/\n+-rw----     2.0 fat     1929 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-api/pom.xml\n+-rw----     2.0 fat       78 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-api/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/fastjson/\n--rw----     2.0 fat     3363 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/fastjson/FastJsonObjectInput.java\n+-rw----     2.0 fat     3484 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/fastjson/FastJsonObjectInput.java\n -rw----     2.0 fat     3299 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/fastjson/FastJsonObjectOutput.java\n--rw----     2.0 fat     1920 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/fastjson/FastJsonSerialization.java\n+-rw----     2.0 fat     1979 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/fastjson/FastJsonSerialization.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-fastjson/\n+-rw----     2.0 fat     2056 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-fastjson/pom.xml\n+-rw----     2.0 fat       83 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-fastjson/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/fst/\n--rw----     2.0 fat     1825 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/fst/FstFactory.java\n+-rw----     2.0 fat     1878 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/fst/FstFactory.java\n -rw----     2.0 fat     3315 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/fst/FstObjectInput.java\n -rw----     2.0 fat     2922 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/fst/FstObjectOutput.java\n--rw----     2.0 fat     1875 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/fst/FstSerialization.java\n+-rw----     2.0 fat     1933 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/fst/FstSerialization.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-fst/\n+-rw----     2.0 fat     2073 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-fst/pom.xml\n+-rw----     2.0 fat       78 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-fst/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/hessian2/\n--rw----     2.0 fat     3396 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/hessian2/Hessian2ObjectInput.java\n--rw----     2.0 fat     3274 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/hessian2/Hessian2ObjectOutput.java\n--rw----     2.0 fat     1979 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/hessian2/Hessian2Serialization.java\n--rw----     2.0 fat     1159 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/hessian2/Hessian2SerializerFactory.java\n+-rw----     2.0 fat     3516 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/hessian2/Hessian2ObjectInput.java\n+-rw----     2.0 fat     3391 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/hessian2/Hessian2ObjectOutput.java\n+-rw----     2.0 fat     2038 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/hessian2/Hessian2Serialization.java\n+-rw----     2.0 fat     1189 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/hessian2/Hessian2SerializerFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/hessian2/dubbo/\n--rw----     2.0 fat     1448 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/hessian2/dubbo/AbstractHessian2FactoryInitializer.java\n--rw----     2.0 fat     1222 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/hessian2/dubbo/DefaultHessian2FactoryInitializer.java\n--rw----     2.0 fat     1833 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/hessian2/dubbo/Hessian2FactoryInitializer.java\n--rw----     2.0 fat     2194 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/hessian2/dubbo/WhitelistHessian2FactoryInitializer.java\n--rw----     2.0 fat      185 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.serialize.hessian2.dubbo.Hessian2FactoryInitializer\n+-rw----     2.0 fat     1484 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/hessian2/dubbo/AbstractHessian2FactoryInitializer.java\n+-rw----     2.0 fat     1250 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/hessian2/dubbo/DefaultHessian2FactoryInitializer.java\n+-rw----     2.0 fat     1876 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/hessian2/dubbo/Hessian2FactoryInitializer.java\n+-rw----     2.0 fat     2244 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/hessian2/dubbo/WhitelistHessian2FactoryInitializer.java\n+-rw----     2.0 fat      186 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.serialize.hessian2.dubbo.Hessian2FactoryInitializer\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-hessian2/\n+-rw----     2.0 fat     2060 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-hessian2/pom.xml\n+-rw----     2.0 fat       83 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-hessian2/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/\n--rw----     2.0 fat     2692 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/Hessian2ObjectInput.java\n--rw----     2.0 fat     2635 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/Hessian2ObjectOutput.java\n--rw----     2.0 fat     1799 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/Hessian2Serialization.java\n--rw----     2.0 fat     1801 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/Hessian2SerializerFactory.java\n--rw----     2.0 fat     4559 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/Java8SerializerFactory.java\n+-rw----     2.0 fat     2790 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/Hessian2ObjectInput.java\n+-rw----     2.0 fat     2730 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/Hessian2ObjectOutput.java\n+-rw----     2.0 fat     1852 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/Hessian2Serialization.java\n+-rw----     2.0 fat     1843 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/Hessian2SerializerFactory.java\n+-rw----     2.0 fat     4647 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/Java8SerializerFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/\n--rw----     2.0 fat     1658 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/DurationHandle.java\n--rw----     2.0 fat     1657 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/InstantHandle.java\n--rw----     2.0 fat     1960 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/Java8TimeSerializer.java\n--rw----     2.0 fat     1727 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/LocalDateHandle.java\n--rw----     2.0 fat     1750 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/LocalDateTimeHandle.java\n--rw----     2.0 fat     1807 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/LocalTimeHandle.java\n--rw----     2.0 fat     1646 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/MonthDayHandle.java\n--rw----     2.0 fat     1801 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/OffsetDateTimeHandle.java\n--rw----     2.0 fat     1764 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/OffsetTimeHandle.java\n--rw----     2.0 fat     1697 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/PeriodHandle.java\n--rw----     2.0 fat     1523 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/YearHandle.java\n--rw----     2.0 fat     1654 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/YearMonthHandle.java\n--rw----     2.0 fat     1557 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/ZoneIdHandle.java\n--rw----     2.0 fat     1468 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/ZoneIdSerializer.java\n--rw----     2.0 fat     1609 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/ZoneOffsetHandle.java\n--rw----     2.0 fat     2009 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/ZonedDateTimeHandle.java\n+-rw----     2.0 fat     1711 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/DurationHandle.java\n+-rw----     2.0 fat     1711 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/InstantHandle.java\n+-rw----     2.0 fat     2017 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/Java8TimeSerializer.java\n+-rw----     2.0 fat     1782 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/LocalDateHandle.java\n+-rw----     2.0 fat     1805 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/LocalDateTimeHandle.java\n+-rw----     2.0 fat     1864 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/LocalTimeHandle.java\n+-rw----     2.0 fat     1699 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/MonthDayHandle.java\n+-rw----     2.0 fat     1856 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/OffsetDateTimeHandle.java\n+-rw----     2.0 fat     1819 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/OffsetTimeHandle.java\n+-rw----     2.0 fat     1753 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/PeriodHandle.java\n+-rw----     2.0 fat     1575 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/YearHandle.java\n+-rw----     2.0 fat     1707 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/YearMonthHandle.java\n+-rw----     2.0 fat     1609 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/ZoneIdHandle.java\n+-rw----     2.0 fat     1511 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/ZoneIdSerializer.java\n+-rw----     2.0 fat     1660 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/ZoneOffsetHandle.java\n+-rw----     2.0 fat     2071 bl defN 20-Apr-01 08:04 org/apache/dubbo/serialize/hessian/serializer/java8/ZonedDateTimeHandle.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-native-hession/\n+-rw----     2.0 fat     1986 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-native-hession/pom.xml\n+-rw----     2.0 fat       89 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-native-hession/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/java/\n--rw----     2.0 fat     1954 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/java/CompactedJavaSerialization.java\n--rw----     2.0 fat     2305 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/java/CompactedObjectInputStream.java\n+-rw----     2.0 fat     2013 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/java/CompactedJavaSerialization.java\n+-rw----     2.0 fat     2368 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/java/CompactedObjectInputStream.java\n -rw----     2.0 fat     1607 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/java/CompactedObjectOutputStream.java\n -rw----     2.0 fat     2948 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/java/JavaObjectInput.java\n -rw----     2.0 fat     2177 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/java/JavaObjectOutput.java\n--rw----     2.0 fat     1885 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/java/JavaSerialization.java\n+-rw----     2.0 fat     1944 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/java/JavaSerialization.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/nativejava/\n -rw----     2.0 fat     3454 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/nativejava/NativeJavaObjectInput.java\n -rw----     2.0 fat     3310 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/nativejava/NativeJavaObjectOutput.java\n--rw----     2.0 fat     1955 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/nativejava/NativeJavaSerialization.java\n+-rw----     2.0 fat     2015 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/nativejava/NativeJavaSerialization.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-jdk/\n+-rw----     2.0 fat     2050 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-jdk/pom.xml\n+-rw----     2.0 fat       78 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-jdk/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/\n--rw----     2.0 fat     2639 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/CompatibleKryo.java\n+-rw----     2.0 fat     2693 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/CompatibleKryo.java\n -rw----     2.0 fat     4598 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/KryoObjectInput.java\n -rw----     2.0 fat     3306 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/KryoObjectOutput.java\n--rw----     2.0 fat     1951 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/KryoSerialization.java\n+-rw----     2.0 fat     2009 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/KryoSerialization.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/optimized/\n--rw----     2.0 fat     4791 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/optimized/KryoObjectInput2.java\n--rw----     2.0 fat     3293 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/optimized/KryoObjectOutput2.java\n--rw----     2.0 fat     1945 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/optimized/KryoSerialization2.java\n+-rw----     2.0 fat     4959 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/optimized/KryoObjectInput2.java\n+-rw----     2.0 fat     3415 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/optimized/KryoObjectOutput2.java\n+-rw----     2.0 fat     2002 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/optimized/KryoSerialization2.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/utils/\n--rw----     2.0 fat     5810 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/utils/AbstractKryoFactory.java\n+-rw----     2.0 fat     5968 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/utils/AbstractKryoFactory.java\n -rw----     2.0 fat     1527 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/utils/KryoUtils.java\n -rw----     2.0 fat     1413 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/utils/PooledKryoFactory.java\n--rw----     2.0 fat     1120 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/utils/PrototypeKryoFactory.java\n--rw----     2.0 fat     1302 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/utils/ThreadLocalKryoFactory.java\n+-rw----     2.0 fat     1152 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/utils/PrototypeKryoFactory.java\n+-rw----     2.0 fat     1341 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/kryo/utils/ThreadLocalKryoFactory.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/\n+-rw----     2.0 fat     2175 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/pom.xml\n+-rw----     2.0 fat       79 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/avro/\n -rw----     2.0 fat     3732 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/avro/AvroObjectInput.java\n -rw----     2.0 fat     3279 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/avro/AvroObjectOutput.java\n -rw----     2.0 fat     1817 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/avro/AvroSerialization.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-avro/\n+-rw----     2.0 fat     2073 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-avro/pom.xml\n+-rw----     2.0 fat       79 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-avro/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protostuff/\n -rw----     2.0 fat     4237 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protostuff/ProtostuffObjectInput.java\n--rw----     2.0 fat     3890 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protostuff/ProtostuffObjectOutput.java\n--rw----     2.0 fat     1950 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protostuff/ProtostuffSerialization.java\n+-rw----     2.0 fat     4020 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protostuff/ProtostuffObjectOutput.java\n+-rw----     2.0 fat     2008 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protostuff/ProtostuffSerialization.java\n -rw----     2.0 fat     1153 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protostuff/Wrapper.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protostuff/delegate/\n--rw----     2.0 fat     1918 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protostuff/delegate/SqlDateDelegate.java\n+-rw----     2.0 fat     1973 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protostuff/delegate/SqlDateDelegate.java\n -rw----     2.0 fat     1939 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protostuff/delegate/TimeDelegate.java\n--rw----     2.0 fat     1912 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protostuff/delegate/TimestampDelegate.java\n+-rw----     2.0 fat     1969 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protostuff/delegate/TimestampDelegate.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protostuff/utils/\n--rw----     2.0 fat     3838 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protostuff/utils/WrapperUtils.java\n+-rw----     2.0 fat     3953 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protostuff/utils/WrapperUtils.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-protostuff/\n+-rw----     2.0 fat     2289 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-protostuff/pom.xml\n+-rw----     2.0 fat       85 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-protostuff/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/gson/\n--rw----     2.0 fat     3417 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/gson/GsonJsonObjectInput.java\n--rw----     2.0 fat     2872 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/gson/GsonJsonObjectOutput.java\n--rw----     2.0 fat     1772 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/gson/GsonSerialization.java\n+-rw----     2.0 fat     3538 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/gson/GsonJsonObjectInput.java\n+-rw----     2.0 fat     2980 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/gson/GsonJsonObjectOutput.java\n+-rw----     2.0 fat     1825 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/gson/GsonSerialization.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-gson/\n+-rw----     2.0 fat     2072 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-gson/pom.xml\n+-rw----     2.0 fat       79 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-gson/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/\n--rw----     2.0 fat     5367 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonObjectInput.java\n--rw----     2.0 fat     5344 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonObjectOutput.java\n--rw----     2.0 fat     1918 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonSerialization.java\n--rw----     2.0 fat     4776 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufObjectInput.java\n--rw----     2.0 fat     5377 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufObjectOutput.java\n--rw----     2.0 fat     2439 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufSerialization.java\n--rw----     2.0 fat     8140 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/ProtobufUtils.java\n--rw----     2.0 fat     2577 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/ProtobufWrappedException.java\n+-rw----     2.0 fat     5531 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonObjectInput.java\n+-rw----     2.0 fat     5504 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonObjectOutput.java\n+-rw----     2.0 fat     1972 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonSerialization.java\n+-rw----     2.0 fat     4922 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufObjectInput.java\n+-rw----     2.0 fat     5533 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufObjectOutput.java\n+-rw----     2.0 fat     2502 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufSerialization.java\n+-rw----     2.0 fat     8345 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/ProtobufUtils.java\n+-rw----     2.0 fat     2645 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/ProtobufWrappedException.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/wrapper/\n -rw----     2.0 fat    31696 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/wrapper/MapValue.java\n--rw----     2.0 fat   102165 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/wrapper/ThrowablePB.java\n+-rw----     2.0 fat   102349 bl defN 20-Apr-01 08:04 org/apache/dubbo/common/serialize/protobuf/support/wrapper/ThrowablePB.java\n+-rw----     2.0 fat     1166 bl defN 20-Apr-01 08:04 MapValue.proto\n+-rw----     2.0 fat     2845 bl defN 20-Apr-01 08:04 ThrowablePB.proto\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/\n+-rw----     2.0 fat     3751 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/pom.xml\n+-rw----     2.0 fat       83 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/zookeeper/\n--rw----     2.0 fat     5114 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/zookeeper/CacheListener.java\n--rw----     2.0 fat     4189 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java\n--rw----     2.0 fat     1609 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfigurationFactory.java\n+-rw----     2.0 fat     5248 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/zookeeper/CacheListener.java\n+-rw----     2.0 fat     4305 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java\n+-rw----     2.0 fat     1648 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfigurationFactory.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-zookeeper/\n+-rw----     2.0 fat     2213 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-zookeeper/pom.xml\n+-rw----     2.0 fat       83 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-zookeeper/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/apollo/\n--rw----     2.0 fat    11818 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfiguration.java\n--rw----     2.0 fat     1306 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfigurationFactory.java\n+-rw----     2.0 fat    12076 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfiguration.java\n+-rw----     2.0 fat     1337 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfigurationFactory.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-apollo/\n+-rw----     2.0 fat     2369 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-apollo/pom.xml\n+-rw----     2.0 fat       80 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-apollo/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/nacos/\n--rw----     2.0 fat     2563 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/nacos/NacosConfigServiceWrapper.java\n--rw----     2.0 fat    13610 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java\n--rw----     2.0 fat     1789 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfigurationFactory.java\n+-rw----     2.0 fat     2628 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/nacos/NacosConfigServiceWrapper.java\n+-rw----     2.0 fat    13976 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java\n+-rw----     2.0 fat     1830 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfigurationFactory.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-nacos/\n+-rw----     2.0 fat     2024 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-nacos/pom.xml\n+-rw----     2.0 fat       79 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-nacos/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/consul/\n--rw----     2.0 fat     6887 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/consul/ConsulDynamicConfiguration.java\n--rw----     2.0 fat     1332 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/consul/ConsulDynamicConfigurationFactory.java\n+-rw----     2.0 fat     7068 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/consul/ConsulDynamicConfiguration.java\n+-rw----     2.0 fat     1364 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/consul/ConsulDynamicConfigurationFactory.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-consul/\n+-rw----     2.0 fat     2038 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-consul/pom.xml\n+-rw----     2.0 fat       80 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-consul/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/etcd/\n--rw----     2.0 fat     7055 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfiguration.java\n--rw----     2.0 fat     1373 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfigurationFactory.java\n+-rw----     2.0 fat     7252 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfiguration.java\n+-rw----     2.0 fat     1406 bl defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfigurationFactory.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/\n+-rw----     2.0 fat     2698 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/pom.xml\n+-rw----     2.0 fat       78 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/cache/\n -rw----     2.0 fat      935 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/cache/Cache.java\n -rw----     2.0 fat     1086 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/cache/CacheFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/cache/support/\n--rw----     2.0 fat     2022 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/cache/support/AbstractCacheFactory.java\n--rw----     2.0 fat     1848 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/Constants.java\n+-rw----     2.0 fat     2075 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/cache/support/AbstractCacheFactory.java\n+-rw----     2.0 fat     1891 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/Constants.java\n -rw----     2.0 fat    19429 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/URL.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/compiler/\n -rw----     2.0 fat      961 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/compiler/Compiler.java\n--rw----     2.0 fat     1009 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/extension/ExtensionFactory.java\n+-rw----     2.0 fat     1034 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/extension/ExtensionFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/logger/\n -rw----     2.0 fat      967 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/logger/LoggerAdapter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/serialize/\n -rw----     2.0 fat      969 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/serialize/ObjectInput.java\n -rw----     2.0 fat      971 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/serialize/ObjectOutput.java\n -rw----     2.0 fat     1708 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/serialize/Serialization.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/status/\n -rw----     2.0 fat     1230 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/status/Status.java\n -rw----     2.0 fat     1005 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/status/StatusChecker.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/store/\n -rw----     2.0 fat      957 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/store/DataStore.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/threadpool/\n -rw----     2.0 fat     1249 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/threadpool/ThreadPool.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/utils/\n--rw----     2.0 fat     4597 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/utils/UrlUtils.java\n+-rw----     2.0 fat     4707 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/common/utils/UrlUtils.java\n -rw----     2.0 fat     1094 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/ApplicationConfig.java\n -rw----     2.0 fat      951 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/ArgumentConfig.java\n -rw----     2.0 fat      951 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/ConsumerConfig.java\n -rw----     2.0 fat      949 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/MethodConfig.java\n -rw----     2.0 fat     1056 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/ModuleConfig.java\n -rw----     2.0 fat     1064 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/MonitorConfig.java\n -rw----     2.0 fat     1153 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/ProtocolConfig.java\n -rw----     2.0 fat      951 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/ProviderConfig.java\n--rw----     2.0 fat     1114 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/ReferenceConfig.java\n+-rw----     2.0 fat     1147 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/ReferenceConfig.java\n -rw----     2.0 fat     1176 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/RegistryConfig.java\n -rw----     2.0 fat     1127 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/ServiceConfig.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/spring/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/spring/context/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/spring/context/annotation/\n--rw----     2.0 fat     2739 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/spring/context/annotation/EnableDubbo.java\n+-rw----     2.0 fat     2813 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/config/spring/context/annotation/EnableDubbo.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/container/\n -rw----     2.0 fat      951 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/container/Container.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/monitor/\n -rw----     2.0 fat     1599 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/monitor/Monitor.java\n -rw----     2.0 fat     1238 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/monitor/MonitorFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/qos/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/qos/command/\n -rw----     2.0 fat     1315 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/qos/command/BaseCommand.java\n -rw----     2.0 fat     1446 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/qos/command/CommandContext.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/registry/\n--rw----     2.0 fat     2052 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/registry/NotifyListener.java\n+-rw----     2.0 fat     2113 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/registry/NotifyListener.java\n -rw----     2.0 fat     2556 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/registry/Registry.java\n -rw----     2.0 fat     1249 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/registry/RegistryFactory.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/registry/support/\n--rw----     2.0 fat     6220 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/registry/support/AbstractRegistry.java\n--rw----     2.0 fat     1328 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/registry/support/AbstractRegistryFactory.java\n--rw----     2.0 fat     7051 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/registry/support/FailbackRegistry.java\n+-rw----     2.0 fat     6367 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/registry/support/AbstractRegistry.java\n+-rw----     2.0 fat     1363 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/registry/support/AbstractRegistryFactory.java\n+-rw----     2.0 fat     7240 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/registry/support/FailbackRegistry.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/\n -rw----     2.0 fat     1091 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/Channel.java\n -rw----     2.0 fat     2236 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/ChannelHandler.java\n -rw----     2.0 fat      941 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/Codec.java\n -rw----     2.0 fat      943 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/Codec2.java\n -rw----     2.0 fat     1358 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/Dispatcher.java\n--rw----     2.0 fat     1971 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/RemotingException.java\n--rw----     2.0 fat      952 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/Server.java\n--rw----     2.0 fat     3239 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/Transporter.java\n+-rw----     2.0 fat     2025 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/RemotingException.java\n+-rw----     2.0 fat      975 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/Server.java\n+-rw----     2.0 fat     3321 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/Transporter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/exchange/\n -rw----     2.0 fat      967 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/exchange/Exchanger.java\n--rw----     2.0 fat     1124 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/exchange/ResponseCallback.java\n--rw----     2.0 fat     1489 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/exchange/ResponseFuture.java\n+-rw----     2.0 fat     1163 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/exchange/ResponseCallback.java\n+-rw----     2.0 fat     1545 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/exchange/ResponseFuture.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/http/\n -rw----     2.0 fat      961 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/http/HttpBinder.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/p2p/\n -rw----     2.0 fat      957 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/p2p/Networker.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/telnet/\n -rw----     2.0 fat     1336 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/telnet/TelnetHandler.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/zookeeper/\n -rw----     2.0 fat      991 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/remoting/zookeeper/ZookeeperTransporter.java\n -rw----     2.0 fat     1501 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/Exporter.java\n -rw----     2.0 fat     1501 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/Filter.java\n--rw----     2.0 fat     4597 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/Invocation.java\n--rw----     2.0 fat     2355 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/Invoker.java\n+-rw----     2.0 fat     4777 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/Invocation.java\n+-rw----     2.0 fat     2433 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/Invoker.java\n -rw----     2.0 fat     1549 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/InvokerListener.java\n--rw----     2.0 fat     1709 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/Protocol.java\n+-rw----     2.0 fat     1757 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/Protocol.java\n -rw----     2.0 fat     2044 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/ProxyFactory.java\n--rw----     2.0 fat     4798 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/Result.java\n--rw----     2.0 fat    11253 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/RpcContext.java\n+-rw----     2.0 fat     4974 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/Result.java\n+-rw----     2.0 fat    11649 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/RpcContext.java\n -rw----     2.0 fat     1625 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/RpcException.java\n--rw----     2.0 fat     7245 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/RpcInvocation.java\n+-rw----     2.0 fat     7453 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/RpcInvocation.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/cluster/\n -rw----     2.0 fat     1364 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/cluster/Cluster.java\n -rw----     2.0 fat      973 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/cluster/ConfiguratorFactory.java\n--rw----     2.0 fat     1668 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/cluster/Directory.java\n+-rw----     2.0 fat     1710 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/cluster/Directory.java\n -rw----     2.0 fat     1999 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/cluster/LoadBalance.java\n -rw----     2.0 fat      949 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/cluster/Merger.java\n -rw----     2.0 fat     2706 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/cluster/Router.java\n -rw----     2.0 fat     1242 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/cluster/RouterFactory.java\n -rw----     2.0 fat     1439 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/cluster/RuleConverter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/cluster/loadbalance/\n -rw----     2.0 fat     1004 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/cluster/loadbalance/AbstractLoadBalance.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/protocol/dubbo/\n--rw----     2.0 fat     5111 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/protocol/dubbo/FutureAdapter.java\n+-rw----     2.0 fat     5267 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/protocol/dubbo/FutureAdapter.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/protocol/rest/\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/protocol/rest/support/\n -rw----     2.0 fat      983 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/protocol/rest/support/ContentType.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/protocol/thrift/\n -rw----     2.0 fat      989 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/protocol/thrift/ClassNameGenerator.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/support/\n--rw----     2.0 fat     2817 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/support/RpcUtils.java\n+-rw----     2.0 fat     2895 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/rpc/support/RpcUtils.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/validation/\n -rw----     2.0 fat      955 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/validation/Validation.java\n -rw----     2.0 fat      953 bl defN 20-Apr-01 08:04 com/alibaba/dubbo/validation/Validator.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-compatible/\n+-rw----     2.0 fat     4295 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-compatible/pom.xml\n+-rw----     2.0 fat       71 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-compatible/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Jun-29 02:13 com/alibaba/com/\n -rw----     2.0 fat        0 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/\n -rw----     2.0 fat        0 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/\n -rw----     2.0 fat        0 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/util/\n -rw----     2.0 fat     6871 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/util/IdentityIntMap.java\n -rw----     2.0 fat        0 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/\n -rw----     2.0 fat        0 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/java8/\n@@ -1822,14 +1797,17 @@\n -rw----     2.0 fat     1775 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/java8/YearHandle.java\n -rw----     2.0 fat     3091 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/EnumerationSerializer.java\n -rw----     2.0 fat     3138 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/HessianEnvelope.java\n -rw----     2.0 fat    24850 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/JavaDeserializer.java\n -rw----     2.0 fat     3321 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/ValueDeserializer.java\n -rw----     2.0 fat     3052 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/IteratorSerializer.java\n -rw----     2.0 fat     2889 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/LocaleSerializer.java\n+-rw----     2.0 fat        0 bl defN 20-Jun-29 18:14 META-INF/maven/com.alibaba/\n+-rw----     2.0 fat        0 bl defN 20-Jun-29 18:14 META-INF/maven/com.alibaba/hessian-lite/\n+-rw----     2.0 fat      108 bl defN 20-Jun-29 18:14 META-INF/maven/com.alibaba/hessian-lite/pom.properties\n -rw----     2.0 fat     2985 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/AbstractSerializerFactory.java\n -rw----     2.0 fat     2009 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/java8/LocalDateTimeHandle.java\n -rw----     2.0 fat     1941 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/java8/YearMonthHandle.java\n -rw----     2.0 fat     3813 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/Deserializer.java\n -rw----     2.0 fat     3426 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/ObjectDeserializer.java\n -rw----     2.0 fat     8967 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/BasicSerializer.java\n -rw----     2.0 fat     2670 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/AbstractSerializer.java\n@@ -1859,155 +1837,177 @@\n -rw----     2.0 fat    90150 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/Hessian2Input.java\n -rw----     2.0 fat     4987 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/ArrayDeserializer.java\n -rw----     2.0 fat     4735 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/HessianDebugOutputStream.java\n -rw----     2.0 fat     2885 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/HessianFieldException.java\n -rw----     2.0 fat     2472 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/Serializer.java\n -rw----     2.0 fat     3211 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/CalendarHandle.java\n -rw----     2.0 fat     3031 bl defN 20-Jun-29 02:13 com/alibaba/com/caucho/hessian/io/HessianServiceException.java\n+-rw----     2.0 fat     9689 bl defN 20-Jun-29 02:13 META-INF/maven/com.alibaba/hessian-lite/pom.xml\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/\n--rw----     2.0 fat     2647 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/DefaultMetadataParamsFilter.java\n--rw----     2.0 fat     4111 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/DynamicConfigurationServiceNameMapping.java\n--rw----     2.0 fat     1266 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/MappingChangedEvent.java\n--rw----     2.0 fat      920 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/MappingListener.java\n--rw----     2.0 fat     1244 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/MetadataChangeListener.java\n--rw----     2.0 fat     1583 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/MetadataConstants.java\n--rw----     2.0 fat    14972 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/MetadataInfo.java\n--rw----     2.0 fat     1213 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/MetadataParamsFilter.java\n--rw----     2.0 fat    10777 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/MetadataService.java\n--rw----     2.0 fat     3084 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/MetadataServiceExporter.java\n--rw----     2.0 fat     2236 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/MetadataServiceType.java\n--rw----     2.0 fat     2049 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/RevisionResolver.java\n--rw----     2.0 fat     2905 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/ServiceNameMapping.java\n--rw----     2.0 fat     2647 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/WritableMetadataService.java\n+-rw----     2.0 fat     2702 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/DefaultMetadataParamsFilter.java\n+-rw----     2.0 fat     4214 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/DynamicConfigurationServiceNameMapping.java\n+-rw----     2.0 fat     1307 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/MappingChangedEvent.java\n+-rw----     2.0 fat      941 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/MappingListener.java\n+-rw----     2.0 fat     1279 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/MetadataChangeListener.java\n+-rw----     2.0 fat     1613 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/MetadataConstants.java\n+-rw----     2.0 fat    15421 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/MetadataInfo.java\n+-rw----     2.0 fat     1250 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/MetadataParamsFilter.java\n+-rw----     2.0 fat    11050 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/MetadataService.java\n+-rw----     2.0 fat     3184 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/MetadataServiceExporter.java\n+-rw----     2.0 fat     2308 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/MetadataServiceType.java\n+-rw----     2.0 fat     2108 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/RevisionResolver.java\n+-rw----     2.0 fat     2977 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/ServiceNameMapping.java\n+-rw----     2.0 fat     2734 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/WritableMetadataService.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/\n--rw----     2.0 fat     2624 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/MethodDefinitionBuilder.java\n--rw----     2.0 fat     3861 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/ServiceDefinitionBuilder.java\n--rw----     2.0 fat     3314 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/TypeDefinitionBuilder.java\n+-rw----     2.0 fat     2702 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/MethodDefinitionBuilder.java\n+-rw----     2.0 fat     3968 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/ServiceDefinitionBuilder.java\n+-rw----     2.0 fat     3402 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/TypeDefinitionBuilder.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/builder/\n--rw----     2.0 fat     1723 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/builder/ArrayTypeBuilder.java\n--rw----     2.0 fat     2765 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/builder/CollectionTypeBuilder.java\n--rw----     2.0 fat     2488 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/builder/DefaultTypeBuilder.java\n--rw----     2.0 fat     1947 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/builder/EnumTypeBuilder.java\n--rw----     2.0 fat     3137 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/builder/MapTypeBuilder.java\n--rw----     2.0 fat     1443 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/builder/TypeBuilder.java\n+-rw----     2.0 fat     1771 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/builder/ArrayTypeBuilder.java\n+-rw----     2.0 fat     2835 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/builder/CollectionTypeBuilder.java\n+-rw----     2.0 fat     2558 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/builder/DefaultTypeBuilder.java\n+-rw----     2.0 fat     2005 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/builder/EnumTypeBuilder.java\n+-rw----     2.0 fat     3217 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/builder/MapTypeBuilder.java\n+-rw----     2.0 fat     1485 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/builder/TypeBuilder.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/model/\n--rw----     2.0 fat     1383 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/model/FullServiceDefinition.java\n--rw----     2.0 fat     3145 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/model/MethodDefinition.java\n--rw----     2.0 fat     3015 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/model/ServiceDefinition.java\n--rw----     2.0 fat     5307 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/model/TypeDefinition.java\n+-rw----     2.0 fat     1426 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/model/FullServiceDefinition.java\n+-rw----     2.0 fat     3245 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/model/MethodDefinition.java\n+-rw----     2.0 fat     3116 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/model/ServiceDefinition.java\n+-rw----     2.0 fat     5496 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/model/TypeDefinition.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/util/\n--rw----     2.0 fat     3495 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/util/ClassUtils.java\n--rw----     2.0 fat     3303 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/util/JaketConfigurationUtils.java\n+-rw----     2.0 fat     3606 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/util/ClassUtils.java\n+-rw----     2.0 fat     3405 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/definition/util/JaketConfigurationUtils.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/\n--rw----     2.0 fat     2918 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/MetadataReport.java\n--rw----     2.0 fat     1120 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/MetadataReportFactory.java\n--rw----     2.0 fat     3594 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/MetadataReportInstance.java\n+-rw----     2.0 fat     2995 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/MetadataReport.java\n+-rw----     2.0 fat     1150 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/MetadataReportFactory.java\n+-rw----     2.0 fat     3680 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/MetadataReportInstance.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/identifier/\n--rw----     2.0 fat     2269 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/identifier/BaseApplicationMetadataIdentifier.java\n--rw----     2.0 fat      980 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/identifier/BaseMetadataIdentifier.java\n--rw----     2.0 fat     3170 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/identifier/BaseServiceMetadataIdentifier.java\n--rw----     2.0 fat     2077 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/identifier/KeyTypeEnum.java\n--rw----     2.0 fat     3194 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/identifier/MetadataIdentifier.java\n--rw----     2.0 fat     3134 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/identifier/ServiceMetadataIdentifier.java\n--rw----     2.0 fat     2161 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/identifier/SubscriberMetadataIdentifier.java\n+-rw----     2.0 fat     2332 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/identifier/BaseApplicationMetadataIdentifier.java\n+-rw----     2.0 fat     1005 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/identifier/BaseMetadataIdentifier.java\n+-rw----     2.0 fat     3258 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/identifier/BaseServiceMetadataIdentifier.java\n+-rw----     2.0 fat     2139 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/identifier/KeyTypeEnum.java\n+-rw----     2.0 fat     3299 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/identifier/MetadataIdentifier.java\n+-rw----     2.0 fat     3219 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/identifier/ServiceMetadataIdentifier.java\n+-rw----     2.0 fat     2231 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/identifier/SubscriberMetadataIdentifier.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/support/\n--rw----     2.0 fat    20351 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/support/AbstractMetadataReport.java\n--rw----     2.0 fat     2627 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/support/AbstractMetadataReportFactory.java\n--rw----     2.0 fat     1286 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/support/Constants.java\n+-rw----     2.0 fat    20819 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/support/AbstractMetadataReport.java\n+-rw----     2.0 fat     2689 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/support/AbstractMetadataReportFactory.java\n+-rw----     2.0 fat     1322 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/report/support/Constants.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/\n--rw----     2.0 fat     2415 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/AbstractAnnotatedMethodParameterProcessor.java\n--rw----     2.0 fat    15751 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/AbstractServiceRestMetadataResolver.java\n--rw----     2.0 fat     2501 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/AnnotatedMethodParameterProcessor.java\n--rw----     2.0 fat     3335 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/ClassPathServiceRestMetadataReader.java\n--rw----     2.0 fat     1987 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/DefaultServiceRestMetadataResolver.java\n--rw----     2.0 fat     7024 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/RequestMetadata.java\n--rw----     2.0 fat     4619 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/RestMetadataConstants.java\n--rw----     2.0 fat     6158 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/RestMethodMetadata.java\n--rw----     2.0 fat     3195 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/ServiceRestMetadata.java\n--rw----     2.0 fat     1217 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/ServiceRestMetadataReader.java\n--rw----     2.0 fat     1596 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/ServiceRestMetadataResolver.java\n+-rw----     2.0 fat     2466 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/AbstractAnnotatedMethodParameterProcessor.java\n+-rw----     2.0 fat    16094 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/AbstractServiceRestMetadataResolver.java\n+-rw----     2.0 fat     2567 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/AnnotatedMethodParameterProcessor.java\n+-rw----     2.0 fat     3417 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/ClassPathServiceRestMetadataReader.java\n+-rw----     2.0 fat     2046 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/DefaultServiceRestMetadataResolver.java\n+-rw----     2.0 fat     7250 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/RequestMetadata.java\n+-rw----     2.0 fat     4764 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/RestMetadataConstants.java\n+-rw----     2.0 fat     6357 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/RestMethodMetadata.java\n+-rw----     2.0 fat     3302 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/ServiceRestMetadata.java\n+-rw----     2.0 fat     1256 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/ServiceRestMetadataReader.java\n+-rw----     2.0 fat     1639 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/ServiceRestMetadataResolver.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/jaxrs/\n--rw----     2.0 fat     2887 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/jaxrs/DefaultValueParameterProcessor.java\n--rw----     2.0 fat     1344 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/jaxrs/FormParamParameterProcessor.java\n--rw----     2.0 fat     2162 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/jaxrs/HeaderParamParameterProcessor.java\n--rw----     2.0 fat     4582 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/jaxrs/JAXRSServiceRestMetadataResolver.java\n--rw----     2.0 fat     1352 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/jaxrs/MatrixParamParameterProcessor.java\n--rw----     2.0 fat     1758 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/jaxrs/ParamAnnotationParameterProcessor.java\n--rw----     2.0 fat     1348 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/jaxrs/QueryParamParameterProcessor.java\n+-rw----     2.0 fat     2961 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/jaxrs/DefaultValueParameterProcessor.java\n+-rw----     2.0 fat     1378 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/jaxrs/FormParamParameterProcessor.java\n+-rw----     2.0 fat     2211 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/jaxrs/HeaderParamParameterProcessor.java\n+-rw----     2.0 fat     4681 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/jaxrs/JAXRSServiceRestMetadataResolver.java\n+-rw----     2.0 fat     1386 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/jaxrs/MatrixParamParameterProcessor.java\n+-rw----     2.0 fat     1796 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/jaxrs/ParamAnnotationParameterProcessor.java\n+-rw----     2.0 fat     1382 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/jaxrs/QueryParamParameterProcessor.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/springmvc/\n--rw----     2.0 fat     2864 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/springmvc/AbstractRequestAnnotationParameterProcessor.java\n--rw----     2.0 fat     1797 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/springmvc/RequestHeaderParameterProcessor.java\n--rw----     2.0 fat     1792 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/springmvc/RequestParamParameterProcessor.java\n--rw----     2.0 fat     6256 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/springmvc/SpringMvcServiceRestMetadataResolver.java\n+-rw----     2.0 fat     2935 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/springmvc/AbstractRequestAnnotationParameterProcessor.java\n+-rw----     2.0 fat     1840 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/springmvc/RequestHeaderParameterProcessor.java\n+-rw----     2.0 fat     1835 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/springmvc/RequestParamParameterProcessor.java\n+-rw----     2.0 fat     6397 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/rest/springmvc/SpringMvcServiceRestMetadataResolver.java\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/\n--rw----     2.0 fat     4202 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/AbstractAbstractWritableMetadataService.java\n+-rw----     2.0 fat     4302 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/AbstractAbstractWritableMetadataService.java\n -rw----     2.0 fat       61 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.metadata.MetadataParamsFilter\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-api/\n+-rw----     2.0 fat     2977 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-api/pom.xml\n+-rw----     2.0 fat       73 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-api/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/zookeeper/\n--rw----     2.0 fat     7419 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java\n--rw----     2.0 fat     1571 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportFactory.java\n+-rw----     2.0 fat     7607 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java\n+-rw----     2.0 fat     1611 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportFactory.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-zookeeper/\n+-rw----     2.0 fat     2102 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-zookeeper/pom.xml\n+-rw----     2.0 fat       86 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-zookeeper/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/redis/\n--rw----     2.0 fat     9321 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java\n--rw----     2.0 fat     1269 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/redis/RedisMetadataReportFactory.java\n+-rw----     2.0 fat     9531 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java\n+-rw----     2.0 fat     1303 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/redis/RedisMetadataReportFactory.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-redis/\n+-rw----     2.0 fat     2321 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-redis/pom.xml\n+-rw----     2.0 fat       82 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-redis/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/consul/\n--rw----     2.0 fat     5359 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/consul/ConsulMetadataReport.java\n--rw----     2.0 fat     1285 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/consul/ConsulMetadataReportFactory.java\n+-rw----     2.0 fat     5491 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/consul/ConsulMetadataReport.java\n+-rw----     2.0 fat     1317 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/consul/ConsulMetadataReportFactory.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-consul/\n+-rw----     2.0 fat     2096 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-consul/pom.xml\n+-rw----     2.0 fat       83 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-consul/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/etcd/\n--rw----     2.0 fat     5724 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/etcd/EtcdMetadataReport.java\n--rw----     2.0 fat     2110 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/etcd/EtcdMetadataReportFactory.java\n+-rw----     2.0 fat     5870 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/etcd/EtcdMetadataReport.java\n+-rw----     2.0 fat     2160 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/etcd/EtcdMetadataReportFactory.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-etcd/\n+-rw----     2.0 fat     2588 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-etcd/pom.xml\n+-rw----     2.0 fat       81 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-etcd/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/nacos/\n--rw----     2.0 fat     2213 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/nacos/NacosConfigServiceWrapper.java\n--rw----     2.0 fat    10344 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/nacos/NacosMetadataReport.java\n--rw----     2.0 fat     1281 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/nacos/NacosMetadataReportFactory.java\n+-rw----     2.0 fat     2268 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/nacos/NacosConfigServiceWrapper.java\n+-rw----     2.0 fat    10573 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/nacos/NacosMetadataReport.java\n+-rw----     2.0 fat     1313 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/nacos/NacosMetadataReportFactory.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-nacos/\n+-rw----     2.0 fat     1975 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-nacos/pom.xml\n+-rw----     2.0 fat       82 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-nacos/pom.properties\n -rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/failover/\n--rw----     2.0 fat     1687 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/failover/FailoverCondition.java\n--rw----     2.0 fat    23562 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/failover/FailoverMetadataReport.java\n--rw----     2.0 fat     1239 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/failover/FailoverMetadataReportFactory.java\n--rw----     2.0 fat     3157 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/failover/StrategyMetadataReport.java\n+-rw----     2.0 fat     1737 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/failover/FailoverCondition.java\n+-rw----     2.0 fat    24142 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/failover/FailoverMetadataReport.java\n+-rw----     2.0 fat     1267 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/failover/FailoverMetadataReportFactory.java\n+-rw----     2.0 fat     3244 bl defN 20-Apr-01 08:04 org/apache/dubbo/metadata/store/failover/StrategyMetadataReport.java\n+-rw----     2.0 fat        0 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/\n+-rw----     2.0 fat     1763 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/pom.xml\n+-rw----     2.0 fat       85 bl defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/pom.properties\n -rwx---     2.0 fat      195 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.compiler.Compiler\n--rw----     2.0 fat      598 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory\n+-rw----     2.0 fat      600 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory\n -rw----     2.0 fat      214 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory\n -rw----     2.0 fat       69 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.infra.InfraAdapter\n -rw----     2.0 fat      307 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.logger.LoggerAdapter\n--rw----     2.0 fat      480 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.status.StatusChecker\n+-rw----     2.0 fat      481 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.status.StatusChecker\n -rw----     2.0 fat       61 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.store.DataStore\n -rw----     2.0 fat      298 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.threadpool.ThreadPool\n--rw----     2.0 fat     1033 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.serialize.Serialization\n+-rw----     2.0 fat     1036 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.serialize.Serialization\n -rw----     2.0 fat      420 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.remoting.Dispatcher\n -rw----     2.0 fat      305 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.remoting.Codec2\n -rw----     2.0 fat      333 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.remoting.Transporter\n -rw----     2.0 fat       73 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.remoting.exchange.Exchanger\n -rw----     2.0 fat      248 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.remoting.http.HttpBinder\n -rw----     2.0 fat      125 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.remoting.p2p.Networker\n--rw----     2.0 fat      845 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.remoting.telnet.TelnetHandler\n+-rw----     2.0 fat      853 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.remoting.telnet.TelnetHandler\n -rw----     2.0 fat       82 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter\n--rw----     2.0 fat     1161 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol\n--rw----     2.0 fat     1167 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter\n+-rw----     2.0 fat     1162 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol\n+-rw----     2.0 fat     1169 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter\n -rw----     2.0 fat       67 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.InvokerListener\n -rw----     2.0 fat      186 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.ProxyFactory\n -rw----     2.0 fat      652 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster\n -rw----     2.0 fat      388 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance\n -rw----     2.0 fat      632 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Merger\n -rw----     2.0 fat      431 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.RouterFactory\n -rw----     2.0 fat      171 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.ConfiguratorFactory\n -rw----     2.0 fat      171 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.container.Container\n -rw----     2.0 fat       57 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.monitor.MonitorFactory\n--rw----     2.0 fat      714 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.registry.RegistryFactory\n+-rw----     2.0 fat      716 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.registry.RegistryFactory\n -rw----     2.0 fat       72 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.validation.Validation\n -rw----     2.0 fat      324 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.cache.CacheFactory\n--rw----     2.0 fat      390 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.qos.command.BaseCommand\n--rw----     2.0 fat      453 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory\n--rw----     2.0 fat      109 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.event.EventDispatcher\n--rw----     2.0 fat       92 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.metadata.MetadataServiceExporter\n+-rw----     2.0 fat      398 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.qos.command.BaseCommand\n+-rw----     2.0 fat      459 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory\n+-rw----     2.0 fat      111 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.event.EventDispatcher\n+-rw----     2.0 fat       94 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.metadata.MetadataServiceExporter\n -rw----     2.0 fat       88 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.metadata.WritableMetadataService\n -rw----     2.0 fat      150 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.metadata.ServiceNameMapping\n -rw----     2.0 fat      590 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscoveryFactory\n--rw----     2.0 fat      593 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscovery\n--rw----     2.0 fat      276 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder\n--rw----     2.0 fat      162 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.event.EventListener\n--rw----     2.0 fat      637 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer\n--rw----     2.0 fat      177 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.registry.client.metadata.MetadataServiceURLBuilder\n--rw----     2.0 fat      787 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.convert.Converter\n--rw----     2.0 fat     1023 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.convert.multiple.MultiValueConverter\n--rw----     2.0 fat      716 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor\n--rw----     2.0 fat      183 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.ServiceRestMetadataResolver\n--rw----     2.0 fat      353 bl defN 20-Apr-01 08:04 META-INF/services/org.apache.dubbo.common.extension.LoadingStrategy\n-2011 files, 6914539 bytes uncompressed, 1962278 bytes compressed:  71.6%\n+-rw----     2.0 fat      594 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscovery\n+-rw----     2.0 fat      279 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder\n+-rw----     2.0 fat      163 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.event.EventListener\n+-rw----     2.0 fat      643 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer\n+-rw----     2.0 fat      178 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.registry.client.metadata.MetadataServiceURLBuilder\n+-rw----     2.0 fat      797 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.convert.Converter\n+-rw----     2.0 fat     1035 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.convert.multiple.MultiValueConverter\n+-rw----     2.0 fat      725 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor\n+-rw----     2.0 fat      185 bl defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.ServiceRestMetadataResolver\n+-rw----     2.0 fat      178 bl defN 20-Apr-01 08:04 META-INF/services/org.apache.dubbo.common.extension.LoadingStrategy\n+2011 files, 7017415 bytes uncompressed, 1971263 bytes compressed:  71.9%\n"}, {"source1": "zipnote \u00abTEMP\u00bb/diffoscope_rof64vua_mnt/tmp_2a0zkua_.zip", "source2": "zipnote \u00abTEMP\u00bb/diffoscope_rof64vua_mnt/tmp_2a0zkua_.zip", "unified_diff": "@@ -24,719 +24,14 @@\n \n Filename: META-INF/maven/org.apache.dubbo/dubbo/pom.xml\n Comment: \n \n Filename: META-INF/maven/org.apache.dubbo/dubbo/pom.properties\n Comment: \n \n-Filename: META-INF/maven/org.apache.dubbo/dubbo-config-api/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-config-api/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-config-api/pom.properties\n-Comment: \n-\n-Filename: META-INF/compat/\n-Comment: \n-\n-Filename: META-INF/compat/dubbo.xsd\n-Comment: \n-\n-Filename: META-INF/dubbo.xsd\n-Comment: \n-\n-Filename: META-INF/spring.handlers\n-Comment: \n-\n-Filename: META-INF/spring.schemas\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-config-spring/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-config-spring/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-config-spring/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-cluster/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-cluster/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-cluster/pom.properties\n-Comment: \n-\n-Filename: security/\n-Comment: \n-\n-Filename: security/serialize.blockedlist\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-common/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-common/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-common/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-filter-cache/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-filter-cache/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-filter-cache/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-filter-validation/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-filter-validation/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-filter-validation/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-api/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-api/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-api/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-netty/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-netty/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-netty/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-netty4/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-netty4/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-netty4/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-etcd3/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-etcd3/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-etcd3/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-mina/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-mina/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-mina/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-grizzly/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-grizzly/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-grizzly/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-p2p/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-p2p/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-p2p/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-http/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-http/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-http/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-api/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-api/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-api/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-dubbo/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-dubbo/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-dubbo/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-injvm/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-injvm/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-injvm/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-http/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-http/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-http/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-rmi/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-rmi/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-rmi/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-hessian/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-hessian/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-hessian/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-webservice/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-webservice/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-webservice/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-thrift/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-thrift/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-thrift/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-native-thrift/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-native-thrift/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-native-thrift/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-memcached/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-memcached/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-memcached/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-redis/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-redis/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-redis/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-rest/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-rest/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-rest/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-xml/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-xml/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-xml/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-api/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-api/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-api/pom.properties\n-Comment: \n-\n-Filename: META-INF/assembly/\n-Comment: \n-\n-Filename: META-INF/assembly/bin/\n-Comment: \n-\n-Filename: META-INF/assembly/bin/dump.sh\n-Comment: \n-\n-Filename: META-INF/assembly/bin/restart.sh\n-Comment: \n-\n-Filename: META-INF/assembly/bin/server.sh\n-Comment: \n-\n-Filename: META-INF/assembly/bin/start.bat\n-Comment: \n-\n-Filename: META-INF/assembly/bin/start.sh\n-Comment: \n-\n-Filename: META-INF/assembly/bin/stop.sh\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-container-api/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-container-api/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-container-api/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-default/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-default/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-default/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-multicast/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-multicast/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-multicast/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-zookeeper/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-zookeeper/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-zookeeper/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-redis/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-redis/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-redis/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-consul/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-consul/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-consul/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-etcd3/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-etcd3/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-etcd3/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-eureka/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-eureka/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-eureka/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-nacos/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-nacos/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-nacos/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-multiple/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-multiple/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-multiple/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-monitor-api/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-monitor-api/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-monitor-api/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-monitor-default/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-monitor-default/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-monitor-default/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-container-spring/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-container-spring/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-container-spring/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-container-log4j/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-container-log4j/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-container-log4j/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-container-logback/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-container-logback/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-container-logback/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-qos/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-qos/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-qos/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-api/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-api/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-api/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-fastjson/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-fastjson/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-fastjson/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-fst/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-fst/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-fst/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-hessian2/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-hessian2/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-hessian2/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-native-hession/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-native-hession/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-native-hession/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-jdk/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-jdk/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-jdk/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-avro/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-avro/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-avro/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-protostuff/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-protostuff/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-protostuff/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-gson/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-gson/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-gson/pom.properties\n-Comment: \n-\n-Filename: MapValue.proto\n-Comment: \n-\n-Filename: ThrowablePB.proto\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-zookeeper/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-zookeeper/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-zookeeper/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-apollo/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-apollo/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-apollo/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-nacos/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-nacos/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-nacos/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-consul/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-consul/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-consul/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-compatible/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-compatible/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-compatible/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/com.alibaba/\n-Comment: \n-\n-Filename: META-INF/maven/com.alibaba/hessian-lite/\n-Comment: \n-\n-Filename: META-INF/maven/com.alibaba/hessian-lite/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/com.alibaba/hessian-lite/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-api/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-api/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-api/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-zookeeper/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-zookeeper/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-zookeeper/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-redis/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-redis/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-redis/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-consul/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-consul/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-consul/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-etcd/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-etcd/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-etcd/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-nacos/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-nacos/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-nacos/pom.properties\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/pom.xml\n-Comment: \n-\n-Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/pom.properties\n-Comment: \n-\n-Filename: META-INF/services/\n-Comment: \n-\n Filename: org/\n Comment: \n \n Filename: org/apache/\n Comment: \n \n Filename: org/apache/dubbo/\n@@ -885,14 +180,23 @@\n \n Filename: META-INF/dubbo/\n Comment: \n \n Filename: META-INF/dubbo/internal/\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-config-api/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-config-api/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-config-api/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/config/spring/\n Comment: \n \n Filename: org/apache/dubbo/config/spring/ConfigCenterBean.java\n Comment: \n \n Filename: org/apache/dubbo/config/spring/ReferenceBean.java\n@@ -1059,17 +363,41 @@\n \n Filename: org/apache/dubbo/config/spring/util/DubboAnnotationUtils.java\n Comment: \n \n Filename: org/apache/dubbo/config/spring/util/DubboBeanUtils.java\n Comment: \n \n+Filename: META-INF/compat/\n+Comment: \n+\n+Filename: META-INF/compat/dubbo.xsd\n+Comment: \n+\n Filename: META-INF/dubbo/internal/org.apache.dubbo.config.bootstrap.DubboBootstrapStartStopListener\n Comment: \n \n+Filename: META-INF/dubbo.xsd\n+Comment: \n+\n+Filename: META-INF/spring.handlers\n+Comment: \n+\n+Filename: META-INF/spring.schemas\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-config-spring/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-config-spring/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-config-spring/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/rpc/\n Comment: \n \n Filename: org/apache/dubbo/rpc/cluster/\n Comment: \n \n Filename: org/apache/dubbo/rpc/cluster/CacheableRouterFactory.java\n@@ -1431,14 +759,23 @@\n \n Filename: META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository\n Comment: \n \n Filename: META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.interceptor.ClusterInterceptor\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-cluster/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-cluster/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-cluster/pom.properties\n+Comment: \n+\n Filename: com/\n Comment: \n \n Filename: com/alibaba/\n Comment: \n \n Filename: com/alibaba/dubbo/\n@@ -2457,14 +1794,32 @@\n \n Filename: META-INF/dubbo/internal/org.apache.dubbo.common.threadpool.manager.ExecutorRepository\n Comment: \n \n Filename: META-INF/dubbo/internal/org.apache.dubbo.rpc.model.BuiltinServiceDetector\n Comment: \n \n+Filename: META-INF/services/\n+Comment: \n+\n+Filename: security/\n+Comment: \n+\n+Filename: security/serialize.blockedlist\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-common/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-common/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-common/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/cache/\n Comment: \n \n Filename: org/apache/dubbo/cache/Cache.java\n Comment: \n \n Filename: org/apache/dubbo/cache/CacheFactory.java\n@@ -2526,14 +1881,23 @@\n \n Filename: org/apache/dubbo/cache/support/threadlocal/ThreadLocalCache.java\n Comment: \n \n Filename: org/apache/dubbo/cache/support/threadlocal/ThreadLocalCacheFactory.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-filter-cache/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-filter-cache/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-filter-cache/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/validation/\n Comment: \n \n Filename: org/apache/dubbo/validation/MethodValidated.java\n Comment: \n \n Filename: org/apache/dubbo/validation/Validation.java\n@@ -2559,14 +1923,23 @@\n \n Filename: org/apache/dubbo/validation/support/jvalidation/JValidation.java\n Comment: \n \n Filename: org/apache/dubbo/validation/support/jvalidation/JValidator.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-filter-validation/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-filter-validation/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-filter-validation/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/remoting/\n Comment: \n \n Filename: org/apache/dubbo/remoting/Channel.java\n Comment: \n \n Filename: org/apache/dubbo/remoting/ChannelHandler.java\n@@ -2907,14 +2280,23 @@\n \n Filename: org/apache/dubbo/remoting/utils/PayloadDropper.java\n Comment: \n \n Filename: org/apache/dubbo/remoting/utils/UrlUtils.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-api/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-api/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-api/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/remoting/transport/netty/\n Comment: \n \n Filename: org/apache/dubbo/remoting/transport/netty/NettyBackedChannelBuffer.java\n Comment: \n \n Filename: org/apache/dubbo/remoting/transport/netty/NettyBackedChannelBufferFactory.java\n@@ -2937,14 +2319,23 @@\n \n Filename: org/apache/dubbo/remoting/transport/netty/NettyServer.java\n Comment: \n \n Filename: org/apache/dubbo/remoting/transport/netty/NettyTransporter.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-netty/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-netty/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-netty/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/remoting/transport/netty4/\n Comment: \n \n Filename: org/apache/dubbo/remoting/transport/netty4/NettyBackedChannelBuffer.java\n Comment: \n \n Filename: org/apache/dubbo/remoting/transport/netty4/NettyChannel.java\n@@ -2982,14 +2373,23 @@\n \n Filename: org/apache/dubbo/remoting/transport/netty4/logging/FormattingTuple.java\n Comment: \n \n Filename: org/apache/dubbo/remoting/transport/netty4/logging/MessageFormatter.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-netty4/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-netty4/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-netty4/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/remoting/etcd/\n Comment: \n \n Filename: org/apache/dubbo/remoting/etcd/AbstractRetryPolicy.java\n Comment: \n \n Filename: org/apache/dubbo/remoting/etcd/ChildListener.java\n@@ -3042,14 +2442,23 @@\n \n Filename: org/apache/dubbo/remoting/etcd/support/AbstractEtcdClient.java\n Comment: \n \n Filename: META-INF/dubbo/internal/org.apache.dubbo.remoting.etcd.EtcdTransporter\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-etcd3/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-etcd3/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-etcd3/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/remoting/transport/mina/\n Comment: \n \n Filename: org/apache/dubbo/remoting/transport/mina/MinaChannel.java\n Comment: \n \n Filename: org/apache/dubbo/remoting/transport/mina/MinaClient.java\n@@ -3063,14 +2472,23 @@\n \n Filename: org/apache/dubbo/remoting/transport/mina/MinaServer.java\n Comment: \n \n Filename: org/apache/dubbo/remoting/transport/mina/MinaTransporter.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-mina/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-mina/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-mina/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/remoting/transport/grizzly/\n Comment: \n \n Filename: org/apache/dubbo/remoting/transport/grizzly/GrizzlyChannel.java\n Comment: \n \n Filename: org/apache/dubbo/remoting/transport/grizzly/GrizzlyClient.java\n@@ -3084,14 +2502,23 @@\n \n Filename: org/apache/dubbo/remoting/transport/grizzly/GrizzlyServer.java\n Comment: \n \n Filename: org/apache/dubbo/remoting/transport/grizzly/GrizzlyTransporter.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-grizzly/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-grizzly/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-grizzly/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/remoting/p2p/\n Comment: \n \n Filename: org/apache/dubbo/remoting/p2p/Group.java\n Comment: \n \n Filename: org/apache/dubbo/remoting/p2p/Networker.java\n@@ -3156,14 +2583,23 @@\n \n Filename: org/apache/dubbo/remoting/p2p/support/MulticastNetworker.java\n Comment: \n \n Filename: org/apache/dubbo/remoting/p2p/support/ServerPeer.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-p2p/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-p2p/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-p2p/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/remoting/http/\n Comment: \n \n Filename: org/apache/dubbo/remoting/http/HttpBinder.java\n Comment: \n \n Filename: org/apache/dubbo/remoting/http/HttpHandler.java\n@@ -3210,14 +2646,23 @@\n \n Filename: org/apache/dubbo/remoting/http/tomcat/TomcatHttpBinder.java\n Comment: \n \n Filename: org/apache/dubbo/remoting/http/tomcat/TomcatHttpServer.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-http/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-http/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-http/pom.properties\n+Comment: \n+\n Filename: com/alibaba/dubbo/rpc/\n Comment: \n \n Filename: com/alibaba/dubbo/rpc/service/\n Comment: \n \n Filename: com/alibaba/dubbo/rpc/service/EchoService.java\n@@ -3462,14 +2907,23 @@\n \n Filename: org/apache/dubbo/rpc/support/MockProtocol.java\n Comment: \n \n Filename: org/apache/dubbo/rpc/support/RpcUtils.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-api/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-api/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-api/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/dubbo/ChannelWrappedInvoker.java\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/dubbo/Constants.java\n@@ -3522,26 +2976,44 @@\n \n Filename: org/apache/dubbo/rpc/protocol/dubbo/status/ServerStatusChecker.java\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/dubbo/status/ThreadPoolStatusChecker.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-dubbo/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-dubbo/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-dubbo/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/rpc/protocol/injvm/\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/injvm/InjvmExporter.java\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/injvm/InjvmInvoker.java\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/injvm/InjvmProtocol.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-injvm/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-injvm/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-injvm/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/rpc/protocol/http/\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/http/HttpProtocol.java\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/http/HttpProtocolErrorCode.java\n@@ -3549,14 +3021,23 @@\n \n Filename: org/apache/dubbo/rpc/protocol/http/JsonRemoteInvocation.java\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/http/JsonRpcProxyFactoryBean.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-http/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-http/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-http/pom.properties\n+Comment: \n+\n Filename: com/alibaba/dubbo/rpc/protocol/\n Comment: \n \n Filename: com/alibaba/dubbo/rpc/protocol/rmi/\n Comment: \n \n Filename: com/alibaba/dubbo/rpc/protocol/rmi/RmiRemoteInvocation.java\n@@ -3567,14 +3048,23 @@\n \n Filename: org/apache/dubbo/rpc/protocol/rmi/RmiProtocol.java\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/rmi/RmiRemoteInvocation.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-rmi/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-rmi/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-rmi/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/rpc/protocol/hessian/\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/hessian/Constants.java\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/hessian/DubboHessianURLConnectionFactory.java\n@@ -3585,20 +3075,38 @@\n \n Filename: org/apache/dubbo/rpc/protocol/hessian/HttpClientConnection.java\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/hessian/HttpClientConnectionFactory.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-hessian/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-hessian/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-hessian/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/rpc/protocol/webservice/\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/webservice/WebServiceProtocol.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-webservice/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-webservice/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-webservice/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/rpc/protocol/thrift/\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/thrift/ClassNameGenerator.java\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/thrift/DubboClassNameGenerator.java\n@@ -3642,32 +3150,68 @@\n \n Filename: org/apache/dubbo/rpc/protocol/thrift/io/RandomAccessByteArrayOutputStream.java\n Comment: \n \n Filename: META-INF/dubbo/internal/org.apache.dubbo.rpc.protocol.thrift.ClassNameGenerator\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-thrift/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-thrift/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-thrift/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/rpc/protocol/nativethrift/\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/nativethrift/ThriftProtocol.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-native-thrift/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-native-thrift/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-native-thrift/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/rpc/protocol/memcached/\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/memcached/MemcachedProtocol.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-memcached/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-memcached/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-memcached/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/rpc/protocol/redis/\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/redis/RedisProtocol.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-redis/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-redis/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-redis/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/rpc/protocol/rest/\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/rest/BaseRestProtocolServer.java\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/rest/Constants.java\n@@ -3720,14 +3264,23 @@\n \n Filename: org/apache/dubbo/rpc/protocol/rest/support/ContentType.java\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/rest/support/LoggingFilter.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-rest/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-rest/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-rest/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/xml/\n Comment: \n \n Filename: org/apache/dubbo/xml/rpc/\n Comment: \n \n Filename: org/apache/dubbo/xml/rpc/protocol/\n@@ -3738,14 +3291,23 @@\n \n Filename: org/apache/dubbo/xml/rpc/protocol/xmlrpc/XmlRpcProtocol.java\n Comment: \n \n Filename: org/apache/dubbo/xml/rpc/protocol/xmlrpc/XmlRpcProxyFactoryBean.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-xml/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-xml/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-xml/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/rpc/protocol/grpc/\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/grpc/DubboHandlerRegistry.java\n Comment: \n \n Filename: org/apache/dubbo/rpc/protocol/grpc/GrpcConfig.java\n@@ -3786,14 +3348,23 @@\n \n Filename: META-INF/dubbo/internal/org.apache.dubbo.rpc.protocol.grpc.interceptors.ClientInterceptor\n Comment: \n \n Filename: META-INF/dubbo/internal/org.apache.dubbo.rpc.protocol.grpc.interceptors.ServerInterceptor\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/registry/\n Comment: \n \n Filename: org/apache/dubbo/registry/AddressListener.java\n Comment: \n \n Filename: org/apache/dubbo/registry/Constants.java\n@@ -4077,44 +3648,104 @@\n \n Filename: META-INF/dubbo/internal/org.apache.dubbo.registry.client.selector.ServiceInstanceSelector\n Comment: \n \n Filename: META-INF/dubbo/internal/org.apache.dubbo.registry.integration.RegistryProtocolListener\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-api/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-api/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-api/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/container/\n Comment: \n \n Filename: org/apache/dubbo/container/Container.java\n Comment: \n \n Filename: org/apache/dubbo/container/Main.java\n Comment: \n \n+Filename: META-INF/assembly/\n+Comment: \n+\n+Filename: META-INF/assembly/bin/\n+Comment: \n+\n+Filename: META-INF/assembly/bin/dump.sh\n+Comment: \n+\n+Filename: META-INF/assembly/bin/restart.sh\n+Comment: \n+\n+Filename: META-INF/assembly/bin/server.sh\n+Comment: \n+\n+Filename: META-INF/assembly/bin/start.bat\n+Comment: \n+\n+Filename: META-INF/assembly/bin/start.sh\n+Comment: \n+\n+Filename: META-INF/assembly/bin/stop.sh\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-container-api/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-container-api/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-container-api/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/registry/dubbo/\n Comment: \n \n Filename: org/apache/dubbo/registry/dubbo/DubboRegistry.java\n Comment: \n \n Filename: org/apache/dubbo/registry/dubbo/DubboRegistryFactory.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-default/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-default/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-default/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/registry/multicast/\n Comment: \n \n Filename: org/apache/dubbo/registry/multicast/MulticastRegistry.java\n Comment: \n \n Filename: org/apache/dubbo/registry/multicast/MulticastRegistryFactory.java\n Comment: \n \n Filename: org/apache/dubbo/registry/multicast/MulticastServiceDiscovery.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-multicast/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-multicast/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-multicast/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/registry/zookeeper/\n Comment: \n \n Filename: org/apache/dubbo/registry/zookeeper/ZookeeperInstance.java\n Comment: \n \n Filename: org/apache/dubbo/registry/zookeeper/ZookeeperRegistry.java\n@@ -4137,14 +3768,23 @@\n \n Filename: org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkParams.java\n Comment: \n \n Filename: org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtils.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/remoting/zookeeper/\n Comment: \n \n Filename: org/apache/dubbo/remoting/zookeeper/ChildListener.java\n Comment: \n \n Filename: org/apache/dubbo/remoting/zookeeper/DataListener.java\n@@ -4176,14 +3816,23 @@\n \n Filename: org/apache/dubbo/remoting/zookeeper/support/AbstractZookeeperClient.java\n Comment: \n \n Filename: org/apache/dubbo/remoting/zookeeper/support/AbstractZookeeperTransporter.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-zookeeper/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-zookeeper/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-remoting-zookeeper/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/registry/redis/\n Comment: \n \n Filename: org/apache/dubbo/registry/redis/RedisRegistry.java\n Comment: \n \n Filename: org/apache/dubbo/registry/redis/RedisRegistryFactory.java\n@@ -4191,14 +3840,23 @@\n \n Filename: org/apache/dubbo/registry/redis/RedisServiceDiscovery.java\n Comment: \n \n Filename: org/apache/dubbo/registry/redis/RedisServiceDiscoveryFactory.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-redis/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-redis/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-redis/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/registry/consul/\n Comment: \n \n Filename: org/apache/dubbo/registry/consul/AbstractConsulRegistry.java\n Comment: \n \n Filename: org/apache/dubbo/registry/consul/ConsulParameter.java\n@@ -4218,38 +3876,65 @@\n \n Filename: org/apache/dubbo/registry/consul/ConsulServiceDiscoveryFactory.java~HEAD\n Comment: \n \n Filename: org/apache/dubbo/registry/consul/ConsulServiceDiscoveryFactory.java~dubbo-master\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-consul/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-consul/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-consul/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/registry/etcd/\n Comment: \n \n Filename: org/apache/dubbo/registry/etcd/EtcdRegistry.java\n Comment: \n \n Filename: org/apache/dubbo/registry/etcd/EtcdRegistryFactory.java\n Comment: \n \n Filename: org/apache/dubbo/registry/etcd/EtcdServiceDiscovery.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-etcd3/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-etcd3/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-etcd3/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/registry/eureka/\n Comment: \n \n Filename: org/apache/dubbo/registry/eureka/ConfigurableEurekaInstanceConfig.java\n Comment: \n \n Filename: org/apache/dubbo/registry/eureka/EurekaServiceDiscovery.java\n Comment: \n \n Filename: org/apache/dubbo/registry/eureka/package-info.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-eureka/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-eureka/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-eureka/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/registry/nacos/\n Comment: \n \n Filename: org/apache/dubbo/registry/nacos/NacosNamingServiceWrapper.java\n Comment: \n \n Filename: org/apache/dubbo/registry/nacos/NacosRegistry.java\n@@ -4272,14 +3957,23 @@\n \n Filename: org/apache/dubbo/registry/nacos/util/NacosInstanceManageUtil.java\n Comment: \n \n Filename: org/apache/dubbo/registry/nacos/util/NacosNamingServiceUtils.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-nacos/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-nacos/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-nacos/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/registry/sofa/\n Comment: \n \n Filename: org/apache/dubbo/registry/sofa/SofaRegistry.java\n Comment: \n \n Filename: org/apache/dubbo/registry/sofa/SofaRegistryConstants.java\n@@ -4293,14 +3987,23 @@\n \n Filename: org/apache/dubbo/registry/sofa/SofaRegistryServiceDiscovery.java\n Comment: \n \n Filename: org/apache/dubbo/registry/sofa/SofaRegistryServiceDiscoveryFactory.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/registry/multiple/\n Comment: \n \n Filename: org/apache/dubbo/registry/multiple/MultipleRegistry.java\n Comment: \n \n Filename: org/apache/dubbo/registry/multiple/MultipleRegistryFactory.java\n@@ -4308,14 +4011,23 @@\n \n Filename: org/apache/dubbo/registry/multiple/MultipleRegistryServiceDiscovery.java\n Comment: \n \n Filename: org/apache/dubbo/registry/multiple/MultipleRegistryServiceDiscoveryFactory.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-multiple/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-multiple/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-registry-multiple/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/monitor/\n Comment: \n \n Filename: org/apache/dubbo/monitor/Constants.java\n Comment: \n \n Filename: org/apache/dubbo/monitor/MetricsService.java\n@@ -4341,14 +4053,23 @@\n \n Filename: org/apache/dubbo/monitor/support/MonitorFilter.java\n Comment: \n \n Filename: org/apache/dubbo/monitor/support/MonitorServiceDetector.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-monitor-api/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-monitor-api/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-monitor-api/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/monitor/dubbo/\n Comment: \n \n Filename: org/apache/dubbo/monitor/dubbo/DubboMonitor.java\n Comment: \n \n Filename: org/apache/dubbo/monitor/dubbo/DubboMonitorFactory.java\n@@ -4356,32 +4077,68 @@\n \n Filename: org/apache/dubbo/monitor/dubbo/MetricsFilter.java\n Comment: \n \n Filename: org/apache/dubbo/monitor/dubbo/Statistics.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-monitor-default/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-monitor-default/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-monitor-default/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/container/spring/\n Comment: \n \n Filename: org/apache/dubbo/container/spring/SpringContainer.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-container-spring/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-container-spring/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-container-spring/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/container/log4j/\n Comment: \n \n Filename: org/apache/dubbo/container/log4j/Log4jContainer.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-container-log4j/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-container-log4j/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-container-log4j/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/container/logback/\n Comment: \n \n Filename: org/apache/dubbo/container/logback/LogbackContainer.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-container-logback/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-container-logback/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-container-logback/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/qos/\n Comment: \n \n Filename: org/apache/dubbo/qos/command/\n Comment: \n \n Filename: org/apache/dubbo/qos/command/BaseCommand.java\n@@ -4539,14 +4296,23 @@\n \n Filename: org/apache/dubbo/qos/textui/TTable.java\n Comment: \n \n Filename: org/apache/dubbo/qos/textui/TTree.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-qos/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-qos/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-qos/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/common/serialize/\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/Cleanable.java\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/Constants.java\n@@ -4572,26 +4338,44 @@\n \n Filename: org/apache/dubbo/common/serialize/support/SerializableClassRegistry.java\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/support/SerializationOptimizer.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-api/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-api/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-api/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/common/serialize/fastjson/\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/fastjson/FastJsonObjectInput.java\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/fastjson/FastJsonObjectOutput.java\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/fastjson/FastJsonSerialization.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-fastjson/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-fastjson/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-fastjson/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/common/serialize/fst/\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/fst/FstFactory.java\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/fst/FstObjectInput.java\n@@ -4599,14 +4383,23 @@\n \n Filename: org/apache/dubbo/common/serialize/fst/FstObjectOutput.java\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/fst/FstSerialization.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-fst/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-fst/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-fst/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/common/serialize/hessian2/\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/hessian2/Hessian2ObjectInput.java\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/hessian2/Hessian2ObjectOutput.java\n@@ -4632,14 +4425,23 @@\n \n Filename: org/apache/dubbo/common/serialize/hessian2/dubbo/WhitelistHessian2FactoryInitializer.java\n Comment: \n \n Filename: META-INF/dubbo/internal/org.apache.dubbo.common.serialize.hessian2.dubbo.Hessian2FactoryInitializer\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-hessian2/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-hessian2/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-hessian2/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/serialize/\n Comment: \n \n Filename: org/apache/dubbo/serialize/hessian/\n Comment: \n \n Filename: org/apache/dubbo/serialize/hessian/Hessian2ObjectInput.java\n@@ -4707,14 +4509,23 @@\n \n Filename: org/apache/dubbo/serialize/hessian/serializer/java8/ZoneOffsetHandle.java\n Comment: \n \n Filename: org/apache/dubbo/serialize/hessian/serializer/java8/ZonedDateTimeHandle.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-native-hession/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-native-hession/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-native-hession/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/common/serialize/java/\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/java/CompactedJavaSerialization.java\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/java/CompactedObjectInputStream.java\n@@ -4740,14 +4551,23 @@\n \n Filename: org/apache/dubbo/common/serialize/nativejava/NativeJavaObjectOutput.java\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/nativejava/NativeJavaSerialization.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-jdk/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-jdk/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-jdk/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/common/serialize/kryo/\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/kryo/CompatibleKryo.java\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/kryo/KryoObjectInput.java\n@@ -4785,26 +4605,44 @@\n \n Filename: org/apache/dubbo/common/serialize/kryo/utils/PrototypeKryoFactory.java\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/kryo/utils/ThreadLocalKryoFactory.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/common/serialize/avro/\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/avro/AvroObjectInput.java\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/avro/AvroObjectOutput.java\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/avro/AvroSerialization.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-avro/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-avro/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-avro/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/common/serialize/protostuff/\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/protostuff/ProtostuffObjectInput.java\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/protostuff/ProtostuffObjectOutput.java\n@@ -4830,26 +4668,44 @@\n \n Filename: org/apache/dubbo/common/serialize/protostuff/utils/\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/protostuff/utils/WrapperUtils.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-protostuff/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-protostuff/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-protostuff/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/common/serialize/gson/\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/gson/GsonJsonObjectInput.java\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/gson/GsonJsonObjectOutput.java\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/gson/GsonSerialization.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-gson/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-gson/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-gson/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/common/serialize/protobuf/\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/protobuf/support/\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonObjectInput.java\n@@ -4881,14 +4737,29 @@\n \n Filename: org/apache/dubbo/common/serialize/protobuf/support/wrapper/MapValue.java\n Comment: \n \n Filename: org/apache/dubbo/common/serialize/protobuf/support/wrapper/ThrowablePB.java\n Comment: \n \n+Filename: MapValue.proto\n+Comment: \n+\n+Filename: ThrowablePB.proto\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/configcenter/\n Comment: \n \n Filename: org/apache/dubbo/configcenter/support/\n Comment: \n \n Filename: org/apache/dubbo/configcenter/support/zookeeper/\n@@ -4899,53 +4770,98 @@\n \n Filename: org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java\n Comment: \n \n Filename: org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfigurationFactory.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-zookeeper/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-zookeeper/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-zookeeper/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/configcenter/support/apollo/\n Comment: \n \n Filename: org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfiguration.java\n Comment: \n \n Filename: org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfigurationFactory.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-apollo/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-apollo/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-apollo/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/configcenter/support/nacos/\n Comment: \n \n Filename: org/apache/dubbo/configcenter/support/nacos/NacosConfigServiceWrapper.java\n Comment: \n \n Filename: org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java\n Comment: \n \n Filename: org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfigurationFactory.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-nacos/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-nacos/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-nacos/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/configcenter/consul/\n Comment: \n \n Filename: org/apache/dubbo/configcenter/consul/ConsulDynamicConfiguration.java\n Comment: \n \n Filename: org/apache/dubbo/configcenter/consul/ConsulDynamicConfigurationFactory.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-consul/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-consul/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-consul/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/configcenter/support/etcd/\n Comment: \n \n Filename: org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfiguration.java\n Comment: \n \n Filename: org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfigurationFactory.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/pom.properties\n+Comment: \n+\n Filename: com/alibaba/dubbo/cache/\n Comment: \n \n Filename: com/alibaba/dubbo/cache/Cache.java\n Comment: \n \n Filename: com/alibaba/dubbo/cache/CacheFactory.java\n@@ -5274,14 +5190,23 @@\n \n Filename: com/alibaba/dubbo/validation/Validation.java\n Comment: \n \n Filename: com/alibaba/dubbo/validation/Validator.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-compatible/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-compatible/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-compatible/pom.properties\n+Comment: \n+\n Filename: com/alibaba/com/\n Comment: \n \n Filename: com/alibaba/com/caucho/\n Comment: \n \n Filename: com/alibaba/com/caucho/hessian/\n@@ -5475,14 +5400,23 @@\n \n Filename: com/alibaba/com/caucho/hessian/io/IteratorSerializer.java\n Comment: \n \n Filename: com/alibaba/com/caucho/hessian/io/LocaleSerializer.java\n Comment: \n \n+Filename: META-INF/maven/com.alibaba/\n+Comment: \n+\n+Filename: META-INF/maven/com.alibaba/hessian-lite/\n+Comment: \n+\n+Filename: META-INF/maven/com.alibaba/hessian-lite/pom.properties\n+Comment: \n+\n Filename: com/alibaba/com/caucho/hessian/io/AbstractSerializerFactory.java\n Comment: \n \n Filename: com/alibaba/com/caucho/hessian/io/java8/LocalDateTimeHandle.java\n Comment: \n \n Filename: com/alibaba/com/caucho/hessian/io/java8/YearMonthHandle.java\n@@ -5586,14 +5520,17 @@\n \n Filename: com/alibaba/com/caucho/hessian/io/CalendarHandle.java\n Comment: \n \n Filename: com/alibaba/com/caucho/hessian/io/HessianServiceException.java\n Comment: \n \n+Filename: META-INF/maven/com.alibaba/hessian-lite/pom.xml\n+Comment: \n+\n Filename: org/apache/dubbo/metadata/\n Comment: \n \n Filename: org/apache/dubbo/metadata/DefaultMetadataParamsFilter.java\n Comment: \n \n Filename: org/apache/dubbo/metadata/DynamicConfigurationServiceNameMapping.java\n@@ -5820,62 +5757,116 @@\n \n Filename: org/apache/dubbo/metadata/store/AbstractAbstractWritableMetadataService.java\n Comment: \n \n Filename: META-INF/dubbo/internal/org.apache.dubbo.metadata.MetadataParamsFilter\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-api/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-api/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-api/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/metadata/store/zookeeper/\n Comment: \n \n Filename: org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java\n Comment: \n \n Filename: org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportFactory.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-zookeeper/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-zookeeper/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-zookeeper/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/metadata/store/redis/\n Comment: \n \n Filename: org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java\n Comment: \n \n Filename: org/apache/dubbo/metadata/store/redis/RedisMetadataReportFactory.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-redis/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-redis/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-redis/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/metadata/store/consul/\n Comment: \n \n Filename: org/apache/dubbo/metadata/store/consul/ConsulMetadataReport.java\n Comment: \n \n Filename: org/apache/dubbo/metadata/store/consul/ConsulMetadataReportFactory.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-consul/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-consul/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-consul/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/metadata/store/etcd/\n Comment: \n \n Filename: org/apache/dubbo/metadata/store/etcd/EtcdMetadataReport.java\n Comment: \n \n Filename: org/apache/dubbo/metadata/store/etcd/EtcdMetadataReportFactory.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-etcd/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-etcd/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-etcd/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/metadata/store/nacos/\n Comment: \n \n Filename: org/apache/dubbo/metadata/store/nacos/NacosConfigServiceWrapper.java\n Comment: \n \n Filename: org/apache/dubbo/metadata/store/nacos/NacosMetadataReport.java\n Comment: \n \n Filename: org/apache/dubbo/metadata/store/nacos/NacosMetadataReportFactory.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-nacos/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-nacos/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-nacos/pom.properties\n+Comment: \n+\n Filename: org/apache/dubbo/metadata/store/failover/\n Comment: \n \n Filename: org/apache/dubbo/metadata/store/failover/FailoverCondition.java\n Comment: \n \n Filename: org/apache/dubbo/metadata/store/failover/FailoverMetadataReport.java\n@@ -5883,14 +5874,23 @@\n \n Filename: org/apache/dubbo/metadata/store/failover/FailoverMetadataReportFactory.java\n Comment: \n \n Filename: org/apache/dubbo/metadata/store/failover/StrategyMetadataReport.java\n Comment: \n \n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/pom.xml\n+Comment: \n+\n+Filename: META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/pom.properties\n+Comment: \n+\n Filename: META-INF/dubbo/internal/org.apache.dubbo.common.compiler.Compiler\n Comment: \n \n Filename: META-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory\n Comment: \n \n Filename: META-INF/dubbo/internal/org.apache.dubbo.common.extension.ExtensionFactory\n"}, {"source1": "zipdetails --redact --scan --utc {}", "source2": "zipdetails --redact --scan --utc {}", "unified_diff": "@@ -226,108403 +226,108403 @@\n 003595 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n # WARNING: Offset 0x3595: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n 0035C2 PAYLOAD\n \n-0043AD DATA DESCRIPTOR       08074B50 (134695760)\n-0043B1 CRC                   183E1D03 (406723843)\n-0043B5 Compressed Size       00000DEB (3563)\n-0043B9 Uncompressed Size     0000B03A (45114)\n+004318 DATA DESCRIPTOR       08074B50 (134695760)\n+00431C CRC                   45B97541 (1169782081)\n+004320 Compressed Size       00000D56 (3414)\n+004324 Uncompressed Size     0000A69D (42653)\n \n-0043BD LOCAL HEADER #10      04034B50 (67324752)\n-0043C1 Extract Zip Spec      14 (20) '2.0'\n-0043C2 Extract OS            00 (0) 'MS-DOS'\n-0043C3 General Purpose Flag  0808 (2056)\n+004328 LOCAL HEADER #10      04034B50 (67324752)\n+00432C Extract Zip Spec      14 (20) '2.0'\n+00432D Extract OS            00 (0) 'MS-DOS'\n+00432E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0043C5 Compression Method    0008 (8) 'Deflated'\n-0043C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0043CB CRC                   00000000 (0)\n-0043CF Compressed Size       00000000 (0)\n-0043D3 Uncompressed Size     00000000 (0)\n-0043D7 Filename Length       0034 (52)\n-0043D9 Extra Length          0000 (0)\n-0043DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+004330 Compression Method    0008 (8) 'Deflated'\n+004332 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+004336 CRC                   00000000 (0)\n+00433A Compressed Size       00000000 (0)\n+00433E Uncompressed Size     00000000 (0)\n+004342 Filename Length       0034 (52)\n+004344 Extra Length          0000 (0)\n+004346 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x43DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4346: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00440F PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+00437A PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-004446 DATA DESCRIPTOR       08074B50 (134695760)\n-00444A CRC                   37E806FA (937953018)\n-00444E Compressed Size       00000037 (55)\n-004452 Uncompressed Size     0000003C (60)\n+0043B1 DATA DESCRIPTOR       08074B50 (134695760)\n+0043B5 CRC                   37E806FA (937953018)\n+0043B9 Compressed Size       00000037 (55)\n+0043BD Uncompressed Size     0000003C (60)\n \n-004456 LOCAL HEADER #11      04034B50 (67324752)\n-00445A Extract Zip Spec      14 (20) '2.0'\n-00445B Extract OS            00 (0) 'MS-DOS'\n-00445C General Purpose Flag  0808 (2056)\n+0043C1 LOCAL HEADER #11      04034B50 (67324752)\n+0043C5 Extract Zip Spec      14 (20) '2.0'\n+0043C6 Extract OS            00 (0) 'MS-DOS'\n+0043C7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00445E Compression Method    0008 (8) 'Deflated'\n-004460 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-004464 CRC                   00000000 (0)\n-004468 Compressed Size       00000000 (0)\n-00446C Uncompressed Size     00000000 (0)\n-004470 Filename Length       0031 (49)\n-004472 Extra Length          0000 (0)\n-004474 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0043C9 Compression Method    0008 (8) 'Deflated'\n+0043CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0043CF CRC                   00000000 (0)\n+0043D3 Compressed Size       00000000 (0)\n+0043D7 Uncompressed Size     00000000 (0)\n+0043DB Filename Length       0004 (4)\n+0043DD Extra Length          0000 (0)\n+0043DF Filename              'XXXX'\n #\n-# WARNING: Offset 0x4474: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x43DF: Filename 'XXXX'\n #          Zero length filename\n #\n-0044A5 PAYLOAD               XX\n+0043E3 PAYLOAD               XX\n \n-0044A7 DATA DESCRIPTOR       08074B50 (134695760)\n-0044AB CRC                   00000000 (0)\n-0044AF Compressed Size       00000002 (2)\n-0044B3 Uncompressed Size     00000000 (0)\n+0043E5 DATA DESCRIPTOR       08074B50 (134695760)\n+0043E9 CRC                   00000000 (0)\n+0043ED Compressed Size       00000002 (2)\n+0043F1 Uncompressed Size     00000000 (0)\n \n-0044B7 LOCAL HEADER #12      04034B50 (67324752)\n-0044BB Extract Zip Spec      14 (20) '2.0'\n-0044BC Extract OS            00 (0) 'MS-DOS'\n-0044BD General Purpose Flag  0808 (2056)\n+0043F5 LOCAL HEADER #12      04034B50 (67324752)\n+0043F9 Extract Zip Spec      14 (20) '2.0'\n+0043FA Extract OS            00 (0) 'MS-DOS'\n+0043FB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0044BF Compression Method    0008 (8) 'Deflated'\n-0044C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0044C5 CRC                   00000000 (0)\n-0044C9 Compressed Size       00000000 (0)\n-0044CD Uncompressed Size     00000000 (0)\n-0044D1 Filename Length       0038 (56)\n-0044D3 Extra Length          0000 (0)\n-0044D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0043FD Compression Method    0008 (8) 'Deflated'\n+0043FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+004403 CRC                   00000000 (0)\n+004407 Compressed Size       00000000 (0)\n+00440B Uncompressed Size     00000000 (0)\n+00440F Filename Length       000B (11)\n+004411 Extra Length          0000 (0)\n+004413 Filename              'XXXXXXXXXXX'\n #\n-# WARNING: Offset 0x44D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4413: Filename 'XXXXXXXXXXX'\n #          Zero length filename\n #\n-00450D PAYLOAD\n+00441E PAYLOAD               XX\n \n-00498F DATA DESCRIPTOR       08074B50 (134695760)\n-004993 CRC                   48945B27 (1217682215)\n-004997 Compressed Size       00000482 (1154)\n-00499B Uncompressed Size     00001F82 (8066)\n+004420 DATA DESCRIPTOR       08074B50 (134695760)\n+004424 CRC                   00000000 (0)\n+004428 Compressed Size       00000002 (2)\n+00442C Uncompressed Size     00000000 (0)\n \n-00499F LOCAL HEADER #13      04034B50 (67324752)\n-0049A3 Extract Zip Spec      14 (20) '2.0'\n-0049A4 Extract OS            00 (0) 'MS-DOS'\n-0049A5 General Purpose Flag  0808 (2056)\n+004430 LOCAL HEADER #13      04034B50 (67324752)\n+004434 Extract Zip Spec      14 (20) '2.0'\n+004435 Extract OS            00 (0) 'MS-DOS'\n+004436 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0049A7 Compression Method    0008 (8) 'Deflated'\n-0049A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0049AD CRC                   00000000 (0)\n-0049B1 Compressed Size       00000000 (0)\n-0049B5 Uncompressed Size     00000000 (0)\n-0049B9 Filename Length       003F (63)\n-0049BB Extra Length          0000 (0)\n-0049BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+004438 Compression Method    0008 (8) 'Deflated'\n+00443A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00443E CRC                   00000000 (0)\n+004442 Compressed Size       00000000 (0)\n+004446 Uncompressed Size     00000000 (0)\n+00444A Filename Length       0011 (17)\n+00444C Extra Length          0000 (0)\n+00444E Filename              'XXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x49BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x444E: Filename 'XXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0049FC PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+00445F PAYLOAD               XX\n \n-004A41 DATA DESCRIPTOR       08074B50 (134695760)\n-004A45 CRC                   494D98C1 (1229822145)\n-004A49 Compressed Size       00000045 (69)\n-004A4D Uncompressed Size     00000047 (71)\n+004461 DATA DESCRIPTOR       08074B50 (134695760)\n+004465 CRC                   00000000 (0)\n+004469 Compressed Size       00000002 (2)\n+00446D Uncompressed Size     00000000 (0)\n \n-004A51 LOCAL HEADER #14      04034B50 (67324752)\n-004A55 Extract Zip Spec      14 (20) '2.0'\n-004A56 Extract OS            00 (0) 'MS-DOS'\n-004A57 General Purpose Flag  0808 (2056)\n+004471 LOCAL HEADER #14      04034B50 (67324752)\n+004475 Extract Zip Spec      14 (20) '2.0'\n+004476 Extract OS            00 (0) 'MS-DOS'\n+004477 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-004A59 Compression Method    0008 (8) 'Deflated'\n-004A5B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-004A5F CRC                   00000000 (0)\n-004A63 Compressed Size       00000000 (0)\n-004A67 Uncompressed Size     00000000 (0)\n-004A6B Filename Length       0010 (16)\n-004A6D Extra Length          0000 (0)\n-004A6F Filename              'XXXXXXXXXXXXXXXX'\n+004479 Compression Method    0008 (8) 'Deflated'\n+00447B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00447F CRC                   00000000 (0)\n+004483 Compressed Size       00000000 (0)\n+004487 Uncompressed Size     00000000 (0)\n+00448B Filename Length       0018 (24)\n+00448D Extra Length          0000 (0)\n+00448F Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4A6F: Filename 'XXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x448F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-004A7F PAYLOAD               XX\n+0044A7 PAYLOAD               XX\n \n-004A81 DATA DESCRIPTOR       08074B50 (134695760)\n-004A85 CRC                   00000000 (0)\n-004A89 Compressed Size       00000002 (2)\n-004A8D Uncompressed Size     00000000 (0)\n+0044A9 DATA DESCRIPTOR       08074B50 (134695760)\n+0044AD CRC                   00000000 (0)\n+0044B1 Compressed Size       00000002 (2)\n+0044B5 Uncompressed Size     00000000 (0)\n \n-004A91 LOCAL HEADER #15      04034B50 (67324752)\n-004A95 Extract Zip Spec      14 (20) '2.0'\n-004A96 Extract OS            00 (0) 'MS-DOS'\n-004A97 General Purpose Flag  0808 (2056)\n+0044B9 LOCAL HEADER #15      04034B50 (67324752)\n+0044BD Extract Zip Spec      14 (20) '2.0'\n+0044BE Extract OS            00 (0) 'MS-DOS'\n+0044BF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-004A99 Compression Method    0008 (8) 'Deflated'\n-004A9B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-004A9F CRC                   00000000 (0)\n-004AA3 Compressed Size       00000000 (0)\n-004AA7 Uncompressed Size     00000000 (0)\n-004AAB Filename Length       0019 (25)\n-004AAD Extra Length          0000 (0)\n-004AAF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+0044C1 Compression Method    0008 (8) 'Deflated'\n+0044C3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0044C7 CRC                   00000000 (0)\n+0044CB Compressed Size       00000000 (0)\n+0044CF Uncompressed Size     00000000 (0)\n+0044D3 Filename Length       002E (46)\n+0044D5 Extra Length          0000 (0)\n+0044D7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4AAF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x44D7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-004AC8 PAYLOAD\n+004505 PAYLOAD\n \n-006052 DATA DESCRIPTOR       08074B50 (134695760)\n-006056 CRC                   E62522BB (3861193403)\n-00605A Compressed Size       0000158A (5514)\n-00605E Uncompressed Size     0001376F (79727)\n+004771 DATA DESCRIPTOR       08074B50 (134695760)\n+004775 CRC                   6C5A36DD (1817851613)\n+004779 Compressed Size       0000026C (620)\n+00477D Uncompressed Size     00000495 (1173)\n \n-006062 LOCAL HEADER #16      04034B50 (67324752)\n-006066 Extract Zip Spec      14 (20) '2.0'\n-006067 Extract OS            00 (0) 'MS-DOS'\n-006068 General Purpose Flag  0808 (2056)\n+004781 LOCAL HEADER #16      04034B50 (67324752)\n+004785 Extract Zip Spec      14 (20) '2.0'\n+004786 Extract OS            00 (0) 'MS-DOS'\n+004787 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00606A Compression Method    0008 (8) 'Deflated'\n-00606C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-006070 CRC                   00000000 (0)\n-006074 Compressed Size       00000000 (0)\n-006078 Uncompressed Size     00000000 (0)\n-00607C Filename Length       0012 (18)\n-00607E Extra Length          0000 (0)\n-006080 Filename              'XXXXXXXXXXXXXXXXXX'\n+004789 Compression Method    0008 (8) 'Deflated'\n+00478B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00478F CRC                   00000000 (0)\n+004793 Compressed Size       00000000 (0)\n+004797 Uncompressed Size     00000000 (0)\n+00479B Filename Length       0030 (48)\n+00479D Extra Length          0000 (0)\n+00479F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6080: Filename 'XXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x479F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-006092 PAYLOAD\n+0047CF PAYLOAD\n \n-0076A2 DATA DESCRIPTOR       08074B50 (134695760)\n-0076A6 CRC                   7AAFE556 (2058347862)\n-0076AA Compressed Size       00001610 (5648)\n-0076AE Uncompressed Size     00013DDB (81371)\n+004A2D DATA DESCRIPTOR       08074B50 (134695760)\n+004A31 CRC                   566E5E12 (1450073618)\n+004A35 Compressed Size       0000025E (606)\n+004A39 Uncompressed Size     0000047F (1151)\n \n-0076B2 LOCAL HEADER #17      04034B50 (67324752)\n-0076B6 Extract Zip Spec      14 (20) '2.0'\n-0076B7 Extract OS            00 (0) 'MS-DOS'\n-0076B8 General Purpose Flag  0808 (2056)\n+004A3D LOCAL HEADER #17      04034B50 (67324752)\n+004A41 Extract Zip Spec      14 (20) '2.0'\n+004A42 Extract OS            00 (0) 'MS-DOS'\n+004A43 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0076BA Compression Method    0008 (8) 'Deflated'\n-0076BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0076C0 CRC                   00000000 (0)\n-0076C4 Compressed Size       00000000 (0)\n-0076C8 Uncompressed Size     00000000 (0)\n-0076CC Filename Length       0018 (24)\n-0076CE Extra Length          0000 (0)\n-0076D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+004A45 Compression Method    0008 (8) 'Deflated'\n+004A47 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+004A4B CRC                   00000000 (0)\n+004A4F Compressed Size       00000000 (0)\n+004A53 Uncompressed Size     00000000 (0)\n+004A57 Filename Length       002E (46)\n+004A59 Extra Length          0000 (0)\n+004A5B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x76D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4A5B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0076E8 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+004A89 PAYLOAD\n \n-00774D DATA DESCRIPTOR       08074B50 (134695760)\n-007751 CRC                   6642E973 (1715661171)\n-007755 Compressed Size       00000065 (101)\n-007759 Uncompressed Size     000000C8 (200)\n+005098 DATA DESCRIPTOR       08074B50 (134695760)\n+00509C CRC                   8233D78E (2184435598)\n+0050A0 Compressed Size       0000060F (1551)\n+0050A4 Uncompressed Size     000013B4 (5044)\n \n-00775D LOCAL HEADER #18      04034B50 (67324752)\n-007761 Extract Zip Spec      14 (20) '2.0'\n-007762 Extract OS            00 (0) 'MS-DOS'\n-007763 General Purpose Flag  0808 (2056)\n+0050A8 LOCAL HEADER #18      04034B50 (67324752)\n+0050AC Extract Zip Spec      14 (20) '2.0'\n+0050AD Extract OS            00 (0) 'MS-DOS'\n+0050AE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-007765 Compression Method    0008 (8) 'Deflated'\n-007767 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00776B CRC                   00000000 (0)\n-00776F Compressed Size       00000000 (0)\n-007773 Uncompressed Size     00000000 (0)\n-007777 Filename Length       0017 (23)\n-007779 Extra Length          0000 (0)\n-00777B Filename              'XXXXXXXXXXXXXXXXXXXXXXX'\n+0050B0 Compression Method    0008 (8) 'Deflated'\n+0050B2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0050B6 CRC                   00000000 (0)\n+0050BA Compressed Size       00000000 (0)\n+0050BE Uncompressed Size     00000000 (0)\n+0050C2 Filename Length       002C (44)\n+0050C4 Extra Length          0000 (0)\n+0050C6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x777B: Filename 'XXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x50C6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-007792 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0050F2 PAYLOAD\n \n-0077E5 DATA DESCRIPTOR       08074B50 (134695760)\n-0077E9 CRC                   03B2110A (62001418)\n-0077ED Compressed Size       00000053 (83)\n-0077F1 Uncompressed Size     00000091 (145)\n+00689C DATA DESCRIPTOR       08074B50 (134695760)\n+0068A0 CRC                   23EF92DF (602903263)\n+0068A4 Compressed Size       000017AA (6058)\n+0068A8 Uncompressed Size     0000606B (24683)\n \n-0077F5 LOCAL HEADER #19      04034B50 (67324752)\n-0077F9 Extract Zip Spec      14 (20) '2.0'\n-0077FA Extract OS            00 (0) 'MS-DOS'\n-0077FB General Purpose Flag  0808 (2056)\n+0068AC LOCAL HEADER #19      04034B50 (67324752)\n+0068B0 Extract Zip Spec      14 (20) '2.0'\n+0068B1 Extract OS            00 (0) 'MS-DOS'\n+0068B2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0077FD Compression Method    0008 (8) 'Deflated'\n-0077FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-007803 CRC                   00000000 (0)\n-007807 Compressed Size       00000000 (0)\n-00780B Uncompressed Size     00000000 (0)\n-00780F Filename Length       0034 (52)\n-007811 Extra Length          0000 (0)\n-007813 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0068B4 Compression Method    0008 (8) 'Deflated'\n+0068B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0068BA CRC                   00000000 (0)\n+0068BE Compressed Size       00000000 (0)\n+0068C2 Uncompressed Size     00000000 (0)\n+0068C6 Filename Length       002A (42)\n+0068C8 Extra Length          0000 (0)\n+0068CA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7813: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x68CA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-007847 PAYLOAD               XX\n+0068F4 PAYLOAD\n \n-007849 DATA DESCRIPTOR       08074B50 (134695760)\n-00784D CRC                   00000000 (0)\n-007851 Compressed Size       00000002 (2)\n-007855 Uncompressed Size     00000000 (0)\n+008494 DATA DESCRIPTOR       08074B50 (134695760)\n+008498 CRC                   8A9B11DB (2325418459)\n+00849C Compressed Size       00001BA0 (7072)\n+0084A0 Uncompressed Size     000080AE (32942)\n \n-007859 LOCAL HEADER #20      04034B50 (67324752)\n-00785D Extract Zip Spec      14 (20) '2.0'\n-00785E Extract OS            00 (0) 'MS-DOS'\n-00785F General Purpose Flag  0808 (2056)\n+0084A4 LOCAL HEADER #20      04034B50 (67324752)\n+0084A8 Extract Zip Spec      14 (20) '2.0'\n+0084A9 Extract OS            00 (0) 'MS-DOS'\n+0084AA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-007861 Compression Method    0008 (8) 'Deflated'\n-007863 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-007867 CRC                   00000000 (0)\n-00786B Compressed Size       00000000 (0)\n-00786F Uncompressed Size     00000000 (0)\n-007873 Filename Length       003B (59)\n-007875 Extra Length          0000 (0)\n-007877 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0084AC Compression Method    0008 (8) 'Deflated'\n+0084AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0084B2 CRC                   00000000 (0)\n+0084B6 Compressed Size       00000000 (0)\n+0084BA Uncompressed Size     00000000 (0)\n+0084BE Filename Length       0022 (34)\n+0084C0 Extra Length          0000 (0)\n+0084C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7877: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x84C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0078B2 PAYLOAD\n+0084E4 PAYLOAD               XX\n \n-007DB6 DATA DESCRIPTOR       08074B50 (134695760)\n-007DBA CRC                   FF3886BE (4281894590)\n-007DBE Compressed Size       00000504 (1284)\n-007DC2 Uncompressed Size     0000190E (6414)\n+0084E6 DATA DESCRIPTOR       08074B50 (134695760)\n+0084EA CRC                   00000000 (0)\n+0084EE Compressed Size       00000002 (2)\n+0084F2 Uncompressed Size     00000000 (0)\n \n-007DC6 LOCAL HEADER #21      04034B50 (67324752)\n-007DCA Extract Zip Spec      14 (20) '2.0'\n-007DCB Extract OS            00 (0) 'MS-DOS'\n-007DCC General Purpose Flag  0808 (2056)\n+0084F6 LOCAL HEADER #21      04034B50 (67324752)\n+0084FA Extract Zip Spec      14 (20) '2.0'\n+0084FB Extract OS            00 (0) 'MS-DOS'\n+0084FC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-007DCE Compression Method    0008 (8) 'Deflated'\n-007DD0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-007DD4 CRC                   00000000 (0)\n-007DD8 Compressed Size       00000000 (0)\n-007DDC Uncompressed Size     00000000 (0)\n-007DE0 Filename Length       0042 (66)\n-007DE2 Extra Length          0000 (0)\n-007DE4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0084FE Compression Method    0008 (8) 'Deflated'\n+008500 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+008504 CRC                   00000000 (0)\n+008508 Compressed Size       00000000 (0)\n+00850C Uncompressed Size     00000000 (0)\n+008510 Filename Length       0035 (53)\n+008512 Extra Length          0000 (0)\n+008514 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7DE4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8514: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-007E26 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+008549 PAYLOAD\n \n-007E6E DATA DESCRIPTOR       08074B50 (134695760)\n-007E72 CRC                   833E63EB (2201904107)\n-007E76 Compressed Size       00000048 (72)\n-007E7A Uncompressed Size     0000004A (74)\n+00AA4C DATA DESCRIPTOR       08074B50 (134695760)\n+00AA50 CRC                   D413AF69 (3558059881)\n+00AA54 Compressed Size       00002503 (9475)\n+00AA58 Uncompressed Size     0000D22D (53805)\n \n-007E7E LOCAL HEADER #22      04034B50 (67324752)\n-007E82 Extract Zip Spec      14 (20) '2.0'\n-007E83 Extract OS            00 (0) 'MS-DOS'\n-007E84 General Purpose Flag  0808 (2056)\n+00AA5C LOCAL HEADER #22      04034B50 (67324752)\n+00AA60 Extract Zip Spec      14 (20) '2.0'\n+00AA61 Extract OS            00 (0) 'MS-DOS'\n+00AA62 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-007E86 Compression Method    0008 (8) 'Deflated'\n-007E88 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-007E8C CRC                   00000000 (0)\n-007E90 Compressed Size       00000000 (0)\n-007E94 Uncompressed Size     00000000 (0)\n-007E98 Filename Length       002E (46)\n-007E9A Extra Length          0000 (0)\n-007E9C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+00AA64 Compression Method    0008 (8) 'Deflated'\n+00AA66 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00AA6A CRC                   00000000 (0)\n+00AA6E Compressed Size       00000000 (0)\n+00AA72 Uncompressed Size     00000000 (0)\n+00AA76 Filename Length       0046 (70)\n+00AA78 Extra Length          0000 (0)\n+00AA7A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7E9C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xAA7A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-007ECA PAYLOAD               XX\n+00AAC0 PAYLOAD\n \n-007ECC DATA DESCRIPTOR       08074B50 (134695760)\n-007ED0 CRC                   00000000 (0)\n-007ED4 Compressed Size       00000002 (2)\n-007ED8 Uncompressed Size     00000000 (0)\n+00AD1F DATA DESCRIPTOR       08074B50 (134695760)\n+00AD23 CRC                   E174331E (3782488862)\n+00AD27 Compressed Size       0000025F (607)\n+00AD2B Uncompressed Size     0000048E (1166)\n \n-007EDC LOCAL HEADER #23      04034B50 (67324752)\n-007EE0 Extract Zip Spec      14 (20) '2.0'\n-007EE1 Extract OS            00 (0) 'MS-DOS'\n-007EE2 General Purpose Flag  0808 (2056)\n+00AD2F LOCAL HEADER #23      04034B50 (67324752)\n+00AD33 Extract Zip Spec      14 (20) '2.0'\n+00AD34 Extract OS            00 (0) 'MS-DOS'\n+00AD35 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-007EE4 Compression Method    0008 (8) 'Deflated'\n-007EE6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-007EEA CRC                   00000000 (0)\n-007EEE Compressed Size       00000000 (0)\n-007EF2 Uncompressed Size     00000000 (0)\n-007EF6 Filename Length       0035 (53)\n-007EF8 Extra Length          0000 (0)\n-007EFA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+00AD37 Compression Method    0008 (8) 'Deflated'\n+00AD39 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00AD3D CRC                   00000000 (0)\n+00AD41 Compressed Size       00000000 (0)\n+00AD45 Uncompressed Size     00000000 (0)\n+00AD49 Filename Length       002B (43)\n+00AD4B Extra Length          0000 (0)\n+00AD4D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7EFA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xAD4D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-007F2F PAYLOAD\n+00AD78 PAYLOAD               XX\n \n-0082EB DATA DESCRIPTOR       08074B50 (134695760)\n-0082EF CRC                   3E035C22 (1040407586)\n-0082F3 Compressed Size       000003BC (956)\n-0082F7 Uncompressed Size     00000A38 (2616)\n+00AD7A DATA DESCRIPTOR       08074B50 (134695760)\n+00AD7E CRC                   00000000 (0)\n+00AD82 Compressed Size       00000002 (2)\n+00AD86 Uncompressed Size     00000000 (0)\n \n-0082FB LOCAL HEADER #24      04034B50 (67324752)\n-0082FF Extract Zip Spec      14 (20) '2.0'\n-008300 Extract OS            00 (0) 'MS-DOS'\n-008301 General Purpose Flag  0808 (2056)\n+00AD8A LOCAL HEADER #24      04034B50 (67324752)\n+00AD8E Extract Zip Spec      14 (20) '2.0'\n+00AD8F Extract OS            00 (0) 'MS-DOS'\n+00AD90 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-008303 Compression Method    0008 (8) 'Deflated'\n-008305 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-008309 CRC                   00000000 (0)\n-00830D Compressed Size       00000000 (0)\n-008311 Uncompressed Size     00000000 (0)\n-008315 Filename Length       003C (60)\n-008317 Extra Length          0000 (0)\n-008319 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+00AD92 Compression Method    0008 (8) 'Deflated'\n+00AD94 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00AD98 CRC                   00000000 (0)\n+00AD9C Compressed Size       00000000 (0)\n+00ADA0 Uncompressed Size     00000000 (0)\n+00ADA4 Filename Length       003F (63)\n+00ADA6 Extra Length          0000 (0)\n+00ADA8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8319: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xADA8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-008355 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+00ADE7 PAYLOAD\n \n-008397 DATA DESCRIPTOR       08074B50 (134695760)\n-00839B CRC                   78750509 (2020934921)\n-00839F Compressed Size       00000042 (66)\n-0083A3 Uncompressed Size     00000044 (68)\n+00B19D DATA DESCRIPTOR       08074B50 (134695760)\n+00B1A1 CRC                   FC3CBC13 (4231838739)\n+00B1A5 Compressed Size       000003B6 (950)\n+00B1A9 Uncompressed Size     00000A37 (2615)\n \n-0083A7 LOCAL HEADER #25      04034B50 (67324752)\n-0083AB Extract Zip Spec      14 (20) '2.0'\n-0083AC Extract OS            00 (0) 'MS-DOS'\n-0083AD General Purpose Flag  0808 (2056)\n+00B1AD LOCAL HEADER #25      04034B50 (67324752)\n+00B1B1 Extract Zip Spec      14 (20) '2.0'\n+00B1B2 Extract OS            00 (0) 'MS-DOS'\n+00B1B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0083AF Compression Method    0008 (8) 'Deflated'\n-0083B1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0083B5 CRC                   00000000 (0)\n-0083B9 Compressed Size       00000000 (0)\n-0083BD Uncompressed Size     00000000 (0)\n-0083C1 Filename Length       0009 (9)\n-0083C3 Extra Length          0000 (0)\n-0083C5 Filename              'XXXXXXXXX'\n+00B1B5 Compression Method    0008 (8) 'Deflated'\n+00B1B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00B1BB CRC                   00000000 (0)\n+00B1BF Compressed Size       00000000 (0)\n+00B1C3 Uncompressed Size     00000000 (0)\n+00B1C7 Filename Length       0048 (72)\n+00B1C9 Extra Length          0000 (0)\n+00B1CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x83C5: Filename 'XXXXXXXXX'\n+# WARNING: Offset 0xB1CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0083CE PAYLOAD               XX\n+00B213 PAYLOAD\n \n-0083D0 DATA DESCRIPTOR       08074B50 (134695760)\n-0083D4 CRC                   00000000 (0)\n-0083D8 Compressed Size       00000002 (2)\n-0083DC Uncompressed Size     00000000 (0)\n+00BA7B DATA DESCRIPTOR       08074B50 (134695760)\n+00BA7F CRC                   A83ED6AA (2822690474)\n+00BA83 Compressed Size       00000868 (2152)\n+00BA87 Uncompressed Size     00002555 (9557)\n \n-0083E0 LOCAL HEADER #26      04034B50 (67324752)\n-0083E4 Extract Zip Spec      14 (20) '2.0'\n-0083E5 Extract OS            00 (0) 'MS-DOS'\n-0083E6 General Purpose Flag  0808 (2056)\n+00BA8B LOCAL HEADER #26      04034B50 (67324752)\n+00BA8F Extract Zip Spec      14 (20) '2.0'\n+00BA90 Extract OS            00 (0) 'MS-DOS'\n+00BA91 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0083E8 Compression Method    0008 (8) 'Deflated'\n-0083EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0083EE CRC                   00000000 (0)\n-0083F2 Compressed Size       00000000 (0)\n-0083F6 Uncompressed Size     00000000 (0)\n-0083FA Filename Length       001E (30)\n-0083FC Extra Length          0000 (0)\n-0083FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+00BA93 Compression Method    0008 (8) 'Deflated'\n+00BA95 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00BA99 CRC                   00000000 (0)\n+00BA9D Compressed Size       00000000 (0)\n+00BAA1 Uncompressed Size     00000000 (0)\n+00BAA5 Filename Length       0045 (69)\n+00BAA7 Extra Length          0000 (0)\n+00BAA9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x83FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBAA9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00841C PAYLOAD\n+00BAEE PAYLOAD\n \n-008AEE DATA DESCRIPTOR       08074B50 (134695760)\n-008AF2 CRC                   94CE4031 (2496544817)\n-008AF6 Compressed Size       000006D2 (1746)\n-008AFA Uncompressed Size     000011A8 (4520)\n+00C174 DATA DESCRIPTOR       08074B50 (134695760)\n+00C178 CRC                   E160ED1C (3781225756)\n+00C17C Compressed Size       00000686 (1670)\n+00C180 Uncompressed Size     00001657 (5719)\n \n-008AFE LOCAL HEADER #27      04034B50 (67324752)\n-008B02 Extract Zip Spec      14 (20) '2.0'\n-008B03 Extract OS            00 (0) 'MS-DOS'\n-008B04 General Purpose Flag  0808 (2056)\n+00C184 LOCAL HEADER #27      04034B50 (67324752)\n+00C188 Extract Zip Spec      14 (20) '2.0'\n+00C189 Extract OS            00 (0) 'MS-DOS'\n+00C18A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-008B06 Compression Method    0008 (8) 'Deflated'\n-008B08 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-008B0C CRC                   00000000 (0)\n-008B10 Compressed Size       00000000 (0)\n-008B14 Uncompressed Size     00000000 (0)\n-008B18 Filename Length       002D (45)\n-008B1A Extra Length          0000 (0)\n-008B1C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+00C18C Compression Method    0008 (8) 'Deflated'\n+00C18E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00C192 CRC                   00000000 (0)\n+00C196 Compressed Size       00000000 (0)\n+00C19A Uncompressed Size     00000000 (0)\n+00C19E Filename Length       0048 (72)\n+00C1A0 Extra Length          0000 (0)\n+00C1A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8B1C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC1A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-008B49 PAYLOAD               XX\n+00C1EA PAYLOAD\n \n-008B4B DATA DESCRIPTOR       08074B50 (134695760)\n-008B4F CRC                   00000000 (0)\n-008B53 Compressed Size       00000002 (2)\n-008B57 Uncompressed Size     00000000 (0)\n+00C700 DATA DESCRIPTOR       08074B50 (134695760)\n+00C704 CRC                   156605D7 (359007703)\n+00C708 Compressed Size       00000516 (1302)\n+00C70C Uncompressed Size     000010AA (4266)\n \n-008B5B LOCAL HEADER #28      04034B50 (67324752)\n-008B5F Extract Zip Spec      14 (20) '2.0'\n-008B60 Extract OS            00 (0) 'MS-DOS'\n-008B61 General Purpose Flag  0808 (2056)\n+00C710 LOCAL HEADER #28      04034B50 (67324752)\n+00C714 Extract Zip Spec      14 (20) '2.0'\n+00C715 Extract OS            00 (0) 'MS-DOS'\n+00C716 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-008B63 Compression Method    0008 (8) 'Deflated'\n-008B65 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-008B69 CRC                   00000000 (0)\n-008B6D Compressed Size       00000000 (0)\n-008B71 Uncompressed Size     00000000 (0)\n-008B75 Filename Length       0034 (52)\n-008B77 Extra Length          0000 (0)\n-008B79 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+00C718 Compression Method    0008 (8) 'Deflated'\n+00C71A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00C71E CRC                   00000000 (0)\n+00C722 Compressed Size       00000000 (0)\n+00C726 Uncompressed Size     00000000 (0)\n+00C72A Filename Length       0046 (70)\n+00C72C Extra Length          0000 (0)\n+00C72E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8B79: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC72E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-008BAD PAYLOAD\n+00C774 PAYLOAD\n \n-008F87 DATA DESCRIPTOR       08074B50 (134695760)\n-008F8B CRC                   4D73DC93 (1299438739)\n-008F8F Compressed Size       000003DA (986)\n-008F93 Uncompressed Size     00000BA2 (2978)\n+00CE27 DATA DESCRIPTOR       08074B50 (134695760)\n+00CE2B CRC                   67C26956 (1740794198)\n+00CE2F Compressed Size       000006B3 (1715)\n+00CE33 Uncompressed Size     00001B93 (7059)\n \n-008F97 LOCAL HEADER #29      04034B50 (67324752)\n-008F9B Extract Zip Spec      14 (20) '2.0'\n-008F9C Extract OS            00 (0) 'MS-DOS'\n-008F9D General Purpose Flag  0808 (2056)\n+00CE37 LOCAL HEADER #29      04034B50 (67324752)\n+00CE3B Extract Zip Spec      14 (20) '2.0'\n+00CE3C Extract OS            00 (0) 'MS-DOS'\n+00CE3D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-008F9F Compression Method    0008 (8) 'Deflated'\n-008FA1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-008FA5 CRC                   00000000 (0)\n-008FA9 Compressed Size       00000000 (0)\n-008FAD Uncompressed Size     00000000 (0)\n-008FB1 Filename Length       003B (59)\n-008FB3 Extra Length          0000 (0)\n-008FB5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+00CE3F Compression Method    0008 (8) 'Deflated'\n+00CE41 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00CE45 CRC                   00000000 (0)\n+00CE49 Compressed Size       00000000 (0)\n+00CE4D Uncompressed Size     00000000 (0)\n+00CE51 Filename Length       0042 (66)\n+00CE53 Extra Length          0000 (0)\n+00CE55 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8FB5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCE55: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-008FF0 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+00CE97 PAYLOAD\n \n-009031 DATA DESCRIPTOR       08074B50 (134695760)\n-009035 CRC                   295DB5AA (694007210)\n-009039 Compressed Size       00000041 (65)\n-00903D Uncompressed Size     00000043 (67)\n+00D4F8 DATA DESCRIPTOR       08074B50 (134695760)\n+00D4FC CRC                   46796056 (1182359638)\n+00D500 Compressed Size       00000661 (1633)\n+00D504 Uncompressed Size     00001B45 (6981)\n \n-009041 LOCAL HEADER #30      04034B50 (67324752)\n-009045 Extract Zip Spec      14 (20) '2.0'\n-009046 Extract OS            00 (0) 'MS-DOS'\n-009047 General Purpose Flag  0808 (2056)\n+00D508 LOCAL HEADER #30      04034B50 (67324752)\n+00D50C Extract Zip Spec      14 (20) '2.0'\n+00D50D Extract OS            00 (0) 'MS-DOS'\n+00D50E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-009049 Compression Method    0008 (8) 'Deflated'\n-00904B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00904F CRC                   00000000 (0)\n-009053 Compressed Size       00000000 (0)\n-009057 Uncompressed Size     00000000 (0)\n-00905B Filename Length       0033 (51)\n-00905D Extra Length          0000 (0)\n-00905F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+00D510 Compression Method    0008 (8) 'Deflated'\n+00D512 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00D516 CRC                   00000000 (0)\n+00D51A Compressed Size       00000000 (0)\n+00D51E Uncompressed Size     00000000 (0)\n+00D522 Filename Length       003F (63)\n+00D524 Extra Length          0000 (0)\n+00D526 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x905F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD526: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-009092 PAYLOAD               XX\n+00D565 PAYLOAD\n \n-009094 DATA DESCRIPTOR       08074B50 (134695760)\n-009098 CRC                   00000000 (0)\n-00909C Compressed Size       00000002 (2)\n-0090A0 Uncompressed Size     00000000 (0)\n+00D87B DATA DESCRIPTOR       08074B50 (134695760)\n+00D87F CRC                   C694724C (3331617356)\n+00D883 Compressed Size       00000316 (790)\n+00D887 Uncompressed Size     00000788 (1928)\n \n-0090A4 LOCAL HEADER #31      04034B50 (67324752)\n-0090A8 Extract Zip Spec      14 (20) '2.0'\n-0090A9 Extract OS            00 (0) 'MS-DOS'\n-0090AA General Purpose Flag  0808 (2056)\n+00D88B LOCAL HEADER #31      04034B50 (67324752)\n+00D88F Extract Zip Spec      14 (20) '2.0'\n+00D890 Extract OS            00 (0) 'MS-DOS'\n+00D891 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0090AC Compression Method    0008 (8) 'Deflated'\n-0090AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0090B2 CRC                   00000000 (0)\n-0090B6 Compressed Size       00000000 (0)\n-0090BA Uncompressed Size     00000000 (0)\n-0090BE Filename Length       003A (58)\n-0090C0 Extra Length          0000 (0)\n-0090C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+00D893 Compression Method    0008 (8) 'Deflated'\n+00D895 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00D899 CRC                   00000000 (0)\n+00D89D Compressed Size       00000000 (0)\n+00D8A1 Uncompressed Size     00000000 (0)\n+00D8A5 Filename Length       0043 (67)\n+00D8A7 Extra Length          0000 (0)\n+00D8A9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x90C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD8A9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0090FC PAYLOAD\n+00D8EC PAYLOAD\n \n-009492 DATA DESCRIPTOR       08074B50 (134695760)\n-009496 CRC                   B1327293 (2972873363)\n-00949A Compressed Size       00000396 (918)\n-00949E Uncompressed Size     000008EB (2283)\n+00DDAF DATA DESCRIPTOR       08074B50 (134695760)\n+00DDB3 CRC                   E2414032 (3795927090)\n+00DDB7 Compressed Size       000004C3 (1219)\n+00DDBB Uncompressed Size     0000118B (4491)\n \n-0094A2 LOCAL HEADER #32      04034B50 (67324752)\n-0094A6 Extract Zip Spec      14 (20) '2.0'\n-0094A7 Extract OS            00 (0) 'MS-DOS'\n-0094A8 General Purpose Flag  0808 (2056)\n+00DDBF LOCAL HEADER #32      04034B50 (67324752)\n+00DDC3 Extract Zip Spec      14 (20) '2.0'\n+00DDC4 Extract OS            00 (0) 'MS-DOS'\n+00DDC5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0094AA Compression Method    0008 (8) 'Deflated'\n-0094AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0094B0 CRC                   00000000 (0)\n-0094B4 Compressed Size       00000000 (0)\n-0094B8 Uncompressed Size     00000000 (0)\n-0094BC Filename Length       0041 (65)\n-0094BE Extra Length          0000 (0)\n-0094C0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+00DDC7 Compression Method    0008 (8) 'Deflated'\n+00DDC9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00DDCD CRC                   00000000 (0)\n+00DDD1 Compressed Size       00000000 (0)\n+00DDD5 Uncompressed Size     00000000 (0)\n+00DDD9 Filename Length       003F (63)\n+00DDDB Extra Length          0000 (0)\n+00DDDD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x94C0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDDDD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-009501 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+00DE1C PAYLOAD\n \n-009545 DATA DESCRIPTOR       08074B50 (134695760)\n-009549 CRC                   20BB9478 (549164152)\n-00954D Compressed Size       00000044 (68)\n-009551 Uncompressed Size     00000049 (73)\n+00E2B0 DATA DESCRIPTOR       08074B50 (134695760)\n+00E2B4 CRC                   85CF6764 (2244962148)\n+00E2B8 Compressed Size       00000494 (1172)\n+00E2BC Uncompressed Size     00000DB3 (3507)\n \n-009555 LOCAL HEADER #33      04034B50 (67324752)\n-009559 Extract Zip Spec      14 (20) '2.0'\n-00955A Extract OS            00 (0) 'MS-DOS'\n-00955B General Purpose Flag  0808 (2056)\n+00E2C0 LOCAL HEADER #33      04034B50 (67324752)\n+00E2C4 Extract Zip Spec      14 (20) '2.0'\n+00E2C5 Extract OS            00 (0) 'MS-DOS'\n+00E2C6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00955D Compression Method    0008 (8) 'Deflated'\n-00955F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-009563 CRC                   00000000 (0)\n-009567 Compressed Size       00000000 (0)\n-00956B Uncompressed Size     00000000 (0)\n-00956F Filename Length       0038 (56)\n-009571 Extra Length          0000 (0)\n-009573 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+00E2C8 Compression Method    0008 (8) 'Deflated'\n+00E2CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00E2CE CRC                   00000000 (0)\n+00E2D2 Compressed Size       00000000 (0)\n+00E2D6 Uncompressed Size     00000000 (0)\n+00E2DA Filename Length       0045 (69)\n+00E2DC Extra Length          0000 (0)\n+00E2DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9573: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE2DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0095AB PAYLOAD               XX\n+00E323 PAYLOAD\n \n-0095AD DATA DESCRIPTOR       08074B50 (134695760)\n-0095B1 CRC                   00000000 (0)\n-0095B5 Compressed Size       00000002 (2)\n-0095B9 Uncompressed Size     00000000 (0)\n+00E820 DATA DESCRIPTOR       08074B50 (134695760)\n+00E824 CRC                   D26D2315 (3530367765)\n+00E828 Compressed Size       000004FD (1277)\n+00E82C Uncompressed Size     0000115F (4447)\n \n-0095BD LOCAL HEADER #34      04034B50 (67324752)\n-0095C1 Extract Zip Spec      14 (20) '2.0'\n-0095C2 Extract OS            00 (0) 'MS-DOS'\n-0095C3 General Purpose Flag  0808 (2056)\n+00E830 LOCAL HEADER #34      04034B50 (67324752)\n+00E834 Extract Zip Spec      14 (20) '2.0'\n+00E835 Extract OS            00 (0) 'MS-DOS'\n+00E836 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0095C5 Compression Method    0008 (8) 'Deflated'\n-0095C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0095CB CRC                   00000000 (0)\n-0095CF Compressed Size       00000000 (0)\n-0095D3 Uncompressed Size     00000000 (0)\n-0095D7 Filename Length       003F (63)\n-0095D9 Extra Length          0000 (0)\n-0095DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+00E838 Compression Method    0008 (8) 'Deflated'\n+00E83A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00E83E CRC                   00000000 (0)\n+00E842 Compressed Size       00000000 (0)\n+00E846 Uncompressed Size     00000000 (0)\n+00E84A Filename Length       003D (61)\n+00E84C Extra Length          0000 (0)\n+00E84E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x95DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE84E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00961A PAYLOAD\n+00E88B PAYLOAD\n \n-0099F6 DATA DESCRIPTOR       08074B50 (134695760)\n-0099FA CRC                   C4977D68 (3298262376)\n-0099FE Compressed Size       000003DC (988)\n-009A02 Uncompressed Size     00000C15 (3093)\n+00EE99 DATA DESCRIPTOR       08074B50 (134695760)\n+00EE9D CRC                   F796C627 (4153853479)\n+00EEA1 Compressed Size       0000060E (1550)\n+00EEA5 Uncompressed Size     000018D0 (6352)\n \n-009A06 LOCAL HEADER #35      04034B50 (67324752)\n-009A0A Extract Zip Spec      14 (20) '2.0'\n-009A0B Extract OS            00 (0) 'MS-DOS'\n-009A0C General Purpose Flag  0808 (2056)\n+00EEA9 LOCAL HEADER #35      04034B50 (67324752)\n+00EEAD Extract Zip Spec      14 (20) '2.0'\n+00EEAE Extract OS            00 (0) 'MS-DOS'\n+00EEAF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-009A0E Compression Method    0008 (8) 'Deflated'\n-009A10 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-009A14 CRC                   00000000 (0)\n-009A18 Compressed Size       00000000 (0)\n-009A1C Uncompressed Size     00000000 (0)\n-009A20 Filename Length       0046 (70)\n-009A22 Extra Length          0000 (0)\n-009A24 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+00EEB1 Compression Method    0008 (8) 'Deflated'\n+00EEB3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00EEB7 CRC                   00000000 (0)\n+00EEBB Compressed Size       00000000 (0)\n+00EEBF Uncompressed Size     00000000 (0)\n+00EEC3 Filename Length       003D (61)\n+00EEC5 Extra Length          0000 (0)\n+00EEC7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9A24: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEEC7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-009A6A PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+00EF04 PAYLOAD\n \n-009AB4 DATA DESCRIPTOR       08074B50 (134695760)\n-009AB8 CRC                   D1A9E247 (3517571655)\n-009ABC Compressed Size       0000004A (74)\n-009AC0 Uncompressed Size     0000004E (78)\n+00F342 DATA DESCRIPTOR       08074B50 (134695760)\n+00F346 CRC                   EB12A7F1 (3943868401)\n+00F34A Compressed Size       0000043E (1086)\n+00F34E Uncompressed Size     00000E08 (3592)\n \n-009AC4 LOCAL HEADER #36      04034B50 (67324752)\n-009AC8 Extract Zip Spec      14 (20) '2.0'\n-009AC9 Extract OS            00 (0) 'MS-DOS'\n-009ACA General Purpose Flag  0808 (2056)\n+00F352 LOCAL HEADER #36      04034B50 (67324752)\n+00F356 Extract Zip Spec      14 (20) '2.0'\n+00F357 Extract OS            00 (0) 'MS-DOS'\n+00F358 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-009ACC Compression Method    0008 (8) 'Deflated'\n-009ACE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-009AD2 CRC                   00000000 (0)\n-009AD6 Compressed Size       00000000 (0)\n-009ADA Uncompressed Size     00000000 (0)\n-009ADE Filename Length       0033 (51)\n-009AE0 Extra Length          0000 (0)\n-009AE2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+00F35A Compression Method    0008 (8) 'Deflated'\n+00F35C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00F360 CRC                   00000000 (0)\n+00F364 Compressed Size       00000000 (0)\n+00F368 Uncompressed Size     00000000 (0)\n+00F36C Filename Length       003E (62)\n+00F36E Extra Length          0000 (0)\n+00F370 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9AE2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF370: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-009B15 PAYLOAD               XX\n+00F3AE PAYLOAD\n \n-009B17 DATA DESCRIPTOR       08074B50 (134695760)\n-009B1B CRC                   00000000 (0)\n-009B1F Compressed Size       00000002 (2)\n-009B23 Uncompressed Size     00000000 (0)\n+00F843 DATA DESCRIPTOR       08074B50 (134695760)\n+00F847 CRC                   F5A79DAF (4121402799)\n+00F84B Compressed Size       00000495 (1173)\n+00F84F Uncompressed Size     00000F2D (3885)\n \n-009B27 LOCAL HEADER #37      04034B50 (67324752)\n-009B2B Extract Zip Spec      14 (20) '2.0'\n-009B2C Extract OS            00 (0) 'MS-DOS'\n-009B2D General Purpose Flag  0808 (2056)\n+00F853 LOCAL HEADER #37      04034B50 (67324752)\n+00F857 Extract Zip Spec      14 (20) '2.0'\n+00F858 Extract OS            00 (0) 'MS-DOS'\n+00F859 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-009B2F Compression Method    0008 (8) 'Deflated'\n-009B31 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-009B35 CRC                   00000000 (0)\n-009B39 Compressed Size       00000000 (0)\n-009B3D Uncompressed Size     00000000 (0)\n-009B41 Filename Length       003A (58)\n-009B43 Extra Length          0000 (0)\n-009B45 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+00F85B Compression Method    0008 (8) 'Deflated'\n+00F85D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+00F861 CRC                   00000000 (0)\n+00F865 Compressed Size       00000000 (0)\n+00F869 Uncompressed Size     00000000 (0)\n+00F86D Filename Length       003F (63)\n+00F86F Extra Length          0000 (0)\n+00F871 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9B45: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF871: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-009B7F PAYLOAD\n+00F8B0 PAYLOAD\n \n-009F0A DATA DESCRIPTOR       08074B50 (134695760)\n-009F0E CRC                   2EBB8418 (784040984)\n-009F12 Compressed Size       0000038B (907)\n-009F16 Uncompressed Size     00000951 (2385)\n+01016D DATA DESCRIPTOR       08074B50 (134695760)\n+010171 CRC                   24F4C726 (620021542)\n+010175 Compressed Size       000008BD (2237)\n+010179 Uncompressed Size     000028F1 (10481)\n \n-009F1A LOCAL HEADER #38      04034B50 (67324752)\n-009F1E Extract Zip Spec      14 (20) '2.0'\n-009F1F Extract OS            00 (0) 'MS-DOS'\n-009F20 General Purpose Flag  0808 (2056)\n+01017D LOCAL HEADER #38      04034B50 (67324752)\n+010181 Extract Zip Spec      14 (20) '2.0'\n+010182 Extract OS            00 (0) 'MS-DOS'\n+010183 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-009F22 Compression Method    0008 (8) 'Deflated'\n-009F24 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-009F28 CRC                   00000000 (0)\n-009F2C Compressed Size       00000000 (0)\n-009F30 Uncompressed Size     00000000 (0)\n-009F34 Filename Length       0041 (65)\n-009F36 Extra Length          0000 (0)\n-009F38 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+010185 Compression Method    0008 (8) 'Deflated'\n+010187 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01018B CRC                   00000000 (0)\n+01018F Compressed Size       00000000 (0)\n+010193 Uncompressed Size     00000000 (0)\n+010197 Filename Length       003F (63)\n+010199 Extra Length          0000 (0)\n+01019B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9F38: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1019B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-009F79 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0101DA PAYLOAD\n \n-009FC0 DATA DESCRIPTOR       08074B50 (134695760)\n-009FC4 CRC                   86CFF4B4 (2261775540)\n-009FC8 Compressed Size       00000047 (71)\n-009FCC Uncompressed Size     00000049 (73)\n+01089B DATA DESCRIPTOR       08074B50 (134695760)\n+01089F CRC                   35C5DEAF (902160047)\n+0108A3 Compressed Size       000006C1 (1729)\n+0108A7 Uncompressed Size     00001BA7 (7079)\n \n-009FD0 LOCAL HEADER #39      04034B50 (67324752)\n-009FD4 Extract Zip Spec      14 (20) '2.0'\n-009FD5 Extract OS            00 (0) 'MS-DOS'\n-009FD6 General Purpose Flag  0808 (2056)\n+0108AB LOCAL HEADER #39      04034B50 (67324752)\n+0108AF Extract Zip Spec      14 (20) '2.0'\n+0108B0 Extract OS            00 (0) 'MS-DOS'\n+0108B1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-009FD8 Compression Method    0008 (8) 'Deflated'\n-009FDA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-009FDE CRC                   00000000 (0)\n-009FE2 Compressed Size       00000000 (0)\n-009FE6 Uncompressed Size     00000000 (0)\n-009FEA Filename Length       0035 (53)\n-009FEC Extra Length          0000 (0)\n-009FEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0108B3 Compression Method    0008 (8) 'Deflated'\n+0108B5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0108B9 CRC                   00000000 (0)\n+0108BD Compressed Size       00000000 (0)\n+0108C1 Uncompressed Size     00000000 (0)\n+0108C5 Filename Length       0040 (64)\n+0108C7 Extra Length          0000 (0)\n+0108C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9FEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x108C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00A023 PAYLOAD               XX\n+010909 PAYLOAD\n \n-00A025 DATA DESCRIPTOR       08074B50 (134695760)\n-00A029 CRC                   00000000 (0)\n-00A02D Compressed Size       00000002 (2)\n-00A031 Uncompressed Size     00000000 (0)\n+010E69 DATA DESCRIPTOR       08074B50 (134695760)\n+010E6D CRC                   4C4BC15C (1280033116)\n+010E71 Compressed Size       00000560 (1376)\n+010E75 Uncompressed Size     000012C9 (4809)\n \n-00A035 LOCAL HEADER #40      04034B50 (67324752)\n-00A039 Extract Zip Spec      14 (20) '2.0'\n-00A03A Extract OS            00 (0) 'MS-DOS'\n-00A03B General Purpose Flag  0808 (2056)\n+010E79 LOCAL HEADER #40      04034B50 (67324752)\n+010E7D Extract Zip Spec      14 (20) '2.0'\n+010E7E Extract OS            00 (0) 'MS-DOS'\n+010E7F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00A03D Compression Method    0008 (8) 'Deflated'\n-00A03F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00A043 CRC                   00000000 (0)\n-00A047 Compressed Size       00000000 (0)\n-00A04B Uncompressed Size     00000000 (0)\n-00A04F Filename Length       003C (60)\n-00A051 Extra Length          0000 (0)\n-00A053 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+010E81 Compression Method    0008 (8) 'Deflated'\n+010E83 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+010E87 CRC                   00000000 (0)\n+010E8B Compressed Size       00000000 (0)\n+010E8F Uncompressed Size     00000000 (0)\n+010E93 Filename Length       003F (63)\n+010E95 Extra Length          0000 (0)\n+010E97 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA053: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10E97: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00A08F PAYLOAD\n+010ED6 PAYLOAD\n \n-00A427 DATA DESCRIPTOR       08074B50 (134695760)\n-00A42B CRC                   4EEF2300 (1324294912)\n-00A42F Compressed Size       00000398 (920)\n-00A433 Uncompressed Size     00000916 (2326)\n+0117EA DATA DESCRIPTOR       08074B50 (134695760)\n+0117EE CRC                   3875CC22 (947244066)\n+0117F2 Compressed Size       00000914 (2324)\n+0117F6 Uncompressed Size     00002741 (10049)\n \n-00A437 LOCAL HEADER #41      04034B50 (67324752)\n-00A43B Extract Zip Spec      14 (20) '2.0'\n-00A43C Extract OS            00 (0) 'MS-DOS'\n-00A43D General Purpose Flag  0808 (2056)\n+0117FA LOCAL HEADER #41      04034B50 (67324752)\n+0117FE Extract Zip Spec      14 (20) '2.0'\n+0117FF Extract OS            00 (0) 'MS-DOS'\n+011800 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00A43F Compression Method    0008 (8) 'Deflated'\n-00A441 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00A445 CRC                   00000000 (0)\n-00A449 Compressed Size       00000000 (0)\n-00A44D Uncompressed Size     00000000 (0)\n-00A451 Filename Length       0043 (67)\n-00A453 Extra Length          0000 (0)\n-00A455 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+011802 Compression Method    0008 (8) 'Deflated'\n+011804 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+011808 CRC                   00000000 (0)\n+01180C Compressed Size       00000000 (0)\n+011810 Uncompressed Size     00000000 (0)\n+011814 Filename Length       003E (62)\n+011816 Extra Length          0000 (0)\n+011818 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA455: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x11818: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00A498 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+011856 PAYLOAD\n \n-00A4E1 DATA DESCRIPTOR       08074B50 (134695760)\n-00A4E5 CRC                   7D6B90B6 (2104201398)\n-00A4E9 Compressed Size       00000049 (73)\n-00A4ED Uncompressed Size     0000004B (75)\n+011D54 DATA DESCRIPTOR       08074B50 (134695760)\n+011D58 CRC                   5053B7A1 (1347663777)\n+011D5C Compressed Size       000004FE (1278)\n+011D60 Uncompressed Size     000011F9 (4601)\n \n-00A4F1 LOCAL HEADER #42      04034B50 (67324752)\n-00A4F5 Extract Zip Spec      14 (20) '2.0'\n-00A4F6 Extract OS            00 (0) 'MS-DOS'\n-00A4F7 General Purpose Flag  0808 (2056)\n+011D64 LOCAL HEADER #42      04034B50 (67324752)\n+011D68 Extract Zip Spec      14 (20) '2.0'\n+011D69 Extract OS            00 (0) 'MS-DOS'\n+011D6A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00A4F9 Compression Method    0008 (8) 'Deflated'\n-00A4FB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00A4FF CRC                   00000000 (0)\n-00A503 Compressed Size       00000000 (0)\n-00A507 Uncompressed Size     00000000 (0)\n-00A50B Filename Length       0036 (54)\n-00A50D Extra Length          0000 (0)\n-00A50F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+011D6C Compression Method    0008 (8) 'Deflated'\n+011D6E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+011D72 CRC                   00000000 (0)\n+011D76 Compressed Size       00000000 (0)\n+011D7A Uncompressed Size     00000000 (0)\n+011D7E Filename Length       003C (60)\n+011D80 Extra Length          0000 (0)\n+011D82 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA50F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x11D82: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00A545 PAYLOAD               XX\n+011DBE PAYLOAD\n \n-00A547 DATA DESCRIPTOR       08074B50 (134695760)\n-00A54B CRC                   00000000 (0)\n-00A54F Compressed Size       00000002 (2)\n-00A553 Uncompressed Size     00000000 (0)\n+01200A DATA DESCRIPTOR       08074B50 (134695760)\n+01200E CRC                   AA9A314A (2862231882)\n+012012 Compressed Size       0000024C (588)\n+012016 Uncompressed Size     0000041E (1054)\n \n-00A557 LOCAL HEADER #43      04034B50 (67324752)\n-00A55B Extract Zip Spec      14 (20) '2.0'\n-00A55C Extract OS            00 (0) 'MS-DOS'\n-00A55D General Purpose Flag  0808 (2056)\n+01201A LOCAL HEADER #43      04034B50 (67324752)\n+01201E Extract Zip Spec      14 (20) '2.0'\n+01201F Extract OS            00 (0) 'MS-DOS'\n+012020 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00A55F Compression Method    0008 (8) 'Deflated'\n-00A561 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00A565 CRC                   00000000 (0)\n-00A569 Compressed Size       00000000 (0)\n-00A56D Uncompressed Size     00000000 (0)\n-00A571 Filename Length       003D (61)\n-00A573 Extra Length          0000 (0)\n-00A575 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+012022 Compression Method    0008 (8) 'Deflated'\n+012024 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+012028 CRC                   00000000 (0)\n+01202C Compressed Size       00000000 (0)\n+012030 Uncompressed Size     00000000 (0)\n+012034 Filename Length       001E (30)\n+012036 Extra Length          0000 (0)\n+012038 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA575: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12038: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00A5B2 PAYLOAD\n+012056 PAYLOAD               XX\n \n-00A963 DATA DESCRIPTOR       08074B50 (134695760)\n-00A967 CRC                   2E65EAC2 (778431170)\n-00A96B Compressed Size       000003B1 (945)\n-00A96F Uncompressed Size     0000095F (2399)\n+012058 DATA DESCRIPTOR       08074B50 (134695760)\n+01205C CRC                   00000000 (0)\n+012060 Compressed Size       00000002 (2)\n+012064 Uncompressed Size     00000000 (0)\n \n-00A973 LOCAL HEADER #44      04034B50 (67324752)\n-00A977 Extract Zip Spec      14 (20) '2.0'\n-00A978 Extract OS            00 (0) 'MS-DOS'\n-00A979 General Purpose Flag  0808 (2056)\n+012068 LOCAL HEADER #44      04034B50 (67324752)\n+01206C Extract Zip Spec      14 (20) '2.0'\n+01206D Extract OS            00 (0) 'MS-DOS'\n+01206E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00A97B Compression Method    0008 (8) 'Deflated'\n-00A97D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00A981 CRC                   00000000 (0)\n-00A985 Compressed Size       00000000 (0)\n-00A989 Uncompressed Size     00000000 (0)\n-00A98D Filename Length       0044 (68)\n-00A98F Extra Length          0000 (0)\n-00A991 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+012070 Compression Method    0008 (8) 'Deflated'\n+012072 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+012076 CRC                   00000000 (0)\n+01207A Compressed Size       00000000 (0)\n+01207E Uncompressed Size     00000000 (0)\n+012082 Filename Length       003D (61)\n+012084 Extra Length          0000 (0)\n+012086 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA991: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12086: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00A9D5 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0120C3 PAYLOAD\n \n-00AA1F DATA DESCRIPTOR       08074B50 (134695760)\n-00AA23 CRC                   E328D6D4 (3811104468)\n-00AA27 Compressed Size       0000004A (74)\n-00AA2B Uncompressed Size     0000004C (76)\n+012337 DATA DESCRIPTOR       08074B50 (134695760)\n+01233B CRC                   7C75425F (2088059487)\n+01233F Compressed Size       00000274 (628)\n+012343 Uncompressed Size     00000499 (1177)\n \n-00AA2F LOCAL HEADER #45      04034B50 (67324752)\n-00AA33 Extract Zip Spec      14 (20) '2.0'\n-00AA34 Extract OS            00 (0) 'MS-DOS'\n-00AA35 General Purpose Flag  0808 (2056)\n+012347 LOCAL HEADER #45      04034B50 (67324752)\n+01234B Extract Zip Spec      14 (20) '2.0'\n+01234C Extract OS            00 (0) 'MS-DOS'\n+01234D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00AA37 Compression Method    0008 (8) 'Deflated'\n-00AA39 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00AA3D CRC                   00000000 (0)\n-00AA41 Compressed Size       00000000 (0)\n-00AA45 Uncompressed Size     00000000 (0)\n-00AA49 Filename Length       0035 (53)\n-00AA4B Extra Length          0000 (0)\n-00AA4D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01234F Compression Method    0008 (8) 'Deflated'\n+012351 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+012355 CRC                   00000000 (0)\n+012359 Compressed Size       00000000 (0)\n+01235D Uncompressed Size     00000000 (0)\n+012361 Filename Length       0043 (67)\n+012363 Extra Length          0000 (0)\n+012365 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xAA4D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12365: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00AA82 PAYLOAD               XX\n+0123A8 PAYLOAD\n \n-00AA84 DATA DESCRIPTOR       08074B50 (134695760)\n-00AA88 CRC                   00000000 (0)\n-00AA8C Compressed Size       00000002 (2)\n-00AA90 Uncompressed Size     00000000 (0)\n+0126CA DATA DESCRIPTOR       08074B50 (134695760)\n+0126CE CRC                   A67D03FF (2793210879)\n+0126D2 Compressed Size       00000322 (802)\n+0126D6 Uncompressed Size     000006BE (1726)\n \n-00AA94 LOCAL HEADER #46      04034B50 (67324752)\n-00AA98 Extract Zip Spec      14 (20) '2.0'\n-00AA99 Extract OS            00 (0) 'MS-DOS'\n-00AA9A General Purpose Flag  0808 (2056)\n+0126DA LOCAL HEADER #46      04034B50 (67324752)\n+0126DE Extract Zip Spec      14 (20) '2.0'\n+0126DF Extract OS            00 (0) 'MS-DOS'\n+0126E0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00AA9C Compression Method    0008 (8) 'Deflated'\n-00AA9E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00AAA2 CRC                   00000000 (0)\n-00AAA6 Compressed Size       00000000 (0)\n-00AAAA Uncompressed Size     00000000 (0)\n-00AAAE Filename Length       003C (60)\n-00AAB0 Extra Length          0000 (0)\n-00AAB2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0126E2 Compression Method    0008 (8) 'Deflated'\n+0126E4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0126E8 CRC                   00000000 (0)\n+0126EC Compressed Size       00000000 (0)\n+0126F0 Uncompressed Size     00000000 (0)\n+0126F4 Filename Length       0045 (69)\n+0126F6 Extra Length          0000 (0)\n+0126F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xAAB2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x126F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00AAEE PAYLOAD\n+01273D PAYLOAD\n \n-00AF43 DATA DESCRIPTOR       08074B50 (134695760)\n-00AF47 CRC                   FACEEC94 (4207864980)\n-00AF4B Compressed Size       00000455 (1109)\n-00AF4F Uncompressed Size     00000E69 (3689)\n+012A61 DATA DESCRIPTOR       08074B50 (134695760)\n+012A65 CRC                   F6F65296 (4143338134)\n+012A69 Compressed Size       00000324 (804)\n+012A6D Uncompressed Size     000006C5 (1733)\n \n-00AF53 LOCAL HEADER #47      04034B50 (67324752)\n-00AF57 Extract Zip Spec      14 (20) '2.0'\n-00AF58 Extract OS            00 (0) 'MS-DOS'\n-00AF59 General Purpose Flag  0808 (2056)\n+012A71 LOCAL HEADER #47      04034B50 (67324752)\n+012A75 Extract Zip Spec      14 (20) '2.0'\n+012A76 Extract OS            00 (0) 'MS-DOS'\n+012A77 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00AF5B Compression Method    0008 (8) 'Deflated'\n-00AF5D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00AF61 CRC                   00000000 (0)\n-00AF65 Compressed Size       00000000 (0)\n-00AF69 Uncompressed Size     00000000 (0)\n-00AF6D Filename Length       0043 (67)\n-00AF6F Extra Length          0000 (0)\n-00AF71 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+012A79 Compression Method    0008 (8) 'Deflated'\n+012A7B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+012A7F CRC                   00000000 (0)\n+012A83 Compressed Size       00000000 (0)\n+012A87 Uncompressed Size     00000000 (0)\n+012A8B Filename Length       0040 (64)\n+012A8D Extra Length          0000 (0)\n+012A8F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xAF71: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12A8F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00AFB4 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+012ACF PAYLOAD\n \n-00AFFD DATA DESCRIPTOR       08074B50 (134695760)\n-00B001 CRC                   D4B7125F (3568767583)\n-00B005 Compressed Size       00000049 (73)\n-00B009 Uncompressed Size     0000004B (75)\n+012D72 DATA DESCRIPTOR       08074B50 (134695760)\n+012D76 CRC                   D200547F (3523236991)\n+012D7A Compressed Size       000002A3 (675)\n+012D7E Uncompressed Size     000005CC (1484)\n \n-00B00D LOCAL HEADER #48      04034B50 (67324752)\n-00B011 Extract Zip Spec      14 (20) '2.0'\n-00B012 Extract OS            00 (0) 'MS-DOS'\n-00B013 General Purpose Flag  0808 (2056)\n+012D82 LOCAL HEADER #48      04034B50 (67324752)\n+012D86 Extract Zip Spec      14 (20) '2.0'\n+012D87 Extract OS            00 (0) 'MS-DOS'\n+012D88 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00B015 Compression Method    0008 (8) 'Deflated'\n-00B017 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00B01B CRC                   00000000 (0)\n-00B01F Compressed Size       00000000 (0)\n-00B023 Uncompressed Size     00000000 (0)\n-00B027 Filename Length       0034 (52)\n-00B029 Extra Length          0000 (0)\n-00B02B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+012D8A Compression Method    0008 (8) 'Deflated'\n+012D8C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+012D90 CRC                   00000000 (0)\n+012D94 Compressed Size       00000000 (0)\n+012D98 Uncompressed Size     00000000 (0)\n+012D9C Filename Length       0042 (66)\n+012D9E Extra Length          0000 (0)\n+012DA0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xB02B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12DA0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00B05F PAYLOAD               XX\n+012DE2 PAYLOAD\n \n-00B061 DATA DESCRIPTOR       08074B50 (134695760)\n-00B065 CRC                   00000000 (0)\n-00B069 Compressed Size       00000002 (2)\n-00B06D Uncompressed Size     00000000 (0)\n+0130C3 DATA DESCRIPTOR       08074B50 (134695760)\n+0130C7 CRC                   ADCF7988 (2916055432)\n+0130CB Compressed Size       000002E1 (737)\n+0130CF Uncompressed Size     0000069A (1690)\n \n-00B071 LOCAL HEADER #49      04034B50 (67324752)\n-00B075 Extract Zip Spec      14 (20) '2.0'\n-00B076 Extract OS            00 (0) 'MS-DOS'\n-00B077 General Purpose Flag  0808 (2056)\n+0130D3 LOCAL HEADER #49      04034B50 (67324752)\n+0130D7 Extract Zip Spec      14 (20) '2.0'\n+0130D8 Extract OS            00 (0) 'MS-DOS'\n+0130D9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00B079 Compression Method    0008 (8) 'Deflated'\n-00B07B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00B07F CRC                   00000000 (0)\n-00B083 Compressed Size       00000000 (0)\n-00B087 Uncompressed Size     00000000 (0)\n-00B08B Filename Length       003B (59)\n-00B08D Extra Length          0000 (0)\n-00B08F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0130DB Compression Method    0008 (8) 'Deflated'\n+0130DD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0130E1 CRC                   00000000 (0)\n+0130E5 Compressed Size       00000000 (0)\n+0130E9 Uncompressed Size     00000000 (0)\n+0130ED Filename Length       003D (61)\n+0130EF Extra Length          0000 (0)\n+0130F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xB08F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x130F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00B0CA PAYLOAD\n+01312E PAYLOAD\n \n-00B470 DATA DESCRIPTOR       08074B50 (134695760)\n-00B474 CRC                   00C3B148 (12824904)\n-00B478 Compressed Size       000003A6 (934)\n-00B47C Uncompressed Size     0000098D (2445)\n+0133AE DATA DESCRIPTOR       08074B50 (134695760)\n+0133B2 CRC                   A8CE0A81 (2832075393)\n+0133B6 Compressed Size       00000280 (640)\n+0133BA Uncompressed Size     0000051E (1310)\n \n-00B480 LOCAL HEADER #50      04034B50 (67324752)\n-00B484 Extract Zip Spec      14 (20) '2.0'\n-00B485 Extract OS            00 (0) 'MS-DOS'\n-00B486 General Purpose Flag  0808 (2056)\n+0133BE LOCAL HEADER #50      04034B50 (67324752)\n+0133C2 Extract Zip Spec      14 (20) '2.0'\n+0133C3 Extract OS            00 (0) 'MS-DOS'\n+0133C4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00B488 Compression Method    0008 (8) 'Deflated'\n-00B48A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00B48E CRC                   00000000 (0)\n-00B492 Compressed Size       00000000 (0)\n-00B496 Uncompressed Size     00000000 (0)\n-00B49A Filename Length       0042 (66)\n-00B49C Extra Length          0000 (0)\n-00B49E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0133C6 Compression Method    0008 (8) 'Deflated'\n+0133C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0133CC CRC                   00000000 (0)\n+0133D0 Compressed Size       00000000 (0)\n+0133D4 Uncompressed Size     00000000 (0)\n+0133D8 Filename Length       003F (63)\n+0133DA Extra Length          0000 (0)\n+0133DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xB49E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x133DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00B4E0 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+01341B PAYLOAD\n \n-00B528 DATA DESCRIPTOR       08074B50 (134695760)\n-00B52C CRC                   423C5CE6 (1111252198)\n-00B530 Compressed Size       00000048 (72)\n-00B534 Uncompressed Size     0000004A (74)\n+01369F DATA DESCRIPTOR       08074B50 (134695760)\n+0136A3 CRC                   5D6056E9 (1566594793)\n+0136A7 Compressed Size       00000284 (644)\n+0136AB Uncompressed Size     00000526 (1318)\n \n-00B538 LOCAL HEADER #51      04034B50 (67324752)\n-00B53C Extract Zip Spec      14 (20) '2.0'\n-00B53D Extract OS            00 (0) 'MS-DOS'\n-00B53E General Purpose Flag  0808 (2056)\n+0136AF LOCAL HEADER #51      04034B50 (67324752)\n+0136B3 Extract Zip Spec      14 (20) '2.0'\n+0136B4 Extract OS            00 (0) 'MS-DOS'\n+0136B5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00B540 Compression Method    0008 (8) 'Deflated'\n-00B542 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00B546 CRC                   00000000 (0)\n-00B54A Compressed Size       00000000 (0)\n-00B54E Uncompressed Size     00000000 (0)\n-00B552 Filename Length       0037 (55)\n-00B554 Extra Length          0000 (0)\n-00B556 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0136B7 Compression Method    0008 (8) 'Deflated'\n+0136B9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0136BD CRC                   00000000 (0)\n+0136C1 Compressed Size       00000000 (0)\n+0136C5 Uncompressed Size     00000000 (0)\n+0136C9 Filename Length       0027 (39)\n+0136CB Extra Length          0000 (0)\n+0136CD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xB556: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x136CD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00B58D PAYLOAD               XX\n+0136F4 PAYLOAD               XX\n \n-00B58F DATA DESCRIPTOR       08074B50 (134695760)\n-00B593 CRC                   00000000 (0)\n-00B597 Compressed Size       00000002 (2)\n-00B59B Uncompressed Size     00000000 (0)\n+0136F6 DATA DESCRIPTOR       08074B50 (134695760)\n+0136FA CRC                   00000000 (0)\n+0136FE Compressed Size       00000002 (2)\n+013702 Uncompressed Size     00000000 (0)\n \n-00B59F LOCAL HEADER #52      04034B50 (67324752)\n-00B5A3 Extract Zip Spec      14 (20) '2.0'\n-00B5A4 Extract OS            00 (0) 'MS-DOS'\n-00B5A5 General Purpose Flag  0808 (2056)\n+013706 LOCAL HEADER #52      04034B50 (67324752)\n+01370A Extract Zip Spec      14 (20) '2.0'\n+01370B Extract OS            00 (0) 'MS-DOS'\n+01370C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00B5A7 Compression Method    0008 (8) 'Deflated'\n-00B5A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00B5AD CRC                   00000000 (0)\n-00B5B1 Compressed Size       00000000 (0)\n-00B5B5 Uncompressed Size     00000000 (0)\n-00B5B9 Filename Length       003E (62)\n-00B5BB Extra Length          0000 (0)\n-00B5BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01370E Compression Method    0008 (8) 'Deflated'\n+013710 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+013714 CRC                   00000000 (0)\n+013718 Compressed Size       00000000 (0)\n+01371C Uncompressed Size     00000000 (0)\n+013720 Filename Length       0040 (64)\n+013722 Extra Length          0000 (0)\n+013724 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xB5BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13724: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00B5FB PAYLOAD\n+013764 PAYLOAD\n \n-00B979 DATA DESCRIPTOR       08074B50 (134695760)\n-00B97D CRC                   13A927BF (329852863)\n-00B981 Compressed Size       0000037E (894)\n-00B985 Uncompressed Size     0000084D (2125)\n+013AA4 DATA DESCRIPTOR       08074B50 (134695760)\n+013AA8 CRC                   FFDB09C9 (4292544969)\n+013AAC Compressed Size       00000340 (832)\n+013AB0 Uncompressed Size     00000774 (1908)\n \n-00B989 LOCAL HEADER #53      04034B50 (67324752)\n-00B98D Extract Zip Spec      14 (20) '2.0'\n-00B98E Extract OS            00 (0) 'MS-DOS'\n-00B98F General Purpose Flag  0808 (2056)\n+013AB4 LOCAL HEADER #53      04034B50 (67324752)\n+013AB8 Extract Zip Spec      14 (20) '2.0'\n+013AB9 Extract OS            00 (0) 'MS-DOS'\n+013ABA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00B991 Compression Method    0008 (8) 'Deflated'\n-00B993 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00B997 CRC                   00000000 (0)\n-00B99B Compressed Size       00000000 (0)\n-00B99F Uncompressed Size     00000000 (0)\n-00B9A3 Filename Length       0045 (69)\n-00B9A5 Extra Length          0000 (0)\n-00B9A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+013ABC Compression Method    0008 (8) 'Deflated'\n+013ABE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+013AC2 CRC                   00000000 (0)\n+013AC6 Compressed Size       00000000 (0)\n+013ACA Uncompressed Size     00000000 (0)\n+013ACE Filename Length       0020 (32)\n+013AD0 Extra Length          0000 (0)\n+013AD2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xB9A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13AD2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00B9EC PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+013AF2 PAYLOAD               XX\n \n-00BA37 DATA DESCRIPTOR       08074B50 (134695760)\n-00BA3B CRC                   C5928C84 (3314715780)\n-00BA3F Compressed Size       0000004B (75)\n-00BA43 Uncompressed Size     0000004D (77)\n+013AF4 DATA DESCRIPTOR       08074B50 (134695760)\n+013AF8 CRC                   00000000 (0)\n+013AFC Compressed Size       00000002 (2)\n+013B00 Uncompressed Size     00000000 (0)\n \n-00BA47 LOCAL HEADER #54      04034B50 (67324752)\n-00BA4B Extract Zip Spec      14 (20) '2.0'\n-00BA4C Extract OS            00 (0) 'MS-DOS'\n-00BA4D General Purpose Flag  0808 (2056)\n+013B04 LOCAL HEADER #54      04034B50 (67324752)\n+013B08 Extract Zip Spec      14 (20) '2.0'\n+013B09 Extract OS            00 (0) 'MS-DOS'\n+013B0A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00BA4F Compression Method    0008 (8) 'Deflated'\n-00BA51 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00BA55 CRC                   00000000 (0)\n-00BA59 Compressed Size       00000000 (0)\n-00BA5D Uncompressed Size     00000000 (0)\n-00BA61 Filename Length       0033 (51)\n-00BA63 Extra Length          0000 (0)\n-00BA65 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+013B0C Compression Method    0008 (8) 'Deflated'\n+013B0E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+013B12 CRC                   00000000 (0)\n+013B16 Compressed Size       00000000 (0)\n+013B1A Uncompressed Size     00000000 (0)\n+013B1E Filename Length       0044 (68)\n+013B20 Extra Length          0000 (0)\n+013B22 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBA65: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13B22: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00BA98 PAYLOAD               XX\n+013B66 PAYLOAD\n \n-00BA9A DATA DESCRIPTOR       08074B50 (134695760)\n-00BA9E CRC                   00000000 (0)\n-00BAA2 Compressed Size       00000002 (2)\n-00BAA6 Uncompressed Size     00000000 (0)\n+013E9F DATA DESCRIPTOR       08074B50 (134695760)\n+013EA3 CRC                   A8777CA7 (2826402983)\n+013EA7 Compressed Size       00000339 (825)\n+013EAB Uncompressed Size     00000840 (2112)\n \n-00BAAA LOCAL HEADER #55      04034B50 (67324752)\n-00BAAE Extract Zip Spec      14 (20) '2.0'\n-00BAAF Extract OS            00 (0) 'MS-DOS'\n-00BAB0 General Purpose Flag  0808 (2056)\n+013EAF LOCAL HEADER #55      04034B50 (67324752)\n+013EB3 Extract Zip Spec      14 (20) '2.0'\n+013EB4 Extract OS            00 (0) 'MS-DOS'\n+013EB5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00BAB2 Compression Method    0008 (8) 'Deflated'\n-00BAB4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00BAB8 CRC                   00000000 (0)\n-00BABC Compressed Size       00000000 (0)\n-00BAC0 Uncompressed Size     00000000 (0)\n-00BAC4 Filename Length       003A (58)\n-00BAC6 Extra Length          0000 (0)\n-00BAC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+013EB7 Compression Method    0008 (8) 'Deflated'\n+013EB9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+013EBD CRC                   00000000 (0)\n+013EC1 Compressed Size       00000000 (0)\n+013EC5 Uncompressed Size     00000000 (0)\n+013EC9 Filename Length       0021 (33)\n+013ECB Extra Length          0000 (0)\n+013ECD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBAC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13ECD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00BB02 PAYLOAD\n+013EEE PAYLOAD               XX\n \n-00BE7C DATA DESCRIPTOR       08074B50 (134695760)\n-00BE80 CRC                   E426F2EA (3827757802)\n-00BE84 Compressed Size       0000037A (890)\n-00BE88 Uncompressed Size     00000898 (2200)\n+013EF0 DATA DESCRIPTOR       08074B50 (134695760)\n+013EF4 CRC                   00000000 (0)\n+013EF8 Compressed Size       00000002 (2)\n+013EFC Uncompressed Size     00000000 (0)\n \n-00BE8C LOCAL HEADER #56      04034B50 (67324752)\n-00BE90 Extract Zip Spec      14 (20) '2.0'\n-00BE91 Extract OS            00 (0) 'MS-DOS'\n-00BE92 General Purpose Flag  0808 (2056)\n+013F00 LOCAL HEADER #56      04034B50 (67324752)\n+013F04 Extract Zip Spec      14 (20) '2.0'\n+013F05 Extract OS            00 (0) 'MS-DOS'\n+013F06 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00BE94 Compression Method    0008 (8) 'Deflated'\n-00BE96 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00BE9A CRC                   00000000 (0)\n-00BE9E Compressed Size       00000000 (0)\n-00BEA2 Uncompressed Size     00000000 (0)\n-00BEA6 Filename Length       0041 (65)\n-00BEA8 Extra Length          0000 (0)\n-00BEAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+013F08 Compression Method    0008 (8) 'Deflated'\n+013F0A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+013F0E CRC                   00000000 (0)\n+013F12 Compressed Size       00000000 (0)\n+013F16 Uncompressed Size     00000000 (0)\n+013F1A Filename Length       0049 (73)\n+013F1C Extra Length          0000 (0)\n+013F1E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBEAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13F1E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00BEEB PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+013F67 PAYLOAD\n \n-00BF32 DATA DESCRIPTOR       08074B50 (134695760)\n-00BF36 CRC                   9F593154 (2673422676)\n-00BF3A Compressed Size       00000047 (71)\n-00BF3E Uncompressed Size     00000049 (73)\n+014530 DATA DESCRIPTOR       08074B50 (134695760)\n+014534 CRC                   E294E314 (3801408276)\n+014538 Compressed Size       000005C9 (1481)\n+01453C Uncompressed Size     000012DA (4826)\n \n-00BF42 LOCAL HEADER #57      04034B50 (67324752)\n-00BF46 Extract Zip Spec      14 (20) '2.0'\n-00BF47 Extract OS            00 (0) 'MS-DOS'\n-00BF48 General Purpose Flag  0808 (2056)\n+014540 LOCAL HEADER #57      04034B50 (67324752)\n+014544 Extract Zip Spec      14 (20) '2.0'\n+014545 Extract OS            00 (0) 'MS-DOS'\n+014546 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00BF4A Compression Method    0008 (8) 'Deflated'\n-00BF4C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00BF50 CRC                   00000000 (0)\n-00BF54 Compressed Size       00000000 (0)\n-00BF58 Uncompressed Size     00000000 (0)\n-00BF5C Filename Length       0034 (52)\n-00BF5E Extra Length          0000 (0)\n-00BF60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+014548 Compression Method    0008 (8) 'Deflated'\n+01454A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01454E CRC                   00000000 (0)\n+014552 Compressed Size       00000000 (0)\n+014556 Uncompressed Size     00000000 (0)\n+01455A Filename Length       0043 (67)\n+01455C Extra Length          0000 (0)\n+01455E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBF60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1455E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00BF94 PAYLOAD               XX\n+0145A1 PAYLOAD\n \n-00BF96 DATA DESCRIPTOR       08074B50 (134695760)\n-00BF9A CRC                   00000000 (0)\n-00BF9E Compressed Size       00000002 (2)\n-00BFA2 Uncompressed Size     00000000 (0)\n+0149A3 DATA DESCRIPTOR       08074B50 (134695760)\n+0149A7 CRC                   484F34E6 (1213150438)\n+0149AB Compressed Size       00000402 (1026)\n+0149AF Uncompressed Size     00000A53 (2643)\n \n-00BFA6 LOCAL HEADER #58      04034B50 (67324752)\n-00BFAA Extract Zip Spec      14 (20) '2.0'\n-00BFAB Extract OS            00 (0) 'MS-DOS'\n-00BFAC General Purpose Flag  0808 (2056)\n+0149B3 LOCAL HEADER #58      04034B50 (67324752)\n+0149B7 Extract Zip Spec      14 (20) '2.0'\n+0149B8 Extract OS            00 (0) 'MS-DOS'\n+0149B9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00BFAE Compression Method    0008 (8) 'Deflated'\n-00BFB0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00BFB4 CRC                   00000000 (0)\n-00BFB8 Compressed Size       00000000 (0)\n-00BFBC Uncompressed Size     00000000 (0)\n-00BFC0 Filename Length       003B (59)\n-00BFC2 Extra Length          0000 (0)\n-00BFC4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0149BB Compression Method    0008 (8) 'Deflated'\n+0149BD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0149C1 CRC                   00000000 (0)\n+0149C5 Compressed Size       00000000 (0)\n+0149C9 Uncompressed Size     00000000 (0)\n+0149CD Filename Length       001E (30)\n+0149CF Extra Length          0000 (0)\n+0149D1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBFC4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x149D1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00BFFF PAYLOAD\n+0149EF PAYLOAD               XX\n \n-00C3CD DATA DESCRIPTOR       08074B50 (134695760)\n-00C3D1 CRC                   43F8CC2B (1140378667)\n-00C3D5 Compressed Size       000003CE (974)\n-00C3D9 Uncompressed Size     00000ABA (2746)\n+0149F1 DATA DESCRIPTOR       08074B50 (134695760)\n+0149F5 CRC                   00000000 (0)\n+0149F9 Compressed Size       00000002 (2)\n+0149FD Uncompressed Size     00000000 (0)\n \n-00C3DD LOCAL HEADER #59      04034B50 (67324752)\n-00C3E1 Extract Zip Spec      14 (20) '2.0'\n-00C3E2 Extract OS            00 (0) 'MS-DOS'\n-00C3E3 General Purpose Flag  0808 (2056)\n+014A01 LOCAL HEADER #59      04034B50 (67324752)\n+014A05 Extract Zip Spec      14 (20) '2.0'\n+014A06 Extract OS            00 (0) 'MS-DOS'\n+014A07 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00C3E5 Compression Method    0008 (8) 'Deflated'\n-00C3E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00C3EB CRC                   00000000 (0)\n-00C3EF Compressed Size       00000000 (0)\n-00C3F3 Uncompressed Size     00000000 (0)\n-00C3F7 Filename Length       0042 (66)\n-00C3F9 Extra Length          0000 (0)\n-00C3FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+014A09 Compression Method    0008 (8) 'Deflated'\n+014A0B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+014A0F CRC                   00000000 (0)\n+014A13 Compressed Size       00000000 (0)\n+014A17 Uncompressed Size     00000000 (0)\n+014A1B Filename Length       0038 (56)\n+014A1D Extra Length          0000 (0)\n+014A1F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC3FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14A1F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00C43D PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+014A57 PAYLOAD\n \n-00C485 DATA DESCRIPTOR       08074B50 (134695760)\n-00C489 CRC                   FE93114F (4271051087)\n-00C48D Compressed Size       00000048 (72)\n-00C491 Uncompressed Size     0000004A (74)\n+016171 DATA DESCRIPTOR       08074B50 (134695760)\n+016175 CRC                   25A2615A (631398746)\n+016179 Compressed Size       0000171A (5914)\n+01617D Uncompressed Size     000075E8 (30184)\n \n-00C495 LOCAL HEADER #60      04034B50 (67324752)\n-00C499 Extract Zip Spec      14 (20) '2.0'\n-00C49A Extract OS            00 (0) 'MS-DOS'\n-00C49B General Purpose Flag  0808 (2056)\n+016181 LOCAL HEADER #60      04034B50 (67324752)\n+016185 Extract Zip Spec      14 (20) '2.0'\n+016186 Extract OS            00 (0) 'MS-DOS'\n+016187 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00C49D Compression Method    0008 (8) 'Deflated'\n-00C49F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00C4A3 CRC                   00000000 (0)\n-00C4A7 Compressed Size       00000000 (0)\n-00C4AB Uncompressed Size     00000000 (0)\n-00C4AF Filename Length       002E (46)\n-00C4B1 Extra Length          0000 (0)\n-00C4B3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+016189 Compression Method    0008 (8) 'Deflated'\n+01618B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01618F CRC                   00000000 (0)\n+016193 Compressed Size       00000000 (0)\n+016197 Uncompressed Size     00000000 (0)\n+01619B Filename Length       0037 (55)\n+01619D Extra Length          0000 (0)\n+01619F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC4B3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1619F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00C4E1 PAYLOAD               XX\n+0161D6 PAYLOAD\n \n-00C4E3 DATA DESCRIPTOR       08074B50 (134695760)\n-00C4E7 CRC                   00000000 (0)\n-00C4EB Compressed Size       00000002 (2)\n-00C4EF Uncompressed Size     00000000 (0)\n+016AAC DATA DESCRIPTOR       08074B50 (134695760)\n+016AB0 CRC                   3773BB53 (930331475)\n+016AB4 Compressed Size       000008D6 (2262)\n+016AB8 Uncompressed Size     00002379 (9081)\n \n-00C4F3 LOCAL HEADER #61      04034B50 (67324752)\n-00C4F7 Extract Zip Spec      14 (20) '2.0'\n-00C4F8 Extract OS            00 (0) 'MS-DOS'\n-00C4F9 General Purpose Flag  0808 (2056)\n+016ABC LOCAL HEADER #61      04034B50 (67324752)\n+016AC0 Extract Zip Spec      14 (20) '2.0'\n+016AC1 Extract OS            00 (0) 'MS-DOS'\n+016AC2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00C4FB Compression Method    0008 (8) 'Deflated'\n-00C4FD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00C501 CRC                   00000000 (0)\n-00C505 Compressed Size       00000000 (0)\n-00C509 Uncompressed Size     00000000 (0)\n-00C50D Filename Length       0035 (53)\n-00C50F Extra Length          0000 (0)\n-00C511 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+016AC4 Compression Method    0008 (8) 'Deflated'\n+016AC6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+016ACA CRC                   00000000 (0)\n+016ACE Compressed Size       00000000 (0)\n+016AD2 Uncompressed Size     00000000 (0)\n+016AD6 Filename Length       000F (15)\n+016AD8 Extra Length          0000 (0)\n+016ADA Filename              'XXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC511: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16ADA: Filename 'XXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00C546 PAYLOAD\n+016AE9 PAYLOAD               XX\n \n-00C8E0 DATA DESCRIPTOR       08074B50 (134695760)\n-00C8E4 CRC                   0FC7AABB (264743611)\n-00C8E8 Compressed Size       0000039A (922)\n-00C8EC Uncompressed Size     000009B0 (2480)\n+016AEB DATA DESCRIPTOR       08074B50 (134695760)\n+016AEF CRC                   00000000 (0)\n+016AF3 Compressed Size       00000002 (2)\n+016AF7 Uncompressed Size     00000000 (0)\n \n-00C8F0 LOCAL HEADER #62      04034B50 (67324752)\n-00C8F4 Extract Zip Spec      14 (20) '2.0'\n-00C8F5 Extract OS            00 (0) 'MS-DOS'\n-00C8F6 General Purpose Flag  0808 (2056)\n+016AFB LOCAL HEADER #62      04034B50 (67324752)\n+016AFF Extract Zip Spec      14 (20) '2.0'\n+016B00 Extract OS            00 (0) 'MS-DOS'\n+016B01 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00C8F8 Compression Method    0008 (8) 'Deflated'\n-00C8FA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00C8FE CRC                   00000000 (0)\n-00C902 Compressed Size       00000000 (0)\n-00C906 Uncompressed Size     00000000 (0)\n-00C90A Filename Length       003C (60)\n-00C90C Extra Length          0000 (0)\n-00C90E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+016B03 Compression Method    0008 (8) 'Deflated'\n+016B05 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+016B09 CRC                   00000000 (0)\n+016B0D Compressed Size       00000000 (0)\n+016B11 Uncompressed Size     00000000 (0)\n+016B15 Filename Length       0018 (24)\n+016B17 Extra Length          0000 (0)\n+016B19 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC90E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16B19: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00C94A PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+016B31 PAYLOAD               XX\n \n-00C98C DATA DESCRIPTOR       08074B50 (134695760)\n-00C990 CRC                   5F285EB1 (1596481201)\n-00C994 Compressed Size       00000042 (66)\n-00C998 Uncompressed Size     00000044 (68)\n+016B33 DATA DESCRIPTOR       08074B50 (134695760)\n+016B37 CRC                   00000000 (0)\n+016B3B Compressed Size       00000002 (2)\n+016B3F Uncompressed Size     00000000 (0)\n \n-00C99C LOCAL HEADER #63      04034B50 (67324752)\n-00C9A0 Extract Zip Spec      14 (20) '2.0'\n-00C9A1 Extract OS            00 (0) 'MS-DOS'\n-00C9A2 General Purpose Flag  0808 (2056)\n+016B43 LOCAL HEADER #63      04034B50 (67324752)\n+016B47 Extract Zip Spec      14 (20) '2.0'\n+016B48 Extract OS            00 (0) 'MS-DOS'\n+016B49 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00C9A4 Compression Method    0008 (8) 'Deflated'\n-00C9A6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00C9AA CRC                   00000000 (0)\n-00C9AE Compressed Size       00000000 (0)\n-00C9B2 Uncompressed Size     00000000 (0)\n-00C9B6 Filename Length       0030 (48)\n-00C9B8 Extra Length          0000 (0)\n-00C9BA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+016B4B Compression Method    0008 (8) 'Deflated'\n+016B4D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+016B51 CRC                   00000000 (0)\n+016B55 Compressed Size       00000000 (0)\n+016B59 Uncompressed Size     00000000 (0)\n+016B5D Filename Length       0031 (49)\n+016B5F Extra Length          0000 (0)\n+016B61 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC9BA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16B61: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00C9EA PAYLOAD               XX\n+016B92 PAYLOAD               XX\n \n-00C9EC DATA DESCRIPTOR       08074B50 (134695760)\n-00C9F0 CRC                   00000000 (0)\n-00C9F4 Compressed Size       00000002 (2)\n-00C9F8 Uncompressed Size     00000000 (0)\n+016B94 DATA DESCRIPTOR       08074B50 (134695760)\n+016B98 CRC                   00000000 (0)\n+016B9C Compressed Size       00000002 (2)\n+016BA0 Uncompressed Size     00000000 (0)\n \n-00C9FC LOCAL HEADER #64      04034B50 (67324752)\n-00CA00 Extract Zip Spec      14 (20) '2.0'\n-00CA01 Extract OS            00 (0) 'MS-DOS'\n-00CA02 General Purpose Flag  0808 (2056)\n+016BA4 LOCAL HEADER #64      04034B50 (67324752)\n+016BA8 Extract Zip Spec      14 (20) '2.0'\n+016BA9 Extract OS            00 (0) 'MS-DOS'\n+016BAA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00CA04 Compression Method    0008 (8) 'Deflated'\n-00CA06 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00CA0A CRC                   00000000 (0)\n-00CA0E Compressed Size       00000000 (0)\n-00CA12 Uncompressed Size     00000000 (0)\n-00CA16 Filename Length       0037 (55)\n-00CA18 Extra Length          0000 (0)\n-00CA1A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+016BAC Compression Method    0008 (8) 'Deflated'\n+016BAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+016BB2 CRC                   00000000 (0)\n+016BB6 Compressed Size       00000000 (0)\n+016BBA Uncompressed Size     00000000 (0)\n+016BBE Filename Length       0038 (56)\n+016BC0 Extra Length          0000 (0)\n+016BC2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCA1A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16BC2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00CA51 PAYLOAD\n+016BFA PAYLOAD\n \n-00CE99 DATA DESCRIPTOR       08074B50 (134695760)\n-00CE9D CRC                   45DB5347 (1172001607)\n-00CEA1 Compressed Size       00000448 (1096)\n-00CEA5 Uncompressed Size     00000FBC (4028)\n+017073 DATA DESCRIPTOR       08074B50 (134695760)\n+017077 CRC                   50B6758C (1354134924)\n+01707B Compressed Size       00000479 (1145)\n+01707F Uncompressed Size     00001EA4 (7844)\n \n-00CEA9 LOCAL HEADER #65      04034B50 (67324752)\n-00CEAD Extract Zip Spec      14 (20) '2.0'\n-00CEAE Extract OS            00 (0) 'MS-DOS'\n-00CEAF General Purpose Flag  0808 (2056)\n+017083 LOCAL HEADER #65      04034B50 (67324752)\n+017087 Extract Zip Spec      14 (20) '2.0'\n+017088 Extract OS            00 (0) 'MS-DOS'\n+017089 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00CEB1 Compression Method    0008 (8) 'Deflated'\n-00CEB3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00CEB7 CRC                   00000000 (0)\n-00CEBB Compressed Size       00000000 (0)\n-00CEBF Uncompressed Size     00000000 (0)\n-00CEC3 Filename Length       003E (62)\n-00CEC5 Extra Length          0000 (0)\n-00CEC7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01708B Compression Method    0008 (8) 'Deflated'\n+01708D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+017091 CRC                   00000000 (0)\n+017095 Compressed Size       00000000 (0)\n+017099 Uncompressed Size     00000000 (0)\n+01709D Filename Length       003F (63)\n+01709F Extra Length          0000 (0)\n+0170A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCEC7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x170A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00CF05 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0170E0 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-00CF43 DATA DESCRIPTOR       08074B50 (134695760)\n-00CF47 CRC                   BE4436A8 (3192141480)\n-00CF4B Compressed Size       0000003E (62)\n-00CF4F Uncompressed Size     00000046 (70)\n+017125 DATA DESCRIPTOR       08074B50 (134695760)\n+017129 CRC                   494D98C1 (1229822145)\n+01712D Compressed Size       00000045 (69)\n+017131 Uncompressed Size     00000047 (71)\n \n-00CF53 LOCAL HEADER #66      04034B50 (67324752)\n-00CF57 Extract Zip Spec      14 (20) '2.0'\n-00CF58 Extract OS            00 (0) 'MS-DOS'\n-00CF59 General Purpose Flag  0808 (2056)\n+017135 LOCAL HEADER #66      04034B50 (67324752)\n+017139 Extract Zip Spec      14 (20) '2.0'\n+01713A Extract OS            00 (0) 'MS-DOS'\n+01713B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00CF5B Compression Method    0008 (8) 'Deflated'\n-00CF5D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00CF61 CRC                   00000000 (0)\n-00CF65 Compressed Size       00000000 (0)\n-00CF69 Uncompressed Size     00000000 (0)\n-00CF6D Filename Length       0030 (48)\n-00CF6F Extra Length          0000 (0)\n-00CF71 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01713D Compression Method    0008 (8) 'Deflated'\n+01713F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+017143 CRC                   00000000 (0)\n+017147 Compressed Size       00000000 (0)\n+01714B Uncompressed Size     00000000 (0)\n+01714F Filename Length       001F (31)\n+017151 Extra Length          0000 (0)\n+017153 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCF71: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17153: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00CFA1 PAYLOAD               XX\n+017172 PAYLOAD               XX\n \n-00CFA3 DATA DESCRIPTOR       08074B50 (134695760)\n-00CFA7 CRC                   00000000 (0)\n-00CFAB Compressed Size       00000002 (2)\n-00CFAF Uncompressed Size     00000000 (0)\n+017174 DATA DESCRIPTOR       08074B50 (134695760)\n+017178 CRC                   00000000 (0)\n+01717C Compressed Size       00000002 (2)\n+017180 Uncompressed Size     00000000 (0)\n \n-00CFB3 LOCAL HEADER #67      04034B50 (67324752)\n-00CFB7 Extract Zip Spec      14 (20) '2.0'\n-00CFB8 Extract OS            00 (0) 'MS-DOS'\n-00CFB9 General Purpose Flag  0808 (2056)\n+017184 LOCAL HEADER #67      04034B50 (67324752)\n+017188 Extract Zip Spec      14 (20) '2.0'\n+017189 Extract OS            00 (0) 'MS-DOS'\n+01718A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00CFBB Compression Method    0008 (8) 'Deflated'\n-00CFBD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00CFC1 CRC                   00000000 (0)\n-00CFC5 Compressed Size       00000000 (0)\n-00CFC9 Uncompressed Size     00000000 (0)\n-00CFCD Filename Length       0037 (55)\n-00CFCF Extra Length          0000 (0)\n-00CFD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01718C Compression Method    0008 (8) 'Deflated'\n+01718E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+017192 CRC                   00000000 (0)\n+017196 Compressed Size       00000000 (0)\n+01719A Uncompressed Size     00000000 (0)\n+01719E Filename Length       0034 (52)\n+0171A0 Extra Length          0000 (0)\n+0171A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCFD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x171A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00D008 PAYLOAD\n+0171D6 PAYLOAD\n \n-00D366 DATA DESCRIPTOR       08074B50 (134695760)\n-00D36A CRC                   59E5C05D (1508229213)\n-00D36E Compressed Size       0000035E (862)\n-00D372 Uncompressed Size     000007B3 (1971)\n+017794 DATA DESCRIPTOR       08074B50 (134695760)\n+017798 CRC                   F164B1B0 (4049908144)\n+01779C Compressed Size       000005BE (1470)\n+0177A0 Uncompressed Size     00001233 (4659)\n \n-00D376 LOCAL HEADER #68      04034B50 (67324752)\n-00D37A Extract Zip Spec      14 (20) '2.0'\n-00D37B Extract OS            00 (0) 'MS-DOS'\n-00D37C General Purpose Flag  0808 (2056)\n+0177A4 LOCAL HEADER #68      04034B50 (67324752)\n+0177A8 Extract Zip Spec      14 (20) '2.0'\n+0177A9 Extract OS            00 (0) 'MS-DOS'\n+0177AA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00D37E Compression Method    0008 (8) 'Deflated'\n-00D380 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00D384 CRC                   00000000 (0)\n-00D388 Compressed Size       00000000 (0)\n-00D38C Uncompressed Size     00000000 (0)\n-00D390 Filename Length       003E (62)\n-00D392 Extra Length          0000 (0)\n-00D394 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0177AC Compression Method    0008 (8) 'Deflated'\n+0177AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0177B2 CRC                   00000000 (0)\n+0177B6 Compressed Size       00000000 (0)\n+0177BA Uncompressed Size     00000000 (0)\n+0177BE Filename Length       0031 (49)\n+0177C0 Extra Length          0000 (0)\n+0177C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD394: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x177C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00D3D2 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0177F3 PAYLOAD\n \n-00D416 DATA DESCRIPTOR       08074B50 (134695760)\n-00D41A CRC                   09A59FE7 (161849319)\n-00D41E Compressed Size       00000044 (68)\n-00D422 Uncompressed Size     00000046 (70)\n+017D49 DATA DESCRIPTOR       08074B50 (134695760)\n+017D4D CRC                   D05CAEC0 (3495734976)\n+017D51 Compressed Size       00000556 (1366)\n+017D55 Uncompressed Size     000013D8 (5080)\n \n-00D426 LOCAL HEADER #69      04034B50 (67324752)\n-00D42A Extract Zip Spec      14 (20) '2.0'\n-00D42B Extract OS            00 (0) 'MS-DOS'\n-00D42C General Purpose Flag  0808 (2056)\n+017D59 LOCAL HEADER #69      04034B50 (67324752)\n+017D5D Extract Zip Spec      14 (20) '2.0'\n+017D5E Extract OS            00 (0) 'MS-DOS'\n+017D5F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00D42E Compression Method    0008 (8) 'Deflated'\n-00D430 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00D434 CRC                   00000000 (0)\n-00D438 Compressed Size       00000000 (0)\n-00D43C Uncompressed Size     00000000 (0)\n-00D440 Filename Length       002F (47)\n-00D442 Extra Length          0000 (0)\n-00D444 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+017D61 Compression Method    0008 (8) 'Deflated'\n+017D63 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+017D67 CRC                   00000000 (0)\n+017D6B Compressed Size       00000000 (0)\n+017D6F Uncompressed Size     00000000 (0)\n+017D73 Filename Length       002F (47)\n+017D75 Extra Length          0000 (0)\n+017D77 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD444: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17D77: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00D473 PAYLOAD               XX\n+017DA6 PAYLOAD\n \n-00D475 DATA DESCRIPTOR       08074B50 (134695760)\n-00D479 CRC                   00000000 (0)\n-00D47D Compressed Size       00000002 (2)\n-00D481 Uncompressed Size     00000000 (0)\n+01831F DATA DESCRIPTOR       08074B50 (134695760)\n+018323 CRC                   6FBAC3DA (1874510810)\n+018327 Compressed Size       00000579 (1401)\n+01832B Uncompressed Size     000011EC (4588)\n \n-00D485 LOCAL HEADER #70      04034B50 (67324752)\n-00D489 Extract Zip Spec      14 (20) '2.0'\n-00D48A Extract OS            00 (0) 'MS-DOS'\n-00D48B General Purpose Flag  0808 (2056)\n+01832F LOCAL HEADER #70      04034B50 (67324752)\n+018333 Extract Zip Spec      14 (20) '2.0'\n+018334 Extract OS            00 (0) 'MS-DOS'\n+018335 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00D48D Compression Method    0008 (8) 'Deflated'\n-00D48F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00D493 CRC                   00000000 (0)\n-00D497 Compressed Size       00000000 (0)\n-00D49B Uncompressed Size     00000000 (0)\n-00D49F Filename Length       0036 (54)\n-00D4A1 Extra Length          0000 (0)\n-00D4A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+018337 Compression Method    0008 (8) 'Deflated'\n+018339 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01833D CRC                   00000000 (0)\n+018341 Compressed Size       00000000 (0)\n+018345 Uncompressed Size     00000000 (0)\n+018349 Filename Length       0025 (37)\n+01834B Extra Length          0000 (0)\n+01834D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD4A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1834D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00D4D9 PAYLOAD\n+018372 PAYLOAD               XX\n \n-00D88B DATA DESCRIPTOR       08074B50 (134695760)\n-00D88F CRC                   0B401095 (188747925)\n-00D893 Compressed Size       000003B2 (946)\n-00D897 Uncompressed Size     000009C8 (2504)\n+018374 DATA DESCRIPTOR       08074B50 (134695760)\n+018378 CRC                   00000000 (0)\n+01837C Compressed Size       00000002 (2)\n+018380 Uncompressed Size     00000000 (0)\n \n-00D89B LOCAL HEADER #71      04034B50 (67324752)\n-00D89F Extract Zip Spec      14 (20) '2.0'\n-00D8A0 Extract OS            00 (0) 'MS-DOS'\n-00D8A1 General Purpose Flag  0808 (2056)\n+018384 LOCAL HEADER #71      04034B50 (67324752)\n+018388 Extract Zip Spec      14 (20) '2.0'\n+018389 Extract OS            00 (0) 'MS-DOS'\n+01838A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00D8A3 Compression Method    0008 (8) 'Deflated'\n-00D8A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00D8A9 CRC                   00000000 (0)\n-00D8AD Compressed Size       00000000 (0)\n-00D8B1 Uncompressed Size     00000000 (0)\n-00D8B5 Filename Length       003D (61)\n-00D8B7 Extra Length          0000 (0)\n-00D8B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01838C Compression Method    0008 (8) 'Deflated'\n+01838E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+018392 CRC                   00000000 (0)\n+018396 Compressed Size       00000000 (0)\n+01839A Uncompressed Size     00000000 (0)\n+01839E Filename Length       002D (45)\n+0183A0 Extra Length          0000 (0)\n+0183A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD8B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x183A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00D8F6 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0183CF PAYLOAD               XX\n \n-00D939 DATA DESCRIPTOR       08074B50 (134695760)\n-00D93D CRC                   8E20026A (2384462442)\n-00D941 Compressed Size       00000043 (67)\n-00D945 Uncompressed Size     00000045 (69)\n+0183D1 DATA DESCRIPTOR       08074B50 (134695760)\n+0183D5 CRC                   00000000 (0)\n+0183D9 Compressed Size       00000002 (2)\n+0183DD Uncompressed Size     00000000 (0)\n \n-00D949 LOCAL HEADER #72      04034B50 (67324752)\n-00D94D Extract Zip Spec      14 (20) '2.0'\n-00D94E Extract OS            00 (0) 'MS-DOS'\n-00D94F General Purpose Flag  0808 (2056)\n+0183E1 LOCAL HEADER #72      04034B50 (67324752)\n+0183E5 Extract Zip Spec      14 (20) '2.0'\n+0183E6 Extract OS            00 (0) 'MS-DOS'\n+0183E7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00D951 Compression Method    0008 (8) 'Deflated'\n-00D953 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00D957 CRC                   00000000 (0)\n-00D95B Compressed Size       00000000 (0)\n-00D95F Uncompressed Size     00000000 (0)\n-00D963 Filename Length       002E (46)\n-00D965 Extra Length          0000 (0)\n-00D967 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0183E9 Compression Method    0008 (8) 'Deflated'\n+0183EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0183EF CRC                   00000000 (0)\n+0183F3 Compressed Size       00000000 (0)\n+0183F7 Uncompressed Size     00000000 (0)\n+0183FB Filename Length       0038 (56)\n+0183FD Extra Length          0000 (0)\n+0183FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD967: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x183FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00D995 PAYLOAD               XX\n+018437 PAYLOAD               XX\n \n-00D997 DATA DESCRIPTOR       08074B50 (134695760)\n-00D99B CRC                   00000000 (0)\n-00D99F Compressed Size       00000002 (2)\n-00D9A3 Uncompressed Size     00000000 (0)\n+018439 DATA DESCRIPTOR       08074B50 (134695760)\n+01843D CRC                   00000000 (0)\n+018441 Compressed Size       00000002 (2)\n+018445 Uncompressed Size     00000000 (0)\n \n-00D9A7 LOCAL HEADER #73      04034B50 (67324752)\n-00D9AB Extract Zip Spec      14 (20) '2.0'\n-00D9AC Extract OS            00 (0) 'MS-DOS'\n-00D9AD General Purpose Flag  0808 (2056)\n+018449 LOCAL HEADER #73      04034B50 (67324752)\n+01844D Extract Zip Spec      14 (20) '2.0'\n+01844E Extract OS            00 (0) 'MS-DOS'\n+01844F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00D9AF Compression Method    0008 (8) 'Deflated'\n-00D9B1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00D9B5 CRC                   00000000 (0)\n-00D9B9 Compressed Size       00000000 (0)\n-00D9BD Uncompressed Size     00000000 (0)\n-00D9C1 Filename Length       0035 (53)\n-00D9C3 Extra Length          0000 (0)\n-00D9C5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+018451 Compression Method    0008 (8) 'Deflated'\n+018453 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+018457 CRC                   00000000 (0)\n+01845B Compressed Size       00000000 (0)\n+01845F Uncompressed Size     00000000 (0)\n+018463 Filename Length       0060 (96)\n+018465 Extra Length          0000 (0)\n+018467 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD9C5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18467: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00D9FA PAYLOAD\n+0184C7 PAYLOAD\n \n-00DD72 DATA DESCRIPTOR       08074B50 (134695760)\n-00DD76 CRC                   078EE984 (126806404)\n-00DD7A Compressed Size       00000378 (888)\n-00DD7E Uncompressed Size     00000831 (2097)\n+018B2F DATA DESCRIPTOR       08074B50 (134695760)\n+018B33 CRC                   EBC487FE (3955525630)\n+018B37 Compressed Size       00000668 (1640)\n+018B3B Uncompressed Size     00001919 (6425)\n \n-00DD82 LOCAL HEADER #74      04034B50 (67324752)\n-00DD86 Extract Zip Spec      14 (20) '2.0'\n-00DD87 Extract OS            00 (0) 'MS-DOS'\n-00DD88 General Purpose Flag  0808 (2056)\n+018B3F LOCAL HEADER #74      04034B50 (67324752)\n+018B43 Extract Zip Spec      14 (20) '2.0'\n+018B44 Extract OS            00 (0) 'MS-DOS'\n+018B45 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00DD8A Compression Method    0008 (8) 'Deflated'\n-00DD8C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00DD90 CRC                   00000000 (0)\n-00DD94 Compressed Size       00000000 (0)\n-00DD98 Uncompressed Size     00000000 (0)\n-00DD9C Filename Length       003C (60)\n-00DD9E Extra Length          0000 (0)\n-00DDA0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+018B47 Compression Method    0008 (8) 'Deflated'\n+018B49 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+018B4D CRC                   00000000 (0)\n+018B51 Compressed Size       00000000 (0)\n+018B55 Uncompressed Size     00000000 (0)\n+018B59 Filename Length       0060 (96)\n+018B5B Extra Length          0000 (0)\n+018B5D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDDA0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18B5D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00DDDC PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+018BBD PAYLOAD\n \n-00DE1E DATA DESCRIPTOR       08074B50 (134695760)\n-00DE22 CRC                   47EB69BB (1206610363)\n-00DE26 Compressed Size       00000042 (66)\n-00DE2A Uncompressed Size     00000044 (68)\n+019263 DATA DESCRIPTOR       08074B50 (134695760)\n+019267 CRC                   E36E4DBC (3815656892)\n+01926B Compressed Size       000006A6 (1702)\n+01926F Uncompressed Size     00001B46 (6982)\n \n-00DE2E LOCAL HEADER #75      04034B50 (67324752)\n-00DE32 Extract Zip Spec      14 (20) '2.0'\n-00DE33 Extract OS            00 (0) 'MS-DOS'\n-00DE34 General Purpose Flag  0808 (2056)\n+019273 LOCAL HEADER #75      04034B50 (67324752)\n+019277 Extract Zip Spec      14 (20) '2.0'\n+019278 Extract OS            00 (0) 'MS-DOS'\n+019279 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00DE36 Compression Method    0008 (8) 'Deflated'\n-00DE38 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00DE3C CRC                   00000000 (0)\n-00DE40 Compressed Size       00000000 (0)\n-00DE44 Uncompressed Size     00000000 (0)\n-00DE48 Filename Length       0032 (50)\n-00DE4A Extra Length          0000 (0)\n-00DE4C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01927B Compression Method    0008 (8) 'Deflated'\n+01927D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+019281 CRC                   00000000 (0)\n+019285 Compressed Size       00000000 (0)\n+019289 Uncompressed Size     00000000 (0)\n+01928D Filename Length       005C (92)\n+01928F Extra Length          0000 (0)\n+019291 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDE4C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19291: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00DE7E PAYLOAD               XX\n+0192ED PAYLOAD\n \n-00DE80 DATA DESCRIPTOR       08074B50 (134695760)\n-00DE84 CRC                   00000000 (0)\n-00DE88 Compressed Size       00000002 (2)\n-00DE8C Uncompressed Size     00000000 (0)\n+0196C3 DATA DESCRIPTOR       08074B50 (134695760)\n+0196C7 CRC                   5E5D5B66 (1583176550)\n+0196CB Compressed Size       000003D6 (982)\n+0196CF Uncompressed Size     00000C31 (3121)\n \n-00DE90 LOCAL HEADER #76      04034B50 (67324752)\n-00DE94 Extract Zip Spec      14 (20) '2.0'\n-00DE95 Extract OS            00 (0) 'MS-DOS'\n-00DE96 General Purpose Flag  0808 (2056)\n+0196D3 LOCAL HEADER #76      04034B50 (67324752)\n+0196D7 Extract Zip Spec      14 (20) '2.0'\n+0196D8 Extract OS            00 (0) 'MS-DOS'\n+0196D9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00DE98 Compression Method    0008 (8) 'Deflated'\n-00DE9A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00DE9E CRC                   00000000 (0)\n-00DEA2 Compressed Size       00000000 (0)\n-00DEA6 Uncompressed Size     00000000 (0)\n-00DEAA Filename Length       0039 (57)\n-00DEAC Extra Length          0000 (0)\n-00DEAE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0196DB Compression Method    0008 (8) 'Deflated'\n+0196DD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0196E1 CRC                   00000000 (0)\n+0196E5 Compressed Size       00000000 (0)\n+0196E9 Uncompressed Size     00000000 (0)\n+0196ED Filename Length       005A (90)\n+0196EF Extra Length          0000 (0)\n+0196F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDEAE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x196F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00DEE7 PAYLOAD\n+01974B PAYLOAD\n \n-00E2B1 DATA DESCRIPTOR       08074B50 (134695760)\n-00E2B5 CRC                   BDCAAB86 (3184176006)\n-00E2B9 Compressed Size       000003CA (970)\n-00E2BD Uncompressed Size     00000AD6 (2774)\n+019BB0 DATA DESCRIPTOR       08074B50 (134695760)\n+019BB4 CRC                   52E29042 (1390579778)\n+019BB8 Compressed Size       00000465 (1125)\n+019BBC Uncompressed Size     00000C7E (3198)\n \n-00E2C1 LOCAL HEADER #77      04034B50 (67324752)\n-00E2C5 Extract Zip Spec      14 (20) '2.0'\n-00E2C6 Extract OS            00 (0) 'MS-DOS'\n-00E2C7 General Purpose Flag  0808 (2056)\n+019BC0 LOCAL HEADER #77      04034B50 (67324752)\n+019BC4 Extract Zip Spec      14 (20) '2.0'\n+019BC5 Extract OS            00 (0) 'MS-DOS'\n+019BC6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00E2C9 Compression Method    0008 (8) 'Deflated'\n-00E2CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00E2CF CRC                   00000000 (0)\n-00E2D3 Compressed Size       00000000 (0)\n-00E2D7 Uncompressed Size     00000000 (0)\n-00E2DB Filename Length       0040 (64)\n-00E2DD Extra Length          0000 (0)\n-00E2DF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+019BC8 Compression Method    0008 (8) 'Deflated'\n+019BCA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+019BCE CRC                   00000000 (0)\n+019BD2 Compressed Size       00000000 (0)\n+019BD6 Uncompressed Size     00000000 (0)\n+019BDA Filename Length       0061 (97)\n+019BDC Extra Length          0000 (0)\n+019BDE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE2DF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19BDE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00E31F PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+019C3F PAYLOAD\n \n-00E365 DATA DESCRIPTOR       08074B50 (134695760)\n-00E369 CRC                   AB278FDB (2871496667)\n-00E36D Compressed Size       00000046 (70)\n-00E371 Uncompressed Size     00000048 (72)\n+01AC7E DATA DESCRIPTOR       08074B50 (134695760)\n+01AC82 CRC                   BB518EC4 (3142684356)\n+01AC86 Compressed Size       0000103F (4159)\n+01AC8A Uncompressed Size     00004A66 (19046)\n \n-00E375 LOCAL HEADER #78      04034B50 (67324752)\n-00E379 Extract Zip Spec      14 (20) '2.0'\n-00E37A Extract OS            00 (0) 'MS-DOS'\n-00E37B General Purpose Flag  0808 (2056)\n+01AC8E LOCAL HEADER #78      04034B50 (67324752)\n+01AC92 Extract Zip Spec      14 (20) '2.0'\n+01AC93 Extract OS            00 (0) 'MS-DOS'\n+01AC94 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00E37D Compression Method    0008 (8) 'Deflated'\n-00E37F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00E383 CRC                   00000000 (0)\n-00E387 Compressed Size       00000000 (0)\n-00E38B Uncompressed Size     00000000 (0)\n-00E38F Filename Length       0035 (53)\n-00E391 Extra Length          0000 (0)\n-00E393 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01AC96 Compression Method    0008 (8) 'Deflated'\n+01AC98 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01AC9C CRC                   00000000 (0)\n+01ACA0 Compressed Size       00000000 (0)\n+01ACA4 Uncompressed Size     00000000 (0)\n+01ACA8 Filename Length       0051 (81)\n+01ACAA Extra Length          0000 (0)\n+01ACAC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE393: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1ACAC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00E3C8 PAYLOAD               XX\n+01ACFD PAYLOAD\n \n-00E3CA DATA DESCRIPTOR       08074B50 (134695760)\n-00E3CE CRC                   00000000 (0)\n-00E3D2 Compressed Size       00000002 (2)\n-00E3D6 Uncompressed Size     00000000 (0)\n+01B51D DATA DESCRIPTOR       08074B50 (134695760)\n+01B521 CRC                   88DF9039 (2296352825)\n+01B525 Compressed Size       00000820 (2080)\n+01B529 Uncompressed Size     00001D8D (7565)\n \n-00E3DA LOCAL HEADER #79      04034B50 (67324752)\n-00E3DE Extract Zip Spec      14 (20) '2.0'\n-00E3DF Extract OS            00 (0) 'MS-DOS'\n-00E3E0 General Purpose Flag  0808 (2056)\n+01B52D LOCAL HEADER #79      04034B50 (67324752)\n+01B531 Extract Zip Spec      14 (20) '2.0'\n+01B532 Extract OS            00 (0) 'MS-DOS'\n+01B533 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00E3E2 Compression Method    0008 (8) 'Deflated'\n-00E3E4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00E3E8 CRC                   00000000 (0)\n-00E3EC Compressed Size       00000000 (0)\n-00E3F0 Uncompressed Size     00000000 (0)\n-00E3F4 Filename Length       003C (60)\n-00E3F6 Extra Length          0000 (0)\n-00E3F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01B535 Compression Method    0008 (8) 'Deflated'\n+01B537 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01B53B CRC                   00000000 (0)\n+01B53F Compressed Size       00000000 (0)\n+01B543 Uncompressed Size     00000000 (0)\n+01B547 Filename Length       005F (95)\n+01B549 Extra Length          0000 (0)\n+01B54B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE3F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B54B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00E434 PAYLOAD\n+01B5AA PAYLOAD\n \n-00E822 DATA DESCRIPTOR       08074B50 (134695760)\n-00E826 CRC                   7C2E72D4 (2083418836)\n-00E82A Compressed Size       000003EE (1006)\n-00E82E Uncompressed Size     00000C74 (3188)\n+01B8C5 DATA DESCRIPTOR       08074B50 (134695760)\n+01B8C9 CRC                   810B31C1 (2164994497)\n+01B8CD Compressed Size       0000031B (795)\n+01B8D1 Uncompressed Size     00000747 (1863)\n \n-00E832 LOCAL HEADER #80      04034B50 (67324752)\n-00E836 Extract Zip Spec      14 (20) '2.0'\n-00E837 Extract OS            00 (0) 'MS-DOS'\n-00E838 General Purpose Flag  0808 (2056)\n+01B8D5 LOCAL HEADER #80      04034B50 (67324752)\n+01B8D9 Extract Zip Spec      14 (20) '2.0'\n+01B8DA Extract OS            00 (0) 'MS-DOS'\n+01B8DB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00E83A Compression Method    0008 (8) 'Deflated'\n-00E83C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00E840 CRC                   00000000 (0)\n-00E844 Compressed Size       00000000 (0)\n-00E848 Uncompressed Size     00000000 (0)\n-00E84C Filename Length       0043 (67)\n-00E84E Extra Length          0000 (0)\n-00E850 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01B8DD Compression Method    0008 (8) 'Deflated'\n+01B8DF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01B8E3 CRC                   00000000 (0)\n+01B8E7 Compressed Size       00000000 (0)\n+01B8EB Uncompressed Size     00000000 (0)\n+01B8EF Filename Length       0053 (83)\n+01B8F1 Extra Length          0000 (0)\n+01B8F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE850: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B8F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00E893 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+01B946 PAYLOAD\n \n-00E8DC DATA DESCRIPTOR       08074B50 (134695760)\n-00E8E0 CRC                   0B8D3BF2 (193805298)\n-00E8E4 Compressed Size       00000049 (73)\n-00E8E8 Uncompressed Size     0000004B (75)\n+01BE3C DATA DESCRIPTOR       08074B50 (134695760)\n+01BE40 CRC                   494954CD (1229542605)\n+01BE44 Compressed Size       000004F6 (1270)\n+01BE48 Uncompressed Size     000011EE (4590)\n \n-00E8EC LOCAL HEADER #81      04034B50 (67324752)\n-00E8F0 Extract Zip Spec      14 (20) '2.0'\n-00E8F1 Extract OS            00 (0) 'MS-DOS'\n-00E8F2 General Purpose Flag  0808 (2056)\n+01BE4C LOCAL HEADER #81      04034B50 (67324752)\n+01BE50 Extract Zip Spec      14 (20) '2.0'\n+01BE51 Extract OS            00 (0) 'MS-DOS'\n+01BE52 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00E8F4 Compression Method    0008 (8) 'Deflated'\n-00E8F6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00E8FA CRC                   00000000 (0)\n-00E8FE Compressed Size       00000000 (0)\n-00E902 Uncompressed Size     00000000 (0)\n-00E906 Filename Length       0031 (49)\n-00E908 Extra Length          0000 (0)\n-00E90A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01BE54 Compression Method    0008 (8) 'Deflated'\n+01BE56 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01BE5A CRC                   00000000 (0)\n+01BE5E Compressed Size       00000000 (0)\n+01BE62 Uncompressed Size     00000000 (0)\n+01BE66 Filename Length       0056 (86)\n+01BE68 Extra Length          0000 (0)\n+01BE6A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE90A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BE6A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00E93B PAYLOAD               XX\n+01BEC0 PAYLOAD\n \n-00E93D DATA DESCRIPTOR       08074B50 (134695760)\n-00E941 CRC                   00000000 (0)\n-00E945 Compressed Size       00000002 (2)\n-00E949 Uncompressed Size     00000000 (0)\n+01D0D1 DATA DESCRIPTOR       08074B50 (134695760)\n+01D0D5 CRC                   D398E281 (3550012033)\n+01D0D9 Compressed Size       00001211 (4625)\n+01D0DD Uncompressed Size     00005864 (22628)\n \n-00E94D LOCAL HEADER #82      04034B50 (67324752)\n-00E951 Extract Zip Spec      14 (20) '2.0'\n-00E952 Extract OS            00 (0) 'MS-DOS'\n-00E953 General Purpose Flag  0808 (2056)\n+01D0E1 LOCAL HEADER #82      04034B50 (67324752)\n+01D0E5 Extract Zip Spec      14 (20) '2.0'\n+01D0E6 Extract OS            00 (0) 'MS-DOS'\n+01D0E7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00E955 Compression Method    0008 (8) 'Deflated'\n-00E957 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00E95B CRC                   00000000 (0)\n-00E95F Compressed Size       00000000 (0)\n-00E963 Uncompressed Size     00000000 (0)\n-00E967 Filename Length       0038 (56)\n-00E969 Extra Length          0000 (0)\n-00E96B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01D0E9 Compression Method    0008 (8) 'Deflated'\n+01D0EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01D0EF CRC                   00000000 (0)\n+01D0F3 Compressed Size       00000000 (0)\n+01D0F7 Uncompressed Size     00000000 (0)\n+01D0FB Filename Length       0034 (52)\n+01D0FD Extra Length          0000 (0)\n+01D0FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE96B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D0FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00E9A3 PAYLOAD\n+01D133 PAYLOAD               XX\n \n-00ED6F DATA DESCRIPTOR       08074B50 (134695760)\n-00ED73 CRC                   2B7AF38C (729478028)\n-00ED77 Compressed Size       000003CC (972)\n-00ED7B Uncompressed Size     00000C82 (3202)\n+01D135 DATA DESCRIPTOR       08074B50 (134695760)\n+01D139 CRC                   00000000 (0)\n+01D13D Compressed Size       00000002 (2)\n+01D141 Uncompressed Size     00000000 (0)\n \n-00ED7F LOCAL HEADER #83      04034B50 (67324752)\n-00ED83 Extract Zip Spec      14 (20) '2.0'\n-00ED84 Extract OS            00 (0) 'MS-DOS'\n-00ED85 General Purpose Flag  0808 (2056)\n+01D145 LOCAL HEADER #83      04034B50 (67324752)\n+01D149 Extract Zip Spec      14 (20) '2.0'\n+01D14A Extract OS            00 (0) 'MS-DOS'\n+01D14B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00ED87 Compression Method    0008 (8) 'Deflated'\n-00ED89 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00ED8D CRC                   00000000 (0)\n-00ED91 Compressed Size       00000000 (0)\n-00ED95 Uncompressed Size     00000000 (0)\n-00ED99 Filename Length       003F (63)\n-00ED9B Extra Length          0000 (0)\n-00ED9D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01D14D Compression Method    0008 (8) 'Deflated'\n+01D14F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01D153 CRC                   00000000 (0)\n+01D157 Compressed Size       00000000 (0)\n+01D15B Uncompressed Size     00000000 (0)\n+01D15F Filename Length       005E (94)\n+01D161 Extra Length          0000 (0)\n+01D163 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xED9D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D163: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00EDDC PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+01D1C1 PAYLOAD\n \n-00EE21 DATA DESCRIPTOR       08074B50 (134695760)\n-00EE25 CRC                   2A331345 (707990341)\n-00EE29 Compressed Size       00000045 (69)\n-00EE2D Uncompressed Size     00000047 (71)\n+01D49D DATA DESCRIPTOR       08074B50 (134695760)\n+01D4A1 CRC                   4304EE7E (1124396670)\n+01D4A5 Compressed Size       000002DC (732)\n+01D4A9 Uncompressed Size     00000668 (1640)\n \n-00EE31 LOCAL HEADER #84      04034B50 (67324752)\n-00EE35 Extract Zip Spec      14 (20) '2.0'\n-00EE36 Extract OS            00 (0) 'MS-DOS'\n-00EE37 General Purpose Flag  0808 (2056)\n+01D4AD LOCAL HEADER #84      04034B50 (67324752)\n+01D4B1 Extract Zip Spec      14 (20) '2.0'\n+01D4B2 Extract OS            00 (0) 'MS-DOS'\n+01D4B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00EE39 Compression Method    0008 (8) 'Deflated'\n-00EE3B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00EE3F CRC                   00000000 (0)\n-00EE43 Compressed Size       00000000 (0)\n-00EE47 Uncompressed Size     00000000 (0)\n-00EE4B Filename Length       0038 (56)\n-00EE4D Extra Length          0000 (0)\n-00EE4F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01D4B5 Compression Method    0008 (8) 'Deflated'\n+01D4B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01D4BB CRC                   00000000 (0)\n+01D4BF Compressed Size       00000000 (0)\n+01D4C3 Uncompressed Size     00000000 (0)\n+01D4C7 Filename Length       0069 (105)\n+01D4C9 Extra Length          0000 (0)\n+01D4CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEE4F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D4CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00EE87 PAYLOAD               XX\n+01D534 PAYLOAD\n \n-00EE89 DATA DESCRIPTOR       08074B50 (134695760)\n-00EE8D CRC                   00000000 (0)\n-00EE91 Compressed Size       00000002 (2)\n-00EE95 Uncompressed Size     00000000 (0)\n+01DB27 DATA DESCRIPTOR       08074B50 (134695760)\n+01DB2B CRC                   93006498 (2466276504)\n+01DB2F Compressed Size       000005F3 (1523)\n+01DB33 Uncompressed Size     000011BD (4541)\n \n-00EE99 LOCAL HEADER #85      04034B50 (67324752)\n-00EE9D Extract Zip Spec      14 (20) '2.0'\n-00EE9E Extract OS            00 (0) 'MS-DOS'\n-00EE9F General Purpose Flag  0808 (2056)\n+01DB37 LOCAL HEADER #85      04034B50 (67324752)\n+01DB3B Extract Zip Spec      14 (20) '2.0'\n+01DB3C Extract OS            00 (0) 'MS-DOS'\n+01DB3D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00EEA1 Compression Method    0008 (8) 'Deflated'\n-00EEA3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00EEA7 CRC                   00000000 (0)\n-00EEAB Compressed Size       00000000 (0)\n-00EEAF Uncompressed Size     00000000 (0)\n-00EEB3 Filename Length       003F (63)\n-00EEB5 Extra Length          0000 (0)\n-00EEB7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01DB3F Compression Method    0008 (8) 'Deflated'\n+01DB41 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01DB45 CRC                   00000000 (0)\n+01DB49 Compressed Size       00000000 (0)\n+01DB4D Uncompressed Size     00000000 (0)\n+01DB51 Filename Length       0064 (100)\n+01DB53 Extra Length          0000 (0)\n+01DB55 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEEB7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DB55: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00EEF6 PAYLOAD\n+01DBB9 PAYLOAD\n \n-00F28F DATA DESCRIPTOR       08074B50 (134695760)\n-00F293 CRC                   79CD4FCD (2043498445)\n-00F297 Compressed Size       00000399 (921)\n-00F29B Uncompressed Size     00000900 (2304)\n+01E29B DATA DESCRIPTOR       08074B50 (134695760)\n+01E29F CRC                   2F136214 (789799444)\n+01E2A3 Compressed Size       000006E2 (1762)\n+01E2A7 Uncompressed Size     0000162B (5675)\n \n-00F29F LOCAL HEADER #86      04034B50 (67324752)\n-00F2A3 Extract Zip Spec      14 (20) '2.0'\n-00F2A4 Extract OS            00 (0) 'MS-DOS'\n-00F2A5 General Purpose Flag  0808 (2056)\n+01E2AB LOCAL HEADER #86      04034B50 (67324752)\n+01E2AF Extract Zip Spec      14 (20) '2.0'\n+01E2B0 Extract OS            00 (0) 'MS-DOS'\n+01E2B1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00F2A7 Compression Method    0008 (8) 'Deflated'\n-00F2A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00F2AD CRC                   00000000 (0)\n-00F2B1 Compressed Size       00000000 (0)\n-00F2B5 Uncompressed Size     00000000 (0)\n-00F2B9 Filename Length       0046 (70)\n-00F2BB Extra Length          0000 (0)\n-00F2BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01E2B3 Compression Method    0008 (8) 'Deflated'\n+01E2B5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01E2B9 CRC                   00000000 (0)\n+01E2BD Compressed Size       00000000 (0)\n+01E2C1 Uncompressed Size     00000000 (0)\n+01E2C5 Filename Length       0027 (39)\n+01E2C7 Extra Length          0000 (0)\n+01E2C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF2BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E2C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00F303 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+01E2F0 PAYLOAD               XX\n \n-00F34D DATA DESCRIPTOR       08074B50 (134695760)\n-00F351 CRC                   AE9E07C3 (2929592259)\n-00F355 Compressed Size       0000004A (74)\n-00F359 Uncompressed Size     0000004E (78)\n+01E2F2 DATA DESCRIPTOR       08074B50 (134695760)\n+01E2F6 CRC                   00000000 (0)\n+01E2FA Compressed Size       00000002 (2)\n+01E2FE Uncompressed Size     00000000 (0)\n \n-00F35D LOCAL HEADER #87      04034B50 (67324752)\n-00F361 Extract Zip Spec      14 (20) '2.0'\n-00F362 Extract OS            00 (0) 'MS-DOS'\n-00F363 General Purpose Flag  0808 (2056)\n+01E302 LOCAL HEADER #87      04034B50 (67324752)\n+01E306 Extract Zip Spec      14 (20) '2.0'\n+01E307 Extract OS            00 (0) 'MS-DOS'\n+01E308 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00F365 Compression Method    0008 (8) 'Deflated'\n-00F367 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00F36B CRC                   00000000 (0)\n-00F36F Compressed Size       00000000 (0)\n-00F373 Uncompressed Size     00000000 (0)\n-00F377 Filename Length       0034 (52)\n-00F379 Extra Length          0000 (0)\n-00F37B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01E30A Compression Method    0008 (8) 'Deflated'\n+01E30C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01E310 CRC                   00000000 (0)\n+01E314 Compressed Size       00000000 (0)\n+01E318 Uncompressed Size     00000000 (0)\n+01E31C Filename Length       004D (77)\n+01E31E Extra Length          0000 (0)\n+01E320 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF37B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E320: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00F3AF PAYLOAD               XX\n+01E36D PAYLOAD\n \n-00F3B1 DATA DESCRIPTOR       08074B50 (134695760)\n-00F3B5 CRC                   00000000 (0)\n-00F3B9 Compressed Size       00000002 (2)\n-00F3BD Uncompressed Size     00000000 (0)\n+01E714 DATA DESCRIPTOR       08074B50 (134695760)\n+01E718 CRC                   6308AEDE (1661513438)\n+01E71C Compressed Size       000003A7 (935)\n+01E720 Uncompressed Size     00000A9D (2717)\n \n-00F3C1 LOCAL HEADER #88      04034B50 (67324752)\n-00F3C5 Extract Zip Spec      14 (20) '2.0'\n-00F3C6 Extract OS            00 (0) 'MS-DOS'\n-00F3C7 General Purpose Flag  0808 (2056)\n+01E724 LOCAL HEADER #88      04034B50 (67324752)\n+01E728 Extract Zip Spec      14 (20) '2.0'\n+01E729 Extract OS            00 (0) 'MS-DOS'\n+01E72A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00F3C9 Compression Method    0008 (8) 'Deflated'\n-00F3CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00F3CF CRC                   00000000 (0)\n-00F3D3 Compressed Size       00000000 (0)\n-00F3D7 Uncompressed Size     00000000 (0)\n-00F3DB Filename Length       003B (59)\n-00F3DD Extra Length          0000 (0)\n-00F3DF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01E72C Compression Method    0008 (8) 'Deflated'\n+01E72E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01E732 CRC                   00000000 (0)\n+01E736 Compressed Size       00000000 (0)\n+01E73A Uncompressed Size     00000000 (0)\n+01E73E Filename Length       004D (77)\n+01E740 Extra Length          0000 (0)\n+01E742 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF3DF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E742: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00F41A PAYLOAD\n+01E78F PAYLOAD\n \n-00F793 DATA DESCRIPTOR       08074B50 (134695760)\n-00F797 CRC                   D9872A58 (3649514072)\n-00F79B Compressed Size       00000379 (889)\n-00F79F Uncompressed Size     0000083F (2111)\n+01EB9E DATA DESCRIPTOR       08074B50 (134695760)\n+01EBA2 CRC                   DD0D6020 (3708641312)\n+01EBA6 Compressed Size       0000040F (1039)\n+01EBAA Uncompressed Size     00000C75 (3189)\n \n-00F7A3 LOCAL HEADER #89      04034B50 (67324752)\n-00F7A7 Extract Zip Spec      14 (20) '2.0'\n-00F7A8 Extract OS            00 (0) 'MS-DOS'\n-00F7A9 General Purpose Flag  0808 (2056)\n+01EBAE LOCAL HEADER #89      04034B50 (67324752)\n+01EBB2 Extract Zip Spec      14 (20) '2.0'\n+01EBB3 Extract OS            00 (0) 'MS-DOS'\n+01EBB4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00F7AB Compression Method    0008 (8) 'Deflated'\n-00F7AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00F7B1 CRC                   00000000 (0)\n-00F7B5 Compressed Size       00000000 (0)\n-00F7B9 Uncompressed Size     00000000 (0)\n-00F7BD Filename Length       0042 (66)\n-00F7BF Extra Length          0000 (0)\n-00F7C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01EBB6 Compression Method    0008 (8) 'Deflated'\n+01EBB8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01EBBC CRC                   00000000 (0)\n+01EBC0 Compressed Size       00000000 (0)\n+01EBC4 Uncompressed Size     00000000 (0)\n+01EBC8 Filename Length       0058 (88)\n+01EBCA Extra Length          0000 (0)\n+01EBCC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF7C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1EBCC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00F803 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+01EC24 PAYLOAD\n \n-00F848 DATA DESCRIPTOR       08074B50 (134695760)\n-00F84C CRC                   20792918 (544811288)\n-00F850 Compressed Size       00000045 (69)\n-00F854 Uncompressed Size     0000004A (74)\n+01EF07 DATA DESCRIPTOR       08074B50 (134695760)\n+01EF0B CRC                   79D3C18A (2043920778)\n+01EF0F Compressed Size       000002E3 (739)\n+01EF13 Uncompressed Size     00000773 (1907)\n \n-00F858 LOCAL HEADER #90      04034B50 (67324752)\n-00F85C Extract Zip Spec      14 (20) '2.0'\n-00F85D Extract OS            00 (0) 'MS-DOS'\n-00F85E General Purpose Flag  0808 (2056)\n+01EF17 LOCAL HEADER #90      04034B50 (67324752)\n+01EF1B Extract Zip Spec      14 (20) '2.0'\n+01EF1C Extract OS            00 (0) 'MS-DOS'\n+01EF1D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00F860 Compression Method    0008 (8) 'Deflated'\n-00F862 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00F866 CRC                   00000000 (0)\n-00F86A Compressed Size       00000000 (0)\n-00F86E Uncompressed Size     00000000 (0)\n-00F872 Filename Length       0030 (48)\n-00F874 Extra Length          0000 (0)\n-00F876 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01EF1F Compression Method    0008 (8) 'Deflated'\n+01EF21 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01EF25 CRC                   00000000 (0)\n+01EF29 Compressed Size       00000000 (0)\n+01EF2D Uncompressed Size     00000000 (0)\n+01EF31 Filename Length       0056 (86)\n+01EF33 Extra Length          0000 (0)\n+01EF35 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF876: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1EF35: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00F8A6 PAYLOAD               XX\n+01EF8B PAYLOAD\n \n-00F8A8 DATA DESCRIPTOR       08074B50 (134695760)\n-00F8AC CRC                   00000000 (0)\n-00F8B0 Compressed Size       00000002 (2)\n-00F8B4 Uncompressed Size     00000000 (0)\n+01F42B DATA DESCRIPTOR       08074B50 (134695760)\n+01F42F CRC                   D5036E1C (3573771804)\n+01F433 Compressed Size       000004A0 (1184)\n+01F437 Uncompressed Size     00000F0D (3853)\n \n-00F8B8 LOCAL HEADER #91      04034B50 (67324752)\n-00F8BC Extract Zip Spec      14 (20) '2.0'\n-00F8BD Extract OS            00 (0) 'MS-DOS'\n-00F8BE General Purpose Flag  0808 (2056)\n+01F43B LOCAL HEADER #91      04034B50 (67324752)\n+01F43F Extract Zip Spec      14 (20) '2.0'\n+01F440 Extract OS            00 (0) 'MS-DOS'\n+01F441 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00F8C0 Compression Method    0008 (8) 'Deflated'\n-00F8C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00F8C6 CRC                   00000000 (0)\n-00F8CA Compressed Size       00000000 (0)\n-00F8CE Uncompressed Size     00000000 (0)\n-00F8D2 Filename Length       0037 (55)\n-00F8D4 Extra Length          0000 (0)\n-00F8D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01F443 Compression Method    0008 (8) 'Deflated'\n+01F445 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01F449 CRC                   00000000 (0)\n+01F44D Compressed Size       00000000 (0)\n+01F451 Uncompressed Size     00000000 (0)\n+01F455 Filename Length       0032 (50)\n+01F457 Extra Length          0000 (0)\n+01F459 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF8D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F459: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00F90D PAYLOAD\n+01F48B PAYLOAD               XX\n \n-00FCCC DATA DESCRIPTOR       08074B50 (134695760)\n-00FCD0 CRC                   922534C7 (2451911879)\n-00FCD4 Compressed Size       000003BF (959)\n-00FCD8 Uncompressed Size     00000A33 (2611)\n+01F48D DATA DESCRIPTOR       08074B50 (134695760)\n+01F491 CRC                   00000000 (0)\n+01F495 Compressed Size       00000002 (2)\n+01F499 Uncompressed Size     00000000 (0)\n \n-00FCDC LOCAL HEADER #92      04034B50 (67324752)\n-00FCE0 Extract Zip Spec      14 (20) '2.0'\n-00FCE1 Extract OS            00 (0) 'MS-DOS'\n-00FCE2 General Purpose Flag  0808 (2056)\n+01F49D LOCAL HEADER #92      04034B50 (67324752)\n+01F4A1 Extract Zip Spec      14 (20) '2.0'\n+01F4A2 Extract OS            00 (0) 'MS-DOS'\n+01F4A3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00FCE4 Compression Method    0008 (8) 'Deflated'\n-00FCE6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00FCEA CRC                   00000000 (0)\n-00FCEE Compressed Size       00000000 (0)\n-00FCF2 Uncompressed Size     00000000 (0)\n-00FCF6 Filename Length       003E (62)\n-00FCF8 Extra Length          0000 (0)\n-00FCFA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01F4A5 Compression Method    0008 (8) 'Deflated'\n+01F4A7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01F4AB CRC                   00000000 (0)\n+01F4AF Compressed Size       00000000 (0)\n+01F4B3 Uncompressed Size     00000000 (0)\n+01F4B7 Filename Length       005A (90)\n+01F4B9 Extra Length          0000 (0)\n+01F4BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xFCFA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F4BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00FD38 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+01F515 PAYLOAD\n \n-00FD7C DATA DESCRIPTOR       08074B50 (134695760)\n-00FD80 CRC                   7C47DDD5 (2085084629)\n-00FD84 Compressed Size       00000044 (68)\n-00FD88 Uncompressed Size     00000046 (70)\n+01F8E0 DATA DESCRIPTOR       08074B50 (134695760)\n+01F8E4 CRC                   E1ADA7E4 (3786254308)\n+01F8E8 Compressed Size       000003CB (971)\n+01F8EC Uncompressed Size     00000A96 (2710)\n \n-00FD8C LOCAL HEADER #93      04034B50 (67324752)\n-00FD90 Extract Zip Spec      14 (20) '2.0'\n-00FD91 Extract OS            00 (0) 'MS-DOS'\n-00FD92 General Purpose Flag  0808 (2056)\n+01F8F0 LOCAL HEADER #93      04034B50 (67324752)\n+01F8F4 Extract Zip Spec      14 (20) '2.0'\n+01F8F5 Extract OS            00 (0) 'MS-DOS'\n+01F8F6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00FD94 Compression Method    0008 (8) 'Deflated'\n-00FD96 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00FD9A CRC                   00000000 (0)\n-00FD9E Compressed Size       00000000 (0)\n-00FDA2 Uncompressed Size     00000000 (0)\n-00FDA6 Filename Length       002F (47)\n-00FDA8 Extra Length          0000 (0)\n-00FDAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01F8F8 Compression Method    0008 (8) 'Deflated'\n+01F8FA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01F8FE CRC                   00000000 (0)\n+01F902 Compressed Size       00000000 (0)\n+01F906 Uncompressed Size     00000000 (0)\n+01F90A Filename Length       0049 (73)\n+01F90C Extra Length          0000 (0)\n+01F90E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xFDAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F90E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00FDD9 PAYLOAD               XX\n+01F957 PAYLOAD\n \n-00FDDB DATA DESCRIPTOR       08074B50 (134695760)\n-00FDDF CRC                   00000000 (0)\n-00FDE3 Compressed Size       00000002 (2)\n-00FDE7 Uncompressed Size     00000000 (0)\n+01FDAC DATA DESCRIPTOR       08074B50 (134695760)\n+01FDB0 CRC                   041B9E71 (68918897)\n+01FDB4 Compressed Size       00000455 (1109)\n+01FDB8 Uncompressed Size     00000ACF (2767)\n \n-00FDEB LOCAL HEADER #94      04034B50 (67324752)\n-00FDEF Extract Zip Spec      14 (20) '2.0'\n-00FDF0 Extract OS            00 (0) 'MS-DOS'\n-00FDF1 General Purpose Flag  0808 (2056)\n+01FDBC LOCAL HEADER #94      04034B50 (67324752)\n+01FDC0 Extract Zip Spec      14 (20) '2.0'\n+01FDC1 Extract OS            00 (0) 'MS-DOS'\n+01FDC2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-00FDF3 Compression Method    0008 (8) 'Deflated'\n-00FDF5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-00FDF9 CRC                   00000000 (0)\n-00FDFD Compressed Size       00000000 (0)\n-00FE01 Uncompressed Size     00000000 (0)\n-00FE05 Filename Length       0036 (54)\n-00FE07 Extra Length          0000 (0)\n-00FE09 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+01FDC4 Compression Method    0008 (8) 'Deflated'\n+01FDC6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+01FDCA CRC                   00000000 (0)\n+01FDCE Compressed Size       00000000 (0)\n+01FDD2 Uncompressed Size     00000000 (0)\n+01FDD6 Filename Length       0052 (82)\n+01FDD8 Extra Length          0000 (0)\n+01FDDA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xFE09: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FDDA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-00FE3F PAYLOAD\n+01FE2C PAYLOAD\n \n-01027A DATA DESCRIPTOR       08074B50 (134695760)\n-01027E CRC                   B2FF8BF3 (3003091955)\n-010282 Compressed Size       0000043B (1083)\n-010286 Uncompressed Size     00000F9F (3999)\n+0203A9 DATA DESCRIPTOR       08074B50 (134695760)\n+0203AD CRC                   E7D9317D (3889770877)\n+0203B1 Compressed Size       0000057D (1405)\n+0203B5 Uncompressed Size     000011D4 (4564)\n \n-01028A LOCAL HEADER #95      04034B50 (67324752)\n-01028E Extract Zip Spec      14 (20) '2.0'\n-01028F Extract OS            00 (0) 'MS-DOS'\n-010290 General Purpose Flag  0808 (2056)\n+0203B9 LOCAL HEADER #95      04034B50 (67324752)\n+0203BD Extract Zip Spec      14 (20) '2.0'\n+0203BE Extract OS            00 (0) 'MS-DOS'\n+0203BF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-010292 Compression Method    0008 (8) 'Deflated'\n-010294 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-010298 CRC                   00000000 (0)\n-01029C Compressed Size       00000000 (0)\n-0102A0 Uncompressed Size     00000000 (0)\n-0102A4 Filename Length       003D (61)\n-0102A6 Extra Length          0000 (0)\n-0102A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0203C1 Compression Method    0008 (8) 'Deflated'\n+0203C3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0203C7 CRC                   00000000 (0)\n+0203CB Compressed Size       00000000 (0)\n+0203CF Uncompressed Size     00000000 (0)\n+0203D3 Filename Length       004F (79)\n+0203D5 Extra Length          0000 (0)\n+0203D7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x102A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x203D7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0102E5 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+020426 PAYLOAD\n \n-010328 DATA DESCRIPTOR       08074B50 (134695760)\n-01032C CRC                   A1DBB70A (2715531018)\n-010330 Compressed Size       00000043 (67)\n-010334 Uncompressed Size     00000045 (69)\n+02085E DATA DESCRIPTOR       08074B50 (134695760)\n+020862 CRC                   7ED1451A (2127643930)\n+020866 Compressed Size       00000438 (1080)\n+02086A Uncompressed Size     00001312 (4882)\n \n-010338 LOCAL HEADER #96      04034B50 (67324752)\n-01033C Extract Zip Spec      14 (20) '2.0'\n-01033D Extract OS            00 (0) 'MS-DOS'\n-01033E General Purpose Flag  0808 (2056)\n+02086E LOCAL HEADER #96      04034B50 (67324752)\n+020872 Extract Zip Spec      14 (20) '2.0'\n+020873 Extract OS            00 (0) 'MS-DOS'\n+020874 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-010340 Compression Method    0008 (8) 'Deflated'\n-010342 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-010346 CRC                   00000000 (0)\n-01034A Compressed Size       00000000 (0)\n-01034E Uncompressed Size     00000000 (0)\n-010352 Filename Length       002E (46)\n-010354 Extra Length          0000 (0)\n-010356 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+020876 Compression Method    0008 (8) 'Deflated'\n+020878 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02087C CRC                   00000000 (0)\n+020880 Compressed Size       00000000 (0)\n+020884 Uncompressed Size     00000000 (0)\n+020888 Filename Length       0058 (88)\n+02088A Extra Length          0000 (0)\n+02088C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10356: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2088C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-010384 PAYLOAD               XX\n+0208E4 PAYLOAD\n \n-010386 DATA DESCRIPTOR       08074B50 (134695760)\n-01038A CRC                   00000000 (0)\n-01038E Compressed Size       00000002 (2)\n-010392 Uncompressed Size     00000000 (0)\n+020D5E DATA DESCRIPTOR       08074B50 (134695760)\n+020D62 CRC                   AD821A56 (2910984790)\n+020D66 Compressed Size       0000047A (1146)\n+020D6A Uncompressed Size     00000CAC (3244)\n \n-010396 LOCAL HEADER #97      04034B50 (67324752)\n-01039A Extract Zip Spec      14 (20) '2.0'\n-01039B Extract OS            00 (0) 'MS-DOS'\n-01039C General Purpose Flag  0808 (2056)\n+020D6E LOCAL HEADER #97      04034B50 (67324752)\n+020D72 Extract Zip Spec      14 (20) '2.0'\n+020D73 Extract OS            00 (0) 'MS-DOS'\n+020D74 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01039E Compression Method    0008 (8) 'Deflated'\n-0103A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0103A4 CRC                   00000000 (0)\n-0103A8 Compressed Size       00000000 (0)\n-0103AC Uncompressed Size     00000000 (0)\n-0103B0 Filename Length       0035 (53)\n-0103B2 Extra Length          0000 (0)\n-0103B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+020D76 Compression Method    0008 (8) 'Deflated'\n+020D78 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+020D7C CRC                   00000000 (0)\n+020D80 Compressed Size       00000000 (0)\n+020D84 Uncompressed Size     00000000 (0)\n+020D88 Filename Length       0057 (87)\n+020D8A Extra Length          0000 (0)\n+020D8C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x103B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20D8C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0103E9 PAYLOAD\n+020DE3 PAYLOAD\n \n-0107E2 DATA DESCRIPTOR       08074B50 (134695760)\n-0107E6 CRC                   4CDF6DC7 (1289711047)\n-0107EA Compressed Size       000003F9 (1017)\n-0107EE Uncompressed Size     00000B22 (2850)\n+021154 DATA DESCRIPTOR       08074B50 (134695760)\n+021158 CRC                   C24DDA18 (3259882008)\n+02115C Compressed Size       00000371 (881)\n+021160 Uncompressed Size     00000833 (2099)\n \n-0107F2 LOCAL HEADER #98      04034B50 (67324752)\n-0107F6 Extract Zip Spec      14 (20) '2.0'\n-0107F7 Extract OS            00 (0) 'MS-DOS'\n-0107F8 General Purpose Flag  0808 (2056)\n+021164 LOCAL HEADER #98      04034B50 (67324752)\n+021168 Extract Zip Spec      14 (20) '2.0'\n+021169 Extract OS            00 (0) 'MS-DOS'\n+02116A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0107FA Compression Method    0008 (8) 'Deflated'\n-0107FC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-010800 CRC                   00000000 (0)\n-010804 Compressed Size       00000000 (0)\n-010808 Uncompressed Size     00000000 (0)\n-01080C Filename Length       003C (60)\n-01080E Extra Length          0000 (0)\n-010810 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02116C Compression Method    0008 (8) 'Deflated'\n+02116E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+021172 CRC                   00000000 (0)\n+021176 Compressed Size       00000000 (0)\n+02117A Uncompressed Size     00000000 (0)\n+02117E Filename Length       0042 (66)\n+021180 Extra Length          0000 (0)\n+021182 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10810: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21182: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01084C PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0211C4 PAYLOAD\n \n-01088E DATA DESCRIPTOR       08074B50 (134695760)\n-010892 CRC                   286EAB64 (678341476)\n-010896 Compressed Size       00000042 (66)\n-01089A Uncompressed Size     00000044 (68)\n+02162C DATA DESCRIPTOR       08074B50 (134695760)\n+021630 CRC                   FF2A19ED (4280949229)\n+021634 Compressed Size       00000468 (1128)\n+021638 Uncompressed Size     00000B7A (2938)\n \n-01089E LOCAL HEADER #99      04034B50 (67324752)\n-0108A2 Extract Zip Spec      14 (20) '2.0'\n-0108A3 Extract OS            00 (0) 'MS-DOS'\n-0108A4 General Purpose Flag  0808 (2056)\n+02163C LOCAL HEADER #99      04034B50 (67324752)\n+021640 Extract Zip Spec      14 (20) '2.0'\n+021641 Extract OS            00 (0) 'MS-DOS'\n+021642 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0108A6 Compression Method    0008 (8) 'Deflated'\n-0108A8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0108AC CRC                   00000000 (0)\n-0108B0 Compressed Size       00000000 (0)\n-0108B4 Uncompressed Size     00000000 (0)\n-0108B8 Filename Length       002F (47)\n-0108BA Extra Length          0000 (0)\n-0108BC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+021644 Compression Method    0008 (8) 'Deflated'\n+021646 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02164A CRC                   00000000 (0)\n+02164E Compressed Size       00000000 (0)\n+021652 Uncompressed Size     00000000 (0)\n+021656 Filename Length       0048 (72)\n+021658 Extra Length          0000 (0)\n+02165A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x108BC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2165A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0108EB PAYLOAD               XX\n+0216A2 PAYLOAD\n \n-0108ED DATA DESCRIPTOR       08074B50 (134695760)\n-0108F1 CRC                   00000000 (0)\n-0108F5 Compressed Size       00000002 (2)\n-0108F9 Uncompressed Size     00000000 (0)\n+021B18 DATA DESCRIPTOR       08074B50 (134695760)\n+021B1C CRC                   5D54AEAF (1565830831)\n+021B20 Compressed Size       00000476 (1142)\n+021B24 Uncompressed Size     00000DDE (3550)\n \n-0108FD LOCAL HEADER #100     04034B50 (67324752)\n-010901 Extract Zip Spec      14 (20) '2.0'\n-010902 Extract OS            00 (0) 'MS-DOS'\n-010903 General Purpose Flag  0808 (2056)\n+021B28 LOCAL HEADER #100     04034B50 (67324752)\n+021B2C Extract Zip Spec      14 (20) '2.0'\n+021B2D Extract OS            00 (0) 'MS-DOS'\n+021B2E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-010905 Compression Method    0008 (8) 'Deflated'\n-010907 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01090B CRC                   00000000 (0)\n-01090F Compressed Size       00000000 (0)\n-010913 Uncompressed Size     00000000 (0)\n-010917 Filename Length       0036 (54)\n-010919 Extra Length          0000 (0)\n-01091B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+021B30 Compression Method    0008 (8) 'Deflated'\n+021B32 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+021B36 CRC                   00000000 (0)\n+021B3A Compressed Size       00000000 (0)\n+021B3E Uncompressed Size     00000000 (0)\n+021B42 Filename Length       004B (75)\n+021B44 Extra Length          0000 (0)\n+021B46 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1091B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B46: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-010951 PAYLOAD\n+021B91 PAYLOAD\n \n-010D03 DATA DESCRIPTOR       08074B50 (134695760)\n-010D07 CRC                   6EE94123 (1860780323)\n-010D0B Compressed Size       000003B2 (946)\n-010D0F Uncompressed Size     00000AC3 (2755)\n+021EA0 DATA DESCRIPTOR       08074B50 (134695760)\n+021EA4 CRC                   0C9E7B88 (211712904)\n+021EA8 Compressed Size       0000030F (783)\n+021EAC Uncompressed Size     0000065F (1631)\n \n-010D13 LOCAL HEADER #101     04034B50 (67324752)\n-010D17 Extract Zip Spec      14 (20) '2.0'\n-010D18 Extract OS            00 (0) 'MS-DOS'\n-010D19 General Purpose Flag  0808 (2056)\n+021EB0 LOCAL HEADER #101     04034B50 (67324752)\n+021EB4 Extract Zip Spec      14 (20) '2.0'\n+021EB5 Extract OS            00 (0) 'MS-DOS'\n+021EB6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-010D1B Compression Method    0008 (8) 'Deflated'\n-010D1D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-010D21 CRC                   00000000 (0)\n-010D25 Compressed Size       00000000 (0)\n-010D29 Uncompressed Size     00000000 (0)\n-010D2D Filename Length       003D (61)\n-010D2F Extra Length          0000 (0)\n-010D31 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+021EB8 Compression Method    0008 (8) 'Deflated'\n+021EBA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+021EBE CRC                   00000000 (0)\n+021EC2 Compressed Size       00000000 (0)\n+021EC6 Uncompressed Size     00000000 (0)\n+021ECA Filename Length       002E (46)\n+021ECC Extra Length          0000 (0)\n+021ECE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10D31: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21ECE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-010D6E PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+021EFC PAYLOAD               XX\n \n-010DAF DATA DESCRIPTOR       08074B50 (134695760)\n-010DB3 CRC                   86FC6C16 (2264689686)\n-010DB7 Compressed Size       00000041 (65)\n-010DBB Uncompressed Size     00000045 (69)\n+021EFE DATA DESCRIPTOR       08074B50 (134695760)\n+021F02 CRC                   00000000 (0)\n+021F06 Compressed Size       00000002 (2)\n+021F0A Uncompressed Size     00000000 (0)\n \n-010DBF LOCAL HEADER #102     04034B50 (67324752)\n-010DC3 Extract Zip Spec      14 (20) '2.0'\n-010DC4 Extract OS            00 (0) 'MS-DOS'\n-010DC5 General Purpose Flag  0808 (2056)\n+021F0E LOCAL HEADER #102     04034B50 (67324752)\n+021F12 Extract Zip Spec      14 (20) '2.0'\n+021F13 Extract OS            00 (0) 'MS-DOS'\n+021F14 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-010DC7 Compression Method    0008 (8) 'Deflated'\n-010DC9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-010DCD CRC                   00000000 (0)\n-010DD1 Compressed Size       00000000 (0)\n-010DD5 Uncompressed Size     00000000 (0)\n-010DD9 Filename Length       0033 (51)\n-010DDB Extra Length          0000 (0)\n-010DDD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+021F16 Compression Method    0008 (8) 'Deflated'\n+021F18 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+021F1C CRC                   00000000 (0)\n+021F20 Compressed Size       00000000 (0)\n+021F24 Uncompressed Size     00000000 (0)\n+021F28 Filename Length       004C (76)\n+021F2A Extra Length          0000 (0)\n+021F2C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10DDD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F2C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-010E10 PAYLOAD               XX\n+021F78 PAYLOAD\n \n-010E12 DATA DESCRIPTOR       08074B50 (134695760)\n-010E16 CRC                   00000000 (0)\n-010E1A Compressed Size       00000002 (2)\n-010E1E Uncompressed Size     00000000 (0)\n+02235A DATA DESCRIPTOR       08074B50 (134695760)\n+02235E CRC                   EB9A0122 (3952738594)\n+022362 Compressed Size       000003E2 (994)\n+022366 Uncompressed Size     000009AA (2474)\n \n-010E22 LOCAL HEADER #103     04034B50 (67324752)\n-010E26 Extract Zip Spec      14 (20) '2.0'\n-010E27 Extract OS            00 (0) 'MS-DOS'\n-010E28 General Purpose Flag  0808 (2056)\n+02236A LOCAL HEADER #103     04034B50 (67324752)\n+02236E Extract Zip Spec      14 (20) '2.0'\n+02236F Extract OS            00 (0) 'MS-DOS'\n+022370 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-010E2A Compression Method    0008 (8) 'Deflated'\n-010E2C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-010E30 CRC                   00000000 (0)\n-010E34 Compressed Size       00000000 (0)\n-010E38 Uncompressed Size     00000000 (0)\n-010E3C Filename Length       003A (58)\n-010E3E Extra Length          0000 (0)\n-010E40 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+022372 Compression Method    0008 (8) 'Deflated'\n+022374 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+022378 CRC                   00000000 (0)\n+02237C Compressed Size       00000000 (0)\n+022380 Uncompressed Size     00000000 (0)\n+022384 Filename Length       0064 (100)\n+022386 Extra Length          0000 (0)\n+022388 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10E40: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22388: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-010E7A PAYLOAD\n+0223EC PAYLOAD\n \n-01126C DATA DESCRIPTOR       08074B50 (134695760)\n-011270 CRC                   050B85C5 (84641221)\n-011274 Compressed Size       000003F2 (1010)\n-011278 Uncompressed Size     00000CF1 (3313)\n+0228D2 DATA DESCRIPTOR       08074B50 (134695760)\n+0228D6 CRC                   E5AFE84D (3853510733)\n+0228DA Compressed Size       000004E6 (1254)\n+0228DE Uncompressed Size     00000D29 (3369)\n \n-01127C LOCAL HEADER #104     04034B50 (67324752)\n-011280 Extract Zip Spec      14 (20) '2.0'\n-011281 Extract OS            00 (0) 'MS-DOS'\n-011282 General Purpose Flag  0808 (2056)\n+0228E2 LOCAL HEADER #104     04034B50 (67324752)\n+0228E6 Extract Zip Spec      14 (20) '2.0'\n+0228E7 Extract OS            00 (0) 'MS-DOS'\n+0228E8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-011284 Compression Method    0008 (8) 'Deflated'\n-011286 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01128A CRC                   00000000 (0)\n-01128E Compressed Size       00000000 (0)\n-011292 Uncompressed Size     00000000 (0)\n-011296 Filename Length       0041 (65)\n-011298 Extra Length          0000 (0)\n-01129A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0228EA Compression Method    0008 (8) 'Deflated'\n+0228EC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0228F0 CRC                   00000000 (0)\n+0228F4 Compressed Size       00000000 (0)\n+0228F8 Uncompressed Size     00000000 (0)\n+0228FC Filename Length       002D (45)\n+0228FE Extra Length          0000 (0)\n+022900 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1129A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22900: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0112DB PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+02292D PAYLOAD               XX\n \n-011322 DATA DESCRIPTOR       08074B50 (134695760)\n-011326 CRC                   30325669 (808605289)\n-01132A Compressed Size       00000047 (71)\n-01132E Uncompressed Size     00000049 (73)\n+02292F DATA DESCRIPTOR       08074B50 (134695760)\n+022933 CRC                   00000000 (0)\n+022937 Compressed Size       00000002 (2)\n+02293B Uncompressed Size     00000000 (0)\n \n-011332 LOCAL HEADER #105     04034B50 (67324752)\n-011336 Extract Zip Spec      14 (20) '2.0'\n-011337 Extract OS            00 (0) 'MS-DOS'\n-011338 General Purpose Flag  0808 (2056)\n+02293F LOCAL HEADER #105     04034B50 (67324752)\n+022943 Extract Zip Spec      14 (20) '2.0'\n+022944 Extract OS            00 (0) 'MS-DOS'\n+022945 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01133A Compression Method    0008 (8) 'Deflated'\n-01133C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-011340 CRC                   00000000 (0)\n-011344 Compressed Size       00000000 (0)\n-011348 Uncompressed Size     00000000 (0)\n-01134C Filename Length       0012 (18)\n-01134E Extra Length          0000 (0)\n-011350 Filename              'XXXXXXXXXXXXXXXXXX'\n+022947 Compression Method    0008 (8) 'Deflated'\n+022949 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02294D CRC                   00000000 (0)\n+022951 Compressed Size       00000000 (0)\n+022955 Uncompressed Size     00000000 (0)\n+022959 Filename Length       004B (75)\n+02295B Extra Length          0000 (0)\n+02295D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11350: Filename 'XXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2295D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-011362 PAYLOAD               XX\n+0229A8 PAYLOAD\n \n-011364 DATA DESCRIPTOR       08074B50 (134695760)\n-011368 CRC                   00000000 (0)\n-01136C Compressed Size       00000002 (2)\n-011370 Uncompressed Size     00000000 (0)\n+022C9A DATA DESCRIPTOR       08074B50 (134695760)\n+022C9E CRC                   77721950 (2003966288)\n+022CA2 Compressed Size       000002F2 (754)\n+022CA6 Uncompressed Size     00000769 (1897)\n \n-011374 LOCAL HEADER #106     04034B50 (67324752)\n-011378 Extract Zip Spec      14 (20) '2.0'\n-011379 Extract OS            00 (0) 'MS-DOS'\n-01137A General Purpose Flag  0808 (2056)\n+022CAA LOCAL HEADER #106     04034B50 (67324752)\n+022CAE Extract Zip Spec      14 (20) '2.0'\n+022CAF Extract OS            00 (0) 'MS-DOS'\n+022CB0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01137C Compression Method    0008 (8) 'Deflated'\n-01137E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-011382 CRC                   00000000 (0)\n-011386 Compressed Size       00000000 (0)\n-01138A Uncompressed Size     00000000 (0)\n-01138E Filename Length       0016 (22)\n-011390 Extra Length          0000 (0)\n-011392 Filename              'XXXXXXXXXXXXXXXXXXXXXX'\n+022CB2 Compression Method    0008 (8) 'Deflated'\n+022CB4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+022CB8 CRC                   00000000 (0)\n+022CBC Compressed Size       00000000 (0)\n+022CC0 Uncompressed Size     00000000 (0)\n+022CC4 Filename Length       004B (75)\n+022CC6 Extra Length          0000 (0)\n+022CC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11392: Filename 'XXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22CC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0113A8 PAYLOAD               XX\n+022D13 PAYLOAD\n \n-0113AA DATA DESCRIPTOR       08074B50 (134695760)\n-0113AE CRC                   00000000 (0)\n-0113B2 Compressed Size       00000002 (2)\n-0113B6 Uncompressed Size     00000000 (0)\n+023005 DATA DESCRIPTOR       08074B50 (134695760)\n+023009 CRC                   5603BE91 (1443085969)\n+02300D Compressed Size       000002F2 (754)\n+023011 Uncompressed Size     00000768 (1896)\n \n-0113BA LOCAL HEADER #107     04034B50 (67324752)\n-0113BE Extract Zip Spec      14 (20) '2.0'\n-0113BF Extract OS            00 (0) 'MS-DOS'\n-0113C0 General Purpose Flag  0808 (2056)\n+023015 LOCAL HEADER #107     04034B50 (67324752)\n+023019 Extract Zip Spec      14 (20) '2.0'\n+02301A Extract OS            00 (0) 'MS-DOS'\n+02301B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0113C2 Compression Method    0008 (8) 'Deflated'\n-0113C4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0113C8 CRC                   00000000 (0)\n-0113CC Compressed Size       00000000 (0)\n-0113D0 Uncompressed Size     00000000 (0)\n-0113D4 Filename Length       001D (29)\n-0113D6 Extra Length          0000 (0)\n-0113D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02301D Compression Method    0008 (8) 'Deflated'\n+02301F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+023023 CRC                   00000000 (0)\n+023027 Compressed Size       00000000 (0)\n+02302B Uncompressed Size     00000000 (0)\n+02302F Filename Length       004A (74)\n+023031 Extra Length          0000 (0)\n+023033 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x113D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23033: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0113F5 PAYLOAD\n+02307D PAYLOAD\n \n-011849 DATA DESCRIPTOR       08074B50 (134695760)\n-01184D CRC                   628AF130 (1653272880)\n-011851 Compressed Size       00000454 (1108)\n-011855 Uncompressed Size     00000B7F (2943)\n+02336E DATA DESCRIPTOR       08074B50 (134695760)\n+023372 CRC                   BFF1DD26 (3220299046)\n+023376 Compressed Size       000002F1 (753)\n+02337A Uncompressed Size     000006C6 (1734)\n \n-011859 LOCAL HEADER #108     04034B50 (67324752)\n-01185D Extract Zip Spec      14 (20) '2.0'\n-01185E Extract OS            00 (0) 'MS-DOS'\n-01185F General Purpose Flag  0808 (2056)\n+02337E LOCAL HEADER #108     04034B50 (67324752)\n+023382 Extract Zip Spec      14 (20) '2.0'\n+023383 Extract OS            00 (0) 'MS-DOS'\n+023384 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-011861 Compression Method    0008 (8) 'Deflated'\n-011863 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-011867 CRC                   00000000 (0)\n-01186B Compressed Size       00000000 (0)\n-01186F Uncompressed Size     00000000 (0)\n-011873 Filename Length       0020 (32)\n-011875 Extra Length          0000 (0)\n-011877 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+023386 Compression Method    0008 (8) 'Deflated'\n+023388 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02338C CRC                   00000000 (0)\n+023390 Compressed Size       00000000 (0)\n+023394 Uncompressed Size     00000000 (0)\n+023398 Filename Length       0032 (50)\n+02339A Extra Length          0000 (0)\n+02339C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11877: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2339C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-011897 PAYLOAD\n+0233CE PAYLOAD               XX\n \n-011A81 DATA DESCRIPTOR       08074B50 (134695760)\n-011A85 CRC                   DF2293D8 (3743585240)\n-011A89 Compressed Size       000001EA (490)\n-011A8D Uncompressed Size     00000340 (832)\n+0233D0 DATA DESCRIPTOR       08074B50 (134695760)\n+0233D4 CRC                   00000000 (0)\n+0233D8 Compressed Size       00000002 (2)\n+0233DC Uncompressed Size     00000000 (0)\n \n-011A91 LOCAL HEADER #109     04034B50 (67324752)\n-011A95 Extract Zip Spec      14 (20) '2.0'\n-011A96 Extract OS            00 (0) 'MS-DOS'\n-011A97 General Purpose Flag  0808 (2056)\n+0233E0 LOCAL HEADER #109     04034B50 (67324752)\n+0233E4 Extract Zip Spec      14 (20) '2.0'\n+0233E5 Extract OS            00 (0) 'MS-DOS'\n+0233E6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-011A99 Compression Method    0008 (8) 'Deflated'\n-011A9B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-011A9F CRC                   00000000 (0)\n-011AA3 Compressed Size       00000000 (0)\n-011AA7 Uncompressed Size     00000000 (0)\n-011AAB Filename Length       001F (31)\n-011AAD Extra Length          0000 (0)\n-011AAF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0233E8 Compression Method    0008 (8) 'Deflated'\n+0233EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0233EE CRC                   00000000 (0)\n+0233F2 Compressed Size       00000000 (0)\n+0233F6 Uncompressed Size     00000000 (0)\n+0233FA Filename Length       0050 (80)\n+0233FC Extra Length          0000 (0)\n+0233FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11AAF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-011ACE PAYLOAD\n+02344E PAYLOAD\n \n-011D40 DATA DESCRIPTOR       08074B50 (134695760)\n-011D44 CRC                   0F1B3503 (253441283)\n-011D48 Compressed Size       00000272 (626)\n-011D4C Uncompressed Size     000004AC (1196)\n+0237B3 DATA DESCRIPTOR       08074B50 (134695760)\n+0237B7 CRC                   D7398AF1 (3610872561)\n+0237BB Compressed Size       00000365 (869)\n+0237BF Uncompressed Size     00000940 (2368)\n \n-011D50 LOCAL HEADER #110     04034B50 (67324752)\n-011D54 Extract Zip Spec      14 (20) '2.0'\n-011D55 Extract OS            00 (0) 'MS-DOS'\n-011D56 General Purpose Flag  0808 (2056)\n+0237C3 LOCAL HEADER #110     04034B50 (67324752)\n+0237C7 Extract Zip Spec      14 (20) '2.0'\n+0237C8 Extract OS            00 (0) 'MS-DOS'\n+0237C9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-011D58 Compression Method    0008 (8) 'Deflated'\n-011D5A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-011D5E CRC                   00000000 (0)\n-011D62 Compressed Size       00000000 (0)\n-011D66 Uncompressed Size     00000000 (0)\n-011D6A Filename Length       001F (31)\n-011D6C Extra Length          0000 (0)\n-011D6E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0237CB Compression Method    0008 (8) 'Deflated'\n+0237CD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0237D1 CRC                   00000000 (0)\n+0237D5 Compressed Size       00000000 (0)\n+0237D9 Uncompressed Size     00000000 (0)\n+0237DD Filename Length       004F (79)\n+0237DF Extra Length          0000 (0)\n+0237E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11D6E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-011D8D PAYLOAD\n+023830 PAYLOAD\n \n-01215D DATA DESCRIPTOR       08074B50 (134695760)\n-012161 CRC                   CD3B8ABC (3443231420)\n-012165 Compressed Size       000003D0 (976)\n-012169 Uncompressed Size     000007D2 (2002)\n+023BA1 DATA DESCRIPTOR       08074B50 (134695760)\n+023BA5 CRC                   BB2451AF (3139719599)\n+023BA9 Compressed Size       00000371 (881)\n+023BAD Uncompressed Size     000007DB (2011)\n \n-01216D LOCAL HEADER #111     04034B50 (67324752)\n-012171 Extract Zip Spec      14 (20) '2.0'\n-012172 Extract OS            00 (0) 'MS-DOS'\n-012173 General Purpose Flag  0808 (2056)\n+023BB1 LOCAL HEADER #111     04034B50 (67324752)\n+023BB5 Extract Zip Spec      14 (20) '2.0'\n+023BB6 Extract OS            00 (0) 'MS-DOS'\n+023BB7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-012175 Compression Method    0008 (8) 'Deflated'\n-012177 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01217B CRC                   00000000 (0)\n-01217F Compressed Size       00000000 (0)\n-012183 Uncompressed Size     00000000 (0)\n-012187 Filename Length       001E (30)\n-012189 Extra Length          0000 (0)\n-01218B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+023BB9 Compression Method    0008 (8) 'Deflated'\n+023BBB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+023BBF CRC                   00000000 (0)\n+023BC3 Compressed Size       00000000 (0)\n+023BC7 Uncompressed Size     00000000 (0)\n+023BCB Filename Length       0048 (72)\n+023BCD Extra Length          0000 (0)\n+023BCF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1218B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BCF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0121A9 PAYLOAD\n+023C17 PAYLOAD\n \n-012A24 DATA DESCRIPTOR       08074B50 (134695760)\n-012A28 CRC                   B719070A (3071870730)\n-012A2C Compressed Size       0000087B (2171)\n-012A30 Uncompressed Size     00001481 (5249)\n+023FC2 DATA DESCRIPTOR       08074B50 (134695760)\n+023FC6 CRC                   59514F7F (1498500991)\n+023FCA Compressed Size       000003AB (939)\n+023FCE Uncompressed Size     0000088D (2189)\n \n-012A34 LOCAL HEADER #112     04034B50 (67324752)\n-012A38 Extract Zip Spec      14 (20) '2.0'\n-012A39 Extract OS            00 (0) 'MS-DOS'\n-012A3A General Purpose Flag  0808 (2056)\n+023FD2 LOCAL HEADER #112     04034B50 (67324752)\n+023FD6 Extract Zip Spec      14 (20) '2.0'\n+023FD7 Extract OS            00 (0) 'MS-DOS'\n+023FD8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-012A3C Compression Method    0008 (8) 'Deflated'\n-012A3E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-012A42 CRC                   00000000 (0)\n-012A46 Compressed Size       00000000 (0)\n-012A4A Uncompressed Size     00000000 (0)\n-012A4E Filename Length       001D (29)\n-012A50 Extra Length          0000 (0)\n-012A52 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+023FDA Compression Method    0008 (8) 'Deflated'\n+023FDC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+023FE0 CRC                   00000000 (0)\n+023FE4 Compressed Size       00000000 (0)\n+023FE8 Uncompressed Size     00000000 (0)\n+023FEC Filename Length       0029 (41)\n+023FEE Extra Length          0000 (0)\n+023FF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12A52: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23FF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-012A6F PAYLOAD\n+024019 PAYLOAD               XX\n \n-012DDE DATA DESCRIPTOR       08074B50 (134695760)\n-012DE2 CRC                   DB70852A (3681584426)\n-012DE6 Compressed Size       0000036F (879)\n-012DEA Uncompressed Size     00000663 (1635)\n+02401B DATA DESCRIPTOR       08074B50 (134695760)\n+02401F CRC                   00000000 (0)\n+024023 Compressed Size       00000002 (2)\n+024027 Uncompressed Size     00000000 (0)\n \n-012DEE LOCAL HEADER #113     04034B50 (67324752)\n-012DF2 Extract Zip Spec      14 (20) '2.0'\n-012DF3 Extract OS            00 (0) 'MS-DOS'\n-012DF4 General Purpose Flag  0808 (2056)\n+02402B LOCAL HEADER #113     04034B50 (67324752)\n+02402F Extract Zip Spec      14 (20) '2.0'\n+024030 Extract OS            00 (0) 'MS-DOS'\n+024031 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-012DF6 Compression Method    0008 (8) 'Deflated'\n-012DF8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-012DFC CRC                   00000000 (0)\n-012E00 Compressed Size       00000000 (0)\n-012E04 Uncompressed Size     00000000 (0)\n-012E08 Filename Length       0034 (52)\n-012E0A Extra Length          0000 (0)\n-012E0C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+024033 Compression Method    0008 (8) 'Deflated'\n+024035 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+024039 CRC                   00000000 (0)\n+02403D Compressed Size       00000000 (0)\n+024041 Uncompressed Size     00000000 (0)\n+024045 Filename Length       0044 (68)\n+024047 Extra Length          0000 (0)\n+024049 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12E0C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24049: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-012E40 PAYLOAD               XX\n+02408D PAYLOAD\n \n-012E42 DATA DESCRIPTOR       08074B50 (134695760)\n-012E46 CRC                   00000000 (0)\n-012E4A Compressed Size       00000002 (2)\n-012E4E Uncompressed Size     00000000 (0)\n+0244E4 DATA DESCRIPTOR       08074B50 (134695760)\n+0244E8 CRC                   A9F13587 (2851157383)\n+0244EC Compressed Size       00000457 (1111)\n+0244F0 Uncompressed Size     00000B7E (2942)\n \n-012E52 LOCAL HEADER #114     04034B50 (67324752)\n-012E56 Extract Zip Spec      14 (20) '2.0'\n-012E57 Extract OS            00 (0) 'MS-DOS'\n-012E58 General Purpose Flag  0808 (2056)\n+0244F4 LOCAL HEADER #114     04034B50 (67324752)\n+0244F8 Extract Zip Spec      14 (20) '2.0'\n+0244F9 Extract OS            00 (0) 'MS-DOS'\n+0244FA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-012E5A Compression Method    0008 (8) 'Deflated'\n-012E5C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-012E60 CRC                   00000000 (0)\n-012E64 Compressed Size       00000000 (0)\n-012E68 Uncompressed Size     00000000 (0)\n-012E6C Filename Length       003B (59)\n-012E6E Extra Length          0000 (0)\n-012E70 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0244FC Compression Method    0008 (8) 'Deflated'\n+0244FE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+024502 CRC                   00000000 (0)\n+024506 Compressed Size       00000000 (0)\n+02450A Uncompressed Size     00000000 (0)\n+02450E Filename Length       0026 (38)\n+024510 Extra Length          0000 (0)\n+024512 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12E70: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24512: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-012EAB PAYLOAD\n+024538 PAYLOAD               XX\n \n-01327B DATA DESCRIPTOR       08074B50 (134695760)\n-01327F CRC                   7212D526 (1913836838)\n-013283 Compressed Size       000003D0 (976)\n-013287 Uncompressed Size     00000956 (2390)\n+02453A DATA DESCRIPTOR       08074B50 (134695760)\n+02453E CRC                   00000000 (0)\n+024542 Compressed Size       00000002 (2)\n+024546 Uncompressed Size     00000000 (0)\n \n-01328B LOCAL HEADER #115     04034B50 (67324752)\n-01328F Extract Zip Spec      14 (20) '2.0'\n-013290 Extract OS            00 (0) 'MS-DOS'\n-013291 General Purpose Flag  0808 (2056)\n+02454A LOCAL HEADER #115     04034B50 (67324752)\n+02454E Extract Zip Spec      14 (20) '2.0'\n+02454F Extract OS            00 (0) 'MS-DOS'\n+024550 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-013293 Compression Method    0008 (8) 'Deflated'\n-013295 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-013299 CRC                   00000000 (0)\n-01329D Compressed Size       00000000 (0)\n-0132A1 Uncompressed Size     00000000 (0)\n-0132A5 Filename Length       0042 (66)\n-0132A7 Extra Length          0000 (0)\n-0132A9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+024552 Compression Method    0008 (8) 'Deflated'\n+024554 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+024558 CRC                   00000000 (0)\n+02455C Compressed Size       00000000 (0)\n+024560 Uncompressed Size     00000000 (0)\n+024564 Filename Length       0049 (73)\n+024566 Extra Length          0000 (0)\n+024568 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x132A9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24568: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0132EB PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0245B1 PAYLOAD\n \n-013333 DATA DESCRIPTOR       08074B50 (134695760)\n-013337 CRC                   01E590F2 (31822066)\n-01333B Compressed Size       00000048 (72)\n-01333F Uncompressed Size     0000004A (74)\n+024A3C DATA DESCRIPTOR       08074B50 (134695760)\n+024A40 CRC                   5AA87E5F (1520991839)\n+024A44 Compressed Size       0000048B (1163)\n+024A48 Uncompressed Size     00000BA1 (2977)\n \n-013343 LOCAL HEADER #116     04034B50 (67324752)\n-013347 Extract Zip Spec      14 (20) '2.0'\n-013348 Extract OS            00 (0) 'MS-DOS'\n-013349 General Purpose Flag  0808 (2056)\n+024A4C LOCAL HEADER #116     04034B50 (67324752)\n+024A50 Extract Zip Spec      14 (20) '2.0'\n+024A51 Extract OS            00 (0) 'MS-DOS'\n+024A52 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01334B Compression Method    0008 (8) 'Deflated'\n-01334D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-013351 CRC                   00000000 (0)\n-013355 Compressed Size       00000000 (0)\n-013359 Uncompressed Size     00000000 (0)\n-01335D Filename Length       0037 (55)\n-01335F Extra Length          0000 (0)\n-013361 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+024A54 Compression Method    0008 (8) 'Deflated'\n+024A56 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+024A5A CRC                   00000000 (0)\n+024A5E Compressed Size       00000000 (0)\n+024A62 Uncompressed Size     00000000 (0)\n+024A66 Filename Length       0044 (68)\n+024A68 Extra Length          0000 (0)\n+024A6A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13361: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24A6A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-013398 PAYLOAD               XX\n+024AAE PAYLOAD\n \n-01339A DATA DESCRIPTOR       08074B50 (134695760)\n-01339E CRC                   00000000 (0)\n-0133A2 Compressed Size       00000002 (2)\n-0133A6 Uncompressed Size     00000000 (0)\n+025C98 DATA DESCRIPTOR       08074B50 (134695760)\n+025C9C CRC                   9A04FF8D (2584018829)\n+025CA0 Compressed Size       000011EA (4586)\n+025CA4 Uncompressed Size     000059B4 (22964)\n \n-0133AA LOCAL HEADER #117     04034B50 (67324752)\n-0133AE Extract Zip Spec      14 (20) '2.0'\n-0133AF Extract OS            00 (0) 'MS-DOS'\n-0133B0 General Purpose Flag  0808 (2056)\n+025CA8 LOCAL HEADER #117     04034B50 (67324752)\n+025CAC Extract Zip Spec      14 (20) '2.0'\n+025CAD Extract OS            00 (0) 'MS-DOS'\n+025CAE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0133B2 Compression Method    0008 (8) 'Deflated'\n-0133B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0133B8 CRC                   00000000 (0)\n-0133BC Compressed Size       00000000 (0)\n-0133C0 Uncompressed Size     00000000 (0)\n-0133C4 Filename Length       003E (62)\n-0133C6 Extra Length          0000 (0)\n-0133C8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+025CB0 Compression Method    0008 (8) 'Deflated'\n+025CB2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+025CB6 CRC                   00000000 (0)\n+025CBA Compressed Size       00000000 (0)\n+025CBE Uncompressed Size     00000000 (0)\n+025CC2 Filename Length       0040 (64)\n+025CC4 Extra Length          0000 (0)\n+025CC6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x133C8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x25CC6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-013406 PAYLOAD\n+025D06 PAYLOAD\n \n-0137C1 DATA DESCRIPTOR       08074B50 (134695760)\n-0137C5 CRC                   00E8472C (15222572)\n-0137C9 Compressed Size       000003BB (955)\n-0137CD Uncompressed Size     00000BB5 (2997)\n+026241 DATA DESCRIPTOR       08074B50 (134695760)\n+026245 CRC                   7900D528 (2030097704)\n+026249 Compressed Size       0000053B (1339)\n+02624D Uncompressed Size     000013F8 (5112)\n \n-0137D1 LOCAL HEADER #118     04034B50 (67324752)\n-0137D5 Extract Zip Spec      14 (20) '2.0'\n-0137D6 Extract OS            00 (0) 'MS-DOS'\n-0137D7 General Purpose Flag  0808 (2056)\n+026251 LOCAL HEADER #118     04034B50 (67324752)\n+026255 Extract Zip Spec      14 (20) '2.0'\n+026256 Extract OS            00 (0) 'MS-DOS'\n+026257 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0137D9 Compression Method    0008 (8) 'Deflated'\n-0137DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0137DF CRC                   00000000 (0)\n-0137E3 Compressed Size       00000000 (0)\n-0137E7 Uncompressed Size     00000000 (0)\n-0137EB Filename Length       0045 (69)\n-0137ED Extra Length          0000 (0)\n-0137EF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+026259 Compression Method    0008 (8) 'Deflated'\n+02625B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02625F CRC                   00000000 (0)\n+026263 Compressed Size       00000000 (0)\n+026267 Uncompressed Size     00000000 (0)\n+02626B Filename Length       0026 (38)\n+02626D Extra Length          0000 (0)\n+02626F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x137EF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2626F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-013834 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+026295 PAYLOAD               XX\n \n-01387F DATA DESCRIPTOR       08074B50 (134695760)\n-013883 CRC                   0BF987D1 (200902609)\n-013887 Compressed Size       0000004B (75)\n-01388B Uncompressed Size     0000004D (77)\n+026297 DATA DESCRIPTOR       08074B50 (134695760)\n+02629B CRC                   00000000 (0)\n+02629F Compressed Size       00000002 (2)\n+0262A3 Uncompressed Size     00000000 (0)\n \n-01388F LOCAL HEADER #119     04034B50 (67324752)\n-013893 Extract Zip Spec      14 (20) '2.0'\n-013894 Extract OS            00 (0) 'MS-DOS'\n-013895 General Purpose Flag  0808 (2056)\n+0262A7 LOCAL HEADER #119     04034B50 (67324752)\n+0262AB Extract Zip Spec      14 (20) '2.0'\n+0262AC Extract OS            00 (0) 'MS-DOS'\n+0262AD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-013897 Compression Method    0008 (8) 'Deflated'\n-013899 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01389D CRC                   00000000 (0)\n-0138A1 Compressed Size       00000000 (0)\n-0138A5 Uncompressed Size     00000000 (0)\n-0138A9 Filename Length       0039 (57)\n-0138AB Extra Length          0000 (0)\n-0138AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0262AF Compression Method    0008 (8) 'Deflated'\n+0262B1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0262B5 CRC                   00000000 (0)\n+0262B9 Compressed Size       00000000 (0)\n+0262BD Uncompressed Size     00000000 (0)\n+0262C1 Filename Length       0042 (66)\n+0262C3 Extra Length          0000 (0)\n+0262C5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x138AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x262C5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0138E6 PAYLOAD               XX\n+026307 PAYLOAD\n \n-0138E8 DATA DESCRIPTOR       08074B50 (134695760)\n-0138EC CRC                   00000000 (0)\n-0138F0 Compressed Size       00000002 (2)\n-0138F4 Uncompressed Size     00000000 (0)\n+0267DE DATA DESCRIPTOR       08074B50 (134695760)\n+0267E2 CRC                   52B569A3 (1387620771)\n+0267E6 Compressed Size       000004D7 (1239)\n+0267EA Uncompressed Size     00000DAF (3503)\n \n-0138F8 LOCAL HEADER #120     04034B50 (67324752)\n-0138FC Extract Zip Spec      14 (20) '2.0'\n-0138FD Extract OS            00 (0) 'MS-DOS'\n-0138FE General Purpose Flag  0808 (2056)\n+0267EE LOCAL HEADER #120     04034B50 (67324752)\n+0267F2 Extract Zip Spec      14 (20) '2.0'\n+0267F3 Extract OS            00 (0) 'MS-DOS'\n+0267F4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-013900 Compression Method    0008 (8) 'Deflated'\n-013902 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-013906 CRC                   00000000 (0)\n-01390A Compressed Size       00000000 (0)\n-01390E Uncompressed Size     00000000 (0)\n-013912 Filename Length       0040 (64)\n-013914 Extra Length          0000 (0)\n-013916 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0267F6 Compression Method    0008 (8) 'Deflated'\n+0267F8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0267FC CRC                   00000000 (0)\n+026800 Compressed Size       00000000 (0)\n+026804 Uncompressed Size     00000000 (0)\n+026808 Filename Length       003E (62)\n+02680A Extra Length          0000 (0)\n+02680C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13916: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2680C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-013956 PAYLOAD\n+02684A PAYLOAD\n \n-013CBA DATA DESCRIPTOR       08074B50 (134695760)\n-013CBE CRC                   78AA4678 (2024425080)\n-013CC2 Compressed Size       00000364 (868)\n-013CC6 Uncompressed Size     000007CF (1999)\n+026D8F DATA DESCRIPTOR       08074B50 (134695760)\n+026D93 CRC                   37F5F927 (938866983)\n+026D97 Compressed Size       00000545 (1349)\n+026D9B Uncompressed Size     00000ED0 (3792)\n \n-013CCA LOCAL HEADER #121     04034B50 (67324752)\n-013CCE Extract Zip Spec      14 (20) '2.0'\n-013CCF Extract OS            00 (0) 'MS-DOS'\n-013CD0 General Purpose Flag  0808 (2056)\n+026D9F LOCAL HEADER #121     04034B50 (67324752)\n+026DA3 Extract Zip Spec      14 (20) '2.0'\n+026DA4 Extract OS            00 (0) 'MS-DOS'\n+026DA5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-013CD2 Compression Method    0008 (8) 'Deflated'\n-013CD4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-013CD8 CRC                   00000000 (0)\n-013CDC Compressed Size       00000000 (0)\n-013CE0 Uncompressed Size     00000000 (0)\n-013CE4 Filename Length       0047 (71)\n-013CE6 Extra Length          0000 (0)\n-013CE8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+026DA7 Compression Method    0008 (8) 'Deflated'\n+026DA9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+026DAD CRC                   00000000 (0)\n+026DB1 Compressed Size       00000000 (0)\n+026DB5 Uncompressed Size     00000000 (0)\n+026DB9 Filename Length       0024 (36)\n+026DBB Extra Length          0000 (0)\n+026DBD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13CE8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x26DBD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-013D2F PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+026DE1 PAYLOAD               XX\n \n-013D7C DATA DESCRIPTOR       08074B50 (134695760)\n-013D80 CRC                   30B775F3 (817329651)\n-013D84 Compressed Size       0000004D (77)\n-013D88 Uncompressed Size     0000004F (79)\n+026DE3 DATA DESCRIPTOR       08074B50 (134695760)\n+026DE7 CRC                   00000000 (0)\n+026DEB Compressed Size       00000002 (2)\n+026DEF Uncompressed Size     00000000 (0)\n \n-013D8C LOCAL HEADER #122     04034B50 (67324752)\n-013D90 Extract Zip Spec      14 (20) '2.0'\n-013D91 Extract OS            00 (0) 'MS-DOS'\n-013D92 General Purpose Flag  0808 (2056)\n+026DF3 LOCAL HEADER #122     04034B50 (67324752)\n+026DF7 Extract Zip Spec      14 (20) '2.0'\n+026DF8 Extract OS            00 (0) 'MS-DOS'\n+026DF9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-013D94 Compression Method    0008 (8) 'Deflated'\n-013D96 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-013D9A CRC                   00000000 (0)\n-013D9E Compressed Size       00000000 (0)\n-013DA2 Uncompressed Size     00000000 (0)\n-013DA6 Filename Length       0039 (57)\n-013DA8 Extra Length          0000 (0)\n-013DAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+026DFB Compression Method    0008 (8) 'Deflated'\n+026DFD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+026E01 CRC                   00000000 (0)\n+026E05 Compressed Size       00000000 (0)\n+026E09 Uncompressed Size     00000000 (0)\n+026E0D Filename Length       003D (61)\n+026E0F Extra Length          0000 (0)\n+026E11 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13DAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x26E11: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-013DE3 PAYLOAD               XX\n+026E4E PAYLOAD\n \n-013DE5 DATA DESCRIPTOR       08074B50 (134695760)\n-013DE9 CRC                   00000000 (0)\n-013DED Compressed Size       00000002 (2)\n-013DF1 Uncompressed Size     00000000 (0)\n+0274C9 DATA DESCRIPTOR       08074B50 (134695760)\n+0274CD CRC                   B0C01FD3 (2965381075)\n+0274D1 Compressed Size       0000067B (1659)\n+0274D5 Uncompressed Size     00001958 (6488)\n \n-013DF5 LOCAL HEADER #123     04034B50 (67324752)\n-013DF9 Extract Zip Spec      14 (20) '2.0'\n-013DFA Extract OS            00 (0) 'MS-DOS'\n-013DFB General Purpose Flag  0808 (2056)\n+0274D9 LOCAL HEADER #123     04034B50 (67324752)\n+0274DD Extract Zip Spec      14 (20) '2.0'\n+0274DE Extract OS            00 (0) 'MS-DOS'\n+0274DF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-013DFD Compression Method    0008 (8) 'Deflated'\n-013DFF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-013E03 CRC                   00000000 (0)\n-013E07 Compressed Size       00000000 (0)\n-013E0B Uncompressed Size     00000000 (0)\n-013E0F Filename Length       0040 (64)\n-013E11 Extra Length          0000 (0)\n-013E13 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0274E1 Compression Method    0008 (8) 'Deflated'\n+0274E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0274E7 CRC                   00000000 (0)\n+0274EB Compressed Size       00000000 (0)\n+0274EF Uncompressed Size     00000000 (0)\n+0274F3 Filename Length       0037 (55)\n+0274F5 Extra Length          0000 (0)\n+0274F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13E13: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x274F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-013E53 PAYLOAD\n+02752E PAYLOAD\n \n-0141EC DATA DESCRIPTOR       08074B50 (134695760)\n-0141F0 CRC                   4C2A7690 (1277851280)\n-0141F4 Compressed Size       00000399 (921)\n-0141F8 Uncompressed Size     000009AC (2476)\n+027C7B DATA DESCRIPTOR       08074B50 (134695760)\n+027C7F CRC                   BBC3A492 (3150161042)\n+027C83 Compressed Size       0000074D (1869)\n+027C87 Uncompressed Size     00001D2A (7466)\n \n-0141FC LOCAL HEADER #124     04034B50 (67324752)\n-014200 Extract Zip Spec      14 (20) '2.0'\n-014201 Extract OS            00 (0) 'MS-DOS'\n-014202 General Purpose Flag  0808 (2056)\n+027C8B LOCAL HEADER #124     04034B50 (67324752)\n+027C8F Extract Zip Spec      14 (20) '2.0'\n+027C90 Extract OS            00 (0) 'MS-DOS'\n+027C91 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-014204 Compression Method    0008 (8) 'Deflated'\n-014206 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01420A CRC                   00000000 (0)\n-01420E Compressed Size       00000000 (0)\n-014212 Uncompressed Size     00000000 (0)\n-014216 Filename Length       0047 (71)\n-014218 Extra Length          0000 (0)\n-01421A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+027C93 Compression Method    0008 (8) 'Deflated'\n+027C95 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+027C99 CRC                   00000000 (0)\n+027C9D Compressed Size       00000000 (0)\n+027CA1 Uncompressed Size     00000000 (0)\n+027CA5 Filename Length       0010 (16)\n+027CA7 Extra Length          0000 (0)\n+027CA9 Filename              'XXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1421A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x27CA9: Filename 'XXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-014261 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+027CB9 PAYLOAD               XX\n \n-0142AE DATA DESCRIPTOR       08074B50 (134695760)\n-0142B2 CRC                   68C29EEA (1757585130)\n-0142B6 Compressed Size       0000004D (77)\n-0142BA Uncompressed Size     0000004F (79)\n+027CBB DATA DESCRIPTOR       08074B50 (134695760)\n+027CBF CRC                   00000000 (0)\n+027CC3 Compressed Size       00000002 (2)\n+027CC7 Uncompressed Size     00000000 (0)\n \n-0142BE LOCAL HEADER #125     04034B50 (67324752)\n-0142C2 Extract Zip Spec      14 (20) '2.0'\n-0142C3 Extract OS            00 (0) 'MS-DOS'\n-0142C4 General Purpose Flag  0808 (2056)\n+027CCB LOCAL HEADER #125     04034B50 (67324752)\n+027CCF Extract Zip Spec      14 (20) '2.0'\n+027CD0 Extract OS            00 (0) 'MS-DOS'\n+027CD1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0142C6 Compression Method    0008 (8) 'Deflated'\n-0142C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0142CC CRC                   00000000 (0)\n-0142D0 Compressed Size       00000000 (0)\n-0142D4 Uncompressed Size     00000000 (0)\n-0142D8 Filename Length       0039 (57)\n-0142DA Extra Length          0000 (0)\n-0142DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+027CD3 Compression Method    0008 (8) 'Deflated'\n+027CD5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+027CD9 CRC                   00000000 (0)\n+027CDD Compressed Size       00000000 (0)\n+027CE1 Uncompressed Size     00000000 (0)\n+027CE5 Filename Length       0019 (25)\n+027CE7 Extra Length          0000 (0)\n+027CE9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x142DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x27CE9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-014315 PAYLOAD               XX\n+027D02 PAYLOAD\n \n-014317 DATA DESCRIPTOR       08074B50 (134695760)\n-01431B CRC                   00000000 (0)\n-01431F Compressed Size       00000002 (2)\n-014323 Uncompressed Size     00000000 (0)\n+0292AF DATA DESCRIPTOR       08074B50 (134695760)\n+0292B3 CRC                   91F75F87 (2448908167)\n+0292B7 Compressed Size       000015AD (5549)\n+0292BB Uncompressed Size     00013DD1 (81361)\n \n-014327 LOCAL HEADER #126     04034B50 (67324752)\n-01432B Extract Zip Spec      14 (20) '2.0'\n-01432C Extract OS            00 (0) 'MS-DOS'\n-01432D General Purpose Flag  0808 (2056)\n+0292BF LOCAL HEADER #126     04034B50 (67324752)\n+0292C3 Extract Zip Spec      14 (20) '2.0'\n+0292C4 Extract OS            00 (0) 'MS-DOS'\n+0292C5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01432F Compression Method    0008 (8) 'Deflated'\n-014331 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-014335 CRC                   00000000 (0)\n-014339 Compressed Size       00000000 (0)\n-01433D Uncompressed Size     00000000 (0)\n-014341 Filename Length       0040 (64)\n-014343 Extra Length          0000 (0)\n-014345 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0292C7 Compression Method    0008 (8) 'Deflated'\n+0292C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0292CD CRC                   00000000 (0)\n+0292D1 Compressed Size       00000000 (0)\n+0292D5 Uncompressed Size     00000000 (0)\n+0292D9 Filename Length       0059 (89)\n+0292DB Extra Length          0000 (0)\n+0292DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14345: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x292DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-014385 PAYLOAD\n+029336 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-014726 DATA DESCRIPTOR       08074B50 (134695760)\n-01472A CRC                   7BEDD7A7 (2079184807)\n-01472E Compressed Size       000003A1 (929)\n-014732 Uncompressed Size     00000A18 (2584)\n+029385 DATA DESCRIPTOR       08074B50 (134695760)\n+029389 CRC                   A63E32BF (2789094079)\n+02938D Compressed Size       0000004F (79)\n+029391 Uncompressed Size     0000005B (91)\n \n-014736 LOCAL HEADER #127     04034B50 (67324752)\n-01473A Extract Zip Spec      14 (20) '2.0'\n-01473B Extract OS            00 (0) 'MS-DOS'\n-01473C General Purpose Flag  0808 (2056)\n+029395 LOCAL HEADER #127     04034B50 (67324752)\n+029399 Extract Zip Spec      14 (20) '2.0'\n+02939A Extract OS            00 (0) 'MS-DOS'\n+02939B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01473E Compression Method    0008 (8) 'Deflated'\n-014740 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-014744 CRC                   00000000 (0)\n-014748 Compressed Size       00000000 (0)\n-01474C Uncompressed Size     00000000 (0)\n-014750 Filename Length       0047 (71)\n-014752 Extra Length          0000 (0)\n-014754 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02939D Compression Method    0008 (8) 'Deflated'\n+02939F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0293A3 CRC                   00000000 (0)\n+0293A7 Compressed Size       00000000 (0)\n+0293AB Uncompressed Size     00000000 (0)\n+0293AF Filename Length       0012 (18)\n+0293B1 Extra Length          0000 (0)\n+0293B3 Filename              'XXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14754: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x293B3: Filename 'XXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01479B PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0293C5 PAYLOAD\n \n-0147E8 DATA DESCRIPTOR       08074B50 (134695760)\n-0147EC CRC                   795A1135 (2035945781)\n-0147F0 Compressed Size       0000004D (77)\n-0147F4 Uncompressed Size     0000004F (79)\n+02A9E4 DATA DESCRIPTOR       08074B50 (134695760)\n+02A9E8 CRC                   DDC8B9B8 (3720919480)\n+02A9EC Compressed Size       0000161F (5663)\n+02A9F0 Uncompressed Size     00014461 (83041)\n \n-0147F8 LOCAL HEADER #128     04034B50 (67324752)\n-0147FC Extract Zip Spec      14 (20) '2.0'\n-0147FD Extract OS            00 (0) 'MS-DOS'\n-0147FE General Purpose Flag  0808 (2056)\n+02A9F4 LOCAL HEADER #128     04034B50 (67324752)\n+02A9F8 Extract Zip Spec      14 (20) '2.0'\n+02A9F9 Extract OS            00 (0) 'MS-DOS'\n+02A9FA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-014800 Compression Method    0008 (8) 'Deflated'\n-014802 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-014806 CRC                   00000000 (0)\n-01480A Compressed Size       00000000 (0)\n-01480E Uncompressed Size     00000000 (0)\n-014812 Filename Length       0035 (53)\n-014814 Extra Length          0000 (0)\n-014816 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02A9FC Compression Method    0008 (8) 'Deflated'\n+02A9FE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02AA02 CRC                   00000000 (0)\n+02AA06 Compressed Size       00000000 (0)\n+02AA0A Uncompressed Size     00000000 (0)\n+02AA0E Filename Length       0018 (24)\n+02AA10 Extra Length          0000 (0)\n+02AA12 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14816: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2AA12: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01484B PAYLOAD               XX\n+02AA2A PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-01484D DATA DESCRIPTOR       08074B50 (134695760)\n-014851 CRC                   00000000 (0)\n-014855 Compressed Size       00000002 (2)\n-014859 Uncompressed Size     00000000 (0)\n+02AA8F DATA DESCRIPTOR       08074B50 (134695760)\n+02AA93 CRC                   6642E973 (1715661171)\n+02AA97 Compressed Size       00000065 (101)\n+02AA9B Uncompressed Size     000000C8 (200)\n \n-01485D LOCAL HEADER #129     04034B50 (67324752)\n-014861 Extract Zip Spec      14 (20) '2.0'\n-014862 Extract OS            00 (0) 'MS-DOS'\n-014863 General Purpose Flag  0808 (2056)\n+02AA9F LOCAL HEADER #129     04034B50 (67324752)\n+02AAA3 Extract Zip Spec      14 (20) '2.0'\n+02AAA4 Extract OS            00 (0) 'MS-DOS'\n+02AAA5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-014865 Compression Method    0008 (8) 'Deflated'\n-014867 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01486B CRC                   00000000 (0)\n-01486F Compressed Size       00000000 (0)\n-014873 Uncompressed Size     00000000 (0)\n-014877 Filename Length       003C (60)\n-014879 Extra Length          0000 (0)\n-01487B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02AAA7 Compression Method    0008 (8) 'Deflated'\n+02AAA9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02AAAD CRC                   00000000 (0)\n+02AAB1 Compressed Size       00000000 (0)\n+02AAB5 Uncompressed Size     00000000 (0)\n+02AAB9 Filename Length       0017 (23)\n+02AABB Extra Length          0000 (0)\n+02AABD Filename              'XXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1487B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2AABD: Filename 'XXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0148B7 PAYLOAD\n+02AAD4 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-014C6C DATA DESCRIPTOR       08074B50 (134695760)\n-014C70 CRC                   6FB1D315 (1873924885)\n-014C74 Compressed Size       000003B5 (949)\n-014C78 Uncompressed Size     00000A29 (2601)\n+02AB27 DATA DESCRIPTOR       08074B50 (134695760)\n+02AB2B CRC                   03B2110A (62001418)\n+02AB2F Compressed Size       00000053 (83)\n+02AB33 Uncompressed Size     00000091 (145)\n \n-014C7C LOCAL HEADER #130     04034B50 (67324752)\n-014C80 Extract Zip Spec      14 (20) '2.0'\n-014C81 Extract OS            00 (0) 'MS-DOS'\n-014C82 General Purpose Flag  0808 (2056)\n+02AB37 LOCAL HEADER #130     04034B50 (67324752)\n+02AB3B Extract Zip Spec      14 (20) '2.0'\n+02AB3C Extract OS            00 (0) 'MS-DOS'\n+02AB3D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-014C84 Compression Method    0008 (8) 'Deflated'\n-014C86 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-014C8A CRC                   00000000 (0)\n-014C8E Compressed Size       00000000 (0)\n-014C92 Uncompressed Size     00000000 (0)\n-014C96 Filename Length       0043 (67)\n-014C98 Extra Length          0000 (0)\n-014C9A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02AB3F Compression Method    0008 (8) 'Deflated'\n+02AB41 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02AB45 CRC                   00000000 (0)\n+02AB49 Compressed Size       00000000 (0)\n+02AB4D Uncompressed Size     00000000 (0)\n+02AB51 Filename Length       0034 (52)\n+02AB53 Extra Length          0000 (0)\n+02AB55 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14C9A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2AB55: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-014CDD PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+02AB89 PAYLOAD               XX\n \n-014D24 DATA DESCRIPTOR       08074B50 (134695760)\n-014D28 CRC                   3B7D75EA (998077930)\n-014D2C Compressed Size       00000047 (71)\n-014D30 Uncompressed Size     0000004B (75)\n+02AB8B DATA DESCRIPTOR       08074B50 (134695760)\n+02AB8F CRC                   00000000 (0)\n+02AB93 Compressed Size       00000002 (2)\n+02AB97 Uncompressed Size     00000000 (0)\n \n-014D34 LOCAL HEADER #131     04034B50 (67324752)\n-014D38 Extract Zip Spec      14 (20) '2.0'\n-014D39 Extract OS            00 (0) 'MS-DOS'\n-014D3A General Purpose Flag  0808 (2056)\n+02AB9B LOCAL HEADER #131     04034B50 (67324752)\n+02AB9F Extract Zip Spec      14 (20) '2.0'\n+02ABA0 Extract OS            00 (0) 'MS-DOS'\n+02ABA1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-014D3C Compression Method    0008 (8) 'Deflated'\n-014D3E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-014D42 CRC                   00000000 (0)\n-014D46 Compressed Size       00000000 (0)\n-014D4A Uncompressed Size     00000000 (0)\n-014D4E Filename Length       0036 (54)\n-014D50 Extra Length          0000 (0)\n-014D52 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02ABA3 Compression Method    0008 (8) 'Deflated'\n+02ABA5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02ABA9 CRC                   00000000 (0)\n+02ABAD Compressed Size       00000000 (0)\n+02ABB1 Uncompressed Size     00000000 (0)\n+02ABB5 Filename Length       003B (59)\n+02ABB7 Extra Length          0000 (0)\n+02ABB9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14D52: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2ABB9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-014D88 PAYLOAD               XX\n+02ABF4 PAYLOAD\n \n-014D8A DATA DESCRIPTOR       08074B50 (134695760)\n-014D8E CRC                   00000000 (0)\n-014D92 Compressed Size       00000002 (2)\n-014D96 Uncompressed Size     00000000 (0)\n+02B0EE DATA DESCRIPTOR       08074B50 (134695760)\n+02B0F2 CRC                   DBB26296 (3685900950)\n+02B0F6 Compressed Size       000004FA (1274)\n+02B0FA Uncompressed Size     00001859 (6233)\n \n-014D9A LOCAL HEADER #132     04034B50 (67324752)\n-014D9E Extract Zip Spec      14 (20) '2.0'\n-014D9F Extract OS            00 (0) 'MS-DOS'\n-014DA0 General Purpose Flag  0808 (2056)\n+02B0FE LOCAL HEADER #132     04034B50 (67324752)\n+02B102 Extract Zip Spec      14 (20) '2.0'\n+02B103 Extract OS            00 (0) 'MS-DOS'\n+02B104 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-014DA2 Compression Method    0008 (8) 'Deflated'\n-014DA4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-014DA8 CRC                   00000000 (0)\n-014DAC Compressed Size       00000000 (0)\n-014DB0 Uncompressed Size     00000000 (0)\n-014DB4 Filename Length       003D (61)\n-014DB6 Extra Length          0000 (0)\n-014DB8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02B106 Compression Method    0008 (8) 'Deflated'\n+02B108 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02B10C CRC                   00000000 (0)\n+02B110 Compressed Size       00000000 (0)\n+02B114 Uncompressed Size     00000000 (0)\n+02B118 Filename Length       0042 (66)\n+02B11A Extra Length          0000 (0)\n+02B11C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14DB8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2B11C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-014DF5 PAYLOAD\n+02B15E PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-0151AE DATA DESCRIPTOR       08074B50 (134695760)\n-0151B2 CRC                   178839D9 (394803673)\n-0151B6 Compressed Size       000003B9 (953)\n-0151BA Uncompressed Size     00000992 (2450)\n+02B1A6 DATA DESCRIPTOR       08074B50 (134695760)\n+02B1AA CRC                   833E63EB (2201904107)\n+02B1AE Compressed Size       00000048 (72)\n+02B1B2 Uncompressed Size     0000004A (74)\n \n-0151BE LOCAL HEADER #133     04034B50 (67324752)\n-0151C2 Extract Zip Spec      14 (20) '2.0'\n-0151C3 Extract OS            00 (0) 'MS-DOS'\n-0151C4 General Purpose Flag  0808 (2056)\n+02B1B6 LOCAL HEADER #133     04034B50 (67324752)\n+02B1BA Extract Zip Spec      14 (20) '2.0'\n+02B1BB Extract OS            00 (0) 'MS-DOS'\n+02B1BC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0151C6 Compression Method    0008 (8) 'Deflated'\n-0151C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0151CC CRC                   00000000 (0)\n-0151D0 Compressed Size       00000000 (0)\n-0151D4 Uncompressed Size     00000000 (0)\n-0151D8 Filename Length       0044 (68)\n-0151DA Extra Length          0000 (0)\n-0151DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02B1BE Compression Method    0008 (8) 'Deflated'\n+02B1C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02B1C4 CRC                   00000000 (0)\n+02B1C8 Compressed Size       00000000 (0)\n+02B1CC Uncompressed Size     00000000 (0)\n+02B1D0 Filename Length       0015 (21)\n+02B1D2 Extra Length          0000 (0)\n+02B1D4 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x151DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2B1D4: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-015220 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+02B1E9 PAYLOAD               XX\n \n-01526A DATA DESCRIPTOR       08074B50 (134695760)\n-01526E CRC                   153432AD (355742381)\n-015272 Compressed Size       0000004A (74)\n-015276 Uncompressed Size     0000004C (76)\n+02B1EB DATA DESCRIPTOR       08074B50 (134695760)\n+02B1EF CRC                   00000000 (0)\n+02B1F3 Compressed Size       00000002 (2)\n+02B1F7 Uncompressed Size     00000000 (0)\n \n-01527A LOCAL HEADER #134     04034B50 (67324752)\n-01527E Extract Zip Spec      14 (20) '2.0'\n-01527F Extract OS            00 (0) 'MS-DOS'\n-015280 General Purpose Flag  0808 (2056)\n+02B1FB LOCAL HEADER #134     04034B50 (67324752)\n+02B1FF Extract Zip Spec      14 (20) '2.0'\n+02B200 Extract OS            00 (0) 'MS-DOS'\n+02B201 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-015282 Compression Method    0008 (8) 'Deflated'\n-015284 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-015288 CRC                   00000000 (0)\n-01528C Compressed Size       00000000 (0)\n-015290 Uncompressed Size     00000000 (0)\n-015294 Filename Length       0035 (53)\n-015296 Extra Length          0000 (0)\n-015298 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02B203 Compression Method    0008 (8) 'Deflated'\n+02B205 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02B209 CRC                   00000000 (0)\n+02B20D Compressed Size       00000000 (0)\n+02B211 Uncompressed Size     00000000 (0)\n+02B215 Filename Length       001D (29)\n+02B217 Extra Length          0000 (0)\n+02B219 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15298: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2B219: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0152CD PAYLOAD               XX\n+02B236 PAYLOAD               XX\n \n-0152CF DATA DESCRIPTOR       08074B50 (134695760)\n-0152D3 CRC                   00000000 (0)\n-0152D7 Compressed Size       00000002 (2)\n-0152DB Uncompressed Size     00000000 (0)\n+02B238 DATA DESCRIPTOR       08074B50 (134695760)\n+02B23C CRC                   00000000 (0)\n+02B240 Compressed Size       00000002 (2)\n+02B244 Uncompressed Size     00000000 (0)\n \n-0152DF LOCAL HEADER #135     04034B50 (67324752)\n-0152E3 Extract Zip Spec      14 (20) '2.0'\n-0152E4 Extract OS            00 (0) 'MS-DOS'\n-0152E5 General Purpose Flag  0808 (2056)\n+02B248 LOCAL HEADER #135     04034B50 (67324752)\n+02B24C Extract Zip Spec      14 (20) '2.0'\n+02B24D Extract OS            00 (0) 'MS-DOS'\n+02B24E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0152E7 Compression Method    0008 (8) 'Deflated'\n-0152E9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0152ED CRC                   00000000 (0)\n-0152F1 Compressed Size       00000000 (0)\n-0152F5 Uncompressed Size     00000000 (0)\n-0152F9 Filename Length       003C (60)\n-0152FB Extra Length          0000 (0)\n-0152FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02B250 Compression Method    0008 (8) 'Deflated'\n+02B252 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02B256 CRC                   00000000 (0)\n+02B25A Compressed Size       00000000 (0)\n+02B25E Uncompressed Size     00000000 (0)\n+02B262 Filename Length       0038 (56)\n+02B264 Extra Length          0000 (0)\n+02B266 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x152FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2B266: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-015339 PAYLOAD\n+02B29E PAYLOAD\n \n-015696 DATA DESCRIPTOR       08074B50 (134695760)\n-01569A CRC                   8F421884 (2403473540)\n-01569E Compressed Size       0000035D (861)\n-0156A2 Uncompressed Size     000008FC (2300)\n+02B5B7 DATA DESCRIPTOR       08074B50 (134695760)\n+02B5BB CRC                   C25375A4 (3260249508)\n+02B5BF Compressed Size       00000319 (793)\n+02B5C3 Uncompressed Size     0000061B (1563)\n \n-0156A6 LOCAL HEADER #136     04034B50 (67324752)\n-0156AA Extract Zip Spec      14 (20) '2.0'\n-0156AB Extract OS            00 (0) 'MS-DOS'\n-0156AC General Purpose Flag  0808 (2056)\n+02B5C7 LOCAL HEADER #136     04034B50 (67324752)\n+02B5CB Extract Zip Spec      14 (20) '2.0'\n+02B5CC Extract OS            00 (0) 'MS-DOS'\n+02B5CD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0156AE Compression Method    0008 (8) 'Deflated'\n-0156B0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0156B4 CRC                   00000000 (0)\n-0156B8 Compressed Size       00000000 (0)\n-0156BC Uncompressed Size     00000000 (0)\n-0156C0 Filename Length       0043 (67)\n-0156C2 Extra Length          0000 (0)\n-0156C4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02B5CF Compression Method    0008 (8) 'Deflated'\n+02B5D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02B5D5 CRC                   00000000 (0)\n+02B5D9 Compressed Size       00000000 (0)\n+02B5DD Uncompressed Size     00000000 (0)\n+02B5E1 Filename Length       0029 (41)\n+02B5E3 Extra Length          0000 (0)\n+02B5E5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x156C4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2B5E5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-015707 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+02B60E PAYLOAD\n \n-015750 DATA DESCRIPTOR       08074B50 (134695760)\n-015754 CRC                   D8F9DD34 (3640253748)\n-015758 Compressed Size       00000049 (73)\n-01575C Uncompressed Size     0000004B (75)\n+02B9A2 DATA DESCRIPTOR       08074B50 (134695760)\n+02B9A6 CRC                   27965EEA (664166122)\n+02B9AA Compressed Size       00000394 (916)\n+02B9AE Uncompressed Size     00000824 (2084)\n \n-015760 LOCAL HEADER #137     04034B50 (67324752)\n-015764 Extract Zip Spec      14 (20) '2.0'\n-015765 Extract OS            00 (0) 'MS-DOS'\n-015766 General Purpose Flag  0808 (2056)\n+02B9B2 LOCAL HEADER #137     04034B50 (67324752)\n+02B9B6 Extract Zip Spec      14 (20) '2.0'\n+02B9B7 Extract OS            00 (0) 'MS-DOS'\n+02B9B8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-015768 Compression Method    0008 (8) 'Deflated'\n-01576A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01576E CRC                   00000000 (0)\n-015772 Compressed Size       00000000 (0)\n-015776 Uncompressed Size     00000000 (0)\n-01577A Filename Length       0036 (54)\n-01577C Extra Length          0000 (0)\n-01577E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02B9BA Compression Method    0008 (8) 'Deflated'\n+02B9BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02B9C0 CRC                   00000000 (0)\n+02B9C4 Compressed Size       00000000 (0)\n+02B9C8 Uncompressed Size     00000000 (0)\n+02B9CC Filename Length       0030 (48)\n+02B9CE Extra Length          0000 (0)\n+02B9D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1577E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2B9D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0157B4 PAYLOAD               XX\n+02BA00 PAYLOAD\n \n-0157B6 DATA DESCRIPTOR       08074B50 (134695760)\n-0157BA CRC                   00000000 (0)\n-0157BE Compressed Size       00000002 (2)\n-0157C2 Uncompressed Size     00000000 (0)\n+02BD77 DATA DESCRIPTOR       08074B50 (134695760)\n+02BD7B CRC                   5EECCC48 (1592577096)\n+02BD7F Compressed Size       00000377 (887)\n+02BD83 Uncompressed Size     000006F2 (1778)\n \n-0157C6 LOCAL HEADER #138     04034B50 (67324752)\n-0157CA Extract Zip Spec      14 (20) '2.0'\n-0157CB Extract OS            00 (0) 'MS-DOS'\n-0157CC General Purpose Flag  0808 (2056)\n+02BD87 LOCAL HEADER #138     04034B50 (67324752)\n+02BD8B Extract Zip Spec      14 (20) '2.0'\n+02BD8C Extract OS            00 (0) 'MS-DOS'\n+02BD8D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0157CE Compression Method    0008 (8) 'Deflated'\n-0157D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0157D4 CRC                   00000000 (0)\n-0157D8 Compressed Size       00000000 (0)\n-0157DC Uncompressed Size     00000000 (0)\n-0157E0 Filename Length       003D (61)\n-0157E2 Extra Length          0000 (0)\n-0157E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02BD8F Compression Method    0008 (8) 'Deflated'\n+02BD91 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02BD95 CRC                   00000000 (0)\n+02BD99 Compressed Size       00000000 (0)\n+02BD9D Uncompressed Size     00000000 (0)\n+02BDA1 Filename Length       002E (46)\n+02BDA3 Extra Length          0000 (0)\n+02BDA5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x157E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2BDA5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-015821 PAYLOAD\n+02BDD3 PAYLOAD\n \n-015C1A DATA DESCRIPTOR       08074B50 (134695760)\n-015C1E CRC                   06F60447 (116786247)\n-015C22 Compressed Size       000003F9 (1017)\n-015C26 Uncompressed Size     00000BC5 (3013)\n+02C451 DATA DESCRIPTOR       08074B50 (134695760)\n+02C455 CRC                   665C4504 (1717323012)\n+02C459 Compressed Size       0000067E (1662)\n+02C45D Uncompressed Size     00001123 (4387)\n \n-015C2A LOCAL HEADER #139     04034B50 (67324752)\n-015C2E Extract Zip Spec      14 (20) '2.0'\n-015C2F Extract OS            00 (0) 'MS-DOS'\n-015C30 General Purpose Flag  0808 (2056)\n+02C461 LOCAL HEADER #139     04034B50 (67324752)\n+02C465 Extract Zip Spec      14 (20) '2.0'\n+02C466 Extract OS            00 (0) 'MS-DOS'\n+02C467 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-015C32 Compression Method    0008 (8) 'Deflated'\n-015C34 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-015C38 CRC                   00000000 (0)\n-015C3C Compressed Size       00000000 (0)\n-015C40 Uncompressed Size     00000000 (0)\n-015C44 Filename Length       0044 (68)\n-015C46 Extra Length          0000 (0)\n-015C48 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02C469 Compression Method    0008 (8) 'Deflated'\n+02C46B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02C46F CRC                   00000000 (0)\n+02C473 Compressed Size       00000000 (0)\n+02C477 Uncompressed Size     00000000 (0)\n+02C47B Filename Length       0035 (53)\n+02C47D Extra Length          0000 (0)\n+02C47F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15C48: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2C47F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-015C8C PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+02C4B4 PAYLOAD\n \n-015CD6 DATA DESCRIPTOR       08074B50 (134695760)\n-015CDA CRC                   39E2F889 (971176073)\n-015CDE Compressed Size       0000004A (74)\n-015CE2 Uncompressed Size     0000004C (76)\n+02C74E DATA DESCRIPTOR       08074B50 (134695760)\n+02C752 CRC                   7FA20103 (2141323523)\n+02C756 Compressed Size       0000029A (666)\n+02C75A Uncompressed Size     00000534 (1332)\n \n-015CE6 LOCAL HEADER #140     04034B50 (67324752)\n-015CEA Extract Zip Spec      14 (20) '2.0'\n-015CEB Extract OS            00 (0) 'MS-DOS'\n-015CEC General Purpose Flag  0808 (2056)\n+02C75E LOCAL HEADER #140     04034B50 (67324752)\n+02C762 Extract Zip Spec      14 (20) '2.0'\n+02C763 Extract OS            00 (0) 'MS-DOS'\n+02C764 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-015CEE Compression Method    0008 (8) 'Deflated'\n-015CF0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-015CF4 CRC                   00000000 (0)\n-015CF8 Compressed Size       00000000 (0)\n-015CFC Uncompressed Size     00000000 (0)\n-015D00 Filename Length       0035 (53)\n-015D02 Extra Length          0000 (0)\n-015D04 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02C766 Compression Method    0008 (8) 'Deflated'\n+02C768 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02C76C CRC                   00000000 (0)\n+02C770 Compressed Size       00000000 (0)\n+02C774 Uncompressed Size     00000000 (0)\n+02C778 Filename Length       002B (43)\n+02C77A Extra Length          0000 (0)\n+02C77C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15D04: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2C77C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-015D39 PAYLOAD               XX\n+02C7A7 PAYLOAD\n \n-015D3B DATA DESCRIPTOR       08074B50 (134695760)\n-015D3F CRC                   00000000 (0)\n-015D43 Compressed Size       00000002 (2)\n-015D47 Uncompressed Size     00000000 (0)\n+02CC70 DATA DESCRIPTOR       08074B50 (134695760)\n+02CC74 CRC                   D4481329 (3561493289)\n+02CC78 Compressed Size       000004C9 (1225)\n+02CC7C Uncompressed Size     00000B76 (2934)\n \n-015D4B LOCAL HEADER #141     04034B50 (67324752)\n-015D4F Extract Zip Spec      14 (20) '2.0'\n-015D50 Extract OS            00 (0) 'MS-DOS'\n-015D51 General Purpose Flag  0808 (2056)\n+02CC80 LOCAL HEADER #141     04034B50 (67324752)\n+02CC84 Extract Zip Spec      14 (20) '2.0'\n+02CC85 Extract OS            00 (0) 'MS-DOS'\n+02CC86 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-015D53 Compression Method    0008 (8) 'Deflated'\n-015D55 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-015D59 CRC                   00000000 (0)\n-015D5D Compressed Size       00000000 (0)\n-015D61 Uncompressed Size     00000000 (0)\n-015D65 Filename Length       003C (60)\n-015D67 Extra Length          0000 (0)\n-015D69 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02CC88 Compression Method    0008 (8) 'Deflated'\n+02CC8A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02CC8E CRC                   00000000 (0)\n+02CC92 Compressed Size       00000000 (0)\n+02CC96 Uncompressed Size     00000000 (0)\n+02CC9A Filename Length       002B (43)\n+02CC9C Extra Length          0000 (0)\n+02CC9E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15D69: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2CC9E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-015DA5 PAYLOAD\n+02CCC9 PAYLOAD\n \n-01616F DATA DESCRIPTOR       08074B50 (134695760)\n-016173 CRC                   0701BB57 (117554007)\n-016177 Compressed Size       000003CA (970)\n-01617B Uncompressed Size     00000C33 (3123)\n+02CFF8 DATA DESCRIPTOR       08074B50 (134695760)\n+02CFFC CRC                   2FCAE9BB (801827259)\n+02D000 Compressed Size       0000032F (815)\n+02D004 Uncompressed Size     000006CA (1738)\n \n-01617F LOCAL HEADER #142     04034B50 (67324752)\n-016183 Extract Zip Spec      14 (20) '2.0'\n-016184 Extract OS            00 (0) 'MS-DOS'\n-016185 General Purpose Flag  0808 (2056)\n+02D008 LOCAL HEADER #142     04034B50 (67324752)\n+02D00C Extract Zip Spec      14 (20) '2.0'\n+02D00D Extract OS            00 (0) 'MS-DOS'\n+02D00E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-016187 Compression Method    0008 (8) 'Deflated'\n-016189 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01618D CRC                   00000000 (0)\n-016191 Compressed Size       00000000 (0)\n-016195 Uncompressed Size     00000000 (0)\n-016199 Filename Length       0043 (67)\n-01619B Extra Length          0000 (0)\n-01619D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02D010 Compression Method    0008 (8) 'Deflated'\n+02D012 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02D016 CRC                   00000000 (0)\n+02D01A Compressed Size       00000000 (0)\n+02D01E Uncompressed Size     00000000 (0)\n+02D022 Filename Length       002D (45)\n+02D024 Extra Length          0000 (0)\n+02D026 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1619D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2D026: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0161E0 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+02D053 PAYLOAD\n \n-016229 DATA DESCRIPTOR       08074B50 (134695760)\n-01622D CRC                   BACBA827 (3133909031)\n-016231 Compressed Size       00000049 (73)\n-016235 Uncompressed Size     0000004B (75)\n+02D3A0 DATA DESCRIPTOR       08074B50 (134695760)\n+02D3A4 CRC                   2EFAFE2D (788201005)\n+02D3A8 Compressed Size       0000034D (845)\n+02D3AC Uncompressed Size     00000732 (1842)\n \n-016239 LOCAL HEADER #143     04034B50 (67324752)\n-01623D Extract Zip Spec      14 (20) '2.0'\n-01623E Extract OS            00 (0) 'MS-DOS'\n-01623F General Purpose Flag  0808 (2056)\n+02D3B0 LOCAL HEADER #143     04034B50 (67324752)\n+02D3B4 Extract Zip Spec      14 (20) '2.0'\n+02D3B5 Extract OS            00 (0) 'MS-DOS'\n+02D3B6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-016241 Compression Method    0008 (8) 'Deflated'\n-016243 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-016247 CRC                   00000000 (0)\n-01624B Compressed Size       00000000 (0)\n-01624F Uncompressed Size     00000000 (0)\n-016253 Filename Length       0034 (52)\n-016255 Extra Length          0000 (0)\n-016257 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02D3B8 Compression Method    0008 (8) 'Deflated'\n+02D3BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02D3BE CRC                   00000000 (0)\n+02D3C2 Compressed Size       00000000 (0)\n+02D3C6 Uncompressed Size     00000000 (0)\n+02D3CA Filename Length       0028 (40)\n+02D3CC Extra Length          0000 (0)\n+02D3CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16257: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2D3CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01628B PAYLOAD               XX\n+02D3F6 PAYLOAD\n \n-01628D DATA DESCRIPTOR       08074B50 (134695760)\n-016291 CRC                   00000000 (0)\n-016295 Compressed Size       00000002 (2)\n-016299 Uncompressed Size     00000000 (0)\n+02D621 DATA DESCRIPTOR       08074B50 (134695760)\n+02D625 CRC                   09ED5602 (166548994)\n+02D629 Compressed Size       0000022B (555)\n+02D62D Uncompressed Size     000003D1 (977)\n \n-01629D LOCAL HEADER #144     04034B50 (67324752)\n-0162A1 Extract Zip Spec      14 (20) '2.0'\n-0162A2 Extract OS            00 (0) 'MS-DOS'\n-0162A3 General Purpose Flag  0808 (2056)\n+02D631 LOCAL HEADER #144     04034B50 (67324752)\n+02D635 Extract Zip Spec      14 (20) '2.0'\n+02D636 Extract OS            00 (0) 'MS-DOS'\n+02D637 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0162A5 Compression Method    0008 (8) 'Deflated'\n-0162A7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0162AB CRC                   00000000 (0)\n-0162AF Compressed Size       00000000 (0)\n-0162B3 Uncompressed Size     00000000 (0)\n-0162B7 Filename Length       003B (59)\n-0162B9 Extra Length          0000 (0)\n-0162BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02D639 Compression Method    0008 (8) 'Deflated'\n+02D63B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02D63F CRC                   00000000 (0)\n+02D643 Compressed Size       00000000 (0)\n+02D647 Uncompressed Size     00000000 (0)\n+02D64B Filename Length       0028 (40)\n+02D64D Extra Length          0000 (0)\n+02D64F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x162BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2D64F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0162F6 PAYLOAD\n+02D677 PAYLOAD\n \n-0167A7 DATA DESCRIPTOR       08074B50 (134695760)\n-0167AB CRC                   6F2313AC (1864569772)\n-0167AF Compressed Size       000004B1 (1201)\n-0167B3 Uncompressed Size     000012B3 (4787)\n+02DBC2 DATA DESCRIPTOR       08074B50 (134695760)\n+02DBC6 CRC                   58C25CA8 (1489132712)\n+02DBCA Compressed Size       0000054B (1355)\n+02DBCE Uncompressed Size     00000CF3 (3315)\n \n-0167B7 LOCAL HEADER #145     04034B50 (67324752)\n-0167BB Extract Zip Spec      14 (20) '2.0'\n-0167BC Extract OS            00 (0) 'MS-DOS'\n-0167BD General Purpose Flag  0808 (2056)\n+02DBD2 LOCAL HEADER #145     04034B50 (67324752)\n+02DBD6 Extract Zip Spec      14 (20) '2.0'\n+02DBD7 Extract OS            00 (0) 'MS-DOS'\n+02DBD8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0167BF Compression Method    0008 (8) 'Deflated'\n-0167C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0167C5 CRC                   00000000 (0)\n-0167C9 Compressed Size       00000000 (0)\n-0167CD Uncompressed Size     00000000 (0)\n-0167D1 Filename Length       0042 (66)\n-0167D3 Extra Length          0000 (0)\n-0167D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02DBDA Compression Method    0008 (8) 'Deflated'\n+02DBDC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02DBE0 CRC                   00000000 (0)\n+02DBE4 Compressed Size       00000000 (0)\n+02DBE8 Uncompressed Size     00000000 (0)\n+02DBEC Filename Length       002D (45)\n+02DBEE Extra Length          0000 (0)\n+02DBF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x167D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2DBF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-016817 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+02DC1D PAYLOAD\n \n-01685F DATA DESCRIPTOR       08074B50 (134695760)\n-016863 CRC                   88872903 (2290559235)\n-016867 Compressed Size       00000048 (72)\n-01686B Uncompressed Size     0000004A (74)\n+02E218 DATA DESCRIPTOR       08074B50 (134695760)\n+02E21C CRC                   234C96D0 (592221904)\n+02E220 Compressed Size       000005FB (1531)\n+02E224 Uncompressed Size     00001088 (4232)\n \n-01686F LOCAL HEADER #146     04034B50 (67324752)\n-016873 Extract Zip Spec      14 (20) '2.0'\n-016874 Extract OS            00 (0) 'MS-DOS'\n-016875 General Purpose Flag  0808 (2056)\n+02E228 LOCAL HEADER #146     04034B50 (67324752)\n+02E22C Extract Zip Spec      14 (20) '2.0'\n+02E22D Extract OS            00 (0) 'MS-DOS'\n+02E22E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-016877 Compression Method    0008 (8) 'Deflated'\n-016879 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01687D CRC                   00000000 (0)\n-016881 Compressed Size       00000000 (0)\n-016885 Uncompressed Size     00000000 (0)\n-016889 Filename Length       0038 (56)\n-01688B Extra Length          0000 (0)\n-01688D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02E230 Compression Method    0008 (8) 'Deflated'\n+02E232 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02E236 CRC                   00000000 (0)\n+02E23A Compressed Size       00000000 (0)\n+02E23E Uncompressed Size     00000000 (0)\n+02E242 Filename Length       002F (47)\n+02E244 Extra Length          0000 (0)\n+02E246 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1688D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2E246: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0168C5 PAYLOAD               XX\n+02E275 PAYLOAD\n \n-0168C7 DATA DESCRIPTOR       08074B50 (134695760)\n-0168CB CRC                   00000000 (0)\n-0168CF Compressed Size       00000002 (2)\n-0168D3 Uncompressed Size     00000000 (0)\n+02E60B DATA DESCRIPTOR       08074B50 (134695760)\n+02E60F CRC                   FDB2D35D (4256355165)\n+02E613 Compressed Size       00000396 (918)\n+02E617 Uncompressed Size     00000759 (1881)\n \n-0168D7 LOCAL HEADER #147     04034B50 (67324752)\n-0168DB Extract Zip Spec      14 (20) '2.0'\n-0168DC Extract OS            00 (0) 'MS-DOS'\n-0168DD General Purpose Flag  0808 (2056)\n+02E61B LOCAL HEADER #147     04034B50 (67324752)\n+02E61F Extract Zip Spec      14 (20) '2.0'\n+02E620 Extract OS            00 (0) 'MS-DOS'\n+02E621 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0168DF Compression Method    0008 (8) 'Deflated'\n-0168E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0168E5 CRC                   00000000 (0)\n-0168E9 Compressed Size       00000000 (0)\n-0168ED Uncompressed Size     00000000 (0)\n-0168F1 Filename Length       003F (63)\n-0168F3 Extra Length          0000 (0)\n-0168F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02E623 Compression Method    0008 (8) 'Deflated'\n+02E625 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02E629 CRC                   00000000 (0)\n+02E62D Compressed Size       00000000 (0)\n+02E631 Uncompressed Size     00000000 (0)\n+02E635 Filename Length       002F (47)\n+02E637 Extra Length          0000 (0)\n+02E639 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x168F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2E639: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-016934 PAYLOAD\n+02E668 PAYLOAD\n \n-016CFA DATA DESCRIPTOR       08074B50 (134695760)\n-016CFE CRC                   E3551669 (3814004329)\n-016D02 Compressed Size       000003C6 (966)\n-016D06 Uncompressed Size     00000B49 (2889)\n+02E8BA DATA DESCRIPTOR       08074B50 (134695760)\n+02E8BE CRC                   BC987223 (3164107299)\n+02E8C2 Compressed Size       00000252 (594)\n+02E8C6 Uncompressed Size     00000435 (1077)\n \n-016D0A LOCAL HEADER #148     04034B50 (67324752)\n-016D0E Extract Zip Spec      14 (20) '2.0'\n-016D0F Extract OS            00 (0) 'MS-DOS'\n-016D10 General Purpose Flag  0808 (2056)\n+02E8CA LOCAL HEADER #148     04034B50 (67324752)\n+02E8CE Extract Zip Spec      14 (20) '2.0'\n+02E8CF Extract OS            00 (0) 'MS-DOS'\n+02E8D0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-016D12 Compression Method    0008 (8) 'Deflated'\n-016D14 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-016D18 CRC                   00000000 (0)\n-016D1C Compressed Size       00000000 (0)\n-016D20 Uncompressed Size     00000000 (0)\n-016D24 Filename Length       0046 (70)\n-016D26 Extra Length          0000 (0)\n-016D28 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02E8D2 Compression Method    0008 (8) 'Deflated'\n+02E8D4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02E8D8 CRC                   00000000 (0)\n+02E8DC Compressed Size       00000000 (0)\n+02E8E0 Uncompressed Size     00000000 (0)\n+02E8E4 Filename Length       002A (42)\n+02E8E6 Extra Length          0000 (0)\n+02E8E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16D28: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2E8E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-016D6E PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+02E912 PAYLOAD               XX\n \n-016DBA DATA DESCRIPTOR       08074B50 (134695760)\n-016DBE CRC                   7158BA85 (1901640325)\n-016DC2 Compressed Size       0000004C (76)\n-016DC6 Uncompressed Size     0000004E (78)\n+02E914 DATA DESCRIPTOR       08074B50 (134695760)\n+02E918 CRC                   00000000 (0)\n+02E91C Compressed Size       00000002 (2)\n+02E920 Uncompressed Size     00000000 (0)\n \n-016DCA LOCAL HEADER #149     04034B50 (67324752)\n-016DCE Extract Zip Spec      14 (20) '2.0'\n-016DCF Extract OS            00 (0) 'MS-DOS'\n-016DD0 General Purpose Flag  0808 (2056)\n+02E924 LOCAL HEADER #149     04034B50 (67324752)\n+02E928 Extract Zip Spec      14 (20) '2.0'\n+02E929 Extract OS            00 (0) 'MS-DOS'\n+02E92A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-016DD2 Compression Method    0008 (8) 'Deflated'\n-016DD4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-016DD8 CRC                   00000000 (0)\n-016DDC Compressed Size       00000000 (0)\n-016DE0 Uncompressed Size     00000000 (0)\n-016DE4 Filename Length       0032 (50)\n-016DE6 Extra Length          0000 (0)\n-016DE8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02E92C Compression Method    0008 (8) 'Deflated'\n+02E92E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02E932 CRC                   00000000 (0)\n+02E936 Compressed Size       00000000 (0)\n+02E93A Uncompressed Size     00000000 (0)\n+02E93E Filename Length       0043 (67)\n+02E940 Extra Length          0000 (0)\n+02E942 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16DE8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2E942: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-016E1A PAYLOAD               XX\n+02E985 PAYLOAD\n \n-016E1C DATA DESCRIPTOR       08074B50 (134695760)\n-016E20 CRC                   00000000 (0)\n-016E24 Compressed Size       00000002 (2)\n-016E28 Uncompressed Size     00000000 (0)\n+02F234 DATA DESCRIPTOR       08074B50 (134695760)\n+02F238 CRC                   91868A4C (2441513548)\n+02F23C Compressed Size       000008AF (2223)\n+02F240 Uncompressed Size     00002146 (8518)\n \n-016E2C LOCAL HEADER #150     04034B50 (67324752)\n-016E30 Extract Zip Spec      14 (20) '2.0'\n-016E31 Extract OS            00 (0) 'MS-DOS'\n-016E32 General Purpose Flag  0808 (2056)\n+02F244 LOCAL HEADER #150     04034B50 (67324752)\n+02F248 Extract Zip Spec      14 (20) '2.0'\n+02F249 Extract OS            00 (0) 'MS-DOS'\n+02F24A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-016E34 Compression Method    0008 (8) 'Deflated'\n-016E36 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-016E3A CRC                   00000000 (0)\n-016E3E Compressed Size       00000000 (0)\n-016E42 Uncompressed Size     00000000 (0)\n-016E46 Filename Length       0039 (57)\n-016E48 Extra Length          0000 (0)\n-016E4A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02F24C Compression Method    0008 (8) 'Deflated'\n+02F24E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02F252 CRC                   00000000 (0)\n+02F256 Compressed Size       00000000 (0)\n+02F25A Uncompressed Size     00000000 (0)\n+02F25E Filename Length       0031 (49)\n+02F260 Extra Length          0000 (0)\n+02F262 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16E4A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2F262: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-016E83 PAYLOAD\n+02F293 PAYLOAD               XX\n \n-017213 DATA DESCRIPTOR       08074B50 (134695760)\n-017217 CRC                   B4003E22 (3019914786)\n-01721B Compressed Size       00000390 (912)\n-01721F Uncompressed Size     00000966 (2406)\n+02F295 DATA DESCRIPTOR       08074B50 (134695760)\n+02F299 CRC                   00000000 (0)\n+02F29D Compressed Size       00000002 (2)\n+02F2A1 Uncompressed Size     00000000 (0)\n \n-017223 LOCAL HEADER #151     04034B50 (67324752)\n-017227 Extract Zip Spec      14 (20) '2.0'\n-017228 Extract OS            00 (0) 'MS-DOS'\n-017229 General Purpose Flag  0808 (2056)\n+02F2A5 LOCAL HEADER #151     04034B50 (67324752)\n+02F2A9 Extract Zip Spec      14 (20) '2.0'\n+02F2AA Extract OS            00 (0) 'MS-DOS'\n+02F2AB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01722B Compression Method    0008 (8) 'Deflated'\n-01722D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-017231 CRC                   00000000 (0)\n-017235 Compressed Size       00000000 (0)\n-017239 Uncompressed Size     00000000 (0)\n-01723D Filename Length       0040 (64)\n-01723F Extra Length          0000 (0)\n-017241 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02F2AD Compression Method    0008 (8) 'Deflated'\n+02F2AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02F2B3 CRC                   00000000 (0)\n+02F2B7 Compressed Size       00000000 (0)\n+02F2BB Uncompressed Size     00000000 (0)\n+02F2BF Filename Length       0048 (72)\n+02F2C1 Extra Length          0000 (0)\n+02F2C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17241: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2F2C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-017281 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+02F30B PAYLOAD\n \n-0172C7 DATA DESCRIPTOR       08074B50 (134695760)\n-0172CB CRC                   A473398B (2759014795)\n-0172CF Compressed Size       00000046 (70)\n-0172D3 Uncompressed Size     00000048 (72)\n+02F59A DATA DESCRIPTOR       08074B50 (134695760)\n+02F59E CRC                   FB552F52 (4216663890)\n+02F5A2 Compressed Size       0000028F (655)\n+02F5A6 Uncompressed Size     00000532 (1330)\n \n-0172D7 LOCAL HEADER #152     04034B50 (67324752)\n-0172DB Extract Zip Spec      14 (20) '2.0'\n-0172DC Extract OS            00 (0) 'MS-DOS'\n-0172DD General Purpose Flag  0808 (2056)\n+02F5AA LOCAL HEADER #152     04034B50 (67324752)\n+02F5AE Extract Zip Spec      14 (20) '2.0'\n+02F5AF Extract OS            00 (0) 'MS-DOS'\n+02F5B0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0172DF Compression Method    0008 (8) 'Deflated'\n-0172E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0172E5 CRC                   00000000 (0)\n-0172E9 Compressed Size       00000000 (0)\n-0172ED Uncompressed Size     00000000 (0)\n-0172F1 Filename Length       0036 (54)\n-0172F3 Extra Length          0000 (0)\n-0172F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02F5B2 Compression Method    0008 (8) 'Deflated'\n+02F5B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02F5B8 CRC                   00000000 (0)\n+02F5BC Compressed Size       00000000 (0)\n+02F5C0 Uncompressed Size     00000000 (0)\n+02F5C4 Filename Length       004F (79)\n+02F5C6 Extra Length          0000 (0)\n+02F5C8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x172F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2F5C8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01732B PAYLOAD               XX\n+02F617 PAYLOAD\n \n-01732D DATA DESCRIPTOR       08074B50 (134695760)\n-017331 CRC                   00000000 (0)\n-017335 Compressed Size       00000002 (2)\n-017339 Uncompressed Size     00000000 (0)\n+02F87E DATA DESCRIPTOR       08074B50 (134695760)\n+02F882 CRC                   87AAF61F (2276128287)\n+02F886 Compressed Size       00000267 (615)\n+02F88A Uncompressed Size     000004F6 (1270)\n \n-01733D LOCAL HEADER #153     04034B50 (67324752)\n-017341 Extract Zip Spec      14 (20) '2.0'\n-017342 Extract OS            00 (0) 'MS-DOS'\n-017343 General Purpose Flag  0808 (2056)\n+02F88E LOCAL HEADER #153     04034B50 (67324752)\n+02F892 Extract Zip Spec      14 (20) '2.0'\n+02F893 Extract OS            00 (0) 'MS-DOS'\n+02F894 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-017345 Compression Method    0008 (8) 'Deflated'\n-017347 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01734B CRC                   00000000 (0)\n-01734F Compressed Size       00000000 (0)\n-017353 Uncompressed Size     00000000 (0)\n-017357 Filename Length       003D (61)\n-017359 Extra Length          0000 (0)\n-01735B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02F896 Compression Method    0008 (8) 'Deflated'\n+02F898 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02F89C CRC                   00000000 (0)\n+02F8A0 Compressed Size       00000000 (0)\n+02F8A4 Uncompressed Size     00000000 (0)\n+02F8A8 Filename Length       0033 (51)\n+02F8AA Extra Length          0000 (0)\n+02F8AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1735B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2F8AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-017398 PAYLOAD\n+02F8DF PAYLOAD               XX\n \n-01777E DATA DESCRIPTOR       08074B50 (134695760)\n-017782 CRC                   B4C3155F (3032683871)\n-017786 Compressed Size       000003E6 (998)\n-01778A Uncompressed Size     00000C6F (3183)\n+02F8E1 DATA DESCRIPTOR       08074B50 (134695760)\n+02F8E5 CRC                   00000000 (0)\n+02F8E9 Compressed Size       00000002 (2)\n+02F8ED Uncompressed Size     00000000 (0)\n \n-01778E LOCAL HEADER #154     04034B50 (67324752)\n-017792 Extract Zip Spec      14 (20) '2.0'\n-017793 Extract OS            00 (0) 'MS-DOS'\n-017794 General Purpose Flag  0808 (2056)\n+02F8F1 LOCAL HEADER #154     04034B50 (67324752)\n+02F8F5 Extract Zip Spec      14 (20) '2.0'\n+02F8F6 Extract OS            00 (0) 'MS-DOS'\n+02F8F7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-017796 Compression Method    0008 (8) 'Deflated'\n-017798 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01779C CRC                   00000000 (0)\n-0177A0 Compressed Size       00000000 (0)\n-0177A4 Uncompressed Size     00000000 (0)\n-0177A8 Filename Length       0044 (68)\n-0177AA Extra Length          0000 (0)\n-0177AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02F8F9 Compression Method    0008 (8) 'Deflated'\n+02F8FB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02F8FF CRC                   00000000 (0)\n+02F903 Compressed Size       00000000 (0)\n+02F907 Uncompressed Size     00000000 (0)\n+02F90B Filename Length       004C (76)\n+02F90D Extra Length          0000 (0)\n+02F90F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x177AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2F90F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0177F0 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+02F95B PAYLOAD\n \n-01783A DATA DESCRIPTOR       08074B50 (134695760)\n-01783E CRC                   2A04AB66 (704949094)\n-017842 Compressed Size       0000004A (74)\n-017846 Uncompressed Size     0000004C (76)\n+02FBE4 DATA DESCRIPTOR       08074B50 (134695760)\n+02FBE8 CRC                   267D653A (645752122)\n+02FBEC Compressed Size       00000289 (649)\n+02FBF0 Uncompressed Size     00000532 (1330)\n \n-01784A LOCAL HEADER #155     04034B50 (67324752)\n-01784E Extract Zip Spec      14 (20) '2.0'\n-01784F Extract OS            00 (0) 'MS-DOS'\n-017850 General Purpose Flag  0808 (2056)\n+02FBF4 LOCAL HEADER #155     04034B50 (67324752)\n+02FBF8 Extract Zip Spec      14 (20) '2.0'\n+02FBF9 Extract OS            00 (0) 'MS-DOS'\n+02FBFA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-017852 Compression Method    0008 (8) 'Deflated'\n-017854 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-017858 CRC                   00000000 (0)\n-01785C Compressed Size       00000000 (0)\n-017860 Uncompressed Size     00000000 (0)\n-017864 Filename Length       0037 (55)\n-017866 Extra Length          0000 (0)\n-017868 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02FBFC Compression Method    0008 (8) 'Deflated'\n+02FBFE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02FC02 CRC                   00000000 (0)\n+02FC06 Compressed Size       00000000 (0)\n+02FC0A Uncompressed Size     00000000 (0)\n+02FC0E Filename Length       0053 (83)\n+02FC10 Extra Length          0000 (0)\n+02FC12 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17868: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2FC12: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01789F PAYLOAD               XX\n+02FC65 PAYLOAD\n \n-0178A1 DATA DESCRIPTOR       08074B50 (134695760)\n-0178A5 CRC                   00000000 (0)\n-0178A9 Compressed Size       00000002 (2)\n-0178AD Uncompressed Size     00000000 (0)\n+02FECA DATA DESCRIPTOR       08074B50 (134695760)\n+02FECE CRC                   2179F10E (561639694)\n+02FED2 Compressed Size       00000265 (613)\n+02FED6 Uncompressed Size     000004FE (1278)\n \n-0178B1 LOCAL HEADER #156     04034B50 (67324752)\n-0178B5 Extract Zip Spec      14 (20) '2.0'\n-0178B6 Extract OS            00 (0) 'MS-DOS'\n-0178B7 General Purpose Flag  0808 (2056)\n+02FEDA LOCAL HEADER #156     04034B50 (67324752)\n+02FEDE Extract Zip Spec      14 (20) '2.0'\n+02FEDF Extract OS            00 (0) 'MS-DOS'\n+02FEE0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0178B9 Compression Method    0008 (8) 'Deflated'\n-0178BB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0178BF CRC                   00000000 (0)\n-0178C3 Compressed Size       00000000 (0)\n-0178C7 Uncompressed Size     00000000 (0)\n-0178CB Filename Length       003E (62)\n-0178CD Extra Length          0000 (0)\n-0178CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02FEE2 Compression Method    0008 (8) 'Deflated'\n+02FEE4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02FEE8 CRC                   00000000 (0)\n+02FEEC Compressed Size       00000000 (0)\n+02FEF0 Uncompressed Size     00000000 (0)\n+02FEF4 Filename Length       0031 (49)\n+02FEF6 Extra Length          0000 (0)\n+02FEF8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x178CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2FEF8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01790D PAYLOAD\n+02FF29 PAYLOAD               XX\n \n-017C89 DATA DESCRIPTOR       08074B50 (134695760)\n-017C8D CRC                   E0484CF4 (3762834676)\n-017C91 Compressed Size       0000037C (892)\n-017C95 Uncompressed Size     0000084F (2127)\n+02FF2B DATA DESCRIPTOR       08074B50 (134695760)\n+02FF2F CRC                   00000000 (0)\n+02FF33 Compressed Size       00000002 (2)\n+02FF37 Uncompressed Size     00000000 (0)\n \n-017C99 LOCAL HEADER #157     04034B50 (67324752)\n-017C9D Extract Zip Spec      14 (20) '2.0'\n-017C9E Extract OS            00 (0) 'MS-DOS'\n-017C9F General Purpose Flag  0808 (2056)\n+02FF3B LOCAL HEADER #157     04034B50 (67324752)\n+02FF3F Extract Zip Spec      14 (20) '2.0'\n+02FF40 Extract OS            00 (0) 'MS-DOS'\n+02FF41 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-017CA1 Compression Method    0008 (8) 'Deflated'\n-017CA3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-017CA7 CRC                   00000000 (0)\n-017CAB Compressed Size       00000000 (0)\n-017CAF Uncompressed Size     00000000 (0)\n-017CB3 Filename Length       0045 (69)\n-017CB5 Extra Length          0000 (0)\n-017CB7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+02FF43 Compression Method    0008 (8) 'Deflated'\n+02FF45 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+02FF49 CRC                   00000000 (0)\n+02FF4D Compressed Size       00000000 (0)\n+02FF51 Uncompressed Size     00000000 (0)\n+02FF55 Filename Length       0042 (66)\n+02FF57 Extra Length          0000 (0)\n+02FF59 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17CB7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2FF59: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-017CFC PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+02FF9B PAYLOAD\n \n-017D46 DATA DESCRIPTOR       08074B50 (134695760)\n-017D4A CRC                   B5C799B8 (3049757112)\n-017D4E Compressed Size       0000004A (74)\n-017D52 Uncompressed Size     0000004D (77)\n+030848 DATA DESCRIPTOR       08074B50 (134695760)\n+03084C CRC                   DEAE7474 (3735975028)\n+030850 Compressed Size       000008AD (2221)\n+030854 Uncompressed Size     00002232 (8754)\n \n-017D56 LOCAL HEADER #158     04034B50 (67324752)\n-017D5A Extract Zip Spec      14 (20) '2.0'\n-017D5B Extract OS            00 (0) 'MS-DOS'\n-017D5C General Purpose Flag  0808 (2056)\n+030858 LOCAL HEADER #158     04034B50 (67324752)\n+03085C Extract Zip Spec      14 (20) '2.0'\n+03085D Extract OS            00 (0) 'MS-DOS'\n+03085E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-017D5E Compression Method    0008 (8) 'Deflated'\n-017D60 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-017D64 CRC                   00000000 (0)\n-017D68 Compressed Size       00000000 (0)\n-017D6C Uncompressed Size     00000000 (0)\n-017D70 Filename Length       0036 (54)\n-017D72 Extra Length          0000 (0)\n-017D74 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+030860 Compression Method    0008 (8) 'Deflated'\n+030862 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+030866 CRC                   00000000 (0)\n+03086A Compressed Size       00000000 (0)\n+03086E Uncompressed Size     00000000 (0)\n+030872 Filename Length       0037 (55)\n+030874 Extra Length          0000 (0)\n+030876 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17D74: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x30876: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-017DAA PAYLOAD               XX\n+0308AD PAYLOAD               XX\n \n-017DAC DATA DESCRIPTOR       08074B50 (134695760)\n-017DB0 CRC                   00000000 (0)\n-017DB4 Compressed Size       00000002 (2)\n-017DB8 Uncompressed Size     00000000 (0)\n+0308AF DATA DESCRIPTOR       08074B50 (134695760)\n+0308B3 CRC                   00000000 (0)\n+0308B7 Compressed Size       00000002 (2)\n+0308BB Uncompressed Size     00000000 (0)\n \n-017DBC LOCAL HEADER #159     04034B50 (67324752)\n-017DC0 Extract Zip Spec      14 (20) '2.0'\n-017DC1 Extract OS            00 (0) 'MS-DOS'\n-017DC2 General Purpose Flag  0808 (2056)\n+0308BF LOCAL HEADER #159     04034B50 (67324752)\n+0308C3 Extract Zip Spec      14 (20) '2.0'\n+0308C4 Extract OS            00 (0) 'MS-DOS'\n+0308C5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-017DC4 Compression Method    0008 (8) 'Deflated'\n-017DC6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-017DCA CRC                   00000000 (0)\n-017DCE Compressed Size       00000000 (0)\n-017DD2 Uncompressed Size     00000000 (0)\n-017DD6 Filename Length       003D (61)\n-017DD8 Extra Length          0000 (0)\n-017DDA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0308C7 Compression Method    0008 (8) 'Deflated'\n+0308C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0308CD CRC                   00000000 (0)\n+0308D1 Compressed Size       00000000 (0)\n+0308D5 Uncompressed Size     00000000 (0)\n+0308D9 Filename Length       0046 (70)\n+0308DB Extra Length          0000 (0)\n+0308DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17DDA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x308DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-017E17 PAYLOAD\n+030923 PAYLOAD\n \n-018179 DATA DESCRIPTOR       08074B50 (134695760)\n-01817D CRC                   F4C8F642 (4106810946)\n-018181 Compressed Size       00000362 (866)\n-018185 Uncompressed Size     000007CB (1995)\n+030CDC DATA DESCRIPTOR       08074B50 (134695760)\n+030CE0 CRC                   036D4C42 (57494594)\n+030CE4 Compressed Size       000003B9 (953)\n+030CE8 Uncompressed Size     00000B63 (2915)\n \n-018189 LOCAL HEADER #160     04034B50 (67324752)\n-01818D Extract Zip Spec      14 (20) '2.0'\n-01818E Extract OS            00 (0) 'MS-DOS'\n-01818F General Purpose Flag  0808 (2056)\n+030CEC LOCAL HEADER #160     04034B50 (67324752)\n+030CF0 Extract Zip Spec      14 (20) '2.0'\n+030CF1 Extract OS            00 (0) 'MS-DOS'\n+030CF2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-018191 Compression Method    0008 (8) 'Deflated'\n-018193 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-018197 CRC                   00000000 (0)\n-01819B Compressed Size       00000000 (0)\n-01819F Uncompressed Size     00000000 (0)\n-0181A3 Filename Length       0044 (68)\n-0181A5 Extra Length          0000 (0)\n-0181A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+030CF4 Compression Method    0008 (8) 'Deflated'\n+030CF6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+030CFA CRC                   00000000 (0)\n+030CFE Compressed Size       00000000 (0)\n+030D02 Uncompressed Size     00000000 (0)\n+030D06 Filename Length       004E (78)\n+030D08 Extra Length          0000 (0)\n+030D0A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x181A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x30D0A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0181EB PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+030D58 PAYLOAD\n \n-018235 DATA DESCRIPTOR       08074B50 (134695760)\n-018239 CRC                   AD875852 (2911328338)\n-01823D Compressed Size       0000004A (74)\n-018241 Uncompressed Size     0000004C (76)\n+031076 DATA DESCRIPTOR       08074B50 (134695760)\n+03107A CRC                   27E35EC9 (669212361)\n+03107E Compressed Size       0000031E (798)\n+031082 Uncompressed Size     0000080A (2058)\n \n-018245 LOCAL HEADER #161     04034B50 (67324752)\n-018249 Extract Zip Spec      14 (20) '2.0'\n-01824A Extract OS            00 (0) 'MS-DOS'\n-01824B General Purpose Flag  0808 (2056)\n+031086 LOCAL HEADER #161     04034B50 (67324752)\n+03108A Extract Zip Spec      14 (20) '2.0'\n+03108B Extract OS            00 (0) 'MS-DOS'\n+03108C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01824D Compression Method    0008 (8) 'Deflated'\n-01824F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-018253 CRC                   00000000 (0)\n-018257 Compressed Size       00000000 (0)\n-01825B Uncompressed Size     00000000 (0)\n-01825F Filename Length       0038 (56)\n-018261 Extra Length          0000 (0)\n-018263 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03108E Compression Method    0008 (8) 'Deflated'\n+031090 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+031094 CRC                   00000000 (0)\n+031098 Compressed Size       00000000 (0)\n+03109C Uncompressed Size     00000000 (0)\n+0310A0 Filename Length       0027 (39)\n+0310A2 Extra Length          0000 (0)\n+0310A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18263: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x310A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01829B PAYLOAD               XX\n+0310CB PAYLOAD               XX\n \n-01829D DATA DESCRIPTOR       08074B50 (134695760)\n-0182A1 CRC                   00000000 (0)\n-0182A5 Compressed Size       00000002 (2)\n-0182A9 Uncompressed Size     00000000 (0)\n+0310CD DATA DESCRIPTOR       08074B50 (134695760)\n+0310D1 CRC                   00000000 (0)\n+0310D5 Compressed Size       00000002 (2)\n+0310D9 Uncompressed Size     00000000 (0)\n \n-0182AD LOCAL HEADER #162     04034B50 (67324752)\n-0182B1 Extract Zip Spec      14 (20) '2.0'\n-0182B2 Extract OS            00 (0) 'MS-DOS'\n-0182B3 General Purpose Flag  0808 (2056)\n+0310DD LOCAL HEADER #162     04034B50 (67324752)\n+0310E1 Extract Zip Spec      14 (20) '2.0'\n+0310E2 Extract OS            00 (0) 'MS-DOS'\n+0310E3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0182B5 Compression Method    0008 (8) 'Deflated'\n-0182B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0182BB CRC                   00000000 (0)\n-0182BF Compressed Size       00000000 (0)\n-0182C3 Uncompressed Size     00000000 (0)\n-0182C7 Filename Length       003F (63)\n-0182C9 Extra Length          0000 (0)\n-0182CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0310E5 Compression Method    0008 (8) 'Deflated'\n+0310E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0310EB CRC                   00000000 (0)\n+0310EF Compressed Size       00000000 (0)\n+0310F3 Uncompressed Size     00000000 (0)\n+0310F7 Filename Length       003D (61)\n+0310F9 Extra Length          0000 (0)\n+0310FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x182CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x310FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01830A PAYLOAD\n+031138 PAYLOAD\n \n-018687 DATA DESCRIPTOR       08074B50 (134695760)\n-01868B CRC                   A6C9E837 (2798250039)\n-01868F Compressed Size       0000037D (893)\n-018693 Uncompressed Size     0000084D (2125)\n+031747 DATA DESCRIPTOR       08074B50 (134695760)\n+03174B CRC                   A6C08F00 (2797637376)\n+03174F Compressed Size       0000060F (1551)\n+031753 Uncompressed Size     00001361 (4961)\n \n-018697 LOCAL HEADER #163     04034B50 (67324752)\n-01869B Extract Zip Spec      14 (20) '2.0'\n-01869C Extract OS            00 (0) 'MS-DOS'\n-01869D General Purpose Flag  0808 (2056)\n+031757 LOCAL HEADER #163     04034B50 (67324752)\n+03175B Extract Zip Spec      14 (20) '2.0'\n+03175C Extract OS            00 (0) 'MS-DOS'\n+03175D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01869F Compression Method    0008 (8) 'Deflated'\n-0186A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0186A5 CRC                   00000000 (0)\n-0186A9 Compressed Size       00000000 (0)\n-0186AD Uncompressed Size     00000000 (0)\n-0186B1 Filename Length       0046 (70)\n-0186B3 Extra Length          0000 (0)\n-0186B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03175F Compression Method    0008 (8) 'Deflated'\n+031761 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+031765 CRC                   00000000 (0)\n+031769 Compressed Size       00000000 (0)\n+03176D Uncompressed Size     00000000 (0)\n+031771 Filename Length       003B (59)\n+031773 Extra Length          0000 (0)\n+031775 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x186B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x31775: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0186FB PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0317B0 PAYLOAD\n \n-018746 DATA DESCRIPTOR       08074B50 (134695760)\n-01874A CRC                   26719F8E (644980622)\n-01874E Compressed Size       0000004B (75)\n-018752 Uncompressed Size     0000004E (78)\n+031C80 DATA DESCRIPTOR       08074B50 (134695760)\n+031C84 CRC                   FF9ED7FD (4288600061)\n+031C88 Compressed Size       000004D0 (1232)\n+031C8C Uncompressed Size     00000ECB (3787)\n \n-018756 LOCAL HEADER #164     04034B50 (67324752)\n-01875A Extract Zip Spec      14 (20) '2.0'\n-01875B Extract OS            00 (0) 'MS-DOS'\n-01875C General Purpose Flag  0808 (2056)\n+031C90 LOCAL HEADER #164     04034B50 (67324752)\n+031C94 Extract Zip Spec      14 (20) '2.0'\n+031C95 Extract OS            00 (0) 'MS-DOS'\n+031C96 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01875E Compression Method    0008 (8) 'Deflated'\n-018760 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-018764 CRC                   00000000 (0)\n-018768 Compressed Size       00000000 (0)\n-01876C Uncompressed Size     00000000 (0)\n-018770 Filename Length       002A (42)\n-018772 Extra Length          0000 (0)\n-018774 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+031C98 Compression Method    0008 (8) 'Deflated'\n+031C9A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+031C9E CRC                   00000000 (0)\n+031CA2 Compressed Size       00000000 (0)\n+031CA6 Uncompressed Size     00000000 (0)\n+031CAA Filename Length       0028 (40)\n+031CAC Extra Length          0000 (0)\n+031CAE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18774: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x31CAE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01879E PAYLOAD               XX\n+031CD6 PAYLOAD               XX\n \n-0187A0 DATA DESCRIPTOR       08074B50 (134695760)\n-0187A4 CRC                   00000000 (0)\n-0187A8 Compressed Size       00000002 (2)\n-0187AC Uncompressed Size     00000000 (0)\n+031CD8 DATA DESCRIPTOR       08074B50 (134695760)\n+031CDC CRC                   00000000 (0)\n+031CE0 Compressed Size       00000002 (2)\n+031CE4 Uncompressed Size     00000000 (0)\n \n-0187B0 LOCAL HEADER #165     04034B50 (67324752)\n-0187B4 Extract Zip Spec      14 (20) '2.0'\n-0187B5 Extract OS            00 (0) 'MS-DOS'\n-0187B6 General Purpose Flag  0808 (2056)\n+031CE8 LOCAL HEADER #165     04034B50 (67324752)\n+031CEC Extract Zip Spec      14 (20) '2.0'\n+031CED Extract OS            00 (0) 'MS-DOS'\n+031CEE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0187B8 Compression Method    0008 (8) 'Deflated'\n-0187BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0187BE CRC                   00000000 (0)\n-0187C2 Compressed Size       00000000 (0)\n-0187C6 Uncompressed Size     00000000 (0)\n-0187CA Filename Length       0031 (49)\n-0187CC Extra Length          0000 (0)\n-0187CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+031CF0 Compression Method    0008 (8) 'Deflated'\n+031CF2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+031CF6 CRC                   00000000 (0)\n+031CFA Compressed Size       00000000 (0)\n+031CFE Uncompressed Size     00000000 (0)\n+031D02 Filename Length       0050 (80)\n+031D04 Extra Length          0000 (0)\n+031D06 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x187CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x31D06: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0187FF PAYLOAD\n+031D56 PAYLOAD\n \n-018B9D DATA DESCRIPTOR       08074B50 (134695760)\n-018BA1 CRC                   17F3C42C (401851436)\n-018BA5 Compressed Size       0000039E (926)\n-018BA9 Uncompressed Size     00000B8A (2954)\n+032036 DATA DESCRIPTOR       08074B50 (134695760)\n+03203A CRC                   33C069B6 (868247990)\n+03203E Compressed Size       000002E0 (736)\n+032042 Uncompressed Size     000006EC (1772)\n \n-018BAD LOCAL HEADER #166     04034B50 (67324752)\n-018BB1 Extract Zip Spec      14 (20) '2.0'\n-018BB2 Extract OS            00 (0) 'MS-DOS'\n-018BB3 General Purpose Flag  0808 (2056)\n+032046 LOCAL HEADER #166     04034B50 (67324752)\n+03204A Extract Zip Spec      14 (20) '2.0'\n+03204B Extract OS            00 (0) 'MS-DOS'\n+03204C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-018BB5 Compression Method    0008 (8) 'Deflated'\n-018BB7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-018BBB CRC                   00000000 (0)\n-018BBF Compressed Size       00000000 (0)\n-018BC3 Uncompressed Size     00000000 (0)\n-018BC7 Filename Length       0038 (56)\n-018BC9 Extra Length          0000 (0)\n-018BCB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03204E Compression Method    0008 (8) 'Deflated'\n+032050 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+032054 CRC                   00000000 (0)\n+032058 Compressed Size       00000000 (0)\n+03205C Uncompressed Size     00000000 (0)\n+032060 Filename Length       0045 (69)\n+032062 Extra Length          0000 (0)\n+032064 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18BCB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x32064: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-018C03 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0320A9 PAYLOAD\n \n-018C40 DATA DESCRIPTOR       08074B50 (134695760)\n-018C44 CRC                   9B978690 (2610398864)\n-018C48 Compressed Size       0000003D (61)\n-018C4C Uncompressed Size     00000040 (64)\n+032536 DATA DESCRIPTOR       08074B50 (134695760)\n+03253A CRC                   1A3A8FC1 (440045505)\n+03253E Compressed Size       0000048D (1165)\n+032542 Uncompressed Size     00000EE2 (3810)\n \n-018C50 LOCAL HEADER #167     04034B50 (67324752)\n-018C54 Extract Zip Spec      14 (20) '2.0'\n-018C55 Extract OS            00 (0) 'MS-DOS'\n-018C56 General Purpose Flag  0808 (2056)\n+032546 LOCAL HEADER #167     04034B50 (67324752)\n+03254A Extract Zip Spec      14 (20) '2.0'\n+03254B Extract OS            00 (0) 'MS-DOS'\n+03254C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-018C58 Compression Method    0008 (8) 'Deflated'\n-018C5A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-018C5E CRC                   00000000 (0)\n-018C62 Compressed Size       00000000 (0)\n-018C66 Uncompressed Size     00000000 (0)\n-018C6A Filename Length       0038 (56)\n-018C6C Extra Length          0000 (0)\n-018C6E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03254E Compression Method    0008 (8) 'Deflated'\n+032550 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+032554 CRC                   00000000 (0)\n+032558 Compressed Size       00000000 (0)\n+03255C Uncompressed Size     00000000 (0)\n+032560 Filename Length       0029 (41)\n+032562 Extra Length          0000 (0)\n+032564 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18C6E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x32564: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-018CA6 PAYLOAD               XX\n+03258D PAYLOAD               XX\n \n-018CA8 DATA DESCRIPTOR       08074B50 (134695760)\n-018CAC CRC                   00000000 (0)\n-018CB0 Compressed Size       00000002 (2)\n-018CB4 Uncompressed Size     00000000 (0)\n+03258F DATA DESCRIPTOR       08074B50 (134695760)\n+032593 CRC                   00000000 (0)\n+032597 Compressed Size       00000002 (2)\n+03259B Uncompressed Size     00000000 (0)\n \n-018CB8 LOCAL HEADER #168     04034B50 (67324752)\n-018CBC Extract Zip Spec      14 (20) '2.0'\n-018CBD Extract OS            00 (0) 'MS-DOS'\n-018CBE General Purpose Flag  0808 (2056)\n+03259F LOCAL HEADER #168     04034B50 (67324752)\n+0325A3 Extract Zip Spec      14 (20) '2.0'\n+0325A4 Extract OS            00 (0) 'MS-DOS'\n+0325A5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-018CC0 Compression Method    0008 (8) 'Deflated'\n-018CC2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-018CC6 CRC                   00000000 (0)\n-018CCA Compressed Size       00000000 (0)\n-018CCE Uncompressed Size     00000000 (0)\n-018CD2 Filename Length       003F (63)\n-018CD4 Extra Length          0000 (0)\n-018CD6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0325A7 Compression Method    0008 (8) 'Deflated'\n+0325A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0325AD CRC                   00000000 (0)\n+0325B1 Compressed Size       00000000 (0)\n+0325B5 Uncompressed Size     00000000 (0)\n+0325B9 Filename Length       0040 (64)\n+0325BB Extra Length          0000 (0)\n+0325BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18CD6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x325BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-018D15 PAYLOAD\n+0325FD PAYLOAD\n \n-01907B DATA DESCRIPTOR       08074B50 (134695760)\n-01907F CRC                   E8369296 (3895890582)\n-019083 Compressed Size       00000366 (870)\n-019087 Uncompressed Size     000007B9 (1977)\n+03298C DATA DESCRIPTOR       08074B50 (134695760)\n+032990 CRC                   B2FCFE3E (3002924606)\n+032994 Compressed Size       0000038F (911)\n+032998 Uncompressed Size     0000090C (2316)\n \n-01908B LOCAL HEADER #169     04034B50 (67324752)\n-01908F Extract Zip Spec      14 (20) '2.0'\n-019090 Extract OS            00 (0) 'MS-DOS'\n-019091 General Purpose Flag  0808 (2056)\n+03299C LOCAL HEADER #169     04034B50 (67324752)\n+0329A0 Extract Zip Spec      14 (20) '2.0'\n+0329A1 Extract OS            00 (0) 'MS-DOS'\n+0329A2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-019093 Compression Method    0008 (8) 'Deflated'\n-019095 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-019099 CRC                   00000000 (0)\n-01909D Compressed Size       00000000 (0)\n-0190A1 Uncompressed Size     00000000 (0)\n-0190A5 Filename Length       0046 (70)\n-0190A7 Extra Length          0000 (0)\n-0190A9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0329A4 Compression Method    0008 (8) 'Deflated'\n+0329A6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0329AA CRC                   00000000 (0)\n+0329AE Compressed Size       00000000 (0)\n+0329B2 Uncompressed Size     00000000 (0)\n+0329B6 Filename Length       004F (79)\n+0329B8 Extra Length          0000 (0)\n+0329BA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x190A9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x329BA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0190EF PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+032A09 PAYLOAD\n \n-01913A DATA DESCRIPTOR       08074B50 (134695760)\n-01913E CRC                   F5EE859D (4126049693)\n-019142 Compressed Size       0000004B (75)\n-019146 Uncompressed Size     0000004E (78)\n+032D6A DATA DESCRIPTOR       08074B50 (134695760)\n+032D6E CRC                   8FEFC776 (2414856054)\n+032D72 Compressed Size       00000361 (865)\n+032D76 Uncompressed Size     000008CF (2255)\n \n-01914A LOCAL HEADER #170     04034B50 (67324752)\n-01914E Extract Zip Spec      14 (20) '2.0'\n-01914F Extract OS            00 (0) 'MS-DOS'\n-019150 General Purpose Flag  0808 (2056)\n+032D7A LOCAL HEADER #170     04034B50 (67324752)\n+032D7E Extract Zip Spec      14 (20) '2.0'\n+032D7F Extract OS            00 (0) 'MS-DOS'\n+032D80 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-019152 Compression Method    0008 (8) 'Deflated'\n-019154 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-019158 CRC                   00000000 (0)\n-01915C Compressed Size       00000000 (0)\n-019160 Uncompressed Size     00000000 (0)\n-019164 Filename Length       003D (61)\n-019166 Extra Length          0000 (0)\n-019168 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+032D82 Compression Method    0008 (8) 'Deflated'\n+032D84 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+032D88 CRC                   00000000 (0)\n+032D8C Compressed Size       00000000 (0)\n+032D90 Uncompressed Size     00000000 (0)\n+032D94 Filename Length       0049 (73)\n+032D96 Extra Length          0000 (0)\n+032D98 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19168: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x32D98: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0191A5 PAYLOAD               XX\n+032DE1 PAYLOAD\n \n-0191A7 DATA DESCRIPTOR       08074B50 (134695760)\n-0191AB CRC                   00000000 (0)\n-0191AF Compressed Size       00000002 (2)\n-0191B3 Uncompressed Size     00000000 (0)\n+0331E0 DATA DESCRIPTOR       08074B50 (134695760)\n+0331E4 CRC                   33BD82F4 (868057844)\n+0331E8 Compressed Size       000003FF (1023)\n+0331EC Uncompressed Size     00000AA3 (2723)\n \n-0191B7 LOCAL HEADER #171     04034B50 (67324752)\n-0191BB Extract Zip Spec      14 (20) '2.0'\n-0191BC Extract OS            00 (0) 'MS-DOS'\n-0191BD General Purpose Flag  0808 (2056)\n+0331F0 LOCAL HEADER #171     04034B50 (67324752)\n+0331F4 Extract Zip Spec      14 (20) '2.0'\n+0331F5 Extract OS            00 (0) 'MS-DOS'\n+0331F6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0191BF Compression Method    0008 (8) 'Deflated'\n-0191C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0191C5 CRC                   00000000 (0)\n-0191C9 Compressed Size       00000000 (0)\n-0191CD Uncompressed Size     00000000 (0)\n-0191D1 Filename Length       0044 (68)\n-0191D3 Extra Length          0000 (0)\n-0191D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0331F8 Compression Method    0008 (8) 'Deflated'\n+0331FA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0331FE CRC                   00000000 (0)\n+033202 Compressed Size       00000000 (0)\n+033206 Uncompressed Size     00000000 (0)\n+03320A Filename Length       0029 (41)\n+03320C Extra Length          0000 (0)\n+03320E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x191D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3320E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-019219 PAYLOAD\n+033237 PAYLOAD               XX\n \n-019590 DATA DESCRIPTOR       08074B50 (134695760)\n-019594 CRC                   16DF2D66 (383724902)\n-019598 Compressed Size       00000377 (887)\n-01959C Uncompressed Size     0000083C (2108)\n+033239 DATA DESCRIPTOR       08074B50 (134695760)\n+03323D CRC                   00000000 (0)\n+033241 Compressed Size       00000002 (2)\n+033245 Uncompressed Size     00000000 (0)\n \n-0195A0 LOCAL HEADER #172     04034B50 (67324752)\n-0195A4 Extract Zip Spec      14 (20) '2.0'\n-0195A5 Extract OS            00 (0) 'MS-DOS'\n-0195A6 General Purpose Flag  0808 (2056)\n+033249 LOCAL HEADER #172     04034B50 (67324752)\n+03324D Extract Zip Spec      14 (20) '2.0'\n+03324E Extract OS            00 (0) 'MS-DOS'\n+03324F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0195A8 Compression Method    0008 (8) 'Deflated'\n-0195AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0195AE CRC                   00000000 (0)\n-0195B2 Compressed Size       00000000 (0)\n-0195B6 Uncompressed Size     00000000 (0)\n-0195BA Filename Length       004B (75)\n-0195BC Extra Length          0000 (0)\n-0195BE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+033251 Compression Method    0008 (8) 'Deflated'\n+033253 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+033257 CRC                   00000000 (0)\n+03325B Compressed Size       00000000 (0)\n+03325F Uncompressed Size     00000000 (0)\n+033263 Filename Length       0041 (65)\n+033265 Extra Length          0000 (0)\n+033267 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x195BE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x33267: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-019609 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0332A8 PAYLOAD\n \n-019658 DATA DESCRIPTOR       08074B50 (134695760)\n-01965C CRC                   A3F71CB2 (2750880946)\n-019660 Compressed Size       0000004F (79)\n-019664 Uncompressed Size     00000053 (83)\n+033856 DATA DESCRIPTOR       08074B50 (134695760)\n+03385A CRC                   BCC9CB9D (3167341469)\n+03385E Compressed Size       000005AE (1454)\n+033862 Uncompressed Size     000010C1 (4289)\n \n-019668 LOCAL HEADER #173     04034B50 (67324752)\n-01966C Extract Zip Spec      14 (20) '2.0'\n-01966D Extract OS            00 (0) 'MS-DOS'\n-01966E General Purpose Flag  0808 (2056)\n+033866 LOCAL HEADER #173     04034B50 (67324752)\n+03386A Extract Zip Spec      14 (20) '2.0'\n+03386B Extract OS            00 (0) 'MS-DOS'\n+03386C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-019670 Compression Method    0008 (8) 'Deflated'\n-019672 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-019676 CRC                   00000000 (0)\n-01967A Compressed Size       00000000 (0)\n-01967E Uncompressed Size     00000000 (0)\n-019682 Filename Length       0038 (56)\n-019684 Extra Length          0000 (0)\n-019686 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03386E Compression Method    0008 (8) 'Deflated'\n+033870 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+033874 CRC                   00000000 (0)\n+033878 Compressed Size       00000000 (0)\n+03387C Uncompressed Size     00000000 (0)\n+033880 Filename Length       0047 (71)\n+033882 Extra Length          0000 (0)\n+033884 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19686: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x33884: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0196BE PAYLOAD               XX\n+0338CB PAYLOAD\n \n-0196C0 DATA DESCRIPTOR       08074B50 (134695760)\n-0196C4 CRC                   00000000 (0)\n-0196C8 Compressed Size       00000002 (2)\n-0196CC Uncompressed Size     00000000 (0)\n+033F92 DATA DESCRIPTOR       08074B50 (134695760)\n+033F96 CRC                   D501B98C (3573660044)\n+033F9A Compressed Size       000006C7 (1735)\n+033F9E Uncompressed Size     000014EB (5355)\n \n-0196D0 LOCAL HEADER #174     04034B50 (67324752)\n-0196D4 Extract Zip Spec      14 (20) '2.0'\n-0196D5 Extract OS            00 (0) 'MS-DOS'\n-0196D6 General Purpose Flag  0808 (2056)\n+033FA2 LOCAL HEADER #174     04034B50 (67324752)\n+033FA6 Extract Zip Spec      14 (20) '2.0'\n+033FA7 Extract OS            00 (0) 'MS-DOS'\n+033FA8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0196D8 Compression Method    0008 (8) 'Deflated'\n-0196DA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0196DE CRC                   00000000 (0)\n-0196E2 Compressed Size       00000000 (0)\n-0196E6 Uncompressed Size     00000000 (0)\n-0196EA Filename Length       003F (63)\n-0196EC Extra Length          0000 (0)\n-0196EE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+033FAA Compression Method    0008 (8) 'Deflated'\n+033FAC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+033FB0 CRC                   00000000 (0)\n+033FB4 Compressed Size       00000000 (0)\n+033FB8 Uncompressed Size     00000000 (0)\n+033FBC Filename Length       0044 (68)\n+033FBE Extra Length          0000 (0)\n+033FC0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x196EE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x33FC0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01972D PAYLOAD\n+034004 PAYLOAD\n \n-019AA6 DATA DESCRIPTOR       08074B50 (134695760)\n-019AAA CRC                   4C93F7E4 (1284765668)\n-019AAE Compressed Size       00000379 (889)\n-019AB2 Uncompressed Size     0000084D (2125)\n+0346DE DATA DESCRIPTOR       08074B50 (134695760)\n+0346E2 CRC                   5955E637 (1498801719)\n+0346E6 Compressed Size       000006DA (1754)\n+0346EA Uncompressed Size     000015EF (5615)\n \n-019AB6 LOCAL HEADER #175     04034B50 (67324752)\n-019ABA Extract Zip Spec      14 (20) '2.0'\n-019ABB Extract OS            00 (0) 'MS-DOS'\n-019ABC General Purpose Flag  0808 (2056)\n+0346EE LOCAL HEADER #175     04034B50 (67324752)\n+0346F2 Extract Zip Spec      14 (20) '2.0'\n+0346F3 Extract OS            00 (0) 'MS-DOS'\n+0346F4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-019ABE Compression Method    0008 (8) 'Deflated'\n-019AC0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-019AC4 CRC                   00000000 (0)\n-019AC8 Compressed Size       00000000 (0)\n-019ACC Uncompressed Size     00000000 (0)\n-019AD0 Filename Length       0046 (70)\n-019AD2 Extra Length          0000 (0)\n-019AD4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0346F6 Compression Method    0008 (8) 'Deflated'\n+0346F8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0346FC CRC                   00000000 (0)\n+034700 Compressed Size       00000000 (0)\n+034704 Uncompressed Size     00000000 (0)\n+034708 Filename Length       003F (63)\n+03470A Extra Length          0000 (0)\n+03470C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19AD4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3470C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-019B1A PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+03474B PAYLOAD\n \n-019B65 DATA DESCRIPTOR       08074B50 (134695760)\n-019B69 CRC                   D5DD6E04 (3588058628)\n-019B6D Compressed Size       0000004B (75)\n-019B71 Uncompressed Size     0000004E (78)\n+034CA2 DATA DESCRIPTOR       08074B50 (134695760)\n+034CA6 CRC                   E9DD16E0 (3923580640)\n+034CAA Compressed Size       00000557 (1367)\n+034CAE Uncompressed Size     00000D50 (3408)\n \n-019B75 LOCAL HEADER #176     04034B50 (67324752)\n-019B79 Extract Zip Spec      14 (20) '2.0'\n-019B7A Extract OS            00 (0) 'MS-DOS'\n-019B7B General Purpose Flag  0808 (2056)\n+034CB2 LOCAL HEADER #176     04034B50 (67324752)\n+034CB6 Extract Zip Spec      14 (20) '2.0'\n+034CB7 Extract OS            00 (0) 'MS-DOS'\n+034CB8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-019B7D Compression Method    0008 (8) 'Deflated'\n-019B7F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-019B83 CRC                   00000000 (0)\n-019B87 Compressed Size       00000000 (0)\n-019B8B Uncompressed Size     00000000 (0)\n-019B8F Filename Length       003D (61)\n-019B91 Extra Length          0000 (0)\n-019B93 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+034CBA Compression Method    0008 (8) 'Deflated'\n+034CBC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+034CC0 CRC                   00000000 (0)\n+034CC4 Compressed Size       00000000 (0)\n+034CC8 Uncompressed Size     00000000 (0)\n+034CCC Filename Length       0043 (67)\n+034CCE Extra Length          0000 (0)\n+034CD0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19B93: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x34CD0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-019BD0 PAYLOAD               XX\n+034D13 PAYLOAD\n \n-019BD2 DATA DESCRIPTOR       08074B50 (134695760)\n-019BD6 CRC                   00000000 (0)\n-019BDA Compressed Size       00000002 (2)\n-019BDE Uncompressed Size     00000000 (0)\n+03532B DATA DESCRIPTOR       08074B50 (134695760)\n+03532F CRC                   B03BDD5E (2956713310)\n+035333 Compressed Size       00000618 (1560)\n+035337 Uncompressed Size     000012CC (4812)\n \n-019BE2 LOCAL HEADER #177     04034B50 (67324752)\n-019BE6 Extract Zip Spec      14 (20) '2.0'\n-019BE7 Extract OS            00 (0) 'MS-DOS'\n-019BE8 General Purpose Flag  0808 (2056)\n+03533B LOCAL HEADER #177     04034B50 (67324752)\n+03533F Extract Zip Spec      14 (20) '2.0'\n+035340 Extract OS            00 (0) 'MS-DOS'\n+035341 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-019BEA Compression Method    0008 (8) 'Deflated'\n-019BEC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-019BF0 CRC                   00000000 (0)\n-019BF4 Compressed Size       00000000 (0)\n-019BF8 Uncompressed Size     00000000 (0)\n-019BFC Filename Length       0044 (68)\n-019BFE Extra Length          0000 (0)\n-019C00 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+035343 Compression Method    0008 (8) 'Deflated'\n+035345 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+035349 CRC                   00000000 (0)\n+03534D Compressed Size       00000000 (0)\n+035351 Uncompressed Size     00000000 (0)\n+035355 Filename Length       0049 (73)\n+035357 Extra Length          0000 (0)\n+035359 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19C00: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x35359: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-019C44 PAYLOAD\n+0353A2 PAYLOAD\n \n-019FC1 DATA DESCRIPTOR       08074B50 (134695760)\n-019FC5 CRC                   FE255727 (4263860007)\n-019FC9 Compressed Size       0000037D (893)\n-019FCD Uncompressed Size     00000840 (2112)\n+0359AC DATA DESCRIPTOR       08074B50 (134695760)\n+0359B0 CRC                   0139FCC5 (20577477)\n+0359B4 Compressed Size       0000060A (1546)\n+0359B8 Uncompressed Size     00001239 (4665)\n \n-019FD1 LOCAL HEADER #178     04034B50 (67324752)\n-019FD5 Extract Zip Spec      14 (20) '2.0'\n-019FD6 Extract OS            00 (0) 'MS-DOS'\n-019FD7 General Purpose Flag  0808 (2056)\n+0359BC LOCAL HEADER #178     04034B50 (67324752)\n+0359C0 Extract Zip Spec      14 (20) '2.0'\n+0359C1 Extract OS            00 (0) 'MS-DOS'\n+0359C2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-019FD9 Compression Method    0008 (8) 'Deflated'\n-019FDB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-019FDF CRC                   00000000 (0)\n-019FE3 Compressed Size       00000000 (0)\n-019FE7 Uncompressed Size     00000000 (0)\n-019FEB Filename Length       004B (75)\n-019FED Extra Length          0000 (0)\n-019FEF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0359C4 Compression Method    0008 (8) 'Deflated'\n+0359C6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0359CA CRC                   00000000 (0)\n+0359CE Compressed Size       00000000 (0)\n+0359D2 Uncompressed Size     00000000 (0)\n+0359D6 Filename Length       0024 (36)\n+0359D8 Extra Length          0000 (0)\n+0359DA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19FEF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x359DA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01A03A PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0359FE PAYLOAD               XX\n \n-01A089 DATA DESCRIPTOR       08074B50 (134695760)\n-01A08D CRC                   9BC53808 (2613393416)\n-01A091 Compressed Size       0000004F (79)\n-01A095 Uncompressed Size     00000053 (83)\n+035A00 DATA DESCRIPTOR       08074B50 (134695760)\n+035A04 CRC                   00000000 (0)\n+035A08 Compressed Size       00000002 (2)\n+035A0C Uncompressed Size     00000000 (0)\n \n-01A099 LOCAL HEADER #179     04034B50 (67324752)\n-01A09D Extract Zip Spec      14 (20) '2.0'\n-01A09E Extract OS            00 (0) 'MS-DOS'\n-01A09F General Purpose Flag  0808 (2056)\n+035A10 LOCAL HEADER #179     04034B50 (67324752)\n+035A14 Extract Zip Spec      14 (20) '2.0'\n+035A15 Extract OS            00 (0) 'MS-DOS'\n+035A16 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01A0A1 Compression Method    0008 (8) 'Deflated'\n-01A0A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01A0A7 CRC                   00000000 (0)\n-01A0AB Compressed Size       00000000 (0)\n-01A0AF Uncompressed Size     00000000 (0)\n-01A0B3 Filename Length       0043 (67)\n-01A0B5 Extra Length          0000 (0)\n-01A0B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+035A18 Compression Method    0008 (8) 'Deflated'\n+035A1A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+035A1E CRC                   00000000 (0)\n+035A22 Compressed Size       00000000 (0)\n+035A26 Uncompressed Size     00000000 (0)\n+035A2A Filename Length       0034 (52)\n+035A2C Extra Length          0000 (0)\n+035A2E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A0B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x35A2E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01A0FA PAYLOAD               XX\n+035A62 PAYLOAD\n \n-01A0FC DATA DESCRIPTOR       08074B50 (134695760)\n-01A100 CRC                   00000000 (0)\n-01A104 Compressed Size       00000002 (2)\n-01A108 Uncompressed Size     00000000 (0)\n+035E32 DATA DESCRIPTOR       08074B50 (134695760)\n+035E36 CRC                   B70DC735 (3071133493)\n+035E3A Compressed Size       000003D0 (976)\n+035E3E Uncompressed Size     00000959 (2393)\n \n-01A10C LOCAL HEADER #180     04034B50 (67324752)\n-01A110 Extract Zip Spec      14 (20) '2.0'\n-01A111 Extract OS            00 (0) 'MS-DOS'\n-01A112 General Purpose Flag  0808 (2056)\n+035E42 LOCAL HEADER #180     04034B50 (67324752)\n+035E46 Extract Zip Spec      14 (20) '2.0'\n+035E47 Extract OS            00 (0) 'MS-DOS'\n+035E48 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01A114 Compression Method    0008 (8) 'Deflated'\n-01A116 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01A11A CRC                   00000000 (0)\n-01A11E Compressed Size       00000000 (0)\n-01A122 Uncompressed Size     00000000 (0)\n-01A126 Filename Length       004A (74)\n-01A128 Extra Length          0000 (0)\n-01A12A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+035E4A Compression Method    0008 (8) 'Deflated'\n+035E4C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+035E50 CRC                   00000000 (0)\n+035E54 Compressed Size       00000000 (0)\n+035E58 Uncompressed Size     00000000 (0)\n+035E5C Filename Length       003B (59)\n+035E5E Extra Length          0000 (0)\n+035E60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A12A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x35E60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01A174 PAYLOAD\n+035E9B PAYLOAD\n \n-01A4CF DATA DESCRIPTOR       08074B50 (134695760)\n-01A4D3 CRC                   0F6B44E1 (258688225)\n-01A4D7 Compressed Size       0000035B (859)\n-01A4DB Uncompressed Size     000007F3 (2035)\n+036180 DATA DESCRIPTOR       08074B50 (134695760)\n+036184 CRC                   5ECBBD86 (1590410630)\n+036188 Compressed Size       000002E5 (741)\n+03618C Uncompressed Size     0000068E (1678)\n \n-01A4DF LOCAL HEADER #181     04034B50 (67324752)\n-01A4E3 Extract Zip Spec      14 (20) '2.0'\n-01A4E4 Extract OS            00 (0) 'MS-DOS'\n-01A4E5 General Purpose Flag  0808 (2056)\n+036190 LOCAL HEADER #181     04034B50 (67324752)\n+036194 Extract Zip Spec      14 (20) '2.0'\n+036195 Extract OS            00 (0) 'MS-DOS'\n+036196 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01A4E7 Compression Method    0008 (8) 'Deflated'\n-01A4E9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01A4ED CRC                   00000000 (0)\n-01A4F1 Compressed Size       00000000 (0)\n-01A4F5 Uncompressed Size     00000000 (0)\n-01A4F9 Filename Length       0051 (81)\n-01A4FB Extra Length          0000 (0)\n-01A4FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+036198 Compression Method    0008 (8) 'Deflated'\n+03619A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03619E CRC                   00000000 (0)\n+0361A2 Compressed Size       00000000 (0)\n+0361A6 Uncompressed Size     00000000 (0)\n+0361AA Filename Length       0038 (56)\n+0361AC Extra Length          0000 (0)\n+0361AE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A4FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x361AE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01A54E PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0361E6 PAYLOAD\n \n-01A5A0 DATA DESCRIPTOR       08074B50 (134695760)\n-01A5A4 CRC                   E73563C3 (3879035843)\n-01A5A8 Compressed Size       00000052 (82)\n-01A5AC Uncompressed Size     00000059 (89)\n+0364C7 DATA DESCRIPTOR       08074B50 (134695760)\n+0364CB CRC                   0CC7ECCD (214428877)\n+0364CF Compressed Size       000002E1 (737)\n+0364D3 Uncompressed Size     00000667 (1639)\n \n-01A5B0 LOCAL HEADER #182     04034B50 (67324752)\n-01A5B4 Extract Zip Spec      14 (20) '2.0'\n-01A5B5 Extract OS            00 (0) 'MS-DOS'\n-01A5B6 General Purpose Flag  0808 (2056)\n+0364D7 LOCAL HEADER #182     04034B50 (67324752)\n+0364DB Extract Zip Spec      14 (20) '2.0'\n+0364DC Extract OS            00 (0) 'MS-DOS'\n+0364DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01A5B8 Compression Method    0008 (8) 'Deflated'\n-01A5BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01A5BE CRC                   00000000 (0)\n-01A5C2 Compressed Size       00000000 (0)\n-01A5C6 Uncompressed Size     00000000 (0)\n-01A5CA Filename Length       0038 (56)\n-01A5CC Extra Length          0000 (0)\n-01A5CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0364DF Compression Method    0008 (8) 'Deflated'\n+0364E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0364E5 CRC                   00000000 (0)\n+0364E9 Compressed Size       00000000 (0)\n+0364ED Uncompressed Size     00000000 (0)\n+0364F1 Filename Length       0038 (56)\n+0364F3 Extra Length          0000 (0)\n+0364F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A5CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x364F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01A606 PAYLOAD               XX\n+03652D PAYLOAD\n \n-01A608 DATA DESCRIPTOR       08074B50 (134695760)\n-01A60C CRC                   00000000 (0)\n-01A610 Compressed Size       00000002 (2)\n-01A614 Uncompressed Size     00000000 (0)\n+03680C DATA DESCRIPTOR       08074B50 (134695760)\n+036810 CRC                   091CC51B (152880411)\n+036814 Compressed Size       000002DF (735)\n+036818 Uncompressed Size     00000665 (1637)\n \n-01A618 LOCAL HEADER #183     04034B50 (67324752)\n-01A61C Extract Zip Spec      14 (20) '2.0'\n-01A61D Extract OS            00 (0) 'MS-DOS'\n-01A61E General Purpose Flag  0808 (2056)\n+03681C LOCAL HEADER #183     04034B50 (67324752)\n+036820 Extract Zip Spec      14 (20) '2.0'\n+036821 Extract OS            00 (0) 'MS-DOS'\n+036822 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01A620 Compression Method    0008 (8) 'Deflated'\n-01A622 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01A626 CRC                   00000000 (0)\n-01A62A Compressed Size       00000000 (0)\n-01A62E Uncompressed Size     00000000 (0)\n-01A632 Filename Length       003F (63)\n-01A634 Extra Length          0000 (0)\n-01A636 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+036824 Compression Method    0008 (8) 'Deflated'\n+036826 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03682A CRC                   00000000 (0)\n+03682E Compressed Size       00000000 (0)\n+036832 Uncompressed Size     00000000 (0)\n+036836 Filename Length       003A (58)\n+036838 Extra Length          0000 (0)\n+03683A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A636: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3683A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01A675 PAYLOAD\n+036874 PAYLOAD\n \n-01A9F3 DATA DESCRIPTOR       08074B50 (134695760)\n-01A9F7 CRC                   7BDC1B8D (2078022541)\n-01A9FB Compressed Size       0000037E (894)\n-01A9FF Uncompressed Size     00000836 (2102)\n+036B2D DATA DESCRIPTOR       08074B50 (134695760)\n+036B31 CRC                   43B612AE (1136005806)\n+036B35 Compressed Size       000002B9 (697)\n+036B39 Uncompressed Size     0000056A (1386)\n \n-01AA03 LOCAL HEADER #184     04034B50 (67324752)\n-01AA07 Extract Zip Spec      14 (20) '2.0'\n-01AA08 Extract OS            00 (0) 'MS-DOS'\n-01AA09 General Purpose Flag  0808 (2056)\n+036B3D LOCAL HEADER #184     04034B50 (67324752)\n+036B41 Extract Zip Spec      14 (20) '2.0'\n+036B42 Extract OS            00 (0) 'MS-DOS'\n+036B43 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01AA0B Compression Method    0008 (8) 'Deflated'\n-01AA0D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01AA11 CRC                   00000000 (0)\n-01AA15 Compressed Size       00000000 (0)\n-01AA19 Uncompressed Size     00000000 (0)\n-01AA1D Filename Length       0046 (70)\n-01AA1F Extra Length          0000 (0)\n-01AA21 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+036B45 Compression Method    0008 (8) 'Deflated'\n+036B47 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+036B4B CRC                   00000000 (0)\n+036B4F Compressed Size       00000000 (0)\n+036B53 Uncompressed Size     00000000 (0)\n+036B57 Filename Length       0039 (57)\n+036B59 Extra Length          0000 (0)\n+036B5B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1AA21: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x36B5B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01AA67 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+036B94 PAYLOAD\n \n-01AAB2 DATA DESCRIPTOR       08074B50 (134695760)\n-01AAB6 CRC                   9A185178 (2585284984)\n-01AABA Compressed Size       0000004B (75)\n-01AABE Uncompressed Size     0000004E (78)\n+036E74 DATA DESCRIPTOR       08074B50 (134695760)\n+036E78 CRC                   DDA728F5 (3718719733)\n+036E7C Compressed Size       000002E0 (736)\n+036E80 Uncompressed Size     0000066F (1647)\n \n-01AAC2 LOCAL HEADER #185     04034B50 (67324752)\n-01AAC6 Extract Zip Spec      14 (20) '2.0'\n-01AAC7 Extract OS            00 (0) 'MS-DOS'\n-01AAC8 General Purpose Flag  0808 (2056)\n+036E84 LOCAL HEADER #185     04034B50 (67324752)\n+036E88 Extract Zip Spec      14 (20) '2.0'\n+036E89 Extract OS            00 (0) 'MS-DOS'\n+036E8A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01AACA Compression Method    0008 (8) 'Deflated'\n-01AACC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01AAD0 CRC                   00000000 (0)\n-01AAD4 Compressed Size       00000000 (0)\n-01AAD8 Uncompressed Size     00000000 (0)\n-01AADC Filename Length       0039 (57)\n-01AADE Extra Length          0000 (0)\n-01AAE0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+036E8C Compression Method    0008 (8) 'Deflated'\n+036E8E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+036E92 CRC                   00000000 (0)\n+036E96 Compressed Size       00000000 (0)\n+036E9A Uncompressed Size     00000000 (0)\n+036E9E Filename Length       0037 (55)\n+036EA0 Extra Length          0000 (0)\n+036EA2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1AAE0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x36EA2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01AB19 PAYLOAD               XX\n+036ED9 PAYLOAD\n \n-01AB1B DATA DESCRIPTOR       08074B50 (134695760)\n-01AB1F CRC                   00000000 (0)\n-01AB23 Compressed Size       00000002 (2)\n-01AB27 Uncompressed Size     00000000 (0)\n+037190 DATA DESCRIPTOR       08074B50 (134695760)\n+037194 CRC                   389B0984 (949684612)\n+037198 Compressed Size       000002B7 (695)\n+03719C Uncompressed Size     0000055A (1370)\n \n-01AB2B LOCAL HEADER #186     04034B50 (67324752)\n-01AB2F Extract Zip Spec      14 (20) '2.0'\n-01AB30 Extract OS            00 (0) 'MS-DOS'\n-01AB31 General Purpose Flag  0808 (2056)\n+0371A0 LOCAL HEADER #186     04034B50 (67324752)\n+0371A4 Extract Zip Spec      14 (20) '2.0'\n+0371A5 Extract OS            00 (0) 'MS-DOS'\n+0371A6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01AB33 Compression Method    0008 (8) 'Deflated'\n-01AB35 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01AB39 CRC                   00000000 (0)\n-01AB3D Compressed Size       00000000 (0)\n-01AB41 Uncompressed Size     00000000 (0)\n-01AB45 Filename Length       0040 (64)\n-01AB47 Extra Length          0000 (0)\n-01AB49 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0371A8 Compression Method    0008 (8) 'Deflated'\n+0371AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0371AE CRC                   00000000 (0)\n+0371B2 Compressed Size       00000000 (0)\n+0371B6 Uncompressed Size     00000000 (0)\n+0371BA Filename Length       0033 (51)\n+0371BC Extra Length          0000 (0)\n+0371BE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1AB49: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x371BE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01AB89 PAYLOAD\n+0371F1 PAYLOAD\n \n-01AF14 DATA DESCRIPTOR       08074B50 (134695760)\n-01AF18 CRC                   09F70F91 (167186321)\n-01AF1C Compressed Size       0000038B (907)\n-01AF20 Uncompressed Size     000008B7 (2231)\n+0374C9 DATA DESCRIPTOR       08074B50 (134695760)\n+0374CD CRC                   792EF15D (2033119581)\n+0374D1 Compressed Size       000002D8 (728)\n+0374D5 Uncompressed Size     000005FF (1535)\n \n-01AF24 LOCAL HEADER #187     04034B50 (67324752)\n-01AF28 Extract Zip Spec      14 (20) '2.0'\n-01AF29 Extract OS            00 (0) 'MS-DOS'\n-01AF2A General Purpose Flag  0808 (2056)\n+0374D9 LOCAL HEADER #187     04034B50 (67324752)\n+0374DD Extract Zip Spec      14 (20) '2.0'\n+0374DE Extract OS            00 (0) 'MS-DOS'\n+0374DF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01AF2C Compression Method    0008 (8) 'Deflated'\n-01AF2E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01AF32 CRC                   00000000 (0)\n-01AF36 Compressed Size       00000000 (0)\n-01AF3A Uncompressed Size     00000000 (0)\n-01AF3E Filename Length       0047 (71)\n-01AF40 Extra Length          0000 (0)\n-01AF42 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0374E1 Compression Method    0008 (8) 'Deflated'\n+0374E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0374E7 CRC                   00000000 (0)\n+0374EB Compressed Size       00000000 (0)\n+0374EF Uncompressed Size     00000000 (0)\n+0374F3 Filename Length       0038 (56)\n+0374F5 Extra Length          0000 (0)\n+0374F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1AF42: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x374F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01AF89 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+03752F PAYLOAD\n \n-01AFD5 DATA DESCRIPTOR       08074B50 (134695760)\n-01AFD9 CRC                   BCFDA422 (3170739234)\n-01AFDD Compressed Size       0000004C (76)\n-01AFE1 Uncompressed Size     0000004F (79)\n+0377E6 DATA DESCRIPTOR       08074B50 (134695760)\n+0377EA CRC                   C7E5A422 (3353715746)\n+0377EE Compressed Size       000002B7 (695)\n+0377F2 Uncompressed Size     0000055E (1374)\n \n-01AFE5 LOCAL HEADER #188     04034B50 (67324752)\n-01AFE9 Extract Zip Spec      14 (20) '2.0'\n-01AFEA Extract OS            00 (0) 'MS-DOS'\n-01AFEB General Purpose Flag  0808 (2056)\n+0377F6 LOCAL HEADER #188     04034B50 (67324752)\n+0377FA Extract Zip Spec      14 (20) '2.0'\n+0377FB Extract OS            00 (0) 'MS-DOS'\n+0377FC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01AFED Compression Method    0008 (8) 'Deflated'\n-01AFEF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01AFF3 CRC                   00000000 (0)\n-01AFF7 Compressed Size       00000000 (0)\n-01AFFB Uncompressed Size     00000000 (0)\n-01AFFF Filename Length       0039 (57)\n-01B001 Extra Length          0000 (0)\n-01B003 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0377FE Compression Method    0008 (8) 'Deflated'\n+037800 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+037804 CRC                   00000000 (0)\n+037808 Compressed Size       00000000 (0)\n+03780C Uncompressed Size     00000000 (0)\n+037810 Filename Length       0032 (50)\n+037812 Extra Length          0000 (0)\n+037814 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B003: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x37814: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01B03C PAYLOAD               XX\n+037846 PAYLOAD\n \n-01B03E DATA DESCRIPTOR       08074B50 (134695760)\n-01B042 CRC                   00000000 (0)\n-01B046 Compressed Size       00000002 (2)\n-01B04A Uncompressed Size     00000000 (0)\n+037B25 DATA DESCRIPTOR       08074B50 (134695760)\n+037B29 CRC                   2C8707FF (747046911)\n+037B2D Compressed Size       000002DF (735)\n+037B31 Uncompressed Size     000005E2 (1506)\n \n-01B04E LOCAL HEADER #189     04034B50 (67324752)\n-01B052 Extract Zip Spec      14 (20) '2.0'\n-01B053 Extract OS            00 (0) 'MS-DOS'\n-01B054 General Purpose Flag  0808 (2056)\n+037B35 LOCAL HEADER #189     04034B50 (67324752)\n+037B39 Extract Zip Spec      14 (20) '2.0'\n+037B3A Extract OS            00 (0) 'MS-DOS'\n+037B3B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01B056 Compression Method    0008 (8) 'Deflated'\n-01B058 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01B05C CRC                   00000000 (0)\n-01B060 Compressed Size       00000000 (0)\n-01B064 Uncompressed Size     00000000 (0)\n-01B068 Filename Length       0040 (64)\n-01B06A Extra Length          0000 (0)\n-01B06C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+037B3D Compression Method    0008 (8) 'Deflated'\n+037B3F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+037B43 CRC                   00000000 (0)\n+037B47 Compressed Size       00000000 (0)\n+037B4B Uncompressed Size     00000000 (0)\n+037B4F Filename Length       0036 (54)\n+037B51 Extra Length          0000 (0)\n+037B53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B06C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x37B53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01B0AC PAYLOAD\n+037B89 PAYLOAD\n \n-01B41B DATA DESCRIPTOR       08074B50 (134695760)\n-01B41F CRC                   469E1753 (1184765779)\n-01B423 Compressed Size       0000036F (879)\n-01B427 Uncompressed Size     0000084D (2125)\n+037FD7 DATA DESCRIPTOR       08074B50 (134695760)\n+037FDB CRC                   B5B9A154 (3048841556)\n+037FDF Compressed Size       0000044E (1102)\n+037FE3 Uncompressed Size     00000B6F (2927)\n \n-01B42B LOCAL HEADER #190     04034B50 (67324752)\n-01B42F Extract Zip Spec      14 (20) '2.0'\n-01B430 Extract OS            00 (0) 'MS-DOS'\n-01B431 General Purpose Flag  0808 (2056)\n+037FE7 LOCAL HEADER #190     04034B50 (67324752)\n+037FEB Extract Zip Spec      14 (20) '2.0'\n+037FEC Extract OS            00 (0) 'MS-DOS'\n+037FED General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01B433 Compression Method    0008 (8) 'Deflated'\n-01B435 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01B439 CRC                   00000000 (0)\n-01B43D Compressed Size       00000000 (0)\n-01B441 Uncompressed Size     00000000 (0)\n-01B445 Filename Length       0047 (71)\n-01B447 Extra Length          0000 (0)\n-01B449 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+037FEF Compression Method    0008 (8) 'Deflated'\n+037FF1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+037FF5 CRC                   00000000 (0)\n+037FF9 Compressed Size       00000000 (0)\n+037FFD Uncompressed Size     00000000 (0)\n+038001 Filename Length       0032 (50)\n+038003 Extra Length          0000 (0)\n+038005 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B449: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x38005: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01B490 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+038037 PAYLOAD\n \n-01B4DC DATA DESCRIPTOR       08074B50 (134695760)\n-01B4E0 CRC                   47014A41 (1191266881)\n-01B4E4 Compressed Size       0000004C (76)\n-01B4E8 Uncompressed Size     0000004F (79)\n+03830D DATA DESCRIPTOR       08074B50 (134695760)\n+038311 CRC                   B82C3560 (3089904992)\n+038315 Compressed Size       000002D6 (726)\n+038319 Uncompressed Size     000005CC (1484)\n \n-01B4EC LOCAL HEADER #191     04034B50 (67324752)\n-01B4F0 Extract Zip Spec      14 (20) '2.0'\n-01B4F1 Extract OS            00 (0) 'MS-DOS'\n-01B4F2 General Purpose Flag  0808 (2056)\n+03831D LOCAL HEADER #191     04034B50 (67324752)\n+038321 Extract Zip Spec      14 (20) '2.0'\n+038322 Extract OS            00 (0) 'MS-DOS'\n+038323 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01B4F4 Compression Method    0008 (8) 'Deflated'\n-01B4F6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01B4FA CRC                   00000000 (0)\n-01B4FE Compressed Size       00000000 (0)\n-01B502 Uncompressed Size     00000000 (0)\n-01B506 Filename Length       003F (63)\n-01B508 Extra Length          0000 (0)\n-01B50A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+038325 Compression Method    0008 (8) 'Deflated'\n+038327 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03832B CRC                   00000000 (0)\n+03832F Compressed Size       00000000 (0)\n+038333 Uncompressed Size     00000000 (0)\n+038337 Filename Length       0039 (57)\n+038339 Extra Length          0000 (0)\n+03833B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B50A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3833B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01B549 PAYLOAD               XX\n+038374 PAYLOAD\n \n-01B54B DATA DESCRIPTOR       08074B50 (134695760)\n-01B54F CRC                   00000000 (0)\n-01B553 Compressed Size       00000002 (2)\n-01B557 Uncompressed Size     00000000 (0)\n+038653 DATA DESCRIPTOR       08074B50 (134695760)\n+038657 CRC                   F57D6E98 (4118638232)\n+03865B Compressed Size       000002DF (735)\n+03865F Uncompressed Size     0000066F (1647)\n \n-01B55B LOCAL HEADER #192     04034B50 (67324752)\n-01B55F Extract Zip Spec      14 (20) '2.0'\n-01B560 Extract OS            00 (0) 'MS-DOS'\n-01B561 General Purpose Flag  0808 (2056)\n+038663 LOCAL HEADER #192     04034B50 (67324752)\n+038667 Extract Zip Spec      14 (20) '2.0'\n+038668 Extract OS            00 (0) 'MS-DOS'\n+038669 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01B563 Compression Method    0008 (8) 'Deflated'\n-01B565 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01B569 CRC                   00000000 (0)\n-01B56D Compressed Size       00000000 (0)\n-01B571 Uncompressed Size     00000000 (0)\n-01B575 Filename Length       0046 (70)\n-01B577 Extra Length          0000 (0)\n-01B579 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03866B Compression Method    0008 (8) 'Deflated'\n+03866D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+038671 CRC                   00000000 (0)\n+038675 Compressed Size       00000000 (0)\n+038679 Uncompressed Size     00000000 (0)\n+03867D Filename Length       0024 (36)\n+03867F Extra Length          0000 (0)\n+038681 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B579: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x38681: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01B5BF PAYLOAD\n+0386A5 PAYLOAD               XX\n \n-01B941 DATA DESCRIPTOR       08074B50 (134695760)\n-01B945 CRC                   28F10A22 (686885410)\n-01B949 Compressed Size       00000382 (898)\n-01B94D Uncompressed Size     0000092B (2347)\n+0386A7 DATA DESCRIPTOR       08074B50 (134695760)\n+0386AB CRC                   00000000 (0)\n+0386AF Compressed Size       00000002 (2)\n+0386B3 Uncompressed Size     00000000 (0)\n \n-01B951 LOCAL HEADER #193     04034B50 (67324752)\n-01B955 Extract Zip Spec      14 (20) '2.0'\n-01B956 Extract OS            00 (0) 'MS-DOS'\n-01B957 General Purpose Flag  0808 (2056)\n+0386B7 LOCAL HEADER #193     04034B50 (67324752)\n+0386BB Extract Zip Spec      14 (20) '2.0'\n+0386BC Extract OS            00 (0) 'MS-DOS'\n+0386BD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01B959 Compression Method    0008 (8) 'Deflated'\n-01B95B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01B95F CRC                   00000000 (0)\n-01B963 Compressed Size       00000000 (0)\n-01B967 Uncompressed Size     00000000 (0)\n-01B96B Filename Length       004D (77)\n-01B96D Extra Length          0000 (0)\n-01B96F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0386BF Compression Method    0008 (8) 'Deflated'\n+0386C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0386C5 CRC                   00000000 (0)\n+0386C9 Compressed Size       00000000 (0)\n+0386CD Uncompressed Size     00000000 (0)\n+0386D1 Filename Length       0037 (55)\n+0386D3 Extra Length          0000 (0)\n+0386D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B96F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x386D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01B9BC PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+03870C PAYLOAD\n \n-01BA0B DATA DESCRIPTOR       08074B50 (134695760)\n-01BA0F CRC                   F5CE41B3 (4123935155)\n-01BA13 Compressed Size       0000004F (79)\n-01BA17 Uncompressed Size     00000055 (85)\n+038A3B DATA DESCRIPTOR       08074B50 (134695760)\n+038A3F CRC                   C962C74B (3378693963)\n+038A43 Compressed Size       0000032F (815)\n+038A47 Uncompressed Size     00000833 (2099)\n \n-01BA1B LOCAL HEADER #194     04034B50 (67324752)\n-01BA1F Extract Zip Spec      14 (20) '2.0'\n-01BA20 Extract OS            00 (0) 'MS-DOS'\n-01BA21 General Purpose Flag  0808 (2056)\n+038A4B LOCAL HEADER #194     04034B50 (67324752)\n+038A4F Extract Zip Spec      14 (20) '2.0'\n+038A50 Extract OS            00 (0) 'MS-DOS'\n+038A51 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01BA23 Compression Method    0008 (8) 'Deflated'\n-01BA25 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01BA29 CRC                   00000000 (0)\n-01BA2D Compressed Size       00000000 (0)\n-01BA31 Uncompressed Size     00000000 (0)\n-01BA35 Filename Length       0039 (57)\n-01BA37 Extra Length          0000 (0)\n-01BA39 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+038A53 Compression Method    0008 (8) 'Deflated'\n+038A55 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+038A59 CRC                   00000000 (0)\n+038A5D Compressed Size       00000000 (0)\n+038A61 Uncompressed Size     00000000 (0)\n+038A65 Filename Length       003B (59)\n+038A67 Extra Length          0000 (0)\n+038A69 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BA39: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x38A69: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01BA72 PAYLOAD               XX\n+038AA4 PAYLOAD\n \n-01BA74 DATA DESCRIPTOR       08074B50 (134695760)\n-01BA78 CRC                   00000000 (0)\n-01BA7C Compressed Size       00000002 (2)\n-01BA80 Uncompressed Size     00000000 (0)\n+038E0B DATA DESCRIPTOR       08074B50 (134695760)\n+038E0F CRC                   7A4C73B7 (2051830711)\n+038E13 Compressed Size       00000367 (871)\n+038E17 Uncompressed Size     00000A32 (2610)\n \n-01BA84 LOCAL HEADER #195     04034B50 (67324752)\n-01BA88 Extract Zip Spec      14 (20) '2.0'\n-01BA89 Extract OS            00 (0) 'MS-DOS'\n-01BA8A General Purpose Flag  0808 (2056)\n+038E1B LOCAL HEADER #195     04034B50 (67324752)\n+038E1F Extract Zip Spec      14 (20) '2.0'\n+038E20 Extract OS            00 (0) 'MS-DOS'\n+038E21 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01BA8C Compression Method    0008 (8) 'Deflated'\n-01BA8E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01BA92 CRC                   00000000 (0)\n-01BA96 Compressed Size       00000000 (0)\n-01BA9A Uncompressed Size     00000000 (0)\n-01BA9E Filename Length       0040 (64)\n-01BAA0 Extra Length          0000 (0)\n-01BAA2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+038E23 Compression Method    0008 (8) 'Deflated'\n+038E25 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+038E29 CRC                   00000000 (0)\n+038E2D Compressed Size       00000000 (0)\n+038E31 Uncompressed Size     00000000 (0)\n+038E35 Filename Length       002E (46)\n+038E37 Extra Length          0000 (0)\n+038E39 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BAA2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x38E39: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01BAE2 PAYLOAD\n+038E67 PAYLOAD               XX\n \n-01BE59 DATA DESCRIPTOR       08074B50 (134695760)\n-01BE5D CRC                   0E05CB4C (235260748)\n-01BE61 Compressed Size       00000377 (887)\n-01BE65 Uncompressed Size     0000084C (2124)\n+038E69 DATA DESCRIPTOR       08074B50 (134695760)\n+038E6D CRC                   00000000 (0)\n+038E71 Compressed Size       00000002 (2)\n+038E75 Uncompressed Size     00000000 (0)\n \n-01BE69 LOCAL HEADER #196     04034B50 (67324752)\n-01BE6D Extract Zip Spec      14 (20) '2.0'\n-01BE6E Extract OS            00 (0) 'MS-DOS'\n-01BE6F General Purpose Flag  0808 (2056)\n+038E79 LOCAL HEADER #196     04034B50 (67324752)\n+038E7D Extract Zip Spec      14 (20) '2.0'\n+038E7E Extract OS            00 (0) 'MS-DOS'\n+038E7F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01BE71 Compression Method    0008 (8) 'Deflated'\n-01BE73 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01BE77 CRC                   00000000 (0)\n-01BE7B Compressed Size       00000000 (0)\n-01BE7F Uncompressed Size     00000000 (0)\n-01BE83 Filename Length       0047 (71)\n-01BE85 Extra Length          0000 (0)\n-01BE87 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+038E81 Compression Method    0008 (8) 'Deflated'\n+038E83 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+038E87 CRC                   00000000 (0)\n+038E8B Compressed Size       00000000 (0)\n+038E8F Uncompressed Size     00000000 (0)\n+038E93 Filename Length       0042 (66)\n+038E95 Extra Length          0000 (0)\n+038E97 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BE87: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x38E97: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01BECE PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+038ED9 PAYLOAD\n \n-01BF1A DATA DESCRIPTOR       08074B50 (134695760)\n-01BF1E CRC                   FCB2ABC5 (4239567813)\n-01BF22 Compressed Size       0000004C (76)\n-01BF26 Uncompressed Size     0000004F (79)\n+039B23 DATA DESCRIPTOR       08074B50 (134695760)\n+039B27 CRC                   BCF898DF (3170408671)\n+039B2B Compressed Size       00000C4A (3146)\n+039B2F Uncompressed Size     00003374 (13172)\n \n-01BF2A LOCAL HEADER #197     04034B50 (67324752)\n-01BF2E Extract Zip Spec      14 (20) '2.0'\n-01BF2F Extract OS            00 (0) 'MS-DOS'\n-01BF30 General Purpose Flag  0808 (2056)\n+039B33 LOCAL HEADER #197     04034B50 (67324752)\n+039B37 Extract Zip Spec      14 (20) '2.0'\n+039B38 Extract OS            00 (0) 'MS-DOS'\n+039B39 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01BF32 Compression Method    0008 (8) 'Deflated'\n-01BF34 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01BF38 CRC                   00000000 (0)\n-01BF3C Compressed Size       00000000 (0)\n-01BF40 Uncompressed Size     00000000 (0)\n-01BF44 Filename Length       000E (14)\n-01BF46 Extra Length          0000 (0)\n-01BF48 Filename              'XXXXXXXXXXXXXX'\n+039B3B Compression Method    0008 (8) 'Deflated'\n+039B3D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+039B41 CRC                   00000000 (0)\n+039B45 Compressed Size       00000000 (0)\n+039B49 Uncompressed Size     00000000 (0)\n+039B4D Filename Length       0049 (73)\n+039B4F Extra Length          0000 (0)\n+039B51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BF48: Filename 'XXXXXXXXXXXXXX'\n+# WARNING: Offset 0x39B51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01BF56 PAYLOAD\n+039B9A PAYLOAD\n \n-01C1C1 DATA DESCRIPTOR       08074B50 (134695760)\n-01C1C5 CRC                   B6BD94DA (3065877722)\n-01C1C9 Compressed Size       0000026B (619)\n-01C1CD Uncompressed Size     00000474 (1140)\n+039E35 DATA DESCRIPTOR       08074B50 (134695760)\n+039E39 CRC                   E35903B0 (3814261680)\n+039E3D Compressed Size       0000029B (667)\n+039E41 Uncompressed Size     00000540 (1344)\n \n-01C1D1 LOCAL HEADER #198     04034B50 (67324752)\n-01C1D5 Extract Zip Spec      14 (20) '2.0'\n-01C1D6 Extract OS            00 (0) 'MS-DOS'\n-01C1D7 General Purpose Flag  0808 (2056)\n+039E45 LOCAL HEADER #198     04034B50 (67324752)\n+039E49 Extract Zip Spec      14 (20) '2.0'\n+039E4A Extract OS            00 (0) 'MS-DOS'\n+039E4B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01C1D9 Compression Method    0008 (8) 'Deflated'\n-01C1DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01C1DF CRC                   00000000 (0)\n-01C1E3 Compressed Size       00000000 (0)\n-01C1E7 Uncompressed Size     00000000 (0)\n-01C1EB Filename Length       0011 (17)\n-01C1ED Extra Length          0000 (0)\n-01C1EF Filename              'XXXXXXXXXXXXXXXXX'\n+039E4D Compression Method    0008 (8) 'Deflated'\n+039E4F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+039E53 CRC                   00000000 (0)\n+039E57 Compressed Size       00000000 (0)\n+039E5B Uncompressed Size     00000000 (0)\n+039E5F Filename Length       0035 (53)\n+039E61 Extra Length          0000 (0)\n+039E63 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C1EF: Filename 'XXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x39E63: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01C200 PAYLOAD\n+039E98 PAYLOAD               XX\n \n-01C64A DATA DESCRIPTOR       08074B50 (134695760)\n-01C64E CRC                   0A4703DB (172426203)\n-01C652 Compressed Size       0000044A (1098)\n-01C656 Uncompressed Size     00000ADD (2781)\n+039E9A DATA DESCRIPTOR       08074B50 (134695760)\n+039E9E CRC                   00000000 (0)\n+039EA2 Compressed Size       00000002 (2)\n+039EA6 Uncompressed Size     00000000 (0)\n \n-01C65A LOCAL HEADER #199     04034B50 (67324752)\n-01C65E Extract Zip Spec      14 (20) '2.0'\n-01C65F Extract OS            00 (0) 'MS-DOS'\n-01C660 General Purpose Flag  0808 (2056)\n+039EAA LOCAL HEADER #199     04034B50 (67324752)\n+039EAE Extract Zip Spec      14 (20) '2.0'\n+039EAF Extract OS            00 (0) 'MS-DOS'\n+039EB0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01C662 Compression Method    0008 (8) 'Deflated'\n-01C664 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01C668 CRC                   00000000 (0)\n-01C66C Compressed Size       00000000 (0)\n-01C670 Uncompressed Size     00000000 (0)\n-01C674 Filename Length       003D (61)\n-01C676 Extra Length          0000 (0)\n-01C678 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+039EB2 Compression Method    0008 (8) 'Deflated'\n+039EB4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+039EB8 CRC                   00000000 (0)\n+039EBC Compressed Size       00000000 (0)\n+039EC0 Uncompressed Size     00000000 (0)\n+039EC4 Filename Length       0043 (67)\n+039EC6 Extra Length          0000 (0)\n+039EC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C678: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x39EC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01C6B5 PAYLOAD               XX\n+039F0B PAYLOAD\n \n-01C6B7 DATA DESCRIPTOR       08074B50 (134695760)\n-01C6BB CRC                   00000000 (0)\n-01C6BF Compressed Size       00000002 (2)\n-01C6C3 Uncompressed Size     00000000 (0)\n+03A1F8 DATA DESCRIPTOR       08074B50 (134695760)\n+03A1FC CRC                   9ADBEDAC (2598104492)\n+03A200 Compressed Size       000002ED (749)\n+03A204 Uncompressed Size     000005AF (1455)\n \n-01C6C7 LOCAL HEADER #200     04034B50 (67324752)\n-01C6CB Extract Zip Spec      14 (20) '2.0'\n-01C6CC Extract OS            00 (0) 'MS-DOS'\n-01C6CD General Purpose Flag  0808 (2056)\n+03A208 LOCAL HEADER #200     04034B50 (67324752)\n+03A20C Extract Zip Spec      14 (20) '2.0'\n+03A20D Extract OS            00 (0) 'MS-DOS'\n+03A20E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01C6CF Compression Method    0008 (8) 'Deflated'\n-01C6D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01C6D5 CRC                   00000000 (0)\n-01C6D9 Compressed Size       00000000 (0)\n-01C6DD Uncompressed Size     00000000 (0)\n-01C6E1 Filename Length       0044 (68)\n-01C6E3 Extra Length          0000 (0)\n-01C6E5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03A210 Compression Method    0008 (8) 'Deflated'\n+03A212 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03A216 CRC                   00000000 (0)\n+03A21A Compressed Size       00000000 (0)\n+03A21E Uncompressed Size     00000000 (0)\n+03A222 Filename Length       004A (74)\n+03A224 Extra Length          0000 (0)\n+03A226 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C6E5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3A226: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01C729 PAYLOAD\n+03A270 PAYLOAD\n \n-01CC29 DATA DESCRIPTOR       08074B50 (134695760)\n-01CC2D CRC                   FA85A8D5 (4203063509)\n-01CC31 Compressed Size       00000500 (1280)\n-01CC35 Uncompressed Size     00000F0F (3855)\n+03A567 DATA DESCRIPTOR       08074B50 (134695760)\n+03A56B CRC                   0E6EFC60 (242154592)\n+03A56F Compressed Size       000002F7 (759)\n+03A573 Uncompressed Size     00000688 (1672)\n \n-01CC39 LOCAL HEADER #201     04034B50 (67324752)\n-01CC3D Extract Zip Spec      14 (20) '2.0'\n-01CC3E Extract OS            00 (0) 'MS-DOS'\n-01CC3F General Purpose Flag  0808 (2056)\n+03A577 LOCAL HEADER #201     04034B50 (67324752)\n+03A57B Extract Zip Spec      14 (20) '2.0'\n+03A57C Extract OS            00 (0) 'MS-DOS'\n+03A57D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01CC41 Compression Method    0008 (8) 'Deflated'\n-01CC43 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01CC47 CRC                   00000000 (0)\n-01CC4B Compressed Size       00000000 (0)\n-01CC4F Uncompressed Size     00000000 (0)\n-01CC53 Filename Length       004B (75)\n-01CC55 Extra Length          0000 (0)\n-01CC57 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03A57F Compression Method    0008 (8) 'Deflated'\n+03A581 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03A585 CRC                   00000000 (0)\n+03A589 Compressed Size       00000000 (0)\n+03A58D Uncompressed Size     00000000 (0)\n+03A591 Filename Length       004A (74)\n+03A593 Extra Length          0000 (0)\n+03A595 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1CC57: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3A595: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01CCA2 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+03A5DF PAYLOAD\n \n-01CCF0 DATA DESCRIPTOR       08074B50 (134695760)\n-01CCF4 CRC                   A6E93060 (2800300128)\n-01CCF8 Compressed Size       0000004E (78)\n-01CCFC Uncompressed Size     00000053 (83)\n+03AC64 DATA DESCRIPTOR       08074B50 (134695760)\n+03AC68 CRC                   44A1E13F (1151459647)\n+03AC6C Compressed Size       00000685 (1669)\n+03AC70 Uncompressed Size     0000149A (5274)\n \n-01CD00 LOCAL HEADER #202     04034B50 (67324752)\n-01CD04 Extract Zip Spec      14 (20) '2.0'\n-01CD05 Extract OS            00 (0) 'MS-DOS'\n-01CD06 General Purpose Flag  0808 (2056)\n+03AC74 LOCAL HEADER #202     04034B50 (67324752)\n+03AC78 Extract Zip Spec      14 (20) '2.0'\n+03AC79 Extract OS            00 (0) 'MS-DOS'\n+03AC7A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01CD08 Compression Method    0008 (8) 'Deflated'\n-01CD0A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01CD0E CRC                   00000000 (0)\n-01CD12 Compressed Size       00000000 (0)\n-01CD16 Uncompressed Size     00000000 (0)\n-01CD1A Filename Length       003D (61)\n-01CD1C Extra Length          0000 (0)\n-01CD1E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03AC7C Compression Method    0008 (8) 'Deflated'\n+03AC7E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03AC82 CRC                   00000000 (0)\n+03AC86 Compressed Size       00000000 (0)\n+03AC8A Uncompressed Size     00000000 (0)\n+03AC8E Filename Length       0047 (71)\n+03AC90 Extra Length          0000 (0)\n+03AC92 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1CD1E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3AC92: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01CD5B PAYLOAD               XX\n+03ACD9 PAYLOAD\n \n-01CD5D DATA DESCRIPTOR       08074B50 (134695760)\n-01CD61 CRC                   00000000 (0)\n-01CD65 Compressed Size       00000002 (2)\n-01CD69 Uncompressed Size     00000000 (0)\n+03AFCE DATA DESCRIPTOR       08074B50 (134695760)\n+03AFD2 CRC                   F0BD77BE (4038948798)\n+03AFD6 Compressed Size       000002F5 (757)\n+03AFDA Uncompressed Size     000005C9 (1481)\n \n-01CD6D LOCAL HEADER #203     04034B50 (67324752)\n-01CD71 Extract Zip Spec      14 (20) '2.0'\n-01CD72 Extract OS            00 (0) 'MS-DOS'\n-01CD73 General Purpose Flag  0808 (2056)\n+03AFDE LOCAL HEADER #203     04034B50 (67324752)\n+03AFE2 Extract Zip Spec      14 (20) '2.0'\n+03AFE3 Extract OS            00 (0) 'MS-DOS'\n+03AFE4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01CD75 Compression Method    0008 (8) 'Deflated'\n-01CD77 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01CD7B CRC                   00000000 (0)\n-01CD7F Compressed Size       00000000 (0)\n-01CD83 Uncompressed Size     00000000 (0)\n-01CD87 Filename Length       0044 (68)\n-01CD89 Extra Length          0000 (0)\n-01CD8B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03AFE6 Compression Method    0008 (8) 'Deflated'\n+03AFE8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03AFEC CRC                   00000000 (0)\n+03AFF0 Compressed Size       00000000 (0)\n+03AFF4 Uncompressed Size     00000000 (0)\n+03AFF8 Filename Length       004E (78)\n+03AFFA Extra Length          0000 (0)\n+03AFFC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1CD8B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3AFFC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01CDCF PAYLOAD\n+03B04A PAYLOAD\n \n-01D142 DATA DESCRIPTOR       08074B50 (134695760)\n-01D146 CRC                   B8E7C6BA (3102197434)\n-01D14A Compressed Size       00000373 (883)\n-01D14E Uncompressed Size     000008DC (2268)\n+03B2FD DATA DESCRIPTOR       08074B50 (134695760)\n+03B301 CRC                   6CA6E955 (1822878037)\n+03B305 Compressed Size       000002B3 (691)\n+03B309 Uncompressed Size     00000566 (1382)\n \n-01D152 LOCAL HEADER #204     04034B50 (67324752)\n-01D156 Extract Zip Spec      14 (20) '2.0'\n-01D157 Extract OS            00 (0) 'MS-DOS'\n-01D158 General Purpose Flag  0808 (2056)\n+03B30D LOCAL HEADER #204     04034B50 (67324752)\n+03B311 Extract Zip Spec      14 (20) '2.0'\n+03B312 Extract OS            00 (0) 'MS-DOS'\n+03B313 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01D15A Compression Method    0008 (8) 'Deflated'\n-01D15C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01D160 CRC                   00000000 (0)\n-01D164 Compressed Size       00000000 (0)\n-01D168 Uncompressed Size     00000000 (0)\n-01D16C Filename Length       004B (75)\n-01D16E Extra Length          0000 (0)\n-01D170 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03B315 Compression Method    0008 (8) 'Deflated'\n+03B317 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03B31B CRC                   00000000 (0)\n+03B31F Compressed Size       00000000 (0)\n+03B323 Uncompressed Size     00000000 (0)\n+03B327 Filename Length       003B (59)\n+03B329 Extra Length          0000 (0)\n+03B32B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D170: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3B32B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01D1BB PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+03B366 PAYLOAD               XX\n \n-01D20A DATA DESCRIPTOR       08074B50 (134695760)\n-01D20E CRC                   78F5F066 (2029383782)\n-01D212 Compressed Size       0000004F (79)\n-01D216 Uncompressed Size     00000053 (83)\n+03B368 DATA DESCRIPTOR       08074B50 (134695760)\n+03B36C CRC                   00000000 (0)\n+03B370 Compressed Size       00000002 (2)\n+03B374 Uncompressed Size     00000000 (0)\n \n-01D21A LOCAL HEADER #205     04034B50 (67324752)\n-01D21E Extract Zip Spec      14 (20) '2.0'\n-01D21F Extract OS            00 (0) 'MS-DOS'\n-01D220 General Purpose Flag  0808 (2056)\n+03B378 LOCAL HEADER #205     04034B50 (67324752)\n+03B37C Extract Zip Spec      14 (20) '2.0'\n+03B37D Extract OS            00 (0) 'MS-DOS'\n+03B37E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01D222 Compression Method    0008 (8) 'Deflated'\n-01D224 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01D228 CRC                   00000000 (0)\n-01D22C Compressed Size       00000000 (0)\n-01D230 Uncompressed Size     00000000 (0)\n-01D234 Filename Length       003A (58)\n-01D236 Extra Length          0000 (0)\n-01D238 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03B380 Compression Method    0008 (8) 'Deflated'\n+03B382 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03B386 CRC                   00000000 (0)\n+03B38A Compressed Size       00000000 (0)\n+03B38E Uncompressed Size     00000000 (0)\n+03B392 Filename Length       0053 (83)\n+03B394 Extra Length          0000 (0)\n+03B396 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D238: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3B396: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01D272 PAYLOAD               XX\n+03B3E9 PAYLOAD\n \n-01D274 DATA DESCRIPTOR       08074B50 (134695760)\n-01D278 CRC                   00000000 (0)\n-01D27C Compressed Size       00000002 (2)\n-01D280 Uncompressed Size     00000000 (0)\n+03B670 DATA DESCRIPTOR       08074B50 (134695760)\n+03B674 CRC                   1C57CB8B (475515787)\n+03B678 Compressed Size       00000287 (647)\n+03B67C Uncompressed Size     00000532 (1330)\n \n-01D284 LOCAL HEADER #206     04034B50 (67324752)\n-01D288 Extract Zip Spec      14 (20) '2.0'\n-01D289 Extract OS            00 (0) 'MS-DOS'\n-01D28A General Purpose Flag  0808 (2056)\n+03B680 LOCAL HEADER #206     04034B50 (67324752)\n+03B684 Extract Zip Spec      14 (20) '2.0'\n+03B685 Extract OS            00 (0) 'MS-DOS'\n+03B686 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01D28C Compression Method    0008 (8) 'Deflated'\n-01D28E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01D292 CRC                   00000000 (0)\n-01D296 Compressed Size       00000000 (0)\n-01D29A Uncompressed Size     00000000 (0)\n-01D29E Filename Length       0041 (65)\n-01D2A0 Extra Length          0000 (0)\n-01D2A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03B688 Compression Method    0008 (8) 'Deflated'\n+03B68A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03B68E CRC                   00000000 (0)\n+03B692 Compressed Size       00000000 (0)\n+03B696 Uncompressed Size     00000000 (0)\n+03B69A Filename Length       0053 (83)\n+03B69C Extra Length          0000 (0)\n+03B69E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D2A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3B69E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01D2E3 PAYLOAD\n+03B6F1 PAYLOAD\n \n-01D69D DATA DESCRIPTOR       08074B50 (134695760)\n-01D6A1 CRC                   7376C130 (1937162544)\n-01D6A5 Compressed Size       000003BA (954)\n-01D6A9 Uncompressed Size     0000097C (2428)\n+03BA54 DATA DESCRIPTOR       08074B50 (134695760)\n+03BA58 CRC                   CDABD9DC (3450591708)\n+03BA5C Compressed Size       00000363 (867)\n+03BA60 Uncompressed Size     0000070B (1803)\n \n-01D6AD LOCAL HEADER #207     04034B50 (67324752)\n-01D6B1 Extract Zip Spec      14 (20) '2.0'\n-01D6B2 Extract OS            00 (0) 'MS-DOS'\n-01D6B3 General Purpose Flag  0808 (2056)\n+03BA64 LOCAL HEADER #207     04034B50 (67324752)\n+03BA68 Extract Zip Spec      14 (20) '2.0'\n+03BA69 Extract OS            00 (0) 'MS-DOS'\n+03BA6A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01D6B5 Compression Method    0008 (8) 'Deflated'\n-01D6B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01D6BB CRC                   00000000 (0)\n-01D6BF Compressed Size       00000000 (0)\n-01D6C3 Uncompressed Size     00000000 (0)\n-01D6C7 Filename Length       0048 (72)\n-01D6C9 Extra Length          0000 (0)\n-01D6CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03BA6C Compression Method    0008 (8) 'Deflated'\n+03BA6E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03BA72 CRC                   00000000 (0)\n+03BA76 Compressed Size       00000000 (0)\n+03BA7A Uncompressed Size     00000000 (0)\n+03BA7E Filename Length       0029 (41)\n+03BA80 Extra Length          0000 (0)\n+03BA82 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D6CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3BA82: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01D713 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+03BAAB PAYLOAD               XX\n \n-01D75F DATA DESCRIPTOR       08074B50 (134695760)\n-01D763 CRC                   B107068C (2970027660)\n-01D767 Compressed Size       0000004C (76)\n-01D76B Uncompressed Size     00000050 (80)\n+03BAAD DATA DESCRIPTOR       08074B50 (134695760)\n+03BAB1 CRC                   00000000 (0)\n+03BAB5 Compressed Size       00000002 (2)\n+03BAB9 Uncompressed Size     00000000 (0)\n \n-01D76F LOCAL HEADER #208     04034B50 (67324752)\n-01D773 Extract Zip Spec      14 (20) '2.0'\n-01D774 Extract OS            00 (0) 'MS-DOS'\n-01D775 General Purpose Flag  0808 (2056)\n+03BABD LOCAL HEADER #208     04034B50 (67324752)\n+03BAC1 Extract Zip Spec      14 (20) '2.0'\n+03BAC2 Extract OS            00 (0) 'MS-DOS'\n+03BAC3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01D777 Compression Method    0008 (8) 'Deflated'\n-01D779 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01D77D CRC                   00000000 (0)\n-01D781 Compressed Size       00000000 (0)\n-01D785 Uncompressed Size     00000000 (0)\n-01D789 Filename Length       0039 (57)\n-01D78B Extra Length          0000 (0)\n-01D78D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03BAC5 Compression Method    0008 (8) 'Deflated'\n+03BAC7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03BACB CRC                   00000000 (0)\n+03BACF Compressed Size       00000000 (0)\n+03BAD3 Uncompressed Size     00000000 (0)\n+03BAD7 Filename Length       003F (63)\n+03BAD9 Extra Length          0000 (0)\n+03BADB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D78D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3BADB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01D7C6 PAYLOAD               XX\n+03BB1A PAYLOAD\n \n-01D7C8 DATA DESCRIPTOR       08074B50 (134695760)\n-01D7CC CRC                   00000000 (0)\n-01D7D0 Compressed Size       00000002 (2)\n-01D7D4 Uncompressed Size     00000000 (0)\n+03BFEC DATA DESCRIPTOR       08074B50 (134695760)\n+03BFF0 CRC                   EF9BEB14 (4019972884)\n+03BFF4 Compressed Size       000004D2 (1234)\n+03BFF8 Uncompressed Size     00000C80 (3200)\n \n-01D7D8 LOCAL HEADER #209     04034B50 (67324752)\n-01D7DC Extract Zip Spec      14 (20) '2.0'\n-01D7DD Extract OS            00 (0) 'MS-DOS'\n-01D7DE General Purpose Flag  0808 (2056)\n+03BFFC LOCAL HEADER #209     04034B50 (67324752)\n+03C000 Extract Zip Spec      14 (20) '2.0'\n+03C001 Extract OS            00 (0) 'MS-DOS'\n+03C002 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01D7E0 Compression Method    0008 (8) 'Deflated'\n-01D7E2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01D7E6 CRC                   00000000 (0)\n-01D7EA Compressed Size       00000000 (0)\n-01D7EE Uncompressed Size     00000000 (0)\n-01D7F2 Filename Length       0040 (64)\n-01D7F4 Extra Length          0000 (0)\n-01D7F6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03C004 Compression Method    0008 (8) 'Deflated'\n+03C006 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03C00A CRC                   00000000 (0)\n+03C00E Compressed Size       00000000 (0)\n+03C012 Uncompressed Size     00000000 (0)\n+03C016 Filename Length       0029 (41)\n+03C018 Extra Length          0000 (0)\n+03C01A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D7F6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3C01A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01D836 PAYLOAD\n+03C043 PAYLOAD               XX\n \n-01DB99 DATA DESCRIPTOR       08074B50 (134695760)\n-01DB9D CRC                   CFD7D535 (3487028533)\n-01DBA1 Compressed Size       00000363 (867)\n-01DBA5 Uncompressed Size     00000819 (2073)\n+03C045 DATA DESCRIPTOR       08074B50 (134695760)\n+03C049 CRC                   00000000 (0)\n+03C04D Compressed Size       00000002 (2)\n+03C051 Uncompressed Size     00000000 (0)\n \n-01DBA9 LOCAL HEADER #210     04034B50 (67324752)\n-01DBAD Extract Zip Spec      14 (20) '2.0'\n-01DBAE Extract OS            00 (0) 'MS-DOS'\n-01DBAF General Purpose Flag  0808 (2056)\n+03C055 LOCAL HEADER #210     04034B50 (67324752)\n+03C059 Extract Zip Spec      14 (20) '2.0'\n+03C05A Extract OS            00 (0) 'MS-DOS'\n+03C05B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01DBB1 Compression Method    0008 (8) 'Deflated'\n-01DBB3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01DBB7 CRC                   00000000 (0)\n-01DBBB Compressed Size       00000000 (0)\n-01DBBF Uncompressed Size     00000000 (0)\n-01DBC3 Filename Length       0047 (71)\n-01DBC5 Extra Length          0000 (0)\n-01DBC7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03C05D Compression Method    0008 (8) 'Deflated'\n+03C05F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03C063 CRC                   00000000 (0)\n+03C067 Compressed Size       00000000 (0)\n+03C06B Uncompressed Size     00000000 (0)\n+03C06F Filename Length       0042 (66)\n+03C071 Extra Length          0000 (0)\n+03C073 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1DBC7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3C073: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01DC0E PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+03C0B5 PAYLOAD\n \n-01DC58 DATA DESCRIPTOR       08074B50 (134695760)\n-01DC5C CRC                   9AAEB621 (2595141153)\n-01DC60 Compressed Size       0000004A (74)\n-01DC64 Uncompressed Size     0000004F (79)\n+03C5BD DATA DESCRIPTOR       08074B50 (134695760)\n+03C5C1 CRC                   720B0082 (1913323650)\n+03C5C5 Compressed Size       00000508 (1288)\n+03C5C9 Uncompressed Size     00000FBA (4026)\n \n-01DC68 LOCAL HEADER #211     04034B50 (67324752)\n-01DC6C Extract Zip Spec      14 (20) '2.0'\n-01DC6D Extract OS            00 (0) 'MS-DOS'\n-01DC6E General Purpose Flag  0808 (2056)\n+03C5CD LOCAL HEADER #211     04034B50 (67324752)\n+03C5D1 Extract Zip Spec      14 (20) '2.0'\n+03C5D2 Extract OS            00 (0) 'MS-DOS'\n+03C5D3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01DC70 Compression Method    0008 (8) 'Deflated'\n-01DC72 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01DC76 CRC                   00000000 (0)\n-01DC7A Compressed Size       00000000 (0)\n-01DC7E Uncompressed Size     00000000 (0)\n-01DC82 Filename Length       003A (58)\n-01DC84 Extra Length          0000 (0)\n-01DC86 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03C5D5 Compression Method    0008 (8) 'Deflated'\n+03C5D7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03C5DB CRC                   00000000 (0)\n+03C5DF Compressed Size       00000000 (0)\n+03C5E3 Uncompressed Size     00000000 (0)\n+03C5E7 Filename Length       003F (63)\n+03C5E9 Extra Length          0000 (0)\n+03C5EB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1DC86: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3C5EB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01DCC0 PAYLOAD               XX\n+03C62A PAYLOAD\n \n-01DCC2 DATA DESCRIPTOR       08074B50 (134695760)\n-01DCC6 CRC                   00000000 (0)\n-01DCCA Compressed Size       00000002 (2)\n-01DCCE Uncompressed Size     00000000 (0)\n+03C8BC DATA DESCRIPTOR       08074B50 (134695760)\n+03C8C0 CRC                   0EB84276 (246956662)\n+03C8C4 Compressed Size       00000292 (658)\n+03C8C8 Uncompressed Size     00000517 (1303)\n \n-01DCD2 LOCAL HEADER #212     04034B50 (67324752)\n-01DCD6 Extract Zip Spec      14 (20) '2.0'\n-01DCD7 Extract OS            00 (0) 'MS-DOS'\n-01DCD8 General Purpose Flag  0808 (2056)\n+03C8CC LOCAL HEADER #212     04034B50 (67324752)\n+03C8D0 Extract Zip Spec      14 (20) '2.0'\n+03C8D1 Extract OS            00 (0) 'MS-DOS'\n+03C8D2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01DCDA Compression Method    0008 (8) 'Deflated'\n-01DCDC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01DCE0 CRC                   00000000 (0)\n-01DCE4 Compressed Size       00000000 (0)\n-01DCE8 Uncompressed Size     00000000 (0)\n-01DCEC Filename Length       0041 (65)\n-01DCEE Extra Length          0000 (0)\n-01DCF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03C8D4 Compression Method    0008 (8) 'Deflated'\n+03C8D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03C8DA CRC                   00000000 (0)\n+03C8DE Compressed Size       00000000 (0)\n+03C8E2 Uncompressed Size     00000000 (0)\n+03C8E6 Filename Length       002B (43)\n+03C8E8 Extra Length          0000 (0)\n+03C8EA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1DCF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3C8EA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01DD31 PAYLOAD\n+03C915 PAYLOAD               XX\n \n-01E080 DATA DESCRIPTOR       08074B50 (134695760)\n-01E084 CRC                   4BC00B23 (1270876963)\n-01E088 Compressed Size       0000034F (847)\n-01E08C Uncompressed Size     00000829 (2089)\n+03C917 DATA DESCRIPTOR       08074B50 (134695760)\n+03C91B CRC                   00000000 (0)\n+03C91F Compressed Size       00000002 (2)\n+03C923 Uncompressed Size     00000000 (0)\n \n-01E090 LOCAL HEADER #213     04034B50 (67324752)\n-01E094 Extract Zip Spec      14 (20) '2.0'\n-01E095 Extract OS            00 (0) 'MS-DOS'\n-01E096 General Purpose Flag  0808 (2056)\n+03C927 LOCAL HEADER #213     04034B50 (67324752)\n+03C92B Extract Zip Spec      14 (20) '2.0'\n+03C92C Extract OS            00 (0) 'MS-DOS'\n+03C92D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01E098 Compression Method    0008 (8) 'Deflated'\n-01E09A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01E09E CRC                   00000000 (0)\n-01E0A2 Compressed Size       00000000 (0)\n-01E0A6 Uncompressed Size     00000000 (0)\n-01E0AA Filename Length       0048 (72)\n-01E0AC Extra Length          0000 (0)\n-01E0AE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03C92F Compression Method    0008 (8) 'Deflated'\n+03C931 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03C935 CRC                   00000000 (0)\n+03C939 Compressed Size       00000000 (0)\n+03C93D Uncompressed Size     00000000 (0)\n+03C941 Filename Length       003C (60)\n+03C943 Extra Length          0000 (0)\n+03C945 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E0AE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3C945: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01E0F6 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+03C981 PAYLOAD\n \n-01E141 DATA DESCRIPTOR       08074B50 (134695760)\n-01E145 CRC                   FC77F286 (4235719302)\n-01E149 Compressed Size       0000004B (75)\n-01E14D Uncompressed Size     00000050 (80)\n+03D1D5 DATA DESCRIPTOR       08074B50 (134695760)\n+03D1D9 CRC                   64ACCB0D (1689045773)\n+03D1DD Compressed Size       00000854 (2132)\n+03D1E1 Uncompressed Size     00001B32 (6962)\n \n-01E151 LOCAL HEADER #214     04034B50 (67324752)\n-01E155 Extract Zip Spec      14 (20) '2.0'\n-01E156 Extract OS            00 (0) 'MS-DOS'\n-01E157 General Purpose Flag  0808 (2056)\n+03D1E5 LOCAL HEADER #214     04034B50 (67324752)\n+03D1E9 Extract Zip Spec      14 (20) '2.0'\n+03D1EA Extract OS            00 (0) 'MS-DOS'\n+03D1EB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01E159 Compression Method    0008 (8) 'Deflated'\n-01E15B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01E15F CRC                   00000000 (0)\n-01E163 Compressed Size       00000000 (0)\n-01E167 Uncompressed Size     00000000 (0)\n-01E16B Filename Length       0038 (56)\n-01E16D Extra Length          0000 (0)\n-01E16F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03D1ED Compression Method    0008 (8) 'Deflated'\n+03D1EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03D1F3 CRC                   00000000 (0)\n+03D1F7 Compressed Size       00000000 (0)\n+03D1FB Uncompressed Size     00000000 (0)\n+03D1FF Filename Length       0043 (67)\n+03D201 Extra Length          0000 (0)\n+03D203 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E16F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3D203: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01E1A7 PAYLOAD               XX\n+03D246 PAYLOAD\n \n-01E1A9 DATA DESCRIPTOR       08074B50 (134695760)\n-01E1AD CRC                   00000000 (0)\n-01E1B1 Compressed Size       00000002 (2)\n-01E1B5 Uncompressed Size     00000000 (0)\n+03D56C DATA DESCRIPTOR       08074B50 (134695760)\n+03D570 CRC                   72CD5ED3 (1926061779)\n+03D574 Compressed Size       00000326 (806)\n+03D578 Uncompressed Size     0000069B (1691)\n \n-01E1B9 LOCAL HEADER #215     04034B50 (67324752)\n-01E1BD Extract Zip Spec      14 (20) '2.0'\n-01E1BE Extract OS            00 (0) 'MS-DOS'\n-01E1BF General Purpose Flag  0808 (2056)\n+03D57C LOCAL HEADER #215     04034B50 (67324752)\n+03D580 Extract Zip Spec      14 (20) '2.0'\n+03D581 Extract OS            00 (0) 'MS-DOS'\n+03D582 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01E1C1 Compression Method    0008 (8) 'Deflated'\n-01E1C3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01E1C7 CRC                   00000000 (0)\n-01E1CB Compressed Size       00000000 (0)\n-01E1CF Uncompressed Size     00000000 (0)\n-01E1D3 Filename Length       003F (63)\n-01E1D5 Extra Length          0000 (0)\n-01E1D7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03D584 Compression Method    0008 (8) 'Deflated'\n+03D586 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03D58A CRC                   00000000 (0)\n+03D58E Compressed Size       00000000 (0)\n+03D592 Uncompressed Size     00000000 (0)\n+03D596 Filename Length       0028 (40)\n+03D598 Extra Length          0000 (0)\n+03D59A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E1D7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3D59A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01E216 PAYLOAD\n+03D5C2 PAYLOAD               XX\n \n-01E608 DATA DESCRIPTOR       08074B50 (134695760)\n-01E60C CRC                   FB57BB2D (4216830765)\n-01E610 Compressed Size       000003F2 (1010)\n-01E614 Uncompressed Size     00000AD3 (2771)\n+03D5C4 DATA DESCRIPTOR       08074B50 (134695760)\n+03D5C8 CRC                   00000000 (0)\n+03D5CC Compressed Size       00000002 (2)\n+03D5D0 Uncompressed Size     00000000 (0)\n \n-01E618 LOCAL HEADER #216     04034B50 (67324752)\n-01E61C Extract Zip Spec      14 (20) '2.0'\n-01E61D Extract OS            00 (0) 'MS-DOS'\n-01E61E General Purpose Flag  0808 (2056)\n+03D5D4 LOCAL HEADER #216     04034B50 (67324752)\n+03D5D8 Extract Zip Spec      14 (20) '2.0'\n+03D5D9 Extract OS            00 (0) 'MS-DOS'\n+03D5DA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01E620 Compression Method    0008 (8) 'Deflated'\n-01E622 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01E626 CRC                   00000000 (0)\n-01E62A Compressed Size       00000000 (0)\n-01E62E Uncompressed Size     00000000 (0)\n-01E632 Filename Length       0046 (70)\n-01E634 Extra Length          0000 (0)\n-01E636 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03D5DC Compression Method    0008 (8) 'Deflated'\n+03D5DE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03D5E2 CRC                   00000000 (0)\n+03D5E6 Compressed Size       00000000 (0)\n+03D5EA Uncompressed Size     00000000 (0)\n+03D5EE Filename Length       0036 (54)\n+03D5F0 Extra Length          0000 (0)\n+03D5F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E636: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3D5F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01E67C PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+03D628 PAYLOAD\n \n-01E6C6 DATA DESCRIPTOR       08074B50 (134695760)\n-01E6CA CRC                   1E03A4CD (503555277)\n-01E6CE Compressed Size       0000004A (74)\n-01E6D2 Uncompressed Size     0000004E (78)\n+03E268 DATA DESCRIPTOR       08074B50 (134695760)\n+03E26C CRC                   20710777 (544278391)\n+03E270 Compressed Size       00000C40 (3136)\n+03E274 Uncompressed Size     00002E80 (11904)\n \n-01E6D6 LOCAL HEADER #217     04034B50 (67324752)\n-01E6DA Extract Zip Spec      14 (20) '2.0'\n-01E6DB Extract OS            00 (0) 'MS-DOS'\n-01E6DC General Purpose Flag  0808 (2056)\n+03E278 LOCAL HEADER #217     04034B50 (67324752)\n+03E27C Extract Zip Spec      14 (20) '2.0'\n+03E27D Extract OS            00 (0) 'MS-DOS'\n+03E27E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01E6DE Compression Method    0008 (8) 'Deflated'\n-01E6E0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01E6E4 CRC                   00000000 (0)\n-01E6E8 Compressed Size       00000000 (0)\n-01E6EC Uncompressed Size     00000000 (0)\n-01E6F0 Filename Length       0031 (49)\n-01E6F2 Extra Length          0000 (0)\n-01E6F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03E280 Compression Method    0008 (8) 'Deflated'\n+03E282 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03E286 CRC                   00000000 (0)\n+03E28A Compressed Size       00000000 (0)\n+03E28E Uncompressed Size     00000000 (0)\n+03E292 Filename Length       003D (61)\n+03E294 Extra Length          0000 (0)\n+03E296 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E6F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3E296: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01E725 PAYLOAD               XX\n+03E2D3 PAYLOAD\n \n-01E727 DATA DESCRIPTOR       08074B50 (134695760)\n-01E72B CRC                   00000000 (0)\n-01E72F Compressed Size       00000002 (2)\n-01E733 Uncompressed Size     00000000 (0)\n+03E578 DATA DESCRIPTOR       08074B50 (134695760)\n+03E57C CRC                   1A0DB37D (437105533)\n+03E580 Compressed Size       000002A5 (677)\n+03E584 Uncompressed Size     00000541 (1345)\n \n-01E737 LOCAL HEADER #218     04034B50 (67324752)\n-01E73B Extract Zip Spec      14 (20) '2.0'\n-01E73C Extract OS            00 (0) 'MS-DOS'\n-01E73D General Purpose Flag  0808 (2056)\n+03E588 LOCAL HEADER #218     04034B50 (67324752)\n+03E58C Extract Zip Spec      14 (20) '2.0'\n+03E58D Extract OS            00 (0) 'MS-DOS'\n+03E58E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01E73F Compression Method    0008 (8) 'Deflated'\n-01E741 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01E745 CRC                   00000000 (0)\n-01E749 Compressed Size       00000000 (0)\n-01E74D Uncompressed Size     00000000 (0)\n-01E751 Filename Length       0038 (56)\n-01E753 Extra Length          0000 (0)\n-01E755 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03E590 Compression Method    0008 (8) 'Deflated'\n+03E592 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03E596 CRC                   00000000 (0)\n+03E59A Compressed Size       00000000 (0)\n+03E59E Uncompressed Size     00000000 (0)\n+03E5A2 Filename Length       002E (46)\n+03E5A4 Extra Length          0000 (0)\n+03E5A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E755: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3E5A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01E78D PAYLOAD\n+03E5D4 PAYLOAD               XX\n \n-01EB76 DATA DESCRIPTOR       08074B50 (134695760)\n-01EB7A CRC                   417FF1D2 (1098904018)\n-01EB7E Compressed Size       000003E9 (1001)\n-01EB82 Uncompressed Size     0000113A (4410)\n+03E5D6 DATA DESCRIPTOR       08074B50 (134695760)\n+03E5DA CRC                   00000000 (0)\n+03E5DE Compressed Size       00000002 (2)\n+03E5E2 Uncompressed Size     00000000 (0)\n \n-01EB86 LOCAL HEADER #219     04034B50 (67324752)\n-01EB8A Extract Zip Spec      14 (20) '2.0'\n-01EB8B Extract OS            00 (0) 'MS-DOS'\n-01EB8C General Purpose Flag  0808 (2056)\n+03E5E6 LOCAL HEADER #219     04034B50 (67324752)\n+03E5EA Extract Zip Spec      14 (20) '2.0'\n+03E5EB Extract OS            00 (0) 'MS-DOS'\n+03E5EC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01EB8E Compression Method    0008 (8) 'Deflated'\n-01EB90 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01EB94 CRC                   00000000 (0)\n-01EB98 Compressed Size       00000000 (0)\n-01EB9C Uncompressed Size     00000000 (0)\n-01EBA0 Filename Length       003F (63)\n-01EBA2 Extra Length          0000 (0)\n-01EBA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03E5EE Compression Method    0008 (8) 'Deflated'\n+03E5F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03E5F4 CRC                   00000000 (0)\n+03E5F8 Compressed Size       00000000 (0)\n+03E5FC Uncompressed Size     00000000 (0)\n+03E600 Filename Length       0036 (54)\n+03E602 Extra Length          0000 (0)\n+03E604 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1EBA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3E604: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01EBE3 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+03E63A PAYLOAD\n \n-01EC28 DATA DESCRIPTOR       08074B50 (134695760)\n-01EC2C CRC                   3C368062 (1010204770)\n-01EC30 Compressed Size       00000045 (69)\n-01EC34 Uncompressed Size     00000047 (71)\n+03E8B8 DATA DESCRIPTOR       08074B50 (134695760)\n+03E8BC CRC                   20217A79 (539064953)\n+03E8C0 Compressed Size       0000027E (638)\n+03E8C4 Uncompressed Size     00000528 (1320)\n \n-01EC38 LOCAL HEADER #220     04034B50 (67324752)\n-01EC3C Extract Zip Spec      14 (20) '2.0'\n-01EC3D Extract OS            00 (0) 'MS-DOS'\n-01EC3E General Purpose Flag  0808 (2056)\n+03E8C8 LOCAL HEADER #220     04034B50 (67324752)\n+03E8CC Extract Zip Spec      14 (20) '2.0'\n+03E8CD Extract OS            00 (0) 'MS-DOS'\n+03E8CE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01EC40 Compression Method    0008 (8) 'Deflated'\n-01EC42 Modification Time     50DD91CB (1356698059) 'Mon Jun 29 18:14:22 2020'\n-01EC46 CRC                   00000000 (0)\n-01EC4A Compressed Size       00000000 (0)\n-01EC4E Uncompressed Size     00000000 (0)\n-01EC52 Filename Length       001B (27)\n-01EC54 Extra Length          0000 (0)\n-01EC56 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03E8D0 Compression Method    0008 (8) 'Deflated'\n+03E8D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03E8D6 CRC                   00000000 (0)\n+03E8DA Compressed Size       00000000 (0)\n+03E8DE Uncompressed Size     00000000 (0)\n+03E8E2 Filename Length       0040 (64)\n+03E8E4 Extra Length          0000 (0)\n+03E8E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1EC56: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3E8E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01EC71 PAYLOAD               XX\n+03E926 PAYLOAD\n \n-01EC73 DATA DESCRIPTOR       08074B50 (134695760)\n-01EC77 CRC                   00000000 (0)\n-01EC7B Compressed Size       00000002 (2)\n-01EC7F Uncompressed Size     00000000 (0)\n+03ED56 DATA DESCRIPTOR       08074B50 (134695760)\n+03ED5A CRC                   EFB59934 (4021655860)\n+03ED5E Compressed Size       00000430 (1072)\n+03ED62 Uncompressed Size     00000B39 (2873)\n \n-01EC83 LOCAL HEADER #221     04034B50 (67324752)\n-01EC87 Extract Zip Spec      14 (20) '2.0'\n-01EC88 Extract OS            00 (0) 'MS-DOS'\n-01EC89 General Purpose Flag  0808 (2056)\n+03ED66 LOCAL HEADER #221     04034B50 (67324752)\n+03ED6A Extract Zip Spec      14 (20) '2.0'\n+03ED6B Extract OS            00 (0) 'MS-DOS'\n+03ED6C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01EC8B Compression Method    0008 (8) 'Deflated'\n-01EC8D Modification Time     50DD91CB (1356698059) 'Mon Jun 29 18:14:22 2020'\n-01EC91 CRC                   00000000 (0)\n-01EC95 Compressed Size       00000000 (0)\n-01EC99 Uncompressed Size     00000000 (0)\n-01EC9D Filename Length       0028 (40)\n-01EC9F Extra Length          0000 (0)\n-01ECA1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03ED6E Compression Method    0008 (8) 'Deflated'\n+03ED70 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03ED74 CRC                   00000000 (0)\n+03ED78 Compressed Size       00000000 (0)\n+03ED7C Uncompressed Size     00000000 (0)\n+03ED80 Filename Length       0040 (64)\n+03ED82 Extra Length          0000 (0)\n+03ED84 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1ECA1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3ED84: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01ECC9 PAYLOAD               XX\n+03EDC4 PAYLOAD\n \n-01ECCB DATA DESCRIPTOR       08074B50 (134695760)\n-01ECCF CRC                   00000000 (0)\n-01ECD3 Compressed Size       00000002 (2)\n-01ECD7 Uncompressed Size     00000000 (0)\n+03F0CE DATA DESCRIPTOR       08074B50 (134695760)\n+03F0D2 CRC                   B7F4FBDF (3086285791)\n+03F0D6 Compressed Size       0000030A (778)\n+03F0DA Uncompressed Size     0000063D (1597)\n \n-01ECDB LOCAL HEADER #222     04034B50 (67324752)\n-01ECDF Extract Zip Spec      14 (20) '2.0'\n-01ECE0 Extract OS            00 (0) 'MS-DOS'\n-01ECE1 General Purpose Flag  0808 (2056)\n+03F0DE LOCAL HEADER #222     04034B50 (67324752)\n+03F0E2 Extract Zip Spec      14 (20) '2.0'\n+03F0E3 Extract OS            00 (0) 'MS-DOS'\n+03F0E4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01ECE3 Compression Method    0008 (8) 'Deflated'\n-01ECE5 Modification Time     50DD91CB (1356698059) 'Mon Jun 29 18:14:22 2020'\n-01ECE9 CRC                   00000000 (0)\n-01ECED Compressed Size       00000000 (0)\n-01ECF1 Uncompressed Size     00000000 (0)\n-01ECF5 Filename Length       0036 (54)\n-01ECF7 Extra Length          0000 (0)\n-01ECF9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03F0E6 Compression Method    0008 (8) 'Deflated'\n+03F0E8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03F0EC CRC                   00000000 (0)\n+03F0F0 Compressed Size       00000000 (0)\n+03F0F4 Uncompressed Size     00000000 (0)\n+03F0F8 Filename Length       0025 (37)\n+03F0FA Extra Length          0000 (0)\n+03F0FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1ECF9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3F0FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01ED2F PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+03F121 PAYLOAD               XX\n \n-01ED9A DATA DESCRIPTOR       08074B50 (134695760)\n-01ED9E CRC                   37B34B5F (934497119)\n-01EDA2 Compressed Size       0000006B (107)\n-01EDA6 Uncompressed Size     0000006C (108)\n+03F123 DATA DESCRIPTOR       08074B50 (134695760)\n+03F127 CRC                   00000000 (0)\n+03F12B Compressed Size       00000002 (2)\n+03F12F Uncompressed Size     00000000 (0)\n \n-01EDAA LOCAL HEADER #223     04034B50 (67324752)\n-01EDAE Extract Zip Spec      14 (20) '2.0'\n-01EDAF Extract OS            00 (0) 'MS-DOS'\n-01EDB0 General Purpose Flag  0808 (2056)\n+03F133 LOCAL HEADER #223     04034B50 (67324752)\n+03F137 Extract Zip Spec      14 (20) '2.0'\n+03F138 Extract OS            00 (0) 'MS-DOS'\n+03F139 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01EDB2 Compression Method    0008 (8) 'Deflated'\n-01EDB4 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-01EDB8 CRC                   00000000 (0)\n-01EDBC Compressed Size       00000000 (0)\n-01EDC0 Uncompressed Size     00000000 (0)\n-01EDC4 Filename Length       002F (47)\n-01EDC6 Extra Length          0000 (0)\n-01EDC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03F13B Compression Method    0008 (8) 'Deflated'\n+03F13D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03F141 CRC                   00000000 (0)\n+03F145 Compressed Size       00000000 (0)\n+03F149 Uncompressed Size     00000000 (0)\n+03F14D Filename Length       0040 (64)\n+03F14F Extra Length          0000 (0)\n+03F151 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1EDC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3F151: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01EDF7 PAYLOAD\n+03F191 PAYLOAD\n \n-01F597 DATA DESCRIPTOR       08074B50 (134695760)\n-01F59B CRC                   A18F9C9F (2710543519)\n-01F59F Compressed Size       000007A0 (1952)\n-01F5A3 Uncompressed Size     000025D9 (9689)\n+03FE81 DATA DESCRIPTOR       08074B50 (134695760)\n+03FE85 CRC                   11C1AD74 (297905524)\n+03FE89 Compressed Size       00000CF0 (3312)\n+03FE8D Uncompressed Size     00003376 (13174)\n \n-01F5A7 LOCAL HEADER #224     04034B50 (67324752)\n-01F5AB Extract Zip Spec      14 (20) '2.0'\n-01F5AC Extract OS            00 (0) 'MS-DOS'\n-01F5AD General Purpose Flag  0808 (2056)\n+03FE91 LOCAL HEADER #224     04034B50 (67324752)\n+03FE95 Extract Zip Spec      14 (20) '2.0'\n+03FE96 Extract OS            00 (0) 'MS-DOS'\n+03FE97 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01F5AF Compression Method    0008 (8) 'Deflated'\n-01F5B1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01F5B5 CRC                   00000000 (0)\n-01F5B9 Compressed Size       00000000 (0)\n-01F5BD Uncompressed Size     00000000 (0)\n-01F5C1 Filename Length       0033 (51)\n-01F5C3 Extra Length          0000 (0)\n-01F5C5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+03FE99 Compression Method    0008 (8) 'Deflated'\n+03FE9B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+03FE9F CRC                   00000000 (0)\n+03FEA3 Compressed Size       00000000 (0)\n+03FEA7 Uncompressed Size     00000000 (0)\n+03FEAB Filename Length       003A (58)\n+03FEAD Extra Length          0000 (0)\n+03FEAF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F5C5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3FEAF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01F5F8 PAYLOAD               XX\n+03FEE9 PAYLOAD\n \n-01F5FA DATA DESCRIPTOR       08074B50 (134695760)\n-01F5FE CRC                   00000000 (0)\n-01F602 Compressed Size       00000002 (2)\n-01F606 Uncompressed Size     00000000 (0)\n+04017E DATA DESCRIPTOR       08074B50 (134695760)\n+040182 CRC                   8CA55593 (2359645587)\n+040186 Compressed Size       00000295 (661)\n+04018A Uncompressed Size     00000546 (1350)\n \n-01F60A LOCAL HEADER #225     04034B50 (67324752)\n-01F60E Extract Zip Spec      14 (20) '2.0'\n-01F60F Extract OS            00 (0) 'MS-DOS'\n-01F610 General Purpose Flag  0808 (2056)\n+04018E LOCAL HEADER #225     04034B50 (67324752)\n+040192 Extract Zip Spec      14 (20) '2.0'\n+040193 Extract OS            00 (0) 'MS-DOS'\n+040194 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01F612 Compression Method    0008 (8) 'Deflated'\n-01F614 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01F618 CRC                   00000000 (0)\n-01F61C Compressed Size       00000000 (0)\n-01F620 Uncompressed Size     00000000 (0)\n-01F624 Filename Length       003A (58)\n-01F626 Extra Length          0000 (0)\n-01F628 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+040196 Compression Method    0008 (8) 'Deflated'\n+040198 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04019C CRC                   00000000 (0)\n+0401A0 Compressed Size       00000000 (0)\n+0401A4 Uncompressed Size     00000000 (0)\n+0401A8 Filename Length       0041 (65)\n+0401AA Extra Length          0000 (0)\n+0401AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F628: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x401AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01F662 PAYLOAD\n+0401ED PAYLOAD\n \n-01FA31 DATA DESCRIPTOR       08074B50 (134695760)\n-01FA35 CRC                   364739E6 (910637542)\n-01FA39 Compressed Size       000003CF (975)\n-01FA3D Uncompressed Size     00000BF2 (3058)\n+0404EE DATA DESCRIPTOR       08074B50 (134695760)\n+0404F2 CRC                   BDD5C58A (3184903562)\n+0404F6 Compressed Size       00000301 (769)\n+0404FA Uncompressed Size     000006DC (1756)\n \n-01FA41 LOCAL HEADER #226     04034B50 (67324752)\n-01FA45 Extract Zip Spec      14 (20) '2.0'\n-01FA46 Extract OS            00 (0) 'MS-DOS'\n-01FA47 General Purpose Flag  0808 (2056)\n+0404FE LOCAL HEADER #226     04034B50 (67324752)\n+040502 Extract Zip Spec      14 (20) '2.0'\n+040503 Extract OS            00 (0) 'MS-DOS'\n+040504 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01FA49 Compression Method    0008 (8) 'Deflated'\n-01FA4B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01FA4F CRC                   00000000 (0)\n-01FA53 Compressed Size       00000000 (0)\n-01FA57 Uncompressed Size     00000000 (0)\n-01FA5B Filename Length       0041 (65)\n-01FA5D Extra Length          0000 (0)\n-01FA5F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+040506 Compression Method    0008 (8) 'Deflated'\n+040508 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04050C CRC                   00000000 (0)\n+040510 Compressed Size       00000000 (0)\n+040514 Uncompressed Size     00000000 (0)\n+040518 Filename Length       003A (58)\n+04051A Extra Length          0000 (0)\n+04051C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FA5F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4051C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01FAA0 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+040556 PAYLOAD\n \n-01FAE7 DATA DESCRIPTOR       08074B50 (134695760)\n-01FAEB CRC                   EC609363 (3965752163)\n-01FAEF Compressed Size       00000047 (71)\n-01FAF3 Uncompressed Size     00000049 (73)\n+0407DD DATA DESCRIPTOR       08074B50 (134695760)\n+0407E1 CRC                   DBE638BA (3689298106)\n+0407E5 Compressed Size       00000287 (647)\n+0407E9 Uncompressed Size     00000518 (1304)\n \n-01FAF7 LOCAL HEADER #227     04034B50 (67324752)\n-01FAFB Extract Zip Spec      14 (20) '2.0'\n-01FAFC Extract OS            00 (0) 'MS-DOS'\n-01FAFD General Purpose Flag  0808 (2056)\n+0407ED LOCAL HEADER #227     04034B50 (67324752)\n+0407F1 Extract Zip Spec      14 (20) '2.0'\n+0407F2 Extract OS            00 (0) 'MS-DOS'\n+0407F3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01FAFF Compression Method    0008 (8) 'Deflated'\n-01FB01 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01FB05 CRC                   00000000 (0)\n-01FB09 Compressed Size       00000000 (0)\n-01FB0D Uncompressed Size     00000000 (0)\n-01FB11 Filename Length       0040 (64)\n-01FB13 Extra Length          0000 (0)\n-01FB15 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0407F5 Compression Method    0008 (8) 'Deflated'\n+0407F7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0407FB CRC                   00000000 (0)\n+0407FF Compressed Size       00000000 (0)\n+040803 Uncompressed Size     00000000 (0)\n+040807 Filename Length       0041 (65)\n+040809 Extra Length          0000 (0)\n+04080B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FB15: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4080B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01FB55 PAYLOAD               XX\n+04084C PAYLOAD\n \n-01FB57 DATA DESCRIPTOR       08074B50 (134695760)\n-01FB5B CRC                   00000000 (0)\n-01FB5F Compressed Size       00000002 (2)\n-01FB63 Uncompressed Size     00000000 (0)\n+040EA9 DATA DESCRIPTOR       08074B50 (134695760)\n+040EAD CRC                   4263898A (1113819530)\n+040EB1 Compressed Size       0000065D (1629)\n+040EB5 Uncompressed Size     00001420 (5152)\n \n-01FB67 LOCAL HEADER #228     04034B50 (67324752)\n-01FB6B Extract Zip Spec      14 (20) '2.0'\n-01FB6C Extract OS            00 (0) 'MS-DOS'\n-01FB6D General Purpose Flag  0808 (2056)\n+040EB9 LOCAL HEADER #228     04034B50 (67324752)\n+040EBD Extract Zip Spec      14 (20) '2.0'\n+040EBE Extract OS            00 (0) 'MS-DOS'\n+040EBF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01FB6F Compression Method    0008 (8) 'Deflated'\n-01FB71 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01FB75 CRC                   00000000 (0)\n-01FB79 Compressed Size       00000000 (0)\n-01FB7D Uncompressed Size     00000000 (0)\n-01FB81 Filename Length       0047 (71)\n-01FB83 Extra Length          0000 (0)\n-01FB85 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+040EC1 Compression Method    0008 (8) 'Deflated'\n+040EC3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+040EC7 CRC                   00000000 (0)\n+040ECB Compressed Size       00000000 (0)\n+040ECF Uncompressed Size     00000000 (0)\n+040ED3 Filename Length       0036 (54)\n+040ED5 Extra Length          0000 (0)\n+040ED7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FB85: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x40ED7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01FBCC PAYLOAD\n+040F0D PAYLOAD\n \n-01FF19 DATA DESCRIPTOR       08074B50 (134695760)\n-01FF1D CRC                   6E02A698 (1845667480)\n-01FF21 Compressed Size       0000034D (845)\n-01FF25 Uncompressed Size     0000086B (2155)\n+0414F2 DATA DESCRIPTOR       08074B50 (134695760)\n+0414F6 CRC                   61647F39 (1633976121)\n+0414FA Compressed Size       000005E5 (1509)\n+0414FE Uncompressed Size     0000187C (6268)\n \n-01FF29 LOCAL HEADER #229     04034B50 (67324752)\n-01FF2D Extract Zip Spec      14 (20) '2.0'\n-01FF2E Extract OS            00 (0) 'MS-DOS'\n-01FF2F General Purpose Flag  0808 (2056)\n+041502 LOCAL HEADER #229     04034B50 (67324752)\n+041506 Extract Zip Spec      14 (20) '2.0'\n+041507 Extract OS            00 (0) 'MS-DOS'\n+041508 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01FF31 Compression Method    0008 (8) 'Deflated'\n-01FF33 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-01FF37 CRC                   00000000 (0)\n-01FF3B Compressed Size       00000000 (0)\n-01FF3F Uncompressed Size     00000000 (0)\n-01FF43 Filename Length       004E (78)\n-01FF45 Extra Length          0000 (0)\n-01FF47 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04150A Compression Method    0008 (8) 'Deflated'\n+04150C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+041510 CRC                   00000000 (0)\n+041514 Compressed Size       00000000 (0)\n+041518 Uncompressed Size     00000000 (0)\n+04151C Filename Length       0039 (57)\n+04151E Extra Length          0000 (0)\n+041520 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FF47: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x41520: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-01FF95 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+041559 PAYLOAD\n \n-01FFE5 DATA DESCRIPTOR       08074B50 (134695760)\n-01FFE9 CRC                   15F7279D (368519069)\n-01FFED Compressed Size       00000050 (80)\n-01FFF1 Uncompressed Size     00000056 (86)\n+041803 DATA DESCRIPTOR       08074B50 (134695760)\n+041807 CRC                   48FD2377 (1224549239)\n+04180B Compressed Size       000002AA (682)\n+04180F Uncompressed Size     00000559 (1369)\n \n-01FFF5 LOCAL HEADER #230     04034B50 (67324752)\n-01FFF9 Extract Zip Spec      14 (20) '2.0'\n-01FFFA Extract OS            00 (0) 'MS-DOS'\n-01FFFB General Purpose Flag  0808 (2056)\n+041813 LOCAL HEADER #230     04034B50 (67324752)\n+041817 Extract Zip Spec      14 (20) '2.0'\n+041818 Extract OS            00 (0) 'MS-DOS'\n+041819 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-01FFFD Compression Method    0008 (8) 'Deflated'\n-01FFFF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-020003 CRC                   00000000 (0)\n-020007 Compressed Size       00000000 (0)\n-02000B Uncompressed Size     00000000 (0)\n-02000F Filename Length       003C (60)\n-020011 Extra Length          0000 (0)\n-020013 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04181B Compression Method    0008 (8) 'Deflated'\n+04181D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+041821 CRC                   00000000 (0)\n+041825 Compressed Size       00000000 (0)\n+041829 Uncompressed Size     00000000 (0)\n+04182D Filename Length       0040 (64)\n+04182F Extra Length          0000 (0)\n+041831 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20013: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x41831: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02004F PAYLOAD               XX\n+041871 PAYLOAD\n \n-020051 DATA DESCRIPTOR       08074B50 (134695760)\n-020055 CRC                   00000000 (0)\n-020059 Compressed Size       00000002 (2)\n-02005D Uncompressed Size     00000000 (0)\n+042035 DATA DESCRIPTOR       08074B50 (134695760)\n+042039 CRC                   DAA0DBC8 (3667975112)\n+04203D Compressed Size       000007C4 (1988)\n+042041 Uncompressed Size     00001AD7 (6871)\n \n-020061 LOCAL HEADER #231     04034B50 (67324752)\n-020065 Extract Zip Spec      14 (20) '2.0'\n-020066 Extract OS            00 (0) 'MS-DOS'\n-020067 General Purpose Flag  0808 (2056)\n+042045 LOCAL HEADER #231     04034B50 (67324752)\n+042049 Extract Zip Spec      14 (20) '2.0'\n+04204A Extract OS            00 (0) 'MS-DOS'\n+04204B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-020069 Compression Method    0008 (8) 'Deflated'\n-02006B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02006F CRC                   00000000 (0)\n-020073 Compressed Size       00000000 (0)\n-020077 Uncompressed Size     00000000 (0)\n-02007B Filename Length       0043 (67)\n-02007D Extra Length          0000 (0)\n-02007F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04204D Compression Method    0008 (8) 'Deflated'\n+04204F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+042053 CRC                   00000000 (0)\n+042057 Compressed Size       00000000 (0)\n+04205B Uncompressed Size     00000000 (0)\n+04205F Filename Length       0039 (57)\n+042061 Extra Length          0000 (0)\n+042063 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2007F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x42063: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0200C2 PAYLOAD\n+04209C PAYLOAD\n \n-02043D DATA DESCRIPTOR       08074B50 (134695760)\n-020441 CRC                   7F9CF02D (2140991533)\n-020445 Compressed Size       0000037B (891)\n-020449 Uncompressed Size     0000094F (2383)\n+042345 DATA DESCRIPTOR       08074B50 (134695760)\n+042349 CRC                   887DA686 (2289936006)\n+04234D Compressed Size       000002A9 (681)\n+042351 Uncompressed Size     00000559 (1369)\n \n-02044D LOCAL HEADER #232     04034B50 (67324752)\n-020451 Extract Zip Spec      14 (20) '2.0'\n-020452 Extract OS            00 (0) 'MS-DOS'\n-020453 General Purpose Flag  0808 (2056)\n+042355 LOCAL HEADER #232     04034B50 (67324752)\n+042359 Extract Zip Spec      14 (20) '2.0'\n+04235A Extract OS            00 (0) 'MS-DOS'\n+04235B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-020455 Compression Method    0008 (8) 'Deflated'\n-020457 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02045B CRC                   00000000 (0)\n-02045F Compressed Size       00000000 (0)\n-020463 Uncompressed Size     00000000 (0)\n-020467 Filename Length       004A (74)\n-020469 Extra Length          0000 (0)\n-02046B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04235D Compression Method    0008 (8) 'Deflated'\n+04235F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+042363 CRC                   00000000 (0)\n+042367 Compressed Size       00000000 (0)\n+04236B Uncompressed Size     00000000 (0)\n+04236F Filename Length       0040 (64)\n+042371 Extra Length          0000 (0)\n+042373 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2046B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x42373: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0204B5 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0423B3 PAYLOAD\n \n-020501 DATA DESCRIPTOR       08074B50 (134695760)\n-020505 CRC                   3794C7CD (932497357)\n-020509 Compressed Size       0000004C (76)\n-02050D Uncompressed Size     00000052 (82)\n+04285E DATA DESCRIPTOR       08074B50 (134695760)\n+042862 CRC                   A7345C3C (2805226556)\n+042866 Compressed Size       000004AB (1195)\n+04286A Uncompressed Size     00000B51 (2897)\n \n-020511 LOCAL HEADER #233     04034B50 (67324752)\n-020515 Extract Zip Spec      14 (20) '2.0'\n-020516 Extract OS            00 (0) 'MS-DOS'\n-020517 General Purpose Flag  0808 (2056)\n+04286E LOCAL HEADER #233     04034B50 (67324752)\n+042872 Extract Zip Spec      14 (20) '2.0'\n+042873 Extract OS            00 (0) 'MS-DOS'\n+042874 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-020519 Compression Method    0008 (8) 'Deflated'\n-02051B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02051F CRC                   00000000 (0)\n-020523 Compressed Size       00000000 (0)\n-020527 Uncompressed Size     00000000 (0)\n-02052B Filename Length       003D (61)\n-02052D Extra Length          0000 (0)\n-02052F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+042876 Compression Method    0008 (8) 'Deflated'\n+042878 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04287C CRC                   00000000 (0)\n+042880 Compressed Size       00000000 (0)\n+042884 Uncompressed Size     00000000 (0)\n+042888 Filename Length       0039 (57)\n+04288A Extra Length          0000 (0)\n+04288C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2052F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4288C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02056C PAYLOAD               XX\n+0428C5 PAYLOAD\n \n-02056E DATA DESCRIPTOR       08074B50 (134695760)\n-020572 CRC                   00000000 (0)\n-020576 Compressed Size       00000002 (2)\n-02057A Uncompressed Size     00000000 (0)\n+042B6E DATA DESCRIPTOR       08074B50 (134695760)\n+042B72 CRC                   C412C0D3 (3289563347)\n+042B76 Compressed Size       000002A9 (681)\n+042B7A Uncompressed Size     00000559 (1369)\n \n-02057E LOCAL HEADER #234     04034B50 (67324752)\n-020582 Extract Zip Spec      14 (20) '2.0'\n-020583 Extract OS            00 (0) 'MS-DOS'\n-020584 General Purpose Flag  0808 (2056)\n+042B7E LOCAL HEADER #234     04034B50 (67324752)\n+042B82 Extract Zip Spec      14 (20) '2.0'\n+042B83 Extract OS            00 (0) 'MS-DOS'\n+042B84 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-020586 Compression Method    0008 (8) 'Deflated'\n-020588 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02058C CRC                   00000000 (0)\n-020590 Compressed Size       00000000 (0)\n-020594 Uncompressed Size     00000000 (0)\n-020598 Filename Length       0044 (68)\n-02059A Extra Length          0000 (0)\n-02059C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+042B86 Compression Method    0008 (8) 'Deflated'\n+042B88 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+042B8C CRC                   00000000 (0)\n+042B90 Compressed Size       00000000 (0)\n+042B94 Uncompressed Size     00000000 (0)\n+042B98 Filename Length       0040 (64)\n+042B9A Extra Length          0000 (0)\n+042B9C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2059C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x42B9C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0205E0 PAYLOAD\n+042BDC PAYLOAD\n \n-020926 DATA DESCRIPTOR       08074B50 (134695760)\n-02092A CRC                   4F6EDF6B (1332666219)\n-02092E Compressed Size       00000346 (838)\n-020932 Uncompressed Size     00000864 (2148)\n+04330C DATA DESCRIPTOR       08074B50 (134695760)\n+043310 CRC                   7A3E3AF6 (2050898678)\n+043314 Compressed Size       00000730 (1840)\n+043318 Uncompressed Size     0000158D (5517)\n \n-020936 LOCAL HEADER #235     04034B50 (67324752)\n-02093A Extract Zip Spec      14 (20) '2.0'\n-02093B Extract OS            00 (0) 'MS-DOS'\n-02093C General Purpose Flag  0808 (2056)\n+04331C LOCAL HEADER #235     04034B50 (67324752)\n+043320 Extract Zip Spec      14 (20) '2.0'\n+043321 Extract OS            00 (0) 'MS-DOS'\n+043322 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02093E Compression Method    0008 (8) 'Deflated'\n-020940 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-020944 CRC                   00000000 (0)\n-020948 Compressed Size       00000000 (0)\n-02094C Uncompressed Size     00000000 (0)\n-020950 Filename Length       004B (75)\n-020952 Extra Length          0000 (0)\n-020954 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+043324 Compression Method    0008 (8) 'Deflated'\n+043326 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04332A CRC                   00000000 (0)\n+04332E Compressed Size       00000000 (0)\n+043332 Uncompressed Size     00000000 (0)\n+043336 Filename Length       0039 (57)\n+043338 Extra Length          0000 (0)\n+04333A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20954: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4333A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02099F PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+043373 PAYLOAD\n \n-0209ED DATA DESCRIPTOR       08074B50 (134695760)\n-0209F1 CRC                   B0326E74 (2956095092)\n-0209F5 Compressed Size       0000004E (78)\n-0209F9 Uncompressed Size     00000053 (83)\n+04361D DATA DESCRIPTOR       08074B50 (134695760)\n+043621 CRC                   68A40EAC (1755582124)\n+043625 Compressed Size       000002AA (682)\n+043629 Uncompressed Size     00000559 (1369)\n \n-0209FD LOCAL HEADER #236     04034B50 (67324752)\n-020A01 Extract Zip Spec      14 (20) '2.0'\n-020A02 Extract OS            00 (0) 'MS-DOS'\n-020A03 General Purpose Flag  0808 (2056)\n+04362D LOCAL HEADER #236     04034B50 (67324752)\n+043631 Extract Zip Spec      14 (20) '2.0'\n+043632 Extract OS            00 (0) 'MS-DOS'\n+043633 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-020A05 Compression Method    0008 (8) 'Deflated'\n-020A07 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-020A0B CRC                   00000000 (0)\n-020A0F Compressed Size       00000000 (0)\n-020A13 Uncompressed Size     00000000 (0)\n-020A17 Filename Length       003B (59)\n-020A19 Extra Length          0000 (0)\n-020A1B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+043635 Compression Method    0008 (8) 'Deflated'\n+043637 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04363B CRC                   00000000 (0)\n+04363F Compressed Size       00000000 (0)\n+043643 Uncompressed Size     00000000 (0)\n+043647 Filename Length       0040 (64)\n+043649 Extra Length          0000 (0)\n+04364B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20A1B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4364B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-020A56 PAYLOAD               XX\n+04368B PAYLOAD\n \n-020A58 DATA DESCRIPTOR       08074B50 (134695760)\n-020A5C CRC                   00000000 (0)\n-020A60 Compressed Size       00000002 (2)\n-020A64 Uncompressed Size     00000000 (0)\n+043A7C DATA DESCRIPTOR       08074B50 (134695760)\n+043A80 CRC                   DEA6E3F0 (3735479280)\n+043A84 Compressed Size       000003F1 (1009)\n+043A88 Uncompressed Size     00000942 (2370)\n \n-020A68 LOCAL HEADER #237     04034B50 (67324752)\n-020A6C Extract Zip Spec      14 (20) '2.0'\n-020A6D Extract OS            00 (0) 'MS-DOS'\n-020A6E General Purpose Flag  0808 (2056)\n+043A8C LOCAL HEADER #237     04034B50 (67324752)\n+043A90 Extract Zip Spec      14 (20) '2.0'\n+043A91 Extract OS            00 (0) 'MS-DOS'\n+043A92 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-020A70 Compression Method    0008 (8) 'Deflated'\n-020A72 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-020A76 CRC                   00000000 (0)\n-020A7A Compressed Size       00000000 (0)\n-020A7E Uncompressed Size     00000000 (0)\n-020A82 Filename Length       0042 (66)\n-020A84 Extra Length          0000 (0)\n-020A86 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+043A94 Compression Method    0008 (8) 'Deflated'\n+043A96 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+043A9A CRC                   00000000 (0)\n+043A9E Compressed Size       00000000 (0)\n+043AA2 Uncompressed Size     00000000 (0)\n+043AA6 Filename Length       0038 (56)\n+043AA8 Extra Length          0000 (0)\n+043AAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20A86: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x43AAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-020AC8 PAYLOAD\n+043AE2 PAYLOAD\n \n-020E8F DATA DESCRIPTOR       08074B50 (134695760)\n-020E93 CRC                   FD7A58FE (4252653822)\n-020E97 Compressed Size       000003C7 (967)\n-020E9B Uncompressed Size     00000A63 (2659)\n+043D8B DATA DESCRIPTOR       08074B50 (134695760)\n+043D8F CRC                   1E103695 (504379029)\n+043D93 Compressed Size       000002A9 (681)\n+043D97 Uncompressed Size     00000555 (1365)\n \n-020E9F LOCAL HEADER #238     04034B50 (67324752)\n-020EA3 Extract Zip Spec      14 (20) '2.0'\n-020EA4 Extract OS            00 (0) 'MS-DOS'\n-020EA5 General Purpose Flag  0808 (2056)\n+043D9B LOCAL HEADER #238     04034B50 (67324752)\n+043D9F Extract Zip Spec      14 (20) '2.0'\n+043DA0 Extract OS            00 (0) 'MS-DOS'\n+043DA1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-020EA7 Compression Method    0008 (8) 'Deflated'\n-020EA9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-020EAD CRC                   00000000 (0)\n-020EB1 Compressed Size       00000000 (0)\n-020EB5 Uncompressed Size     00000000 (0)\n-020EB9 Filename Length       0049 (73)\n-020EBB Extra Length          0000 (0)\n-020EBD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+043DA3 Compression Method    0008 (8) 'Deflated'\n+043DA5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+043DA9 CRC                   00000000 (0)\n+043DAD Compressed Size       00000000 (0)\n+043DB1 Uncompressed Size     00000000 (0)\n+043DB5 Filename Length       003F (63)\n+043DB7 Extra Length          0000 (0)\n+043DB9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20EBD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x43DB9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-020F06 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+043DF8 PAYLOAD\n \n-020F52 DATA DESCRIPTOR       08074B50 (134695760)\n-020F56 CRC                   4B310E73 (1261506163)\n-020F5A Compressed Size       0000004C (76)\n-020F5E Uncompressed Size     00000051 (81)\n+044533 DATA DESCRIPTOR       08074B50 (134695760)\n+044537 CRC                   0384CEE3 (59035363)\n+04453B Compressed Size       0000073B (1851)\n+04453F Uncompressed Size     0000153C (5436)\n \n-020F62 LOCAL HEADER #239     04034B50 (67324752)\n-020F66 Extract Zip Spec      14 (20) '2.0'\n-020F67 Extract OS            00 (0) 'MS-DOS'\n-020F68 General Purpose Flag  0808 (2056)\n+044543 LOCAL HEADER #239     04034B50 (67324752)\n+044547 Extract Zip Spec      14 (20) '2.0'\n+044548 Extract OS            00 (0) 'MS-DOS'\n+044549 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-020F6A Compression Method    0008 (8) 'Deflated'\n-020F6C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-020F70 CRC                   00000000 (0)\n-020F74 Compressed Size       00000000 (0)\n-020F78 Uncompressed Size     00000000 (0)\n-020F7C Filename Length       003C (60)\n-020F7E Extra Length          0000 (0)\n-020F80 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04454B Compression Method    0008 (8) 'Deflated'\n+04454D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+044551 CRC                   00000000 (0)\n+044555 Compressed Size       00000000 (0)\n+044559 Uncompressed Size     00000000 (0)\n+04455D Filename Length       003A (58)\n+04455F Extra Length          0000 (0)\n+044561 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20F80: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x44561: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-020FBC PAYLOAD               XX\n+04459B PAYLOAD\n \n-020FBE DATA DESCRIPTOR       08074B50 (134695760)\n-020FC2 CRC                   00000000 (0)\n-020FC6 Compressed Size       00000002 (2)\n-020FCA Uncompressed Size     00000000 (0)\n+044832 DATA DESCRIPTOR       08074B50 (134695760)\n+044836 CRC                   A4DAB8AE (2765797550)\n+04483A Compressed Size       00000297 (663)\n+04483E Uncompressed Size     0000052C (1324)\n \n-020FCE LOCAL HEADER #240     04034B50 (67324752)\n-020FD2 Extract Zip Spec      14 (20) '2.0'\n-020FD3 Extract OS            00 (0) 'MS-DOS'\n-020FD4 General Purpose Flag  0808 (2056)\n+044842 LOCAL HEADER #240     04034B50 (67324752)\n+044846 Extract Zip Spec      14 (20) '2.0'\n+044847 Extract OS            00 (0) 'MS-DOS'\n+044848 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-020FD6 Compression Method    0008 (8) 'Deflated'\n-020FD8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-020FDC CRC                   00000000 (0)\n-020FE0 Compressed Size       00000000 (0)\n-020FE4 Uncompressed Size     00000000 (0)\n-020FE8 Filename Length       0043 (67)\n-020FEA Extra Length          0000 (0)\n-020FEC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04484A Compression Method    0008 (8) 'Deflated'\n+04484C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+044850 CRC                   00000000 (0)\n+044854 Compressed Size       00000000 (0)\n+044858 Uncompressed Size     00000000 (0)\n+04485C Filename Length       0041 (65)\n+04485E Extra Length          0000 (0)\n+044860 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20FEC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x44860: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02102F PAYLOAD\n+0448A1 PAYLOAD\n \n-021361 DATA DESCRIPTOR       08074B50 (134695760)\n-021365 CRC                   FC584130 (4233642288)\n-021369 Compressed Size       00000332 (818)\n-02136D Uncompressed Size     000007E7 (2023)\n+04515F DATA DESCRIPTOR       08074B50 (134695760)\n+045163 CRC                   FAE0CB59 (4209036121)\n+045167 Compressed Size       000008BE (2238)\n+04516B Uncompressed Size     00001EA2 (7842)\n \n-021371 LOCAL HEADER #241     04034B50 (67324752)\n-021375 Extract Zip Spec      14 (20) '2.0'\n-021376 Extract OS            00 (0) 'MS-DOS'\n-021377 General Purpose Flag  0808 (2056)\n+04516F LOCAL HEADER #241     04034B50 (67324752)\n+045173 Extract Zip Spec      14 (20) '2.0'\n+045174 Extract OS            00 (0) 'MS-DOS'\n+045175 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-021379 Compression Method    0008 (8) 'Deflated'\n-02137B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02137F CRC                   00000000 (0)\n-021383 Compressed Size       00000000 (0)\n-021387 Uncompressed Size     00000000 (0)\n-02138B Filename Length       004A (74)\n-02138D Extra Length          0000 (0)\n-02138F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+045177 Compression Method    0008 (8) 'Deflated'\n+045179 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04517D CRC                   00000000 (0)\n+045181 Compressed Size       00000000 (0)\n+045185 Uncompressed Size     00000000 (0)\n+045189 Filename Length       0043 (67)\n+04518B Extra Length          0000 (0)\n+04518D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2138F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4518D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0213D9 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0451D0 PAYLOAD\n \n-021426 DATA DESCRIPTOR       08074B50 (134695760)\n-02142A CRC                   B6221A00 (3055688192)\n-02142E Compressed Size       0000004D (77)\n-021432 Uncompressed Size     00000052 (82)\n+045443 DATA DESCRIPTOR       08074B50 (134695760)\n+045447 CRC                   B9BB0148 (3116040520)\n+04544B Compressed Size       00000273 (627)\n+04544F Uncompressed Size     000004AD (1197)\n \n-021436 LOCAL HEADER #242     04034B50 (67324752)\n-02143A Extract Zip Spec      14 (20) '2.0'\n-02143B Extract OS            00 (0) 'MS-DOS'\n-02143C General Purpose Flag  0808 (2056)\n+045453 LOCAL HEADER #242     04034B50 (67324752)\n+045457 Extract Zip Spec      14 (20) '2.0'\n+045458 Extract OS            00 (0) 'MS-DOS'\n+045459 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02143E Compression Method    0008 (8) 'Deflated'\n-021440 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-021444 CRC                   00000000 (0)\n-021448 Compressed Size       00000000 (0)\n-02144C Uncompressed Size     00000000 (0)\n-021450 Filename Length       003F (63)\n-021452 Extra Length          0000 (0)\n-021454 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04545B Compression Method    0008 (8) 'Deflated'\n+04545D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+045461 CRC                   00000000 (0)\n+045465 Compressed Size       00000000 (0)\n+045469 Uncompressed Size     00000000 (0)\n+04546D Filename Length       002F (47)\n+04546F Extra Length          0000 (0)\n+045471 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21454: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x45471: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-021493 PAYLOAD               XX\n+0454A0 PAYLOAD               XX\n \n-021495 DATA DESCRIPTOR       08074B50 (134695760)\n-021499 CRC                   00000000 (0)\n-02149D Compressed Size       00000002 (2)\n-0214A1 Uncompressed Size     00000000 (0)\n+0454A2 DATA DESCRIPTOR       08074B50 (134695760)\n+0454A6 CRC                   00000000 (0)\n+0454AA Compressed Size       00000002 (2)\n+0454AE Uncompressed Size     00000000 (0)\n \n-0214A5 LOCAL HEADER #243     04034B50 (67324752)\n-0214A9 Extract Zip Spec      14 (20) '2.0'\n-0214AA Extract OS            00 (0) 'MS-DOS'\n-0214AB General Purpose Flag  0808 (2056)\n+0454B2 LOCAL HEADER #243     04034B50 (67324752)\n+0454B6 Extract Zip Spec      14 (20) '2.0'\n+0454B7 Extract OS            00 (0) 'MS-DOS'\n+0454B8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0214AD Compression Method    0008 (8) 'Deflated'\n-0214AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0214B3 CRC                   00000000 (0)\n-0214B7 Compressed Size       00000000 (0)\n-0214BB Uncompressed Size     00000000 (0)\n-0214BF Filename Length       0046 (70)\n-0214C1 Extra Length          0000 (0)\n-0214C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0454BA Compression Method    0008 (8) 'Deflated'\n+0454BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0454C0 CRC                   00000000 (0)\n+0454C4 Compressed Size       00000000 (0)\n+0454C8 Uncompressed Size     00000000 (0)\n+0454CC Filename Length       004E (78)\n+0454CE Extra Length          0000 (0)\n+0454D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x454D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-021509 PAYLOAD\n+04551E PAYLOAD\n \n-021824 DATA DESCRIPTOR       08074B50 (134695760)\n-021828 CRC                   2219CEA0 (572116640)\n-02182C Compressed Size       0000031B (795)\n-021830 Uncompressed Size     0000070E (1806)\n+045786 DATA DESCRIPTOR       08074B50 (134695760)\n+04578A CRC                   381C2681 (941368961)\n+04578E Compressed Size       00000268 (616)\n+045792 Uncompressed Size     0000047E (1150)\n \n-021834 LOCAL HEADER #244     04034B50 (67324752)\n-021838 Extract Zip Spec      14 (20) '2.0'\n-021839 Extract OS            00 (0) 'MS-DOS'\n-02183A General Purpose Flag  0808 (2056)\n+045796 LOCAL HEADER #244     04034B50 (67324752)\n+04579A Extract Zip Spec      14 (20) '2.0'\n+04579B Extract OS            00 (0) 'MS-DOS'\n+04579C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02183C Compression Method    0008 (8) 'Deflated'\n-02183E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-021842 CRC                   00000000 (0)\n-021846 Compressed Size       00000000 (0)\n-02184A Uncompressed Size     00000000 (0)\n-02184E Filename Length       004D (77)\n-021850 Extra Length          0000 (0)\n-021852 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04579E Compression Method    0008 (8) 'Deflated'\n+0457A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0457A4 CRC                   00000000 (0)\n+0457A8 Compressed Size       00000000 (0)\n+0457AC Uncompressed Size     00000000 (0)\n+0457B0 Filename Length       004B (75)\n+0457B2 Extra Length          0000 (0)\n+0457B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21852: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x457B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02189F PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0457FF PAYLOAD\n \n-0218EE DATA DESCRIPTOR       08074B50 (134695760)\n-0218F2 CRC                   B914F821 (3105159201)\n-0218F6 Compressed Size       0000004F (79)\n-0218FA Uncompressed Size     00000055 (85)\n+045B07 DATA DESCRIPTOR       08074B50 (134695760)\n+045B0B CRC                   21012AB4 (553724596)\n+045B0F Compressed Size       00000308 (776)\n+045B13 Uncompressed Size     00000726 (1830)\n \n-0218FE LOCAL HEADER #245     04034B50 (67324752)\n-021902 Extract Zip Spec      14 (20) '2.0'\n-021903 Extract OS            00 (0) 'MS-DOS'\n-021904 General Purpose Flag  0808 (2056)\n+045B17 LOCAL HEADER #245     04034B50 (67324752)\n+045B1B Extract Zip Spec      14 (20) '2.0'\n+045B1C Extract OS            00 (0) 'MS-DOS'\n+045B1D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-021906 Compression Method    0008 (8) 'Deflated'\n-021908 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02190C CRC                   00000000 (0)\n-021910 Compressed Size       00000000 (0)\n-021914 Uncompressed Size     00000000 (0)\n-021918 Filename Length       0012 (18)\n-02191A Extra Length          0000 (0)\n-02191C Filename              'XXXXXXXXXXXXXXXXXX'\n+045B1F Compression Method    0008 (8) 'Deflated'\n+045B21 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+045B25 CRC                   00000000 (0)\n+045B29 Compressed Size       00000000 (0)\n+045B2D Uncompressed Size     00000000 (0)\n+045B31 Filename Length       0041 (65)\n+045B33 Extra Length          0000 (0)\n+045B35 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2191C: Filename 'XXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x45B35: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02192E PAYLOAD               XX\n+045B76 PAYLOAD\n \n-021930 DATA DESCRIPTOR       08074B50 (134695760)\n-021934 CRC                   00000000 (0)\n-021938 Compressed Size       00000002 (2)\n-02193C Uncompressed Size     00000000 (0)\n+04601D DATA DESCRIPTOR       08074B50 (134695760)\n+046021 CRC                   06F39E69 (116629097)\n+046025 Compressed Size       000004A7 (1191)\n+046029 Uncompressed Size     00000D2A (3370)\n \n-021940 LOCAL HEADER #246     04034B50 (67324752)\n-021944 Extract Zip Spec      14 (20) '2.0'\n-021945 Extract OS            00 (0) 'MS-DOS'\n-021946 General Purpose Flag  0808 (2056)\n+04602D LOCAL HEADER #246     04034B50 (67324752)\n+046031 Extract Zip Spec      14 (20) '2.0'\n+046032 Extract OS            00 (0) 'MS-DOS'\n+046033 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-021948 Compression Method    0008 (8) 'Deflated'\n-02194A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02194E CRC                   00000000 (0)\n-021952 Compressed Size       00000000 (0)\n-021956 Uncompressed Size     00000000 (0)\n-02195A Filename Length       0004 (4)\n-02195C Extra Length          0000 (0)\n-02195E Filename              'XXXX'\n+046035 Compression Method    0008 (8) 'Deflated'\n+046037 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04603B CRC                   00000000 (0)\n+04603F Compressed Size       00000000 (0)\n+046043 Uncompressed Size     00000000 (0)\n+046047 Filename Length       0041 (65)\n+046049 Extra Length          0000 (0)\n+04604B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2195E: Filename 'XXXX'\n+# WARNING: Offset 0x4604B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-021962 PAYLOAD               XX\n+04608C PAYLOAD\n \n-021964 DATA DESCRIPTOR       08074B50 (134695760)\n-021968 CRC                   00000000 (0)\n-02196C Compressed Size       00000002 (2)\n-021970 Uncompressed Size     00000000 (0)\n+0462B3 DATA DESCRIPTOR       08074B50 (134695760)\n+0462B7 CRC                   34F1D732 (888264498)\n+0462BB Compressed Size       00000227 (551)\n+0462BF Uncompressed Size     000003D0 (976)\n \n-021974 LOCAL HEADER #247     04034B50 (67324752)\n-021978 Extract Zip Spec      14 (20) '2.0'\n-021979 Extract OS            00 (0) 'MS-DOS'\n-02197A General Purpose Flag  0808 (2056)\n+0462C3 LOCAL HEADER #247     04034B50 (67324752)\n+0462C7 Extract Zip Spec      14 (20) '2.0'\n+0462C8 Extract OS            00 (0) 'MS-DOS'\n+0462C9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02197C Compression Method    0008 (8) 'Deflated'\n-02197E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-021982 CRC                   00000000 (0)\n-021986 Compressed Size       00000000 (0)\n-02198A Uncompressed Size     00000000 (0)\n-02198E Filename Length       000B (11)\n-021990 Extra Length          0000 (0)\n-021992 Filename              'XXXXXXXXXXX'\n+0462CB Compression Method    0008 (8) 'Deflated'\n+0462CD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0462D1 CRC                   00000000 (0)\n+0462D5 Compressed Size       00000000 (0)\n+0462D9 Uncompressed Size     00000000 (0)\n+0462DD Filename Length       002E (46)\n+0462DF Extra Length          0000 (0)\n+0462E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21992: Filename 'XXXXXXXXXXX'\n+# WARNING: Offset 0x462E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02199D PAYLOAD               XX\n+04630F PAYLOAD               XX\n \n-02199F DATA DESCRIPTOR       08074B50 (134695760)\n-0219A3 CRC                   00000000 (0)\n-0219A7 Compressed Size       00000002 (2)\n-0219AB Uncompressed Size     00000000 (0)\n+046311 DATA DESCRIPTOR       08074B50 (134695760)\n+046315 CRC                   00000000 (0)\n+046319 Compressed Size       00000002 (2)\n+04631D Uncompressed Size     00000000 (0)\n \n-0219AF LOCAL HEADER #248     04034B50 (67324752)\n-0219B3 Extract Zip Spec      14 (20) '2.0'\n-0219B4 Extract OS            00 (0) 'MS-DOS'\n-0219B5 General Purpose Flag  0808 (2056)\n+046321 LOCAL HEADER #248     04034B50 (67324752)\n+046325 Extract Zip Spec      14 (20) '2.0'\n+046326 Extract OS            00 (0) 'MS-DOS'\n+046327 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0219B7 Compression Method    0008 (8) 'Deflated'\n-0219B9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0219BD CRC                   00000000 (0)\n-0219C1 Compressed Size       00000000 (0)\n-0219C5 Uncompressed Size     00000000 (0)\n-0219C9 Filename Length       0011 (17)\n-0219CB Extra Length          0000 (0)\n-0219CD Filename              'XXXXXXXXXXXXXXXXX'\n+046329 Compression Method    0008 (8) 'Deflated'\n+04632B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04632F CRC                   00000000 (0)\n+046333 Compressed Size       00000000 (0)\n+046337 Uncompressed Size     00000000 (0)\n+04633B Filename Length       0043 (67)\n+04633D Extra Length          0000 (0)\n+04633F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219CD: Filename 'XXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4633F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0219DE PAYLOAD               XX\n+046382 PAYLOAD\n \n-0219E0 DATA DESCRIPTOR       08074B50 (134695760)\n-0219E4 CRC                   00000000 (0)\n-0219E8 Compressed Size       00000002 (2)\n-0219EC Uncompressed Size     00000000 (0)\n+04663F DATA DESCRIPTOR       08074B50 (134695760)\n+046643 CRC                   5C6630BB (1550201019)\n+046647 Compressed Size       000002BD (701)\n+04664B Uncompressed Size     000005AE (1454)\n \n-0219F0 LOCAL HEADER #249     04034B50 (67324752)\n-0219F4 Extract Zip Spec      14 (20) '2.0'\n-0219F5 Extract OS            00 (0) 'MS-DOS'\n-0219F6 General Purpose Flag  0808 (2056)\n+04664F LOCAL HEADER #249     04034B50 (67324752)\n+046653 Extract Zip Spec      14 (20) '2.0'\n+046654 Extract OS            00 (0) 'MS-DOS'\n+046655 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0219F8 Compression Method    0008 (8) 'Deflated'\n-0219FA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0219FE CRC                   00000000 (0)\n-021A02 Compressed Size       00000000 (0)\n-021A06 Uncompressed Size     00000000 (0)\n-021A0A Filename Length       0018 (24)\n-021A0C Extra Length          0000 (0)\n-021A0E Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+046657 Compression Method    0008 (8) 'Deflated'\n+046659 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04665D CRC                   00000000 (0)\n+046661 Compressed Size       00000000 (0)\n+046665 Uncompressed Size     00000000 (0)\n+046669 Filename Length       004A (74)\n+04666B Extra Length          0000 (0)\n+04666D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A0E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4666D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-021A26 PAYLOAD               XX\n+0466B7 PAYLOAD\n \n-021A28 DATA DESCRIPTOR       08074B50 (134695760)\n-021A2C CRC                   00000000 (0)\n-021A30 Compressed Size       00000002 (2)\n-021A34 Uncompressed Size     00000000 (0)\n+047194 DATA DESCRIPTOR       08074B50 (134695760)\n+047198 CRC                   CAF28C51 (3404893265)\n+04719C Compressed Size       00000ADD (2781)\n+0471A0 Uncompressed Size     00002CF4 (11508)\n \n-021A38 LOCAL HEADER #250     04034B50 (67324752)\n-021A3C Extract Zip Spec      14 (20) '2.0'\n-021A3D Extract OS            00 (0) 'MS-DOS'\n-021A3E General Purpose Flag  0808 (2056)\n+0471A4 LOCAL HEADER #250     04034B50 (67324752)\n+0471A8 Extract Zip Spec      14 (20) '2.0'\n+0471A9 Extract OS            00 (0) 'MS-DOS'\n+0471AA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-021A40 Compression Method    0008 (8) 'Deflated'\n-021A42 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-021A46 CRC                   00000000 (0)\n-021A4A Compressed Size       00000000 (0)\n-021A4E Uncompressed Size     00000000 (0)\n-021A52 Filename Length       002E (46)\n-021A54 Extra Length          0000 (0)\n-021A56 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0471AC Compression Method    0008 (8) 'Deflated'\n+0471AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0471B2 CRC                   00000000 (0)\n+0471B6 Compressed Size       00000000 (0)\n+0471BA Uncompressed Size     00000000 (0)\n+0471BE Filename Length       002D (45)\n+0471C0 Extra Length          0000 (0)\n+0471C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A56: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x471C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-021A84 PAYLOAD\n+0471EF PAYLOAD               XX\n \n-021CE6 DATA DESCRIPTOR       08074B50 (134695760)\n-021CEA CRC                   44C14167 (1153515879)\n-021CEE Compressed Size       00000262 (610)\n-021CF2 Uncompressed Size     00000471 (1137)\n+0471F1 DATA DESCRIPTOR       08074B50 (134695760)\n+0471F5 CRC                   00000000 (0)\n+0471F9 Compressed Size       00000002 (2)\n+0471FD Uncompressed Size     00000000 (0)\n \n-021CF6 LOCAL HEADER #251     04034B50 (67324752)\n-021CFA Extract Zip Spec      14 (20) '2.0'\n-021CFB Extract OS            00 (0) 'MS-DOS'\n-021CFC General Purpose Flag  0808 (2056)\n+047201 LOCAL HEADER #251     04034B50 (67324752)\n+047205 Extract Zip Spec      14 (20) '2.0'\n+047206 Extract OS            00 (0) 'MS-DOS'\n+047207 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-021CFE Compression Method    0008 (8) 'Deflated'\n-021D00 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-021D04 CRC                   00000000 (0)\n-021D08 Compressed Size       00000000 (0)\n-021D0C Uncompressed Size     00000000 (0)\n-021D10 Filename Length       0030 (48)\n-021D12 Extra Length          0000 (0)\n-021D14 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+047209 Compression Method    0008 (8) 'Deflated'\n+04720B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04720F CRC                   00000000 (0)\n+047213 Compressed Size       00000000 (0)\n+047217 Uncompressed Size     00000000 (0)\n+04721B Filename Length       0041 (65)\n+04721D Extra Length          0000 (0)\n+04721F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D14: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4721F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-021D44 PAYLOAD\n+047260 PAYLOAD\n \n-021F98 DATA DESCRIPTOR       08074B50 (134695760)\n-021F9C CRC                   F5917ED9 (4119953113)\n-021FA0 Compressed Size       00000254 (596)\n-021FA4 Uncompressed Size     0000045C (1116)\n+047856 DATA DESCRIPTOR       08074B50 (134695760)\n+04785A CRC                   36D0D661 (919656033)\n+04785E Compressed Size       000005F6 (1526)\n+047862 Uncompressed Size     0000154C (5452)\n \n-021FA8 LOCAL HEADER #252     04034B50 (67324752)\n-021FAC Extract Zip Spec      14 (20) '2.0'\n-021FAD Extract OS            00 (0) 'MS-DOS'\n-021FAE General Purpose Flag  0808 (2056)\n+047866 LOCAL HEADER #252     04034B50 (67324752)\n+04786A Extract Zip Spec      14 (20) '2.0'\n+04786B Extract OS            00 (0) 'MS-DOS'\n+04786C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-021FB0 Compression Method    0008 (8) 'Deflated'\n-021FB2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-021FB6 CRC                   00000000 (0)\n-021FBA Compressed Size       00000000 (0)\n-021FBE Uncompressed Size     00000000 (0)\n-021FC2 Filename Length       002E (46)\n-021FC4 Extra Length          0000 (0)\n-021FC6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04786E Compression Method    0008 (8) 'Deflated'\n+047870 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+047874 CRC                   00000000 (0)\n+047878 Compressed Size       00000000 (0)\n+04787C Uncompressed Size     00000000 (0)\n+047880 Filename Length       0044 (68)\n+047882 Extra Length          0000 (0)\n+047884 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21FC6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x47884: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-021FF4 PAYLOAD\n+0478C8 PAYLOAD\n \n-0225F9 DATA DESCRIPTOR       08074B50 (134695760)\n-0225FD CRC                   7CE2D61E (2095240734)\n-022601 Compressed Size       00000605 (1541)\n-022605 Uncompressed Size     0000131F (4895)\n+048146 DATA DESCRIPTOR       08074B50 (134695760)\n+04814A CRC                   A2C265E1 (2730649057)\n+04814E Compressed Size       0000087E (2174)\n+048152 Uncompressed Size     00001D45 (7493)\n \n-022609 LOCAL HEADER #253     04034B50 (67324752)\n-02260D Extract Zip Spec      14 (20) '2.0'\n-02260E Extract OS            00 (0) 'MS-DOS'\n-02260F General Purpose Flag  0808 (2056)\n+048156 LOCAL HEADER #253     04034B50 (67324752)\n+04815A Extract Zip Spec      14 (20) '2.0'\n+04815B Extract OS            00 (0) 'MS-DOS'\n+04815C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-022611 Compression Method    0008 (8) 'Deflated'\n-022613 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-022617 CRC                   00000000 (0)\n-02261B Compressed Size       00000000 (0)\n-02261F Uncompressed Size     00000000 (0)\n-022623 Filename Length       002C (44)\n-022625 Extra Length          0000 (0)\n-022627 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04815E Compression Method    0008 (8) 'Deflated'\n+048160 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+048164 CRC                   00000000 (0)\n+048168 Compressed Size       00000000 (0)\n+04816C Uncompressed Size     00000000 (0)\n+048170 Filename Length       0044 (68)\n+048172 Extra Length          0000 (0)\n+048174 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22627: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x48174: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-022653 PAYLOAD\n+0481B8 PAYLOAD\n \n-023DE1 DATA DESCRIPTOR       08074B50 (134695760)\n-023DE5 CRC                   5F946D70 (1603562864)\n-023DE9 Compressed Size       0000178E (6030)\n-023DED Uncompressed Size     00005E41 (24129)\n+048462 DATA DESCRIPTOR       08074B50 (134695760)\n+048466 CRC                   AEA9AD13 (2930355475)\n+04846A Compressed Size       000002AA (682)\n+04846E Uncompressed Size     000005BA (1466)\n \n-023DF1 LOCAL HEADER #254     04034B50 (67324752)\n-023DF5 Extract Zip Spec      14 (20) '2.0'\n-023DF6 Extract OS            00 (0) 'MS-DOS'\n-023DF7 General Purpose Flag  0808 (2056)\n+048472 LOCAL HEADER #254     04034B50 (67324752)\n+048476 Extract Zip Spec      14 (20) '2.0'\n+048477 Extract OS            00 (0) 'MS-DOS'\n+048478 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-023DF9 Compression Method    0008 (8) 'Deflated'\n-023DFB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-023DFF CRC                   00000000 (0)\n-023E03 Compressed Size       00000000 (0)\n-023E07 Uncompressed Size     00000000 (0)\n-023E0B Filename Length       002A (42)\n-023E0D Extra Length          0000 (0)\n-023E0F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04847A Compression Method    0008 (8) 'Deflated'\n+04847C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+048480 CRC                   00000000 (0)\n+048484 Compressed Size       00000000 (0)\n+048488 Uncompressed Size     00000000 (0)\n+04848C Filename Length       0058 (88)\n+04848E Extra Length          0000 (0)\n+048490 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E0F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x48490: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-023E39 PAYLOAD\n+0484E8 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-0259B2 DATA DESCRIPTOR       08074B50 (134695760)\n-0259B6 CRC                   CBF03B71 (3421518705)\n-0259BA Compressed Size       00001B79 (7033)\n-0259BE Uncompressed Size     00007DD7 (32215)\n+048531 DATA DESCRIPTOR       08074B50 (134695760)\n+048535 CRC                   AE0B59B2 (2919979442)\n+048539 Compressed Size       00000049 (73)\n+04853D Uncompressed Size     00000053 (83)\n \n-0259C2 LOCAL HEADER #255     04034B50 (67324752)\n-0259C6 Extract Zip Spec      14 (20) '2.0'\n-0259C7 Extract OS            00 (0) 'MS-DOS'\n-0259C8 General Purpose Flag  0808 (2056)\n+048541 LOCAL HEADER #255     04034B50 (67324752)\n+048545 Extract Zip Spec      14 (20) '2.0'\n+048546 Extract OS            00 (0) 'MS-DOS'\n+048547 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0259CA Compression Method    0008 (8) 'Deflated'\n-0259CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0259D0 CRC                   00000000 (0)\n-0259D4 Compressed Size       00000000 (0)\n-0259D8 Uncompressed Size     00000000 (0)\n-0259DC Filename Length       0022 (34)\n-0259DE Extra Length          0000 (0)\n-0259E0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+048549 Compression Method    0008 (8) 'Deflated'\n+04854B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04854F CRC                   00000000 (0)\n+048553 Compressed Size       00000000 (0)\n+048557 Uncompressed Size     00000000 (0)\n+04855B Filename Length       0053 (83)\n+04855D Extra Length          0000 (0)\n+04855F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x259E0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4855F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-025A02 PAYLOAD               XX\n+0485B2 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-025A04 DATA DESCRIPTOR       08074B50 (134695760)\n-025A08 CRC                   00000000 (0)\n-025A0C Compressed Size       00000002 (2)\n-025A10 Uncompressed Size     00000000 (0)\n+04860B DATA DESCRIPTOR       08074B50 (134695760)\n+04860F CRC                   7F3BA707 (2134615815)\n+048613 Compressed Size       00000059 (89)\n+048617 Uncompressed Size     000000A3 (163)\n \n-025A14 LOCAL HEADER #256     04034B50 (67324752)\n-025A18 Extract Zip Spec      14 (20) '2.0'\n-025A19 Extract OS            00 (0) 'MS-DOS'\n-025A1A General Purpose Flag  0808 (2056)\n+04861B LOCAL HEADER #256     04034B50 (67324752)\n+04861F Extract Zip Spec      14 (20) '2.0'\n+048620 Extract OS            00 (0) 'MS-DOS'\n+048621 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-025A1C Compression Method    0008 (8) 'Deflated'\n-025A1E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-025A22 CRC                   00000000 (0)\n-025A26 Compressed Size       00000000 (0)\n-025A2A Uncompressed Size     00000000 (0)\n-025A2E Filename Length       0035 (53)\n-025A30 Extra Length          0000 (0)\n-025A32 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+048623 Compression Method    0008 (8) 'Deflated'\n+048625 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+048629 CRC                   00000000 (0)\n+04862D Compressed Size       00000000 (0)\n+048631 Uncompressed Size     00000000 (0)\n+048635 Filename Length       002E (46)\n+048637 Extra Length          0000 (0)\n+048639 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x25A32: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x48639: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-025A67 PAYLOAD\n+048667 PAYLOAD               XX\n \n-027F3E DATA DESCRIPTOR       08074B50 (134695760)\n-027F42 CRC                   57D2914C (1473417548)\n-027F46 Compressed Size       000024D7 (9431)\n-027F4A Uncompressed Size     0000CCAC (52396)\n+048669 DATA DESCRIPTOR       08074B50 (134695760)\n+04866D CRC                   00000000 (0)\n+048671 Compressed Size       00000002 (2)\n+048675 Uncompressed Size     00000000 (0)\n \n-027F4E LOCAL HEADER #257     04034B50 (67324752)\n-027F52 Extract Zip Spec      14 (20) '2.0'\n-027F53 Extract OS            00 (0) 'MS-DOS'\n-027F54 General Purpose Flag  0808 (2056)\n+048679 LOCAL HEADER #257     04034B50 (67324752)\n+04867D Extract Zip Spec      14 (20) '2.0'\n+04867E Extract OS            00 (0) 'MS-DOS'\n+04867F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-027F56 Compression Method    0008 (8) 'Deflated'\n-027F58 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-027F5C CRC                   00000000 (0)\n-027F60 Compressed Size       00000000 (0)\n-027F64 Uncompressed Size     00000000 (0)\n-027F68 Filename Length       0046 (70)\n-027F6A Extra Length          0000 (0)\n-027F6C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+048681 Compression Method    0008 (8) 'Deflated'\n+048683 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+048687 CRC                   00000000 (0)\n+04868B Compressed Size       00000000 (0)\n+04868F Uncompressed Size     00000000 (0)\n+048693 Filename Length       0035 (53)\n+048695 Extra Length          0000 (0)\n+048697 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x27F6C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x48697: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-027FB2 PAYLOAD\n+0486CC PAYLOAD\n \n-028209 DATA DESCRIPTOR       08074B50 (134695760)\n-02820D CRC                   BB643DBD (3143908797)\n-028211 Compressed Size       00000257 (599)\n-028215 Uncompressed Size     0000046C (1132)\n+048A7F DATA DESCRIPTOR       08074B50 (134695760)\n+048A83 CRC                   F526CD58 (4112960856)\n+048A87 Compressed Size       000003B3 (947)\n+048A8B Uncompressed Size     000009F4 (2548)\n \n-028219 LOCAL HEADER #258     04034B50 (67324752)\n-02821D Extract Zip Spec      14 (20) '2.0'\n-02821E Extract OS            00 (0) 'MS-DOS'\n-02821F General Purpose Flag  0808 (2056)\n+048A8F LOCAL HEADER #258     04034B50 (67324752)\n+048A93 Extract Zip Spec      14 (20) '2.0'\n+048A94 Extract OS            00 (0) 'MS-DOS'\n+048A95 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-028221 Compression Method    0008 (8) 'Deflated'\n-028223 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-028227 CRC                   00000000 (0)\n-02822B Compressed Size       00000000 (0)\n-02822F Uncompressed Size     00000000 (0)\n-028233 Filename Length       002B (43)\n-028235 Extra Length          0000 (0)\n-028237 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+048A97 Compression Method    0008 (8) 'Deflated'\n+048A99 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+048A9D CRC                   00000000 (0)\n+048AA1 Compressed Size       00000000 (0)\n+048AA5 Uncompressed Size     00000000 (0)\n+048AA9 Filename Length       003C (60)\n+048AAB Extra Length          0000 (0)\n+048AAD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x28237: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x48AAD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-028262 PAYLOAD               XX\n+048AE9 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-028264 DATA DESCRIPTOR       08074B50 (134695760)\n-028268 CRC                   00000000 (0)\n-02826C Compressed Size       00000002 (2)\n-028270 Uncompressed Size     00000000 (0)\n+048B2B DATA DESCRIPTOR       08074B50 (134695760)\n+048B2F CRC                   78750509 (2020934921)\n+048B33 Compressed Size       00000042 (66)\n+048B37 Uncompressed Size     00000044 (68)\n \n-028274 LOCAL HEADER #259     04034B50 (67324752)\n-028278 Extract Zip Spec      14 (20) '2.0'\n-028279 Extract OS            00 (0) 'MS-DOS'\n-02827A General Purpose Flag  0808 (2056)\n+048B3B LOCAL HEADER #259     04034B50 (67324752)\n+048B3F Extract Zip Spec      14 (20) '2.0'\n+048B40 Extract OS            00 (0) 'MS-DOS'\n+048B41 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02827C Compression Method    0008 (8) 'Deflated'\n-02827E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-028282 CRC                   00000000 (0)\n-028286 Compressed Size       00000000 (0)\n-02828A Uncompressed Size     00000000 (0)\n-02828E Filename Length       003F (63)\n-028290 Extra Length          0000 (0)\n-028292 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+048B43 Compression Method    0008 (8) 'Deflated'\n+048B45 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+048B49 CRC                   00000000 (0)\n+048B4D Compressed Size       00000000 (0)\n+048B51 Uncompressed Size     00000000 (0)\n+048B55 Filename Length       0004 (4)\n+048B57 Extra Length          0000 (0)\n+048B59 Filename              'XXXX'\n #\n-# WARNING: Offset 0x28292: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x48B59: Filename 'XXXX'\n #          Zero length filename\n #\n-0282D1 PAYLOAD\n+048B5D PAYLOAD               XX\n \n-02867D DATA DESCRIPTOR       08074B50 (134695760)\n-028681 CRC                   272CCF3E (657248062)\n-028685 Compressed Size       000003AC (940)\n-028689 Uncompressed Size     000009E5 (2533)\n+048B5F DATA DESCRIPTOR       08074B50 (134695760)\n+048B63 CRC                   00000000 (0)\n+048B67 Compressed Size       00000002 (2)\n+048B6B Uncompressed Size     00000000 (0)\n \n-02868D LOCAL HEADER #260     04034B50 (67324752)\n-028691 Extract Zip Spec      14 (20) '2.0'\n-028692 Extract OS            00 (0) 'MS-DOS'\n-028693 General Purpose Flag  0808 (2056)\n+048B6F LOCAL HEADER #260     04034B50 (67324752)\n+048B73 Extract Zip Spec      14 (20) '2.0'\n+048B74 Extract OS            00 (0) 'MS-DOS'\n+048B75 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-028695 Compression Method    0008 (8) 'Deflated'\n-028697 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02869B CRC                   00000000 (0)\n-02869F Compressed Size       00000000 (0)\n-0286A3 Uncompressed Size     00000000 (0)\n-0286A7 Filename Length       0048 (72)\n-0286A9 Extra Length          0000 (0)\n-0286AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+048B77 Compression Method    0008 (8) 'Deflated'\n+048B79 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+048B7D CRC                   00000000 (0)\n+048B81 Compressed Size       00000000 (0)\n+048B85 Uncompressed Size     00000000 (0)\n+048B89 Filename Length       000C (12)\n+048B8B Extra Length          0000 (0)\n+048B8D Filename              'XXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x286AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x48B8D: Filename 'XXXXXXXXXXXX'\n #          Zero length filename\n #\n-0286F3 PAYLOAD\n+048B99 PAYLOAD               XX\n \n-028F48 DATA DESCRIPTOR       08074B50 (134695760)\n-028F4C CRC                   A2DFDA9A (2732579482)\n-028F50 Compressed Size       00000855 (2133)\n-028F54 Uncompressed Size     000023FC (9212)\n+048B9B DATA DESCRIPTOR       08074B50 (134695760)\n+048B9F CRC                   00000000 (0)\n+048BA3 Compressed Size       00000002 (2)\n+048BA7 Uncompressed Size     00000000 (0)\n \n-028F58 LOCAL HEADER #261     04034B50 (67324752)\n-028F5C Extract Zip Spec      14 (20) '2.0'\n-028F5D Extract OS            00 (0) 'MS-DOS'\n-028F5E General Purpose Flag  0808 (2056)\n+048BAB LOCAL HEADER #261     04034B50 (67324752)\n+048BAF Extract Zip Spec      14 (20) '2.0'\n+048BB0 Extract OS            00 (0) 'MS-DOS'\n+048BB1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-028F60 Compression Method    0008 (8) 'Deflated'\n-028F62 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-028F66 CRC                   00000000 (0)\n-028F6A Compressed Size       00000000 (0)\n-028F6E Uncompressed Size     00000000 (0)\n-028F72 Filename Length       0045 (69)\n-028F74 Extra Length          0000 (0)\n-028F76 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+048BB3 Compression Method    0008 (8) 'Deflated'\n+048BB5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+048BB9 CRC                   00000000 (0)\n+048BBD Compressed Size       00000000 (0)\n+048BC1 Uncompressed Size     00000000 (0)\n+048BC5 Filename Length       0012 (18)\n+048BC7 Extra Length          0000 (0)\n+048BC9 Filename              'XXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x28F76: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x48BC9: Filename 'XXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-028FBB PAYLOAD\n+048BDB PAYLOAD               XX\n \n-029632 DATA DESCRIPTOR       08074B50 (134695760)\n-029636 CRC                   99D438F5 (2580822261)\n-02963A Compressed Size       00000677 (1655)\n-02963E Uncompressed Size     00001582 (5506)\n+048BDD DATA DESCRIPTOR       08074B50 (134695760)\n+048BE1 CRC                   00000000 (0)\n+048BE5 Compressed Size       00000002 (2)\n+048BE9 Uncompressed Size     00000000 (0)\n \n-029642 LOCAL HEADER #262     04034B50 (67324752)\n-029646 Extract Zip Spec      14 (20) '2.0'\n-029647 Extract OS            00 (0) 'MS-DOS'\n-029648 General Purpose Flag  0808 (2056)\n+048BED LOCAL HEADER #262     04034B50 (67324752)\n+048BF1 Extract Zip Spec      14 (20) '2.0'\n+048BF2 Extract OS            00 (0) 'MS-DOS'\n+048BF3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02964A Compression Method    0008 (8) 'Deflated'\n-02964C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-029650 CRC                   00000000 (0)\n-029654 Compressed Size       00000000 (0)\n-029658 Uncompressed Size     00000000 (0)\n-02965C Filename Length       0048 (72)\n-02965E Extra Length          0000 (0)\n-029660 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+048BF5 Compression Method    0008 (8) 'Deflated'\n+048BF7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+048BFB CRC                   00000000 (0)\n+048BFF Compressed Size       00000000 (0)\n+048C03 Uncompressed Size     00000000 (0)\n+048C07 Filename Length       0019 (25)\n+048C09 Extra Length          0000 (0)\n+048C0B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x29660: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x48C0B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0296A8 PAYLOAD\n+048C24 PAYLOAD               XX\n \n-029BB2 DATA DESCRIPTOR       08074B50 (134695760)\n-029BB6 CRC                   348CD6A3 (881645219)\n-029BBA Compressed Size       0000050A (1290)\n-029BBE Uncompressed Size     00001009 (4105)\n+048C26 DATA DESCRIPTOR       08074B50 (134695760)\n+048C2A CRC                   00000000 (0)\n+048C2E Compressed Size       00000002 (2)\n+048C32 Uncompressed Size     00000000 (0)\n \n-029BC2 LOCAL HEADER #263     04034B50 (67324752)\n-029BC6 Extract Zip Spec      14 (20) '2.0'\n-029BC7 Extract OS            00 (0) 'MS-DOS'\n-029BC8 General Purpose Flag  0808 (2056)\n+048C36 LOCAL HEADER #263     04034B50 (67324752)\n+048C3A Extract Zip Spec      14 (20) '2.0'\n+048C3B Extract OS            00 (0) 'MS-DOS'\n+048C3C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-029BCA Compression Method    0008 (8) 'Deflated'\n-029BCC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-029BD0 CRC                   00000000 (0)\n-029BD4 Compressed Size       00000000 (0)\n-029BD8 Uncompressed Size     00000000 (0)\n-029BDC Filename Length       0046 (70)\n-029BDE Extra Length          0000 (0)\n-029BE0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+048C3E Compression Method    0008 (8) 'Deflated'\n+048C40 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+048C44 CRC                   00000000 (0)\n+048C48 Compressed Size       00000000 (0)\n+048C4C Uncompressed Size     00000000 (0)\n+048C50 Filename Length       0023 (35)\n+048C52 Extra Length          0000 (0)\n+048C54 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x29BE0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x48C54: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-029C26 PAYLOAD\n+048C77 PAYLOAD               XX\n \n-02A2CC DATA DESCRIPTOR       08074B50 (134695760)\n-02A2D0 CRC                   C2D529E3 (3268749795)\n-02A2D4 Compressed Size       000006A6 (1702)\n-02A2D8 Uncompressed Size     00001A83 (6787)\n+048C79 DATA DESCRIPTOR       08074B50 (134695760)\n+048C7D CRC                   00000000 (0)\n+048C81 Compressed Size       00000002 (2)\n+048C85 Uncompressed Size     00000000 (0)\n \n-02A2DC LOCAL HEADER #264     04034B50 (67324752)\n-02A2E0 Extract Zip Spec      14 (20) '2.0'\n-02A2E1 Extract OS            00 (0) 'MS-DOS'\n-02A2E2 General Purpose Flag  0808 (2056)\n+048C89 LOCAL HEADER #264     04034B50 (67324752)\n+048C8D Extract Zip Spec      14 (20) '2.0'\n+048C8E Extract OS            00 (0) 'MS-DOS'\n+048C8F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02A2E4 Compression Method    0008 (8) 'Deflated'\n-02A2E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02A2EA CRC                   00000000 (0)\n-02A2EE Compressed Size       00000000 (0)\n-02A2F2 Uncompressed Size     00000000 (0)\n-02A2F6 Filename Length       0042 (66)\n-02A2F8 Extra Length          0000 (0)\n-02A2FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+048C91 Compression Method    0008 (8) 'Deflated'\n+048C93 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+048C97 CRC                   00000000 (0)\n+048C9B Compressed Size       00000000 (0)\n+048C9F Uncompressed Size     00000000 (0)\n+048CA3 Filename Length       0030 (48)\n+048CA5 Extra Length          0000 (0)\n+048CA7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2A2FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x48CA7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02A33C PAYLOAD\n+048CD7 PAYLOAD\n \n-02A990 DATA DESCRIPTOR       08074B50 (134695760)\n-02A994 CRC                   E72A3EBF (3878305471)\n-02A998 Compressed Size       00000654 (1620)\n-02A99C Uncompressed Size     00001A6F (6767)\n+048F92 DATA DESCRIPTOR       08074B50 (134695760)\n+048F96 CRC                   87D33073 (2278764659)\n+048F9A Compressed Size       000002BB (699)\n+048F9E Uncompressed Size     000005CF (1487)\n \n-02A9A0 LOCAL HEADER #265     04034B50 (67324752)\n-02A9A4 Extract Zip Spec      14 (20) '2.0'\n-02A9A5 Extract OS            00 (0) 'MS-DOS'\n-02A9A6 General Purpose Flag  0808 (2056)\n+048FA2 LOCAL HEADER #265     04034B50 (67324752)\n+048FA6 Extract Zip Spec      14 (20) '2.0'\n+048FA7 Extract OS            00 (0) 'MS-DOS'\n+048FA8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02A9A8 Compression Method    0008 (8) 'Deflated'\n-02A9AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02A9AE CRC                   00000000 (0)\n-02A9B2 Compressed Size       00000000 (0)\n-02A9B6 Uncompressed Size     00000000 (0)\n-02A9BA Filename Length       003F (63)\n-02A9BC Extra Length          0000 (0)\n-02A9BE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+048FAA Compression Method    0008 (8) 'Deflated'\n+048FAC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+048FB0 CRC                   00000000 (0)\n+048FB4 Compressed Size       00000000 (0)\n+048FB8 Uncompressed Size     00000000 (0)\n+048FBC Filename Length       0019 (25)\n+048FBE Extra Length          0000 (0)\n+048FC0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2A9BE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x48FC0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02A9FD PAYLOAD\n+048FD9 PAYLOAD               XX\n \n-02AD08 DATA DESCRIPTOR       08074B50 (134695760)\n-02AD0C CRC                   1CF76EFC (485977852)\n-02AD10 Compressed Size       0000030B (779)\n-02AD14 Uncompressed Size     00000749 (1865)\n+048FDB DATA DESCRIPTOR       08074B50 (134695760)\n+048FDF CRC                   00000000 (0)\n+048FE3 Compressed Size       00000002 (2)\n+048FE7 Uncompressed Size     00000000 (0)\n \n-02AD18 LOCAL HEADER #266     04034B50 (67324752)\n-02AD1C Extract Zip Spec      14 (20) '2.0'\n-02AD1D Extract OS            00 (0) 'MS-DOS'\n-02AD1E General Purpose Flag  0808 (2056)\n+048FEB LOCAL HEADER #266     04034B50 (67324752)\n+048FEF Extract Zip Spec      14 (20) '2.0'\n+048FF0 Extract OS            00 (0) 'MS-DOS'\n+048FF1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02AD20 Compression Method    0008 (8) 'Deflated'\n-02AD22 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02AD26 CRC                   00000000 (0)\n-02AD2A Compressed Size       00000000 (0)\n-02AD2E Uncompressed Size     00000000 (0)\n-02AD32 Filename Length       0043 (67)\n-02AD34 Extra Length          0000 (0)\n-02AD36 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+048FF3 Compression Method    0008 (8) 'Deflated'\n+048FF5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+048FF9 CRC                   00000000 (0)\n+048FFD Compressed Size       00000000 (0)\n+049001 Uncompressed Size     00000000 (0)\n+049005 Filename Length       0024 (36)\n+049007 Extra Length          0000 (0)\n+049009 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2AD36: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x49009: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02AD79 PAYLOAD\n+04902D PAYLOAD               XX\n \n-02B232 DATA DESCRIPTOR       08074B50 (134695760)\n-02B236 CRC                   187BA855 (410757205)\n-02B23A Compressed Size       000004B9 (1209)\n-02B23E Uncompressed Size     000010FE (4350)\n+04902F DATA DESCRIPTOR       08074B50 (134695760)\n+049033 CRC                   00000000 (0)\n+049037 Compressed Size       00000002 (2)\n+04903B Uncompressed Size     00000000 (0)\n \n-02B242 LOCAL HEADER #267     04034B50 (67324752)\n-02B246 Extract Zip Spec      14 (20) '2.0'\n-02B247 Extract OS            00 (0) 'MS-DOS'\n-02B248 General Purpose Flag  0808 (2056)\n+04903F LOCAL HEADER #267     04034B50 (67324752)\n+049043 Extract Zip Spec      14 (20) '2.0'\n+049044 Extract OS            00 (0) 'MS-DOS'\n+049045 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02B24A Compression Method    0008 (8) 'Deflated'\n-02B24C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02B250 CRC                   00000000 (0)\n-02B254 Compressed Size       00000000 (0)\n-02B258 Uncompressed Size     00000000 (0)\n-02B25C Filename Length       003F (63)\n-02B25E Extra Length          0000 (0)\n-02B260 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+049047 Compression Method    0008 (8) 'Deflated'\n+049049 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04904D CRC                   00000000 (0)\n+049051 Compressed Size       00000000 (0)\n+049055 Uncompressed Size     00000000 (0)\n+049059 Filename Length       0032 (50)\n+04905B Extra Length          0000 (0)\n+04905D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2B260: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4905D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02B29F PAYLOAD\n+04908F PAYLOAD\n \n-02B727 DATA DESCRIPTOR       08074B50 (134695760)\n-02B72B CRC                   D7A41DAE (3617856942)\n-02B72F Compressed Size       00000488 (1160)\n-02B733 Uncompressed Size     00000D3D (3389)\n+04944F DATA DESCRIPTOR       08074B50 (134695760)\n+049453 CRC                   79620788 (2036467592)\n+049457 Compressed Size       000003C0 (960)\n+04945B Uncompressed Size     00000AB0 (2736)\n \n-02B737 LOCAL HEADER #268     04034B50 (67324752)\n-02B73B Extract Zip Spec      14 (20) '2.0'\n-02B73C Extract OS            00 (0) 'MS-DOS'\n-02B73D General Purpose Flag  0808 (2056)\n+04945F LOCAL HEADER #268     04034B50 (67324752)\n+049463 Extract Zip Spec      14 (20) '2.0'\n+049464 Extract OS            00 (0) 'MS-DOS'\n+049465 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02B73F Compression Method    0008 (8) 'Deflated'\n-02B741 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02B745 CRC                   00000000 (0)\n-02B749 Compressed Size       00000000 (0)\n-02B74D Uncompressed Size     00000000 (0)\n-02B751 Filename Length       0045 (69)\n-02B753 Extra Length          0000 (0)\n-02B755 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+049467 Compression Method    0008 (8) 'Deflated'\n+049469 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04946D CRC                   00000000 (0)\n+049471 Compressed Size       00000000 (0)\n+049475 Uncompressed Size     00000000 (0)\n+049479 Filename Length       0030 (48)\n+04947B Extra Length          0000 (0)\n+04947D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2B755: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4947D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02B79A PAYLOAD\n+0494AD PAYLOAD\n \n-02BC8A DATA DESCRIPTOR       08074B50 (134695760)\n-02BC8E CRC                   F1C1369F (4055971487)\n-02BC92 Compressed Size       000004F0 (1264)\n-02BC96 Uncompressed Size     000010CF (4303)\n+049877 DATA DESCRIPTOR       08074B50 (134695760)\n+04987B CRC                   C8043322 (3355718434)\n+04987F Compressed Size       000003CA (970)\n+049883 Uncompressed Size     00000B0F (2831)\n \n-02BC9A LOCAL HEADER #269     04034B50 (67324752)\n-02BC9E Extract Zip Spec      14 (20) '2.0'\n-02BC9F Extract OS            00 (0) 'MS-DOS'\n-02BCA0 General Purpose Flag  0808 (2056)\n+049887 LOCAL HEADER #269     04034B50 (67324752)\n+04988B Extract Zip Spec      14 (20) '2.0'\n+04988C Extract OS            00 (0) 'MS-DOS'\n+04988D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02BCA2 Compression Method    0008 (8) 'Deflated'\n-02BCA4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02BCA8 CRC                   00000000 (0)\n-02BCAC Compressed Size       00000000 (0)\n-02BCB0 Uncompressed Size     00000000 (0)\n-02BCB4 Filename Length       003D (61)\n-02BCB6 Extra Length          0000 (0)\n-02BCB8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04988F Compression Method    0008 (8) 'Deflated'\n+049891 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+049895 CRC                   00000000 (0)\n+049899 Compressed Size       00000000 (0)\n+04989D Uncompressed Size     00000000 (0)\n+0498A1 Filename Length       0018 (24)\n+0498A3 Extra Length          0000 (0)\n+0498A5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2BCB8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x498A5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02BCF5 PAYLOAD\n+0498BD PAYLOAD               XX\n \n-02C2F4 DATA DESCRIPTOR       08074B50 (134695760)\n-02C2F8 CRC                   B12B8896 (2972420246)\n-02C2FC Compressed Size       000005FF (1535)\n-02C300 Uncompressed Size     000017E3 (6115)\n+0498BF DATA DESCRIPTOR       08074B50 (134695760)\n+0498C3 CRC                   00000000 (0)\n+0498C7 Compressed Size       00000002 (2)\n+0498CB Uncompressed Size     00000000 (0)\n \n-02C304 LOCAL HEADER #270     04034B50 (67324752)\n-02C308 Extract Zip Spec      14 (20) '2.0'\n-02C309 Extract OS            00 (0) 'MS-DOS'\n-02C30A General Purpose Flag  0808 (2056)\n+0498CF LOCAL HEADER #270     04034B50 (67324752)\n+0498D3 Extract Zip Spec      14 (20) '2.0'\n+0498D4 Extract OS            00 (0) 'MS-DOS'\n+0498D5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02C30C Compression Method    0008 (8) 'Deflated'\n-02C30E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02C312 CRC                   00000000 (0)\n-02C316 Compressed Size       00000000 (0)\n-02C31A Uncompressed Size     00000000 (0)\n-02C31E Filename Length       003D (61)\n-02C320 Extra Length          0000 (0)\n-02C322 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0498D7 Compression Method    0008 (8) 'Deflated'\n+0498D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0498DD CRC                   00000000 (0)\n+0498E1 Compressed Size       00000000 (0)\n+0498E5 Uncompressed Size     00000000 (0)\n+0498E9 Filename Length       0030 (48)\n+0498EB Extra Length          0000 (0)\n+0498ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2C322: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x498ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02C35F PAYLOAD\n+04991D PAYLOAD\n \n-02C791 DATA DESCRIPTOR       08074B50 (134695760)\n-02C795 CRC                   04D43ED1 (81018577)\n-02C799 Compressed Size       00000432 (1074)\n-02C79D Uncompressed Size     00000D84 (3460)\n+049E2F DATA DESCRIPTOR       08074B50 (134695760)\n+049E33 CRC                   7A6AA41E (2053809182)\n+049E37 Compressed Size       00000512 (1298)\n+049E3B Uncompressed Size     00001180 (4480)\n \n-02C7A1 LOCAL HEADER #271     04034B50 (67324752)\n-02C7A5 Extract Zip Spec      14 (20) '2.0'\n-02C7A6 Extract OS            00 (0) 'MS-DOS'\n-02C7A7 General Purpose Flag  0808 (2056)\n+049E3F LOCAL HEADER #271     04034B50 (67324752)\n+049E43 Extract Zip Spec      14 (20) '2.0'\n+049E44 Extract OS            00 (0) 'MS-DOS'\n+049E45 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02C7A9 Compression Method    0008 (8) 'Deflated'\n-02C7AB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02C7AF CRC                   00000000 (0)\n-02C7B3 Compressed Size       00000000 (0)\n-02C7B7 Uncompressed Size     00000000 (0)\n-02C7BB Filename Length       003E (62)\n-02C7BD Extra Length          0000 (0)\n-02C7BF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+049E47 Compression Method    0008 (8) 'Deflated'\n+049E49 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+049E4D CRC                   00000000 (0)\n+049E51 Compressed Size       00000000 (0)\n+049E55 Uncompressed Size     00000000 (0)\n+049E59 Filename Length       0029 (41)\n+049E5B Extra Length          0000 (0)\n+049E5D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2C7BF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x49E5D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02C7FD PAYLOAD\n+049E86 PAYLOAD\n \n-02CC87 DATA DESCRIPTOR       08074B50 (134695760)\n-02CC8B CRC                   05580F75 (89657205)\n-02CC8F Compressed Size       0000048A (1162)\n-02CC93 Uncompressed Size     00000EA4 (3748)\n+04A13D DATA DESCRIPTOR       08074B50 (134695760)\n+04A141 CRC                   00F537FE (16070654)\n+04A145 Compressed Size       000002B7 (695)\n+04A149 Uncompressed Size     00000577 (1399)\n \n-02CC97 LOCAL HEADER #272     04034B50 (67324752)\n-02CC9B Extract Zip Spec      14 (20) '2.0'\n-02CC9C Extract OS            00 (0) 'MS-DOS'\n-02CC9D General Purpose Flag  0808 (2056)\n+04A14D LOCAL HEADER #272     04034B50 (67324752)\n+04A151 Extract Zip Spec      14 (20) '2.0'\n+04A152 Extract OS            00 (0) 'MS-DOS'\n+04A153 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02CC9F Compression Method    0008 (8) 'Deflated'\n-02CCA1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02CCA5 CRC                   00000000 (0)\n-02CCA9 Compressed Size       00000000 (0)\n-02CCAD Uncompressed Size     00000000 (0)\n-02CCB1 Filename Length       003F (63)\n-02CCB3 Extra Length          0000 (0)\n-02CCB5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04A155 Compression Method    0008 (8) 'Deflated'\n+04A157 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04A15B CRC                   00000000 (0)\n+04A15F Compressed Size       00000000 (0)\n+04A163 Uncompressed Size     00000000 (0)\n+04A167 Filename Length       0026 (38)\n+04A169 Extra Length          0000 (0)\n+04A16B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2CCB5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4A16B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02CCF4 PAYLOAD\n+04A191 PAYLOAD\n \n-02D59E DATA DESCRIPTOR       08074B50 (134695760)\n-02D5A2 CRC                   D6497204 (3595137540)\n-02D5A6 Compressed Size       000008AA (2218)\n-02D5AA Uncompressed Size     00002746 (10054)\n+04A5FD DATA DESCRIPTOR       08074B50 (134695760)\n+04A601 CRC                   1CCCA507 (483173639)\n+04A605 Compressed Size       0000046C (1132)\n+04A609 Uncompressed Size     000009AB (2475)\n \n-02D5AE LOCAL HEADER #273     04034B50 (67324752)\n-02D5B2 Extract Zip Spec      14 (20) '2.0'\n-02D5B3 Extract OS            00 (0) 'MS-DOS'\n-02D5B4 General Purpose Flag  0808 (2056)\n+04A60D LOCAL HEADER #273     04034B50 (67324752)\n+04A611 Extract Zip Spec      14 (20) '2.0'\n+04A612 Extract OS            00 (0) 'MS-DOS'\n+04A613 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02D5B6 Compression Method    0008 (8) 'Deflated'\n-02D5B8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02D5BC CRC                   00000000 (0)\n-02D5C0 Compressed Size       00000000 (0)\n-02D5C4 Uncompressed Size     00000000 (0)\n-02D5C8 Filename Length       003F (63)\n-02D5CA Extra Length          0000 (0)\n-02D5CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04A615 Compression Method    0008 (8) 'Deflated'\n+04A617 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04A61B CRC                   00000000 (0)\n+04A61F Compressed Size       00000000 (0)\n+04A623 Uncompressed Size     00000000 (0)\n+04A627 Filename Length       0021 (33)\n+04A629 Extra Length          0000 (0)\n+04A62B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2D5CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4A62B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02D60B PAYLOAD\n+04A64C PAYLOAD\n \n-02DCBB DATA DESCRIPTOR       08074B50 (134695760)\n-02DCBF CRC                   1ADB9373 (450597747)\n-02DCC3 Compressed Size       000006B0 (1712)\n-02DCC7 Uncompressed Size     00001A82 (6786)\n+04A8B0 DATA DESCRIPTOR       08074B50 (134695760)\n+04A8B4 CRC                   0622E0A0 (102949024)\n+04A8B8 Compressed Size       00000264 (612)\n+04A8BC Uncompressed Size     0000049F (1183)\n \n-02DCCB LOCAL HEADER #274     04034B50 (67324752)\n-02DCCF Extract Zip Spec      14 (20) '2.0'\n-02DCD0 Extract OS            00 (0) 'MS-DOS'\n-02DCD1 General Purpose Flag  0808 (2056)\n+04A8C0 LOCAL HEADER #274     04034B50 (67324752)\n+04A8C4 Extract Zip Spec      14 (20) '2.0'\n+04A8C5 Extract OS            00 (0) 'MS-DOS'\n+04A8C6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02DCD3 Compression Method    0008 (8) 'Deflated'\n-02DCD5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02DCD9 CRC                   00000000 (0)\n-02DCDD Compressed Size       00000000 (0)\n-02DCE1 Uncompressed Size     00000000 (0)\n-02DCE5 Filename Length       0040 (64)\n-02DCE7 Extra Length          0000 (0)\n-02DCE9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04A8C8 Compression Method    0008 (8) 'Deflated'\n+04A8CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04A8CE CRC                   00000000 (0)\n+04A8D2 Compressed Size       00000000 (0)\n+04A8D6 Uncompressed Size     00000000 (0)\n+04A8DA Filename Length       0027 (39)\n+04A8DC Extra Length          0000 (0)\n+04A8DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2DCE9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4A8DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02DD29 PAYLOAD\n+04A905 PAYLOAD\n \n-02E27A DATA DESCRIPTOR       08074B50 (134695760)\n-02E27E CRC                   41505507 (1095783687)\n-02E282 Compressed Size       00000551 (1361)\n-02E286 Uncompressed Size     00001224 (4644)\n+04AF55 DATA DESCRIPTOR       08074B50 (134695760)\n+04AF59 CRC                   3DF15F74 (1039228788)\n+04AF5D Compressed Size       00000650 (1616)\n+04AF61 Uncompressed Size     0000229A (8858)\n \n-02E28A LOCAL HEADER #275     04034B50 (67324752)\n-02E28E Extract Zip Spec      14 (20) '2.0'\n-02E28F Extract OS            00 (0) 'MS-DOS'\n-02E290 General Purpose Flag  0808 (2056)\n+04AF65 LOCAL HEADER #275     04034B50 (67324752)\n+04AF69 Extract Zip Spec      14 (20) '2.0'\n+04AF6A Extract OS            00 (0) 'MS-DOS'\n+04AF6B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02E292 Compression Method    0008 (8) 'Deflated'\n-02E294 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02E298 CRC                   00000000 (0)\n-02E29C Compressed Size       00000000 (0)\n-02E2A0 Uncompressed Size     00000000 (0)\n-02E2A4 Filename Length       003F (63)\n-02E2A6 Extra Length          0000 (0)\n-02E2A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04AF6D Compression Method    0008 (8) 'Deflated'\n+04AF6F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04AF73 CRC                   00000000 (0)\n+04AF77 Compressed Size       00000000 (0)\n+04AF7B Uncompressed Size     00000000 (0)\n+04AF7F Filename Length       0026 (38)\n+04AF81 Extra Length          0000 (0)\n+04AF83 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2E2A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4AF83: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02E2E7 PAYLOAD\n+04AFA9 PAYLOAD\n \n-02EBE9 DATA DESCRIPTOR       08074B50 (134695760)\n-02EBED CRC                   C452CFCB (3293761483)\n-02EBF1 Compressed Size       00000902 (2306)\n-02EBF5 Uncompressed Size     000025C2 (9666)\n+04B1CF DATA DESCRIPTOR       08074B50 (134695760)\n+04B1D3 CRC                   52712A03 (1383148035)\n+04B1D7 Compressed Size       00000226 (550)\n+04B1DB Uncompressed Size     000003E8 (1000)\n \n-02EBF9 LOCAL HEADER #276     04034B50 (67324752)\n-02EBFD Extract Zip Spec      14 (20) '2.0'\n-02EBFE Extract OS            00 (0) 'MS-DOS'\n-02EBFF General Purpose Flag  0808 (2056)\n+04B1DF LOCAL HEADER #276     04034B50 (67324752)\n+04B1E3 Extract Zip Spec      14 (20) '2.0'\n+04B1E4 Extract OS            00 (0) 'MS-DOS'\n+04B1E5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02EC01 Compression Method    0008 (8) 'Deflated'\n-02EC03 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02EC07 CRC                   00000000 (0)\n-02EC0B Compressed Size       00000000 (0)\n-02EC0F Uncompressed Size     00000000 (0)\n-02EC13 Filename Length       003E (62)\n-02EC15 Extra Length          0000 (0)\n-02EC17 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04B1E7 Compression Method    0008 (8) 'Deflated'\n+04B1E9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04B1ED CRC                   00000000 (0)\n+04B1F1 Compressed Size       00000000 (0)\n+04B1F5 Uncompressed Size     00000000 (0)\n+04B1F9 Filename Length       0020 (32)\n+04B1FB Extra Length          0000 (0)\n+04B1FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2EC17: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4B1FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02EC55 PAYLOAD\n+04B21D PAYLOAD\n \n-02F146 DATA DESCRIPTOR       08074B50 (134695760)\n-02F14A CRC                   FCF57B8C (4243946380)\n-02F14E Compressed Size       000004F1 (1265)\n-02F152 Uncompressed Size     00001158 (4440)\n+04D87E DATA DESCRIPTOR       08074B50 (134695760)\n+04D882 CRC                   4B96BF4D (1268170573)\n+04D886 Compressed Size       00002661 (9825)\n+04D88A Uncompressed Size     00011389 (70537)\n \n-02F156 LOCAL HEADER #277     04034B50 (67324752)\n-02F15A Extract Zip Spec      14 (20) '2.0'\n-02F15B Extract OS            00 (0) 'MS-DOS'\n-02F15C General Purpose Flag  0808 (2056)\n+04D88E LOCAL HEADER #277     04034B50 (67324752)\n+04D892 Extract Zip Spec      14 (20) '2.0'\n+04D893 Extract OS            00 (0) 'MS-DOS'\n+04D894 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02F15E Compression Method    0008 (8) 'Deflated'\n-02F160 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02F164 CRC                   00000000 (0)\n-02F168 Compressed Size       00000000 (0)\n-02F16C Uncompressed Size     00000000 (0)\n-02F170 Filename Length       003C (60)\n-02F172 Extra Length          0000 (0)\n-02F174 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04D896 Compression Method    0008 (8) 'Deflated'\n+04D898 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04D89C CRC                   00000000 (0)\n+04D8A0 Compressed Size       00000000 (0)\n+04D8A4 Uncompressed Size     00000000 (0)\n+04D8A8 Filename Length       0027 (39)\n+04D8AA Extra Length          0000 (0)\n+04D8AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2F174: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4D8AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02F1B0 PAYLOAD\n+04D8D3 PAYLOAD\n \n-02F3F7 DATA DESCRIPTOR       08074B50 (134695760)\n-02F3FB CRC                   93AEE0AC (2477711532)\n-02F3FF Compressed Size       00000247 (583)\n-02F403 Uncompressed Size     0000040A (1034)\n+04E257 DATA DESCRIPTOR       08074B50 (134695760)\n+04E25B CRC                   E6F6EE92 (3874942610)\n+04E25F Compressed Size       00000984 (2436)\n+04E263 Uncompressed Size     00003564 (13668)\n \n-02F407 LOCAL HEADER #278     04034B50 (67324752)\n-02F40B Extract Zip Spec      14 (20) '2.0'\n-02F40C Extract OS            00 (0) 'MS-DOS'\n-02F40D General Purpose Flag  0808 (2056)\n+04E267 LOCAL HEADER #278     04034B50 (67324752)\n+04E26B Extract Zip Spec      14 (20) '2.0'\n+04E26C Extract OS            00 (0) 'MS-DOS'\n+04E26D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02F40F Compression Method    0008 (8) 'Deflated'\n-02F411 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02F415 CRC                   00000000 (0)\n-02F419 Compressed Size       00000000 (0)\n-02F41D Uncompressed Size     00000000 (0)\n-02F421 Filename Length       001E (30)\n-02F423 Extra Length          0000 (0)\n-02F425 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04E26F Compression Method    0008 (8) 'Deflated'\n+04E271 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04E275 CRC                   00000000 (0)\n+04E279 Compressed Size       00000000 (0)\n+04E27D Uncompressed Size     00000000 (0)\n+04E281 Filename Length       0029 (41)\n+04E283 Extra Length          0000 (0)\n+04E285 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2F425: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4E285: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02F443 PAYLOAD               XX\n+04E2AE PAYLOAD\n \n-02F445 DATA DESCRIPTOR       08074B50 (134695760)\n-02F449 CRC                   00000000 (0)\n-02F44D Compressed Size       00000002 (2)\n-02F451 Uncompressed Size     00000000 (0)\n+04EE98 DATA DESCRIPTOR       08074B50 (134695760)\n+04EE9C CRC                   D525E52E (3576030510)\n+04EEA0 Compressed Size       00000BEA (3050)\n+04EEA4 Uncompressed Size     00003610 (13840)\n \n-02F455 LOCAL HEADER #279     04034B50 (67324752)\n-02F459 Extract Zip Spec      14 (20) '2.0'\n-02F45A Extract OS            00 (0) 'MS-DOS'\n-02F45B General Purpose Flag  0808 (2056)\n+04EEA8 LOCAL HEADER #279     04034B50 (67324752)\n+04EEAC Extract Zip Spec      14 (20) '2.0'\n+04EEAD Extract OS            00 (0) 'MS-DOS'\n+04EEAE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02F45D Compression Method    0008 (8) 'Deflated'\n-02F45F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02F463 CRC                   00000000 (0)\n-02F467 Compressed Size       00000000 (0)\n-02F46B Uncompressed Size     00000000 (0)\n-02F46F Filename Length       003D (61)\n-02F471 Extra Length          0000 (0)\n-02F473 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04EEB0 Compression Method    0008 (8) 'Deflated'\n+04EEB2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04EEB6 CRC                   00000000 (0)\n+04EEBA Compressed Size       00000000 (0)\n+04EEBE Uncompressed Size     00000000 (0)\n+04EEC2 Filename Length       0024 (36)\n+04EEC4 Extra Length          0000 (0)\n+04EEC6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2F473: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4EEC6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02F4B0 PAYLOAD\n+04EEEA PAYLOAD\n \n-02F71C DATA DESCRIPTOR       08074B50 (134695760)\n-02F720 CRC                   7A3B23D9 (2050696153)\n-02F724 Compressed Size       0000026C (620)\n-02F728 Uncompressed Size     00000479 (1145)\n+04FA7E DATA DESCRIPTOR       08074B50 (134695760)\n+04FA82 CRC                   82E9AE97 (2196352663)\n+04FA86 Compressed Size       00000B94 (2964)\n+04FA8A Uncompressed Size     0000273B (10043)\n \n-02F72C LOCAL HEADER #280     04034B50 (67324752)\n-02F730 Extract Zip Spec      14 (20) '2.0'\n-02F731 Extract OS            00 (0) 'MS-DOS'\n-02F732 General Purpose Flag  0808 (2056)\n+04FA8E LOCAL HEADER #280     04034B50 (67324752)\n+04FA92 Extract Zip Spec      14 (20) '2.0'\n+04FA93 Extract OS            00 (0) 'MS-DOS'\n+04FA94 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02F734 Compression Method    0008 (8) 'Deflated'\n-02F736 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02F73A CRC                   00000000 (0)\n-02F73E Compressed Size       00000000 (0)\n-02F742 Uncompressed Size     00000000 (0)\n-02F746 Filename Length       0043 (67)\n-02F748 Extra Length          0000 (0)\n-02F74A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04FA96 Compression Method    0008 (8) 'Deflated'\n+04FA98 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04FA9C CRC                   00000000 (0)\n+04FAA0 Compressed Size       00000000 (0)\n+04FAA4 Uncompressed Size     00000000 (0)\n+04FAA8 Filename Length       0021 (33)\n+04FAAA Extra Length          0000 (0)\n+04FAAC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2F74A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4FAAC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02F78D PAYLOAD\n+04FACD PAYLOAD               XX\n \n-02FAA8 DATA DESCRIPTOR       08074B50 (134695760)\n-02FAAC CRC                   3E8906CC (1049167564)\n-02FAB0 Compressed Size       0000031B (795)\n-02FAB4 Uncompressed Size     00000690 (1680)\n+04FACF DATA DESCRIPTOR       08074B50 (134695760)\n+04FAD3 CRC                   00000000 (0)\n+04FAD7 Compressed Size       00000002 (2)\n+04FADB Uncompressed Size     00000000 (0)\n \n-02FAB8 LOCAL HEADER #281     04034B50 (67324752)\n-02FABC Extract Zip Spec      14 (20) '2.0'\n-02FABD Extract OS            00 (0) 'MS-DOS'\n-02FABE General Purpose Flag  0808 (2056)\n+04FADF LOCAL HEADER #281     04034B50 (67324752)\n+04FAE3 Extract Zip Spec      14 (20) '2.0'\n+04FAE4 Extract OS            00 (0) 'MS-DOS'\n+04FAE5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02FAC0 Compression Method    0008 (8) 'Deflated'\n-02FAC2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02FAC6 CRC                   00000000 (0)\n-02FACA Compressed Size       00000000 (0)\n-02FACE Uncompressed Size     00000000 (0)\n-02FAD2 Filename Length       0045 (69)\n-02FAD4 Extra Length          0000 (0)\n-02FAD6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04FAE7 Compression Method    0008 (8) 'Deflated'\n+04FAE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04FAED CRC                   00000000 (0)\n+04FAF1 Compressed Size       00000000 (0)\n+04FAF5 Uncompressed Size     00000000 (0)\n+04FAF9 Filename Length       0036 (54)\n+04FAFB Extra Length          0000 (0)\n+04FAFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2FAD6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4FAFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02FB1B PAYLOAD\n+04FB33 PAYLOAD\n \n-02FE38 DATA DESCRIPTOR       08074B50 (134695760)\n-02FE3C CRC                   AE1F051B (2921268507)\n-02FE40 Compressed Size       0000031D (797)\n-02FE44 Uncompressed Size     00000698 (1688)\n+04FDAE DATA DESCRIPTOR       08074B50 (134695760)\n+04FDB2 CRC                   62810B39 (1652624185)\n+04FDB6 Compressed Size       0000027B (635)\n+04FDBA Uncompressed Size     00000554 (1364)\n \n-02FE48 LOCAL HEADER #282     04034B50 (67324752)\n-02FE4C Extract Zip Spec      14 (20) '2.0'\n-02FE4D Extract OS            00 (0) 'MS-DOS'\n-02FE4E General Purpose Flag  0808 (2056)\n+04FDBE LOCAL HEADER #282     04034B50 (67324752)\n+04FDC2 Extract Zip Spec      14 (20) '2.0'\n+04FDC3 Extract OS            00 (0) 'MS-DOS'\n+04FDC4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-02FE50 Compression Method    0008 (8) 'Deflated'\n-02FE52 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-02FE56 CRC                   00000000 (0)\n-02FE5A Compressed Size       00000000 (0)\n-02FE5E Uncompressed Size     00000000 (0)\n-02FE62 Filename Length       0040 (64)\n-02FE64 Extra Length          0000 (0)\n-02FE66 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+04FDC6 Compression Method    0008 (8) 'Deflated'\n+04FDC8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+04FDCC CRC                   00000000 (0)\n+04FDD0 Compressed Size       00000000 (0)\n+04FDD4 Uncompressed Size     00000000 (0)\n+04FDD8 Filename Length       0038 (56)\n+04FDDA Extra Length          0000 (0)\n+04FDDC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2FE66: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x4FDDC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-02FEA6 PAYLOAD\n+04FE14 PAYLOAD\n \n-030141 DATA DESCRIPTOR       08074B50 (134695760)\n-030145 CRC                   542D0143 (1412235587)\n-030149 Compressed Size       0000029B (667)\n-03014D Uncompressed Size     000005A4 (1444)\n+05047C DATA DESCRIPTOR       08074B50 (134695760)\n+050480 CRC                   7918064D (2031617613)\n+050484 Compressed Size       00000668 (1640)\n+050488 Uncompressed Size     00001974 (6516)\n \n-030151 LOCAL HEADER #283     04034B50 (67324752)\n-030155 Extract Zip Spec      14 (20) '2.0'\n-030156 Extract OS            00 (0) 'MS-DOS'\n-030157 General Purpose Flag  0808 (2056)\n+05048C LOCAL HEADER #283     04034B50 (67324752)\n+050490 Extract Zip Spec      14 (20) '2.0'\n+050491 Extract OS            00 (0) 'MS-DOS'\n+050492 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-030159 Compression Method    0008 (8) 'Deflated'\n-03015B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03015F CRC                   00000000 (0)\n-030163 Compressed Size       00000000 (0)\n-030167 Uncompressed Size     00000000 (0)\n-03016B Filename Length       0042 (66)\n-03016D Extra Length          0000 (0)\n-03016F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+050494 Compression Method    0008 (8) 'Deflated'\n+050496 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05049A CRC                   00000000 (0)\n+05049E Compressed Size       00000000 (0)\n+0504A2 Uncompressed Size     00000000 (0)\n+0504A6 Filename Length       003B (59)\n+0504A8 Extra Length          0000 (0)\n+0504AA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3016F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x504AA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0301B1 PAYLOAD\n+0504E5 PAYLOAD\n \n-03048B DATA DESCRIPTOR       08074B50 (134695760)\n-03048F CRC                   FC50C2FA (4233151226)\n-030493 Compressed Size       000002DA (730)\n-030497 Uncompressed Size     0000066A (1642)\n+0513F0 DATA DESCRIPTOR       08074B50 (134695760)\n+0513F4 CRC                   9C935B9B (2626902939)\n+0513F8 Compressed Size       00000F0B (3851)\n+0513FC Uncompressed Size     000050B4 (20660)\n \n-03049B LOCAL HEADER #284     04034B50 (67324752)\n-03049F Extract Zip Spec      14 (20) '2.0'\n-0304A0 Extract OS            00 (0) 'MS-DOS'\n-0304A1 General Purpose Flag  0808 (2056)\n+051400 LOCAL HEADER #284     04034B50 (67324752)\n+051404 Extract Zip Spec      14 (20) '2.0'\n+051405 Extract OS            00 (0) 'MS-DOS'\n+051406 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0304A3 Compression Method    0008 (8) 'Deflated'\n-0304A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0304A9 CRC                   00000000 (0)\n-0304AD Compressed Size       00000000 (0)\n-0304B1 Uncompressed Size     00000000 (0)\n-0304B5 Filename Length       003D (61)\n-0304B7 Extra Length          0000 (0)\n-0304B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+051408 Compression Method    0008 (8) 'Deflated'\n+05140A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05140E CRC                   00000000 (0)\n+051412 Compressed Size       00000000 (0)\n+051416 Uncompressed Size     00000000 (0)\n+05141A Filename Length       0021 (33)\n+05141C Extra Length          0000 (0)\n+05141E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x304B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5141E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0304F6 PAYLOAD\n+05143F PAYLOAD               XX\n \n-03076F DATA DESCRIPTOR       08074B50 (134695760)\n-030773 CRC                   E1CD8446 (3788342342)\n-030777 Compressed Size       00000279 (633)\n-03077B Uncompressed Size     000004FA (1274)\n+051441 DATA DESCRIPTOR       08074B50 (134695760)\n+051445 CRC                   00000000 (0)\n+051449 Compressed Size       00000002 (2)\n+05144D Uncompressed Size     00000000 (0)\n \n-03077F LOCAL HEADER #285     04034B50 (67324752)\n-030783 Extract Zip Spec      14 (20) '2.0'\n-030784 Extract OS            00 (0) 'MS-DOS'\n-030785 General Purpose Flag  0808 (2056)\n+051451 LOCAL HEADER #285     04034B50 (67324752)\n+051455 Extract Zip Spec      14 (20) '2.0'\n+051456 Extract OS            00 (0) 'MS-DOS'\n+051457 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-030787 Compression Method    0008 (8) 'Deflated'\n-030789 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03078D CRC                   00000000 (0)\n-030791 Compressed Size       00000000 (0)\n-030795 Uncompressed Size     00000000 (0)\n-030799 Filename Length       003F (63)\n-03079B Extra Length          0000 (0)\n-03079D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+051459 Compression Method    0008 (8) 'Deflated'\n+05145B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05145F CRC                   00000000 (0)\n+051463 Compressed Size       00000000 (0)\n+051467 Uncompressed Size     00000000 (0)\n+05146B Filename Length       0034 (52)\n+05146D Extra Length          0000 (0)\n+05146F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3079D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5146F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0307DC PAYLOAD\n+0514A3 PAYLOAD\n \n-030A59 DATA DESCRIPTOR       08074B50 (134695760)\n-030A5D CRC                   FE2922A2 (4264108706)\n-030A61 Compressed Size       0000027D (637)\n-030A65 Uncompressed Size     00000502 (1282)\n+051FAB DATA DESCRIPTOR       08074B50 (134695760)\n+051FAF CRC                   2B1352F9 (722686713)\n+051FB3 Compressed Size       00000B08 (2824)\n+051FB7 Uncompressed Size     00003462 (13410)\n \n-030A69 LOCAL HEADER #286     04034B50 (67324752)\n-030A6D Extract Zip Spec      14 (20) '2.0'\n-030A6E Extract OS            00 (0) 'MS-DOS'\n-030A6F General Purpose Flag  0808 (2056)\n+051FBB LOCAL HEADER #286     04034B50 (67324752)\n+051FBF Extract Zip Spec      14 (20) '2.0'\n+051FC0 Extract OS            00 (0) 'MS-DOS'\n+051FC1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-030A71 Compression Method    0008 (8) 'Deflated'\n-030A73 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-030A77 CRC                   00000000 (0)\n-030A7B Compressed Size       00000000 (0)\n-030A7F Uncompressed Size     00000000 (0)\n-030A83 Filename Length       0027 (39)\n-030A85 Extra Length          0000 (0)\n-030A87 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+051FC3 Compression Method    0008 (8) 'Deflated'\n+051FC5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+051FC9 CRC                   00000000 (0)\n+051FCD Compressed Size       00000000 (0)\n+051FD1 Uncompressed Size     00000000 (0)\n+051FD5 Filename Length       003F (63)\n+051FD7 Extra Length          0000 (0)\n+051FD9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x30A87: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x51FD9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-030AAE PAYLOAD               XX\n+052018 PAYLOAD\n \n-030AB0 DATA DESCRIPTOR       08074B50 (134695760)\n-030AB4 CRC                   00000000 (0)\n-030AB8 Compressed Size       00000002 (2)\n-030ABC Uncompressed Size     00000000 (0)\n+0524FA DATA DESCRIPTOR       08074B50 (134695760)\n+0524FE CRC                   50C2BDD7 (1354939863)\n+052502 Compressed Size       000004E2 (1250)\n+052506 Uncompressed Size     00000E1B (3611)\n \n-030AC0 LOCAL HEADER #287     04034B50 (67324752)\n-030AC4 Extract Zip Spec      14 (20) '2.0'\n-030AC5 Extract OS            00 (0) 'MS-DOS'\n-030AC6 General Purpose Flag  0808 (2056)\n+05250A LOCAL HEADER #287     04034B50 (67324752)\n+05250E Extract Zip Spec      14 (20) '2.0'\n+05250F Extract OS            00 (0) 'MS-DOS'\n+052510 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-030AC8 Compression Method    0008 (8) 'Deflated'\n-030ACA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-030ACE CRC                   00000000 (0)\n-030AD2 Compressed Size       00000000 (0)\n-030AD6 Uncompressed Size     00000000 (0)\n-030ADA Filename Length       0040 (64)\n-030ADC Extra Length          0000 (0)\n-030ADE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+052512 Compression Method    0008 (8) 'Deflated'\n+052514 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+052518 CRC                   00000000 (0)\n+05251C Compressed Size       00000000 (0)\n+052520 Uncompressed Size     00000000 (0)\n+052524 Filename Length       002B (43)\n+052526 Extra Length          0000 (0)\n+052528 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x30ADE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x52528: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-030B1E PAYLOAD\n+052553 PAYLOAD\n \n-030E59 DATA DESCRIPTOR       08074B50 (134695760)\n-030E5D CRC                   704BFEFA (1884028666)\n-030E61 Compressed Size       0000033B (827)\n-030E65 Uncompressed Size     00000741 (1857)\n+052DA5 DATA DESCRIPTOR       08074B50 (134695760)\n+052DA9 CRC                   4F0E9D5D (1326357853)\n+052DAD Compressed Size       00000852 (2130)\n+052DB1 Uncompressed Size     00002017 (8215)\n \n-030E69 LOCAL HEADER #288     04034B50 (67324752)\n-030E6D Extract Zip Spec      14 (20) '2.0'\n-030E6E Extract OS            00 (0) 'MS-DOS'\n-030E6F General Purpose Flag  0808 (2056)\n+052DB5 LOCAL HEADER #288     04034B50 (67324752)\n+052DB9 Extract Zip Spec      14 (20) '2.0'\n+052DBA Extract OS            00 (0) 'MS-DOS'\n+052DBB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-030E71 Compression Method    0008 (8) 'Deflated'\n-030E73 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-030E77 CRC                   00000000 (0)\n-030E7B Compressed Size       00000000 (0)\n-030E7F Uncompressed Size     00000000 (0)\n-030E83 Filename Length       0020 (32)\n-030E85 Extra Length          0000 (0)\n-030E87 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+052DBD Compression Method    0008 (8) 'Deflated'\n+052DBF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+052DC3 CRC                   00000000 (0)\n+052DC7 Compressed Size       00000000 (0)\n+052DCB Uncompressed Size     00000000 (0)\n+052DCF Filename Length       003B (59)\n+052DD1 Extra Length          0000 (0)\n+052DD3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x30E87: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x52DD3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-030EA7 PAYLOAD               XX\n+052E0E PAYLOAD\n \n-030EA9 DATA DESCRIPTOR       08074B50 (134695760)\n-030EAD CRC                   00000000 (0)\n-030EB1 Compressed Size       00000002 (2)\n-030EB5 Uncompressed Size     00000000 (0)\n+053084 DATA DESCRIPTOR       08074B50 (134695760)\n+053088 CRC                   35B34ECC (900943564)\n+05308C Compressed Size       00000276 (630)\n+053090 Uncompressed Size     0000049E (1182)\n \n-030EB9 LOCAL HEADER #289     04034B50 (67324752)\n-030EBD Extract Zip Spec      14 (20) '2.0'\n-030EBE Extract OS            00 (0) 'MS-DOS'\n-030EBF General Purpose Flag  0808 (2056)\n+053094 LOCAL HEADER #289     04034B50 (67324752)\n+053098 Extract Zip Spec      14 (20) '2.0'\n+053099 Extract OS            00 (0) 'MS-DOS'\n+05309A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-030EC1 Compression Method    0008 (8) 'Deflated'\n-030EC3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-030EC7 CRC                   00000000 (0)\n-030ECB Compressed Size       00000000 (0)\n-030ECF Uncompressed Size     00000000 (0)\n-030ED3 Filename Length       0044 (68)\n-030ED5 Extra Length          0000 (0)\n-030ED7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05309C Compression Method    0008 (8) 'Deflated'\n+05309E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0530A2 CRC                   00000000 (0)\n+0530A6 Compressed Size       00000000 (0)\n+0530AA Uncompressed Size     00000000 (0)\n+0530AE Filename Length       003D (61)\n+0530B0 Extra Length          0000 (0)\n+0530B2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x30ED7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x530B2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-030F1B PAYLOAD\n+0530EF PAYLOAD\n \n-03124A DATA DESCRIPTOR       08074B50 (134695760)\n-03124E CRC                   7E779F80 (2121768832)\n-031252 Compressed Size       0000032F (815)\n-031256 Uncompressed Size     000007FD (2045)\n+053364 DATA DESCRIPTOR       08074B50 (134695760)\n+053368 CRC                   AE36D6DB (2922829531)\n+05336C Compressed Size       00000275 (629)\n+053370 Uncompressed Size     000004A6 (1190)\n \n-03125A LOCAL HEADER #290     04034B50 (67324752)\n-03125E Extract Zip Spec      14 (20) '2.0'\n-03125F Extract OS            00 (0) 'MS-DOS'\n-031260 General Purpose Flag  0808 (2056)\n+053374 LOCAL HEADER #290     04034B50 (67324752)\n+053378 Extract Zip Spec      14 (20) '2.0'\n+053379 Extract OS            00 (0) 'MS-DOS'\n+05337A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-031262 Compression Method    0008 (8) 'Deflated'\n-031264 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-031268 CRC                   00000000 (0)\n-03126C Compressed Size       00000000 (0)\n-031270 Uncompressed Size     00000000 (0)\n-031274 Filename Length       0021 (33)\n-031276 Extra Length          0000 (0)\n-031278 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05337C Compression Method    0008 (8) 'Deflated'\n+05337E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+053382 CRC                   00000000 (0)\n+053386 Compressed Size       00000000 (0)\n+05338A Uncompressed Size     00000000 (0)\n+05338E Filename Length       002B (43)\n+053390 Extra Length          0000 (0)\n+053392 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x31278: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x53392: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-031299 PAYLOAD               XX\n+0533BD PAYLOAD\n \n-03129B DATA DESCRIPTOR       08074B50 (134695760)\n-03129F CRC                   00000000 (0)\n-0312A3 Compressed Size       00000002 (2)\n-0312A7 Uncompressed Size     00000000 (0)\n+054000 DATA DESCRIPTOR       08074B50 (134695760)\n+054004 CRC                   693DBCBA (1765653690)\n+054008 Compressed Size       00000C43 (3139)\n+05400C Uncompressed Size     00002F4D (12109)\n \n-0312AB LOCAL HEADER #291     04034B50 (67324752)\n-0312AF Extract Zip Spec      14 (20) '2.0'\n-0312B0 Extract OS            00 (0) 'MS-DOS'\n-0312B1 General Purpose Flag  0808 (2056)\n+054010 LOCAL HEADER #291     04034B50 (67324752)\n+054014 Extract Zip Spec      14 (20) '2.0'\n+054015 Extract OS            00 (0) 'MS-DOS'\n+054016 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0312B3 Compression Method    0008 (8) 'Deflated'\n-0312B5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0312B9 CRC                   00000000 (0)\n-0312BD Compressed Size       00000000 (0)\n-0312C1 Uncompressed Size     00000000 (0)\n-0312C5 Filename Length       0049 (73)\n-0312C7 Extra Length          0000 (0)\n-0312C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+054018 Compression Method    0008 (8) 'Deflated'\n+05401A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05401E CRC                   00000000 (0)\n+054022 Compressed Size       00000000 (0)\n+054026 Uncompressed Size     00000000 (0)\n+05402A Filename Length       002D (45)\n+05402C Extra Length          0000 (0)\n+05402E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x312C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5402E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-031312 PAYLOAD\n+05405B PAYLOAD\n \n-0318D0 DATA DESCRIPTOR       08074B50 (134695760)\n-0318D4 CRC                   33B32090 (867377296)\n-0318D8 Compressed Size       000005BE (1470)\n-0318DC Uncompressed Size     00001259 (4697)\n+054FCF DATA DESCRIPTOR       08074B50 (134695760)\n+054FD3 CRC                   44BCC62B (1153222187)\n+054FD7 Compressed Size       00000F74 (3956)\n+054FDB Uncompressed Size     00004608 (17928)\n \n-0318E0 LOCAL HEADER #292     04034B50 (67324752)\n-0318E4 Extract Zip Spec      14 (20) '2.0'\n-0318E5 Extract OS            00 (0) 'MS-DOS'\n-0318E6 General Purpose Flag  0808 (2056)\n+054FDF LOCAL HEADER #292     04034B50 (67324752)\n+054FE3 Extract Zip Spec      14 (20) '2.0'\n+054FE4 Extract OS            00 (0) 'MS-DOS'\n+054FE5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0318E8 Compression Method    0008 (8) 'Deflated'\n-0318EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0318EE CRC                   00000000 (0)\n-0318F2 Compressed Size       00000000 (0)\n-0318F6 Uncompressed Size     00000000 (0)\n-0318FA Filename Length       0043 (67)\n-0318FC Extra Length          0000 (0)\n-0318FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+054FE7 Compression Method    0008 (8) 'Deflated'\n+054FE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+054FED CRC                   00000000 (0)\n+054FF1 Compressed Size       00000000 (0)\n+054FF5 Uncompressed Size     00000000 (0)\n+054FF9 Filename Length       0021 (33)\n+054FFB Extra Length          0000 (0)\n+054FFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x318FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x54FFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-031941 PAYLOAD\n+05501E PAYLOAD               XX\n \n-031D3A DATA DESCRIPTOR       08074B50 (134695760)\n-031D3E CRC                   DEA0C858 (3735079000)\n-031D42 Compressed Size       000003F9 (1017)\n-031D46 Uncompressed Size     00000A13 (2579)\n+055020 DATA DESCRIPTOR       08074B50 (134695760)\n+055024 CRC                   00000000 (0)\n+055028 Compressed Size       00000002 (2)\n+05502C Uncompressed Size     00000000 (0)\n \n-031D4A LOCAL HEADER #293     04034B50 (67324752)\n-031D4E Extract Zip Spec      14 (20) '2.0'\n-031D4F Extract OS            00 (0) 'MS-DOS'\n-031D50 General Purpose Flag  0808 (2056)\n+055030 LOCAL HEADER #293     04034B50 (67324752)\n+055034 Extract Zip Spec      14 (20) '2.0'\n+055035 Extract OS            00 (0) 'MS-DOS'\n+055036 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-031D52 Compression Method    0008 (8) 'Deflated'\n-031D54 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-031D58 CRC                   00000000 (0)\n-031D5C Compressed Size       00000000 (0)\n-031D60 Uncompressed Size     00000000 (0)\n-031D64 Filename Length       001E (30)\n-031D66 Extra Length          0000 (0)\n-031D68 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+055038 Compression Method    0008 (8) 'Deflated'\n+05503A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05503E CRC                   00000000 (0)\n+055042 Compressed Size       00000000 (0)\n+055046 Uncompressed Size     00000000 (0)\n+05504A Filename Length       002E (46)\n+05504C Extra Length          0000 (0)\n+05504E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x31D68: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5504E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-031D86 PAYLOAD               XX\n+05507C PAYLOAD\n \n-031D88 DATA DESCRIPTOR       08074B50 (134695760)\n-031D8C CRC                   00000000 (0)\n-031D90 Compressed Size       00000002 (2)\n-031D94 Uncompressed Size     00000000 (0)\n+05530B DATA DESCRIPTOR       08074B50 (134695760)\n+05530F CRC                   01EEDE5E (32431710)\n+055313 Compressed Size       0000028F (655)\n+055317 Uncompressed Size     000004E7 (1255)\n \n-031D98 LOCAL HEADER #294     04034B50 (67324752)\n-031D9C Extract Zip Spec      14 (20) '2.0'\n-031D9D Extract OS            00 (0) 'MS-DOS'\n-031D9E General Purpose Flag  0808 (2056)\n+05531B LOCAL HEADER #294     04034B50 (67324752)\n+05531F Extract Zip Spec      14 (20) '2.0'\n+055320 Extract OS            00 (0) 'MS-DOS'\n+055321 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-031DA0 Compression Method    0008 (8) 'Deflated'\n-031DA2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-031DA6 CRC                   00000000 (0)\n-031DAA Compressed Size       00000000 (0)\n-031DAE Uncompressed Size     00000000 (0)\n-031DB2 Filename Length       0038 (56)\n-031DB4 Extra Length          0000 (0)\n-031DB6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+055323 Compression Method    0008 (8) 'Deflated'\n+055325 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+055329 CRC                   00000000 (0)\n+05532D Compressed Size       00000000 (0)\n+055331 Uncompressed Size     00000000 (0)\n+055335 Filename Length       0029 (41)\n+055337 Extra Length          0000 (0)\n+055339 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x31DB6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x55339: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-031DEE PAYLOAD\n+055362 PAYLOAD               XX\n \n-0334E8 DATA DESCRIPTOR       08074B50 (134695760)\n-0334EC CRC                   CE83BFB8 (3464740792)\n-0334F0 Compressed Size       000016FA (5882)\n-0334F4 Uncompressed Size     00007356 (29526)\n+055364 DATA DESCRIPTOR       08074B50 (134695760)\n+055368 CRC                   00000000 (0)\n+05536C Compressed Size       00000002 (2)\n+055370 Uncompressed Size     00000000 (0)\n \n-0334F8 LOCAL HEADER #295     04034B50 (67324752)\n-0334FC Extract Zip Spec      14 (20) '2.0'\n-0334FD Extract OS            00 (0) 'MS-DOS'\n-0334FE General Purpose Flag  0808 (2056)\n+055374 LOCAL HEADER #295     04034B50 (67324752)\n+055378 Extract Zip Spec      14 (20) '2.0'\n+055379 Extract OS            00 (0) 'MS-DOS'\n+05537A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-033500 Compression Method    0008 (8) 'Deflated'\n-033502 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-033506 CRC                   00000000 (0)\n-03350A Compressed Size       00000000 (0)\n-03350E Uncompressed Size     00000000 (0)\n-033512 Filename Length       0037 (55)\n-033514 Extra Length          0000 (0)\n-033516 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05537C Compression Method    0008 (8) 'Deflated'\n+05537E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+055382 CRC                   00000000 (0)\n+055386 Compressed Size       00000000 (0)\n+05538A Uncompressed Size     00000000 (0)\n+05538E Filename Length       003E (62)\n+055390 Extra Length          0000 (0)\n+055392 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x33516: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x55392: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03354D PAYLOAD\n+0553D0 PAYLOAD\n \n-033E14 DATA DESCRIPTOR       08074B50 (134695760)\n-033E18 CRC                   B659AACE (3059329742)\n-033E1C Compressed Size       000008C7 (2247)\n-033E20 Uncompressed Size     0000227D (8829)\n+055860 DATA DESCRIPTOR       08074B50 (134695760)\n+055864 CRC                   20854F04 (545607428)\n+055868 Compressed Size       00000490 (1168)\n+05586C Uncompressed Size     00000B1B (2843)\n \n-033E24 LOCAL HEADER #296     04034B50 (67324752)\n-033E28 Extract Zip Spec      14 (20) '2.0'\n-033E29 Extract OS            00 (0) 'MS-DOS'\n-033E2A General Purpose Flag  0808 (2056)\n+055870 LOCAL HEADER #296     04034B50 (67324752)\n+055874 Extract Zip Spec      14 (20) '2.0'\n+055875 Extract OS            00 (0) 'MS-DOS'\n+055876 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-033E2C Compression Method    0008 (8) 'Deflated'\n-033E2E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-033E32 CRC                   00000000 (0)\n-033E36 Compressed Size       00000000 (0)\n-033E3A Uncompressed Size     00000000 (0)\n-033E3E Filename Length       000F (15)\n-033E40 Extra Length          0000 (0)\n-033E42 Filename              'XXXXXXXXXXXXXXX'\n+055878 Compression Method    0008 (8) 'Deflated'\n+05587A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05587E CRC                   00000000 (0)\n+055882 Compressed Size       00000000 (0)\n+055886 Uncompressed Size     00000000 (0)\n+05588A Filename Length       003E (62)\n+05588C Extra Length          0000 (0)\n+05588E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x33E42: Filename 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5588E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-033E51 PAYLOAD               XX\n+0558CC PAYLOAD\n \n-033E53 DATA DESCRIPTOR       08074B50 (134695760)\n-033E57 CRC                   00000000 (0)\n-033E5B Compressed Size       00000002 (2)\n-033E5F Uncompressed Size     00000000 (0)\n+055C04 DATA DESCRIPTOR       08074B50 (134695760)\n+055C08 CRC                   D19D012A (3516727594)\n+055C0C Compressed Size       00000338 (824)\n+055C10 Uncompressed Size     00000733 (1843)\n \n-033E63 LOCAL HEADER #297     04034B50 (67324752)\n-033E67 Extract Zip Spec      14 (20) '2.0'\n-033E68 Extract OS            00 (0) 'MS-DOS'\n-033E69 General Purpose Flag  0808 (2056)\n+055C14 LOCAL HEADER #297     04034B50 (67324752)\n+055C18 Extract Zip Spec      14 (20) '2.0'\n+055C19 Extract OS            00 (0) 'MS-DOS'\n+055C1A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-033E6B Compression Method    0008 (8) 'Deflated'\n-033E6D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-033E71 CRC                   00000000 (0)\n-033E75 Compressed Size       00000000 (0)\n-033E79 Uncompressed Size     00000000 (0)\n-033E7D Filename Length       0018 (24)\n-033E7F Extra Length          0000 (0)\n-033E81 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+055C1C Compression Method    0008 (8) 'Deflated'\n+055C1E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+055C22 CRC                   00000000 (0)\n+055C26 Compressed Size       00000000 (0)\n+055C2A Uncompressed Size     00000000 (0)\n+055C2E Filename Length       0038 (56)\n+055C30 Extra Length          0000 (0)\n+055C32 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x33E81: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x55C32: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-033E99 PAYLOAD               XX\n+055C6A PAYLOAD\n \n-033E9B DATA DESCRIPTOR       08074B50 (134695760)\n-033E9F CRC                   00000000 (0)\n-033EA3 Compressed Size       00000002 (2)\n-033EA7 Uncompressed Size     00000000 (0)\n+05699D DATA DESCRIPTOR       08074B50 (134695760)\n+0569A1 CRC                   489CA2B6 (1218224822)\n+0569A5 Compressed Size       00000D33 (3379)\n+0569A9 Uncompressed Size     00003CC4 (15556)\n \n-033EAB LOCAL HEADER #298     04034B50 (67324752)\n-033EAF Extract Zip Spec      14 (20) '2.0'\n-033EB0 Extract OS            00 (0) 'MS-DOS'\n-033EB1 General Purpose Flag  0808 (2056)\n+0569AD LOCAL HEADER #298     04034B50 (67324752)\n+0569B1 Extract Zip Spec      14 (20) '2.0'\n+0569B2 Extract OS            00 (0) 'MS-DOS'\n+0569B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-033EB3 Compression Method    0008 (8) 'Deflated'\n-033EB5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-033EB9 CRC                   00000000 (0)\n-033EBD Compressed Size       00000000 (0)\n-033EC1 Uncompressed Size     00000000 (0)\n-033EC5 Filename Length       001F (31)\n-033EC7 Extra Length          0000 (0)\n-033EC9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0569B5 Compression Method    0008 (8) 'Deflated'\n+0569B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0569BB CRC                   00000000 (0)\n+0569BF Compressed Size       00000000 (0)\n+0569C3 Uncompressed Size     00000000 (0)\n+0569C7 Filename Length       003C (60)\n+0569C9 Extra Length          0000 (0)\n+0569CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x33EC9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x569CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-033EE8 PAYLOAD               XX\n+056A07 PAYLOAD\n \n-033EEA DATA DESCRIPTOR       08074B50 (134695760)\n-033EEE CRC                   00000000 (0)\n-033EF2 Compressed Size       00000002 (2)\n-033EF6 Uncompressed Size     00000000 (0)\n+056FFF DATA DESCRIPTOR       08074B50 (134695760)\n+057003 CRC                   BD63F8B8 (3177445560)\n+057007 Compressed Size       000005F8 (1528)\n+05700B Uncompressed Size     000013BA (5050)\n \n-033EFA LOCAL HEADER #299     04034B50 (67324752)\n-033EFE Extract Zip Spec      14 (20) '2.0'\n-033EFF Extract OS            00 (0) 'MS-DOS'\n-033F00 General Purpose Flag  0808 (2056)\n+05700F LOCAL HEADER #299     04034B50 (67324752)\n+057013 Extract Zip Spec      14 (20) '2.0'\n+057014 Extract OS            00 (0) 'MS-DOS'\n+057015 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-033F02 Compression Method    0008 (8) 'Deflated'\n-033F04 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-033F08 CRC                   00000000 (0)\n-033F0C Compressed Size       00000000 (0)\n-033F10 Uncompressed Size     00000000 (0)\n-033F14 Filename Length       0034 (52)\n-033F16 Extra Length          0000 (0)\n-033F18 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+057017 Compression Method    0008 (8) 'Deflated'\n+057019 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05701D CRC                   00000000 (0)\n+057021 Compressed Size       00000000 (0)\n+057025 Uncompressed Size     00000000 (0)\n+057029 Filename Length       003F (63)\n+05702B Extra Length          0000 (0)\n+05702D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x33F18: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5702D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-033F4C PAYLOAD\n+05706C PAYLOAD\n \n-0344FC DATA DESCRIPTOR       08074B50 (134695760)\n-034500 CRC                   D4A82FA9 (3567792041)\n-034504 Compressed Size       000005B0 (1456)\n-034508 Uncompressed Size     000011C8 (4552)\n+0575A7 DATA DESCRIPTOR       08074B50 (134695760)\n+0575AB CRC                   C96B89A9 (3379268009)\n+0575AF Compressed Size       0000053B (1339)\n+0575B3 Uncompressed Size     00000DB0 (3504)\n \n-03450C LOCAL HEADER #300     04034B50 (67324752)\n-034510 Extract Zip Spec      14 (20) '2.0'\n-034511 Extract OS            00 (0) 'MS-DOS'\n-034512 General Purpose Flag  0808 (2056)\n+0575B7 LOCAL HEADER #300     04034B50 (67324752)\n+0575BB Extract Zip Spec      14 (20) '2.0'\n+0575BC Extract OS            00 (0) 'MS-DOS'\n+0575BD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-034514 Compression Method    0008 (8) 'Deflated'\n-034516 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03451A CRC                   00000000 (0)\n-03451E Compressed Size       00000000 (0)\n-034522 Uncompressed Size     00000000 (0)\n-034526 Filename Length       0031 (49)\n-034528 Extra Length          0000 (0)\n-03452A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0575BF Compression Method    0008 (8) 'Deflated'\n+0575C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0575C5 CRC                   00000000 (0)\n+0575C9 Compressed Size       00000000 (0)\n+0575CD Uncompressed Size     00000000 (0)\n+0575D1 Filename Length       0039 (57)\n+0575D3 Extra Length          0000 (0)\n+0575D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3452A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x575D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03455B PAYLOAD\n+05760E PAYLOAD\n \n-034AA3 DATA DESCRIPTOR       08074B50 (134695760)\n-034AA7 CRC                   3F3FCF79 (1061146489)\n-034AAB Compressed Size       00000548 (1352)\n-034AAF Uncompressed Size     0000135C (4956)\n+058123 DATA DESCRIPTOR       08074B50 (134695760)\n+058127 CRC                   3FE3ACCB (1071885515)\n+05812B Compressed Size       00000B15 (2837)\n+05812F Uncompressed Size     00002CC5 (11461)\n \n-034AB3 LOCAL HEADER #301     04034B50 (67324752)\n-034AB7 Extract Zip Spec      14 (20) '2.0'\n-034AB8 Extract OS            00 (0) 'MS-DOS'\n-034AB9 General Purpose Flag  0808 (2056)\n+058133 LOCAL HEADER #301     04034B50 (67324752)\n+058137 Extract Zip Spec      14 (20) '2.0'\n+058138 Extract OS            00 (0) 'MS-DOS'\n+058139 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-034ABB Compression Method    0008 (8) 'Deflated'\n-034ABD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-034AC1 CRC                   00000000 (0)\n-034AC5 Compressed Size       00000000 (0)\n-034AC9 Uncompressed Size     00000000 (0)\n-034ACD Filename Length       002F (47)\n-034ACF Extra Length          0000 (0)\n-034AD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05813B Compression Method    0008 (8) 'Deflated'\n+05813D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+058141 CRC                   00000000 (0)\n+058145 Compressed Size       00000000 (0)\n+058149 Uncompressed Size     00000000 (0)\n+05814D Filename Length       001F (31)\n+05814F Extra Length          0000 (0)\n+058151 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x34AD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x58151: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-034B00 PAYLOAD\n+058170 PAYLOAD               XX\n \n-03506B DATA DESCRIPTOR       08074B50 (134695760)\n-03506F CRC                   F95CA75C (4183598940)\n-035073 Compressed Size       0000056B (1387)\n-035077 Uncompressed Size     0000115B (4443)\n+058172 DATA DESCRIPTOR       08074B50 (134695760)\n+058176 CRC                   00000000 (0)\n+05817A Compressed Size       00000002 (2)\n+05817E Uncompressed Size     00000000 (0)\n \n-03507B LOCAL HEADER #302     04034B50 (67324752)\n-03507F Extract Zip Spec      14 (20) '2.0'\n-035080 Extract OS            00 (0) 'MS-DOS'\n-035081 General Purpose Flag  0808 (2056)\n+058182 LOCAL HEADER #302     04034B50 (67324752)\n+058186 Extract Zip Spec      14 (20) '2.0'\n+058187 Extract OS            00 (0) 'MS-DOS'\n+058188 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-035083 Compression Method    0008 (8) 'Deflated'\n-035085 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-035089 CRC                   00000000 (0)\n-03508D Compressed Size       00000000 (0)\n-035091 Uncompressed Size     00000000 (0)\n-035095 Filename Length       0025 (37)\n-035097 Extra Length          0000 (0)\n-035099 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05818A Compression Method    0008 (8) 'Deflated'\n+05818C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+058190 CRC                   00000000 (0)\n+058194 Compressed Size       00000000 (0)\n+058198 Uncompressed Size     00000000 (0)\n+05819C Filename Length       003A (58)\n+05819E Extra Length          0000 (0)\n+0581A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x35099: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x581A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0350BE PAYLOAD               XX\n+0581DA PAYLOAD\n \n-0350C0 DATA DESCRIPTOR       08074B50 (134695760)\n-0350C4 CRC                   00000000 (0)\n-0350C8 Compressed Size       00000002 (2)\n-0350CC Uncompressed Size     00000000 (0)\n+058770 DATA DESCRIPTOR       08074B50 (134695760)\n+058774 CRC                   A81790A7 (2820116647)\n+058778 Compressed Size       00000596 (1430)\n+05877C Uncompressed Size     0000117D (4477)\n \n-0350D0 LOCAL HEADER #303     04034B50 (67324752)\n-0350D4 Extract Zip Spec      14 (20) '2.0'\n-0350D5 Extract OS            00 (0) 'MS-DOS'\n-0350D6 General Purpose Flag  0808 (2056)\n+058780 LOCAL HEADER #303     04034B50 (67324752)\n+058784 Extract Zip Spec      14 (20) '2.0'\n+058785 Extract OS            00 (0) 'MS-DOS'\n+058786 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0350D8 Compression Method    0008 (8) 'Deflated'\n-0350DA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0350DE CRC                   00000000 (0)\n-0350E2 Compressed Size       00000000 (0)\n-0350E6 Uncompressed Size     00000000 (0)\n-0350EA Filename Length       002D (45)\n-0350EC Extra Length          0000 (0)\n-0350EE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+058788 Compression Method    0008 (8) 'Deflated'\n+05878A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05878E CRC                   00000000 (0)\n+058792 Compressed Size       00000000 (0)\n+058796 Uncompressed Size     00000000 (0)\n+05879A Filename Length       0031 (49)\n+05879C Extra Length          0000 (0)\n+05879E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x350EE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5879E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03511B PAYLOAD               XX\n+0587CF PAYLOAD\n \n-03511D DATA DESCRIPTOR       08074B50 (134695760)\n-035121 CRC                   00000000 (0)\n-035125 Compressed Size       00000002 (2)\n-035129 Uncompressed Size     00000000 (0)\n+058F96 DATA DESCRIPTOR       08074B50 (134695760)\n+058F9A CRC                   AB15E1E2 (2870338018)\n+058F9E Compressed Size       000007C7 (1991)\n+058FA2 Uncompressed Size     00001B78 (7032)\n \n-03512D LOCAL HEADER #304     04034B50 (67324752)\n-035131 Extract Zip Spec      14 (20) '2.0'\n-035132 Extract OS            00 (0) 'MS-DOS'\n-035133 General Purpose Flag  0808 (2056)\n+058FA6 LOCAL HEADER #304     04034B50 (67324752)\n+058FAA Extract Zip Spec      14 (20) '2.0'\n+058FAB Extract OS            00 (0) 'MS-DOS'\n+058FAC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-035135 Compression Method    0008 (8) 'Deflated'\n-035137 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03513B CRC                   00000000 (0)\n-03513F Compressed Size       00000000 (0)\n-035143 Uncompressed Size     00000000 (0)\n-035147 Filename Length       0038 (56)\n-035149 Extra Length          0000 (0)\n-03514B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+058FAE Compression Method    0008 (8) 'Deflated'\n+058FB0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+058FB4 CRC                   00000000 (0)\n+058FB8 Compressed Size       00000000 (0)\n+058FBC Uncompressed Size     00000000 (0)\n+058FC0 Filename Length       0036 (54)\n+058FC2 Extra Length          0000 (0)\n+058FC4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3514B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x58FC4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-035183 PAYLOAD               XX\n+058FFA PAYLOAD\n \n-035185 DATA DESCRIPTOR       08074B50 (134695760)\n-035189 CRC                   00000000 (0)\n-03518D Compressed Size       00000002 (2)\n-035191 Uncompressed Size     00000000 (0)\n+05959D DATA DESCRIPTOR       08074B50 (134695760)\n+0595A1 CRC                   7B55AE57 (2069212759)\n+0595A5 Compressed Size       000005A3 (1443)\n+0595A9 Uncompressed Size     00001330 (4912)\n \n-035195 LOCAL HEADER #305     04034B50 (67324752)\n-035199 Extract Zip Spec      14 (20) '2.0'\n-03519A Extract OS            00 (0) 'MS-DOS'\n-03519B General Purpose Flag  0808 (2056)\n+0595AD LOCAL HEADER #305     04034B50 (67324752)\n+0595B1 Extract Zip Spec      14 (20) '2.0'\n+0595B2 Extract OS            00 (0) 'MS-DOS'\n+0595B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03519D Compression Method    0008 (8) 'Deflated'\n-03519F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0351A3 CRC                   00000000 (0)\n-0351A7 Compressed Size       00000000 (0)\n-0351AB Uncompressed Size     00000000 (0)\n-0351AF Filename Length       0060 (96)\n-0351B1 Extra Length          0000 (0)\n-0351B3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0595B5 Compression Method    0008 (8) 'Deflated'\n+0595B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0595BB CRC                   00000000 (0)\n+0595BF Compressed Size       00000000 (0)\n+0595C3 Uncompressed Size     00000000 (0)\n+0595C7 Filename Length       002F (47)\n+0595C9 Extra Length          0000 (0)\n+0595CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x351B3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x595CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-035213 PAYLOAD\n+0595FA PAYLOAD\n \n-035869 DATA DESCRIPTOR       08074B50 (134695760)\n-03586D CRC                   B8989C24 (3097009188)\n-035871 Compressed Size       00000656 (1622)\n-035875 Uncompressed Size     00001843 (6211)\n+059EE2 DATA DESCRIPTOR       08074B50 (134695760)\n+059EE6 CRC                   8F24621B (2401526299)\n+059EEA Compressed Size       000008E8 (2280)\n+059EEE Uncompressed Size     000027FE (10238)\n \n-035879 LOCAL HEADER #306     04034B50 (67324752)\n-03587D Extract Zip Spec      14 (20) '2.0'\n-03587E Extract OS            00 (0) 'MS-DOS'\n-03587F General Purpose Flag  0808 (2056)\n+059EF2 LOCAL HEADER #306     04034B50 (67324752)\n+059EF6 Extract Zip Spec      14 (20) '2.0'\n+059EF7 Extract OS            00 (0) 'MS-DOS'\n+059EF8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-035881 Compression Method    0008 (8) 'Deflated'\n-035883 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-035887 CRC                   00000000 (0)\n-03588B Compressed Size       00000000 (0)\n-03588F Uncompressed Size     00000000 (0)\n-035893 Filename Length       0060 (96)\n-035895 Extra Length          0000 (0)\n-035897 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+059EFA Compression Method    0008 (8) 'Deflated'\n+059EFC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+059F00 CRC                   00000000 (0)\n+059F04 Compressed Size       00000000 (0)\n+059F08 Uncompressed Size     00000000 (0)\n+059F0C Filename Length       003C (60)\n+059F0E Extra Length          0000 (0)\n+059F10 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x35897: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x59F10: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0358F7 PAYLOAD\n+059F4C PAYLOAD\n \n-035F90 DATA DESCRIPTOR       08074B50 (134695760)\n-035F94 CRC                   88B1EF9C (2293362588)\n-035F98 Compressed Size       00000699 (1689)\n-035F9C Uncompressed Size     00001A70 (6768)\n+05A1E8 DATA DESCRIPTOR       08074B50 (134695760)\n+05A1EC CRC                   2A9E8F07 (715034375)\n+05A1F0 Compressed Size       0000029C (668)\n+05A1F4 Uncompressed Size     00000516 (1302)\n \n-035FA0 LOCAL HEADER #307     04034B50 (67324752)\n-035FA4 Extract Zip Spec      14 (20) '2.0'\n-035FA5 Extract OS            00 (0) 'MS-DOS'\n-035FA6 General Purpose Flag  0808 (2056)\n+05A1F8 LOCAL HEADER #307     04034B50 (67324752)\n+05A1FC Extract Zip Spec      14 (20) '2.0'\n+05A1FD Extract OS            00 (0) 'MS-DOS'\n+05A1FE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-035FA8 Compression Method    0008 (8) 'Deflated'\n-035FAA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-035FAE CRC                   00000000 (0)\n-035FB2 Compressed Size       00000000 (0)\n-035FB6 Uncompressed Size     00000000 (0)\n-035FBA Filename Length       005C (92)\n-035FBC Extra Length          0000 (0)\n-035FBE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05A200 Compression Method    0008 (8) 'Deflated'\n+05A202 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05A206 CRC                   00000000 (0)\n+05A20A Compressed Size       00000000 (0)\n+05A20E Uncompressed Size     00000000 (0)\n+05A212 Filename Length       0039 (57)\n+05A214 Extra Length          0000 (0)\n+05A216 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x35FBE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5A216: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03601A PAYLOAD\n+05A24F PAYLOAD\n \n-0363E5 DATA DESCRIPTOR       08074B50 (134695760)\n-0363E9 CRC                   B78EFF6E (3079602030)\n-0363ED Compressed Size       000003CB (971)\n-0363F1 Uncompressed Size     00000BDD (3037)\n+05A59E DATA DESCRIPTOR       08074B50 (134695760)\n+05A5A2 CRC                   C6D0F0BC (3335581884)\n+05A5A6 Compressed Size       0000034F (847)\n+05A5AA Uncompressed Size     000007B0 (1968)\n \n-0363F5 LOCAL HEADER #308     04034B50 (67324752)\n-0363F9 Extract Zip Spec      14 (20) '2.0'\n-0363FA Extract OS            00 (0) 'MS-DOS'\n-0363FB General Purpose Flag  0808 (2056)\n+05A5AE LOCAL HEADER #308     04034B50 (67324752)\n+05A5B2 Extract Zip Spec      14 (20) '2.0'\n+05A5B3 Extract OS            00 (0) 'MS-DOS'\n+05A5B4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0363FD Compression Method    0008 (8) 'Deflated'\n-0363FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-036403 CRC                   00000000 (0)\n-036407 Compressed Size       00000000 (0)\n-03640B Uncompressed Size     00000000 (0)\n-03640F Filename Length       005A (90)\n-036411 Extra Length          0000 (0)\n-036413 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05A5B6 Compression Method    0008 (8) 'Deflated'\n+05A5B8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05A5BC CRC                   00000000 (0)\n+05A5C0 Compressed Size       00000000 (0)\n+05A5C4 Uncompressed Size     00000000 (0)\n+05A5C8 Filename Length       003D (61)\n+05A5CA Extra Length          0000 (0)\n+05A5CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x36413: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5A5CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03646D PAYLOAD\n+05A609 PAYLOAD\n \n-0368C8 DATA DESCRIPTOR       08074B50 (134695760)\n-0368CC CRC                   F2F49006 (4076113926)\n-0368D0 Compressed Size       0000045B (1115)\n-0368D4 Uncompressed Size     00000C34 (3124)\n+05A885 DATA DESCRIPTOR       08074B50 (134695760)\n+05A889 CRC                   A545EC4C (2772823116)\n+05A88D Compressed Size       0000027C (636)\n+05A891 Uncompressed Size     000004DD (1245)\n \n-0368D8 LOCAL HEADER #309     04034B50 (67324752)\n-0368DC Extract Zip Spec      14 (20) '2.0'\n-0368DD Extract OS            00 (0) 'MS-DOS'\n-0368DE General Purpose Flag  0808 (2056)\n+05A895 LOCAL HEADER #309     04034B50 (67324752)\n+05A899 Extract Zip Spec      14 (20) '2.0'\n+05A89A Extract OS            00 (0) 'MS-DOS'\n+05A89B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0368E0 Compression Method    0008 (8) 'Deflated'\n-0368E2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0368E6 CRC                   00000000 (0)\n-0368EA Compressed Size       00000000 (0)\n-0368EE Uncompressed Size     00000000 (0)\n-0368F2 Filename Length       0061 (97)\n-0368F4 Extra Length          0000 (0)\n-0368F6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05A89D Compression Method    0008 (8) 'Deflated'\n+05A89F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05A8A3 CRC                   00000000 (0)\n+05A8A7 Compressed Size       00000000 (0)\n+05A8AB Uncompressed Size     00000000 (0)\n+05A8AF Filename Length       003B (59)\n+05A8B1 Extra Length          0000 (0)\n+05A8B3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x368F6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5A8B3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-036957 PAYLOAD\n+05A8EE PAYLOAD\n \n-037982 DATA DESCRIPTOR       08074B50 (134695760)\n-037986 CRC                   63E9E69D (1676273309)\n-03798A Compressed Size       0000102B (4139)\n-03798E Uncompressed Size     000048C6 (18630)\n+05ACAE DATA DESCRIPTOR       08074B50 (134695760)\n+05ACB2 CRC                   8BA4EDED (2342841837)\n+05ACB6 Compressed Size       000003C0 (960)\n+05ACBA Uncompressed Size     00000A8C (2700)\n \n-037992 LOCAL HEADER #310     04034B50 (67324752)\n-037996 Extract Zip Spec      14 (20) '2.0'\n-037997 Extract OS            00 (0) 'MS-DOS'\n-037998 General Purpose Flag  0808 (2056)\n+05ACBE LOCAL HEADER #310     04034B50 (67324752)\n+05ACC2 Extract Zip Spec      14 (20) '2.0'\n+05ACC3 Extract OS            00 (0) 'MS-DOS'\n+05ACC4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03799A Compression Method    0008 (8) 'Deflated'\n-03799C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0379A0 CRC                   00000000 (0)\n-0379A4 Compressed Size       00000000 (0)\n-0379A8 Uncompressed Size     00000000 (0)\n-0379AC Filename Length       0051 (81)\n-0379AE Extra Length          0000 (0)\n-0379B0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05ACC6 Compression Method    0008 (8) 'Deflated'\n+05ACC8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05ACCC CRC                   00000000 (0)\n+05ACD0 Compressed Size       00000000 (0)\n+05ACD4 Uncompressed Size     00000000 (0)\n+05ACD8 Filename Length       0037 (55)\n+05ACDA Extra Length          0000 (0)\n+05ACDC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x379B0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5ACDC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-037A01 PAYLOAD\n+05AD13 PAYLOAD\n \n-038215 DATA DESCRIPTOR       08074B50 (134695760)\n-038219 CRC                   7BF0B1BF (2079371711)\n-03821D Compressed Size       00000814 (2068)\n-038221 Uncompressed Size     00001CDC (7388)\n+05AFA3 DATA DESCRIPTOR       08074B50 (134695760)\n+05AFA7 CRC                   C8BED78D (3367950221)\n+05AFAB Compressed Size       00000290 (656)\n+05AFAF Uncompressed Size     000004CE (1230)\n \n-038225 LOCAL HEADER #311     04034B50 (67324752)\n-038229 Extract Zip Spec      14 (20) '2.0'\n-03822A Extract OS            00 (0) 'MS-DOS'\n-03822B General Purpose Flag  0808 (2056)\n+05AFB3 LOCAL HEADER #311     04034B50 (67324752)\n+05AFB7 Extract Zip Spec      14 (20) '2.0'\n+05AFB8 Extract OS            00 (0) 'MS-DOS'\n+05AFB9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03822D Compression Method    0008 (8) 'Deflated'\n-03822F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-038233 CRC                   00000000 (0)\n-038237 Compressed Size       00000000 (0)\n-03823B Uncompressed Size     00000000 (0)\n-03823F Filename Length       005F (95)\n-038241 Extra Length          0000 (0)\n-038243 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05AFBB Compression Method    0008 (8) 'Deflated'\n+05AFBD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05AFC1 CRC                   00000000 (0)\n+05AFC5 Compressed Size       00000000 (0)\n+05AFC9 Uncompressed Size     00000000 (0)\n+05AFCD Filename Length       002C (44)\n+05AFCF Extra Length          0000 (0)\n+05AFD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x38243: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5AFD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0382A2 PAYLOAD\n+05AFFD PAYLOAD               XX\n \n-0385B2 DATA DESCRIPTOR       08074B50 (134695760)\n-0385B6 CRC                   3CA6083C (1017514044)\n-0385BA Compressed Size       00000310 (784)\n-0385BE Uncompressed Size     00000716 (1814)\n+05AFFF DATA DESCRIPTOR       08074B50 (134695760)\n+05B003 CRC                   00000000 (0)\n+05B007 Compressed Size       00000002 (2)\n+05B00B Uncompressed Size     00000000 (0)\n \n-0385C2 LOCAL HEADER #312     04034B50 (67324752)\n-0385C6 Extract Zip Spec      14 (20) '2.0'\n-0385C7 Extract OS            00 (0) 'MS-DOS'\n-0385C8 General Purpose Flag  0808 (2056)\n+05B00F LOCAL HEADER #312     04034B50 (67324752)\n+05B013 Extract Zip Spec      14 (20) '2.0'\n+05B014 Extract OS            00 (0) 'MS-DOS'\n+05B015 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0385CA Compression Method    0008 (8) 'Deflated'\n-0385CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0385D0 CRC                   00000000 (0)\n-0385D4 Compressed Size       00000000 (0)\n-0385D8 Uncompressed Size     00000000 (0)\n-0385DC Filename Length       0053 (83)\n-0385DE Extra Length          0000 (0)\n-0385E0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05B017 Compression Method    0008 (8) 'Deflated'\n+05B019 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05B01D CRC                   00000000 (0)\n+05B021 Compressed Size       00000000 (0)\n+05B025 Uncompressed Size     00000000 (0)\n+05B029 Filename Length       004D (77)\n+05B02B Extra Length          0000 (0)\n+05B02D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x385E0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5B02D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-038633 PAYLOAD\n+05B07A PAYLOAD\n \n-038B1D DATA DESCRIPTOR       08074B50 (134695760)\n-038B21 CRC                   87C6FC27 (2277964839)\n-038B25 Compressed Size       000004EA (1258)\n-038B29 Uncompressed Size     00001175 (4469)\n+05B9EA DATA DESCRIPTOR       08074B50 (134695760)\n+05B9EE CRC                   8153B7AF (2169747375)\n+05B9F2 Compressed Size       00000970 (2416)\n+05B9F6 Uncompressed Size     00002780 (10112)\n \n-038B2D LOCAL HEADER #313     04034B50 (67324752)\n-038B31 Extract Zip Spec      14 (20) '2.0'\n-038B32 Extract OS            00 (0) 'MS-DOS'\n-038B33 General Purpose Flag  0808 (2056)\n+05B9FA LOCAL HEADER #313     04034B50 (67324752)\n+05B9FE Extract Zip Spec      14 (20) '2.0'\n+05B9FF Extract OS            00 (0) 'MS-DOS'\n+05BA00 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-038B35 Compression Method    0008 (8) 'Deflated'\n-038B37 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-038B3B CRC                   00000000 (0)\n-038B3F Compressed Size       00000000 (0)\n-038B43 Uncompressed Size     00000000 (0)\n-038B47 Filename Length       0056 (86)\n-038B49 Extra Length          0000 (0)\n-038B4B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05BA02 Compression Method    0008 (8) 'Deflated'\n+05BA04 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05BA08 CRC                   00000000 (0)\n+05BA0C Compressed Size       00000000 (0)\n+05BA10 Uncompressed Size     00000000 (0)\n+05BA14 Filename Length       0054 (84)\n+05BA16 Extra Length          0000 (0)\n+05BA18 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x38B4B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5BA18: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-038BA1 PAYLOAD\n+05BA6C PAYLOAD\n \n-039D98 DATA DESCRIPTOR       08074B50 (134695760)\n-039D9C CRC                   DD6B0419 (3714778137)\n-039DA0 Compressed Size       000011F7 (4599)\n-039DA4 Uncompressed Size     00005649 (22089)\n+05BDA3 DATA DESCRIPTOR       08074B50 (134695760)\n+05BDA7 CRC                   B055C4D7 (2958410967)\n+05BDAB Compressed Size       00000337 (823)\n+05BDAF Uncompressed Size     000006F6 (1782)\n \n-039DA8 LOCAL HEADER #314     04034B50 (67324752)\n-039DAC Extract Zip Spec      14 (20) '2.0'\n-039DAD Extract OS            00 (0) 'MS-DOS'\n-039DAE General Purpose Flag  0808 (2056)\n+05BDB3 LOCAL HEADER #314     04034B50 (67324752)\n+05BDB7 Extract Zip Spec      14 (20) '2.0'\n+05BDB8 Extract OS            00 (0) 'MS-DOS'\n+05BDB9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-039DB0 Compression Method    0008 (8) 'Deflated'\n-039DB2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-039DB6 CRC                   00000000 (0)\n-039DBA Compressed Size       00000000 (0)\n-039DBE Uncompressed Size     00000000 (0)\n-039DC2 Filename Length       0034 (52)\n-039DC4 Extra Length          0000 (0)\n-039DC6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05BDBB Compression Method    0008 (8) 'Deflated'\n+05BDBD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05BDC1 CRC                   00000000 (0)\n+05BDC5 Compressed Size       00000000 (0)\n+05BDC9 Uncompressed Size     00000000 (0)\n+05BDCD Filename Length       0041 (65)\n+05BDCF Extra Length          0000 (0)\n+05BDD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x39DC6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5BDD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-039DFA PAYLOAD               XX\n+05BE12 PAYLOAD\n \n-039DFC DATA DESCRIPTOR       08074B50 (134695760)\n-039E00 CRC                   00000000 (0)\n-039E04 Compressed Size       00000002 (2)\n-039E08 Uncompressed Size     00000000 (0)\n+05C05F DATA DESCRIPTOR       08074B50 (134695760)\n+05C063 CRC                   46172F4A (1175924554)\n+05C067 Compressed Size       0000024D (589)\n+05C06B Uncompressed Size     0000046D (1133)\n \n-039E0C LOCAL HEADER #315     04034B50 (67324752)\n-039E10 Extract Zip Spec      14 (20) '2.0'\n-039E11 Extract OS            00 (0) 'MS-DOS'\n-039E12 General Purpose Flag  0808 (2056)\n+05C06F LOCAL HEADER #315     04034B50 (67324752)\n+05C073 Extract Zip Spec      14 (20) '2.0'\n+05C074 Extract OS            00 (0) 'MS-DOS'\n+05C075 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-039E14 Compression Method    0008 (8) 'Deflated'\n-039E16 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-039E1A CRC                   00000000 (0)\n-039E1E Compressed Size       00000000 (0)\n-039E22 Uncompressed Size     00000000 (0)\n-039E26 Filename Length       005E (94)\n-039E28 Extra Length          0000 (0)\n-039E2A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05C077 Compression Method    0008 (8) 'Deflated'\n+05C079 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05C07D CRC                   00000000 (0)\n+05C081 Compressed Size       00000000 (0)\n+05C085 Uncompressed Size     00000000 (0)\n+05C089 Filename Length       0043 (67)\n+05C08B Extra Length          0000 (0)\n+05C08D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x39E2A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5C08D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-039E88 PAYLOAD\n+05C0D0 PAYLOAD\n \n-03A15C DATA DESCRIPTOR       08074B50 (134695760)\n-03A160 CRC                   B68D8917 (3062728983)\n-03A164 Compressed Size       000002D4 (724)\n-03A168 Uncompressed Size     00000641 (1601)\n+05C4C6 DATA DESCRIPTOR       08074B50 (134695760)\n+05C4CA CRC                   D56D83FB (3580724219)\n+05C4CE Compressed Size       000003F6 (1014)\n+05C4D2 Uncompressed Size     00000B69 (2921)\n \n-03A16C LOCAL HEADER #316     04034B50 (67324752)\n-03A170 Extract Zip Spec      14 (20) '2.0'\n-03A171 Extract OS            00 (0) 'MS-DOS'\n-03A172 General Purpose Flag  0808 (2056)\n+05C4D6 LOCAL HEADER #316     04034B50 (67324752)\n+05C4DA Extract Zip Spec      14 (20) '2.0'\n+05C4DB Extract OS            00 (0) 'MS-DOS'\n+05C4DC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03A174 Compression Method    0008 (8) 'Deflated'\n-03A176 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03A17A CRC                   00000000 (0)\n-03A17E Compressed Size       00000000 (0)\n-03A182 Uncompressed Size     00000000 (0)\n-03A186 Filename Length       0069 (105)\n-03A188 Extra Length          0000 (0)\n-03A18A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05C4DE Compression Method    0008 (8) 'Deflated'\n+05C4E0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05C4E4 CRC                   00000000 (0)\n+05C4E8 Compressed Size       00000000 (0)\n+05C4EC Uncompressed Size     00000000 (0)\n+05C4F0 Filename Length       0046 (70)\n+05C4F2 Extra Length          0000 (0)\n+05C4F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3A18A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5C4F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03A1F3 PAYLOAD\n+05C53A PAYLOAD\n \n-03A7D9 DATA DESCRIPTOR       08074B50 (134695760)\n-03A7DD CRC                   919401C9 (2442396105)\n-03A7E1 Compressed Size       000005E6 (1510)\n-03A7E5 Uncompressed Size     00001153 (4435)\n+05C7EB DATA DESCRIPTOR       08074B50 (134695760)\n+05C7EF CRC                   69A63658 (1772500568)\n+05C7F3 Compressed Size       000002B1 (689)\n+05C7F7 Uncompressed Size     00000532 (1330)\n \n-03A7E9 LOCAL HEADER #317     04034B50 (67324752)\n-03A7ED Extract Zip Spec      14 (20) '2.0'\n-03A7EE Extract OS            00 (0) 'MS-DOS'\n-03A7EF General Purpose Flag  0808 (2056)\n+05C7FB LOCAL HEADER #317     04034B50 (67324752)\n+05C7FF Extract Zip Spec      14 (20) '2.0'\n+05C800 Extract OS            00 (0) 'MS-DOS'\n+05C801 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03A7F1 Compression Method    0008 (8) 'Deflated'\n-03A7F3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03A7F7 CRC                   00000000 (0)\n-03A7FB Compressed Size       00000000 (0)\n-03A7FF Uncompressed Size     00000000 (0)\n-03A803 Filename Length       0064 (100)\n-03A805 Extra Length          0000 (0)\n-03A807 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05C803 Compression Method    0008 (8) 'Deflated'\n+05C805 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05C809 CRC                   00000000 (0)\n+05C80D Compressed Size       00000000 (0)\n+05C811 Uncompressed Size     00000000 (0)\n+05C815 Filename Length       003A (58)\n+05C817 Extra Length          0000 (0)\n+05C819 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3A807: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5C819: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03A86B PAYLOAD\n+05C853 PAYLOAD\n \n-03AF3C DATA DESCRIPTOR       08074B50 (134695760)\n-03AF40 CRC                   587421D1 (1484005841)\n-03AF44 Compressed Size       000006D1 (1745)\n-03AF48 Uncompressed Size     000015AC (5548)\n+05CAAE DATA DESCRIPTOR       08074B50 (134695760)\n+05CAB2 CRC                   01D091A7 (30445991)\n+05CAB6 Compressed Size       0000025B (603)\n+05CABA Uncompressed Size     00000460 (1120)\n \n-03AF4C LOCAL HEADER #318     04034B50 (67324752)\n-03AF50 Extract Zip Spec      14 (20) '2.0'\n-03AF51 Extract OS            00 (0) 'MS-DOS'\n-03AF52 General Purpose Flag  0808 (2056)\n+05CABE LOCAL HEADER #318     04034B50 (67324752)\n+05CAC2 Extract Zip Spec      14 (20) '2.0'\n+05CAC3 Extract OS            00 (0) 'MS-DOS'\n+05CAC4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03AF54 Compression Method    0008 (8) 'Deflated'\n-03AF56 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03AF5A CRC                   00000000 (0)\n-03AF5E Compressed Size       00000000 (0)\n-03AF62 Uncompressed Size     00000000 (0)\n-03AF66 Filename Length       0027 (39)\n-03AF68 Extra Length          0000 (0)\n-03AF6A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05CAC6 Compression Method    0008 (8) 'Deflated'\n+05CAC8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05CACC CRC                   00000000 (0)\n+05CAD0 Compressed Size       00000000 (0)\n+05CAD4 Uncompressed Size     00000000 (0)\n+05CAD8 Filename Length       0045 (69)\n+05CADA Extra Length          0000 (0)\n+05CADC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3AF6A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5CADC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03AF91 PAYLOAD               XX\n+05CB21 PAYLOAD\n \n-03AF93 DATA DESCRIPTOR       08074B50 (134695760)\n-03AF97 CRC                   00000000 (0)\n-03AF9B Compressed Size       00000002 (2)\n-03AF9F Uncompressed Size     00000000 (0)\n+05D3F9 DATA DESCRIPTOR       08074B50 (134695760)\n+05D3FD CRC                   FCBE727C (4240339580)\n+05D401 Compressed Size       000008D8 (2264)\n+05D405 Uncompressed Size     000024E6 (9446)\n \n-03AFA3 LOCAL HEADER #319     04034B50 (67324752)\n-03AFA7 Extract Zip Spec      14 (20) '2.0'\n-03AFA8 Extract OS            00 (0) 'MS-DOS'\n-03AFA9 General Purpose Flag  0808 (2056)\n+05D409 LOCAL HEADER #319     04034B50 (67324752)\n+05D40D Extract Zip Spec      14 (20) '2.0'\n+05D40E Extract OS            00 (0) 'MS-DOS'\n+05D40F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03AFAB Compression Method    0008 (8) 'Deflated'\n-03AFAD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03AFB1 CRC                   00000000 (0)\n-03AFB5 Compressed Size       00000000 (0)\n-03AFB9 Uncompressed Size     00000000 (0)\n-03AFBD Filename Length       004D (77)\n-03AFBF Extra Length          0000 (0)\n-03AFC1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05D411 Compression Method    0008 (8) 'Deflated'\n+05D413 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05D417 CRC                   00000000 (0)\n+05D41B Compressed Size       00000000 (0)\n+05D41F Uncompressed Size     00000000 (0)\n+05D423 Filename Length       004C (76)\n+05D425 Extra Length          0000 (0)\n+05D427 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3AFC1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5D427: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03B00E PAYLOAD\n+05D473 PAYLOAD\n \n-03B3AB DATA DESCRIPTOR       08074B50 (134695760)\n-03B3AF CRC                   CB41069C (3410036380)\n-03B3B3 Compressed Size       0000039D (925)\n-03B3B7 Uncompressed Size     00000A62 (2658)\n+05D7B6 DATA DESCRIPTOR       08074B50 (134695760)\n+05D7BA CRC                   E7C23E33 (3888266803)\n+05D7BE Compressed Size       00000343 (835)\n+05D7C2 Uncompressed Size     000007F1 (2033)\n \n-03B3BB LOCAL HEADER #320     04034B50 (67324752)\n-03B3BF Extract Zip Spec      14 (20) '2.0'\n-03B3C0 Extract OS            00 (0) 'MS-DOS'\n-03B3C1 General Purpose Flag  0808 (2056)\n+05D7C6 LOCAL HEADER #320     04034B50 (67324752)\n+05D7CA Extract Zip Spec      14 (20) '2.0'\n+05D7CB Extract OS            00 (0) 'MS-DOS'\n+05D7CC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03B3C3 Compression Method    0008 (8) 'Deflated'\n-03B3C5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03B3C9 CRC                   00000000 (0)\n-03B3CD Compressed Size       00000000 (0)\n-03B3D1 Uncompressed Size     00000000 (0)\n-03B3D5 Filename Length       004D (77)\n-03B3D7 Extra Length          0000 (0)\n-03B3D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05D7CE Compression Method    0008 (8) 'Deflated'\n+05D7D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05D7D4 CRC                   00000000 (0)\n+05D7D8 Compressed Size       00000000 (0)\n+05D7DC Uncompressed Size     00000000 (0)\n+05D7E0 Filename Length       004D (77)\n+05D7E2 Extra Length          0000 (0)\n+05D7E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3B3D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5D7E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03B426 PAYLOAD\n+05D831 PAYLOAD\n \n-03B82B DATA DESCRIPTOR       08074B50 (134695760)\n-03B82F CRC                   22C199A6 (583113126)\n-03B833 Compressed Size       00000405 (1029)\n-03B837 Uncompressed Size     00000C25 (3109)\n+05DF6A DATA DESCRIPTOR       08074B50 (134695760)\n+05DF6E CRC                   A4ED9691 (2767034001)\n+05DF72 Compressed Size       00000739 (1849)\n+05DF76 Uncompressed Size     00001C35 (7221)\n \n-03B83B LOCAL HEADER #321     04034B50 (67324752)\n-03B83F Extract Zip Spec      14 (20) '2.0'\n-03B840 Extract OS            00 (0) 'MS-DOS'\n-03B841 General Purpose Flag  0808 (2056)\n+05DF7A LOCAL HEADER #321     04034B50 (67324752)\n+05DF7E Extract Zip Spec      14 (20) '2.0'\n+05DF7F Extract OS            00 (0) 'MS-DOS'\n+05DF80 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03B843 Compression Method    0008 (8) 'Deflated'\n-03B845 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03B849 CRC                   00000000 (0)\n-03B84D Compressed Size       00000000 (0)\n-03B851 Uncompressed Size     00000000 (0)\n-03B855 Filename Length       0058 (88)\n-03B857 Extra Length          0000 (0)\n-03B859 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05DF82 Compression Method    0008 (8) 'Deflated'\n+05DF84 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05DF88 CRC                   00000000 (0)\n+05DF8C Compressed Size       00000000 (0)\n+05DF90 Uncompressed Size     00000000 (0)\n+05DF94 Filename Length       0031 (49)\n+05DF96 Extra Length          0000 (0)\n+05DF98 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3B859: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5DF98: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03B8B1 PAYLOAD\n+05DFC9 PAYLOAD               XX\n \n-03BB8D DATA DESCRIPTOR       08074B50 (134695760)\n-03BB91 CRC                   7440B75F (1950398303)\n-03BB95 Compressed Size       000002DC (732)\n-03BB99 Uncompressed Size     00000743 (1859)\n+05DFCB DATA DESCRIPTOR       08074B50 (134695760)\n+05DFCF CRC                   00000000 (0)\n+05DFD3 Compressed Size       00000002 (2)\n+05DFD7 Uncompressed Size     00000000 (0)\n \n-03BB9D LOCAL HEADER #322     04034B50 (67324752)\n-03BBA1 Extract Zip Spec      14 (20) '2.0'\n-03BBA2 Extract OS            00 (0) 'MS-DOS'\n-03BBA3 General Purpose Flag  0808 (2056)\n+05DFDB LOCAL HEADER #322     04034B50 (67324752)\n+05DFDF Extract Zip Spec      14 (20) '2.0'\n+05DFE0 Extract OS            00 (0) 'MS-DOS'\n+05DFE1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03BBA5 Compression Method    0008 (8) 'Deflated'\n-03BBA7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03BBAB CRC                   00000000 (0)\n-03BBAF Compressed Size       00000000 (0)\n-03BBB3 Uncompressed Size     00000000 (0)\n-03BBB7 Filename Length       0056 (86)\n-03BBB9 Extra Length          0000 (0)\n-03BBBB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05DFE3 Compression Method    0008 (8) 'Deflated'\n+05DFE5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05DFE9 CRC                   00000000 (0)\n+05DFED Compressed Size       00000000 (0)\n+05DFF1 Uncompressed Size     00000000 (0)\n+05DFF5 Filename Length       0054 (84)\n+05DFF7 Extra Length          0000 (0)\n+05DFF9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3BBBB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5DFF9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03BC11 PAYLOAD\n+05E04D PAYLOAD\n \n-03C0A8 DATA DESCRIPTOR       08074B50 (134695760)\n-03C0AC CRC                   D92B8674 (3643508340)\n-03C0B0 Compressed Size       00000497 (1175)\n-03C0B4 Uncompressed Size     00000EAC (3756)\n+05F4D5 DATA DESCRIPTOR       08074B50 (134695760)\n+05F4D9 CRC                   BAE14165 (3135324517)\n+05F4DD Compressed Size       00001488 (5256)\n+05F4E1 Uncompressed Size     00005A88 (23176)\n \n-03C0B8 LOCAL HEADER #323     04034B50 (67324752)\n-03C0BC Extract Zip Spec      14 (20) '2.0'\n-03C0BD Extract OS            00 (0) 'MS-DOS'\n-03C0BE General Purpose Flag  0808 (2056)\n+05F4E5 LOCAL HEADER #323     04034B50 (67324752)\n+05F4E9 Extract Zip Spec      14 (20) '2.0'\n+05F4EA Extract OS            00 (0) 'MS-DOS'\n+05F4EB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03C0C0 Compression Method    0008 (8) 'Deflated'\n-03C0C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03C0C6 CRC                   00000000 (0)\n-03C0CA Compressed Size       00000000 (0)\n-03C0CE Uncompressed Size     00000000 (0)\n-03C0D2 Filename Length       0032 (50)\n-03C0D4 Extra Length          0000 (0)\n-03C0D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05F4ED Compression Method    0008 (8) 'Deflated'\n+05F4EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05F4F3 CRC                   00000000 (0)\n+05F4F7 Compressed Size       00000000 (0)\n+05F4FB Uncompressed Size     00000000 (0)\n+05F4FF Filename Length       005B (91)\n+05F501 Extra Length          0000 (0)\n+05F503 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3C0D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5F503: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03C108 PAYLOAD               XX\n+05F55E PAYLOAD\n \n-03C10A DATA DESCRIPTOR       08074B50 (134695760)\n-03C10E CRC                   00000000 (0)\n-03C112 Compressed Size       00000002 (2)\n-03C116 Uncompressed Size     00000000 (0)\n+05F802 DATA DESCRIPTOR       08074B50 (134695760)\n+05F806 CRC                   BA62C70E (3127035662)\n+05F80A Compressed Size       000002A4 (676)\n+05F80E Uncompressed Size     000005F2 (1522)\n \n-03C11A LOCAL HEADER #324     04034B50 (67324752)\n-03C11E Extract Zip Spec      14 (20) '2.0'\n-03C11F Extract OS            00 (0) 'MS-DOS'\n-03C120 General Purpose Flag  0808 (2056)\n+05F812 LOCAL HEADER #324     04034B50 (67324752)\n+05F816 Extract Zip Spec      14 (20) '2.0'\n+05F817 Extract OS            00 (0) 'MS-DOS'\n+05F818 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03C122 Compression Method    0008 (8) 'Deflated'\n-03C124 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03C128 CRC                   00000000 (0)\n-03C12C Compressed Size       00000000 (0)\n-03C130 Uncompressed Size     00000000 (0)\n-03C134 Filename Length       005A (90)\n-03C136 Extra Length          0000 (0)\n-03C138 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05F81A Compression Method    0008 (8) 'Deflated'\n+05F81C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05F820 CRC                   00000000 (0)\n+05F824 Compressed Size       00000000 (0)\n+05F828 Uncompressed Size     00000000 (0)\n+05F82C Filename Length       0030 (48)\n+05F82E Extra Length          0000 (0)\n+05F830 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3C138: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5F830: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03C192 PAYLOAD\n+05F860 PAYLOAD               XX\n \n-03C55D DATA DESCRIPTOR       08074B50 (134695760)\n-03C561 CRC                   E1ADA7E4 (3786254308)\n-03C565 Compressed Size       000003CB (971)\n-03C569 Uncompressed Size     00000A96 (2710)\n+05F862 DATA DESCRIPTOR       08074B50 (134695760)\n+05F866 CRC                   00000000 (0)\n+05F86A Compressed Size       00000002 (2)\n+05F86E Uncompressed Size     00000000 (0)\n \n-03C56D LOCAL HEADER #325     04034B50 (67324752)\n-03C571 Extract Zip Spec      14 (20) '2.0'\n-03C572 Extract OS            00 (0) 'MS-DOS'\n-03C573 General Purpose Flag  0808 (2056)\n+05F872 LOCAL HEADER #325     04034B50 (67324752)\n+05F876 Extract Zip Spec      14 (20) '2.0'\n+05F877 Extract OS            00 (0) 'MS-DOS'\n+05F878 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03C575 Compression Method    0008 (8) 'Deflated'\n-03C577 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03C57B CRC                   00000000 (0)\n-03C57F Compressed Size       00000000 (0)\n-03C583 Uncompressed Size     00000000 (0)\n-03C587 Filename Length       0049 (73)\n-03C589 Extra Length          0000 (0)\n-03C58B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05F87A Compression Method    0008 (8) 'Deflated'\n+05F87C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05F880 CRC                   00000000 (0)\n+05F884 Compressed Size       00000000 (0)\n+05F888 Uncompressed Size     00000000 (0)\n+05F88C Filename Length       004C (76)\n+05F88E Extra Length          0000 (0)\n+05F890 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3C58B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5F890: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03C5D4 PAYLOAD\n+05F8DC PAYLOAD\n \n-03CA29 DATA DESCRIPTOR       08074B50 (134695760)\n-03CA2D CRC                   041B9E71 (68918897)\n-03CA31 Compressed Size       00000455 (1109)\n-03CA35 Uncompressed Size     00000ACF (2767)\n+05FC57 DATA DESCRIPTOR       08074B50 (134695760)\n+05FC5B CRC                   B653D686 (3058947718)\n+05FC5F Compressed Size       0000037B (891)\n+05FC63 Uncompressed Size     000008EF (2287)\n \n-03CA39 LOCAL HEADER #326     04034B50 (67324752)\n-03CA3D Extract Zip Spec      14 (20) '2.0'\n-03CA3E Extract OS            00 (0) 'MS-DOS'\n-03CA3F General Purpose Flag  0808 (2056)\n+05FC67 LOCAL HEADER #326     04034B50 (67324752)\n+05FC6B Extract Zip Spec      14 (20) '2.0'\n+05FC6C Extract OS            00 (0) 'MS-DOS'\n+05FC6D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03CA41 Compression Method    0008 (8) 'Deflated'\n-03CA43 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03CA47 CRC                   00000000 (0)\n-03CA4B Compressed Size       00000000 (0)\n-03CA4F Uncompressed Size     00000000 (0)\n-03CA53 Filename Length       0052 (82)\n-03CA55 Extra Length          0000 (0)\n-03CA57 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05FC6F Compression Method    0008 (8) 'Deflated'\n+05FC71 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05FC75 CRC                   00000000 (0)\n+05FC79 Compressed Size       00000000 (0)\n+05FC7D Uncompressed Size     00000000 (0)\n+05FC81 Filename Length       0053 (83)\n+05FC83 Extra Length          0000 (0)\n+05FC85 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3CA57: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5FC85: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03CAA9 PAYLOAD\n+05FCD8 PAYLOAD\n \n-03D01A DATA DESCRIPTOR       08074B50 (134695760)\n-03D01E CRC                   9BFB49A5 (2616936869)\n-03D022 Compressed Size       00000571 (1393)\n-03D026 Uncompressed Size     00001171 (4465)\n+05FF53 DATA DESCRIPTOR       08074B50 (134695760)\n+05FF57 CRC                   0495D293 (76927635)\n+05FF5B Compressed Size       0000027B (635)\n+05FF5F Uncompressed Size     00000545 (1349)\n \n-03D02A LOCAL HEADER #327     04034B50 (67324752)\n-03D02E Extract Zip Spec      14 (20) '2.0'\n-03D02F Extract OS            00 (0) 'MS-DOS'\n-03D030 General Purpose Flag  0808 (2056)\n+05FF63 LOCAL HEADER #327     04034B50 (67324752)\n+05FF67 Extract Zip Spec      14 (20) '2.0'\n+05FF68 Extract OS            00 (0) 'MS-DOS'\n+05FF69 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03D032 Compression Method    0008 (8) 'Deflated'\n-03D034 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03D038 CRC                   00000000 (0)\n-03D03C Compressed Size       00000000 (0)\n-03D040 Uncompressed Size     00000000 (0)\n-03D044 Filename Length       004F (79)\n-03D046 Extra Length          0000 (0)\n-03D048 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05FF6B Compression Method    0008 (8) 'Deflated'\n+05FF6D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05FF71 CRC                   00000000 (0)\n+05FF75 Compressed Size       00000000 (0)\n+05FF79 Uncompressed Size     00000000 (0)\n+05FF7D Filename Length       0034 (52)\n+05FF7F Extra Length          0000 (0)\n+05FF81 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3D048: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5FF81: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03D097 PAYLOAD\n+05FFB5 PAYLOAD               XX\n \n-03D4C5 DATA DESCRIPTOR       08074B50 (134695760)\n-03D4C9 CRC                   7378DDAE (1937300910)\n-03D4CD Compressed Size       0000042E (1070)\n-03D4D1 Uncompressed Size     000012B5 (4789)\n+05FFB7 DATA DESCRIPTOR       08074B50 (134695760)\n+05FFBB CRC                   00000000 (0)\n+05FFBF Compressed Size       00000002 (2)\n+05FFC3 Uncompressed Size     00000000 (0)\n \n-03D4D5 LOCAL HEADER #328     04034B50 (67324752)\n-03D4D9 Extract Zip Spec      14 (20) '2.0'\n-03D4DA Extract OS            00 (0) 'MS-DOS'\n-03D4DB General Purpose Flag  0808 (2056)\n+05FFC7 LOCAL HEADER #328     04034B50 (67324752)\n+05FFCB Extract Zip Spec      14 (20) '2.0'\n+05FFCC Extract OS            00 (0) 'MS-DOS'\n+05FFCD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03D4DD Compression Method    0008 (8) 'Deflated'\n-03D4DF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03D4E3 CRC                   00000000 (0)\n-03D4E7 Compressed Size       00000000 (0)\n-03D4EB Uncompressed Size     00000000 (0)\n-03D4EF Filename Length       0058 (88)\n-03D4F1 Extra Length          0000 (0)\n-03D4F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+05FFCF Compression Method    0008 (8) 'Deflated'\n+05FFD1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+05FFD5 CRC                   00000000 (0)\n+05FFD9 Compressed Size       00000000 (0)\n+05FFDD Uncompressed Size     00000000 (0)\n+05FFE1 Filename Length       0056 (86)\n+05FFE3 Extra Length          0000 (0)\n+05FFE5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3D4F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x5FFE5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03D54B PAYLOAD\n+06003B PAYLOAD\n \n-03D9BA DATA DESCRIPTOR       08074B50 (134695760)\n-03D9BE CRC                   AC9AB837 (2895820855)\n-03D9C2 Compressed Size       0000046F (1135)\n-03D9C6 Uncompressed Size     00000C64 (3172)\n+0604D7 DATA DESCRIPTOR       08074B50 (134695760)\n+0604DB CRC                   2171436F (561070959)\n+0604DF Compressed Size       0000049C (1180)\n+0604E3 Uncompressed Size     00000FAF (4015)\n \n-03D9CA LOCAL HEADER #329     04034B50 (67324752)\n-03D9CE Extract Zip Spec      14 (20) '2.0'\n-03D9CF Extract OS            00 (0) 'MS-DOS'\n-03D9D0 General Purpose Flag  0808 (2056)\n+0604E7 LOCAL HEADER #329     04034B50 (67324752)\n+0604EB Extract Zip Spec      14 (20) '2.0'\n+0604EC Extract OS            00 (0) 'MS-DOS'\n+0604ED General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03D9D2 Compression Method    0008 (8) 'Deflated'\n-03D9D4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03D9D8 CRC                   00000000 (0)\n-03D9DC Compressed Size       00000000 (0)\n-03D9E0 Uncompressed Size     00000000 (0)\n-03D9E4 Filename Length       0057 (87)\n-03D9E6 Extra Length          0000 (0)\n-03D9E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0604EF Compression Method    0008 (8) 'Deflated'\n+0604F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0604F5 CRC                   00000000 (0)\n+0604F9 Compressed Size       00000000 (0)\n+0604FD Uncompressed Size     00000000 (0)\n+060501 Filename Length       0022 (34)\n+060503 Extra Length          0000 (0)\n+060505 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3D9E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x60505: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03DA3F PAYLOAD\n+060527 PAYLOAD               XX\n \n-03DDA4 DATA DESCRIPTOR       08074B50 (134695760)\n-03DDA8 CRC                   D46003CA (3563062218)\n-03DDAC Compressed Size       00000365 (869)\n-03DDB0 Uncompressed Size     00000807 (2055)\n+060529 DATA DESCRIPTOR       08074B50 (134695760)\n+06052D CRC                   00000000 (0)\n+060531 Compressed Size       00000002 (2)\n+060535 Uncompressed Size     00000000 (0)\n \n-03DDB4 LOCAL HEADER #330     04034B50 (67324752)\n-03DDB8 Extract Zip Spec      14 (20) '2.0'\n-03DDB9 Extract OS            00 (0) 'MS-DOS'\n-03DDBA General Purpose Flag  0808 (2056)\n+060539 LOCAL HEADER #330     04034B50 (67324752)\n+06053D Extract Zip Spec      14 (20) '2.0'\n+06053E Extract OS            00 (0) 'MS-DOS'\n+06053F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03DDBC Compression Method    0008 (8) 'Deflated'\n-03DDBE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03DDC2 CRC                   00000000 (0)\n-03DDC6 Compressed Size       00000000 (0)\n-03DDCA Uncompressed Size     00000000 (0)\n-03DDCE Filename Length       0042 (66)\n-03DDD0 Extra Length          0000 (0)\n-03DDD2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+060541 Compression Method    0008 (8) 'Deflated'\n+060543 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+060547 CRC                   00000000 (0)\n+06054B Compressed Size       00000000 (0)\n+06054F Uncompressed Size     00000000 (0)\n+060553 Filename Length       0036 (54)\n+060555 Extra Length          0000 (0)\n+060557 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3DDD2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x60557: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03DE14 PAYLOAD\n+06058D PAYLOAD\n \n-03E271 DATA DESCRIPTOR       08074B50 (134695760)\n-03E275 CRC                   93877211 (2475127313)\n-03E279 Compressed Size       0000045D (1117)\n-03E27D Uncompressed Size     00000B29 (2857)\n+061299 DATA DESCRIPTOR       08074B50 (134695760)\n+06129D CRC                   2E0F2713 (772744979)\n+0612A1 Compressed Size       00000D0C (3340)\n+0612A5 Uncompressed Size     00002999 (10649)\n \n-03E281 LOCAL HEADER #331     04034B50 (67324752)\n-03E285 Extract Zip Spec      14 (20) '2.0'\n-03E286 Extract OS            00 (0) 'MS-DOS'\n-03E287 General Purpose Flag  0808 (2056)\n+0612A9 LOCAL HEADER #331     04034B50 (67324752)\n+0612AD Extract Zip Spec      14 (20) '2.0'\n+0612AE Extract OS            00 (0) 'MS-DOS'\n+0612AF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03E289 Compression Method    0008 (8) 'Deflated'\n-03E28B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03E28F CRC                   00000000 (0)\n-03E293 Compressed Size       00000000 (0)\n-03E297 Uncompressed Size     00000000 (0)\n-03E29B Filename Length       0048 (72)\n-03E29D Extra Length          0000 (0)\n-03E29F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0612B1 Compression Method    0008 (8) 'Deflated'\n+0612B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0612B7 CRC                   00000000 (0)\n+0612BB Compressed Size       00000000 (0)\n+0612BF Uncompressed Size     00000000 (0)\n+0612C3 Filename Length       0036 (54)\n+0612C5 Extra Length          0000 (0)\n+0612C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3E29F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x612C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03E2E7 PAYLOAD\n+0612FD PAYLOAD\n \n-03E752 DATA DESCRIPTOR       08074B50 (134695760)\n-03E756 CRC                   7F0F87F2 (2131724274)\n-03E75A Compressed Size       0000046B (1131)\n-03E75E Uncompressed Size     00000D8D (3469)\n+061527 DATA DESCRIPTOR       08074B50 (134695760)\n+06152B CRC                   B7E4B654 (3085219412)\n+06152F Compressed Size       0000022A (554)\n+061533 Uncompressed Size     000003D7 (983)\n \n-03E762 LOCAL HEADER #332     04034B50 (67324752)\n-03E766 Extract Zip Spec      14 (20) '2.0'\n-03E767 Extract OS            00 (0) 'MS-DOS'\n-03E768 General Purpose Flag  0808 (2056)\n+061537 LOCAL HEADER #332     04034B50 (67324752)\n+06153B Extract Zip Spec      14 (20) '2.0'\n+06153C Extract OS            00 (0) 'MS-DOS'\n+06153D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03E76A Compression Method    0008 (8) 'Deflated'\n-03E76C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03E770 CRC                   00000000 (0)\n-03E774 Compressed Size       00000000 (0)\n-03E778 Uncompressed Size     00000000 (0)\n-03E77C Filename Length       004B (75)\n-03E77E Extra Length          0000 (0)\n-03E780 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06153F Compression Method    0008 (8) 'Deflated'\n+061541 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+061545 CRC                   00000000 (0)\n+061549 Compressed Size       00000000 (0)\n+06154D Uncompressed Size     00000000 (0)\n+061551 Filename Length       0033 (51)\n+061553 Extra Length          0000 (0)\n+061555 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3E780: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x61555: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03E7CB PAYLOAD\n+061588 PAYLOAD\n \n-03EACE DATA DESCRIPTOR       08074B50 (134695760)\n-03EAD2 CRC                   0F98947D (261657725)\n-03EAD6 Compressed Size       00000303 (771)\n-03EADA Uncompressed Size     00000635 (1589)\n+0617DF DATA DESCRIPTOR       08074B50 (134695760)\n+0617E3 CRC                   67723A29 (1735539241)\n+0617E7 Compressed Size       00000257 (599)\n+0617EB Uncompressed Size     0000044F (1103)\n \n-03EADE LOCAL HEADER #333     04034B50 (67324752)\n-03EAE2 Extract Zip Spec      14 (20) '2.0'\n-03EAE3 Extract OS            00 (0) 'MS-DOS'\n-03EAE4 General Purpose Flag  0808 (2056)\n+0617EF LOCAL HEADER #333     04034B50 (67324752)\n+0617F3 Extract Zip Spec      14 (20) '2.0'\n+0617F4 Extract OS            00 (0) 'MS-DOS'\n+0617F5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03EAE6 Compression Method    0008 (8) 'Deflated'\n-03EAE8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03EAEC CRC                   00000000 (0)\n-03EAF0 Compressed Size       00000000 (0)\n-03EAF4 Uncompressed Size     00000000 (0)\n-03EAF8 Filename Length       002E (46)\n-03EAFA Extra Length          0000 (0)\n-03EAFC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0617F7 Compression Method    0008 (8) 'Deflated'\n+0617F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0617FD CRC                   00000000 (0)\n+061801 Compressed Size       00000000 (0)\n+061805 Uncompressed Size     00000000 (0)\n+061809 Filename Length       0038 (56)\n+06180B Extra Length          0000 (0)\n+06180D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3EAFC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6180D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03EB2A PAYLOAD               XX\n+061845 PAYLOAD\n \n-03EB2C DATA DESCRIPTOR       08074B50 (134695760)\n-03EB30 CRC                   00000000 (0)\n-03EB34 Compressed Size       00000002 (2)\n-03EB38 Uncompressed Size     00000000 (0)\n+061D30 DATA DESCRIPTOR       08074B50 (134695760)\n+061D34 CRC                   EBE34920 (3957541152)\n+061D38 Compressed Size       000004EB (1259)\n+061D3C Uncompressed Size     00000E07 (3591)\n \n-03EB3C LOCAL HEADER #334     04034B50 (67324752)\n-03EB40 Extract Zip Spec      14 (20) '2.0'\n-03EB41 Extract OS            00 (0) 'MS-DOS'\n-03EB42 General Purpose Flag  0808 (2056)\n+061D40 LOCAL HEADER #334     04034B50 (67324752)\n+061D44 Extract Zip Spec      14 (20) '2.0'\n+061D45 Extract OS            00 (0) 'MS-DOS'\n+061D46 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03EB44 Compression Method    0008 (8) 'Deflated'\n-03EB46 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03EB4A CRC                   00000000 (0)\n-03EB4E Compressed Size       00000000 (0)\n-03EB52 Uncompressed Size     00000000 (0)\n-03EB56 Filename Length       004C (76)\n-03EB58 Extra Length          0000 (0)\n-03EB5A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+061D48 Compression Method    0008 (8) 'Deflated'\n+061D4A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+061D4E CRC                   00000000 (0)\n+061D52 Compressed Size       00000000 (0)\n+061D56 Uncompressed Size     00000000 (0)\n+061D5A Filename Length       0038 (56)\n+061D5C Extra Length          0000 (0)\n+061D5E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3EB5A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x61D5E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03EBA6 PAYLOAD\n+061D96 PAYLOAD\n \n-03EF7C DATA DESCRIPTOR       08074B50 (134695760)\n-03EF80 CRC                   84EC925F (2230096479)\n-03EF84 Compressed Size       000003D6 (982)\n-03EF88 Uncompressed Size     00000975 (2421)\n+061FBA DATA DESCRIPTOR       08074B50 (134695760)\n+061FBE CRC                   F01E112A (4028502314)\n+061FC2 Compressed Size       00000224 (548)\n+061FC6 Uncompressed Size     000003D0 (976)\n \n-03EF8C LOCAL HEADER #335     04034B50 (67324752)\n-03EF90 Extract Zip Spec      14 (20) '2.0'\n-03EF91 Extract OS            00 (0) 'MS-DOS'\n-03EF92 General Purpose Flag  0808 (2056)\n+061FCA LOCAL HEADER #335     04034B50 (67324752)\n+061FCE Extract Zip Spec      14 (20) '2.0'\n+061FCF Extract OS            00 (0) 'MS-DOS'\n+061FD0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03EF94 Compression Method    0008 (8) 'Deflated'\n-03EF96 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03EF9A CRC                   00000000 (0)\n-03EF9E Compressed Size       00000000 (0)\n-03EFA2 Uncompressed Size     00000000 (0)\n-03EFA6 Filename Length       0064 (100)\n-03EFA8 Extra Length          0000 (0)\n-03EFAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+061FD2 Compression Method    0008 (8) 'Deflated'\n+061FD4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+061FD8 CRC                   00000000 (0)\n+061FDC Compressed Size       00000000 (0)\n+061FE0 Uncompressed Size     00000000 (0)\n+061FE4 Filename Length       0020 (32)\n+061FE6 Extra Length          0000 (0)\n+061FE8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3EFAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x61FE8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03F00E PAYLOAD\n+062008 PAYLOAD               XX\n \n-03F4E6 DATA DESCRIPTOR       08074B50 (134695760)\n-03F4EA CRC                   32AC7879 (850163833)\n-03F4EE Compressed Size       000004D8 (1240)\n-03F4F2 Uncompressed Size     00000CD3 (3283)\n+06200A DATA DESCRIPTOR       08074B50 (134695760)\n+06200E CRC                   00000000 (0)\n+062012 Compressed Size       00000002 (2)\n+062016 Uncompressed Size     00000000 (0)\n \n-03F4F6 LOCAL HEADER #336     04034B50 (67324752)\n-03F4FA Extract Zip Spec      14 (20) '2.0'\n-03F4FB Extract OS            00 (0) 'MS-DOS'\n-03F4FC General Purpose Flag  0808 (2056)\n+06201A LOCAL HEADER #336     04034B50 (67324752)\n+06201E Extract Zip Spec      14 (20) '2.0'\n+06201F Extract OS            00 (0) 'MS-DOS'\n+062020 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03F4FE Compression Method    0008 (8) 'Deflated'\n-03F500 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03F504 CRC                   00000000 (0)\n-03F508 Compressed Size       00000000 (0)\n-03F50C Uncompressed Size     00000000 (0)\n-03F510 Filename Length       002D (45)\n-03F512 Extra Length          0000 (0)\n-03F514 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+062022 Compression Method    0008 (8) 'Deflated'\n+062024 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+062028 CRC                   00000000 (0)\n+06202C Compressed Size       00000000 (0)\n+062030 Uncompressed Size     00000000 (0)\n+062034 Filename Length       0031 (49)\n+062036 Extra Length          0000 (0)\n+062038 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3F514: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x62038: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03F541 PAYLOAD               XX\n+062069 PAYLOAD\n \n-03F543 DATA DESCRIPTOR       08074B50 (134695760)\n-03F547 CRC                   00000000 (0)\n-03F54B Compressed Size       00000002 (2)\n-03F54F Uncompressed Size     00000000 (0)\n+06228A DATA DESCRIPTOR       08074B50 (134695760)\n+06228E CRC                   16DF264E (383723086)\n+062292 Compressed Size       00000221 (545)\n+062296 Uncompressed Size     000003CD (973)\n \n-03F553 LOCAL HEADER #337     04034B50 (67324752)\n-03F557 Extract Zip Spec      14 (20) '2.0'\n-03F558 Extract OS            00 (0) 'MS-DOS'\n-03F559 General Purpose Flag  0808 (2056)\n+06229A LOCAL HEADER #337     04034B50 (67324752)\n+06229E Extract Zip Spec      14 (20) '2.0'\n+06229F Extract OS            00 (0) 'MS-DOS'\n+0622A0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03F55B Compression Method    0008 (8) 'Deflated'\n-03F55D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03F561 CRC                   00000000 (0)\n-03F565 Compressed Size       00000000 (0)\n-03F569 Uncompressed Size     00000000 (0)\n-03F56D Filename Length       004B (75)\n-03F56F Extra Length          0000 (0)\n-03F571 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0622A2 Compression Method    0008 (8) 'Deflated'\n+0622A4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0622A8 CRC                   00000000 (0)\n+0622AC Compressed Size       00000000 (0)\n+0622B0 Uncompressed Size     00000000 (0)\n+0622B4 Filename Length       002E (46)\n+0622B6 Extra Length          0000 (0)\n+0622B8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3F571: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x622B8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03F5BC PAYLOAD\n+0622E6 PAYLOAD\n \n-03F8A6 DATA DESCRIPTOR       08074B50 (134695760)\n-03F8AA CRC                   C7D55000 (3352645632)\n-03F8AE Compressed Size       000002EA (746)\n-03F8B2 Uncompressed Size     00000737 (1847)\n+062580 DATA DESCRIPTOR       08074B50 (134695760)\n+062584 CRC                   66454DE7 (1715817959)\n+062588 Compressed Size       0000029A (666)\n+06258C Uncompressed Size     000005ED (1517)\n \n-03F8B6 LOCAL HEADER #338     04034B50 (67324752)\n-03F8BA Extract Zip Spec      14 (20) '2.0'\n-03F8BB Extract OS            00 (0) 'MS-DOS'\n-03F8BC General Purpose Flag  0808 (2056)\n+062590 LOCAL HEADER #338     04034B50 (67324752)\n+062594 Extract Zip Spec      14 (20) '2.0'\n+062595 Extract OS            00 (0) 'MS-DOS'\n+062596 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03F8BE Compression Method    0008 (8) 'Deflated'\n-03F8C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03F8C4 CRC                   00000000 (0)\n-03F8C8 Compressed Size       00000000 (0)\n-03F8CC Uncompressed Size     00000000 (0)\n-03F8D0 Filename Length       004B (75)\n-03F8D2 Extra Length          0000 (0)\n-03F8D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+062598 Compression Method    0008 (8) 'Deflated'\n+06259A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06259E CRC                   00000000 (0)\n+0625A2 Compressed Size       00000000 (0)\n+0625A6 Uncompressed Size     00000000 (0)\n+0625AA Filename Length       0035 (53)\n+0625AC Extra Length          0000 (0)\n+0625AE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3F8D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x625AE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03F91F PAYLOAD\n+0625E3 PAYLOAD\n \n-03FC08 DATA DESCRIPTOR       08074B50 (134695760)\n-03FC0C CRC                   33FEB344 (872330052)\n-03FC10 Compressed Size       000002E9 (745)\n-03FC14 Uncompressed Size     00000736 (1846)\n+062831 DATA DESCRIPTOR       08074B50 (134695760)\n+062835 CRC                   F8009358 (4160787288)\n+062839 Compressed Size       0000024E (590)\n+06283D Uncompressed Size     0000049D (1181)\n \n-03FC18 LOCAL HEADER #339     04034B50 (67324752)\n-03FC1C Extract Zip Spec      14 (20) '2.0'\n-03FC1D Extract OS            00 (0) 'MS-DOS'\n-03FC1E General Purpose Flag  0808 (2056)\n+062841 LOCAL HEADER #339     04034B50 (67324752)\n+062845 Extract Zip Spec      14 (20) '2.0'\n+062846 Extract OS            00 (0) 'MS-DOS'\n+062847 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03FC20 Compression Method    0008 (8) 'Deflated'\n-03FC22 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03FC26 CRC                   00000000 (0)\n-03FC2A Compressed Size       00000000 (0)\n-03FC2E Uncompressed Size     00000000 (0)\n-03FC32 Filename Length       004A (74)\n-03FC34 Extra Length          0000 (0)\n-03FC36 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+062849 Compression Method    0008 (8) 'Deflated'\n+06284B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06284F CRC                   00000000 (0)\n+062853 Compressed Size       00000000 (0)\n+062857 Uncompressed Size     00000000 (0)\n+06285B Filename Length       0020 (32)\n+06285D Extra Length          0000 (0)\n+06285F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3FC36: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6285F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03FC80 PAYLOAD\n+06287F PAYLOAD               XX\n \n-03FF71 DATA DESCRIPTOR       08074B50 (134695760)\n-03FF75 CRC                   BFF1DD26 (3220299046)\n-03FF79 Compressed Size       000002F1 (753)\n-03FF7D Uncompressed Size     000006C6 (1734)\n+062881 DATA DESCRIPTOR       08074B50 (134695760)\n+062885 CRC                   00000000 (0)\n+062889 Compressed Size       00000002 (2)\n+06288D Uncompressed Size     00000000 (0)\n \n-03FF81 LOCAL HEADER #340     04034B50 (67324752)\n-03FF85 Extract Zip Spec      14 (20) '2.0'\n-03FF86 Extract OS            00 (0) 'MS-DOS'\n-03FF87 General Purpose Flag  0808 (2056)\n+062891 LOCAL HEADER #340     04034B50 (67324752)\n+062895 Extract Zip Spec      14 (20) '2.0'\n+062896 Extract OS            00 (0) 'MS-DOS'\n+062897 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03FF89 Compression Method    0008 (8) 'Deflated'\n-03FF8B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03FF8F CRC                   00000000 (0)\n-03FF93 Compressed Size       00000000 (0)\n-03FF97 Uncompressed Size     00000000 (0)\n-03FF9B Filename Length       0032 (50)\n-03FF9D Extra Length          0000 (0)\n-03FF9F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+062899 Compression Method    0008 (8) 'Deflated'\n+06289B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06289F CRC                   00000000 (0)\n+0628A3 Compressed Size       00000000 (0)\n+0628A7 Uncompressed Size     00000000 (0)\n+0628AB Filename Length       002E (46)\n+0628AD Extra Length          0000 (0)\n+0628AF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3FF9F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x628AF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-03FFD1 PAYLOAD               XX\n+0628DD PAYLOAD\n \n-03FFD3 DATA DESCRIPTOR       08074B50 (134695760)\n-03FFD7 CRC                   00000000 (0)\n-03FFDB Compressed Size       00000002 (2)\n-03FFDF Uncompressed Size     00000000 (0)\n+062DA9 DATA DESCRIPTOR       08074B50 (134695760)\n+062DAD CRC                   C8C419A3 (3368294819)\n+062DB1 Compressed Size       000004CC (1228)\n+062DB5 Uncompressed Size     00000ECC (3788)\n \n-03FFE3 LOCAL HEADER #341     04034B50 (67324752)\n-03FFE7 Extract Zip Spec      14 (20) '2.0'\n-03FFE8 Extract OS            00 (0) 'MS-DOS'\n-03FFE9 General Purpose Flag  0808 (2056)\n+062DB9 LOCAL HEADER #341     04034B50 (67324752)\n+062DBD Extract Zip Spec      14 (20) '2.0'\n+062DBE Extract OS            00 (0) 'MS-DOS'\n+062DBF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-03FFEB Compression Method    0008 (8) 'Deflated'\n-03FFED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-03FFF1 CRC                   00000000 (0)\n-03FFF5 Compressed Size       00000000 (0)\n-03FFF9 Uncompressed Size     00000000 (0)\n-03FFFD Filename Length       0050 (80)\n-03FFFF Extra Length          0000 (0)\n-040001 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+062DC1 Compression Method    0008 (8) 'Deflated'\n+062DC3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+062DC7 CRC                   00000000 (0)\n+062DCB Compressed Size       00000000 (0)\n+062DCF Uncompressed Size     00000000 (0)\n+062DD3 Filename Length       0034 (52)\n+062DD5 Extra Length          0000 (0)\n+062DD7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x40001: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x62DD7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-040051 PAYLOAD\n+062E0B PAYLOAD\n \n-0403B6 DATA DESCRIPTOR       08074B50 (134695760)\n-0403BA CRC                   D7398AF1 (3610872561)\n-0403BE Compressed Size       00000365 (869)\n-0403C2 Uncompressed Size     00000940 (2368)\n+063060 DATA DESCRIPTOR       08074B50 (134695760)\n+063064 CRC                   C31C00DA (3273392346)\n+063068 Compressed Size       00000255 (597)\n+06306C Uncompressed Size     0000042C (1068)\n \n-0403C6 LOCAL HEADER #342     04034B50 (67324752)\n-0403CA Extract Zip Spec      14 (20) '2.0'\n-0403CB Extract OS            00 (0) 'MS-DOS'\n-0403CC General Purpose Flag  0808 (2056)\n+063070 LOCAL HEADER #342     04034B50 (67324752)\n+063074 Extract Zip Spec      14 (20) '2.0'\n+063075 Extract OS            00 (0) 'MS-DOS'\n+063076 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0403CE Compression Method    0008 (8) 'Deflated'\n-0403D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0403D4 CRC                   00000000 (0)\n-0403D8 Compressed Size       00000000 (0)\n-0403DC Uncompressed Size     00000000 (0)\n-0403E0 Filename Length       004F (79)\n-0403E2 Extra Length          0000 (0)\n-0403E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+063078 Compression Method    0008 (8) 'Deflated'\n+06307A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06307E CRC                   00000000 (0)\n+063082 Compressed Size       00000000 (0)\n+063086 Uncompressed Size     00000000 (0)\n+06308A Filename Length       003D (61)\n+06308C Extra Length          0000 (0)\n+06308E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x403E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6308E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-040433 PAYLOAD\n+0630CB PAYLOAD\n \n-0407A0 DATA DESCRIPTOR       08074B50 (134695760)\n-0407A4 CRC                   85DF07D4 (2245986260)\n-0407A8 Compressed Size       0000036D (877)\n-0407AC Uncompressed Size     000007AB (1963)\n+06338B DATA DESCRIPTOR       08074B50 (134695760)\n+06338F CRC                   C4FF04D7 (3305047255)\n+063393 Compressed Size       000002C0 (704)\n+063397 Uncompressed Size     00000558 (1368)\n \n-0407B0 LOCAL HEADER #343     04034B50 (67324752)\n-0407B4 Extract Zip Spec      14 (20) '2.0'\n-0407B5 Extract OS            00 (0) 'MS-DOS'\n-0407B6 General Purpose Flag  0808 (2056)\n+06339B LOCAL HEADER #343     04034B50 (67324752)\n+06339F Extract Zip Spec      14 (20) '2.0'\n+0633A0 Extract OS            00 (0) 'MS-DOS'\n+0633A1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0407B8 Compression Method    0008 (8) 'Deflated'\n-0407BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0407BE CRC                   00000000 (0)\n-0407C2 Compressed Size       00000000 (0)\n-0407C6 Uncompressed Size     00000000 (0)\n-0407CA Filename Length       0048 (72)\n-0407CC Extra Length          0000 (0)\n-0407CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0633A3 Compression Method    0008 (8) 'Deflated'\n+0633A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0633A9 CRC                   00000000 (0)\n+0633AD Compressed Size       00000000 (0)\n+0633B1 Uncompressed Size     00000000 (0)\n+0633B5 Filename Length       003F (63)\n+0633B7 Extra Length          0000 (0)\n+0633B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x407CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x633B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-040816 PAYLOAD\n+0633F8 PAYLOAD\n \n-040BC1 DATA DESCRIPTOR       08074B50 (134695760)\n-040BC5 CRC                   59514F7F (1498500991)\n-040BC9 Compressed Size       000003AB (939)\n-040BCD Uncompressed Size     0000088D (2189)\n+0636B3 DATA DESCRIPTOR       08074B50 (134695760)\n+0636B7 CRC                   B8E6EA58 (3102141016)\n+0636BB Compressed Size       000002BB (699)\n+0636BF Uncompressed Size     0000053B (1339)\n \n-040BD1 LOCAL HEADER #344     04034B50 (67324752)\n-040BD5 Extract Zip Spec      14 (20) '2.0'\n-040BD6 Extract OS            00 (0) 'MS-DOS'\n-040BD7 General Purpose Flag  0808 (2056)\n+0636C3 LOCAL HEADER #344     04034B50 (67324752)\n+0636C7 Extract Zip Spec      14 (20) '2.0'\n+0636C8 Extract OS            00 (0) 'MS-DOS'\n+0636C9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-040BD9 Compression Method    0008 (8) 'Deflated'\n-040BDB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-040BDF CRC                   00000000 (0)\n-040BE3 Compressed Size       00000000 (0)\n-040BE7 Uncompressed Size     00000000 (0)\n-040BEB Filename Length       0029 (41)\n-040BED Extra Length          0000 (0)\n-040BEF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0636CB Compression Method    0008 (8) 'Deflated'\n+0636CD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0636D1 CRC                   00000000 (0)\n+0636D5 Compressed Size       00000000 (0)\n+0636D9 Uncompressed Size     00000000 (0)\n+0636DD Filename Length       003F (63)\n+0636DF Extra Length          0000 (0)\n+0636E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x40BEF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x636E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-040C18 PAYLOAD               XX\n+063720 PAYLOAD\n \n-040C1A DATA DESCRIPTOR       08074B50 (134695760)\n-040C1E CRC                   00000000 (0)\n-040C22 Compressed Size       00000002 (2)\n-040C26 Uncompressed Size     00000000 (0)\n+063A1D DATA DESCRIPTOR       08074B50 (134695760)\n+063A21 CRC                   27EF74B8 (670004408)\n+063A25 Compressed Size       000002FD (765)\n+063A29 Uncompressed Size     00000606 (1542)\n \n-040C2A LOCAL HEADER #345     04034B50 (67324752)\n-040C2E Extract Zip Spec      14 (20) '2.0'\n-040C2F Extract OS            00 (0) 'MS-DOS'\n-040C30 General Purpose Flag  0808 (2056)\n+063A2D LOCAL HEADER #345     04034B50 (67324752)\n+063A31 Extract Zip Spec      14 (20) '2.0'\n+063A32 Extract OS            00 (0) 'MS-DOS'\n+063A33 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-040C32 Compression Method    0008 (8) 'Deflated'\n-040C34 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-040C38 CRC                   00000000 (0)\n-040C3C Compressed Size       00000000 (0)\n-040C40 Uncompressed Size     00000000 (0)\n-040C44 Filename Length       0044 (68)\n-040C46 Extra Length          0000 (0)\n-040C48 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+063A35 Compression Method    0008 (8) 'Deflated'\n+063A37 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+063A3B CRC                   00000000 (0)\n+063A3F Compressed Size       00000000 (0)\n+063A43 Uncompressed Size     00000000 (0)\n+063A47 Filename Length       003C (60)\n+063A49 Extra Length          0000 (0)\n+063A4B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x40C48: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x63A4B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-040C8C PAYLOAD\n+063A87 PAYLOAD\n \n-0410D8 DATA DESCRIPTOR       08074B50 (134695760)\n-0410DC CRC                   EFF8B6F4 (4026054388)\n-0410E0 Compressed Size       0000044C (1100)\n-0410E4 Uncompressed Size     00000B2E (2862)\n+063D47 DATA DESCRIPTOR       08074B50 (134695760)\n+063D4B CRC                   3F610BCB (1063324619)\n+063D4F Compressed Size       000002C0 (704)\n+063D53 Uncompressed Size     00000555 (1365)\n \n-0410E8 LOCAL HEADER #346     04034B50 (67324752)\n-0410EC Extract Zip Spec      14 (20) '2.0'\n-0410ED Extract OS            00 (0) 'MS-DOS'\n-0410EE General Purpose Flag  0808 (2056)\n+063D57 LOCAL HEADER #346     04034B50 (67324752)\n+063D5B Extract Zip Spec      14 (20) '2.0'\n+063D5C Extract OS            00 (0) 'MS-DOS'\n+063D5D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0410F0 Compression Method    0008 (8) 'Deflated'\n-0410F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0410F6 CRC                   00000000 (0)\n-0410FA Compressed Size       00000000 (0)\n-0410FE Uncompressed Size     00000000 (0)\n-041102 Filename Length       0026 (38)\n-041104 Extra Length          0000 (0)\n-041106 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+063D5F Compression Method    0008 (8) 'Deflated'\n+063D61 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+063D65 CRC                   00000000 (0)\n+063D69 Compressed Size       00000000 (0)\n+063D6D Uncompressed Size     00000000 (0)\n+063D71 Filename Length       003B (59)\n+063D73 Extra Length          0000 (0)\n+063D75 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x41106: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x63D75: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04112C PAYLOAD               XX\n+063DB0 PAYLOAD\n \n-04112E DATA DESCRIPTOR       08074B50 (134695760)\n-041132 CRC                   00000000 (0)\n-041136 Compressed Size       00000002 (2)\n-04113A Uncompressed Size     00000000 (0)\n+06406E DATA DESCRIPTOR       08074B50 (134695760)\n+064072 CRC                   15F2A538 (368223544)\n+064076 Compressed Size       000002BE (702)\n+06407A Uncompressed Size     0000054E (1358)\n \n-04113E LOCAL HEADER #347     04034B50 (67324752)\n-041142 Extract Zip Spec      14 (20) '2.0'\n-041143 Extract OS            00 (0) 'MS-DOS'\n-041144 General Purpose Flag  0808 (2056)\n+06407E LOCAL HEADER #347     04034B50 (67324752)\n+064082 Extract Zip Spec      14 (20) '2.0'\n+064083 Extract OS            00 (0) 'MS-DOS'\n+064084 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-041146 Compression Method    0008 (8) 'Deflated'\n-041148 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04114C CRC                   00000000 (0)\n-041150 Compressed Size       00000000 (0)\n-041154 Uncompressed Size     00000000 (0)\n-041158 Filename Length       0049 (73)\n-04115A Extra Length          0000 (0)\n-04115C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+064086 Compression Method    0008 (8) 'Deflated'\n+064088 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06408C CRC                   00000000 (0)\n+064090 Compressed Size       00000000 (0)\n+064094 Uncompressed Size     00000000 (0)\n+064098 Filename Length       003D (61)\n+06409A Extra Length          0000 (0)\n+06409C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4115C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6409C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0411A5 PAYLOAD\n+0640D9 PAYLOAD\n \n-041625 DATA DESCRIPTOR       08074B50 (134695760)\n-041629 CRC                   E6EC6DE5 (3874254309)\n-04162D Compressed Size       00000480 (1152)\n-041631 Uncompressed Size     00000B52 (2898)\n+064395 DATA DESCRIPTOR       08074B50 (134695760)\n+064399 CRC                   DB3985F1 (3677980145)\n+06439D Compressed Size       000002BC (700)\n+0643A1 Uncompressed Size     00000554 (1364)\n \n-041635 LOCAL HEADER #348     04034B50 (67324752)\n-041639 Extract Zip Spec      14 (20) '2.0'\n-04163A Extract OS            00 (0) 'MS-DOS'\n-04163B General Purpose Flag  0808 (2056)\n+0643A5 LOCAL HEADER #348     04034B50 (67324752)\n+0643A9 Extract Zip Spec      14 (20) '2.0'\n+0643AA Extract OS            00 (0) 'MS-DOS'\n+0643AB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04163D Compression Method    0008 (8) 'Deflated'\n-04163F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-041643 CRC                   00000000 (0)\n-041647 Compressed Size       00000000 (0)\n-04164B Uncompressed Size     00000000 (0)\n-04164F Filename Length       0044 (68)\n-041651 Extra Length          0000 (0)\n-041653 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0643AD Compression Method    0008 (8) 'Deflated'\n+0643AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0643B3 CRC                   00000000 (0)\n+0643B7 Compressed Size       00000000 (0)\n+0643BB Uncompressed Size     00000000 (0)\n+0643BF Filename Length       003A (58)\n+0643C1 Extra Length          0000 (0)\n+0643C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x41653: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x643C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-041697 PAYLOAD\n+0643FD PAYLOAD\n \n-04286F DATA DESCRIPTOR       08074B50 (134695760)\n-042873 CRC                   6DDE9A21 (1843304993)\n-042877 Compressed Size       000011D8 (4568)\n-04287B Uncompressed Size     0000580E (22542)\n+0646BC DATA DESCRIPTOR       08074B50 (134695760)\n+0646C0 CRC                   7AC3DE73 (2059656819)\n+0646C4 Compressed Size       000002BF (703)\n+0646C8 Uncompressed Size     0000054B (1355)\n \n-04287F LOCAL HEADER #349     04034B50 (67324752)\n-042883 Extract Zip Spec      14 (20) '2.0'\n-042884 Extract OS            00 (0) 'MS-DOS'\n-042885 General Purpose Flag  0808 (2056)\n+0646CC LOCAL HEADER #349     04034B50 (67324752)\n+0646D0 Extract Zip Spec      14 (20) '2.0'\n+0646D1 Extract OS            00 (0) 'MS-DOS'\n+0646D2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-042887 Compression Method    0008 (8) 'Deflated'\n-042889 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04288D CRC                   00000000 (0)\n-042891 Compressed Size       00000000 (0)\n-042895 Uncompressed Size     00000000 (0)\n-042899 Filename Length       0040 (64)\n-04289B Extra Length          0000 (0)\n-04289D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0646D4 Compression Method    0008 (8) 'Deflated'\n+0646D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0646DA CRC                   00000000 (0)\n+0646DE Compressed Size       00000000 (0)\n+0646E2 Uncompressed Size     00000000 (0)\n+0646E6 Filename Length       003E (62)\n+0646E8 Extra Length          0000 (0)\n+0646EA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4289D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x646EA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0428DD PAYLOAD\n+064728 PAYLOAD\n \n-042E10 DATA DESCRIPTOR       08074B50 (134695760)\n-042E14 CRC                   FDDFE0B7 (4259307703)\n-042E18 Compressed Size       00000533 (1331)\n-042E1C Uncompressed Size     0000138F (5007)\n+0649C7 DATA DESCRIPTOR       08074B50 (134695760)\n+0649CB CRC                   190CB88A (420264074)\n+0649CF Compressed Size       0000029F (671)\n+0649D3 Uncompressed Size     0000051B (1307)\n \n-042E20 LOCAL HEADER #350     04034B50 (67324752)\n-042E24 Extract Zip Spec      14 (20) '2.0'\n-042E25 Extract OS            00 (0) 'MS-DOS'\n-042E26 General Purpose Flag  0808 (2056)\n+0649D7 LOCAL HEADER #350     04034B50 (67324752)\n+0649DB Extract Zip Spec      14 (20) '2.0'\n+0649DC Extract OS            00 (0) 'MS-DOS'\n+0649DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-042E28 Compression Method    0008 (8) 'Deflated'\n-042E2A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-042E2E CRC                   00000000 (0)\n-042E32 Compressed Size       00000000 (0)\n-042E36 Uncompressed Size     00000000 (0)\n-042E3A Filename Length       0026 (38)\n-042E3C Extra Length          0000 (0)\n-042E3E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0649DF Compression Method    0008 (8) 'Deflated'\n+0649E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0649E5 CRC                   00000000 (0)\n+0649E9 Compressed Size       00000000 (0)\n+0649ED Uncompressed Size     00000000 (0)\n+0649F1 Filename Length       003B (59)\n+0649F3 Extra Length          0000 (0)\n+0649F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x42E3E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x649F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-042E64 PAYLOAD               XX\n+064A30 PAYLOAD\n \n-042E66 DATA DESCRIPTOR       08074B50 (134695760)\n-042E6A CRC                   00000000 (0)\n-042E6E Compressed Size       00000002 (2)\n-042E72 Uncompressed Size     00000000 (0)\n+064CEF DATA DESCRIPTOR       08074B50 (134695760)\n+064CF3 CRC                   94D0E691 (2496718481)\n+064CF7 Compressed Size       000002BF (703)\n+064CFB Uncompressed Size     00000550 (1360)\n \n-042E76 LOCAL HEADER #351     04034B50 (67324752)\n-042E7A Extract Zip Spec      14 (20) '2.0'\n-042E7B Extract OS            00 (0) 'MS-DOS'\n-042E7C General Purpose Flag  0808 (2056)\n+064CFF LOCAL HEADER #351     04034B50 (67324752)\n+064D03 Extract Zip Spec      14 (20) '2.0'\n+064D04 Extract OS            00 (0) 'MS-DOS'\n+064D05 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-042E7E Compression Method    0008 (8) 'Deflated'\n-042E80 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-042E84 CRC                   00000000 (0)\n-042E88 Compressed Size       00000000 (0)\n-042E8C Uncompressed Size     00000000 (0)\n-042E90 Filename Length       0042 (66)\n-042E92 Extra Length          0000 (0)\n-042E94 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+064D07 Compression Method    0008 (8) 'Deflated'\n+064D09 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+064D0D CRC                   00000000 (0)\n+064D11 Compressed Size       00000000 (0)\n+064D15 Uncompressed Size     00000000 (0)\n+064D19 Filename Length       003C (60)\n+064D1B Extra Length          0000 (0)\n+064D1D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x42E94: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x64D1D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-042ED6 PAYLOAD\n+064D59 PAYLOAD\n \n-0433A1 DATA DESCRIPTOR       08074B50 (134695760)\n-0433A5 CRC                   263FC442 (641713218)\n-0433A9 Compressed Size       000004CB (1227)\n-0433AD Uncompressed Size     00000D56 (3414)\n+064FC0 DATA DESCRIPTOR       08074B50 (134695760)\n+064FC4 CRC                   E4FF1EF0 (3841924848)\n+064FC8 Compressed Size       00000267 (615)\n+064FCC Uncompressed Size     00000470 (1136)\n \n-0433B1 LOCAL HEADER #352     04034B50 (67324752)\n-0433B5 Extract Zip Spec      14 (20) '2.0'\n-0433B6 Extract OS            00 (0) 'MS-DOS'\n-0433B7 General Purpose Flag  0808 (2056)\n+064FD0 LOCAL HEADER #352     04034B50 (67324752)\n+064FD4 Extract Zip Spec      14 (20) '2.0'\n+064FD5 Extract OS            00 (0) 'MS-DOS'\n+064FD6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0433B9 Compression Method    0008 (8) 'Deflated'\n-0433BB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0433BF CRC                   00000000 (0)\n-0433C3 Compressed Size       00000000 (0)\n-0433C7 Uncompressed Size     00000000 (0)\n-0433CB Filename Length       003E (62)\n-0433CD Extra Length          0000 (0)\n-0433CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+064FD8 Compression Method    0008 (8) 'Deflated'\n+064FDA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+064FDE CRC                   00000000 (0)\n+064FE2 Compressed Size       00000000 (0)\n+064FE6 Uncompressed Size     00000000 (0)\n+064FEA Filename Length       0029 (41)\n+064FEC Extra Length          0000 (0)\n+064FEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x433CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x64FEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04340D PAYLOAD\n+065017 PAYLOAD               XX\n \n-043945 DATA DESCRIPTOR       08074B50 (134695760)\n-043949 CRC                   8F184A91 (2400733841)\n-04394D Compressed Size       00000538 (1336)\n-043951 Uncompressed Size     00000E6C (3692)\n+065019 DATA DESCRIPTOR       08074B50 (134695760)\n+06501D CRC                   00000000 (0)\n+065021 Compressed Size       00000002 (2)\n+065025 Uncompressed Size     00000000 (0)\n \n-043955 LOCAL HEADER #353     04034B50 (67324752)\n-043959 Extract Zip Spec      14 (20) '2.0'\n-04395A Extract OS            00 (0) 'MS-DOS'\n-04395B General Purpose Flag  0808 (2056)\n+065029 LOCAL HEADER #353     04034B50 (67324752)\n+06502D Extract Zip Spec      14 (20) '2.0'\n+06502E Extract OS            00 (0) 'MS-DOS'\n+06502F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04395D Compression Method    0008 (8) 'Deflated'\n-04395F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-043963 CRC                   00000000 (0)\n-043967 Compressed Size       00000000 (0)\n-04396B Uncompressed Size     00000000 (0)\n-04396F Filename Length       0024 (36)\n-043971 Extra Length          0000 (0)\n-043973 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+065031 Compression Method    0008 (8) 'Deflated'\n+065033 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+065037 CRC                   00000000 (0)\n+06503B Compressed Size       00000000 (0)\n+06503F Uncompressed Size     00000000 (0)\n+065043 Filename Length       0041 (65)\n+065045 Extra Length          0000 (0)\n+065047 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x43973: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x65047: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-043997 PAYLOAD               XX\n+065088 PAYLOAD\n \n-043999 DATA DESCRIPTOR       08074B50 (134695760)\n-04399D CRC                   00000000 (0)\n-0439A1 Compressed Size       00000002 (2)\n-0439A5 Uncompressed Size     00000000 (0)\n+06555A DATA DESCRIPTOR       08074B50 (134695760)\n+06555E CRC                   54CD8A2A (1422756394)\n+065562 Compressed Size       000004D2 (1234)\n+065566 Uncompressed Size     00000D8D (3469)\n \n-0439A9 LOCAL HEADER #354     04034B50 (67324752)\n-0439AD Extract Zip Spec      14 (20) '2.0'\n-0439AE Extract OS            00 (0) 'MS-DOS'\n-0439AF General Purpose Flag  0808 (2056)\n+06556A LOCAL HEADER #354     04034B50 (67324752)\n+06556E Extract Zip Spec      14 (20) '2.0'\n+06556F Extract OS            00 (0) 'MS-DOS'\n+065570 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0439B1 Compression Method    0008 (8) 'Deflated'\n-0439B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0439B7 CRC                   00000000 (0)\n-0439BB Compressed Size       00000000 (0)\n-0439BF Uncompressed Size     00000000 (0)\n-0439C3 Filename Length       003D (61)\n-0439C5 Extra Length          0000 (0)\n-0439C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+065572 Compression Method    0008 (8) 'Deflated'\n+065574 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+065578 CRC                   00000000 (0)\n+06557C Compressed Size       00000000 (0)\n+065580 Uncompressed Size     00000000 (0)\n+065584 Filename Length       0044 (68)\n+065586 Extra Length          0000 (0)\n+065588 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x439C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x65588: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-043A04 PAYLOAD\n+0655CC PAYLOAD\n \n-044070 DATA DESCRIPTOR       08074B50 (134695760)\n-044074 CRC                   B14D8B82 (2974649218)\n-044078 Compressed Size       0000066C (1644)\n-04407C Uncompressed Size     000018C2 (6338)\n+065954 DATA DESCRIPTOR       08074B50 (134695760)\n+065958 CRC                   6FAB873E (1873512254)\n+06595C Compressed Size       00000388 (904)\n+065960 Uncompressed Size     000007B0 (1968)\n \n-044080 LOCAL HEADER #355     04034B50 (67324752)\n-044084 Extract Zip Spec      14 (20) '2.0'\n-044085 Extract OS            00 (0) 'MS-DOS'\n-044086 General Purpose Flag  0808 (2056)\n+065964 LOCAL HEADER #355     04034B50 (67324752)\n+065968 Extract Zip Spec      14 (20) '2.0'\n+065969 Extract OS            00 (0) 'MS-DOS'\n+06596A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-044088 Compression Method    0008 (8) 'Deflated'\n-04408A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04408E CRC                   00000000 (0)\n-044092 Compressed Size       00000000 (0)\n-044096 Uncompressed Size     00000000 (0)\n-04409A Filename Length       0037 (55)\n-04409C Extra Length          0000 (0)\n-04409E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06596C Compression Method    0008 (8) 'Deflated'\n+06596E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+065972 CRC                   00000000 (0)\n+065976 Compressed Size       00000000 (0)\n+06597A Uncompressed Size     00000000 (0)\n+06597E Filename Length       004C (76)\n+065980 Extra Length          0000 (0)\n+065982 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4409E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x65982: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0440D5 PAYLOAD\n+0659CE PAYLOAD\n \n-044815 DATA DESCRIPTOR       08074B50 (134695760)\n-044819 CRC                   0414302F (68431919)\n-04481D Compressed Size       00000740 (1856)\n-044821 Uncompressed Size     00001C89 (7305)\n+065C8A DATA DESCRIPTOR       08074B50 (134695760)\n+065C8E CRC                   0C78A9F4 (209234420)\n+065C92 Compressed Size       000002BC (700)\n+065C96 Uncompressed Size     00000530 (1328)\n \n-044825 LOCAL HEADER #356     04034B50 (67324752)\n-044829 Extract Zip Spec      14 (20) '2.0'\n-04482A Extract OS            00 (0) 'MS-DOS'\n-04482B General Purpose Flag  0808 (2056)\n+065C9A LOCAL HEADER #356     04034B50 (67324752)\n+065C9E Extract Zip Spec      14 (20) '2.0'\n+065C9F Extract OS            00 (0) 'MS-DOS'\n+065CA0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04482D Compression Method    0008 (8) 'Deflated'\n-04482F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-044833 CRC                   00000000 (0)\n-044837 Compressed Size       00000000 (0)\n-04483B Uncompressed Size     00000000 (0)\n-04483F Filename Length       0059 (89)\n-044841 Extra Length          0000 (0)\n-044843 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+065CA2 Compression Method    0008 (8) 'Deflated'\n+065CA4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+065CA8 CRC                   00000000 (0)\n+065CAC Compressed Size       00000000 (0)\n+065CB0 Uncompressed Size     00000000 (0)\n+065CB4 Filename Length       004C (76)\n+065CB6 Extra Length          0000 (0)\n+065CB8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x44843: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x65CB8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04489C PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+065D04 PAYLOAD\n \n-0448EB DATA DESCRIPTOR       08074B50 (134695760)\n-0448EF CRC                   A63E32BF (2789094079)\n-0448F3 Compressed Size       0000004F (79)\n-0448F7 Uncompressed Size     0000005B (91)\n+065FC8 DATA DESCRIPTOR       08074B50 (134695760)\n+065FCC CRC                   5D42735B (1564635995)\n+065FD0 Compressed Size       000002C4 (708)\n+065FD4 Uncompressed Size     0000055A (1370)\n \n-0448FB LOCAL HEADER #357     04034B50 (67324752)\n-0448FF Extract Zip Spec      14 (20) '2.0'\n-044900 Extract OS            00 (0) 'MS-DOS'\n-044901 General Purpose Flag  0808 (2056)\n+065FD8 LOCAL HEADER #357     04034B50 (67324752)\n+065FDC Extract Zip Spec      14 (20) '2.0'\n+065FDD Extract OS            00 (0) 'MS-DOS'\n+065FDE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-044903 Compression Method    0008 (8) 'Deflated'\n-044905 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-044909 CRC                   00000000 (0)\n-04490D Compressed Size       00000000 (0)\n-044911 Uncompressed Size     00000000 (0)\n-044915 Filename Length       0015 (21)\n-044917 Extra Length          0000 (0)\n-044919 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n+065FE0 Compression Method    0008 (8) 'Deflated'\n+065FE2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+065FE6 CRC                   00000000 (0)\n+065FEA Compressed Size       00000000 (0)\n+065FEE Uncompressed Size     00000000 (0)\n+065FF2 Filename Length       0049 (73)\n+065FF4 Extra Length          0000 (0)\n+065FF6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x44919: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x65FF6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04492E PAYLOAD               XX\n+06603F PAYLOAD\n \n-044930 DATA DESCRIPTOR       08074B50 (134695760)\n-044934 CRC                   00000000 (0)\n-044938 Compressed Size       00000002 (2)\n-04493C Uncompressed Size     00000000 (0)\n+0662EE DATA DESCRIPTOR       08074B50 (134695760)\n+0662F2 CRC                   FE374BB9 (4265036729)\n+0662F6 Compressed Size       000002AF (687)\n+0662FA Uncompressed Size     000004F7 (1271)\n \n-044940 LOCAL HEADER #358     04034B50 (67324752)\n-044944 Extract Zip Spec      14 (20) '2.0'\n-044945 Extract OS            00 (0) 'MS-DOS'\n-044946 General Purpose Flag  0808 (2056)\n+0662FE LOCAL HEADER #358     04034B50 (67324752)\n+066302 Extract Zip Spec      14 (20) '2.0'\n+066303 Extract OS            00 (0) 'MS-DOS'\n+066304 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-044948 Compression Method    0008 (8) 'Deflated'\n-04494A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04494E CRC                   00000000 (0)\n-044952 Compressed Size       00000000 (0)\n-044956 Uncompressed Size     00000000 (0)\n-04495A Filename Length       001D (29)\n-04495C Extra Length          0000 (0)\n-04495E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+066306 Compression Method    0008 (8) 'Deflated'\n+066308 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06630C CRC                   00000000 (0)\n+066310 Compressed Size       00000000 (0)\n+066314 Uncompressed Size     00000000 (0)\n+066318 Filename Length       0044 (68)\n+06631A Extra Length          0000 (0)\n+06631C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4495E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6631C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04497B PAYLOAD               XX\n+066360 PAYLOAD\n \n-04497D DATA DESCRIPTOR       08074B50 (134695760)\n-044981 CRC                   00000000 (0)\n-044985 Compressed Size       00000002 (2)\n-044989 Uncompressed Size     00000000 (0)\n+066609 DATA DESCRIPTOR       08074B50 (134695760)\n+06660D CRC                   EF9E0DDB (4020112859)\n+066611 Compressed Size       000002A9 (681)\n+066615 Uncompressed Size     000004E0 (1248)\n \n-04498D LOCAL HEADER #359     04034B50 (67324752)\n-044991 Extract Zip Spec      14 (20) '2.0'\n-044992 Extract OS            00 (0) 'MS-DOS'\n-044993 General Purpose Flag  0808 (2056)\n+066619 LOCAL HEADER #359     04034B50 (67324752)\n+06661D Extract Zip Spec      14 (20) '2.0'\n+06661E Extract OS            00 (0) 'MS-DOS'\n+06661F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-044995 Compression Method    0008 (8) 'Deflated'\n-044997 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04499B CRC                   00000000 (0)\n-04499F Compressed Size       00000000 (0)\n-0449A3 Uncompressed Size     00000000 (0)\n-0449A7 Filename Length       0038 (56)\n-0449A9 Extra Length          0000 (0)\n-0449AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+066621 Compression Method    0008 (8) 'Deflated'\n+066623 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+066627 CRC                   00000000 (0)\n+06662B Compressed Size       00000000 (0)\n+06662F Uncompressed Size     00000000 (0)\n+066633 Filename Length       0047 (71)\n+066635 Extra Length          0000 (0)\n+066637 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x449AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x66637: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0449E3 PAYLOAD\n+06667E PAYLOAD\n \n-044CF4 DATA DESCRIPTOR       08074B50 (134695760)\n-044CF8 CRC                   8DDA999F (2379913631)\n-044CFC Compressed Size       00000311 (785)\n-044D00 Uncompressed Size     000005F6 (1526)\n+066B19 DATA DESCRIPTOR       08074B50 (134695760)\n+066B1D CRC                   65FB8949 (1710983497)\n+066B21 Compressed Size       0000049B (1179)\n+066B25 Uncompressed Size     00000C72 (3186)\n \n-044D04 LOCAL HEADER #360     04034B50 (67324752)\n-044D08 Extract Zip Spec      14 (20) '2.0'\n-044D09 Extract OS            00 (0) 'MS-DOS'\n-044D0A General Purpose Flag  0808 (2056)\n+066B29 LOCAL HEADER #360     04034B50 (67324752)\n+066B2D Extract Zip Spec      14 (20) '2.0'\n+066B2E Extract OS            00 (0) 'MS-DOS'\n+066B2F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-044D0C Compression Method    0008 (8) 'Deflated'\n-044D0E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-044D12 CRC                   00000000 (0)\n-044D16 Compressed Size       00000000 (0)\n-044D1A Uncompressed Size     00000000 (0)\n-044D1E Filename Length       0029 (41)\n-044D20 Extra Length          0000 (0)\n-044D22 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+066B31 Compression Method    0008 (8) 'Deflated'\n+066B33 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+066B37 CRC                   00000000 (0)\n+066B3B Compressed Size       00000000 (0)\n+066B3F Uncompressed Size     00000000 (0)\n+066B43 Filename Length       0043 (67)\n+066B45 Extra Length          0000 (0)\n+066B47 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x44D22: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x66B47: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-044D4B PAYLOAD\n+066B8A PAYLOAD\n \n-0450DF DATA DESCRIPTOR       08074B50 (134695760)\n-0450E3 CRC                   27965EEA (664166122)\n-0450E7 Compressed Size       00000394 (916)\n-0450EB Uncompressed Size     00000824 (2084)\n+066E33 DATA DESCRIPTOR       08074B50 (134695760)\n+066E37 CRC                   CC224977 (3424799095)\n+066E3B Compressed Size       000002A9 (681)\n+066E3F Uncompressed Size     000004D9 (1241)\n \n-0450EF LOCAL HEADER #361     04034B50 (67324752)\n-0450F3 Extract Zip Spec      14 (20) '2.0'\n-0450F4 Extract OS            00 (0) 'MS-DOS'\n-0450F5 General Purpose Flag  0808 (2056)\n+066E43 LOCAL HEADER #361     04034B50 (67324752)\n+066E47 Extract Zip Spec      14 (20) '2.0'\n+066E48 Extract OS            00 (0) 'MS-DOS'\n+066E49 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0450F7 Compression Method    0008 (8) 'Deflated'\n-0450F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0450FD CRC                   00000000 (0)\n-045101 Compressed Size       00000000 (0)\n-045105 Uncompressed Size     00000000 (0)\n-045109 Filename Length       0030 (48)\n-04510B Extra Length          0000 (0)\n-04510D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+066E4B Compression Method    0008 (8) 'Deflated'\n+066E4D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+066E51 CRC                   00000000 (0)\n+066E55 Compressed Size       00000000 (0)\n+066E59 Uncompressed Size     00000000 (0)\n+066E5D Filename Length       0049 (73)\n+066E5F Extra Length          0000 (0)\n+066E61 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4510D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x66E61: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04513D PAYLOAD\n+066EAA PAYLOAD\n \n-0454A9 DATA DESCRIPTOR       08074B50 (134695760)\n-0454AD CRC                   5E2260E1 (1579311329)\n-0454B1 Compressed Size       0000036C (876)\n-0454B5 Uncompressed Size     000006CA (1738)\n+067258 DATA DESCRIPTOR       08074B50 (134695760)\n+06725C CRC                   38CBB90F (952875279)\n+067260 Compressed Size       000003AE (942)\n+067264 Uncompressed Size     000008B0 (2224)\n \n-0454B9 LOCAL HEADER #362     04034B50 (67324752)\n-0454BD Extract Zip Spec      14 (20) '2.0'\n-0454BE Extract OS            00 (0) 'MS-DOS'\n-0454BF General Purpose Flag  0808 (2056)\n+067268 LOCAL HEADER #362     04034B50 (67324752)\n+06726C Extract Zip Spec      14 (20) '2.0'\n+06726D Extract OS            00 (0) 'MS-DOS'\n+06726E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0454C1 Compression Method    0008 (8) 'Deflated'\n-0454C3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0454C7 CRC                   00000000 (0)\n-0454CB Compressed Size       00000000 (0)\n-0454CF Uncompressed Size     00000000 (0)\n-0454D3 Filename Length       002E (46)\n-0454D5 Extra Length          0000 (0)\n-0454D7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+067270 Compression Method    0008 (8) 'Deflated'\n+067272 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+067276 CRC                   00000000 (0)\n+06727A Compressed Size       00000000 (0)\n+06727E Uncompressed Size     00000000 (0)\n+067282 Filename Length       004B (75)\n+067284 Extra Length          0000 (0)\n+067286 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x454D7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x67286: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-045505 PAYLOAD\n+0672D1 PAYLOAD\n \n-045B83 DATA DESCRIPTOR       08074B50 (134695760)\n-045B87 CRC                   665C4504 (1717323012)\n-045B8B Compressed Size       0000067E (1662)\n-045B8F Uncompressed Size     00001123 (4387)\n+067583 DATA DESCRIPTOR       08074B50 (134695760)\n+067587 CRC                   F0075F17 (4027014935)\n+06758B Compressed Size       000002B2 (690)\n+06758F Uncompressed Size     00000513 (1299)\n \n-045B93 LOCAL HEADER #363     04034B50 (67324752)\n-045B97 Extract Zip Spec      14 (20) '2.0'\n-045B98 Extract OS            00 (0) 'MS-DOS'\n-045B99 General Purpose Flag  0808 (2056)\n+067593 LOCAL HEADER #363     04034B50 (67324752)\n+067597 Extract Zip Spec      14 (20) '2.0'\n+067598 Extract OS            00 (0) 'MS-DOS'\n+067599 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-045B9B Compression Method    0008 (8) 'Deflated'\n-045B9D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-045BA1 CRC                   00000000 (0)\n-045BA5 Compressed Size       00000000 (0)\n-045BA9 Uncompressed Size     00000000 (0)\n-045BAD Filename Length       0035 (53)\n-045BAF Extra Length          0000 (0)\n-045BB1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06759B Compression Method    0008 (8) 'Deflated'\n+06759D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0675A1 CRC                   00000000 (0)\n+0675A5 Compressed Size       00000000 (0)\n+0675A9 Uncompressed Size     00000000 (0)\n+0675AD Filename Length       0044 (68)\n+0675AF Extra Length          0000 (0)\n+0675B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x45BB1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x675B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-045BE6 PAYLOAD\n+0675F5 PAYLOAD\n \n-045E80 DATA DESCRIPTOR       08074B50 (134695760)\n-045E84 CRC                   7FA20103 (2141323523)\n-045E88 Compressed Size       0000029A (666)\n-045E8C Uncompressed Size     00000534 (1332)\n+0678A3 DATA DESCRIPTOR       08074B50 (134695760)\n+0678A7 CRC                   42E91C9D (1122573469)\n+0678AB Compressed Size       000002AE (686)\n+0678AF Uncompressed Size     000004F9 (1273)\n \n-045E90 LOCAL HEADER #364     04034B50 (67324752)\n-045E94 Extract Zip Spec      14 (20) '2.0'\n-045E95 Extract OS            00 (0) 'MS-DOS'\n-045E96 General Purpose Flag  0808 (2056)\n+0678B3 LOCAL HEADER #364     04034B50 (67324752)\n+0678B7 Extract Zip Spec      14 (20) '2.0'\n+0678B8 Extract OS            00 (0) 'MS-DOS'\n+0678B9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-045E98 Compression Method    0008 (8) 'Deflated'\n-045E9A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-045E9E CRC                   00000000 (0)\n-045EA2 Compressed Size       00000000 (0)\n-045EA6 Uncompressed Size     00000000 (0)\n-045EAA Filename Length       002B (43)\n-045EAC Extra Length          0000 (0)\n-045EAE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0678BB Compression Method    0008 (8) 'Deflated'\n+0678BD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0678C1 CRC                   00000000 (0)\n+0678C5 Compressed Size       00000000 (0)\n+0678C9 Uncompressed Size     00000000 (0)\n+0678CD Filename Length       0042 (66)\n+0678CF Extra Length          0000 (0)\n+0678D1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x45EAE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x678D1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-045ED9 PAYLOAD\n+067913 PAYLOAD\n \n-046399 DATA DESCRIPTOR       08074B50 (134695760)\n-04639D CRC                   EE5647F1 (3998631921)\n-0463A1 Compressed Size       000004C0 (1216)\n-0463A5 Uncompressed Size     00000B10 (2832)\n+067BB9 DATA DESCRIPTOR       08074B50 (134695760)\n+067BBD CRC                   85A11C0C (2241928204)\n+067BC1 Compressed Size       000002A6 (678)\n+067BC5 Uncompressed Size     000004D0 (1232)\n \n-0463A9 LOCAL HEADER #365     04034B50 (67324752)\n-0463AD Extract Zip Spec      14 (20) '2.0'\n-0463AE Extract OS            00 (0) 'MS-DOS'\n-0463AF General Purpose Flag  0808 (2056)\n+067BC9 LOCAL HEADER #365     04034B50 (67324752)\n+067BCD Extract Zip Spec      14 (20) '2.0'\n+067BCE Extract OS            00 (0) 'MS-DOS'\n+067BCF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0463B1 Compression Method    0008 (8) 'Deflated'\n-0463B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0463B7 CRC                   00000000 (0)\n-0463BB Compressed Size       00000000 (0)\n-0463BF Uncompressed Size     00000000 (0)\n-0463C3 Filename Length       002B (43)\n-0463C5 Extra Length          0000 (0)\n-0463C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+067BD1 Compression Method    0008 (8) 'Deflated'\n+067BD3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+067BD7 CRC                   00000000 (0)\n+067BDB Compressed Size       00000000 (0)\n+067BDF Uncompressed Size     00000000 (0)\n+067BE3 Filename Length       0048 (72)\n+067BE5 Extra Length          0000 (0)\n+067BE7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x463C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x67BE7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0463F2 PAYLOAD\n+067C2F PAYLOAD\n \n-046721 DATA DESCRIPTOR       08074B50 (134695760)\n-046725 CRC                   2FCAE9BB (801827259)\n-046729 Compressed Size       0000032F (815)\n-04672D Uncompressed Size     000006CA (1738)\n+067ED9 DATA DESCRIPTOR       08074B50 (134695760)\n+067EDD CRC                   667CA259 (1719444057)\n+067EE1 Compressed Size       000002AA (682)\n+067EE5 Uncompressed Size     000004EA (1258)\n \n-046731 LOCAL HEADER #366     04034B50 (67324752)\n-046735 Extract Zip Spec      14 (20) '2.0'\n-046736 Extract OS            00 (0) 'MS-DOS'\n-046737 General Purpose Flag  0808 (2056)\n+067EE9 LOCAL HEADER #366     04034B50 (67324752)\n+067EED Extract Zip Spec      14 (20) '2.0'\n+067EEE Extract OS            00 (0) 'MS-DOS'\n+067EEF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-046739 Compression Method    0008 (8) 'Deflated'\n-04673B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04673F CRC                   00000000 (0)\n-046743 Compressed Size       00000000 (0)\n-046747 Uncompressed Size     00000000 (0)\n-04674B Filename Length       002D (45)\n-04674D Extra Length          0000 (0)\n-04674F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+067EF1 Compression Method    0008 (8) 'Deflated'\n+067EF3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+067EF7 CRC                   00000000 (0)\n+067EFB Compressed Size       00000000 (0)\n+067EFF Uncompressed Size     00000000 (0)\n+067F03 Filename Length       004C (76)\n+067F05 Extra Length          0000 (0)\n+067F07 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4674F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x67F07: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04677C PAYLOAD\n+067F53 PAYLOAD\n \n-046AC9 DATA DESCRIPTOR       08074B50 (134695760)\n-046ACD CRC                   2EFAFE2D (788201005)\n-046AD1 Compressed Size       0000034D (845)\n-046AD5 Uncompressed Size     00000732 (1842)\n+06820D DATA DESCRIPTOR       08074B50 (134695760)\n+068211 CRC                   4E4FEF3B (1313861435)\n+068215 Compressed Size       000002BA (698)\n+068219 Uncompressed Size     0000052C (1324)\n \n-046AD9 LOCAL HEADER #367     04034B50 (67324752)\n-046ADD Extract Zip Spec      14 (20) '2.0'\n-046ADE Extract OS            00 (0) 'MS-DOS'\n-046ADF General Purpose Flag  0808 (2056)\n+06821D LOCAL HEADER #367     04034B50 (67324752)\n+068221 Extract Zip Spec      14 (20) '2.0'\n+068222 Extract OS            00 (0) 'MS-DOS'\n+068223 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-046AE1 Compression Method    0008 (8) 'Deflated'\n-046AE3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-046AE7 CRC                   00000000 (0)\n-046AEB Compressed Size       00000000 (0)\n-046AEF Uncompressed Size     00000000 (0)\n-046AF3 Filename Length       0028 (40)\n-046AF5 Extra Length          0000 (0)\n-046AF7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+068225 Compression Method    0008 (8) 'Deflated'\n+068227 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06822B CRC                   00000000 (0)\n+06822F Compressed Size       00000000 (0)\n+068233 Uncompressed Size     00000000 (0)\n+068237 Filename Length       0022 (34)\n+068239 Extra Length          0000 (0)\n+06823B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x46AF7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6823B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-046B1F PAYLOAD\n+06825D PAYLOAD               XX\n \n-046D4A DATA DESCRIPTOR       08074B50 (134695760)\n-046D4E CRC                   09ED5602 (166548994)\n-046D52 Compressed Size       0000022B (555)\n-046D56 Uncompressed Size     000003D1 (977)\n+06825F DATA DESCRIPTOR       08074B50 (134695760)\n+068263 CRC                   00000000 (0)\n+068267 Compressed Size       00000002 (2)\n+06826B Uncompressed Size     00000000 (0)\n \n-046D5A LOCAL HEADER #368     04034B50 (67324752)\n-046D5E Extract Zip Spec      14 (20) '2.0'\n-046D5F Extract OS            00 (0) 'MS-DOS'\n-046D60 General Purpose Flag  0808 (2056)\n+06826F LOCAL HEADER #368     04034B50 (67324752)\n+068273 Extract Zip Spec      14 (20) '2.0'\n+068274 Extract OS            00 (0) 'MS-DOS'\n+068275 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-046D62 Compression Method    0008 (8) 'Deflated'\n-046D64 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-046D68 CRC                   00000000 (0)\n-046D6C Compressed Size       00000000 (0)\n-046D70 Uncompressed Size     00000000 (0)\n-046D74 Filename Length       0028 (40)\n-046D76 Extra Length          0000 (0)\n-046D78 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+068277 Compression Method    0008 (8) 'Deflated'\n+068279 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06827D CRC                   00000000 (0)\n+068281 Compressed Size       00000000 (0)\n+068285 Uncompressed Size     00000000 (0)\n+068289 Filename Length       002F (47)\n+06828B Extra Length          0000 (0)\n+06828D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x46D78: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6828D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-046DA0 PAYLOAD\n+0682BC PAYLOAD\n \n-0472EB DATA DESCRIPTOR       08074B50 (134695760)\n-0472EF CRC                   58C25CA8 (1489132712)\n-0472F3 Compressed Size       0000054B (1355)\n-0472F7 Uncompressed Size     00000CF3 (3315)\n+0687A0 DATA DESCRIPTOR       08074B50 (134695760)\n+0687A4 CRC                   9A2D2058 (2586648664)\n+0687A8 Compressed Size       000004E4 (1252)\n+0687AC Uncompressed Size     00000D7A (3450)\n \n-0472FB LOCAL HEADER #369     04034B50 (67324752)\n-0472FF Extract Zip Spec      14 (20) '2.0'\n-047300 Extract OS            00 (0) 'MS-DOS'\n-047301 General Purpose Flag  0808 (2056)\n+0687B0 LOCAL HEADER #369     04034B50 (67324752)\n+0687B4 Extract Zip Spec      14 (20) '2.0'\n+0687B5 Extract OS            00 (0) 'MS-DOS'\n+0687B6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-047303 Compression Method    0008 (8) 'Deflated'\n-047305 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-047309 CRC                   00000000 (0)\n-04730D Compressed Size       00000000 (0)\n-047311 Uncompressed Size     00000000 (0)\n-047315 Filename Length       002D (45)\n-047317 Extra Length          0000 (0)\n-047319 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0687B8 Compression Method    0008 (8) 'Deflated'\n+0687BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0687BE CRC                   00000000 (0)\n+0687C2 Compressed Size       00000000 (0)\n+0687C6 Uncompressed Size     00000000 (0)\n+0687CA Filename Length       002F (47)\n+0687CC Extra Length          0000 (0)\n+0687CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x47319: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x687CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-047346 PAYLOAD\n+0687FD PAYLOAD\n \n-047938 DATA DESCRIPTOR       08074B50 (134695760)\n-04793C CRC                   AC72FCB3 (2893216947)\n-047940 Compressed Size       000005F2 (1522)\n-047944 Uncompressed Size     00001018 (4120)\n+068CA6 DATA DESCRIPTOR       08074B50 (134695760)\n+068CAA CRC                   8FD49BC2 (2413075394)\n+068CAE Compressed Size       000004A9 (1193)\n+068CB2 Uncompressed Size     00000A82 (2690)\n \n-047948 LOCAL HEADER #370     04034B50 (67324752)\n-04794C Extract Zip Spec      14 (20) '2.0'\n-04794D Extract OS            00 (0) 'MS-DOS'\n-04794E General Purpose Flag  0808 (2056)\n+068CB6 LOCAL HEADER #370     04034B50 (67324752)\n+068CBA Extract Zip Spec      14 (20) '2.0'\n+068CBB Extract OS            00 (0) 'MS-DOS'\n+068CBC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-047950 Compression Method    0008 (8) 'Deflated'\n-047952 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-047956 CRC                   00000000 (0)\n-04795A Compressed Size       00000000 (0)\n-04795E Uncompressed Size     00000000 (0)\n-047962 Filename Length       002F (47)\n-047964 Extra Length          0000 (0)\n-047966 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+068CBE Compression Method    0008 (8) 'Deflated'\n+068CC0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+068CC4 CRC                   00000000 (0)\n+068CC8 Compressed Size       00000000 (0)\n+068CCC Uncompressed Size     00000000 (0)\n+068CD0 Filename Length       0041 (65)\n+068CD2 Extra Length          0000 (0)\n+068CD4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x47966: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x68CD4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-047995 PAYLOAD\n+068D15 PAYLOAD\n \n-047D2B DATA DESCRIPTOR       08074B50 (134695760)\n-047D2F CRC                   FDB2D35D (4256355165)\n-047D33 Compressed Size       00000396 (918)\n-047D37 Uncompressed Size     00000759 (1881)\n+069B33 DATA DESCRIPTOR       08074B50 (134695760)\n+069B37 CRC                   DFC97490 (3754521744)\n+069B3B Compressed Size       00000E1E (3614)\n+069B3F Uncompressed Size     00003D93 (15763)\n \n-047D3B LOCAL HEADER #371     04034B50 (67324752)\n-047D3F Extract Zip Spec      14 (20) '2.0'\n-047D40 Extract OS            00 (0) 'MS-DOS'\n-047D41 General Purpose Flag  0808 (2056)\n+069B43 LOCAL HEADER #371     04034B50 (67324752)\n+069B47 Extract Zip Spec      14 (20) '2.0'\n+069B48 Extract OS            00 (0) 'MS-DOS'\n+069B49 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-047D43 Compression Method    0008 (8) 'Deflated'\n-047D45 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-047D49 CRC                   00000000 (0)\n-047D4D Compressed Size       00000000 (0)\n-047D51 Uncompressed Size     00000000 (0)\n-047D55 Filename Length       002F (47)\n-047D57 Extra Length          0000 (0)\n-047D59 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+069B4B Compression Method    0008 (8) 'Deflated'\n+069B4D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+069B51 CRC                   00000000 (0)\n+069B55 Compressed Size       00000000 (0)\n+069B59 Uncompressed Size     00000000 (0)\n+069B5D Filename Length       0034 (52)\n+069B5F Extra Length          0000 (0)\n+069B61 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x47D59: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x69B61: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-047D88 PAYLOAD\n+069B95 PAYLOAD\n \n-047FDA DATA DESCRIPTOR       08074B50 (134695760)\n-047FDE CRC                   BC987223 (3164107299)\n-047FE2 Compressed Size       00000252 (594)\n-047FE6 Uncompressed Size     00000435 (1077)\n+069DFC DATA DESCRIPTOR       08074B50 (134695760)\n+069E00 CRC                   D1BB774A (3518723914)\n+069E04 Compressed Size       00000267 (615)\n+069E08 Uncompressed Size     000004B9 (1209)\n \n-047FEA LOCAL HEADER #372     04034B50 (67324752)\n-047FEE Extract Zip Spec      14 (20) '2.0'\n-047FEF Extract OS            00 (0) 'MS-DOS'\n-047FF0 General Purpose Flag  0808 (2056)\n+069E0C LOCAL HEADER #372     04034B50 (67324752)\n+069E10 Extract Zip Spec      14 (20) '2.0'\n+069E11 Extract OS            00 (0) 'MS-DOS'\n+069E12 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-047FF2 Compression Method    0008 (8) 'Deflated'\n-047FF4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-047FF8 CRC                   00000000 (0)\n-047FFC Compressed Size       00000000 (0)\n-048000 Uncompressed Size     00000000 (0)\n-048004 Filename Length       002A (42)\n-048006 Extra Length          0000 (0)\n-048008 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+069E14 Compression Method    0008 (8) 'Deflated'\n+069E16 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+069E1A CRC                   00000000 (0)\n+069E1E Compressed Size       00000000 (0)\n+069E22 Uncompressed Size     00000000 (0)\n+069E26 Filename Length       0043 (67)\n+069E28 Extra Length          0000 (0)\n+069E2A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x48008: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x69E2A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-048032 PAYLOAD               XX\n+069E6D PAYLOAD\n \n-048034 DATA DESCRIPTOR       08074B50 (134695760)\n-048038 CRC                   00000000 (0)\n-04803C Compressed Size       00000002 (2)\n-048040 Uncompressed Size     00000000 (0)\n+06A0EB DATA DESCRIPTOR       08074B50 (134695760)\n+06A0EF CRC                   B3A8C3FA (3014181882)\n+06A0F3 Compressed Size       0000027E (638)\n+06A0F7 Uncompressed Size     000004B0 (1200)\n \n-048044 LOCAL HEADER #373     04034B50 (67324752)\n-048048 Extract Zip Spec      14 (20) '2.0'\n-048049 Extract OS            00 (0) 'MS-DOS'\n-04804A General Purpose Flag  0808 (2056)\n+06A0FB LOCAL HEADER #373     04034B50 (67324752)\n+06A0FF Extract Zip Spec      14 (20) '2.0'\n+06A100 Extract OS            00 (0) 'MS-DOS'\n+06A101 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04804C Compression Method    0008 (8) 'Deflated'\n-04804E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-048052 CRC                   00000000 (0)\n-048056 Compressed Size       00000000 (0)\n-04805A Uncompressed Size     00000000 (0)\n-04805E Filename Length       0043 (67)\n-048060 Extra Length          0000 (0)\n-048062 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06A103 Compression Method    0008 (8) 'Deflated'\n+06A105 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06A109 CRC                   00000000 (0)\n+06A10D Compressed Size       00000000 (0)\n+06A111 Uncompressed Size     00000000 (0)\n+06A115 Filename Length       003B (59)\n+06A117 Extra Length          0000 (0)\n+06A119 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x48062: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6A119: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0480A5 PAYLOAD\n+06A154 PAYLOAD\n \n-048954 DATA DESCRIPTOR       08074B50 (134695760)\n-048958 CRC                   91868A4C (2441513548)\n-04895C Compressed Size       000008AF (2223)\n-048960 Uncompressed Size     00002146 (8518)\n+06A3DE DATA DESCRIPTOR       08074B50 (134695760)\n+06A3E2 CRC                   663E77E4 (1715369956)\n+06A3E6 Compressed Size       0000028A (650)\n+06A3EA Uncompressed Size     000004EE (1262)\n \n-048964 LOCAL HEADER #374     04034B50 (67324752)\n-048968 Extract Zip Spec      14 (20) '2.0'\n-048969 Extract OS            00 (0) 'MS-DOS'\n-04896A General Purpose Flag  0808 (2056)\n+06A3EE LOCAL HEADER #374     04034B50 (67324752)\n+06A3F2 Extract Zip Spec      14 (20) '2.0'\n+06A3F3 Extract OS            00 (0) 'MS-DOS'\n+06A3F4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04896C Compression Method    0008 (8) 'Deflated'\n-04896E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-048972 CRC                   00000000 (0)\n-048976 Compressed Size       00000000 (0)\n-04897A Uncompressed Size     00000000 (0)\n-04897E Filename Length       0031 (49)\n-048980 Extra Length          0000 (0)\n-048982 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06A3F6 Compression Method    0008 (8) 'Deflated'\n+06A3F8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06A3FC CRC                   00000000 (0)\n+06A400 Compressed Size       00000000 (0)\n+06A404 Uncompressed Size     00000000 (0)\n+06A408 Filename Length       0037 (55)\n+06A40A Extra Length          0000 (0)\n+06A40C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x48982: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6A40C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0489B3 PAYLOAD               XX\n+06A443 PAYLOAD\n \n-0489B5 DATA DESCRIPTOR       08074B50 (134695760)\n-0489B9 CRC                   00000000 (0)\n-0489BD Compressed Size       00000002 (2)\n-0489C1 Uncompressed Size     00000000 (0)\n+06A6A8 DATA DESCRIPTOR       08074B50 (134695760)\n+06A6AC CRC                   4C849D6C (1283759468)\n+06A6B0 Compressed Size       00000265 (613)\n+06A6B4 Uncompressed Size     0000047A (1146)\n \n-0489C5 LOCAL HEADER #375     04034B50 (67324752)\n-0489C9 Extract Zip Spec      14 (20) '2.0'\n-0489CA Extract OS            00 (0) 'MS-DOS'\n-0489CB General Purpose Flag  0808 (2056)\n+06A6B8 LOCAL HEADER #375     04034B50 (67324752)\n+06A6BC Extract Zip Spec      14 (20) '2.0'\n+06A6BD Extract OS            00 (0) 'MS-DOS'\n+06A6BE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0489CD Compression Method    0008 (8) 'Deflated'\n-0489CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0489D3 CRC                   00000000 (0)\n-0489D7 Compressed Size       00000000 (0)\n-0489DB Uncompressed Size     00000000 (0)\n-0489DF Filename Length       0048 (72)\n-0489E1 Extra Length          0000 (0)\n-0489E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06A6C0 Compression Method    0008 (8) 'Deflated'\n+06A6C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06A6C6 CRC                   00000000 (0)\n+06A6CA Compressed Size       00000000 (0)\n+06A6CE Uncompressed Size     00000000 (0)\n+06A6D2 Filename Length       0036 (54)\n+06A6D4 Extra Length          0000 (0)\n+06A6D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x489E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6A6D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-048A2B PAYLOAD\n+06A70C PAYLOAD\n \n-048CBA DATA DESCRIPTOR       08074B50 (134695760)\n-048CBE CRC                   FB552F52 (4216663890)\n-048CC2 Compressed Size       0000028F (655)\n-048CC6 Uncompressed Size     00000532 (1330)\n+06C74C DATA DESCRIPTOR       08074B50 (134695760)\n+06C750 CRC                   1F091D5A (520691034)\n+06C754 Compressed Size       00002040 (8256)\n+06C758 Uncompressed Size     0000A106 (41222)\n \n-048CCA LOCAL HEADER #376     04034B50 (67324752)\n-048CCE Extract Zip Spec      14 (20) '2.0'\n-048CCF Extract OS            00 (0) 'MS-DOS'\n-048CD0 General Purpose Flag  0808 (2056)\n+06C75C LOCAL HEADER #376     04034B50 (67324752)\n+06C760 Extract Zip Spec      14 (20) '2.0'\n+06C761 Extract OS            00 (0) 'MS-DOS'\n+06C762 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-048CD2 Compression Method    0008 (8) 'Deflated'\n-048CD4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-048CD8 CRC                   00000000 (0)\n-048CDC Compressed Size       00000000 (0)\n-048CE0 Uncompressed Size     00000000 (0)\n-048CE4 Filename Length       004F (79)\n-048CE6 Extra Length          0000 (0)\n-048CE8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06C764 Compression Method    0008 (8) 'Deflated'\n+06C766 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06C76A CRC                   00000000 (0)\n+06C76E Compressed Size       00000000 (0)\n+06C772 Uncompressed Size     00000000 (0)\n+06C776 Filename Length       0036 (54)\n+06C778 Extra Length          0000 (0)\n+06C77A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x48CE8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6C77A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-048D37 PAYLOAD\n+06C7B0 PAYLOAD\n \n-048F9E DATA DESCRIPTOR       08074B50 (134695760)\n-048FA2 CRC                   87AAF61F (2276128287)\n-048FA6 Compressed Size       00000267 (615)\n-048FAA Uncompressed Size     000004F6 (1270)\n+06CA94 DATA DESCRIPTOR       08074B50 (134695760)\n+06CA98 CRC                   BC70E4F4 (3161515252)\n+06CA9C Compressed Size       000002E4 (740)\n+06CAA0 Uncompressed Size     000005B8 (1464)\n \n-048FAE LOCAL HEADER #377     04034B50 (67324752)\n-048FB2 Extract Zip Spec      14 (20) '2.0'\n-048FB3 Extract OS            00 (0) 'MS-DOS'\n-048FB4 General Purpose Flag  0808 (2056)\n+06CAA4 LOCAL HEADER #377     04034B50 (67324752)\n+06CAA8 Extract Zip Spec      14 (20) '2.0'\n+06CAA9 Extract OS            00 (0) 'MS-DOS'\n+06CAAA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-048FB6 Compression Method    0008 (8) 'Deflated'\n-048FB8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-048FBC CRC                   00000000 (0)\n-048FC0 Compressed Size       00000000 (0)\n-048FC4 Uncompressed Size     00000000 (0)\n-048FC8 Filename Length       0033 (51)\n-048FCA Extra Length          0000 (0)\n-048FCC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06CAAC Compression Method    0008 (8) 'Deflated'\n+06CAAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06CAB2 CRC                   00000000 (0)\n+06CAB6 Compressed Size       00000000 (0)\n+06CABA Uncompressed Size     00000000 (0)\n+06CABE Filename Length       002A (42)\n+06CAC0 Extra Length          0000 (0)\n+06CAC2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x48FCC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6CAC2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-048FFF PAYLOAD               XX\n+06CAEC PAYLOAD\n \n-049001 DATA DESCRIPTOR       08074B50 (134695760)\n-049005 CRC                   00000000 (0)\n-049009 Compressed Size       00000002 (2)\n-04900D Uncompressed Size     00000000 (0)\n+06CF2A DATA DESCRIPTOR       08074B50 (134695760)\n+06CF2E CRC                   48D76DDD (1222077917)\n+06CF32 Compressed Size       0000043E (1086)\n+06CF36 Uncompressed Size     00000932 (2354)\n \n-049011 LOCAL HEADER #378     04034B50 (67324752)\n-049015 Extract Zip Spec      14 (20) '2.0'\n-049016 Extract OS            00 (0) 'MS-DOS'\n-049017 General Purpose Flag  0808 (2056)\n+06CF3A LOCAL HEADER #378     04034B50 (67324752)\n+06CF3E Extract Zip Spec      14 (20) '2.0'\n+06CF3F Extract OS            00 (0) 'MS-DOS'\n+06CF40 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-049019 Compression Method    0008 (8) 'Deflated'\n-04901B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04901F CRC                   00000000 (0)\n-049023 Compressed Size       00000000 (0)\n-049027 Uncompressed Size     00000000 (0)\n-04902B Filename Length       004C (76)\n-04902D Extra Length          0000 (0)\n-04902F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06CF42 Compression Method    0008 (8) 'Deflated'\n+06CF44 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06CF48 CRC                   00000000 (0)\n+06CF4C Compressed Size       00000000 (0)\n+06CF50 Uncompressed Size     00000000 (0)\n+06CF54 Filename Length       003E (62)\n+06CF56 Extra Length          0000 (0)\n+06CF58 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4902F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6CF58: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04907B PAYLOAD\n+06CF96 PAYLOAD\n \n-049304 DATA DESCRIPTOR       08074B50 (134695760)\n-049308 CRC                   267D653A (645752122)\n-04930C Compressed Size       00000289 (649)\n-049310 Uncompressed Size     00000532 (1330)\n+06D21F DATA DESCRIPTOR       08074B50 (134695760)\n+06D223 CRC                   8DAF0532 (2377057586)\n+06D227 Compressed Size       00000289 (649)\n+06D22B Uncompressed Size     000004F2 (1266)\n \n-049314 LOCAL HEADER #379     04034B50 (67324752)\n-049318 Extract Zip Spec      14 (20) '2.0'\n-049319 Extract OS            00 (0) 'MS-DOS'\n-04931A General Purpose Flag  0808 (2056)\n+06D22F LOCAL HEADER #379     04034B50 (67324752)\n+06D233 Extract Zip Spec      14 (20) '2.0'\n+06D234 Extract OS            00 (0) 'MS-DOS'\n+06D235 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04931C Compression Method    0008 (8) 'Deflated'\n-04931E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-049322 CRC                   00000000 (0)\n-049326 Compressed Size       00000000 (0)\n-04932A Uncompressed Size     00000000 (0)\n-04932E Filename Length       0053 (83)\n-049330 Extra Length          0000 (0)\n-049332 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06D237 Compression Method    0008 (8) 'Deflated'\n+06D239 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06D23D CRC                   00000000 (0)\n+06D241 Compressed Size       00000000 (0)\n+06D245 Uncompressed Size     00000000 (0)\n+06D249 Filename Length       002E (46)\n+06D24B Extra Length          0000 (0)\n+06D24D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x49332: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6D24D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-049385 PAYLOAD\n+06D27B PAYLOAD\n \n-0495EA DATA DESCRIPTOR       08074B50 (134695760)\n-0495EE CRC                   2179F10E (561639694)\n-0495F2 Compressed Size       00000265 (613)\n-0495F6 Uncompressed Size     000004FE (1278)\n+06D516 DATA DESCRIPTOR       08074B50 (134695760)\n+06D51A CRC                   5CF3A6C0 (1559471808)\n+06D51E Compressed Size       0000029B (667)\n+06D522 Uncompressed Size     00000535 (1333)\n \n-0495FA LOCAL HEADER #380     04034B50 (67324752)\n-0495FE Extract Zip Spec      14 (20) '2.0'\n-0495FF Extract OS            00 (0) 'MS-DOS'\n-049600 General Purpose Flag  0808 (2056)\n+06D526 LOCAL HEADER #380     04034B50 (67324752)\n+06D52A Extract Zip Spec      14 (20) '2.0'\n+06D52B Extract OS            00 (0) 'MS-DOS'\n+06D52C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-049602 Compression Method    0008 (8) 'Deflated'\n-049604 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-049608 CRC                   00000000 (0)\n-04960C Compressed Size       00000000 (0)\n-049610 Uncompressed Size     00000000 (0)\n-049614 Filename Length       0031 (49)\n-049616 Extra Length          0000 (0)\n-049618 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06D52E Compression Method    0008 (8) 'Deflated'\n+06D530 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06D534 CRC                   00000000 (0)\n+06D538 Compressed Size       00000000 (0)\n+06D53C Uncompressed Size     00000000 (0)\n+06D540 Filename Length       002A (42)\n+06D542 Extra Length          0000 (0)\n+06D544 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x49618: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6D544: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-049649 PAYLOAD               XX\n+06D56E PAYLOAD               XX\n \n-04964B DATA DESCRIPTOR       08074B50 (134695760)\n-04964F CRC                   00000000 (0)\n-049653 Compressed Size       00000002 (2)\n-049657 Uncompressed Size     00000000 (0)\n+06D570 DATA DESCRIPTOR       08074B50 (134695760)\n+06D574 CRC                   00000000 (0)\n+06D578 Compressed Size       00000002 (2)\n+06D57C Uncompressed Size     00000000 (0)\n \n-04965B LOCAL HEADER #381     04034B50 (67324752)\n-04965F Extract Zip Spec      14 (20) '2.0'\n-049660 Extract OS            00 (0) 'MS-DOS'\n-049661 General Purpose Flag  0808 (2056)\n+06D580 LOCAL HEADER #381     04034B50 (67324752)\n+06D584 Extract Zip Spec      14 (20) '2.0'\n+06D585 Extract OS            00 (0) 'MS-DOS'\n+06D586 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-049663 Compression Method    0008 (8) 'Deflated'\n-049665 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-049669 CRC                   00000000 (0)\n-04966D Compressed Size       00000000 (0)\n-049671 Uncompressed Size     00000000 (0)\n-049675 Filename Length       0042 (66)\n-049677 Extra Length          0000 (0)\n-049679 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06D588 Compression Method    0008 (8) 'Deflated'\n+06D58A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06D58E CRC                   00000000 (0)\n+06D592 Compressed Size       00000000 (0)\n+06D596 Uncompressed Size     00000000 (0)\n+06D59A Filename Length       0047 (71)\n+06D59C Extra Length          0000 (0)\n+06D59E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x49679: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6D59E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0496BB PAYLOAD\n+06D5E5 PAYLOAD\n \n-049F59 DATA DESCRIPTOR       08074B50 (134695760)\n-049F5D CRC                   AF4730A5 (2940678309)\n-049F61 Compressed Size       0000089E (2206)\n-049F65 Uncompressed Size     00002151 (8529)\n+06D924 DATA DESCRIPTOR       08074B50 (134695760)\n+06D928 CRC                   EA8B59C6 (3935001030)\n+06D92C Compressed Size       0000033F (831)\n+06D930 Uncompressed Size     00000800 (2048)\n \n-049F69 LOCAL HEADER #382     04034B50 (67324752)\n-049F6D Extract Zip Spec      14 (20) '2.0'\n-049F6E Extract OS            00 (0) 'MS-DOS'\n-049F6F General Purpose Flag  0808 (2056)\n+06D934 LOCAL HEADER #382     04034B50 (67324752)\n+06D938 Extract Zip Spec      14 (20) '2.0'\n+06D939 Extract OS            00 (0) 'MS-DOS'\n+06D93A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-049F71 Compression Method    0008 (8) 'Deflated'\n-049F73 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-049F77 CRC                   00000000 (0)\n-049F7B Compressed Size       00000000 (0)\n-049F7F Uncompressed Size     00000000 (0)\n-049F83 Filename Length       0037 (55)\n-049F85 Extra Length          0000 (0)\n-049F87 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06D93C Compression Method    0008 (8) 'Deflated'\n+06D93E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06D942 CRC                   00000000 (0)\n+06D946 Compressed Size       00000000 (0)\n+06D94A Uncompressed Size     00000000 (0)\n+06D94E Filename Length       0042 (66)\n+06D950 Extra Length          0000 (0)\n+06D952 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x49F87: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6D952: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-049FBE PAYLOAD               XX\n+06D994 PAYLOAD\n \n-049FC0 DATA DESCRIPTOR       08074B50 (134695760)\n-049FC4 CRC                   00000000 (0)\n-049FC8 Compressed Size       00000002 (2)\n-049FCC Uncompressed Size     00000000 (0)\n+06DC62 DATA DESCRIPTOR       08074B50 (134695760)\n+06DC66 CRC                   3280412A (847266090)\n+06DC6A Compressed Size       000002CE (718)\n+06DC6E Uncompressed Size     0000060F (1551)\n \n-049FD0 LOCAL HEADER #383     04034B50 (67324752)\n-049FD4 Extract Zip Spec      14 (20) '2.0'\n-049FD5 Extract OS            00 (0) 'MS-DOS'\n-049FD6 General Purpose Flag  0808 (2056)\n+06DC72 LOCAL HEADER #383     04034B50 (67324752)\n+06DC76 Extract Zip Spec      14 (20) '2.0'\n+06DC77 Extract OS            00 (0) 'MS-DOS'\n+06DC78 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-049FD8 Compression Method    0008 (8) 'Deflated'\n-049FDA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-049FDE CRC                   00000000 (0)\n-049FE2 Compressed Size       00000000 (0)\n-049FE6 Uncompressed Size     00000000 (0)\n-049FEA Filename Length       0046 (70)\n-049FEC Extra Length          0000 (0)\n-049FEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06DC7A Compression Method    0008 (8) 'Deflated'\n+06DC7C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06DC80 CRC                   00000000 (0)\n+06DC84 Compressed Size       00000000 (0)\n+06DC88 Uncompressed Size     00000000 (0)\n+06DC8C Filename Length       002A (42)\n+06DC8E Extra Length          0000 (0)\n+06DC90 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x49FEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6DC90: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04A034 PAYLOAD\n+06DCBA PAYLOAD               XX\n \n-04A3ED DATA DESCRIPTOR       08074B50 (134695760)\n-04A3F1 CRC                   036D4C42 (57494594)\n-04A3F5 Compressed Size       000003B9 (953)\n-04A3F9 Uncompressed Size     00000B63 (2915)\n+06DCBC DATA DESCRIPTOR       08074B50 (134695760)\n+06DCC0 CRC                   00000000 (0)\n+06DCC4 Compressed Size       00000002 (2)\n+06DCC8 Uncompressed Size     00000000 (0)\n \n-04A3FD LOCAL HEADER #384     04034B50 (67324752)\n-04A401 Extract Zip Spec      14 (20) '2.0'\n-04A402 Extract OS            00 (0) 'MS-DOS'\n-04A403 General Purpose Flag  0808 (2056)\n+06DCCC LOCAL HEADER #384     04034B50 (67324752)\n+06DCD0 Extract Zip Spec      14 (20) '2.0'\n+06DCD1 Extract OS            00 (0) 'MS-DOS'\n+06DCD2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04A405 Compression Method    0008 (8) 'Deflated'\n-04A407 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04A40B CRC                   00000000 (0)\n-04A40F Compressed Size       00000000 (0)\n-04A413 Uncompressed Size     00000000 (0)\n-04A417 Filename Length       004E (78)\n-04A419 Extra Length          0000 (0)\n-04A41B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06DCD4 Compression Method    0008 (8) 'Deflated'\n+06DCD6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06DCDA CRC                   00000000 (0)\n+06DCDE Compressed Size       00000000 (0)\n+06DCE2 Uncompressed Size     00000000 (0)\n+06DCE6 Filename Length       0041 (65)\n+06DCE8 Extra Length          0000 (0)\n+06DCEA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4A41B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6DCEA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04A469 PAYLOAD\n+06DD2B PAYLOAD\n \n-04A787 DATA DESCRIPTOR       08074B50 (134695760)\n-04A78B CRC                   27E35EC9 (669212361)\n-04A78F Compressed Size       0000031E (798)\n-04A793 Uncompressed Size     0000080A (2058)\n+06E278 DATA DESCRIPTOR       08074B50 (134695760)\n+06E27C CRC                   B81BB8E1 (3088824545)\n+06E280 Compressed Size       0000054D (1357)\n+06E284 Uncompressed Size     000011D4 (4564)\n \n-04A797 LOCAL HEADER #385     04034B50 (67324752)\n-04A79B Extract Zip Spec      14 (20) '2.0'\n-04A79C Extract OS            00 (0) 'MS-DOS'\n-04A79D General Purpose Flag  0808 (2056)\n+06E288 LOCAL HEADER #385     04034B50 (67324752)\n+06E28C Extract Zip Spec      14 (20) '2.0'\n+06E28D Extract OS            00 (0) 'MS-DOS'\n+06E28E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04A79F Compression Method    0008 (8) 'Deflated'\n-04A7A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04A7A5 CRC                   00000000 (0)\n-04A7A9 Compressed Size       00000000 (0)\n-04A7AD Uncompressed Size     00000000 (0)\n-04A7B1 Filename Length       0027 (39)\n-04A7B3 Extra Length          0000 (0)\n-04A7B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06E290 Compression Method    0008 (8) 'Deflated'\n+06E292 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06E296 CRC                   00000000 (0)\n+06E29A Compressed Size       00000000 (0)\n+06E29E Uncompressed Size     00000000 (0)\n+06E2A2 Filename Length       0040 (64)\n+06E2A4 Extra Length          0000 (0)\n+06E2A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4A7B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6E2A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04A7DC PAYLOAD               XX\n+06E2E6 PAYLOAD\n \n-04A7DE DATA DESCRIPTOR       08074B50 (134695760)\n-04A7E2 CRC                   00000000 (0)\n-04A7E6 Compressed Size       00000002 (2)\n-04A7EA Uncompressed Size     00000000 (0)\n+06E742 DATA DESCRIPTOR       08074B50 (134695760)\n+06E746 CRC                   1FF4288F (536094863)\n+06E74A Compressed Size       0000045C (1116)\n+06E74E Uncompressed Size     00000C58 (3160)\n \n-04A7EE LOCAL HEADER #386     04034B50 (67324752)\n-04A7F2 Extract Zip Spec      14 (20) '2.0'\n-04A7F3 Extract OS            00 (0) 'MS-DOS'\n-04A7F4 General Purpose Flag  0808 (2056)\n+06E752 LOCAL HEADER #386     04034B50 (67324752)\n+06E756 Extract Zip Spec      14 (20) '2.0'\n+06E757 Extract OS            00 (0) 'MS-DOS'\n+06E758 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04A7F6 Compression Method    0008 (8) 'Deflated'\n-04A7F8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04A7FC CRC                   00000000 (0)\n-04A800 Compressed Size       00000000 (0)\n-04A804 Uncompressed Size     00000000 (0)\n-04A808 Filename Length       003D (61)\n-04A80A Extra Length          0000 (0)\n-04A80C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06E75A Compression Method    0008 (8) 'Deflated'\n+06E75C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06E760 CRC                   00000000 (0)\n+06E764 Compressed Size       00000000 (0)\n+06E768 Uncompressed Size     00000000 (0)\n+06E76C Filename Length       0021 (33)\n+06E76E Extra Length          0000 (0)\n+06E770 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4A80C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6E770: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04A849 PAYLOAD\n+06E791 PAYLOAD               XX\n \n-04AE49 DATA DESCRIPTOR       08074B50 (134695760)\n-04AE4D CRC                   469827B2 (1184376754)\n-04AE51 Compressed Size       00000600 (1536)\n-04AE55 Uncompressed Size     000012D4 (4820)\n+06E793 DATA DESCRIPTOR       08074B50 (134695760)\n+06E797 CRC                   00000000 (0)\n+06E79B Compressed Size       00000002 (2)\n+06E79F Uncompressed Size     00000000 (0)\n \n-04AE59 LOCAL HEADER #387     04034B50 (67324752)\n-04AE5D Extract Zip Spec      14 (20) '2.0'\n-04AE5E Extract OS            00 (0) 'MS-DOS'\n-04AE5F General Purpose Flag  0808 (2056)\n+06E7A3 LOCAL HEADER #387     04034B50 (67324752)\n+06E7A7 Extract Zip Spec      14 (20) '2.0'\n+06E7A8 Extract OS            00 (0) 'MS-DOS'\n+06E7A9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04AE61 Compression Method    0008 (8) 'Deflated'\n-04AE63 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04AE67 CRC                   00000000 (0)\n-04AE6B Compressed Size       00000000 (0)\n-04AE6F Uncompressed Size     00000000 (0)\n-04AE73 Filename Length       003B (59)\n-04AE75 Extra Length          0000 (0)\n-04AE77 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06E7AB Compression Method    0008 (8) 'Deflated'\n+06E7AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06E7B1 CRC                   00000000 (0)\n+06E7B5 Compressed Size       00000000 (0)\n+06E7B9 Uncompressed Size     00000000 (0)\n+06E7BD Filename Length       0030 (48)\n+06E7BF Extra Length          0000 (0)\n+06E7C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4AE77: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6E7C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04AEB2 PAYLOAD\n+06E7F1 PAYLOAD\n \n-04B382 DATA DESCRIPTOR       08074B50 (134695760)\n-04B386 CRC                   FF9ED7FD (4288600061)\n-04B38A Compressed Size       000004D0 (1232)\n-04B38E Uncompressed Size     00000ECB (3787)\n+06EB66 DATA DESCRIPTOR       08074B50 (134695760)\n+06EB6A CRC                   C191912C (3247542572)\n+06EB6E Compressed Size       00000375 (885)\n+06EB72 Uncompressed Size     0000096F (2415)\n \n-04B392 LOCAL HEADER #388     04034B50 (67324752)\n-04B396 Extract Zip Spec      14 (20) '2.0'\n-04B397 Extract OS            00 (0) 'MS-DOS'\n-04B398 General Purpose Flag  0808 (2056)\n+06EB76 LOCAL HEADER #388     04034B50 (67324752)\n+06EB7A Extract Zip Spec      14 (20) '2.0'\n+06EB7B Extract OS            00 (0) 'MS-DOS'\n+06EB7C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04B39A Compression Method    0008 (8) 'Deflated'\n-04B39C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04B3A0 CRC                   00000000 (0)\n-04B3A4 Compressed Size       00000000 (0)\n-04B3A8 Uncompressed Size     00000000 (0)\n-04B3AC Filename Length       0028 (40)\n-04B3AE Extra Length          0000 (0)\n-04B3B0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06EB7E Compression Method    0008 (8) 'Deflated'\n+06EB80 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06EB84 CRC                   00000000 (0)\n+06EB88 Compressed Size       00000000 (0)\n+06EB8C Uncompressed Size     00000000 (0)\n+06EB90 Filename Length       002D (45)\n+06EB92 Extra Length          0000 (0)\n+06EB94 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4B3B0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6EB94: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04B3D8 PAYLOAD               XX\n+06EBC1 PAYLOAD\n \n-04B3DA DATA DESCRIPTOR       08074B50 (134695760)\n-04B3DE CRC                   00000000 (0)\n-04B3E2 Compressed Size       00000002 (2)\n-04B3E6 Uncompressed Size     00000000 (0)\n+06EF74 DATA DESCRIPTOR       08074B50 (134695760)\n+06EF78 CRC                   B9F68231 (3119940145)\n+06EF7C Compressed Size       000003B3 (947)\n+06EF80 Uncompressed Size     00000AC2 (2754)\n \n-04B3EA LOCAL HEADER #389     04034B50 (67324752)\n-04B3EE Extract Zip Spec      14 (20) '2.0'\n-04B3EF Extract OS            00 (0) 'MS-DOS'\n-04B3F0 General Purpose Flag  0808 (2056)\n+06EF84 LOCAL HEADER #389     04034B50 (67324752)\n+06EF88 Extract Zip Spec      14 (20) '2.0'\n+06EF89 Extract OS            00 (0) 'MS-DOS'\n+06EF8A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04B3F2 Compression Method    0008 (8) 'Deflated'\n-04B3F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04B3F8 CRC                   00000000 (0)\n-04B3FC Compressed Size       00000000 (0)\n-04B400 Uncompressed Size     00000000 (0)\n-04B404 Filename Length       0050 (80)\n-04B406 Extra Length          0000 (0)\n-04B408 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06EF8C Compression Method    0008 (8) 'Deflated'\n+06EF8E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06EF92 CRC                   00000000 (0)\n+06EF96 Compressed Size       00000000 (0)\n+06EF9A Uncompressed Size     00000000 (0)\n+06EF9E Filename Length       0035 (53)\n+06EFA0 Extra Length          0000 (0)\n+06EFA2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4B408: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6EFA2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04B458 PAYLOAD\n+06EFD7 PAYLOAD\n \n-04B72F DATA DESCRIPTOR       08074B50 (134695760)\n-04B733 CRC                   5EE85BF3 (1592286195)\n-04B737 Compressed Size       000002D7 (727)\n-04B73B Uncompressed Size     000006C4 (1732)\n+06F2BE DATA DESCRIPTOR       08074B50 (134695760)\n+06F2C2 CRC                   9A0865B9 (2584241593)\n+06F2C6 Compressed Size       000002E7 (743)\n+06F2CA Uncompressed Size     0000066B (1643)\n \n-04B73F LOCAL HEADER #390     04034B50 (67324752)\n-04B743 Extract Zip Spec      14 (20) '2.0'\n-04B744 Extract OS            00 (0) 'MS-DOS'\n-04B745 General Purpose Flag  0808 (2056)\n+06F2CE LOCAL HEADER #390     04034B50 (67324752)\n+06F2D2 Extract Zip Spec      14 (20) '2.0'\n+06F2D3 Extract OS            00 (0) 'MS-DOS'\n+06F2D4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04B747 Compression Method    0008 (8) 'Deflated'\n-04B749 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04B74D CRC                   00000000 (0)\n-04B751 Compressed Size       00000000 (0)\n-04B755 Uncompressed Size     00000000 (0)\n-04B759 Filename Length       0045 (69)\n-04B75B Extra Length          0000 (0)\n-04B75D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06F2D6 Compression Method    0008 (8) 'Deflated'\n+06F2D8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06F2DC CRC                   00000000 (0)\n+06F2E0 Compressed Size       00000000 (0)\n+06F2E4 Uncompressed Size     00000000 (0)\n+06F2E8 Filename Length       0037 (55)\n+06F2EA Extra Length          0000 (0)\n+06F2EC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4B75D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6F2EC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04B7A2 PAYLOAD\n+06F323 PAYLOAD\n \n-04BC23 DATA DESCRIPTOR       08074B50 (134695760)\n-04BC27 CRC                   4F276AEF (1327983343)\n-04BC2B Compressed Size       00000481 (1153)\n-04BC2F Uncompressed Size     00000E87 (3719)\n+06F68B DATA DESCRIPTOR       08074B50 (134695760)\n+06F68F CRC                   5F2ADB9F (1596644255)\n+06F693 Compressed Size       00000368 (872)\n+06F697 Uncompressed Size     00000832 (2098)\n \n-04BC33 LOCAL HEADER #391     04034B50 (67324752)\n-04BC37 Extract Zip Spec      14 (20) '2.0'\n-04BC38 Extract OS            00 (0) 'MS-DOS'\n-04BC39 General Purpose Flag  0808 (2056)\n+06F69B LOCAL HEADER #391     04034B50 (67324752)\n+06F69F Extract Zip Spec      14 (20) '2.0'\n+06F6A0 Extract OS            00 (0) 'MS-DOS'\n+06F6A1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04BC3B Compression Method    0008 (8) 'Deflated'\n-04BC3D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04BC41 CRC                   00000000 (0)\n-04BC45 Compressed Size       00000000 (0)\n-04BC49 Uncompressed Size     00000000 (0)\n-04BC4D Filename Length       0029 (41)\n-04BC4F Extra Length          0000 (0)\n-04BC51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06F6A3 Compression Method    0008 (8) 'Deflated'\n+06F6A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06F6A9 CRC                   00000000 (0)\n+06F6AD Compressed Size       00000000 (0)\n+06F6B1 Uncompressed Size     00000000 (0)\n+06F6B5 Filename Length       0037 (55)\n+06F6B7 Extra Length          0000 (0)\n+06F6B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4BC51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6F6B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04BC7A PAYLOAD               XX\n+06F6F0 PAYLOAD\n \n-04BC7C DATA DESCRIPTOR       08074B50 (134695760)\n-04BC80 CRC                   00000000 (0)\n-04BC84 Compressed Size       00000002 (2)\n-04BC88 Uncompressed Size     00000000 (0)\n+06FA6C DATA DESCRIPTOR       08074B50 (134695760)\n+06FA70 CRC                   4D1AEB96 (1293609878)\n+06FA74 Compressed Size       0000037C (892)\n+06FA78 Uncompressed Size     000008CC (2252)\n \n-04BC8C LOCAL HEADER #392     04034B50 (67324752)\n-04BC90 Extract Zip Spec      14 (20) '2.0'\n-04BC91 Extract OS            00 (0) 'MS-DOS'\n-04BC92 General Purpose Flag  0808 (2056)\n+06FA7C LOCAL HEADER #392     04034B50 (67324752)\n+06FA80 Extract Zip Spec      14 (20) '2.0'\n+06FA81 Extract OS            00 (0) 'MS-DOS'\n+06FA82 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04BC94 Compression Method    0008 (8) 'Deflated'\n-04BC96 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04BC9A CRC                   00000000 (0)\n-04BC9E Compressed Size       00000000 (0)\n-04BCA2 Uncompressed Size     00000000 (0)\n-04BCA6 Filename Length       0040 (64)\n-04BCA8 Extra Length          0000 (0)\n-04BCAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06FA84 Compression Method    0008 (8) 'Deflated'\n+06FA86 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06FA8A CRC                   00000000 (0)\n+06FA8E Compressed Size       00000000 (0)\n+06FA92 Uncompressed Size     00000000 (0)\n+06FA96 Filename Length       001E (30)\n+06FA98 Extra Length          0000 (0)\n+06FA9A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4BCAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6FA9A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04BCEA PAYLOAD\n+06FAB8 PAYLOAD               XX\n \n-04C070 DATA DESCRIPTOR       08074B50 (134695760)\n-04C074 CRC                   E239D68F (3795441295)\n-04C078 Compressed Size       00000386 (902)\n-04C07C Uncompressed Size     000008D4 (2260)\n+06FABA DATA DESCRIPTOR       08074B50 (134695760)\n+06FABE CRC                   00000000 (0)\n+06FAC2 Compressed Size       00000002 (2)\n+06FAC6 Uncompressed Size     00000000 (0)\n \n-04C080 LOCAL HEADER #393     04034B50 (67324752)\n-04C084 Extract Zip Spec      14 (20) '2.0'\n-04C085 Extract OS            00 (0) 'MS-DOS'\n-04C086 General Purpose Flag  0808 (2056)\n+06FACA LOCAL HEADER #393     04034B50 (67324752)\n+06FACE Extract Zip Spec      14 (20) '2.0'\n+06FACF Extract OS            00 (0) 'MS-DOS'\n+06FAD0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04C088 Compression Method    0008 (8) 'Deflated'\n-04C08A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04C08E CRC                   00000000 (0)\n-04C092 Compressed Size       00000000 (0)\n-04C096 Uncompressed Size     00000000 (0)\n-04C09A Filename Length       004F (79)\n-04C09C Extra Length          0000 (0)\n-04C09E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06FAD2 Compression Method    0008 (8) 'Deflated'\n+06FAD4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06FAD8 CRC                   00000000 (0)\n+06FADC Compressed Size       00000000 (0)\n+06FAE0 Uncompressed Size     00000000 (0)\n+06FAE4 Filename Length       002F (47)\n+06FAE6 Extra Length          0000 (0)\n+06FAE8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4C09E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6FAE8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04C0ED PAYLOAD\n+06FB17 PAYLOAD\n \n-04C446 DATA DESCRIPTOR       08074B50 (134695760)\n-04C44A CRC                   5A7B56B1 (1518032561)\n-04C44E Compressed Size       00000359 (857)\n-04C452 Uncompressed Size     00000899 (2201)\n+06FE3E DATA DESCRIPTOR       08074B50 (134695760)\n+06FE42 CRC                   D1400D79 (3510635897)\n+06FE46 Compressed Size       00000327 (807)\n+06FE4A Uncompressed Size     00000647 (1607)\n \n-04C456 LOCAL HEADER #394     04034B50 (67324752)\n-04C45A Extract Zip Spec      14 (20) '2.0'\n-04C45B Extract OS            00 (0) 'MS-DOS'\n-04C45C General Purpose Flag  0808 (2056)\n+06FE4E LOCAL HEADER #394     04034B50 (67324752)\n+06FE52 Extract Zip Spec      14 (20) '2.0'\n+06FE53 Extract OS            00 (0) 'MS-DOS'\n+06FE54 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04C45E Compression Method    0008 (8) 'Deflated'\n-04C460 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04C464 CRC                   00000000 (0)\n-04C468 Compressed Size       00000000 (0)\n-04C46C Uncompressed Size     00000000 (0)\n-04C470 Filename Length       0049 (73)\n-04C472 Extra Length          0000 (0)\n-04C474 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06FE56 Compression Method    0008 (8) 'Deflated'\n+06FE58 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06FE5C CRC                   00000000 (0)\n+06FE60 Compressed Size       00000000 (0)\n+06FE64 Uncompressed Size     00000000 (0)\n+06FE68 Filename Length       0026 (38)\n+06FE6A Extra Length          0000 (0)\n+06FE6C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4C474: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6FE6C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04C4BD PAYLOAD\n+06FE92 PAYLOAD               XX\n \n-04C8B0 DATA DESCRIPTOR       08074B50 (134695760)\n-04C8B4 CRC                   C3191A72 (3273202290)\n-04C8B8 Compressed Size       000003F3 (1011)\n-04C8BC Uncompressed Size     00000A65 (2661)\n+06FE94 DATA DESCRIPTOR       08074B50 (134695760)\n+06FE98 CRC                   00000000 (0)\n+06FE9C Compressed Size       00000002 (2)\n+06FEA0 Uncompressed Size     00000000 (0)\n \n-04C8C0 LOCAL HEADER #395     04034B50 (67324752)\n-04C8C4 Extract Zip Spec      14 (20) '2.0'\n-04C8C5 Extract OS            00 (0) 'MS-DOS'\n-04C8C6 General Purpose Flag  0808 (2056)\n+06FEA4 LOCAL HEADER #395     04034B50 (67324752)\n+06FEA8 Extract Zip Spec      14 (20) '2.0'\n+06FEA9 Extract OS            00 (0) 'MS-DOS'\n+06FEAA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04C8C8 Compression Method    0008 (8) 'Deflated'\n-04C8CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04C8CE CRC                   00000000 (0)\n-04C8D2 Compressed Size       00000000 (0)\n-04C8D6 Uncompressed Size     00000000 (0)\n-04C8DA Filename Length       0029 (41)\n-04C8DC Extra Length          0000 (0)\n-04C8DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+06FEAC Compression Method    0008 (8) 'Deflated'\n+06FEAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+06FEB2 CRC                   00000000 (0)\n+06FEB6 Compressed Size       00000000 (0)\n+06FEBA Uncompressed Size     00000000 (0)\n+06FEBE Filename Length       0036 (54)\n+06FEC0 Extra Length          0000 (0)\n+06FEC2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4C8DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x6FEC2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04C907 PAYLOAD               XX\n+06FEF8 PAYLOAD\n \n-04C909 DATA DESCRIPTOR       08074B50 (134695760)\n-04C90D CRC                   00000000 (0)\n-04C911 Compressed Size       00000002 (2)\n-04C915 Uncompressed Size     00000000 (0)\n+070184 DATA DESCRIPTOR       08074B50 (134695760)\n+070188 CRC                   4A87D325 (1250415397)\n+07018C Compressed Size       0000028C (652)\n+070190 Uncompressed Size     0000052B (1323)\n \n-04C919 LOCAL HEADER #396     04034B50 (67324752)\n-04C91D Extract Zip Spec      14 (20) '2.0'\n-04C91E Extract OS            00 (0) 'MS-DOS'\n-04C91F General Purpose Flag  0808 (2056)\n+070194 LOCAL HEADER #396     04034B50 (67324752)\n+070198 Extract Zip Spec      14 (20) '2.0'\n+070199 Extract OS            00 (0) 'MS-DOS'\n+07019A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04C921 Compression Method    0008 (8) 'Deflated'\n-04C923 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04C927 CRC                   00000000 (0)\n-04C92B Compressed Size       00000000 (0)\n-04C92F Uncompressed Size     00000000 (0)\n-04C933 Filename Length       0041 (65)\n-04C935 Extra Length          0000 (0)\n-04C937 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07019C Compression Method    0008 (8) 'Deflated'\n+07019E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0701A2 CRC                   00000000 (0)\n+0701A6 Compressed Size       00000000 (0)\n+0701AA Uncompressed Size     00000000 (0)\n+0701AE Filename Length       003D (61)\n+0701B0 Extra Length          0000 (0)\n+0701B2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4C937: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x701B2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04C978 PAYLOAD\n+0701EF PAYLOAD\n \n-04CF26 DATA DESCRIPTOR       08074B50 (134695760)\n-04CF2A CRC                   BCC9CB9D (3167341469)\n-04CF2E Compressed Size       000005AE (1454)\n-04CF32 Uncompressed Size     000010C1 (4289)\n+070612 DATA DESCRIPTOR       08074B50 (134695760)\n+070616 CRC                   382251E3 (941773283)\n+07061A Compressed Size       00000423 (1059)\n+07061E Uncompressed Size     00000B9D (2973)\n \n-04CF36 LOCAL HEADER #397     04034B50 (67324752)\n-04CF3A Extract Zip Spec      14 (20) '2.0'\n-04CF3B Extract OS            00 (0) 'MS-DOS'\n-04CF3C General Purpose Flag  0808 (2056)\n+070622 LOCAL HEADER #397     04034B50 (67324752)\n+070626 Extract Zip Spec      14 (20) '2.0'\n+070627 Extract OS            00 (0) 'MS-DOS'\n+070628 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04CF3E Compression Method    0008 (8) 'Deflated'\n-04CF40 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04CF44 CRC                   00000000 (0)\n-04CF48 Compressed Size       00000000 (0)\n-04CF4C Uncompressed Size     00000000 (0)\n-04CF50 Filename Length       0047 (71)\n-04CF52 Extra Length          0000 (0)\n-04CF54 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07062A Compression Method    0008 (8) 'Deflated'\n+07062C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+070630 CRC                   00000000 (0)\n+070634 Compressed Size       00000000 (0)\n+070638 Uncompressed Size     00000000 (0)\n+07063C Filename Length       001B (27)\n+07063E Extra Length          0000 (0)\n+070640 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4CF54: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x70640: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04CF9B PAYLOAD\n+07065B PAYLOAD               XX\n \n-04D662 DATA DESCRIPTOR       08074B50 (134695760)\n-04D666 CRC                   D501B98C (3573660044)\n-04D66A Compressed Size       000006C7 (1735)\n-04D66E Uncompressed Size     000014EB (5355)\n+07065D DATA DESCRIPTOR       08074B50 (134695760)\n+070661 CRC                   00000000 (0)\n+070665 Compressed Size       00000002 (2)\n+070669 Uncompressed Size     00000000 (0)\n \n-04D672 LOCAL HEADER #398     04034B50 (67324752)\n-04D676 Extract Zip Spec      14 (20) '2.0'\n-04D677 Extract OS            00 (0) 'MS-DOS'\n-04D678 General Purpose Flag  0808 (2056)\n+07066D LOCAL HEADER #398     04034B50 (67324752)\n+070671 Extract Zip Spec      14 (20) '2.0'\n+070672 Extract OS            00 (0) 'MS-DOS'\n+070673 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04D67A Compression Method    0008 (8) 'Deflated'\n-04D67C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04D680 CRC                   00000000 (0)\n-04D684 Compressed Size       00000000 (0)\n-04D688 Uncompressed Size     00000000 (0)\n-04D68C Filename Length       0044 (68)\n-04D68E Extra Length          0000 (0)\n-04D690 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+070675 Compression Method    0008 (8) 'Deflated'\n+070677 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07067B CRC                   00000000 (0)\n+07067F Compressed Size       00000000 (0)\n+070683 Uncompressed Size     00000000 (0)\n+070687 Filename Length       0025 (37)\n+070689 Extra Length          0000 (0)\n+07068B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4D690: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7068B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04D6D4 PAYLOAD\n+0706B0 PAYLOAD\n \n-04DDAE DATA DESCRIPTOR       08074B50 (134695760)\n-04DDB2 CRC                   5955E637 (1498801719)\n-04DDB6 Compressed Size       000006DA (1754)\n-04DDBA Uncompressed Size     000015EF (5615)\n+071640 DATA DESCRIPTOR       08074B50 (134695760)\n+071644 CRC                   7D41B4B3 (2101458099)\n+071648 Compressed Size       00000F90 (3984)\n+07164C Uncompressed Size     000068BF (26815)\n \n-04DDBE LOCAL HEADER #399     04034B50 (67324752)\n-04DDC2 Extract Zip Spec      14 (20) '2.0'\n-04DDC3 Extract OS            00 (0) 'MS-DOS'\n-04DDC4 General Purpose Flag  0808 (2056)\n+071650 LOCAL HEADER #399     04034B50 (67324752)\n+071654 Extract Zip Spec      14 (20) '2.0'\n+071655 Extract OS            00 (0) 'MS-DOS'\n+071656 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04DDC6 Compression Method    0008 (8) 'Deflated'\n-04DDC8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04DDCC CRC                   00000000 (0)\n-04DDD0 Compressed Size       00000000 (0)\n-04DDD4 Uncompressed Size     00000000 (0)\n-04DDD8 Filename Length       003F (63)\n-04DDDA Extra Length          0000 (0)\n-04DDDC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+071658 Compression Method    0008 (8) 'Deflated'\n+07165A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07165E CRC                   00000000 (0)\n+071662 Compressed Size       00000000 (0)\n+071666 Uncompressed Size     00000000 (0)\n+07166A Filename Length       002B (43)\n+07166C Extra Length          0000 (0)\n+07166E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4DDDC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7166E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04DE1B PAYLOAD\n+071699 PAYLOAD\n \n-04E366 DATA DESCRIPTOR       08074B50 (134695760)\n-04E36A CRC                   0BF8995C (200841564)\n-04E36E Compressed Size       0000054B (1355)\n-04E372 Uncompressed Size     00000D00 (3328)\n+071CDD DATA DESCRIPTOR       08074B50 (134695760)\n+071CE1 CRC                   D2FF4595 (3539944853)\n+071CE5 Compressed Size       00000644 (1604)\n+071CE9 Uncompressed Size     00001BE9 (7145)\n \n-04E376 LOCAL HEADER #400     04034B50 (67324752)\n-04E37A Extract Zip Spec      14 (20) '2.0'\n-04E37B Extract OS            00 (0) 'MS-DOS'\n-04E37C General Purpose Flag  0808 (2056)\n+071CED LOCAL HEADER #400     04034B50 (67324752)\n+071CF1 Extract Zip Spec      14 (20) '2.0'\n+071CF2 Extract OS            00 (0) 'MS-DOS'\n+071CF3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04E37E Compression Method    0008 (8) 'Deflated'\n-04E380 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04E384 CRC                   00000000 (0)\n-04E388 Compressed Size       00000000 (0)\n-04E38C Uncompressed Size     00000000 (0)\n-04E390 Filename Length       0043 (67)\n-04E392 Extra Length          0000 (0)\n-04E394 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+071CF5 Compression Method    0008 (8) 'Deflated'\n+071CF7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+071CFB CRC                   00000000 (0)\n+071CFF Compressed Size       00000000 (0)\n+071D03 Uncompressed Size     00000000 (0)\n+071D07 Filename Length       003A (58)\n+071D09 Extra Length          0000 (0)\n+071D0B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4E394: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x71D0B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04E3D7 PAYLOAD\n+071D45 PAYLOAD\n \n-04E9EF DATA DESCRIPTOR       08074B50 (134695760)\n-04E9F3 CRC                   B03BDD5E (2956713310)\n-04E9F7 Compressed Size       00000618 (1560)\n-04E9FB Uncompressed Size     000012CC (4812)\n+07216D DATA DESCRIPTOR       08074B50 (134695760)\n+072171 CRC                   D8BBACF0 (3636178160)\n+072175 Compressed Size       00000428 (1064)\n+072179 Uncompressed Size     00000C61 (3169)\n \n-04E9FF LOCAL HEADER #401     04034B50 (67324752)\n-04EA03 Extract Zip Spec      14 (20) '2.0'\n-04EA04 Extract OS            00 (0) 'MS-DOS'\n-04EA05 General Purpose Flag  0808 (2056)\n+07217D LOCAL HEADER #401     04034B50 (67324752)\n+072181 Extract Zip Spec      14 (20) '2.0'\n+072182 Extract OS            00 (0) 'MS-DOS'\n+072183 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04EA07 Compression Method    0008 (8) 'Deflated'\n-04EA09 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04EA0D CRC                   00000000 (0)\n-04EA11 Compressed Size       00000000 (0)\n-04EA15 Uncompressed Size     00000000 (0)\n-04EA19 Filename Length       0049 (73)\n-04EA1B Extra Length          0000 (0)\n-04EA1D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+072185 Compression Method    0008 (8) 'Deflated'\n+072187 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07218B CRC                   00000000 (0)\n+07218F Compressed Size       00000000 (0)\n+072193 Uncompressed Size     00000000 (0)\n+072197 Filename Length       003B (59)\n+072199 Extra Length          0000 (0)\n+07219B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4EA1D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7219B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04EA66 PAYLOAD\n+0721D6 PAYLOAD\n \n-04F060 DATA DESCRIPTOR       08074B50 (134695760)\n-04F064 CRC                   5F890A01 (1602816513)\n-04F068 Compressed Size       000005FA (1530)\n-04F06C Uncompressed Size     000011D5 (4565)\n+0725FB DATA DESCRIPTOR       08074B50 (134695760)\n+0725FF CRC                   DCFCECF5 (3707563253)\n+072603 Compressed Size       00000425 (1061)\n+072607 Uncompressed Size     00000BF3 (3059)\n \n-04F070 LOCAL HEADER #402     04034B50 (67324752)\n-04F074 Extract Zip Spec      14 (20) '2.0'\n-04F075 Extract OS            00 (0) 'MS-DOS'\n-04F076 General Purpose Flag  0808 (2056)\n+07260B LOCAL HEADER #402     04034B50 (67324752)\n+07260F Extract Zip Spec      14 (20) '2.0'\n+072610 Extract OS            00 (0) 'MS-DOS'\n+072611 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04F078 Compression Method    0008 (8) 'Deflated'\n-04F07A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04F07E CRC                   00000000 (0)\n-04F082 Compressed Size       00000000 (0)\n-04F086 Uncompressed Size     00000000 (0)\n-04F08A Filename Length       0024 (36)\n-04F08C Extra Length          0000 (0)\n-04F08E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+072613 Compression Method    0008 (8) 'Deflated'\n+072615 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+072619 CRC                   00000000 (0)\n+07261D Compressed Size       00000000 (0)\n+072621 Uncompressed Size     00000000 (0)\n+072625 Filename Length       0032 (50)\n+072627 Extra Length          0000 (0)\n+072629 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4F08E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x72629: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04F0B2 PAYLOAD               XX\n+07265B PAYLOAD\n \n-04F0B4 DATA DESCRIPTOR       08074B50 (134695760)\n-04F0B8 CRC                   00000000 (0)\n-04F0BC Compressed Size       00000002 (2)\n-04F0C0 Uncompressed Size     00000000 (0)\n+072A77 DATA DESCRIPTOR       08074B50 (134695760)\n+072A7B CRC                   490F11E6 (1225724390)\n+072A7F Compressed Size       0000041C (1052)\n+072A83 Uncompressed Size     00000C65 (3173)\n \n-04F0C4 LOCAL HEADER #403     04034B50 (67324752)\n-04F0C8 Extract Zip Spec      14 (20) '2.0'\n-04F0C9 Extract OS            00 (0) 'MS-DOS'\n-04F0CA General Purpose Flag  0808 (2056)\n+072A87 LOCAL HEADER #403     04034B50 (67324752)\n+072A8B Extract Zip Spec      14 (20) '2.0'\n+072A8C Extract OS            00 (0) 'MS-DOS'\n+072A8D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04F0CC Compression Method    0008 (8) 'Deflated'\n-04F0CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04F0D2 CRC                   00000000 (0)\n-04F0D6 Compressed Size       00000000 (0)\n-04F0DA Uncompressed Size     00000000 (0)\n-04F0DE Filename Length       0034 (52)\n-04F0E0 Extra Length          0000 (0)\n-04F0E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+072A8F Compression Method    0008 (8) 'Deflated'\n+072A91 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+072A95 CRC                   00000000 (0)\n+072A99 Compressed Size       00000000 (0)\n+072A9D Uncompressed Size     00000000 (0)\n+072AA1 Filename Length       0032 (50)\n+072AA3 Extra Length          0000 (0)\n+072AA5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4F0E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x72AA5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04F116 PAYLOAD\n+072AD7 PAYLOAD\n \n-04F4E6 DATA DESCRIPTOR       08074B50 (134695760)\n-04F4EA CRC                   B70DC735 (3071133493)\n-04F4EE Compressed Size       000003D0 (976)\n-04F4F2 Uncompressed Size     00000959 (2393)\n+072EB4 DATA DESCRIPTOR       08074B50 (134695760)\n+072EB8 CRC                   3A9B5BED (983260141)\n+072EBC Compressed Size       000003DD (989)\n+072EC0 Uncompressed Size     00000B3F (2879)\n \n-04F4F6 LOCAL HEADER #404     04034B50 (67324752)\n-04F4FA Extract Zip Spec      14 (20) '2.0'\n-04F4FB Extract OS            00 (0) 'MS-DOS'\n-04F4FC General Purpose Flag  0808 (2056)\n+072EC4 LOCAL HEADER #404     04034B50 (67324752)\n+072EC8 Extract Zip Spec      14 (20) '2.0'\n+072EC9 Extract OS            00 (0) 'MS-DOS'\n+072ECA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04F4FE Compression Method    0008 (8) 'Deflated'\n-04F500 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04F504 CRC                   00000000 (0)\n-04F508 Compressed Size       00000000 (0)\n-04F50C Uncompressed Size     00000000 (0)\n-04F510 Filename Length       003B (59)\n-04F512 Extra Length          0000 (0)\n-04F514 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+072ECC Compression Method    0008 (8) 'Deflated'\n+072ECE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+072ED2 CRC                   00000000 (0)\n+072ED6 Compressed Size       00000000 (0)\n+072EDA Uncompressed Size     00000000 (0)\n+072EDE Filename Length       001D (29)\n+072EE0 Extra Length          0000 (0)\n+072EE2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4F514: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x72EE2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04F54F PAYLOAD\n+072EFF PAYLOAD               XX\n \n-04F834 DATA DESCRIPTOR       08074B50 (134695760)\n-04F838 CRC                   5ECBBD86 (1590410630)\n-04F83C Compressed Size       000002E5 (741)\n-04F840 Uncompressed Size     0000068E (1678)\n+072F01 DATA DESCRIPTOR       08074B50 (134695760)\n+072F05 CRC                   00000000 (0)\n+072F09 Compressed Size       00000002 (2)\n+072F0D Uncompressed Size     00000000 (0)\n \n-04F844 LOCAL HEADER #405     04034B50 (67324752)\n-04F848 Extract Zip Spec      14 (20) '2.0'\n-04F849 Extract OS            00 (0) 'MS-DOS'\n-04F84A General Purpose Flag  0808 (2056)\n+072F11 LOCAL HEADER #405     04034B50 (67324752)\n+072F15 Extract Zip Spec      14 (20) '2.0'\n+072F16 Extract OS            00 (0) 'MS-DOS'\n+072F17 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04F84C Compression Method    0008 (8) 'Deflated'\n-04F84E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04F852 CRC                   00000000 (0)\n-04F856 Compressed Size       00000000 (0)\n-04F85A Uncompressed Size     00000000 (0)\n-04F85E Filename Length       0038 (56)\n-04F860 Extra Length          0000 (0)\n-04F862 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+072F19 Compression Method    0008 (8) 'Deflated'\n+072F1B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+072F1F CRC                   00000000 (0)\n+072F23 Compressed Size       00000000 (0)\n+072F27 Uncompressed Size     00000000 (0)\n+072F2B Filename Length       0036 (54)\n+072F2D Extra Length          0000 (0)\n+072F2F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4F862: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x72F2F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04F89A PAYLOAD\n+072F65 PAYLOAD\n \n-04FB7B DATA DESCRIPTOR       08074B50 (134695760)\n-04FB7F CRC                   0CC7ECCD (214428877)\n-04FB83 Compressed Size       000002E1 (737)\n-04FB87 Uncompressed Size     00000667 (1639)\n+073A0A DATA DESCRIPTOR       08074B50 (134695760)\n+073A0E CRC                   30256F45 (807759685)\n+073A12 Compressed Size       00000AA5 (2725)\n+073A16 Uncompressed Size     000046E5 (18149)\n \n-04FB8B LOCAL HEADER #406     04034B50 (67324752)\n-04FB8F Extract Zip Spec      14 (20) '2.0'\n-04FB90 Extract OS            00 (0) 'MS-DOS'\n-04FB91 General Purpose Flag  0808 (2056)\n+073A1A LOCAL HEADER #406     04034B50 (67324752)\n+073A1E Extract Zip Spec      14 (20) '2.0'\n+073A1F Extract OS            00 (0) 'MS-DOS'\n+073A20 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04FB93 Compression Method    0008 (8) 'Deflated'\n-04FB95 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04FB99 CRC                   00000000 (0)\n-04FB9D Compressed Size       00000000 (0)\n-04FBA1 Uncompressed Size     00000000 (0)\n-04FBA5 Filename Length       0038 (56)\n-04FBA7 Extra Length          0000 (0)\n-04FBA9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+073A22 Compression Method    0008 (8) 'Deflated'\n+073A24 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+073A28 CRC                   00000000 (0)\n+073A2C Compressed Size       00000000 (0)\n+073A30 Uncompressed Size     00000000 (0)\n+073A34 Filename Length       002C (44)\n+073A36 Extra Length          0000 (0)\n+073A38 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4FBA9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x73A38: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04FBE1 PAYLOAD\n+073A64 PAYLOAD\n \n-04FEC0 DATA DESCRIPTOR       08074B50 (134695760)\n-04FEC4 CRC                   091CC51B (152880411)\n-04FEC8 Compressed Size       000002DF (735)\n-04FECC Uncompressed Size     00000665 (1637)\n+0744CC DATA DESCRIPTOR       08074B50 (134695760)\n+0744D0 CRC                   FA032BB6 (4194511798)\n+0744D4 Compressed Size       00000A68 (2664)\n+0744D8 Uncompressed Size     00003385 (13189)\n \n-04FED0 LOCAL HEADER #407     04034B50 (67324752)\n-04FED4 Extract Zip Spec      14 (20) '2.0'\n-04FED5 Extract OS            00 (0) 'MS-DOS'\n-04FED6 General Purpose Flag  0808 (2056)\n+0744DC LOCAL HEADER #407     04034B50 (67324752)\n+0744E0 Extract Zip Spec      14 (20) '2.0'\n+0744E1 Extract OS            00 (0) 'MS-DOS'\n+0744E2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-04FED8 Compression Method    0008 (8) 'Deflated'\n-04FEDA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-04FEDE CRC                   00000000 (0)\n-04FEE2 Compressed Size       00000000 (0)\n-04FEE6 Uncompressed Size     00000000 (0)\n-04FEEA Filename Length       003A (58)\n-04FEEC Extra Length          0000 (0)\n-04FEEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0744E4 Compression Method    0008 (8) 'Deflated'\n+0744E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0744EA CRC                   00000000 (0)\n+0744EE Compressed Size       00000000 (0)\n+0744F2 Uncompressed Size     00000000 (0)\n+0744F6 Filename Length       0026 (38)\n+0744F8 Extra Length          0000 (0)\n+0744FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x4FEEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x744FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-04FF28 PAYLOAD\n+074520 PAYLOAD\n \n-0501DB DATA DESCRIPTOR       08074B50 (134695760)\n-0501DF CRC                   04E4C5B6 (82101686)\n-0501E3 Compressed Size       000002B3 (691)\n-0501E7 Uncompressed Size     00000545 (1349)\n+0750DA DATA DESCRIPTOR       08074B50 (134695760)\n+0750DE CRC                   39C07894 (968915092)\n+0750E2 Compressed Size       00000BBA (3002)\n+0750E6 Uncompressed Size     00006AA4 (27300)\n \n-0501EB LOCAL HEADER #408     04034B50 (67324752)\n-0501EF Extract Zip Spec      14 (20) '2.0'\n-0501F0 Extract OS            00 (0) 'MS-DOS'\n-0501F1 General Purpose Flag  0808 (2056)\n+0750EA LOCAL HEADER #408     04034B50 (67324752)\n+0750EE Extract Zip Spec      14 (20) '2.0'\n+0750EF Extract OS            00 (0) 'MS-DOS'\n+0750F0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0501F3 Compression Method    0008 (8) 'Deflated'\n-0501F5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0501F9 CRC                   00000000 (0)\n-0501FD Compressed Size       00000000 (0)\n-050201 Uncompressed Size     00000000 (0)\n-050205 Filename Length       0039 (57)\n-050207 Extra Length          0000 (0)\n-050209 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0750F2 Compression Method    0008 (8) 'Deflated'\n+0750F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0750F8 CRC                   00000000 (0)\n+0750FC Compressed Size       00000000 (0)\n+075100 Uncompressed Size     00000000 (0)\n+075104 Filename Length       002B (43)\n+075106 Extra Length          0000 (0)\n+075108 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x50209: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x75108: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-050242 PAYLOAD\n+075133 PAYLOAD\n \n-050522 DATA DESCRIPTOR       08074B50 (134695760)\n-050526 CRC                   DDA728F5 (3718719733)\n-05052A Compressed Size       000002E0 (736)\n-05052E Uncompressed Size     0000066F (1647)\n+075608 DATA DESCRIPTOR       08074B50 (134695760)\n+07560C CRC                   2313A478 (588489848)\n+075610 Compressed Size       000004D5 (1237)\n+075614 Uncompressed Size     00001330 (4912)\n \n-050532 LOCAL HEADER #409     04034B50 (67324752)\n-050536 Extract Zip Spec      14 (20) '2.0'\n-050537 Extract OS            00 (0) 'MS-DOS'\n-050538 General Purpose Flag  0808 (2056)\n+075618 LOCAL HEADER #409     04034B50 (67324752)\n+07561C Extract Zip Spec      14 (20) '2.0'\n+07561D Extract OS            00 (0) 'MS-DOS'\n+07561E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05053A Compression Method    0008 (8) 'Deflated'\n-05053C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-050540 CRC                   00000000 (0)\n-050544 Compressed Size       00000000 (0)\n-050548 Uncompressed Size     00000000 (0)\n-05054C Filename Length       0037 (55)\n-05054E Extra Length          0000 (0)\n-050550 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+075620 Compression Method    0008 (8) 'Deflated'\n+075622 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+075626 CRC                   00000000 (0)\n+07562A Compressed Size       00000000 (0)\n+07562E Uncompressed Size     00000000 (0)\n+075632 Filename Length       002F (47)\n+075634 Extra Length          0000 (0)\n+075636 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x50550: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x75636: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-050587 PAYLOAD\n+075665 PAYLOAD\n \n-050837 DATA DESCRIPTOR       08074B50 (134695760)\n-05083B CRC                   443829ED (1144531437)\n-05083F Compressed Size       000002B0 (688)\n-050843 Uncompressed Size     00000534 (1332)\n+075928 DATA DESCRIPTOR       08074B50 (134695760)\n+07592C CRC                   10BC97FD (280795133)\n+075930 Compressed Size       000002C3 (707)\n+075934 Uncompressed Size     000005B5 (1461)\n \n-050847 LOCAL HEADER #410     04034B50 (67324752)\n-05084B Extract Zip Spec      14 (20) '2.0'\n-05084C Extract OS            00 (0) 'MS-DOS'\n-05084D General Purpose Flag  0808 (2056)\n+075938 LOCAL HEADER #410     04034B50 (67324752)\n+07593C Extract Zip Spec      14 (20) '2.0'\n+07593D Extract OS            00 (0) 'MS-DOS'\n+07593E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05084F Compression Method    0008 (8) 'Deflated'\n-050851 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-050855 CRC                   00000000 (0)\n-050859 Compressed Size       00000000 (0)\n-05085D Uncompressed Size     00000000 (0)\n-050861 Filename Length       0033 (51)\n-050863 Extra Length          0000 (0)\n-050865 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+075940 Compression Method    0008 (8) 'Deflated'\n+075942 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+075946 CRC                   00000000 (0)\n+07594A Compressed Size       00000000 (0)\n+07594E Uncompressed Size     00000000 (0)\n+075952 Filename Length       002A (42)\n+075954 Extra Length          0000 (0)\n+075956 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x50865: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x75956: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-050898 PAYLOAD\n+075980 PAYLOAD\n \n-050B66 DATA DESCRIPTOR       08074B50 (134695760)\n-050B6A CRC                   482DE9DF (1210968543)\n-050B6E Compressed Size       000002CE (718)\n-050B72 Uncompressed Size     000005D4 (1492)\n+075BFE DATA DESCRIPTOR       08074B50 (134695760)\n+075C02 CRC                   982A34CC (2552902860)\n+075C06 Compressed Size       0000027E (638)\n+075C0A Uncompressed Size     000004AE (1198)\n \n-050B76 LOCAL HEADER #411     04034B50 (67324752)\n-050B7A Extract Zip Spec      14 (20) '2.0'\n-050B7B Extract OS            00 (0) 'MS-DOS'\n-050B7C General Purpose Flag  0808 (2056)\n+075C0E LOCAL HEADER #411     04034B50 (67324752)\n+075C12 Extract Zip Spec      14 (20) '2.0'\n+075C13 Extract OS            00 (0) 'MS-DOS'\n+075C14 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-050B7E Compression Method    0008 (8) 'Deflated'\n-050B80 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-050B84 CRC                   00000000 (0)\n-050B88 Compressed Size       00000000 (0)\n-050B8C Uncompressed Size     00000000 (0)\n-050B90 Filename Length       0038 (56)\n-050B92 Extra Length          0000 (0)\n-050B94 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+075C16 Compression Method    0008 (8) 'Deflated'\n+075C18 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+075C1C CRC                   00000000 (0)\n+075C20 Compressed Size       00000000 (0)\n+075C24 Uncompressed Size     00000000 (0)\n+075C28 Filename Length       002C (44)\n+075C2A Extra Length          0000 (0)\n+075C2C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x50B94: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x75C2C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-050BCC PAYLOAD\n+075C58 PAYLOAD\n \n-050E7D DATA DESCRIPTOR       08074B50 (134695760)\n-050E81 CRC                   D3DCC156 (3554459990)\n-050E85 Compressed Size       000002B1 (689)\n-050E89 Uncompressed Size     00000539 (1337)\n+0761EA DATA DESCRIPTOR       08074B50 (134695760)\n+0761EE CRC                   7653CF57 (1985204055)\n+0761F2 Compressed Size       00000592 (1426)\n+0761F6 Uncompressed Size     000015FB (5627)\n \n-050E8D LOCAL HEADER #412     04034B50 (67324752)\n-050E91 Extract Zip Spec      14 (20) '2.0'\n-050E92 Extract OS            00 (0) 'MS-DOS'\n-050E93 General Purpose Flag  0808 (2056)\n+0761FA LOCAL HEADER #412     04034B50 (67324752)\n+0761FE Extract Zip Spec      14 (20) '2.0'\n+0761FF Extract OS            00 (0) 'MS-DOS'\n+076200 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-050E95 Compression Method    0008 (8) 'Deflated'\n-050E97 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-050E9B CRC                   00000000 (0)\n-050E9F Compressed Size       00000000 (0)\n-050EA3 Uncompressed Size     00000000 (0)\n-050EA7 Filename Length       0032 (50)\n-050EA9 Extra Length          0000 (0)\n-050EAB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+076202 Compression Method    0008 (8) 'Deflated'\n+076204 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+076208 CRC                   00000000 (0)\n+07620C Compressed Size       00000000 (0)\n+076210 Uncompressed Size     00000000 (0)\n+076214 Filename Length       002C (44)\n+076216 Extra Length          0000 (0)\n+076218 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x50EAB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x76218: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-050EDD PAYLOAD\n+076244 PAYLOAD\n \n-0511B4 DATA DESCRIPTOR       08074B50 (134695760)\n-0511B8 CRC                   C4DD1C85 (3302825093)\n-0511BC Compressed Size       000002D7 (727)\n-0511C0 Uncompressed Size     000005BA (1466)\n+0765C3 DATA DESCRIPTOR       08074B50 (134695760)\n+0765C7 CRC                   4D87180A (1300699146)\n+0765CB Compressed Size       0000037F (895)\n+0765CF Uncompressed Size     000008A6 (2214)\n \n-0511C4 LOCAL HEADER #413     04034B50 (67324752)\n-0511C8 Extract Zip Spec      14 (20) '2.0'\n-0511C9 Extract OS            00 (0) 'MS-DOS'\n-0511CA General Purpose Flag  0808 (2056)\n+0765D3 LOCAL HEADER #413     04034B50 (67324752)\n+0765D7 Extract Zip Spec      14 (20) '2.0'\n+0765D8 Extract OS            00 (0) 'MS-DOS'\n+0765D9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0511CC Compression Method    0008 (8) 'Deflated'\n-0511CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0511D2 CRC                   00000000 (0)\n-0511D6 Compressed Size       00000000 (0)\n-0511DA Uncompressed Size     00000000 (0)\n-0511DE Filename Length       0036 (54)\n-0511E0 Extra Length          0000 (0)\n-0511E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0765DB Compression Method    0008 (8) 'Deflated'\n+0765DD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0765E1 CRC                   00000000 (0)\n+0765E5 Compressed Size       00000000 (0)\n+0765E9 Uncompressed Size     00000000 (0)\n+0765ED Filename Length       002B (43)\n+0765EF Extra Length          0000 (0)\n+0765F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x511E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x765F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-051218 PAYLOAD\n+07661C PAYLOAD\n \n-05165A DATA DESCRIPTOR       08074B50 (134695760)\n-05165E CRC                   21EA98CC (569022668)\n-051662 Compressed Size       00000442 (1090)\n-051666 Uncompressed Size     00000B23 (2851)\n+076984 DATA DESCRIPTOR       08074B50 (134695760)\n+076988 CRC                   8F2D4992 (2402109842)\n+07698C Compressed Size       00000368 (872)\n+076990 Uncompressed Size     000008C7 (2247)\n \n-05166A LOCAL HEADER #414     04034B50 (67324752)\n-05166E Extract Zip Spec      14 (20) '2.0'\n-05166F Extract OS            00 (0) 'MS-DOS'\n-051670 General Purpose Flag  0808 (2056)\n+076994 LOCAL HEADER #414     04034B50 (67324752)\n+076998 Extract Zip Spec      14 (20) '2.0'\n+076999 Extract OS            00 (0) 'MS-DOS'\n+07699A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-051672 Compression Method    0008 (8) 'Deflated'\n-051674 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-051678 CRC                   00000000 (0)\n-05167C Compressed Size       00000000 (0)\n-051680 Uncompressed Size     00000000 (0)\n-051684 Filename Length       0032 (50)\n-051686 Extra Length          0000 (0)\n-051688 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07699C Compression Method    0008 (8) 'Deflated'\n+07699E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0769A2 CRC                   00000000 (0)\n+0769A6 Compressed Size       00000000 (0)\n+0769AA Uncompressed Size     00000000 (0)\n+0769AE Filename Length       002D (45)\n+0769B0 Extra Length          0000 (0)\n+0769B2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x51688: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x769B2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0516BA PAYLOAD\n+0769DF PAYLOAD\n \n-051989 DATA DESCRIPTOR       08074B50 (134695760)\n-05198D CRC                   96DC7168 (2531029352)\n-051991 Compressed Size       000002CF (719)\n-051995 Uncompressed Size     000005A5 (1445)\n+076D38 DATA DESCRIPTOR       08074B50 (134695760)\n+076D3C CRC                   33828390 (864191376)\n+076D40 Compressed Size       00000359 (857)\n+076D44 Uncompressed Size     00000AEC (2796)\n \n-051999 LOCAL HEADER #415     04034B50 (67324752)\n-05199D Extract Zip Spec      14 (20) '2.0'\n-05199E Extract OS            00 (0) 'MS-DOS'\n-05199F General Purpose Flag  0808 (2056)\n+076D48 LOCAL HEADER #415     04034B50 (67324752)\n+076D4C Extract Zip Spec      14 (20) '2.0'\n+076D4D Extract OS            00 (0) 'MS-DOS'\n+076D4E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0519A1 Compression Method    0008 (8) 'Deflated'\n-0519A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0519A7 CRC                   00000000 (0)\n-0519AB Compressed Size       00000000 (0)\n-0519AF Uncompressed Size     00000000 (0)\n-0519B3 Filename Length       0039 (57)\n-0519B5 Extra Length          0000 (0)\n-0519B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+076D50 Compression Method    0008 (8) 'Deflated'\n+076D52 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+076D56 CRC                   00000000 (0)\n+076D5A Compressed Size       00000000 (0)\n+076D5E Uncompressed Size     00000000 (0)\n+076D62 Filename Length       002C (44)\n+076D64 Extra Length          0000 (0)\n+076D66 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x519B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x76D66: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0519F0 PAYLOAD\n+076D92 PAYLOAD\n \n-051CCF DATA DESCRIPTOR       08074B50 (134695760)\n-051CD3 CRC                   F57D6E98 (4118638232)\n-051CD7 Compressed Size       000002DF (735)\n-051CDB Uncompressed Size     0000066F (1647)\n+07749A DATA DESCRIPTOR       08074B50 (134695760)\n+07749E CRC                   ECCF2EAF (3973000879)\n+0774A2 Compressed Size       00000708 (1800)\n+0774A6 Uncompressed Size     00001FDF (8159)\n \n-051CDF LOCAL HEADER #416     04034B50 (67324752)\n-051CE3 Extract Zip Spec      14 (20) '2.0'\n-051CE4 Extract OS            00 (0) 'MS-DOS'\n-051CE5 General Purpose Flag  0808 (2056)\n+0774AA LOCAL HEADER #416     04034B50 (67324752)\n+0774AE Extract Zip Spec      14 (20) '2.0'\n+0774AF Extract OS            00 (0) 'MS-DOS'\n+0774B0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-051CE7 Compression Method    0008 (8) 'Deflated'\n-051CE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-051CED CRC                   00000000 (0)\n-051CF1 Compressed Size       00000000 (0)\n-051CF5 Uncompressed Size     00000000 (0)\n-051CF9 Filename Length       0024 (36)\n-051CFB Extra Length          0000 (0)\n-051CFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0774B2 Compression Method    0008 (8) 'Deflated'\n+0774B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0774B8 CRC                   00000000 (0)\n+0774BC Compressed Size       00000000 (0)\n+0774C0 Uncompressed Size     00000000 (0)\n+0774C4 Filename Length       0030 (48)\n+0774C6 Extra Length          0000 (0)\n+0774C8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x51CFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x774C8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-051D21 PAYLOAD               XX\n+0774F8 PAYLOAD\n \n-051D23 DATA DESCRIPTOR       08074B50 (134695760)\n-051D27 CRC                   00000000 (0)\n-051D2B Compressed Size       00000002 (2)\n-051D2F Uncompressed Size     00000000 (0)\n+07776A DATA DESCRIPTOR       08074B50 (134695760)\n+07776E CRC                   4EF6CDD0 (1324797392)\n+077772 Compressed Size       00000272 (626)\n+077776 Uncompressed Size     00000489 (1161)\n \n-051D33 LOCAL HEADER #417     04034B50 (67324752)\n-051D37 Extract Zip Spec      14 (20) '2.0'\n-051D38 Extract OS            00 (0) 'MS-DOS'\n-051D39 General Purpose Flag  0808 (2056)\n+07777A LOCAL HEADER #417     04034B50 (67324752)\n+07777E Extract Zip Spec      14 (20) '2.0'\n+07777F Extract OS            00 (0) 'MS-DOS'\n+077780 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-051D3B Compression Method    0008 (8) 'Deflated'\n-051D3D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-051D41 CRC                   00000000 (0)\n-051D45 Compressed Size       00000000 (0)\n-051D49 Uncompressed Size     00000000 (0)\n-051D4D Filename Length       0037 (55)\n-051D4F Extra Length          0000 (0)\n-051D51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+077782 Compression Method    0008 (8) 'Deflated'\n+077784 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+077788 CRC                   00000000 (0)\n+07778C Compressed Size       00000000 (0)\n+077790 Uncompressed Size     00000000 (0)\n+077794 Filename Length       0027 (39)\n+077796 Extra Length          0000 (0)\n+077798 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x51D51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x77798: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-051D88 PAYLOAD\n+0777BF PAYLOAD\n \n-0520AD DATA DESCRIPTOR       08074B50 (134695760)\n-0520B1 CRC                   CD8D1CAF (3448577199)\n-0520B5 Compressed Size       00000325 (805)\n-0520B9 Uncompressed Size     000007EC (2028)\n+078F01 DATA DESCRIPTOR       08074B50 (134695760)\n+078F05 CRC                   8192FABF (2173893311)\n+078F09 Compressed Size       00001742 (5954)\n+078F0D Uncompressed Size     00007607 (30215)\n \n-0520BD LOCAL HEADER #418     04034B50 (67324752)\n-0520C1 Extract Zip Spec      14 (20) '2.0'\n-0520C2 Extract OS            00 (0) 'MS-DOS'\n-0520C3 General Purpose Flag  0808 (2056)\n+078F11 LOCAL HEADER #418     04034B50 (67324752)\n+078F15 Extract Zip Spec      14 (20) '2.0'\n+078F16 Extract OS            00 (0) 'MS-DOS'\n+078F17 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0520C5 Compression Method    0008 (8) 'Deflated'\n-0520C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0520CB CRC                   00000000 (0)\n-0520CF Compressed Size       00000000 (0)\n-0520D3 Uncompressed Size     00000000 (0)\n-0520D7 Filename Length       003B (59)\n-0520D9 Extra Length          0000 (0)\n-0520DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+078F19 Compression Method    0008 (8) 'Deflated'\n+078F1B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+078F1F CRC                   00000000 (0)\n+078F23 Compressed Size       00000000 (0)\n+078F27 Uncompressed Size     00000000 (0)\n+078F2B Filename Length       001D (29)\n+078F2D Extra Length          0000 (0)\n+078F2F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x520DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x78F2F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-052116 PAYLOAD\n+078F4C PAYLOAD               XX\n \n-05247D DATA DESCRIPTOR       08074B50 (134695760)\n-052481 CRC                   7A4C73B7 (2051830711)\n-052485 Compressed Size       00000367 (871)\n-052489 Uncompressed Size     00000A32 (2610)\n+078F4E DATA DESCRIPTOR       08074B50 (134695760)\n+078F52 CRC                   00000000 (0)\n+078F56 Compressed Size       00000002 (2)\n+078F5A Uncompressed Size     00000000 (0)\n \n-05248D LOCAL HEADER #419     04034B50 (67324752)\n-052491 Extract Zip Spec      14 (20) '2.0'\n-052492 Extract OS            00 (0) 'MS-DOS'\n-052493 General Purpose Flag  0808 (2056)\n+078F5E LOCAL HEADER #419     04034B50 (67324752)\n+078F62 Extract Zip Spec      14 (20) '2.0'\n+078F63 Extract OS            00 (0) 'MS-DOS'\n+078F64 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-052495 Compression Method    0008 (8) 'Deflated'\n-052497 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05249B CRC                   00000000 (0)\n-05249F Compressed Size       00000000 (0)\n-0524A3 Uncompressed Size     00000000 (0)\n-0524A7 Filename Length       002E (46)\n-0524A9 Extra Length          0000 (0)\n-0524AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+078F66 Compression Method    0008 (8) 'Deflated'\n+078F68 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+078F6C CRC                   00000000 (0)\n+078F70 Compressed Size       00000000 (0)\n+078F74 Uncompressed Size     00000000 (0)\n+078F78 Filename Length       002D (45)\n+078F7A Extra Length          0000 (0)\n+078F7C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x524AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x78F7C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0524D9 PAYLOAD               XX\n+078FA9 PAYLOAD\n \n-0524DB DATA DESCRIPTOR       08074B50 (134695760)\n-0524DF CRC                   00000000 (0)\n-0524E3 Compressed Size       00000002 (2)\n-0524E7 Uncompressed Size     00000000 (0)\n+0793A5 DATA DESCRIPTOR       08074B50 (134695760)\n+0793A9 CRC                   36088937 (906529079)\n+0793AD Compressed Size       000003FC (1020)\n+0793B1 Uncompressed Size     0000094E (2382)\n \n-0524EB LOCAL HEADER #420     04034B50 (67324752)\n-0524EF Extract Zip Spec      14 (20) '2.0'\n-0524F0 Extract OS            00 (0) 'MS-DOS'\n-0524F1 General Purpose Flag  0808 (2056)\n+0793B5 LOCAL HEADER #420     04034B50 (67324752)\n+0793B9 Extract Zip Spec      14 (20) '2.0'\n+0793BA Extract OS            00 (0) 'MS-DOS'\n+0793BB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0524F3 Compression Method    0008 (8) 'Deflated'\n-0524F5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0524F9 CRC                   00000000 (0)\n-0524FD Compressed Size       00000000 (0)\n-052501 Uncompressed Size     00000000 (0)\n-052505 Filename Length       0042 (66)\n-052507 Extra Length          0000 (0)\n-052509 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0793BD Compression Method    0008 (8) 'Deflated'\n+0793BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0793C3 CRC                   00000000 (0)\n+0793C7 Compressed Size       00000000 (0)\n+0793CB Uncompressed Size     00000000 (0)\n+0793CF Filename Length       0036 (54)\n+0793D1 Extra Length          0000 (0)\n+0793D3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x52509: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x793D3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05254B PAYLOAD\n+079409 PAYLOAD\n \n-053195 DATA DESCRIPTOR       08074B50 (134695760)\n-053199 CRC                   BCF898DF (3170408671)\n-05319D Compressed Size       00000C4A (3146)\n-0531A1 Uncompressed Size     00003374 (13172)\n+079687 DATA DESCRIPTOR       08074B50 (134695760)\n+07968B CRC                   C67E8FBE (3330183102)\n+07968F Compressed Size       0000027E (638)\n+079693 Uncompressed Size     000004AB (1195)\n \n-0531A5 LOCAL HEADER #421     04034B50 (67324752)\n-0531A9 Extract Zip Spec      14 (20) '2.0'\n-0531AA Extract OS            00 (0) 'MS-DOS'\n-0531AB General Purpose Flag  0808 (2056)\n+079697 LOCAL HEADER #421     04034B50 (67324752)\n+07969B Extract Zip Spec      14 (20) '2.0'\n+07969C Extract OS            00 (0) 'MS-DOS'\n+07969D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0531AD Compression Method    0008 (8) 'Deflated'\n-0531AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0531B3 CRC                   00000000 (0)\n-0531B7 Compressed Size       00000000 (0)\n-0531BB Uncompressed Size     00000000 (0)\n-0531BF Filename Length       0049 (73)\n-0531C1 Extra Length          0000 (0)\n-0531C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07969F Compression Method    0008 (8) 'Deflated'\n+0796A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0796A5 CRC                   00000000 (0)\n+0796A9 Compressed Size       00000000 (0)\n+0796AD Uncompressed Size     00000000 (0)\n+0796B1 Filename Length       0037 (55)\n+0796B3 Extra Length          0000 (0)\n+0796B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x531C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x796B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05320C PAYLOAD\n+0796EC PAYLOAD\n \n-0534A7 DATA DESCRIPTOR       08074B50 (134695760)\n-0534AB CRC                   E35903B0 (3814261680)\n-0534AF Compressed Size       0000029B (667)\n-0534B3 Uncompressed Size     00000540 (1344)\n+079A88 DATA DESCRIPTOR       08074B50 (134695760)\n+079A8C CRC                   8F418EA5 (2403438245)\n+079A90 Compressed Size       0000039C (924)\n+079A94 Uncompressed Size     00000967 (2407)\n \n-0534B7 LOCAL HEADER #422     04034B50 (67324752)\n-0534BB Extract Zip Spec      14 (20) '2.0'\n-0534BC Extract OS            00 (0) 'MS-DOS'\n-0534BD General Purpose Flag  0808 (2056)\n+079A98 LOCAL HEADER #422     04034B50 (67324752)\n+079A9C Extract Zip Spec      14 (20) '2.0'\n+079A9D Extract OS            00 (0) 'MS-DOS'\n+079A9E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0534BF Compression Method    0008 (8) 'Deflated'\n-0534C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0534C5 CRC                   00000000 (0)\n-0534C9 Compressed Size       00000000 (0)\n-0534CD Uncompressed Size     00000000 (0)\n-0534D1 Filename Length       0035 (53)\n-0534D3 Extra Length          0000 (0)\n-0534D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+079AA0 Compression Method    0008 (8) 'Deflated'\n+079AA2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+079AA6 CRC                   00000000 (0)\n+079AAA Compressed Size       00000000 (0)\n+079AAE Uncompressed Size     00000000 (0)\n+079AB2 Filename Length       001F (31)\n+079AB4 Extra Length          0000 (0)\n+079AB6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x534D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x79AB6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05350A PAYLOAD               XX\n+079AD5 PAYLOAD               XX\n \n-05350C DATA DESCRIPTOR       08074B50 (134695760)\n-053510 CRC                   00000000 (0)\n-053514 Compressed Size       00000002 (2)\n-053518 Uncompressed Size     00000000 (0)\n+079AD7 DATA DESCRIPTOR       08074B50 (134695760)\n+079ADB CRC                   00000000 (0)\n+079ADF Compressed Size       00000002 (2)\n+079AE3 Uncompressed Size     00000000 (0)\n \n-05351C LOCAL HEADER #423     04034B50 (67324752)\n-053520 Extract Zip Spec      14 (20) '2.0'\n-053521 Extract OS            00 (0) 'MS-DOS'\n-053522 General Purpose Flag  0808 (2056)\n+079AE7 LOCAL HEADER #423     04034B50 (67324752)\n+079AEB Extract Zip Spec      14 (20) '2.0'\n+079AEC Extract OS            00 (0) 'MS-DOS'\n+079AED General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-053524 Compression Method    0008 (8) 'Deflated'\n-053526 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05352A CRC                   00000000 (0)\n-05352E Compressed Size       00000000 (0)\n-053532 Uncompressed Size     00000000 (0)\n-053536 Filename Length       0043 (67)\n-053538 Extra Length          0000 (0)\n-05353A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+079AEF Compression Method    0008 (8) 'Deflated'\n+079AF1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+079AF5 CRC                   00000000 (0)\n+079AF9 Compressed Size       00000000 (0)\n+079AFD Uncompressed Size     00000000 (0)\n+079B01 Filename Length       0029 (41)\n+079B03 Extra Length          0000 (0)\n+079B05 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5353A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x79B05: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05357D PAYLOAD\n+079B2E PAYLOAD\n \n-053862 DATA DESCRIPTOR       08074B50 (134695760)\n-053866 CRC                   76BEB07B (1992208507)\n-05386A Compressed Size       000002E5 (741)\n-05386E Uncompressed Size     0000058B (1419)\n+079D77 DATA DESCRIPTOR       08074B50 (134695760)\n+079D7B CRC                   9D821087 (2642546823)\n+079D7F Compressed Size       00000249 (585)\n+079D83 Uncompressed Size     000004BE (1214)\n \n-053872 LOCAL HEADER #424     04034B50 (67324752)\n-053876 Extract Zip Spec      14 (20) '2.0'\n-053877 Extract OS            00 (0) 'MS-DOS'\n-053878 General Purpose Flag  0808 (2056)\n+079D87 LOCAL HEADER #424     04034B50 (67324752)\n+079D8B Extract Zip Spec      14 (20) '2.0'\n+079D8C Extract OS            00 (0) 'MS-DOS'\n+079D8D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05387A Compression Method    0008 (8) 'Deflated'\n-05387C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-053880 CRC                   00000000 (0)\n-053884 Compressed Size       00000000 (0)\n-053888 Uncompressed Size     00000000 (0)\n-05388C Filename Length       004A (74)\n-05388E Extra Length          0000 (0)\n-053890 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+079D8F Compression Method    0008 (8) 'Deflated'\n+079D91 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+079D95 CRC                   00000000 (0)\n+079D99 Compressed Size       00000000 (0)\n+079D9D Uncompressed Size     00000000 (0)\n+079DA1 Filename Length       002A (42)\n+079DA3 Extra Length          0000 (0)\n+079DA5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x53890: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x79DA5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0538DA PAYLOAD\n+079DCF PAYLOAD\n \n-053BC9 DATA DESCRIPTOR       08074B50 (134695760)\n-053BCD CRC                   AFF80853 (2952267859)\n-053BD1 Compressed Size       000002EF (751)\n-053BD5 Uncompressed Size     00000657 (1623)\n+07A145 DATA DESCRIPTOR       08074B50 (134695760)\n+07A149 CRC                   0D8DFECE (227409614)\n+07A14D Compressed Size       00000376 (886)\n+07A151 Uncompressed Size     00000F82 (3970)\n \n-053BD9 LOCAL HEADER #425     04034B50 (67324752)\n-053BDD Extract Zip Spec      14 (20) '2.0'\n-053BDE Extract OS            00 (0) 'MS-DOS'\n-053BDF General Purpose Flag  0808 (2056)\n+07A155 LOCAL HEADER #425     04034B50 (67324752)\n+07A159 Extract Zip Spec      14 (20) '2.0'\n+07A15A Extract OS            00 (0) 'MS-DOS'\n+07A15B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-053BE1 Compression Method    0008 (8) 'Deflated'\n-053BE3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-053BE7 CRC                   00000000 (0)\n-053BEB Compressed Size       00000000 (0)\n-053BEF Uncompressed Size     00000000 (0)\n-053BF3 Filename Length       004A (74)\n-053BF5 Extra Length          0000 (0)\n-053BF7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07A15D Compression Method    0008 (8) 'Deflated'\n+07A15F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07A163 CRC                   00000000 (0)\n+07A167 Compressed Size       00000000 (0)\n+07A16B Uncompressed Size     00000000 (0)\n+07A16F Filename Length       0031 (49)\n+07A171 Extra Length          0000 (0)\n+07A173 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x53BF7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7A173: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-053C41 PAYLOAD\n+07A1A4 PAYLOAD\n \n-0542B8 DATA DESCRIPTOR       08074B50 (134695760)\n-0542BC CRC                   64878DEF (1686605295)\n-0542C0 Compressed Size       00000677 (1655)\n-0542C4 Uncompressed Size     0000141B (5147)\n+07A488 DATA DESCRIPTOR       08074B50 (134695760)\n+07A48C CRC                   A6EF1A57 (2800687703)\n+07A490 Compressed Size       000002E4 (740)\n+07A494 Uncompressed Size     00000745 (1861)\n \n-0542C8 LOCAL HEADER #426     04034B50 (67324752)\n-0542CC Extract Zip Spec      14 (20) '2.0'\n-0542CD Extract OS            00 (0) 'MS-DOS'\n-0542CE General Purpose Flag  0808 (2056)\n+07A498 LOCAL HEADER #426     04034B50 (67324752)\n+07A49C Extract Zip Spec      14 (20) '2.0'\n+07A49D Extract OS            00 (0) 'MS-DOS'\n+07A49E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0542D0 Compression Method    0008 (8) 'Deflated'\n-0542D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0542D6 CRC                   00000000 (0)\n-0542DA Compressed Size       00000000 (0)\n-0542DE Uncompressed Size     00000000 (0)\n-0542E2 Filename Length       0047 (71)\n-0542E4 Extra Length          0000 (0)\n-0542E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07A4A0 Compression Method    0008 (8) 'Deflated'\n+07A4A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07A4A6 CRC                   00000000 (0)\n+07A4AA Compressed Size       00000000 (0)\n+07A4AE Uncompressed Size     00000000 (0)\n+07A4B2 Filename Length       0031 (49)\n+07A4B4 Extra Length          0000 (0)\n+07A4B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x542E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7A4B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05432D PAYLOAD\n+07A4E7 PAYLOAD\n \n-054617 DATA DESCRIPTOR       08074B50 (134695760)\n-05461B CRC                   B919F4D5 (3105486037)\n-05461F Compressed Size       000002EA (746)\n-054623 Uncompressed Size     000005A5 (1445)\n+07AAA5 DATA DESCRIPTOR       08074B50 (134695760)\n+07AAA9 CRC                   626EDC3E (1651432510)\n+07AAAD Compressed Size       000005BE (1470)\n+07AAB1 Uncompressed Size     00001485 (5253)\n \n-054627 LOCAL HEADER #427     04034B50 (67324752)\n-05462B Extract Zip Spec      14 (20) '2.0'\n-05462C Extract OS            00 (0) 'MS-DOS'\n-05462D General Purpose Flag  0808 (2056)\n+07AAB5 LOCAL HEADER #427     04034B50 (67324752)\n+07AAB9 Extract Zip Spec      14 (20) '2.0'\n+07AABA Extract OS            00 (0) 'MS-DOS'\n+07AABB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05462F Compression Method    0008 (8) 'Deflated'\n-054631 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-054635 CRC                   00000000 (0)\n-054639 Compressed Size       00000000 (0)\n-05463D Uncompressed Size     00000000 (0)\n-054641 Filename Length       004E (78)\n-054643 Extra Length          0000 (0)\n-054645 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07AABD Compression Method    0008 (8) 'Deflated'\n+07AABF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07AAC3 CRC                   00000000 (0)\n+07AAC7 Compressed Size       00000000 (0)\n+07AACB Uncompressed Size     00000000 (0)\n+07AACF Filename Length       0023 (35)\n+07AAD1 Extra Length          0000 (0)\n+07AAD3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x54645: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7AAD3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-054693 PAYLOAD\n+07AAF6 PAYLOAD               XX\n \n-05493C DATA DESCRIPTOR       08074B50 (134695760)\n-054940 CRC                   06325F9E (103964574)\n-054944 Compressed Size       000002A9 (681)\n-054948 Uncompressed Size     00000541 (1345)\n+07AAF8 DATA DESCRIPTOR       08074B50 (134695760)\n+07AAFC CRC                   00000000 (0)\n+07AB00 Compressed Size       00000002 (2)\n+07AB04 Uncompressed Size     00000000 (0)\n \n-05494C LOCAL HEADER #428     04034B50 (67324752)\n-054950 Extract Zip Spec      14 (20) '2.0'\n-054951 Extract OS            00 (0) 'MS-DOS'\n-054952 General Purpose Flag  0808 (2056)\n+07AB08 LOCAL HEADER #428     04034B50 (67324752)\n+07AB0C Extract Zip Spec      14 (20) '2.0'\n+07AB0D Extract OS            00 (0) 'MS-DOS'\n+07AB0E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-054954 Compression Method    0008 (8) 'Deflated'\n-054956 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05495A CRC                   00000000 (0)\n-05495E Compressed Size       00000000 (0)\n-054962 Uncompressed Size     00000000 (0)\n-054966 Filename Length       003B (59)\n-054968 Extra Length          0000 (0)\n-05496A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07AB10 Compression Method    0008 (8) 'Deflated'\n+07AB12 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07AB16 CRC                   00000000 (0)\n+07AB1A Compressed Size       00000000 (0)\n+07AB1E Uncompressed Size     00000000 (0)\n+07AB22 Filename Length       0031 (49)\n+07AB24 Extra Length          0000 (0)\n+07AB26 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5496A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7AB26: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0549A5 PAYLOAD               XX\n+07AB57 PAYLOAD\n \n-0549A7 DATA DESCRIPTOR       08074B50 (134695760)\n-0549AB CRC                   00000000 (0)\n-0549AF Compressed Size       00000002 (2)\n-0549B3 Uncompressed Size     00000000 (0)\n+07AEFD DATA DESCRIPTOR       08074B50 (134695760)\n+07AF01 CRC                   65EBC1EB (1709949419)\n+07AF05 Compressed Size       000003A6 (934)\n+07AF09 Uncompressed Size     00000D0E (3342)\n \n-0549B7 LOCAL HEADER #429     04034B50 (67324752)\n-0549BB Extract Zip Spec      14 (20) '2.0'\n-0549BC Extract OS            00 (0) 'MS-DOS'\n-0549BD General Purpose Flag  0808 (2056)\n+07AF0D LOCAL HEADER #429     04034B50 (67324752)\n+07AF11 Extract Zip Spec      14 (20) '2.0'\n+07AF12 Extract OS            00 (0) 'MS-DOS'\n+07AF13 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0549BF Compression Method    0008 (8) 'Deflated'\n-0549C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0549C5 CRC                   00000000 (0)\n-0549C9 Compressed Size       00000000 (0)\n-0549CD Uncompressed Size     00000000 (0)\n-0549D1 Filename Length       0053 (83)\n-0549D3 Extra Length          0000 (0)\n-0549D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07AF15 Compression Method    0008 (8) 'Deflated'\n+07AF17 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07AF1B CRC                   00000000 (0)\n+07AF1F Compressed Size       00000000 (0)\n+07AF23 Uncompressed Size     00000000 (0)\n+07AF27 Filename Length       0038 (56)\n+07AF29 Extra Length          0000 (0)\n+07AF2B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x549D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7AF2B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-054A28 PAYLOAD\n+07AF63 PAYLOAD\n \n-054CAF DATA DESCRIPTOR       08074B50 (134695760)\n-054CB3 CRC                   1C57CB8B (475515787)\n-054CB7 Compressed Size       00000287 (647)\n-054CBB Uncompressed Size     00000532 (1330)\n+07B22C DATA DESCRIPTOR       08074B50 (134695760)\n+07B230 CRC                   006A5B46 (6970182)\n+07B234 Compressed Size       000002C9 (713)\n+07B238 Uncompressed Size     000006F8 (1784)\n \n-054CBF LOCAL HEADER #430     04034B50 (67324752)\n-054CC3 Extract Zip Spec      14 (20) '2.0'\n-054CC4 Extract OS            00 (0) 'MS-DOS'\n-054CC5 General Purpose Flag  0808 (2056)\n+07B23C LOCAL HEADER #430     04034B50 (67324752)\n+07B240 Extract Zip Spec      14 (20) '2.0'\n+07B241 Extract OS            00 (0) 'MS-DOS'\n+07B242 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-054CC7 Compression Method    0008 (8) 'Deflated'\n-054CC9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-054CCD CRC                   00000000 (0)\n-054CD1 Compressed Size       00000000 (0)\n-054CD5 Uncompressed Size     00000000 (0)\n-054CD9 Filename Length       0053 (83)\n-054CDB Extra Length          0000 (0)\n-054CDD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07B244 Compression Method    0008 (8) 'Deflated'\n+07B246 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07B24A CRC                   00000000 (0)\n+07B24E Compressed Size       00000000 (0)\n+07B252 Uncompressed Size     00000000 (0)\n+07B256 Filename Length       0023 (35)\n+07B258 Extra Length          0000 (0)\n+07B25A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x54CDD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7B25A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-054D30 PAYLOAD\n+07B27D PAYLOAD               XX\n \n-05508C DATA DESCRIPTOR       08074B50 (134695760)\n-055090 CRC                   9B53D29B (2605961883)\n-055094 Compressed Size       0000035C (860)\n-055098 Uncompressed Size     000006D4 (1748)\n+07B27F DATA DESCRIPTOR       08074B50 (134695760)\n+07B283 CRC                   00000000 (0)\n+07B287 Compressed Size       00000002 (2)\n+07B28B Uncompressed Size     00000000 (0)\n \n-05509C LOCAL HEADER #431     04034B50 (67324752)\n-0550A0 Extract Zip Spec      14 (20) '2.0'\n-0550A1 Extract OS            00 (0) 'MS-DOS'\n-0550A2 General Purpose Flag  0808 (2056)\n+07B28F LOCAL HEADER #431     04034B50 (67324752)\n+07B293 Extract Zip Spec      14 (20) '2.0'\n+07B294 Extract OS            00 (0) 'MS-DOS'\n+07B295 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0550A4 Compression Method    0008 (8) 'Deflated'\n-0550A6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0550AA CRC                   00000000 (0)\n-0550AE Compressed Size       00000000 (0)\n-0550B2 Uncompressed Size     00000000 (0)\n-0550B6 Filename Length       0029 (41)\n-0550B8 Extra Length          0000 (0)\n-0550BA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07B297 Compression Method    0008 (8) 'Deflated'\n+07B299 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07B29D CRC                   00000000 (0)\n+07B2A1 Compressed Size       00000000 (0)\n+07B2A5 Uncompressed Size     00000000 (0)\n+07B2A9 Filename Length       0031 (49)\n+07B2AB Extra Length          0000 (0)\n+07B2AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x550BA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7B2AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0550E3 PAYLOAD               XX\n+07B2DE PAYLOAD\n \n-0550E5 DATA DESCRIPTOR       08074B50 (134695760)\n-0550E9 CRC                   00000000 (0)\n-0550ED Compressed Size       00000002 (2)\n-0550F1 Uncompressed Size     00000000 (0)\n+07B62A DATA DESCRIPTOR       08074B50 (134695760)\n+07B62E CRC                   8FD172CF (2412868303)\n+07B632 Compressed Size       0000034C (844)\n+07B636 Uncompressed Size     00000D1B (3355)\n \n-0550F5 LOCAL HEADER #432     04034B50 (67324752)\n-0550F9 Extract Zip Spec      14 (20) '2.0'\n-0550FA Extract OS            00 (0) 'MS-DOS'\n-0550FB General Purpose Flag  0808 (2056)\n+07B63A LOCAL HEADER #432     04034B50 (67324752)\n+07B63E Extract Zip Spec      14 (20) '2.0'\n+07B63F Extract OS            00 (0) 'MS-DOS'\n+07B640 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0550FD Compression Method    0008 (8) 'Deflated'\n-0550FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-055103 CRC                   00000000 (0)\n-055107 Compressed Size       00000000 (0)\n-05510B Uncompressed Size     00000000 (0)\n-05510F Filename Length       003F (63)\n-055111 Extra Length          0000 (0)\n-055113 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07B642 Compression Method    0008 (8) 'Deflated'\n+07B644 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07B648 CRC                   00000000 (0)\n+07B64C Compressed Size       00000000 (0)\n+07B650 Uncompressed Size     00000000 (0)\n+07B654 Filename Length       0038 (56)\n+07B656 Extra Length          0000 (0)\n+07B658 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x55113: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7B658: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-055152 PAYLOAD\n+07B690 PAYLOAD\n \n-055619 DATA DESCRIPTOR       08074B50 (134695760)\n-05561D CRC                   F601821B (4127293979)\n-055621 Compressed Size       000004C7 (1223)\n-055625 Uncompressed Size     00000C34 (3124)\n+07BBEC DATA DESCRIPTOR       08074B50 (134695760)\n+07BBF0 CRC                   7ADBDBE0 (2061229024)\n+07BBF4 Compressed Size       0000055C (1372)\n+07BBF8 Uncompressed Size     000012FC (4860)\n \n-055629 LOCAL HEADER #433     04034B50 (67324752)\n-05562D Extract Zip Spec      14 (20) '2.0'\n-05562E Extract OS            00 (0) 'MS-DOS'\n-05562F General Purpose Flag  0808 (2056)\n+07BBFC LOCAL HEADER #433     04034B50 (67324752)\n+07BC00 Extract Zip Spec      14 (20) '2.0'\n+07BC01 Extract OS            00 (0) 'MS-DOS'\n+07BC02 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-055631 Compression Method    0008 (8) 'Deflated'\n-055633 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-055637 CRC                   00000000 (0)\n-05563B Compressed Size       00000000 (0)\n-05563F Uncompressed Size     00000000 (0)\n-055643 Filename Length       0029 (41)\n-055645 Extra Length          0000 (0)\n-055647 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07BC04 Compression Method    0008 (8) 'Deflated'\n+07BC06 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07BC0A CRC                   00000000 (0)\n+07BC0E Compressed Size       00000000 (0)\n+07BC12 Uncompressed Size     00000000 (0)\n+07BC16 Filename Length       0025 (37)\n+07BC18 Extra Length          0000 (0)\n+07BC1A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x55647: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7BC1A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-055670 PAYLOAD               XX\n+07BC3F PAYLOAD               XX\n \n-055672 DATA DESCRIPTOR       08074B50 (134695760)\n-055676 CRC                   00000000 (0)\n-05567A Compressed Size       00000002 (2)\n-05567E Uncompressed Size     00000000 (0)\n+07BC41 DATA DESCRIPTOR       08074B50 (134695760)\n+07BC45 CRC                   00000000 (0)\n+07BC49 Compressed Size       00000002 (2)\n+07BC4D Uncompressed Size     00000000 (0)\n \n-055682 LOCAL HEADER #434     04034B50 (67324752)\n-055686 Extract Zip Spec      14 (20) '2.0'\n-055687 Extract OS            00 (0) 'MS-DOS'\n-055688 General Purpose Flag  0808 (2056)\n+07BC51 LOCAL HEADER #434     04034B50 (67324752)\n+07BC55 Extract Zip Spec      14 (20) '2.0'\n+07BC56 Extract OS            00 (0) 'MS-DOS'\n+07BC57 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05568A Compression Method    0008 (8) 'Deflated'\n-05568C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-055690 CRC                   00000000 (0)\n-055694 Compressed Size       00000000 (0)\n-055698 Uncompressed Size     00000000 (0)\n-05569C Filename Length       0042 (66)\n-05569E Extra Length          0000 (0)\n-0556A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07BC59 Compression Method    0008 (8) 'Deflated'\n+07BC5B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07BC5F CRC                   00000000 (0)\n+07BC63 Compressed Size       00000000 (0)\n+07BC67 Uncompressed Size     00000000 (0)\n+07BC6B Filename Length       0035 (53)\n+07BC6D Extra Length          0000 (0)\n+07BC6F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x556A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7BC6F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0556E2 PAYLOAD\n+07BCA4 PAYLOAD\n \n-055BDF DATA DESCRIPTOR       08074B50 (134695760)\n-055BE3 CRC                   9E4A1FA8 (2655657896)\n-055BE7 Compressed Size       000004FD (1277)\n-055BEB Uncompressed Size     00000F53 (3923)\n+07C037 DATA DESCRIPTOR       08074B50 (134695760)\n+07C03B CRC                   0237005F (37159007)\n+07C03F Compressed Size       00000393 (915)\n+07C043 Uncompressed Size     00000E61 (3681)\n \n-055BEF LOCAL HEADER #435     04034B50 (67324752)\n-055BF3 Extract Zip Spec      14 (20) '2.0'\n-055BF4 Extract OS            00 (0) 'MS-DOS'\n-055BF5 General Purpose Flag  0808 (2056)\n+07C047 LOCAL HEADER #435     04034B50 (67324752)\n+07C04B Extract Zip Spec      14 (20) '2.0'\n+07C04C Extract OS            00 (0) 'MS-DOS'\n+07C04D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-055BF7 Compression Method    0008 (8) 'Deflated'\n-055BF9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-055BFD CRC                   00000000 (0)\n-055C01 Compressed Size       00000000 (0)\n-055C05 Uncompressed Size     00000000 (0)\n-055C09 Filename Length       003F (63)\n-055C0B Extra Length          0000 (0)\n-055C0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07C04F Compression Method    0008 (8) 'Deflated'\n+07C051 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07C055 CRC                   00000000 (0)\n+07C059 Compressed Size       00000000 (0)\n+07C05D Uncompressed Size     00000000 (0)\n+07C061 Filename Length       003C (60)\n+07C063 Extra Length          0000 (0)\n+07C065 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x55C0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7C065: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-055C4C PAYLOAD\n+07C0A1 PAYLOAD\n \n-055EDE DATA DESCRIPTOR       08074B50 (134695760)\n-055EE2 CRC                   0EB84276 (246956662)\n-055EE6 Compressed Size       00000292 (658)\n-055EEA Uncompressed Size     00000517 (1303)\n+07C522 DATA DESCRIPTOR       08074B50 (134695760)\n+07C526 CRC                   CE737695 (3463673493)\n+07C52A Compressed Size       00000481 (1153)\n+07C52E Uncompressed Size     000010CC (4300)\n \n-055EEE LOCAL HEADER #436     04034B50 (67324752)\n-055EF2 Extract Zip Spec      14 (20) '2.0'\n-055EF3 Extract OS            00 (0) 'MS-DOS'\n-055EF4 General Purpose Flag  0808 (2056)\n+07C532 LOCAL HEADER #436     04034B50 (67324752)\n+07C536 Extract Zip Spec      14 (20) '2.0'\n+07C537 Extract OS            00 (0) 'MS-DOS'\n+07C538 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-055EF6 Compression Method    0008 (8) 'Deflated'\n-055EF8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-055EFC CRC                   00000000 (0)\n-055F00 Compressed Size       00000000 (0)\n-055F04 Uncompressed Size     00000000 (0)\n-055F08 Filename Length       002B (43)\n-055F0A Extra Length          0000 (0)\n-055F0C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07C53A Compression Method    0008 (8) 'Deflated'\n+07C53C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07C540 CRC                   00000000 (0)\n+07C544 Compressed Size       00000000 (0)\n+07C548 Uncompressed Size     00000000 (0)\n+07C54C Filename Length       0026 (38)\n+07C54E Extra Length          0000 (0)\n+07C550 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x55F0C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7C550: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-055F37 PAYLOAD               XX\n+07C576 PAYLOAD               XX\n \n-055F39 DATA DESCRIPTOR       08074B50 (134695760)\n-055F3D CRC                   00000000 (0)\n-055F41 Compressed Size       00000002 (2)\n-055F45 Uncompressed Size     00000000 (0)\n+07C578 DATA DESCRIPTOR       08074B50 (134695760)\n+07C57C CRC                   00000000 (0)\n+07C580 Compressed Size       00000002 (2)\n+07C584 Uncompressed Size     00000000 (0)\n \n-055F49 LOCAL HEADER #437     04034B50 (67324752)\n-055F4D Extract Zip Spec      14 (20) '2.0'\n-055F4E Extract OS            00 (0) 'MS-DOS'\n-055F4F General Purpose Flag  0808 (2056)\n+07C588 LOCAL HEADER #437     04034B50 (67324752)\n+07C58C Extract Zip Spec      14 (20) '2.0'\n+07C58D Extract OS            00 (0) 'MS-DOS'\n+07C58E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-055F51 Compression Method    0008 (8) 'Deflated'\n-055F53 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-055F57 CRC                   00000000 (0)\n-055F5B Compressed Size       00000000 (0)\n-055F5F Uncompressed Size     00000000 (0)\n-055F63 Filename Length       003C (60)\n-055F65 Extra Length          0000 (0)\n-055F67 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07C590 Compression Method    0008 (8) 'Deflated'\n+07C592 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07C596 CRC                   00000000 (0)\n+07C59A Compressed Size       00000000 (0)\n+07C59E Uncompressed Size     00000000 (0)\n+07C5A2 Filename Length       0037 (55)\n+07C5A4 Extra Length          0000 (0)\n+07C5A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x55F67: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7C5A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-055FA3 PAYLOAD\n+07C5DD PAYLOAD\n \n-0567F7 DATA DESCRIPTOR       08074B50 (134695760)\n-0567FB CRC                   64ACCB0D (1689045773)\n-0567FF Compressed Size       00000854 (2132)\n-056803 Uncompressed Size     00001B32 (6962)\n+07C920 DATA DESCRIPTOR       08074B50 (134695760)\n+07C924 CRC                   719AAFB0 (1905962928)\n+07C928 Compressed Size       00000343 (835)\n+07C92C Uncompressed Size     00000C98 (3224)\n \n-056807 LOCAL HEADER #438     04034B50 (67324752)\n-05680B Extract Zip Spec      14 (20) '2.0'\n-05680C Extract OS            00 (0) 'MS-DOS'\n-05680D General Purpose Flag  0808 (2056)\n+07C930 LOCAL HEADER #438     04034B50 (67324752)\n+07C934 Extract Zip Spec      14 (20) '2.0'\n+07C935 Extract OS            00 (0) 'MS-DOS'\n+07C936 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05680F Compression Method    0008 (8) 'Deflated'\n-056811 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-056815 CRC                   00000000 (0)\n-056819 Compressed Size       00000000 (0)\n-05681D Uncompressed Size     00000000 (0)\n-056821 Filename Length       0043 (67)\n-056823 Extra Length          0000 (0)\n-056825 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07C938 Compression Method    0008 (8) 'Deflated'\n+07C93A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07C93E CRC                   00000000 (0)\n+07C942 Compressed Size       00000000 (0)\n+07C946 Uncompressed Size     00000000 (0)\n+07C94A Filename Length       003E (62)\n+07C94C Extra Length          0000 (0)\n+07C94E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x56825: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7C94E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-056868 PAYLOAD\n+07C98C PAYLOAD\n \n-056B8E DATA DESCRIPTOR       08074B50 (134695760)\n-056B92 CRC                   72CD5ED3 (1926061779)\n-056B96 Compressed Size       00000326 (806)\n-056B9A Uncompressed Size     0000069B (1691)\n+07CD01 DATA DESCRIPTOR       08074B50 (134695760)\n+07CD05 CRC                   B7D93D08 (3084467464)\n+07CD09 Compressed Size       00000375 (885)\n+07CD0D Uncompressed Size     00000CED (3309)\n \n-056B9E LOCAL HEADER #439     04034B50 (67324752)\n-056BA2 Extract Zip Spec      14 (20) '2.0'\n-056BA3 Extract OS            00 (0) 'MS-DOS'\n-056BA4 General Purpose Flag  0808 (2056)\n+07CD11 LOCAL HEADER #439     04034B50 (67324752)\n+07CD15 Extract Zip Spec      14 (20) '2.0'\n+07CD16 Extract OS            00 (0) 'MS-DOS'\n+07CD17 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-056BA6 Compression Method    0008 (8) 'Deflated'\n-056BA8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-056BAC CRC                   00000000 (0)\n-056BB0 Compressed Size       00000000 (0)\n-056BB4 Uncompressed Size     00000000 (0)\n-056BB8 Filename Length       0028 (40)\n-056BBA Extra Length          0000 (0)\n-056BBC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07CD19 Compression Method    0008 (8) 'Deflated'\n+07CD1B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07CD1F CRC                   00000000 (0)\n+07CD23 Compressed Size       00000000 (0)\n+07CD27 Uncompressed Size     00000000 (0)\n+07CD2B Filename Length       0025 (37)\n+07CD2D Extra Length          0000 (0)\n+07CD2F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x56BBC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7CD2F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-056BE4 PAYLOAD               XX\n+07CD54 PAYLOAD               XX\n \n-056BE6 DATA DESCRIPTOR       08074B50 (134695760)\n-056BEA CRC                   00000000 (0)\n-056BEE Compressed Size       00000002 (2)\n-056BF2 Uncompressed Size     00000000 (0)\n+07CD56 DATA DESCRIPTOR       08074B50 (134695760)\n+07CD5A CRC                   00000000 (0)\n+07CD5E Compressed Size       00000002 (2)\n+07CD62 Uncompressed Size     00000000 (0)\n \n-056BF6 LOCAL HEADER #440     04034B50 (67324752)\n-056BFA Extract Zip Spec      14 (20) '2.0'\n-056BFB Extract OS            00 (0) 'MS-DOS'\n-056BFC General Purpose Flag  0808 (2056)\n+07CD66 LOCAL HEADER #440     04034B50 (67324752)\n+07CD6A Extract Zip Spec      14 (20) '2.0'\n+07CD6B Extract OS            00 (0) 'MS-DOS'\n+07CD6C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-056BFE Compression Method    0008 (8) 'Deflated'\n-056C00 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-056C04 CRC                   00000000 (0)\n-056C08 Compressed Size       00000000 (0)\n-056C0C Uncompressed Size     00000000 (0)\n-056C10 Filename Length       0036 (54)\n-056C12 Extra Length          0000 (0)\n-056C14 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07CD6E Compression Method    0008 (8) 'Deflated'\n+07CD70 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07CD74 CRC                   00000000 (0)\n+07CD78 Compressed Size       00000000 (0)\n+07CD7C Uncompressed Size     00000000 (0)\n+07CD80 Filename Length       0035 (53)\n+07CD82 Extra Length          0000 (0)\n+07CD84 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x56C14: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7CD84: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-056C4A PAYLOAD\n+07CDB9 PAYLOAD\n \n-05787E DATA DESCRIPTOR       08074B50 (134695760)\n-057882 CRC                   4CF04636 (1290815030)\n-057886 Compressed Size       00000C34 (3124)\n-05788A Uncompressed Size     00002D78 (11640)\n+07D207 DATA DESCRIPTOR       08074B50 (134695760)\n+07D20B CRC                   FD6565BB (4251280827)\n+07D20F Compressed Size       0000044E (1102)\n+07D213 Uncompressed Size     00001876 (6262)\n \n-05788E LOCAL HEADER #441     04034B50 (67324752)\n-057892 Extract Zip Spec      14 (20) '2.0'\n-057893 Extract OS            00 (0) 'MS-DOS'\n-057894 General Purpose Flag  0808 (2056)\n+07D217 LOCAL HEADER #441     04034B50 (67324752)\n+07D21B Extract Zip Spec      14 (20) '2.0'\n+07D21C Extract OS            00 (0) 'MS-DOS'\n+07D21D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-057896 Compression Method    0008 (8) 'Deflated'\n-057898 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05789C CRC                   00000000 (0)\n-0578A0 Compressed Size       00000000 (0)\n-0578A4 Uncompressed Size     00000000 (0)\n-0578A8 Filename Length       003D (61)\n-0578AA Extra Length          0000 (0)\n-0578AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07D21F Compression Method    0008 (8) 'Deflated'\n+07D221 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07D225 CRC                   00000000 (0)\n+07D229 Compressed Size       00000000 (0)\n+07D22D Uncompressed Size     00000000 (0)\n+07D231 Filename Length       003C (60)\n+07D233 Extra Length          0000 (0)\n+07D235 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x578AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7D235: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0578E9 PAYLOAD\n+07D271 PAYLOAD\n \n-057B84 DATA DESCRIPTOR       08074B50 (134695760)\n-057B88 CRC                   FC35A4FC (4231374076)\n-057B8C Compressed Size       0000029B (667)\n-057B90 Uncompressed Size     0000051D (1309)\n+07D537 DATA DESCRIPTOR       08074B50 (134695760)\n+07D53B CRC                   2D853131 (763703601)\n+07D53F Compressed Size       000002C6 (710)\n+07D543 Uncompressed Size     000006EF (1775)\n \n-057B94 LOCAL HEADER #442     04034B50 (67324752)\n-057B98 Extract Zip Spec      14 (20) '2.0'\n-057B99 Extract OS            00 (0) 'MS-DOS'\n-057B9A General Purpose Flag  0808 (2056)\n+07D547 LOCAL HEADER #442     04034B50 (67324752)\n+07D54B Extract Zip Spec      14 (20) '2.0'\n+07D54C Extract OS            00 (0) 'MS-DOS'\n+07D54D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-057B9C Compression Method    0008 (8) 'Deflated'\n-057B9E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-057BA2 CRC                   00000000 (0)\n-057BA6 Compressed Size       00000000 (0)\n-057BAA Uncompressed Size     00000000 (0)\n-057BAE Filename Length       002E (46)\n-057BB0 Extra Length          0000 (0)\n-057BB2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07D54F Compression Method    0008 (8) 'Deflated'\n+07D551 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07D555 CRC                   00000000 (0)\n+07D559 Compressed Size       00000000 (0)\n+07D55D Uncompressed Size     00000000 (0)\n+07D561 Filename Length       0027 (39)\n+07D563 Extra Length          0000 (0)\n+07D565 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x57BB2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7D565: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-057BE0 PAYLOAD               XX\n+07D58C PAYLOAD               XX\n \n-057BE2 DATA DESCRIPTOR       08074B50 (134695760)\n-057BE6 CRC                   00000000 (0)\n-057BEA Compressed Size       00000002 (2)\n-057BEE Uncompressed Size     00000000 (0)\n+07D58E DATA DESCRIPTOR       08074B50 (134695760)\n+07D592 CRC                   00000000 (0)\n+07D596 Compressed Size       00000002 (2)\n+07D59A Uncompressed Size     00000000 (0)\n \n-057BF2 LOCAL HEADER #443     04034B50 (67324752)\n-057BF6 Extract Zip Spec      14 (20) '2.0'\n-057BF7 Extract OS            00 (0) 'MS-DOS'\n-057BF8 General Purpose Flag  0808 (2056)\n+07D59E LOCAL HEADER #443     04034B50 (67324752)\n+07D5A2 Extract Zip Spec      14 (20) '2.0'\n+07D5A3 Extract OS            00 (0) 'MS-DOS'\n+07D5A4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-057BFA Compression Method    0008 (8) 'Deflated'\n-057BFC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-057C00 CRC                   00000000 (0)\n-057C04 Compressed Size       00000000 (0)\n-057C08 Uncompressed Size     00000000 (0)\n-057C0C Filename Length       0036 (54)\n-057C0E Extra Length          0000 (0)\n-057C10 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07D5A6 Compression Method    0008 (8) 'Deflated'\n+07D5A8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07D5AC CRC                   00000000 (0)\n+07D5B0 Compressed Size       00000000 (0)\n+07D5B4 Uncompressed Size     00000000 (0)\n+07D5B8 Filename Length       003A (58)\n+07D5BA Extra Length          0000 (0)\n+07D5BC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x57C10: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7D5BC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-057C46 PAYLOAD\n+07D5F6 PAYLOAD\n \n-057EC4 DATA DESCRIPTOR       08074B50 (134695760)\n-057EC8 CRC                   20217A79 (539064953)\n-057ECC Compressed Size       0000027E (638)\n-057ED0 Uncompressed Size     00000528 (1320)\n+07D9AE DATA DESCRIPTOR       08074B50 (134695760)\n+07D9B2 CRC                   01B8CE5D (28888669)\n+07D9B6 Compressed Size       000003B8 (952)\n+07D9BA Uncompressed Size     000013B5 (5045)\n \n-057ED4 LOCAL HEADER #444     04034B50 (67324752)\n-057ED8 Extract Zip Spec      14 (20) '2.0'\n-057ED9 Extract OS            00 (0) 'MS-DOS'\n-057EDA General Purpose Flag  0808 (2056)\n+07D9BE LOCAL HEADER #444     04034B50 (67324752)\n+07D9C2 Extract Zip Spec      14 (20) '2.0'\n+07D9C3 Extract OS            00 (0) 'MS-DOS'\n+07D9C4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-057EDC Compression Method    0008 (8) 'Deflated'\n-057EDE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-057EE2 CRC                   00000000 (0)\n-057EE6 Compressed Size       00000000 (0)\n-057EEA Uncompressed Size     00000000 (0)\n-057EEE Filename Length       0040 (64)\n-057EF0 Extra Length          0000 (0)\n-057EF2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07D9C6 Compression Method    0008 (8) 'Deflated'\n+07D9C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07D9CC CRC                   00000000 (0)\n+07D9D0 Compressed Size       00000000 (0)\n+07D9D4 Uncompressed Size     00000000 (0)\n+07D9D8 Filename Length       001F (31)\n+07D9DA Extra Length          0000 (0)\n+07D9DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x57EF2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7D9DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-057F32 PAYLOAD\n+07D9FB PAYLOAD               XX\n \n-058358 DATA DESCRIPTOR       08074B50 (134695760)\n-05835C CRC                   5D27A74D (1562879821)\n-058360 Compressed Size       00000426 (1062)\n-058364 Uncompressed Size     00000ADF (2783)\n+07D9FD DATA DESCRIPTOR       08074B50 (134695760)\n+07DA01 CRC                   00000000 (0)\n+07DA05 Compressed Size       00000002 (2)\n+07DA09 Uncompressed Size     00000000 (0)\n \n-058368 LOCAL HEADER #445     04034B50 (67324752)\n-05836C Extract Zip Spec      14 (20) '2.0'\n-05836D Extract OS            00 (0) 'MS-DOS'\n-05836E General Purpose Flag  0808 (2056)\n+07DA0D LOCAL HEADER #445     04034B50 (67324752)\n+07DA11 Extract Zip Spec      14 (20) '2.0'\n+07DA12 Extract OS            00 (0) 'MS-DOS'\n+07DA13 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-058370 Compression Method    0008 (8) 'Deflated'\n-058372 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-058376 CRC                   00000000 (0)\n-05837A Compressed Size       00000000 (0)\n-05837E Uncompressed Size     00000000 (0)\n-058382 Filename Length       0040 (64)\n-058384 Extra Length          0000 (0)\n-058386 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07DA15 Compression Method    0008 (8) 'Deflated'\n+07DA17 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07DA1B CRC                   00000000 (0)\n+07DA1F Compressed Size       00000000 (0)\n+07DA23 Uncompressed Size     00000000 (0)\n+07DA27 Filename Length       002A (42)\n+07DA29 Extra Length          0000 (0)\n+07DA2B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x58386: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7DA2B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0583C6 PAYLOAD\n+07DA55 PAYLOAD\n \n-0586C7 DATA DESCRIPTOR       08074B50 (134695760)\n-0586CB CRC                   6DBA7C3B (1840938043)\n-0586CF Compressed Size       00000301 (769)\n-0586D3 Uncompressed Size     00000611 (1553)\n+07DD2B DATA DESCRIPTOR       08074B50 (134695760)\n+07DD2F CRC                   EE49CD50 (3997814096)\n+07DD33 Compressed Size       000002D6 (726)\n+07DD37 Uncompressed Size     0000075D (1885)\n \n-0586D7 LOCAL HEADER #446     04034B50 (67324752)\n-0586DB Extract Zip Spec      14 (20) '2.0'\n-0586DC Extract OS            00 (0) 'MS-DOS'\n-0586DD General Purpose Flag  0808 (2056)\n+07DD3B LOCAL HEADER #446     04034B50 (67324752)\n+07DD3F Extract Zip Spec      14 (20) '2.0'\n+07DD40 Extract OS            00 (0) 'MS-DOS'\n+07DD41 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0586DF Compression Method    0008 (8) 'Deflated'\n-0586E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0586E5 CRC                   00000000 (0)\n-0586E9 Compressed Size       00000000 (0)\n-0586ED Uncompressed Size     00000000 (0)\n-0586F1 Filename Length       0025 (37)\n-0586F3 Extra Length          0000 (0)\n-0586F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07DD43 Compression Method    0008 (8) 'Deflated'\n+07DD45 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07DD49 CRC                   00000000 (0)\n+07DD4D Compressed Size       00000000 (0)\n+07DD51 Uncompressed Size     00000000 (0)\n+07DD55 Filename Length       0031 (49)\n+07DD57 Extra Length          0000 (0)\n+07DD59 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x586F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7DD59: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05871A PAYLOAD               XX\n+07DD8A PAYLOAD\n \n-05871C DATA DESCRIPTOR       08074B50 (134695760)\n-058720 CRC                   00000000 (0)\n-058724 Compressed Size       00000002 (2)\n-058728 Uncompressed Size     00000000 (0)\n+07DFC9 DATA DESCRIPTOR       08074B50 (134695760)\n+07DFCD CRC                   4C723E93 (1282555539)\n+07DFD1 Compressed Size       0000023F (575)\n+07DFD5 Uncompressed Size     00000432 (1074)\n \n-05872C LOCAL HEADER #447     04034B50 (67324752)\n-058730 Extract Zip Spec      14 (20) '2.0'\n-058731 Extract OS            00 (0) 'MS-DOS'\n-058732 General Purpose Flag  0808 (2056)\n+07DFD9 LOCAL HEADER #447     04034B50 (67324752)\n+07DFDD Extract Zip Spec      14 (20) '2.0'\n+07DFDE Extract OS            00 (0) 'MS-DOS'\n+07DFDF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-058734 Compression Method    0008 (8) 'Deflated'\n-058736 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05873A CRC                   00000000 (0)\n-05873E Compressed Size       00000000 (0)\n-058742 Uncompressed Size     00000000 (0)\n-058746 Filename Length       0040 (64)\n-058748 Extra Length          0000 (0)\n-05874A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07DFE1 Compression Method    0008 (8) 'Deflated'\n+07DFE3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07DFE7 CRC                   00000000 (0)\n+07DFEB Compressed Size       00000000 (0)\n+07DFEF Uncompressed Size     00000000 (0)\n+07DFF3 Filename Length       0027 (39)\n+07DFF5 Extra Length          0000 (0)\n+07DFF7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5874A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7DFF7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05878A PAYLOAD\n+07E01E PAYLOAD               XX\n \n-059463 DATA DESCRIPTOR       08074B50 (134695760)\n-059467 CRC                   92ECBDF0 (2464988656)\n-05946B Compressed Size       00000CD9 (3289)\n-05946F Uncompressed Size     00003237 (12855)\n+07E020 DATA DESCRIPTOR       08074B50 (134695760)\n+07E024 CRC                   00000000 (0)\n+07E028 Compressed Size       00000002 (2)\n+07E02C Uncompressed Size     00000000 (0)\n \n-059473 LOCAL HEADER #448     04034B50 (67324752)\n-059477 Extract Zip Spec      14 (20) '2.0'\n-059478 Extract OS            00 (0) 'MS-DOS'\n-059479 General Purpose Flag  0808 (2056)\n+07E030 LOCAL HEADER #448     04034B50 (67324752)\n+07E034 Extract Zip Spec      14 (20) '2.0'\n+07E035 Extract OS            00 (0) 'MS-DOS'\n+07E036 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05947B Compression Method    0008 (8) 'Deflated'\n-05947D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-059481 CRC                   00000000 (0)\n-059485 Compressed Size       00000000 (0)\n-059489 Uncompressed Size     00000000 (0)\n-05948D Filename Length       003A (58)\n-05948F Extra Length          0000 (0)\n-059491 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07E038 Compression Method    0008 (8) 'Deflated'\n+07E03A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07E03E CRC                   00000000 (0)\n+07E042 Compressed Size       00000000 (0)\n+07E046 Uncompressed Size     00000000 (0)\n+07E04A Filename Length       003D (61)\n+07E04C Extra Length          0000 (0)\n+07E04E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x59491: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7E04E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0594CB PAYLOAD\n+07E08B PAYLOAD\n \n-059760 DATA DESCRIPTOR       08074B50 (134695760)\n-059764 CRC                   8CA55593 (2359645587)\n-059768 Compressed Size       00000295 (661)\n-05976C Uncompressed Size     00000546 (1350)\n+07E434 DATA DESCRIPTOR       08074B50 (134695760)\n+07E438 CRC                   CD3068DB (3442501851)\n+07E43C Compressed Size       000003A9 (937)\n+07E440 Uncompressed Size     000008A7 (2215)\n \n-059770 LOCAL HEADER #449     04034B50 (67324752)\n-059774 Extract Zip Spec      14 (20) '2.0'\n-059775 Extract OS            00 (0) 'MS-DOS'\n-059776 General Purpose Flag  0808 (2056)\n+07E444 LOCAL HEADER #449     04034B50 (67324752)\n+07E448 Extract Zip Spec      14 (20) '2.0'\n+07E449 Extract OS            00 (0) 'MS-DOS'\n+07E44A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-059778 Compression Method    0008 (8) 'Deflated'\n-05977A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05977E CRC                   00000000 (0)\n-059782 Compressed Size       00000000 (0)\n-059786 Uncompressed Size     00000000 (0)\n-05978A Filename Length       0041 (65)\n-05978C Extra Length          0000 (0)\n-05978E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07E44C Compression Method    0008 (8) 'Deflated'\n+07E44E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07E452 CRC                   00000000 (0)\n+07E456 Compressed Size       00000000 (0)\n+07E45A Uncompressed Size     00000000 (0)\n+07E45E Filename Length       003F (63)\n+07E460 Extra Length          0000 (0)\n+07E462 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5978E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7E462: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0597CF PAYLOAD\n+07E4A1 PAYLOAD\n \n-059AD0 DATA DESCRIPTOR       08074B50 (134695760)\n-059AD4 CRC                   BDD5C58A (3184903562)\n-059AD8 Compressed Size       00000301 (769)\n-059ADC Uncompressed Size     000006DC (1756)\n+07E7C7 DATA DESCRIPTOR       08074B50 (134695760)\n+07E7CB CRC                   E601D6EE (3858880238)\n+07E7CF Compressed Size       00000326 (806)\n+07E7D3 Uncompressed Size     00000701 (1793)\n \n-059AE0 LOCAL HEADER #450     04034B50 (67324752)\n-059AE4 Extract Zip Spec      14 (20) '2.0'\n-059AE5 Extract OS            00 (0) 'MS-DOS'\n-059AE6 General Purpose Flag  0808 (2056)\n+07E7D7 LOCAL HEADER #450     04034B50 (67324752)\n+07E7DB Extract Zip Spec      14 (20) '2.0'\n+07E7DC Extract OS            00 (0) 'MS-DOS'\n+07E7DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-059AE8 Compression Method    0008 (8) 'Deflated'\n-059AEA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-059AEE CRC                   00000000 (0)\n-059AF2 Compressed Size       00000000 (0)\n-059AF6 Uncompressed Size     00000000 (0)\n-059AFA Filename Length       003A (58)\n-059AFC Extra Length          0000 (0)\n-059AFE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07E7DF Compression Method    0008 (8) 'Deflated'\n+07E7E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07E7E5 CRC                   00000000 (0)\n+07E7E9 Compressed Size       00000000 (0)\n+07E7ED Uncompressed Size     00000000 (0)\n+07E7F1 Filename Length       0037 (55)\n+07E7F3 Extra Length          0000 (0)\n+07E7F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x59AFE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7E7F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-059B38 PAYLOAD\n+07E82C PAYLOAD\n \n-059DBF DATA DESCRIPTOR       08074B50 (134695760)\n-059DC3 CRC                   DBE638BA (3689298106)\n-059DC7 Compressed Size       00000287 (647)\n-059DCB Uncompressed Size     00000518 (1304)\n+07EB5D DATA DESCRIPTOR       08074B50 (134695760)\n+07EB61 CRC                   577B6C79 (1467706489)\n+07EB65 Compressed Size       00000331 (817)\n+07EB69 Uncompressed Size     000007D4 (2004)\n \n-059DCF LOCAL HEADER #451     04034B50 (67324752)\n-059DD3 Extract Zip Spec      14 (20) '2.0'\n-059DD4 Extract OS            00 (0) 'MS-DOS'\n-059DD5 General Purpose Flag  0808 (2056)\n+07EB6D LOCAL HEADER #451     04034B50 (67324752)\n+07EB71 Extract Zip Spec      14 (20) '2.0'\n+07EB72 Extract OS            00 (0) 'MS-DOS'\n+07EB73 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-059DD7 Compression Method    0008 (8) 'Deflated'\n-059DD9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-059DDD CRC                   00000000 (0)\n-059DE1 Compressed Size       00000000 (0)\n-059DE5 Uncompressed Size     00000000 (0)\n-059DE9 Filename Length       0041 (65)\n-059DEB Extra Length          0000 (0)\n-059DED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07EB75 Compression Method    0008 (8) 'Deflated'\n+07EB77 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07EB7B CRC                   00000000 (0)\n+07EB7F Compressed Size       00000000 (0)\n+07EB83 Uncompressed Size     00000000 (0)\n+07EB87 Filename Length       001E (30)\n+07EB89 Extra Length          0000 (0)\n+07EB8B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x59DED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7EB8B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-059E2E PAYLOAD\n+07EBA9 PAYLOAD               XX\n \n-05A48B DATA DESCRIPTOR       08074B50 (134695760)\n-05A48F CRC                   4263898A (1113819530)\n-05A493 Compressed Size       0000065D (1629)\n-05A497 Uncompressed Size     00001420 (5152)\n+07EBAB DATA DESCRIPTOR       08074B50 (134695760)\n+07EBAF CRC                   00000000 (0)\n+07EBB3 Compressed Size       00000002 (2)\n+07EBB7 Uncompressed Size     00000000 (0)\n \n-05A49B LOCAL HEADER #452     04034B50 (67324752)\n-05A49F Extract Zip Spec      14 (20) '2.0'\n-05A4A0 Extract OS            00 (0) 'MS-DOS'\n-05A4A1 General Purpose Flag  0808 (2056)\n+07EBBB LOCAL HEADER #452     04034B50 (67324752)\n+07EBBF Extract Zip Spec      14 (20) '2.0'\n+07EBC0 Extract OS            00 (0) 'MS-DOS'\n+07EBC1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05A4A3 Compression Method    0008 (8) 'Deflated'\n-05A4A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05A4A9 CRC                   00000000 (0)\n-05A4AD Compressed Size       00000000 (0)\n-05A4B1 Uncompressed Size     00000000 (0)\n-05A4B5 Filename Length       0036 (54)\n-05A4B7 Extra Length          0000 (0)\n-05A4B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07EBC3 Compression Method    0008 (8) 'Deflated'\n+07EBC5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07EBC9 CRC                   00000000 (0)\n+07EBCD Compressed Size       00000000 (0)\n+07EBD1 Uncompressed Size     00000000 (0)\n+07EBD5 Filename Length       002C (44)\n+07EBD7 Extra Length          0000 (0)\n+07EBD9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5A4B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7EBD9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05A4EF PAYLOAD\n+07EC05 PAYLOAD\n \n-05AAD4 DATA DESCRIPTOR       08074B50 (134695760)\n-05AAD8 CRC                   61647F39 (1633976121)\n-05AADC Compressed Size       000005E5 (1509)\n-05AAE0 Uncompressed Size     0000187C (6268)\n+07EE8C DATA DESCRIPTOR       08074B50 (134695760)\n+07EE90 CRC                   BF5F9C1E (3210714142)\n+07EE94 Compressed Size       00000287 (647)\n+07EE98 Uncompressed Size     00000500 (1280)\n \n-05AAE4 LOCAL HEADER #453     04034B50 (67324752)\n-05AAE8 Extract Zip Spec      14 (20) '2.0'\n-05AAE9 Extract OS            00 (0) 'MS-DOS'\n-05AAEA General Purpose Flag  0808 (2056)\n+07EE9C LOCAL HEADER #453     04034B50 (67324752)\n+07EEA0 Extract Zip Spec      14 (20) '2.0'\n+07EEA1 Extract OS            00 (0) 'MS-DOS'\n+07EEA2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05AAEC Compression Method    0008 (8) 'Deflated'\n-05AAEE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05AAF2 CRC                   00000000 (0)\n-05AAF6 Compressed Size       00000000 (0)\n-05AAFA Uncompressed Size     00000000 (0)\n-05AAFE Filename Length       0039 (57)\n-05AB00 Extra Length          0000 (0)\n-05AB02 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07EEA4 Compression Method    0008 (8) 'Deflated'\n+07EEA6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07EEAA CRC                   00000000 (0)\n+07EEAE Compressed Size       00000000 (0)\n+07EEB2 Uncompressed Size     00000000 (0)\n+07EEB6 Filename Length       0026 (38)\n+07EEB8 Extra Length          0000 (0)\n+07EEBA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5AB02: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7EEBA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05AB3B PAYLOAD\n+07EEE0 PAYLOAD               XX\n \n-05ADE5 DATA DESCRIPTOR       08074B50 (134695760)\n-05ADE9 CRC                   48FD2377 (1224549239)\n-05ADED Compressed Size       000002AA (682)\n-05ADF1 Uncompressed Size     00000559 (1369)\n+07EEE2 DATA DESCRIPTOR       08074B50 (134695760)\n+07EEE6 CRC                   00000000 (0)\n+07EEEA Compressed Size       00000002 (2)\n+07EEEE Uncompressed Size     00000000 (0)\n \n-05ADF5 LOCAL HEADER #454     04034B50 (67324752)\n-05ADF9 Extract Zip Spec      14 (20) '2.0'\n-05ADFA Extract OS            00 (0) 'MS-DOS'\n-05ADFB General Purpose Flag  0808 (2056)\n+07EEF2 LOCAL HEADER #454     04034B50 (67324752)\n+07EEF6 Extract Zip Spec      14 (20) '2.0'\n+07EEF7 Extract OS            00 (0) 'MS-DOS'\n+07EEF8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05ADFD Compression Method    0008 (8) 'Deflated'\n-05ADFF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05AE03 CRC                   00000000 (0)\n-05AE07 Compressed Size       00000000 (0)\n-05AE0B Uncompressed Size     00000000 (0)\n-05AE0F Filename Length       0040 (64)\n-05AE11 Extra Length          0000 (0)\n-05AE13 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07EEFA Compression Method    0008 (8) 'Deflated'\n+07EEFC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07EF00 CRC                   00000000 (0)\n+07EF04 Compressed Size       00000000 (0)\n+07EF08 Uncompressed Size     00000000 (0)\n+07EF0C Filename Length       003A (58)\n+07EF0E Extra Length          0000 (0)\n+07EF10 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5AE13: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7EF10: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05AE53 PAYLOAD\n+07EF4A PAYLOAD\n \n-05B617 DATA DESCRIPTOR       08074B50 (134695760)\n-05B61B CRC                   DAA0DBC8 (3667975112)\n-05B61F Compressed Size       000007C4 (1988)\n-05B623 Uncompressed Size     00001AD7 (6871)\n+07F29E DATA DESCRIPTOR       08074B50 (134695760)\n+07F2A2 CRC                   6A2AB119 (1781182745)\n+07F2A6 Compressed Size       00000354 (852)\n+07F2AA Uncompressed Size     00000908 (2312)\n \n-05B627 LOCAL HEADER #455     04034B50 (67324752)\n-05B62B Extract Zip Spec      14 (20) '2.0'\n-05B62C Extract OS            00 (0) 'MS-DOS'\n-05B62D General Purpose Flag  0808 (2056)\n+07F2AE LOCAL HEADER #455     04034B50 (67324752)\n+07F2B2 Extract Zip Spec      14 (20) '2.0'\n+07F2B3 Extract OS            00 (0) 'MS-DOS'\n+07F2B4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05B62F Compression Method    0008 (8) 'Deflated'\n-05B631 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05B635 CRC                   00000000 (0)\n-05B639 Compressed Size       00000000 (0)\n-05B63D Uncompressed Size     00000000 (0)\n-05B641 Filename Length       0039 (57)\n-05B643 Extra Length          0000 (0)\n-05B645 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07F2B6 Compression Method    0008 (8) 'Deflated'\n+07F2B8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07F2BC CRC                   00000000 (0)\n+07F2C0 Compressed Size       00000000 (0)\n+07F2C4 Uncompressed Size     00000000 (0)\n+07F2C8 Filename Length       0024 (36)\n+07F2CA Extra Length          0000 (0)\n+07F2CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5B645: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7F2CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05B67E PAYLOAD\n+07F2F0 PAYLOAD               XX\n \n-05B927 DATA DESCRIPTOR       08074B50 (134695760)\n-05B92B CRC                   887DA686 (2289936006)\n-05B92F Compressed Size       000002A9 (681)\n-05B933 Uncompressed Size     00000559 (1369)\n+07F2F2 DATA DESCRIPTOR       08074B50 (134695760)\n+07F2F6 CRC                   00000000 (0)\n+07F2FA Compressed Size       00000002 (2)\n+07F2FE Uncompressed Size     00000000 (0)\n \n-05B937 LOCAL HEADER #456     04034B50 (67324752)\n-05B93B Extract Zip Spec      14 (20) '2.0'\n-05B93C Extract OS            00 (0) 'MS-DOS'\n-05B93D General Purpose Flag  0808 (2056)\n+07F302 LOCAL HEADER #456     04034B50 (67324752)\n+07F306 Extract Zip Spec      14 (20) '2.0'\n+07F307 Extract OS            00 (0) 'MS-DOS'\n+07F308 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05B93F Compression Method    0008 (8) 'Deflated'\n-05B941 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05B945 CRC                   00000000 (0)\n-05B949 Compressed Size       00000000 (0)\n-05B94D Uncompressed Size     00000000 (0)\n-05B951 Filename Length       0040 (64)\n-05B953 Extra Length          0000 (0)\n-05B955 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07F30A Compression Method    0008 (8) 'Deflated'\n+07F30C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07F310 CRC                   00000000 (0)\n+07F314 Compressed Size       00000000 (0)\n+07F318 Uncompressed Size     00000000 (0)\n+07F31C Filename Length       0039 (57)\n+07F31E Extra Length          0000 (0)\n+07F320 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5B955: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7F320: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05B995 PAYLOAD\n+07F359 PAYLOAD\n \n-05BE40 DATA DESCRIPTOR       08074B50 (134695760)\n-05BE44 CRC                   A7345C3C (2805226556)\n-05BE48 Compressed Size       000004AB (1195)\n-05BE4C Uncompressed Size     00000B51 (2897)\n+07F6BB DATA DESCRIPTOR       08074B50 (134695760)\n+07F6BF CRC                   19AC3747 (430716743)\n+07F6C3 Compressed Size       00000362 (866)\n+07F6C7 Uncompressed Size     0000076E (1902)\n \n-05BE50 LOCAL HEADER #457     04034B50 (67324752)\n-05BE54 Extract Zip Spec      14 (20) '2.0'\n-05BE55 Extract OS            00 (0) 'MS-DOS'\n-05BE56 General Purpose Flag  0808 (2056)\n+07F6CB LOCAL HEADER #457     04034B50 (67324752)\n+07F6CF Extract Zip Spec      14 (20) '2.0'\n+07F6D0 Extract OS            00 (0) 'MS-DOS'\n+07F6D1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05BE58 Compression Method    0008 (8) 'Deflated'\n-05BE5A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05BE5E CRC                   00000000 (0)\n-05BE62 Compressed Size       00000000 (0)\n-05BE66 Uncompressed Size     00000000 (0)\n-05BE6A Filename Length       0039 (57)\n-05BE6C Extra Length          0000 (0)\n-05BE6E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07F6D3 Compression Method    0008 (8) 'Deflated'\n+07F6D5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07F6D9 CRC                   00000000 (0)\n+07F6DD Compressed Size       00000000 (0)\n+07F6E1 Uncompressed Size     00000000 (0)\n+07F6E5 Filename Length       0037 (55)\n+07F6E7 Extra Length          0000 (0)\n+07F6E9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5BE6E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7F6E9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05BEA7 PAYLOAD\n+07F720 PAYLOAD\n \n-05C150 DATA DESCRIPTOR       08074B50 (134695760)\n-05C154 CRC                   C412C0D3 (3289563347)\n-05C158 Compressed Size       000002A9 (681)\n-05C15C Uncompressed Size     00000559 (1369)\n+07FA50 DATA DESCRIPTOR       08074B50 (134695760)\n+07FA54 CRC                   DFEE0135 (3756917045)\n+07FA58 Compressed Size       00000330 (816)\n+07FA5C Uncompressed Size     0000098D (2445)\n \n-05C160 LOCAL HEADER #458     04034B50 (67324752)\n-05C164 Extract Zip Spec      14 (20) '2.0'\n-05C165 Extract OS            00 (0) 'MS-DOS'\n-05C166 General Purpose Flag  0808 (2056)\n+07FA60 LOCAL HEADER #458     04034B50 (67324752)\n+07FA64 Extract Zip Spec      14 (20) '2.0'\n+07FA65 Extract OS            00 (0) 'MS-DOS'\n+07FA66 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05C168 Compression Method    0008 (8) 'Deflated'\n-05C16A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05C16E CRC                   00000000 (0)\n-05C172 Compressed Size       00000000 (0)\n-05C176 Uncompressed Size     00000000 (0)\n-05C17A Filename Length       0040 (64)\n-05C17C Extra Length          0000 (0)\n-05C17E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+07FA68 Compression Method    0008 (8) 'Deflated'\n+07FA6A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+07FA6E CRC                   00000000 (0)\n+07FA72 Compressed Size       00000000 (0)\n+07FA76 Uncompressed Size     00000000 (0)\n+07FA7A Filename Length       003C (60)\n+07FA7C Extra Length          0000 (0)\n+07FA7E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5C17E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x7FA7E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05C1BE PAYLOAD\n+07FABA PAYLOAD\n \n-05C8EE DATA DESCRIPTOR       08074B50 (134695760)\n-05C8F2 CRC                   7A3E3AF6 (2050898678)\n-05C8F6 Compressed Size       00000730 (1840)\n-05C8FA Uncompressed Size     0000158D (5517)\n+0801E7 DATA DESCRIPTOR       08074B50 (134695760)\n+0801EB CRC                   E4E72DDD (3840355805)\n+0801EF Compressed Size       0000072D (1837)\n+0801F3 Uncompressed Size     00001BBE (7102)\n \n-05C8FE LOCAL HEADER #459     04034B50 (67324752)\n-05C902 Extract Zip Spec      14 (20) '2.0'\n-05C903 Extract OS            00 (0) 'MS-DOS'\n-05C904 General Purpose Flag  0808 (2056)\n+0801F7 LOCAL HEADER #459     04034B50 (67324752)\n+0801FB Extract Zip Spec      14 (20) '2.0'\n+0801FC Extract OS            00 (0) 'MS-DOS'\n+0801FD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05C906 Compression Method    0008 (8) 'Deflated'\n-05C908 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05C90C CRC                   00000000 (0)\n-05C910 Compressed Size       00000000 (0)\n-05C914 Uncompressed Size     00000000 (0)\n-05C918 Filename Length       0039 (57)\n-05C91A Extra Length          0000 (0)\n-05C91C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0801FF Compression Method    0008 (8) 'Deflated'\n+080201 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+080205 CRC                   00000000 (0)\n+080209 Compressed Size       00000000 (0)\n+08020D Uncompressed Size     00000000 (0)\n+080211 Filename Length       003F (63)\n+080213 Extra Length          0000 (0)\n+080215 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5C91C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x80215: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05C955 PAYLOAD\n+080254 PAYLOAD\n \n-05CBFF DATA DESCRIPTOR       08074B50 (134695760)\n-05CC03 CRC                   68A40EAC (1755582124)\n-05CC07 Compressed Size       000002AA (682)\n-05CC0B Uncompressed Size     00000559 (1369)\n+080872 DATA DESCRIPTOR       08074B50 (134695760)\n+080876 CRC                   5E80C56B (1585497451)\n+08087A Compressed Size       0000061E (1566)\n+08087E Uncompressed Size     000015FF (5631)\n \n-05CC0F LOCAL HEADER #460     04034B50 (67324752)\n-05CC13 Extract Zip Spec      14 (20) '2.0'\n-05CC14 Extract OS            00 (0) 'MS-DOS'\n-05CC15 General Purpose Flag  0808 (2056)\n+080882 LOCAL HEADER #460     04034B50 (67324752)\n+080886 Extract Zip Spec      14 (20) '2.0'\n+080887 Extract OS            00 (0) 'MS-DOS'\n+080888 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05CC17 Compression Method    0008 (8) 'Deflated'\n-05CC19 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05CC1D CRC                   00000000 (0)\n-05CC21 Compressed Size       00000000 (0)\n-05CC25 Uncompressed Size     00000000 (0)\n-05CC29 Filename Length       0040 (64)\n-05CC2B Extra Length          0000 (0)\n-05CC2D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+08088A Compression Method    0008 (8) 'Deflated'\n+08088C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+080890 CRC                   00000000 (0)\n+080894 Compressed Size       00000000 (0)\n+080898 Uncompressed Size     00000000 (0)\n+08089C Filename Length       0043 (67)\n+08089E Extra Length          0000 (0)\n+0808A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5CC2D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x808A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05CC6D PAYLOAD\n+0808E3 PAYLOAD\n \n-05D05E DATA DESCRIPTOR       08074B50 (134695760)\n-05D062 CRC                   DEA6E3F0 (3735479280)\n-05D066 Compressed Size       000003F1 (1009)\n-05D06A Uncompressed Size     00000942 (2370)\n+080BD9 DATA DESCRIPTOR       08074B50 (134695760)\n+080BDD CRC                   D1666DFC (3513150972)\n+080BE1 Compressed Size       000002F6 (758)\n+080BE5 Uncompressed Size     0000068D (1677)\n \n-05D06E LOCAL HEADER #461     04034B50 (67324752)\n-05D072 Extract Zip Spec      14 (20) '2.0'\n-05D073 Extract OS            00 (0) 'MS-DOS'\n-05D074 General Purpose Flag  0808 (2056)\n+080BE9 LOCAL HEADER #461     04034B50 (67324752)\n+080BED Extract Zip Spec      14 (20) '2.0'\n+080BEE Extract OS            00 (0) 'MS-DOS'\n+080BEF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05D076 Compression Method    0008 (8) 'Deflated'\n-05D078 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05D07C CRC                   00000000 (0)\n-05D080 Compressed Size       00000000 (0)\n-05D084 Uncompressed Size     00000000 (0)\n-05D088 Filename Length       0038 (56)\n-05D08A Extra Length          0000 (0)\n-05D08C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+080BF1 Compression Method    0008 (8) 'Deflated'\n+080BF3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+080BF7 CRC                   00000000 (0)\n+080BFB Compressed Size       00000000 (0)\n+080BFF Uncompressed Size     00000000 (0)\n+080C03 Filename Length       0023 (35)\n+080C05 Extra Length          0000 (0)\n+080C07 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5D08C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x80C07: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05D0C4 PAYLOAD\n+080C2A PAYLOAD               XX\n \n-05D36D DATA DESCRIPTOR       08074B50 (134695760)\n-05D371 CRC                   1E103695 (504379029)\n-05D375 Compressed Size       000002A9 (681)\n-05D379 Uncompressed Size     00000555 (1365)\n+080C2C DATA DESCRIPTOR       08074B50 (134695760)\n+080C30 CRC                   00000000 (0)\n+080C34 Compressed Size       00000002 (2)\n+080C38 Uncompressed Size     00000000 (0)\n \n-05D37D LOCAL HEADER #462     04034B50 (67324752)\n-05D381 Extract Zip Spec      14 (20) '2.0'\n-05D382 Extract OS            00 (0) 'MS-DOS'\n-05D383 General Purpose Flag  0808 (2056)\n+080C3C LOCAL HEADER #462     04034B50 (67324752)\n+080C40 Extract Zip Spec      14 (20) '2.0'\n+080C41 Extract OS            00 (0) 'MS-DOS'\n+080C42 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05D385 Compression Method    0008 (8) 'Deflated'\n-05D387 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05D38B CRC                   00000000 (0)\n-05D38F Compressed Size       00000000 (0)\n-05D393 Uncompressed Size     00000000 (0)\n-05D397 Filename Length       003F (63)\n-05D399 Extra Length          0000 (0)\n-05D39B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+080C44 Compression Method    0008 (8) 'Deflated'\n+080C46 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+080C4A CRC                   00000000 (0)\n+080C4E Compressed Size       00000000 (0)\n+080C52 Uncompressed Size     00000000 (0)\n+080C56 Filename Length       0032 (50)\n+080C58 Extra Length          0000 (0)\n+080C5A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5D39B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x80C5A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05D3DA PAYLOAD\n+080C8C PAYLOAD\n \n-05DB0A DATA DESCRIPTOR       08074B50 (134695760)\n-05DB0E CRC                   27AC8562 (665617762)\n-05DB12 Compressed Size       00000730 (1840)\n-05DB16 Uncompressed Size     000014CB (5323)\n+080F45 DATA DESCRIPTOR       08074B50 (134695760)\n+080F49 CRC                   25E239BD (635582909)\n+080F4D Compressed Size       000002B9 (697)\n+080F51 Uncompressed Size     00000575 (1397)\n \n-05DB1A LOCAL HEADER #463     04034B50 (67324752)\n-05DB1E Extract Zip Spec      14 (20) '2.0'\n-05DB1F Extract OS            00 (0) 'MS-DOS'\n-05DB20 General Purpose Flag  0808 (2056)\n+080F55 LOCAL HEADER #463     04034B50 (67324752)\n+080F59 Extract Zip Spec      14 (20) '2.0'\n+080F5A Extract OS            00 (0) 'MS-DOS'\n+080F5B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05DB22 Compression Method    0008 (8) 'Deflated'\n-05DB24 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05DB28 CRC                   00000000 (0)\n-05DB2C Compressed Size       00000000 (0)\n-05DB30 Uncompressed Size     00000000 (0)\n-05DB34 Filename Length       003A (58)\n-05DB36 Extra Length          0000 (0)\n-05DB38 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+080F5D Compression Method    0008 (8) 'Deflated'\n+080F5F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+080F63 CRC                   00000000 (0)\n+080F67 Compressed Size       00000000 (0)\n+080F6B Uncompressed Size     00000000 (0)\n+080F6F Filename Length       003A (58)\n+080F71 Extra Length          0000 (0)\n+080F73 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5DB38: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x80F73: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05DB72 PAYLOAD\n+080FAD PAYLOAD\n \n-05DE00 DATA DESCRIPTOR       08074B50 (134695760)\n-05DE04 CRC                   D9486541 (3645400385)\n-05DE08 Compressed Size       0000028E (654)\n-05DE0C Uncompressed Size     0000050C (1292)\n+0818A9 DATA DESCRIPTOR       08074B50 (134695760)\n+0818AD CRC                   6E8E196C (1854806380)\n+0818B1 Compressed Size       000008FC (2300)\n+0818B5 Uncompressed Size     00001B5F (7007)\n \n-05DE10 LOCAL HEADER #464     04034B50 (67324752)\n-05DE14 Extract Zip Spec      14 (20) '2.0'\n-05DE15 Extract OS            00 (0) 'MS-DOS'\n-05DE16 General Purpose Flag  0808 (2056)\n+0818B9 LOCAL HEADER #464     04034B50 (67324752)\n+0818BD Extract Zip Spec      14 (20) '2.0'\n+0818BE Extract OS            00 (0) 'MS-DOS'\n+0818BF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05DE18 Compression Method    0008 (8) 'Deflated'\n-05DE1A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05DE1E CRC                   00000000 (0)\n-05DE22 Compressed Size       00000000 (0)\n-05DE26 Uncompressed Size     00000000 (0)\n-05DE2A Filename Length       0041 (65)\n-05DE2C Extra Length          0000 (0)\n-05DE2E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0818C1 Compression Method    0008 (8) 'Deflated'\n+0818C3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0818C7 CRC                   00000000 (0)\n+0818CB Compressed Size       00000000 (0)\n+0818CF Uncompressed Size     00000000 (0)\n+0818D3 Filename Length       002E (46)\n+0818D5 Extra Length          0000 (0)\n+0818D7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5DE2E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x818D7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05DE6F PAYLOAD\n+081905 PAYLOAD               XX\n \n-05E71E DATA DESCRIPTOR       08074B50 (134695760)\n-05E722 CRC                   011CB6AA (18658986)\n-05E726 Compressed Size       000008AF (2223)\n-05E72A Uncompressed Size     00001DE1 (7649)\n+081907 DATA DESCRIPTOR       08074B50 (134695760)\n+08190B CRC                   00000000 (0)\n+08190F Compressed Size       00000002 (2)\n+081913 Uncompressed Size     00000000 (0)\n \n-05E72E LOCAL HEADER #465     04034B50 (67324752)\n-05E732 Extract Zip Spec      14 (20) '2.0'\n-05E733 Extract OS            00 (0) 'MS-DOS'\n-05E734 General Purpose Flag  0808 (2056)\n+081917 LOCAL HEADER #465     04034B50 (67324752)\n+08191B Extract Zip Spec      14 (20) '2.0'\n+08191C Extract OS            00 (0) 'MS-DOS'\n+08191D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05E736 Compression Method    0008 (8) 'Deflated'\n-05E738 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05E73C CRC                   00000000 (0)\n-05E740 Compressed Size       00000000 (0)\n-05E744 Uncompressed Size     00000000 (0)\n-05E748 Filename Length       0043 (67)\n-05E74A Extra Length          0000 (0)\n-05E74C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+08191F Compression Method    0008 (8) 'Deflated'\n+081921 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+081925 CRC                   00000000 (0)\n+081929 Compressed Size       00000000 (0)\n+08192D Uncompressed Size     00000000 (0)\n+081931 Filename Length       004D (77)\n+081933 Extra Length          0000 (0)\n+081935 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5E74C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x81935: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05E78F PAYLOAD\n+081982 PAYLOAD\n \n-05E9F8 DATA DESCRIPTOR       08074B50 (134695760)\n-05E9FC CRC                   6056B6FB (1616295675)\n-05EA00 Compressed Size       00000269 (617)\n-05EA04 Uncompressed Size     00000490 (1168)\n+081C8D DATA DESCRIPTOR       08074B50 (134695760)\n+081C91 CRC                   4F941D99 (1335106969)\n+081C95 Compressed Size       0000030B (779)\n+081C99 Uncompressed Size     0000094D (2381)\n \n-05EA08 LOCAL HEADER #466     04034B50 (67324752)\n-05EA0C Extract Zip Spec      14 (20) '2.0'\n-05EA0D Extract OS            00 (0) 'MS-DOS'\n-05EA0E General Purpose Flag  0808 (2056)\n+081C9D LOCAL HEADER #466     04034B50 (67324752)\n+081CA1 Extract Zip Spec      14 (20) '2.0'\n+081CA2 Extract OS            00 (0) 'MS-DOS'\n+081CA3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05EA10 Compression Method    0008 (8) 'Deflated'\n-05EA12 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05EA16 CRC                   00000000 (0)\n-05EA1A Compressed Size       00000000 (0)\n-05EA1E Uncompressed Size     00000000 (0)\n-05EA22 Filename Length       002F (47)\n-05EA24 Extra Length          0000 (0)\n-05EA26 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+081CA5 Compression Method    0008 (8) 'Deflated'\n+081CA7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+081CAB CRC                   00000000 (0)\n+081CAF Compressed Size       00000000 (0)\n+081CB3 Uncompressed Size     00000000 (0)\n+081CB7 Filename Length       0029 (41)\n+081CB9 Extra Length          0000 (0)\n+081CBB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5EA26: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x81CBB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05EA55 PAYLOAD               XX\n+081CE4 PAYLOAD               XX\n \n-05EA57 DATA DESCRIPTOR       08074B50 (134695760)\n-05EA5B CRC                   00000000 (0)\n-05EA5F Compressed Size       00000002 (2)\n-05EA63 Uncompressed Size     00000000 (0)\n+081CE6 DATA DESCRIPTOR       08074B50 (134695760)\n+081CEA CRC                   00000000 (0)\n+081CEE Compressed Size       00000002 (2)\n+081CF2 Uncompressed Size     00000000 (0)\n \n-05EA67 LOCAL HEADER #467     04034B50 (67324752)\n-05EA6B Extract Zip Spec      14 (20) '2.0'\n-05EA6C Extract OS            00 (0) 'MS-DOS'\n-05EA6D General Purpose Flag  0808 (2056)\n+081CF6 LOCAL HEADER #467     04034B50 (67324752)\n+081CFA Extract Zip Spec      14 (20) '2.0'\n+081CFB Extract OS            00 (0) 'MS-DOS'\n+081CFC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05EA6F Compression Method    0008 (8) 'Deflated'\n-05EA71 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05EA75 CRC                   00000000 (0)\n-05EA79 Compressed Size       00000000 (0)\n-05EA7D Uncompressed Size     00000000 (0)\n-05EA81 Filename Length       004E (78)\n-05EA83 Extra Length          0000 (0)\n-05EA85 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+081CFE Compression Method    0008 (8) 'Deflated'\n+081D00 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+081D04 CRC                   00000000 (0)\n+081D08 Compressed Size       00000000 (0)\n+081D0C Uncompressed Size     00000000 (0)\n+081D10 Filename Length       0046 (70)\n+081D12 Extra Length          0000 (0)\n+081D14 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5EA85: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x81D14: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05EAD3 PAYLOAD\n+081D5A PAYLOAD\n \n-05ED34 DATA DESCRIPTOR       08074B50 (134695760)\n-05ED38 CRC                   3DFE1DA9 (1040063913)\n-05ED3C Compressed Size       00000261 (609)\n-05ED40 Uncompressed Size     00000463 (1123)\n+081FF1 DATA DESCRIPTOR       08074B50 (134695760)\n+081FF5 CRC                   9F5D6B51 (2673699665)\n+081FF9 Compressed Size       00000297 (663)\n+081FFD Uncompressed Size     00000501 (1281)\n \n-05ED44 LOCAL HEADER #468     04034B50 (67324752)\n-05ED48 Extract Zip Spec      14 (20) '2.0'\n-05ED49 Extract OS            00 (0) 'MS-DOS'\n-05ED4A General Purpose Flag  0808 (2056)\n+082001 LOCAL HEADER #468     04034B50 (67324752)\n+082005 Extract Zip Spec      14 (20) '2.0'\n+082006 Extract OS            00 (0) 'MS-DOS'\n+082007 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05ED4C Compression Method    0008 (8) 'Deflated'\n-05ED4E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05ED52 CRC                   00000000 (0)\n-05ED56 Compressed Size       00000000 (0)\n-05ED5A Uncompressed Size     00000000 (0)\n-05ED5E Filename Length       004B (75)\n-05ED60 Extra Length          0000 (0)\n-05ED62 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+082009 Compression Method    0008 (8) 'Deflated'\n+08200B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08200F CRC                   00000000 (0)\n+082013 Compressed Size       00000000 (0)\n+082017 Uncompressed Size     00000000 (0)\n+08201B Filename Length       002B (43)\n+08201D Extra Length          0000 (0)\n+08201F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5ED62: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8201F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05EDAD PAYLOAD\n+08204A PAYLOAD               XX\n \n-05F0AA DATA DESCRIPTOR       08074B50 (134695760)\n-05F0AE CRC                   026F661D (40855069)\n-05F0B2 Compressed Size       000002FD (765)\n-05F0B6 Uncompressed Size     000006F0 (1776)\n+08204C DATA DESCRIPTOR       08074B50 (134695760)\n+082050 CRC                   00000000 (0)\n+082054 Compressed Size       00000002 (2)\n+082058 Uncompressed Size     00000000 (0)\n \n-05F0BA LOCAL HEADER #469     04034B50 (67324752)\n-05F0BE Extract Zip Spec      14 (20) '2.0'\n-05F0BF Extract OS            00 (0) 'MS-DOS'\n-05F0C0 General Purpose Flag  0808 (2056)\n+08205C LOCAL HEADER #469     04034B50 (67324752)\n+082060 Extract Zip Spec      14 (20) '2.0'\n+082061 Extract OS            00 (0) 'MS-DOS'\n+082062 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05F0C2 Compression Method    0008 (8) 'Deflated'\n-05F0C4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05F0C8 CRC                   00000000 (0)\n-05F0CC Compressed Size       00000000 (0)\n-05F0D0 Uncompressed Size     00000000 (0)\n-05F0D4 Filename Length       0041 (65)\n-05F0D6 Extra Length          0000 (0)\n-05F0D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+082064 Compression Method    0008 (8) 'Deflated'\n+082066 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08206A CRC                   00000000 (0)\n+08206E Compressed Size       00000000 (0)\n+082072 Uncompressed Size     00000000 (0)\n+082076 Filename Length       0049 (73)\n+082078 Extra Length          0000 (0)\n+08207A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5F0D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8207A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05F119 PAYLOAD\n+0820C3 PAYLOAD\n \n-05F5B4 DATA DESCRIPTOR       08074B50 (134695760)\n-05F5B8 CRC                   8138F7C2 (2167994306)\n-05F5BC Compressed Size       0000049B (1179)\n-05F5C0 Uncompressed Size     00000CD0 (3280)\n+08297B DATA DESCRIPTOR       08074B50 (134695760)\n+08297F CRC                   C15BEF93 (3244027795)\n+082983 Compressed Size       000008B8 (2232)\n+082987 Uncompressed Size     00001EDF (7903)\n \n-05F5C4 LOCAL HEADER #470     04034B50 (67324752)\n-05F5C8 Extract Zip Spec      14 (20) '2.0'\n-05F5C9 Extract OS            00 (0) 'MS-DOS'\n-05F5CA General Purpose Flag  0808 (2056)\n+08298B LOCAL HEADER #470     04034B50 (67324752)\n+08298F Extract Zip Spec      14 (20) '2.0'\n+082990 Extract OS            00 (0) 'MS-DOS'\n+082991 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05F5CC Compression Method    0008 (8) 'Deflated'\n-05F5CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05F5D2 CRC                   00000000 (0)\n-05F5D6 Compressed Size       00000000 (0)\n-05F5DA Uncompressed Size     00000000 (0)\n-05F5DE Filename Length       0041 (65)\n-05F5E0 Extra Length          0000 (0)\n-05F5E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+082993 Compression Method    0008 (8) 'Deflated'\n+082995 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+082999 CRC                   00000000 (0)\n+08299D Compressed Size       00000000 (0)\n+0829A1 Uncompressed Size     00000000 (0)\n+0829A5 Filename Length       0042 (66)\n+0829A7 Extra Length          0000 (0)\n+0829A9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5F5E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x829A9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05F623 PAYLOAD\n+0829EB PAYLOAD\n \n-05F844 DATA DESCRIPTOR       08074B50 (134695760)\n-05F848 CRC                   1A8FEFCC (445640652)\n-05F84C Compressed Size       00000221 (545)\n-05F850 Uncompressed Size     000003BA (954)\n+082E0C DATA DESCRIPTOR       08074B50 (134695760)\n+082E10 CRC                   EF70124F (4017099343)\n+082E14 Compressed Size       00000421 (1057)\n+082E18 Uncompressed Size     00000960 (2400)\n \n-05F854 LOCAL HEADER #471     04034B50 (67324752)\n-05F858 Extract Zip Spec      14 (20) '2.0'\n-05F859 Extract OS            00 (0) 'MS-DOS'\n-05F85A General Purpose Flag  0808 (2056)\n+082E1C LOCAL HEADER #471     04034B50 (67324752)\n+082E20 Extract Zip Spec      14 (20) '2.0'\n+082E21 Extract OS            00 (0) 'MS-DOS'\n+082E22 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05F85C Compression Method    0008 (8) 'Deflated'\n-05F85E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05F862 CRC                   00000000 (0)\n-05F866 Compressed Size       00000000 (0)\n-05F86A Uncompressed Size     00000000 (0)\n-05F86E Filename Length       002E (46)\n-05F870 Extra Length          0000 (0)\n-05F872 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+082E24 Compression Method    0008 (8) 'Deflated'\n+082E26 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+082E2A CRC                   00000000 (0)\n+082E2E Compressed Size       00000000 (0)\n+082E32 Uncompressed Size     00000000 (0)\n+082E36 Filename Length       0034 (52)\n+082E38 Extra Length          0000 (0)\n+082E3A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5F872: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x82E3A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05F8A0 PAYLOAD               XX\n+082E6E PAYLOAD\n \n-05F8A2 DATA DESCRIPTOR       08074B50 (134695760)\n-05F8A6 CRC                   00000000 (0)\n-05F8AA Compressed Size       00000002 (2)\n-05F8AE Uncompressed Size     00000000 (0)\n+0831B9 DATA DESCRIPTOR       08074B50 (134695760)\n+0831BD CRC                   B2FA49D8 (3002747352)\n+0831C1 Compressed Size       0000034B (843)\n+0831C5 Uncompressed Size     0000083C (2108)\n \n-05F8B2 LOCAL HEADER #472     04034B50 (67324752)\n-05F8B6 Extract Zip Spec      14 (20) '2.0'\n-05F8B7 Extract OS            00 (0) 'MS-DOS'\n-05F8B8 General Purpose Flag  0808 (2056)\n+0831C9 LOCAL HEADER #472     04034B50 (67324752)\n+0831CD Extract Zip Spec      14 (20) '2.0'\n+0831CE Extract OS            00 (0) 'MS-DOS'\n+0831CF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05F8BA Compression Method    0008 (8) 'Deflated'\n-05F8BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05F8C0 CRC                   00000000 (0)\n-05F8C4 Compressed Size       00000000 (0)\n-05F8C8 Uncompressed Size     00000000 (0)\n-05F8CC Filename Length       0043 (67)\n-05F8CE Extra Length          0000 (0)\n-05F8D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0831D1 Compression Method    0008 (8) 'Deflated'\n+0831D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0831D7 CRC                   00000000 (0)\n+0831DB Compressed Size       00000000 (0)\n+0831DF Uncompressed Size     00000000 (0)\n+0831E3 Filename Length       002B (43)\n+0831E5 Extra Length          0000 (0)\n+0831E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5F8D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x831E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05F913 PAYLOAD\n+083212 PAYLOAD               XX\n \n-05FBC8 DATA DESCRIPTOR       08074B50 (134695760)\n-05FBCC CRC                   1071481B (275859483)\n-05FBD0 Compressed Size       000002B5 (693)\n-05FBD4 Uncompressed Size     0000058B (1419)\n+083214 DATA DESCRIPTOR       08074B50 (134695760)\n+083218 CRC                   00000000 (0)\n+08321C Compressed Size       00000002 (2)\n+083220 Uncompressed Size     00000000 (0)\n \n-05FBD8 LOCAL HEADER #473     04034B50 (67324752)\n-05FBDC Extract Zip Spec      14 (20) '2.0'\n-05FBDD Extract OS            00 (0) 'MS-DOS'\n-05FBDE General Purpose Flag  0808 (2056)\n+083224 LOCAL HEADER #473     04034B50 (67324752)\n+083228 Extract Zip Spec      14 (20) '2.0'\n+083229 Extract OS            00 (0) 'MS-DOS'\n+08322A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-05FBE0 Compression Method    0008 (8) 'Deflated'\n-05FBE2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-05FBE6 CRC                   00000000 (0)\n-05FBEA Compressed Size       00000000 (0)\n-05FBEE Uncompressed Size     00000000 (0)\n-05FBF2 Filename Length       004A (74)\n-05FBF4 Extra Length          0000 (0)\n-05FBF6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+08322C Compression Method    0008 (8) 'Deflated'\n+08322E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+083232 CRC                   00000000 (0)\n+083236 Compressed Size       00000000 (0)\n+08323A Uncompressed Size     00000000 (0)\n+08323E Filename Length       0045 (69)\n+083240 Extra Length          0000 (0)\n+083242 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x5FBF6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x83242: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-05FC40 PAYLOAD\n+083287 PAYLOAD\n \n-06070D DATA DESCRIPTOR       08074B50 (134695760)\n-060711 CRC                   E4476BF5 (3829885941)\n-060715 Compressed Size       00000ACD (2765)\n-060719 Uncompressed Size     00002BF8 (11256)\n+083A95 DATA DESCRIPTOR       08074B50 (134695760)\n+083A99 CRC                   A9E4FF87 (2850357127)\n+083A9D Compressed Size       0000080E (2062)\n+083AA1 Uncompressed Size     00001767 (5991)\n \n-06071D LOCAL HEADER #474     04034B50 (67324752)\n-060721 Extract Zip Spec      14 (20) '2.0'\n-060722 Extract OS            00 (0) 'MS-DOS'\n-060723 General Purpose Flag  0808 (2056)\n+083AA5 LOCAL HEADER #474     04034B50 (67324752)\n+083AA9 Extract Zip Spec      14 (20) '2.0'\n+083AAA Extract OS            00 (0) 'MS-DOS'\n+083AAB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-060725 Compression Method    0008 (8) 'Deflated'\n-060727 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06072B CRC                   00000000 (0)\n-06072F Compressed Size       00000000 (0)\n-060733 Uncompressed Size     00000000 (0)\n-060737 Filename Length       002D (45)\n-060739 Extra Length          0000 (0)\n-06073B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+083AAD Compression Method    0008 (8) 'Deflated'\n+083AAF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+083AB3 CRC                   00000000 (0)\n+083AB7 Compressed Size       00000000 (0)\n+083ABB Uncompressed Size     00000000 (0)\n+083ABF Filename Length       0032 (50)\n+083AC1 Extra Length          0000 (0)\n+083AC3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6073B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x83AC3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-060768 PAYLOAD               XX\n+083AF5 PAYLOAD               XX\n \n-06076A DATA DESCRIPTOR       08074B50 (134695760)\n-06076E CRC                   00000000 (0)\n-060772 Compressed Size       00000002 (2)\n-060776 Uncompressed Size     00000000 (0)\n+083AF7 DATA DESCRIPTOR       08074B50 (134695760)\n+083AFB CRC                   00000000 (0)\n+083AFF Compressed Size       00000002 (2)\n+083B03 Uncompressed Size     00000000 (0)\n \n-06077A LOCAL HEADER #475     04034B50 (67324752)\n-06077E Extract Zip Spec      14 (20) '2.0'\n-06077F Extract OS            00 (0) 'MS-DOS'\n-060780 General Purpose Flag  0808 (2056)\n+083B07 LOCAL HEADER #475     04034B50 (67324752)\n+083B0B Extract Zip Spec      14 (20) '2.0'\n+083B0C Extract OS            00 (0) 'MS-DOS'\n+083B0D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-060782 Compression Method    0008 (8) 'Deflated'\n-060784 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-060788 CRC                   00000000 (0)\n-06078C Compressed Size       00000000 (0)\n-060790 Uncompressed Size     00000000 (0)\n-060794 Filename Length       0041 (65)\n-060796 Extra Length          0000 (0)\n-060798 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+083B0F Compression Method    0008 (8) 'Deflated'\n+083B11 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+083B15 CRC                   00000000 (0)\n+083B19 Compressed Size       00000000 (0)\n+083B1D Uncompressed Size     00000000 (0)\n+083B21 Filename Length       0047 (71)\n+083B23 Extra Length          0000 (0)\n+083B25 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x60798: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x83B25: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0607D9 PAYLOAD\n+083B6C PAYLOAD\n \n-060DC2 DATA DESCRIPTOR       08074B50 (134695760)\n-060DC6 CRC                   F23CFA2B (4064082475)\n-060DCA Compressed Size       000005E9 (1513)\n-060DCE Uncompressed Size     000014C8 (5320)\n+083FB0 DATA DESCRIPTOR       08074B50 (134695760)\n+083FB4 CRC                   7C2CDC15 (2083314709)\n+083FB8 Compressed Size       00000444 (1092)\n+083FBC Uncompressed Size     00000C7D (3197)\n \n-060DD2 LOCAL HEADER #476     04034B50 (67324752)\n-060DD6 Extract Zip Spec      14 (20) '2.0'\n-060DD7 Extract OS            00 (0) 'MS-DOS'\n-060DD8 General Purpose Flag  0808 (2056)\n+083FC0 LOCAL HEADER #476     04034B50 (67324752)\n+083FC4 Extract Zip Spec      14 (20) '2.0'\n+083FC5 Extract OS            00 (0) 'MS-DOS'\n+083FC6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-060DDA Compression Method    0008 (8) 'Deflated'\n-060DDC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-060DE0 CRC                   00000000 (0)\n-060DE4 Compressed Size       00000000 (0)\n-060DE8 Uncompressed Size     00000000 (0)\n-060DEC Filename Length       0044 (68)\n-060DEE Extra Length          0000 (0)\n-060DF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+083FC8 Compression Method    0008 (8) 'Deflated'\n+083FCA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+083FCE CRC                   00000000 (0)\n+083FD2 Compressed Size       00000000 (0)\n+083FD6 Uncompressed Size     00000000 (0)\n+083FDA Filename Length       0031 (49)\n+083FDC Extra Length          0000 (0)\n+083FDE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x60DF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x83FDE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-060E34 PAYLOAD\n+08400F PAYLOAD               XX\n \n-0616B2 DATA DESCRIPTOR       08074B50 (134695760)\n-0616B6 CRC                   A2C265E1 (2730649057)\n-0616BA Compressed Size       0000087E (2174)\n-0616BE Uncompressed Size     00001D45 (7493)\n+084011 DATA DESCRIPTOR       08074B50 (134695760)\n+084015 CRC                   00000000 (0)\n+084019 Compressed Size       00000002 (2)\n+08401D Uncompressed Size     00000000 (0)\n \n-0616C2 LOCAL HEADER #477     04034B50 (67324752)\n-0616C6 Extract Zip Spec      14 (20) '2.0'\n-0616C7 Extract OS            00 (0) 'MS-DOS'\n-0616C8 General Purpose Flag  0808 (2056)\n+084021 LOCAL HEADER #477     04034B50 (67324752)\n+084025 Extract Zip Spec      14 (20) '2.0'\n+084026 Extract OS            00 (0) 'MS-DOS'\n+084027 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0616CA Compression Method    0008 (8) 'Deflated'\n-0616CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0616D0 CRC                   00000000 (0)\n-0616D4 Compressed Size       00000000 (0)\n-0616D8 Uncompressed Size     00000000 (0)\n-0616DC Filename Length       0044 (68)\n-0616DE Extra Length          0000 (0)\n-0616E0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+084029 Compression Method    0008 (8) 'Deflated'\n+08402B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08402F CRC                   00000000 (0)\n+084033 Compressed Size       00000000 (0)\n+084037 Uncompressed Size     00000000 (0)\n+08403B Filename Length       0045 (69)\n+08403D Extra Length          0000 (0)\n+08403F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x616E0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8403F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-061724 PAYLOAD\n+084084 PAYLOAD\n \n-0619CE DATA DESCRIPTOR       08074B50 (134695760)\n-0619D2 CRC                   AEA9AD13 (2930355475)\n-0619D6 Compressed Size       000002AA (682)\n-0619DA Uncompressed Size     000005BA (1466)\n+0844A7 DATA DESCRIPTOR       08074B50 (134695760)\n+0844AB CRC                   C7D99F04 (3352928004)\n+0844AF Compressed Size       00000423 (1059)\n+0844B3 Uncompressed Size     00000C02 (3074)\n \n-0619DE LOCAL HEADER #478     04034B50 (67324752)\n-0619E2 Extract Zip Spec      14 (20) '2.0'\n-0619E3 Extract OS            00 (0) 'MS-DOS'\n-0619E4 General Purpose Flag  0808 (2056)\n+0844B7 LOCAL HEADER #478     04034B50 (67324752)\n+0844BB Extract Zip Spec      14 (20) '2.0'\n+0844BC Extract OS            00 (0) 'MS-DOS'\n+0844BD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0619E6 Compression Method    0008 (8) 'Deflated'\n-0619E8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0619EC CRC                   00000000 (0)\n-0619F0 Compressed Size       00000000 (0)\n-0619F4 Uncompressed Size     00000000 (0)\n-0619F8 Filename Length       0058 (88)\n-0619FA Extra Length          0000 (0)\n-0619FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0844BF Compression Method    0008 (8) 'Deflated'\n+0844C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0844C5 CRC                   00000000 (0)\n+0844C9 Compressed Size       00000000 (0)\n+0844CD Uncompressed Size     00000000 (0)\n+0844D1 Filename Length       004D (77)\n+0844D3 Extra Length          0000 (0)\n+0844D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x619FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x844D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-061A54 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+084522 PAYLOAD\n \n-061A9D DATA DESCRIPTOR       08074B50 (134695760)\n-061AA1 CRC                   AE0B59B2 (2919979442)\n-061AA5 Compressed Size       00000049 (73)\n-061AA9 Uncompressed Size     00000053 (83)\n+0849A9 DATA DESCRIPTOR       08074B50 (134695760)\n+0849AD CRC                   B7E8049A (3085436058)\n+0849B1 Compressed Size       00000487 (1159)\n+0849B5 Uncompressed Size     00000CBE (3262)\n \n-061AAD LOCAL HEADER #479     04034B50 (67324752)\n-061AB1 Extract Zip Spec      14 (20) '2.0'\n-061AB2 Extract OS            00 (0) 'MS-DOS'\n-061AB3 General Purpose Flag  0808 (2056)\n+0849B9 LOCAL HEADER #479     04034B50 (67324752)\n+0849BD Extract Zip Spec      14 (20) '2.0'\n+0849BE Extract OS            00 (0) 'MS-DOS'\n+0849BF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-061AB5 Compression Method    0008 (8) 'Deflated'\n-061AB7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-061ABB CRC                   00000000 (0)\n-061ABF Compressed Size       00000000 (0)\n-061AC3 Uncompressed Size     00000000 (0)\n-061AC7 Filename Length       0053 (83)\n-061AC9 Extra Length          0000 (0)\n-061ACB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0849C1 Compression Method    0008 (8) 'Deflated'\n+0849C3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0849C7 CRC                   00000000 (0)\n+0849CB Compressed Size       00000000 (0)\n+0849CF Uncompressed Size     00000000 (0)\n+0849D3 Filename Length       003F (63)\n+0849D5 Extra Length          0000 (0)\n+0849D7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x61ACB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x849D7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-061B1E PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+084A16 PAYLOAD\n \n-061B76 DATA DESCRIPTOR       08074B50 (134695760)\n-061B7A CRC                   80BC13A6 (2159809446)\n-061B7E Compressed Size       00000058 (88)\n-061B82 Uncompressed Size     000000A2 (162)\n+084EBC DATA DESCRIPTOR       08074B50 (134695760)\n+084EC0 CRC                   365FEBC7 (912255943)\n+084EC4 Compressed Size       000004A6 (1190)\n+084EC8 Uncompressed Size     00000B87 (2951)\n \n-061B86 LOCAL HEADER #480     04034B50 (67324752)\n-061B8A Extract Zip Spec      14 (20) '2.0'\n-061B8B Extract OS            00 (0) 'MS-DOS'\n-061B8C General Purpose Flag  0808 (2056)\n+084ECC LOCAL HEADER #480     04034B50 (67324752)\n+084ED0 Extract Zip Spec      14 (20) '2.0'\n+084ED1 Extract OS            00 (0) 'MS-DOS'\n+084ED2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-061B8E Compression Method    0008 (8) 'Deflated'\n-061B90 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-061B94 CRC                   00000000 (0)\n-061B98 Compressed Size       00000000 (0)\n-061B9C Uncompressed Size     00000000 (0)\n-061BA0 Filename Length       0004 (4)\n-061BA2 Extra Length          0000 (0)\n-061BA4 Filename              'XXXX'\n+084ED4 Compression Method    0008 (8) 'Deflated'\n+084ED6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+084EDA CRC                   00000000 (0)\n+084EDE Compressed Size       00000000 (0)\n+084EE2 Uncompressed Size     00000000 (0)\n+084EE6 Filename Length       0031 (49)\n+084EE8 Extra Length          0000 (0)\n+084EEA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x61BA4: Filename 'XXXX'\n+# WARNING: Offset 0x84EEA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-061BA8 PAYLOAD               XX\n+084F1B PAYLOAD               XX\n \n-061BAA DATA DESCRIPTOR       08074B50 (134695760)\n-061BAE CRC                   00000000 (0)\n-061BB2 Compressed Size       00000002 (2)\n-061BB6 Uncompressed Size     00000000 (0)\n+084F1D DATA DESCRIPTOR       08074B50 (134695760)\n+084F21 CRC                   00000000 (0)\n+084F25 Compressed Size       00000002 (2)\n+084F29 Uncompressed Size     00000000 (0)\n \n-061BBA LOCAL HEADER #481     04034B50 (67324752)\n-061BBE Extract Zip Spec      14 (20) '2.0'\n-061BBF Extract OS            00 (0) 'MS-DOS'\n-061BC0 General Purpose Flag  0808 (2056)\n+084F2D LOCAL HEADER #481     04034B50 (67324752)\n+084F31 Extract Zip Spec      14 (20) '2.0'\n+084F32 Extract OS            00 (0) 'MS-DOS'\n+084F33 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-061BC2 Compression Method    0008 (8) 'Deflated'\n-061BC4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-061BC8 CRC                   00000000 (0)\n-061BCC Compressed Size       00000000 (0)\n-061BD0 Uncompressed Size     00000000 (0)\n-061BD4 Filename Length       000C (12)\n-061BD6 Extra Length          0000 (0)\n-061BD8 Filename              'XXXXXXXXXXXX'\n+084F35 Compression Method    0008 (8) 'Deflated'\n+084F37 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+084F3B CRC                   00000000 (0)\n+084F3F Compressed Size       00000000 (0)\n+084F43 Uncompressed Size     00000000 (0)\n+084F47 Filename Length       0045 (69)\n+084F49 Extra Length          0000 (0)\n+084F4B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x61BD8: Filename 'XXXXXXXXXXXX'\n+# WARNING: Offset 0x84F4B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-061BE4 PAYLOAD               XX\n+084F90 PAYLOAD\n \n-061BE6 DATA DESCRIPTOR       08074B50 (134695760)\n-061BEA CRC                   00000000 (0)\n-061BEE Compressed Size       00000002 (2)\n-061BF2 Uncompressed Size     00000000 (0)\n+085368 DATA DESCRIPTOR       08074B50 (134695760)\n+08536C CRC                   3EDDC0EF (1054720239)\n+085370 Compressed Size       000003D8 (984)\n+085374 Uncompressed Size     00000AA3 (2723)\n \n-061BF6 LOCAL HEADER #482     04034B50 (67324752)\n-061BFA Extract Zip Spec      14 (20) '2.0'\n-061BFB Extract OS            00 (0) 'MS-DOS'\n-061BFC General Purpose Flag  0808 (2056)\n+085378 LOCAL HEADER #482     04034B50 (67324752)\n+08537C Extract Zip Spec      14 (20) '2.0'\n+08537D Extract OS            00 (0) 'MS-DOS'\n+08537E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-061BFE Compression Method    0008 (8) 'Deflated'\n-061C00 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-061C04 CRC                   00000000 (0)\n-061C08 Compressed Size       00000000 (0)\n-061C0C Uncompressed Size     00000000 (0)\n-061C10 Filename Length       0012 (18)\n-061C12 Extra Length          0000 (0)\n-061C14 Filename              'XXXXXXXXXXXXXXXXXX'\n+085380 Compression Method    0008 (8) 'Deflated'\n+085382 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+085386 CRC                   00000000 (0)\n+08538A Compressed Size       00000000 (0)\n+08538E Uncompressed Size     00000000 (0)\n+085392 Filename Length       0033 (51)\n+085394 Extra Length          0000 (0)\n+085396 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x61C14: Filename 'XXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x85396: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-061C26 PAYLOAD               XX\n+0853C9 PAYLOAD               XX\n \n-061C28 DATA DESCRIPTOR       08074B50 (134695760)\n-061C2C CRC                   00000000 (0)\n-061C30 Compressed Size       00000002 (2)\n-061C34 Uncompressed Size     00000000 (0)\n+0853CB DATA DESCRIPTOR       08074B50 (134695760)\n+0853CF CRC                   00000000 (0)\n+0853D3 Compressed Size       00000002 (2)\n+0853D7 Uncompressed Size     00000000 (0)\n \n-061C38 LOCAL HEADER #483     04034B50 (67324752)\n-061C3C Extract Zip Spec      14 (20) '2.0'\n-061C3D Extract OS            00 (0) 'MS-DOS'\n-061C3E General Purpose Flag  0808 (2056)\n+0853DB LOCAL HEADER #483     04034B50 (67324752)\n+0853DF Extract Zip Spec      14 (20) '2.0'\n+0853E0 Extract OS            00 (0) 'MS-DOS'\n+0853E1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-061C40 Compression Method    0008 (8) 'Deflated'\n-061C42 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-061C46 CRC                   00000000 (0)\n-061C4A Compressed Size       00000000 (0)\n-061C4E Uncompressed Size     00000000 (0)\n-061C52 Filename Length       0019 (25)\n-061C54 Extra Length          0000 (0)\n-061C56 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+0853E3 Compression Method    0008 (8) 'Deflated'\n+0853E5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0853E9 CRC                   00000000 (0)\n+0853ED Compressed Size       00000000 (0)\n+0853F1 Uncompressed Size     00000000 (0)\n+0853F5 Filename Length       0049 (73)\n+0853F7 Extra Length          0000 (0)\n+0853F9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x61C56: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x853F9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-061C6F PAYLOAD               XX\n+085442 PAYLOAD\n \n-061C71 DATA DESCRIPTOR       08074B50 (134695760)\n-061C75 CRC                   00000000 (0)\n-061C79 Compressed Size       00000002 (2)\n-061C7D Uncompressed Size     00000000 (0)\n+08584F DATA DESCRIPTOR       08074B50 (134695760)\n+085853 CRC                   9B40567E (2604684926)\n+085857 Compressed Size       0000040D (1037)\n+08585B Uncompressed Size     00000BB0 (2992)\n \n-061C81 LOCAL HEADER #484     04034B50 (67324752)\n-061C85 Extract Zip Spec      14 (20) '2.0'\n-061C86 Extract OS            00 (0) 'MS-DOS'\n-061C87 General Purpose Flag  0808 (2056)\n+08585F LOCAL HEADER #484     04034B50 (67324752)\n+085863 Extract Zip Spec      14 (20) '2.0'\n+085864 Extract OS            00 (0) 'MS-DOS'\n+085865 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-061C89 Compression Method    0008 (8) 'Deflated'\n-061C8B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-061C8F CRC                   00000000 (0)\n-061C93 Compressed Size       00000000 (0)\n-061C97 Uncompressed Size     00000000 (0)\n-061C9B Filename Length       0023 (35)\n-061C9D Extra Length          0000 (0)\n-061C9F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+085867 Compression Method    0008 (8) 'Deflated'\n+085869 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08586D CRC                   00000000 (0)\n+085871 Compressed Size       00000000 (0)\n+085875 Uncompressed Size     00000000 (0)\n+085879 Filename Length       001E (30)\n+08587B Extra Length          0000 (0)\n+08587D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x61C9F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8587D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-061CC2 PAYLOAD               XX\n+08589B PAYLOAD               XX\n \n-061CC4 DATA DESCRIPTOR       08074B50 (134695760)\n-061CC8 CRC                   00000000 (0)\n-061CCC Compressed Size       00000002 (2)\n-061CD0 Uncompressed Size     00000000 (0)\n+08589D DATA DESCRIPTOR       08074B50 (134695760)\n+0858A1 CRC                   00000000 (0)\n+0858A5 Compressed Size       00000002 (2)\n+0858A9 Uncompressed Size     00000000 (0)\n \n-061CD4 LOCAL HEADER #485     04034B50 (67324752)\n-061CD8 Extract Zip Spec      14 (20) '2.0'\n-061CD9 Extract OS            00 (0) 'MS-DOS'\n-061CDA General Purpose Flag  0808 (2056)\n+0858AD LOCAL HEADER #485     04034B50 (67324752)\n+0858B1 Extract Zip Spec      14 (20) '2.0'\n+0858B2 Extract OS            00 (0) 'MS-DOS'\n+0858B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-061CDC Compression Method    0008 (8) 'Deflated'\n-061CDE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-061CE2 CRC                   00000000 (0)\n-061CE6 Compressed Size       00000000 (0)\n-061CEA Uncompressed Size     00000000 (0)\n-061CEE Filename Length       0030 (48)\n-061CF0 Extra Length          0000 (0)\n-061CF2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0858B5 Compression Method    0008 (8) 'Deflated'\n+0858B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0858BB CRC                   00000000 (0)\n+0858BF Compressed Size       00000000 (0)\n+0858C3 Uncompressed Size     00000000 (0)\n+0858C7 Filename Length       0033 (51)\n+0858C9 Extra Length          0000 (0)\n+0858CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x61CF2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x858CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-061D22 PAYLOAD\n+0858FE PAYLOAD\n \n-061FDD DATA DESCRIPTOR       08074B50 (134695760)\n-061FE1 CRC                   87D33073 (2278764659)\n-061FE5 Compressed Size       000002BB (699)\n-061FE9 Uncompressed Size     000005CF (1487)\n+087550 DATA DESCRIPTOR       08074B50 (134695760)\n+087554 CRC                   6BA20F13 (1805782803)\n+087558 Compressed Size       00001C52 (7250)\n+08755C Uncompressed Size     00007CE7 (31975)\n \n-061FED LOCAL HEADER #486     04034B50 (67324752)\n-061FF1 Extract Zip Spec      14 (20) '2.0'\n-061FF2 Extract OS            00 (0) 'MS-DOS'\n-061FF3 General Purpose Flag  0808 (2056)\n+087560 LOCAL HEADER #486     04034B50 (67324752)\n+087564 Extract Zip Spec      14 (20) '2.0'\n+087565 Extract OS            00 (0) 'MS-DOS'\n+087566 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-061FF5 Compression Method    0008 (8) 'Deflated'\n-061FF7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-061FFB CRC                   00000000 (0)\n-061FFF Compressed Size       00000000 (0)\n-062003 Uncompressed Size     00000000 (0)\n-062007 Filename Length       0019 (25)\n-062009 Extra Length          0000 (0)\n-06200B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+087568 Compression Method    0008 (8) 'Deflated'\n+08756A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08756E CRC                   00000000 (0)\n+087572 Compressed Size       00000000 (0)\n+087576 Uncompressed Size     00000000 (0)\n+08757A Filename Length       002A (42)\n+08757C Extra Length          0000 (0)\n+08757E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6200B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8757E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-062024 PAYLOAD               XX\n+0875A8 PAYLOAD\n \n-062026 DATA DESCRIPTOR       08074B50 (134695760)\n-06202A CRC                   00000000 (0)\n-06202E Compressed Size       00000002 (2)\n-062032 Uncompressed Size     00000000 (0)\n+08786E DATA DESCRIPTOR       08074B50 (134695760)\n+087872 CRC                   896B8386 (2305524614)\n+087876 Compressed Size       000002C6 (710)\n+08787A Uncompressed Size     0000069C (1692)\n \n-062036 LOCAL HEADER #487     04034B50 (67324752)\n-06203A Extract Zip Spec      14 (20) '2.0'\n-06203B Extract OS            00 (0) 'MS-DOS'\n-06203C General Purpose Flag  0808 (2056)\n+08787E LOCAL HEADER #487     04034B50 (67324752)\n+087882 Extract Zip Spec      14 (20) '2.0'\n+087883 Extract OS            00 (0) 'MS-DOS'\n+087884 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06203E Compression Method    0008 (8) 'Deflated'\n-062040 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-062044 CRC                   00000000 (0)\n-062048 Compressed Size       00000000 (0)\n-06204C Uncompressed Size     00000000 (0)\n-062050 Filename Length       0024 (36)\n-062052 Extra Length          0000 (0)\n-062054 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+087886 Compression Method    0008 (8) 'Deflated'\n+087888 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08788C CRC                   00000000 (0)\n+087890 Compressed Size       00000000 (0)\n+087894 Uncompressed Size     00000000 (0)\n+087898 Filename Length       0028 (40)\n+08789A Extra Length          0000 (0)\n+08789C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x62054: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8789C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-062078 PAYLOAD               XX\n+0878C4 PAYLOAD\n \n-06207A DATA DESCRIPTOR       08074B50 (134695760)\n-06207E CRC                   00000000 (0)\n-062082 Compressed Size       00000002 (2)\n-062086 Uncompressed Size     00000000 (0)\n+087C2A DATA DESCRIPTOR       08074B50 (134695760)\n+087C2E CRC                   2D8D7FE9 (764248041)\n+087C32 Compressed Size       00000366 (870)\n+087C36 Uncompressed Size     00000769 (1897)\n \n-06208A LOCAL HEADER #488     04034B50 (67324752)\n-06208E Extract Zip Spec      14 (20) '2.0'\n-06208F Extract OS            00 (0) 'MS-DOS'\n-062090 General Purpose Flag  0808 (2056)\n+087C3A LOCAL HEADER #488     04034B50 (67324752)\n+087C3E Extract Zip Spec      14 (20) '2.0'\n+087C3F Extract OS            00 (0) 'MS-DOS'\n+087C40 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-062092 Compression Method    0008 (8) 'Deflated'\n-062094 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-062098 CRC                   00000000 (0)\n-06209C Compressed Size       00000000 (0)\n-0620A0 Uncompressed Size     00000000 (0)\n-0620A4 Filename Length       0032 (50)\n-0620A6 Extra Length          0000 (0)\n-0620A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+087C42 Compression Method    0008 (8) 'Deflated'\n+087C44 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+087C48 CRC                   00000000 (0)\n+087C4C Compressed Size       00000000 (0)\n+087C50 Uncompressed Size     00000000 (0)\n+087C54 Filename Length       002C (44)\n+087C56 Extra Length          0000 (0)\n+087C58 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x620A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x87C58: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0620DA PAYLOAD\n+087C84 PAYLOAD\n \n-062493 DATA DESCRIPTOR       08074B50 (134695760)\n-062497 CRC                   9122A7A7 (2434967463)\n-06249B Compressed Size       000003B9 (953)\n-06249F Uncompressed Size     00000A3F (2623)\n+087EE1 DATA DESCRIPTOR       08074B50 (134695760)\n+087EE5 CRC                   E9761FB8 (3916832696)\n+087EE9 Compressed Size       0000025D (605)\n+087EED Uncompressed Size     00000497 (1175)\n \n-0624A3 LOCAL HEADER #489     04034B50 (67324752)\n-0624A7 Extract Zip Spec      14 (20) '2.0'\n-0624A8 Extract OS            00 (0) 'MS-DOS'\n-0624A9 General Purpose Flag  0808 (2056)\n+087EF1 LOCAL HEADER #489     04034B50 (67324752)\n+087EF5 Extract Zip Spec      14 (20) '2.0'\n+087EF6 Extract OS            00 (0) 'MS-DOS'\n+087EF7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0624AB Compression Method    0008 (8) 'Deflated'\n-0624AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0624B1 CRC                   00000000 (0)\n-0624B5 Compressed Size       00000000 (0)\n-0624B9 Uncompressed Size     00000000 (0)\n-0624BD Filename Length       0030 (48)\n-0624BF Extra Length          0000 (0)\n-0624C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+087EF9 Compression Method    0008 (8) 'Deflated'\n+087EFB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+087EFF CRC                   00000000 (0)\n+087F03 Compressed Size       00000000 (0)\n+087F07 Uncompressed Size     00000000 (0)\n+087F0B Filename Length       001E (30)\n+087F0D Extra Length          0000 (0)\n+087F0F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x624C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x87F0F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0624F1 PAYLOAD\n+087F2D PAYLOAD               XX\n \n-0628B3 DATA DESCRIPTOR       08074B50 (134695760)\n-0628B7 CRC                   3228CAA5 (841534117)\n-0628BB Compressed Size       000003C2 (962)\n-0628BF Uncompressed Size     00000A97 (2711)\n+087F2F DATA DESCRIPTOR       08074B50 (134695760)\n+087F33 CRC                   00000000 (0)\n+087F37 Compressed Size       00000002 (2)\n+087F3B Uncompressed Size     00000000 (0)\n \n-0628C3 LOCAL HEADER #490     04034B50 (67324752)\n-0628C7 Extract Zip Spec      14 (20) '2.0'\n-0628C8 Extract OS            00 (0) 'MS-DOS'\n-0628C9 General Purpose Flag  0808 (2056)\n+087F3F LOCAL HEADER #490     04034B50 (67324752)\n+087F43 Extract Zip Spec      14 (20) '2.0'\n+087F44 Extract OS            00 (0) 'MS-DOS'\n+087F45 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0628CB Compression Method    0008 (8) 'Deflated'\n-0628CD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0628D1 CRC                   00000000 (0)\n-0628D5 Compressed Size       00000000 (0)\n-0628D9 Uncompressed Size     00000000 (0)\n-0628DD Filename Length       0018 (24)\n-0628DF Extra Length          0000 (0)\n-0628E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+087F47 Compression Method    0008 (8) 'Deflated'\n+087F49 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+087F4D CRC                   00000000 (0)\n+087F51 Compressed Size       00000000 (0)\n+087F55 Uncompressed Size     00000000 (0)\n+087F59 Filename Length       0032 (50)\n+087F5B Extra Length          0000 (0)\n+087F5D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x628E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x87F5D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0628F9 PAYLOAD               XX\n+087F8F PAYLOAD\n \n-0628FB DATA DESCRIPTOR       08074B50 (134695760)\n-0628FF CRC                   00000000 (0)\n-062903 Compressed Size       00000002 (2)\n-062907 Uncompressed Size     00000000 (0)\n+088D21 DATA DESCRIPTOR       08074B50 (134695760)\n+088D25 CRC                   7F03CBF8 (2130955256)\n+088D29 Compressed Size       00000D92 (3474)\n+088D2D Uncompressed Size     000054E7 (21735)\n \n-06290B LOCAL HEADER #491     04034B50 (67324752)\n-06290F Extract Zip Spec      14 (20) '2.0'\n-062910 Extract OS            00 (0) 'MS-DOS'\n-062911 General Purpose Flag  0808 (2056)\n+088D31 LOCAL HEADER #491     04034B50 (67324752)\n+088D35 Extract Zip Spec      14 (20) '2.0'\n+088D36 Extract OS            00 (0) 'MS-DOS'\n+088D37 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-062913 Compression Method    0008 (8) 'Deflated'\n-062915 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-062919 CRC                   00000000 (0)\n-06291D Compressed Size       00000000 (0)\n-062921 Uncompressed Size     00000000 (0)\n-062925 Filename Length       0030 (48)\n-062927 Extra Length          0000 (0)\n-062929 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+088D39 Compression Method    0008 (8) 'Deflated'\n+088D3B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+088D3F CRC                   00000000 (0)\n+088D43 Compressed Size       00000000 (0)\n+088D47 Uncompressed Size     00000000 (0)\n+088D4B Filename Length       002D (45)\n+088D4D Extra Length          0000 (0)\n+088D4F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x62929: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x88D4F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-062959 PAYLOAD\n+088D7C PAYLOAD\n \n-062E60 DATA DESCRIPTOR       08074B50 (134695760)\n-062E64 CRC                   4059C95D (1079626077)\n-062E68 Compressed Size       00000507 (1287)\n-062E6C Uncompressed Size     000010F7 (4343)\n+089132 DATA DESCRIPTOR       08074B50 (134695760)\n+089136 CRC                   255BC4C2 (626771138)\n+08913A Compressed Size       000003B6 (950)\n+08913E Uncompressed Size     00000985 (2437)\n \n-062E70 LOCAL HEADER #492     04034B50 (67324752)\n-062E74 Extract Zip Spec      14 (20) '2.0'\n-062E75 Extract OS            00 (0) 'MS-DOS'\n-062E76 General Purpose Flag  0808 (2056)\n+089142 LOCAL HEADER #492     04034B50 (67324752)\n+089146 Extract Zip Spec      14 (20) '2.0'\n+089147 Extract OS            00 (0) 'MS-DOS'\n+089148 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-062E78 Compression Method    0008 (8) 'Deflated'\n-062E7A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-062E7E CRC                   00000000 (0)\n-062E82 Compressed Size       00000000 (0)\n-062E86 Uncompressed Size     00000000 (0)\n-062E8A Filename Length       0029 (41)\n-062E8C Extra Length          0000 (0)\n-062E8E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+08914A Compression Method    0008 (8) 'Deflated'\n+08914C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+089150 CRC                   00000000 (0)\n+089154 Compressed Size       00000000 (0)\n+089158 Uncompressed Size     00000000 (0)\n+08915C Filename Length       0029 (41)\n+08915E Extra Length          0000 (0)\n+089160 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x62E8E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x89160: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-062EB7 PAYLOAD\n+089189 PAYLOAD\n \n-063165 DATA DESCRIPTOR       08074B50 (134695760)\n-063169 CRC                   BF971C06 (3214351366)\n-06316D Compressed Size       000002AE (686)\n-063171 Uncompressed Size     00000552 (1362)\n+08941F DATA DESCRIPTOR       08074B50 (134695760)\n+089423 CRC                   40170699 (1075250841)\n+089427 Compressed Size       00000296 (662)\n+08942B Uncompressed Size     0000059E (1438)\n \n-063175 LOCAL HEADER #493     04034B50 (67324752)\n-063179 Extract Zip Spec      14 (20) '2.0'\n-06317A Extract OS            00 (0) 'MS-DOS'\n-06317B General Purpose Flag  0808 (2056)\n+08942F LOCAL HEADER #493     04034B50 (67324752)\n+089433 Extract Zip Spec      14 (20) '2.0'\n+089434 Extract OS            00 (0) 'MS-DOS'\n+089435 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06317D Compression Method    0008 (8) 'Deflated'\n-06317F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-063183 CRC                   00000000 (0)\n-063187 Compressed Size       00000000 (0)\n-06318B Uncompressed Size     00000000 (0)\n-06318F Filename Length       0026 (38)\n-063191 Extra Length          0000 (0)\n-063193 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+089437 Compression Method    0008 (8) 'Deflated'\n+089439 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08943D CRC                   00000000 (0)\n+089441 Compressed Size       00000000 (0)\n+089445 Uncompressed Size     00000000 (0)\n+089449 Filename Length       0038 (56)\n+08944B Extra Length          0000 (0)\n+08944D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x63193: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8944D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0631B9 PAYLOAD\n+089485 PAYLOAD\n \n-063625 DATA DESCRIPTOR       08074B50 (134695760)\n-063629 CRC                   1CCCA507 (483173639)\n-06362D Compressed Size       0000046C (1132)\n-063631 Uncompressed Size     000009AB (2475)\n+08996B DATA DESCRIPTOR       08074B50 (134695760)\n+08996F CRC                   A604EAF8 (2785340152)\n+089973 Compressed Size       000004E6 (1254)\n+089977 Uncompressed Size     00001249 (4681)\n \n-063635 LOCAL HEADER #494     04034B50 (67324752)\n-063639 Extract Zip Spec      14 (20) '2.0'\n-06363A Extract OS            00 (0) 'MS-DOS'\n-06363B General Purpose Flag  0808 (2056)\n+08997B LOCAL HEADER #494     04034B50 (67324752)\n+08997F Extract Zip Spec      14 (20) '2.0'\n+089980 Extract OS            00 (0) 'MS-DOS'\n+089981 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06363D Compression Method    0008 (8) 'Deflated'\n-06363F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-063643 CRC                   00000000 (0)\n-063647 Compressed Size       00000000 (0)\n-06364B Uncompressed Size     00000000 (0)\n-06364F Filename Length       0021 (33)\n-063651 Extra Length          0000 (0)\n-063653 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+089983 Compression Method    0008 (8) 'Deflated'\n+089985 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+089989 CRC                   00000000 (0)\n+08998D Compressed Size       00000000 (0)\n+089991 Uncompressed Size     00000000 (0)\n+089995 Filename Length       002C (44)\n+089997 Extra Length          0000 (0)\n+089999 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x63653: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x89999: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-063674 PAYLOAD\n+0899C5 PAYLOAD\n \n-0638D8 DATA DESCRIPTOR       08074B50 (134695760)\n-0638DC CRC                   0622E0A0 (102949024)\n-0638E0 Compressed Size       00000264 (612)\n-0638E4 Uncompressed Size     0000049F (1183)\n+08A0F6 DATA DESCRIPTOR       08074B50 (134695760)\n+08A0FA CRC                   D7EB77B9 (3622533049)\n+08A0FE Compressed Size       00000731 (1841)\n+08A102 Uncompressed Size     0000137A (4986)\n \n-0638E8 LOCAL HEADER #495     04034B50 (67324752)\n-0638EC Extract Zip Spec      14 (20) '2.0'\n-0638ED Extract OS            00 (0) 'MS-DOS'\n-0638EE General Purpose Flag  0808 (2056)\n+08A106 LOCAL HEADER #495     04034B50 (67324752)\n+08A10A Extract Zip Spec      14 (20) '2.0'\n+08A10B Extract OS            00 (0) 'MS-DOS'\n+08A10C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0638F0 Compression Method    0008 (8) 'Deflated'\n-0638F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0638F6 CRC                   00000000 (0)\n-0638FA Compressed Size       00000000 (0)\n-0638FE Uncompressed Size     00000000 (0)\n-063902 Filename Length       0027 (39)\n-063904 Extra Length          0000 (0)\n-063906 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+08A10E Compression Method    0008 (8) 'Deflated'\n+08A110 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08A114 CRC                   00000000 (0)\n+08A118 Compressed Size       00000000 (0)\n+08A11C Uncompressed Size     00000000 (0)\n+08A120 Filename Length       0039 (57)\n+08A122 Extra Length          0000 (0)\n+08A124 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x63906: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8A124: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-06392D PAYLOAD\n+08A15D PAYLOAD\n \n-063F7D DATA DESCRIPTOR       08074B50 (134695760)\n-063F81 CRC                   3DF15F74 (1039228788)\n-063F85 Compressed Size       00000650 (1616)\n-063F89 Uncompressed Size     0000229A (8858)\n+08A401 DATA DESCRIPTOR       08074B50 (134695760)\n+08A405 CRC                   7518C2B8 (1964556984)\n+08A409 Compressed Size       000002A4 (676)\n+08A40D Uncompressed Size     00000535 (1333)\n \n-063F8D LOCAL HEADER #496     04034B50 (67324752)\n-063F91 Extract Zip Spec      14 (20) '2.0'\n-063F92 Extract OS            00 (0) 'MS-DOS'\n-063F93 General Purpose Flag  0808 (2056)\n+08A411 LOCAL HEADER #496     04034B50 (67324752)\n+08A415 Extract Zip Spec      14 (20) '2.0'\n+08A416 Extract OS            00 (0) 'MS-DOS'\n+08A417 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-063F95 Compression Method    0008 (8) 'Deflated'\n-063F97 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-063F9B CRC                   00000000 (0)\n-063F9F Compressed Size       00000000 (0)\n-063FA3 Uncompressed Size     00000000 (0)\n-063FA7 Filename Length       0026 (38)\n-063FA9 Extra Length          0000 (0)\n-063FAB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+08A419 Compression Method    0008 (8) 'Deflated'\n+08A41B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08A41F CRC                   00000000 (0)\n+08A423 Compressed Size       00000000 (0)\n+08A427 Uncompressed Size     00000000 (0)\n+08A42B Filename Length       002E (46)\n+08A42D Extra Length          0000 (0)\n+08A42F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x63FAB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8A42F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-063FD1 PAYLOAD\n+08A45D PAYLOAD\n \n-0641F7 DATA DESCRIPTOR       08074B50 (134695760)\n-0641FB CRC                   52712A03 (1383148035)\n-0641FF Compressed Size       00000226 (550)\n-064203 Uncompressed Size     000003E8 (1000)\n+08AB08 DATA DESCRIPTOR       08074B50 (134695760)\n+08AB0C CRC                   FC613C2C (4234230828)\n+08AB10 Compressed Size       000006AB (1707)\n+08AB14 Uncompressed Size     00001651 (5713)\n \n-064207 LOCAL HEADER #497     04034B50 (67324752)\n-06420B Extract Zip Spec      14 (20) '2.0'\n-06420C Extract OS            00 (0) 'MS-DOS'\n-06420D General Purpose Flag  0808 (2056)\n+08AB18 LOCAL HEADER #497     04034B50 (67324752)\n+08AB1C Extract Zip Spec      14 (20) '2.0'\n+08AB1D Extract OS            00 (0) 'MS-DOS'\n+08AB1E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06420F Compression Method    0008 (8) 'Deflated'\n-064211 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-064215 CRC                   00000000 (0)\n-064219 Compressed Size       00000000 (0)\n-06421D Uncompressed Size     00000000 (0)\n-064221 Filename Length       0020 (32)\n-064223 Extra Length          0000 (0)\n-064225 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+08AB20 Compression Method    0008 (8) 'Deflated'\n+08AB22 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08AB26 CRC                   00000000 (0)\n+08AB2A Compressed Size       00000000 (0)\n+08AB2E Uncompressed Size     00000000 (0)\n+08AB32 Filename Length       002D (45)\n+08AB34 Extra Length          0000 (0)\n+08AB36 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x64225: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8AB36: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-064245 PAYLOAD\n+08AB63 PAYLOAD\n \n-0668A6 DATA DESCRIPTOR       08074B50 (134695760)\n-0668AA CRC                   4B96BF4D (1268170573)\n-0668AE Compressed Size       00002661 (9825)\n-0668B2 Uncompressed Size     00011389 (70537)\n+08BCD3 DATA DESCRIPTOR       08074B50 (134695760)\n+08BCD7 CRC                   75C25786 (1975670662)\n+08BCDB Compressed Size       00001170 (4464)\n+08BCDF Uncompressed Size     00004813 (18451)\n \n-0668B6 LOCAL HEADER #498     04034B50 (67324752)\n-0668BA Extract Zip Spec      14 (20) '2.0'\n-0668BB Extract OS            00 (0) 'MS-DOS'\n-0668BC General Purpose Flag  0808 (2056)\n+08BCE3 LOCAL HEADER #498     04034B50 (67324752)\n+08BCE7 Extract Zip Spec      14 (20) '2.0'\n+08BCE8 Extract OS            00 (0) 'MS-DOS'\n+08BCE9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0668BE Compression Method    0008 (8) 'Deflated'\n-0668C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0668C4 CRC                   00000000 (0)\n-0668C8 Compressed Size       00000000 (0)\n-0668CC Uncompressed Size     00000000 (0)\n-0668D0 Filename Length       0027 (39)\n-0668D2 Extra Length          0000 (0)\n-0668D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+08BCEB Compression Method    0008 (8) 'Deflated'\n+08BCED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08BCF1 CRC                   00000000 (0)\n+08BCF5 Compressed Size       00000000 (0)\n+08BCF9 Uncompressed Size     00000000 (0)\n+08BCFD Filename Length       0032 (50)\n+08BCFF Extra Length          0000 (0)\n+08BD01 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x668D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8BD01: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0668FB PAYLOAD\n+08BD33 PAYLOAD\n \n-06727F DATA DESCRIPTOR       08074B50 (134695760)\n-067283 CRC                   E6F6EE92 (3874942610)\n-067287 Compressed Size       00000984 (2436)\n-06728B Uncompressed Size     00003564 (13668)\n+08C863 DATA DESCRIPTOR       08074B50 (134695760)\n+08C867 CRC                   49173B6A (1226259306)\n+08C86B Compressed Size       00000B30 (2864)\n+08C86F Uncompressed Size     00002D62 (11618)\n \n-06728F LOCAL HEADER #499     04034B50 (67324752)\n-067293 Extract Zip Spec      14 (20) '2.0'\n-067294 Extract OS            00 (0) 'MS-DOS'\n-067295 General Purpose Flag  0808 (2056)\n+08C873 LOCAL HEADER #499     04034B50 (67324752)\n+08C877 Extract Zip Spec      14 (20) '2.0'\n+08C878 Extract OS            00 (0) 'MS-DOS'\n+08C879 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-067297 Compression Method    0008 (8) 'Deflated'\n-067299 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06729D CRC                   00000000 (0)\n-0672A1 Compressed Size       00000000 (0)\n-0672A5 Uncompressed Size     00000000 (0)\n-0672A9 Filename Length       0029 (41)\n-0672AB Extra Length          0000 (0)\n-0672AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+08C87B Compression Method    0008 (8) 'Deflated'\n+08C87D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08C881 CRC                   00000000 (0)\n+08C885 Compressed Size       00000000 (0)\n+08C889 Uncompressed Size     00000000 (0)\n+08C88D Filename Length       0036 (54)\n+08C88F Extra Length          0000 (0)\n+08C891 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x672AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8C891: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0672D6 PAYLOAD\n+08C8C7 PAYLOAD\n \n-067EA9 DATA DESCRIPTOR       08074B50 (134695760)\n-067EAD CRC                   8B1361FF (2333303295)\n-067EB1 Compressed Size       00000BD3 (3027)\n-067EB5 Uncompressed Size     000034A1 (13473)\n+08D199 DATA DESCRIPTOR       08074B50 (134695760)\n+08D19D CRC                   8D8AC97C (2374683004)\n+08D1A1 Compressed Size       000008D2 (2258)\n+08D1A5 Uncompressed Size     00002443 (9283)\n \n-067EB9 LOCAL HEADER #500     04034B50 (67324752)\n-067EBD Extract Zip Spec      14 (20) '2.0'\n-067EBE Extract OS            00 (0) 'MS-DOS'\n-067EBF General Purpose Flag  0808 (2056)\n+08D1A9 LOCAL HEADER #500     04034B50 (67324752)\n+08D1AD Extract Zip Spec      14 (20) '2.0'\n+08D1AE Extract OS            00 (0) 'MS-DOS'\n+08D1AF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-067EC1 Compression Method    0008 (8) 'Deflated'\n-067EC3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-067EC7 CRC                   00000000 (0)\n-067ECB Compressed Size       00000000 (0)\n-067ECF Uncompressed Size     00000000 (0)\n-067ED3 Filename Length       0024 (36)\n-067ED5 Extra Length          0000 (0)\n-067ED7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+08D1B1 Compression Method    0008 (8) 'Deflated'\n+08D1B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08D1B7 CRC                   00000000 (0)\n+08D1BB Compressed Size       00000000 (0)\n+08D1BF Uncompressed Size     00000000 (0)\n+08D1C3 Filename Length       0034 (52)\n+08D1C5 Extra Length          0000 (0)\n+08D1C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x67ED7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8D1C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-067EFB PAYLOAD\n+08D1FB PAYLOAD\n \n-068A7A DATA DESCRIPTOR       08074B50 (134695760)\n-068A7E CRC                   F43D3BE1 (4097653729)\n-068A82 Compressed Size       00000B7F (2943)\n-068A86 Uncompressed Size     00002625 (9765)\n+08D78E DATA DESCRIPTOR       08074B50 (134695760)\n+08D792 CRC                   0EFD7C48 (251493448)\n+08D796 Compressed Size       00000593 (1427)\n+08D79A Uncompressed Size     000011C9 (4553)\n \n-068A8A LOCAL HEADER #501     04034B50 (67324752)\n-068A8E Extract Zip Spec      14 (20) '2.0'\n-068A8F Extract OS            00 (0) 'MS-DOS'\n-068A90 General Purpose Flag  0808 (2056)\n+08D79E LOCAL HEADER #501     04034B50 (67324752)\n+08D7A2 Extract Zip Spec      14 (20) '2.0'\n+08D7A3 Extract OS            00 (0) 'MS-DOS'\n+08D7A4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-068A92 Compression Method    0008 (8) 'Deflated'\n-068A94 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-068A98 CRC                   00000000 (0)\n-068A9C Compressed Size       00000000 (0)\n-068AA0 Uncompressed Size     00000000 (0)\n-068AA4 Filename Length       0021 (33)\n-068AA6 Extra Length          0000 (0)\n-068AA8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+08D7A6 Compression Method    0008 (8) 'Deflated'\n+08D7A8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08D7AC CRC                   00000000 (0)\n+08D7B0 Compressed Size       00000000 (0)\n+08D7B4 Uncompressed Size     00000000 (0)\n+08D7B8 Filename Length       002E (46)\n+08D7BA Extra Length          0000 (0)\n+08D7BC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x68AA8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8D7BC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-068AC9 PAYLOAD               XX\n+08D7EA PAYLOAD\n \n-068ACB DATA DESCRIPTOR       08074B50 (134695760)\n-068ACF CRC                   00000000 (0)\n-068AD3 Compressed Size       00000002 (2)\n-068AD7 Uncompressed Size     00000000 (0)\n+08E460 DATA DESCRIPTOR       08074B50 (134695760)\n+08E464 CRC                   8CFD4A70 (2365409904)\n+08E468 Compressed Size       00000C76 (3190)\n+08E46C Uncompressed Size     00002FB5 (12213)\n \n-068ADB LOCAL HEADER #502     04034B50 (67324752)\n-068ADF Extract Zip Spec      14 (20) '2.0'\n-068AE0 Extract OS            00 (0) 'MS-DOS'\n-068AE1 General Purpose Flag  0808 (2056)\n+08E470 LOCAL HEADER #502     04034B50 (67324752)\n+08E474 Extract Zip Spec      14 (20) '2.0'\n+08E475 Extract OS            00 (0) 'MS-DOS'\n+08E476 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-068AE3 Compression Method    0008 (8) 'Deflated'\n-068AE5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-068AE9 CRC                   00000000 (0)\n-068AED Compressed Size       00000000 (0)\n-068AF1 Uncompressed Size     00000000 (0)\n-068AF5 Filename Length       0036 (54)\n-068AF7 Extra Length          0000 (0)\n-068AF9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+08E478 Compression Method    0008 (8) 'Deflated'\n+08E47A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08E47E CRC                   00000000 (0)\n+08E482 Compressed Size       00000000 (0)\n+08E486 Uncompressed Size     00000000 (0)\n+08E48A Filename Length       002E (46)\n+08E48C Extra Length          0000 (0)\n+08E48E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x68AF9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8E48E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-068B2F PAYLOAD\n+08E4BC PAYLOAD\n \n-068DAA DATA DESCRIPTOR       08074B50 (134695760)\n-068DAE CRC                   62810B39 (1652624185)\n-068DB2 Compressed Size       0000027B (635)\n-068DB6 Uncompressed Size     00000554 (1364)\n+08E837 DATA DESCRIPTOR       08074B50 (134695760)\n+08E83B CRC                   F982D49E (4186100894)\n+08E83F Compressed Size       0000037B (891)\n+08E843 Uncompressed Size     000008F6 (2294)\n \n-068DBA LOCAL HEADER #503     04034B50 (67324752)\n-068DBE Extract Zip Spec      14 (20) '2.0'\n-068DBF Extract OS            00 (0) 'MS-DOS'\n-068DC0 General Purpose Flag  0808 (2056)\n+08E847 LOCAL HEADER #503     04034B50 (67324752)\n+08E84B Extract Zip Spec      14 (20) '2.0'\n+08E84C Extract OS            00 (0) 'MS-DOS'\n+08E84D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-068DC2 Compression Method    0008 (8) 'Deflated'\n-068DC4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-068DC8 CRC                   00000000 (0)\n-068DCC Compressed Size       00000000 (0)\n-068DD0 Uncompressed Size     00000000 (0)\n-068DD4 Filename Length       0038 (56)\n-068DD6 Extra Length          0000 (0)\n-068DD8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+08E84F Compression Method    0008 (8) 'Deflated'\n+08E851 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08E855 CRC                   00000000 (0)\n+08E859 Compressed Size       00000000 (0)\n+08E85D Uncompressed Size     00000000 (0)\n+08E861 Filename Length       0030 (48)\n+08E863 Extra Length          0000 (0)\n+08E865 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x68DD8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8E865: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-068E10 PAYLOAD\n+08E895 PAYLOAD\n \n-06946D DATA DESCRIPTOR       08074B50 (134695760)\n-069471 CRC                   F49AF035 (4103794741)\n-069475 Compressed Size       0000065D (1629)\n-069479 Uncompressed Size     000018A5 (6309)\n+08EC02 DATA DESCRIPTOR       08074B50 (134695760)\n+08EC06 CRC                   831A7179 (2199548281)\n+08EC0A Compressed Size       0000036D (877)\n+08EC0E Uncompressed Size     0000080F (2063)\n \n-06947D LOCAL HEADER #504     04034B50 (67324752)\n-069481 Extract Zip Spec      14 (20) '2.0'\n-069482 Extract OS            00 (0) 'MS-DOS'\n-069483 General Purpose Flag  0808 (2056)\n+08EC12 LOCAL HEADER #504     04034B50 (67324752)\n+08EC16 Extract Zip Spec      14 (20) '2.0'\n+08EC17 Extract OS            00 (0) 'MS-DOS'\n+08EC18 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-069485 Compression Method    0008 (8) 'Deflated'\n-069487 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06948B CRC                   00000000 (0)\n-06948F Compressed Size       00000000 (0)\n-069493 Uncompressed Size     00000000 (0)\n-069497 Filename Length       003B (59)\n-069499 Extra Length          0000 (0)\n-06949B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+08EC1A Compression Method    0008 (8) 'Deflated'\n+08EC1C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08EC20 CRC                   00000000 (0)\n+08EC24 Compressed Size       00000000 (0)\n+08EC28 Uncompressed Size     00000000 (0)\n+08EC2C Filename Length       002F (47)\n+08EC2E Extra Length          0000 (0)\n+08EC30 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6949B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8EC30: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0694D6 PAYLOAD\n+08EC5F PAYLOAD\n \n-06A3C8 DATA DESCRIPTOR       08074B50 (134695760)\n-06A3CC CRC                   11EE6DF6 (300838390)\n-06A3D0 Compressed Size       00000EF2 (3826)\n-06A3D4 Uncompressed Size     00004ECE (20174)\n+08F2AD DATA DESCRIPTOR       08074B50 (134695760)\n+08F2B1 CRC                   239B6511 (597386513)\n+08F2B5 Compressed Size       0000064E (1614)\n+08F2B9 Uncompressed Size     000014C9 (5321)\n \n-06A3D8 LOCAL HEADER #505     04034B50 (67324752)\n-06A3DC Extract Zip Spec      14 (20) '2.0'\n-06A3DD Extract OS            00 (0) 'MS-DOS'\n-06A3DE General Purpose Flag  0808 (2056)\n+08F2BD LOCAL HEADER #505     04034B50 (67324752)\n+08F2C1 Extract Zip Spec      14 (20) '2.0'\n+08F2C2 Extract OS            00 (0) 'MS-DOS'\n+08F2C3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06A3E0 Compression Method    0008 (8) 'Deflated'\n-06A3E2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06A3E6 CRC                   00000000 (0)\n-06A3EA Compressed Size       00000000 (0)\n-06A3EE Uncompressed Size     00000000 (0)\n-06A3F2 Filename Length       0021 (33)\n-06A3F4 Extra Length          0000 (0)\n-06A3F6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+08F2C5 Compression Method    0008 (8) 'Deflated'\n+08F2C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08F2CB CRC                   00000000 (0)\n+08F2CF Compressed Size       00000000 (0)\n+08F2D3 Uncompressed Size     00000000 (0)\n+08F2D7 Filename Length       002D (45)\n+08F2D9 Extra Length          0000 (0)\n+08F2DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6A3F6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8F2DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-06A417 PAYLOAD               XX\n+08F308 PAYLOAD\n \n-06A419 DATA DESCRIPTOR       08074B50 (134695760)\n-06A41D CRC                   00000000 (0)\n-06A421 Compressed Size       00000002 (2)\n-06A425 Uncompressed Size     00000000 (0)\n+08F7DA DATA DESCRIPTOR       08074B50 (134695760)\n+08F7DE CRC                   CB16D394 (3407270804)\n+08F7E2 Compressed Size       000004D2 (1234)\n+08F7E6 Uncompressed Size     000013CF (5071)\n \n-06A429 LOCAL HEADER #506     04034B50 (67324752)\n-06A42D Extract Zip Spec      14 (20) '2.0'\n-06A42E Extract OS            00 (0) 'MS-DOS'\n-06A42F General Purpose Flag  0808 (2056)\n+08F7EA LOCAL HEADER #506     04034B50 (67324752)\n+08F7EE Extract Zip Spec      14 (20) '2.0'\n+08F7EF Extract OS            00 (0) 'MS-DOS'\n+08F7F0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06A431 Compression Method    0008 (8) 'Deflated'\n-06A433 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06A437 CRC                   00000000 (0)\n-06A43B Compressed Size       00000000 (0)\n-06A43F Uncompressed Size     00000000 (0)\n-06A443 Filename Length       0034 (52)\n-06A445 Extra Length          0000 (0)\n-06A447 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+08F7F2 Compression Method    0008 (8) 'Deflated'\n+08F7F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08F7F8 CRC                   00000000 (0)\n+08F7FC Compressed Size       00000000 (0)\n+08F800 Uncompressed Size     00000000 (0)\n+08F804 Filename Length       0029 (41)\n+08F806 Extra Length          0000 (0)\n+08F808 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6A447: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8F808: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-06A47B PAYLOAD\n+08F831 PAYLOAD\n \n-06AF74 DATA DESCRIPTOR       08074B50 (134695760)\n-06AF78 CRC                   87F19404 (2280756228)\n-06AF7C Compressed Size       00000AF9 (2809)\n-06AF80 Uncompressed Size     000032DF (13023)\n+08FA7F DATA DESCRIPTOR       08074B50 (134695760)\n+08FA83 CRC                   4E3FC833 (1312802867)\n+08FA87 Compressed Size       0000024E (590)\n+08FA8B Uncompressed Size     00000443 (1091)\n \n-06AF84 LOCAL HEADER #507     04034B50 (67324752)\n-06AF88 Extract Zip Spec      14 (20) '2.0'\n-06AF89 Extract OS            00 (0) 'MS-DOS'\n-06AF8A General Purpose Flag  0808 (2056)\n+08FA8F LOCAL HEADER #507     04034B50 (67324752)\n+08FA93 Extract Zip Spec      14 (20) '2.0'\n+08FA94 Extract OS            00 (0) 'MS-DOS'\n+08FA95 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06AF8C Compression Method    0008 (8) 'Deflated'\n-06AF8E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06AF92 CRC                   00000000 (0)\n-06AF96 Compressed Size       00000000 (0)\n-06AF9A Uncompressed Size     00000000 (0)\n-06AF9E Filename Length       003F (63)\n-06AFA0 Extra Length          0000 (0)\n-06AFA2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+08FA97 Compression Method    0008 (8) 'Deflated'\n+08FA99 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+08FA9D CRC                   00000000 (0)\n+08FAA1 Compressed Size       00000000 (0)\n+08FAA5 Uncompressed Size     00000000 (0)\n+08FAA9 Filename Length       002A (42)\n+08FAAB Extra Length          0000 (0)\n+08FAAD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6AFA2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x8FAAD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-06AFE1 PAYLOAD\n+08FAD7 PAYLOAD\n \n-06B4B6 DATA DESCRIPTOR       08074B50 (134695760)\n-06B4BA CRC                   AA2CE6AF (2855069359)\n-06B4BE Compressed Size       000004D5 (1237)\n-06B4C2 Uncompressed Size     00000DB2 (3506)\n+0902EC DATA DESCRIPTOR       08074B50 (134695760)\n+0902F0 CRC                   7A9C058A (2057045386)\n+0902F4 Compressed Size       00000815 (2069)\n+0902F8 Uncompressed Size     00002117 (8471)\n \n-06B4C6 LOCAL HEADER #508     04034B50 (67324752)\n-06B4CA Extract Zip Spec      14 (20) '2.0'\n-06B4CB Extract OS            00 (0) 'MS-DOS'\n-06B4CC General Purpose Flag  0808 (2056)\n+0902FC LOCAL HEADER #508     04034B50 (67324752)\n+090300 Extract Zip Spec      14 (20) '2.0'\n+090301 Extract OS            00 (0) 'MS-DOS'\n+090302 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06B4CE Compression Method    0008 (8) 'Deflated'\n-06B4D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06B4D4 CRC                   00000000 (0)\n-06B4D8 Compressed Size       00000000 (0)\n-06B4DC Uncompressed Size     00000000 (0)\n-06B4E0 Filename Length       002B (43)\n-06B4E2 Extra Length          0000 (0)\n-06B4E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+090304 Compression Method    0008 (8) 'Deflated'\n+090306 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+09030A CRC                   00000000 (0)\n+09030E Compressed Size       00000000 (0)\n+090312 Uncompressed Size     00000000 (0)\n+090316 Filename Length       002A (42)\n+090318 Extra Length          0000 (0)\n+09031A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6B4E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x9031A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-06B50F PAYLOAD\n+090344 PAYLOAD\n \n-06BD61 DATA DESCRIPTOR       08074B50 (134695760)\n-06BD65 CRC                   4F0E9D5D (1326357853)\n-06BD69 Compressed Size       00000852 (2130)\n-06BD6D Uncompressed Size     00002017 (8215)\n+090842 DATA DESCRIPTOR       08074B50 (134695760)\n+090846 CRC                   A4F19F22 (2767298338)\n+09084A Compressed Size       000004FE (1278)\n+09084E Uncompressed Size     0000104C (4172)\n \n-06BD71 LOCAL HEADER #509     04034B50 (67324752)\n-06BD75 Extract Zip Spec      14 (20) '2.0'\n-06BD76 Extract OS            00 (0) 'MS-DOS'\n-06BD77 General Purpose Flag  0808 (2056)\n+090852 LOCAL HEADER #509     04034B50 (67324752)\n+090856 Extract Zip Spec      14 (20) '2.0'\n+090857 Extract OS            00 (0) 'MS-DOS'\n+090858 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06BD79 Compression Method    0008 (8) 'Deflated'\n-06BD7B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06BD7F CRC                   00000000 (0)\n-06BD83 Compressed Size       00000000 (0)\n-06BD87 Uncompressed Size     00000000 (0)\n-06BD8B Filename Length       003B (59)\n-06BD8D Extra Length          0000 (0)\n-06BD8F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+09085A Compression Method    0008 (8) 'Deflated'\n+09085C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+090860 CRC                   00000000 (0)\n+090864 Compressed Size       00000000 (0)\n+090868 Uncompressed Size     00000000 (0)\n+09086C Filename Length       002B (43)\n+09086E Extra Length          0000 (0)\n+090870 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6BD8F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x90870: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-06BDCA PAYLOAD\n+09089B PAYLOAD\n \n-06C040 DATA DESCRIPTOR       08074B50 (134695760)\n-06C044 CRC                   35B34ECC (900943564)\n-06C048 Compressed Size       00000276 (630)\n-06C04C Uncompressed Size     0000049E (1182)\n+0911F9 DATA DESCRIPTOR       08074B50 (134695760)\n+0911FD CRC                   CBBE6E80 (3418254976)\n+091201 Compressed Size       0000095E (2398)\n+091205 Uncompressed Size     00002283 (8835)\n \n-06C050 LOCAL HEADER #510     04034B50 (67324752)\n-06C054 Extract Zip Spec      14 (20) '2.0'\n-06C055 Extract OS            00 (0) 'MS-DOS'\n-06C056 General Purpose Flag  0808 (2056)\n+091209 LOCAL HEADER #510     04034B50 (67324752)\n+09120D Extract Zip Spec      14 (20) '2.0'\n+09120E Extract OS            00 (0) 'MS-DOS'\n+09120F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06C058 Compression Method    0008 (8) 'Deflated'\n-06C05A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06C05E CRC                   00000000 (0)\n-06C062 Compressed Size       00000000 (0)\n-06C066 Uncompressed Size     00000000 (0)\n-06C06A Filename Length       003D (61)\n-06C06C Extra Length          0000 (0)\n-06C06E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+091211 Compression Method    0008 (8) 'Deflated'\n+091213 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+091217 CRC                   00000000 (0)\n+09121B Compressed Size       00000000 (0)\n+09121F Uncompressed Size     00000000 (0)\n+091223 Filename Length       002B (43)\n+091225 Extra Length          0000 (0)\n+091227 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6C06E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x91227: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-06C0AB PAYLOAD\n+091252 PAYLOAD\n \n-06C320 DATA DESCRIPTOR       08074B50 (134695760)\n-06C324 CRC                   AE36D6DB (2922829531)\n-06C328 Compressed Size       00000275 (629)\n-06C32C Uncompressed Size     000004A6 (1190)\n+091631 DATA DESCRIPTOR       08074B50 (134695760)\n+091635 CRC                   139F375C (329201500)\n+091639 Compressed Size       000003DF (991)\n+09163D Uncompressed Size     00000BC2 (3010)\n \n-06C330 LOCAL HEADER #511     04034B50 (67324752)\n-06C334 Extract Zip Spec      14 (20) '2.0'\n-06C335 Extract OS            00 (0) 'MS-DOS'\n-06C336 General Purpose Flag  0808 (2056)\n+091641 LOCAL HEADER #511     04034B50 (67324752)\n+091645 Extract Zip Spec      14 (20) '2.0'\n+091646 Extract OS            00 (0) 'MS-DOS'\n+091647 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06C338 Compression Method    0008 (8) 'Deflated'\n-06C33A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06C33E CRC                   00000000 (0)\n-06C342 Compressed Size       00000000 (0)\n-06C346 Uncompressed Size     00000000 (0)\n-06C34A Filename Length       002B (43)\n-06C34C Extra Length          0000 (0)\n-06C34E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+091649 Compression Method    0008 (8) 'Deflated'\n+09164B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+09164F CRC                   00000000 (0)\n+091653 Compressed Size       00000000 (0)\n+091657 Uncompressed Size     00000000 (0)\n+09165B Filename Length       0026 (38)\n+09165D Extra Length          0000 (0)\n+09165F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6C34E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x9165F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-06C379 PAYLOAD\n+091685 PAYLOAD\n \n-06CFBC DATA DESCRIPTOR       08074B50 (134695760)\n-06CFC0 CRC                   693DBCBA (1765653690)\n-06CFC4 Compressed Size       00000C43 (3139)\n-06CFC8 Uncompressed Size     00002F4D (12109)\n+091A94 DATA DESCRIPTOR       08074B50 (134695760)\n+091A98 CRC                   C39767CB (3281479627)\n+091A9C Compressed Size       0000040F (1039)\n+091AA0 Uncompressed Size     00000DAA (3498)\n \n-06CFCC LOCAL HEADER #512     04034B50 (67324752)\n-06CFD0 Extract Zip Spec      14 (20) '2.0'\n-06CFD1 Extract OS            00 (0) 'MS-DOS'\n-06CFD2 General Purpose Flag  0808 (2056)\n+091AA4 LOCAL HEADER #512     04034B50 (67324752)\n+091AA8 Extract Zip Spec      14 (20) '2.0'\n+091AA9 Extract OS            00 (0) 'MS-DOS'\n+091AAA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06CFD4 Compression Method    0008 (8) 'Deflated'\n-06CFD6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06CFDA CRC                   00000000 (0)\n-06CFDE Compressed Size       00000000 (0)\n-06CFE2 Uncompressed Size     00000000 (0)\n-06CFE6 Filename Length       002D (45)\n-06CFE8 Extra Length          0000 (0)\n-06CFEA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+091AAC Compression Method    0008 (8) 'Deflated'\n+091AAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+091AB2 CRC                   00000000 (0)\n+091AB6 Compressed Size       00000000 (0)\n+091ABA Uncompressed Size     00000000 (0)\n+091ABE Filename Length       002C (44)\n+091AC0 Extra Length          0000 (0)\n+091AC2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6CFEA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x91AC2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-06D017 PAYLOAD\n+091AEE PAYLOAD\n \n-06DF8B DATA DESCRIPTOR       08074B50 (134695760)\n-06DF8F CRC                   44BCC62B (1153222187)\n-06DF93 Compressed Size       00000F74 (3956)\n-06DF97 Uncompressed Size     00004608 (17928)\n+091DF5 DATA DESCRIPTOR       08074B50 (134695760)\n+091DF9 CRC                   0C719C80 (208772224)\n+091DFD Compressed Size       00000307 (775)\n+091E01 Uncompressed Size     000010C1 (4289)\n \n-06DF9B LOCAL HEADER #513     04034B50 (67324752)\n-06DF9F Extract Zip Spec      14 (20) '2.0'\n-06DFA0 Extract OS            00 (0) 'MS-DOS'\n-06DFA1 General Purpose Flag  0808 (2056)\n+091E05 LOCAL HEADER #513     04034B50 (67324752)\n+091E09 Extract Zip Spec      14 (20) '2.0'\n+091E0A Extract OS            00 (0) 'MS-DOS'\n+091E0B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06DFA3 Compression Method    0008 (8) 'Deflated'\n-06DFA5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06DFA9 CRC                   00000000 (0)\n-06DFAD Compressed Size       00000000 (0)\n-06DFB1 Uncompressed Size     00000000 (0)\n-06DFB5 Filename Length       0021 (33)\n-06DFB7 Extra Length          0000 (0)\n-06DFB9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+091E0D Compression Method    0008 (8) 'Deflated'\n+091E0F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+091E13 CRC                   00000000 (0)\n+091E17 Compressed Size       00000000 (0)\n+091E1B Uncompressed Size     00000000 (0)\n+091E1F Filename Length       002A (42)\n+091E21 Extra Length          0000 (0)\n+091E23 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6DFB9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x91E23: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-06DFDA PAYLOAD               XX\n+091E4D PAYLOAD\n \n-06DFDC DATA DESCRIPTOR       08074B50 (134695760)\n-06DFE0 CRC                   00000000 (0)\n-06DFE4 Compressed Size       00000002 (2)\n-06DFE8 Uncompressed Size     00000000 (0)\n+09228E DATA DESCRIPTOR       08074B50 (134695760)\n+092292 CRC                   4A73FA6D (1249114733)\n+092296 Compressed Size       00000441 (1089)\n+09229A Uncompressed Size     000010A2 (4258)\n \n-06DFEC LOCAL HEADER #514     04034B50 (67324752)\n-06DFF0 Extract Zip Spec      14 (20) '2.0'\n-06DFF1 Extract OS            00 (0) 'MS-DOS'\n-06DFF2 General Purpose Flag  0808 (2056)\n+09229E LOCAL HEADER #514     04034B50 (67324752)\n+0922A2 Extract Zip Spec      14 (20) '2.0'\n+0922A3 Extract OS            00 (0) 'MS-DOS'\n+0922A4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06DFF4 Compression Method    0008 (8) 'Deflated'\n-06DFF6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06DFFA CRC                   00000000 (0)\n-06DFFE Compressed Size       00000000 (0)\n-06E002 Uncompressed Size     00000000 (0)\n-06E006 Filename Length       002E (46)\n-06E008 Extra Length          0000 (0)\n-06E00A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0922A6 Compression Method    0008 (8) 'Deflated'\n+0922A8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0922AC CRC                   00000000 (0)\n+0922B0 Compressed Size       00000000 (0)\n+0922B4 Uncompressed Size     00000000 (0)\n+0922B8 Filename Length       002E (46)\n+0922BA Extra Length          0000 (0)\n+0922BC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6E00A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x922BC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-06E038 PAYLOAD\n+0922EA PAYLOAD\n \n-06E2C7 DATA DESCRIPTOR       08074B50 (134695760)\n-06E2CB CRC                   01EEDE5E (32431710)\n-06E2CF Compressed Size       0000028F (655)\n-06E2D3 Uncompressed Size     000004E7 (1255)\n+092625 DATA DESCRIPTOR       08074B50 (134695760)\n+092629 CRC                   FE0FBB73 (4262443891)\n+09262D Compressed Size       0000033B (827)\n+092631 Uncompressed Size     0000099D (2461)\n \n-06E2D7 LOCAL HEADER #515     04034B50 (67324752)\n-06E2DB Extract Zip Spec      14 (20) '2.0'\n-06E2DC Extract OS            00 (0) 'MS-DOS'\n-06E2DD General Purpose Flag  0808 (2056)\n+092635 LOCAL HEADER #515     04034B50 (67324752)\n+092639 Extract Zip Spec      14 (20) '2.0'\n+09263A Extract OS            00 (0) 'MS-DOS'\n+09263B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06E2DF Compression Method    0008 (8) 'Deflated'\n-06E2E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06E2E5 CRC                   00000000 (0)\n-06E2E9 Compressed Size       00000000 (0)\n-06E2ED Uncompressed Size     00000000 (0)\n-06E2F1 Filename Length       0029 (41)\n-06E2F3 Extra Length          0000 (0)\n-06E2F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+09263D Compression Method    0008 (8) 'Deflated'\n+09263F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+092643 CRC                   00000000 (0)\n+092647 Compressed Size       00000000 (0)\n+09264B Uncompressed Size     00000000 (0)\n+09264F Filename Length       0033 (51)\n+092651 Extra Length          0000 (0)\n+092653 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6E2F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x92653: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-06E31E PAYLOAD               XX\n+092686 PAYLOAD\n \n-06E320 DATA DESCRIPTOR       08074B50 (134695760)\n-06E324 CRC                   00000000 (0)\n-06E328 Compressed Size       00000002 (2)\n-06E32C Uncompressed Size     00000000 (0)\n+092A7B DATA DESCRIPTOR       08074B50 (134695760)\n+092A7F CRC                   F18EE811 (4052674577)\n+092A83 Compressed Size       000003F5 (1013)\n+092A87 Uncompressed Size     00000980 (2432)\n \n-06E330 LOCAL HEADER #516     04034B50 (67324752)\n-06E334 Extract Zip Spec      14 (20) '2.0'\n-06E335 Extract OS            00 (0) 'MS-DOS'\n-06E336 General Purpose Flag  0808 (2056)\n+092A8B LOCAL HEADER #516     04034B50 (67324752)\n+092A8F Extract Zip Spec      14 (20) '2.0'\n+092A90 Extract OS            00 (0) 'MS-DOS'\n+092A91 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06E338 Compression Method    0008 (8) 'Deflated'\n-06E33A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06E33E CRC                   00000000 (0)\n-06E342 Compressed Size       00000000 (0)\n-06E346 Uncompressed Size     00000000 (0)\n-06E34A Filename Length       003E (62)\n-06E34C Extra Length          0000 (0)\n-06E34E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+092A93 Compression Method    0008 (8) 'Deflated'\n+092A95 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+092A99 CRC                   00000000 (0)\n+092A9D Compressed Size       00000000 (0)\n+092AA1 Uncompressed Size     00000000 (0)\n+092AA5 Filename Length       002E (46)\n+092AA7 Extra Length          0000 (0)\n+092AA9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6E34E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x92AA9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-06E38C PAYLOAD\n+092AD7 PAYLOAD\n \n-06E81C DATA DESCRIPTOR       08074B50 (134695760)\n-06E820 CRC                   20854F04 (545607428)\n-06E824 Compressed Size       00000490 (1168)\n-06E828 Uncompressed Size     00000B1B (2843)\n+093772 DATA DESCRIPTOR       08074B50 (134695760)\n+093776 CRC                   3744AF68 (927248232)\n+09377A Compressed Size       00000C9B (3227)\n+09377E Uncompressed Size     00003B50 (15184)\n \n-06E82C LOCAL HEADER #517     04034B50 (67324752)\n-06E830 Extract Zip Spec      14 (20) '2.0'\n-06E831 Extract OS            00 (0) 'MS-DOS'\n-06E832 General Purpose Flag  0808 (2056)\n+093782 LOCAL HEADER #517     04034B50 (67324752)\n+093786 Extract Zip Spec      14 (20) '2.0'\n+093787 Extract OS            00 (0) 'MS-DOS'\n+093788 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06E834 Compression Method    0008 (8) 'Deflated'\n-06E836 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06E83A CRC                   00000000 (0)\n-06E83E Compressed Size       00000000 (0)\n-06E842 Uncompressed Size     00000000 (0)\n-06E846 Filename Length       003E (62)\n-06E848 Extra Length          0000 (0)\n-06E84A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+09378A Compression Method    0008 (8) 'Deflated'\n+09378C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+093790 CRC                   00000000 (0)\n+093794 Compressed Size       00000000 (0)\n+093798 Uncompressed Size     00000000 (0)\n+09379C Filename Length       0035 (53)\n+09379E Extra Length          0000 (0)\n+0937A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6E84A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x937A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-06E888 PAYLOAD\n+0937D5 PAYLOAD\n \n-06EBC0 DATA DESCRIPTOR       08074B50 (134695760)\n-06EBC4 CRC                   D19D012A (3516727594)\n-06EBC8 Compressed Size       00000338 (824)\n-06EBCC Uncompressed Size     00000733 (1843)\n+093B5B DATA DESCRIPTOR       08074B50 (134695760)\n+093B5F CRC                   A4EA9AD2 (2766838482)\n+093B63 Compressed Size       00000386 (902)\n+093B67 Uncompressed Size     0000085B (2139)\n \n-06EBD0 LOCAL HEADER #518     04034B50 (67324752)\n-06EBD4 Extract Zip Spec      14 (20) '2.0'\n-06EBD5 Extract OS            00 (0) 'MS-DOS'\n-06EBD6 General Purpose Flag  0808 (2056)\n+093B6B LOCAL HEADER #518     04034B50 (67324752)\n+093B6F Extract Zip Spec      14 (20) '2.0'\n+093B70 Extract OS            00 (0) 'MS-DOS'\n+093B71 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06EBD8 Compression Method    0008 (8) 'Deflated'\n-06EBDA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06EBDE CRC                   00000000 (0)\n-06EBE2 Compressed Size       00000000 (0)\n-06EBE6 Uncompressed Size     00000000 (0)\n-06EBEA Filename Length       0038 (56)\n-06EBEC Extra Length          0000 (0)\n-06EBEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+093B73 Compression Method    0008 (8) 'Deflated'\n+093B75 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+093B79 CRC                   00000000 (0)\n+093B7D Compressed Size       00000000 (0)\n+093B81 Uncompressed Size     00000000 (0)\n+093B85 Filename Length       002B (43)\n+093B87 Extra Length          0000 (0)\n+093B89 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6EBEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x93B89: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-06EC26 PAYLOAD\n+093BB4 PAYLOAD\n \n-06F959 DATA DESCRIPTOR       08074B50 (134695760)\n-06F95D CRC                   489CA2B6 (1218224822)\n-06F961 Compressed Size       00000D33 (3379)\n-06F965 Uncompressed Size     00003CC4 (15556)\n+094FCF DATA DESCRIPTOR       08074B50 (134695760)\n+094FD3 CRC                   90514D51 (2421247313)\n+094FD7 Compressed Size       0000141B (5147)\n+094FDB Uncompressed Size     00005DC7 (24007)\n \n-06F969 LOCAL HEADER #519     04034B50 (67324752)\n-06F96D Extract Zip Spec      14 (20) '2.0'\n-06F96E Extract OS            00 (0) 'MS-DOS'\n-06F96F General Purpose Flag  0808 (2056)\n+094FDF LOCAL HEADER #519     04034B50 (67324752)\n+094FE3 Extract Zip Spec      14 (20) '2.0'\n+094FE4 Extract OS            00 (0) 'MS-DOS'\n+094FE5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06F971 Compression Method    0008 (8) 'Deflated'\n-06F973 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06F977 CRC                   00000000 (0)\n-06F97B Compressed Size       00000000 (0)\n-06F97F Uncompressed Size     00000000 (0)\n-06F983 Filename Length       003C (60)\n-06F985 Extra Length          0000 (0)\n-06F987 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+094FE7 Compression Method    0008 (8) 'Deflated'\n+094FE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+094FED CRC                   00000000 (0)\n+094FF1 Compressed Size       00000000 (0)\n+094FF5 Uncompressed Size     00000000 (0)\n+094FF9 Filename Length       0027 (39)\n+094FFB Extra Length          0000 (0)\n+094FFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6F987: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x94FFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-06F9C3 PAYLOAD\n+095024 PAYLOAD\n \n-06FFBB DATA DESCRIPTOR       08074B50 (134695760)\n-06FFBF CRC                   BD63F8B8 (3177445560)\n-06FFC3 Compressed Size       000005F8 (1528)\n-06FFC7 Uncompressed Size     000013BA (5050)\n+095392 DATA DESCRIPTOR       08074B50 (134695760)\n+095396 CRC                   3422DF4F (874700623)\n+09539A Compressed Size       0000036E (878)\n+09539E Uncompressed Size     0000086A (2154)\n \n-06FFCB LOCAL HEADER #520     04034B50 (67324752)\n-06FFCF Extract Zip Spec      14 (20) '2.0'\n-06FFD0 Extract OS            00 (0) 'MS-DOS'\n-06FFD1 General Purpose Flag  0808 (2056)\n+0953A2 LOCAL HEADER #520     04034B50 (67324752)\n+0953A6 Extract Zip Spec      14 (20) '2.0'\n+0953A7 Extract OS            00 (0) 'MS-DOS'\n+0953A8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-06FFD3 Compression Method    0008 (8) 'Deflated'\n-06FFD5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-06FFD9 CRC                   00000000 (0)\n-06FFDD Compressed Size       00000000 (0)\n-06FFE1 Uncompressed Size     00000000 (0)\n-06FFE5 Filename Length       003F (63)\n-06FFE7 Extra Length          0000 (0)\n-06FFE9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0953AA Compression Method    0008 (8) 'Deflated'\n+0953AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0953B0 CRC                   00000000 (0)\n+0953B4 Compressed Size       00000000 (0)\n+0953B8 Uncompressed Size     00000000 (0)\n+0953BC Filename Length       002C (44)\n+0953BE Extra Length          0000 (0)\n+0953C0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x6FFE9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x953C0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-070028 PAYLOAD\n+0953EC PAYLOAD\n \n-070563 DATA DESCRIPTOR       08074B50 (134695760)\n-070567 CRC                   C96B89A9 (3379268009)\n-07056B Compressed Size       0000053B (1339)\n-07056F Uncompressed Size     00000DB0 (3504)\n+0957E5 DATA DESCRIPTOR       08074B50 (134695760)\n+0957E9 CRC                   5087E57A (1351083386)\n+0957ED Compressed Size       000003F9 (1017)\n+0957F1 Uncompressed Size     000009A4 (2468)\n \n-070573 LOCAL HEADER #521     04034B50 (67324752)\n-070577 Extract Zip Spec      14 (20) '2.0'\n-070578 Extract OS            00 (0) 'MS-DOS'\n-070579 General Purpose Flag  0808 (2056)\n+0957F5 LOCAL HEADER #521     04034B50 (67324752)\n+0957F9 Extract Zip Spec      14 (20) '2.0'\n+0957FA Extract OS            00 (0) 'MS-DOS'\n+0957FB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07057B Compression Method    0008 (8) 'Deflated'\n-07057D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-070581 CRC                   00000000 (0)\n-070585 Compressed Size       00000000 (0)\n-070589 Uncompressed Size     00000000 (0)\n-07058D Filename Length       0039 (57)\n-07058F Extra Length          0000 (0)\n-070591 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0957FD Compression Method    0008 (8) 'Deflated'\n+0957FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+095803 CRC                   00000000 (0)\n+095807 Compressed Size       00000000 (0)\n+09580B Uncompressed Size     00000000 (0)\n+09580F Filename Length       002C (44)\n+095811 Extra Length          0000 (0)\n+095813 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x70591: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x95813: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0705CA PAYLOAD\n+09583F PAYLOAD\n \n-0710DF DATA DESCRIPTOR       08074B50 (134695760)\n-0710E3 CRC                   3FE3ACCB (1071885515)\n-0710E7 Compressed Size       00000B15 (2837)\n-0710EB Uncompressed Size     00002CC5 (11461)\n+097226 DATA DESCRIPTOR       08074B50 (134695760)\n+09722A CRC                   34D97477 (886666359)\n+09722E Compressed Size       000019E7 (6631)\n+097232 Uncompressed Size     00008320 (33568)\n \n-0710EF LOCAL HEADER #522     04034B50 (67324752)\n-0710F3 Extract Zip Spec      14 (20) '2.0'\n-0710F4 Extract OS            00 (0) 'MS-DOS'\n-0710F5 General Purpose Flag  0808 (2056)\n+097236 LOCAL HEADER #522     04034B50 (67324752)\n+09723A Extract Zip Spec      14 (20) '2.0'\n+09723B Extract OS            00 (0) 'MS-DOS'\n+09723C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0710F7 Compression Method    0008 (8) 'Deflated'\n-0710F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0710FD CRC                   00000000 (0)\n-071101 Compressed Size       00000000 (0)\n-071105 Uncompressed Size     00000000 (0)\n-071109 Filename Length       001F (31)\n-07110B Extra Length          0000 (0)\n-07110D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+09723E Compression Method    0008 (8) 'Deflated'\n+097240 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+097244 CRC                   00000000 (0)\n+097248 Compressed Size       00000000 (0)\n+09724C Uncompressed Size     00000000 (0)\n+097250 Filename Length       002F (47)\n+097252 Extra Length          0000 (0)\n+097254 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7110D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x97254: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07112C PAYLOAD               XX\n+097283 PAYLOAD\n \n-07112E DATA DESCRIPTOR       08074B50 (134695760)\n-071132 CRC                   00000000 (0)\n-071136 Compressed Size       00000002 (2)\n-07113A Uncompressed Size     00000000 (0)\n+099302 DATA DESCRIPTOR       08074B50 (134695760)\n+099306 CRC                   4414A4AD (1142203565)\n+09930A Compressed Size       0000207F (8319)\n+09930E Uncompressed Size     0000BE90 (48784)\n \n-07113E LOCAL HEADER #523     04034B50 (67324752)\n-071142 Extract Zip Spec      14 (20) '2.0'\n-071143 Extract OS            00 (0) 'MS-DOS'\n-071144 General Purpose Flag  0808 (2056)\n+099312 LOCAL HEADER #523     04034B50 (67324752)\n+099316 Extract Zip Spec      14 (20) '2.0'\n+099317 Extract OS            00 (0) 'MS-DOS'\n+099318 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-071146 Compression Method    0008 (8) 'Deflated'\n-071148 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07114C CRC                   00000000 (0)\n-071150 Compressed Size       00000000 (0)\n-071154 Uncompressed Size     00000000 (0)\n-071158 Filename Length       003A (58)\n-07115A Extra Length          0000 (0)\n-07115C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+09931A Compression Method    0008 (8) 'Deflated'\n+09931C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+099320 CRC                   00000000 (0)\n+099324 Compressed Size       00000000 (0)\n+099328 Uncompressed Size     00000000 (0)\n+09932C Filename Length       0038 (56)\n+09932E Extra Length          0000 (0)\n+099330 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7115C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x99330: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-071196 PAYLOAD\n+099368 PAYLOAD\n \n-07171E DATA DESCRIPTOR       08074B50 (134695760)\n-071722 CRC                   F325AC46 (4079332422)\n-071726 Compressed Size       00000588 (1416)\n-07172A Uncompressed Size     000010FE (4350)\n+099AD5 DATA DESCRIPTOR       08074B50 (134695760)\n+099AD9 CRC                   20B97A60 (549026400)\n+099ADD Compressed Size       0000076D (1901)\n+099AE1 Uncompressed Size     0000179D (6045)\n \n-07172E LOCAL HEADER #524     04034B50 (67324752)\n-071732 Extract Zip Spec      14 (20) '2.0'\n-071733 Extract OS            00 (0) 'MS-DOS'\n-071734 General Purpose Flag  0808 (2056)\n+099AE5 LOCAL HEADER #524     04034B50 (67324752)\n+099AE9 Extract Zip Spec      14 (20) '2.0'\n+099AEA Extract OS            00 (0) 'MS-DOS'\n+099AEB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-071736 Compression Method    0008 (8) 'Deflated'\n-071738 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07173C CRC                   00000000 (0)\n-071740 Compressed Size       00000000 (0)\n-071744 Uncompressed Size     00000000 (0)\n-071748 Filename Length       0031 (49)\n-07174A Extra Length          0000 (0)\n-07174C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+099AED Compression Method    0008 (8) 'Deflated'\n+099AEF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+099AF3 CRC                   00000000 (0)\n+099AF7 Compressed Size       00000000 (0)\n+099AFB Uncompressed Size     00000000 (0)\n+099AFF Filename Length       003C (60)\n+099B01 Extra Length          0000 (0)\n+099B03 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7174C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x99B03: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07177D PAYLOAD\n+099B3F PAYLOAD\n \n-071F34 DATA DESCRIPTOR       08074B50 (134695760)\n-071F38 CRC                   9BAFC26A (2611987050)\n-071F3C Compressed Size       000007B7 (1975)\n-071F40 Uncompressed Size     00001AC5 (6853)\n+09A0E5 DATA DESCRIPTOR       08074B50 (134695760)\n+09A0E9 CRC                   0B75FDAE (192282030)\n+09A0ED Compressed Size       000005A6 (1446)\n+09A0F1 Uncompressed Size     0000124E (4686)\n \n-071F44 LOCAL HEADER #525     04034B50 (67324752)\n-071F48 Extract Zip Spec      14 (20) '2.0'\n-071F49 Extract OS            00 (0) 'MS-DOS'\n-071F4A General Purpose Flag  0808 (2056)\n+09A0F5 LOCAL HEADER #525     04034B50 (67324752)\n+09A0F9 Extract Zip Spec      14 (20) '2.0'\n+09A0FA Extract OS            00 (0) 'MS-DOS'\n+09A0FB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-071F4C Compression Method    0008 (8) 'Deflated'\n-071F4E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-071F52 CRC                   00000000 (0)\n-071F56 Compressed Size       00000000 (0)\n-071F5A Uncompressed Size     00000000 (0)\n-071F5E Filename Length       0036 (54)\n-071F60 Extra Length          0000 (0)\n-071F62 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+09A0FD Compression Method    0008 (8) 'Deflated'\n+09A0FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+09A103 CRC                   00000000 (0)\n+09A107 Compressed Size       00000000 (0)\n+09A10B Uncompressed Size     00000000 (0)\n+09A10F Filename Length       0028 (40)\n+09A111 Extra Length          0000 (0)\n+09A113 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x71F62: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x9A113: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-071F98 PAYLOAD\n+09A13B PAYLOAD\n \n-07252F DATA DESCRIPTOR       08074B50 (134695760)\n-072533 CRC                   68B50306 (1756693254)\n-072537 Compressed Size       00000597 (1431)\n-07253B Uncompressed Size     000012AB (4779)\n+09A542 DATA DESCRIPTOR       08074B50 (134695760)\n+09A546 CRC                   D09B55F9 (3499841017)\n+09A54A Compressed Size       00000407 (1031)\n+09A54E Uncompressed Size     00000D4B (3403)\n \n-07253F LOCAL HEADER #526     04034B50 (67324752)\n-072543 Extract Zip Spec      14 (20) '2.0'\n-072544 Extract OS            00 (0) 'MS-DOS'\n-072545 General Purpose Flag  0808 (2056)\n+09A552 LOCAL HEADER #526     04034B50 (67324752)\n+09A556 Extract Zip Spec      14 (20) '2.0'\n+09A557 Extract OS            00 (0) 'MS-DOS'\n+09A558 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-072547 Compression Method    0008 (8) 'Deflated'\n-072549 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07254D CRC                   00000000 (0)\n-072551 Compressed Size       00000000 (0)\n-072555 Uncompressed Size     00000000 (0)\n-072559 Filename Length       002F (47)\n-07255B Extra Length          0000 (0)\n-07255D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+09A55A Compression Method    0008 (8) 'Deflated'\n+09A55C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+09A560 CRC                   00000000 (0)\n+09A564 Compressed Size       00000000 (0)\n+09A568 Uncompressed Size     00000000 (0)\n+09A56C Filename Length       0044 (68)\n+09A56E Extra Length          0000 (0)\n+09A570 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7255D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x9A570: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07258C PAYLOAD\n+09A5B4 PAYLOAD\n \n-072E64 DATA DESCRIPTOR       08074B50 (134695760)\n-072E68 CRC                   0BFFCD1E (201313566)\n-072E6C Compressed Size       000008D8 (2264)\n-072E70 Uncompressed Size     00002715 (10005)\n+09A98D DATA DESCRIPTOR       08074B50 (134695760)\n+09A991 CRC                   F3B0BA28 (4088445480)\n+09A995 Compressed Size       000003D9 (985)\n+09A999 Uncompressed Size     00000A5F (2655)\n \n-072E74 LOCAL HEADER #527     04034B50 (67324752)\n-072E78 Extract Zip Spec      14 (20) '2.0'\n-072E79 Extract OS            00 (0) 'MS-DOS'\n-072E7A General Purpose Flag  0808 (2056)\n+09A99D LOCAL HEADER #527     04034B50 (67324752)\n+09A9A1 Extract Zip Spec      14 (20) '2.0'\n+09A9A2 Extract OS            00 (0) 'MS-DOS'\n+09A9A3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-072E7C Compression Method    0008 (8) 'Deflated'\n-072E7E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-072E82 CRC                   00000000 (0)\n-072E86 Compressed Size       00000000 (0)\n-072E8A Uncompressed Size     00000000 (0)\n-072E8E Filename Length       003C (60)\n-072E90 Extra Length          0000 (0)\n-072E92 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+09A9A5 Compression Method    0008 (8) 'Deflated'\n+09A9A7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+09A9AB CRC                   00000000 (0)\n+09A9AF Compressed Size       00000000 (0)\n+09A9B3 Uncompressed Size     00000000 (0)\n+09A9B7 Filename Length       002E (46)\n+09A9B9 Extra Length          0000 (0)\n+09A9BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x72E92: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x9A9BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-072ECE PAYLOAD\n+09A9E9 PAYLOAD\n \n-073162 DATA DESCRIPTOR       08074B50 (134695760)\n-073166 CRC                   94D758DF (2497140959)\n-07316A Compressed Size       00000294 (660)\n-07316E Uncompressed Size     000004F3 (1267)\n+09C884 DATA DESCRIPTOR       08074B50 (134695760)\n+09C888 CRC                   080CFD86 (135069062)\n+09C88C Compressed Size       00001E9B (7835)\n+09C890 Uncompressed Size     00009370 (37744)\n \n-073172 LOCAL HEADER #528     04034B50 (67324752)\n-073176 Extract Zip Spec      14 (20) '2.0'\n-073177 Extract OS            00 (0) 'MS-DOS'\n-073178 General Purpose Flag  0808 (2056)\n+09C894 LOCAL HEADER #528     04034B50 (67324752)\n+09C898 Extract Zip Spec      14 (20) '2.0'\n+09C899 Extract OS            00 (0) 'MS-DOS'\n+09C89A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07317A Compression Method    0008 (8) 'Deflated'\n-07317C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-073180 CRC                   00000000 (0)\n-073184 Compressed Size       00000000 (0)\n-073188 Uncompressed Size     00000000 (0)\n-07318C Filename Length       0039 (57)\n-07318E Extra Length          0000 (0)\n-073190 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+09C89C Compression Method    0008 (8) 'Deflated'\n+09C89E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+09C8A2 CRC                   00000000 (0)\n+09C8A6 Compressed Size       00000000 (0)\n+09C8AA Uncompressed Size     00000000 (0)\n+09C8AE Filename Length       002C (44)\n+09C8B0 Extra Length          0000 (0)\n+09C8B2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x73190: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x9C8B2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0731C9 PAYLOAD\n+09C8DE PAYLOAD\n \n-07350F DATA DESCRIPTOR       08074B50 (134695760)\n-073513 CRC                   778123FC (2004952060)\n-073517 Compressed Size       00000346 (838)\n-07351B Uncompressed Size     00000770 (1904)\n+09D05C DATA DESCRIPTOR       08074B50 (134695760)\n+09D060 CRC                   70A970FE (1890152702)\n+09D064 Compressed Size       0000077E (1918)\n+09D068 Uncompressed Size     000022D8 (8920)\n \n-07351F LOCAL HEADER #529     04034B50 (67324752)\n-073523 Extract Zip Spec      14 (20) '2.0'\n-073524 Extract OS            00 (0) 'MS-DOS'\n-073525 General Purpose Flag  0808 (2056)\n+09D06C LOCAL HEADER #529     04034B50 (67324752)\n+09D070 Extract Zip Spec      14 (20) '2.0'\n+09D071 Extract OS            00 (0) 'MS-DOS'\n+09D072 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-073527 Compression Method    0008 (8) 'Deflated'\n-073529 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07352D CRC                   00000000 (0)\n-073531 Compressed Size       00000000 (0)\n-073535 Uncompressed Size     00000000 (0)\n-073539 Filename Length       003D (61)\n-07353B Extra Length          0000 (0)\n-07353D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+09D074 Compression Method    0008 (8) 'Deflated'\n+09D076 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+09D07A CRC                   00000000 (0)\n+09D07E Compressed Size       00000000 (0)\n+09D082 Uncompressed Size     00000000 (0)\n+09D086 Filename Length       002B (43)\n+09D088 Extra Length          0000 (0)\n+09D08A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7353D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x9D08A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07357A PAYLOAD\n+09D0B5 PAYLOAD\n \n-0737ED DATA DESCRIPTOR       08074B50 (134695760)\n-0737F1 CRC                   041CAAC9 (68987593)\n-0737F5 Compressed Size       00000273 (627)\n-0737F9 Uncompressed Size     000004B1 (1201)\n+09E240 DATA DESCRIPTOR       08074B50 (134695760)\n+09E244 CRC                   BCEF5B37 (3169803063)\n+09E248 Compressed Size       0000118B (4491)\n+09E24C Uncompressed Size     0000634F (25423)\n \n-0737FD LOCAL HEADER #530     04034B50 (67324752)\n-073801 Extract Zip Spec      14 (20) '2.0'\n-073802 Extract OS            00 (0) 'MS-DOS'\n-073803 General Purpose Flag  0808 (2056)\n+09E250 LOCAL HEADER #530     04034B50 (67324752)\n+09E254 Extract Zip Spec      14 (20) '2.0'\n+09E255 Extract OS            00 (0) 'MS-DOS'\n+09E256 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-073805 Compression Method    0008 (8) 'Deflated'\n-073807 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07380B CRC                   00000000 (0)\n-07380F Compressed Size       00000000 (0)\n-073813 Uncompressed Size     00000000 (0)\n-073817 Filename Length       003B (59)\n-073819 Extra Length          0000 (0)\n-07381B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+09E258 Compression Method    0008 (8) 'Deflated'\n+09E25A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+09E25E CRC                   00000000 (0)\n+09E262 Compressed Size       00000000 (0)\n+09E266 Uncompressed Size     00000000 (0)\n+09E26A Filename Length       002C (44)\n+09E26C Extra Length          0000 (0)\n+09E26E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7381B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x9E26E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-073856 PAYLOAD\n+09E29A PAYLOAD\n \n-073C0E DATA DESCRIPTOR       08074B50 (134695760)\n-073C12 CRC                   01D0CBB6 (30460854)\n-073C16 Compressed Size       000003B8 (952)\n-073C1A Uncompressed Size     00000A4C (2636)\n+09EDA1 DATA DESCRIPTOR       08074B50 (134695760)\n+09EDA5 CRC                   DB02321D (3674354205)\n+09EDA9 Compressed Size       00000B07 (2823)\n+09EDAD Uncompressed Size     000027AB (10155)\n \n-073C1E LOCAL HEADER #531     04034B50 (67324752)\n-073C22 Extract Zip Spec      14 (20) '2.0'\n-073C23 Extract OS            00 (0) 'MS-DOS'\n-073C24 General Purpose Flag  0808 (2056)\n+09EDB1 LOCAL HEADER #531     04034B50 (67324752)\n+09EDB5 Extract Zip Spec      14 (20) '2.0'\n+09EDB6 Extract OS            00 (0) 'MS-DOS'\n+09EDB7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-073C26 Compression Method    0008 (8) 'Deflated'\n-073C28 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-073C2C CRC                   00000000 (0)\n-073C30 Compressed Size       00000000 (0)\n-073C34 Uncompressed Size     00000000 (0)\n-073C38 Filename Length       0037 (55)\n-073C3A Extra Length          0000 (0)\n-073C3C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+09EDB9 Compression Method    0008 (8) 'Deflated'\n+09EDBB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+09EDBF CRC                   00000000 (0)\n+09EDC3 Compressed Size       00000000 (0)\n+09EDC7 Uncompressed Size     00000000 (0)\n+09EDCB Filename Length       002B (43)\n+09EDCD Extra Length          0000 (0)\n+09EDCF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x73C3C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x9EDCF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-073C73 PAYLOAD\n+09EDFA PAYLOAD\n \n-073EFB DATA DESCRIPTOR       08074B50 (134695760)\n-073EFF CRC                   790D5CAF (2030918831)\n-073F03 Compressed Size       00000288 (648)\n-073F07 Uncompressed Size     000004AD (1197)\n+0A02F7 DATA DESCRIPTOR       08074B50 (134695760)\n+0A02FB CRC                   DCD69CAC (3705052332)\n+0A02FF Compressed Size       000014FD (5373)\n+0A0303 Uncompressed Size     00006690 (26256)\n \n-073F0B LOCAL HEADER #532     04034B50 (67324752)\n-073F0F Extract Zip Spec      14 (20) '2.0'\n-073F10 Extract OS            00 (0) 'MS-DOS'\n-073F11 General Purpose Flag  0808 (2056)\n+0A0307 LOCAL HEADER #532     04034B50 (67324752)\n+0A030B Extract Zip Spec      14 (20) '2.0'\n+0A030C Extract OS            00 (0) 'MS-DOS'\n+0A030D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-073F13 Compression Method    0008 (8) 'Deflated'\n-073F15 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-073F19 CRC                   00000000 (0)\n-073F1D Compressed Size       00000000 (0)\n-073F21 Uncompressed Size     00000000 (0)\n-073F25 Filename Length       002C (44)\n-073F27 Extra Length          0000 (0)\n-073F29 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A030F Compression Method    0008 (8) 'Deflated'\n+0A0311 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A0315 CRC                   00000000 (0)\n+0A0319 Compressed Size       00000000 (0)\n+0A031D Uncompressed Size     00000000 (0)\n+0A0321 Filename Length       0034 (52)\n+0A0323 Extra Length          0000 (0)\n+0A0325 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x73F29: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA0325: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-073F55 PAYLOAD               XX\n+0A0359 PAYLOAD\n \n-073F57 DATA DESCRIPTOR       08074B50 (134695760)\n-073F5B CRC                   00000000 (0)\n-073F5F Compressed Size       00000002 (2)\n-073F63 Uncompressed Size     00000000 (0)\n+0A17B8 DATA DESCRIPTOR       08074B50 (134695760)\n+0A17BC CRC                   E3FDA003 (3825049603)\n+0A17C0 Compressed Size       0000145F (5215)\n+0A17C4 Uncompressed Size     000061ED (25069)\n \n-073F67 LOCAL HEADER #533     04034B50 (67324752)\n-073F6B Extract Zip Spec      14 (20) '2.0'\n-073F6C Extract OS            00 (0) 'MS-DOS'\n-073F6D General Purpose Flag  0808 (2056)\n+0A17C8 LOCAL HEADER #533     04034B50 (67324752)\n+0A17CC Extract Zip Spec      14 (20) '2.0'\n+0A17CD Extract OS            00 (0) 'MS-DOS'\n+0A17CE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-073F6F Compression Method    0008 (8) 'Deflated'\n-073F71 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-073F75 CRC                   00000000 (0)\n-073F79 Compressed Size       00000000 (0)\n-073F7D Uncompressed Size     00000000 (0)\n-073F81 Filename Length       004D (77)\n-073F83 Extra Length          0000 (0)\n-073F85 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A17D0 Compression Method    0008 (8) 'Deflated'\n+0A17D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A17D6 CRC                   00000000 (0)\n+0A17DA Compressed Size       00000000 (0)\n+0A17DE Uncompressed Size     00000000 (0)\n+0A17E2 Filename Length       0031 (49)\n+0A17E4 Extra Length          0000 (0)\n+0A17E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x73F85: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA17E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-073FD2 PAYLOAD\n+0A1817 PAYLOAD\n \n-074931 DATA DESCRIPTOR       08074B50 (134695760)\n-074935 CRC                   A679BD52 (2792996178)\n-074939 Compressed Size       0000095F (2399)\n-07493D Uncompressed Size     0000264E (9806)\n+0A1E2A DATA DESCRIPTOR       08074B50 (134695760)\n+0A1E2E CRC                   9A747BAC (2591325100)\n+0A1E32 Compressed Size       00000613 (1555)\n+0A1E36 Uncompressed Size     00001305 (4869)\n \n-074941 LOCAL HEADER #534     04034B50 (67324752)\n-074945 Extract Zip Spec      14 (20) '2.0'\n-074946 Extract OS            00 (0) 'MS-DOS'\n-074947 General Purpose Flag  0808 (2056)\n+0A1E3A LOCAL HEADER #534     04034B50 (67324752)\n+0A1E3E Extract Zip Spec      14 (20) '2.0'\n+0A1E3F Extract OS            00 (0) 'MS-DOS'\n+0A1E40 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-074949 Compression Method    0008 (8) 'Deflated'\n-07494B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07494F CRC                   00000000 (0)\n-074953 Compressed Size       00000000 (0)\n-074957 Uncompressed Size     00000000 (0)\n-07495B Filename Length       0054 (84)\n-07495D Extra Length          0000 (0)\n-07495F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A1E42 Compression Method    0008 (8) 'Deflated'\n+0A1E44 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A1E48 CRC                   00000000 (0)\n+0A1E4C Compressed Size       00000000 (0)\n+0A1E50 Uncompressed Size     00000000 (0)\n+0A1E54 Filename Length       0034 (52)\n+0A1E56 Extra Length          0000 (0)\n+0A1E58 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7495F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA1E58: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0749B3 PAYLOAD\n+0A1E8C PAYLOAD\n \n-074CE2 DATA DESCRIPTOR       08074B50 (134695760)\n-074CE6 CRC                   5C1CB033 (1545383987)\n-074CEA Compressed Size       0000032F (815)\n-074CEE Uncompressed Size     000006CB (1739)\n+0A256C DATA DESCRIPTOR       08074B50 (134695760)\n+0A2570 CRC                   F1EB3E77 (4058726007)\n+0A2574 Compressed Size       000006E0 (1760)\n+0A2578 Uncompressed Size     000016D7 (5847)\n \n-074CF2 LOCAL HEADER #535     04034B50 (67324752)\n-074CF6 Extract Zip Spec      14 (20) '2.0'\n-074CF7 Extract OS            00 (0) 'MS-DOS'\n-074CF8 General Purpose Flag  0808 (2056)\n+0A257C LOCAL HEADER #535     04034B50 (67324752)\n+0A2580 Extract Zip Spec      14 (20) '2.0'\n+0A2581 Extract OS            00 (0) 'MS-DOS'\n+0A2582 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-074CFA Compression Method    0008 (8) 'Deflated'\n-074CFC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-074D00 CRC                   00000000 (0)\n-074D04 Compressed Size       00000000 (0)\n-074D08 Uncompressed Size     00000000 (0)\n-074D0C Filename Length       0041 (65)\n-074D0E Extra Length          0000 (0)\n-074D10 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A2584 Compression Method    0008 (8) 'Deflated'\n+0A2586 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A258A CRC                   00000000 (0)\n+0A258E Compressed Size       00000000 (0)\n+0A2592 Uncompressed Size     00000000 (0)\n+0A2596 Filename Length       0032 (50)\n+0A2598 Extra Length          0000 (0)\n+0A259A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x74D10: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA259A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-074D51 PAYLOAD\n+0A25CC PAYLOAD\n \n-074F92 DATA DESCRIPTOR       08074B50 (134695760)\n-074F96 CRC                   E6853BBE (3867491262)\n-074F9A Compressed Size       00000241 (577)\n-074F9E Uncompressed Size     00000448 (1096)\n+0A2D19 DATA DESCRIPTOR       08074B50 (134695760)\n+0A2D1D CRC                   7F641F8A (2137268106)\n+0A2D21 Compressed Size       0000074D (1869)\n+0A2D25 Uncompressed Size     00001B65 (7013)\n \n-074FA2 LOCAL HEADER #536     04034B50 (67324752)\n-074FA6 Extract Zip Spec      14 (20) '2.0'\n-074FA7 Extract OS            00 (0) 'MS-DOS'\n-074FA8 General Purpose Flag  0808 (2056)\n+0A2D29 LOCAL HEADER #536     04034B50 (67324752)\n+0A2D2D Extract Zip Spec      14 (20) '2.0'\n+0A2D2E Extract OS            00 (0) 'MS-DOS'\n+0A2D2F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-074FAA Compression Method    0008 (8) 'Deflated'\n-074FAC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-074FB0 CRC                   00000000 (0)\n-074FB4 Compressed Size       00000000 (0)\n-074FB8 Uncompressed Size     00000000 (0)\n-074FBC Filename Length       0043 (67)\n-074FBE Extra Length          0000 (0)\n-074FC0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A2D31 Compression Method    0008 (8) 'Deflated'\n+0A2D33 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A2D37 CRC                   00000000 (0)\n+0A2D3B Compressed Size       00000000 (0)\n+0A2D3F Uncompressed Size     00000000 (0)\n+0A2D43 Filename Length       002E (46)\n+0A2D45 Extra Length          0000 (0)\n+0A2D47 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x74FC0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA2D47: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-075003 PAYLOAD\n+0A2D75 PAYLOAD\n \n-0753F0 DATA DESCRIPTOR       08074B50 (134695760)\n-0753F4 CRC                   B9E6C475 (3118908533)\n-0753F8 Compressed Size       000003ED (1005)\n-0753FC Uncompressed Size     00000B0B (2827)\n+0A3A36 DATA DESCRIPTOR       08074B50 (134695760)\n+0A3A3A CRC                   6C21C4E0 (1814152416)\n+0A3A3E Compressed Size       00000CC1 (3265)\n+0A3A42 Uncompressed Size     00003707 (14087)\n \n-075400 LOCAL HEADER #537     04034B50 (67324752)\n-075404 Extract Zip Spec      14 (20) '2.0'\n-075405 Extract OS            00 (0) 'MS-DOS'\n-075406 General Purpose Flag  0808 (2056)\n+0A3A46 LOCAL HEADER #537     04034B50 (67324752)\n+0A3A4A Extract Zip Spec      14 (20) '2.0'\n+0A3A4B Extract OS            00 (0) 'MS-DOS'\n+0A3A4C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-075408 Compression Method    0008 (8) 'Deflated'\n-07540A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07540E CRC                   00000000 (0)\n-075412 Compressed Size       00000000 (0)\n-075416 Uncompressed Size     00000000 (0)\n-07541A Filename Length       0046 (70)\n-07541C Extra Length          0000 (0)\n-07541E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A3A4E Compression Method    0008 (8) 'Deflated'\n+0A3A50 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A3A54 CRC                   00000000 (0)\n+0A3A58 Compressed Size       00000000 (0)\n+0A3A5C Uncompressed Size     00000000 (0)\n+0A3A60 Filename Length       002B (43)\n+0A3A62 Extra Length          0000 (0)\n+0A3A64 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7541E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA3A64: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-075464 PAYLOAD\n+0A3A8F PAYLOAD\n \n-07570B DATA DESCRIPTOR       08074B50 (134695760)\n-07570F CRC                   74E6231A (1961239322)\n-075713 Compressed Size       000002A7 (679)\n-075717 Uncompressed Size     00000511 (1297)\n+0A3E09 DATA DESCRIPTOR       08074B50 (134695760)\n+0A3E0D CRC                   F3BD8170 (4089282928)\n+0A3E11 Compressed Size       0000037A (890)\n+0A3E15 Uncompressed Size     000008A1 (2209)\n \n-07571B LOCAL HEADER #538     04034B50 (67324752)\n-07571F Extract Zip Spec      14 (20) '2.0'\n-075720 Extract OS            00 (0) 'MS-DOS'\n-075721 General Purpose Flag  0808 (2056)\n+0A3E19 LOCAL HEADER #538     04034B50 (67324752)\n+0A3E1D Extract Zip Spec      14 (20) '2.0'\n+0A3E1E Extract OS            00 (0) 'MS-DOS'\n+0A3E1F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-075723 Compression Method    0008 (8) 'Deflated'\n-075725 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-075729 CRC                   00000000 (0)\n-07572D Compressed Size       00000000 (0)\n-075731 Uncompressed Size     00000000 (0)\n-075735 Filename Length       003A (58)\n-075737 Extra Length          0000 (0)\n-075739 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A3E21 Compression Method    0008 (8) 'Deflated'\n+0A3E23 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A3E27 CRC                   00000000 (0)\n+0A3E2B Compressed Size       00000000 (0)\n+0A3E2F Uncompressed Size     00000000 (0)\n+0A3E33 Filename Length       002F (47)\n+0A3E35 Extra Length          0000 (0)\n+0A3E37 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x75739: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA3E37: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-075773 PAYLOAD\n+0A3E66 PAYLOAD\n \n-0759C7 DATA DESCRIPTOR       08074B50 (134695760)\n-0759CB CRC                   695FC9AE (1767885230)\n-0759CF Compressed Size       00000254 (596)\n-0759D3 Uncompressed Size     00000447 (1095)\n+0A480A DATA DESCRIPTOR       08074B50 (134695760)\n+0A480E CRC                   56A68FB6 (1453756342)\n+0A4812 Compressed Size       000009A4 (2468)\n+0A4816 Uncompressed Size     000023BC (9148)\n \n-0759D7 LOCAL HEADER #539     04034B50 (67324752)\n-0759DB Extract Zip Spec      14 (20) '2.0'\n-0759DC Extract OS            00 (0) 'MS-DOS'\n-0759DD General Purpose Flag  0808 (2056)\n+0A481A LOCAL HEADER #539     04034B50 (67324752)\n+0A481E Extract Zip Spec      14 (20) '2.0'\n+0A481F Extract OS            00 (0) 'MS-DOS'\n+0A4820 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0759DF Compression Method    0008 (8) 'Deflated'\n-0759E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0759E5 CRC                   00000000 (0)\n-0759E9 Compressed Size       00000000 (0)\n-0759ED Uncompressed Size     00000000 (0)\n-0759F1 Filename Length       0045 (69)\n-0759F3 Extra Length          0000 (0)\n-0759F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A4822 Compression Method    0008 (8) 'Deflated'\n+0A4824 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A4828 CRC                   00000000 (0)\n+0A482C Compressed Size       00000000 (0)\n+0A4830 Uncompressed Size     00000000 (0)\n+0A4834 Filename Length       0026 (38)\n+0A4836 Extra Length          0000 (0)\n+0A4838 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x759F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA4838: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-075A3A PAYLOAD\n+0A485E PAYLOAD\n \n-076302 DATA DESCRIPTOR       08074B50 (134695760)\n-076306 CRC                   1744C936 (390383926)\n-07630A Compressed Size       000008C8 (2248)\n-07630E Uncompressed Size     000023F1 (9201)\n+0A4CE2 DATA DESCRIPTOR       08074B50 (134695760)\n+0A4CE6 CRC                   111FF296 (287306390)\n+0A4CEA Compressed Size       00000484 (1156)\n+0A4CEE Uncompressed Size     00000B99 (2969)\n \n-076312 LOCAL HEADER #540     04034B50 (67324752)\n-076316 Extract Zip Spec      14 (20) '2.0'\n-076317 Extract OS            00 (0) 'MS-DOS'\n-076318 General Purpose Flag  0808 (2056)\n+0A4CF2 LOCAL HEADER #540     04034B50 (67324752)\n+0A4CF6 Extract Zip Spec      14 (20) '2.0'\n+0A4CF7 Extract OS            00 (0) 'MS-DOS'\n+0A4CF8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07631A Compression Method    0008 (8) 'Deflated'\n-07631C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-076320 CRC                   00000000 (0)\n-076324 Compressed Size       00000000 (0)\n-076328 Uncompressed Size     00000000 (0)\n-07632C Filename Length       004C (76)\n-07632E Extra Length          0000 (0)\n-076330 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A4CFA Compression Method    0008 (8) 'Deflated'\n+0A4CFC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A4D00 CRC                   00000000 (0)\n+0A4D04 Compressed Size       00000000 (0)\n+0A4D08 Uncompressed Size     00000000 (0)\n+0A4D0C Filename Length       002B (43)\n+0A4D0E Extra Length          0000 (0)\n+0A4D10 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x76330: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA4D10: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07637C PAYLOAD\n+0A4D3B PAYLOAD\n \n-0766B8 DATA DESCRIPTOR       08074B50 (134695760)\n-0766BC CRC                   287FAB99 (679455641)\n-0766C0 Compressed Size       0000033C (828)\n-0766C4 Uncompressed Size     000007C3 (1987)\n+0A5227 DATA DESCRIPTOR       08074B50 (134695760)\n+0A522B CRC                   44CDA5D9 (1154328025)\n+0A522F Compressed Size       000004EC (1260)\n+0A5233 Uncompressed Size     00000E77 (3703)\n \n-0766C8 LOCAL HEADER #541     04034B50 (67324752)\n-0766CC Extract Zip Spec      14 (20) '2.0'\n-0766CD Extract OS            00 (0) 'MS-DOS'\n-0766CE General Purpose Flag  0808 (2056)\n+0A5237 LOCAL HEADER #541     04034B50 (67324752)\n+0A523B Extract Zip Spec      14 (20) '2.0'\n+0A523C Extract OS            00 (0) 'MS-DOS'\n+0A523D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0766D0 Compression Method    0008 (8) 'Deflated'\n-0766D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0766D6 CRC                   00000000 (0)\n-0766DA Compressed Size       00000000 (0)\n-0766DE Uncompressed Size     00000000 (0)\n-0766E2 Filename Length       004D (77)\n-0766E4 Extra Length          0000 (0)\n-0766E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A523F Compression Method    0008 (8) 'Deflated'\n+0A5241 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A5245 CRC                   00000000 (0)\n+0A5249 Compressed Size       00000000 (0)\n+0A524D Uncompressed Size     00000000 (0)\n+0A5251 Filename Length       0031 (49)\n+0A5253 Extra Length          0000 (0)\n+0A5255 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x766E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA5255: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-076733 PAYLOAD\n+0A5286 PAYLOAD\n \n-076E5F DATA DESCRIPTOR       08074B50 (134695760)\n-076E63 CRC                   9083C03B (2424553531)\n-076E67 Compressed Size       0000072C (1836)\n-076E6B Uncompressed Size     00001B7B (7035)\n+0A59C9 DATA DESCRIPTOR       08074B50 (134695760)\n+0A59CD CRC                   D584FEC4 (3582262980)\n+0A59D1 Compressed Size       00000743 (1859)\n+0A59D5 Uncompressed Size     00001869 (6249)\n \n-076E6F LOCAL HEADER #542     04034B50 (67324752)\n-076E73 Extract Zip Spec      14 (20) '2.0'\n-076E74 Extract OS            00 (0) 'MS-DOS'\n-076E75 General Purpose Flag  0808 (2056)\n+0A59D9 LOCAL HEADER #542     04034B50 (67324752)\n+0A59DD Extract Zip Spec      14 (20) '2.0'\n+0A59DE Extract OS            00 (0) 'MS-DOS'\n+0A59DF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-076E77 Compression Method    0008 (8) 'Deflated'\n-076E79 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-076E7D CRC                   00000000 (0)\n-076E81 Compressed Size       00000000 (0)\n-076E85 Uncompressed Size     00000000 (0)\n-076E89 Filename Length       0031 (49)\n-076E8B Extra Length          0000 (0)\n-076E8D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A59E1 Compression Method    0008 (8) 'Deflated'\n+0A59E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A59E7 CRC                   00000000 (0)\n+0A59EB Compressed Size       00000000 (0)\n+0A59EF Uncompressed Size     00000000 (0)\n+0A59F3 Filename Length       0029 (41)\n+0A59F5 Extra Length          0000 (0)\n+0A59F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x76E8D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA59F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-076EBE PAYLOAD               XX\n+0A5A20 PAYLOAD\n \n-076EC0 DATA DESCRIPTOR       08074B50 (134695760)\n-076EC4 CRC                   00000000 (0)\n-076EC8 Compressed Size       00000002 (2)\n-076ECC Uncompressed Size     00000000 (0)\n+0A6288 DATA DESCRIPTOR       08074B50 (134695760)\n+0A628C CRC                   6E2E32B0 (1848521392)\n+0A6290 Compressed Size       00000868 (2152)\n+0A6294 Uncompressed Size     000022C0 (8896)\n \n-076ED0 LOCAL HEADER #543     04034B50 (67324752)\n-076ED4 Extract Zip Spec      14 (20) '2.0'\n-076ED5 Extract OS            00 (0) 'MS-DOS'\n-076ED6 General Purpose Flag  0808 (2056)\n+0A6298 LOCAL HEADER #543     04034B50 (67324752)\n+0A629C Extract Zip Spec      14 (20) '2.0'\n+0A629D Extract OS            00 (0) 'MS-DOS'\n+0A629E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-076ED8 Compression Method    0008 (8) 'Deflated'\n-076EDA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-076EDE CRC                   00000000 (0)\n-076EE2 Compressed Size       00000000 (0)\n-076EE6 Uncompressed Size     00000000 (0)\n-076EEA Filename Length       0054 (84)\n-076EEC Extra Length          0000 (0)\n-076EEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A62A0 Compression Method    0008 (8) 'Deflated'\n+0A62A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A62A6 CRC                   00000000 (0)\n+0A62AA Compressed Size       00000000 (0)\n+0A62AE Uncompressed Size     00000000 (0)\n+0A62B2 Filename Length       002A (42)\n+0A62B4 Extra Length          0000 (0)\n+0A62B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x76EEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA62B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-076F42 PAYLOAD\n+0A62E0 PAYLOAD\n \n-0783AA DATA DESCRIPTOR       08074B50 (134695760)\n-0783AE CRC                   F23B4D60 (4063972704)\n-0783B2 Compressed Size       00001468 (5224)\n-0783B6 Uncompressed Size     0000582A (22570)\n+0A65CC DATA DESCRIPTOR       08074B50 (134695760)\n+0A65D0 CRC                   C17F4D7C (3246345596)\n+0A65D4 Compressed Size       000002EC (748)\n+0A65D8 Uncompressed Size     0000068F (1679)\n \n-0783BA LOCAL HEADER #544     04034B50 (67324752)\n-0783BE Extract Zip Spec      14 (20) '2.0'\n-0783BF Extract OS            00 (0) 'MS-DOS'\n-0783C0 General Purpose Flag  0808 (2056)\n+0A65DC LOCAL HEADER #544     04034B50 (67324752)\n+0A65E0 Extract Zip Spec      14 (20) '2.0'\n+0A65E1 Extract OS            00 (0) 'MS-DOS'\n+0A65E2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0783C2 Compression Method    0008 (8) 'Deflated'\n-0783C4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0783C8 CRC                   00000000 (0)\n-0783CC Compressed Size       00000000 (0)\n-0783D0 Uncompressed Size     00000000 (0)\n-0783D4 Filename Length       005B (91)\n-0783D6 Extra Length          0000 (0)\n-0783D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A65E4 Compression Method    0008 (8) 'Deflated'\n+0A65E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A65EA CRC                   00000000 (0)\n+0A65EE Compressed Size       00000000 (0)\n+0A65F2 Uncompressed Size     00000000 (0)\n+0A65F6 Filename Length       0029 (41)\n+0A65F8 Extra Length          0000 (0)\n+0A65FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x783D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA65FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-078433 PAYLOAD\n+0A6623 PAYLOAD\n \n-0786CE DATA DESCRIPTOR       08074B50 (134695760)\n-0786D2 CRC                   E57CCA12 (3850160658)\n-0786D6 Compressed Size       0000029B (667)\n-0786DA Uncompressed Size     000005CF (1487)\n+0A6AB5 DATA DESCRIPTOR       08074B50 (134695760)\n+0A6AB9 CRC                   0D00D936 (218159414)\n+0A6ABD Compressed Size       00000492 (1170)\n+0A6AC1 Uncompressed Size     00000E8E (3726)\n \n-0786DE LOCAL HEADER #545     04034B50 (67324752)\n-0786E2 Extract Zip Spec      14 (20) '2.0'\n-0786E3 Extract OS            00 (0) 'MS-DOS'\n-0786E4 General Purpose Flag  0808 (2056)\n+0A6AC5 LOCAL HEADER #545     04034B50 (67324752)\n+0A6AC9 Extract Zip Spec      14 (20) '2.0'\n+0A6ACA Extract OS            00 (0) 'MS-DOS'\n+0A6ACB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0786E6 Compression Method    0008 (8) 'Deflated'\n-0786E8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0786EC CRC                   00000000 (0)\n-0786F0 Compressed Size       00000000 (0)\n-0786F4 Uncompressed Size     00000000 (0)\n-0786F8 Filename Length       0030 (48)\n-0786FA Extra Length          0000 (0)\n-0786FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A6ACD Compression Method    0008 (8) 'Deflated'\n+0A6ACF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A6AD3 CRC                   00000000 (0)\n+0A6AD7 Compressed Size       00000000 (0)\n+0A6ADB Uncompressed Size     00000000 (0)\n+0A6ADF Filename Length       002A (42)\n+0A6AE1 Extra Length          0000 (0)\n+0A6AE3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x786FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA6AE3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07872C PAYLOAD               XX\n+0A6B0D PAYLOAD\n \n-07872E DATA DESCRIPTOR       08074B50 (134695760)\n-078732 CRC                   00000000 (0)\n-078736 Compressed Size       00000002 (2)\n-07873A Uncompressed Size     00000000 (0)\n+0A6FC2 DATA DESCRIPTOR       08074B50 (134695760)\n+0A6FC6 CRC                   F4388FF8 (4097347576)\n+0A6FCA Compressed Size       000004B5 (1205)\n+0A6FCE Uncompressed Size     00000F20 (3872)\n \n-07873E LOCAL HEADER #546     04034B50 (67324752)\n-078742 Extract Zip Spec      14 (20) '2.0'\n-078743 Extract OS            00 (0) 'MS-DOS'\n-078744 General Purpose Flag  0808 (2056)\n+0A6FD2 LOCAL HEADER #546     04034B50 (67324752)\n+0A6FD6 Extract Zip Spec      14 (20) '2.0'\n+0A6FD7 Extract OS            00 (0) 'MS-DOS'\n+0A6FD8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-078746 Compression Method    0008 (8) 'Deflated'\n-078748 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07874C CRC                   00000000 (0)\n-078750 Compressed Size       00000000 (0)\n-078754 Uncompressed Size     00000000 (0)\n-078758 Filename Length       004C (76)\n-07875A Extra Length          0000 (0)\n-07875C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A6FDA Compression Method    0008 (8) 'Deflated'\n+0A6FDC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A6FE0 CRC                   00000000 (0)\n+0A6FE4 Compressed Size       00000000 (0)\n+0A6FE8 Uncompressed Size     00000000 (0)\n+0A6FEC Filename Length       002B (43)\n+0A6FEE Extra Length          0000 (0)\n+0A6FF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7875C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA6FF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0787A8 PAYLOAD\n+0A701B PAYLOAD\n \n-078B1E DATA DESCRIPTOR       08074B50 (134695760)\n-078B22 CRC                   B946295F (3108383071)\n-078B26 Compressed Size       00000376 (886)\n-078B2A Uncompressed Size     000008A7 (2215)\n+0A7BAE DATA DESCRIPTOR       08074B50 (134695760)\n+0A7BB2 CRC                   39FACF71 (972738417)\n+0A7BB6 Compressed Size       00000B93 (2963)\n+0A7BBA Uncompressed Size     00003613 (13843)\n \n-078B2E LOCAL HEADER #547     04034B50 (67324752)\n-078B32 Extract Zip Spec      14 (20) '2.0'\n-078B33 Extract OS            00 (0) 'MS-DOS'\n-078B34 General Purpose Flag  0808 (2056)\n+0A7BBE LOCAL HEADER #547     04034B50 (67324752)\n+0A7BC2 Extract Zip Spec      14 (20) '2.0'\n+0A7BC3 Extract OS            00 (0) 'MS-DOS'\n+0A7BC4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-078B36 Compression Method    0008 (8) 'Deflated'\n-078B38 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-078B3C CRC                   00000000 (0)\n-078B40 Compressed Size       00000000 (0)\n-078B44 Uncompressed Size     00000000 (0)\n-078B48 Filename Length       0053 (83)\n-078B4A Extra Length          0000 (0)\n-078B4C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A7BC6 Compression Method    0008 (8) 'Deflated'\n+0A7BC8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A7BCC CRC                   00000000 (0)\n+0A7BD0 Compressed Size       00000000 (0)\n+0A7BD4 Uncompressed Size     00000000 (0)\n+0A7BD8 Filename Length       002B (43)\n+0A7BDA Extra Length          0000 (0)\n+0A7BDC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x78B4C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA7BDC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-078B9F PAYLOAD\n+0A7C07 PAYLOAD\n \n-078E11 DATA DESCRIPTOR       08074B50 (134695760)\n-078E15 CRC                   208B91F5 (546017781)\n-078E19 Compressed Size       00000272 (626)\n-078E1D Uncompressed Size     00000524 (1316)\n+0A85A2 DATA DESCRIPTOR       08074B50 (134695760)\n+0A85A6 CRC                   2FD52EF2 (802500338)\n+0A85AA Compressed Size       0000099B (2459)\n+0A85AE Uncompressed Size     00002A6C (10860)\n \n-078E21 LOCAL HEADER #548     04034B50 (67324752)\n-078E25 Extract Zip Spec      14 (20) '2.0'\n-078E26 Extract OS            00 (0) 'MS-DOS'\n-078E27 General Purpose Flag  0808 (2056)\n+0A85B2 LOCAL HEADER #548     04034B50 (67324752)\n+0A85B6 Extract Zip Spec      14 (20) '2.0'\n+0A85B7 Extract OS            00 (0) 'MS-DOS'\n+0A85B8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-078E29 Compression Method    0008 (8) 'Deflated'\n-078E2B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-078E2F CRC                   00000000 (0)\n-078E33 Compressed Size       00000000 (0)\n-078E37 Uncompressed Size     00000000 (0)\n-078E3B Filename Length       0034 (52)\n-078E3D Extra Length          0000 (0)\n-078E3F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A85BA Compression Method    0008 (8) 'Deflated'\n+0A85BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A85C0 CRC                   00000000 (0)\n+0A85C4 Compressed Size       00000000 (0)\n+0A85C8 Uncompressed Size     00000000 (0)\n+0A85CC Filename Length       0030 (48)\n+0A85CE Extra Length          0000 (0)\n+0A85D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x78E3F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA85D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-078E73 PAYLOAD               XX\n+0A8600 PAYLOAD\n \n-078E75 DATA DESCRIPTOR       08074B50 (134695760)\n-078E79 CRC                   00000000 (0)\n-078E7D Compressed Size       00000002 (2)\n-078E81 Uncompressed Size     00000000 (0)\n+0A8F52 DATA DESCRIPTOR       08074B50 (134695760)\n+0A8F56 CRC                   42C7E3CE (1120396238)\n+0A8F5A Compressed Size       00000952 (2386)\n+0A8F5E Uncompressed Size     000021AF (8623)\n \n-078E85 LOCAL HEADER #549     04034B50 (67324752)\n-078E89 Extract Zip Spec      14 (20) '2.0'\n-078E8A Extract OS            00 (0) 'MS-DOS'\n-078E8B General Purpose Flag  0808 (2056)\n+0A8F62 LOCAL HEADER #549     04034B50 (67324752)\n+0A8F66 Extract Zip Spec      14 (20) '2.0'\n+0A8F67 Extract OS            00 (0) 'MS-DOS'\n+0A8F68 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-078E8D Compression Method    0008 (8) 'Deflated'\n-078E8F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-078E93 CRC                   00000000 (0)\n-078E97 Compressed Size       00000000 (0)\n-078E9B Uncompressed Size     00000000 (0)\n-078E9F Filename Length       0056 (86)\n-078EA1 Extra Length          0000 (0)\n-078EA3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A8F6A Compression Method    0008 (8) 'Deflated'\n+0A8F6C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A8F70 CRC                   00000000 (0)\n+0A8F74 Compressed Size       00000000 (0)\n+0A8F78 Uncompressed Size     00000000 (0)\n+0A8F7C Filename Length       002B (43)\n+0A8F7E Extra Length          0000 (0)\n+0A8F80 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x78EA3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA8F80: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-078EF9 PAYLOAD\n+0A8FAB PAYLOAD\n \n-07938B DATA DESCRIPTOR       08074B50 (134695760)\n-07938F CRC                   C03FB50A (3225400586)\n-079393 Compressed Size       00000492 (1170)\n-079397 Uncompressed Size     00000F4A (3914)\n+0A9C22 DATA DESCRIPTOR       08074B50 (134695760)\n+0A9C26 CRC                   9B8BDB69 (2609634153)\n+0A9C2A Compressed Size       00000C77 (3191)\n+0A9C2E Uncompressed Size     00003527 (13607)\n \n-07939B LOCAL HEADER #550     04034B50 (67324752)\n-07939F Extract Zip Spec      14 (20) '2.0'\n-0793A0 Extract OS            00 (0) 'MS-DOS'\n-0793A1 General Purpose Flag  0808 (2056)\n+0A9C32 LOCAL HEADER #550     04034B50 (67324752)\n+0A9C36 Extract Zip Spec      14 (20) '2.0'\n+0A9C37 Extract OS            00 (0) 'MS-DOS'\n+0A9C38 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0793A3 Compression Method    0008 (8) 'Deflated'\n-0793A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0793A9 CRC                   00000000 (0)\n-0793AD Compressed Size       00000000 (0)\n-0793B1 Uncompressed Size     00000000 (0)\n-0793B5 Filename Length       0022 (34)\n-0793B7 Extra Length          0000 (0)\n-0793B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0A9C3A Compression Method    0008 (8) 'Deflated'\n+0A9C3C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0A9C40 CRC                   00000000 (0)\n+0A9C44 Compressed Size       00000000 (0)\n+0A9C48 Uncompressed Size     00000000 (0)\n+0A9C4C Filename Length       002E (46)\n+0A9C4E Extra Length          0000 (0)\n+0A9C50 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x793B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xA9C50: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0793DB PAYLOAD               XX\n+0A9C7E PAYLOAD\n \n-0793DD DATA DESCRIPTOR       08074B50 (134695760)\n-0793E1 CRC                   00000000 (0)\n-0793E5 Compressed Size       00000002 (2)\n-0793E9 Uncompressed Size     00000000 (0)\n+0AA901 DATA DESCRIPTOR       08074B50 (134695760)\n+0AA905 CRC                   2A6335AE (711144878)\n+0AA909 Compressed Size       00000C83 (3203)\n+0AA90D Uncompressed Size     00003628 (13864)\n \n-0793ED LOCAL HEADER #551     04034B50 (67324752)\n-0793F1 Extract Zip Spec      14 (20) '2.0'\n-0793F2 Extract OS            00 (0) 'MS-DOS'\n-0793F3 General Purpose Flag  0808 (2056)\n+0AA911 LOCAL HEADER #551     04034B50 (67324752)\n+0AA915 Extract Zip Spec      14 (20) '2.0'\n+0AA916 Extract OS            00 (0) 'MS-DOS'\n+0AA917 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0793F5 Compression Method    0008 (8) 'Deflated'\n-0793F7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0793FB CRC                   00000000 (0)\n-0793FF Compressed Size       00000000 (0)\n-079403 Uncompressed Size     00000000 (0)\n-079407 Filename Length       0036 (54)\n-079409 Extra Length          0000 (0)\n-07940B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0AA919 Compression Method    0008 (8) 'Deflated'\n+0AA91B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0AA91F CRC                   00000000 (0)\n+0AA923 Compressed Size       00000000 (0)\n+0AA927 Uncompressed Size     00000000 (0)\n+0AA92B Filename Length       0026 (38)\n+0AA92D Extra Length          0000 (0)\n+0AA92F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7940B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xAA92F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-079441 PAYLOAD\n+0AA955 PAYLOAD\n \n-07A138 DATA DESCRIPTOR       08074B50 (134695760)\n-07A13C CRC                   2CFFA2CA (754950858)\n-07A140 Compressed Size       00000CF7 (3319)\n-07A144 Uncompressed Size     00002810 (10256)\n+0AAE9F DATA DESCRIPTOR       08074B50 (134695760)\n+0AAEA3 CRC                   4DECBF7A (1307361146)\n+0AAEA7 Compressed Size       0000054A (1354)\n+0AAEAB Uncompressed Size     00001CA2 (7330)\n \n-07A148 LOCAL HEADER #552     04034B50 (67324752)\n-07A14C Extract Zip Spec      14 (20) '2.0'\n-07A14D Extract OS            00 (0) 'MS-DOS'\n-07A14E General Purpose Flag  0808 (2056)\n+0AAEAF LOCAL HEADER #552     04034B50 (67324752)\n+0AAEB3 Extract Zip Spec      14 (20) '2.0'\n+0AAEB4 Extract OS            00 (0) 'MS-DOS'\n+0AAEB5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07A150 Compression Method    0008 (8) 'Deflated'\n-07A152 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07A156 CRC                   00000000 (0)\n-07A15A Compressed Size       00000000 (0)\n-07A15E Uncompressed Size     00000000 (0)\n-07A162 Filename Length       0036 (54)\n-07A164 Extra Length          0000 (0)\n-07A166 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0AAEB7 Compression Method    0008 (8) 'Deflated'\n+0AAEB9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0AAEBD CRC                   00000000 (0)\n+0AAEC1 Compressed Size       00000000 (0)\n+0AAEC5 Uncompressed Size     00000000 (0)\n+0AAEC9 Filename Length       0023 (35)\n+0AAECB Extra Length          0000 (0)\n+0AAECD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7A166: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xAAECD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07A19C PAYLOAD\n+0AAEF0 PAYLOAD               XX\n \n-07A3BE DATA DESCRIPTOR       08074B50 (134695760)\n-07A3C2 CRC                   A6E18129 (2799796521)\n-07A3C6 Compressed Size       00000222 (546)\n-07A3CA Uncompressed Size     000003BF (959)\n+0AAEF2 DATA DESCRIPTOR       08074B50 (134695760)\n+0AAEF6 CRC                   00000000 (0)\n+0AAEFA Compressed Size       00000002 (2)\n+0AAEFE Uncompressed Size     00000000 (0)\n \n-07A3CE LOCAL HEADER #553     04034B50 (67324752)\n-07A3D2 Extract Zip Spec      14 (20) '2.0'\n-07A3D3 Extract OS            00 (0) 'MS-DOS'\n-07A3D4 General Purpose Flag  0808 (2056)\n+0AAF02 LOCAL HEADER #553     04034B50 (67324752)\n+0AAF06 Extract Zip Spec      14 (20) '2.0'\n+0AAF07 Extract OS            00 (0) 'MS-DOS'\n+0AAF08 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07A3D6 Compression Method    0008 (8) 'Deflated'\n-07A3D8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07A3DC CRC                   00000000 (0)\n-07A3E0 Compressed Size       00000000 (0)\n-07A3E4 Uncompressed Size     00000000 (0)\n-07A3E8 Filename Length       0033 (51)\n-07A3EA Extra Length          0000 (0)\n-07A3EC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0AAF0A Compression Method    0008 (8) 'Deflated'\n+0AAF0C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0AAF10 CRC                   00000000 (0)\n+0AAF14 Compressed Size       00000000 (0)\n+0AAF18 Uncompressed Size     00000000 (0)\n+0AAF1C Filename Length       0030 (48)\n+0AAF1E Extra Length          0000 (0)\n+0AAF20 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7A3EC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xAAF20: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07A41F PAYLOAD\n+0AAF50 PAYLOAD\n \n-07A66F DATA DESCRIPTOR       08074B50 (134695760)\n-07A673 CRC                   0D4F07B4 (223283124)\n-07A677 Compressed Size       00000250 (592)\n-07A67B Uncompressed Size     0000042F (1071)\n+0AB22A DATA DESCRIPTOR       08074B50 (134695760)\n+0AB22E CRC                   DF16DFCA (3742818250)\n+0AB232 Compressed Size       000002DA (730)\n+0AB236 Uncompressed Size     000005D0 (1488)\n \n-07A67F LOCAL HEADER #554     04034B50 (67324752)\n-07A683 Extract Zip Spec      14 (20) '2.0'\n-07A684 Extract OS            00 (0) 'MS-DOS'\n-07A685 General Purpose Flag  0808 (2056)\n+0AB23A LOCAL HEADER #554     04034B50 (67324752)\n+0AB23E Extract Zip Spec      14 (20) '2.0'\n+0AB23F Extract OS            00 (0) 'MS-DOS'\n+0AB240 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07A687 Compression Method    0008 (8) 'Deflated'\n-07A689 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07A68D CRC                   00000000 (0)\n-07A691 Compressed Size       00000000 (0)\n-07A695 Uncompressed Size     00000000 (0)\n-07A699 Filename Length       0038 (56)\n-07A69B Extra Length          0000 (0)\n-07A69D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0AB242 Compression Method    0008 (8) 'Deflated'\n+0AB244 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0AB248 CRC                   00000000 (0)\n+0AB24C Compressed Size       00000000 (0)\n+0AB250 Uncompressed Size     00000000 (0)\n+0AB254 Filename Length       0036 (54)\n+0AB256 Extra Length          0000 (0)\n+0AB258 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7A69D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xAB258: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07A6D5 PAYLOAD\n+0AB28E PAYLOAD\n \n-07ABB6 DATA DESCRIPTOR       08074B50 (134695760)\n-07ABBA CRC                   E90F01CB (3910074827)\n-07ABBE Compressed Size       000004E1 (1249)\n-07ABC2 Uncompressed Size     00000D8D (3469)\n+0ABB5C DATA DESCRIPTOR       08074B50 (134695760)\n+0ABB60 CRC                   14F52AE5 (351611621)\n+0ABB64 Compressed Size       000008CE (2254)\n+0ABB68 Uncompressed Size     00001E9C (7836)\n \n-07ABC6 LOCAL HEADER #555     04034B50 (67324752)\n-07ABCA Extract Zip Spec      14 (20) '2.0'\n-07ABCB Extract OS            00 (0) 'MS-DOS'\n-07ABCC General Purpose Flag  0808 (2056)\n+0ABB6C LOCAL HEADER #555     04034B50 (67324752)\n+0ABB70 Extract Zip Spec      14 (20) '2.0'\n+0ABB71 Extract OS            00 (0) 'MS-DOS'\n+0ABB72 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07ABCE Compression Method    0008 (8) 'Deflated'\n-07ABD0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07ABD4 CRC                   00000000 (0)\n-07ABD8 Compressed Size       00000000 (0)\n-07ABDC Uncompressed Size     00000000 (0)\n-07ABE0 Filename Length       0038 (56)\n-07ABE2 Extra Length          0000 (0)\n-07ABE4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0ABB74 Compression Method    0008 (8) 'Deflated'\n+0ABB76 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0ABB7A CRC                   00000000 (0)\n+0ABB7E Compressed Size       00000000 (0)\n+0ABB82 Uncompressed Size     00000000 (0)\n+0ABB86 Filename Length       0034 (52)\n+0ABB88 Extra Length          0000 (0)\n+0ABB8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7ABE4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xABB8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07AC1C PAYLOAD\n+0ABBBE PAYLOAD\n \n-07AE3A DATA DESCRIPTOR       08074B50 (134695760)\n-07AE3E CRC                   1B8CE743 (462219075)\n-07AE42 Compressed Size       0000021E (542)\n-07AE46 Uncompressed Size     000003B6 (950)\n+0AC302 DATA DESCRIPTOR       08074B50 (134695760)\n+0AC306 CRC                   455A049E (1163527326)\n+0AC30A Compressed Size       00000744 (1860)\n+0AC30E Uncompressed Size     00001BA0 (7072)\n \n-07AE4A LOCAL HEADER #556     04034B50 (67324752)\n-07AE4E Extract Zip Spec      14 (20) '2.0'\n-07AE4F Extract OS            00 (0) 'MS-DOS'\n-07AE50 General Purpose Flag  0808 (2056)\n+0AC312 LOCAL HEADER #556     04034B50 (67324752)\n+0AC316 Extract Zip Spec      14 (20) '2.0'\n+0AC317 Extract OS            00 (0) 'MS-DOS'\n+0AC318 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07AE52 Compression Method    0008 (8) 'Deflated'\n-07AE54 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07AE58 CRC                   00000000 (0)\n-07AE5C Compressed Size       00000000 (0)\n-07AE60 Uncompressed Size     00000000 (0)\n-07AE64 Filename Length       0020 (32)\n-07AE66 Extra Length          0000 (0)\n-07AE68 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0AC31A Compression Method    0008 (8) 'Deflated'\n+0AC31C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0AC320 CRC                   00000000 (0)\n+0AC324 Compressed Size       00000000 (0)\n+0AC328 Uncompressed Size     00000000 (0)\n+0AC32C Filename Length       002E (46)\n+0AC32E Extra Length          0000 (0)\n+0AC330 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7AE68: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xAC330: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07AE88 PAYLOAD               XX\n+0AC35E PAYLOAD\n \n-07AE8A DATA DESCRIPTOR       08074B50 (134695760)\n-07AE8E CRC                   00000000 (0)\n-07AE92 Compressed Size       00000002 (2)\n-07AE96 Uncompressed Size     00000000 (0)\n+0AC69D DATA DESCRIPTOR       08074B50 (134695760)\n+0AC6A1 CRC                   C852179E (3360823198)\n+0AC6A5 Compressed Size       0000033F (831)\n+0AC6A9 Uncompressed Size     00000798 (1944)\n \n-07AE9A LOCAL HEADER #557     04034B50 (67324752)\n-07AE9E Extract Zip Spec      14 (20) '2.0'\n-07AE9F Extract OS            00 (0) 'MS-DOS'\n-07AEA0 General Purpose Flag  0808 (2056)\n+0AC6AD LOCAL HEADER #557     04034B50 (67324752)\n+0AC6B1 Extract Zip Spec      14 (20) '2.0'\n+0AC6B2 Extract OS            00 (0) 'MS-DOS'\n+0AC6B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07AEA2 Compression Method    0008 (8) 'Deflated'\n-07AEA4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07AEA8 CRC                   00000000 (0)\n-07AEAC Compressed Size       00000000 (0)\n-07AEB0 Uncompressed Size     00000000 (0)\n-07AEB4 Filename Length       0031 (49)\n-07AEB6 Extra Length          0000 (0)\n-07AEB8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0AC6B5 Compression Method    0008 (8) 'Deflated'\n+0AC6B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0AC6BB CRC                   00000000 (0)\n+0AC6BF Compressed Size       00000000 (0)\n+0AC6C3 Uncompressed Size     00000000 (0)\n+0AC6C7 Filename Length       0031 (49)\n+0AC6C9 Extra Length          0000 (0)\n+0AC6CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7AEB8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xAC6CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07AEE9 PAYLOAD\n+0AC6FC PAYLOAD\n \n-07B102 DATA DESCRIPTOR       08074B50 (134695760)\n-07B106 CRC                   94BF4E7B (2495565435)\n-07B10A Compressed Size       00000219 (537)\n-07B10E Uncompressed Size     000003B5 (949)\n+0ACF41 DATA DESCRIPTOR       08074B50 (134695760)\n+0ACF45 CRC                   BD46272F (3175491375)\n+0ACF49 Compressed Size       00000845 (2117)\n+0ACF4D Uncompressed Size     00001CB5 (7349)\n \n-07B112 LOCAL HEADER #558     04034B50 (67324752)\n-07B116 Extract Zip Spec      14 (20) '2.0'\n-07B117 Extract OS            00 (0) 'MS-DOS'\n-07B118 General Purpose Flag  0808 (2056)\n+0ACF51 LOCAL HEADER #558     04034B50 (67324752)\n+0ACF55 Extract Zip Spec      14 (20) '2.0'\n+0ACF56 Extract OS            00 (0) 'MS-DOS'\n+0ACF57 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07B11A Compression Method    0008 (8) 'Deflated'\n-07B11C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07B120 CRC                   00000000 (0)\n-07B124 Compressed Size       00000000 (0)\n-07B128 Uncompressed Size     00000000 (0)\n-07B12C Filename Length       002E (46)\n-07B12E Extra Length          0000 (0)\n-07B130 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0ACF59 Compression Method    0008 (8) 'Deflated'\n+0ACF5B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0ACF5F CRC                   00000000 (0)\n+0ACF63 Compressed Size       00000000 (0)\n+0ACF67 Uncompressed Size     00000000 (0)\n+0ACF6B Filename Length       002F (47)\n+0ACF6D Extra Length          0000 (0)\n+0ACF6F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7B130: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xACF6F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07B15E PAYLOAD\n+0ACF9E PAYLOAD\n \n-07B3F1 DATA DESCRIPTOR       08074B50 (134695760)\n-07B3F5 CRC                   01244711 (19154705)\n-07B3F9 Compressed Size       00000293 (659)\n-07B3FD Uncompressed Size     000005BD (1469)\n+0AD6F3 DATA DESCRIPTOR       08074B50 (134695760)\n+0AD6F7 CRC                   F51CAE43 (4112297539)\n+0AD6FB Compressed Size       00000755 (1877)\n+0AD6FF Uncompressed Size     00001BD5 (7125)\n \n-07B401 LOCAL HEADER #559     04034B50 (67324752)\n-07B405 Extract Zip Spec      14 (20) '2.0'\n-07B406 Extract OS            00 (0) 'MS-DOS'\n-07B407 General Purpose Flag  0808 (2056)\n+0AD703 LOCAL HEADER #559     04034B50 (67324752)\n+0AD707 Extract Zip Spec      14 (20) '2.0'\n+0AD708 Extract OS            00 (0) 'MS-DOS'\n+0AD709 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07B409 Compression Method    0008 (8) 'Deflated'\n-07B40B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07B40F CRC                   00000000 (0)\n-07B413 Compressed Size       00000000 (0)\n-07B417 Uncompressed Size     00000000 (0)\n-07B41B Filename Length       0035 (53)\n-07B41D Extra Length          0000 (0)\n-07B41F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0AD70B Compression Method    0008 (8) 'Deflated'\n+0AD70D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0AD711 CRC                   00000000 (0)\n+0AD715 Compressed Size       00000000 (0)\n+0AD719 Uncompressed Size     00000000 (0)\n+0AD71D Filename Length       0020 (32)\n+0AD71F Extra Length          0000 (0)\n+0AD721 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7B41F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xAD721: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07B454 PAYLOAD\n+0AD741 PAYLOAD               XX\n \n-07B69C DATA DESCRIPTOR       08074B50 (134695760)\n-07B6A0 CRC                   8B9FA779 (2342496121)\n-07B6A4 Compressed Size       00000248 (584)\n-07B6A8 Uncompressed Size     0000047A (1146)\n+0AD743 DATA DESCRIPTOR       08074B50 (134695760)\n+0AD747 CRC                   00000000 (0)\n+0AD74B Compressed Size       00000002 (2)\n+0AD74F Uncompressed Size     00000000 (0)\n \n-07B6AC LOCAL HEADER #560     04034B50 (67324752)\n-07B6B0 Extract Zip Spec      14 (20) '2.0'\n-07B6B1 Extract OS            00 (0) 'MS-DOS'\n-07B6B2 General Purpose Flag  0808 (2056)\n+0AD753 LOCAL HEADER #560     04034B50 (67324752)\n+0AD757 Extract Zip Spec      14 (20) '2.0'\n+0AD758 Extract OS            00 (0) 'MS-DOS'\n+0AD759 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07B6B4 Compression Method    0008 (8) 'Deflated'\n-07B6B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07B6BA CRC                   00000000 (0)\n-07B6BE Compressed Size       00000000 (0)\n-07B6C2 Uncompressed Size     00000000 (0)\n-07B6C6 Filename Length       0020 (32)\n-07B6C8 Extra Length          0000 (0)\n-07B6CA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0AD75B Compression Method    0008 (8) 'Deflated'\n+0AD75D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0AD761 CRC                   00000000 (0)\n+0AD765 Compressed Size       00000000 (0)\n+0AD769 Uncompressed Size     00000000 (0)\n+0AD76D Filename Length       003F (63)\n+0AD76F Extra Length          0000 (0)\n+0AD771 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7B6CA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xAD771: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07B6EA PAYLOAD               XX\n+0AD7B0 PAYLOAD\n \n-07B6EC DATA DESCRIPTOR       08074B50 (134695760)\n-07B6F0 CRC                   00000000 (0)\n-07B6F4 Compressed Size       00000002 (2)\n-07B6F8 Uncompressed Size     00000000 (0)\n+0ADB32 DATA DESCRIPTOR       08074B50 (134695760)\n+0ADB36 CRC                   DB5A6031 (3680133169)\n+0ADB3A Compressed Size       00000382 (898)\n+0ADB3E Uncompressed Size     000007C1 (1985)\n \n-07B6FC LOCAL HEADER #561     04034B50 (67324752)\n-07B700 Extract Zip Spec      14 (20) '2.0'\n-07B701 Extract OS            00 (0) 'MS-DOS'\n-07B702 General Purpose Flag  0808 (2056)\n+0ADB42 LOCAL HEADER #561     04034B50 (67324752)\n+0ADB46 Extract Zip Spec      14 (20) '2.0'\n+0ADB47 Extract OS            00 (0) 'MS-DOS'\n+0ADB48 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07B704 Compression Method    0008 (8) 'Deflated'\n-07B706 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07B70A CRC                   00000000 (0)\n-07B70E Compressed Size       00000000 (0)\n-07B712 Uncompressed Size     00000000 (0)\n-07B716 Filename Length       002E (46)\n-07B718 Extra Length          0000 (0)\n-07B71A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0ADB4A Compression Method    0008 (8) 'Deflated'\n+0ADB4C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0ADB50 CRC                   00000000 (0)\n+0ADB54 Compressed Size       00000000 (0)\n+0ADB58 Uncompressed Size     00000000 (0)\n+0ADB5C Filename Length       0032 (50)\n+0ADB5E Extra Length          0000 (0)\n+0ADB60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7B71A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xADB60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07B748 PAYLOAD\n+0ADB92 PAYLOAD\n \n-07BC09 DATA DESCRIPTOR       08074B50 (134695760)\n-07BC0D CRC                   6A25F272 (1780871794)\n-07BC11 Compressed Size       000004C1 (1217)\n-07BC15 Uncompressed Size     00000E60 (3680)\n+0AEAD5 DATA DESCRIPTOR       08074B50 (134695760)\n+0AEAD9 CRC                   695EFF74 (1767833460)\n+0AEADD Compressed Size       00000F43 (3907)\n+0AEAE1 Uncompressed Size     00004A07 (18951)\n \n-07BC19 LOCAL HEADER #562     04034B50 (67324752)\n-07BC1D Extract Zip Spec      14 (20) '2.0'\n-07BC1E Extract OS            00 (0) 'MS-DOS'\n-07BC1F General Purpose Flag  0808 (2056)\n+0AEAE5 LOCAL HEADER #562     04034B50 (67324752)\n+0AEAE9 Extract Zip Spec      14 (20) '2.0'\n+0AEAEA Extract OS            00 (0) 'MS-DOS'\n+0AEAEB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07BC21 Compression Method    0008 (8) 'Deflated'\n-07BC23 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07BC27 CRC                   00000000 (0)\n-07BC2B Compressed Size       00000000 (0)\n-07BC2F Uncompressed Size     00000000 (0)\n-07BC33 Filename Length       0034 (52)\n-07BC35 Extra Length          0000 (0)\n-07BC37 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0AEAED Compression Method    0008 (8) 'Deflated'\n+0AEAEF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0AEAF3 CRC                   00000000 (0)\n+0AEAF7 Compressed Size       00000000 (0)\n+0AEAFB Uncompressed Size     00000000 (0)\n+0AEAFF Filename Length       0020 (32)\n+0AEB01 Extra Length          0000 (0)\n+0AEB03 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7BC37: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xAEB03: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07BC6B PAYLOAD\n+0AEB23 PAYLOAD               XX\n \n-07BEB7 DATA DESCRIPTOR       08074B50 (134695760)\n-07BEBB CRC                   94774B8E (2490846094)\n-07BEBF Compressed Size       0000024C (588)\n-07BEC3 Uncompressed Size     00000411 (1041)\n+0AEB25 DATA DESCRIPTOR       08074B50 (134695760)\n+0AEB29 CRC                   00000000 (0)\n+0AEB2D Compressed Size       00000002 (2)\n+0AEB31 Uncompressed Size     00000000 (0)\n \n-07BEC7 LOCAL HEADER #563     04034B50 (67324752)\n-07BECB Extract Zip Spec      14 (20) '2.0'\n-07BECC Extract OS            00 (0) 'MS-DOS'\n-07BECD General Purpose Flag  0808 (2056)\n+0AEB35 LOCAL HEADER #563     04034B50 (67324752)\n+0AEB39 Extract Zip Spec      14 (20) '2.0'\n+0AEB3A Extract OS            00 (0) 'MS-DOS'\n+0AEB3B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07BECF Compression Method    0008 (8) 'Deflated'\n-07BED1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07BED5 CRC                   00000000 (0)\n-07BED9 Compressed Size       00000000 (0)\n-07BEDD Uncompressed Size     00000000 (0)\n-07BEE1 Filename Length       003D (61)\n-07BEE3 Extra Length          0000 (0)\n-07BEE5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0AEB3D Compression Method    0008 (8) 'Deflated'\n+0AEB3F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0AEB43 CRC                   00000000 (0)\n+0AEB47 Compressed Size       00000000 (0)\n+0AEB4B Uncompressed Size     00000000 (0)\n+0AEB4F Filename Length       002E (46)\n+0AEB51 Extra Length          0000 (0)\n+0AEB53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7BEE5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xAEB53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07BF22 PAYLOAD\n+0AEB81 PAYLOAD\n \n-07C1D8 DATA DESCRIPTOR       08074B50 (134695760)\n-07C1DC CRC                   A95D9412 (2841482258)\n-07C1E0 Compressed Size       000002B6 (694)\n-07C1E4 Uncompressed Size     00000532 (1330)\n+0AEF30 DATA DESCRIPTOR       08074B50 (134695760)\n+0AEF34 CRC                   FB06EFC4 (4211535812)\n+0AEF38 Compressed Size       000003AF (943)\n+0AEF3C Uncompressed Size     00000833 (2099)\n \n-07C1E8 LOCAL HEADER #564     04034B50 (67324752)\n-07C1EC Extract Zip Spec      14 (20) '2.0'\n-07C1ED Extract OS            00 (0) 'MS-DOS'\n-07C1EE General Purpose Flag  0808 (2056)\n+0AEF40 LOCAL HEADER #564     04034B50 (67324752)\n+0AEF44 Extract Zip Spec      14 (20) '2.0'\n+0AEF45 Extract OS            00 (0) 'MS-DOS'\n+0AEF46 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07C1F0 Compression Method    0008 (8) 'Deflated'\n-07C1F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07C1F6 CRC                   00000000 (0)\n-07C1FA Compressed Size       00000000 (0)\n-07C1FE Uncompressed Size     00000000 (0)\n-07C202 Filename Length       003F (63)\n-07C204 Extra Length          0000 (0)\n-07C206 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0AEF48 Compression Method    0008 (8) 'Deflated'\n+0AEF4A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0AEF4E CRC                   00000000 (0)\n+0AEF52 Compressed Size       00000000 (0)\n+0AEF56 Uncompressed Size     00000000 (0)\n+0AEF5A Filename Length       0017 (23)\n+0AEF5C Extra Length          0000 (0)\n+0AEF5E Filename              'XXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7C206: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xAEF5E: Filename 'XXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07C245 PAYLOAD\n+0AEF75 PAYLOAD               XX\n \n-07C4F7 DATA DESCRIPTOR       08074B50 (134695760)\n-07C4FB CRC                   578BE304 (1468785412)\n-07C4FF Compressed Size       000002B2 (690)\n-07C503 Uncompressed Size     00000514 (1300)\n+0AEF77 DATA DESCRIPTOR       08074B50 (134695760)\n+0AEF7B CRC                   00000000 (0)\n+0AEF7F Compressed Size       00000002 (2)\n+0AEF83 Uncompressed Size     00000000 (0)\n \n-07C507 LOCAL HEADER #565     04034B50 (67324752)\n-07C50B Extract Zip Spec      14 (20) '2.0'\n-07C50C Extract OS            00 (0) 'MS-DOS'\n-07C50D General Purpose Flag  0808 (2056)\n+0AEF87 LOCAL HEADER #565     04034B50 (67324752)\n+0AEF8B Extract Zip Spec      14 (20) '2.0'\n+0AEF8C Extract OS            00 (0) 'MS-DOS'\n+0AEF8D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07C50F Compression Method    0008 (8) 'Deflated'\n-07C511 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07C515 CRC                   00000000 (0)\n-07C519 Compressed Size       00000000 (0)\n-07C51D Uncompressed Size     00000000 (0)\n-07C521 Filename Length       003F (63)\n-07C523 Extra Length          0000 (0)\n-07C525 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0AEF8F Compression Method    0008 (8) 'Deflated'\n+0AEF91 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0AEF95 CRC                   00000000 (0)\n+0AEF99 Compressed Size       00000000 (0)\n+0AEF9D Uncompressed Size     00000000 (0)\n+0AEFA1 Filename Length       0033 (51)\n+0AEFA3 Extra Length          0000 (0)\n+0AEFA5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7C525: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xAEFA5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07C564 PAYLOAD\n+0AEFD8 PAYLOAD\n \n-07C857 DATA DESCRIPTOR       08074B50 (134695760)\n-07C85B CRC                   8AE0BB27 (2329983783)\n-07C85F Compressed Size       000002F3 (755)\n-07C863 Uncompressed Size     000005DA (1498)\n+0AF6F5 DATA DESCRIPTOR       08074B50 (134695760)\n+0AF6F9 CRC                   18AD9BF8 (414030840)\n+0AF6FD Compressed Size       0000071D (1821)\n+0AF701 Uncompressed Size     0000177E (6014)\n \n-07C867 LOCAL HEADER #566     04034B50 (67324752)\n-07C86B Extract Zip Spec      14 (20) '2.0'\n-07C86C Extract OS            00 (0) 'MS-DOS'\n-07C86D General Purpose Flag  0808 (2056)\n+0AF705 LOCAL HEADER #566     04034B50 (67324752)\n+0AF709 Extract Zip Spec      14 (20) '2.0'\n+0AF70A Extract OS            00 (0) 'MS-DOS'\n+0AF70B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07C86F Compression Method    0008 (8) 'Deflated'\n-07C871 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07C875 CRC                   00000000 (0)\n-07C879 Compressed Size       00000000 (0)\n-07C87D Uncompressed Size     00000000 (0)\n-07C881 Filename Length       003C (60)\n-07C883 Extra Length          0000 (0)\n-07C885 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0AF70D Compression Method    0008 (8) 'Deflated'\n+0AF70F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0AF713 CRC                   00000000 (0)\n+0AF717 Compressed Size       00000000 (0)\n+0AF71B Uncompressed Size     00000000 (0)\n+0AF71F Filename Length       0034 (52)\n+0AF721 Extra Length          0000 (0)\n+0AF723 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7C885: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xAF723: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07C8C1 PAYLOAD\n+0AF757 PAYLOAD\n \n-07CB77 DATA DESCRIPTOR       08074B50 (134695760)\n-07CB7B CRC                   D8EB7635 (3639309877)\n-07CB7F Compressed Size       000002B6 (694)\n-07CB83 Uncompressed Size     0000052E (1326)\n+0AFA18 DATA DESCRIPTOR       08074B50 (134695760)\n+0AFA1C CRC                   1BB78BFC (465013756)\n+0AFA20 Compressed Size       000002C1 (705)\n+0AFA24 Uncompressed Size     0000057E (1406)\n \n-07CB87 LOCAL HEADER #567     04034B50 (67324752)\n-07CB8B Extract Zip Spec      14 (20) '2.0'\n-07CB8C Extract OS            00 (0) 'MS-DOS'\n-07CB8D General Purpose Flag  0808 (2056)\n+0AFA28 LOCAL HEADER #567     04034B50 (67324752)\n+0AFA2C Extract Zip Spec      14 (20) '2.0'\n+0AFA2D Extract OS            00 (0) 'MS-DOS'\n+0AFA2E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07CB8F Compression Method    0008 (8) 'Deflated'\n-07CB91 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07CB95 CRC                   00000000 (0)\n-07CB99 Compressed Size       00000000 (0)\n-07CB9D Uncompressed Size     00000000 (0)\n-07CBA1 Filename Length       003B (59)\n-07CBA3 Extra Length          0000 (0)\n-07CBA5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0AFA30 Compression Method    0008 (8) 'Deflated'\n+0AFA32 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0AFA36 CRC                   00000000 (0)\n+0AFA3A Compressed Size       00000000 (0)\n+0AFA3E Uncompressed Size     00000000 (0)\n+0AFA42 Filename Length       0031 (49)\n+0AFA44 Extra Length          0000 (0)\n+0AFA46 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7CBA5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xAFA46: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07CBE0 PAYLOAD\n+0AFA77 PAYLOAD\n \n-07CE95 DATA DESCRIPTOR       08074B50 (134695760)\n-07CE99 CRC                   7C7DD03D (2088620093)\n-07CE9D Compressed Size       000002B5 (693)\n-07CEA1 Uncompressed Size     00000528 (1320)\n+0AFCE9 DATA DESCRIPTOR       08074B50 (134695760)\n+0AFCED CRC                   163DDCF2 (373153010)\n+0AFCF1 Compressed Size       00000272 (626)\n+0AFCF5 Uncompressed Size     00000482 (1154)\n \n-07CEA5 LOCAL HEADER #568     04034B50 (67324752)\n-07CEA9 Extract Zip Spec      14 (20) '2.0'\n-07CEAA Extract OS            00 (0) 'MS-DOS'\n-07CEAB General Purpose Flag  0808 (2056)\n+0AFCF9 LOCAL HEADER #568     04034B50 (67324752)\n+0AFCFD Extract Zip Spec      14 (20) '2.0'\n+0AFCFE Extract OS            00 (0) 'MS-DOS'\n+0AFCFF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07CEAD Compression Method    0008 (8) 'Deflated'\n-07CEAF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07CEB3 CRC                   00000000 (0)\n-07CEB7 Compressed Size       00000000 (0)\n-07CEBB Uncompressed Size     00000000 (0)\n-07CEBF Filename Length       003D (61)\n-07CEC1 Extra Length          0000 (0)\n-07CEC3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0AFD01 Compression Method    0008 (8) 'Deflated'\n+0AFD03 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0AFD07 CRC                   00000000 (0)\n+0AFD0B Compressed Size       00000000 (0)\n+0AFD0F Uncompressed Size     00000000 (0)\n+0AFD13 Filename Length       0021 (33)\n+0AFD15 Extra Length          0000 (0)\n+0AFD17 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7CEC3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xAFD17: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07CF00 PAYLOAD\n+0AFD38 PAYLOAD\n \n-07D1B2 DATA DESCRIPTOR       08074B50 (134695760)\n-07D1B6 CRC                   39AACB0F (967494415)\n-07D1BA Compressed Size       000002B2 (690)\n-07D1BE Uncompressed Size     0000052E (1326)\n+0B0079 DATA DESCRIPTOR       08074B50 (134695760)\n+0B007D CRC                   6F7884D3 (1870169299)\n+0B0081 Compressed Size       00000341 (833)\n+0B0085 Uncompressed Size     0000064F (1615)\n \n-07D1C2 LOCAL HEADER #569     04034B50 (67324752)\n-07D1C6 Extract Zip Spec      14 (20) '2.0'\n-07D1C7 Extract OS            00 (0) 'MS-DOS'\n-07D1C8 General Purpose Flag  0808 (2056)\n+0B0089 LOCAL HEADER #569     04034B50 (67324752)\n+0B008D Extract Zip Spec      14 (20) '2.0'\n+0B008E Extract OS            00 (0) 'MS-DOS'\n+0B008F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07D1CA Compression Method    0008 (8) 'Deflated'\n-07D1CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07D1D0 CRC                   00000000 (0)\n-07D1D4 Compressed Size       00000000 (0)\n-07D1D8 Uncompressed Size     00000000 (0)\n-07D1DC Filename Length       003A (58)\n-07D1DE Extra Length          0000 (0)\n-07D1E0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B0091 Compression Method    0008 (8) 'Deflated'\n+0B0093 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B0097 CRC                   00000000 (0)\n+0B009B Compressed Size       00000000 (0)\n+0B009F Uncompressed Size     00000000 (0)\n+0B00A3 Filename Length       002B (43)\n+0B00A5 Extra Length          0000 (0)\n+0B00A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7D1E0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB00A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07D21A PAYLOAD\n+0B00D2 PAYLOAD\n \n-07D4CE DATA DESCRIPTOR       08074B50 (134695760)\n-07D4D2 CRC                   5BF59138 (1542820152)\n-07D4D6 Compressed Size       000002B4 (692)\n-07D4DA Uncompressed Size     00000524 (1316)\n+0B04BC DATA DESCRIPTOR       08074B50 (134695760)\n+0B04C0 CRC                   7837B4D1 (2016916689)\n+0B04C4 Compressed Size       000003EA (1002)\n+0B04C8 Uncompressed Size     0000091E (2334)\n \n-07D4DE LOCAL HEADER #570     04034B50 (67324752)\n-07D4E2 Extract Zip Spec      14 (20) '2.0'\n-07D4E3 Extract OS            00 (0) 'MS-DOS'\n-07D4E4 General Purpose Flag  0808 (2056)\n+0B04CC LOCAL HEADER #570     04034B50 (67324752)\n+0B04D0 Extract Zip Spec      14 (20) '2.0'\n+0B04D1 Extract OS            00 (0) 'MS-DOS'\n+0B04D2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07D4E6 Compression Method    0008 (8) 'Deflated'\n-07D4E8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07D4EC CRC                   00000000 (0)\n-07D4F0 Compressed Size       00000000 (0)\n-07D4F4 Uncompressed Size     00000000 (0)\n-07D4F8 Filename Length       003E (62)\n-07D4FA Extra Length          0000 (0)\n-07D4FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B04D4 Compression Method    0008 (8) 'Deflated'\n+0B04D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B04DA CRC                   00000000 (0)\n+0B04DE Compressed Size       00000000 (0)\n+0B04E2 Uncompressed Size     00000000 (0)\n+0B04E6 Filename Length       0029 (41)\n+0B04E8 Extra Length          0000 (0)\n+0B04EA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7D4FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB04EA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07D53A PAYLOAD\n+0B0513 PAYLOAD\n \n-07D7CF DATA DESCRIPTOR       08074B50 (134695760)\n-07D7D3 CRC                   9AA4AEC4 (2594483908)\n-07D7D7 Compressed Size       00000295 (661)\n-07D7DB Uncompressed Size     000004F3 (1267)\n+0B0AEF DATA DESCRIPTOR       08074B50 (134695760)\n+0B0AF3 CRC                   1FC70E2E (533138990)\n+0B0AF7 Compressed Size       000005DC (1500)\n+0B0AFB Uncompressed Size     000012E0 (4832)\n \n-07D7DF LOCAL HEADER #571     04034B50 (67324752)\n-07D7E3 Extract Zip Spec      14 (20) '2.0'\n-07D7E4 Extract OS            00 (0) 'MS-DOS'\n-07D7E5 General Purpose Flag  0808 (2056)\n+0B0AFF LOCAL HEADER #571     04034B50 (67324752)\n+0B0B03 Extract Zip Spec      14 (20) '2.0'\n+0B0B04 Extract OS            00 (0) 'MS-DOS'\n+0B0B05 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07D7E7 Compression Method    0008 (8) 'Deflated'\n-07D7E9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07D7ED CRC                   00000000 (0)\n-07D7F1 Compressed Size       00000000 (0)\n-07D7F5 Uncompressed Size     00000000 (0)\n-07D7F9 Filename Length       003B (59)\n-07D7FB Extra Length          0000 (0)\n-07D7FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B0B07 Compression Method    0008 (8) 'Deflated'\n+0B0B09 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B0B0D CRC                   00000000 (0)\n+0B0B11 Compressed Size       00000000 (0)\n+0B0B15 Uncompressed Size     00000000 (0)\n+0B0B19 Filename Length       0028 (40)\n+0B0B1B Extra Length          0000 (0)\n+0B0B1D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7D7FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB0B1D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07D838 PAYLOAD\n+0B0B45 PAYLOAD\n \n-07DAEC DATA DESCRIPTOR       08074B50 (134695760)\n-07DAF0 CRC                   FD88956D (4253586797)\n-07DAF4 Compressed Size       000002B4 (692)\n-07DAF8 Uncompressed Size     00000529 (1321)\n+0B0DB0 DATA DESCRIPTOR       08074B50 (134695760)\n+0B0DB4 CRC                   34F679E6 (888568294)\n+0B0DB8 Compressed Size       0000026B (619)\n+0B0DBC Uncompressed Size     00000485 (1157)\n \n-07DAFC LOCAL HEADER #572     04034B50 (67324752)\n-07DB00 Extract Zip Spec      14 (20) '2.0'\n-07DB01 Extract OS            00 (0) 'MS-DOS'\n-07DB02 General Purpose Flag  0808 (2056)\n+0B0DC0 LOCAL HEADER #572     04034B50 (67324752)\n+0B0DC4 Extract Zip Spec      14 (20) '2.0'\n+0B0DC5 Extract OS            00 (0) 'MS-DOS'\n+0B0DC6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07DB04 Compression Method    0008 (8) 'Deflated'\n-07DB06 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07DB0A CRC                   00000000 (0)\n-07DB0E Compressed Size       00000000 (0)\n-07DB12 Uncompressed Size     00000000 (0)\n-07DB16 Filename Length       003C (60)\n-07DB18 Extra Length          0000 (0)\n-07DB1A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B0DC8 Compression Method    0008 (8) 'Deflated'\n+0B0DCA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B0DCE CRC                   00000000 (0)\n+0B0DD2 Compressed Size       00000000 (0)\n+0B0DD6 Uncompressed Size     00000000 (0)\n+0B0DDA Filename Length       0030 (48)\n+0B0DDC Extra Length          0000 (0)\n+0B0DDE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7DB1A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB0DDE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07DB56 PAYLOAD\n+0B0E0E PAYLOAD\n \n-07DDB5 DATA DESCRIPTOR       08074B50 (134695760)\n-07DDB9 CRC                   88F80863 (2297956451)\n-07DDBD Compressed Size       0000025F (607)\n-07DDC1 Uncompressed Size     00000452 (1106)\n+0B143B DATA DESCRIPTOR       08074B50 (134695760)\n+0B143F CRC                   A2725211 (2725401105)\n+0B1443 Compressed Size       0000062D (1581)\n+0B1447 Uncompressed Size     0000128F (4751)\n \n-07DDC5 LOCAL HEADER #573     04034B50 (67324752)\n-07DDC9 Extract Zip Spec      14 (20) '2.0'\n-07DDCA Extract OS            00 (0) 'MS-DOS'\n-07DDCB General Purpose Flag  0808 (2056)\n+0B144B LOCAL HEADER #573     04034B50 (67324752)\n+0B144F Extract Zip Spec      14 (20) '2.0'\n+0B1450 Extract OS            00 (0) 'MS-DOS'\n+0B1451 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07DDCD Compression Method    0008 (8) 'Deflated'\n-07DDCF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07DDD3 CRC                   00000000 (0)\n-07DDD7 Compressed Size       00000000 (0)\n-07DDDB Uncompressed Size     00000000 (0)\n-07DDDF Filename Length       0029 (41)\n-07DDE1 Extra Length          0000 (0)\n-07DDE3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B1453 Compression Method    0008 (8) 'Deflated'\n+0B1455 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B1459 CRC                   00000000 (0)\n+0B145D Compressed Size       00000000 (0)\n+0B1461 Uncompressed Size     00000000 (0)\n+0B1465 Filename Length       0026 (38)\n+0B1467 Extra Length          0000 (0)\n+0B1469 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7DDE3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB1469: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07DE0C PAYLOAD               XX\n+0B148F PAYLOAD\n \n-07DE0E DATA DESCRIPTOR       08074B50 (134695760)\n-07DE12 CRC                   00000000 (0)\n-07DE16 Compressed Size       00000002 (2)\n-07DE1A Uncompressed Size     00000000 (0)\n+0B19EE DATA DESCRIPTOR       08074B50 (134695760)\n+0B19F2 CRC                   646CD426 (1684853798)\n+0B19F6 Compressed Size       0000055F (1375)\n+0B19FA Uncompressed Size     0000153D (5437)\n \n-07DE1E LOCAL HEADER #574     04034B50 (67324752)\n-07DE22 Extract Zip Spec      14 (20) '2.0'\n-07DE23 Extract OS            00 (0) 'MS-DOS'\n-07DE24 General Purpose Flag  0808 (2056)\n+0B19FE LOCAL HEADER #574     04034B50 (67324752)\n+0B1A02 Extract Zip Spec      14 (20) '2.0'\n+0B1A03 Extract OS            00 (0) 'MS-DOS'\n+0B1A04 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07DE26 Compression Method    0008 (8) 'Deflated'\n-07DE28 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07DE2C CRC                   00000000 (0)\n-07DE30 Compressed Size       00000000 (0)\n-07DE34 Uncompressed Size     00000000 (0)\n-07DE38 Filename Length       0041 (65)\n-07DE3A Extra Length          0000 (0)\n-07DE3C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B1A06 Compression Method    0008 (8) 'Deflated'\n+0B1A08 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B1A0C CRC                   00000000 (0)\n+0B1A10 Compressed Size       00000000 (0)\n+0B1A14 Uncompressed Size     00000000 (0)\n+0B1A18 Filename Length       0033 (51)\n+0B1A1A Extra Length          0000 (0)\n+0B1A1C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7DE3C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB1A1C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07DE7D PAYLOAD\n+0B1A4F PAYLOAD\n \n-07E344 DATA DESCRIPTOR       08074B50 (134695760)\n-07E348 CRC                   56E92431 (1458119729)\n-07E34C Compressed Size       000004C7 (1223)\n-07E350 Uncompressed Size     00000D31 (3377)\n+0B1CDD DATA DESCRIPTOR       08074B50 (134695760)\n+0B1CE1 CRC                   D4D0313F (3570413887)\n+0B1CE5 Compressed Size       0000028E (654)\n+0B1CE9 Uncompressed Size     000004DD (1245)\n \n-07E354 LOCAL HEADER #575     04034B50 (67324752)\n-07E358 Extract Zip Spec      14 (20) '2.0'\n-07E359 Extract OS            00 (0) 'MS-DOS'\n-07E35A General Purpose Flag  0808 (2056)\n+0B1CED LOCAL HEADER #575     04034B50 (67324752)\n+0B1CF1 Extract Zip Spec      14 (20) '2.0'\n+0B1CF2 Extract OS            00 (0) 'MS-DOS'\n+0B1CF3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07E35C Compression Method    0008 (8) 'Deflated'\n-07E35E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07E362 CRC                   00000000 (0)\n-07E366 Compressed Size       00000000 (0)\n-07E36A Uncompressed Size     00000000 (0)\n-07E36E Filename Length       0044 (68)\n-07E370 Extra Length          0000 (0)\n-07E372 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B1CF5 Compression Method    0008 (8) 'Deflated'\n+0B1CF7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B1CFB CRC                   00000000 (0)\n+0B1CFF Compressed Size       00000000 (0)\n+0B1D03 Uncompressed Size     00000000 (0)\n+0B1D07 Filename Length       001B (27)\n+0B1D09 Extra Length          0000 (0)\n+0B1D0B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7E372: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB1D0B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07E3B6 PAYLOAD\n+0B1D26 PAYLOAD               XX\n \n-07E734 DATA DESCRIPTOR       08074B50 (134695760)\n-07E738 CRC                   54A7512C (1420251436)\n-07E73C Compressed Size       0000037E (894)\n-07E740 Uncompressed Size     00000774 (1908)\n+0B1D28 DATA DESCRIPTOR       08074B50 (134695760)\n+0B1D2C CRC                   00000000 (0)\n+0B1D30 Compressed Size       00000002 (2)\n+0B1D34 Uncompressed Size     00000000 (0)\n \n-07E744 LOCAL HEADER #576     04034B50 (67324752)\n-07E748 Extract Zip Spec      14 (20) '2.0'\n-07E749 Extract OS            00 (0) 'MS-DOS'\n-07E74A General Purpose Flag  0808 (2056)\n+0B1D38 LOCAL HEADER #576     04034B50 (67324752)\n+0B1D3C Extract Zip Spec      14 (20) '2.0'\n+0B1D3D Extract OS            00 (0) 'MS-DOS'\n+0B1D3E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07E74C Compression Method    0008 (8) 'Deflated'\n-07E74E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07E752 CRC                   00000000 (0)\n-07E756 Compressed Size       00000000 (0)\n-07E75A Uncompressed Size     00000000 (0)\n-07E75E Filename Length       004C (76)\n-07E760 Extra Length          0000 (0)\n-07E762 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B1D40 Compression Method    0008 (8) 'Deflated'\n+0B1D42 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B1D46 CRC                   00000000 (0)\n+0B1D4A Compressed Size       00000000 (0)\n+0B1D4E Uncompressed Size     00000000 (0)\n+0B1D52 Filename Length       0037 (55)\n+0B1D54 Extra Length          0000 (0)\n+0B1D56 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7E762: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB1D56: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07E7AE PAYLOAD\n+0B1D8D PAYLOAD\n \n-07EA5F DATA DESCRIPTOR       08074B50 (134695760)\n-07EA63 CRC                   44B63BF0 (1152793584)\n-07EA67 Compressed Size       000002B1 (689)\n-07EA6B Uncompressed Size     0000050F (1295)\n+0B1FC1 DATA DESCRIPTOR       08074B50 (134695760)\n+0B1FC5 CRC                   63368ED1 (1664519889)\n+0B1FC9 Compressed Size       00000234 (564)\n+0B1FCD Uncompressed Size     000003FE (1022)\n \n-07EA6F LOCAL HEADER #577     04034B50 (67324752)\n-07EA73 Extract Zip Spec      14 (20) '2.0'\n-07EA74 Extract OS            00 (0) 'MS-DOS'\n-07EA75 General Purpose Flag  0808 (2056)\n+0B1FD1 LOCAL HEADER #577     04034B50 (67324752)\n+0B1FD5 Extract Zip Spec      14 (20) '2.0'\n+0B1FD6 Extract OS            00 (0) 'MS-DOS'\n+0B1FD7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07EA77 Compression Method    0008 (8) 'Deflated'\n-07EA79 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07EA7D CRC                   00000000 (0)\n-07EA81 Compressed Size       00000000 (0)\n-07EA85 Uncompressed Size     00000000 (0)\n-07EA89 Filename Length       004C (76)\n-07EA8B Extra Length          0000 (0)\n-07EA8D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B1FD9 Compression Method    0008 (8) 'Deflated'\n+0B1FDB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B1FDF CRC                   00000000 (0)\n+0B1FE3 Compressed Size       00000000 (0)\n+0B1FE7 Uncompressed Size     00000000 (0)\n+0B1FEB Filename Length       0030 (48)\n+0B1FED Extra Length          0000 (0)\n+0B1FEF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7EA8D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB1FEF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07EAD9 PAYLOAD\n+0B201F PAYLOAD\n \n-07ED93 DATA DESCRIPTOR       08074B50 (134695760)\n-07ED97 CRC                   6FDF7D92 (1876917650)\n-07ED9B Compressed Size       000002BA (698)\n-07ED9F Uncompressed Size     00000538 (1336)\n+0B264F DATA DESCRIPTOR       08074B50 (134695760)\n+0B2653 CRC                   876E0335 (2272133941)\n+0B2657 Compressed Size       00000630 (1584)\n+0B265B Uncompressed Size     00001328 (4904)\n \n-07EDA3 LOCAL HEADER #578     04034B50 (67324752)\n-07EDA7 Extract Zip Spec      14 (20) '2.0'\n-07EDA8 Extract OS            00 (0) 'MS-DOS'\n-07EDA9 General Purpose Flag  0808 (2056)\n+0B265F LOCAL HEADER #578     04034B50 (67324752)\n+0B2663 Extract Zip Spec      14 (20) '2.0'\n+0B2664 Extract OS            00 (0) 'MS-DOS'\n+0B2665 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07EDAB Compression Method    0008 (8) 'Deflated'\n-07EDAD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07EDB1 CRC                   00000000 (0)\n-07EDB5 Compressed Size       00000000 (0)\n-07EDB9 Uncompressed Size     00000000 (0)\n-07EDBD Filename Length       0049 (73)\n-07EDBF Extra Length          0000 (0)\n-07EDC1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B2667 Compression Method    0008 (8) 'Deflated'\n+0B2669 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B266D CRC                   00000000 (0)\n+0B2671 Compressed Size       00000000 (0)\n+0B2675 Uncompressed Size     00000000 (0)\n+0B2679 Filename Length       002F (47)\n+0B267B Extra Length          0000 (0)\n+0B267D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7EDC1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB267D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07EE0A PAYLOAD\n+0B26AC PAYLOAD\n \n-07F0AE DATA DESCRIPTOR       08074B50 (134695760)\n-07F0B2 CRC                   E28B1205 (3800764933)\n-07F0B6 Compressed Size       000002A4 (676)\n-07F0BA Uncompressed Size     000004D6 (1238)\n+0B29D3 DATA DESCRIPTOR       08074B50 (134695760)\n+0B29D7 CRC                   1E67CB82 (510118786)\n+0B29DB Compressed Size       00000327 (807)\n+0B29DF Uncompressed Size     00000A90 (2704)\n \n-07F0BE LOCAL HEADER #579     04034B50 (67324752)\n-07F0C2 Extract Zip Spec      14 (20) '2.0'\n-07F0C3 Extract OS            00 (0) 'MS-DOS'\n-07F0C4 General Purpose Flag  0808 (2056)\n+0B29E3 LOCAL HEADER #579     04034B50 (67324752)\n+0B29E7 Extract Zip Spec      14 (20) '2.0'\n+0B29E8 Extract OS            00 (0) 'MS-DOS'\n+0B29E9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07F0C6 Compression Method    0008 (8) 'Deflated'\n-07F0C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07F0CC CRC                   00000000 (0)\n-07F0D0 Compressed Size       00000000 (0)\n-07F0D4 Uncompressed Size     00000000 (0)\n-07F0D8 Filename Length       0044 (68)\n-07F0DA Extra Length          0000 (0)\n-07F0DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B29EB Compression Method    0008 (8) 'Deflated'\n+0B29ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B29F1 CRC                   00000000 (0)\n+0B29F5 Compressed Size       00000000 (0)\n+0B29F9 Uncompressed Size     00000000 (0)\n+0B29FD Filename Length       0036 (54)\n+0B29FF Extra Length          0000 (0)\n+0B2A01 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7F0DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB2A01: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07F120 PAYLOAD\n+0B2A37 PAYLOAD\n \n-07F3BF DATA DESCRIPTOR       08074B50 (134695760)\n-07F3C3 CRC                   8C9A6BCF (2358930383)\n-07F3C7 Compressed Size       0000029F (671)\n-07F3CB Uncompressed Size     000004BF (1215)\n+0B2C69 DATA DESCRIPTOR       08074B50 (134695760)\n+0B2C6D CRC                   61CAA47B (1640670331)\n+0B2C71 Compressed Size       00000232 (562)\n+0B2C75 Uncompressed Size     000003DE (990)\n \n-07F3CF LOCAL HEADER #580     04034B50 (67324752)\n-07F3D3 Extract Zip Spec      14 (20) '2.0'\n-07F3D4 Extract OS            00 (0) 'MS-DOS'\n-07F3D5 General Purpose Flag  0808 (2056)\n+0B2C79 LOCAL HEADER #580     04034B50 (67324752)\n+0B2C7D Extract Zip Spec      14 (20) '2.0'\n+0B2C7E Extract OS            00 (0) 'MS-DOS'\n+0B2C7F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07F3D7 Compression Method    0008 (8) 'Deflated'\n-07F3D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07F3DD CRC                   00000000 (0)\n-07F3E1 Compressed Size       00000000 (0)\n-07F3E5 Uncompressed Size     00000000 (0)\n-07F3E9 Filename Length       0047 (71)\n-07F3EB Extra Length          0000 (0)\n-07F3ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B2C81 Compression Method    0008 (8) 'Deflated'\n+0B2C83 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B2C87 CRC                   00000000 (0)\n+0B2C8B Compressed Size       00000000 (0)\n+0B2C8F Uncompressed Size     00000000 (0)\n+0B2C93 Filename Length       0033 (51)\n+0B2C95 Extra Length          0000 (0)\n+0B2C97 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7F3ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB2C97: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07F434 PAYLOAD\n+0B2CCA PAYLOAD\n \n-07F8C3 DATA DESCRIPTOR       08074B50 (134695760)\n-07F8C7 CRC                   17228680 (388138624)\n-07F8CB Compressed Size       0000048F (1167)\n-07F8CF Uncompressed Size     00000C22 (3106)\n+0B3147 DATA DESCRIPTOR       08074B50 (134695760)\n+0B314B CRC                   607FF27E (1618997886)\n+0B314F Compressed Size       0000047D (1149)\n+0B3153 Uncompressed Size     00000C53 (3155)\n \n-07F8D3 LOCAL HEADER #581     04034B50 (67324752)\n-07F8D7 Extract Zip Spec      14 (20) '2.0'\n-07F8D8 Extract OS            00 (0) 'MS-DOS'\n-07F8D9 General Purpose Flag  0808 (2056)\n+0B3157 LOCAL HEADER #581     04034B50 (67324752)\n+0B315B Extract Zip Spec      14 (20) '2.0'\n+0B315C Extract OS            00 (0) 'MS-DOS'\n+0B315D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07F8DB Compression Method    0008 (8) 'Deflated'\n-07F8DD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07F8E1 CRC                   00000000 (0)\n-07F8E5 Compressed Size       00000000 (0)\n-07F8E9 Uncompressed Size     00000000 (0)\n-07F8ED Filename Length       0043 (67)\n-07F8EF Extra Length          0000 (0)\n-07F8F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B315F Compression Method    0008 (8) 'Deflated'\n+0B3161 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B3165 CRC                   00000000 (0)\n+0B3169 Compressed Size       00000000 (0)\n+0B316D Uncompressed Size     00000000 (0)\n+0B3171 Filename Length       002D (45)\n+0B3173 Extra Length          0000 (0)\n+0B3175 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7F8F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB3175: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07F934 PAYLOAD\n+0B31A2 PAYLOAD\n \n-07FBD1 DATA DESCRIPTOR       08074B50 (134695760)\n-07FBD5 CRC                   90DCE257 (2430394967)\n-07FBD9 Compressed Size       0000029D (669)\n-07FBDD Uncompressed Size     000004B8 (1208)\n+0B394E DATA DESCRIPTOR       08074B50 (134695760)\n+0B3952 CRC                   7B7924E9 (2071536873)\n+0B3956 Compressed Size       000007AC (1964)\n+0B395A Uncompressed Size     00001C78 (7288)\n \n-07FBE1 LOCAL HEADER #582     04034B50 (67324752)\n-07FBE5 Extract Zip Spec      14 (20) '2.0'\n-07FBE6 Extract OS            00 (0) 'MS-DOS'\n-07FBE7 General Purpose Flag  0808 (2056)\n+0B395E LOCAL HEADER #582     04034B50 (67324752)\n+0B3962 Extract Zip Spec      14 (20) '2.0'\n+0B3963 Extract OS            00 (0) 'MS-DOS'\n+0B3964 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-07FBE9 Compression Method    0008 (8) 'Deflated'\n-07FBEB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-07FBEF CRC                   00000000 (0)\n-07FBF3 Compressed Size       00000000 (0)\n-07FBF7 Uncompressed Size     00000000 (0)\n-07FBFB Filename Length       0049 (73)\n-07FBFD Extra Length          0000 (0)\n-07FBFF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B3966 Compression Method    0008 (8) 'Deflated'\n+0B3968 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B396C CRC                   00000000 (0)\n+0B3970 Compressed Size       00000000 (0)\n+0B3974 Uncompressed Size     00000000 (0)\n+0B3978 Filename Length       0030 (48)\n+0B397A Extra Length          0000 (0)\n+0B397C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x7FBFF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB397C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-07FC48 PAYLOAD\n+0B39AC PAYLOAD\n \n-07FFEC DATA DESCRIPTOR       08074B50 (134695760)\n-07FFF0 CRC                   092E21B3 (154018227)\n-07FFF4 Compressed Size       000003A4 (932)\n-07FFF8 Uncompressed Size     00000873 (2163)\n+0B3DE5 DATA DESCRIPTOR       08074B50 (134695760)\n+0B3DE9 CRC                   707F9167 (1887408487)\n+0B3DED Compressed Size       00000439 (1081)\n+0B3DF1 Uncompressed Size     00000C0D (3085)\n \n-07FFFC LOCAL HEADER #583     04034B50 (67324752)\n-080000 Extract Zip Spec      14 (20) '2.0'\n-080001 Extract OS            00 (0) 'MS-DOS'\n-080002 General Purpose Flag  0808 (2056)\n+0B3DF5 LOCAL HEADER #583     04034B50 (67324752)\n+0B3DF9 Extract Zip Spec      14 (20) '2.0'\n+0B3DFA Extract OS            00 (0) 'MS-DOS'\n+0B3DFB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-080004 Compression Method    0008 (8) 'Deflated'\n-080006 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08000A CRC                   00000000 (0)\n-08000E Compressed Size       00000000 (0)\n-080012 Uncompressed Size     00000000 (0)\n-080016 Filename Length       004B (75)\n-080018 Extra Length          0000 (0)\n-08001A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B3DFD Compression Method    0008 (8) 'Deflated'\n+0B3DFF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B3E03 CRC                   00000000 (0)\n+0B3E07 Compressed Size       00000000 (0)\n+0B3E0B Uncompressed Size     00000000 (0)\n+0B3E0F Filename Length       0033 (51)\n+0B3E11 Extra Length          0000 (0)\n+0B3E13 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8001A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB3E13: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-080065 PAYLOAD\n+0B3E46 PAYLOAD\n \n-08030D DATA DESCRIPTOR       08074B50 (134695760)\n-080311 CRC                   D50997CD (3574175693)\n-080315 Compressed Size       000002A8 (680)\n-080319 Uncompressed Size     000004F1 (1265)\n+0B4212 DATA DESCRIPTOR       08074B50 (134695760)\n+0B4216 CRC                   FDA638C9 (4255529161)\n+0B421A Compressed Size       000003CC (972)\n+0B421E Uncompressed Size     00000AC1 (2753)\n \n-08031D LOCAL HEADER #584     04034B50 (67324752)\n-080321 Extract Zip Spec      14 (20) '2.0'\n-080322 Extract OS            00 (0) 'MS-DOS'\n-080323 General Purpose Flag  0808 (2056)\n+0B4222 LOCAL HEADER #584     04034B50 (67324752)\n+0B4226 Extract Zip Spec      14 (20) '2.0'\n+0B4227 Extract OS            00 (0) 'MS-DOS'\n+0B4228 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-080325 Compression Method    0008 (8) 'Deflated'\n-080327 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08032B CRC                   00000000 (0)\n-08032F Compressed Size       00000000 (0)\n-080333 Uncompressed Size     00000000 (0)\n-080337 Filename Length       0044 (68)\n-080339 Extra Length          0000 (0)\n-08033B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B422A Compression Method    0008 (8) 'Deflated'\n+0B422C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B4230 CRC                   00000000 (0)\n+0B4234 Compressed Size       00000000 (0)\n+0B4238 Uncompressed Size     00000000 (0)\n+0B423C Filename Length       002D (45)\n+0B423E Extra Length          0000 (0)\n+0B4240 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8033B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB4240: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08037F PAYLOAD\n+0B426D PAYLOAD\n \n-080625 DATA DESCRIPTOR       08074B50 (134695760)\n-080629 CRC                   1389D7CB (327800779)\n-08062D Compressed Size       000002A6 (678)\n-080631 Uncompressed Size     000004D7 (1239)\n+0B493D DATA DESCRIPTOR       08074B50 (134695760)\n+0B4941 CRC                   5FA42AEE (1604594414)\n+0B4945 Compressed Size       000006D0 (1744)\n+0B4949 Uncompressed Size     00001ADA (6874)\n \n-080635 LOCAL HEADER #585     04034B50 (67324752)\n-080639 Extract Zip Spec      14 (20) '2.0'\n-08063A Extract OS            00 (0) 'MS-DOS'\n-08063B General Purpose Flag  0808 (2056)\n+0B494D LOCAL HEADER #585     04034B50 (67324752)\n+0B4951 Extract Zip Spec      14 (20) '2.0'\n+0B4952 Extract OS            00 (0) 'MS-DOS'\n+0B4953 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08063D Compression Method    0008 (8) 'Deflated'\n-08063F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-080643 CRC                   00000000 (0)\n-080647 Compressed Size       00000000 (0)\n-08064B Uncompressed Size     00000000 (0)\n-08064F Filename Length       0042 (66)\n-080651 Extra Length          0000 (0)\n-080653 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B4955 Compression Method    0008 (8) 'Deflated'\n+0B4957 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B495B CRC                   00000000 (0)\n+0B495F Compressed Size       00000000 (0)\n+0B4963 Uncompressed Size     00000000 (0)\n+0B4967 Filename Length       0031 (49)\n+0B4969 Extra Length          0000 (0)\n+0B496B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x80653: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB496B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-080695 PAYLOAD\n+0B499C PAYLOAD\n \n-080931 DATA DESCRIPTOR       08074B50 (134695760)\n-080935 CRC                   0204ADF7 (33861111)\n-080939 Compressed Size       0000029C (668)\n-08093D Uncompressed Size     000004AF (1199)\n+0B4F18 DATA DESCRIPTOR       08074B50 (134695760)\n+0B4F1C CRC                   619FED81 (1637870977)\n+0B4F20 Compressed Size       0000057C (1404)\n+0B4F24 Uncompressed Size     00001181 (4481)\n \n-080941 LOCAL HEADER #586     04034B50 (67324752)\n-080945 Extract Zip Spec      14 (20) '2.0'\n-080946 Extract OS            00 (0) 'MS-DOS'\n-080947 General Purpose Flag  0808 (2056)\n+0B4F28 LOCAL HEADER #586     04034B50 (67324752)\n+0B4F2C Extract Zip Spec      14 (20) '2.0'\n+0B4F2D Extract OS            00 (0) 'MS-DOS'\n+0B4F2E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-080949 Compression Method    0008 (8) 'Deflated'\n-08094B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08094F CRC                   00000000 (0)\n-080953 Compressed Size       00000000 (0)\n-080957 Uncompressed Size     00000000 (0)\n-08095B Filename Length       0048 (72)\n-08095D Extra Length          0000 (0)\n-08095F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B4F30 Compression Method    0008 (8) 'Deflated'\n+0B4F32 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B4F36 CRC                   00000000 (0)\n+0B4F3A Compressed Size       00000000 (0)\n+0B4F3E Uncompressed Size     00000000 (0)\n+0B4F42 Filename Length       002F (47)\n+0B4F44 Extra Length          0000 (0)\n+0B4F46 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8095F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB4F46: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0809A7 PAYLOAD\n+0B4F75 PAYLOAD\n \n-080C46 DATA DESCRIPTOR       08074B50 (134695760)\n-080C4A CRC                   DE2764C3 (3727123651)\n-080C4E Compressed Size       0000029F (671)\n-080C52 Uncompressed Size     000004C9 (1225)\n+0B53B4 DATA DESCRIPTOR       08074B50 (134695760)\n+0B53B8 CRC                   E8166721 (3893782305)\n+0B53BC Compressed Size       0000043F (1087)\n+0B53C0 Uncompressed Size     00000C82 (3202)\n \n-080C56 LOCAL HEADER #587     04034B50 (67324752)\n-080C5A Extract Zip Spec      14 (20) '2.0'\n-080C5B Extract OS            00 (0) 'MS-DOS'\n-080C5C General Purpose Flag  0808 (2056)\n+0B53C4 LOCAL HEADER #587     04034B50 (67324752)\n+0B53C8 Extract Zip Spec      14 (20) '2.0'\n+0B53C9 Extract OS            00 (0) 'MS-DOS'\n+0B53CA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-080C5E Compression Method    0008 (8) 'Deflated'\n-080C60 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-080C64 CRC                   00000000 (0)\n-080C68 Compressed Size       00000000 (0)\n-080C6C Uncompressed Size     00000000 (0)\n-080C70 Filename Length       004C (76)\n-080C72 Extra Length          0000 (0)\n-080C74 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B53CC Compression Method    0008 (8) 'Deflated'\n+0B53CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B53D2 CRC                   00000000 (0)\n+0B53D6 Compressed Size       00000000 (0)\n+0B53DA Uncompressed Size     00000000 (0)\n+0B53DE Filename Length       0031 (49)\n+0B53E0 Extra Length          0000 (0)\n+0B53E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x80C74: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB53E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-080CC0 PAYLOAD\n+0B5413 PAYLOAD\n \n-080F6E DATA DESCRIPTOR       08074B50 (134695760)\n-080F72 CRC                   A00FADB6 (2685382070)\n-080F76 Compressed Size       000002AE (686)\n-080F7A Uncompressed Size     0000050B (1291)\n+0B5BB4 DATA DESCRIPTOR       08074B50 (134695760)\n+0B5BB8 CRC                   363316B0 (909317808)\n+0B5BBC Compressed Size       000007A1 (1953)\n+0B5BC0 Uncompressed Size     00001D36 (7478)\n \n-080F7E LOCAL HEADER #588     04034B50 (67324752)\n-080F82 Extract Zip Spec      14 (20) '2.0'\n-080F83 Extract OS            00 (0) 'MS-DOS'\n-080F84 General Purpose Flag  0808 (2056)\n+0B5BC4 LOCAL HEADER #588     04034B50 (67324752)\n+0B5BC8 Extract Zip Spec      14 (20) '2.0'\n+0B5BC9 Extract OS            00 (0) 'MS-DOS'\n+0B5BCA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-080F86 Compression Method    0008 (8) 'Deflated'\n-080F88 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-080F8C CRC                   00000000 (0)\n-080F90 Compressed Size       00000000 (0)\n-080F94 Uncompressed Size     00000000 (0)\n-080F98 Filename Length       0022 (34)\n-080F9A Extra Length          0000 (0)\n-080F9C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B5BCC Compression Method    0008 (8) 'Deflated'\n+0B5BCE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B5BD2 CRC                   00000000 (0)\n+0B5BD6 Compressed Size       00000000 (0)\n+0B5BDA Uncompressed Size     00000000 (0)\n+0B5BDE Filename Length       001D (29)\n+0B5BE0 Extra Length          0000 (0)\n+0B5BE2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x80F9C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB5BE2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-080FBE PAYLOAD               XX\n+0B5BFF PAYLOAD               XX\n \n-080FC0 DATA DESCRIPTOR       08074B50 (134695760)\n-080FC4 CRC                   00000000 (0)\n-080FC8 Compressed Size       00000002 (2)\n-080FCC Uncompressed Size     00000000 (0)\n+0B5C01 DATA DESCRIPTOR       08074B50 (134695760)\n+0B5C05 CRC                   00000000 (0)\n+0B5C09 Compressed Size       00000002 (2)\n+0B5C0D Uncompressed Size     00000000 (0)\n \n-080FD0 LOCAL HEADER #589     04034B50 (67324752)\n-080FD4 Extract Zip Spec      14 (20) '2.0'\n-080FD5 Extract OS            00 (0) 'MS-DOS'\n-080FD6 General Purpose Flag  0808 (2056)\n+0B5C11 LOCAL HEADER #589     04034B50 (67324752)\n+0B5C15 Extract Zip Spec      14 (20) '2.0'\n+0B5C16 Extract OS            00 (0) 'MS-DOS'\n+0B5C17 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-080FD8 Compression Method    0008 (8) 'Deflated'\n-080FDA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-080FDE CRC                   00000000 (0)\n-080FE2 Compressed Size       00000000 (0)\n-080FE6 Uncompressed Size     00000000 (0)\n-080FEA Filename Length       002F (47)\n-080FEC Extra Length          0000 (0)\n-080FEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B5C19 Compression Method    0008 (8) 'Deflated'\n+0B5C1B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B5C1F CRC                   00000000 (0)\n+0B5C23 Compressed Size       00000000 (0)\n+0B5C27 Uncompressed Size     00000000 (0)\n+0B5C2B Filename Length       002D (45)\n+0B5C2D Extra Length          0000 (0)\n+0B5C2F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x80FEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB5C2F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08101D PAYLOAD\n+0B5C5C PAYLOAD\n \n-081501 DATA DESCRIPTOR       08074B50 (134695760)\n-081505 CRC                   9A2D2058 (2586648664)\n-081509 Compressed Size       000004E4 (1252)\n-08150D Uncompressed Size     00000D7A (3450)\n+0B5E68 DATA DESCRIPTOR       08074B50 (134695760)\n+0B5E6C CRC                   8C6F354A (2356098378)\n+0B5E70 Compressed Size       0000020C (524)\n+0B5E74 Uncompressed Size     00000398 (920)\n \n-081511 LOCAL HEADER #590     04034B50 (67324752)\n-081515 Extract Zip Spec      14 (20) '2.0'\n-081516 Extract OS            00 (0) 'MS-DOS'\n-081517 General Purpose Flag  0808 (2056)\n+0B5E78 LOCAL HEADER #590     04034B50 (67324752)\n+0B5E7C Extract Zip Spec      14 (20) '2.0'\n+0B5E7D Extract OS            00 (0) 'MS-DOS'\n+0B5E7E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-081519 Compression Method    0008 (8) 'Deflated'\n-08151B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08151F CRC                   00000000 (0)\n-081523 Compressed Size       00000000 (0)\n-081527 Uncompressed Size     00000000 (0)\n-08152B Filename Length       002F (47)\n-08152D Extra Length          0000 (0)\n-08152F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B5E80 Compression Method    0008 (8) 'Deflated'\n+0B5E82 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B5E86 CRC                   00000000 (0)\n+0B5E8A Compressed Size       00000000 (0)\n+0B5E8E Uncompressed Size     00000000 (0)\n+0B5E92 Filename Length       002D (45)\n+0B5E94 Extra Length          0000 (0)\n+0B5E96 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8152F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB5E96: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08155E PAYLOAD\n+0B5EC3 PAYLOAD\n \n-0819FC DATA DESCRIPTOR       08074B50 (134695760)\n-081A00 CRC                   5D8BAE4F (1569435215)\n-081A04 Compressed Size       0000049E (1182)\n-081A08 Uncompressed Size     00000A47 (2631)\n+0B6105 DATA DESCRIPTOR       08074B50 (134695760)\n+0B6109 CRC                   4B31CC84 (1261554820)\n+0B610D Compressed Size       00000242 (578)\n+0B6111 Uncompressed Size     00000431 (1073)\n \n-081A0C LOCAL HEADER #591     04034B50 (67324752)\n-081A10 Extract Zip Spec      14 (20) '2.0'\n-081A11 Extract OS            00 (0) 'MS-DOS'\n-081A12 General Purpose Flag  0808 (2056)\n+0B6115 LOCAL HEADER #591     04034B50 (67324752)\n+0B6119 Extract Zip Spec      14 (20) '2.0'\n+0B611A Extract OS            00 (0) 'MS-DOS'\n+0B611B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-081A14 Compression Method    0008 (8) 'Deflated'\n-081A16 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-081A1A CRC                   00000000 (0)\n-081A1E Compressed Size       00000000 (0)\n-081A22 Uncompressed Size     00000000 (0)\n-081A26 Filename Length       0041 (65)\n-081A28 Extra Length          0000 (0)\n-081A2A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B611D Compression Method    0008 (8) 'Deflated'\n+0B611F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B6123 CRC                   00000000 (0)\n+0B6127 Compressed Size       00000000 (0)\n+0B612B Uncompressed Size     00000000 (0)\n+0B612F Filename Length       0035 (53)\n+0B6131 Extra Length          0000 (0)\n+0B6133 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x81A2A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB6133: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-081A6B PAYLOAD\n+0B6168 PAYLOAD\n \n-082873 DATA DESCRIPTOR       08074B50 (134695760)\n-082877 CRC                   B148CBF0 (2974338032)\n-08287B Compressed Size       00000E08 (3592)\n-08287F Uncompressed Size     00003C07 (15367)\n+0B63AE DATA DESCRIPTOR       08074B50 (134695760)\n+0B63B2 CRC                   66AD4132 (1722630450)\n+0B63B6 Compressed Size       00000246 (582)\n+0B63BA Uncompressed Size     00000442 (1090)\n \n-082883 LOCAL HEADER #592     04034B50 (67324752)\n-082887 Extract Zip Spec      14 (20) '2.0'\n-082888 Extract OS            00 (0) 'MS-DOS'\n-082889 General Purpose Flag  0808 (2056)\n+0B63BE LOCAL HEADER #592     04034B50 (67324752)\n+0B63C2 Extract Zip Spec      14 (20) '2.0'\n+0B63C3 Extract OS            00 (0) 'MS-DOS'\n+0B63C4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08288B Compression Method    0008 (8) 'Deflated'\n-08288D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-082891 CRC                   00000000 (0)\n-082895 Compressed Size       00000000 (0)\n-082899 Uncompressed Size     00000000 (0)\n-08289D Filename Length       0034 (52)\n-08289F Extra Length          0000 (0)\n-0828A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B63C6 Compression Method    0008 (8) 'Deflated'\n+0B63C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B63CC CRC                   00000000 (0)\n+0B63D0 Compressed Size       00000000 (0)\n+0B63D4 Uncompressed Size     00000000 (0)\n+0B63D8 Filename Length       0032 (50)\n+0B63DA Extra Length          0000 (0)\n+0B63DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x828A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB63DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0828D5 PAYLOAD\n+0B640E PAYLOAD\n \n-082B3C DATA DESCRIPTOR       08074B50 (134695760)\n-082B40 CRC                   D1BB774A (3518723914)\n-082B44 Compressed Size       00000267 (615)\n-082B48 Uncompressed Size     000004B9 (1209)\n+0B6727 DATA DESCRIPTOR       08074B50 (134695760)\n+0B672B CRC                   49B9FF79 (1236926329)\n+0B672F Compressed Size       00000319 (793)\n+0B6733 Uncompressed Size     00000809 (2057)\n \n-082B4C LOCAL HEADER #593     04034B50 (67324752)\n-082B50 Extract Zip Spec      14 (20) '2.0'\n-082B51 Extract OS            00 (0) 'MS-DOS'\n-082B52 General Purpose Flag  0808 (2056)\n+0B6737 LOCAL HEADER #593     04034B50 (67324752)\n+0B673B Extract Zip Spec      14 (20) '2.0'\n+0B673C Extract OS            00 (0) 'MS-DOS'\n+0B673D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-082B54 Compression Method    0008 (8) 'Deflated'\n-082B56 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-082B5A CRC                   00000000 (0)\n-082B5E Compressed Size       00000000 (0)\n-082B62 Uncompressed Size     00000000 (0)\n-082B66 Filename Length       0043 (67)\n-082B68 Extra Length          0000 (0)\n-082B6A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B673F Compression Method    0008 (8) 'Deflated'\n+0B6741 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B6745 CRC                   00000000 (0)\n+0B6749 Compressed Size       00000000 (0)\n+0B674D Uncompressed Size     00000000 (0)\n+0B6751 Filename Length       0030 (48)\n+0B6753 Extra Length          0000 (0)\n+0B6755 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x82B6A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB6755: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-082BAD PAYLOAD\n+0B6785 PAYLOAD\n \n-082E26 DATA DESCRIPTOR       08074B50 (134695760)\n-082E2A CRC                   F2DE48ED (4074653933)\n-082E2E Compressed Size       00000279 (633)\n-082E32 Uncompressed Size     0000048D (1165)\n+0B6ADF DATA DESCRIPTOR       08074B50 (134695760)\n+0B6AE3 CRC                   D07DEF14 (3497914132)\n+0B6AE7 Compressed Size       0000035A (858)\n+0B6AEB Uncompressed Size     0000078D (1933)\n \n-082E36 LOCAL HEADER #594     04034B50 (67324752)\n-082E3A Extract Zip Spec      14 (20) '2.0'\n-082E3B Extract OS            00 (0) 'MS-DOS'\n-082E3C General Purpose Flag  0808 (2056)\n+0B6AEF LOCAL HEADER #594     04034B50 (67324752)\n+0B6AF3 Extract Zip Spec      14 (20) '2.0'\n+0B6AF4 Extract OS            00 (0) 'MS-DOS'\n+0B6AF5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-082E3E Compression Method    0008 (8) 'Deflated'\n-082E40 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-082E44 CRC                   00000000 (0)\n-082E48 Compressed Size       00000000 (0)\n-082E4C Uncompressed Size     00000000 (0)\n-082E50 Filename Length       003B (59)\n-082E52 Extra Length          0000 (0)\n-082E54 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B6AF7 Compression Method    0008 (8) 'Deflated'\n+0B6AF9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B6AFD CRC                   00000000 (0)\n+0B6B01 Compressed Size       00000000 (0)\n+0B6B05 Uncompressed Size     00000000 (0)\n+0B6B09 Filename Length       0038 (56)\n+0B6B0B Extra Length          0000 (0)\n+0B6B0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x82E54: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB6B0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-082E8F PAYLOAD\n+0B6B45 PAYLOAD\n \n-083110 DATA DESCRIPTOR       08074B50 (134695760)\n-083114 CRC                   0662480F (107104271)\n-083118 Compressed Size       00000281 (641)\n-08311C Uncompressed Size     000004C4 (1220)\n+0B6D8C DATA DESCRIPTOR       08074B50 (134695760)\n+0B6D90 CRC                   4AFAB67E (1257944702)\n+0B6D94 Compressed Size       00000247 (583)\n+0B6D98 Uncompressed Size     00000448 (1096)\n \n-083120 LOCAL HEADER #595     04034B50 (67324752)\n-083124 Extract Zip Spec      14 (20) '2.0'\n-083125 Extract OS            00 (0) 'MS-DOS'\n-083126 General Purpose Flag  0808 (2056)\n+0B6D9C LOCAL HEADER #595     04034B50 (67324752)\n+0B6DA0 Extract Zip Spec      14 (20) '2.0'\n+0B6DA1 Extract OS            00 (0) 'MS-DOS'\n+0B6DA2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-083128 Compression Method    0008 (8) 'Deflated'\n-08312A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08312E CRC                   00000000 (0)\n-083132 Compressed Size       00000000 (0)\n-083136 Uncompressed Size     00000000 (0)\n-08313A Filename Length       0037 (55)\n-08313C Extra Length          0000 (0)\n-08313E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B6DA4 Compression Method    0008 (8) 'Deflated'\n+0B6DA6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B6DAA CRC                   00000000 (0)\n+0B6DAE Compressed Size       00000000 (0)\n+0B6DB2 Uncompressed Size     00000000 (0)\n+0B6DB6 Filename Length       001D (29)\n+0B6DB8 Extra Length          0000 (0)\n+0B6DBA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8313E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB6DBA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-083175 PAYLOAD\n+0B6DD7 PAYLOAD               XX\n \n-0833DA DATA DESCRIPTOR       08074B50 (134695760)\n-0833DE CRC                   4C849D6C (1283759468)\n-0833E2 Compressed Size       00000265 (613)\n-0833E6 Uncompressed Size     0000047A (1146)\n+0B6DD9 DATA DESCRIPTOR       08074B50 (134695760)\n+0B6DDD CRC                   00000000 (0)\n+0B6DE1 Compressed Size       00000002 (2)\n+0B6DE5 Uncompressed Size     00000000 (0)\n \n-0833EA LOCAL HEADER #596     04034B50 (67324752)\n-0833EE Extract Zip Spec      14 (20) '2.0'\n-0833EF Extract OS            00 (0) 'MS-DOS'\n-0833F0 General Purpose Flag  0808 (2056)\n+0B6DE9 LOCAL HEADER #596     04034B50 (67324752)\n+0B6DED Extract Zip Spec      14 (20) '2.0'\n+0B6DEE Extract OS            00 (0) 'MS-DOS'\n+0B6DEF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0833F2 Compression Method    0008 (8) 'Deflated'\n-0833F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0833F8 CRC                   00000000 (0)\n-0833FC Compressed Size       00000000 (0)\n-083400 Uncompressed Size     00000000 (0)\n-083404 Filename Length       0036 (54)\n-083406 Extra Length          0000 (0)\n-083408 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B6DF1 Compression Method    0008 (8) 'Deflated'\n+0B6DF3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B6DF7 CRC                   00000000 (0)\n+0B6DFB Compressed Size       00000000 (0)\n+0B6DFF Uncompressed Size     00000000 (0)\n+0B6E03 Filename Length       0036 (54)\n+0B6E05 Extra Length          0000 (0)\n+0B6E07 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x83408: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB6E07: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08343E PAYLOAD\n+0B6E3D PAYLOAD\n \n-085457 DATA DESCRIPTOR       08074B50 (134695760)\n-08545B CRC                   A96FE6E5 (2842683109)\n-08545F Compressed Size       00002019 (8217)\n-085463 Uncompressed Size     00009CEF (40175)\n+0B721C DATA DESCRIPTOR       08074B50 (134695760)\n+0B7220 CRC                   C563319A (3311612314)\n+0B7224 Compressed Size       000003DF (991)\n+0B7228 Uncompressed Size     00000B90 (2960)\n \n-085467 LOCAL HEADER #597     04034B50 (67324752)\n-08546B Extract Zip Spec      14 (20) '2.0'\n-08546C Extract OS            00 (0) 'MS-DOS'\n-08546D General Purpose Flag  0808 (2056)\n+0B722C LOCAL HEADER #597     04034B50 (67324752)\n+0B7230 Extract Zip Spec      14 (20) '2.0'\n+0B7231 Extract OS            00 (0) 'MS-DOS'\n+0B7232 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08546F Compression Method    0008 (8) 'Deflated'\n-085471 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-085475 CRC                   00000000 (0)\n-085479 Compressed Size       00000000 (0)\n-08547D Uncompressed Size     00000000 (0)\n-085481 Filename Length       0036 (54)\n-085483 Extra Length          0000 (0)\n-085485 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B7234 Compression Method    0008 (8) 'Deflated'\n+0B7236 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B723A CRC                   00000000 (0)\n+0B723E Compressed Size       00000000 (0)\n+0B7242 Uncompressed Size     00000000 (0)\n+0B7246 Filename Length       002F (47)\n+0B7248 Extra Length          0000 (0)\n+0B724A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x85485: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB724A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0854BB PAYLOAD\n+0B7279 PAYLOAD\n \n-085798 DATA DESCRIPTOR       08074B50 (134695760)\n-08579C CRC                   CA31D6AC (3392263852)\n-0857A0 Compressed Size       000002DD (733)\n-0857A4 Uncompressed Size     0000058E (1422)\n+0B7712 DATA DESCRIPTOR       08074B50 (134695760)\n+0B7716 CRC                   1187A07F (294101119)\n+0B771A Compressed Size       00000499 (1177)\n+0B771E Uncompressed Size     000010B8 (4280)\n \n-0857A8 LOCAL HEADER #598     04034B50 (67324752)\n-0857AC Extract Zip Spec      14 (20) '2.0'\n-0857AD Extract OS            00 (0) 'MS-DOS'\n-0857AE General Purpose Flag  0808 (2056)\n+0B7722 LOCAL HEADER #598     04034B50 (67324752)\n+0B7726 Extract Zip Spec      14 (20) '2.0'\n+0B7727 Extract OS            00 (0) 'MS-DOS'\n+0B7728 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0857B0 Compression Method    0008 (8) 'Deflated'\n-0857B2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0857B6 CRC                   00000000 (0)\n-0857BA Compressed Size       00000000 (0)\n-0857BE Uncompressed Size     00000000 (0)\n-0857C2 Filename Length       002A (42)\n-0857C4 Extra Length          0000 (0)\n-0857C6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B772A Compression Method    0008 (8) 'Deflated'\n+0B772C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B7730 CRC                   00000000 (0)\n+0B7734 Compressed Size       00000000 (0)\n+0B7738 Uncompressed Size     00000000 (0)\n+0B773C Filename Length       0044 (68)\n+0B773E Extra Length          0000 (0)\n+0B7740 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x857C6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB7740: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0857F0 PAYLOAD\n+0B7784 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-085C2E DATA DESCRIPTOR       08074B50 (134695760)\n-085C32 CRC                   48D76DDD (1222077917)\n-085C36 Compressed Size       0000043E (1086)\n-085C3A Uncompressed Size     00000932 (2354)\n+0B77EB DATA DESCRIPTOR       08074B50 (134695760)\n+0B77EF CRC                   FD9DED40 (4254985536)\n+0B77F3 Compressed Size       00000067 (103)\n+0B77F7 Uncompressed Size     000000A5 (165)\n \n-085C3E LOCAL HEADER #599     04034B50 (67324752)\n-085C42 Extract Zip Spec      14 (20) '2.0'\n-085C43 Extract OS            00 (0) 'MS-DOS'\n-085C44 General Purpose Flag  0808 (2056)\n+0B77FB LOCAL HEADER #599     04034B50 (67324752)\n+0B77FF Extract Zip Spec      14 (20) '2.0'\n+0B7800 Extract OS            00 (0) 'MS-DOS'\n+0B7801 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-085C46 Compression Method    0008 (8) 'Deflated'\n-085C48 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-085C4C CRC                   00000000 (0)\n-085C50 Compressed Size       00000000 (0)\n-085C54 Uncompressed Size     00000000 (0)\n-085C58 Filename Length       003E (62)\n-085C5A Extra Length          0000 (0)\n-085C5C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B7803 Compression Method    0008 (8) 'Deflated'\n+0B7805 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B7809 CRC                   00000000 (0)\n+0B780D Compressed Size       00000000 (0)\n+0B7811 Uncompressed Size     00000000 (0)\n+0B7815 Filename Length       0055 (85)\n+0B7817 Extra Length          0000 (0)\n+0B7819 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x85C5C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB7819: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-085C9A PAYLOAD\n+0B786E PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-085F1D DATA DESCRIPTOR       08074B50 (134695760)\n-085F21 CRC                   C525F495 (3307598997)\n-085F25 Compressed Size       00000283 (643)\n-085F29 Uncompressed Size     000004C9 (1225)\n+0B78B5 DATA DESCRIPTOR       08074B50 (134695760)\n+0B78B9 CRC                   BF790872 (3212380274)\n+0B78BD Compressed Size       00000047 (71)\n+0B78C1 Uncompressed Size     0000004C (76)\n \n-085F2D LOCAL HEADER #600     04034B50 (67324752)\n-085F31 Extract Zip Spec      14 (20) '2.0'\n-085F32 Extract OS            00 (0) 'MS-DOS'\n-085F33 General Purpose Flag  0808 (2056)\n+0B78C5 LOCAL HEADER #600     04034B50 (67324752)\n+0B78C9 Extract Zip Spec      14 (20) '2.0'\n+0B78CA Extract OS            00 (0) 'MS-DOS'\n+0B78CB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-085F35 Compression Method    0008 (8) 'Deflated'\n-085F37 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-085F3B CRC                   00000000 (0)\n-085F3F Compressed Size       00000000 (0)\n-085F43 Uncompressed Size     00000000 (0)\n-085F47 Filename Length       002E (46)\n-085F49 Extra Length          0000 (0)\n-085F4B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B78CD Compression Method    0008 (8) 'Deflated'\n+0B78CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B78D3 CRC                   00000000 (0)\n+0B78D7 Compressed Size       00000000 (0)\n+0B78DB Uncompressed Size     00000000 (0)\n+0B78DF Filename Length       0049 (73)\n+0B78E1 Extra Length          0000 (0)\n+0B78E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x85F4B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB78E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-085F79 PAYLOAD\n+0B792C PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-08620A DATA DESCRIPTOR       08074B50 (134695760)\n-08620E CRC                   25A296EC (631412460)\n-086212 Compressed Size       00000291 (657)\n-086216 Uncompressed Size     00000510 (1296)\n+0B796E DATA DESCRIPTOR       08074B50 (134695760)\n+0B7972 CRC                   F822DEA4 (4163034788)\n+0B7976 Compressed Size       00000042 (66)\n+0B797A Uncompressed Size     00000072 (114)\n \n-08621A LOCAL HEADER #601     04034B50 (67324752)\n-08621E Extract Zip Spec      14 (20) '2.0'\n-08621F Extract OS            00 (0) 'MS-DOS'\n-086220 General Purpose Flag  0808 (2056)\n+0B797E LOCAL HEADER #601     04034B50 (67324752)\n+0B7982 Extract Zip Spec      14 (20) '2.0'\n+0B7983 Extract OS            00 (0) 'MS-DOS'\n+0B7984 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-086222 Compression Method    0008 (8) 'Deflated'\n-086224 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-086228 CRC                   00000000 (0)\n-08622C Compressed Size       00000000 (0)\n-086230 Uncompressed Size     00000000 (0)\n-086234 Filename Length       002A (42)\n-086236 Extra Length          0000 (0)\n-086238 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B7986 Compression Method    0008 (8) 'Deflated'\n+0B7988 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B798C CRC                   00000000 (0)\n+0B7990 Compressed Size       00000000 (0)\n+0B7994 Uncompressed Size     00000000 (0)\n+0B7998 Filename Length       0012 (18)\n+0B799A Extra Length          0000 (0)\n+0B799C Filename              'XXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x86238: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB799C: Filename 'XXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-086262 PAYLOAD               XX\n+0B79AE PAYLOAD               XX\n \n-086264 DATA DESCRIPTOR       08074B50 (134695760)\n-086268 CRC                   00000000 (0)\n-08626C Compressed Size       00000002 (2)\n-086270 Uncompressed Size     00000000 (0)\n+0B79B0 DATA DESCRIPTOR       08074B50 (134695760)\n+0B79B4 CRC                   00000000 (0)\n+0B79B8 Compressed Size       00000002 (2)\n+0B79BC Uncompressed Size     00000000 (0)\n \n-086274 LOCAL HEADER #602     04034B50 (67324752)\n-086278 Extract Zip Spec      14 (20) '2.0'\n-086279 Extract OS            00 (0) 'MS-DOS'\n-08627A General Purpose Flag  0808 (2056)\n+0B79C0 LOCAL HEADER #602     04034B50 (67324752)\n+0B79C4 Extract Zip Spec      14 (20) '2.0'\n+0B79C5 Extract OS            00 (0) 'MS-DOS'\n+0B79C6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08627C Compression Method    0008 (8) 'Deflated'\n-08627E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-086282 CRC                   00000000 (0)\n-086286 Compressed Size       00000000 (0)\n-08628A Uncompressed Size     00000000 (0)\n-08628E Filename Length       0047 (71)\n-086290 Extra Length          0000 (0)\n-086292 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B79C8 Compression Method    0008 (8) 'Deflated'\n+0B79CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B79CE CRC                   00000000 (0)\n+0B79D2 Compressed Size       00000000 (0)\n+0B79D6 Uncompressed Size     00000000 (0)\n+0B79DA Filename Length       0009 (9)\n+0B79DC Extra Length          0000 (0)\n+0B79DE Filename              'XXXXXXXXX'\n #\n-# WARNING: Offset 0x86292: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB79DE: Filename 'XXXXXXXXX'\n #          Zero length filename\n #\n-0862D9 PAYLOAD\n+0B79E7 PAYLOAD               XX\n \n-086618 DATA DESCRIPTOR       08074B50 (134695760)\n-08661C CRC                   EA8B59C6 (3935001030)\n-086620 Compressed Size       0000033F (831)\n-086624 Uncompressed Size     00000800 (2048)\n+0B79E9 DATA DESCRIPTOR       08074B50 (134695760)\n+0B79ED CRC                   00000000 (0)\n+0B79F1 Compressed Size       00000002 (2)\n+0B79F5 Uncompressed Size     00000000 (0)\n \n-086628 LOCAL HEADER #603     04034B50 (67324752)\n-08662C Extract Zip Spec      14 (20) '2.0'\n-08662D Extract OS            00 (0) 'MS-DOS'\n-08662E General Purpose Flag  0808 (2056)\n+0B79F9 LOCAL HEADER #603     04034B50 (67324752)\n+0B79FD Extract Zip Spec      14 (20) '2.0'\n+0B79FE Extract OS            00 (0) 'MS-DOS'\n+0B79FF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-086630 Compression Method    0008 (8) 'Deflated'\n-086632 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-086636 CRC                   00000000 (0)\n-08663A Compressed Size       00000000 (0)\n-08663E Uncompressed Size     00000000 (0)\n-086642 Filename Length       0042 (66)\n-086644 Extra Length          0000 (0)\n-086646 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B7A01 Compression Method    0008 (8) 'Deflated'\n+0B7A03 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B7A07 CRC                   00000000 (0)\n+0B7A0B Compressed Size       00000000 (0)\n+0B7A0F Uncompressed Size     00000000 (0)\n+0B7A13 Filename Length       001E (30)\n+0B7A15 Extra Length          0000 (0)\n+0B7A17 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x86646: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB7A17: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-086688 PAYLOAD\n+0B7A35 PAYLOAD\n \n-086956 DATA DESCRIPTOR       08074B50 (134695760)\n-08695A CRC                   3280412A (847266090)\n-08695E Compressed Size       000002CE (718)\n-086962 Uncompressed Size     0000060F (1551)\n+0B8117 DATA DESCRIPTOR       08074B50 (134695760)\n+0B811B CRC                   1096B4BF (278312127)\n+0B811F Compressed Size       000006E2 (1762)\n+0B8123 Uncompressed Size     0000124E (4686)\n \n-086966 LOCAL HEADER #604     04034B50 (67324752)\n-08696A Extract Zip Spec      14 (20) '2.0'\n-08696B Extract OS            00 (0) 'MS-DOS'\n-08696C General Purpose Flag  0808 (2056)\n+0B8127 LOCAL HEADER #604     04034B50 (67324752)\n+0B812B Extract Zip Spec      14 (20) '2.0'\n+0B812C Extract OS            00 (0) 'MS-DOS'\n+0B812D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08696E Compression Method    0008 (8) 'Deflated'\n-086970 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-086974 CRC                   00000000 (0)\n-086978 Compressed Size       00000000 (0)\n-08697C Uncompressed Size     00000000 (0)\n-086980 Filename Length       002A (42)\n-086982 Extra Length          0000 (0)\n-086984 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B812F Compression Method    0008 (8) 'Deflated'\n+0B8131 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B8135 CRC                   00000000 (0)\n+0B8139 Compressed Size       00000000 (0)\n+0B813D Uncompressed Size     00000000 (0)\n+0B8141 Filename Length       002D (45)\n+0B8143 Extra Length          0000 (0)\n+0B8145 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x86984: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB8145: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0869AE PAYLOAD               XX\n+0B8172 PAYLOAD               XX\n \n-0869B0 DATA DESCRIPTOR       08074B50 (134695760)\n-0869B4 CRC                   00000000 (0)\n-0869B8 Compressed Size       00000002 (2)\n-0869BC Uncompressed Size     00000000 (0)\n+0B8174 DATA DESCRIPTOR       08074B50 (134695760)\n+0B8178 CRC                   00000000 (0)\n+0B817C Compressed Size       00000002 (2)\n+0B8180 Uncompressed Size     00000000 (0)\n \n-0869C0 LOCAL HEADER #605     04034B50 (67324752)\n-0869C4 Extract Zip Spec      14 (20) '2.0'\n-0869C5 Extract OS            00 (0) 'MS-DOS'\n-0869C6 General Purpose Flag  0808 (2056)\n+0B8184 LOCAL HEADER #605     04034B50 (67324752)\n+0B8188 Extract Zip Spec      14 (20) '2.0'\n+0B8189 Extract OS            00 (0) 'MS-DOS'\n+0B818A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0869C8 Compression Method    0008 (8) 'Deflated'\n-0869CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0869CE CRC                   00000000 (0)\n-0869D2 Compressed Size       00000000 (0)\n-0869D6 Uncompressed Size     00000000 (0)\n-0869DA Filename Length       0041 (65)\n-0869DC Extra Length          0000 (0)\n-0869DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B818C Compression Method    0008 (8) 'Deflated'\n+0B818E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B8192 CRC                   00000000 (0)\n+0B8196 Compressed Size       00000000 (0)\n+0B819A Uncompressed Size     00000000 (0)\n+0B819E Filename Length       0034 (52)\n+0B81A0 Extra Length          0000 (0)\n+0B81A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x869DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB81A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-086A1F PAYLOAD\n+0B81D6 PAYLOAD\n \n-086F6C DATA DESCRIPTOR       08074B50 (134695760)\n-086F70 CRC                   B81BB8E1 (3088824545)\n-086F74 Compressed Size       0000054D (1357)\n-086F78 Uncompressed Size     000011D4 (4564)\n+0B85A8 DATA DESCRIPTOR       08074B50 (134695760)\n+0B85AC CRC                   CDE8C563 (3454584163)\n+0B85B0 Compressed Size       000003D2 (978)\n+0B85B4 Uncompressed Size     00000B50 (2896)\n \n-086F7C LOCAL HEADER #606     04034B50 (67324752)\n-086F80 Extract Zip Spec      14 (20) '2.0'\n-086F81 Extract OS            00 (0) 'MS-DOS'\n-086F82 General Purpose Flag  0808 (2056)\n+0B85B8 LOCAL HEADER #606     04034B50 (67324752)\n+0B85BC Extract Zip Spec      14 (20) '2.0'\n+0B85BD Extract OS            00 (0) 'MS-DOS'\n+0B85BE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-086F84 Compression Method    0008 (8) 'Deflated'\n-086F86 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-086F8A CRC                   00000000 (0)\n-086F8E Compressed Size       00000000 (0)\n-086F92 Uncompressed Size     00000000 (0)\n-086F96 Filename Length       0040 (64)\n-086F98 Extra Length          0000 (0)\n-086F9A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B85C0 Compression Method    0008 (8) 'Deflated'\n+0B85C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B85C6 CRC                   00000000 (0)\n+0B85CA Compressed Size       00000000 (0)\n+0B85CE Uncompressed Size     00000000 (0)\n+0B85D2 Filename Length       003B (59)\n+0B85D4 Extra Length          0000 (0)\n+0B85D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x86F9A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB85D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-086FDA PAYLOAD\n+0B8611 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-08742B DATA DESCRIPTOR       08074B50 (134695760)\n-08742F CRC                   C0FD96E7 (3237844711)\n-087433 Compressed Size       00000451 (1105)\n-087437 Uncompressed Size     00000BFA (3066)\n+0B8652 DATA DESCRIPTOR       08074B50 (134695760)\n+0B8656 CRC                   295DB5AA (694007210)\n+0B865A Compressed Size       00000041 (65)\n+0B865E Uncompressed Size     00000043 (67)\n \n-08743B LOCAL HEADER #607     04034B50 (67324752)\n-08743F Extract Zip Spec      14 (20) '2.0'\n-087440 Extract OS            00 (0) 'MS-DOS'\n-087441 General Purpose Flag  0808 (2056)\n+0B8662 LOCAL HEADER #607     04034B50 (67324752)\n+0B8666 Extract Zip Spec      14 (20) '2.0'\n+0B8667 Extract OS            00 (0) 'MS-DOS'\n+0B8668 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-087443 Compression Method    0008 (8) 'Deflated'\n-087445 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-087449 CRC                   00000000 (0)\n-08744D Compressed Size       00000000 (0)\n-087451 Uncompressed Size     00000000 (0)\n-087455 Filename Length       0021 (33)\n-087457 Extra Length          0000 (0)\n-087459 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B866A Compression Method    0008 (8) 'Deflated'\n+0B866C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B8670 CRC                   00000000 (0)\n+0B8674 Compressed Size       00000000 (0)\n+0B8678 Uncompressed Size     00000000 (0)\n+0B867C Filename Length       0017 (23)\n+0B867E Extra Length          0000 (0)\n+0B8680 Filename              'XXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x87459: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB8680: Filename 'XXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08747A PAYLOAD               XX\n+0B8697 PAYLOAD               XX\n \n-08747C DATA DESCRIPTOR       08074B50 (134695760)\n-087480 CRC                   00000000 (0)\n-087484 Compressed Size       00000002 (2)\n-087488 Uncompressed Size     00000000 (0)\n+0B8699 DATA DESCRIPTOR       08074B50 (134695760)\n+0B869D CRC                   00000000 (0)\n+0B86A1 Compressed Size       00000002 (2)\n+0B86A5 Uncompressed Size     00000000 (0)\n \n-08748C LOCAL HEADER #608     04034B50 (67324752)\n-087490 Extract Zip Spec      14 (20) '2.0'\n-087491 Extract OS            00 (0) 'MS-DOS'\n-087492 General Purpose Flag  0808 (2056)\n+0B86A9 LOCAL HEADER #608     04034B50 (67324752)\n+0B86AD Extract Zip Spec      14 (20) '2.0'\n+0B86AE Extract OS            00 (0) 'MS-DOS'\n+0B86AF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-087494 Compression Method    0008 (8) 'Deflated'\n-087496 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08749A CRC                   00000000 (0)\n-08749E Compressed Size       00000000 (0)\n-0874A2 Uncompressed Size     00000000 (0)\n-0874A6 Filename Length       0030 (48)\n-0874A8 Extra Length          0000 (0)\n-0874AA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B86B1 Compression Method    0008 (8) 'Deflated'\n+0B86B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B86B7 CRC                   00000000 (0)\n+0B86BB Compressed Size       00000000 (0)\n+0B86BF Uncompressed Size     00000000 (0)\n+0B86C3 Filename Length       0021 (33)\n+0B86C5 Extra Length          0000 (0)\n+0B86C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x874AA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB86C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0874DA PAYLOAD\n+0B86E8 PAYLOAD\n \n-087844 DATA DESCRIPTOR       08074B50 (134695760)\n-087848 CRC                   3980931B (964727579)\n-08784C Compressed Size       0000036A (874)\n-087850 Uncompressed Size     00000925 (2341)\n+0B8A04 DATA DESCRIPTOR       08074B50 (134695760)\n+0B8A08 CRC                   4E701AB1 (1315969713)\n+0B8A0C Compressed Size       0000031C (796)\n+0B8A10 Uncompressed Size     000006EA (1770)\n \n-087854 LOCAL HEADER #609     04034B50 (67324752)\n-087858 Extract Zip Spec      14 (20) '2.0'\n-087859 Extract OS            00 (0) 'MS-DOS'\n-08785A General Purpose Flag  0808 (2056)\n+0B8A14 LOCAL HEADER #609     04034B50 (67324752)\n+0B8A18 Extract Zip Spec      14 (20) '2.0'\n+0B8A19 Extract OS            00 (0) 'MS-DOS'\n+0B8A1A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08785C Compression Method    0008 (8) 'Deflated'\n-08785E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-087862 CRC                   00000000 (0)\n-087866 Compressed Size       00000000 (0)\n-08786A Uncompressed Size     00000000 (0)\n-08786E Filename Length       002D (45)\n-087870 Extra Length          0000 (0)\n-087872 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B8A1C Compression Method    0008 (8) 'Deflated'\n+0B8A1E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B8A22 CRC                   00000000 (0)\n+0B8A26 Compressed Size       00000000 (0)\n+0B8A2A Uncompressed Size     00000000 (0)\n+0B8A2E Filename Length       0028 (40)\n+0B8A30 Extra Length          0000 (0)\n+0B8A32 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x87872: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB8A32: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08789F PAYLOAD\n+0B8A5A PAYLOAD\n \n-087C47 DATA DESCRIPTOR       08074B50 (134695760)\n-087C4B CRC                   4F8202FE (1333920510)\n-087C4F Compressed Size       000003A8 (936)\n-087C53 Uncompressed Size     00000A7B (2683)\n+0B8D86 DATA DESCRIPTOR       08074B50 (134695760)\n+0B8D8A CRC                   95722913 (2507286803)\n+0B8D8E Compressed Size       0000032C (812)\n+0B8D92 Uncompressed Size     000006C2 (1730)\n \n-087C57 LOCAL HEADER #610     04034B50 (67324752)\n-087C5B Extract Zip Spec      14 (20) '2.0'\n-087C5C Extract OS            00 (0) 'MS-DOS'\n-087C5D General Purpose Flag  0808 (2056)\n+0B8D96 LOCAL HEADER #610     04034B50 (67324752)\n+0B8D9A Extract Zip Spec      14 (20) '2.0'\n+0B8D9B Extract OS            00 (0) 'MS-DOS'\n+0B8D9C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-087C5F Compression Method    0008 (8) 'Deflated'\n-087C61 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-087C65 CRC                   00000000 (0)\n-087C69 Compressed Size       00000000 (0)\n-087C6D Uncompressed Size     00000000 (0)\n-087C71 Filename Length       0035 (53)\n-087C73 Extra Length          0000 (0)\n-087C75 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B8D9E Compression Method    0008 (8) 'Deflated'\n+0B8DA0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B8DA4 CRC                   00000000 (0)\n+0B8DA8 Compressed Size       00000000 (0)\n+0B8DAC Uncompressed Size     00000000 (0)\n+0B8DB0 Filename Length       001E (30)\n+0B8DB2 Extra Length          0000 (0)\n+0B8DB4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x87C75: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB8DB4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-087CAA PAYLOAD\n+0B8DD2 PAYLOAD               XX\n \n-087F88 DATA DESCRIPTOR       08074B50 (134695760)\n-087F8C CRC                   3F1DB4B7 (1058911415)\n-087F90 Compressed Size       000002DE (734)\n-087F94 Uncompressed Size     00000638 (1592)\n+0B8DD4 DATA DESCRIPTOR       08074B50 (134695760)\n+0B8DD8 CRC                   00000000 (0)\n+0B8DDC Compressed Size       00000002 (2)\n+0B8DE0 Uncompressed Size     00000000 (0)\n \n-087F98 LOCAL HEADER #611     04034B50 (67324752)\n-087F9C Extract Zip Spec      14 (20) '2.0'\n-087F9D Extract OS            00 (0) 'MS-DOS'\n-087F9E General Purpose Flag  0808 (2056)\n+0B8DE4 LOCAL HEADER #611     04034B50 (67324752)\n+0B8DE8 Extract Zip Spec      14 (20) '2.0'\n+0B8DE9 Extract OS            00 (0) 'MS-DOS'\n+0B8DEA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-087FA0 Compression Method    0008 (8) 'Deflated'\n-087FA2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-087FA6 CRC                   00000000 (0)\n-087FAA Compressed Size       00000000 (0)\n-087FAE Uncompressed Size     00000000 (0)\n-087FB2 Filename Length       0037 (55)\n-087FB4 Extra Length          0000 (0)\n-087FB6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B8DEC Compression Method    0008 (8) 'Deflated'\n+0B8DEE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B8DF2 CRC                   00000000 (0)\n+0B8DF6 Compressed Size       00000000 (0)\n+0B8DFA Uncompressed Size     00000000 (0)\n+0B8DFE Filename Length       002E (46)\n+0B8E00 Extra Length          0000 (0)\n+0B8E02 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x87FB6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB8E02: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-087FED PAYLOAD\n+0B8E30 PAYLOAD\n \n-08834D DATA DESCRIPTOR       08074B50 (134695760)\n-088351 CRC                   86537D4A (2253618506)\n-088355 Compressed Size       00000360 (864)\n-088359 Uncompressed Size     000007F0 (2032)\n+0B95C0 DATA DESCRIPTOR       08074B50 (134695760)\n+0B95C4 CRC                   0E9E2711 (245245713)\n+0B95C8 Compressed Size       00000790 (1936)\n+0B95CC Uncompressed Size     000016CB (5835)\n \n-08835D LOCAL HEADER #612     04034B50 (67324752)\n-088361 Extract Zip Spec      14 (20) '2.0'\n-088362 Extract OS            00 (0) 'MS-DOS'\n-088363 General Purpose Flag  0808 (2056)\n+0B95D0 LOCAL HEADER #612     04034B50 (67324752)\n+0B95D4 Extract Zip Spec      14 (20) '2.0'\n+0B95D5 Extract OS            00 (0) 'MS-DOS'\n+0B95D6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-088365 Compression Method    0008 (8) 'Deflated'\n-088367 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08836B CRC                   00000000 (0)\n-08836F Compressed Size       00000000 (0)\n-088373 Uncompressed Size     00000000 (0)\n-088377 Filename Length       0037 (55)\n-088379 Extra Length          0000 (0)\n-08837B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B95D8 Compression Method    0008 (8) 'Deflated'\n+0B95DA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B95DE CRC                   00000000 (0)\n+0B95E2 Compressed Size       00000000 (0)\n+0B95E6 Uncompressed Size     00000000 (0)\n+0B95EA Filename Length       001F (31)\n+0B95EC Extra Length          0000 (0)\n+0B95EE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8837B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB95EE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0883B2 PAYLOAD\n+0B960D PAYLOAD               XX\n \n-088724 DATA DESCRIPTOR       08074B50 (134695760)\n-088728 CRC                   76835014 (1988317204)\n-08872C Compressed Size       00000372 (882)\n-088730 Uncompressed Size     00000885 (2181)\n+0B960F DATA DESCRIPTOR       08074B50 (134695760)\n+0B9613 CRC                   00000000 (0)\n+0B9617 Compressed Size       00000002 (2)\n+0B961B Uncompressed Size     00000000 (0)\n \n-088734 LOCAL HEADER #613     04034B50 (67324752)\n-088738 Extract Zip Spec      14 (20) '2.0'\n-088739 Extract OS            00 (0) 'MS-DOS'\n-08873A General Purpose Flag  0808 (2056)\n+0B961F LOCAL HEADER #613     04034B50 (67324752)\n+0B9623 Extract Zip Spec      14 (20) '2.0'\n+0B9624 Extract OS            00 (0) 'MS-DOS'\n+0B9625 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08873C Compression Method    0008 (8) 'Deflated'\n-08873E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-088742 CRC                   00000000 (0)\n-088746 Compressed Size       00000000 (0)\n-08874A Uncompressed Size     00000000 (0)\n-08874E Filename Length       001E (30)\n-088750 Extra Length          0000 (0)\n-088752 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B9627 Compression Method    0008 (8) 'Deflated'\n+0B9629 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B962D CRC                   00000000 (0)\n+0B9631 Compressed Size       00000000 (0)\n+0B9635 Uncompressed Size     00000000 (0)\n+0B9639 Filename Length       0038 (56)\n+0B963B Extra Length          0000 (0)\n+0B963D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x88752: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB963D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-088770 PAYLOAD               XX\n+0B9675 PAYLOAD\n \n-088772 DATA DESCRIPTOR       08074B50 (134695760)\n-088776 CRC                   00000000 (0)\n-08877A Compressed Size       00000002 (2)\n-08877E Uncompressed Size     00000000 (0)\n+0B9B2A DATA DESCRIPTOR       08074B50 (134695760)\n+0B9B2E CRC                   048D5F10 (76373776)\n+0B9B32 Compressed Size       000004B5 (1205)\n+0B9B36 Uncompressed Size     00000C38 (3128)\n \n-088782 LOCAL HEADER #614     04034B50 (67324752)\n-088786 Extract Zip Spec      14 (20) '2.0'\n-088787 Extract OS            00 (0) 'MS-DOS'\n-088788 General Purpose Flag  0808 (2056)\n+0B9B3A LOCAL HEADER #614     04034B50 (67324752)\n+0B9B3E Extract Zip Spec      14 (20) '2.0'\n+0B9B3F Extract OS            00 (0) 'MS-DOS'\n+0B9B40 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08878A Compression Method    0008 (8) 'Deflated'\n-08878C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-088790 CRC                   00000000 (0)\n-088794 Compressed Size       00000000 (0)\n-088798 Uncompressed Size     00000000 (0)\n-08879C Filename Length       002F (47)\n-08879E Extra Length          0000 (0)\n-0887A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B9B42 Compression Method    0008 (8) 'Deflated'\n+0B9B44 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B9B48 CRC                   00000000 (0)\n+0B9B4C Compressed Size       00000000 (0)\n+0B9B50 Uncompressed Size     00000000 (0)\n+0B9B54 Filename Length       0028 (40)\n+0B9B56 Extra Length          0000 (0)\n+0B9B58 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x887A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB9B58: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0887CF PAYLOAD\n+0B9B80 PAYLOAD               XX\n \n-088AED DATA DESCRIPTOR       08074B50 (134695760)\n-088AF1 CRC                   7A06D81E (2047268894)\n-088AF5 Compressed Size       0000031E (798)\n-088AF9 Uncompressed Size     00000619 (1561)\n+0B9B82 DATA DESCRIPTOR       08074B50 (134695760)\n+0B9B86 CRC                   00000000 (0)\n+0B9B8A Compressed Size       00000002 (2)\n+0B9B8E Uncompressed Size     00000000 (0)\n \n-088AFD LOCAL HEADER #615     04034B50 (67324752)\n-088B01 Extract Zip Spec      14 (20) '2.0'\n-088B02 Extract OS            00 (0) 'MS-DOS'\n-088B03 General Purpose Flag  0808 (2056)\n+0B9B92 LOCAL HEADER #615     04034B50 (67324752)\n+0B9B96 Extract Zip Spec      14 (20) '2.0'\n+0B9B97 Extract OS            00 (0) 'MS-DOS'\n+0B9B98 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-088B05 Compression Method    0008 (8) 'Deflated'\n-088B07 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-088B0B CRC                   00000000 (0)\n-088B0F Compressed Size       00000000 (0)\n-088B13 Uncompressed Size     00000000 (0)\n-088B17 Filename Length       0026 (38)\n-088B19 Extra Length          0000 (0)\n-088B1B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0B9B9A Compression Method    0008 (8) 'Deflated'\n+0B9B9C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0B9BA0 CRC                   00000000 (0)\n+0B9BA4 Compressed Size       00000000 (0)\n+0B9BA8 Uncompressed Size     00000000 (0)\n+0B9BAC Filename Length       003A (58)\n+0B9BAE Extra Length          0000 (0)\n+0B9BB0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x88B1B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xB9BB0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-088B41 PAYLOAD               XX\n+0B9BEA PAYLOAD\n \n-088B43 DATA DESCRIPTOR       08074B50 (134695760)\n-088B47 CRC                   00000000 (0)\n-088B4B Compressed Size       00000002 (2)\n-088B4F Uncompressed Size     00000000 (0)\n+0BA112 DATA DESCRIPTOR       08074B50 (134695760)\n+0BA116 CRC                   EF4D8024 (4014833700)\n+0BA11A Compressed Size       00000528 (1320)\n+0BA11E Uncompressed Size     00000C9F (3231)\n \n-088B53 LOCAL HEADER #616     04034B50 (67324752)\n-088B57 Extract Zip Spec      14 (20) '2.0'\n-088B58 Extract OS            00 (0) 'MS-DOS'\n-088B59 General Purpose Flag  0808 (2056)\n+0BA122 LOCAL HEADER #616     04034B50 (67324752)\n+0BA126 Extract Zip Spec      14 (20) '2.0'\n+0BA127 Extract OS            00 (0) 'MS-DOS'\n+0BA128 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-088B5B Compression Method    0008 (8) 'Deflated'\n-088B5D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-088B61 CRC                   00000000 (0)\n-088B65 Compressed Size       00000000 (0)\n-088B69 Uncompressed Size     00000000 (0)\n-088B6D Filename Length       0036 (54)\n-088B6F Extra Length          0000 (0)\n-088B71 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BA12A Compression Method    0008 (8) 'Deflated'\n+0BA12C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BA130 CRC                   00000000 (0)\n+0BA134 Compressed Size       00000000 (0)\n+0BA138 Uncompressed Size     00000000 (0)\n+0BA13C Filename Length       0041 (65)\n+0BA13E Extra Length          0000 (0)\n+0BA140 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x88B71: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBA140: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-088BA7 PAYLOAD\n+0BA181 PAYLOAD\n \n-088E2A DATA DESCRIPTOR       08074B50 (134695760)\n-088E2E CRC                   596F5AFB (1500470011)\n-088E32 Compressed Size       00000283 (643)\n-088E36 Uncompressed Size     00000504 (1284)\n+0BA473 DATA DESCRIPTOR       08074B50 (134695760)\n+0BA477 CRC                   11FDDB06 (301849350)\n+0BA47B Compressed Size       000002F2 (754)\n+0BA47F Uncompressed Size     0000065F (1631)\n \n-088E3A LOCAL HEADER #617     04034B50 (67324752)\n-088E3E Extract Zip Spec      14 (20) '2.0'\n-088E3F Extract OS            00 (0) 'MS-DOS'\n-088E40 General Purpose Flag  0808 (2056)\n+0BA483 LOCAL HEADER #617     04034B50 (67324752)\n+0BA487 Extract Zip Spec      14 (20) '2.0'\n+0BA488 Extract OS            00 (0) 'MS-DOS'\n+0BA489 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-088E42 Compression Method    0008 (8) 'Deflated'\n-088E44 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-088E48 CRC                   00000000 (0)\n-088E4C Compressed Size       00000000 (0)\n-088E50 Uncompressed Size     00000000 (0)\n-088E54 Filename Length       003D (61)\n-088E56 Extra Length          0000 (0)\n-088E58 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BA48B Compression Method    0008 (8) 'Deflated'\n+0BA48D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BA491 CRC                   00000000 (0)\n+0BA495 Compressed Size       00000000 (0)\n+0BA499 Uncompressed Size     00000000 (0)\n+0BA49D Filename Length       0038 (56)\n+0BA49F Extra Length          0000 (0)\n+0BA4A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x88E58: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBA4A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-088E95 PAYLOAD\n+0BA4D9 PAYLOAD\n \n-0892AC DATA DESCRIPTOR       08074B50 (134695760)\n-0892B0 CRC                   DAE5D322 (3672494882)\n-0892B4 Compressed Size       00000417 (1047)\n-0892B8 Uncompressed Size     00000B55 (2901)\n+0BAEB4 DATA DESCRIPTOR       08074B50 (134695760)\n+0BAEB8 CRC                   901C84B7 (2417788087)\n+0BAEBC Compressed Size       000009DB (2523)\n+0BAEC0 Uncompressed Size     00002AEB (10987)\n \n-0892BC LOCAL HEADER #618     04034B50 (67324752)\n-0892C0 Extract Zip Spec      14 (20) '2.0'\n-0892C1 Extract OS            00 (0) 'MS-DOS'\n-0892C2 General Purpose Flag  0808 (2056)\n+0BAEC4 LOCAL HEADER #618     04034B50 (67324752)\n+0BAEC8 Extract Zip Spec      14 (20) '2.0'\n+0BAEC9 Extract OS            00 (0) 'MS-DOS'\n+0BAECA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0892C4 Compression Method    0008 (8) 'Deflated'\n-0892C6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0892CA CRC                   00000000 (0)\n-0892CE Compressed Size       00000000 (0)\n-0892D2 Uncompressed Size     00000000 (0)\n-0892D6 Filename Length       001B (27)\n-0892D8 Extra Length          0000 (0)\n-0892DA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BAECC Compression Method    0008 (8) 'Deflated'\n+0BAECE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BAED2 CRC                   00000000 (0)\n+0BAED6 Compressed Size       00000000 (0)\n+0BAEDA Uncompressed Size     00000000 (0)\n+0BAEDE Filename Length       0026 (38)\n+0BAEE0 Extra Length          0000 (0)\n+0BAEE2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x892DA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBAEE2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0892F5 PAYLOAD               XX\n+0BAF08 PAYLOAD               XX\n \n-0892F7 DATA DESCRIPTOR       08074B50 (134695760)\n-0892FB CRC                   00000000 (0)\n-0892FF Compressed Size       00000002 (2)\n-089303 Uncompressed Size     00000000 (0)\n+0BAF0A DATA DESCRIPTOR       08074B50 (134695760)\n+0BAF0E CRC                   00000000 (0)\n+0BAF12 Compressed Size       00000002 (2)\n+0BAF16 Uncompressed Size     00000000 (0)\n \n-089307 LOCAL HEADER #619     04034B50 (67324752)\n-08930B Extract Zip Spec      14 (20) '2.0'\n-08930C Extract OS            00 (0) 'MS-DOS'\n-08930D General Purpose Flag  0808 (2056)\n+0BAF1A LOCAL HEADER #619     04034B50 (67324752)\n+0BAF1E Extract Zip Spec      14 (20) '2.0'\n+0BAF1F Extract OS            00 (0) 'MS-DOS'\n+0BAF20 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08930F Compression Method    0008 (8) 'Deflated'\n-089311 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-089315 CRC                   00000000 (0)\n-089319 Compressed Size       00000000 (0)\n-08931D Uncompressed Size     00000000 (0)\n-089321 Filename Length       0025 (37)\n-089323 Extra Length          0000 (0)\n-089325 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BAF22 Compression Method    0008 (8) 'Deflated'\n+0BAF24 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BAF28 CRC                   00000000 (0)\n+0BAF2C Compressed Size       00000000 (0)\n+0BAF30 Uncompressed Size     00000000 (0)\n+0BAF34 Filename Length       0031 (49)\n+0BAF36 Extra Length          0000 (0)\n+0BAF38 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x89325: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBAF38: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08934A PAYLOAD\n+0BAF69 PAYLOAD\n \n-08A2BA DATA DESCRIPTOR       08074B50 (134695760)\n-08A2BE CRC                   0BDE6714 (199124756)\n-08A2C2 Compressed Size       00000F70 (3952)\n-08A2C6 Uncompressed Size     00006518 (25880)\n+0BB4CC DATA DESCRIPTOR       08074B50 (134695760)\n+0BB4D0 CRC                   5EA7953B (1588041019)\n+0BB4D4 Compressed Size       00000563 (1379)\n+0BB4D8 Uncompressed Size     00000E48 (3656)\n \n-08A2CA LOCAL HEADER #620     04034B50 (67324752)\n-08A2CE Extract Zip Spec      14 (20) '2.0'\n-08A2CF Extract OS            00 (0) 'MS-DOS'\n-08A2D0 General Purpose Flag  0808 (2056)\n+0BB4DC LOCAL HEADER #620     04034B50 (67324752)\n+0BB4E0 Extract Zip Spec      14 (20) '2.0'\n+0BB4E1 Extract OS            00 (0) 'MS-DOS'\n+0BB4E2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08A2D2 Compression Method    0008 (8) 'Deflated'\n-08A2D4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08A2D8 CRC                   00000000 (0)\n-08A2DC Compressed Size       00000000 (0)\n-08A2E0 Uncompressed Size     00000000 (0)\n-08A2E4 Filename Length       002B (43)\n-08A2E6 Extra Length          0000 (0)\n-08A2E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BB4E4 Compression Method    0008 (8) 'Deflated'\n+0BB4E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BB4EA CRC                   00000000 (0)\n+0BB4EE Compressed Size       00000000 (0)\n+0BB4F2 Uncompressed Size     00000000 (0)\n+0BB4F6 Filename Length       0038 (56)\n+0BB4F8 Extra Length          0000 (0)\n+0BB4FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8A2E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBB4FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08A313 PAYLOAD\n+0BB532 PAYLOAD\n \n-08A94C DATA DESCRIPTOR       08074B50 (134695760)\n-08A950 CRC                   16F10E62 (384896610)\n-08A954 Compressed Size       00000639 (1593)\n-08A958 Uncompressed Size     00001B02 (6914)\n+0BB853 DATA DESCRIPTOR       08074B50 (134695760)\n+0BB857 CRC                   05E875FD (99120637)\n+0BB85B Compressed Size       00000321 (801)\n+0BB85F Uncompressed Size     0000070E (1806)\n \n-08A95C LOCAL HEADER #621     04034B50 (67324752)\n-08A960 Extract Zip Spec      14 (20) '2.0'\n-08A961 Extract OS            00 (0) 'MS-DOS'\n-08A962 General Purpose Flag  0808 (2056)\n+0BB863 LOCAL HEADER #621     04034B50 (67324752)\n+0BB867 Extract Zip Spec      14 (20) '2.0'\n+0BB868 Extract OS            00 (0) 'MS-DOS'\n+0BB869 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08A964 Compression Method    0008 (8) 'Deflated'\n-08A966 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08A96A CRC                   00000000 (0)\n-08A96E Compressed Size       00000000 (0)\n-08A972 Uncompressed Size     00000000 (0)\n-08A976 Filename Length       003A (58)\n-08A978 Extra Length          0000 (0)\n-08A97A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BB86B Compression Method    0008 (8) 'Deflated'\n+0BB86D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BB871 CRC                   00000000 (0)\n+0BB875 Compressed Size       00000000 (0)\n+0BB879 Uncompressed Size     00000000 (0)\n+0BB87D Filename Length       0023 (35)\n+0BB87F Extra Length          0000 (0)\n+0BB881 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8A97A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBB881: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08A9B4 PAYLOAD\n+0BB8A4 PAYLOAD               XX\n \n-08ADD1 DATA DESCRIPTOR       08074B50 (134695760)\n-08ADD5 CRC                   A6F50F6E (2801078126)\n-08ADD9 Compressed Size       0000041D (1053)\n-08ADDD Uncompressed Size     00000BEB (3051)\n+0BB8A6 DATA DESCRIPTOR       08074B50 (134695760)\n+0BB8AA CRC                   00000000 (0)\n+0BB8AE Compressed Size       00000002 (2)\n+0BB8B2 Uncompressed Size     00000000 (0)\n \n-08ADE1 LOCAL HEADER #622     04034B50 (67324752)\n-08ADE5 Extract Zip Spec      14 (20) '2.0'\n-08ADE6 Extract OS            00 (0) 'MS-DOS'\n-08ADE7 General Purpose Flag  0808 (2056)\n+0BB8B6 LOCAL HEADER #622     04034B50 (67324752)\n+0BB8BA Extract Zip Spec      14 (20) '2.0'\n+0BB8BB Extract OS            00 (0) 'MS-DOS'\n+0BB8BC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08ADE9 Compression Method    0008 (8) 'Deflated'\n-08ADEB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08ADEF CRC                   00000000 (0)\n-08ADF3 Compressed Size       00000000 (0)\n-08ADF7 Uncompressed Size     00000000 (0)\n-08ADFB Filename Length       003B (59)\n-08ADFD Extra Length          0000 (0)\n-08ADFF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BB8BE Compression Method    0008 (8) 'Deflated'\n+0BB8C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BB8C4 CRC                   00000000 (0)\n+0BB8C8 Compressed Size       00000000 (0)\n+0BB8CC Uncompressed Size     00000000 (0)\n+0BB8D0 Filename Length       0030 (48)\n+0BB8D2 Extra Length          0000 (0)\n+0BB8D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8ADFF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBB8D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08AE3A PAYLOAD\n+0BB904 PAYLOAD\n \n-08B255 DATA DESCRIPTOR       08074B50 (134695760)\n-08B259 CRC                   5110A2B9 (1360044729)\n-08B25D Compressed Size       0000041B (1051)\n-08B261 Uncompressed Size     00000B8E (2958)\n+0BBE1A DATA DESCRIPTOR       08074B50 (134695760)\n+0BBE1E CRC                   21421505 (557978885)\n+0BBE22 Compressed Size       00000516 (1302)\n+0BBE26 Uncompressed Size     00000C9E (3230)\n \n-08B265 LOCAL HEADER #623     04034B50 (67324752)\n-08B269 Extract Zip Spec      14 (20) '2.0'\n-08B26A Extract OS            00 (0) 'MS-DOS'\n-08B26B General Purpose Flag  0808 (2056)\n+0BBE2A LOCAL HEADER #623     04034B50 (67324752)\n+0BBE2E Extract Zip Spec      14 (20) '2.0'\n+0BBE2F Extract OS            00 (0) 'MS-DOS'\n+0BBE30 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08B26D Compression Method    0008 (8) 'Deflated'\n-08B26F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08B273 CRC                   00000000 (0)\n-08B277 Compressed Size       00000000 (0)\n-08B27B Uncompressed Size     00000000 (0)\n-08B27F Filename Length       0032 (50)\n-08B281 Extra Length          0000 (0)\n-08B283 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BBE32 Compression Method    0008 (8) 'Deflated'\n+0BBE34 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BBE38 CRC                   00000000 (0)\n+0BBE3C Compressed Size       00000000 (0)\n+0BBE40 Uncompressed Size     00000000 (0)\n+0BBE44 Filename Length       0037 (55)\n+0BBE46 Extra Length          0000 (0)\n+0BBE48 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8B283: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBBE48: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08B2B5 PAYLOAD\n+0BBE7F PAYLOAD\n \n-08B6D1 DATA DESCRIPTOR       08074B50 (134695760)\n-08B6D5 CRC                   490F11E6 (1225724390)\n-08B6D9 Compressed Size       0000041C (1052)\n-08B6DD Uncompressed Size     00000C65 (3173)\n+0BC171 DATA DESCRIPTOR       08074B50 (134695760)\n+0BC175 CRC                   766BD114 (1986777364)\n+0BC179 Compressed Size       000002F2 (754)\n+0BC17D Uncompressed Size     00000649 (1609)\n \n-08B6E1 LOCAL HEADER #624     04034B50 (67324752)\n-08B6E5 Extract Zip Spec      14 (20) '2.0'\n-08B6E6 Extract OS            00 (0) 'MS-DOS'\n-08B6E7 General Purpose Flag  0808 (2056)\n+0BC181 LOCAL HEADER #624     04034B50 (67324752)\n+0BC185 Extract Zip Spec      14 (20) '2.0'\n+0BC186 Extract OS            00 (0) 'MS-DOS'\n+0BC187 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08B6E9 Compression Method    0008 (8) 'Deflated'\n-08B6EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08B6EF CRC                   00000000 (0)\n-08B6F3 Compressed Size       00000000 (0)\n-08B6F7 Uncompressed Size     00000000 (0)\n-08B6FB Filename Length       0032 (50)\n-08B6FD Extra Length          0000 (0)\n-08B6FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BC189 Compression Method    0008 (8) 'Deflated'\n+0BC18B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BC18F CRC                   00000000 (0)\n+0BC193 Compressed Size       00000000 (0)\n+0BC197 Uncompressed Size     00000000 (0)\n+0BC19B Filename Length       0023 (35)\n+0BC19D Extra Length          0000 (0)\n+0BC19F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8B6FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBC19F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08B731 PAYLOAD\n+0BC1C2 PAYLOAD               XX\n \n-08BB04 DATA DESCRIPTOR       08074B50 (134695760)\n-08BB08 CRC                   2D3D8039 (759005241)\n-08BB0C Compressed Size       000003D3 (979)\n-08BB10 Uncompressed Size     00000AD5 (2773)\n+0BC1C4 DATA DESCRIPTOR       08074B50 (134695760)\n+0BC1C8 CRC                   00000000 (0)\n+0BC1CC Compressed Size       00000002 (2)\n+0BC1D0 Uncompressed Size     00000000 (0)\n \n-08BB14 LOCAL HEADER #625     04034B50 (67324752)\n-08BB18 Extract Zip Spec      14 (20) '2.0'\n-08BB19 Extract OS            00 (0) 'MS-DOS'\n-08BB1A General Purpose Flag  0808 (2056)\n+0BC1D4 LOCAL HEADER #625     04034B50 (67324752)\n+0BC1D8 Extract Zip Spec      14 (20) '2.0'\n+0BC1D9 Extract OS            00 (0) 'MS-DOS'\n+0BC1DA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08BB1C Compression Method    0008 (8) 'Deflated'\n-08BB1E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08BB22 CRC                   00000000 (0)\n-08BB26 Compressed Size       00000000 (0)\n-08BB2A Uncompressed Size     00000000 (0)\n-08BB2E Filename Length       001D (29)\n-08BB30 Extra Length          0000 (0)\n-08BB32 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BC1DC Compression Method    0008 (8) 'Deflated'\n+0BC1DE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BC1E2 CRC                   00000000 (0)\n+0BC1E6 Compressed Size       00000000 (0)\n+0BC1EA Uncompressed Size     00000000 (0)\n+0BC1EE Filename Length       0030 (48)\n+0BC1F0 Extra Length          0000 (0)\n+0BC1F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8BB32: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBC1F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08BB4F PAYLOAD               XX\n+0BC222 PAYLOAD\n \n-08BB51 DATA DESCRIPTOR       08074B50 (134695760)\n-08BB55 CRC                   00000000 (0)\n-08BB59 Compressed Size       00000002 (2)\n-08BB5D Uncompressed Size     00000000 (0)\n+0BC6FB DATA DESCRIPTOR       08074B50 (134695760)\n+0BC6FF CRC                   E901806B (3909189739)\n+0BC703 Compressed Size       000004D9 (1241)\n+0BC707 Uncompressed Size     00000B75 (2933)\n \n-08BB61 LOCAL HEADER #626     04034B50 (67324752)\n-08BB65 Extract Zip Spec      14 (20) '2.0'\n-08BB66 Extract OS            00 (0) 'MS-DOS'\n-08BB67 General Purpose Flag  0808 (2056)\n+0BC70B LOCAL HEADER #626     04034B50 (67324752)\n+0BC70F Extract Zip Spec      14 (20) '2.0'\n+0BC710 Extract OS            00 (0) 'MS-DOS'\n+0BC711 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08BB69 Compression Method    0008 (8) 'Deflated'\n-08BB6B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08BB6F CRC                   00000000 (0)\n-08BB73 Compressed Size       00000000 (0)\n-08BB77 Uncompressed Size     00000000 (0)\n-08BB7B Filename Length       0036 (54)\n-08BB7D Extra Length          0000 (0)\n-08BB7F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BC713 Compression Method    0008 (8) 'Deflated'\n+0BC715 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BC719 CRC                   00000000 (0)\n+0BC71D Compressed Size       00000000 (0)\n+0BC721 Uncompressed Size     00000000 (0)\n+0BC725 Filename Length       0037 (55)\n+0BC727 Extra Length          0000 (0)\n+0BC729 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8BB7F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBC729: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08BBB5 PAYLOAD\n+0BC760 PAYLOAD\n \n-08C648 DATA DESCRIPTOR       08074B50 (134695760)\n-08C64C CRC                   BACA53B9 (3133821881)\n-08C650 Compressed Size       00000A93 (2707)\n-08C654 Uncompressed Size     000044D5 (17621)\n+0BCA51 DATA DESCRIPTOR       08074B50 (134695760)\n+0BCA55 CRC                   45C1CEBF (1170329279)\n+0BCA59 Compressed Size       000002F1 (753)\n+0BCA5D Uncompressed Size     00000649 (1609)\n \n-08C658 LOCAL HEADER #627     04034B50 (67324752)\n-08C65C Extract Zip Spec      14 (20) '2.0'\n-08C65D Extract OS            00 (0) 'MS-DOS'\n-08C65E General Purpose Flag  0808 (2056)\n+0BCA61 LOCAL HEADER #627     04034B50 (67324752)\n+0BCA65 Extract Zip Spec      14 (20) '2.0'\n+0BCA66 Extract OS            00 (0) 'MS-DOS'\n+0BCA67 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08C660 Compression Method    0008 (8) 'Deflated'\n-08C662 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08C666 CRC                   00000000 (0)\n-08C66A Compressed Size       00000000 (0)\n-08C66E Uncompressed Size     00000000 (0)\n-08C672 Filename Length       002C (44)\n-08C674 Extra Length          0000 (0)\n-08C676 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BCA69 Compression Method    0008 (8) 'Deflated'\n+0BCA6B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BCA6F CRC                   00000000 (0)\n+0BCA73 Compressed Size       00000000 (0)\n+0BCA77 Uncompressed Size     00000000 (0)\n+0BCA7B Filename Length       002B (43)\n+0BCA7D Extra Length          0000 (0)\n+0BCA7F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8C676: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBCA7F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08C6A2 PAYLOAD\n+0BCAAA PAYLOAD               XX\n \n-08D10A DATA DESCRIPTOR       08074B50 (134695760)\n-08D10E CRC                   FA032BB6 (4194511798)\n-08D112 Compressed Size       00000A68 (2664)\n-08D116 Uncompressed Size     00003385 (13189)\n+0BCAAC DATA DESCRIPTOR       08074B50 (134695760)\n+0BCAB0 CRC                   00000000 (0)\n+0BCAB4 Compressed Size       00000002 (2)\n+0BCAB8 Uncompressed Size     00000000 (0)\n \n-08D11A LOCAL HEADER #628     04034B50 (67324752)\n-08D11E Extract Zip Spec      14 (20) '2.0'\n-08D11F Extract OS            00 (0) 'MS-DOS'\n-08D120 General Purpose Flag  0808 (2056)\n+0BCABC LOCAL HEADER #628     04034B50 (67324752)\n+0BCAC0 Extract Zip Spec      14 (20) '2.0'\n+0BCAC1 Extract OS            00 (0) 'MS-DOS'\n+0BCAC2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08D122 Compression Method    0008 (8) 'Deflated'\n-08D124 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08D128 CRC                   00000000 (0)\n-08D12C Compressed Size       00000000 (0)\n-08D130 Uncompressed Size     00000000 (0)\n-08D134 Filename Length       0026 (38)\n-08D136 Extra Length          0000 (0)\n-08D138 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BCAC4 Compression Method    0008 (8) 'Deflated'\n+0BCAC6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BCACA CRC                   00000000 (0)\n+0BCACE Compressed Size       00000000 (0)\n+0BCAD2 Uncompressed Size     00000000 (0)\n+0BCAD6 Filename Length       0040 (64)\n+0BCAD8 Extra Length          0000 (0)\n+0BCADA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8D138: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBCADA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08D15E PAYLOAD\n+0BCB1A PAYLOAD\n \n-08DD18 DATA DESCRIPTOR       08074B50 (134695760)\n-08DD1C CRC                   39C07894 (968915092)\n-08DD20 Compressed Size       00000BBA (3002)\n-08DD24 Uncompressed Size     00006AA4 (27300)\n+0BCFF9 DATA DESCRIPTOR       08074B50 (134695760)\n+0BCFFD CRC                   27EFB86F (670021743)\n+0BD001 Compressed Size       000004DF (1247)\n+0BD005 Uncompressed Size     00000B71 (2929)\n \n-08DD28 LOCAL HEADER #629     04034B50 (67324752)\n-08DD2C Extract Zip Spec      14 (20) '2.0'\n-08DD2D Extract OS            00 (0) 'MS-DOS'\n-08DD2E General Purpose Flag  0808 (2056)\n+0BD009 LOCAL HEADER #629     04034B50 (67324752)\n+0BD00D Extract Zip Spec      14 (20) '2.0'\n+0BD00E Extract OS            00 (0) 'MS-DOS'\n+0BD00F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08DD30 Compression Method    0008 (8) 'Deflated'\n-08DD32 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08DD36 CRC                   00000000 (0)\n-08DD3A Compressed Size       00000000 (0)\n-08DD3E Uncompressed Size     00000000 (0)\n-08DD42 Filename Length       002B (43)\n-08DD44 Extra Length          0000 (0)\n-08DD46 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BD011 Compression Method    0008 (8) 'Deflated'\n+0BD013 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BD017 CRC                   00000000 (0)\n+0BD01B Compressed Size       00000000 (0)\n+0BD01F Uncompressed Size     00000000 (0)\n+0BD023 Filename Length       0047 (71)\n+0BD025 Extra Length          0000 (0)\n+0BD027 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8DD46: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBD027: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08DD71 PAYLOAD\n+0BD06E PAYLOAD\n \n-08E246 DATA DESCRIPTOR       08074B50 (134695760)\n-08E24A CRC                   2313A478 (588489848)\n-08E24E Compressed Size       000004D5 (1237)\n-08E252 Uncompressed Size     00001330 (4912)\n+0BD388 DATA DESCRIPTOR       08074B50 (134695760)\n+0BD38C CRC                   0D988858 (228100184)\n+0BD390 Compressed Size       0000031A (794)\n+0BD394 Uncompressed Size     000006C6 (1734)\n \n-08E256 LOCAL HEADER #630     04034B50 (67324752)\n-08E25A Extract Zip Spec      14 (20) '2.0'\n-08E25B Extract OS            00 (0) 'MS-DOS'\n-08E25C General Purpose Flag  0808 (2056)\n+0BD398 LOCAL HEADER #630     04034B50 (67324752)\n+0BD39C Extract Zip Spec      14 (20) '2.0'\n+0BD39D Extract OS            00 (0) 'MS-DOS'\n+0BD39E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08E25E Compression Method    0008 (8) 'Deflated'\n-08E260 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08E264 CRC                   00000000 (0)\n-08E268 Compressed Size       00000000 (0)\n-08E26C Uncompressed Size     00000000 (0)\n-08E270 Filename Length       002F (47)\n-08E272 Extra Length          0000 (0)\n-08E274 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BD3A0 Compression Method    0008 (8) 'Deflated'\n+0BD3A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BD3A6 CRC                   00000000 (0)\n+0BD3AA Compressed Size       00000000 (0)\n+0BD3AE Uncompressed Size     00000000 (0)\n+0BD3B2 Filename Length       0033 (51)\n+0BD3B4 Extra Length          0000 (0)\n+0BD3B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8E274: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBD3B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08E2A3 PAYLOAD\n+0BD3E9 PAYLOAD               XX\n \n-08E566 DATA DESCRIPTOR       08074B50 (134695760)\n-08E56A CRC                   10BC97FD (280795133)\n-08E56E Compressed Size       000002C3 (707)\n-08E572 Uncompressed Size     000005B5 (1461)\n+0BD3EB DATA DESCRIPTOR       08074B50 (134695760)\n+0BD3EF CRC                   00000000 (0)\n+0BD3F3 Compressed Size       00000002 (2)\n+0BD3F7 Uncompressed Size     00000000 (0)\n \n-08E576 LOCAL HEADER #631     04034B50 (67324752)\n-08E57A Extract Zip Spec      14 (20) '2.0'\n-08E57B Extract OS            00 (0) 'MS-DOS'\n-08E57C General Purpose Flag  0808 (2056)\n+0BD3FB LOCAL HEADER #631     04034B50 (67324752)\n+0BD3FF Extract Zip Spec      14 (20) '2.0'\n+0BD400 Extract OS            00 (0) 'MS-DOS'\n+0BD401 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08E57E Compression Method    0008 (8) 'Deflated'\n-08E580 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08E584 CRC                   00000000 (0)\n-08E588 Compressed Size       00000000 (0)\n-08E58C Uncompressed Size     00000000 (0)\n-08E590 Filename Length       002A (42)\n-08E592 Extra Length          0000 (0)\n-08E594 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BD403 Compression Method    0008 (8) 'Deflated'\n+0BD405 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BD409 CRC                   00000000 (0)\n+0BD40D Compressed Size       00000000 (0)\n+0BD411 Uncompressed Size     00000000 (0)\n+0BD415 Filename Length       003A (58)\n+0BD417 Extra Length          0000 (0)\n+0BD419 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8E594: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBD419: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08E5BE PAYLOAD\n+0BD453 PAYLOAD\n \n-08E83C DATA DESCRIPTOR       08074B50 (134695760)\n-08E840 CRC                   982A34CC (2552902860)\n-08E844 Compressed Size       0000027E (638)\n-08E848 Uncompressed Size     000004AE (1198)\n+0BD7E2 DATA DESCRIPTOR       08074B50 (134695760)\n+0BD7E6 CRC                   6B1D5A12 (1797085714)\n+0BD7EA Compressed Size       0000038F (911)\n+0BD7EE Uncompressed Size     000008B1 (2225)\n \n-08E84C LOCAL HEADER #632     04034B50 (67324752)\n-08E850 Extract Zip Spec      14 (20) '2.0'\n-08E851 Extract OS            00 (0) 'MS-DOS'\n-08E852 General Purpose Flag  0808 (2056)\n+0BD7F2 LOCAL HEADER #632     04034B50 (67324752)\n+0BD7F6 Extract Zip Spec      14 (20) '2.0'\n+0BD7F7 Extract OS            00 (0) 'MS-DOS'\n+0BD7F8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08E854 Compression Method    0008 (8) 'Deflated'\n-08E856 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08E85A CRC                   00000000 (0)\n-08E85E Compressed Size       00000000 (0)\n-08E862 Uncompressed Size     00000000 (0)\n-08E866 Filename Length       002C (44)\n-08E868 Extra Length          0000 (0)\n-08E86A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BD7FA Compression Method    0008 (8) 'Deflated'\n+0BD7FC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BD800 CRC                   00000000 (0)\n+0BD804 Compressed Size       00000000 (0)\n+0BD808 Uncompressed Size     00000000 (0)\n+0BD80C Filename Length       0041 (65)\n+0BD80E Extra Length          0000 (0)\n+0BD810 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8E86A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBD810: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08E896 PAYLOAD\n+0BD851 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-08EE28 DATA DESCRIPTOR       08074B50 (134695760)\n-08EE2C CRC                   7653CF57 (1985204055)\n-08EE30 Compressed Size       00000592 (1426)\n-08EE34 Uncompressed Size     000015FB (5627)\n+0BD895 DATA DESCRIPTOR       08074B50 (134695760)\n+0BD899 CRC                   20BB9478 (549164152)\n+0BD89D Compressed Size       00000044 (68)\n+0BD8A1 Uncompressed Size     00000049 (73)\n \n-08EE38 LOCAL HEADER #633     04034B50 (67324752)\n-08EE3C Extract Zip Spec      14 (20) '2.0'\n-08EE3D Extract OS            00 (0) 'MS-DOS'\n-08EE3E General Purpose Flag  0808 (2056)\n+0BD8A5 LOCAL HEADER #633     04034B50 (67324752)\n+0BD8A9 Extract Zip Spec      14 (20) '2.0'\n+0BD8AA Extract OS            00 (0) 'MS-DOS'\n+0BD8AB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08EE40 Compression Method    0008 (8) 'Deflated'\n-08EE42 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08EE46 CRC                   00000000 (0)\n-08EE4A Compressed Size       00000000 (0)\n-08EE4E Uncompressed Size     00000000 (0)\n-08EE52 Filename Length       002C (44)\n-08EE54 Extra Length          0000 (0)\n-08EE56 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BD8AD Compression Method    0008 (8) 'Deflated'\n+0BD8AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BD8B3 CRC                   00000000 (0)\n+0BD8B7 Compressed Size       00000000 (0)\n+0BD8BB Uncompressed Size     00000000 (0)\n+0BD8BF Filename Length       001C (28)\n+0BD8C1 Extra Length          0000 (0)\n+0BD8C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8EE56: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBD8C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08EE82 PAYLOAD\n+0BD8DF PAYLOAD               XX\n \n-08F201 DATA DESCRIPTOR       08074B50 (134695760)\n-08F205 CRC                   4D87180A (1300699146)\n-08F209 Compressed Size       0000037F (895)\n-08F20D Uncompressed Size     000008A6 (2214)\n+0BD8E1 DATA DESCRIPTOR       08074B50 (134695760)\n+0BD8E5 CRC                   00000000 (0)\n+0BD8E9 Compressed Size       00000002 (2)\n+0BD8ED Uncompressed Size     00000000 (0)\n \n-08F211 LOCAL HEADER #634     04034B50 (67324752)\n-08F215 Extract Zip Spec      14 (20) '2.0'\n-08F216 Extract OS            00 (0) 'MS-DOS'\n-08F217 General Purpose Flag  0808 (2056)\n+0BD8F1 LOCAL HEADER #634     04034B50 (67324752)\n+0BD8F5 Extract Zip Spec      14 (20) '2.0'\n+0BD8F6 Extract OS            00 (0) 'MS-DOS'\n+0BD8F7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08F219 Compression Method    0008 (8) 'Deflated'\n-08F21B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08F21F CRC                   00000000 (0)\n-08F223 Compressed Size       00000000 (0)\n-08F227 Uncompressed Size     00000000 (0)\n-08F22B Filename Length       002B (43)\n-08F22D Extra Length          0000 (0)\n-08F22F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BD8F9 Compression Method    0008 (8) 'Deflated'\n+0BD8FB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BD8FF CRC                   00000000 (0)\n+0BD903 Compressed Size       00000000 (0)\n+0BD907 Uncompressed Size     00000000 (0)\n+0BD90B Filename Length       0030 (48)\n+0BD90D Extra Length          0000 (0)\n+0BD90F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8F22F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBD90F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08F25A PAYLOAD\n+0BD93F PAYLOAD\n \n-08F5C2 DATA DESCRIPTOR       08074B50 (134695760)\n-08F5C6 CRC                   8F2D4992 (2402109842)\n-08F5CA Compressed Size       00000368 (872)\n-08F5CE Uncompressed Size     000008C7 (2247)\n+0BDC71 DATA DESCRIPTOR       08074B50 (134695760)\n+0BDC75 CRC                   9FA19E67 (2678169191)\n+0BDC79 Compressed Size       00000332 (818)\n+0BDC7D Uncompressed Size     00000668 (1640)\n \n-08F5D2 LOCAL HEADER #635     04034B50 (67324752)\n-08F5D6 Extract Zip Spec      14 (20) '2.0'\n-08F5D7 Extract OS            00 (0) 'MS-DOS'\n-08F5D8 General Purpose Flag  0808 (2056)\n+0BDC81 LOCAL HEADER #635     04034B50 (67324752)\n+0BDC85 Extract Zip Spec      14 (20) '2.0'\n+0BDC86 Extract OS            00 (0) 'MS-DOS'\n+0BDC87 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08F5DA Compression Method    0008 (8) 'Deflated'\n-08F5DC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08F5E0 CRC                   00000000 (0)\n-08F5E4 Compressed Size       00000000 (0)\n-08F5E8 Uncompressed Size     00000000 (0)\n-08F5EC Filename Length       002D (45)\n-08F5EE Extra Length          0000 (0)\n-08F5F0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BDC89 Compression Method    0008 (8) 'Deflated'\n+0BDC8B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BDC8F CRC                   00000000 (0)\n+0BDC93 Compressed Size       00000000 (0)\n+0BDC97 Uncompressed Size     00000000 (0)\n+0BDC9B Filename Length       002B (43)\n+0BDC9D Extra Length          0000 (0)\n+0BDC9F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8F5F0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBDC9F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08F61D PAYLOAD\n+0BDCCA PAYLOAD\n \n-08F976 DATA DESCRIPTOR       08074B50 (134695760)\n-08F97A CRC                   33828390 (864191376)\n-08F97E Compressed Size       00000359 (857)\n-08F982 Uncompressed Size     00000AEC (2796)\n+0BDF9A DATA DESCRIPTOR       08074B50 (134695760)\n+0BDF9E CRC                   00116B33 (1141555)\n+0BDFA2 Compressed Size       000002D0 (720)\n+0BDFA6 Uncompressed Size     000005E3 (1507)\n \n-08F986 LOCAL HEADER #636     04034B50 (67324752)\n-08F98A Extract Zip Spec      14 (20) '2.0'\n-08F98B Extract OS            00 (0) 'MS-DOS'\n-08F98C General Purpose Flag  0808 (2056)\n+0BDFAA LOCAL HEADER #636     04034B50 (67324752)\n+0BDFAE Extract Zip Spec      14 (20) '2.0'\n+0BDFAF Extract OS            00 (0) 'MS-DOS'\n+0BDFB0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-08F98E Compression Method    0008 (8) 'Deflated'\n-08F990 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-08F994 CRC                   00000000 (0)\n-08F998 Compressed Size       00000000 (0)\n-08F99C Uncompressed Size     00000000 (0)\n-08F9A0 Filename Length       002C (44)\n-08F9A2 Extra Length          0000 (0)\n-08F9A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BDFB2 Compression Method    0008 (8) 'Deflated'\n+0BDFB4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BDFB8 CRC                   00000000 (0)\n+0BDFBC Compressed Size       00000000 (0)\n+0BDFC0 Uncompressed Size     00000000 (0)\n+0BDFC4 Filename Length       002A (42)\n+0BDFC6 Extra Length          0000 (0)\n+0BDFC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x8F9A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBDFC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-08F9D0 PAYLOAD\n+0BDFF2 PAYLOAD\n \n-0900D8 DATA DESCRIPTOR       08074B50 (134695760)\n-0900DC CRC                   ECCF2EAF (3973000879)\n-0900E0 Compressed Size       00000708 (1800)\n-0900E4 Uncompressed Size     00001FDF (8159)\n+0BE26B DATA DESCRIPTOR       08074B50 (134695760)\n+0BE26F CRC                   767F730D (1988064013)\n+0BE273 Compressed Size       00000279 (633)\n+0BE277 Uncompressed Size     00000479 (1145)\n \n-0900E8 LOCAL HEADER #637     04034B50 (67324752)\n-0900EC Extract Zip Spec      14 (20) '2.0'\n-0900ED Extract OS            00 (0) 'MS-DOS'\n-0900EE General Purpose Flag  0808 (2056)\n+0BE27B LOCAL HEADER #637     04034B50 (67324752)\n+0BE27F Extract Zip Spec      14 (20) '2.0'\n+0BE280 Extract OS            00 (0) 'MS-DOS'\n+0BE281 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0900F0 Compression Method    0008 (8) 'Deflated'\n-0900F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0900F6 CRC                   00000000 (0)\n-0900FA Compressed Size       00000000 (0)\n-0900FE Uncompressed Size     00000000 (0)\n-090102 Filename Length       0030 (48)\n-090104 Extra Length          0000 (0)\n-090106 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BE283 Compression Method    0008 (8) 'Deflated'\n+0BE285 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BE289 CRC                   00000000 (0)\n+0BE28D Compressed Size       00000000 (0)\n+0BE291 Uncompressed Size     00000000 (0)\n+0BE295 Filename Length       0023 (35)\n+0BE297 Extra Length          0000 (0)\n+0BE299 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x90106: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBE299: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-090136 PAYLOAD\n+0BE2BC PAYLOAD               XX\n \n-0903A8 DATA DESCRIPTOR       08074B50 (134695760)\n-0903AC CRC                   4EF6CDD0 (1324797392)\n-0903B0 Compressed Size       00000272 (626)\n-0903B4 Uncompressed Size     00000489 (1161)\n+0BE2BE DATA DESCRIPTOR       08074B50 (134695760)\n+0BE2C2 CRC                   00000000 (0)\n+0BE2C6 Compressed Size       00000002 (2)\n+0BE2CA Uncompressed Size     00000000 (0)\n \n-0903B8 LOCAL HEADER #638     04034B50 (67324752)\n-0903BC Extract Zip Spec      14 (20) '2.0'\n-0903BD Extract OS            00 (0) 'MS-DOS'\n-0903BE General Purpose Flag  0808 (2056)\n+0BE2CE LOCAL HEADER #638     04034B50 (67324752)\n+0BE2D2 Extract Zip Spec      14 (20) '2.0'\n+0BE2D3 Extract OS            00 (0) 'MS-DOS'\n+0BE2D4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0903C0 Compression Method    0008 (8) 'Deflated'\n-0903C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0903C6 CRC                   00000000 (0)\n-0903CA Compressed Size       00000000 (0)\n-0903CE Uncompressed Size     00000000 (0)\n-0903D2 Filename Length       0027 (39)\n-0903D4 Extra Length          0000 (0)\n-0903D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BE2D6 Compression Method    0008 (8) 'Deflated'\n+0BE2D8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BE2DC CRC                   00000000 (0)\n+0BE2E0 Compressed Size       00000000 (0)\n+0BE2E4 Uncompressed Size     00000000 (0)\n+0BE2E8 Filename Length       0038 (56)\n+0BE2EA Extra Length          0000 (0)\n+0BE2EC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x903D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBE2EC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0903FD PAYLOAD\n+0BE324 PAYLOAD\n \n-091B1D DATA DESCRIPTOR       08074B50 (134695760)\n-091B21 CRC                   D5F1D071 (3589394545)\n-091B25 Compressed Size       00001720 (5920)\n-091B29 Uncompressed Size     000072B9 (29369)\n+0BE9AE DATA DESCRIPTOR       08074B50 (134695760)\n+0BE9B2 CRC                   C93175C4 (3375461828)\n+0BE9B6 Compressed Size       0000068A (1674)\n+0BE9BA Uncompressed Size     000012EA (4842)\n \n-091B2D LOCAL HEADER #639     04034B50 (67324752)\n-091B31 Extract Zip Spec      14 (20) '2.0'\n-091B32 Extract OS            00 (0) 'MS-DOS'\n-091B33 General Purpose Flag  0808 (2056)\n+0BE9BE LOCAL HEADER #639     04034B50 (67324752)\n+0BE9C2 Extract Zip Spec      14 (20) '2.0'\n+0BE9C3 Extract OS            00 (0) 'MS-DOS'\n+0BE9C4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-091B35 Compression Method    0008 (8) 'Deflated'\n-091B37 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-091B3B CRC                   00000000 (0)\n-091B3F Compressed Size       00000000 (0)\n-091B43 Uncompressed Size     00000000 (0)\n-091B47 Filename Length       001D (29)\n-091B49 Extra Length          0000 (0)\n-091B4B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BE9C6 Compression Method    0008 (8) 'Deflated'\n+0BE9C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BE9CC CRC                   00000000 (0)\n+0BE9D0 Compressed Size       00000000 (0)\n+0BE9D4 Uncompressed Size     00000000 (0)\n+0BE9D8 Filename Length       0024 (36)\n+0BE9DA Extra Length          0000 (0)\n+0BE9DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x91B4B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBE9DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-091B68 PAYLOAD               XX\n+0BEA00 PAYLOAD               XX\n \n-091B6A DATA DESCRIPTOR       08074B50 (134695760)\n-091B6E CRC                   00000000 (0)\n-091B72 Compressed Size       00000002 (2)\n-091B76 Uncompressed Size     00000000 (0)\n+0BEA02 DATA DESCRIPTOR       08074B50 (134695760)\n+0BEA06 CRC                   00000000 (0)\n+0BEA0A Compressed Size       00000002 (2)\n+0BEA0E Uncompressed Size     00000000 (0)\n \n-091B7A LOCAL HEADER #640     04034B50 (67324752)\n-091B7E Extract Zip Spec      14 (20) '2.0'\n-091B7F Extract OS            00 (0) 'MS-DOS'\n-091B80 General Purpose Flag  0808 (2056)\n+0BEA12 LOCAL HEADER #640     04034B50 (67324752)\n+0BEA16 Extract Zip Spec      14 (20) '2.0'\n+0BEA17 Extract OS            00 (0) 'MS-DOS'\n+0BEA18 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-091B82 Compression Method    0008 (8) 'Deflated'\n-091B84 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-091B88 CRC                   00000000 (0)\n-091B8C Compressed Size       00000000 (0)\n-091B90 Uncompressed Size     00000000 (0)\n-091B94 Filename Length       002D (45)\n-091B96 Extra Length          0000 (0)\n-091B98 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BEA1A Compression Method    0008 (8) 'Deflated'\n+0BEA1C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BEA20 CRC                   00000000 (0)\n+0BEA24 Compressed Size       00000000 (0)\n+0BEA28 Uncompressed Size     00000000 (0)\n+0BEA2C Filename Length       003B (59)\n+0BEA2E Extra Length          0000 (0)\n+0BEA30 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x91B98: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBEA30: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-091BC5 PAYLOAD\n+0BEA6B PAYLOAD\n \n-091FB7 DATA DESCRIPTOR       08074B50 (134695760)\n-091FBB CRC                   99C9FFC3 (2580152259)\n-091FBF Compressed Size       000003F2 (1010)\n-091FC3 Uncompressed Size     00000902 (2306)\n+0BEDD8 DATA DESCRIPTOR       08074B50 (134695760)\n+0BEDDC CRC                   1D7B340C (494613516)\n+0BEDE0 Compressed Size       0000036D (877)\n+0BEDE4 Uncompressed Size     000007D6 (2006)\n \n-091FC7 LOCAL HEADER #641     04034B50 (67324752)\n-091FCB Extract Zip Spec      14 (20) '2.0'\n-091FCC Extract OS            00 (0) 'MS-DOS'\n-091FCD General Purpose Flag  0808 (2056)\n+0BEDE8 LOCAL HEADER #641     04034B50 (67324752)\n+0BEDEC Extract Zip Spec      14 (20) '2.0'\n+0BEDED Extract OS            00 (0) 'MS-DOS'\n+0BEDEE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-091FCF Compression Method    0008 (8) 'Deflated'\n-091FD1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-091FD5 CRC                   00000000 (0)\n-091FD9 Compressed Size       00000000 (0)\n-091FDD Uncompressed Size     00000000 (0)\n-091FE1 Filename Length       0036 (54)\n-091FE3 Extra Length          0000 (0)\n-091FE5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BEDF0 Compression Method    0008 (8) 'Deflated'\n+0BEDF2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BEDF6 CRC                   00000000 (0)\n+0BEDFA Compressed Size       00000000 (0)\n+0BEDFE Uncompressed Size     00000000 (0)\n+0BEE02 Filename Length       0030 (48)\n+0BEE04 Extra Length          0000 (0)\n+0BEE06 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x91FE5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBEE06: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09201B PAYLOAD\n+0BEE36 PAYLOAD               XX\n \n-09228F DATA DESCRIPTOR       08074B50 (134695760)\n-092293 CRC                   C53EC878 (3309226104)\n-092297 Compressed Size       00000274 (628)\n-09229B Uncompressed Size     00000488 (1160)\n+0BEE38 DATA DESCRIPTOR       08074B50 (134695760)\n+0BEE3C CRC                   00000000 (0)\n+0BEE40 Compressed Size       00000002 (2)\n+0BEE44 Uncompressed Size     00000000 (0)\n \n-09229F LOCAL HEADER #642     04034B50 (67324752)\n-0922A3 Extract Zip Spec      14 (20) '2.0'\n-0922A4 Extract OS            00 (0) 'MS-DOS'\n-0922A5 General Purpose Flag  0808 (2056)\n+0BEE48 LOCAL HEADER #642     04034B50 (67324752)\n+0BEE4C Extract Zip Spec      14 (20) '2.0'\n+0BEE4D Extract OS            00 (0) 'MS-DOS'\n+0BEE4E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0922A7 Compression Method    0008 (8) 'Deflated'\n-0922A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0922AD CRC                   00000000 (0)\n-0922B1 Compressed Size       00000000 (0)\n-0922B5 Uncompressed Size     00000000 (0)\n-0922B9 Filename Length       0037 (55)\n-0922BB Extra Length          0000 (0)\n-0922BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BEE50 Compression Method    0008 (8) 'Deflated'\n+0BEE52 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BEE56 CRC                   00000000 (0)\n+0BEE5A Compressed Size       00000000 (0)\n+0BEE5E Uncompressed Size     00000000 (0)\n+0BEE62 Filename Length       0040 (64)\n+0BEE64 Extra Length          0000 (0)\n+0BEE66 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x922BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBEE66: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0922F4 PAYLOAD\n+0BEEA6 PAYLOAD\n \n-092686 DATA DESCRIPTOR       08074B50 (134695760)\n-09268A CRC                   8EF8ABEC (2398661612)\n-09268E Compressed Size       00000392 (914)\n-092692 Uncompressed Size     00000920 (2336)\n+0BF164 DATA DESCRIPTOR       08074B50 (134695760)\n+0BF168 CRC                   5A6ECC92 (1517210770)\n+0BF16C Compressed Size       000002BE (702)\n+0BF170 Uncompressed Size     000005C3 (1475)\n \n-092696 LOCAL HEADER #643     04034B50 (67324752)\n-09269A Extract Zip Spec      14 (20) '2.0'\n-09269B Extract OS            00 (0) 'MS-DOS'\n-09269C General Purpose Flag  0808 (2056)\n+0BF174 LOCAL HEADER #643     04034B50 (67324752)\n+0BF178 Extract Zip Spec      14 (20) '2.0'\n+0BF179 Extract OS            00 (0) 'MS-DOS'\n+0BF17A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09269E Compression Method    0008 (8) 'Deflated'\n-0926A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0926A4 CRC                   00000000 (0)\n-0926A8 Compressed Size       00000000 (0)\n-0926AC Uncompressed Size     00000000 (0)\n-0926B0 Filename Length       001F (31)\n-0926B2 Extra Length          0000 (0)\n-0926B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BF17C Compression Method    0008 (8) 'Deflated'\n+0BF17E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BF182 CRC                   00000000 (0)\n+0BF186 Compressed Size       00000000 (0)\n+0BF18A Uncompressed Size     00000000 (0)\n+0BF18E Filename Length       003F (63)\n+0BF190 Extra Length          0000 (0)\n+0BF192 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x926B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xBF192: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0926D3 PAYLOAD               XX\n+0BF1D1 PAYLOAD\n \n-0926D5 DATA DESCRIPTOR       08074B50 (134695760)\n-0926D9 CRC                   00000000 (0)\n-0926DD Compressed Size       00000002 (2)\n-0926E1 Uncompressed Size     00000000 (0)\n+0BFFDE DATA DESCRIPTOR       08074B50 (134695760)\n+0BFFE2 CRC                   B191ADCB (2979114443)\n+0BFFE6 Compressed Size       00000E0D (3597)\n+0BFFEA Uncompressed Size     00003D3F (15679)\n \n-0926E5 LOCAL HEADER #644     04034B50 (67324752)\n-0926E9 Extract Zip Spec      14 (20) '2.0'\n-0926EA Extract OS            00 (0) 'MS-DOS'\n-0926EB General Purpose Flag  0808 (2056)\n+0BFFEE LOCAL HEADER #644     04034B50 (67324752)\n+0BFFF2 Extract Zip Spec      14 (20) '2.0'\n+0BFFF3 Extract OS            00 (0) 'MS-DOS'\n+0BFFF4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0926ED Compression Method    0008 (8) 'Deflated'\n-0926EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0926F3 CRC                   00000000 (0)\n-0926F7 Compressed Size       00000000 (0)\n-0926FB Uncompressed Size     00000000 (0)\n-0926FF Filename Length       0029 (41)\n-092701 Extra Length          0000 (0)\n-092703 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0BFFF6 Compression Method    0008 (8) 'Deflated'\n+0BFFF8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0BFFFC CRC                   00000000 (0)\n+0C0000 Compressed Size       00000000 (0)\n+0C0004 Uncompressed Size     00000000 (0)\n+0C0008 Filename Length       0038 (56)\n+0C000A Extra Length          0000 (0)\n+0C000C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x92703: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC000C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09272C PAYLOAD\n+0C0044 PAYLOAD               XX\n \n-092975 DATA DESCRIPTOR       08074B50 (134695760)\n-092979 CRC                   9D821087 (2642546823)\n-09297D Compressed Size       00000249 (585)\n-092981 Uncompressed Size     000004BE (1214)\n+0C0046 DATA DESCRIPTOR       08074B50 (134695760)\n+0C004A CRC                   00000000 (0)\n+0C004E Compressed Size       00000002 (2)\n+0C0052 Uncompressed Size     00000000 (0)\n \n-092985 LOCAL HEADER #645     04034B50 (67324752)\n-092989 Extract Zip Spec      14 (20) '2.0'\n-09298A Extract OS            00 (0) 'MS-DOS'\n-09298B General Purpose Flag  0808 (2056)\n+0C0056 LOCAL HEADER #645     04034B50 (67324752)\n+0C005A Extract Zip Spec      14 (20) '2.0'\n+0C005B Extract OS            00 (0) 'MS-DOS'\n+0C005C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09298D Compression Method    0008 (8) 'Deflated'\n-09298F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-092993 CRC                   00000000 (0)\n-092997 Compressed Size       00000000 (0)\n-09299B Uncompressed Size     00000000 (0)\n-09299F Filename Length       002A (42)\n-0929A1 Extra Length          0000 (0)\n-0929A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C005E Compression Method    0008 (8) 'Deflated'\n+0C0060 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C0064 CRC                   00000000 (0)\n+0C0068 Compressed Size       00000000 (0)\n+0C006C Uncompressed Size     00000000 (0)\n+0C0070 Filename Length       003F (63)\n+0C0072 Extra Length          0000 (0)\n+0C0074 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x929A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC0074: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0929CD PAYLOAD\n+0C00B3 PAYLOAD\n \n-092D3E DATA DESCRIPTOR       08074B50 (134695760)\n-092D42 CRC                   7A6DF346 (2054026054)\n-092D46 Compressed Size       00000371 (881)\n-092D4A Uncompressed Size     00000ED8 (3800)\n+0C0487 DATA DESCRIPTOR       08074B50 (134695760)\n+0C048B CRC                   705B7625 (1885042213)\n+0C048F Compressed Size       000003D4 (980)\n+0C0493 Uncompressed Size     00000BC3 (3011)\n \n-092D4E LOCAL HEADER #646     04034B50 (67324752)\n-092D52 Extract Zip Spec      14 (20) '2.0'\n-092D53 Extract OS            00 (0) 'MS-DOS'\n-092D54 General Purpose Flag  0808 (2056)\n+0C0497 LOCAL HEADER #646     04034B50 (67324752)\n+0C049B Extract Zip Spec      14 (20) '2.0'\n+0C049C Extract OS            00 (0) 'MS-DOS'\n+0C049D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-092D56 Compression Method    0008 (8) 'Deflated'\n-092D58 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-092D5C CRC                   00000000 (0)\n-092D60 Compressed Size       00000000 (0)\n-092D64 Uncompressed Size     00000000 (0)\n-092D68 Filename Length       0031 (49)\n-092D6A Extra Length          0000 (0)\n-092D6C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C049F Compression Method    0008 (8) 'Deflated'\n+0C04A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C04A5 CRC                   00000000 (0)\n+0C04A9 Compressed Size       00000000 (0)\n+0C04AD Uncompressed Size     00000000 (0)\n+0C04B1 Filename Length       0046 (70)\n+0C04B3 Extra Length          0000 (0)\n+0C04B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x92D6C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC04B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-092D9D PAYLOAD\n+0C04FB PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-093081 DATA DESCRIPTOR       08074B50 (134695760)\n-093085 CRC                   A6EF1A57 (2800687703)\n-093089 Compressed Size       000002E4 (740)\n-09308D Uncompressed Size     00000745 (1861)\n+0C0545 DATA DESCRIPTOR       08074B50 (134695760)\n+0C0549 CRC                   D1A9E247 (3517571655)\n+0C054D Compressed Size       0000004A (74)\n+0C0551 Uncompressed Size     0000004E (78)\n \n-093091 LOCAL HEADER #647     04034B50 (67324752)\n-093095 Extract Zip Spec      14 (20) '2.0'\n-093096 Extract OS            00 (0) 'MS-DOS'\n-093097 General Purpose Flag  0808 (2056)\n+0C0555 LOCAL HEADER #647     04034B50 (67324752)\n+0C0559 Extract Zip Spec      14 (20) '2.0'\n+0C055A Extract OS            00 (0) 'MS-DOS'\n+0C055B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-093099 Compression Method    0008 (8) 'Deflated'\n-09309B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09309F CRC                   00000000 (0)\n-0930A3 Compressed Size       00000000 (0)\n-0930A7 Uncompressed Size     00000000 (0)\n-0930AB Filename Length       0031 (49)\n-0930AD Extra Length          0000 (0)\n-0930AF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C055D Compression Method    0008 (8) 'Deflated'\n+0C055F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C0563 CRC                   00000000 (0)\n+0C0567 Compressed Size       00000000 (0)\n+0C056B Uncompressed Size     00000000 (0)\n+0C056F Filename Length       001A (26)\n+0C0571 Extra Length          0000 (0)\n+0C0573 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x930AF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC0573: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0930E0 PAYLOAD\n+0C058D PAYLOAD               XX\n \n-09369E DATA DESCRIPTOR       08074B50 (134695760)\n-0936A2 CRC                   626EDC3E (1651432510)\n-0936A6 Compressed Size       000005BE (1470)\n-0936AA Uncompressed Size     00001485 (5253)\n+0C058F DATA DESCRIPTOR       08074B50 (134695760)\n+0C0593 CRC                   00000000 (0)\n+0C0597 Compressed Size       00000002 (2)\n+0C059B Uncompressed Size     00000000 (0)\n \n-0936AE LOCAL HEADER #648     04034B50 (67324752)\n-0936B2 Extract Zip Spec      14 (20) '2.0'\n-0936B3 Extract OS            00 (0) 'MS-DOS'\n-0936B4 General Purpose Flag  0808 (2056)\n+0C059F LOCAL HEADER #648     04034B50 (67324752)\n+0C05A3 Extract Zip Spec      14 (20) '2.0'\n+0C05A4 Extract OS            00 (0) 'MS-DOS'\n+0C05A5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0936B6 Compression Method    0008 (8) 'Deflated'\n-0936B8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0936BC CRC                   00000000 (0)\n-0936C0 Compressed Size       00000000 (0)\n-0936C4 Uncompressed Size     00000000 (0)\n-0936C8 Filename Length       0023 (35)\n-0936CA Extra Length          0000 (0)\n-0936CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C05A7 Compression Method    0008 (8) 'Deflated'\n+0C05A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C05AD CRC                   00000000 (0)\n+0C05B1 Compressed Size       00000000 (0)\n+0C05B5 Uncompressed Size     00000000 (0)\n+0C05B9 Filename Length       0026 (38)\n+0C05BB Extra Length          0000 (0)\n+0C05BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x936CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC05BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0936EF PAYLOAD               XX\n+0C05E3 PAYLOAD\n \n-0936F1 DATA DESCRIPTOR       08074B50 (134695760)\n-0936F5 CRC                   00000000 (0)\n-0936F9 Compressed Size       00000002 (2)\n-0936FD Uncompressed Size     00000000 (0)\n+0C08F3 DATA DESCRIPTOR       08074B50 (134695760)\n+0C08F7 CRC                   040E3AFC (68041468)\n+0C08FB Compressed Size       00000310 (784)\n+0C08FF Uncompressed Size     00000783 (1923)\n \n-093701 LOCAL HEADER #649     04034B50 (67324752)\n-093705 Extract Zip Spec      14 (20) '2.0'\n-093706 Extract OS            00 (0) 'MS-DOS'\n-093707 General Purpose Flag  0808 (2056)\n+0C0903 LOCAL HEADER #649     04034B50 (67324752)\n+0C0907 Extract Zip Spec      14 (20) '2.0'\n+0C0908 Extract OS            00 (0) 'MS-DOS'\n+0C0909 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-093709 Compression Method    0008 (8) 'Deflated'\n-09370B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09370F CRC                   00000000 (0)\n-093713 Compressed Size       00000000 (0)\n-093717 Uncompressed Size     00000000 (0)\n-09371B Filename Length       0031 (49)\n-09371D Extra Length          0000 (0)\n-09371F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C090B Compression Method    0008 (8) 'Deflated'\n+0C090D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C0911 CRC                   00000000 (0)\n+0C0915 Compressed Size       00000000 (0)\n+0C0919 Uncompressed Size     00000000 (0)\n+0C091D Filename Length       002D (45)\n+0C091F Extra Length          0000 (0)\n+0C0921 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9371F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC0921: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-093750 PAYLOAD\n+0C094E PAYLOAD\n \n-093AF6 DATA DESCRIPTOR       08074B50 (134695760)\n-093AFA CRC                   65EBC1EB (1709949419)\n-093AFE Compressed Size       000003A6 (934)\n-093B02 Uncompressed Size     00000D0E (3342)\n+0C0C46 DATA DESCRIPTOR       08074B50 (134695760)\n+0C0C4A CRC                   1A6C5333 (443306803)\n+0C0C4E Compressed Size       000002F8 (760)\n+0C0C52 Uncompressed Size     00000849 (2121)\n \n-093B06 LOCAL HEADER #650     04034B50 (67324752)\n-093B0A Extract Zip Spec      14 (20) '2.0'\n-093B0B Extract OS            00 (0) 'MS-DOS'\n-093B0C General Purpose Flag  0808 (2056)\n+0C0C56 LOCAL HEADER #650     04034B50 (67324752)\n+0C0C5A Extract Zip Spec      14 (20) '2.0'\n+0C0C5B Extract OS            00 (0) 'MS-DOS'\n+0C0C5C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-093B0E Compression Method    0008 (8) 'Deflated'\n-093B10 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-093B14 CRC                   00000000 (0)\n-093B18 Compressed Size       00000000 (0)\n-093B1C Uncompressed Size     00000000 (0)\n-093B20 Filename Length       0038 (56)\n-093B22 Extra Length          0000 (0)\n-093B24 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C0C5E Compression Method    0008 (8) 'Deflated'\n+0C0C60 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C0C64 CRC                   00000000 (0)\n+0C0C68 Compressed Size       00000000 (0)\n+0C0C6C Uncompressed Size     00000000 (0)\n+0C0C70 Filename Length       0025 (37)\n+0C0C72 Extra Length          0000 (0)\n+0C0C74 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x93B24: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC0C74: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-093B5C PAYLOAD\n+0C0C99 PAYLOAD\n \n-093E25 DATA DESCRIPTOR       08074B50 (134695760)\n-093E29 CRC                   006A5B46 (6970182)\n-093E2D Compressed Size       000002C9 (713)\n-093E31 Uncompressed Size     000006F8 (1784)\n+0C0F86 DATA DESCRIPTOR       08074B50 (134695760)\n+0C0F8A CRC                   107C6EE6 (276590310)\n+0C0F8E Compressed Size       000002ED (749)\n+0C0F92 Uncompressed Size     0000058B (1419)\n \n-093E35 LOCAL HEADER #651     04034B50 (67324752)\n-093E39 Extract Zip Spec      14 (20) '2.0'\n-093E3A Extract OS            00 (0) 'MS-DOS'\n-093E3B General Purpose Flag  0808 (2056)\n+0C0F96 LOCAL HEADER #651     04034B50 (67324752)\n+0C0F9A Extract Zip Spec      14 (20) '2.0'\n+0C0F9B Extract OS            00 (0) 'MS-DOS'\n+0C0F9C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-093E3D Compression Method    0008 (8) 'Deflated'\n-093E3F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-093E43 CRC                   00000000 (0)\n-093E47 Compressed Size       00000000 (0)\n-093E4B Uncompressed Size     00000000 (0)\n-093E4F Filename Length       0023 (35)\n-093E51 Extra Length          0000 (0)\n-093E53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C0F9E Compression Method    0008 (8) 'Deflated'\n+0C0FA0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C0FA4 CRC                   00000000 (0)\n+0C0FA8 Compressed Size       00000000 (0)\n+0C0FAC Uncompressed Size     00000000 (0)\n+0C0FB0 Filename Length       0024 (36)\n+0C0FB2 Extra Length          0000 (0)\n+0C0FB4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x93E53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC0FB4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-093E76 PAYLOAD               XX\n+0C0FD8 PAYLOAD\n \n-093E78 DATA DESCRIPTOR       08074B50 (134695760)\n-093E7C CRC                   00000000 (0)\n-093E80 Compressed Size       00000002 (2)\n-093E84 Uncompressed Size     00000000 (0)\n+0C1317 DATA DESCRIPTOR       08074B50 (134695760)\n+0C131B CRC                   9EA8C701 (2661861121)\n+0C131F Compressed Size       0000033F (831)\n+0C1323 Uncompressed Size     00000771 (1905)\n \n-093E88 LOCAL HEADER #652     04034B50 (67324752)\n-093E8C Extract Zip Spec      14 (20) '2.0'\n-093E8D Extract OS            00 (0) 'MS-DOS'\n-093E8E General Purpose Flag  0808 (2056)\n+0C1327 LOCAL HEADER #652     04034B50 (67324752)\n+0C132B Extract Zip Spec      14 (20) '2.0'\n+0C132C Extract OS            00 (0) 'MS-DOS'\n+0C132D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-093E90 Compression Method    0008 (8) 'Deflated'\n-093E92 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-093E96 CRC                   00000000 (0)\n-093E9A Compressed Size       00000000 (0)\n-093E9E Uncompressed Size     00000000 (0)\n-093EA2 Filename Length       0031 (49)\n-093EA4 Extra Length          0000 (0)\n-093EA6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C132F Compression Method    0008 (8) 'Deflated'\n+0C1331 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C1335 CRC                   00000000 (0)\n+0C1339 Compressed Size       00000000 (0)\n+0C133D Uncompressed Size     00000000 (0)\n+0C1341 Filename Length       0025 (37)\n+0C1343 Extra Length          0000 (0)\n+0C1345 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x93EA6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC1345: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-093ED7 PAYLOAD\n+0C136A PAYLOAD\n \n-094223 DATA DESCRIPTOR       08074B50 (134695760)\n-094227 CRC                   8FD172CF (2412868303)\n-09422B Compressed Size       0000034C (844)\n-09422F Uncompressed Size     00000D1B (3355)\n+0C1621 DATA DESCRIPTOR       08074B50 (134695760)\n+0C1625 CRC                   2D139396 (756257686)\n+0C1629 Compressed Size       000002B7 (695)\n+0C162D Uncompressed Size     00000584 (1412)\n \n-094233 LOCAL HEADER #653     04034B50 (67324752)\n-094237 Extract Zip Spec      14 (20) '2.0'\n-094238 Extract OS            00 (0) 'MS-DOS'\n-094239 General Purpose Flag  0808 (2056)\n+0C1631 LOCAL HEADER #653     04034B50 (67324752)\n+0C1635 Extract Zip Spec      14 (20) '2.0'\n+0C1636 Extract OS            00 (0) 'MS-DOS'\n+0C1637 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09423B Compression Method    0008 (8) 'Deflated'\n-09423D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-094241 CRC                   00000000 (0)\n-094245 Compressed Size       00000000 (0)\n-094249 Uncompressed Size     00000000 (0)\n-09424D Filename Length       0038 (56)\n-09424F Extra Length          0000 (0)\n-094251 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C1639 Compression Method    0008 (8) 'Deflated'\n+0C163B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C163F CRC                   00000000 (0)\n+0C1643 Compressed Size       00000000 (0)\n+0C1647 Uncompressed Size     00000000 (0)\n+0C164B Filename Length       0028 (40)\n+0C164D Extra Length          0000 (0)\n+0C164F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x94251: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC164F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-094289 PAYLOAD\n+0C1677 PAYLOAD\n \n-0947E5 DATA DESCRIPTOR       08074B50 (134695760)\n-0947E9 CRC                   7ADBDBE0 (2061229024)\n-0947ED Compressed Size       0000055C (1372)\n-0947F1 Uncompressed Size     000012FC (4860)\n+0C1C29 DATA DESCRIPTOR       08074B50 (134695760)\n+0C1C2D CRC                   CEFC9AFA (3472661242)\n+0C1C31 Compressed Size       000005B2 (1458)\n+0C1C35 Uncompressed Size     00000F04 (3844)\n \n-0947F5 LOCAL HEADER #654     04034B50 (67324752)\n-0947F9 Extract Zip Spec      14 (20) '2.0'\n-0947FA Extract OS            00 (0) 'MS-DOS'\n-0947FB General Purpose Flag  0808 (2056)\n+0C1C39 LOCAL HEADER #654     04034B50 (67324752)\n+0C1C3D Extract Zip Spec      14 (20) '2.0'\n+0C1C3E Extract OS            00 (0) 'MS-DOS'\n+0C1C3F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0947FD Compression Method    0008 (8) 'Deflated'\n-0947FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-094803 CRC                   00000000 (0)\n-094807 Compressed Size       00000000 (0)\n-09480B Uncompressed Size     00000000 (0)\n-09480F Filename Length       0025 (37)\n-094811 Extra Length          0000 (0)\n-094813 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C1C41 Compression Method    0008 (8) 'Deflated'\n+0C1C43 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C1C47 CRC                   00000000 (0)\n+0C1C4B Compressed Size       00000000 (0)\n+0C1C4F Uncompressed Size     00000000 (0)\n+0C1C53 Filename Length       0029 (41)\n+0C1C55 Extra Length          0000 (0)\n+0C1C57 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x94813: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC1C57: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-094838 PAYLOAD               XX\n+0C1C80 PAYLOAD\n \n-09483A DATA DESCRIPTOR       08074B50 (134695760)\n-09483E CRC                   00000000 (0)\n-094842 Compressed Size       00000002 (2)\n-094846 Uncompressed Size     00000000 (0)\n+0C1E90 DATA DESCRIPTOR       08074B50 (134695760)\n+0C1E94 CRC                   D7F89917 (3623393559)\n+0C1E98 Compressed Size       00000210 (528)\n+0C1E9C Uncompressed Size     000003AC (940)\n \n-09484A LOCAL HEADER #655     04034B50 (67324752)\n-09484E Extract Zip Spec      14 (20) '2.0'\n-09484F Extract OS            00 (0) 'MS-DOS'\n-094850 General Purpose Flag  0808 (2056)\n+0C1EA0 LOCAL HEADER #655     04034B50 (67324752)\n+0C1EA4 Extract Zip Spec      14 (20) '2.0'\n+0C1EA5 Extract OS            00 (0) 'MS-DOS'\n+0C1EA6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-094852 Compression Method    0008 (8) 'Deflated'\n-094854 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-094858 CRC                   00000000 (0)\n-09485C Compressed Size       00000000 (0)\n-094860 Uncompressed Size     00000000 (0)\n-094864 Filename Length       0035 (53)\n-094866 Extra Length          0000 (0)\n-094868 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C1EA8 Compression Method    0008 (8) 'Deflated'\n+0C1EAA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C1EAE CRC                   00000000 (0)\n+0C1EB2 Compressed Size       00000000 (0)\n+0C1EB6 Uncompressed Size     00000000 (0)\n+0C1EBA Filename Length       0029 (41)\n+0C1EBC Extra Length          0000 (0)\n+0C1EBE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x94868: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC1EBE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09489D PAYLOAD\n+0C1EE7 PAYLOAD\n \n-094C30 DATA DESCRIPTOR       08074B50 (134695760)\n-094C34 CRC                   0237005F (37159007)\n-094C38 Compressed Size       00000393 (915)\n-094C3C Uncompressed Size     00000E61 (3681)\n+0C21F8 DATA DESCRIPTOR       08074B50 (134695760)\n+0C21FC CRC                   4A25E4BC (1243997372)\n+0C2200 Compressed Size       00000311 (785)\n+0C2204 Uncompressed Size     00000621 (1569)\n \n-094C40 LOCAL HEADER #656     04034B50 (67324752)\n-094C44 Extract Zip Spec      14 (20) '2.0'\n-094C45 Extract OS            00 (0) 'MS-DOS'\n-094C46 General Purpose Flag  0808 (2056)\n+0C2208 LOCAL HEADER #656     04034B50 (67324752)\n+0C220C Extract Zip Spec      14 (20) '2.0'\n+0C220D Extract OS            00 (0) 'MS-DOS'\n+0C220E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-094C48 Compression Method    0008 (8) 'Deflated'\n-094C4A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-094C4E CRC                   00000000 (0)\n-094C52 Compressed Size       00000000 (0)\n-094C56 Uncompressed Size     00000000 (0)\n-094C5A Filename Length       003C (60)\n-094C5C Extra Length          0000 (0)\n-094C5E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C2210 Compression Method    0008 (8) 'Deflated'\n+0C2212 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C2216 CRC                   00000000 (0)\n+0C221A Compressed Size       00000000 (0)\n+0C221E Uncompressed Size     00000000 (0)\n+0C2222 Filename Length       0027 (39)\n+0C2224 Extra Length          0000 (0)\n+0C2226 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x94C5E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC2226: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-094C9A PAYLOAD\n+0C224D PAYLOAD\n \n-09511B DATA DESCRIPTOR       08074B50 (134695760)\n-09511F CRC                   CE737695 (3463673493)\n-095123 Compressed Size       00000481 (1153)\n-095127 Uncompressed Size     000010CC (4300)\n+0C2591 DATA DESCRIPTOR       08074B50 (134695760)\n+0C2595 CRC                   D97FD102 (3649032450)\n+0C2599 Compressed Size       00000344 (836)\n+0C259D Uncompressed Size     0000083D (2109)\n \n-09512B LOCAL HEADER #657     04034B50 (67324752)\n-09512F Extract Zip Spec      14 (20) '2.0'\n-095130 Extract OS            00 (0) 'MS-DOS'\n-095131 General Purpose Flag  0808 (2056)\n+0C25A1 LOCAL HEADER #657     04034B50 (67324752)\n+0C25A5 Extract Zip Spec      14 (20) '2.0'\n+0C25A6 Extract OS            00 (0) 'MS-DOS'\n+0C25A7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-095133 Compression Method    0008 (8) 'Deflated'\n-095135 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-095139 CRC                   00000000 (0)\n-09513D Compressed Size       00000000 (0)\n-095141 Uncompressed Size     00000000 (0)\n-095145 Filename Length       0026 (38)\n-095147 Extra Length          0000 (0)\n-095149 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C25A9 Compression Method    0008 (8) 'Deflated'\n+0C25AB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C25AF CRC                   00000000 (0)\n+0C25B3 Compressed Size       00000000 (0)\n+0C25B7 Uncompressed Size     00000000 (0)\n+0C25BB Filename Length       0031 (49)\n+0C25BD Extra Length          0000 (0)\n+0C25BF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x95149: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC25BF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09516F PAYLOAD               XX\n+0C25F0 PAYLOAD\n \n-095171 DATA DESCRIPTOR       08074B50 (134695760)\n-095175 CRC                   00000000 (0)\n-095179 Compressed Size       00000002 (2)\n-09517D Uncompressed Size     00000000 (0)\n+0C28FF DATA DESCRIPTOR       08074B50 (134695760)\n+0C2903 CRC                   6CA638E1 (1822832865)\n+0C2907 Compressed Size       0000030F (783)\n+0C290B Uncompressed Size     00000968 (2408)\n \n-095181 LOCAL HEADER #658     04034B50 (67324752)\n-095185 Extract Zip Spec      14 (20) '2.0'\n-095186 Extract OS            00 (0) 'MS-DOS'\n-095187 General Purpose Flag  0808 (2056)\n+0C290F LOCAL HEADER #658     04034B50 (67324752)\n+0C2913 Extract Zip Spec      14 (20) '2.0'\n+0C2914 Extract OS            00 (0) 'MS-DOS'\n+0C2915 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-095189 Compression Method    0008 (8) 'Deflated'\n-09518B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09518F CRC                   00000000 (0)\n-095193 Compressed Size       00000000 (0)\n-095197 Uncompressed Size     00000000 (0)\n-09519B Filename Length       0037 (55)\n-09519D Extra Length          0000 (0)\n-09519F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C2917 Compression Method    0008 (8) 'Deflated'\n+0C2919 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C291D CRC                   00000000 (0)\n+0C2921 Compressed Size       00000000 (0)\n+0C2925 Uncompressed Size     00000000 (0)\n+0C2929 Filename Length       002B (43)\n+0C292B Extra Length          0000 (0)\n+0C292D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9519F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC292D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0951D6 PAYLOAD\n+0C2958 PAYLOAD\n \n-095519 DATA DESCRIPTOR       08074B50 (134695760)\n-09551D CRC                   719AAFB0 (1905962928)\n-095521 Compressed Size       00000343 (835)\n-095525 Uncompressed Size     00000C98 (3224)\n+0C2C44 DATA DESCRIPTOR       08074B50 (134695760)\n+0C2C48 CRC                   31AD4BD9 (833440729)\n+0C2C4C Compressed Size       000002EC (748)\n+0C2C50 Uncompressed Size     00000635 (1589)\n \n-095529 LOCAL HEADER #659     04034B50 (67324752)\n-09552D Extract Zip Spec      14 (20) '2.0'\n-09552E Extract OS            00 (0) 'MS-DOS'\n-09552F General Purpose Flag  0808 (2056)\n+0C2C54 LOCAL HEADER #659     04034B50 (67324752)\n+0C2C58 Extract Zip Spec      14 (20) '2.0'\n+0C2C59 Extract OS            00 (0) 'MS-DOS'\n+0C2C5A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-095531 Compression Method    0008 (8) 'Deflated'\n-095533 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-095537 CRC                   00000000 (0)\n-09553B Compressed Size       00000000 (0)\n-09553F Uncompressed Size     00000000 (0)\n-095543 Filename Length       003E (62)\n-095545 Extra Length          0000 (0)\n-095547 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C2C5C Compression Method    0008 (8) 'Deflated'\n+0C2C5E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C2C62 CRC                   00000000 (0)\n+0C2C66 Compressed Size       00000000 (0)\n+0C2C6A Uncompressed Size     00000000 (0)\n+0C2C6E Filename Length       0030 (48)\n+0C2C70 Extra Length          0000 (0)\n+0C2C72 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x95547: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC2C72: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-095585 PAYLOAD\n+0C2CA2 PAYLOAD\n \n-0958FA DATA DESCRIPTOR       08074B50 (134695760)\n-0958FE CRC                   B7D93D08 (3084467464)\n-095902 Compressed Size       00000375 (885)\n-095906 Uncompressed Size     00000CED (3309)\n+0C3066 DATA DESCRIPTOR       08074B50 (134695760)\n+0C306A CRC                   8BF38561 (2347992417)\n+0C306E Compressed Size       000003C4 (964)\n+0C3072 Uncompressed Size     00000CE9 (3305)\n \n-09590A LOCAL HEADER #660     04034B50 (67324752)\n-09590E Extract Zip Spec      14 (20) '2.0'\n-09590F Extract OS            00 (0) 'MS-DOS'\n-095910 General Purpose Flag  0808 (2056)\n+0C3076 LOCAL HEADER #660     04034B50 (67324752)\n+0C307A Extract Zip Spec      14 (20) '2.0'\n+0C307B Extract OS            00 (0) 'MS-DOS'\n+0C307C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-095912 Compression Method    0008 (8) 'Deflated'\n-095914 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-095918 CRC                   00000000 (0)\n-09591C Compressed Size       00000000 (0)\n-095920 Uncompressed Size     00000000 (0)\n-095924 Filename Length       0025 (37)\n-095926 Extra Length          0000 (0)\n-095928 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C307E Compression Method    0008 (8) 'Deflated'\n+0C3080 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C3084 CRC                   00000000 (0)\n+0C3088 Compressed Size       00000000 (0)\n+0C308C Uncompressed Size     00000000 (0)\n+0C3090 Filename Length       002D (45)\n+0C3092 Extra Length          0000 (0)\n+0C3094 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x95928: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC3094: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09594D PAYLOAD               XX\n+0C30C1 PAYLOAD\n \n-09594F DATA DESCRIPTOR       08074B50 (134695760)\n-095953 CRC                   00000000 (0)\n-095957 Compressed Size       00000002 (2)\n-09595B Uncompressed Size     00000000 (0)\n+0C340F DATA DESCRIPTOR       08074B50 (134695760)\n+0C3413 CRC                   38EB0C43 (954928195)\n+0C3417 Compressed Size       0000034E (846)\n+0C341B Uncompressed Size     000006E3 (1763)\n \n-09595F LOCAL HEADER #661     04034B50 (67324752)\n-095963 Extract Zip Spec      14 (20) '2.0'\n-095964 Extract OS            00 (0) 'MS-DOS'\n-095965 General Purpose Flag  0808 (2056)\n+0C341F LOCAL HEADER #661     04034B50 (67324752)\n+0C3423 Extract Zip Spec      14 (20) '2.0'\n+0C3424 Extract OS            00 (0) 'MS-DOS'\n+0C3425 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-095967 Compression Method    0008 (8) 'Deflated'\n-095969 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09596D CRC                   00000000 (0)\n-095971 Compressed Size       00000000 (0)\n-095975 Uncompressed Size     00000000 (0)\n-095979 Filename Length       0035 (53)\n-09597B Extra Length          0000 (0)\n-09597D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C3427 Compression Method    0008 (8) 'Deflated'\n+0C3429 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C342D CRC                   00000000 (0)\n+0C3431 Compressed Size       00000000 (0)\n+0C3435 Uncompressed Size     00000000 (0)\n+0C3439 Filename Length       002F (47)\n+0C343B Extra Length          0000 (0)\n+0C343D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9597D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC343D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0959B2 PAYLOAD\n+0C346C PAYLOAD\n \n-095E00 DATA DESCRIPTOR       08074B50 (134695760)\n-095E04 CRC                   FD6565BB (4251280827)\n-095E08 Compressed Size       0000044E (1102)\n-095E0C Uncompressed Size     00001876 (6262)\n+0C37C4 DATA DESCRIPTOR       08074B50 (134695760)\n+0C37C8 CRC                   D0646959 (3496241497)\n+0C37CC Compressed Size       00000358 (856)\n+0C37D0 Uncompressed Size     000007C1 (1985)\n \n-095E10 LOCAL HEADER #662     04034B50 (67324752)\n-095E14 Extract Zip Spec      14 (20) '2.0'\n-095E15 Extract OS            00 (0) 'MS-DOS'\n-095E16 General Purpose Flag  0808 (2056)\n+0C37D4 LOCAL HEADER #662     04034B50 (67324752)\n+0C37D8 Extract Zip Spec      14 (20) '2.0'\n+0C37D9 Extract OS            00 (0) 'MS-DOS'\n+0C37DA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-095E18 Compression Method    0008 (8) 'Deflated'\n-095E1A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-095E1E CRC                   00000000 (0)\n-095E22 Compressed Size       00000000 (0)\n-095E26 Uncompressed Size     00000000 (0)\n-095E2A Filename Length       003C (60)\n-095E2C Extra Length          0000 (0)\n-095E2E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C37DC Compression Method    0008 (8) 'Deflated'\n+0C37DE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C37E2 CRC                   00000000 (0)\n+0C37E6 Compressed Size       00000000 (0)\n+0C37EA Uncompressed Size     00000000 (0)\n+0C37EE Filename Length       002A (42)\n+0C37F0 Extra Length          0000 (0)\n+0C37F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x95E2E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC37F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-095E6A PAYLOAD\n+0C381C PAYLOAD\n \n-096130 DATA DESCRIPTOR       08074B50 (134695760)\n-096134 CRC                   2D853131 (763703601)\n-096138 Compressed Size       000002C6 (710)\n-09613C Uncompressed Size     000006EF (1775)\n+0C3B77 DATA DESCRIPTOR       08074B50 (134695760)\n+0C3B7B CRC                   4475FC12 (1148582930)\n+0C3B7F Compressed Size       0000035B (859)\n+0C3B83 Uncompressed Size     0000084E (2126)\n \n-096140 LOCAL HEADER #663     04034B50 (67324752)\n-096144 Extract Zip Spec      14 (20) '2.0'\n-096145 Extract OS            00 (0) 'MS-DOS'\n-096146 General Purpose Flag  0808 (2056)\n+0C3B87 LOCAL HEADER #663     04034B50 (67324752)\n+0C3B8B Extract Zip Spec      14 (20) '2.0'\n+0C3B8C Extract OS            00 (0) 'MS-DOS'\n+0C3B8D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-096148 Compression Method    0008 (8) 'Deflated'\n-09614A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09614E CRC                   00000000 (0)\n-096152 Compressed Size       00000000 (0)\n-096156 Uncompressed Size     00000000 (0)\n-09615A Filename Length       0027 (39)\n-09615C Extra Length          0000 (0)\n-09615E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C3B8F Compression Method    0008 (8) 'Deflated'\n+0C3B91 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C3B95 CRC                   00000000 (0)\n+0C3B99 Compressed Size       00000000 (0)\n+0C3B9D Uncompressed Size     00000000 (0)\n+0C3BA1 Filename Length       002B (43)\n+0C3BA3 Extra Length          0000 (0)\n+0C3BA5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9615E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC3BA5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-096185 PAYLOAD               XX\n+0C3BD0 PAYLOAD\n \n-096187 DATA DESCRIPTOR       08074B50 (134695760)\n-09618B CRC                   00000000 (0)\n-09618F Compressed Size       00000002 (2)\n-096193 Uncompressed Size     00000000 (0)\n+0C3F88 DATA DESCRIPTOR       08074B50 (134695760)\n+0C3F8C CRC                   65BE8BD8 (1706986456)\n+0C3F90 Compressed Size       000003B8 (952)\n+0C3F94 Uncompressed Size     00000C19 (3097)\n \n-096197 LOCAL HEADER #664     04034B50 (67324752)\n-09619B Extract Zip Spec      14 (20) '2.0'\n-09619C Extract OS            00 (0) 'MS-DOS'\n-09619D General Purpose Flag  0808 (2056)\n+0C3F98 LOCAL HEADER #664     04034B50 (67324752)\n+0C3F9C Extract Zip Spec      14 (20) '2.0'\n+0C3F9D Extract OS            00 (0) 'MS-DOS'\n+0C3F9E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09619F Compression Method    0008 (8) 'Deflated'\n-0961A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0961A5 CRC                   00000000 (0)\n-0961A9 Compressed Size       00000000 (0)\n-0961AD Uncompressed Size     00000000 (0)\n-0961B1 Filename Length       003A (58)\n-0961B3 Extra Length          0000 (0)\n-0961B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C3FA0 Compression Method    0008 (8) 'Deflated'\n+0C3FA2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C3FA6 CRC                   00000000 (0)\n+0C3FAA Compressed Size       00000000 (0)\n+0C3FAE Uncompressed Size     00000000 (0)\n+0C3FB2 Filename Length       0021 (33)\n+0C3FB4 Extra Length          0000 (0)\n+0C3FB6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x961B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC3FB6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0961EF PAYLOAD\n+0C3FD7 PAYLOAD               XX\n \n-0965A7 DATA DESCRIPTOR       08074B50 (134695760)\n-0965AB CRC                   01B8CE5D (28888669)\n-0965AF Compressed Size       000003B8 (952)\n-0965B3 Uncompressed Size     000013B5 (5045)\n+0C3FD9 DATA DESCRIPTOR       08074B50 (134695760)\n+0C3FDD CRC                   00000000 (0)\n+0C3FE1 Compressed Size       00000002 (2)\n+0C3FE5 Uncompressed Size     00000000 (0)\n \n-0965B7 LOCAL HEADER #665     04034B50 (67324752)\n-0965BB Extract Zip Spec      14 (20) '2.0'\n-0965BC Extract OS            00 (0) 'MS-DOS'\n-0965BD General Purpose Flag  0808 (2056)\n+0C3FE9 LOCAL HEADER #665     04034B50 (67324752)\n+0C3FED Extract Zip Spec      14 (20) '2.0'\n+0C3FEE Extract OS            00 (0) 'MS-DOS'\n+0C3FEF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0965BF Compression Method    0008 (8) 'Deflated'\n-0965C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0965C5 CRC                   00000000 (0)\n-0965C9 Compressed Size       00000000 (0)\n-0965CD Uncompressed Size     00000000 (0)\n-0965D1 Filename Length       001F (31)\n-0965D3 Extra Length          0000 (0)\n-0965D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C3FF1 Compression Method    0008 (8) 'Deflated'\n+0C3FF3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C3FF7 CRC                   00000000 (0)\n+0C3FFB Compressed Size       00000000 (0)\n+0C3FFF Uncompressed Size     00000000 (0)\n+0C4003 Filename Length       003B (59)\n+0C4005 Extra Length          0000 (0)\n+0C4007 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x965D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC4007: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0965F4 PAYLOAD               XX\n+0C4042 PAYLOAD\n \n-0965F6 DATA DESCRIPTOR       08074B50 (134695760)\n-0965FA CRC                   00000000 (0)\n-0965FE Compressed Size       00000002 (2)\n-096602 Uncompressed Size     00000000 (0)\n+0C4710 DATA DESCRIPTOR       08074B50 (134695760)\n+0C4714 CRC                   33E8796E (870873454)\n+0C4718 Compressed Size       000006CE (1742)\n+0C471C Uncompressed Size     00002559 (9561)\n \n-096606 LOCAL HEADER #666     04034B50 (67324752)\n-09660A Extract Zip Spec      14 (20) '2.0'\n-09660B Extract OS            00 (0) 'MS-DOS'\n-09660C General Purpose Flag  0808 (2056)\n+0C4720 LOCAL HEADER #666     04034B50 (67324752)\n+0C4724 Extract Zip Spec      14 (20) '2.0'\n+0C4725 Extract OS            00 (0) 'MS-DOS'\n+0C4726 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09660E Compression Method    0008 (8) 'Deflated'\n-096610 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-096614 CRC                   00000000 (0)\n-096618 Compressed Size       00000000 (0)\n-09661C Uncompressed Size     00000000 (0)\n-096620 Filename Length       002A (42)\n-096622 Extra Length          0000 (0)\n-096624 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C4728 Compression Method    0008 (8) 'Deflated'\n+0C472A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C472E CRC                   00000000 (0)\n+0C4732 Compressed Size       00000000 (0)\n+0C4736 Uncompressed Size     00000000 (0)\n+0C473A Filename Length       0043 (67)\n+0C473C Extra Length          0000 (0)\n+0C473E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x96624: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC473E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09664E PAYLOAD\n+0C4781 PAYLOAD\n \n-096924 DATA DESCRIPTOR       08074B50 (134695760)\n-096928 CRC                   EE49CD50 (3997814096)\n-09692C Compressed Size       000002D6 (726)\n-096930 Uncompressed Size     0000075D (1885)\n+0C4E2C DATA DESCRIPTOR       08074B50 (134695760)\n+0C4E30 CRC                   AD83DA8F (2911099535)\n+0C4E34 Compressed Size       000006AB (1707)\n+0C4E38 Uncompressed Size     00001EB2 (7858)\n \n-096934 LOCAL HEADER #667     04034B50 (67324752)\n-096938 Extract Zip Spec      14 (20) '2.0'\n-096939 Extract OS            00 (0) 'MS-DOS'\n-09693A General Purpose Flag  0808 (2056)\n+0C4E3C LOCAL HEADER #667     04034B50 (67324752)\n+0C4E40 Extract Zip Spec      14 (20) '2.0'\n+0C4E41 Extract OS            00 (0) 'MS-DOS'\n+0C4E42 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09693C Compression Method    0008 (8) 'Deflated'\n-09693E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-096942 CRC                   00000000 (0)\n-096946 Compressed Size       00000000 (0)\n-09694A Uncompressed Size     00000000 (0)\n-09694E Filename Length       0031 (49)\n-096950 Extra Length          0000 (0)\n-096952 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C4E44 Compression Method    0008 (8) 'Deflated'\n+0C4E46 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C4E4A CRC                   00000000 (0)\n+0C4E4E Compressed Size       00000000 (0)\n+0C4E52 Uncompressed Size     00000000 (0)\n+0C4E56 Filename Length       0033 (51)\n+0C4E58 Extra Length          0000 (0)\n+0C4E5A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x96952: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC4E5A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-096983 PAYLOAD\n+0C4E8D PAYLOAD\n \n-096BC2 DATA DESCRIPTOR       08074B50 (134695760)\n-096BC6 CRC                   4C723E93 (1282555539)\n-096BCA Compressed Size       0000023F (575)\n-096BCE Uncompressed Size     00000432 (1074)\n+0C681B DATA DESCRIPTOR       08074B50 (134695760)\n+0C681F CRC                   14F45D67 (351559015)\n+0C6823 Compressed Size       0000198E (6542)\n+0C6827 Uncompressed Size     0000AE27 (44583)\n \n-096BD2 LOCAL HEADER #668     04034B50 (67324752)\n-096BD6 Extract Zip Spec      14 (20) '2.0'\n-096BD7 Extract OS            00 (0) 'MS-DOS'\n-096BD8 General Purpose Flag  0808 (2056)\n+0C682B LOCAL HEADER #668     04034B50 (67324752)\n+0C682F Extract Zip Spec      14 (20) '2.0'\n+0C6830 Extract OS            00 (0) 'MS-DOS'\n+0C6831 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-096BDA Compression Method    0008 (8) 'Deflated'\n-096BDC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-096BE0 CRC                   00000000 (0)\n-096BE4 Compressed Size       00000000 (0)\n-096BE8 Uncompressed Size     00000000 (0)\n-096BEC Filename Length       0027 (39)\n-096BEE Extra Length          0000 (0)\n-096BF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C6833 Compression Method    0008 (8) 'Deflated'\n+0C6835 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C6839 CRC                   00000000 (0)\n+0C683D Compressed Size       00000000 (0)\n+0C6841 Uncompressed Size     00000000 (0)\n+0C6845 Filename Length       003A (58)\n+0C6847 Extra Length          0000 (0)\n+0C6849 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x96BF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC6849: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-096C17 PAYLOAD               XX\n+0C6883 PAYLOAD\n \n-096C19 DATA DESCRIPTOR       08074B50 (134695760)\n-096C1D CRC                   00000000 (0)\n-096C21 Compressed Size       00000002 (2)\n-096C25 Uncompressed Size     00000000 (0)\n+0C6AD2 DATA DESCRIPTOR       08074B50 (134695760)\n+0C6AD6 CRC                   6A53E0FE (1783881982)\n+0C6ADA Compressed Size       0000024F (591)\n+0C6ADE Uncompressed Size     00000456 (1110)\n \n-096C29 LOCAL HEADER #669     04034B50 (67324752)\n-096C2D Extract Zip Spec      14 (20) '2.0'\n-096C2E Extract OS            00 (0) 'MS-DOS'\n-096C2F General Purpose Flag  0808 (2056)\n+0C6AE2 LOCAL HEADER #669     04034B50 (67324752)\n+0C6AE6 Extract Zip Spec      14 (20) '2.0'\n+0C6AE7 Extract OS            00 (0) 'MS-DOS'\n+0C6AE8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-096C31 Compression Method    0008 (8) 'Deflated'\n-096C33 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-096C37 CRC                   00000000 (0)\n-096C3B Compressed Size       00000000 (0)\n-096C3F Uncompressed Size     00000000 (0)\n-096C43 Filename Length       003D (61)\n-096C45 Extra Length          0000 (0)\n-096C47 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C6AEA Compression Method    0008 (8) 'Deflated'\n+0C6AEC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C6AF0 CRC                   00000000 (0)\n+0C6AF4 Compressed Size       00000000 (0)\n+0C6AF8 Uncompressed Size     00000000 (0)\n+0C6AFC Filename Length       003E (62)\n+0C6AFE Extra Length          0000 (0)\n+0C6B00 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x96C47: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC6B00: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-096C84 PAYLOAD\n+0C6B3E PAYLOAD\n \n-09702D DATA DESCRIPTOR       08074B50 (134695760)\n-097031 CRC                   CD3068DB (3442501851)\n-097035 Compressed Size       000003A9 (937)\n-097039 Uncompressed Size     000008A7 (2215)\n+0C6F67 DATA DESCRIPTOR       08074B50 (134695760)\n+0C6F6B CRC                   4997E6D6 (1234691798)\n+0C6F6F Compressed Size       00000429 (1065)\n+0C6F73 Uncompressed Size     00000C53 (3155)\n \n-09703D LOCAL HEADER #670     04034B50 (67324752)\n-097041 Extract Zip Spec      14 (20) '2.0'\n-097042 Extract OS            00 (0) 'MS-DOS'\n-097043 General Purpose Flag  0808 (2056)\n+0C6F77 LOCAL HEADER #670     04034B50 (67324752)\n+0C6F7B Extract Zip Spec      14 (20) '2.0'\n+0C6F7C Extract OS            00 (0) 'MS-DOS'\n+0C6F7D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-097045 Compression Method    0008 (8) 'Deflated'\n-097047 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09704B CRC                   00000000 (0)\n-09704F Compressed Size       00000000 (0)\n-097053 Uncompressed Size     00000000 (0)\n-097057 Filename Length       003F (63)\n-097059 Extra Length          0000 (0)\n-09705B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C6F7F Compression Method    0008 (8) 'Deflated'\n+0C6F81 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C6F85 CRC                   00000000 (0)\n+0C6F89 Compressed Size       00000000 (0)\n+0C6F8D Uncompressed Size     00000000 (0)\n+0C6F91 Filename Length       003F (63)\n+0C6F93 Extra Length          0000 (0)\n+0C6F95 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9705B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC6F95: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09709A PAYLOAD\n+0C6FD4 PAYLOAD\n \n-0973C0 DATA DESCRIPTOR       08074B50 (134695760)\n-0973C4 CRC                   E601D6EE (3858880238)\n-0973C8 Compressed Size       00000326 (806)\n-0973CC Uncompressed Size     00000701 (1793)\n+0C72DB DATA DESCRIPTOR       08074B50 (134695760)\n+0C72DF CRC                   996F8C6F (2574224495)\n+0C72E3 Compressed Size       00000307 (775)\n+0C72E7 Uncompressed Size     00000765 (1893)\n \n-0973D0 LOCAL HEADER #671     04034B50 (67324752)\n-0973D4 Extract Zip Spec      14 (20) '2.0'\n-0973D5 Extract OS            00 (0) 'MS-DOS'\n-0973D6 General Purpose Flag  0808 (2056)\n+0C72EB LOCAL HEADER #671     04034B50 (67324752)\n+0C72EF Extract Zip Spec      14 (20) '2.0'\n+0C72F0 Extract OS            00 (0) 'MS-DOS'\n+0C72F1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0973D8 Compression Method    0008 (8) 'Deflated'\n-0973DA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0973DE CRC                   00000000 (0)\n-0973E2 Compressed Size       00000000 (0)\n-0973E6 Uncompressed Size     00000000 (0)\n-0973EA Filename Length       0037 (55)\n-0973EC Extra Length          0000 (0)\n-0973EE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C72F3 Compression Method    0008 (8) 'Deflated'\n+0C72F5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C72F9 CRC                   00000000 (0)\n+0C72FD Compressed Size       00000000 (0)\n+0C7301 Uncompressed Size     00000000 (0)\n+0C7305 Filename Length       0034 (52)\n+0C7307 Extra Length          0000 (0)\n+0C7309 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x973EE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC7309: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-097425 PAYLOAD\n+0C733D PAYLOAD\n \n-097756 DATA DESCRIPTOR       08074B50 (134695760)\n-09775A CRC                   577B6C79 (1467706489)\n-09775E Compressed Size       00000331 (817)\n-097762 Uncompressed Size     000007D4 (2004)\n+0C7874 DATA DESCRIPTOR       08074B50 (134695760)\n+0C7878 CRC                   C2B309D7 (3266513367)\n+0C787C Compressed Size       00000537 (1335)\n+0C7880 Uncompressed Size     0000133E (4926)\n \n-097766 LOCAL HEADER #672     04034B50 (67324752)\n-09776A Extract Zip Spec      14 (20) '2.0'\n-09776B Extract OS            00 (0) 'MS-DOS'\n-09776C General Purpose Flag  0808 (2056)\n+0C7884 LOCAL HEADER #672     04034B50 (67324752)\n+0C7888 Extract Zip Spec      14 (20) '2.0'\n+0C7889 Extract OS            00 (0) 'MS-DOS'\n+0C788A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09776E Compression Method    0008 (8) 'Deflated'\n-097770 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-097774 CRC                   00000000 (0)\n-097778 Compressed Size       00000000 (0)\n-09777C Uncompressed Size     00000000 (0)\n-097780 Filename Length       001E (30)\n-097782 Extra Length          0000 (0)\n-097784 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C788C Compression Method    0008 (8) 'Deflated'\n+0C788E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C7892 CRC                   00000000 (0)\n+0C7896 Compressed Size       00000000 (0)\n+0C789A Uncompressed Size     00000000 (0)\n+0C789E Filename Length       0040 (64)\n+0C78A0 Extra Length          0000 (0)\n+0C78A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x97784: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC78A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0977A2 PAYLOAD               XX\n+0C78E2 PAYLOAD\n \n-0977A4 DATA DESCRIPTOR       08074B50 (134695760)\n-0977A8 CRC                   00000000 (0)\n-0977AC Compressed Size       00000002 (2)\n-0977B0 Uncompressed Size     00000000 (0)\n+0C7CA2 DATA DESCRIPTOR       08074B50 (134695760)\n+0C7CA6 CRC                   9D245ED3 (2636406483)\n+0C7CAA Compressed Size       000003C0 (960)\n+0C7CAE Uncompressed Size     00000A45 (2629)\n \n-0977B4 LOCAL HEADER #673     04034B50 (67324752)\n-0977B8 Extract Zip Spec      14 (20) '2.0'\n-0977B9 Extract OS            00 (0) 'MS-DOS'\n-0977BA General Purpose Flag  0808 (2056)\n+0C7CB2 LOCAL HEADER #673     04034B50 (67324752)\n+0C7CB6 Extract Zip Spec      14 (20) '2.0'\n+0C7CB7 Extract OS            00 (0) 'MS-DOS'\n+0C7CB8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0977BC Compression Method    0008 (8) 'Deflated'\n-0977BE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0977C2 CRC                   00000000 (0)\n-0977C6 Compressed Size       00000000 (0)\n-0977CA Uncompressed Size     00000000 (0)\n-0977CE Filename Length       002C (44)\n-0977D0 Extra Length          0000 (0)\n-0977D2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C7CBA Compression Method    0008 (8) 'Deflated'\n+0C7CBC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C7CC0 CRC                   00000000 (0)\n+0C7CC4 Compressed Size       00000000 (0)\n+0C7CC8 Uncompressed Size     00000000 (0)\n+0C7CCC Filename Length       003A (58)\n+0C7CCE Extra Length          0000 (0)\n+0C7CD0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x977D2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC7CD0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0977FE PAYLOAD\n+0C7D0A PAYLOAD\n \n-097A85 DATA DESCRIPTOR       08074B50 (134695760)\n-097A89 CRC                   BF5F9C1E (3210714142)\n-097A8D Compressed Size       00000287 (647)\n-097A91 Uncompressed Size     00000500 (1280)\n+0C825B DATA DESCRIPTOR       08074B50 (134695760)\n+0C825F CRC                   5ED5B140 (1591062848)\n+0C8263 Compressed Size       00000551 (1361)\n+0C8267 Uncompressed Size     000015E8 (5608)\n \n-097A95 LOCAL HEADER #674     04034B50 (67324752)\n-097A99 Extract Zip Spec      14 (20) '2.0'\n-097A9A Extract OS            00 (0) 'MS-DOS'\n-097A9B General Purpose Flag  0808 (2056)\n+0C826B LOCAL HEADER #674     04034B50 (67324752)\n+0C826F Extract Zip Spec      14 (20) '2.0'\n+0C8270 Extract OS            00 (0) 'MS-DOS'\n+0C8271 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-097A9D Compression Method    0008 (8) 'Deflated'\n-097A9F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-097AA3 CRC                   00000000 (0)\n-097AA7 Compressed Size       00000000 (0)\n-097AAB Uncompressed Size     00000000 (0)\n-097AAF Filename Length       0026 (38)\n-097AB1 Extra Length          0000 (0)\n-097AB3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C8273 Compression Method    0008 (8) 'Deflated'\n+0C8275 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C8279 CRC                   00000000 (0)\n+0C827D Compressed Size       00000000 (0)\n+0C8281 Uncompressed Size     00000000 (0)\n+0C8285 Filename Length       0037 (55)\n+0C8287 Extra Length          0000 (0)\n+0C8289 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x97AB3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC8289: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-097AD9 PAYLOAD               XX\n+0C82C0 PAYLOAD\n \n-097ADB DATA DESCRIPTOR       08074B50 (134695760)\n-097ADF CRC                   00000000 (0)\n-097AE3 Compressed Size       00000002 (2)\n-097AE7 Uncompressed Size     00000000 (0)\n+0C891F DATA DESCRIPTOR       08074B50 (134695760)\n+0C8923 CRC                   CC038CDE (3422784734)\n+0C8927 Compressed Size       0000065F (1631)\n+0C892B Uncompressed Size     000019AF (6575)\n \n-097AEB LOCAL HEADER #675     04034B50 (67324752)\n-097AEF Extract Zip Spec      14 (20) '2.0'\n-097AF0 Extract OS            00 (0) 'MS-DOS'\n-097AF1 General Purpose Flag  0808 (2056)\n+0C892F LOCAL HEADER #675     04034B50 (67324752)\n+0C8933 Extract Zip Spec      14 (20) '2.0'\n+0C8934 Extract OS            00 (0) 'MS-DOS'\n+0C8935 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-097AF3 Compression Method    0008 (8) 'Deflated'\n-097AF5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-097AF9 CRC                   00000000 (0)\n-097AFD Compressed Size       00000000 (0)\n-097B01 Uncompressed Size     00000000 (0)\n-097B05 Filename Length       003A (58)\n-097B07 Extra Length          0000 (0)\n-097B09 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C8937 Compression Method    0008 (8) 'Deflated'\n+0C8939 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C893D CRC                   00000000 (0)\n+0C8941 Compressed Size       00000000 (0)\n+0C8945 Uncompressed Size     00000000 (0)\n+0C8949 Filename Length       003E (62)\n+0C894B Extra Length          0000 (0)\n+0C894D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x97B09: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC894D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-097B43 PAYLOAD\n+0C898B PAYLOAD\n \n-097E92 DATA DESCRIPTOR       08074B50 (134695760)\n-097E96 CRC                   5E930431 (1586693169)\n-097E9A Compressed Size       0000034F (847)\n-097E9E Uncompressed Size     000008C7 (2247)\n+0C8C9F DATA DESCRIPTOR       08074B50 (134695760)\n+0C8CA3 CRC                   80349D10 (2150931728)\n+0C8CA7 Compressed Size       00000314 (788)\n+0C8CAB Uncompressed Size     00000779 (1913)\n \n-097EA2 LOCAL HEADER #676     04034B50 (67324752)\n-097EA6 Extract Zip Spec      14 (20) '2.0'\n-097EA7 Extract OS            00 (0) 'MS-DOS'\n-097EA8 General Purpose Flag  0808 (2056)\n+0C8CAF LOCAL HEADER #676     04034B50 (67324752)\n+0C8CB3 Extract Zip Spec      14 (20) '2.0'\n+0C8CB4 Extract OS            00 (0) 'MS-DOS'\n+0C8CB5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-097EAA Compression Method    0008 (8) 'Deflated'\n-097EAC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-097EB0 CRC                   00000000 (0)\n-097EB4 Compressed Size       00000000 (0)\n-097EB8 Uncompressed Size     00000000 (0)\n-097EBC Filename Length       0024 (36)\n-097EBE Extra Length          0000 (0)\n-097EC0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C8CB7 Compression Method    0008 (8) 'Deflated'\n+0C8CB9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C8CBD CRC                   00000000 (0)\n+0C8CC1 Compressed Size       00000000 (0)\n+0C8CC5 Uncompressed Size     00000000 (0)\n+0C8CC9 Filename Length       0023 (35)\n+0C8CCB Extra Length          0000 (0)\n+0C8CCD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x97EC0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC8CCD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-097EE4 PAYLOAD               XX\n+0C8CF0 PAYLOAD               XX\n \n-097EE6 DATA DESCRIPTOR       08074B50 (134695760)\n-097EEA CRC                   00000000 (0)\n-097EEE Compressed Size       00000002 (2)\n-097EF2 Uncompressed Size     00000000 (0)\n+0C8CF2 DATA DESCRIPTOR       08074B50 (134695760)\n+0C8CF6 CRC                   00000000 (0)\n+0C8CFA Compressed Size       00000002 (2)\n+0C8CFE Uncompressed Size     00000000 (0)\n \n-097EF6 LOCAL HEADER #677     04034B50 (67324752)\n-097EFA Extract Zip Spec      14 (20) '2.0'\n-097EFB Extract OS            00 (0) 'MS-DOS'\n-097EFC General Purpose Flag  0808 (2056)\n+0C8D02 LOCAL HEADER #677     04034B50 (67324752)\n+0C8D06 Extract Zip Spec      14 (20) '2.0'\n+0C8D07 Extract OS            00 (0) 'MS-DOS'\n+0C8D08 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-097EFE Compression Method    0008 (8) 'Deflated'\n-097F00 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-097F04 CRC                   00000000 (0)\n-097F08 Compressed Size       00000000 (0)\n-097F0C Uncompressed Size     00000000 (0)\n-097F10 Filename Length       0039 (57)\n-097F12 Extra Length          0000 (0)\n-097F14 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C8D0A Compression Method    0008 (8) 'Deflated'\n+0C8D0C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C8D10 CRC                   00000000 (0)\n+0C8D14 Compressed Size       00000000 (0)\n+0C8D18 Uncompressed Size     00000000 (0)\n+0C8D1C Filename Length       0037 (55)\n+0C8D1E Extra Length          0000 (0)\n+0C8D20 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x97F14: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC8D20: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-097F4D PAYLOAD\n+0C8D57 PAYLOAD\n \n-0982A5 DATA DESCRIPTOR       08074B50 (134695760)\n-0982A9 CRC                   54C421FF (1422139903)\n-0982AD Compressed Size       00000358 (856)\n-0982B1 Uncompressed Size     00000739 (1849)\n+0C9089 DATA DESCRIPTOR       08074B50 (134695760)\n+0C908D CRC                   D599DEAA (3583631018)\n+0C9091 Compressed Size       00000332 (818)\n+0C9095 Uncompressed Size     000009A4 (2468)\n \n-0982B5 LOCAL HEADER #678     04034B50 (67324752)\n-0982B9 Extract Zip Spec      14 (20) '2.0'\n-0982BA Extract OS            00 (0) 'MS-DOS'\n-0982BB General Purpose Flag  0808 (2056)\n+0C9099 LOCAL HEADER #678     04034B50 (67324752)\n+0C909D Extract Zip Spec      14 (20) '2.0'\n+0C909E Extract OS            00 (0) 'MS-DOS'\n+0C909F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0982BD Compression Method    0008 (8) 'Deflated'\n-0982BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0982C3 CRC                   00000000 (0)\n-0982C7 Compressed Size       00000000 (0)\n-0982CB Uncompressed Size     00000000 (0)\n-0982CF Filename Length       0037 (55)\n-0982D1 Extra Length          0000 (0)\n-0982D3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C90A1 Compression Method    0008 (8) 'Deflated'\n+0C90A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C90A7 CRC                   00000000 (0)\n+0C90AB Compressed Size       00000000 (0)\n+0C90AF Uncompressed Size     00000000 (0)\n+0C90B3 Filename Length       0036 (54)\n+0C90B5 Extra Length          0000 (0)\n+0C90B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x982D3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC90B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09830A PAYLOAD\n+0C90ED PAYLOAD\n \n-09863A DATA DESCRIPTOR       08074B50 (134695760)\n-09863E CRC                   DFEE0135 (3756917045)\n-098642 Compressed Size       00000330 (816)\n-098646 Uncompressed Size     0000098D (2445)\n+0C9328 DATA DESCRIPTOR       08074B50 (134695760)\n+0C932C CRC                   E165CDFB (3781545467)\n+0C9330 Compressed Size       0000023B (571)\n+0C9334 Uncompressed Size     0000041A (1050)\n \n-09864A LOCAL HEADER #679     04034B50 (67324752)\n-09864E Extract Zip Spec      14 (20) '2.0'\n-09864F Extract OS            00 (0) 'MS-DOS'\n-098650 General Purpose Flag  0808 (2056)\n+0C9338 LOCAL HEADER #679     04034B50 (67324752)\n+0C933C Extract Zip Spec      14 (20) '2.0'\n+0C933D Extract OS            00 (0) 'MS-DOS'\n+0C933E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-098652 Compression Method    0008 (8) 'Deflated'\n-098654 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-098658 CRC                   00000000 (0)\n-09865C Compressed Size       00000000 (0)\n-098660 Uncompressed Size     00000000 (0)\n-098664 Filename Length       003C (60)\n-098666 Extra Length          0000 (0)\n-098668 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C9340 Compression Method    0008 (8) 'Deflated'\n+0C9342 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C9346 CRC                   00000000 (0)\n+0C934A Compressed Size       00000000 (0)\n+0C934E Uncompressed Size     00000000 (0)\n+0C9352 Filename Length       0037 (55)\n+0C9354 Extra Length          0000 (0)\n+0C9356 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x98668: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC9356: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0986A4 PAYLOAD\n+0C938D PAYLOAD\n \n-098DC6 DATA DESCRIPTOR       08074B50 (134695760)\n-098DCA CRC                   F7472DA9 (4148637097)\n-098DCE Compressed Size       00000722 (1826)\n-098DD2 Uncompressed Size     00001AF8 (6904)\n+0C964F DATA DESCRIPTOR       08074B50 (134695760)\n+0C9653 CRC                   72699C54 (1919523924)\n+0C9657 Compressed Size       000002C2 (706)\n+0C965B Uncompressed Size     000005B9 (1465)\n \n-098DD6 LOCAL HEADER #680     04034B50 (67324752)\n-098DDA Extract Zip Spec      14 (20) '2.0'\n-098DDB Extract OS            00 (0) 'MS-DOS'\n-098DDC General Purpose Flag  0808 (2056)\n+0C965F LOCAL HEADER #680     04034B50 (67324752)\n+0C9663 Extract Zip Spec      14 (20) '2.0'\n+0C9664 Extract OS            00 (0) 'MS-DOS'\n+0C9665 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-098DDE Compression Method    0008 (8) 'Deflated'\n-098DE0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-098DE4 CRC                   00000000 (0)\n-098DE8 Compressed Size       00000000 (0)\n-098DEC Uncompressed Size     00000000 (0)\n-098DF0 Filename Length       003F (63)\n-098DF2 Extra Length          0000 (0)\n-098DF4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C9667 Compression Method    0008 (8) 'Deflated'\n+0C9669 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C966D CRC                   00000000 (0)\n+0C9671 Compressed Size       00000000 (0)\n+0C9675 Uncompressed Size     00000000 (0)\n+0C9679 Filename Length       0036 (54)\n+0C967B Extra Length          0000 (0)\n+0C967D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x98DF4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC967D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-098E33 PAYLOAD\n+0C96B3 PAYLOAD\n \n-099446 DATA DESCRIPTOR       08074B50 (134695760)\n-09944A CRC                   17B25B54 (397564756)\n-09944E Compressed Size       00000613 (1555)\n-099452 Uncompressed Size     00001558 (5464)\n+0C9957 DATA DESCRIPTOR       08074B50 (134695760)\n+0C995B CRC                   330FACB0 (856665264)\n+0C995F Compressed Size       000002A4 (676)\n+0C9963 Uncompressed Size     00000588 (1416)\n \n-099456 LOCAL HEADER #681     04034B50 (67324752)\n-09945A Extract Zip Spec      14 (20) '2.0'\n-09945B Extract OS            00 (0) 'MS-DOS'\n-09945C General Purpose Flag  0808 (2056)\n+0C9967 LOCAL HEADER #681     04034B50 (67324752)\n+0C996B Extract Zip Spec      14 (20) '2.0'\n+0C996C Extract OS            00 (0) 'MS-DOS'\n+0C996D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09945E Compression Method    0008 (8) 'Deflated'\n-099460 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-099464 CRC                   00000000 (0)\n-099468 Compressed Size       00000000 (0)\n-09946C Uncompressed Size     00000000 (0)\n-099470 Filename Length       0043 (67)\n-099472 Extra Length          0000 (0)\n-099474 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C996F Compression Method    0008 (8) 'Deflated'\n+0C9971 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C9975 CRC                   00000000 (0)\n+0C9979 Compressed Size       00000000 (0)\n+0C997D Uncompressed Size     00000000 (0)\n+0C9981 Filename Length       0031 (49)\n+0C9983 Extra Length          0000 (0)\n+0C9985 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x99474: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC9985: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0994B7 PAYLOAD\n+0C99B6 PAYLOAD\n \n-0997A5 DATA DESCRIPTOR       08074B50 (134695760)\n-0997A9 CRC                   9C1B711A (2619044122)\n-0997AD Compressed Size       000002EE (750)\n-0997B1 Uncompressed Size     0000065E (1630)\n+0C9CF4 DATA DESCRIPTOR       08074B50 (134695760)\n+0C9CF8 CRC                   D85DA328 (3630015272)\n+0C9CFC Compressed Size       0000033E (830)\n+0C9D00 Uncompressed Size     000007B2 (1970)\n \n-0997B5 LOCAL HEADER #682     04034B50 (67324752)\n-0997B9 Extract Zip Spec      14 (20) '2.0'\n-0997BA Extract OS            00 (0) 'MS-DOS'\n-0997BB General Purpose Flag  0808 (2056)\n+0C9D04 LOCAL HEADER #682     04034B50 (67324752)\n+0C9D08 Extract Zip Spec      14 (20) '2.0'\n+0C9D09 Extract OS            00 (0) 'MS-DOS'\n+0C9D0A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0997BD Compression Method    0008 (8) 'Deflated'\n-0997BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0997C3 CRC                   00000000 (0)\n-0997C7 Compressed Size       00000000 (0)\n-0997CB Uncompressed Size     00000000 (0)\n-0997CF Filename Length       0023 (35)\n-0997D1 Extra Length          0000 (0)\n-0997D3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0C9D0C Compression Method    0008 (8) 'Deflated'\n+0C9D0E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0C9D12 CRC                   00000000 (0)\n+0C9D16 Compressed Size       00000000 (0)\n+0C9D1A Uncompressed Size     00000000 (0)\n+0C9D1E Filename Length       0032 (50)\n+0C9D20 Extra Length          0000 (0)\n+0C9D22 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x997D3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xC9D22: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0997F6 PAYLOAD               XX\n+0C9D54 PAYLOAD\n \n-0997F8 DATA DESCRIPTOR       08074B50 (134695760)\n-0997FC CRC                   00000000 (0)\n-099800 Compressed Size       00000002 (2)\n-099804 Uncompressed Size     00000000 (0)\n+0CA1B5 DATA DESCRIPTOR       08074B50 (134695760)\n+0CA1B9 CRC                   B04E2D51 (2957913425)\n+0CA1BD Compressed Size       00000461 (1121)\n+0CA1C1 Uncompressed Size     0000135D (4957)\n \n-099808 LOCAL HEADER #683     04034B50 (67324752)\n-09980C Extract Zip Spec      14 (20) '2.0'\n-09980D Extract OS            00 (0) 'MS-DOS'\n-09980E General Purpose Flag  0808 (2056)\n+0CA1C5 LOCAL HEADER #683     04034B50 (67324752)\n+0CA1C9 Extract Zip Spec      14 (20) '2.0'\n+0CA1CA Extract OS            00 (0) 'MS-DOS'\n+0CA1CB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-099810 Compression Method    0008 (8) 'Deflated'\n-099812 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-099816 CRC                   00000000 (0)\n-09981A Compressed Size       00000000 (0)\n-09981E Uncompressed Size     00000000 (0)\n-099822 Filename Length       0032 (50)\n-099824 Extra Length          0000 (0)\n-099826 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0CA1CD Compression Method    0008 (8) 'Deflated'\n+0CA1CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0CA1D3 CRC                   00000000 (0)\n+0CA1D7 Compressed Size       00000000 (0)\n+0CA1DB Uncompressed Size     00000000 (0)\n+0CA1DF Filename Length       002F (47)\n+0CA1E1 Extra Length          0000 (0)\n+0CA1E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x99826: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCA1E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-099858 PAYLOAD\n+0CA212 PAYLOAD\n \n-099B07 DATA DESCRIPTOR       08074B50 (134695760)\n-099B0B CRC                   8247BF31 (2185740081)\n-099B0F Compressed Size       000002AF (687)\n-099B13 Uncompressed Size     0000054B (1355)\n+0CA730 DATA DESCRIPTOR       08074B50 (134695760)\n+0CA734 CRC                   D366AAB0 (3546720944)\n+0CA738 Compressed Size       0000051E (1310)\n+0CA73C Uncompressed Size     00000EEC (3820)\n \n-099B17 LOCAL HEADER #684     04034B50 (67324752)\n-099B1B Extract Zip Spec      14 (20) '2.0'\n-099B1C Extract OS            00 (0) 'MS-DOS'\n-099B1D General Purpose Flag  0808 (2056)\n+0CA740 LOCAL HEADER #684     04034B50 (67324752)\n+0CA744 Extract Zip Spec      14 (20) '2.0'\n+0CA745 Extract OS            00 (0) 'MS-DOS'\n+0CA746 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-099B1F Compression Method    0008 (8) 'Deflated'\n-099B21 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-099B25 CRC                   00000000 (0)\n-099B29 Compressed Size       00000000 (0)\n-099B2D Uncompressed Size     00000000 (0)\n-099B31 Filename Length       003A (58)\n-099B33 Extra Length          0000 (0)\n-099B35 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0CA748 Compression Method    0008 (8) 'Deflated'\n+0CA74A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0CA74E CRC                   00000000 (0)\n+0CA752 Compressed Size       00000000 (0)\n+0CA756 Uncompressed Size     00000000 (0)\n+0CA75A Filename Length       0030 (48)\n+0CA75C Extra Length          0000 (0)\n+0CA75E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x99B35: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCA75E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-099B6F PAYLOAD\n+0CA78E PAYLOAD\n \n-09A45B DATA DESCRIPTOR       08074B50 (134695760)\n-09A45F CRC                   8DDA963E (2379912766)\n-09A463 Compressed Size       000008EC (2284)\n-09A467 Uncompressed Size     00001A95 (6805)\n+0CACA9 DATA DESCRIPTOR       08074B50 (134695760)\n+0CACAD CRC                   FF46E79C (4282836892)\n+0CACB1 Compressed Size       0000051B (1307)\n+0CACB5 Uncompressed Size     00000FC4 (4036)\n \n-09A46B LOCAL HEADER #685     04034B50 (67324752)\n-09A46F Extract Zip Spec      14 (20) '2.0'\n-09A470 Extract OS            00 (0) 'MS-DOS'\n-09A471 General Purpose Flag  0808 (2056)\n+0CACB9 LOCAL HEADER #685     04034B50 (67324752)\n+0CACBD Extract Zip Spec      14 (20) '2.0'\n+0CACBE Extract OS            00 (0) 'MS-DOS'\n+0CACBF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09A473 Compression Method    0008 (8) 'Deflated'\n-09A475 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09A479 CRC                   00000000 (0)\n-09A47D Compressed Size       00000000 (0)\n-09A481 Uncompressed Size     00000000 (0)\n-09A485 Filename Length       002E (46)\n-09A487 Extra Length          0000 (0)\n-09A489 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0CACC1 Compression Method    0008 (8) 'Deflated'\n+0CACC3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0CACC7 CRC                   00000000 (0)\n+0CACCB Compressed Size       00000000 (0)\n+0CACCF Uncompressed Size     00000000 (0)\n+0CACD3 Filename Length       0029 (41)\n+0CACD5 Extra Length          0000 (0)\n+0CACD7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9A489: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCACD7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09A4B7 PAYLOAD               XX\n+0CAD00 PAYLOAD               XX\n \n-09A4B9 DATA DESCRIPTOR       08074B50 (134695760)\n-09A4BD CRC                   00000000 (0)\n-09A4C1 Compressed Size       00000002 (2)\n-09A4C5 Uncompressed Size     00000000 (0)\n+0CAD02 DATA DESCRIPTOR       08074B50 (134695760)\n+0CAD06 CRC                   00000000 (0)\n+0CAD0A Compressed Size       00000002 (2)\n+0CAD0E Uncompressed Size     00000000 (0)\n \n-09A4C9 LOCAL HEADER #686     04034B50 (67324752)\n-09A4CD Extract Zip Spec      14 (20) '2.0'\n-09A4CE Extract OS            00 (0) 'MS-DOS'\n-09A4CF General Purpose Flag  0808 (2056)\n+0CAD12 LOCAL HEADER #686     04034B50 (67324752)\n+0CAD16 Extract Zip Spec      14 (20) '2.0'\n+0CAD17 Extract OS            00 (0) 'MS-DOS'\n+0CAD18 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09A4D1 Compression Method    0008 (8) 'Deflated'\n-09A4D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09A4D7 CRC                   00000000 (0)\n-09A4DB Compressed Size       00000000 (0)\n-09A4DF Uncompressed Size     00000000 (0)\n-09A4E3 Filename Length       004D (77)\n-09A4E5 Extra Length          0000 (0)\n-09A4E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0CAD1A Compression Method    0008 (8) 'Deflated'\n+0CAD1C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0CAD20 CRC                   00000000 (0)\n+0CAD24 Compressed Size       00000000 (0)\n+0CAD28 Uncompressed Size     00000000 (0)\n+0CAD2C Filename Length       003B (59)\n+0CAD2E Extra Length          0000 (0)\n+0CAD30 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9A4E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCAD30: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09A534 PAYLOAD\n+0CAD6B PAYLOAD\n \n-09A837 DATA DESCRIPTOR       08074B50 (134695760)\n-09A83B CRC                   A445CFD0 (2756038608)\n-09A83F Compressed Size       00000303 (771)\n-09A843 Uncompressed Size     0000090C (2316)\n+0CBDAF DATA DESCRIPTOR       08074B50 (134695760)\n+0CBDB3 CRC                   6E137A75 (1846770293)\n+0CBDB7 Compressed Size       00001044 (4164)\n+0CBDBB Uncompressed Size     000050EF (20719)\n \n-09A847 LOCAL HEADER #687     04034B50 (67324752)\n-09A84B Extract Zip Spec      14 (20) '2.0'\n-09A84C Extract OS            00 (0) 'MS-DOS'\n-09A84D General Purpose Flag  0808 (2056)\n+0CBDBF LOCAL HEADER #687     04034B50 (67324752)\n+0CBDC3 Extract Zip Spec      14 (20) '2.0'\n+0CBDC4 Extract OS            00 (0) 'MS-DOS'\n+0CBDC5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09A84F Compression Method    0008 (8) 'Deflated'\n-09A851 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09A855 CRC                   00000000 (0)\n-09A859 Compressed Size       00000000 (0)\n-09A85D Uncompressed Size     00000000 (0)\n-09A861 Filename Length       0029 (41)\n-09A863 Extra Length          0000 (0)\n-09A865 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0CBDC7 Compression Method    0008 (8) 'Deflated'\n+0CBDC9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0CBDCD CRC                   00000000 (0)\n+0CBDD1 Compressed Size       00000000 (0)\n+0CBDD5 Uncompressed Size     00000000 (0)\n+0CBDD9 Filename Length       002B (43)\n+0CBDDB Extra Length          0000 (0)\n+0CBDDD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9A865: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCBDDD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09A88E PAYLOAD               XX\n+0CBE08 PAYLOAD               XX\n \n-09A890 DATA DESCRIPTOR       08074B50 (134695760)\n-09A894 CRC                   00000000 (0)\n-09A898 Compressed Size       00000002 (2)\n-09A89C Uncompressed Size     00000000 (0)\n+0CBE0A DATA DESCRIPTOR       08074B50 (134695760)\n+0CBE0E CRC                   00000000 (0)\n+0CBE12 Compressed Size       00000002 (2)\n+0CBE16 Uncompressed Size     00000000 (0)\n \n-09A8A0 LOCAL HEADER #688     04034B50 (67324752)\n-09A8A4 Extract Zip Spec      14 (20) '2.0'\n-09A8A5 Extract OS            00 (0) 'MS-DOS'\n-09A8A6 General Purpose Flag  0808 (2056)\n+0CBE1A LOCAL HEADER #688     04034B50 (67324752)\n+0CBE1E Extract Zip Spec      14 (20) '2.0'\n+0CBE1F Extract OS            00 (0) 'MS-DOS'\n+0CBE20 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09A8A8 Compression Method    0008 (8) 'Deflated'\n-09A8AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09A8AE CRC                   00000000 (0)\n-09A8B2 Compressed Size       00000000 (0)\n-09A8B6 Uncompressed Size     00000000 (0)\n-09A8BA Filename Length       0046 (70)\n-09A8BC Extra Length          0000 (0)\n-09A8BE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0CBE22 Compression Method    0008 (8) 'Deflated'\n+0CBE24 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0CBE28 CRC                   00000000 (0)\n+0CBE2C Compressed Size       00000000 (0)\n+0CBE30 Uncompressed Size     00000000 (0)\n+0CBE34 Filename Length       003D (61)\n+0CBE36 Extra Length          0000 (0)\n+0CBE38 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9A8BE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCBE38: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09A904 PAYLOAD\n+0CBE75 PAYLOAD\n \n-09AB93 DATA DESCRIPTOR       08074B50 (134695760)\n-09AB97 CRC                   0A4E202C (172892204)\n-09AB9B Compressed Size       0000028F (655)\n-09AB9F Uncompressed Size     000004DB (1243)\n+0CCAC0 DATA DESCRIPTOR       08074B50 (134695760)\n+0CCAC4 CRC                   38A27EA4 (950173348)\n+0CCAC8 Compressed Size       00000C4B (3147)\n+0CCACC Uncompressed Size     00002E18 (11800)\n \n-09ABA3 LOCAL HEADER #689     04034B50 (67324752)\n-09ABA7 Extract Zip Spec      14 (20) '2.0'\n-09ABA8 Extract OS            00 (0) 'MS-DOS'\n-09ABA9 General Purpose Flag  0808 (2056)\n+0CCAD0 LOCAL HEADER #689     04034B50 (67324752)\n+0CCAD4 Extract Zip Spec      14 (20) '2.0'\n+0CCAD5 Extract OS            00 (0) 'MS-DOS'\n+0CCAD6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09ABAB Compression Method    0008 (8) 'Deflated'\n-09ABAD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09ABB1 CRC                   00000000 (0)\n-09ABB5 Compressed Size       00000000 (0)\n-09ABB9 Uncompressed Size     00000000 (0)\n-09ABBD Filename Length       002B (43)\n-09ABBF Extra Length          0000 (0)\n-09ABC1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0CCAD8 Compression Method    0008 (8) 'Deflated'\n+0CCADA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0CCADE CRC                   00000000 (0)\n+0CCAE2 Compressed Size       00000000 (0)\n+0CCAE6 Uncompressed Size     00000000 (0)\n+0CCAEA Filename Length       0046 (70)\n+0CCAEC Extra Length          0000 (0)\n+0CCAEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9ABC1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCCAEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09ABEC PAYLOAD               XX\n+0CCB34 PAYLOAD\n \n-09ABEE DATA DESCRIPTOR       08074B50 (134695760)\n-09ABF2 CRC                   00000000 (0)\n-09ABF6 Compressed Size       00000002 (2)\n-09ABFA Uncompressed Size     00000000 (0)\n+0CCDE7 DATA DESCRIPTOR       08074B50 (134695760)\n+0CCDEB CRC                   8AF6C6B7 (2331428535)\n+0CCDEF Compressed Size       000002B3 (691)\n+0CCDF3 Uncompressed Size     000005BB (1467)\n \n-09ABFE LOCAL HEADER #690     04034B50 (67324752)\n-09AC02 Extract Zip Spec      14 (20) '2.0'\n-09AC03 Extract OS            00 (0) 'MS-DOS'\n-09AC04 General Purpose Flag  0808 (2056)\n+0CCDF7 LOCAL HEADER #690     04034B50 (67324752)\n+0CCDFB Extract Zip Spec      14 (20) '2.0'\n+0CCDFC Extract OS            00 (0) 'MS-DOS'\n+0CCDFD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09AC06 Compression Method    0008 (8) 'Deflated'\n-09AC08 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09AC0C CRC                   00000000 (0)\n-09AC10 Compressed Size       00000000 (0)\n-09AC14 Uncompressed Size     00000000 (0)\n-09AC18 Filename Length       0049 (73)\n-09AC1A Extra Length          0000 (0)\n-09AC1C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0CCDFF Compression Method    0008 (8) 'Deflated'\n+0CCE01 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0CCE05 CRC                   00000000 (0)\n+0CCE09 Compressed Size       00000000 (0)\n+0CCE0D Uncompressed Size     00000000 (0)\n+0CCE11 Filename Length       0049 (73)\n+0CCE13 Extra Length          0000 (0)\n+0CCE15 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9AC1C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCCE15: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09AC65 PAYLOAD\n+0CCE5E PAYLOAD\n \n-09B50D DATA DESCRIPTOR       08074B50 (134695760)\n-09B511 CRC                   6D3F9D1E (1832885534)\n-09B515 Compressed Size       000008A8 (2216)\n-09B519 Uncompressed Size     00001E30 (7728)\n+0CD29A DATA DESCRIPTOR       08074B50 (134695760)\n+0CD29E CRC                   2C68D340 (745067328)\n+0CD2A2 Compressed Size       0000043C (1084)\n+0CD2A6 Uncompressed Size     00001165 (4453)\n \n-09B51D LOCAL HEADER #691     04034B50 (67324752)\n-09B521 Extract Zip Spec      14 (20) '2.0'\n-09B522 Extract OS            00 (0) 'MS-DOS'\n-09B523 General Purpose Flag  0808 (2056)\n+0CD2AA LOCAL HEADER #691     04034B50 (67324752)\n+0CD2AE Extract Zip Spec      14 (20) '2.0'\n+0CD2AF Extract OS            00 (0) 'MS-DOS'\n+0CD2B0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09B525 Compression Method    0008 (8) 'Deflated'\n-09B527 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09B52B CRC                   00000000 (0)\n-09B52F Compressed Size       00000000 (0)\n-09B533 Uncompressed Size     00000000 (0)\n-09B537 Filename Length       0042 (66)\n-09B539 Extra Length          0000 (0)\n-09B53B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0CD2B2 Compression Method    0008 (8) 'Deflated'\n+0CD2B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0CD2B8 CRC                   00000000 (0)\n+0CD2BC Compressed Size       00000000 (0)\n+0CD2C0 Uncompressed Size     00000000 (0)\n+0CD2C4 Filename Length       0046 (70)\n+0CD2C6 Extra Length          0000 (0)\n+0CD2C8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9B53B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCD2C8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09B57D PAYLOAD\n+0CD30E PAYLOAD\n \n-09B991 DATA DESCRIPTOR       08074B50 (134695760)\n-09B995 CRC                   355480AB (894730411)\n-09B999 Compressed Size       00000414 (1044)\n-09B99D Uncompressed Size     00000919 (2329)\n+0CD6FA DATA DESCRIPTOR       08074B50 (134695760)\n+0CD6FE CRC                   C14E1F5D (3243122525)\n+0CD702 Compressed Size       000003EC (1004)\n+0CD706 Uncompressed Size     00000DD5 (3541)\n \n-09B9A1 LOCAL HEADER #692     04034B50 (67324752)\n-09B9A5 Extract Zip Spec      14 (20) '2.0'\n-09B9A6 Extract OS            00 (0) 'MS-DOS'\n-09B9A7 General Purpose Flag  0808 (2056)\n+0CD70A LOCAL HEADER #692     04034B50 (67324752)\n+0CD70E Extract Zip Spec      14 (20) '2.0'\n+0CD70F Extract OS            00 (0) 'MS-DOS'\n+0CD710 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09B9A9 Compression Method    0008 (8) 'Deflated'\n-09B9AB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09B9AF CRC                   00000000 (0)\n-09B9B3 Compressed Size       00000000 (0)\n-09B9B7 Uncompressed Size     00000000 (0)\n-09B9BB Filename Length       0034 (52)\n-09B9BD Extra Length          0000 (0)\n-09B9BF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0CD712 Compression Method    0008 (8) 'Deflated'\n+0CD714 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0CD718 CRC                   00000000 (0)\n+0CD71C Compressed Size       00000000 (0)\n+0CD720 Uncompressed Size     00000000 (0)\n+0CD724 Filename Length       003C (60)\n+0CD726 Extra Length          0000 (0)\n+0CD728 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9B9BF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCD728: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09B9F3 PAYLOAD\n+0CD764 PAYLOAD\n \n-09BD36 DATA DESCRIPTOR       08074B50 (134695760)\n-09BD3A CRC                   47FCDE13 (1207754259)\n-09BD3E Compressed Size       00000343 (835)\n-09BD42 Uncompressed Size     000007FA (2042)\n+0CDAE2 DATA DESCRIPTOR       08074B50 (134695760)\n+0CDAE6 CRC                   0593378C (93534092)\n+0CDAEA Compressed Size       0000037E (894)\n+0CDAEE Uncompressed Size     000009B6 (2486)\n \n-09BD46 LOCAL HEADER #693     04034B50 (67324752)\n-09BD4A Extract Zip Spec      14 (20) '2.0'\n-09BD4B Extract OS            00 (0) 'MS-DOS'\n-09BD4C General Purpose Flag  0808 (2056)\n+0CDAF2 LOCAL HEADER #693     04034B50 (67324752)\n+0CDAF6 Extract Zip Spec      14 (20) '2.0'\n+0CDAF7 Extract OS            00 (0) 'MS-DOS'\n+0CDAF8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09BD4E Compression Method    0008 (8) 'Deflated'\n-09BD50 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09BD54 CRC                   00000000 (0)\n-09BD58 Compressed Size       00000000 (0)\n-09BD5C Uncompressed Size     00000000 (0)\n-09BD60 Filename Length       002B (43)\n-09BD62 Extra Length          0000 (0)\n-09BD64 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0CDAFA Compression Method    0008 (8) 'Deflated'\n+0CDAFC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0CDB00 CRC                   00000000 (0)\n+0CDB04 Compressed Size       00000000 (0)\n+0CDB08 Uncompressed Size     00000000 (0)\n+0CDB0C Filename Length       0037 (55)\n+0CDB0E Extra Length          0000 (0)\n+0CDB10 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9BD64: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCDB10: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09BD8F PAYLOAD               XX\n+0CDB47 PAYLOAD\n \n-09BD91 DATA DESCRIPTOR       08074B50 (134695760)\n-09BD95 CRC                   00000000 (0)\n-09BD99 Compressed Size       00000002 (2)\n-09BD9D Uncompressed Size     00000000 (0)\n+0CDDD4 DATA DESCRIPTOR       08074B50 (134695760)\n+0CDDD8 CRC                   B40DC99A (3020802458)\n+0CDDDC Compressed Size       0000028D (653)\n+0CDDE0 Uncompressed Size     00000516 (1302)\n \n-09BDA1 LOCAL HEADER #694     04034B50 (67324752)\n-09BDA5 Extract Zip Spec      14 (20) '2.0'\n-09BDA6 Extract OS            00 (0) 'MS-DOS'\n-09BDA7 General Purpose Flag  0808 (2056)\n+0CDDE4 LOCAL HEADER #694     04034B50 (67324752)\n+0CDDE8 Extract Zip Spec      14 (20) '2.0'\n+0CDDE9 Extract OS            00 (0) 'MS-DOS'\n+0CDDEA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09BDA9 Compression Method    0008 (8) 'Deflated'\n-09BDAB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09BDAF CRC                   00000000 (0)\n-09BDB3 Compressed Size       00000000 (0)\n-09BDB7 Uncompressed Size     00000000 (0)\n-09BDBB Filename Length       0045 (69)\n-09BDBD Extra Length          0000 (0)\n-09BDBF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0CDDEC Compression Method    0008 (8) 'Deflated'\n+0CDDEE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0CDDF2 CRC                   00000000 (0)\n+0CDDF6 Compressed Size       00000000 (0)\n+0CDDFA Uncompressed Size     00000000 (0)\n+0CDDFE Filename Length       0041 (65)\n+0CDE00 Extra Length          0000 (0)\n+0CDE02 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9BDBF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCDE02: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09BE04 PAYLOAD\n+0CDE43 PAYLOAD\n \n-09C612 DATA DESCRIPTOR       08074B50 (134695760)\n-09C616 CRC                   A9E4FF87 (2850357127)\n-09C61A Compressed Size       0000080E (2062)\n-09C61E Uncompressed Size     00001767 (5991)\n+0CE260 DATA DESCRIPTOR       08074B50 (134695760)\n+0CE264 CRC                   27689F2C (661167916)\n+0CE268 Compressed Size       0000041D (1053)\n+0CE26C Uncompressed Size     00000AAA (2730)\n \n-09C622 LOCAL HEADER #695     04034B50 (67324752)\n-09C626 Extract Zip Spec      14 (20) '2.0'\n-09C627 Extract OS            00 (0) 'MS-DOS'\n-09C628 General Purpose Flag  0808 (2056)\n+0CE270 LOCAL HEADER #695     04034B50 (67324752)\n+0CE274 Extract Zip Spec      14 (20) '2.0'\n+0CE275 Extract OS            00 (0) 'MS-DOS'\n+0CE276 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09C62A Compression Method    0008 (8) 'Deflated'\n-09C62C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09C630 CRC                   00000000 (0)\n-09C634 Compressed Size       00000000 (0)\n-09C638 Uncompressed Size     00000000 (0)\n-09C63C Filename Length       0032 (50)\n-09C63E Extra Length          0000 (0)\n-09C640 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0CE278 Compression Method    0008 (8) 'Deflated'\n+0CE27A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0CE27E CRC                   00000000 (0)\n+0CE282 Compressed Size       00000000 (0)\n+0CE286 Uncompressed Size     00000000 (0)\n+0CE28A Filename Length       0032 (50)\n+0CE28C Extra Length          0000 (0)\n+0CE28E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9C640: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCE28E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09C672 PAYLOAD               XX\n+0CE2C0 PAYLOAD               XX\n \n-09C674 DATA DESCRIPTOR       08074B50 (134695760)\n-09C678 CRC                   00000000 (0)\n-09C67C Compressed Size       00000002 (2)\n-09C680 Uncompressed Size     00000000 (0)\n+0CE2C2 DATA DESCRIPTOR       08074B50 (134695760)\n+0CE2C6 CRC                   00000000 (0)\n+0CE2CA Compressed Size       00000002 (2)\n+0CE2CE Uncompressed Size     00000000 (0)\n \n-09C684 LOCAL HEADER #696     04034B50 (67324752)\n-09C688 Extract Zip Spec      14 (20) '2.0'\n-09C689 Extract OS            00 (0) 'MS-DOS'\n-09C68A General Purpose Flag  0808 (2056)\n+0CE2D2 LOCAL HEADER #696     04034B50 (67324752)\n+0CE2D6 Extract Zip Spec      14 (20) '2.0'\n+0CE2D7 Extract OS            00 (0) 'MS-DOS'\n+0CE2D8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09C68C Compression Method    0008 (8) 'Deflated'\n-09C68E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09C692 CRC                   00000000 (0)\n-09C696 Compressed Size       00000000 (0)\n-09C69A Uncompressed Size     00000000 (0)\n-09C69E Filename Length       0047 (71)\n-09C6A0 Extra Length          0000 (0)\n-09C6A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0CE2DA Compression Method    0008 (8) 'Deflated'\n+0CE2DC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0CE2E0 CRC                   00000000 (0)\n+0CE2E4 Compressed Size       00000000 (0)\n+0CE2E8 Uncompressed Size     00000000 (0)\n+0CE2EC Filename Length       0048 (72)\n+0CE2EE Extra Length          0000 (0)\n+0CE2F0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9C6A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCE2F0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09C6E9 PAYLOAD\n+0CE338 PAYLOAD\n \n-09CB2D DATA DESCRIPTOR       08074B50 (134695760)\n-09CB31 CRC                   7C2CDC15 (2083314709)\n-09CB35 Compressed Size       00000444 (1092)\n-09CB39 Uncompressed Size     00000C7D (3197)\n+0CE785 DATA DESCRIPTOR       08074B50 (134695760)\n+0CE789 CRC                   E73F3737 (3879679799)\n+0CE78D Compressed Size       0000044D (1101)\n+0CE791 Uncompressed Size     00000B9F (2975)\n \n-09CB3D LOCAL HEADER #697     04034B50 (67324752)\n-09CB41 Extract Zip Spec      14 (20) '2.0'\n-09CB42 Extract OS            00 (0) 'MS-DOS'\n-09CB43 General Purpose Flag  0808 (2056)\n+0CE795 LOCAL HEADER #697     04034B50 (67324752)\n+0CE799 Extract Zip Spec      14 (20) '2.0'\n+0CE79A Extract OS            00 (0) 'MS-DOS'\n+0CE79B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09CB45 Compression Method    0008 (8) 'Deflated'\n-09CB47 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09CB4B CRC                   00000000 (0)\n-09CB4F Compressed Size       00000000 (0)\n-09CB53 Uncompressed Size     00000000 (0)\n-09CB57 Filename Length       0031 (49)\n-09CB59 Extra Length          0000 (0)\n-09CB5B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0CE79D Compression Method    0008 (8) 'Deflated'\n+0CE79F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0CE7A3 CRC                   00000000 (0)\n+0CE7A7 Compressed Size       00000000 (0)\n+0CE7AB Uncompressed Size     00000000 (0)\n+0CE7AF Filename Length       0045 (69)\n+0CE7B1 Extra Length          0000 (0)\n+0CE7B3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9CB5B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCE7B3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09CB8C PAYLOAD               XX\n+0CE7F8 PAYLOAD\n \n-09CB8E DATA DESCRIPTOR       08074B50 (134695760)\n-09CB92 CRC                   00000000 (0)\n-09CB96 Compressed Size       00000002 (2)\n-09CB9A Uncompressed Size     00000000 (0)\n+0CEBA6 DATA DESCRIPTOR       08074B50 (134695760)\n+0CEBAA CRC                   BC922CD8 (3163696344)\n+0CEBAE Compressed Size       000003AE (942)\n+0CEBB2 Uncompressed Size     00000890 (2192)\n \n-09CB9E LOCAL HEADER #698     04034B50 (67324752)\n-09CBA2 Extract Zip Spec      14 (20) '2.0'\n-09CBA3 Extract OS            00 (0) 'MS-DOS'\n-09CBA4 General Purpose Flag  0808 (2056)\n+0CEBB6 LOCAL HEADER #698     04034B50 (67324752)\n+0CEBBA Extract Zip Spec      14 (20) '2.0'\n+0CEBBB Extract OS            00 (0) 'MS-DOS'\n+0CEBBC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09CBA6 Compression Method    0008 (8) 'Deflated'\n-09CBA8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09CBAC CRC                   00000000 (0)\n-09CBB0 Compressed Size       00000000 (0)\n-09CBB4 Uncompressed Size     00000000 (0)\n-09CBB8 Filename Length       0045 (69)\n-09CBBA Extra Length          0000 (0)\n-09CBBC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0CEBBE Compression Method    0008 (8) 'Deflated'\n+0CEBC0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0CEBC4 CRC                   00000000 (0)\n+0CEBC8 Compressed Size       00000000 (0)\n+0CEBCC Uncompressed Size     00000000 (0)\n+0CEBD0 Filename Length       004C (76)\n+0CEBD2 Extra Length          0000 (0)\n+0CEBD4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9CBBC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCEBD4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09CC01 PAYLOAD\n+0CEC20 PAYLOAD\n \n-09D019 DATA DESCRIPTOR       08074B50 (134695760)\n-09D01D CRC                   DF3FC6E9 (3745498857)\n-09D021 Compressed Size       00000418 (1048)\n-09D025 Uncompressed Size     00000BC1 (3009)\n+0CF43E DATA DESCRIPTOR       08074B50 (134695760)\n+0CF442 CRC                   B13FDACC (2973752012)\n+0CF446 Compressed Size       0000081E (2078)\n+0CF44A Uncompressed Size     0000217A (8570)\n \n-09D029 LOCAL HEADER #699     04034B50 (67324752)\n-09D02D Extract Zip Spec      14 (20) '2.0'\n-09D02E Extract OS            00 (0) 'MS-DOS'\n-09D02F General Purpose Flag  0808 (2056)\n+0CF44E LOCAL HEADER #699     04034B50 (67324752)\n+0CF452 Extract Zip Spec      14 (20) '2.0'\n+0CF453 Extract OS            00 (0) 'MS-DOS'\n+0CF454 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09D031 Compression Method    0008 (8) 'Deflated'\n-09D033 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09D037 CRC                   00000000 (0)\n-09D03B Compressed Size       00000000 (0)\n-09D03F Uncompressed Size     00000000 (0)\n-09D043 Filename Length       004D (77)\n-09D045 Extra Length          0000 (0)\n-09D047 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0CF456 Compression Method    0008 (8) 'Deflated'\n+0CF458 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0CF45C CRC                   00000000 (0)\n+0CF460 Compressed Size       00000000 (0)\n+0CF464 Uncompressed Size     00000000 (0)\n+0CF468 Filename Length       004B (75)\n+0CF46A Extra Length          0000 (0)\n+0CF46C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9D047: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCF46C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09D094 PAYLOAD\n+0CF4B7 PAYLOAD\n \n-09D51B DATA DESCRIPTOR       08074B50 (134695760)\n-09D51F CRC                   B7E8049A (3085436058)\n-09D523 Compressed Size       00000487 (1159)\n-09D527 Uncompressed Size     00000CBE (3262)\n+0CFC6E DATA DESCRIPTOR       08074B50 (134695760)\n+0CFC72 CRC                   2FB42746 (800335686)\n+0CFC76 Compressed Size       000007B7 (1975)\n+0CFC7A Uncompressed Size     00001E7B (7803)\n \n-09D52B LOCAL HEADER #700     04034B50 (67324752)\n-09D52F Extract Zip Spec      14 (20) '2.0'\n-09D530 Extract OS            00 (0) 'MS-DOS'\n-09D531 General Purpose Flag  0808 (2056)\n+0CFC7E LOCAL HEADER #700     04034B50 (67324752)\n+0CFC82 Extract Zip Spec      14 (20) '2.0'\n+0CFC83 Extract OS            00 (0) 'MS-DOS'\n+0CFC84 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09D533 Compression Method    0008 (8) 'Deflated'\n-09D535 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09D539 CRC                   00000000 (0)\n-09D53D Compressed Size       00000000 (0)\n-09D541 Uncompressed Size     00000000 (0)\n-09D545 Filename Length       003F (63)\n-09D547 Extra Length          0000 (0)\n-09D549 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0CFC86 Compression Method    0008 (8) 'Deflated'\n+0CFC88 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0CFC8C CRC                   00000000 (0)\n+0CFC90 Compressed Size       00000000 (0)\n+0CFC94 Uncompressed Size     00000000 (0)\n+0CFC98 Filename Length       004C (76)\n+0CFC9A Extra Length          0000 (0)\n+0CFC9C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9D549: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xCFC9C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09D588 PAYLOAD\n+0CFCE8 PAYLOAD\n \n-09DA2E DATA DESCRIPTOR       08074B50 (134695760)\n-09DA32 CRC                   365FEBC7 (912255943)\n-09DA36 Compressed Size       000004A6 (1190)\n-09DA3A Uncompressed Size     00000B87 (2951)\n+0D05C5 DATA DESCRIPTOR       08074B50 (134695760)\n+0D05C9 CRC                   C01CAB2E (3223104302)\n+0D05CD Compressed Size       000008DD (2269)\n+0D05D1 Uncompressed Size     0000247E (9342)\n \n-09DA3E LOCAL HEADER #701     04034B50 (67324752)\n-09DA42 Extract Zip Spec      14 (20) '2.0'\n-09DA43 Extract OS            00 (0) 'MS-DOS'\n-09DA44 General Purpose Flag  0808 (2056)\n+0D05D5 LOCAL HEADER #701     04034B50 (67324752)\n+0D05D9 Extract Zip Spec      14 (20) '2.0'\n+0D05DA Extract OS            00 (0) 'MS-DOS'\n+0D05DB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09DA46 Compression Method    0008 (8) 'Deflated'\n-09DA48 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09DA4C CRC                   00000000 (0)\n-09DA50 Compressed Size       00000000 (0)\n-09DA54 Uncompressed Size     00000000 (0)\n-09DA58 Filename Length       0031 (49)\n-09DA5A Extra Length          0000 (0)\n-09DA5C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D05DD Compression Method    0008 (8) 'Deflated'\n+0D05DF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D05E3 CRC                   00000000 (0)\n+0D05E7 Compressed Size       00000000 (0)\n+0D05EB Uncompressed Size     00000000 (0)\n+0D05EF Filename Length       004B (75)\n+0D05F1 Extra Length          0000 (0)\n+0D05F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9DA5C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD05F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09DA8D PAYLOAD               XX\n+0D063E PAYLOAD\n \n-09DA8F DATA DESCRIPTOR       08074B50 (134695760)\n-09DA93 CRC                   00000000 (0)\n-09DA97 Compressed Size       00000002 (2)\n-09DA9B Uncompressed Size     00000000 (0)\n+0D0FE8 DATA DESCRIPTOR       08074B50 (134695760)\n+0D0FEC CRC                   6C372682 (1815553666)\n+0D0FF0 Compressed Size       000009AA (2474)\n+0D0FF4 Uncompressed Size     000024E2 (9442)\n \n-09DA9F LOCAL HEADER #702     04034B50 (67324752)\n-09DAA3 Extract Zip Spec      14 (20) '2.0'\n-09DAA4 Extract OS            00 (0) 'MS-DOS'\n-09DAA5 General Purpose Flag  0808 (2056)\n+0D0FF8 LOCAL HEADER #702     04034B50 (67324752)\n+0D0FFC Extract Zip Spec      14 (20) '2.0'\n+0D0FFD Extract OS            00 (0) 'MS-DOS'\n+0D0FFE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09DAA7 Compression Method    0008 (8) 'Deflated'\n-09DAA9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09DAAD CRC                   00000000 (0)\n-09DAB1 Compressed Size       00000000 (0)\n-09DAB5 Uncompressed Size     00000000 (0)\n-09DAB9 Filename Length       0045 (69)\n-09DABB Extra Length          0000 (0)\n-09DABD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D1000 Compression Method    0008 (8) 'Deflated'\n+0D1002 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D1006 CRC                   00000000 (0)\n+0D100A Compressed Size       00000000 (0)\n+0D100E Uncompressed Size     00000000 (0)\n+0D1012 Filename Length       0046 (70)\n+0D1014 Extra Length          0000 (0)\n+0D1016 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9DABD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD1016: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09DB02 PAYLOAD\n+0D105C PAYLOAD\n \n-09DEDA DATA DESCRIPTOR       08074B50 (134695760)\n-09DEDE CRC                   3EDDC0EF (1054720239)\n-09DEE2 Compressed Size       000003D8 (984)\n-09DEE6 Uncompressed Size     00000AA3 (2723)\n+0D1352 DATA DESCRIPTOR       08074B50 (134695760)\n+0D1356 CRC                   7F591FA6 (2136547238)\n+0D135A Compressed Size       000002F6 (758)\n+0D135E Uncompressed Size     0000079B (1947)\n \n-09DEEA LOCAL HEADER #703     04034B50 (67324752)\n-09DEEE Extract Zip Spec      14 (20) '2.0'\n-09DEEF Extract OS            00 (0) 'MS-DOS'\n-09DEF0 General Purpose Flag  0808 (2056)\n+0D1362 LOCAL HEADER #703     04034B50 (67324752)\n+0D1366 Extract Zip Spec      14 (20) '2.0'\n+0D1367 Extract OS            00 (0) 'MS-DOS'\n+0D1368 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09DEF2 Compression Method    0008 (8) 'Deflated'\n-09DEF4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09DEF8 CRC                   00000000 (0)\n-09DEFC Compressed Size       00000000 (0)\n-09DF00 Uncompressed Size     00000000 (0)\n-09DF04 Filename Length       0033 (51)\n-09DF06 Extra Length          0000 (0)\n-09DF08 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D136A Compression Method    0008 (8) 'Deflated'\n+0D136C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D1370 CRC                   00000000 (0)\n+0D1374 Compressed Size       00000000 (0)\n+0D1378 Uncompressed Size     00000000 (0)\n+0D137C Filename Length       0047 (71)\n+0D137E Extra Length          0000 (0)\n+0D1380 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9DF08: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD1380: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09DF3B PAYLOAD               XX\n+0D13C7 PAYLOAD\n \n-09DF3D DATA DESCRIPTOR       08074B50 (134695760)\n-09DF41 CRC                   00000000 (0)\n-09DF45 Compressed Size       00000002 (2)\n-09DF49 Uncompressed Size     00000000 (0)\n+0D191A DATA DESCRIPTOR       08074B50 (134695760)\n+0D191E CRC                   BBC269CA (3150080458)\n+0D1922 Compressed Size       00000553 (1363)\n+0D1926 Uncompressed Size     000011E6 (4582)\n \n-09DF4D LOCAL HEADER #704     04034B50 (67324752)\n-09DF51 Extract Zip Spec      14 (20) '2.0'\n-09DF52 Extract OS            00 (0) 'MS-DOS'\n-09DF53 General Purpose Flag  0808 (2056)\n+0D192A LOCAL HEADER #704     04034B50 (67324752)\n+0D192E Extract Zip Spec      14 (20) '2.0'\n+0D192F Extract OS            00 (0) 'MS-DOS'\n+0D1930 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09DF55 Compression Method    0008 (8) 'Deflated'\n-09DF57 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09DF5B CRC                   00000000 (0)\n-09DF5F Compressed Size       00000000 (0)\n-09DF63 Uncompressed Size     00000000 (0)\n-09DF67 Filename Length       0049 (73)\n-09DF69 Extra Length          0000 (0)\n-09DF6B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D1932 Compression Method    0008 (8) 'Deflated'\n+0D1934 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D1938 CRC                   00000000 (0)\n+0D193C Compressed Size       00000000 (0)\n+0D1940 Uncompressed Size     00000000 (0)\n+0D1944 Filename Length       0049 (73)\n+0D1946 Extra Length          0000 (0)\n+0D1948 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9DF6B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD1948: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09DFB4 PAYLOAD\n+0D1991 PAYLOAD\n \n-09E3B9 DATA DESCRIPTOR       08074B50 (134695760)\n-09E3BD CRC                   25691E02 (627645954)\n-09E3C1 Compressed Size       00000405 (1029)\n-09E3C5 Uncompressed Size     00000B75 (2933)\n+0D1DB9 DATA DESCRIPTOR       08074B50 (134695760)\n+0D1DBD CRC                   CCFFACEF (3439308015)\n+0D1DC1 Compressed Size       00000428 (1064)\n+0D1DC5 Uncompressed Size     00000A6F (2671)\n \n-09E3C9 LOCAL HEADER #705     04034B50 (67324752)\n-09E3CD Extract Zip Spec      14 (20) '2.0'\n-09E3CE Extract OS            00 (0) 'MS-DOS'\n-09E3CF General Purpose Flag  0808 (2056)\n+0D1DC9 LOCAL HEADER #705     04034B50 (67324752)\n+0D1DCD Extract Zip Spec      14 (20) '2.0'\n+0D1DCE Extract OS            00 (0) 'MS-DOS'\n+0D1DCF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09E3D1 Compression Method    0008 (8) 'Deflated'\n-09E3D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09E3D7 CRC                   00000000 (0)\n-09E3DB Compressed Size       00000000 (0)\n-09E3DF Uncompressed Size     00000000 (0)\n-09E3E3 Filename Length       001E (30)\n-09E3E5 Extra Length          0000 (0)\n-09E3E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D1DD1 Compression Method    0008 (8) 'Deflated'\n+0D1DD3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D1DD7 CRC                   00000000 (0)\n+0D1DDB Compressed Size       00000000 (0)\n+0D1DDF Uncompressed Size     00000000 (0)\n+0D1DE3 Filename Length       0049 (73)\n+0D1DE5 Extra Length          0000 (0)\n+0D1DE7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9E3E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD1DE7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09E405 PAYLOAD               XX\n+0D1E30 PAYLOAD\n \n-09E407 DATA DESCRIPTOR       08074B50 (134695760)\n-09E40B CRC                   00000000 (0)\n-09E40F Compressed Size       00000002 (2)\n-09E413 Uncompressed Size     00000000 (0)\n+0D2260 DATA DESCRIPTOR       08074B50 (134695760)\n+0D2264 CRC                   39DE0130 (970850608)\n+0D2268 Compressed Size       00000430 (1072)\n+0D226C Uncompressed Size     00000AD0 (2768)\n \n-09E417 LOCAL HEADER #706     04034B50 (67324752)\n-09E41B Extract Zip Spec      14 (20) '2.0'\n-09E41C Extract OS            00 (0) 'MS-DOS'\n-09E41D General Purpose Flag  0808 (2056)\n+0D2270 LOCAL HEADER #706     04034B50 (67324752)\n+0D2274 Extract Zip Spec      14 (20) '2.0'\n+0D2275 Extract OS            00 (0) 'MS-DOS'\n+0D2276 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-09E41F Compression Method    0008 (8) 'Deflated'\n-09E421 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-09E425 CRC                   00000000 (0)\n-09E429 Compressed Size       00000000 (0)\n-09E42D Uncompressed Size     00000000 (0)\n-09E431 Filename Length       0033 (51)\n-09E433 Extra Length          0000 (0)\n-09E435 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D2278 Compression Method    0008 (8) 'Deflated'\n+0D227A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D227E CRC                   00000000 (0)\n+0D2282 Compressed Size       00000000 (0)\n+0D2286 Uncompressed Size     00000000 (0)\n+0D228A Filename Length       0021 (33)\n+0D228C Extra Length          0000 (0)\n+0D228E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x9E435: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD228E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-09E468 PAYLOAD\n+0D22AF PAYLOAD               XX\n \n-0A009C DATA DESCRIPTOR       08074B50 (134695760)\n-0A00A0 CRC                   15C91CF2 (365501682)\n-0A00A4 Compressed Size       00001C34 (7220)\n-0A00A8 Uncompressed Size     000079B9 (31161)\n+0D22B1 DATA DESCRIPTOR       08074B50 (134695760)\n+0D22B5 CRC                   00000000 (0)\n+0D22B9 Compressed Size       00000002 (2)\n+0D22BD Uncompressed Size     00000000 (0)\n \n-0A00AC LOCAL HEADER #707     04034B50 (67324752)\n-0A00B0 Extract Zip Spec      14 (20) '2.0'\n-0A00B1 Extract OS            00 (0) 'MS-DOS'\n-0A00B2 General Purpose Flag  0808 (2056)\n+0D22C1 LOCAL HEADER #707     04034B50 (67324752)\n+0D22C5 Extract Zip Spec      14 (20) '2.0'\n+0D22C6 Extract OS            00 (0) 'MS-DOS'\n+0D22C7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A00B4 Compression Method    0008 (8) 'Deflated'\n-0A00B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A00BA CRC                   00000000 (0)\n-0A00BE Compressed Size       00000000 (0)\n-0A00C2 Uncompressed Size     00000000 (0)\n-0A00C6 Filename Length       002A (42)\n-0A00C8 Extra Length          0000 (0)\n-0A00CA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D22C9 Compression Method    0008 (8) 'Deflated'\n+0D22CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D22CF CRC                   00000000 (0)\n+0D22D3 Compressed Size       00000000 (0)\n+0D22D7 Uncompressed Size     00000000 (0)\n+0D22DB Filename Length       0033 (51)\n+0D22DD Extra Length          0000 (0)\n+0D22DF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA00CA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD22DF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A00F4 PAYLOAD\n+0D2312 PAYLOAD\n \n-0A03BA DATA DESCRIPTOR       08074B50 (134695760)\n-0A03BE CRC                   896B8386 (2305524614)\n-0A03C2 Compressed Size       000002C6 (710)\n-0A03C6 Uncompressed Size     0000069C (1692)\n+0D2581 DATA DESCRIPTOR       08074B50 (134695760)\n+0D2585 CRC                   1A03F22E (436466222)\n+0D2589 Compressed Size       0000026F (623)\n+0D258D Uncompressed Size     000004DF (1247)\n \n-0A03CA LOCAL HEADER #708     04034B50 (67324752)\n-0A03CE Extract Zip Spec      14 (20) '2.0'\n-0A03CF Extract OS            00 (0) 'MS-DOS'\n-0A03D0 General Purpose Flag  0808 (2056)\n+0D2591 LOCAL HEADER #708     04034B50 (67324752)\n+0D2595 Extract Zip Spec      14 (20) '2.0'\n+0D2596 Extract OS            00 (0) 'MS-DOS'\n+0D2597 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A03D2 Compression Method    0008 (8) 'Deflated'\n-0A03D4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A03D8 CRC                   00000000 (0)\n-0A03DC Compressed Size       00000000 (0)\n-0A03E0 Uncompressed Size     00000000 (0)\n-0A03E4 Filename Length       0028 (40)\n-0A03E6 Extra Length          0000 (0)\n-0A03E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D2599 Compression Method    0008 (8) 'Deflated'\n+0D259B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D259F CRC                   00000000 (0)\n+0D25A3 Compressed Size       00000000 (0)\n+0D25A7 Uncompressed Size     00000000 (0)\n+0D25AB Filename Length       0027 (39)\n+0D25AD Extra Length          0000 (0)\n+0D25AF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA03E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD25AF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A0410 PAYLOAD\n+0D25D6 PAYLOAD               XX\n \n-0A0776 DATA DESCRIPTOR       08074B50 (134695760)\n-0A077A CRC                   2D8D7FE9 (764248041)\n-0A077E Compressed Size       00000366 (870)\n-0A0782 Uncompressed Size     00000769 (1897)\n+0D25D8 DATA DESCRIPTOR       08074B50 (134695760)\n+0D25DC CRC                   00000000 (0)\n+0D25E0 Compressed Size       00000002 (2)\n+0D25E4 Uncompressed Size     00000000 (0)\n \n-0A0786 LOCAL HEADER #709     04034B50 (67324752)\n-0A078A Extract Zip Spec      14 (20) '2.0'\n-0A078B Extract OS            00 (0) 'MS-DOS'\n-0A078C General Purpose Flag  0808 (2056)\n+0D25E8 LOCAL HEADER #709     04034B50 (67324752)\n+0D25EC Extract Zip Spec      14 (20) '2.0'\n+0D25ED Extract OS            00 (0) 'MS-DOS'\n+0D25EE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A078E Compression Method    0008 (8) 'Deflated'\n-0A0790 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A0794 CRC                   00000000 (0)\n-0A0798 Compressed Size       00000000 (0)\n-0A079C Uncompressed Size     00000000 (0)\n-0A07A0 Filename Length       002C (44)\n-0A07A2 Extra Length          0000 (0)\n-0A07A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D25F0 Compression Method    0008 (8) 'Deflated'\n+0D25F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D25F6 CRC                   00000000 (0)\n+0D25FA Compressed Size       00000000 (0)\n+0D25FE Uncompressed Size     00000000 (0)\n+0D2602 Filename Length       0037 (55)\n+0D2604 Extra Length          0000 (0)\n+0D2606 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA07A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD2606: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A07D0 PAYLOAD\n+0D263D PAYLOAD\n \n-0A0A2D DATA DESCRIPTOR       08074B50 (134695760)\n-0A0A31 CRC                   E9761FB8 (3916832696)\n-0A0A35 Compressed Size       0000025D (605)\n-0A0A39 Uncompressed Size     00000497 (1175)\n+0D3146 DATA DESCRIPTOR       08074B50 (134695760)\n+0D314A CRC                   DBE899CA (3689454026)\n+0D314E Compressed Size       00000B09 (2825)\n+0D3152 Uncompressed Size     00002E6D (11885)\n \n-0A0A3D LOCAL HEADER #710     04034B50 (67324752)\n-0A0A41 Extract Zip Spec      14 (20) '2.0'\n-0A0A42 Extract OS            00 (0) 'MS-DOS'\n-0A0A43 General Purpose Flag  0808 (2056)\n+0D3156 LOCAL HEADER #710     04034B50 (67324752)\n+0D315A Extract Zip Spec      14 (20) '2.0'\n+0D315B Extract OS            00 (0) 'MS-DOS'\n+0D315C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A0A45 Compression Method    0008 (8) 'Deflated'\n-0A0A47 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A0A4B CRC                   00000000 (0)\n-0A0A4F Compressed Size       00000000 (0)\n-0A0A53 Uncompressed Size     00000000 (0)\n-0A0A57 Filename Length       001E (30)\n-0A0A59 Extra Length          0000 (0)\n-0A0A5B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D315E Compression Method    0008 (8) 'Deflated'\n+0D3160 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D3164 CRC                   00000000 (0)\n+0D3168 Compressed Size       00000000 (0)\n+0D316C Uncompressed Size     00000000 (0)\n+0D3170 Filename Length       0029 (41)\n+0D3172 Extra Length          0000 (0)\n+0D3174 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA0A5B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD3174: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A0A79 PAYLOAD               XX\n+0D319D PAYLOAD               XX\n \n-0A0A7B DATA DESCRIPTOR       08074B50 (134695760)\n-0A0A7F CRC                   00000000 (0)\n-0A0A83 Compressed Size       00000002 (2)\n-0A0A87 Uncompressed Size     00000000 (0)\n+0D319F DATA DESCRIPTOR       08074B50 (134695760)\n+0D31A3 CRC                   00000000 (0)\n+0D31A7 Compressed Size       00000002 (2)\n+0D31AB Uncompressed Size     00000000 (0)\n \n-0A0A8B LOCAL HEADER #711     04034B50 (67324752)\n-0A0A8F Extract Zip Spec      14 (20) '2.0'\n-0A0A90 Extract OS            00 (0) 'MS-DOS'\n-0A0A91 General Purpose Flag  0808 (2056)\n+0D31AF LOCAL HEADER #711     04034B50 (67324752)\n+0D31B3 Extract Zip Spec      14 (20) '2.0'\n+0D31B4 Extract OS            00 (0) 'MS-DOS'\n+0D31B5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A0A93 Compression Method    0008 (8) 'Deflated'\n-0A0A95 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A0A99 CRC                   00000000 (0)\n-0A0A9D Compressed Size       00000000 (0)\n-0A0AA1 Uncompressed Size     00000000 (0)\n-0A0AA5 Filename Length       0032 (50)\n-0A0AA7 Extra Length          0000 (0)\n-0A0AA9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D31B7 Compression Method    0008 (8) 'Deflated'\n+0D31B9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D31BD CRC                   00000000 (0)\n+0D31C1 Compressed Size       00000000 (0)\n+0D31C5 Uncompressed Size     00000000 (0)\n+0D31C9 Filename Length       0032 (50)\n+0D31CB Extra Length          0000 (0)\n+0D31CD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA0AA9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD31CD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A0ADB PAYLOAD\n+0D31FF PAYLOAD\n \n-0A185B DATA DESCRIPTOR       08074B50 (134695760)\n-0A185F CRC                   24647E40 (610565696)\n-0A1863 Compressed Size       00000D80 (3456)\n-0A1867 Uncompressed Size     00005305 (21253)\n+0D348A DATA DESCRIPTOR       08074B50 (134695760)\n+0D348E CRC                   91FB3CEA (2449161450)\n+0D3492 Compressed Size       0000028B (651)\n+0D3496 Uncompressed Size     00000518 (1304)\n \n-0A186B LOCAL HEADER #712     04034B50 (67324752)\n-0A186F Extract Zip Spec      14 (20) '2.0'\n-0A1870 Extract OS            00 (0) 'MS-DOS'\n-0A1871 General Purpose Flag  0808 (2056)\n+0D349A LOCAL HEADER #712     04034B50 (67324752)\n+0D349E Extract Zip Spec      14 (20) '2.0'\n+0D349F Extract OS            00 (0) 'MS-DOS'\n+0D34A0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A1873 Compression Method    0008 (8) 'Deflated'\n-0A1875 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A1879 CRC                   00000000 (0)\n-0A187D Compressed Size       00000000 (0)\n-0A1881 Uncompressed Size     00000000 (0)\n-0A1885 Filename Length       002D (45)\n-0A1887 Extra Length          0000 (0)\n-0A1889 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D34A2 Compression Method    0008 (8) 'Deflated'\n+0D34A4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D34A8 CRC                   00000000 (0)\n+0D34AC Compressed Size       00000000 (0)\n+0D34B0 Uncompressed Size     00000000 (0)\n+0D34B4 Filename Length       0042 (66)\n+0D34B6 Extra Length          0000 (0)\n+0D34B8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA1889: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD34B8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A18B6 PAYLOAD\n+0D34FA PAYLOAD\n \n-0A1C62 DATA DESCRIPTOR       08074B50 (134695760)\n-0A1C66 CRC                   9612E24D (2517819981)\n-0A1C6A Compressed Size       000003AC (940)\n-0A1C6E Uncompressed Size     00000936 (2358)\n+0D3A26 DATA DESCRIPTOR       08074B50 (134695760)\n+0D3A2A CRC                   492B287D (1227565181)\n+0D3A2E Compressed Size       0000052C (1324)\n+0D3A32 Uncompressed Size     00000FCE (4046)\n \n-0A1C72 LOCAL HEADER #713     04034B50 (67324752)\n-0A1C76 Extract Zip Spec      14 (20) '2.0'\n-0A1C77 Extract OS            00 (0) 'MS-DOS'\n-0A1C78 General Purpose Flag  0808 (2056)\n+0D3A36 LOCAL HEADER #713     04034B50 (67324752)\n+0D3A3A Extract Zip Spec      14 (20) '2.0'\n+0D3A3B Extract OS            00 (0) 'MS-DOS'\n+0D3A3C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A1C7A Compression Method    0008 (8) 'Deflated'\n-0A1C7C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A1C80 CRC                   00000000 (0)\n-0A1C84 Compressed Size       00000000 (0)\n-0A1C88 Uncompressed Size     00000000 (0)\n-0A1C8C Filename Length       0029 (41)\n-0A1C8E Extra Length          0000 (0)\n-0A1C90 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D3A3E Compression Method    0008 (8) 'Deflated'\n+0D3A40 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D3A44 CRC                   00000000 (0)\n+0D3A48 Compressed Size       00000000 (0)\n+0D3A4C Uncompressed Size     00000000 (0)\n+0D3A50 Filename Length       0039 (57)\n+0D3A52 Extra Length          0000 (0)\n+0D3A54 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA1C90: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD3A54: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A1CB9 PAYLOAD\n+0D3A8D PAYLOAD\n \n-0A1F4F DATA DESCRIPTOR       08074B50 (134695760)\n-0A1F53 CRC                   40170699 (1075250841)\n-0A1F57 Compressed Size       00000296 (662)\n-0A1F5B Uncompressed Size     0000059E (1438)\n+0D3FBD DATA DESCRIPTOR       08074B50 (134695760)\n+0D3FC1 CRC                   EB3BD2B9 (3946566329)\n+0D3FC5 Compressed Size       00000530 (1328)\n+0D3FC9 Uncompressed Size     0000169D (5789)\n \n-0A1F5F LOCAL HEADER #714     04034B50 (67324752)\n-0A1F63 Extract Zip Spec      14 (20) '2.0'\n-0A1F64 Extract OS            00 (0) 'MS-DOS'\n-0A1F65 General Purpose Flag  0808 (2056)\n+0D3FCD LOCAL HEADER #714     04034B50 (67324752)\n+0D3FD1 Extract Zip Spec      14 (20) '2.0'\n+0D3FD2 Extract OS            00 (0) 'MS-DOS'\n+0D3FD3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A1F67 Compression Method    0008 (8) 'Deflated'\n-0A1F69 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A1F6D CRC                   00000000 (0)\n-0A1F71 Compressed Size       00000000 (0)\n-0A1F75 Uncompressed Size     00000000 (0)\n-0A1F79 Filename Length       0038 (56)\n-0A1F7B Extra Length          0000 (0)\n-0A1F7D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D3FD5 Compression Method    0008 (8) 'Deflated'\n+0D3FD7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D3FDB CRC                   00000000 (0)\n+0D3FDF Compressed Size       00000000 (0)\n+0D3FE3 Uncompressed Size     00000000 (0)\n+0D3FE7 Filename Length       0031 (49)\n+0D3FE9 Extra Length          0000 (0)\n+0D3FEB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA1F7D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD3FEB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A1FB5 PAYLOAD\n+0D401C PAYLOAD               XX\n \n-0A249B DATA DESCRIPTOR       08074B50 (134695760)\n-0A249F CRC                   A604EAF8 (2785340152)\n-0A24A3 Compressed Size       000004E6 (1254)\n-0A24A7 Uncompressed Size     00001249 (4681)\n+0D401E DATA DESCRIPTOR       08074B50 (134695760)\n+0D4022 CRC                   00000000 (0)\n+0D4026 Compressed Size       00000002 (2)\n+0D402A Uncompressed Size     00000000 (0)\n \n-0A24AB LOCAL HEADER #715     04034B50 (67324752)\n-0A24AF Extract Zip Spec      14 (20) '2.0'\n-0A24B0 Extract OS            00 (0) 'MS-DOS'\n-0A24B1 General Purpose Flag  0808 (2056)\n+0D402E LOCAL HEADER #715     04034B50 (67324752)\n+0D4032 Extract Zip Spec      14 (20) '2.0'\n+0D4033 Extract OS            00 (0) 'MS-DOS'\n+0D4034 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A24B3 Compression Method    0008 (8) 'Deflated'\n-0A24B5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A24B9 CRC                   00000000 (0)\n-0A24BD Compressed Size       00000000 (0)\n-0A24C1 Uncompressed Size     00000000 (0)\n-0A24C5 Filename Length       002C (44)\n-0A24C7 Extra Length          0000 (0)\n-0A24C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D4036 Compression Method    0008 (8) 'Deflated'\n+0D4038 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D403C CRC                   00000000 (0)\n+0D4040 Compressed Size       00000000 (0)\n+0D4044 Uncompressed Size     00000000 (0)\n+0D4048 Filename Length       0048 (72)\n+0D404A Extra Length          0000 (0)\n+0D404C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA24C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD404C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A24F5 PAYLOAD\n+0D4094 PAYLOAD\n \n-0A2C26 DATA DESCRIPTOR       08074B50 (134695760)\n-0A2C2A CRC                   D7EB77B9 (3622533049)\n-0A2C2E Compressed Size       00000731 (1841)\n-0A2C32 Uncompressed Size     0000137A (4986)\n+0D43E2 DATA DESCRIPTOR       08074B50 (134695760)\n+0D43E6 CRC                   74498D23 (1950977315)\n+0D43EA Compressed Size       0000034E (846)\n+0D43EE Uncompressed Size     00000738 (1848)\n \n-0A2C36 LOCAL HEADER #716     04034B50 (67324752)\n-0A2C3A Extract Zip Spec      14 (20) '2.0'\n-0A2C3B Extract OS            00 (0) 'MS-DOS'\n-0A2C3C General Purpose Flag  0808 (2056)\n+0D43F2 LOCAL HEADER #716     04034B50 (67324752)\n+0D43F6 Extract Zip Spec      14 (20) '2.0'\n+0D43F7 Extract OS            00 (0) 'MS-DOS'\n+0D43F8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A2C3E Compression Method    0008 (8) 'Deflated'\n-0A2C40 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A2C44 CRC                   00000000 (0)\n-0A2C48 Compressed Size       00000000 (0)\n-0A2C4C Uncompressed Size     00000000 (0)\n-0A2C50 Filename Length       0039 (57)\n-0A2C52 Extra Length          0000 (0)\n-0A2C54 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D43FA Compression Method    0008 (8) 'Deflated'\n+0D43FC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D4400 CRC                   00000000 (0)\n+0D4404 Compressed Size       00000000 (0)\n+0D4408 Uncompressed Size     00000000 (0)\n+0D440C Filename Length       0047 (71)\n+0D440E Extra Length          0000 (0)\n+0D4410 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA2C54: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD4410: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A2C8D PAYLOAD\n+0D4457 PAYLOAD\n \n-0A2F29 DATA DESCRIPTOR       08074B50 (134695760)\n-0A2F2D CRC                   95FCA49F (2516362399)\n-0A2F31 Compressed Size       0000029C (668)\n-0A2F35 Uncompressed Size     00000510 (1296)\n+0D4708 DATA DESCRIPTOR       08074B50 (134695760)\n+0D470C CRC                   C2DA4C0E (3269086222)\n+0D4710 Compressed Size       000002B1 (689)\n+0D4714 Uncompressed Size     00000581 (1409)\n \n-0A2F39 LOCAL HEADER #717     04034B50 (67324752)\n-0A2F3D Extract Zip Spec      14 (20) '2.0'\n-0A2F3E Extract OS            00 (0) 'MS-DOS'\n-0A2F3F General Purpose Flag  0808 (2056)\n+0D4718 LOCAL HEADER #717     04034B50 (67324752)\n+0D471C Extract Zip Spec      14 (20) '2.0'\n+0D471D Extract OS            00 (0) 'MS-DOS'\n+0D471E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A2F41 Compression Method    0008 (8) 'Deflated'\n-0A2F43 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A2F47 CRC                   00000000 (0)\n-0A2F4B Compressed Size       00000000 (0)\n-0A2F4F Uncompressed Size     00000000 (0)\n-0A2F53 Filename Length       002E (46)\n-0A2F55 Extra Length          0000 (0)\n-0A2F57 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D4720 Compression Method    0008 (8) 'Deflated'\n+0D4722 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D4726 CRC                   00000000 (0)\n+0D472A Compressed Size       00000000 (0)\n+0D472E Uncompressed Size     00000000 (0)\n+0D4732 Filename Length       0047 (71)\n+0D4734 Extra Length          0000 (0)\n+0D4736 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA2F57: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD4736: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A2F85 PAYLOAD\n+0D477D PAYLOAD\n \n-0A3625 DATA DESCRIPTOR       08074B50 (134695760)\n-0A3629 CRC                   EEA257C4 (4003616708)\n-0A362D Compressed Size       000006A0 (1696)\n-0A3631 Uncompressed Size     000015B8 (5560)\n+0D4C5A DATA DESCRIPTOR       08074B50 (134695760)\n+0D4C5E CRC                   A166D974 (2707872116)\n+0D4C62 Compressed Size       000004DD (1245)\n+0D4C66 Uncompressed Size     00000E50 (3664)\n \n-0A3635 LOCAL HEADER #718     04034B50 (67324752)\n-0A3639 Extract Zip Spec      14 (20) '2.0'\n-0A363A Extract OS            00 (0) 'MS-DOS'\n-0A363B General Purpose Flag  0808 (2056)\n+0D4C6A LOCAL HEADER #718     04034B50 (67324752)\n+0D4C6E Extract Zip Spec      14 (20) '2.0'\n+0D4C6F Extract OS            00 (0) 'MS-DOS'\n+0D4C70 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A363D Compression Method    0008 (8) 'Deflated'\n-0A363F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A3643 CRC                   00000000 (0)\n-0A3647 Compressed Size       00000000 (0)\n-0A364B Uncompressed Size     00000000 (0)\n-0A364F Filename Length       002D (45)\n-0A3651 Extra Length          0000 (0)\n-0A3653 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D4C72 Compression Method    0008 (8) 'Deflated'\n+0D4C74 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D4C78 CRC                   00000000 (0)\n+0D4C7C Compressed Size       00000000 (0)\n+0D4C80 Uncompressed Size     00000000 (0)\n+0D4C84 Filename Length       0046 (70)\n+0D4C86 Extra Length          0000 (0)\n+0D4C88 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA3653: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD4C88: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A3680 PAYLOAD\n+0D4CCE PAYLOAD\n \n-0A47D8 DATA DESCRIPTOR       08074B50 (134695760)\n-0A47DC CRC                   54F0EEAE (1425075886)\n-0A47E0 Compressed Size       00001158 (4440)\n-0A47E4 Uncompressed Size     00004623 (17955)\n+0D52B4 DATA DESCRIPTOR       08074B50 (134695760)\n+0D52B8 CRC                   07F19A54 (133274196)\n+0D52BC Compressed Size       000005E6 (1510)\n+0D52C0 Uncompressed Size     000010DC (4316)\n \n-0A47E8 LOCAL HEADER #719     04034B50 (67324752)\n-0A47EC Extract Zip Spec      14 (20) '2.0'\n-0A47ED Extract OS            00 (0) 'MS-DOS'\n-0A47EE General Purpose Flag  0808 (2056)\n+0D52C4 LOCAL HEADER #719     04034B50 (67324752)\n+0D52C8 Extract Zip Spec      14 (20) '2.0'\n+0D52C9 Extract OS            00 (0) 'MS-DOS'\n+0D52CA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A47F0 Compression Method    0008 (8) 'Deflated'\n-0A47F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A47F6 CRC                   00000000 (0)\n-0A47FA Compressed Size       00000000 (0)\n-0A47FE Uncompressed Size     00000000 (0)\n-0A4802 Filename Length       0032 (50)\n-0A4804 Extra Length          0000 (0)\n-0A4806 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D52CC Compression Method    0008 (8) 'Deflated'\n+0D52CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D52D2 CRC                   00000000 (0)\n+0D52D6 Compressed Size       00000000 (0)\n+0D52DA Uncompressed Size     00000000 (0)\n+0D52DE Filename Length       0049 (73)\n+0D52E0 Extra Length          0000 (0)\n+0D52E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA4806: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD52E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A4838 PAYLOAD\n+0D532B PAYLOAD\n \n-0A5368 DATA DESCRIPTOR       08074B50 (134695760)\n-0A536C CRC                   49173B6A (1226259306)\n-0A5370 Compressed Size       00000B30 (2864)\n-0A5374 Uncompressed Size     00002D62 (11618)\n+0D58B8 DATA DESCRIPTOR       08074B50 (134695760)\n+0D58BC CRC                   F5209683 (4112553603)\n+0D58C0 Compressed Size       0000058D (1421)\n+0D58C4 Uncompressed Size     00001210 (4624)\n \n-0A5378 LOCAL HEADER #720     04034B50 (67324752)\n-0A537C Extract Zip Spec      14 (20) '2.0'\n-0A537D Extract OS            00 (0) 'MS-DOS'\n-0A537E General Purpose Flag  0808 (2056)\n+0D58C8 LOCAL HEADER #720     04034B50 (67324752)\n+0D58CC Extract Zip Spec      14 (20) '2.0'\n+0D58CD Extract OS            00 (0) 'MS-DOS'\n+0D58CE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A5380 Compression Method    0008 (8) 'Deflated'\n-0A5382 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A5386 CRC                   00000000 (0)\n-0A538A Compressed Size       00000000 (0)\n-0A538E Uncompressed Size     00000000 (0)\n-0A5392 Filename Length       0036 (54)\n-0A5394 Extra Length          0000 (0)\n-0A5396 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D58D0 Compression Method    0008 (8) 'Deflated'\n+0D58D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D58D6 CRC                   00000000 (0)\n+0D58DA Compressed Size       00000000 (0)\n+0D58DE Uncompressed Size     00000000 (0)\n+0D58E2 Filename Length       0024 (36)\n+0D58E4 Extra Length          0000 (0)\n+0D58E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA5396: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD58E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A53CC PAYLOAD\n+0D590A PAYLOAD               XX\n \n-0A5C91 DATA DESCRIPTOR       08074B50 (134695760)\n-0A5C95 CRC                   094FFA20 (156236320)\n-0A5C99 Compressed Size       000008C5 (2245)\n-0A5C9D Uncompressed Size     0000235E (9054)\n+0D590C DATA DESCRIPTOR       08074B50 (134695760)\n+0D5910 CRC                   00000000 (0)\n+0D5914 Compressed Size       00000002 (2)\n+0D5918 Uncompressed Size     00000000 (0)\n \n-0A5CA1 LOCAL HEADER #721     04034B50 (67324752)\n-0A5CA5 Extract Zip Spec      14 (20) '2.0'\n-0A5CA6 Extract OS            00 (0) 'MS-DOS'\n-0A5CA7 General Purpose Flag  0808 (2056)\n+0D591C LOCAL HEADER #721     04034B50 (67324752)\n+0D5920 Extract Zip Spec      14 (20) '2.0'\n+0D5921 Extract OS            00 (0) 'MS-DOS'\n+0D5922 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A5CA9 Compression Method    0008 (8) 'Deflated'\n-0A5CAB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A5CAF CRC                   00000000 (0)\n-0A5CB3 Compressed Size       00000000 (0)\n-0A5CB7 Uncompressed Size     00000000 (0)\n-0A5CBB Filename Length       0034 (52)\n-0A5CBD Extra Length          0000 (0)\n-0A5CBF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D5924 Compression Method    0008 (8) 'Deflated'\n+0D5926 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D592A CRC                   00000000 (0)\n+0D592E Compressed Size       00000000 (0)\n+0D5932 Uncompressed Size     00000000 (0)\n+0D5936 Filename Length       0038 (56)\n+0D5938 Extra Length          0000 (0)\n+0D593A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA5CBF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD593A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A5CF3 PAYLOAD\n+0D5972 PAYLOAD\n \n-0A6286 DATA DESCRIPTOR       08074B50 (134695760)\n-0A628A CRC                   0EFD7C48 (251493448)\n-0A628E Compressed Size       00000593 (1427)\n-0A6292 Uncompressed Size     000011C9 (4553)\n+0D5CC4 DATA DESCRIPTOR       08074B50 (134695760)\n+0D5CC8 CRC                   A7E27376 (2816635766)\n+0D5CCC Compressed Size       00000352 (850)\n+0D5CD0 Uncompressed Size     0000076D (1901)\n \n-0A6296 LOCAL HEADER #722     04034B50 (67324752)\n-0A629A Extract Zip Spec      14 (20) '2.0'\n-0A629B Extract OS            00 (0) 'MS-DOS'\n-0A629C General Purpose Flag  0808 (2056)\n+0D5CD4 LOCAL HEADER #722     04034B50 (67324752)\n+0D5CD8 Extract Zip Spec      14 (20) '2.0'\n+0D5CD9 Extract OS            00 (0) 'MS-DOS'\n+0D5CDA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A629E Compression Method    0008 (8) 'Deflated'\n-0A62A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A62A4 CRC                   00000000 (0)\n-0A62A8 Compressed Size       00000000 (0)\n-0A62AC Uncompressed Size     00000000 (0)\n-0A62B0 Filename Length       002E (46)\n-0A62B2 Extra Length          0000 (0)\n-0A62B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D5CDC Compression Method    0008 (8) 'Deflated'\n+0D5CDE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D5CE2 CRC                   00000000 (0)\n+0D5CE6 Compressed Size       00000000 (0)\n+0D5CEA Uncompressed Size     00000000 (0)\n+0D5CEE Filename Length       0047 (71)\n+0D5CF0 Extra Length          0000 (0)\n+0D5CF2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA62B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD5CF2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A62E2 PAYLOAD\n+0D5D39 PAYLOAD\n \n-0A6F58 DATA DESCRIPTOR       08074B50 (134695760)\n-0A6F5C CRC                   8CFD4A70 (2365409904)\n-0A6F60 Compressed Size       00000C76 (3190)\n-0A6F64 Uncompressed Size     00002FB5 (12213)\n+0D6065 DATA DESCRIPTOR       08074B50 (134695760)\n+0D6069 CRC                   28520740 (676464448)\n+0D606D Compressed Size       0000032C (812)\n+0D6071 Uncompressed Size     00000910 (2320)\n \n-0A6F68 LOCAL HEADER #723     04034B50 (67324752)\n-0A6F6C Extract Zip Spec      14 (20) '2.0'\n-0A6F6D Extract OS            00 (0) 'MS-DOS'\n-0A6F6E General Purpose Flag  0808 (2056)\n+0D6075 LOCAL HEADER #723     04034B50 (67324752)\n+0D6079 Extract Zip Spec      14 (20) '2.0'\n+0D607A Extract OS            00 (0) 'MS-DOS'\n+0D607B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A6F70 Compression Method    0008 (8) 'Deflated'\n-0A6F72 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A6F76 CRC                   00000000 (0)\n-0A6F7A Compressed Size       00000000 (0)\n-0A6F7E Uncompressed Size     00000000 (0)\n-0A6F82 Filename Length       002E (46)\n-0A6F84 Extra Length          0000 (0)\n-0A6F86 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D607D Compression Method    0008 (8) 'Deflated'\n+0D607F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D6083 CRC                   00000000 (0)\n+0D6087 Compressed Size       00000000 (0)\n+0D608B Uncompressed Size     00000000 (0)\n+0D608F Filename Length       0037 (55)\n+0D6091 Extra Length          0000 (0)\n+0D6093 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA6F86: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD6093: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A6FB4 PAYLOAD\n+0D60CA PAYLOAD\n \n-0A7327 DATA DESCRIPTOR       08074B50 (134695760)\n-0A732B CRC                   81A24999 (2174896537)\n-0A732F Compressed Size       00000373 (883)\n-0A7333 Uncompressed Size     000008A4 (2212)\n+0D6A6A DATA DESCRIPTOR       08074B50 (134695760)\n+0D6A6E CRC                   B8E0F8E9 (3101751529)\n+0D6A72 Compressed Size       000009A0 (2464)\n+0D6A76 Uncompressed Size     00002FAF (12207)\n \n-0A7337 LOCAL HEADER #724     04034B50 (67324752)\n-0A733B Extract Zip Spec      14 (20) '2.0'\n-0A733C Extract OS            00 (0) 'MS-DOS'\n-0A733D General Purpose Flag  0808 (2056)\n+0D6A7A LOCAL HEADER #724     04034B50 (67324752)\n+0D6A7E Extract Zip Spec      14 (20) '2.0'\n+0D6A7F Extract OS            00 (0) 'MS-DOS'\n+0D6A80 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A733F Compression Method    0008 (8) 'Deflated'\n-0A7341 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A7345 CRC                   00000000 (0)\n-0A7349 Compressed Size       00000000 (0)\n-0A734D Uncompressed Size     00000000 (0)\n-0A7351 Filename Length       0030 (48)\n-0A7353 Extra Length          0000 (0)\n-0A7355 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D6A82 Compression Method    0008 (8) 'Deflated'\n+0D6A84 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D6A88 CRC                   00000000 (0)\n+0D6A8C Compressed Size       00000000 (0)\n+0D6A90 Uncompressed Size     00000000 (0)\n+0D6A94 Filename Length       0036 (54)\n+0D6A96 Extra Length          0000 (0)\n+0D6A98 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA7355: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD6A98: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A7385 PAYLOAD\n+0D6ACE PAYLOAD\n \n-0A76F2 DATA DESCRIPTOR       08074B50 (134695760)\n-0A76F6 CRC                   831A7179 (2199548281)\n-0A76FA Compressed Size       0000036D (877)\n-0A76FE Uncompressed Size     0000080F (2063)\n+0D6FFC DATA DESCRIPTOR       08074B50 (134695760)\n+0D7000 CRC                   191CDF67 (421322599)\n+0D7004 Compressed Size       0000052E (1326)\n+0D7008 Uncompressed Size     00001001 (4097)\n \n-0A7702 LOCAL HEADER #725     04034B50 (67324752)\n-0A7706 Extract Zip Spec      14 (20) '2.0'\n-0A7707 Extract OS            00 (0) 'MS-DOS'\n-0A7708 General Purpose Flag  0808 (2056)\n+0D700C LOCAL HEADER #725     04034B50 (67324752)\n+0D7010 Extract Zip Spec      14 (20) '2.0'\n+0D7011 Extract OS            00 (0) 'MS-DOS'\n+0D7012 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A770A Compression Method    0008 (8) 'Deflated'\n-0A770C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A7710 CRC                   00000000 (0)\n-0A7714 Compressed Size       00000000 (0)\n-0A7718 Uncompressed Size     00000000 (0)\n-0A771C Filename Length       002F (47)\n-0A771E Extra Length          0000 (0)\n-0A7720 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D7014 Compression Method    0008 (8) 'Deflated'\n+0D7016 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D701A CRC                   00000000 (0)\n+0D701E Compressed Size       00000000 (0)\n+0D7022 Uncompressed Size     00000000 (0)\n+0D7026 Filename Length       0039 (57)\n+0D7028 Extra Length          0000 (0)\n+0D702A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA7720: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD702A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A774F PAYLOAD\n+0D7063 PAYLOAD\n \n-0A7D92 DATA DESCRIPTOR       08074B50 (134695760)\n-0A7D96 CRC                   7319AF3E (1931063102)\n-0A7D9A Compressed Size       00000643 (1603)\n-0A7D9E Uncompressed Size     0000143D (5181)\n+0D756E DATA DESCRIPTOR       08074B50 (134695760)\n+0D7572 CRC                   D94EDD2B (3645824299)\n+0D7576 Compressed Size       0000050B (1291)\n+0D757A Uncompressed Size     0000108B (4235)\n \n-0A7DA2 LOCAL HEADER #726     04034B50 (67324752)\n-0A7DA6 Extract Zip Spec      14 (20) '2.0'\n-0A7DA7 Extract OS            00 (0) 'MS-DOS'\n-0A7DA8 General Purpose Flag  0808 (2056)\n+0D757E LOCAL HEADER #726     04034B50 (67324752)\n+0D7582 Extract Zip Spec      14 (20) '2.0'\n+0D7583 Extract OS            00 (0) 'MS-DOS'\n+0D7584 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A7DAA Compression Method    0008 (8) 'Deflated'\n-0A7DAC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A7DB0 CRC                   00000000 (0)\n-0A7DB4 Compressed Size       00000000 (0)\n-0A7DB8 Uncompressed Size     00000000 (0)\n-0A7DBC Filename Length       002D (45)\n-0A7DBE Extra Length          0000 (0)\n-0A7DC0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D7586 Compression Method    0008 (8) 'Deflated'\n+0D7588 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D758C CRC                   00000000 (0)\n+0D7590 Compressed Size       00000000 (0)\n+0D7594 Uncompressed Size     00000000 (0)\n+0D7598 Filename Length       0035 (53)\n+0D759A Extra Length          0000 (0)\n+0D759C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA7DC0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD759C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A7DED PAYLOAD\n+0D75D1 PAYLOAD\n \n-0A82B2 DATA DESCRIPTOR       08074B50 (134695760)\n-0A82B6 CRC                   D07CEF7E (3497848702)\n-0A82BA Compressed Size       000004C5 (1221)\n-0A82BE Uncompressed Size     00001341 (4929)\n+0D7A9C DATA DESCRIPTOR       08074B50 (134695760)\n+0D7AA0 CRC                   C397571B (3281475355)\n+0D7AA4 Compressed Size       000004CB (1227)\n+0D7AA8 Uncompressed Size     00001058 (4184)\n \n-0A82C2 LOCAL HEADER #727     04034B50 (67324752)\n-0A82C6 Extract Zip Spec      14 (20) '2.0'\n-0A82C7 Extract OS            00 (0) 'MS-DOS'\n-0A82C8 General Purpose Flag  0808 (2056)\n+0D7AAC LOCAL HEADER #727     04034B50 (67324752)\n+0D7AB0 Extract Zip Spec      14 (20) '2.0'\n+0D7AB1 Extract OS            00 (0) 'MS-DOS'\n+0D7AB2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A82CA Compression Method    0008 (8) 'Deflated'\n-0A82CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A82D0 CRC                   00000000 (0)\n-0A82D4 Compressed Size       00000000 (0)\n-0A82D8 Uncompressed Size     00000000 (0)\n-0A82DC Filename Length       0029 (41)\n-0A82DE Extra Length          0000 (0)\n-0A82E0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D7AB4 Compression Method    0008 (8) 'Deflated'\n+0D7AB6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D7ABA CRC                   00000000 (0)\n+0D7ABE Compressed Size       00000000 (0)\n+0D7AC2 Uncompressed Size     00000000 (0)\n+0D7AC6 Filename Length       0037 (55)\n+0D7AC8 Extra Length          0000 (0)\n+0D7ACA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA82E0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD7ACA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A8309 PAYLOAD\n+0D7B01 PAYLOAD\n \n-0A8557 DATA DESCRIPTOR       08074B50 (134695760)\n-0A855B CRC                   4E3FC833 (1312802867)\n-0A855F Compressed Size       0000024E (590)\n-0A8563 Uncompressed Size     00000443 (1091)\n+0D8301 DATA DESCRIPTOR       08074B50 (134695760)\n+0D8305 CRC                   9B1DD286 (2602422918)\n+0D8309 Compressed Size       00000800 (2048)\n+0D830D Uncompressed Size     00001CC3 (7363)\n \n-0A8567 LOCAL HEADER #728     04034B50 (67324752)\n-0A856B Extract Zip Spec      14 (20) '2.0'\n-0A856C Extract OS            00 (0) 'MS-DOS'\n-0A856D General Purpose Flag  0808 (2056)\n+0D8311 LOCAL HEADER #728     04034B50 (67324752)\n+0D8315 Extract Zip Spec      14 (20) '2.0'\n+0D8316 Extract OS            00 (0) 'MS-DOS'\n+0D8317 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A856F Compression Method    0008 (8) 'Deflated'\n-0A8571 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A8575 CRC                   00000000 (0)\n-0A8579 Compressed Size       00000000 (0)\n-0A857D Uncompressed Size     00000000 (0)\n-0A8581 Filename Length       002A (42)\n-0A8583 Extra Length          0000 (0)\n-0A8585 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D8319 Compression Method    0008 (8) 'Deflated'\n+0D831B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D831F CRC                   00000000 (0)\n+0D8323 Compressed Size       00000000 (0)\n+0D8327 Uncompressed Size     00000000 (0)\n+0D832B Filename Length       0038 (56)\n+0D832D Extra Length          0000 (0)\n+0D832F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA8585: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD832F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A85AF PAYLOAD\n+0D8367 PAYLOAD\n \n-0A8DC4 DATA DESCRIPTOR       08074B50 (134695760)\n-0A8DC8 CRC                   7A9C058A (2057045386)\n-0A8DCC Compressed Size       00000815 (2069)\n-0A8DD0 Uncompressed Size     00002117 (8471)\n+0D8719 DATA DESCRIPTOR       08074B50 (134695760)\n+0D871D CRC                   8ED687AA (2396424106)\n+0D8721 Compressed Size       000003B2 (946)\n+0D8725 Uncompressed Size     00000C9B (3227)\n \n-0A8DD4 LOCAL HEADER #729     04034B50 (67324752)\n-0A8DD8 Extract Zip Spec      14 (20) '2.0'\n-0A8DD9 Extract OS            00 (0) 'MS-DOS'\n-0A8DDA General Purpose Flag  0808 (2056)\n+0D8729 LOCAL HEADER #729     04034B50 (67324752)\n+0D872D Extract Zip Spec      14 (20) '2.0'\n+0D872E Extract OS            00 (0) 'MS-DOS'\n+0D872F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A8DDC Compression Method    0008 (8) 'Deflated'\n-0A8DDE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A8DE2 CRC                   00000000 (0)\n-0A8DE6 Compressed Size       00000000 (0)\n-0A8DEA Uncompressed Size     00000000 (0)\n-0A8DEE Filename Length       002A (42)\n-0A8DF0 Extra Length          0000 (0)\n-0A8DF2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D8731 Compression Method    0008 (8) 'Deflated'\n+0D8733 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D8737 CRC                   00000000 (0)\n+0D873B Compressed Size       00000000 (0)\n+0D873F Uncompressed Size     00000000 (0)\n+0D8743 Filename Length       003E (62)\n+0D8745 Extra Length          0000 (0)\n+0D8747 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA8DF2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD8747: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A8E1C PAYLOAD\n+0D8785 PAYLOAD\n \n-0A931A DATA DESCRIPTOR       08074B50 (134695760)\n-0A931E CRC                   A4F19F22 (2767298338)\n-0A9322 Compressed Size       000004FE (1278)\n-0A9326 Uncompressed Size     0000104C (4172)\n+0D8A0F DATA DESCRIPTOR       08074B50 (134695760)\n+0D8A13 CRC                   3E4334ED (1044591853)\n+0D8A17 Compressed Size       0000028A (650)\n+0D8A1B Uncompressed Size     0000066A (1642)\n \n-0A932A LOCAL HEADER #730     04034B50 (67324752)\n-0A932E Extract Zip Spec      14 (20) '2.0'\n-0A932F Extract OS            00 (0) 'MS-DOS'\n-0A9330 General Purpose Flag  0808 (2056)\n+0D8A1F LOCAL HEADER #730     04034B50 (67324752)\n+0D8A23 Extract Zip Spec      14 (20) '2.0'\n+0D8A24 Extract OS            00 (0) 'MS-DOS'\n+0D8A25 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A9332 Compression Method    0008 (8) 'Deflated'\n-0A9334 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A9338 CRC                   00000000 (0)\n-0A933C Compressed Size       00000000 (0)\n-0A9340 Uncompressed Size     00000000 (0)\n-0A9344 Filename Length       002B (43)\n-0A9346 Extra Length          0000 (0)\n-0A9348 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D8A27 Compression Method    0008 (8) 'Deflated'\n+0D8A29 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D8A2D CRC                   00000000 (0)\n+0D8A31 Compressed Size       00000000 (0)\n+0D8A35 Uncompressed Size     00000000 (0)\n+0D8A39 Filename Length       003F (63)\n+0D8A3B Extra Length          0000 (0)\n+0D8A3D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA9348: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD8A3D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A9373 PAYLOAD\n+0D8A7C PAYLOAD\n \n-0A9CC0 DATA DESCRIPTOR       08074B50 (134695760)\n-0A9CC4 CRC                   E7A31A4E (3886225998)\n-0A9CC8 Compressed Size       0000094D (2381)\n-0A9CCC Uncompressed Size     00002166 (8550)\n+0D8CA3 DATA DESCRIPTOR       08074B50 (134695760)\n+0D8CA7 CRC                   1F076089 (520577161)\n+0D8CAB Compressed Size       00000227 (551)\n+0D8CAF Uncompressed Size     000003FD (1021)\n \n-0A9CD0 LOCAL HEADER #731     04034B50 (67324752)\n-0A9CD4 Extract Zip Spec      14 (20) '2.0'\n-0A9CD5 Extract OS            00 (0) 'MS-DOS'\n-0A9CD6 General Purpose Flag  0808 (2056)\n+0D8CB3 LOCAL HEADER #731     04034B50 (67324752)\n+0D8CB7 Extract Zip Spec      14 (20) '2.0'\n+0D8CB8 Extract OS            00 (0) 'MS-DOS'\n+0D8CB9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0A9CD8 Compression Method    0008 (8) 'Deflated'\n-0A9CDA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0A9CDE CRC                   00000000 (0)\n-0A9CE2 Compressed Size       00000000 (0)\n-0A9CE6 Uncompressed Size     00000000 (0)\n-0A9CEA Filename Length       002B (43)\n-0A9CEC Extra Length          0000 (0)\n-0A9CEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D8CBB Compression Method    0008 (8) 'Deflated'\n+0D8CBD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D8CC1 CRC                   00000000 (0)\n+0D8CC5 Compressed Size       00000000 (0)\n+0D8CC9 Uncompressed Size     00000000 (0)\n+0D8CCD Filename Length       0041 (65)\n+0D8CCF Extra Length          0000 (0)\n+0D8CD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xA9CEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD8CD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0A9D19 PAYLOAD\n+0D8D12 PAYLOAD\n \n-0AA0F8 DATA DESCRIPTOR       08074B50 (134695760)\n-0AA0FC CRC                   139F375C (329201500)\n-0AA100 Compressed Size       000003DF (991)\n-0AA104 Uncompressed Size     00000BC2 (3010)\n+0D911A DATA DESCRIPTOR       08074B50 (134695760)\n+0D911E CRC                   63B69239 (1672909369)\n+0D9122 Compressed Size       00000408 (1032)\n+0D9126 Uncompressed Size     00000F7F (3967)\n \n-0AA108 LOCAL HEADER #732     04034B50 (67324752)\n-0AA10C Extract Zip Spec      14 (20) '2.0'\n-0AA10D Extract OS            00 (0) 'MS-DOS'\n-0AA10E General Purpose Flag  0808 (2056)\n+0D912A LOCAL HEADER #732     04034B50 (67324752)\n+0D912E Extract Zip Spec      14 (20) '2.0'\n+0D912F Extract OS            00 (0) 'MS-DOS'\n+0D9130 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0AA110 Compression Method    0008 (8) 'Deflated'\n-0AA112 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0AA116 CRC                   00000000 (0)\n-0AA11A Compressed Size       00000000 (0)\n-0AA11E Uncompressed Size     00000000 (0)\n-0AA122 Filename Length       0026 (38)\n-0AA124 Extra Length          0000 (0)\n-0AA126 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D9132 Compression Method    0008 (8) 'Deflated'\n+0D9134 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D9138 CRC                   00000000 (0)\n+0D913C Compressed Size       00000000 (0)\n+0D9140 Uncompressed Size     00000000 (0)\n+0D9144 Filename Length       0037 (55)\n+0D9146 Extra Length          0000 (0)\n+0D9148 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xAA126: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD9148: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0AA14C PAYLOAD\n+0D917F PAYLOAD\n \n-0AA55B DATA DESCRIPTOR       08074B50 (134695760)\n-0AA55F CRC                   C39767CB (3281479627)\n-0AA563 Compressed Size       0000040F (1039)\n-0AA567 Uncompressed Size     00000DAA (3498)\n+0D9584 DATA DESCRIPTOR       08074B50 (134695760)\n+0D9588 CRC                   DB6423CF (3680773071)\n+0D958C Compressed Size       00000405 (1029)\n+0D9590 Uncompressed Size     00000DEE (3566)\n \n-0AA56B LOCAL HEADER #733     04034B50 (67324752)\n-0AA56F Extract Zip Spec      14 (20) '2.0'\n-0AA570 Extract OS            00 (0) 'MS-DOS'\n-0AA571 General Purpose Flag  0808 (2056)\n+0D9594 LOCAL HEADER #733     04034B50 (67324752)\n+0D9598 Extract Zip Spec      14 (20) '2.0'\n+0D9599 Extract OS            00 (0) 'MS-DOS'\n+0D959A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0AA573 Compression Method    0008 (8) 'Deflated'\n-0AA575 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0AA579 CRC                   00000000 (0)\n-0AA57D Compressed Size       00000000 (0)\n-0AA581 Uncompressed Size     00000000 (0)\n-0AA585 Filename Length       002C (44)\n-0AA587 Extra Length          0000 (0)\n-0AA589 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D959C Compression Method    0008 (8) 'Deflated'\n+0D959E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D95A2 CRC                   00000000 (0)\n+0D95A6 Compressed Size       00000000 (0)\n+0D95AA Uncompressed Size     00000000 (0)\n+0D95AE Filename Length       0035 (53)\n+0D95B0 Extra Length          0000 (0)\n+0D95B2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xAA589: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD95B2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0AA5B5 PAYLOAD\n+0D95E7 PAYLOAD\n \n-0AA8BC DATA DESCRIPTOR       08074B50 (134695760)\n-0AA8C0 CRC                   0C719C80 (208772224)\n-0AA8C4 Compressed Size       00000307 (775)\n-0AA8C8 Uncompressed Size     000010C1 (4289)\n+0D9F0F DATA DESCRIPTOR       08074B50 (134695760)\n+0D9F13 CRC                   79B32E36 (2041785910)\n+0D9F17 Compressed Size       00000928 (2344)\n+0D9F1B Uncompressed Size     00001E8F (7823)\n \n-0AA8CC LOCAL HEADER #734     04034B50 (67324752)\n-0AA8D0 Extract Zip Spec      14 (20) '2.0'\n-0AA8D1 Extract OS            00 (0) 'MS-DOS'\n-0AA8D2 General Purpose Flag  0808 (2056)\n+0D9F1F LOCAL HEADER #734     04034B50 (67324752)\n+0D9F23 Extract Zip Spec      14 (20) '2.0'\n+0D9F24 Extract OS            00 (0) 'MS-DOS'\n+0D9F25 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0AA8D4 Compression Method    0008 (8) 'Deflated'\n-0AA8D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0AA8DA CRC                   00000000 (0)\n-0AA8DE Compressed Size       00000000 (0)\n-0AA8E2 Uncompressed Size     00000000 (0)\n-0AA8E6 Filename Length       002A (42)\n-0AA8E8 Extra Length          0000 (0)\n-0AA8EA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0D9F27 Compression Method    0008 (8) 'Deflated'\n+0D9F29 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0D9F2D CRC                   00000000 (0)\n+0D9F31 Compressed Size       00000000 (0)\n+0D9F35 Uncompressed Size     00000000 (0)\n+0D9F39 Filename Length       0036 (54)\n+0D9F3B Extra Length          0000 (0)\n+0D9F3D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xAA8EA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xD9F3D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0AA914 PAYLOAD\n+0D9F73 PAYLOAD\n \n-0AAD55 DATA DESCRIPTOR       08074B50 (134695760)\n-0AAD59 CRC                   4A73FA6D (1249114733)\n-0AAD5D Compressed Size       00000441 (1089)\n-0AAD61 Uncompressed Size     000010A2 (4258)\n+0DA338 DATA DESCRIPTOR       08074B50 (134695760)\n+0DA33C CRC                   5F8B1DE8 (1602952680)\n+0DA340 Compressed Size       000003C5 (965)\n+0DA344 Uncompressed Size     00000A0E (2574)\n \n-0AAD65 LOCAL HEADER #735     04034B50 (67324752)\n-0AAD69 Extract Zip Spec      14 (20) '2.0'\n-0AAD6A Extract OS            00 (0) 'MS-DOS'\n-0AAD6B General Purpose Flag  0808 (2056)\n+0DA348 LOCAL HEADER #735     04034B50 (67324752)\n+0DA34C Extract Zip Spec      14 (20) '2.0'\n+0DA34D Extract OS            00 (0) 'MS-DOS'\n+0DA34E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0AAD6D Compression Method    0008 (8) 'Deflated'\n-0AAD6F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0AAD73 CRC                   00000000 (0)\n-0AAD77 Compressed Size       00000000 (0)\n-0AAD7B Uncompressed Size     00000000 (0)\n-0AAD7F Filename Length       002E (46)\n-0AAD81 Extra Length          0000 (0)\n-0AAD83 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DA350 Compression Method    0008 (8) 'Deflated'\n+0DA352 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DA356 CRC                   00000000 (0)\n+0DA35A Compressed Size       00000000 (0)\n+0DA35E Uncompressed Size     00000000 (0)\n+0DA362 Filename Length       0044 (68)\n+0DA364 Extra Length          0000 (0)\n+0DA366 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xAAD83: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDA366: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0AADB1 PAYLOAD\n+0DA3AA PAYLOAD\n \n-0AB0DF DATA DESCRIPTOR       08074B50 (134695760)\n-0AB0E3 CRC                   7D5526CA (2102732490)\n-0AB0E7 Compressed Size       0000032E (814)\n-0AB0EB Uncompressed Size     00000960 (2400)\n+0DA622 DATA DESCRIPTOR       08074B50 (134695760)\n+0DA626 CRC                   D9BD9D3A (3653082426)\n+0DA62A Compressed Size       00000278 (632)\n+0DA62E Uncompressed Size     00000469 (1129)\n \n-0AB0EF LOCAL HEADER #736     04034B50 (67324752)\n-0AB0F3 Extract Zip Spec      14 (20) '2.0'\n-0AB0F4 Extract OS            00 (0) 'MS-DOS'\n-0AB0F5 General Purpose Flag  0808 (2056)\n+0DA632 LOCAL HEADER #736     04034B50 (67324752)\n+0DA636 Extract Zip Spec      14 (20) '2.0'\n+0DA637 Extract OS            00 (0) 'MS-DOS'\n+0DA638 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0AB0F7 Compression Method    0008 (8) 'Deflated'\n-0AB0F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0AB0FD CRC                   00000000 (0)\n-0AB101 Compressed Size       00000000 (0)\n-0AB105 Uncompressed Size     00000000 (0)\n-0AB109 Filename Length       0033 (51)\n-0AB10B Extra Length          0000 (0)\n-0AB10D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DA63A Compression Method    0008 (8) 'Deflated'\n+0DA63C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DA640 CRC                   00000000 (0)\n+0DA644 Compressed Size       00000000 (0)\n+0DA648 Uncompressed Size     00000000 (0)\n+0DA64C Filename Length       003C (60)\n+0DA64E Extra Length          0000 (0)\n+0DA650 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xAB10D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDA650: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0AB140 PAYLOAD\n+0DA68C PAYLOAD\n \n-0AB529 DATA DESCRIPTOR       08074B50 (134695760)\n-0AB52D CRC                   3C2ED9BE (1009703358)\n-0AB531 Compressed Size       000003E9 (1001)\n-0AB535 Uncompressed Size     00000939 (2361)\n+0DA98A DATA DESCRIPTOR       08074B50 (134695760)\n+0DA98E CRC                   78792D26 (2021207334)\n+0DA992 Compressed Size       000002FE (766)\n+0DA996 Uncompressed Size     000006B5 (1717)\n \n-0AB539 LOCAL HEADER #737     04034B50 (67324752)\n-0AB53D Extract Zip Spec      14 (20) '2.0'\n-0AB53E Extract OS            00 (0) 'MS-DOS'\n-0AB53F General Purpose Flag  0808 (2056)\n+0DA99A LOCAL HEADER #737     04034B50 (67324752)\n+0DA99E Extract Zip Spec      14 (20) '2.0'\n+0DA99F Extract OS            00 (0) 'MS-DOS'\n+0DA9A0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0AB541 Compression Method    0008 (8) 'Deflated'\n-0AB543 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0AB547 CRC                   00000000 (0)\n-0AB54B Compressed Size       00000000 (0)\n-0AB54F Uncompressed Size     00000000 (0)\n-0AB553 Filename Length       002E (46)\n-0AB555 Extra Length          0000 (0)\n-0AB557 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DA9A2 Compression Method    0008 (8) 'Deflated'\n+0DA9A4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DA9A8 CRC                   00000000 (0)\n+0DA9AC Compressed Size       00000000 (0)\n+0DA9B0 Uncompressed Size     00000000 (0)\n+0DA9B4 Filename Length       0037 (55)\n+0DA9B6 Extra Length          0000 (0)\n+0DA9B8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xAB557: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDA9B8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0AB585 PAYLOAD\n+0DA9EF PAYLOAD\n \n-0AC20B DATA DESCRIPTOR       08074B50 (134695760)\n-0AC20F CRC                   BA95C40E (3130377230)\n-0AC213 Compressed Size       00000C86 (3206)\n-0AC217 Uncompressed Size     000039CB (14795)\n+0DADB4 DATA DESCRIPTOR       08074B50 (134695760)\n+0DADB8 CRC                   A9090E7C (2835943036)\n+0DADBC Compressed Size       000003C5 (965)\n+0DADC0 Uncompressed Size     00000C45 (3141)\n \n-0AC21B LOCAL HEADER #738     04034B50 (67324752)\n-0AC21F Extract Zip Spec      14 (20) '2.0'\n-0AC220 Extract OS            00 (0) 'MS-DOS'\n-0AC221 General Purpose Flag  0808 (2056)\n+0DADC4 LOCAL HEADER #738     04034B50 (67324752)\n+0DADC8 Extract Zip Spec      14 (20) '2.0'\n+0DADC9 Extract OS            00 (0) 'MS-DOS'\n+0DADCA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0AC223 Compression Method    0008 (8) 'Deflated'\n-0AC225 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0AC229 CRC                   00000000 (0)\n-0AC22D Compressed Size       00000000 (0)\n-0AC231 Uncompressed Size     00000000 (0)\n-0AC235 Filename Length       0035 (53)\n-0AC237 Extra Length          0000 (0)\n-0AC239 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DADCC Compression Method    0008 (8) 'Deflated'\n+0DADCE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DADD2 CRC                   00000000 (0)\n+0DADD6 Compressed Size       00000000 (0)\n+0DADDA Uncompressed Size     00000000 (0)\n+0DADDE Filename Length       002A (42)\n+0DADE0 Extra Length          0000 (0)\n+0DADE2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xAC239: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDADE2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0AC26E PAYLOAD\n+0DAE0C PAYLOAD               XX\n \n-0AC5F4 DATA DESCRIPTOR       08074B50 (134695760)\n-0AC5F8 CRC                   A4EA9AD2 (2766838482)\n-0AC5FC Compressed Size       00000386 (902)\n-0AC600 Uncompressed Size     0000085B (2139)\n+0DAE0E DATA DESCRIPTOR       08074B50 (134695760)\n+0DAE12 CRC                   00000000 (0)\n+0DAE16 Compressed Size       00000002 (2)\n+0DAE1A Uncompressed Size     00000000 (0)\n \n-0AC604 LOCAL HEADER #739     04034B50 (67324752)\n-0AC608 Extract Zip Spec      14 (20) '2.0'\n-0AC609 Extract OS            00 (0) 'MS-DOS'\n-0AC60A General Purpose Flag  0808 (2056)\n+0DAE1E LOCAL HEADER #739     04034B50 (67324752)\n+0DAE22 Extract Zip Spec      14 (20) '2.0'\n+0DAE23 Extract OS            00 (0) 'MS-DOS'\n+0DAE24 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0AC60C Compression Method    0008 (8) 'Deflated'\n-0AC60E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0AC612 CRC                   00000000 (0)\n-0AC616 Compressed Size       00000000 (0)\n-0AC61A Uncompressed Size     00000000 (0)\n-0AC61E Filename Length       002B (43)\n-0AC620 Extra Length          0000 (0)\n-0AC622 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DAE26 Compression Method    0008 (8) 'Deflated'\n+0DAE28 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DAE2C CRC                   00000000 (0)\n+0DAE30 Compressed Size       00000000 (0)\n+0DAE34 Uncompressed Size     00000000 (0)\n+0DAE38 Filename Length       003B (59)\n+0DAE3A Extra Length          0000 (0)\n+0DAE3C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xAC622: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDAE3C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0AC64D PAYLOAD\n+0DAE77 PAYLOAD\n \n-0ADA68 DATA DESCRIPTOR       08074B50 (134695760)\n-0ADA6C CRC                   90514D51 (2421247313)\n-0ADA70 Compressed Size       0000141B (5147)\n-0ADA74 Uncompressed Size     00005DC7 (24007)\n+0DB22A DATA DESCRIPTOR       08074B50 (134695760)\n+0DB22E CRC                   101D85B9 (270370233)\n+0DB232 Compressed Size       000003B3 (947)\n+0DB236 Uncompressed Size     0000094B (2379)\n \n-0ADA78 LOCAL HEADER #740     04034B50 (67324752)\n-0ADA7C Extract Zip Spec      14 (20) '2.0'\n-0ADA7D Extract OS            00 (0) 'MS-DOS'\n-0ADA7E General Purpose Flag  0808 (2056)\n+0DB23A LOCAL HEADER #740     04034B50 (67324752)\n+0DB23E Extract Zip Spec      14 (20) '2.0'\n+0DB23F Extract OS            00 (0) 'MS-DOS'\n+0DB240 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0ADA80 Compression Method    0008 (8) 'Deflated'\n-0ADA82 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0ADA86 CRC                   00000000 (0)\n-0ADA8A Compressed Size       00000000 (0)\n-0ADA8E Uncompressed Size     00000000 (0)\n-0ADA92 Filename Length       0027 (39)\n-0ADA94 Extra Length          0000 (0)\n-0ADA96 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DB242 Compression Method    0008 (8) 'Deflated'\n+0DB244 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DB248 CRC                   00000000 (0)\n+0DB24C Compressed Size       00000000 (0)\n+0DB250 Uncompressed Size     00000000 (0)\n+0DB254 Filename Length       003D (61)\n+0DB256 Extra Length          0000 (0)\n+0DB258 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xADA96: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDB258: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0ADABD PAYLOAD\n+0DB295 PAYLOAD\n \n-0ADE1F DATA DESCRIPTOR       08074B50 (134695760)\n-0ADE23 CRC                   6148ED28 (1632169256)\n-0ADE27 Compressed Size       00000362 (866)\n-0ADE2B Uncompressed Size     00000813 (2067)\n+0DB6E7 DATA DESCRIPTOR       08074B50 (134695760)\n+0DB6EB CRC                   7EE6D15A (2129056090)\n+0DB6EF Compressed Size       00000452 (1106)\n+0DB6F3 Uncompressed Size     00000D5E (3422)\n \n-0ADE2F LOCAL HEADER #741     04034B50 (67324752)\n-0ADE33 Extract Zip Spec      14 (20) '2.0'\n-0ADE34 Extract OS            00 (0) 'MS-DOS'\n-0ADE35 General Purpose Flag  0808 (2056)\n+0DB6F7 LOCAL HEADER #741     04034B50 (67324752)\n+0DB6FB Extract Zip Spec      14 (20) '2.0'\n+0DB6FC Extract OS            00 (0) 'MS-DOS'\n+0DB6FD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0ADE37 Compression Method    0008 (8) 'Deflated'\n-0ADE39 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0ADE3D CRC                   00000000 (0)\n-0ADE41 Compressed Size       00000000 (0)\n-0ADE45 Uncompressed Size     00000000 (0)\n-0ADE49 Filename Length       002C (44)\n-0ADE4B Extra Length          0000 (0)\n-0ADE4D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DB6FF Compression Method    0008 (8) 'Deflated'\n+0DB701 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DB705 CRC                   00000000 (0)\n+0DB709 Compressed Size       00000000 (0)\n+0DB70D Uncompressed Size     00000000 (0)\n+0DB711 Filename Length       002F (47)\n+0DB713 Extra Length          0000 (0)\n+0DB715 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xADE4D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDB715: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0ADE79 PAYLOAD\n+0DB744 PAYLOAD               XX\n \n-0AE268 DATA DESCRIPTOR       08074B50 (134695760)\n-0AE26C CRC                   32B357AB (850614187)\n-0AE270 Compressed Size       000003EF (1007)\n-0AE274 Uncompressed Size     0000095A (2394)\n+0DB746 DATA DESCRIPTOR       08074B50 (134695760)\n+0DB74A CRC                   00000000 (0)\n+0DB74E Compressed Size       00000002 (2)\n+0DB752 Uncompressed Size     00000000 (0)\n \n-0AE278 LOCAL HEADER #742     04034B50 (67324752)\n-0AE27C Extract Zip Spec      14 (20) '2.0'\n-0AE27D Extract OS            00 (0) 'MS-DOS'\n-0AE27E General Purpose Flag  0808 (2056)\n+0DB756 LOCAL HEADER #742     04034B50 (67324752)\n+0DB75A Extract Zip Spec      14 (20) '2.0'\n+0DB75B Extract OS            00 (0) 'MS-DOS'\n+0DB75C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0AE280 Compression Method    0008 (8) 'Deflated'\n-0AE282 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0AE286 CRC                   00000000 (0)\n-0AE28A Compressed Size       00000000 (0)\n-0AE28E Uncompressed Size     00000000 (0)\n-0AE292 Filename Length       002C (44)\n-0AE294 Extra Length          0000 (0)\n-0AE296 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DB75E Compression Method    0008 (8) 'Deflated'\n+0DB760 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DB764 CRC                   00000000 (0)\n+0DB768 Compressed Size       00000000 (0)\n+0DB76C Uncompressed Size     00000000 (0)\n+0DB770 Filename Length       0048 (72)\n+0DB772 Extra Length          0000 (0)\n+0DB774 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xAE296: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDB774: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0AE2C2 PAYLOAD\n+0DB7BC PAYLOAD\n \n-0AFCA9 DATA DESCRIPTOR       08074B50 (134695760)\n-0AFCAD CRC                   34D97477 (886666359)\n-0AFCB1 Compressed Size       000019E7 (6631)\n-0AFCB5 Uncompressed Size     00008320 (33568)\n+0DBC2D DATA DESCRIPTOR       08074B50 (134695760)\n+0DBC31 CRC                   A053D891 (2689849489)\n+0DBC35 Compressed Size       00000471 (1137)\n+0DBC39 Uncompressed Size     00001205 (4613)\n \n-0AFCB9 LOCAL HEADER #743     04034B50 (67324752)\n-0AFCBD Extract Zip Spec      14 (20) '2.0'\n-0AFCBE Extract OS            00 (0) 'MS-DOS'\n-0AFCBF General Purpose Flag  0808 (2056)\n+0DBC3D LOCAL HEADER #743     04034B50 (67324752)\n+0DBC41 Extract Zip Spec      14 (20) '2.0'\n+0DBC42 Extract OS            00 (0) 'MS-DOS'\n+0DBC43 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0AFCC1 Compression Method    0008 (8) 'Deflated'\n-0AFCC3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0AFCC7 CRC                   00000000 (0)\n-0AFCCB Compressed Size       00000000 (0)\n-0AFCCF Uncompressed Size     00000000 (0)\n-0AFCD3 Filename Length       002F (47)\n-0AFCD5 Extra Length          0000 (0)\n-0AFCD7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DBC45 Compression Method    0008 (8) 'Deflated'\n+0DBC47 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DBC4B CRC                   00000000 (0)\n+0DBC4F Compressed Size       00000000 (0)\n+0DBC53 Uncompressed Size     00000000 (0)\n+0DBC57 Filename Length       0043 (67)\n+0DBC59 Extra Length          0000 (0)\n+0DBC5B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xAFCD7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDBC5B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0AFD06 PAYLOAD\n+0DBC9E PAYLOAD\n \n-0B1D5C DATA DESCRIPTOR       08074B50 (134695760)\n-0B1D60 CRC                   6788144F (1736971343)\n-0B1D64 Compressed Size       00002056 (8278)\n-0B1D68 Uncompressed Size     0000B91D (47389)\n+0DBFBC DATA DESCRIPTOR       08074B50 (134695760)\n+0DBFC0 CRC                   F077FE2F (4034395695)\n+0DBFC4 Compressed Size       0000031E (798)\n+0DBFC8 Uncompressed Size     000007C3 (1987)\n \n-0B1D6C LOCAL HEADER #744     04034B50 (67324752)\n-0B1D70 Extract Zip Spec      14 (20) '2.0'\n-0B1D71 Extract OS            00 (0) 'MS-DOS'\n-0B1D72 General Purpose Flag  0808 (2056)\n+0DBFCC LOCAL HEADER #744     04034B50 (67324752)\n+0DBFD0 Extract Zip Spec      14 (20) '2.0'\n+0DBFD1 Extract OS            00 (0) 'MS-DOS'\n+0DBFD2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0B1D74 Compression Method    0008 (8) 'Deflated'\n-0B1D76 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0B1D7A CRC                   00000000 (0)\n-0B1D7E Compressed Size       00000000 (0)\n-0B1D82 Uncompressed Size     00000000 (0)\n-0B1D86 Filename Length       0038 (56)\n-0B1D88 Extra Length          0000 (0)\n-0B1D8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DBFD4 Compression Method    0008 (8) 'Deflated'\n+0DBFD6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DBFDA CRC                   00000000 (0)\n+0DBFDE Compressed Size       00000000 (0)\n+0DBFE2 Uncompressed Size     00000000 (0)\n+0DBFE6 Filename Length       0049 (73)\n+0DBFE8 Extra Length          0000 (0)\n+0DBFEA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xB1D8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDBFEA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0B1DC2 PAYLOAD\n+0DC033 PAYLOAD\n \n-0B2520 DATA DESCRIPTOR       08074B50 (134695760)\n-0B2524 CRC                   9D4E3C73 (2639150195)\n-0B2528 Compressed Size       0000075E (1886)\n-0B252C Uncompressed Size     00001707 (5895)\n+0DC6CF DATA DESCRIPTOR       08074B50 (134695760)\n+0DC6D3 CRC                   1DD7EFDF (500690911)\n+0DC6D7 Compressed Size       0000069C (1692)\n+0DC6DB Uncompressed Size     0000154F (5455)\n \n-0B2530 LOCAL HEADER #745     04034B50 (67324752)\n-0B2534 Extract Zip Spec      14 (20) '2.0'\n-0B2535 Extract OS            00 (0) 'MS-DOS'\n-0B2536 General Purpose Flag  0808 (2056)\n+0DC6DF LOCAL HEADER #745     04034B50 (67324752)\n+0DC6E3 Extract Zip Spec      14 (20) '2.0'\n+0DC6E4 Extract OS            00 (0) 'MS-DOS'\n+0DC6E5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0B2538 Compression Method    0008 (8) 'Deflated'\n-0B253A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0B253E CRC                   00000000 (0)\n-0B2542 Compressed Size       00000000 (0)\n-0B2546 Uncompressed Size     00000000 (0)\n-0B254A Filename Length       003C (60)\n-0B254C Extra Length          0000 (0)\n-0B254E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DC6E7 Compression Method    0008 (8) 'Deflated'\n+0DC6E9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DC6ED CRC                   00000000 (0)\n+0DC6F1 Compressed Size       00000000 (0)\n+0DC6F5 Uncompressed Size     00000000 (0)\n+0DC6F9 Filename Length       0033 (51)\n+0DC6FB Extra Length          0000 (0)\n+0DC6FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xB254E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDC6FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0B258A PAYLOAD\n+0DC730 PAYLOAD               XX\n \n-0B2B22 DATA DESCRIPTOR       08074B50 (134695760)\n-0B2B26 CRC                   359BAAF7 (899394295)\n-0B2B2A Compressed Size       00000598 (1432)\n-0B2B2E Uncompressed Size     000011CA (4554)\n+0DC732 DATA DESCRIPTOR       08074B50 (134695760)\n+0DC736 CRC                   00000000 (0)\n+0DC73A Compressed Size       00000002 (2)\n+0DC73E Uncompressed Size     00000000 (0)\n \n-0B2B32 LOCAL HEADER #746     04034B50 (67324752)\n-0B2B36 Extract Zip Spec      14 (20) '2.0'\n-0B2B37 Extract OS            00 (0) 'MS-DOS'\n-0B2B38 General Purpose Flag  0808 (2056)\n+0DC742 LOCAL HEADER #746     04034B50 (67324752)\n+0DC746 Extract Zip Spec      14 (20) '2.0'\n+0DC747 Extract OS            00 (0) 'MS-DOS'\n+0DC748 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0B2B3A Compression Method    0008 (8) 'Deflated'\n-0B2B3C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0B2B40 CRC                   00000000 (0)\n-0B2B44 Compressed Size       00000000 (0)\n-0B2B48 Uncompressed Size     00000000 (0)\n-0B2B4C Filename Length       0028 (40)\n-0B2B4E Extra Length          0000 (0)\n-0B2B50 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DC74A Compression Method    0008 (8) 'Deflated'\n+0DC74C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DC750 CRC                   00000000 (0)\n+0DC754 Compressed Size       00000000 (0)\n+0DC758 Uncompressed Size     00000000 (0)\n+0DC75C Filename Length       0049 (73)\n+0DC75E Extra Length          0000 (0)\n+0DC760 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xB2B50: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDC760: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0B2B78 PAYLOAD\n+0DC7A9 PAYLOAD\n \n-0B2F74 DATA DESCRIPTOR       08074B50 (134695760)\n-0B2F78 CRC                   4DF6AB6E (1308011374)\n-0B2F7C Compressed Size       000003FC (1020)\n-0B2F80 Uncompressed Size     00000CBD (3261)\n+0DCBB8 DATA DESCRIPTOR       08074B50 (134695760)\n+0DCBBC CRC                   1909E1F3 (420078067)\n+0DCBC0 Compressed Size       0000040F (1039)\n+0DCBC4 Uncompressed Size     00000E69 (3689)\n \n-0B2F84 LOCAL HEADER #747     04034B50 (67324752)\n-0B2F88 Extract Zip Spec      14 (20) '2.0'\n-0B2F89 Extract OS            00 (0) 'MS-DOS'\n-0B2F8A General Purpose Flag  0808 (2056)\n+0DCBC8 LOCAL HEADER #747     04034B50 (67324752)\n+0DCBCC Extract Zip Spec      14 (20) '2.0'\n+0DCBCD Extract OS            00 (0) 'MS-DOS'\n+0DCBCE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0B2F8C Compression Method    0008 (8) 'Deflated'\n-0B2F8E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0B2F92 CRC                   00000000 (0)\n-0B2F96 Compressed Size       00000000 (0)\n-0B2F9A Uncompressed Size     00000000 (0)\n-0B2F9E Filename Length       0044 (68)\n-0B2FA0 Extra Length          0000 (0)\n-0B2FA2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DCBD0 Compression Method    0008 (8) 'Deflated'\n+0DCBD2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DCBD6 CRC                   00000000 (0)\n+0DCBDA Compressed Size       00000000 (0)\n+0DCBDE Uncompressed Size     00000000 (0)\n+0DCBE2 Filename Length       0045 (69)\n+0DCBE4 Extra Length          0000 (0)\n+0DCBE6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xB2FA2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDCBE6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0B2FE6 PAYLOAD\n+0DCC2B PAYLOAD\n \n-0B33B7 DATA DESCRIPTOR       08074B50 (134695760)\n-0B33BB CRC                   E15897D6 (3780679638)\n-0B33BF Compressed Size       000003D1 (977)\n-0B33C3 Uncompressed Size     00000A1C (2588)\n+0DCEC5 DATA DESCRIPTOR       08074B50 (134695760)\n+0DCEC9 CRC                   40313D69 (1076968809)\n+0DCECD Compressed Size       0000029A (666)\n+0DCED1 Uncompressed Size     00000521 (1313)\n \n-0B33C7 LOCAL HEADER #748     04034B50 (67324752)\n-0B33CB Extract Zip Spec      14 (20) '2.0'\n-0B33CC Extract OS            00 (0) 'MS-DOS'\n-0B33CD General Purpose Flag  0808 (2056)\n+0DCED5 LOCAL HEADER #748     04034B50 (67324752)\n+0DCED9 Extract Zip Spec      14 (20) '2.0'\n+0DCEDA Extract OS            00 (0) 'MS-DOS'\n+0DCEDB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0B33CF Compression Method    0008 (8) 'Deflated'\n-0B33D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0B33D5 CRC                   00000000 (0)\n-0B33D9 Compressed Size       00000000 (0)\n-0B33DD Uncompressed Size     00000000 (0)\n-0B33E1 Filename Length       002E (46)\n-0B33E3 Extra Length          0000 (0)\n-0B33E5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DCEDD Compression Method    0008 (8) 'Deflated'\n+0DCEDF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DCEE3 CRC                   00000000 (0)\n+0DCEE7 Compressed Size       00000000 (0)\n+0DCEEB Uncompressed Size     00000000 (0)\n+0DCEEF Filename Length       003A (58)\n+0DCEF1 Extra Length          0000 (0)\n+0DCEF3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xB33E5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDCEF3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0B3413 PAYLOAD\n+0DCF2D PAYLOAD               XX\n \n-0B52AE DATA DESCRIPTOR       08074B50 (134695760)\n-0B52B2 CRC                   080CFD86 (135069062)\n-0B52B6 Compressed Size       00001E9B (7835)\n-0B52BA Uncompressed Size     00009370 (37744)\n+0DCF2F DATA DESCRIPTOR       08074B50 (134695760)\n+0DCF33 CRC                   00000000 (0)\n+0DCF37 Compressed Size       00000002 (2)\n+0DCF3B Uncompressed Size     00000000 (0)\n \n-0B52BE LOCAL HEADER #749     04034B50 (67324752)\n-0B52C2 Extract Zip Spec      14 (20) '2.0'\n-0B52C3 Extract OS            00 (0) 'MS-DOS'\n-0B52C4 General Purpose Flag  0808 (2056)\n+0DCF3F LOCAL HEADER #749     04034B50 (67324752)\n+0DCF43 Extract Zip Spec      14 (20) '2.0'\n+0DCF44 Extract OS            00 (0) 'MS-DOS'\n+0DCF45 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0B52C6 Compression Method    0008 (8) 'Deflated'\n-0B52C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0B52CC CRC                   00000000 (0)\n-0B52D0 Compressed Size       00000000 (0)\n-0B52D4 Uncompressed Size     00000000 (0)\n-0B52D8 Filename Length       002C (44)\n-0B52DA Extra Length          0000 (0)\n-0B52DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DCF47 Compression Method    0008 (8) 'Deflated'\n+0DCF49 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DCF4D CRC                   00000000 (0)\n+0DCF51 Compressed Size       00000000 (0)\n+0DCF55 Uncompressed Size     00000000 (0)\n+0DCF59 Filename Length       005E (94)\n+0DCF5B Extra Length          0000 (0)\n+0DCF5D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xB52DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDCF5D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0B5308 PAYLOAD\n+0DCFBB PAYLOAD\n \n-0B5A7A DATA DESCRIPTOR       08074B50 (134695760)\n-0B5A7E CRC                   45127F53 (1158840147)\n-0B5A82 Compressed Size       00000772 (1906)\n-0B5A86 Uncompressed Size     000021F8 (8696)\n+0DD5C9 DATA DESCRIPTOR       08074B50 (134695760)\n+0DD5CD CRC                   7D6D8264 (2104328804)\n+0DD5D1 Compressed Size       0000060E (1550)\n+0DD5D5 Uncompressed Size     0000153E (5438)\n \n-0B5A8A LOCAL HEADER #750     04034B50 (67324752)\n-0B5A8E Extract Zip Spec      14 (20) '2.0'\n-0B5A8F Extract OS            00 (0) 'MS-DOS'\n-0B5A90 General Purpose Flag  0808 (2056)\n+0DD5D9 LOCAL HEADER #750     04034B50 (67324752)\n+0DD5DD Extract Zip Spec      14 (20) '2.0'\n+0DD5DE Extract OS            00 (0) 'MS-DOS'\n+0DD5DF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0B5A92 Compression Method    0008 (8) 'Deflated'\n-0B5A94 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0B5A98 CRC                   00000000 (0)\n-0B5A9C Compressed Size       00000000 (0)\n-0B5AA0 Uncompressed Size     00000000 (0)\n-0B5AA4 Filename Length       002B (43)\n-0B5AA6 Extra Length          0000 (0)\n-0B5AA8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DD5E1 Compression Method    0008 (8) 'Deflated'\n+0DD5E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DD5E7 CRC                   00000000 (0)\n+0DD5EB Compressed Size       00000000 (0)\n+0DD5EF Uncompressed Size     00000000 (0)\n+0DD5F3 Filename Length       005A (90)\n+0DD5F5 Extra Length          0000 (0)\n+0DD5F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xB5AA8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDD5F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0B5AD3 PAYLOAD\n+0DD651 PAYLOAD\n \n-0B6C5E DATA DESCRIPTOR       08074B50 (134695760)\n-0B6C62 CRC                   BCEF5B37 (3169803063)\n-0B6C66 Compressed Size       0000118B (4491)\n-0B6C6A Uncompressed Size     0000634F (25423)\n+0DD8F0 DATA DESCRIPTOR       08074B50 (134695760)\n+0DD8F4 CRC                   5474BB92 (1416936338)\n+0DD8F8 Compressed Size       0000029F (671)\n+0DD8FC Uncompressed Size     00000551 (1361)\n \n-0B6C6E LOCAL HEADER #751     04034B50 (67324752)\n-0B6C72 Extract Zip Spec      14 (20) '2.0'\n-0B6C73 Extract OS            00 (0) 'MS-DOS'\n-0B6C74 General Purpose Flag  0808 (2056)\n+0DD900 LOCAL HEADER #751     04034B50 (67324752)\n+0DD904 Extract Zip Spec      14 (20) '2.0'\n+0DD905 Extract OS            00 (0) 'MS-DOS'\n+0DD906 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0B6C76 Compression Method    0008 (8) 'Deflated'\n-0B6C78 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0B6C7C CRC                   00000000 (0)\n-0B6C80 Compressed Size       00000000 (0)\n-0B6C84 Uncompressed Size     00000000 (0)\n-0B6C88 Filename Length       002C (44)\n-0B6C8A Extra Length          0000 (0)\n-0B6C8C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DD908 Compression Method    0008 (8) 'Deflated'\n+0DD90A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DD90E CRC                   00000000 (0)\n+0DD912 Compressed Size       00000000 (0)\n+0DD916 Uncompressed Size     00000000 (0)\n+0DD91A Filename Length       0036 (54)\n+0DD91C Extra Length          0000 (0)\n+0DD91E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xB6C8C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDD91E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0B6CB8 PAYLOAD\n+0DD954 PAYLOAD               XX\n \n-0B77B3 DATA DESCRIPTOR       08074B50 (134695760)\n-0B77B7 CRC                   E7AAF9A0 (3886741920)\n-0B77BB Compressed Size       00000AFB (2811)\n-0B77BF Uncompressed Size     000026C6 (9926)\n+0DD956 DATA DESCRIPTOR       08074B50 (134695760)\n+0DD95A CRC                   00000000 (0)\n+0DD95E Compressed Size       00000002 (2)\n+0DD962 Uncompressed Size     00000000 (0)\n \n-0B77C3 LOCAL HEADER #752     04034B50 (67324752)\n-0B77C7 Extract Zip Spec      14 (20) '2.0'\n-0B77C8 Extract OS            00 (0) 'MS-DOS'\n-0B77C9 General Purpose Flag  0808 (2056)\n+0DD966 LOCAL HEADER #752     04034B50 (67324752)\n+0DD96A Extract Zip Spec      14 (20) '2.0'\n+0DD96B Extract OS            00 (0) 'MS-DOS'\n+0DD96C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0B77CB Compression Method    0008 (8) 'Deflated'\n-0B77CD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0B77D1 CRC                   00000000 (0)\n-0B77D5 Compressed Size       00000000 (0)\n-0B77D9 Uncompressed Size     00000000 (0)\n-0B77DD Filename Length       002B (43)\n-0B77DF Extra Length          0000 (0)\n-0B77E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DD96E Compression Method    0008 (8) 'Deflated'\n+0DD970 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DD974 CRC                   00000000 (0)\n+0DD978 Compressed Size       00000000 (0)\n+0DD97C Uncompressed Size     00000000 (0)\n+0DD980 Filename Length       004F (79)\n+0DD982 Extra Length          0000 (0)\n+0DD984 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xB77E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDD984: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0B780C PAYLOAD\n+0DD9D3 PAYLOAD\n \n-0B8CEE DATA DESCRIPTOR       08074B50 (134695760)\n-0B8CF2 CRC                   4A1B9248 (1243320904)\n-0B8CF6 Compressed Size       000014E2 (5346)\n-0B8CFA Uncompressed Size     0000642A (25642)\n+0DDD5C DATA DESCRIPTOR       08074B50 (134695760)\n+0DDD60 CRC                   F9C89211 (4190671377)\n+0DDD64 Compressed Size       00000389 (905)\n+0DDD68 Uncompressed Size     000008E6 (2278)\n \n-0B8CFE LOCAL HEADER #753     04034B50 (67324752)\n-0B8D02 Extract Zip Spec      14 (20) '2.0'\n-0B8D03 Extract OS            00 (0) 'MS-DOS'\n-0B8D04 General Purpose Flag  0808 (2056)\n+0DDD6C LOCAL HEADER #753     04034B50 (67324752)\n+0DDD70 Extract Zip Spec      14 (20) '2.0'\n+0DDD71 Extract OS            00 (0) 'MS-DOS'\n+0DDD72 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0B8D06 Compression Method    0008 (8) 'Deflated'\n-0B8D08 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0B8D0C CRC                   00000000 (0)\n-0B8D10 Compressed Size       00000000 (0)\n-0B8D14 Uncompressed Size     00000000 (0)\n-0B8D18 Filename Length       0034 (52)\n-0B8D1A Extra Length          0000 (0)\n-0B8D1C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DDD74 Compression Method    0008 (8) 'Deflated'\n+0DDD76 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DDD7A CRC                   00000000 (0)\n+0DDD7E Compressed Size       00000000 (0)\n+0DDD82 Uncompressed Size     00000000 (0)\n+0DDD86 Filename Length       004B (75)\n+0DDD88 Extra Length          0000 (0)\n+0DDD8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xB8D1C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDDD8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0B8D50 PAYLOAD\n+0DDDD5 PAYLOAD\n \n-0BA190 DATA DESCRIPTOR       08074B50 (134695760)\n-0BA194 CRC                   4BCB8E78 (1271631480)\n-0BA198 Compressed Size       00001440 (5184)\n-0BA19C Uncompressed Size     00005EF7 (24311)\n+0DE063 DATA DESCRIPTOR       08074B50 (134695760)\n+0DE067 CRC                   66FEA41B (1727964187)\n+0DE06B Compressed Size       0000028E (654)\n+0DE06F Uncompressed Size     00000521 (1313)\n \n-0BA1A0 LOCAL HEADER #754     04034B50 (67324752)\n-0BA1A4 Extract Zip Spec      14 (20) '2.0'\n-0BA1A5 Extract OS            00 (0) 'MS-DOS'\n-0BA1A6 General Purpose Flag  0808 (2056)\n+0DE073 LOCAL HEADER #754     04034B50 (67324752)\n+0DE077 Extract Zip Spec      14 (20) '2.0'\n+0DE078 Extract OS            00 (0) 'MS-DOS'\n+0DE079 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0BA1A8 Compression Method    0008 (8) 'Deflated'\n-0BA1AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0BA1AE CRC                   00000000 (0)\n-0BA1B2 Compressed Size       00000000 (0)\n-0BA1B6 Uncompressed Size     00000000 (0)\n-0BA1BA Filename Length       0031 (49)\n-0BA1BC Extra Length          0000 (0)\n-0BA1BE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DE07B Compression Method    0008 (8) 'Deflated'\n+0DE07D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DE081 CRC                   00000000 (0)\n+0DE085 Compressed Size       00000000 (0)\n+0DE089 Uncompressed Size     00000000 (0)\n+0DE08D Filename Length       0039 (57)\n+0DE08F Extra Length          0000 (0)\n+0DE091 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBA1BE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDE091: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0BA1EF PAYLOAD\n+0DE0CA PAYLOAD               XX\n \n-0BA7F4 DATA DESCRIPTOR       08074B50 (134695760)\n-0BA7F8 CRC                   EBCB75D3 (3955979731)\n-0BA7FC Compressed Size       00000605 (1541)\n-0BA800 Uncompressed Size     00001235 (4661)\n+0DE0CC DATA DESCRIPTOR       08074B50 (134695760)\n+0DE0D0 CRC                   00000000 (0)\n+0DE0D4 Compressed Size       00000002 (2)\n+0DE0D8 Uncompressed Size     00000000 (0)\n \n-0BA804 LOCAL HEADER #755     04034B50 (67324752)\n-0BA808 Extract Zip Spec      14 (20) '2.0'\n-0BA809 Extract OS            00 (0) 'MS-DOS'\n-0BA80A General Purpose Flag  0808 (2056)\n+0DE0DC LOCAL HEADER #755     04034B50 (67324752)\n+0DE0E0 Extract Zip Spec      14 (20) '2.0'\n+0DE0E1 Extract OS            00 (0) 'MS-DOS'\n+0DE0E2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0BA80C Compression Method    0008 (8) 'Deflated'\n-0BA80E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0BA812 CRC                   00000000 (0)\n-0BA816 Compressed Size       00000000 (0)\n-0BA81A Uncompressed Size     00000000 (0)\n-0BA81E Filename Length       0034 (52)\n-0BA820 Extra Length          0000 (0)\n-0BA822 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DE0E4 Compression Method    0008 (8) 'Deflated'\n+0DE0E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DE0EA CRC                   00000000 (0)\n+0DE0EE Compressed Size       00000000 (0)\n+0DE0F2 Uncompressed Size     00000000 (0)\n+0DE0F6 Filename Length       0055 (85)\n+0DE0F8 Extra Length          0000 (0)\n+0DE0FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBA822: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDE0FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0BA856 PAYLOAD\n+0DE14F PAYLOAD\n \n-0BAF26 DATA DESCRIPTOR       08074B50 (134695760)\n-0BAF2A CRC                   0D6CD567 (225236327)\n-0BAF2E Compressed Size       000006D0 (1744)\n-0BAF32 Uncompressed Size     000015F5 (5621)\n+0DE625 DATA DESCRIPTOR       08074B50 (134695760)\n+0DE629 CRC                   E83FE9D5 (3896502741)\n+0DE62D Compressed Size       000004D6 (1238)\n+0DE631 Uncompressed Size     00000C8C (3212)\n \n-0BAF36 LOCAL HEADER #756     04034B50 (67324752)\n-0BAF3A Extract Zip Spec      14 (20) '2.0'\n-0BAF3B Extract OS            00 (0) 'MS-DOS'\n-0BAF3C General Purpose Flag  0808 (2056)\n+0DE635 LOCAL HEADER #756     04034B50 (67324752)\n+0DE639 Extract Zip Spec      14 (20) '2.0'\n+0DE63A Extract OS            00 (0) 'MS-DOS'\n+0DE63B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0BAF3E Compression Method    0008 (8) 'Deflated'\n-0BAF40 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0BAF44 CRC                   00000000 (0)\n-0BAF48 Compressed Size       00000000 (0)\n-0BAF4C Uncompressed Size     00000000 (0)\n-0BAF50 Filename Length       0032 (50)\n-0BAF52 Extra Length          0000 (0)\n-0BAF54 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DE63D Compression Method    0008 (8) 'Deflated'\n+0DE63F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DE643 CRC                   00000000 (0)\n+0DE647 Compressed Size       00000000 (0)\n+0DE64B Uncompressed Size     00000000 (0)\n+0DE64F Filename Length       0051 (81)\n+0DE651 Extra Length          0000 (0)\n+0DE653 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBAF54: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDE653: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0BAF86 PAYLOAD\n+0DE6A4 PAYLOAD\n \n-0BB6C3 DATA DESCRIPTOR       08074B50 (134695760)\n-0BB6C7 CRC                   6E97D75C (1855444828)\n-0BB6CB Compressed Size       0000073D (1853)\n-0BB6CF Uncompressed Size     00001A42 (6722)\n+0DE94E DATA DESCRIPTOR       08074B50 (134695760)\n+0DE952 CRC                   DF933BA4 (3750968228)\n+0DE956 Compressed Size       000002AA (682)\n+0DE95A Uncompressed Size     00000555 (1365)\n \n-0BB6D3 LOCAL HEADER #757     04034B50 (67324752)\n-0BB6D7 Extract Zip Spec      14 (20) '2.0'\n-0BB6D8 Extract OS            00 (0) 'MS-DOS'\n-0BB6D9 General Purpose Flag  0808 (2056)\n+0DE95E LOCAL HEADER #757     04034B50 (67324752)\n+0DE962 Extract Zip Spec      14 (20) '2.0'\n+0DE963 Extract OS            00 (0) 'MS-DOS'\n+0DE964 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0BB6DB Compression Method    0008 (8) 'Deflated'\n-0BB6DD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0BB6E1 CRC                   00000000 (0)\n-0BB6E5 Compressed Size       00000000 (0)\n-0BB6E9 Uncompressed Size     00000000 (0)\n-0BB6ED Filename Length       002E (46)\n-0BB6EF Extra Length          0000 (0)\n-0BB6F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DE966 Compression Method    0008 (8) 'Deflated'\n+0DE968 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DE96C CRC                   00000000 (0)\n+0DE970 Compressed Size       00000000 (0)\n+0DE974 Uncompressed Size     00000000 (0)\n+0DE978 Filename Length       0037 (55)\n+0DE97A Extra Length          0000 (0)\n+0DE97C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBB6F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDE97C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0BB71F PAYLOAD\n+0DE9B3 PAYLOAD               XX\n \n-0BC3CB DATA DESCRIPTOR       08074B50 (134695760)\n-0BC3CF CRC                   327F969A (847222426)\n-0BC3D3 Compressed Size       00000CAC (3244)\n-0BC3D7 Uncompressed Size     0000350F (13583)\n+0DE9B5 DATA DESCRIPTOR       08074B50 (134695760)\n+0DE9B9 CRC                   00000000 (0)\n+0DE9BD Compressed Size       00000002 (2)\n+0DE9C1 Uncompressed Size     00000000 (0)\n \n-0BC3DB LOCAL HEADER #758     04034B50 (67324752)\n-0BC3DF Extract Zip Spec      14 (20) '2.0'\n-0BC3E0 Extract OS            00 (0) 'MS-DOS'\n-0BC3E1 General Purpose Flag  0808 (2056)\n+0DE9C5 LOCAL HEADER #758     04034B50 (67324752)\n+0DE9C9 Extract Zip Spec      14 (20) '2.0'\n+0DE9CA Extract OS            00 (0) 'MS-DOS'\n+0DE9CB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0BC3E3 Compression Method    0008 (8) 'Deflated'\n-0BC3E5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0BC3E9 CRC                   00000000 (0)\n-0BC3ED Compressed Size       00000000 (0)\n-0BC3F1 Uncompressed Size     00000000 (0)\n-0BC3F5 Filename Length       002B (43)\n-0BC3F7 Extra Length          0000 (0)\n-0BC3F9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DE9CD Compression Method    0008 (8) 'Deflated'\n+0DE9CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DE9D3 CRC                   00000000 (0)\n+0DE9D7 Compressed Size       00000000 (0)\n+0DE9DB Uncompressed Size     00000000 (0)\n+0DE9DF Filename Length       0055 (85)\n+0DE9E1 Extra Length          0000 (0)\n+0DE9E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBC3F9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDE9E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0BC424 PAYLOAD\n+0DEA38 PAYLOAD\n \n-0BC797 DATA DESCRIPTOR       08074B50 (134695760)\n-0BC79B CRC                   C17F60B4 (3246350516)\n-0BC79F Compressed Size       00000373 (883)\n-0BC7A3 Uncompressed Size     0000084E (2126)\n+0DEDDF DATA DESCRIPTOR       08074B50 (134695760)\n+0DEDE3 CRC                   9032EA6A (2419255914)\n+0DEDE7 Compressed Size       000003A7 (935)\n+0DEDEB Uncompressed Size     00000944 (2372)\n \n-0BC7A7 LOCAL HEADER #759     04034B50 (67324752)\n-0BC7AB Extract Zip Spec      14 (20) '2.0'\n-0BC7AC Extract OS            00 (0) 'MS-DOS'\n-0BC7AD General Purpose Flag  0808 (2056)\n+0DEDEF LOCAL HEADER #759     04034B50 (67324752)\n+0DEDF3 Extract Zip Spec      14 (20) '2.0'\n+0DEDF4 Extract OS            00 (0) 'MS-DOS'\n+0DEDF5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0BC7AF Compression Method    0008 (8) 'Deflated'\n-0BC7B1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0BC7B5 CRC                   00000000 (0)\n-0BC7B9 Compressed Size       00000000 (0)\n-0BC7BD Uncompressed Size     00000000 (0)\n-0BC7C1 Filename Length       002F (47)\n-0BC7C3 Extra Length          0000 (0)\n-0BC7C5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DEDF7 Compression Method    0008 (8) 'Deflated'\n+0DEDF9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DEDFD CRC                   00000000 (0)\n+0DEE01 Compressed Size       00000000 (0)\n+0DEE05 Uncompressed Size     00000000 (0)\n+0DEE09 Filename Length       0051 (81)\n+0DEE0B Extra Length          0000 (0)\n+0DEE0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBC7C5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDEE0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0BC7F4 PAYLOAD\n+0DEE5E PAYLOAD\n \n-0BD183 DATA DESCRIPTOR       08074B50 (134695760)\n-0BD187 CRC                   60259860 (1613076576)\n-0BD18B Compressed Size       0000098F (2447)\n-0BD18F Uncompressed Size     0000229B (8859)\n+0DF101 DATA DESCRIPTOR       08074B50 (134695760)\n+0DF105 CRC                   897FB906 (2306849030)\n+0DF109 Compressed Size       000002A3 (675)\n+0DF10D Uncompressed Size     00000546 (1350)\n \n-0BD193 LOCAL HEADER #760     04034B50 (67324752)\n-0BD197 Extract Zip Spec      14 (20) '2.0'\n-0BD198 Extract OS            00 (0) 'MS-DOS'\n-0BD199 General Purpose Flag  0808 (2056)\n+0DF111 LOCAL HEADER #760     04034B50 (67324752)\n+0DF115 Extract Zip Spec      14 (20) '2.0'\n+0DF116 Extract OS            00 (0) 'MS-DOS'\n+0DF117 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0BD19B Compression Method    0008 (8) 'Deflated'\n-0BD19D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0BD1A1 CRC                   00000000 (0)\n-0BD1A5 Compressed Size       00000000 (0)\n-0BD1A9 Uncompressed Size     00000000 (0)\n-0BD1AD Filename Length       0026 (38)\n-0BD1AF Extra Length          0000 (0)\n-0BD1B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DF119 Compression Method    0008 (8) 'Deflated'\n+0DF11B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DF11F CRC                   00000000 (0)\n+0DF123 Compressed Size       00000000 (0)\n+0DF127 Uncompressed Size     00000000 (0)\n+0DF12B Filename Length       0020 (32)\n+0DF12D Extra Length          0000 (0)\n+0DF12F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBD1B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDF12F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0BD1D7 PAYLOAD\n+0DF14F PAYLOAD               XX\n \n-0BD653 DATA DESCRIPTOR       08074B50 (134695760)\n-0BD657 CRC                   CBED4405 (3421324293)\n-0BD65B Compressed Size       0000047C (1148)\n-0BD65F Uncompressed Size     00000B21 (2849)\n+0DF151 DATA DESCRIPTOR       08074B50 (134695760)\n+0DF155 CRC                   00000000 (0)\n+0DF159 Compressed Size       00000002 (2)\n+0DF15D Uncompressed Size     00000000 (0)\n \n-0BD663 LOCAL HEADER #761     04034B50 (67324752)\n-0BD667 Extract Zip Spec      14 (20) '2.0'\n-0BD668 Extract OS            00 (0) 'MS-DOS'\n-0BD669 General Purpose Flag  0808 (2056)\n+0DF161 LOCAL HEADER #761     04034B50 (67324752)\n+0DF165 Extract Zip Spec      14 (20) '2.0'\n+0DF166 Extract OS            00 (0) 'MS-DOS'\n+0DF167 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0BD66B Compression Method    0008 (8) 'Deflated'\n-0BD66D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0BD671 CRC                   00000000 (0)\n-0BD675 Compressed Size       00000000 (0)\n-0BD679 Uncompressed Size     00000000 (0)\n-0BD67D Filename Length       002B (43)\n-0BD67F Extra Length          0000 (0)\n-0BD681 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DF169 Compression Method    0008 (8) 'Deflated'\n+0DF16B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DF16F CRC                   00000000 (0)\n+0DF173 Compressed Size       00000000 (0)\n+0DF177 Uncompressed Size     00000000 (0)\n+0DF17B Filename Length       0033 (51)\n+0DF17D Extra Length          0000 (0)\n+0DF17F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBD681: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDF17F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0BD6AC PAYLOAD\n+0DF1B2 PAYLOAD\n \n-0BDB8B DATA DESCRIPTOR       08074B50 (134695760)\n-0BDB8F CRC                   4EECAFD1 (1324134353)\n-0BDB93 Compressed Size       000004DF (1247)\n-0BDB97 Uncompressed Size     00000DF0 (3568)\n+0DF4E0 DATA DESCRIPTOR       08074B50 (134695760)\n+0DF4E4 CRC                   C50A75E6 (3305797094)\n+0DF4E8 Compressed Size       0000032E (814)\n+0DF4EC Uncompressed Size     00000738 (1848)\n \n-0BDB9B LOCAL HEADER #762     04034B50 (67324752)\n-0BDB9F Extract Zip Spec      14 (20) '2.0'\n-0BDBA0 Extract OS            00 (0) 'MS-DOS'\n-0BDBA1 General Purpose Flag  0808 (2056)\n+0DF4F0 LOCAL HEADER #762     04034B50 (67324752)\n+0DF4F4 Extract Zip Spec      14 (20) '2.0'\n+0DF4F5 Extract OS            00 (0) 'MS-DOS'\n+0DF4F6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0BDBA3 Compression Method    0008 (8) 'Deflated'\n-0BDBA5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0BDBA9 CRC                   00000000 (0)\n-0BDBAD Compressed Size       00000000 (0)\n-0BDBB1 Uncompressed Size     00000000 (0)\n-0BDBB5 Filename Length       0031 (49)\n-0BDBB7 Extra Length          0000 (0)\n-0BDBB9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DF4F8 Compression Method    0008 (8) 'Deflated'\n+0DF4FA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DF4FE CRC                   00000000 (0)\n+0DF502 Compressed Size       00000000 (0)\n+0DF506 Uncompressed Size     00000000 (0)\n+0DF50A Filename Length       002D (45)\n+0DF50C Extra Length          0000 (0)\n+0DF50E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBDBB9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDF50E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0BDBEA PAYLOAD\n+0DF53B PAYLOAD\n \n-0BE31D DATA DESCRIPTOR       08074B50 (134695760)\n-0BE321 CRC                   44E5E8ED (1155918061)\n-0BE325 Compressed Size       00000733 (1843)\n-0BE329 Uncompressed Size     00001786 (6022)\n+0DF842 DATA DESCRIPTOR       08074B50 (134695760)\n+0DF846 CRC                   7B898F0A (2072612618)\n+0DF84A Compressed Size       00000307 (775)\n+0DF84E Uncompressed Size     00000633 (1587)\n \n-0BE32D LOCAL HEADER #763     04034B50 (67324752)\n-0BE331 Extract Zip Spec      14 (20) '2.0'\n-0BE332 Extract OS            00 (0) 'MS-DOS'\n-0BE333 General Purpose Flag  0808 (2056)\n+0DF852 LOCAL HEADER #763     04034B50 (67324752)\n+0DF856 Extract Zip Spec      14 (20) '2.0'\n+0DF857 Extract OS            00 (0) 'MS-DOS'\n+0DF858 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0BE335 Compression Method    0008 (8) 'Deflated'\n-0BE337 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0BE33B CRC                   00000000 (0)\n-0BE33F Compressed Size       00000000 (0)\n-0BE343 Uncompressed Size     00000000 (0)\n-0BE347 Filename Length       0029 (41)\n-0BE349 Extra Length          0000 (0)\n-0BE34B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DF85A Compression Method    0008 (8) 'Deflated'\n+0DF85C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DF860 CRC                   00000000 (0)\n+0DF864 Compressed Size       00000000 (0)\n+0DF868 Uncompressed Size     00000000 (0)\n+0DF86C Filename Length       0033 (51)\n+0DF86E Extra Length          0000 (0)\n+0DF870 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBE34B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDF870: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0BE374 PAYLOAD\n+0DF8A3 PAYLOAD               XX\n \n-0BEBC7 DATA DESCRIPTOR       08074B50 (134695760)\n-0BEBCB CRC                   AEF897E4 (2935527396)\n-0BEBCF Compressed Size       00000853 (2131)\n-0BEBD3 Uncompressed Size     00002174 (8564)\n+0DF8A5 DATA DESCRIPTOR       08074B50 (134695760)\n+0DF8A9 CRC                   00000000 (0)\n+0DF8AD Compressed Size       00000002 (2)\n+0DF8B1 Uncompressed Size     00000000 (0)\n \n-0BEBD7 LOCAL HEADER #764     04034B50 (67324752)\n-0BEBDB Extract Zip Spec      14 (20) '2.0'\n-0BEBDC Extract OS            00 (0) 'MS-DOS'\n-0BEBDD General Purpose Flag  0808 (2056)\n+0DF8B5 LOCAL HEADER #764     04034B50 (67324752)\n+0DF8B9 Extract Zip Spec      14 (20) '2.0'\n+0DF8BA Extract OS            00 (0) 'MS-DOS'\n+0DF8BB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0BEBDF Compression Method    0008 (8) 'Deflated'\n-0BEBE1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0BEBE5 CRC                   00000000 (0)\n-0BEBE9 Compressed Size       00000000 (0)\n-0BEBED Uncompressed Size     00000000 (0)\n-0BEBF1 Filename Length       002A (42)\n-0BEBF3 Extra Length          0000 (0)\n-0BEBF5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DF8BD Compression Method    0008 (8) 'Deflated'\n+0DF8BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DF8C3 CRC                   00000000 (0)\n+0DF8C7 Compressed Size       00000000 (0)\n+0DF8CB Uncompressed Size     00000000 (0)\n+0DF8CF Filename Length       003A (58)\n+0DF8D1 Extra Length          0000 (0)\n+0DF8D3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBEBF5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDF8D3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0BEC1F PAYLOAD\n+0DF90D PAYLOAD\n \n-0BEF03 DATA DESCRIPTOR       08074B50 (134695760)\n-0BEF07 CRC                   1F3B896F (523995503)\n-0BEF0B Compressed Size       000002E4 (740)\n-0BEF0F Uncompressed Size     0000065A (1626)\n+0DFC91 DATA DESCRIPTOR       08074B50 (134695760)\n+0DFC95 CRC                   412C4DB4 (1093422516)\n+0DFC99 Compressed Size       00000384 (900)\n+0DFC9D Uncompressed Size     00000916 (2326)\n \n-0BEF13 LOCAL HEADER #765     04034B50 (67324752)\n-0BEF17 Extract Zip Spec      14 (20) '2.0'\n-0BEF18 Extract OS            00 (0) 'MS-DOS'\n-0BEF19 General Purpose Flag  0808 (2056)\n+0DFCA1 LOCAL HEADER #765     04034B50 (67324752)\n+0DFCA5 Extract Zip Spec      14 (20) '2.0'\n+0DFCA6 Extract OS            00 (0) 'MS-DOS'\n+0DFCA7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0BEF1B Compression Method    0008 (8) 'Deflated'\n-0BEF1D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0BEF21 CRC                   00000000 (0)\n-0BEF25 Compressed Size       00000000 (0)\n-0BEF29 Uncompressed Size     00000000 (0)\n-0BEF2D Filename Length       0029 (41)\n-0BEF2F Extra Length          0000 (0)\n-0BEF31 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DFCA9 Compression Method    0008 (8) 'Deflated'\n+0DFCAB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DFCAF CRC                   00000000 (0)\n+0DFCB3 Compressed Size       00000000 (0)\n+0DFCB7 Uncompressed Size     00000000 (0)\n+0DFCBB Filename Length       0041 (65)\n+0DFCBD Extra Length          0000 (0)\n+0DFCBF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBEF31: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDFCBF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0BEF5A PAYLOAD\n+0DFD00 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-0BF3DD DATA DESCRIPTOR       08074B50 (134695760)\n-0BF3E1 CRC                   FE661D4B (4268105035)\n-0BF3E5 Compressed Size       00000483 (1155)\n-0BF3E9 Uncompressed Size     00000DF5 (3573)\n+0DFD47 DATA DESCRIPTOR       08074B50 (134695760)\n+0DFD4B CRC                   86CFF4B4 (2261775540)\n+0DFD4F Compressed Size       00000047 (71)\n+0DFD53 Uncompressed Size     00000049 (73)\n \n-0BF3ED LOCAL HEADER #766     04034B50 (67324752)\n-0BF3F1 Extract Zip Spec      14 (20) '2.0'\n-0BF3F2 Extract OS            00 (0) 'MS-DOS'\n-0BF3F3 General Purpose Flag  0808 (2056)\n+0DFD57 LOCAL HEADER #766     04034B50 (67324752)\n+0DFD5B Extract Zip Spec      14 (20) '2.0'\n+0DFD5C Extract OS            00 (0) 'MS-DOS'\n+0DFD5D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0BF3F5 Compression Method    0008 (8) 'Deflated'\n-0BF3F7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0BF3FB CRC                   00000000 (0)\n-0BF3FF Compressed Size       00000000 (0)\n-0BF403 Uncompressed Size     00000000 (0)\n-0BF407 Filename Length       002A (42)\n-0BF409 Extra Length          0000 (0)\n-0BF40B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DFD5F Compression Method    0008 (8) 'Deflated'\n+0DFD61 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DFD65 CRC                   00000000 (0)\n+0DFD69 Compressed Size       00000000 (0)\n+0DFD6D Uncompressed Size     00000000 (0)\n+0DFD71 Filename Length       002A (42)\n+0DFD73 Extra Length          0000 (0)\n+0DFD75 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBF40B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDFD75: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0BF435 PAYLOAD\n+0DFD9F PAYLOAD               XX\n \n-0BF8DC DATA DESCRIPTOR       08074B50 (134695760)\n-0BF8E0 CRC                   32F83356 (855126870)\n-0BF8E4 Compressed Size       000004A7 (1191)\n-0BF8E8 Uncompressed Size     00000E80 (3712)\n+0DFDA1 DATA DESCRIPTOR       08074B50 (134695760)\n+0DFDA5 CRC                   00000000 (0)\n+0DFDA9 Compressed Size       00000002 (2)\n+0DFDAD Uncompressed Size     00000000 (0)\n \n-0BF8EC LOCAL HEADER #767     04034B50 (67324752)\n-0BF8F0 Extract Zip Spec      14 (20) '2.0'\n-0BF8F1 Extract OS            00 (0) 'MS-DOS'\n-0BF8F2 General Purpose Flag  0808 (2056)\n+0DFDB1 LOCAL HEADER #767     04034B50 (67324752)\n+0DFDB5 Extract Zip Spec      14 (20) '2.0'\n+0DFDB6 Extract OS            00 (0) 'MS-DOS'\n+0DFDB7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0BF8F4 Compression Method    0008 (8) 'Deflated'\n-0BF8F6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0BF8FA CRC                   00000000 (0)\n-0BF8FE Compressed Size       00000000 (0)\n-0BF902 Uncompressed Size     00000000 (0)\n-0BF906 Filename Length       002B (43)\n-0BF908 Extra Length          0000 (0)\n-0BF90A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0DFDB9 Compression Method    0008 (8) 'Deflated'\n+0DFDBB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0DFDBF CRC                   00000000 (0)\n+0DFDC3 Compressed Size       00000000 (0)\n+0DFDC7 Uncompressed Size     00000000 (0)\n+0DFDCB Filename Length       0047 (71)\n+0DFDCD Extra Length          0000 (0)\n+0DFDCF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xBF90A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xDFDCF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0BF935 PAYLOAD\n+0DFE16 PAYLOAD\n \n-0C04AE DATA DESCRIPTOR       08074B50 (134695760)\n-0C04B2 CRC                   5B6E7792 (1533966226)\n-0C04B6 Compressed Size       00000B79 (2937)\n-0C04BA Uncompressed Size     000033BD (13245)\n+0E0494 DATA DESCRIPTOR       08074B50 (134695760)\n+0E0498 CRC                   9FEC08A1 (2683046049)\n+0E049C Compressed Size       0000067E (1662)\n+0E04A0 Uncompressed Size     0000287C (10364)\n \n-0C04BE LOCAL HEADER #768     04034B50 (67324752)\n-0C04C2 Extract Zip Spec      14 (20) '2.0'\n-0C04C3 Extract OS            00 (0) 'MS-DOS'\n-0C04C4 General Purpose Flag  0808 (2056)\n+0E04A4 LOCAL HEADER #768     04034B50 (67324752)\n+0E04A8 Extract Zip Spec      14 (20) '2.0'\n+0E04A9 Extract OS            00 (0) 'MS-DOS'\n+0E04AA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C04C6 Compression Method    0008 (8) 'Deflated'\n-0C04C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C04CC CRC                   00000000 (0)\n-0C04D0 Compressed Size       00000000 (0)\n-0C04D4 Uncompressed Size     00000000 (0)\n-0C04D8 Filename Length       002B (43)\n-0C04DA Extra Length          0000 (0)\n-0C04DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E04AC Compression Method    0008 (8) 'Deflated'\n+0E04AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E04B2 CRC                   00000000 (0)\n+0E04B6 Compressed Size       00000000 (0)\n+0E04BA Uncompressed Size     00000000 (0)\n+0E04BE Filename Length       004E (78)\n+0E04C0 Extra Length          0000 (0)\n+0E04C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC04DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE04C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C0507 PAYLOAD\n+0E0510 PAYLOAD\n \n-0C0E8E DATA DESCRIPTOR       08074B50 (134695760)\n-0C0E92 CRC                   321C1C15 (840702997)\n-0C0E96 Compressed Size       00000987 (2439)\n-0C0E9A Uncompressed Size     00002894 (10388)\n+0E082A DATA DESCRIPTOR       08074B50 (134695760)\n+0E082E CRC                   399B609C (966484124)\n+0E0832 Compressed Size       0000031A (794)\n+0E0836 Uncompressed Size     000007FB (2043)\n \n-0C0E9E LOCAL HEADER #769     04034B50 (67324752)\n-0C0EA2 Extract Zip Spec      14 (20) '2.0'\n-0C0EA3 Extract OS            00 (0) 'MS-DOS'\n-0C0EA4 General Purpose Flag  0808 (2056)\n+0E083A LOCAL HEADER #769     04034B50 (67324752)\n+0E083E Extract Zip Spec      14 (20) '2.0'\n+0E083F Extract OS            00 (0) 'MS-DOS'\n+0E0840 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C0EA6 Compression Method    0008 (8) 'Deflated'\n-0C0EA8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C0EAC CRC                   00000000 (0)\n-0C0EB0 Compressed Size       00000000 (0)\n-0C0EB4 Uncompressed Size     00000000 (0)\n-0C0EB8 Filename Length       0030 (48)\n-0C0EBA Extra Length          0000 (0)\n-0C0EBC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E0842 Compression Method    0008 (8) 'Deflated'\n+0E0844 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E0848 CRC                   00000000 (0)\n+0E084C Compressed Size       00000000 (0)\n+0E0850 Uncompressed Size     00000000 (0)\n+0E0854 Filename Length       003B (59)\n+0E0856 Extra Length          0000 (0)\n+0E0858 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC0EBC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE0858: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C0EEC PAYLOAD\n+0E0893 PAYLOAD\n \n-0C182E DATA DESCRIPTOR       08074B50 (134695760)\n-0C1832 CRC                   52C8839A (1388872602)\n-0C1836 Compressed Size       00000942 (2370)\n-0C183A Uncompressed Size     000020A7 (8359)\n+0E101B DATA DESCRIPTOR       08074B50 (134695760)\n+0E101F CRC                   9371F11F (2473718047)\n+0E1023 Compressed Size       00000788 (1928)\n+0E1027 Uncompressed Size     00001B9D (7069)\n \n-0C183E LOCAL HEADER #770     04034B50 (67324752)\n-0C1842 Extract Zip Spec      14 (20) '2.0'\n-0C1843 Extract OS            00 (0) 'MS-DOS'\n-0C1844 General Purpose Flag  0808 (2056)\n+0E102B LOCAL HEADER #770     04034B50 (67324752)\n+0E102F Extract Zip Spec      14 (20) '2.0'\n+0E1030 Extract OS            00 (0) 'MS-DOS'\n+0E1031 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C1846 Compression Method    0008 (8) 'Deflated'\n-0C1848 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C184C CRC                   00000000 (0)\n-0C1850 Compressed Size       00000000 (0)\n-0C1854 Uncompressed Size     00000000 (0)\n-0C1858 Filename Length       002B (43)\n-0C185A Extra Length          0000 (0)\n-0C185C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E1033 Compression Method    0008 (8) 'Deflated'\n+0E1035 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E1039 CRC                   00000000 (0)\n+0E103D Compressed Size       00000000 (0)\n+0E1041 Uncompressed Size     00000000 (0)\n+0E1045 Filename Length       003A (58)\n+0E1047 Extra Length          0000 (0)\n+0E1049 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC185C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE1049: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C1887 PAYLOAD\n+0E1083 PAYLOAD\n \n-0C24E6 DATA DESCRIPTOR       08074B50 (134695760)\n-0C24EA CRC                   838E36DD (2207135453)\n-0C24EE Compressed Size       00000C5F (3167)\n-0C24F2 Uncompressed Size     00003312 (13074)\n+0E18B0 DATA DESCRIPTOR       08074B50 (134695760)\n+0E18B4 CRC                   79FA59C0 (2046450112)\n+0E18B8 Compressed Size       0000082D (2093)\n+0E18BC Uncompressed Size     00001CDC (7388)\n \n-0C24F6 LOCAL HEADER #771     04034B50 (67324752)\n-0C24FA Extract Zip Spec      14 (20) '2.0'\n-0C24FB Extract OS            00 (0) 'MS-DOS'\n-0C24FC General Purpose Flag  0808 (2056)\n+0E18C0 LOCAL HEADER #771     04034B50 (67324752)\n+0E18C4 Extract Zip Spec      14 (20) '2.0'\n+0E18C5 Extract OS            00 (0) 'MS-DOS'\n+0E18C6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C24FE Compression Method    0008 (8) 'Deflated'\n-0C2500 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C2504 CRC                   00000000 (0)\n-0C2508 Compressed Size       00000000 (0)\n-0C250C Uncompressed Size     00000000 (0)\n-0C2510 Filename Length       002E (46)\n-0C2512 Extra Length          0000 (0)\n-0C2514 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E18C8 Compression Method    0008 (8) 'Deflated'\n+0E18CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E18CE CRC                   00000000 (0)\n+0E18D2 Compressed Size       00000000 (0)\n+0E18D6 Uncompressed Size     00000000 (0)\n+0E18DA Filename Length       0040 (64)\n+0E18DC Extra Length          0000 (0)\n+0E18DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC2514: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE18DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C2542 PAYLOAD\n+0E191E PAYLOAD\n \n-0C31B4 DATA DESCRIPTOR       08074B50 (134695760)\n-0C31B8 CRC                   CB5B9E0C (3411779084)\n-0C31BC Compressed Size       00000C72 (3186)\n-0C31C0 Uncompressed Size     00003489 (13449)\n+0E2007 DATA DESCRIPTOR       08074B50 (134695760)\n+0E200B CRC                   EF9DBA26 (4020091430)\n+0E200F Compressed Size       000006E9 (1769)\n+0E2013 Uncompressed Size     00001B24 (6948)\n \n-0C31C4 LOCAL HEADER #772     04034B50 (67324752)\n-0C31C8 Extract Zip Spec      14 (20) '2.0'\n-0C31C9 Extract OS            00 (0) 'MS-DOS'\n-0C31CA General Purpose Flag  0808 (2056)\n+0E2017 LOCAL HEADER #772     04034B50 (67324752)\n+0E201B Extract Zip Spec      14 (20) '2.0'\n+0E201C Extract OS            00 (0) 'MS-DOS'\n+0E201D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C31CC Compression Method    0008 (8) 'Deflated'\n-0C31CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C31D2 CRC                   00000000 (0)\n-0C31D6 Compressed Size       00000000 (0)\n-0C31DA Uncompressed Size     00000000 (0)\n-0C31DE Filename Length       0026 (38)\n-0C31E0 Extra Length          0000 (0)\n-0C31E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E201F Compression Method    0008 (8) 'Deflated'\n+0E2021 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E2025 CRC                   00000000 (0)\n+0E2029 Compressed Size       00000000 (0)\n+0E202D Uncompressed Size     00000000 (0)\n+0E2031 Filename Length       003B (59)\n+0E2033 Extra Length          0000 (0)\n+0E2035 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC31E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE2035: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C3208 PAYLOAD\n+0E2070 PAYLOAD\n \n-0C3745 DATA DESCRIPTOR       08074B50 (134695760)\n-0C3749 CRC                   5FCFA231 (1607442993)\n-0C374D Compressed Size       0000053D (1341)\n-0C3751 Uncompressed Size     00001BE6 (7142)\n+0E2564 DATA DESCRIPTOR       08074B50 (134695760)\n+0E2568 CRC                   A0D2AF4F (2698161999)\n+0E256C Compressed Size       000004F4 (1268)\n+0E2570 Uncompressed Size     00001399 (5017)\n \n-0C3755 LOCAL HEADER #773     04034B50 (67324752)\n-0C3759 Extract Zip Spec      14 (20) '2.0'\n-0C375A Extract OS            00 (0) 'MS-DOS'\n-0C375B General Purpose Flag  0808 (2056)\n+0E2574 LOCAL HEADER #773     04034B50 (67324752)\n+0E2578 Extract Zip Spec      14 (20) '2.0'\n+0E2579 Extract OS            00 (0) 'MS-DOS'\n+0E257A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C375D Compression Method    0008 (8) 'Deflated'\n-0C375F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C3763 CRC                   00000000 (0)\n-0C3767 Compressed Size       00000000 (0)\n-0C376B Uncompressed Size     00000000 (0)\n-0C376F Filename Length       0023 (35)\n-0C3771 Extra Length          0000 (0)\n-0C3773 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E257C Compression Method    0008 (8) 'Deflated'\n+0E257E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E2582 CRC                   00000000 (0)\n+0E2586 Compressed Size       00000000 (0)\n+0E258A Uncompressed Size     00000000 (0)\n+0E258E Filename Length       003A (58)\n+0E2590 Extra Length          0000 (0)\n+0E2592 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC3773: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE2592: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C3796 PAYLOAD               XX\n+0E25CC PAYLOAD\n \n-0C3798 DATA DESCRIPTOR       08074B50 (134695760)\n-0C379C CRC                   00000000 (0)\n-0C37A0 Compressed Size       00000002 (2)\n-0C37A4 Uncompressed Size     00000000 (0)\n+0E2971 DATA DESCRIPTOR       08074B50 (134695760)\n+0E2975 CRC                   79ACCC49 (2041367625)\n+0E2979 Compressed Size       000003A5 (933)\n+0E297D Uncompressed Size     00000D46 (3398)\n \n-0C37A8 LOCAL HEADER #774     04034B50 (67324752)\n-0C37AC Extract Zip Spec      14 (20) '2.0'\n-0C37AD Extract OS            00 (0) 'MS-DOS'\n-0C37AE General Purpose Flag  0808 (2056)\n+0E2981 LOCAL HEADER #774     04034B50 (67324752)\n+0E2985 Extract Zip Spec      14 (20) '2.0'\n+0E2986 Extract OS            00 (0) 'MS-DOS'\n+0E2987 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C37B0 Compression Method    0008 (8) 'Deflated'\n-0C37B2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C37B6 CRC                   00000000 (0)\n-0C37BA Compressed Size       00000000 (0)\n-0C37BE Uncompressed Size     00000000 (0)\n-0C37C2 Filename Length       0030 (48)\n-0C37C4 Extra Length          0000 (0)\n-0C37C6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E2989 Compression Method    0008 (8) 'Deflated'\n+0E298B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E298F CRC                   00000000 (0)\n+0E2993 Compressed Size       00000000 (0)\n+0E2997 Uncompressed Size     00000000 (0)\n+0E299B Filename Length       003A (58)\n+0E299D Extra Length          0000 (0)\n+0E299F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC37C6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE299F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C37F6 PAYLOAD\n+0E29D9 PAYLOAD\n \n-0C3AC8 DATA DESCRIPTOR       08074B50 (134695760)\n-0C3ACC CRC                   53B2D875 (1404229749)\n-0C3AD0 Compressed Size       000002D2 (722)\n-0C3AD4 Uncompressed Size     000005A4 (1444)\n+0E314C DATA DESCRIPTOR       08074B50 (134695760)\n+0E3150 CRC                   E768197F (3882359167)\n+0E3154 Compressed Size       00000773 (1907)\n+0E3158 Uncompressed Size     00001A69 (6761)\n \n-0C3AD8 LOCAL HEADER #775     04034B50 (67324752)\n-0C3ADC Extract Zip Spec      14 (20) '2.0'\n-0C3ADD Extract OS            00 (0) 'MS-DOS'\n-0C3ADE General Purpose Flag  0808 (2056)\n+0E315C LOCAL HEADER #775     04034B50 (67324752)\n+0E3160 Extract Zip Spec      14 (20) '2.0'\n+0E3161 Extract OS            00 (0) 'MS-DOS'\n+0E3162 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C3AE0 Compression Method    0008 (8) 'Deflated'\n-0C3AE2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C3AE6 CRC                   00000000 (0)\n-0C3AEA Compressed Size       00000000 (0)\n-0C3AEE Uncompressed Size     00000000 (0)\n-0C3AF2 Filename Length       0036 (54)\n-0C3AF4 Extra Length          0000 (0)\n-0C3AF6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E3164 Compression Method    0008 (8) 'Deflated'\n+0E3166 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E316A CRC                   00000000 (0)\n+0E316E Compressed Size       00000000 (0)\n+0E3172 Uncompressed Size     00000000 (0)\n+0E3176 Filename Length       003F (63)\n+0E3178 Extra Length          0000 (0)\n+0E317A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC3AF6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE317A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C3B2C PAYLOAD\n+0E31B9 PAYLOAD\n \n-0C43EA DATA DESCRIPTOR       08074B50 (134695760)\n-0C43EE CRC                   07CF28F9 (131016953)\n-0C43F2 Compressed Size       000008BE (2238)\n-0C43F6 Uncompressed Size     00001D72 (7538)\n+0E3468 DATA DESCRIPTOR       08074B50 (134695760)\n+0E346C CRC                   010536C2 (17118914)\n+0E3470 Compressed Size       000002AF (687)\n+0E3474 Uncompressed Size     00000632 (1586)\n \n-0C43FA LOCAL HEADER #776     04034B50 (67324752)\n-0C43FE Extract Zip Spec      14 (20) '2.0'\n-0C43FF Extract OS            00 (0) 'MS-DOS'\n-0C4400 General Purpose Flag  0808 (2056)\n+0E3478 LOCAL HEADER #776     04034B50 (67324752)\n+0E347C Extract Zip Spec      14 (20) '2.0'\n+0E347D Extract OS            00 (0) 'MS-DOS'\n+0E347E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C4402 Compression Method    0008 (8) 'Deflated'\n-0C4404 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C4408 CRC                   00000000 (0)\n-0C440C Compressed Size       00000000 (0)\n-0C4410 Uncompressed Size     00000000 (0)\n-0C4414 Filename Length       0034 (52)\n-0C4416 Extra Length          0000 (0)\n-0C4418 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E3480 Compression Method    0008 (8) 'Deflated'\n+0E3482 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E3486 CRC                   00000000 (0)\n+0E348A Compressed Size       00000000 (0)\n+0E348E Uncompressed Size     00000000 (0)\n+0E3492 Filename Length       0035 (53)\n+0E3494 Extra Length          0000 (0)\n+0E3496 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC4418: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE3496: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C444C PAYLOAD\n+0E34CB PAYLOAD               XX\n \n-0C4B80 DATA DESCRIPTOR       08074B50 (134695760)\n-0C4B84 CRC                   FF8666DF (4286998239)\n-0C4B88 Compressed Size       00000734 (1844)\n-0C4B8C Uncompressed Size     00001A8A (6794)\n+0E34CD DATA DESCRIPTOR       08074B50 (134695760)\n+0E34D1 CRC                   00000000 (0)\n+0E34D5 Compressed Size       00000002 (2)\n+0E34D9 Uncompressed Size     00000000 (0)\n \n-0C4B90 LOCAL HEADER #777     04034B50 (67324752)\n-0C4B94 Extract Zip Spec      14 (20) '2.0'\n-0C4B95 Extract OS            00 (0) 'MS-DOS'\n-0C4B96 General Purpose Flag  0808 (2056)\n+0E34DD LOCAL HEADER #777     04034B50 (67324752)\n+0E34E1 Extract Zip Spec      14 (20) '2.0'\n+0E34E2 Extract OS            00 (0) 'MS-DOS'\n+0E34E3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C4B98 Compression Method    0008 (8) 'Deflated'\n-0C4B9A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C4B9E CRC                   00000000 (0)\n-0C4BA2 Compressed Size       00000000 (0)\n-0C4BA6 Uncompressed Size     00000000 (0)\n-0C4BAA Filename Length       002E (46)\n-0C4BAC Extra Length          0000 (0)\n-0C4BAE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E34E5 Compression Method    0008 (8) 'Deflated'\n+0E34E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E34EB CRC                   00000000 (0)\n+0E34EF Compressed Size       00000000 (0)\n+0E34F3 Uncompressed Size     00000000 (0)\n+0E34F7 Filename Length       003C (60)\n+0E34F9 Extra Length          0000 (0)\n+0E34FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC4BAE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE34FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C4BDC PAYLOAD\n+0E3537 PAYLOAD\n \n-0C4F0F DATA DESCRIPTOR       08074B50 (134695760)\n-0C4F13 CRC                   C4C508F0 (3301247216)\n-0C4F17 Compressed Size       00000333 (819)\n-0C4F1B Uncompressed Size     00000751 (1873)\n+0E38C8 DATA DESCRIPTOR       08074B50 (134695760)\n+0E38CC CRC                   53B720C2 (1404510402)\n+0E38D0 Compressed Size       00000391 (913)\n+0E38D4 Uncompressed Size     000008DC (2268)\n \n-0C4F1F LOCAL HEADER #778     04034B50 (67324752)\n-0C4F23 Extract Zip Spec      14 (20) '2.0'\n-0C4F24 Extract OS            00 (0) 'MS-DOS'\n-0C4F25 General Purpose Flag  0808 (2056)\n+0E38D8 LOCAL HEADER #778     04034B50 (67324752)\n+0E38DC Extract Zip Spec      14 (20) '2.0'\n+0E38DD Extract OS            00 (0) 'MS-DOS'\n+0E38DE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C4F27 Compression Method    0008 (8) 'Deflated'\n-0C4F29 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C4F2D CRC                   00000000 (0)\n-0C4F31 Compressed Size       00000000 (0)\n-0C4F35 Uncompressed Size     00000000 (0)\n-0C4F39 Filename Length       0031 (49)\n-0C4F3B Extra Length          0000 (0)\n-0C4F3D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E38E0 Compression Method    0008 (8) 'Deflated'\n+0E38E2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E38E6 CRC                   00000000 (0)\n+0E38EA Compressed Size       00000000 (0)\n+0E38EE Uncompressed Size     00000000 (0)\n+0E38F2 Filename Length       0043 (67)\n+0E38F4 Extra Length          0000 (0)\n+0E38F6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC4F3D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE38F6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C4F6E PAYLOAD\n+0E3939 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-0C57A7 DATA DESCRIPTOR       08074B50 (134695760)\n-0C57AB CRC                   55945694 (1435784852)\n-0C57AF Compressed Size       00000839 (2105)\n-0C57B3 Uncompressed Size     00001B9B (7067)\n+0E3982 DATA DESCRIPTOR       08074B50 (134695760)\n+0E3986 CRC                   7D6B90B6 (2104201398)\n+0E398A Compressed Size       00000049 (73)\n+0E398E Uncompressed Size     0000004B (75)\n \n-0C57B7 LOCAL HEADER #779     04034B50 (67324752)\n-0C57BB Extract Zip Spec      14 (20) '2.0'\n-0C57BC Extract OS            00 (0) 'MS-DOS'\n-0C57BD General Purpose Flag  0808 (2056)\n+0E3992 LOCAL HEADER #779     04034B50 (67324752)\n+0E3996 Extract Zip Spec      14 (20) '2.0'\n+0E3997 Extract OS            00 (0) 'MS-DOS'\n+0E3998 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C57BF Compression Method    0008 (8) 'Deflated'\n-0C57C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C57C5 CRC                   00000000 (0)\n-0C57C9 Compressed Size       00000000 (0)\n-0C57CD Uncompressed Size     00000000 (0)\n-0C57D1 Filename Length       002F (47)\n-0C57D3 Extra Length          0000 (0)\n-0C57D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E399A Compression Method    0008 (8) 'Deflated'\n+0E399C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E39A0 CRC                   00000000 (0)\n+0E39A4 Compressed Size       00000000 (0)\n+0E39A8 Uncompressed Size     00000000 (0)\n+0E39AC Filename Length       002B (43)\n+0E39AE Extra Length          0000 (0)\n+0E39B0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC57D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE39B0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C5804 PAYLOAD\n+0E39DB PAYLOAD               XX\n \n-0C5F48 DATA DESCRIPTOR       08074B50 (134695760)\n-0C5F4C CRC                   CEB8A43B (3468207163)\n-0C5F50 Compressed Size       00000744 (1860)\n-0C5F54 Uncompressed Size     00001ABC (6844)\n+0E39DD DATA DESCRIPTOR       08074B50 (134695760)\n+0E39E1 CRC                   00000000 (0)\n+0E39E5 Compressed Size       00000002 (2)\n+0E39E9 Uncompressed Size     00000000 (0)\n \n-0C5F58 LOCAL HEADER #780     04034B50 (67324752)\n-0C5F5C Extract Zip Spec      14 (20) '2.0'\n-0C5F5D Extract OS            00 (0) 'MS-DOS'\n-0C5F5E General Purpose Flag  0808 (2056)\n+0E39ED LOCAL HEADER #780     04034B50 (67324752)\n+0E39F1 Extract Zip Spec      14 (20) '2.0'\n+0E39F2 Extract OS            00 (0) 'MS-DOS'\n+0E39F3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C5F60 Compression Method    0008 (8) 'Deflated'\n-0C5F62 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C5F66 CRC                   00000000 (0)\n-0C5F6A Compressed Size       00000000 (0)\n-0C5F6E Uncompressed Size     00000000 (0)\n-0C5F72 Filename Length       0020 (32)\n-0C5F74 Extra Length          0000 (0)\n-0C5F76 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E39F5 Compression Method    0008 (8) 'Deflated'\n+0E39F7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E39FB CRC                   00000000 (0)\n+0E39FF Compressed Size       00000000 (0)\n+0E3A03 Uncompressed Size     00000000 (0)\n+0E3A07 Filename Length       0048 (72)\n+0E3A09 Extra Length          0000 (0)\n+0E3A0B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC5F76: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE3A0B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C5F96 PAYLOAD               XX\n+0E3A53 PAYLOAD\n \n-0C5F98 DATA DESCRIPTOR       08074B50 (134695760)\n-0C5F9C CRC                   00000000 (0)\n-0C5FA0 Compressed Size       00000002 (2)\n-0C5FA4 Uncompressed Size     00000000 (0)\n+0E40D9 DATA DESCRIPTOR       08074B50 (134695760)\n+0E40DD CRC                   73E7CE8A (1944571530)\n+0E40E1 Compressed Size       00000686 (1670)\n+0E40E5 Uncompressed Size     000027E6 (10214)\n \n-0C5FA8 LOCAL HEADER #781     04034B50 (67324752)\n-0C5FAC Extract Zip Spec      14 (20) '2.0'\n-0C5FAD Extract OS            00 (0) 'MS-DOS'\n-0C5FAE General Purpose Flag  0808 (2056)\n+0E40E9 LOCAL HEADER #781     04034B50 (67324752)\n+0E40ED Extract Zip Spec      14 (20) '2.0'\n+0E40EE Extract OS            00 (0) 'MS-DOS'\n+0E40EF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C5FB0 Compression Method    0008 (8) 'Deflated'\n-0C5FB2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C5FB6 CRC                   00000000 (0)\n-0C5FBA Compressed Size       00000000 (0)\n-0C5FBE Uncompressed Size     00000000 (0)\n-0C5FC2 Filename Length       003F (63)\n-0C5FC4 Extra Length          0000 (0)\n-0C5FC6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E40F1 Compression Method    0008 (8) 'Deflated'\n+0E40F3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E40F7 CRC                   00000000 (0)\n+0E40FB Compressed Size       00000000 (0)\n+0E40FF Uncompressed Size     00000000 (0)\n+0E4103 Filename Length       003C (60)\n+0E4105 Extra Length          0000 (0)\n+0E4107 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC5FC6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE4107: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C6005 PAYLOAD\n+0E4143 PAYLOAD\n \n-0C637D DATA DESCRIPTOR       08074B50 (134695760)\n-0C6381 CRC                   339D235A (865936218)\n-0C6385 Compressed Size       00000378 (888)\n-0C6389 Uncompressed Size     00000791 (1937)\n+0E4AC2 DATA DESCRIPTOR       08074B50 (134695760)\n+0E4AC6 CRC                   EADF50E0 (3940503776)\n+0E4ACA Compressed Size       0000097F (2431)\n+0E4ACE Uncompressed Size     00002355 (9045)\n \n-0C638D LOCAL HEADER #782     04034B50 (67324752)\n-0C6391 Extract Zip Spec      14 (20) '2.0'\n-0C6392 Extract OS            00 (0) 'MS-DOS'\n-0C6393 General Purpose Flag  0808 (2056)\n+0E4AD2 LOCAL HEADER #782     04034B50 (67324752)\n+0E4AD6 Extract Zip Spec      14 (20) '2.0'\n+0E4AD7 Extract OS            00 (0) 'MS-DOS'\n+0E4AD8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C6395 Compression Method    0008 (8) 'Deflated'\n-0C6397 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C639B CRC                   00000000 (0)\n-0C639F Compressed Size       00000000 (0)\n-0C63A3 Uncompressed Size     00000000 (0)\n-0C63A7 Filename Length       0032 (50)\n-0C63A9 Extra Length          0000 (0)\n-0C63AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E4ADA Compression Method    0008 (8) 'Deflated'\n+0E4ADC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E4AE0 CRC                   00000000 (0)\n+0E4AE4 Compressed Size       00000000 (0)\n+0E4AE8 Uncompressed Size     00000000 (0)\n+0E4AEC Filename Length       003B (59)\n+0E4AEE Extra Length          0000 (0)\n+0E4AF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC63AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE4AF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C63DD PAYLOAD\n+0E4B2B PAYLOAD\n \n-0C7302 DATA DESCRIPTOR       08074B50 (134695760)\n-0C7306 CRC                   F30DAB50 (4077759312)\n-0C730A Compressed Size       00000F25 (3877)\n-0C730E Uncompressed Size     000047F4 (18420)\n+0E55F1 DATA DESCRIPTOR       08074B50 (134695760)\n+0E55F5 CRC                   1CB2BCAF (481475759)\n+0E55F9 Compressed Size       00000AC6 (2758)\n+0E55FD Uncompressed Size     0000251F (9503)\n \n-0C7312 LOCAL HEADER #783     04034B50 (67324752)\n-0C7316 Extract Zip Spec      14 (20) '2.0'\n-0C7317 Extract OS            00 (0) 'MS-DOS'\n-0C7318 General Purpose Flag  0808 (2056)\n+0E5601 LOCAL HEADER #783     04034B50 (67324752)\n+0E5605 Extract Zip Spec      14 (20) '2.0'\n+0E5606 Extract OS            00 (0) 'MS-DOS'\n+0E5607 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C731A Compression Method    0008 (8) 'Deflated'\n-0C731C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C7320 CRC                   00000000 (0)\n-0C7324 Compressed Size       00000000 (0)\n-0C7328 Uncompressed Size     00000000 (0)\n-0C732C Filename Length       0020 (32)\n-0C732E Extra Length          0000 (0)\n-0C7330 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E5609 Compression Method    0008 (8) 'Deflated'\n+0E560B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E560F CRC                   00000000 (0)\n+0E5613 Compressed Size       00000000 (0)\n+0E5617 Uncompressed Size     00000000 (0)\n+0E561B Filename Length       0042 (66)\n+0E561D Extra Length          0000 (0)\n+0E561F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC7330: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE561F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C7350 PAYLOAD               XX\n+0E5661 PAYLOAD\n \n-0C7352 DATA DESCRIPTOR       08074B50 (134695760)\n-0C7356 CRC                   00000000 (0)\n-0C735A Compressed Size       00000002 (2)\n-0C735E Uncompressed Size     00000000 (0)\n+0E5DBB DATA DESCRIPTOR       08074B50 (134695760)\n+0E5DBF CRC                   7DE2A421 (2112005153)\n+0E5DC3 Compressed Size       0000075A (1882)\n+0E5DC7 Uncompressed Size     0000190A (6410)\n \n-0C7362 LOCAL HEADER #784     04034B50 (67324752)\n-0C7366 Extract Zip Spec      14 (20) '2.0'\n-0C7367 Extract OS            00 (0) 'MS-DOS'\n-0C7368 General Purpose Flag  0808 (2056)\n+0E5DCB LOCAL HEADER #784     04034B50 (67324752)\n+0E5DCF Extract Zip Spec      14 (20) '2.0'\n+0E5DD0 Extract OS            00 (0) 'MS-DOS'\n+0E5DD1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C736A Compression Method    0008 (8) 'Deflated'\n-0C736C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C7370 CRC                   00000000 (0)\n-0C7374 Compressed Size       00000000 (0)\n-0C7378 Uncompressed Size     00000000 (0)\n-0C737C Filename Length       002E (46)\n-0C737E Extra Length          0000 (0)\n-0C7380 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E5DD3 Compression Method    0008 (8) 'Deflated'\n+0E5DD5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E5DD9 CRC                   00000000 (0)\n+0E5DDD Compressed Size       00000000 (0)\n+0E5DE1 Uncompressed Size     00000000 (0)\n+0E5DE5 Filename Length       0041 (65)\n+0E5DE7 Extra Length          0000 (0)\n+0E5DE9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC7380: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE5DE9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C73AE PAYLOAD\n+0E5E2A PAYLOAD\n \n-0C7755 DATA DESCRIPTOR       08074B50 (134695760)\n-0C7759 CRC                   9409E400 (2483676160)\n-0C775D Compressed Size       000003A7 (935)\n-0C7761 Uncompressed Size     000007F6 (2038)\n+0E62F3 DATA DESCRIPTOR       08074B50 (134695760)\n+0E62F7 CRC                   3BA2E25A (1000530522)\n+0E62FB Compressed Size       000004C9 (1225)\n+0E62FF Uncompressed Size     00000E40 (3648)\n \n-0C7765 LOCAL HEADER #785     04034B50 (67324752)\n-0C7769 Extract Zip Spec      14 (20) '2.0'\n-0C776A Extract OS            00 (0) 'MS-DOS'\n-0C776B General Purpose Flag  0808 (2056)\n+0E6303 LOCAL HEADER #785     04034B50 (67324752)\n+0E6307 Extract Zip Spec      14 (20) '2.0'\n+0E6308 Extract OS            00 (0) 'MS-DOS'\n+0E6309 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C776D Compression Method    0008 (8) 'Deflated'\n-0C776F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C7773 CRC                   00000000 (0)\n-0C7777 Compressed Size       00000000 (0)\n-0C777B Uncompressed Size     00000000 (0)\n-0C777F Filename Length       0017 (23)\n-0C7781 Extra Length          0000 (0)\n-0C7783 Filename              'XXXXXXXXXXXXXXXXXXXXXXX'\n+0E630B Compression Method    0008 (8) 'Deflated'\n+0E630D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E6311 CRC                   00000000 (0)\n+0E6315 Compressed Size       00000000 (0)\n+0E6319 Uncompressed Size     00000000 (0)\n+0E631D Filename Length       0045 (69)\n+0E631F Extra Length          0000 (0)\n+0E6321 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC7783: Filename 'XXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE6321: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C779A PAYLOAD               XX\n+0E6366 PAYLOAD\n \n-0C779C DATA DESCRIPTOR       08074B50 (134695760)\n-0C77A0 CRC                   00000000 (0)\n-0C77A4 Compressed Size       00000002 (2)\n-0C77A8 Uncompressed Size     00000000 (0)\n+0E6737 DATA DESCRIPTOR       08074B50 (134695760)\n+0E673B CRC                   1E5B2A86 (509291142)\n+0E673F Compressed Size       000003D1 (977)\n+0E6743 Uncompressed Size     00000A9A (2714)\n \n-0C77AC LOCAL HEADER #786     04034B50 (67324752)\n-0C77B0 Extract Zip Spec      14 (20) '2.0'\n-0C77B1 Extract OS            00 (0) 'MS-DOS'\n-0C77B2 General Purpose Flag  0808 (2056)\n+0E6747 LOCAL HEADER #786     04034B50 (67324752)\n+0E674B Extract Zip Spec      14 (20) '2.0'\n+0E674C Extract OS            00 (0) 'MS-DOS'\n+0E674D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C77B4 Compression Method    0008 (8) 'Deflated'\n-0C77B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C77BA CRC                   00000000 (0)\n-0C77BE Compressed Size       00000000 (0)\n-0C77C2 Uncompressed Size     00000000 (0)\n-0C77C6 Filename Length       0033 (51)\n-0C77C8 Extra Length          0000 (0)\n-0C77CA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E674F Compression Method    0008 (8) 'Deflated'\n+0E6751 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E6755 CRC                   00000000 (0)\n+0E6759 Compressed Size       00000000 (0)\n+0E675D Uncompressed Size     00000000 (0)\n+0E6761 Filename Length       003B (59)\n+0E6763 Extra Length          0000 (0)\n+0E6765 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC77CA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE6765: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C77FD PAYLOAD\n+0E67A0 PAYLOAD\n \n-0C7F0B DATA DESCRIPTOR       08074B50 (134695760)\n-0C7F0F CRC                   0896EC5C (144108636)\n-0C7F13 Compressed Size       0000070E (1806)\n-0C7F17 Uncompressed Size     000016D6 (5846)\n+0E70D5 DATA DESCRIPTOR       08074B50 (134695760)\n+0E70D9 CRC                   1CDD10AA (484249770)\n+0E70DD Compressed Size       00000935 (2357)\n+0E70E1 Uncompressed Size     00001FCD (8141)\n \n-0C7F1B LOCAL HEADER #787     04034B50 (67324752)\n-0C7F1F Extract Zip Spec      14 (20) '2.0'\n-0C7F20 Extract OS            00 (0) 'MS-DOS'\n-0C7F21 General Purpose Flag  0808 (2056)\n+0E70E5 LOCAL HEADER #787     04034B50 (67324752)\n+0E70E9 Extract Zip Spec      14 (20) '2.0'\n+0E70EA Extract OS            00 (0) 'MS-DOS'\n+0E70EB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C7F23 Compression Method    0008 (8) 'Deflated'\n-0C7F25 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C7F29 CRC                   00000000 (0)\n-0C7F2D Compressed Size       00000000 (0)\n-0C7F31 Uncompressed Size     00000000 (0)\n-0C7F35 Filename Length       0034 (52)\n-0C7F37 Extra Length          0000 (0)\n-0C7F39 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E70ED Compression Method    0008 (8) 'Deflated'\n+0E70EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E70F3 CRC                   00000000 (0)\n+0E70F7 Compressed Size       00000000 (0)\n+0E70FB Uncompressed Size     00000000 (0)\n+0E70FF Filename Length       0042 (66)\n+0E7101 Extra Length          0000 (0)\n+0E7103 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC7F39: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE7103: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C7F6D PAYLOAD\n+0E7145 PAYLOAD\n \n-0C8226 DATA DESCRIPTOR       08074B50 (134695760)\n-0C822A CRC                   7DBCFDD1 (2109537745)\n-0C822E Compressed Size       000002B9 (697)\n-0C8232 Uncompressed Size     0000055B (1371)\n+0E7725 DATA DESCRIPTOR       08074B50 (134695760)\n+0E7729 CRC                   52A8EAC6 (1386801862)\n+0E772D Compressed Size       000005E0 (1504)\n+0E7731 Uncompressed Size     00001505 (5381)\n \n-0C8236 LOCAL HEADER #788     04034B50 (67324752)\n-0C823A Extract Zip Spec      14 (20) '2.0'\n-0C823B Extract OS            00 (0) 'MS-DOS'\n-0C823C General Purpose Flag  0808 (2056)\n+0E7735 LOCAL HEADER #788     04034B50 (67324752)\n+0E7739 Extract Zip Spec      14 (20) '2.0'\n+0E773A Extract OS            00 (0) 'MS-DOS'\n+0E773B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C823E Compression Method    0008 (8) 'Deflated'\n-0C8240 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C8244 CRC                   00000000 (0)\n-0C8248 Compressed Size       00000000 (0)\n-0C824C Uncompressed Size     00000000 (0)\n-0C8250 Filename Length       0031 (49)\n-0C8252 Extra Length          0000 (0)\n-0C8254 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E773D Compression Method    0008 (8) 'Deflated'\n+0E773F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E7743 CRC                   00000000 (0)\n+0E7747 Compressed Size       00000000 (0)\n+0E774B Uncompressed Size     00000000 (0)\n+0E774F Filename Length       0040 (64)\n+0E7751 Extra Length          0000 (0)\n+0E7753 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC8254: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE7753: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C8285 PAYLOAD\n+0E7793 PAYLOAD\n \n-0C84EF DATA DESCRIPTOR       08074B50 (134695760)\n-0C84F3 CRC                   3AC92564 (986260836)\n-0C84F7 Compressed Size       0000026A (618)\n-0C84FB Uncompressed Size     00000464 (1124)\n+0E7A67 DATA DESCRIPTOR       08074B50 (134695760)\n+0E7A6B CRC                   1AC58108 (449151240)\n+0E7A6F Compressed Size       000002D4 (724)\n+0E7A73 Uncompressed Size     00000679 (1657)\n \n-0C84FF LOCAL HEADER #789     04034B50 (67324752)\n-0C8503 Extract Zip Spec      14 (20) '2.0'\n-0C8504 Extract OS            00 (0) 'MS-DOS'\n-0C8505 General Purpose Flag  0808 (2056)\n+0E7A77 LOCAL HEADER #789     04034B50 (67324752)\n+0E7A7B Extract Zip Spec      14 (20) '2.0'\n+0E7A7C Extract OS            00 (0) 'MS-DOS'\n+0E7A7D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C8507 Compression Method    0008 (8) 'Deflated'\n-0C8509 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C850D CRC                   00000000 (0)\n-0C8511 Compressed Size       00000000 (0)\n-0C8515 Uncompressed Size     00000000 (0)\n-0C8519 Filename Length       0021 (33)\n-0C851B Extra Length          0000 (0)\n-0C851D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E7A7F Compression Method    0008 (8) 'Deflated'\n+0E7A81 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E7A85 CRC                   00000000 (0)\n+0E7A89 Compressed Size       00000000 (0)\n+0E7A8D Uncompressed Size     00000000 (0)\n+0E7A91 Filename Length       003B (59)\n+0E7A93 Extra Length          0000 (0)\n+0E7A95 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC851D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE7A95: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C853E PAYLOAD\n+0E7AD0 PAYLOAD\n \n-0C8877 DATA DESCRIPTOR       08074B50 (134695760)\n-0C887B CRC                   0EB290DE (246583518)\n-0C887F Compressed Size       00000339 (825)\n-0C8883 Uncompressed Size     0000061E (1566)\n+0E80F1 DATA DESCRIPTOR       08074B50 (134695760)\n+0E80F5 CRC                   377C624A (930898506)\n+0E80F9 Compressed Size       00000621 (1569)\n+0E80FD Uncompressed Size     00001627 (5671)\n \n-0C8887 LOCAL HEADER #790     04034B50 (67324752)\n-0C888B Extract Zip Spec      14 (20) '2.0'\n-0C888C Extract OS            00 (0) 'MS-DOS'\n-0C888D General Purpose Flag  0808 (2056)\n+0E8101 LOCAL HEADER #790     04034B50 (67324752)\n+0E8105 Extract Zip Spec      14 (20) '2.0'\n+0E8106 Extract OS            00 (0) 'MS-DOS'\n+0E8107 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C888F Compression Method    0008 (8) 'Deflated'\n-0C8891 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C8895 CRC                   00000000 (0)\n-0C8899 Compressed Size       00000000 (0)\n-0C889D Uncompressed Size     00000000 (0)\n-0C88A1 Filename Length       002B (43)\n-0C88A3 Extra Length          0000 (0)\n-0C88A5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E8109 Compression Method    0008 (8) 'Deflated'\n+0E810B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E810F CRC                   00000000 (0)\n+0E8113 Compressed Size       00000000 (0)\n+0E8117 Uncompressed Size     00000000 (0)\n+0E811B Filename Length       0045 (69)\n+0E811D Extra Length          0000 (0)\n+0E811F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC88A5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE811F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C88D0 PAYLOAD\n+0E8164 PAYLOAD\n \n-0C8CAE DATA DESCRIPTOR       08074B50 (134695760)\n-0C8CB2 CRC                   2A1C7A3B (706509371)\n-0C8CB6 Compressed Size       000003DE (990)\n-0C8CBA Uncompressed Size     000008DC (2268)\n+0E872D DATA DESCRIPTOR       08074B50 (134695760)\n+0E8731 CRC                   37334079 (926105721)\n+0E8735 Compressed Size       000005C9 (1481)\n+0E8739 Uncompressed Size     00001758 (5976)\n \n-0C8CBE LOCAL HEADER #791     04034B50 (67324752)\n-0C8CC2 Extract Zip Spec      14 (20) '2.0'\n-0C8CC3 Extract OS            00 (0) 'MS-DOS'\n-0C8CC4 General Purpose Flag  0808 (2056)\n+0E873D LOCAL HEADER #791     04034B50 (67324752)\n+0E8741 Extract Zip Spec      14 (20) '2.0'\n+0E8742 Extract OS            00 (0) 'MS-DOS'\n+0E8743 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C8CC6 Compression Method    0008 (8) 'Deflated'\n-0C8CC8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C8CCC CRC                   00000000 (0)\n-0C8CD0 Compressed Size       00000000 (0)\n-0C8CD4 Uncompressed Size     00000000 (0)\n-0C8CD8 Filename Length       0029 (41)\n-0C8CDA Extra Length          0000 (0)\n-0C8CDC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E8745 Compression Method    0008 (8) 'Deflated'\n+0E8747 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E874B CRC                   00000000 (0)\n+0E874F Compressed Size       00000000 (0)\n+0E8753 Uncompressed Size     00000000 (0)\n+0E8757 Filename Length       0033 (51)\n+0E8759 Extra Length          0000 (0)\n+0E875B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC8CDC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE875B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C8D05 PAYLOAD\n+0E878E PAYLOAD               XX\n \n-0C92D3 DATA DESCRIPTOR       08074B50 (134695760)\n-0C92D7 CRC                   3A57EAC8 (978840264)\n-0C92DB Compressed Size       000005CE (1486)\n-0C92DF Uncompressed Size     0000126A (4714)\n+0E8790 DATA DESCRIPTOR       08074B50 (134695760)\n+0E8794 CRC                   00000000 (0)\n+0E8798 Compressed Size       00000002 (2)\n+0E879C Uncompressed Size     00000000 (0)\n \n-0C92E3 LOCAL HEADER #792     04034B50 (67324752)\n-0C92E7 Extract Zip Spec      14 (20) '2.0'\n-0C92E8 Extract OS            00 (0) 'MS-DOS'\n-0C92E9 General Purpose Flag  0808 (2056)\n+0E87A0 LOCAL HEADER #792     04034B50 (67324752)\n+0E87A4 Extract Zip Spec      14 (20) '2.0'\n+0E87A5 Extract OS            00 (0) 'MS-DOS'\n+0E87A6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C92EB Compression Method    0008 (8) 'Deflated'\n-0C92ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C92F1 CRC                   00000000 (0)\n-0C92F5 Compressed Size       00000000 (0)\n-0C92F9 Uncompressed Size     00000000 (0)\n-0C92FD Filename Length       0028 (40)\n-0C92FF Extra Length          0000 (0)\n-0C9301 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E87A8 Compression Method    0008 (8) 'Deflated'\n+0E87AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E87AE CRC                   00000000 (0)\n+0E87B2 Compressed Size       00000000 (0)\n+0E87B6 Uncompressed Size     00000000 (0)\n+0E87BA Filename Length       0047 (71)\n+0E87BC Extra Length          0000 (0)\n+0E87BE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC9301: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE87BE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C9329 PAYLOAD\n+0E8805 PAYLOAD\n \n-0C958B DATA DESCRIPTOR       08074B50 (134695760)\n-0C958F CRC                   B1AAD78E (2980763534)\n-0C9593 Compressed Size       00000262 (610)\n-0C9597 Uncompressed Size     00000463 (1123)\n+0E8BA9 DATA DESCRIPTOR       08074B50 (134695760)\n+0E8BAD CRC                   58FEAB57 (1493085015)\n+0E8BB1 Compressed Size       000003A4 (932)\n+0E8BB5 Uncompressed Size     000008C3 (2243)\n \n-0C959B LOCAL HEADER #793     04034B50 (67324752)\n-0C959F Extract Zip Spec      14 (20) '2.0'\n-0C95A0 Extract OS            00 (0) 'MS-DOS'\n-0C95A1 General Purpose Flag  0808 (2056)\n+0E8BB9 LOCAL HEADER #793     04034B50 (67324752)\n+0E8BBD Extract Zip Spec      14 (20) '2.0'\n+0E8BBE Extract OS            00 (0) 'MS-DOS'\n+0E8BBF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C95A3 Compression Method    0008 (8) 'Deflated'\n-0C95A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C95A9 CRC                   00000000 (0)\n-0C95AD Compressed Size       00000000 (0)\n-0C95B1 Uncompressed Size     00000000 (0)\n-0C95B5 Filename Length       0030 (48)\n-0C95B7 Extra Length          0000 (0)\n-0C95B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E8BC1 Compression Method    0008 (8) 'Deflated'\n+0E8BC3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E8BC7 CRC                   00000000 (0)\n+0E8BCB Compressed Size       00000000 (0)\n+0E8BCF Uncompressed Size     00000000 (0)\n+0E8BD3 Filename Length       0048 (72)\n+0E8BD5 Extra Length          0000 (0)\n+0E8BD7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC95B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE8BD7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C95E9 PAYLOAD\n+0E8C1F PAYLOAD\n \n-0C9C0A DATA DESCRIPTOR       08074B50 (134695760)\n-0C9C0E CRC                   903888C3 (2419624131)\n-0C9C12 Compressed Size       00000621 (1569)\n-0C9C16 Uncompressed Size     0000120D (4621)\n+0E9977 DATA DESCRIPTOR       08074B50 (134695760)\n+0E997B CRC                   A355BCB4 (2740305076)\n+0E997F Compressed Size       00000D58 (3416)\n+0E9983 Uncompressed Size     00003AB8 (15032)\n \n-0C9C1A LOCAL HEADER #794     04034B50 (67324752)\n-0C9C1E Extract Zip Spec      14 (20) '2.0'\n-0C9C1F Extract OS            00 (0) 'MS-DOS'\n-0C9C20 General Purpose Flag  0808 (2056)\n+0E9987 LOCAL HEADER #794     04034B50 (67324752)\n+0E998B Extract Zip Spec      14 (20) '2.0'\n+0E998C Extract OS            00 (0) 'MS-DOS'\n+0E998D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0C9C22 Compression Method    0008 (8) 'Deflated'\n-0C9C24 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0C9C28 CRC                   00000000 (0)\n-0C9C2C Compressed Size       00000000 (0)\n-0C9C30 Uncompressed Size     00000000 (0)\n-0C9C34 Filename Length       0026 (38)\n-0C9C36 Extra Length          0000 (0)\n-0C9C38 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E998F Compression Method    0008 (8) 'Deflated'\n+0E9991 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E9995 CRC                   00000000 (0)\n+0E9999 Compressed Size       00000000 (0)\n+0E999D Uncompressed Size     00000000 (0)\n+0E99A1 Filename Length       0036 (54)\n+0E99A3 Extra Length          0000 (0)\n+0E99A5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xC9C38: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE99A5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0C9C5E PAYLOAD\n+0E99DB PAYLOAD               XX\n \n-0CA1B3 DATA DESCRIPTOR       08074B50 (134695760)\n-0CA1B7 CRC                   98A61B9D (2561022877)\n-0CA1BB Compressed Size       00000555 (1365)\n-0CA1BF Uncompressed Size     000014BA (5306)\n+0E99DD DATA DESCRIPTOR       08074B50 (134695760)\n+0E99E1 CRC                   00000000 (0)\n+0E99E5 Compressed Size       00000002 (2)\n+0E99E9 Uncompressed Size     00000000 (0)\n \n-0CA1C3 LOCAL HEADER #795     04034B50 (67324752)\n-0CA1C7 Extract Zip Spec      14 (20) '2.0'\n-0CA1C8 Extract OS            00 (0) 'MS-DOS'\n-0CA1C9 General Purpose Flag  0808 (2056)\n+0E99ED LOCAL HEADER #795     04034B50 (67324752)\n+0E99F1 Extract Zip Spec      14 (20) '2.0'\n+0E99F2 Extract OS            00 (0) 'MS-DOS'\n+0E99F3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CA1CB Compression Method    0008 (8) 'Deflated'\n-0CA1CD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CA1D1 CRC                   00000000 (0)\n-0CA1D5 Compressed Size       00000000 (0)\n-0CA1D9 Uncompressed Size     00000000 (0)\n-0CA1DD Filename Length       0033 (51)\n-0CA1DF Extra Length          0000 (0)\n-0CA1E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E99F5 Compression Method    0008 (8) 'Deflated'\n+0E99F7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E99FB CRC                   00000000 (0)\n+0E99FF Compressed Size       00000000 (0)\n+0E9A03 Uncompressed Size     00000000 (0)\n+0E9A07 Filename Length       003D (61)\n+0E9A09 Extra Length          0000 (0)\n+0E9A0B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCA1E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE9A0B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CA214 PAYLOAD\n+0E9A48 PAYLOAD\n \n-0CA49B DATA DESCRIPTOR       08074B50 (134695760)\n-0CA49F CRC                   1AE780F7 (451379447)\n-0CA4A3 Compressed Size       00000287 (647)\n-0CA4A7 Uncompressed Size     000004BD (1213)\n+0E9DF2 DATA DESCRIPTOR       08074B50 (134695760)\n+0E9DF6 CRC                   1D29AE65 (489270885)\n+0E9DFA Compressed Size       000003AA (938)\n+0E9DFE Uncompressed Size     00000924 (2340)\n \n-0CA4AB LOCAL HEADER #796     04034B50 (67324752)\n-0CA4AF Extract Zip Spec      14 (20) '2.0'\n-0CA4B0 Extract OS            00 (0) 'MS-DOS'\n-0CA4B1 General Purpose Flag  0808 (2056)\n+0E9E02 LOCAL HEADER #796     04034B50 (67324752)\n+0E9E06 Extract Zip Spec      14 (20) '2.0'\n+0E9E07 Extract OS            00 (0) 'MS-DOS'\n+0E9E08 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CA4B3 Compression Method    0008 (8) 'Deflated'\n-0CA4B5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CA4B9 CRC                   00000000 (0)\n-0CA4BD Compressed Size       00000000 (0)\n-0CA4C1 Uncompressed Size     00000000 (0)\n-0CA4C5 Filename Length       001B (27)\n-0CA4C7 Extra Length          0000 (0)\n-0CA4C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E9E0A Compression Method    0008 (8) 'Deflated'\n+0E9E0C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E9E10 CRC                   00000000 (0)\n+0E9E14 Compressed Size       00000000 (0)\n+0E9E18 Uncompressed Size     00000000 (0)\n+0E9E1C Filename Length       0044 (68)\n+0E9E1E Extra Length          0000 (0)\n+0E9E20 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCA4C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE9E20: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CA4E4 PAYLOAD               XX\n+0E9E64 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-0CA4E6 DATA DESCRIPTOR       08074B50 (134695760)\n-0CA4EA CRC                   00000000 (0)\n-0CA4EE Compressed Size       00000002 (2)\n-0CA4F2 Uncompressed Size     00000000 (0)\n+0E9EAE DATA DESCRIPTOR       08074B50 (134695760)\n+0E9EB2 CRC                   E328D6D4 (3811104468)\n+0E9EB6 Compressed Size       0000004A (74)\n+0E9EBA Uncompressed Size     0000004C (76)\n \n-0CA4F6 LOCAL HEADER #797     04034B50 (67324752)\n-0CA4FA Extract Zip Spec      14 (20) '2.0'\n-0CA4FB Extract OS            00 (0) 'MS-DOS'\n-0CA4FC General Purpose Flag  0808 (2056)\n+0E9EBE LOCAL HEADER #797     04034B50 (67324752)\n+0E9EC2 Extract Zip Spec      14 (20) '2.0'\n+0E9EC3 Extract OS            00 (0) 'MS-DOS'\n+0E9EC4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CA4FE Compression Method    0008 (8) 'Deflated'\n-0CA500 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CA504 CRC                   00000000 (0)\n-0CA508 Compressed Size       00000000 (0)\n-0CA50C Uncompressed Size     00000000 (0)\n-0CA510 Filename Length       0037 (55)\n-0CA512 Extra Length          0000 (0)\n-0CA514 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E9EC6 Compression Method    0008 (8) 'Deflated'\n+0E9EC8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E9ECC CRC                   00000000 (0)\n+0E9ED0 Compressed Size       00000000 (0)\n+0E9ED4 Uncompressed Size     00000000 (0)\n+0E9ED8 Filename Length       001F (31)\n+0E9EDA Extra Length          0000 (0)\n+0E9EDC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCA514: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE9EDC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CA54B PAYLOAD\n+0E9EFB PAYLOAD               XX\n \n-0CA779 DATA DESCRIPTOR       08074B50 (134695760)\n-0CA77D CRC                   86E81518 (2263356696)\n-0CA781 Compressed Size       0000022E (558)\n-0CA785 Uncompressed Size     000003E4 (996)\n+0E9EFD DATA DESCRIPTOR       08074B50 (134695760)\n+0E9F01 CRC                   00000000 (0)\n+0E9F05 Compressed Size       00000002 (2)\n+0E9F09 Uncompressed Size     00000000 (0)\n \n-0CA789 LOCAL HEADER #798     04034B50 (67324752)\n-0CA78D Extract Zip Spec      14 (20) '2.0'\n-0CA78E Extract OS            00 (0) 'MS-DOS'\n-0CA78F General Purpose Flag  0808 (2056)\n+0E9F0D LOCAL HEADER #798     04034B50 (67324752)\n+0E9F11 Extract Zip Spec      14 (20) '2.0'\n+0E9F12 Extract OS            00 (0) 'MS-DOS'\n+0E9F13 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CA791 Compression Method    0008 (8) 'Deflated'\n-0CA793 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CA797 CRC                   00000000 (0)\n-0CA79B Compressed Size       00000000 (0)\n-0CA79F Uncompressed Size     00000000 (0)\n-0CA7A3 Filename Length       0030 (48)\n-0CA7A5 Extra Length          0000 (0)\n-0CA7A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0E9F15 Compression Method    0008 (8) 'Deflated'\n+0E9F17 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0E9F1B CRC                   00000000 (0)\n+0E9F1F Compressed Size       00000000 (0)\n+0E9F23 Uncompressed Size     00000000 (0)\n+0E9F27 Filename Length       0037 (55)\n+0E9F29 Extra Length          0000 (0)\n+0E9F2B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCA7A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xE9F2B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CA7D7 PAYLOAD\n+0E9F62 PAYLOAD\n \n-0CADF8 DATA DESCRIPTOR       08074B50 (134695760)\n-0CADFC CRC                   201D5BFC (538795004)\n-0CAE00 Compressed Size       00000621 (1569)\n-0CAE04 Uncompressed Size     000012A8 (4776)\n+0EA243 DATA DESCRIPTOR       08074B50 (134695760)\n+0EA247 CRC                   2526A8CF (623290575)\n+0EA24B Compressed Size       000002E1 (737)\n+0EA24F Uncompressed Size     00000657 (1623)\n \n-0CAE08 LOCAL HEADER #799     04034B50 (67324752)\n-0CAE0C Extract Zip Spec      14 (20) '2.0'\n-0CAE0D Extract OS            00 (0) 'MS-DOS'\n-0CAE0E General Purpose Flag  0808 (2056)\n+0EA253 LOCAL HEADER #799     04034B50 (67324752)\n+0EA257 Extract Zip Spec      14 (20) '2.0'\n+0EA258 Extract OS            00 (0) 'MS-DOS'\n+0EA259 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CAE10 Compression Method    0008 (8) 'Deflated'\n-0CAE12 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CAE16 CRC                   00000000 (0)\n-0CAE1A Compressed Size       00000000 (0)\n-0CAE1E Uncompressed Size     00000000 (0)\n-0CAE22 Filename Length       002F (47)\n-0CAE24 Extra Length          0000 (0)\n-0CAE26 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EA25B Compression Method    0008 (8) 'Deflated'\n+0EA25D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EA261 CRC                   00000000 (0)\n+0EA265 Compressed Size       00000000 (0)\n+0EA269 Uncompressed Size     00000000 (0)\n+0EA26D Filename Length       0031 (49)\n+0EA26F Extra Length          0000 (0)\n+0EA271 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCAE26: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEA271: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CAE55 PAYLOAD\n+0EA2A2 PAYLOAD\n \n-0CB174 DATA DESCRIPTOR       08074B50 (134695760)\n-0CB178 CRC                   E946A330 (3913720624)\n-0CB17C Compressed Size       0000031F (799)\n-0CB180 Uncompressed Size     00000A39 (2617)\n+0EA4D4 DATA DESCRIPTOR       08074B50 (134695760)\n+0EA4D8 CRC                   CD8B51D1 (3448459729)\n+0EA4DC Compressed Size       00000232 (562)\n+0EA4E0 Uncompressed Size     000003DC (988)\n \n-0CB184 LOCAL HEADER #800     04034B50 (67324752)\n-0CB188 Extract Zip Spec      14 (20) '2.0'\n-0CB189 Extract OS            00 (0) 'MS-DOS'\n-0CB18A General Purpose Flag  0808 (2056)\n+0EA4E4 LOCAL HEADER #800     04034B50 (67324752)\n+0EA4E8 Extract Zip Spec      14 (20) '2.0'\n+0EA4E9 Extract OS            00 (0) 'MS-DOS'\n+0EA4EA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CB18C Compression Method    0008 (8) 'Deflated'\n-0CB18E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CB192 CRC                   00000000 (0)\n-0CB196 Compressed Size       00000000 (0)\n-0CB19A Uncompressed Size     00000000 (0)\n-0CB19E Filename Length       0036 (54)\n-0CB1A0 Extra Length          0000 (0)\n-0CB1A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EA4EC Compression Method    0008 (8) 'Deflated'\n+0EA4EE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EA4F2 CRC                   00000000 (0)\n+0EA4F6 Compressed Size       00000000 (0)\n+0EA4FA Uncompressed Size     00000000 (0)\n+0EA4FE Filename Length       002D (45)\n+0EA500 Extra Length          0000 (0)\n+0EA502 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCB1A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEA502: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CB1D8 PAYLOAD\n+0EA52F PAYLOAD\n \n-0CB400 DATA DESCRIPTOR       08074B50 (134695760)\n-0CB404 CRC                   FBAECD89 (4222537097)\n-0CB408 Compressed Size       00000228 (552)\n-0CB40C Uncompressed Size     000003C4 (964)\n+0EA862 DATA DESCRIPTOR       08074B50 (134695760)\n+0EA866 CRC                   322BAD20 (841723168)\n+0EA86A Compressed Size       00000333 (819)\n+0EA86E Uncompressed Size     00000700 (1792)\n \n-0CB410 LOCAL HEADER #801     04034B50 (67324752)\n-0CB414 Extract Zip Spec      14 (20) '2.0'\n-0CB415 Extract OS            00 (0) 'MS-DOS'\n-0CB416 General Purpose Flag  0808 (2056)\n+0EA872 LOCAL HEADER #801     04034B50 (67324752)\n+0EA876 Extract Zip Spec      14 (20) '2.0'\n+0EA877 Extract OS            00 (0) 'MS-DOS'\n+0EA878 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CB418 Compression Method    0008 (8) 'Deflated'\n-0CB41A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CB41E CRC                   00000000 (0)\n-0CB422 Compressed Size       00000000 (0)\n-0CB426 Uncompressed Size     00000000 (0)\n-0CB42A Filename Length       0033 (51)\n-0CB42C Extra Length          0000 (0)\n-0CB42E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EA87A Compression Method    0008 (8) 'Deflated'\n+0EA87C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EA880 CRC                   00000000 (0)\n+0EA884 Compressed Size       00000000 (0)\n+0EA888 Uncompressed Size     00000000 (0)\n+0EA88C Filename Length       002E (46)\n+0EA88E Extra Length          0000 (0)\n+0EA890 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCB42E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEA890: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CB461 PAYLOAD\n+0EA8BE PAYLOAD\n \n-0CB8D3 DATA DESCRIPTOR       08074B50 (134695760)\n-0CB8D7 CRC                   E22DB581 (3794646401)\n-0CB8DB Compressed Size       00000472 (1138)\n-0CB8DF Uncompressed Size     00000BEE (3054)\n+0EAF1B DATA DESCRIPTOR       08074B50 (134695760)\n+0EAF1F CRC                   9A56CC71 (2589379697)\n+0EAF23 Compressed Size       0000065D (1629)\n+0EAF27 Uncompressed Size     000019AA (6570)\n \n-0CB8E3 LOCAL HEADER #802     04034B50 (67324752)\n-0CB8E7 Extract Zip Spec      14 (20) '2.0'\n-0CB8E8 Extract OS            00 (0) 'MS-DOS'\n-0CB8E9 General Purpose Flag  0808 (2056)\n+0EAF2B LOCAL HEADER #802     04034B50 (67324752)\n+0EAF2F Extract Zip Spec      14 (20) '2.0'\n+0EAF30 Extract OS            00 (0) 'MS-DOS'\n+0EAF31 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CB8EB Compression Method    0008 (8) 'Deflated'\n-0CB8ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CB8F1 CRC                   00000000 (0)\n-0CB8F5 Compressed Size       00000000 (0)\n-0CB8F9 Uncompressed Size     00000000 (0)\n-0CB8FD Filename Length       002D (45)\n-0CB8FF Extra Length          0000 (0)\n-0CB901 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EAF33 Compression Method    0008 (8) 'Deflated'\n+0EAF35 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EAF39 CRC                   00000000 (0)\n+0EAF3D Compressed Size       00000000 (0)\n+0EAF41 Uncompressed Size     00000000 (0)\n+0EAF45 Filename Length       0033 (51)\n+0EAF47 Extra Length          0000 (0)\n+0EAF49 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCB901: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEAF49: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CB92E PAYLOAD\n+0EAF7C PAYLOAD\n \n-0CC0C8 DATA DESCRIPTOR       08074B50 (134695760)\n-0CC0CC CRC                   02426CD5 (37907669)\n-0CC0D0 Compressed Size       0000079A (1946)\n-0CC0D4 Uncompressed Size     00001B9D (7069)\n+0EB201 DATA DESCRIPTOR       08074B50 (134695760)\n+0EB205 CRC                   BBB4B4AC (3149182124)\n+0EB209 Compressed Size       00000285 (645)\n+0EB20D Uncompressed Size     000007E6 (2022)\n \n-0CC0D8 LOCAL HEADER #803     04034B50 (67324752)\n-0CC0DC Extract Zip Spec      14 (20) '2.0'\n-0CC0DD Extract OS            00 (0) 'MS-DOS'\n-0CC0DE General Purpose Flag  0808 (2056)\n+0EB211 LOCAL HEADER #803     04034B50 (67324752)\n+0EB215 Extract Zip Spec      14 (20) '2.0'\n+0EB216 Extract OS            00 (0) 'MS-DOS'\n+0EB217 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CC0E0 Compression Method    0008 (8) 'Deflated'\n-0CC0E2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CC0E6 CRC                   00000000 (0)\n-0CC0EA Compressed Size       00000000 (0)\n-0CC0EE Uncompressed Size     00000000 (0)\n-0CC0F2 Filename Length       0030 (48)\n-0CC0F4 Extra Length          0000 (0)\n-0CC0F6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EB219 Compression Method    0008 (8) 'Deflated'\n+0EB21B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EB21F CRC                   00000000 (0)\n+0EB223 Compressed Size       00000000 (0)\n+0EB227 Uncompressed Size     00000000 (0)\n+0EB22B Filename Length       002F (47)\n+0EB22D Extra Length          0000 (0)\n+0EB22F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCC0F6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEB22F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CC126 PAYLOAD\n+0EB25E PAYLOAD\n \n-0CC556 DATA DESCRIPTOR       08074B50 (134695760)\n-0CC55A CRC                   641CBA7B (1679604347)\n-0CC55E Compressed Size       00000430 (1072)\n-0CC562 Uncompressed Size     00000BB0 (2992)\n+0EB4FB DATA DESCRIPTOR       08074B50 (134695760)\n+0EB4FF CRC                   302E6CD8 (808348888)\n+0EB503 Compressed Size       0000029D (669)\n+0EB507 Uncompressed Size     000004FA (1274)\n \n-0CC566 LOCAL HEADER #804     04034B50 (67324752)\n-0CC56A Extract Zip Spec      14 (20) '2.0'\n-0CC56B Extract OS            00 (0) 'MS-DOS'\n-0CC56C General Purpose Flag  0808 (2056)\n+0EB50B LOCAL HEADER #804     04034B50 (67324752)\n+0EB50F Extract Zip Spec      14 (20) '2.0'\n+0EB510 Extract OS            00 (0) 'MS-DOS'\n+0EB511 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CC56E Compression Method    0008 (8) 'Deflated'\n-0CC570 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CC574 CRC                   00000000 (0)\n-0CC578 Compressed Size       00000000 (0)\n-0CC57C Uncompressed Size     00000000 (0)\n-0CC580 Filename Length       0033 (51)\n-0CC582 Extra Length          0000 (0)\n-0CC584 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EB513 Compression Method    0008 (8) 'Deflated'\n+0EB515 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EB519 CRC                   00000000 (0)\n+0EB51D Compressed Size       00000000 (0)\n+0EB521 Uncompressed Size     00000000 (0)\n+0EB525 Filename Length       0031 (49)\n+0EB527 Extra Length          0000 (0)\n+0EB529 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCC584: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEB529: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CC5B7 PAYLOAD\n+0EB55A PAYLOAD\n \n-0CC979 DATA DESCRIPTOR       08074B50 (134695760)\n-0CC97D CRC                   C652D326 (3327316774)\n-0CC981 Compressed Size       000003C2 (962)\n-0CC985 Uncompressed Size     00000A71 (2673)\n+0EB788 DATA DESCRIPTOR       08074B50 (134695760)\n+0EB78C CRC                   6ADC9301 (1792840449)\n+0EB790 Compressed Size       0000022E (558)\n+0EB794 Uncompressed Size     000003E4 (996)\n \n-0CC989 LOCAL HEADER #805     04034B50 (67324752)\n-0CC98D Extract Zip Spec      14 (20) '2.0'\n-0CC98E Extract OS            00 (0) 'MS-DOS'\n-0CC98F General Purpose Flag  0808 (2056)\n+0EB798 LOCAL HEADER #805     04034B50 (67324752)\n+0EB79C Extract Zip Spec      14 (20) '2.0'\n+0EB79D Extract OS            00 (0) 'MS-DOS'\n+0EB79E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CC991 Compression Method    0008 (8) 'Deflated'\n-0CC993 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CC997 CRC                   00000000 (0)\n-0CC99B Compressed Size       00000000 (0)\n-0CC99F Uncompressed Size     00000000 (0)\n-0CC9A3 Filename Length       002D (45)\n-0CC9A5 Extra Length          0000 (0)\n-0CC9A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EB7A0 Compression Method    0008 (8) 'Deflated'\n+0EB7A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EB7A6 CRC                   00000000 (0)\n+0EB7AA Compressed Size       00000000 (0)\n+0EB7AE Uncompressed Size     00000000 (0)\n+0EB7B2 Filename Length       0025 (37)\n+0EB7B4 Extra Length          0000 (0)\n+0EB7B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCC9A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEB7B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CC9D4 PAYLOAD\n+0EB7DB PAYLOAD               XX\n \n-0CD096 DATA DESCRIPTOR       08074B50 (134695760)\n-0CD09A CRC                   DE4FB79A (3729766298)\n-0CD09E Compressed Size       000006C2 (1730)\n-0CD0A2 Uncompressed Size     00001A0D (6669)\n+0EB7DD DATA DESCRIPTOR       08074B50 (134695760)\n+0EB7E1 CRC                   00000000 (0)\n+0EB7E5 Compressed Size       00000002 (2)\n+0EB7E9 Uncompressed Size     00000000 (0)\n \n-0CD0A6 LOCAL HEADER #806     04034B50 (67324752)\n-0CD0AA Extract Zip Spec      14 (20) '2.0'\n-0CD0AB Extract OS            00 (0) 'MS-DOS'\n-0CD0AC General Purpose Flag  0808 (2056)\n+0EB7ED LOCAL HEADER #806     04034B50 (67324752)\n+0EB7F1 Extract Zip Spec      14 (20) '2.0'\n+0EB7F2 Extract OS            00 (0) 'MS-DOS'\n+0EB7F3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CD0AE Compression Method    0008 (8) 'Deflated'\n-0CD0B0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CD0B4 CRC                   00000000 (0)\n-0CD0B8 Compressed Size       00000000 (0)\n-0CD0BC Uncompressed Size     00000000 (0)\n-0CD0C0 Filename Length       0031 (49)\n-0CD0C2 Extra Length          0000 (0)\n-0CD0C4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EB7F5 Compression Method    0008 (8) 'Deflated'\n+0EB7F7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EB7FB CRC                   00000000 (0)\n+0EB7FF Compressed Size       00000000 (0)\n+0EB803 Uncompressed Size     00000000 (0)\n+0EB807 Filename Length       0041 (65)\n+0EB809 Extra Length          0000 (0)\n+0EB80B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCD0C4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEB80B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CD0F5 PAYLOAD\n+0EB84C PAYLOAD\n \n-0CD662 DATA DESCRIPTOR       08074B50 (134695760)\n-0CD666 CRC                   C6C2FD7D (3334667645)\n-0CD66A Compressed Size       0000056D (1389)\n-0CD66E Uncompressed Size     0000110A (4362)\n+0EBAB9 DATA DESCRIPTOR       08074B50 (134695760)\n+0EBABD CRC                   F69577E7 (4136990695)\n+0EBAC1 Compressed Size       0000026D (621)\n+0EBAC5 Uncompressed Size     0000048A (1162)\n \n-0CD672 LOCAL HEADER #807     04034B50 (67324752)\n-0CD676 Extract Zip Spec      14 (20) '2.0'\n-0CD677 Extract OS            00 (0) 'MS-DOS'\n-0CD678 General Purpose Flag  0808 (2056)\n+0EBAC9 LOCAL HEADER #807     04034B50 (67324752)\n+0EBACD Extract Zip Spec      14 (20) '2.0'\n+0EBACE Extract OS            00 (0) 'MS-DOS'\n+0EBACF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CD67A Compression Method    0008 (8) 'Deflated'\n-0CD67C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CD680 CRC                   00000000 (0)\n-0CD684 Compressed Size       00000000 (0)\n-0CD688 Uncompressed Size     00000000 (0)\n-0CD68C Filename Length       002F (47)\n-0CD68E Extra Length          0000 (0)\n-0CD690 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EBAD1 Compression Method    0008 (8) 'Deflated'\n+0EBAD3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EBAD7 CRC                   00000000 (0)\n+0EBADB Compressed Size       00000000 (0)\n+0EBADF Uncompressed Size     00000000 (0)\n+0EBAE3 Filename Length       0035 (53)\n+0EBAE5 Extra Length          0000 (0)\n+0EBAE7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCD690: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEBAE7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CD6BF PAYLOAD\n+0EBB1C PAYLOAD\n \n-0CDAF3 DATA DESCRIPTOR       08074B50 (134695760)\n-0CDAF7 CRC                   92839F02 (2458099458)\n-0CDAFB Compressed Size       00000434 (1076)\n-0CDAFF Uncompressed Size     00000C1C (3100)\n+0ECAA1 DATA DESCRIPTOR       08074B50 (134695760)\n+0ECAA5 CRC                   93092688 (2466850440)\n+0ECAA9 Compressed Size       00000F85 (3973)\n+0ECAAD Uncompressed Size     000042E1 (17121)\n \n-0CDB03 LOCAL HEADER #808     04034B50 (67324752)\n-0CDB07 Extract Zip Spec      14 (20) '2.0'\n-0CDB08 Extract OS            00 (0) 'MS-DOS'\n-0CDB09 General Purpose Flag  0808 (2056)\n+0ECAB1 LOCAL HEADER #808     04034B50 (67324752)\n+0ECAB5 Extract Zip Spec      14 (20) '2.0'\n+0ECAB6 Extract OS            00 (0) 'MS-DOS'\n+0ECAB7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CDB0B Compression Method    0008 (8) 'Deflated'\n-0CDB0D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CDB11 CRC                   00000000 (0)\n-0CDB15 Compressed Size       00000000 (0)\n-0CDB19 Uncompressed Size     00000000 (0)\n-0CDB1D Filename Length       0031 (49)\n-0CDB1F Extra Length          0000 (0)\n-0CDB21 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0ECAB9 Compression Method    0008 (8) 'Deflated'\n+0ECABB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0ECABF CRC                   00000000 (0)\n+0ECAC3 Compressed Size       00000000 (0)\n+0ECAC7 Uncompressed Size     00000000 (0)\n+0ECACB Filename Length       003C (60)\n+0ECACD Extra Length          0000 (0)\n+0ECACF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCDB21: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xECACF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CDB52 PAYLOAD\n+0ECB0B PAYLOAD\n \n-0CE2E2 DATA DESCRIPTOR       08074B50 (134695760)\n-0CE2E6 CRC                   ED067114 (3976622356)\n-0CE2EA Compressed Size       00000790 (1936)\n-0CE2EE Uncompressed Size     00001C7D (7293)\n+0EE249 DATA DESCRIPTOR       08074B50 (134695760)\n+0EE24D CRC                   29CC663D (701261373)\n+0EE251 Compressed Size       0000173E (5950)\n+0EE255 Uncompressed Size     000071B8 (29112)\n \n-0CE2F2 LOCAL HEADER #809     04034B50 (67324752)\n-0CE2F6 Extract Zip Spec      14 (20) '2.0'\n-0CE2F7 Extract OS            00 (0) 'MS-DOS'\n-0CE2F8 General Purpose Flag  0808 (2056)\n+0EE259 LOCAL HEADER #809     04034B50 (67324752)\n+0EE25D Extract Zip Spec      14 (20) '2.0'\n+0EE25E Extract OS            00 (0) 'MS-DOS'\n+0EE25F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CE2FA Compression Method    0008 (8) 'Deflated'\n-0CE2FC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CE300 CRC                   00000000 (0)\n-0CE304 Compressed Size       00000000 (0)\n-0CE308 Uncompressed Size     00000000 (0)\n-0CE30C Filename Length       001D (29)\n-0CE30E Extra Length          0000 (0)\n-0CE310 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EE261 Compression Method    0008 (8) 'Deflated'\n+0EE263 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EE267 CRC                   00000000 (0)\n+0EE26B Compressed Size       00000000 (0)\n+0EE26F Uncompressed Size     00000000 (0)\n+0EE273 Filename Length       003A (58)\n+0EE275 Extra Length          0000 (0)\n+0EE277 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCE310: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEE277: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CE32D PAYLOAD               XX\n+0EE2B1 PAYLOAD\n \n-0CE32F DATA DESCRIPTOR       08074B50 (134695760)\n-0CE333 CRC                   00000000 (0)\n-0CE337 Compressed Size       00000002 (2)\n-0CE33B Uncompressed Size     00000000 (0)\n+0EE509 DATA DESCRIPTOR       08074B50 (134695760)\n+0EE50D CRC                   11BF3CA1 (297745569)\n+0EE511 Compressed Size       00000258 (600)\n+0EE515 Uncompressed Size     0000049E (1182)\n \n-0CE33F LOCAL HEADER #810     04034B50 (67324752)\n-0CE343 Extract Zip Spec      14 (20) '2.0'\n-0CE344 Extract OS            00 (0) 'MS-DOS'\n-0CE345 General Purpose Flag  0808 (2056)\n+0EE519 LOCAL HEADER #810     04034B50 (67324752)\n+0EE51D Extract Zip Spec      14 (20) '2.0'\n+0EE51E Extract OS            00 (0) 'MS-DOS'\n+0EE51F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CE347 Compression Method    0008 (8) 'Deflated'\n-0CE349 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CE34D CRC                   00000000 (0)\n-0CE351 Compressed Size       00000000 (0)\n-0CE355 Uncompressed Size     00000000 (0)\n-0CE359 Filename Length       002D (45)\n-0CE35B Extra Length          0000 (0)\n-0CE35D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EE521 Compression Method    0008 (8) 'Deflated'\n+0EE523 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EE527 CRC                   00000000 (0)\n+0EE52B Compressed Size       00000000 (0)\n+0EE52F Uncompressed Size     00000000 (0)\n+0EE533 Filename Length       0034 (52)\n+0EE535 Extra Length          0000 (0)\n+0EE537 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCE35D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEE537: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CE38A PAYLOAD\n+0EE56B PAYLOAD\n \n-0CE58E DATA DESCRIPTOR       08074B50 (134695760)\n-0CE592 CRC                   D7F884E9 (3623388393)\n-0CE596 Compressed Size       00000204 (516)\n-0CE59A Uncompressed Size     00000381 (897)\n+0EE9A4 DATA DESCRIPTOR       08074B50 (134695760)\n+0EE9A8 CRC                   8B7AC527 (2340078887)\n+0EE9AC Compressed Size       00000439 (1081)\n+0EE9B0 Uncompressed Size     00000DCC (3532)\n \n-0CE59E LOCAL HEADER #811     04034B50 (67324752)\n-0CE5A2 Extract Zip Spec      14 (20) '2.0'\n-0CE5A3 Extract OS            00 (0) 'MS-DOS'\n-0CE5A4 General Purpose Flag  0808 (2056)\n+0EE9B4 LOCAL HEADER #811     04034B50 (67324752)\n+0EE9B8 Extract Zip Spec      14 (20) '2.0'\n+0EE9B9 Extract OS            00 (0) 'MS-DOS'\n+0EE9BA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CE5A6 Compression Method    0008 (8) 'Deflated'\n-0CE5A8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CE5AC CRC                   00000000 (0)\n-0CE5B0 Compressed Size       00000000 (0)\n-0CE5B4 Uncompressed Size     00000000 (0)\n-0CE5B8 Filename Length       002D (45)\n-0CE5BA Extra Length          0000 (0)\n-0CE5BC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EE9BC Compression Method    0008 (8) 'Deflated'\n+0EE9BE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EE9C2 CRC                   00000000 (0)\n+0EE9C6 Compressed Size       00000000 (0)\n+0EE9CA Uncompressed Size     00000000 (0)\n+0EE9CE Filename Length       0035 (53)\n+0EE9D0 Extra Length          0000 (0)\n+0EE9D2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCE5BC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEE9D2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CE5E9 PAYLOAD\n+0EEA07 PAYLOAD\n \n-0CE824 DATA DESCRIPTOR       08074B50 (134695760)\n-0CE828 CRC                   28AB9AE3 (682334947)\n-0CE82C Compressed Size       0000023B (571)\n-0CE830 Uncompressed Size     00000411 (1041)\n+0EECC6 DATA DESCRIPTOR       08074B50 (134695760)\n+0EECCA CRC                   117709A7 (293013927)\n+0EECCE Compressed Size       000002BF (703)\n+0EECD2 Uncompressed Size     0000056A (1386)\n \n-0CE834 LOCAL HEADER #812     04034B50 (67324752)\n-0CE838 Extract Zip Spec      14 (20) '2.0'\n-0CE839 Extract OS            00 (0) 'MS-DOS'\n-0CE83A General Purpose Flag  0808 (2056)\n+0EECD6 LOCAL HEADER #812     04034B50 (67324752)\n+0EECDA Extract Zip Spec      14 (20) '2.0'\n+0EECDB Extract OS            00 (0) 'MS-DOS'\n+0EECDC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CE83C Compression Method    0008 (8) 'Deflated'\n-0CE83E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CE842 CRC                   00000000 (0)\n-0CE846 Compressed Size       00000000 (0)\n-0CE84A Uncompressed Size     00000000 (0)\n-0CE84E Filename Length       0035 (53)\n-0CE850 Extra Length          0000 (0)\n-0CE852 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EECDE Compression Method    0008 (8) 'Deflated'\n+0EECE0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EECE4 CRC                   00000000 (0)\n+0EECE8 Compressed Size       00000000 (0)\n+0EECEC Uncompressed Size     00000000 (0)\n+0EECF0 Filename Length       0026 (38)\n+0EECF2 Extra Length          0000 (0)\n+0EECF4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCE852: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEECF4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CE887 PAYLOAD\n+0EED1A PAYLOAD               XX\n \n-0CEAC5 DATA DESCRIPTOR       08074B50 (134695760)\n-0CEAC9 CRC                   9CAA7033 (2628415539)\n-0CEACD Compressed Size       0000023E (574)\n-0CEAD1 Uncompressed Size     00000426 (1062)\n+0EED1C DATA DESCRIPTOR       08074B50 (134695760)\n+0EED20 CRC                   00000000 (0)\n+0EED24 Compressed Size       00000002 (2)\n+0EED28 Uncompressed Size     00000000 (0)\n \n-0CEAD5 LOCAL HEADER #813     04034B50 (67324752)\n-0CEAD9 Extract Zip Spec      14 (20) '2.0'\n-0CEADA Extract OS            00 (0) 'MS-DOS'\n-0CEADB General Purpose Flag  0808 (2056)\n+0EED2C LOCAL HEADER #813     04034B50 (67324752)\n+0EED30 Extract Zip Spec      14 (20) '2.0'\n+0EED31 Extract OS            00 (0) 'MS-DOS'\n+0EED32 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CEADD Compression Method    0008 (8) 'Deflated'\n-0CEADF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CEAE3 CRC                   00000000 (0)\n-0CEAE7 Compressed Size       00000000 (0)\n-0CEAEB Uncompressed Size     00000000 (0)\n-0CEAEF Filename Length       0032 (50)\n-0CEAF1 Extra Length          0000 (0)\n-0CEAF3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EED34 Compression Method    0008 (8) 'Deflated'\n+0EED36 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EED3A CRC                   00000000 (0)\n+0EED3E Compressed Size       00000000 (0)\n+0EED42 Uncompressed Size     00000000 (0)\n+0EED46 Filename Length       0035 (53)\n+0EED48 Extra Length          0000 (0)\n+0EED4A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCEAF3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEED4A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CEB25 PAYLOAD\n+0EED7F PAYLOAD\n \n-0CEE34 DATA DESCRIPTOR       08074B50 (134695760)\n-0CEE38 CRC                   C2B7ABEC (3266817004)\n-0CEE3C Compressed Size       0000030F (783)\n-0CEE40 Uncompressed Size     000007C9 (1993)\n+0EF266 DATA DESCRIPTOR       08074B50 (134695760)\n+0EF26A CRC                   A1B16DDC (2712759772)\n+0EF26E Compressed Size       000004E7 (1255)\n+0EF272 Uncompressed Size     00000BB9 (3001)\n \n-0CEE44 LOCAL HEADER #814     04034B50 (67324752)\n-0CEE48 Extract Zip Spec      14 (20) '2.0'\n-0CEE49 Extract OS            00 (0) 'MS-DOS'\n-0CEE4A General Purpose Flag  0808 (2056)\n+0EF276 LOCAL HEADER #814     04034B50 (67324752)\n+0EF27A Extract Zip Spec      14 (20) '2.0'\n+0EF27B Extract OS            00 (0) 'MS-DOS'\n+0EF27C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CEE4C Compression Method    0008 (8) 'Deflated'\n-0CEE4E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CEE52 CRC                   00000000 (0)\n-0CEE56 Compressed Size       00000000 (0)\n-0CEE5A Uncompressed Size     00000000 (0)\n-0CEE5E Filename Length       0030 (48)\n-0CEE60 Extra Length          0000 (0)\n-0CEE62 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EF27E Compression Method    0008 (8) 'Deflated'\n+0EF280 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EF284 CRC                   00000000 (0)\n+0EF288 Compressed Size       00000000 (0)\n+0EF28C Uncompressed Size     00000000 (0)\n+0EF290 Filename Length       0027 (39)\n+0EF292 Extra Length          0000 (0)\n+0EF294 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCEE62: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEF294: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CEE92 PAYLOAD\n+0EF2BB PAYLOAD               XX\n \n-0CF1E3 DATA DESCRIPTOR       08074B50 (134695760)\n-0CF1E7 CRC                   2C4FF5E6 (743437798)\n-0CF1EB Compressed Size       00000351 (849)\n-0CF1EF Uncompressed Size     0000075E (1886)\n+0EF2BD DATA DESCRIPTOR       08074B50 (134695760)\n+0EF2C1 CRC                   00000000 (0)\n+0EF2C5 Compressed Size       00000002 (2)\n+0EF2C9 Uncompressed Size     00000000 (0)\n \n-0CF1F3 LOCAL HEADER #815     04034B50 (67324752)\n-0CF1F7 Extract Zip Spec      14 (20) '2.0'\n-0CF1F8 Extract OS            00 (0) 'MS-DOS'\n-0CF1F9 General Purpose Flag  0808 (2056)\n+0EF2CD LOCAL HEADER #815     04034B50 (67324752)\n+0EF2D1 Extract Zip Spec      14 (20) '2.0'\n+0EF2D2 Extract OS            00 (0) 'MS-DOS'\n+0EF2D3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CF1FB Compression Method    0008 (8) 'Deflated'\n-0CF1FD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CF201 CRC                   00000000 (0)\n-0CF205 Compressed Size       00000000 (0)\n-0CF209 Uncompressed Size     00000000 (0)\n-0CF20D Filename Length       0038 (56)\n-0CF20F Extra Length          0000 (0)\n-0CF211 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EF2D5 Compression Method    0008 (8) 'Deflated'\n+0EF2D7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EF2DB CRC                   00000000 (0)\n+0EF2DF Compressed Size       00000000 (0)\n+0EF2E3 Uncompressed Size     00000000 (0)\n+0EF2E7 Filename Length       003E (62)\n+0EF2E9 Extra Length          0000 (0)\n+0EF2EB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCF211: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEF2EB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CF249 PAYLOAD\n+0EF329 PAYLOAD\n \n-0CF489 DATA DESCRIPTOR       08074B50 (134695760)\n-0CF48D CRC                   420D2C18 (1108159512)\n-0CF491 Compressed Size       00000240 (576)\n-0CF495 Uncompressed Size     0000042C (1068)\n+0EF9F5 DATA DESCRIPTOR       08074B50 (134695760)\n+0EF9F9 CRC                   43B8CAA4 (1136183972)\n+0EF9FD Compressed Size       000006CC (1740)\n+0EFA01 Uncompressed Size     00001D14 (7444)\n \n-0CF499 LOCAL HEADER #816     04034B50 (67324752)\n-0CF49D Extract Zip Spec      14 (20) '2.0'\n-0CF49E Extract OS            00 (0) 'MS-DOS'\n-0CF49F General Purpose Flag  0808 (2056)\n+0EFA05 LOCAL HEADER #816     04034B50 (67324752)\n+0EFA09 Extract Zip Spec      14 (20) '2.0'\n+0EFA0A Extract OS            00 (0) 'MS-DOS'\n+0EFA0B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CF4A1 Compression Method    0008 (8) 'Deflated'\n-0CF4A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CF4A7 CRC                   00000000 (0)\n-0CF4AB Compressed Size       00000000 (0)\n-0CF4AF Uncompressed Size     00000000 (0)\n-0CF4B3 Filename Length       001D (29)\n-0CF4B5 Extra Length          0000 (0)\n-0CF4B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EFA0D Compression Method    0008 (8) 'Deflated'\n+0EFA0F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EFA13 CRC                   00000000 (0)\n+0EFA17 Compressed Size       00000000 (0)\n+0EFA1B Uncompressed Size     00000000 (0)\n+0EFA1F Filename Length       0046 (70)\n+0EFA21 Extra Length          0000 (0)\n+0EFA23 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCF4B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEFA23: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CF4D4 PAYLOAD               XX\n+0EFA69 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-0CF4D6 DATA DESCRIPTOR       08074B50 (134695760)\n-0CF4DA CRC                   00000000 (0)\n-0CF4DE Compressed Size       00000002 (2)\n-0CF4E2 Uncompressed Size     00000000 (0)\n+0EFA9F DATA DESCRIPTOR       08074B50 (134695760)\n+0EFAA3 CRC                   91BA560C (2444908044)\n+0EFAA7 Compressed Size       00000036 (54)\n+0EFAAB Uncompressed Size     0000003B (59)\n \n-0CF4E6 LOCAL HEADER #817     04034B50 (67324752)\n-0CF4EA Extract Zip Spec      14 (20) '2.0'\n-0CF4EB Extract OS            00 (0) 'MS-DOS'\n-0CF4EC General Purpose Flag  0808 (2056)\n+0EFAAF LOCAL HEADER #817     04034B50 (67324752)\n+0EFAB3 Extract Zip Spec      14 (20) '2.0'\n+0EFAB4 Extract OS            00 (0) 'MS-DOS'\n+0EFAB5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CF4EE Compression Method    0008 (8) 'Deflated'\n-0CF4F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CF4F4 CRC                   00000000 (0)\n-0CF4F8 Compressed Size       00000000 (0)\n-0CF4FC Uncompressed Size     00000000 (0)\n-0CF500 Filename Length       0036 (54)\n-0CF502 Extra Length          0000 (0)\n-0CF504 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EFAB7 Compression Method    0008 (8) 'Deflated'\n+0EFAB9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EFABD CRC                   00000000 (0)\n+0EFAC1 Compressed Size       00000000 (0)\n+0EFAC5 Uncompressed Size     00000000 (0)\n+0EFAC9 Filename Length       0035 (53)\n+0EFACB Extra Length          0000 (0)\n+0EFACD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCF504: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEFACD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CF53A PAYLOAD\n+0EFB02 PAYLOAD               XX\n \n-0CF911 DATA DESCRIPTOR       08074B50 (134695760)\n-0CF915 CRC                   40BAC24E (1085981262)\n-0CF919 Compressed Size       000003D7 (983)\n-0CF91D Uncompressed Size     00000B49 (2889)\n+0EFB04 DATA DESCRIPTOR       08074B50 (134695760)\n+0EFB08 CRC                   00000000 (0)\n+0EFB0C Compressed Size       00000002 (2)\n+0EFB10 Uncompressed Size     00000000 (0)\n \n-0CF921 LOCAL HEADER #818     04034B50 (67324752)\n-0CF925 Extract Zip Spec      14 (20) '2.0'\n-0CF926 Extract OS            00 (0) 'MS-DOS'\n-0CF927 General Purpose Flag  0808 (2056)\n+0EFB14 LOCAL HEADER #818     04034B50 (67324752)\n+0EFB18 Extract Zip Spec      14 (20) '2.0'\n+0EFB19 Extract OS            00 (0) 'MS-DOS'\n+0EFB1A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CF929 Compression Method    0008 (8) 'Deflated'\n-0CF92B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CF92F CRC                   00000000 (0)\n-0CF933 Compressed Size       00000000 (0)\n-0CF937 Uncompressed Size     00000000 (0)\n-0CF93B Filename Length       002F (47)\n-0CF93D Extra Length          0000 (0)\n-0CF93F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EFB1C Compression Method    0008 (8) 'Deflated'\n+0EFB1E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EFB22 CRC                   00000000 (0)\n+0EFB26 Compressed Size       00000000 (0)\n+0EFB2A Uncompressed Size     00000000 (0)\n+0EFB2E Filename Length       003C (60)\n+0EFB30 Extra Length          0000 (0)\n+0EFB32 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCF93F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEFB32: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CF96E PAYLOAD\n+0EFB6E PAYLOAD\n \n-0CFDFA DATA DESCRIPTOR       08074B50 (134695760)\n-0CFDFE CRC                   CC5CA724 (3428624164)\n-0CFE02 Compressed Size       0000048C (1164)\n-0CFE06 Uncompressed Size     0000105D (4189)\n+0EFFBE DATA DESCRIPTOR       08074B50 (134695760)\n+0EFFC2 CRC                   DB79C8F6 (3682191606)\n+0EFFC6 Compressed Size       00000450 (1104)\n+0EFFCA Uncompressed Size     00000E01 (3585)\n \n-0CFE0A LOCAL HEADER #819     04034B50 (67324752)\n-0CFE0E Extract Zip Spec      14 (20) '2.0'\n-0CFE0F Extract OS            00 (0) 'MS-DOS'\n-0CFE10 General Purpose Flag  0808 (2056)\n+0EFFCE LOCAL HEADER #819     04034B50 (67324752)\n+0EFFD2 Extract Zip Spec      14 (20) '2.0'\n+0EFFD3 Extract OS            00 (0) 'MS-DOS'\n+0EFFD4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CFE12 Compression Method    0008 (8) 'Deflated'\n-0CFE14 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CFE18 CRC                   00000000 (0)\n-0CFE1C Compressed Size       00000000 (0)\n-0CFE20 Uncompressed Size     00000000 (0)\n-0CFE24 Filename Length       0044 (68)\n-0CFE26 Extra Length          0000 (0)\n-0CFE28 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0EFFD6 Compression Method    0008 (8) 'Deflated'\n+0EFFD8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0EFFDC CRC                   00000000 (0)\n+0EFFE0 Compressed Size       00000000 (0)\n+0EFFE4 Uncompressed Size     00000000 (0)\n+0EFFE8 Filename Length       0043 (67)\n+0EFFEA Extra Length          0000 (0)\n+0EFFEC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCFE28: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xEFFEC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CFE6C PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0F002F PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-0CFED0 DATA DESCRIPTOR       08074B50 (134695760)\n-0CFED4 CRC                   DA7850A4 (3665318052)\n-0CFED8 Compressed Size       00000064 (100)\n-0CFEDC Uncompressed Size     000000A3 (163)\n+0F0078 DATA DESCRIPTOR       08074B50 (134695760)\n+0F007C CRC                   D4B7125F (3568767583)\n+0F0080 Compressed Size       00000049 (73)\n+0F0084 Uncompressed Size     0000004B (75)\n \n-0CFEE0 LOCAL HEADER #820     04034B50 (67324752)\n-0CFEE4 Extract Zip Spec      14 (20) '2.0'\n-0CFEE5 Extract OS            00 (0) 'MS-DOS'\n-0CFEE6 General Purpose Flag  0808 (2056)\n+0F0088 LOCAL HEADER #820     04034B50 (67324752)\n+0F008C Extract Zip Spec      14 (20) '2.0'\n+0F008D Extract OS            00 (0) 'MS-DOS'\n+0F008E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CFEE8 Compression Method    0008 (8) 'Deflated'\n-0CFEEA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CFEEE CRC                   00000000 (0)\n-0CFEF2 Compressed Size       00000000 (0)\n-0CFEF6 Uncompressed Size     00000000 (0)\n-0CFEFA Filename Length       0055 (85)\n-0CFEFC Extra Length          0000 (0)\n-0CFEFE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F0090 Compression Method    0008 (8) 'Deflated'\n+0F0092 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F0096 CRC                   00000000 (0)\n+0F009A Compressed Size       00000000 (0)\n+0F009E Uncompressed Size     00000000 (0)\n+0F00A2 Filename Length       0029 (41)\n+0F00A4 Extra Length          0000 (0)\n+0F00A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCFEFE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF00A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0CFF53 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0F00CF PAYLOAD               XX\n \n-0CFF9A DATA DESCRIPTOR       08074B50 (134695760)\n-0CFF9E CRC                   BF790872 (3212380274)\n-0CFFA2 Compressed Size       00000047 (71)\n-0CFFA6 Uncompressed Size     0000004C (76)\n+0F00D1 DATA DESCRIPTOR       08074B50 (134695760)\n+0F00D5 CRC                   00000000 (0)\n+0F00D9 Compressed Size       00000002 (2)\n+0F00DD Uncompressed Size     00000000 (0)\n \n-0CFFAA LOCAL HEADER #821     04034B50 (67324752)\n-0CFFAE Extract Zip Spec      14 (20) '2.0'\n-0CFFAF Extract OS            00 (0) 'MS-DOS'\n-0CFFB0 General Purpose Flag  0808 (2056)\n+0F00E1 LOCAL HEADER #821     04034B50 (67324752)\n+0F00E5 Extract Zip Spec      14 (20) '2.0'\n+0F00E6 Extract OS            00 (0) 'MS-DOS'\n+0F00E7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0CFFB2 Compression Method    0008 (8) 'Deflated'\n-0CFFB4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0CFFB8 CRC                   00000000 (0)\n-0CFFBC Compressed Size       00000000 (0)\n-0CFFC0 Uncompressed Size     00000000 (0)\n-0CFFC4 Filename Length       0049 (73)\n-0CFFC6 Extra Length          0000 (0)\n-0CFFC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F00E9 Compression Method    0008 (8) 'Deflated'\n+0F00EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F00EF CRC                   00000000 (0)\n+0F00F3 Compressed Size       00000000 (0)\n+0F00F7 Uncompressed Size     00000000 (0)\n+0F00FB Filename Length       0039 (57)\n+0F00FD Extra Length          0000 (0)\n+0F00FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xCFFC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF00FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D0011 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+0F0138 PAYLOAD\n \n-0D0052 DATA DESCRIPTOR       08074B50 (134695760)\n-0D0056 CRC                   BA3A525C (3124384348)\n-0D005A Compressed Size       00000041 (65)\n-0D005E Uncompressed Size     00000071 (113)\n+0F07C9 DATA DESCRIPTOR       08074B50 (134695760)\n+0F07CD CRC                   0EB2B1F5 (246591989)\n+0F07D1 Compressed Size       00000691 (1681)\n+0F07D5 Uncompressed Size     000017B3 (6067)\n \n-0D0062 LOCAL HEADER #822     04034B50 (67324752)\n-0D0066 Extract Zip Spec      14 (20) '2.0'\n-0D0067 Extract OS            00 (0) 'MS-DOS'\n-0D0068 General Purpose Flag  0808 (2056)\n+0F07D9 LOCAL HEADER #822     04034B50 (67324752)\n+0F07DD Extract Zip Spec      14 (20) '2.0'\n+0F07DE Extract OS            00 (0) 'MS-DOS'\n+0F07DF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D006A Compression Method    0008 (8) 'Deflated'\n-0D006C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D0070 CRC                   00000000 (0)\n-0D0074 Compressed Size       00000000 (0)\n-0D0078 Uncompressed Size     00000000 (0)\n-0D007C Filename Length       0017 (23)\n-0D007E Extra Length          0000 (0)\n-0D0080 Filename              'XXXXXXXXXXXXXXXXXXXXXXX'\n+0F07E1 Compression Method    0008 (8) 'Deflated'\n+0F07E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F07E7 CRC                   00000000 (0)\n+0F07EB Compressed Size       00000000 (0)\n+0F07EF Uncompressed Size     00000000 (0)\n+0F07F3 Filename Length       0038 (56)\n+0F07F5 Extra Length          0000 (0)\n+0F07F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD0080: Filename 'XXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF07F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D0097 PAYLOAD               XX\n+0F082F PAYLOAD\n \n-0D0099 DATA DESCRIPTOR       08074B50 (134695760)\n-0D009D CRC                   00000000 (0)\n-0D00A1 Compressed Size       00000002 (2)\n-0D00A5 Uncompressed Size     00000000 (0)\n+0F109B DATA DESCRIPTOR       08074B50 (134695760)\n+0F109F CRC                   B6BACA35 (3065694773)\n+0F10A3 Compressed Size       0000086C (2156)\n+0F10A7 Uncompressed Size     00001D98 (7576)\n \n-0D00A9 LOCAL HEADER #823     04034B50 (67324752)\n-0D00AD Extract Zip Spec      14 (20) '2.0'\n-0D00AE Extract OS            00 (0) 'MS-DOS'\n-0D00AF General Purpose Flag  0808 (2056)\n+0F10AB LOCAL HEADER #823     04034B50 (67324752)\n+0F10AF Extract Zip Spec      14 (20) '2.0'\n+0F10B0 Extract OS            00 (0) 'MS-DOS'\n+0F10B1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D00B1 Compression Method    0008 (8) 'Deflated'\n-0D00B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D00B7 CRC                   00000000 (0)\n-0D00BB Compressed Size       00000000 (0)\n-0D00BF Uncompressed Size     00000000 (0)\n-0D00C3 Filename Length       0021 (33)\n-0D00C5 Extra Length          0000 (0)\n-0D00C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F10B3 Compression Method    0008 (8) 'Deflated'\n+0F10B5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F10B9 CRC                   00000000 (0)\n+0F10BD Compressed Size       00000000 (0)\n+0F10C1 Uncompressed Size     00000000 (0)\n+0F10C5 Filename Length       003E (62)\n+0F10C7 Extra Length          0000 (0)\n+0F10C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD00C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF10C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D00E8 PAYLOAD\n+0F1107 PAYLOAD\n \n-0D0404 DATA DESCRIPTOR       08074B50 (134695760)\n-0D0408 CRC                   4E701AB1 (1315969713)\n-0D040C Compressed Size       0000031C (796)\n-0D0410 Uncompressed Size     000006EA (1770)\n+0F1774 DATA DESCRIPTOR       08074B50 (134695760)\n+0F1778 CRC                   E154BEF4 (3780427508)\n+0F177C Compressed Size       0000066D (1645)\n+0F1780 Uncompressed Size     0000187E (6270)\n \n-0D0414 LOCAL HEADER #824     04034B50 (67324752)\n-0D0418 Extract Zip Spec      14 (20) '2.0'\n-0D0419 Extract OS            00 (0) 'MS-DOS'\n-0D041A General Purpose Flag  0808 (2056)\n+0F1784 LOCAL HEADER #824     04034B50 (67324752)\n+0F1788 Extract Zip Spec      14 (20) '2.0'\n+0F1789 Extract OS            00 (0) 'MS-DOS'\n+0F178A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D041C Compression Method    0008 (8) 'Deflated'\n-0D041E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D0422 CRC                   00000000 (0)\n-0D0426 Compressed Size       00000000 (0)\n-0D042A Uncompressed Size     00000000 (0)\n-0D042E Filename Length       0028 (40)\n-0D0430 Extra Length          0000 (0)\n-0D0432 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F178C Compression Method    0008 (8) 'Deflated'\n+0F178E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F1792 CRC                   00000000 (0)\n+0F1796 Compressed Size       00000000 (0)\n+0F179A Uncompressed Size     00000000 (0)\n+0F179E Filename Length       0039 (57)\n+0F17A0 Extra Length          0000 (0)\n+0F17A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD0432: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF17A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D045A PAYLOAD\n+0F17DB PAYLOAD\n \n-0D0786 DATA DESCRIPTOR       08074B50 (134695760)\n-0D078A CRC                   95722913 (2507286803)\n-0D078E Compressed Size       0000032C (812)\n-0D0792 Uncompressed Size     000006C2 (1730)\n+0F1B56 DATA DESCRIPTOR       08074B50 (134695760)\n+0F1B5A CRC                   B2448F97 (2990837655)\n+0F1B5E Compressed Size       0000037B (891)\n+0F1B62 Uncompressed Size     00000CB7 (3255)\n \n-0D0796 LOCAL HEADER #825     04034B50 (67324752)\n-0D079A Extract Zip Spec      14 (20) '2.0'\n-0D079B Extract OS            00 (0) 'MS-DOS'\n-0D079C General Purpose Flag  0808 (2056)\n+0F1B66 LOCAL HEADER #825     04034B50 (67324752)\n+0F1B6A Extract Zip Spec      14 (20) '2.0'\n+0F1B6B Extract OS            00 (0) 'MS-DOS'\n+0F1B6C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D079E Compression Method    0008 (8) 'Deflated'\n-0D07A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D07A4 CRC                   00000000 (0)\n-0D07A8 Compressed Size       00000000 (0)\n-0D07AC Uncompressed Size     00000000 (0)\n-0D07B0 Filename Length       001E (30)\n-0D07B2 Extra Length          0000 (0)\n-0D07B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F1B6E Compression Method    0008 (8) 'Deflated'\n+0F1B70 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F1B74 CRC                   00000000 (0)\n+0F1B78 Compressed Size       00000000 (0)\n+0F1B7C Uncompressed Size     00000000 (0)\n+0F1B80 Filename Length       0038 (56)\n+0F1B82 Extra Length          0000 (0)\n+0F1B84 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD07B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF1B84: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D07D2 PAYLOAD               XX\n+0F1BBC PAYLOAD\n \n-0D07D4 DATA DESCRIPTOR       08074B50 (134695760)\n-0D07D8 CRC                   00000000 (0)\n-0D07DC Compressed Size       00000002 (2)\n-0D07E0 Uncompressed Size     00000000 (0)\n+0F216E DATA DESCRIPTOR       08074B50 (134695760)\n+0F2172 CRC                   A33A370C (2738501388)\n+0F2176 Compressed Size       000005B2 (1458)\n+0F217A Uncompressed Size     000010ED (4333)\n \n-0D07E4 LOCAL HEADER #826     04034B50 (67324752)\n-0D07E8 Extract Zip Spec      14 (20) '2.0'\n-0D07E9 Extract OS            00 (0) 'MS-DOS'\n-0D07EA General Purpose Flag  0808 (2056)\n+0F217E LOCAL HEADER #826     04034B50 (67324752)\n+0F2182 Extract Zip Spec      14 (20) '2.0'\n+0F2183 Extract OS            00 (0) 'MS-DOS'\n+0F2184 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D07EC Compression Method    0008 (8) 'Deflated'\n-0D07EE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D07F2 CRC                   00000000 (0)\n-0D07F6 Compressed Size       00000000 (0)\n-0D07FA Uncompressed Size     00000000 (0)\n-0D07FE Filename Length       002E (46)\n-0D0800 Extra Length          0000 (0)\n-0D0802 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F2186 Compression Method    0008 (8) 'Deflated'\n+0F2188 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F218C CRC                   00000000 (0)\n+0F2190 Compressed Size       00000000 (0)\n+0F2194 Uncompressed Size     00000000 (0)\n+0F2198 Filename Length       003D (61)\n+0F219A Extra Length          0000 (0)\n+0F219C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD0802: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF219C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D0830 PAYLOAD\n+0F21D9 PAYLOAD\n \n-0D0FC0 DATA DESCRIPTOR       08074B50 (134695760)\n-0D0FC4 CRC                   0E9E2711 (245245713)\n-0D0FC8 Compressed Size       00000790 (1936)\n-0D0FCC Uncompressed Size     000016CB (5835)\n+0F2486 DATA DESCRIPTOR       08074B50 (134695760)\n+0F248A CRC                   242C94A2 (606901410)\n+0F248E Compressed Size       000002AD (685)\n+0F2492 Uncompressed Size     0000062C (1580)\n \n-0D0FD0 LOCAL HEADER #827     04034B50 (67324752)\n-0D0FD4 Extract Zip Spec      14 (20) '2.0'\n-0D0FD5 Extract OS            00 (0) 'MS-DOS'\n-0D0FD6 General Purpose Flag  0808 (2056)\n+0F2496 LOCAL HEADER #827     04034B50 (67324752)\n+0F249A Extract Zip Spec      14 (20) '2.0'\n+0F249B Extract OS            00 (0) 'MS-DOS'\n+0F249C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D0FD8 Compression Method    0008 (8) 'Deflated'\n-0D0FDA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D0FDE CRC                   00000000 (0)\n-0D0FE2 Compressed Size       00000000 (0)\n-0D0FE6 Uncompressed Size     00000000 (0)\n-0D0FEA Filename Length       001F (31)\n-0D0FEC Extra Length          0000 (0)\n-0D0FEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F249E Compression Method    0008 (8) 'Deflated'\n+0F24A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F24A4 CRC                   00000000 (0)\n+0F24A8 Compressed Size       00000000 (0)\n+0F24AC Uncompressed Size     00000000 (0)\n+0F24B0 Filename Length       0034 (52)\n+0F24B2 Extra Length          0000 (0)\n+0F24B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD0FEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF24B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D100D PAYLOAD               XX\n+0F24E8 PAYLOAD               XX\n \n-0D100F DATA DESCRIPTOR       08074B50 (134695760)\n-0D1013 CRC                   00000000 (0)\n-0D1017 Compressed Size       00000002 (2)\n-0D101B Uncompressed Size     00000000 (0)\n+0F24EA DATA DESCRIPTOR       08074B50 (134695760)\n+0F24EE CRC                   00000000 (0)\n+0F24F2 Compressed Size       00000002 (2)\n+0F24F6 Uncompressed Size     00000000 (0)\n \n-0D101F LOCAL HEADER #828     04034B50 (67324752)\n-0D1023 Extract Zip Spec      14 (20) '2.0'\n-0D1024 Extract OS            00 (0) 'MS-DOS'\n-0D1025 General Purpose Flag  0808 (2056)\n+0F24FA LOCAL HEADER #828     04034B50 (67324752)\n+0F24FE Extract Zip Spec      14 (20) '2.0'\n+0F24FF Extract OS            00 (0) 'MS-DOS'\n+0F2500 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D1027 Compression Method    0008 (8) 'Deflated'\n-0D1029 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D102D CRC                   00000000 (0)\n-0D1031 Compressed Size       00000000 (0)\n-0D1035 Uncompressed Size     00000000 (0)\n-0D1039 Filename Length       0038 (56)\n-0D103B Extra Length          0000 (0)\n-0D103D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F2502 Compression Method    0008 (8) 'Deflated'\n+0F2504 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F2508 CRC                   00000000 (0)\n+0F250C Compressed Size       00000000 (0)\n+0F2510 Uncompressed Size     00000000 (0)\n+0F2514 Filename Length       003B (59)\n+0F2516 Extra Length          0000 (0)\n+0F2518 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD103D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF2518: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D1075 PAYLOAD\n+0F2553 PAYLOAD\n \n-0D152A DATA DESCRIPTOR       08074B50 (134695760)\n-0D152E CRC                   048D5F10 (76373776)\n-0D1532 Compressed Size       000004B5 (1205)\n-0D1536 Uncompressed Size     00000C38 (3128)\n+0F28F2 DATA DESCRIPTOR       08074B50 (134695760)\n+0F28F6 CRC                   5512F588 (1427305864)\n+0F28FA Compressed Size       0000039F (927)\n+0F28FE Uncompressed Size     0000094F (2383)\n \n-0D153A LOCAL HEADER #829     04034B50 (67324752)\n-0D153E Extract Zip Spec      14 (20) '2.0'\n-0D153F Extract OS            00 (0) 'MS-DOS'\n-0D1540 General Purpose Flag  0808 (2056)\n+0F2902 LOCAL HEADER #829     04034B50 (67324752)\n+0F2906 Extract Zip Spec      14 (20) '2.0'\n+0F2907 Extract OS            00 (0) 'MS-DOS'\n+0F2908 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D1542 Compression Method    0008 (8) 'Deflated'\n-0D1544 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D1548 CRC                   00000000 (0)\n-0D154C Compressed Size       00000000 (0)\n-0D1550 Uncompressed Size     00000000 (0)\n-0D1554 Filename Length       0028 (40)\n-0D1556 Extra Length          0000 (0)\n-0D1558 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F290A Compression Method    0008 (8) 'Deflated'\n+0F290C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F2910 CRC                   00000000 (0)\n+0F2914 Compressed Size       00000000 (0)\n+0F2918 Uncompressed Size     00000000 (0)\n+0F291C Filename Length       0042 (66)\n+0F291E Extra Length          0000 (0)\n+0F2920 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD1558: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF2920: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D1580 PAYLOAD               XX\n+0F2962 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-0D1582 DATA DESCRIPTOR       08074B50 (134695760)\n-0D1586 CRC                   00000000 (0)\n-0D158A Compressed Size       00000002 (2)\n-0D158E Uncompressed Size     00000000 (0)\n+0F29AA DATA DESCRIPTOR       08074B50 (134695760)\n+0F29AE CRC                   423C5CE6 (1111252198)\n+0F29B2 Compressed Size       00000048 (72)\n+0F29B6 Uncompressed Size     0000004A (74)\n \n-0D1592 LOCAL HEADER #830     04034B50 (67324752)\n-0D1596 Extract Zip Spec      14 (20) '2.0'\n-0D1597 Extract OS            00 (0) 'MS-DOS'\n-0D1598 General Purpose Flag  0808 (2056)\n+0F29BA LOCAL HEADER #830     04034B50 (67324752)\n+0F29BE Extract Zip Spec      14 (20) '2.0'\n+0F29BF Extract OS            00 (0) 'MS-DOS'\n+0F29C0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D159A Compression Method    0008 (8) 'Deflated'\n-0D159C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D15A0 CRC                   00000000 (0)\n-0D15A4 Compressed Size       00000000 (0)\n-0D15A8 Uncompressed Size     00000000 (0)\n-0D15AC Filename Length       003A (58)\n-0D15AE Extra Length          0000 (0)\n-0D15B0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F29C2 Compression Method    0008 (8) 'Deflated'\n+0F29C4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F29C8 CRC                   00000000 (0)\n+0F29CC Compressed Size       00000000 (0)\n+0F29D0 Uncompressed Size     00000000 (0)\n+0F29D4 Filename Length       002C (44)\n+0F29D6 Extra Length          0000 (0)\n+0F29D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD15B0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF29D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D15EA PAYLOAD\n+0F2A04 PAYLOAD               XX\n \n-0D1B09 DATA DESCRIPTOR       08074B50 (134695760)\n-0D1B0D CRC                   6447E2ED (1682432749)\n-0D1B11 Compressed Size       0000051F (1311)\n-0D1B15 Uncompressed Size     00000C52 (3154)\n+0F2A06 DATA DESCRIPTOR       08074B50 (134695760)\n+0F2A0A CRC                   00000000 (0)\n+0F2A0E Compressed Size       00000002 (2)\n+0F2A12 Uncompressed Size     00000000 (0)\n \n-0D1B19 LOCAL HEADER #831     04034B50 (67324752)\n-0D1B1D Extract Zip Spec      14 (20) '2.0'\n-0D1B1E Extract OS            00 (0) 'MS-DOS'\n-0D1B1F General Purpose Flag  0808 (2056)\n+0F2A16 LOCAL HEADER #831     04034B50 (67324752)\n+0F2A1A Extract Zip Spec      14 (20) '2.0'\n+0F2A1B Extract OS            00 (0) 'MS-DOS'\n+0F2A1C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D1B21 Compression Method    0008 (8) 'Deflated'\n-0D1B23 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D1B27 CRC                   00000000 (0)\n-0D1B2B Compressed Size       00000000 (0)\n-0D1B2F Uncompressed Size     00000000 (0)\n-0D1B33 Filename Length       0041 (65)\n-0D1B35 Extra Length          0000 (0)\n-0D1B37 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F2A1E Compression Method    0008 (8) 'Deflated'\n+0F2A20 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F2A24 CRC                   00000000 (0)\n+0F2A28 Compressed Size       00000000 (0)\n+0F2A2C Uncompressed Size     00000000 (0)\n+0F2A30 Filename Length       003F (63)\n+0F2A32 Extra Length          0000 (0)\n+0F2A34 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD1B37: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF2A34: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D1B78 PAYLOAD\n+0F2A73 PAYLOAD\n \n-0D1E6A DATA DESCRIPTOR       08074B50 (134695760)\n-0D1E6E CRC                   11FDDB06 (301849350)\n-0D1E72 Compressed Size       000002F2 (754)\n-0D1E76 Uncompressed Size     0000065F (1631)\n+0F317C DATA DESCRIPTOR       08074B50 (134695760)\n+0F3180 CRC                   56951E3F (1452613183)\n+0F3184 Compressed Size       00000709 (1801)\n+0F3188 Uncompressed Size     0000197F (6527)\n \n-0D1E7A LOCAL HEADER #832     04034B50 (67324752)\n-0D1E7E Extract Zip Spec      14 (20) '2.0'\n-0D1E7F Extract OS            00 (0) 'MS-DOS'\n-0D1E80 General Purpose Flag  0808 (2056)\n+0F318C LOCAL HEADER #832     04034B50 (67324752)\n+0F3190 Extract Zip Spec      14 (20) '2.0'\n+0F3191 Extract OS            00 (0) 'MS-DOS'\n+0F3192 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D1E82 Compression Method    0008 (8) 'Deflated'\n-0D1E84 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D1E88 CRC                   00000000 (0)\n-0D1E8C Compressed Size       00000000 (0)\n-0D1E90 Uncompressed Size     00000000 (0)\n-0D1E94 Filename Length       0038 (56)\n-0D1E96 Extra Length          0000 (0)\n-0D1E98 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F3194 Compression Method    0008 (8) 'Deflated'\n+0F3196 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F319A CRC                   00000000 (0)\n+0F319E Compressed Size       00000000 (0)\n+0F31A2 Uncompressed Size     00000000 (0)\n+0F31A6 Filename Length       003E (62)\n+0F31A8 Extra Length          0000 (0)\n+0F31AA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD1E98: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF31AA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D1ED0 PAYLOAD\n+0F31E8 PAYLOAD\n \n-0D2899 DATA DESCRIPTOR       08074B50 (134695760)\n-0D289D CRC                   58EB82E0 (1491829472)\n-0D28A1 Compressed Size       000009C9 (2505)\n-0D28A5 Uncompressed Size     00002969 (10601)\n+0F3796 DATA DESCRIPTOR       08074B50 (134695760)\n+0F379A CRC                   42023036 (1107439670)\n+0F379E Compressed Size       000005AE (1454)\n+0F37A2 Uncompressed Size     000010C6 (4294)\n \n-0D28A9 LOCAL HEADER #833     04034B50 (67324752)\n-0D28AD Extract Zip Spec      14 (20) '2.0'\n-0D28AE Extract OS            00 (0) 'MS-DOS'\n-0D28AF General Purpose Flag  0808 (2056)\n+0F37A6 LOCAL HEADER #833     04034B50 (67324752)\n+0F37AA Extract Zip Spec      14 (20) '2.0'\n+0F37AB Extract OS            00 (0) 'MS-DOS'\n+0F37AC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D28B1 Compression Method    0008 (8) 'Deflated'\n-0D28B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D28B7 CRC                   00000000 (0)\n-0D28BB Compressed Size       00000000 (0)\n-0D28BF Uncompressed Size     00000000 (0)\n-0D28C3 Filename Length       0026 (38)\n-0D28C5 Extra Length          0000 (0)\n-0D28C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F37AE Compression Method    0008 (8) 'Deflated'\n+0F37B0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F37B4 CRC                   00000000 (0)\n+0F37B8 Compressed Size       00000000 (0)\n+0F37BC Uncompressed Size     00000000 (0)\n+0F37C0 Filename Length       0044 (68)\n+0F37C2 Extra Length          0000 (0)\n+0F37C4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD28C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF37C4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D28ED PAYLOAD               XX\n+0F3808 PAYLOAD\n \n-0D28EF DATA DESCRIPTOR       08074B50 (134695760)\n-0D28F3 CRC                   00000000 (0)\n-0D28F7 Compressed Size       00000002 (2)\n-0D28FB Uncompressed Size     00000000 (0)\n+0F3E9B DATA DESCRIPTOR       08074B50 (134695760)\n+0F3E9F CRC                   52180500 (1377305856)\n+0F3EA3 Compressed Size       00000693 (1683)\n+0F3EA7 Uncompressed Size     000017DE (6110)\n \n-0D28FF LOCAL HEADER #834     04034B50 (67324752)\n-0D2903 Extract Zip Spec      14 (20) '2.0'\n-0D2904 Extract OS            00 (0) 'MS-DOS'\n-0D2905 General Purpose Flag  0808 (2056)\n+0F3EAB LOCAL HEADER #834     04034B50 (67324752)\n+0F3EAF Extract Zip Spec      14 (20) '2.0'\n+0F3EB0 Extract OS            00 (0) 'MS-DOS'\n+0F3EB1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D2907 Compression Method    0008 (8) 'Deflated'\n-0D2909 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D290D CRC                   00000000 (0)\n-0D2911 Compressed Size       00000000 (0)\n-0D2915 Uncompressed Size     00000000 (0)\n-0D2919 Filename Length       0031 (49)\n-0D291B Extra Length          0000 (0)\n-0D291D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F3EB3 Compression Method    0008 (8) 'Deflated'\n+0F3EB5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F3EB9 CRC                   00000000 (0)\n+0F3EBD Compressed Size       00000000 (0)\n+0F3EC1 Uncompressed Size     00000000 (0)\n+0F3EC5 Filename Length       003F (63)\n+0F3EC7 Extra Length          0000 (0)\n+0F3EC9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD291D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF3EC9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D294E PAYLOAD\n+0F3F08 PAYLOAD\n \n-0D2EB1 DATA DESCRIPTOR       08074B50 (134695760)\n-0D2EB5 CRC                   5EA7953B (1588041019)\n-0D2EB9 Compressed Size       00000563 (1379)\n-0D2EBD Uncompressed Size     00000E48 (3656)\n+0F432C DATA DESCRIPTOR       08074B50 (134695760)\n+0F4330 CRC                   EC29A626 (3962152486)\n+0F4334 Compressed Size       00000424 (1060)\n+0F4338 Uncompressed Size     000011CA (4554)\n \n-0D2EC1 LOCAL HEADER #835     04034B50 (67324752)\n-0D2EC5 Extract Zip Spec      14 (20) '2.0'\n-0D2EC6 Extract OS            00 (0) 'MS-DOS'\n-0D2EC7 General Purpose Flag  0808 (2056)\n+0F433C LOCAL HEADER #835     04034B50 (67324752)\n+0F4340 Extract Zip Spec      14 (20) '2.0'\n+0F4341 Extract OS            00 (0) 'MS-DOS'\n+0F4342 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D2EC9 Compression Method    0008 (8) 'Deflated'\n-0D2ECB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D2ECF CRC                   00000000 (0)\n-0D2ED3 Compressed Size       00000000 (0)\n-0D2ED7 Uncompressed Size     00000000 (0)\n-0D2EDB Filename Length       0038 (56)\n-0D2EDD Extra Length          0000 (0)\n-0D2EDF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F4344 Compression Method    0008 (8) 'Deflated'\n+0F4346 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F434A CRC                   00000000 (0)\n+0F434E Compressed Size       00000000 (0)\n+0F4352 Uncompressed Size     00000000 (0)\n+0F4356 Filename Length       003E (62)\n+0F4358 Extra Length          0000 (0)\n+0F435A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD2EDF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF435A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D2F17 PAYLOAD\n+0F4398 PAYLOAD\n \n-0D3238 DATA DESCRIPTOR       08074B50 (134695760)\n-0D323C CRC                   05E875FD (99120637)\n-0D3240 Compressed Size       00000321 (801)\n-0D3244 Uncompressed Size     0000070E (1806)\n+0F4A02 DATA DESCRIPTOR       08074B50 (134695760)\n+0F4A06 CRC                   253B482C (624642092)\n+0F4A0A Compressed Size       0000066A (1642)\n+0F4A0E Uncompressed Size     000014A3 (5283)\n \n-0D3248 LOCAL HEADER #836     04034B50 (67324752)\n-0D324C Extract Zip Spec      14 (20) '2.0'\n-0D324D Extract OS            00 (0) 'MS-DOS'\n-0D324E General Purpose Flag  0808 (2056)\n+0F4A12 LOCAL HEADER #836     04034B50 (67324752)\n+0F4A16 Extract Zip Spec      14 (20) '2.0'\n+0F4A17 Extract OS            00 (0) 'MS-DOS'\n+0F4A18 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D3250 Compression Method    0008 (8) 'Deflated'\n-0D3252 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D3256 CRC                   00000000 (0)\n-0D325A Compressed Size       00000000 (0)\n-0D325E Uncompressed Size     00000000 (0)\n-0D3262 Filename Length       0023 (35)\n-0D3264 Extra Length          0000 (0)\n-0D3266 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F4A1A Compression Method    0008 (8) 'Deflated'\n+0F4A1C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F4A20 CRC                   00000000 (0)\n+0F4A24 Compressed Size       00000000 (0)\n+0F4A28 Uncompressed Size     00000000 (0)\n+0F4A2C Filename Length       0043 (67)\n+0F4A2E Extra Length          0000 (0)\n+0F4A30 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD3266: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF4A30: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D3289 PAYLOAD               XX\n+0F4A73 PAYLOAD\n \n-0D328B DATA DESCRIPTOR       08074B50 (134695760)\n-0D328F CRC                   00000000 (0)\n-0D3293 Compressed Size       00000002 (2)\n-0D3297 Uncompressed Size     00000000 (0)\n+0F4D2D DATA DESCRIPTOR       08074B50 (134695760)\n+0F4D31 CRC                   117073F8 (292582392)\n+0F4D35 Compressed Size       000002BA (698)\n+0F4D39 Uncompressed Size     0000065C (1628)\n \n-0D329B LOCAL HEADER #837     04034B50 (67324752)\n-0D329F Extract Zip Spec      14 (20) '2.0'\n-0D32A0 Extract OS            00 (0) 'MS-DOS'\n-0D32A1 General Purpose Flag  0808 (2056)\n+0F4D3D LOCAL HEADER #837     04034B50 (67324752)\n+0F4D41 Extract Zip Spec      14 (20) '2.0'\n+0F4D42 Extract OS            00 (0) 'MS-DOS'\n+0F4D43 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D32A3 Compression Method    0008 (8) 'Deflated'\n-0D32A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D32A9 CRC                   00000000 (0)\n-0D32AD Compressed Size       00000000 (0)\n-0D32B1 Uncompressed Size     00000000 (0)\n-0D32B5 Filename Length       0030 (48)\n-0D32B7 Extra Length          0000 (0)\n-0D32B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F4D45 Compression Method    0008 (8) 'Deflated'\n+0F4D47 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F4D4B CRC                   00000000 (0)\n+0F4D4F Compressed Size       00000000 (0)\n+0F4D53 Uncompressed Size     00000000 (0)\n+0F4D57 Filename Length       0037 (55)\n+0F4D59 Extra Length          0000 (0)\n+0F4D5B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD32B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF4D5B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D32E9 PAYLOAD\n+0F4D92 PAYLOAD               XX\n \n-0D37F2 DATA DESCRIPTOR       08074B50 (134695760)\n-0D37F6 CRC                   39ECA03B (971808827)\n-0D37FA Compressed Size       00000509 (1289)\n-0D37FE Uncompressed Size     00000C4E (3150)\n+0F4D94 DATA DESCRIPTOR       08074B50 (134695760)\n+0F4D98 CRC                   00000000 (0)\n+0F4D9C Compressed Size       00000002 (2)\n+0F4DA0 Uncompressed Size     00000000 (0)\n \n-0D3802 LOCAL HEADER #838     04034B50 (67324752)\n-0D3806 Extract Zip Spec      14 (20) '2.0'\n-0D3807 Extract OS            00 (0) 'MS-DOS'\n-0D3808 General Purpose Flag  0808 (2056)\n+0F4DA4 LOCAL HEADER #838     04034B50 (67324752)\n+0F4DA8 Extract Zip Spec      14 (20) '2.0'\n+0F4DA9 Extract OS            00 (0) 'MS-DOS'\n+0F4DAA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D380A Compression Method    0008 (8) 'Deflated'\n-0D380C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D3810 CRC                   00000000 (0)\n-0D3814 Compressed Size       00000000 (0)\n-0D3818 Uncompressed Size     00000000 (0)\n-0D381C Filename Length       0037 (55)\n-0D381E Extra Length          0000 (0)\n-0D3820 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F4DAC Compression Method    0008 (8) 'Deflated'\n+0F4DAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F4DB2 CRC                   00000000 (0)\n+0F4DB6 Compressed Size       00000000 (0)\n+0F4DBA Uncompressed Size     00000000 (0)\n+0F4DBE Filename Length       003E (62)\n+0F4DC0 Extra Length          0000 (0)\n+0F4DC2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD3820: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF4DC2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D3857 PAYLOAD\n+0F4E00 PAYLOAD\n \n-0D3B40 DATA DESCRIPTOR       08074B50 (134695760)\n-0D3B44 CRC                   D327EA9B (3542608539)\n-0D3B48 Compressed Size       000002E9 (745)\n-0D3B4C Uncompressed Size     0000061E (1566)\n+0F5177 DATA DESCRIPTOR       08074B50 (134695760)\n+0F517B CRC                   72B9B37F (1924772735)\n+0F517F Compressed Size       00000377 (887)\n+0F5183 Uncompressed Size     00000819 (2073)\n \n-0D3B50 LOCAL HEADER #839     04034B50 (67324752)\n-0D3B54 Extract Zip Spec      14 (20) '2.0'\n-0D3B55 Extract OS            00 (0) 'MS-DOS'\n-0D3B56 General Purpose Flag  0808 (2056)\n+0F5187 LOCAL HEADER #839     04034B50 (67324752)\n+0F518B Extract Zip Spec      14 (20) '2.0'\n+0F518C Extract OS            00 (0) 'MS-DOS'\n+0F518D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D3B58 Compression Method    0008 (8) 'Deflated'\n-0D3B5A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D3B5E CRC                   00000000 (0)\n-0D3B62 Compressed Size       00000000 (0)\n-0D3B66 Uncompressed Size     00000000 (0)\n-0D3B6A Filename Length       0023 (35)\n-0D3B6C Extra Length          0000 (0)\n-0D3B6E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F518F Compression Method    0008 (8) 'Deflated'\n+0F5191 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F5195 CRC                   00000000 (0)\n+0F5199 Compressed Size       00000000 (0)\n+0F519D Uncompressed Size     00000000 (0)\n+0F51A1 Filename Length       0045 (69)\n+0F51A3 Extra Length          0000 (0)\n+0F51A5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD3B6E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF51A5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D3B91 PAYLOAD               XX\n+0F51EA PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-0D3B93 DATA DESCRIPTOR       08074B50 (134695760)\n-0D3B97 CRC                   00000000 (0)\n-0D3B9B Compressed Size       00000002 (2)\n-0D3B9F Uncompressed Size     00000000 (0)\n+0F5235 DATA DESCRIPTOR       08074B50 (134695760)\n+0F5239 CRC                   C5928C84 (3314715780)\n+0F523D Compressed Size       0000004B (75)\n+0F5241 Uncompressed Size     0000004D (77)\n \n-0D3BA3 LOCAL HEADER #840     04034B50 (67324752)\n-0D3BA7 Extract Zip Spec      14 (20) '2.0'\n-0D3BA8 Extract OS            00 (0) 'MS-DOS'\n-0D3BA9 General Purpose Flag  0808 (2056)\n+0F5245 LOCAL HEADER #840     04034B50 (67324752)\n+0F5249 Extract Zip Spec      14 (20) '2.0'\n+0F524A Extract OS            00 (0) 'MS-DOS'\n+0F524B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D3BAB Compression Method    0008 (8) 'Deflated'\n-0D3BAD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D3BB1 CRC                   00000000 (0)\n-0D3BB5 Compressed Size       00000000 (0)\n-0D3BB9 Uncompressed Size     00000000 (0)\n-0D3BBD Filename Length       0030 (48)\n-0D3BBF Extra Length          0000 (0)\n-0D3BC1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F524D Compression Method    0008 (8) 'Deflated'\n+0F524F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F5253 CRC                   00000000 (0)\n+0F5257 Compressed Size       00000000 (0)\n+0F525B Uncompressed Size     00000000 (0)\n+0F525F Filename Length       001E (30)\n+0F5261 Extra Length          0000 (0)\n+0F5263 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD3BC1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF5263: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D3BF1 PAYLOAD\n+0F5281 PAYLOAD               XX\n \n-0D40CA DATA DESCRIPTOR       08074B50 (134695760)\n-0D40CE CRC                   E901806B (3909189739)\n-0D40D2 Compressed Size       000004D9 (1241)\n-0D40D6 Uncompressed Size     00000B75 (2933)\n+0F5283 DATA DESCRIPTOR       08074B50 (134695760)\n+0F5287 CRC                   00000000 (0)\n+0F528B Compressed Size       00000002 (2)\n+0F528F Uncompressed Size     00000000 (0)\n \n-0D40DA LOCAL HEADER #841     04034B50 (67324752)\n-0D40DE Extract Zip Spec      14 (20) '2.0'\n-0D40DF Extract OS            00 (0) 'MS-DOS'\n-0D40E0 General Purpose Flag  0808 (2056)\n+0F5293 LOCAL HEADER #841     04034B50 (67324752)\n+0F5297 Extract Zip Spec      14 (20) '2.0'\n+0F5298 Extract OS            00 (0) 'MS-DOS'\n+0F5299 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D40E2 Compression Method    0008 (8) 'Deflated'\n-0D40E4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D40E8 CRC                   00000000 (0)\n-0D40EC Compressed Size       00000000 (0)\n-0D40F0 Uncompressed Size     00000000 (0)\n-0D40F4 Filename Length       0037 (55)\n-0D40F6 Extra Length          0000 (0)\n-0D40F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F529B Compression Method    0008 (8) 'Deflated'\n+0F529D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F52A1 CRC                   00000000 (0)\n+0F52A5 Compressed Size       00000000 (0)\n+0F52A9 Uncompressed Size     00000000 (0)\n+0F52AD Filename Length       0028 (40)\n+0F52AF Extra Length          0000 (0)\n+0F52B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD40F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF52B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D412F PAYLOAD\n+0F52D9 PAYLOAD\n \n-0D4420 DATA DESCRIPTOR       08074B50 (134695760)\n-0D4424 CRC                   45C1CEBF (1170329279)\n-0D4428 Compressed Size       000002F1 (753)\n-0D442C Uncompressed Size     00000649 (1609)\n+0F55BA DATA DESCRIPTOR       08074B50 (134695760)\n+0F55BE CRC                   22156101 (571826433)\n+0F55C2 Compressed Size       000002E1 (737)\n+0F55C6 Uncompressed Size     00000645 (1605)\n \n-0D4430 LOCAL HEADER #842     04034B50 (67324752)\n-0D4434 Extract Zip Spec      14 (20) '2.0'\n-0D4435 Extract OS            00 (0) 'MS-DOS'\n-0D4436 General Purpose Flag  0808 (2056)\n+0F55CA LOCAL HEADER #842     04034B50 (67324752)\n+0F55CE Extract Zip Spec      14 (20) '2.0'\n+0F55CF Extract OS            00 (0) 'MS-DOS'\n+0F55D0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D4438 Compression Method    0008 (8) 'Deflated'\n-0D443A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D443E CRC                   00000000 (0)\n-0D4442 Compressed Size       00000000 (0)\n-0D4446 Uncompressed Size     00000000 (0)\n-0D444A Filename Length       002B (43)\n-0D444C Extra Length          0000 (0)\n-0D444E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F55D2 Compression Method    0008 (8) 'Deflated'\n+0F55D4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F55D8 CRC                   00000000 (0)\n+0F55DC Compressed Size       00000000 (0)\n+0F55E0 Uncompressed Size     00000000 (0)\n+0F55E4 Filename Length       002C (44)\n+0F55E6 Extra Length          0000 (0)\n+0F55E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD444E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF55E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D4479 PAYLOAD               XX\n+0F5614 PAYLOAD\n \n-0D447B DATA DESCRIPTOR       08074B50 (134695760)\n-0D447F CRC                   00000000 (0)\n-0D4483 Compressed Size       00000002 (2)\n-0D4487 Uncompressed Size     00000000 (0)\n+0F58C1 DATA DESCRIPTOR       08074B50 (134695760)\n+0F58C5 CRC                   5BDCE546 (1541203270)\n+0F58C9 Compressed Size       000002AD (685)\n+0F58CD Uncompressed Size     00000530 (1328)\n \n-0D448B LOCAL HEADER #843     04034B50 (67324752)\n-0D448F Extract Zip Spec      14 (20) '2.0'\n-0D4490 Extract OS            00 (0) 'MS-DOS'\n-0D4491 General Purpose Flag  0808 (2056)\n+0F58D1 LOCAL HEADER #843     04034B50 (67324752)\n+0F58D5 Extract Zip Spec      14 (20) '2.0'\n+0F58D6 Extract OS            00 (0) 'MS-DOS'\n+0F58D7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D4493 Compression Method    0008 (8) 'Deflated'\n-0D4495 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D4499 CRC                   00000000 (0)\n-0D449D Compressed Size       00000000 (0)\n-0D44A1 Uncompressed Size     00000000 (0)\n-0D44A5 Filename Length       0040 (64)\n-0D44A7 Extra Length          0000 (0)\n-0D44A9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F58D9 Compression Method    0008 (8) 'Deflated'\n+0F58DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F58DF CRC                   00000000 (0)\n+0F58E3 Compressed Size       00000000 (0)\n+0F58E7 Uncompressed Size     00000000 (0)\n+0F58EB Filename Length       002D (45)\n+0F58ED Extra Length          0000 (0)\n+0F58EF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD44A9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF58EF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D44E9 PAYLOAD\n+0F591C PAYLOAD\n \n-0D49C8 DATA DESCRIPTOR       08074B50 (134695760)\n-0D49CC CRC                   27EFB86F (670021743)\n-0D49D0 Compressed Size       000004DF (1247)\n-0D49D4 Uncompressed Size     00000B71 (2929)\n+0F5C3B DATA DESCRIPTOR       08074B50 (134695760)\n+0F5C3F CRC                   86A6B236 (2259071542)\n+0F5C43 Compressed Size       0000031F (799)\n+0F5C47 Uncompressed Size     0000078D (1933)\n \n-0D49D8 LOCAL HEADER #844     04034B50 (67324752)\n-0D49DC Extract Zip Spec      14 (20) '2.0'\n-0D49DD Extract OS            00 (0) 'MS-DOS'\n-0D49DE General Purpose Flag  0808 (2056)\n+0F5C4B LOCAL HEADER #844     04034B50 (67324752)\n+0F5C4F Extract Zip Spec      14 (20) '2.0'\n+0F5C50 Extract OS            00 (0) 'MS-DOS'\n+0F5C51 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D49E0 Compression Method    0008 (8) 'Deflated'\n-0D49E2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D49E6 CRC                   00000000 (0)\n-0D49EA Compressed Size       00000000 (0)\n-0D49EE Uncompressed Size     00000000 (0)\n-0D49F2 Filename Length       0047 (71)\n-0D49F4 Extra Length          0000 (0)\n-0D49F6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F5C53 Compression Method    0008 (8) 'Deflated'\n+0F5C55 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F5C59 CRC                   00000000 (0)\n+0F5C5D Compressed Size       00000000 (0)\n+0F5C61 Uncompressed Size     00000000 (0)\n+0F5C65 Filename Length       0027 (39)\n+0F5C67 Extra Length          0000 (0)\n+0F5C69 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD49F6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF5C69: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D4A3D PAYLOAD\n+0F5C90 PAYLOAD\n \n-0D4D57 DATA DESCRIPTOR       08074B50 (134695760)\n-0D4D5B CRC                   0D988858 (228100184)\n-0D4D5F Compressed Size       0000031A (794)\n-0D4D63 Uncompressed Size     000006C6 (1734)\n+0F5F19 DATA DESCRIPTOR       08074B50 (134695760)\n+0F5F1D CRC                   1B4BCF89 (457953161)\n+0F5F21 Compressed Size       00000289 (649)\n+0F5F25 Uncompressed Size     000004F3 (1267)\n \n-0D4D67 LOCAL HEADER #845     04034B50 (67324752)\n-0D4D6B Extract Zip Spec      14 (20) '2.0'\n-0D4D6C Extract OS            00 (0) 'MS-DOS'\n-0D4D6D General Purpose Flag  0808 (2056)\n+0F5F29 LOCAL HEADER #845     04034B50 (67324752)\n+0F5F2D Extract Zip Spec      14 (20) '2.0'\n+0F5F2E Extract OS            00 (0) 'MS-DOS'\n+0F5F2F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D4D6F Compression Method    0008 (8) 'Deflated'\n-0D4D71 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D4D75 CRC                   00000000 (0)\n-0D4D79 Compressed Size       00000000 (0)\n-0D4D7D Uncompressed Size     00000000 (0)\n-0D4D81 Filename Length       001C (28)\n-0D4D83 Extra Length          0000 (0)\n-0D4D85 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F5F31 Compression Method    0008 (8) 'Deflated'\n+0F5F33 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F5F37 CRC                   00000000 (0)\n+0F5F3B Compressed Size       00000000 (0)\n+0F5F3F Uncompressed Size     00000000 (0)\n+0F5F43 Filename Length       0027 (39)\n+0F5F45 Extra Length          0000 (0)\n+0F5F47 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD4D85: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF5F47: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D4DA1 PAYLOAD               XX\n+0F5F6E PAYLOAD               XX\n \n-0D4DA3 DATA DESCRIPTOR       08074B50 (134695760)\n-0D4DA7 CRC                   00000000 (0)\n-0D4DAB Compressed Size       00000002 (2)\n-0D4DAF Uncompressed Size     00000000 (0)\n+0F5F70 DATA DESCRIPTOR       08074B50 (134695760)\n+0F5F74 CRC                   00000000 (0)\n+0F5F78 Compressed Size       00000002 (2)\n+0F5F7C Uncompressed Size     00000000 (0)\n \n-0D4DB3 LOCAL HEADER #846     04034B50 (67324752)\n-0D4DB7 Extract Zip Spec      14 (20) '2.0'\n-0D4DB8 Extract OS            00 (0) 'MS-DOS'\n-0D4DB9 General Purpose Flag  0808 (2056)\n+0F5F80 LOCAL HEADER #846     04034B50 (67324752)\n+0F5F84 Extract Zip Spec      14 (20) '2.0'\n+0F5F85 Extract OS            00 (0) 'MS-DOS'\n+0F5F86 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D4DBB Compression Method    0008 (8) 'Deflated'\n-0D4DBD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D4DC1 CRC                   00000000 (0)\n-0D4DC5 Compressed Size       00000000 (0)\n-0D4DC9 Uncompressed Size     00000000 (0)\n-0D4DCD Filename Length       0030 (48)\n-0D4DCF Extra Length          0000 (0)\n-0D4DD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F5F88 Compression Method    0008 (8) 'Deflated'\n+0F5F8A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F5F8E CRC                   00000000 (0)\n+0F5F92 Compressed Size       00000000 (0)\n+0F5F96 Uncompressed Size     00000000 (0)\n+0F5F9A Filename Length       0039 (57)\n+0F5F9C Extra Length          0000 (0)\n+0F5F9E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD4DD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF5F9E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D4E01 PAYLOAD\n+0F5FD7 PAYLOAD\n \n-0D5133 DATA DESCRIPTOR       08074B50 (134695760)\n-0D5137 CRC                   9FA19E67 (2678169191)\n-0D513B Compressed Size       00000332 (818)\n-0D513F Uncompressed Size     00000668 (1640)\n+0F624F DATA DESCRIPTOR       08074B50 (134695760)\n+0F6253 CRC                   DDB2647D (3719455869)\n+0F6257 Compressed Size       00000278 (632)\n+0F625B Uncompressed Size     00000501 (1281)\n \n-0D5143 LOCAL HEADER #847     04034B50 (67324752)\n-0D5147 Extract Zip Spec      14 (20) '2.0'\n-0D5148 Extract OS            00 (0) 'MS-DOS'\n-0D5149 General Purpose Flag  0808 (2056)\n+0F625F LOCAL HEADER #847     04034B50 (67324752)\n+0F6263 Extract Zip Spec      14 (20) '2.0'\n+0F6264 Extract OS            00 (0) 'MS-DOS'\n+0F6265 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D514B Compression Method    0008 (8) 'Deflated'\n-0D514D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D5151 CRC                   00000000 (0)\n-0D5155 Compressed Size       00000000 (0)\n-0D5159 Uncompressed Size     00000000 (0)\n-0D515D Filename Length       002B (43)\n-0D515F Extra Length          0000 (0)\n-0D5161 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F6267 Compression Method    0008 (8) 'Deflated'\n+0F6269 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F626D CRC                   00000000 (0)\n+0F6271 Compressed Size       00000000 (0)\n+0F6275 Uncompressed Size     00000000 (0)\n+0F6279 Filename Length       003D (61)\n+0F627B Extra Length          0000 (0)\n+0F627D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD5161: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF627D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D518C PAYLOAD\n+0F62BA PAYLOAD\n \n-0D545C DATA DESCRIPTOR       08074B50 (134695760)\n-0D5460 CRC                   00116B33 (1141555)\n-0D5464 Compressed Size       000002D0 (720)\n-0D5468 Uncompressed Size     000005E3 (1507)\n+0F6521 DATA DESCRIPTOR       08074B50 (134695760)\n+0F6525 CRC                   5D9DDBCF (1570626511)\n+0F6529 Compressed Size       00000267 (615)\n+0F652D Uncompressed Size     000004A5 (1189)\n \n-0D546C LOCAL HEADER #848     04034B50 (67324752)\n-0D5470 Extract Zip Spec      14 (20) '2.0'\n-0D5471 Extract OS            00 (0) 'MS-DOS'\n-0D5472 General Purpose Flag  0808 (2056)\n+0F6531 LOCAL HEADER #848     04034B50 (67324752)\n+0F6535 Extract Zip Spec      14 (20) '2.0'\n+0F6536 Extract OS            00 (0) 'MS-DOS'\n+0F6537 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D5474 Compression Method    0008 (8) 'Deflated'\n-0D5476 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D547A CRC                   00000000 (0)\n-0D547E Compressed Size       00000000 (0)\n-0D5482 Uncompressed Size     00000000 (0)\n-0D5486 Filename Length       002A (42)\n-0D5488 Extra Length          0000 (0)\n-0D548A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F6539 Compression Method    0008 (8) 'Deflated'\n+0F653B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F653F CRC                   00000000 (0)\n+0F6543 Compressed Size       00000000 (0)\n+0F6547 Uncompressed Size     00000000 (0)\n+0F654B Filename Length       003E (62)\n+0F654D Extra Length          0000 (0)\n+0F654F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD548A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF654F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D54B4 PAYLOAD\n+0F658D PAYLOAD\n \n-0D572D DATA DESCRIPTOR       08074B50 (134695760)\n-0D5731 CRC                   767F730D (1988064013)\n-0D5735 Compressed Size       00000279 (633)\n-0D5739 Uncompressed Size     00000479 (1145)\n+0F687B DATA DESCRIPTOR       08074B50 (134695760)\n+0F687F CRC                   4453948E (1146328206)\n+0F6883 Compressed Size       000002EE (750)\n+0F6887 Uncompressed Size     0000076E (1902)\n \n-0D573D LOCAL HEADER #849     04034B50 (67324752)\n-0D5741 Extract Zip Spec      14 (20) '2.0'\n-0D5742 Extract OS            00 (0) 'MS-DOS'\n-0D5743 General Purpose Flag  0808 (2056)\n+0F688B LOCAL HEADER #849     04034B50 (67324752)\n+0F688F Extract Zip Spec      14 (20) '2.0'\n+0F6890 Extract OS            00 (0) 'MS-DOS'\n+0F6891 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D5745 Compression Method    0008 (8) 'Deflated'\n-0D5747 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D574B CRC                   00000000 (0)\n-0D574F Compressed Size       00000000 (0)\n-0D5753 Uncompressed Size     00000000 (0)\n-0D5757 Filename Length       0023 (35)\n-0D5759 Extra Length          0000 (0)\n-0D575B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F6893 Compression Method    0008 (8) 'Deflated'\n+0F6895 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F6899 CRC                   00000000 (0)\n+0F689D Compressed Size       00000000 (0)\n+0F68A1 Uncompressed Size     00000000 (0)\n+0F68A5 Filename Length       0038 (56)\n+0F68A7 Extra Length          0000 (0)\n+0F68A9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD575B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF68A9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D577E PAYLOAD               XX\n+0F68E1 PAYLOAD\n \n-0D5780 DATA DESCRIPTOR       08074B50 (134695760)\n-0D5784 CRC                   00000000 (0)\n-0D5788 Compressed Size       00000002 (2)\n-0D578C Uncompressed Size     00000000 (0)\n+0F6B0C DATA DESCRIPTOR       08074B50 (134695760)\n+0F6B10 CRC                   E8A94DD9 (3903409625)\n+0F6B14 Compressed Size       0000022B (555)\n+0F6B18 Uncompressed Size     00000420 (1056)\n \n-0D5790 LOCAL HEADER #850     04034B50 (67324752)\n-0D5794 Extract Zip Spec      14 (20) '2.0'\n-0D5795 Extract OS            00 (0) 'MS-DOS'\n-0D5796 General Purpose Flag  0808 (2056)\n+0F6B1C LOCAL HEADER #850     04034B50 (67324752)\n+0F6B20 Extract Zip Spec      14 (20) '2.0'\n+0F6B21 Extract OS            00 (0) 'MS-DOS'\n+0F6B22 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D5798 Compression Method    0008 (8) 'Deflated'\n-0D579A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D579E CRC                   00000000 (0)\n-0D57A2 Compressed Size       00000000 (0)\n-0D57A6 Uncompressed Size     00000000 (0)\n-0D57AA Filename Length       0038 (56)\n-0D57AC Extra Length          0000 (0)\n-0D57AE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F6B24 Compression Method    0008 (8) 'Deflated'\n+0F6B26 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F6B2A CRC                   00000000 (0)\n+0F6B2E Compressed Size       00000000 (0)\n+0F6B32 Uncompressed Size     00000000 (0)\n+0F6B36 Filename Length       002F (47)\n+0F6B38 Extra Length          0000 (0)\n+0F6B3A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD57AE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF6B3A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D57E6 PAYLOAD\n+0F6B69 PAYLOAD               XX\n \n-0D5E70 DATA DESCRIPTOR       08074B50 (134695760)\n-0D5E74 CRC                   C93175C4 (3375461828)\n-0D5E78 Compressed Size       0000068A (1674)\n-0D5E7C Uncompressed Size     000012EA (4842)\n+0F6B6B DATA DESCRIPTOR       08074B50 (134695760)\n+0F6B6F CRC                   00000000 (0)\n+0F6B73 Compressed Size       00000002 (2)\n+0F6B77 Uncompressed Size     00000000 (0)\n \n-0D5E80 LOCAL HEADER #851     04034B50 (67324752)\n-0D5E84 Extract Zip Spec      14 (20) '2.0'\n-0D5E85 Extract OS            00 (0) 'MS-DOS'\n-0D5E86 General Purpose Flag  0808 (2056)\n+0F6B7B LOCAL HEADER #851     04034B50 (67324752)\n+0F6B7F Extract Zip Spec      14 (20) '2.0'\n+0F6B80 Extract OS            00 (0) 'MS-DOS'\n+0F6B81 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D5E88 Compression Method    0008 (8) 'Deflated'\n-0D5E8A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D5E8E CRC                   00000000 (0)\n-0D5E92 Compressed Size       00000000 (0)\n-0D5E96 Uncompressed Size     00000000 (0)\n-0D5E9A Filename Length       0024 (36)\n-0D5E9C Extra Length          0000 (0)\n-0D5E9E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F6B83 Compression Method    0008 (8) 'Deflated'\n+0F6B85 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F6B89 CRC                   00000000 (0)\n+0F6B8D Compressed Size       00000000 (0)\n+0F6B91 Uncompressed Size     00000000 (0)\n+0F6B95 Filename Length       0049 (73)\n+0F6B97 Extra Length          0000 (0)\n+0F6B99 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD5E9E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF6B99: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D5EC2 PAYLOAD               XX\n+0F6BE2 PAYLOAD\n \n-0D5EC4 DATA DESCRIPTOR       08074B50 (134695760)\n-0D5EC8 CRC                   00000000 (0)\n-0D5ECC Compressed Size       00000002 (2)\n-0D5ED0 Uncompressed Size     00000000 (0)\n+0F70F6 DATA DESCRIPTOR       08074B50 (134695760)\n+0F70FA CRC                   C68A15C0 (3330938304)\n+0F70FE Compressed Size       00000514 (1300)\n+0F7102 Uncompressed Size     000011A2 (4514)\n \n-0D5ED4 LOCAL HEADER #852     04034B50 (67324752)\n-0D5ED8 Extract Zip Spec      14 (20) '2.0'\n-0D5ED9 Extract OS            00 (0) 'MS-DOS'\n-0D5EDA General Purpose Flag  0808 (2056)\n+0F7106 LOCAL HEADER #852     04034B50 (67324752)\n+0F710A Extract Zip Spec      14 (20) '2.0'\n+0F710B Extract OS            00 (0) 'MS-DOS'\n+0F710C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D5EDC Compression Method    0008 (8) 'Deflated'\n-0D5EDE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D5EE2 CRC                   00000000 (0)\n-0D5EE6 Compressed Size       00000000 (0)\n-0D5EEA Uncompressed Size     00000000 (0)\n-0D5EEE Filename Length       003B (59)\n-0D5EF0 Extra Length          0000 (0)\n-0D5EF2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F710E Compression Method    0008 (8) 'Deflated'\n+0F7110 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F7114 CRC                   00000000 (0)\n+0F7118 Compressed Size       00000000 (0)\n+0F711C Uncompressed Size     00000000 (0)\n+0F7120 Filename Length       0046 (70)\n+0F7122 Extra Length          0000 (0)\n+0F7124 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD5EF2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF7124: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D5F2D PAYLOAD\n+0F716A PAYLOAD\n \n-0D629A DATA DESCRIPTOR       08074B50 (134695760)\n-0D629E CRC                   1D7B340C (494613516)\n-0D62A2 Compressed Size       0000036D (877)\n-0D62A6 Uncompressed Size     000007D6 (2006)\n+0F771A DATA DESCRIPTOR       08074B50 (134695760)\n+0F771E CRC                   27A7C8DD (665307357)\n+0F7722 Compressed Size       000005B0 (1456)\n+0F7726 Uncompressed Size     00001334 (4916)\n \n-0D62AA LOCAL HEADER #853     04034B50 (67324752)\n-0D62AE Extract Zip Spec      14 (20) '2.0'\n-0D62AF Extract OS            00 (0) 'MS-DOS'\n-0D62B0 General Purpose Flag  0808 (2056)\n+0F772A LOCAL HEADER #853     04034B50 (67324752)\n+0F772E Extract Zip Spec      14 (20) '2.0'\n+0F772F Extract OS            00 (0) 'MS-DOS'\n+0F7730 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D62B2 Compression Method    0008 (8) 'Deflated'\n-0D62B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D62B8 CRC                   00000000 (0)\n-0D62BC Compressed Size       00000000 (0)\n-0D62C0 Uncompressed Size     00000000 (0)\n-0D62C4 Filename Length       0030 (48)\n-0D62C6 Extra Length          0000 (0)\n-0D62C8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F7732 Compression Method    0008 (8) 'Deflated'\n+0F7734 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F7738 CRC                   00000000 (0)\n+0F773C Compressed Size       00000000 (0)\n+0F7740 Uncompressed Size     00000000 (0)\n+0F7744 Filename Length       0045 (69)\n+0F7746 Extra Length          0000 (0)\n+0F7748 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD62C8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF7748: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D62F8 PAYLOAD               XX\n+0F778D PAYLOAD\n \n-0D62FA DATA DESCRIPTOR       08074B50 (134695760)\n-0D62FE CRC                   00000000 (0)\n-0D6302 Compressed Size       00000002 (2)\n-0D6306 Uncompressed Size     00000000 (0)\n+0F7DE1 DATA DESCRIPTOR       08074B50 (134695760)\n+0F7DE5 CRC                   EC1A089B (3961129115)\n+0F7DE9 Compressed Size       00000654 (1620)\n+0F7DED Uncompressed Size     00001498 (5272)\n \n-0D630A LOCAL HEADER #854     04034B50 (67324752)\n-0D630E Extract Zip Spec      14 (20) '2.0'\n-0D630F Extract OS            00 (0) 'MS-DOS'\n-0D6310 General Purpose Flag  0808 (2056)\n+0F7DF1 LOCAL HEADER #854     04034B50 (67324752)\n+0F7DF5 Extract Zip Spec      14 (20) '2.0'\n+0F7DF6 Extract OS            00 (0) 'MS-DOS'\n+0F7DF7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D6312 Compression Method    0008 (8) 'Deflated'\n-0D6314 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D6318 CRC                   00000000 (0)\n-0D631C Compressed Size       00000000 (0)\n-0D6320 Uncompressed Size     00000000 (0)\n-0D6324 Filename Length       0040 (64)\n-0D6326 Extra Length          0000 (0)\n-0D6328 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F7DF9 Compression Method    0008 (8) 'Deflated'\n+0F7DFB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F7DFF CRC                   00000000 (0)\n+0F7E03 Compressed Size       00000000 (0)\n+0F7E07 Uncompressed Size     00000000 (0)\n+0F7E0B Filename Length       0049 (73)\n+0F7E0D Extra Length          0000 (0)\n+0F7E0F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD6328: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF7E0F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D6368 PAYLOAD\n+0F7E58 PAYLOAD\n \n-0D6626 DATA DESCRIPTOR       08074B50 (134695760)\n-0D662A CRC                   5A6ECC92 (1517210770)\n-0D662E Compressed Size       000002BE (702)\n-0D6632 Uncompressed Size     000005C3 (1475)\n+0F80D8 DATA DESCRIPTOR       08074B50 (134695760)\n+0F80DC CRC                   D99CBCB4 (3650927796)\n+0F80E0 Compressed Size       00000280 (640)\n+0F80E4 Uncompressed Size     00000536 (1334)\n \n-0D6636 LOCAL HEADER #855     04034B50 (67324752)\n-0D663A Extract Zip Spec      14 (20) '2.0'\n-0D663B Extract OS            00 (0) 'MS-DOS'\n-0D663C General Purpose Flag  0808 (2056)\n+0F80E8 LOCAL HEADER #855     04034B50 (67324752)\n+0F80EC Extract Zip Spec      14 (20) '2.0'\n+0F80ED Extract OS            00 (0) 'MS-DOS'\n+0F80EE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D663E Compression Method    0008 (8) 'Deflated'\n-0D6640 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D6644 CRC                   00000000 (0)\n-0D6648 Compressed Size       00000000 (0)\n-0D664C Uncompressed Size     00000000 (0)\n-0D6650 Filename Length       003F (63)\n-0D6652 Extra Length          0000 (0)\n-0D6654 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F80F0 Compression Method    0008 (8) 'Deflated'\n+0F80F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F80F6 CRC                   00000000 (0)\n+0F80FA Compressed Size       00000000 (0)\n+0F80FE Uncompressed Size     00000000 (0)\n+0F8102 Filename Length       004A (74)\n+0F8104 Extra Length          0000 (0)\n+0F8106 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD6654: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF8106: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D6693 PAYLOAD\n+0F8150 PAYLOAD\n \n-0D74A0 DATA DESCRIPTOR       08074B50 (134695760)\n-0D74A4 CRC                   B191ADCB (2979114443)\n-0D74A8 Compressed Size       00000E0D (3597)\n-0D74AC Uncompressed Size     00003D3F (15679)\n+0F86DE DATA DESCRIPTOR       08074B50 (134695760)\n+0F86E2 CRC                   25CC04D5 (634127573)\n+0F86E6 Compressed Size       0000058E (1422)\n+0F86EA Uncompressed Size     00001094 (4244)\n \n-0D74B0 LOCAL HEADER #856     04034B50 (67324752)\n-0D74B4 Extract Zip Spec      14 (20) '2.0'\n-0D74B5 Extract OS            00 (0) 'MS-DOS'\n-0D74B6 General Purpose Flag  0808 (2056)\n+0F86EE LOCAL HEADER #856     04034B50 (67324752)\n+0F86F2 Extract Zip Spec      14 (20) '2.0'\n+0F86F3 Extract OS            00 (0) 'MS-DOS'\n+0F86F4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D74B8 Compression Method    0008 (8) 'Deflated'\n-0D74BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D74BE CRC                   00000000 (0)\n-0D74C2 Compressed Size       00000000 (0)\n-0D74C6 Uncompressed Size     00000000 (0)\n-0D74CA Filename Length       001A (26)\n-0D74CC Extra Length          0000 (0)\n-0D74CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F86F6 Compression Method    0008 (8) 'Deflated'\n+0F86F8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F86FC CRC                   00000000 (0)\n+0F8700 Compressed Size       00000000 (0)\n+0F8704 Uncompressed Size     00000000 (0)\n+0F8708 Filename Length       004E (78)\n+0F870A Extra Length          0000 (0)\n+0F870C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD74CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF870C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D74E8 PAYLOAD               XX\n+0F875A PAYLOAD\n \n-0D74EA DATA DESCRIPTOR       08074B50 (134695760)\n-0D74EE CRC                   00000000 (0)\n-0D74F2 Compressed Size       00000002 (2)\n-0D74F6 Uncompressed Size     00000000 (0)\n+0F89DE DATA DESCRIPTOR       08074B50 (134695760)\n+0F89E2 CRC                   ECA8B7E4 (3970480100)\n+0F89E6 Compressed Size       00000284 (644)\n+0F89EA Uncompressed Size     00000545 (1349)\n \n-0D74FA LOCAL HEADER #857     04034B50 (67324752)\n-0D74FE Extract Zip Spec      14 (20) '2.0'\n-0D74FF Extract OS            00 (0) 'MS-DOS'\n-0D7500 General Purpose Flag  0808 (2056)\n+0F89EE LOCAL HEADER #857     04034B50 (67324752)\n+0F89F2 Extract Zip Spec      14 (20) '2.0'\n+0F89F3 Extract OS            00 (0) 'MS-DOS'\n+0F89F4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D7502 Compression Method    0008 (8) 'Deflated'\n-0D7504 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D7508 CRC                   00000000 (0)\n-0D750C Compressed Size       00000000 (0)\n-0D7510 Uncompressed Size     00000000 (0)\n-0D7514 Filename Length       0026 (38)\n-0D7516 Extra Length          0000 (0)\n-0D7518 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F89F6 Compression Method    0008 (8) 'Deflated'\n+0F89F8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F89FC CRC                   00000000 (0)\n+0F8A00 Compressed Size       00000000 (0)\n+0F8A04 Uncompressed Size     00000000 (0)\n+0F8A08 Filename Length       0026 (38)\n+0F8A0A Extra Length          0000 (0)\n+0F8A0C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD7518: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF8A0C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D753E PAYLOAD\n+0F8A32 PAYLOAD               XX\n \n-0D7843 DATA DESCRIPTOR       08074B50 (134695760)\n-0D7847 CRC                   1FBA8398 (532317080)\n-0D784B Compressed Size       00000305 (773)\n-0D784F Uncompressed Size     0000073A (1850)\n+0F8A34 DATA DESCRIPTOR       08074B50 (134695760)\n+0F8A38 CRC                   00000000 (0)\n+0F8A3C Compressed Size       00000002 (2)\n+0F8A40 Uncompressed Size     00000000 (0)\n \n-0D7853 LOCAL HEADER #858     04034B50 (67324752)\n-0D7857 Extract Zip Spec      14 (20) '2.0'\n-0D7858 Extract OS            00 (0) 'MS-DOS'\n-0D7859 General Purpose Flag  0808 (2056)\n+0F8A44 LOCAL HEADER #858     04034B50 (67324752)\n+0F8A48 Extract Zip Spec      14 (20) '2.0'\n+0F8A49 Extract OS            00 (0) 'MS-DOS'\n+0F8A4A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D785B Compression Method    0008 (8) 'Deflated'\n-0D785D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D7861 CRC                   00000000 (0)\n-0D7865 Compressed Size       00000000 (0)\n-0D7869 Uncompressed Size     00000000 (0)\n-0D786D Filename Length       002D (45)\n-0D786F Extra Length          0000 (0)\n-0D7871 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F8A4C Compression Method    0008 (8) 'Deflated'\n+0F8A4E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F8A52 CRC                   00000000 (0)\n+0F8A56 Compressed Size       00000000 (0)\n+0F8A5A Uncompressed Size     00000000 (0)\n+0F8A5E Filename Length       0038 (56)\n+0F8A60 Extra Length          0000 (0)\n+0F8A62 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD7871: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF8A62: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D789E PAYLOAD\n+0F8A9A PAYLOAD\n \n-0D7B96 DATA DESCRIPTOR       08074B50 (134695760)\n-0D7B9A CRC                   1A6C5333 (443306803)\n-0D7B9E Compressed Size       000002F8 (760)\n-0D7BA2 Uncompressed Size     00000849 (2121)\n+0F8F72 DATA DESCRIPTOR       08074B50 (134695760)\n+0F8F76 CRC                   F154D7FB (4048869371)\n+0F8F7A Compressed Size       000004D8 (1240)\n+0F8F7E Uncompressed Size     00000FA2 (4002)\n \n-0D7BA6 LOCAL HEADER #859     04034B50 (67324752)\n-0D7BAA Extract Zip Spec      14 (20) '2.0'\n-0D7BAB Extract OS            00 (0) 'MS-DOS'\n-0D7BAC General Purpose Flag  0808 (2056)\n+0F8F82 LOCAL HEADER #859     04034B50 (67324752)\n+0F8F86 Extract Zip Spec      14 (20) '2.0'\n+0F8F87 Extract OS            00 (0) 'MS-DOS'\n+0F8F88 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D7BAE Compression Method    0008 (8) 'Deflated'\n-0D7BB0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D7BB4 CRC                   00000000 (0)\n-0D7BB8 Compressed Size       00000000 (0)\n-0D7BBC Uncompressed Size     00000000 (0)\n-0D7BC0 Filename Length       0025 (37)\n-0D7BC2 Extra Length          0000 (0)\n-0D7BC4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F8F8A Compression Method    0008 (8) 'Deflated'\n+0F8F8C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F8F90 CRC                   00000000 (0)\n+0F8F94 Compressed Size       00000000 (0)\n+0F8F98 Uncompressed Size     00000000 (0)\n+0F8F9C Filename Length       0034 (52)\n+0F8F9E Extra Length          0000 (0)\n+0F8FA0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD7BC4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF8FA0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D7BE9 PAYLOAD\n+0F8FD4 PAYLOAD\n \n-0D7ED6 DATA DESCRIPTOR       08074B50 (134695760)\n-0D7EDA CRC                   107C6EE6 (276590310)\n-0D7EDE Compressed Size       000002ED (749)\n-0D7EE2 Uncompressed Size     0000058B (1419)\n+0F95E6 DATA DESCRIPTOR       08074B50 (134695760)\n+0F95EA CRC                   126F64B9 (309290169)\n+0F95EE Compressed Size       00000612 (1554)\n+0F95F2 Uncompressed Size     000013C0 (5056)\n \n-0D7EE6 LOCAL HEADER #860     04034B50 (67324752)\n-0D7EEA Extract Zip Spec      14 (20) '2.0'\n-0D7EEB Extract OS            00 (0) 'MS-DOS'\n-0D7EEC General Purpose Flag  0808 (2056)\n+0F95F6 LOCAL HEADER #860     04034B50 (67324752)\n+0F95FA Extract Zip Spec      14 (20) '2.0'\n+0F95FB Extract OS            00 (0) 'MS-DOS'\n+0F95FC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D7EEE Compression Method    0008 (8) 'Deflated'\n-0D7EF0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D7EF4 CRC                   00000000 (0)\n-0D7EF8 Compressed Size       00000000 (0)\n-0D7EFC Uncompressed Size     00000000 (0)\n-0D7F00 Filename Length       0024 (36)\n-0D7F02 Extra Length          0000 (0)\n-0D7F04 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F95FE Compression Method    0008 (8) 'Deflated'\n+0F9600 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F9604 CRC                   00000000 (0)\n+0F9608 Compressed Size       00000000 (0)\n+0F960C Uncompressed Size     00000000 (0)\n+0F9610 Filename Length       0038 (56)\n+0F9612 Extra Length          0000 (0)\n+0F9614 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD7F04: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF9614: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D7F28 PAYLOAD\n+0F964C PAYLOAD\n \n-0D825C DATA DESCRIPTOR       08074B50 (134695760)\n-0D8260 CRC                   201747E5 (538396645)\n-0D8264 Compressed Size       00000334 (820)\n-0D8268 Uncompressed Size     00000734 (1844)\n+0F98BE DATA DESCRIPTOR       08074B50 (134695760)\n+0F98C2 CRC                   DE2F0B5D (3727625053)\n+0F98C6 Compressed Size       00000272 (626)\n+0F98CA Uncompressed Size     000004EB (1259)\n \n-0D826C LOCAL HEADER #861     04034B50 (67324752)\n-0D8270 Extract Zip Spec      14 (20) '2.0'\n-0D8271 Extract OS            00 (0) 'MS-DOS'\n-0D8272 General Purpose Flag  0808 (2056)\n+0F98CE LOCAL HEADER #861     04034B50 (67324752)\n+0F98D2 Extract Zip Spec      14 (20) '2.0'\n+0F98D3 Extract OS            00 (0) 'MS-DOS'\n+0F98D4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D8274 Compression Method    0008 (8) 'Deflated'\n-0D8276 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D827A CRC                   00000000 (0)\n-0D827E Compressed Size       00000000 (0)\n-0D8282 Uncompressed Size     00000000 (0)\n-0D8286 Filename Length       0025 (37)\n-0D8288 Extra Length          0000 (0)\n-0D828A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F98D6 Compression Method    0008 (8) 'Deflated'\n+0F98D8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F98DC CRC                   00000000 (0)\n+0F98E0 Compressed Size       00000000 (0)\n+0F98E4 Uncompressed Size     00000000 (0)\n+0F98E8 Filename Length       0039 (57)\n+0F98EA Extra Length          0000 (0)\n+0F98EC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD828A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF98EC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D82AF PAYLOAD\n+0F9925 PAYLOAD\n \n-0D855E DATA DESCRIPTOR       08074B50 (134695760)\n-0D8562 CRC                   B08F3D84 (2962177412)\n-0D8566 Compressed Size       000002AF (687)\n-0D856A Uncompressed Size     0000055C (1372)\n+0F9EA7 DATA DESCRIPTOR       08074B50 (134695760)\n+0F9EAB CRC                   91721BC5 (2440174533)\n+0F9EAF Compressed Size       00000582 (1410)\n+0F9EB3 Uncompressed Size     0000103F (4159)\n \n-0D856E LOCAL HEADER #862     04034B50 (67324752)\n-0D8572 Extract Zip Spec      14 (20) '2.0'\n-0D8573 Extract OS            00 (0) 'MS-DOS'\n-0D8574 General Purpose Flag  0808 (2056)\n+0F9EB7 LOCAL HEADER #862     04034B50 (67324752)\n+0F9EBB Extract Zip Spec      14 (20) '2.0'\n+0F9EBC Extract OS            00 (0) 'MS-DOS'\n+0F9EBD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D8576 Compression Method    0008 (8) 'Deflated'\n-0D8578 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D857C CRC                   00000000 (0)\n-0D8580 Compressed Size       00000000 (0)\n-0D8584 Uncompressed Size     00000000 (0)\n-0D8588 Filename Length       0028 (40)\n-0D858A Extra Length          0000 (0)\n-0D858C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0F9EBF Compression Method    0008 (8) 'Deflated'\n+0F9EC1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0F9EC5 CRC                   00000000 (0)\n+0F9EC9 Compressed Size       00000000 (0)\n+0F9ECD Uncompressed Size     00000000 (0)\n+0F9ED1 Filename Length       003D (61)\n+0F9ED3 Extra Length          0000 (0)\n+0F9ED5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD858C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xF9ED5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D85B4 PAYLOAD\n+0F9F12 PAYLOAD\n \n-0D8B59 DATA DESCRIPTOR       08074B50 (134695760)\n-0D8B5D CRC                   AB401562 (2873103714)\n-0D8B61 Compressed Size       000005A5 (1445)\n-0D8B65 Uncompressed Size     00000E7B (3707)\n+0FA188 DATA DESCRIPTOR       08074B50 (134695760)\n+0FA18C CRC                   6E31EAB9 (1848765113)\n+0FA190 Compressed Size       00000276 (630)\n+0FA194 Uncompressed Size     000004FA (1274)\n \n-0D8B69 LOCAL HEADER #863     04034B50 (67324752)\n-0D8B6D Extract Zip Spec      14 (20) '2.0'\n-0D8B6E Extract OS            00 (0) 'MS-DOS'\n-0D8B6F General Purpose Flag  0808 (2056)\n+0FA198 LOCAL HEADER #863     04034B50 (67324752)\n+0FA19C Extract Zip Spec      14 (20) '2.0'\n+0FA19D Extract OS            00 (0) 'MS-DOS'\n+0FA19E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D8B71 Compression Method    0008 (8) 'Deflated'\n-0D8B73 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D8B77 CRC                   00000000 (0)\n-0D8B7B Compressed Size       00000000 (0)\n-0D8B7F Uncompressed Size     00000000 (0)\n-0D8B83 Filename Length       0029 (41)\n-0D8B85 Extra Length          0000 (0)\n-0D8B87 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FA1A0 Compression Method    0008 (8) 'Deflated'\n+0FA1A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FA1A6 CRC                   00000000 (0)\n+0FA1AA Compressed Size       00000000 (0)\n+0FA1AE Uncompressed Size     00000000 (0)\n+0FA1B2 Filename Length       0035 (53)\n+0FA1B4 Extra Length          0000 (0)\n+0FA1B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD8B87: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFA1B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D8BB0 PAYLOAD\n+0FA1EB PAYLOAD\n \n-0D8DC0 DATA DESCRIPTOR       08074B50 (134695760)\n-0D8DC4 CRC                   D7F89917 (3623393559)\n-0D8DC8 Compressed Size       00000210 (528)\n-0D8DCC Uncompressed Size     000003AC (940)\n+0FA739 DATA DESCRIPTOR       08074B50 (134695760)\n+0FA73D CRC                   9A81C390 (2592195472)\n+0FA741 Compressed Size       0000054E (1358)\n+0FA745 Uncompressed Size     0000109F (4255)\n \n-0D8DD0 LOCAL HEADER #864     04034B50 (67324752)\n-0D8DD4 Extract Zip Spec      14 (20) '2.0'\n-0D8DD5 Extract OS            00 (0) 'MS-DOS'\n-0D8DD6 General Purpose Flag  0808 (2056)\n+0FA749 LOCAL HEADER #864     04034B50 (67324752)\n+0FA74D Extract Zip Spec      14 (20) '2.0'\n+0FA74E Extract OS            00 (0) 'MS-DOS'\n+0FA74F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D8DD8 Compression Method    0008 (8) 'Deflated'\n-0D8DDA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D8DDE CRC                   00000000 (0)\n-0D8DE2 Compressed Size       00000000 (0)\n-0D8DE6 Uncompressed Size     00000000 (0)\n-0D8DEA Filename Length       0029 (41)\n-0D8DEC Extra Length          0000 (0)\n-0D8DEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FA751 Compression Method    0008 (8) 'Deflated'\n+0FA753 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FA757 CRC                   00000000 (0)\n+0FA75B Compressed Size       00000000 (0)\n+0FA75F Uncompressed Size     00000000 (0)\n+0FA763 Filename Length       0033 (51)\n+0FA765 Extra Length          0000 (0)\n+0FA767 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD8DEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFA767: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D8E17 PAYLOAD\n+0FA79A PAYLOAD               XX\n \n-0D9120 DATA DESCRIPTOR       08074B50 (134695760)\n-0D9124 CRC                   277ABF59 (662355801)\n-0D9128 Compressed Size       00000309 (777)\n-0D912C Uncompressed Size     000005F8 (1528)\n+0FA79C DATA DESCRIPTOR       08074B50 (134695760)\n+0FA7A0 CRC                   00000000 (0)\n+0FA7A4 Compressed Size       00000002 (2)\n+0FA7A8 Uncompressed Size     00000000 (0)\n \n-0D9130 LOCAL HEADER #865     04034B50 (67324752)\n-0D9134 Extract Zip Spec      14 (20) '2.0'\n-0D9135 Extract OS            00 (0) 'MS-DOS'\n-0D9136 General Purpose Flag  0808 (2056)\n+0FA7AC LOCAL HEADER #865     04034B50 (67324752)\n+0FA7B0 Extract Zip Spec      14 (20) '2.0'\n+0FA7B1 Extract OS            00 (0) 'MS-DOS'\n+0FA7B2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D9138 Compression Method    0008 (8) 'Deflated'\n-0D913A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D913E CRC                   00000000 (0)\n-0D9142 Compressed Size       00000000 (0)\n-0D9146 Uncompressed Size     00000000 (0)\n-0D914A Filename Length       0027 (39)\n-0D914C Extra Length          0000 (0)\n-0D914E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FA7B4 Compression Method    0008 (8) 'Deflated'\n+0FA7B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FA7BA CRC                   00000000 (0)\n+0FA7BE Compressed Size       00000000 (0)\n+0FA7C2 Uncompressed Size     00000000 (0)\n+0FA7C6 Filename Length       003A (58)\n+0FA7C8 Extra Length          0000 (0)\n+0FA7CA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD914E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFA7CA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D9175 PAYLOAD\n+0FA804 PAYLOAD\n \n-0D94B9 DATA DESCRIPTOR       08074B50 (134695760)\n-0D94BD CRC                   D97FD102 (3649032450)\n-0D94C1 Compressed Size       00000344 (836)\n-0D94C5 Uncompressed Size     0000083D (2109)\n+0FAB77 DATA DESCRIPTOR       08074B50 (134695760)\n+0FAB7B CRC                   4435D23A (1144377914)\n+0FAB7F Compressed Size       00000373 (883)\n+0FAB83 Uncompressed Size     00000862 (2146)\n \n-0D94C9 LOCAL HEADER #866     04034B50 (67324752)\n-0D94CD Extract Zip Spec      14 (20) '2.0'\n-0D94CE Extract OS            00 (0) 'MS-DOS'\n-0D94CF General Purpose Flag  0808 (2056)\n+0FAB87 LOCAL HEADER #866     04034B50 (67324752)\n+0FAB8B Extract Zip Spec      14 (20) '2.0'\n+0FAB8C Extract OS            00 (0) 'MS-DOS'\n+0FAB8D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D94D1 Compression Method    0008 (8) 'Deflated'\n-0D94D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D94D7 CRC                   00000000 (0)\n-0D94DB Compressed Size       00000000 (0)\n-0D94DF Uncompressed Size     00000000 (0)\n-0D94E3 Filename Length       0031 (49)\n-0D94E5 Extra Length          0000 (0)\n-0D94E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FAB8F Compression Method    0008 (8) 'Deflated'\n+0FAB91 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FAB95 CRC                   00000000 (0)\n+0FAB99 Compressed Size       00000000 (0)\n+0FAB9D Uncompressed Size     00000000 (0)\n+0FABA1 Filename Length       0041 (65)\n+0FABA3 Extra Length          0000 (0)\n+0FABA5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD94E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFABA5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D9518 PAYLOAD\n+0FABE6 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-0D9827 DATA DESCRIPTOR       08074B50 (134695760)\n-0D982B CRC                   6CA638E1 (1822832865)\n-0D982F Compressed Size       0000030F (783)\n-0D9833 Uncompressed Size     00000968 (2408)\n+0FAC2D DATA DESCRIPTOR       08074B50 (134695760)\n+0FAC31 CRC                   9F593154 (2673422676)\n+0FAC35 Compressed Size       00000047 (71)\n+0FAC39 Uncompressed Size     00000049 (73)\n \n-0D9837 LOCAL HEADER #867     04034B50 (67324752)\n-0D983B Extract Zip Spec      14 (20) '2.0'\n-0D983C Extract OS            00 (0) 'MS-DOS'\n-0D983D General Purpose Flag  0808 (2056)\n+0FAC3D LOCAL HEADER #867     04034B50 (67324752)\n+0FAC41 Extract Zip Spec      14 (20) '2.0'\n+0FAC42 Extract OS            00 (0) 'MS-DOS'\n+0FAC43 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D983F Compression Method    0008 (8) 'Deflated'\n-0D9841 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D9845 CRC                   00000000 (0)\n-0D9849 Compressed Size       00000000 (0)\n-0D984D Uncompressed Size     00000000 (0)\n-0D9851 Filename Length       002B (43)\n-0D9853 Extra Length          0000 (0)\n-0D9855 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FAC45 Compression Method    0008 (8) 'Deflated'\n+0FAC47 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FAC4B CRC                   00000000 (0)\n+0FAC4F Compressed Size       00000000 (0)\n+0FAC53 Uncompressed Size     00000000 (0)\n+0FAC57 Filename Length       001F (31)\n+0FAC59 Extra Length          0000 (0)\n+0FAC5B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD9855: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFAC5B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D9880 PAYLOAD\n+0FAC7A PAYLOAD               XX\n \n-0D9B61 DATA DESCRIPTOR       08074B50 (134695760)\n-0D9B65 CRC                   A6AFF543 (2796549443)\n-0D9B69 Compressed Size       000002E1 (737)\n-0D9B6D Uncompressed Size     00000613 (1555)\n+0FAC7C DATA DESCRIPTOR       08074B50 (134695760)\n+0FAC80 CRC                   00000000 (0)\n+0FAC84 Compressed Size       00000002 (2)\n+0FAC88 Uncompressed Size     00000000 (0)\n \n-0D9B71 LOCAL HEADER #868     04034B50 (67324752)\n-0D9B75 Extract Zip Spec      14 (20) '2.0'\n-0D9B76 Extract OS            00 (0) 'MS-DOS'\n-0D9B77 General Purpose Flag  0808 (2056)\n+0FAC8C LOCAL HEADER #868     04034B50 (67324752)\n+0FAC90 Extract Zip Spec      14 (20) '2.0'\n+0FAC91 Extract OS            00 (0) 'MS-DOS'\n+0FAC92 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D9B79 Compression Method    0008 (8) 'Deflated'\n-0D9B7B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D9B7F CRC                   00000000 (0)\n-0D9B83 Compressed Size       00000000 (0)\n-0D9B87 Uncompressed Size     00000000 (0)\n-0D9B8B Filename Length       0030 (48)\n-0D9B8D Extra Length          0000 (0)\n-0D9B8F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FAC94 Compression Method    0008 (8) 'Deflated'\n+0FAC96 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FAC9A CRC                   00000000 (0)\n+0FAC9E Compressed Size       00000000 (0)\n+0FACA2 Uncompressed Size     00000000 (0)\n+0FACA6 Filename Length       002E (46)\n+0FACA8 Extra Length          0000 (0)\n+0FACAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD9B8F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFACAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D9BBF PAYLOAD\n+0FACD8 PAYLOAD\n \n-0D9F76 DATA DESCRIPTOR       08074B50 (134695760)\n-0D9F7A CRC                   F7D73BF2 (4158077938)\n-0D9F7E Compressed Size       000003B7 (951)\n-0D9F82 Uncompressed Size     00000C96 (3222)\n+0FAF72 DATA DESCRIPTOR       08074B50 (134695760)\n+0FAF76 CRC                   20838DDF (545492447)\n+0FAF7A Compressed Size       0000029A (666)\n+0FAF7E Uncompressed Size     00000527 (1319)\n \n-0D9F86 LOCAL HEADER #869     04034B50 (67324752)\n-0D9F8A Extract Zip Spec      14 (20) '2.0'\n-0D9F8B Extract OS            00 (0) 'MS-DOS'\n-0D9F8C General Purpose Flag  0808 (2056)\n+0FAF82 LOCAL HEADER #869     04034B50 (67324752)\n+0FAF86 Extract Zip Spec      14 (20) '2.0'\n+0FAF87 Extract OS            00 (0) 'MS-DOS'\n+0FAF88 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0D9F8E Compression Method    0008 (8) 'Deflated'\n-0D9F90 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0D9F94 CRC                   00000000 (0)\n-0D9F98 Compressed Size       00000000 (0)\n-0D9F9C Uncompressed Size     00000000 (0)\n-0D9FA0 Filename Length       002D (45)\n-0D9FA2 Extra Length          0000 (0)\n-0D9FA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FAF8A Compression Method    0008 (8) 'Deflated'\n+0FAF8C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FAF90 CRC                   00000000 (0)\n+0FAF94 Compressed Size       00000000 (0)\n+0FAF98 Uncompressed Size     00000000 (0)\n+0FAF9C Filename Length       002F (47)\n+0FAF9E Extra Length          0000 (0)\n+0FAFA0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xD9FA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFAFA0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0D9FD1 PAYLOAD\n+0FAFCF PAYLOAD\n \n-0DA311 DATA DESCRIPTOR       08074B50 (134695760)\n-0DA315 CRC                   D7FFC616 (3623863830)\n-0DA319 Compressed Size       00000340 (832)\n-0DA31D Uncompressed Size     000006A9 (1705)\n+0FB25D DATA DESCRIPTOR       08074B50 (134695760)\n+0FB261 CRC                   736BD280 (1936446080)\n+0FB265 Compressed Size       0000028E (654)\n+0FB269 Uncompressed Size     0000056A (1386)\n \n-0DA321 LOCAL HEADER #870     04034B50 (67324752)\n-0DA325 Extract Zip Spec      14 (20) '2.0'\n-0DA326 Extract OS            00 (0) 'MS-DOS'\n-0DA327 General Purpose Flag  0808 (2056)\n+0FB26D LOCAL HEADER #870     04034B50 (67324752)\n+0FB271 Extract Zip Spec      14 (20) '2.0'\n+0FB272 Extract OS            00 (0) 'MS-DOS'\n+0FB273 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0DA329 Compression Method    0008 (8) 'Deflated'\n-0DA32B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0DA32F CRC                   00000000 (0)\n-0DA333 Compressed Size       00000000 (0)\n-0DA337 Uncompressed Size     00000000 (0)\n-0DA33B Filename Length       002F (47)\n-0DA33D Extra Length          0000 (0)\n-0DA33F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FB275 Compression Method    0008 (8) 'Deflated'\n+0FB277 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FB27B CRC                   00000000 (0)\n+0FB27F Compressed Size       00000000 (0)\n+0FB283 Uncompressed Size     00000000 (0)\n+0FB287 Filename Length       002E (46)\n+0FB289 Extra Length          0000 (0)\n+0FB28B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDA33F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFB28B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0DA36E PAYLOAD\n+0FB2B9 PAYLOAD\n \n-0DA6BA DATA DESCRIPTOR       08074B50 (134695760)\n-0DA6BE CRC                   272E47E6 (657344486)\n-0DA6C2 Compressed Size       0000034C (844)\n-0DA6C6 Uncompressed Size     00000789 (1929)\n+0FB59A DATA DESCRIPTOR       08074B50 (134695760)\n+0FB59E CRC                   C27E840C (3263071244)\n+0FB5A2 Compressed Size       000002E1 (737)\n+0FB5A6 Uncompressed Size     000006E9 (1769)\n \n-0DA6CA LOCAL HEADER #871     04034B50 (67324752)\n-0DA6CE Extract Zip Spec      14 (20) '2.0'\n-0DA6CF Extract OS            00 (0) 'MS-DOS'\n-0DA6D0 General Purpose Flag  0808 (2056)\n+0FB5AA LOCAL HEADER #871     04034B50 (67324752)\n+0FB5AE Extract Zip Spec      14 (20) '2.0'\n+0FB5AF Extract OS            00 (0) 'MS-DOS'\n+0FB5B0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0DA6D2 Compression Method    0008 (8) 'Deflated'\n-0DA6D4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0DA6D8 CRC                   00000000 (0)\n-0DA6DC Compressed Size       00000000 (0)\n-0DA6E0 Uncompressed Size     00000000 (0)\n-0DA6E4 Filename Length       002A (42)\n-0DA6E6 Extra Length          0000 (0)\n-0DA6E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FB5B2 Compression Method    0008 (8) 'Deflated'\n+0FB5B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FB5B8 CRC                   00000000 (0)\n+0FB5BC Compressed Size       00000000 (0)\n+0FB5C0 Uncompressed Size     00000000 (0)\n+0FB5C4 Filename Length       0025 (37)\n+0FB5C6 Extra Length          0000 (0)\n+0FB5C8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDA6E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFB5C8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0DA712 PAYLOAD\n+0FB5ED PAYLOAD               XX\n \n-0DAA63 DATA DESCRIPTOR       08074B50 (134695760)\n-0DAA67 CRC                   684E4E1B (1749962267)\n-0DAA6B Compressed Size       00000351 (849)\n-0DAA6F Uncompressed Size     00000814 (2068)\n+0FB5EF DATA DESCRIPTOR       08074B50 (134695760)\n+0FB5F3 CRC                   00000000 (0)\n+0FB5F7 Compressed Size       00000002 (2)\n+0FB5FB Uncompressed Size     00000000 (0)\n \n-0DAA73 LOCAL HEADER #872     04034B50 (67324752)\n-0DAA77 Extract Zip Spec      14 (20) '2.0'\n-0DAA78 Extract OS            00 (0) 'MS-DOS'\n-0DAA79 General Purpose Flag  0808 (2056)\n+0FB5FF LOCAL HEADER #872     04034B50 (67324752)\n+0FB603 Extract Zip Spec      14 (20) '2.0'\n+0FB604 Extract OS            00 (0) 'MS-DOS'\n+0FB605 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0DAA7B Compression Method    0008 (8) 'Deflated'\n-0DAA7D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0DAA81 CRC                   00000000 (0)\n-0DAA85 Compressed Size       00000000 (0)\n-0DAA89 Uncompressed Size     00000000 (0)\n-0DAA8D Filename Length       002B (43)\n-0DAA8F Extra Length          0000 (0)\n-0DAA91 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FB607 Compression Method    0008 (8) 'Deflated'\n+0FB609 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FB60D CRC                   00000000 (0)\n+0FB611 Compressed Size       00000000 (0)\n+0FB615 Uncompressed Size     00000000 (0)\n+0FB619 Filename Length       0039 (57)\n+0FB61B Extra Length          0000 (0)\n+0FB61D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDAA91: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFB61D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0DAABC PAYLOAD\n+0FB656 PAYLOAD\n \n-0DAE74 DATA DESCRIPTOR       08074B50 (134695760)\n-0DAE78 CRC                   65BE8BD8 (1706986456)\n-0DAE7C Compressed Size       000003B8 (952)\n-0DAE80 Uncompressed Size     00000C19 (3097)\n+0FB8CA DATA DESCRIPTOR       08074B50 (134695760)\n+0FB8CE CRC                   88BB48F4 (2293975284)\n+0FB8D2 Compressed Size       00000274 (628)\n+0FB8D6 Uncompressed Size     00000509 (1289)\n \n-0DAE84 LOCAL HEADER #873     04034B50 (67324752)\n-0DAE88 Extract Zip Spec      14 (20) '2.0'\n-0DAE89 Extract OS            00 (0) 'MS-DOS'\n-0DAE8A General Purpose Flag  0808 (2056)\n+0FB8DA LOCAL HEADER #873     04034B50 (67324752)\n+0FB8DE Extract Zip Spec      14 (20) '2.0'\n+0FB8DF Extract OS            00 (0) 'MS-DOS'\n+0FB8E0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0DAE8C Compression Method    0008 (8) 'Deflated'\n-0DAE8E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0DAE92 CRC                   00000000 (0)\n-0DAE96 Compressed Size       00000000 (0)\n-0DAE9A Uncompressed Size     00000000 (0)\n-0DAE9E Filename Length       0021 (33)\n-0DAEA0 Extra Length          0000 (0)\n-0DAEA2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FB8E2 Compression Method    0008 (8) 'Deflated'\n+0FB8E4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FB8E8 CRC                   00000000 (0)\n+0FB8EC Compressed Size       00000000 (0)\n+0FB8F0 Uncompressed Size     00000000 (0)\n+0FB8F4 Filename Length       0039 (57)\n+0FB8F6 Extra Length          0000 (0)\n+0FB8F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDAEA2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFB8F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0DAEC3 PAYLOAD               XX\n+0FB931 PAYLOAD\n \n-0DAEC5 DATA DESCRIPTOR       08074B50 (134695760)\n-0DAEC9 CRC                   00000000 (0)\n-0DAECD Compressed Size       00000002 (2)\n-0DAED1 Uncompressed Size     00000000 (0)\n+0FBF46 DATA DESCRIPTOR       08074B50 (134695760)\n+0FBF4A CRC                   690E10B4 (1762529460)\n+0FBF4E Compressed Size       00000615 (1557)\n+0FBF52 Uncompressed Size     0000128E (4750)\n \n-0DAED5 LOCAL HEADER #874     04034B50 (67324752)\n-0DAED9 Extract Zip Spec      14 (20) '2.0'\n-0DAEDA Extract OS            00 (0) 'MS-DOS'\n-0DAEDB General Purpose Flag  0808 (2056)\n+0FBF56 LOCAL HEADER #874     04034B50 (67324752)\n+0FBF5A Extract Zip Spec      14 (20) '2.0'\n+0FBF5B Extract OS            00 (0) 'MS-DOS'\n+0FBF5C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0DAEDD Compression Method    0008 (8) 'Deflated'\n-0DAEDF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0DAEE3 CRC                   00000000 (0)\n-0DAEE7 Compressed Size       00000000 (0)\n-0DAEEB Uncompressed Size     00000000 (0)\n-0DAEEF Filename Length       003B (59)\n-0DAEF1 Extra Length          0000 (0)\n-0DAEF3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FBF5E Compression Method    0008 (8) 'Deflated'\n+0FBF60 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FBF64 CRC                   00000000 (0)\n+0FBF68 Compressed Size       00000000 (0)\n+0FBF6C Uncompressed Size     00000000 (0)\n+0FBF70 Filename Length       0027 (39)\n+0FBF72 Extra Length          0000 (0)\n+0FBF74 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDAEF3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFBF74: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0DAF2E PAYLOAD\n+0FBF9B PAYLOAD               XX\n \n-0DB5F0 DATA DESCRIPTOR       08074B50 (134695760)\n-0DB5F4 CRC                   68852581 (1753556353)\n-0DB5F8 Compressed Size       000006C2 (1730)\n-0DB5FC Uncompressed Size     00002404 (9220)\n+0FBF9D DATA DESCRIPTOR       08074B50 (134695760)\n+0FBFA1 CRC                   00000000 (0)\n+0FBFA5 Compressed Size       00000002 (2)\n+0FBFA9 Uncompressed Size     00000000 (0)\n \n-0DB600 LOCAL HEADER #875     04034B50 (67324752)\n-0DB604 Extract Zip Spec      14 (20) '2.0'\n-0DB605 Extract OS            00 (0) 'MS-DOS'\n-0DB606 General Purpose Flag  0808 (2056)\n+0FBFAD LOCAL HEADER #875     04034B50 (67324752)\n+0FBFB1 Extract Zip Spec      14 (20) '2.0'\n+0FBFB2 Extract OS            00 (0) 'MS-DOS'\n+0FBFB3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0DB608 Compression Method    0008 (8) 'Deflated'\n-0DB60A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0DB60E CRC                   00000000 (0)\n-0DB612 Compressed Size       00000000 (0)\n-0DB616 Uncompressed Size     00000000 (0)\n-0DB61A Filename Length       0043 (67)\n-0DB61C Extra Length          0000 (0)\n-0DB61E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FBFB5 Compression Method    0008 (8) 'Deflated'\n+0FBFB7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FBFBB CRC                   00000000 (0)\n+0FBFBF Compressed Size       00000000 (0)\n+0FBFC3 Uncompressed Size     00000000 (0)\n+0FBFC7 Filename Length       003D (61)\n+0FBFC9 Extra Length          0000 (0)\n+0FBFCB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDB61E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFBFCB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0DB661 PAYLOAD\n+0FC008 PAYLOAD\n \n-0DBD0C DATA DESCRIPTOR       08074B50 (134695760)\n-0DBD10 CRC                   AD83DA8F (2911099535)\n-0DBD14 Compressed Size       000006AB (1707)\n-0DBD18 Uncompressed Size     00001EB2 (7858)\n+0FC2E0 DATA DESCRIPTOR       08074B50 (134695760)\n+0FC2E4 CRC                   099C0616 (161220118)\n+0FC2E8 Compressed Size       000002D8 (728)\n+0FC2EC Uncompressed Size     00000628 (1576)\n \n-0DBD1C LOCAL HEADER #876     04034B50 (67324752)\n-0DBD20 Extract Zip Spec      14 (20) '2.0'\n-0DBD21 Extract OS            00 (0) 'MS-DOS'\n-0DBD22 General Purpose Flag  0808 (2056)\n+0FC2F0 LOCAL HEADER #876     04034B50 (67324752)\n+0FC2F4 Extract Zip Spec      14 (20) '2.0'\n+0FC2F5 Extract OS            00 (0) 'MS-DOS'\n+0FC2F6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0DBD24 Compression Method    0008 (8) 'Deflated'\n-0DBD26 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0DBD2A CRC                   00000000 (0)\n-0DBD2E Compressed Size       00000000 (0)\n-0DBD32 Uncompressed Size     00000000 (0)\n-0DBD36 Filename Length       0033 (51)\n-0DBD38 Extra Length          0000 (0)\n-0DBD3A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FC2F8 Compression Method    0008 (8) 'Deflated'\n+0FC2FA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FC2FE CRC                   00000000 (0)\n+0FC302 Compressed Size       00000000 (0)\n+0FC306 Uncompressed Size     00000000 (0)\n+0FC30A Filename Length       003D (61)\n+0FC30C Extra Length          0000 (0)\n+0FC30E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDBD3A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFC30E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0DBD6D PAYLOAD\n+0FC34B PAYLOAD\n \n-0DD6D7 DATA DESCRIPTOR       08074B50 (134695760)\n-0DD6DB CRC                   2E56D9DD (777443805)\n-0DD6DF Compressed Size       0000196A (6506)\n-0DD6E3 Uncompressed Size     0000AA70 (43632)\n+0FC725 DATA DESCRIPTOR       08074B50 (134695760)\n+0FC729 CRC                   1EBD34EC (515716332)\n+0FC72D Compressed Size       000003DA (986)\n+0FC731 Uncompressed Size     00000948 (2376)\n \n-0DD6E7 LOCAL HEADER #877     04034B50 (67324752)\n-0DD6EB Extract Zip Spec      14 (20) '2.0'\n-0DD6EC Extract OS            00 (0) 'MS-DOS'\n-0DD6ED General Purpose Flag  0808 (2056)\n+0FC735 LOCAL HEADER #877     04034B50 (67324752)\n+0FC739 Extract Zip Spec      14 (20) '2.0'\n+0FC73A Extract OS            00 (0) 'MS-DOS'\n+0FC73B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0DD6EF Compression Method    0008 (8) 'Deflated'\n-0DD6F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0DD6F5 CRC                   00000000 (0)\n-0DD6F9 Compressed Size       00000000 (0)\n-0DD6FD Uncompressed Size     00000000 (0)\n-0DD701 Filename Length       003A (58)\n-0DD703 Extra Length          0000 (0)\n-0DD705 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FC73D Compression Method    0008 (8) 'Deflated'\n+0FC73F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FC743 CRC                   00000000 (0)\n+0FC747 Compressed Size       00000000 (0)\n+0FC74B Uncompressed Size     00000000 (0)\n+0FC74F Filename Length       003D (61)\n+0FC751 Extra Length          0000 (0)\n+0FC753 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDD705: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFC753: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0DD73F PAYLOAD\n+0FC790 PAYLOAD\n \n-0DD98E DATA DESCRIPTOR       08074B50 (134695760)\n-0DD992 CRC                   6A53E0FE (1783881982)\n-0DD996 Compressed Size       0000024F (591)\n-0DD99A Uncompressed Size     00000456 (1110)\n+0FCA03 DATA DESCRIPTOR       08074B50 (134695760)\n+0FCA07 CRC                   129B84CC (312181964)\n+0FCA0B Compressed Size       00000273 (627)\n+0FCA0F Uncompressed Size     00000511 (1297)\n \n-0DD99E LOCAL HEADER #878     04034B50 (67324752)\n-0DD9A2 Extract Zip Spec      14 (20) '2.0'\n-0DD9A3 Extract OS            00 (0) 'MS-DOS'\n-0DD9A4 General Purpose Flag  0808 (2056)\n+0FCA13 LOCAL HEADER #878     04034B50 (67324752)\n+0FCA17 Extract Zip Spec      14 (20) '2.0'\n+0FCA18 Extract OS            00 (0) 'MS-DOS'\n+0FCA19 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0DD9A6 Compression Method    0008 (8) 'Deflated'\n-0DD9A8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0DD9AC CRC                   00000000 (0)\n-0DD9B0 Compressed Size       00000000 (0)\n-0DD9B4 Uncompressed Size     00000000 (0)\n-0DD9B8 Filename Length       003E (62)\n-0DD9BA Extra Length          0000 (0)\n-0DD9BC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FCA1B Compression Method    0008 (8) 'Deflated'\n+0FCA1D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FCA21 CRC                   00000000 (0)\n+0FCA25 Compressed Size       00000000 (0)\n+0FCA29 Uncompressed Size     00000000 (0)\n+0FCA2D Filename Length       003D (61)\n+0FCA2F Extra Length          0000 (0)\n+0FCA31 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDD9BC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFCA31: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0DD9FA PAYLOAD\n+0FCA6E PAYLOAD\n \n-0DDE23 DATA DESCRIPTOR       08074B50 (134695760)\n-0DDE27 CRC                   4997E6D6 (1234691798)\n-0DDE2B Compressed Size       00000429 (1065)\n-0DDE2F Uncompressed Size     00000C53 (3155)\n+0FCD03 DATA DESCRIPTOR       08074B50 (134695760)\n+0FCD07 CRC                   9F24457D (2669954429)\n+0FCD0B Compressed Size       00000295 (661)\n+0FCD0F Uncompressed Size     0000053C (1340)\n \n-0DDE33 LOCAL HEADER #879     04034B50 (67324752)\n-0DDE37 Extract Zip Spec      14 (20) '2.0'\n-0DDE38 Extract OS            00 (0) 'MS-DOS'\n-0DDE39 General Purpose Flag  0808 (2056)\n+0FCD13 LOCAL HEADER #879     04034B50 (67324752)\n+0FCD17 Extract Zip Spec      14 (20) '2.0'\n+0FCD18 Extract OS            00 (0) 'MS-DOS'\n+0FCD19 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0DDE3B Compression Method    0008 (8) 'Deflated'\n-0DDE3D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0DDE41 CRC                   00000000 (0)\n-0DDE45 Compressed Size       00000000 (0)\n-0DDE49 Uncompressed Size     00000000 (0)\n-0DDE4D Filename Length       003F (63)\n-0DDE4F Extra Length          0000 (0)\n-0DDE51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FCD1B Compression Method    0008 (8) 'Deflated'\n+0FCD1D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FCD21 CRC                   00000000 (0)\n+0FCD25 Compressed Size       00000000 (0)\n+0FCD29 Uncompressed Size     00000000 (0)\n+0FCD2D Filename Length       003A (58)\n+0FCD2F Extra Length          0000 (0)\n+0FCD31 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDDE51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFCD31: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0DDE90 PAYLOAD\n+0FCD6B PAYLOAD\n \n-0DE197 DATA DESCRIPTOR       08074B50 (134695760)\n-0DE19B CRC                   996F8C6F (2574224495)\n-0DE19F Compressed Size       00000307 (775)\n-0DE1A3 Uncompressed Size     00000765 (1893)\n+0FD07D DATA DESCRIPTOR       08074B50 (134695760)\n+0FD081 CRC                   F1DDFBFB (4057857019)\n+0FD085 Compressed Size       00000312 (786)\n+0FD089 Uncompressed Size     000006D2 (1746)\n \n-0DE1A7 LOCAL HEADER #880     04034B50 (67324752)\n-0DE1AB Extract Zip Spec      14 (20) '2.0'\n-0DE1AC Extract OS            00 (0) 'MS-DOS'\n-0DE1AD General Purpose Flag  0808 (2056)\n+0FD08D LOCAL HEADER #880     04034B50 (67324752)\n+0FD091 Extract Zip Spec      14 (20) '2.0'\n+0FD092 Extract OS            00 (0) 'MS-DOS'\n+0FD093 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0DE1AF Compression Method    0008 (8) 'Deflated'\n-0DE1B1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0DE1B5 CRC                   00000000 (0)\n-0DE1B9 Compressed Size       00000000 (0)\n-0DE1BD Uncompressed Size     00000000 (0)\n-0DE1C1 Filename Length       0034 (52)\n-0DE1C3 Extra Length          0000 (0)\n-0DE1C5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FD095 Compression Method    0008 (8) 'Deflated'\n+0FD097 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FD09B CRC                   00000000 (0)\n+0FD09F Compressed Size       00000000 (0)\n+0FD0A3 Uncompressed Size     00000000 (0)\n+0FD0A7 Filename Length       0027 (39)\n+0FD0A9 Extra Length          0000 (0)\n+0FD0AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDE1C5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFD0AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0DE1F9 PAYLOAD\n+0FD0D2 PAYLOAD               XX\n \n-0DE726 DATA DESCRIPTOR       08074B50 (134695760)\n-0DE72A CRC                   F6247952 (4129585490)\n-0DE72E Compressed Size       0000052D (1325)\n-0DE732 Uncompressed Size     000012A2 (4770)\n+0FD0D4 DATA DESCRIPTOR       08074B50 (134695760)\n+0FD0D8 CRC                   00000000 (0)\n+0FD0DC Compressed Size       00000002 (2)\n+0FD0E0 Uncompressed Size     00000000 (0)\n \n-0DE736 LOCAL HEADER #881     04034B50 (67324752)\n-0DE73A Extract Zip Spec      14 (20) '2.0'\n-0DE73B Extract OS            00 (0) 'MS-DOS'\n-0DE73C General Purpose Flag  0808 (2056)\n+0FD0E4 LOCAL HEADER #881     04034B50 (67324752)\n+0FD0E8 Extract Zip Spec      14 (20) '2.0'\n+0FD0E9 Extract OS            00 (0) 'MS-DOS'\n+0FD0EA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0DE73E Compression Method    0008 (8) 'Deflated'\n-0DE740 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0DE744 CRC                   00000000 (0)\n-0DE748 Compressed Size       00000000 (0)\n-0DE74C Uncompressed Size     00000000 (0)\n-0DE750 Filename Length       0040 (64)\n-0DE752 Extra Length          0000 (0)\n-0DE754 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FD0EC Compression Method    0008 (8) 'Deflated'\n+0FD0EE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FD0F2 CRC                   00000000 (0)\n+0FD0F6 Compressed Size       00000000 (0)\n+0FD0FA Uncompressed Size     00000000 (0)\n+0FD0FE Filename Length       003E (62)\n+0FD100 Extra Length          0000 (0)\n+0FD102 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDE754: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFD102: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0DE794 PAYLOAD\n+0FD140 PAYLOAD\n \n-0DEB54 DATA DESCRIPTOR       08074B50 (134695760)\n-0DEB58 CRC                   9D245ED3 (2636406483)\n-0DEB5C Compressed Size       000003C0 (960)\n-0DEB60 Uncompressed Size     00000A45 (2629)\n+0FD564 DATA DESCRIPTOR       08074B50 (134695760)\n+0FD568 CRC                   AD23A7BE (2904795070)\n+0FD56C Compressed Size       00000424 (1060)\n+0FD570 Uncompressed Size     00000CE3 (3299)\n \n-0DEB64 LOCAL HEADER #882     04034B50 (67324752)\n-0DEB68 Extract Zip Spec      14 (20) '2.0'\n-0DEB69 Extract OS            00 (0) 'MS-DOS'\n-0DEB6A General Purpose Flag  0808 (2056)\n+0FD574 LOCAL HEADER #882     04034B50 (67324752)\n+0FD578 Extract Zip Spec      14 (20) '2.0'\n+0FD579 Extract OS            00 (0) 'MS-DOS'\n+0FD57A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0DEB6C Compression Method    0008 (8) 'Deflated'\n-0DEB6E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0DEB72 CRC                   00000000 (0)\n-0DEB76 Compressed Size       00000000 (0)\n-0DEB7A Uncompressed Size     00000000 (0)\n-0DEB7E Filename Length       003A (58)\n-0DEB80 Extra Length          0000 (0)\n-0DEB82 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FD57C Compression Method    0008 (8) 'Deflated'\n+0FD57E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FD582 CRC                   00000000 (0)\n+0FD586 Compressed Size       00000000 (0)\n+0FD58A Uncompressed Size     00000000 (0)\n+0FD58E Filename Length       0026 (38)\n+0FD590 Extra Length          0000 (0)\n+0FD592 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDEB82: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFD592: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0DEBBC PAYLOAD\n+0FD5B8 PAYLOAD               XX\n \n-0DF10D DATA DESCRIPTOR       08074B50 (134695760)\n-0DF111 CRC                   5ED5B140 (1591062848)\n-0DF115 Compressed Size       00000551 (1361)\n-0DF119 Uncompressed Size     000015E8 (5608)\n+0FD5BA DATA DESCRIPTOR       08074B50 (134695760)\n+0FD5BE CRC                   00000000 (0)\n+0FD5C2 Compressed Size       00000002 (2)\n+0FD5C6 Uncompressed Size     00000000 (0)\n \n-0DF11D LOCAL HEADER #883     04034B50 (67324752)\n-0DF121 Extract Zip Spec      14 (20) '2.0'\n-0DF122 Extract OS            00 (0) 'MS-DOS'\n-0DF123 General Purpose Flag  0808 (2056)\n+0FD5CA LOCAL HEADER #883     04034B50 (67324752)\n+0FD5CE Extract Zip Spec      14 (20) '2.0'\n+0FD5CF Extract OS            00 (0) 'MS-DOS'\n+0FD5D0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0DF125 Compression Method    0008 (8) 'Deflated'\n-0DF127 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0DF12B CRC                   00000000 (0)\n-0DF12F Compressed Size       00000000 (0)\n-0DF133 Uncompressed Size     00000000 (0)\n-0DF137 Filename Length       0037 (55)\n-0DF139 Extra Length          0000 (0)\n-0DF13B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FD5D2 Compression Method    0008 (8) 'Deflated'\n+0FD5D4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FD5D8 CRC                   00000000 (0)\n+0FD5DC Compressed Size       00000000 (0)\n+0FD5E0 Uncompressed Size     00000000 (0)\n+0FD5E4 Filename Length       003B (59)\n+0FD5E6 Extra Length          0000 (0)\n+0FD5E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDF13B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFD5E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0DF172 PAYLOAD\n+0FD623 PAYLOAD\n \n-0DF7D1 DATA DESCRIPTOR       08074B50 (134695760)\n-0DF7D5 CRC                   CC038CDE (3422784734)\n-0DF7D9 Compressed Size       0000065F (1631)\n-0DF7DD Uncompressed Size     000019AF (6575)\n+0FD886 DATA DESCRIPTOR       08074B50 (134695760)\n+0FD88A CRC                   2A48966F (709400175)\n+0FD88E Compressed Size       00000263 (611)\n+0FD892 Uncompressed Size     000004E9 (1257)\n \n-0DF7E1 LOCAL HEADER #884     04034B50 (67324752)\n-0DF7E5 Extract Zip Spec      14 (20) '2.0'\n-0DF7E6 Extract OS            00 (0) 'MS-DOS'\n-0DF7E7 General Purpose Flag  0808 (2056)\n+0FD896 LOCAL HEADER #884     04034B50 (67324752)\n+0FD89A Extract Zip Spec      14 (20) '2.0'\n+0FD89B Extract OS            00 (0) 'MS-DOS'\n+0FD89C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0DF7E9 Compression Method    0008 (8) 'Deflated'\n-0DF7EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0DF7EF CRC                   00000000 (0)\n-0DF7F3 Compressed Size       00000000 (0)\n-0DF7F7 Uncompressed Size     00000000 (0)\n-0DF7FB Filename Length       003E (62)\n-0DF7FD Extra Length          0000 (0)\n-0DF7FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FD89E Compression Method    0008 (8) 'Deflated'\n+0FD8A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FD8A4 CRC                   00000000 (0)\n+0FD8A8 Compressed Size       00000000 (0)\n+0FD8AC Uncompressed Size     00000000 (0)\n+0FD8B0 Filename Length       003B (59)\n+0FD8B2 Extra Length          0000 (0)\n+0FD8B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDF7FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFD8B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0DF83D PAYLOAD\n+0FD8EF PAYLOAD\n \n-0DFB51 DATA DESCRIPTOR       08074B50 (134695760)\n-0DFB55 CRC                   80349D10 (2150931728)\n-0DFB59 Compressed Size       00000314 (788)\n-0DFB5D Uncompressed Size     00000779 (1913)\n+0FDE6B DATA DESCRIPTOR       08074B50 (134695760)\n+0FDE6F CRC                   150E80EA (353272042)\n+0FDE73 Compressed Size       0000057C (1404)\n+0FDE77 Uncompressed Size     00000F58 (3928)\n \n-0DFB61 LOCAL HEADER #885     04034B50 (67324752)\n-0DFB65 Extract Zip Spec      14 (20) '2.0'\n-0DFB66 Extract OS            00 (0) 'MS-DOS'\n-0DFB67 General Purpose Flag  0808 (2056)\n+0FDE7B LOCAL HEADER #885     04034B50 (67324752)\n+0FDE7F Extract Zip Spec      14 (20) '2.0'\n+0FDE80 Extract OS            00 (0) 'MS-DOS'\n+0FDE81 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0DFB69 Compression Method    0008 (8) 'Deflated'\n-0DFB6B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0DFB6F CRC                   00000000 (0)\n-0DFB73 Compressed Size       00000000 (0)\n-0DFB77 Uncompressed Size     00000000 (0)\n-0DFB7B Filename Length       0023 (35)\n-0DFB7D Extra Length          0000 (0)\n-0DFB7F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FDE83 Compression Method    0008 (8) 'Deflated'\n+0FDE85 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FDE89 CRC                   00000000 (0)\n+0FDE8D Compressed Size       00000000 (0)\n+0FDE91 Uncompressed Size     00000000 (0)\n+0FDE95 Filename Length       0034 (52)\n+0FDE97 Extra Length          0000 (0)\n+0FDE99 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDFB7F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFDE99: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0DFBA2 PAYLOAD               XX\n+0FDECD PAYLOAD               XX\n \n-0DFBA4 DATA DESCRIPTOR       08074B50 (134695760)\n-0DFBA8 CRC                   00000000 (0)\n-0DFBAC Compressed Size       00000002 (2)\n-0DFBB0 Uncompressed Size     00000000 (0)\n+0FDECF DATA DESCRIPTOR       08074B50 (134695760)\n+0FDED3 CRC                   00000000 (0)\n+0FDED7 Compressed Size       00000002 (2)\n+0FDEDB Uncompressed Size     00000000 (0)\n \n-0DFBB4 LOCAL HEADER #886     04034B50 (67324752)\n-0DFBB8 Extract Zip Spec      14 (20) '2.0'\n-0DFBB9 Extract OS            00 (0) 'MS-DOS'\n-0DFBBA General Purpose Flag  0808 (2056)\n+0FDEDF LOCAL HEADER #886     04034B50 (67324752)\n+0FDEE3 Extract Zip Spec      14 (20) '2.0'\n+0FDEE4 Extract OS            00 (0) 'MS-DOS'\n+0FDEE5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0DFBBC Compression Method    0008 (8) 'Deflated'\n-0DFBBE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0DFBC2 CRC                   00000000 (0)\n-0DFBC6 Compressed Size       00000000 (0)\n-0DFBCA Uncompressed Size     00000000 (0)\n-0DFBCE Filename Length       0037 (55)\n-0DFBD0 Extra Length          0000 (0)\n-0DFBD2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FDEE7 Compression Method    0008 (8) 'Deflated'\n+0FDEE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FDEED CRC                   00000000 (0)\n+0FDEF1 Compressed Size       00000000 (0)\n+0FDEF5 Uncompressed Size     00000000 (0)\n+0FDEF9 Filename Length       003B (59)\n+0FDEFB Extra Length          0000 (0)\n+0FDEFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDFBD2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFDEFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0DFC09 PAYLOAD\n+0FDF38 PAYLOAD\n \n-0DFF3B DATA DESCRIPTOR       08074B50 (134695760)\n-0DFF3F CRC                   D599DEAA (3583631018)\n-0DFF43 Compressed Size       00000332 (818)\n-0DFF47 Uncompressed Size     000009A4 (2468)\n+0FE2FE DATA DESCRIPTOR       08074B50 (134695760)\n+0FE302 CRC                   A5CD24A2 (2781684898)\n+0FE306 Compressed Size       000003C6 (966)\n+0FE30A Uncompressed Size     00000A73 (2675)\n \n-0DFF4B LOCAL HEADER #887     04034B50 (67324752)\n-0DFF4F Extract Zip Spec      14 (20) '2.0'\n-0DFF50 Extract OS            00 (0) 'MS-DOS'\n-0DFF51 General Purpose Flag  0808 (2056)\n+0FE30E LOCAL HEADER #887     04034B50 (67324752)\n+0FE312 Extract Zip Spec      14 (20) '2.0'\n+0FE313 Extract OS            00 (0) 'MS-DOS'\n+0FE314 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0DFF53 Compression Method    0008 (8) 'Deflated'\n-0DFF55 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0DFF59 CRC                   00000000 (0)\n-0DFF5D Compressed Size       00000000 (0)\n-0DFF61 Uncompressed Size     00000000 (0)\n-0DFF65 Filename Length       0036 (54)\n-0DFF67 Extra Length          0000 (0)\n-0DFF69 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FE316 Compression Method    0008 (8) 'Deflated'\n+0FE318 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FE31C CRC                   00000000 (0)\n+0FE320 Compressed Size       00000000 (0)\n+0FE324 Uncompressed Size     00000000 (0)\n+0FE328 Filename Length       0042 (66)\n+0FE32A Extra Length          0000 (0)\n+0FE32C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xDFF69: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFE32C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0DFF9F PAYLOAD\n+0FE36E PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-0E01DA DATA DESCRIPTOR       08074B50 (134695760)\n-0E01DE CRC                   E165CDFB (3781545467)\n-0E01E2 Compressed Size       0000023B (571)\n-0E01E6 Uncompressed Size     0000041A (1050)\n+0FE3B6 DATA DESCRIPTOR       08074B50 (134695760)\n+0FE3BA CRC                   FE93114F (4271051087)\n+0FE3BE Compressed Size       00000048 (72)\n+0FE3C2 Uncompressed Size     0000004A (74)\n \n-0E01EA LOCAL HEADER #888     04034B50 (67324752)\n-0E01EE Extract Zip Spec      14 (20) '2.0'\n-0E01EF Extract OS            00 (0) 'MS-DOS'\n-0E01F0 General Purpose Flag  0808 (2056)\n+0FE3C6 LOCAL HEADER #888     04034B50 (67324752)\n+0FE3CA Extract Zip Spec      14 (20) '2.0'\n+0FE3CB Extract OS            00 (0) 'MS-DOS'\n+0FE3CC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E01F2 Compression Method    0008 (8) 'Deflated'\n-0E01F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E01F8 CRC                   00000000 (0)\n-0E01FC Compressed Size       00000000 (0)\n-0E0200 Uncompressed Size     00000000 (0)\n-0E0204 Filename Length       0037 (55)\n-0E0206 Extra Length          0000 (0)\n-0E0208 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FE3CE Compression Method    0008 (8) 'Deflated'\n+0FE3D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FE3D4 CRC                   00000000 (0)\n+0FE3D8 Compressed Size       00000000 (0)\n+0FE3DC Uncompressed Size     00000000 (0)\n+0FE3E0 Filename Length       0016 (22)\n+0FE3E2 Extra Length          0000 (0)\n+0FE3E4 Filename              'XXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE0208: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFE3E4: Filename 'XXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E023F PAYLOAD\n+0FE3FA PAYLOAD               XX\n \n-0E0501 DATA DESCRIPTOR       08074B50 (134695760)\n-0E0505 CRC                   72699C54 (1919523924)\n-0E0509 Compressed Size       000002C2 (706)\n-0E050D Uncompressed Size     000005B9 (1465)\n+0FE3FC DATA DESCRIPTOR       08074B50 (134695760)\n+0FE400 CRC                   00000000 (0)\n+0FE404 Compressed Size       00000002 (2)\n+0FE408 Uncompressed Size     00000000 (0)\n \n-0E0511 LOCAL HEADER #889     04034B50 (67324752)\n-0E0515 Extract Zip Spec      14 (20) '2.0'\n-0E0516 Extract OS            00 (0) 'MS-DOS'\n-0E0517 General Purpose Flag  0808 (2056)\n+0FE40C LOCAL HEADER #889     04034B50 (67324752)\n+0FE410 Extract Zip Spec      14 (20) '2.0'\n+0FE411 Extract OS            00 (0) 'MS-DOS'\n+0FE412 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E0519 Compression Method    0008 (8) 'Deflated'\n-0E051B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E051F CRC                   00000000 (0)\n-0E0523 Compressed Size       00000000 (0)\n-0E0527 Uncompressed Size     00000000 (0)\n-0E052B Filename Length       0036 (54)\n-0E052D Extra Length          0000 (0)\n-0E052F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FE414 Compression Method    0008 (8) 'Deflated'\n+0FE416 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FE41A CRC                   00000000 (0)\n+0FE41E Compressed Size       00000000 (0)\n+0FE422 Uncompressed Size     00000000 (0)\n+0FE426 Filename Length       001E (30)\n+0FE428 Extra Length          0000 (0)\n+0FE42A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE052F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFE42A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E0565 PAYLOAD\n+0FE448 PAYLOAD               XX\n \n-0E0809 DATA DESCRIPTOR       08074B50 (134695760)\n-0E080D CRC                   330FACB0 (856665264)\n-0E0811 Compressed Size       000002A4 (676)\n-0E0815 Uncompressed Size     00000588 (1416)\n+0FE44A DATA DESCRIPTOR       08074B50 (134695760)\n+0FE44E CRC                   00000000 (0)\n+0FE452 Compressed Size       00000002 (2)\n+0FE456 Uncompressed Size     00000000 (0)\n \n-0E0819 LOCAL HEADER #890     04034B50 (67324752)\n-0E081D Extract Zip Spec      14 (20) '2.0'\n-0E081E Extract OS            00 (0) 'MS-DOS'\n-0E081F General Purpose Flag  0808 (2056)\n+0FE45A LOCAL HEADER #890     04034B50 (67324752)\n+0FE45E Extract Zip Spec      14 (20) '2.0'\n+0FE45F Extract OS            00 (0) 'MS-DOS'\n+0FE460 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E0821 Compression Method    0008 (8) 'Deflated'\n-0E0823 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E0827 CRC                   00000000 (0)\n-0E082B Compressed Size       00000000 (0)\n-0E082F Uncompressed Size     00000000 (0)\n-0E0833 Filename Length       0031 (49)\n-0E0835 Extra Length          0000 (0)\n-0E0837 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FE462 Compression Method    0008 (8) 'Deflated'\n+0FE464 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FE468 CRC                   00000000 (0)\n+0FE46C Compressed Size       00000000 (0)\n+0FE470 Uncompressed Size     00000000 (0)\n+0FE474 Filename Length       002E (46)\n+0FE476 Extra Length          0000 (0)\n+0FE478 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE0837: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFE478: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E0868 PAYLOAD\n+0FE4A6 PAYLOAD\n \n-0E0BA6 DATA DESCRIPTOR       08074B50 (134695760)\n-0E0BAA CRC                   D85DA328 (3630015272)\n-0E0BAE Compressed Size       0000033E (830)\n-0E0BB2 Uncompressed Size     000007B2 (1970)\n+0FE6BF DATA DESCRIPTOR       08074B50 (134695760)\n+0FE6C3 CRC                   00900547 (9438535)\n+0FE6C7 Compressed Size       00000219 (537)\n+0FE6CB Uncompressed Size     000003BF (959)\n \n-0E0BB6 LOCAL HEADER #891     04034B50 (67324752)\n-0E0BBA Extract Zip Spec      14 (20) '2.0'\n-0E0BBB Extract OS            00 (0) 'MS-DOS'\n-0E0BBC General Purpose Flag  0808 (2056)\n+0FE6CF LOCAL HEADER #891     04034B50 (67324752)\n+0FE6D3 Extract Zip Spec      14 (20) '2.0'\n+0FE6D4 Extract OS            00 (0) 'MS-DOS'\n+0FE6D5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E0BBE Compression Method    0008 (8) 'Deflated'\n-0E0BC0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E0BC4 CRC                   00000000 (0)\n-0E0BC8 Compressed Size       00000000 (0)\n-0E0BCC Uncompressed Size     00000000 (0)\n-0E0BD0 Filename Length       0032 (50)\n-0E0BD2 Extra Length          0000 (0)\n-0E0BD4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FE6D7 Compression Method    0008 (8) 'Deflated'\n+0FE6D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FE6DD CRC                   00000000 (0)\n+0FE6E1 Compressed Size       00000000 (0)\n+0FE6E5 Uncompressed Size     00000000 (0)\n+0FE6E9 Filename Length       0033 (51)\n+0FE6EB Extra Length          0000 (0)\n+0FE6ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE0BD4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFE6ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E0C06 PAYLOAD\n+0FE720 PAYLOAD\n \n-0E1067 DATA DESCRIPTOR       08074B50 (134695760)\n-0E106B CRC                   B04E2D51 (2957913425)\n-0E106F Compressed Size       00000461 (1121)\n-0E1073 Uncompressed Size     0000135D (4957)\n+0FEA3B DATA DESCRIPTOR       08074B50 (134695760)\n+0FEA3F CRC                   1D274B23 (489114403)\n+0FEA43 Compressed Size       0000031B (795)\n+0FEA47 Uncompressed Size     000007EC (2028)\n \n-0E1077 LOCAL HEADER #892     04034B50 (67324752)\n-0E107B Extract Zip Spec      14 (20) '2.0'\n-0E107C Extract OS            00 (0) 'MS-DOS'\n-0E107D General Purpose Flag  0808 (2056)\n+0FEA4B LOCAL HEADER #892     04034B50 (67324752)\n+0FEA4F Extract Zip Spec      14 (20) '2.0'\n+0FEA50 Extract OS            00 (0) 'MS-DOS'\n+0FEA51 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E107F Compression Method    0008 (8) 'Deflated'\n-0E1081 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E1085 CRC                   00000000 (0)\n-0E1089 Compressed Size       00000000 (0)\n-0E108D Uncompressed Size     00000000 (0)\n-0E1091 Filename Length       002F (47)\n-0E1093 Extra Length          0000 (0)\n-0E1095 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FEA53 Compression Method    0008 (8) 'Deflated'\n+0FEA55 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FEA59 CRC                   00000000 (0)\n+0FEA5D Compressed Size       00000000 (0)\n+0FEA61 Uncompressed Size     00000000 (0)\n+0FEA65 Filename Length       0031 (49)\n+0FEA67 Extra Length          0000 (0)\n+0FEA69 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE1095: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFEA69: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E10C4 PAYLOAD\n+0FEA9A PAYLOAD\n \n-0E15D7 DATA DESCRIPTOR       08074B50 (134695760)\n-0E15DB CRC                   8CC675B8 (2361816504)\n-0E15DF Compressed Size       00000513 (1299)\n-0E15E3 Uncompressed Size     00000E5B (3675)\n+0FECFF DATA DESCRIPTOR       08074B50 (134695760)\n+0FED03 CRC                   C514DA82 (3306478210)\n+0FED07 Compressed Size       00000265 (613)\n+0FED0B Uncompressed Size     00000465 (1125)\n \n-0E15E7 LOCAL HEADER #893     04034B50 (67324752)\n-0E15EB Extract Zip Spec      14 (20) '2.0'\n-0E15EC Extract OS            00 (0) 'MS-DOS'\n-0E15ED General Purpose Flag  0808 (2056)\n+0FED0F LOCAL HEADER #893     04034B50 (67324752)\n+0FED13 Extract Zip Spec      14 (20) '2.0'\n+0FED14 Extract OS            00 (0) 'MS-DOS'\n+0FED15 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E15EF Compression Method    0008 (8) 'Deflated'\n-0E15F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E15F5 CRC                   00000000 (0)\n-0E15F9 Compressed Size       00000000 (0)\n-0E15FD Uncompressed Size     00000000 (0)\n-0E1601 Filename Length       0030 (48)\n-0E1603 Extra Length          0000 (0)\n-0E1605 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FED17 Compression Method    0008 (8) 'Deflated'\n+0FED19 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FED1D CRC                   00000000 (0)\n+0FED21 Compressed Size       00000000 (0)\n+0FED25 Uncompressed Size     00000000 (0)\n+0FED29 Filename Length       0025 (37)\n+0FED2B Extra Length          0000 (0)\n+0FED2D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE1605: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFED2D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E1635 PAYLOAD\n+0FED52 PAYLOAD\n \n-0E1B50 DATA DESCRIPTOR       08074B50 (134695760)\n-0E1B54 CRC                   FF46E79C (4282836892)\n-0E1B58 Compressed Size       0000051B (1307)\n-0E1B5C Uncompressed Size     00000FC4 (4036)\n+0FF5AA DATA DESCRIPTOR       08074B50 (134695760)\n+0FF5AE CRC                   58855C59 (1485134937)\n+0FF5B2 Compressed Size       00000858 (2136)\n+0FF5B6 Uncompressed Size     00001F83 (8067)\n \n-0E1B60 LOCAL HEADER #894     04034B50 (67324752)\n-0E1B64 Extract Zip Spec      14 (20) '2.0'\n-0E1B65 Extract OS            00 (0) 'MS-DOS'\n-0E1B66 General Purpose Flag  0808 (2056)\n+0FF5BA LOCAL HEADER #894     04034B50 (67324752)\n+0FF5BE Extract Zip Spec      14 (20) '2.0'\n+0FF5BF Extract OS            00 (0) 'MS-DOS'\n+0FF5C0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E1B68 Compression Method    0008 (8) 'Deflated'\n-0E1B6A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E1B6E CRC                   00000000 (0)\n-0E1B72 Compressed Size       00000000 (0)\n-0E1B76 Uncompressed Size     00000000 (0)\n-0E1B7A Filename Length       0029 (41)\n-0E1B7C Extra Length          0000 (0)\n-0E1B7E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FF5C2 Compression Method    0008 (8) 'Deflated'\n+0FF5C4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FF5C8 CRC                   00000000 (0)\n+0FF5CC Compressed Size       00000000 (0)\n+0FF5D0 Uncompressed Size     00000000 (0)\n+0FF5D4 Filename Length       0026 (38)\n+0FF5D6 Extra Length          0000 (0)\n+0FF5D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE1B7E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFF5D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E1BA7 PAYLOAD               XX\n+0FF5FE PAYLOAD\n \n-0E1BA9 DATA DESCRIPTOR       08074B50 (134695760)\n-0E1BAD CRC                   00000000 (0)\n-0E1BB1 Compressed Size       00000002 (2)\n-0E1BB5 Uncompressed Size     00000000 (0)\n+0FFA41 DATA DESCRIPTOR       08074B50 (134695760)\n+0FFA45 CRC                   16C36050 (381902928)\n+0FFA49 Compressed Size       00000443 (1091)\n+0FFA4D Uncompressed Size     00000A30 (2608)\n \n-0E1BB9 LOCAL HEADER #895     04034B50 (67324752)\n-0E1BBD Extract Zip Spec      14 (20) '2.0'\n-0E1BBE Extract OS            00 (0) 'MS-DOS'\n-0E1BBF General Purpose Flag  0808 (2056)\n+0FFA51 LOCAL HEADER #895     04034B50 (67324752)\n+0FFA55 Extract Zip Spec      14 (20) '2.0'\n+0FFA56 Extract OS            00 (0) 'MS-DOS'\n+0FFA57 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E1BC1 Compression Method    0008 (8) 'Deflated'\n-0E1BC3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E1BC7 CRC                   00000000 (0)\n-0E1BCB Compressed Size       00000000 (0)\n-0E1BCF Uncompressed Size     00000000 (0)\n-0E1BD3 Filename Length       003B (59)\n-0E1BD5 Extra Length          0000 (0)\n-0E1BD7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FFA59 Compression Method    0008 (8) 'Deflated'\n+0FFA5B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FFA5F CRC                   00000000 (0)\n+0FFA63 Compressed Size       00000000 (0)\n+0FFA67 Uncompressed Size     00000000 (0)\n+0FFA6B Filename Length       002A (42)\n+0FFA6D Extra Length          0000 (0)\n+0FFA6F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE1BD7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFFA6F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E1C12 PAYLOAD\n+0FFA99 PAYLOAD\n \n-0E2C56 DATA DESCRIPTOR       08074B50 (134695760)\n-0E2C5A CRC                   6E137A75 (1846770293)\n-0E2C5E Compressed Size       00001044 (4164)\n-0E2C62 Uncompressed Size     000050EF (20719)\n+0FFEA5 DATA DESCRIPTOR       08074B50 (134695760)\n+0FFEA9 CRC                   28FBE016 (687595542)\n+0FFEAD Compressed Size       0000040C (1036)\n+0FFEB1 Uncompressed Size     00000A76 (2678)\n \n-0E2C66 LOCAL HEADER #896     04034B50 (67324752)\n-0E2C6A Extract Zip Spec      14 (20) '2.0'\n-0E2C6B Extract OS            00 (0) 'MS-DOS'\n-0E2C6C General Purpose Flag  0808 (2056)\n+0FFEB5 LOCAL HEADER #896     04034B50 (67324752)\n+0FFEB9 Extract Zip Spec      14 (20) '2.0'\n+0FFEBA Extract OS            00 (0) 'MS-DOS'\n+0FFEBB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E2C6E Compression Method    0008 (8) 'Deflated'\n-0E2C70 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E2C74 CRC                   00000000 (0)\n-0E2C78 Compressed Size       00000000 (0)\n-0E2C7C Uncompressed Size     00000000 (0)\n-0E2C80 Filename Length       002B (43)\n-0E2C82 Extra Length          0000 (0)\n-0E2C84 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+0FFEBD Compression Method    0008 (8) 'Deflated'\n+0FFEBF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+0FFEC3 CRC                   00000000 (0)\n+0FFEC7 Compressed Size       00000000 (0)\n+0FFECB Uncompressed Size     00000000 (0)\n+0FFECF Filename Length       0028 (40)\n+0FFED1 Extra Length          0000 (0)\n+0FFED3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE2C84: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0xFFED3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E2CAF PAYLOAD               XX\n+0FFEFB PAYLOAD\n \n-0E2CB1 DATA DESCRIPTOR       08074B50 (134695760)\n-0E2CB5 CRC                   00000000 (0)\n-0E2CB9 Compressed Size       00000002 (2)\n-0E2CBD Uncompressed Size     00000000 (0)\n+100AE5 DATA DESCRIPTOR       08074B50 (134695760)\n+100AE9 CRC                   18D15EB0 (416374448)\n+100AED Compressed Size       00000BEA (3050)\n+100AF1 Uncompressed Size     00003175 (12661)\n \n-0E2CC1 LOCAL HEADER #897     04034B50 (67324752)\n-0E2CC5 Extract Zip Spec      14 (20) '2.0'\n-0E2CC6 Extract OS            00 (0) 'MS-DOS'\n-0E2CC7 General Purpose Flag  0808 (2056)\n+100AF5 LOCAL HEADER #897     04034B50 (67324752)\n+100AF9 Extract Zip Spec      14 (20) '2.0'\n+100AFA Extract OS            00 (0) 'MS-DOS'\n+100AFB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E2CC9 Compression Method    0008 (8) 'Deflated'\n-0E2CCB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E2CCF CRC                   00000000 (0)\n-0E2CD3 Compressed Size       00000000 (0)\n-0E2CD7 Uncompressed Size     00000000 (0)\n-0E2CDB Filename Length       003D (61)\n-0E2CDD Extra Length          0000 (0)\n-0E2CDF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+100AFD Compression Method    0008 (8) 'Deflated'\n+100AFF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+100B03 CRC                   00000000 (0)\n+100B07 Compressed Size       00000000 (0)\n+100B0B Uncompressed Size     00000000 (0)\n+100B0F Filename Length       002C (44)\n+100B11 Extra Length          0000 (0)\n+100B13 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE2CDF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x100B13: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E2D1C PAYLOAD\n+100B3F PAYLOAD\n \n-0E394F DATA DESCRIPTOR       08074B50 (134695760)\n-0E3953 CRC                   71D1D17D (1909576061)\n-0E3957 Compressed Size       00000C33 (3123)\n-0E395B Uncompressed Size     00002CEB (11499)\n+100EF8 DATA DESCRIPTOR       08074B50 (134695760)\n+100EFC CRC                   C1E775CF (3253171663)\n+100F00 Compressed Size       000003B9 (953)\n+100F04 Uncompressed Size     000009AF (2479)\n \n-0E395F LOCAL HEADER #898     04034B50 (67324752)\n-0E3963 Extract Zip Spec      14 (20) '2.0'\n-0E3964 Extract OS            00 (0) 'MS-DOS'\n-0E3965 General Purpose Flag  0808 (2056)\n+100F08 LOCAL HEADER #898     04034B50 (67324752)\n+100F0C Extract Zip Spec      14 (20) '2.0'\n+100F0D Extract OS            00 (0) 'MS-DOS'\n+100F0E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E3967 Compression Method    0008 (8) 'Deflated'\n-0E3969 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E396D CRC                   00000000 (0)\n-0E3971 Compressed Size       00000000 (0)\n-0E3975 Uncompressed Size     00000000 (0)\n-0E3979 Filename Length       0046 (70)\n-0E397B Extra Length          0000 (0)\n-0E397D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+100F10 Compression Method    0008 (8) 'Deflated'\n+100F12 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+100F16 CRC                   00000000 (0)\n+100F1A Compressed Size       00000000 (0)\n+100F1E Uncompressed Size     00000000 (0)\n+100F22 Filename Length       0023 (35)\n+100F24 Extra Length          0000 (0)\n+100F26 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE397D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x100F26: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E39C3 PAYLOAD\n+100F49 PAYLOAD\n \n-0E3C76 DATA DESCRIPTOR       08074B50 (134695760)\n-0E3C7A CRC                   8AF6C6B7 (2331428535)\n-0E3C7E Compressed Size       000002B3 (691)\n-0E3C82 Uncompressed Size     000005BB (1467)\n+1013C4 DATA DESCRIPTOR       08074B50 (134695760)\n+1013C8 CRC                   7E97C5F2 (2123875826)\n+1013CC Compressed Size       0000047B (1147)\n+1013D0 Uncompressed Size     00000A79 (2681)\n \n-0E3C86 LOCAL HEADER #899     04034B50 (67324752)\n-0E3C8A Extract Zip Spec      14 (20) '2.0'\n-0E3C8B Extract OS            00 (0) 'MS-DOS'\n-0E3C8C General Purpose Flag  0808 (2056)\n+1013D4 LOCAL HEADER #899     04034B50 (67324752)\n+1013D8 Extract Zip Spec      14 (20) '2.0'\n+1013D9 Extract OS            00 (0) 'MS-DOS'\n+1013DA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E3C8E Compression Method    0008 (8) 'Deflated'\n-0E3C90 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E3C94 CRC                   00000000 (0)\n-0E3C98 Compressed Size       00000000 (0)\n-0E3C9C Uncompressed Size     00000000 (0)\n-0E3CA0 Filename Length       0049 (73)\n-0E3CA2 Extra Length          0000 (0)\n-0E3CA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1013DC Compression Method    0008 (8) 'Deflated'\n+1013DE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1013E2 CRC                   00000000 (0)\n+1013E6 Compressed Size       00000000 (0)\n+1013EA Uncompressed Size     00000000 (0)\n+1013EE Filename Length       0022 (34)\n+1013F0 Extra Length          0000 (0)\n+1013F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE3CA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1013F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E3CED PAYLOAD\n+101414 PAYLOAD\n \n-0E4129 DATA DESCRIPTOR       08074B50 (134695760)\n-0E412D CRC                   2C68D340 (745067328)\n-0E4131 Compressed Size       0000043C (1084)\n-0E4135 Uncompressed Size     00001165 (4453)\n+1016AD DATA DESCRIPTOR       08074B50 (134695760)\n+1016B1 CRC                   525AF459 (1381692505)\n+1016B5 Compressed Size       00000299 (665)\n+1016B9 Uncompressed Size     0000053F (1343)\n \n-0E4139 LOCAL HEADER #900     04034B50 (67324752)\n-0E413D Extract Zip Spec      14 (20) '2.0'\n-0E413E Extract OS            00 (0) 'MS-DOS'\n-0E413F General Purpose Flag  0808 (2056)\n+1016BD LOCAL HEADER #900     04034B50 (67324752)\n+1016C1 Extract Zip Spec      14 (20) '2.0'\n+1016C2 Extract OS            00 (0) 'MS-DOS'\n+1016C3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E4141 Compression Method    0008 (8) 'Deflated'\n-0E4143 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E4147 CRC                   00000000 (0)\n-0E414B Compressed Size       00000000 (0)\n-0E414F Uncompressed Size     00000000 (0)\n-0E4153 Filename Length       0046 (70)\n-0E4155 Extra Length          0000 (0)\n-0E4157 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1016C5 Compression Method    0008 (8) 'Deflated'\n+1016C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1016CB CRC                   00000000 (0)\n+1016CF Compressed Size       00000000 (0)\n+1016D3 Uncompressed Size     00000000 (0)\n+1016D7 Filename Length       002A (42)\n+1016D9 Extra Length          0000 (0)\n+1016DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE4157: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1016DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E419D PAYLOAD\n+101705 PAYLOAD\n \n-0E4589 DATA DESCRIPTOR       08074B50 (134695760)\n-0E458D CRC                   C14E1F5D (3243122525)\n-0E4591 Compressed Size       000003EC (1004)\n-0E4595 Uncompressed Size     00000DD5 (3541)\n+1019A2 DATA DESCRIPTOR       08074B50 (134695760)\n+1019A6 CRC                   FC32E707 (4231194375)\n+1019AA Compressed Size       0000029D (669)\n+1019AE Uncompressed Size     000005AC (1452)\n \n-0E4599 LOCAL HEADER #901     04034B50 (67324752)\n-0E459D Extract Zip Spec      14 (20) '2.0'\n-0E459E Extract OS            00 (0) 'MS-DOS'\n-0E459F General Purpose Flag  0808 (2056)\n+1019B2 LOCAL HEADER #901     04034B50 (67324752)\n+1019B6 Extract Zip Spec      14 (20) '2.0'\n+1019B7 Extract OS            00 (0) 'MS-DOS'\n+1019B8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E45A1 Compression Method    0008 (8) 'Deflated'\n-0E45A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E45A7 CRC                   00000000 (0)\n-0E45AB Compressed Size       00000000 (0)\n-0E45AF Uncompressed Size     00000000 (0)\n-0E45B3 Filename Length       003C (60)\n-0E45B5 Extra Length          0000 (0)\n-0E45B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1019BA Compression Method    0008 (8) 'Deflated'\n+1019BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1019C0 CRC                   00000000 (0)\n+1019C4 Compressed Size       00000000 (0)\n+1019C8 Uncompressed Size     00000000 (0)\n+1019CC Filename Length       0020 (32)\n+1019CE Extra Length          0000 (0)\n+1019D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE45B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1019D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E45F3 PAYLOAD\n+1019F0 PAYLOAD\n \n-0E4971 DATA DESCRIPTOR       08074B50 (134695760)\n-0E4975 CRC                   0593378C (93534092)\n-0E4979 Compressed Size       0000037E (894)\n-0E497D Uncompressed Size     000009B6 (2486)\n+101E2E DATA DESCRIPTOR       08074B50 (134695760)\n+101E32 CRC                   2EDA0DE9 (786042345)\n+101E36 Compressed Size       0000043E (1086)\n+101E3A Uncompressed Size     00000965 (2405)\n \n-0E4981 LOCAL HEADER #902     04034B50 (67324752)\n-0E4985 Extract Zip Spec      14 (20) '2.0'\n-0E4986 Extract OS            00 (0) 'MS-DOS'\n-0E4987 General Purpose Flag  0808 (2056)\n+101E3E LOCAL HEADER #902     04034B50 (67324752)\n+101E42 Extract Zip Spec      14 (20) '2.0'\n+101E43 Extract OS            00 (0) 'MS-DOS'\n+101E44 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E4989 Compression Method    0008 (8) 'Deflated'\n-0E498B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E498F CRC                   00000000 (0)\n-0E4993 Compressed Size       00000000 (0)\n-0E4997 Uncompressed Size     00000000 (0)\n-0E499B Filename Length       0037 (55)\n-0E499D Extra Length          0000 (0)\n-0E499F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+101E46 Compression Method    0008 (8) 'Deflated'\n+101E48 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+101E4C CRC                   00000000 (0)\n+101E50 Compressed Size       00000000 (0)\n+101E54 Uncompressed Size     00000000 (0)\n+101E58 Filename Length       0027 (39)\n+101E5A Extra Length          0000 (0)\n+101E5C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE499F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x101E5C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E49D6 PAYLOAD\n+101E83 PAYLOAD\n \n-0E4C63 DATA DESCRIPTOR       08074B50 (134695760)\n-0E4C67 CRC                   B40DC99A (3020802458)\n-0E4C6B Compressed Size       0000028D (653)\n-0E4C6F Uncompressed Size     00000516 (1302)\n+10240C DATA DESCRIPTOR       08074B50 (134695760)\n+102410 CRC                   F67FCDE8 (4135570920)\n+102414 Compressed Size       00000589 (1417)\n+102418 Uncompressed Size     00000FE9 (4073)\n \n-0E4C73 LOCAL HEADER #903     04034B50 (67324752)\n-0E4C77 Extract Zip Spec      14 (20) '2.0'\n-0E4C78 Extract OS            00 (0) 'MS-DOS'\n-0E4C79 General Purpose Flag  0808 (2056)\n+10241C LOCAL HEADER #903     04034B50 (67324752)\n+102420 Extract Zip Spec      14 (20) '2.0'\n+102421 Extract OS            00 (0) 'MS-DOS'\n+102422 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E4C7B Compression Method    0008 (8) 'Deflated'\n-0E4C7D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E4C81 CRC                   00000000 (0)\n-0E4C85 Compressed Size       00000000 (0)\n-0E4C89 Uncompressed Size     00000000 (0)\n-0E4C8D Filename Length       0041 (65)\n-0E4C8F Extra Length          0000 (0)\n-0E4C91 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+102424 Compression Method    0008 (8) 'Deflated'\n+102426 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10242A CRC                   00000000 (0)\n+10242E Compressed Size       00000000 (0)\n+102432 Uncompressed Size     00000000 (0)\n+102436 Filename Length       0024 (36)\n+102438 Extra Length          0000 (0)\n+10243A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE4C91: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10243A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E4CD2 PAYLOAD\n+10245E PAYLOAD\n \n-0E50EF DATA DESCRIPTOR       08074B50 (134695760)\n-0E50F3 CRC                   27689F2C (661167916)\n-0E50F7 Compressed Size       0000041D (1053)\n-0E50FB Uncompressed Size     00000AAA (2730)\n+1028D0 DATA DESCRIPTOR       08074B50 (134695760)\n+1028D4 CRC                   E5052367 (3842319207)\n+1028D8 Compressed Size       00000472 (1138)\n+1028DC Uncompressed Size     00000F2D (3885)\n \n-0E50FF LOCAL HEADER #904     04034B50 (67324752)\n-0E5103 Extract Zip Spec      14 (20) '2.0'\n-0E5104 Extract OS            00 (0) 'MS-DOS'\n-0E5105 General Purpose Flag  0808 (2056)\n+1028E0 LOCAL HEADER #904     04034B50 (67324752)\n+1028E4 Extract Zip Spec      14 (20) '2.0'\n+1028E5 Extract OS            00 (0) 'MS-DOS'\n+1028E6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E5107 Compression Method    0008 (8) 'Deflated'\n-0E5109 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E510D CRC                   00000000 (0)\n-0E5111 Compressed Size       00000000 (0)\n-0E5115 Uncompressed Size     00000000 (0)\n-0E5119 Filename Length       0032 (50)\n-0E511B Extra Length          0000 (0)\n-0E511D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1028E8 Compression Method    0008 (8) 'Deflated'\n+1028EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1028EE CRC                   00000000 (0)\n+1028F2 Compressed Size       00000000 (0)\n+1028F6 Uncompressed Size     00000000 (0)\n+1028FA Filename Length       0024 (36)\n+1028FC Extra Length          0000 (0)\n+1028FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE511D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1028FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E514F PAYLOAD               XX\n+102922 PAYLOAD\n \n-0E5151 DATA DESCRIPTOR       08074B50 (134695760)\n-0E5155 CRC                   00000000 (0)\n-0E5159 Compressed Size       00000002 (2)\n-0E515D Uncompressed Size     00000000 (0)\n+102B29 DATA DESCRIPTOR       08074B50 (134695760)\n+102B2D CRC                   1A821C29 (444734505)\n+102B31 Compressed Size       00000207 (519)\n+102B35 Uncompressed Size     0000038E (910)\n \n-0E5161 LOCAL HEADER #905     04034B50 (67324752)\n-0E5165 Extract Zip Spec      14 (20) '2.0'\n-0E5166 Extract OS            00 (0) 'MS-DOS'\n-0E5167 General Purpose Flag  0808 (2056)\n+102B39 LOCAL HEADER #905     04034B50 (67324752)\n+102B3D Extract Zip Spec      14 (20) '2.0'\n+102B3E Extract OS            00 (0) 'MS-DOS'\n+102B3F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E5169 Compression Method    0008 (8) 'Deflated'\n-0E516B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E516F CRC                   00000000 (0)\n-0E5173 Compressed Size       00000000 (0)\n-0E5177 Uncompressed Size     00000000 (0)\n-0E517B Filename Length       0048 (72)\n-0E517D Extra Length          0000 (0)\n-0E517F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+102B41 Compression Method    0008 (8) 'Deflated'\n+102B43 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+102B47 CRC                   00000000 (0)\n+102B4B Compressed Size       00000000 (0)\n+102B4F Uncompressed Size     00000000 (0)\n+102B53 Filename Length       0021 (33)\n+102B55 Extra Length          0000 (0)\n+102B57 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE517F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x102B57: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E51C7 PAYLOAD\n+102B78 PAYLOAD\n \n-0E560C DATA DESCRIPTOR       08074B50 (134695760)\n-0E5610 CRC                   3CE2D276 (1021497974)\n-0E5614 Compressed Size       00000445 (1093)\n-0E5618 Uncompressed Size     00000B3E (2878)\n+102E3D DATA DESCRIPTOR       08074B50 (134695760)\n+102E41 CRC                   19B4DE27 (431283751)\n+102E45 Compressed Size       000002C5 (709)\n+102E49 Uncompressed Size     000005D1 (1489)\n \n-0E561C LOCAL HEADER #906     04034B50 (67324752)\n-0E5620 Extract Zip Spec      14 (20) '2.0'\n-0E5621 Extract OS            00 (0) 'MS-DOS'\n-0E5622 General Purpose Flag  0808 (2056)\n+102E4D LOCAL HEADER #906     04034B50 (67324752)\n+102E51 Extract Zip Spec      14 (20) '2.0'\n+102E52 Extract OS            00 (0) 'MS-DOS'\n+102E53 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E5624 Compression Method    0008 (8) 'Deflated'\n-0E5626 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E562A CRC                   00000000 (0)\n-0E562E Compressed Size       00000000 (0)\n-0E5632 Uncompressed Size     00000000 (0)\n-0E5636 Filename Length       0045 (69)\n-0E5638 Extra Length          0000 (0)\n-0E563A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+102E55 Compression Method    0008 (8) 'Deflated'\n+102E57 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+102E5B CRC                   00000000 (0)\n+102E5F Compressed Size       00000000 (0)\n+102E63 Uncompressed Size     00000000 (0)\n+102E67 Filename Length       0029 (41)\n+102E69 Extra Length          0000 (0)\n+102E6B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE563A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x102E6B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E567F PAYLOAD\n+102E94 PAYLOAD\n \n-0E5A2D DATA DESCRIPTOR       08074B50 (134695760)\n-0E5A31 CRC                   BC922CD8 (3163696344)\n-0E5A35 Compressed Size       000003AE (942)\n-0E5A39 Uncompressed Size     00000890 (2192)\n+10313F DATA DESCRIPTOR       08074B50 (134695760)\n+103143 CRC                   D82F1E47 (3626966599)\n+103147 Compressed Size       000002AB (683)\n+10314B Uncompressed Size     0000059A (1434)\n \n-0E5A3D LOCAL HEADER #907     04034B50 (67324752)\n-0E5A41 Extract Zip Spec      14 (20) '2.0'\n-0E5A42 Extract OS            00 (0) 'MS-DOS'\n-0E5A43 General Purpose Flag  0808 (2056)\n+10314F LOCAL HEADER #907     04034B50 (67324752)\n+103153 Extract Zip Spec      14 (20) '2.0'\n+103154 Extract OS            00 (0) 'MS-DOS'\n+103155 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E5A45 Compression Method    0008 (8) 'Deflated'\n-0E5A47 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E5A4B CRC                   00000000 (0)\n-0E5A4F Compressed Size       00000000 (0)\n-0E5A53 Uncompressed Size     00000000 (0)\n-0E5A57 Filename Length       004C (76)\n-0E5A59 Extra Length          0000 (0)\n-0E5A5B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+103157 Compression Method    0008 (8) 'Deflated'\n+103159 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10315D CRC                   00000000 (0)\n+103161 Compressed Size       00000000 (0)\n+103165 Uncompressed Size     00000000 (0)\n+103169 Filename Length       002A (42)\n+10316B Extra Length          0000 (0)\n+10316D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE5A5B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10316D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E5AA7 PAYLOAD\n+103197 PAYLOAD\n \n-0E62C5 DATA DESCRIPTOR       08074B50 (134695760)\n-0E62C9 CRC                   B13FDACC (2973752012)\n-0E62CD Compressed Size       0000081E (2078)\n-0E62D1 Uncompressed Size     0000217A (8570)\n+103511 DATA DESCRIPTOR       08074B50 (134695760)\n+103515 CRC                   16B7BD77 (381140343)\n+103519 Compressed Size       0000037A (890)\n+10351D Uncompressed Size     00000805 (2053)\n \n-0E62D5 LOCAL HEADER #908     04034B50 (67324752)\n-0E62D9 Extract Zip Spec      14 (20) '2.0'\n-0E62DA Extract OS            00 (0) 'MS-DOS'\n-0E62DB General Purpose Flag  0808 (2056)\n+103521 LOCAL HEADER #908     04034B50 (67324752)\n+103525 Extract Zip Spec      14 (20) '2.0'\n+103526 Extract OS            00 (0) 'MS-DOS'\n+103527 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E62DD Compression Method    0008 (8) 'Deflated'\n-0E62DF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E62E3 CRC                   00000000 (0)\n-0E62E7 Compressed Size       00000000 (0)\n-0E62EB Uncompressed Size     00000000 (0)\n-0E62EF Filename Length       004B (75)\n-0E62F1 Extra Length          0000 (0)\n-0E62F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+103529 Compression Method    0008 (8) 'Deflated'\n+10352B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10352F CRC                   00000000 (0)\n+103533 Compressed Size       00000000 (0)\n+103537 Uncompressed Size     00000000 (0)\n+10353B Filename Length       0022 (34)\n+10353D Extra Length          0000 (0)\n+10353F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE62F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10353F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E633E PAYLOAD\n+103561 PAYLOAD\n \n-0E6AF5 DATA DESCRIPTOR       08074B50 (134695760)\n-0E6AF9 CRC                   2FB42746 (800335686)\n-0E6AFD Compressed Size       000007B7 (1975)\n-0E6B01 Uncompressed Size     00001E7B (7803)\n+103B31 DATA DESCRIPTOR       08074B50 (134695760)\n+103B35 CRC                   CCB43BAA (3434363818)\n+103B39 Compressed Size       000005D0 (1488)\n+103B3D Uncompressed Size     00000DF0 (3568)\n \n-0E6B05 LOCAL HEADER #909     04034B50 (67324752)\n-0E6B09 Extract Zip Spec      14 (20) '2.0'\n-0E6B0A Extract OS            00 (0) 'MS-DOS'\n-0E6B0B General Purpose Flag  0808 (2056)\n+103B41 LOCAL HEADER #909     04034B50 (67324752)\n+103B45 Extract Zip Spec      14 (20) '2.0'\n+103B46 Extract OS            00 (0) 'MS-DOS'\n+103B47 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E6B0D Compression Method    0008 (8) 'Deflated'\n-0E6B0F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E6B13 CRC                   00000000 (0)\n-0E6B17 Compressed Size       00000000 (0)\n-0E6B1B Uncompressed Size     00000000 (0)\n-0E6B1F Filename Length       004C (76)\n-0E6B21 Extra Length          0000 (0)\n-0E6B23 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+103B49 Compression Method    0008 (8) 'Deflated'\n+103B4B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+103B4F CRC                   00000000 (0)\n+103B53 Compressed Size       00000000 (0)\n+103B57 Uncompressed Size     00000000 (0)\n+103B5B Filename Length       0028 (40)\n+103B5D Extra Length          0000 (0)\n+103B5F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE6B23: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x103B5F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E6B6F PAYLOAD\n+103B87 PAYLOAD\n \n-0E744C DATA DESCRIPTOR       08074B50 (134695760)\n-0E7450 CRC                   C01CAB2E (3223104302)\n-0E7454 Compressed Size       000008DD (2269)\n-0E7458 Uncompressed Size     0000247E (9342)\n+103E59 DATA DESCRIPTOR       08074B50 (134695760)\n+103E5D CRC                   6D231835 (1831016501)\n+103E61 Compressed Size       000002D2 (722)\n+103E65 Uncompressed Size     000005FB (1531)\n \n-0E745C LOCAL HEADER #910     04034B50 (67324752)\n-0E7460 Extract Zip Spec      14 (20) '2.0'\n-0E7461 Extract OS            00 (0) 'MS-DOS'\n-0E7462 General Purpose Flag  0808 (2056)\n+103E69 LOCAL HEADER #910     04034B50 (67324752)\n+103E6D Extract Zip Spec      14 (20) '2.0'\n+103E6E Extract OS            00 (0) 'MS-DOS'\n+103E6F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E7464 Compression Method    0008 (8) 'Deflated'\n-0E7466 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E746A CRC                   00000000 (0)\n-0E746E Compressed Size       00000000 (0)\n-0E7472 Uncompressed Size     00000000 (0)\n-0E7476 Filename Length       004B (75)\n-0E7478 Extra Length          0000 (0)\n-0E747A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+103E71 Compression Method    0008 (8) 'Deflated'\n+103E73 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+103E77 CRC                   00000000 (0)\n+103E7B Compressed Size       00000000 (0)\n+103E7F Uncompressed Size     00000000 (0)\n+103E83 Filename Length       0026 (38)\n+103E85 Extra Length          0000 (0)\n+103E87 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE747A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x103E87: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E74C5 PAYLOAD\n+103EAD PAYLOAD\n \n-0E7E6F DATA DESCRIPTOR       08074B50 (134695760)\n-0E7E73 CRC                   6C372682 (1815553666)\n-0E7E77 Compressed Size       000009AA (2474)\n-0E7E7B Uncompressed Size     000024E2 (9442)\n+1041AE DATA DESCRIPTOR       08074B50 (134695760)\n+1041B2 CRC                   2A77FFA2 (712507298)\n+1041B6 Compressed Size       00000301 (769)\n+1041BA Uncompressed Size     00000719 (1817)\n \n-0E7E7F LOCAL HEADER #911     04034B50 (67324752)\n-0E7E83 Extract Zip Spec      14 (20) '2.0'\n-0E7E84 Extract OS            00 (0) 'MS-DOS'\n-0E7E85 General Purpose Flag  0808 (2056)\n+1041BE LOCAL HEADER #911     04034B50 (67324752)\n+1041C2 Extract Zip Spec      14 (20) '2.0'\n+1041C3 Extract OS            00 (0) 'MS-DOS'\n+1041C4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E7E87 Compression Method    0008 (8) 'Deflated'\n-0E7E89 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E7E8D CRC                   00000000 (0)\n-0E7E91 Compressed Size       00000000 (0)\n-0E7E95 Uncompressed Size     00000000 (0)\n-0E7E99 Filename Length       0046 (70)\n-0E7E9B Extra Length          0000 (0)\n-0E7E9D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1041C6 Compression Method    0008 (8) 'Deflated'\n+1041C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1041CC CRC                   00000000 (0)\n+1041D0 Compressed Size       00000000 (0)\n+1041D4 Uncompressed Size     00000000 (0)\n+1041D8 Filename Length       0020 (32)\n+1041DA Extra Length          0000 (0)\n+1041DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE7E9D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1041DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E7EE3 PAYLOAD\n+1041FC PAYLOAD\n \n-0E81D9 DATA DESCRIPTOR       08074B50 (134695760)\n-0E81DD CRC                   7F591FA6 (2136547238)\n-0E81E1 Compressed Size       000002F6 (758)\n-0E81E5 Uncompressed Size     0000079B (1947)\n+10484B DATA DESCRIPTOR       08074B50 (134695760)\n+10484F CRC                   1DB16B63 (498166627)\n+104853 Compressed Size       0000064F (1615)\n+104857 Uncompressed Size     000015FD (5629)\n \n-0E81E9 LOCAL HEADER #912     04034B50 (67324752)\n-0E81ED Extract Zip Spec      14 (20) '2.0'\n-0E81EE Extract OS            00 (0) 'MS-DOS'\n-0E81EF General Purpose Flag  0808 (2056)\n+10485B LOCAL HEADER #912     04034B50 (67324752)\n+10485F Extract Zip Spec      14 (20) '2.0'\n+104860 Extract OS            00 (0) 'MS-DOS'\n+104861 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E81F1 Compression Method    0008 (8) 'Deflated'\n-0E81F3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E81F7 CRC                   00000000 (0)\n-0E81FB Compressed Size       00000000 (0)\n-0E81FF Uncompressed Size     00000000 (0)\n-0E8203 Filename Length       0047 (71)\n-0E8205 Extra Length          0000 (0)\n-0E8207 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+104863 Compression Method    0008 (8) 'Deflated'\n+104865 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+104869 CRC                   00000000 (0)\n+10486D Compressed Size       00000000 (0)\n+104871 Uncompressed Size     00000000 (0)\n+104875 Filename Length       0026 (38)\n+104877 Extra Length          0000 (0)\n+104879 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE8207: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x104879: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E824E PAYLOAD\n+10489F PAYLOAD\n \n-0E8799 DATA DESCRIPTOR       08074B50 (134695760)\n-0E879D CRC                   229A16D5 (580523733)\n-0E87A1 Compressed Size       0000054B (1355)\n-0E87A5 Uncompressed Size     00001172 (4466)\n+104B1B DATA DESCRIPTOR       08074B50 (134695760)\n+104B1F CRC                   3BFD1345 (1006441285)\n+104B23 Compressed Size       0000027C (636)\n+104B27 Uncompressed Size     0000059E (1438)\n \n-0E87A9 LOCAL HEADER #913     04034B50 (67324752)\n-0E87AD Extract Zip Spec      14 (20) '2.0'\n-0E87AE Extract OS            00 (0) 'MS-DOS'\n-0E87AF General Purpose Flag  0808 (2056)\n+104B2B LOCAL HEADER #913     04034B50 (67324752)\n+104B2F Extract Zip Spec      14 (20) '2.0'\n+104B30 Extract OS            00 (0) 'MS-DOS'\n+104B31 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E87B1 Compression Method    0008 (8) 'Deflated'\n-0E87B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E87B7 CRC                   00000000 (0)\n-0E87BB Compressed Size       00000000 (0)\n-0E87BF Uncompressed Size     00000000 (0)\n-0E87C3 Filename Length       0049 (73)\n-0E87C5 Extra Length          0000 (0)\n-0E87C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+104B33 Compression Method    0008 (8) 'Deflated'\n+104B35 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+104B39 CRC                   00000000 (0)\n+104B3D Compressed Size       00000000 (0)\n+104B41 Uncompressed Size     00000000 (0)\n+104B45 Filename Length       0024 (36)\n+104B47 Extra Length          0000 (0)\n+104B49 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE87C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x104B49: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E8810 PAYLOAD\n+104B6D PAYLOAD\n \n-0E8C2F DATA DESCRIPTOR       08074B50 (134695760)\n-0E8C33 CRC                   6C52AC25 (1817357349)\n-0E8C37 Compressed Size       0000041F (1055)\n-0E8C3B Uncompressed Size     00000A2F (2607)\n+105CA8 DATA DESCRIPTOR       08074B50 (134695760)\n+105CAC CRC                   C3E7F091 (3286757521)\n+105CB0 Compressed Size       0000113B (4411)\n+105CB4 Uncompressed Size     00005A5D (23133)\n \n-0E8C3F LOCAL HEADER #914     04034B50 (67324752)\n-0E8C43 Extract Zip Spec      14 (20) '2.0'\n-0E8C44 Extract OS            00 (0) 'MS-DOS'\n-0E8C45 General Purpose Flag  0808 (2056)\n+105CB8 LOCAL HEADER #914     04034B50 (67324752)\n+105CBC Extract Zip Spec      14 (20) '2.0'\n+105CBD Extract OS            00 (0) 'MS-DOS'\n+105CBE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E8C47 Compression Method    0008 (8) 'Deflated'\n-0E8C49 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E8C4D CRC                   00000000 (0)\n-0E8C51 Compressed Size       00000000 (0)\n-0E8C55 Uncompressed Size     00000000 (0)\n-0E8C59 Filename Length       0049 (73)\n-0E8C5B Extra Length          0000 (0)\n-0E8C5D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+105CC0 Compression Method    0008 (8) 'Deflated'\n+105CC2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+105CC6 CRC                   00000000 (0)\n+105CCA Compressed Size       00000000 (0)\n+105CCE Uncompressed Size     00000000 (0)\n+105CD2 Filename Length       0026 (38)\n+105CD4 Extra Length          0000 (0)\n+105CD6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE8C5D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x105CD6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E8CA6 PAYLOAD\n+105CFC PAYLOAD\n \n-0E90D6 DATA DESCRIPTOR       08074B50 (134695760)\n-0E90DA CRC                   39DE0130 (970850608)\n-0E90DE Compressed Size       00000430 (1072)\n-0E90E2 Uncompressed Size     00000AD0 (2768)\n+10617D DATA DESCRIPTOR       08074B50 (134695760)\n+106181 CRC                   CCECA2E4 (3438060260)\n+106185 Compressed Size       00000481 (1153)\n+106189 Uncompressed Size     00000D97 (3479)\n \n-0E90E6 LOCAL HEADER #915     04034B50 (67324752)\n-0E90EA Extract Zip Spec      14 (20) '2.0'\n-0E90EB Extract OS            00 (0) 'MS-DOS'\n-0E90EC General Purpose Flag  0808 (2056)\n+10618D LOCAL HEADER #915     04034B50 (67324752)\n+106191 Extract Zip Spec      14 (20) '2.0'\n+106192 Extract OS            00 (0) 'MS-DOS'\n+106193 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E90EE Compression Method    0008 (8) 'Deflated'\n-0E90F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E90F4 CRC                   00000000 (0)\n-0E90F8 Compressed Size       00000000 (0)\n-0E90FC Uncompressed Size     00000000 (0)\n-0E9100 Filename Length       0021 (33)\n-0E9102 Extra Length          0000 (0)\n-0E9104 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+106195 Compression Method    0008 (8) 'Deflated'\n+106197 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10619B CRC                   00000000 (0)\n+10619F Compressed Size       00000000 (0)\n+1061A3 Uncompressed Size     00000000 (0)\n+1061A7 Filename Length       0027 (39)\n+1061A9 Extra Length          0000 (0)\n+1061AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE9104: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1061AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E9125 PAYLOAD               XX\n+1061D2 PAYLOAD\n \n-0E9127 DATA DESCRIPTOR       08074B50 (134695760)\n-0E912B CRC                   00000000 (0)\n-0E912F Compressed Size       00000002 (2)\n-0E9133 Uncompressed Size     00000000 (0)\n+106CD5 DATA DESCRIPTOR       08074B50 (134695760)\n+106CD9 CRC                   8DF2CD69 (2381499753)\n+106CDD Compressed Size       00000B03 (2819)\n+106CE1 Uncompressed Size     00003C43 (15427)\n \n-0E9137 LOCAL HEADER #916     04034B50 (67324752)\n-0E913B Extract Zip Spec      14 (20) '2.0'\n-0E913C Extract OS            00 (0) 'MS-DOS'\n-0E913D General Purpose Flag  0808 (2056)\n+106CE5 LOCAL HEADER #916     04034B50 (67324752)\n+106CE9 Extract Zip Spec      14 (20) '2.0'\n+106CEA Extract OS            00 (0) 'MS-DOS'\n+106CEB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E913F Compression Method    0008 (8) 'Deflated'\n-0E9141 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E9145 CRC                   00000000 (0)\n-0E9149 Compressed Size       00000000 (0)\n-0E914D Uncompressed Size     00000000 (0)\n-0E9151 Filename Length       0033 (51)\n-0E9153 Extra Length          0000 (0)\n-0E9155 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+106CED Compression Method    0008 (8) 'Deflated'\n+106CEF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+106CF3 CRC                   00000000 (0)\n+106CF7 Compressed Size       00000000 (0)\n+106CFB Uncompressed Size     00000000 (0)\n+106CFF Filename Length       0023 (35)\n+106D01 Extra Length          0000 (0)\n+106D03 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE9155: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x106D03: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E9188 PAYLOAD\n+106D26 PAYLOAD\n \n-0E93F7 DATA DESCRIPTOR       08074B50 (134695760)\n-0E93FB CRC                   1A03F22E (436466222)\n-0E93FF Compressed Size       0000026F (623)\n-0E9403 Uncompressed Size     000004DF (1247)\n+107468 DATA DESCRIPTOR       08074B50 (134695760)\n+10746C CRC                   B577D739 (3044529977)\n+107470 Compressed Size       00000742 (1858)\n+107474 Uncompressed Size     0000218E (8590)\n \n-0E9407 LOCAL HEADER #917     04034B50 (67324752)\n-0E940B Extract Zip Spec      14 (20) '2.0'\n-0E940C Extract OS            00 (0) 'MS-DOS'\n-0E940D General Purpose Flag  0808 (2056)\n+107478 LOCAL HEADER #917     04034B50 (67324752)\n+10747C Extract Zip Spec      14 (20) '2.0'\n+10747D Extract OS            00 (0) 'MS-DOS'\n+10747E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E940F Compression Method    0008 (8) 'Deflated'\n-0E9411 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E9415 CRC                   00000000 (0)\n-0E9419 Compressed Size       00000000 (0)\n-0E941D Uncompressed Size     00000000 (0)\n-0E9421 Filename Length       0027 (39)\n-0E9423 Extra Length          0000 (0)\n-0E9425 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+107480 Compression Method    0008 (8) 'Deflated'\n+107482 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+107486 CRC                   00000000 (0)\n+10748A Compressed Size       00000000 (0)\n+10748E Uncompressed Size     00000000 (0)\n+107492 Filename Length       002A (42)\n+107494 Extra Length          0000 (0)\n+107496 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE9425: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x107496: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E944C PAYLOAD               XX\n+1074C0 PAYLOAD\n \n-0E944E DATA DESCRIPTOR       08074B50 (134695760)\n-0E9452 CRC                   00000000 (0)\n-0E9456 Compressed Size       00000002 (2)\n-0E945A Uncompressed Size     00000000 (0)\n+1078DA DATA DESCRIPTOR       08074B50 (134695760)\n+1078DE CRC                   CDFD7CF6 (3455941878)\n+1078E2 Compressed Size       0000041A (1050)\n+1078E6 Uncompressed Size     00000BBA (3002)\n \n-0E945E LOCAL HEADER #918     04034B50 (67324752)\n-0E9462 Extract Zip Spec      14 (20) '2.0'\n-0E9463 Extract OS            00 (0) 'MS-DOS'\n-0E9464 General Purpose Flag  0808 (2056)\n+1078EA LOCAL HEADER #918     04034B50 (67324752)\n+1078EE Extract Zip Spec      14 (20) '2.0'\n+1078EF Extract OS            00 (0) 'MS-DOS'\n+1078F0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E9466 Compression Method    0008 (8) 'Deflated'\n-0E9468 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E946C CRC                   00000000 (0)\n-0E9470 Compressed Size       00000000 (0)\n-0E9474 Uncompressed Size     00000000 (0)\n-0E9478 Filename Length       0037 (55)\n-0E947A Extra Length          0000 (0)\n-0E947C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1078F2 Compression Method    0008 (8) 'Deflated'\n+1078F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1078F8 CRC                   00000000 (0)\n+1078FC Compressed Size       00000000 (0)\n+107900 Uncompressed Size     00000000 (0)\n+107904 Filename Length       0026 (38)\n+107906 Extra Length          0000 (0)\n+107908 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE947C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x107908: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0E94B3 PAYLOAD\n+10792E PAYLOAD\n \n-0E9FBC DATA DESCRIPTOR       08074B50 (134695760)\n-0E9FC0 CRC                   DBE899CA (3689454026)\n-0E9FC4 Compressed Size       00000B09 (2825)\n-0E9FC8 Uncompressed Size     00002E6D (11885)\n+107BC4 DATA DESCRIPTOR       08074B50 (134695760)\n+107BC8 CRC                   32C986CB (852068043)\n+107BCC Compressed Size       00000296 (662)\n+107BD0 Uncompressed Size     000004C5 (1221)\n \n-0E9FCC LOCAL HEADER #919     04034B50 (67324752)\n-0E9FD0 Extract Zip Spec      14 (20) '2.0'\n-0E9FD1 Extract OS            00 (0) 'MS-DOS'\n-0E9FD2 General Purpose Flag  0808 (2056)\n+107BD4 LOCAL HEADER #919     04034B50 (67324752)\n+107BD8 Extract Zip Spec      14 (20) '2.0'\n+107BD9 Extract OS            00 (0) 'MS-DOS'\n+107BDA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0E9FD4 Compression Method    0008 (8) 'Deflated'\n-0E9FD6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0E9FDA CRC                   00000000 (0)\n-0E9FDE Compressed Size       00000000 (0)\n-0E9FE2 Uncompressed Size     00000000 (0)\n-0E9FE6 Filename Length       0029 (41)\n-0E9FE8 Extra Length          0000 (0)\n-0E9FEA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+107BDC Compression Method    0008 (8) 'Deflated'\n+107BDE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+107BE2 CRC                   00000000 (0)\n+107BE6 Compressed Size       00000000 (0)\n+107BEA Uncompressed Size     00000000 (0)\n+107BEE Filename Length       001C (28)\n+107BF0 Extra Length          0000 (0)\n+107BF2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xE9FEA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x107BF2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EA013 PAYLOAD               XX\n+107C0E PAYLOAD               XX\n \n-0EA015 DATA DESCRIPTOR       08074B50 (134695760)\n-0EA019 CRC                   00000000 (0)\n-0EA01D Compressed Size       00000002 (2)\n-0EA021 Uncompressed Size     00000000 (0)\n+107C10 DATA DESCRIPTOR       08074B50 (134695760)\n+107C14 CRC                   00000000 (0)\n+107C18 Compressed Size       00000002 (2)\n+107C1C Uncompressed Size     00000000 (0)\n \n-0EA025 LOCAL HEADER #920     04034B50 (67324752)\n-0EA029 Extract Zip Spec      14 (20) '2.0'\n-0EA02A Extract OS            00 (0) 'MS-DOS'\n-0EA02B General Purpose Flag  0808 (2056)\n+107C20 LOCAL HEADER #920     04034B50 (67324752)\n+107C24 Extract Zip Spec      14 (20) '2.0'\n+107C25 Extract OS            00 (0) 'MS-DOS'\n+107C26 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EA02D Compression Method    0008 (8) 'Deflated'\n-0EA02F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EA033 CRC                   00000000 (0)\n-0EA037 Compressed Size       00000000 (0)\n-0EA03B Uncompressed Size     00000000 (0)\n-0EA03F Filename Length       0032 (50)\n-0EA041 Extra Length          0000 (0)\n-0EA043 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+107C28 Compression Method    0008 (8) 'Deflated'\n+107C2A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+107C2E CRC                   00000000 (0)\n+107C32 Compressed Size       00000000 (0)\n+107C36 Uncompressed Size     00000000 (0)\n+107C3A Filename Length       0030 (48)\n+107C3C Extra Length          0000 (0)\n+107C3E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEA043: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x107C3E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EA075 PAYLOAD\n+107C6E PAYLOAD\n \n-0EA300 DATA DESCRIPTOR       08074B50 (134695760)\n-0EA304 CRC                   91FB3CEA (2449161450)\n-0EA308 Compressed Size       0000028B (651)\n-0EA30C Uncompressed Size     00000518 (1304)\n+10860A DATA DESCRIPTOR       08074B50 (134695760)\n+10860E CRC                   9594ED56 (2509565270)\n+108612 Compressed Size       0000099C (2460)\n+108616 Uncompressed Size     00001E5D (7773)\n \n-0EA310 LOCAL HEADER #921     04034B50 (67324752)\n-0EA314 Extract Zip Spec      14 (20) '2.0'\n-0EA315 Extract OS            00 (0) 'MS-DOS'\n-0EA316 General Purpose Flag  0808 (2056)\n+10861A LOCAL HEADER #921     04034B50 (67324752)\n+10861E Extract Zip Spec      14 (20) '2.0'\n+10861F Extract OS            00 (0) 'MS-DOS'\n+108620 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EA318 Compression Method    0008 (8) 'Deflated'\n-0EA31A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EA31E CRC                   00000000 (0)\n-0EA322 Compressed Size       00000000 (0)\n-0EA326 Uncompressed Size     00000000 (0)\n-0EA32A Filename Length       0042 (66)\n-0EA32C Extra Length          0000 (0)\n-0EA32E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+108622 Compression Method    0008 (8) 'Deflated'\n+108624 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+108628 CRC                   00000000 (0)\n+10862C Compressed Size       00000000 (0)\n+108630 Uncompressed Size     00000000 (0)\n+108634 Filename Length       0032 (50)\n+108636 Extra Length          0000 (0)\n+108638 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEA32E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x108638: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EA370 PAYLOAD\n+10866A PAYLOAD\n \n-0EA89C DATA DESCRIPTOR       08074B50 (134695760)\n-0EA8A0 CRC                   492B287D (1227565181)\n-0EA8A4 Compressed Size       0000052C (1324)\n-0EA8A8 Uncompressed Size     00000FCE (4046)\n+108D67 DATA DESCRIPTOR       08074B50 (134695760)\n+108D6B CRC                   B52DE397 (3039683479)\n+108D6F Compressed Size       000006FD (1789)\n+108D73 Uncompressed Size     00001623 (5667)\n \n-0EA8AC LOCAL HEADER #922     04034B50 (67324752)\n-0EA8B0 Extract Zip Spec      14 (20) '2.0'\n-0EA8B1 Extract OS            00 (0) 'MS-DOS'\n-0EA8B2 General Purpose Flag  0808 (2056)\n+108D77 LOCAL HEADER #922     04034B50 (67324752)\n+108D7B Extract Zip Spec      14 (20) '2.0'\n+108D7C Extract OS            00 (0) 'MS-DOS'\n+108D7D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EA8B4 Compression Method    0008 (8) 'Deflated'\n-0EA8B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EA8BA CRC                   00000000 (0)\n-0EA8BE Compressed Size       00000000 (0)\n-0EA8C2 Uncompressed Size     00000000 (0)\n-0EA8C6 Filename Length       0039 (57)\n-0EA8C8 Extra Length          0000 (0)\n-0EA8CA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+108D7F Compression Method    0008 (8) 'Deflated'\n+108D81 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+108D85 CRC                   00000000 (0)\n+108D89 Compressed Size       00000000 (0)\n+108D8D Uncompressed Size     00000000 (0)\n+108D91 Filename Length       0032 (50)\n+108D93 Extra Length          0000 (0)\n+108D95 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEA8CA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x108D95: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EA903 PAYLOAD\n+108DC7 PAYLOAD\n \n-0EAE33 DATA DESCRIPTOR       08074B50 (134695760)\n-0EAE37 CRC                   EB3BD2B9 (3946566329)\n-0EAE3B Compressed Size       00000530 (1328)\n-0EAE3F Uncompressed Size     0000169D (5789)\n+1090EA DATA DESCRIPTOR       08074B50 (134695760)\n+1090EE CRC                   851F3F00 (2233417472)\n+1090F2 Compressed Size       00000323 (803)\n+1090F6 Uncompressed Size     00000723 (1827)\n \n-0EAE43 LOCAL HEADER #923     04034B50 (67324752)\n-0EAE47 Extract Zip Spec      14 (20) '2.0'\n-0EAE48 Extract OS            00 (0) 'MS-DOS'\n-0EAE49 General Purpose Flag  0808 (2056)\n+1090FA LOCAL HEADER #923     04034B50 (67324752)\n+1090FE Extract Zip Spec      14 (20) '2.0'\n+1090FF Extract OS            00 (0) 'MS-DOS'\n+109100 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EAE4B Compression Method    0008 (8) 'Deflated'\n-0EAE4D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EAE51 CRC                   00000000 (0)\n-0EAE55 Compressed Size       00000000 (0)\n-0EAE59 Uncompressed Size     00000000 (0)\n-0EAE5D Filename Length       0031 (49)\n-0EAE5F Extra Length          0000 (0)\n-0EAE61 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+109102 Compression Method    0008 (8) 'Deflated'\n+109104 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+109108 CRC                   00000000 (0)\n+10910C Compressed Size       00000000 (0)\n+109110 Uncompressed Size     00000000 (0)\n+109114 Filename Length       0031 (49)\n+109116 Extra Length          0000 (0)\n+109118 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEAE61: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x109118: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EAE92 PAYLOAD               XX\n+109149 PAYLOAD\n \n-0EAE94 DATA DESCRIPTOR       08074B50 (134695760)\n-0EAE98 CRC                   00000000 (0)\n-0EAE9C Compressed Size       00000002 (2)\n-0EAEA0 Uncompressed Size     00000000 (0)\n+1096E3 DATA DESCRIPTOR       08074B50 (134695760)\n+1096E7 CRC                   86FDBE3E (2264776254)\n+1096EB Compressed Size       0000059A (1434)\n+1096EF Uncompressed Size     00000FB9 (4025)\n \n-0EAEA4 LOCAL HEADER #924     04034B50 (67324752)\n-0EAEA8 Extract Zip Spec      14 (20) '2.0'\n-0EAEA9 Extract OS            00 (0) 'MS-DOS'\n-0EAEAA General Purpose Flag  0808 (2056)\n+1096F3 LOCAL HEADER #924     04034B50 (67324752)\n+1096F7 Extract Zip Spec      14 (20) '2.0'\n+1096F8 Extract OS            00 (0) 'MS-DOS'\n+1096F9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EAEAC Compression Method    0008 (8) 'Deflated'\n-0EAEAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EAEB2 CRC                   00000000 (0)\n-0EAEB6 Compressed Size       00000000 (0)\n-0EAEBA Uncompressed Size     00000000 (0)\n-0EAEBE Filename Length       0048 (72)\n-0EAEC0 Extra Length          0000 (0)\n-0EAEC2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1096FB Compression Method    0008 (8) 'Deflated'\n+1096FD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+109701 CRC                   00000000 (0)\n+109705 Compressed Size       00000000 (0)\n+109709 Uncompressed Size     00000000 (0)\n+10970D Filename Length       0036 (54)\n+10970F Extra Length          0000 (0)\n+109711 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEAEC2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x109711: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EAF0A PAYLOAD\n+109747 PAYLOAD\n \n-0EB258 DATA DESCRIPTOR       08074B50 (134695760)\n-0EB25C CRC                   74498D23 (1950977315)\n-0EB260 Compressed Size       0000034E (846)\n-0EB264 Uncompressed Size     00000738 (1848)\n+109C48 DATA DESCRIPTOR       08074B50 (134695760)\n+109C4C CRC                   CA71D506 (3396457734)\n+109C50 Compressed Size       00000501 (1281)\n+109C54 Uncompressed Size     00000D90 (3472)\n \n-0EB268 LOCAL HEADER #925     04034B50 (67324752)\n-0EB26C Extract Zip Spec      14 (20) '2.0'\n-0EB26D Extract OS            00 (0) 'MS-DOS'\n-0EB26E General Purpose Flag  0808 (2056)\n+109C58 LOCAL HEADER #925     04034B50 (67324752)\n+109C5C Extract Zip Spec      14 (20) '2.0'\n+109C5D Extract OS            00 (0) 'MS-DOS'\n+109C5E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EB270 Compression Method    0008 (8) 'Deflated'\n-0EB272 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EB276 CRC                   00000000 (0)\n-0EB27A Compressed Size       00000000 (0)\n-0EB27E Uncompressed Size     00000000 (0)\n-0EB282 Filename Length       0047 (71)\n-0EB284 Extra Length          0000 (0)\n-0EB286 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+109C60 Compression Method    0008 (8) 'Deflated'\n+109C62 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+109C66 CRC                   00000000 (0)\n+109C6A Compressed Size       00000000 (0)\n+109C6E Uncompressed Size     00000000 (0)\n+109C72 Filename Length       002E (46)\n+109C74 Extra Length          0000 (0)\n+109C76 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEB286: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x109C76: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EB2CD PAYLOAD\n+109CA4 PAYLOAD\n \n-0EB57E DATA DESCRIPTOR       08074B50 (134695760)\n-0EB582 CRC                   C2DA4C0E (3269086222)\n-0EB586 Compressed Size       000002B1 (689)\n-0EB58A Uncompressed Size     00000581 (1409)\n+10A3FA DATA DESCRIPTOR       08074B50 (134695760)\n+10A3FE CRC                   B42DC810 (3022899216)\n+10A402 Compressed Size       00000756 (1878)\n+10A406 Uncompressed Size     000018CC (6348)\n \n-0EB58E LOCAL HEADER #926     04034B50 (67324752)\n-0EB592 Extract Zip Spec      14 (20) '2.0'\n-0EB593 Extract OS            00 (0) 'MS-DOS'\n-0EB594 General Purpose Flag  0808 (2056)\n+10A40A LOCAL HEADER #926     04034B50 (67324752)\n+10A40E Extract Zip Spec      14 (20) '2.0'\n+10A40F Extract OS            00 (0) 'MS-DOS'\n+10A410 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EB596 Compression Method    0008 (8) 'Deflated'\n-0EB598 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EB59C CRC                   00000000 (0)\n-0EB5A0 Compressed Size       00000000 (0)\n-0EB5A4 Uncompressed Size     00000000 (0)\n-0EB5A8 Filename Length       0047 (71)\n-0EB5AA Extra Length          0000 (0)\n-0EB5AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10A412 Compression Method    0008 (8) 'Deflated'\n+10A414 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10A418 CRC                   00000000 (0)\n+10A41C Compressed Size       00000000 (0)\n+10A420 Uncompressed Size     00000000 (0)\n+10A424 Filename Length       0031 (49)\n+10A426 Extra Length          0000 (0)\n+10A428 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEB5AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10A428: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EB5F3 PAYLOAD\n+10A459 PAYLOAD\n \n-0EBAD0 DATA DESCRIPTOR       08074B50 (134695760)\n-0EBAD4 CRC                   A166D974 (2707872116)\n-0EBAD8 Compressed Size       000004DD (1245)\n-0EBADC Uncompressed Size     00000E50 (3664)\n+10A952 DATA DESCRIPTOR       08074B50 (134695760)\n+10A956 CRC                   5D6B9E17 (1567333911)\n+10A95A Compressed Size       000004F9 (1273)\n+10A95E Uncompressed Size     00000CC3 (3267)\n \n-0EBAE0 LOCAL HEADER #927     04034B50 (67324752)\n-0EBAE4 Extract Zip Spec      14 (20) '2.0'\n-0EBAE5 Extract OS            00 (0) 'MS-DOS'\n-0EBAE6 General Purpose Flag  0808 (2056)\n+10A962 LOCAL HEADER #927     04034B50 (67324752)\n+10A966 Extract Zip Spec      14 (20) '2.0'\n+10A967 Extract OS            00 (0) 'MS-DOS'\n+10A968 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EBAE8 Compression Method    0008 (8) 'Deflated'\n-0EBAEA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EBAEE CRC                   00000000 (0)\n-0EBAF2 Compressed Size       00000000 (0)\n-0EBAF6 Uncompressed Size     00000000 (0)\n-0EBAFA Filename Length       0046 (70)\n-0EBAFC Extra Length          0000 (0)\n-0EBAFE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10A96A Compression Method    0008 (8) 'Deflated'\n+10A96C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10A970 CRC                   00000000 (0)\n+10A974 Compressed Size       00000000 (0)\n+10A978 Uncompressed Size     00000000 (0)\n+10A97C Filename Length       002B (43)\n+10A97E Extra Length          0000 (0)\n+10A980 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEBAFE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10A980: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EBB44 PAYLOAD\n+10A9AB PAYLOAD\n \n-0EC11E DATA DESCRIPTOR       08074B50 (134695760)\n-0EC122 CRC                   F227F3D5 (4062704597)\n-0EC126 Compressed Size       000005DA (1498)\n-0EC12A Uncompressed Size     0000107D (4221)\n+10AD05 DATA DESCRIPTOR       08074B50 (134695760)\n+10AD09 CRC                   33E95645 (870929989)\n+10AD0D Compressed Size       0000035A (858)\n+10AD11 Uncompressed Size     0000073C (1852)\n \n-0EC12E LOCAL HEADER #928     04034B50 (67324752)\n-0EC132 Extract Zip Spec      14 (20) '2.0'\n-0EC133 Extract OS            00 (0) 'MS-DOS'\n-0EC134 General Purpose Flag  0808 (2056)\n+10AD15 LOCAL HEADER #928     04034B50 (67324752)\n+10AD19 Extract Zip Spec      14 (20) '2.0'\n+10AD1A Extract OS            00 (0) 'MS-DOS'\n+10AD1B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EC136 Compression Method    0008 (8) 'Deflated'\n-0EC138 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EC13C CRC                   00000000 (0)\n-0EC140 Compressed Size       00000000 (0)\n-0EC144 Uncompressed Size     00000000 (0)\n-0EC148 Filename Length       0049 (73)\n-0EC14A Extra Length          0000 (0)\n-0EC14C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10AD1D Compression Method    0008 (8) 'Deflated'\n+10AD1F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10AD23 CRC                   00000000 (0)\n+10AD27 Compressed Size       00000000 (0)\n+10AD2B Uncompressed Size     00000000 (0)\n+10AD2F Filename Length       0030 (48)\n+10AD31 Extra Length          0000 (0)\n+10AD33 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEC14C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10AD33: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EC195 PAYLOAD\n+10AD63 PAYLOAD\n \n-0EC722 DATA DESCRIPTOR       08074B50 (134695760)\n-0EC726 CRC                   F5209683 (4112553603)\n-0EC72A Compressed Size       0000058D (1421)\n-0EC72E Uncompressed Size     00001210 (4624)\n+10B42B DATA DESCRIPTOR       08074B50 (134695760)\n+10B42F CRC                   DF14BD96 (3742678422)\n+10B433 Compressed Size       000006C8 (1736)\n+10B437 Uncompressed Size     000016A6 (5798)\n \n-0EC732 LOCAL HEADER #929     04034B50 (67324752)\n-0EC736 Extract Zip Spec      14 (20) '2.0'\n-0EC737 Extract OS            00 (0) 'MS-DOS'\n-0EC738 General Purpose Flag  0808 (2056)\n+10B43B LOCAL HEADER #929     04034B50 (67324752)\n+10B43F Extract Zip Spec      14 (20) '2.0'\n+10B440 Extract OS            00 (0) 'MS-DOS'\n+10B441 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EC73A Compression Method    0008 (8) 'Deflated'\n-0EC73C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EC740 CRC                   00000000 (0)\n-0EC744 Compressed Size       00000000 (0)\n-0EC748 Uncompressed Size     00000000 (0)\n-0EC74C Filename Length       0024 (36)\n-0EC74E Extra Length          0000 (0)\n-0EC750 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10B443 Compression Method    0008 (8) 'Deflated'\n+10B445 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10B449 CRC                   00000000 (0)\n+10B44D Compressed Size       00000000 (0)\n+10B451 Uncompressed Size     00000000 (0)\n+10B455 Filename Length       0033 (51)\n+10B457 Extra Length          0000 (0)\n+10B459 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEC750: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10B459: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EC774 PAYLOAD               XX\n+10B48C PAYLOAD\n \n-0EC776 DATA DESCRIPTOR       08074B50 (134695760)\n-0EC77A CRC                   00000000 (0)\n-0EC77E Compressed Size       00000002 (2)\n-0EC782 Uncompressed Size     00000000 (0)\n+10BA2D DATA DESCRIPTOR       08074B50 (134695760)\n+10BA31 CRC                   FA17120C (4195815948)\n+10BA35 Compressed Size       000005A1 (1441)\n+10BA39 Uncompressed Size     00000EE2 (3810)\n \n-0EC786 LOCAL HEADER #930     04034B50 (67324752)\n-0EC78A Extract Zip Spec      14 (20) '2.0'\n-0EC78B Extract OS            00 (0) 'MS-DOS'\n-0EC78C General Purpose Flag  0808 (2056)\n+10BA3D LOCAL HEADER #930     04034B50 (67324752)\n+10BA41 Extract Zip Spec      14 (20) '2.0'\n+10BA42 Extract OS            00 (0) 'MS-DOS'\n+10BA43 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EC78E Compression Method    0008 (8) 'Deflated'\n-0EC790 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EC794 CRC                   00000000 (0)\n-0EC798 Compressed Size       00000000 (0)\n-0EC79C Uncompressed Size     00000000 (0)\n-0EC7A0 Filename Length       0038 (56)\n-0EC7A2 Extra Length          0000 (0)\n-0EC7A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10BA45 Compression Method    0008 (8) 'Deflated'\n+10BA47 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10BA4B CRC                   00000000 (0)\n+10BA4F Compressed Size       00000000 (0)\n+10BA53 Uncompressed Size     00000000 (0)\n+10BA57 Filename Length       002E (46)\n+10BA59 Extra Length          0000 (0)\n+10BA5B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEC7A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10BA5B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EC7DC PAYLOAD\n+10BA89 PAYLOAD\n \n-0ECB2E DATA DESCRIPTOR       08074B50 (134695760)\n-0ECB32 CRC                   A7E27376 (2816635766)\n-0ECB36 Compressed Size       00000352 (850)\n-0ECB3A Uncompressed Size     0000076D (1901)\n+10C588 DATA DESCRIPTOR       08074B50 (134695760)\n+10C58C CRC                   8B21CC44 (2334248004)\n+10C590 Compressed Size       00000AFF (2815)\n+10C594 Uncompressed Size     0000343B (13371)\n \n-0ECB3E LOCAL HEADER #931     04034B50 (67324752)\n-0ECB42 Extract Zip Spec      14 (20) '2.0'\n-0ECB43 Extract OS            00 (0) 'MS-DOS'\n-0ECB44 General Purpose Flag  0808 (2056)\n+10C598 LOCAL HEADER #931     04034B50 (67324752)\n+10C59C Extract Zip Spec      14 (20) '2.0'\n+10C59D Extract OS            00 (0) 'MS-DOS'\n+10C59E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0ECB46 Compression Method    0008 (8) 'Deflated'\n-0ECB48 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0ECB4C CRC                   00000000 (0)\n-0ECB50 Compressed Size       00000000 (0)\n-0ECB54 Uncompressed Size     00000000 (0)\n-0ECB58 Filename Length       0047 (71)\n-0ECB5A Extra Length          0000 (0)\n-0ECB5C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10C5A0 Compression Method    0008 (8) 'Deflated'\n+10C5A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10C5A6 CRC                   00000000 (0)\n+10C5AA Compressed Size       00000000 (0)\n+10C5AE Uncompressed Size     00000000 (0)\n+10C5B2 Filename Length       0032 (50)\n+10C5B4 Extra Length          0000 (0)\n+10C5B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xECB5C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10C5B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0ECBA3 PAYLOAD\n+10C5E8 PAYLOAD\n \n-0ECECF DATA DESCRIPTOR       08074B50 (134695760)\n-0ECED3 CRC                   28520740 (676464448)\n-0ECED7 Compressed Size       0000032C (812)\n-0ECEDB Uncompressed Size     00000910 (2320)\n+10D073 DATA DESCRIPTOR       08074B50 (134695760)\n+10D077 CRC                   BDC74FB9 (3183955897)\n+10D07B Compressed Size       00000A8B (2699)\n+10D07F Uncompressed Size     00002C1E (11294)\n \n-0ECEDF LOCAL HEADER #932     04034B50 (67324752)\n-0ECEE3 Extract Zip Spec      14 (20) '2.0'\n-0ECEE4 Extract OS            00 (0) 'MS-DOS'\n-0ECEE5 General Purpose Flag  0808 (2056)\n+10D083 LOCAL HEADER #932     04034B50 (67324752)\n+10D087 Extract Zip Spec      14 (20) '2.0'\n+10D088 Extract OS            00 (0) 'MS-DOS'\n+10D089 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0ECEE7 Compression Method    0008 (8) 'Deflated'\n-0ECEE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0ECEED CRC                   00000000 (0)\n-0ECEF1 Compressed Size       00000000 (0)\n-0ECEF5 Uncompressed Size     00000000 (0)\n-0ECEF9 Filename Length       0037 (55)\n-0ECEFB Extra Length          0000 (0)\n-0ECEFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10D08B Compression Method    0008 (8) 'Deflated'\n+10D08D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10D091 CRC                   00000000 (0)\n+10D095 Compressed Size       00000000 (0)\n+10D099 Uncompressed Size     00000000 (0)\n+10D09D Filename Length       002E (46)\n+10D09F Extra Length          0000 (0)\n+10D0A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xECEFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10D0A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0ECF34 PAYLOAD\n+10D0CF PAYLOAD\n \n-0ED8C5 DATA DESCRIPTOR       08074B50 (134695760)\n-0ED8C9 CRC                   C60919F1 (3322485233)\n-0ED8CD Compressed Size       00000991 (2449)\n-0ED8D1 Uncompressed Size     00002E58 (11864)\n+10D534 DATA DESCRIPTOR       08074B50 (134695760)\n+10D538 CRC                   4BE7E92F (1273489711)\n+10D53C Compressed Size       00000465 (1125)\n+10D540 Uncompressed Size     00000B3B (2875)\n \n-0ED8D5 LOCAL HEADER #933     04034B50 (67324752)\n-0ED8D9 Extract Zip Spec      14 (20) '2.0'\n-0ED8DA Extract OS            00 (0) 'MS-DOS'\n-0ED8DB General Purpose Flag  0808 (2056)\n+10D544 LOCAL HEADER #933     04034B50 (67324752)\n+10D548 Extract Zip Spec      14 (20) '2.0'\n+10D549 Extract OS            00 (0) 'MS-DOS'\n+10D54A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0ED8DD Compression Method    0008 (8) 'Deflated'\n-0ED8DF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0ED8E3 CRC                   00000000 (0)\n-0ED8E7 Compressed Size       00000000 (0)\n-0ED8EB Uncompressed Size     00000000 (0)\n-0ED8EF Filename Length       0036 (54)\n-0ED8F1 Extra Length          0000 (0)\n-0ED8F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10D54C Compression Method    0008 (8) 'Deflated'\n+10D54E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10D552 CRC                   00000000 (0)\n+10D556 Compressed Size       00000000 (0)\n+10D55A Uncompressed Size     00000000 (0)\n+10D55E Filename Length       002C (44)\n+10D560 Extra Length          0000 (0)\n+10D562 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xED8F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10D562: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0ED929 PAYLOAD\n+10D58E PAYLOAD\n \n-0EDE4E DATA DESCRIPTOR       08074B50 (134695760)\n-0EDE52 CRC                   C68A09E8 (3330935272)\n-0EDE56 Compressed Size       00000525 (1317)\n-0EDE5A Uncompressed Size     00000F96 (3990)\n+10D9DA DATA DESCRIPTOR       08074B50 (134695760)\n+10D9DE CRC                   EE9BE4CE (4003194062)\n+10D9E2 Compressed Size       0000044C (1100)\n+10D9E6 Uncompressed Size     00000A15 (2581)\n \n-0EDE5E LOCAL HEADER #934     04034B50 (67324752)\n-0EDE62 Extract Zip Spec      14 (20) '2.0'\n-0EDE63 Extract OS            00 (0) 'MS-DOS'\n-0EDE64 General Purpose Flag  0808 (2056)\n+10D9EA LOCAL HEADER #934     04034B50 (67324752)\n+10D9EE Extract Zip Spec      14 (20) '2.0'\n+10D9EF Extract OS            00 (0) 'MS-DOS'\n+10D9F0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EDE66 Compression Method    0008 (8) 'Deflated'\n-0EDE68 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EDE6C CRC                   00000000 (0)\n-0EDE70 Compressed Size       00000000 (0)\n-0EDE74 Uncompressed Size     00000000 (0)\n-0EDE78 Filename Length       0039 (57)\n-0EDE7A Extra Length          0000 (0)\n-0EDE7C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10D9F2 Compression Method    0008 (8) 'Deflated'\n+10D9F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10D9F8 CRC                   00000000 (0)\n+10D9FC Compressed Size       00000000 (0)\n+10DA00 Uncompressed Size     00000000 (0)\n+10DA04 Filename Length       002F (47)\n+10DA06 Extra Length          0000 (0)\n+10DA08 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEDE7C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10DA08: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EDEB5 PAYLOAD\n+10DA37 PAYLOAD\n \n-0EE3B5 DATA DESCRIPTOR       08074B50 (134695760)\n-0EE3B9 CRC                   AE59B827 (2925115431)\n-0EE3BD Compressed Size       00000500 (1280)\n-0EE3C1 Uncompressed Size     00001018 (4120)\n+10DE7F DATA DESCRIPTOR       08074B50 (134695760)\n+10DE83 CRC                   930DE3AE (2467161006)\n+10DE87 Compressed Size       00000448 (1096)\n+10DE8B Uncompressed Size     00000A3C (2620)\n \n-0EE3C5 LOCAL HEADER #935     04034B50 (67324752)\n-0EE3C9 Extract Zip Spec      14 (20) '2.0'\n-0EE3CA Extract OS            00 (0) 'MS-DOS'\n-0EE3CB General Purpose Flag  0808 (2056)\n+10DE8F LOCAL HEADER #935     04034B50 (67324752)\n+10DE93 Extract Zip Spec      14 (20) '2.0'\n+10DE94 Extract OS            00 (0) 'MS-DOS'\n+10DE95 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EE3CD Compression Method    0008 (8) 'Deflated'\n-0EE3CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EE3D3 CRC                   00000000 (0)\n-0EE3D7 Compressed Size       00000000 (0)\n-0EE3DB Uncompressed Size     00000000 (0)\n-0EE3DF Filename Length       0035 (53)\n-0EE3E1 Extra Length          0000 (0)\n-0EE3E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10DE97 Compression Method    0008 (8) 'Deflated'\n+10DE99 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10DE9D CRC                   00000000 (0)\n+10DEA1 Compressed Size       00000000 (0)\n+10DEA5 Uncompressed Size     00000000 (0)\n+10DEA9 Filename Length       0020 (32)\n+10DEAB Extra Length          0000 (0)\n+10DEAD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEE3E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10DEAD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EE418 PAYLOAD\n+10DECD PAYLOAD               XX\n \n-0EE8E3 DATA DESCRIPTOR       08074B50 (134695760)\n-0EE8E7 CRC                   C397571B (3281475355)\n-0EE8EB Compressed Size       000004CB (1227)\n-0EE8EF Uncompressed Size     00001058 (4184)\n+10DECF DATA DESCRIPTOR       08074B50 (134695760)\n+10DED3 CRC                   00000000 (0)\n+10DED7 Compressed Size       00000002 (2)\n+10DEDB Uncompressed Size     00000000 (0)\n \n-0EE8F3 LOCAL HEADER #936     04034B50 (67324752)\n-0EE8F7 Extract Zip Spec      14 (20) '2.0'\n-0EE8F8 Extract OS            00 (0) 'MS-DOS'\n-0EE8F9 General Purpose Flag  0808 (2056)\n+10DEDF LOCAL HEADER #936     04034B50 (67324752)\n+10DEE3 Extract Zip Spec      14 (20) '2.0'\n+10DEE4 Extract OS            00 (0) 'MS-DOS'\n+10DEE5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EE8FB Compression Method    0008 (8) 'Deflated'\n-0EE8FD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EE901 CRC                   00000000 (0)\n-0EE905 Compressed Size       00000000 (0)\n-0EE909 Uncompressed Size     00000000 (0)\n-0EE90D Filename Length       0037 (55)\n-0EE90F Extra Length          0000 (0)\n-0EE911 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10DEE7 Compression Method    0008 (8) 'Deflated'\n+10DEE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10DEED CRC                   00000000 (0)\n+10DEF1 Compressed Size       00000000 (0)\n+10DEF5 Uncompressed Size     00000000 (0)\n+10DEF9 Filename Length       0036 (54)\n+10DEFB Extra Length          0000 (0)\n+10DEFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEE911: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10DEFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EE948 PAYLOAD\n+10DF33 PAYLOAD\n \n-0EF138 DATA DESCRIPTOR       08074B50 (134695760)\n-0EF13C CRC                   F1D2C098 (4057120920)\n-0EF140 Compressed Size       000007F0 (2032)\n-0EF144 Uncompressed Size     00001C03 (7171)\n+10E347 DATA DESCRIPTOR       08074B50 (134695760)\n+10E34B CRC                   184AAEF9 (407547641)\n+10E34F Compressed Size       00000414 (1044)\n+10E353 Uncompressed Size     00000ADF (2783)\n \n-0EF148 LOCAL HEADER #937     04034B50 (67324752)\n-0EF14C Extract Zip Spec      14 (20) '2.0'\n-0EF14D Extract OS            00 (0) 'MS-DOS'\n-0EF14E General Purpose Flag  0808 (2056)\n+10E357 LOCAL HEADER #937     04034B50 (67324752)\n+10E35B Extract Zip Spec      14 (20) '2.0'\n+10E35C Extract OS            00 (0) 'MS-DOS'\n+10E35D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EF150 Compression Method    0008 (8) 'Deflated'\n-0EF152 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EF156 CRC                   00000000 (0)\n-0EF15A Compressed Size       00000000 (0)\n-0EF15E Uncompressed Size     00000000 (0)\n-0EF162 Filename Length       0038 (56)\n-0EF164 Extra Length          0000 (0)\n-0EF166 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10E35F Compression Method    0008 (8) 'Deflated'\n+10E361 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10E365 CRC                   00000000 (0)\n+10E369 Compressed Size       00000000 (0)\n+10E36D Uncompressed Size     00000000 (0)\n+10E371 Filename Length       002D (45)\n+10E373 Extra Length          0000 (0)\n+10E375 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEF166: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10E375: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EF19E PAYLOAD\n+10E3A2 PAYLOAD\n \n-0EF550 DATA DESCRIPTOR       08074B50 (134695760)\n-0EF554 CRC                   8ED687AA (2396424106)\n-0EF558 Compressed Size       000003B2 (946)\n-0EF55C Uncompressed Size     00000C9B (3227)\n+10E7BF DATA DESCRIPTOR       08074B50 (134695760)\n+10E7C3 CRC                   3867D7AC (946329516)\n+10E7C7 Compressed Size       0000041D (1053)\n+10E7CB Uncompressed Size     00000A70 (2672)\n \n-0EF560 LOCAL HEADER #938     04034B50 (67324752)\n-0EF564 Extract Zip Spec      14 (20) '2.0'\n-0EF565 Extract OS            00 (0) 'MS-DOS'\n-0EF566 General Purpose Flag  0808 (2056)\n+10E7CF LOCAL HEADER #938     04034B50 (67324752)\n+10E7D3 Extract Zip Spec      14 (20) '2.0'\n+10E7D4 Extract OS            00 (0) 'MS-DOS'\n+10E7D5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EF568 Compression Method    0008 (8) 'Deflated'\n-0EF56A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EF56E CRC                   00000000 (0)\n-0EF572 Compressed Size       00000000 (0)\n-0EF576 Uncompressed Size     00000000 (0)\n-0EF57A Filename Length       003E (62)\n-0EF57C Extra Length          0000 (0)\n-0EF57E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10E7D7 Compression Method    0008 (8) 'Deflated'\n+10E7D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10E7DD CRC                   00000000 (0)\n+10E7E1 Compressed Size       00000000 (0)\n+10E7E5 Uncompressed Size     00000000 (0)\n+10E7E9 Filename Length       002F (47)\n+10E7EB Extra Length          0000 (0)\n+10E7ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEF57E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10E7ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EF5BC PAYLOAD\n+10E81C PAYLOAD\n \n-0EF846 DATA DESCRIPTOR       08074B50 (134695760)\n-0EF84A CRC                   3E4334ED (1044591853)\n-0EF84E Compressed Size       0000028A (650)\n-0EF852 Uncompressed Size     0000066A (1642)\n+10EB47 DATA DESCRIPTOR       08074B50 (134695760)\n+10EB4B CRC                   00E586BE (15042238)\n+10EB4F Compressed Size       0000032B (811)\n+10EB53 Uncompressed Size     00000678 (1656)\n \n-0EF856 LOCAL HEADER #939     04034B50 (67324752)\n-0EF85A Extract Zip Spec      14 (20) '2.0'\n-0EF85B Extract OS            00 (0) 'MS-DOS'\n-0EF85C General Purpose Flag  0808 (2056)\n+10EB57 LOCAL HEADER #939     04034B50 (67324752)\n+10EB5B Extract Zip Spec      14 (20) '2.0'\n+10EB5C Extract OS            00 (0) 'MS-DOS'\n+10EB5D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EF85E Compression Method    0008 (8) 'Deflated'\n-0EF860 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EF864 CRC                   00000000 (0)\n-0EF868 Compressed Size       00000000 (0)\n-0EF86C Uncompressed Size     00000000 (0)\n-0EF870 Filename Length       003F (63)\n-0EF872 Extra Length          0000 (0)\n-0EF874 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10EB5F Compression Method    0008 (8) 'Deflated'\n+10EB61 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10EB65 CRC                   00000000 (0)\n+10EB69 Compressed Size       00000000 (0)\n+10EB6D Uncompressed Size     00000000 (0)\n+10EB71 Filename Length       001E (30)\n+10EB73 Extra Length          0000 (0)\n+10EB75 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEF874: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10EB75: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EF8B3 PAYLOAD\n+10EB93 PAYLOAD               XX\n \n-0EFADA DATA DESCRIPTOR       08074B50 (134695760)\n-0EFADE CRC                   1F076089 (520577161)\n-0EFAE2 Compressed Size       00000227 (551)\n-0EFAE6 Uncompressed Size     000003FD (1021)\n+10EB95 DATA DESCRIPTOR       08074B50 (134695760)\n+10EB99 CRC                   00000000 (0)\n+10EB9D Compressed Size       00000002 (2)\n+10EBA1 Uncompressed Size     00000000 (0)\n \n-0EFAEA LOCAL HEADER #940     04034B50 (67324752)\n-0EFAEE Extract Zip Spec      14 (20) '2.0'\n-0EFAEF Extract OS            00 (0) 'MS-DOS'\n-0EFAF0 General Purpose Flag  0808 (2056)\n+10EBA5 LOCAL HEADER #940     04034B50 (67324752)\n+10EBA9 Extract Zip Spec      14 (20) '2.0'\n+10EBAA Extract OS            00 (0) 'MS-DOS'\n+10EBAB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EFAF2 Compression Method    0008 (8) 'Deflated'\n-0EFAF4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EFAF8 CRC                   00000000 (0)\n-0EFAFC Compressed Size       00000000 (0)\n-0EFB00 Uncompressed Size     00000000 (0)\n-0EFB04 Filename Length       0041 (65)\n-0EFB06 Extra Length          0000 (0)\n-0EFB08 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10EBAD Compression Method    0008 (8) 'Deflated'\n+10EBAF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10EBB3 CRC                   00000000 (0)\n+10EBB7 Compressed Size       00000000 (0)\n+10EBBB Uncompressed Size     00000000 (0)\n+10EBBF Filename Length       003C (60)\n+10EBC1 Extra Length          0000 (0)\n+10EBC3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEFB08: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10EBC3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EFB49 PAYLOAD\n+10EBFF PAYLOAD\n \n-0EFF51 DATA DESCRIPTOR       08074B50 (134695760)\n-0EFF55 CRC                   63B69239 (1672909369)\n-0EFF59 Compressed Size       00000408 (1032)\n-0EFF5D Uncompressed Size     00000F7F (3967)\n+10EF35 DATA DESCRIPTOR       08074B50 (134695760)\n+10EF39 CRC                   E1C5881F (3787819039)\n+10EF3D Compressed Size       00000336 (822)\n+10EF41 Uncompressed Size     000006AD (1709)\n \n-0EFF61 LOCAL HEADER #941     04034B50 (67324752)\n-0EFF65 Extract Zip Spec      14 (20) '2.0'\n-0EFF66 Extract OS            00 (0) 'MS-DOS'\n-0EFF67 General Purpose Flag  0808 (2056)\n+10EF45 LOCAL HEADER #941     04034B50 (67324752)\n+10EF49 Extract Zip Spec      14 (20) '2.0'\n+10EF4A Extract OS            00 (0) 'MS-DOS'\n+10EF4B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0EFF69 Compression Method    0008 (8) 'Deflated'\n-0EFF6B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0EFF6F CRC                   00000000 (0)\n-0EFF73 Compressed Size       00000000 (0)\n-0EFF77 Uncompressed Size     00000000 (0)\n-0EFF7B Filename Length       0037 (55)\n-0EFF7D Extra Length          0000 (0)\n-0EFF7F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10EF4D Compression Method    0008 (8) 'Deflated'\n+10EF4F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10EF53 CRC                   00000000 (0)\n+10EF57 Compressed Size       00000000 (0)\n+10EF5B Uncompressed Size     00000000 (0)\n+10EF5F Filename Length       003A (58)\n+10EF61 Extra Length          0000 (0)\n+10EF63 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xEFF7F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10EF63: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0EFFB6 PAYLOAD\n+10EF9D PAYLOAD\n \n-0F03BB DATA DESCRIPTOR       08074B50 (134695760)\n-0F03BF CRC                   DB6423CF (3680773071)\n-0F03C3 Compressed Size       00000405 (1029)\n-0F03C7 Uncompressed Size     00000DEE (3566)\n+10F1FE DATA DESCRIPTOR       08074B50 (134695760)\n+10F202 CRC                   FE9FE6BA (4271892154)\n+10F206 Compressed Size       00000261 (609)\n+10F20A Uncompressed Size     00000515 (1301)\n \n-0F03CB LOCAL HEADER #942     04034B50 (67324752)\n-0F03CF Extract Zip Spec      14 (20) '2.0'\n-0F03D0 Extract OS            00 (0) 'MS-DOS'\n-0F03D1 General Purpose Flag  0808 (2056)\n+10F20E LOCAL HEADER #942     04034B50 (67324752)\n+10F212 Extract Zip Spec      14 (20) '2.0'\n+10F213 Extract OS            00 (0) 'MS-DOS'\n+10F214 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F03D3 Compression Method    0008 (8) 'Deflated'\n-0F03D5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F03D9 CRC                   00000000 (0)\n-0F03DD Compressed Size       00000000 (0)\n-0F03E1 Uncompressed Size     00000000 (0)\n-0F03E5 Filename Length       0035 (53)\n-0F03E7 Extra Length          0000 (0)\n-0F03E9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10F216 Compression Method    0008 (8) 'Deflated'\n+10F218 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10F21C CRC                   00000000 (0)\n+10F220 Compressed Size       00000000 (0)\n+10F224 Uncompressed Size     00000000 (0)\n+10F228 Filename Length       0039 (57)\n+10F22A Extra Length          0000 (0)\n+10F22C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF03E9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10F22C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F041E PAYLOAD\n+10F265 PAYLOAD\n \n-0F0D3B DATA DESCRIPTOR       08074B50 (134695760)\n-0F0D3F CRC                   B4E5D367 (3034960743)\n-0F0D43 Compressed Size       0000091D (2333)\n-0F0D47 Uncompressed Size     00001DDA (7642)\n+10F4CC DATA DESCRIPTOR       08074B50 (134695760)\n+10F4D0 CRC                   07F77085 (133656709)\n+10F4D4 Compressed Size       00000267 (615)\n+10F4D8 Uncompressed Size     000004F7 (1271)\n \n-0F0D4B LOCAL HEADER #943     04034B50 (67324752)\n-0F0D4F Extract Zip Spec      14 (20) '2.0'\n-0F0D50 Extract OS            00 (0) 'MS-DOS'\n-0F0D51 General Purpose Flag  0808 (2056)\n+10F4DC LOCAL HEADER #943     04034B50 (67324752)\n+10F4E0 Extract Zip Spec      14 (20) '2.0'\n+10F4E1 Extract OS            00 (0) 'MS-DOS'\n+10F4E2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F0D53 Compression Method    0008 (8) 'Deflated'\n-0F0D55 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F0D59 CRC                   00000000 (0)\n-0F0D5D Compressed Size       00000000 (0)\n-0F0D61 Uncompressed Size     00000000 (0)\n-0F0D65 Filename Length       0036 (54)\n-0F0D67 Extra Length          0000 (0)\n-0F0D69 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10F4E4 Compression Method    0008 (8) 'Deflated'\n+10F4E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10F4EA CRC                   00000000 (0)\n+10F4EE Compressed Size       00000000 (0)\n+10F4F2 Uncompressed Size     00000000 (0)\n+10F4F6 Filename Length       003A (58)\n+10F4F8 Extra Length          0000 (0)\n+10F4FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF0D69: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10F4FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F0D9F PAYLOAD\n+10F534 PAYLOAD\n \n-0F1159 DATA DESCRIPTOR       08074B50 (134695760)\n-0F115D CRC                   602945D5 (1613317589)\n-0F1161 Compressed Size       000003BA (954)\n-0F1165 Uncompressed Size     000009C9 (2505)\n+10F91F DATA DESCRIPTOR       08074B50 (134695760)\n+10F923 CRC                   334FA791 (860858257)\n+10F927 Compressed Size       000003EB (1003)\n+10F92B Uncompressed Size     00000C9A (3226)\n \n-0F1169 LOCAL HEADER #944     04034B50 (67324752)\n-0F116D Extract Zip Spec      14 (20) '2.0'\n-0F116E Extract OS            00 (0) 'MS-DOS'\n-0F116F General Purpose Flag  0808 (2056)\n+10F92F LOCAL HEADER #944     04034B50 (67324752)\n+10F933 Extract Zip Spec      14 (20) '2.0'\n+10F934 Extract OS            00 (0) 'MS-DOS'\n+10F935 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F1171 Compression Method    0008 (8) 'Deflated'\n-0F1173 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F1177 CRC                   00000000 (0)\n-0F117B Compressed Size       00000000 (0)\n-0F117F Uncompressed Size     00000000 (0)\n-0F1183 Filename Length       0044 (68)\n-0F1185 Extra Length          0000 (0)\n-0F1187 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10F937 Compression Method    0008 (8) 'Deflated'\n+10F939 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10F93D CRC                   00000000 (0)\n+10F941 Compressed Size       00000000 (0)\n+10F945 Uncompressed Size     00000000 (0)\n+10F949 Filename Length       0039 (57)\n+10F94B Extra Length          0000 (0)\n+10F94D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF1187: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10F94D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F11CB PAYLOAD\n+10F986 PAYLOAD\n \n-0F1443 DATA DESCRIPTOR       08074B50 (134695760)\n-0F1447 CRC                   D9BD9D3A (3653082426)\n-0F144B Compressed Size       00000278 (632)\n-0F144F Uncompressed Size     00000469 (1129)\n+10FDBC DATA DESCRIPTOR       08074B50 (134695760)\n+10FDC0 CRC                   5C26FEE4 (1546059492)\n+10FDC4 Compressed Size       00000436 (1078)\n+10FDC8 Uncompressed Size     00000D57 (3415)\n \n-0F1453 LOCAL HEADER #945     04034B50 (67324752)\n-0F1457 Extract Zip Spec      14 (20) '2.0'\n-0F1458 Extract OS            00 (0) 'MS-DOS'\n-0F1459 General Purpose Flag  0808 (2056)\n+10FDCC LOCAL HEADER #945     04034B50 (67324752)\n+10FDD0 Extract Zip Spec      14 (20) '2.0'\n+10FDD1 Extract OS            00 (0) 'MS-DOS'\n+10FDD2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F145B Compression Method    0008 (8) 'Deflated'\n-0F145D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F1461 CRC                   00000000 (0)\n-0F1465 Compressed Size       00000000 (0)\n-0F1469 Uncompressed Size     00000000 (0)\n-0F146D Filename Length       003C (60)\n-0F146F Extra Length          0000 (0)\n-0F1471 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10FDD4 Compression Method    0008 (8) 'Deflated'\n+10FDD6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10FDDA CRC                   00000000 (0)\n+10FDDE Compressed Size       00000000 (0)\n+10FDE2 Uncompressed Size     00000000 (0)\n+10FDE6 Filename Length       001E (30)\n+10FDE8 Extra Length          0000 (0)\n+10FDEA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF1471: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10FDEA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F14AD PAYLOAD\n+10FE08 PAYLOAD               XX\n \n-0F17AB DATA DESCRIPTOR       08074B50 (134695760)\n-0F17AF CRC                   78792D26 (2021207334)\n-0F17B3 Compressed Size       000002FE (766)\n-0F17B7 Uncompressed Size     000006B5 (1717)\n+10FE0A DATA DESCRIPTOR       08074B50 (134695760)\n+10FE0E CRC                   00000000 (0)\n+10FE12 Compressed Size       00000002 (2)\n+10FE16 Uncompressed Size     00000000 (0)\n \n-0F17BB LOCAL HEADER #946     04034B50 (67324752)\n-0F17BF Extract Zip Spec      14 (20) '2.0'\n-0F17C0 Extract OS            00 (0) 'MS-DOS'\n-0F17C1 General Purpose Flag  0808 (2056)\n+10FE1A LOCAL HEADER #946     04034B50 (67324752)\n+10FE1E Extract Zip Spec      14 (20) '2.0'\n+10FE1F Extract OS            00 (0) 'MS-DOS'\n+10FE20 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F17C3 Compression Method    0008 (8) 'Deflated'\n-0F17C5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F17C9 CRC                   00000000 (0)\n-0F17CD Compressed Size       00000000 (0)\n-0F17D1 Uncompressed Size     00000000 (0)\n-0F17D5 Filename Length       0037 (55)\n-0F17D7 Extra Length          0000 (0)\n-0F17D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+10FE22 Compression Method    0008 (8) 'Deflated'\n+10FE24 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+10FE28 CRC                   00000000 (0)\n+10FE2C Compressed Size       00000000 (0)\n+10FE30 Uncompressed Size     00000000 (0)\n+10FE34 Filename Length       0033 (51)\n+10FE36 Extra Length          0000 (0)\n+10FE38 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF17D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x10FE38: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F1810 PAYLOAD\n+10FE6B PAYLOAD\n \n-0F1BD5 DATA DESCRIPTOR       08074B50 (134695760)\n-0F1BD9 CRC                   A9090E7C (2835943036)\n-0F1BDD Compressed Size       000003C5 (965)\n-0F1BE1 Uncompressed Size     00000C45 (3141)\n+1101EA DATA DESCRIPTOR       08074B50 (134695760)\n+1101EE CRC                   EC8B751D (3968562461)\n+1101F2 Compressed Size       0000037F (895)\n+1101F6 Uncompressed Size     000008F6 (2294)\n \n-0F1BE5 LOCAL HEADER #947     04034B50 (67324752)\n-0F1BE9 Extract Zip Spec      14 (20) '2.0'\n-0F1BEA Extract OS            00 (0) 'MS-DOS'\n-0F1BEB General Purpose Flag  0808 (2056)\n+1101FA LOCAL HEADER #947     04034B50 (67324752)\n+1101FE Extract Zip Spec      14 (20) '2.0'\n+1101FF Extract OS            00 (0) 'MS-DOS'\n+110200 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F1BED Compression Method    0008 (8) 'Deflated'\n-0F1BEF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F1BF3 CRC                   00000000 (0)\n-0F1BF7 Compressed Size       00000000 (0)\n-0F1BFB Uncompressed Size     00000000 (0)\n-0F1BFF Filename Length       002A (42)\n-0F1C01 Extra Length          0000 (0)\n-0F1C03 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+110202 Compression Method    0008 (8) 'Deflated'\n+110204 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+110208 CRC                   00000000 (0)\n+11020C Compressed Size       00000000 (0)\n+110210 Uncompressed Size     00000000 (0)\n+110214 Filename Length       0032 (50)\n+110216 Extra Length          0000 (0)\n+110218 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF1C03: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x110218: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F1C2D PAYLOAD               XX\n+11024A PAYLOAD\n \n-0F1C2F DATA DESCRIPTOR       08074B50 (134695760)\n-0F1C33 CRC                   00000000 (0)\n-0F1C37 Compressed Size       00000002 (2)\n-0F1C3B Uncompressed Size     00000000 (0)\n+110BCA DATA DESCRIPTOR       08074B50 (134695760)\n+110BCE CRC                   62F535FA (1660237306)\n+110BD2 Compressed Size       00000980 (2432)\n+110BD6 Uncompressed Size     00002022 (8226)\n \n-0F1C3F LOCAL HEADER #948     04034B50 (67324752)\n-0F1C43 Extract Zip Spec      14 (20) '2.0'\n-0F1C44 Extract OS            00 (0) 'MS-DOS'\n-0F1C45 General Purpose Flag  0808 (2056)\n+110BDA LOCAL HEADER #948     04034B50 (67324752)\n+110BDE Extract Zip Spec      14 (20) '2.0'\n+110BDF Extract OS            00 (0) 'MS-DOS'\n+110BE0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F1C47 Compression Method    0008 (8) 'Deflated'\n-0F1C49 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F1C4D CRC                   00000000 (0)\n-0F1C51 Compressed Size       00000000 (0)\n-0F1C55 Uncompressed Size     00000000 (0)\n-0F1C59 Filename Length       003B (59)\n-0F1C5B Extra Length          0000 (0)\n-0F1C5D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+110BE2 Compression Method    0008 (8) 'Deflated'\n+110BE4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+110BE8 CRC                   00000000 (0)\n+110BEC Compressed Size       00000000 (0)\n+110BF0 Uncompressed Size     00000000 (0)\n+110BF4 Filename Length       0033 (51)\n+110BF6 Extra Length          0000 (0)\n+110BF8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF1C5D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x110BF8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F1C98 PAYLOAD\n+110C2B PAYLOAD\n \n-0F204B DATA DESCRIPTOR       08074B50 (134695760)\n-0F204F CRC                   101D85B9 (270370233)\n-0F2053 Compressed Size       000003B3 (947)\n-0F2057 Uncompressed Size     0000094B (2379)\n+11119D DATA DESCRIPTOR       08074B50 (134695760)\n+1111A1 CRC                   56578DF7 (1448578551)\n+1111A5 Compressed Size       00000572 (1394)\n+1111A9 Uncompressed Size     00001172 (4466)\n \n-0F205B LOCAL HEADER #949     04034B50 (67324752)\n-0F205F Extract Zip Spec      14 (20) '2.0'\n-0F2060 Extract OS            00 (0) 'MS-DOS'\n-0F2061 General Purpose Flag  0808 (2056)\n+1111AD LOCAL HEADER #949     04034B50 (67324752)\n+1111B1 Extract Zip Spec      14 (20) '2.0'\n+1111B2 Extract OS            00 (0) 'MS-DOS'\n+1111B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F2063 Compression Method    0008 (8) 'Deflated'\n-0F2065 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F2069 CRC                   00000000 (0)\n-0F206D Compressed Size       00000000 (0)\n-0F2071 Uncompressed Size     00000000 (0)\n-0F2075 Filename Length       003D (61)\n-0F2077 Extra Length          0000 (0)\n-0F2079 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1111B5 Compression Method    0008 (8) 'Deflated'\n+1111B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1111BB CRC                   00000000 (0)\n+1111BF Compressed Size       00000000 (0)\n+1111C3 Uncompressed Size     00000000 (0)\n+1111C7 Filename Length       0038 (56)\n+1111C9 Extra Length          0000 (0)\n+1111CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF2079: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1111CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F20B6 PAYLOAD\n+111203 PAYLOAD\n \n-0F2508 DATA DESCRIPTOR       08074B50 (134695760)\n-0F250C CRC                   7EE6D15A (2129056090)\n-0F2510 Compressed Size       00000452 (1106)\n-0F2514 Uncompressed Size     00000D5E (3422)\n+111AD5 DATA DESCRIPTOR       08074B50 (134695760)\n+111AD9 CRC                   1140D3D7 (289461207)\n+111ADD Compressed Size       000008D2 (2258)\n+111AE1 Uncompressed Size     000021E4 (8676)\n \n-0F2518 LOCAL HEADER #950     04034B50 (67324752)\n-0F251C Extract Zip Spec      14 (20) '2.0'\n-0F251D Extract OS            00 (0) 'MS-DOS'\n-0F251E General Purpose Flag  0808 (2056)\n+111AE5 LOCAL HEADER #950     04034B50 (67324752)\n+111AE9 Extract Zip Spec      14 (20) '2.0'\n+111AEA Extract OS            00 (0) 'MS-DOS'\n+111AEB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F2520 Compression Method    0008 (8) 'Deflated'\n-0F2522 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F2526 CRC                   00000000 (0)\n-0F252A Compressed Size       00000000 (0)\n-0F252E Uncompressed Size     00000000 (0)\n-0F2532 Filename Length       002F (47)\n-0F2534 Extra Length          0000 (0)\n-0F2536 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+111AED Compression Method    0008 (8) 'Deflated'\n+111AEF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+111AF3 CRC                   00000000 (0)\n+111AF7 Compressed Size       00000000 (0)\n+111AFB Uncompressed Size     00000000 (0)\n+111AFF Filename Length       0035 (53)\n+111B01 Extra Length          0000 (0)\n+111B03 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF2536: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x111B03: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F2565 PAYLOAD               XX\n+111B38 PAYLOAD\n \n-0F2567 DATA DESCRIPTOR       08074B50 (134695760)\n-0F256B CRC                   00000000 (0)\n-0F256F Compressed Size       00000002 (2)\n-0F2573 Uncompressed Size     00000000 (0)\n+112042 DATA DESCRIPTOR       08074B50 (134695760)\n+112046 CRC                   B6A13567 (3064018279)\n+11204A Compressed Size       0000050A (1290)\n+11204E Uncompressed Size     00000FBC (4028)\n \n-0F2577 LOCAL HEADER #951     04034B50 (67324752)\n-0F257B Extract Zip Spec      14 (20) '2.0'\n-0F257C Extract OS            00 (0) 'MS-DOS'\n-0F257D General Purpose Flag  0808 (2056)\n+112052 LOCAL HEADER #951     04034B50 (67324752)\n+112056 Extract Zip Spec      14 (20) '2.0'\n+112057 Extract OS            00 (0) 'MS-DOS'\n+112058 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F257F Compression Method    0008 (8) 'Deflated'\n-0F2581 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F2585 CRC                   00000000 (0)\n-0F2589 Compressed Size       00000000 (0)\n-0F258D Uncompressed Size     00000000 (0)\n-0F2591 Filename Length       0048 (72)\n-0F2593 Extra Length          0000 (0)\n-0F2595 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+11205A Compression Method    0008 (8) 'Deflated'\n+11205C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+112060 CRC                   00000000 (0)\n+112064 Compressed Size       00000000 (0)\n+112068 Uncompressed Size     00000000 (0)\n+11206C Filename Length       002D (45)\n+11206E Extra Length          0000 (0)\n+112070 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF2595: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x112070: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F25DD PAYLOAD\n+11209D PAYLOAD\n \n-0F2A4E DATA DESCRIPTOR       08074B50 (134695760)\n-0F2A52 CRC                   A053D891 (2689849489)\n-0F2A56 Compressed Size       00000471 (1137)\n-0F2A5A Uncompressed Size     00001205 (4613)\n+1124E1 DATA DESCRIPTOR       08074B50 (134695760)\n+1124E5 CRC                   0A163D1E (169229598)\n+1124E9 Compressed Size       00000444 (1092)\n+1124ED Uncompressed Size     0000101E (4126)\n \n-0F2A5E LOCAL HEADER #952     04034B50 (67324752)\n-0F2A62 Extract Zip Spec      14 (20) '2.0'\n-0F2A63 Extract OS            00 (0) 'MS-DOS'\n-0F2A64 General Purpose Flag  0808 (2056)\n+1124F1 LOCAL HEADER #952     04034B50 (67324752)\n+1124F5 Extract Zip Spec      14 (20) '2.0'\n+1124F6 Extract OS            00 (0) 'MS-DOS'\n+1124F7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F2A66 Compression Method    0008 (8) 'Deflated'\n-0F2A68 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F2A6C CRC                   00000000 (0)\n-0F2A70 Compressed Size       00000000 (0)\n-0F2A74 Uncompressed Size     00000000 (0)\n-0F2A78 Filename Length       0043 (67)\n-0F2A7A Extra Length          0000 (0)\n-0F2A7C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1124F9 Compression Method    0008 (8) 'Deflated'\n+1124FB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1124FF CRC                   00000000 (0)\n+112503 Compressed Size       00000000 (0)\n+112507 Uncompressed Size     00000000 (0)\n+11250B Filename Length       0031 (49)\n+11250D Extra Length          0000 (0)\n+11250F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF2A7C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x11250F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F2ABF PAYLOAD\n+112540 PAYLOAD\n \n-0F2DDD DATA DESCRIPTOR       08074B50 (134695760)\n-0F2DE1 CRC                   F077FE2F (4034395695)\n-0F2DE5 Compressed Size       0000031E (798)\n-0F2DE9 Uncompressed Size     000007C3 (1987)\n+11282A DATA DESCRIPTOR       08074B50 (134695760)\n+11282E CRC                   873A5673 (2268747379)\n+112832 Compressed Size       000002EA (746)\n+112836 Uncompressed Size     0000072D (1837)\n \n-0F2DED LOCAL HEADER #953     04034B50 (67324752)\n-0F2DF1 Extract Zip Spec      14 (20) '2.0'\n-0F2DF2 Extract OS            00 (0) 'MS-DOS'\n-0F2DF3 General Purpose Flag  0808 (2056)\n+11283A LOCAL HEADER #953     04034B50 (67324752)\n+11283E Extract Zip Spec      14 (20) '2.0'\n+11283F Extract OS            00 (0) 'MS-DOS'\n+112840 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F2DF5 Compression Method    0008 (8) 'Deflated'\n-0F2DF7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F2DFB CRC                   00000000 (0)\n-0F2DFF Compressed Size       00000000 (0)\n-0F2E03 Uncompressed Size     00000000 (0)\n-0F2E07 Filename Length       0049 (73)\n-0F2E09 Extra Length          0000 (0)\n-0F2E0B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+112842 Compression Method    0008 (8) 'Deflated'\n+112844 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+112848 CRC                   00000000 (0)\n+11284C Compressed Size       00000000 (0)\n+112850 Uncompressed Size     00000000 (0)\n+112854 Filename Length       0038 (56)\n+112856 Extra Length          0000 (0)\n+112858 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF2E0B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x112858: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F2E54 PAYLOAD\n+112890 PAYLOAD\n \n-0F34E0 DATA DESCRIPTOR       08074B50 (134695760)\n-0F34E4 CRC                   F135EAA5 (4046842533)\n-0F34E8 Compressed Size       0000068C (1676)\n-0F34EC Uncompressed Size     000014BA (5306)\n+112D2E DATA DESCRIPTOR       08074B50 (134695760)\n+112D32 CRC                   B63E72D7 (3057545943)\n+112D36 Compressed Size       0000049E (1182)\n+112D3A Uncompressed Size     00000D50 (3408)\n \n-0F34F0 LOCAL HEADER #954     04034B50 (67324752)\n-0F34F4 Extract Zip Spec      14 (20) '2.0'\n-0F34F5 Extract OS            00 (0) 'MS-DOS'\n-0F34F6 General Purpose Flag  0808 (2056)\n+112D3E LOCAL HEADER #954     04034B50 (67324752)\n+112D42 Extract Zip Spec      14 (20) '2.0'\n+112D43 Extract OS            00 (0) 'MS-DOS'\n+112D44 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F34F8 Compression Method    0008 (8) 'Deflated'\n-0F34FA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F34FE CRC                   00000000 (0)\n-0F3502 Compressed Size       00000000 (0)\n-0F3506 Uncompressed Size     00000000 (0)\n-0F350A Filename Length       0033 (51)\n-0F350C Extra Length          0000 (0)\n-0F350E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+112D46 Compression Method    0008 (8) 'Deflated'\n+112D48 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+112D4C CRC                   00000000 (0)\n+112D50 Compressed Size       00000000 (0)\n+112D54 Uncompressed Size     00000000 (0)\n+112D58 Filename Length       003A (58)\n+112D5A Extra Length          0000 (0)\n+112D5C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF350E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x112D5C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F3541 PAYLOAD               XX\n+112D96 PAYLOAD\n \n-0F3543 DATA DESCRIPTOR       08074B50 (134695760)\n-0F3547 CRC                   00000000 (0)\n-0F354B Compressed Size       00000002 (2)\n-0F354F Uncompressed Size     00000000 (0)\n+1131CA DATA DESCRIPTOR       08074B50 (134695760)\n+1131CE CRC                   C40EC84E (3289303118)\n+1131D2 Compressed Size       00000434 (1076)\n+1131D6 Uncompressed Size     00000D18 (3352)\n \n-0F3553 LOCAL HEADER #955     04034B50 (67324752)\n-0F3557 Extract Zip Spec      14 (20) '2.0'\n-0F3558 Extract OS            00 (0) 'MS-DOS'\n-0F3559 General Purpose Flag  0808 (2056)\n+1131DA LOCAL HEADER #955     04034B50 (67324752)\n+1131DE Extract Zip Spec      14 (20) '2.0'\n+1131DF Extract OS            00 (0) 'MS-DOS'\n+1131E0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F355B Compression Method    0008 (8) 'Deflated'\n-0F355D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F3561 CRC                   00000000 (0)\n-0F3565 Compressed Size       00000000 (0)\n-0F3569 Uncompressed Size     00000000 (0)\n-0F356D Filename Length       0049 (73)\n-0F356F Extra Length          0000 (0)\n-0F3571 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1131E2 Compression Method    0008 (8) 'Deflated'\n+1131E4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1131E8 CRC                   00000000 (0)\n+1131EC Compressed Size       00000000 (0)\n+1131F0 Uncompressed Size     00000000 (0)\n+1131F4 Filename Length       0024 (36)\n+1131F6 Extra Length          0000 (0)\n+1131F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF3571: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1131F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F35BA PAYLOAD\n+11321C PAYLOAD               XX\n \n-0F39C0 DATA DESCRIPTOR       08074B50 (134695760)\n-0F39C4 CRC                   32EFA1AA (854565290)\n-0F39C8 Compressed Size       00000406 (1030)\n-0F39CC Uncompressed Size     00000E18 (3608)\n+11321E DATA DESCRIPTOR       08074B50 (134695760)\n+113222 CRC                   00000000 (0)\n+113226 Compressed Size       00000002 (2)\n+11322A Uncompressed Size     00000000 (0)\n \n-0F39D0 LOCAL HEADER #956     04034B50 (67324752)\n-0F39D4 Extract Zip Spec      14 (20) '2.0'\n-0F39D5 Extract OS            00 (0) 'MS-DOS'\n-0F39D6 General Purpose Flag  0808 (2056)\n+11322E LOCAL HEADER #956     04034B50 (67324752)\n+113232 Extract Zip Spec      14 (20) '2.0'\n+113233 Extract OS            00 (0) 'MS-DOS'\n+113234 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F39D8 Compression Method    0008 (8) 'Deflated'\n-0F39DA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F39DE CRC                   00000000 (0)\n-0F39E2 Compressed Size       00000000 (0)\n-0F39E6 Uncompressed Size     00000000 (0)\n-0F39EA Filename Length       0045 (69)\n-0F39EC Extra Length          0000 (0)\n-0F39EE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+113236 Compression Method    0008 (8) 'Deflated'\n+113238 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+11323C CRC                   00000000 (0)\n+113240 Compressed Size       00000000 (0)\n+113244 Uncompressed Size     00000000 (0)\n+113248 Filename Length       0036 (54)\n+11324A Extra Length          0000 (0)\n+11324C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF39EE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x11324C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F3A33 PAYLOAD\n+113282 PAYLOAD\n \n-0F3CCD DATA DESCRIPTOR       08074B50 (134695760)\n-0F3CD1 CRC                   40313D69 (1076968809)\n-0F3CD5 Compressed Size       0000029A (666)\n-0F3CD9 Uncompressed Size     00000521 (1313)\n+113755 DATA DESCRIPTOR       08074B50 (134695760)\n+113759 CRC                   3F21380C (1059141644)\n+11375D Compressed Size       000004D3 (1235)\n+113761 Uncompressed Size     00000E11 (3601)\n \n-0F3CDD LOCAL HEADER #957     04034B50 (67324752)\n-0F3CE1 Extract Zip Spec      14 (20) '2.0'\n-0F3CE2 Extract OS            00 (0) 'MS-DOS'\n-0F3CE3 General Purpose Flag  0808 (2056)\n+113765 LOCAL HEADER #957     04034B50 (67324752)\n+113769 Extract Zip Spec      14 (20) '2.0'\n+11376A Extract OS            00 (0) 'MS-DOS'\n+11376B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F3CE5 Compression Method    0008 (8) 'Deflated'\n-0F3CE7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F3CEB CRC                   00000000 (0)\n-0F3CEF Compressed Size       00000000 (0)\n-0F3CF3 Uncompressed Size     00000000 (0)\n-0F3CF7 Filename Length       003A (58)\n-0F3CF9 Extra Length          0000 (0)\n-0F3CFB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+11376D Compression Method    0008 (8) 'Deflated'\n+11376F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+113773 CRC                   00000000 (0)\n+113777 Compressed Size       00000000 (0)\n+11377B Uncompressed Size     00000000 (0)\n+11377F Filename Length       0035 (53)\n+113781 Extra Length          0000 (0)\n+113783 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF3CFB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x113783: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F3D35 PAYLOAD               XX\n+1137B8 PAYLOAD\n \n-0F3D37 DATA DESCRIPTOR       08074B50 (134695760)\n-0F3D3B CRC                   00000000 (0)\n-0F3D3F Compressed Size       00000002 (2)\n-0F3D43 Uncompressed Size     00000000 (0)\n+1139F7 DATA DESCRIPTOR       08074B50 (134695760)\n+1139FB CRC                   49F89DC8 (1241030088)\n+1139FF Compressed Size       0000023F (575)\n+113A03 Uncompressed Size     0000041E (1054)\n \n-0F3D47 LOCAL HEADER #958     04034B50 (67324752)\n-0F3D4B Extract Zip Spec      14 (20) '2.0'\n-0F3D4C Extract OS            00 (0) 'MS-DOS'\n-0F3D4D General Purpose Flag  0808 (2056)\n+113A07 LOCAL HEADER #958     04034B50 (67324752)\n+113A0B Extract Zip Spec      14 (20) '2.0'\n+113A0C Extract OS            00 (0) 'MS-DOS'\n+113A0D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F3D4F Compression Method    0008 (8) 'Deflated'\n-0F3D51 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F3D55 CRC                   00000000 (0)\n-0F3D59 Compressed Size       00000000 (0)\n-0F3D5D Uncompressed Size     00000000 (0)\n-0F3D61 Filename Length       005E (94)\n-0F3D63 Extra Length          0000 (0)\n-0F3D65 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+113A0F Compression Method    0008 (8) 'Deflated'\n+113A11 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+113A15 CRC                   00000000 (0)\n+113A19 Compressed Size       00000000 (0)\n+113A1D Uncompressed Size     00000000 (0)\n+113A21 Filename Length       001B (27)\n+113A23 Extra Length          0000 (0)\n+113A25 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF3D65: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x113A25: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F3DC3 PAYLOAD\n+113A40 PAYLOAD               XX\n \n-0F43C8 DATA DESCRIPTOR       08074B50 (134695760)\n-0F43CC CRC                   956AD47E (2506806398)\n-0F43D0 Compressed Size       00000605 (1541)\n-0F43D4 Uncompressed Size     000014D1 (5329)\n+113A42 DATA DESCRIPTOR       08074B50 (134695760)\n+113A46 CRC                   00000000 (0)\n+113A4A Compressed Size       00000002 (2)\n+113A4E Uncompressed Size     00000000 (0)\n \n-0F43D8 LOCAL HEADER #959     04034B50 (67324752)\n-0F43DC Extract Zip Spec      14 (20) '2.0'\n-0F43DD Extract OS            00 (0) 'MS-DOS'\n-0F43DE General Purpose Flag  0808 (2056)\n+113A52 LOCAL HEADER #959     04034B50 (67324752)\n+113A56 Extract Zip Spec      14 (20) '2.0'\n+113A57 Extract OS            00 (0) 'MS-DOS'\n+113A58 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F43E0 Compression Method    0008 (8) 'Deflated'\n-0F43E2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F43E6 CRC                   00000000 (0)\n-0F43EA Compressed Size       00000000 (0)\n-0F43EE Uncompressed Size     00000000 (0)\n-0F43F2 Filename Length       005A (90)\n-0F43F4 Extra Length          0000 (0)\n-0F43F6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+113A5A Compression Method    0008 (8) 'Deflated'\n+113A5C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+113A60 CRC                   00000000 (0)\n+113A64 Compressed Size       00000000 (0)\n+113A68 Uncompressed Size     00000000 (0)\n+113A6C Filename Length       0034 (52)\n+113A6E Extra Length          0000 (0)\n+113A70 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF43F6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x113A70: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F4450 PAYLOAD\n+113AA4 PAYLOAD\n \n-0F46EF DATA DESCRIPTOR       08074B50 (134695760)\n-0F46F3 CRC                   5474BB92 (1416936338)\n-0F46F7 Compressed Size       0000029F (671)\n-0F46FB Uncompressed Size     00000551 (1361)\n+113F5A DATA DESCRIPTOR       08074B50 (134695760)\n+113F5E CRC                   E40DEA4B (3826117195)\n+113F62 Compressed Size       000004B6 (1206)\n+113F66 Uncompressed Size     00000CAE (3246)\n \n-0F46FF LOCAL HEADER #960     04034B50 (67324752)\n-0F4703 Extract Zip Spec      14 (20) '2.0'\n-0F4704 Extract OS            00 (0) 'MS-DOS'\n-0F4705 General Purpose Flag  0808 (2056)\n+113F6A LOCAL HEADER #960     04034B50 (67324752)\n+113F6E Extract Zip Spec      14 (20) '2.0'\n+113F6F Extract OS            00 (0) 'MS-DOS'\n+113F70 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F4707 Compression Method    0008 (8) 'Deflated'\n-0F4709 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F470D CRC                   00000000 (0)\n-0F4711 Compressed Size       00000000 (0)\n-0F4715 Uncompressed Size     00000000 (0)\n-0F4719 Filename Length       0036 (54)\n-0F471B Extra Length          0000 (0)\n-0F471D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+113F72 Compression Method    0008 (8) 'Deflated'\n+113F74 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+113F78 CRC                   00000000 (0)\n+113F7C Compressed Size       00000000 (0)\n+113F80 Uncompressed Size     00000000 (0)\n+113F84 Filename Length       0034 (52)\n+113F86 Extra Length          0000 (0)\n+113F88 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF471D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x113F88: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F4753 PAYLOAD               XX\n+113FBC PAYLOAD\n \n-0F4755 DATA DESCRIPTOR       08074B50 (134695760)\n-0F4759 CRC                   00000000 (0)\n-0F475D Compressed Size       00000002 (2)\n-0F4761 Uncompressed Size     00000000 (0)\n+11462A DATA DESCRIPTOR       08074B50 (134695760)\n+11462E CRC                   09E32673 (165881459)\n+114632 Compressed Size       0000066E (1646)\n+114636 Uncompressed Size     0000136F (4975)\n \n-0F4765 LOCAL HEADER #961     04034B50 (67324752)\n-0F4769 Extract Zip Spec      14 (20) '2.0'\n-0F476A Extract OS            00 (0) 'MS-DOS'\n-0F476B General Purpose Flag  0808 (2056)\n+11463A LOCAL HEADER #961     04034B50 (67324752)\n+11463E Extract Zip Spec      14 (20) '2.0'\n+11463F Extract OS            00 (0) 'MS-DOS'\n+114640 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F476D Compression Method    0008 (8) 'Deflated'\n-0F476F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F4773 CRC                   00000000 (0)\n-0F4777 Compressed Size       00000000 (0)\n-0F477B Uncompressed Size     00000000 (0)\n-0F477F Filename Length       004F (79)\n-0F4781 Extra Length          0000 (0)\n-0F4783 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+114642 Compression Method    0008 (8) 'Deflated'\n+114644 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+114648 CRC                   00000000 (0)\n+11464C Compressed Size       00000000 (0)\n+114650 Uncompressed Size     00000000 (0)\n+114654 Filename Length       0038 (56)\n+114656 Extra Length          0000 (0)\n+114658 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF4783: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x114658: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F47D2 PAYLOAD\n+114690 PAYLOAD\n \n-0F4B55 DATA DESCRIPTOR       08074B50 (134695760)\n-0F4B59 CRC                   F2C441AD (4072948141)\n-0F4B5D Compressed Size       00000383 (899)\n-0F4B61 Uncompressed Size     000008B3 (2227)\n+114BDD DATA DESCRIPTOR       08074B50 (134695760)\n+114BE1 CRC                   BE828C08 (3196226568)\n+114BE5 Compressed Size       0000054D (1357)\n+114BE9 Uncompressed Size     00000F73 (3955)\n \n-0F4B65 LOCAL HEADER #962     04034B50 (67324752)\n-0F4B69 Extract Zip Spec      14 (20) '2.0'\n-0F4B6A Extract OS            00 (0) 'MS-DOS'\n-0F4B6B General Purpose Flag  0808 (2056)\n+114BED LOCAL HEADER #962     04034B50 (67324752)\n+114BF1 Extract Zip Spec      14 (20) '2.0'\n+114BF2 Extract OS            00 (0) 'MS-DOS'\n+114BF3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F4B6D Compression Method    0008 (8) 'Deflated'\n-0F4B6F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F4B73 CRC                   00000000 (0)\n-0F4B77 Compressed Size       00000000 (0)\n-0F4B7B Uncompressed Size     00000000 (0)\n-0F4B7F Filename Length       004B (75)\n-0F4B81 Extra Length          0000 (0)\n-0F4B83 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+114BF5 Compression Method    0008 (8) 'Deflated'\n+114BF7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+114BFB CRC                   00000000 (0)\n+114BFF Compressed Size       00000000 (0)\n+114C03 Uncompressed Size     00000000 (0)\n+114C07 Filename Length       0025 (37)\n+114C09 Extra Length          0000 (0)\n+114C0B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF4B83: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x114C0B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F4BCE PAYLOAD\n+114C30 PAYLOAD               XX\n \n-0F4E53 DATA DESCRIPTOR       08074B50 (134695760)\n-0F4E57 CRC                   E0C2D2A3 (3770864291)\n-0F4E5B Compressed Size       00000285 (645)\n-0F4E5F Uncompressed Size     000004FE (1278)\n+114C32 DATA DESCRIPTOR       08074B50 (134695760)\n+114C36 CRC                   00000000 (0)\n+114C3A Compressed Size       00000002 (2)\n+114C3E Uncompressed Size     00000000 (0)\n \n-0F4E63 LOCAL HEADER #963     04034B50 (67324752)\n-0F4E67 Extract Zip Spec      14 (20) '2.0'\n-0F4E68 Extract OS            00 (0) 'MS-DOS'\n-0F4E69 General Purpose Flag  0808 (2056)\n+114C42 LOCAL HEADER #963     04034B50 (67324752)\n+114C46 Extract Zip Spec      14 (20) '2.0'\n+114C47 Extract OS            00 (0) 'MS-DOS'\n+114C48 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F4E6B Compression Method    0008 (8) 'Deflated'\n-0F4E6D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F4E71 CRC                   00000000 (0)\n-0F4E75 Compressed Size       00000000 (0)\n-0F4E79 Uncompressed Size     00000000 (0)\n-0F4E7D Filename Length       0039 (57)\n-0F4E7F Extra Length          0000 (0)\n-0F4E81 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+114C4A Compression Method    0008 (8) 'Deflated'\n+114C4C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+114C50 CRC                   00000000 (0)\n+114C54 Compressed Size       00000000 (0)\n+114C58 Uncompressed Size     00000000 (0)\n+114C5C Filename Length       003F (63)\n+114C5E Extra Length          0000 (0)\n+114C60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF4E81: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x114C60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F4EBA PAYLOAD               XX\n+114C9F PAYLOAD\n \n-0F4EBC DATA DESCRIPTOR       08074B50 (134695760)\n-0F4EC0 CRC                   00000000 (0)\n-0F4EC4 Compressed Size       00000002 (2)\n-0F4EC8 Uncompressed Size     00000000 (0)\n+115069 DATA DESCRIPTOR       08074B50 (134695760)\n+11506D CRC                   33B08A9A (867207834)\n+115071 Compressed Size       000003CA (970)\n+115075 Uncompressed Size     000008F0 (2288)\n \n-0F4ECC LOCAL HEADER #964     04034B50 (67324752)\n-0F4ED0 Extract Zip Spec      14 (20) '2.0'\n-0F4ED1 Extract OS            00 (0) 'MS-DOS'\n-0F4ED2 General Purpose Flag  0808 (2056)\n+115079 LOCAL HEADER #964     04034B50 (67324752)\n+11507D Extract Zip Spec      14 (20) '2.0'\n+11507E Extract OS            00 (0) 'MS-DOS'\n+11507F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F4ED4 Compression Method    0008 (8) 'Deflated'\n-0F4ED6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F4EDA CRC                   00000000 (0)\n-0F4EDE Compressed Size       00000000 (0)\n-0F4EE2 Uncompressed Size     00000000 (0)\n-0F4EE6 Filename Length       0055 (85)\n-0F4EE8 Extra Length          0000 (0)\n-0F4EEA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+115081 Compression Method    0008 (8) 'Deflated'\n+115083 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+115087 CRC                   00000000 (0)\n+11508B Compressed Size       00000000 (0)\n+11508F Uncompressed Size     00000000 (0)\n+115093 Filename Length       001F (31)\n+115095 Extra Length          0000 (0)\n+115097 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF4EEA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x115097: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F4F3F PAYLOAD\n+1150B6 PAYLOAD               XX\n \n-0F540C DATA DESCRIPTOR       08074B50 (134695760)\n-0F5410 CRC                   9D8FBCBD (2643442877)\n-0F5414 Compressed Size       000004CD (1229)\n-0F5418 Uncompressed Size     00000C4B (3147)\n+1150B8 DATA DESCRIPTOR       08074B50 (134695760)\n+1150BC CRC                   00000000 (0)\n+1150C0 Compressed Size       00000002 (2)\n+1150C4 Uncompressed Size     00000000 (0)\n \n-0F541C LOCAL HEADER #965     04034B50 (67324752)\n-0F5420 Extract Zip Spec      14 (20) '2.0'\n-0F5421 Extract OS            00 (0) 'MS-DOS'\n-0F5422 General Purpose Flag  0808 (2056)\n+1150C8 LOCAL HEADER #965     04034B50 (67324752)\n+1150CC Extract Zip Spec      14 (20) '2.0'\n+1150CD Extract OS            00 (0) 'MS-DOS'\n+1150CE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F5424 Compression Method    0008 (8) 'Deflated'\n-0F5426 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F542A CRC                   00000000 (0)\n-0F542E Compressed Size       00000000 (0)\n-0F5432 Uncompressed Size     00000000 (0)\n-0F5436 Filename Length       0051 (81)\n-0F5438 Extra Length          0000 (0)\n-0F543A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1150D0 Compression Method    0008 (8) 'Deflated'\n+1150D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1150D6 CRC                   00000000 (0)\n+1150DA Compressed Size       00000000 (0)\n+1150DE Uncompressed Size     00000000 (0)\n+1150E2 Filename Length       0033 (51)\n+1150E4 Extra Length          0000 (0)\n+1150E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF543A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1150E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F548B PAYLOAD\n+115119 PAYLOAD\n \n-0F5735 DATA DESCRIPTOR       08074B50 (134695760)\n-0F5739 CRC                   DF933BA4 (3750968228)\n-0F573D Compressed Size       000002AA (682)\n-0F5741 Uncompressed Size     00000555 (1365)\n+1154AA DATA DESCRIPTOR       08074B50 (134695760)\n+1154AE CRC                   776F6B16 (2003790614)\n+1154B2 Compressed Size       00000391 (913)\n+1154B6 Uncompressed Size     0000084C (2124)\n \n-0F5745 LOCAL HEADER #966     04034B50 (67324752)\n-0F5749 Extract Zip Spec      14 (20) '2.0'\n-0F574A Extract OS            00 (0) 'MS-DOS'\n-0F574B General Purpose Flag  0808 (2056)\n+1154BA LOCAL HEADER #966     04034B50 (67324752)\n+1154BE Extract Zip Spec      14 (20) '2.0'\n+1154BF Extract OS            00 (0) 'MS-DOS'\n+1154C0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F574D Compression Method    0008 (8) 'Deflated'\n-0F574F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F5753 CRC                   00000000 (0)\n-0F5757 Compressed Size       00000000 (0)\n-0F575B Uncompressed Size     00000000 (0)\n-0F575F Filename Length       0037 (55)\n-0F5761 Extra Length          0000 (0)\n-0F5763 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1154C2 Compression Method    0008 (8) 'Deflated'\n+1154C4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1154C8 CRC                   00000000 (0)\n+1154CC Compressed Size       00000000 (0)\n+1154D0 Uncompressed Size     00000000 (0)\n+1154D4 Filename Length       0023 (35)\n+1154D6 Extra Length          0000 (0)\n+1154D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF5763: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1154D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F579A PAYLOAD               XX\n+1154FB PAYLOAD               XX\n \n-0F579C DATA DESCRIPTOR       08074B50 (134695760)\n-0F57A0 CRC                   00000000 (0)\n-0F57A4 Compressed Size       00000002 (2)\n-0F57A8 Uncompressed Size     00000000 (0)\n+1154FD DATA DESCRIPTOR       08074B50 (134695760)\n+115501 CRC                   00000000 (0)\n+115505 Compressed Size       00000002 (2)\n+115509 Uncompressed Size     00000000 (0)\n \n-0F57AC LOCAL HEADER #967     04034B50 (67324752)\n-0F57B0 Extract Zip Spec      14 (20) '2.0'\n-0F57B1 Extract OS            00 (0) 'MS-DOS'\n-0F57B2 General Purpose Flag  0808 (2056)\n+11550D LOCAL HEADER #967     04034B50 (67324752)\n+115511 Extract Zip Spec      14 (20) '2.0'\n+115512 Extract OS            00 (0) 'MS-DOS'\n+115513 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F57B4 Compression Method    0008 (8) 'Deflated'\n-0F57B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F57BA CRC                   00000000 (0)\n-0F57BE Compressed Size       00000000 (0)\n-0F57C2 Uncompressed Size     00000000 (0)\n-0F57C6 Filename Length       0055 (85)\n-0F57C8 Extra Length          0000 (0)\n-0F57CA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+115515 Compression Method    0008 (8) 'Deflated'\n+115517 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+11551B CRC                   00000000 (0)\n+11551F Compressed Size       00000000 (0)\n+115523 Uncompressed Size     00000000 (0)\n+115527 Filename Length       003F (63)\n+115529 Extra Length          0000 (0)\n+11552B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF57CA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x11552B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F581F PAYLOAD\n+11556A PAYLOAD\n \n-0F5BBD DATA DESCRIPTOR       08074B50 (134695760)\n-0F5BC1 CRC                   5CADB8BA (1554888890)\n-0F5BC5 Compressed Size       0000039E (926)\n-0F5BC9 Uncompressed Size     00000910 (2320)\n+115C3D DATA DESCRIPTOR       08074B50 (134695760)\n+115C41 CRC                   A1EB5EED (2716557037)\n+115C45 Compressed Size       000006D3 (1747)\n+115C49 Uncompressed Size     000016D2 (5842)\n \n-0F5BCD LOCAL HEADER #968     04034B50 (67324752)\n-0F5BD1 Extract Zip Spec      14 (20) '2.0'\n-0F5BD2 Extract OS            00 (0) 'MS-DOS'\n-0F5BD3 General Purpose Flag  0808 (2056)\n+115C4D LOCAL HEADER #968     04034B50 (67324752)\n+115C51 Extract Zip Spec      14 (20) '2.0'\n+115C52 Extract OS            00 (0) 'MS-DOS'\n+115C53 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F5BD5 Compression Method    0008 (8) 'Deflated'\n-0F5BD7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F5BDB CRC                   00000000 (0)\n-0F5BDF Compressed Size       00000000 (0)\n-0F5BE3 Uncompressed Size     00000000 (0)\n-0F5BE7 Filename Length       0051 (81)\n-0F5BE9 Extra Length          0000 (0)\n-0F5BEB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+115C55 Compression Method    0008 (8) 'Deflated'\n+115C57 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+115C5B CRC                   00000000 (0)\n+115C5F Compressed Size       00000000 (0)\n+115C63 Uncompressed Size     00000000 (0)\n+115C67 Filename Length       002F (47)\n+115C69 Extra Length          0000 (0)\n+115C6B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF5BEB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x115C6B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F5C3C PAYLOAD\n+115C9A PAYLOAD\n \n-0F5EDF DATA DESCRIPTOR       08074B50 (134695760)\n-0F5EE3 CRC                   897FB906 (2306849030)\n-0F5EE7 Compressed Size       000002A3 (675)\n-0F5EEB Uncompressed Size     00000546 (1350)\n+1165E6 DATA DESCRIPTOR       08074B50 (134695760)\n+1165EA CRC                   93BDDA62 (2478692962)\n+1165EE Compressed Size       0000094C (2380)\n+1165F2 Uncompressed Size     00002000 (8192)\n \n-0F5EEF LOCAL HEADER #969     04034B50 (67324752)\n-0F5EF3 Extract Zip Spec      14 (20) '2.0'\n-0F5EF4 Extract OS            00 (0) 'MS-DOS'\n-0F5EF5 General Purpose Flag  0808 (2056)\n+1165F6 LOCAL HEADER #969     04034B50 (67324752)\n+1165FA Extract Zip Spec      14 (20) '2.0'\n+1165FB Extract OS            00 (0) 'MS-DOS'\n+1165FC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F5EF7 Compression Method    0008 (8) 'Deflated'\n-0F5EF9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F5EFD CRC                   00000000 (0)\n-0F5F01 Compressed Size       00000000 (0)\n-0F5F05 Uncompressed Size     00000000 (0)\n-0F5F09 Filename Length       0020 (32)\n-0F5F0B Extra Length          0000 (0)\n-0F5F0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1165FE Compression Method    0008 (8) 'Deflated'\n+116600 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+116604 CRC                   00000000 (0)\n+116608 Compressed Size       00000000 (0)\n+11660C Uncompressed Size     00000000 (0)\n+116610 Filename Length       002D (45)\n+116612 Extra Length          0000 (0)\n+116614 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF5F0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x116614: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F5F2D PAYLOAD               XX\n+116641 PAYLOAD\n \n-0F5F2F DATA DESCRIPTOR       08074B50 (134695760)\n-0F5F33 CRC                   00000000 (0)\n-0F5F37 Compressed Size       00000002 (2)\n-0F5F3B Uncompressed Size     00000000 (0)\n+117143 DATA DESCRIPTOR       08074B50 (134695760)\n+117147 CRC                   E459791A (3831068954)\n+11714B Compressed Size       00000B02 (2818)\n+11714F Uncompressed Size     00002B55 (11093)\n \n-0F5F3F LOCAL HEADER #970     04034B50 (67324752)\n-0F5F43 Extract Zip Spec      14 (20) '2.0'\n-0F5F44 Extract OS            00 (0) 'MS-DOS'\n-0F5F45 General Purpose Flag  0808 (2056)\n+117153 LOCAL HEADER #970     04034B50 (67324752)\n+117157 Extract Zip Spec      14 (20) '2.0'\n+117158 Extract OS            00 (0) 'MS-DOS'\n+117159 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F5F47 Compression Method    0008 (8) 'Deflated'\n-0F5F49 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F5F4D CRC                   00000000 (0)\n-0F5F51 Compressed Size       00000000 (0)\n-0F5F55 Uncompressed Size     00000000 (0)\n-0F5F59 Filename Length       0033 (51)\n-0F5F5B Extra Length          0000 (0)\n-0F5F5D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+11715B Compression Method    0008 (8) 'Deflated'\n+11715D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+117161 CRC                   00000000 (0)\n+117165 Compressed Size       00000000 (0)\n+117169 Uncompressed Size     00000000 (0)\n+11716D Filename Length       002E (46)\n+11716F Extra Length          0000 (0)\n+117171 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF5F5D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x117171: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F5F90 PAYLOAD\n+11719F PAYLOAD\n \n-0F62B6 DATA DESCRIPTOR       08074B50 (134695760)\n-0F62BA CRC                   6365E73A (1667622714)\n-0F62BE Compressed Size       00000326 (806)\n-0F62C2 Uncompressed Size     00000708 (1800)\n+117497 DATA DESCRIPTOR       08074B50 (134695760)\n+11749B CRC                   80C30D3D (2160266557)\n+11749F Compressed Size       000002F8 (760)\n+1174A3 Uncompressed Size     0000065E (1630)\n \n-0F62C6 LOCAL HEADER #971     04034B50 (67324752)\n-0F62CA Extract Zip Spec      14 (20) '2.0'\n-0F62CB Extract OS            00 (0) 'MS-DOS'\n-0F62CC General Purpose Flag  0808 (2056)\n+1174A7 LOCAL HEADER #971     04034B50 (67324752)\n+1174AB Extract Zip Spec      14 (20) '2.0'\n+1174AC Extract OS            00 (0) 'MS-DOS'\n+1174AD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F62CE Compression Method    0008 (8) 'Deflated'\n-0F62D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F62D4 CRC                   00000000 (0)\n-0F62D8 Compressed Size       00000000 (0)\n-0F62DC Uncompressed Size     00000000 (0)\n-0F62E0 Filename Length       002D (45)\n-0F62E2 Extra Length          0000 (0)\n-0F62E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1174AF Compression Method    0008 (8) 'Deflated'\n+1174B1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1174B5 CRC                   00000000 (0)\n+1174B9 Compressed Size       00000000 (0)\n+1174BD Uncompressed Size     00000000 (0)\n+1174C1 Filename Length       002A (42)\n+1174C3 Extra Length          0000 (0)\n+1174C5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF62E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1174C5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F6311 PAYLOAD\n+1174EF PAYLOAD\n \n-0F660F DATA DESCRIPTOR       08074B50 (134695760)\n-0F6613 CRC                   BFAE288D (3215861901)\n-0F6617 Compressed Size       000002FE (766)\n-0F661B Uncompressed Size     0000060E (1550)\n+117E7A DATA DESCRIPTOR       08074B50 (134695760)\n+117E7E CRC                   8E103737 (2383427383)\n+117E82 Compressed Size       0000098B (2443)\n+117E86 Uncompressed Size     00002C47 (11335)\n \n-0F661F LOCAL HEADER #972     04034B50 (67324752)\n-0F6623 Extract Zip Spec      14 (20) '2.0'\n-0F6624 Extract OS            00 (0) 'MS-DOS'\n-0F6625 General Purpose Flag  0808 (2056)\n+117E8A LOCAL HEADER #972     04034B50 (67324752)\n+117E8E Extract Zip Spec      14 (20) '2.0'\n+117E8F Extract OS            00 (0) 'MS-DOS'\n+117E90 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F6627 Compression Method    0008 (8) 'Deflated'\n-0F6629 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F662D CRC                   00000000 (0)\n-0F6631 Compressed Size       00000000 (0)\n-0F6635 Uncompressed Size     00000000 (0)\n-0F6639 Filename Length       002A (42)\n-0F663B Extra Length          0000 (0)\n-0F663D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+117E92 Compression Method    0008 (8) 'Deflated'\n+117E94 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+117E98 CRC                   00000000 (0)\n+117E9C Compressed Size       00000000 (0)\n+117EA0 Uncompressed Size     00000000 (0)\n+117EA4 Filename Length       002E (46)\n+117EA6 Extra Length          0000 (0)\n+117EA8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF663D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x117EA8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F6667 PAYLOAD               XX\n+117ED6 PAYLOAD               XX\n \n-0F6669 DATA DESCRIPTOR       08074B50 (134695760)\n-0F666D CRC                   00000000 (0)\n-0F6671 Compressed Size       00000002 (2)\n-0F6675 Uncompressed Size     00000000 (0)\n+117ED8 DATA DESCRIPTOR       08074B50 (134695760)\n+117EDC CRC                   00000000 (0)\n+117EE0 Compressed Size       00000002 (2)\n+117EE4 Uncompressed Size     00000000 (0)\n \n-0F6679 LOCAL HEADER #973     04034B50 (67324752)\n-0F667D Extract Zip Spec      14 (20) '2.0'\n-0F667E Extract OS            00 (0) 'MS-DOS'\n-0F667F General Purpose Flag  0808 (2056)\n+117EE8 LOCAL HEADER #973     04034B50 (67324752)\n+117EEC Extract Zip Spec      14 (20) '2.0'\n+117EED Extract OS            00 (0) 'MS-DOS'\n+117EEE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F6681 Compression Method    0008 (8) 'Deflated'\n-0F6683 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F6687 CRC                   00000000 (0)\n-0F668B Compressed Size       00000000 (0)\n-0F668F Uncompressed Size     00000000 (0)\n-0F6693 Filename Length       0047 (71)\n-0F6695 Extra Length          0000 (0)\n-0F6697 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+117EF0 Compression Method    0008 (8) 'Deflated'\n+117EF2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+117EF6 CRC                   00000000 (0)\n+117EFA Compressed Size       00000000 (0)\n+117EFE Uncompressed Size     00000000 (0)\n+117F02 Filename Length       0035 (53)\n+117F04 Extra Length          0000 (0)\n+117F06 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF6697: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x117F06: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F66DE PAYLOAD\n+117F3B PAYLOAD\n \n-0F6D5C DATA DESCRIPTOR       08074B50 (134695760)\n-0F6D60 CRC                   9FEC08A1 (2683046049)\n-0F6D64 Compressed Size       0000067E (1662)\n-0F6D68 Uncompressed Size     0000287C (10364)\n+1182CE DATA DESCRIPTOR       08074B50 (134695760)\n+1182D2 CRC                   A1CBD481 (2714489985)\n+1182D6 Compressed Size       00000393 (915)\n+1182DA Uncompressed Size     00000971 (2417)\n \n-0F6D6C LOCAL HEADER #974     04034B50 (67324752)\n-0F6D70 Extract Zip Spec      14 (20) '2.0'\n-0F6D71 Extract OS            00 (0) 'MS-DOS'\n-0F6D72 General Purpose Flag  0808 (2056)\n+1182DE LOCAL HEADER #974     04034B50 (67324752)\n+1182E2 Extract Zip Spec      14 (20) '2.0'\n+1182E3 Extract OS            00 (0) 'MS-DOS'\n+1182E4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F6D74 Compression Method    0008 (8) 'Deflated'\n-0F6D76 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F6D7A CRC                   00000000 (0)\n-0F6D7E Compressed Size       00000000 (0)\n-0F6D82 Uncompressed Size     00000000 (0)\n-0F6D86 Filename Length       004E (78)\n-0F6D88 Extra Length          0000 (0)\n-0F6D8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1182E6 Compression Method    0008 (8) 'Deflated'\n+1182E8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1182EC CRC                   00000000 (0)\n+1182F0 Compressed Size       00000000 (0)\n+1182F4 Uncompressed Size     00000000 (0)\n+1182F8 Filename Length       003C (60)\n+1182FA Extra Length          0000 (0)\n+1182FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF6D8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1182FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F6DD8 PAYLOAD\n+118338 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-0F70F2 DATA DESCRIPTOR       08074B50 (134695760)\n-0F70F6 CRC                   399B609C (966484124)\n-0F70FA Compressed Size       0000031A (794)\n-0F70FE Uncompressed Size     000007FB (2043)\n+11837A DATA DESCRIPTOR       08074B50 (134695760)\n+11837E CRC                   5F285EB1 (1596481201)\n+118382 Compressed Size       00000042 (66)\n+118386 Uncompressed Size     00000044 (68)\n \n-0F7102 LOCAL HEADER #975     04034B50 (67324752)\n-0F7106 Extract Zip Spec      14 (20) '2.0'\n-0F7107 Extract OS            00 (0) 'MS-DOS'\n-0F7108 General Purpose Flag  0808 (2056)\n+11838A LOCAL HEADER #975     04034B50 (67324752)\n+11838E Extract Zip Spec      14 (20) '2.0'\n+11838F Extract OS            00 (0) 'MS-DOS'\n+118390 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F710A Compression Method    0008 (8) 'Deflated'\n-0F710C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F7110 CRC                   00000000 (0)\n-0F7114 Compressed Size       00000000 (0)\n-0F7118 Uncompressed Size     00000000 (0)\n-0F711C Filename Length       003B (59)\n-0F711E Extra Length          0000 (0)\n-0F7120 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+118392 Compression Method    0008 (8) 'Deflated'\n+118394 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+118398 CRC                   00000000 (0)\n+11839C Compressed Size       00000000 (0)\n+1183A0 Uncompressed Size     00000000 (0)\n+1183A4 Filename Length       003D (61)\n+1183A6 Extra Length          0000 (0)\n+1183A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF7120: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1183A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F715B PAYLOAD\n+1183E5 PAYLOAD\n \n-0F78D5 DATA DESCRIPTOR       08074B50 (134695760)\n-0F78D9 CRC                   9ADB27A7 (2598053799)\n-0F78DD Compressed Size       0000077A (1914)\n-0F78E1 Uncompressed Size     00001AC6 (6854)\n+1192E5 DATA DESCRIPTOR       08074B50 (134695760)\n+1192E9 CRC                   5F5E6ACD (1600023245)\n+1192ED Compressed Size       00000F00 (3840)\n+1192F1 Uncompressed Size     00003F85 (16261)\n \n-0F78E5 LOCAL HEADER #976     04034B50 (67324752)\n-0F78E9 Extract Zip Spec      14 (20) '2.0'\n-0F78EA Extract OS            00 (0) 'MS-DOS'\n-0F78EB General Purpose Flag  0808 (2056)\n+1192F5 LOCAL HEADER #976     04034B50 (67324752)\n+1192F9 Extract Zip Spec      14 (20) '2.0'\n+1192FA Extract OS            00 (0) 'MS-DOS'\n+1192FB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F78ED Compression Method    0008 (8) 'Deflated'\n-0F78EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F78F3 CRC                   00000000 (0)\n-0F78F7 Compressed Size       00000000 (0)\n-0F78FB Uncompressed Size     00000000 (0)\n-0F78FF Filename Length       003A (58)\n-0F7901 Extra Length          0000 (0)\n-0F7903 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1192FD Compression Method    0008 (8) 'Deflated'\n+1192FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+119303 CRC                   00000000 (0)\n+119307 Compressed Size       00000000 (0)\n+11930B Uncompressed Size     00000000 (0)\n+11930F Filename Length       003E (62)\n+119311 Extra Length          0000 (0)\n+119313 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF7903: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x119313: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F793D PAYLOAD\n+119351 PAYLOAD\n \n-0F816A DATA DESCRIPTOR       08074B50 (134695760)\n-0F816E CRC                   79FA59C0 (2046450112)\n-0F8172 Compressed Size       0000082D (2093)\n-0F8176 Uncompressed Size     00001CDC (7388)\n+119AA6 DATA DESCRIPTOR       08074B50 (134695760)\n+119AAA CRC                   980C94D0 (2550961360)\n+119AAE Compressed Size       00000755 (1877)\n+119AB2 Uncompressed Size     0000199A (6554)\n \n-0F817A LOCAL HEADER #977     04034B50 (67324752)\n-0F817E Extract Zip Spec      14 (20) '2.0'\n-0F817F Extract OS            00 (0) 'MS-DOS'\n-0F8180 General Purpose Flag  0808 (2056)\n+119AB6 LOCAL HEADER #977     04034B50 (67324752)\n+119ABA Extract Zip Spec      14 (20) '2.0'\n+119ABB Extract OS            00 (0) 'MS-DOS'\n+119ABC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F8182 Compression Method    0008 (8) 'Deflated'\n-0F8184 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F8188 CRC                   00000000 (0)\n-0F818C Compressed Size       00000000 (0)\n-0F8190 Uncompressed Size     00000000 (0)\n-0F8194 Filename Length       0040 (64)\n-0F8196 Extra Length          0000 (0)\n-0F8198 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+119ABE Compression Method    0008 (8) 'Deflated'\n+119AC0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+119AC4 CRC                   00000000 (0)\n+119AC8 Compressed Size       00000000 (0)\n+119ACC Uncompressed Size     00000000 (0)\n+119AD0 Filename Length       0032 (50)\n+119AD2 Extra Length          0000 (0)\n+119AD4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF8198: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x119AD4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F81D8 PAYLOAD\n+119B06 PAYLOAD\n \n-0F88B6 DATA DESCRIPTOR       08074B50 (134695760)\n-0F88BA CRC                   0C148F63 (202674019)\n-0F88BE Compressed Size       000006DE (1758)\n-0F88C2 Uncompressed Size     00001A7A (6778)\n+119F03 DATA DESCRIPTOR       08074B50 (134695760)\n+119F07 CRC                   4C7D08FC (1283262716)\n+119F0B Compressed Size       000003FD (1021)\n+119F0F Uncompressed Size     000008FF (2303)\n \n-0F88C6 LOCAL HEADER #978     04034B50 (67324752)\n-0F88CA Extract Zip Spec      14 (20) '2.0'\n-0F88CB Extract OS            00 (0) 'MS-DOS'\n-0F88CC General Purpose Flag  0808 (2056)\n+119F13 LOCAL HEADER #978     04034B50 (67324752)\n+119F17 Extract Zip Spec      14 (20) '2.0'\n+119F18 Extract OS            00 (0) 'MS-DOS'\n+119F19 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F88CE Compression Method    0008 (8) 'Deflated'\n-0F88D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F88D4 CRC                   00000000 (0)\n-0F88D8 Compressed Size       00000000 (0)\n-0F88DC Uncompressed Size     00000000 (0)\n-0F88E0 Filename Length       003B (59)\n-0F88E2 Extra Length          0000 (0)\n-0F88E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+119F1B Compression Method    0008 (8) 'Deflated'\n+119F1D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+119F21 CRC                   00000000 (0)\n+119F25 Compressed Size       00000000 (0)\n+119F29 Uncompressed Size     00000000 (0)\n+119F2D Filename Length       0040 (64)\n+119F2F Extra Length          0000 (0)\n+119F31 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF88E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x119F31: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F891F PAYLOAD\n+119F71 PAYLOAD\n \n-0F8E06 DATA DESCRIPTOR       08074B50 (134695760)\n-0F8E0A CRC                   C0DCFA8D (3235707533)\n-0F8E0E Compressed Size       000004E7 (1255)\n-0F8E12 Uncompressed Size     00001319 (4889)\n+11A862 DATA DESCRIPTOR       08074B50 (134695760)\n+11A866 CRC                   EAE8515F (3941093727)\n+11A86A Compressed Size       000008F1 (2289)\n+11A86E Uncompressed Size     00001FF9 (8185)\n \n-0F8E16 LOCAL HEADER #979     04034B50 (67324752)\n-0F8E1A Extract Zip Spec      14 (20) '2.0'\n-0F8E1B Extract OS            00 (0) 'MS-DOS'\n-0F8E1C General Purpose Flag  0808 (2056)\n+11A872 LOCAL HEADER #979     04034B50 (67324752)\n+11A876 Extract Zip Spec      14 (20) '2.0'\n+11A877 Extract OS            00 (0) 'MS-DOS'\n+11A878 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F8E1E Compression Method    0008 (8) 'Deflated'\n-0F8E20 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F8E24 CRC                   00000000 (0)\n-0F8E28 Compressed Size       00000000 (0)\n-0F8E2C Uncompressed Size     00000000 (0)\n-0F8E30 Filename Length       003A (58)\n-0F8E32 Extra Length          0000 (0)\n-0F8E34 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+11A87A Compression Method    0008 (8) 'Deflated'\n+11A87C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+11A880 CRC                   00000000 (0)\n+11A884 Compressed Size       00000000 (0)\n+11A888 Uncompressed Size     00000000 (0)\n+11A88C Filename Length       003C (60)\n+11A88E Extra Length          0000 (0)\n+11A890 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF8E34: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x11A890: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F8E6E PAYLOAD\n+11A8CC PAYLOAD\n \n-0F920A DATA DESCRIPTOR       08074B50 (134695760)\n-0F920E CRC                   4C151237 (1276449335)\n-0F9212 Compressed Size       0000039C (924)\n-0F9216 Uncompressed Size     00000CD1 (3281)\n+11B0D7 DATA DESCRIPTOR       08074B50 (134695760)\n+11B0DB CRC                   E202F321 (3791844129)\n+11B0DF Compressed Size       0000080B (2059)\n+11B0E3 Uncompressed Size     00001C58 (7256)\n \n-0F921A LOCAL HEADER #980     04034B50 (67324752)\n-0F921E Extract Zip Spec      14 (20) '2.0'\n-0F921F Extract OS            00 (0) 'MS-DOS'\n-0F9220 General Purpose Flag  0808 (2056)\n+11B0E7 LOCAL HEADER #980     04034B50 (67324752)\n+11B0EB Extract Zip Spec      14 (20) '2.0'\n+11B0EC Extract OS            00 (0) 'MS-DOS'\n+11B0ED General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F9222 Compression Method    0008 (8) 'Deflated'\n-0F9224 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F9228 CRC                   00000000 (0)\n-0F922C Compressed Size       00000000 (0)\n-0F9230 Uncompressed Size     00000000 (0)\n-0F9234 Filename Length       003A (58)\n-0F9236 Extra Length          0000 (0)\n-0F9238 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+11B0EF Compression Method    0008 (8) 'Deflated'\n+11B0F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+11B0F5 CRC                   00000000 (0)\n+11B0F9 Compressed Size       00000000 (0)\n+11B0FD Uncompressed Size     00000000 (0)\n+11B101 Filename Length       0033 (51)\n+11B103 Extra Length          0000 (0)\n+11B105 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF9238: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x11B105: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F9272 PAYLOAD\n+11B138 PAYLOAD\n \n-0F99E5 DATA DESCRIPTOR       08074B50 (134695760)\n-0F99E9 CRC                   E768197F (3882359167)\n-0F99ED Compressed Size       00000773 (1907)\n-0F99F1 Uncompressed Size     00001A69 (6761)\n+11BB84 DATA DESCRIPTOR       08074B50 (134695760)\n+11BB88 CRC                   DBBCD787 (3686586247)\n+11BB8C Compressed Size       00000A4C (2636)\n+11BB90 Uncompressed Size     00002BDF (11231)\n \n-0F99F5 LOCAL HEADER #981     04034B50 (67324752)\n-0F99F9 Extract Zip Spec      14 (20) '2.0'\n-0F99FA Extract OS            00 (0) 'MS-DOS'\n-0F99FB General Purpose Flag  0808 (2056)\n+11BB94 LOCAL HEADER #981     04034B50 (67324752)\n+11BB98 Extract Zip Spec      14 (20) '2.0'\n+11BB99 Extract OS            00 (0) 'MS-DOS'\n+11BB9A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F99FD Compression Method    0008 (8) 'Deflated'\n-0F99FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F9A03 CRC                   00000000 (0)\n-0F9A07 Compressed Size       00000000 (0)\n-0F9A0B Uncompressed Size     00000000 (0)\n-0F9A0F Filename Length       003F (63)\n-0F9A11 Extra Length          0000 (0)\n-0F9A13 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+11BB9C Compression Method    0008 (8) 'Deflated'\n+11BB9E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+11BBA2 CRC                   00000000 (0)\n+11BBA6 Compressed Size       00000000 (0)\n+11BBAA Uncompressed Size     00000000 (0)\n+11BBAE Filename Length       003A (58)\n+11BBB0 Extra Length          0000 (0)\n+11BBB2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF9A13: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x11BBB2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F9A52 PAYLOAD\n+11BBEC PAYLOAD\n \n-0F9D01 DATA DESCRIPTOR       08074B50 (134695760)\n-0F9D05 CRC                   010536C2 (17118914)\n-0F9D09 Compressed Size       000002AF (687)\n-0F9D0D Uncompressed Size     00000632 (1586)\n+11BF66 DATA DESCRIPTOR       08074B50 (134695760)\n+11BF6A CRC                   E1297FD5 (3777593301)\n+11BF6E Compressed Size       0000037A (890)\n+11BF72 Uncompressed Size     00000A4E (2638)\n \n-0F9D11 LOCAL HEADER #982     04034B50 (67324752)\n-0F9D15 Extract Zip Spec      14 (20) '2.0'\n-0F9D16 Extract OS            00 (0) 'MS-DOS'\n-0F9D17 General Purpose Flag  0808 (2056)\n+11BF76 LOCAL HEADER #982     04034B50 (67324752)\n+11BF7A Extract Zip Spec      14 (20) '2.0'\n+11BF7B Extract OS            00 (0) 'MS-DOS'\n+11BF7C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F9D19 Compression Method    0008 (8) 'Deflated'\n-0F9D1B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F9D1F CRC                   00000000 (0)\n-0F9D23 Compressed Size       00000000 (0)\n-0F9D27 Uncompressed Size     00000000 (0)\n-0F9D2B Filename Length       002B (43)\n-0F9D2D Extra Length          0000 (0)\n-0F9D2F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+11BF7E Compression Method    0008 (8) 'Deflated'\n+11BF80 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+11BF84 CRC                   00000000 (0)\n+11BF88 Compressed Size       00000000 (0)\n+11BF8C Uncompressed Size     00000000 (0)\n+11BF90 Filename Length       0038 (56)\n+11BF92 Extra Length          0000 (0)\n+11BF94 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF9D2F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x11BF94: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F9D5A PAYLOAD               XX\n+11BFCC PAYLOAD\n \n-0F9D5C DATA DESCRIPTOR       08074B50 (134695760)\n-0F9D60 CRC                   00000000 (0)\n-0F9D64 Compressed Size       00000002 (2)\n-0F9D68 Uncompressed Size     00000000 (0)\n+11C432 DATA DESCRIPTOR       08074B50 (134695760)\n+11C436 CRC                   CDBF443E (3451864126)\n+11C43A Compressed Size       00000466 (1126)\n+11C43E Uncompressed Size     00000C74 (3188)\n \n-0F9D6C LOCAL HEADER #983     04034B50 (67324752)\n-0F9D70 Extract Zip Spec      14 (20) '2.0'\n-0F9D71 Extract OS            00 (0) 'MS-DOS'\n-0F9D72 General Purpose Flag  0808 (2056)\n+11C442 LOCAL HEADER #983     04034B50 (67324752)\n+11C446 Extract Zip Spec      14 (20) '2.0'\n+11C447 Extract OS            00 (0) 'MS-DOS'\n+11C448 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0F9D74 Compression Method    0008 (8) 'Deflated'\n-0F9D76 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0F9D7A CRC                   00000000 (0)\n-0F9D7E Compressed Size       00000000 (0)\n-0F9D82 Uncompressed Size     00000000 (0)\n-0F9D86 Filename Length       0048 (72)\n-0F9D88 Extra Length          0000 (0)\n-0F9D8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+11C44A Compression Method    0008 (8) 'Deflated'\n+11C44C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+11C450 CRC                   00000000 (0)\n+11C454 Compressed Size       00000000 (0)\n+11C458 Uncompressed Size     00000000 (0)\n+11C45C Filename Length       0036 (54)\n+11C45E Extra Length          0000 (0)\n+11C460 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xF9D8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x11C460: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0F9DD2 PAYLOAD\n+11C496 PAYLOAD\n \n-0FA458 DATA DESCRIPTOR       08074B50 (134695760)\n-0FA45C CRC                   73E7CE8A (1944571530)\n-0FA460 Compressed Size       00000686 (1670)\n-0FA464 Uncompressed Size     000027E6 (10214)\n+11C752 DATA DESCRIPTOR       08074B50 (134695760)\n+11C756 CRC                   151E182C (354293804)\n+11C75A Compressed Size       000002BC (700)\n+11C75E Uncompressed Size     000005DD (1501)\n \n-0FA468 LOCAL HEADER #984     04034B50 (67324752)\n-0FA46C Extract Zip Spec      14 (20) '2.0'\n-0FA46D Extract OS            00 (0) 'MS-DOS'\n-0FA46E General Purpose Flag  0808 (2056)\n+11C762 LOCAL HEADER #984     04034B50 (67324752)\n+11C766 Extract Zip Spec      14 (20) '2.0'\n+11C767 Extract OS            00 (0) 'MS-DOS'\n+11C768 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0FA470 Compression Method    0008 (8) 'Deflated'\n-0FA472 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0FA476 CRC                   00000000 (0)\n-0FA47A Compressed Size       00000000 (0)\n-0FA47E Uncompressed Size     00000000 (0)\n-0FA482 Filename Length       003C (60)\n-0FA484 Extra Length          0000 (0)\n-0FA486 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+11C76A Compression Method    0008 (8) 'Deflated'\n+11C76C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+11C770 CRC                   00000000 (0)\n+11C774 Compressed Size       00000000 (0)\n+11C778 Uncompressed Size     00000000 (0)\n+11C77C Filename Length       0035 (53)\n+11C77E Extra Length          0000 (0)\n+11C780 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xFA486: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x11C780: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0FA4C2 PAYLOAD\n+11C7B5 PAYLOAD\n \n-0FAE2C DATA DESCRIPTOR       08074B50 (134695760)\n-0FAE30 CRC                   CD460ADB (3443919579)\n-0FAE34 Compressed Size       0000096A (2410)\n-0FAE38 Uncompressed Size     00002241 (8769)\n+11D117 DATA DESCRIPTOR       08074B50 (134695760)\n+11D11B CRC                   39CBA339 (969646905)\n+11D11F Compressed Size       00000962 (2402)\n+11D123 Uncompressed Size     00002090 (8336)\n \n-0FAE3C LOCAL HEADER #985     04034B50 (67324752)\n-0FAE40 Extract Zip Spec      14 (20) '2.0'\n-0FAE41 Extract OS            00 (0) 'MS-DOS'\n-0FAE42 General Purpose Flag  0808 (2056)\n+11D127 LOCAL HEADER #985     04034B50 (67324752)\n+11D12B Extract Zip Spec      14 (20) '2.0'\n+11D12C Extract OS            00 (0) 'MS-DOS'\n+11D12D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0FAE44 Compression Method    0008 (8) 'Deflated'\n-0FAE46 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0FAE4A CRC                   00000000 (0)\n-0FAE4E Compressed Size       00000000 (0)\n-0FAE52 Uncompressed Size     00000000 (0)\n-0FAE56 Filename Length       003B (59)\n-0FAE58 Extra Length          0000 (0)\n-0FAE5A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+11D12F Compression Method    0008 (8) 'Deflated'\n+11D131 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+11D135 CRC                   00000000 (0)\n+11D139 Compressed Size       00000000 (0)\n+11D13D Uncompressed Size     00000000 (0)\n+11D141 Filename Length       0036 (54)\n+11D143 Extra Length          0000 (0)\n+11D145 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xFAE5A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x11D145: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0FAE95 PAYLOAD\n+11D17B PAYLOAD\n \n-0FB94D DATA DESCRIPTOR       08074B50 (134695760)\n-0FB951 CRC                   17148ACF (387222223)\n-0FB955 Compressed Size       00000AB8 (2744)\n-0FB959 Uncompressed Size     00002446 (9286)\n+11EA0B DATA DESCRIPTOR       08074B50 (134695760)\n+11EA0F CRC                   07C16F02 (130117378)\n+11EA13 Compressed Size       00001890 (6288)\n+11EA17 Uncompressed Size     00006DE5 (28133)\n \n-0FB95D LOCAL HEADER #986     04034B50 (67324752)\n-0FB961 Extract Zip Spec      14 (20) '2.0'\n-0FB962 Extract OS            00 (0) 'MS-DOS'\n-0FB963 General Purpose Flag  0808 (2056)\n+11EA1B LOCAL HEADER #986     04034B50 (67324752)\n+11EA1F Extract Zip Spec      14 (20) '2.0'\n+11EA20 Extract OS            00 (0) 'MS-DOS'\n+11EA21 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0FB965 Compression Method    0008 (8) 'Deflated'\n-0FB967 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0FB96B CRC                   00000000 (0)\n-0FB96F Compressed Size       00000000 (0)\n-0FB973 Uncompressed Size     00000000 (0)\n-0FB977 Filename Length       0042 (66)\n-0FB979 Extra Length          0000 (0)\n-0FB97B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+11EA23 Compression Method    0008 (8) 'Deflated'\n+11EA25 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+11EA29 CRC                   00000000 (0)\n+11EA2D Compressed Size       00000000 (0)\n+11EA31 Uncompressed Size     00000000 (0)\n+11EA35 Filename Length       003C (60)\n+11EA37 Extra Length          0000 (0)\n+11EA39 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xFB97B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x11EA39: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0FB9BD PAYLOAD\n+11EA75 PAYLOAD\n \n-0FC107 DATA DESCRIPTOR       08074B50 (134695760)\n-0FC10B CRC                   15F2B7F5 (368228341)\n-0FC10F Compressed Size       0000074A (1866)\n-0FC113 Uncompressed Size     00001869 (6249)\n+11ED59 DATA DESCRIPTOR       08074B50 (134695760)\n+11ED5D CRC                   DA119291 (3658584721)\n+11ED61 Compressed Size       000002E4 (740)\n+11ED65 Uncompressed Size     00000752 (1874)\n \n-0FC117 LOCAL HEADER #987     04034B50 (67324752)\n-0FC11B Extract Zip Spec      14 (20) '2.0'\n-0FC11C Extract OS            00 (0) 'MS-DOS'\n-0FC11D General Purpose Flag  0808 (2056)\n+11ED69 LOCAL HEADER #987     04034B50 (67324752)\n+11ED6D Extract Zip Spec      14 (20) '2.0'\n+11ED6E Extract OS            00 (0) 'MS-DOS'\n+11ED6F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0FC11F Compression Method    0008 (8) 'Deflated'\n-0FC121 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0FC125 CRC                   00000000 (0)\n-0FC129 Compressed Size       00000000 (0)\n-0FC12D Uncompressed Size     00000000 (0)\n-0FC131 Filename Length       0041 (65)\n-0FC133 Extra Length          0000 (0)\n-0FC135 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+11ED71 Compression Method    0008 (8) 'Deflated'\n+11ED73 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+11ED77 CRC                   00000000 (0)\n+11ED7B Compressed Size       00000000 (0)\n+11ED7F Uncompressed Size     00000000 (0)\n+11ED83 Filename Length       0042 (66)\n+11ED85 Extra Length          0000 (0)\n+11ED87 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xFC135: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x11ED87: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0FC176 PAYLOAD\n+11EDC9 PAYLOAD\n \n-0FC635 DATA DESCRIPTOR       08074B50 (134695760)\n-0FC639 CRC                   BA9CD18D (3130839437)\n-0FC63D Compressed Size       000004BF (1215)\n-0FC641 Uncompressed Size     00000DDB (3547)\n+11F5F4 DATA DESCRIPTOR       08074B50 (134695760)\n+11F5F8 CRC                   0574FE58 (91553368)\n+11F5FC Compressed Size       0000082B (2091)\n+11F600 Uncompressed Size     000020D9 (8409)\n \n-0FC645 LOCAL HEADER #988     04034B50 (67324752)\n-0FC649 Extract Zip Spec      14 (20) '2.0'\n-0FC64A Extract OS            00 (0) 'MS-DOS'\n-0FC64B General Purpose Flag  0808 (2056)\n+11F604 LOCAL HEADER #988     04034B50 (67324752)\n+11F608 Extract Zip Spec      14 (20) '2.0'\n+11F609 Extract OS            00 (0) 'MS-DOS'\n+11F60A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0FC64D Compression Method    0008 (8) 'Deflated'\n-0FC64F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0FC653 CRC                   00000000 (0)\n-0FC657 Compressed Size       00000000 (0)\n-0FC65B Uncompressed Size     00000000 (0)\n-0FC65F Filename Length       0045 (69)\n-0FC661 Extra Length          0000 (0)\n-0FC663 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+11F60C Compression Method    0008 (8) 'Deflated'\n+11F60E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+11F612 CRC                   00000000 (0)\n+11F616 Compressed Size       00000000 (0)\n+11F61A Uncompressed Size     00000000 (0)\n+11F61E Filename Length       0045 (69)\n+11F620 Extra Length          0000 (0)\n+11F622 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xFC663: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x11F622: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0FC6A8 PAYLOAD\n+11F667 PAYLOAD\n \n-0FCA72 DATA DESCRIPTOR       08074B50 (134695760)\n-0FCA76 CRC                   16F071B0 (384856496)\n-0FCA7A Compressed Size       000003CA (970)\n-0FCA7E Uncompressed Size     00000A5E (2654)\n+11FD24 DATA DESCRIPTOR       08074B50 (134695760)\n+11FD28 CRC                   B5644E62 (3043249762)\n+11FD2C Compressed Size       000006BD (1725)\n+11FD30 Uncompressed Size     0000189A (6298)\n \n-0FCA82 LOCAL HEADER #989     04034B50 (67324752)\n-0FCA86 Extract Zip Spec      14 (20) '2.0'\n-0FCA87 Extract OS            00 (0) 'MS-DOS'\n-0FCA88 General Purpose Flag  0808 (2056)\n+11FD34 LOCAL HEADER #989     04034B50 (67324752)\n+11FD38 Extract Zip Spec      14 (20) '2.0'\n+11FD39 Extract OS            00 (0) 'MS-DOS'\n+11FD3A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0FCA8A Compression Method    0008 (8) 'Deflated'\n-0FCA8C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0FCA90 CRC                   00000000 (0)\n-0FCA94 Compressed Size       00000000 (0)\n-0FCA98 Uncompressed Size     00000000 (0)\n-0FCA9C Filename Length       003B (59)\n-0FCA9E Extra Length          0000 (0)\n-0FCAA0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+11FD3C Compression Method    0008 (8) 'Deflated'\n+11FD3E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+11FD42 CRC                   00000000 (0)\n+11FD46 Compressed Size       00000000 (0)\n+11FD4A Uncompressed Size     00000000 (0)\n+11FD4E Filename Length       002B (43)\n+11FD50 Extra Length          0000 (0)\n+11FD52 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xFCAA0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x11FD52: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0FCADB PAYLOAD\n+11FD7D PAYLOAD               XX\n \n-0FD3FE DATA DESCRIPTOR       08074B50 (134695760)\n-0FD402 CRC                   99FF093E (2583628094)\n-0FD406 Compressed Size       00000923 (2339)\n-0FD40A Uncompressed Size     00001F03 (7939)\n+11FD7F DATA DESCRIPTOR       08074B50 (134695760)\n+11FD83 CRC                   00000000 (0)\n+11FD87 Compressed Size       00000002 (2)\n+11FD8B Uncompressed Size     00000000 (0)\n \n-0FD40E LOCAL HEADER #990     04034B50 (67324752)\n-0FD412 Extract Zip Spec      14 (20) '2.0'\n-0FD413 Extract OS            00 (0) 'MS-DOS'\n-0FD414 General Purpose Flag  0808 (2056)\n+11FD8F LOCAL HEADER #990     04034B50 (67324752)\n+11FD93 Extract Zip Spec      14 (20) '2.0'\n+11FD94 Extract OS            00 (0) 'MS-DOS'\n+11FD95 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0FD416 Compression Method    0008 (8) 'Deflated'\n-0FD418 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0FD41C CRC                   00000000 (0)\n-0FD420 Compressed Size       00000000 (0)\n-0FD424 Uncompressed Size     00000000 (0)\n-0FD428 Filename Length       0042 (66)\n-0FD42A Extra Length          0000 (0)\n-0FD42C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+11FD97 Compression Method    0008 (8) 'Deflated'\n+11FD99 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+11FD9D CRC                   00000000 (0)\n+11FDA1 Compressed Size       00000000 (0)\n+11FDA5 Uncompressed Size     00000000 (0)\n+11FDA9 Filename Length       003C (60)\n+11FDAB Extra Length          0000 (0)\n+11FDAD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xFD42C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x11FDAD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0FD46E PAYLOAD\n+11FDE9 PAYLOAD\n \n-0FDA45 DATA DESCRIPTOR       08074B50 (134695760)\n-0FDA49 CRC                   7ED127C7 (2127636423)\n-0FDA4D Compressed Size       000005D7 (1495)\n-0FDA51 Uncompressed Size     0000147B (5243)\n+1205C3 DATA DESCRIPTOR       08074B50 (134695760)\n+1205C7 CRC                   45086F19 (1158180633)\n+1205CB Compressed Size       000007DA (2010)\n+1205CF Uncompressed Size     000022F3 (8947)\n \n-0FDA55 LOCAL HEADER #991     04034B50 (67324752)\n-0FDA59 Extract Zip Spec      14 (20) '2.0'\n-0FDA5A Extract OS            00 (0) 'MS-DOS'\n-0FDA5B General Purpose Flag  0808 (2056)\n+1205D3 LOCAL HEADER #991     04034B50 (67324752)\n+1205D7 Extract Zip Spec      14 (20) '2.0'\n+1205D8 Extract OS            00 (0) 'MS-DOS'\n+1205D9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0FDA5D Compression Method    0008 (8) 'Deflated'\n-0FDA5F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0FDA63 CRC                   00000000 (0)\n-0FDA67 Compressed Size       00000000 (0)\n-0FDA6B Uncompressed Size     00000000 (0)\n-0FDA6F Filename Length       0040 (64)\n-0FDA71 Extra Length          0000 (0)\n-0FDA73 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1205DB Compression Method    0008 (8) 'Deflated'\n+1205DD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1205E1 CRC                   00000000 (0)\n+1205E5 Compressed Size       00000000 (0)\n+1205E9 Uncompressed Size     00000000 (0)\n+1205ED Filename Length       003B (59)\n+1205EF Extra Length          0000 (0)\n+1205F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xFDA73: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1205F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0FDAB3 PAYLOAD\n+12062C PAYLOAD\n \n-0FDD7D DATA DESCRIPTOR       08074B50 (134695760)\n-0FDD81 CRC                   4AAC1D37 (1252793655)\n-0FDD85 Compressed Size       000002CA (714)\n-0FDD89 Uncompressed Size     0000064E (1614)\n+120CBB DATA DESCRIPTOR       08074B50 (134695760)\n+120CBF CRC                   57E4B8CF (1474607311)\n+120CC3 Compressed Size       0000068F (1679)\n+120CC7 Uncompressed Size     000016C7 (5831)\n \n-0FDD8D LOCAL HEADER #992     04034B50 (67324752)\n-0FDD91 Extract Zip Spec      14 (20) '2.0'\n-0FDD92 Extract OS            00 (0) 'MS-DOS'\n-0FDD93 General Purpose Flag  0808 (2056)\n+120CCB LOCAL HEADER #992     04034B50 (67324752)\n+120CCF Extract Zip Spec      14 (20) '2.0'\n+120CD0 Extract OS            00 (0) 'MS-DOS'\n+120CD1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0FDD95 Compression Method    0008 (8) 'Deflated'\n-0FDD97 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0FDD9B CRC                   00000000 (0)\n-0FDD9F Compressed Size       00000000 (0)\n-0FDDA3 Uncompressed Size     00000000 (0)\n-0FDDA7 Filename Length       003B (59)\n-0FDDA9 Extra Length          0000 (0)\n-0FDDAB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+120CD3 Compression Method    0008 (8) 'Deflated'\n+120CD5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+120CD9 CRC                   00000000 (0)\n+120CDD Compressed Size       00000000 (0)\n+120CE1 Uncompressed Size     00000000 (0)\n+120CE5 Filename Length       002B (43)\n+120CE7 Extra Length          0000 (0)\n+120CE9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xFDDAB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x120CE9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0FDDE6 PAYLOAD\n+120D14 PAYLOAD               XX\n \n-0FE3FA DATA DESCRIPTOR       08074B50 (134695760)\n-0FE3FE CRC                   155577E8 (357922792)\n-0FE402 Compressed Size       00000614 (1556)\n-0FE406 Uncompressed Size     000015AE (5550)\n+120D16 DATA DESCRIPTOR       08074B50 (134695760)\n+120D1A CRC                   00000000 (0)\n+120D1E Compressed Size       00000002 (2)\n+120D22 Uncompressed Size     00000000 (0)\n \n-0FE40A LOCAL HEADER #993     04034B50 (67324752)\n-0FE40E Extract Zip Spec      14 (20) '2.0'\n-0FE40F Extract OS            00 (0) 'MS-DOS'\n-0FE410 General Purpose Flag  0808 (2056)\n+120D26 LOCAL HEADER #993     04034B50 (67324752)\n+120D2A Extract Zip Spec      14 (20) '2.0'\n+120D2B Extract OS            00 (0) 'MS-DOS'\n+120D2C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0FE412 Compression Method    0008 (8) 'Deflated'\n-0FE414 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0FE418 CRC                   00000000 (0)\n-0FE41C Compressed Size       00000000 (0)\n-0FE420 Uncompressed Size     00000000 (0)\n-0FE424 Filename Length       0045 (69)\n-0FE426 Extra Length          0000 (0)\n-0FE428 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+120D2E Compression Method    0008 (8) 'Deflated'\n+120D30 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+120D34 CRC                   00000000 (0)\n+120D38 Compressed Size       00000000 (0)\n+120D3C Uncompressed Size     00000000 (0)\n+120D40 Filename Length       0043 (67)\n+120D42 Extra Length          0000 (0)\n+120D44 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xFE428: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x120D44: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0FE46D PAYLOAD\n+120D87 PAYLOAD\n \n-0FEA2B DATA DESCRIPTOR       08074B50 (134695760)\n-0FEA2F CRC                   FC50D2E5 (4233155301)\n-0FEA33 Compressed Size       000005BE (1470)\n-0FEA37 Uncompressed Size     000016CB (5835)\n+12111F DATA DESCRIPTOR       08074B50 (134695760)\n+121123 CRC                   A77D588D (2810009741)\n+121127 Compressed Size       00000398 (920)\n+12112B Uncompressed Size     00000921 (2337)\n \n-0FEA3B LOCAL HEADER #994     04034B50 (67324752)\n-0FEA3F Extract Zip Spec      14 (20) '2.0'\n-0FEA40 Extract OS            00 (0) 'MS-DOS'\n-0FEA41 General Purpose Flag  0808 (2056)\n+12112F LOCAL HEADER #994     04034B50 (67324752)\n+121133 Extract Zip Spec      14 (20) '2.0'\n+121134 Extract OS            00 (0) 'MS-DOS'\n+121135 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0FEA43 Compression Method    0008 (8) 'Deflated'\n-0FEA45 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0FEA49 CRC                   00000000 (0)\n-0FEA4D Compressed Size       00000000 (0)\n-0FEA51 Uncompressed Size     00000000 (0)\n-0FEA55 Filename Length       0033 (51)\n-0FEA57 Extra Length          0000 (0)\n-0FEA59 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+121137 Compression Method    0008 (8) 'Deflated'\n+121139 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12113D CRC                   00000000 (0)\n+121141 Compressed Size       00000000 (0)\n+121145 Uncompressed Size     00000000 (0)\n+121149 Filename Length       0047 (71)\n+12114B Extra Length          0000 (0)\n+12114D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xFEA59: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12114D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0FEA8C PAYLOAD               XX\n+121194 PAYLOAD\n \n-0FEA8E DATA DESCRIPTOR       08074B50 (134695760)\n-0FEA92 CRC                   00000000 (0)\n-0FEA96 Compressed Size       00000002 (2)\n-0FEA9A Uncompressed Size     00000000 (0)\n+121605 DATA DESCRIPTOR       08074B50 (134695760)\n+121609 CRC                   DF443A2F (3745790511)\n+12160D Compressed Size       00000471 (1137)\n+121611 Uncompressed Size     00000BC9 (3017)\n \n-0FEA9E LOCAL HEADER #995     04034B50 (67324752)\n-0FEAA2 Extract Zip Spec      14 (20) '2.0'\n-0FEAA3 Extract OS            00 (0) 'MS-DOS'\n-0FEAA4 General Purpose Flag  0808 (2056)\n+121615 LOCAL HEADER #995     04034B50 (67324752)\n+121619 Extract Zip Spec      14 (20) '2.0'\n+12161A Extract OS            00 (0) 'MS-DOS'\n+12161B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0FEAA6 Compression Method    0008 (8) 'Deflated'\n-0FEAA8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0FEAAC CRC                   00000000 (0)\n-0FEAB0 Compressed Size       00000000 (0)\n-0FEAB4 Uncompressed Size     00000000 (0)\n-0FEAB8 Filename Length       0047 (71)\n-0FEABA Extra Length          0000 (0)\n-0FEABC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12161D Compression Method    0008 (8) 'Deflated'\n+12161F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+121623 CRC                   00000000 (0)\n+121627 Compressed Size       00000000 (0)\n+12162B Uncompressed Size     00000000 (0)\n+12162F Filename Length       0030 (48)\n+121631 Extra Length          0000 (0)\n+121633 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xFEABC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x121633: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0FEB03 PAYLOAD\n+121663 PAYLOAD               XX\n \n-0FEEA7 DATA DESCRIPTOR       08074B50 (134695760)\n-0FEEAB CRC                   58FEAB57 (1493085015)\n-0FEEAF Compressed Size       000003A4 (932)\n-0FEEB3 Uncompressed Size     000008C3 (2243)\n+121665 DATA DESCRIPTOR       08074B50 (134695760)\n+121669 CRC                   00000000 (0)\n+12166D Compressed Size       00000002 (2)\n+121671 Uncompressed Size     00000000 (0)\n \n-0FEEB7 LOCAL HEADER #996     04034B50 (67324752)\n-0FEEBB Extract Zip Spec      14 (20) '2.0'\n-0FEEBC Extract OS            00 (0) 'MS-DOS'\n-0FEEBD General Purpose Flag  0808 (2056)\n+121675 LOCAL HEADER #996     04034B50 (67324752)\n+121679 Extract Zip Spec      14 (20) '2.0'\n+12167A Extract OS            00 (0) 'MS-DOS'\n+12167B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0FEEBF Compression Method    0008 (8) 'Deflated'\n-0FEEC1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0FEEC5 CRC                   00000000 (0)\n-0FEEC9 Compressed Size       00000000 (0)\n-0FEECD Uncompressed Size     00000000 (0)\n-0FEED1 Filename Length       0048 (72)\n-0FEED3 Extra Length          0000 (0)\n-0FEED5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12167D Compression Method    0008 (8) 'Deflated'\n+12167F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+121683 CRC                   00000000 (0)\n+121687 Compressed Size       00000000 (0)\n+12168B Uncompressed Size     00000000 (0)\n+12168F Filename Length       0037 (55)\n+121691 Extra Length          0000 (0)\n+121693 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xFEED5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x121693: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0FEF1D PAYLOAD\n+1216CA PAYLOAD\n \n-0FFC61 DATA DESCRIPTOR       08074B50 (134695760)\n-0FFC65 CRC                   BC1F87C6 (3156182982)\n-0FFC69 Compressed Size       00000D44 (3396)\n-0FFC6D Uncompressed Size     0000391E (14622)\n+121B0B DATA DESCRIPTOR       08074B50 (134695760)\n+121B0F CRC                   C3B87E97 (3283648151)\n+121B13 Compressed Size       00000441 (1089)\n+121B17 Uncompressed Size     00000F4C (3916)\n \n-0FFC71 LOCAL HEADER #997     04034B50 (67324752)\n-0FFC75 Extract Zip Spec      14 (20) '2.0'\n-0FFC76 Extract OS            00 (0) 'MS-DOS'\n-0FFC77 General Purpose Flag  0808 (2056)\n+121B1B LOCAL HEADER #997     04034B50 (67324752)\n+121B1F Extract Zip Spec      14 (20) '2.0'\n+121B20 Extract OS            00 (0) 'MS-DOS'\n+121B21 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0FFC79 Compression Method    0008 (8) 'Deflated'\n-0FFC7B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0FFC7F CRC                   00000000 (0)\n-0FFC83 Compressed Size       00000000 (0)\n-0FFC87 Uncompressed Size     00000000 (0)\n-0FFC8B Filename Length       001F (31)\n-0FFC8D Extra Length          0000 (0)\n-0FFC8F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+121B23 Compression Method    0008 (8) 'Deflated'\n+121B25 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+121B29 CRC                   00000000 (0)\n+121B2D Compressed Size       00000000 (0)\n+121B31 Uncompressed Size     00000000 (0)\n+121B35 Filename Length       003E (62)\n+121B37 Extra Length          0000 (0)\n+121B39 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xFFC8F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x121B39: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0FFCAE PAYLOAD               XX\n+121B77 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-0FFCB0 DATA DESCRIPTOR       08074B50 (134695760)\n-0FFCB4 CRC                   00000000 (0)\n-0FFCB8 Compressed Size       00000002 (2)\n-0FFCBC Uncompressed Size     00000000 (0)\n+121BB5 DATA DESCRIPTOR       08074B50 (134695760)\n+121BB9 CRC                   BE4436A8 (3192141480)\n+121BBD Compressed Size       0000003E (62)\n+121BC1 Uncompressed Size     00000046 (70)\n \n-0FFCC0 LOCAL HEADER #998     04034B50 (67324752)\n-0FFCC4 Extract Zip Spec      14 (20) '2.0'\n-0FFCC5 Extract OS            00 (0) 'MS-DOS'\n-0FFCC6 General Purpose Flag  0808 (2056)\n+121BC5 LOCAL HEADER #998     04034B50 (67324752)\n+121BC9 Extract Zip Spec      14 (20) '2.0'\n+121BCA Extract OS            00 (0) 'MS-DOS'\n+121BCB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-0FFCC8 Compression Method    0008 (8) 'Deflated'\n-0FFCCA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-0FFCCE CRC                   00000000 (0)\n-0FFCD2 Compressed Size       00000000 (0)\n-0FFCD6 Uncompressed Size     00000000 (0)\n-0FFCDA Filename Length       0037 (55)\n-0FFCDC Extra Length          0000 (0)\n-0FFCDE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+121BCD Compression Method    0008 (8) 'Deflated'\n+121BCF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+121BD3 CRC                   00000000 (0)\n+121BD7 Compressed Size       00000000 (0)\n+121BDB Uncompressed Size     00000000 (0)\n+121BDF Filename Length       0024 (36)\n+121BE1 Extra Length          0000 (0)\n+121BE3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0xFFCDE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x121BE3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-0FFD15 PAYLOAD\n+121C07 PAYLOAD               XX\n \n-0FFFF0 DATA DESCRIPTOR       08074B50 (134695760)\n-0FFFF4 CRC                   36F8F065 (922284133)\n-0FFFF8 Compressed Size       000002DB (731)\n-0FFFFC Uncompressed Size     0000062A (1578)\n+121C09 DATA DESCRIPTOR       08074B50 (134695760)\n+121C0D CRC                   00000000 (0)\n+121C11 Compressed Size       00000002 (2)\n+121C15 Uncompressed Size     00000000 (0)\n \n-100000 LOCAL HEADER #999     04034B50 (67324752)\n-100004 Extract Zip Spec      14 (20) '2.0'\n-100005 Extract OS            00 (0) 'MS-DOS'\n-100006 General Purpose Flag  0808 (2056)\n+121C19 LOCAL HEADER #999     04034B50 (67324752)\n+121C1D Extract Zip Spec      14 (20) '2.0'\n+121C1E Extract OS            00 (0) 'MS-DOS'\n+121C1F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-100008 Compression Method    0008 (8) 'Deflated'\n-10000A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10000E CRC                   00000000 (0)\n-100012 Compressed Size       00000000 (0)\n-100016 Uncompressed Size     00000000 (0)\n-10001A Filename Length       0031 (49)\n-10001C Extra Length          0000 (0)\n-10001E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+121C21 Compression Method    0008 (8) 'Deflated'\n+121C23 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+121C27 CRC                   00000000 (0)\n+121C2B Compressed Size       00000000 (0)\n+121C2F Uncompressed Size     00000000 (0)\n+121C33 Filename Length       0036 (54)\n+121C35 Extra Length          0000 (0)\n+121C37 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10001E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x121C37: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10004F PAYLOAD\n+121C6D PAYLOAD\n \n-100281 DATA DESCRIPTOR       08074B50 (134695760)\n-100285 CRC                   CD8B51D1 (3448459729)\n-100289 Compressed Size       00000232 (562)\n-10028D Uncompressed Size     000003DC (988)\n+121F32 DATA DESCRIPTOR       08074B50 (134695760)\n+121F36 CRC                   780A8F69 (2013957993)\n+121F3A Compressed Size       000002C5 (709)\n+121F3E Uncompressed Size     000005F6 (1526)\n \n-100291 LOCAL HEADER #1000    04034B50 (67324752)\n-100295 Extract Zip Spec      14 (20) '2.0'\n-100296 Extract OS            00 (0) 'MS-DOS'\n-100297 General Purpose Flag  0808 (2056)\n+121F42 LOCAL HEADER #1000    04034B50 (67324752)\n+121F46 Extract Zip Spec      14 (20) '2.0'\n+121F47 Extract OS            00 (0) 'MS-DOS'\n+121F48 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-100299 Compression Method    0008 (8) 'Deflated'\n-10029B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10029F CRC                   00000000 (0)\n-1002A3 Compressed Size       00000000 (0)\n-1002A7 Uncompressed Size     00000000 (0)\n-1002AB Filename Length       002D (45)\n-1002AD Extra Length          0000 (0)\n-1002AF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+121F4A Compression Method    0008 (8) 'Deflated'\n+121F4C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+121F50 CRC                   00000000 (0)\n+121F54 Compressed Size       00000000 (0)\n+121F58 Uncompressed Size     00000000 (0)\n+121F5C Filename Length       0035 (53)\n+121F5E Extra Length          0000 (0)\n+121F60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1002AF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x121F60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1002DC PAYLOAD\n+121F95 PAYLOAD\n \n-10060B DATA DESCRIPTOR       08074B50 (134695760)\n-10060F CRC                   123318DF (305338591)\n-100613 Compressed Size       0000032F (815)\n-100617 Uncompressed Size     000006C9 (1737)\n+1223E3 DATA DESCRIPTOR       08074B50 (134695760)\n+1223E7 CRC                   0693959E (110335390)\n+1223EB Compressed Size       0000044E (1102)\n+1223EF Uncompressed Size     00000AB6 (2742)\n \n-10061B LOCAL HEADER #1001    04034B50 (67324752)\n-10061F Extract Zip Spec      14 (20) '2.0'\n-100620 Extract OS            00 (0) 'MS-DOS'\n-100621 General Purpose Flag  0808 (2056)\n+1223F3 LOCAL HEADER #1001    04034B50 (67324752)\n+1223F7 Extract Zip Spec      14 (20) '2.0'\n+1223F8 Extract OS            00 (0) 'MS-DOS'\n+1223F9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-100623 Compression Method    0008 (8) 'Deflated'\n-100625 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-100629 CRC                   00000000 (0)\n-10062D Compressed Size       00000000 (0)\n-100631 Uncompressed Size     00000000 (0)\n-100635 Filename Length       002E (46)\n-100637 Extra Length          0000 (0)\n-100639 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1223FB Compression Method    0008 (8) 'Deflated'\n+1223FD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+122401 CRC                   00000000 (0)\n+122405 Compressed Size       00000000 (0)\n+122409 Uncompressed Size     00000000 (0)\n+12240D Filename Length       0036 (54)\n+12240F Extra Length          0000 (0)\n+122411 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x100639: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x122411: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-100667 PAYLOAD\n+122447 PAYLOAD\n \n-100CB7 DATA DESCRIPTOR       08074B50 (134695760)\n-100CBB CRC                   6B994ABC (1805208252)\n-100CBF Compressed Size       00000650 (1616)\n-100CC3 Uncompressed Size     000018EB (6379)\n+122A5A DATA DESCRIPTOR       08074B50 (134695760)\n+122A5E CRC                   EACFC8D2 (3939485906)\n+122A62 Compressed Size       00000613 (1555)\n+122A66 Uncompressed Size     000011EA (4586)\n \n-100CC7 LOCAL HEADER #1002    04034B50 (67324752)\n-100CCB Extract Zip Spec      14 (20) '2.0'\n-100CCC Extract OS            00 (0) 'MS-DOS'\n-100CCD General Purpose Flag  0808 (2056)\n+122A6A LOCAL HEADER #1002    04034B50 (67324752)\n+122A6E Extract Zip Spec      14 (20) '2.0'\n+122A6F Extract OS            00 (0) 'MS-DOS'\n+122A70 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-100CCF Compression Method    0008 (8) 'Deflated'\n-100CD1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-100CD5 CRC                   00000000 (0)\n-100CD9 Compressed Size       00000000 (0)\n-100CDD Uncompressed Size     00000000 (0)\n-100CE1 Filename Length       0033 (51)\n-100CE3 Extra Length          0000 (0)\n-100CE5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+122A72 Compression Method    0008 (8) 'Deflated'\n+122A74 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+122A78 CRC                   00000000 (0)\n+122A7C Compressed Size       00000000 (0)\n+122A80 Uncompressed Size     00000000 (0)\n+122A84 Filename Length       0030 (48)\n+122A86 Extra Length          0000 (0)\n+122A88 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x100CE5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x122A88: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-100D18 PAYLOAD\n+122AB8 PAYLOAD               XX\n \n-100F94 DATA DESCRIPTOR       08074B50 (134695760)\n-100F98 CRC                   387B0FF7 (947589111)\n-100F9C Compressed Size       0000027C (636)\n-100FA0 Uncompressed Size     000007B7 (1975)\n+122ABA DATA DESCRIPTOR       08074B50 (134695760)\n+122ABE CRC                   00000000 (0)\n+122AC2 Compressed Size       00000002 (2)\n+122AC6 Uncompressed Size     00000000 (0)\n \n-100FA4 LOCAL HEADER #1003    04034B50 (67324752)\n-100FA8 Extract Zip Spec      14 (20) '2.0'\n-100FA9 Extract OS            00 (0) 'MS-DOS'\n-100FAA General Purpose Flag  0808 (2056)\n+122ACA LOCAL HEADER #1003    04034B50 (67324752)\n+122ACE Extract Zip Spec      14 (20) '2.0'\n+122ACF Extract OS            00 (0) 'MS-DOS'\n+122AD0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-100FAC Compression Method    0008 (8) 'Deflated'\n-100FAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-100FB2 CRC                   00000000 (0)\n-100FB6 Compressed Size       00000000 (0)\n-100FBA Uncompressed Size     00000000 (0)\n-100FBE Filename Length       002F (47)\n-100FC0 Extra Length          0000 (0)\n-100FC2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+122AD2 Compression Method    0008 (8) 'Deflated'\n+122AD4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+122AD8 CRC                   00000000 (0)\n+122ADC Compressed Size       00000000 (0)\n+122AE0 Uncompressed Size     00000000 (0)\n+122AE4 Filename Length       0037 (55)\n+122AE6 Extra Length          0000 (0)\n+122AE8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x100FC2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x122AE8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-100FF1 PAYLOAD\n+122B1F PAYLOAD\n \n-101286 DATA DESCRIPTOR       08074B50 (134695760)\n-10128A CRC                   0F6205B4 (258082228)\n-10128E Compressed Size       00000295 (661)\n-101292 Uncompressed Size     000004DB (1243)\n+122E76 DATA DESCRIPTOR       08074B50 (134695760)\n+122E7A CRC                   C4A7A8FF (3299322111)\n+122E7E Compressed Size       00000357 (855)\n+122E82 Uncompressed Size     00000783 (1923)\n \n-101296 LOCAL HEADER #1004    04034B50 (67324752)\n-10129A Extract Zip Spec      14 (20) '2.0'\n-10129B Extract OS            00 (0) 'MS-DOS'\n-10129C General Purpose Flag  0808 (2056)\n+122E86 LOCAL HEADER #1004    04034B50 (67324752)\n+122E8A Extract Zip Spec      14 (20) '2.0'\n+122E8B Extract OS            00 (0) 'MS-DOS'\n+122E8C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10129E Compression Method    0008 (8) 'Deflated'\n-1012A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1012A4 CRC                   00000000 (0)\n-1012A8 Compressed Size       00000000 (0)\n-1012AC Uncompressed Size     00000000 (0)\n-1012B0 Filename Length       0031 (49)\n-1012B2 Extra Length          0000 (0)\n-1012B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+122E8E Compression Method    0008 (8) 'Deflated'\n+122E90 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+122E94 CRC                   00000000 (0)\n+122E98 Compressed Size       00000000 (0)\n+122E9C Uncompressed Size     00000000 (0)\n+122EA0 Filename Length       003E (62)\n+122EA2 Extra Length          0000 (0)\n+122EA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1012B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x122EA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1012E5 PAYLOAD\n+122EE2 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-101513 DATA DESCRIPTOR       08074B50 (134695760)\n-101517 CRC                   6ADC9301 (1792840449)\n-10151B Compressed Size       0000022E (558)\n-10151F Uncompressed Size     000003E4 (996)\n+122F26 DATA DESCRIPTOR       08074B50 (134695760)\n+122F2A CRC                   09A59FE7 (161849319)\n+122F2E Compressed Size       00000044 (68)\n+122F32 Uncompressed Size     00000046 (70)\n \n-101523 LOCAL HEADER #1005    04034B50 (67324752)\n-101527 Extract Zip Spec      14 (20) '2.0'\n-101528 Extract OS            00 (0) 'MS-DOS'\n-101529 General Purpose Flag  0808 (2056)\n+122F36 LOCAL HEADER #1005    04034B50 (67324752)\n+122F3A Extract Zip Spec      14 (20) '2.0'\n+122F3B Extract OS            00 (0) 'MS-DOS'\n+122F3C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10152B Compression Method    0008 (8) 'Deflated'\n-10152D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-101531 CRC                   00000000 (0)\n-101535 Compressed Size       00000000 (0)\n-101539 Uncompressed Size     00000000 (0)\n-10153D Filename Length       0025 (37)\n-10153F Extra Length          0000 (0)\n-101541 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+122F3E Compression Method    0008 (8) 'Deflated'\n+122F40 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+122F44 CRC                   00000000 (0)\n+122F48 Compressed Size       00000000 (0)\n+122F4C Uncompressed Size     00000000 (0)\n+122F50 Filename Length       0023 (35)\n+122F52 Extra Length          0000 (0)\n+122F54 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x101541: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x122F54: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-101566 PAYLOAD               XX\n+122F77 PAYLOAD               XX\n \n-101568 DATA DESCRIPTOR       08074B50 (134695760)\n-10156C CRC                   00000000 (0)\n-101570 Compressed Size       00000002 (2)\n-101574 Uncompressed Size     00000000 (0)\n+122F79 DATA DESCRIPTOR       08074B50 (134695760)\n+122F7D CRC                   00000000 (0)\n+122F81 Compressed Size       00000002 (2)\n+122F85 Uncompressed Size     00000000 (0)\n \n-101578 LOCAL HEADER #1006    04034B50 (67324752)\n-10157C Extract Zip Spec      14 (20) '2.0'\n-10157D Extract OS            00 (0) 'MS-DOS'\n-10157E General Purpose Flag  0808 (2056)\n+122F89 LOCAL HEADER #1006    04034B50 (67324752)\n+122F8D Extract Zip Spec      14 (20) '2.0'\n+122F8E Extract OS            00 (0) 'MS-DOS'\n+122F8F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-101580 Compression Method    0008 (8) 'Deflated'\n-101582 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-101586 CRC                   00000000 (0)\n-10158A Compressed Size       00000000 (0)\n-10158E Uncompressed Size     00000000 (0)\n-101592 Filename Length       0041 (65)\n-101594 Extra Length          0000 (0)\n-101596 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+122F91 Compression Method    0008 (8) 'Deflated'\n+122F93 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+122F97 CRC                   00000000 (0)\n+122F9B Compressed Size       00000000 (0)\n+122F9F Uncompressed Size     00000000 (0)\n+122FA3 Filename Length       0034 (52)\n+122FA5 Extra Length          0000 (0)\n+122FA7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x101596: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x122FA7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1015D7 PAYLOAD\n+122FDB PAYLOAD\n \n-10183D DATA DESCRIPTOR       08074B50 (134695760)\n-101841 CRC                   3F422686 (1061299846)\n-101845 Compressed Size       00000266 (614)\n-101849 Uncompressed Size     0000046C (1132)\n+1238C5 DATA DESCRIPTOR       08074B50 (134695760)\n+1238C9 CRC                   928E5A20 (2458802720)\n+1238CD Compressed Size       000008EA (2282)\n+1238D1 Uncompressed Size     00001E46 (7750)\n \n-10184D LOCAL HEADER #1007    04034B50 (67324752)\n-101851 Extract Zip Spec      14 (20) '2.0'\n-101852 Extract OS            00 (0) 'MS-DOS'\n-101853 General Purpose Flag  0808 (2056)\n+1238D5 LOCAL HEADER #1007    04034B50 (67324752)\n+1238D9 Extract Zip Spec      14 (20) '2.0'\n+1238DA Extract OS            00 (0) 'MS-DOS'\n+1238DB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-101855 Compression Method    0008 (8) 'Deflated'\n-101857 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10185B CRC                   00000000 (0)\n-10185F Compressed Size       00000000 (0)\n-101863 Uncompressed Size     00000000 (0)\n-101867 Filename Length       0035 (53)\n-101869 Extra Length          0000 (0)\n-10186B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1238DD Compression Method    0008 (8) 'Deflated'\n+1238DF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1238E3 CRC                   00000000 (0)\n+1238E7 Compressed Size       00000000 (0)\n+1238EB Uncompressed Size     00000000 (0)\n+1238EF Filename Length       003D (61)\n+1238F1 Extra Length          0000 (0)\n+1238F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10186B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1238F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1018A0 PAYLOAD\n+123930 PAYLOAD\n \n-102812 DATA DESCRIPTOR       08074B50 (134695760)\n-102816 CRC                   A75036DE (2807051998)\n-10281A Compressed Size       00000F72 (3954)\n-10281E Uncompressed Size     00004108 (16648)\n+123B72 DATA DESCRIPTOR       08074B50 (134695760)\n+123B76 CRC                   B3BC74DF (3015472351)\n+123B7A Compressed Size       00000242 (578)\n+123B7E Uncompressed Size     00000429 (1065)\n \n-102822 LOCAL HEADER #1008    04034B50 (67324752)\n-102826 Extract Zip Spec      14 (20) '2.0'\n-102827 Extract OS            00 (0) 'MS-DOS'\n-102828 General Purpose Flag  0808 (2056)\n+123B82 LOCAL HEADER #1008    04034B50 (67324752)\n+123B86 Extract Zip Spec      14 (20) '2.0'\n+123B87 Extract OS            00 (0) 'MS-DOS'\n+123B88 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10282A Compression Method    0008 (8) 'Deflated'\n-10282C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-102830 CRC                   00000000 (0)\n-102834 Compressed Size       00000000 (0)\n-102838 Uncompressed Size     00000000 (0)\n-10283C Filename Length       003C (60)\n-10283E Extra Length          0000 (0)\n-102840 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+123B8A Compression Method    0008 (8) 'Deflated'\n+123B8C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+123B90 CRC                   00000000 (0)\n+123B94 Compressed Size       00000000 (0)\n+123B98 Uncompressed Size     00000000 (0)\n+123B9C Filename Length       003C (60)\n+123B9E Extra Length          0000 (0)\n+123BA0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x102840: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x123BA0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10287C PAYLOAD\n+123BDC PAYLOAD\n \n-103F9D DATA DESCRIPTOR       08074B50 (134695760)\n-103FA1 CRC                   F1F2D150 (4059222352)\n-103FA5 Compressed Size       00001721 (5921)\n-103FA9 Uncompressed Size     00006EC8 (28360)\n+123FC6 DATA DESCRIPTOR       08074B50 (134695760)\n+123FCA CRC                   F065E593 (4033209747)\n+123FCE Compressed Size       000003EA (1002)\n+123FD2 Uncompressed Size     00000928 (2344)\n \n-103FAD LOCAL HEADER #1009    04034B50 (67324752)\n-103FB1 Extract Zip Spec      14 (20) '2.0'\n-103FB2 Extract OS            00 (0) 'MS-DOS'\n-103FB3 General Purpose Flag  0808 (2056)\n+123FD6 LOCAL HEADER #1009    04034B50 (67324752)\n+123FDA Extract Zip Spec      14 (20) '2.0'\n+123FDB Extract OS            00 (0) 'MS-DOS'\n+123FDC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-103FB5 Compression Method    0008 (8) 'Deflated'\n-103FB7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-103FBB CRC                   00000000 (0)\n-103FBF Compressed Size       00000000 (0)\n-103FC3 Uncompressed Size     00000000 (0)\n-103FC7 Filename Length       003A (58)\n-103FC9 Extra Length          0000 (0)\n-103FCB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+123FDE Compression Method    0008 (8) 'Deflated'\n+123FE0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+123FE4 CRC                   00000000 (0)\n+123FE8 Compressed Size       00000000 (0)\n+123FEC Uncompressed Size     00000000 (0)\n+123FF0 Filename Length       003F (63)\n+123FF2 Extra Length          0000 (0)\n+123FF4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x103FCB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x123FF4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-104005 PAYLOAD\n+124033 PAYLOAD\n \n-104258 DATA DESCRIPTOR       08074B50 (134695760)\n-10425C CRC                   F823DAB1 (4163099313)\n-104260 Compressed Size       00000253 (595)\n-104264 Uncompressed Size     00000480 (1152)\n+124411 DATA DESCRIPTOR       08074B50 (134695760)\n+124415 CRC                   C56F8EA2 (3312422562)\n+124419 Compressed Size       000003DE (990)\n+12441D Uncompressed Size     00000B62 (2914)\n \n-104268 LOCAL HEADER #1010    04034B50 (67324752)\n-10426C Extract Zip Spec      14 (20) '2.0'\n-10426D Extract OS            00 (0) 'MS-DOS'\n-10426E General Purpose Flag  0808 (2056)\n+124421 LOCAL HEADER #1010    04034B50 (67324752)\n+124425 Extract Zip Spec      14 (20) '2.0'\n+124426 Extract OS            00 (0) 'MS-DOS'\n+124427 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-104270 Compression Method    0008 (8) 'Deflated'\n-104272 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-104276 CRC                   00000000 (0)\n-10427A Compressed Size       00000000 (0)\n-10427E Uncompressed Size     00000000 (0)\n-104282 Filename Length       0034 (52)\n-104284 Extra Length          0000 (0)\n-104286 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+124429 Compression Method    0008 (8) 'Deflated'\n+12442B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12442F CRC                   00000000 (0)\n+124433 Compressed Size       00000000 (0)\n+124437 Uncompressed Size     00000000 (0)\n+12443B Filename Length       002F (47)\n+12443D Extra Length          0000 (0)\n+12443F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x104286: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12443F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1042BA PAYLOAD\n+12446E PAYLOAD               XX\n \n-1046EA DATA DESCRIPTOR       08074B50 (134695760)\n-1046EE CRC                   0B4932D9 (189346521)\n-1046F2 Compressed Size       00000430 (1072)\n-1046F6 Uncompressed Size     00000D69 (3433)\n+124470 DATA DESCRIPTOR       08074B50 (134695760)\n+124474 CRC                   00000000 (0)\n+124478 Compressed Size       00000002 (2)\n+12447C Uncompressed Size     00000000 (0)\n \n-1046FA LOCAL HEADER #1011    04034B50 (67324752)\n-1046FE Extract Zip Spec      14 (20) '2.0'\n-1046FF Extract OS            00 (0) 'MS-DOS'\n-104700 General Purpose Flag  0808 (2056)\n+124480 LOCAL HEADER #1011    04034B50 (67324752)\n+124484 Extract Zip Spec      14 (20) '2.0'\n+124485 Extract OS            00 (0) 'MS-DOS'\n+124486 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-104702 Compression Method    0008 (8) 'Deflated'\n-104704 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-104708 CRC                   00000000 (0)\n-10470C Compressed Size       00000000 (0)\n-104710 Uncompressed Size     00000000 (0)\n-104714 Filename Length       0035 (53)\n-104716 Extra Length          0000 (0)\n-104718 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+124488 Compression Method    0008 (8) 'Deflated'\n+12448A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12448E CRC                   00000000 (0)\n+124492 Compressed Size       00000000 (0)\n+124496 Uncompressed Size     00000000 (0)\n+12449A Filename Length       0036 (54)\n+12449C Extra Length          0000 (0)\n+12449E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x104718: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12449E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10474D PAYLOAD\n+1244D4 PAYLOAD\n \n-104A0C DATA DESCRIPTOR       08074B50 (134695760)\n-104A10 CRC                   117709A7 (293013927)\n-104A14 Compressed Size       000002BF (703)\n-104A18 Uncompressed Size     0000056A (1386)\n+12487E DATA DESCRIPTOR       08074B50 (134695760)\n+124882 CRC                   03176EE3 (51867363)\n+124886 Compressed Size       000003AA (938)\n+12488A Uncompressed Size     00000988 (2440)\n \n-104A1C LOCAL HEADER #1012    04034B50 (67324752)\n-104A20 Extract Zip Spec      14 (20) '2.0'\n-104A21 Extract OS            00 (0) 'MS-DOS'\n-104A22 General Purpose Flag  0808 (2056)\n+12488E LOCAL HEADER #1012    04034B50 (67324752)\n+124892 Extract Zip Spec      14 (20) '2.0'\n+124893 Extract OS            00 (0) 'MS-DOS'\n+124894 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-104A24 Compression Method    0008 (8) 'Deflated'\n-104A26 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-104A2A CRC                   00000000 (0)\n-104A2E Compressed Size       00000000 (0)\n-104A32 Uncompressed Size     00000000 (0)\n-104A36 Filename Length       0026 (38)\n-104A38 Extra Length          0000 (0)\n-104A3A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+124896 Compression Method    0008 (8) 'Deflated'\n+124898 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12489C CRC                   00000000 (0)\n+1248A0 Compressed Size       00000000 (0)\n+1248A4 Uncompressed Size     00000000 (0)\n+1248A8 Filename Length       003D (61)\n+1248AA Extra Length          0000 (0)\n+1248AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x104A3A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1248AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-104A60 PAYLOAD               XX\n+1248E9 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-104A62 DATA DESCRIPTOR       08074B50 (134695760)\n-104A66 CRC                   00000000 (0)\n-104A6A Compressed Size       00000002 (2)\n-104A6E Uncompressed Size     00000000 (0)\n+12492C DATA DESCRIPTOR       08074B50 (134695760)\n+124930 CRC                   8E20026A (2384462442)\n+124934 Compressed Size       00000043 (67)\n+124938 Uncompressed Size     00000045 (69)\n \n-104A72 LOCAL HEADER #1013    04034B50 (67324752)\n-104A76 Extract Zip Spec      14 (20) '2.0'\n-104A77 Extract OS            00 (0) 'MS-DOS'\n-104A78 General Purpose Flag  0808 (2056)\n+12493C LOCAL HEADER #1013    04034B50 (67324752)\n+124940 Extract Zip Spec      14 (20) '2.0'\n+124941 Extract OS            00 (0) 'MS-DOS'\n+124942 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-104A7A Compression Method    0008 (8) 'Deflated'\n-104A7C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-104A80 CRC                   00000000 (0)\n-104A84 Compressed Size       00000000 (0)\n-104A88 Uncompressed Size     00000000 (0)\n-104A8C Filename Length       0035 (53)\n-104A8E Extra Length          0000 (0)\n-104A90 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+124944 Compression Method    0008 (8) 'Deflated'\n+124946 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12494A CRC                   00000000 (0)\n+12494E Compressed Size       00000000 (0)\n+124952 Uncompressed Size     00000000 (0)\n+124956 Filename Length       001F (31)\n+124958 Extra Length          0000 (0)\n+12495A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x104A90: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12495A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-104AC5 PAYLOAD\n+124979 PAYLOAD               XX\n \n-104FA1 DATA DESCRIPTOR       08074B50 (134695760)\n-104FA5 CRC                   35D495FB (903124475)\n-104FA9 Compressed Size       000004DC (1244)\n-104FAD Uncompressed Size     00000B6B (2923)\n+12497B DATA DESCRIPTOR       08074B50 (134695760)\n+12497F CRC                   00000000 (0)\n+124983 Compressed Size       00000002 (2)\n+124987 Uncompressed Size     00000000 (0)\n \n-104FB1 LOCAL HEADER #1014    04034B50 (67324752)\n-104FB5 Extract Zip Spec      14 (20) '2.0'\n-104FB6 Extract OS            00 (0) 'MS-DOS'\n-104FB7 General Purpose Flag  0808 (2056)\n+12498B LOCAL HEADER #1014    04034B50 (67324752)\n+12498F Extract Zip Spec      14 (20) '2.0'\n+124990 Extract OS            00 (0) 'MS-DOS'\n+124991 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-104FB9 Compression Method    0008 (8) 'Deflated'\n-104FBB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-104FBF CRC                   00000000 (0)\n-104FC3 Compressed Size       00000000 (0)\n-104FC7 Uncompressed Size     00000000 (0)\n-104FCB Filename Length       0027 (39)\n-104FCD Extra Length          0000 (0)\n-104FCF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+124993 Compression Method    0008 (8) 'Deflated'\n+124995 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+124999 CRC                   00000000 (0)\n+12499D Compressed Size       00000000 (0)\n+1249A1 Uncompressed Size     00000000 (0)\n+1249A5 Filename Length       0023 (35)\n+1249A7 Extra Length          0000 (0)\n+1249A9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x104FCF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1249A9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-104FF6 PAYLOAD               XX\n+1249CC PAYLOAD               XX\n \n-104FF8 DATA DESCRIPTOR       08074B50 (134695760)\n-104FFC CRC                   00000000 (0)\n-105000 Compressed Size       00000002 (2)\n-105004 Uncompressed Size     00000000 (0)\n+1249CE DATA DESCRIPTOR       08074B50 (134695760)\n+1249D2 CRC                   00000000 (0)\n+1249D6 Compressed Size       00000002 (2)\n+1249DA Uncompressed Size     00000000 (0)\n \n-105008 LOCAL HEADER #1015    04034B50 (67324752)\n-10500C Extract Zip Spec      14 (20) '2.0'\n-10500D Extract OS            00 (0) 'MS-DOS'\n-10500E General Purpose Flag  0808 (2056)\n+1249DE LOCAL HEADER #1015    04034B50 (67324752)\n+1249E2 Extract Zip Spec      14 (20) '2.0'\n+1249E3 Extract OS            00 (0) 'MS-DOS'\n+1249E4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-105010 Compression Method    0008 (8) 'Deflated'\n-105012 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-105016 CRC                   00000000 (0)\n-10501A Compressed Size       00000000 (0)\n-10501E Uncompressed Size     00000000 (0)\n-105022 Filename Length       003E (62)\n-105024 Extra Length          0000 (0)\n-105026 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1249E6 Compression Method    0008 (8) 'Deflated'\n+1249E8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1249EC CRC                   00000000 (0)\n+1249F0 Compressed Size       00000000 (0)\n+1249F4 Uncompressed Size     00000000 (0)\n+1249F8 Filename Length       003B (59)\n+1249FA Extra Length          0000 (0)\n+1249FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x105026: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1249FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-105064 PAYLOAD\n+124A37 PAYLOAD\n \n-105724 DATA DESCRIPTOR       08074B50 (134695760)\n-105728 CRC                   2FB39AE6 (800299750)\n-10572C Compressed Size       000006C0 (1728)\n-105730 Uncompressed Size     00001C52 (7250)\n+124D06 DATA DESCRIPTOR       08074B50 (134695760)\n+124D0A CRC                   BAD7984F (3134691407)\n+124D0E Compressed Size       000002CF (719)\n+124D12 Uncompressed Size     000005A7 (1447)\n \n-105734 LOCAL HEADER #1016    04034B50 (67324752)\n-105738 Extract Zip Spec      14 (20) '2.0'\n-105739 Extract OS            00 (0) 'MS-DOS'\n-10573A General Purpose Flag  0808 (2056)\n+124D16 LOCAL HEADER #1016    04034B50 (67324752)\n+124D1A Extract Zip Spec      14 (20) '2.0'\n+124D1B Extract OS            00 (0) 'MS-DOS'\n+124D1C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10573C Compression Method    0008 (8) 'Deflated'\n-10573E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-105742 CRC                   00000000 (0)\n-105746 Compressed Size       00000000 (0)\n-10574A Uncompressed Size     00000000 (0)\n-10574E Filename Length       0046 (70)\n-105750 Extra Length          0000 (0)\n-105752 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+124D1E Compression Method    0008 (8) 'Deflated'\n+124D20 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+124D24 CRC                   00000000 (0)\n+124D28 Compressed Size       00000000 (0)\n+124D2C Uncompressed Size     00000000 (0)\n+124D30 Filename Length       0022 (34)\n+124D32 Extra Length          0000 (0)\n+124D34 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x105752: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x124D34: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-105798 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+124D56 PAYLOAD               XX\n \n-1057CE DATA DESCRIPTOR       08074B50 (134695760)\n-1057D2 CRC                   91BA560C (2444908044)\n-1057D6 Compressed Size       00000036 (54)\n-1057DA Uncompressed Size     0000003B (59)\n+124D58 DATA DESCRIPTOR       08074B50 (134695760)\n+124D5C CRC                   00000000 (0)\n+124D60 Compressed Size       00000002 (2)\n+124D64 Uncompressed Size     00000000 (0)\n \n-1057DE LOCAL HEADER #1017    04034B50 (67324752)\n-1057E2 Extract Zip Spec      14 (20) '2.0'\n-1057E3 Extract OS            00 (0) 'MS-DOS'\n-1057E4 General Purpose Flag  0808 (2056)\n+124D68 LOCAL HEADER #1017    04034B50 (67324752)\n+124D6C Extract Zip Spec      14 (20) '2.0'\n+124D6D Extract OS            00 (0) 'MS-DOS'\n+124D6E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1057E6 Compression Method    0008 (8) 'Deflated'\n-1057E8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1057EC CRC                   00000000 (0)\n-1057F0 Compressed Size       00000000 (0)\n-1057F4 Uncompressed Size     00000000 (0)\n-1057F8 Filename Length       0029 (41)\n-1057FA Extra Length          0000 (0)\n-1057FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+124D70 Compression Method    0008 (8) 'Deflated'\n+124D72 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+124D76 CRC                   00000000 (0)\n+124D7A Compressed Size       00000000 (0)\n+124D7E Uncompressed Size     00000000 (0)\n+124D82 Filename Length       0032 (50)\n+124D84 Extra Length          0000 (0)\n+124D86 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1057FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x124D86: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-105825 PAYLOAD               XX\n+124DB8 PAYLOAD\n \n-105827 DATA DESCRIPTOR       08074B50 (134695760)\n-10582B CRC                   00000000 (0)\n-10582F Compressed Size       00000002 (2)\n-105833 Uncompressed Size     00000000 (0)\n+12558B DATA DESCRIPTOR       08074B50 (134695760)\n+12558F CRC                   B748FF21 (3075014433)\n+125593 Compressed Size       000007D3 (2003)\n+125597 Uncompressed Size     00001AD2 (6866)\n \n-105837 LOCAL HEADER #1018    04034B50 (67324752)\n-10583B Extract Zip Spec      14 (20) '2.0'\n-10583C Extract OS            00 (0) 'MS-DOS'\n-10583D General Purpose Flag  0808 (2056)\n+12559B LOCAL HEADER #1018    04034B50 (67324752)\n+12559F Extract Zip Spec      14 (20) '2.0'\n+1255A0 Extract OS            00 (0) 'MS-DOS'\n+1255A1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10583F Compression Method    0008 (8) 'Deflated'\n-105841 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-105845 CRC                   00000000 (0)\n-105849 Compressed Size       00000000 (0)\n-10584D Uncompressed Size     00000000 (0)\n-105851 Filename Length       0039 (57)\n-105853 Extra Length          0000 (0)\n-105855 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1255A3 Compression Method    0008 (8) 'Deflated'\n+1255A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1255A9 CRC                   00000000 (0)\n+1255AD Compressed Size       00000000 (0)\n+1255B1 Uncompressed Size     00000000 (0)\n+1255B5 Filename Length       003A (58)\n+1255B7 Extra Length          0000 (0)\n+1255B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x105855: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1255B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10588E PAYLOAD\n+1255F3 PAYLOAD\n \n-105F0F DATA DESCRIPTOR       08074B50 (134695760)\n-105F13 CRC                   3D7F2712 (1031743250)\n-105F17 Compressed Size       00000681 (1665)\n-105F1B Uncompressed Size     000016F4 (5876)\n+125A7D DATA DESCRIPTOR       08074B50 (134695760)\n+125A81 CRC                   E36AF793 (3815438227)\n+125A85 Compressed Size       0000048A (1162)\n+125A89 Uncompressed Size     00000AA2 (2722)\n \n-105F1F LOCAL HEADER #1019    04034B50 (67324752)\n-105F23 Extract Zip Spec      14 (20) '2.0'\n-105F24 Extract OS            00 (0) 'MS-DOS'\n-105F25 General Purpose Flag  0808 (2056)\n+125A8D LOCAL HEADER #1019    04034B50 (67324752)\n+125A91 Extract Zip Spec      14 (20) '2.0'\n+125A92 Extract OS            00 (0) 'MS-DOS'\n+125A93 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-105F27 Compression Method    0008 (8) 'Deflated'\n-105F29 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-105F2D CRC                   00000000 (0)\n-105F31 Compressed Size       00000000 (0)\n-105F35 Uncompressed Size     00000000 (0)\n-105F39 Filename Length       0038 (56)\n-105F3B Extra Length          0000 (0)\n-105F3D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+125A95 Compression Method    0008 (8) 'Deflated'\n+125A97 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+125A9B CRC                   00000000 (0)\n+125A9F Compressed Size       00000000 (0)\n+125AA3 Uncompressed Size     00000000 (0)\n+125AA7 Filename Length       002E (46)\n+125AA9 Extra Length          0000 (0)\n+125AAB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x105F3D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x125AAB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-105F75 PAYLOAD\n+125AD9 PAYLOAD               XX\n \n-1067D4 DATA DESCRIPTOR       08074B50 (134695760)\n-1067D8 CRC                   1A88D275 (445174389)\n-1067DC Compressed Size       0000085F (2143)\n-1067E0 Uncompressed Size     00001CEA (7402)\n+125ADB DATA DESCRIPTOR       08074B50 (134695760)\n+125ADF CRC                   00000000 (0)\n+125AE3 Compressed Size       00000002 (2)\n+125AE7 Uncompressed Size     00000000 (0)\n \n-1067E4 LOCAL HEADER #1020    04034B50 (67324752)\n-1067E8 Extract Zip Spec      14 (20) '2.0'\n-1067E9 Extract OS            00 (0) 'MS-DOS'\n-1067EA General Purpose Flag  0808 (2056)\n+125AEB LOCAL HEADER #1020    04034B50 (67324752)\n+125AEF Extract Zip Spec      14 (20) '2.0'\n+125AF0 Extract OS            00 (0) 'MS-DOS'\n+125AF1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1067EC Compression Method    0008 (8) 'Deflated'\n-1067EE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1067F2 CRC                   00000000 (0)\n-1067F6 Compressed Size       00000000 (0)\n-1067FA Uncompressed Size     00000000 (0)\n-1067FE Filename Length       003E (62)\n-106800 Extra Length          0000 (0)\n-106802 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+125AF3 Compression Method    0008 (8) 'Deflated'\n+125AF5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+125AF9 CRC                   00000000 (0)\n+125AFD Compressed Size       00000000 (0)\n+125B01 Uncompressed Size     00000000 (0)\n+125B05 Filename Length       0035 (53)\n+125B07 Extra Length          0000 (0)\n+125B09 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x106802: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x125B09: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-106840 PAYLOAD\n+125B3E PAYLOAD\n \n-106E9D DATA DESCRIPTOR       08074B50 (134695760)\n-106EA1 CRC                   72A94157 (1923694935)\n-106EA5 Compressed Size       0000065D (1629)\n-106EA9 Uncompressed Size     000017D7 (6103)\n+125EAE DATA DESCRIPTOR       08074B50 (134695760)\n+125EB2 CRC                   53E95BBF (1407802303)\n+125EB6 Compressed Size       00000370 (880)\n+125EBA Uncompressed Size     000007FD (2045)\n \n-106EAD LOCAL HEADER #1021    04034B50 (67324752)\n-106EB1 Extract Zip Spec      14 (20) '2.0'\n-106EB2 Extract OS            00 (0) 'MS-DOS'\n-106EB3 General Purpose Flag  0808 (2056)\n+125EBE LOCAL HEADER #1021    04034B50 (67324752)\n+125EC2 Extract Zip Spec      14 (20) '2.0'\n+125EC3 Extract OS            00 (0) 'MS-DOS'\n+125EC4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-106EB5 Compression Method    0008 (8) 'Deflated'\n-106EB7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-106EBB CRC                   00000000 (0)\n-106EBF Compressed Size       00000000 (0)\n-106EC3 Uncompressed Size     00000000 (0)\n-106EC7 Filename Length       0039 (57)\n-106EC9 Extra Length          0000 (0)\n-106ECB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+125EC6 Compression Method    0008 (8) 'Deflated'\n+125EC8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+125ECC CRC                   00000000 (0)\n+125ED0 Compressed Size       00000000 (0)\n+125ED4 Uncompressed Size     00000000 (0)\n+125ED8 Filename Length       003C (60)\n+125EDA Extra Length          0000 (0)\n+125EDC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x106ECB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x125EDC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-106F04 PAYLOAD\n+125F18 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-10727F DATA DESCRIPTOR       08074B50 (134695760)\n-107283 CRC                   B2448F97 (2990837655)\n-107287 Compressed Size       0000037B (891)\n-10728B Uncompressed Size     00000CB7 (3255)\n+125F5A DATA DESCRIPTOR       08074B50 (134695760)\n+125F5E CRC                   47EB69BB (1206610363)\n+125F62 Compressed Size       00000042 (66)\n+125F66 Uncompressed Size     00000044 (68)\n \n-10728F LOCAL HEADER #1022    04034B50 (67324752)\n-107293 Extract Zip Spec      14 (20) '2.0'\n-107294 Extract OS            00 (0) 'MS-DOS'\n-107295 General Purpose Flag  0808 (2056)\n+125F6A LOCAL HEADER #1022    04034B50 (67324752)\n+125F6E Extract Zip Spec      14 (20) '2.0'\n+125F6F Extract OS            00 (0) 'MS-DOS'\n+125F70 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-107297 Compression Method    0008 (8) 'Deflated'\n-107299 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10729D CRC                   00000000 (0)\n-1072A1 Compressed Size       00000000 (0)\n-1072A5 Uncompressed Size     00000000 (0)\n-1072A9 Filename Length       0038 (56)\n-1072AB Extra Length          0000 (0)\n-1072AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+125F72 Compression Method    0008 (8) 'Deflated'\n+125F74 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+125F78 CRC                   00000000 (0)\n+125F7C Compressed Size       00000000 (0)\n+125F80 Uncompressed Size     00000000 (0)\n+125F84 Filename Length       0026 (38)\n+125F86 Extra Length          0000 (0)\n+125F88 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1072AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x125F88: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1072E5 PAYLOAD\n+125FAE PAYLOAD               XX\n \n-10788D DATA DESCRIPTOR       08074B50 (134695760)\n-107891 CRC                   3C17A7B5 (1008183221)\n-107895 Compressed Size       000005A8 (1448)\n-107899 Uncompressed Size     0000107D (4221)\n+125FB0 DATA DESCRIPTOR       08074B50 (134695760)\n+125FB4 CRC                   00000000 (0)\n+125FB8 Compressed Size       00000002 (2)\n+125FBC Uncompressed Size     00000000 (0)\n \n-10789D LOCAL HEADER #1023    04034B50 (67324752)\n-1078A1 Extract Zip Spec      14 (20) '2.0'\n-1078A2 Extract OS            00 (0) 'MS-DOS'\n-1078A3 General Purpose Flag  0808 (2056)\n+125FC0 LOCAL HEADER #1023    04034B50 (67324752)\n+125FC4 Extract Zip Spec      14 (20) '2.0'\n+125FC5 Extract OS            00 (0) 'MS-DOS'\n+125FC6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1078A5 Compression Method    0008 (8) 'Deflated'\n-1078A7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1078AB CRC                   00000000 (0)\n-1078AF Compressed Size       00000000 (0)\n-1078B3 Uncompressed Size     00000000 (0)\n-1078B7 Filename Length       003D (61)\n-1078B9 Extra Length          0000 (0)\n-1078BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+125FC8 Compression Method    0008 (8) 'Deflated'\n+125FCA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+125FCE CRC                   00000000 (0)\n+125FD2 Compressed Size       00000000 (0)\n+125FD6 Uncompressed Size     00000000 (0)\n+125FDA Filename Length       0034 (52)\n+125FDC Extra Length          0000 (0)\n+125FDE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1078BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x125FDE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1078F8 PAYLOAD\n+126012 PAYLOAD\n \n-107BA5 DATA DESCRIPTOR       08074B50 (134695760)\n-107BA9 CRC                   242C94A2 (606901410)\n-107BAD Compressed Size       000002AD (685)\n-107BB1 Uncompressed Size     0000062C (1580)\n+12628F DATA DESCRIPTOR       08074B50 (134695760)\n+126293 CRC                   626BA0DE (1651220702)\n+126297 Compressed Size       0000027D (637)\n+12629B Uncompressed Size     000004AB (1195)\n \n-107BB5 LOCAL HEADER #1024    04034B50 (67324752)\n-107BB9 Extract Zip Spec      14 (20) '2.0'\n-107BBA Extract OS            00 (0) 'MS-DOS'\n-107BBB General Purpose Flag  0808 (2056)\n+12629F LOCAL HEADER #1024    04034B50 (67324752)\n+1262A3 Extract Zip Spec      14 (20) '2.0'\n+1262A4 Extract OS            00 (0) 'MS-DOS'\n+1262A5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-107BBD Compression Method    0008 (8) 'Deflated'\n-107BBF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-107BC3 CRC                   00000000 (0)\n-107BC7 Compressed Size       00000000 (0)\n-107BCB Uncompressed Size     00000000 (0)\n-107BCF Filename Length       002C (44)\n-107BD1 Extra Length          0000 (0)\n-107BD3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1262A7 Compression Method    0008 (8) 'Deflated'\n+1262A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1262AD CRC                   00000000 (0)\n+1262B1 Compressed Size       00000000 (0)\n+1262B5 Uncompressed Size     00000000 (0)\n+1262B9 Filename Length       004B (75)\n+1262BB Extra Length          0000 (0)\n+1262BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x107BD3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1262BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-107BFF PAYLOAD               XX\n+126308 PAYLOAD\n \n-107C01 DATA DESCRIPTOR       08074B50 (134695760)\n-107C05 CRC                   00000000 (0)\n-107C09 Compressed Size       00000002 (2)\n-107C0D Uncompressed Size     00000000 (0)\n+12660C DATA DESCRIPTOR       08074B50 (134695760)\n+126610 CRC                   BA6404A6 (3127116966)\n+126614 Compressed Size       00000304 (772)\n+126618 Uncompressed Size     0000065B (1627)\n \n-107C11 LOCAL HEADER #1025    04034B50 (67324752)\n-107C15 Extract Zip Spec      14 (20) '2.0'\n-107C16 Extract OS            00 (0) 'MS-DOS'\n-107C17 General Purpose Flag  0808 (2056)\n+12661C LOCAL HEADER #1025    04034B50 (67324752)\n+126620 Extract Zip Spec      14 (20) '2.0'\n+126621 Extract OS            00 (0) 'MS-DOS'\n+126622 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-107C19 Compression Method    0008 (8) 'Deflated'\n-107C1B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-107C1F CRC                   00000000 (0)\n-107C23 Compressed Size       00000000 (0)\n-107C27 Uncompressed Size     00000000 (0)\n-107C2B Filename Length       003F (63)\n-107C2D Extra Length          0000 (0)\n-107C2F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+126624 Compression Method    0008 (8) 'Deflated'\n+126626 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12662A CRC                   00000000 (0)\n+12662E Compressed Size       00000000 (0)\n+126632 Uncompressed Size     00000000 (0)\n+126636 Filename Length       003A (58)\n+126638 Extra Length          0000 (0)\n+12663A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x107C2F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12663A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-107C6E PAYLOAD\n+126674 PAYLOAD\n \n-108377 DATA DESCRIPTOR       08074B50 (134695760)\n-10837B CRC                   56951E3F (1452613183)\n-10837F Compressed Size       00000709 (1801)\n-108383 Uncompressed Size     0000197F (6527)\n+12700B DATA DESCRIPTOR       08074B50 (134695760)\n+12700F CRC                   ED0697F4 (3976632308)\n+127013 Compressed Size       00000997 (2455)\n+127017 Uncompressed Size     000022BD (8893)\n \n-108387 LOCAL HEADER #1026    04034B50 (67324752)\n-10838B Extract Zip Spec      14 (20) '2.0'\n-10838C Extract OS            00 (0) 'MS-DOS'\n-10838D General Purpose Flag  0808 (2056)\n+12701B LOCAL HEADER #1026    04034B50 (67324752)\n+12701F Extract Zip Spec      14 (20) '2.0'\n+127020 Extract OS            00 (0) 'MS-DOS'\n+127021 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10838F Compression Method    0008 (8) 'Deflated'\n-108391 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-108395 CRC                   00000000 (0)\n-108399 Compressed Size       00000000 (0)\n-10839D Uncompressed Size     00000000 (0)\n-1083A1 Filename Length       003E (62)\n-1083A3 Extra Length          0000 (0)\n-1083A5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+127023 Compression Method    0008 (8) 'Deflated'\n+127025 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+127029 CRC                   00000000 (0)\n+12702D Compressed Size       00000000 (0)\n+127031 Uncompressed Size     00000000 (0)\n+127035 Filename Length       003F (63)\n+127037 Extra Length          0000 (0)\n+127039 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1083A5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x127039: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1083E3 PAYLOAD\n+127078 PAYLOAD\n \n-108991 DATA DESCRIPTOR       08074B50 (134695760)\n-108995 CRC                   42023036 (1107439670)\n-108999 Compressed Size       000005AE (1454)\n-10899D Uncompressed Size     000010C6 (4294)\n+1274AB DATA DESCRIPTOR       08074B50 (134695760)\n+1274AF CRC                   D14D14C7 (3511489735)\n+1274B3 Compressed Size       00000433 (1075)\n+1274B7 Uncompressed Size     00000CF4 (3316)\n \n-1089A1 LOCAL HEADER #1027    04034B50 (67324752)\n-1089A5 Extract Zip Spec      14 (20) '2.0'\n-1089A6 Extract OS            00 (0) 'MS-DOS'\n-1089A7 General Purpose Flag  0808 (2056)\n+1274BB LOCAL HEADER #1027    04034B50 (67324752)\n+1274BF Extract Zip Spec      14 (20) '2.0'\n+1274C0 Extract OS            00 (0) 'MS-DOS'\n+1274C1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1089A9 Compression Method    0008 (8) 'Deflated'\n-1089AB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1089AF CRC                   00000000 (0)\n-1089B3 Compressed Size       00000000 (0)\n-1089B7 Uncompressed Size     00000000 (0)\n-1089BB Filename Length       0044 (68)\n-1089BD Extra Length          0000 (0)\n-1089BF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1274C3 Compression Method    0008 (8) 'Deflated'\n+1274C5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1274C9 CRC                   00000000 (0)\n+1274CD Compressed Size       00000000 (0)\n+1274D1 Uncompressed Size     00000000 (0)\n+1274D5 Filename Length       0046 (70)\n+1274D7 Extra Length          0000 (0)\n+1274D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1089BF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1274D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-108A03 PAYLOAD\n+12751F PAYLOAD\n \n-10908B DATA DESCRIPTOR       08074B50 (134695760)\n-10908F CRC                   4DD0FDAC (1305542060)\n-109093 Compressed Size       00000688 (1672)\n-109097 Uncompressed Size     00001750 (5968)\n+1278E1 DATA DESCRIPTOR       08074B50 (134695760)\n+1278E5 CRC                   5C6A1FAA (1550458794)\n+1278E9 Compressed Size       000003C2 (962)\n+1278ED Uncompressed Size     0000095F (2399)\n \n-10909B LOCAL HEADER #1028    04034B50 (67324752)\n-10909F Extract Zip Spec      14 (20) '2.0'\n-1090A0 Extract OS            00 (0) 'MS-DOS'\n-1090A1 General Purpose Flag  0808 (2056)\n+1278F1 LOCAL HEADER #1028    04034B50 (67324752)\n+1278F5 Extract Zip Spec      14 (20) '2.0'\n+1278F6 Extract OS            00 (0) 'MS-DOS'\n+1278F7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1090A3 Compression Method    0008 (8) 'Deflated'\n-1090A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1090A9 CRC                   00000000 (0)\n-1090AD Compressed Size       00000000 (0)\n-1090B1 Uncompressed Size     00000000 (0)\n-1090B5 Filename Length       003F (63)\n-1090B7 Extra Length          0000 (0)\n-1090B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1278F9 Compression Method    0008 (8) 'Deflated'\n+1278FB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1278FF CRC                   00000000 (0)\n+127903 Compressed Size       00000000 (0)\n+127907 Uncompressed Size     00000000 (0)\n+12790B Filename Length       0032 (50)\n+12790D Extra Length          0000 (0)\n+12790F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1090B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12790F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1090F8 PAYLOAD\n+127941 PAYLOAD               XX\n \n-10951C DATA DESCRIPTOR       08074B50 (134695760)\n-109520 CRC                   EC29A626 (3962152486)\n-109524 Compressed Size       00000424 (1060)\n-109528 Uncompressed Size     000011CA (4554)\n+127943 DATA DESCRIPTOR       08074B50 (134695760)\n+127947 CRC                   00000000 (0)\n+12794B Compressed Size       00000002 (2)\n+12794F Uncompressed Size     00000000 (0)\n \n-10952C LOCAL HEADER #1029    04034B50 (67324752)\n-109530 Extract Zip Spec      14 (20) '2.0'\n-109531 Extract OS            00 (0) 'MS-DOS'\n-109532 General Purpose Flag  0808 (2056)\n+127953 LOCAL HEADER #1029    04034B50 (67324752)\n+127957 Extract Zip Spec      14 (20) '2.0'\n+127958 Extract OS            00 (0) 'MS-DOS'\n+127959 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-109534 Compression Method    0008 (8) 'Deflated'\n-109536 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10953A CRC                   00000000 (0)\n-10953E Compressed Size       00000000 (0)\n-109542 Uncompressed Size     00000000 (0)\n-109546 Filename Length       003E (62)\n-109548 Extra Length          0000 (0)\n-10954A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12795B Compression Method    0008 (8) 'Deflated'\n+12795D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+127961 CRC                   00000000 (0)\n+127965 Compressed Size       00000000 (0)\n+127969 Uncompressed Size     00000000 (0)\n+12796D Filename Length       0039 (57)\n+12796F Extra Length          0000 (0)\n+127971 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10954A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x127971: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-109588 PAYLOAD\n+1279AA PAYLOAD\n \n-109BF2 DATA DESCRIPTOR       08074B50 (134695760)\n-109BF6 CRC                   253B482C (624642092)\n-109BFA Compressed Size       0000066A (1642)\n-109BFE Uncompressed Size     000014A3 (5283)\n+127D6D DATA DESCRIPTOR       08074B50 (134695760)\n+127D71 CRC                   19FB740D (435909645)\n+127D75 Compressed Size       000003C3 (963)\n+127D79 Uncompressed Size     00000A8E (2702)\n \n-109C02 LOCAL HEADER #1030    04034B50 (67324752)\n-109C06 Extract Zip Spec      14 (20) '2.0'\n-109C07 Extract OS            00 (0) 'MS-DOS'\n-109C08 General Purpose Flag  0808 (2056)\n+127D7D LOCAL HEADER #1030    04034B50 (67324752)\n+127D81 Extract Zip Spec      14 (20) '2.0'\n+127D82 Extract OS            00 (0) 'MS-DOS'\n+127D83 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-109C0A Compression Method    0008 (8) 'Deflated'\n-109C0C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-109C10 CRC                   00000000 (0)\n-109C14 Compressed Size       00000000 (0)\n-109C18 Uncompressed Size     00000000 (0)\n-109C1C Filename Length       0043 (67)\n-109C1E Extra Length          0000 (0)\n-109C20 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+127D85 Compression Method    0008 (8) 'Deflated'\n+127D87 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+127D8B CRC                   00000000 (0)\n+127D8F Compressed Size       00000000 (0)\n+127D93 Uncompressed Size     00000000 (0)\n+127D97 Filename Length       0040 (64)\n+127D99 Extra Length          0000 (0)\n+127D9B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x109C20: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x127D9B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-109C63 PAYLOAD\n+127DDB PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-109F1D DATA DESCRIPTOR       08074B50 (134695760)\n-109F21 CRC                   117073F8 (292582392)\n-109F25 Compressed Size       000002BA (698)\n-109F29 Uncompressed Size     0000065C (1628)\n+127E21 DATA DESCRIPTOR       08074B50 (134695760)\n+127E25 CRC                   AB278FDB (2871496667)\n+127E29 Compressed Size       00000046 (70)\n+127E2D Uncompressed Size     00000048 (72)\n \n-109F2D LOCAL HEADER #1031    04034B50 (67324752)\n-109F31 Extract Zip Spec      14 (20) '2.0'\n-109F32 Extract OS            00 (0) 'MS-DOS'\n-109F33 General Purpose Flag  0808 (2056)\n+127E31 LOCAL HEADER #1031    04034B50 (67324752)\n+127E35 Extract Zip Spec      14 (20) '2.0'\n+127E36 Extract OS            00 (0) 'MS-DOS'\n+127E37 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-109F35 Compression Method    0008 (8) 'Deflated'\n-109F37 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-109F3B CRC                   00000000 (0)\n-109F3F Compressed Size       00000000 (0)\n-109F43 Uncompressed Size     00000000 (0)\n-109F47 Filename Length       001E (30)\n-109F49 Extra Length          0000 (0)\n-109F4B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+127E39 Compression Method    0008 (8) 'Deflated'\n+127E3B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+127E3F CRC                   00000000 (0)\n+127E43 Compressed Size       00000000 (0)\n+127E47 Uncompressed Size     00000000 (0)\n+127E4B Filename Length       0029 (41)\n+127E4D Extra Length          0000 (0)\n+127E4F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x109F4B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x127E4F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-109F69 PAYLOAD               XX\n+127E78 PAYLOAD               XX\n \n-109F6B DATA DESCRIPTOR       08074B50 (134695760)\n-109F6F CRC                   00000000 (0)\n-109F73 Compressed Size       00000002 (2)\n-109F77 Uncompressed Size     00000000 (0)\n+127E7A DATA DESCRIPTOR       08074B50 (134695760)\n+127E7E CRC                   00000000 (0)\n+127E82 Compressed Size       00000002 (2)\n+127E86 Uncompressed Size     00000000 (0)\n \n-109F7B LOCAL HEADER #1032    04034B50 (67324752)\n-109F7F Extract Zip Spec      14 (20) '2.0'\n-109F80 Extract OS            00 (0) 'MS-DOS'\n-109F81 General Purpose Flag  0808 (2056)\n+127E8A LOCAL HEADER #1032    04034B50 (67324752)\n+127E8E Extract Zip Spec      14 (20) '2.0'\n+127E8F Extract OS            00 (0) 'MS-DOS'\n+127E90 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-109F83 Compression Method    0008 (8) 'Deflated'\n-109F85 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-109F89 CRC                   00000000 (0)\n-109F8D Compressed Size       00000000 (0)\n-109F91 Uncompressed Size     00000000 (0)\n-109F95 Filename Length       0028 (40)\n-109F97 Extra Length          0000 (0)\n-109F99 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+127E92 Compression Method    0008 (8) 'Deflated'\n+127E94 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+127E98 CRC                   00000000 (0)\n+127E9C Compressed Size       00000000 (0)\n+127EA0 Uncompressed Size     00000000 (0)\n+127EA4 Filename Length       0040 (64)\n+127EA6 Extra Length          0000 (0)\n+127EA8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x109F99: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x127EA8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-109FC1 PAYLOAD\n+127EE8 PAYLOAD\n \n-10A2A2 DATA DESCRIPTOR       08074B50 (134695760)\n-10A2A6 CRC                   22156101 (571826433)\n-10A2AA Compressed Size       000002E1 (737)\n-10A2AE Uncompressed Size     00000645 (1605)\n+128892 DATA DESCRIPTOR       08074B50 (134695760)\n+128896 CRC                   263D0E7B (641535611)\n+12889A Compressed Size       000009AA (2474)\n+12889E Uncompressed Size     000023BC (9148)\n \n-10A2B2 LOCAL HEADER #1033    04034B50 (67324752)\n-10A2B6 Extract Zip Spec      14 (20) '2.0'\n-10A2B7 Extract OS            00 (0) 'MS-DOS'\n-10A2B8 General Purpose Flag  0808 (2056)\n+1288A2 LOCAL HEADER #1033    04034B50 (67324752)\n+1288A6 Extract Zip Spec      14 (20) '2.0'\n+1288A7 Extract OS            00 (0) 'MS-DOS'\n+1288A8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10A2BA Compression Method    0008 (8) 'Deflated'\n-10A2BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10A2C0 CRC                   00000000 (0)\n-10A2C4 Compressed Size       00000000 (0)\n-10A2C8 Uncompressed Size     00000000 (0)\n-10A2CC Filename Length       002C (44)\n-10A2CE Extra Length          0000 (0)\n-10A2D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1288AA Compression Method    0008 (8) 'Deflated'\n+1288AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1288B0 CRC                   00000000 (0)\n+1288B4 Compressed Size       00000000 (0)\n+1288B8 Uncompressed Size     00000000 (0)\n+1288BC Filename Length       0035 (53)\n+1288BE Extra Length          0000 (0)\n+1288C0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10A2D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1288C0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10A2FC PAYLOAD\n+1288F5 PAYLOAD               XX\n \n-10A5A9 DATA DESCRIPTOR       08074B50 (134695760)\n-10A5AD CRC                   5BDCE546 (1541203270)\n-10A5B1 Compressed Size       000002AD (685)\n-10A5B5 Uncompressed Size     00000530 (1328)\n+1288F7 DATA DESCRIPTOR       08074B50 (134695760)\n+1288FB CRC                   00000000 (0)\n+1288FF Compressed Size       00000002 (2)\n+128903 Uncompressed Size     00000000 (0)\n \n-10A5B9 LOCAL HEADER #1034    04034B50 (67324752)\n-10A5BD Extract Zip Spec      14 (20) '2.0'\n-10A5BE Extract OS            00 (0) 'MS-DOS'\n-10A5BF General Purpose Flag  0808 (2056)\n+128907 LOCAL HEADER #1034    04034B50 (67324752)\n+12890B Extract Zip Spec      14 (20) '2.0'\n+12890C Extract OS            00 (0) 'MS-DOS'\n+12890D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10A5C1 Compression Method    0008 (8) 'Deflated'\n-10A5C3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10A5C7 CRC                   00000000 (0)\n-10A5CB Compressed Size       00000000 (0)\n-10A5CF Uncompressed Size     00000000 (0)\n-10A5D3 Filename Length       002D (45)\n-10A5D5 Extra Length          0000 (0)\n-10A5D7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12890F Compression Method    0008 (8) 'Deflated'\n+128911 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+128915 CRC                   00000000 (0)\n+128919 Compressed Size       00000000 (0)\n+12891D Uncompressed Size     00000000 (0)\n+128921 Filename Length       003C (60)\n+128923 Extra Length          0000 (0)\n+128925 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10A5D7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x128925: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10A604 PAYLOAD\n+128961 PAYLOAD\n \n-10A923 DATA DESCRIPTOR       08074B50 (134695760)\n-10A927 CRC                   86A6B236 (2259071542)\n-10A92B Compressed Size       0000031F (799)\n-10A92F Uncompressed Size     0000078D (1933)\n+128D46 DATA DESCRIPTOR       08074B50 (134695760)\n+128D4A CRC                   42F6A52E (1123460398)\n+128D4E Compressed Size       000003E5 (997)\n+128D52 Uncompressed Size     00000C1F (3103)\n \n-10A933 LOCAL HEADER #1035    04034B50 (67324752)\n-10A937 Extract Zip Spec      14 (20) '2.0'\n-10A938 Extract OS            00 (0) 'MS-DOS'\n-10A939 General Purpose Flag  0808 (2056)\n+128D56 LOCAL HEADER #1035    04034B50 (67324752)\n+128D5A Extract Zip Spec      14 (20) '2.0'\n+128D5B Extract OS            00 (0) 'MS-DOS'\n+128D5C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10A93B Compression Method    0008 (8) 'Deflated'\n-10A93D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10A941 CRC                   00000000 (0)\n-10A945 Compressed Size       00000000 (0)\n-10A949 Uncompressed Size     00000000 (0)\n-10A94D Filename Length       0027 (39)\n-10A94F Extra Length          0000 (0)\n-10A951 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+128D5E Compression Method    0008 (8) 'Deflated'\n+128D60 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+128D64 CRC                   00000000 (0)\n+128D68 Compressed Size       00000000 (0)\n+128D6C Uncompressed Size     00000000 (0)\n+128D70 Filename Length       0043 (67)\n+128D72 Extra Length          0000 (0)\n+128D74 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10A951: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x128D74: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10A978 PAYLOAD\n+128DB7 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-10AC01 DATA DESCRIPTOR       08074B50 (134695760)\n-10AC05 CRC                   1B4BCF89 (457953161)\n-10AC09 Compressed Size       00000289 (649)\n-10AC0D Uncompressed Size     000004F3 (1267)\n+128E00 DATA DESCRIPTOR       08074B50 (134695760)\n+128E04 CRC                   0B8D3BF2 (193805298)\n+128E08 Compressed Size       00000049 (73)\n+128E0C Uncompressed Size     0000004B (75)\n \n-10AC11 LOCAL HEADER #1036    04034B50 (67324752)\n-10AC15 Extract Zip Spec      14 (20) '2.0'\n-10AC16 Extract OS            00 (0) 'MS-DOS'\n-10AC17 General Purpose Flag  0808 (2056)\n+128E10 LOCAL HEADER #1036    04034B50 (67324752)\n+128E14 Extract Zip Spec      14 (20) '2.0'\n+128E15 Extract OS            00 (0) 'MS-DOS'\n+128E16 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10AC19 Compression Method    0008 (8) 'Deflated'\n-10AC1B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10AC1F CRC                   00000000 (0)\n-10AC23 Compressed Size       00000000 (0)\n-10AC27 Uncompressed Size     00000000 (0)\n-10AC2B Filename Length       0027 (39)\n-10AC2D Extra Length          0000 (0)\n-10AC2F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+128E18 Compression Method    0008 (8) 'Deflated'\n+128E1A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+128E1E CRC                   00000000 (0)\n+128E22 Compressed Size       00000000 (0)\n+128E26 Uncompressed Size     00000000 (0)\n+128E2A Filename Length       0025 (37)\n+128E2C Extra Length          0000 (0)\n+128E2E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10AC2F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x128E2E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10AC56 PAYLOAD               XX\n+128E53 PAYLOAD               XX\n \n-10AC58 DATA DESCRIPTOR       08074B50 (134695760)\n-10AC5C CRC                   00000000 (0)\n-10AC60 Compressed Size       00000002 (2)\n-10AC64 Uncompressed Size     00000000 (0)\n+128E55 DATA DESCRIPTOR       08074B50 (134695760)\n+128E59 CRC                   00000000 (0)\n+128E5D Compressed Size       00000002 (2)\n+128E61 Uncompressed Size     00000000 (0)\n \n-10AC68 LOCAL HEADER #1037    04034B50 (67324752)\n-10AC6C Extract Zip Spec      14 (20) '2.0'\n-10AC6D Extract OS            00 (0) 'MS-DOS'\n-10AC6E General Purpose Flag  0808 (2056)\n+128E65 LOCAL HEADER #1037    04034B50 (67324752)\n+128E69 Extract Zip Spec      14 (20) '2.0'\n+128E6A Extract OS            00 (0) 'MS-DOS'\n+128E6B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10AC70 Compression Method    0008 (8) 'Deflated'\n-10AC72 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10AC76 CRC                   00000000 (0)\n-10AC7A Compressed Size       00000000 (0)\n-10AC7E Uncompressed Size     00000000 (0)\n-10AC82 Filename Length       0039 (57)\n-10AC84 Extra Length          0000 (0)\n-10AC86 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+128E6D Compression Method    0008 (8) 'Deflated'\n+128E6F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+128E73 CRC                   00000000 (0)\n+128E77 Compressed Size       00000000 (0)\n+128E7B Uncompressed Size     00000000 (0)\n+128E7F Filename Length       003C (60)\n+128E81 Extra Length          0000 (0)\n+128E83 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10AC86: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x128E83: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10ACBF PAYLOAD\n+128EBF PAYLOAD\n \n-10AF37 DATA DESCRIPTOR       08074B50 (134695760)\n-10AF3B CRC                   DDB2647D (3719455869)\n-10AF3F Compressed Size       00000278 (632)\n-10AF43 Uncompressed Size     00000501 (1281)\n+129153 DATA DESCRIPTOR       08074B50 (134695760)\n+129157 CRC                   63A56C0E (1671785486)\n+12915B Compressed Size       00000294 (660)\n+12915F Uncompressed Size     000004E2 (1250)\n \n-10AF47 LOCAL HEADER #1038    04034B50 (67324752)\n-10AF4B Extract Zip Spec      14 (20) '2.0'\n-10AF4C Extract OS            00 (0) 'MS-DOS'\n-10AF4D General Purpose Flag  0808 (2056)\n+129163 LOCAL HEADER #1038    04034B50 (67324752)\n+129167 Extract Zip Spec      14 (20) '2.0'\n+129168 Extract OS            00 (0) 'MS-DOS'\n+129169 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10AF4F Compression Method    0008 (8) 'Deflated'\n-10AF51 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10AF55 CRC                   00000000 (0)\n-10AF59 Compressed Size       00000000 (0)\n-10AF5D Uncompressed Size     00000000 (0)\n-10AF61 Filename Length       003D (61)\n-10AF63 Extra Length          0000 (0)\n-10AF65 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12916B Compression Method    0008 (8) 'Deflated'\n+12916D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+129171 CRC                   00000000 (0)\n+129175 Compressed Size       00000000 (0)\n+129179 Uncompressed Size     00000000 (0)\n+12917D Filename Length       0041 (65)\n+12917F Extra Length          0000 (0)\n+129181 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10AF65: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x129181: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10AFA2 PAYLOAD\n+1291C2 PAYLOAD\n \n-10B209 DATA DESCRIPTOR       08074B50 (134695760)\n-10B20D CRC                   5D9DDBCF (1570626511)\n-10B211 Compressed Size       00000267 (615)\n-10B215 Uncompressed Size     000004A5 (1189)\n+12947E DATA DESCRIPTOR       08074B50 (134695760)\n+129482 CRC                   E0FB0689 (3774547593)\n+129486 Compressed Size       000002BC (700)\n+12948A Uncompressed Size     000005C0 (1472)\n \n-10B219 LOCAL HEADER #1039    04034B50 (67324752)\n-10B21D Extract Zip Spec      14 (20) '2.0'\n-10B21E Extract OS            00 (0) 'MS-DOS'\n-10B21F General Purpose Flag  0808 (2056)\n+12948E LOCAL HEADER #1039    04034B50 (67324752)\n+129492 Extract Zip Spec      14 (20) '2.0'\n+129493 Extract OS            00 (0) 'MS-DOS'\n+129494 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10B221 Compression Method    0008 (8) 'Deflated'\n-10B223 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10B227 CRC                   00000000 (0)\n-10B22B Compressed Size       00000000 (0)\n-10B22F Uncompressed Size     00000000 (0)\n-10B233 Filename Length       003E (62)\n-10B235 Extra Length          0000 (0)\n-10B237 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+129496 Compression Method    0008 (8) 'Deflated'\n+129498 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12949C CRC                   00000000 (0)\n+1294A0 Compressed Size       00000000 (0)\n+1294A4 Uncompressed Size     00000000 (0)\n+1294A8 Filename Length       0042 (66)\n+1294AA Extra Length          0000 (0)\n+1294AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10B237: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1294AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10B275 PAYLOAD\n+1294EE PAYLOAD\n \n-10B563 DATA DESCRIPTOR       08074B50 (134695760)\n-10B567 CRC                   4453948E (1146328206)\n-10B56B Compressed Size       000002EE (750)\n-10B56F Uncompressed Size     0000076E (1902)\n+1297A8 DATA DESCRIPTOR       08074B50 (134695760)\n+1297AC CRC                   45D210E4 (1171394788)\n+1297B0 Compressed Size       000002BA (698)\n+1297B4 Uncompressed Size     000005CE (1486)\n \n-10B573 LOCAL HEADER #1040    04034B50 (67324752)\n-10B577 Extract Zip Spec      14 (20) '2.0'\n-10B578 Extract OS            00 (0) 'MS-DOS'\n-10B579 General Purpose Flag  0808 (2056)\n+1297B8 LOCAL HEADER #1040    04034B50 (67324752)\n+1297BC Extract Zip Spec      14 (20) '2.0'\n+1297BD Extract OS            00 (0) 'MS-DOS'\n+1297BE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10B57B Compression Method    0008 (8) 'Deflated'\n-10B57D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10B581 CRC                   00000000 (0)\n-10B585 Compressed Size       00000000 (0)\n-10B589 Uncompressed Size     00000000 (0)\n-10B58D Filename Length       0038 (56)\n-10B58F Extra Length          0000 (0)\n-10B591 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1297C0 Compression Method    0008 (8) 'Deflated'\n+1297C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1297C6 CRC                   00000000 (0)\n+1297CA Compressed Size       00000000 (0)\n+1297CE Uncompressed Size     00000000 (0)\n+1297D2 Filename Length       0035 (53)\n+1297D4 Extra Length          0000 (0)\n+1297D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10B591: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1297D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10B5C9 PAYLOAD\n+12980B PAYLOAD\n \n-10B7F4 DATA DESCRIPTOR       08074B50 (134695760)\n-10B7F8 CRC                   E8A94DD9 (3903409625)\n-10B7FC Compressed Size       0000022B (555)\n-10B800 Uncompressed Size     00000420 (1056)\n+12AA04 DATA DESCRIPTOR       08074B50 (134695760)\n+12AA08 CRC                   F30965C2 (4077479362)\n+12AA0C Compressed Size       000011F9 (4601)\n+12AA10 Uncompressed Size     0000630A (25354)\n \n-10B804 LOCAL HEADER #1041    04034B50 (67324752)\n-10B808 Extract Zip Spec      14 (20) '2.0'\n-10B809 Extract OS            00 (0) 'MS-DOS'\n-10B80A General Purpose Flag  0808 (2056)\n+12AA14 LOCAL HEADER #1041    04034B50 (67324752)\n+12AA18 Extract Zip Spec      14 (20) '2.0'\n+12AA19 Extract OS            00 (0) 'MS-DOS'\n+12AA1A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10B80C Compression Method    0008 (8) 'Deflated'\n-10B80E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10B812 CRC                   00000000 (0)\n-10B816 Compressed Size       00000000 (0)\n-10B81A Uncompressed Size     00000000 (0)\n-10B81E Filename Length       002F (47)\n-10B820 Extra Length          0000 (0)\n-10B822 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12AA1C Compression Method    0008 (8) 'Deflated'\n+12AA1E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12AA22 CRC                   00000000 (0)\n+12AA26 Compressed Size       00000000 (0)\n+12AA2A Uncompressed Size     00000000 (0)\n+12AA2E Filename Length       0039 (57)\n+12AA30 Extra Length          0000 (0)\n+12AA32 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10B822: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12AA32: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10B851 PAYLOAD               XX\n+12AA6B PAYLOAD\n \n-10B853 DATA DESCRIPTOR       08074B50 (134695760)\n-10B857 CRC                   00000000 (0)\n-10B85B Compressed Size       00000002 (2)\n-10B85F Uncompressed Size     00000000 (0)\n+12AD28 DATA DESCRIPTOR       08074B50 (134695760)\n+12AD2C CRC                   046733D7 (73872343)\n+12AD30 Compressed Size       000002BD (701)\n+12AD34 Uncompressed Size     00000548 (1352)\n \n-10B863 LOCAL HEADER #1042    04034B50 (67324752)\n-10B867 Extract Zip Spec      14 (20) '2.0'\n-10B868 Extract OS            00 (0) 'MS-DOS'\n-10B869 General Purpose Flag  0808 (2056)\n+12AD38 LOCAL HEADER #1042    04034B50 (67324752)\n+12AD3C Extract Zip Spec      14 (20) '2.0'\n+12AD3D Extract OS            00 (0) 'MS-DOS'\n+12AD3E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10B86B Compression Method    0008 (8) 'Deflated'\n-10B86D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10B871 CRC                   00000000 (0)\n-10B875 Compressed Size       00000000 (0)\n-10B879 Uncompressed Size     00000000 (0)\n-10B87D Filename Length       0049 (73)\n-10B87F Extra Length          0000 (0)\n-10B881 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12AD40 Compression Method    0008 (8) 'Deflated'\n+12AD42 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12AD46 CRC                   00000000 (0)\n+12AD4A Compressed Size       00000000 (0)\n+12AD4E Uncompressed Size     00000000 (0)\n+12AD52 Filename Length       0037 (55)\n+12AD54 Extra Length          0000 (0)\n+12AD56 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10B881: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12AD56: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10B8CA PAYLOAD\n+12AD8D PAYLOAD\n \n-10BDDE DATA DESCRIPTOR       08074B50 (134695760)\n-10BDE2 CRC                   C68A15C0 (3330938304)\n-10BDE6 Compressed Size       00000514 (1300)\n-10BDEA Uncompressed Size     000011A2 (4514)\n+12B59B DATA DESCRIPTOR       08074B50 (134695760)\n+12B59F CRC                   0C743F4B (208944971)\n+12B5A3 Compressed Size       0000080E (2062)\n+12B5A7 Uncompressed Size     00001883 (6275)\n \n-10BDEE LOCAL HEADER #1043    04034B50 (67324752)\n-10BDF2 Extract Zip Spec      14 (20) '2.0'\n-10BDF3 Extract OS            00 (0) 'MS-DOS'\n-10BDF4 General Purpose Flag  0808 (2056)\n+12B5AB LOCAL HEADER #1043    04034B50 (67324752)\n+12B5AF Extract Zip Spec      14 (20) '2.0'\n+12B5B0 Extract OS            00 (0) 'MS-DOS'\n+12B5B1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10BDF6 Compression Method    0008 (8) 'Deflated'\n-10BDF8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10BDFC CRC                   00000000 (0)\n-10BE00 Compressed Size       00000000 (0)\n-10BE04 Uncompressed Size     00000000 (0)\n-10BE08 Filename Length       0046 (70)\n-10BE0A Extra Length          0000 (0)\n-10BE0C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12B5B3 Compression Method    0008 (8) 'Deflated'\n+12B5B5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12B5B9 CRC                   00000000 (0)\n+12B5BD Compressed Size       00000000 (0)\n+12B5C1 Uncompressed Size     00000000 (0)\n+12B5C5 Filename Length       003B (59)\n+12B5C7 Extra Length          0000 (0)\n+12B5C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10BE0C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12B5C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10BE52 PAYLOAD\n+12B604 PAYLOAD\n \n-10C402 DATA DESCRIPTOR       08074B50 (134695760)\n-10C406 CRC                   27A7C8DD (665307357)\n-10C40A Compressed Size       000005B0 (1456)\n-10C40E Uncompressed Size     00001334 (4916)\n+12BB62 DATA DESCRIPTOR       08074B50 (134695760)\n+12BB66 CRC                   ADE79375 (2917634933)\n+12BB6A Compressed Size       0000055E (1374)\n+12BB6E Uncompressed Size     00000F93 (3987)\n \n-10C412 LOCAL HEADER #1044    04034B50 (67324752)\n-10C416 Extract Zip Spec      14 (20) '2.0'\n-10C417 Extract OS            00 (0) 'MS-DOS'\n-10C418 General Purpose Flag  0808 (2056)\n+12BB72 LOCAL HEADER #1044    04034B50 (67324752)\n+12BB76 Extract Zip Spec      14 (20) '2.0'\n+12BB77 Extract OS            00 (0) 'MS-DOS'\n+12BB78 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10C41A Compression Method    0008 (8) 'Deflated'\n-10C41C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10C420 CRC                   00000000 (0)\n-10C424 Compressed Size       00000000 (0)\n-10C428 Uncompressed Size     00000000 (0)\n-10C42C Filename Length       0045 (69)\n-10C42E Extra Length          0000 (0)\n-10C430 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12BB7A Compression Method    0008 (8) 'Deflated'\n+12BB7C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12BB80 CRC                   00000000 (0)\n+12BB84 Compressed Size       00000000 (0)\n+12BB88 Uncompressed Size     00000000 (0)\n+12BB8C Filename Length       0038 (56)\n+12BB8E Extra Length          0000 (0)\n+12BB90 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10C430: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12BB90: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10C475 PAYLOAD\n+12BBC8 PAYLOAD\n \n-10CAC9 DATA DESCRIPTOR       08074B50 (134695760)\n-10CACD CRC                   EC1A089B (3961129115)\n-10CAD1 Compressed Size       00000654 (1620)\n-10CAD5 Uncompressed Size     00001498 (5272)\n+12C683 DATA DESCRIPTOR       08074B50 (134695760)\n+12C687 CRC                   95A966C5 (2510907077)\n+12C68B Compressed Size       00000ABB (2747)\n+12C68F Uncompressed Size     0000279F (10143)\n \n-10CAD9 LOCAL HEADER #1045    04034B50 (67324752)\n-10CADD Extract Zip Spec      14 (20) '2.0'\n-10CADE Extract OS            00 (0) 'MS-DOS'\n-10CADF General Purpose Flag  0808 (2056)\n+12C693 LOCAL HEADER #1045    04034B50 (67324752)\n+12C697 Extract Zip Spec      14 (20) '2.0'\n+12C698 Extract OS            00 (0) 'MS-DOS'\n+12C699 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10CAE1 Compression Method    0008 (8) 'Deflated'\n-10CAE3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10CAE7 CRC                   00000000 (0)\n-10CAEB Compressed Size       00000000 (0)\n-10CAEF Uncompressed Size     00000000 (0)\n-10CAF3 Filename Length       0049 (73)\n-10CAF5 Extra Length          0000 (0)\n-10CAF7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12C69B Compression Method    0008 (8) 'Deflated'\n+12C69D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12C6A1 CRC                   00000000 (0)\n+12C6A5 Compressed Size       00000000 (0)\n+12C6A9 Uncompressed Size     00000000 (0)\n+12C6AD Filename Length       0034 (52)\n+12C6AF Extra Length          0000 (0)\n+12C6B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10CAF7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12C6B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10CB40 PAYLOAD\n+12C6E5 PAYLOAD\n \n-10CDC0 DATA DESCRIPTOR       08074B50 (134695760)\n-10CDC4 CRC                   D99CBCB4 (3650927796)\n-10CDC8 Compressed Size       00000280 (640)\n-10CDCC Uncompressed Size     00000536 (1334)\n+12CA26 DATA DESCRIPTOR       08074B50 (134695760)\n+12CA2A CRC                   FBA20F3E (4221701950)\n+12CA2E Compressed Size       00000341 (833)\n+12CA32 Uncompressed Size     0000069F (1695)\n \n-10CDD0 LOCAL HEADER #1046    04034B50 (67324752)\n-10CDD4 Extract Zip Spec      14 (20) '2.0'\n-10CDD5 Extract OS            00 (0) 'MS-DOS'\n-10CDD6 General Purpose Flag  0808 (2056)\n+12CA36 LOCAL HEADER #1046    04034B50 (67324752)\n+12CA3A Extract Zip Spec      14 (20) '2.0'\n+12CA3B Extract OS            00 (0) 'MS-DOS'\n+12CA3C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10CDD8 Compression Method    0008 (8) 'Deflated'\n-10CDDA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10CDDE CRC                   00000000 (0)\n-10CDE2 Compressed Size       00000000 (0)\n-10CDE6 Uncompressed Size     00000000 (0)\n-10CDEA Filename Length       004A (74)\n-10CDEC Extra Length          0000 (0)\n-10CDEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12CA3E Compression Method    0008 (8) 'Deflated'\n+12CA40 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12CA44 CRC                   00000000 (0)\n+12CA48 Compressed Size       00000000 (0)\n+12CA4C Uncompressed Size     00000000 (0)\n+12CA50 Filename Length       0035 (53)\n+12CA52 Extra Length          0000 (0)\n+12CA54 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10CDEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12CA54: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10CE38 PAYLOAD\n+12CA89 PAYLOAD\n \n-10D3C6 DATA DESCRIPTOR       08074B50 (134695760)\n-10D3CA CRC                   25CC04D5 (634127573)\n-10D3CE Compressed Size       0000058E (1422)\n-10D3D2 Uncompressed Size     00001094 (4244)\n+12CE82 DATA DESCRIPTOR       08074B50 (134695760)\n+12CE86 CRC                   6BB5A87E (1807067262)\n+12CE8A Compressed Size       000003F9 (1017)\n+12CE8E Uncompressed Size     00001101 (4353)\n \n-10D3D6 LOCAL HEADER #1047    04034B50 (67324752)\n-10D3DA Extract Zip Spec      14 (20) '2.0'\n-10D3DB Extract OS            00 (0) 'MS-DOS'\n-10D3DC General Purpose Flag  0808 (2056)\n+12CE92 LOCAL HEADER #1047    04034B50 (67324752)\n+12CE96 Extract Zip Spec      14 (20) '2.0'\n+12CE97 Extract OS            00 (0) 'MS-DOS'\n+12CE98 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10D3DE Compression Method    0008 (8) 'Deflated'\n-10D3E0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10D3E4 CRC                   00000000 (0)\n-10D3E8 Compressed Size       00000000 (0)\n-10D3EC Uncompressed Size     00000000 (0)\n-10D3F0 Filename Length       004E (78)\n-10D3F2 Extra Length          0000 (0)\n-10D3F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12CE9A Compression Method    0008 (8) 'Deflated'\n+12CE9C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12CEA0 CRC                   00000000 (0)\n+12CEA4 Compressed Size       00000000 (0)\n+12CEA8 Uncompressed Size     00000000 (0)\n+12CEAC Filename Length       0029 (41)\n+12CEAE Extra Length          0000 (0)\n+12CEB0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10D3F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12CEB0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10D442 PAYLOAD\n+12CED9 PAYLOAD               XX\n \n-10D6C6 DATA DESCRIPTOR       08074B50 (134695760)\n-10D6CA CRC                   ECA8B7E4 (3970480100)\n-10D6CE Compressed Size       00000284 (644)\n-10D6D2 Uncompressed Size     00000545 (1349)\n+12CEDB DATA DESCRIPTOR       08074B50 (134695760)\n+12CEDF CRC                   00000000 (0)\n+12CEE3 Compressed Size       00000002 (2)\n+12CEE7 Uncompressed Size     00000000 (0)\n \n-10D6D6 LOCAL HEADER #1048    04034B50 (67324752)\n-10D6DA Extract Zip Spec      14 (20) '2.0'\n-10D6DB Extract OS            00 (0) 'MS-DOS'\n-10D6DC General Purpose Flag  0808 (2056)\n+12CEEB LOCAL HEADER #1048    04034B50 (67324752)\n+12CEEF Extract Zip Spec      14 (20) '2.0'\n+12CEF0 Extract OS            00 (0) 'MS-DOS'\n+12CEF1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10D6DE Compression Method    0008 (8) 'Deflated'\n-10D6E0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10D6E4 CRC                   00000000 (0)\n-10D6E8 Compressed Size       00000000 (0)\n-10D6EC Uncompressed Size     00000000 (0)\n-10D6F0 Filename Length       0026 (38)\n-10D6F2 Extra Length          0000 (0)\n-10D6F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12CEF3 Compression Method    0008 (8) 'Deflated'\n+12CEF5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12CEF9 CRC                   00000000 (0)\n+12CEFD Compressed Size       00000000 (0)\n+12CF01 Uncompressed Size     00000000 (0)\n+12CF05 Filename Length       0043 (67)\n+12CF07 Extra Length          0000 (0)\n+12CF09 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10D6F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12CF09: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10D71A PAYLOAD               XX\n+12CF4C PAYLOAD\n \n-10D71C DATA DESCRIPTOR       08074B50 (134695760)\n-10D720 CRC                   00000000 (0)\n-10D724 Compressed Size       00000002 (2)\n-10D728 Uncompressed Size     00000000 (0)\n+12D4DE DATA DESCRIPTOR       08074B50 (134695760)\n+12D4E2 CRC                   B641845C (3057747036)\n+12D4E6 Compressed Size       00000592 (1426)\n+12D4EA Uncompressed Size     000010B7 (4279)\n \n-10D72C LOCAL HEADER #1049    04034B50 (67324752)\n-10D730 Extract Zip Spec      14 (20) '2.0'\n-10D731 Extract OS            00 (0) 'MS-DOS'\n-10D732 General Purpose Flag  0808 (2056)\n+12D4EE LOCAL HEADER #1049    04034B50 (67324752)\n+12D4F2 Extract Zip Spec      14 (20) '2.0'\n+12D4F3 Extract OS            00 (0) 'MS-DOS'\n+12D4F4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10D734 Compression Method    0008 (8) 'Deflated'\n-10D736 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10D73A CRC                   00000000 (0)\n-10D73E Compressed Size       00000000 (0)\n-10D742 Uncompressed Size     00000000 (0)\n-10D746 Filename Length       0038 (56)\n-10D748 Extra Length          0000 (0)\n-10D74A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12D4F6 Compression Method    0008 (8) 'Deflated'\n+12D4F8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12D4FC CRC                   00000000 (0)\n+12D500 Compressed Size       00000000 (0)\n+12D504 Uncompressed Size     00000000 (0)\n+12D508 Filename Length       0028 (40)\n+12D50A Extra Length          0000 (0)\n+12D50C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10D74A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12D50C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10D782 PAYLOAD\n+12D534 PAYLOAD               XX\n \n-10DC5A DATA DESCRIPTOR       08074B50 (134695760)\n-10DC5E CRC                   F154D7FB (4048869371)\n-10DC62 Compressed Size       000004D8 (1240)\n-10DC66 Uncompressed Size     00000FA2 (4002)\n+12D536 DATA DESCRIPTOR       08074B50 (134695760)\n+12D53A CRC                   00000000 (0)\n+12D53E Compressed Size       00000002 (2)\n+12D542 Uncompressed Size     00000000 (0)\n \n-10DC6A LOCAL HEADER #1050    04034B50 (67324752)\n-10DC6E Extract Zip Spec      14 (20) '2.0'\n-10DC6F Extract OS            00 (0) 'MS-DOS'\n-10DC70 General Purpose Flag  0808 (2056)\n+12D546 LOCAL HEADER #1050    04034B50 (67324752)\n+12D54A Extract Zip Spec      14 (20) '2.0'\n+12D54B Extract OS            00 (0) 'MS-DOS'\n+12D54C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10DC72 Compression Method    0008 (8) 'Deflated'\n-10DC74 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10DC78 CRC                   00000000 (0)\n-10DC7C Compressed Size       00000000 (0)\n-10DC80 Uncompressed Size     00000000 (0)\n-10DC84 Filename Length       0034 (52)\n-10DC86 Extra Length          0000 (0)\n-10DC88 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12D54E Compression Method    0008 (8) 'Deflated'\n+12D550 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12D554 CRC                   00000000 (0)\n+12D558 Compressed Size       00000000 (0)\n+12D55C Uncompressed Size     00000000 (0)\n+12D560 Filename Length       003F (63)\n+12D562 Extra Length          0000 (0)\n+12D564 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10DC88: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12D564: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10DCBC PAYLOAD\n+12D5A3 PAYLOAD\n \n-10E2CE DATA DESCRIPTOR       08074B50 (134695760)\n-10E2D2 CRC                   126F64B9 (309290169)\n-10E2D6 Compressed Size       00000612 (1554)\n-10E2DA Uncompressed Size     000013C0 (5056)\n+12D8F0 DATA DESCRIPTOR       08074B50 (134695760)\n+12D8F4 CRC                   021D9C13 (35494931)\n+12D8F8 Compressed Size       0000034D (845)\n+12D8FC Uncompressed Size     00000951 (2385)\n \n-10E2DE LOCAL HEADER #1051    04034B50 (67324752)\n-10E2E2 Extract Zip Spec      14 (20) '2.0'\n-10E2E3 Extract OS            00 (0) 'MS-DOS'\n-10E2E4 General Purpose Flag  0808 (2056)\n+12D900 LOCAL HEADER #1051    04034B50 (67324752)\n+12D904 Extract Zip Spec      14 (20) '2.0'\n+12D905 Extract OS            00 (0) 'MS-DOS'\n+12D906 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10E2E6 Compression Method    0008 (8) 'Deflated'\n-10E2E8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10E2EC CRC                   00000000 (0)\n-10E2F0 Compressed Size       00000000 (0)\n-10E2F4 Uncompressed Size     00000000 (0)\n-10E2F8 Filename Length       0038 (56)\n-10E2FA Extra Length          0000 (0)\n-10E2FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12D908 Compression Method    0008 (8) 'Deflated'\n+12D90A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12D90E CRC                   00000000 (0)\n+12D912 Compressed Size       00000000 (0)\n+12D916 Uncompressed Size     00000000 (0)\n+12D91A Filename Length       004E (78)\n+12D91C Extra Length          0000 (0)\n+12D91E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10E2FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12D91E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10E334 PAYLOAD\n+12D96C PAYLOAD\n \n-10E5A6 DATA DESCRIPTOR       08074B50 (134695760)\n-10E5AA CRC                   DE2F0B5D (3727625053)\n-10E5AE Compressed Size       00000272 (626)\n-10E5B2 Uncompressed Size     000004EB (1259)\n+12DDBA DATA DESCRIPTOR       08074B50 (134695760)\n+12DDBE CRC                   C419897B (3290007931)\n+12DDC2 Compressed Size       0000044E (1102)\n+12DDC6 Uncompressed Size     00000C66 (3174)\n \n-10E5B6 LOCAL HEADER #1052    04034B50 (67324752)\n-10E5BA Extract Zip Spec      14 (20) '2.0'\n-10E5BB Extract OS            00 (0) 'MS-DOS'\n-10E5BC General Purpose Flag  0808 (2056)\n+12DDCA LOCAL HEADER #1052    04034B50 (67324752)\n+12DDCE Extract Zip Spec      14 (20) '2.0'\n+12DDCF Extract OS            00 (0) 'MS-DOS'\n+12DDD0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10E5BE Compression Method    0008 (8) 'Deflated'\n-10E5C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10E5C4 CRC                   00000000 (0)\n-10E5C8 Compressed Size       00000000 (0)\n-10E5CC Uncompressed Size     00000000 (0)\n-10E5D0 Filename Length       0039 (57)\n-10E5D2 Extra Length          0000 (0)\n-10E5D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12DDD2 Compression Method    0008 (8) 'Deflated'\n+12DDD4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12DDD8 CRC                   00000000 (0)\n+12DDDC Compressed Size       00000000 (0)\n+12DDE0 Uncompressed Size     00000000 (0)\n+12DDE4 Filename Length       004F (79)\n+12DDE6 Extra Length          0000 (0)\n+12DDE8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10E5D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12DDE8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10E60D PAYLOAD\n+12DE37 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-10EB8F DATA DESCRIPTOR       08074B50 (134695760)\n-10EB93 CRC                   91721BC5 (2440174533)\n-10EB97 Compressed Size       00000582 (1410)\n-10EB9B Uncompressed Size     0000103F (4159)\n+12DE82 DATA DESCRIPTOR       08074B50 (134695760)\n+12DE86 CRC                   78C43CAA (2026126506)\n+12DE8A Compressed Size       0000004B (75)\n+12DE8E Uncompressed Size     00000088 (136)\n \n-10EB9F LOCAL HEADER #1053    04034B50 (67324752)\n-10EBA3 Extract Zip Spec      14 (20) '2.0'\n-10EBA4 Extract OS            00 (0) 'MS-DOS'\n-10EBA5 General Purpose Flag  0808 (2056)\n+12DE92 LOCAL HEADER #1053    04034B50 (67324752)\n+12DE96 Extract Zip Spec      14 (20) '2.0'\n+12DE97 Extract OS            00 (0) 'MS-DOS'\n+12DE98 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10EBA7 Compression Method    0008 (8) 'Deflated'\n-10EBA9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10EBAD CRC                   00000000 (0)\n-10EBB1 Compressed Size       00000000 (0)\n-10EBB5 Uncompressed Size     00000000 (0)\n-10EBB9 Filename Length       003D (61)\n-10EBBB Extra Length          0000 (0)\n-10EBBD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12DE9A Compression Method    0008 (8) 'Deflated'\n+12DE9C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12DEA0 CRC                   00000000 (0)\n+12DEA4 Compressed Size       00000000 (0)\n+12DEA8 Uncompressed Size     00000000 (0)\n+12DEAC Filename Length       0031 (49)\n+12DEAE Extra Length          0000 (0)\n+12DEB0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10EBBD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12DEB0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10EBFA PAYLOAD\n+12DEE1 PAYLOAD               XX\n \n-10EE70 DATA DESCRIPTOR       08074B50 (134695760)\n-10EE74 CRC                   6E31EAB9 (1848765113)\n-10EE78 Compressed Size       00000276 (630)\n-10EE7C Uncompressed Size     000004FA (1274)\n+12DEE3 DATA DESCRIPTOR       08074B50 (134695760)\n+12DEE7 CRC                   00000000 (0)\n+12DEEB Compressed Size       00000002 (2)\n+12DEEF Uncompressed Size     00000000 (0)\n \n-10EE80 LOCAL HEADER #1054    04034B50 (67324752)\n-10EE84 Extract Zip Spec      14 (20) '2.0'\n-10EE85 Extract OS            00 (0) 'MS-DOS'\n-10EE86 General Purpose Flag  0808 (2056)\n+12DEF3 LOCAL HEADER #1054    04034B50 (67324752)\n+12DEF7 Extract Zip Spec      14 (20) '2.0'\n+12DEF8 Extract OS            00 (0) 'MS-DOS'\n+12DEF9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10EE88 Compression Method    0008 (8) 'Deflated'\n-10EE8A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10EE8E CRC                   00000000 (0)\n-10EE92 Compressed Size       00000000 (0)\n-10EE96 Uncompressed Size     00000000 (0)\n-10EE9A Filename Length       0035 (53)\n-10EE9C Extra Length          0000 (0)\n-10EE9E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12DEFB Compression Method    0008 (8) 'Deflated'\n+12DEFD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12DF01 CRC                   00000000 (0)\n+12DF05 Compressed Size       00000000 (0)\n+12DF09 Uncompressed Size     00000000 (0)\n+12DF0D Filename Length       0038 (56)\n+12DF0F Extra Length          0000 (0)\n+12DF11 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10EE9E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12DF11: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10EED3 PAYLOAD\n+12DF49 PAYLOAD\n \n-10F421 DATA DESCRIPTOR       08074B50 (134695760)\n-10F425 CRC                   9A81C390 (2592195472)\n-10F429 Compressed Size       0000054E (1358)\n-10F42D Uncompressed Size     0000109F (4255)\n+12E30D DATA DESCRIPTOR       08074B50 (134695760)\n+12E311 CRC                   FBA32B90 (4221774736)\n+12E315 Compressed Size       000003C4 (964)\n+12E319 Uncompressed Size     00000C2F (3119)\n \n-10F431 LOCAL HEADER #1055    04034B50 (67324752)\n-10F435 Extract Zip Spec      14 (20) '2.0'\n-10F436 Extract OS            00 (0) 'MS-DOS'\n-10F437 General Purpose Flag  0808 (2056)\n+12E31D LOCAL HEADER #1055    04034B50 (67324752)\n+12E321 Extract Zip Spec      14 (20) '2.0'\n+12E322 Extract OS            00 (0) 'MS-DOS'\n+12E323 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10F439 Compression Method    0008 (8) 'Deflated'\n-10F43B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10F43F CRC                   00000000 (0)\n-10F443 Compressed Size       00000000 (0)\n-10F447 Uncompressed Size     00000000 (0)\n-10F44B Filename Length       001F (31)\n-10F44D Extra Length          0000 (0)\n-10F44F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12E325 Compression Method    0008 (8) 'Deflated'\n+12E327 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12E32B CRC                   00000000 (0)\n+12E32F Compressed Size       00000000 (0)\n+12E333 Uncompressed Size     00000000 (0)\n+12E337 Filename Length       003F (63)\n+12E339 Extra Length          0000 (0)\n+12E33B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10F44F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12E33B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10F46E PAYLOAD               XX\n+12E37A PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-10F470 DATA DESCRIPTOR       08074B50 (134695760)\n-10F474 CRC                   00000000 (0)\n-10F478 Compressed Size       00000002 (2)\n-10F47C Uncompressed Size     00000000 (0)\n+12E3BF DATA DESCRIPTOR       08074B50 (134695760)\n+12E3C3 CRC                   2A331345 (707990341)\n+12E3C7 Compressed Size       00000045 (69)\n+12E3CB Uncompressed Size     00000047 (71)\n \n-10F480 LOCAL HEADER #1056    04034B50 (67324752)\n-10F484 Extract Zip Spec      14 (20) '2.0'\n-10F485 Extract OS            00 (0) 'MS-DOS'\n-10F486 General Purpose Flag  0808 (2056)\n+12E3CF LOCAL HEADER #1056    04034B50 (67324752)\n+12E3D3 Extract Zip Spec      14 (20) '2.0'\n+12E3D4 Extract OS            00 (0) 'MS-DOS'\n+12E3D5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10F488 Compression Method    0008 (8) 'Deflated'\n-10F48A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10F48E CRC                   00000000 (0)\n-10F492 Compressed Size       00000000 (0)\n-10F496 Uncompressed Size     00000000 (0)\n-10F49A Filename Length       002E (46)\n-10F49C Extra Length          0000 (0)\n-10F49E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12E3D7 Compression Method    0008 (8) 'Deflated'\n+12E3D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12E3DD CRC                   00000000 (0)\n+12E3E1 Compressed Size       00000000 (0)\n+12E3E5 Uncompressed Size     00000000 (0)\n+12E3E9 Filename Length       002B (43)\n+12E3EB Extra Length          0000 (0)\n+12E3ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10F49E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12E3ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10F4CC PAYLOAD\n+12E418 PAYLOAD               XX\n \n-10F766 DATA DESCRIPTOR       08074B50 (134695760)\n-10F76A CRC                   20838DDF (545492447)\n-10F76E Compressed Size       0000029A (666)\n-10F772 Uncompressed Size     00000527 (1319)\n+12E41A DATA DESCRIPTOR       08074B50 (134695760)\n+12E41E CRC                   00000000 (0)\n+12E422 Compressed Size       00000002 (2)\n+12E426 Uncompressed Size     00000000 (0)\n \n-10F776 LOCAL HEADER #1057    04034B50 (67324752)\n-10F77A Extract Zip Spec      14 (20) '2.0'\n-10F77B Extract OS            00 (0) 'MS-DOS'\n-10F77C General Purpose Flag  0808 (2056)\n+12E42A LOCAL HEADER #1057    04034B50 (67324752)\n+12E42E Extract Zip Spec      14 (20) '2.0'\n+12E42F Extract OS            00 (0) 'MS-DOS'\n+12E430 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10F77E Compression Method    0008 (8) 'Deflated'\n-10F780 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10F784 CRC                   00000000 (0)\n-10F788 Compressed Size       00000000 (0)\n-10F78C Uncompressed Size     00000000 (0)\n-10F790 Filename Length       002F (47)\n-10F792 Extra Length          0000 (0)\n-10F794 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12E432 Compression Method    0008 (8) 'Deflated'\n+12E434 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12E438 CRC                   00000000 (0)\n+12E43C Compressed Size       00000000 (0)\n+12E440 Uncompressed Size     00000000 (0)\n+12E444 Filename Length       003E (62)\n+12E446 Extra Length          0000 (0)\n+12E448 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10F794: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12E448: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10F7C3 PAYLOAD\n+12E486 PAYLOAD\n \n-10FA51 DATA DESCRIPTOR       08074B50 (134695760)\n-10FA55 CRC                   736BD280 (1936446080)\n-10FA59 Compressed Size       0000028E (654)\n-10FA5D Uncompressed Size     0000056A (1386)\n+12ECFC DATA DESCRIPTOR       08074B50 (134695760)\n+12ED00 CRC                   C2851F80 (3263504256)\n+12ED04 Compressed Size       00000876 (2166)\n+12ED08 Uncompressed Size     0000207E (8318)\n \n-10FA61 LOCAL HEADER #1058    04034B50 (67324752)\n-10FA65 Extract Zip Spec      14 (20) '2.0'\n-10FA66 Extract OS            00 (0) 'MS-DOS'\n-10FA67 General Purpose Flag  0808 (2056)\n+12ED0C LOCAL HEADER #1058    04034B50 (67324752)\n+12ED10 Extract Zip Spec      14 (20) '2.0'\n+12ED11 Extract OS            00 (0) 'MS-DOS'\n+12ED12 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10FA69 Compression Method    0008 (8) 'Deflated'\n-10FA6B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10FA6F CRC                   00000000 (0)\n-10FA73 Compressed Size       00000000 (0)\n-10FA77 Uncompressed Size     00000000 (0)\n-10FA7B Filename Length       002E (46)\n-10FA7D Extra Length          0000 (0)\n-10FA7F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12ED14 Compression Method    0008 (8) 'Deflated'\n+12ED16 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12ED1A CRC                   00000000 (0)\n+12ED1E Compressed Size       00000000 (0)\n+12ED22 Uncompressed Size     00000000 (0)\n+12ED26 Filename Length       0038 (56)\n+12ED28 Extra Length          0000 (0)\n+12ED2A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10FA7F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12ED2A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10FAAD PAYLOAD\n+12ED62 PAYLOAD               XX\n \n-10FD8E DATA DESCRIPTOR       08074B50 (134695760)\n-10FD92 CRC                   C27E840C (3263071244)\n-10FD96 Compressed Size       000002E1 (737)\n-10FD9A Uncompressed Size     000006E9 (1769)\n+12ED64 DATA DESCRIPTOR       08074B50 (134695760)\n+12ED68 CRC                   00000000 (0)\n+12ED6C Compressed Size       00000002 (2)\n+12ED70 Uncompressed Size     00000000 (0)\n \n-10FD9E LOCAL HEADER #1059    04034B50 (67324752)\n-10FDA2 Extract Zip Spec      14 (20) '2.0'\n-10FDA3 Extract OS            00 (0) 'MS-DOS'\n-10FDA4 General Purpose Flag  0808 (2056)\n+12ED74 LOCAL HEADER #1059    04034B50 (67324752)\n+12ED78 Extract Zip Spec      14 (20) '2.0'\n+12ED79 Extract OS            00 (0) 'MS-DOS'\n+12ED7A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10FDA6 Compression Method    0008 (8) 'Deflated'\n-10FDA8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10FDAC CRC                   00000000 (0)\n-10FDB0 Compressed Size       00000000 (0)\n-10FDB4 Uncompressed Size     00000000 (0)\n-10FDB8 Filename Length       0025 (37)\n-10FDBA Extra Length          0000 (0)\n-10FDBC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12ED7C Compression Method    0008 (8) 'Deflated'\n+12ED7E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12ED82 CRC                   00000000 (0)\n+12ED86 Compressed Size       00000000 (0)\n+12ED8A Uncompressed Size     00000000 (0)\n+12ED8E Filename Length       003F (63)\n+12ED90 Extra Length          0000 (0)\n+12ED92 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10FDBC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12ED92: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10FDE1 PAYLOAD               XX\n+12EDD1 PAYLOAD\n \n-10FDE3 DATA DESCRIPTOR       08074B50 (134695760)\n-10FDE7 CRC                   00000000 (0)\n-10FDEB Compressed Size       00000002 (2)\n-10FDEF Uncompressed Size     00000000 (0)\n+12F163 DATA DESCRIPTOR       08074B50 (134695760)\n+12F167 CRC                   DFB279C5 (3753015749)\n+12F16B Compressed Size       00000392 (914)\n+12F16F Uncompressed Size     000008C6 (2246)\n \n-10FDF3 LOCAL HEADER #1060    04034B50 (67324752)\n-10FDF7 Extract Zip Spec      14 (20) '2.0'\n-10FDF8 Extract OS            00 (0) 'MS-DOS'\n-10FDF9 General Purpose Flag  0808 (2056)\n+12F173 LOCAL HEADER #1060    04034B50 (67324752)\n+12F177 Extract Zip Spec      14 (20) '2.0'\n+12F178 Extract OS            00 (0) 'MS-DOS'\n+12F179 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-10FDFB Compression Method    0008 (8) 'Deflated'\n-10FDFD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-10FE01 CRC                   00000000 (0)\n-10FE05 Compressed Size       00000000 (0)\n-10FE09 Uncompressed Size     00000000 (0)\n-10FE0D Filename Length       0039 (57)\n-10FE0F Extra Length          0000 (0)\n-10FE11 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12F17B Compression Method    0008 (8) 'Deflated'\n+12F17D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12F181 CRC                   00000000 (0)\n+12F185 Compressed Size       00000000 (0)\n+12F189 Uncompressed Size     00000000 (0)\n+12F18D Filename Length       0046 (70)\n+12F18F Extra Length          0000 (0)\n+12F191 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x10FE11: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12F191: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-10FE4A PAYLOAD\n+12F1D7 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-1100BE DATA DESCRIPTOR       08074B50 (134695760)\n-1100C2 CRC                   88BB48F4 (2293975284)\n-1100C6 Compressed Size       00000274 (628)\n-1100CA Uncompressed Size     00000509 (1289)\n+12F221 DATA DESCRIPTOR       08074B50 (134695760)\n+12F225 CRC                   AE9E07C3 (2929592259)\n+12F229 Compressed Size       0000004A (74)\n+12F22D Uncompressed Size     0000004E (78)\n \n-1100CE LOCAL HEADER #1061    04034B50 (67324752)\n-1100D2 Extract Zip Spec      14 (20) '2.0'\n-1100D3 Extract OS            00 (0) 'MS-DOS'\n-1100D4 General Purpose Flag  0808 (2056)\n+12F231 LOCAL HEADER #1061    04034B50 (67324752)\n+12F235 Extract Zip Spec      14 (20) '2.0'\n+12F236 Extract OS            00 (0) 'MS-DOS'\n+12F237 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1100D6 Compression Method    0008 (8) 'Deflated'\n-1100D8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1100DC CRC                   00000000 (0)\n-1100E0 Compressed Size       00000000 (0)\n-1100E4 Uncompressed Size     00000000 (0)\n-1100E8 Filename Length       0039 (57)\n-1100EA Extra Length          0000 (0)\n-1100EC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12F239 Compression Method    0008 (8) 'Deflated'\n+12F23B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12F23F CRC                   00000000 (0)\n+12F243 Compressed Size       00000000 (0)\n+12F247 Uncompressed Size     00000000 (0)\n+12F24B Filename Length       0028 (40)\n+12F24D Extra Length          0000 (0)\n+12F24F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1100EC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12F24F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-110125 PAYLOAD\n+12F277 PAYLOAD               XX\n \n-11073A DATA DESCRIPTOR       08074B50 (134695760)\n-11073E CRC                   690E10B4 (1762529460)\n-110742 Compressed Size       00000615 (1557)\n-110746 Uncompressed Size     0000128E (4750)\n+12F279 DATA DESCRIPTOR       08074B50 (134695760)\n+12F27D CRC                   00000000 (0)\n+12F281 Compressed Size       00000002 (2)\n+12F285 Uncompressed Size     00000000 (0)\n \n-11074A LOCAL HEADER #1062    04034B50 (67324752)\n-11074E Extract Zip Spec      14 (20) '2.0'\n-11074F Extract OS            00 (0) 'MS-DOS'\n-110750 General Purpose Flag  0808 (2056)\n+12F289 LOCAL HEADER #1062    04034B50 (67324752)\n+12F28D Extract Zip Spec      14 (20) '2.0'\n+12F28E Extract OS            00 (0) 'MS-DOS'\n+12F28F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-110752 Compression Method    0008 (8) 'Deflated'\n-110754 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-110758 CRC                   00000000 (0)\n-11075C Compressed Size       00000000 (0)\n-110760 Uncompressed Size     00000000 (0)\n-110764 Filename Length       0027 (39)\n-110766 Extra Length          0000 (0)\n-110768 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12F291 Compression Method    0008 (8) 'Deflated'\n+12F293 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12F297 CRC                   00000000 (0)\n+12F29B Compressed Size       00000000 (0)\n+12F29F Uncompressed Size     00000000 (0)\n+12F2A3 Filename Length       003E (62)\n+12F2A5 Extra Length          0000 (0)\n+12F2A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x110768: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12F2A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11078F PAYLOAD               XX\n+12F2E5 PAYLOAD\n \n-110791 DATA DESCRIPTOR       08074B50 (134695760)\n-110795 CRC                   00000000 (0)\n-110799 Compressed Size       00000002 (2)\n-11079D Uncompressed Size     00000000 (0)\n+12F993 DATA DESCRIPTOR       08074B50 (134695760)\n+12F997 CRC                   E525BFD2 (3844456402)\n+12F99B Compressed Size       000006AE (1710)\n+12F99F Uncompressed Size     00001958 (6488)\n \n-1107A1 LOCAL HEADER #1063    04034B50 (67324752)\n-1107A5 Extract Zip Spec      14 (20) '2.0'\n-1107A6 Extract OS            00 (0) 'MS-DOS'\n-1107A7 General Purpose Flag  0808 (2056)\n+12F9A3 LOCAL HEADER #1063    04034B50 (67324752)\n+12F9A7 Extract Zip Spec      14 (20) '2.0'\n+12F9A8 Extract OS            00 (0) 'MS-DOS'\n+12F9A9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1107A9 Compression Method    0008 (8) 'Deflated'\n-1107AB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1107AF CRC                   00000000 (0)\n-1107B3 Compressed Size       00000000 (0)\n-1107B7 Uncompressed Size     00000000 (0)\n-1107BB Filename Length       003D (61)\n-1107BD Extra Length          0000 (0)\n-1107BF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12F9AB Compression Method    0008 (8) 'Deflated'\n+12F9AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12F9B1 CRC                   00000000 (0)\n+12F9B5 Compressed Size       00000000 (0)\n+12F9B9 Uncompressed Size     00000000 (0)\n+12F9BD Filename Length       0034 (52)\n+12F9BF Extra Length          0000 (0)\n+12F9C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1107BF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12F9C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1107FC PAYLOAD\n+12F9F5 PAYLOAD               XX\n \n-110AD4 DATA DESCRIPTOR       08074B50 (134695760)\n-110AD8 CRC                   099C0616 (161220118)\n-110ADC Compressed Size       000002D8 (728)\n-110AE0 Uncompressed Size     00000628 (1576)\n+12F9F7 DATA DESCRIPTOR       08074B50 (134695760)\n+12F9FB CRC                   00000000 (0)\n+12F9FF Compressed Size       00000002 (2)\n+12FA03 Uncompressed Size     00000000 (0)\n \n-110AE4 LOCAL HEADER #1064    04034B50 (67324752)\n-110AE8 Extract Zip Spec      14 (20) '2.0'\n-110AE9 Extract OS            00 (0) 'MS-DOS'\n-110AEA General Purpose Flag  0808 (2056)\n+12FA07 LOCAL HEADER #1064    04034B50 (67324752)\n+12FA0B Extract Zip Spec      14 (20) '2.0'\n+12FA0C Extract OS            00 (0) 'MS-DOS'\n+12FA0D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-110AEC Compression Method    0008 (8) 'Deflated'\n-110AEE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-110AF2 CRC                   00000000 (0)\n-110AF6 Compressed Size       00000000 (0)\n-110AFA Uncompressed Size     00000000 (0)\n-110AFE Filename Length       003D (61)\n-110B00 Extra Length          0000 (0)\n-110B02 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12FA0F Compression Method    0008 (8) 'Deflated'\n+12FA11 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12FA15 CRC                   00000000 (0)\n+12FA19 Compressed Size       00000000 (0)\n+12FA1D Uncompressed Size     00000000 (0)\n+12FA21 Filename Length       003B (59)\n+12FA23 Extra Length          0000 (0)\n+12FA25 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x110B02: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12FA25: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-110B3F PAYLOAD\n+12FA60 PAYLOAD\n \n-110F19 DATA DESCRIPTOR       08074B50 (134695760)\n-110F1D CRC                   1EBD34EC (515716332)\n-110F21 Compressed Size       000003DA (986)\n-110F25 Uncompressed Size     00000948 (2376)\n+12FDD2 DATA DESCRIPTOR       08074B50 (134695760)\n+12FDD6 CRC                   6C50312F (1817194799)\n+12FDDA Compressed Size       00000372 (882)\n+12FDDE Uncompressed Size     0000080B (2059)\n \n-110F29 LOCAL HEADER #1065    04034B50 (67324752)\n-110F2D Extract Zip Spec      14 (20) '2.0'\n-110F2E Extract OS            00 (0) 'MS-DOS'\n-110F2F General Purpose Flag  0808 (2056)\n+12FDE2 LOCAL HEADER #1065    04034B50 (67324752)\n+12FDE6 Extract Zip Spec      14 (20) '2.0'\n+12FDE7 Extract OS            00 (0) 'MS-DOS'\n+12FDE8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-110F31 Compression Method    0008 (8) 'Deflated'\n-110F33 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-110F37 CRC                   00000000 (0)\n-110F3B Compressed Size       00000000 (0)\n-110F3F Uncompressed Size     00000000 (0)\n-110F43 Filename Length       003D (61)\n-110F45 Extra Length          0000 (0)\n-110F47 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12FDEA Compression Method    0008 (8) 'Deflated'\n+12FDEC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12FDF0 CRC                   00000000 (0)\n+12FDF4 Compressed Size       00000000 (0)\n+12FDF8 Uncompressed Size     00000000 (0)\n+12FDFC Filename Length       0042 (66)\n+12FDFE Extra Length          0000 (0)\n+12FE00 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x110F47: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12FE00: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-110F84 PAYLOAD\n+12FE42 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-1111F0 DATA DESCRIPTOR       08074B50 (134695760)\n-1111F4 CRC                   00C8CBDF (13159391)\n-1111F8 Compressed Size       0000026C (620)\n-1111FC Uncompressed Size     000004EF (1263)\n+12FE87 DATA DESCRIPTOR       08074B50 (134695760)\n+12FE8B CRC                   20792918 (544811288)\n+12FE8F Compressed Size       00000045 (69)\n+12FE93 Uncompressed Size     0000004A (74)\n \n-111200 LOCAL HEADER #1066    04034B50 (67324752)\n-111204 Extract Zip Spec      14 (20) '2.0'\n-111205 Extract OS            00 (0) 'MS-DOS'\n-111206 General Purpose Flag  0808 (2056)\n+12FE97 LOCAL HEADER #1066    04034B50 (67324752)\n+12FE9B Extract Zip Spec      14 (20) '2.0'\n+12FE9C Extract OS            00 (0) 'MS-DOS'\n+12FE9D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-111208 Compression Method    0008 (8) 'Deflated'\n-11120A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11120E CRC                   00000000 (0)\n-111212 Compressed Size       00000000 (0)\n-111216 Uncompressed Size     00000000 (0)\n-11121A Filename Length       003D (61)\n-11121C Extra Length          0000 (0)\n-11121E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12FE9F Compression Method    0008 (8) 'Deflated'\n+12FEA1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12FEA5 CRC                   00000000 (0)\n+12FEA9 Compressed Size       00000000 (0)\n+12FEAD Uncompressed Size     00000000 (0)\n+12FEB1 Filename Length       0024 (36)\n+12FEB3 Extra Length          0000 (0)\n+12FEB5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11121E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12FEB5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11125B PAYLOAD\n+12FED9 PAYLOAD               XX\n \n-1114F0 DATA DESCRIPTOR       08074B50 (134695760)\n-1114F4 CRC                   9F24457D (2669954429)\n-1114F8 Compressed Size       00000295 (661)\n-1114FC Uncompressed Size     0000053C (1340)\n+12FEDB DATA DESCRIPTOR       08074B50 (134695760)\n+12FEDF CRC                   00000000 (0)\n+12FEE3 Compressed Size       00000002 (2)\n+12FEE7 Uncompressed Size     00000000 (0)\n \n-111500 LOCAL HEADER #1067    04034B50 (67324752)\n-111504 Extract Zip Spec      14 (20) '2.0'\n-111505 Extract OS            00 (0) 'MS-DOS'\n-111506 General Purpose Flag  0808 (2056)\n+12FEEB LOCAL HEADER #1067    04034B50 (67324752)\n+12FEEF Extract Zip Spec      14 (20) '2.0'\n+12FEF0 Extract OS            00 (0) 'MS-DOS'\n+12FEF1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-111508 Compression Method    0008 (8) 'Deflated'\n-11150A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11150E CRC                   00000000 (0)\n-111512 Compressed Size       00000000 (0)\n-111516 Uncompressed Size     00000000 (0)\n-11151A Filename Length       003A (58)\n-11151C Extra Length          0000 (0)\n-11151E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+12FEF3 Compression Method    0008 (8) 'Deflated'\n+12FEF5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+12FEF9 CRC                   00000000 (0)\n+12FEFD Compressed Size       00000000 (0)\n+12FF01 Uncompressed Size     00000000 (0)\n+12FF05 Filename Length       0036 (54)\n+12FF07 Extra Length          0000 (0)\n+12FF09 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11151E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x12FF09: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-111558 PAYLOAD\n+12FF3F PAYLOAD\n \n-111862 DATA DESCRIPTOR       08074B50 (134695760)\n-111866 CRC                   E226A571 (3794183537)\n-11186A Compressed Size       0000030A (778)\n-11186E Uncompressed Size     000006A0 (1696)\n+130859 DATA DESCRIPTOR       08074B50 (134695760)\n+13085D CRC                   2CD78AEC (752323308)\n+130861 Compressed Size       0000091A (2330)\n+130865 Uncompressed Size     0000277A (10106)\n \n-111872 LOCAL HEADER #1068    04034B50 (67324752)\n-111876 Extract Zip Spec      14 (20) '2.0'\n-111877 Extract OS            00 (0) 'MS-DOS'\n-111878 General Purpose Flag  0808 (2056)\n+130869 LOCAL HEADER #1068    04034B50 (67324752)\n+13086D Extract Zip Spec      14 (20) '2.0'\n+13086E Extract OS            00 (0) 'MS-DOS'\n+13086F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11187A Compression Method    0008 (8) 'Deflated'\n-11187C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-111880 CRC                   00000000 (0)\n-111884 Compressed Size       00000000 (0)\n-111888 Uncompressed Size     00000000 (0)\n-11188C Filename Length       0027 (39)\n-11188E Extra Length          0000 (0)\n-111890 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+130871 Compression Method    0008 (8) 'Deflated'\n+130873 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+130877 CRC                   00000000 (0)\n+13087B Compressed Size       00000000 (0)\n+13087F Uncompressed Size     00000000 (0)\n+130883 Filename Length       0030 (48)\n+130885 Extra Length          0000 (0)\n+130887 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x111890: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x130887: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1118B7 PAYLOAD               XX\n+1308B7 PAYLOAD               XX\n \n-1118B9 DATA DESCRIPTOR       08074B50 (134695760)\n-1118BD CRC                   00000000 (0)\n-1118C1 Compressed Size       00000002 (2)\n-1118C5 Uncompressed Size     00000000 (0)\n+1308B9 DATA DESCRIPTOR       08074B50 (134695760)\n+1308BD CRC                   00000000 (0)\n+1308C1 Compressed Size       00000002 (2)\n+1308C5 Uncompressed Size     00000000 (0)\n \n-1118C9 LOCAL HEADER #1069    04034B50 (67324752)\n-1118CD Extract Zip Spec      14 (20) '2.0'\n-1118CE Extract OS            00 (0) 'MS-DOS'\n-1118CF General Purpose Flag  0808 (2056)\n+1308C9 LOCAL HEADER #1069    04034B50 (67324752)\n+1308CD Extract Zip Spec      14 (20) '2.0'\n+1308CE Extract OS            00 (0) 'MS-DOS'\n+1308CF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1118D1 Compression Method    0008 (8) 'Deflated'\n-1118D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1118D7 CRC                   00000000 (0)\n-1118DB Compressed Size       00000000 (0)\n-1118DF Uncompressed Size     00000000 (0)\n-1118E3 Filename Length       003E (62)\n-1118E5 Extra Length          0000 (0)\n-1118E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1308D1 Compression Method    0008 (8) 'Deflated'\n+1308D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1308D7 CRC                   00000000 (0)\n+1308DB Compressed Size       00000000 (0)\n+1308DF Uncompressed Size     00000000 (0)\n+1308E3 Filename Length       0037 (55)\n+1308E5 Extra Length          0000 (0)\n+1308E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1118E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1308E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-111925 PAYLOAD\n+13091E PAYLOAD\n \n-111D49 DATA DESCRIPTOR       08074B50 (134695760)\n-111D4D CRC                   AD23A7BE (2904795070)\n-111D51 Compressed Size       00000424 (1060)\n-111D55 Uncompressed Size     00000CE3 (3299)\n+130CD7 DATA DESCRIPTOR       08074B50 (134695760)\n+130CDB CRC                   C023047F (3223520383)\n+130CDF Compressed Size       000003B9 (953)\n+130CE3 Uncompressed Size     000009EF (2543)\n \n-111D59 LOCAL HEADER #1070    04034B50 (67324752)\n-111D5D Extract Zip Spec      14 (20) '2.0'\n-111D5E Extract OS            00 (0) 'MS-DOS'\n-111D5F General Purpose Flag  0808 (2056)\n+130CE7 LOCAL HEADER #1070    04034B50 (67324752)\n+130CEB Extract Zip Spec      14 (20) '2.0'\n+130CEC Extract OS            00 (0) 'MS-DOS'\n+130CED General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-111D61 Compression Method    0008 (8) 'Deflated'\n-111D63 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-111D67 CRC                   00000000 (0)\n-111D6B Compressed Size       00000000 (0)\n-111D6F Uncompressed Size     00000000 (0)\n-111D73 Filename Length       0026 (38)\n-111D75 Extra Length          0000 (0)\n-111D77 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+130CEF Compression Method    0008 (8) 'Deflated'\n+130CF1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+130CF5 CRC                   00000000 (0)\n+130CF9 Compressed Size       00000000 (0)\n+130CFD Uncompressed Size     00000000 (0)\n+130D01 Filename Length       003E (62)\n+130D03 Extra Length          0000 (0)\n+130D05 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x111D77: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x130D05: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-111D9D PAYLOAD               XX\n+130D43 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-111D9F DATA DESCRIPTOR       08074B50 (134695760)\n-111DA3 CRC                   00000000 (0)\n-111DA7 Compressed Size       00000002 (2)\n-111DAB Uncompressed Size     00000000 (0)\n+130D87 DATA DESCRIPTOR       08074B50 (134695760)\n+130D8B CRC                   7C47DDD5 (2085084629)\n+130D8F Compressed Size       00000044 (68)\n+130D93 Uncompressed Size     00000046 (70)\n \n-111DAF LOCAL HEADER #1071    04034B50 (67324752)\n-111DB3 Extract Zip Spec      14 (20) '2.0'\n-111DB4 Extract OS            00 (0) 'MS-DOS'\n-111DB5 General Purpose Flag  0808 (2056)\n+130D97 LOCAL HEADER #1071    04034B50 (67324752)\n+130D9B Extract Zip Spec      14 (20) '2.0'\n+130D9C Extract OS            00 (0) 'MS-DOS'\n+130D9D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-111DB7 Compression Method    0008 (8) 'Deflated'\n-111DB9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-111DBD CRC                   00000000 (0)\n-111DC1 Compressed Size       00000000 (0)\n-111DC5 Uncompressed Size     00000000 (0)\n-111DC9 Filename Length       003B (59)\n-111DCB Extra Length          0000 (0)\n-111DCD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+130D9F Compression Method    0008 (8) 'Deflated'\n+130DA1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+130DA5 CRC                   00000000 (0)\n+130DA9 Compressed Size       00000000 (0)\n+130DAD Uncompressed Size     00000000 (0)\n+130DB1 Filename Length       0023 (35)\n+130DB3 Extra Length          0000 (0)\n+130DB5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x111DCD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x130DB5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-111E08 PAYLOAD\n+130DD8 PAYLOAD               XX\n \n-11206B DATA DESCRIPTOR       08074B50 (134695760)\n-11206F CRC                   2A48966F (709400175)\n-112073 Compressed Size       00000263 (611)\n-112077 Uncompressed Size     000004E9 (1257)\n+130DDA DATA DESCRIPTOR       08074B50 (134695760)\n+130DDE CRC                   00000000 (0)\n+130DE2 Compressed Size       00000002 (2)\n+130DE6 Uncompressed Size     00000000 (0)\n \n-11207B LOCAL HEADER #1072    04034B50 (67324752)\n-11207F Extract Zip Spec      14 (20) '2.0'\n-112080 Extract OS            00 (0) 'MS-DOS'\n-112081 General Purpose Flag  0808 (2056)\n+130DEA LOCAL HEADER #1072    04034B50 (67324752)\n+130DEE Extract Zip Spec      14 (20) '2.0'\n+130DEF Extract OS            00 (0) 'MS-DOS'\n+130DF0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-112083 Compression Method    0008 (8) 'Deflated'\n-112085 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-112089 CRC                   00000000 (0)\n-11208D Compressed Size       00000000 (0)\n-112091 Uncompressed Size     00000000 (0)\n-112095 Filename Length       003B (59)\n-112097 Extra Length          0000 (0)\n-112099 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+130DF2 Compression Method    0008 (8) 'Deflated'\n+130DF4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+130DF8 CRC                   00000000 (0)\n+130DFC Compressed Size       00000000 (0)\n+130E00 Uncompressed Size     00000000 (0)\n+130E04 Filename Length       003E (62)\n+130E06 Extra Length          0000 (0)\n+130E08 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x112099: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x130E08: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1120D4 PAYLOAD\n+130E46 PAYLOAD\n \n-112644 DATA DESCRIPTOR       08074B50 (134695760)\n-112648 CRC                   8AF1B8FB (2331097339)\n-11264C Compressed Size       00000570 (1392)\n-112650 Uncompressed Size     00000EF9 (3833)\n+1312C5 DATA DESCRIPTOR       08074B50 (134695760)\n+1312C9 CRC                   E49ADE4B (3835354699)\n+1312CD Compressed Size       0000047F (1151)\n+1312D1 Uncompressed Size     00000C26 (3110)\n \n-112654 LOCAL HEADER #1073    04034B50 (67324752)\n-112658 Extract Zip Spec      14 (20) '2.0'\n-112659 Extract OS            00 (0) 'MS-DOS'\n-11265A General Purpose Flag  0808 (2056)\n+1312D5 LOCAL HEADER #1073    04034B50 (67324752)\n+1312D9 Extract Zip Spec      14 (20) '2.0'\n+1312DA Extract OS            00 (0) 'MS-DOS'\n+1312DB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11265C Compression Method    0008 (8) 'Deflated'\n-11265E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-112662 CRC                   00000000 (0)\n-112666 Compressed Size       00000000 (0)\n-11266A Uncompressed Size     00000000 (0)\n-11266E Filename Length       0016 (22)\n-112670 Extra Length          0000 (0)\n-112672 Filename              'XXXXXXXXXXXXXXXXXXXXXX'\n+1312DD Compression Method    0008 (8) 'Deflated'\n+1312DF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1312E3 CRC                   00000000 (0)\n+1312E7 Compressed Size       00000000 (0)\n+1312EB Uncompressed Size     00000000 (0)\n+1312EF Filename Length       0031 (49)\n+1312F1 Extra Length          0000 (0)\n+1312F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x112672: Filename 'XXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1312F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-112688 PAYLOAD               XX\n+131324 PAYLOAD\n \n-11268A DATA DESCRIPTOR       08074B50 (134695760)\n-11268E CRC                   00000000 (0)\n-112692 Compressed Size       00000002 (2)\n-112696 Uncompressed Size     00000000 (0)\n+131573 DATA DESCRIPTOR       08074B50 (134695760)\n+131577 CRC                   CAFD8C87 (3405614215)\n+13157B Compressed Size       0000024F (591)\n+13157F Uncompressed Size     00000411 (1041)\n \n-11269A LOCAL HEADER #1074    04034B50 (67324752)\n-11269E Extract Zip Spec      14 (20) '2.0'\n-11269F Extract OS            00 (0) 'MS-DOS'\n-1126A0 General Purpose Flag  0808 (2056)\n+131583 LOCAL HEADER #1074    04034B50 (67324752)\n+131587 Extract Zip Spec      14 (20) '2.0'\n+131588 Extract OS            00 (0) 'MS-DOS'\n+131589 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1126A2 Compression Method    0008 (8) 'Deflated'\n-1126A4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1126A8 CRC                   00000000 (0)\n-1126AC Compressed Size       00000000 (0)\n-1126B0 Uncompressed Size     00000000 (0)\n-1126B4 Filename Length       001E (30)\n-1126B6 Extra Length          0000 (0)\n-1126B8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13158B Compression Method    0008 (8) 'Deflated'\n+13158D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+131591 CRC                   00000000 (0)\n+131595 Compressed Size       00000000 (0)\n+131599 Uncompressed Size     00000000 (0)\n+13159D Filename Length       003F (63)\n+13159F Extra Length          0000 (0)\n+1315A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1126B8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1315A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1126D6 PAYLOAD               XX\n+1315E0 PAYLOAD\n \n-1126D8 DATA DESCRIPTOR       08074B50 (134695760)\n-1126DC CRC                   00000000 (0)\n-1126E0 Compressed Size       00000002 (2)\n-1126E4 Uncompressed Size     00000000 (0)\n+131BA3 DATA DESCRIPTOR       08074B50 (134695760)\n+131BA7 CRC                   3D20A35F (1025549151)\n+131BAB Compressed Size       000005C3 (1475)\n+131BAF Uncompressed Size     0000127A (4730)\n \n-1126E8 LOCAL HEADER #1075    04034B50 (67324752)\n-1126EC Extract Zip Spec      14 (20) '2.0'\n-1126ED Extract OS            00 (0) 'MS-DOS'\n-1126EE General Purpose Flag  0808 (2056)\n+131BB3 LOCAL HEADER #1075    04034B50 (67324752)\n+131BB7 Extract Zip Spec      14 (20) '2.0'\n+131BB8 Extract OS            00 (0) 'MS-DOS'\n+131BB9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1126F0 Compression Method    0008 (8) 'Deflated'\n-1126F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1126F6 CRC                   00000000 (0)\n-1126FA Compressed Size       00000000 (0)\n-1126FE Uncompressed Size     00000000 (0)\n-112702 Filename Length       002E (46)\n-112704 Extra Length          0000 (0)\n-112706 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+131BBB Compression Method    0008 (8) 'Deflated'\n+131BBD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+131BC1 CRC                   00000000 (0)\n+131BC5 Compressed Size       00000000 (0)\n+131BC9 Uncompressed Size     00000000 (0)\n+131BCD Filename Length       003C (60)\n+131BCF Extra Length          0000 (0)\n+131BD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x112706: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x131BD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-112734 PAYLOAD\n+131C0D PAYLOAD\n \n-11294D DATA DESCRIPTOR       08074B50 (134695760)\n-112951 CRC                   00900547 (9438535)\n-112955 Compressed Size       00000219 (537)\n-112959 Uncompressed Size     000003BF (959)\n+131FB5 DATA DESCRIPTOR       08074B50 (134695760)\n+131FB9 CRC                   74B3513E (1957908798)\n+131FBD Compressed Size       000003A8 (936)\n+131FC1 Uncompressed Size     00000A15 (2581)\n \n-11295D LOCAL HEADER #1076    04034B50 (67324752)\n-112961 Extract Zip Spec      14 (20) '2.0'\n-112962 Extract OS            00 (0) 'MS-DOS'\n-112963 General Purpose Flag  0808 (2056)\n+131FC5 LOCAL HEADER #1076    04034B50 (67324752)\n+131FC9 Extract Zip Spec      14 (20) '2.0'\n+131FCA Extract OS            00 (0) 'MS-DOS'\n+131FCB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-112965 Compression Method    0008 (8) 'Deflated'\n-112967 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11296B CRC                   00000000 (0)\n-11296F Compressed Size       00000000 (0)\n-112973 Uncompressed Size     00000000 (0)\n-112977 Filename Length       0033 (51)\n-112979 Extra Length          0000 (0)\n-11297B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+131FCD Compression Method    0008 (8) 'Deflated'\n+131FCF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+131FD3 CRC                   00000000 (0)\n+131FD7 Compressed Size       00000000 (0)\n+131FDB Uncompressed Size     00000000 (0)\n+131FDF Filename Length       003F (63)\n+131FE1 Extra Length          0000 (0)\n+131FE3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11297B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x131FE3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1129AE PAYLOAD\n+132022 PAYLOAD\n \n-112CC1 DATA DESCRIPTOR       08074B50 (134695760)\n-112CC5 CRC                   C50B0632 (3305834034)\n-112CC9 Compressed Size       00000313 (787)\n-112CCD Uncompressed Size     000007AE (1966)\n+1324A6 DATA DESCRIPTOR       08074B50 (134695760)\n+1324AA CRC                   755A7982 (1968863618)\n+1324AE Compressed Size       00000484 (1156)\n+1324B2 Uncompressed Size     00000C91 (3217)\n \n-112CD1 LOCAL HEADER #1077    04034B50 (67324752)\n-112CD5 Extract Zip Spec      14 (20) '2.0'\n-112CD6 Extract OS            00 (0) 'MS-DOS'\n-112CD7 General Purpose Flag  0808 (2056)\n+1324B6 LOCAL HEADER #1077    04034B50 (67324752)\n+1324BA Extract Zip Spec      14 (20) '2.0'\n+1324BB Extract OS            00 (0) 'MS-DOS'\n+1324BC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-112CD9 Compression Method    0008 (8) 'Deflated'\n-112CDB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-112CDF CRC                   00000000 (0)\n-112CE3 Compressed Size       00000000 (0)\n-112CE7 Uncompressed Size     00000000 (0)\n-112CEB Filename Length       0031 (49)\n-112CED Extra Length          0000 (0)\n-112CEF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1324BE Compression Method    0008 (8) 'Deflated'\n+1324C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1324C4 CRC                   00000000 (0)\n+1324C8 Compressed Size       00000000 (0)\n+1324CC Uncompressed Size     00000000 (0)\n+1324D0 Filename Length       003F (63)\n+1324D2 Extra Length          0000 (0)\n+1324D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x112CEF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1324D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-112D20 PAYLOAD\n+132513 PAYLOAD\n \n-112F85 DATA DESCRIPTOR       08074B50 (134695760)\n-112F89 CRC                   C514DA82 (3306478210)\n-112F8D Compressed Size       00000265 (613)\n-112F91 Uncompressed Size     00000465 (1125)\n+13283A DATA DESCRIPTOR       08074B50 (134695760)\n+13283E CRC                   CB062A84 (3406178948)\n+132842 Compressed Size       00000327 (807)\n+132846 Uncompressed Size     000007E1 (2017)\n \n-112F95 LOCAL HEADER #1078    04034B50 (67324752)\n-112F99 Extract Zip Spec      14 (20) '2.0'\n-112F9A Extract OS            00 (0) 'MS-DOS'\n-112F9B General Purpose Flag  0808 (2056)\n+13284A LOCAL HEADER #1078    04034B50 (67324752)\n+13284E Extract Zip Spec      14 (20) '2.0'\n+13284F Extract OS            00 (0) 'MS-DOS'\n+132850 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-112F9D Compression Method    0008 (8) 'Deflated'\n-112F9F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-112FA3 CRC                   00000000 (0)\n-112FA7 Compressed Size       00000000 (0)\n-112FAB Uncompressed Size     00000000 (0)\n-112FAF Filename Length       0025 (37)\n-112FB1 Extra Length          0000 (0)\n-112FB3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+132852 Compression Method    0008 (8) 'Deflated'\n+132854 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+132858 CRC                   00000000 (0)\n+13285C Compressed Size       00000000 (0)\n+132860 Uncompressed Size     00000000 (0)\n+132864 Filename Length       0034 (52)\n+132866 Extra Length          0000 (0)\n+132868 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x112FB3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x132868: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-112FD8 PAYLOAD\n+13289C PAYLOAD\n \n-113820 DATA DESCRIPTOR       08074B50 (134695760)\n-113824 CRC                   3836550F (943084815)\n-113828 Compressed Size       00000848 (2120)\n-11382C Uncompressed Size     00001E84 (7812)\n+133670 DATA DESCRIPTOR       08074B50 (134695760)\n+133674 CRC                   D7522A4D (3612486221)\n+133678 Compressed Size       00000DD4 (3540)\n+13367C Uncompressed Size     00003319 (13081)\n \n-113830 LOCAL HEADER #1079    04034B50 (67324752)\n-113834 Extract Zip Spec      14 (20) '2.0'\n-113835 Extract OS            00 (0) 'MS-DOS'\n-113836 General Purpose Flag  0808 (2056)\n+133680 LOCAL HEADER #1079    04034B50 (67324752)\n+133684 Extract Zip Spec      14 (20) '2.0'\n+133685 Extract OS            00 (0) 'MS-DOS'\n+133686 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-113838 Compression Method    0008 (8) 'Deflated'\n-11383A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11383E CRC                   00000000 (0)\n-113842 Compressed Size       00000000 (0)\n-113846 Uncompressed Size     00000000 (0)\n-11384A Filename Length       0026 (38)\n-11384C Extra Length          0000 (0)\n-11384E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+133688 Compression Method    0008 (8) 'Deflated'\n+13368A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13368E CRC                   00000000 (0)\n+133692 Compressed Size       00000000 (0)\n+133696 Uncompressed Size     00000000 (0)\n+13369A Filename Length       003A (58)\n+13369C Extra Length          0000 (0)\n+13369E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11384E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13369E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-113874 PAYLOAD\n+1336D8 PAYLOAD\n \n-113CB7 DATA DESCRIPTOR       08074B50 (134695760)\n-113CBB CRC                   16C36050 (381902928)\n-113CBF Compressed Size       00000443 (1091)\n-113CC3 Uncompressed Size     00000A30 (2608)\n+133968 DATA DESCRIPTOR       08074B50 (134695760)\n+13396C CRC                   6BBB41BD (1807434173)\n+133970 Compressed Size       00000290 (656)\n+133974 Uncompressed Size     000004F5 (1269)\n \n-113CC7 LOCAL HEADER #1080    04034B50 (67324752)\n-113CCB Extract Zip Spec      14 (20) '2.0'\n-113CCC Extract OS            00 (0) 'MS-DOS'\n-113CCD General Purpose Flag  0808 (2056)\n+133978 LOCAL HEADER #1080    04034B50 (67324752)\n+13397C Extract Zip Spec      14 (20) '2.0'\n+13397D Extract OS            00 (0) 'MS-DOS'\n+13397E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-113CCF Compression Method    0008 (8) 'Deflated'\n-113CD1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-113CD5 CRC                   00000000 (0)\n-113CD9 Compressed Size       00000000 (0)\n-113CDD Uncompressed Size     00000000 (0)\n-113CE1 Filename Length       002A (42)\n-113CE3 Extra Length          0000 (0)\n-113CE5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+133980 Compression Method    0008 (8) 'Deflated'\n+133982 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+133986 CRC                   00000000 (0)\n+13398A Compressed Size       00000000 (0)\n+13398E Uncompressed Size     00000000 (0)\n+133992 Filename Length       0039 (57)\n+133994 Extra Length          0000 (0)\n+133996 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x113CE5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x133996: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-113D0F PAYLOAD\n+1339CF PAYLOAD\n \n-114111 DATA DESCRIPTOR       08074B50 (134695760)\n-114115 CRC                   5C1C5F40 (1545363264)\n-114119 Compressed Size       00000402 (1026)\n-11411D Uncompressed Size     00000A28 (2600)\n+133D0B DATA DESCRIPTOR       08074B50 (134695760)\n+133D0F CRC                   086F2C9C (141503644)\n+133D13 Compressed Size       0000033C (828)\n+133D17 Uncompressed Size     000006D1 (1745)\n \n-114121 LOCAL HEADER #1081    04034B50 (67324752)\n-114125 Extract Zip Spec      14 (20) '2.0'\n-114126 Extract OS            00 (0) 'MS-DOS'\n-114127 General Purpose Flag  0808 (2056)\n+133D1B LOCAL HEADER #1081    04034B50 (67324752)\n+133D1F Extract Zip Spec      14 (20) '2.0'\n+133D20 Extract OS            00 (0) 'MS-DOS'\n+133D21 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-114129 Compression Method    0008 (8) 'Deflated'\n-11412B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11412F CRC                   00000000 (0)\n-114133 Compressed Size       00000000 (0)\n-114137 Uncompressed Size     00000000 (0)\n-11413B Filename Length       0028 (40)\n-11413D Extra Length          0000 (0)\n-11413F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+133D23 Compression Method    0008 (8) 'Deflated'\n+133D25 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+133D29 CRC                   00000000 (0)\n+133D2D Compressed Size       00000000 (0)\n+133D31 Uncompressed Size     00000000 (0)\n+133D35 Filename Length       0038 (56)\n+133D37 Extra Length          0000 (0)\n+133D39 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11413F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x133D39: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-114167 PAYLOAD\n+133D71 PAYLOAD\n \n-114D3D DATA DESCRIPTOR       08074B50 (134695760)\n-114D41 CRC                   93FCD4E8 (2482820328)\n-114D45 Compressed Size       00000BD6 (3030)\n-114D49 Uncompressed Size     00003024 (12324)\n+1343BA DATA DESCRIPTOR       08074B50 (134695760)\n+1343BE CRC                   A0E895BE (2699597246)\n+1343C2 Compressed Size       00000649 (1609)\n+1343C6 Uncompressed Size     00001200 (4608)\n \n-114D4D LOCAL HEADER #1082    04034B50 (67324752)\n-114D51 Extract Zip Spec      14 (20) '2.0'\n-114D52 Extract OS            00 (0) 'MS-DOS'\n-114D53 General Purpose Flag  0808 (2056)\n+1343CA LOCAL HEADER #1082    04034B50 (67324752)\n+1343CE Extract Zip Spec      14 (20) '2.0'\n+1343CF Extract OS            00 (0) 'MS-DOS'\n+1343D0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-114D55 Compression Method    0008 (8) 'Deflated'\n-114D57 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-114D5B CRC                   00000000 (0)\n-114D5F Compressed Size       00000000 (0)\n-114D63 Uncompressed Size     00000000 (0)\n-114D67 Filename Length       002C (44)\n-114D69 Extra Length          0000 (0)\n-114D6B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1343D2 Compression Method    0008 (8) 'Deflated'\n+1343D4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1343D8 CRC                   00000000 (0)\n+1343DC Compressed Size       00000000 (0)\n+1343E0 Uncompressed Size     00000000 (0)\n+1343E4 Filename Length       003A (58)\n+1343E6 Extra Length          0000 (0)\n+1343E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x114D6B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1343E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-114D97 PAYLOAD\n+134422 PAYLOAD\n \n-115147 DATA DESCRIPTOR       08074B50 (134695760)\n-11514B CRC                   735FA0B6 (1935646902)\n-11514F Compressed Size       000003B0 (944)\n-115153 Uncompressed Size     00000968 (2408)\n+13482E DATA DESCRIPTOR       08074B50 (134695760)\n+134832 CRC                   939A92A5 (2476380837)\n+134836 Compressed Size       0000040C (1036)\n+13483A Uncompressed Size     000009EA (2538)\n \n-115157 LOCAL HEADER #1083    04034B50 (67324752)\n-11515B Extract Zip Spec      14 (20) '2.0'\n-11515C Extract OS            00 (0) 'MS-DOS'\n-11515D General Purpose Flag  0808 (2056)\n+13483E LOCAL HEADER #1083    04034B50 (67324752)\n+134842 Extract Zip Spec      14 (20) '2.0'\n+134843 Extract OS            00 (0) 'MS-DOS'\n+134844 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11515F Compression Method    0008 (8) 'Deflated'\n-115161 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-115165 CRC                   00000000 (0)\n-115169 Compressed Size       00000000 (0)\n-11516D Uncompressed Size     00000000 (0)\n-115171 Filename Length       0023 (35)\n-115173 Extra Length          0000 (0)\n-115175 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+134846 Compression Method    0008 (8) 'Deflated'\n+134848 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13484C CRC                   00000000 (0)\n+134850 Compressed Size       00000000 (0)\n+134854 Uncompressed Size     00000000 (0)\n+134858 Filename Length       0037 (55)\n+13485A Extra Length          0000 (0)\n+13485C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x115175: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13485C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-115198 PAYLOAD\n+134893 PAYLOAD\n \n-115609 DATA DESCRIPTOR       08074B50 (134695760)\n-11560D CRC                   2AE2442E (719471662)\n-115611 Compressed Size       00000471 (1137)\n-115615 Uncompressed Size     00000A18 (2584)\n+134BB2 DATA DESCRIPTOR       08074B50 (134695760)\n+134BB6 CRC                   4DDA4FAB (1306152875)\n+134BBA Compressed Size       0000031F (799)\n+134BBE Uncompressed Size     00000793 (1939)\n \n-115619 LOCAL HEADER #1084    04034B50 (67324752)\n-11561D Extract Zip Spec      14 (20) '2.0'\n-11561E Extract OS            00 (0) 'MS-DOS'\n-11561F General Purpose Flag  0808 (2056)\n+134BC2 LOCAL HEADER #1084    04034B50 (67324752)\n+134BC6 Extract Zip Spec      14 (20) '2.0'\n+134BC7 Extract OS            00 (0) 'MS-DOS'\n+134BC8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-115621 Compression Method    0008 (8) 'Deflated'\n-115623 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-115627 CRC                   00000000 (0)\n-11562B Compressed Size       00000000 (0)\n-11562F Uncompressed Size     00000000 (0)\n-115633 Filename Length       0022 (34)\n-115635 Extra Length          0000 (0)\n-115637 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+134BCA Compression Method    0008 (8) 'Deflated'\n+134BCC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+134BD0 CRC                   00000000 (0)\n+134BD4 Compressed Size       00000000 (0)\n+134BD8 Uncompressed Size     00000000 (0)\n+134BDC Filename Length       002F (47)\n+134BDE Extra Length          0000 (0)\n+134BE0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x115637: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x134BE0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-115659 PAYLOAD\n+134C0F PAYLOAD               XX\n \n-1158F2 DATA DESCRIPTOR       08074B50 (134695760)\n-1158F6 CRC                   525AF459 (1381692505)\n-1158FA Compressed Size       00000299 (665)\n-1158FE Uncompressed Size     0000053F (1343)\n+134C11 DATA DESCRIPTOR       08074B50 (134695760)\n+134C15 CRC                   00000000 (0)\n+134C19 Compressed Size       00000002 (2)\n+134C1D Uncompressed Size     00000000 (0)\n \n-115902 LOCAL HEADER #1085    04034B50 (67324752)\n-115906 Extract Zip Spec      14 (20) '2.0'\n-115907 Extract OS            00 (0) 'MS-DOS'\n-115908 General Purpose Flag  0808 (2056)\n+134C21 LOCAL HEADER #1085    04034B50 (67324752)\n+134C25 Extract Zip Spec      14 (20) '2.0'\n+134C26 Extract OS            00 (0) 'MS-DOS'\n+134C27 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11590A Compression Method    0008 (8) 'Deflated'\n-11590C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-115910 CRC                   00000000 (0)\n-115914 Compressed Size       00000000 (0)\n-115918 Uncompressed Size     00000000 (0)\n-11591C Filename Length       002A (42)\n-11591E Extra Length          0000 (0)\n-115920 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+134C29 Compression Method    0008 (8) 'Deflated'\n+134C2B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+134C2F CRC                   00000000 (0)\n+134C33 Compressed Size       00000000 (0)\n+134C37 Uncompressed Size     00000000 (0)\n+134C3B Filename Length       0037 (55)\n+134C3D Extra Length          0000 (0)\n+134C3F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x115920: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x134C3F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11594A PAYLOAD\n+134C76 PAYLOAD               XX\n \n-115BE7 DATA DESCRIPTOR       08074B50 (134695760)\n-115BEB CRC                   FC32E707 (4231194375)\n-115BEF Compressed Size       0000029D (669)\n-115BF3 Uncompressed Size     000005AC (1452)\n+134C78 DATA DESCRIPTOR       08074B50 (134695760)\n+134C7C CRC                   00000000 (0)\n+134C80 Compressed Size       00000002 (2)\n+134C84 Uncompressed Size     00000000 (0)\n \n-115BF7 LOCAL HEADER #1086    04034B50 (67324752)\n-115BFB Extract Zip Spec      14 (20) '2.0'\n-115BFC Extract OS            00 (0) 'MS-DOS'\n-115BFD General Purpose Flag  0808 (2056)\n+134C88 LOCAL HEADER #1086    04034B50 (67324752)\n+134C8C Extract Zip Spec      14 (20) '2.0'\n+134C8D Extract OS            00 (0) 'MS-DOS'\n+134C8E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-115BFF Compression Method    0008 (8) 'Deflated'\n-115C01 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-115C05 CRC                   00000000 (0)\n-115C09 Compressed Size       00000000 (0)\n-115C0D Uncompressed Size     00000000 (0)\n-115C11 Filename Length       0020 (32)\n-115C13 Extra Length          0000 (0)\n-115C15 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+134C90 Compression Method    0008 (8) 'Deflated'\n+134C92 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+134C96 CRC                   00000000 (0)\n+134C9A Compressed Size       00000000 (0)\n+134C9E Uncompressed Size     00000000 (0)\n+134CA2 Filename Length       005A (90)\n+134CA4 Extra Length          0000 (0)\n+134CA6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x115C15: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x134CA6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-115C35 PAYLOAD\n+134D00 PAYLOAD\n \n-116073 DATA DESCRIPTOR       08074B50 (134695760)\n-116077 CRC                   2EDA0DE9 (786042345)\n-11607B Compressed Size       0000043E (1086)\n-11607F Uncompressed Size     00000965 (2405)\n+135097 DATA DESCRIPTOR       08074B50 (134695760)\n+13509B CRC                   E3F9F330 (3824808752)\n+13509F Compressed Size       00000397 (919)\n+1350A3 Uncompressed Size     00000859 (2137)\n \n-116083 LOCAL HEADER #1087    04034B50 (67324752)\n-116087 Extract Zip Spec      14 (20) '2.0'\n-116088 Extract OS            00 (0) 'MS-DOS'\n-116089 General Purpose Flag  0808 (2056)\n+1350A7 LOCAL HEADER #1087    04034B50 (67324752)\n+1350AB Extract Zip Spec      14 (20) '2.0'\n+1350AC Extract OS            00 (0) 'MS-DOS'\n+1350AD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11608B Compression Method    0008 (8) 'Deflated'\n-11608D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-116091 CRC                   00000000 (0)\n-116095 Compressed Size       00000000 (0)\n-116099 Uncompressed Size     00000000 (0)\n-11609D Filename Length       0027 (39)\n-11609F Extra Length          0000 (0)\n-1160A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1350AF Compression Method    0008 (8) 'Deflated'\n+1350B1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1350B5 CRC                   00000000 (0)\n+1350B9 Compressed Size       00000000 (0)\n+1350BD Uncompressed Size     00000000 (0)\n+1350C1 Filename Length       004F (79)\n+1350C3 Extra Length          0000 (0)\n+1350C5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1160A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1350C5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1160C8 PAYLOAD\n+135114 PAYLOAD\n \n-116644 DATA DESCRIPTOR       08074B50 (134695760)\n-116648 CRC                   16263A19 (371603993)\n-11664C Compressed Size       0000057C (1404)\n-116650 Uncompressed Size     00000F7D (3965)\n+135445 DATA DESCRIPTOR       08074B50 (134695760)\n+135449 CRC                   879AD63A (2275071546)\n+13544D Compressed Size       00000331 (817)\n+135451 Uncompressed Size     000006F0 (1776)\n \n-116654 LOCAL HEADER #1088    04034B50 (67324752)\n-116658 Extract Zip Spec      14 (20) '2.0'\n-116659 Extract OS            00 (0) 'MS-DOS'\n-11665A General Purpose Flag  0808 (2056)\n+135455 LOCAL HEADER #1088    04034B50 (67324752)\n+135459 Extract Zip Spec      14 (20) '2.0'\n+13545A Extract OS            00 (0) 'MS-DOS'\n+13545B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11665C Compression Method    0008 (8) 'Deflated'\n-11665E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-116662 CRC                   00000000 (0)\n-116666 Compressed Size       00000000 (0)\n-11666A Uncompressed Size     00000000 (0)\n-11666E Filename Length       0024 (36)\n-116670 Extra Length          0000 (0)\n-116672 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13545D Compression Method    0008 (8) 'Deflated'\n+13545F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+135463 CRC                   00000000 (0)\n+135467 Compressed Size       00000000 (0)\n+13546B Uncompressed Size     00000000 (0)\n+13546F Filename Length       002B (43)\n+135471 Extra Length          0000 (0)\n+135473 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x116672: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x135473: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-116696 PAYLOAD\n+13549E PAYLOAD               XX\n \n-116AFD DATA DESCRIPTOR       08074B50 (134695760)\n-116B01 CRC                   4A170C4C (1243024460)\n-116B05 Compressed Size       00000467 (1127)\n-116B09 Uncompressed Size     00000EA1 (3745)\n+1354A0 DATA DESCRIPTOR       08074B50 (134695760)\n+1354A4 CRC                   00000000 (0)\n+1354A8 Compressed Size       00000002 (2)\n+1354AC Uncompressed Size     00000000 (0)\n \n-116B0D LOCAL HEADER #1089    04034B50 (67324752)\n-116B11 Extract Zip Spec      14 (20) '2.0'\n-116B12 Extract OS            00 (0) 'MS-DOS'\n-116B13 General Purpose Flag  0808 (2056)\n+1354B0 LOCAL HEADER #1089    04034B50 (67324752)\n+1354B4 Extract Zip Spec      14 (20) '2.0'\n+1354B5 Extract OS            00 (0) 'MS-DOS'\n+1354B6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-116B15 Compression Method    0008 (8) 'Deflated'\n-116B17 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-116B1B CRC                   00000000 (0)\n-116B1F Compressed Size       00000000 (0)\n-116B23 Uncompressed Size     00000000 (0)\n-116B27 Filename Length       0024 (36)\n-116B29 Extra Length          0000 (0)\n-116B2B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1354B8 Compression Method    0008 (8) 'Deflated'\n+1354BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1354BE CRC                   00000000 (0)\n+1354C2 Compressed Size       00000000 (0)\n+1354C6 Uncompressed Size     00000000 (0)\n+1354CA Filename Length       003B (59)\n+1354CC Extra Length          0000 (0)\n+1354CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x116B2B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1354CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-116B4F PAYLOAD\n+135509 PAYLOAD\n \n-116D4F DATA DESCRIPTOR       08074B50 (134695760)\n-116D53 CRC                   D1AB43CA (3517662154)\n-116D57 Compressed Size       00000200 (512)\n-116D5B Uncompressed Size     00000377 (887)\n+135793 DATA DESCRIPTOR       08074B50 (134695760)\n+135797 CRC                   FC72AE7D (4235374205)\n+13579B Compressed Size       0000028A (650)\n+13579F Uncompressed Size     00000523 (1315)\n \n-116D5F LOCAL HEADER #1090    04034B50 (67324752)\n-116D63 Extract Zip Spec      14 (20) '2.0'\n-116D64 Extract OS            00 (0) 'MS-DOS'\n-116D65 General Purpose Flag  0808 (2056)\n+1357A3 LOCAL HEADER #1090    04034B50 (67324752)\n+1357A7 Extract Zip Spec      14 (20) '2.0'\n+1357A8 Extract OS            00 (0) 'MS-DOS'\n+1357A9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-116D67 Compression Method    0008 (8) 'Deflated'\n-116D69 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-116D6D CRC                   00000000 (0)\n-116D71 Compressed Size       00000000 (0)\n-116D75 Uncompressed Size     00000000 (0)\n-116D79 Filename Length       0021 (33)\n-116D7B Extra Length          0000 (0)\n-116D7D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1357AB Compression Method    0008 (8) 'Deflated'\n+1357AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1357B1 CRC                   00000000 (0)\n+1357B5 Compressed Size       00000000 (0)\n+1357B9 Uncompressed Size     00000000 (0)\n+1357BD Filename Length       003D (61)\n+1357BF Extra Length          0000 (0)\n+1357C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x116D7D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1357C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-116D9E PAYLOAD\n+1357FE PAYLOAD\n \n-117063 DATA DESCRIPTOR       08074B50 (134695760)\n-117067 CRC                   19B4DE27 (431283751)\n-11706B Compressed Size       000002C5 (709)\n-11706F Uncompressed Size     000005D1 (1489)\n+135E24 DATA DESCRIPTOR       08074B50 (134695760)\n+135E28 CRC                   98665538 (2556843320)\n+135E2C Compressed Size       00000626 (1574)\n+135E30 Uncompressed Size     000015FB (5627)\n \n-117073 LOCAL HEADER #1091    04034B50 (67324752)\n-117077 Extract Zip Spec      14 (20) '2.0'\n-117078 Extract OS            00 (0) 'MS-DOS'\n-117079 General Purpose Flag  0808 (2056)\n+135E34 LOCAL HEADER #1091    04034B50 (67324752)\n+135E38 Extract Zip Spec      14 (20) '2.0'\n+135E39 Extract OS            00 (0) 'MS-DOS'\n+135E3A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11707B Compression Method    0008 (8) 'Deflated'\n-11707D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-117081 CRC                   00000000 (0)\n-117085 Compressed Size       00000000 (0)\n-117089 Uncompressed Size     00000000 (0)\n-11708D Filename Length       0029 (41)\n-11708F Extra Length          0000 (0)\n-117091 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+135E3C Compression Method    0008 (8) 'Deflated'\n+135E3E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+135E42 CRC                   00000000 (0)\n+135E46 Compressed Size       00000000 (0)\n+135E4A Uncompressed Size     00000000 (0)\n+135E4E Filename Length       002F (47)\n+135E50 Extra Length          0000 (0)\n+135E52 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x117091: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x135E52: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1170BA PAYLOAD\n+135E81 PAYLOAD               XX\n \n-117365 DATA DESCRIPTOR       08074B50 (134695760)\n-117369 CRC                   D82F1E47 (3626966599)\n-11736D Compressed Size       000002AB (683)\n-117371 Uncompressed Size     0000059A (1434)\n+135E83 DATA DESCRIPTOR       08074B50 (134695760)\n+135E87 CRC                   00000000 (0)\n+135E8B Compressed Size       00000002 (2)\n+135E8F Uncompressed Size     00000000 (0)\n \n-117375 LOCAL HEADER #1092    04034B50 (67324752)\n-117379 Extract Zip Spec      14 (20) '2.0'\n-11737A Extract OS            00 (0) 'MS-DOS'\n-11737B General Purpose Flag  0808 (2056)\n+135E93 LOCAL HEADER #1092    04034B50 (67324752)\n+135E97 Extract Zip Spec      14 (20) '2.0'\n+135E98 Extract OS            00 (0) 'MS-DOS'\n+135E99 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11737D Compression Method    0008 (8) 'Deflated'\n-11737F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-117383 CRC                   00000000 (0)\n-117387 Compressed Size       00000000 (0)\n-11738B Uncompressed Size     00000000 (0)\n-11738F Filename Length       002A (42)\n-117391 Extra Length          0000 (0)\n-117393 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+135E9B Compression Method    0008 (8) 'Deflated'\n+135E9D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+135EA1 CRC                   00000000 (0)\n+135EA5 Compressed Size       00000000 (0)\n+135EA9 Uncompressed Size     00000000 (0)\n+135EAD Filename Length       0036 (54)\n+135EAF Extra Length          0000 (0)\n+135EB1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x117393: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x135EB1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1173BD PAYLOAD\n+135EE7 PAYLOAD\n \n-11772C DATA DESCRIPTOR       08074B50 (134695760)\n-117730 CRC                   2BFDB64A (738047562)\n-117734 Compressed Size       0000036F (879)\n-117738 Uncompressed Size     000007D0 (2000)\n+136319 DATA DESCRIPTOR       08074B50 (134695760)\n+13631D CRC                   E36316D8 (3814921944)\n+136321 Compressed Size       00000432 (1074)\n+136325 Uncompressed Size     00000F30 (3888)\n \n-11773C LOCAL HEADER #1093    04034B50 (67324752)\n-117740 Extract Zip Spec      14 (20) '2.0'\n-117741 Extract OS            00 (0) 'MS-DOS'\n-117742 General Purpose Flag  0808 (2056)\n+136329 LOCAL HEADER #1093    04034B50 (67324752)\n+13632D Extract Zip Spec      14 (20) '2.0'\n+13632E Extract OS            00 (0) 'MS-DOS'\n+13632F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-117744 Compression Method    0008 (8) 'Deflated'\n-117746 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11774A CRC                   00000000 (0)\n-11774E Compressed Size       00000000 (0)\n-117752 Uncompressed Size     00000000 (0)\n-117756 Filename Length       0022 (34)\n-117758 Extra Length          0000 (0)\n-11775A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+136331 Compression Method    0008 (8) 'Deflated'\n+136333 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+136337 CRC                   00000000 (0)\n+13633B Compressed Size       00000000 (0)\n+13633F Uncompressed Size     00000000 (0)\n+136343 Filename Length       003D (61)\n+136345 Extra Length          0000 (0)\n+136347 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11775A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x136347: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11777C PAYLOAD\n+136384 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-117D4C DATA DESCRIPTOR       08074B50 (134695760)\n-117D50 CRC                   CCB43BAA (3434363818)\n-117D54 Compressed Size       000005D0 (1488)\n-117D58 Uncompressed Size     00000DF0 (3568)\n+1363C7 DATA DESCRIPTOR       08074B50 (134695760)\n+1363CB CRC                   A1DBB70A (2715531018)\n+1363CF Compressed Size       00000043 (67)\n+1363D3 Uncompressed Size     00000045 (69)\n \n-117D5C LOCAL HEADER #1094    04034B50 (67324752)\n-117D60 Extract Zip Spec      14 (20) '2.0'\n-117D61 Extract OS            00 (0) 'MS-DOS'\n-117D62 General Purpose Flag  0808 (2056)\n+1363D7 LOCAL HEADER #1094    04034B50 (67324752)\n+1363DB Extract Zip Spec      14 (20) '2.0'\n+1363DC Extract OS            00 (0) 'MS-DOS'\n+1363DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-117D64 Compression Method    0008 (8) 'Deflated'\n-117D66 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-117D6A CRC                   00000000 (0)\n-117D6E Compressed Size       00000000 (0)\n-117D72 Uncompressed Size     00000000 (0)\n-117D76 Filename Length       0028 (40)\n-117D78 Extra Length          0000 (0)\n-117D7A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1363DF Compression Method    0008 (8) 'Deflated'\n+1363E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1363E5 CRC                   00000000 (0)\n+1363E9 Compressed Size       00000000 (0)\n+1363ED Uncompressed Size     00000000 (0)\n+1363F1 Filename Length       0015 (21)\n+1363F3 Extra Length          0000 (0)\n+1363F5 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x117D7A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1363F5: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-117DA2 PAYLOAD\n+13640A PAYLOAD               XX\n \n-11806D DATA DESCRIPTOR       08074B50 (134695760)\n-118071 CRC                   0D33E2B2 (221504178)\n-118075 Compressed Size       000002CB (715)\n-118079 Uncompressed Size     000005CC (1484)\n+13640C DATA DESCRIPTOR       08074B50 (134695760)\n+136410 CRC                   00000000 (0)\n+136414 Compressed Size       00000002 (2)\n+136418 Uncompressed Size     00000000 (0)\n \n-11807D LOCAL HEADER #1095    04034B50 (67324752)\n-118081 Extract Zip Spec      14 (20) '2.0'\n-118082 Extract OS            00 (0) 'MS-DOS'\n-118083 General Purpose Flag  0808 (2056)\n+13641C LOCAL HEADER #1095    04034B50 (67324752)\n+136420 Extract Zip Spec      14 (20) '2.0'\n+136421 Extract OS            00 (0) 'MS-DOS'\n+136422 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-118085 Compression Method    0008 (8) 'Deflated'\n-118087 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11808B CRC                   00000000 (0)\n-11808F Compressed Size       00000000 (0)\n-118093 Uncompressed Size     00000000 (0)\n-118097 Filename Length       0026 (38)\n-118099 Extra Length          0000 (0)\n-11809B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+136424 Compression Method    0008 (8) 'Deflated'\n+136426 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13642A CRC                   00000000 (0)\n+13642E Compressed Size       00000000 (0)\n+136432 Uncompressed Size     00000000 (0)\n+136436 Filename Length       0019 (25)\n+136438 Extra Length          0000 (0)\n+13643A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11809B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13643A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1180C1 PAYLOAD\n+136453 PAYLOAD               XX\n \n-1183BA DATA DESCRIPTOR       08074B50 (134695760)\n-1183BE CRC                   319BF765 (832304997)\n-1183C2 Compressed Size       000002F9 (761)\n-1183C6 Uncompressed Size     000006DD (1757)\n+136455 DATA DESCRIPTOR       08074B50 (134695760)\n+136459 CRC                   00000000 (0)\n+13645D Compressed Size       00000002 (2)\n+136461 Uncompressed Size     00000000 (0)\n \n-1183CA LOCAL HEADER #1096    04034B50 (67324752)\n-1183CE Extract Zip Spec      14 (20) '2.0'\n-1183CF Extract OS            00 (0) 'MS-DOS'\n-1183D0 General Purpose Flag  0808 (2056)\n+136465 LOCAL HEADER #1096    04034B50 (67324752)\n+136469 Extract Zip Spec      14 (20) '2.0'\n+13646A Extract OS            00 (0) 'MS-DOS'\n+13646B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1183D2 Compression Method    0008 (8) 'Deflated'\n-1183D4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1183D8 CRC                   00000000 (0)\n-1183DC Compressed Size       00000000 (0)\n-1183E0 Uncompressed Size     00000000 (0)\n-1183E4 Filename Length       0020 (32)\n-1183E6 Extra Length          0000 (0)\n-1183E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13646D Compression Method    0008 (8) 'Deflated'\n+13646F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+136473 CRC                   00000000 (0)\n+136477 Compressed Size       00000000 (0)\n+13647B Uncompressed Size     00000000 (0)\n+13647F Filename Length       0022 (34)\n+136481 Extra Length          0000 (0)\n+136483 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1183E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x136483: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-118408 PAYLOAD\n+1364A5 PAYLOAD               XX\n \n-118A47 DATA DESCRIPTOR       08074B50 (134695760)\n-118A4B CRC                   7799251E (2006525214)\n-118A4F Compressed Size       0000063F (1599)\n-118A53 Uncompressed Size     00001541 (5441)\n+1364A7 DATA DESCRIPTOR       08074B50 (134695760)\n+1364AB CRC                   00000000 (0)\n+1364AF Compressed Size       00000002 (2)\n+1364B3 Uncompressed Size     00000000 (0)\n \n-118A57 LOCAL HEADER #1097    04034B50 (67324752)\n-118A5B Extract Zip Spec      14 (20) '2.0'\n-118A5C Extract OS            00 (0) 'MS-DOS'\n-118A5D General Purpose Flag  0808 (2056)\n+1364B7 LOCAL HEADER #1097    04034B50 (67324752)\n+1364BB Extract Zip Spec      14 (20) '2.0'\n+1364BC Extract OS            00 (0) 'MS-DOS'\n+1364BD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-118A5F Compression Method    0008 (8) 'Deflated'\n-118A61 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-118A65 CRC                   00000000 (0)\n-118A69 Compressed Size       00000000 (0)\n-118A6D Uncompressed Size     00000000 (0)\n-118A71 Filename Length       0026 (38)\n-118A73 Extra Length          0000 (0)\n-118A75 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1364BF Compression Method    0008 (8) 'Deflated'\n+1364C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1364C5 CRC                   00000000 (0)\n+1364C9 Compressed Size       00000000 (0)\n+1364CD Uncompressed Size     00000000 (0)\n+1364D1 Filename Length       0029 (41)\n+1364D3 Extra Length          0000 (0)\n+1364D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x118A75: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1364D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-118A9B PAYLOAD\n+1364FE PAYLOAD               XX\n \n-118D17 DATA DESCRIPTOR       08074B50 (134695760)\n-118D1B CRC                   3BFD1345 (1006441285)\n-118D1F Compressed Size       0000027C (636)\n-118D23 Uncompressed Size     0000059E (1438)\n+136500 DATA DESCRIPTOR       08074B50 (134695760)\n+136504 CRC                   00000000 (0)\n+136508 Compressed Size       00000002 (2)\n+13650C Uncompressed Size     00000000 (0)\n \n-118D27 LOCAL HEADER #1098    04034B50 (67324752)\n-118D2B Extract Zip Spec      14 (20) '2.0'\n-118D2C Extract OS            00 (0) 'MS-DOS'\n-118D2D General Purpose Flag  0808 (2056)\n+136510 LOCAL HEADER #1098    04034B50 (67324752)\n+136514 Extract Zip Spec      14 (20) '2.0'\n+136515 Extract OS            00 (0) 'MS-DOS'\n+136516 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-118D2F Compression Method    0008 (8) 'Deflated'\n-118D31 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-118D35 CRC                   00000000 (0)\n-118D39 Compressed Size       00000000 (0)\n-118D3D Uncompressed Size     00000000 (0)\n-118D41 Filename Length       0024 (36)\n-118D43 Extra Length          0000 (0)\n-118D45 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+136518 Compression Method    0008 (8) 'Deflated'\n+13651A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13651E CRC                   00000000 (0)\n+136522 Compressed Size       00000000 (0)\n+136526 Uncompressed Size     00000000 (0)\n+13652A Filename Length       003C (60)\n+13652C Extra Length          0000 (0)\n+13652E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x118D45: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13652E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-118D69 PAYLOAD\n+13656A PAYLOAD\n \n-119E85 DATA DESCRIPTOR       08074B50 (134695760)\n-119E89 CRC                   8B2B5BC6 (2334874566)\n-119E8D Compressed Size       0000111C (4380)\n-119E91 Uncompressed Size     00005703 (22275)\n+136E4A DATA DESCRIPTOR       08074B50 (134695760)\n+136E4E CRC                   E5707DAD (3849354669)\n+136E52 Compressed Size       000008E0 (2272)\n+136E56 Uncompressed Size     00001EB3 (7859)\n \n-119E95 LOCAL HEADER #1099    04034B50 (67324752)\n-119E99 Extract Zip Spec      14 (20) '2.0'\n-119E9A Extract OS            00 (0) 'MS-DOS'\n-119E9B General Purpose Flag  0808 (2056)\n+136E5A LOCAL HEADER #1099    04034B50 (67324752)\n+136E5E Extract Zip Spec      14 (20) '2.0'\n+136E5F Extract OS            00 (0) 'MS-DOS'\n+136E60 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-119E9D Compression Method    0008 (8) 'Deflated'\n-119E9F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-119EA3 CRC                   00000000 (0)\n-119EA7 Compressed Size       00000000 (0)\n-119EAB Uncompressed Size     00000000 (0)\n-119EAF Filename Length       0026 (38)\n-119EB1 Extra Length          0000 (0)\n-119EB3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+136E62 Compression Method    0008 (8) 'Deflated'\n+136E64 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+136E68 CRC                   00000000 (0)\n+136E6C Compressed Size       00000000 (0)\n+136E70 Uncompressed Size     00000000 (0)\n+136E74 Filename Length       0044 (68)\n+136E76 Extra Length          0000 (0)\n+136E78 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x119EB3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x136E78: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-119ED9 PAYLOAD\n+136EBC PAYLOAD\n \n-11A351 DATA DESCRIPTOR       08074B50 (134695760)\n-11A355 CRC                   D96AD9D5 (3647658453)\n-11A359 Compressed Size       00000478 (1144)\n-11A35D Uncompressed Size     00000D23 (3363)\n+1374BC DATA DESCRIPTOR       08074B50 (134695760)\n+1374C0 CRC                   6680C3C2 (1719714754)\n+1374C4 Compressed Size       00000600 (1536)\n+1374C8 Uncompressed Size     00001240 (4672)\n \n-11A361 LOCAL HEADER #1100    04034B50 (67324752)\n-11A365 Extract Zip Spec      14 (20) '2.0'\n-11A366 Extract OS            00 (0) 'MS-DOS'\n-11A367 General Purpose Flag  0808 (2056)\n+1374CC LOCAL HEADER #1100    04034B50 (67324752)\n+1374D0 Extract Zip Spec      14 (20) '2.0'\n+1374D1 Extract OS            00 (0) 'MS-DOS'\n+1374D2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11A369 Compression Method    0008 (8) 'Deflated'\n-11A36B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11A36F CRC                   00000000 (0)\n-11A373 Compressed Size       00000000 (0)\n-11A377 Uncompressed Size     00000000 (0)\n-11A37B Filename Length       0027 (39)\n-11A37D Extra Length          0000 (0)\n-11A37F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1374D4 Compression Method    0008 (8) 'Deflated'\n+1374D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1374DA CRC                   00000000 (0)\n+1374DE Compressed Size       00000000 (0)\n+1374E2 Uncompressed Size     00000000 (0)\n+1374E6 Filename Length       002E (46)\n+1374E8 Extra Length          0000 (0)\n+1374EA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11A37F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1374EA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11A3A6 PAYLOAD\n+137518 PAYLOAD               XX\n \n-11AE96 DATA DESCRIPTOR       08074B50 (134695760)\n-11AE9A CRC                   7D1A8DDF (2098892255)\n-11AE9E Compressed Size       00000AF0 (2800)\n-11AEA2 Uncompressed Size     00003A8A (14986)\n+13751A DATA DESCRIPTOR       08074B50 (134695760)\n+13751E CRC                   00000000 (0)\n+137522 Compressed Size       00000002 (2)\n+137526 Uncompressed Size     00000000 (0)\n \n-11AEA6 LOCAL HEADER #1101    04034B50 (67324752)\n-11AEAA Extract Zip Spec      14 (20) '2.0'\n-11AEAB Extract OS            00 (0) 'MS-DOS'\n-11AEAC General Purpose Flag  0808 (2056)\n+13752A LOCAL HEADER #1101    04034B50 (67324752)\n+13752E Extract Zip Spec      14 (20) '2.0'\n+13752F Extract OS            00 (0) 'MS-DOS'\n+137530 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11AEAE Compression Method    0008 (8) 'Deflated'\n-11AEB0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11AEB4 CRC                   00000000 (0)\n-11AEB8 Compressed Size       00000000 (0)\n-11AEBC Uncompressed Size     00000000 (0)\n-11AEC0 Filename Length       0023 (35)\n-11AEC2 Extra Length          0000 (0)\n-11AEC4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+137532 Compression Method    0008 (8) 'Deflated'\n+137534 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+137538 CRC                   00000000 (0)\n+13753C Compressed Size       00000000 (0)\n+137540 Uncompressed Size     00000000 (0)\n+137544 Filename Length       0035 (53)\n+137546 Extra Length          0000 (0)\n+137548 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11AEC4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x137548: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11AEE7 PAYLOAD\n+13757D PAYLOAD\n \n-11B629 DATA DESCRIPTOR       08074B50 (134695760)\n-11B62D CRC                   B577D739 (3044529977)\n-11B631 Compressed Size       00000742 (1858)\n-11B635 Uncompressed Size     0000218E (8590)\n+13796E DATA DESCRIPTOR       08074B50 (134695760)\n+137972 CRC                   E989D516 (3918124310)\n+137976 Compressed Size       000003F1 (1009)\n+13797A Uncompressed Size     00000ADD (2781)\n \n-11B639 LOCAL HEADER #1102    04034B50 (67324752)\n-11B63D Extract Zip Spec      14 (20) '2.0'\n-11B63E Extract OS            00 (0) 'MS-DOS'\n-11B63F General Purpose Flag  0808 (2056)\n+13797E LOCAL HEADER #1102    04034B50 (67324752)\n+137982 Extract Zip Spec      14 (20) '2.0'\n+137983 Extract OS            00 (0) 'MS-DOS'\n+137984 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11B641 Compression Method    0008 (8) 'Deflated'\n-11B643 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11B647 CRC                   00000000 (0)\n-11B64B Compressed Size       00000000 (0)\n-11B64F Uncompressed Size     00000000 (0)\n-11B653 Filename Length       002A (42)\n-11B655 Extra Length          0000 (0)\n-11B657 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+137986 Compression Method    0008 (8) 'Deflated'\n+137988 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13798C CRC                   00000000 (0)\n+137990 Compressed Size       00000000 (0)\n+137994 Uncompressed Size     00000000 (0)\n+137998 Filename Length       003C (60)\n+13799A Extra Length          0000 (0)\n+13799C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11B657: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13799C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11B681 PAYLOAD\n+1379D8 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-11BA90 DATA DESCRIPTOR       08074B50 (134695760)\n-11BA94 CRC                   1894D2EA (412406506)\n-11BA98 Compressed Size       0000040F (1039)\n-11BA9C Uncompressed Size     00000B60 (2912)\n+137A1A DATA DESCRIPTOR       08074B50 (134695760)\n+137A1E CRC                   286EAB64 (678341476)\n+137A22 Compressed Size       00000042 (66)\n+137A26 Uncompressed Size     00000044 (68)\n \n-11BAA0 LOCAL HEADER #1103    04034B50 (67324752)\n-11BAA4 Extract Zip Spec      14 (20) '2.0'\n-11BAA5 Extract OS            00 (0) 'MS-DOS'\n-11BAA6 General Purpose Flag  0808 (2056)\n+137A2A LOCAL HEADER #1103    04034B50 (67324752)\n+137A2E Extract Zip Spec      14 (20) '2.0'\n+137A2F Extract OS            00 (0) 'MS-DOS'\n+137A30 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11BAA8 Compression Method    0008 (8) 'Deflated'\n-11BAAA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11BAAE CRC                   00000000 (0)\n-11BAB2 Compressed Size       00000000 (0)\n-11BAB6 Uncompressed Size     00000000 (0)\n-11BABA Filename Length       0026 (38)\n-11BABC Extra Length          0000 (0)\n-11BABE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+137A32 Compression Method    0008 (8) 'Deflated'\n+137A34 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+137A38 CRC                   00000000 (0)\n+137A3C Compressed Size       00000000 (0)\n+137A40 Uncompressed Size     00000000 (0)\n+137A44 Filename Length       0023 (35)\n+137A46 Extra Length          0000 (0)\n+137A48 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11BABE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x137A48: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11BAE4 PAYLOAD\n+137A6B PAYLOAD               XX\n \n-11BD71 DATA DESCRIPTOR       08074B50 (134695760)\n-11BD75 CRC                   4977D9A5 (1232591269)\n-11BD79 Compressed Size       0000028D (653)\n-11BD7D Uncompressed Size     000004A5 (1189)\n+137A6D DATA DESCRIPTOR       08074B50 (134695760)\n+137A71 CRC                   00000000 (0)\n+137A75 Compressed Size       00000002 (2)\n+137A79 Uncompressed Size     00000000 (0)\n \n-11BD81 LOCAL HEADER #1104    04034B50 (67324752)\n-11BD85 Extract Zip Spec      14 (20) '2.0'\n-11BD86 Extract OS            00 (0) 'MS-DOS'\n-11BD87 General Purpose Flag  0808 (2056)\n+137A7D LOCAL HEADER #1104    04034B50 (67324752)\n+137A81 Extract Zip Spec      14 (20) '2.0'\n+137A82 Extract OS            00 (0) 'MS-DOS'\n+137A83 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11BD89 Compression Method    0008 (8) 'Deflated'\n-11BD8B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11BD8F CRC                   00000000 (0)\n-11BD93 Compressed Size       00000000 (0)\n-11BD97 Uncompressed Size     00000000 (0)\n-11BD9B Filename Length       001C (28)\n-11BD9D Extra Length          0000 (0)\n-11BD9F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+137A85 Compression Method    0008 (8) 'Deflated'\n+137A87 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+137A8B CRC                   00000000 (0)\n+137A8F Compressed Size       00000000 (0)\n+137A93 Uncompressed Size     00000000 (0)\n+137A97 Filename Length       003C (60)\n+137A99 Extra Length          0000 (0)\n+137A9B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11BD9F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x137A9B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11BDBB PAYLOAD               XX\n+137AD7 PAYLOAD\n \n-11BDBD DATA DESCRIPTOR       08074B50 (134695760)\n-11BDC1 CRC                   00000000 (0)\n-11BDC5 Compressed Size       00000002 (2)\n-11BDC9 Uncompressed Size     00000000 (0)\n+137EEA DATA DESCRIPTOR       08074B50 (134695760)\n+137EEE CRC                   01526E5B (22179419)\n+137EF2 Compressed Size       00000413 (1043)\n+137EF6 Uncompressed Size     00000AA2 (2722)\n \n-11BDCD LOCAL HEADER #1105    04034B50 (67324752)\n-11BDD1 Extract Zip Spec      14 (20) '2.0'\n-11BDD2 Extract OS            00 (0) 'MS-DOS'\n-11BDD3 General Purpose Flag  0808 (2056)\n+137EFA LOCAL HEADER #1105    04034B50 (67324752)\n+137EFE Extract Zip Spec      14 (20) '2.0'\n+137EFF Extract OS            00 (0) 'MS-DOS'\n+137F00 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11BDD5 Compression Method    0008 (8) 'Deflated'\n-11BDD7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11BDDB CRC                   00000000 (0)\n-11BDDF Compressed Size       00000000 (0)\n-11BDE3 Uncompressed Size     00000000 (0)\n-11BDE7 Filename Length       0030 (48)\n-11BDE9 Extra Length          0000 (0)\n-11BDEB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+137F02 Compression Method    0008 (8) 'Deflated'\n+137F04 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+137F08 CRC                   00000000 (0)\n+137F0C Compressed Size       00000000 (0)\n+137F10 Uncompressed Size     00000000 (0)\n+137F14 Filename Length       0032 (50)\n+137F16 Extra Length          0000 (0)\n+137F18 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11BDEB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x137F18: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11BE1B PAYLOAD\n+137F4A PAYLOAD\n \n-11C7A8 DATA DESCRIPTOR       08074B50 (134695760)\n-11C7AC CRC                   300456E0 (805590752)\n-11C7B0 Compressed Size       0000098D (2445)\n-11C7B4 Uncompressed Size     00001D9B (7579)\n+138149 DATA DESCRIPTOR       08074B50 (134695760)\n+13814D CRC                   D457458D (3562489229)\n+138151 Compressed Size       000001FF (511)\n+138155 Uncompressed Size     00000381 (897)\n \n-11C7B8 LOCAL HEADER #1106    04034B50 (67324752)\n-11C7BC Extract Zip Spec      14 (20) '2.0'\n-11C7BD Extract OS            00 (0) 'MS-DOS'\n-11C7BE General Purpose Flag  0808 (2056)\n+138159 LOCAL HEADER #1106    04034B50 (67324752)\n+13815D Extract Zip Spec      14 (20) '2.0'\n+13815E Extract OS            00 (0) 'MS-DOS'\n+13815F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11C7C0 Compression Method    0008 (8) 'Deflated'\n-11C7C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11C7C6 CRC                   00000000 (0)\n-11C7CA Compressed Size       00000000 (0)\n-11C7CE Uncompressed Size     00000000 (0)\n-11C7D2 Filename Length       0032 (50)\n-11C7D4 Extra Length          0000 (0)\n-11C7D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+138161 Compression Method    0008 (8) 'Deflated'\n+138163 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+138167 CRC                   00000000 (0)\n+13816B Compressed Size       00000000 (0)\n+13816F Uncompressed Size     00000000 (0)\n+138173 Filename Length       0035 (53)\n+138175 Extra Length          0000 (0)\n+138177 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11C7D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x138177: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11C808 PAYLOAD\n+1381AC PAYLOAD\n \n-11CF05 DATA DESCRIPTOR       08074B50 (134695760)\n-11CF09 CRC                   B52DE397 (3039683479)\n-11CF0D Compressed Size       000006FD (1789)\n-11CF11 Uncompressed Size     00001623 (5667)\n+13851B DATA DESCRIPTOR       08074B50 (134695760)\n+13851F CRC                   73B49906 (1941215494)\n+138523 Compressed Size       0000036F (879)\n+138527 Uncompressed Size     000007C7 (1991)\n \n-11CF15 LOCAL HEADER #1107    04034B50 (67324752)\n-11CF19 Extract Zip Spec      14 (20) '2.0'\n-11CF1A Extract OS            00 (0) 'MS-DOS'\n-11CF1B General Purpose Flag  0808 (2056)\n+13852B LOCAL HEADER #1107    04034B50 (67324752)\n+13852F Extract Zip Spec      14 (20) '2.0'\n+138530 Extract OS            00 (0) 'MS-DOS'\n+138531 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11CF1D Compression Method    0008 (8) 'Deflated'\n-11CF1F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11CF23 CRC                   00000000 (0)\n-11CF27 Compressed Size       00000000 (0)\n-11CF2B Uncompressed Size     00000000 (0)\n-11CF2F Filename Length       0032 (50)\n-11CF31 Extra Length          0000 (0)\n-11CF33 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+138533 Compression Method    0008 (8) 'Deflated'\n+138535 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+138539 CRC                   00000000 (0)\n+13853D Compressed Size       00000000 (0)\n+138541 Uncompressed Size     00000000 (0)\n+138545 Filename Length       0033 (51)\n+138547 Extra Length          0000 (0)\n+138549 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11CF33: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x138549: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11CF65 PAYLOAD\n+13857C PAYLOAD\n \n-11D288 DATA DESCRIPTOR       08074B50 (134695760)\n-11D28C CRC                   851F3F00 (2233417472)\n-11D290 Compressed Size       00000323 (803)\n-11D294 Uncompressed Size     00000723 (1827)\n+138B2D DATA DESCRIPTOR       08074B50 (134695760)\n+138B31 CRC                   7E6F88F1 (2121238769)\n+138B35 Compressed Size       000005B1 (1457)\n+138B39 Uncompressed Size     0000105B (4187)\n \n-11D298 LOCAL HEADER #1108    04034B50 (67324752)\n-11D29C Extract Zip Spec      14 (20) '2.0'\n-11D29D Extract OS            00 (0) 'MS-DOS'\n-11D29E General Purpose Flag  0808 (2056)\n+138B3D LOCAL HEADER #1108    04034B50 (67324752)\n+138B41 Extract Zip Spec      14 (20) '2.0'\n+138B42 Extract OS            00 (0) 'MS-DOS'\n+138B43 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11D2A0 Compression Method    0008 (8) 'Deflated'\n-11D2A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11D2A6 CRC                   00000000 (0)\n-11D2AA Compressed Size       00000000 (0)\n-11D2AE Uncompressed Size     00000000 (0)\n-11D2B2 Filename Length       0031 (49)\n-11D2B4 Extra Length          0000 (0)\n-11D2B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+138B45 Compression Method    0008 (8) 'Deflated'\n+138B47 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+138B4B CRC                   00000000 (0)\n+138B4F Compressed Size       00000000 (0)\n+138B53 Uncompressed Size     00000000 (0)\n+138B57 Filename Length       0038 (56)\n+138B59 Extra Length          0000 (0)\n+138B5B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11D2B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x138B5B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11D2E7 PAYLOAD\n+138B93 PAYLOAD\n \n-11D881 DATA DESCRIPTOR       08074B50 (134695760)\n-11D885 CRC                   86FDBE3E (2264776254)\n-11D889 Compressed Size       0000059A (1434)\n-11D88D Uncompressed Size     00000FB9 (4025)\n+13953C DATA DESCRIPTOR       08074B50 (134695760)\n+139540 CRC                   65B11F2E (1706106670)\n+139544 Compressed Size       000009A9 (2473)\n+139548 Uncompressed Size     000029BC (10684)\n \n-11D891 LOCAL HEADER #1109    04034B50 (67324752)\n-11D895 Extract Zip Spec      14 (20) '2.0'\n-11D896 Extract OS            00 (0) 'MS-DOS'\n-11D897 General Purpose Flag  0808 (2056)\n+13954C LOCAL HEADER #1109    04034B50 (67324752)\n+139550 Extract Zip Spec      14 (20) '2.0'\n+139551 Extract OS            00 (0) 'MS-DOS'\n+139552 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11D899 Compression Method    0008 (8) 'Deflated'\n-11D89B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11D89F CRC                   00000000 (0)\n-11D8A3 Compressed Size       00000000 (0)\n-11D8A7 Uncompressed Size     00000000 (0)\n-11D8AB Filename Length       0036 (54)\n-11D8AD Extra Length          0000 (0)\n-11D8AF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+139554 Compression Method    0008 (8) 'Deflated'\n+139556 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13955A CRC                   00000000 (0)\n+13955E Compressed Size       00000000 (0)\n+139562 Uncompressed Size     00000000 (0)\n+139566 Filename Length       0034 (52)\n+139568 Extra Length          0000 (0)\n+13956A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11D8AF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13956A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11D8E5 PAYLOAD\n+13959E PAYLOAD\n \n-11DDDA DATA DESCRIPTOR       08074B50 (134695760)\n-11DDDE CRC                   A0F5CB6A (2700462954)\n-11DDE2 Compressed Size       000004F5 (1269)\n-11DDE6 Uncompressed Size     00000D48 (3400)\n+139FAC DATA DESCRIPTOR       08074B50 (134695760)\n+139FB0 CRC                   ECC477BE (3972298686)\n+139FB4 Compressed Size       00000A0E (2574)\n+139FB8 Uncompressed Size     000021FB (8699)\n \n-11DDEA LOCAL HEADER #1110    04034B50 (67324752)\n-11DDEE Extract Zip Spec      14 (20) '2.0'\n-11DDEF Extract OS            00 (0) 'MS-DOS'\n-11DDF0 General Purpose Flag  0808 (2056)\n+139FBC LOCAL HEADER #1110    04034B50 (67324752)\n+139FC0 Extract Zip Spec      14 (20) '2.0'\n+139FC1 Extract OS            00 (0) 'MS-DOS'\n+139FC2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11DDF2 Compression Method    0008 (8) 'Deflated'\n-11DDF4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11DDF8 CRC                   00000000 (0)\n-11DDFC Compressed Size       00000000 (0)\n-11DE00 Uncompressed Size     00000000 (0)\n-11DE04 Filename Length       002E (46)\n-11DE06 Extra Length          0000 (0)\n-11DE08 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+139FC4 Compression Method    0008 (8) 'Deflated'\n+139FC6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+139FCA CRC                   00000000 (0)\n+139FCE Compressed Size       00000000 (0)\n+139FD2 Uncompressed Size     00000000 (0)\n+139FD6 Filename Length       0044 (68)\n+139FD8 Extra Length          0000 (0)\n+139FDA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11DE08: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x139FDA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11DE36 PAYLOAD\n+13A01E PAYLOAD\n \n-11E581 DATA DESCRIPTOR       08074B50 (134695760)\n-11E585 CRC                   38AEBD8D (950975885)\n-11E589 Compressed Size       0000074B (1867)\n-11E58D Uncompressed Size     00001838 (6200)\n+13A418 DATA DESCRIPTOR       08074B50 (134695760)\n+13A41C CRC                   67A5A923 (1738909987)\n+13A420 Compressed Size       000003FA (1018)\n+13A424 Uncompressed Size     00000A93 (2707)\n \n-11E591 LOCAL HEADER #1111    04034B50 (67324752)\n-11E595 Extract Zip Spec      14 (20) '2.0'\n-11E596 Extract OS            00 (0) 'MS-DOS'\n-11E597 General Purpose Flag  0808 (2056)\n+13A428 LOCAL HEADER #1111    04034B50 (67324752)\n+13A42C Extract Zip Spec      14 (20) '2.0'\n+13A42D Extract OS            00 (0) 'MS-DOS'\n+13A42E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11E599 Compression Method    0008 (8) 'Deflated'\n-11E59B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11E59F CRC                   00000000 (0)\n-11E5A3 Compressed Size       00000000 (0)\n-11E5A7 Uncompressed Size     00000000 (0)\n-11E5AB Filename Length       0031 (49)\n-11E5AD Extra Length          0000 (0)\n-11E5AF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13A430 Compression Method    0008 (8) 'Deflated'\n+13A432 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13A436 CRC                   00000000 (0)\n+13A43A Compressed Size       00000000 (0)\n+13A43E Uncompressed Size     00000000 (0)\n+13A442 Filename Length       0030 (48)\n+13A444 Extra Length          0000 (0)\n+13A446 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11E5AF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13A446: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11E5E0 PAYLOAD\n+13A476 PAYLOAD               XX\n \n-11EAD9 DATA DESCRIPTOR       08074B50 (134695760)\n-11EADD CRC                   5D6B9E17 (1567333911)\n-11EAE1 Compressed Size       000004F9 (1273)\n-11EAE5 Uncompressed Size     00000CC3 (3267)\n+13A478 DATA DESCRIPTOR       08074B50 (134695760)\n+13A47C CRC                   00000000 (0)\n+13A480 Compressed Size       00000002 (2)\n+13A484 Uncompressed Size     00000000 (0)\n \n-11EAE9 LOCAL HEADER #1112    04034B50 (67324752)\n-11EAED Extract Zip Spec      14 (20) '2.0'\n-11EAEE Extract OS            00 (0) 'MS-DOS'\n-11EAEF General Purpose Flag  0808 (2056)\n+13A488 LOCAL HEADER #1112    04034B50 (67324752)\n+13A48C Extract Zip Spec      14 (20) '2.0'\n+13A48D Extract OS            00 (0) 'MS-DOS'\n+13A48E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11EAF1 Compression Method    0008 (8) 'Deflated'\n-11EAF3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11EAF7 CRC                   00000000 (0)\n-11EAFB Compressed Size       00000000 (0)\n-11EAFF Uncompressed Size     00000000 (0)\n-11EB03 Filename Length       002B (43)\n-11EB05 Extra Length          0000 (0)\n-11EB07 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13A490 Compression Method    0008 (8) 'Deflated'\n+13A492 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13A496 CRC                   00000000 (0)\n+13A49A Compressed Size       00000000 (0)\n+13A49E Uncompressed Size     00000000 (0)\n+13A4A2 Filename Length       0046 (70)\n+13A4A4 Extra Length          0000 (0)\n+13A4A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11EB07: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13A4A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11EB32 PAYLOAD\n+13A4EC PAYLOAD\n \n-11EE8C DATA DESCRIPTOR       08074B50 (134695760)\n-11EE90 CRC                   33E95645 (870929989)\n-11EE94 Compressed Size       0000035A (858)\n-11EE98 Uncompressed Size     0000073C (1852)\n+13A74F DATA DESCRIPTOR       08074B50 (134695760)\n+13A753 CRC                   63B2617E (1672634750)\n+13A757 Compressed Size       00000263 (611)\n+13A75B Uncompressed Size     00000460 (1120)\n \n-11EE9C LOCAL HEADER #1113    04034B50 (67324752)\n-11EEA0 Extract Zip Spec      14 (20) '2.0'\n-11EEA1 Extract OS            00 (0) 'MS-DOS'\n-11EEA2 General Purpose Flag  0808 (2056)\n+13A75F LOCAL HEADER #1113    04034B50 (67324752)\n+13A763 Extract Zip Spec      14 (20) '2.0'\n+13A764 Extract OS            00 (0) 'MS-DOS'\n+13A765 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11EEA4 Compression Method    0008 (8) 'Deflated'\n-11EEA6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11EEAA CRC                   00000000 (0)\n-11EEAE Compressed Size       00000000 (0)\n-11EEB2 Uncompressed Size     00000000 (0)\n-11EEB6 Filename Length       0030 (48)\n-11EEB8 Extra Length          0000 (0)\n-11EEBA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13A767 Compression Method    0008 (8) 'Deflated'\n+13A769 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13A76D CRC                   00000000 (0)\n+13A771 Compressed Size       00000000 (0)\n+13A775 Uncompressed Size     00000000 (0)\n+13A779 Filename Length       0045 (69)\n+13A77B Extra Length          0000 (0)\n+13A77D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11EEBA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13A77D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11EEEA PAYLOAD\n+13A7C2 PAYLOAD\n \n-11F5B2 DATA DESCRIPTOR       08074B50 (134695760)\n-11F5B6 CRC                   DF14BD96 (3742678422)\n-11F5BA Compressed Size       000006C8 (1736)\n-11F5BE Uncompressed Size     000016A6 (5798)\n+13AA63 DATA DESCRIPTOR       08074B50 (134695760)\n+13AA67 CRC                   1AFA4B4D (452610893)\n+13AA6B Compressed Size       000002A1 (673)\n+13AA6F Uncompressed Size     000005DB (1499)\n \n-11F5C2 LOCAL HEADER #1114    04034B50 (67324752)\n-11F5C6 Extract Zip Spec      14 (20) '2.0'\n-11F5C7 Extract OS            00 (0) 'MS-DOS'\n-11F5C8 General Purpose Flag  0808 (2056)\n+13AA73 LOCAL HEADER #1114    04034B50 (67324752)\n+13AA77 Extract Zip Spec      14 (20) '2.0'\n+13AA78 Extract OS            00 (0) 'MS-DOS'\n+13AA79 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11F5CA Compression Method    0008 (8) 'Deflated'\n-11F5CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11F5D0 CRC                   00000000 (0)\n-11F5D4 Compressed Size       00000000 (0)\n-11F5D8 Uncompressed Size     00000000 (0)\n-11F5DC Filename Length       0033 (51)\n-11F5DE Extra Length          0000 (0)\n-11F5E0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13AA7B Compression Method    0008 (8) 'Deflated'\n+13AA7D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13AA81 CRC                   00000000 (0)\n+13AA85 Compressed Size       00000000 (0)\n+13AA89 Uncompressed Size     00000000 (0)\n+13AA8D Filename Length       004A (74)\n+13AA8F Extra Length          0000 (0)\n+13AA91 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11F5E0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13AA91: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11F613 PAYLOAD\n+13AADB PAYLOAD\n \n-11FBB4 DATA DESCRIPTOR       08074B50 (134695760)\n-11FBB8 CRC                   FA17120C (4195815948)\n-11FBBC Compressed Size       000005A1 (1441)\n-11FBC0 Uncompressed Size     00000EE2 (3810)\n+13B0C7 DATA DESCRIPTOR       08074B50 (134695760)\n+13B0CB CRC                   25DC5E62 (635199074)\n+13B0CF Compressed Size       000005EC (1516)\n+13B0D3 Uncompressed Size     00001184 (4484)\n \n-11FBC4 LOCAL HEADER #1115    04034B50 (67324752)\n-11FBC8 Extract Zip Spec      14 (20) '2.0'\n-11FBC9 Extract OS            00 (0) 'MS-DOS'\n-11FBCA General Purpose Flag  0808 (2056)\n+13B0D7 LOCAL HEADER #1115    04034B50 (67324752)\n+13B0DB Extract Zip Spec      14 (20) '2.0'\n+13B0DC Extract OS            00 (0) 'MS-DOS'\n+13B0DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-11FBCC Compression Method    0008 (8) 'Deflated'\n-11FBCE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-11FBD2 CRC                   00000000 (0)\n-11FBD6 Compressed Size       00000000 (0)\n-11FBDA Uncompressed Size     00000000 (0)\n-11FBDE Filename Length       002E (46)\n-11FBE0 Extra Length          0000 (0)\n-11FBE2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13B0DF Compression Method    0008 (8) 'Deflated'\n+13B0E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13B0E5 CRC                   00000000 (0)\n+13B0E9 Compressed Size       00000000 (0)\n+13B0ED Uncompressed Size     00000000 (0)\n+13B0F1 Filename Length       0046 (70)\n+13B0F3 Extra Length          0000 (0)\n+13B0F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x11FBE2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13B0F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-11FC10 PAYLOAD\n+13B13B PAYLOAD\n \n-120702 DATA DESCRIPTOR       08074B50 (134695760)\n-120706 CRC                   BCD228F3 (3167889651)\n-12070A Compressed Size       00000AF2 (2802)\n-12070E Uncompressed Size     0000334E (13134)\n+13B39D DATA DESCRIPTOR       08074B50 (134695760)\n+13B3A1 CRC                   AADBB488 (2866525320)\n+13B3A5 Compressed Size       00000262 (610)\n+13B3A9 Uncompressed Size     00000460 (1120)\n \n-120712 LOCAL HEADER #1116    04034B50 (67324752)\n-120716 Extract Zip Spec      14 (20) '2.0'\n-120717 Extract OS            00 (0) 'MS-DOS'\n-120718 General Purpose Flag  0808 (2056)\n+13B3AD LOCAL HEADER #1116    04034B50 (67324752)\n+13B3B1 Extract Zip Spec      14 (20) '2.0'\n+13B3B2 Extract OS            00 (0) 'MS-DOS'\n+13B3B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12071A Compression Method    0008 (8) 'Deflated'\n-12071C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-120720 CRC                   00000000 (0)\n-120724 Compressed Size       00000000 (0)\n-120728 Uncompressed Size     00000000 (0)\n-12072C Filename Length       0032 (50)\n-12072E Extra Length          0000 (0)\n-120730 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13B3B5 Compression Method    0008 (8) 'Deflated'\n+13B3B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13B3BB CRC                   00000000 (0)\n+13B3BF Compressed Size       00000000 (0)\n+13B3C3 Uncompressed Size     00000000 (0)\n+13B3C7 Filename Length       004A (74)\n+13B3C9 Extra Length          0000 (0)\n+13B3CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x120730: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13B3CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-120762 PAYLOAD\n+13B415 PAYLOAD\n \n-1211ED DATA DESCRIPTOR       08074B50 (134695760)\n-1211F1 CRC                   BDC74FB9 (3183955897)\n-1211F5 Compressed Size       00000A8B (2699)\n-1211F9 Uncompressed Size     00002C1E (11294)\n+13B683 DATA DESCRIPTOR       08074B50 (134695760)\n+13B687 CRC                   BEF6AA62 (3203836514)\n+13B68B Compressed Size       0000026E (622)\n+13B68F Uncompressed Size     0000047C (1148)\n \n-1211FD LOCAL HEADER #1117    04034B50 (67324752)\n-121201 Extract Zip Spec      14 (20) '2.0'\n-121202 Extract OS            00 (0) 'MS-DOS'\n-121203 General Purpose Flag  0808 (2056)\n+13B693 LOCAL HEADER #1117    04034B50 (67324752)\n+13B697 Extract Zip Spec      14 (20) '2.0'\n+13B698 Extract OS            00 (0) 'MS-DOS'\n+13B699 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-121205 Compression Method    0008 (8) 'Deflated'\n-121207 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-12120B CRC                   00000000 (0)\n-12120F Compressed Size       00000000 (0)\n-121213 Uncompressed Size     00000000 (0)\n-121217 Filename Length       002E (46)\n-121219 Extra Length          0000 (0)\n-12121B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13B69B Compression Method    0008 (8) 'Deflated'\n+13B69D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13B6A1 CRC                   00000000 (0)\n+13B6A5 Compressed Size       00000000 (0)\n+13B6A9 Uncompressed Size     00000000 (0)\n+13B6AD Filename Length       0059 (89)\n+13B6AF Extra Length          0000 (0)\n+13B6B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12121B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13B6B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-121249 PAYLOAD\n+13B70A PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-1216AE DATA DESCRIPTOR       08074B50 (134695760)\n-1216B2 CRC                   4BE7E92F (1273489711)\n-1216B6 Compressed Size       00000465 (1125)\n-1216BA Uncompressed Size     00000B3B (2875)\n+13B749 DATA DESCRIPTOR       08074B50 (134695760)\n+13B74D CRC                   6F1FEDD0 (1864363472)\n+13B751 Compressed Size       0000003F (63)\n+13B755 Uncompressed Size     0000004D (77)\n \n-1216BE LOCAL HEADER #1118    04034B50 (67324752)\n-1216C2 Extract Zip Spec      14 (20) '2.0'\n-1216C3 Extract OS            00 (0) 'MS-DOS'\n-1216C4 General Purpose Flag  0808 (2056)\n+13B759 LOCAL HEADER #1118    04034B50 (67324752)\n+13B75D Extract Zip Spec      14 (20) '2.0'\n+13B75E Extract OS            00 (0) 'MS-DOS'\n+13B75F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1216C6 Compression Method    0008 (8) 'Deflated'\n-1216C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1216CC CRC                   00000000 (0)\n-1216D0 Compressed Size       00000000 (0)\n-1216D4 Uncompressed Size     00000000 (0)\n-1216D8 Filename Length       002C (44)\n-1216DA Extra Length          0000 (0)\n-1216DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13B761 Compression Method    0008 (8) 'Deflated'\n+13B763 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13B767 CRC                   00000000 (0)\n+13B76B Compressed Size       00000000 (0)\n+13B76F Uncompressed Size     00000000 (0)\n+13B773 Filename Length       0059 (89)\n+13B775 Extra Length          0000 (0)\n+13B777 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1216DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13B777: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-121708 PAYLOAD\n+13B7D0 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-121B54 DATA DESCRIPTOR       08074B50 (134695760)\n-121B58 CRC                   EE9BE4CE (4003194062)\n-121B5C Compressed Size       0000044C (1100)\n-121B60 Uncompressed Size     00000A15 (2581)\n+13B80F DATA DESCRIPTOR       08074B50 (134695760)\n+13B813 CRC                   6F1FEDD0 (1864363472)\n+13B817 Compressed Size       0000003F (63)\n+13B81B Uncompressed Size     0000004D (77)\n \n-121B64 LOCAL HEADER #1119    04034B50 (67324752)\n-121B68 Extract Zip Spec      14 (20) '2.0'\n-121B69 Extract OS            00 (0) 'MS-DOS'\n-121B6A General Purpose Flag  0808 (2056)\n+13B81F LOCAL HEADER #1119    04034B50 (67324752)\n+13B823 Extract Zip Spec      14 (20) '2.0'\n+13B824 Extract OS            00 (0) 'MS-DOS'\n+13B825 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-121B6C Compression Method    0008 (8) 'Deflated'\n-121B6E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-121B72 CRC                   00000000 (0)\n-121B76 Compressed Size       00000000 (0)\n-121B7A Uncompressed Size     00000000 (0)\n-121B7E Filename Length       002F (47)\n-121B80 Extra Length          0000 (0)\n-121B82 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13B827 Compression Method    0008 (8) 'Deflated'\n+13B829 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13B82D CRC                   00000000 (0)\n+13B831 Compressed Size       00000000 (0)\n+13B835 Uncompressed Size     00000000 (0)\n+13B839 Filename Length       002F (47)\n+13B83B Extra Length          0000 (0)\n+13B83D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x121B82: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13B83D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-121BB1 PAYLOAD\n+13B86C PAYLOAD               XX\n \n-121FF1 DATA DESCRIPTOR       08074B50 (134695760)\n-121FF5 CRC                   24C74556 (617039190)\n-121FF9 Compressed Size       00000440 (1088)\n-121FFD Uncompressed Size     00000A01 (2561)\n+13B86E DATA DESCRIPTOR       08074B50 (134695760)\n+13B872 CRC                   00000000 (0)\n+13B876 Compressed Size       00000002 (2)\n+13B87A Uncompressed Size     00000000 (0)\n \n-122001 LOCAL HEADER #1120    04034B50 (67324752)\n-122005 Extract Zip Spec      14 (20) '2.0'\n-122006 Extract OS            00 (0) 'MS-DOS'\n-122007 General Purpose Flag  0808 (2056)\n+13B87E LOCAL HEADER #1120    04034B50 (67324752)\n+13B882 Extract Zip Spec      14 (20) '2.0'\n+13B883 Extract OS            00 (0) 'MS-DOS'\n+13B884 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-122009 Compression Method    0008 (8) 'Deflated'\n-12200B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-12200F CRC                   00000000 (0)\n-122013 Compressed Size       00000000 (0)\n-122017 Uncompressed Size     00000000 (0)\n-12201B Filename Length       0020 (32)\n-12201D Extra Length          0000 (0)\n-12201F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13B886 Compression Method    0008 (8) 'Deflated'\n+13B888 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13B88C CRC                   00000000 (0)\n+13B890 Compressed Size       00000000 (0)\n+13B894 Uncompressed Size     00000000 (0)\n+13B898 Filename Length       0036 (54)\n+13B89A Extra Length          0000 (0)\n+13B89C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12201F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13B89C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-12203F PAYLOAD               XX\n+13B8D2 PAYLOAD\n \n-122041 DATA DESCRIPTOR       08074B50 (134695760)\n-122045 CRC                   00000000 (0)\n-122049 Compressed Size       00000002 (2)\n-12204D Uncompressed Size     00000000 (0)\n+13BC7D DATA DESCRIPTOR       08074B50 (134695760)\n+13BC81 CRC                   C105B8EB (3238377707)\n+13BC85 Compressed Size       000003AB (939)\n+13BC89 Uncompressed Size     00000A79 (2681)\n \n-122051 LOCAL HEADER #1121    04034B50 (67324752)\n-122055 Extract Zip Spec      14 (20) '2.0'\n-122056 Extract OS            00 (0) 'MS-DOS'\n-122057 General Purpose Flag  0808 (2056)\n+13BC8D LOCAL HEADER #1121    04034B50 (67324752)\n+13BC91 Extract Zip Spec      14 (20) '2.0'\n+13BC92 Extract OS            00 (0) 'MS-DOS'\n+13BC93 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-122059 Compression Method    0008 (8) 'Deflated'\n-12205B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-12205F CRC                   00000000 (0)\n-122063 Compressed Size       00000000 (0)\n-122067 Uncompressed Size     00000000 (0)\n-12206B Filename Length       0036 (54)\n-12206D Extra Length          0000 (0)\n-12206F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13BC95 Compression Method    0008 (8) 'Deflated'\n+13BC97 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13BC9B CRC                   00000000 (0)\n+13BC9F Compressed Size       00000000 (0)\n+13BCA3 Uncompressed Size     00000000 (0)\n+13BCA7 Filename Length       003D (61)\n+13BCA9 Extra Length          0000 (0)\n+13BCAB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12206F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13BCAB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1220A5 PAYLOAD\n+13BCE8 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-1224AF DATA DESCRIPTOR       08074B50 (134695760)\n-1224B3 CRC                   F1C552FF (4056240895)\n-1224B7 Compressed Size       0000040A (1034)\n-1224BB Uncompressed Size     00000A9C (2716)\n+13BD29 DATA DESCRIPTOR       08074B50 (134695760)\n+13BD2D CRC                   86FC6C16 (2264689686)\n+13BD31 Compressed Size       00000041 (65)\n+13BD35 Uncompressed Size     00000045 (69)\n \n-1224BF LOCAL HEADER #1122    04034B50 (67324752)\n-1224C3 Extract Zip Spec      14 (20) '2.0'\n-1224C4 Extract OS            00 (0) 'MS-DOS'\n-1224C5 General Purpose Flag  0808 (2056)\n+13BD39 LOCAL HEADER #1122    04034B50 (67324752)\n+13BD3D Extract Zip Spec      14 (20) '2.0'\n+13BD3E Extract OS            00 (0) 'MS-DOS'\n+13BD3F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1224C7 Compression Method    0008 (8) 'Deflated'\n-1224C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1224CD CRC                   00000000 (0)\n-1224D1 Compressed Size       00000000 (0)\n-1224D5 Uncompressed Size     00000000 (0)\n-1224D9 Filename Length       002D (45)\n-1224DB Extra Length          0000 (0)\n-1224DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13BD41 Compression Method    0008 (8) 'Deflated'\n+13BD43 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13BD47 CRC                   00000000 (0)\n+13BD4B Compressed Size       00000000 (0)\n+13BD4F Uncompressed Size     00000000 (0)\n+13BD53 Filename Length       001A (26)\n+13BD55 Extra Length          0000 (0)\n+13BD57 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1224DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13BD57: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-12250A PAYLOAD\n+13BD71 PAYLOAD               XX\n \n-12291C DATA DESCRIPTOR       08074B50 (134695760)\n-122920 CRC                   0D540AED (223611629)\n-122924 Compressed Size       00000412 (1042)\n-122928 Uncompressed Size     00000A14 (2580)\n+13BD73 DATA DESCRIPTOR       08074B50 (134695760)\n+13BD77 CRC                   00000000 (0)\n+13BD7B Compressed Size       00000002 (2)\n+13BD7F Uncompressed Size     00000000 (0)\n \n-12292C LOCAL HEADER #1123    04034B50 (67324752)\n-122930 Extract Zip Spec      14 (20) '2.0'\n-122931 Extract OS            00 (0) 'MS-DOS'\n-122932 General Purpose Flag  0808 (2056)\n+13BD83 LOCAL HEADER #1123    04034B50 (67324752)\n+13BD87 Extract Zip Spec      14 (20) '2.0'\n+13BD88 Extract OS            00 (0) 'MS-DOS'\n+13BD89 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-122934 Compression Method    0008 (8) 'Deflated'\n-122936 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-12293A CRC                   00000000 (0)\n-12293E Compressed Size       00000000 (0)\n-122942 Uncompressed Size     00000000 (0)\n-122946 Filename Length       002F (47)\n-122948 Extra Length          0000 (0)\n-12294A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13BD8B Compression Method    0008 (8) 'Deflated'\n+13BD8D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13BD91 CRC                   00000000 (0)\n+13BD95 Compressed Size       00000000 (0)\n+13BD99 Uncompressed Size     00000000 (0)\n+13BD9D Filename Length       002E (46)\n+13BD9F Extra Length          0000 (0)\n+13BDA1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12294A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13BDA1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-122979 PAYLOAD\n+13BDCF PAYLOAD\n \n-122CA4 DATA DESCRIPTOR       08074B50 (134695760)\n-122CA8 CRC                   00E586BE (15042238)\n-122CAC Compressed Size       0000032B (811)\n-122CB0 Uncompressed Size     00000678 (1656)\n+13C072 DATA DESCRIPTOR       08074B50 (134695760)\n+13C076 CRC                   D8E4F331 (3638883121)\n+13C07A Compressed Size       000002A3 (675)\n+13C07E Uncompressed Size     00000544 (1348)\n \n-122CB4 LOCAL HEADER #1124    04034B50 (67324752)\n-122CB8 Extract Zip Spec      14 (20) '2.0'\n-122CB9 Extract OS            00 (0) 'MS-DOS'\n-122CBA General Purpose Flag  0808 (2056)\n+13C082 LOCAL HEADER #1124    04034B50 (67324752)\n+13C086 Extract Zip Spec      14 (20) '2.0'\n+13C087 Extract OS            00 (0) 'MS-DOS'\n+13C088 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-122CBC Compression Method    0008 (8) 'Deflated'\n-122CBE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-122CC2 CRC                   00000000 (0)\n-122CC6 Compressed Size       00000000 (0)\n-122CCA Uncompressed Size     00000000 (0)\n-122CCE Filename Length       001E (30)\n-122CD0 Extra Length          0000 (0)\n-122CD2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13C08A Compression Method    0008 (8) 'Deflated'\n+13C08C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13C090 CRC                   00000000 (0)\n+13C094 Compressed Size       00000000 (0)\n+13C098 Uncompressed Size     00000000 (0)\n+13C09C Filename Length       0028 (40)\n+13C09E Extra Length          0000 (0)\n+13C0A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x122CD2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13C0A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-122CF0 PAYLOAD               XX\n+13C0C8 PAYLOAD\n \n-122CF2 DATA DESCRIPTOR       08074B50 (134695760)\n-122CF6 CRC                   00000000 (0)\n-122CFA Compressed Size       00000002 (2)\n-122CFE Uncompressed Size     00000000 (0)\n+13C510 DATA DESCRIPTOR       08074B50 (134695760)\n+13C514 CRC                   C7E99B2E (3353975598)\n+13C518 Compressed Size       00000448 (1096)\n+13C51C Uncompressed Size     00000ACD (2765)\n \n-122D02 LOCAL HEADER #1125    04034B50 (67324752)\n-122D06 Extract Zip Spec      14 (20) '2.0'\n-122D07 Extract OS            00 (0) 'MS-DOS'\n-122D08 General Purpose Flag  0808 (2056)\n+13C520 LOCAL HEADER #1125    04034B50 (67324752)\n+13C524 Extract Zip Spec      14 (20) '2.0'\n+13C525 Extract OS            00 (0) 'MS-DOS'\n+13C526 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-122D0A Compression Method    0008 (8) 'Deflated'\n-122D0C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-122D10 CRC                   00000000 (0)\n-122D14 Compressed Size       00000000 (0)\n-122D18 Uncompressed Size     00000000 (0)\n-122D1C Filename Length       003C (60)\n-122D1E Extra Length          0000 (0)\n-122D20 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13C528 Compression Method    0008 (8) 'Deflated'\n+13C52A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13C52E CRC                   00000000 (0)\n+13C532 Compressed Size       00000000 (0)\n+13C536 Uncompressed Size     00000000 (0)\n+13C53A Filename Length       0036 (54)\n+13C53C Extra Length          0000 (0)\n+13C53E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x122D20: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13C53E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-122D5C PAYLOAD\n+13C574 PAYLOAD\n \n-123092 DATA DESCRIPTOR       08074B50 (134695760)\n-123096 CRC                   E1C5881F (3787819039)\n-12309A Compressed Size       00000336 (822)\n-12309E Uncompressed Size     000006AD (1709)\n+13C9A2 DATA DESCRIPTOR       08074B50 (134695760)\n+13C9A6 CRC                   A4BC4964 (2763802980)\n+13C9AA Compressed Size       0000042E (1070)\n+13C9AE Uncompressed Size     000014B7 (5303)\n \n-1230A2 LOCAL HEADER #1126    04034B50 (67324752)\n-1230A6 Extract Zip Spec      14 (20) '2.0'\n-1230A7 Extract OS            00 (0) 'MS-DOS'\n-1230A8 General Purpose Flag  0808 (2056)\n+13C9B2 LOCAL HEADER #1126    04034B50 (67324752)\n+13C9B6 Extract Zip Spec      14 (20) '2.0'\n+13C9B7 Extract OS            00 (0) 'MS-DOS'\n+13C9B8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1230AA Compression Method    0008 (8) 'Deflated'\n-1230AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1230B0 CRC                   00000000 (0)\n-1230B4 Compressed Size       00000000 (0)\n-1230B8 Uncompressed Size     00000000 (0)\n-1230BC Filename Length       003A (58)\n-1230BE Extra Length          0000 (0)\n-1230C0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13C9BA Compression Method    0008 (8) 'Deflated'\n+13C9BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13C9C0 CRC                   00000000 (0)\n+13C9C4 Compressed Size       00000000 (0)\n+13C9C8 Uncompressed Size     00000000 (0)\n+13C9CC Filename Length       002D (45)\n+13C9CE Extra Length          0000 (0)\n+13C9D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1230C0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13C9D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1230FA PAYLOAD\n+13C9FD PAYLOAD\n \n-12335B DATA DESCRIPTOR       08074B50 (134695760)\n-12335F CRC                   FE9FE6BA (4271892154)\n-123363 Compressed Size       00000261 (609)\n-123367 Uncompressed Size     00000515 (1301)\n+13CEBC DATA DESCRIPTOR       08074B50 (134695760)\n+13CEC0 CRC                   4C19B653 (1276753491)\n+13CEC4 Compressed Size       000004BF (1215)\n+13CEC8 Uncompressed Size     00000A34 (2612)\n \n-12336B LOCAL HEADER #1127    04034B50 (67324752)\n-12336F Extract Zip Spec      14 (20) '2.0'\n-123370 Extract OS            00 (0) 'MS-DOS'\n-123371 General Purpose Flag  0808 (2056)\n+13CECC LOCAL HEADER #1127    04034B50 (67324752)\n+13CED0 Extract Zip Spec      14 (20) '2.0'\n+13CED1 Extract OS            00 (0) 'MS-DOS'\n+13CED2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-123373 Compression Method    0008 (8) 'Deflated'\n-123375 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-123379 CRC                   00000000 (0)\n-12337D Compressed Size       00000000 (0)\n-123381 Uncompressed Size     00000000 (0)\n-123385 Filename Length       0039 (57)\n-123387 Extra Length          0000 (0)\n-123389 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13CED4 Compression Method    0008 (8) 'Deflated'\n+13CED6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13CEDA CRC                   00000000 (0)\n+13CEDE Compressed Size       00000000 (0)\n+13CEE2 Uncompressed Size     00000000 (0)\n+13CEE6 Filename Length       0027 (39)\n+13CEE8 Extra Length          0000 (0)\n+13CEEA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x123389: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13CEEA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1233C2 PAYLOAD\n+13CF11 PAYLOAD\n \n-123629 DATA DESCRIPTOR       08074B50 (134695760)\n-12362D CRC                   07F77085 (133656709)\n-123631 Compressed Size       00000267 (615)\n-123635 Uncompressed Size     000004F7 (1271)\n+13D1A1 DATA DESCRIPTOR       08074B50 (134695760)\n+13D1A5 CRC                   92D33C56 (2463317078)\n+13D1A9 Compressed Size       00000290 (656)\n+13D1AD Uncompressed Size     0000053A (1338)\n \n-123639 LOCAL HEADER #1128    04034B50 (67324752)\n-12363D Extract Zip Spec      14 (20) '2.0'\n-12363E Extract OS            00 (0) 'MS-DOS'\n-12363F General Purpose Flag  0808 (2056)\n+13D1B1 LOCAL HEADER #1128    04034B50 (67324752)\n+13D1B5 Extract Zip Spec      14 (20) '2.0'\n+13D1B6 Extract OS            00 (0) 'MS-DOS'\n+13D1B7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-123641 Compression Method    0008 (8) 'Deflated'\n-123643 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-123647 CRC                   00000000 (0)\n-12364B Compressed Size       00000000 (0)\n-12364F Uncompressed Size     00000000 (0)\n-123653 Filename Length       003A (58)\n-123655 Extra Length          0000 (0)\n-123657 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13D1B9 Compression Method    0008 (8) 'Deflated'\n+13D1BB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13D1BF CRC                   00000000 (0)\n+13D1C3 Compressed Size       00000000 (0)\n+13D1C7 Uncompressed Size     00000000 (0)\n+13D1CB Filename Length       002E (46)\n+13D1CD Extra Length          0000 (0)\n+13D1CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x123657: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13D1CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-123691 PAYLOAD\n+13D1FD PAYLOAD\n \n-123A7C DATA DESCRIPTOR       08074B50 (134695760)\n-123A80 CRC                   334FA791 (860858257)\n-123A84 Compressed Size       000003EB (1003)\n-123A88 Uncompressed Size     00000C9A (3226)\n+13D5B8 DATA DESCRIPTOR       08074B50 (134695760)\n+13D5BC CRC                   8AC6D7E1 (2328287201)\n+13D5C0 Compressed Size       000003BB (955)\n+13D5C4 Uncompressed Size     000007D3 (2003)\n \n-123A8C LOCAL HEADER #1129    04034B50 (67324752)\n-123A90 Extract Zip Spec      14 (20) '2.0'\n-123A91 Extract OS            00 (0) 'MS-DOS'\n-123A92 General Purpose Flag  0808 (2056)\n+13D5C8 LOCAL HEADER #1129    04034B50 (67324752)\n+13D5CC Extract Zip Spec      14 (20) '2.0'\n+13D5CD Extract OS            00 (0) 'MS-DOS'\n+13D5CE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-123A94 Compression Method    0008 (8) 'Deflated'\n-123A96 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-123A9A CRC                   00000000 (0)\n-123A9E Compressed Size       00000000 (0)\n-123AA2 Uncompressed Size     00000000 (0)\n-123AA6 Filename Length       0039 (57)\n-123AA8 Extra Length          0000 (0)\n-123AAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13D5D0 Compression Method    0008 (8) 'Deflated'\n+13D5D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13D5D6 CRC                   00000000 (0)\n+13D5DA Compressed Size       00000000 (0)\n+13D5DE Uncompressed Size     00000000 (0)\n+13D5E2 Filename Length       0035 (53)\n+13D5E4 Extra Length          0000 (0)\n+13D5E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x123AAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13D5E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-123AE3 PAYLOAD\n+13D61B PAYLOAD\n \n-123F19 DATA DESCRIPTOR       08074B50 (134695760)\n-123F1D CRC                   5C26FEE4 (1546059492)\n-123F21 Compressed Size       00000436 (1078)\n-123F25 Uncompressed Size     00000D57 (3415)\n+13D8E4 DATA DESCRIPTOR       08074B50 (134695760)\n+13D8E8 CRC                   12C409E5 (314837477)\n+13D8EC Compressed Size       000002C9 (713)\n+13D8F0 Uncompressed Size     0000061F (1567)\n \n-123F29 LOCAL HEADER #1130    04034B50 (67324752)\n-123F2D Extract Zip Spec      14 (20) '2.0'\n-123F2E Extract OS            00 (0) 'MS-DOS'\n-123F2F General Purpose Flag  0808 (2056)\n+13D8F4 LOCAL HEADER #1130    04034B50 (67324752)\n+13D8F8 Extract Zip Spec      14 (20) '2.0'\n+13D8F9 Extract OS            00 (0) 'MS-DOS'\n+13D8FA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-123F31 Compression Method    0008 (8) 'Deflated'\n-123F33 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-123F37 CRC                   00000000 (0)\n-123F3B Compressed Size       00000000 (0)\n-123F3F Uncompressed Size     00000000 (0)\n-123F43 Filename Length       001E (30)\n-123F45 Extra Length          0000 (0)\n-123F47 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13D8FC Compression Method    0008 (8) 'Deflated'\n+13D8FE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13D902 CRC                   00000000 (0)\n+13D906 Compressed Size       00000000 (0)\n+13D90A Uncompressed Size     00000000 (0)\n+13D90E Filename Length       002E (46)\n+13D910 Extra Length          0000 (0)\n+13D912 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x123F47: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13D912: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-123F65 PAYLOAD               XX\n+13D940 PAYLOAD\n \n-123F67 DATA DESCRIPTOR       08074B50 (134695760)\n-123F6B CRC                   00000000 (0)\n-123F6F Compressed Size       00000002 (2)\n-123F73 Uncompressed Size     00000000 (0)\n+13E079 DATA DESCRIPTOR       08074B50 (134695760)\n+13E07D CRC                   6C2E2D81 (1814965633)\n+13E081 Compressed Size       00000739 (1849)\n+13E085 Uncompressed Size     00001602 (5634)\n \n-123F77 LOCAL HEADER #1131    04034B50 (67324752)\n-123F7B Extract Zip Spec      14 (20) '2.0'\n-123F7C Extract OS            00 (0) 'MS-DOS'\n-123F7D General Purpose Flag  0808 (2056)\n+13E089 LOCAL HEADER #1131    04034B50 (67324752)\n+13E08D Extract Zip Spec      14 (20) '2.0'\n+13E08E Extract OS            00 (0) 'MS-DOS'\n+13E08F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-123F7F Compression Method    0008 (8) 'Deflated'\n-123F81 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-123F85 CRC                   00000000 (0)\n-123F89 Compressed Size       00000000 (0)\n-123F8D Uncompressed Size     00000000 (0)\n-123F91 Filename Length       0033 (51)\n-123F93 Extra Length          0000 (0)\n-123F95 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13E091 Compression Method    0008 (8) 'Deflated'\n+13E093 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13E097 CRC                   00000000 (0)\n+13E09B Compressed Size       00000000 (0)\n+13E09F Uncompressed Size     00000000 (0)\n+13E0A3 Filename Length       0036 (54)\n+13E0A5 Extra Length          0000 (0)\n+13E0A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x123F95: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13E0A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-123FC8 PAYLOAD\n+13E0DD PAYLOAD\n \n-124347 DATA DESCRIPTOR       08074B50 (134695760)\n-12434B CRC                   EC8B751D (3968562461)\n-12434F Compressed Size       0000037F (895)\n-124353 Uncompressed Size     000008F6 (2294)\n+13E332 DATA DESCRIPTOR       08074B50 (134695760)\n+13E336 CRC                   ED9B9E6B (3986398827)\n+13E33A Compressed Size       00000255 (597)\n+13E33E Uncompressed Size     000004B7 (1207)\n \n-124357 LOCAL HEADER #1132    04034B50 (67324752)\n-12435B Extract Zip Spec      14 (20) '2.0'\n-12435C Extract OS            00 (0) 'MS-DOS'\n-12435D General Purpose Flag  0808 (2056)\n+13E342 LOCAL HEADER #1132    04034B50 (67324752)\n+13E346 Extract Zip Spec      14 (20) '2.0'\n+13E347 Extract OS            00 (0) 'MS-DOS'\n+13E348 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12435F Compression Method    0008 (8) 'Deflated'\n-124361 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-124365 CRC                   00000000 (0)\n-124369 Compressed Size       00000000 (0)\n-12436D Uncompressed Size     00000000 (0)\n-124371 Filename Length       0032 (50)\n-124373 Extra Length          0000 (0)\n-124375 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13E34A Compression Method    0008 (8) 'Deflated'\n+13E34C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13E350 CRC                   00000000 (0)\n+13E354 Compressed Size       00000000 (0)\n+13E358 Uncompressed Size     00000000 (0)\n+13E35C Filename Length       0021 (33)\n+13E35E Extra Length          0000 (0)\n+13E360 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x124375: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13E360: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1243A7 PAYLOAD\n+13E381 PAYLOAD               XX\n \n-124D16 DATA DESCRIPTOR       08074B50 (134695760)\n-124D1A CRC                   A5C33F03 (2781036291)\n-124D1E Compressed Size       0000096F (2415)\n-124D22 Uncompressed Size     00001F52 (8018)\n+13E383 DATA DESCRIPTOR       08074B50 (134695760)\n+13E387 CRC                   00000000 (0)\n+13E38B Compressed Size       00000002 (2)\n+13E38F Uncompressed Size     00000000 (0)\n \n-124D26 LOCAL HEADER #1133    04034B50 (67324752)\n-124D2A Extract Zip Spec      14 (20) '2.0'\n-124D2B Extract OS            00 (0) 'MS-DOS'\n-124D2C General Purpose Flag  0808 (2056)\n+13E393 LOCAL HEADER #1133    04034B50 (67324752)\n+13E397 Extract Zip Spec      14 (20) '2.0'\n+13E398 Extract OS            00 (0) 'MS-DOS'\n+13E399 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-124D2E Compression Method    0008 (8) 'Deflated'\n-124D30 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-124D34 CRC                   00000000 (0)\n-124D38 Compressed Size       00000000 (0)\n-124D3C Uncompressed Size     00000000 (0)\n-124D40 Filename Length       0033 (51)\n-124D42 Extra Length          0000 (0)\n-124D44 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13E39B Compression Method    0008 (8) 'Deflated'\n+13E39D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13E3A1 CRC                   00000000 (0)\n+13E3A5 Compressed Size       00000000 (0)\n+13E3A9 Uncompressed Size     00000000 (0)\n+13E3AD Filename Length       003E (62)\n+13E3AF Extra Length          0000 (0)\n+13E3B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x124D44: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13E3B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-124D77 PAYLOAD\n+13E3EF PAYLOAD\n \n-1252DE DATA DESCRIPTOR       08074B50 (134695760)\n-1252E2 CRC                   861CA040 (2250022976)\n-1252E6 Compressed Size       00000567 (1383)\n-1252EA Uncompressed Size     000010FE (4350)\n+13E701 DATA DESCRIPTOR       08074B50 (134695760)\n+13E705 CRC                   3799B565 (932820325)\n+13E709 Compressed Size       00000312 (786)\n+13E70D Uncompressed Size     0000086B (2155)\n \n-1252EE LOCAL HEADER #1134    04034B50 (67324752)\n-1252F2 Extract Zip Spec      14 (20) '2.0'\n-1252F3 Extract OS            00 (0) 'MS-DOS'\n-1252F4 General Purpose Flag  0808 (2056)\n+13E711 LOCAL HEADER #1134    04034B50 (67324752)\n+13E715 Extract Zip Spec      14 (20) '2.0'\n+13E716 Extract OS            00 (0) 'MS-DOS'\n+13E717 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1252F6 Compression Method    0008 (8) 'Deflated'\n-1252F8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1252FC CRC                   00000000 (0)\n-125300 Compressed Size       00000000 (0)\n-125304 Uncompressed Size     00000000 (0)\n-125308 Filename Length       0038 (56)\n-12530A Extra Length          0000 (0)\n-12530C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13E719 Compression Method    0008 (8) 'Deflated'\n+13E71B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13E71F CRC                   00000000 (0)\n+13E723 Compressed Size       00000000 (0)\n+13E727 Uncompressed Size     00000000 (0)\n+13E72B Filename Length       0045 (69)\n+13E72D Extra Length          0000 (0)\n+13E72F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12530C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13E72F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-125344 PAYLOAD\n+13E774 PAYLOAD\n \n-125C16 DATA DESCRIPTOR       08074B50 (134695760)\n-125C1A CRC                   1140D3D7 (289461207)\n-125C1E Compressed Size       000008D2 (2258)\n-125C22 Uncompressed Size     000021E4 (8676)\n+13EAAB DATA DESCRIPTOR       08074B50 (134695760)\n+13EAAF CRC                   0B335580 (187913600)\n+13EAB3 Compressed Size       00000337 (823)\n+13EAB7 Uncompressed Size     000006ED (1773)\n \n-125C26 LOCAL HEADER #1135    04034B50 (67324752)\n-125C2A Extract Zip Spec      14 (20) '2.0'\n-125C2B Extract OS            00 (0) 'MS-DOS'\n-125C2C General Purpose Flag  0808 (2056)\n+13EABB LOCAL HEADER #1135    04034B50 (67324752)\n+13EABF Extract Zip Spec      14 (20) '2.0'\n+13EAC0 Extract OS            00 (0) 'MS-DOS'\n+13EAC1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-125C2E Compression Method    0008 (8) 'Deflated'\n-125C30 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-125C34 CRC                   00000000 (0)\n-125C38 Compressed Size       00000000 (0)\n-125C3C Uncompressed Size     00000000 (0)\n-125C40 Filename Length       0035 (53)\n-125C42 Extra Length          0000 (0)\n-125C44 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13EAC3 Compression Method    0008 (8) 'Deflated'\n+13EAC5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13EAC9 CRC                   00000000 (0)\n+13EACD Compressed Size       00000000 (0)\n+13EAD1 Uncompressed Size     00000000 (0)\n+13EAD5 Filename Length       0046 (70)\n+13EAD7 Extra Length          0000 (0)\n+13EAD9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x125C44: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13EAD9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-125C79 PAYLOAD\n+13EB1F PAYLOAD\n \n-126179 DATA DESCRIPTOR       08074B50 (134695760)\n-12617D CRC                   90398B66 (2419690342)\n-126181 Compressed Size       00000500 (1280)\n-126185 Uncompressed Size     00000F56 (3926)\n+13EDBB DATA DESCRIPTOR       08074B50 (134695760)\n+13EDBF CRC                   4E9CD747 (1318901575)\n+13EDC3 Compressed Size       0000029C (668)\n+13EDC7 Uncompressed Size     00000587 (1415)\n \n-126189 LOCAL HEADER #1136    04034B50 (67324752)\n-12618D Extract Zip Spec      14 (20) '2.0'\n-12618E Extract OS            00 (0) 'MS-DOS'\n-12618F General Purpose Flag  0808 (2056)\n+13EDCB LOCAL HEADER #1136    04034B50 (67324752)\n+13EDCF Extract Zip Spec      14 (20) '2.0'\n+13EDD0 Extract OS            00 (0) 'MS-DOS'\n+13EDD1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-126191 Compression Method    0008 (8) 'Deflated'\n-126193 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-126197 CRC                   00000000 (0)\n-12619B Compressed Size       00000000 (0)\n-12619F Uncompressed Size     00000000 (0)\n-1261A3 Filename Length       002D (45)\n-1261A5 Extra Length          0000 (0)\n-1261A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13EDD3 Compression Method    0008 (8) 'Deflated'\n+13EDD5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13EDD9 CRC                   00000000 (0)\n+13EDDD Compressed Size       00000000 (0)\n+13EDE1 Uncompressed Size     00000000 (0)\n+13EDE5 Filename Length       0044 (68)\n+13EDE7 Extra Length          0000 (0)\n+13EDE9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1261A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13EDE9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1261D4 PAYLOAD\n+13EE2D PAYLOAD\n \n-12660D DATA DESCRIPTOR       08074B50 (134695760)\n-126611 CRC                   8054E5B8 (2153047480)\n-126615 Compressed Size       00000439 (1081)\n-126619 Uncompressed Size     00000FA9 (4009)\n+13F1C8 DATA DESCRIPTOR       08074B50 (134695760)\n+13F1CC CRC                   A92DE3D2 (2838356946)\n+13F1D0 Compressed Size       0000039B (923)\n+13F1D4 Uncompressed Size     000008A1 (2209)\n \n-12661D LOCAL HEADER #1137    04034B50 (67324752)\n-126621 Extract Zip Spec      14 (20) '2.0'\n-126622 Extract OS            00 (0) 'MS-DOS'\n-126623 General Purpose Flag  0808 (2056)\n+13F1D8 LOCAL HEADER #1137    04034B50 (67324752)\n+13F1DC Extract Zip Spec      14 (20) '2.0'\n+13F1DD Extract OS            00 (0) 'MS-DOS'\n+13F1DE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-126625 Compression Method    0008 (8) 'Deflated'\n-126627 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-12662B CRC                   00000000 (0)\n-12662F Compressed Size       00000000 (0)\n-126633 Uncompressed Size     00000000 (0)\n-126637 Filename Length       0031 (49)\n-126639 Extra Length          0000 (0)\n-12663B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13F1E0 Compression Method    0008 (8) 'Deflated'\n+13F1E2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13F1E6 CRC                   00000000 (0)\n+13F1EA Compressed Size       00000000 (0)\n+13F1EE Uncompressed Size     00000000 (0)\n+13F1F2 Filename Length       003C (60)\n+13F1F4 Extra Length          0000 (0)\n+13F1F6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12663B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13F1F6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-12666C PAYLOAD\n+13F232 PAYLOAD\n \n-126956 DATA DESCRIPTOR       08074B50 (134695760)\n-12695A CRC                   873A5673 (2268747379)\n-12695E Compressed Size       000002EA (746)\n-126962 Uncompressed Size     0000072D (1837)\n+13F905 DATA DESCRIPTOR       08074B50 (134695760)\n+13F909 CRC                   B19E4EA6 (2979942054)\n+13F90D Compressed Size       000006D3 (1747)\n+13F911 Uncompressed Size     0000188D (6285)\n \n-126966 LOCAL HEADER #1138    04034B50 (67324752)\n-12696A Extract Zip Spec      14 (20) '2.0'\n-12696B Extract OS            00 (0) 'MS-DOS'\n-12696C General Purpose Flag  0808 (2056)\n+13F915 LOCAL HEADER #1138    04034B50 (67324752)\n+13F919 Extract Zip Spec      14 (20) '2.0'\n+13F91A Extract OS            00 (0) 'MS-DOS'\n+13F91B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12696E Compression Method    0008 (8) 'Deflated'\n-126970 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-126974 CRC                   00000000 (0)\n-126978 Compressed Size       00000000 (0)\n-12697C Uncompressed Size     00000000 (0)\n-126980 Filename Length       0038 (56)\n-126982 Extra Length          0000 (0)\n-126984 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+13F91D Compression Method    0008 (8) 'Deflated'\n+13F91F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+13F923 CRC                   00000000 (0)\n+13F927 Compressed Size       00000000 (0)\n+13F92B Uncompressed Size     00000000 (0)\n+13F92F Filename Length       0045 (69)\n+13F931 Extra Length          0000 (0)\n+13F933 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x126984: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x13F933: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1269BC PAYLOAD\n+13F978 PAYLOAD\n \n-126E5A DATA DESCRIPTOR       08074B50 (134695760)\n-126E5E CRC                   B63E72D7 (3057545943)\n-126E62 Compressed Size       0000049E (1182)\n-126E66 Uncompressed Size     00000D50 (3408)\n+14028B DATA DESCRIPTOR       08074B50 (134695760)\n+14028F CRC                   25CCFC5A (634190938)\n+140293 Compressed Size       00000913 (2323)\n+140297 Uncompressed Size     00002B62 (11106)\n \n-126E6A LOCAL HEADER #1139    04034B50 (67324752)\n-126E6E Extract Zip Spec      14 (20) '2.0'\n-126E6F Extract OS            00 (0) 'MS-DOS'\n-126E70 General Purpose Flag  0808 (2056)\n+14029B LOCAL HEADER #1139    04034B50 (67324752)\n+14029F Extract Zip Spec      14 (20) '2.0'\n+1402A0 Extract OS            00 (0) 'MS-DOS'\n+1402A1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-126E72 Compression Method    0008 (8) 'Deflated'\n-126E74 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-126E78 CRC                   00000000 (0)\n-126E7C Compressed Size       00000000 (0)\n-126E80 Uncompressed Size     00000000 (0)\n-126E84 Filename Length       003A (58)\n-126E86 Extra Length          0000 (0)\n-126E88 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1402A3 Compression Method    0008 (8) 'Deflated'\n+1402A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1402A9 CRC                   00000000 (0)\n+1402AD Compressed Size       00000000 (0)\n+1402B1 Uncompressed Size     00000000 (0)\n+1402B5 Filename Length       0040 (64)\n+1402B7 Extra Length          0000 (0)\n+1402B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x126E88: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1402B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-126EC2 PAYLOAD\n+1402F9 PAYLOAD\n \n-1272F6 DATA DESCRIPTOR       08074B50 (134695760)\n-1272FA CRC                   C40EC84E (3289303118)\n-1272FE Compressed Size       00000434 (1076)\n-127302 Uncompressed Size     00000D18 (3352)\n+140B83 DATA DESCRIPTOR       08074B50 (134695760)\n+140B87 CRC                   DEC94C5D (3737734237)\n+140B8B Compressed Size       0000088A (2186)\n+140B8F Uncompressed Size     000020CD (8397)\n \n-127306 LOCAL HEADER #1140    04034B50 (67324752)\n-12730A Extract Zip Spec      14 (20) '2.0'\n-12730B Extract OS            00 (0) 'MS-DOS'\n-12730C General Purpose Flag  0808 (2056)\n+140B93 LOCAL HEADER #1140    04034B50 (67324752)\n+140B97 Extract Zip Spec      14 (20) '2.0'\n+140B98 Extract OS            00 (0) 'MS-DOS'\n+140B99 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12730E Compression Method    0008 (8) 'Deflated'\n-127310 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-127314 CRC                   00000000 (0)\n-127318 Compressed Size       00000000 (0)\n-12731C Uncompressed Size     00000000 (0)\n-127320 Filename Length       0024 (36)\n-127322 Extra Length          0000 (0)\n-127324 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+140B9B Compression Method    0008 (8) 'Deflated'\n+140B9D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+140BA1 CRC                   00000000 (0)\n+140BA5 Compressed Size       00000000 (0)\n+140BA9 Uncompressed Size     00000000 (0)\n+140BAD Filename Length       0038 (56)\n+140BAF Extra Length          0000 (0)\n+140BB1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x127324: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x140BB1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-127348 PAYLOAD               XX\n+140BE9 PAYLOAD\n \n-12734A DATA DESCRIPTOR       08074B50 (134695760)\n-12734E CRC                   00000000 (0)\n-127352 Compressed Size       00000002 (2)\n-127356 Uncompressed Size     00000000 (0)\n+141475 DATA DESCRIPTOR       08074B50 (134695760)\n+141479 CRC                   71025D3E (1895980350)\n+14147D Compressed Size       0000088C (2188)\n+141481 Uncompressed Size     0000309E (12446)\n \n-12735A LOCAL HEADER #1141    04034B50 (67324752)\n-12735E Extract Zip Spec      14 (20) '2.0'\n-12735F Extract OS            00 (0) 'MS-DOS'\n-127360 General Purpose Flag  0808 (2056)\n+141485 LOCAL HEADER #1141    04034B50 (67324752)\n+141489 Extract Zip Spec      14 (20) '2.0'\n+14148A Extract OS            00 (0) 'MS-DOS'\n+14148B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-127362 Compression Method    0008 (8) 'Deflated'\n-127364 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-127368 CRC                   00000000 (0)\n-12736C Compressed Size       00000000 (0)\n-127370 Uncompressed Size     00000000 (0)\n-127374 Filename Length       0036 (54)\n-127376 Extra Length          0000 (0)\n-127378 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14148D Compression Method    0008 (8) 'Deflated'\n+14148F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+141493 CRC                   00000000 (0)\n+141497 Compressed Size       00000000 (0)\n+14149B Uncompressed Size     00000000 (0)\n+14149F Filename Length       003F (63)\n+1414A1 Extra Length          0000 (0)\n+1414A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x127378: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1414A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1273AE PAYLOAD\n+1414E2 PAYLOAD\n \n-127875 DATA DESCRIPTOR       08074B50 (134695760)\n-127879 CRC                   7D5510EE (2102726894)\n-12787D Compressed Size       000004C7 (1223)\n-127881 Uncompressed Size     00000DAE (3502)\n+1417AB DATA DESCRIPTOR       08074B50 (134695760)\n+1417AF CRC                   BE5FB3B5 (3193942965)\n+1417B3 Compressed Size       000002C9 (713)\n+1417B7 Uncompressed Size     00000604 (1540)\n \n-127885 LOCAL HEADER #1142    04034B50 (67324752)\n-127889 Extract Zip Spec      14 (20) '2.0'\n-12788A Extract OS            00 (0) 'MS-DOS'\n-12788B General Purpose Flag  0808 (2056)\n+1417BB LOCAL HEADER #1142    04034B50 (67324752)\n+1417BF Extract Zip Spec      14 (20) '2.0'\n+1417C0 Extract OS            00 (0) 'MS-DOS'\n+1417C1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12788D Compression Method    0008 (8) 'Deflated'\n-12788F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-127893 CRC                   00000000 (0)\n-127897 Compressed Size       00000000 (0)\n-12789B Uncompressed Size     00000000 (0)\n-12789F Filename Length       0035 (53)\n-1278A1 Extra Length          0000 (0)\n-1278A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1417C3 Compression Method    0008 (8) 'Deflated'\n+1417C5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1417C9 CRC                   00000000 (0)\n+1417CD Compressed Size       00000000 (0)\n+1417D1 Uncompressed Size     00000000 (0)\n+1417D5 Filename Length       0036 (54)\n+1417D7 Extra Length          0000 (0)\n+1417D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1278A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1417D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1278D8 PAYLOAD\n+14180F PAYLOAD\n \n-127B10 DATA DESCRIPTOR       08074B50 (134695760)\n-127B14 CRC                   FC4D9CC7 (4232944839)\n-127B18 Compressed Size       00000238 (568)\n-127B1C Uncompressed Size     00000409 (1033)\n+142256 DATA DESCRIPTOR       08074B50 (134695760)\n+14225A CRC                   ED1E1920 (3978172704)\n+14225E Compressed Size       00000A47 (2631)\n+142262 Uncompressed Size     00002FC8 (12232)\n \n-127B20 LOCAL HEADER #1143    04034B50 (67324752)\n-127B24 Extract Zip Spec      14 (20) '2.0'\n-127B25 Extract OS            00 (0) 'MS-DOS'\n-127B26 General Purpose Flag  0808 (2056)\n+142266 LOCAL HEADER #1143    04034B50 (67324752)\n+14226A Extract Zip Spec      14 (20) '2.0'\n+14226B Extract OS            00 (0) 'MS-DOS'\n+14226C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-127B28 Compression Method    0008 (8) 'Deflated'\n-127B2A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-127B2E CRC                   00000000 (0)\n-127B32 Compressed Size       00000000 (0)\n-127B36 Uncompressed Size     00000000 (0)\n-127B3A Filename Length       001B (27)\n-127B3C Extra Length          0000 (0)\n-127B3E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14226E Compression Method    0008 (8) 'Deflated'\n+142270 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+142274 CRC                   00000000 (0)\n+142278 Compressed Size       00000000 (0)\n+14227C Uncompressed Size     00000000 (0)\n+142280 Filename Length       003D (61)\n+142282 Extra Length          0000 (0)\n+142284 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x127B3E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x142284: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-127B59 PAYLOAD               XX\n+1422C1 PAYLOAD\n \n-127B5B DATA DESCRIPTOR       08074B50 (134695760)\n-127B5F CRC                   00000000 (0)\n-127B63 Compressed Size       00000002 (2)\n-127B67 Uncompressed Size     00000000 (0)\n+1425F2 DATA DESCRIPTOR       08074B50 (134695760)\n+1425F6 CRC                   9286ACC7 (2458299591)\n+1425FA Compressed Size       00000331 (817)\n+1425FE Uncompressed Size     000007EB (2027)\n \n-127B6B LOCAL HEADER #1144    04034B50 (67324752)\n-127B6F Extract Zip Spec      14 (20) '2.0'\n-127B70 Extract OS            00 (0) 'MS-DOS'\n-127B71 General Purpose Flag  0808 (2056)\n+142602 LOCAL HEADER #1144    04034B50 (67324752)\n+142606 Extract Zip Spec      14 (20) '2.0'\n+142607 Extract OS            00 (0) 'MS-DOS'\n+142608 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-127B73 Compression Method    0008 (8) 'Deflated'\n-127B75 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-127B79 CRC                   00000000 (0)\n-127B7D Compressed Size       00000000 (0)\n-127B81 Uncompressed Size     00000000 (0)\n-127B85 Filename Length       0034 (52)\n-127B87 Extra Length          0000 (0)\n-127B89 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14260A Compression Method    0008 (8) 'Deflated'\n+14260C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+142610 CRC                   00000000 (0)\n+142614 Compressed Size       00000000 (0)\n+142618 Uncompressed Size     00000000 (0)\n+14261C Filename Length       003E (62)\n+14261E Extra Length          0000 (0)\n+142620 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x127B89: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x142620: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-127BBD PAYLOAD\n+14265E PAYLOAD\n \n-128073 DATA DESCRIPTOR       08074B50 (134695760)\n-128077 CRC                   E40DEA4B (3826117195)\n-12807B Compressed Size       000004B6 (1206)\n-12807F Uncompressed Size     00000CAE (3246)\n+143899 DATA DESCRIPTOR       08074B50 (134695760)\n+14389D CRC                   8EF20CD3 (2398227667)\n+1438A1 Compressed Size       0000123B (4667)\n+1438A5 Uncompressed Size     00005410 (21520)\n \n-128083 LOCAL HEADER #1145    04034B50 (67324752)\n-128087 Extract Zip Spec      14 (20) '2.0'\n-128088 Extract OS            00 (0) 'MS-DOS'\n-128089 General Purpose Flag  0808 (2056)\n+1438A9 LOCAL HEADER #1145    04034B50 (67324752)\n+1438AD Extract Zip Spec      14 (20) '2.0'\n+1438AE Extract OS            00 (0) 'MS-DOS'\n+1438AF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12808B Compression Method    0008 (8) 'Deflated'\n-12808D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-128091 CRC                   00000000 (0)\n-128095 Compressed Size       00000000 (0)\n-128099 Uncompressed Size     00000000 (0)\n-12809D Filename Length       0034 (52)\n-12809F Extra Length          0000 (0)\n-1280A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1438B1 Compression Method    0008 (8) 'Deflated'\n+1438B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1438B7 CRC                   00000000 (0)\n+1438BB Compressed Size       00000000 (0)\n+1438BF Uncompressed Size     00000000 (0)\n+1438C3 Filename Length       0047 (71)\n+1438C5 Extra Length          0000 (0)\n+1438C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1280A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1438C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1280D5 PAYLOAD\n+14390E PAYLOAD\n \n-128737 DATA DESCRIPTOR       08074B50 (134695760)\n-12873B CRC                   7B8AE3FF (2072699903)\n-12873F Compressed Size       00000662 (1634)\n-128743 Uncompressed Size     000012F0 (4848)\n+144543 DATA DESCRIPTOR       08074B50 (134695760)\n+144547 CRC                   82D7146C (2195133548)\n+14454B Compressed Size       00000C35 (3125)\n+14454F Uncompressed Size     00002DE5 (11749)\n \n-128747 LOCAL HEADER #1146    04034B50 (67324752)\n-12874B Extract Zip Spec      14 (20) '2.0'\n-12874C Extract OS            00 (0) 'MS-DOS'\n-12874D General Purpose Flag  0808 (2056)\n+144553 LOCAL HEADER #1146    04034B50 (67324752)\n+144557 Extract Zip Spec      14 (20) '2.0'\n+144558 Extract OS            00 (0) 'MS-DOS'\n+144559 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12874F Compression Method    0008 (8) 'Deflated'\n-128751 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-128755 CRC                   00000000 (0)\n-128759 Compressed Size       00000000 (0)\n-12875D Uncompressed Size     00000000 (0)\n-128761 Filename Length       0038 (56)\n-128763 Extra Length          0000 (0)\n-128765 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14455B Compression Method    0008 (8) 'Deflated'\n+14455D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+144561 CRC                   00000000 (0)\n+144565 Compressed Size       00000000 (0)\n+144569 Uncompressed Size     00000000 (0)\n+14456D Filename Length       0045 (69)\n+14456F Extra Length          0000 (0)\n+144571 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x128765: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x144571: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-12879D PAYLOAD\n+1445B6 PAYLOAD\n \n-128CDF DATA DESCRIPTOR       08074B50 (134695760)\n-128CE3 CRC                   19702ABA (426781370)\n-128CE7 Compressed Size       00000542 (1346)\n-128CEB Uncompressed Size     00000F11 (3857)\n+1448B5 DATA DESCRIPTOR       08074B50 (134695760)\n+1448B9 CRC                   988327A2 (2558732194)\n+1448BD Compressed Size       000002FF (767)\n+1448C1 Uncompressed Size     000006B3 (1715)\n \n-128CEF LOCAL HEADER #1147    04034B50 (67324752)\n-128CF3 Extract Zip Spec      14 (20) '2.0'\n-128CF4 Extract OS            00 (0) 'MS-DOS'\n-128CF5 General Purpose Flag  0808 (2056)\n+1448C5 LOCAL HEADER #1147    04034B50 (67324752)\n+1448C9 Extract Zip Spec      14 (20) '2.0'\n+1448CA Extract OS            00 (0) 'MS-DOS'\n+1448CB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-128CF7 Compression Method    0008 (8) 'Deflated'\n-128CF9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-128CFD CRC                   00000000 (0)\n-128D01 Compressed Size       00000000 (0)\n-128D05 Uncompressed Size     00000000 (0)\n-128D09 Filename Length       0025 (37)\n-128D0B Extra Length          0000 (0)\n-128D0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1448CD Compression Method    0008 (8) 'Deflated'\n+1448CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1448D3 CRC                   00000000 (0)\n+1448D7 Compressed Size       00000000 (0)\n+1448DB Uncompressed Size     00000000 (0)\n+1448DF Filename Length       0035 (53)\n+1448E1 Extra Length          0000 (0)\n+1448E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x128D0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1448E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-128D32 PAYLOAD               XX\n+144918 PAYLOAD\n \n-128D34 DATA DESCRIPTOR       08074B50 (134695760)\n-128D38 CRC                   00000000 (0)\n-128D3C Compressed Size       00000002 (2)\n-128D40 Uncompressed Size     00000000 (0)\n+144DCD DATA DESCRIPTOR       08074B50 (134695760)\n+144DD1 CRC                   756EE014 (1970200596)\n+144DD5 Compressed Size       000004B5 (1205)\n+144DD9 Uncompressed Size     00000E28 (3624)\n \n-128D44 LOCAL HEADER #1148    04034B50 (67324752)\n-128D48 Extract Zip Spec      14 (20) '2.0'\n-128D49 Extract OS            00 (0) 'MS-DOS'\n-128D4A General Purpose Flag  0808 (2056)\n+144DDD LOCAL HEADER #1148    04034B50 (67324752)\n+144DE1 Extract Zip Spec      14 (20) '2.0'\n+144DE2 Extract OS            00 (0) 'MS-DOS'\n+144DE3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-128D4C Compression Method    0008 (8) 'Deflated'\n-128D4E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-128D52 CRC                   00000000 (0)\n-128D56 Compressed Size       00000000 (0)\n-128D5A Uncompressed Size     00000000 (0)\n-128D5E Filename Length       003F (63)\n-128D60 Extra Length          0000 (0)\n-128D62 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+144DE5 Compression Method    0008 (8) 'Deflated'\n+144DE7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+144DEB CRC                   00000000 (0)\n+144DEF Compressed Size       00000000 (0)\n+144DF3 Uncompressed Size     00000000 (0)\n+144DF7 Filename Length       003F (63)\n+144DF9 Extra Length          0000 (0)\n+144DFB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x128D62: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x144DFB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-128DA1 PAYLOAD\n+144E3A PAYLOAD\n \n-129163 DATA DESCRIPTOR       08074B50 (134695760)\n-129167 CRC                   763975AF (1983477167)\n-12916B Compressed Size       000003C2 (962)\n-12916F Uncompressed Size     000008BC (2236)\n+1450F8 DATA DESCRIPTOR       08074B50 (134695760)\n+1450FC CRC                   3557220F (894902799)\n+145100 Compressed Size       000002BE (702)\n+145104 Uncompressed Size     000005FC (1532)\n \n-129173 LOCAL HEADER #1149    04034B50 (67324752)\n-129177 Extract Zip Spec      14 (20) '2.0'\n-129178 Extract OS            00 (0) 'MS-DOS'\n-129179 General Purpose Flag  0808 (2056)\n+145108 LOCAL HEADER #1149    04034B50 (67324752)\n+14510C Extract Zip Spec      14 (20) '2.0'\n+14510D Extract OS            00 (0) 'MS-DOS'\n+14510E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12917B Compression Method    0008 (8) 'Deflated'\n-12917D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-129181 CRC                   00000000 (0)\n-129185 Compressed Size       00000000 (0)\n-129189 Uncompressed Size     00000000 (0)\n-12918D Filename Length       001F (31)\n-12918F Extra Length          0000 (0)\n-129191 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+145110 Compression Method    0008 (8) 'Deflated'\n+145112 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+145116 CRC                   00000000 (0)\n+14511A Compressed Size       00000000 (0)\n+14511E Uncompressed Size     00000000 (0)\n+145122 Filename Length       0027 (39)\n+145124 Extra Length          0000 (0)\n+145126 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x129191: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x145126: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1291B0 PAYLOAD               XX\n+14514D PAYLOAD               XX\n \n-1291B2 DATA DESCRIPTOR       08074B50 (134695760)\n-1291B6 CRC                   00000000 (0)\n-1291BA Compressed Size       00000002 (2)\n-1291BE Uncompressed Size     00000000 (0)\n+14514F DATA DESCRIPTOR       08074B50 (134695760)\n+145153 CRC                   00000000 (0)\n+145157 Compressed Size       00000002 (2)\n+14515B Uncompressed Size     00000000 (0)\n \n-1291C2 LOCAL HEADER #1150    04034B50 (67324752)\n-1291C6 Extract Zip Spec      14 (20) '2.0'\n-1291C7 Extract OS            00 (0) 'MS-DOS'\n-1291C8 General Purpose Flag  0808 (2056)\n+14515F LOCAL HEADER #1150    04034B50 (67324752)\n+145163 Extract Zip Spec      14 (20) '2.0'\n+145164 Extract OS            00 (0) 'MS-DOS'\n+145165 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1291CA Compression Method    0008 (8) 'Deflated'\n-1291CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1291D0 CRC                   00000000 (0)\n-1291D4 Compressed Size       00000000 (0)\n-1291D8 Uncompressed Size     00000000 (0)\n-1291DC Filename Length       0033 (51)\n-1291DE Extra Length          0000 (0)\n-1291E0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+145167 Compression Method    0008 (8) 'Deflated'\n+145169 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14516D CRC                   00000000 (0)\n+145171 Compressed Size       00000000 (0)\n+145175 Uncompressed Size     00000000 (0)\n+145179 Filename Length       004A (74)\n+14517B Extra Length          0000 (0)\n+14517D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1291E0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14517D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-129213 PAYLOAD\n+1451C7 PAYLOAD\n \n-1295A4 DATA DESCRIPTOR       08074B50 (134695760)\n-1295A8 CRC                   776F6B16 (2003790614)\n-1295AC Compressed Size       00000391 (913)\n-1295B0 Uncompressed Size     0000084C (2124)\n+14544C DATA DESCRIPTOR       08074B50 (134695760)\n+145450 CRC                   B96C1EAA (3110870698)\n+145454 Compressed Size       00000285 (645)\n+145458 Uncompressed Size     00000517 (1303)\n \n-1295B4 LOCAL HEADER #1151    04034B50 (67324752)\n-1295B8 Extract Zip Spec      14 (20) '2.0'\n-1295B9 Extract OS            00 (0) 'MS-DOS'\n-1295BA General Purpose Flag  0808 (2056)\n+14545C LOCAL HEADER #1151    04034B50 (67324752)\n+145460 Extract Zip Spec      14 (20) '2.0'\n+145461 Extract OS            00 (0) 'MS-DOS'\n+145462 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1295BC Compression Method    0008 (8) 'Deflated'\n-1295BE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1295C2 CRC                   00000000 (0)\n-1295C6 Compressed Size       00000000 (0)\n-1295CA Uncompressed Size     00000000 (0)\n-1295CE Filename Length       0023 (35)\n-1295D0 Extra Length          0000 (0)\n-1295D2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+145464 Compression Method    0008 (8) 'Deflated'\n+145466 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14546A CRC                   00000000 (0)\n+14546E Compressed Size       00000000 (0)\n+145472 Uncompressed Size     00000000 (0)\n+145476 Filename Length       004B (75)\n+145478 Extra Length          0000 (0)\n+14547A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1295D2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14547A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1295F5 PAYLOAD               XX\n+1454C5 PAYLOAD\n \n-1295F7 DATA DESCRIPTOR       08074B50 (134695760)\n-1295FB CRC                   00000000 (0)\n-1295FF Compressed Size       00000002 (2)\n-129603 Uncompressed Size     00000000 (0)\n+14574C DATA DESCRIPTOR       08074B50 (134695760)\n+145750 CRC                   7934C791 (2033502097)\n+145754 Compressed Size       00000287 (647)\n+145758 Uncompressed Size     0000051C (1308)\n \n-129607 LOCAL HEADER #1152    04034B50 (67324752)\n-12960B Extract Zip Spec      14 (20) '2.0'\n-12960C Extract OS            00 (0) 'MS-DOS'\n-12960D General Purpose Flag  0808 (2056)\n+14575C LOCAL HEADER #1152    04034B50 (67324752)\n+145760 Extract Zip Spec      14 (20) '2.0'\n+145761 Extract OS            00 (0) 'MS-DOS'\n+145762 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12960F Compression Method    0008 (8) 'Deflated'\n-129611 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-129615 CRC                   00000000 (0)\n-129619 Compressed Size       00000000 (0)\n-12961D Uncompressed Size     00000000 (0)\n-129621 Filename Length       003F (63)\n-129623 Extra Length          0000 (0)\n-129625 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+145764 Compression Method    0008 (8) 'Deflated'\n+145766 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14576A CRC                   00000000 (0)\n+14576E Compressed Size       00000000 (0)\n+145772 Uncompressed Size     00000000 (0)\n+145776 Filename Length       0041 (65)\n+145778 Extra Length          0000 (0)\n+14577A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x129625: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14577A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-129664 PAYLOAD\n+1457BB PAYLOAD\n \n-129D37 DATA DESCRIPTOR       08074B50 (134695760)\n-129D3B CRC                   A1EB5EED (2716557037)\n-129D3F Compressed Size       000006D3 (1747)\n-129D43 Uncompressed Size     000016D2 (5842)\n+145B20 DATA DESCRIPTOR       08074B50 (134695760)\n+145B24 CRC                   BF357544 (3207951684)\n+145B28 Compressed Size       00000365 (869)\n+145B2C Uncompressed Size     000008B2 (2226)\n \n-129D47 LOCAL HEADER #1153    04034B50 (67324752)\n-129D4B Extract Zip Spec      14 (20) '2.0'\n-129D4C Extract OS            00 (0) 'MS-DOS'\n-129D4D General Purpose Flag  0808 (2056)\n+145B30 LOCAL HEADER #1153    04034B50 (67324752)\n+145B34 Extract Zip Spec      14 (20) '2.0'\n+145B35 Extract OS            00 (0) 'MS-DOS'\n+145B36 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-129D4F Compression Method    0008 (8) 'Deflated'\n-129D51 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-129D55 CRC                   00000000 (0)\n-129D59 Compressed Size       00000000 (0)\n-129D5D Uncompressed Size     00000000 (0)\n-129D61 Filename Length       002F (47)\n-129D63 Extra Length          0000 (0)\n-129D65 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+145B38 Compression Method    0008 (8) 'Deflated'\n+145B3A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+145B3E CRC                   00000000 (0)\n+145B42 Compressed Size       00000000 (0)\n+145B46 Uncompressed Size     00000000 (0)\n+145B4A Filename Length       004A (74)\n+145B4C Extra Length          0000 (0)\n+145B4E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x129D65: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x145B4E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-129D94 PAYLOAD\n+145B98 PAYLOAD\n \n-12A6CD DATA DESCRIPTOR       08074B50 (134695760)\n-12A6D1 CRC                   71347931 (1899264305)\n-12A6D5 Compressed Size       00000939 (2361)\n-12A6D9 Uncompressed Size     00001EE7 (7911)\n+145EA9 DATA DESCRIPTOR       08074B50 (134695760)\n+145EAD CRC                   59957DEF (1502969327)\n+145EB1 Compressed Size       00000311 (785)\n+145EB5 Uncompressed Size     000006AB (1707)\n \n-12A6DD LOCAL HEADER #1154    04034B50 (67324752)\n-12A6E1 Extract Zip Spec      14 (20) '2.0'\n-12A6E2 Extract OS            00 (0) 'MS-DOS'\n-12A6E3 General Purpose Flag  0808 (2056)\n+145EB9 LOCAL HEADER #1154    04034B50 (67324752)\n+145EBD Extract Zip Spec      14 (20) '2.0'\n+145EBE Extract OS            00 (0) 'MS-DOS'\n+145EBF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12A6E5 Compression Method    0008 (8) 'Deflated'\n-12A6E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-12A6EB CRC                   00000000 (0)\n-12A6EF Compressed Size       00000000 (0)\n-12A6F3 Uncompressed Size     00000000 (0)\n-12A6F7 Filename Length       002D (45)\n-12A6F9 Extra Length          0000 (0)\n-12A6FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+145EC1 Compression Method    0008 (8) 'Deflated'\n+145EC3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+145EC7 CRC                   00000000 (0)\n+145ECB Compressed Size       00000000 (0)\n+145ECF Uncompressed Size     00000000 (0)\n+145ED3 Filename Length       004C (76)\n+145ED5 Extra Length          0000 (0)\n+145ED7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12A6FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x145ED7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-12A728 PAYLOAD\n+145F23 PAYLOAD\n \n-12B22A DATA DESCRIPTOR       08074B50 (134695760)\n-12B22E CRC                   E459791A (3831068954)\n-12B232 Compressed Size       00000B02 (2818)\n-12B236 Uncompressed Size     00002B55 (11093)\n+1461BB DATA DESCRIPTOR       08074B50 (134695760)\n+1461BF CRC                   30CE65FD (818832893)\n+1461C3 Compressed Size       00000298 (664)\n+1461C7 Uncompressed Size     00000545 (1349)\n \n-12B23A LOCAL HEADER #1155    04034B50 (67324752)\n-12B23E Extract Zip Spec      14 (20) '2.0'\n-12B23F Extract OS            00 (0) 'MS-DOS'\n-12B240 General Purpose Flag  0808 (2056)\n+1461CB LOCAL HEADER #1155    04034B50 (67324752)\n+1461CF Extract Zip Spec      14 (20) '2.0'\n+1461D0 Extract OS            00 (0) 'MS-DOS'\n+1461D1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12B242 Compression Method    0008 (8) 'Deflated'\n-12B244 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-12B248 CRC                   00000000 (0)\n-12B24C Compressed Size       00000000 (0)\n-12B250 Uncompressed Size     00000000 (0)\n-12B254 Filename Length       002E (46)\n-12B256 Extra Length          0000 (0)\n-12B258 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1461D3 Compression Method    0008 (8) 'Deflated'\n+1461D5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1461D9 CRC                   00000000 (0)\n+1461DD Compressed Size       00000000 (0)\n+1461E1 Uncompressed Size     00000000 (0)\n+1461E5 Filename Length       004D (77)\n+1461E7 Extra Length          0000 (0)\n+1461E9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12B258: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1461E9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-12B286 PAYLOAD\n+146236 PAYLOAD\n \n-12B57E DATA DESCRIPTOR       08074B50 (134695760)\n-12B582 CRC                   80C30D3D (2160266557)\n-12B586 Compressed Size       000002F8 (760)\n-12B58A Uncompressed Size     0000065E (1630)\n+1464D1 DATA DESCRIPTOR       08074B50 (134695760)\n+1464D5 CRC                   C145F19E (3242586526)\n+1464D9 Compressed Size       0000029B (667)\n+1464DD Uncompressed Size     0000054B (1355)\n \n-12B58E LOCAL HEADER #1156    04034B50 (67324752)\n-12B592 Extract Zip Spec      14 (20) '2.0'\n-12B593 Extract OS            00 (0) 'MS-DOS'\n-12B594 General Purpose Flag  0808 (2056)\n+1464E1 LOCAL HEADER #1156    04034B50 (67324752)\n+1464E5 Extract Zip Spec      14 (20) '2.0'\n+1464E6 Extract OS            00 (0) 'MS-DOS'\n+1464E7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12B596 Compression Method    0008 (8) 'Deflated'\n-12B598 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-12B59C CRC                   00000000 (0)\n-12B5A0 Compressed Size       00000000 (0)\n-12B5A4 Uncompressed Size     00000000 (0)\n-12B5A8 Filename Length       002A (42)\n-12B5AA Extra Length          0000 (0)\n-12B5AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1464E9 Compression Method    0008 (8) 'Deflated'\n+1464EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1464EF CRC                   00000000 (0)\n+1464F3 Compressed Size       00000000 (0)\n+1464F7 Uncompressed Size     00000000 (0)\n+1464FB Filename Length       0040 (64)\n+1464FD Extra Length          0000 (0)\n+1464FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12B5AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1464FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-12B5D6 PAYLOAD\n+14653F PAYLOAD\n \n-12BF51 DATA DESCRIPTOR       08074B50 (134695760)\n-12BF55 CRC                   613BF150 (1631318352)\n-12BF59 Compressed Size       0000097B (2427)\n-12BF5D Uncompressed Size     00002B36 (11062)\n+146810 DATA DESCRIPTOR       08074B50 (134695760)\n+146814 CRC                   511C2CC7 (1360800967)\n+146818 Compressed Size       000002D1 (721)\n+14681C Uncompressed Size     000006A4 (1700)\n \n-12BF61 LOCAL HEADER #1157    04034B50 (67324752)\n-12BF65 Extract Zip Spec      14 (20) '2.0'\n-12BF66 Extract OS            00 (0) 'MS-DOS'\n-12BF67 General Purpose Flag  0808 (2056)\n+146820 LOCAL HEADER #1157    04034B50 (67324752)\n+146824 Extract Zip Spec      14 (20) '2.0'\n+146825 Extract OS            00 (0) 'MS-DOS'\n+146826 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12BF69 Compression Method    0008 (8) 'Deflated'\n-12BF6B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-12BF6F CRC                   00000000 (0)\n-12BF73 Compressed Size       00000000 (0)\n-12BF77 Uncompressed Size     00000000 (0)\n-12BF7B Filename Length       003D (61)\n-12BF7D Extra Length          0000 (0)\n-12BF7F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+146828 Compression Method    0008 (8) 'Deflated'\n+14682A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14682E CRC                   00000000 (0)\n+146832 Compressed Size       00000000 (0)\n+146836 Uncompressed Size     00000000 (0)\n+14683A Filename Length       004D (77)\n+14683C Extra Length          0000 (0)\n+14683E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12BF7F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14683E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-12BFBC PAYLOAD\n+14688B PAYLOAD\n \n-12CEAA DATA DESCRIPTOR       08074B50 (134695760)\n-12CEAE CRC                   B7F8FDDA (3086548442)\n-12CEB2 Compressed Size       00000EEE (3822)\n-12CEB6 Uncompressed Size     00003E47 (15943)\n+146B23 DATA DESCRIPTOR       08074B50 (134695760)\n+146B27 CRC                   B5EBBEE9 (3052125929)\n+146B2B Compressed Size       00000298 (664)\n+146B2F Uncompressed Size     00000569 (1385)\n \n-12CEBA LOCAL HEADER #1158    04034B50 (67324752)\n-12CEBE Extract Zip Spec      14 (20) '2.0'\n-12CEBF Extract OS            00 (0) 'MS-DOS'\n-12CEC0 General Purpose Flag  0808 (2056)\n+146B33 LOCAL HEADER #1158    04034B50 (67324752)\n+146B37 Extract Zip Spec      14 (20) '2.0'\n+146B38 Extract OS            00 (0) 'MS-DOS'\n+146B39 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12CEC2 Compression Method    0008 (8) 'Deflated'\n-12CEC4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-12CEC8 CRC                   00000000 (0)\n-12CECC Compressed Size       00000000 (0)\n-12CED0 Uncompressed Size     00000000 (0)\n-12CED4 Filename Length       003E (62)\n-12CED6 Extra Length          0000 (0)\n-12CED8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+146B3B Compression Method    0008 (8) 'Deflated'\n+146B3D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+146B41 CRC                   00000000 (0)\n+146B45 Compressed Size       00000000 (0)\n+146B49 Uncompressed Size     00000000 (0)\n+146B4D Filename Length       004F (79)\n+146B4F Extra Length          0000 (0)\n+146B51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12CED8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x146B51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-12CF16 PAYLOAD\n+146BA0 PAYLOAD\n \n-12D65E DATA DESCRIPTOR       08074B50 (134695760)\n-12D662 CRC                   03D1B931 (64076081)\n-12D666 Compressed Size       00000748 (1864)\n-12D66A Uncompressed Size     000018E3 (6371)\n+146E3C DATA DESCRIPTOR       08074B50 (134695760)\n+146E40 CRC                   31557B6E (827685742)\n+146E44 Compressed Size       0000029C (668)\n+146E48 Uncompressed Size     00000571 (1393)\n \n-12D66E LOCAL HEADER #1159    04034B50 (67324752)\n-12D672 Extract Zip Spec      14 (20) '2.0'\n-12D673 Extract OS            00 (0) 'MS-DOS'\n-12D674 General Purpose Flag  0808 (2056)\n+146E4C LOCAL HEADER #1159    04034B50 (67324752)\n+146E50 Extract Zip Spec      14 (20) '2.0'\n+146E51 Extract OS            00 (0) 'MS-DOS'\n+146E52 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12D676 Compression Method    0008 (8) 'Deflated'\n-12D678 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-12D67C CRC                   00000000 (0)\n-12D680 Compressed Size       00000000 (0)\n-12D684 Uncompressed Size     00000000 (0)\n-12D688 Filename Length       0032 (50)\n-12D68A Extra Length          0000 (0)\n-12D68C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+146E54 Compression Method    0008 (8) 'Deflated'\n+146E56 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+146E5A CRC                   00000000 (0)\n+146E5E Compressed Size       00000000 (0)\n+146E62 Uncompressed Size     00000000 (0)\n+146E66 Filename Length       004A (74)\n+146E68 Extra Length          0000 (0)\n+146E6A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12D68C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x146E6A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-12D6BE PAYLOAD\n+146EB4 PAYLOAD\n \n-12DAB1 DATA DESCRIPTOR       08074B50 (134695760)\n-12DAB5 CRC                   F93BB070 (4181438576)\n-12DAB9 Compressed Size       000003F3 (1011)\n-12DABD Uncompressed Size     000008B8 (2232)\n+147149 DATA DESCRIPTOR       08074B50 (134695760)\n+14714D CRC                   9E00A28D (2650841741)\n+147151 Compressed Size       00000295 (661)\n+147155 Uncompressed Size     00000562 (1378)\n \n-12DAC1 LOCAL HEADER #1160    04034B50 (67324752)\n-12DAC5 Extract Zip Spec      14 (20) '2.0'\n-12DAC6 Extract OS            00 (0) 'MS-DOS'\n-12DAC7 General Purpose Flag  0808 (2056)\n+147159 LOCAL HEADER #1160    04034B50 (67324752)\n+14715D Extract Zip Spec      14 (20) '2.0'\n+14715E Extract OS            00 (0) 'MS-DOS'\n+14715F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12DAC9 Compression Method    0008 (8) 'Deflated'\n-12DACB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-12DACF CRC                   00000000 (0)\n-12DAD3 Compressed Size       00000000 (0)\n-12DAD7 Uncompressed Size     00000000 (0)\n-12DADB Filename Length       0040 (64)\n-12DADD Extra Length          0000 (0)\n-12DADF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+147161 Compression Method    0008 (8) 'Deflated'\n+147163 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+147167 CRC                   00000000 (0)\n+14716B Compressed Size       00000000 (0)\n+14716F Uncompressed Size     00000000 (0)\n+147173 Filename Length       004C (76)\n+147175 Extra Length          0000 (0)\n+147177 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12DADF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x147177: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-12DB1F PAYLOAD\n+1471C3 PAYLOAD\n \n-12E406 DATA DESCRIPTOR       08074B50 (134695760)\n-12E40A CRC                   C7D35A4B (3352517195)\n-12E40E Compressed Size       000008E7 (2279)\n-12E412 Uncompressed Size     00001F36 (7990)\n+147463 DATA DESCRIPTOR       08074B50 (134695760)\n+147467 CRC                   B8F3B221 (3102978593)\n+14746B Compressed Size       000002A0 (672)\n+14746F Uncompressed Size     00000588 (1416)\n \n-12E416 LOCAL HEADER #1161    04034B50 (67324752)\n-12E41A Extract Zip Spec      14 (20) '2.0'\n-12E41B Extract OS            00 (0) 'MS-DOS'\n-12E41C General Purpose Flag  0808 (2056)\n+147473 LOCAL HEADER #1161    04034B50 (67324752)\n+147477 Extract Zip Spec      14 (20) '2.0'\n+147478 Extract OS            00 (0) 'MS-DOS'\n+147479 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12E41E Compression Method    0008 (8) 'Deflated'\n-12E420 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-12E424 CRC                   00000000 (0)\n-12E428 Compressed Size       00000000 (0)\n-12E42C Uncompressed Size     00000000 (0)\n-12E430 Filename Length       003C (60)\n-12E432 Extra Length          0000 (0)\n-12E434 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14747B Compression Method    0008 (8) 'Deflated'\n+14747D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+147481 CRC                   00000000 (0)\n+147485 Compressed Size       00000000 (0)\n+147489 Uncompressed Size     00000000 (0)\n+14748D Filename Length       0048 (72)\n+14748F Extra Length          0000 (0)\n+147491 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12E434: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x147491: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-12E470 PAYLOAD\n+1474D9 PAYLOAD\n \n-12EC6D DATA DESCRIPTOR       08074B50 (134695760)\n-12EC71 CRC                   D012E5FC (3490899452)\n-12EC75 Compressed Size       000007FD (2045)\n-12EC79 Uncompressed Size     00001BA0 (7072)\n+147852 DATA DESCRIPTOR       08074B50 (134695760)\n+147856 CRC                   A03840DB (2688041179)\n+14785A Compressed Size       00000379 (889)\n+14785E Uncompressed Size     000008E6 (2278)\n \n-12EC7D LOCAL HEADER #1162    04034B50 (67324752)\n-12EC81 Extract Zip Spec      14 (20) '2.0'\n-12EC82 Extract OS            00 (0) 'MS-DOS'\n-12EC83 General Purpose Flag  0808 (2056)\n+147862 LOCAL HEADER #1162    04034B50 (67324752)\n+147866 Extract Zip Spec      14 (20) '2.0'\n+147867 Extract OS            00 (0) 'MS-DOS'\n+147868 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12EC85 Compression Method    0008 (8) 'Deflated'\n-12EC87 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-12EC8B CRC                   00000000 (0)\n-12EC8F Compressed Size       00000000 (0)\n-12EC93 Uncompressed Size     00000000 (0)\n-12EC97 Filename Length       0033 (51)\n-12EC99 Extra Length          0000 (0)\n-12EC9B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14786A Compression Method    0008 (8) 'Deflated'\n+14786C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+147870 CRC                   00000000 (0)\n+147874 Compressed Size       00000000 (0)\n+147878 Uncompressed Size     00000000 (0)\n+14787C Filename Length       0030 (48)\n+14787E Extra Length          0000 (0)\n+147880 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12EC9B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x147880: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-12ECCE PAYLOAD\n+1478B0 PAYLOAD               XX\n \n-12F707 DATA DESCRIPTOR       08074B50 (134695760)\n-12F70B CRC                   A6D38CE4 (2798882020)\n-12F70F Compressed Size       00000A39 (2617)\n-12F713 Uncompressed Size     00002AE7 (10983)\n+1478B2 DATA DESCRIPTOR       08074B50 (134695760)\n+1478B6 CRC                   00000000 (0)\n+1478BA Compressed Size       00000002 (2)\n+1478BE Uncompressed Size     00000000 (0)\n \n-12F717 LOCAL HEADER #1163    04034B50 (67324752)\n-12F71B Extract Zip Spec      14 (20) '2.0'\n-12F71C Extract OS            00 (0) 'MS-DOS'\n-12F71D General Purpose Flag  0808 (2056)\n+1478C2 LOCAL HEADER #1163    04034B50 (67324752)\n+1478C6 Extract Zip Spec      14 (20) '2.0'\n+1478C7 Extract OS            00 (0) 'MS-DOS'\n+1478C8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12F71F Compression Method    0008 (8) 'Deflated'\n-12F721 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-12F725 CRC                   00000000 (0)\n-12F729 Compressed Size       00000000 (0)\n-12F72D Uncompressed Size     00000000 (0)\n-12F731 Filename Length       003A (58)\n-12F733 Extra Length          0000 (0)\n-12F735 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1478CA Compression Method    0008 (8) 'Deflated'\n+1478CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1478D0 CRC                   00000000 (0)\n+1478D4 Compressed Size       00000000 (0)\n+1478D8 Uncompressed Size     00000000 (0)\n+1478DC Filename Length       0049 (73)\n+1478DE Extra Length          0000 (0)\n+1478E0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12F735: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1478E0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-12F76F PAYLOAD\n+147929 PAYLOAD\n \n-12FADF DATA DESCRIPTOR       08074B50 (134695760)\n-12FAE3 CRC                   982FC700 (2553267968)\n-12FAE7 Compressed Size       00000370 (880)\n-12FAEB Uncompressed Size     00000A19 (2585)\n+147D2D DATA DESCRIPTOR       08074B50 (134695760)\n+147D31 CRC                   80296188 (2150195592)\n+147D35 Compressed Size       00000404 (1028)\n+147D39 Uncompressed Size     00000E77 (3703)\n \n-12FAEF LOCAL HEADER #1164    04034B50 (67324752)\n-12FAF3 Extract Zip Spec      14 (20) '2.0'\n-12FAF4 Extract OS            00 (0) 'MS-DOS'\n-12FAF5 General Purpose Flag  0808 (2056)\n+147D3D LOCAL HEADER #1164    04034B50 (67324752)\n+147D41 Extract Zip Spec      14 (20) '2.0'\n+147D42 Extract OS            00 (0) 'MS-DOS'\n+147D43 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12FAF7 Compression Method    0008 (8) 'Deflated'\n-12FAF9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-12FAFD CRC                   00000000 (0)\n-12FB01 Compressed Size       00000000 (0)\n-12FB05 Uncompressed Size     00000000 (0)\n-12FB09 Filename Length       0038 (56)\n-12FB0B Extra Length          0000 (0)\n-12FB0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+147D45 Compression Method    0008 (8) 'Deflated'\n+147D47 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+147D4B CRC                   00000000 (0)\n+147D4F Compressed Size       00000000 (0)\n+147D53 Uncompressed Size     00000000 (0)\n+147D57 Filename Length       0054 (84)\n+147D59 Extra Length          0000 (0)\n+147D5B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12FB0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x147D5B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-12FB45 PAYLOAD\n+147DAF PAYLOAD\n \n-12FFA3 DATA DESCRIPTOR       08074B50 (134695760)\n-12FFA7 CRC                   C6A73CC6 (3332848838)\n-12FFAB Compressed Size       0000045E (1118)\n-12FFAF Uncompressed Size     00000C1E (3102)\n+1488C1 DATA DESCRIPTOR       08074B50 (134695760)\n+1488C5 CRC                   179D40B4 (396181684)\n+1488C9 Compressed Size       00000B12 (2834)\n+1488CD Uncompressed Size     00002D41 (11585)\n \n-12FFB3 LOCAL HEADER #1165    04034B50 (67324752)\n-12FFB7 Extract Zip Spec      14 (20) '2.0'\n-12FFB8 Extract OS            00 (0) 'MS-DOS'\n-12FFB9 General Purpose Flag  0808 (2056)\n+1488D1 LOCAL HEADER #1165    04034B50 (67324752)\n+1488D5 Extract Zip Spec      14 (20) '2.0'\n+1488D6 Extract OS            00 (0) 'MS-DOS'\n+1488D7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-12FFBB Compression Method    0008 (8) 'Deflated'\n-12FFBD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-12FFC1 CRC                   00000000 (0)\n-12FFC5 Compressed Size       00000000 (0)\n-12FFC9 Uncompressed Size     00000000 (0)\n-12FFCD Filename Length       0036 (54)\n-12FFCF Extra Length          0000 (0)\n-12FFD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1488D9 Compression Method    0008 (8) 'Deflated'\n+1488DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1488DF CRC                   00000000 (0)\n+1488E3 Compressed Size       00000000 (0)\n+1488E7 Uncompressed Size     00000000 (0)\n+1488EB Filename Length       002A (42)\n+1488ED Extra Length          0000 (0)\n+1488EF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x12FFD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1488EF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-130007 PAYLOAD\n+148919 PAYLOAD               XX\n \n-1302BA DATA DESCRIPTOR       08074B50 (134695760)\n-1302BE CRC                   94899E78 (2492046968)\n-1302C2 Compressed Size       000002B3 (691)\n-1302C6 Uncompressed Size     000005B1 (1457)\n+14891B DATA DESCRIPTOR       08074B50 (134695760)\n+14891F CRC                   00000000 (0)\n+148923 Compressed Size       00000002 (2)\n+148927 Uncompressed Size     00000000 (0)\n \n-1302CA LOCAL HEADER #1166    04034B50 (67324752)\n-1302CE Extract Zip Spec      14 (20) '2.0'\n-1302CF Extract OS            00 (0) 'MS-DOS'\n-1302D0 General Purpose Flag  0808 (2056)\n+14892B LOCAL HEADER #1166    04034B50 (67324752)\n+14892F Extract Zip Spec      14 (20) '2.0'\n+148930 Extract OS            00 (0) 'MS-DOS'\n+148931 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1302D2 Compression Method    0008 (8) 'Deflated'\n-1302D4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1302D8 CRC                   00000000 (0)\n-1302DC Compressed Size       00000000 (0)\n-1302E0 Uncompressed Size     00000000 (0)\n-1302E4 Filename Length       0035 (53)\n-1302E6 Extra Length          0000 (0)\n-1302E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+148933 Compression Method    0008 (8) 'Deflated'\n+148935 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+148939 CRC                   00000000 (0)\n+14893D Compressed Size       00000000 (0)\n+148941 Uncompressed Size     00000000 (0)\n+148945 Filename Length       0049 (73)\n+148947 Extra Length          0000 (0)\n+148949 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1302E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x148949: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13031D PAYLOAD\n+148992 PAYLOAD\n \n-130C73 DATA DESCRIPTOR       08074B50 (134695760)\n-130C77 CRC                   4247D839 (1112004665)\n-130C7B Compressed Size       00000956 (2390)\n-130C7F Uncompressed Size     00001FD9 (8153)\n+148E4A DATA DESCRIPTOR       08074B50 (134695760)\n+148E4E CRC                   D8B03CE3 (3635428579)\n+148E52 Compressed Size       000004B8 (1208)\n+148E56 Uncompressed Size     00000ECC (3788)\n \n-130C83 LOCAL HEADER #1167    04034B50 (67324752)\n-130C87 Extract Zip Spec      14 (20) '2.0'\n-130C88 Extract OS            00 (0) 'MS-DOS'\n-130C89 General Purpose Flag  0808 (2056)\n+148E5A LOCAL HEADER #1167    04034B50 (67324752)\n+148E5E Extract Zip Spec      14 (20) '2.0'\n+148E5F Extract OS            00 (0) 'MS-DOS'\n+148E60 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-130C8B Compression Method    0008 (8) 'Deflated'\n-130C8D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-130C91 CRC                   00000000 (0)\n-130C95 Compressed Size       00000000 (0)\n-130C99 Uncompressed Size     00000000 (0)\n-130C9D Filename Length       0036 (54)\n-130C9F Extra Length          0000 (0)\n-130CA1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+148E62 Compression Method    0008 (8) 'Deflated'\n+148E64 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+148E68 CRC                   00000000 (0)\n+148E6C Compressed Size       00000000 (0)\n+148E70 Uncompressed Size     00000000 (0)\n+148E74 Filename Length       0048 (72)\n+148E76 Extra Length          0000 (0)\n+148E78 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x130CA1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x148E78: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-130CD7 PAYLOAD\n+148EC0 PAYLOAD\n \n-132549 DATA DESCRIPTOR       08074B50 (134695760)\n-13254D CRC                   C2B511E4 (3266646500)\n-132551 Compressed Size       00001872 (6258)\n-132555 Uncompressed Size     00006B37 (27447)\n+1491AF DATA DESCRIPTOR       08074B50 (134695760)\n+1491B3 CRC                   EEBAB417 (4005213207)\n+1491B7 Compressed Size       000002EF (751)\n+1491BB Uncompressed Size     000005FF (1535)\n \n-132559 LOCAL HEADER #1168    04034B50 (67324752)\n-13255D Extract Zip Spec      14 (20) '2.0'\n-13255E Extract OS            00 (0) 'MS-DOS'\n-13255F General Purpose Flag  0808 (2056)\n+1491BF LOCAL HEADER #1168    04034B50 (67324752)\n+1491C3 Extract Zip Spec      14 (20) '2.0'\n+1491C4 Extract OS            00 (0) 'MS-DOS'\n+1491C5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-132561 Compression Method    0008 (8) 'Deflated'\n-132563 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-132567 CRC                   00000000 (0)\n-13256B Compressed Size       00000000 (0)\n-13256F Uncompressed Size     00000000 (0)\n-132573 Filename Length       003C (60)\n-132575 Extra Length          0000 (0)\n-132577 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1491C7 Compression Method    0008 (8) 'Deflated'\n+1491C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1491CD CRC                   00000000 (0)\n+1491D1 Compressed Size       00000000 (0)\n+1491D5 Uncompressed Size     00000000 (0)\n+1491D9 Filename Length       0059 (89)\n+1491DB Extra Length          0000 (0)\n+1491DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x132577: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1491DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1325B3 PAYLOAD\n+149236 PAYLOAD\n \n-13288E DATA DESCRIPTOR       08074B50 (134695760)\n-132892 CRC                   7317DB5C (1930943324)\n-132896 Compressed Size       000002DB (731)\n-13289A Uncompressed Size     00000714 (1812)\n+149614 DATA DESCRIPTOR       08074B50 (134695760)\n+149618 CRC                   75D2ADE7 (1976741351)\n+14961C Compressed Size       000003DE (990)\n+149620 Uncompressed Size     00000B2B (2859)\n \n-13289E LOCAL HEADER #1169    04034B50 (67324752)\n-1328A2 Extract Zip Spec      14 (20) '2.0'\n-1328A3 Extract OS            00 (0) 'MS-DOS'\n-1328A4 General Purpose Flag  0808 (2056)\n+149624 LOCAL HEADER #1169    04034B50 (67324752)\n+149628 Extract Zip Spec      14 (20) '2.0'\n+149629 Extract OS            00 (0) 'MS-DOS'\n+14962A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1328A6 Compression Method    0008 (8) 'Deflated'\n-1328A8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1328AC CRC                   00000000 (0)\n-1328B0 Compressed Size       00000000 (0)\n-1328B4 Uncompressed Size     00000000 (0)\n-1328B8 Filename Length       0042 (66)\n-1328BA Extra Length          0000 (0)\n-1328BC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14962C Compression Method    0008 (8) 'Deflated'\n+14962E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+149632 CRC                   00000000 (0)\n+149636 Compressed Size       00000000 (0)\n+14963A Uncompressed Size     00000000 (0)\n+14963E Filename Length       003C (60)\n+149640 Extra Length          0000 (0)\n+149642 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1328BC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x149642: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1328FE PAYLOAD\n+14967E PAYLOAD\n \n-133115 DATA DESCRIPTOR       08074B50 (134695760)\n-133119 CRC                   344C1E36 (877403702)\n-13311D Compressed Size       00000817 (2071)\n-133121 Uncompressed Size     00001FCC (8140)\n+149C94 DATA DESCRIPTOR       08074B50 (134695760)\n+149C98 CRC                   755A196E (1968839022)\n+149C9C Compressed Size       00000616 (1558)\n+149CA0 Uncompressed Size     00001309 (4873)\n \n-133125 LOCAL HEADER #1170    04034B50 (67324752)\n-133129 Extract Zip Spec      14 (20) '2.0'\n-13312A Extract OS            00 (0) 'MS-DOS'\n-13312B General Purpose Flag  0808 (2056)\n+149CA4 LOCAL HEADER #1170    04034B50 (67324752)\n+149CA8 Extract Zip Spec      14 (20) '2.0'\n+149CA9 Extract OS            00 (0) 'MS-DOS'\n+149CAA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13312D Compression Method    0008 (8) 'Deflated'\n-13312F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-133133 CRC                   00000000 (0)\n-133137 Compressed Size       00000000 (0)\n-13313B Uncompressed Size     00000000 (0)\n-13313F Filename Length       0045 (69)\n-133141 Extra Length          0000 (0)\n-133143 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+149CAC Compression Method    0008 (8) 'Deflated'\n+149CAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+149CB2 CRC                   00000000 (0)\n+149CB6 Compressed Size       00000000 (0)\n+149CBA Uncompressed Size     00000000 (0)\n+149CBE Filename Length       004E (78)\n+149CC0 Extra Length          0000 (0)\n+149CC2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x133143: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x149CC2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-133188 PAYLOAD\n+149D10 PAYLOAD\n \n-133837 DATA DESCRIPTOR       08074B50 (134695760)\n-13383B CRC                   3B14B127 (991211815)\n-13383F Compressed Size       000006AF (1711)\n-133843 Uncompressed Size     000017C7 (6087)\n+14A0E7 DATA DESCRIPTOR       08074B50 (134695760)\n+14A0EB CRC                   59E1F72D (1507981101)\n+14A0EF Compressed Size       000003D7 (983)\n+14A0F3 Uncompressed Size     0000092F (2351)\n \n-133847 LOCAL HEADER #1171    04034B50 (67324752)\n-13384B Extract Zip Spec      14 (20) '2.0'\n-13384C Extract OS            00 (0) 'MS-DOS'\n-13384D General Purpose Flag  0808 (2056)\n+14A0F7 LOCAL HEADER #1171    04034B50 (67324752)\n+14A0FB Extract Zip Spec      14 (20) '2.0'\n+14A0FC Extract OS            00 (0) 'MS-DOS'\n+14A0FD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13384F Compression Method    0008 (8) 'Deflated'\n-133851 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-133855 CRC                   00000000 (0)\n-133859 Compressed Size       00000000 (0)\n-13385D Uncompressed Size     00000000 (0)\n-133861 Filename Length       002B (43)\n-133863 Extra Length          0000 (0)\n-133865 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14A0FF Compression Method    0008 (8) 'Deflated'\n+14A101 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14A105 CRC                   00000000 (0)\n+14A109 Compressed Size       00000000 (0)\n+14A10D Uncompressed Size     00000000 (0)\n+14A111 Filename Length       0054 (84)\n+14A113 Extra Length          0000 (0)\n+14A115 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x133865: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14A115: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-133890 PAYLOAD               XX\n+14A169 PAYLOAD\n \n-133892 DATA DESCRIPTOR       08074B50 (134695760)\n-133896 CRC                   00000000 (0)\n-13389A Compressed Size       00000002 (2)\n-13389E Uncompressed Size     00000000 (0)\n+14A575 DATA DESCRIPTOR       08074B50 (134695760)\n+14A579 CRC                   FB40FD46 (4215340358)\n+14A57D Compressed Size       0000040C (1036)\n+14A581 Uncompressed Size     00000B06 (2822)\n \n-1338A2 LOCAL HEADER #1172    04034B50 (67324752)\n-1338A6 Extract Zip Spec      14 (20) '2.0'\n-1338A7 Extract OS            00 (0) 'MS-DOS'\n-1338A8 General Purpose Flag  0808 (2056)\n+14A585 LOCAL HEADER #1172    04034B50 (67324752)\n+14A589 Extract Zip Spec      14 (20) '2.0'\n+14A58A Extract OS            00 (0) 'MS-DOS'\n+14A58B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1338AA Compression Method    0008 (8) 'Deflated'\n-1338AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1338B0 CRC                   00000000 (0)\n-1338B4 Compressed Size       00000000 (0)\n-1338B8 Uncompressed Size     00000000 (0)\n-1338BC Filename Length       003C (60)\n-1338BE Extra Length          0000 (0)\n-1338C0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14A58D Compression Method    0008 (8) 'Deflated'\n+14A58F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14A593 CRC                   00000000 (0)\n+14A597 Compressed Size       00000000 (0)\n+14A59B Uncompressed Size     00000000 (0)\n+14A59F Filename Length       0050 (80)\n+14A5A1 Extra Length          0000 (0)\n+14A5A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1338C0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14A5A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1338FC PAYLOAD\n+14A5F3 PAYLOAD\n \n-1340C8 DATA DESCRIPTOR       08074B50 (134695760)\n-1340CC CRC                   1915FFAE (420872110)\n-1340D0 Compressed Size       000007CC (1996)\n-1340D4 Uncompressed Size     00002228 (8744)\n+14AB41 DATA DESCRIPTOR       08074B50 (134695760)\n+14AB45 CRC                   53F9F17D (1408889213)\n+14AB49 Compressed Size       0000054E (1358)\n+14AB4D Uncompressed Size     0000100D (4109)\n \n-1340D8 LOCAL HEADER #1173    04034B50 (67324752)\n-1340DC Extract Zip Spec      14 (20) '2.0'\n-1340DD Extract OS            00 (0) 'MS-DOS'\n-1340DE General Purpose Flag  0808 (2056)\n+14AB51 LOCAL HEADER #1173    04034B50 (67324752)\n+14AB55 Extract Zip Spec      14 (20) '2.0'\n+14AB56 Extract OS            00 (0) 'MS-DOS'\n+14AB57 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1340E0 Compression Method    0008 (8) 'Deflated'\n-1340E2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1340E6 CRC                   00000000 (0)\n-1340EA Compressed Size       00000000 (0)\n-1340EE Uncompressed Size     00000000 (0)\n-1340F2 Filename Length       003B (59)\n-1340F4 Extra Length          0000 (0)\n-1340F6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14AB59 Compression Method    0008 (8) 'Deflated'\n+14AB5B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14AB5F CRC                   00000000 (0)\n+14AB63 Compressed Size       00000000 (0)\n+14AB67 Uncompressed Size     00000000 (0)\n+14AB6B Filename Length       004B (75)\n+14AB6D Extra Length          0000 (0)\n+14AB6F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1340F6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14AB6F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-134131 PAYLOAD\n+14ABBA PAYLOAD\n \n-1347B6 DATA DESCRIPTOR       08074B50 (134695760)\n-1347BA CRC                   B4BC5053 (3032240211)\n-1347BE Compressed Size       00000685 (1669)\n-1347C2 Uncompressed Size     00001648 (5704)\n+14B7EF DATA DESCRIPTOR       08074B50 (134695760)\n+14B7F3 CRC                   D85C97E6 (3629946854)\n+14B7F7 Compressed Size       00000C35 (3125)\n+14B7FB Uncompressed Size     000035CB (13771)\n \n-1347C6 LOCAL HEADER #1174    04034B50 (67324752)\n-1347CA Extract Zip Spec      14 (20) '2.0'\n-1347CB Extract OS            00 (0) 'MS-DOS'\n-1347CC General Purpose Flag  0808 (2056)\n+14B7FF LOCAL HEADER #1174    04034B50 (67324752)\n+14B803 Extract Zip Spec      14 (20) '2.0'\n+14B804 Extract OS            00 (0) 'MS-DOS'\n+14B805 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1347CE Compression Method    0008 (8) 'Deflated'\n-1347D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1347D4 CRC                   00000000 (0)\n-1347D8 Compressed Size       00000000 (0)\n-1347DC Uncompressed Size     00000000 (0)\n-1347E0 Filename Length       002B (43)\n-1347E2 Extra Length          0000 (0)\n-1347E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14B807 Compression Method    0008 (8) 'Deflated'\n+14B809 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14B80D CRC                   00000000 (0)\n+14B811 Compressed Size       00000000 (0)\n+14B815 Uncompressed Size     00000000 (0)\n+14B819 Filename Length       0053 (83)\n+14B81B Extra Length          0000 (0)\n+14B81D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1347E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14B81D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13480F PAYLOAD               XX\n+14B870 PAYLOAD\n \n-134811 DATA DESCRIPTOR       08074B50 (134695760)\n-134815 CRC                   00000000 (0)\n-134819 Compressed Size       00000002 (2)\n-13481D Uncompressed Size     00000000 (0)\n+14BC57 DATA DESCRIPTOR       08074B50 (134695760)\n+14BC5B CRC                   790FD089 (2031079561)\n+14BC5F Compressed Size       000003E7 (999)\n+14BC63 Uncompressed Size     000008A2 (2210)\n \n-134821 LOCAL HEADER #1175    04034B50 (67324752)\n-134825 Extract Zip Spec      14 (20) '2.0'\n-134826 Extract OS            00 (0) 'MS-DOS'\n-134827 General Purpose Flag  0808 (2056)\n+14BC67 LOCAL HEADER #1175    04034B50 (67324752)\n+14BC6B Extract Zip Spec      14 (20) '2.0'\n+14BC6C Extract OS            00 (0) 'MS-DOS'\n+14BC6D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-134829 Compression Method    0008 (8) 'Deflated'\n-13482B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13482F CRC                   00000000 (0)\n-134833 Compressed Size       00000000 (0)\n-134837 Uncompressed Size     00000000 (0)\n-13483B Filename Length       0043 (67)\n-13483D Extra Length          0000 (0)\n-13483F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14BC6F Compression Method    0008 (8) 'Deflated'\n+14BC71 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14BC75 CRC                   00000000 (0)\n+14BC79 Compressed Size       00000000 (0)\n+14BC7D Uncompressed Size     00000000 (0)\n+14BC81 Filename Length       0050 (80)\n+14BC83 Extra Length          0000 (0)\n+14BC85 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13483F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14BC85: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-134882 PAYLOAD\n+14BCD5 PAYLOAD\n \n-134C0F DATA DESCRIPTOR       08074B50 (134695760)\n-134C13 CRC                   C9453D78 (3376758136)\n-134C17 Compressed Size       0000038D (909)\n-134C1B Uncompressed Size     000008E4 (2276)\n+14C1EA DATA DESCRIPTOR       08074B50 (134695760)\n+14C1EE CRC                   85FEC00A (2248065034)\n+14C1F2 Compressed Size       00000515 (1301)\n+14C1F6 Uncompressed Size     00000ED7 (3799)\n \n-134C1F LOCAL HEADER #1176    04034B50 (67324752)\n-134C23 Extract Zip Spec      14 (20) '2.0'\n-134C24 Extract OS            00 (0) 'MS-DOS'\n-134C25 General Purpose Flag  0808 (2056)\n+14C1FA LOCAL HEADER #1176    04034B50 (67324752)\n+14C1FE Extract Zip Spec      14 (20) '2.0'\n+14C1FF Extract OS            00 (0) 'MS-DOS'\n+14C200 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-134C27 Compression Method    0008 (8) 'Deflated'\n-134C29 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-134C2D CRC                   00000000 (0)\n-134C31 Compressed Size       00000000 (0)\n-134C35 Uncompressed Size     00000000 (0)\n-134C39 Filename Length       0047 (71)\n-134C3B Extra Length          0000 (0)\n-134C3D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14C202 Compression Method    0008 (8) 'Deflated'\n+14C204 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14C208 CRC                   00000000 (0)\n+14C20C Compressed Size       00000000 (0)\n+14C210 Uncompressed Size     00000000 (0)\n+14C214 Filename Length       0048 (72)\n+14C216 Extra Length          0000 (0)\n+14C218 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x134C3D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14C218: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-134C84 PAYLOAD\n+14C260 PAYLOAD\n \n-1350E9 DATA DESCRIPTOR       08074B50 (134695760)\n-1350ED CRC                   5A226E99 (1512205977)\n-1350F1 Compressed Size       00000465 (1125)\n-1350F5 Uncompressed Size     00000B86 (2950)\n+14C5C7 DATA DESCRIPTOR       08074B50 (134695760)\n+14C5CB CRC                   ACB394E1 (2897450209)\n+14C5CF Compressed Size       00000367 (871)\n+14C5D3 Uncompressed Size     0000087F (2175)\n \n-1350F9 LOCAL HEADER #1177    04034B50 (67324752)\n-1350FD Extract Zip Spec      14 (20) '2.0'\n-1350FE Extract OS            00 (0) 'MS-DOS'\n-1350FF General Purpose Flag  0808 (2056)\n+14C5D7 LOCAL HEADER #1177    04034B50 (67324752)\n+14C5DB Extract Zip Spec      14 (20) '2.0'\n+14C5DC Extract OS            00 (0) 'MS-DOS'\n+14C5DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-135101 Compression Method    0008 (8) 'Deflated'\n-135103 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-135107 CRC                   00000000 (0)\n-13510B Compressed Size       00000000 (0)\n-13510F Uncompressed Size     00000000 (0)\n-135113 Filename Length       0024 (36)\n-135115 Extra Length          0000 (0)\n-135117 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14C5DF Compression Method    0008 (8) 'Deflated'\n+14C5E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14C5E5 CRC                   00000000 (0)\n+14C5E9 Compressed Size       00000000 (0)\n+14C5ED Uncompressed Size     00000000 (0)\n+14C5F1 Filename Length       0030 (48)\n+14C5F3 Extra Length          0000 (0)\n+14C5F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x135117: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14C5F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13513B PAYLOAD               XX\n+14C625 PAYLOAD               XX\n \n-13513D DATA DESCRIPTOR       08074B50 (134695760)\n-135141 CRC                   00000000 (0)\n-135145 Compressed Size       00000002 (2)\n-135149 Uncompressed Size     00000000 (0)\n+14C627 DATA DESCRIPTOR       08074B50 (134695760)\n+14C62B CRC                   00000000 (0)\n+14C62F Compressed Size       00000002 (2)\n+14C633 Uncompressed Size     00000000 (0)\n \n-13514D LOCAL HEADER #1178    04034B50 (67324752)\n-135151 Extract Zip Spec      14 (20) '2.0'\n-135152 Extract OS            00 (0) 'MS-DOS'\n-135153 General Purpose Flag  0808 (2056)\n+14C637 LOCAL HEADER #1178    04034B50 (67324752)\n+14C63B Extract Zip Spec      14 (20) '2.0'\n+14C63C Extract OS            00 (0) 'MS-DOS'\n+14C63D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-135155 Compression Method    0008 (8) 'Deflated'\n-135157 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13515B CRC                   00000000 (0)\n-13515F Compressed Size       00000000 (0)\n-135163 Uncompressed Size     00000000 (0)\n-135167 Filename Length       0036 (54)\n-135169 Extra Length          0000 (0)\n-13516B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14C63F Compression Method    0008 (8) 'Deflated'\n+14C641 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14C645 CRC                   00000000 (0)\n+14C649 Compressed Size       00000000 (0)\n+14C64D Uncompressed Size     00000000 (0)\n+14C651 Filename Length       0054 (84)\n+14C653 Extra Length          0000 (0)\n+14C655 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13516B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14C655: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1351A1 PAYLOAD\n+14C6A9 PAYLOAD\n \n-135466 DATA DESCRIPTOR       08074B50 (134695760)\n-13546A CRC                   780A8F69 (2013957993)\n-13546E Compressed Size       000002C5 (709)\n-135472 Uncompressed Size     000005F6 (1526)\n+14D24F DATA DESCRIPTOR       08074B50 (134695760)\n+14D253 CRC                   AF38F813 (2939746323)\n+14D257 Compressed Size       00000BA6 (2982)\n+14D25B Uncompressed Size     00002F8F (12175)\n \n-135476 LOCAL HEADER #1179    04034B50 (67324752)\n-13547A Extract Zip Spec      14 (20) '2.0'\n-13547B Extract OS            00 (0) 'MS-DOS'\n-13547C General Purpose Flag  0808 (2056)\n+14D25F LOCAL HEADER #1179    04034B50 (67324752)\n+14D263 Extract Zip Spec      14 (20) '2.0'\n+14D264 Extract OS            00 (0) 'MS-DOS'\n+14D265 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13547E Compression Method    0008 (8) 'Deflated'\n-135480 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-135484 CRC                   00000000 (0)\n-135488 Compressed Size       00000000 (0)\n-13548C Uncompressed Size     00000000 (0)\n-135490 Filename Length       0035 (53)\n-135492 Extra Length          0000 (0)\n-135494 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14D267 Compression Method    0008 (8) 'Deflated'\n+14D269 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14D26D CRC                   00000000 (0)\n+14D271 Compressed Size       00000000 (0)\n+14D275 Uncompressed Size     00000000 (0)\n+14D279 Filename Length       004E (78)\n+14D27B Extra Length          0000 (0)\n+14D27D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x135494: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14D27D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1354C9 PAYLOAD\n+14D2CB PAYLOAD\n \n-135917 DATA DESCRIPTOR       08074B50 (134695760)\n-13591B CRC                   0693959E (110335390)\n-13591F Compressed Size       0000044E (1102)\n-135923 Uncompressed Size     00000AB6 (2742)\n+14DA95 DATA DESCRIPTOR       08074B50 (134695760)\n+14DA99 CRC                   6659263F (1717118527)\n+14DA9D Compressed Size       000007CA (1994)\n+14DAA1 Uncompressed Size     00001E19 (7705)\n \n-135927 LOCAL HEADER #1180    04034B50 (67324752)\n-13592B Extract Zip Spec      14 (20) '2.0'\n-13592C Extract OS            00 (0) 'MS-DOS'\n-13592D General Purpose Flag  0808 (2056)\n+14DAA5 LOCAL HEADER #1180    04034B50 (67324752)\n+14DAA9 Extract Zip Spec      14 (20) '2.0'\n+14DAAA Extract OS            00 (0) 'MS-DOS'\n+14DAAB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13592F Compression Method    0008 (8) 'Deflated'\n-135931 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-135935 CRC                   00000000 (0)\n-135939 Compressed Size       00000000 (0)\n-13593D Uncompressed Size     00000000 (0)\n-135941 Filename Length       0036 (54)\n-135943 Extra Length          0000 (0)\n-135945 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14DAAD Compression Method    0008 (8) 'Deflated'\n+14DAAF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14DAB3 CRC                   00000000 (0)\n+14DAB7 Compressed Size       00000000 (0)\n+14DABB Uncompressed Size     00000000 (0)\n+14DABF Filename Length       002B (43)\n+14DAC1 Extra Length          0000 (0)\n+14DAC3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x135945: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14DAC3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13597B PAYLOAD\n+14DAEE PAYLOAD               XX\n \n-135F81 DATA DESCRIPTOR       08074B50 (134695760)\n-135F85 CRC                   F08334AC (4035130540)\n-135F89 Compressed Size       00000606 (1542)\n-135F8D Uncompressed Size     00001172 (4466)\n+14DAF0 DATA DESCRIPTOR       08074B50 (134695760)\n+14DAF4 CRC                   00000000 (0)\n+14DAF8 Compressed Size       00000002 (2)\n+14DAFC Uncompressed Size     00000000 (0)\n \n-135F91 LOCAL HEADER #1181    04034B50 (67324752)\n-135F95 Extract Zip Spec      14 (20) '2.0'\n-135F96 Extract OS            00 (0) 'MS-DOS'\n-135F97 General Purpose Flag  0808 (2056)\n+14DB00 LOCAL HEADER #1181    04034B50 (67324752)\n+14DB04 Extract Zip Spec      14 (20) '2.0'\n+14DB05 Extract OS            00 (0) 'MS-DOS'\n+14DB06 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-135F99 Compression Method    0008 (8) 'Deflated'\n-135F9B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-135F9F CRC                   00000000 (0)\n-135FA3 Compressed Size       00000000 (0)\n-135FA7 Uncompressed Size     00000000 (0)\n-135FAB Filename Length       0023 (35)\n-135FAD Extra Length          0000 (0)\n-135FAF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14DB08 Compression Method    0008 (8) 'Deflated'\n+14DB0A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14DB0E CRC                   00000000 (0)\n+14DB12 Compressed Size       00000000 (0)\n+14DB16 Uncompressed Size     00000000 (0)\n+14DB1A Filename Length       0051 (81)\n+14DB1C Extra Length          0000 (0)\n+14DB1E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x135FAF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14DB1E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-135FD2 PAYLOAD               XX\n+14DB6F PAYLOAD\n \n-135FD4 DATA DESCRIPTOR       08074B50 (134695760)\n-135FD8 CRC                   00000000 (0)\n-135FDC Compressed Size       00000002 (2)\n-135FE0 Uncompressed Size     00000000 (0)\n+14E004 DATA DESCRIPTOR       08074B50 (134695760)\n+14E008 CRC                   1E182794 (504899476)\n+14E00C Compressed Size       00000495 (1173)\n+14E010 Uncompressed Size     00000CDF (3295)\n \n-135FE4 LOCAL HEADER #1182    04034B50 (67324752)\n-135FE8 Extract Zip Spec      14 (20) '2.0'\n-135FE9 Extract OS            00 (0) 'MS-DOS'\n-135FEA General Purpose Flag  0808 (2056)\n+14E014 LOCAL HEADER #1182    04034B50 (67324752)\n+14E018 Extract Zip Spec      14 (20) '2.0'\n+14E019 Extract OS            00 (0) 'MS-DOS'\n+14E01A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-135FEC Compression Method    0008 (8) 'Deflated'\n-135FEE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-135FF2 CRC                   00000000 (0)\n-135FF6 Compressed Size       00000000 (0)\n-135FFA Uncompressed Size     00000000 (0)\n-135FFE Filename Length       0034 (52)\n-136000 Extra Length          0000 (0)\n-136002 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14E01C Compression Method    0008 (8) 'Deflated'\n+14E01E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14E022 CRC                   00000000 (0)\n+14E026 Compressed Size       00000000 (0)\n+14E02A Uncompressed Size     00000000 (0)\n+14E02E Filename Length       0047 (71)\n+14E030 Extra Length          0000 (0)\n+14E032 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x136002: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14E032: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-136036 PAYLOAD\n+14E079 PAYLOAD\n \n-136911 DATA DESCRIPTOR       08074B50 (134695760)\n-136915 CRC                   67E99252 (1743360594)\n-136919 Compressed Size       000008DB (2267)\n-13691D Uncompressed Size     00001D88 (7560)\n+14E28E DATA DESCRIPTOR       08074B50 (134695760)\n+14E292 CRC                   6D847AE7 (1837398759)\n+14E296 Compressed Size       00000215 (533)\n+14E29A Uncompressed Size     000003AC (940)\n \n-136921 LOCAL HEADER #1183    04034B50 (67324752)\n-136925 Extract Zip Spec      14 (20) '2.0'\n-136926 Extract OS            00 (0) 'MS-DOS'\n-136927 General Purpose Flag  0808 (2056)\n+14E29E LOCAL HEADER #1183    04034B50 (67324752)\n+14E2A2 Extract Zip Spec      14 (20) '2.0'\n+14E2A3 Extract OS            00 (0) 'MS-DOS'\n+14E2A4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-136929 Compression Method    0008 (8) 'Deflated'\n-13692B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13692F CRC                   00000000 (0)\n-136933 Compressed Size       00000000 (0)\n-136937 Uncompressed Size     00000000 (0)\n-13693B Filename Length       003D (61)\n-13693D Extra Length          0000 (0)\n-13693F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14E2A6 Compression Method    0008 (8) 'Deflated'\n+14E2A8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14E2AC CRC                   00000000 (0)\n+14E2B0 Compressed Size       00000000 (0)\n+14E2B4 Uncompressed Size     00000000 (0)\n+14E2B8 Filename Length       004A (74)\n+14E2BA Extra Length          0000 (0)\n+14E2BC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13693F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14E2BC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13697C PAYLOAD\n+14E306 PAYLOAD\n \n-136BBE DATA DESCRIPTOR       08074B50 (134695760)\n-136BC2 CRC                   B3BC74DF (3015472351)\n-136BC6 Compressed Size       00000242 (578)\n-136BCA Uncompressed Size     00000429 (1065)\n+14E56A DATA DESCRIPTOR       08074B50 (134695760)\n+14E56E CRC                   21E16F63 (568422243)\n+14E572 Compressed Size       00000264 (612)\n+14E576 Uncompressed Size     0000046D (1133)\n \n-136BCE LOCAL HEADER #1184    04034B50 (67324752)\n-136BD2 Extract Zip Spec      14 (20) '2.0'\n-136BD3 Extract OS            00 (0) 'MS-DOS'\n-136BD4 General Purpose Flag  0808 (2056)\n+14E57A LOCAL HEADER #1184    04034B50 (67324752)\n+14E57E Extract Zip Spec      14 (20) '2.0'\n+14E57F Extract OS            00 (0) 'MS-DOS'\n+14E580 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-136BD6 Compression Method    0008 (8) 'Deflated'\n-136BD8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-136BDC CRC                   00000000 (0)\n-136BE0 Compressed Size       00000000 (0)\n-136BE4 Uncompressed Size     00000000 (0)\n-136BE8 Filename Length       003C (60)\n-136BEA Extra Length          0000 (0)\n-136BEC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14E582 Compression Method    0008 (8) 'Deflated'\n+14E584 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14E588 CRC                   00000000 (0)\n+14E58C Compressed Size       00000000 (0)\n+14E590 Uncompressed Size     00000000 (0)\n+14E594 Filename Length       0040 (64)\n+14E596 Extra Length          0000 (0)\n+14E598 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x136BEC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14E598: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-136C28 PAYLOAD\n+14E5D8 PAYLOAD\n \n-137009 DATA DESCRIPTOR       08074B50 (134695760)\n-13700D CRC                   29478F2B (692555563)\n-137011 Compressed Size       000003E1 (993)\n-137015 Uncompressed Size     000008EB (2283)\n+14F049 DATA DESCRIPTOR       08074B50 (134695760)\n+14F04D CRC                   0709B18C (118075788)\n+14F051 Compressed Size       00000A71 (2673)\n+14F055 Uncompressed Size     00003B49 (15177)\n \n-137019 LOCAL HEADER #1185    04034B50 (67324752)\n-13701D Extract Zip Spec      14 (20) '2.0'\n-13701E Extract OS            00 (0) 'MS-DOS'\n-13701F General Purpose Flag  0808 (2056)\n+14F059 LOCAL HEADER #1185    04034B50 (67324752)\n+14F05D Extract Zip Spec      14 (20) '2.0'\n+14F05E Extract OS            00 (0) 'MS-DOS'\n+14F05F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-137021 Compression Method    0008 (8) 'Deflated'\n-137023 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-137027 CRC                   00000000 (0)\n-13702B Compressed Size       00000000 (0)\n-13702F Uncompressed Size     00000000 (0)\n-137033 Filename Length       003F (63)\n-137035 Extra Length          0000 (0)\n-137037 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14F061 Compression Method    0008 (8) 'Deflated'\n+14F063 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14F067 CRC                   00000000 (0)\n+14F06B Compressed Size       00000000 (0)\n+14F06F Uncompressed Size     00000000 (0)\n+14F073 Filename Length       0044 (68)\n+14F075 Extra Length          0000 (0)\n+14F077 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x137037: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14F077: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-137076 PAYLOAD\n+14F0BB PAYLOAD\n \n-13744C DATA DESCRIPTOR       08074B50 (134695760)\n-137450 CRC                   DBBDBD3B (3686645051)\n-137454 Compressed Size       000003D6 (982)\n-137458 Uncompressed Size     00000B0C (2828)\n+14F4B5 DATA DESCRIPTOR       08074B50 (134695760)\n+14F4B9 CRC                   E2477A52 (3796335186)\n+14F4BD Compressed Size       000003FA (1018)\n+14F4C1 Uncompressed Size     00000B00 (2816)\n \n-13745C LOCAL HEADER #1186    04034B50 (67324752)\n-137460 Extract Zip Spec      14 (20) '2.0'\n-137461 Extract OS            00 (0) 'MS-DOS'\n-137462 General Purpose Flag  0808 (2056)\n+14F4C5 LOCAL HEADER #1186    04034B50 (67324752)\n+14F4C9 Extract Zip Spec      14 (20) '2.0'\n+14F4CA Extract OS            00 (0) 'MS-DOS'\n+14F4CB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-137464 Compression Method    0008 (8) 'Deflated'\n-137466 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13746A CRC                   00000000 (0)\n-13746E Compressed Size       00000000 (0)\n-137472 Uncompressed Size     00000000 (0)\n-137476 Filename Length       001F (31)\n-137478 Extra Length          0000 (0)\n-13747A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14F4CD Compression Method    0008 (8) 'Deflated'\n+14F4CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14F4D3 CRC                   00000000 (0)\n+14F4D7 Compressed Size       00000000 (0)\n+14F4DB Uncompressed Size     00000000 (0)\n+14F4DF Filename Length       0045 (69)\n+14F4E1 Extra Length          0000 (0)\n+14F4E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13747A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14F4E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-137499 PAYLOAD               XX\n+14F528 PAYLOAD\n \n-13749B DATA DESCRIPTOR       08074B50 (134695760)\n-13749F CRC                   00000000 (0)\n-1374A3 Compressed Size       00000002 (2)\n-1374A7 Uncompressed Size     00000000 (0)\n+14FADA DATA DESCRIPTOR       08074B50 (134695760)\n+14FADE CRC                   00160E4A (1445450)\n+14FAE2 Compressed Size       000005B2 (1458)\n+14FAE6 Uncompressed Size     00001208 (4616)\n \n-1374AB LOCAL HEADER #1187    04034B50 (67324752)\n-1374AF Extract Zip Spec      14 (20) '2.0'\n-1374B0 Extract OS            00 (0) 'MS-DOS'\n-1374B1 General Purpose Flag  0808 (2056)\n+14FAEA LOCAL HEADER #1187    04034B50 (67324752)\n+14FAEE Extract Zip Spec      14 (20) '2.0'\n+14FAEF Extract OS            00 (0) 'MS-DOS'\n+14FAF0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1374B3 Compression Method    0008 (8) 'Deflated'\n-1374B5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1374B9 CRC                   00000000 (0)\n-1374BD Compressed Size       00000000 (0)\n-1374C1 Uncompressed Size     00000000 (0)\n-1374C5 Filename Length       0023 (35)\n-1374C7 Extra Length          0000 (0)\n-1374C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14FAF2 Compression Method    0008 (8) 'Deflated'\n+14FAF4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14FAF8 CRC                   00000000 (0)\n+14FAFC Compressed Size       00000000 (0)\n+14FB00 Uncompressed Size     00000000 (0)\n+14FB04 Filename Length       0050 (80)\n+14FB06 Extra Length          0000 (0)\n+14FB08 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1374C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14FB08: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1374EC PAYLOAD               XX\n+14FB58 PAYLOAD\n \n-1374EE DATA DESCRIPTOR       08074B50 (134695760)\n-1374F2 CRC                   00000000 (0)\n-1374F6 Compressed Size       00000002 (2)\n-1374FA Uncompressed Size     00000000 (0)\n+14FF55 DATA DESCRIPTOR       08074B50 (134695760)\n+14FF59 CRC                   6EF68498 (1861649560)\n+14FF5D Compressed Size       000003FD (1021)\n+14FF61 Uncompressed Size     00000A70 (2672)\n \n-1374FE LOCAL HEADER #1188    04034B50 (67324752)\n-137502 Extract Zip Spec      14 (20) '2.0'\n-137503 Extract OS            00 (0) 'MS-DOS'\n-137504 General Purpose Flag  0808 (2056)\n+14FF65 LOCAL HEADER #1188    04034B50 (67324752)\n+14FF69 Extract Zip Spec      14 (20) '2.0'\n+14FF6A Extract OS            00 (0) 'MS-DOS'\n+14FF6B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-137506 Compression Method    0008 (8) 'Deflated'\n-137508 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13750C CRC                   00000000 (0)\n-137510 Compressed Size       00000000 (0)\n-137514 Uncompressed Size     00000000 (0)\n-137518 Filename Length       003B (59)\n-13751A Extra Length          0000 (0)\n-13751C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+14FF6D Compression Method    0008 (8) 'Deflated'\n+14FF6F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+14FF73 CRC                   00000000 (0)\n+14FF77 Compressed Size       00000000 (0)\n+14FF7B Uncompressed Size     00000000 (0)\n+14FF7F Filename Length       0032 (50)\n+14FF81 Extra Length          0000 (0)\n+14FF83 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13751C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x14FF83: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-137557 PAYLOAD\n+14FFB5 PAYLOAD\n \n-13781B DATA DESCRIPTOR       08074B50 (134695760)\n-13781F CRC                   6A4EF718 (1783559960)\n-137823 Compressed Size       000002C4 (708)\n-137827 Uncompressed Size     00000580 (1408)\n+150202 DATA DESCRIPTOR       08074B50 (134695760)\n+150206 CRC                   0DCE7BD6 (231635926)\n+15020A Compressed Size       0000024D (589)\n+15020E Uncompressed Size     00000419 (1049)\n \n-13782B LOCAL HEADER #1189    04034B50 (67324752)\n-13782F Extract Zip Spec      14 (20) '2.0'\n-137830 Extract OS            00 (0) 'MS-DOS'\n-137831 General Purpose Flag  0808 (2056)\n+150212 LOCAL HEADER #1189    04034B50 (67324752)\n+150216 Extract Zip Spec      14 (20) '2.0'\n+150217 Extract OS            00 (0) 'MS-DOS'\n+150218 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-137833 Compression Method    0008 (8) 'Deflated'\n-137835 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-137839 CRC                   00000000 (0)\n-13783D Compressed Size       00000000 (0)\n-137841 Uncompressed Size     00000000 (0)\n-137845 Filename Length       0022 (34)\n-137847 Extra Length          0000 (0)\n-137849 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15021A Compression Method    0008 (8) 'Deflated'\n+15021C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+150220 CRC                   00000000 (0)\n+150224 Compressed Size       00000000 (0)\n+150228 Uncompressed Size     00000000 (0)\n+15022C Filename Length       002A (42)\n+15022E Extra Length          0000 (0)\n+150230 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x137849: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x150230: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13786B PAYLOAD               XX\n+15025A PAYLOAD               XX\n \n-13786D DATA DESCRIPTOR       08074B50 (134695760)\n-137871 CRC                   00000000 (0)\n-137875 Compressed Size       00000002 (2)\n-137879 Uncompressed Size     00000000 (0)\n+15025C DATA DESCRIPTOR       08074B50 (134695760)\n+150260 CRC                   00000000 (0)\n+150264 Compressed Size       00000002 (2)\n+150268 Uncompressed Size     00000000 (0)\n \n-13787D LOCAL HEADER #1190    04034B50 (67324752)\n-137881 Extract Zip Spec      14 (20) '2.0'\n-137882 Extract OS            00 (0) 'MS-DOS'\n-137883 General Purpose Flag  0808 (2056)\n+15026C LOCAL HEADER #1190    04034B50 (67324752)\n+150270 Extract Zip Spec      14 (20) '2.0'\n+150271 Extract OS            00 (0) 'MS-DOS'\n+150272 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-137885 Compression Method    0008 (8) 'Deflated'\n-137887 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13788B CRC                   00000000 (0)\n-13788F Compressed Size       00000000 (0)\n-137893 Uncompressed Size     00000000 (0)\n-137897 Filename Length       0032 (50)\n-137899 Extra Length          0000 (0)\n-13789B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+150274 Compression Method    0008 (8) 'Deflated'\n+150276 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15027A CRC                   00000000 (0)\n+15027E Compressed Size       00000000 (0)\n+150282 Uncompressed Size     00000000 (0)\n+150286 Filename Length       004C (76)\n+150288 Extra Length          0000 (0)\n+15028A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13789B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15028A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1378CD PAYLOAD\n+1502D6 PAYLOAD\n \n-1380A0 DATA DESCRIPTOR       08074B50 (134695760)\n-1380A4 CRC                   B748FF21 (3075014433)\n-1380A8 Compressed Size       000007D3 (2003)\n-1380AC Uncompressed Size     00001AD2 (6866)\n+1505F4 DATA DESCRIPTOR       08074B50 (134695760)\n+1505F8 CRC                   3EC7C431 (1053279281)\n+1505FC Compressed Size       0000031E (798)\n+150600 Uncompressed Size     000006D8 (1752)\n \n-1380B0 LOCAL HEADER #1191    04034B50 (67324752)\n-1380B4 Extract Zip Spec      14 (20) '2.0'\n-1380B5 Extract OS            00 (0) 'MS-DOS'\n-1380B6 General Purpose Flag  0808 (2056)\n+150604 LOCAL HEADER #1191    04034B50 (67324752)\n+150608 Extract Zip Spec      14 (20) '2.0'\n+150609 Extract OS            00 (0) 'MS-DOS'\n+15060A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1380B8 Compression Method    0008 (8) 'Deflated'\n-1380BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1380BE CRC                   00000000 (0)\n-1380C2 Compressed Size       00000000 (0)\n-1380C6 Uncompressed Size     00000000 (0)\n-1380CA Filename Length       003A (58)\n-1380CC Extra Length          0000 (0)\n-1380CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15060C Compression Method    0008 (8) 'Deflated'\n+15060E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+150612 CRC                   00000000 (0)\n+150616 Compressed Size       00000000 (0)\n+15061A Uncompressed Size     00000000 (0)\n+15061E Filename Length       0046 (70)\n+150620 Extra Length          0000 (0)\n+150622 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1380CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x150622: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-138108 PAYLOAD\n+150668 PAYLOAD\n \n-138589 DATA DESCRIPTOR       08074B50 (134695760)\n-13858D CRC                   BE2E03C3 (3190686659)\n-138591 Compressed Size       00000481 (1153)\n-138595 Uncompressed Size     00000A63 (2659)\n+150967 DATA DESCRIPTOR       08074B50 (134695760)\n+15096B CRC                   0AF6711C (183922972)\n+15096F Compressed Size       000002FF (767)\n+150973 Uncompressed Size     000006CE (1742)\n \n-138599 LOCAL HEADER #1192    04034B50 (67324752)\n-13859D Extract Zip Spec      14 (20) '2.0'\n-13859E Extract OS            00 (0) 'MS-DOS'\n-13859F General Purpose Flag  0808 (2056)\n+150977 LOCAL HEADER #1192    04034B50 (67324752)\n+15097B Extract Zip Spec      14 (20) '2.0'\n+15097C Extract OS            00 (0) 'MS-DOS'\n+15097D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1385A1 Compression Method    0008 (8) 'Deflated'\n-1385A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1385A7 CRC                   00000000 (0)\n-1385AB Compressed Size       00000000 (0)\n-1385AF Uncompressed Size     00000000 (0)\n-1385B3 Filename Length       0026 (38)\n-1385B5 Extra Length          0000 (0)\n-1385B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15097F Compression Method    0008 (8) 'Deflated'\n+150981 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+150985 CRC                   00000000 (0)\n+150989 Compressed Size       00000000 (0)\n+15098D Uncompressed Size     00000000 (0)\n+150991 Filename Length       0026 (38)\n+150993 Extra Length          0000 (0)\n+150995 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1385B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x150995: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1385DD PAYLOAD               XX\n+1509BB PAYLOAD               XX\n \n-1385DF DATA DESCRIPTOR       08074B50 (134695760)\n-1385E3 CRC                   00000000 (0)\n-1385E7 Compressed Size       00000002 (2)\n-1385EB Uncompressed Size     00000000 (0)\n+1509BD DATA DESCRIPTOR       08074B50 (134695760)\n+1509C1 CRC                   00000000 (0)\n+1509C5 Compressed Size       00000002 (2)\n+1509C9 Uncompressed Size     00000000 (0)\n \n-1385EF LOCAL HEADER #1193    04034B50 (67324752)\n-1385F3 Extract Zip Spec      14 (20) '2.0'\n-1385F4 Extract OS            00 (0) 'MS-DOS'\n-1385F5 General Purpose Flag  0808 (2056)\n+1509CD LOCAL HEADER #1193    04034B50 (67324752)\n+1509D1 Extract Zip Spec      14 (20) '2.0'\n+1509D2 Extract OS            00 (0) 'MS-DOS'\n+1509D3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1385F7 Compression Method    0008 (8) 'Deflated'\n-1385F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1385FD CRC                   00000000 (0)\n-138601 Compressed Size       00000000 (0)\n-138605 Uncompressed Size     00000000 (0)\n-138609 Filename Length       0034 (52)\n-13860B Extra Length          0000 (0)\n-13860D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1509D5 Compression Method    0008 (8) 'Deflated'\n+1509D7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1509DB CRC                   00000000 (0)\n+1509DF Compressed Size       00000000 (0)\n+1509E3 Uncompressed Size     00000000 (0)\n+1509E7 Filename Length       0047 (71)\n+1509E9 Extra Length          0000 (0)\n+1509EB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13860D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1509EB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-138641 PAYLOAD\n+150A32 PAYLOAD\n \n-1388B5 DATA DESCRIPTOR       08074B50 (134695760)\n-1388B9 CRC                   0DF301D6 (234029526)\n-1388BD Compressed Size       00000274 (628)\n-1388C1 Uncompressed Size     00000488 (1160)\n+150F84 DATA DESCRIPTOR       08074B50 (134695760)\n+150F88 CRC                   AA7692A4 (2859897508)\n+150F8C Compressed Size       00000552 (1362)\n+150F90 Uncompressed Size     00000F95 (3989)\n \n-1388C5 LOCAL HEADER #1194    04034B50 (67324752)\n-1388C9 Extract Zip Spec      14 (20) '2.0'\n-1388CA Extract OS            00 (0) 'MS-DOS'\n-1388CB General Purpose Flag  0808 (2056)\n+150F94 LOCAL HEADER #1194    04034B50 (67324752)\n+150F98 Extract Zip Spec      14 (20) '2.0'\n+150F99 Extract OS            00 (0) 'MS-DOS'\n+150F9A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1388CD Compression Method    0008 (8) 'Deflated'\n-1388CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1388D3 CRC                   00000000 (0)\n-1388D7 Compressed Size       00000000 (0)\n-1388DB Uncompressed Size     00000000 (0)\n-1388DF Filename Length       004B (75)\n-1388E1 Extra Length          0000 (0)\n-1388E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+150F9C Compression Method    0008 (8) 'Deflated'\n+150F9E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+150FA2 CRC                   00000000 (0)\n+150FA6 Compressed Size       00000000 (0)\n+150FAA Uncompressed Size     00000000 (0)\n+150FAE Filename Length       003B (59)\n+150FB0 Extra Length          0000 (0)\n+150FB2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1388E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x150FB2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13892E PAYLOAD\n+150FED PAYLOAD\n \n-138C2D DATA DESCRIPTOR       08074B50 (134695760)\n-138C31 CRC                   280A6840 (671770688)\n-138C35 Compressed Size       000002FF (767)\n-138C39 Uncompressed Size     00000632 (1586)\n+151B4E DATA DESCRIPTOR       08074B50 (134695760)\n+151B52 CRC                   B7357AFB (3073735419)\n+151B56 Compressed Size       00000B61 (2913)\n+151B5A Uncompressed Size     00002D19 (11545)\n \n-138C3D LOCAL HEADER #1195    04034B50 (67324752)\n-138C41 Extract Zip Spec      14 (20) '2.0'\n-138C42 Extract OS            00 (0) 'MS-DOS'\n-138C43 General Purpose Flag  0808 (2056)\n+151B5E LOCAL HEADER #1195    04034B50 (67324752)\n+151B62 Extract Zip Spec      14 (20) '2.0'\n+151B63 Extract OS            00 (0) 'MS-DOS'\n+151B64 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-138C45 Compression Method    0008 (8) 'Deflated'\n-138C47 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-138C4B CRC                   00000000 (0)\n-138C4F Compressed Size       00000000 (0)\n-138C53 Uncompressed Size     00000000 (0)\n-138C57 Filename Length       003A (58)\n-138C59 Extra Length          0000 (0)\n-138C5B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+151B66 Compression Method    0008 (8) 'Deflated'\n+151B68 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+151B6C CRC                   00000000 (0)\n+151B70 Compressed Size       00000000 (0)\n+151B74 Uncompressed Size     00000000 (0)\n+151B78 Filename Length       004E (78)\n+151B7A Extra Length          0000 (0)\n+151B7C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x138C5B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x151B7C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-138C95 PAYLOAD\n+151BCA PAYLOAD\n \n-13962C DATA DESCRIPTOR       08074B50 (134695760)\n-139630 CRC                   ED0697F4 (3976632308)\n-139634 Compressed Size       00000997 (2455)\n-139638 Uncompressed Size     000022BD (8893)\n+151FF3 DATA DESCRIPTOR       08074B50 (134695760)\n+151FF7 CRC                   C79AC1A5 (3348808101)\n+151FFB Compressed Size       00000429 (1065)\n+151FFF Uncompressed Size     00000D0C (3340)\n \n-13963C LOCAL HEADER #1196    04034B50 (67324752)\n-139640 Extract Zip Spec      14 (20) '2.0'\n-139641 Extract OS            00 (0) 'MS-DOS'\n-139642 General Purpose Flag  0808 (2056)\n+152003 LOCAL HEADER #1196    04034B50 (67324752)\n+152007 Extract Zip Spec      14 (20) '2.0'\n+152008 Extract OS            00 (0) 'MS-DOS'\n+152009 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-139644 Compression Method    0008 (8) 'Deflated'\n-139646 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13964A CRC                   00000000 (0)\n-13964E Compressed Size       00000000 (0)\n-139652 Uncompressed Size     00000000 (0)\n-139656 Filename Length       003F (63)\n-139658 Extra Length          0000 (0)\n-13965A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15200B Compression Method    0008 (8) 'Deflated'\n+15200D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+152011 CRC                   00000000 (0)\n+152015 Compressed Size       00000000 (0)\n+152019 Uncompressed Size     00000000 (0)\n+15201D Filename Length       0042 (66)\n+15201F Extra Length          0000 (0)\n+152021 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13965A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x152021: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-139699 PAYLOAD\n+152063 PAYLOAD\n \n-139ACC DATA DESCRIPTOR       08074B50 (134695760)\n-139AD0 CRC                   D14D14C7 (3511489735)\n-139AD4 Compressed Size       00000433 (1075)\n-139AD8 Uncompressed Size     00000CF4 (3316)\n+152276 DATA DESCRIPTOR       08074B50 (134695760)\n+15227A CRC                   09C52AF8 (163916536)\n+15227E Compressed Size       00000213 (531)\n+152282 Uncompressed Size     000003A9 (937)\n \n-139ADC LOCAL HEADER #1197    04034B50 (67324752)\n-139AE0 Extract Zip Spec      14 (20) '2.0'\n-139AE1 Extract OS            00 (0) 'MS-DOS'\n-139AE2 General Purpose Flag  0808 (2056)\n+152286 LOCAL HEADER #1197    04034B50 (67324752)\n+15228A Extract Zip Spec      14 (20) '2.0'\n+15228B Extract OS            00 (0) 'MS-DOS'\n+15228C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-139AE4 Compression Method    0008 (8) 'Deflated'\n-139AE6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-139AEA CRC                   00000000 (0)\n-139AEE Compressed Size       00000000 (0)\n-139AF2 Uncompressed Size     00000000 (0)\n-139AF6 Filename Length       0046 (70)\n-139AF8 Extra Length          0000 (0)\n-139AFA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15228E Compression Method    0008 (8) 'Deflated'\n+152290 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+152294 CRC                   00000000 (0)\n+152298 Compressed Size       00000000 (0)\n+15229C Uncompressed Size     00000000 (0)\n+1522A0 Filename Length       003C (60)\n+1522A2 Extra Length          0000 (0)\n+1522A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x139AFA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1522A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-139B40 PAYLOAD\n+1522E0 PAYLOAD\n \n-139EF9 DATA DESCRIPTOR       08074B50 (134695760)\n-139EFD CRC                   EE95F899 (4002805913)\n-139F01 Compressed Size       000003B9 (953)\n-139F05 Uncompressed Size     00000925 (2341)\n+153CE0 DATA DESCRIPTOR       08074B50 (134695760)\n+153CE4 CRC                   963EDCDB (2520702171)\n+153CE8 Compressed Size       00001A00 (6656)\n+153CEC Uncompressed Size     0000723A (29242)\n \n-139F09 LOCAL HEADER #1198    04034B50 (67324752)\n-139F0D Extract Zip Spec      14 (20) '2.0'\n-139F0E Extract OS            00 (0) 'MS-DOS'\n-139F0F General Purpose Flag  0808 (2056)\n+153CF0 LOCAL HEADER #1198    04034B50 (67324752)\n+153CF4 Extract Zip Spec      14 (20) '2.0'\n+153CF5 Extract OS            00 (0) 'MS-DOS'\n+153CF6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-139F11 Compression Method    0008 (8) 'Deflated'\n-139F13 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-139F17 CRC                   00000000 (0)\n-139F1B Compressed Size       00000000 (0)\n-139F1F Uncompressed Size     00000000 (0)\n-139F23 Filename Length       0029 (41)\n-139F25 Extra Length          0000 (0)\n-139F27 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+153CF8 Compression Method    0008 (8) 'Deflated'\n+153CFA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+153CFE CRC                   00000000 (0)\n+153D02 Compressed Size       00000000 (0)\n+153D06 Uncompressed Size     00000000 (0)\n+153D0A Filename Length       003B (59)\n+153D0C Extra Length          0000 (0)\n+153D0E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x139F27: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x153D0E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-139F50 PAYLOAD               XX\n+153D49 PAYLOAD\n \n-139F52 DATA DESCRIPTOR       08074B50 (134695760)\n-139F56 CRC                   00000000 (0)\n-139F5A Compressed Size       00000002 (2)\n-139F5E Uncompressed Size     00000000 (0)\n+155C52 DATA DESCRIPTOR       08074B50 (134695760)\n+155C56 CRC                   180ADDBE (403365310)\n+155C5A Compressed Size       00001F09 (7945)\n+155C5E Uncompressed Size     000095B9 (38329)\n \n-139F62 LOCAL HEADER #1199    04034B50 (67324752)\n-139F66 Extract Zip Spec      14 (20) '2.0'\n-139F67 Extract OS            00 (0) 'MS-DOS'\n-139F68 General Purpose Flag  0808 (2056)\n+155C62 LOCAL HEADER #1199    04034B50 (67324752)\n+155C66 Extract Zip Spec      14 (20) '2.0'\n+155C67 Extract OS            00 (0) 'MS-DOS'\n+155C68 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-139F6A Compression Method    0008 (8) 'Deflated'\n-139F6C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-139F70 CRC                   00000000 (0)\n-139F74 Compressed Size       00000000 (0)\n-139F78 Uncompressed Size     00000000 (0)\n-139F7C Filename Length       0040 (64)\n-139F7E Extra Length          0000 (0)\n-139F80 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+155C6A Compression Method    0008 (8) 'Deflated'\n+155C6C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+155C70 CRC                   00000000 (0)\n+155C74 Compressed Size       00000000 (0)\n+155C78 Uncompressed Size     00000000 (0)\n+155C7C Filename Length       0043 (67)\n+155C7E Extra Length          0000 (0)\n+155C80 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x139F80: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x155C80: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-139FC0 PAYLOAD\n+155CC3 PAYLOAD\n \n-13A960 DATA DESCRIPTOR       08074B50 (134695760)\n-13A964 CRC                   BD5DBB91 (3177036689)\n-13A968 Compressed Size       000009A0 (2464)\n-13A96C Uncompressed Size     000022E9 (8937)\n+156031 DATA DESCRIPTOR       08074B50 (134695760)\n+156035 CRC                   7701B7FD (1996601341)\n+156039 Compressed Size       0000036E (878)\n+15603D Uncompressed Size     00000864 (2148)\n \n-13A970 LOCAL HEADER #1200    04034B50 (67324752)\n-13A974 Extract Zip Spec      14 (20) '2.0'\n-13A975 Extract OS            00 (0) 'MS-DOS'\n-13A976 General Purpose Flag  0808 (2056)\n+156041 LOCAL HEADER #1200    04034B50 (67324752)\n+156045 Extract Zip Spec      14 (20) '2.0'\n+156046 Extract OS            00 (0) 'MS-DOS'\n+156047 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13A978 Compression Method    0008 (8) 'Deflated'\n-13A97A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13A97E CRC                   00000000 (0)\n-13A982 Compressed Size       00000000 (0)\n-13A986 Uncompressed Size     00000000 (0)\n-13A98A Filename Length       0025 (37)\n-13A98C Extra Length          0000 (0)\n-13A98E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+156049 Compression Method    0008 (8) 'Deflated'\n+15604B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15604F CRC                   00000000 (0)\n+156053 Compressed Size       00000000 (0)\n+156057 Uncompressed Size     00000000 (0)\n+15605B Filename Length       0020 (32)\n+15605D Extra Length          0000 (0)\n+15605F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13A98E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15605F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13A9B3 PAYLOAD               XX\n+15607F PAYLOAD               XX\n \n-13A9B5 DATA DESCRIPTOR       08074B50 (134695760)\n-13A9B9 CRC                   00000000 (0)\n-13A9BD Compressed Size       00000002 (2)\n-13A9C1 Uncompressed Size     00000000 (0)\n+156081 DATA DESCRIPTOR       08074B50 (134695760)\n+156085 CRC                   00000000 (0)\n+156089 Compressed Size       00000002 (2)\n+15608D Uncompressed Size     00000000 (0)\n \n-13A9C5 LOCAL HEADER #1201    04034B50 (67324752)\n-13A9C9 Extract Zip Spec      14 (20) '2.0'\n-13A9CA Extract OS            00 (0) 'MS-DOS'\n-13A9CB General Purpose Flag  0808 (2056)\n+156091 LOCAL HEADER #1201    04034B50 (67324752)\n+156095 Extract Zip Spec      14 (20) '2.0'\n+156096 Extract OS            00 (0) 'MS-DOS'\n+156097 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13A9CD Compression Method    0008 (8) 'Deflated'\n-13A9CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13A9D3 CRC                   00000000 (0)\n-13A9D7 Compressed Size       00000000 (0)\n-13A9DB Uncompressed Size     00000000 (0)\n-13A9DF Filename Length       003C (60)\n-13A9E1 Extra Length          0000 (0)\n-13A9E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+156099 Compression Method    0008 (8) 'Deflated'\n+15609B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15609F CRC                   00000000 (0)\n+1560A3 Compressed Size       00000000 (0)\n+1560A7 Uncompressed Size     00000000 (0)\n+1560AB Filename Length       0036 (54)\n+1560AD Extra Length          0000 (0)\n+1560AF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13A9E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1560AF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13AA1F PAYLOAD\n+1560E5 PAYLOAD\n \n-13ACAC DATA DESCRIPTOR       08074B50 (134695760)\n-13ACB0 CRC                   338329BB (864233915)\n-13ACB4 Compressed Size       0000028D (653)\n-13ACB8 Uncompressed Size     000004C3 (1219)\n+1566D1 DATA DESCRIPTOR       08074B50 (134695760)\n+1566D5 CRC                   B5B90B55 (3048803157)\n+1566D9 Compressed Size       000005EC (1516)\n+1566DD Uncompressed Size     000011CD (4557)\n \n-13ACBC LOCAL HEADER #1202    04034B50 (67324752)\n-13ACC0 Extract Zip Spec      14 (20) '2.0'\n-13ACC1 Extract OS            00 (0) 'MS-DOS'\n-13ACC2 General Purpose Flag  0808 (2056)\n+1566E1 LOCAL HEADER #1202    04034B50 (67324752)\n+1566E5 Extract Zip Spec      14 (20) '2.0'\n+1566E6 Extract OS            00 (0) 'MS-DOS'\n+1566E7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13ACC4 Compression Method    0008 (8) 'Deflated'\n-13ACC6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13ACCA CRC                   00000000 (0)\n-13ACCE Compressed Size       00000000 (0)\n-13ACD2 Uncompressed Size     00000000 (0)\n-13ACD6 Filename Length       0041 (65)\n-13ACD8 Extra Length          0000 (0)\n-13ACDA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1566E9 Compression Method    0008 (8) 'Deflated'\n+1566EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1566EF CRC                   00000000 (0)\n+1566F3 Compressed Size       00000000 (0)\n+1566F7 Uncompressed Size     00000000 (0)\n+1566FB Filename Length       0039 (57)\n+1566FD Extra Length          0000 (0)\n+1566FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13ACDA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1566FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13AD1B PAYLOAD\n+156738 PAYLOAD\n \n-13AFCE DATA DESCRIPTOR       08074B50 (134695760)\n-13AFD2 CRC                   3B13030C (991101708)\n-13AFD6 Compressed Size       000002B3 (691)\n-13AFDA Uncompressed Size     0000059C (1436)\n+1569FB DATA DESCRIPTOR       08074B50 (134695760)\n+1569FF CRC                   5117C509 (1360512265)\n+156A03 Compressed Size       000002C3 (707)\n+156A07 Uncompressed Size     000005CF (1487)\n \n-13AFDE LOCAL HEADER #1203    04034B50 (67324752)\n-13AFE2 Extract Zip Spec      14 (20) '2.0'\n-13AFE3 Extract OS            00 (0) 'MS-DOS'\n-13AFE4 General Purpose Flag  0808 (2056)\n+156A0B LOCAL HEADER #1203    04034B50 (67324752)\n+156A0F Extract Zip Spec      14 (20) '2.0'\n+156A10 Extract OS            00 (0) 'MS-DOS'\n+156A11 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13AFE6 Compression Method    0008 (8) 'Deflated'\n-13AFE8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13AFEC CRC                   00000000 (0)\n-13AFF0 Compressed Size       00000000 (0)\n-13AFF4 Uncompressed Size     00000000 (0)\n-13AFF8 Filename Length       0042 (66)\n-13AFFA Extra Length          0000 (0)\n-13AFFC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+156A13 Compression Method    0008 (8) 'Deflated'\n+156A15 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+156A19 CRC                   00000000 (0)\n+156A1D Compressed Size       00000000 (0)\n+156A21 Uncompressed Size     00000000 (0)\n+156A25 Filename Length       0039 (57)\n+156A27 Extra Length          0000 (0)\n+156A29 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13AFFC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x156A29: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13B03E PAYLOAD\n+156A62 PAYLOAD\n \n-13B2F8 DATA DESCRIPTOR       08074B50 (134695760)\n-13B2FC CRC                   45D210E4 (1171394788)\n-13B300 Compressed Size       000002BA (698)\n-13B304 Uncompressed Size     000005CE (1486)\n+156D77 DATA DESCRIPTOR       08074B50 (134695760)\n+156D7B CRC                   FCC4145B (4240708699)\n+156D7F Compressed Size       00000315 (789)\n+156D83 Uncompressed Size     000006E0 (1760)\n \n-13B308 LOCAL HEADER #1204    04034B50 (67324752)\n-13B30C Extract Zip Spec      14 (20) '2.0'\n-13B30D Extract OS            00 (0) 'MS-DOS'\n-13B30E General Purpose Flag  0808 (2056)\n+156D87 LOCAL HEADER #1204    04034B50 (67324752)\n+156D8B Extract Zip Spec      14 (20) '2.0'\n+156D8C Extract OS            00 (0) 'MS-DOS'\n+156D8D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13B310 Compression Method    0008 (8) 'Deflated'\n-13B312 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13B316 CRC                   00000000 (0)\n-13B31A Compressed Size       00000000 (0)\n-13B31E Uncompressed Size     00000000 (0)\n-13B322 Filename Length       0035 (53)\n-13B324 Extra Length          0000 (0)\n-13B326 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+156D8F Compression Method    0008 (8) 'Deflated'\n+156D91 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+156D95 CRC                   00000000 (0)\n+156D99 Compressed Size       00000000 (0)\n+156D9D Uncompressed Size     00000000 (0)\n+156DA1 Filename Length       003B (59)\n+156DA3 Extra Length          0000 (0)\n+156DA5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13B326: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x156DA5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13B35B PAYLOAD\n+156DE0 PAYLOAD\n \n-13C53A DATA DESCRIPTOR       08074B50 (134695760)\n-13C53E CRC                   FCFC2855 (4244383829)\n-13C542 Compressed Size       000011DF (4575)\n-13C546 Uncompressed Size     00006050 (24656)\n+1570A6 DATA DESCRIPTOR       08074B50 (134695760)\n+1570AA CRC                   A6BC7A6B (2797369963)\n+1570AE Compressed Size       000002C6 (710)\n+1570B2 Uncompressed Size     000005DB (1499)\n \n-13C54A LOCAL HEADER #1205    04034B50 (67324752)\n-13C54E Extract Zip Spec      14 (20) '2.0'\n-13C54F Extract OS            00 (0) 'MS-DOS'\n-13C550 General Purpose Flag  0808 (2056)\n+1570B6 LOCAL HEADER #1205    04034B50 (67324752)\n+1570BA Extract Zip Spec      14 (20) '2.0'\n+1570BB Extract OS            00 (0) 'MS-DOS'\n+1570BC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13C552 Compression Method    0008 (8) 'Deflated'\n-13C554 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13C558 CRC                   00000000 (0)\n-13C55C Compressed Size       00000000 (0)\n-13C560 Uncompressed Size     00000000 (0)\n-13C564 Filename Length       0039 (57)\n-13C566 Extra Length          0000 (0)\n-13C568 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1570BE Compression Method    0008 (8) 'Deflated'\n+1570C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1570C4 CRC                   00000000 (0)\n+1570C8 Compressed Size       00000000 (0)\n+1570CC Uncompressed Size     00000000 (0)\n+1570D0 Filename Length       003B (59)\n+1570D2 Extra Length          0000 (0)\n+1570D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13C568: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1570D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13C5A1 PAYLOAD\n+15710F PAYLOAD\n \n-13C856 DATA DESCRIPTOR       08074B50 (134695760)\n-13C85A CRC                   F36E07A4 (4084074404)\n-13C85E Compressed Size       000002B5 (693)\n-13C862 Uncompressed Size     00000528 (1320)\n+157426 DATA DESCRIPTOR       08074B50 (134695760)\n+15742A CRC                   CDD77CC5 (3453451461)\n+15742E Compressed Size       00000317 (791)\n+157432 Uncompressed Size     000006EA (1770)\n \n-13C866 LOCAL HEADER #1206    04034B50 (67324752)\n-13C86A Extract Zip Spec      14 (20) '2.0'\n-13C86B Extract OS            00 (0) 'MS-DOS'\n-13C86C General Purpose Flag  0808 (2056)\n+157436 LOCAL HEADER #1206    04034B50 (67324752)\n+15743A Extract Zip Spec      14 (20) '2.0'\n+15743B Extract OS            00 (0) 'MS-DOS'\n+15743C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13C86E Compression Method    0008 (8) 'Deflated'\n-13C870 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13C874 CRC                   00000000 (0)\n-13C878 Compressed Size       00000000 (0)\n-13C87C Uncompressed Size     00000000 (0)\n-13C880 Filename Length       0037 (55)\n-13C882 Extra Length          0000 (0)\n-13C884 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15743E Compression Method    0008 (8) 'Deflated'\n+157440 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+157444 CRC                   00000000 (0)\n+157448 Compressed Size       00000000 (0)\n+15744C Uncompressed Size     00000000 (0)\n+157450 Filename Length       0031 (49)\n+157452 Extra Length          0000 (0)\n+157454 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13C884: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x157454: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13C8BB PAYLOAD\n+157485 PAYLOAD\n \n-13D0BA DATA DESCRIPTOR       08074B50 (134695760)\n-13D0BE CRC                   4E01C35D (1308738397)\n-13D0C2 Compressed Size       000007FF (2047)\n-13D0C6 Uncompressed Size     000017D8 (6104)\n+157751 DATA DESCRIPTOR       08074B50 (134695760)\n+157755 CRC                   5112EBCA (1360194506)\n+157759 Compressed Size       000002CC (716)\n+15775D Uncompressed Size     000005C7 (1479)\n \n-13D0CA LOCAL HEADER #1207    04034B50 (67324752)\n-13D0CE Extract Zip Spec      14 (20) '2.0'\n-13D0CF Extract OS            00 (0) 'MS-DOS'\n-13D0D0 General Purpose Flag  0808 (2056)\n+157761 LOCAL HEADER #1207    04034B50 (67324752)\n+157765 Extract Zip Spec      14 (20) '2.0'\n+157766 Extract OS            00 (0) 'MS-DOS'\n+157767 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13D0D2 Compression Method    0008 (8) 'Deflated'\n-13D0D4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13D0D8 CRC                   00000000 (0)\n-13D0DC Compressed Size       00000000 (0)\n-13D0E0 Uncompressed Size     00000000 (0)\n-13D0E4 Filename Length       003B (59)\n-13D0E6 Extra Length          0000 (0)\n-13D0E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+157769 Compression Method    0008 (8) 'Deflated'\n+15776B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15776F CRC                   00000000 (0)\n+157773 Compressed Size       00000000 (0)\n+157777 Uncompressed Size     00000000 (0)\n+15777B Filename Length       0021 (33)\n+15777D Extra Length          0000 (0)\n+15777F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13D0E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15777F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13D123 PAYLOAD\n+1577A0 PAYLOAD               XX\n \n-13D678 DATA DESCRIPTOR       08074B50 (134695760)\n-13D67C CRC                   CCF50709 (3438610185)\n-13D680 Compressed Size       00000555 (1365)\n-13D684 Uncompressed Size     00000F33 (3891)\n+1577A2 DATA DESCRIPTOR       08074B50 (134695760)\n+1577A6 CRC                   00000000 (0)\n+1577AA Compressed Size       00000002 (2)\n+1577AE Uncompressed Size     00000000 (0)\n \n-13D688 LOCAL HEADER #1208    04034B50 (67324752)\n-13D68C Extract Zip Spec      14 (20) '2.0'\n-13D68D Extract OS            00 (0) 'MS-DOS'\n-13D68E General Purpose Flag  0808 (2056)\n+1577B2 LOCAL HEADER #1208    04034B50 (67324752)\n+1577B6 Extract Zip Spec      14 (20) '2.0'\n+1577B7 Extract OS            00 (0) 'MS-DOS'\n+1577B8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13D690 Compression Method    0008 (8) 'Deflated'\n-13D692 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13D696 CRC                   00000000 (0)\n-13D69A Compressed Size       00000000 (0)\n-13D69E Uncompressed Size     00000000 (0)\n-13D6A2 Filename Length       0038 (56)\n-13D6A4 Extra Length          0000 (0)\n-13D6A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1577BA Compression Method    0008 (8) 'Deflated'\n+1577BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1577C0 CRC                   00000000 (0)\n+1577C4 Compressed Size       00000000 (0)\n+1577C8 Uncompressed Size     00000000 (0)\n+1577CC Filename Length       003B (59)\n+1577CE Extra Length          0000 (0)\n+1577D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13D6A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1577D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13D6DE PAYLOAD\n+15780B PAYLOAD\n \n-13E183 DATA DESCRIPTOR       08074B50 (134695760)\n-13E187 CRC                   8C523252 (2354197074)\n-13E18B Compressed Size       00000AA5 (2725)\n-13E18F Uncompressed Size     0000268F (9871)\n+157B74 DATA DESCRIPTOR       08074B50 (134695760)\n+157B78 CRC                   F2E8FAB9 (4075354809)\n+157B7C Compressed Size       00000369 (873)\n+157B80 Uncompressed Size     00000826 (2086)\n \n-13E193 LOCAL HEADER #1209    04034B50 (67324752)\n-13E197 Extract Zip Spec      14 (20) '2.0'\n-13E198 Extract OS            00 (0) 'MS-DOS'\n-13E199 General Purpose Flag  0808 (2056)\n+157B84 LOCAL HEADER #1209    04034B50 (67324752)\n+157B88 Extract Zip Spec      14 (20) '2.0'\n+157B89 Extract OS            00 (0) 'MS-DOS'\n+157B8A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13E19B Compression Method    0008 (8) 'Deflated'\n-13E19D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13E1A1 CRC                   00000000 (0)\n-13E1A5 Compressed Size       00000000 (0)\n-13E1A9 Uncompressed Size     00000000 (0)\n-13E1AD Filename Length       0034 (52)\n-13E1AF Extra Length          0000 (0)\n-13E1B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+157B8C Compression Method    0008 (8) 'Deflated'\n+157B8E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+157B92 CRC                   00000000 (0)\n+157B96 Compressed Size       00000000 (0)\n+157B9A Uncompressed Size     00000000 (0)\n+157B9E Filename Length       0022 (34)\n+157BA0 Extra Length          0000 (0)\n+157BA2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13E1B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x157BA2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13E1E5 PAYLOAD\n+157BC4 PAYLOAD               XX\n \n-13E521 DATA DESCRIPTOR       08074B50 (134695760)\n-13E525 CRC                   CBF7FEA9 (3422027433)\n-13E529 Compressed Size       0000033C (828)\n-13E52D Uncompressed Size     0000066C (1644)\n+157BC6 DATA DESCRIPTOR       08074B50 (134695760)\n+157BCA CRC                   00000000 (0)\n+157BCE Compressed Size       00000002 (2)\n+157BD2 Uncompressed Size     00000000 (0)\n \n-13E531 LOCAL HEADER #1210    04034B50 (67324752)\n-13E535 Extract Zip Spec      14 (20) '2.0'\n-13E536 Extract OS            00 (0) 'MS-DOS'\n-13E537 General Purpose Flag  0808 (2056)\n+157BD6 LOCAL HEADER #1210    04034B50 (67324752)\n+157BDA Extract Zip Spec      14 (20) '2.0'\n+157BDB Extract OS            00 (0) 'MS-DOS'\n+157BDC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13E539 Compression Method    0008 (8) 'Deflated'\n-13E53B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13E53F CRC                   00000000 (0)\n-13E543 Compressed Size       00000000 (0)\n-13E547 Uncompressed Size     00000000 (0)\n-13E54B Filename Length       0035 (53)\n-13E54D Extra Length          0000 (0)\n-13E54F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+157BDE Compression Method    0008 (8) 'Deflated'\n+157BE0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+157BE4 CRC                   00000000 (0)\n+157BE8 Compressed Size       00000000 (0)\n+157BEC Uncompressed Size     00000000 (0)\n+157BF0 Filename Length       0037 (55)\n+157BF2 Extra Length          0000 (0)\n+157BF4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13E54F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x157BF4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13E584 PAYLOAD\n+157C2B PAYLOAD\n \n-13E975 DATA DESCRIPTOR       08074B50 (134695760)\n-13E979 CRC                   FD7FF5E7 (4253021671)\n-13E97D Compressed Size       000003F1 (1009)\n-13E981 Uncompressed Size     0000107A (4218)\n+158E79 DATA DESCRIPTOR       08074B50 (134695760)\n+158E7D CRC                   5DDCD4C5 (1574753477)\n+158E81 Compressed Size       0000124E (4686)\n+158E85 Uncompressed Size     0000537F (21375)\n \n-13E985 LOCAL HEADER #1211    04034B50 (67324752)\n-13E989 Extract Zip Spec      14 (20) '2.0'\n-13E98A Extract OS            00 (0) 'MS-DOS'\n-13E98B General Purpose Flag  0808 (2056)\n+158E89 LOCAL HEADER #1211    04034B50 (67324752)\n+158E8D Extract Zip Spec      14 (20) '2.0'\n+158E8E Extract OS            00 (0) 'MS-DOS'\n+158E8F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13E98D Compression Method    0008 (8) 'Deflated'\n-13E98F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13E993 CRC                   00000000 (0)\n-13E997 Compressed Size       00000000 (0)\n-13E99B Uncompressed Size     00000000 (0)\n-13E99F Filename Length       0029 (41)\n-13E9A1 Extra Length          0000 (0)\n-13E9A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+158E91 Compression Method    0008 (8) 'Deflated'\n+158E93 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+158E97 CRC                   00000000 (0)\n+158E9B Compressed Size       00000000 (0)\n+158E9F Uncompressed Size     00000000 (0)\n+158EA3 Filename Length       003E (62)\n+158EA5 Extra Length          0000 (0)\n+158EA7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13E9A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x158EA7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13E9CC PAYLOAD               XX\n+158EE5 PAYLOAD\n \n-13E9CE DATA DESCRIPTOR       08074B50 (134695760)\n-13E9D2 CRC                   00000000 (0)\n-13E9D6 Compressed Size       00000002 (2)\n-13E9DA Uncompressed Size     00000000 (0)\n+1597A9 DATA DESCRIPTOR       08074B50 (134695760)\n+1597AD CRC                   5BC81E29 (1539841577)\n+1597B1 Compressed Size       000008C4 (2244)\n+1597B5 Uncompressed Size     00001D8A (7562)\n \n-13E9DE LOCAL HEADER #1212    04034B50 (67324752)\n-13E9E2 Extract Zip Spec      14 (20) '2.0'\n-13E9E3 Extract OS            00 (0) 'MS-DOS'\n-13E9E4 General Purpose Flag  0808 (2056)\n+1597B9 LOCAL HEADER #1212    04034B50 (67324752)\n+1597BD Extract Zip Spec      14 (20) '2.0'\n+1597BE Extract OS            00 (0) 'MS-DOS'\n+1597BF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13E9E6 Compression Method    0008 (8) 'Deflated'\n-13E9E8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13E9EC CRC                   00000000 (0)\n-13E9F0 Compressed Size       00000000 (0)\n-13E9F4 Uncompressed Size     00000000 (0)\n-13E9F8 Filename Length       0043 (67)\n-13E9FA Extra Length          0000 (0)\n-13E9FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1597C1 Compression Method    0008 (8) 'Deflated'\n+1597C3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1597C7 CRC                   00000000 (0)\n+1597CB Compressed Size       00000000 (0)\n+1597CF Uncompressed Size     00000000 (0)\n+1597D3 Filename Length       0037 (55)\n+1597D5 Extra Length          0000 (0)\n+1597D7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13E9FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1597D7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13EA3F PAYLOAD\n+15980E PAYLOAD\n \n-13EFC4 DATA DESCRIPTOR       08074B50 (134695760)\n-13EFC8 CRC                   6A1A9325 (1780126501)\n-13EFCC Compressed Size       00000585 (1413)\n-13EFD0 Uncompressed Size     0000103E (4158)\n+15A3FB DATA DESCRIPTOR       08074B50 (134695760)\n+15A3FF CRC                   A266F3B2 (2724656050)\n+15A403 Compressed Size       00000BED (3053)\n+15A407 Uncompressed Size     0000462E (17966)\n \n-13EFD4 LOCAL HEADER #1213    04034B50 (67324752)\n-13EFD8 Extract Zip Spec      14 (20) '2.0'\n-13EFD9 Extract OS            00 (0) 'MS-DOS'\n-13EFDA General Purpose Flag  0808 (2056)\n+15A40B LOCAL HEADER #1213    04034B50 (67324752)\n+15A40F Extract Zip Spec      14 (20) '2.0'\n+15A410 Extract OS            00 (0) 'MS-DOS'\n+15A411 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13EFDC Compression Method    0008 (8) 'Deflated'\n-13EFDE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13EFE2 CRC                   00000000 (0)\n-13EFE6 Compressed Size       00000000 (0)\n-13EFEA Uncompressed Size     00000000 (0)\n-13EFEE Filename Length       0028 (40)\n-13EFF0 Extra Length          0000 (0)\n-13EFF2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15A413 Compression Method    0008 (8) 'Deflated'\n+15A415 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15A419 CRC                   00000000 (0)\n+15A41D Compressed Size       00000000 (0)\n+15A421 Uncompressed Size     00000000 (0)\n+15A425 Filename Length       0043 (67)\n+15A427 Extra Length          0000 (0)\n+15A429 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13EFF2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15A429: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13F01A PAYLOAD               XX\n+15A46C PAYLOAD\n \n-13F01C DATA DESCRIPTOR       08074B50 (134695760)\n-13F020 CRC                   00000000 (0)\n-13F024 Compressed Size       00000002 (2)\n-13F028 Uncompressed Size     00000000 (0)\n+15A733 DATA DESCRIPTOR       08074B50 (134695760)\n+15A737 CRC                   952E3CF5 (2502835445)\n+15A73B Compressed Size       000002C7 (711)\n+15A73F Uncompressed Size     00000552 (1362)\n \n-13F02C LOCAL HEADER #1214    04034B50 (67324752)\n-13F030 Extract Zip Spec      14 (20) '2.0'\n-13F031 Extract OS            00 (0) 'MS-DOS'\n-13F032 General Purpose Flag  0808 (2056)\n+15A743 LOCAL HEADER #1214    04034B50 (67324752)\n+15A747 Extract Zip Spec      14 (20) '2.0'\n+15A748 Extract OS            00 (0) 'MS-DOS'\n+15A749 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13F034 Compression Method    0008 (8) 'Deflated'\n-13F036 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13F03A CRC                   00000000 (0)\n-13F03E Compressed Size       00000000 (0)\n-13F042 Uncompressed Size     00000000 (0)\n-13F046 Filename Length       003F (63)\n-13F048 Extra Length          0000 (0)\n-13F04A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15A74B Compression Method    0008 (8) 'Deflated'\n+15A74D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15A751 CRC                   00000000 (0)\n+15A755 Compressed Size       00000000 (0)\n+15A759 Uncompressed Size     00000000 (0)\n+15A75D Filename Length       0052 (82)\n+15A75F Extra Length          0000 (0)\n+15A761 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13F04A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15A761: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13F089 PAYLOAD\n+15A7B3 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-13F3D6 DATA DESCRIPTOR       08074B50 (134695760)\n-13F3DA CRC                   021D9C13 (35494931)\n-13F3DE Compressed Size       0000034D (845)\n-13F3E2 Uncompressed Size     00000951 (2385)\n+15A7F3 DATA DESCRIPTOR       08074B50 (134695760)\n+15A7F7 CRC                   290EDBFF (688839679)\n+15A7FB Compressed Size       00000040 (64)\n+15A7FF Uncompressed Size     00000049 (73)\n \n-13F3E6 LOCAL HEADER #1215    04034B50 (67324752)\n-13F3EA Extract Zip Spec      14 (20) '2.0'\n-13F3EB Extract OS            00 (0) 'MS-DOS'\n-13F3EC General Purpose Flag  0808 (2056)\n+15A803 LOCAL HEADER #1215    04034B50 (67324752)\n+15A807 Extract Zip Spec      14 (20) '2.0'\n+15A808 Extract OS            00 (0) 'MS-DOS'\n+15A809 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13F3EE Compression Method    0008 (8) 'Deflated'\n-13F3F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13F3F4 CRC                   00000000 (0)\n-13F3F8 Compressed Size       00000000 (0)\n-13F3FC Uncompressed Size     00000000 (0)\n-13F400 Filename Length       004E (78)\n-13F402 Extra Length          0000 (0)\n-13F404 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15A80B Compression Method    0008 (8) 'Deflated'\n+15A80D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15A811 CRC                   00000000 (0)\n+15A815 Compressed Size       00000000 (0)\n+15A819 Uncompressed Size     00000000 (0)\n+15A81D Filename Length       005B (91)\n+15A81F Extra Length          0000 (0)\n+15A821 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13F404: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15A821: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13F452 PAYLOAD\n+15A87C PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-13F895 DATA DESCRIPTOR       08074B50 (134695760)\n-13F899 CRC                   48F808F8 (1224214776)\n-13F89D Compressed Size       00000443 (1091)\n-13F8A1 Uncompressed Size     00000BF1 (3057)\n+15A8C9 DATA DESCRIPTOR       08074B50 (134695760)\n+15A8CD CRC                   A49FCF77 (2761936759)\n+15A8D1 Compressed Size       0000004D (77)\n+15A8D5 Uncompressed Size     00000054 (84)\n \n-13F8A5 LOCAL HEADER #1216    04034B50 (67324752)\n-13F8A9 Extract Zip Spec      14 (20) '2.0'\n-13F8AA Extract OS            00 (0) 'MS-DOS'\n-13F8AB General Purpose Flag  0808 (2056)\n+15A8D9 LOCAL HEADER #1216    04034B50 (67324752)\n+15A8DD Extract Zip Spec      14 (20) '2.0'\n+15A8DE Extract OS            00 (0) 'MS-DOS'\n+15A8DF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13F8AD Compression Method    0008 (8) 'Deflated'\n-13F8AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13F8B3 CRC                   00000000 (0)\n-13F8B7 Compressed Size       00000000 (0)\n-13F8BB Uncompressed Size     00000000 (0)\n-13F8BF Filename Length       004F (79)\n-13F8C1 Extra Length          0000 (0)\n-13F8C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15A8E1 Compression Method    0008 (8) 'Deflated'\n+15A8E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15A8E7 CRC                   00000000 (0)\n+15A8EB Compressed Size       00000000 (0)\n+15A8EF Uncompressed Size     00000000 (0)\n+15A8F3 Filename Length       005D (93)\n+15A8F5 Extra Length          0000 (0)\n+15A8F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13F8C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15A8F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13F912 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+15A954 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-13F95D DATA DESCRIPTOR       08074B50 (134695760)\n-13F961 CRC                   78C43CAA (2026126506)\n-13F965 Compressed Size       0000004B (75)\n-13F969 Uncompressed Size     00000088 (136)\n+15A99D DATA DESCRIPTOR       08074B50 (134695760)\n+15A9A1 CRC                   F515114D (4111798605)\n+15A9A5 Compressed Size       00000049 (73)\n+15A9A9 Uncompressed Size     00000054 (84)\n \n-13F96D LOCAL HEADER #1217    04034B50 (67324752)\n-13F971 Extract Zip Spec      14 (20) '2.0'\n-13F972 Extract OS            00 (0) 'MS-DOS'\n-13F973 General Purpose Flag  0808 (2056)\n+15A9AD LOCAL HEADER #1217    04034B50 (67324752)\n+15A9B1 Extract Zip Spec      14 (20) '2.0'\n+15A9B2 Extract OS            00 (0) 'MS-DOS'\n+15A9B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13F975 Compression Method    0008 (8) 'Deflated'\n-13F977 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13F97B CRC                   00000000 (0)\n-13F97F Compressed Size       00000000 (0)\n-13F983 Uncompressed Size     00000000 (0)\n-13F987 Filename Length       002B (43)\n-13F989 Extra Length          0000 (0)\n-13F98B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15A9B5 Compression Method    0008 (8) 'Deflated'\n+15A9B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15A9BB CRC                   00000000 (0)\n+15A9BF Compressed Size       00000000 (0)\n+15A9C3 Uncompressed Size     00000000 (0)\n+15A9C7 Filename Length       0059 (89)\n+15A9C9 Extra Length          0000 (0)\n+15A9CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13F98B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15A9CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13F9B6 PAYLOAD               XX\n+15AA24 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-13F9B8 DATA DESCRIPTOR       08074B50 (134695760)\n-13F9BC CRC                   00000000 (0)\n-13F9C0 Compressed Size       00000002 (2)\n-13F9C4 Uncompressed Size     00000000 (0)\n+15AA69 DATA DESCRIPTOR       08074B50 (134695760)\n+15AA6D CRC                   285254BA (676484282)\n+15AA71 Compressed Size       00000045 (69)\n+15AA75 Uncompressed Size     0000004E (78)\n \n-13F9C8 LOCAL HEADER #1218    04034B50 (67324752)\n-13F9CC Extract Zip Spec      14 (20) '2.0'\n-13F9CD Extract OS            00 (0) 'MS-DOS'\n-13F9CE General Purpose Flag  0808 (2056)\n+15AA79 LOCAL HEADER #1218    04034B50 (67324752)\n+15AA7D Extract Zip Spec      14 (20) '2.0'\n+15AA7E Extract OS            00 (0) 'MS-DOS'\n+15AA7F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-13F9D0 Compression Method    0008 (8) 'Deflated'\n-13F9D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-13F9D6 CRC                   00000000 (0)\n-13F9DA Compressed Size       00000000 (0)\n-13F9DE Uncompressed Size     00000000 (0)\n-13F9E2 Filename Length       003E (62)\n-13F9E4 Extra Length          0000 (0)\n-13F9E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15AA81 Compression Method    0008 (8) 'Deflated'\n+15AA83 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15AA87 CRC                   00000000 (0)\n+15AA8B Compressed Size       00000000 (0)\n+15AA8F Uncompressed Size     00000000 (0)\n+15AA93 Filename Length       0056 (86)\n+15AA95 Extra Length          0000 (0)\n+15AA97 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x13F9E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15AA97: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-13FA24 PAYLOAD\n+15AAED PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-14028C DATA DESCRIPTOR       08074B50 (134695760)\n-140290 CRC                   E8E97BAC (3907615660)\n-140294 Compressed Size       00000868 (2152)\n-140298 Uncompressed Size     00001FC1 (8129)\n+15AB2B DATA DESCRIPTOR       08074B50 (134695760)\n+15AB2F CRC                   9DAB4985 (2645248389)\n+15AB33 Compressed Size       0000003E (62)\n+15AB37 Uncompressed Size     0000004A (74)\n \n-14029C LOCAL HEADER #1219    04034B50 (67324752)\n-1402A0 Extract Zip Spec      14 (20) '2.0'\n-1402A1 Extract OS            00 (0) 'MS-DOS'\n-1402A2 General Purpose Flag  0808 (2056)\n+15AB3B LOCAL HEADER #1219    04034B50 (67324752)\n+15AB3F Extract Zip Spec      14 (20) '2.0'\n+15AB40 Extract OS            00 (0) 'MS-DOS'\n+15AB41 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1402A4 Compression Method    0008 (8) 'Deflated'\n-1402A6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1402AA CRC                   00000000 (0)\n-1402AE Compressed Size       00000000 (0)\n-1402B2 Uncompressed Size     00000000 (0)\n-1402B6 Filename Length       0028 (40)\n-1402B8 Extra Length          0000 (0)\n-1402BA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15AB43 Compression Method    0008 (8) 'Deflated'\n+15AB45 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15AB49 CRC                   00000000 (0)\n+15AB4D Compressed Size       00000000 (0)\n+15AB51 Uncompressed Size     00000000 (0)\n+15AB55 Filename Length       0033 (51)\n+15AB57 Extra Length          0000 (0)\n+15AB59 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1402BA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15AB59: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1402E2 PAYLOAD               XX\n+15AB8C PAYLOAD               XX\n \n-1402E4 DATA DESCRIPTOR       08074B50 (134695760)\n-1402E8 CRC                   00000000 (0)\n-1402EC Compressed Size       00000002 (2)\n-1402F0 Uncompressed Size     00000000 (0)\n+15AB8E DATA DESCRIPTOR       08074B50 (134695760)\n+15AB92 CRC                   00000000 (0)\n+15AB96 Compressed Size       00000002 (2)\n+15AB9A Uncompressed Size     00000000 (0)\n \n-1402F4 LOCAL HEADER #1220    04034B50 (67324752)\n-1402F8 Extract Zip Spec      14 (20) '2.0'\n-1402F9 Extract OS            00 (0) 'MS-DOS'\n-1402FA General Purpose Flag  0808 (2056)\n+15AB9E LOCAL HEADER #1220    04034B50 (67324752)\n+15ABA2 Extract Zip Spec      14 (20) '2.0'\n+15ABA3 Extract OS            00 (0) 'MS-DOS'\n+15ABA4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1402FC Compression Method    0008 (8) 'Deflated'\n-1402FE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-140302 CRC                   00000000 (0)\n-140306 Compressed Size       00000000 (0)\n-14030A Uncompressed Size     00000000 (0)\n-14030E Filename Length       003E (62)\n-140310 Extra Length          0000 (0)\n-140312 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15ABA6 Compression Method    0008 (8) 'Deflated'\n+15ABA8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15ABAC CRC                   00000000 (0)\n+15ABB0 Compressed Size       00000000 (0)\n+15ABB4 Uncompressed Size     00000000 (0)\n+15ABB8 Filename Length       003A (58)\n+15ABBA Extra Length          0000 (0)\n+15ABBC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x140312: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15ABBC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-140350 PAYLOAD\n+15ABF6 PAYLOAD\n \n-1409FE DATA DESCRIPTOR       08074B50 (134695760)\n-140A02 CRC                   E525BFD2 (3844456402)\n-140A06 Compressed Size       000006AE (1710)\n-140A0A Uncompressed Size     00001958 (6488)\n+15AFDF DATA DESCRIPTOR       08074B50 (134695760)\n+15AFE3 CRC                   C9D6A7C1 (3386288065)\n+15AFE7 Compressed Size       000003E9 (1001)\n+15AFEB Uncompressed Size     00000C99 (3225)\n \n-140A0E LOCAL HEADER #1221    04034B50 (67324752)\n-140A12 Extract Zip Spec      14 (20) '2.0'\n-140A13 Extract OS            00 (0) 'MS-DOS'\n-140A14 General Purpose Flag  0808 (2056)\n+15AFEF LOCAL HEADER #1221    04034B50 (67324752)\n+15AFF3 Extract Zip Spec      14 (20) '2.0'\n+15AFF4 Extract OS            00 (0) 'MS-DOS'\n+15AFF5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-140A16 Compression Method    0008 (8) 'Deflated'\n-140A18 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-140A1C CRC                   00000000 (0)\n-140A20 Compressed Size       00000000 (0)\n-140A24 Uncompressed Size     00000000 (0)\n-140A28 Filename Length       0024 (36)\n-140A2A Extra Length          0000 (0)\n-140A2C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15AFF7 Compression Method    0008 (8) 'Deflated'\n+15AFF9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15AFFD CRC                   00000000 (0)\n+15B001 Compressed Size       00000000 (0)\n+15B005 Uncompressed Size     00000000 (0)\n+15B009 Filename Length       0041 (65)\n+15B00B Extra Length          0000 (0)\n+15B00D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x140A2C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15B00D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-140A50 PAYLOAD               XX\n+15B04E PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-140A52 DATA DESCRIPTOR       08074B50 (134695760)\n-140A56 CRC                   00000000 (0)\n-140A5A Compressed Size       00000002 (2)\n-140A5E Uncompressed Size     00000000 (0)\n+15B095 DATA DESCRIPTOR       08074B50 (134695760)\n+15B099 CRC                   30325669 (808605289)\n+15B09D Compressed Size       00000047 (71)\n+15B0A1 Uncompressed Size     00000049 (73)\n \n-140A62 LOCAL HEADER #1222    04034B50 (67324752)\n-140A66 Extract Zip Spec      14 (20) '2.0'\n-140A67 Extract OS            00 (0) 'MS-DOS'\n-140A68 General Purpose Flag  0808 (2056)\n+15B0A5 LOCAL HEADER #1222    04034B50 (67324752)\n+15B0A9 Extract Zip Spec      14 (20) '2.0'\n+15B0AA Extract OS            00 (0) 'MS-DOS'\n+15B0AB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-140A6A Compression Method    0008 (8) 'Deflated'\n-140A6C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-140A70 CRC                   00000000 (0)\n-140A74 Compressed Size       00000000 (0)\n-140A78 Uncompressed Size     00000000 (0)\n-140A7C Filename Length       0036 (54)\n-140A7E Extra Length          0000 (0)\n-140A80 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15B0AD Compression Method    0008 (8) 'Deflated'\n+15B0AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15B0B3 CRC                   00000000 (0)\n+15B0B7 Compressed Size       00000000 (0)\n+15B0BB Uncompressed Size     00000000 (0)\n+15B0BF Filename Length       001B (27)\n+15B0C1 Extra Length          0000 (0)\n+15B0C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x140A80: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15B0C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-140AB6 PAYLOAD\n+15B0DE PAYLOAD               XX\n \n-1413D0 DATA DESCRIPTOR       08074B50 (134695760)\n-1413D4 CRC                   2CD78AEC (752323308)\n-1413D8 Compressed Size       0000091A (2330)\n-1413DC Uncompressed Size     0000277A (10106)\n+15B0E0 DATA DESCRIPTOR       08074B50 (134695760)\n+15B0E4 CRC                   00000000 (0)\n+15B0E8 Compressed Size       00000002 (2)\n+15B0EC Uncompressed Size     00000000 (0)\n \n-1413E0 LOCAL HEADER #1223    04034B50 (67324752)\n-1413E4 Extract Zip Spec      14 (20) '2.0'\n-1413E5 Extract OS            00 (0) 'MS-DOS'\n-1413E6 General Purpose Flag  0808 (2056)\n+15B0F0 LOCAL HEADER #1223    04034B50 (67324752)\n+15B0F4 Extract Zip Spec      14 (20) '2.0'\n+15B0F5 Extract OS            00 (0) 'MS-DOS'\n+15B0F6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1413E8 Compression Method    0008 (8) 'Deflated'\n-1413EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1413EE CRC                   00000000 (0)\n-1413F2 Compressed Size       00000000 (0)\n-1413F6 Uncompressed Size     00000000 (0)\n-1413FA Filename Length       0023 (35)\n-1413FC Extra Length          0000 (0)\n-1413FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15B0F8 Compression Method    0008 (8) 'Deflated'\n+15B0FA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15B0FE CRC                   00000000 (0)\n+15B102 Compressed Size       00000000 (0)\n+15B106 Uncompressed Size     00000000 (0)\n+15B10A Filename Length       0029 (41)\n+15B10C Extra Length          0000 (0)\n+15B10E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1413FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15B10E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-141421 PAYLOAD               XX\n+15B137 PAYLOAD\n \n-141423 DATA DESCRIPTOR       08074B50 (134695760)\n-141427 CRC                   00000000 (0)\n-14142B Compressed Size       00000002 (2)\n-14142F Uncompressed Size     00000000 (0)\n+15B399 DATA DESCRIPTOR       08074B50 (134695760)\n+15B39D CRC                   14FCC408 (352109576)\n+15B3A1 Compressed Size       00000262 (610)\n+15B3A5 Uncompressed Size     00000497 (1175)\n \n-141433 LOCAL HEADER #1224    04034B50 (67324752)\n-141437 Extract Zip Spec      14 (20) '2.0'\n-141438 Extract OS            00 (0) 'MS-DOS'\n-141439 General Purpose Flag  0808 (2056)\n+15B3A9 LOCAL HEADER #1224    04034B50 (67324752)\n+15B3AD Extract Zip Spec      14 (20) '2.0'\n+15B3AE Extract OS            00 (0) 'MS-DOS'\n+15B3AF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14143B Compression Method    0008 (8) 'Deflated'\n-14143D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-141441 CRC                   00000000 (0)\n-141445 Compressed Size       00000000 (0)\n-141449 Uncompressed Size     00000000 (0)\n-14144D Filename Length       003E (62)\n-14144F Extra Length          0000 (0)\n-141451 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15B3B1 Compression Method    0008 (8) 'Deflated'\n+15B3B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15B3B7 CRC                   00000000 (0)\n+15B3BB Compressed Size       00000000 (0)\n+15B3BF Uncompressed Size     00000000 (0)\n+15B3C3 Filename Length       0024 (36)\n+15B3C5 Extra Length          0000 (0)\n+15B3C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x141451: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15B3C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14148F PAYLOAD\n+15B3EB PAYLOAD\n \n-141905 DATA DESCRIPTOR       08074B50 (134695760)\n-141909 CRC                   3DF79E03 (1039638019)\n-14190D Compressed Size       00000476 (1142)\n-141911 Uncompressed Size     00000BD6 (3030)\n+15B9B6 DATA DESCRIPTOR       08074B50 (134695760)\n+15B9BA CRC                   6D55499F (1834305951)\n+15B9BE Compressed Size       000005CB (1483)\n+15B9C2 Uncompressed Size     00001115 (4373)\n \n-141915 LOCAL HEADER #1225    04034B50 (67324752)\n-141919 Extract Zip Spec      14 (20) '2.0'\n-14191A Extract OS            00 (0) 'MS-DOS'\n-14191B General Purpose Flag  0808 (2056)\n+15B9C6 LOCAL HEADER #1225    04034B50 (67324752)\n+15B9CA Extract Zip Spec      14 (20) '2.0'\n+15B9CB Extract OS            00 (0) 'MS-DOS'\n+15B9CC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14191D Compression Method    0008 (8) 'Deflated'\n-14191F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-141923 CRC                   00000000 (0)\n-141927 Compressed Size       00000000 (0)\n-14192B Uncompressed Size     00000000 (0)\n-14192F Filename Length       0031 (49)\n-141931 Extra Length          0000 (0)\n-141933 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15B9CE Compression Method    0008 (8) 'Deflated'\n+15B9D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15B9D4 CRC                   00000000 (0)\n+15B9D8 Compressed Size       00000000 (0)\n+15B9DC Uncompressed Size     00000000 (0)\n+15B9E0 Filename Length       0012 (18)\n+15B9E2 Extra Length          0000 (0)\n+15B9E4 Filename              'XXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x141933: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15B9E4: Filename 'XXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-141964 PAYLOAD\n+15B9F6 PAYLOAD               XX\n \n-141BAE DATA DESCRIPTOR       08074B50 (134695760)\n-141BB2 CRC                   4DA1C2B1 (1302446769)\n-141BB6 Compressed Size       0000024A (586)\n-141BBA Uncompressed Size     000003F4 (1012)\n+15B9F8 DATA DESCRIPTOR       08074B50 (134695760)\n+15B9FC CRC                   00000000 (0)\n+15BA00 Compressed Size       00000002 (2)\n+15BA04 Uncompressed Size     00000000 (0)\n \n-141BBE LOCAL HEADER #1226    04034B50 (67324752)\n-141BC2 Extract Zip Spec      14 (20) '2.0'\n-141BC3 Extract OS            00 (0) 'MS-DOS'\n-141BC4 General Purpose Flag  0808 (2056)\n+15BA08 LOCAL HEADER #1226    04034B50 (67324752)\n+15BA0C Extract Zip Spec      14 (20) '2.0'\n+15BA0D Extract OS            00 (0) 'MS-DOS'\n+15BA0E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-141BC6 Compression Method    0008 (8) 'Deflated'\n-141BC8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-141BCC CRC                   00000000 (0)\n-141BD0 Compressed Size       00000000 (0)\n-141BD4 Uncompressed Size     00000000 (0)\n-141BD8 Filename Length       003F (63)\n-141BDA Extra Length          0000 (0)\n-141BDC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15BA10 Compression Method    0008 (8) 'Deflated'\n+15BA12 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15BA16 CRC                   00000000 (0)\n+15BA1A Compressed Size       00000000 (0)\n+15BA1E Uncompressed Size     00000000 (0)\n+15BA22 Filename Length       0016 (22)\n+15BA24 Extra Length          0000 (0)\n+15BA26 Filename              'XXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x141BDC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15BA26: Filename 'XXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-141C1B PAYLOAD\n+15BA3C PAYLOAD               XX\n \n-1421D2 DATA DESCRIPTOR       08074B50 (134695760)\n-1421D6 CRC                   150F0CC2 (353307842)\n-1421DA Compressed Size       000005B7 (1463)\n-1421DE Uncompressed Size     000011F7 (4599)\n+15BA3E DATA DESCRIPTOR       08074B50 (134695760)\n+15BA42 CRC                   00000000 (0)\n+15BA46 Compressed Size       00000002 (2)\n+15BA4A Uncompressed Size     00000000 (0)\n \n-1421E2 LOCAL HEADER #1227    04034B50 (67324752)\n-1421E6 Extract Zip Spec      14 (20) '2.0'\n-1421E7 Extract OS            00 (0) 'MS-DOS'\n-1421E8 General Purpose Flag  0808 (2056)\n+15BA4E LOCAL HEADER #1227    04034B50 (67324752)\n+15BA52 Extract Zip Spec      14 (20) '2.0'\n+15BA53 Extract OS            00 (0) 'MS-DOS'\n+15BA54 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1421EA Compression Method    0008 (8) 'Deflated'\n-1421EC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1421F0 CRC                   00000000 (0)\n-1421F4 Compressed Size       00000000 (0)\n-1421F8 Uncompressed Size     00000000 (0)\n-1421FC Filename Length       003C (60)\n-1421FE Extra Length          0000 (0)\n-142200 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15BA56 Compression Method    0008 (8) 'Deflated'\n+15BA58 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15BA5C CRC                   00000000 (0)\n+15BA60 Compressed Size       00000000 (0)\n+15BA64 Uncompressed Size     00000000 (0)\n+15BA68 Filename Length       001D (29)\n+15BA6A Extra Length          0000 (0)\n+15BA6C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x142200: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15BA6C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14223C PAYLOAD\n+15BA89 PAYLOAD\n \n-1425E4 DATA DESCRIPTOR       08074B50 (134695760)\n-1425E8 CRC                   74B3513E (1957908798)\n-1425EC Compressed Size       000003A8 (936)\n-1425F0 Uncompressed Size     00000A15 (2581)\n+15BEE6 DATA DESCRIPTOR       08074B50 (134695760)\n+15BEEA CRC                   F79D8E60 (4154297952)\n+15BEEE Compressed Size       0000045D (1117)\n+15BEF2 Uncompressed Size     00000BEB (3051)\n \n-1425F4 LOCAL HEADER #1228    04034B50 (67324752)\n-1425F8 Extract Zip Spec      14 (20) '2.0'\n-1425F9 Extract OS            00 (0) 'MS-DOS'\n-1425FA General Purpose Flag  0808 (2056)\n+15BEF6 LOCAL HEADER #1228    04034B50 (67324752)\n+15BEFA Extract Zip Spec      14 (20) '2.0'\n+15BEFB Extract OS            00 (0) 'MS-DOS'\n+15BEFC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1425FC Compression Method    0008 (8) 'Deflated'\n-1425FE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-142602 CRC                   00000000 (0)\n-142606 Compressed Size       00000000 (0)\n-14260A Uncompressed Size     00000000 (0)\n-14260E Filename Length       003F (63)\n-142610 Extra Length          0000 (0)\n-142612 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15BEFE Compression Method    0008 (8) 'Deflated'\n+15BF00 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15BF04 CRC                   00000000 (0)\n+15BF08 Compressed Size       00000000 (0)\n+15BF0C Uncompressed Size     00000000 (0)\n+15BF10 Filename Length       0020 (32)\n+15BF12 Extra Length          0000 (0)\n+15BF14 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x142612: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15BF14: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-142651 PAYLOAD\n+15BF34 PAYLOAD\n \n-142AC9 DATA DESCRIPTOR       08074B50 (134695760)\n-142ACD CRC                   59C6BCF2 (1506196722)\n-142AD1 Compressed Size       00000478 (1144)\n-142AD5 Uncompressed Size     00000C48 (3144)\n+15C124 DATA DESCRIPTOR       08074B50 (134695760)\n+15C128 CRC                   3ED932F9 (1054421753)\n+15C12C Compressed Size       000001F0 (496)\n+15C130 Uncompressed Size     00000354 (852)\n \n-142AD9 LOCAL HEADER #1229    04034B50 (67324752)\n-142ADD Extract Zip Spec      14 (20) '2.0'\n-142ADE Extract OS            00 (0) 'MS-DOS'\n-142ADF General Purpose Flag  0808 (2056)\n+15C134 LOCAL HEADER #1229    04034B50 (67324752)\n+15C138 Extract Zip Spec      14 (20) '2.0'\n+15C139 Extract OS            00 (0) 'MS-DOS'\n+15C13A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-142AE1 Compression Method    0008 (8) 'Deflated'\n-142AE3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-142AE7 CRC                   00000000 (0)\n-142AEB Compressed Size       00000000 (0)\n-142AEF Uncompressed Size     00000000 (0)\n-142AF3 Filename Length       003F (63)\n-142AF5 Extra Length          0000 (0)\n-142AF7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15C13C Compression Method    0008 (8) 'Deflated'\n+15C13E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15C142 CRC                   00000000 (0)\n+15C146 Compressed Size       00000000 (0)\n+15C14A Uncompressed Size     00000000 (0)\n+15C14E Filename Length       001F (31)\n+15C150 Extra Length          0000 (0)\n+15C152 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x142AF7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15C152: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-142B36 PAYLOAD\n+15C171 PAYLOAD\n \n-142E5D DATA DESCRIPTOR       08074B50 (134695760)\n-142E61 CRC                   CB062A84 (3406178948)\n-142E65 Compressed Size       00000327 (807)\n-142E69 Uncompressed Size     000007E1 (2017)\n+15C3EC DATA DESCRIPTOR       08074B50 (134695760)\n+15C3F0 CRC                   B518B61F (3038295583)\n+15C3F4 Compressed Size       0000027B (635)\n+15C3F8 Uncompressed Size     000004D4 (1236)\n \n-142E6D LOCAL HEADER #1230    04034B50 (67324752)\n-142E71 Extract Zip Spec      14 (20) '2.0'\n-142E72 Extract OS            00 (0) 'MS-DOS'\n-142E73 General Purpose Flag  0808 (2056)\n+15C3FC LOCAL HEADER #1230    04034B50 (67324752)\n+15C400 Extract Zip Spec      14 (20) '2.0'\n+15C401 Extract OS            00 (0) 'MS-DOS'\n+15C402 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-142E75 Compression Method    0008 (8) 'Deflated'\n-142E77 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-142E7B CRC                   00000000 (0)\n-142E7F Compressed Size       00000000 (0)\n-142E83 Uncompressed Size     00000000 (0)\n-142E87 Filename Length       0034 (52)\n-142E89 Extra Length          0000 (0)\n-142E8B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15C404 Compression Method    0008 (8) 'Deflated'\n+15C406 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15C40A CRC                   00000000 (0)\n+15C40E Compressed Size       00000000 (0)\n+15C412 Uncompressed Size     00000000 (0)\n+15C416 Filename Length       001F (31)\n+15C418 Extra Length          0000 (0)\n+15C41A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x142E8B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15C41A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-142EBF PAYLOAD\n+15C439 PAYLOAD\n \n-143C81 DATA DESCRIPTOR       08074B50 (134695760)\n-143C85 CRC                   8E964D75 (2392214901)\n-143C89 Compressed Size       00000DC2 (3522)\n-143C8D Uncompressed Size     000031F2 (12786)\n+15C809 DATA DESCRIPTOR       08074B50 (134695760)\n+15C80D CRC                   CD3B8ABC (3443231420)\n+15C811 Compressed Size       000003D0 (976)\n+15C815 Uncompressed Size     000007D2 (2002)\n \n-143C91 LOCAL HEADER #1231    04034B50 (67324752)\n-143C95 Extract Zip Spec      14 (20) '2.0'\n-143C96 Extract OS            00 (0) 'MS-DOS'\n-143C97 General Purpose Flag  0808 (2056)\n+15C819 LOCAL HEADER #1231    04034B50 (67324752)\n+15C81D Extract Zip Spec      14 (20) '2.0'\n+15C81E Extract OS            00 (0) 'MS-DOS'\n+15C81F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-143C99 Compression Method    0008 (8) 'Deflated'\n-143C9B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-143C9F CRC                   00000000 (0)\n-143CA3 Compressed Size       00000000 (0)\n-143CA7 Uncompressed Size     00000000 (0)\n-143CAB Filename Length       003A (58)\n-143CAD Extra Length          0000 (0)\n-143CAF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15C821 Compression Method    0008 (8) 'Deflated'\n+15C823 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15C827 CRC                   00000000 (0)\n+15C82B Compressed Size       00000000 (0)\n+15C82F Uncompressed Size     00000000 (0)\n+15C833 Filename Length       001E (30)\n+15C835 Extra Length          0000 (0)\n+15C837 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x143CAF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15C837: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-143CE9 PAYLOAD\n+15C855 PAYLOAD\n \n-143F71 DATA DESCRIPTOR       08074B50 (134695760)\n-143F75 CRC                   2E39C29D (775537309)\n-143F79 Compressed Size       00000288 (648)\n-143F7D Uncompressed Size     000004D4 (1236)\n+15D0E0 DATA DESCRIPTOR       08074B50 (134695760)\n+15D0E4 CRC                   4CE4C327 (1290060583)\n+15D0E8 Compressed Size       0000088B (2187)\n+15D0EC Uncompressed Size     00001505 (5381)\n \n-143F81 LOCAL HEADER #1232    04034B50 (67324752)\n-143F85 Extract Zip Spec      14 (20) '2.0'\n-143F86 Extract OS            00 (0) 'MS-DOS'\n-143F87 General Purpose Flag  0808 (2056)\n+15D0F0 LOCAL HEADER #1232    04034B50 (67324752)\n+15D0F4 Extract Zip Spec      14 (20) '2.0'\n+15D0F5 Extract OS            00 (0) 'MS-DOS'\n+15D0F6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-143F89 Compression Method    0008 (8) 'Deflated'\n-143F8B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-143F8F CRC                   00000000 (0)\n-143F93 Compressed Size       00000000 (0)\n-143F97 Uncompressed Size     00000000 (0)\n-143F9B Filename Length       0039 (57)\n-143F9D Extra Length          0000 (0)\n-143F9F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15D0F8 Compression Method    0008 (8) 'Deflated'\n+15D0FA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15D0FE CRC                   00000000 (0)\n+15D102 Compressed Size       00000000 (0)\n+15D106 Uncompressed Size     00000000 (0)\n+15D10A Filename Length       001D (29)\n+15D10C Extra Length          0000 (0)\n+15D10E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x143F9F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15D10E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-143FD8 PAYLOAD\n+15D12B PAYLOAD\n \n-14430C DATA DESCRIPTOR       08074B50 (134695760)\n-144310 CRC                   8AE5D3FF (2330317823)\n-144314 Compressed Size       00000334 (820)\n-144318 Uncompressed Size     000006A5 (1701)\n+15D4A2 DATA DESCRIPTOR       08074B50 (134695760)\n+15D4A6 CRC                   FA33FECC (4197711564)\n+15D4AA Compressed Size       00000377 (887)\n+15D4AE Uncompressed Size     0000069F (1695)\n \n-14431C LOCAL HEADER #1233    04034B50 (67324752)\n-144320 Extract Zip Spec      14 (20) '2.0'\n-144321 Extract OS            00 (0) 'MS-DOS'\n-144322 General Purpose Flag  0808 (2056)\n+15D4B2 LOCAL HEADER #1233    04034B50 (67324752)\n+15D4B6 Extract Zip Spec      14 (20) '2.0'\n+15D4B7 Extract OS            00 (0) 'MS-DOS'\n+15D4B8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-144324 Compression Method    0008 (8) 'Deflated'\n-144326 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14432A CRC                   00000000 (0)\n-14432E Compressed Size       00000000 (0)\n-144332 Uncompressed Size     00000000 (0)\n-144336 Filename Length       0038 (56)\n-144338 Extra Length          0000 (0)\n-14433A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15D4BA Compression Method    0008 (8) 'Deflated'\n+15D4BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15D4C0 CRC                   00000000 (0)\n+15D4C4 Compressed Size       00000000 (0)\n+15D4C8 Uncompressed Size     00000000 (0)\n+15D4CC Filename Length       0034 (52)\n+15D4CE Extra Length          0000 (0)\n+15D4D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14433A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15D4D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-144372 PAYLOAD\n+15D504 PAYLOAD               XX\n \n-1449AD DATA DESCRIPTOR       08074B50 (134695760)\n-1449B1 CRC                   1149E8E6 (290056422)\n-1449B5 Compressed Size       0000063B (1595)\n-1449B9 Uncompressed Size     00001196 (4502)\n+15D506 DATA DESCRIPTOR       08074B50 (134695760)\n+15D50A CRC                   00000000 (0)\n+15D50E Compressed Size       00000002 (2)\n+15D512 Uncompressed Size     00000000 (0)\n \n-1449BD LOCAL HEADER #1234    04034B50 (67324752)\n-1449C1 Extract Zip Spec      14 (20) '2.0'\n-1449C2 Extract OS            00 (0) 'MS-DOS'\n-1449C3 General Purpose Flag  0808 (2056)\n+15D516 LOCAL HEADER #1234    04034B50 (67324752)\n+15D51A Extract Zip Spec      14 (20) '2.0'\n+15D51B Extract OS            00 (0) 'MS-DOS'\n+15D51C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1449C5 Compression Method    0008 (8) 'Deflated'\n-1449C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1449CB CRC                   00000000 (0)\n-1449CF Compressed Size       00000000 (0)\n-1449D3 Uncompressed Size     00000000 (0)\n-1449D7 Filename Length       003A (58)\n-1449D9 Extra Length          0000 (0)\n-1449DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15D51E Compression Method    0008 (8) 'Deflated'\n+15D520 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15D524 CRC                   00000000 (0)\n+15D528 Compressed Size       00000000 (0)\n+15D52C Uncompressed Size     00000000 (0)\n+15D530 Filename Length       003B (59)\n+15D532 Extra Length          0000 (0)\n+15D534 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1449DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15D534: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-144A15 PAYLOAD\n+15D56F PAYLOAD\n \n-144E21 DATA DESCRIPTOR       08074B50 (134695760)\n-144E25 CRC                   939A92A5 (2476380837)\n-144E29 Compressed Size       0000040C (1036)\n-144E2D Uncompressed Size     000009EA (2538)\n+15D937 DATA DESCRIPTOR       08074B50 (134695760)\n+15D93B CRC                   C9681FCD (3379044301)\n+15D93F Compressed Size       000003C8 (968)\n+15D943 Uncompressed Size     00000917 (2327)\n \n-144E31 LOCAL HEADER #1235    04034B50 (67324752)\n-144E35 Extract Zip Spec      14 (20) '2.0'\n-144E36 Extract OS            00 (0) 'MS-DOS'\n-144E37 General Purpose Flag  0808 (2056)\n+15D947 LOCAL HEADER #1235    04034B50 (67324752)\n+15D94B Extract Zip Spec      14 (20) '2.0'\n+15D94C Extract OS            00 (0) 'MS-DOS'\n+15D94D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-144E39 Compression Method    0008 (8) 'Deflated'\n-144E3B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-144E3F CRC                   00000000 (0)\n-144E43 Compressed Size       00000000 (0)\n-144E47 Uncompressed Size     00000000 (0)\n-144E4B Filename Length       0037 (55)\n-144E4D Extra Length          0000 (0)\n-144E4F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15D94F Compression Method    0008 (8) 'Deflated'\n+15D951 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15D955 CRC                   00000000 (0)\n+15D959 Compressed Size       00000000 (0)\n+15D95D Uncompressed Size     00000000 (0)\n+15D961 Filename Length       0042 (66)\n+15D963 Extra Length          0000 (0)\n+15D965 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x144E4F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15D965: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-144E86 PAYLOAD\n+15D9A7 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-1451A5 DATA DESCRIPTOR       08074B50 (134695760)\n-1451A9 CRC                   4DDA4FAB (1306152875)\n-1451AD Compressed Size       0000031F (799)\n-1451B1 Uncompressed Size     00000793 (1939)\n+15D9EF DATA DESCRIPTOR       08074B50 (134695760)\n+15D9F3 CRC                   01E590F2 (31822066)\n+15D9F7 Compressed Size       00000048 (72)\n+15D9FB Uncompressed Size     0000004A (74)\n \n-1451B5 LOCAL HEADER #1236    04034B50 (67324752)\n-1451B9 Extract Zip Spec      14 (20) '2.0'\n-1451BA Extract OS            00 (0) 'MS-DOS'\n-1451BB General Purpose Flag  0808 (2056)\n+15D9FF LOCAL HEADER #1236    04034B50 (67324752)\n+15DA03 Extract Zip Spec      14 (20) '2.0'\n+15DA04 Extract OS            00 (0) 'MS-DOS'\n+15DA05 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1451BD Compression Method    0008 (8) 'Deflated'\n-1451BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1451C3 CRC                   00000000 (0)\n-1451C7 Compressed Size       00000000 (0)\n-1451CB Uncompressed Size     00000000 (0)\n-1451CF Filename Length       002F (47)\n-1451D1 Extra Length          0000 (0)\n-1451D3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15DA07 Compression Method    0008 (8) 'Deflated'\n+15DA09 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15DA0D CRC                   00000000 (0)\n+15DA11 Compressed Size       00000000 (0)\n+15DA15 Uncompressed Size     00000000 (0)\n+15DA19 Filename Length       0020 (32)\n+15DA1B Extra Length          0000 (0)\n+15DA1D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1451D3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15DA1D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-145202 PAYLOAD               XX\n+15DA3D PAYLOAD               XX\n \n-145204 DATA DESCRIPTOR       08074B50 (134695760)\n-145208 CRC                   00000000 (0)\n-14520C Compressed Size       00000002 (2)\n-145210 Uncompressed Size     00000000 (0)\n+15DA3F DATA DESCRIPTOR       08074B50 (134695760)\n+15DA43 CRC                   00000000 (0)\n+15DA47 Compressed Size       00000002 (2)\n+15DA4B Uncompressed Size     00000000 (0)\n \n-145214 LOCAL HEADER #1237    04034B50 (67324752)\n-145218 Extract Zip Spec      14 (20) '2.0'\n-145219 Extract OS            00 (0) 'MS-DOS'\n-14521A General Purpose Flag  0808 (2056)\n+15DA4F LOCAL HEADER #1237    04034B50 (67324752)\n+15DA53 Extract Zip Spec      14 (20) '2.0'\n+15DA54 Extract OS            00 (0) 'MS-DOS'\n+15DA55 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14521C Compression Method    0008 (8) 'Deflated'\n-14521E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-145222 CRC                   00000000 (0)\n-145226 Compressed Size       00000000 (0)\n-14522A Uncompressed Size     00000000 (0)\n-14522E Filename Length       0037 (55)\n-145230 Extra Length          0000 (0)\n-145232 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15DA57 Compression Method    0008 (8) 'Deflated'\n+15DA59 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15DA5D CRC                   00000000 (0)\n+15DA61 Compressed Size       00000000 (0)\n+15DA65 Uncompressed Size     00000000 (0)\n+15DA69 Filename Length       0032 (50)\n+15DA6B Extra Length          0000 (0)\n+15DA6D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x145232: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15DA6D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-145269 PAYLOAD               XX\n+15DA9F PAYLOAD\n \n-14526B DATA DESCRIPTOR       08074B50 (134695760)\n-14526F CRC                   00000000 (0)\n-145273 Compressed Size       00000002 (2)\n-145277 Uncompressed Size     00000000 (0)\n+15E1E1 DATA DESCRIPTOR       08074B50 (134695760)\n+15E1E5 CRC                   AE92FDCB (2928868811)\n+15E1E9 Compressed Size       00000742 (1858)\n+15E1ED Uncompressed Size     00001744 (5956)\n \n-14527B LOCAL HEADER #1238    04034B50 (67324752)\n-14527F Extract Zip Spec      14 (20) '2.0'\n-145280 Extract OS            00 (0) 'MS-DOS'\n-145281 General Purpose Flag  0808 (2056)\n+15E1F1 LOCAL HEADER #1238    04034B50 (67324752)\n+15E1F5 Extract Zip Spec      14 (20) '2.0'\n+15E1F6 Extract OS            00 (0) 'MS-DOS'\n+15E1F7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-145283 Compression Method    0008 (8) 'Deflated'\n-145285 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-145289 CRC                   00000000 (0)\n-14528D Compressed Size       00000000 (0)\n-145291 Uncompressed Size     00000000 (0)\n-145295 Filename Length       005A (90)\n-145297 Extra Length          0000 (0)\n-145299 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15E1F9 Compression Method    0008 (8) 'Deflated'\n+15E1FB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15E1FF CRC                   00000000 (0)\n+15E203 Compressed Size       00000000 (0)\n+15E207 Uncompressed Size     00000000 (0)\n+15E20B Filename Length       0039 (57)\n+15E20D Extra Length          0000 (0)\n+15E20F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x145299: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15E20F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1452F3 PAYLOAD\n+15E248 PAYLOAD\n \n-14568A DATA DESCRIPTOR       08074B50 (134695760)\n-14568E CRC                   E3F9F330 (3824808752)\n-145692 Compressed Size       00000397 (919)\n-145696 Uncompressed Size     00000859 (2137)\n+15E8B6 DATA DESCRIPTOR       08074B50 (134695760)\n+15E8BA CRC                   1162A7F0 (291678192)\n+15E8BE Compressed Size       0000066E (1646)\n+15E8C2 Uncompressed Size     00001680 (5760)\n \n-14569A LOCAL HEADER #1239    04034B50 (67324752)\n-14569E Extract Zip Spec      14 (20) '2.0'\n-14569F Extract OS            00 (0) 'MS-DOS'\n-1456A0 General Purpose Flag  0808 (2056)\n+15E8C6 LOCAL HEADER #1239    04034B50 (67324752)\n+15E8CA Extract Zip Spec      14 (20) '2.0'\n+15E8CB Extract OS            00 (0) 'MS-DOS'\n+15E8CC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1456A2 Compression Method    0008 (8) 'Deflated'\n-1456A4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1456A8 CRC                   00000000 (0)\n-1456AC Compressed Size       00000000 (0)\n-1456B0 Uncompressed Size     00000000 (0)\n-1456B4 Filename Length       004F (79)\n-1456B6 Extra Length          0000 (0)\n-1456B8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15E8CE Compression Method    0008 (8) 'Deflated'\n+15E8D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15E8D4 CRC                   00000000 (0)\n+15E8D8 Compressed Size       00000000 (0)\n+15E8DC Uncompressed Size     00000000 (0)\n+15E8E0 Filename Length       0037 (55)\n+15E8E2 Extra Length          0000 (0)\n+15E8E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1456B8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15E8E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-145707 PAYLOAD\n+15E91B PAYLOAD               XX\n \n-145A30 DATA DESCRIPTOR       08074B50 (134695760)\n-145A34 CRC                   FF2D0DF3 (4281142771)\n-145A38 Compressed Size       00000329 (809)\n-145A3C Uncompressed Size     000006C6 (1734)\n+15E91D DATA DESCRIPTOR       08074B50 (134695760)\n+15E921 CRC                   00000000 (0)\n+15E925 Compressed Size       00000002 (2)\n+15E929 Uncompressed Size     00000000 (0)\n \n-145A40 LOCAL HEADER #1240    04034B50 (67324752)\n-145A44 Extract Zip Spec      14 (20) '2.0'\n-145A45 Extract OS            00 (0) 'MS-DOS'\n-145A46 General Purpose Flag  0808 (2056)\n+15E92D LOCAL HEADER #1240    04034B50 (67324752)\n+15E931 Extract Zip Spec      14 (20) '2.0'\n+15E932 Extract OS            00 (0) 'MS-DOS'\n+15E933 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-145A48 Compression Method    0008 (8) 'Deflated'\n-145A4A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-145A4E CRC                   00000000 (0)\n-145A52 Compressed Size       00000000 (0)\n-145A56 Uncompressed Size     00000000 (0)\n-145A5A Filename Length       002B (43)\n-145A5C Extra Length          0000 (0)\n-145A5E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15E935 Compression Method    0008 (8) 'Deflated'\n+15E937 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15E93B CRC                   00000000 (0)\n+15E93F Compressed Size       00000000 (0)\n+15E943 Uncompressed Size     00000000 (0)\n+15E947 Filename Length       003E (62)\n+15E949 Extra Length          0000 (0)\n+15E94B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x145A5E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15E94B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-145A89 PAYLOAD               XX\n+15E989 PAYLOAD\n \n-145A8B DATA DESCRIPTOR       08074B50 (134695760)\n-145A8F CRC                   00000000 (0)\n-145A93 Compressed Size       00000002 (2)\n-145A97 Uncompressed Size     00000000 (0)\n+15ED3D DATA DESCRIPTOR       08074B50 (134695760)\n+15ED41 CRC                   1F6FA72F (527410991)\n+15ED45 Compressed Size       000003B4 (948)\n+15ED49 Uncompressed Size     00000B68 (2920)\n \n-145A9B LOCAL HEADER #1241    04034B50 (67324752)\n-145A9F Extract Zip Spec      14 (20) '2.0'\n-145AA0 Extract OS            00 (0) 'MS-DOS'\n-145AA1 General Purpose Flag  0808 (2056)\n+15ED4D LOCAL HEADER #1241    04034B50 (67324752)\n+15ED51 Extract Zip Spec      14 (20) '2.0'\n+15ED52 Extract OS            00 (0) 'MS-DOS'\n+15ED53 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-145AA3 Compression Method    0008 (8) 'Deflated'\n-145AA5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-145AA9 CRC                   00000000 (0)\n-145AAD Compressed Size       00000000 (0)\n-145AB1 Uncompressed Size     00000000 (0)\n-145AB5 Filename Length       003B (59)\n-145AB7 Extra Length          0000 (0)\n-145AB9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15ED55 Compression Method    0008 (8) 'Deflated'\n+15ED57 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15ED5B CRC                   00000000 (0)\n+15ED5F Compressed Size       00000000 (0)\n+15ED63 Uncompressed Size     00000000 (0)\n+15ED67 Filename Length       0045 (69)\n+15ED69 Extra Length          0000 (0)\n+15ED6B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x145AB9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15ED6B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-145AF4 PAYLOAD\n+15EDB0 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-145D7E DATA DESCRIPTOR       08074B50 (134695760)\n-145D82 CRC                   FC72AE7D (4235374205)\n-145D86 Compressed Size       0000028A (650)\n-145D8A Uncompressed Size     00000523 (1315)\n+15EDFB DATA DESCRIPTOR       08074B50 (134695760)\n+15EDFF CRC                   0BF987D1 (200902609)\n+15EE03 Compressed Size       0000004B (75)\n+15EE07 Uncompressed Size     0000004D (77)\n \n-145D8E LOCAL HEADER #1242    04034B50 (67324752)\n-145D92 Extract Zip Spec      14 (20) '2.0'\n-145D93 Extract OS            00 (0) 'MS-DOS'\n-145D94 General Purpose Flag  0808 (2056)\n+15EE0B LOCAL HEADER #1242    04034B50 (67324752)\n+15EE0F Extract Zip Spec      14 (20) '2.0'\n+15EE10 Extract OS            00 (0) 'MS-DOS'\n+15EE11 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-145D96 Compression Method    0008 (8) 'Deflated'\n-145D98 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-145D9C CRC                   00000000 (0)\n-145DA0 Compressed Size       00000000 (0)\n-145DA4 Uncompressed Size     00000000 (0)\n-145DA8 Filename Length       003D (61)\n-145DAA Extra Length          0000 (0)\n-145DAC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+15EE13 Compression Method    0008 (8) 'Deflated'\n+15EE15 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15EE19 CRC                   00000000 (0)\n+15EE1D Compressed Size       00000000 (0)\n+15EE21 Uncompressed Size     00000000 (0)\n+15EE25 Filename Length       0024 (36)\n+15EE27 Extra Length          0000 (0)\n+15EE29 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x145DAC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15EE29: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-145DE9 PAYLOAD\n+15EE4D PAYLOAD               XX\n \n-1463FF DATA DESCRIPTOR       08074B50 (134695760)\n-146403 CRC                   DD3F3E44 (3711909444)\n-146407 Compressed Size       00000616 (1558)\n-14640B Uncompressed Size     00001567 (5479)\n+15EE4F DATA DESCRIPTOR       08074B50 (134695760)\n+15EE53 CRC                   00000000 (0)\n+15EE57 Compressed Size       00000002 (2)\n+15EE5B Uncompressed Size     00000000 (0)\n \n-14640F LOCAL HEADER #1243    04034B50 (67324752)\n-146413 Extract Zip Spec      14 (20) '2.0'\n-146414 Extract OS            00 (0) 'MS-DOS'\n-146415 General Purpose Flag  0808 (2056)\n+15EE5F LOCAL HEADER #1243    04034B50 (67324752)\n+15EE63 Extract Zip Spec      14 (20) '2.0'\n+15EE64 Extract OS            00 (0) 'MS-DOS'\n+15EE65 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-146417 Compression Method    0008 (8) 'Deflated'\n-146419 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14641D CRC                   00000000 (0)\n-146421 Compressed Size       00000000 (0)\n-146425 Uncompressed Size     00000000 (0)\n-146429 Filename Length       0015 (21)\n-14642B Extra Length          0000 (0)\n-14642D Filename              'XXXXXXXXXXXXXXXXXXXXX'\n+15EE67 Compression Method    0008 (8) 'Deflated'\n+15EE69 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15EE6D CRC                   00000000 (0)\n+15EE71 Compressed Size       00000000 (0)\n+15EE75 Uncompressed Size     00000000 (0)\n+15EE79 Filename Length       003A (58)\n+15EE7B Extra Length          0000 (0)\n+15EE7D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14642D: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15EE7D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-146442 PAYLOAD               XX\n+15EEB7 PAYLOAD\n \n-146444 DATA DESCRIPTOR       08074B50 (134695760)\n-146448 CRC                   00000000 (0)\n-14644C Compressed Size       00000002 (2)\n-146450 Uncompressed Size     00000000 (0)\n+15FD28 DATA DESCRIPTOR       08074B50 (134695760)\n+15FD2C CRC                   E0604599 (3764405657)\n+15FD30 Compressed Size       00000E71 (3697)\n+15FD34 Uncompressed Size     00004154 (16724)\n \n-146454 LOCAL HEADER #1244    04034B50 (67324752)\n-146458 Extract Zip Spec      14 (20) '2.0'\n-146459 Extract OS            00 (0) 'MS-DOS'\n-14645A General Purpose Flag  0808 (2056)\n+15FD38 LOCAL HEADER #1244    04034B50 (67324752)\n+15FD3C Extract Zip Spec      14 (20) '2.0'\n+15FD3D Extract OS            00 (0) 'MS-DOS'\n+15FD3E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14645C Compression Method    0008 (8) 'Deflated'\n-14645E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-146462 CRC                   00000000 (0)\n-146466 Compressed Size       00000000 (0)\n-14646A Uncompressed Size     00000000 (0)\n-14646E Filename Length       0019 (25)\n-146470 Extra Length          0000 (0)\n-146472 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+15FD40 Compression Method    0008 (8) 'Deflated'\n+15FD42 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+15FD46 CRC                   00000000 (0)\n+15FD4A Compressed Size       00000000 (0)\n+15FD4E Uncompressed Size     00000000 (0)\n+15FD52 Filename Length       0041 (65)\n+15FD54 Extra Length          0000 (0)\n+15FD56 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x146472: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x15FD56: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14648B PAYLOAD               XX\n+15FD97 PAYLOAD\n \n-14648D DATA DESCRIPTOR       08074B50 (134695760)\n-146491 CRC                   00000000 (0)\n-146495 Compressed Size       00000002 (2)\n-146499 Uncompressed Size     00000000 (0)\n+160006 DATA DESCRIPTOR       08074B50 (134695760)\n+16000A CRC                   20C4D90B (549771531)\n+16000E Compressed Size       0000026F (623)\n+160012 Uncompressed Size     000004E4 (1252)\n \n-14649D LOCAL HEADER #1245    04034B50 (67324752)\n-1464A1 Extract Zip Spec      14 (20) '2.0'\n-1464A2 Extract OS            00 (0) 'MS-DOS'\n-1464A3 General Purpose Flag  0808 (2056)\n+160016 LOCAL HEADER #1245    04034B50 (67324752)\n+16001A Extract Zip Spec      14 (20) '2.0'\n+16001B Extract OS            00 (0) 'MS-DOS'\n+16001C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1464A5 Compression Method    0008 (8) 'Deflated'\n-1464A7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1464AB CRC                   00000000 (0)\n-1464AF Compressed Size       00000000 (0)\n-1464B3 Uncompressed Size     00000000 (0)\n-1464B7 Filename Length       0022 (34)\n-1464B9 Extra Length          0000 (0)\n-1464BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16001E Compression Method    0008 (8) 'Deflated'\n+160020 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+160024 CRC                   00000000 (0)\n+160028 Compressed Size       00000000 (0)\n+16002C Uncompressed Size     00000000 (0)\n+160030 Filename Length       0042 (66)\n+160032 Extra Length          0000 (0)\n+160034 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1464BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x160034: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1464DD PAYLOAD               XX\n+160076 PAYLOAD\n \n-1464DF DATA DESCRIPTOR       08074B50 (134695760)\n-1464E3 CRC                   00000000 (0)\n-1464E7 Compressed Size       00000002 (2)\n-1464EB Uncompressed Size     00000000 (0)\n+16039D DATA DESCRIPTOR       08074B50 (134695760)\n+1603A1 CRC                   BE10FD6D (3188784493)\n+1603A5 Compressed Size       00000327 (807)\n+1603A9 Uncompressed Size     000007CE (1998)\n \n-1464EF LOCAL HEADER #1246    04034B50 (67324752)\n-1464F3 Extract Zip Spec      14 (20) '2.0'\n-1464F4 Extract OS            00 (0) 'MS-DOS'\n-1464F5 General Purpose Flag  0808 (2056)\n+1603AD LOCAL HEADER #1246    04034B50 (67324752)\n+1603B1 Extract Zip Spec      14 (20) '2.0'\n+1603B2 Extract OS            00 (0) 'MS-DOS'\n+1603B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1464F7 Compression Method    0008 (8) 'Deflated'\n-1464F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1464FD CRC                   00000000 (0)\n-146501 Compressed Size       00000000 (0)\n-146505 Uncompressed Size     00000000 (0)\n-146509 Filename Length       0029 (41)\n-14650B Extra Length          0000 (0)\n-14650D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1603B5 Compression Method    0008 (8) 'Deflated'\n+1603B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1603BB CRC                   00000000 (0)\n+1603BF Compressed Size       00000000 (0)\n+1603C3 Uncompressed Size     00000000 (0)\n+1603C7 Filename Length       0039 (57)\n+1603C9 Extra Length          0000 (0)\n+1603CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14650D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1603CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-146536 PAYLOAD               XX\n+160404 PAYLOAD               XX\n \n-146538 DATA DESCRIPTOR       08074B50 (134695760)\n-14653C CRC                   00000000 (0)\n-146540 Compressed Size       00000002 (2)\n-146544 Uncompressed Size     00000000 (0)\n+160406 DATA DESCRIPTOR       08074B50 (134695760)\n+16040A CRC                   00000000 (0)\n+16040E Compressed Size       00000002 (2)\n+160412 Uncompressed Size     00000000 (0)\n \n-146548 LOCAL HEADER #1247    04034B50 (67324752)\n-14654C Extract Zip Spec      14 (20) '2.0'\n-14654D Extract OS            00 (0) 'MS-DOS'\n-14654E General Purpose Flag  0808 (2056)\n+160416 LOCAL HEADER #1247    04034B50 (67324752)\n+16041A Extract Zip Spec      14 (20) '2.0'\n+16041B Extract OS            00 (0) 'MS-DOS'\n+16041C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-146550 Compression Method    0008 (8) 'Deflated'\n-146552 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-146556 CRC                   00000000 (0)\n-14655A Compressed Size       00000000 (0)\n-14655E Uncompressed Size     00000000 (0)\n-146562 Filename Length       003C (60)\n-146564 Extra Length          0000 (0)\n-146566 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16041E Compression Method    0008 (8) 'Deflated'\n+160420 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+160424 CRC                   00000000 (0)\n+160428 Compressed Size       00000000 (0)\n+16042C Uncompressed Size     00000000 (0)\n+160430 Filename Length       0040 (64)\n+160432 Extra Length          0000 (0)\n+160434 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x146566: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x160434: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1465A2 PAYLOAD\n+160474 PAYLOAD\n \n-146E73 DATA DESCRIPTOR       08074B50 (134695760)\n-146E77 CRC                   D1A0D101 (3516977409)\n-146E7B Compressed Size       000008D1 (2257)\n-146E7F Uncompressed Size     00001DEF (7663)\n+1607D0 DATA DESCRIPTOR       08074B50 (134695760)\n+1607D4 CRC                   0FDE28B3 (266217651)\n+1607D8 Compressed Size       0000035C (860)\n+1607DC Uncompressed Size     0000079F (1951)\n \n-146E83 LOCAL HEADER #1248    04034B50 (67324752)\n-146E87 Extract Zip Spec      14 (20) '2.0'\n-146E88 Extract OS            00 (0) 'MS-DOS'\n-146E89 General Purpose Flag  0808 (2056)\n+1607E0 LOCAL HEADER #1248    04034B50 (67324752)\n+1607E4 Extract Zip Spec      14 (20) '2.0'\n+1607E5 Extract OS            00 (0) 'MS-DOS'\n+1607E6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-146E8B Compression Method    0008 (8) 'Deflated'\n-146E8D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-146E91 CRC                   00000000 (0)\n-146E95 Compressed Size       00000000 (0)\n-146E99 Uncompressed Size     00000000 (0)\n-146E9D Filename Length       0044 (68)\n-146E9F Extra Length          0000 (0)\n-146EA1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1607E8 Compression Method    0008 (8) 'Deflated'\n+1607EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1607EE CRC                   00000000 (0)\n+1607F2 Compressed Size       00000000 (0)\n+1607F6 Uncompressed Size     00000000 (0)\n+1607FA Filename Length       0047 (71)\n+1607FC Extra Length          0000 (0)\n+1607FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x146EA1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1607FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-146EE5 PAYLOAD\n+160845 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-1474D8 DATA DESCRIPTOR       08074B50 (134695760)\n-1474DC CRC                   DF3DF190 (3745378704)\n-1474E0 Compressed Size       000005F3 (1523)\n-1474E4 Uncompressed Size     000011B2 (4530)\n+160892 DATA DESCRIPTOR       08074B50 (134695760)\n+160896 CRC                   30B775F3 (817329651)\n+16089A Compressed Size       0000004D (77)\n+16089E Uncompressed Size     0000004F (79)\n \n-1474E8 LOCAL HEADER #1249    04034B50 (67324752)\n-1474EC Extract Zip Spec      14 (20) '2.0'\n-1474ED Extract OS            00 (0) 'MS-DOS'\n-1474EE General Purpose Flag  0808 (2056)\n+1608A2 LOCAL HEADER #1249    04034B50 (67324752)\n+1608A6 Extract Zip Spec      14 (20) '2.0'\n+1608A7 Extract OS            00 (0) 'MS-DOS'\n+1608A8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1474F0 Compression Method    0008 (8) 'Deflated'\n-1474F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1474F6 CRC                   00000000 (0)\n-1474FA Compressed Size       00000000 (0)\n-1474FE Uncompressed Size     00000000 (0)\n-147502 Filename Length       0023 (35)\n-147504 Extra Length          0000 (0)\n-147506 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1608AA Compression Method    0008 (8) 'Deflated'\n+1608AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1608B0 CRC                   00000000 (0)\n+1608B4 Compressed Size       00000000 (0)\n+1608B8 Uncompressed Size     00000000 (0)\n+1608BC Filename Length       0024 (36)\n+1608BE Extra Length          0000 (0)\n+1608C0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x147506: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1608C0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-147529 PAYLOAD               XX\n+1608E4 PAYLOAD               XX\n \n-14752B DATA DESCRIPTOR       08074B50 (134695760)\n-14752F CRC                   00000000 (0)\n-147533 Compressed Size       00000002 (2)\n-147537 Uncompressed Size     00000000 (0)\n+1608E6 DATA DESCRIPTOR       08074B50 (134695760)\n+1608EA CRC                   00000000 (0)\n+1608EE Compressed Size       00000002 (2)\n+1608F2 Uncompressed Size     00000000 (0)\n \n-14753B LOCAL HEADER #1250    04034B50 (67324752)\n-14753F Extract Zip Spec      14 (20) '2.0'\n-147540 Extract OS            00 (0) 'MS-DOS'\n-147541 General Purpose Flag  0808 (2056)\n+1608F6 LOCAL HEADER #1250    04034B50 (67324752)\n+1608FA Extract Zip Spec      14 (20) '2.0'\n+1608FB Extract OS            00 (0) 'MS-DOS'\n+1608FC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-147543 Compression Method    0008 (8) 'Deflated'\n-147545 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-147549 CRC                   00000000 (0)\n-14754D Compressed Size       00000000 (0)\n-147551 Uncompressed Size     00000000 (0)\n-147555 Filename Length       003C (60)\n-147557 Extra Length          0000 (0)\n-147559 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1608FE Compression Method    0008 (8) 'Deflated'\n+160900 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+160904 CRC                   00000000 (0)\n+160908 Compressed Size       00000000 (0)\n+16090C Uncompressed Size     00000000 (0)\n+160910 Filename Length       003A (58)\n+160912 Extra Length          0000 (0)\n+160914 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x147559: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x160914: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-147595 PAYLOAD\n+16094E PAYLOAD\n \n-14799B DATA DESCRIPTOR       08074B50 (134695760)\n-14799F CRC                   210B2AE8 (554380008)\n-1479A3 Compressed Size       00000406 (1030)\n-1479A7 Uncompressed Size     00000A59 (2649)\n+160CBB DATA DESCRIPTOR       08074B50 (134695760)\n+160CBF CRC                   7F603610 (2137011728)\n+160CC3 Compressed Size       0000036D (877)\n+160CC7 Uncompressed Size     0000086B (2155)\n \n-1479AB LOCAL HEADER #1251    04034B50 (67324752)\n-1479AF Extract Zip Spec      14 (20) '2.0'\n-1479B0 Extract OS            00 (0) 'MS-DOS'\n-1479B1 General Purpose Flag  0808 (2056)\n+160CCB LOCAL HEADER #1251    04034B50 (67324752)\n+160CCF Extract Zip Spec      14 (20) '2.0'\n+160CD0 Extract OS            00 (0) 'MS-DOS'\n+160CD1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1479B3 Compression Method    0008 (8) 'Deflated'\n-1479B5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1479B9 CRC                   00000000 (0)\n-1479BD Compressed Size       00000000 (0)\n-1479C1 Uncompressed Size     00000000 (0)\n-1479C5 Filename Length       0032 (50)\n-1479C7 Extra Length          0000 (0)\n-1479C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+160CD3 Compression Method    0008 (8) 'Deflated'\n+160CD5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+160CD9 CRC                   00000000 (0)\n+160CDD Compressed Size       00000000 (0)\n+160CE1 Uncompressed Size     00000000 (0)\n+160CE5 Filename Length       003A (58)\n+160CE7 Extra Length          0000 (0)\n+160CE9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1479C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x160CE9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1479FB PAYLOAD\n+160D23 PAYLOAD\n \n-147BF4 DATA DESCRIPTOR       08074B50 (134695760)\n-147BF8 CRC                   C1CD2495 (3251446933)\n-147BFC Compressed Size       000001F9 (505)\n-147C00 Uncompressed Size     0000036C (876)\n+161A9D DATA DESCRIPTOR       08074B50 (134695760)\n+161AA1 CRC                   57271651 (1462179409)\n+161AA5 Compressed Size       00000D7A (3450)\n+161AA9 Uncompressed Size     00003A1F (14879)\n \n-147C04 LOCAL HEADER #1252    04034B50 (67324752)\n-147C08 Extract Zip Spec      14 (20) '2.0'\n-147C09 Extract OS            00 (0) 'MS-DOS'\n-147C0A General Purpose Flag  0808 (2056)\n+161AAD LOCAL HEADER #1252    04034B50 (67324752)\n+161AB1 Extract Zip Spec      14 (20) '2.0'\n+161AB2 Extract OS            00 (0) 'MS-DOS'\n+161AB3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-147C0C Compression Method    0008 (8) 'Deflated'\n-147C0E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-147C12 CRC                   00000000 (0)\n-147C16 Compressed Size       00000000 (0)\n-147C1A Uncompressed Size     00000000 (0)\n-147C1E Filename Length       0035 (53)\n-147C20 Extra Length          0000 (0)\n-147C22 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+161AB5 Compression Method    0008 (8) 'Deflated'\n+161AB7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+161ABB CRC                   00000000 (0)\n+161ABF Compressed Size       00000000 (0)\n+161AC3 Uncompressed Size     00000000 (0)\n+161AC7 Filename Length       0041 (65)\n+161AC9 Extra Length          0000 (0)\n+161ACB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x147C22: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x161ACB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-147C57 PAYLOAD\n+161B0C PAYLOAD\n \n-147FBC DATA DESCRIPTOR       08074B50 (134695760)\n-147FC0 CRC                   C06931B4 (3228119476)\n-147FC4 Compressed Size       00000365 (869)\n-147FC8 Uncompressed Size     0000079E (1950)\n+161DE4 DATA DESCRIPTOR       08074B50 (134695760)\n+161DE8 CRC                   E96DE12E (3916292398)\n+161DEC Compressed Size       000002D8 (728)\n+161DF0 Uncompressed Size     00000683 (1667)\n \n-147FCC LOCAL HEADER #1253    04034B50 (67324752)\n-147FD0 Extract Zip Spec      14 (20) '2.0'\n-147FD1 Extract OS            00 (0) 'MS-DOS'\n-147FD2 General Purpose Flag  0808 (2056)\n+161DF4 LOCAL HEADER #1253    04034B50 (67324752)\n+161DF8 Extract Zip Spec      14 (20) '2.0'\n+161DF9 Extract OS            00 (0) 'MS-DOS'\n+161DFA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-147FD4 Compression Method    0008 (8) 'Deflated'\n-147FD6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-147FDA CRC                   00000000 (0)\n-147FDE Compressed Size       00000000 (0)\n-147FE2 Uncompressed Size     00000000 (0)\n-147FE6 Filename Length       0033 (51)\n-147FE8 Extra Length          0000 (0)\n-147FEA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+161DFC Compression Method    0008 (8) 'Deflated'\n+161DFE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+161E02 CRC                   00000000 (0)\n+161E06 Compressed Size       00000000 (0)\n+161E0A Uncompressed Size     00000000 (0)\n+161E0E Filename Length       0042 (66)\n+161E10 Extra Length          0000 (0)\n+161E12 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x147FEA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x161E12: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14801D PAYLOAD\n+161E54 PAYLOAD\n \n-1485C1 DATA DESCRIPTOR       08074B50 (134695760)\n-1485C5 CRC                   89D2048F (2312242319)\n-1485C9 Compressed Size       000005A4 (1444)\n-1485CD Uncompressed Size     00000FE5 (4069)\n+1626C7 DATA DESCRIPTOR       08074B50 (134695760)\n+1626CB CRC                   30ABB121 (816558369)\n+1626CF Compressed Size       00000873 (2163)\n+1626D3 Uncompressed Size     0000212F (8495)\n \n-1485D1 LOCAL HEADER #1254    04034B50 (67324752)\n-1485D5 Extract Zip Spec      14 (20) '2.0'\n-1485D6 Extract OS            00 (0) 'MS-DOS'\n-1485D7 General Purpose Flag  0808 (2056)\n+1626D7 LOCAL HEADER #1254    04034B50 (67324752)\n+1626DB Extract Zip Spec      14 (20) '2.0'\n+1626DC Extract OS            00 (0) 'MS-DOS'\n+1626DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1485D9 Compression Method    0008 (8) 'Deflated'\n-1485DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1485DF CRC                   00000000 (0)\n-1485E3 Compressed Size       00000000 (0)\n-1485E7 Uncompressed Size     00000000 (0)\n-1485EB Filename Length       0038 (56)\n-1485ED Extra Length          0000 (0)\n-1485EF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1626DF Compression Method    0008 (8) 'Deflated'\n+1626E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1626E5 CRC                   00000000 (0)\n+1626E9 Compressed Size       00000000 (0)\n+1626ED Uncompressed Size     00000000 (0)\n+1626F1 Filename Length       004F (79)\n+1626F3 Extra Length          0000 (0)\n+1626F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1485EF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1626F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-148627 PAYLOAD\n+162744 PAYLOAD\n \n-148FC1 DATA DESCRIPTOR       08074B50 (134695760)\n-148FC5 CRC                   8EC3CE19 (2395196953)\n-148FC9 Compressed Size       0000099A (2458)\n-148FCD Uncompressed Size     000028DB (10459)\n+162B7E DATA DESCRIPTOR       08074B50 (134695760)\n+162B82 CRC                   9A6BCF9D (2590756765)\n+162B86 Compressed Size       0000043A (1082)\n+162B8A Uncompressed Size     00000CBA (3258)\n \n-148FD1 LOCAL HEADER #1255    04034B50 (67324752)\n-148FD5 Extract Zip Spec      14 (20) '2.0'\n-148FD6 Extract OS            00 (0) 'MS-DOS'\n-148FD7 General Purpose Flag  0808 (2056)\n+162B8E LOCAL HEADER #1255    04034B50 (67324752)\n+162B92 Extract Zip Spec      14 (20) '2.0'\n+162B93 Extract OS            00 (0) 'MS-DOS'\n+162B94 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-148FD9 Compression Method    0008 (8) 'Deflated'\n-148FDB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-148FDF CRC                   00000000 (0)\n-148FE3 Compressed Size       00000000 (0)\n-148FE7 Uncompressed Size     00000000 (0)\n-148FEB Filename Length       0034 (52)\n-148FED Extra Length          0000 (0)\n-148FEF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+162B96 Compression Method    0008 (8) 'Deflated'\n+162B98 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+162B9C CRC                   00000000 (0)\n+162BA0 Compressed Size       00000000 (0)\n+162BA4 Uncompressed Size     00000000 (0)\n+162BA8 Filename Length       0049 (73)\n+162BAA Extra Length          0000 (0)\n+162BAC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x148FEF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x162BAC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-149023 PAYLOAD\n+162BF5 PAYLOAD\n \n-149A1F DATA DESCRIPTOR       08074B50 (134695760)\n-149A23 CRC                   672528B3 (1730488499)\n-149A27 Compressed Size       000009FC (2556)\n-149A2B Uncompressed Size     00002110 (8464)\n+162E64 DATA DESCRIPTOR       08074B50 (134695760)\n+162E68 CRC                   3AB6ADA6 (985050534)\n+162E6C Compressed Size       0000026F (623)\n+162E70 Uncompressed Size     000004F6 (1270)\n \n-149A2F LOCAL HEADER #1256    04034B50 (67324752)\n-149A33 Extract Zip Spec      14 (20) '2.0'\n-149A34 Extract OS            00 (0) 'MS-DOS'\n-149A35 General Purpose Flag  0808 (2056)\n+162E74 LOCAL HEADER #1256    04034B50 (67324752)\n+162E78 Extract Zip Spec      14 (20) '2.0'\n+162E79 Extract OS            00 (0) 'MS-DOS'\n+162E7A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-149A37 Compression Method    0008 (8) 'Deflated'\n-149A39 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-149A3D CRC                   00000000 (0)\n-149A41 Compressed Size       00000000 (0)\n-149A45 Uncompressed Size     00000000 (0)\n-149A49 Filename Length       0044 (68)\n-149A4B Extra Length          0000 (0)\n-149A4D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+162E7C Compression Method    0008 (8) 'Deflated'\n+162E7E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+162E82 CRC                   00000000 (0)\n+162E86 Compressed Size       00000000 (0)\n+162E8A Uncompressed Size     00000000 (0)\n+162E8E Filename Length       0029 (41)\n+162E90 Extra Length          0000 (0)\n+162E92 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x149A4D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x162E92: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-149A91 PAYLOAD\n+162EBB PAYLOAD               XX\n \n-149E7F DATA DESCRIPTOR       08074B50 (134695760)\n-149E83 CRC                   5C1106B9 (1544619705)\n-149E87 Compressed Size       000003EE (1006)\n-149E8B Uncompressed Size     00000A3E (2622)\n+162EBD DATA DESCRIPTOR       08074B50 (134695760)\n+162EC1 CRC                   00000000 (0)\n+162EC5 Compressed Size       00000002 (2)\n+162EC9 Uncompressed Size     00000000 (0)\n \n-149E8F LOCAL HEADER #1257    04034B50 (67324752)\n-149E93 Extract Zip Spec      14 (20) '2.0'\n-149E94 Extract OS            00 (0) 'MS-DOS'\n-149E95 General Purpose Flag  0808 (2056)\n+162ECD LOCAL HEADER #1257    04034B50 (67324752)\n+162ED1 Extract Zip Spec      14 (20) '2.0'\n+162ED2 Extract OS            00 (0) 'MS-DOS'\n+162ED3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-149E97 Compression Method    0008 (8) 'Deflated'\n-149E99 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-149E9D CRC                   00000000 (0)\n-149EA1 Compressed Size       00000000 (0)\n-149EA5 Uncompressed Size     00000000 (0)\n-149EA9 Filename Length       0030 (48)\n-149EAB Extra Length          0000 (0)\n-149EAD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+162ED5 Compression Method    0008 (8) 'Deflated'\n+162ED7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+162EDB CRC                   00000000 (0)\n+162EDF Compressed Size       00000000 (0)\n+162EE3 Uncompressed Size     00000000 (0)\n+162EE7 Filename Length       0044 (68)\n+162EE9 Extra Length          0000 (0)\n+162EEB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x149EAD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x162EEB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-149EDD PAYLOAD               XX\n+162F2F PAYLOAD\n \n-149EDF DATA DESCRIPTOR       08074B50 (134695760)\n-149EE3 CRC                   00000000 (0)\n-149EE7 Compressed Size       00000002 (2)\n-149EEB Uncompressed Size     00000000 (0)\n+163443 DATA DESCRIPTOR       08074B50 (134695760)\n+163447 CRC                   2502C8DF (620939487)\n+16344B Compressed Size       00000514 (1300)\n+16344F Uncompressed Size     00000CD7 (3287)\n \n-149EEF LOCAL HEADER #1258    04034B50 (67324752)\n-149EF3 Extract Zip Spec      14 (20) '2.0'\n-149EF4 Extract OS            00 (0) 'MS-DOS'\n-149EF5 General Purpose Flag  0808 (2056)\n+163453 LOCAL HEADER #1258    04034B50 (67324752)\n+163457 Extract Zip Spec      14 (20) '2.0'\n+163458 Extract OS            00 (0) 'MS-DOS'\n+163459 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-149EF7 Compression Method    0008 (8) 'Deflated'\n-149EF9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-149EFD CRC                   00000000 (0)\n-149F01 Compressed Size       00000000 (0)\n-149F05 Uncompressed Size     00000000 (0)\n-149F09 Filename Length       0046 (70)\n-149F0B Extra Length          0000 (0)\n-149F0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16345B Compression Method    0008 (8) 'Deflated'\n+16345D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+163461 CRC                   00000000 (0)\n+163465 Compressed Size       00000000 (0)\n+163469 Uncompressed Size     00000000 (0)\n+16346D Filename Length       0043 (67)\n+16346F Extra Length          0000 (0)\n+163471 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x149F0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x163471: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-149F53 PAYLOAD\n+1634B4 PAYLOAD\n \n-14A1AB DATA DESCRIPTOR       08074B50 (134695760)\n-14A1AF CRC                   1C86279A (478554010)\n-14A1B3 Compressed Size       00000258 (600)\n-14A1B7 Uncompressed Size     00000446 (1094)\n+163AAC DATA DESCRIPTOR       08074B50 (134695760)\n+163AB0 CRC                   B9A91D04 (3114867972)\n+163AB4 Compressed Size       000005F8 (1528)\n+163AB8 Uncompressed Size     000015CB (5579)\n \n-14A1BB LOCAL HEADER #1259    04034B50 (67324752)\n-14A1BF Extract Zip Spec      14 (20) '2.0'\n-14A1C0 Extract OS            00 (0) 'MS-DOS'\n-14A1C1 General Purpose Flag  0808 (2056)\n+163ABC LOCAL HEADER #1259    04034B50 (67324752)\n+163AC0 Extract Zip Spec      14 (20) '2.0'\n+163AC1 Extract OS            00 (0) 'MS-DOS'\n+163AC2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14A1C3 Compression Method    0008 (8) 'Deflated'\n-14A1C5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14A1C9 CRC                   00000000 (0)\n-14A1CD Compressed Size       00000000 (0)\n-14A1D1 Uncompressed Size     00000000 (0)\n-14A1D5 Filename Length       0045 (69)\n-14A1D7 Extra Length          0000 (0)\n-14A1D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+163AC4 Compression Method    0008 (8) 'Deflated'\n+163AC6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+163ACA CRC                   00000000 (0)\n+163ACE Compressed Size       00000000 (0)\n+163AD2 Uncompressed Size     00000000 (0)\n+163AD6 Filename Length       0039 (57)\n+163AD8 Extra Length          0000 (0)\n+163ADA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14A1D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x163ADA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14A21E PAYLOAD\n+163B13 PAYLOAD               XX\n \n-14A4B8 DATA DESCRIPTOR       08074B50 (134695760)\n-14A4BC CRC                   E37CC454 (3816604756)\n-14A4C0 Compressed Size       0000029A (666)\n-14A4C4 Uncompressed Size     000005B2 (1458)\n+163B15 DATA DESCRIPTOR       08074B50 (134695760)\n+163B19 CRC                   00000000 (0)\n+163B1D Compressed Size       00000002 (2)\n+163B21 Uncompressed Size     00000000 (0)\n \n-14A4C8 LOCAL HEADER #1260    04034B50 (67324752)\n-14A4CC Extract Zip Spec      14 (20) '2.0'\n-14A4CD Extract OS            00 (0) 'MS-DOS'\n-14A4CE General Purpose Flag  0808 (2056)\n+163B25 LOCAL HEADER #1260    04034B50 (67324752)\n+163B29 Extract Zip Spec      14 (20) '2.0'\n+163B2A Extract OS            00 (0) 'MS-DOS'\n+163B2B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14A4D0 Compression Method    0008 (8) 'Deflated'\n-14A4D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14A4D6 CRC                   00000000 (0)\n-14A4DA Compressed Size       00000000 (0)\n-14A4DE Uncompressed Size     00000000 (0)\n-14A4E2 Filename Length       004A (74)\n-14A4E4 Extra Length          0000 (0)\n-14A4E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+163B2D Compression Method    0008 (8) 'Deflated'\n+163B2F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+163B33 CRC                   00000000 (0)\n+163B37 Compressed Size       00000000 (0)\n+163B3B Uncompressed Size     00000000 (0)\n+163B3F Filename Length       0040 (64)\n+163B41 Extra Length          0000 (0)\n+163B43 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14A4E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x163B43: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14A530 PAYLOAD\n+163B83 PAYLOAD\n \n-14AB0E DATA DESCRIPTOR       08074B50 (134695760)\n-14AB12 CRC                   2C4E86BA (743343802)\n-14AB16 Compressed Size       000005DE (1502)\n-14AB1A Uncompressed Size     00001120 (4384)\n+163F15 DATA DESCRIPTOR       08074B50 (134695760)\n+163F19 CRC                   2D62C29D (761447069)\n+163F1D Compressed Size       00000392 (914)\n+163F21 Uncompressed Size     0000096E (2414)\n \n-14AB1E LOCAL HEADER #1261    04034B50 (67324752)\n-14AB22 Extract Zip Spec      14 (20) '2.0'\n-14AB23 Extract OS            00 (0) 'MS-DOS'\n-14AB24 General Purpose Flag  0808 (2056)\n+163F25 LOCAL HEADER #1261    04034B50 (67324752)\n+163F29 Extract Zip Spec      14 (20) '2.0'\n+163F2A Extract OS            00 (0) 'MS-DOS'\n+163F2B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14AB26 Compression Method    0008 (8) 'Deflated'\n-14AB28 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14AB2C CRC                   00000000 (0)\n-14AB30 Compressed Size       00000000 (0)\n-14AB34 Uncompressed Size     00000000 (0)\n-14AB38 Filename Length       0046 (70)\n-14AB3A Extra Length          0000 (0)\n-14AB3C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+163F2D Compression Method    0008 (8) 'Deflated'\n+163F2F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+163F33 CRC                   00000000 (0)\n+163F37 Compressed Size       00000000 (0)\n+163F3B Uncompressed Size     00000000 (0)\n+163F3F Filename Length       0047 (71)\n+163F41 Extra Length          0000 (0)\n+163F43 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14AB3C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x163F43: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14AB82 PAYLOAD\n+163F8A PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-14ADDA DATA DESCRIPTOR       08074B50 (134695760)\n-14ADDE CRC                   592F92C2 (1496289986)\n-14ADE2 Compressed Size       00000258 (600)\n-14ADE6 Uncompressed Size     00000446 (1094)\n+163FD7 DATA DESCRIPTOR       08074B50 (134695760)\n+163FDB CRC                   68C29EEA (1757585130)\n+163FDF Compressed Size       0000004D (77)\n+163FE3 Uncompressed Size     0000004F (79)\n \n-14ADEA LOCAL HEADER #1262    04034B50 (67324752)\n-14ADEE Extract Zip Spec      14 (20) '2.0'\n-14ADEF Extract OS            00 (0) 'MS-DOS'\n-14ADF0 General Purpose Flag  0808 (2056)\n+163FE7 LOCAL HEADER #1262    04034B50 (67324752)\n+163FEB Extract Zip Spec      14 (20) '2.0'\n+163FEC Extract OS            00 (0) 'MS-DOS'\n+163FED General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14ADF2 Compression Method    0008 (8) 'Deflated'\n-14ADF4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14ADF8 CRC                   00000000 (0)\n-14ADFC Compressed Size       00000000 (0)\n-14AE00 Uncompressed Size     00000000 (0)\n-14AE04 Filename Length       004A (74)\n-14AE06 Extra Length          0000 (0)\n-14AE08 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+163FEF Compression Method    0008 (8) 'Deflated'\n+163FF1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+163FF5 CRC                   00000000 (0)\n+163FF9 Compressed Size       00000000 (0)\n+163FFD Uncompressed Size     00000000 (0)\n+164001 Filename Length       0024 (36)\n+164003 Extra Length          0000 (0)\n+164005 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14AE08: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x164005: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14AE52 PAYLOAD\n+164029 PAYLOAD               XX\n \n-14B0B7 DATA DESCRIPTOR       08074B50 (134695760)\n-14B0BB CRC                   7BC2ED93 (2076372371)\n-14B0BF Compressed Size       00000265 (613)\n-14B0C3 Uncompressed Size     00000461 (1121)\n+16402B DATA DESCRIPTOR       08074B50 (134695760)\n+16402F CRC                   00000000 (0)\n+164033 Compressed Size       00000002 (2)\n+164037 Uncompressed Size     00000000 (0)\n \n-14B0C7 LOCAL HEADER #1263    04034B50 (67324752)\n-14B0CB Extract Zip Spec      14 (20) '2.0'\n-14B0CC Extract OS            00 (0) 'MS-DOS'\n-14B0CD General Purpose Flag  0808 (2056)\n+16403B LOCAL HEADER #1263    04034B50 (67324752)\n+16403F Extract Zip Spec      14 (20) '2.0'\n+164040 Extract OS            00 (0) 'MS-DOS'\n+164041 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14B0CF Compression Method    0008 (8) 'Deflated'\n-14B0D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14B0D5 CRC                   00000000 (0)\n-14B0D9 Compressed Size       00000000 (0)\n-14B0DD Uncompressed Size     00000000 (0)\n-14B0E1 Filename Length       0059 (89)\n-14B0E3 Extra Length          0000 (0)\n-14B0E5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+164043 Compression Method    0008 (8) 'Deflated'\n+164045 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+164049 CRC                   00000000 (0)\n+16404D Compressed Size       00000000 (0)\n+164051 Uncompressed Size     00000000 (0)\n+164055 Filename Length       0036 (54)\n+164057 Extra Length          0000 (0)\n+164059 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14B0E5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x164059: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14B13E PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+16408F PAYLOAD\n \n-14B17D DATA DESCRIPTOR       08074B50 (134695760)\n-14B181 CRC                   6F1FEDD0 (1864363472)\n-14B185 Compressed Size       0000003F (63)\n-14B189 Uncompressed Size     0000004D (77)\n+1642C4 DATA DESCRIPTOR       08074B50 (134695760)\n+1642C8 CRC                   CCE4DF99 (3437551513)\n+1642CC Compressed Size       00000235 (565)\n+1642D0 Uncompressed Size     000003E1 (993)\n \n-14B18D LOCAL HEADER #1264    04034B50 (67324752)\n-14B191 Extract Zip Spec      14 (20) '2.0'\n-14B192 Extract OS            00 (0) 'MS-DOS'\n-14B193 General Purpose Flag  0808 (2056)\n+1642D4 LOCAL HEADER #1264    04034B50 (67324752)\n+1642D8 Extract Zip Spec      14 (20) '2.0'\n+1642D9 Extract OS            00 (0) 'MS-DOS'\n+1642DA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14B195 Compression Method    0008 (8) 'Deflated'\n-14B197 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14B19B CRC                   00000000 (0)\n-14B19F Compressed Size       00000000 (0)\n-14B1A3 Uncompressed Size     00000000 (0)\n-14B1A7 Filename Length       0059 (89)\n-14B1A9 Extra Length          0000 (0)\n-14B1AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1642DC Compression Method    0008 (8) 'Deflated'\n+1642DE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1642E2 CRC                   00000000 (0)\n+1642E6 Compressed Size       00000000 (0)\n+1642EA Uncompressed Size     00000000 (0)\n+1642EE Filename Length       0035 (53)\n+1642F0 Extra Length          0000 (0)\n+1642F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14B1AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1642F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14B204 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+164327 PAYLOAD\n \n-14B243 DATA DESCRIPTOR       08074B50 (134695760)\n-14B247 CRC                   6F1FEDD0 (1864363472)\n-14B24B Compressed Size       0000003F (63)\n-14B24F Uncompressed Size     0000004D (77)\n+16456B DATA DESCRIPTOR       08074B50 (134695760)\n+16456F CRC                   E6F1CD7B (3874606459)\n+164573 Compressed Size       00000244 (580)\n+164577 Uncompressed Size     000003E8 (1000)\n \n-14B253 LOCAL HEADER #1265    04034B50 (67324752)\n-14B257 Extract Zip Spec      14 (20) '2.0'\n-14B258 Extract OS            00 (0) 'MS-DOS'\n-14B259 General Purpose Flag  0808 (2056)\n+16457B LOCAL HEADER #1265    04034B50 (67324752)\n+16457F Extract Zip Spec      14 (20) '2.0'\n+164580 Extract OS            00 (0) 'MS-DOS'\n+164581 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14B25B Compression Method    0008 (8) 'Deflated'\n-14B25D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14B261 CRC                   00000000 (0)\n-14B265 Compressed Size       00000000 (0)\n-14B269 Uncompressed Size     00000000 (0)\n-14B26D Filename Length       001A (26)\n-14B26F Extra Length          0000 (0)\n-14B271 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+164583 Compression Method    0008 (8) 'Deflated'\n+164585 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+164589 CRC                   00000000 (0)\n+16458D Compressed Size       00000000 (0)\n+164591 Uncompressed Size     00000000 (0)\n+164595 Filename Length       0032 (50)\n+164597 Extra Length          0000 (0)\n+164599 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14B271: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x164599: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14B28B PAYLOAD               XX\n+1645CB PAYLOAD\n \n-14B28D DATA DESCRIPTOR       08074B50 (134695760)\n-14B291 CRC                   00000000 (0)\n-14B295 Compressed Size       00000002 (2)\n-14B299 Uncompressed Size     00000000 (0)\n+16493D DATA DESCRIPTOR       08074B50 (134695760)\n+164941 CRC                   7BBE25FE (2076059134)\n+164945 Compressed Size       00000372 (882)\n+164949 Uncompressed Size     00000826 (2086)\n \n-14B29D LOCAL HEADER #1266    04034B50 (67324752)\n-14B2A1 Extract Zip Spec      14 (20) '2.0'\n-14B2A2 Extract OS            00 (0) 'MS-DOS'\n-14B2A3 General Purpose Flag  0808 (2056)\n+16494D LOCAL HEADER #1266    04034B50 (67324752)\n+164951 Extract Zip Spec      14 (20) '2.0'\n+164952 Extract OS            00 (0) 'MS-DOS'\n+164953 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14B2A5 Compression Method    0008 (8) 'Deflated'\n-14B2A7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14B2AB CRC                   00000000 (0)\n-14B2AF Compressed Size       00000000 (0)\n-14B2B3 Uncompressed Size     00000000 (0)\n-14B2B7 Filename Length       002E (46)\n-14B2B9 Extra Length          0000 (0)\n-14B2BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+164955 Compression Method    0008 (8) 'Deflated'\n+164957 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16495B CRC                   00000000 (0)\n+16495F Compressed Size       00000000 (0)\n+164963 Uncompressed Size     00000000 (0)\n+164967 Filename Length       0036 (54)\n+164969 Extra Length          0000 (0)\n+16496B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14B2BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16496B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14B2E9 PAYLOAD\n+1649A1 PAYLOAD\n \n-14B582 DATA DESCRIPTOR       08074B50 (134695760)\n-14B586 CRC                   D4B8B1A6 (3568873894)\n-14B58A Compressed Size       00000299 (665)\n-14B58E Uncompressed Size     00000520 (1312)\n+164BFB DATA DESCRIPTOR       08074B50 (134695760)\n+164BFF CRC                   3E36C27D (1043776125)\n+164C03 Compressed Size       0000025A (602)\n+164C07 Uncompressed Size     00000443 (1091)\n \n-14B592 LOCAL HEADER #1267    04034B50 (67324752)\n-14B596 Extract Zip Spec      14 (20) '2.0'\n-14B597 Extract OS            00 (0) 'MS-DOS'\n-14B598 General Purpose Flag  0808 (2056)\n+164C0B LOCAL HEADER #1267    04034B50 (67324752)\n+164C0F Extract Zip Spec      14 (20) '2.0'\n+164C10 Extract OS            00 (0) 'MS-DOS'\n+164C11 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14B59A Compression Method    0008 (8) 'Deflated'\n-14B59C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14B5A0 CRC                   00000000 (0)\n-14B5A4 Compressed Size       00000000 (0)\n-14B5A8 Uncompressed Size     00000000 (0)\n-14B5AC Filename Length       0028 (40)\n-14B5AE Extra Length          0000 (0)\n-14B5B0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+164C13 Compression Method    0008 (8) 'Deflated'\n+164C15 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+164C19 CRC                   00000000 (0)\n+164C1D Compressed Size       00000000 (0)\n+164C21 Uncompressed Size     00000000 (0)\n+164C25 Filename Length       0038 (56)\n+164C27 Extra Length          0000 (0)\n+164C29 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14B5B0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x164C29: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14B5D8 PAYLOAD\n+164C61 PAYLOAD\n \n-14BA15 DATA DESCRIPTOR       08074B50 (134695760)\n-14BA19 CRC                   9303661A (2466473498)\n-14BA1D Compressed Size       0000043D (1085)\n-14BA21 Uncompressed Size     00000A6D (2669)\n+164F90 DATA DESCRIPTOR       08074B50 (134695760)\n+164F94 CRC                   9FD06EC6 (2681237190)\n+164F98 Compressed Size       0000032F (815)\n+164F9C Uncompressed Size     0000083A (2106)\n \n-14BA25 LOCAL HEADER #1268    04034B50 (67324752)\n-14BA29 Extract Zip Spec      14 (20) '2.0'\n-14BA2A Extract OS            00 (0) 'MS-DOS'\n-14BA2B General Purpose Flag  0808 (2056)\n+164FA0 LOCAL HEADER #1268    04034B50 (67324752)\n+164FA4 Extract Zip Spec      14 (20) '2.0'\n+164FA5 Extract OS            00 (0) 'MS-DOS'\n+164FA6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14BA2D Compression Method    0008 (8) 'Deflated'\n-14BA2F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14BA33 CRC                   00000000 (0)\n-14BA37 Compressed Size       00000000 (0)\n-14BA3B Uncompressed Size     00000000 (0)\n-14BA3F Filename Length       0036 (54)\n-14BA41 Extra Length          0000 (0)\n-14BA43 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+164FA8 Compression Method    0008 (8) 'Deflated'\n+164FAA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+164FAE CRC                   00000000 (0)\n+164FB2 Compressed Size       00000000 (0)\n+164FB6 Uncompressed Size     00000000 (0)\n+164FBA Filename Length       003D (61)\n+164FBC Extra Length          0000 (0)\n+164FBE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14BA43: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x164FBE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14BA79 PAYLOAD\n+164FFB PAYLOAD\n \n-14BE9A DATA DESCRIPTOR       08074B50 (134695760)\n-14BE9E CRC                   8391A9ED (2207361517)\n-14BEA2 Compressed Size       00000421 (1057)\n-14BEA6 Uncompressed Size     00001419 (5145)\n+165279 DATA DESCRIPTOR       08074B50 (134695760)\n+16527D CRC                   AA83E634 (2860770868)\n+165281 Compressed Size       0000027E (638)\n+165285 Uncompressed Size     000004C3 (1219)\n \n-14BEAA LOCAL HEADER #1269    04034B50 (67324752)\n-14BEAE Extract Zip Spec      14 (20) '2.0'\n-14BEAF Extract OS            00 (0) 'MS-DOS'\n-14BEB0 General Purpose Flag  0808 (2056)\n+165289 LOCAL HEADER #1269    04034B50 (67324752)\n+16528D Extract Zip Spec      14 (20) '2.0'\n+16528E Extract OS            00 (0) 'MS-DOS'\n+16528F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14BEB2 Compression Method    0008 (8) 'Deflated'\n-14BEB4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14BEB8 CRC                   00000000 (0)\n-14BEBC Compressed Size       00000000 (0)\n-14BEC0 Uncompressed Size     00000000 (0)\n-14BEC4 Filename Length       002D (45)\n-14BEC6 Extra Length          0000 (0)\n-14BEC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+165291 Compression Method    0008 (8) 'Deflated'\n+165293 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+165297 CRC                   00000000 (0)\n+16529B Compressed Size       00000000 (0)\n+16529F Uncompressed Size     00000000 (0)\n+1652A3 Filename Length       002C (44)\n+1652A5 Extra Length          0000 (0)\n+1652A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14BEC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1652A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14BEF5 PAYLOAD\n+1652D3 PAYLOAD               XX\n \n-14C3B4 DATA DESCRIPTOR       08074B50 (134695760)\n-14C3B8 CRC                   4C19B653 (1276753491)\n-14C3BC Compressed Size       000004BF (1215)\n-14C3C0 Uncompressed Size     00000A34 (2612)\n+1652D5 DATA DESCRIPTOR       08074B50 (134695760)\n+1652D9 CRC                   00000000 (0)\n+1652DD Compressed Size       00000002 (2)\n+1652E1 Uncompressed Size     00000000 (0)\n \n-14C3C4 LOCAL HEADER #1270    04034B50 (67324752)\n-14C3C8 Extract Zip Spec      14 (20) '2.0'\n-14C3C9 Extract OS            00 (0) 'MS-DOS'\n-14C3CA General Purpose Flag  0808 (2056)\n+1652E5 LOCAL HEADER #1270    04034B50 (67324752)\n+1652E9 Extract Zip Spec      14 (20) '2.0'\n+1652EA Extract OS            00 (0) 'MS-DOS'\n+1652EB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14C3CC Compression Method    0008 (8) 'Deflated'\n-14C3CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14C3D2 CRC                   00000000 (0)\n-14C3D6 Compressed Size       00000000 (0)\n-14C3DA Uncompressed Size     00000000 (0)\n-14C3DE Filename Length       0027 (39)\n-14C3E0 Extra Length          0000 (0)\n-14C3E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1652ED Compression Method    0008 (8) 'Deflated'\n+1652EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1652F3 CRC                   00000000 (0)\n+1652F7 Compressed Size       00000000 (0)\n+1652FB Uncompressed Size     00000000 (0)\n+1652FF Filename Length       0047 (71)\n+165301 Extra Length          0000 (0)\n+165303 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14C3E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x165303: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14C409 PAYLOAD\n+16534A PAYLOAD\n \n-14C699 DATA DESCRIPTOR       08074B50 (134695760)\n-14C69D CRC                   92D33C56 (2463317078)\n-14C6A1 Compressed Size       00000290 (656)\n-14C6A5 Uncompressed Size     0000053A (1338)\n+1660ED DATA DESCRIPTOR       08074B50 (134695760)\n+1660F1 CRC                   C08A2F01 (3230281473)\n+1660F5 Compressed Size       00000DA3 (3491)\n+1660F9 Uncompressed Size     000042B4 (17076)\n \n-14C6A9 LOCAL HEADER #1271    04034B50 (67324752)\n-14C6AD Extract Zip Spec      14 (20) '2.0'\n-14C6AE Extract OS            00 (0) 'MS-DOS'\n-14C6AF General Purpose Flag  0808 (2056)\n+1660FD LOCAL HEADER #1271    04034B50 (67324752)\n+166101 Extract Zip Spec      14 (20) '2.0'\n+166102 Extract OS            00 (0) 'MS-DOS'\n+166103 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14C6B1 Compression Method    0008 (8) 'Deflated'\n-14C6B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14C6B7 CRC                   00000000 (0)\n-14C6BB Compressed Size       00000000 (0)\n-14C6BF Uncompressed Size     00000000 (0)\n-14C6C3 Filename Length       002E (46)\n-14C6C5 Extra Length          0000 (0)\n-14C6C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+166105 Compression Method    0008 (8) 'Deflated'\n+166107 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16610B CRC                   00000000 (0)\n+16610F Compressed Size       00000000 (0)\n+166113 Uncompressed Size     00000000 (0)\n+166117 Filename Length       004C (76)\n+166119 Extra Length          0000 (0)\n+16611B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14C6C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16611B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14C6F5 PAYLOAD\n+166167 PAYLOAD\n \n-14CAB0 DATA DESCRIPTOR       08074B50 (134695760)\n-14CAB4 CRC                   8AC6D7E1 (2328287201)\n-14CAB8 Compressed Size       000003BB (955)\n-14CABC Uncompressed Size     000007D3 (2003)\n+1663D8 DATA DESCRIPTOR       08074B50 (134695760)\n+1663DC CRC                   7A12603D (2048024637)\n+1663E0 Compressed Size       00000271 (625)\n+1663E4 Uncompressed Size     000004FC (1276)\n \n-14CAC0 LOCAL HEADER #1272    04034B50 (67324752)\n-14CAC4 Extract Zip Spec      14 (20) '2.0'\n-14CAC5 Extract OS            00 (0) 'MS-DOS'\n-14CAC6 General Purpose Flag  0808 (2056)\n+1663E8 LOCAL HEADER #1272    04034B50 (67324752)\n+1663EC Extract Zip Spec      14 (20) '2.0'\n+1663ED Extract OS            00 (0) 'MS-DOS'\n+1663EE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14CAC8 Compression Method    0008 (8) 'Deflated'\n-14CACA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14CACE CRC                   00000000 (0)\n-14CAD2 Compressed Size       00000000 (0)\n-14CAD6 Uncompressed Size     00000000 (0)\n-14CADA Filename Length       0035 (53)\n-14CADC Extra Length          0000 (0)\n-14CADE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1663F0 Compression Method    0008 (8) 'Deflated'\n+1663F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1663F6 CRC                   00000000 (0)\n+1663FA Compressed Size       00000000 (0)\n+1663FE Uncompressed Size     00000000 (0)\n+166402 Filename Length       002C (44)\n+166404 Extra Length          0000 (0)\n+166406 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14CADE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x166406: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14CB13 PAYLOAD\n+166432 PAYLOAD               XX\n \n-14CDD5 DATA DESCRIPTOR       08074B50 (134695760)\n-14CDD9 CRC                   BDE39003 (3185807363)\n-14CDDD Compressed Size       000002C2 (706)\n-14CDE1 Uncompressed Size     000005F9 (1529)\n+166434 DATA DESCRIPTOR       08074B50 (134695760)\n+166438 CRC                   00000000 (0)\n+16643C Compressed Size       00000002 (2)\n+166440 Uncompressed Size     00000000 (0)\n \n-14CDE5 LOCAL HEADER #1273    04034B50 (67324752)\n-14CDE9 Extract Zip Spec      14 (20) '2.0'\n-14CDEA Extract OS            00 (0) 'MS-DOS'\n-14CDEB General Purpose Flag  0808 (2056)\n+166444 LOCAL HEADER #1273    04034B50 (67324752)\n+166448 Extract Zip Spec      14 (20) '2.0'\n+166449 Extract OS            00 (0) 'MS-DOS'\n+16644A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14CDED Compression Method    0008 (8) 'Deflated'\n-14CDEF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14CDF3 CRC                   00000000 (0)\n-14CDF7 Compressed Size       00000000 (0)\n-14CDFB Uncompressed Size     00000000 (0)\n-14CDFF Filename Length       002E (46)\n-14CE01 Extra Length          0000 (0)\n-14CE03 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16644C Compression Method    0008 (8) 'Deflated'\n+16644E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+166452 CRC                   00000000 (0)\n+166456 Compressed Size       00000000 (0)\n+16645A Uncompressed Size     00000000 (0)\n+16645E Filename Length       0048 (72)\n+166460 Extra Length          0000 (0)\n+166462 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14CE03: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x166462: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14CE31 PAYLOAD\n+1664AA PAYLOAD\n \n-14D56A DATA DESCRIPTOR       08074B50 (134695760)\n-14D56E CRC                   6C2E2D81 (1814965633)\n-14D572 Compressed Size       00000739 (1849)\n-14D576 Uncompressed Size     00001602 (5634)\n+166BB6 DATA DESCRIPTOR       08074B50 (134695760)\n+166BBA CRC                   72360194 (1916141972)\n+166BBE Compressed Size       0000070C (1804)\n+166BC2 Uncompressed Size     00001FE6 (8166)\n \n-14D57A LOCAL HEADER #1274    04034B50 (67324752)\n-14D57E Extract Zip Spec      14 (20) '2.0'\n-14D57F Extract OS            00 (0) 'MS-DOS'\n-14D580 General Purpose Flag  0808 (2056)\n+166BC6 LOCAL HEADER #1274    04034B50 (67324752)\n+166BCA Extract Zip Spec      14 (20) '2.0'\n+166BCB Extract OS            00 (0) 'MS-DOS'\n+166BCC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14D582 Compression Method    0008 (8) 'Deflated'\n-14D584 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14D588 CRC                   00000000 (0)\n-14D58C Compressed Size       00000000 (0)\n-14D590 Uncompressed Size     00000000 (0)\n-14D594 Filename Length       0036 (54)\n-14D596 Extra Length          0000 (0)\n-14D598 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+166BCE Compression Method    0008 (8) 'Deflated'\n+166BD0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+166BD4 CRC                   00000000 (0)\n+166BD8 Compressed Size       00000000 (0)\n+166BDC Uncompressed Size     00000000 (0)\n+166BE0 Filename Length       004D (77)\n+166BE2 Extra Length          0000 (0)\n+166BE4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14D598: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x166BE4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14D5CE PAYLOAD\n+166C31 PAYLOAD\n \n-14D818 DATA DESCRIPTOR       08074B50 (134695760)\n-14D81C CRC                   350310AE (889393326)\n-14D820 Compressed Size       0000024A (586)\n-14D824 Uncompressed Size     0000048E (1166)\n+16740A DATA DESCRIPTOR       08074B50 (134695760)\n+16740E CRC                   9AC76181 (2596757889)\n+167412 Compressed Size       000007D9 (2009)\n+167416 Uncompressed Size     00001C36 (7222)\n \n-14D828 LOCAL HEADER #1275    04034B50 (67324752)\n-14D82C Extract Zip Spec      14 (20) '2.0'\n-14D82D Extract OS            00 (0) 'MS-DOS'\n-14D82E General Purpose Flag  0808 (2056)\n+16741A LOCAL HEADER #1275    04034B50 (67324752)\n+16741E Extract Zip Spec      14 (20) '2.0'\n+16741F Extract OS            00 (0) 'MS-DOS'\n+167420 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14D830 Compression Method    0008 (8) 'Deflated'\n-14D832 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14D836 CRC                   00000000 (0)\n-14D83A Compressed Size       00000000 (0)\n-14D83E Uncompressed Size     00000000 (0)\n-14D842 Filename Length       0021 (33)\n-14D844 Extra Length          0000 (0)\n-14D846 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+167422 Compression Method    0008 (8) 'Deflated'\n+167424 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+167428 CRC                   00000000 (0)\n+16742C Compressed Size       00000000 (0)\n+167430 Uncompressed Size     00000000 (0)\n+167434 Filename Length       0039 (57)\n+167436 Extra Length          0000 (0)\n+167438 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14D846: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x167438: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14D867 PAYLOAD               XX\n+167471 PAYLOAD               XX\n \n-14D869 DATA DESCRIPTOR       08074B50 (134695760)\n-14D86D CRC                   00000000 (0)\n-14D871 Compressed Size       00000002 (2)\n-14D875 Uncompressed Size     00000000 (0)\n+167473 DATA DESCRIPTOR       08074B50 (134695760)\n+167477 CRC                   00000000 (0)\n+16747B Compressed Size       00000002 (2)\n+16747F Uncompressed Size     00000000 (0)\n \n-14D879 LOCAL HEADER #1276    04034B50 (67324752)\n-14D87D Extract Zip Spec      14 (20) '2.0'\n-14D87E Extract OS            00 (0) 'MS-DOS'\n-14D87F General Purpose Flag  0808 (2056)\n+167483 LOCAL HEADER #1276    04034B50 (67324752)\n+167487 Extract Zip Spec      14 (20) '2.0'\n+167488 Extract OS            00 (0) 'MS-DOS'\n+167489 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14D881 Compression Method    0008 (8) 'Deflated'\n-14D883 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14D887 CRC                   00000000 (0)\n-14D88B Compressed Size       00000000 (0)\n-14D88F Uncompressed Size     00000000 (0)\n-14D893 Filename Length       003E (62)\n-14D895 Extra Length          0000 (0)\n-14D897 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16748B Compression Method    0008 (8) 'Deflated'\n+16748D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+167491 CRC                   00000000 (0)\n+167495 Compressed Size       00000000 (0)\n+167499 Uncompressed Size     00000000 (0)\n+16749D Filename Length       0040 (64)\n+16749F Extra Length          0000 (0)\n+1674A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14D897: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1674A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14D8D5 PAYLOAD\n+1674E1 PAYLOAD\n \n-14DBE0 DATA DESCRIPTOR       08074B50 (134695760)\n-14DBE4 CRC                   D05840B7 (3495444663)\n-14DBE8 Compressed Size       0000030B (779)\n-14DBEC Uncompressed Size     00000833 (2099)\n+16787B DATA DESCRIPTOR       08074B50 (134695760)\n+16787F CRC                   E9E92C7C (3924372604)\n+167883 Compressed Size       0000039A (922)\n+167887 Uncompressed Size     000009D6 (2518)\n \n-14DBF0 LOCAL HEADER #1277    04034B50 (67324752)\n-14DBF4 Extract Zip Spec      14 (20) '2.0'\n-14DBF5 Extract OS            00 (0) 'MS-DOS'\n-14DBF6 General Purpose Flag  0808 (2056)\n+16788B LOCAL HEADER #1277    04034B50 (67324752)\n+16788F Extract Zip Spec      14 (20) '2.0'\n+167890 Extract OS            00 (0) 'MS-DOS'\n+167891 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14DBF8 Compression Method    0008 (8) 'Deflated'\n-14DBFA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14DBFE CRC                   00000000 (0)\n-14DC02 Compressed Size       00000000 (0)\n-14DC06 Uncompressed Size     00000000 (0)\n-14DC0A Filename Length       0045 (69)\n-14DC0C Extra Length          0000 (0)\n-14DC0E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+167893 Compression Method    0008 (8) 'Deflated'\n+167895 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+167899 CRC                   00000000 (0)\n+16789D Compressed Size       00000000 (0)\n+1678A1 Uncompressed Size     00000000 (0)\n+1678A5 Filename Length       0047 (71)\n+1678A7 Extra Length          0000 (0)\n+1678A9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14DC0E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1678A9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14DC53 PAYLOAD\n+1678F0 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-14DF81 DATA DESCRIPTOR       08074B50 (134695760)\n-14DF85 CRC                   D9AD2407 (3652002823)\n-14DF89 Compressed Size       0000032E (814)\n-14DF8D Uncompressed Size     000006C3 (1731)\n+16793D DATA DESCRIPTOR       08074B50 (134695760)\n+167941 CRC                   795A1135 (2035945781)\n+167945 Compressed Size       0000004D (77)\n+167949 Uncompressed Size     0000004F (79)\n \n-14DF91 LOCAL HEADER #1278    04034B50 (67324752)\n-14DF95 Extract Zip Spec      14 (20) '2.0'\n-14DF96 Extract OS            00 (0) 'MS-DOS'\n-14DF97 General Purpose Flag  0808 (2056)\n+16794D LOCAL HEADER #1278    04034B50 (67324752)\n+167951 Extract Zip Spec      14 (20) '2.0'\n+167952 Extract OS            00 (0) 'MS-DOS'\n+167953 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14DF99 Compression Method    0008 (8) 'Deflated'\n-14DF9B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14DF9F CRC                   00000000 (0)\n-14DFA3 Compressed Size       00000000 (0)\n-14DFA7 Uncompressed Size     00000000 (0)\n-14DFAB Filename Length       0046 (70)\n-14DFAD Extra Length          0000 (0)\n-14DFAF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+167955 Compression Method    0008 (8) 'Deflated'\n+167957 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16795B CRC                   00000000 (0)\n+16795F Compressed Size       00000000 (0)\n+167963 Uncompressed Size     00000000 (0)\n+167967 Filename Length       0020 (32)\n+167969 Extra Length          0000 (0)\n+16796B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14DFAF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16796B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14DFF5 PAYLOAD\n+16798B PAYLOAD               XX\n \n-14E289 DATA DESCRIPTOR       08074B50 (134695760)\n-14E28D CRC                   6AAAC02C (1789575212)\n-14E291 Compressed Size       00000294 (660)\n-14E295 Uncompressed Size     00000565 (1381)\n+16798D DATA DESCRIPTOR       08074B50 (134695760)\n+167991 CRC                   00000000 (0)\n+167995 Compressed Size       00000002 (2)\n+167999 Uncompressed Size     00000000 (0)\n \n-14E299 LOCAL HEADER #1279    04034B50 (67324752)\n-14E29D Extract Zip Spec      14 (20) '2.0'\n-14E29E Extract OS            00 (0) 'MS-DOS'\n-14E29F General Purpose Flag  0808 (2056)\n+16799D LOCAL HEADER #1279    04034B50 (67324752)\n+1679A1 Extract Zip Spec      14 (20) '2.0'\n+1679A2 Extract OS            00 (0) 'MS-DOS'\n+1679A3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14E2A1 Compression Method    0008 (8) 'Deflated'\n-14E2A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14E2A7 CRC                   00000000 (0)\n-14E2AB Compressed Size       00000000 (0)\n-14E2AF Uncompressed Size     00000000 (0)\n-14E2B3 Filename Length       0044 (68)\n-14E2B5 Extra Length          0000 (0)\n-14E2B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1679A5 Compression Method    0008 (8) 'Deflated'\n+1679A7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1679AB CRC                   00000000 (0)\n+1679AF Compressed Size       00000000 (0)\n+1679B3 Uncompressed Size     00000000 (0)\n+1679B7 Filename Length       0032 (50)\n+1679B9 Extra Length          0000 (0)\n+1679BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14E2B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1679BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14E2FB PAYLOAD\n+1679ED PAYLOAD\n \n-14E68A DATA DESCRIPTOR       08074B50 (134695760)\n-14E68E CRC                   5F8855A5 (1602770341)\n-14E692 Compressed Size       0000038F (911)\n-14E696 Uncompressed Size     00000870 (2160)\n+168A60 DATA DESCRIPTOR       08074B50 (134695760)\n+168A64 CRC                   3CD43B28 (1020541736)\n+168A68 Compressed Size       00001073 (4211)\n+168A6C Uncompressed Size     00004EA7 (20135)\n \n-14E69A LOCAL HEADER #1280    04034B50 (67324752)\n-14E69E Extract Zip Spec      14 (20) '2.0'\n-14E69F Extract OS            00 (0) 'MS-DOS'\n-14E6A0 General Purpose Flag  0808 (2056)\n+168A70 LOCAL HEADER #1280    04034B50 (67324752)\n+168A74 Extract Zip Spec      14 (20) '2.0'\n+168A75 Extract OS            00 (0) 'MS-DOS'\n+168A76 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14E6A2 Compression Method    0008 (8) 'Deflated'\n-14E6A4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14E6A8 CRC                   00000000 (0)\n-14E6AC Compressed Size       00000000 (0)\n-14E6B0 Uncompressed Size     00000000 (0)\n-14E6B4 Filename Length       003C (60)\n-14E6B6 Extra Length          0000 (0)\n-14E6B8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+168A78 Compression Method    0008 (8) 'Deflated'\n+168A7A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+168A7E CRC                   00000000 (0)\n+168A82 Compressed Size       00000000 (0)\n+168A86 Uncompressed Size     00000000 (0)\n+168A8A Filename Length       0039 (57)\n+168A8C Extra Length          0000 (0)\n+168A8E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14E6B8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x168A8E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14E6F4 PAYLOAD\n+168AC7 PAYLOAD\n \n-14EDB8 DATA DESCRIPTOR       08074B50 (134695760)\n-14EDBC CRC                   C2AD0276 (3266118262)\n-14EDC0 Compressed Size       000006C4 (1732)\n-14EDC4 Uncompressed Size     000017B0 (6064)\n+168D32 DATA DESCRIPTOR       08074B50 (134695760)\n+168D36 CRC                   DA82F0B1 (3666014385)\n+168D3A Compressed Size       0000026B (619)\n+168D3E Uncompressed Size     000004D7 (1239)\n \n-14EDC8 LOCAL HEADER #1281    04034B50 (67324752)\n-14EDCC Extract Zip Spec      14 (20) '2.0'\n-14EDCD Extract OS            00 (0) 'MS-DOS'\n-14EDCE General Purpose Flag  0808 (2056)\n+168D42 LOCAL HEADER #1281    04034B50 (67324752)\n+168D46 Extract Zip Spec      14 (20) '2.0'\n+168D47 Extract OS            00 (0) 'MS-DOS'\n+168D48 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14EDD0 Compression Method    0008 (8) 'Deflated'\n-14EDD2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14EDD6 CRC                   00000000 (0)\n-14EDDA Compressed Size       00000000 (0)\n-14EDDE Uncompressed Size     00000000 (0)\n-14EDE2 Filename Length       0045 (69)\n-14EDE4 Extra Length          0000 (0)\n-14EDE6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+168D4A Compression Method    0008 (8) 'Deflated'\n+168D4C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+168D50 CRC                   00000000 (0)\n+168D54 Compressed Size       00000000 (0)\n+168D58 Uncompressed Size     00000000 (0)\n+168D5C Filename Length       003A (58)\n+168D5E Extra Length          0000 (0)\n+168D60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14EDE6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x168D60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14EE2B PAYLOAD\n+168D9A PAYLOAD\n \n-14F72C DATA DESCRIPTOR       08074B50 (134695760)\n-14F730 CRC                   77B5952D (2008388909)\n-14F734 Compressed Size       00000901 (2305)\n-14F738 Uncompressed Size     00002A27 (10791)\n+1690A0 DATA DESCRIPTOR       08074B50 (134695760)\n+1690A4 CRC                   C8E9661F (3370739231)\n+1690A8 Compressed Size       00000306 (774)\n+1690AC Uncompressed Size     00000782 (1922)\n \n-14F73C LOCAL HEADER #1282    04034B50 (67324752)\n-14F740 Extract Zip Spec      14 (20) '2.0'\n-14F741 Extract OS            00 (0) 'MS-DOS'\n-14F742 General Purpose Flag  0808 (2056)\n+1690B0 LOCAL HEADER #1282    04034B50 (67324752)\n+1690B4 Extract Zip Spec      14 (20) '2.0'\n+1690B5 Extract OS            00 (0) 'MS-DOS'\n+1690B6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-14F744 Compression Method    0008 (8) 'Deflated'\n-14F746 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-14F74A CRC                   00000000 (0)\n-14F74E Compressed Size       00000000 (0)\n-14F752 Uncompressed Size     00000000 (0)\n-14F756 Filename Length       0040 (64)\n-14F758 Extra Length          0000 (0)\n-14F75A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1690B8 Compression Method    0008 (8) 'Deflated'\n+1690BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1690BE CRC                   00000000 (0)\n+1690C2 Compressed Size       00000000 (0)\n+1690C6 Uncompressed Size     00000000 (0)\n+1690CA Filename Length       0041 (65)\n+1690CC Extra Length          0000 (0)\n+1690CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x14F75A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1690CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-14F79A PAYLOAD\n+16910F PAYLOAD\n \n-150016 DATA DESCRIPTOR       08074B50 (134695760)\n-15001A CRC                   013987D8 (20547544)\n-15001E Compressed Size       0000087C (2172)\n-150022 Uncompressed Size     00001FF0 (8176)\n+16937A DATA DESCRIPTOR       08074B50 (134695760)\n+16937E CRC                   80DBFA57 (2161900119)\n+169382 Compressed Size       0000026B (619)\n+169386 Uncompressed Size     000004EC (1260)\n \n-150026 LOCAL HEADER #1283    04034B50 (67324752)\n-15002A Extract Zip Spec      14 (20) '2.0'\n-15002B Extract OS            00 (0) 'MS-DOS'\n-15002C General Purpose Flag  0808 (2056)\n+16938A LOCAL HEADER #1283    04034B50 (67324752)\n+16938E Extract Zip Spec      14 (20) '2.0'\n+16938F Extract OS            00 (0) 'MS-DOS'\n+169390 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15002E Compression Method    0008 (8) 'Deflated'\n-150030 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-150034 CRC                   00000000 (0)\n-150038 Compressed Size       00000000 (0)\n-15003C Uncompressed Size     00000000 (0)\n-150040 Filename Length       0038 (56)\n-150042 Extra Length          0000 (0)\n-150044 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+169392 Compression Method    0008 (8) 'Deflated'\n+169394 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+169398 CRC                   00000000 (0)\n+16939C Compressed Size       00000000 (0)\n+1693A0 Uncompressed Size     00000000 (0)\n+1693A4 Filename Length       0035 (53)\n+1693A6 Extra Length          0000 (0)\n+1693A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x150044: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1693A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15007C PAYLOAD\n+1693DD PAYLOAD               XX\n \n-1508F6 DATA DESCRIPTOR       08074B50 (134695760)\n-1508FA CRC                   E564338A (3848549258)\n-1508FE Compressed Size       0000087A (2170)\n-150902 Uncompressed Size     00002F23 (12067)\n+1693DF DATA DESCRIPTOR       08074B50 (134695760)\n+1693E3 CRC                   00000000 (0)\n+1693E7 Compressed Size       00000002 (2)\n+1693EB Uncompressed Size     00000000 (0)\n \n-150906 LOCAL HEADER #1284    04034B50 (67324752)\n-15090A Extract Zip Spec      14 (20) '2.0'\n-15090B Extract OS            00 (0) 'MS-DOS'\n-15090C General Purpose Flag  0808 (2056)\n+1693EF LOCAL HEADER #1284    04034B50 (67324752)\n+1693F3 Extract Zip Spec      14 (20) '2.0'\n+1693F4 Extract OS            00 (0) 'MS-DOS'\n+1693F5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15090E Compression Method    0008 (8) 'Deflated'\n-150910 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-150914 CRC                   00000000 (0)\n-150918 Compressed Size       00000000 (0)\n-15091C Uncompressed Size     00000000 (0)\n-150920 Filename Length       003F (63)\n-150922 Extra Length          0000 (0)\n-150924 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1693F7 Compression Method    0008 (8) 'Deflated'\n+1693F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1693FD CRC                   00000000 (0)\n+169401 Compressed Size       00000000 (0)\n+169405 Uncompressed Size     00000000 (0)\n+169409 Filename Length       003C (60)\n+16940B Extra Length          0000 (0)\n+16940D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x150924: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16940D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-150963 PAYLOAD\n+169449 PAYLOAD\n \n-150C22 DATA DESCRIPTOR       08074B50 (134695760)\n-150C26 CRC                   4D393448 (1295594568)\n-150C2A Compressed Size       000002BF (703)\n-150C2E Uncompressed Size     000005E0 (1504)\n+1697F7 DATA DESCRIPTOR       08074B50 (134695760)\n+1697FB CRC                   1ABCFE9F (448593567)\n+1697FF Compressed Size       000003AE (942)\n+169803 Uncompressed Size     000009E6 (2534)\n \n-150C32 LOCAL HEADER #1285    04034B50 (67324752)\n-150C36 Extract Zip Spec      14 (20) '2.0'\n-150C37 Extract OS            00 (0) 'MS-DOS'\n-150C38 General Purpose Flag  0808 (2056)\n+169807 LOCAL HEADER #1285    04034B50 (67324752)\n+16980B Extract Zip Spec      14 (20) '2.0'\n+16980C Extract OS            00 (0) 'MS-DOS'\n+16980D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-150C3A Compression Method    0008 (8) 'Deflated'\n-150C3C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-150C40 CRC                   00000000 (0)\n-150C44 Compressed Size       00000000 (0)\n-150C48 Uncompressed Size     00000000 (0)\n-150C4C Filename Length       0036 (54)\n-150C4E Extra Length          0000 (0)\n-150C50 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16980F Compression Method    0008 (8) 'Deflated'\n+169811 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+169815 CRC                   00000000 (0)\n+169819 Compressed Size       00000000 (0)\n+16981D Uncompressed Size     00000000 (0)\n+169821 Filename Length       0043 (67)\n+169823 Extra Length          0000 (0)\n+169825 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x150C50: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x169825: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-150C86 PAYLOAD\n+169868 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-1516BF DATA DESCRIPTOR       08074B50 (134695760)\n-1516C3 CRC                   6E2B9BED (1848351725)\n-1516C7 Compressed Size       00000A39 (2617)\n-1516CB Uncompressed Size     00002EA9 (11945)\n+1698AF DATA DESCRIPTOR       08074B50 (134695760)\n+1698B3 CRC                   3B7D75EA (998077930)\n+1698B7 Compressed Size       00000047 (71)\n+1698BB Uncompressed Size     0000004B (75)\n \n-1516CF LOCAL HEADER #1286    04034B50 (67324752)\n-1516D3 Extract Zip Spec      14 (20) '2.0'\n-1516D4 Extract OS            00 (0) 'MS-DOS'\n-1516D5 General Purpose Flag  0808 (2056)\n+1698BF LOCAL HEADER #1286    04034B50 (67324752)\n+1698C3 Extract Zip Spec      14 (20) '2.0'\n+1698C4 Extract OS            00 (0) 'MS-DOS'\n+1698C5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1516D7 Compression Method    0008 (8) 'Deflated'\n-1516D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1516DD CRC                   00000000 (0)\n-1516E1 Compressed Size       00000000 (0)\n-1516E5 Uncompressed Size     00000000 (0)\n-1516E9 Filename Length       003D (61)\n-1516EB Extra Length          0000 (0)\n-1516ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1698C7 Compression Method    0008 (8) 'Deflated'\n+1698C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1698CD CRC                   00000000 (0)\n+1698D1 Compressed Size       00000000 (0)\n+1698D5 Uncompressed Size     00000000 (0)\n+1698D9 Filename Length       0021 (33)\n+1698DB Extra Length          0000 (0)\n+1698DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1516ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1698DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15172A PAYLOAD\n+1698FE PAYLOAD               XX\n \n-151A51 DATA DESCRIPTOR       08074B50 (134695760)\n-151A55 CRC                   9F02351C (2667722012)\n-151A59 Compressed Size       00000327 (807)\n-151A5D Uncompressed Size     000007B6 (1974)\n+169900 DATA DESCRIPTOR       08074B50 (134695760)\n+169904 CRC                   00000000 (0)\n+169908 Compressed Size       00000002 (2)\n+16990C Uncompressed Size     00000000 (0)\n \n-151A61 LOCAL HEADER #1287    04034B50 (67324752)\n-151A65 Extract Zip Spec      14 (20) '2.0'\n-151A66 Extract OS            00 (0) 'MS-DOS'\n-151A67 General Purpose Flag  0808 (2056)\n+169910 LOCAL HEADER #1287    04034B50 (67324752)\n+169914 Extract Zip Spec      14 (20) '2.0'\n+169915 Extract OS            00 (0) 'MS-DOS'\n+169916 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-151A69 Compression Method    0008 (8) 'Deflated'\n-151A6B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-151A6F CRC                   00000000 (0)\n-151A73 Compressed Size       00000000 (0)\n-151A77 Uncompressed Size     00000000 (0)\n-151A7B Filename Length       003E (62)\n-151A7D Extra Length          0000 (0)\n-151A7F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+169918 Compression Method    0008 (8) 'Deflated'\n+16991A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16991E CRC                   00000000 (0)\n+169922 Compressed Size       00000000 (0)\n+169926 Uncompressed Size     00000000 (0)\n+16992A Filename Length       003C (60)\n+16992C Extra Length          0000 (0)\n+16992E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x151A7F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16992E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-151ABD PAYLOAD\n+16996A PAYLOAD\n \n-152CDE DATA DESCRIPTOR       08074B50 (134695760)\n-152CE2 CRC                   88D1E805 (2295457797)\n-152CE6 Compressed Size       00001221 (4641)\n-152CEA Uncompressed Size     0000521E (21022)\n+169C8B DATA DESCRIPTOR       08074B50 (134695760)\n+169C8F CRC                   5B9C99AA (1536989610)\n+169C93 Compressed Size       00000321 (801)\n+169C97 Uncompressed Size     00000668 (1640)\n \n-152CEE LOCAL HEADER #1288    04034B50 (67324752)\n-152CF2 Extract Zip Spec      14 (20) '2.0'\n-152CF3 Extract OS            00 (0) 'MS-DOS'\n-152CF4 General Purpose Flag  0808 (2056)\n+169C9B LOCAL HEADER #1288    04034B50 (67324752)\n+169C9F Extract Zip Spec      14 (20) '2.0'\n+169CA0 Extract OS            00 (0) 'MS-DOS'\n+169CA1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-152CF6 Compression Method    0008 (8) 'Deflated'\n-152CF8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-152CFC CRC                   00000000 (0)\n-152D00 Compressed Size       00000000 (0)\n-152D04 Uncompressed Size     00000000 (0)\n-152D08 Filename Length       0047 (71)\n-152D0A Extra Length          0000 (0)\n-152D0C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+169CA3 Compression Method    0008 (8) 'Deflated'\n+169CA5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+169CA9 CRC                   00000000 (0)\n+169CAD Compressed Size       00000000 (0)\n+169CB1 Uncompressed Size     00000000 (0)\n+169CB5 Filename Length       0035 (53)\n+169CB7 Extra Length          0000 (0)\n+169CB9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x152D0C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x169CB9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-152D53 PAYLOAD\n+169CEE PAYLOAD\n \n-15397A DATA DESCRIPTOR       08074B50 (134695760)\n-15397E CRC                   1C63503A (476270650)\n-153982 Compressed Size       00000C27 (3111)\n-153986 Uncompressed Size     00002CDC (11484)\n+16A0DD DATA DESCRIPTOR       08074B50 (134695760)\n+16A0E1 CRC                   050B43B2 (84624306)\n+16A0E5 Compressed Size       000003EF (1007)\n+16A0E9 Uncompressed Size     00000A2A (2602)\n \n-15398A LOCAL HEADER #1289    04034B50 (67324752)\n-15398E Extract Zip Spec      14 (20) '2.0'\n-15398F Extract OS            00 (0) 'MS-DOS'\n-153990 General Purpose Flag  0808 (2056)\n+16A0ED LOCAL HEADER #1289    04034B50 (67324752)\n+16A0F1 Extract Zip Spec      14 (20) '2.0'\n+16A0F2 Extract OS            00 (0) 'MS-DOS'\n+16A0F3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-153992 Compression Method    0008 (8) 'Deflated'\n-153994 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-153998 CRC                   00000000 (0)\n-15399C Compressed Size       00000000 (0)\n-1539A0 Uncompressed Size     00000000 (0)\n-1539A4 Filename Length       0045 (69)\n-1539A6 Extra Length          0000 (0)\n-1539A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16A0F5 Compression Method    0008 (8) 'Deflated'\n+16A0F7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16A0FB CRC                   00000000 (0)\n+16A0FF Compressed Size       00000000 (0)\n+16A103 Uncompressed Size     00000000 (0)\n+16A107 Filename Length       0034 (52)\n+16A109 Extra Length          0000 (0)\n+16A10B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1539A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16A10B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1539ED PAYLOAD\n+16A13F PAYLOAD\n \n-153CE2 DATA DESCRIPTOR       08074B50 (134695760)\n-153CE6 CRC                   A7D42D9C (2815700380)\n-153CEA Compressed Size       000002F5 (757)\n-153CEE Uncompressed Size     0000068D (1677)\n+16AE79 DATA DESCRIPTOR       08074B50 (134695760)\n+16AE7D CRC                   C548D865 (3309885541)\n+16AE81 Compressed Size       00000D3A (3386)\n+16AE85 Uncompressed Size     000039FF (14847)\n \n-153CF2 LOCAL HEADER #1290    04034B50 (67324752)\n-153CF6 Extract Zip Spec      14 (20) '2.0'\n-153CF7 Extract OS            00 (0) 'MS-DOS'\n-153CF8 General Purpose Flag  0808 (2056)\n+16AE89 LOCAL HEADER #1290    04034B50 (67324752)\n+16AE8D Extract Zip Spec      14 (20) '2.0'\n+16AE8E Extract OS            00 (0) 'MS-DOS'\n+16AE8F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-153CFA Compression Method    0008 (8) 'Deflated'\n-153CFC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-153D00 CRC                   00000000 (0)\n-153D04 Compressed Size       00000000 (0)\n-153D08 Uncompressed Size     00000000 (0)\n-153D0C Filename Length       0035 (53)\n-153D0E Extra Length          0000 (0)\n-153D10 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16AE91 Compression Method    0008 (8) 'Deflated'\n+16AE93 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16AE97 CRC                   00000000 (0)\n+16AE9B Compressed Size       00000000 (0)\n+16AE9F Uncompressed Size     00000000 (0)\n+16AEA3 Filename Length       003B (59)\n+16AEA5 Extra Length          0000 (0)\n+16AEA7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x153D10: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16AEA7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-153D45 PAYLOAD\n+16AEE2 PAYLOAD\n \n-1541F0 DATA DESCRIPTOR       08074B50 (134695760)\n-1541F4 CRC                   F623C4B3 (4129539251)\n-1541F8 Compressed Size       000004AB (1195)\n-1541FC Uncompressed Size     00000DAA (3498)\n+16B15D DATA DESCRIPTOR       08074B50 (134695760)\n+16B161 CRC                   F93C1E65 (4181466725)\n+16B165 Compressed Size       0000027B (635)\n+16B169 Uncompressed Size     000004F1 (1265)\n \n-154200 LOCAL HEADER #1291    04034B50 (67324752)\n-154204 Extract Zip Spec      14 (20) '2.0'\n-154205 Extract OS            00 (0) 'MS-DOS'\n-154206 General Purpose Flag  0808 (2056)\n+16B16D LOCAL HEADER #1291    04034B50 (67324752)\n+16B171 Extract Zip Spec      14 (20) '2.0'\n+16B172 Extract OS            00 (0) 'MS-DOS'\n+16B173 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-154208 Compression Method    0008 (8) 'Deflated'\n-15420A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15420E CRC                   00000000 (0)\n-154212 Compressed Size       00000000 (0)\n-154216 Uncompressed Size     00000000 (0)\n-15421A Filename Length       003F (63)\n-15421C Extra Length          0000 (0)\n-15421E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16B175 Compression Method    0008 (8) 'Deflated'\n+16B177 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16B17B CRC                   00000000 (0)\n+16B17F Compressed Size       00000000 (0)\n+16B183 Uncompressed Size     00000000 (0)\n+16B187 Filename Length       003C (60)\n+16B189 Extra Length          0000 (0)\n+16B18B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15421E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16B18B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15425D PAYLOAD\n+16B1C7 PAYLOAD\n \n-154511 DATA DESCRIPTOR       08074B50 (134695760)\n-154515 CRC                   5B09319E (1527329182)\n-154519 Compressed Size       000002B4 (692)\n-15451D Uncompressed Size     000005D6 (1494)\n+16C23D DATA DESCRIPTOR       08074B50 (134695760)\n+16C241 CRC                   1758261F (391652895)\n+16C245 Compressed Size       00001076 (4214)\n+16C249 Uncompressed Size     0000495E (18782)\n \n-154521 LOCAL HEADER #1292    04034B50 (67324752)\n-154525 Extract Zip Spec      14 (20) '2.0'\n-154526 Extract OS            00 (0) 'MS-DOS'\n-154527 General Purpose Flag  0808 (2056)\n+16C24D LOCAL HEADER #1292    04034B50 (67324752)\n+16C251 Extract Zip Spec      14 (20) '2.0'\n+16C252 Extract OS            00 (0) 'MS-DOS'\n+16C253 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-154529 Compression Method    0008 (8) 'Deflated'\n-15452B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15452F CRC                   00000000 (0)\n-154533 Compressed Size       00000000 (0)\n-154537 Uncompressed Size     00000000 (0)\n-15453B Filename Length       0027 (39)\n-15453D Extra Length          0000 (0)\n-15453F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16C255 Compression Method    0008 (8) 'Deflated'\n+16C257 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16C25B CRC                   00000000 (0)\n+16C25F Compressed Size       00000000 (0)\n+16C263 Uncompressed Size     00000000 (0)\n+16C267 Filename Length       0043 (67)\n+16C269 Extra Length          0000 (0)\n+16C26B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15453F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16C26B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-154566 PAYLOAD               XX\n+16C2AE PAYLOAD\n \n-154568 DATA DESCRIPTOR       08074B50 (134695760)\n-15456C CRC                   00000000 (0)\n-154570 Compressed Size       00000002 (2)\n-154574 Uncompressed Size     00000000 (0)\n+16C51A DATA DESCRIPTOR       08074B50 (134695760)\n+16C51E CRC                   09B44E50 (162811472)\n+16C522 Compressed Size       0000026C (620)\n+16C526 Uncompressed Size     000004EF (1263)\n \n-154578 LOCAL HEADER #1293    04034B50 (67324752)\n-15457C Extract Zip Spec      14 (20) '2.0'\n-15457D Extract OS            00 (0) 'MS-DOS'\n-15457E General Purpose Flag  0808 (2056)\n+16C52A LOCAL HEADER #1293    04034B50 (67324752)\n+16C52E Extract Zip Spec      14 (20) '2.0'\n+16C52F Extract OS            00 (0) 'MS-DOS'\n+16C530 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-154580 Compression Method    0008 (8) 'Deflated'\n-154582 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-154586 CRC                   00000000 (0)\n-15458A Compressed Size       00000000 (0)\n-15458E Uncompressed Size     00000000 (0)\n-154592 Filename Length       004A (74)\n-154594 Extra Length          0000 (0)\n-154596 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16C532 Compression Method    0008 (8) 'Deflated'\n+16C534 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16C538 CRC                   00000000 (0)\n+16C53C Compressed Size       00000000 (0)\n+16C540 Uncompressed Size     00000000 (0)\n+16C544 Filename Length       0048 (72)\n+16C546 Extra Length          0000 (0)\n+16C548 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x154596: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16C548: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1545E0 PAYLOAD\n+16C590 PAYLOAD\n \n-15485D DATA DESCRIPTOR       08074B50 (134695760)\n-154861 CRC                   504AAFAB (1347071915)\n-154865 Compressed Size       0000027D (637)\n-154869 Uncompressed Size     000004F6 (1270)\n+16C7FC DATA DESCRIPTOR       08074B50 (134695760)\n+16C800 CRC                   09B44E50 (162811472)\n+16C804 Compressed Size       0000026C (620)\n+16C808 Uncompressed Size     000004EF (1263)\n \n-15486D LOCAL HEADER #1294    04034B50 (67324752)\n-154871 Extract Zip Spec      14 (20) '2.0'\n-154872 Extract OS            00 (0) 'MS-DOS'\n-154873 General Purpose Flag  0808 (2056)\n+16C80C LOCAL HEADER #1294    04034B50 (67324752)\n+16C810 Extract Zip Spec      14 (20) '2.0'\n+16C811 Extract OS            00 (0) 'MS-DOS'\n+16C812 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-154875 Compression Method    0008 (8) 'Deflated'\n-154877 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15487B CRC                   00000000 (0)\n-15487F Compressed Size       00000000 (0)\n-154883 Uncompressed Size     00000000 (0)\n-154887 Filename Length       004B (75)\n-154889 Extra Length          0000 (0)\n-15488B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16C814 Compression Method    0008 (8) 'Deflated'\n+16C816 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16C81A CRC                   00000000 (0)\n+16C81E Compressed Size       00000000 (0)\n+16C822 Uncompressed Size     00000000 (0)\n+16C826 Filename Length       0050 (80)\n+16C828 Extra Length          0000 (0)\n+16C82A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15488B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16C82A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1548D6 PAYLOAD\n+16C87A PAYLOAD\n \n-154B56 DATA DESCRIPTOR       08074B50 (134695760)\n-154B5A CRC                   24C1B311 (616674065)\n-154B5E Compressed Size       00000280 (640)\n-154B62 Uncompressed Size     000004FB (1275)\n+16CAE6 DATA DESCRIPTOR       08074B50 (134695760)\n+16CAEA CRC                   09B44E50 (162811472)\n+16CAEE Compressed Size       0000026C (620)\n+16CAF2 Uncompressed Size     000004EF (1263)\n \n-154B66 LOCAL HEADER #1295    04034B50 (67324752)\n-154B6A Extract Zip Spec      14 (20) '2.0'\n-154B6B Extract OS            00 (0) 'MS-DOS'\n-154B6C General Purpose Flag  0808 (2056)\n+16CAF6 LOCAL HEADER #1295    04034B50 (67324752)\n+16CAFA Extract Zip Spec      14 (20) '2.0'\n+16CAFB Extract OS            00 (0) 'MS-DOS'\n+16CAFC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-154B6E Compression Method    0008 (8) 'Deflated'\n-154B70 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-154B74 CRC                   00000000 (0)\n-154B78 Compressed Size       00000000 (0)\n-154B7C Uncompressed Size     00000000 (0)\n-154B80 Filename Length       0041 (65)\n-154B82 Extra Length          0000 (0)\n-154B84 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16CAFE Compression Method    0008 (8) 'Deflated'\n+16CB00 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16CB04 CRC                   00000000 (0)\n+16CB08 Compressed Size       00000000 (0)\n+16CB0C Uncompressed Size     00000000 (0)\n+16CB10 Filename Length       0036 (54)\n+16CB12 Extra Length          0000 (0)\n+16CB14 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x154B84: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16CB14: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-154BC5 PAYLOAD\n+16CB4A PAYLOAD               XX\n \n-154F23 DATA DESCRIPTOR       08074B50 (134695760)\n-154F27 CRC                   F122AA0E (4045580814)\n-154F2B Compressed Size       0000035E (862)\n-154F2F Uncompressed Size     0000086F (2159)\n+16CB4C DATA DESCRIPTOR       08074B50 (134695760)\n+16CB50 CRC                   00000000 (0)\n+16CB54 Compressed Size       00000002 (2)\n+16CB58 Uncompressed Size     00000000 (0)\n \n-154F33 LOCAL HEADER #1296    04034B50 (67324752)\n-154F37 Extract Zip Spec      14 (20) '2.0'\n-154F38 Extract OS            00 (0) 'MS-DOS'\n-154F39 General Purpose Flag  0808 (2056)\n+16CB5C LOCAL HEADER #1296    04034B50 (67324752)\n+16CB60 Extract Zip Spec      14 (20) '2.0'\n+16CB61 Extract OS            00 (0) 'MS-DOS'\n+16CB62 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-154F3B Compression Method    0008 (8) 'Deflated'\n-154F3D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-154F41 CRC                   00000000 (0)\n-154F45 Compressed Size       00000000 (0)\n-154F49 Uncompressed Size     00000000 (0)\n-154F4D Filename Length       004A (74)\n-154F4F Extra Length          0000 (0)\n-154F51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16CB64 Compression Method    0008 (8) 'Deflated'\n+16CB66 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16CB6A CRC                   00000000 (0)\n+16CB6E Compressed Size       00000000 (0)\n+16CB72 Uncompressed Size     00000000 (0)\n+16CB76 Filename Length       003D (61)\n+16CB78 Extra Length          0000 (0)\n+16CB7A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x154F51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16CB7A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-154F9B PAYLOAD\n+16CBB7 PAYLOAD\n \n-1552A3 DATA DESCRIPTOR       08074B50 (134695760)\n-1552A7 CRC                   267DEE50 (645787216)\n-1552AB Compressed Size       00000308 (776)\n-1552AF Uncompressed Size     0000067B (1659)\n+16CF6A DATA DESCRIPTOR       08074B50 (134695760)\n+16CF6E CRC                   136E4489 (325993609)\n+16CF72 Compressed Size       000003B3 (947)\n+16CF76 Uncompressed Size     00000951 (2385)\n \n-1552B3 LOCAL HEADER #1297    04034B50 (67324752)\n-1552B7 Extract Zip Spec      14 (20) '2.0'\n-1552B8 Extract OS            00 (0) 'MS-DOS'\n-1552B9 General Purpose Flag  0808 (2056)\n+16CF7A LOCAL HEADER #1297    04034B50 (67324752)\n+16CF7E Extract Zip Spec      14 (20) '2.0'\n+16CF7F Extract OS            00 (0) 'MS-DOS'\n+16CF80 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1552BB Compression Method    0008 (8) 'Deflated'\n-1552BD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1552C1 CRC                   00000000 (0)\n-1552C5 Compressed Size       00000000 (0)\n-1552C9 Uncompressed Size     00000000 (0)\n-1552CD Filename Length       004C (76)\n-1552CF Extra Length          0000 (0)\n-1552D1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16CF82 Compression Method    0008 (8) 'Deflated'\n+16CF84 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16CF88 CRC                   00000000 (0)\n+16CF8C Compressed Size       00000000 (0)\n+16CF90 Uncompressed Size     00000000 (0)\n+16CF94 Filename Length       0044 (68)\n+16CF96 Extra Length          0000 (0)\n+16CF98 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1552D1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16CF98: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15531D PAYLOAD\n+16CFDC PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-1555AB DATA DESCRIPTOR       08074B50 (134695760)\n-1555AF CRC                   398D4C03 (965561347)\n-1555B3 Compressed Size       0000028E (654)\n-1555B7 Uncompressed Size     00000524 (1316)\n+16D026 DATA DESCRIPTOR       08074B50 (134695760)\n+16D02A CRC                   153432AD (355742381)\n+16D02E Compressed Size       0000004A (74)\n+16D032 Uncompressed Size     0000004C (76)\n \n-1555BB LOCAL HEADER #1298    04034B50 (67324752)\n-1555BF Extract Zip Spec      14 (20) '2.0'\n-1555C0 Extract OS            00 (0) 'MS-DOS'\n-1555C1 General Purpose Flag  0808 (2056)\n+16D036 LOCAL HEADER #1298    04034B50 (67324752)\n+16D03A Extract Zip Spec      14 (20) '2.0'\n+16D03B Extract OS            00 (0) 'MS-DOS'\n+16D03C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1555C3 Compression Method    0008 (8) 'Deflated'\n-1555C5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1555C9 CRC                   00000000 (0)\n-1555CD Compressed Size       00000000 (0)\n-1555D1 Uncompressed Size     00000000 (0)\n-1555D5 Filename Length       004D (77)\n-1555D7 Extra Length          0000 (0)\n-1555D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16D03E Compression Method    0008 (8) 'Deflated'\n+16D040 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16D044 CRC                   00000000 (0)\n+16D048 Compressed Size       00000000 (0)\n+16D04C Uncompressed Size     00000000 (0)\n+16D050 Filename Length       001F (31)\n+16D052 Extra Length          0000 (0)\n+16D054 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1555D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16D054: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-155626 PAYLOAD\n+16D073 PAYLOAD               XX\n \n-1558B8 DATA DESCRIPTOR       08074B50 (134695760)\n-1558BC CRC                   120048C8 (302008520)\n-1558C0 Compressed Size       00000292 (658)\n-1558C4 Uncompressed Size     0000052A (1322)\n+16D075 DATA DESCRIPTOR       08074B50 (134695760)\n+16D079 CRC                   00000000 (0)\n+16D07D Compressed Size       00000002 (2)\n+16D081 Uncompressed Size     00000000 (0)\n \n-1558C8 LOCAL HEADER #1299    04034B50 (67324752)\n-1558CC Extract Zip Spec      14 (20) '2.0'\n-1558CD Extract OS            00 (0) 'MS-DOS'\n-1558CE General Purpose Flag  0808 (2056)\n+16D085 LOCAL HEADER #1299    04034B50 (67324752)\n+16D089 Extract Zip Spec      14 (20) '2.0'\n+16D08A Extract OS            00 (0) 'MS-DOS'\n+16D08B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1558D0 Compression Method    0008 (8) 'Deflated'\n-1558D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1558D6 CRC                   00000000 (0)\n-1558DA Compressed Size       00000000 (0)\n-1558DE Uncompressed Size     00000000 (0)\n-1558E2 Filename Length       0040 (64)\n-1558E4 Extra Length          0000 (0)\n-1558E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16D08D Compression Method    0008 (8) 'Deflated'\n+16D08F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16D093 CRC                   00000000 (0)\n+16D097 Compressed Size       00000000 (0)\n+16D09B Uncompressed Size     00000000 (0)\n+16D09F Filename Length       0030 (48)\n+16D0A1 Extra Length          0000 (0)\n+16D0A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1558E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16D0A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-155926 PAYLOAD\n+16D0D3 PAYLOAD\n \n-155BEF DATA DESCRIPTOR       08074B50 (134695760)\n-155BF3 CRC                   7B9FC9D5 (2074069461)\n-155BF7 Compressed Size       000002C9 (713)\n-155BFB Uncompressed Size     00000675 (1653)\n+16DE62 DATA DESCRIPTOR       08074B50 (134695760)\n+16DE66 CRC                   775C02B8 (2002518712)\n+16DE6A Compressed Size       00000D8F (3471)\n+16DE6E Uncompressed Size     00003F5B (16219)\n \n-155BFF LOCAL HEADER #1300    04034B50 (67324752)\n-155C03 Extract Zip Spec      14 (20) '2.0'\n-155C04 Extract OS            00 (0) 'MS-DOS'\n-155C05 General Purpose Flag  0808 (2056)\n+16DE72 LOCAL HEADER #1300    04034B50 (67324752)\n+16DE76 Extract Zip Spec      14 (20) '2.0'\n+16DE77 Extract OS            00 (0) 'MS-DOS'\n+16DE78 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-155C07 Compression Method    0008 (8) 'Deflated'\n-155C09 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-155C0D CRC                   00000000 (0)\n-155C11 Compressed Size       00000000 (0)\n-155C15 Uncompressed Size     00000000 (0)\n-155C19 Filename Length       004D (77)\n-155C1B Extra Length          0000 (0)\n-155C1D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16DE7A Compression Method    0008 (8) 'Deflated'\n+16DE7C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16DE80 CRC                   00000000 (0)\n+16DE84 Compressed Size       00000000 (0)\n+16DE88 Uncompressed Size     00000000 (0)\n+16DE8C Filename Length       0037 (55)\n+16DE8E Extra Length          0000 (0)\n+16DE90 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x155C1D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16DE90: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-155C6A PAYLOAD\n+16DEC7 PAYLOAD\n \n-155EFA DATA DESCRIPTOR       08074B50 (134695760)\n-155EFE CRC                   A2914700 (2727429888)\n-155F02 Compressed Size       00000290 (656)\n-155F06 Uncompressed Size     00000547 (1351)\n+16E161 DATA DESCRIPTOR       08074B50 (134695760)\n+16E165 CRC                   C7AB4B17 (3349891863)\n+16E169 Compressed Size       0000029A (666)\n+16E16D Uncompressed Size     000005A5 (1445)\n \n-155F0A LOCAL HEADER #1301    04034B50 (67324752)\n-155F0E Extract Zip Spec      14 (20) '2.0'\n-155F0F Extract OS            00 (0) 'MS-DOS'\n-155F10 General Purpose Flag  0808 (2056)\n+16E171 LOCAL HEADER #1301    04034B50 (67324752)\n+16E175 Extract Zip Spec      14 (20) '2.0'\n+16E176 Extract OS            00 (0) 'MS-DOS'\n+16E177 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-155F12 Compression Method    0008 (8) 'Deflated'\n-155F14 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-155F18 CRC                   00000000 (0)\n-155F1C Compressed Size       00000000 (0)\n-155F20 Uncompressed Size     00000000 (0)\n-155F24 Filename Length       004F (79)\n-155F26 Extra Length          0000 (0)\n-155F28 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16E179 Compression Method    0008 (8) 'Deflated'\n+16E17B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16E17F CRC                   00000000 (0)\n+16E183 Compressed Size       00000000 (0)\n+16E187 Uncompressed Size     00000000 (0)\n+16E18B Filename Length       0038 (56)\n+16E18D Extra Length          0000 (0)\n+16E18F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x155F28: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16E18F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-155F77 PAYLOAD\n+16E1C7 PAYLOAD\n \n-156209 DATA DESCRIPTOR       08074B50 (134695760)\n-15620D CRC                   A0D533A5 (2698326949)\n-156211 Compressed Size       00000292 (658)\n-156215 Uncompressed Size     0000054F (1359)\n+16EA90 DATA DESCRIPTOR       08074B50 (134695760)\n+16EA94 CRC                   935B5779 (2472236921)\n+16EA98 Compressed Size       000008C9 (2249)\n+16EA9C Uncompressed Size     000020C2 (8386)\n \n-156219 LOCAL HEADER #1302    04034B50 (67324752)\n-15621D Extract Zip Spec      14 (20) '2.0'\n-15621E Extract OS            00 (0) 'MS-DOS'\n-15621F General Purpose Flag  0808 (2056)\n+16EAA0 LOCAL HEADER #1302    04034B50 (67324752)\n+16EAA4 Extract Zip Spec      14 (20) '2.0'\n+16EAA5 Extract OS            00 (0) 'MS-DOS'\n+16EAA6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-156221 Compression Method    0008 (8) 'Deflated'\n-156223 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-156227 CRC                   00000000 (0)\n-15622B Compressed Size       00000000 (0)\n-15622F Uncompressed Size     00000000 (0)\n-156233 Filename Length       004A (74)\n-156235 Extra Length          0000 (0)\n-156237 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16EAA8 Compression Method    0008 (8) 'Deflated'\n+16EAAA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16EAAE CRC                   00000000 (0)\n+16EAB2 Compressed Size       00000000 (0)\n+16EAB6 Uncompressed Size     00000000 (0)\n+16EABA Filename Length       0035 (53)\n+16EABC Extra Length          0000 (0)\n+16EABE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x156237: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16EABE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-156281 PAYLOAD\n+16EAF3 PAYLOAD               XX\n \n-15650E DATA DESCRIPTOR       08074B50 (134695760)\n-156512 CRC                   DD6C864E (3714877006)\n-156516 Compressed Size       0000028D (653)\n-15651A Uncompressed Size     00000540 (1344)\n+16EAF5 DATA DESCRIPTOR       08074B50 (134695760)\n+16EAF9 CRC                   00000000 (0)\n+16EAFD Compressed Size       00000002 (2)\n+16EB01 Uncompressed Size     00000000 (0)\n \n-15651E LOCAL HEADER #1303    04034B50 (67324752)\n-156522 Extract Zip Spec      14 (20) '2.0'\n-156523 Extract OS            00 (0) 'MS-DOS'\n-156524 General Purpose Flag  0808 (2056)\n+16EB05 LOCAL HEADER #1303    04034B50 (67324752)\n+16EB09 Extract Zip Spec      14 (20) '2.0'\n+16EB0A Extract OS            00 (0) 'MS-DOS'\n+16EB0B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-156526 Compression Method    0008 (8) 'Deflated'\n-156528 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15652C CRC                   00000000 (0)\n-156530 Compressed Size       00000000 (0)\n-156534 Uncompressed Size     00000000 (0)\n-156538 Filename Length       004C (76)\n-15653A Extra Length          0000 (0)\n-15653C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16EB0D Compression Method    0008 (8) 'Deflated'\n+16EB0F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16EB13 CRC                   00000000 (0)\n+16EB17 Compressed Size       00000000 (0)\n+16EB1B Uncompressed Size     00000000 (0)\n+16EB1F Filename Length       003C (60)\n+16EB21 Extra Length          0000 (0)\n+16EB23 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15653C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16EB23: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-156588 PAYLOAD\n+16EB5F PAYLOAD\n \n-156820 DATA DESCRIPTOR       08074B50 (134695760)\n-156824 CRC                   F868DDB6 (4167622070)\n-156828 Compressed Size       00000298 (664)\n-15682C Uncompressed Size     00000565 (1381)\n+16EEB6 DATA DESCRIPTOR       08074B50 (134695760)\n+16EEBA CRC                   69F6084D (1777731661)\n+16EEBE Compressed Size       00000357 (855)\n+16EEC2 Uncompressed Size     000008C5 (2245)\n \n-156830 LOCAL HEADER #1304    04034B50 (67324752)\n-156834 Extract Zip Spec      14 (20) '2.0'\n-156835 Extract OS            00 (0) 'MS-DOS'\n-156836 General Purpose Flag  0808 (2056)\n+16EEC6 LOCAL HEADER #1304    04034B50 (67324752)\n+16EECA Extract Zip Spec      14 (20) '2.0'\n+16EECB Extract OS            00 (0) 'MS-DOS'\n+16EECC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-156838 Compression Method    0008 (8) 'Deflated'\n-15683A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15683E CRC                   00000000 (0)\n-156842 Compressed Size       00000000 (0)\n-156846 Uncompressed Size     00000000 (0)\n-15684A Filename Length       0048 (72)\n-15684C Extra Length          0000 (0)\n-15684E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16EECE Compression Method    0008 (8) 'Deflated'\n+16EED0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16EED4 CRC                   00000000 (0)\n+16EED8 Compressed Size       00000000 (0)\n+16EEDC Uncompressed Size     00000000 (0)\n+16EEE0 Filename Length       0043 (67)\n+16EEE2 Extra Length          0000 (0)\n+16EEE4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15684E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16EEE4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-156896 PAYLOAD\n+16EF27 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-156C06 DATA DESCRIPTOR       08074B50 (134695760)\n-156C0A CRC                   97496C8E (2538171534)\n-156C0E Compressed Size       00000370 (880)\n-156C12 Uncompressed Size     000008A6 (2214)\n+16EF70 DATA DESCRIPTOR       08074B50 (134695760)\n+16EF74 CRC                   D8F9DD34 (3640253748)\n+16EF78 Compressed Size       00000049 (73)\n+16EF7C Uncompressed Size     0000004B (75)\n \n-156C16 LOCAL HEADER #1305    04034B50 (67324752)\n-156C1A Extract Zip Spec      14 (20) '2.0'\n-156C1B Extract OS            00 (0) 'MS-DOS'\n-156C1C General Purpose Flag  0808 (2056)\n+16EF80 LOCAL HEADER #1305    04034B50 (67324752)\n+16EF84 Extract Zip Spec      14 (20) '2.0'\n+16EF85 Extract OS            00 (0) 'MS-DOS'\n+16EF86 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-156C1E Compression Method    0008 (8) 'Deflated'\n-156C20 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-156C24 CRC                   00000000 (0)\n-156C28 Compressed Size       00000000 (0)\n-156C2C Uncompressed Size     00000000 (0)\n-156C30 Filename Length       0030 (48)\n-156C32 Extra Length          0000 (0)\n-156C34 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16EF88 Compression Method    0008 (8) 'Deflated'\n+16EF8A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16EF8E CRC                   00000000 (0)\n+16EF92 Compressed Size       00000000 (0)\n+16EF96 Uncompressed Size     00000000 (0)\n+16EF9A Filename Length       0021 (33)\n+16EF9C Extra Length          0000 (0)\n+16EF9E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x156C34: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16EF9E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-156C64 PAYLOAD               XX\n+16EFBF PAYLOAD               XX\n \n-156C66 DATA DESCRIPTOR       08074B50 (134695760)\n-156C6A CRC                   00000000 (0)\n-156C6E Compressed Size       00000002 (2)\n-156C72 Uncompressed Size     00000000 (0)\n+16EFC1 DATA DESCRIPTOR       08074B50 (134695760)\n+16EFC5 CRC                   00000000 (0)\n+16EFC9 Compressed Size       00000002 (2)\n+16EFCD Uncompressed Size     00000000 (0)\n \n-156C76 LOCAL HEADER #1306    04034B50 (67324752)\n-156C7A Extract Zip Spec      14 (20) '2.0'\n-156C7B Extract OS            00 (0) 'MS-DOS'\n-156C7C General Purpose Flag  0808 (2056)\n+16EFD1 LOCAL HEADER #1306    04034B50 (67324752)\n+16EFD5 Extract Zip Spec      14 (20) '2.0'\n+16EFD6 Extract OS            00 (0) 'MS-DOS'\n+16EFD7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-156C7E Compression Method    0008 (8) 'Deflated'\n-156C80 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-156C84 CRC                   00000000 (0)\n-156C88 Compressed Size       00000000 (0)\n-156C8C Uncompressed Size     00000000 (0)\n-156C90 Filename Length       0049 (73)\n-156C92 Extra Length          0000 (0)\n-156C94 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16EFD9 Compression Method    0008 (8) 'Deflated'\n+16EFDB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16EFDF CRC                   00000000 (0)\n+16EFE3 Compressed Size       00000000 (0)\n+16EFE7 Uncompressed Size     00000000 (0)\n+16EFEB Filename Length       0046 (70)\n+16EFED Extra Length          0000 (0)\n+16EFEF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x156C94: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16EFEF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-156CDD PAYLOAD\n+16F035 PAYLOAD\n \n-1570D7 DATA DESCRIPTOR       08074B50 (134695760)\n-1570DB CRC                   C309C134 (3272196404)\n-1570DF Compressed Size       000003FA (1018)\n-1570E3 Uncompressed Size     00000E22 (3618)\n+16F71E DATA DESCRIPTOR       08074B50 (134695760)\n+16F722 CRC                   74817B02 (1954642690)\n+16F726 Compressed Size       000006E9 (1769)\n+16F72A Uncompressed Size     0000281A (10266)\n \n-1570E7 LOCAL HEADER #1307    04034B50 (67324752)\n-1570EB Extract Zip Spec      14 (20) '2.0'\n-1570EC Extract OS            00 (0) 'MS-DOS'\n-1570ED General Purpose Flag  0808 (2056)\n+16F72E LOCAL HEADER #1307    04034B50 (67324752)\n+16F732 Extract Zip Spec      14 (20) '2.0'\n+16F733 Extract OS            00 (0) 'MS-DOS'\n+16F734 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1570EF Compression Method    0008 (8) 'Deflated'\n-1570F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1570F5 CRC                   00000000 (0)\n-1570F9 Compressed Size       00000000 (0)\n-1570FD Uncompressed Size     00000000 (0)\n-157101 Filename Length       0054 (84)\n-157103 Extra Length          0000 (0)\n-157105 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+16F736 Compression Method    0008 (8) 'Deflated'\n+16F738 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+16F73C CRC                   00000000 (0)\n+16F740 Compressed Size       00000000 (0)\n+16F744 Uncompressed Size     00000000 (0)\n+16F748 Filename Length       003C (60)\n+16F74A Extra Length          0000 (0)\n+16F74C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x157105: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x16F74C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-157159 PAYLOAD\n+16F788 PAYLOAD\n \n-157C5B DATA DESCRIPTOR       08074B50 (134695760)\n-157C5F CRC                   BD334F2B (3174256427)\n-157C63 Compressed Size       00000B02 (2818)\n-157C67 Uncompressed Size     00002C35 (11317)\n+170270 DATA DESCRIPTOR       08074B50 (134695760)\n+170274 CRC                   8BDBBEA7 (2346434215)\n+170278 Compressed Size       00000AE8 (2792)\n+17027C Uncompressed Size     00002C91 (11409)\n \n-157C6B LOCAL HEADER #1308    04034B50 (67324752)\n-157C6F Extract Zip Spec      14 (20) '2.0'\n-157C70 Extract OS            00 (0) 'MS-DOS'\n-157C71 General Purpose Flag  0808 (2056)\n+170280 LOCAL HEADER #1308    04034B50 (67324752)\n+170284 Extract Zip Spec      14 (20) '2.0'\n+170285 Extract OS            00 (0) 'MS-DOS'\n+170286 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-157C73 Compression Method    0008 (8) 'Deflated'\n-157C75 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-157C79 CRC                   00000000 (0)\n-157C7D Compressed Size       00000000 (0)\n-157C81 Uncompressed Size     00000000 (0)\n-157C85 Filename Length       002A (42)\n-157C87 Extra Length          0000 (0)\n-157C89 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+170288 Compression Method    0008 (8) 'Deflated'\n+17028A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17028E CRC                   00000000 (0)\n+170292 Compressed Size       00000000 (0)\n+170296 Uncompressed Size     00000000 (0)\n+17029A Filename Length       0032 (50)\n+17029C Extra Length          0000 (0)\n+17029E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x157C89: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17029E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-157CB3 PAYLOAD               XX\n+1702D0 PAYLOAD\n \n-157CB5 DATA DESCRIPTOR       08074B50 (134695760)\n-157CB9 CRC                   00000000 (0)\n-157CBD Compressed Size       00000002 (2)\n-157CC1 Uncompressed Size     00000000 (0)\n+1704E4 DATA DESCRIPTOR       08074B50 (134695760)\n+1704E8 CRC                   B1C6B8A4 (2982590628)\n+1704EC Compressed Size       00000214 (532)\n+1704F0 Uncompressed Size     000003C5 (965)\n \n-157CC5 LOCAL HEADER #1309    04034B50 (67324752)\n-157CC9 Extract Zip Spec      14 (20) '2.0'\n-157CCA Extract OS            00 (0) 'MS-DOS'\n-157CCB General Purpose Flag  0808 (2056)\n+1704F4 LOCAL HEADER #1309    04034B50 (67324752)\n+1704F8 Extract Zip Spec      14 (20) '2.0'\n+1704F9 Extract OS            00 (0) 'MS-DOS'\n+1704FA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-157CCD Compression Method    0008 (8) 'Deflated'\n-157CCF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-157CD3 CRC                   00000000 (0)\n-157CD7 Compressed Size       00000000 (0)\n-157CDB Uncompressed Size     00000000 (0)\n-157CDF Filename Length       0049 (73)\n-157CE1 Extra Length          0000 (0)\n-157CE3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1704FC Compression Method    0008 (8) 'Deflated'\n+1704FE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+170502 CRC                   00000000 (0)\n+170506 Compressed Size       00000000 (0)\n+17050A Uncompressed Size     00000000 (0)\n+17050E Filename Length       0036 (54)\n+170510 Extra Length          0000 (0)\n+170512 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x157CE3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x170512: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-157D2C PAYLOAD\n+170548 PAYLOAD               XX\n \n-1581D9 DATA DESCRIPTOR       08074B50 (134695760)\n-1581DD CRC                   8764F382 (2271540098)\n-1581E1 Compressed Size       000004AD (1197)\n-1581E5 Uncompressed Size     00000E76 (3702)\n+17054A DATA DESCRIPTOR       08074B50 (134695760)\n+17054E CRC                   00000000 (0)\n+170552 Compressed Size       00000002 (2)\n+170556 Uncompressed Size     00000000 (0)\n \n-1581E9 LOCAL HEADER #1310    04034B50 (67324752)\n-1581ED Extract Zip Spec      14 (20) '2.0'\n-1581EE Extract OS            00 (0) 'MS-DOS'\n-1581EF General Purpose Flag  0808 (2056)\n+17055A LOCAL HEADER #1310    04034B50 (67324752)\n+17055E Extract Zip Spec      14 (20) '2.0'\n+17055F Extract OS            00 (0) 'MS-DOS'\n+170560 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1581F1 Compression Method    0008 (8) 'Deflated'\n-1581F3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1581F7 CRC                   00000000 (0)\n-1581FB Compressed Size       00000000 (0)\n-1581FF Uncompressed Size     00000000 (0)\n-158203 Filename Length       0048 (72)\n-158205 Extra Length          0000 (0)\n-158207 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+170562 Compression Method    0008 (8) 'Deflated'\n+170564 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+170568 CRC                   00000000 (0)\n+17056C Compressed Size       00000000 (0)\n+170570 Uncompressed Size     00000000 (0)\n+170574 Filename Length       003D (61)\n+170576 Extra Length          0000 (0)\n+170578 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x158207: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x170578: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15824F PAYLOAD\n+1705B5 PAYLOAD\n \n-158536 DATA DESCRIPTOR       08074B50 (134695760)\n-15853A CRC                   E42AC0C2 (3828007106)\n-15853E Compressed Size       000002E7 (743)\n-158542 Uncompressed Size     000005D7 (1495)\n+1709AA DATA DESCRIPTOR       08074B50 (134695760)\n+1709AE CRC                   26CC786B (650934379)\n+1709B2 Compressed Size       000003F5 (1013)\n+1709B6 Uncompressed Size     00000B76 (2934)\n \n-158546 LOCAL HEADER #1311    04034B50 (67324752)\n-15854A Extract Zip Spec      14 (20) '2.0'\n-15854B Extract OS            00 (0) 'MS-DOS'\n-15854C General Purpose Flag  0808 (2056)\n+1709BA LOCAL HEADER #1311    04034B50 (67324752)\n+1709BE Extract Zip Spec      14 (20) '2.0'\n+1709BF Extract OS            00 (0) 'MS-DOS'\n+1709C0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15854E Compression Method    0008 (8) 'Deflated'\n-158550 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-158554 CRC                   00000000 (0)\n-158558 Compressed Size       00000000 (0)\n-15855C Uncompressed Size     00000000 (0)\n-158560 Filename Length       0059 (89)\n-158562 Extra Length          0000 (0)\n-158564 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1709C2 Compression Method    0008 (8) 'Deflated'\n+1709C4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1709C8 CRC                   00000000 (0)\n+1709CC Compressed Size       00000000 (0)\n+1709D0 Uncompressed Size     00000000 (0)\n+1709D4 Filename Length       0044 (68)\n+1709D6 Extra Length          0000 (0)\n+1709D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x158564: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1709D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1585BD PAYLOAD\n+170A1C PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-158993 DATA DESCRIPTOR       08074B50 (134695760)\n-158997 CRC                   33C91E00 (868818432)\n-15899B Compressed Size       000003D6 (982)\n-15899F Uncompressed Size     00000AEA (2794)\n+170A66 DATA DESCRIPTOR       08074B50 (134695760)\n+170A6A CRC                   39E2F889 (971176073)\n+170A6E Compressed Size       0000004A (74)\n+170A72 Uncompressed Size     0000004C (76)\n \n-1589A3 LOCAL HEADER #1312    04034B50 (67324752)\n-1589A7 Extract Zip Spec      14 (20) '2.0'\n-1589A8 Extract OS            00 (0) 'MS-DOS'\n-1589A9 General Purpose Flag  0808 (2056)\n+170A76 LOCAL HEADER #1312    04034B50 (67324752)\n+170A7A Extract Zip Spec      14 (20) '2.0'\n+170A7B Extract OS            00 (0) 'MS-DOS'\n+170A7C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1589AB Compression Method    0008 (8) 'Deflated'\n-1589AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1589B1 CRC                   00000000 (0)\n-1589B5 Compressed Size       00000000 (0)\n-1589B9 Uncompressed Size     00000000 (0)\n-1589BD Filename Length       003C (60)\n-1589BF Extra Length          0000 (0)\n-1589C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+170A7E Compression Method    0008 (8) 'Deflated'\n+170A80 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+170A84 CRC                   00000000 (0)\n+170A88 Compressed Size       00000000 (0)\n+170A8C Uncompressed Size     00000000 (0)\n+170A90 Filename Length       0020 (32)\n+170A92 Extra Length          0000 (0)\n+170A94 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1589C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x170A94: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1589FD PAYLOAD\n+170AB4 PAYLOAD               XX\n \n-159008 DATA DESCRIPTOR       08074B50 (134695760)\n-15900C CRC                   055EEF97 (90107799)\n-159010 Compressed Size       0000060B (1547)\n-159014 Uncompressed Size     000012A3 (4771)\n+170AB6 DATA DESCRIPTOR       08074B50 (134695760)\n+170ABA CRC                   00000000 (0)\n+170ABE Compressed Size       00000002 (2)\n+170AC2 Uncompressed Size     00000000 (0)\n \n-159018 LOCAL HEADER #1313    04034B50 (67324752)\n-15901C Extract Zip Spec      14 (20) '2.0'\n-15901D Extract OS            00 (0) 'MS-DOS'\n-15901E General Purpose Flag  0808 (2056)\n+170AC6 LOCAL HEADER #1313    04034B50 (67324752)\n+170ACA Extract Zip Spec      14 (20) '2.0'\n+170ACB Extract OS            00 (0) 'MS-DOS'\n+170ACC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-159020 Compression Method    0008 (8) 'Deflated'\n-159022 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-159026 CRC                   00000000 (0)\n-15902A Compressed Size       00000000 (0)\n-15902E Uncompressed Size     00000000 (0)\n-159032 Filename Length       004E (78)\n-159034 Extra Length          0000 (0)\n-159036 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+170ACE Compression Method    0008 (8) 'Deflated'\n+170AD0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+170AD4 CRC                   00000000 (0)\n+170AD8 Compressed Size       00000000 (0)\n+170ADC Uncompressed Size     00000000 (0)\n+170AE0 Filename Length       003E (62)\n+170AE2 Extra Length          0000 (0)\n+170AE4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x159036: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x170AE4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-159084 PAYLOAD\n+170B22 PAYLOAD\n \n-159450 DATA DESCRIPTOR       08074B50 (134695760)\n-159454 CRC                   02F66D1C (49704220)\n-159458 Compressed Size       000003CC (972)\n-15945C Uncompressed Size     000008F8 (2296)\n+170F92 DATA DESCRIPTOR       08074B50 (134695760)\n+170F96 CRC                   EDC5D490 (3989165200)\n+170F9A Compressed Size       00000470 (1136)\n+170F9E Uncompressed Size     00000E50 (3664)\n \n-159460 LOCAL HEADER #1314    04034B50 (67324752)\n-159464 Extract Zip Spec      14 (20) '2.0'\n-159465 Extract OS            00 (0) 'MS-DOS'\n-159466 General Purpose Flag  0808 (2056)\n+170FA2 LOCAL HEADER #1314    04034B50 (67324752)\n+170FA6 Extract Zip Spec      14 (20) '2.0'\n+170FA7 Extract OS            00 (0) 'MS-DOS'\n+170FA8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-159468 Compression Method    0008 (8) 'Deflated'\n-15946A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15946E CRC                   00000000 (0)\n-159472 Compressed Size       00000000 (0)\n-159476 Uncompressed Size     00000000 (0)\n-15947A Filename Length       0054 (84)\n-15947C Extra Length          0000 (0)\n-15947E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+170FAA Compression Method    0008 (8) 'Deflated'\n+170FAC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+170FB0 CRC                   00000000 (0)\n+170FB4 Compressed Size       00000000 (0)\n+170FB8 Uncompressed Size     00000000 (0)\n+170FBC Filename Length       0032 (50)\n+170FBE Extra Length          0000 (0)\n+170FC0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15947E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x170FC0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1594D2 PAYLOAD\n+170FF2 PAYLOAD\n \n-1598D3 DATA DESCRIPTOR       08074B50 (134695760)\n-1598D7 CRC                   0266C937 (40290615)\n-1598DB Compressed Size       00000401 (1025)\n-1598DF Uncompressed Size     00000AC3 (2755)\n+1723FA DATA DESCRIPTOR       08074B50 (134695760)\n+1723FE CRC                   F6A25F0D (4137836301)\n+172402 Compressed Size       00001408 (5128)\n+172406 Uncompressed Size     00005EAB (24235)\n \n-1598E3 LOCAL HEADER #1315    04034B50 (67324752)\n-1598E7 Extract Zip Spec      14 (20) '2.0'\n-1598E8 Extract OS            00 (0) 'MS-DOS'\n-1598E9 General Purpose Flag  0808 (2056)\n+17240A LOCAL HEADER #1315    04034B50 (67324752)\n+17240E Extract Zip Spec      14 (20) '2.0'\n+17240F Extract OS            00 (0) 'MS-DOS'\n+172410 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1598EB Compression Method    0008 (8) 'Deflated'\n-1598ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1598F1 CRC                   00000000 (0)\n-1598F5 Compressed Size       00000000 (0)\n-1598F9 Uncompressed Size     00000000 (0)\n-1598FD Filename Length       0050 (80)\n-1598FF Extra Length          0000 (0)\n-159901 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+172412 Compression Method    0008 (8) 'Deflated'\n+172414 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+172418 CRC                   00000000 (0)\n+17241C Compressed Size       00000000 (0)\n+172420 Uncompressed Size     00000000 (0)\n+172424 Filename Length       0039 (57)\n+172426 Extra Length          0000 (0)\n+172428 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x159901: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x172428: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-159951 PAYLOAD\n+172461 PAYLOAD\n \n-159E92 DATA DESCRIPTOR       08074B50 (134695760)\n-159E96 CRC                   BFC681E5 (3217457637)\n-159E9A Compressed Size       00000541 (1345)\n-159E9E Uncompressed Size     00000FB5 (4021)\n+1727B5 DATA DESCRIPTOR       08074B50 (134695760)\n+1727B9 CRC                   8E75DF39 (2390089529)\n+1727BD Compressed Size       00000354 (852)\n+1727C1 Uncompressed Size     000007A7 (1959)\n \n-159EA2 LOCAL HEADER #1316    04034B50 (67324752)\n-159EA6 Extract Zip Spec      14 (20) '2.0'\n-159EA7 Extract OS            00 (0) 'MS-DOS'\n-159EA8 General Purpose Flag  0808 (2056)\n+1727C5 LOCAL HEADER #1316    04034B50 (67324752)\n+1727C9 Extract Zip Spec      14 (20) '2.0'\n+1727CA Extract OS            00 (0) 'MS-DOS'\n+1727CB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-159EAA Compression Method    0008 (8) 'Deflated'\n-159EAC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-159EB0 CRC                   00000000 (0)\n-159EB4 Compressed Size       00000000 (0)\n-159EB8 Uncompressed Size     00000000 (0)\n-159EBC Filename Length       004B (75)\n-159EBE Extra Length          0000 (0)\n-159EC0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1727CD Compression Method    0008 (8) 'Deflated'\n+1727CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1727D3 CRC                   00000000 (0)\n+1727D7 Compressed Size       00000000 (0)\n+1727DB Uncompressed Size     00000000 (0)\n+1727DF Filename Length       003A (58)\n+1727E1 Extra Length          0000 (0)\n+1727E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x159EC0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1727E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-159F0B PAYLOAD\n+17281D PAYLOAD\n \n-15AB2D DATA DESCRIPTOR       08074B50 (134695760)\n-15AB31 CRC                   3C5C28F1 (1012672753)\n-15AB35 Compressed Size       00000C22 (3106)\n-15AB39 Uncompressed Size     0000348D (13453)\n+172E76 DATA DESCRIPTOR       08074B50 (134695760)\n+172E7A CRC                   6AA8E21B (1789452827)\n+172E7E Compressed Size       00000659 (1625)\n+172E82 Uncompressed Size     0000175E (5982)\n \n-15AB3D LOCAL HEADER #1317    04034B50 (67324752)\n-15AB41 Extract Zip Spec      14 (20) '2.0'\n-15AB42 Extract OS            00 (0) 'MS-DOS'\n-15AB43 General Purpose Flag  0808 (2056)\n+172E86 LOCAL HEADER #1317    04034B50 (67324752)\n+172E8A Extract Zip Spec      14 (20) '2.0'\n+172E8B Extract OS            00 (0) 'MS-DOS'\n+172E8C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15AB45 Compression Method    0008 (8) 'Deflated'\n-15AB47 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15AB4B CRC                   00000000 (0)\n-15AB4F Compressed Size       00000000 (0)\n-15AB53 Uncompressed Size     00000000 (0)\n-15AB57 Filename Length       0053 (83)\n-15AB59 Extra Length          0000 (0)\n-15AB5B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+172E8E Compression Method    0008 (8) 'Deflated'\n+172E90 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+172E94 CRC                   00000000 (0)\n+172E98 Compressed Size       00000000 (0)\n+172E9C Uncompressed Size     00000000 (0)\n+172EA0 Filename Length       0041 (65)\n+172EA2 Extra Length          0000 (0)\n+172EA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15AB5B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x172EA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15ABAE PAYLOAD\n+172EE5 PAYLOAD\n \n-15AF8C DATA DESCRIPTOR       08074B50 (134695760)\n-15AF90 CRC                   81760C22 (2171997218)\n-15AF94 Compressed Size       000003DE (990)\n-15AF98 Uncompressed Size     0000086F (2159)\n+173156 DATA DESCRIPTOR       08074B50 (134695760)\n+17315A CRC                   22BB3DD7 (582696407)\n+17315E Compressed Size       00000271 (625)\n+173162 Uncompressed Size     000004FA (1274)\n \n-15AF9C LOCAL HEADER #1318    04034B50 (67324752)\n-15AFA0 Extract Zip Spec      14 (20) '2.0'\n-15AFA1 Extract OS            00 (0) 'MS-DOS'\n-15AFA2 General Purpose Flag  0808 (2056)\n+173166 LOCAL HEADER #1318    04034B50 (67324752)\n+17316A Extract Zip Spec      14 (20) '2.0'\n+17316B Extract OS            00 (0) 'MS-DOS'\n+17316C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15AFA4 Compression Method    0008 (8) 'Deflated'\n-15AFA6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15AFAA CRC                   00000000 (0)\n-15AFAE Compressed Size       00000000 (0)\n-15AFB2 Uncompressed Size     00000000 (0)\n-15AFB6 Filename Length       0050 (80)\n-15AFB8 Extra Length          0000 (0)\n-15AFBA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17316E Compression Method    0008 (8) 'Deflated'\n+173170 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+173174 CRC                   00000000 (0)\n+173178 Compressed Size       00000000 (0)\n+17317C Uncompressed Size     00000000 (0)\n+173180 Filename Length       0035 (53)\n+173182 Extra Length          0000 (0)\n+173184 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15AFBA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x173184: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15B00A PAYLOAD\n+1731B9 PAYLOAD\n \n-15B513 DATA DESCRIPTOR       08074B50 (134695760)\n-15B517 CRC                   7D70DC8D (2104548493)\n-15B51B Compressed Size       00000509 (1289)\n-15B51F Uncompressed Size     00000E7E (3710)\n+1738C4 DATA DESCRIPTOR       08074B50 (134695760)\n+1738C8 CRC                   B2C3D88B (2999179403)\n+1738CC Compressed Size       0000070B (1803)\n+1738D0 Uncompressed Size     00001B65 (7013)\n \n-15B523 LOCAL HEADER #1319    04034B50 (67324752)\n-15B527 Extract Zip Spec      14 (20) '2.0'\n-15B528 Extract OS            00 (0) 'MS-DOS'\n-15B529 General Purpose Flag  0808 (2056)\n+1738D4 LOCAL HEADER #1319    04034B50 (67324752)\n+1738D8 Extract Zip Spec      14 (20) '2.0'\n+1738D9 Extract OS            00 (0) 'MS-DOS'\n+1738DA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15B52B Compression Method    0008 (8) 'Deflated'\n-15B52D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15B531 CRC                   00000000 (0)\n-15B535 Compressed Size       00000000 (0)\n-15B539 Uncompressed Size     00000000 (0)\n-15B53D Filename Length       0048 (72)\n-15B53F Extra Length          0000 (0)\n-15B541 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1738DC Compression Method    0008 (8) 'Deflated'\n+1738DE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1738E2 CRC                   00000000 (0)\n+1738E6 Compressed Size       00000000 (0)\n+1738EA Uncompressed Size     00000000 (0)\n+1738EE Filename Length       0025 (37)\n+1738F0 Extra Length          0000 (0)\n+1738F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15B541: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1738F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15B589 PAYLOAD\n+173917 PAYLOAD               XX\n \n-15B8E4 DATA DESCRIPTOR       08074B50 (134695760)\n-15B8E8 CRC                   BE3056BF (3190838975)\n-15B8EC Compressed Size       0000035B (859)\n-15B8F0 Uncompressed Size     00000848 (2120)\n+173919 DATA DESCRIPTOR       08074B50 (134695760)\n+17391D CRC                   00000000 (0)\n+173921 Compressed Size       00000002 (2)\n+173925 Uncompressed Size     00000000 (0)\n \n-15B8F4 LOCAL HEADER #1320    04034B50 (67324752)\n-15B8F8 Extract Zip Spec      14 (20) '2.0'\n-15B8F9 Extract OS            00 (0) 'MS-DOS'\n-15B8FA General Purpose Flag  0808 (2056)\n+173929 LOCAL HEADER #1320    04034B50 (67324752)\n+17392D Extract Zip Spec      14 (20) '2.0'\n+17392E Extract OS            00 (0) 'MS-DOS'\n+17392F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15B8FC Compression Method    0008 (8) 'Deflated'\n-15B8FE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15B902 CRC                   00000000 (0)\n-15B906 Compressed Size       00000000 (0)\n-15B90A Uncompressed Size     00000000 (0)\n-15B90E Filename Length       0030 (48)\n-15B910 Extra Length          0000 (0)\n-15B912 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+173931 Compression Method    0008 (8) 'Deflated'\n+173933 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+173937 CRC                   00000000 (0)\n+17393B Compressed Size       00000000 (0)\n+17393F Uncompressed Size     00000000 (0)\n+173943 Filename Length       0041 (65)\n+173945 Extra Length          0000 (0)\n+173947 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15B912: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x173947: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15B942 PAYLOAD               XX\n+173988 PAYLOAD\n \n-15B944 DATA DESCRIPTOR       08074B50 (134695760)\n-15B948 CRC                   00000000 (0)\n-15B94C Compressed Size       00000002 (2)\n-15B950 Uncompressed Size     00000000 (0)\n+173DAD DATA DESCRIPTOR       08074B50 (134695760)\n+173DB1 CRC                   E8B12001 (3903922177)\n+173DB5 Compressed Size       00000425 (1061)\n+173DB9 Uncompressed Size     00000AFB (2811)\n \n-15B954 LOCAL HEADER #1321    04034B50 (67324752)\n-15B958 Extract Zip Spec      14 (20) '2.0'\n-15B959 Extract OS            00 (0) 'MS-DOS'\n-15B95A General Purpose Flag  0808 (2056)\n+173DBD LOCAL HEADER #1321    04034B50 (67324752)\n+173DC1 Extract Zip Spec      14 (20) '2.0'\n+173DC2 Extract OS            00 (0) 'MS-DOS'\n+173DC3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15B95C Compression Method    0008 (8) 'Deflated'\n-15B95E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15B962 CRC                   00000000 (0)\n-15B966 Compressed Size       00000000 (0)\n-15B96A Uncompressed Size     00000000 (0)\n-15B96E Filename Length       0054 (84)\n-15B970 Extra Length          0000 (0)\n-15B972 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+173DC5 Compression Method    0008 (8) 'Deflated'\n+173DC7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+173DCB CRC                   00000000 (0)\n+173DCF Compressed Size       00000000 (0)\n+173DD3 Uncompressed Size     00000000 (0)\n+173DD7 Filename Length       0041 (65)\n+173DD9 Extra Length          0000 (0)\n+173DDB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15B972: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x173DDB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15B9C6 PAYLOAD\n+173E1C PAYLOAD\n \n-15C556 DATA DESCRIPTOR       08074B50 (134695760)\n-15C55A CRC                   E322696B (3810683243)\n-15C55E Compressed Size       00000B90 (2960)\n-15C562 Uncompressed Size     00002E62 (11874)\n+174608 DATA DESCRIPTOR       08074B50 (134695760)\n+17460C CRC                   0823E298 (136569496)\n+174610 Compressed Size       000007EC (2028)\n+174614 Uncompressed Size     00001FFE (8190)\n \n-15C566 LOCAL HEADER #1322    04034B50 (67324752)\n-15C56A Extract Zip Spec      14 (20) '2.0'\n-15C56B Extract OS            00 (0) 'MS-DOS'\n-15C56C General Purpose Flag  0808 (2056)\n+174618 LOCAL HEADER #1322    04034B50 (67324752)\n+17461C Extract Zip Spec      14 (20) '2.0'\n+17461D Extract OS            00 (0) 'MS-DOS'\n+17461E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15C56E Compression Method    0008 (8) 'Deflated'\n-15C570 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15C574 CRC                   00000000 (0)\n-15C578 Compressed Size       00000000 (0)\n-15C57C Uncompressed Size     00000000 (0)\n-15C580 Filename Length       004E (78)\n-15C582 Extra Length          0000 (0)\n-15C584 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+174620 Compression Method    0008 (8) 'Deflated'\n+174622 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+174626 CRC                   00000000 (0)\n+17462A Compressed Size       00000000 (0)\n+17462E Uncompressed Size     00000000 (0)\n+174632 Filename Length       0035 (53)\n+174634 Extra Length          0000 (0)\n+174636 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15C584: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x174636: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15C5D2 PAYLOAD\n+17466B PAYLOAD               XX\n \n-15CD90 DATA DESCRIPTOR       08074B50 (134695760)\n-15CD94 CRC                   6CE6F13F (1827074367)\n-15CD98 Compressed Size       000007BE (1982)\n-15CD9C Uncompressed Size     00001D8A (7562)\n+17466D DATA DESCRIPTOR       08074B50 (134695760)\n+174671 CRC                   00000000 (0)\n+174675 Compressed Size       00000002 (2)\n+174679 Uncompressed Size     00000000 (0)\n \n-15CDA0 LOCAL HEADER #1323    04034B50 (67324752)\n-15CDA4 Extract Zip Spec      14 (20) '2.0'\n-15CDA5 Extract OS            00 (0) 'MS-DOS'\n-15CDA6 General Purpose Flag  0808 (2056)\n+17467D LOCAL HEADER #1323    04034B50 (67324752)\n+174681 Extract Zip Spec      14 (20) '2.0'\n+174682 Extract OS            00 (0) 'MS-DOS'\n+174683 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15CDA8 Compression Method    0008 (8) 'Deflated'\n-15CDAA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15CDAE CRC                   00000000 (0)\n-15CDB2 Compressed Size       00000000 (0)\n-15CDB6 Uncompressed Size     00000000 (0)\n-15CDBA Filename Length       002B (43)\n-15CDBC Extra Length          0000 (0)\n-15CDBE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+174685 Compression Method    0008 (8) 'Deflated'\n+174687 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17468B CRC                   00000000 (0)\n+17468F Compressed Size       00000000 (0)\n+174693 Uncompressed Size     00000000 (0)\n+174697 Filename Length       003C (60)\n+174699 Extra Length          0000 (0)\n+17469B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15CDBE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17469B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15CDE9 PAYLOAD               XX\n+1746D7 PAYLOAD\n \n-15CDEB DATA DESCRIPTOR       08074B50 (134695760)\n-15CDEF CRC                   00000000 (0)\n-15CDF3 Compressed Size       00000002 (2)\n-15CDF7 Uncompressed Size     00000000 (0)\n+174A9B DATA DESCRIPTOR       08074B50 (134695760)\n+174A9F CRC                   6A8F4F7A (1787776890)\n+174AA3 Compressed Size       000003C4 (964)\n+174AA7 Uncompressed Size     00000BE1 (3041)\n \n-15CDFB LOCAL HEADER #1324    04034B50 (67324752)\n-15CDFF Extract Zip Spec      14 (20) '2.0'\n-15CE00 Extract OS            00 (0) 'MS-DOS'\n-15CE01 General Purpose Flag  0808 (2056)\n+174AAB LOCAL HEADER #1324    04034B50 (67324752)\n+174AAF Extract Zip Spec      14 (20) '2.0'\n+174AB0 Extract OS            00 (0) 'MS-DOS'\n+174AB1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15CE03 Compression Method    0008 (8) 'Deflated'\n-15CE05 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15CE09 CRC                   00000000 (0)\n-15CE0D Compressed Size       00000000 (0)\n-15CE11 Uncompressed Size     00000000 (0)\n-15CE15 Filename Length       0051 (81)\n-15CE17 Extra Length          0000 (0)\n-15CE19 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+174AB3 Compression Method    0008 (8) 'Deflated'\n+174AB5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+174AB9 CRC                   00000000 (0)\n+174ABD Compressed Size       00000000 (0)\n+174AC1 Uncompressed Size     00000000 (0)\n+174AC5 Filename Length       0043 (67)\n+174AC7 Extra Length          0000 (0)\n+174AC9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15CE19: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x174AC9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15CE6A PAYLOAD\n+174B0C PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-15D2F5 DATA DESCRIPTOR       08074B50 (134695760)\n-15D2F9 CRC                   C9115A1F (3373357599)\n-15D2FD Compressed Size       0000048B (1163)\n-15D301 Uncompressed Size     00000C95 (3221)\n+174B55 DATA DESCRIPTOR       08074B50 (134695760)\n+174B59 CRC                   BACBA827 (3133909031)\n+174B5D Compressed Size       00000049 (73)\n+174B61 Uncompressed Size     0000004B (75)\n \n-15D305 LOCAL HEADER #1325    04034B50 (67324752)\n-15D309 Extract Zip Spec      14 (20) '2.0'\n-15D30A Extract OS            00 (0) 'MS-DOS'\n-15D30B General Purpose Flag  0808 (2056)\n+174B65 LOCAL HEADER #1325    04034B50 (67324752)\n+174B69 Extract Zip Spec      14 (20) '2.0'\n+174B6A Extract OS            00 (0) 'MS-DOS'\n+174B6B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15D30D Compression Method    0008 (8) 'Deflated'\n-15D30F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15D313 CRC                   00000000 (0)\n-15D317 Compressed Size       00000000 (0)\n-15D31B Uncompressed Size     00000000 (0)\n-15D31F Filename Length       0047 (71)\n-15D321 Extra Length          0000 (0)\n-15D323 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+174B6D Compression Method    0008 (8) 'Deflated'\n+174B6F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+174B73 CRC                   00000000 (0)\n+174B77 Compressed Size       00000000 (0)\n+174B7B Uncompressed Size     00000000 (0)\n+174B7F Filename Length       001F (31)\n+174B81 Extra Length          0000 (0)\n+174B83 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15D323: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x174B83: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15D36A PAYLOAD\n+174BA2 PAYLOAD               XX\n \n-15D57A DATA DESCRIPTOR       08074B50 (134695760)\n-15D57E CRC                   2197D7D3 (563599315)\n-15D582 Compressed Size       00000210 (528)\n-15D586 Uncompressed Size     00000398 (920)\n+174BA4 DATA DESCRIPTOR       08074B50 (134695760)\n+174BA8 CRC                   00000000 (0)\n+174BAC Compressed Size       00000002 (2)\n+174BB0 Uncompressed Size     00000000 (0)\n \n-15D58A LOCAL HEADER #1326    04034B50 (67324752)\n-15D58E Extract Zip Spec      14 (20) '2.0'\n-15D58F Extract OS            00 (0) 'MS-DOS'\n-15D590 General Purpose Flag  0808 (2056)\n+174BB4 LOCAL HEADER #1326    04034B50 (67324752)\n+174BB8 Extract Zip Spec      14 (20) '2.0'\n+174BB9 Extract OS            00 (0) 'MS-DOS'\n+174BBA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15D592 Compression Method    0008 (8) 'Deflated'\n-15D594 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15D598 CRC                   00000000 (0)\n-15D59C Compressed Size       00000000 (0)\n-15D5A0 Uncompressed Size     00000000 (0)\n-15D5A4 Filename Length       004A (74)\n-15D5A6 Extra Length          0000 (0)\n-15D5A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+174BBC Compression Method    0008 (8) 'Deflated'\n+174BBE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+174BC2 CRC                   00000000 (0)\n+174BC6 Compressed Size       00000000 (0)\n+174BCA Uncompressed Size     00000000 (0)\n+174BCE Filename Length       0030 (48)\n+174BD0 Extra Length          0000 (0)\n+174BD2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15D5A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x174BD2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15D5F2 PAYLOAD\n+174C02 PAYLOAD\n \n-15D84D DATA DESCRIPTOR       08074B50 (134695760)\n-15D851 CRC                   D03865FF (3493357055)\n-15D855 Compressed Size       0000025B (603)\n-15D859 Uncompressed Size     00000454 (1108)\n+1756A2 DATA DESCRIPTOR       08074B50 (134695760)\n+1756A6 CRC                   5CAA5BA4 (1554668452)\n+1756AA Compressed Size       00000AA0 (2720)\n+1756AE Uncompressed Size     00002A93 (10899)\n \n-15D85D LOCAL HEADER #1327    04034B50 (67324752)\n-15D861 Extract Zip Spec      14 (20) '2.0'\n-15D862 Extract OS            00 (0) 'MS-DOS'\n-15D863 General Purpose Flag  0808 (2056)\n+1756B2 LOCAL HEADER #1327    04034B50 (67324752)\n+1756B6 Extract Zip Spec      14 (20) '2.0'\n+1756B7 Extract OS            00 (0) 'MS-DOS'\n+1756B8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15D865 Compression Method    0008 (8) 'Deflated'\n-15D867 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15D86B CRC                   00000000 (0)\n-15D86F Compressed Size       00000000 (0)\n-15D873 Uncompressed Size     00000000 (0)\n-15D877 Filename Length       0040 (64)\n-15D879 Extra Length          0000 (0)\n-15D87B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1756BA Compression Method    0008 (8) 'Deflated'\n+1756BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1756C0 CRC                   00000000 (0)\n+1756C4 Compressed Size       00000000 (0)\n+1756C8 Uncompressed Size     00000000 (0)\n+1756CC Filename Length       0039 (57)\n+1756CE Extra Length          0000 (0)\n+1756D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15D87B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1756D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15D8BB PAYLOAD\n+175709 PAYLOAD\n \n-15E318 DATA DESCRIPTOR       08074B50 (134695760)\n-15E31C CRC                   D6056B09 (3590679305)\n-15E320 Compressed Size       00000A5D (2653)\n-15E324 Uncompressed Size     000039C3 (14787)\n+1759C7 DATA DESCRIPTOR       08074B50 (134695760)\n+1759CB CRC                   55DBCEB5 (1440468661)\n+1759CF Compressed Size       000002BE (702)\n+1759D3 Uncompressed Size     0000058E (1422)\n \n-15E328 LOCAL HEADER #1328    04034B50 (67324752)\n-15E32C Extract Zip Spec      14 (20) '2.0'\n-15E32D Extract OS            00 (0) 'MS-DOS'\n-15E32E General Purpose Flag  0808 (2056)\n+1759D7 LOCAL HEADER #1328    04034B50 (67324752)\n+1759DB Extract Zip Spec      14 (20) '2.0'\n+1759DC Extract OS            00 (0) 'MS-DOS'\n+1759DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15E330 Compression Method    0008 (8) 'Deflated'\n-15E332 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15E336 CRC                   00000000 (0)\n-15E33A Compressed Size       00000000 (0)\n-15E33E Uncompressed Size     00000000 (0)\n-15E342 Filename Length       0044 (68)\n-15E344 Extra Length          0000 (0)\n-15E346 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1759DF Compression Method    0008 (8) 'Deflated'\n+1759E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1759E5 CRC                   00000000 (0)\n+1759E9 Compressed Size       00000000 (0)\n+1759ED Uncompressed Size     00000000 (0)\n+1759F1 Filename Length       0037 (55)\n+1759F3 Extra Length          0000 (0)\n+1759F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15E346: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1759F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15E38A PAYLOAD\n+175A2C PAYLOAD\n \n-15E779 DATA DESCRIPTOR       08074B50 (134695760)\n-15E77D CRC                   8A132C8F (2316512399)\n-15E781 Compressed Size       000003EF (1007)\n-15E785 Uncompressed Size     00000AB9 (2745)\n+175CEC DATA DESCRIPTOR       08074B50 (134695760)\n+175CF0 CRC                   74ECF448 (1961686088)\n+175CF4 Compressed Size       000002C0 (704)\n+175CF8 Uncompressed Size     00000590 (1424)\n \n-15E789 LOCAL HEADER #1329    04034B50 (67324752)\n-15E78D Extract Zip Spec      14 (20) '2.0'\n-15E78E Extract OS            00 (0) 'MS-DOS'\n-15E78F General Purpose Flag  0808 (2056)\n+175CFC LOCAL HEADER #1329    04034B50 (67324752)\n+175D00 Extract Zip Spec      14 (20) '2.0'\n+175D01 Extract OS            00 (0) 'MS-DOS'\n+175D02 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15E791 Compression Method    0008 (8) 'Deflated'\n-15E793 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15E797 CRC                   00000000 (0)\n-15E79B Compressed Size       00000000 (0)\n-15E79F Uncompressed Size     00000000 (0)\n-15E7A3 Filename Length       0045 (69)\n-15E7A5 Extra Length          0000 (0)\n-15E7A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+175D04 Compression Method    0008 (8) 'Deflated'\n+175D06 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+175D0A CRC                   00000000 (0)\n+175D0E Compressed Size       00000000 (0)\n+175D12 Uncompressed Size     00000000 (0)\n+175D16 Filename Length       0038 (56)\n+175D18 Extra Length          0000 (0)\n+175D1A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15E7A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x175D1A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15E7EC PAYLOAD\n+175D52 PAYLOAD\n \n-15ED8E DATA DESCRIPTOR       08074B50 (134695760)\n-15ED92 CRC                   F9713EB9 (4184948409)\n-15ED96 Compressed Size       000005A2 (1442)\n-15ED9A Uncompressed Size     00001198 (4504)\n+1760B5 DATA DESCRIPTOR       08074B50 (134695760)\n+1760B9 CRC                   5119DCCD (1360649421)\n+1760BD Compressed Size       00000363 (867)\n+1760C1 Uncompressed Size     0000097E (2430)\n \n-15ED9E LOCAL HEADER #1330    04034B50 (67324752)\n-15EDA2 Extract Zip Spec      14 (20) '2.0'\n-15EDA3 Extract OS            00 (0) 'MS-DOS'\n-15EDA4 General Purpose Flag  0808 (2056)\n+1760C5 LOCAL HEADER #1330    04034B50 (67324752)\n+1760C9 Extract Zip Spec      14 (20) '2.0'\n+1760CA Extract OS            00 (0) 'MS-DOS'\n+1760CB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15EDA6 Compression Method    0008 (8) 'Deflated'\n-15EDA8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15EDAC CRC                   00000000 (0)\n-15EDB0 Compressed Size       00000000 (0)\n-15EDB4 Uncompressed Size     00000000 (0)\n-15EDB8 Filename Length       0050 (80)\n-15EDBA Extra Length          0000 (0)\n-15EDBC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1760CD Compression Method    0008 (8) 'Deflated'\n+1760CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1760D3 CRC                   00000000 (0)\n+1760D7 Compressed Size       00000000 (0)\n+1760DB Uncompressed Size     00000000 (0)\n+1760DF Filename Length       0040 (64)\n+1760E1 Extra Length          0000 (0)\n+1760E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15EDBC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1760E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15EE0C PAYLOAD\n+176123 PAYLOAD\n \n-15F200 DATA DESCRIPTOR       08074B50 (134695760)\n-15F204 CRC                   5914D57F (1494537599)\n-15F208 Compressed Size       000003F4 (1012)\n-15F20C Uncompressed Size     00000A34 (2612)\n+176BA3 DATA DESCRIPTOR       08074B50 (134695760)\n+176BA7 CRC                   A9FB32A5 (2851812005)\n+176BAB Compressed Size       00000A80 (2688)\n+176BAF Uncompressed Size     000027AF (10159)\n \n-15F210 LOCAL HEADER #1331    04034B50 (67324752)\n-15F214 Extract Zip Spec      14 (20) '2.0'\n-15F215 Extract OS            00 (0) 'MS-DOS'\n-15F216 General Purpose Flag  0808 (2056)\n+176BB3 LOCAL HEADER #1331    04034B50 (67324752)\n+176BB7 Extract Zip Spec      14 (20) '2.0'\n+176BB8 Extract OS            00 (0) 'MS-DOS'\n+176BB9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15F218 Compression Method    0008 (8) 'Deflated'\n-15F21A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15F21E CRC                   00000000 (0)\n-15F222 Compressed Size       00000000 (0)\n-15F226 Uncompressed Size     00000000 (0)\n-15F22A Filename Length       0032 (50)\n-15F22C Extra Length          0000 (0)\n-15F22E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+176BBB Compression Method    0008 (8) 'Deflated'\n+176BBD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+176BC1 CRC                   00000000 (0)\n+176BC5 Compressed Size       00000000 (0)\n+176BC9 Uncompressed Size     00000000 (0)\n+176BCD Filename Length       0047 (71)\n+176BCF Extra Length          0000 (0)\n+176BD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15F22E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x176BD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15F260 PAYLOAD\n+176C18 PAYLOAD\n \n-15F4A7 DATA DESCRIPTOR       08074B50 (134695760)\n-15F4AB CRC                   F9948D9B (4187262363)\n-15F4AF Compressed Size       00000247 (583)\n-15F4B3 Uncompressed Size     00000403 (1027)\n+176E85 DATA DESCRIPTOR       08074B50 (134695760)\n+176E89 CRC                   1848A62B (407414315)\n+176E8D Compressed Size       0000026D (621)\n+176E91 Uncompressed Size     000004F5 (1269)\n \n-15F4B7 LOCAL HEADER #1332    04034B50 (67324752)\n-15F4BB Extract Zip Spec      14 (20) '2.0'\n-15F4BC Extract OS            00 (0) 'MS-DOS'\n-15F4BD General Purpose Flag  0808 (2056)\n+176E95 LOCAL HEADER #1332    04034B50 (67324752)\n+176E99 Extract Zip Spec      14 (20) '2.0'\n+176E9A Extract OS            00 (0) 'MS-DOS'\n+176E9B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15F4BF Compression Method    0008 (8) 'Deflated'\n-15F4C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15F4C5 CRC                   00000000 (0)\n-15F4C9 Compressed Size       00000000 (0)\n-15F4CD Uncompressed Size     00000000 (0)\n-15F4D1 Filename Length       002A (42)\n-15F4D3 Extra Length          0000 (0)\n-15F4D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+176E9D Compression Method    0008 (8) 'Deflated'\n+176E9F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+176EA3 CRC                   00000000 (0)\n+176EA7 Compressed Size       00000000 (0)\n+176EAB Uncompressed Size     00000000 (0)\n+176EAF Filename Length       0034 (52)\n+176EB1 Extra Length          0000 (0)\n+176EB3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15F4D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x176EB3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15F4FF PAYLOAD               XX\n+176EE7 PAYLOAD               XX\n \n-15F501 DATA DESCRIPTOR       08074B50 (134695760)\n-15F505 CRC                   00000000 (0)\n-15F509 Compressed Size       00000002 (2)\n-15F50D Uncompressed Size     00000000 (0)\n+176EE9 DATA DESCRIPTOR       08074B50 (134695760)\n+176EED CRC                   00000000 (0)\n+176EF1 Compressed Size       00000002 (2)\n+176EF5 Uncompressed Size     00000000 (0)\n \n-15F511 LOCAL HEADER #1333    04034B50 (67324752)\n-15F515 Extract Zip Spec      14 (20) '2.0'\n-15F516 Extract OS            00 (0) 'MS-DOS'\n-15F517 General Purpose Flag  0808 (2056)\n+176EF9 LOCAL HEADER #1333    04034B50 (67324752)\n+176EFD Extract Zip Spec      14 (20) '2.0'\n+176EFE Extract OS            00 (0) 'MS-DOS'\n+176EFF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15F519 Compression Method    0008 (8) 'Deflated'\n-15F51B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15F51F CRC                   00000000 (0)\n-15F523 Compressed Size       00000000 (0)\n-15F527 Uncompressed Size     00000000 (0)\n-15F52B Filename Length       004C (76)\n-15F52D Extra Length          0000 (0)\n-15F52F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+176F01 Compression Method    0008 (8) 'Deflated'\n+176F03 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+176F07 CRC                   00000000 (0)\n+176F0B Compressed Size       00000000 (0)\n+176F0F Uncompressed Size     00000000 (0)\n+176F13 Filename Length       003B (59)\n+176F15 Extra Length          0000 (0)\n+176F17 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15F52F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x176F17: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15F57B PAYLOAD\n+176F52 PAYLOAD\n \n-15F88F DATA DESCRIPTOR       08074B50 (134695760)\n-15F893 CRC                   D0D8B588 (3503863176)\n-15F897 Compressed Size       00000314 (788)\n-15F89B Uncompressed Size     000006A9 (1705)\n+1773FC DATA DESCRIPTOR       08074B50 (134695760)\n+177400 CRC                   72A63AD4 (1923496660)\n+177404 Compressed Size       000004AA (1194)\n+177408 Uncompressed Size     0000122E (4654)\n \n-15F89F LOCAL HEADER #1334    04034B50 (67324752)\n-15F8A3 Extract Zip Spec      14 (20) '2.0'\n-15F8A4 Extract OS            00 (0) 'MS-DOS'\n-15F8A5 General Purpose Flag  0808 (2056)\n+17740C LOCAL HEADER #1334    04034B50 (67324752)\n+177410 Extract Zip Spec      14 (20) '2.0'\n+177411 Extract OS            00 (0) 'MS-DOS'\n+177412 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15F8A7 Compression Method    0008 (8) 'Deflated'\n-15F8A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15F8AD CRC                   00000000 (0)\n-15F8B1 Compressed Size       00000000 (0)\n-15F8B5 Uncompressed Size     00000000 (0)\n-15F8B9 Filename Length       0046 (70)\n-15F8BB Extra Length          0000 (0)\n-15F8BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+177414 Compression Method    0008 (8) 'Deflated'\n+177416 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17741A CRC                   00000000 (0)\n+17741E Compressed Size       00000000 (0)\n+177422 Uncompressed Size     00000000 (0)\n+177426 Filename Length       0042 (66)\n+177428 Extra Length          0000 (0)\n+17742A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15F8BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17742A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15F903 PAYLOAD\n+17746C PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-15FBF8 DATA DESCRIPTOR       08074B50 (134695760)\n-15FBFC CRC                   DDD86D2D (3721948461)\n-15FC00 Compressed Size       000002F5 (757)\n-15FC04 Uncompressed Size     000006A3 (1699)\n+1774B4 DATA DESCRIPTOR       08074B50 (134695760)\n+1774B8 CRC                   88872903 (2290559235)\n+1774BC Compressed Size       00000048 (72)\n+1774C0 Uncompressed Size     0000004A (74)\n \n-15FC08 LOCAL HEADER #1335    04034B50 (67324752)\n-15FC0C Extract Zip Spec      14 (20) '2.0'\n-15FC0D Extract OS            00 (0) 'MS-DOS'\n-15FC0E General Purpose Flag  0808 (2056)\n+1774C4 LOCAL HEADER #1335    04034B50 (67324752)\n+1774C8 Extract Zip Spec      14 (20) '2.0'\n+1774C9 Extract OS            00 (0) 'MS-DOS'\n+1774CA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15FC10 Compression Method    0008 (8) 'Deflated'\n-15FC12 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15FC16 CRC                   00000000 (0)\n-15FC1A Compressed Size       00000000 (0)\n-15FC1E Uncompressed Size     00000000 (0)\n-15FC22 Filename Length       0026 (38)\n-15FC24 Extra Length          0000 (0)\n-15FC26 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1774CC Compression Method    0008 (8) 'Deflated'\n+1774CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1774D2 CRC                   00000000 (0)\n+1774D6 Compressed Size       00000000 (0)\n+1774DA Uncompressed Size     00000000 (0)\n+1774DE Filename Length       0023 (35)\n+1774E0 Extra Length          0000 (0)\n+1774E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15FC26: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1774E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15FC4C PAYLOAD               XX\n+177505 PAYLOAD               XX\n \n-15FC4E DATA DESCRIPTOR       08074B50 (134695760)\n-15FC52 CRC                   00000000 (0)\n-15FC56 Compressed Size       00000002 (2)\n-15FC5A Uncompressed Size     00000000 (0)\n+177507 DATA DESCRIPTOR       08074B50 (134695760)\n+17750B CRC                   00000000 (0)\n+17750F Compressed Size       00000002 (2)\n+177513 Uncompressed Size     00000000 (0)\n \n-15FC5E LOCAL HEADER #1336    04034B50 (67324752)\n-15FC62 Extract Zip Spec      14 (20) '2.0'\n-15FC63 Extract OS            00 (0) 'MS-DOS'\n-15FC64 General Purpose Flag  0808 (2056)\n+177517 LOCAL HEADER #1336    04034B50 (67324752)\n+17751B Extract Zip Spec      14 (20) '2.0'\n+17751C Extract OS            00 (0) 'MS-DOS'\n+17751D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-15FC66 Compression Method    0008 (8) 'Deflated'\n-15FC68 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-15FC6C CRC                   00000000 (0)\n-15FC70 Compressed Size       00000000 (0)\n-15FC74 Uncompressed Size     00000000 (0)\n-15FC78 Filename Length       0047 (71)\n-15FC7A Extra Length          0000 (0)\n-15FC7C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17751F Compression Method    0008 (8) 'Deflated'\n+177521 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+177525 CRC                   00000000 (0)\n+177529 Compressed Size       00000000 (0)\n+17752D Uncompressed Size     00000000 (0)\n+177531 Filename Length       0038 (56)\n+177533 Extra Length          0000 (0)\n+177535 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x15FC7C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x177535: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-15FCC3 PAYLOAD\n+17756D PAYLOAD\n \n-160209 DATA DESCRIPTOR       08074B50 (134695760)\n-16020D CRC                   F2CE052F (4073588015)\n-160211 Compressed Size       00000546 (1350)\n-160215 Uncompressed Size     00000F34 (3892)\n+177F74 DATA DESCRIPTOR       08074B50 (134695760)\n+177F78 CRC                   BDA5F435 (3181769781)\n+177F7C Compressed Size       00000A07 (2567)\n+177F80 Uncompressed Size     000031C7 (12743)\n \n-160219 LOCAL HEADER #1337    04034B50 (67324752)\n-16021D Extract Zip Spec      14 (20) '2.0'\n-16021E Extract OS            00 (0) 'MS-DOS'\n-16021F General Purpose Flag  0808 (2056)\n+177F84 LOCAL HEADER #1337    04034B50 (67324752)\n+177F88 Extract Zip Spec      14 (20) '2.0'\n+177F89 Extract OS            00 (0) 'MS-DOS'\n+177F8A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-160221 Compression Method    0008 (8) 'Deflated'\n-160223 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-160227 CRC                   00000000 (0)\n-16022B Compressed Size       00000000 (0)\n-16022F Uncompressed Size     00000000 (0)\n-160233 Filename Length       003B (59)\n-160235 Extra Length          0000 (0)\n-160237 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+177F8C Compression Method    0008 (8) 'Deflated'\n+177F8E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+177F92 CRC                   00000000 (0)\n+177F96 Compressed Size       00000000 (0)\n+177F9A Uncompressed Size     00000000 (0)\n+177F9E Filename Length       003F (63)\n+177FA0 Extra Length          0000 (0)\n+177FA2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x160237: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x177FA2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-160272 PAYLOAD\n+177FE1 PAYLOAD\n \n-160DC2 DATA DESCRIPTOR       08074B50 (134695760)\n-160DC6 CRC                   BF63BCF2 (3210984690)\n-160DCA Compressed Size       00000B50 (2896)\n-160DCE Uncompressed Size     00002BFC (11260)\n+17824A DATA DESCRIPTOR       08074B50 (134695760)\n+17824E CRC                   BA9C4A25 (3130804773)\n+178252 Compressed Size       00000269 (617)\n+178256 Uncompressed Size     000004DF (1247)\n \n-160DD2 LOCAL HEADER #1338    04034B50 (67324752)\n-160DD6 Extract Zip Spec      14 (20) '2.0'\n-160DD7 Extract OS            00 (0) 'MS-DOS'\n-160DD8 General Purpose Flag  0808 (2056)\n+17825A LOCAL HEADER #1338    04034B50 (67324752)\n+17825E Extract Zip Spec      14 (20) '2.0'\n+17825F Extract OS            00 (0) 'MS-DOS'\n+178260 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-160DDA Compression Method    0008 (8) 'Deflated'\n-160DDC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-160DE0 CRC                   00000000 (0)\n-160DE4 Compressed Size       00000000 (0)\n-160DE8 Uncompressed Size     00000000 (0)\n-160DEC Filename Length       004E (78)\n-160DEE Extra Length          0000 (0)\n-160DF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+178262 Compression Method    0008 (8) 'Deflated'\n+178264 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+178268 CRC                   00000000 (0)\n+17826C Compressed Size       00000000 (0)\n+178270 Uncompressed Size     00000000 (0)\n+178274 Filename Length       0048 (72)\n+178276 Extra Length          0000 (0)\n+178278 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x160DF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x178278: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-160E3E PAYLOAD\n+1782C0 PAYLOAD\n \n-16125C DATA DESCRIPTOR       08074B50 (134695760)\n-161260 CRC                   E2D6B20B (3805721099)\n-161264 Compressed Size       0000041E (1054)\n-161268 Uncompressed Size     00000CC3 (3267)\n+178A1F DATA DESCRIPTOR       08074B50 (134695760)\n+178A23 CRC                   23EFD54C (602920268)\n+178A27 Compressed Size       0000075F (1887)\n+178A2B Uncompressed Size     00001F2E (7982)\n \n-16126C LOCAL HEADER #1339    04034B50 (67324752)\n-161270 Extract Zip Spec      14 (20) '2.0'\n-161271 Extract OS            00 (0) 'MS-DOS'\n-161272 General Purpose Flag  0808 (2056)\n+178A2F LOCAL HEADER #1339    04034B50 (67324752)\n+178A33 Extract Zip Spec      14 (20) '2.0'\n+178A34 Extract OS            00 (0) 'MS-DOS'\n+178A35 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-161274 Compression Method    0008 (8) 'Deflated'\n-161276 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16127A CRC                   00000000 (0)\n-16127E Compressed Size       00000000 (0)\n-161282 Uncompressed Size     00000000 (0)\n-161286 Filename Length       0042 (66)\n-161288 Extra Length          0000 (0)\n-16128A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+178A37 Compression Method    0008 (8) 'Deflated'\n+178A39 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+178A3D CRC                   00000000 (0)\n+178A41 Compressed Size       00000000 (0)\n+178A45 Uncompressed Size     00000000 (0)\n+178A49 Filename Length       004F (79)\n+178A4B Extra Length          0000 (0)\n+178A4D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16128A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x178A4D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1612CC PAYLOAD\n+178A9C PAYLOAD\n \n-1614D9 DATA DESCRIPTOR       08074B50 (134695760)\n-1614DD CRC                   ACAF58B5 (2897172661)\n-1614E1 Compressed Size       0000020D (525)\n-1614E5 Uncompressed Size     00000394 (916)\n+178D0C DATA DESCRIPTOR       08074B50 (134695760)\n+178D10 CRC                   CC2EC0C4 (3425616068)\n+178D14 Compressed Size       00000270 (624)\n+178D18 Uncompressed Size     00000502 (1282)\n \n-1614E9 LOCAL HEADER #1340    04034B50 (67324752)\n-1614ED Extract Zip Spec      14 (20) '2.0'\n-1614EE Extract OS            00 (0) 'MS-DOS'\n-1614EF General Purpose Flag  0808 (2056)\n+178D1C LOCAL HEADER #1340    04034B50 (67324752)\n+178D20 Extract Zip Spec      14 (20) '2.0'\n+178D21 Extract OS            00 (0) 'MS-DOS'\n+178D22 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1614F1 Compression Method    0008 (8) 'Deflated'\n-1614F3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1614F7 CRC                   00000000 (0)\n-1614FB Compressed Size       00000000 (0)\n-1614FF Uncompressed Size     00000000 (0)\n-161503 Filename Length       003C (60)\n-161505 Extra Length          0000 (0)\n-161507 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+178D24 Compression Method    0008 (8) 'Deflated'\n+178D26 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+178D2A CRC                   00000000 (0)\n+178D2E Compressed Size       00000000 (0)\n+178D32 Uncompressed Size     00000000 (0)\n+178D36 Filename Length       0038 (56)\n+178D38 Extra Length          0000 (0)\n+178D3A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x161507: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x178D3A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-161543 PAYLOAD\n+178D72 PAYLOAD               XX\n \n-162F43 DATA DESCRIPTOR       08074B50 (134695760)\n-162F47 CRC                   963EDCDB (2520702171)\n-162F4B Compressed Size       00001A00 (6656)\n-162F4F Uncompressed Size     0000723A (29242)\n+178D74 DATA DESCRIPTOR       08074B50 (134695760)\n+178D78 CRC                   00000000 (0)\n+178D7C Compressed Size       00000002 (2)\n+178D80 Uncompressed Size     00000000 (0)\n \n-162F53 LOCAL HEADER #1341    04034B50 (67324752)\n-162F57 Extract Zip Spec      14 (20) '2.0'\n-162F58 Extract OS            00 (0) 'MS-DOS'\n-162F59 General Purpose Flag  0808 (2056)\n+178D84 LOCAL HEADER #1341    04034B50 (67324752)\n+178D88 Extract Zip Spec      14 (20) '2.0'\n+178D89 Extract OS            00 (0) 'MS-DOS'\n+178D8A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-162F5B Compression Method    0008 (8) 'Deflated'\n-162F5D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-162F61 CRC                   00000000 (0)\n-162F65 Compressed Size       00000000 (0)\n-162F69 Uncompressed Size     00000000 (0)\n-162F6D Filename Length       003B (59)\n-162F6F Extra Length          0000 (0)\n-162F71 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+178D8C Compression Method    0008 (8) 'Deflated'\n+178D8E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+178D92 CRC                   00000000 (0)\n+178D96 Compressed Size       00000000 (0)\n+178D9A Uncompressed Size     00000000 (0)\n+178D9E Filename Length       003F (63)\n+178DA0 Extra Length          0000 (0)\n+178DA2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x162F71: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x178DA2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-162FAC PAYLOAD\n+178DE1 PAYLOAD\n \n-164E90 DATA DESCRIPTOR       08074B50 (134695760)\n-164E94 CRC                   FA47221B (4198965787)\n-164E98 Compressed Size       00001EE4 (7908)\n-164E9C Uncompressed Size     0000926E (37486)\n+1791A0 DATA DESCRIPTOR       08074B50 (134695760)\n+1791A4 CRC                   6A4E29DE (1783507422)\n+1791A8 Compressed Size       000003BF (959)\n+1791AC Uncompressed Size     00000AFE (2814)\n \n-164EA0 LOCAL HEADER #1342    04034B50 (67324752)\n-164EA4 Extract Zip Spec      14 (20) '2.0'\n-164EA5 Extract OS            00 (0) 'MS-DOS'\n-164EA6 General Purpose Flag  0808 (2056)\n+1791B0 LOCAL HEADER #1342    04034B50 (67324752)\n+1791B4 Extract Zip Spec      14 (20) '2.0'\n+1791B5 Extract OS            00 (0) 'MS-DOS'\n+1791B6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-164EA8 Compression Method    0008 (8) 'Deflated'\n-164EAA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-164EAE CRC                   00000000 (0)\n-164EB2 Compressed Size       00000000 (0)\n-164EB6 Uncompressed Size     00000000 (0)\n-164EBA Filename Length       0043 (67)\n-164EBC Extra Length          0000 (0)\n-164EBE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1791B8 Compression Method    0008 (8) 'Deflated'\n+1791BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1791BE CRC                   00000000 (0)\n+1791C2 Compressed Size       00000000 (0)\n+1791C6 Uncompressed Size     00000000 (0)\n+1791CA Filename Length       0046 (70)\n+1791CC Extra Length          0000 (0)\n+1791CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x164EBE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1791CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-164F01 PAYLOAD\n+179214 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-165261 DATA DESCRIPTOR       08074B50 (134695760)\n-165265 CRC                   14A86D48 (346582344)\n-165269 Compressed Size       00000360 (864)\n-16526D Uncompressed Size     0000082F (2095)\n+179260 DATA DESCRIPTOR       08074B50 (134695760)\n+179264 CRC                   7158BA85 (1901640325)\n+179268 Compressed Size       0000004C (76)\n+17926C Uncompressed Size     0000004E (78)\n \n-165271 LOCAL HEADER #1343    04034B50 (67324752)\n-165275 Extract Zip Spec      14 (20) '2.0'\n-165276 Extract OS            00 (0) 'MS-DOS'\n-165277 General Purpose Flag  0808 (2056)\n+179270 LOCAL HEADER #1343    04034B50 (67324752)\n+179274 Extract Zip Spec      14 (20) '2.0'\n+179275 Extract OS            00 (0) 'MS-DOS'\n+179276 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-165279 Compression Method    0008 (8) 'Deflated'\n-16527B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16527F CRC                   00000000 (0)\n-165283 Compressed Size       00000000 (0)\n-165287 Uncompressed Size     00000000 (0)\n-16528B Filename Length       0020 (32)\n-16528D Extra Length          0000 (0)\n-16528F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+179278 Compression Method    0008 (8) 'Deflated'\n+17927A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17927E CRC                   00000000 (0)\n+179282 Compressed Size       00000000 (0)\n+179286 Uncompressed Size     00000000 (0)\n+17928A Filename Length       0019 (25)\n+17928C Extra Length          0000 (0)\n+17928E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16528F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17928E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1652AF PAYLOAD               XX\n+1792A7 PAYLOAD               XX\n \n-1652B1 DATA DESCRIPTOR       08074B50 (134695760)\n-1652B5 CRC                   00000000 (0)\n-1652B9 Compressed Size       00000002 (2)\n-1652BD Uncompressed Size     00000000 (0)\n+1792A9 DATA DESCRIPTOR       08074B50 (134695760)\n+1792AD CRC                   00000000 (0)\n+1792B1 Compressed Size       00000002 (2)\n+1792B5 Uncompressed Size     00000000 (0)\n \n-1652C1 LOCAL HEADER #1344    04034B50 (67324752)\n-1652C5 Extract Zip Spec      14 (20) '2.0'\n-1652C6 Extract OS            00 (0) 'MS-DOS'\n-1652C7 General Purpose Flag  0808 (2056)\n+1792B9 LOCAL HEADER #1344    04034B50 (67324752)\n+1792BD Extract Zip Spec      14 (20) '2.0'\n+1792BE Extract OS            00 (0) 'MS-DOS'\n+1792BF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1652C9 Compression Method    0008 (8) 'Deflated'\n-1652CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1652CF CRC                   00000000 (0)\n-1652D3 Compressed Size       00000000 (0)\n-1652D7 Uncompressed Size     00000000 (0)\n-1652DB Filename Length       0036 (54)\n-1652DD Extra Length          0000 (0)\n-1652DF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1792C1 Compression Method    0008 (8) 'Deflated'\n+1792C3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1792C7 CRC                   00000000 (0)\n+1792CB Compressed Size       00000000 (0)\n+1792CF Uncompressed Size     00000000 (0)\n+1792D3 Filename Length       0027 (39)\n+1792D5 Extra Length          0000 (0)\n+1792D7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1652DF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1792D7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-165315 PAYLOAD\n+1792FE PAYLOAD\n \n-1658F4 DATA DESCRIPTOR       08074B50 (134695760)\n-1658F8 CRC                   A7748368 (2809430888)\n-1658FC Compressed Size       000005DF (1503)\n-165900 Uncompressed Size     00001148 (4424)\n+17958B DATA DESCRIPTOR       08074B50 (134695760)\n+17958F CRC                   4E27066E (1311180398)\n+179593 Compressed Size       0000028D (653)\n+179597 Uncompressed Size     00000528 (1320)\n \n-165904 LOCAL HEADER #1345    04034B50 (67324752)\n-165908 Extract Zip Spec      14 (20) '2.0'\n-165909 Extract OS            00 (0) 'MS-DOS'\n-16590A General Purpose Flag  0808 (2056)\n+17959B LOCAL HEADER #1345    04034B50 (67324752)\n+17959F Extract Zip Spec      14 (20) '2.0'\n+1795A0 Extract OS            00 (0) 'MS-DOS'\n+1795A1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16590C Compression Method    0008 (8) 'Deflated'\n-16590E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-165912 CRC                   00000000 (0)\n-165916 Compressed Size       00000000 (0)\n-16591A Uncompressed Size     00000000 (0)\n-16591E Filename Length       0039 (57)\n-165920 Extra Length          0000 (0)\n-165922 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1795A3 Compression Method    0008 (8) 'Deflated'\n+1795A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1795A9 CRC                   00000000 (0)\n+1795AD Compressed Size       00000000 (0)\n+1795B1 Uncompressed Size     00000000 (0)\n+1795B5 Filename Length       002C (44)\n+1795B7 Extra Length          0000 (0)\n+1795B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x165922: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1795B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16595B PAYLOAD\n+1795E5 PAYLOAD\n \n-165C1E DATA DESCRIPTOR       08074B50 (134695760)\n-165C22 CRC                   5117C509 (1360512265)\n-165C26 Compressed Size       000002C3 (707)\n-165C2A Uncompressed Size     000005CF (1487)\n+1797F8 DATA DESCRIPTOR       08074B50 (134695760)\n+1797FC CRC                   3E4BD5A8 (1045157288)\n+179800 Compressed Size       00000213 (531)\n+179804 Uncompressed Size     000003AC (940)\n \n-165C2E LOCAL HEADER #1346    04034B50 (67324752)\n-165C32 Extract Zip Spec      14 (20) '2.0'\n-165C33 Extract OS            00 (0) 'MS-DOS'\n-165C34 General Purpose Flag  0808 (2056)\n+179808 LOCAL HEADER #1346    04034B50 (67324752)\n+17980C Extract Zip Spec      14 (20) '2.0'\n+17980D Extract OS            00 (0) 'MS-DOS'\n+17980E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-165C36 Compression Method    0008 (8) 'Deflated'\n-165C38 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-165C3C CRC                   00000000 (0)\n-165C40 Compressed Size       00000000 (0)\n-165C44 Uncompressed Size     00000000 (0)\n-165C48 Filename Length       0039 (57)\n-165C4A Extra Length          0000 (0)\n-165C4C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+179810 Compression Method    0008 (8) 'Deflated'\n+179812 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+179816 CRC                   00000000 (0)\n+17981A Compressed Size       00000000 (0)\n+17981E Uncompressed Size     00000000 (0)\n+179822 Filename Length       0025 (37)\n+179824 Extra Length          0000 (0)\n+179826 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x165C4C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x179826: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-165C85 PAYLOAD\n+17984B PAYLOAD\n \n-165F9A DATA DESCRIPTOR       08074B50 (134695760)\n-165F9E CRC                   FCC4145B (4240708699)\n-165FA2 Compressed Size       00000315 (789)\n-165FA6 Uncompressed Size     000006E0 (1760)\n+179A98 DATA DESCRIPTOR       08074B50 (134695760)\n+179A9C CRC                   51FB7003 (1375432707)\n+179AA0 Compressed Size       0000024D (589)\n+179AA4 Uncompressed Size     0000044C (1100)\n \n-165FAA LOCAL HEADER #1347    04034B50 (67324752)\n-165FAE Extract Zip Spec      14 (20) '2.0'\n-165FAF Extract OS            00 (0) 'MS-DOS'\n-165FB0 General Purpose Flag  0808 (2056)\n+179AA8 LOCAL HEADER #1347    04034B50 (67324752)\n+179AAC Extract Zip Spec      14 (20) '2.0'\n+179AAD Extract OS            00 (0) 'MS-DOS'\n+179AAE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-165FB2 Compression Method    0008 (8) 'Deflated'\n-165FB4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-165FB8 CRC                   00000000 (0)\n-165FBC Compressed Size       00000000 (0)\n-165FC0 Uncompressed Size     00000000 (0)\n-165FC4 Filename Length       003B (59)\n-165FC6 Extra Length          0000 (0)\n-165FC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+179AB0 Compression Method    0008 (8) 'Deflated'\n+179AB2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+179AB6 CRC                   00000000 (0)\n+179ABA Compressed Size       00000000 (0)\n+179ABE Uncompressed Size     00000000 (0)\n+179AC2 Filename Length       002C (44)\n+179AC4 Extra Length          0000 (0)\n+179AC6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x165FC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x179AC6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-166003 PAYLOAD\n+179AF2 PAYLOAD\n \n-1662C9 DATA DESCRIPTOR       08074B50 (134695760)\n-1662CD CRC                   A6BC7A6B (2797369963)\n-1662D1 Compressed Size       000002C6 (710)\n-1662D5 Uncompressed Size     000005DB (1499)\n+179D79 DATA DESCRIPTOR       08074B50 (134695760)\n+179D7D CRC                   9DE5257E (2649040254)\n+179D81 Compressed Size       00000287 (647)\n+179D85 Uncompressed Size     000004ED (1261)\n \n-1662D9 LOCAL HEADER #1348    04034B50 (67324752)\n-1662DD Extract Zip Spec      14 (20) '2.0'\n-1662DE Extract OS            00 (0) 'MS-DOS'\n-1662DF General Purpose Flag  0808 (2056)\n+179D89 LOCAL HEADER #1348    04034B50 (67324752)\n+179D8D Extract Zip Spec      14 (20) '2.0'\n+179D8E Extract OS            00 (0) 'MS-DOS'\n+179D8F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1662E1 Compression Method    0008 (8) 'Deflated'\n-1662E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1662E7 CRC                   00000000 (0)\n-1662EB Compressed Size       00000000 (0)\n-1662EF Uncompressed Size     00000000 (0)\n-1662F3 Filename Length       003B (59)\n-1662F5 Extra Length          0000 (0)\n-1662F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+179D91 Compression Method    0008 (8) 'Deflated'\n+179D93 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+179D97 CRC                   00000000 (0)\n+179D9B Compressed Size       00000000 (0)\n+179D9F Uncompressed Size     00000000 (0)\n+179DA3 Filename Length       002C (44)\n+179DA5 Extra Length          0000 (0)\n+179DA7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1662F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x179DA7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-166332 PAYLOAD\n+179DD3 PAYLOAD\n \n-166649 DATA DESCRIPTOR       08074B50 (134695760)\n-16664D CRC                   CDD77CC5 (3453451461)\n-166651 Compressed Size       00000317 (791)\n-166655 Uncompressed Size     000006EA (1770)\n+17A380 DATA DESCRIPTOR       08074B50 (134695760)\n+17A384 CRC                   78905E9C (2022727324)\n+17A388 Compressed Size       000005AD (1453)\n+17A38C Uncompressed Size     00000D44 (3396)\n \n-166659 LOCAL HEADER #1349    04034B50 (67324752)\n-16665D Extract Zip Spec      14 (20) '2.0'\n-16665E Extract OS            00 (0) 'MS-DOS'\n-16665F General Purpose Flag  0808 (2056)\n+17A390 LOCAL HEADER #1349    04034B50 (67324752)\n+17A394 Extract Zip Spec      14 (20) '2.0'\n+17A395 Extract OS            00 (0) 'MS-DOS'\n+17A396 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-166661 Compression Method    0008 (8) 'Deflated'\n-166663 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-166667 CRC                   00000000 (0)\n-16666B Compressed Size       00000000 (0)\n-16666F Uncompressed Size     00000000 (0)\n-166673 Filename Length       0031 (49)\n-166675 Extra Length          0000 (0)\n-166677 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17A398 Compression Method    0008 (8) 'Deflated'\n+17A39A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17A39E CRC                   00000000 (0)\n+17A3A2 Compressed Size       00000000 (0)\n+17A3A6 Uncompressed Size     00000000 (0)\n+17A3AA Filename Length       0021 (33)\n+17A3AC Extra Length          0000 (0)\n+17A3AE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x166677: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17A3AE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1666A8 PAYLOAD\n+17A3CF PAYLOAD               XX\n \n-16696D DATA DESCRIPTOR       08074B50 (134695760)\n-166971 CRC                   1D384067 (490225767)\n-166975 Compressed Size       000002C5 (709)\n-166979 Uncompressed Size     0000059E (1438)\n+17A3D1 DATA DESCRIPTOR       08074B50 (134695760)\n+17A3D5 CRC                   00000000 (0)\n+17A3D9 Compressed Size       00000002 (2)\n+17A3DD Uncompressed Size     00000000 (0)\n \n-16697D LOCAL HEADER #1350    04034B50 (67324752)\n-166981 Extract Zip Spec      14 (20) '2.0'\n-166982 Extract OS            00 (0) 'MS-DOS'\n-166983 General Purpose Flag  0808 (2056)\n+17A3E1 LOCAL HEADER #1350    04034B50 (67324752)\n+17A3E5 Extract Zip Spec      14 (20) '2.0'\n+17A3E6 Extract OS            00 (0) 'MS-DOS'\n+17A3E7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-166985 Compression Method    0008 (8) 'Deflated'\n-166987 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16698B CRC                   00000000 (0)\n-16698F Compressed Size       00000000 (0)\n-166993 Uncompressed Size     00000000 (0)\n-166997 Filename Length       0021 (33)\n-166999 Extra Length          0000 (0)\n-16699B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17A3E9 Compression Method    0008 (8) 'Deflated'\n+17A3EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17A3EF CRC                   00000000 (0)\n+17A3F3 Compressed Size       00000000 (0)\n+17A3F7 Uncompressed Size     00000000 (0)\n+17A3FB Filename Length       003C (60)\n+17A3FD Extra Length          0000 (0)\n+17A3FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16699B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17A3FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1669BC PAYLOAD               XX\n+17A43B PAYLOAD\n \n-1669BE DATA DESCRIPTOR       08074B50 (134695760)\n-1669C2 CRC                   00000000 (0)\n-1669C6 Compressed Size       00000002 (2)\n-1669CA Uncompressed Size     00000000 (0)\n+17AA62 DATA DESCRIPTOR       08074B50 (134695760)\n+17AA66 CRC                   FA4C7A14 (4199315988)\n+17AA6A Compressed Size       00000627 (1575)\n+17AA6E Uncompressed Size     00001336 (4918)\n \n-1669CE LOCAL HEADER #1351    04034B50 (67324752)\n-1669D2 Extract Zip Spec      14 (20) '2.0'\n-1669D3 Extract OS            00 (0) 'MS-DOS'\n-1669D4 General Purpose Flag  0808 (2056)\n+17AA72 LOCAL HEADER #1351    04034B50 (67324752)\n+17AA76 Extract Zip Spec      14 (20) '2.0'\n+17AA77 Extract OS            00 (0) 'MS-DOS'\n+17AA78 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1669D6 Compression Method    0008 (8) 'Deflated'\n-1669D8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1669DC CRC                   00000000 (0)\n-1669E0 Compressed Size       00000000 (0)\n-1669E4 Uncompressed Size     00000000 (0)\n-1669E8 Filename Length       003B (59)\n-1669EA Extra Length          0000 (0)\n-1669EC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17AA7A Compression Method    0008 (8) 'Deflated'\n+17AA7C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17AA80 CRC                   00000000 (0)\n+17AA84 Compressed Size       00000000 (0)\n+17AA88 Uncompressed Size     00000000 (0)\n+17AA8C Filename Length       003C (60)\n+17AA8E Extra Length          0000 (0)\n+17AA90 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1669EC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17AA90: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-166A27 PAYLOAD\n+17AACC PAYLOAD\n \n-166D90 DATA DESCRIPTOR       08074B50 (134695760)\n-166D94 CRC                   F2E8FAB9 (4075354809)\n-166D98 Compressed Size       00000369 (873)\n-166D9C Uncompressed Size     00000826 (2086)\n+17AD21 DATA DESCRIPTOR       08074B50 (134695760)\n+17AD25 CRC                   0F745EE4 (259284708)\n+17AD29 Compressed Size       00000255 (597)\n+17AD2D Uncompressed Size     0000047D (1149)\n \n-166DA0 LOCAL HEADER #1352    04034B50 (67324752)\n-166DA4 Extract Zip Spec      14 (20) '2.0'\n-166DA5 Extract OS            00 (0) 'MS-DOS'\n-166DA6 General Purpose Flag  0808 (2056)\n+17AD31 LOCAL HEADER #1352    04034B50 (67324752)\n+17AD35 Extract Zip Spec      14 (20) '2.0'\n+17AD36 Extract OS            00 (0) 'MS-DOS'\n+17AD37 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-166DA8 Compression Method    0008 (8) 'Deflated'\n-166DAA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-166DAE CRC                   00000000 (0)\n-166DB2 Compressed Size       00000000 (0)\n-166DB6 Uncompressed Size     00000000 (0)\n-166DBA Filename Length       0022 (34)\n-166DBC Extra Length          0000 (0)\n-166DBE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17AD39 Compression Method    0008 (8) 'Deflated'\n+17AD3B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17AD3F CRC                   00000000 (0)\n+17AD43 Compressed Size       00000000 (0)\n+17AD47 Uncompressed Size     00000000 (0)\n+17AD4B Filename Length       0033 (51)\n+17AD4D Extra Length          0000 (0)\n+17AD4F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x166DBE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17AD4F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-166DE0 PAYLOAD               XX\n+17AD82 PAYLOAD\n \n-166DE2 DATA DESCRIPTOR       08074B50 (134695760)\n-166DE6 CRC                   00000000 (0)\n-166DEA Compressed Size       00000002 (2)\n-166DEE Uncompressed Size     00000000 (0)\n+17B6B6 DATA DESCRIPTOR       08074B50 (134695760)\n+17B6BA CRC                   10FA9E81 (284860033)\n+17B6BE Compressed Size       00000934 (2356)\n+17B6C2 Uncompressed Size     000021D4 (8660)\n \n-166DF2 LOCAL HEADER #1353    04034B50 (67324752)\n-166DF6 Extract Zip Spec      14 (20) '2.0'\n-166DF7 Extract OS            00 (0) 'MS-DOS'\n-166DF8 General Purpose Flag  0808 (2056)\n+17B6C6 LOCAL HEADER #1353    04034B50 (67324752)\n+17B6CA Extract Zip Spec      14 (20) '2.0'\n+17B6CB Extract OS            00 (0) 'MS-DOS'\n+17B6CC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-166DFA Compression Method    0008 (8) 'Deflated'\n-166DFC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-166E00 CRC                   00000000 (0)\n-166E04 Compressed Size       00000000 (0)\n-166E08 Uncompressed Size     00000000 (0)\n-166E0C Filename Length       0037 (55)\n-166E0E Extra Length          0000 (0)\n-166E10 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17B6CE Compression Method    0008 (8) 'Deflated'\n+17B6D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17B6D4 CRC                   00000000 (0)\n+17B6D8 Compressed Size       00000000 (0)\n+17B6DC Uncompressed Size     00000000 (0)\n+17B6E0 Filename Length       003C (60)\n+17B6E2 Extra Length          0000 (0)\n+17B6E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x166E10: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17B6E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-166E47 PAYLOAD\n+17B720 PAYLOAD\n \n-168095 DATA DESCRIPTOR       08074B50 (134695760)\n-168099 CRC                   5DDCD4C5 (1574753477)\n-16809D Compressed Size       0000124E (4686)\n-1680A1 Uncompressed Size     0000537F (21375)\n+17B973 DATA DESCRIPTOR       08074B50 (134695760)\n+17B977 CRC                   9E6062D0 (2657116880)\n+17B97B Compressed Size       00000253 (595)\n+17B97F Uncompressed Size     0000047D (1149)\n \n-1680A5 LOCAL HEADER #1354    04034B50 (67324752)\n-1680A9 Extract Zip Spec      14 (20) '2.0'\n-1680AA Extract OS            00 (0) 'MS-DOS'\n-1680AB General Purpose Flag  0808 (2056)\n+17B983 LOCAL HEADER #1354    04034B50 (67324752)\n+17B987 Extract Zip Spec      14 (20) '2.0'\n+17B988 Extract OS            00 (0) 'MS-DOS'\n+17B989 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1680AD Compression Method    0008 (8) 'Deflated'\n-1680AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1680B3 CRC                   00000000 (0)\n-1680B7 Compressed Size       00000000 (0)\n-1680BB Uncompressed Size     00000000 (0)\n-1680BF Filename Length       003E (62)\n-1680C1 Extra Length          0000 (0)\n-1680C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17B98B Compression Method    0008 (8) 'Deflated'\n+17B98D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17B991 CRC                   00000000 (0)\n+17B995 Compressed Size       00000000 (0)\n+17B999 Uncompressed Size     00000000 (0)\n+17B99D Filename Length       0032 (50)\n+17B99F Extra Length          0000 (0)\n+17B9A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1680C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17B9A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-168101 PAYLOAD\n+17B9D3 PAYLOAD               XX\n \n-1689C5 DATA DESCRIPTOR       08074B50 (134695760)\n-1689C9 CRC                   5BC81E29 (1539841577)\n-1689CD Compressed Size       000008C4 (2244)\n-1689D1 Uncompressed Size     00001D8A (7562)\n+17B9D5 DATA DESCRIPTOR       08074B50 (134695760)\n+17B9D9 CRC                   00000000 (0)\n+17B9DD Compressed Size       00000002 (2)\n+17B9E1 Uncompressed Size     00000000 (0)\n \n-1689D5 LOCAL HEADER #1355    04034B50 (67324752)\n-1689D9 Extract Zip Spec      14 (20) '2.0'\n-1689DA Extract OS            00 (0) 'MS-DOS'\n-1689DB General Purpose Flag  0808 (2056)\n+17B9E5 LOCAL HEADER #1355    04034B50 (67324752)\n+17B9E9 Extract Zip Spec      14 (20) '2.0'\n+17B9EA Extract OS            00 (0) 'MS-DOS'\n+17B9EB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1689DD Compression Method    0008 (8) 'Deflated'\n-1689DF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1689E3 CRC                   00000000 (0)\n-1689E7 Compressed Size       00000000 (0)\n-1689EB Uncompressed Size     00000000 (0)\n-1689EF Filename Length       0037 (55)\n-1689F1 Extra Length          0000 (0)\n-1689F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17B9ED Compression Method    0008 (8) 'Deflated'\n+17B9EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17B9F3 CRC                   00000000 (0)\n+17B9F7 Compressed Size       00000000 (0)\n+17B9FB Uncompressed Size     00000000 (0)\n+17B9FF Filename Length       0039 (57)\n+17BA01 Extra Length          0000 (0)\n+17BA03 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1689F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17BA03: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-168A2A PAYLOAD\n+17BA3C PAYLOAD\n \n-169617 DATA DESCRIPTOR       08074B50 (134695760)\n-16961B CRC                   A266F3B2 (2724656050)\n-16961F Compressed Size       00000BED (3053)\n-169623 Uncompressed Size     0000462E (17966)\n+17BDC5 DATA DESCRIPTOR       08074B50 (134695760)\n+17BDC9 CRC                   6A3922C1 (1782129345)\n+17BDCD Compressed Size       00000389 (905)\n+17BDD1 Uncompressed Size     0000092A (2346)\n \n-169627 LOCAL HEADER #1356    04034B50 (67324752)\n-16962B Extract Zip Spec      14 (20) '2.0'\n-16962C Extract OS            00 (0) 'MS-DOS'\n-16962D General Purpose Flag  0808 (2056)\n+17BDD5 LOCAL HEADER #1356    04034B50 (67324752)\n+17BDD9 Extract Zip Spec      14 (20) '2.0'\n+17BDDA Extract OS            00 (0) 'MS-DOS'\n+17BDDB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16962F Compression Method    0008 (8) 'Deflated'\n-169631 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-169635 CRC                   00000000 (0)\n-169639 Compressed Size       00000000 (0)\n-16963D Uncompressed Size     00000000 (0)\n-169641 Filename Length       0043 (67)\n-169643 Extra Length          0000 (0)\n-169645 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17BDDD Compression Method    0008 (8) 'Deflated'\n+17BDDF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17BDE3 CRC                   00000000 (0)\n+17BDE7 Compressed Size       00000000 (0)\n+17BDEB Uncompressed Size     00000000 (0)\n+17BDEF Filename Length       0040 (64)\n+17BDF1 Extra Length          0000 (0)\n+17BDF3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x169645: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17BDF3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-169688 PAYLOAD\n+17BE33 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-16994F DATA DESCRIPTOR       08074B50 (134695760)\n-169953 CRC                   952E3CF5 (2502835445)\n-169957 Compressed Size       000002C7 (711)\n-16995B Uncompressed Size     00000552 (1362)\n+17BE79 DATA DESCRIPTOR       08074B50 (134695760)\n+17BE7D CRC                   A473398B (2759014795)\n+17BE81 Compressed Size       00000046 (70)\n+17BE85 Uncompressed Size     00000048 (72)\n \n-16995F LOCAL HEADER #1357    04034B50 (67324752)\n-169963 Extract Zip Spec      14 (20) '2.0'\n-169964 Extract OS            00 (0) 'MS-DOS'\n-169965 General Purpose Flag  0808 (2056)\n+17BE89 LOCAL HEADER #1357    04034B50 (67324752)\n+17BE8D Extract Zip Spec      14 (20) '2.0'\n+17BE8E Extract OS            00 (0) 'MS-DOS'\n+17BE8F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-169967 Compression Method    0008 (8) 'Deflated'\n-169969 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16996D CRC                   00000000 (0)\n-169971 Compressed Size       00000000 (0)\n-169975 Uncompressed Size     00000000 (0)\n-169979 Filename Length       0052 (82)\n-16997B Extra Length          0000 (0)\n-16997D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17BE91 Compression Method    0008 (8) 'Deflated'\n+17BE93 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17BE97 CRC                   00000000 (0)\n+17BE9B Compressed Size       00000000 (0)\n+17BE9F Uncompressed Size     00000000 (0)\n+17BEA3 Filename Length       001F (31)\n+17BEA5 Extra Length          0000 (0)\n+17BEA7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16997D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17BEA7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1699CF PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+17BEC6 PAYLOAD               XX\n \n-169A0F DATA DESCRIPTOR       08074B50 (134695760)\n-169A13 CRC                   290EDBFF (688839679)\n-169A17 Compressed Size       00000040 (64)\n-169A1B Uncompressed Size     00000049 (73)\n+17BEC8 DATA DESCRIPTOR       08074B50 (134695760)\n+17BECC CRC                   00000000 (0)\n+17BED0 Compressed Size       00000002 (2)\n+17BED4 Uncompressed Size     00000000 (0)\n \n-169A1F LOCAL HEADER #1358    04034B50 (67324752)\n-169A23 Extract Zip Spec      14 (20) '2.0'\n-169A24 Extract OS            00 (0) 'MS-DOS'\n-169A25 General Purpose Flag  0808 (2056)\n+17BED8 LOCAL HEADER #1358    04034B50 (67324752)\n+17BEDC Extract Zip Spec      14 (20) '2.0'\n+17BEDD Extract OS            00 (0) 'MS-DOS'\n+17BEDE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-169A27 Compression Method    0008 (8) 'Deflated'\n-169A29 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-169A2D CRC                   00000000 (0)\n-169A31 Compressed Size       00000000 (0)\n-169A35 Uncompressed Size     00000000 (0)\n-169A39 Filename Length       005B (91)\n-169A3B Extra Length          0000 (0)\n-169A3D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17BEE0 Compression Method    0008 (8) 'Deflated'\n+17BEE2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17BEE6 CRC                   00000000 (0)\n+17BEEA Compressed Size       00000000 (0)\n+17BEEE Uncompressed Size     00000000 (0)\n+17BEF2 Filename Length       0030 (48)\n+17BEF4 Extra Length          0000 (0)\n+17BEF6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x169A3D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17BEF6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-169A98 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+17BF26 PAYLOAD\n \n-169AE5 DATA DESCRIPTOR       08074B50 (134695760)\n-169AE9 CRC                   A49FCF77 (2761936759)\n-169AED Compressed Size       0000004D (77)\n-169AF1 Uncompressed Size     00000054 (84)\n+17C82D DATA DESCRIPTOR       08074B50 (134695760)\n+17C831 CRC                   EA5FE743 (3932153667)\n+17C835 Compressed Size       00000907 (2311)\n+17C839 Uncompressed Size     00002351 (9041)\n \n-169AF5 LOCAL HEADER #1359    04034B50 (67324752)\n-169AF9 Extract Zip Spec      14 (20) '2.0'\n-169AFA Extract OS            00 (0) 'MS-DOS'\n-169AFB General Purpose Flag  0808 (2056)\n+17C83D LOCAL HEADER #1359    04034B50 (67324752)\n+17C841 Extract Zip Spec      14 (20) '2.0'\n+17C842 Extract OS            00 (0) 'MS-DOS'\n+17C843 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-169AFD Compression Method    0008 (8) 'Deflated'\n-169AFF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-169B03 CRC                   00000000 (0)\n-169B07 Compressed Size       00000000 (0)\n-169B0B Uncompressed Size     00000000 (0)\n-169B0F Filename Length       005D (93)\n-169B11 Extra Length          0000 (0)\n-169B13 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17C845 Compression Method    0008 (8) 'Deflated'\n+17C847 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17C84B CRC                   00000000 (0)\n+17C84F Compressed Size       00000000 (0)\n+17C853 Uncompressed Size     00000000 (0)\n+17C857 Filename Length       0037 (55)\n+17C859 Extra Length          0000 (0)\n+17C85B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x169B13: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17C85B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-169B70 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+17C892 PAYLOAD\n \n-169BB9 DATA DESCRIPTOR       08074B50 (134695760)\n-169BBD CRC                   F515114D (4111798605)\n-169BC1 Compressed Size       00000049 (73)\n-169BC5 Uncompressed Size     00000054 (84)\n+17CC98 DATA DESCRIPTOR       08074B50 (134695760)\n+17CC9C CRC                   4C68B52A (1281930538)\n+17CCA0 Compressed Size       00000406 (1030)\n+17CCA4 Uncompressed Size     00000B4C (2892)\n \n-169BC9 LOCAL HEADER #1360    04034B50 (67324752)\n-169BCD Extract Zip Spec      14 (20) '2.0'\n-169BCE Extract OS            00 (0) 'MS-DOS'\n-169BCF General Purpose Flag  0808 (2056)\n+17CCA8 LOCAL HEADER #1360    04034B50 (67324752)\n+17CCAC Extract Zip Spec      14 (20) '2.0'\n+17CCAD Extract OS            00 (0) 'MS-DOS'\n+17CCAE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-169BD1 Compression Method    0008 (8) 'Deflated'\n-169BD3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-169BD7 CRC                   00000000 (0)\n-169BDB Compressed Size       00000000 (0)\n-169BDF Uncompressed Size     00000000 (0)\n-169BE3 Filename Length       0059 (89)\n-169BE5 Extra Length          0000 (0)\n-169BE7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17CCB0 Compression Method    0008 (8) 'Deflated'\n+17CCB2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17CCB6 CRC                   00000000 (0)\n+17CCBA Compressed Size       00000000 (0)\n+17CCBE Uncompressed Size     00000000 (0)\n+17CCC2 Filename Length       0031 (49)\n+17CCC4 Extra Length          0000 (0)\n+17CCC6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x169BE7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17CCC6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-169C40 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+17CCF7 PAYLOAD\n \n-169C85 DATA DESCRIPTOR       08074B50 (134695760)\n-169C89 CRC                   285254BA (676484282)\n-169C8D Compressed Size       00000045 (69)\n-169C91 Uncompressed Size     0000004E (78)\n+17D87D DATA DESCRIPTOR       08074B50 (134695760)\n+17D881 CRC                   23426219 (591553049)\n+17D885 Compressed Size       00000B86 (2950)\n+17D889 Uncompressed Size     00002C53 (11347)\n \n-169C95 LOCAL HEADER #1361    04034B50 (67324752)\n-169C99 Extract Zip Spec      14 (20) '2.0'\n-169C9A Extract OS            00 (0) 'MS-DOS'\n-169C9B General Purpose Flag  0808 (2056)\n+17D88D LOCAL HEADER #1361    04034B50 (67324752)\n+17D891 Extract Zip Spec      14 (20) '2.0'\n+17D892 Extract OS            00 (0) 'MS-DOS'\n+17D893 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-169C9D Compression Method    0008 (8) 'Deflated'\n-169C9F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-169CA3 CRC                   00000000 (0)\n-169CA7 Compressed Size       00000000 (0)\n-169CAB Uncompressed Size     00000000 (0)\n-169CAF Filename Length       0056 (86)\n-169CB1 Extra Length          0000 (0)\n-169CB3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17D895 Compression Method    0008 (8) 'Deflated'\n+17D897 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17D89B CRC                   00000000 (0)\n+17D89F Compressed Size       00000000 (0)\n+17D8A3 Uncompressed Size     00000000 (0)\n+17D8A7 Filename Length       002E (46)\n+17D8A9 Extra Length          0000 (0)\n+17D8AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x169CB3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17D8AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-169D09 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+17D8D9 PAYLOAD\n \n-169D47 DATA DESCRIPTOR       08074B50 (134695760)\n-169D4B CRC                   9DAB4985 (2645248389)\n-169D4F Compressed Size       0000003E (62)\n-169D53 Uncompressed Size     0000004A (74)\n+17DE6B DATA DESCRIPTOR       08074B50 (134695760)\n+17DE6F CRC                   DAB7FE63 (3669491299)\n+17DE73 Compressed Size       00000592 (1426)\n+17DE77 Uncompressed Size     00001734 (5940)\n \n-169D57 LOCAL HEADER #1362    04034B50 (67324752)\n-169D5B Extract Zip Spec      14 (20) '2.0'\n-169D5C Extract OS            00 (0) 'MS-DOS'\n-169D5D General Purpose Flag  0808 (2056)\n+17DE7B LOCAL HEADER #1362    04034B50 (67324752)\n+17DE7F Extract Zip Spec      14 (20) '2.0'\n+17DE80 Extract OS            00 (0) 'MS-DOS'\n+17DE81 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-169D5F Compression Method    0008 (8) 'Deflated'\n-169D61 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-169D65 CRC                   00000000 (0)\n-169D69 Compressed Size       00000000 (0)\n-169D6D Uncompressed Size     00000000 (0)\n-169D71 Filename Length       001B (27)\n-169D73 Extra Length          0000 (0)\n-169D75 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17DE83 Compression Method    0008 (8) 'Deflated'\n+17DE85 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17DE89 CRC                   00000000 (0)\n+17DE8D Compressed Size       00000000 (0)\n+17DE91 Uncompressed Size     00000000 (0)\n+17DE95 Filename Length       0036 (54)\n+17DE97 Extra Length          0000 (0)\n+17DE99 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x169D75: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17DE99: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-169D90 PAYLOAD               XX\n+17DECF PAYLOAD               XX\n \n-169D92 DATA DESCRIPTOR       08074B50 (134695760)\n-169D96 CRC                   00000000 (0)\n-169D9A Compressed Size       00000002 (2)\n-169D9E Uncompressed Size     00000000 (0)\n+17DED1 DATA DESCRIPTOR       08074B50 (134695760)\n+17DED5 CRC                   00000000 (0)\n+17DED9 Compressed Size       00000002 (2)\n+17DEDD Uncompressed Size     00000000 (0)\n \n-169DA2 LOCAL HEADER #1363    04034B50 (67324752)\n-169DA6 Extract Zip Spec      14 (20) '2.0'\n-169DA7 Extract OS            00 (0) 'MS-DOS'\n-169DA8 General Purpose Flag  0808 (2056)\n+17DEE1 LOCAL HEADER #1363    04034B50 (67324752)\n+17DEE5 Extract Zip Spec      14 (20) '2.0'\n+17DEE6 Extract OS            00 (0) 'MS-DOS'\n+17DEE7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-169DAA Compression Method    0008 (8) 'Deflated'\n-169DAC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-169DB0 CRC                   00000000 (0)\n-169DB4 Compressed Size       00000000 (0)\n-169DB8 Uncompressed Size     00000000 (0)\n-169DBC Filename Length       0029 (41)\n-169DBE Extra Length          0000 (0)\n-169DC0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17DEE9 Compression Method    0008 (8) 'Deflated'\n+17DEEB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17DEEF CRC                   00000000 (0)\n+17DEF3 Compressed Size       00000000 (0)\n+17DEF7 Uncompressed Size     00000000 (0)\n+17DEFB Filename Length       003D (61)\n+17DEFD Extra Length          0000 (0)\n+17DEFF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x169DC0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17DEFF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-169DE9 PAYLOAD\n+17DF3C PAYLOAD\n \n-16A04B DATA DESCRIPTOR       08074B50 (134695760)\n-16A04F CRC                   14FCC408 (352109576)\n-16A053 Compressed Size       00000262 (610)\n-16A057 Uncompressed Size     00000497 (1175)\n+17E31A DATA DESCRIPTOR       08074B50 (134695760)\n+17E31E CRC                   5192999D (1368562077)\n+17E322 Compressed Size       000003DE (990)\n+17E326 Uncompressed Size     00000C1C (3100)\n \n-16A05B LOCAL HEADER #1364    04034B50 (67324752)\n-16A05F Extract Zip Spec      14 (20) '2.0'\n-16A060 Extract OS            00 (0) 'MS-DOS'\n-16A061 General Purpose Flag  0808 (2056)\n+17E32A LOCAL HEADER #1364    04034B50 (67324752)\n+17E32E Extract Zip Spec      14 (20) '2.0'\n+17E32F Extract OS            00 (0) 'MS-DOS'\n+17E330 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16A063 Compression Method    0008 (8) 'Deflated'\n-16A065 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16A069 CRC                   00000000 (0)\n-16A06D Compressed Size       00000000 (0)\n-16A071 Uncompressed Size     00000000 (0)\n-16A075 Filename Length       0024 (36)\n-16A077 Extra Length          0000 (0)\n-16A079 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17E332 Compression Method    0008 (8) 'Deflated'\n+17E334 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17E338 CRC                   00000000 (0)\n+17E33C Compressed Size       00000000 (0)\n+17E340 Uncompressed Size     00000000 (0)\n+17E344 Filename Length       0044 (68)\n+17E346 Extra Length          0000 (0)\n+17E348 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16A079: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17E348: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16A09D PAYLOAD\n+17E38C PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-16A668 DATA DESCRIPTOR       08074B50 (134695760)\n-16A66C CRC                   6D55499F (1834305951)\n-16A670 Compressed Size       000005CB (1483)\n-16A674 Uncompressed Size     00001115 (4373)\n+17E3D6 DATA DESCRIPTOR       08074B50 (134695760)\n+17E3DA CRC                   2A04AB66 (704949094)\n+17E3DE Compressed Size       0000004A (74)\n+17E3E2 Uncompressed Size     0000004C (76)\n \n-16A678 LOCAL HEADER #1365    04034B50 (67324752)\n-16A67C Extract Zip Spec      14 (20) '2.0'\n-16A67D Extract OS            00 (0) 'MS-DOS'\n-16A67E General Purpose Flag  0808 (2056)\n+17E3E6 LOCAL HEADER #1365    04034B50 (67324752)\n+17E3EA Extract Zip Spec      14 (20) '2.0'\n+17E3EB Extract OS            00 (0) 'MS-DOS'\n+17E3EC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16A680 Compression Method    0008 (8) 'Deflated'\n-16A682 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16A686 CRC                   00000000 (0)\n-16A68A Compressed Size       00000000 (0)\n-16A68E Uncompressed Size     00000000 (0)\n-16A692 Filename Length       0020 (32)\n-16A694 Extra Length          0000 (0)\n-16A696 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17E3EE Compression Method    0008 (8) 'Deflated'\n+17E3F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17E3F4 CRC                   00000000 (0)\n+17E3F8 Compressed Size       00000000 (0)\n+17E3FC Uncompressed Size     00000000 (0)\n+17E400 Filename Length       0022 (34)\n+17E402 Extra Length          0000 (0)\n+17E404 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16A696: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17E404: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16A6B6 PAYLOAD               XX\n+17E426 PAYLOAD               XX\n \n-16A6B8 DATA DESCRIPTOR       08074B50 (134695760)\n-16A6BC CRC                   00000000 (0)\n-16A6C0 Compressed Size       00000002 (2)\n-16A6C4 Uncompressed Size     00000000 (0)\n+17E428 DATA DESCRIPTOR       08074B50 (134695760)\n+17E42C CRC                   00000000 (0)\n+17E430 Compressed Size       00000002 (2)\n+17E434 Uncompressed Size     00000000 (0)\n \n-16A6C8 LOCAL HEADER #1366    04034B50 (67324752)\n-16A6CC Extract Zip Spec      14 (20) '2.0'\n-16A6CD Extract OS            00 (0) 'MS-DOS'\n-16A6CE General Purpose Flag  0808 (2056)\n+17E438 LOCAL HEADER #1366    04034B50 (67324752)\n+17E43C Extract Zip Spec      14 (20) '2.0'\n+17E43D Extract OS            00 (0) 'MS-DOS'\n+17E43E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16A6D0 Compression Method    0008 (8) 'Deflated'\n-16A6D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16A6D6 CRC                   00000000 (0)\n-16A6DA Compressed Size       00000000 (0)\n-16A6DE Uncompressed Size     00000000 (0)\n-16A6E2 Filename Length       0032 (50)\n-16A6E4 Extra Length          0000 (0)\n-16A6E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17E440 Compression Method    0008 (8) 'Deflated'\n+17E442 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17E446 CRC                   00000000 (0)\n+17E44A Compressed Size       00000000 (0)\n+17E44E Uncompressed Size     00000000 (0)\n+17E452 Filename Length       0036 (54)\n+17E454 Extra Length          0000 (0)\n+17E456 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16A6E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17E456: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16A718 PAYLOAD\n+17E48C PAYLOAD\n \n-16AE5A DATA DESCRIPTOR       08074B50 (134695760)\n-16AE5E CRC                   AE92FDCB (2928868811)\n-16AE62 Compressed Size       00000742 (1858)\n-16AE66 Uncompressed Size     00001744 (5956)\n+17E866 DATA DESCRIPTOR       08074B50 (134695760)\n+17E86A CRC                   2AFEDAAE (721345198)\n+17E86E Compressed Size       000003DA (986)\n+17E872 Uncompressed Size     00000992 (2450)\n \n-16AE6A LOCAL HEADER #1367    04034B50 (67324752)\n-16AE6E Extract Zip Spec      14 (20) '2.0'\n-16AE6F Extract OS            00 (0) 'MS-DOS'\n-16AE70 General Purpose Flag  0808 (2056)\n+17E876 LOCAL HEADER #1367    04034B50 (67324752)\n+17E87A Extract Zip Spec      14 (20) '2.0'\n+17E87B Extract OS            00 (0) 'MS-DOS'\n+17E87C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16AE72 Compression Method    0008 (8) 'Deflated'\n-16AE74 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16AE78 CRC                   00000000 (0)\n-16AE7C Compressed Size       00000000 (0)\n-16AE80 Uncompressed Size     00000000 (0)\n-16AE84 Filename Length       0039 (57)\n-16AE86 Extra Length          0000 (0)\n-16AE88 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17E87E Compression Method    0008 (8) 'Deflated'\n+17E880 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17E884 CRC                   00000000 (0)\n+17E888 Compressed Size       00000000 (0)\n+17E88C Uncompressed Size     00000000 (0)\n+17E890 Filename Length       0037 (55)\n+17E892 Extra Length          0000 (0)\n+17E894 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16AE88: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17E894: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16AEC1 PAYLOAD\n+17E8CB PAYLOAD               XX\n \n-16B52F DATA DESCRIPTOR       08074B50 (134695760)\n-16B533 CRC                   1162A7F0 (291678192)\n-16B537 Compressed Size       0000066E (1646)\n-16B53B Uncompressed Size     00001680 (5760)\n+17E8CD DATA DESCRIPTOR       08074B50 (134695760)\n+17E8D1 CRC                   00000000 (0)\n+17E8D5 Compressed Size       00000002 (2)\n+17E8D9 Uncompressed Size     00000000 (0)\n \n-16B53F LOCAL HEADER #1368    04034B50 (67324752)\n-16B543 Extract Zip Spec      14 (20) '2.0'\n-16B544 Extract OS            00 (0) 'MS-DOS'\n-16B545 General Purpose Flag  0808 (2056)\n+17E8DD LOCAL HEADER #1368    04034B50 (67324752)\n+17E8E1 Extract Zip Spec      14 (20) '2.0'\n+17E8E2 Extract OS            00 (0) 'MS-DOS'\n+17E8E3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16B547 Compression Method    0008 (8) 'Deflated'\n-16B549 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16B54D CRC                   00000000 (0)\n-16B551 Compressed Size       00000000 (0)\n-16B555 Uncompressed Size     00000000 (0)\n-16B559 Filename Length       0024 (36)\n-16B55B Extra Length          0000 (0)\n-16B55D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17E8E5 Compression Method    0008 (8) 'Deflated'\n+17E8E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17E8EB CRC                   00000000 (0)\n+17E8EF Compressed Size       00000000 (0)\n+17E8F3 Uncompressed Size     00000000 (0)\n+17E8F7 Filename Length       003E (62)\n+17E8F9 Extra Length          0000 (0)\n+17E8FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16B55D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17E8FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16B581 PAYLOAD               XX\n+17E939 PAYLOAD\n \n-16B583 DATA DESCRIPTOR       08074B50 (134695760)\n-16B587 CRC                   00000000 (0)\n-16B58B Compressed Size       00000002 (2)\n-16B58F Uncompressed Size     00000000 (0)\n+17ECAE DATA DESCRIPTOR       08074B50 (134695760)\n+17ECB2 CRC                   FBE00F68 (4225765224)\n+17ECB6 Compressed Size       00000375 (885)\n+17ECBA Uncompressed Size     0000081B (2075)\n \n-16B593 LOCAL HEADER #1369    04034B50 (67324752)\n-16B597 Extract Zip Spec      14 (20) '2.0'\n-16B598 Extract OS            00 (0) 'MS-DOS'\n-16B599 General Purpose Flag  0808 (2056)\n+17ECBE LOCAL HEADER #1369    04034B50 (67324752)\n+17ECC2 Extract Zip Spec      14 (20) '2.0'\n+17ECC3 Extract OS            00 (0) 'MS-DOS'\n+17ECC4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16B59B Compression Method    0008 (8) 'Deflated'\n-16B59D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16B5A1 CRC                   00000000 (0)\n-16B5A5 Compressed Size       00000000 (0)\n-16B5A9 Uncompressed Size     00000000 (0)\n-16B5AD Filename Length       003A (58)\n-16B5AF Extra Length          0000 (0)\n-16B5B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17ECC6 Compression Method    0008 (8) 'Deflated'\n+17ECC8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17ECCC CRC                   00000000 (0)\n+17ECD0 Compressed Size       00000000 (0)\n+17ECD4 Uncompressed Size     00000000 (0)\n+17ECD8 Filename Length       0045 (69)\n+17ECDA Extra Length          0000 (0)\n+17ECDC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16B5B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17ECDC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16B5EB PAYLOAD\n+17ED21 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-16C45C DATA DESCRIPTOR       08074B50 (134695760)\n-16C460 CRC                   E0604599 (3764405657)\n-16C464 Compressed Size       00000E71 (3697)\n-16C468 Uncompressed Size     00004154 (16724)\n+17ED6B DATA DESCRIPTOR       08074B50 (134695760)\n+17ED6F CRC                   B5C799B8 (3049757112)\n+17ED73 Compressed Size       0000004A (74)\n+17ED77 Uncompressed Size     0000004D (77)\n \n-16C46C LOCAL HEADER #1370    04034B50 (67324752)\n-16C470 Extract Zip Spec      14 (20) '2.0'\n-16C471 Extract OS            00 (0) 'MS-DOS'\n-16C472 General Purpose Flag  0808 (2056)\n+17ED7B LOCAL HEADER #1370    04034B50 (67324752)\n+17ED7F Extract Zip Spec      14 (20) '2.0'\n+17ED80 Extract OS            00 (0) 'MS-DOS'\n+17ED81 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16C474 Compression Method    0008 (8) 'Deflated'\n-16C476 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16C47A CRC                   00000000 (0)\n-16C47E Compressed Size       00000000 (0)\n-16C482 Uncompressed Size     00000000 (0)\n-16C486 Filename Length       0041 (65)\n-16C488 Extra Length          0000 (0)\n-16C48A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17ED83 Compression Method    0008 (8) 'Deflated'\n+17ED85 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17ED89 CRC                   00000000 (0)\n+17ED8D Compressed Size       00000000 (0)\n+17ED91 Uncompressed Size     00000000 (0)\n+17ED95 Filename Length       0021 (33)\n+17ED97 Extra Length          0000 (0)\n+17ED99 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16C48A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17ED99: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16C4CB PAYLOAD\n+17EDBA PAYLOAD               XX\n \n-16C73A DATA DESCRIPTOR       08074B50 (134695760)\n-16C73E CRC                   20C4D90B (549771531)\n-16C742 Compressed Size       0000026F (623)\n-16C746 Uncompressed Size     000004E4 (1252)\n+17EDBC DATA DESCRIPTOR       08074B50 (134695760)\n+17EDC0 CRC                   00000000 (0)\n+17EDC4 Compressed Size       00000002 (2)\n+17EDC8 Uncompressed Size     00000000 (0)\n \n-16C74A LOCAL HEADER #1371    04034B50 (67324752)\n-16C74E Extract Zip Spec      14 (20) '2.0'\n-16C74F Extract OS            00 (0) 'MS-DOS'\n-16C750 General Purpose Flag  0808 (2056)\n+17EDCC LOCAL HEADER #1371    04034B50 (67324752)\n+17EDD0 Extract Zip Spec      14 (20) '2.0'\n+17EDD1 Extract OS            00 (0) 'MS-DOS'\n+17EDD2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16C752 Compression Method    0008 (8) 'Deflated'\n-16C754 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16C758 CRC                   00000000 (0)\n-16C75C Compressed Size       00000000 (0)\n-16C760 Uncompressed Size     00000000 (0)\n-16C764 Filename Length       0042 (66)\n-16C766 Extra Length          0000 (0)\n-16C768 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17EDD4 Compression Method    0008 (8) 'Deflated'\n+17EDD6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17EDDA CRC                   00000000 (0)\n+17EDDE Compressed Size       00000000 (0)\n+17EDE2 Uncompressed Size     00000000 (0)\n+17EDE6 Filename Length       0034 (52)\n+17EDE8 Extra Length          0000 (0)\n+17EDEA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16C768: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17EDEA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16C7AA PAYLOAD\n+17EE1E PAYLOAD\n \n-16CAC9 DATA DESCRIPTOR       08074B50 (134695760)\n-16CACD CRC                   DE8C8852 (3733751890)\n-16CAD1 Compressed Size       0000031F (799)\n-16CAD5 Uncompressed Size     0000078C (1932)\n+17F3AC DATA DESCRIPTOR       08074B50 (134695760)\n+17F3B0 CRC                   88CEDD40 (2295258432)\n+17F3B4 Compressed Size       0000058E (1422)\n+17F3B8 Uncompressed Size     000011F6 (4598)\n \n-16CAD9 LOCAL HEADER #1372    04034B50 (67324752)\n-16CADD Extract Zip Spec      14 (20) '2.0'\n-16CADE Extract OS            00 (0) 'MS-DOS'\n-16CADF General Purpose Flag  0808 (2056)\n+17F3BC LOCAL HEADER #1372    04034B50 (67324752)\n+17F3C0 Extract Zip Spec      14 (20) '2.0'\n+17F3C1 Extract OS            00 (0) 'MS-DOS'\n+17F3C2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16CAE1 Compression Method    0008 (8) 'Deflated'\n-16CAE3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16CAE7 CRC                   00000000 (0)\n-16CAEB Compressed Size       00000000 (0)\n-16CAEF Uncompressed Size     00000000 (0)\n-16CAF3 Filename Length       0024 (36)\n-16CAF5 Extra Length          0000 (0)\n-16CAF7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17F3C4 Compression Method    0008 (8) 'Deflated'\n+17F3C6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17F3CA CRC                   00000000 (0)\n+17F3CE Compressed Size       00000000 (0)\n+17F3D2 Uncompressed Size     00000000 (0)\n+17F3D6 Filename Length       0036 (54)\n+17F3D8 Extra Length          0000 (0)\n+17F3DA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16CAF7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17F3DA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16CB1B PAYLOAD               XX\n+17F410 PAYLOAD               XX\n \n-16CB1D DATA DESCRIPTOR       08074B50 (134695760)\n-16CB21 CRC                   00000000 (0)\n-16CB25 Compressed Size       00000002 (2)\n-16CB29 Uncompressed Size     00000000 (0)\n+17F412 DATA DESCRIPTOR       08074B50 (134695760)\n+17F416 CRC                   00000000 (0)\n+17F41A Compressed Size       00000002 (2)\n+17F41E Uncompressed Size     00000000 (0)\n \n-16CB2D LOCAL HEADER #1373    04034B50 (67324752)\n-16CB31 Extract Zip Spec      14 (20) '2.0'\n-16CB32 Extract OS            00 (0) 'MS-DOS'\n-16CB33 General Purpose Flag  0808 (2056)\n+17F422 LOCAL HEADER #1373    04034B50 (67324752)\n+17F426 Extract Zip Spec      14 (20) '2.0'\n+17F427 Extract OS            00 (0) 'MS-DOS'\n+17F428 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16CB35 Compression Method    0008 (8) 'Deflated'\n-16CB37 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16CB3B CRC                   00000000 (0)\n-16CB3F Compressed Size       00000000 (0)\n-16CB43 Uncompressed Size     00000000 (0)\n-16CB47 Filename Length       003A (58)\n-16CB49 Extra Length          0000 (0)\n-16CB4B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17F42A Compression Method    0008 (8) 'Deflated'\n+17F42C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17F430 CRC                   00000000 (0)\n+17F434 Compressed Size       00000000 (0)\n+17F438 Uncompressed Size     00000000 (0)\n+17F43C Filename Length       003D (61)\n+17F43E Extra Length          0000 (0)\n+17F440 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16CB4B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17F440: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16CB85 PAYLOAD\n+17F47D PAYLOAD\n \n-16CEE7 DATA DESCRIPTOR       08074B50 (134695760)\n-16CEEB CRC                   FA431F6B (4198702955)\n-16CEEF Compressed Size       00000362 (866)\n-16CEF3 Uncompressed Size     0000081E (2078)\n+17F7D8 DATA DESCRIPTOR       08074B50 (134695760)\n+17F7DC CRC                   5DC5D2E5 (1573245669)\n+17F7E0 Compressed Size       0000035B (859)\n+17F7E4 Uncompressed Size     0000079B (1947)\n \n-16CEF7 LOCAL HEADER #1374    04034B50 (67324752)\n-16CEFB Extract Zip Spec      14 (20) '2.0'\n-16CEFC Extract OS            00 (0) 'MS-DOS'\n-16CEFD General Purpose Flag  0808 (2056)\n+17F7E8 LOCAL HEADER #1374    04034B50 (67324752)\n+17F7EC Extract Zip Spec      14 (20) '2.0'\n+17F7ED Extract OS            00 (0) 'MS-DOS'\n+17F7EE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16CEFF Compression Method    0008 (8) 'Deflated'\n-16CF01 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16CF05 CRC                   00000000 (0)\n-16CF09 Compressed Size       00000000 (0)\n-16CF0D Uncompressed Size     00000000 (0)\n-16CF11 Filename Length       003A (58)\n-16CF13 Extra Length          0000 (0)\n-16CF15 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17F7F0 Compression Method    0008 (8) 'Deflated'\n+17F7F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17F7F6 CRC                   00000000 (0)\n+17F7FA Compressed Size       00000000 (0)\n+17F7FE Uncompressed Size     00000000 (0)\n+17F802 Filename Length       0044 (68)\n+17F804 Extra Length          0000 (0)\n+17F806 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16CF15: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17F806: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16CF4F PAYLOAD\n+17F84A PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-16DCC9 DATA DESCRIPTOR       08074B50 (134695760)\n-16DCCD CRC                   57271651 (1462179409)\n-16DCD1 Compressed Size       00000D7A (3450)\n-16DCD5 Uncompressed Size     00003A1F (14879)\n+17F894 DATA DESCRIPTOR       08074B50 (134695760)\n+17F898 CRC                   AD875852 (2911328338)\n+17F89C Compressed Size       0000004A (74)\n+17F8A0 Uncompressed Size     0000004C (76)\n \n-16DCD9 LOCAL HEADER #1375    04034B50 (67324752)\n-16DCDD Extract Zip Spec      14 (20) '2.0'\n-16DCDE Extract OS            00 (0) 'MS-DOS'\n-16DCDF General Purpose Flag  0808 (2056)\n+17F8A4 LOCAL HEADER #1375    04034B50 (67324752)\n+17F8A8 Extract Zip Spec      14 (20) '2.0'\n+17F8A9 Extract OS            00 (0) 'MS-DOS'\n+17F8AA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16DCE1 Compression Method    0008 (8) 'Deflated'\n-16DCE3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16DCE7 CRC                   00000000 (0)\n-16DCEB Compressed Size       00000000 (0)\n-16DCEF Uncompressed Size     00000000 (0)\n-16DCF3 Filename Length       0041 (65)\n-16DCF5 Extra Length          0000 (0)\n-16DCF7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17F8AC Compression Method    0008 (8) 'Deflated'\n+17F8AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17F8B2 CRC                   00000000 (0)\n+17F8B6 Compressed Size       00000000 (0)\n+17F8BA Uncompressed Size     00000000 (0)\n+17F8BE Filename Length       0023 (35)\n+17F8C0 Extra Length          0000 (0)\n+17F8C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16DCF7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17F8C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16DD38 PAYLOAD\n+17F8E5 PAYLOAD               XX\n \n-16E010 DATA DESCRIPTOR       08074B50 (134695760)\n-16E014 CRC                   E96DE12E (3916292398)\n-16E018 Compressed Size       000002D8 (728)\n-16E01C Uncompressed Size     00000683 (1667)\n+17F8E7 DATA DESCRIPTOR       08074B50 (134695760)\n+17F8EB CRC                   00000000 (0)\n+17F8EF Compressed Size       00000002 (2)\n+17F8F3 Uncompressed Size     00000000 (0)\n \n-16E020 LOCAL HEADER #1376    04034B50 (67324752)\n-16E024 Extract Zip Spec      14 (20) '2.0'\n-16E025 Extract OS            00 (0) 'MS-DOS'\n-16E026 General Purpose Flag  0808 (2056)\n+17F8F7 LOCAL HEADER #1376    04034B50 (67324752)\n+17F8FB Extract Zip Spec      14 (20) '2.0'\n+17F8FC Extract OS            00 (0) 'MS-DOS'\n+17F8FD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16E028 Compression Method    0008 (8) 'Deflated'\n-16E02A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16E02E CRC                   00000000 (0)\n-16E032 Compressed Size       00000000 (0)\n-16E036 Uncompressed Size     00000000 (0)\n-16E03A Filename Length       0042 (66)\n-16E03C Extra Length          0000 (0)\n-16E03E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17F8FF Compression Method    0008 (8) 'Deflated'\n+17F901 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17F905 CRC                   00000000 (0)\n+17F909 Compressed Size       00000000 (0)\n+17F90D Uncompressed Size     00000000 (0)\n+17F911 Filename Length       0038 (56)\n+17F913 Extra Length          0000 (0)\n+17F915 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16E03E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17F915: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16E080 PAYLOAD\n+17F94D PAYLOAD\n \n-16E8E5 DATA DESCRIPTOR       08074B50 (134695760)\n-16E8E9 CRC                   F6A7D6C9 (4138194633)\n-16E8ED Compressed Size       00000865 (2149)\n-16E8F1 Uncompressed Size     0000205C (8284)\n+17FEBF DATA DESCRIPTOR       08074B50 (134695760)\n+17FEC3 CRC                   75FBF59C (1979446684)\n+17FEC7 Compressed Size       00000572 (1394)\n+17FECB Uncompressed Size     00000FCF (4047)\n \n-16E8F5 LOCAL HEADER #1377    04034B50 (67324752)\n-16E8F9 Extract Zip Spec      14 (20) '2.0'\n-16E8FA Extract OS            00 (0) 'MS-DOS'\n-16E8FB General Purpose Flag  0808 (2056)\n+17FECF LOCAL HEADER #1377    04034B50 (67324752)\n+17FED3 Extract Zip Spec      14 (20) '2.0'\n+17FED4 Extract OS            00 (0) 'MS-DOS'\n+17FED5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16E8FD Compression Method    0008 (8) 'Deflated'\n-16E8FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16E903 CRC                   00000000 (0)\n-16E907 Compressed Size       00000000 (0)\n-16E90B Uncompressed Size     00000000 (0)\n-16E90F Filename Length       004F (79)\n-16E911 Extra Length          0000 (0)\n-16E913 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17FED7 Compression Method    0008 (8) 'Deflated'\n+17FED9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17FEDD CRC                   00000000 (0)\n+17FEE1 Compressed Size       00000000 (0)\n+17FEE5 Uncompressed Size     00000000 (0)\n+17FEE9 Filename Length       0038 (56)\n+17FEEB Extra Length          0000 (0)\n+17FEED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16E913: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17FEED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16E962 PAYLOAD\n+17FF25 PAYLOAD               XX\n \n-16ED91 DATA DESCRIPTOR       08074B50 (134695760)\n-16ED95 CRC                   B6EA911C (3068825884)\n-16ED99 Compressed Size       0000042F (1071)\n-16ED9D Uncompressed Size     00000C6F (3183)\n+17FF27 DATA DESCRIPTOR       08074B50 (134695760)\n+17FF2B CRC                   00000000 (0)\n+17FF2F Compressed Size       00000002 (2)\n+17FF33 Uncompressed Size     00000000 (0)\n \n-16EDA1 LOCAL HEADER #1378    04034B50 (67324752)\n-16EDA5 Extract Zip Spec      14 (20) '2.0'\n-16EDA6 Extract OS            00 (0) 'MS-DOS'\n-16EDA7 General Purpose Flag  0808 (2056)\n+17FF37 LOCAL HEADER #1378    04034B50 (67324752)\n+17FF3B Extract Zip Spec      14 (20) '2.0'\n+17FF3C Extract OS            00 (0) 'MS-DOS'\n+17FF3D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16EDA9 Compression Method    0008 (8) 'Deflated'\n-16EDAB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16EDAF CRC                   00000000 (0)\n-16EDB3 Compressed Size       00000000 (0)\n-16EDB7 Uncompressed Size     00000000 (0)\n-16EDBB Filename Length       0049 (73)\n-16EDBD Extra Length          0000 (0)\n-16EDBF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+17FF3F Compression Method    0008 (8) 'Deflated'\n+17FF41 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+17FF45 CRC                   00000000 (0)\n+17FF49 Compressed Size       00000000 (0)\n+17FF4D Uncompressed Size     00000000 (0)\n+17FF51 Filename Length       003F (63)\n+17FF53 Extra Length          0000 (0)\n+17FF55 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16EDBF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x17FF55: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16EE08 PAYLOAD\n+17FF94 PAYLOAD\n \n-16F06E DATA DESCRIPTOR       08074B50 (134695760)\n-16F072 CRC                   ACDFEDCC (2900356556)\n-16F076 Compressed Size       00000266 (614)\n-16F07A Uncompressed Size     000004D9 (1241)\n+18030A DATA DESCRIPTOR       08074B50 (134695760)\n+18030E CRC                   3042ABBA (809675706)\n+180312 Compressed Size       00000376 (886)\n+180316 Uncompressed Size     00000819 (2073)\n \n-16F07E LOCAL HEADER #1379    04034B50 (67324752)\n-16F082 Extract Zip Spec      14 (20) '2.0'\n-16F083 Extract OS            00 (0) 'MS-DOS'\n-16F084 General Purpose Flag  0808 (2056)\n+18031A LOCAL HEADER #1379    04034B50 (67324752)\n+18031E Extract Zip Spec      14 (20) '2.0'\n+18031F Extract OS            00 (0) 'MS-DOS'\n+180320 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16F086 Compression Method    0008 (8) 'Deflated'\n-16F088 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16F08C CRC                   00000000 (0)\n-16F090 Compressed Size       00000000 (0)\n-16F094 Uncompressed Size     00000000 (0)\n-16F098 Filename Length       0029 (41)\n-16F09A Extra Length          0000 (0)\n-16F09C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+180322 Compression Method    0008 (8) 'Deflated'\n+180324 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+180328 CRC                   00000000 (0)\n+18032C Compressed Size       00000000 (0)\n+180330 Uncompressed Size     00000000 (0)\n+180334 Filename Length       0046 (70)\n+180336 Extra Length          0000 (0)\n+180338 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16F09C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x180338: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16F0C5 PAYLOAD               XX\n+18037E PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-16F0C7 DATA DESCRIPTOR       08074B50 (134695760)\n-16F0CB CRC                   00000000 (0)\n-16F0CF Compressed Size       00000002 (2)\n-16F0D3 Uncompressed Size     00000000 (0)\n+1803C9 DATA DESCRIPTOR       08074B50 (134695760)\n+1803CD CRC                   26719F8E (644980622)\n+1803D1 Compressed Size       0000004B (75)\n+1803D5 Uncompressed Size     0000004E (78)\n \n-16F0D7 LOCAL HEADER #1380    04034B50 (67324752)\n-16F0DB Extract Zip Spec      14 (20) '2.0'\n-16F0DC Extract OS            00 (0) 'MS-DOS'\n-16F0DD General Purpose Flag  0808 (2056)\n+1803D9 LOCAL HEADER #1380    04034B50 (67324752)\n+1803DD Extract Zip Spec      14 (20) '2.0'\n+1803DE Extract OS            00 (0) 'MS-DOS'\n+1803DF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16F0DF Compression Method    0008 (8) 'Deflated'\n-16F0E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16F0E5 CRC                   00000000 (0)\n-16F0E9 Compressed Size       00000000 (0)\n-16F0ED Uncompressed Size     00000000 (0)\n-16F0F1 Filename Length       0044 (68)\n-16F0F3 Extra Length          0000 (0)\n-16F0F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1803E1 Compression Method    0008 (8) 'Deflated'\n+1803E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1803E7 CRC                   00000000 (0)\n+1803EB Compressed Size       00000000 (0)\n+1803EF Uncompressed Size     00000000 (0)\n+1803F3 Filename Length       0015 (21)\n+1803F5 Extra Length          0000 (0)\n+1803F7 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16F0F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1803F7: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16F139 PAYLOAD\n+18040C PAYLOAD               XX\n \n-16F641 DATA DESCRIPTOR       08074B50 (134695760)\n-16F645 CRC                   7087B36E (1887941486)\n-16F649 Compressed Size       00000508 (1288)\n-16F64D Uncompressed Size     00000C71 (3185)\n+18040E DATA DESCRIPTOR       08074B50 (134695760)\n+180412 CRC                   00000000 (0)\n+180416 Compressed Size       00000002 (2)\n+18041A Uncompressed Size     00000000 (0)\n \n-16F651 LOCAL HEADER #1381    04034B50 (67324752)\n-16F655 Extract Zip Spec      14 (20) '2.0'\n-16F656 Extract OS            00 (0) 'MS-DOS'\n-16F657 General Purpose Flag  0808 (2056)\n+18041E LOCAL HEADER #1381    04034B50 (67324752)\n+180422 Extract Zip Spec      14 (20) '2.0'\n+180423 Extract OS            00 (0) 'MS-DOS'\n+180424 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16F659 Compression Method    0008 (8) 'Deflated'\n-16F65B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16F65F CRC                   00000000 (0)\n-16F663 Compressed Size       00000000 (0)\n-16F667 Uncompressed Size     00000000 (0)\n-16F66B Filename Length       0043 (67)\n-16F66D Extra Length          0000 (0)\n-16F66F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+180426 Compression Method    0008 (8) 'Deflated'\n+180428 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18042C CRC                   00000000 (0)\n+180430 Compressed Size       00000000 (0)\n+180434 Uncompressed Size     00000000 (0)\n+180438 Filename Length       001D (29)\n+18043A Extra Length          0000 (0)\n+18043C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16F66F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18043C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16F6B2 PAYLOAD\n+180459 PAYLOAD               XX\n \n-16FCA0 DATA DESCRIPTOR       08074B50 (134695760)\n-16FCA4 CRC                   AF46E40B (2940658699)\n-16FCA8 Compressed Size       000005EE (1518)\n-16FCAC Uncompressed Size     00001556 (5462)\n+18045B DATA DESCRIPTOR       08074B50 (134695760)\n+18045F CRC                   00000000 (0)\n+180463 Compressed Size       00000002 (2)\n+180467 Uncompressed Size     00000000 (0)\n \n-16FCB0 LOCAL HEADER #1382    04034B50 (67324752)\n-16FCB4 Extract Zip Spec      14 (20) '2.0'\n-16FCB5 Extract OS            00 (0) 'MS-DOS'\n-16FCB6 General Purpose Flag  0808 (2056)\n+18046B LOCAL HEADER #1382    04034B50 (67324752)\n+18046F Extract Zip Spec      14 (20) '2.0'\n+180470 Extract OS            00 (0) 'MS-DOS'\n+180471 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16FCB8 Compression Method    0008 (8) 'Deflated'\n-16FCBA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16FCBE CRC                   00000000 (0)\n-16FCC2 Compressed Size       00000000 (0)\n-16FCC6 Uncompressed Size     00000000 (0)\n-16FCCA Filename Length       0024 (36)\n-16FCCC Extra Length          0000 (0)\n-16FCCE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+180473 Compression Method    0008 (8) 'Deflated'\n+180475 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+180479 CRC                   00000000 (0)\n+18047D Compressed Size       00000000 (0)\n+180481 Uncompressed Size     00000000 (0)\n+180485 Filename Length       002D (45)\n+180487 Extra Length          0000 (0)\n+180489 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16FCCE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x180489: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16FCF2 PAYLOAD               XX\n+1804B6 PAYLOAD\n \n-16FCF4 DATA DESCRIPTOR       08074B50 (134695760)\n-16FCF8 CRC                   00000000 (0)\n-16FCFC Compressed Size       00000002 (2)\n-16FD00 Uncompressed Size     00000000 (0)\n+1806ED DATA DESCRIPTOR       08074B50 (134695760)\n+1806F1 CRC                   FE44AB9A (4265913242)\n+1806F5 Compressed Size       00000237 (567)\n+1806F9 Uncompressed Size     000003F7 (1015)\n \n-16FD04 LOCAL HEADER #1383    04034B50 (67324752)\n-16FD08 Extract Zip Spec      14 (20) '2.0'\n-16FD09 Extract OS            00 (0) 'MS-DOS'\n-16FD0A General Purpose Flag  0808 (2056)\n+1806FD LOCAL HEADER #1383    04034B50 (67324752)\n+180701 Extract Zip Spec      14 (20) '2.0'\n+180702 Extract OS            00 (0) 'MS-DOS'\n+180703 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16FD0C Compression Method    0008 (8) 'Deflated'\n-16FD0E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16FD12 CRC                   00000000 (0)\n-16FD16 Compressed Size       00000000 (0)\n-16FD1A Uncompressed Size     00000000 (0)\n-16FD1E Filename Length       0036 (54)\n-16FD20 Extra Length          0000 (0)\n-16FD22 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+180705 Compression Method    0008 (8) 'Deflated'\n+180707 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18070B CRC                   00000000 (0)\n+18070F Compressed Size       00000000 (0)\n+180713 Uncompressed Size     00000000 (0)\n+180717 Filename Length       0030 (48)\n+180719 Extra Length          0000 (0)\n+18071B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16FD22: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18071B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16FD58 PAYLOAD\n+18074B PAYLOAD\n \n-16FF8D DATA DESCRIPTOR       08074B50 (134695760)\n-16FF91 CRC                   CCE4DF99 (3437551513)\n-16FF95 Compressed Size       00000235 (565)\n-16FF99 Uncompressed Size     000003E1 (993)\n+180A56 DATA DESCRIPTOR       08074B50 (134695760)\n+180A5A CRC                   C783A617 (3347293719)\n+180A5E Compressed Size       0000030B (779)\n+180A62 Uncompressed Size     00000880 (2176)\n \n-16FF9D LOCAL HEADER #1384    04034B50 (67324752)\n-16FFA1 Extract Zip Spec      14 (20) '2.0'\n-16FFA2 Extract OS            00 (0) 'MS-DOS'\n-16FFA3 General Purpose Flag  0808 (2056)\n+180A66 LOCAL HEADER #1384    04034B50 (67324752)\n+180A6A Extract Zip Spec      14 (20) '2.0'\n+180A6B Extract OS            00 (0) 'MS-DOS'\n+180A6C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-16FFA5 Compression Method    0008 (8) 'Deflated'\n-16FFA7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-16FFAB CRC                   00000000 (0)\n-16FFAF Compressed Size       00000000 (0)\n-16FFB3 Uncompressed Size     00000000 (0)\n-16FFB7 Filename Length       0035 (53)\n-16FFB9 Extra Length          0000 (0)\n-16FFBB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+180A6E Compression Method    0008 (8) 'Deflated'\n+180A70 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+180A74 CRC                   00000000 (0)\n+180A78 Compressed Size       00000000 (0)\n+180A7C Uncompressed Size     00000000 (0)\n+180A80 Filename Length       0037 (55)\n+180A82 Extra Length          0000 (0)\n+180A84 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x16FFBB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x180A84: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-16FFF0 PAYLOAD\n+180ABB PAYLOAD\n \n-17022D DATA DESCRIPTOR       08074B50 (134695760)\n-170231 CRC                   F48F4A7B (4103031419)\n-170235 Compressed Size       0000023D (573)\n-170239 Uncompressed Size     000003CF (975)\n+180D0D DATA DESCRIPTOR       08074B50 (134695760)\n+180D11 CRC                   F2C44151 (4072948049)\n+180D15 Compressed Size       00000252 (594)\n+180D19 Uncompressed Size     000004A6 (1190)\n \n-17023D LOCAL HEADER #1385    04034B50 (67324752)\n-170241 Extract Zip Spec      14 (20) '2.0'\n-170242 Extract OS            00 (0) 'MS-DOS'\n-170243 General Purpose Flag  0808 (2056)\n+180D1D LOCAL HEADER #1385    04034B50 (67324752)\n+180D21 Extract Zip Spec      14 (20) '2.0'\n+180D22 Extract OS            00 (0) 'MS-DOS'\n+180D23 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-170245 Compression Method    0008 (8) 'Deflated'\n-170247 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17024B CRC                   00000000 (0)\n-17024F Compressed Size       00000000 (0)\n-170253 Uncompressed Size     00000000 (0)\n-170257 Filename Length       0032 (50)\n-170259 Extra Length          0000 (0)\n-17025B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+180D25 Compression Method    0008 (8) 'Deflated'\n+180D27 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+180D2B CRC                   00000000 (0)\n+180D2F Compressed Size       00000000 (0)\n+180D33 Uncompressed Size     00000000 (0)\n+180D37 Filename Length       0031 (49)\n+180D39 Extra Length          0000 (0)\n+180D3B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17025B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x180D3B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17028D PAYLOAD\n+180D6C PAYLOAD\n \n-1705F3 DATA DESCRIPTOR       08074B50 (134695760)\n-1705F7 CRC                   85A56629 (2242209321)\n-1705FB Compressed Size       00000366 (870)\n-1705FF Uncompressed Size     000007E5 (2021)\n+180FCE DATA DESCRIPTOR       08074B50 (134695760)\n+180FD2 CRC                   D40E78F4 (3557718260)\n+180FD6 Compressed Size       00000262 (610)\n+180FDA Uncompressed Size     000004A8 (1192)\n \n-170603 LOCAL HEADER #1386    04034B50 (67324752)\n-170607 Extract Zip Spec      14 (20) '2.0'\n-170608 Extract OS            00 (0) 'MS-DOS'\n-170609 General Purpose Flag  0808 (2056)\n+180FDE LOCAL HEADER #1386    04034B50 (67324752)\n+180FE2 Extract Zip Spec      14 (20) '2.0'\n+180FE3 Extract OS            00 (0) 'MS-DOS'\n+180FE4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17060B Compression Method    0008 (8) 'Deflated'\n-17060D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-170611 CRC                   00000000 (0)\n-170615 Compressed Size       00000000 (0)\n-170619 Uncompressed Size     00000000 (0)\n-17061D Filename Length       0036 (54)\n-17061F Extra Length          0000 (0)\n-170621 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+180FE6 Compression Method    0008 (8) 'Deflated'\n+180FE8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+180FEC CRC                   00000000 (0)\n+180FF0 Compressed Size       00000000 (0)\n+180FF4 Uncompressed Size     00000000 (0)\n+180FF8 Filename Length       0038 (56)\n+180FFA Extra Length          0000 (0)\n+180FFC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x170621: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x180FFC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-170657 PAYLOAD\n+181034 PAYLOAD\n \n-1708AA DATA DESCRIPTOR       08074B50 (134695760)\n-1708AE CRC                   CB7D1A2B (3413973547)\n-1708B2 Compressed Size       00000253 (595)\n-1708B6 Uncompressed Size     00000422 (1058)\n+181305 DATA DESCRIPTOR       08074B50 (134695760)\n+181309 CRC                   2A63E263 (711189091)\n+18130D Compressed Size       000002D1 (721)\n+181311 Uncompressed Size     0000061D (1565)\n \n-1708BA LOCAL HEADER #1387    04034B50 (67324752)\n-1708BE Extract Zip Spec      14 (20) '2.0'\n-1708BF Extract OS            00 (0) 'MS-DOS'\n-1708C0 General Purpose Flag  0808 (2056)\n+181315 LOCAL HEADER #1387    04034B50 (67324752)\n+181319 Extract Zip Spec      14 (20) '2.0'\n+18131A Extract OS            00 (0) 'MS-DOS'\n+18131B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1708C2 Compression Method    0008 (8) 'Deflated'\n-1708C4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1708C8 CRC                   00000000 (0)\n-1708CC Compressed Size       00000000 (0)\n-1708D0 Uncompressed Size     00000000 (0)\n-1708D4 Filename Length       0038 (56)\n-1708D6 Extra Length          0000 (0)\n-1708D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18131D Compression Method    0008 (8) 'Deflated'\n+18131F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+181323 CRC                   00000000 (0)\n+181327 Compressed Size       00000000 (0)\n+18132B Uncompressed Size     00000000 (0)\n+18132F Filename Length       0038 (56)\n+181331 Extra Length          0000 (0)\n+181333 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1708D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x181333: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-170910 PAYLOAD\n+18136B PAYLOAD\n \n-170C33 DATA DESCRIPTOR       08074B50 (134695760)\n-170C37 CRC                   3C17796F (1008171375)\n-170C3B Compressed Size       00000323 (803)\n-170C3F Uncompressed Size     000007F7 (2039)\n+181595 DATA DESCRIPTOR       08074B50 (134695760)\n+181599 CRC                   D473D979 (3564362105)\n+18159D Compressed Size       0000022A (554)\n+1815A1 Uncompressed Size     00000400 (1024)\n \n-170C43 LOCAL HEADER #1388    04034B50 (67324752)\n-170C47 Extract Zip Spec      14 (20) '2.0'\n-170C48 Extract OS            00 (0) 'MS-DOS'\n-170C49 General Purpose Flag  0808 (2056)\n+1815A5 LOCAL HEADER #1388    04034B50 (67324752)\n+1815A9 Extract Zip Spec      14 (20) '2.0'\n+1815AA Extract OS            00 (0) 'MS-DOS'\n+1815AB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-170C4B Compression Method    0008 (8) 'Deflated'\n-170C4D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-170C51 CRC                   00000000 (0)\n-170C55 Compressed Size       00000000 (0)\n-170C59 Uncompressed Size     00000000 (0)\n-170C5D Filename Length       003D (61)\n-170C5F Extra Length          0000 (0)\n-170C61 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1815AD Compression Method    0008 (8) 'Deflated'\n+1815AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1815B3 CRC                   00000000 (0)\n+1815B7 Compressed Size       00000000 (0)\n+1815BB Uncompressed Size     00000000 (0)\n+1815BF Filename Length       0028 (40)\n+1815C1 Extra Length          0000 (0)\n+1815C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x170C61: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1815C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-170C9E PAYLOAD\n+1815EB PAYLOAD               XX\n \n-170F12 DATA DESCRIPTOR       08074B50 (134695760)\n-170F16 CRC                   18C4C330 (415548208)\n-170F1A Compressed Size       00000274 (628)\n-170F1E Uncompressed Size     000004A5 (1189)\n+1815ED DATA DESCRIPTOR       08074B50 (134695760)\n+1815F1 CRC                   00000000 (0)\n+1815F5 Compressed Size       00000002 (2)\n+1815F9 Uncompressed Size     00000000 (0)\n \n-170F22 LOCAL HEADER #1389    04034B50 (67324752)\n-170F26 Extract Zip Spec      14 (20) '2.0'\n-170F27 Extract OS            00 (0) 'MS-DOS'\n-170F28 General Purpose Flag  0808 (2056)\n+1815FD LOCAL HEADER #1389    04034B50 (67324752)\n+181601 Extract Zip Spec      14 (20) '2.0'\n+181602 Extract OS            00 (0) 'MS-DOS'\n+181603 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-170F2A Compression Method    0008 (8) 'Deflated'\n-170F2C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-170F30 CRC                   00000000 (0)\n-170F34 Compressed Size       00000000 (0)\n-170F38 Uncompressed Size     00000000 (0)\n-170F3C Filename Length       002C (44)\n-170F3E Extra Length          0000 (0)\n-170F40 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+181605 Compression Method    0008 (8) 'Deflated'\n+181607 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18160B CRC                   00000000 (0)\n+18160F Compressed Size       00000000 (0)\n+181613 Uncompressed Size     00000000 (0)\n+181617 Filename Length       0030 (48)\n+181619 Extra Length          0000 (0)\n+18161B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x170F40: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18161B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-170F6C PAYLOAD               XX\n+18164B PAYLOAD\n \n-170F6E DATA DESCRIPTOR       08074B50 (134695760)\n-170F72 CRC                   00000000 (0)\n-170F76 Compressed Size       00000002 (2)\n-170F7A Uncompressed Size     00000000 (0)\n+18190D DATA DESCRIPTOR       08074B50 (134695760)\n+181911 CRC                   45D6532E (1171673902)\n+181915 Compressed Size       000002C2 (706)\n+181919 Uncompressed Size     00000647 (1607)\n \n-170F7E LOCAL HEADER #1390    04034B50 (67324752)\n-170F82 Extract Zip Spec      14 (20) '2.0'\n-170F83 Extract OS            00 (0) 'MS-DOS'\n-170F84 General Purpose Flag  0808 (2056)\n+18191D LOCAL HEADER #1390    04034B50 (67324752)\n+181921 Extract Zip Spec      14 (20) '2.0'\n+181922 Extract OS            00 (0) 'MS-DOS'\n+181923 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-170F86 Compression Method    0008 (8) 'Deflated'\n-170F88 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-170F8C CRC                   00000000 (0)\n-170F90 Compressed Size       00000000 (0)\n-170F94 Uncompressed Size     00000000 (0)\n-170F98 Filename Length       0047 (71)\n-170F9A Extra Length          0000 (0)\n-170F9C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+181925 Compression Method    0008 (8) 'Deflated'\n+181927 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18192B CRC                   00000000 (0)\n+18192F Compressed Size       00000000 (0)\n+181933 Uncompressed Size     00000000 (0)\n+181937 Filename Length       0025 (37)\n+181939 Extra Length          0000 (0)\n+18193B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x170F9C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18193B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-170FE3 PAYLOAD\n+181960 PAYLOAD               XX\n \n-171D86 DATA DESCRIPTOR       08074B50 (134695760)\n-171D8A CRC                   C08A2F01 (3230281473)\n-171D8E Compressed Size       00000DA3 (3491)\n-171D92 Uncompressed Size     000042B4 (17076)\n+181962 DATA DESCRIPTOR       08074B50 (134695760)\n+181966 CRC                   00000000 (0)\n+18196A Compressed Size       00000002 (2)\n+18196E Uncompressed Size     00000000 (0)\n \n-171D96 LOCAL HEADER #1391    04034B50 (67324752)\n-171D9A Extract Zip Spec      14 (20) '2.0'\n-171D9B Extract OS            00 (0) 'MS-DOS'\n-171D9C General Purpose Flag  0808 (2056)\n+181972 LOCAL HEADER #1391    04034B50 (67324752)\n+181976 Extract Zip Spec      14 (20) '2.0'\n+181977 Extract OS            00 (0) 'MS-DOS'\n+181978 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-171D9E Compression Method    0008 (8) 'Deflated'\n-171DA0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-171DA4 CRC                   00000000 (0)\n-171DA8 Compressed Size       00000000 (0)\n-171DAC Uncompressed Size     00000000 (0)\n-171DB0 Filename Length       004C (76)\n-171DB2 Extra Length          0000 (0)\n-171DB4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18197A Compression Method    0008 (8) 'Deflated'\n+18197C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+181980 CRC                   00000000 (0)\n+181984 Compressed Size       00000000 (0)\n+181988 Uncompressed Size     00000000 (0)\n+18198C Filename Length       003C (60)\n+18198E Extra Length          0000 (0)\n+181990 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x171DB4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x181990: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-171E00 PAYLOAD\n+1819CC PAYLOAD\n \n-172071 DATA DESCRIPTOR       08074B50 (134695760)\n-172075 CRC                   7A12603D (2048024637)\n-172079 Compressed Size       00000271 (625)\n-17207D Uncompressed Size     000004FC (1276)\n+181E6F DATA DESCRIPTOR       08074B50 (134695760)\n+181E73 CRC                   D812ECFA (3625118970)\n+181E77 Compressed Size       000004A3 (1187)\n+181E7B Uncompressed Size     00000F93 (3987)\n \n-172081 LOCAL HEADER #1392    04034B50 (67324752)\n-172085 Extract Zip Spec      14 (20) '2.0'\n-172086 Extract OS            00 (0) 'MS-DOS'\n-172087 General Purpose Flag  0808 (2056)\n+181E7F LOCAL HEADER #1392    04034B50 (67324752)\n+181E83 Extract Zip Spec      14 (20) '2.0'\n+181E84 Extract OS            00 (0) 'MS-DOS'\n+181E85 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-172089 Compression Method    0008 (8) 'Deflated'\n-17208B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17208F CRC                   00000000 (0)\n-172093 Compressed Size       00000000 (0)\n-172097 Uncompressed Size     00000000 (0)\n-17209B Filename Length       002C (44)\n-17209D Extra Length          0000 (0)\n-17209F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+181E87 Compression Method    0008 (8) 'Deflated'\n+181E89 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+181E8D CRC                   00000000 (0)\n+181E91 Compressed Size       00000000 (0)\n+181E95 Uncompressed Size     00000000 (0)\n+181E99 Filename Length       003E (62)\n+181E9B Extra Length          0000 (0)\n+181E9D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17209F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x181E9D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1720CB PAYLOAD               XX\n+181EDB PAYLOAD\n \n-1720CD DATA DESCRIPTOR       08074B50 (134695760)\n-1720D1 CRC                   00000000 (0)\n-1720D5 Compressed Size       00000002 (2)\n-1720D9 Uncompressed Size     00000000 (0)\n+1821EA DATA DESCRIPTOR       08074B50 (134695760)\n+1821EE CRC                   E1096065 (3775488101)\n+1821F2 Compressed Size       0000030F (783)\n+1821F6 Uncompressed Size     000006BD (1725)\n \n-1720DD LOCAL HEADER #1393    04034B50 (67324752)\n-1720E1 Extract Zip Spec      14 (20) '2.0'\n-1720E2 Extract OS            00 (0) 'MS-DOS'\n-1720E3 General Purpose Flag  0808 (2056)\n+1821FA LOCAL HEADER #1393    04034B50 (67324752)\n+1821FE Extract Zip Spec      14 (20) '2.0'\n+1821FF Extract OS            00 (0) 'MS-DOS'\n+182200 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1720E5 Compression Method    0008 (8) 'Deflated'\n-1720E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1720EB CRC                   00000000 (0)\n-1720EF Compressed Size       00000000 (0)\n-1720F3 Uncompressed Size     00000000 (0)\n-1720F7 Filename Length       0048 (72)\n-1720F9 Extra Length          0000 (0)\n-1720FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+182202 Compression Method    0008 (8) 'Deflated'\n+182204 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+182208 CRC                   00000000 (0)\n+18220C Compressed Size       00000000 (0)\n+182210 Uncompressed Size     00000000 (0)\n+182214 Filename Length       0022 (34)\n+182216 Extra Length          0000 (0)\n+182218 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1720FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x182218: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-172143 PAYLOAD\n+18223A PAYLOAD               XX\n \n-17284F DATA DESCRIPTOR       08074B50 (134695760)\n-172853 CRC                   72360194 (1916141972)\n-172857 Compressed Size       0000070C (1804)\n-17285B Uncompressed Size     00001FE6 (8166)\n+18223C DATA DESCRIPTOR       08074B50 (134695760)\n+182240 CRC                   00000000 (0)\n+182244 Compressed Size       00000002 (2)\n+182248 Uncompressed Size     00000000 (0)\n \n-17285F LOCAL HEADER #1394    04034B50 (67324752)\n-172863 Extract Zip Spec      14 (20) '2.0'\n-172864 Extract OS            00 (0) 'MS-DOS'\n-172865 General Purpose Flag  0808 (2056)\n+18224C LOCAL HEADER #1394    04034B50 (67324752)\n+182250 Extract Zip Spec      14 (20) '2.0'\n+182251 Extract OS            00 (0) 'MS-DOS'\n+182252 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-172867 Compression Method    0008 (8) 'Deflated'\n-172869 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17286D CRC                   00000000 (0)\n-172871 Compressed Size       00000000 (0)\n-172875 Uncompressed Size     00000000 (0)\n-172879 Filename Length       004D (77)\n-17287B Extra Length          0000 (0)\n-17287D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+182254 Compression Method    0008 (8) 'Deflated'\n+182256 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18225A CRC                   00000000 (0)\n+18225E Compressed Size       00000000 (0)\n+182262 Uncompressed Size     00000000 (0)\n+182266 Filename Length       002B (43)\n+182268 Extra Length          0000 (0)\n+18226A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17287D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18226A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1728CA PAYLOAD\n+182295 PAYLOAD\n \n-173096 DATA DESCRIPTOR       08074B50 (134695760)\n-17309A CRC                   B6B21903 (3065125123)\n-17309E Compressed Size       000007CC (1996)\n-1730A2 Uncompressed Size     00001B80 (7040)\n+182789 DATA DESCRIPTOR       08074B50 (134695760)\n+18278D CRC                   86EEED41 (2263805249)\n+182791 Compressed Size       000004F4 (1268)\n+182795 Uncompressed Size     00000E84 (3716)\n \n-1730A6 LOCAL HEADER #1395    04034B50 (67324752)\n-1730AA Extract Zip Spec      14 (20) '2.0'\n-1730AB Extract OS            00 (0) 'MS-DOS'\n-1730AC General Purpose Flag  0808 (2056)\n+182799 LOCAL HEADER #1395    04034B50 (67324752)\n+18279D Extract Zip Spec      14 (20) '2.0'\n+18279E Extract OS            00 (0) 'MS-DOS'\n+18279F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1730AE Compression Method    0008 (8) 'Deflated'\n-1730B0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1730B4 CRC                   00000000 (0)\n-1730B8 Compressed Size       00000000 (0)\n-1730BC Uncompressed Size     00000000 (0)\n-1730C0 Filename Length       0020 (32)\n-1730C2 Extra Length          0000 (0)\n-1730C4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1827A1 Compression Method    0008 (8) 'Deflated'\n+1827A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1827A7 CRC                   00000000 (0)\n+1827AB Compressed Size       00000000 (0)\n+1827AF Uncompressed Size     00000000 (0)\n+1827B3 Filename Length       0029 (41)\n+1827B5 Extra Length          0000 (0)\n+1827B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1730C4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1827B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1730E4 PAYLOAD               XX\n+1827E0 PAYLOAD\n \n-1730E6 DATA DESCRIPTOR       08074B50 (134695760)\n-1730EA CRC                   00000000 (0)\n-1730EE Compressed Size       00000002 (2)\n-1730F2 Uncompressed Size     00000000 (0)\n+182C25 DATA DESCRIPTOR       08074B50 (134695760)\n+182C29 CRC                   E32E7BA0 (3811474336)\n+182C2D Compressed Size       00000445 (1093)\n+182C31 Uncompressed Size     00000D90 (3472)\n \n-1730F6 LOCAL HEADER #1396    04034B50 (67324752)\n-1730FA Extract Zip Spec      14 (20) '2.0'\n-1730FB Extract OS            00 (0) 'MS-DOS'\n-1730FC General Purpose Flag  0808 (2056)\n+182C35 LOCAL HEADER #1396    04034B50 (67324752)\n+182C39 Extract Zip Spec      14 (20) '2.0'\n+182C3A Extract OS            00 (0) 'MS-DOS'\n+182C3B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1730FE Compression Method    0008 (8) 'Deflated'\n-173100 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-173104 CRC                   00000000 (0)\n-173108 Compressed Size       00000000 (0)\n-17310C Uncompressed Size     00000000 (0)\n-173110 Filename Length       0032 (50)\n-173112 Extra Length          0000 (0)\n-173114 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+182C3D Compression Method    0008 (8) 'Deflated'\n+182C3F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+182C43 CRC                   00000000 (0)\n+182C47 Compressed Size       00000000 (0)\n+182C4B Uncompressed Size     00000000 (0)\n+182C4F Filename Length       002E (46)\n+182C51 Extra Length          0000 (0)\n+182C53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x173114: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x182C53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-173146 PAYLOAD\n+182C81 PAYLOAD\n \n-1741B9 DATA DESCRIPTOR       08074B50 (134695760)\n-1741BD CRC                   3CD43B28 (1020541736)\n-1741C1 Compressed Size       00001073 (4211)\n-1741C5 Uncompressed Size     00004EA7 (20135)\n+183133 DATA DESCRIPTOR       08074B50 (134695760)\n+183137 CRC                   C56E8E67 (3312356967)\n+18313B Compressed Size       000004B2 (1202)\n+18313F Uncompressed Size     00000D52 (3410)\n \n-1741C9 LOCAL HEADER #1397    04034B50 (67324752)\n-1741CD Extract Zip Spec      14 (20) '2.0'\n-1741CE Extract OS            00 (0) 'MS-DOS'\n-1741CF General Purpose Flag  0808 (2056)\n+183143 LOCAL HEADER #1397    04034B50 (67324752)\n+183147 Extract Zip Spec      14 (20) '2.0'\n+183148 Extract OS            00 (0) 'MS-DOS'\n+183149 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1741D1 Compression Method    0008 (8) 'Deflated'\n-1741D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1741D7 CRC                   00000000 (0)\n-1741DB Compressed Size       00000000 (0)\n-1741DF Uncompressed Size     00000000 (0)\n-1741E3 Filename Length       0039 (57)\n-1741E5 Extra Length          0000 (0)\n-1741E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18314B Compression Method    0008 (8) 'Deflated'\n+18314D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+183151 CRC                   00000000 (0)\n+183155 Compressed Size       00000000 (0)\n+183159 Uncompressed Size     00000000 (0)\n+18315D Filename Length       002D (45)\n+18315F Extra Length          0000 (0)\n+183161 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1741E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x183161: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-174220 PAYLOAD\n+18318E PAYLOAD\n \n-17448B DATA DESCRIPTOR       08074B50 (134695760)\n-17448F CRC                   DA82F0B1 (3666014385)\n-174493 Compressed Size       0000026B (619)\n-174497 Uncompressed Size     000004D7 (1239)\n+183649 DATA DESCRIPTOR       08074B50 (134695760)\n+18364D CRC                   A95B3402 (2841326594)\n+183651 Compressed Size       000004BB (1211)\n+183655 Uncompressed Size     00000D85 (3461)\n \n-17449B LOCAL HEADER #1398    04034B50 (67324752)\n-17449F Extract Zip Spec      14 (20) '2.0'\n-1744A0 Extract OS            00 (0) 'MS-DOS'\n-1744A1 General Purpose Flag  0808 (2056)\n+183659 LOCAL HEADER #1398    04034B50 (67324752)\n+18365D Extract Zip Spec      14 (20) '2.0'\n+18365E Extract OS            00 (0) 'MS-DOS'\n+18365F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1744A3 Compression Method    0008 (8) 'Deflated'\n-1744A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1744A9 CRC                   00000000 (0)\n-1744AD Compressed Size       00000000 (0)\n-1744B1 Uncompressed Size     00000000 (0)\n-1744B5 Filename Length       003A (58)\n-1744B7 Extra Length          0000 (0)\n-1744B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+183661 Compression Method    0008 (8) 'Deflated'\n+183663 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+183667 CRC                   00000000 (0)\n+18366B Compressed Size       00000000 (0)\n+18366F Uncompressed Size     00000000 (0)\n+183673 Filename Length       0036 (54)\n+183675 Extra Length          0000 (0)\n+183677 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1744B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x183677: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1744F3 PAYLOAD\n+1836AD PAYLOAD\n \n-1747F0 DATA DESCRIPTOR       08074B50 (134695760)\n-1747F4 CRC                   34AAC091 (883605649)\n-1747F8 Compressed Size       000002FD (765)\n-1747FC Uncompressed Size     00000742 (1858)\n+183B49 DATA DESCRIPTOR       08074B50 (134695760)\n+183B4D CRC                   E56C2CA8 (3849071784)\n+183B51 Compressed Size       0000049C (1180)\n+183B55 Uncompressed Size     00000B6F (2927)\n \n-174800 LOCAL HEADER #1399    04034B50 (67324752)\n-174804 Extract Zip Spec      14 (20) '2.0'\n-174805 Extract OS            00 (0) 'MS-DOS'\n-174806 General Purpose Flag  0808 (2056)\n+183B59 LOCAL HEADER #1399    04034B50 (67324752)\n+183B5D Extract Zip Spec      14 (20) '2.0'\n+183B5E Extract OS            00 (0) 'MS-DOS'\n+183B5F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-174808 Compression Method    0008 (8) 'Deflated'\n-17480A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17480E CRC                   00000000 (0)\n-174812 Compressed Size       00000000 (0)\n-174816 Uncompressed Size     00000000 (0)\n-17481A Filename Length       0041 (65)\n-17481C Extra Length          0000 (0)\n-17481E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+183B61 Compression Method    0008 (8) 'Deflated'\n+183B63 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+183B67 CRC                   00000000 (0)\n+183B6B Compressed Size       00000000 (0)\n+183B6F Uncompressed Size     00000000 (0)\n+183B73 Filename Length       002B (43)\n+183B75 Extra Length          0000 (0)\n+183B77 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17481E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x183B77: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17485F PAYLOAD\n+183BA2 PAYLOAD\n \n-174AC2 DATA DESCRIPTOR       08074B50 (134695760)\n-174AC6 CRC                   70BBABEF (1891347439)\n-174ACA Compressed Size       00000263 (611)\n-174ACE Uncompressed Size     000004CE (1230)\n+183E2F DATA DESCRIPTOR       08074B50 (134695760)\n+183E33 CRC                   AADA64B2 (2866439346)\n+183E37 Compressed Size       0000028D (653)\n+183E3B Uncompressed Size     00000519 (1305)\n \n-174AD2 LOCAL HEADER #1400    04034B50 (67324752)\n-174AD6 Extract Zip Spec      14 (20) '2.0'\n-174AD7 Extract OS            00 (0) 'MS-DOS'\n-174AD8 General Purpose Flag  0808 (2056)\n+183E3F LOCAL HEADER #1400    04034B50 (67324752)\n+183E43 Extract Zip Spec      14 (20) '2.0'\n+183E44 Extract OS            00 (0) 'MS-DOS'\n+183E45 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-174ADA Compression Method    0008 (8) 'Deflated'\n-174ADC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-174AE0 CRC                   00000000 (0)\n-174AE4 Compressed Size       00000000 (0)\n-174AE8 Uncompressed Size     00000000 (0)\n-174AEC Filename Length       0021 (33)\n-174AEE Extra Length          0000 (0)\n-174AF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+183E47 Compression Method    0008 (8) 'Deflated'\n+183E49 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+183E4D CRC                   00000000 (0)\n+183E51 Compressed Size       00000000 (0)\n+183E55 Uncompressed Size     00000000 (0)\n+183E59 Filename Length       002C (44)\n+183E5B Extra Length          0000 (0)\n+183E5D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x174AF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x183E5D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-174B11 PAYLOAD               XX\n+183E89 PAYLOAD\n \n-174B13 DATA DESCRIPTOR       08074B50 (134695760)\n-174B17 CRC                   00000000 (0)\n-174B1B Compressed Size       00000002 (2)\n-174B1F Uncompressed Size     00000000 (0)\n+18447A DATA DESCRIPTOR       08074B50 (134695760)\n+18447E CRC                   DC712B5A (3698404186)\n+184482 Compressed Size       000005F1 (1521)\n+184486 Uncompressed Size     000010E3 (4323)\n \n-174B23 LOCAL HEADER #1401    04034B50 (67324752)\n-174B27 Extract Zip Spec      14 (20) '2.0'\n-174B28 Extract OS            00 (0) 'MS-DOS'\n-174B29 General Purpose Flag  0808 (2056)\n+18448A LOCAL HEADER #1401    04034B50 (67324752)\n+18448E Extract Zip Spec      14 (20) '2.0'\n+18448F Extract OS            00 (0) 'MS-DOS'\n+184490 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-174B2B Compression Method    0008 (8) 'Deflated'\n-174B2D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-174B31 CRC                   00000000 (0)\n-174B35 Compressed Size       00000000 (0)\n-174B39 Uncompressed Size     00000000 (0)\n-174B3D Filename Length       003C (60)\n-174B3F Extra Length          0000 (0)\n-174B41 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+184492 Compression Method    0008 (8) 'Deflated'\n+184494 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+184498 CRC                   00000000 (0)\n+18449C Compressed Size       00000000 (0)\n+1844A0 Uncompressed Size     00000000 (0)\n+1844A4 Filename Length       002E (46)\n+1844A6 Extra Length          0000 (0)\n+1844A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x174B41: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1844A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-174B7D PAYLOAD\n+1844D6 PAYLOAD\n \n-174E92 DATA DESCRIPTOR       08074B50 (134695760)\n-174E96 CRC                   DD92E439 (3717391417)\n-174E9A Compressed Size       00000315 (789)\n-174E9E Uncompressed Size     00000641 (1601)\n+1847A1 DATA DESCRIPTOR       08074B50 (134695760)\n+1847A5 CRC                   1F2281E7 (522355175)\n+1847A9 Compressed Size       000002CB (715)\n+1847AD Uncompressed Size     00000625 (1573)\n \n-174EA2 LOCAL HEADER #1402    04034B50 (67324752)\n-174EA6 Extract Zip Spec      14 (20) '2.0'\n-174EA7 Extract OS            00 (0) 'MS-DOS'\n-174EA8 General Purpose Flag  0808 (2056)\n+1847B1 LOCAL HEADER #1402    04034B50 (67324752)\n+1847B5 Extract Zip Spec      14 (20) '2.0'\n+1847B6 Extract OS            00 (0) 'MS-DOS'\n+1847B7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-174EAA Compression Method    0008 (8) 'Deflated'\n-174EAC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-174EB0 CRC                   00000000 (0)\n-174EB4 Compressed Size       00000000 (0)\n-174EB8 Uncompressed Size     00000000 (0)\n-174EBC Filename Length       0035 (53)\n-174EBE Extra Length          0000 (0)\n-174EC0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1847B9 Compression Method    0008 (8) 'Deflated'\n+1847BB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1847BF CRC                   00000000 (0)\n+1847C3 Compressed Size       00000000 (0)\n+1847C7 Uncompressed Size     00000000 (0)\n+1847CB Filename Length       0022 (34)\n+1847CD Extra Length          0000 (0)\n+1847CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x174EC0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1847CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-174EF5 PAYLOAD\n+1847F1 PAYLOAD               XX\n \n-1752DA DATA DESCRIPTOR       08074B50 (134695760)\n-1752DE CRC                   1FAE29F0 (531507696)\n-1752E2 Compressed Size       000003E5 (997)\n-1752E6 Uncompressed Size     000009D3 (2515)\n+1847F3 DATA DESCRIPTOR       08074B50 (134695760)\n+1847F7 CRC                   00000000 (0)\n+1847FB Compressed Size       00000002 (2)\n+1847FF Uncompressed Size     00000000 (0)\n \n-1752EA LOCAL HEADER #1403    04034B50 (67324752)\n-1752EE Extract Zip Spec      14 (20) '2.0'\n-1752EF Extract OS            00 (0) 'MS-DOS'\n-1752F0 General Purpose Flag  0808 (2056)\n+184803 LOCAL HEADER #1403    04034B50 (67324752)\n+184807 Extract Zip Spec      14 (20) '2.0'\n+184808 Extract OS            00 (0) 'MS-DOS'\n+184809 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1752F2 Compression Method    0008 (8) 'Deflated'\n-1752F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1752F8 CRC                   00000000 (0)\n-1752FC Compressed Size       00000000 (0)\n-175300 Uncompressed Size     00000000 (0)\n-175304 Filename Length       0034 (52)\n-175306 Extra Length          0000 (0)\n-175308 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18480B Compression Method    0008 (8) 'Deflated'\n+18480D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+184811 CRC                   00000000 (0)\n+184815 Compressed Size       00000000 (0)\n+184819 Uncompressed Size     00000000 (0)\n+18481D Filename Length       0034 (52)\n+18481F Extra Length          0000 (0)\n+184821 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x175308: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x184821: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17533C PAYLOAD\n+184855 PAYLOAD\n \n-176060 DATA DESCRIPTOR       08074B50 (134695760)\n-176064 CRC                   CF695E4A (3479789130)\n-176068 Compressed Size       00000D24 (3364)\n-17606C Uncompressed Size     00003883 (14467)\n+184BA5 DATA DESCRIPTOR       08074B50 (134695760)\n+184BA9 CRC                   0E9B786A (245069930)\n+184BAD Compressed Size       00000350 (848)\n+184BB1 Uncompressed Size     000008D3 (2259)\n \n-176070 LOCAL HEADER #1404    04034B50 (67324752)\n-176074 Extract Zip Spec      14 (20) '2.0'\n-176075 Extract OS            00 (0) 'MS-DOS'\n-176076 General Purpose Flag  0808 (2056)\n+184BB5 LOCAL HEADER #1404    04034B50 (67324752)\n+184BB9 Extract Zip Spec      14 (20) '2.0'\n+184BBA Extract OS            00 (0) 'MS-DOS'\n+184BBB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-176078 Compression Method    0008 (8) 'Deflated'\n-17607A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17607E CRC                   00000000 (0)\n-176082 Compressed Size       00000000 (0)\n-176086 Uncompressed Size     00000000 (0)\n-17608A Filename Length       003B (59)\n-17608C Extra Length          0000 (0)\n-17608E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+184BBD Compression Method    0008 (8) 'Deflated'\n+184BBF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+184BC3 CRC                   00000000 (0)\n+184BC7 Compressed Size       00000000 (0)\n+184BCB Uncompressed Size     00000000 (0)\n+184BCF Filename Length       0038 (56)\n+184BD1 Extra Length          0000 (0)\n+184BD3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17608E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x184BD3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1760C9 PAYLOAD\n+184C0B PAYLOAD\n \n-17633C DATA DESCRIPTOR       08074B50 (134695760)\n-176340 CRC                   EE6324FC (3999474940)\n-176344 Compressed Size       00000273 (627)\n-176348 Uncompressed Size     000004D1 (1233)\n+184FF3 DATA DESCRIPTOR       08074B50 (134695760)\n+184FF7 CRC                   966E868C (2523825804)\n+184FFB Compressed Size       000003E8 (1000)\n+184FFF Uncompressed Size     00000ADB (2779)\n \n-17634C LOCAL HEADER #1405    04034B50 (67324752)\n-176350 Extract Zip Spec      14 (20) '2.0'\n-176351 Extract OS            00 (0) 'MS-DOS'\n-176352 General Purpose Flag  0808 (2056)\n+185003 LOCAL HEADER #1405    04034B50 (67324752)\n+185007 Extract Zip Spec      14 (20) '2.0'\n+185008 Extract OS            00 (0) 'MS-DOS'\n+185009 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-176354 Compression Method    0008 (8) 'Deflated'\n-176356 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17635A CRC                   00000000 (0)\n-17635E Compressed Size       00000000 (0)\n-176362 Uncompressed Size     00000000 (0)\n-176366 Filename Length       003C (60)\n-176368 Extra Length          0000 (0)\n-17636A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18500B Compression Method    0008 (8) 'Deflated'\n+18500D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+185011 CRC                   00000000 (0)\n+185015 Compressed Size       00000000 (0)\n+185019 Uncompressed Size     00000000 (0)\n+18501D Filename Length       001C (28)\n+18501F Extra Length          0000 (0)\n+185021 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17636A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x185021: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1763A6 PAYLOAD\n+18503D PAYLOAD               XX\n \n-177401 DATA DESCRIPTOR       08074B50 (134695760)\n-177405 CRC                   8A186986 (2316855686)\n-177409 Compressed Size       0000105B (4187)\n-17740D Uncompressed Size     0000477D (18301)\n+18503F DATA DESCRIPTOR       08074B50 (134695760)\n+185043 CRC                   00000000 (0)\n+185047 Compressed Size       00000002 (2)\n+18504B Uncompressed Size     00000000 (0)\n \n-177411 LOCAL HEADER #1406    04034B50 (67324752)\n-177415 Extract Zip Spec      14 (20) '2.0'\n-177416 Extract OS            00 (0) 'MS-DOS'\n-177417 General Purpose Flag  0808 (2056)\n+18504F LOCAL HEADER #1406    04034B50 (67324752)\n+185053 Extract Zip Spec      14 (20) '2.0'\n+185054 Extract OS            00 (0) 'MS-DOS'\n+185055 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-177419 Compression Method    0008 (8) 'Deflated'\n-17741B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17741F CRC                   00000000 (0)\n-177423 Compressed Size       00000000 (0)\n-177427 Uncompressed Size     00000000 (0)\n-17742B Filename Length       0043 (67)\n-17742D Extra Length          0000 (0)\n-17742F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+185057 Compression Method    0008 (8) 'Deflated'\n+185059 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18505D CRC                   00000000 (0)\n+185061 Compressed Size       00000000 (0)\n+185065 Uncompressed Size     00000000 (0)\n+185069 Filename Length       002D (45)\n+18506B Extra Length          0000 (0)\n+18506D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17742F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18506D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-177472 PAYLOAD\n+18509A PAYLOAD\n \n-1776D5 DATA DESCRIPTOR       08074B50 (134695760)\n-1776D9 CRC                   35541C2F (894704687)\n-1776DD Compressed Size       00000263 (611)\n-1776E1 Uncompressed Size     000004D1 (1233)\n+1852D5 DATA DESCRIPTOR       08074B50 (134695760)\n+1852D9 CRC                   93C23403 (2478978051)\n+1852DD Compressed Size       0000023B (571)\n+1852E1 Uncompressed Size     000003DE (990)\n \n-1776E5 LOCAL HEADER #1407    04034B50 (67324752)\n-1776E9 Extract Zip Spec      14 (20) '2.0'\n-1776EA Extract OS            00 (0) 'MS-DOS'\n-1776EB General Purpose Flag  0808 (2056)\n+1852E5 LOCAL HEADER #1407    04034B50 (67324752)\n+1852E9 Extract Zip Spec      14 (20) '2.0'\n+1852EA Extract OS            00 (0) 'MS-DOS'\n+1852EB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1776ED Compression Method    0008 (8) 'Deflated'\n-1776EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1776F3 CRC                   00000000 (0)\n-1776F7 Compressed Size       00000000 (0)\n-1776FB Uncompressed Size     00000000 (0)\n-1776FF Filename Length       0048 (72)\n-177701 Extra Length          0000 (0)\n-177703 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1852ED Compression Method    0008 (8) 'Deflated'\n+1852EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1852F3 CRC                   00000000 (0)\n+1852F7 Compressed Size       00000000 (0)\n+1852FB Uncompressed Size     00000000 (0)\n+1852FF Filename Length       001C (28)\n+185301 Extra Length          0000 (0)\n+185303 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x177703: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x185303: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17774B PAYLOAD\n+18531F PAYLOAD               XX\n \n-1779AE DATA DESCRIPTOR       08074B50 (134695760)\n-1779B2 CRC                   35541C2F (894704687)\n-1779B6 Compressed Size       00000263 (611)\n-1779BA Uncompressed Size     000004D1 (1233)\n+185321 DATA DESCRIPTOR       08074B50 (134695760)\n+185325 CRC                   00000000 (0)\n+185329 Compressed Size       00000002 (2)\n+18532D Uncompressed Size     00000000 (0)\n \n-1779BE LOCAL HEADER #1408    04034B50 (67324752)\n-1779C2 Extract Zip Spec      14 (20) '2.0'\n-1779C3 Extract OS            00 (0) 'MS-DOS'\n-1779C4 General Purpose Flag  0808 (2056)\n+185331 LOCAL HEADER #1408    04034B50 (67324752)\n+185335 Extract Zip Spec      14 (20) '2.0'\n+185336 Extract OS            00 (0) 'MS-DOS'\n+185337 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1779C6 Compression Method    0008 (8) 'Deflated'\n-1779C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1779CC CRC                   00000000 (0)\n-1779D0 Compressed Size       00000000 (0)\n-1779D4 Uncompressed Size     00000000 (0)\n-1779D8 Filename Length       0050 (80)\n-1779DA Extra Length          0000 (0)\n-1779DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+185339 Compression Method    0008 (8) 'Deflated'\n+18533B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18533F CRC                   00000000 (0)\n+185343 Compressed Size       00000000 (0)\n+185347 Uncompressed Size     00000000 (0)\n+18534B Filename Length       0034 (52)\n+18534D Extra Length          0000 (0)\n+18534F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1779DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18534F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-177A2C PAYLOAD\n+185383 PAYLOAD\n \n-177C8F DATA DESCRIPTOR       08074B50 (134695760)\n-177C93 CRC                   35541C2F (894704687)\n-177C97 Compressed Size       00000263 (611)\n-177C9B Uncompressed Size     000004D1 (1233)\n+1857F8 DATA DESCRIPTOR       08074B50 (134695760)\n+1857FC CRC                   4EEFA113 (1324327187)\n+185800 Compressed Size       00000475 (1141)\n+185804 Uncompressed Size     00000B51 (2897)\n \n-177C9F LOCAL HEADER #1409    04034B50 (67324752)\n-177CA3 Extract Zip Spec      14 (20) '2.0'\n-177CA4 Extract OS            00 (0) 'MS-DOS'\n-177CA5 General Purpose Flag  0808 (2056)\n+185808 LOCAL HEADER #1409    04034B50 (67324752)\n+18580C Extract Zip Spec      14 (20) '2.0'\n+18580D Extract OS            00 (0) 'MS-DOS'\n+18580E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-177CA7 Compression Method    0008 (8) 'Deflated'\n-177CA9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-177CAD CRC                   00000000 (0)\n-177CB1 Compressed Size       00000000 (0)\n-177CB5 Uncompressed Size     00000000 (0)\n-177CB9 Filename Length       001F (31)\n-177CBB Extra Length          0000 (0)\n-177CBD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+185810 Compression Method    0008 (8) 'Deflated'\n+185812 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+185816 CRC                   00000000 (0)\n+18581A Compressed Size       00000000 (0)\n+18581E Uncompressed Size     00000000 (0)\n+185822 Filename Length       0033 (51)\n+185824 Extra Length          0000 (0)\n+185826 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x177CBD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x185826: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-177CDC PAYLOAD               XX\n+185859 PAYLOAD\n \n-177CDE DATA DESCRIPTOR       08074B50 (134695760)\n-177CE2 CRC                   00000000 (0)\n-177CE6 Compressed Size       00000002 (2)\n-177CEA Uncompressed Size     00000000 (0)\n+18602F DATA DESCRIPTOR       08074B50 (134695760)\n+186033 CRC                   9CF5D1EF (2633355759)\n+186037 Compressed Size       000007D6 (2006)\n+18603B Uncompressed Size     00001B08 (6920)\n \n-177CEE LOCAL HEADER #1410    04034B50 (67324752)\n-177CF2 Extract Zip Spec      14 (20) '2.0'\n-177CF3 Extract OS            00 (0) 'MS-DOS'\n-177CF4 General Purpose Flag  0808 (2056)\n+18603F LOCAL HEADER #1410    04034B50 (67324752)\n+186043 Extract Zip Spec      14 (20) '2.0'\n+186044 Extract OS            00 (0) 'MS-DOS'\n+186045 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-177CF6 Compression Method    0008 (8) 'Deflated'\n-177CF8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-177CFC CRC                   00000000 (0)\n-177D00 Compressed Size       00000000 (0)\n-177D04 Uncompressed Size     00000000 (0)\n-177D08 Filename Length       0030 (48)\n-177D0A Extra Length          0000 (0)\n-177D0C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+186047 Compression Method    0008 (8) 'Deflated'\n+186049 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18604D CRC                   00000000 (0)\n+186051 Compressed Size       00000000 (0)\n+186055 Uncompressed Size     00000000 (0)\n+186059 Filename Length       0035 (53)\n+18605B Extra Length          0000 (0)\n+18605D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x177D0C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18605D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-177D3C PAYLOAD\n+186092 PAYLOAD\n \n-178ABA DATA DESCRIPTOR       08074B50 (134695760)\n-178ABE CRC                   E5134667 (3843245671)\n-178AC2 Compressed Size       00000D7E (3454)\n-178AC6 Uncompressed Size     00003DF8 (15864)\n+1863DE DATA DESCRIPTOR       08074B50 (134695760)\n+1863E2 CRC                   60B50DD7 (1622478295)\n+1863E6 Compressed Size       0000034C (844)\n+1863EA Uncompressed Size     0000071D (1821)\n \n-178ACA LOCAL HEADER #1411    04034B50 (67324752)\n-178ACE Extract Zip Spec      14 (20) '2.0'\n-178ACF Extract OS            00 (0) 'MS-DOS'\n-178AD0 General Purpose Flag  0808 (2056)\n+1863EE LOCAL HEADER #1411    04034B50 (67324752)\n+1863F2 Extract Zip Spec      14 (20) '2.0'\n+1863F3 Extract OS            00 (0) 'MS-DOS'\n+1863F4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-178AD2 Compression Method    0008 (8) 'Deflated'\n-178AD4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-178AD8 CRC                   00000000 (0)\n-178ADC Compressed Size       00000000 (0)\n-178AE0 Uncompressed Size     00000000 (0)\n-178AE4 Filename Length       0037 (55)\n-178AE6 Extra Length          0000 (0)\n-178AE8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1863F6 Compression Method    0008 (8) 'Deflated'\n+1863F8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1863FC CRC                   00000000 (0)\n+186400 Compressed Size       00000000 (0)\n+186404 Uncompressed Size     00000000 (0)\n+186408 Filename Length       0034 (52)\n+18640A Extra Length          0000 (0)\n+18640C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x178AE8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18640C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-178B1F PAYLOAD\n+186440 PAYLOAD\n \n-178DB0 DATA DESCRIPTOR       08074B50 (134695760)\n-178DB4 CRC                   EAAFA7AC (3937380268)\n-178DB8 Compressed Size       00000291 (657)\n-178DBC Uncompressed Size     00000581 (1409)\n+186FC8 DATA DESCRIPTOR       08074B50 (134695760)\n+186FCC CRC                   78614F57 (2019643223)\n+186FD0 Compressed Size       00000B88 (2952)\n+186FD4 Uncompressed Size     00002BDA (11226)\n \n-178DC0 LOCAL HEADER #1412    04034B50 (67324752)\n-178DC4 Extract Zip Spec      14 (20) '2.0'\n-178DC5 Extract OS            00 (0) 'MS-DOS'\n-178DC6 General Purpose Flag  0808 (2056)\n+186FD8 LOCAL HEADER #1412    04034B50 (67324752)\n+186FDC Extract Zip Spec      14 (20) '2.0'\n+186FDD Extract OS            00 (0) 'MS-DOS'\n+186FDE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-178DC8 Compression Method    0008 (8) 'Deflated'\n-178DCA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-178DCE CRC                   00000000 (0)\n-178DD2 Compressed Size       00000000 (0)\n-178DD6 Uncompressed Size     00000000 (0)\n-178DDA Filename Length       0038 (56)\n-178DDC Extra Length          0000 (0)\n-178DDE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+186FE0 Compression Method    0008 (8) 'Deflated'\n+186FE2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+186FE6 CRC                   00000000 (0)\n+186FEA Compressed Size       00000000 (0)\n+186FEE Uncompressed Size     00000000 (0)\n+186FF2 Filename Length       0032 (50)\n+186FF4 Extra Length          0000 (0)\n+186FF6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x178DDE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x186FF6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-178E16 PAYLOAD\n+187028 PAYLOAD\n \n-1796D5 DATA DESCRIPTOR       08074B50 (134695760)\n-1796D9 CRC                   D94FAF9D (3645878173)\n-1796DD Compressed Size       000008BF (2239)\n-1796E1 Uncompressed Size     00001FF4 (8180)\n+1876DF DATA DESCRIPTOR       08074B50 (134695760)\n+1876E3 CRC                   17A6F6D0 (396818128)\n+1876E7 Compressed Size       000006B7 (1719)\n+1876EB Uncompressed Size     00001AC2 (6850)\n \n-1796E5 LOCAL HEADER #1413    04034B50 (67324752)\n-1796E9 Extract Zip Spec      14 (20) '2.0'\n-1796EA Extract OS            00 (0) 'MS-DOS'\n-1796EB General Purpose Flag  0808 (2056)\n+1876EF LOCAL HEADER #1413    04034B50 (67324752)\n+1876F3 Extract Zip Spec      14 (20) '2.0'\n+1876F4 Extract OS            00 (0) 'MS-DOS'\n+1876F5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1796ED Compression Method    0008 (8) 'Deflated'\n-1796EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1796F3 CRC                   00000000 (0)\n-1796F7 Compressed Size       00000000 (0)\n-1796FB Uncompressed Size     00000000 (0)\n-1796FF Filename Length       0021 (33)\n-179701 Extra Length          0000 (0)\n-179703 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1876F7 Compression Method    0008 (8) 'Deflated'\n+1876F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1876FD CRC                   00000000 (0)\n+187701 Compressed Size       00000000 (0)\n+187705 Uncompressed Size     00000000 (0)\n+187709 Filename Length       0031 (49)\n+18770B Extra Length          0000 (0)\n+18770D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x179703: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18770D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-179724 PAYLOAD               XX\n+18773E PAYLOAD\n \n-179726 DATA DESCRIPTOR       08074B50 (134695760)\n-17972A CRC                   00000000 (0)\n-17972E Compressed Size       00000002 (2)\n-179732 Uncompressed Size     00000000 (0)\n+187D0A DATA DESCRIPTOR       08074B50 (134695760)\n+187D0E CRC                   65289261 (1697157729)\n+187D12 Compressed Size       000005CC (1484)\n+187D16 Uncompressed Size     00000FD7 (4055)\n \n-179736 LOCAL HEADER #1414    04034B50 (67324752)\n-17973A Extract Zip Spec      14 (20) '2.0'\n-17973B Extract OS            00 (0) 'MS-DOS'\n-17973C General Purpose Flag  0808 (2056)\n+187D1A LOCAL HEADER #1414    04034B50 (67324752)\n+187D1E Extract Zip Spec      14 (20) '2.0'\n+187D1F Extract OS            00 (0) 'MS-DOS'\n+187D20 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17973E Compression Method    0008 (8) 'Deflated'\n-179740 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-179744 CRC                   00000000 (0)\n-179748 Compressed Size       00000000 (0)\n-17974C Uncompressed Size     00000000 (0)\n-179750 Filename Length       0046 (70)\n-179752 Extra Length          0000 (0)\n-179754 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+187D22 Compression Method    0008 (8) 'Deflated'\n+187D24 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+187D28 CRC                   00000000 (0)\n+187D2C Compressed Size       00000000 (0)\n+187D30 Uncompressed Size     00000000 (0)\n+187D34 Filename Length       0032 (50)\n+187D36 Extra Length          0000 (0)\n+187D38 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x179754: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x187D38: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17979A PAYLOAD\n+187D6A PAYLOAD\n \n-179E73 DATA DESCRIPTOR       08074B50 (134695760)\n-179E77 CRC                   CF5D6816 (3479005206)\n-179E7B Compressed Size       000006D9 (1753)\n-179E7F Uncompressed Size     000026A9 (9897)\n+18825C DATA DESCRIPTOR       08074B50 (134695760)\n+188260 CRC                   59C732CA (1506226890)\n+188264 Compressed Size       000004F2 (1266)\n+188268 Uncompressed Size     00000F65 (3941)\n \n-179E83 LOCAL HEADER #1415    04034B50 (67324752)\n-179E87 Extract Zip Spec      14 (20) '2.0'\n-179E88 Extract OS            00 (0) 'MS-DOS'\n-179E89 General Purpose Flag  0808 (2056)\n+18826C LOCAL HEADER #1415    04034B50 (67324752)\n+188270 Extract Zip Spec      14 (20) '2.0'\n+188271 Extract OS            00 (0) 'MS-DOS'\n+188272 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-179E8B Compression Method    0008 (8) 'Deflated'\n-179E8D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-179E91 CRC                   00000000 (0)\n-179E95 Compressed Size       00000000 (0)\n-179E99 Uncompressed Size     00000000 (0)\n-179E9D Filename Length       003C (60)\n-179E9F Extra Length          0000 (0)\n-179EA1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+188274 Compression Method    0008 (8) 'Deflated'\n+188276 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18827A CRC                   00000000 (0)\n+18827E Compressed Size       00000000 (0)\n+188282 Uncompressed Size     00000000 (0)\n+188286 Filename Length       0034 (52)\n+188288 Extra Length          0000 (0)\n+18828A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x179EA1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18828A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-179EDD PAYLOAD\n+1882BE PAYLOAD\n \n-17A9B5 DATA DESCRIPTOR       08074B50 (134695760)\n-17A9B9 CRC                   4F723C34 (1332886580)\n-17A9BD Compressed Size       00000AD8 (2776)\n-17A9C1 Uncompressed Size     00002B78 (11128)\n+188714 DATA DESCRIPTOR       08074B50 (134695760)\n+188718 CRC                   62C17732 (1656846130)\n+18871C Compressed Size       00000456 (1110)\n+188720 Uncompressed Size     00000B13 (2835)\n \n-17A9C5 LOCAL HEADER #1416    04034B50 (67324752)\n-17A9C9 Extract Zip Spec      14 (20) '2.0'\n-17A9CA Extract OS            00 (0) 'MS-DOS'\n-17A9CB General Purpose Flag  0808 (2056)\n+188724 LOCAL HEADER #1416    04034B50 (67324752)\n+188728 Extract Zip Spec      14 (20) '2.0'\n+188729 Extract OS            00 (0) 'MS-DOS'\n+18872A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17A9CD Compression Method    0008 (8) 'Deflated'\n-17A9CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17A9D3 CRC                   00000000 (0)\n-17A9D7 Compressed Size       00000000 (0)\n-17A9DB Uncompressed Size     00000000 (0)\n-17A9DF Filename Length       0032 (50)\n-17A9E1 Extra Length          0000 (0)\n-17A9E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18872C Compression Method    0008 (8) 'Deflated'\n+18872E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+188732 CRC                   00000000 (0)\n+188736 Compressed Size       00000000 (0)\n+18873A Uncompressed Size     00000000 (0)\n+18873E Filename Length       0036 (54)\n+188740 Extra Length          0000 (0)\n+188742 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17A9E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x188742: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17AA15 PAYLOAD\n+188778 PAYLOAD\n \n-17AC21 DATA DESCRIPTOR       08074B50 (134695760)\n-17AC25 CRC                   71DE9B6F (1910414191)\n-17AC29 Compressed Size       0000020C (524)\n-17AC2D Uncompressed Size     000003AF (943)\n+188BDD DATA DESCRIPTOR       08074B50 (134695760)\n+188BE1 CRC                   BD59212E (3176735022)\n+188BE5 Compressed Size       00000465 (1125)\n+188BE9 Uncompressed Size     00000AC7 (2759)\n \n-17AC31 LOCAL HEADER #1417    04034B50 (67324752)\n-17AC35 Extract Zip Spec      14 (20) '2.0'\n-17AC36 Extract OS            00 (0) 'MS-DOS'\n-17AC37 General Purpose Flag  0808 (2056)\n+188BED LOCAL HEADER #1417    04034B50 (67324752)\n+188BF1 Extract Zip Spec      14 (20) '2.0'\n+188BF2 Extract OS            00 (0) 'MS-DOS'\n+188BF3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17AC39 Compression Method    0008 (8) 'Deflated'\n-17AC3B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17AC3F CRC                   00000000 (0)\n-17AC43 Compressed Size       00000000 (0)\n-17AC47 Uncompressed Size     00000000 (0)\n-17AC4B Filename Length       0020 (32)\n-17AC4D Extra Length          0000 (0)\n-17AC4F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+188BF5 Compression Method    0008 (8) 'Deflated'\n+188BF7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+188BFB CRC                   00000000 (0)\n+188BFF Compressed Size       00000000 (0)\n+188C03 Uncompressed Size     00000000 (0)\n+188C07 Filename Length       0033 (51)\n+188C09 Extra Length          0000 (0)\n+188C0B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17AC4F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x188C0B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17AC6F PAYLOAD               XX\n+188C3E PAYLOAD\n \n-17AC71 DATA DESCRIPTOR       08074B50 (134695760)\n-17AC75 CRC                   00000000 (0)\n-17AC79 Compressed Size       00000002 (2)\n-17AC7D Uncompressed Size     00000000 (0)\n+1891BB DATA DESCRIPTOR       08074B50 (134695760)\n+1891BF CRC                   6E324421 (1848788001)\n+1891C3 Compressed Size       0000057D (1405)\n+1891C7 Uncompressed Size     00001018 (4120)\n \n-17AC81 LOCAL HEADER #1418    04034B50 (67324752)\n-17AC85 Extract Zip Spec      14 (20) '2.0'\n-17AC86 Extract OS            00 (0) 'MS-DOS'\n-17AC87 General Purpose Flag  0808 (2056)\n+1891CB LOCAL HEADER #1418    04034B50 (67324752)\n+1891CF Extract Zip Spec      14 (20) '2.0'\n+1891D0 Extract OS            00 (0) 'MS-DOS'\n+1891D1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17AC89 Compression Method    0008 (8) 'Deflated'\n-17AC8B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17AC8F CRC                   00000000 (0)\n-17AC93 Compressed Size       00000000 (0)\n-17AC97 Uncompressed Size     00000000 (0)\n-17AC9B Filename Length       003E (62)\n-17AC9D Extra Length          0000 (0)\n-17AC9F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1891D3 Compression Method    0008 (8) 'Deflated'\n+1891D5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1891D9 CRC                   00000000 (0)\n+1891DD Compressed Size       00000000 (0)\n+1891E1 Uncompressed Size     00000000 (0)\n+1891E5 Filename Length       001E (30)\n+1891E7 Extra Length          0000 (0)\n+1891E9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17AC9F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1891E9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17ACDD PAYLOAD\n+189207 PAYLOAD               XX\n \n-17B145 DATA DESCRIPTOR       08074B50 (134695760)\n-17B149 CRC                   BB0161DF (3137429983)\n-17B14D Compressed Size       00000468 (1128)\n-17B151 Uncompressed Size     00000DF9 (3577)\n+189209 DATA DESCRIPTOR       08074B50 (134695760)\n+18920D CRC                   00000000 (0)\n+189211 Compressed Size       00000002 (2)\n+189215 Uncompressed Size     00000000 (0)\n \n-17B155 LOCAL HEADER #1419    04034B50 (67324752)\n-17B159 Extract Zip Spec      14 (20) '2.0'\n-17B15A Extract OS            00 (0) 'MS-DOS'\n-17B15B General Purpose Flag  0808 (2056)\n+189219 LOCAL HEADER #1419    04034B50 (67324752)\n+18921D Extract Zip Spec      14 (20) '2.0'\n+18921E Extract OS            00 (0) 'MS-DOS'\n+18921F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17B15D Compression Method    0008 (8) 'Deflated'\n-17B15F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17B163 CRC                   00000000 (0)\n-17B167 Compressed Size       00000000 (0)\n-17B16B Uncompressed Size     00000000 (0)\n-17B16F Filename Length       0032 (50)\n-17B171 Extra Length          0000 (0)\n-17B173 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+189221 Compression Method    0008 (8) 'Deflated'\n+189223 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+189227 CRC                   00000000 (0)\n+18922B Compressed Size       00000000 (0)\n+18922F Uncompressed Size     00000000 (0)\n+189233 Filename Length       0035 (53)\n+189235 Extra Length          0000 (0)\n+189237 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17B173: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x189237: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17B1A5 PAYLOAD\n+18926C PAYLOAD\n \n-17C595 DATA DESCRIPTOR       08074B50 (134695760)\n-17C599 CRC                   E2B000EA (3803185386)\n-17C59D Compressed Size       000013F0 (5104)\n-17C5A1 Uncompressed Size     00005C3B (23611)\n+189812 DATA DESCRIPTOR       08074B50 (134695760)\n+189816 CRC                   5829DD8D (1479138701)\n+18981A Compressed Size       000005A6 (1446)\n+18981E Uncompressed Size     0000114E (4430)\n \n-17C5A5 LOCAL HEADER #1420    04034B50 (67324752)\n-17C5A9 Extract Zip Spec      14 (20) '2.0'\n-17C5AA Extract OS            00 (0) 'MS-DOS'\n-17C5AB General Purpose Flag  0808 (2056)\n+189822 LOCAL HEADER #1420    04034B50 (67324752)\n+189826 Extract Zip Spec      14 (20) '2.0'\n+189827 Extract OS            00 (0) 'MS-DOS'\n+189828 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17C5AD Compression Method    0008 (8) 'Deflated'\n-17C5AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17C5B3 CRC                   00000000 (0)\n-17C5B7 Compressed Size       00000000 (0)\n-17C5BB Uncompressed Size     00000000 (0)\n-17C5BF Filename Length       0039 (57)\n-17C5C1 Extra Length          0000 (0)\n-17C5C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18982A Compression Method    0008 (8) 'Deflated'\n+18982C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+189830 CRC                   00000000 (0)\n+189834 Compressed Size       00000000 (0)\n+189838 Uncompressed Size     00000000 (0)\n+18983C Filename Length       001C (28)\n+18983E Extra Length          0000 (0)\n+189840 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17C5C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x189840: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17C5FC PAYLOAD\n+18985C PAYLOAD               XX\n \n-17C946 DATA DESCRIPTOR       08074B50 (134695760)\n-17C94A CRC                   A100EF71 (2701193073)\n-17C94E Compressed Size       0000034A (842)\n-17C952 Uncompressed Size     00000776 (1910)\n+18985E DATA DESCRIPTOR       08074B50 (134695760)\n+189862 CRC                   00000000 (0)\n+189866 Compressed Size       00000002 (2)\n+18986A Uncompressed Size     00000000 (0)\n \n-17C956 LOCAL HEADER #1421    04034B50 (67324752)\n-17C95A Extract Zip Spec      14 (20) '2.0'\n-17C95B Extract OS            00 (0) 'MS-DOS'\n-17C95C General Purpose Flag  0808 (2056)\n+18986E LOCAL HEADER #1421    04034B50 (67324752)\n+189872 Extract Zip Spec      14 (20) '2.0'\n+189873 Extract OS            00 (0) 'MS-DOS'\n+189874 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17C95E Compression Method    0008 (8) 'Deflated'\n-17C960 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17C964 CRC                   00000000 (0)\n-17C968 Compressed Size       00000000 (0)\n-17C96C Uncompressed Size     00000000 (0)\n-17C970 Filename Length       003A (58)\n-17C972 Extra Length          0000 (0)\n-17C974 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+189876 Compression Method    0008 (8) 'Deflated'\n+189878 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18987C CRC                   00000000 (0)\n+189880 Compressed Size       00000000 (0)\n+189884 Uncompressed Size     00000000 (0)\n+189888 Filename Length       002A (42)\n+18988A Extra Length          0000 (0)\n+18988C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17C974: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18988C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17C9AE PAYLOAD\n+1898B6 PAYLOAD\n \n-17CFF6 DATA DESCRIPTOR       08074B50 (134695760)\n-17CFFA CRC                   2220AA2B (572566059)\n-17CFFE Compressed Size       00000648 (1608)\n-17D002 Uncompressed Size     000016C4 (5828)\n+189B20 DATA DESCRIPTOR       08074B50 (134695760)\n+189B24 CRC                   AF68925C (2942866012)\n+189B28 Compressed Size       0000026A (618)\n+189B2C Uncompressed Size     000004FE (1278)\n \n-17D006 LOCAL HEADER #1422    04034B50 (67324752)\n-17D00A Extract Zip Spec      14 (20) '2.0'\n-17D00B Extract OS            00 (0) 'MS-DOS'\n-17D00C General Purpose Flag  0808 (2056)\n+189B30 LOCAL HEADER #1422    04034B50 (67324752)\n+189B34 Extract Zip Spec      14 (20) '2.0'\n+189B35 Extract OS            00 (0) 'MS-DOS'\n+189B36 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17D00E Compression Method    0008 (8) 'Deflated'\n-17D010 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17D014 CRC                   00000000 (0)\n-17D018 Compressed Size       00000000 (0)\n-17D01C Uncompressed Size     00000000 (0)\n-17D020 Filename Length       0041 (65)\n-17D022 Extra Length          0000 (0)\n-17D024 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+189B38 Compression Method    0008 (8) 'Deflated'\n+189B3A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+189B3E CRC                   00000000 (0)\n+189B42 Compressed Size       00000000 (0)\n+189B46 Uncompressed Size     00000000 (0)\n+189B4A Filename Length       0027 (39)\n+189B4C Extra Length          0000 (0)\n+189B4E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17D024: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x189B4E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17D065 PAYLOAD\n+189B75 PAYLOAD\n \n-17D2CE DATA DESCRIPTOR       08074B50 (134695760)\n-17D2D2 CRC                   94B18BA4 (2494663588)\n-17D2D6 Compressed Size       00000269 (617)\n-17D2DA Uncompressed Size     000004D9 (1241)\n+18A179 DATA DESCRIPTOR       08074B50 (134695760)\n+18A17D CRC                   97DFDDD6 (2548030934)\n+18A181 Compressed Size       00000604 (1540)\n+18A185 Uncompressed Size     00001266 (4710)\n \n-17D2DE LOCAL HEADER #1423    04034B50 (67324752)\n-17D2E2 Extract Zip Spec      14 (20) '2.0'\n-17D2E3 Extract OS            00 (0) 'MS-DOS'\n-17D2E4 General Purpose Flag  0808 (2056)\n+18A189 LOCAL HEADER #1423    04034B50 (67324752)\n+18A18D Extract Zip Spec      14 (20) '2.0'\n+18A18E Extract OS            00 (0) 'MS-DOS'\n+18A18F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17D2E6 Compression Method    0008 (8) 'Deflated'\n-17D2E8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17D2EC CRC                   00000000 (0)\n-17D2F0 Compressed Size       00000000 (0)\n-17D2F4 Uncompressed Size     00000000 (0)\n-17D2F8 Filename Length       0035 (53)\n-17D2FA Extra Length          0000 (0)\n-17D2FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18A191 Compression Method    0008 (8) 'Deflated'\n+18A193 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18A197 CRC                   00000000 (0)\n+18A19B Compressed Size       00000000 (0)\n+18A19F Uncompressed Size     00000000 (0)\n+18A1A3 Filename Length       0024 (36)\n+18A1A5 Extra Length          0000 (0)\n+18A1A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17D2FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18A1A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17D331 PAYLOAD\n+18A1CB PAYLOAD               XX\n \n-17DA2B DATA DESCRIPTOR       08074B50 (134695760)\n-17DA2F CRC                   F3388AB4 (4080569012)\n-17DA33 Compressed Size       000006FA (1786)\n-17DA37 Uncompressed Size     00001A7B (6779)\n+18A1CD DATA DESCRIPTOR       08074B50 (134695760)\n+18A1D1 CRC                   00000000 (0)\n+18A1D5 Compressed Size       00000002 (2)\n+18A1D9 Uncompressed Size     00000000 (0)\n \n-17DA3B LOCAL HEADER #1424    04034B50 (67324752)\n-17DA3F Extract Zip Spec      14 (20) '2.0'\n-17DA40 Extract OS            00 (0) 'MS-DOS'\n-17DA41 General Purpose Flag  0808 (2056)\n+18A1DD LOCAL HEADER #1424    04034B50 (67324752)\n+18A1E1 Extract Zip Spec      14 (20) '2.0'\n+18A1E2 Extract OS            00 (0) 'MS-DOS'\n+18A1E3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17DA43 Compression Method    0008 (8) 'Deflated'\n-17DA45 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17DA49 CRC                   00000000 (0)\n-17DA4D Compressed Size       00000000 (0)\n-17DA51 Uncompressed Size     00000000 (0)\n-17DA55 Filename Length       0025 (37)\n-17DA57 Extra Length          0000 (0)\n-17DA59 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18A1E5 Compression Method    0008 (8) 'Deflated'\n+18A1E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18A1EB CRC                   00000000 (0)\n+18A1EF Compressed Size       00000000 (0)\n+18A1F3 Uncompressed Size     00000000 (0)\n+18A1F7 Filename Length       003B (59)\n+18A1F9 Extra Length          0000 (0)\n+18A1FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17DA59: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18A1FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17DA7E PAYLOAD               XX\n+18A236 PAYLOAD\n \n-17DA80 DATA DESCRIPTOR       08074B50 (134695760)\n-17DA84 CRC                   00000000 (0)\n-17DA88 Compressed Size       00000002 (2)\n-17DA8C Uncompressed Size     00000000 (0)\n+18A7F8 DATA DESCRIPTOR       08074B50 (134695760)\n+18A7FC CRC                   5688E99A (1451813274)\n+18A800 Compressed Size       000005C2 (1474)\n+18A804 Uncompressed Size     00001436 (5174)\n \n-17DA90 LOCAL HEADER #1425    04034B50 (67324752)\n-17DA94 Extract Zip Spec      14 (20) '2.0'\n-17DA95 Extract OS            00 (0) 'MS-DOS'\n-17DA96 General Purpose Flag  0808 (2056)\n+18A808 LOCAL HEADER #1425    04034B50 (67324752)\n+18A80C Extract Zip Spec      14 (20) '2.0'\n+18A80D Extract OS            00 (0) 'MS-DOS'\n+18A80E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17DA98 Compression Method    0008 (8) 'Deflated'\n-17DA9A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17DA9E CRC                   00000000 (0)\n-17DAA2 Compressed Size       00000000 (0)\n-17DAA6 Uncompressed Size     00000000 (0)\n-17DAAA Filename Length       0041 (65)\n-17DAAC Extra Length          0000 (0)\n-17DAAE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18A810 Compression Method    0008 (8) 'Deflated'\n+18A812 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18A816 CRC                   00000000 (0)\n+18A81A Compressed Size       00000000 (0)\n+18A81E Uncompressed Size     00000000 (0)\n+18A822 Filename Length       003F (63)\n+18A824 Extra Length          0000 (0)\n+18A826 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17DAAE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18A826: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17DAEF PAYLOAD\n+18A865 PAYLOAD\n \n-17DF0B DATA DESCRIPTOR       08074B50 (134695760)\n-17DF0F CRC                   D4BBF170 (3569086832)\n-17DF13 Compressed Size       0000041C (1052)\n-17DF17 Uncompressed Size     00000AB8 (2744)\n+18ABDB DATA DESCRIPTOR       08074B50 (134695760)\n+18ABDF CRC                   DA916F8A (3666964362)\n+18ABE3 Compressed Size       00000376 (886)\n+18ABE7 Uncompressed Size     000007A1 (1953)\n \n-17DF1B LOCAL HEADER #1426    04034B50 (67324752)\n-17DF1F Extract Zip Spec      14 (20) '2.0'\n-17DF20 Extract OS            00 (0) 'MS-DOS'\n-17DF21 General Purpose Flag  0808 (2056)\n+18ABEB LOCAL HEADER #1426    04034B50 (67324752)\n+18ABEF Extract Zip Spec      14 (20) '2.0'\n+18ABF0 Extract OS            00 (0) 'MS-DOS'\n+18ABF1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17DF23 Compression Method    0008 (8) 'Deflated'\n-17DF25 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17DF29 CRC                   00000000 (0)\n-17DF2D Compressed Size       00000000 (0)\n-17DF31 Uncompressed Size     00000000 (0)\n-17DF35 Filename Length       0041 (65)\n-17DF37 Extra Length          0000 (0)\n-17DF39 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18ABF3 Compression Method    0008 (8) 'Deflated'\n+18ABF5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18ABF9 CRC                   00000000 (0)\n+18ABFD Compressed Size       00000000 (0)\n+18AC01 Uncompressed Size     00000000 (0)\n+18AC05 Filename Length       003A (58)\n+18AC07 Extra Length          0000 (0)\n+18AC09 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17DF39: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18AC09: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17DF7A PAYLOAD\n+18AC43 PAYLOAD\n \n-17E75A DATA DESCRIPTOR       08074B50 (134695760)\n-17E75E CRC                   76AAEB5B (1990912859)\n-17E762 Compressed Size       000007E0 (2016)\n-17E766 Uncompressed Size     00001F41 (8001)\n+18B215 DATA DESCRIPTOR       08074B50 (134695760)\n+18B219 CRC                   5C0FF18B (1544548747)\n+18B21D Compressed Size       000005D2 (1490)\n+18B221 Uncompressed Size     0000107E (4222)\n \n-17E76A LOCAL HEADER #1427    04034B50 (67324752)\n-17E76E Extract Zip Spec      14 (20) '2.0'\n-17E76F Extract OS            00 (0) 'MS-DOS'\n-17E770 General Purpose Flag  0808 (2056)\n+18B225 LOCAL HEADER #1427    04034B50 (67324752)\n+18B229 Extract Zip Spec      14 (20) '2.0'\n+18B22A Extract OS            00 (0) 'MS-DOS'\n+18B22B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17E772 Compression Method    0008 (8) 'Deflated'\n-17E774 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17E778 CRC                   00000000 (0)\n-17E77C Compressed Size       00000000 (0)\n-17E780 Uncompressed Size     00000000 (0)\n-17E784 Filename Length       001F (31)\n-17E786 Extra Length          0000 (0)\n-17E788 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18B22D Compression Method    0008 (8) 'Deflated'\n+18B22F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18B233 CRC                   00000000 (0)\n+18B237 Compressed Size       00000000 (0)\n+18B23B Uncompressed Size     00000000 (0)\n+18B23F Filename Length       003F (63)\n+18B241 Extra Length          0000 (0)\n+18B243 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17E788: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18B243: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17E7A7 PAYLOAD               XX\n+18B282 PAYLOAD\n \n-17E7A9 DATA DESCRIPTOR       08074B50 (134695760)\n-17E7AD CRC                   00000000 (0)\n-17E7B1 Compressed Size       00000002 (2)\n-17E7B5 Uncompressed Size     00000000 (0)\n+18B5CC DATA DESCRIPTOR       08074B50 (134695760)\n+18B5D0 CRC                   F592DA8D (4120042125)\n+18B5D4 Compressed Size       0000034A (842)\n+18B5D8 Uncompressed Size     00000713 (1811)\n \n-17E7B9 LOCAL HEADER #1428    04034B50 (67324752)\n-17E7BD Extract Zip Spec      14 (20) '2.0'\n-17E7BE Extract OS            00 (0) 'MS-DOS'\n-17E7BF General Purpose Flag  0808 (2056)\n+18B5DC LOCAL HEADER #1428    04034B50 (67324752)\n+18B5E0 Extract Zip Spec      14 (20) '2.0'\n+18B5E1 Extract OS            00 (0) 'MS-DOS'\n+18B5E2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17E7C1 Compression Method    0008 (8) 'Deflated'\n-17E7C3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17E7C7 CRC                   00000000 (0)\n-17E7CB Compressed Size       00000000 (0)\n-17E7CF Uncompressed Size     00000000 (0)\n-17E7D3 Filename Length       0030 (48)\n-17E7D5 Extra Length          0000 (0)\n-17E7D7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18B5E4 Compression Method    0008 (8) 'Deflated'\n+18B5E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18B5EA CRC                   00000000 (0)\n+18B5EE Compressed Size       00000000 (0)\n+18B5F2 Uncompressed Size     00000000 (0)\n+18B5F6 Filename Length       003D (61)\n+18B5F8 Extra Length          0000 (0)\n+18B5FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17E7D7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18B5FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17E807 PAYLOAD\n+18B637 PAYLOAD\n \n-17F294 DATA DESCRIPTOR       08074B50 (134695760)\n-17F298 CRC                   67F68BAB (1744210859)\n-17F29C Compressed Size       00000A8D (2701)\n-17F2A0 Uncompressed Size     0000296B (10603)\n+18BAAD DATA DESCRIPTOR       08074B50 (134695760)\n+18BAB1 CRC                   D705EF34 (3607490356)\n+18BAB5 Compressed Size       00000476 (1142)\n+18BAB9 Uncompressed Size     00000CCA (3274)\n \n-17F2A4 LOCAL HEADER #1429    04034B50 (67324752)\n-17F2A8 Extract Zip Spec      14 (20) '2.0'\n-17F2A9 Extract OS            00 (0) 'MS-DOS'\n-17F2AA General Purpose Flag  0808 (2056)\n+18BABD LOCAL HEADER #1429    04034B50 (67324752)\n+18BAC1 Extract Zip Spec      14 (20) '2.0'\n+18BAC2 Extract OS            00 (0) 'MS-DOS'\n+18BAC3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17F2AC Compression Method    0008 (8) 'Deflated'\n-17F2AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17F2B2 CRC                   00000000 (0)\n-17F2B6 Compressed Size       00000000 (0)\n-17F2BA Uncompressed Size     00000000 (0)\n-17F2BE Filename Length       0039 (57)\n-17F2C0 Extra Length          0000 (0)\n-17F2C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18BAC5 Compression Method    0008 (8) 'Deflated'\n+18BAC7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18BACB CRC                   00000000 (0)\n+18BACF Compressed Size       00000000 (0)\n+18BAD3 Uncompressed Size     00000000 (0)\n+18BAD7 Filename Length       001C (28)\n+18BAD9 Extra Length          0000 (0)\n+18BADB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17F2C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18BADB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17F2FB PAYLOAD\n+18BAF7 PAYLOAD               XX\n \n-17F5B0 DATA DESCRIPTOR       08074B50 (134695760)\n-17F5B4 CRC                   5E420043 (1581383747)\n-17F5B8 Compressed Size       000002B5 (693)\n-17F5BC Uncompressed Size     00000563 (1379)\n+18BAF9 DATA DESCRIPTOR       08074B50 (134695760)\n+18BAFD CRC                   00000000 (0)\n+18BB01 Compressed Size       00000002 (2)\n+18BB05 Uncompressed Size     00000000 (0)\n \n-17F5C0 LOCAL HEADER #1430    04034B50 (67324752)\n-17F5C4 Extract Zip Spec      14 (20) '2.0'\n-17F5C5 Extract OS            00 (0) 'MS-DOS'\n-17F5C6 General Purpose Flag  0808 (2056)\n+18BB09 LOCAL HEADER #1430    04034B50 (67324752)\n+18BB0D Extract Zip Spec      14 (20) '2.0'\n+18BB0E Extract OS            00 (0) 'MS-DOS'\n+18BB0F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17F5C8 Compression Method    0008 (8) 'Deflated'\n-17F5CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17F5CE CRC                   00000000 (0)\n-17F5D2 Compressed Size       00000000 (0)\n-17F5D6 Uncompressed Size     00000000 (0)\n-17F5DA Filename Length       0037 (55)\n-17F5DC Extra Length          0000 (0)\n-17F5DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18BB11 Compression Method    0008 (8) 'Deflated'\n+18BB13 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18BB17 CRC                   00000000 (0)\n+18BB1B Compressed Size       00000000 (0)\n+18BB1F Uncompressed Size     00000000 (0)\n+18BB23 Filename Length       002B (43)\n+18BB25 Extra Length          0000 (0)\n+18BB27 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17F5DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18BB27: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17F615 PAYLOAD\n+18BB52 PAYLOAD\n \n-17F8CC DATA DESCRIPTOR       08074B50 (134695760)\n-17F8D0 CRC                   F10F61B1 (4044317105)\n-17F8D4 Compressed Size       000002B7 (695)\n-17F8D8 Uncompressed Size     00000567 (1383)\n+18BD6F DATA DESCRIPTOR       08074B50 (134695760)\n+18BD73 CRC                   2AA01116 (715133206)\n+18BD77 Compressed Size       0000021D (541)\n+18BD7B Uncompressed Size     000003D7 (983)\n \n-17F8DC LOCAL HEADER #1431    04034B50 (67324752)\n-17F8E0 Extract Zip Spec      14 (20) '2.0'\n-17F8E1 Extract OS            00 (0) 'MS-DOS'\n-17F8E2 General Purpose Flag  0808 (2056)\n+18BD7F LOCAL HEADER #1431    04034B50 (67324752)\n+18BD83 Extract Zip Spec      14 (20) '2.0'\n+18BD84 Extract OS            00 (0) 'MS-DOS'\n+18BD85 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17F8E4 Compression Method    0008 (8) 'Deflated'\n-17F8E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17F8EA CRC                   00000000 (0)\n-17F8EE Compressed Size       00000000 (0)\n-17F8F2 Uncompressed Size     00000000 (0)\n-17F8F6 Filename Length       0038 (56)\n-17F8F8 Extra Length          0000 (0)\n-17F8FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18BD87 Compression Method    0008 (8) 'Deflated'\n+18BD89 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18BD8D CRC                   00000000 (0)\n+18BD91 Compressed Size       00000000 (0)\n+18BD95 Uncompressed Size     00000000 (0)\n+18BD99 Filename Length       0024 (36)\n+18BD9B Extra Length          0000 (0)\n+18BD9D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17F8FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18BD9D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17F932 PAYLOAD\n+18BDC1 PAYLOAD\n \n-17FC8E DATA DESCRIPTOR       08074B50 (134695760)\n-17FC92 CRC                   F71501FC (4145349116)\n-17FC96 Compressed Size       0000035C (860)\n-17FC9A Uncompressed Size     00000924 (2340)\n+18C1B3 DATA DESCRIPTOR       08074B50 (134695760)\n+18C1B7 CRC                   70DD7BE1 (1893563361)\n+18C1BB Compressed Size       000003F2 (1010)\n+18C1BF Uncompressed Size     00000AAE (2734)\n \n-17FC9E LOCAL HEADER #1432    04034B50 (67324752)\n-17FCA2 Extract Zip Spec      14 (20) '2.0'\n-17FCA3 Extract OS            00 (0) 'MS-DOS'\n-17FCA4 General Purpose Flag  0808 (2056)\n+18C1C3 LOCAL HEADER #1432    04034B50 (67324752)\n+18C1C7 Extract Zip Spec      14 (20) '2.0'\n+18C1C8 Extract OS            00 (0) 'MS-DOS'\n+18C1C9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-17FCA6 Compression Method    0008 (8) 'Deflated'\n-17FCA8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-17FCAC CRC                   00000000 (0)\n-17FCB0 Compressed Size       00000000 (0)\n-17FCB4 Uncompressed Size     00000000 (0)\n-17FCB8 Filename Length       0040 (64)\n-17FCBA Extra Length          0000 (0)\n-17FCBC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18C1CB Compression Method    0008 (8) 'Deflated'\n+18C1CD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18C1D1 CRC                   00000000 (0)\n+18C1D5 Compressed Size       00000000 (0)\n+18C1D9 Uncompressed Size     00000000 (0)\n+18C1DD Filename Length       0028 (40)\n+18C1DF Extra Length          0000 (0)\n+18C1E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x17FCBC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18C1E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-17FCFC PAYLOAD\n+18C209 PAYLOAD\n \n-18076D DATA DESCRIPTOR       08074B50 (134695760)\n-180771 CRC                   B6DFDCE2 (3068124386)\n-180775 Compressed Size       00000A71 (2673)\n-180779 Uncompressed Size     000026B1 (9905)\n+18C5AF DATA DESCRIPTOR       08074B50 (134695760)\n+18C5B3 CRC                   725BA0A7 (1918607527)\n+18C5B7 Compressed Size       000003A6 (934)\n+18C5BB Uncompressed Size     000008DD (2269)\n \n-18077D LOCAL HEADER #1433    04034B50 (67324752)\n-180781 Extract Zip Spec      14 (20) '2.0'\n-180782 Extract OS            00 (0) 'MS-DOS'\n-180783 General Purpose Flag  0808 (2056)\n+18C5BF LOCAL HEADER #1433    04034B50 (67324752)\n+18C5C3 Extract Zip Spec      14 (20) '2.0'\n+18C5C4 Extract OS            00 (0) 'MS-DOS'\n+18C5C5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-180785 Compression Method    0008 (8) 'Deflated'\n-180787 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18078B CRC                   00000000 (0)\n-18078F Compressed Size       00000000 (0)\n-180793 Uncompressed Size     00000000 (0)\n-180797 Filename Length       0047 (71)\n-180799 Extra Length          0000 (0)\n-18079B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18C5C7 Compression Method    0008 (8) 'Deflated'\n+18C5C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18C5CD CRC                   00000000 (0)\n+18C5D1 Compressed Size       00000000 (0)\n+18C5D5 Uncompressed Size     00000000 (0)\n+18C5D9 Filename Length       0027 (39)\n+18C5DB Extra Length          0000 (0)\n+18C5DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18079B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18C5DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1807E2 PAYLOAD\n+18C604 PAYLOAD\n \n-180A46 DATA DESCRIPTOR       08074B50 (134695760)\n-180A4A CRC                   3C911134 (1016140084)\n-180A4E Compressed Size       00000264 (612)\n-180A52 Uncompressed Size     000004D9 (1241)\n+18D37D DATA DESCRIPTOR       08074B50 (134695760)\n+18D381 CRC                   7076ABE9 (1886825449)\n+18D385 Compressed Size       00000D79 (3449)\n+18D389 Uncompressed Size     00003F37 (16183)\n \n-180A56 LOCAL HEADER #1434    04034B50 (67324752)\n-180A5A Extract Zip Spec      14 (20) '2.0'\n-180A5B Extract OS            00 (0) 'MS-DOS'\n-180A5C General Purpose Flag  0808 (2056)\n+18D38D LOCAL HEADER #1434    04034B50 (67324752)\n+18D391 Extract Zip Spec      14 (20) '2.0'\n+18D392 Extract OS            00 (0) 'MS-DOS'\n+18D393 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-180A5E Compression Method    0008 (8) 'Deflated'\n-180A60 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-180A64 CRC                   00000000 (0)\n-180A68 Compressed Size       00000000 (0)\n-180A6C Uncompressed Size     00000000 (0)\n-180A70 Filename Length       0023 (35)\n-180A72 Extra Length          0000 (0)\n-180A74 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18D395 Compression Method    0008 (8) 'Deflated'\n+18D397 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18D39B CRC                   00000000 (0)\n+18D39F Compressed Size       00000000 (0)\n+18D3A3 Uncompressed Size     00000000 (0)\n+18D3A7 Filename Length       0026 (38)\n+18D3A9 Extra Length          0000 (0)\n+18D3AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x180A74: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18D3AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-180A97 PAYLOAD               XX\n+18D3D1 PAYLOAD\n \n-180A99 DATA DESCRIPTOR       08074B50 (134695760)\n-180A9D CRC                   00000000 (0)\n-180AA1 Compressed Size       00000002 (2)\n-180AA5 Uncompressed Size     00000000 (0)\n+18DBD4 DATA DESCRIPTOR       08074B50 (134695760)\n+18DBD8 CRC                   E7722336 (3883017014)\n+18DBDC Compressed Size       00000803 (2051)\n+18DBE0 Uncompressed Size     00001DD8 (7640)\n \n-180AA9 LOCAL HEADER #1435    04034B50 (67324752)\n-180AAD Extract Zip Spec      14 (20) '2.0'\n-180AAE Extract OS            00 (0) 'MS-DOS'\n-180AAF General Purpose Flag  0808 (2056)\n+18DBE4 LOCAL HEADER #1435    04034B50 (67324752)\n+18DBE8 Extract Zip Spec      14 (20) '2.0'\n+18DBE9 Extract OS            00 (0) 'MS-DOS'\n+18DBEA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-180AB1 Compression Method    0008 (8) 'Deflated'\n-180AB3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-180AB7 CRC                   00000000 (0)\n-180ABB Compressed Size       00000000 (0)\n-180ABF Uncompressed Size     00000000 (0)\n-180AC3 Filename Length       0038 (56)\n-180AC5 Extra Length          0000 (0)\n-180AC7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18DBEC Compression Method    0008 (8) 'Deflated'\n+18DBEE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18DBF2 CRC                   00000000 (0)\n+18DBF6 Compressed Size       00000000 (0)\n+18DBFA Uncompressed Size     00000000 (0)\n+18DBFE Filename Length       002A (42)\n+18DC00 Extra Length          0000 (0)\n+18DC02 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x180AC7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18DC02: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-180AFF PAYLOAD\n+18DC2C PAYLOAD               XX\n \n-1814F9 DATA DESCRIPTOR       08074B50 (134695760)\n-1814FD CRC                   71E62C15 (1910909973)\n-181501 Compressed Size       000009FA (2554)\n-181505 Uncompressed Size     00003076 (12406)\n+18DC2E DATA DESCRIPTOR       08074B50 (134695760)\n+18DC32 CRC                   00000000 (0)\n+18DC36 Compressed Size       00000002 (2)\n+18DC3A Uncompressed Size     00000000 (0)\n \n-181509 LOCAL HEADER #1436    04034B50 (67324752)\n-18150D Extract Zip Spec      14 (20) '2.0'\n-18150E Extract OS            00 (0) 'MS-DOS'\n-18150F General Purpose Flag  0808 (2056)\n+18DC3E LOCAL HEADER #1436    04034B50 (67324752)\n+18DC42 Extract Zip Spec      14 (20) '2.0'\n+18DC43 Extract OS            00 (0) 'MS-DOS'\n+18DC44 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-181511 Compression Method    0008 (8) 'Deflated'\n-181513 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-181517 CRC                   00000000 (0)\n-18151B Compressed Size       00000000 (0)\n-18151F Uncompressed Size     00000000 (0)\n-181523 Filename Length       003F (63)\n-181525 Extra Length          0000 (0)\n-181527 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18DC46 Compression Method    0008 (8) 'Deflated'\n+18DC48 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18DC4C CRC                   00000000 (0)\n+18DC50 Compressed Size       00000000 (0)\n+18DC54 Uncompressed Size     00000000 (0)\n+18DC58 Filename Length       0031 (49)\n+18DC5A Extra Length          0000 (0)\n+18DC5C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x181527: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18DC5C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-181566 PAYLOAD\n+18DC8D PAYLOAD\n \n-1817C9 DATA DESCRIPTOR       08074B50 (134695760)\n-1817CD CRC                   6ACD2956 (1791830358)\n-1817D1 Compressed Size       00000263 (611)\n-1817D5 Uncompressed Size     000004BE (1214)\n+18E024 DATA DESCRIPTOR       08074B50 (134695760)\n+18E028 CRC                   CC527EDE (3427958494)\n+18E02C Compressed Size       00000397 (919)\n+18E030 Uncompressed Size     00000B3D (2877)\n \n-1817D9 LOCAL HEADER #1437    04034B50 (67324752)\n-1817DD Extract Zip Spec      14 (20) '2.0'\n-1817DE Extract OS            00 (0) 'MS-DOS'\n-1817DF General Purpose Flag  0808 (2056)\n+18E034 LOCAL HEADER #1437    04034B50 (67324752)\n+18E038 Extract Zip Spec      14 (20) '2.0'\n+18E039 Extract OS            00 (0) 'MS-DOS'\n+18E03A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1817E1 Compression Method    0008 (8) 'Deflated'\n-1817E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1817E7 CRC                   00000000 (0)\n-1817EB Compressed Size       00000000 (0)\n-1817EF Uncompressed Size     00000000 (0)\n-1817F3 Filename Length       0048 (72)\n-1817F5 Extra Length          0000 (0)\n-1817F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18E03C Compression Method    0008 (8) 'Deflated'\n+18E03E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18E042 CRC                   00000000 (0)\n+18E046 Compressed Size       00000000 (0)\n+18E04A Uncompressed Size     00000000 (0)\n+18E04E Filename Length       0038 (56)\n+18E050 Extra Length          0000 (0)\n+18E052 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1817F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18E052: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18183F PAYLOAD\n+18E08A PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-181F8D DATA DESCRIPTOR       08074B50 (134695760)\n-181F91 CRC                   32A6602D (849764397)\n-181F95 Compressed Size       0000074E (1870)\n-181F99 Uncompressed Size     00001E83 (7811)\n+18E0C7 DATA DESCRIPTOR       08074B50 (134695760)\n+18E0CB CRC                   9B978690 (2610398864)\n+18E0CF Compressed Size       0000003D (61)\n+18E0D3 Uncompressed Size     00000040 (64)\n \n-181F9D LOCAL HEADER #1438    04034B50 (67324752)\n-181FA1 Extract Zip Spec      14 (20) '2.0'\n-181FA2 Extract OS            00 (0) 'MS-DOS'\n-181FA3 General Purpose Flag  0808 (2056)\n+18E0D7 LOCAL HEADER #1438    04034B50 (67324752)\n+18E0DB Extract Zip Spec      14 (20) '2.0'\n+18E0DC Extract OS            00 (0) 'MS-DOS'\n+18E0DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-181FA5 Compression Method    0008 (8) 'Deflated'\n-181FA7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-181FAB CRC                   00000000 (0)\n-181FAF Compressed Size       00000000 (0)\n-181FB3 Uncompressed Size     00000000 (0)\n-181FB7 Filename Length       004F (79)\n-181FB9 Extra Length          0000 (0)\n-181FBB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18E0DF Compression Method    0008 (8) 'Deflated'\n+18E0E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18E0E5 CRC                   00000000 (0)\n+18E0E9 Compressed Size       00000000 (0)\n+18E0ED Uncompressed Size     00000000 (0)\n+18E0F1 Filename Length       0022 (34)\n+18E0F3 Extra Length          0000 (0)\n+18E0F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x181FBB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18E0F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18200A PAYLOAD\n+18E117 PAYLOAD               XX\n \n-182271 DATA DESCRIPTOR       08074B50 (134695760)\n-182275 CRC                   DA761D6A (3665173866)\n-182279 Compressed Size       00000267 (615)\n-18227D Uncompressed Size     000004E6 (1254)\n+18E119 DATA DESCRIPTOR       08074B50 (134695760)\n+18E11D CRC                   00000000 (0)\n+18E121 Compressed Size       00000002 (2)\n+18E125 Uncompressed Size     00000000 (0)\n \n-182281 LOCAL HEADER #1439    04034B50 (67324752)\n-182285 Extract Zip Spec      14 (20) '2.0'\n-182286 Extract OS            00 (0) 'MS-DOS'\n-182287 General Purpose Flag  0808 (2056)\n+18E129 LOCAL HEADER #1439    04034B50 (67324752)\n+18E12D Extract Zip Spec      14 (20) '2.0'\n+18E12E Extract OS            00 (0) 'MS-DOS'\n+18E12F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-182289 Compression Method    0008 (8) 'Deflated'\n-18228B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18228F CRC                   00000000 (0)\n-182293 Compressed Size       00000000 (0)\n-182297 Uncompressed Size     00000000 (0)\n-18229B Filename Length       0019 (25)\n-18229D Extra Length          0000 (0)\n-18229F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+18E131 Compression Method    0008 (8) 'Deflated'\n+18E133 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18E137 CRC                   00000000 (0)\n+18E13B Compressed Size       00000000 (0)\n+18E13F Uncompressed Size     00000000 (0)\n+18E143 Filename Length       0030 (48)\n+18E145 Extra Length          0000 (0)\n+18E147 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18229F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18E147: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1822B8 PAYLOAD               XX\n+18E177 PAYLOAD\n \n-1822BA DATA DESCRIPTOR       08074B50 (134695760)\n-1822BE CRC                   00000000 (0)\n-1822C2 Compressed Size       00000002 (2)\n-1822C6 Uncompressed Size     00000000 (0)\n+18E3BB DATA DESCRIPTOR       08074B50 (134695760)\n+18E3BF CRC                   072B28E1 (120269025)\n+18E3C3 Compressed Size       00000244 (580)\n+18E3C7 Uncompressed Size     00000423 (1059)\n \n-1822CA LOCAL HEADER #1440    04034B50 (67324752)\n-1822CE Extract Zip Spec      14 (20) '2.0'\n-1822CF Extract OS            00 (0) 'MS-DOS'\n-1822D0 General Purpose Flag  0808 (2056)\n+18E3CB LOCAL HEADER #1440    04034B50 (67324752)\n+18E3CF Extract Zip Spec      14 (20) '2.0'\n+18E3D0 Extract OS            00 (0) 'MS-DOS'\n+18E3D1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1822D2 Compression Method    0008 (8) 'Deflated'\n-1822D4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1822D8 CRC                   00000000 (0)\n-1822DC Compressed Size       00000000 (0)\n-1822E0 Uncompressed Size     00000000 (0)\n-1822E4 Filename Length       0027 (39)\n-1822E6 Extra Length          0000 (0)\n-1822E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18E3D3 Compression Method    0008 (8) 'Deflated'\n+18E3D5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18E3D9 CRC                   00000000 (0)\n+18E3DD Compressed Size       00000000 (0)\n+18E3E1 Uncompressed Size     00000000 (0)\n+18E3E5 Filename Length       0030 (48)\n+18E3E7 Extra Length          0000 (0)\n+18E3E9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1822E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18E3E9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18230F PAYLOAD\n+18E419 PAYLOAD\n \n-182592 DATA DESCRIPTOR       08074B50 (134695760)\n-182596 CRC                   974A673F (2538235711)\n-18259A Compressed Size       00000283 (643)\n-18259E Uncompressed Size     0000050A (1290)\n+18E6BA DATA DESCRIPTOR       08074B50 (134695760)\n+18E6BE CRC                   2705935A (654676826)\n+18E6C2 Compressed Size       000002A1 (673)\n+18E6C6 Uncompressed Size     000005C8 (1480)\n \n-1825A2 LOCAL HEADER #1441    04034B50 (67324752)\n-1825A6 Extract Zip Spec      14 (20) '2.0'\n-1825A7 Extract OS            00 (0) 'MS-DOS'\n-1825A8 General Purpose Flag  0808 (2056)\n+18E6CA LOCAL HEADER #1441    04034B50 (67324752)\n+18E6CE Extract Zip Spec      14 (20) '2.0'\n+18E6CF Extract OS            00 (0) 'MS-DOS'\n+18E6D0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1825AA Compression Method    0008 (8) 'Deflated'\n-1825AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1825B0 CRC                   00000000 (0)\n-1825B4 Compressed Size       00000000 (0)\n-1825B8 Uncompressed Size     00000000 (0)\n-1825BC Filename Length       002C (44)\n-1825BE Extra Length          0000 (0)\n-1825C0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18E6D2 Compression Method    0008 (8) 'Deflated'\n+18E6D4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18E6D8 CRC                   00000000 (0)\n+18E6DC Compressed Size       00000000 (0)\n+18E6E0 Uncompressed Size     00000000 (0)\n+18E6E4 Filename Length       0030 (48)\n+18E6E6 Extra Length          0000 (0)\n+18E6E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1825C0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18E6E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1825EC PAYLOAD\n+18E718 PAYLOAD\n \n-1827F9 DATA DESCRIPTOR       08074B50 (134695760)\n-1827FD CRC                   8692FC93 (2257779859)\n-182801 Compressed Size       0000020D (525)\n-182805 Uncompressed Size     00000396 (918)\n+18EA17 DATA DESCRIPTOR       08074B50 (134695760)\n+18EA1B CRC                   9F97C867 (2677524583)\n+18EA1F Compressed Size       000002FF (767)\n+18EA23 Uncompressed Size     000008EC (2284)\n \n-182809 LOCAL HEADER #1442    04034B50 (67324752)\n-18280D Extract Zip Spec      14 (20) '2.0'\n-18280E Extract OS            00 (0) 'MS-DOS'\n-18280F General Purpose Flag  0808 (2056)\n+18EA27 LOCAL HEADER #1442    04034B50 (67324752)\n+18EA2B Extract Zip Spec      14 (20) '2.0'\n+18EA2C Extract OS            00 (0) 'MS-DOS'\n+18EA2D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-182811 Compression Method    0008 (8) 'Deflated'\n-182813 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-182817 CRC                   00000000 (0)\n-18281B Compressed Size       00000000 (0)\n-18281F Uncompressed Size     00000000 (0)\n-182823 Filename Length       0025 (37)\n-182825 Extra Length          0000 (0)\n-182827 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18EA2F Compression Method    0008 (8) 'Deflated'\n+18EA31 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18EA35 CRC                   00000000 (0)\n+18EA39 Compressed Size       00000000 (0)\n+18EA3D Uncompressed Size     00000000 (0)\n+18EA41 Filename Length       0031 (49)\n+18EA43 Extra Length          0000 (0)\n+18EA45 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x182827: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18EA45: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18284C PAYLOAD\n+18EA76 PAYLOAD\n \n-182A99 DATA DESCRIPTOR       08074B50 (134695760)\n-182A9D CRC                   51FB7003 (1375432707)\n-182AA1 Compressed Size       0000024D (589)\n-182AA5 Uncompressed Size     0000044C (1100)\n+18ED9E DATA DESCRIPTOR       08074B50 (134695760)\n+18EDA2 CRC                   BCDD8DC5 (3168636357)\n+18EDA6 Compressed Size       00000328 (808)\n+18EDAA Uncompressed Size     00000AB5 (2741)\n \n-182AA9 LOCAL HEADER #1443    04034B50 (67324752)\n-182AAD Extract Zip Spec      14 (20) '2.0'\n-182AAE Extract OS            00 (0) 'MS-DOS'\n-182AAF General Purpose Flag  0808 (2056)\n+18EDAE LOCAL HEADER #1443    04034B50 (67324752)\n+18EDB2 Extract Zip Spec      14 (20) '2.0'\n+18EDB3 Extract OS            00 (0) 'MS-DOS'\n+18EDB4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-182AB1 Compression Method    0008 (8) 'Deflated'\n-182AB3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-182AB7 CRC                   00000000 (0)\n-182ABB Compressed Size       00000000 (0)\n-182ABF Uncompressed Size     00000000 (0)\n-182AC3 Filename Length       002C (44)\n-182AC5 Extra Length          0000 (0)\n-182AC7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18EDB6 Compression Method    0008 (8) 'Deflated'\n+18EDB8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18EDBC CRC                   00000000 (0)\n+18EDC0 Compressed Size       00000000 (0)\n+18EDC4 Uncompressed Size     00000000 (0)\n+18EDC8 Filename Length       0032 (50)\n+18EDCA Extra Length          0000 (0)\n+18EDCC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x182AC7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18EDCC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-182AF3 PAYLOAD\n+18EDFE PAYLOAD\n \n-182D7A DATA DESCRIPTOR       08074B50 (134695760)\n-182D7E CRC                   9DE5257E (2649040254)\n-182D82 Compressed Size       00000287 (647)\n-182D86 Uncompressed Size     000004ED (1261)\n+18F31E DATA DESCRIPTOR       08074B50 (134695760)\n+18F322 CRC                   27A2E85E (664987742)\n+18F326 Compressed Size       00000520 (1312)\n+18F32A Uncompressed Size     00000DAC (3500)\n \n-182D8A LOCAL HEADER #1444    04034B50 (67324752)\n-182D8E Extract Zip Spec      14 (20) '2.0'\n-182D8F Extract OS            00 (0) 'MS-DOS'\n-182D90 General Purpose Flag  0808 (2056)\n+18F32E LOCAL HEADER #1444    04034B50 (67324752)\n+18F332 Extract Zip Spec      14 (20) '2.0'\n+18F333 Extract OS            00 (0) 'MS-DOS'\n+18F334 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-182D92 Compression Method    0008 (8) 'Deflated'\n-182D94 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-182D98 CRC                   00000000 (0)\n-182D9C Compressed Size       00000000 (0)\n-182DA0 Uncompressed Size     00000000 (0)\n-182DA4 Filename Length       002C (44)\n-182DA6 Extra Length          0000 (0)\n-182DA8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18F336 Compression Method    0008 (8) 'Deflated'\n+18F338 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18F33C CRC                   00000000 (0)\n+18F340 Compressed Size       00000000 (0)\n+18F344 Uncompressed Size     00000000 (0)\n+18F348 Filename Length       0033 (51)\n+18F34A Extra Length          0000 (0)\n+18F34C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x182DA8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18F34C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-182DD4 PAYLOAD\n+18F37F PAYLOAD\n \n-183381 DATA DESCRIPTOR       08074B50 (134695760)\n-183385 CRC                   78905E9C (2022727324)\n-183389 Compressed Size       000005AD (1453)\n-18338D Uncompressed Size     00000D44 (3396)\n+18F7AF DATA DESCRIPTOR       08074B50 (134695760)\n+18F7B3 CRC                   58C605A3 (1489372579)\n+18F7B7 Compressed Size       00000430 (1072)\n+18F7BB Uncompressed Size     00000924 (2340)\n \n-183391 LOCAL HEADER #1445    04034B50 (67324752)\n-183395 Extract Zip Spec      14 (20) '2.0'\n-183396 Extract OS            00 (0) 'MS-DOS'\n-183397 General Purpose Flag  0808 (2056)\n+18F7BF LOCAL HEADER #1445    04034B50 (67324752)\n+18F7C3 Extract Zip Spec      14 (20) '2.0'\n+18F7C4 Extract OS            00 (0) 'MS-DOS'\n+18F7C5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-183399 Compression Method    0008 (8) 'Deflated'\n-18339B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18339F CRC                   00000000 (0)\n-1833A3 Compressed Size       00000000 (0)\n-1833A7 Uncompressed Size     00000000 (0)\n-1833AB Filename Length       0021 (33)\n-1833AD Extra Length          0000 (0)\n-1833AF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18F7C7 Compression Method    0008 (8) 'Deflated'\n+18F7C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18F7CD CRC                   00000000 (0)\n+18F7D1 Compressed Size       00000000 (0)\n+18F7D5 Uncompressed Size     00000000 (0)\n+18F7D9 Filename Length       0034 (52)\n+18F7DB Extra Length          0000 (0)\n+18F7DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1833AF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18F7DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1833D0 PAYLOAD               XX\n+18F811 PAYLOAD\n \n-1833D2 DATA DESCRIPTOR       08074B50 (134695760)\n-1833D6 CRC                   00000000 (0)\n-1833DA Compressed Size       00000002 (2)\n-1833DE Uncompressed Size     00000000 (0)\n+18FC32 DATA DESCRIPTOR       08074B50 (134695760)\n+18FC36 CRC                   FF4A6A33 (4283066931)\n+18FC3A Compressed Size       00000421 (1057)\n+18FC3E Uncompressed Size     00000A23 (2595)\n \n-1833E2 LOCAL HEADER #1446    04034B50 (67324752)\n-1833E6 Extract Zip Spec      14 (20) '2.0'\n-1833E7 Extract OS            00 (0) 'MS-DOS'\n-1833E8 General Purpose Flag  0808 (2056)\n+18FC42 LOCAL HEADER #1446    04034B50 (67324752)\n+18FC46 Extract Zip Spec      14 (20) '2.0'\n+18FC47 Extract OS            00 (0) 'MS-DOS'\n+18FC48 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1833EA Compression Method    0008 (8) 'Deflated'\n-1833EC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1833F0 CRC                   00000000 (0)\n-1833F4 Compressed Size       00000000 (0)\n-1833F8 Uncompressed Size     00000000 (0)\n-1833FC Filename Length       003C (60)\n-1833FE Extra Length          0000 (0)\n-183400 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18FC4A Compression Method    0008 (8) 'Deflated'\n+18FC4C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18FC50 CRC                   00000000 (0)\n+18FC54 Compressed Size       00000000 (0)\n+18FC58 Uncompressed Size     00000000 (0)\n+18FC5C Filename Length       002A (42)\n+18FC5E Extra Length          0000 (0)\n+18FC60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x183400: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18FC60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18343C PAYLOAD\n+18FC8A PAYLOAD               XX\n \n-183A63 DATA DESCRIPTOR       08074B50 (134695760)\n-183A67 CRC                   FA4C7A14 (4199315988)\n-183A6B Compressed Size       00000627 (1575)\n-183A6F Uncompressed Size     00001336 (4918)\n+18FC8C DATA DESCRIPTOR       08074B50 (134695760)\n+18FC90 CRC                   00000000 (0)\n+18FC94 Compressed Size       00000002 (2)\n+18FC98 Uncompressed Size     00000000 (0)\n \n-183A73 LOCAL HEADER #1447    04034B50 (67324752)\n-183A77 Extract Zip Spec      14 (20) '2.0'\n-183A78 Extract OS            00 (0) 'MS-DOS'\n-183A79 General Purpose Flag  0808 (2056)\n+18FC9C LOCAL HEADER #1447    04034B50 (67324752)\n+18FCA0 Extract Zip Spec      14 (20) '2.0'\n+18FCA1 Extract OS            00 (0) 'MS-DOS'\n+18FCA2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-183A7B Compression Method    0008 (8) 'Deflated'\n-183A7D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-183A81 CRC                   00000000 (0)\n-183A85 Compressed Size       00000000 (0)\n-183A89 Uncompressed Size     00000000 (0)\n-183A8D Filename Length       003C (60)\n-183A8F Extra Length          0000 (0)\n-183A91 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+18FCA4 Compression Method    0008 (8) 'Deflated'\n+18FCA6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+18FCAA CRC                   00000000 (0)\n+18FCAE Compressed Size       00000000 (0)\n+18FCB2 Uncompressed Size     00000000 (0)\n+18FCB6 Filename Length       0048 (72)\n+18FCB8 Extra Length          0000 (0)\n+18FCBA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x183A91: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x18FCBA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-183ACD PAYLOAD\n+18FD02 PAYLOAD\n \n-183D1B DATA DESCRIPTOR       08074B50 (134695760)\n-183D1F CRC                   9C73731D (2624811805)\n-183D23 Compressed Size       0000024E (590)\n-183D27 Uncompressed Size     00000460 (1120)\n+1900AF DATA DESCRIPTOR       08074B50 (134695760)\n+1900B3 CRC                   BC3782BE (3157754558)\n+1900B7 Compressed Size       000003AD (941)\n+1900BB Uncompressed Size     00000865 (2149)\n \n-183D2B LOCAL HEADER #1448    04034B50 (67324752)\n-183D2F Extract Zip Spec      14 (20) '2.0'\n-183D30 Extract OS            00 (0) 'MS-DOS'\n-183D31 General Purpose Flag  0808 (2056)\n+1900BF LOCAL HEADER #1448    04034B50 (67324752)\n+1900C3 Extract Zip Spec      14 (20) '2.0'\n+1900C4 Extract OS            00 (0) 'MS-DOS'\n+1900C5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-183D33 Compression Method    0008 (8) 'Deflated'\n-183D35 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-183D39 CRC                   00000000 (0)\n-183D3D Compressed Size       00000000 (0)\n-183D41 Uncompressed Size     00000000 (0)\n-183D45 Filename Length       0033 (51)\n-183D47 Extra Length          0000 (0)\n-183D49 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1900C7 Compression Method    0008 (8) 'Deflated'\n+1900C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1900CD CRC                   00000000 (0)\n+1900D1 Compressed Size       00000000 (0)\n+1900D5 Uncompressed Size     00000000 (0)\n+1900D9 Filename Length       0045 (69)\n+1900DB Extra Length          0000 (0)\n+1900DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x183D49: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1900DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-183D7C PAYLOAD\n+190122 PAYLOAD\n \n-1846B0 DATA DESCRIPTOR       08074B50 (134695760)\n-1846B4 CRC                   10FA9E81 (284860033)\n-1846B8 Compressed Size       00000934 (2356)\n-1846BC Uncompressed Size     000021D4 (8660)\n+1903A3 DATA DESCRIPTOR       08074B50 (134695760)\n+1903A7 CRC                   50042D13 (1342450963)\n+1903AB Compressed Size       00000281 (641)\n+1903AF Uncompressed Size     000004B3 (1203)\n \n-1846C0 LOCAL HEADER #1449    04034B50 (67324752)\n-1846C4 Extract Zip Spec      14 (20) '2.0'\n-1846C5 Extract OS            00 (0) 'MS-DOS'\n-1846C6 General Purpose Flag  0808 (2056)\n+1903B3 LOCAL HEADER #1449    04034B50 (67324752)\n+1903B7 Extract Zip Spec      14 (20) '2.0'\n+1903B8 Extract OS            00 (0) 'MS-DOS'\n+1903B9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1846C8 Compression Method    0008 (8) 'Deflated'\n-1846CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1846CE CRC                   00000000 (0)\n-1846D2 Compressed Size       00000000 (0)\n-1846D6 Uncompressed Size     00000000 (0)\n-1846DA Filename Length       003C (60)\n-1846DC Extra Length          0000 (0)\n-1846DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1903BB Compression Method    0008 (8) 'Deflated'\n+1903BD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1903C1 CRC                   00000000 (0)\n+1903C5 Compressed Size       00000000 (0)\n+1903C9 Uncompressed Size     00000000 (0)\n+1903CD Filename Length       0038 (56)\n+1903CF Extra Length          0000 (0)\n+1903D1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1846DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1903D1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18471A PAYLOAD\n+190409 PAYLOAD               XX\n \n-184966 DATA DESCRIPTOR       08074B50 (134695760)\n-18496A CRC                   A1A88F0D (2712178445)\n-18496E Compressed Size       0000024C (588)\n-184972 Uncompressed Size     00000460 (1120)\n+19040B DATA DESCRIPTOR       08074B50 (134695760)\n+19040F CRC                   00000000 (0)\n+190413 Compressed Size       00000002 (2)\n+190417 Uncompressed Size     00000000 (0)\n \n-184976 LOCAL HEADER #1450    04034B50 (67324752)\n-18497A Extract Zip Spec      14 (20) '2.0'\n-18497B Extract OS            00 (0) 'MS-DOS'\n-18497C General Purpose Flag  0808 (2056)\n+19041B LOCAL HEADER #1450    04034B50 (67324752)\n+19041F Extract Zip Spec      14 (20) '2.0'\n+190420 Extract OS            00 (0) 'MS-DOS'\n+190421 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18497E Compression Method    0008 (8) 'Deflated'\n-184980 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-184984 CRC                   00000000 (0)\n-184988 Compressed Size       00000000 (0)\n-18498C Uncompressed Size     00000000 (0)\n-184990 Filename Length       001F (31)\n-184992 Extra Length          0000 (0)\n-184994 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+190423 Compression Method    0008 (8) 'Deflated'\n+190425 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+190429 CRC                   00000000 (0)\n+19042D Compressed Size       00000000 (0)\n+190431 Uncompressed Size     00000000 (0)\n+190435 Filename Length       003F (63)\n+190437 Extra Length          0000 (0)\n+190439 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x184994: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x190439: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1849B3 PAYLOAD               XX\n+190478 PAYLOAD\n \n-1849B5 DATA DESCRIPTOR       08074B50 (134695760)\n-1849B9 CRC                   00000000 (0)\n-1849BD Compressed Size       00000002 (2)\n-1849C1 Uncompressed Size     00000000 (0)\n+1907CF DATA DESCRIPTOR       08074B50 (134695760)\n+1907D3 CRC                   91053145 (2433036613)\n+1907D7 Compressed Size       00000357 (855)\n+1907DB Uncompressed Size     00000789 (1929)\n \n-1849C5 LOCAL HEADER #1451    04034B50 (67324752)\n-1849C9 Extract Zip Spec      14 (20) '2.0'\n-1849CA Extract OS            00 (0) 'MS-DOS'\n-1849CB General Purpose Flag  0808 (2056)\n+1907DF LOCAL HEADER #1451    04034B50 (67324752)\n+1907E3 Extract Zip Spec      14 (20) '2.0'\n+1907E4 Extract OS            00 (0) 'MS-DOS'\n+1907E5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1849CD Compression Method    0008 (8) 'Deflated'\n-1849CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1849D3 CRC                   00000000 (0)\n-1849D7 Compressed Size       00000000 (0)\n-1849DB Uncompressed Size     00000000 (0)\n-1849DF Filename Length       0030 (48)\n-1849E1 Extra Length          0000 (0)\n-1849E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1907E7 Compression Method    0008 (8) 'Deflated'\n+1907E9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1907ED CRC                   00000000 (0)\n+1907F1 Compressed Size       00000000 (0)\n+1907F5 Uncompressed Size     00000000 (0)\n+1907F9 Filename Length       0046 (70)\n+1907FB Extra Length          0000 (0)\n+1907FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1849E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1907FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-184A13 PAYLOAD\n+190843 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-18531A DATA DESCRIPTOR       08074B50 (134695760)\n-18531E CRC                   EA5FE743 (3932153667)\n-185322 Compressed Size       00000907 (2311)\n-185326 Uncompressed Size     00002351 (9041)\n+19088E DATA DESCRIPTOR       08074B50 (134695760)\n+190892 CRC                   F5EE859D (4126049693)\n+190896 Compressed Size       0000004B (75)\n+19089A Uncompressed Size     0000004E (78)\n \n-18532A LOCAL HEADER #1452    04034B50 (67324752)\n-18532E Extract Zip Spec      14 (20) '2.0'\n-18532F Extract OS            00 (0) 'MS-DOS'\n-185330 General Purpose Flag  0808 (2056)\n+19089E LOCAL HEADER #1452    04034B50 (67324752)\n+1908A2 Extract Zip Spec      14 (20) '2.0'\n+1908A3 Extract OS            00 (0) 'MS-DOS'\n+1908A4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-185332 Compression Method    0008 (8) 'Deflated'\n-185334 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-185338 CRC                   00000000 (0)\n-18533C Compressed Size       00000000 (0)\n-185340 Uncompressed Size     00000000 (0)\n-185344 Filename Length       0037 (55)\n-185346 Extra Length          0000 (0)\n-185348 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1908A6 Compression Method    0008 (8) 'Deflated'\n+1908A8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1908AC CRC                   00000000 (0)\n+1908B0 Compressed Size       00000000 (0)\n+1908B4 Uncompressed Size     00000000 (0)\n+1908B8 Filename Length       002B (43)\n+1908BA Extra Length          0000 (0)\n+1908BC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x185348: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1908BC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18537F PAYLOAD\n+1908E7 PAYLOAD               XX\n \n-18577A DATA DESCRIPTOR       08074B50 (134695760)\n-18577E CRC                   8FE44697 (2414102167)\n-185782 Compressed Size       000003FB (1019)\n-185786 Uncompressed Size     00000B05 (2821)\n+1908E9 DATA DESCRIPTOR       08074B50 (134695760)\n+1908ED CRC                   00000000 (0)\n+1908F1 Compressed Size       00000002 (2)\n+1908F5 Uncompressed Size     00000000 (0)\n \n-18578A LOCAL HEADER #1453    04034B50 (67324752)\n-18578E Extract Zip Spec      14 (20) '2.0'\n-18578F Extract OS            00 (0) 'MS-DOS'\n-185790 General Purpose Flag  0808 (2056)\n+1908F9 LOCAL HEADER #1453    04034B50 (67324752)\n+1908FD Extract Zip Spec      14 (20) '2.0'\n+1908FE Extract OS            00 (0) 'MS-DOS'\n+1908FF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-185792 Compression Method    0008 (8) 'Deflated'\n-185794 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-185798 CRC                   00000000 (0)\n-18579C Compressed Size       00000000 (0)\n-1857A0 Uncompressed Size     00000000 (0)\n-1857A4 Filename Length       0031 (49)\n-1857A6 Extra Length          0000 (0)\n-1857A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+190901 Compression Method    0008 (8) 'Deflated'\n+190903 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+190907 CRC                   00000000 (0)\n+19090B Compressed Size       00000000 (0)\n+19090F Uncompressed Size     00000000 (0)\n+190913 Filename Length       0043 (67)\n+190915 Extra Length          0000 (0)\n+190917 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1857A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x190917: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1857D9 PAYLOAD\n+19095A PAYLOAD\n \n-18634D DATA DESCRIPTOR       08074B50 (134695760)\n-186351 CRC                   8F262250 (2401641040)\n-186355 Compressed Size       00000B74 (2932)\n-186359 Uncompressed Size     00002B4E (11086)\n+190D81 DATA DESCRIPTOR       08074B50 (134695760)\n+190D85 CRC                   42503EDC (1112555228)\n+190D89 Compressed Size       00000427 (1063)\n+190D8D Uncompressed Size     00000D9C (3484)\n \n-18635D LOCAL HEADER #1454    04034B50 (67324752)\n-186361 Extract Zip Spec      14 (20) '2.0'\n-186362 Extract OS            00 (0) 'MS-DOS'\n-186363 General Purpose Flag  0808 (2056)\n+190D91 LOCAL HEADER #1454    04034B50 (67324752)\n+190D95 Extract Zip Spec      14 (20) '2.0'\n+190D96 Extract OS            00 (0) 'MS-DOS'\n+190D97 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-186365 Compression Method    0008 (8) 'Deflated'\n-186367 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18636B CRC                   00000000 (0)\n-18636F Compressed Size       00000000 (0)\n-186373 Uncompressed Size     00000000 (0)\n-186377 Filename Length       002E (46)\n-186379 Extra Length          0000 (0)\n-18637B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+190D99 Compression Method    0008 (8) 'Deflated'\n+190D9B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+190D9F CRC                   00000000 (0)\n+190DA3 Compressed Size       00000000 (0)\n+190DA7 Uncompressed Size     00000000 (0)\n+190DAB Filename Length       0044 (68)\n+190DAD Extra Length          0000 (0)\n+190DAF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18637B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x190DAF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1863A9 PAYLOAD\n+190DF3 PAYLOAD\n \n-18693B DATA DESCRIPTOR       08074B50 (134695760)\n-18693F CRC                   DAB7FE63 (3669491299)\n-186943 Compressed Size       00000592 (1426)\n-186947 Uncompressed Size     00001734 (5940)\n+1911D2 DATA DESCRIPTOR       08074B50 (134695760)\n+1911D6 CRC                   86605046 (2254458950)\n+1911DA Compressed Size       000003DF (991)\n+1911DE Uncompressed Size     00000CE3 (3299)\n \n-18694B LOCAL HEADER #1455    04034B50 (67324752)\n-18694F Extract Zip Spec      14 (20) '2.0'\n-186950 Extract OS            00 (0) 'MS-DOS'\n-186951 General Purpose Flag  0808 (2056)\n+1911E2 LOCAL HEADER #1455    04034B50 (67324752)\n+1911E6 Extract Zip Spec      14 (20) '2.0'\n+1911E7 Extract OS            00 (0) 'MS-DOS'\n+1911E8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-186953 Compression Method    0008 (8) 'Deflated'\n-186955 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-186959 CRC                   00000000 (0)\n-18695D Compressed Size       00000000 (0)\n-186961 Uncompressed Size     00000000 (0)\n-186965 Filename Length       0022 (34)\n-186967 Extra Length          0000 (0)\n-186969 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1911EA Compression Method    0008 (8) 'Deflated'\n+1911EC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1911F0 CRC                   00000000 (0)\n+1911F4 Compressed Size       00000000 (0)\n+1911F8 Uncompressed Size     00000000 (0)\n+1911FC Filename Length       0045 (69)\n+1911FE Extra Length          0000 (0)\n+191200 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x186969: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x191200: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18698B PAYLOAD               XX\n+191245 PAYLOAD\n \n-18698D DATA DESCRIPTOR       08074B50 (134695760)\n-186991 CRC                   00000000 (0)\n-186995 Compressed Size       00000002 (2)\n-186999 Uncompressed Size     00000000 (0)\n+19156E DATA DESCRIPTOR       08074B50 (134695760)\n+191572 CRC                   C83ECB39 (3359558457)\n+191576 Compressed Size       00000329 (809)\n+19157A Uncompressed Size     000007BB (1979)\n \n-18699D LOCAL HEADER #1456    04034B50 (67324752)\n-1869A1 Extract Zip Spec      14 (20) '2.0'\n-1869A2 Extract OS            00 (0) 'MS-DOS'\n-1869A3 General Purpose Flag  0808 (2056)\n+19157E LOCAL HEADER #1456    04034B50 (67324752)\n+191582 Extract Zip Spec      14 (20) '2.0'\n+191583 Extract OS            00 (0) 'MS-DOS'\n+191584 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1869A5 Compression Method    0008 (8) 'Deflated'\n-1869A7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1869AB CRC                   00000000 (0)\n-1869AF Compressed Size       00000000 (0)\n-1869B3 Uncompressed Size     00000000 (0)\n-1869B7 Filename Length       0036 (54)\n-1869B9 Extra Length          0000 (0)\n-1869BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+191586 Compression Method    0008 (8) 'Deflated'\n+191588 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19158C CRC                   00000000 (0)\n+191590 Compressed Size       00000000 (0)\n+191594 Uncompressed Size     00000000 (0)\n+191598 Filename Length       003D (61)\n+19159A Extra Length          0000 (0)\n+19159C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1869BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19159C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1869F1 PAYLOAD\n+1915D9 PAYLOAD               XX\n \n-186DCB DATA DESCRIPTOR       08074B50 (134695760)\n-186DCF CRC                   2AFEDAAE (721345198)\n-186DD3 Compressed Size       000003DA (986)\n-186DD7 Uncompressed Size     00000992 (2450)\n+1915DB DATA DESCRIPTOR       08074B50 (134695760)\n+1915DF CRC                   00000000 (0)\n+1915E3 Compressed Size       00000002 (2)\n+1915E7 Uncompressed Size     00000000 (0)\n \n-186DDB LOCAL HEADER #1457    04034B50 (67324752)\n-186DDF Extract Zip Spec      14 (20) '2.0'\n-186DE0 Extract OS            00 (0) 'MS-DOS'\n-186DE1 General Purpose Flag  0808 (2056)\n+1915EB LOCAL HEADER #1457    04034B50 (67324752)\n+1915EF Extract Zip Spec      14 (20) '2.0'\n+1915F0 Extract OS            00 (0) 'MS-DOS'\n+1915F1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-186DE3 Compression Method    0008 (8) 'Deflated'\n-186DE5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-186DE9 CRC                   00000000 (0)\n-186DED Compressed Size       00000000 (0)\n-186DF1 Uncompressed Size     00000000 (0)\n-186DF5 Filename Length       0021 (33)\n-186DF7 Extra Length          0000 (0)\n-186DF9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1915F3 Compression Method    0008 (8) 'Deflated'\n+1915F5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1915F9 CRC                   00000000 (0)\n+1915FD Compressed Size       00000000 (0)\n+191601 Uncompressed Size     00000000 (0)\n+191605 Filename Length       0044 (68)\n+191607 Extra Length          0000 (0)\n+191609 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x186DF9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x191609: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-186E1A PAYLOAD               XX\n+19164D PAYLOAD\n \n-186E1C DATA DESCRIPTOR       08074B50 (134695760)\n-186E20 CRC                   00000000 (0)\n-186E24 Compressed Size       00000002 (2)\n-186E28 Uncompressed Size     00000000 (0)\n+1919B6 DATA DESCRIPTOR       08074B50 (134695760)\n+1919BA CRC                   4A5D3F5A (1247625050)\n+1919BE Compressed Size       00000369 (873)\n+1919C2 Uncompressed Size     00000808 (2056)\n \n-186E2C LOCAL HEADER #1458    04034B50 (67324752)\n-186E30 Extract Zip Spec      14 (20) '2.0'\n-186E31 Extract OS            00 (0) 'MS-DOS'\n-186E32 General Purpose Flag  0808 (2056)\n+1919C6 LOCAL HEADER #1458    04034B50 (67324752)\n+1919CA Extract Zip Spec      14 (20) '2.0'\n+1919CB Extract OS            00 (0) 'MS-DOS'\n+1919CC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-186E34 Compression Method    0008 (8) 'Deflated'\n-186E36 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-186E3A CRC                   00000000 (0)\n-186E3E Compressed Size       00000000 (0)\n-186E42 Uncompressed Size     00000000 (0)\n-186E46 Filename Length       0034 (52)\n-186E48 Extra Length          0000 (0)\n-186E4A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1919CE Compression Method    0008 (8) 'Deflated'\n+1919D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1919D4 CRC                   00000000 (0)\n+1919D8 Compressed Size       00000000 (0)\n+1919DC Uncompressed Size     00000000 (0)\n+1919E0 Filename Length       004B (75)\n+1919E2 Extra Length          0000 (0)\n+1919E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x186E4A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1919E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-186E7E PAYLOAD\n+191A2F PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-18740C DATA DESCRIPTOR       08074B50 (134695760)\n-187410 CRC                   88CEDD40 (2295258432)\n-187414 Compressed Size       0000058E (1422)\n-187418 Uncompressed Size     000011F6 (4598)\n+191A7E DATA DESCRIPTOR       08074B50 (134695760)\n+191A82 CRC                   A3F71CB2 (2750880946)\n+191A86 Compressed Size       0000004F (79)\n+191A8A Uncompressed Size     00000053 (83)\n \n-18741C LOCAL HEADER #1459    04034B50 (67324752)\n-187420 Extract Zip Spec      14 (20) '2.0'\n-187421 Extract OS            00 (0) 'MS-DOS'\n-187422 General Purpose Flag  0808 (2056)\n+191A8E LOCAL HEADER #1459    04034B50 (67324752)\n+191A92 Extract Zip Spec      14 (20) '2.0'\n+191A93 Extract OS            00 (0) 'MS-DOS'\n+191A94 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-187424 Compression Method    0008 (8) 'Deflated'\n-187426 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18742A CRC                   00000000 (0)\n-18742E Compressed Size       00000000 (0)\n-187432 Uncompressed Size     00000000 (0)\n-187436 Filename Length       0023 (35)\n-187438 Extra Length          0000 (0)\n-18743A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+191A96 Compression Method    0008 (8) 'Deflated'\n+191A98 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+191A9C CRC                   00000000 (0)\n+191AA0 Compressed Size       00000000 (0)\n+191AA4 Uncompressed Size     00000000 (0)\n+191AA8 Filename Length       0026 (38)\n+191AAA Extra Length          0000 (0)\n+191AAC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18743A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x191AAC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18745D PAYLOAD               XX\n+191AD2 PAYLOAD               XX\n \n-18745F DATA DESCRIPTOR       08074B50 (134695760)\n-187463 CRC                   00000000 (0)\n-187467 Compressed Size       00000002 (2)\n-18746B Uncompressed Size     00000000 (0)\n+191AD4 DATA DESCRIPTOR       08074B50 (134695760)\n+191AD8 CRC                   00000000 (0)\n+191ADC Compressed Size       00000002 (2)\n+191AE0 Uncompressed Size     00000000 (0)\n \n-18746F LOCAL HEADER #1460    04034B50 (67324752)\n-187473 Extract Zip Spec      14 (20) '2.0'\n-187474 Extract OS            00 (0) 'MS-DOS'\n-187475 General Purpose Flag  0808 (2056)\n+191AE4 LOCAL HEADER #1460    04034B50 (67324752)\n+191AE8 Extract Zip Spec      14 (20) '2.0'\n+191AE9 Extract OS            00 (0) 'MS-DOS'\n+191AEA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-187477 Compression Method    0008 (8) 'Deflated'\n-187479 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18747D CRC                   00000000 (0)\n-187481 Compressed Size       00000000 (0)\n-187485 Uncompressed Size     00000000 (0)\n-187489 Filename Length       0038 (56)\n-18748B Extra Length          0000 (0)\n-18748D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+191AEC Compression Method    0008 (8) 'Deflated'\n+191AEE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+191AF2 CRC                   00000000 (0)\n+191AF6 Compressed Size       00000000 (0)\n+191AFA Uncompressed Size     00000000 (0)\n+191AFE Filename Length       0035 (53)\n+191B00 Extra Length          0000 (0)\n+191B02 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18748D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x191B02: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1874C5 PAYLOAD\n+191B37 PAYLOAD\n \n-187A37 DATA DESCRIPTOR       08074B50 (134695760)\n-187A3B CRC                   75FBF59C (1979446684)\n-187A3F Compressed Size       00000572 (1394)\n-187A43 Uncompressed Size     00000FCF (4047)\n+191E54 DATA DESCRIPTOR       08074B50 (134695760)\n+191E58 CRC                   4E53FCE8 (1314127080)\n+191E5C Compressed Size       0000031D (797)\n+191E60 Uncompressed Size     00000756 (1878)\n \n-187A47 LOCAL HEADER #1461    04034B50 (67324752)\n-187A4B Extract Zip Spec      14 (20) '2.0'\n-187A4C Extract OS            00 (0) 'MS-DOS'\n-187A4D General Purpose Flag  0808 (2056)\n+191E64 LOCAL HEADER #1461    04034B50 (67324752)\n+191E68 Extract Zip Spec      14 (20) '2.0'\n+191E69 Extract OS            00 (0) 'MS-DOS'\n+191E6A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-187A4F Compression Method    0008 (8) 'Deflated'\n-187A51 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-187A55 CRC                   00000000 (0)\n-187A59 Compressed Size       00000000 (0)\n-187A5D Uncompressed Size     00000000 (0)\n-187A61 Filename Length       0015 (21)\n-187A63 Extra Length          0000 (0)\n-187A65 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n+191E6C Compression Method    0008 (8) 'Deflated'\n+191E6E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+191E72 CRC                   00000000 (0)\n+191E76 Compressed Size       00000000 (0)\n+191E7A Uncompressed Size     00000000 (0)\n+191E7E Filename Length       0039 (57)\n+191E80 Extra Length          0000 (0)\n+191E82 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x187A65: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x191E82: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-187A7A PAYLOAD               XX\n+191EBB PAYLOAD\n \n-187A7C DATA DESCRIPTOR       08074B50 (134695760)\n-187A80 CRC                   00000000 (0)\n-187A84 Compressed Size       00000002 (2)\n-187A88 Uncompressed Size     00000000 (0)\n+1922AD DATA DESCRIPTOR       08074B50 (134695760)\n+1922B1 CRC                   58015D22 (1476484386)\n+1922B5 Compressed Size       000003F2 (1010)\n+1922B9 Uncompressed Size     00000CF3 (3315)\n \n-187A8C LOCAL HEADER #1462    04034B50 (67324752)\n-187A90 Extract Zip Spec      14 (20) '2.0'\n-187A91 Extract OS            00 (0) 'MS-DOS'\n-187A92 General Purpose Flag  0808 (2056)\n+1922BD LOCAL HEADER #1462    04034B50 (67324752)\n+1922C1 Extract Zip Spec      14 (20) '2.0'\n+1922C2 Extract OS            00 (0) 'MS-DOS'\n+1922C3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-187A94 Compression Method    0008 (8) 'Deflated'\n-187A96 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-187A9A CRC                   00000000 (0)\n-187A9E Compressed Size       00000000 (0)\n-187AA2 Uncompressed Size     00000000 (0)\n-187AA6 Filename Length       001D (29)\n-187AA8 Extra Length          0000 (0)\n-187AAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1922C5 Compression Method    0008 (8) 'Deflated'\n+1922C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1922CB CRC                   00000000 (0)\n+1922CF Compressed Size       00000000 (0)\n+1922D3 Uncompressed Size     00000000 (0)\n+1922D7 Filename Length       003A (58)\n+1922D9 Extra Length          0000 (0)\n+1922DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x187AAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1922DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-187AC7 PAYLOAD               XX\n+192315 PAYLOAD\n \n-187AC9 DATA DESCRIPTOR       08074B50 (134695760)\n-187ACD CRC                   00000000 (0)\n-187AD1 Compressed Size       00000002 (2)\n-187AD5 Uncompressed Size     00000000 (0)\n+192698 DATA DESCRIPTOR       08074B50 (134695760)\n+19269C CRC                   5529CB85 (1428802437)\n+1926A0 Compressed Size       00000383 (899)\n+1926A4 Uncompressed Size     00000B6A (2922)\n \n-187AD9 LOCAL HEADER #1463    04034B50 (67324752)\n-187ADD Extract Zip Spec      14 (20) '2.0'\n-187ADE Extract OS            00 (0) 'MS-DOS'\n-187ADF General Purpose Flag  0808 (2056)\n+1926A8 LOCAL HEADER #1463    04034B50 (67324752)\n+1926AC Extract Zip Spec      14 (20) '2.0'\n+1926AD Extract OS            00 (0) 'MS-DOS'\n+1926AE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-187AE1 Compression Method    0008 (8) 'Deflated'\n-187AE3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-187AE7 CRC                   00000000 (0)\n-187AEB Compressed Size       00000000 (0)\n-187AEF Uncompressed Size     00000000 (0)\n-187AF3 Filename Length       002D (45)\n-187AF5 Extra Length          0000 (0)\n-187AF7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1926B0 Compression Method    0008 (8) 'Deflated'\n+1926B2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1926B6 CRC                   00000000 (0)\n+1926BA Compressed Size       00000000 (0)\n+1926BE Uncompressed Size     00000000 (0)\n+1926C2 Filename Length       003B (59)\n+1926C4 Extra Length          0000 (0)\n+1926C6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x187AF7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1926C6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-187B24 PAYLOAD\n+192701 PAYLOAD\n \n-187D5B DATA DESCRIPTOR       08074B50 (134695760)\n-187D5F CRC                   FE44AB9A (4265913242)\n-187D63 Compressed Size       00000237 (567)\n-187D67 Uncompressed Size     000003F7 (1015)\n+192A20 DATA DESCRIPTOR       08074B50 (134695760)\n+192A24 CRC                   78F3EAFE (2029251326)\n+192A28 Compressed Size       0000031F (799)\n+192A2C Uncompressed Size     0000078D (1933)\n \n-187D6B LOCAL HEADER #1464    04034B50 (67324752)\n-187D6F Extract Zip Spec      14 (20) '2.0'\n-187D70 Extract OS            00 (0) 'MS-DOS'\n-187D71 General Purpose Flag  0808 (2056)\n+192A30 LOCAL HEADER #1464    04034B50 (67324752)\n+192A34 Extract Zip Spec      14 (20) '2.0'\n+192A35 Extract OS            00 (0) 'MS-DOS'\n+192A36 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-187D73 Compression Method    0008 (8) 'Deflated'\n-187D75 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-187D79 CRC                   00000000 (0)\n-187D7D Compressed Size       00000000 (0)\n-187D81 Uncompressed Size     00000000 (0)\n-187D85 Filename Length       0030 (48)\n-187D87 Extra Length          0000 (0)\n-187D89 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+192A38 Compression Method    0008 (8) 'Deflated'\n+192A3A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+192A3E CRC                   00000000 (0)\n+192A42 Compressed Size       00000000 (0)\n+192A46 Uncompressed Size     00000000 (0)\n+192A4A Filename Length       0038 (56)\n+192A4C Extra Length          0000 (0)\n+192A4E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x187D89: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x192A4E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-187DB9 PAYLOAD\n+192A86 PAYLOAD               XX\n \n-1880C4 DATA DESCRIPTOR       08074B50 (134695760)\n-1880C8 CRC                   C783A617 (3347293719)\n-1880CC Compressed Size       0000030B (779)\n-1880D0 Uncompressed Size     00000880 (2176)\n+192A88 DATA DESCRIPTOR       08074B50 (134695760)\n+192A8C CRC                   00000000 (0)\n+192A90 Compressed Size       00000002 (2)\n+192A94 Uncompressed Size     00000000 (0)\n \n-1880D4 LOCAL HEADER #1465    04034B50 (67324752)\n-1880D8 Extract Zip Spec      14 (20) '2.0'\n-1880D9 Extract OS            00 (0) 'MS-DOS'\n-1880DA General Purpose Flag  0808 (2056)\n+192A98 LOCAL HEADER #1465    04034B50 (67324752)\n+192A9C Extract Zip Spec      14 (20) '2.0'\n+192A9D Extract OS            00 (0) 'MS-DOS'\n+192A9E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1880DC Compression Method    0008 (8) 'Deflated'\n-1880DE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1880E2 CRC                   00000000 (0)\n-1880E6 Compressed Size       00000000 (0)\n-1880EA Uncompressed Size     00000000 (0)\n-1880EE Filename Length       0037 (55)\n-1880F0 Extra Length          0000 (0)\n-1880F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+192AA0 Compression Method    0008 (8) 'Deflated'\n+192AA2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+192AA6 CRC                   00000000 (0)\n+192AAA Compressed Size       00000000 (0)\n+192AAE Uncompressed Size     00000000 (0)\n+192AB2 Filename Length       003F (63)\n+192AB4 Extra Length          0000 (0)\n+192AB6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1880F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x192AB6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-188129 PAYLOAD\n+192AF5 PAYLOAD\n \n-18837B DATA DESCRIPTOR       08074B50 (134695760)\n-18837F CRC                   F2C44151 (4072948049)\n-188383 Compressed Size       00000252 (594)\n-188387 Uncompressed Size     000004A6 (1190)\n+192E66 DATA DESCRIPTOR       08074B50 (134695760)\n+192E6A CRC                   2E75446F (779437167)\n+192E6E Compressed Size       00000371 (881)\n+192E72 Uncompressed Size     00000819 (2073)\n \n-18838B LOCAL HEADER #1466    04034B50 (67324752)\n-18838F Extract Zip Spec      14 (20) '2.0'\n-188390 Extract OS            00 (0) 'MS-DOS'\n-188391 General Purpose Flag  0808 (2056)\n+192E76 LOCAL HEADER #1466    04034B50 (67324752)\n+192E7A Extract Zip Spec      14 (20) '2.0'\n+192E7B Extract OS            00 (0) 'MS-DOS'\n+192E7C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-188393 Compression Method    0008 (8) 'Deflated'\n-188395 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-188399 CRC                   00000000 (0)\n-18839D Compressed Size       00000000 (0)\n-1883A1 Uncompressed Size     00000000 (0)\n-1883A5 Filename Length       0031 (49)\n-1883A7 Extra Length          0000 (0)\n-1883A9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+192E7E Compression Method    0008 (8) 'Deflated'\n+192E80 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+192E84 CRC                   00000000 (0)\n+192E88 Compressed Size       00000000 (0)\n+192E8C Uncompressed Size     00000000 (0)\n+192E90 Filename Length       0046 (70)\n+192E92 Extra Length          0000 (0)\n+192E94 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1883A9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x192E94: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1883DA PAYLOAD\n+192EDA PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-18863C DATA DESCRIPTOR       08074B50 (134695760)\n-188640 CRC                   D40E78F4 (3557718260)\n-188644 Compressed Size       00000262 (610)\n-188648 Uncompressed Size     000004A8 (1192)\n+192F25 DATA DESCRIPTOR       08074B50 (134695760)\n+192F29 CRC                   D5DD6E04 (3588058628)\n+192F2D Compressed Size       0000004B (75)\n+192F31 Uncompressed Size     0000004E (78)\n \n-18864C LOCAL HEADER #1467    04034B50 (67324752)\n-188650 Extract Zip Spec      14 (20) '2.0'\n-188651 Extract OS            00 (0) 'MS-DOS'\n-188652 General Purpose Flag  0808 (2056)\n+192F35 LOCAL HEADER #1467    04034B50 (67324752)\n+192F39 Extract Zip Spec      14 (20) '2.0'\n+192F3A Extract OS            00 (0) 'MS-DOS'\n+192F3B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-188654 Compression Method    0008 (8) 'Deflated'\n-188656 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18865A CRC                   00000000 (0)\n-18865E Compressed Size       00000000 (0)\n-188662 Uncompressed Size     00000000 (0)\n-188666 Filename Length       0038 (56)\n-188668 Extra Length          0000 (0)\n-18866A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+192F3D Compression Method    0008 (8) 'Deflated'\n+192F3F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+192F43 CRC                   00000000 (0)\n+192F47 Compressed Size       00000000 (0)\n+192F4B Uncompressed Size     00000000 (0)\n+192F4F Filename Length       002B (43)\n+192F51 Extra Length          0000 (0)\n+192F53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18866A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x192F53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1886A2 PAYLOAD\n+192F7E PAYLOAD               XX\n \n-188973 DATA DESCRIPTOR       08074B50 (134695760)\n-188977 CRC                   2A63E263 (711189091)\n-18897B Compressed Size       000002D1 (721)\n-18897F Uncompressed Size     0000061D (1565)\n+192F80 DATA DESCRIPTOR       08074B50 (134695760)\n+192F84 CRC                   00000000 (0)\n+192F88 Compressed Size       00000002 (2)\n+192F8C Uncompressed Size     00000000 (0)\n \n-188983 LOCAL HEADER #1468    04034B50 (67324752)\n-188987 Extract Zip Spec      14 (20) '2.0'\n-188988 Extract OS            00 (0) 'MS-DOS'\n-188989 General Purpose Flag  0808 (2056)\n+192F90 LOCAL HEADER #1468    04034B50 (67324752)\n+192F94 Extract Zip Spec      14 (20) '2.0'\n+192F95 Extract OS            00 (0) 'MS-DOS'\n+192F96 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18898B Compression Method    0008 (8) 'Deflated'\n-18898D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-188991 CRC                   00000000 (0)\n-188995 Compressed Size       00000000 (0)\n-188999 Uncompressed Size     00000000 (0)\n-18899D Filename Length       0038 (56)\n-18899F Extra Length          0000 (0)\n-1889A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+192F98 Compression Method    0008 (8) 'Deflated'\n+192F9A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+192F9E CRC                   00000000 (0)\n+192FA2 Compressed Size       00000000 (0)\n+192FA6 Uncompressed Size     00000000 (0)\n+192FAA Filename Length       0043 (67)\n+192FAC Extra Length          0000 (0)\n+192FAE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1889A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x192FAE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1889D9 PAYLOAD\n+192FF1 PAYLOAD\n \n-188C03 DATA DESCRIPTOR       08074B50 (134695760)\n-188C07 CRC                   D473D979 (3564362105)\n-188C0B Compressed Size       0000022A (554)\n-188C0F Uncompressed Size     00000400 (1024)\n+193453 DATA DESCRIPTOR       08074B50 (134695760)\n+193457 CRC                   D893DDBD (3633569213)\n+19345B Compressed Size       00000462 (1122)\n+19345F Uncompressed Size     00000DBC (3516)\n \n-188C13 LOCAL HEADER #1469    04034B50 (67324752)\n-188C17 Extract Zip Spec      14 (20) '2.0'\n-188C18 Extract OS            00 (0) 'MS-DOS'\n-188C19 General Purpose Flag  0808 (2056)\n+193463 LOCAL HEADER #1469    04034B50 (67324752)\n+193467 Extract Zip Spec      14 (20) '2.0'\n+193468 Extract OS            00 (0) 'MS-DOS'\n+193469 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-188C1B Compression Method    0008 (8) 'Deflated'\n-188C1D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-188C21 CRC                   00000000 (0)\n-188C25 Compressed Size       00000000 (0)\n-188C29 Uncompressed Size     00000000 (0)\n-188C2D Filename Length       0028 (40)\n-188C2F Extra Length          0000 (0)\n-188C31 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19346B Compression Method    0008 (8) 'Deflated'\n+19346D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+193471 CRC                   00000000 (0)\n+193475 Compressed Size       00000000 (0)\n+193479 Uncompressed Size     00000000 (0)\n+19347D Filename Length       0044 (68)\n+19347F Extra Length          0000 (0)\n+193481 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x188C31: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x193481: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-188C59 PAYLOAD               XX\n+1934C5 PAYLOAD\n \n-188C5B DATA DESCRIPTOR       08074B50 (134695760)\n-188C5F CRC                   00000000 (0)\n-188C63 Compressed Size       00000002 (2)\n-188C67 Uncompressed Size     00000000 (0)\n+1938E5 DATA DESCRIPTOR       08074B50 (134695760)\n+1938E9 CRC                   C397AAA7 (3281496743)\n+1938ED Compressed Size       00000420 (1056)\n+1938F1 Uncompressed Size     00000D3F (3391)\n \n-188C6B LOCAL HEADER #1470    04034B50 (67324752)\n-188C6F Extract Zip Spec      14 (20) '2.0'\n-188C70 Extract OS            00 (0) 'MS-DOS'\n-188C71 General Purpose Flag  0808 (2056)\n+1938F5 LOCAL HEADER #1470    04034B50 (67324752)\n+1938F9 Extract Zip Spec      14 (20) '2.0'\n+1938FA Extract OS            00 (0) 'MS-DOS'\n+1938FB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-188C73 Compression Method    0008 (8) 'Deflated'\n-188C75 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-188C79 CRC                   00000000 (0)\n-188C7D Compressed Size       00000000 (0)\n-188C81 Uncompressed Size     00000000 (0)\n-188C85 Filename Length       0030 (48)\n-188C87 Extra Length          0000 (0)\n-188C89 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1938FD Compression Method    0008 (8) 'Deflated'\n+1938FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+193903 CRC                   00000000 (0)\n+193907 Compressed Size       00000000 (0)\n+19390B Uncompressed Size     00000000 (0)\n+19390F Filename Length       0045 (69)\n+193911 Extra Length          0000 (0)\n+193913 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x188C89: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x193913: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-188CB9 PAYLOAD\n+193958 PAYLOAD\n \n-188F7B DATA DESCRIPTOR       08074B50 (134695760)\n-188F7F CRC                   45D6532E (1171673902)\n-188F83 Compressed Size       000002C2 (706)\n-188F87 Uncompressed Size     00000647 (1607)\n+193C96 DATA DESCRIPTOR       08074B50 (134695760)\n+193C9A CRC                   33E433F6 (870593526)\n+193C9E Compressed Size       0000033E (830)\n+193CA2 Uncompressed Size     000007F6 (2038)\n \n-188F8B LOCAL HEADER #1471    04034B50 (67324752)\n-188F8F Extract Zip Spec      14 (20) '2.0'\n-188F90 Extract OS            00 (0) 'MS-DOS'\n-188F91 General Purpose Flag  0808 (2056)\n+193CA6 LOCAL HEADER #1471    04034B50 (67324752)\n+193CAA Extract Zip Spec      14 (20) '2.0'\n+193CAB Extract OS            00 (0) 'MS-DOS'\n+193CAC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-188F93 Compression Method    0008 (8) 'Deflated'\n-188F95 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-188F99 CRC                   00000000 (0)\n-188F9D Compressed Size       00000000 (0)\n-188FA1 Uncompressed Size     00000000 (0)\n-188FA5 Filename Length       0025 (37)\n-188FA7 Extra Length          0000 (0)\n-188FA9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+193CAE Compression Method    0008 (8) 'Deflated'\n+193CB0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+193CB4 CRC                   00000000 (0)\n+193CB8 Compressed Size       00000000 (0)\n+193CBC Uncompressed Size     00000000 (0)\n+193CC0 Filename Length       0049 (73)\n+193CC2 Extra Length          0000 (0)\n+193CC4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x188FA9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x193CC4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-188FCE PAYLOAD               XX\n+193D0D PAYLOAD\n \n-188FD0 DATA DESCRIPTOR       08074B50 (134695760)\n-188FD4 CRC                   00000000 (0)\n-188FD8 Compressed Size       00000002 (2)\n-188FDC Uncompressed Size     00000000 (0)\n+193F7B DATA DESCRIPTOR       08074B50 (134695760)\n+193F7F CRC                   ED1EB0B7 (3978211511)\n+193F83 Compressed Size       0000026E (622)\n+193F87 Uncompressed Size     000004A5 (1189)\n \n-188FE0 LOCAL HEADER #1472    04034B50 (67324752)\n-188FE4 Extract Zip Spec      14 (20) '2.0'\n-188FE5 Extract OS            00 (0) 'MS-DOS'\n-188FE6 General Purpose Flag  0808 (2056)\n+193F8B LOCAL HEADER #1472    04034B50 (67324752)\n+193F8F Extract Zip Spec      14 (20) '2.0'\n+193F90 Extract OS            00 (0) 'MS-DOS'\n+193F91 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-188FE8 Compression Method    0008 (8) 'Deflated'\n-188FEA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-188FEE CRC                   00000000 (0)\n-188FF2 Compressed Size       00000000 (0)\n-188FF6 Uncompressed Size     00000000 (0)\n-188FFA Filename Length       003C (60)\n-188FFC Extra Length          0000 (0)\n-188FFE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+193F93 Compression Method    0008 (8) 'Deflated'\n+193F95 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+193F99 CRC                   00000000 (0)\n+193F9D Compressed Size       00000000 (0)\n+193FA1 Uncompressed Size     00000000 (0)\n+193FA5 Filename Length       0031 (49)\n+193FA7 Extra Length          0000 (0)\n+193FA9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x188FFE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x193FA9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18903A PAYLOAD\n+193FDA PAYLOAD               XX\n \n-1894DD DATA DESCRIPTOR       08074B50 (134695760)\n-1894E1 CRC                   D812ECFA (3625118970)\n-1894E5 Compressed Size       000004A3 (1187)\n-1894E9 Uncompressed Size     00000F93 (3987)\n+193FDC DATA DESCRIPTOR       08074B50 (134695760)\n+193FE0 CRC                   00000000 (0)\n+193FE4 Compressed Size       00000002 (2)\n+193FE8 Uncompressed Size     00000000 (0)\n \n-1894ED LOCAL HEADER #1473    04034B50 (67324752)\n-1894F1 Extract Zip Spec      14 (20) '2.0'\n-1894F2 Extract OS            00 (0) 'MS-DOS'\n-1894F3 General Purpose Flag  0808 (2056)\n+193FEC LOCAL HEADER #1473    04034B50 (67324752)\n+193FF0 Extract Zip Spec      14 (20) '2.0'\n+193FF1 Extract OS            00 (0) 'MS-DOS'\n+193FF2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1894F5 Compression Method    0008 (8) 'Deflated'\n-1894F7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1894FB CRC                   00000000 (0)\n-1894FF Compressed Size       00000000 (0)\n-189503 Uncompressed Size     00000000 (0)\n-189507 Filename Length       003E (62)\n-189509 Extra Length          0000 (0)\n-18950B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+193FF4 Compression Method    0008 (8) 'Deflated'\n+193FF6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+193FFA CRC                   00000000 (0)\n+193FFE Compressed Size       00000000 (0)\n+194002 Uncompressed Size     00000000 (0)\n+194006 Filename Length       0058 (88)\n+194008 Extra Length          0000 (0)\n+19400A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18950B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19400A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-189549 PAYLOAD\n+194062 PAYLOAD\n \n-189858 DATA DESCRIPTOR       08074B50 (134695760)\n-18985C CRC                   E1096065 (3775488101)\n-189860 Compressed Size       0000030F (783)\n-189864 Uncompressed Size     000006BD (1725)\n+19431C DATA DESCRIPTOR       08074B50 (134695760)\n+194320 CRC                   589CDBF7 (1486674935)\n+194324 Compressed Size       000002BA (698)\n+194328 Uncompressed Size     000005CC (1484)\n \n-189868 LOCAL HEADER #1474    04034B50 (67324752)\n-18986C Extract Zip Spec      14 (20) '2.0'\n-18986D Extract OS            00 (0) 'MS-DOS'\n-18986E General Purpose Flag  0808 (2056)\n+19432C LOCAL HEADER #1474    04034B50 (67324752)\n+194330 Extract Zip Spec      14 (20) '2.0'\n+194331 Extract OS            00 (0) 'MS-DOS'\n+194332 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-189870 Compression Method    0008 (8) 'Deflated'\n-189872 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-189876 CRC                   00000000 (0)\n-18987A Compressed Size       00000000 (0)\n-18987E Uncompressed Size     00000000 (0)\n-189882 Filename Length       0022 (34)\n-189884 Extra Length          0000 (0)\n-189886 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+194334 Compression Method    0008 (8) 'Deflated'\n+194336 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19433A CRC                   00000000 (0)\n+19433E Compressed Size       00000000 (0)\n+194342 Uncompressed Size     00000000 (0)\n+194346 Filename Length       0057 (87)\n+194348 Extra Length          0000 (0)\n+19434A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x189886: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19434A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1898A8 PAYLOAD               XX\n+1943A1 PAYLOAD\n \n-1898AA DATA DESCRIPTOR       08074B50 (134695760)\n-1898AE CRC                   00000000 (0)\n-1898B2 Compressed Size       00000002 (2)\n-1898B6 Uncompressed Size     00000000 (0)\n+194615 DATA DESCRIPTOR       08074B50 (134695760)\n+194619 CRC                   35094442 (889799746)\n+19461D Compressed Size       00000274 (628)\n+194621 Uncompressed Size     000004E2 (1250)\n \n-1898BA LOCAL HEADER #1475    04034B50 (67324752)\n-1898BE Extract Zip Spec      14 (20) '2.0'\n-1898BF Extract OS            00 (0) 'MS-DOS'\n-1898C0 General Purpose Flag  0808 (2056)\n+194625 LOCAL HEADER #1475    04034B50 (67324752)\n+194629 Extract Zip Spec      14 (20) '2.0'\n+19462A Extract OS            00 (0) 'MS-DOS'\n+19462B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1898C2 Compression Method    0008 (8) 'Deflated'\n-1898C4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1898C8 CRC                   00000000 (0)\n-1898CC Compressed Size       00000000 (0)\n-1898D0 Uncompressed Size     00000000 (0)\n-1898D4 Filename Length       002B (43)\n-1898D6 Extra Length          0000 (0)\n-1898D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19462D Compression Method    0008 (8) 'Deflated'\n+19462F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+194633 CRC                   00000000 (0)\n+194637 Compressed Size       00000000 (0)\n+19463B Uncompressed Size     00000000 (0)\n+19463F Filename Length       0050 (80)\n+194641 Extra Length          0000 (0)\n+194643 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1898D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x194643: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-189903 PAYLOAD\n+194693 PAYLOAD\n \n-189DF7 DATA DESCRIPTOR       08074B50 (134695760)\n-189DFB CRC                   86EEED41 (2263805249)\n-189DFF Compressed Size       000004F4 (1268)\n-189E03 Uncompressed Size     00000E84 (3716)\n+1949C1 DATA DESCRIPTOR       08074B50 (134695760)\n+1949C5 CRC                   F8518504 (4166092036)\n+1949C9 Compressed Size       0000032E (814)\n+1949CD Uncompressed Size     00000754 (1876)\n \n-189E07 LOCAL HEADER #1476    04034B50 (67324752)\n-189E0B Extract Zip Spec      14 (20) '2.0'\n-189E0C Extract OS            00 (0) 'MS-DOS'\n-189E0D General Purpose Flag  0808 (2056)\n+1949D1 LOCAL HEADER #1476    04034B50 (67324752)\n+1949D5 Extract Zip Spec      14 (20) '2.0'\n+1949D6 Extract OS            00 (0) 'MS-DOS'\n+1949D7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-189E0F Compression Method    0008 (8) 'Deflated'\n-189E11 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-189E15 CRC                   00000000 (0)\n-189E19 Compressed Size       00000000 (0)\n-189E1D Uncompressed Size     00000000 (0)\n-189E21 Filename Length       0029 (41)\n-189E23 Extra Length          0000 (0)\n-189E25 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1949D9 Compression Method    0008 (8) 'Deflated'\n+1949DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1949DF CRC                   00000000 (0)\n+1949E3 Compressed Size       00000000 (0)\n+1949E7 Uncompressed Size     00000000 (0)\n+1949EB Filename Length       0059 (89)\n+1949ED Extra Length          0000 (0)\n+1949EF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x189E25: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1949EF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-189E4E PAYLOAD\n+194A48 PAYLOAD\n \n-18A287 DATA DESCRIPTOR       08074B50 (134695760)\n-18A28B CRC                   1E97BBCE (513260494)\n-18A28F Compressed Size       00000439 (1081)\n-18A293 Uncompressed Size     00000D38 (3384)\n+194DD1 DATA DESCRIPTOR       08074B50 (134695760)\n+194DD5 CRC                   C6552311 (3327468305)\n+194DD9 Compressed Size       00000389 (905)\n+194DDD Uncompressed Size     000008C4 (2244)\n \n-18A297 LOCAL HEADER #1477    04034B50 (67324752)\n-18A29B Extract Zip Spec      14 (20) '2.0'\n-18A29C Extract OS            00 (0) 'MS-DOS'\n-18A29D General Purpose Flag  0808 (2056)\n+194DE1 LOCAL HEADER #1477    04034B50 (67324752)\n+194DE5 Extract Zip Spec      14 (20) '2.0'\n+194DE6 Extract OS            00 (0) 'MS-DOS'\n+194DE7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18A29F Compression Method    0008 (8) 'Deflated'\n-18A2A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18A2A5 CRC                   00000000 (0)\n-18A2A9 Compressed Size       00000000 (0)\n-18A2AD Uncompressed Size     00000000 (0)\n-18A2B1 Filename Length       002E (46)\n-18A2B3 Extra Length          0000 (0)\n-18A2B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+194DE9 Compression Method    0008 (8) 'Deflated'\n+194DEB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+194DEF CRC                   00000000 (0)\n+194DF3 Compressed Size       00000000 (0)\n+194DF7 Uncompressed Size     00000000 (0)\n+194DFB Filename Length       0063 (99)\n+194DFD Extra Length          0000 (0)\n+194DFF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18A2B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x194DFF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18A2E3 PAYLOAD\n+194E62 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-18A789 DATA DESCRIPTOR       08074B50 (134695760)\n-18A78D CRC                   5DD1BF6F (1574027119)\n-18A791 Compressed Size       000004A6 (1190)\n-18A795 Uncompressed Size     00000D02 (3330)\n+194EBD DATA DESCRIPTOR       08074B50 (134695760)\n+194EC1 CRC                   87B990A8 (2277085352)\n+194EC5 Compressed Size       0000005B (91)\n+194EC9 Uncompressed Size     000000BA (186)\n \n-18A799 LOCAL HEADER #1478    04034B50 (67324752)\n-18A79D Extract Zip Spec      14 (20) '2.0'\n-18A79E Extract OS            00 (0) 'MS-DOS'\n-18A79F General Purpose Flag  0808 (2056)\n+194ECD LOCAL HEADER #1478    04034B50 (67324752)\n+194ED1 Extract Zip Spec      14 (20) '2.0'\n+194ED2 Extract OS            00 (0) 'MS-DOS'\n+194ED3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18A7A1 Compression Method    0008 (8) 'Deflated'\n-18A7A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18A7A7 CRC                   00000000 (0)\n-18A7AB Compressed Size       00000000 (0)\n-18A7AF Uncompressed Size     00000000 (0)\n-18A7B3 Filename Length       002D (45)\n-18A7B5 Extra Length          0000 (0)\n-18A7B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+194ED5 Compression Method    0008 (8) 'Deflated'\n+194ED7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+194EDB CRC                   00000000 (0)\n+194EDF Compressed Size       00000000 (0)\n+194EE3 Uncompressed Size     00000000 (0)\n+194EE7 Filename Length       003D (61)\n+194EE9 Extra Length          0000 (0)\n+194EEB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18A7B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x194EEB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18A7E4 PAYLOAD\n+194F28 PAYLOAD               XX\n \n-18AC95 DATA DESCRIPTOR       08074B50 (134695760)\n-18AC99 CRC                   677CD800 (1736235008)\n-18AC9D Compressed Size       000004B1 (1201)\n-18ACA1 Uncompressed Size     00000D35 (3381)\n+194F2A DATA DESCRIPTOR       08074B50 (134695760)\n+194F2E CRC                   00000000 (0)\n+194F32 Compressed Size       00000002 (2)\n+194F36 Uncompressed Size     00000000 (0)\n \n-18ACA5 LOCAL HEADER #1479    04034B50 (67324752)\n-18ACA9 Extract Zip Spec      14 (20) '2.0'\n-18ACAA Extract OS            00 (0) 'MS-DOS'\n-18ACAB General Purpose Flag  0808 (2056)\n+194F3A LOCAL HEADER #1479    04034B50 (67324752)\n+194F3E Extract Zip Spec      14 (20) '2.0'\n+194F3F Extract OS            00 (0) 'MS-DOS'\n+194F40 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18ACAD Compression Method    0008 (8) 'Deflated'\n-18ACAF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18ACB3 CRC                   00000000 (0)\n-18ACB7 Compressed Size       00000000 (0)\n-18ACBB Uncompressed Size     00000000 (0)\n-18ACBF Filename Length       0036 (54)\n-18ACC1 Extra Length          0000 (0)\n-18ACC3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+194F42 Compression Method    0008 (8) 'Deflated'\n+194F44 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+194F48 CRC                   00000000 (0)\n+194F4C Compressed Size       00000000 (0)\n+194F50 Uncompressed Size     00000000 (0)\n+194F54 Filename Length       0044 (68)\n+194F56 Extra Length          0000 (0)\n+194F58 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18ACC3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x194F58: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18ACF9 PAYLOAD\n+194F9C PAYLOAD\n \n-18B189 DATA DESCRIPTOR       08074B50 (134695760)\n-18B18D CRC                   15091C1F (352918559)\n-18B191 Compressed Size       00000490 (1168)\n-18B195 Uncompressed Size     00000B30 (2864)\n+19530B DATA DESCRIPTOR       08074B50 (134695760)\n+19530F CRC                   7063BECD (1885585101)\n+195313 Compressed Size       0000036F (879)\n+195317 Uncompressed Size     0000080C (2060)\n \n-18B199 LOCAL HEADER #1480    04034B50 (67324752)\n-18B19D Extract Zip Spec      14 (20) '2.0'\n-18B19E Extract OS            00 (0) 'MS-DOS'\n-18B19F General Purpose Flag  0808 (2056)\n+19531B LOCAL HEADER #1480    04034B50 (67324752)\n+19531F Extract Zip Spec      14 (20) '2.0'\n+195320 Extract OS            00 (0) 'MS-DOS'\n+195321 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18B1A1 Compression Method    0008 (8) 'Deflated'\n-18B1A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18B1A7 CRC                   00000000 (0)\n-18B1AB Compressed Size       00000000 (0)\n-18B1AF Uncompressed Size     00000000 (0)\n-18B1B3 Filename Length       002B (43)\n-18B1B5 Extra Length          0000 (0)\n-18B1B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+195323 Compression Method    0008 (8) 'Deflated'\n+195325 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+195329 CRC                   00000000 (0)\n+19532D Compressed Size       00000000 (0)\n+195331 Uncompressed Size     00000000 (0)\n+195335 Filename Length       004B (75)\n+195337 Extra Length          0000 (0)\n+195339 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18B1B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x195339: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18B1E2 PAYLOAD\n+195384 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-18B46F DATA DESCRIPTOR       08074B50 (134695760)\n-18B473 CRC                   AADA64B2 (2866439346)\n-18B477 Compressed Size       0000028D (653)\n-18B47B Uncompressed Size     00000519 (1305)\n+1953D3 DATA DESCRIPTOR       08074B50 (134695760)\n+1953D7 CRC                   9BC53808 (2613393416)\n+1953DB Compressed Size       0000004F (79)\n+1953DF Uncompressed Size     00000053 (83)\n \n-18B47F LOCAL HEADER #1481    04034B50 (67324752)\n-18B483 Extract Zip Spec      14 (20) '2.0'\n-18B484 Extract OS            00 (0) 'MS-DOS'\n-18B485 General Purpose Flag  0808 (2056)\n+1953E3 LOCAL HEADER #1481    04034B50 (67324752)\n+1953E7 Extract Zip Spec      14 (20) '2.0'\n+1953E8 Extract OS            00 (0) 'MS-DOS'\n+1953E9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18B487 Compression Method    0008 (8) 'Deflated'\n-18B489 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18B48D CRC                   00000000 (0)\n-18B491 Compressed Size       00000000 (0)\n-18B495 Uncompressed Size     00000000 (0)\n-18B499 Filename Length       002C (44)\n-18B49B Extra Length          0000 (0)\n-18B49D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1953EB Compression Method    0008 (8) 'Deflated'\n+1953ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1953F1 CRC                   00000000 (0)\n+1953F5 Compressed Size       00000000 (0)\n+1953F9 Uncompressed Size     00000000 (0)\n+1953FD Filename Length       001B (27)\n+1953FF Extra Length          0000 (0)\n+195401 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18B49D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x195401: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18B4C9 PAYLOAD\n+19541C PAYLOAD               XX\n \n-18BAB0 DATA DESCRIPTOR       08074B50 (134695760)\n-18BAB4 CRC                   CD1091C2 (3440415170)\n-18BAB8 Compressed Size       000005E7 (1511)\n-18BABC Uncompressed Size     00001084 (4228)\n+19541E DATA DESCRIPTOR       08074B50 (134695760)\n+195422 CRC                   00000000 (0)\n+195426 Compressed Size       00000002 (2)\n+19542A Uncompressed Size     00000000 (0)\n \n-18BAC0 LOCAL HEADER #1482    04034B50 (67324752)\n-18BAC4 Extract Zip Spec      14 (20) '2.0'\n-18BAC5 Extract OS            00 (0) 'MS-DOS'\n-18BAC6 General Purpose Flag  0808 (2056)\n+19542E LOCAL HEADER #1482    04034B50 (67324752)\n+195432 Extract Zip Spec      14 (20) '2.0'\n+195433 Extract OS            00 (0) 'MS-DOS'\n+195434 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18BAC8 Compression Method    0008 (8) 'Deflated'\n-18BACA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18BACE CRC                   00000000 (0)\n-18BAD2 Compressed Size       00000000 (0)\n-18BAD6 Uncompressed Size     00000000 (0)\n-18BADA Filename Length       002E (46)\n-18BADC Extra Length          0000 (0)\n-18BADE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+195436 Compression Method    0008 (8) 'Deflated'\n+195438 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19543C CRC                   00000000 (0)\n+195440 Compressed Size       00000000 (0)\n+195444 Uncompressed Size     00000000 (0)\n+195448 Filename Length       0023 (35)\n+19544A Extra Length          0000 (0)\n+19544C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18BADE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19544C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18BB0C PAYLOAD\n+19546F PAYLOAD               XX\n \n-18BDCB DATA DESCRIPTOR       08074B50 (134695760)\n-18BDCF CRC                   CA6DC12E (3396190510)\n-18BDD3 Compressed Size       000002BF (703)\n-18BDD7 Uncompressed Size     00000600 (1536)\n+195471 DATA DESCRIPTOR       08074B50 (134695760)\n+195475 CRC                   00000000 (0)\n+195479 Compressed Size       00000002 (2)\n+19547D Uncompressed Size     00000000 (0)\n \n-18BDDB LOCAL HEADER #1483    04034B50 (67324752)\n-18BDDF Extract Zip Spec      14 (20) '2.0'\n-18BDE0 Extract OS            00 (0) 'MS-DOS'\n-18BDE1 General Purpose Flag  0808 (2056)\n+195481 LOCAL HEADER #1483    04034B50 (67324752)\n+195485 Extract Zip Spec      14 (20) '2.0'\n+195486 Extract OS            00 (0) 'MS-DOS'\n+195487 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18BDE3 Compression Method    0008 (8) 'Deflated'\n-18BDE5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18BDE9 CRC                   00000000 (0)\n-18BDED Compressed Size       00000000 (0)\n-18BDF1 Uncompressed Size     00000000 (0)\n-18BDF5 Filename Length       0022 (34)\n-18BDF7 Extra Length          0000 (0)\n-18BDF9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+195489 Compression Method    0008 (8) 'Deflated'\n+19548B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19548F CRC                   00000000 (0)\n+195493 Compressed Size       00000000 (0)\n+195497 Uncompressed Size     00000000 (0)\n+19549B Filename Length       003B (59)\n+19549D Extra Length          0000 (0)\n+19549F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18BDF9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19549F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18BE1B PAYLOAD               XX\n+1954DA PAYLOAD\n \n-18BE1D DATA DESCRIPTOR       08074B50 (134695760)\n-18BE21 CRC                   00000000 (0)\n-18BE25 Compressed Size       00000002 (2)\n-18BE29 Uncompressed Size     00000000 (0)\n+19586F DATA DESCRIPTOR       08074B50 (134695760)\n+195873 CRC                   ED7C06AB (3984328363)\n+195877 Compressed Size       00000395 (917)\n+19587B Uncompressed Size     00000AE6 (2790)\n \n-18BE2D LOCAL HEADER #1484    04034B50 (67324752)\n-18BE31 Extract Zip Spec      14 (20) '2.0'\n-18BE32 Extract OS            00 (0) 'MS-DOS'\n-18BE33 General Purpose Flag  0808 (2056)\n+19587F LOCAL HEADER #1484    04034B50 (67324752)\n+195883 Extract Zip Spec      14 (20) '2.0'\n+195884 Extract OS            00 (0) 'MS-DOS'\n+195885 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18BE35 Compression Method    0008 (8) 'Deflated'\n-18BE37 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18BE3B CRC                   00000000 (0)\n-18BE3F Compressed Size       00000000 (0)\n-18BE43 Uncompressed Size     00000000 (0)\n-18BE47 Filename Length       0034 (52)\n-18BE49 Extra Length          0000 (0)\n-18BE4B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+195887 Compression Method    0008 (8) 'Deflated'\n+195889 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19588D CRC                   00000000 (0)\n+195891 Compressed Size       00000000 (0)\n+195895 Uncompressed Size     00000000 (0)\n+195899 Filename Length       003C (60)\n+19589B Extra Length          0000 (0)\n+19589D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18BE4B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19589D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18BE7F PAYLOAD\n+1958D9 PAYLOAD\n \n-18C1C7 DATA DESCRIPTOR       08074B50 (134695760)\n-18C1CB CRC                   8BEA30C0 (2347380928)\n-18C1CF Compressed Size       00000348 (840)\n-18C1D3 Uncompressed Size     00000893 (2195)\n+195C32 DATA DESCRIPTOR       08074B50 (134695760)\n+195C36 CRC                   86102534 (2249205044)\n+195C3A Compressed Size       00000359 (857)\n+195C3E Uncompressed Size     00000AAA (2730)\n \n-18C1D7 LOCAL HEADER #1485    04034B50 (67324752)\n-18C1DB Extract Zip Spec      14 (20) '2.0'\n-18C1DC Extract OS            00 (0) 'MS-DOS'\n-18C1DD General Purpose Flag  0808 (2056)\n+195C42 LOCAL HEADER #1485    04034B50 (67324752)\n+195C46 Extract Zip Spec      14 (20) '2.0'\n+195C47 Extract OS            00 (0) 'MS-DOS'\n+195C48 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18C1DF Compression Method    0008 (8) 'Deflated'\n-18C1E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18C1E5 CRC                   00000000 (0)\n-18C1E9 Compressed Size       00000000 (0)\n-18C1ED Uncompressed Size     00000000 (0)\n-18C1F1 Filename Length       0038 (56)\n-18C1F3 Extra Length          0000 (0)\n-18C1F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+195C4A Compression Method    0008 (8) 'Deflated'\n+195C4C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+195C50 CRC                   00000000 (0)\n+195C54 Compressed Size       00000000 (0)\n+195C58 Uncompressed Size     00000000 (0)\n+195C5C Filename Length       003D (61)\n+195C5E Extra Length          0000 (0)\n+195C60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18C1F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x195C60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18C22D PAYLOAD\n+195C9D PAYLOAD\n \n-18C60A DATA DESCRIPTOR       08074B50 (134695760)\n-18C60E CRC                   9A0D91FA (2584580602)\n-18C612 Compressed Size       000003DD (989)\n-18C616 Uncompressed Size     00000A9D (2717)\n+195F98 DATA DESCRIPTOR       08074B50 (134695760)\n+195F9C CRC                   D9C4B6B2 (3653547698)\n+195FA0 Compressed Size       000002FB (763)\n+195FA4 Uncompressed Size     0000073C (1852)\n \n-18C61A LOCAL HEADER #1486    04034B50 (67324752)\n-18C61E Extract Zip Spec      14 (20) '2.0'\n-18C61F Extract OS            00 (0) 'MS-DOS'\n-18C620 General Purpose Flag  0808 (2056)\n+195FA8 LOCAL HEADER #1486    04034B50 (67324752)\n+195FAC Extract Zip Spec      14 (20) '2.0'\n+195FAD Extract OS            00 (0) 'MS-DOS'\n+195FAE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18C622 Compression Method    0008 (8) 'Deflated'\n-18C624 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18C628 CRC                   00000000 (0)\n-18C62C Compressed Size       00000000 (0)\n-18C630 Uncompressed Size     00000000 (0)\n-18C634 Filename Length       001C (28)\n-18C636 Extra Length          0000 (0)\n-18C638 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+195FB0 Compression Method    0008 (8) 'Deflated'\n+195FB2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+195FB6 CRC                   00000000 (0)\n+195FBA Compressed Size       00000000 (0)\n+195FBE Uncompressed Size     00000000 (0)\n+195FC2 Filename Length       0041 (65)\n+195FC4 Extra Length          0000 (0)\n+195FC6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18C638: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x195FC6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18C654 PAYLOAD               XX\n+196007 PAYLOAD\n \n-18C656 DATA DESCRIPTOR       08074B50 (134695760)\n-18C65A CRC                   00000000 (0)\n-18C65E Compressed Size       00000002 (2)\n-18C662 Uncompressed Size     00000000 (0)\n+1962F6 DATA DESCRIPTOR       08074B50 (134695760)\n+1962FA CRC                   5DF61F16 (1576410902)\n+1962FE Compressed Size       000002EF (751)\n+196302 Uncompressed Size     00000733 (1843)\n \n-18C666 LOCAL HEADER #1487    04034B50 (67324752)\n-18C66A Extract Zip Spec      14 (20) '2.0'\n-18C66B Extract OS            00 (0) 'MS-DOS'\n-18C66C General Purpose Flag  0808 (2056)\n+196306 LOCAL HEADER #1487    04034B50 (67324752)\n+19630A Extract Zip Spec      14 (20) '2.0'\n+19630B Extract OS            00 (0) 'MS-DOS'\n+19630C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18C66E Compression Method    0008 (8) 'Deflated'\n-18C670 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18C674 CRC                   00000000 (0)\n-18C678 Compressed Size       00000000 (0)\n-18C67C Uncompressed Size     00000000 (0)\n-18C680 Filename Length       002D (45)\n-18C682 Extra Length          0000 (0)\n-18C684 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19630E Compression Method    0008 (8) 'Deflated'\n+196310 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+196314 CRC                   00000000 (0)\n+196318 Compressed Size       00000000 (0)\n+19631C Uncompressed Size     00000000 (0)\n+196320 Filename Length       003E (62)\n+196322 Extra Length          0000 (0)\n+196324 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18C684: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x196324: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18C6B1 PAYLOAD\n+196362 PAYLOAD\n \n-18C8EC DATA DESCRIPTOR       08074B50 (134695760)\n-18C8F0 CRC                   93C23403 (2478978051)\n-18C8F4 Compressed Size       0000023B (571)\n-18C8F8 Uncompressed Size     000003DE (990)\n+1967DD DATA DESCRIPTOR       08074B50 (134695760)\n+1967E1 CRC                   B4FAC75F (3036333919)\n+1967E5 Compressed Size       0000047B (1147)\n+1967E9 Uncompressed Size     00001227 (4647)\n \n-18C8FC LOCAL HEADER #1488    04034B50 (67324752)\n-18C900 Extract Zip Spec      14 (20) '2.0'\n-18C901 Extract OS            00 (0) 'MS-DOS'\n-18C902 General Purpose Flag  0808 (2056)\n+1967ED LOCAL HEADER #1488    04034B50 (67324752)\n+1967F1 Extract Zip Spec      14 (20) '2.0'\n+1967F2 Extract OS            00 (0) 'MS-DOS'\n+1967F3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18C904 Compression Method    0008 (8) 'Deflated'\n-18C906 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18C90A CRC                   00000000 (0)\n-18C90E Compressed Size       00000000 (0)\n-18C912 Uncompressed Size     00000000 (0)\n-18C916 Filename Length       001C (28)\n-18C918 Extra Length          0000 (0)\n-18C91A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1967F5 Compression Method    0008 (8) 'Deflated'\n+1967F7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1967FB CRC                   00000000 (0)\n+1967FF Compressed Size       00000000 (0)\n+196803 Uncompressed Size     00000000 (0)\n+196807 Filename Length       002E (46)\n+196809 Extra Length          0000 (0)\n+19680B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18C91A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19680B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18C936 PAYLOAD               XX\n+196839 PAYLOAD               XX\n \n-18C938 DATA DESCRIPTOR       08074B50 (134695760)\n-18C93C CRC                   00000000 (0)\n-18C940 Compressed Size       00000002 (2)\n-18C944 Uncompressed Size     00000000 (0)\n+19683B DATA DESCRIPTOR       08074B50 (134695760)\n+19683F CRC                   00000000 (0)\n+196843 Compressed Size       00000002 (2)\n+196847 Uncompressed Size     00000000 (0)\n \n-18C948 LOCAL HEADER #1489    04034B50 (67324752)\n-18C94C Extract Zip Spec      14 (20) '2.0'\n-18C94D Extract OS            00 (0) 'MS-DOS'\n-18C94E General Purpose Flag  0808 (2056)\n+19684B LOCAL HEADER #1489    04034B50 (67324752)\n+19684F Extract Zip Spec      14 (20) '2.0'\n+196850 Extract OS            00 (0) 'MS-DOS'\n+196851 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18C950 Compression Method    0008 (8) 'Deflated'\n-18C952 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18C956 CRC                   00000000 (0)\n-18C95A Compressed Size       00000000 (0)\n-18C95E Uncompressed Size     00000000 (0)\n-18C962 Filename Length       0034 (52)\n-18C964 Extra Length          0000 (0)\n-18C966 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+196853 Compression Method    0008 (8) 'Deflated'\n+196855 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+196859 CRC                   00000000 (0)\n+19685D Compressed Size       00000000 (0)\n+196861 Uncompressed Size     00000000 (0)\n+196865 Filename Length       0034 (52)\n+196867 Extra Length          0000 (0)\n+196869 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18C966: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x196869: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18C99A PAYLOAD\n+19689D PAYLOAD               XX\n \n-18CE05 DATA DESCRIPTOR       08074B50 (134695760)\n-18CE09 CRC                   FA05AB13 (4194675475)\n-18CE0D Compressed Size       0000046B (1131)\n-18CE11 Uncompressed Size     00000B10 (2832)\n+19689F DATA DESCRIPTOR       08074B50 (134695760)\n+1968A3 CRC                   00000000 (0)\n+1968A7 Compressed Size       00000002 (2)\n+1968AB Uncompressed Size     00000000 (0)\n \n-18CE15 LOCAL HEADER #1490    04034B50 (67324752)\n-18CE19 Extract Zip Spec      14 (20) '2.0'\n-18CE1A Extract OS            00 (0) 'MS-DOS'\n-18CE1B General Purpose Flag  0808 (2056)\n+1968AF LOCAL HEADER #1490    04034B50 (67324752)\n+1968B3 Extract Zip Spec      14 (20) '2.0'\n+1968B4 Extract OS            00 (0) 'MS-DOS'\n+1968B5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18CE1D Compression Method    0008 (8) 'Deflated'\n-18CE1F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18CE23 CRC                   00000000 (0)\n-18CE27 Compressed Size       00000000 (0)\n-18CE2B Uncompressed Size     00000000 (0)\n-18CE2F Filename Length       0033 (51)\n-18CE31 Extra Length          0000 (0)\n-18CE33 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1968B7 Compression Method    0008 (8) 'Deflated'\n+1968B9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1968BD CRC                   00000000 (0)\n+1968C1 Compressed Size       00000000 (0)\n+1968C5 Uncompressed Size     00000000 (0)\n+1968C9 Filename Length       0047 (71)\n+1968CB Extra Length          0000 (0)\n+1968CD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18CE33: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1968CD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18CE66 PAYLOAD\n+196914 PAYLOAD\n \n-18D631 DATA DESCRIPTOR       08074B50 (134695760)\n-18D635 CRC                   4A88912B (1250464043)\n-18D639 Compressed Size       000007CB (1995)\n-18D63D Uncompressed Size     00001A65 (6757)\n+196C25 DATA DESCRIPTOR       08074B50 (134695760)\n+196C29 CRC                   B981B5EA (3112285674)\n+196C2D Compressed Size       00000311 (785)\n+196C31 Uncompressed Size     000006AF (1711)\n \n-18D641 LOCAL HEADER #1491    04034B50 (67324752)\n-18D645 Extract Zip Spec      14 (20) '2.0'\n-18D646 Extract OS            00 (0) 'MS-DOS'\n-18D647 General Purpose Flag  0808 (2056)\n+196C35 LOCAL HEADER #1491    04034B50 (67324752)\n+196C39 Extract Zip Spec      14 (20) '2.0'\n+196C3A Extract OS            00 (0) 'MS-DOS'\n+196C3B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18D649 Compression Method    0008 (8) 'Deflated'\n-18D64B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18D64F CRC                   00000000 (0)\n-18D653 Compressed Size       00000000 (0)\n-18D657 Uncompressed Size     00000000 (0)\n-18D65B Filename Length       0035 (53)\n-18D65D Extra Length          0000 (0)\n-18D65F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+196C3D Compression Method    0008 (8) 'Deflated'\n+196C3F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+196C43 CRC                   00000000 (0)\n+196C47 Compressed Size       00000000 (0)\n+196C4B Uncompressed Size     00000000 (0)\n+196C4F Filename Length       0046 (70)\n+196C51 Extra Length          0000 (0)\n+196C53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18D65F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x196C53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18D694 PAYLOAD\n+196C99 PAYLOAD\n \n-18D9D7 DATA DESCRIPTOR       08074B50 (134695760)\n-18D9DB CRC                   0FA20D48 (262278472)\n-18D9DF Compressed Size       00000343 (835)\n-18D9E3 Uncompressed Size     000006EF (1775)\n+196FAE DATA DESCRIPTOR       08074B50 (134695760)\n+196FB2 CRC                   D04429D3 (3494128083)\n+196FB6 Compressed Size       00000315 (789)\n+196FBA Uncompressed Size     000006AF (1711)\n \n-18D9E7 LOCAL HEADER #1492    04034B50 (67324752)\n-18D9EB Extract Zip Spec      14 (20) '2.0'\n-18D9EC Extract OS            00 (0) 'MS-DOS'\n-18D9ED General Purpose Flag  0808 (2056)\n+196FBE LOCAL HEADER #1492    04034B50 (67324752)\n+196FC2 Extract Zip Spec      14 (20) '2.0'\n+196FC3 Extract OS            00 (0) 'MS-DOS'\n+196FC4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18D9EF Compression Method    0008 (8) 'Deflated'\n-18D9F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18D9F5 CRC                   00000000 (0)\n-18D9F9 Compressed Size       00000000 (0)\n-18D9FD Uncompressed Size     00000000 (0)\n-18DA01 Filename Length       0034 (52)\n-18DA03 Extra Length          0000 (0)\n-18DA05 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+196FC6 Compression Method    0008 (8) 'Deflated'\n+196FC8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+196FCC CRC                   00000000 (0)\n+196FD0 Compressed Size       00000000 (0)\n+196FD4 Uncompressed Size     00000000 (0)\n+196FD8 Filename Length       004C (76)\n+196FDA Extra Length          0000 (0)\n+196FDC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18DA05: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x196FDC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18DA39 PAYLOAD\n+197028 PAYLOAD\n \n-18E5B0 DATA DESCRIPTOR       08074B50 (134695760)\n-18E5B4 CRC                   27D9ECF0 (668593392)\n-18E5B8 Compressed Size       00000B77 (2935)\n-18E5BC Uncompressed Size     00002AD5 (10965)\n+1973A0 DATA DESCRIPTOR       08074B50 (134695760)\n+1973A4 CRC                   473D2A13 (1195190803)\n+1973A8 Compressed Size       00000378 (888)\n+1973AC Uncompressed Size     000007E1 (2017)\n \n-18E5C0 LOCAL HEADER #1493    04034B50 (67324752)\n-18E5C4 Extract Zip Spec      14 (20) '2.0'\n-18E5C5 Extract OS            00 (0) 'MS-DOS'\n-18E5C6 General Purpose Flag  0808 (2056)\n+1973B0 LOCAL HEADER #1493    04034B50 (67324752)\n+1973B4 Extract Zip Spec      14 (20) '2.0'\n+1973B5 Extract OS            00 (0) 'MS-DOS'\n+1973B6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18E5C8 Compression Method    0008 (8) 'Deflated'\n-18E5CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18E5CE CRC                   00000000 (0)\n-18E5D2 Compressed Size       00000000 (0)\n-18E5D6 Uncompressed Size     00000000 (0)\n-18E5DA Filename Length       0032 (50)\n-18E5DC Extra Length          0000 (0)\n-18E5DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1973B8 Compression Method    0008 (8) 'Deflated'\n+1973BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1973BE CRC                   00000000 (0)\n+1973C2 Compressed Size       00000000 (0)\n+1973C6 Uncompressed Size     00000000 (0)\n+1973CA Filename Length       0048 (72)\n+1973CC Extra Length          0000 (0)\n+1973CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18E5DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1973CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18E610 PAYLOAD\n+197416 PAYLOAD\n \n-18ECBC DATA DESCRIPTOR       08074B50 (134695760)\n-18ECC0 CRC                   540DE20D (1410195981)\n-18ECC4 Compressed Size       000006AC (1708)\n-18ECC8 Uncompressed Size     00001A1C (6684)\n+197739 DATA DESCRIPTOR       08074B50 (134695760)\n+19773D CRC                   5EDE06FE (1591609086)\n+197741 Compressed Size       00000323 (803)\n+197745 Uncompressed Size     000006F6 (1782)\n \n-18ECCC LOCAL HEADER #1494    04034B50 (67324752)\n-18ECD0 Extract Zip Spec      14 (20) '2.0'\n-18ECD1 Extract OS            00 (0) 'MS-DOS'\n-18ECD2 General Purpose Flag  0808 (2056)\n+197749 LOCAL HEADER #1494    04034B50 (67324752)\n+19774D Extract Zip Spec      14 (20) '2.0'\n+19774E Extract OS            00 (0) 'MS-DOS'\n+19774F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18ECD4 Compression Method    0008 (8) 'Deflated'\n-18ECD6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18ECDA CRC                   00000000 (0)\n-18ECDE Compressed Size       00000000 (0)\n-18ECE2 Uncompressed Size     00000000 (0)\n-18ECE6 Filename Length       0031 (49)\n-18ECE8 Extra Length          0000 (0)\n-18ECEA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+197751 Compression Method    0008 (8) 'Deflated'\n+197753 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+197757 CRC                   00000000 (0)\n+19775B Compressed Size       00000000 (0)\n+19775F Uncompressed Size     00000000 (0)\n+197763 Filename Length       004C (76)\n+197765 Extra Length          0000 (0)\n+197767 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18ECEA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x197767: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18ED1B PAYLOAD\n+1977B3 PAYLOAD\n \n-18F2DA DATA DESCRIPTOR       08074B50 (134695760)\n-18F2DE CRC                   256F6EAD (628059821)\n-18F2E2 Compressed Size       000005BF (1471)\n-18F2E6 Uncompressed Size     00000F7C (3964)\n+197AC8 DATA DESCRIPTOR       08074B50 (134695760)\n+197ACC CRC                   C24A81AD (3259662765)\n+197AD0 Compressed Size       00000315 (789)\n+197AD4 Uncompressed Size     0000070D (1805)\n \n-18F2EA LOCAL HEADER #1495    04034B50 (67324752)\n-18F2EE Extract Zip Spec      14 (20) '2.0'\n-18F2EF Extract OS            00 (0) 'MS-DOS'\n-18F2F0 General Purpose Flag  0808 (2056)\n+197AD8 LOCAL HEADER #1495    04034B50 (67324752)\n+197ADC Extract Zip Spec      14 (20) '2.0'\n+197ADD Extract OS            00 (0) 'MS-DOS'\n+197ADE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18F2F2 Compression Method    0008 (8) 'Deflated'\n-18F2F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18F2F8 CRC                   00000000 (0)\n-18F2FC Compressed Size       00000000 (0)\n-18F300 Uncompressed Size     00000000 (0)\n-18F304 Filename Length       0032 (50)\n-18F306 Extra Length          0000 (0)\n-18F308 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+197AE0 Compression Method    0008 (8) 'Deflated'\n+197AE2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+197AE6 CRC                   00000000 (0)\n+197AEA Compressed Size       00000000 (0)\n+197AEE Uncompressed Size     00000000 (0)\n+197AF2 Filename Length       0048 (72)\n+197AF4 Extra Length          0000 (0)\n+197AF6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18F308: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x197AF6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18F33A PAYLOAD\n+197B3E PAYLOAD\n \n-18F820 DATA DESCRIPTOR       08074B50 (134695760)\n-18F824 CRC                   41EC82BB (1106019003)\n-18F828 Compressed Size       000004E6 (1254)\n-18F82C Uncompressed Size     00000F05 (3845)\n+197E75 DATA DESCRIPTOR       08074B50 (134695760)\n+197E79 CRC                   5F5E8EB8 (1600032440)\n+197E7D Compressed Size       00000337 (823)\n+197E81 Uncompressed Size     00000748 (1864)\n \n-18F830 LOCAL HEADER #1496    04034B50 (67324752)\n-18F834 Extract Zip Spec      14 (20) '2.0'\n-18F835 Extract OS            00 (0) 'MS-DOS'\n-18F836 General Purpose Flag  0808 (2056)\n+197E85 LOCAL HEADER #1496    04034B50 (67324752)\n+197E89 Extract Zip Spec      14 (20) '2.0'\n+197E8A Extract OS            00 (0) 'MS-DOS'\n+197E8B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18F838 Compression Method    0008 (8) 'Deflated'\n-18F83A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18F83E CRC                   00000000 (0)\n-18F842 Compressed Size       00000000 (0)\n-18F846 Uncompressed Size     00000000 (0)\n-18F84A Filename Length       0034 (52)\n-18F84C Extra Length          0000 (0)\n-18F84E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+197E8D Compression Method    0008 (8) 'Deflated'\n+197E8F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+197E93 CRC                   00000000 (0)\n+197E97 Compressed Size       00000000 (0)\n+197E9B Uncompressed Size     00000000 (0)\n+197E9F Filename Length       0047 (71)\n+197EA1 Extra Length          0000 (0)\n+197EA3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18F84E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x197EA3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18F882 PAYLOAD\n+197EEA PAYLOAD\n \n-18FCCE DATA DESCRIPTOR       08074B50 (134695760)\n-18FCD2 CRC                   C71A64BF (3340395711)\n-18FCD6 Compressed Size       0000044C (1100)\n-18FCDA Uncompressed Size     00000AD7 (2775)\n+1981FC DATA DESCRIPTOR       08074B50 (134695760)\n+198200 CRC                   058FA161 (93299041)\n+198204 Compressed Size       00000312 (786)\n+198208 Uncompressed Size     000006A3 (1699)\n \n-18FCDE LOCAL HEADER #1497    04034B50 (67324752)\n-18FCE2 Extract Zip Spec      14 (20) '2.0'\n-18FCE3 Extract OS            00 (0) 'MS-DOS'\n-18FCE4 General Purpose Flag  0808 (2056)\n+19820C LOCAL HEADER #1497    04034B50 (67324752)\n+198210 Extract Zip Spec      14 (20) '2.0'\n+198211 Extract OS            00 (0) 'MS-DOS'\n+198212 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-18FCE6 Compression Method    0008 (8) 'Deflated'\n-18FCE8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-18FCEC CRC                   00000000 (0)\n-18FCF0 Compressed Size       00000000 (0)\n-18FCF4 Uncompressed Size     00000000 (0)\n-18FCF8 Filename Length       0036 (54)\n-18FCFA Extra Length          0000 (0)\n-18FCFC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+198214 Compression Method    0008 (8) 'Deflated'\n+198216 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19821A CRC                   00000000 (0)\n+19821E Compressed Size       00000000 (0)\n+198222 Uncompressed Size     00000000 (0)\n+198226 Filename Length       004D (77)\n+198228 Extra Length          0000 (0)\n+19822A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x18FCFC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19822A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-18FD32 PAYLOAD\n+198277 PAYLOAD\n \n-19018C DATA DESCRIPTOR       08074B50 (134695760)\n-190190 CRC                   ED50455A (3981460826)\n-190194 Compressed Size       0000045A (1114)\n-190198 Uncompressed Size     00000A88 (2696)\n+19859C DATA DESCRIPTOR       08074B50 (134695760)\n+1985A0 CRC                   E27B7C96 (3799743638)\n+1985A4 Compressed Size       00000325 (805)\n+1985A8 Uncompressed Size     00000740 (1856)\n \n-19019C LOCAL HEADER #1498    04034B50 (67324752)\n-1901A0 Extract Zip Spec      14 (20) '2.0'\n-1901A1 Extract OS            00 (0) 'MS-DOS'\n-1901A2 General Purpose Flag  0808 (2056)\n+1985AC LOCAL HEADER #1498    04034B50 (67324752)\n+1985B0 Extract Zip Spec      14 (20) '2.0'\n+1985B1 Extract OS            00 (0) 'MS-DOS'\n+1985B2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1901A4 Compression Method    0008 (8) 'Deflated'\n-1901A6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1901AA CRC                   00000000 (0)\n-1901AE Compressed Size       00000000 (0)\n-1901B2 Uncompressed Size     00000000 (0)\n-1901B6 Filename Length       0033 (51)\n-1901B8 Extra Length          0000 (0)\n-1901BA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1985B4 Compression Method    0008 (8) 'Deflated'\n+1985B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1985BA CRC                   00000000 (0)\n+1985BE Compressed Size       00000000 (0)\n+1985C2 Uncompressed Size     00000000 (0)\n+1985C6 Filename Length       0049 (73)\n+1985C8 Extra Length          0000 (0)\n+1985CA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1901BA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1985CA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1901ED PAYLOAD\n+198613 PAYLOAD\n \n-190760 DATA DESCRIPTOR       08074B50 (134695760)\n-190764 CRC                   BA485F30 (3125305136)\n-190768 Compressed Size       00000573 (1395)\n-19076C Uncompressed Size     00000FBB (4027)\n+198936 DATA DESCRIPTOR       08074B50 (134695760)\n+19893A CRC                   9F3D415D (2671591773)\n+19893E Compressed Size       00000323 (803)\n+198942 Uncompressed Size     0000071B (1819)\n \n-190770 LOCAL HEADER #1499    04034B50 (67324752)\n-190774 Extract Zip Spec      14 (20) '2.0'\n-190775 Extract OS            00 (0) 'MS-DOS'\n-190776 General Purpose Flag  0808 (2056)\n+198946 LOCAL HEADER #1499    04034B50 (67324752)\n+19894A Extract Zip Spec      14 (20) '2.0'\n+19894B Extract OS            00 (0) 'MS-DOS'\n+19894C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-190778 Compression Method    0008 (8) 'Deflated'\n-19077A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19077E CRC                   00000000 (0)\n-190782 Compressed Size       00000000 (0)\n-190786 Uncompressed Size     00000000 (0)\n-19078A Filename Length       001E (30)\n-19078C Extra Length          0000 (0)\n-19078E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19894E Compression Method    0008 (8) 'Deflated'\n+198950 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+198954 CRC                   00000000 (0)\n+198958 Compressed Size       00000000 (0)\n+19895C Uncompressed Size     00000000 (0)\n+198960 Filename Length       0045 (69)\n+198962 Extra Length          0000 (0)\n+198964 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19078E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x198964: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1907AC PAYLOAD               XX\n+1989A9 PAYLOAD\n \n-1907AE DATA DESCRIPTOR       08074B50 (134695760)\n-1907B2 CRC                   00000000 (0)\n-1907B6 Compressed Size       00000002 (2)\n-1907BA Uncompressed Size     00000000 (0)\n+198CC9 DATA DESCRIPTOR       08074B50 (134695760)\n+198CCD CRC                   51BCB93C (1371322684)\n+198CD1 Compressed Size       00000320 (800)\n+198CD5 Uncompressed Size     000006D9 (1753)\n \n-1907BE LOCAL HEADER #1500    04034B50 (67324752)\n-1907C2 Extract Zip Spec      14 (20) '2.0'\n-1907C3 Extract OS            00 (0) 'MS-DOS'\n-1907C4 General Purpose Flag  0808 (2056)\n+198CD9 LOCAL HEADER #1500    04034B50 (67324752)\n+198CDD Extract Zip Spec      14 (20) '2.0'\n+198CDE Extract OS            00 (0) 'MS-DOS'\n+198CDF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1907C6 Compression Method    0008 (8) 'Deflated'\n-1907C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1907CC CRC                   00000000 (0)\n-1907D0 Compressed Size       00000000 (0)\n-1907D4 Uncompressed Size     00000000 (0)\n-1907D8 Filename Length       0035 (53)\n-1907DA Extra Length          0000 (0)\n-1907DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+198CE1 Compression Method    0008 (8) 'Deflated'\n+198CE3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+198CE7 CRC                   00000000 (0)\n+198CEB Compressed Size       00000000 (0)\n+198CEF Uncompressed Size     00000000 (0)\n+198CF3 Filename Length       0043 (67)\n+198CF5 Extra Length          0000 (0)\n+198CF7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1907DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x198CF7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-190811 PAYLOAD\n+198D3A PAYLOAD\n \n-190DAD DATA DESCRIPTOR       08074B50 (134695760)\n-190DB1 CRC                   72812E46 (1921068614)\n-190DB5 Compressed Size       0000059C (1436)\n-190DB9 Uncompressed Size     000010D3 (4307)\n+19902F DATA DESCRIPTOR       08074B50 (134695760)\n+199033 CRC                   A6FC3818 (2801547288)\n+199037 Compressed Size       000002F5 (757)\n+19903B Uncompressed Size     00000627 (1575)\n \n-190DBD LOCAL HEADER #1501    04034B50 (67324752)\n-190DC1 Extract Zip Spec      14 (20) '2.0'\n-190DC2 Extract OS            00 (0) 'MS-DOS'\n-190DC3 General Purpose Flag  0808 (2056)\n+19903F LOCAL HEADER #1501    04034B50 (67324752)\n+199043 Extract Zip Spec      14 (20) '2.0'\n+199044 Extract OS            00 (0) 'MS-DOS'\n+199045 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-190DC5 Compression Method    0008 (8) 'Deflated'\n-190DC7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-190DCB CRC                   00000000 (0)\n-190DCF Compressed Size       00000000 (0)\n-190DD3 Uncompressed Size     00000000 (0)\n-190DD7 Filename Length       001C (28)\n-190DD9 Extra Length          0000 (0)\n-190DDB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+199047 Compression Method    0008 (8) 'Deflated'\n+199049 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19904D CRC                   00000000 (0)\n+199051 Compressed Size       00000000 (0)\n+199055 Uncompressed Size     00000000 (0)\n+199059 Filename Length       0048 (72)\n+19905B Extra Length          0000 (0)\n+19905D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x190DDB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19905D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-190DF7 PAYLOAD               XX\n+1990A5 PAYLOAD\n \n-190DF9 DATA DESCRIPTOR       08074B50 (134695760)\n-190DFD CRC                   00000000 (0)\n-190E01 Compressed Size       00000002 (2)\n-190E05 Uncompressed Size     00000000 (0)\n+1993B9 DATA DESCRIPTOR       08074B50 (134695760)\n+1993BD CRC                   2D3E4959 (759056729)\n+1993C1 Compressed Size       00000314 (788)\n+1993C5 Uncompressed Size     000006AB (1707)\n \n-190E09 LOCAL HEADER #1502    04034B50 (67324752)\n-190E0D Extract Zip Spec      14 (20) '2.0'\n-190E0E Extract OS            00 (0) 'MS-DOS'\n-190E0F General Purpose Flag  0808 (2056)\n+1993C9 LOCAL HEADER #1502    04034B50 (67324752)\n+1993CD Extract Zip Spec      14 (20) '2.0'\n+1993CE Extract OS            00 (0) 'MS-DOS'\n+1993CF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-190E11 Compression Method    0008 (8) 'Deflated'\n-190E13 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-190E17 CRC                   00000000 (0)\n-190E1B Compressed Size       00000000 (0)\n-190E1F Uncompressed Size     00000000 (0)\n-190E23 Filename Length       002A (42)\n-190E25 Extra Length          0000 (0)\n-190E27 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1993D1 Compression Method    0008 (8) 'Deflated'\n+1993D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1993D7 CRC                   00000000 (0)\n+1993DB Compressed Size       00000000 (0)\n+1993DF Uncompressed Size     00000000 (0)\n+1993E3 Filename Length       0045 (69)\n+1993E5 Extra Length          0000 (0)\n+1993E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x190E27: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1993E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-190E51 PAYLOAD\n+19942C PAYLOAD\n \n-1910B4 DATA DESCRIPTOR       08074B50 (134695760)\n-1910B8 CRC                   4C3B1439 (1278940217)\n-1910BC Compressed Size       00000263 (611)\n-1910C0 Uncompressed Size     000004E5 (1253)\n+199726 DATA DESCRIPTOR       08074B50 (134695760)\n+19972A CRC                   34807571 (880833905)\n+19972E Compressed Size       000002FA (762)\n+199732 Uncompressed Size     00000649 (1609)\n \n-1910C4 LOCAL HEADER #1503    04034B50 (67324752)\n-1910C8 Extract Zip Spec      14 (20) '2.0'\n-1910C9 Extract OS            00 (0) 'MS-DOS'\n-1910CA General Purpose Flag  0808 (2056)\n+199736 LOCAL HEADER #1503    04034B50 (67324752)\n+19973A Extract Zip Spec      14 (20) '2.0'\n+19973B Extract OS            00 (0) 'MS-DOS'\n+19973C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1910CC Compression Method    0008 (8) 'Deflated'\n-1910CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1910D2 CRC                   00000000 (0)\n-1910D6 Compressed Size       00000000 (0)\n-1910DA Uncompressed Size     00000000 (0)\n-1910DE Filename Length       0027 (39)\n-1910E0 Extra Length          0000 (0)\n-1910E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19973E Compression Method    0008 (8) 'Deflated'\n+199740 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+199744 CRC                   00000000 (0)\n+199748 Compressed Size       00000000 (0)\n+19974C Uncompressed Size     00000000 (0)\n+199750 Filename Length       0049 (73)\n+199752 Extra Length          0000 (0)\n+199754 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1910E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x199754: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-191109 PAYLOAD\n+19979D PAYLOAD\n \n-191702 DATA DESCRIPTOR       08074B50 (134695760)\n-191706 CRC                   0C035F96 (201547670)\n-19170A Compressed Size       000005F9 (1529)\n-19170E Uncompressed Size     000011CA (4554)\n+199A7C DATA DESCRIPTOR       08074B50 (134695760)\n+199A80 CRC                   823F34AF (2185180335)\n+199A84 Compressed Size       000002DF (735)\n+199A88 Uncompressed Size     000005E7 (1511)\n \n-191712 LOCAL HEADER #1504    04034B50 (67324752)\n-191716 Extract Zip Spec      14 (20) '2.0'\n-191717 Extract OS            00 (0) 'MS-DOS'\n-191718 General Purpose Flag  0808 (2056)\n+199A8C LOCAL HEADER #1504    04034B50 (67324752)\n+199A90 Extract Zip Spec      14 (20) '2.0'\n+199A91 Extract OS            00 (0) 'MS-DOS'\n+199A92 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19171A Compression Method    0008 (8) 'Deflated'\n-19171C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-191720 CRC                   00000000 (0)\n-191724 Compressed Size       00000000 (0)\n-191728 Uncompressed Size     00000000 (0)\n-19172C Filename Length       0024 (36)\n-19172E Extra Length          0000 (0)\n-191730 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+199A94 Compression Method    0008 (8) 'Deflated'\n+199A96 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+199A9A CRC                   00000000 (0)\n+199A9E Compressed Size       00000000 (0)\n+199AA2 Uncompressed Size     00000000 (0)\n+199AA6 Filename Length       0049 (73)\n+199AA8 Extra Length          0000 (0)\n+199AAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x191730: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x199AAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-191754 PAYLOAD               XX\n+199AF3 PAYLOAD\n \n-191756 DATA DESCRIPTOR       08074B50 (134695760)\n-19175A CRC                   00000000 (0)\n-19175E Compressed Size       00000002 (2)\n-191762 Uncompressed Size     00000000 (0)\n+199DF5 DATA DESCRIPTOR       08074B50 (134695760)\n+199DF9 CRC                   F89085BF (4170220991)\n+199DFD Compressed Size       00000302 (770)\n+199E01 Uncompressed Size     0000067C (1660)\n \n-191766 LOCAL HEADER #1505    04034B50 (67324752)\n-19176A Extract Zip Spec      14 (20) '2.0'\n-19176B Extract OS            00 (0) 'MS-DOS'\n-19176C General Purpose Flag  0808 (2056)\n+199E05 LOCAL HEADER #1505    04034B50 (67324752)\n+199E09 Extract Zip Spec      14 (20) '2.0'\n+199E0A Extract OS            00 (0) 'MS-DOS'\n+199E0B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19176E Compression Method    0008 (8) 'Deflated'\n-191770 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-191774 CRC                   00000000 (0)\n-191778 Compressed Size       00000000 (0)\n-19177C Uncompressed Size     00000000 (0)\n-191780 Filename Length       003B (59)\n-191782 Extra Length          0000 (0)\n-191784 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+199E0D Compression Method    0008 (8) 'Deflated'\n+199E0F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+199E13 CRC                   00000000 (0)\n+199E17 Compressed Size       00000000 (0)\n+199E1B Uncompressed Size     00000000 (0)\n+199E1F Filename Length       004C (76)\n+199E21 Extra Length          0000 (0)\n+199E23 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x191784: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x199E23: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1917BF PAYLOAD\n+199E6F PAYLOAD\n \n-191D81 DATA DESCRIPTOR       08074B50 (134695760)\n-191D85 CRC                   5688E99A (1451813274)\n-191D89 Compressed Size       000005C2 (1474)\n-191D8D Uncompressed Size     00001436 (5174)\n+19A1D2 DATA DESCRIPTOR       08074B50 (134695760)\n+19A1D6 CRC                   A0A0B3FD (2694886397)\n+19A1DA Compressed Size       00000363 (867)\n+19A1DE Uncompressed Size     00000817 (2071)\n \n-191D91 LOCAL HEADER #1506    04034B50 (67324752)\n-191D95 Extract Zip Spec      14 (20) '2.0'\n-191D96 Extract OS            00 (0) 'MS-DOS'\n-191D97 General Purpose Flag  0808 (2056)\n+19A1E2 LOCAL HEADER #1506    04034B50 (67324752)\n+19A1E6 Extract Zip Spec      14 (20) '2.0'\n+19A1E7 Extract OS            00 (0) 'MS-DOS'\n+19A1E8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-191D99 Compression Method    0008 (8) 'Deflated'\n-191D9B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-191D9F CRC                   00000000 (0)\n-191DA3 Compressed Size       00000000 (0)\n-191DA7 Uncompressed Size     00000000 (0)\n-191DAB Filename Length       003F (63)\n-191DAD Extra Length          0000 (0)\n-191DAF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19A1EA Compression Method    0008 (8) 'Deflated'\n+19A1EC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19A1F0 CRC                   00000000 (0)\n+19A1F4 Compressed Size       00000000 (0)\n+19A1F8 Uncompressed Size     00000000 (0)\n+19A1FC Filename Length       0043 (67)\n+19A1FE Extra Length          0000 (0)\n+19A200 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x191DAF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19A200: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-191DEE PAYLOAD\n+19A243 PAYLOAD               XX\n \n-192164 DATA DESCRIPTOR       08074B50 (134695760)\n-192168 CRC                   DA916F8A (3666964362)\n-19216C Compressed Size       00000376 (886)\n-192170 Uncompressed Size     000007A1 (1953)\n+19A245 DATA DESCRIPTOR       08074B50 (134695760)\n+19A249 CRC                   00000000 (0)\n+19A24D Compressed Size       00000002 (2)\n+19A251 Uncompressed Size     00000000 (0)\n \n-192174 LOCAL HEADER #1507    04034B50 (67324752)\n-192178 Extract Zip Spec      14 (20) '2.0'\n-192179 Extract OS            00 (0) 'MS-DOS'\n-19217A General Purpose Flag  0808 (2056)\n+19A255 LOCAL HEADER #1507    04034B50 (67324752)\n+19A259 Extract Zip Spec      14 (20) '2.0'\n+19A25A Extract OS            00 (0) 'MS-DOS'\n+19A25B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19217C Compression Method    0008 (8) 'Deflated'\n-19217E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-192182 CRC                   00000000 (0)\n-192186 Compressed Size       00000000 (0)\n-19218A Uncompressed Size     00000000 (0)\n-19218E Filename Length       003A (58)\n-192190 Extra Length          0000 (0)\n-192192 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19A25D Compression Method    0008 (8) 'Deflated'\n+19A25F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19A263 CRC                   00000000 (0)\n+19A267 Compressed Size       00000000 (0)\n+19A26B Uncompressed Size     00000000 (0)\n+19A26F Filename Length       004A (74)\n+19A271 Extra Length          0000 (0)\n+19A273 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x192192: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19A273: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1921CC PAYLOAD\n+19A2BD PAYLOAD\n \n-192793 DATA DESCRIPTOR       08074B50 (134695760)\n-192797 CRC                   1CB52B1D (481635101)\n-19279B Compressed Size       000005C7 (1479)\n-19279F Uncompressed Size     0000100F (4111)\n+19A60A DATA DESCRIPTOR       08074B50 (134695760)\n+19A60E CRC                   D7D86FD9 (3621285849)\n+19A612 Compressed Size       0000034D (845)\n+19A616 Uncompressed Size     000007C2 (1986)\n \n-1927A3 LOCAL HEADER #1508    04034B50 (67324752)\n-1927A7 Extract Zip Spec      14 (20) '2.0'\n-1927A8 Extract OS            00 (0) 'MS-DOS'\n-1927A9 General Purpose Flag  0808 (2056)\n+19A61A LOCAL HEADER #1508    04034B50 (67324752)\n+19A61E Extract Zip Spec      14 (20) '2.0'\n+19A61F Extract OS            00 (0) 'MS-DOS'\n+19A620 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1927AB Compression Method    0008 (8) 'Deflated'\n-1927AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1927B1 CRC                   00000000 (0)\n-1927B5 Compressed Size       00000000 (0)\n-1927B9 Uncompressed Size     00000000 (0)\n-1927BD Filename Length       003F (63)\n-1927BF Extra Length          0000 (0)\n-1927C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19A622 Compression Method    0008 (8) 'Deflated'\n+19A624 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19A628 CRC                   00000000 (0)\n+19A62C Compressed Size       00000000 (0)\n+19A630 Uncompressed Size     00000000 (0)\n+19A634 Filename Length       0051 (81)\n+19A636 Extra Length          0000 (0)\n+19A638 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1927C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19A638: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-192800 PAYLOAD\n+19A689 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-192B40 DATA DESCRIPTOR       08074B50 (134695760)\n-192B44 CRC                   B7AE5AFA (3081657082)\n-192B48 Compressed Size       00000340 (832)\n-192B4C Uncompressed Size     000006EA (1770)\n+19A6DB DATA DESCRIPTOR       08074B50 (134695760)\n+19A6DF CRC                   E73563C3 (3879035843)\n+19A6E3 Compressed Size       00000052 (82)\n+19A6E7 Uncompressed Size     00000059 (89)\n \n-192B50 LOCAL HEADER #1509    04034B50 (67324752)\n-192B54 Extract Zip Spec      14 (20) '2.0'\n-192B55 Extract OS            00 (0) 'MS-DOS'\n-192B56 General Purpose Flag  0808 (2056)\n+19A6EB LOCAL HEADER #1509    04034B50 (67324752)\n+19A6EF Extract Zip Spec      14 (20) '2.0'\n+19A6F0 Extract OS            00 (0) 'MS-DOS'\n+19A6F1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-192B58 Compression Method    0008 (8) 'Deflated'\n-192B5A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-192B5E CRC                   00000000 (0)\n-192B62 Compressed Size       00000000 (0)\n-192B66 Uncompressed Size     00000000 (0)\n-192B6A Filename Length       003D (61)\n-192B6C Extra Length          0000 (0)\n-192B6E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19A6F3 Compression Method    0008 (8) 'Deflated'\n+19A6F5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19A6F9 CRC                   00000000 (0)\n+19A6FD Compressed Size       00000000 (0)\n+19A701 Uncompressed Size     00000000 (0)\n+19A705 Filename Length       0027 (39)\n+19A707 Extra Length          0000 (0)\n+19A709 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x192B6E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19A709: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-192BAB PAYLOAD\n+19A730 PAYLOAD               XX\n \n-193013 DATA DESCRIPTOR       08074B50 (134695760)\n-193017 CRC                   D392C9E8 (3549612520)\n-19301B Compressed Size       00000468 (1128)\n-19301F Uncompressed Size     00000C81 (3201)\n+19A732 DATA DESCRIPTOR       08074B50 (134695760)\n+19A736 CRC                   00000000 (0)\n+19A73A Compressed Size       00000002 (2)\n+19A73E Uncompressed Size     00000000 (0)\n \n-193023 LOCAL HEADER #1510    04034B50 (67324752)\n-193027 Extract Zip Spec      14 (20) '2.0'\n-193028 Extract OS            00 (0) 'MS-DOS'\n-193029 General Purpose Flag  0808 (2056)\n+19A742 LOCAL HEADER #1510    04034B50 (67324752)\n+19A746 Extract Zip Spec      14 (20) '2.0'\n+19A747 Extract OS            00 (0) 'MS-DOS'\n+19A748 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19302B Compression Method    0008 (8) 'Deflated'\n-19302D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-193031 CRC                   00000000 (0)\n-193035 Compressed Size       00000000 (0)\n-193039 Uncompressed Size     00000000 (0)\n-19303D Filename Length       001C (28)\n-19303F Extra Length          0000 (0)\n-193041 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19A74A Compression Method    0008 (8) 'Deflated'\n+19A74C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19A750 CRC                   00000000 (0)\n+19A754 Compressed Size       00000000 (0)\n+19A758 Uncompressed Size     00000000 (0)\n+19A75C Filename Length       0046 (70)\n+19A75E Extra Length          0000 (0)\n+19A760 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x193041: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19A760: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19305D PAYLOAD               XX\n+19A7A6 PAYLOAD\n \n-19305F DATA DESCRIPTOR       08074B50 (134695760)\n-193063 CRC                   00000000 (0)\n-193067 Compressed Size       00000002 (2)\n-19306B Uncompressed Size     00000000 (0)\n+19AAE2 DATA DESCRIPTOR       08074B50 (134695760)\n+19AAE6 CRC                   C9462C54 (3376819284)\n+19AAEA Compressed Size       0000033C (828)\n+19AAEE Uncompressed Size     000007DD (2013)\n \n-19306F LOCAL HEADER #1511    04034B50 (67324752)\n-193073 Extract Zip Spec      14 (20) '2.0'\n-193074 Extract OS            00 (0) 'MS-DOS'\n-193075 General Purpose Flag  0808 (2056)\n+19AAF2 LOCAL HEADER #1511    04034B50 (67324752)\n+19AAF6 Extract Zip Spec      14 (20) '2.0'\n+19AAF7 Extract OS            00 (0) 'MS-DOS'\n+19AAF8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-193077 Compression Method    0008 (8) 'Deflated'\n-193079 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19307D CRC                   00000000 (0)\n-193081 Compressed Size       00000000 (0)\n-193085 Uncompressed Size     00000000 (0)\n-193089 Filename Length       002B (43)\n-19308B Extra Length          0000 (0)\n-19308D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19AAFA Compression Method    0008 (8) 'Deflated'\n+19AAFC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19AB00 CRC                   00000000 (0)\n+19AB04 Compressed Size       00000000 (0)\n+19AB08 Uncompressed Size     00000000 (0)\n+19AB0C Filename Length       0046 (70)\n+19AB0E Extra Length          0000 (0)\n+19AB10 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19308D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19AB10: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1930B8 PAYLOAD\n+19AB56 PAYLOAD\n \n-1932D5 DATA DESCRIPTOR       08074B50 (134695760)\n-1932D9 CRC                   2AA01116 (715133206)\n-1932DD Compressed Size       0000021D (541)\n-1932E1 Uncompressed Size     000003D7 (983)\n+19AF11 DATA DESCRIPTOR       08074B50 (134695760)\n+19AF15 CRC                   4C5ED1C3 (1281282499)\n+19AF19 Compressed Size       000003BB (955)\n+19AF1D Uncompressed Size     00000940 (2368)\n \n-1932E5 LOCAL HEADER #1512    04034B50 (67324752)\n-1932E9 Extract Zip Spec      14 (20) '2.0'\n-1932EA Extract OS            00 (0) 'MS-DOS'\n-1932EB General Purpose Flag  0808 (2056)\n+19AF21 LOCAL HEADER #1512    04034B50 (67324752)\n+19AF25 Extract Zip Spec      14 (20) '2.0'\n+19AF26 Extract OS            00 (0) 'MS-DOS'\n+19AF27 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1932ED Compression Method    0008 (8) 'Deflated'\n-1932EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1932F3 CRC                   00000000 (0)\n-1932F7 Compressed Size       00000000 (0)\n-1932FB Uncompressed Size     00000000 (0)\n-1932FF Filename Length       0024 (36)\n-193301 Extra Length          0000 (0)\n-193303 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19AF29 Compression Method    0008 (8) 'Deflated'\n+19AF2B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19AF2F CRC                   00000000 (0)\n+19AF33 Compressed Size       00000000 (0)\n+19AF37 Uncompressed Size     00000000 (0)\n+19AF3B Filename Length       0047 (71)\n+19AF3D Extra Length          0000 (0)\n+19AF3F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x193303: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19AF3F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-193327 PAYLOAD\n+19AF86 PAYLOAD\n \n-193719 DATA DESCRIPTOR       08074B50 (134695760)\n-19371D CRC                   70DD7BE1 (1893563361)\n-193721 Compressed Size       000003F2 (1010)\n-193725 Uncompressed Size     00000AAE (2734)\n+19B27A DATA DESCRIPTOR       08074B50 (134695760)\n+19B27E CRC                   1A06EC84 (436661380)\n+19B282 Compressed Size       000002F4 (756)\n+19B286 Uncompressed Size     00000647 (1607)\n \n-193729 LOCAL HEADER #1513    04034B50 (67324752)\n-19372D Extract Zip Spec      14 (20) '2.0'\n-19372E Extract OS            00 (0) 'MS-DOS'\n-19372F General Purpose Flag  0808 (2056)\n+19B28A LOCAL HEADER #1513    04034B50 (67324752)\n+19B28E Extract Zip Spec      14 (20) '2.0'\n+19B28F Extract OS            00 (0) 'MS-DOS'\n+19B290 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-193731 Compression Method    0008 (8) 'Deflated'\n-193733 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-193737 CRC                   00000000 (0)\n-19373B Compressed Size       00000000 (0)\n-19373F Uncompressed Size     00000000 (0)\n-193743 Filename Length       0028 (40)\n-193745 Extra Length          0000 (0)\n-193747 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19B292 Compression Method    0008 (8) 'Deflated'\n+19B294 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19B298 CRC                   00000000 (0)\n+19B29C Compressed Size       00000000 (0)\n+19B2A0 Uncompressed Size     00000000 (0)\n+19B2A4 Filename Length       003B (59)\n+19B2A6 Extra Length          0000 (0)\n+19B2A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x193747: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19B2A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19376F PAYLOAD\n+19B2E3 PAYLOAD\n \n-193B15 DATA DESCRIPTOR       08074B50 (134695760)\n-193B19 CRC                   725BA0A7 (1918607527)\n-193B1D Compressed Size       000003A6 (934)\n-193B21 Uncompressed Size     000008DD (2269)\n+19B6D1 DATA DESCRIPTOR       08074B50 (134695760)\n+19B6D5 CRC                   EBC07089 (3955257481)\n+19B6D9 Compressed Size       000003EE (1006)\n+19B6DD Uncompressed Size     00000B84 (2948)\n \n-193B25 LOCAL HEADER #1514    04034B50 (67324752)\n-193B29 Extract Zip Spec      14 (20) '2.0'\n-193B2A Extract OS            00 (0) 'MS-DOS'\n-193B2B General Purpose Flag  0808 (2056)\n+19B6E1 LOCAL HEADER #1514    04034B50 (67324752)\n+19B6E5 Extract Zip Spec      14 (20) '2.0'\n+19B6E6 Extract OS            00 (0) 'MS-DOS'\n+19B6E7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-193B2D Compression Method    0008 (8) 'Deflated'\n-193B2F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-193B33 CRC                   00000000 (0)\n-193B37 Compressed Size       00000000 (0)\n-193B3B Uncompressed Size     00000000 (0)\n-193B3F Filename Length       0027 (39)\n-193B41 Extra Length          0000 (0)\n-193B43 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19B6E9 Compression Method    0008 (8) 'Deflated'\n+19B6EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19B6EF CRC                   00000000 (0)\n+19B6F3 Compressed Size       00000000 (0)\n+19B6F7 Uncompressed Size     00000000 (0)\n+19B6FB Filename Length       003C (60)\n+19B6FD Extra Length          0000 (0)\n+19B6FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x193B43: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19B6FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-193B6A PAYLOAD\n+19B73B PAYLOAD\n \n-1948CB DATA DESCRIPTOR       08074B50 (134695760)\n-1948CF CRC                   353D3BE5 (893205477)\n-1948D3 Compressed Size       00000D61 (3425)\n-1948D7 Uncompressed Size     00003D01 (15617)\n+19BA5D DATA DESCRIPTOR       08074B50 (134695760)\n+19BA61 CRC                   BE6D297E (3194825086)\n+19BA65 Compressed Size       00000322 (802)\n+19BA69 Uncompressed Size     00000881 (2177)\n \n-1948DB LOCAL HEADER #1515    04034B50 (67324752)\n-1948DF Extract Zip Spec      14 (20) '2.0'\n-1948E0 Extract OS            00 (0) 'MS-DOS'\n-1948E1 General Purpose Flag  0808 (2056)\n+19BA6D LOCAL HEADER #1515    04034B50 (67324752)\n+19BA71 Extract Zip Spec      14 (20) '2.0'\n+19BA72 Extract OS            00 (0) 'MS-DOS'\n+19BA73 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1948E3 Compression Method    0008 (8) 'Deflated'\n-1948E5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1948E9 CRC                   00000000 (0)\n-1948ED Compressed Size       00000000 (0)\n-1948F1 Uncompressed Size     00000000 (0)\n-1948F5 Filename Length       0026 (38)\n-1948F7 Extra Length          0000 (0)\n-1948F9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19BA75 Compression Method    0008 (8) 'Deflated'\n+19BA77 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19BA7B CRC                   00000000 (0)\n+19BA7F Compressed Size       00000000 (0)\n+19BA83 Uncompressed Size     00000000 (0)\n+19BA87 Filename Length       003D (61)\n+19BA89 Extra Length          0000 (0)\n+19BA8B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1948F9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19BA8B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19491F PAYLOAD\n+19BAC8 PAYLOAD\n \n-195112 DATA DESCRIPTOR       08074B50 (134695760)\n-195116 CRC                   1DFA3CFF (502938879)\n-19511A Compressed Size       000007F3 (2035)\n-19511E Uncompressed Size     00001CCE (7374)\n+19BDE9 DATA DESCRIPTOR       08074B50 (134695760)\n+19BDED CRC                   9ED05045 (2664452165)\n+19BDF1 Compressed Size       00000321 (801)\n+19BDF5 Uncompressed Size     00000798 (1944)\n \n-195122 LOCAL HEADER #1516    04034B50 (67324752)\n-195126 Extract Zip Spec      14 (20) '2.0'\n-195127 Extract OS            00 (0) 'MS-DOS'\n-195128 General Purpose Flag  0808 (2056)\n+19BDF9 LOCAL HEADER #1516    04034B50 (67324752)\n+19BDFD Extract Zip Spec      14 (20) '2.0'\n+19BDFE Extract OS            00 (0) 'MS-DOS'\n+19BDFF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19512A Compression Method    0008 (8) 'Deflated'\n-19512C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-195130 CRC                   00000000 (0)\n-195134 Compressed Size       00000000 (0)\n-195138 Uncompressed Size     00000000 (0)\n-19513C Filename Length       0022 (34)\n-19513E Extra Length          0000 (0)\n-195140 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19BE01 Compression Method    0008 (8) 'Deflated'\n+19BE03 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19BE07 CRC                   00000000 (0)\n+19BE0B Compressed Size       00000000 (0)\n+19BE0F Uncompressed Size     00000000 (0)\n+19BE13 Filename Length       002D (45)\n+19BE15 Extra Length          0000 (0)\n+19BE17 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x195140: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19BE17: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-195162 PAYLOAD               XX\n+19BE44 PAYLOAD               XX\n \n-195164 DATA DESCRIPTOR       08074B50 (134695760)\n-195168 CRC                   00000000 (0)\n-19516C Compressed Size       00000002 (2)\n-195170 Uncompressed Size     00000000 (0)\n+19BE46 DATA DESCRIPTOR       08074B50 (134695760)\n+19BE4A CRC                   00000000 (0)\n+19BE4E Compressed Size       00000002 (2)\n+19BE52 Uncompressed Size     00000000 (0)\n \n-195174 LOCAL HEADER #1517    04034B50 (67324752)\n-195178 Extract Zip Spec      14 (20) '2.0'\n-195179 Extract OS            00 (0) 'MS-DOS'\n-19517A General Purpose Flag  0808 (2056)\n+19BE56 LOCAL HEADER #1517    04034B50 (67324752)\n+19BE5A Extract Zip Spec      14 (20) '2.0'\n+19BE5B Extract OS            00 (0) 'MS-DOS'\n+19BE5C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19517C Compression Method    0008 (8) 'Deflated'\n-19517E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-195182 CRC                   00000000 (0)\n-195186 Compressed Size       00000000 (0)\n-19518A Uncompressed Size     00000000 (0)\n-19518E Filename Length       0030 (48)\n-195190 Extra Length          0000 (0)\n-195192 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19BE5E Compression Method    0008 (8) 'Deflated'\n+19BE60 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19BE64 CRC                   00000000 (0)\n+19BE68 Compressed Size       00000000 (0)\n+19BE6C Uncompressed Size     00000000 (0)\n+19BE70 Filename Length       0047 (71)\n+19BE72 Extra Length          0000 (0)\n+19BE74 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x195192: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19BE74: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1951C2 PAYLOAD\n+19BEBB PAYLOAD\n \n-195406 DATA DESCRIPTOR       08074B50 (134695760)\n-19540A CRC                   072B28E1 (120269025)\n-19540E Compressed Size       00000244 (580)\n-195412 Uncompressed Size     00000423 (1059)\n+19C2C8 DATA DESCRIPTOR       08074B50 (134695760)\n+19C2CC CRC                   6029E0CC (1613357260)\n+19C2D0 Compressed Size       0000040D (1037)\n+19C2D4 Uncompressed Size     00000D7E (3454)\n \n-195416 LOCAL HEADER #1518    04034B50 (67324752)\n-19541A Extract Zip Spec      14 (20) '2.0'\n-19541B Extract OS            00 (0) 'MS-DOS'\n-19541C General Purpose Flag  0808 (2056)\n+19C2D8 LOCAL HEADER #1518    04034B50 (67324752)\n+19C2DC Extract Zip Spec      14 (20) '2.0'\n+19C2DD Extract OS            00 (0) 'MS-DOS'\n+19C2DE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19541E Compression Method    0008 (8) 'Deflated'\n-195420 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-195424 CRC                   00000000 (0)\n-195428 Compressed Size       00000000 (0)\n-19542C Uncompressed Size     00000000 (0)\n-195430 Filename Length       0030 (48)\n-195432 Extra Length          0000 (0)\n-195434 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19C2E0 Compression Method    0008 (8) 'Deflated'\n+19C2E2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19C2E6 CRC                   00000000 (0)\n+19C2EA Compressed Size       00000000 (0)\n+19C2EE Uncompressed Size     00000000 (0)\n+19C2F2 Filename Length       0048 (72)\n+19C2F4 Extra Length          0000 (0)\n+19C2F6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x195434: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19C2F6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-195464 PAYLOAD\n+19C33E PAYLOAD\n \n-1956F9 DATA DESCRIPTOR       08074B50 (134695760)\n-1956FD CRC                   121EAF1A (304000794)\n-195701 Compressed Size       00000295 (661)\n-195705 Uncompressed Size     000005A4 (1444)\n+19C6FF DATA DESCRIPTOR       08074B50 (134695760)\n+19C703 CRC                   5EB75116 (1589072150)\n+19C707 Compressed Size       000003C1 (961)\n+19C70B Uncompressed Size     00000CEE (3310)\n \n-195709 LOCAL HEADER #1519    04034B50 (67324752)\n-19570D Extract Zip Spec      14 (20) '2.0'\n-19570E Extract OS            00 (0) 'MS-DOS'\n-19570F General Purpose Flag  0808 (2056)\n+19C70F LOCAL HEADER #1519    04034B50 (67324752)\n+19C713 Extract Zip Spec      14 (20) '2.0'\n+19C714 Extract OS            00 (0) 'MS-DOS'\n+19C715 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-195711 Compression Method    0008 (8) 'Deflated'\n-195713 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-195717 CRC                   00000000 (0)\n-19571B Compressed Size       00000000 (0)\n-19571F Uncompressed Size     00000000 (0)\n-195723 Filename Length       0030 (48)\n-195725 Extra Length          0000 (0)\n-195727 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19C717 Compression Method    0008 (8) 'Deflated'\n+19C719 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19C71D CRC                   00000000 (0)\n+19C721 Compressed Size       00000000 (0)\n+19C725 Uncompressed Size     00000000 (0)\n+19C729 Filename Length       0049 (73)\n+19C72B Extra Length          0000 (0)\n+19C72D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x195727: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19C72D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-195757 PAYLOAD\n+19C776 PAYLOAD\n \n-195A56 DATA DESCRIPTOR       08074B50 (134695760)\n-195A5A CRC                   9F97C867 (2677524583)\n-195A5E Compressed Size       000002FF (767)\n-195A62 Uncompressed Size     000008EC (2284)\n+19CAA9 DATA DESCRIPTOR       08074B50 (134695760)\n+19CAAD CRC                   20799CC3 (544840899)\n+19CAB1 Compressed Size       00000333 (819)\n+19CAB5 Uncompressed Size     000007DF (2015)\n \n-195A66 LOCAL HEADER #1520    04034B50 (67324752)\n-195A6A Extract Zip Spec      14 (20) '2.0'\n-195A6B Extract OS            00 (0) 'MS-DOS'\n-195A6C General Purpose Flag  0808 (2056)\n+19CAB9 LOCAL HEADER #1520    04034B50 (67324752)\n+19CABD Extract Zip Spec      14 (20) '2.0'\n+19CABE Extract OS            00 (0) 'MS-DOS'\n+19CABF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-195A6E Compression Method    0008 (8) 'Deflated'\n-195A70 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-195A74 CRC                   00000000 (0)\n-195A78 Compressed Size       00000000 (0)\n-195A7C Uncompressed Size     00000000 (0)\n-195A80 Filename Length       0031 (49)\n-195A82 Extra Length          0000 (0)\n-195A84 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19CAC1 Compression Method    0008 (8) 'Deflated'\n+19CAC3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19CAC7 CRC                   00000000 (0)\n+19CACB Compressed Size       00000000 (0)\n+19CACF Uncompressed Size     00000000 (0)\n+19CAD3 Filename Length       0038 (56)\n+19CAD5 Extra Length          0000 (0)\n+19CAD7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x195A84: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19CAD7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-195AB5 PAYLOAD\n+19CB0F PAYLOAD               XX\n \n-195DDD DATA DESCRIPTOR       08074B50 (134695760)\n-195DE1 CRC                   BCDD8DC5 (3168636357)\n-195DE5 Compressed Size       00000328 (808)\n-195DE9 Uncompressed Size     00000AB5 (2741)\n+19CB11 DATA DESCRIPTOR       08074B50 (134695760)\n+19CB15 CRC                   00000000 (0)\n+19CB19 Compressed Size       00000002 (2)\n+19CB1D Uncompressed Size     00000000 (0)\n \n-195DED LOCAL HEADER #1521    04034B50 (67324752)\n-195DF1 Extract Zip Spec      14 (20) '2.0'\n-195DF2 Extract OS            00 (0) 'MS-DOS'\n-195DF3 General Purpose Flag  0808 (2056)\n+19CB21 LOCAL HEADER #1521    04034B50 (67324752)\n+19CB25 Extract Zip Spec      14 (20) '2.0'\n+19CB26 Extract OS            00 (0) 'MS-DOS'\n+19CB27 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-195DF5 Compression Method    0008 (8) 'Deflated'\n-195DF7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-195DFB CRC                   00000000 (0)\n-195DFF Compressed Size       00000000 (0)\n-195E03 Uncompressed Size     00000000 (0)\n-195E07 Filename Length       0032 (50)\n-195E09 Extra Length          0000 (0)\n-195E0B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19CB29 Compression Method    0008 (8) 'Deflated'\n+19CB2B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19CB2F CRC                   00000000 (0)\n+19CB33 Compressed Size       00000000 (0)\n+19CB37 Uncompressed Size     00000000 (0)\n+19CB3B Filename Length       003F (63)\n+19CB3D Extra Length          0000 (0)\n+19CB3F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x195E0B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19CB3F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-195E3D PAYLOAD\n+19CB7E PAYLOAD\n \n-196350 DATA DESCRIPTOR       08074B50 (134695760)\n-196354 CRC                   F1A78E98 (4054290072)\n-196358 Compressed Size       00000513 (1299)\n-19635C Uncompressed Size     00000D54 (3412)\n+19CEED DATA DESCRIPTOR       08074B50 (134695760)\n+19CEF1 CRC                   EA70B20B (3933254155)\n+19CEF5 Compressed Size       0000036F (879)\n+19CEF9 Uncompressed Size     00000802 (2050)\n \n-196360 LOCAL HEADER #1522    04034B50 (67324752)\n-196364 Extract Zip Spec      14 (20) '2.0'\n-196365 Extract OS            00 (0) 'MS-DOS'\n-196366 General Purpose Flag  0808 (2056)\n+19CEFD LOCAL HEADER #1522    04034B50 (67324752)\n+19CF01 Extract Zip Spec      14 (20) '2.0'\n+19CF02 Extract OS            00 (0) 'MS-DOS'\n+19CF03 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-196368 Compression Method    0008 (8) 'Deflated'\n-19636A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19636E CRC                   00000000 (0)\n-196372 Compressed Size       00000000 (0)\n-196376 Uncompressed Size     00000000 (0)\n-19637A Filename Length       0033 (51)\n-19637C Extra Length          0000 (0)\n-19637E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19CF05 Compression Method    0008 (8) 'Deflated'\n+19CF07 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19CF0B CRC                   00000000 (0)\n+19CF0F Compressed Size       00000000 (0)\n+19CF13 Uncompressed Size     00000000 (0)\n+19CF17 Filename Length       0046 (70)\n+19CF19 Extra Length          0000 (0)\n+19CF1B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19637E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19CF1B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1963B1 PAYLOAD\n+19CF61 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-1967D6 DATA DESCRIPTOR       08074B50 (134695760)\n-1967DA CRC                   CA608B45 (3395324741)\n-1967DE Compressed Size       00000425 (1061)\n-1967E2 Uncompressed Size     000008E9 (2281)\n+19CFAC DATA DESCRIPTOR       08074B50 (134695760)\n+19CFB0 CRC                   9A185178 (2585284984)\n+19CFB4 Compressed Size       0000004B (75)\n+19CFB8 Uncompressed Size     0000004E (78)\n \n-1967E6 LOCAL HEADER #1523    04034B50 (67324752)\n-1967EA Extract Zip Spec      14 (20) '2.0'\n-1967EB Extract OS            00 (0) 'MS-DOS'\n-1967EC General Purpose Flag  0808 (2056)\n+19CFBC LOCAL HEADER #1523    04034B50 (67324752)\n+19CFC0 Extract Zip Spec      14 (20) '2.0'\n+19CFC1 Extract OS            00 (0) 'MS-DOS'\n+19CFC2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1967EE Compression Method    0008 (8) 'Deflated'\n-1967F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1967F4 CRC                   00000000 (0)\n-1967F8 Compressed Size       00000000 (0)\n-1967FC Uncompressed Size     00000000 (0)\n-196800 Filename Length       0034 (52)\n-196802 Extra Length          0000 (0)\n-196804 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19CFC4 Compression Method    0008 (8) 'Deflated'\n+19CFC6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19CFCA CRC                   00000000 (0)\n+19CFCE Compressed Size       00000000 (0)\n+19CFD2 Uncompressed Size     00000000 (0)\n+19CFD6 Filename Length       0027 (39)\n+19CFD8 Extra Length          0000 (0)\n+19CFDA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x196804: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19CFDA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-196838 PAYLOAD\n+19D001 PAYLOAD               XX\n \n-196C4D DATA DESCRIPTOR       08074B50 (134695760)\n-196C51 CRC                   04921C47 (76684359)\n-196C55 Compressed Size       00000415 (1045)\n-196C59 Uncompressed Size     000009D7 (2519)\n+19D003 DATA DESCRIPTOR       08074B50 (134695760)\n+19D007 CRC                   00000000 (0)\n+19D00B Compressed Size       00000002 (2)\n+19D00F Uncompressed Size     00000000 (0)\n \n-196C5D LOCAL HEADER #1524    04034B50 (67324752)\n-196C61 Extract Zip Spec      14 (20) '2.0'\n-196C62 Extract OS            00 (0) 'MS-DOS'\n-196C63 General Purpose Flag  0808 (2056)\n+19D013 LOCAL HEADER #1524    04034B50 (67324752)\n+19D017 Extract Zip Spec      14 (20) '2.0'\n+19D018 Extract OS            00 (0) 'MS-DOS'\n+19D019 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-196C65 Compression Method    0008 (8) 'Deflated'\n-196C67 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-196C6B CRC                   00000000 (0)\n-196C6F Compressed Size       00000000 (0)\n-196C73 Uncompressed Size     00000000 (0)\n-196C77 Filename Length       002A (42)\n-196C79 Extra Length          0000 (0)\n-196C7B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19D01B Compression Method    0008 (8) 'Deflated'\n+19D01D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19D021 CRC                   00000000 (0)\n+19D025 Compressed Size       00000000 (0)\n+19D029 Uncompressed Size     00000000 (0)\n+19D02D Filename Length       003A (58)\n+19D02F Extra Length          0000 (0)\n+19D031 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x196C7B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19D031: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-196CA5 PAYLOAD               XX\n+19D06B PAYLOAD\n \n-196CA7 DATA DESCRIPTOR       08074B50 (134695760)\n-196CAB CRC                   00000000 (0)\n-196CAF Compressed Size       00000002 (2)\n-196CB3 Uncompressed Size     00000000 (0)\n+19D50F DATA DESCRIPTOR       08074B50 (134695760)\n+19D513 CRC                   D8DFD1C9 (3638546889)\n+19D517 Compressed Size       000004A4 (1188)\n+19D51B Uncompressed Size     00000A85 (2693)\n \n-196CB7 LOCAL HEADER #1525    04034B50 (67324752)\n-196CBB Extract Zip Spec      14 (20) '2.0'\n-196CBC Extract OS            00 (0) 'MS-DOS'\n-196CBD General Purpose Flag  0808 (2056)\n+19D51F LOCAL HEADER #1525    04034B50 (67324752)\n+19D523 Extract Zip Spec      14 (20) '2.0'\n+19D524 Extract OS            00 (0) 'MS-DOS'\n+19D525 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-196CBF Compression Method    0008 (8) 'Deflated'\n-196CC1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-196CC5 CRC                   00000000 (0)\n-196CC9 Compressed Size       00000000 (0)\n-196CCD Uncompressed Size     00000000 (0)\n-196CD1 Filename Length       0048 (72)\n-196CD3 Extra Length          0000 (0)\n-196CD5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19D527 Compression Method    0008 (8) 'Deflated'\n+19D529 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19D52D CRC                   00000000 (0)\n+19D531 Compressed Size       00000000 (0)\n+19D535 Uncompressed Size     00000000 (0)\n+19D539 Filename Length       003B (59)\n+19D53B Extra Length          0000 (0)\n+19D53D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x196CD5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19D53D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-196D1D PAYLOAD\n+19D578 PAYLOAD\n \n-1970BF DATA DESCRIPTOR       08074B50 (134695760)\n-1970C3 CRC                   27075A5A (654793306)\n-1970C7 Compressed Size       000003A2 (930)\n-1970CB Uncompressed Size     00000828 (2088)\n+19D9E1 DATA DESCRIPTOR       08074B50 (134695760)\n+19D9E5 CRC                   70240B76 (1881410422)\n+19D9E9 Compressed Size       00000469 (1129)\n+19D9ED Uncompressed Size     000011F6 (4598)\n \n-1970CF LOCAL HEADER #1526    04034B50 (67324752)\n-1970D3 Extract Zip Spec      14 (20) '2.0'\n-1970D4 Extract OS            00 (0) 'MS-DOS'\n-1970D5 General Purpose Flag  0808 (2056)\n+19D9F1 LOCAL HEADER #1526    04034B50 (67324752)\n+19D9F5 Extract Zip Spec      14 (20) '2.0'\n+19D9F6 Extract OS            00 (0) 'MS-DOS'\n+19D9F7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1970D7 Compression Method    0008 (8) 'Deflated'\n-1970D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1970DD CRC                   00000000 (0)\n-1970E1 Compressed Size       00000000 (0)\n-1970E5 Uncompressed Size     00000000 (0)\n-1970E9 Filename Length       0045 (69)\n-1970EB Extra Length          0000 (0)\n-1970ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19D9F9 Compression Method    0008 (8) 'Deflated'\n+19D9FB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19D9FF CRC                   00000000 (0)\n+19DA03 Compressed Size       00000000 (0)\n+19DA07 Uncompressed Size     00000000 (0)\n+19DA0B Filename Length       003C (60)\n+19DA0D Extra Length          0000 (0)\n+19DA0F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1970ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19DA0F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-197132 PAYLOAD\n+19DA4B PAYLOAD\n \n-1973A8 DATA DESCRIPTOR       08074B50 (134695760)\n-1973AC CRC                   48B6E606 (1219945990)\n-1973B0 Compressed Size       00000276 (630)\n-1973B4 Uncompressed Size     00000493 (1171)\n+19DE45 DATA DESCRIPTOR       08074B50 (134695760)\n+19DE49 CRC                   8E4DF810 (2387474448)\n+19DE4D Compressed Size       000003FA (1018)\n+19DE51 Uncompressed Size     00000CEA (3306)\n \n-1973B8 LOCAL HEADER #1527    04034B50 (67324752)\n-1973BC Extract Zip Spec      14 (20) '2.0'\n-1973BD Extract OS            00 (0) 'MS-DOS'\n-1973BE General Purpose Flag  0808 (2056)\n+19DE55 LOCAL HEADER #1527    04034B50 (67324752)\n+19DE59 Extract Zip Spec      14 (20) '2.0'\n+19DE5A Extract OS            00 (0) 'MS-DOS'\n+19DE5B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1973C0 Compression Method    0008 (8) 'Deflated'\n-1973C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1973C6 CRC                   00000000 (0)\n-1973CA Compressed Size       00000000 (0)\n-1973CE Uncompressed Size     00000000 (0)\n-1973D2 Filename Length       002B (43)\n-1973D4 Extra Length          0000 (0)\n-1973D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19DE5D Compression Method    0008 (8) 'Deflated'\n+19DE5F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19DE63 CRC                   00000000 (0)\n+19DE67 Compressed Size       00000000 (0)\n+19DE6B Uncompressed Size     00000000 (0)\n+19DE6F Filename Length       003D (61)\n+19DE71 Extra Length          0000 (0)\n+19DE73 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1973D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19DE73: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-197401 PAYLOAD               XX\n+19DEB0 PAYLOAD\n \n-197403 DATA DESCRIPTOR       08074B50 (134695760)\n-197407 CRC                   00000000 (0)\n-19740B Compressed Size       00000002 (2)\n-19740F Uncompressed Size     00000000 (0)\n+19E1FB DATA DESCRIPTOR       08074B50 (134695760)\n+19E1FF CRC                   1A2117E1 (438376417)\n+19E203 Compressed Size       0000034B (843)\n+19E207 Uncompressed Size     000007D9 (2009)\n \n-197413 LOCAL HEADER #1528    04034B50 (67324752)\n-197417 Extract Zip Spec      14 (20) '2.0'\n-197418 Extract OS            00 (0) 'MS-DOS'\n-197419 General Purpose Flag  0808 (2056)\n+19E20B LOCAL HEADER #1528    04034B50 (67324752)\n+19E20F Extract Zip Spec      14 (20) '2.0'\n+19E210 Extract OS            00 (0) 'MS-DOS'\n+19E211 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19741B Compression Method    0008 (8) 'Deflated'\n-19741D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-197421 CRC                   00000000 (0)\n-197425 Compressed Size       00000000 (0)\n-197429 Uncompressed Size     00000000 (0)\n-19742D Filename Length       0043 (67)\n-19742F Extra Length          0000 (0)\n-197431 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19E213 Compression Method    0008 (8) 'Deflated'\n+19E215 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19E219 CRC                   00000000 (0)\n+19E21D Compressed Size       00000000 (0)\n+19E221 Uncompressed Size     00000000 (0)\n+19E225 Filename Length       0031 (49)\n+19E227 Extra Length          0000 (0)\n+19E229 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x197431: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19E229: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-197474 PAYLOAD\n+19E25A PAYLOAD               XX\n \n-197892 DATA DESCRIPTOR       08074B50 (134695760)\n-197896 CRC                   313A7353 (825914195)\n-19789A Compressed Size       0000041E (1054)\n-19789E Uncompressed Size     00000D23 (3363)\n+19E25C DATA DESCRIPTOR       08074B50 (134695760)\n+19E260 CRC                   00000000 (0)\n+19E264 Compressed Size       00000002 (2)\n+19E268 Uncompressed Size     00000000 (0)\n \n-1978A2 LOCAL HEADER #1529    04034B50 (67324752)\n-1978A6 Extract Zip Spec      14 (20) '2.0'\n-1978A7 Extract OS            00 (0) 'MS-DOS'\n-1978A8 General Purpose Flag  0808 (2056)\n+19E26C LOCAL HEADER #1529    04034B50 (67324752)\n+19E270 Extract Zip Spec      14 (20) '2.0'\n+19E271 Extract OS            00 (0) 'MS-DOS'\n+19E272 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1978AA Compression Method    0008 (8) 'Deflated'\n-1978AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1978B0 CRC                   00000000 (0)\n-1978B4 Compressed Size       00000000 (0)\n-1978B8 Uncompressed Size     00000000 (0)\n-1978BC Filename Length       0044 (68)\n-1978BE Extra Length          0000 (0)\n-1978C0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19E274 Compression Method    0008 (8) 'Deflated'\n+19E276 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19E27A CRC                   00000000 (0)\n+19E27E Compressed Size       00000000 (0)\n+19E282 Uncompressed Size     00000000 (0)\n+19E286 Filename Length       0046 (70)\n+19E288 Extra Length          0000 (0)\n+19E28A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1978C0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19E28A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-197904 PAYLOAD\n+19E2D0 PAYLOAD\n \n-197CE3 DATA DESCRIPTOR       08074B50 (134695760)\n-197CE7 CRC                   86605046 (2254458950)\n-197CEB Compressed Size       000003DF (991)\n-197CEF Uncompressed Size     00000CE3 (3299)\n+19E78C DATA DESCRIPTOR       08074B50 (134695760)\n+19E790 CRC                   9E944773 (2660517747)\n+19E794 Compressed Size       000004BC (1212)\n+19E798 Uncompressed Size     0000135F (4959)\n \n-197CF3 LOCAL HEADER #1530    04034B50 (67324752)\n-197CF7 Extract Zip Spec      14 (20) '2.0'\n-197CF8 Extract OS            00 (0) 'MS-DOS'\n-197CF9 General Purpose Flag  0808 (2056)\n+19E79C LOCAL HEADER #1530    04034B50 (67324752)\n+19E7A0 Extract Zip Spec      14 (20) '2.0'\n+19E7A1 Extract OS            00 (0) 'MS-DOS'\n+19E7A2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-197CFB Compression Method    0008 (8) 'Deflated'\n-197CFD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-197D01 CRC                   00000000 (0)\n-197D05 Compressed Size       00000000 (0)\n-197D09 Uncompressed Size     00000000 (0)\n-197D0D Filename Length       0045 (69)\n-197D0F Extra Length          0000 (0)\n-197D11 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19E7A4 Compression Method    0008 (8) 'Deflated'\n+19E7A6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19E7AA CRC                   00000000 (0)\n+19E7AE Compressed Size       00000000 (0)\n+19E7B2 Uncompressed Size     00000000 (0)\n+19E7B6 Filename Length       0047 (71)\n+19E7B8 Extra Length          0000 (0)\n+19E7BA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x197D11: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19E7BA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-197D56 PAYLOAD\n+19E801 PAYLOAD\n \n-198078 DATA DESCRIPTOR       08074B50 (134695760)\n-19807C CRC                   4FF68747 (1341556551)\n-198080 Compressed Size       00000322 (802)\n-198084 Uncompressed Size     00000780 (1920)\n+19EC01 DATA DESCRIPTOR       08074B50 (134695760)\n+19EC05 CRC                   75FA3855 (1979332693)\n+19EC09 Compressed Size       00000400 (1024)\n+19EC0D Uncompressed Size     00000D57 (3415)\n \n-198088 LOCAL HEADER #1531    04034B50 (67324752)\n-19808C Extract Zip Spec      14 (20) '2.0'\n-19808D Extract OS            00 (0) 'MS-DOS'\n-19808E General Purpose Flag  0808 (2056)\n+19EC11 LOCAL HEADER #1531    04034B50 (67324752)\n+19EC15 Extract Zip Spec      14 (20) '2.0'\n+19EC16 Extract OS            00 (0) 'MS-DOS'\n+19EC17 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-198090 Compression Method    0008 (8) 'Deflated'\n-198092 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-198096 CRC                   00000000 (0)\n-19809A Compressed Size       00000000 (0)\n-19809E Uncompressed Size     00000000 (0)\n-1980A2 Filename Length       0026 (38)\n-1980A4 Extra Length          0000 (0)\n-1980A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19EC19 Compression Method    0008 (8) 'Deflated'\n+19EC1B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19EC1F CRC                   00000000 (0)\n+19EC23 Compressed Size       00000000 (0)\n+19EC27 Uncompressed Size     00000000 (0)\n+19EC2B Filename Length       0048 (72)\n+19EC2D Extra Length          0000 (0)\n+19EC2F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1980A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19EC2F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1980CC PAYLOAD               XX\n+19EC77 PAYLOAD\n \n-1980CE DATA DESCRIPTOR       08074B50 (134695760)\n-1980D2 CRC                   00000000 (0)\n-1980D6 Compressed Size       00000002 (2)\n-1980DA Uncompressed Size     00000000 (0)\n+19EFC6 DATA DESCRIPTOR       08074B50 (134695760)\n+19EFCA CRC                   90B7F551 (2427974993)\n+19EFCE Compressed Size       0000034F (847)\n+19EFD2 Uncompressed Size     000007D2 (2002)\n \n-1980DE LOCAL HEADER #1532    04034B50 (67324752)\n-1980E2 Extract Zip Spec      14 (20) '2.0'\n-1980E3 Extract OS            00 (0) 'MS-DOS'\n-1980E4 General Purpose Flag  0808 (2056)\n+19EFD6 LOCAL HEADER #1532    04034B50 (67324752)\n+19EFDA Extract Zip Spec      14 (20) '2.0'\n+19EFDB Extract OS            00 (0) 'MS-DOS'\n+19EFDC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1980E6 Compression Method    0008 (8) 'Deflated'\n-1980E8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1980EC CRC                   00000000 (0)\n-1980F0 Compressed Size       00000000 (0)\n-1980F4 Uncompressed Size     00000000 (0)\n-1980F8 Filename Length       0035 (53)\n-1980FA Extra Length          0000 (0)\n-1980FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19EFDE Compression Method    0008 (8) 'Deflated'\n+19EFE0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19EFE4 CRC                   00000000 (0)\n+19EFE8 Compressed Size       00000000 (0)\n+19EFEC Uncompressed Size     00000000 (0)\n+19EFF0 Filename Length       002D (45)\n+19EFF2 Extra Length          0000 (0)\n+19EFF4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1980FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19EFF4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-198131 PAYLOAD\n+19F021 PAYLOAD               XX\n \n-198445 DATA DESCRIPTOR       08074B50 (134695760)\n-198449 CRC                   1FDC8762 (534546274)\n-19844D Compressed Size       00000314 (788)\n-198451 Uncompressed Size     00000721 (1825)\n+19F023 DATA DESCRIPTOR       08074B50 (134695760)\n+19F027 CRC                   00000000 (0)\n+19F02B Compressed Size       00000002 (2)\n+19F02F Uncompressed Size     00000000 (0)\n \n-198455 LOCAL HEADER #1533    04034B50 (67324752)\n-198459 Extract Zip Spec      14 (20) '2.0'\n-19845A Extract OS            00 (0) 'MS-DOS'\n-19845B General Purpose Flag  0808 (2056)\n+19F033 LOCAL HEADER #1533    04034B50 (67324752)\n+19F037 Extract Zip Spec      14 (20) '2.0'\n+19F038 Extract OS            00 (0) 'MS-DOS'\n+19F039 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19845D Compression Method    0008 (8) 'Deflated'\n-19845F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-198463 CRC                   00000000 (0)\n-198467 Compressed Size       00000000 (0)\n-19846B Uncompressed Size     00000000 (0)\n-19846F Filename Length       0039 (57)\n-198471 Extra Length          0000 (0)\n-198473 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19F03B Compression Method    0008 (8) 'Deflated'\n+19F03D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19F041 CRC                   00000000 (0)\n+19F045 Compressed Size       00000000 (0)\n+19F049 Uncompressed Size     00000000 (0)\n+19F04D Filename Length       0045 (69)\n+19F04F Extra Length          0000 (0)\n+19F051 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x198473: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19F051: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1984AC PAYLOAD\n+19F096 PAYLOAD\n \n-19889E DATA DESCRIPTOR       08074B50 (134695760)\n-1988A2 CRC                   58015D22 (1476484386)\n-1988A6 Compressed Size       000003F2 (1010)\n-1988AA Uncompressed Size     00000CF3 (3315)\n+19F71F DATA DESCRIPTOR       08074B50 (134695760)\n+19F723 CRC                   B5FDD8AE (3053312174)\n+19F727 Compressed Size       00000689 (1673)\n+19F72B Uncompressed Size     00001750 (5968)\n \n-1988AE LOCAL HEADER #1534    04034B50 (67324752)\n-1988B2 Extract Zip Spec      14 (20) '2.0'\n-1988B3 Extract OS            00 (0) 'MS-DOS'\n-1988B4 General Purpose Flag  0808 (2056)\n+19F72F LOCAL HEADER #1534    04034B50 (67324752)\n+19F733 Extract Zip Spec      14 (20) '2.0'\n+19F734 Extract OS            00 (0) 'MS-DOS'\n+19F735 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1988B6 Compression Method    0008 (8) 'Deflated'\n-1988B8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1988BC CRC                   00000000 (0)\n-1988C0 Compressed Size       00000000 (0)\n-1988C4 Uncompressed Size     00000000 (0)\n-1988C8 Filename Length       003A (58)\n-1988CA Extra Length          0000 (0)\n-1988CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19F737 Compression Method    0008 (8) 'Deflated'\n+19F739 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19F73D CRC                   00000000 (0)\n+19F741 Compressed Size       00000000 (0)\n+19F745 Uncompressed Size     00000000 (0)\n+19F749 Filename Length       003B (59)\n+19F74B Extra Length          0000 (0)\n+19F74D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1988CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19F74D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-198906 PAYLOAD\n+19F788 PAYLOAD\n \n-198C89 DATA DESCRIPTOR       08074B50 (134695760)\n-198C8D CRC                   5529CB85 (1428802437)\n-198C91 Compressed Size       00000383 (899)\n-198C95 Uncompressed Size     00000B6A (2922)\n+19FA58 DATA DESCRIPTOR       08074B50 (134695760)\n+19FA5C CRC                   F7853FBB (4152704955)\n+19FA60 Compressed Size       000002D0 (720)\n+19FA64 Uncompressed Size     000005F7 (1527)\n \n-198C99 LOCAL HEADER #1535    04034B50 (67324752)\n-198C9D Extract Zip Spec      14 (20) '2.0'\n-198C9E Extract OS            00 (0) 'MS-DOS'\n-198C9F General Purpose Flag  0808 (2056)\n+19FA68 LOCAL HEADER #1535    04034B50 (67324752)\n+19FA6C Extract Zip Spec      14 (20) '2.0'\n+19FA6D Extract OS            00 (0) 'MS-DOS'\n+19FA6E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-198CA1 Compression Method    0008 (8) 'Deflated'\n-198CA3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-198CA7 CRC                   00000000 (0)\n-198CAB Compressed Size       00000000 (0)\n-198CAF Uncompressed Size     00000000 (0)\n-198CB3 Filename Length       003B (59)\n-198CB5 Extra Length          0000 (0)\n-198CB7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19FA70 Compression Method    0008 (8) 'Deflated'\n+19FA72 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19FA76 CRC                   00000000 (0)\n+19FA7A Compressed Size       00000000 (0)\n+19FA7E Uncompressed Size     00000000 (0)\n+19FA82 Filename Length       0043 (67)\n+19FA84 Extra Length          0000 (0)\n+19FA86 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x198CB7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19FA86: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-198CF2 PAYLOAD\n+19FAC9 PAYLOAD\n \n-199007 DATA DESCRIPTOR       08074B50 (134695760)\n-19900B CRC                   E3E7B767 (3823613799)\n-19900F Compressed Size       00000315 (789)\n-199013 Uncompressed Size     00000753 (1875)\n+19FD8A DATA DESCRIPTOR       08074B50 (134695760)\n+19FD8E CRC                   E7186373 (3877135219)\n+19FD92 Compressed Size       000002C1 (705)\n+19FD96 Uncompressed Size     00000585 (1413)\n \n-199017 LOCAL HEADER #1536    04034B50 (67324752)\n-19901B Extract Zip Spec      14 (20) '2.0'\n-19901C Extract OS            00 (0) 'MS-DOS'\n-19901D General Purpose Flag  0808 (2056)\n+19FD9A LOCAL HEADER #1536    04034B50 (67324752)\n+19FD9E Extract Zip Spec      14 (20) '2.0'\n+19FD9F Extract OS            00 (0) 'MS-DOS'\n+19FDA0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19901F Compression Method    0008 (8) 'Deflated'\n-199021 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-199025 CRC                   00000000 (0)\n-199029 Compressed Size       00000000 (0)\n-19902D Uncompressed Size     00000000 (0)\n-199031 Filename Length       002B (43)\n-199033 Extra Length          0000 (0)\n-199035 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+19FDA2 Compression Method    0008 (8) 'Deflated'\n+19FDA4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+19FDA8 CRC                   00000000 (0)\n+19FDAC Compressed Size       00000000 (0)\n+19FDB0 Uncompressed Size     00000000 (0)\n+19FDB4 Filename Length       0046 (70)\n+19FDB6 Extra Length          0000 (0)\n+19FDB8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x199035: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x19FDB8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-199060 PAYLOAD               XX\n+19FDFE PAYLOAD\n \n-199062 DATA DESCRIPTOR       08074B50 (134695760)\n-199066 CRC                   00000000 (0)\n-19906A Compressed Size       00000002 (2)\n-19906E Uncompressed Size     00000000 (0)\n+1A006C DATA DESCRIPTOR       08074B50 (134695760)\n+1A0070 CRC                   080350B9 (134435001)\n+1A0074 Compressed Size       0000026E (622)\n+1A0078 Uncompressed Size     00000480 (1152)\n \n-199072 LOCAL HEADER #1537    04034B50 (67324752)\n-199076 Extract Zip Spec      14 (20) '2.0'\n-199077 Extract OS            00 (0) 'MS-DOS'\n-199078 General Purpose Flag  0808 (2056)\n+1A007C LOCAL HEADER #1537    04034B50 (67324752)\n+1A0080 Extract Zip Spec      14 (20) '2.0'\n+1A0081 Extract OS            00 (0) 'MS-DOS'\n+1A0082 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19907A Compression Method    0008 (8) 'Deflated'\n-19907C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-199080 CRC                   00000000 (0)\n-199084 Compressed Size       00000000 (0)\n-199088 Uncompressed Size     00000000 (0)\n-19908C Filename Length       0043 (67)\n-19908E Extra Length          0000 (0)\n-199090 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A0084 Compression Method    0008 (8) 'Deflated'\n+1A0086 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A008A CRC                   00000000 (0)\n+1A008E Compressed Size       00000000 (0)\n+1A0092 Uncompressed Size     00000000 (0)\n+1A0096 Filename Length       0048 (72)\n+1A0098 Extra Length          0000 (0)\n+1A009A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x199090: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A009A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1990D3 PAYLOAD\n+1A00E2 PAYLOAD\n \n-19952A DATA DESCRIPTOR       08074B50 (134695760)\n-19952E CRC                   D5F6B94F (3589716303)\n-199532 Compressed Size       00000457 (1111)\n-199536 Uncompressed Size     00000D44 (3396)\n+1A0393 DATA DESCRIPTOR       08074B50 (134695760)\n+1A0397 CRC                   39A8FB9C (967375772)\n+1A039B Compressed Size       000002B1 (689)\n+1A039F Uncompressed Size     0000053D (1341)\n \n-19953A LOCAL HEADER #1538    04034B50 (67324752)\n-19953E Extract Zip Spec      14 (20) '2.0'\n-19953F Extract OS            00 (0) 'MS-DOS'\n-199540 General Purpose Flag  0808 (2056)\n+1A03A3 LOCAL HEADER #1538    04034B50 (67324752)\n+1A03A7 Extract Zip Spec      14 (20) '2.0'\n+1A03A8 Extract OS            00 (0) 'MS-DOS'\n+1A03A9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-199542 Compression Method    0008 (8) 'Deflated'\n-199544 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-199548 CRC                   00000000 (0)\n-19954C Compressed Size       00000000 (0)\n-199550 Uncompressed Size     00000000 (0)\n-199554 Filename Length       0044 (68)\n-199556 Extra Length          0000 (0)\n-199558 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A03AB Compression Method    0008 (8) 'Deflated'\n+1A03AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A03B1 CRC                   00000000 (0)\n+1A03B5 Compressed Size       00000000 (0)\n+1A03B9 Uncompressed Size     00000000 (0)\n+1A03BD Filename Length       0039 (57)\n+1A03BF Extra Length          0000 (0)\n+1A03C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x199558: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A03C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19959C PAYLOAD\n+1A03FA PAYLOAD               XX\n \n-1999B2 DATA DESCRIPTOR       08074B50 (134695760)\n-1999B6 CRC                   DDF975D0 (3724113360)\n-1999BA Compressed Size       00000416 (1046)\n-1999BE Uncompressed Size     00000CCA (3274)\n+1A03FC DATA DESCRIPTOR       08074B50 (134695760)\n+1A0400 CRC                   00000000 (0)\n+1A0404 Compressed Size       00000002 (2)\n+1A0408 Uncompressed Size     00000000 (0)\n \n-1999C2 LOCAL HEADER #1539    04034B50 (67324752)\n-1999C6 Extract Zip Spec      14 (20) '2.0'\n-1999C7 Extract OS            00 (0) 'MS-DOS'\n-1999C8 General Purpose Flag  0808 (2056)\n+1A040C LOCAL HEADER #1539    04034B50 (67324752)\n+1A0410 Extract Zip Spec      14 (20) '2.0'\n+1A0411 Extract OS            00 (0) 'MS-DOS'\n+1A0412 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1999CA Compression Method    0008 (8) 'Deflated'\n-1999CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1999D0 CRC                   00000000 (0)\n-1999D4 Compressed Size       00000000 (0)\n-1999D8 Uncompressed Size     00000000 (0)\n-1999DC Filename Length       0045 (69)\n-1999DE Extra Length          0000 (0)\n-1999E0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A0414 Compression Method    0008 (8) 'Deflated'\n+1A0416 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A041A CRC                   00000000 (0)\n+1A041E Compressed Size       00000000 (0)\n+1A0422 Uncompressed Size     00000000 (0)\n+1A0426 Filename Length       0040 (64)\n+1A0428 Extra Length          0000 (0)\n+1A042A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1999E0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A042A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-199A25 PAYLOAD\n+1A046A PAYLOAD\n \n-199D5C DATA DESCRIPTOR       08074B50 (134695760)\n-199D60 CRC                   B8EAACB4 (3102387380)\n-199D64 Compressed Size       00000337 (823)\n-199D68 Uncompressed Size     000007BB (1979)\n+1A07E7 DATA DESCRIPTOR       08074B50 (134695760)\n+1A07EB CRC                   CA9739B0 (3398908336)\n+1A07EF Compressed Size       0000037D (893)\n+1A07F3 Uncompressed Size     0000087F (2175)\n \n-199D6C LOCAL HEADER #1540    04034B50 (67324752)\n-199D70 Extract Zip Spec      14 (20) '2.0'\n-199D71 Extract OS            00 (0) 'MS-DOS'\n-199D72 General Purpose Flag  0808 (2056)\n+1A07F7 LOCAL HEADER #1540    04034B50 (67324752)\n+1A07FB Extract Zip Spec      14 (20) '2.0'\n+1A07FC Extract OS            00 (0) 'MS-DOS'\n+1A07FD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-199D74 Compression Method    0008 (8) 'Deflated'\n-199D76 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-199D7A CRC                   00000000 (0)\n-199D7E Compressed Size       00000000 (0)\n-199D82 Uncompressed Size     00000000 (0)\n-199D86 Filename Length       0049 (73)\n-199D88 Extra Length          0000 (0)\n-199D8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A07FF Compression Method    0008 (8) 'Deflated'\n+1A0801 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A0805 CRC                   00000000 (0)\n+1A0809 Compressed Size       00000000 (0)\n+1A080D Uncompressed Size     00000000 (0)\n+1A0811 Filename Length       0047 (71)\n+1A0813 Extra Length          0000 (0)\n+1A0815 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x199D8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A0815: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-199DD3 PAYLOAD\n+1A085C PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-19A03A DATA DESCRIPTOR       08074B50 (134695760)\n-19A03E CRC                   A762DB85 (2808273797)\n-19A042 Compressed Size       00000267 (615)\n-19A046 Uncompressed Size     00000487 (1159)\n+1A08A8 DATA DESCRIPTOR       08074B50 (134695760)\n+1A08AC CRC                   BCFDA422 (3170739234)\n+1A08B0 Compressed Size       0000004C (76)\n+1A08B4 Uncompressed Size     0000004F (79)\n \n-19A04A LOCAL HEADER #1541    04034B50 (67324752)\n-19A04E Extract Zip Spec      14 (20) '2.0'\n-19A04F Extract OS            00 (0) 'MS-DOS'\n-19A050 General Purpose Flag  0808 (2056)\n+1A08B8 LOCAL HEADER #1541    04034B50 (67324752)\n+1A08BC Extract Zip Spec      14 (20) '2.0'\n+1A08BD Extract OS            00 (0) 'MS-DOS'\n+1A08BE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19A052 Compression Method    0008 (8) 'Deflated'\n-19A054 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19A058 CRC                   00000000 (0)\n-19A05C Compressed Size       00000000 (0)\n-19A060 Uncompressed Size     00000000 (0)\n-19A064 Filename Length       0031 (49)\n-19A066 Extra Length          0000 (0)\n-19A068 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A08C0 Compression Method    0008 (8) 'Deflated'\n+1A08C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A08C6 CRC                   00000000 (0)\n+1A08CA Compressed Size       00000000 (0)\n+1A08CE Uncompressed Size     00000000 (0)\n+1A08D2 Filename Length       0027 (39)\n+1A08D4 Extra Length          0000 (0)\n+1A08D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19A068: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A08D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19A099 PAYLOAD               XX\n+1A08FD PAYLOAD               XX\n \n-19A09B DATA DESCRIPTOR       08074B50 (134695760)\n-19A09F CRC                   00000000 (0)\n-19A0A3 Compressed Size       00000002 (2)\n-19A0A7 Uncompressed Size     00000000 (0)\n+1A08FF DATA DESCRIPTOR       08074B50 (134695760)\n+1A0903 CRC                   00000000 (0)\n+1A0907 Compressed Size       00000002 (2)\n+1A090B Uncompressed Size     00000000 (0)\n \n-19A0AB LOCAL HEADER #1542    04034B50 (67324752)\n-19A0AF Extract Zip Spec      14 (20) '2.0'\n-19A0B0 Extract OS            00 (0) 'MS-DOS'\n-19A0B1 General Purpose Flag  0808 (2056)\n+1A090F LOCAL HEADER #1542    04034B50 (67324752)\n+1A0913 Extract Zip Spec      14 (20) '2.0'\n+1A0914 Extract OS            00 (0) 'MS-DOS'\n+1A0915 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19A0B3 Compression Method    0008 (8) 'Deflated'\n-19A0B5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19A0B9 CRC                   00000000 (0)\n-19A0BD Compressed Size       00000000 (0)\n-19A0C1 Uncompressed Size     00000000 (0)\n-19A0C5 Filename Length       0058 (88)\n-19A0C7 Extra Length          0000 (0)\n-19A0C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A0917 Compression Method    0008 (8) 'Deflated'\n+1A0919 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A091D CRC                   00000000 (0)\n+1A0921 Compressed Size       00000000 (0)\n+1A0925 Uncompressed Size     00000000 (0)\n+1A0929 Filename Length       003B (59)\n+1A092B Extra Length          0000 (0)\n+1A092D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19A0C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A092D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19A121 PAYLOAD\n+1A0968 PAYLOAD\n \n-19A3D3 DATA DESCRIPTOR       08074B50 (134695760)\n-19A3D7 CRC                   E10895F0 (3775436272)\n-19A3DB Compressed Size       000002B2 (690)\n-19A3DF Uncompressed Size     000005A8 (1448)\n+1A0E06 DATA DESCRIPTOR       08074B50 (134695760)\n+1A0E0A CRC                   3E0609F4 (1040583156)\n+1A0E0E Compressed Size       0000049E (1182)\n+1A0E12 Uncompressed Size     00000E94 (3732)\n \n-19A3E3 LOCAL HEADER #1543    04034B50 (67324752)\n-19A3E7 Extract Zip Spec      14 (20) '2.0'\n-19A3E8 Extract OS            00 (0) 'MS-DOS'\n-19A3E9 General Purpose Flag  0808 (2056)\n+1A0E16 LOCAL HEADER #1543    04034B50 (67324752)\n+1A0E1A Extract Zip Spec      14 (20) '2.0'\n+1A0E1B Extract OS            00 (0) 'MS-DOS'\n+1A0E1C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19A3EB Compression Method    0008 (8) 'Deflated'\n-19A3ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19A3F1 CRC                   00000000 (0)\n-19A3F5 Compressed Size       00000000 (0)\n-19A3F9 Uncompressed Size     00000000 (0)\n-19A3FD Filename Length       0057 (87)\n-19A3FF Extra Length          0000 (0)\n-19A401 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A0E1E Compression Method    0008 (8) 'Deflated'\n+1A0E20 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A0E24 CRC                   00000000 (0)\n+1A0E28 Compressed Size       00000000 (0)\n+1A0E2C Uncompressed Size     00000000 (0)\n+1A0E30 Filename Length       003C (60)\n+1A0E32 Extra Length          0000 (0)\n+1A0E34 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19A401: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A0E34: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19A458 PAYLOAD\n+1A0E70 PAYLOAD\n \n-19A6C3 DATA DESCRIPTOR       08074B50 (134695760)\n-19A6C7 CRC                   EE1761D8 (3994509784)\n-19A6CB Compressed Size       0000026B (619)\n-19A6CF Uncompressed Size     000004C6 (1222)\n+1A1298 DATA DESCRIPTOR       08074B50 (134695760)\n+1A129C CRC                   99ADAD26 (2578296102)\n+1A12A0 Compressed Size       00000428 (1064)\n+1A12A4 Uncompressed Size     00000CCF (3279)\n \n-19A6D3 LOCAL HEADER #1544    04034B50 (67324752)\n-19A6D7 Extract Zip Spec      14 (20) '2.0'\n-19A6D8 Extract OS            00 (0) 'MS-DOS'\n-19A6D9 General Purpose Flag  0808 (2056)\n+1A12A8 LOCAL HEADER #1544    04034B50 (67324752)\n+1A12AC Extract Zip Spec      14 (20) '2.0'\n+1A12AD Extract OS            00 (0) 'MS-DOS'\n+1A12AE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19A6DB Compression Method    0008 (8) 'Deflated'\n-19A6DD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19A6E1 CRC                   00000000 (0)\n-19A6E5 Compressed Size       00000000 (0)\n-19A6E9 Uncompressed Size     00000000 (0)\n-19A6ED Filename Length       0050 (80)\n-19A6EF Extra Length          0000 (0)\n-19A6F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A12B0 Compression Method    0008 (8) 'Deflated'\n+1A12B2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A12B6 CRC                   00000000 (0)\n+1A12BA Compressed Size       00000000 (0)\n+1A12BE Uncompressed Size     00000000 (0)\n+1A12C2 Filename Length       003D (61)\n+1A12C4 Extra Length          0000 (0)\n+1A12C6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19A6F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A12C6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19A741 PAYLOAD\n+1A1303 PAYLOAD\n \n-19AA63 DATA DESCRIPTOR       08074B50 (134695760)\n-19AA67 CRC                   FCEAC14E (4243243342)\n-19AA6B Compressed Size       00000322 (802)\n-19AA6F Uncompressed Size     00000729 (1833)\n+1A15EC DATA DESCRIPTOR       08074B50 (134695760)\n+1A15F0 CRC                   61EF883C (1643087932)\n+1A15F4 Compressed Size       000002E9 (745)\n+1A15F8 Uncompressed Size     00000719 (1817)\n \n-19AA73 LOCAL HEADER #1545    04034B50 (67324752)\n-19AA77 Extract Zip Spec      14 (20) '2.0'\n-19AA78 Extract OS            00 (0) 'MS-DOS'\n-19AA79 General Purpose Flag  0808 (2056)\n+1A15FC LOCAL HEADER #1545    04034B50 (67324752)\n+1A1600 Extract Zip Spec      14 (20) '2.0'\n+1A1601 Extract OS            00 (0) 'MS-DOS'\n+1A1602 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19AA7B Compression Method    0008 (8) 'Deflated'\n-19AA7D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19AA81 CRC                   00000000 (0)\n-19AA85 Compressed Size       00000000 (0)\n-19AA89 Uncompressed Size     00000000 (0)\n-19AA8D Filename Length       0059 (89)\n-19AA8F Extra Length          0000 (0)\n-19AA91 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A1604 Compression Method    0008 (8) 'Deflated'\n+1A1606 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A160A CRC                   00000000 (0)\n+1A160E Compressed Size       00000000 (0)\n+1A1612 Uncompressed Size     00000000 (0)\n+1A1616 Filename Length       0039 (57)\n+1A1618 Extra Length          0000 (0)\n+1A161A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19AA91: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A161A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19AAEA PAYLOAD\n+1A1653 PAYLOAD               XX\n \n-19AE68 DATA DESCRIPTOR       08074B50 (134695760)\n-19AE6C CRC                   8464A9F5 (2221189621)\n-19AE70 Compressed Size       0000037E (894)\n-19AE74 Uncompressed Size     00000892 (2194)\n+1A1655 DATA DESCRIPTOR       08074B50 (134695760)\n+1A1659 CRC                   00000000 (0)\n+1A165D Compressed Size       00000002 (2)\n+1A1661 Uncompressed Size     00000000 (0)\n \n-19AE78 LOCAL HEADER #1546    04034B50 (67324752)\n-19AE7C Extract Zip Spec      14 (20) '2.0'\n-19AE7D Extract OS            00 (0) 'MS-DOS'\n-19AE7E General Purpose Flag  0808 (2056)\n+1A1665 LOCAL HEADER #1546    04034B50 (67324752)\n+1A1669 Extract Zip Spec      14 (20) '2.0'\n+1A166A Extract OS            00 (0) 'MS-DOS'\n+1A166B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19AE80 Compression Method    0008 (8) 'Deflated'\n-19AE82 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19AE86 CRC                   00000000 (0)\n-19AE8A Compressed Size       00000000 (0)\n-19AE8E Uncompressed Size     00000000 (0)\n-19AE92 Filename Length       0063 (99)\n-19AE94 Extra Length          0000 (0)\n-19AE96 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A166D Compression Method    0008 (8) 'Deflated'\n+1A166F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A1673 CRC                   00000000 (0)\n+1A1677 Compressed Size       00000000 (0)\n+1A167B Uncompressed Size     00000000 (0)\n+1A167F Filename Length       0040 (64)\n+1A1681 Extra Length          0000 (0)\n+1A1683 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19AE96: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A1683: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19AEF9 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+1A16C3 PAYLOAD\n \n-19AF53 DATA DESCRIPTOR       08074B50 (134695760)\n-19AF57 CRC                   433990B3 (1127846067)\n-19AF5B Compressed Size       0000005A (90)\n-19AF5F Uncompressed Size     000000B9 (185)\n+1A1A2B DATA DESCRIPTOR       08074B50 (134695760)\n+1A1A2F CRC                   7B8B6784 (2072733572)\n+1A1A33 Compressed Size       00000368 (872)\n+1A1A37 Uncompressed Size     00000819 (2073)\n \n-19AF63 LOCAL HEADER #1547    04034B50 (67324752)\n-19AF67 Extract Zip Spec      14 (20) '2.0'\n-19AF68 Extract OS            00 (0) 'MS-DOS'\n-19AF69 General Purpose Flag  0808 (2056)\n+1A1A3B LOCAL HEADER #1547    04034B50 (67324752)\n+1A1A3F Extract Zip Spec      14 (20) '2.0'\n+1A1A40 Extract OS            00 (0) 'MS-DOS'\n+1A1A41 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19AF6B Compression Method    0008 (8) 'Deflated'\n-19AF6D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19AF71 CRC                   00000000 (0)\n-19AF75 Compressed Size       00000000 (0)\n-19AF79 Uncompressed Size     00000000 (0)\n-19AF7D Filename Length       001B (27)\n-19AF7F Extra Length          0000 (0)\n-19AF81 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A1A43 Compression Method    0008 (8) 'Deflated'\n+1A1A45 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A1A49 CRC                   00000000 (0)\n+1A1A4D Compressed Size       00000000 (0)\n+1A1A51 Uncompressed Size     00000000 (0)\n+1A1A55 Filename Length       0047 (71)\n+1A1A57 Extra Length          0000 (0)\n+1A1A59 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19AF81: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A1A59: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19AF9C PAYLOAD               XX\n+1A1AA0 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-19AF9E DATA DESCRIPTOR       08074B50 (134695760)\n-19AFA2 CRC                   00000000 (0)\n-19AFA6 Compressed Size       00000002 (2)\n-19AFAA Uncompressed Size     00000000 (0)\n+1A1AEC DATA DESCRIPTOR       08074B50 (134695760)\n+1A1AF0 CRC                   47014A41 (1191266881)\n+1A1AF4 Compressed Size       0000004C (76)\n+1A1AF8 Uncompressed Size     0000004F (79)\n \n-19AFAE LOCAL HEADER #1548    04034B50 (67324752)\n-19AFB2 Extract Zip Spec      14 (20) '2.0'\n-19AFB3 Extract OS            00 (0) 'MS-DOS'\n-19AFB4 General Purpose Flag  0808 (2056)\n+1A1AFC LOCAL HEADER #1548    04034B50 (67324752)\n+1A1B00 Extract Zip Spec      14 (20) '2.0'\n+1A1B01 Extract OS            00 (0) 'MS-DOS'\n+1A1B02 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19AFB6 Compression Method    0008 (8) 'Deflated'\n-19AFB8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19AFBC CRC                   00000000 (0)\n-19AFC0 Compressed Size       00000000 (0)\n-19AFC4 Uncompressed Size     00000000 (0)\n-19AFC8 Filename Length       0023 (35)\n-19AFCA Extra Length          0000 (0)\n-19AFCC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A1B04 Compression Method    0008 (8) 'Deflated'\n+1A1B06 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A1B0A CRC                   00000000 (0)\n+1A1B0E Compressed Size       00000000 (0)\n+1A1B12 Uncompressed Size     00000000 (0)\n+1A1B16 Filename Length       002D (45)\n+1A1B18 Extra Length          0000 (0)\n+1A1B1A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19AFCC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A1B1A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19AFEF PAYLOAD               XX\n+1A1B47 PAYLOAD               XX\n \n-19AFF1 DATA DESCRIPTOR       08074B50 (134695760)\n-19AFF5 CRC                   00000000 (0)\n-19AFF9 Compressed Size       00000002 (2)\n-19AFFD Uncompressed Size     00000000 (0)\n+1A1B49 DATA DESCRIPTOR       08074B50 (134695760)\n+1A1B4D CRC                   00000000 (0)\n+1A1B51 Compressed Size       00000002 (2)\n+1A1B55 Uncompressed Size     00000000 (0)\n \n-19B001 LOCAL HEADER #1549    04034B50 (67324752)\n-19B005 Extract Zip Spec      14 (20) '2.0'\n-19B006 Extract OS            00 (0) 'MS-DOS'\n-19B007 General Purpose Flag  0808 (2056)\n+1A1B59 LOCAL HEADER #1549    04034B50 (67324752)\n+1A1B5D Extract Zip Spec      14 (20) '2.0'\n+1A1B5E Extract OS            00 (0) 'MS-DOS'\n+1A1B5F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19B009 Compression Method    0008 (8) 'Deflated'\n-19B00B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19B00F CRC                   00000000 (0)\n-19B013 Compressed Size       00000000 (0)\n-19B017 Uncompressed Size     00000000 (0)\n-19B01B Filename Length       003B (59)\n-19B01D Extra Length          0000 (0)\n-19B01F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A1B61 Compression Method    0008 (8) 'Deflated'\n+1A1B63 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A1B67 CRC                   00000000 (0)\n+1A1B6B Compressed Size       00000000 (0)\n+1A1B6F Uncompressed Size     00000000 (0)\n+1A1B73 Filename Length       0047 (71)\n+1A1B75 Extra Length          0000 (0)\n+1A1B77 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19B01F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A1B77: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19B05A PAYLOAD\n+1A1BBE PAYLOAD\n \n-19B3E7 DATA DESCRIPTOR       08074B50 (134695760)\n-19B3EB CRC                   852B452E (2234205486)\n-19B3EF Compressed Size       0000038D (909)\n-19B3F3 Uncompressed Size     00000A84 (2692)\n+1A20A6 DATA DESCRIPTOR       08074B50 (134695760)\n+1A20AA CRC                   8EE26A20 (2397202976)\n+1A20AE Compressed Size       000004E8 (1256)\n+1A20B2 Uncompressed Size     0000108D (4237)\n \n-19B3F7 LOCAL HEADER #1550    04034B50 (67324752)\n-19B3FB Extract Zip Spec      14 (20) '2.0'\n-19B3FC Extract OS            00 (0) 'MS-DOS'\n-19B3FD General Purpose Flag  0808 (2056)\n+1A20B6 LOCAL HEADER #1550    04034B50 (67324752)\n+1A20BA Extract Zip Spec      14 (20) '2.0'\n+1A20BB Extract OS            00 (0) 'MS-DOS'\n+1A20BC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19B3FF Compression Method    0008 (8) 'Deflated'\n-19B401 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19B405 CRC                   00000000 (0)\n-19B409 Compressed Size       00000000 (0)\n-19B40D Uncompressed Size     00000000 (0)\n-19B411 Filename Length       003C (60)\n-19B413 Extra Length          0000 (0)\n-19B415 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A20BE Compression Method    0008 (8) 'Deflated'\n+1A20C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A20C4 CRC                   00000000 (0)\n+1A20C8 Compressed Size       00000000 (0)\n+1A20CC Uncompressed Size     00000000 (0)\n+1A20D0 Filename Length       0048 (72)\n+1A20D2 Extra Length          0000 (0)\n+1A20D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19B415: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A20D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19B451 PAYLOAD\n+1A211C PAYLOAD\n \n-19B7A1 DATA DESCRIPTOR       08074B50 (134695760)\n-19B7A5 CRC                   3D3ED0A6 (1027526822)\n-19B7A9 Compressed Size       00000350 (848)\n-19B7AD Uncompressed Size     00000A4B (2635)\n+1A25C6 DATA DESCRIPTOR       08074B50 (134695760)\n+1A25CA CRC                   9A974193 (2593603987)\n+1A25CE Compressed Size       000004AA (1194)\n+1A25D2 Uncompressed Size     00000FB4 (4020)\n \n-19B7B1 LOCAL HEADER #1551    04034B50 (67324752)\n-19B7B5 Extract Zip Spec      14 (20) '2.0'\n-19B7B6 Extract OS            00 (0) 'MS-DOS'\n-19B7B7 General Purpose Flag  0808 (2056)\n+1A25D6 LOCAL HEADER #1551    04034B50 (67324752)\n+1A25DA Extract Zip Spec      14 (20) '2.0'\n+1A25DB Extract OS            00 (0) 'MS-DOS'\n+1A25DC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19B7B9 Compression Method    0008 (8) 'Deflated'\n-19B7BB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19B7BF CRC                   00000000 (0)\n-19B7C3 Compressed Size       00000000 (0)\n-19B7C7 Uncompressed Size     00000000 (0)\n-19B7CB Filename Length       003D (61)\n-19B7CD Extra Length          0000 (0)\n-19B7CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A25DE Compression Method    0008 (8) 'Deflated'\n+1A25E0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A25E4 CRC                   00000000 (0)\n+1A25E8 Compressed Size       00000000 (0)\n+1A25EC Uncompressed Size     00000000 (0)\n+1A25F0 Filename Length       0049 (73)\n+1A25F2 Extra Length          0000 (0)\n+1A25F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19B7CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A25F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19B80C PAYLOAD\n+1A263D PAYLOAD\n \n-19BB01 DATA DESCRIPTOR       08074B50 (134695760)\n-19BB05 CRC                   0FA733C6 (262616006)\n-19BB09 Compressed Size       000002F5 (757)\n-19BB0D Uncompressed Size     00000707 (1799)\n+1A296C DATA DESCRIPTOR       08074B50 (134695760)\n+1A2970 CRC                   1224CDAB (304401835)\n+1A2974 Compressed Size       0000032F (815)\n+1A2978 Uncompressed Size     000007D8 (2008)\n \n-19BB11 LOCAL HEADER #1552    04034B50 (67324752)\n-19BB15 Extract Zip Spec      14 (20) '2.0'\n-19BB16 Extract OS            00 (0) 'MS-DOS'\n-19BB17 General Purpose Flag  0808 (2056)\n+1A297C LOCAL HEADER #1552    04034B50 (67324752)\n+1A2980 Extract Zip Spec      14 (20) '2.0'\n+1A2981 Extract OS            00 (0) 'MS-DOS'\n+1A2982 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19BB19 Compression Method    0008 (8) 'Deflated'\n-19BB1B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19BB1F CRC                   00000000 (0)\n-19BB23 Compressed Size       00000000 (0)\n-19BB27 Uncompressed Size     00000000 (0)\n-19BB2B Filename Length       0041 (65)\n-19BB2D Extra Length          0000 (0)\n-19BB2F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A2984 Compression Method    0008 (8) 'Deflated'\n+1A2986 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A298A CRC                   00000000 (0)\n+1A298E Compressed Size       00000000 (0)\n+1A2992 Uncompressed Size     00000000 (0)\n+1A2996 Filename Length       0039 (57)\n+1A2998 Extra Length          0000 (0)\n+1A299A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19BB2F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A299A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19BB70 PAYLOAD\n+1A29D3 PAYLOAD\n \n-19BE58 DATA DESCRIPTOR       08074B50 (134695760)\n-19BE5C CRC                   42BF763C (1119843900)\n-19BE60 Compressed Size       000002E8 (744)\n-19BE64 Uncompressed Size     00000709 (1801)\n+1A2C41 DATA DESCRIPTOR       08074B50 (134695760)\n+1A2C45 CRC                   39DE609E (970875038)\n+1A2C49 Compressed Size       0000026E (622)\n+1A2C4D Uncompressed Size     00000481 (1153)\n \n-19BE68 LOCAL HEADER #1553    04034B50 (67324752)\n-19BE6C Extract Zip Spec      14 (20) '2.0'\n-19BE6D Extract OS            00 (0) 'MS-DOS'\n-19BE6E General Purpose Flag  0808 (2056)\n+1A2C51 LOCAL HEADER #1553    04034B50 (67324752)\n+1A2C55 Extract Zip Spec      14 (20) '2.0'\n+1A2C56 Extract OS            00 (0) 'MS-DOS'\n+1A2C57 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19BE70 Compression Method    0008 (8) 'Deflated'\n-19BE72 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19BE76 CRC                   00000000 (0)\n-19BE7A Compressed Size       00000000 (0)\n-19BE7E Uncompressed Size     00000000 (0)\n-19BE82 Filename Length       003E (62)\n-19BE84 Extra Length          0000 (0)\n-19BE86 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A2C59 Compression Method    0008 (8) 'Deflated'\n+1A2C5B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A2C5F CRC                   00000000 (0)\n+1A2C63 Compressed Size       00000000 (0)\n+1A2C67 Uncompressed Size     00000000 (0)\n+1A2C6B Filename Length       0036 (54)\n+1A2C6D Extra Length          0000 (0)\n+1A2C6F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19BE86: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A2C6F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19BEC4 PAYLOAD\n+1A2CA5 PAYLOAD               XX\n \n-19C337 DATA DESCRIPTOR       08074B50 (134695760)\n-19C33B CRC                   9A817459 (2592175193)\n-19C33F Compressed Size       00000473 (1139)\n-19C343 Uncompressed Size     000011CF (4559)\n+1A2CA7 DATA DESCRIPTOR       08074B50 (134695760)\n+1A2CAB CRC                   00000000 (0)\n+1A2CAF Compressed Size       00000002 (2)\n+1A2CB3 Uncompressed Size     00000000 (0)\n \n-19C347 LOCAL HEADER #1554    04034B50 (67324752)\n-19C34B Extract Zip Spec      14 (20) '2.0'\n-19C34C Extract OS            00 (0) 'MS-DOS'\n-19C34D General Purpose Flag  0808 (2056)\n+1A2CB7 LOCAL HEADER #1554    04034B50 (67324752)\n+1A2CBB Extract Zip Spec      14 (20) '2.0'\n+1A2CBC Extract OS            00 (0) 'MS-DOS'\n+1A2CBD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19C34F Compression Method    0008 (8) 'Deflated'\n-19C351 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19C355 CRC                   00000000 (0)\n-19C359 Compressed Size       00000000 (0)\n-19C35D Uncompressed Size     00000000 (0)\n-19C361 Filename Length       002E (46)\n-19C363 Extra Length          0000 (0)\n-19C365 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A2CBF Compression Method    0008 (8) 'Deflated'\n+1A2CC1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A2CC5 CRC                   00000000 (0)\n+1A2CC9 Compressed Size       00000000 (0)\n+1A2CCD Uncompressed Size     00000000 (0)\n+1A2CD1 Filename Length       004A (74)\n+1A2CD3 Extra Length          0000 (0)\n+1A2CD5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19C365: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A2CD5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19C393 PAYLOAD               XX\n+1A2D1F PAYLOAD\n \n-19C395 DATA DESCRIPTOR       08074B50 (134695760)\n-19C399 CRC                   00000000 (0)\n-19C39D Compressed Size       00000002 (2)\n-19C3A1 Uncompressed Size     00000000 (0)\n+1A3061 DATA DESCRIPTOR       08074B50 (134695760)\n+1A3065 CRC                   05778916 (91719958)\n+1A3069 Compressed Size       00000342 (834)\n+1A306D Uncompressed Size     000007B5 (1973)\n \n-19C3A5 LOCAL HEADER #1555    04034B50 (67324752)\n-19C3A9 Extract Zip Spec      14 (20) '2.0'\n-19C3AA Extract OS            00 (0) 'MS-DOS'\n-19C3AB General Purpose Flag  0808 (2056)\n+1A3071 LOCAL HEADER #1555    04034B50 (67324752)\n+1A3075 Extract Zip Spec      14 (20) '2.0'\n+1A3076 Extract OS            00 (0) 'MS-DOS'\n+1A3077 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19C3AD Compression Method    0008 (8) 'Deflated'\n-19C3AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19C3B3 CRC                   00000000 (0)\n-19C3B7 Compressed Size       00000000 (0)\n-19C3BB Uncompressed Size     00000000 (0)\n-19C3BF Filename Length       0034 (52)\n-19C3C1 Extra Length          0000 (0)\n-19C3C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A3079 Compression Method    0008 (8) 'Deflated'\n+1A307B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A307F CRC                   00000000 (0)\n+1A3083 Compressed Size       00000000 (0)\n+1A3087 Uncompressed Size     00000000 (0)\n+1A308B Filename Length       0047 (71)\n+1A308D Extra Length          0000 (0)\n+1A308F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19C3C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A308F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19C3F7 PAYLOAD               XX\n+1A30D6 PAYLOAD\n \n-19C3F9 DATA DESCRIPTOR       08074B50 (134695760)\n-19C3FD CRC                   00000000 (0)\n-19C401 Compressed Size       00000002 (2)\n-19C405 Uncompressed Size     00000000 (0)\n+1A3411 DATA DESCRIPTOR       08074B50 (134695760)\n+1A3415 CRC                   1D3EA7BE (490645438)\n+1A3419 Compressed Size       0000033B (827)\n+1A341D Uncompressed Size     00000793 (1939)\n \n-19C409 LOCAL HEADER #1556    04034B50 (67324752)\n-19C40D Extract Zip Spec      14 (20) '2.0'\n-19C40E Extract OS            00 (0) 'MS-DOS'\n-19C40F General Purpose Flag  0808 (2056)\n+1A3421 LOCAL HEADER #1556    04034B50 (67324752)\n+1A3425 Extract Zip Spec      14 (20) '2.0'\n+1A3426 Extract OS            00 (0) 'MS-DOS'\n+1A3427 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19C411 Compression Method    0008 (8) 'Deflated'\n-19C413 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19C417 CRC                   00000000 (0)\n-19C41B Compressed Size       00000000 (0)\n-19C41F Uncompressed Size     00000000 (0)\n-19C423 Filename Length       0047 (71)\n-19C425 Extra Length          0000 (0)\n-19C427 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A3429 Compression Method    0008 (8) 'Deflated'\n+1A342B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A342F CRC                   00000000 (0)\n+1A3433 Compressed Size       00000000 (0)\n+1A3437 Uncompressed Size     00000000 (0)\n+1A343B Filename Length       004C (76)\n+1A343D Extra Length          0000 (0)\n+1A343F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19C427: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A343F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19C46E PAYLOAD\n+1A348B PAYLOAD\n \n-19C777 DATA DESCRIPTOR       08074B50 (134695760)\n-19C77B CRC                   526506A5 (1382352549)\n-19C77F Compressed Size       00000309 (777)\n-19C783 Uncompressed Size     0000067A (1658)\n+1A37CD DATA DESCRIPTOR       08074B50 (134695760)\n+1A37D1 CRC                   F831FECC (4164026060)\n+1A37D5 Compressed Size       00000342 (834)\n+1A37D9 Uncompressed Size     000007B1 (1969)\n \n-19C787 LOCAL HEADER #1557    04034B50 (67324752)\n-19C78B Extract Zip Spec      14 (20) '2.0'\n-19C78C Extract OS            00 (0) 'MS-DOS'\n-19C78D General Purpose Flag  0808 (2056)\n+1A37DD LOCAL HEADER #1557    04034B50 (67324752)\n+1A37E1 Extract Zip Spec      14 (20) '2.0'\n+1A37E2 Extract OS            00 (0) 'MS-DOS'\n+1A37E3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19C78F Compression Method    0008 (8) 'Deflated'\n-19C791 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19C795 CRC                   00000000 (0)\n-19C799 Compressed Size       00000000 (0)\n-19C79D Uncompressed Size     00000000 (0)\n-19C7A1 Filename Length       0046 (70)\n-19C7A3 Extra Length          0000 (0)\n-19C7A5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A37E5 Compression Method    0008 (8) 'Deflated'\n+1A37E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A37EB CRC                   00000000 (0)\n+1A37EF Compressed Size       00000000 (0)\n+1A37F3 Uncompressed Size     00000000 (0)\n+1A37F7 Filename Length       0033 (51)\n+1A37F9 Extra Length          0000 (0)\n+1A37FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19C7A5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A37FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19C7EB PAYLOAD\n+1A382E PAYLOAD               XX\n \n-19CAF8 DATA DESCRIPTOR       08074B50 (134695760)\n-19CAFC CRC                   E4089255 (3825766997)\n-19CB00 Compressed Size       0000030D (781)\n-19CB04 Uncompressed Size     00000679 (1657)\n+1A3830 DATA DESCRIPTOR       08074B50 (134695760)\n+1A3834 CRC                   00000000 (0)\n+1A3838 Compressed Size       00000002 (2)\n+1A383C Uncompressed Size     00000000 (0)\n \n-19CB08 LOCAL HEADER #1558    04034B50 (67324752)\n-19CB0C Extract Zip Spec      14 (20) '2.0'\n-19CB0D Extract OS            00 (0) 'MS-DOS'\n-19CB0E General Purpose Flag  0808 (2056)\n+1A3840 LOCAL HEADER #1558    04034B50 (67324752)\n+1A3844 Extract Zip Spec      14 (20) '2.0'\n+1A3845 Extract OS            00 (0) 'MS-DOS'\n+1A3846 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19CB10 Compression Method    0008 (8) 'Deflated'\n-19CB12 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19CB16 CRC                   00000000 (0)\n-19CB1A Compressed Size       00000000 (0)\n-19CB1E Uncompressed Size     00000000 (0)\n-19CB22 Filename Length       004C (76)\n-19CB24 Extra Length          0000 (0)\n-19CB26 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A3848 Compression Method    0008 (8) 'Deflated'\n+1A384A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A384E CRC                   00000000 (0)\n+1A3852 Compressed Size       00000000 (0)\n+1A3856 Uncompressed Size     00000000 (0)\n+1A385A Filename Length       0044 (68)\n+1A385C Extra Length          0000 (0)\n+1A385E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19CB26: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A385E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19CB72 PAYLOAD\n+1A38A2 PAYLOAD\n \n-19CEDF DATA DESCRIPTOR       08074B50 (134695760)\n-19CEE3 CRC                   3FBD14BB (1069356219)\n-19CEE7 Compressed Size       0000036D (877)\n-19CEEB Uncompressed Size     000007A8 (1960)\n+1A3D31 DATA DESCRIPTOR       08074B50 (134695760)\n+1A3D35 CRC                   B38C8B84 (3012332420)\n+1A3D39 Compressed Size       0000048F (1167)\n+1A3D3D Uncompressed Size     00000F71 (3953)\n \n-19CEEF LOCAL HEADER #1559    04034B50 (67324752)\n-19CEF3 Extract Zip Spec      14 (20) '2.0'\n-19CEF4 Extract OS            00 (0) 'MS-DOS'\n-19CEF5 General Purpose Flag  0808 (2056)\n+1A3D41 LOCAL HEADER #1559    04034B50 (67324752)\n+1A3D45 Extract Zip Spec      14 (20) '2.0'\n+1A3D46 Extract OS            00 (0) 'MS-DOS'\n+1A3D47 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19CEF7 Compression Method    0008 (8) 'Deflated'\n-19CEF9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19CEFD CRC                   00000000 (0)\n-19CF01 Compressed Size       00000000 (0)\n-19CF05 Uncompressed Size     00000000 (0)\n-19CF09 Filename Length       0048 (72)\n-19CF0B Extra Length          0000 (0)\n-19CF0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A3D49 Compression Method    0008 (8) 'Deflated'\n+1A3D4B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A3D4F CRC                   00000000 (0)\n+1A3D53 Compressed Size       00000000 (0)\n+1A3D57 Uncompressed Size     00000000 (0)\n+1A3D5B Filename Length       003F (63)\n+1A3D5D Extra Length          0000 (0)\n+1A3D5F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19CF0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A3D5F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19CF55 PAYLOAD\n+1A3D9E PAYLOAD               XX\n \n-19D26F DATA DESCRIPTOR       08074B50 (134695760)\n-19D273 CRC                   0BA6304B (195440715)\n-19D277 Compressed Size       0000031A (794)\n-19D27B Uncompressed Size     000006BF (1727)\n+1A3DA0 DATA DESCRIPTOR       08074B50 (134695760)\n+1A3DA4 CRC                   00000000 (0)\n+1A3DA8 Compressed Size       00000002 (2)\n+1A3DAC Uncompressed Size     00000000 (0)\n \n-19D27F LOCAL HEADER #1560    04034B50 (67324752)\n-19D283 Extract Zip Spec      14 (20) '2.0'\n-19D284 Extract OS            00 (0) 'MS-DOS'\n-19D285 General Purpose Flag  0808 (2056)\n+1A3DB0 LOCAL HEADER #1560    04034B50 (67324752)\n+1A3DB4 Extract Zip Spec      14 (20) '2.0'\n+1A3DB5 Extract OS            00 (0) 'MS-DOS'\n+1A3DB6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19D287 Compression Method    0008 (8) 'Deflated'\n-19D289 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19D28D CRC                   00000000 (0)\n-19D291 Compressed Size       00000000 (0)\n-19D295 Uncompressed Size     00000000 (0)\n-19D299 Filename Length       004C (76)\n-19D29B Extra Length          0000 (0)\n-19D29D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A3DB8 Compression Method    0008 (8) 'Deflated'\n+1A3DBA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A3DBE CRC                   00000000 (0)\n+1A3DC2 Compressed Size       00000000 (0)\n+1A3DC6 Uncompressed Size     00000000 (0)\n+1A3DCA Filename Length       0046 (70)\n+1A3DCC Extra Length          0000 (0)\n+1A3DCE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19D29D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A3DCE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19D2E9 PAYLOAD\n+1A3E14 PAYLOAD\n \n-19D5F4 DATA DESCRIPTOR       08074B50 (134695760)\n-19D5F8 CRC                   6F153BA7 (1863662503)\n-19D5FC Compressed Size       0000030B (779)\n-19D600 Uncompressed Size     000006D6 (1750)\n+1A4186 DATA DESCRIPTOR       08074B50 (134695760)\n+1A418A CRC                   619718E2 (1637292258)\n+1A418E Compressed Size       00000372 (882)\n+1A4192 Uncompressed Size     000008F1 (2289)\n \n-19D604 LOCAL HEADER #1561    04034B50 (67324752)\n-19D608 Extract Zip Spec      14 (20) '2.0'\n-19D609 Extract OS            00 (0) 'MS-DOS'\n-19D60A General Purpose Flag  0808 (2056)\n+1A4196 LOCAL HEADER #1561    04034B50 (67324752)\n+1A419A Extract Zip Spec      14 (20) '2.0'\n+1A419B Extract OS            00 (0) 'MS-DOS'\n+1A419C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19D60C Compression Method    0008 (8) 'Deflated'\n-19D60E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19D612 CRC                   00000000 (0)\n-19D616 Compressed Size       00000000 (0)\n-19D61A Uncompressed Size     00000000 (0)\n-19D61E Filename Length       0048 (72)\n-19D620 Extra Length          0000 (0)\n-19D622 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A419E Compression Method    0008 (8) 'Deflated'\n+1A41A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A41A4 CRC                   00000000 (0)\n+1A41A8 Compressed Size       00000000 (0)\n+1A41AC Uncompressed Size     00000000 (0)\n+1A41B0 Filename Length       004D (77)\n+1A41B2 Extra Length          0000 (0)\n+1A41B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19D622: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A41B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19D66A PAYLOAD\n+1A4201 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-19D996 DATA DESCRIPTOR       08074B50 (134695760)\n-19D99A CRC                   6E8EF8DF (1854863583)\n-19D99E Compressed Size       0000032C (812)\n-19D9A2 Uncompressed Size     0000070F (1807)\n+1A4250 DATA DESCRIPTOR       08074B50 (134695760)\n+1A4254 CRC                   F5CE41B3 (4123935155)\n+1A4258 Compressed Size       0000004F (79)\n+1A425C Uncompressed Size     00000055 (85)\n \n-19D9A6 LOCAL HEADER #1562    04034B50 (67324752)\n-19D9AA Extract Zip Spec      14 (20) '2.0'\n-19D9AB Extract OS            00 (0) 'MS-DOS'\n-19D9AC General Purpose Flag  0808 (2056)\n+1A4260 LOCAL HEADER #1562    04034B50 (67324752)\n+1A4264 Extract Zip Spec      14 (20) '2.0'\n+1A4265 Extract OS            00 (0) 'MS-DOS'\n+1A4266 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19D9AE Compression Method    0008 (8) 'Deflated'\n-19D9B0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19D9B4 CRC                   00000000 (0)\n-19D9B8 Compressed Size       00000000 (0)\n-19D9BC Uncompressed Size     00000000 (0)\n-19D9C0 Filename Length       0047 (71)\n-19D9C2 Extra Length          0000 (0)\n-19D9C4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A4268 Compression Method    0008 (8) 'Deflated'\n+1A426A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A426E CRC                   00000000 (0)\n+1A4272 Compressed Size       00000000 (0)\n+1A4276 Uncompressed Size     00000000 (0)\n+1A427A Filename Length       0027 (39)\n+1A427C Extra Length          0000 (0)\n+1A427E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19D9C4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A427E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19DA0B PAYLOAD\n+1A42A5 PAYLOAD               XX\n \n-19DD15 DATA DESCRIPTOR       08074B50 (134695760)\n-19DD19 CRC                   1A07B667 (436713063)\n-19DD1D Compressed Size       0000030A (778)\n-19DD21 Uncompressed Size     0000066E (1646)\n+1A42A7 DATA DESCRIPTOR       08074B50 (134695760)\n+1A42AB CRC                   00000000 (0)\n+1A42AF Compressed Size       00000002 (2)\n+1A42B3 Uncompressed Size     00000000 (0)\n \n-19DD25 LOCAL HEADER #1563    04034B50 (67324752)\n-19DD29 Extract Zip Spec      14 (20) '2.0'\n-19DD2A Extract OS            00 (0) 'MS-DOS'\n-19DD2B General Purpose Flag  0808 (2056)\n+1A42B7 LOCAL HEADER #1563    04034B50 (67324752)\n+1A42BB Extract Zip Spec      14 (20) '2.0'\n+1A42BC Extract OS            00 (0) 'MS-DOS'\n+1A42BD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19DD2D Compression Method    0008 (8) 'Deflated'\n-19DD2F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19DD33 CRC                   00000000 (0)\n-19DD37 Compressed Size       00000000 (0)\n-19DD3B Uncompressed Size     00000000 (0)\n-19DD3F Filename Length       004D (77)\n-19DD41 Extra Length          0000 (0)\n-19DD43 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A42BF Compression Method    0008 (8) 'Deflated'\n+1A42C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A42C5 CRC                   00000000 (0)\n+1A42C9 Compressed Size       00000000 (0)\n+1A42CD Uncompressed Size     00000000 (0)\n+1A42D1 Filename Length       003F (63)\n+1A42D3 Extra Length          0000 (0)\n+1A42D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19DD43: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A42D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19DD90 PAYLOAD\n+1A4314 PAYLOAD\n \n-19E0AC DATA DESCRIPTOR       08074B50 (134695760)\n-19E0B0 CRC                   08DC2FC0 (148647872)\n-19E0B4 Compressed Size       0000031C (796)\n-19E0B8 Uncompressed Size     00000709 (1801)\n+1A474F DATA DESCRIPTOR       08074B50 (134695760)\n+1A4753 CRC                   7563AE4D (1969466957)\n+1A4757 Compressed Size       0000043B (1083)\n+1A475B Uncompressed Size     00000DD2 (3538)\n \n-19E0BC LOCAL HEADER #1564    04034B50 (67324752)\n-19E0C0 Extract Zip Spec      14 (20) '2.0'\n-19E0C1 Extract OS            00 (0) 'MS-DOS'\n-19E0C2 General Purpose Flag  0808 (2056)\n+1A475F LOCAL HEADER #1564    04034B50 (67324752)\n+1A4763 Extract Zip Spec      14 (20) '2.0'\n+1A4764 Extract OS            00 (0) 'MS-DOS'\n+1A4765 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19E0C4 Compression Method    0008 (8) 'Deflated'\n-19E0C6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19E0CA CRC                   00000000 (0)\n-19E0CE Compressed Size       00000000 (0)\n-19E0D2 Uncompressed Size     00000000 (0)\n-19E0D6 Filename Length       0049 (73)\n-19E0D8 Extra Length          0000 (0)\n-19E0DA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A4767 Compression Method    0008 (8) 'Deflated'\n+1A4769 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A476D CRC                   00000000 (0)\n+1A4771 Compressed Size       00000000 (0)\n+1A4775 Uncompressed Size     00000000 (0)\n+1A4779 Filename Length       0040 (64)\n+1A477B Extra Length          0000 (0)\n+1A477D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19E0DA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A477D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19E123 PAYLOAD\n+1A47BD PAYLOAD\n \n-19E43E DATA DESCRIPTOR       08074B50 (134695760)\n-19E442 CRC                   816C5FDD (2171363293)\n-19E446 Compressed Size       0000031B (795)\n-19E44A Uncompressed Size     000006E4 (1764)\n+1A4B58 DATA DESCRIPTOR       08074B50 (134695760)\n+1A4B5C CRC                   470A630B (1191863051)\n+1A4B60 Compressed Size       0000039B (923)\n+1A4B64 Uncompressed Size     00000BA4 (2980)\n \n-19E44E LOCAL HEADER #1565    04034B50 (67324752)\n-19E452 Extract Zip Spec      14 (20) '2.0'\n-19E453 Extract OS            00 (0) 'MS-DOS'\n-19E454 General Purpose Flag  0808 (2056)\n+1A4B68 LOCAL HEADER #1565    04034B50 (67324752)\n+1A4B6C Extract Zip Spec      14 (20) '2.0'\n+1A4B6D Extract OS            00 (0) 'MS-DOS'\n+1A4B6E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19E456 Compression Method    0008 (8) 'Deflated'\n-19E458 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19E45C CRC                   00000000 (0)\n-19E460 Compressed Size       00000000 (0)\n-19E464 Uncompressed Size     00000000 (0)\n-19E468 Filename Length       0045 (69)\n-19E46A Extra Length          0000 (0)\n-19E46C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A4B70 Compression Method    0008 (8) 'Deflated'\n+1A4B72 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A4B76 CRC                   00000000 (0)\n+1A4B7A Compressed Size       00000000 (0)\n+1A4B7E Uncompressed Size     00000000 (0)\n+1A4B82 Filename Length       003D (61)\n+1A4B84 Extra Length          0000 (0)\n+1A4B86 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19E46C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A4B86: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19E4B1 PAYLOAD\n+1A4BC3 PAYLOAD\n \n-19E7C7 DATA DESCRIPTOR       08074B50 (134695760)\n-19E7CB CRC                   8DA313D4 (2376274900)\n-19E7CF Compressed Size       00000316 (790)\n-19E7D3 Uncompressed Size     000006A1 (1697)\n+1A4EAF DATA DESCRIPTOR       08074B50 (134695760)\n+1A4EB3 CRC                   5EE3566D (1591957101)\n+1A4EB7 Compressed Size       000002EC (748)\n+1A4EBB Uncompressed Size     00000721 (1825)\n \n-19E7D7 LOCAL HEADER #1566    04034B50 (67324752)\n-19E7DB Extract Zip Spec      14 (20) '2.0'\n-19E7DC Extract OS            00 (0) 'MS-DOS'\n-19E7DD General Purpose Flag  0808 (2056)\n+1A4EBF LOCAL HEADER #1566    04034B50 (67324752)\n+1A4EC3 Extract Zip Spec      14 (20) '2.0'\n+1A4EC4 Extract OS            00 (0) 'MS-DOS'\n+1A4EC5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19E7DF Compression Method    0008 (8) 'Deflated'\n-19E7E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19E7E5 CRC                   00000000 (0)\n-19E7E9 Compressed Size       00000000 (0)\n-19E7ED Uncompressed Size     00000000 (0)\n-19E7F1 Filename Length       0043 (67)\n-19E7F3 Extra Length          0000 (0)\n-19E7F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A4EC7 Compression Method    0008 (8) 'Deflated'\n+1A4EC9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A4ECD CRC                   00000000 (0)\n+1A4ED1 Compressed Size       00000000 (0)\n+1A4ED5 Uncompressed Size     00000000 (0)\n+1A4ED9 Filename Length       0039 (57)\n+1A4EDB Extra Length          0000 (0)\n+1A4EDD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19E7F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A4EDD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19E838 PAYLOAD\n+1A4F16 PAYLOAD               XX\n \n-19EB25 DATA DESCRIPTOR       08074B50 (134695760)\n-19EB29 CRC                   73C20F72 (1942097778)\n-19EB2D Compressed Size       000002ED (749)\n-19EB31 Uncompressed Size     000005F3 (1523)\n+1A4F18 DATA DESCRIPTOR       08074B50 (134695760)\n+1A4F1C CRC                   00000000 (0)\n+1A4F20 Compressed Size       00000002 (2)\n+1A4F24 Uncompressed Size     00000000 (0)\n \n-19EB35 LOCAL HEADER #1567    04034B50 (67324752)\n-19EB39 Extract Zip Spec      14 (20) '2.0'\n-19EB3A Extract OS            00 (0) 'MS-DOS'\n-19EB3B General Purpose Flag  0808 (2056)\n+1A4F28 LOCAL HEADER #1567    04034B50 (67324752)\n+1A4F2C Extract Zip Spec      14 (20) '2.0'\n+1A4F2D Extract OS            00 (0) 'MS-DOS'\n+1A4F2E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19EB3D Compression Method    0008 (8) 'Deflated'\n-19EB3F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19EB43 CRC                   00000000 (0)\n-19EB47 Compressed Size       00000000 (0)\n-19EB4B Uncompressed Size     00000000 (0)\n-19EB4F Filename Length       0048 (72)\n-19EB51 Extra Length          0000 (0)\n-19EB53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A4F30 Compression Method    0008 (8) 'Deflated'\n+1A4F32 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A4F36 CRC                   00000000 (0)\n+1A4F3A Compressed Size       00000000 (0)\n+1A4F3E Uncompressed Size     00000000 (0)\n+1A4F42 Filename Length       0040 (64)\n+1A4F44 Extra Length          0000 (0)\n+1A4F46 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19EB53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A4F46: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19EB9B PAYLOAD\n+1A4F86 PAYLOAD\n \n-19EEA6 DATA DESCRIPTOR       08074B50 (134695760)\n-19EEAA CRC                   51EB89D1 (1374390737)\n-19EEAE Compressed Size       0000030B (779)\n-19EEB2 Uncompressed Size     00000676 (1654)\n+1A52F5 DATA DESCRIPTOR       08074B50 (134695760)\n+1A52F9 CRC                   2D88023E (763888190)\n+1A52FD Compressed Size       0000036F (879)\n+1A5301 Uncompressed Size     00000818 (2072)\n \n-19EEB6 LOCAL HEADER #1568    04034B50 (67324752)\n-19EEBA Extract Zip Spec      14 (20) '2.0'\n-19EEBB Extract OS            00 (0) 'MS-DOS'\n-19EEBC General Purpose Flag  0808 (2056)\n+1A5305 LOCAL HEADER #1568    04034B50 (67324752)\n+1A5309 Extract Zip Spec      14 (20) '2.0'\n+1A530A Extract OS            00 (0) 'MS-DOS'\n+1A530B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19EEBE Compression Method    0008 (8) 'Deflated'\n-19EEC0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19EEC4 CRC                   00000000 (0)\n-19EEC8 Compressed Size       00000000 (0)\n-19EECC Uncompressed Size     00000000 (0)\n-19EED0 Filename Length       0045 (69)\n-19EED2 Extra Length          0000 (0)\n-19EED4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A530D Compression Method    0008 (8) 'Deflated'\n+1A530F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A5313 CRC                   00000000 (0)\n+1A5317 Compressed Size       00000000 (0)\n+1A531B Uncompressed Size     00000000 (0)\n+1A531F Filename Length       0047 (71)\n+1A5321 Extra Length          0000 (0)\n+1A5323 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19EED4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A5323: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19EF19 PAYLOAD\n+1A536A PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-19F20B DATA DESCRIPTOR       08074B50 (134695760)\n-19F20F CRC                   DBD89AB9 (3688405689)\n-19F213 Compressed Size       000002F2 (754)\n-19F217 Uncompressed Size     00000615 (1557)\n+1A53B6 DATA DESCRIPTOR       08074B50 (134695760)\n+1A53BA CRC                   FCB2ABC5 (4239567813)\n+1A53BE Compressed Size       0000004C (76)\n+1A53C2 Uncompressed Size     0000004F (79)\n \n-19F21B LOCAL HEADER #1569    04034B50 (67324752)\n-19F21F Extract Zip Spec      14 (20) '2.0'\n-19F220 Extract OS            00 (0) 'MS-DOS'\n-19F221 General Purpose Flag  0808 (2056)\n+1A53C6 LOCAL HEADER #1569    04034B50 (67324752)\n+1A53CA Extract Zip Spec      14 (20) '2.0'\n+1A53CB Extract OS            00 (0) 'MS-DOS'\n+1A53CC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19F223 Compression Method    0008 (8) 'Deflated'\n-19F225 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19F229 CRC                   00000000 (0)\n-19F22D Compressed Size       00000000 (0)\n-19F231 Uncompressed Size     00000000 (0)\n-19F235 Filename Length       0049 (73)\n-19F237 Extra Length          0000 (0)\n-19F239 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A53CE Compression Method    0008 (8) 'Deflated'\n+1A53D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A53D4 CRC                   00000000 (0)\n+1A53D8 Compressed Size       00000000 (0)\n+1A53DC Uncompressed Size     00000000 (0)\n+1A53E0 Filename Length       002B (43)\n+1A53E2 Extra Length          0000 (0)\n+1A53E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19F239: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A53E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19F282 PAYLOAD\n+1A540F PAYLOAD               XX\n \n-19F557 DATA DESCRIPTOR       08074B50 (134695760)\n-19F55B CRC                   608B08E5 (1619724517)\n-19F55F Compressed Size       000002D5 (725)\n-19F563 Uncompressed Size     000005BC (1468)\n+1A5411 DATA DESCRIPTOR       08074B50 (134695760)\n+1A5415 CRC                   00000000 (0)\n+1A5419 Compressed Size       00000002 (2)\n+1A541D Uncompressed Size     00000000 (0)\n \n-19F567 LOCAL HEADER #1570    04034B50 (67324752)\n-19F56B Extract Zip Spec      14 (20) '2.0'\n-19F56C Extract OS            00 (0) 'MS-DOS'\n-19F56D General Purpose Flag  0808 (2056)\n+1A5421 LOCAL HEADER #1570    04034B50 (67324752)\n+1A5425 Extract Zip Spec      14 (20) '2.0'\n+1A5426 Extract OS            00 (0) 'MS-DOS'\n+1A5427 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19F56F Compression Method    0008 (8) 'Deflated'\n-19F571 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19F575 CRC                   00000000 (0)\n-19F579 Compressed Size       00000000 (0)\n-19F57D Uncompressed Size     00000000 (0)\n-19F581 Filename Length       0049 (73)\n-19F583 Extra Length          0000 (0)\n-19F585 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A5429 Compression Method    0008 (8) 'Deflated'\n+1A542B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A542F CRC                   00000000 (0)\n+1A5433 Compressed Size       00000000 (0)\n+1A5437 Uncompressed Size     00000000 (0)\n+1A543B Filename Length       0033 (51)\n+1A543D Extra Length          0000 (0)\n+1A543F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19F585: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A543F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19F5CE PAYLOAD\n+1A5472 PAYLOAD               XX\n \n-19F8C9 DATA DESCRIPTOR       08074B50 (134695760)\n-19F8CD CRC                   86844A74 (2256816756)\n-19F8D1 Compressed Size       000002FB (763)\n-19F8D5 Uncompressed Size     00000649 (1609)\n+1A5474 DATA DESCRIPTOR       08074B50 (134695760)\n+1A5478 CRC                   00000000 (0)\n+1A547C Compressed Size       00000002 (2)\n+1A5480 Uncompressed Size     00000000 (0)\n \n-19F8D9 LOCAL HEADER #1571    04034B50 (67324752)\n-19F8DD Extract Zip Spec      14 (20) '2.0'\n-19F8DE Extract OS            00 (0) 'MS-DOS'\n-19F8DF General Purpose Flag  0808 (2056)\n+1A5484 LOCAL HEADER #1571    04034B50 (67324752)\n+1A5488 Extract Zip Spec      14 (20) '2.0'\n+1A5489 Extract OS            00 (0) 'MS-DOS'\n+1A548A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19F8E1 Compression Method    0008 (8) 'Deflated'\n-19F8E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19F8E7 CRC                   00000000 (0)\n-19F8EB Compressed Size       00000000 (0)\n-19F8EF Uncompressed Size     00000000 (0)\n-19F8F3 Filename Length       004C (76)\n-19F8F5 Extra Length          0000 (0)\n-19F8F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A548C Compression Method    0008 (8) 'Deflated'\n+1A548E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A5492 CRC                   00000000 (0)\n+1A5496 Compressed Size       00000000 (0)\n+1A549A Uncompressed Size     00000000 (0)\n+1A549E Filename Length       0056 (86)\n+1A54A0 Extra Length          0000 (0)\n+1A54A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19F8F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A54A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19F943 PAYLOAD\n+1A54F8 PAYLOAD\n \n-19FC9C DATA DESCRIPTOR       08074B50 (134695760)\n-19FCA0 CRC                   1702371E (386021150)\n-19FCA4 Compressed Size       00000359 (857)\n-19FCA8 Uncompressed Size     000007D9 (2009)\n+1A5B22 DATA DESCRIPTOR       08074B50 (134695760)\n+1A5B26 CRC                   770B2AC5 (1997220549)\n+1A5B2A Compressed Size       0000062A (1578)\n+1A5B2E Uncompressed Size     0000159B (5531)\n \n-19FCAC LOCAL HEADER #1572    04034B50 (67324752)\n-19FCB0 Extract Zip Spec      14 (20) '2.0'\n-19FCB1 Extract OS            00 (0) 'MS-DOS'\n-19FCB2 General Purpose Flag  0808 (2056)\n+1A5B32 LOCAL HEADER #1572    04034B50 (67324752)\n+1A5B36 Extract Zip Spec      14 (20) '2.0'\n+1A5B37 Extract OS            00 (0) 'MS-DOS'\n+1A5B38 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19FCB4 Compression Method    0008 (8) 'Deflated'\n-19FCB6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19FCBA CRC                   00000000 (0)\n-19FCBE Compressed Size       00000000 (0)\n-19FCC2 Uncompressed Size     00000000 (0)\n-19FCC6 Filename Length       0027 (39)\n-19FCC8 Extra Length          0000 (0)\n-19FCCA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A5B3A Compression Method    0008 (8) 'Deflated'\n+1A5B3C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A5B40 CRC                   00000000 (0)\n+1A5B44 Compressed Size       00000000 (0)\n+1A5B48 Uncompressed Size     00000000 (0)\n+1A5B4C Filename Length       0057 (87)\n+1A5B4E Extra Length          0000 (0)\n+1A5B50 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19FCCA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A5B50: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19FCF1 PAYLOAD               XX\n+1A5BA7 PAYLOAD\n \n-19FCF3 DATA DESCRIPTOR       08074B50 (134695760)\n-19FCF7 CRC                   00000000 (0)\n-19FCFB Compressed Size       00000002 (2)\n-19FCFF Uncompressed Size     00000000 (0)\n+1A616E DATA DESCRIPTOR       08074B50 (134695760)\n+1A6172 CRC                   680E4C03 (1745767427)\n+1A6176 Compressed Size       000005C7 (1479)\n+1A617A Uncompressed Size     00001580 (5504)\n \n-19FD03 LOCAL HEADER #1573    04034B50 (67324752)\n-19FD07 Extract Zip Spec      14 (20) '2.0'\n-19FD08 Extract OS            00 (0) 'MS-DOS'\n-19FD09 General Purpose Flag  0808 (2056)\n+1A617E LOCAL HEADER #1573    04034B50 (67324752)\n+1A6182 Extract Zip Spec      14 (20) '2.0'\n+1A6183 Extract OS            00 (0) 'MS-DOS'\n+1A6184 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-19FD0B Compression Method    0008 (8) 'Deflated'\n-19FD0D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-19FD11 CRC                   00000000 (0)\n-19FD15 Compressed Size       00000000 (0)\n-19FD19 Uncompressed Size     00000000 (0)\n-19FD1D Filename Length       0046 (70)\n-19FD1F Extra Length          0000 (0)\n-19FD21 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A6186 Compression Method    0008 (8) 'Deflated'\n+1A6188 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A618C CRC                   00000000 (0)\n+1A6190 Compressed Size       00000000 (0)\n+1A6194 Uncompressed Size     00000000 (0)\n+1A6198 Filename Length       0058 (88)\n+1A619A Extra Length          0000 (0)\n+1A619C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x19FD21: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A619C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-19FD67 PAYLOAD\n+1A61F4 PAYLOAD\n \n-1A009D DATA DESCRIPTOR       08074B50 (134695760)\n-1A00A1 CRC                   77A7867D (2007467645)\n-1A00A5 Compressed Size       00000336 (822)\n-1A00A9 Uncompressed Size     000007A2 (1954)\n+1A652D DATA DESCRIPTOR       08074B50 (134695760)\n+1A6531 CRC                   CECB8E17 (3469446679)\n+1A6535 Compressed Size       00000339 (825)\n+1A6539 Uncompressed Size     000007B4 (1972)\n \n-1A00AD LOCAL HEADER #1574    04034B50 (67324752)\n-1A00B1 Extract Zip Spec      14 (20) '2.0'\n-1A00B2 Extract OS            00 (0) 'MS-DOS'\n-1A00B3 General Purpose Flag  0808 (2056)\n+1A653D LOCAL HEADER #1574    04034B50 (67324752)\n+1A6541 Extract Zip Spec      14 (20) '2.0'\n+1A6542 Extract OS            00 (0) 'MS-DOS'\n+1A6543 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A00B5 Compression Method    0008 (8) 'Deflated'\n-1A00B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A00BB CRC                   00000000 (0)\n-1A00BF Compressed Size       00000000 (0)\n-1A00C3 Uncompressed Size     00000000 (0)\n-1A00C7 Filename Length       0046 (70)\n-1A00C9 Extra Length          0000 (0)\n-1A00CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A6545 Compression Method    0008 (8) 'Deflated'\n+1A6547 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A654B CRC                   00000000 (0)\n+1A654F Compressed Size       00000000 (0)\n+1A6553 Uncompressed Size     00000000 (0)\n+1A6557 Filename Length       0052 (82)\n+1A6559 Extra Length          0000 (0)\n+1A655B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A00CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A655B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A0111 PAYLOAD\n+1A65AD PAYLOAD\n \n-1A04C1 DATA DESCRIPTOR       08074B50 (134695760)\n-1A04C5 CRC                   5433235C (1412637532)\n-1A04C9 Compressed Size       000003B0 (944)\n-1A04CD Uncompressed Size     00000901 (2305)\n+1A6B4D DATA DESCRIPTOR       08074B50 (134695760)\n+1A6B51 CRC                   16AE2BE0 (380513248)\n+1A6B55 Compressed Size       000005A0 (1440)\n+1A6B59 Uncompressed Size     0000133A (4922)\n \n-1A04D1 LOCAL HEADER #1575    04034B50 (67324752)\n-1A04D5 Extract Zip Spec      14 (20) '2.0'\n-1A04D6 Extract OS            00 (0) 'MS-DOS'\n-1A04D7 General Purpose Flag  0808 (2056)\n+1A6B5D LOCAL HEADER #1575    04034B50 (67324752)\n+1A6B61 Extract Zip Spec      14 (20) '2.0'\n+1A6B62 Extract OS            00 (0) 'MS-DOS'\n+1A6B63 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A04D9 Compression Method    0008 (8) 'Deflated'\n-1A04DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A04DF CRC                   00000000 (0)\n-1A04E3 Compressed Size       00000000 (0)\n-1A04E7 Uncompressed Size     00000000 (0)\n-1A04EB Filename Length       0047 (71)\n-1A04ED Extra Length          0000 (0)\n-1A04EF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A6B65 Compression Method    0008 (8) 'Deflated'\n+1A6B67 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A6B6B CRC                   00000000 (0)\n+1A6B6F Compressed Size       00000000 (0)\n+1A6B73 Uncompressed Size     00000000 (0)\n+1A6B77 Filename Length       0053 (83)\n+1A6B79 Extra Length          0000 (0)\n+1A6B7B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A04EF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A6B7B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A0536 PAYLOAD\n+1A6BCE PAYLOAD\n \n-1A082A DATA DESCRIPTOR       08074B50 (134695760)\n-1A082E CRC                   1A06EC84 (436661380)\n-1A0832 Compressed Size       000002F4 (756)\n-1A0836 Uncompressed Size     00000647 (1607)\n+1A71EE DATA DESCRIPTOR       08074B50 (134695760)\n+1A71F2 CRC                   71435F02 (1900240642)\n+1A71F6 Compressed Size       00000620 (1568)\n+1A71FA Uncompressed Size     0000159D (5533)\n \n-1A083A LOCAL HEADER #1576    04034B50 (67324752)\n-1A083E Extract Zip Spec      14 (20) '2.0'\n-1A083F Extract OS            00 (0) 'MS-DOS'\n-1A0840 General Purpose Flag  0808 (2056)\n+1A71FE LOCAL HEADER #1576    04034B50 (67324752)\n+1A7202 Extract Zip Spec      14 (20) '2.0'\n+1A7203 Extract OS            00 (0) 'MS-DOS'\n+1A7204 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A0842 Compression Method    0008 (8) 'Deflated'\n-1A0844 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A0848 CRC                   00000000 (0)\n-1A084C Compressed Size       00000000 (0)\n-1A0850 Uncompressed Size     00000000 (0)\n-1A0854 Filename Length       003B (59)\n-1A0856 Extra Length          0000 (0)\n-1A0858 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A7206 Compression Method    0008 (8) 'Deflated'\n+1A7208 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A720C CRC                   00000000 (0)\n+1A7210 Compressed Size       00000000 (0)\n+1A7214 Uncompressed Size     00000000 (0)\n+1A7218 Filename Length       0054 (84)\n+1A721A Extra Length          0000 (0)\n+1A721C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A0858: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A721C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A0893 PAYLOAD\n+1A7270 PAYLOAD\n \n-1A0C81 DATA DESCRIPTOR       08074B50 (134695760)\n-1A0C85 CRC                   EBC07089 (3955257481)\n-1A0C89 Compressed Size       000003EE (1006)\n-1A0C8D Uncompressed Size     00000B84 (2948)\n+1A7699 DATA DESCRIPTOR       08074B50 (134695760)\n+1A769D CRC                   A92A8781 (2838136705)\n+1A76A1 Compressed Size       00000429 (1065)\n+1A76A5 Uncompressed Size     000009C6 (2502)\n \n-1A0C91 LOCAL HEADER #1577    04034B50 (67324752)\n-1A0C95 Extract Zip Spec      14 (20) '2.0'\n-1A0C96 Extract OS            00 (0) 'MS-DOS'\n-1A0C97 General Purpose Flag  0808 (2056)\n+1A76A9 LOCAL HEADER #1577    04034B50 (67324752)\n+1A76AD Extract Zip Spec      14 (20) '2.0'\n+1A76AE Extract OS            00 (0) 'MS-DOS'\n+1A76AF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A0C99 Compression Method    0008 (8) 'Deflated'\n-1A0C9B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A0C9F CRC                   00000000 (0)\n-1A0CA3 Compressed Size       00000000 (0)\n-1A0CA7 Uncompressed Size     00000000 (0)\n-1A0CAB Filename Length       003C (60)\n-1A0CAD Extra Length          0000 (0)\n-1A0CAF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A76B1 Compression Method    0008 (8) 'Deflated'\n+1A76B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A76B7 CRC                   00000000 (0)\n+1A76BB Compressed Size       00000000 (0)\n+1A76BF Uncompressed Size     00000000 (0)\n+1A76C3 Filename Length       0045 (69)\n+1A76C5 Extra Length          0000 (0)\n+1A76C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A0CAF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A76C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A0CEB PAYLOAD\n+1A770C PAYLOAD\n \n-1A100D DATA DESCRIPTOR       08074B50 (134695760)\n-1A1011 CRC                   BE6D297E (3194825086)\n-1A1015 Compressed Size       00000322 (802)\n-1A1019 Uncompressed Size     00000881 (2177)\n+1A8026 DATA DESCRIPTOR       08074B50 (134695760)\n+1A802A CRC                   7EEE431C (2129543964)\n+1A802E Compressed Size       0000091A (2330)\n+1A8032 Uncompressed Size     00002099 (8345)\n \n-1A101D LOCAL HEADER #1578    04034B50 (67324752)\n-1A1021 Extract Zip Spec      14 (20) '2.0'\n-1A1022 Extract OS            00 (0) 'MS-DOS'\n-1A1023 General Purpose Flag  0808 (2056)\n+1A8036 LOCAL HEADER #1578    04034B50 (67324752)\n+1A803A Extract Zip Spec      14 (20) '2.0'\n+1A803B Extract OS            00 (0) 'MS-DOS'\n+1A803C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A1025 Compression Method    0008 (8) 'Deflated'\n-1A1027 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A102B CRC                   00000000 (0)\n-1A102F Compressed Size       00000000 (0)\n-1A1033 Uncompressed Size     00000000 (0)\n-1A1037 Filename Length       003D (61)\n-1A1039 Extra Length          0000 (0)\n-1A103B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A803E Compression Method    0008 (8) 'Deflated'\n+1A8040 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A8044 CRC                   00000000 (0)\n+1A8048 Compressed Size       00000000 (0)\n+1A804C Uncompressed Size     00000000 (0)\n+1A8050 Filename Length       0050 (80)\n+1A8052 Extra Length          0000 (0)\n+1A8054 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A103B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A8054: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A1078 PAYLOAD\n+1A80A4 PAYLOAD\n \n-1A1390 DATA DESCRIPTOR       08074B50 (134695760)\n-1A1394 CRC                   AD8F41D0 (2911846864)\n-1A1398 Compressed Size       00000318 (792)\n-1A139C Uncompressed Size     0000075D (1885)\n+1A848C DATA DESCRIPTOR       08074B50 (134695760)\n+1A8490 CRC                   E46DD072 (3832402034)\n+1A8494 Compressed Size       000003E8 (1000)\n+1A8498 Uncompressed Size     00000A55 (2645)\n \n-1A13A0 LOCAL HEADER #1579    04034B50 (67324752)\n-1A13A4 Extract Zip Spec      14 (20) '2.0'\n-1A13A5 Extract OS            00 (0) 'MS-DOS'\n-1A13A6 General Purpose Flag  0808 (2056)\n+1A849C LOCAL HEADER #1579    04034B50 (67324752)\n+1A84A0 Extract Zip Spec      14 (20) '2.0'\n+1A84A1 Extract OS            00 (0) 'MS-DOS'\n+1A84A2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A13A8 Compression Method    0008 (8) 'Deflated'\n-1A13AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A13AE CRC                   00000000 (0)\n-1A13B2 Compressed Size       00000000 (0)\n-1A13B6 Uncompressed Size     00000000 (0)\n-1A13BA Filename Length       002D (45)\n-1A13BC Extra Length          0000 (0)\n-1A13BE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A84A4 Compression Method    0008 (8) 'Deflated'\n+1A84A6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A84AA CRC                   00000000 (0)\n+1A84AE Compressed Size       00000000 (0)\n+1A84B2 Uncompressed Size     00000000 (0)\n+1A84B6 Filename Length       003B (59)\n+1A84B8 Extra Length          0000 (0)\n+1A84BA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A13BE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A84BA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A13EB PAYLOAD               XX\n+1A84F5 PAYLOAD               XX\n \n-1A13ED DATA DESCRIPTOR       08074B50 (134695760)\n-1A13F1 CRC                   00000000 (0)\n-1A13F5 Compressed Size       00000002 (2)\n-1A13F9 Uncompressed Size     00000000 (0)\n+1A84F7 DATA DESCRIPTOR       08074B50 (134695760)\n+1A84FB CRC                   00000000 (0)\n+1A84FF Compressed Size       00000002 (2)\n+1A8503 Uncompressed Size     00000000 (0)\n \n-1A13FD LOCAL HEADER #1580    04034B50 (67324752)\n-1A1401 Extract Zip Spec      14 (20) '2.0'\n-1A1402 Extract OS            00 (0) 'MS-DOS'\n-1A1403 General Purpose Flag  0808 (2056)\n+1A8507 LOCAL HEADER #1580    04034B50 (67324752)\n+1A850B Extract Zip Spec      14 (20) '2.0'\n+1A850C Extract OS            00 (0) 'MS-DOS'\n+1A850D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A1405 Compression Method    0008 (8) 'Deflated'\n-1A1407 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A140B CRC                   00000000 (0)\n-1A140F Compressed Size       00000000 (0)\n-1A1413 Uncompressed Size     00000000 (0)\n-1A1417 Filename Length       0047 (71)\n-1A1419 Extra Length          0000 (0)\n-1A141B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A850F Compression Method    0008 (8) 'Deflated'\n+1A8511 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A8515 CRC                   00000000 (0)\n+1A8519 Compressed Size       00000000 (0)\n+1A851D Uncompressed Size     00000000 (0)\n+1A8521 Filename Length       0048 (72)\n+1A8523 Extra Length          0000 (0)\n+1A8525 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A141B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A8525: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A1462 PAYLOAD\n+1A856D PAYLOAD\n \n-1A186F DATA DESCRIPTOR       08074B50 (134695760)\n-1A1873 CRC                   6029E0CC (1613357260)\n-1A1877 Compressed Size       0000040D (1037)\n-1A187B Uncompressed Size     00000D7E (3454)\n+1A9622 DATA DESCRIPTOR       08074B50 (134695760)\n+1A9626 CRC                   3E2D4260 (1043153504)\n+1A962A Compressed Size       000010B5 (4277)\n+1A962E Uncompressed Size     00007BD0 (31696)\n \n-1A187F LOCAL HEADER #1581    04034B50 (67324752)\n-1A1883 Extract Zip Spec      14 (20) '2.0'\n-1A1884 Extract OS            00 (0) 'MS-DOS'\n-1A1885 General Purpose Flag  0808 (2056)\n+1A9632 LOCAL HEADER #1581    04034B50 (67324752)\n+1A9636 Extract Zip Spec      14 (20) '2.0'\n+1A9637 Extract OS            00 (0) 'MS-DOS'\n+1A9638 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A1887 Compression Method    0008 (8) 'Deflated'\n-1A1889 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A188D CRC                   00000000 (0)\n-1A1891 Compressed Size       00000000 (0)\n-1A1895 Uncompressed Size     00000000 (0)\n-1A1899 Filename Length       0048 (72)\n-1A189B Extra Length          0000 (0)\n-1A189D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1A963A Compression Method    0008 (8) 'Deflated'\n+1A963C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1A9640 CRC                   00000000 (0)\n+1A9644 Compressed Size       00000000 (0)\n+1A9648 Uncompressed Size     00000000 (0)\n+1A964C Filename Length       004B (75)\n+1A964E Extra Length          0000 (0)\n+1A9650 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A189D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1A9650: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A18E5 PAYLOAD\n+1A969B PAYLOAD\n \n-1A1CA6 DATA DESCRIPTOR       08074B50 (134695760)\n-1A1CAA CRC                   5EB75116 (1589072150)\n-1A1CAE Compressed Size       000003C1 (961)\n-1A1CB2 Uncompressed Size     00000CEE (3310)\n+1ABC4D DATA DESCRIPTOR       08074B50 (134695760)\n+1ABC51 CRC                   C5D2D6A4 (3318929060)\n+1ABC55 Compressed Size       000025B2 (9650)\n+1ABC59 Uncompressed Size     00018FCD (102349)\n \n-1A1CB6 LOCAL HEADER #1582    04034B50 (67324752)\n-1A1CBA Extract Zip Spec      14 (20) '2.0'\n-1A1CBB Extract OS            00 (0) 'MS-DOS'\n-1A1CBC General Purpose Flag  0808 (2056)\n+1ABC5D LOCAL HEADER #1582    04034B50 (67324752)\n+1ABC61 Extract Zip Spec      14 (20) '2.0'\n+1ABC62 Extract OS            00 (0) 'MS-DOS'\n+1ABC63 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A1CBE Compression Method    0008 (8) 'Deflated'\n-1A1CC0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A1CC4 CRC                   00000000 (0)\n-1A1CC8 Compressed Size       00000000 (0)\n-1A1CCC Uncompressed Size     00000000 (0)\n-1A1CD0 Filename Length       0049 (73)\n-1A1CD2 Extra Length          0000 (0)\n-1A1CD4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1ABC65 Compression Method    0008 (8) 'Deflated'\n+1ABC67 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1ABC6B CRC                   00000000 (0)\n+1ABC6F Compressed Size       00000000 (0)\n+1ABC73 Uncompressed Size     00000000 (0)\n+1ABC77 Filename Length       000E (14)\n+1ABC79 Extra Length          0000 (0)\n+1ABC7B Filename              'XXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A1CD4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1ABC7B: Filename 'XXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A1D1D PAYLOAD\n+1ABC89 PAYLOAD\n \n-1A204C DATA DESCRIPTOR       08074B50 (134695760)\n-1A2050 CRC                   2DE55F52 (770006866)\n-1A2054 Compressed Size       0000032F (815)\n-1A2058 Uncompressed Size     000007A3 (1955)\n+1ABEF8 DATA DESCRIPTOR       08074B50 (134695760)\n+1ABEFC CRC                   812B2402 (2167088130)\n+1ABF00 Compressed Size       0000026F (623)\n+1ABF04 Uncompressed Size     0000048E (1166)\n \n-1A205C LOCAL HEADER #1583    04034B50 (67324752)\n-1A2060 Extract Zip Spec      14 (20) '2.0'\n-1A2061 Extract OS            00 (0) 'MS-DOS'\n-1A2062 General Purpose Flag  0808 (2056)\n+1ABF08 LOCAL HEADER #1583    04034B50 (67324752)\n+1ABF0C Extract Zip Spec      14 (20) '2.0'\n+1ABF0D Extract OS            00 (0) 'MS-DOS'\n+1ABF0E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A2064 Compression Method    0008 (8) 'Deflated'\n-1A2066 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A206A CRC                   00000000 (0)\n-1A206E Compressed Size       00000000 (0)\n-1A2072 Uncompressed Size     00000000 (0)\n-1A2076 Filename Length       0027 (39)\n-1A2078 Extra Length          0000 (0)\n-1A207A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1ABF10 Compression Method    0008 (8) 'Deflated'\n+1ABF12 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1ABF16 CRC                   00000000 (0)\n+1ABF1A Compressed Size       00000000 (0)\n+1ABF1E Uncompressed Size     00000000 (0)\n+1ABF22 Filename Length       0011 (17)\n+1ABF24 Extra Length          0000 (0)\n+1ABF26 Filename              'XXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A207A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1ABF26: Filename 'XXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A20A1 PAYLOAD               XX\n+1ABF37 PAYLOAD\n \n-1A20A3 DATA DESCRIPTOR       08074B50 (134695760)\n-1A20A7 CRC                   00000000 (0)\n-1A20AB Compressed Size       00000002 (2)\n-1A20AF Uncompressed Size     00000000 (0)\n+1AC38A DATA DESCRIPTOR       08074B50 (134695760)\n+1AC38E CRC                   79E45B46 (2045008710)\n+1AC392 Compressed Size       00000453 (1107)\n+1AC396 Uncompressed Size     00000B1D (2845)\n \n-1A20B3 LOCAL HEADER #1584    04034B50 (67324752)\n-1A20B7 Extract Zip Spec      14 (20) '2.0'\n-1A20B8 Extract OS            00 (0) 'MS-DOS'\n-1A20B9 General Purpose Flag  0808 (2056)\n+1AC39A LOCAL HEADER #1584    04034B50 (67324752)\n+1AC39E Extract Zip Spec      14 (20) '2.0'\n+1AC39F Extract OS            00 (0) 'MS-DOS'\n+1AC3A0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A20BB Compression Method    0008 (8) 'Deflated'\n-1A20BD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A20C1 CRC                   00000000 (0)\n-1A20C5 Compressed Size       00000000 (0)\n-1A20C9 Uncompressed Size     00000000 (0)\n-1A20CD Filename Length       003A (58)\n-1A20CF Extra Length          0000 (0)\n-1A20D1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1AC3A2 Compression Method    0008 (8) 'Deflated'\n+1AC3A4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1AC3A8 CRC                   00000000 (0)\n+1AC3AC Compressed Size       00000000 (0)\n+1AC3B0 Uncompressed Size     00000000 (0)\n+1AC3B4 Filename Length       003D (61)\n+1AC3B6 Extra Length          0000 (0)\n+1AC3B8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A20D1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1AC3B8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A210B PAYLOAD\n+1AC3F5 PAYLOAD               XX\n \n-1A25A5 DATA DESCRIPTOR       08074B50 (134695760)\n-1A25A9 CRC                   96641300 (2523140864)\n-1A25AD Compressed Size       0000049A (1178)\n-1A25B1 Uncompressed Size     00000A4F (2639)\n+1AC3F7 DATA DESCRIPTOR       08074B50 (134695760)\n+1AC3FB CRC                   00000000 (0)\n+1AC3FF Compressed Size       00000002 (2)\n+1AC403 Uncompressed Size     00000000 (0)\n \n-1A25B5 LOCAL HEADER #1585    04034B50 (67324752)\n-1A25B9 Extract Zip Spec      14 (20) '2.0'\n-1A25BA Extract OS            00 (0) 'MS-DOS'\n-1A25BB General Purpose Flag  0808 (2056)\n+1AC407 LOCAL HEADER #1585    04034B50 (67324752)\n+1AC40B Extract Zip Spec      14 (20) '2.0'\n+1AC40C Extract OS            00 (0) 'MS-DOS'\n+1AC40D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A25BD Compression Method    0008 (8) 'Deflated'\n-1A25BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A25C3 CRC                   00000000 (0)\n-1A25C7 Compressed Size       00000000 (0)\n-1A25CB Uncompressed Size     00000000 (0)\n-1A25CF Filename Length       003B (59)\n-1A25D1 Extra Length          0000 (0)\n-1A25D3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1AC40F Compression Method    0008 (8) 'Deflated'\n+1AC411 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1AC415 CRC                   00000000 (0)\n+1AC419 Compressed Size       00000000 (0)\n+1AC41D Uncompressed Size     00000000 (0)\n+1AC421 Filename Length       0044 (68)\n+1AC423 Extra Length          0000 (0)\n+1AC425 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A25D3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1AC425: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A260E PAYLOAD\n+1AC469 PAYLOAD\n \n-1A2A77 DATA DESCRIPTOR       08074B50 (134695760)\n-1A2A7B CRC                   70240B76 (1881410422)\n-1A2A7F Compressed Size       00000469 (1129)\n-1A2A83 Uncompressed Size     000011F6 (4598)\n+1AC957 DATA DESCRIPTOR       08074B50 (134695760)\n+1AC95B CRC                   A4C37506 (2764272902)\n+1AC95F Compressed Size       000004EE (1262)\n+1AC963 Uncompressed Size     00000EA7 (3751)\n \n-1A2A87 LOCAL HEADER #1586    04034B50 (67324752)\n-1A2A8B Extract Zip Spec      14 (20) '2.0'\n-1A2A8C Extract OS            00 (0) 'MS-DOS'\n-1A2A8D General Purpose Flag  0808 (2056)\n+1AC967 LOCAL HEADER #1586    04034B50 (67324752)\n+1AC96B Extract Zip Spec      14 (20) '2.0'\n+1AC96C Extract OS            00 (0) 'MS-DOS'\n+1AC96D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A2A8F Compression Method    0008 (8) 'Deflated'\n-1A2A91 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A2A95 CRC                   00000000 (0)\n-1A2A99 Compressed Size       00000000 (0)\n-1A2A9D Uncompressed Size     00000000 (0)\n-1A2AA1 Filename Length       003C (60)\n-1A2AA3 Extra Length          0000 (0)\n-1A2AA5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1AC96F Compression Method    0008 (8) 'Deflated'\n+1AC971 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1AC975 CRC                   00000000 (0)\n+1AC979 Compressed Size       00000000 (0)\n+1AC97D Uncompressed Size     00000000 (0)\n+1AC981 Filename Length       004B (75)\n+1AC983 Extra Length          0000 (0)\n+1AC985 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A2AA5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1AC985: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A2AE1 PAYLOAD\n+1AC9D0 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-1A2EDB DATA DESCRIPTOR       08074B50 (134695760)\n-1A2EDF CRC                   8E4DF810 (2387474448)\n-1A2EE3 Compressed Size       000003FA (1018)\n-1A2EE7 Uncompressed Size     00000CEA (3306)\n+1ACA1E DATA DESCRIPTOR       08074B50 (134695760)\n+1ACA22 CRC                   A6E93060 (2800300128)\n+1ACA26 Compressed Size       0000004E (78)\n+1ACA2A Uncompressed Size     00000053 (83)\n \n-1A2EEB LOCAL HEADER #1587    04034B50 (67324752)\n-1A2EEF Extract Zip Spec      14 (20) '2.0'\n-1A2EF0 Extract OS            00 (0) 'MS-DOS'\n-1A2EF1 General Purpose Flag  0808 (2056)\n+1ACA2E LOCAL HEADER #1587    04034B50 (67324752)\n+1ACA32 Extract Zip Spec      14 (20) '2.0'\n+1ACA33 Extract OS            00 (0) 'MS-DOS'\n+1ACA34 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A2EF3 Compression Method    0008 (8) 'Deflated'\n-1A2EF5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A2EF9 CRC                   00000000 (0)\n-1A2EFD Compressed Size       00000000 (0)\n-1A2F01 Uncompressed Size     00000000 (0)\n-1A2F05 Filename Length       003D (61)\n-1A2F07 Extra Length          0000 (0)\n-1A2F09 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1ACA36 Compression Method    0008 (8) 'Deflated'\n+1ACA38 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1ACA3C CRC                   00000000 (0)\n+1ACA40 Compressed Size       00000000 (0)\n+1ACA44 Uncompressed Size     00000000 (0)\n+1ACA48 Filename Length       001E (30)\n+1ACA4A Extra Length          0000 (0)\n+1ACA4C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A2F09: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1ACA4C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A2F46 PAYLOAD\n+1ACA6A PAYLOAD               XX\n \n-1A3286 DATA DESCRIPTOR       08074B50 (134695760)\n-1A328A CRC                   BA9B880B (3130755083)\n-1A328E Compressed Size       00000340 (832)\n-1A3292 Uncompressed Size     0000079F (1951)\n+1ACA6C DATA DESCRIPTOR       08074B50 (134695760)\n+1ACA70 CRC                   00000000 (0)\n+1ACA74 Compressed Size       00000002 (2)\n+1ACA78 Uncompressed Size     00000000 (0)\n \n-1A3296 LOCAL HEADER #1588    04034B50 (67324752)\n-1A329A Extract Zip Spec      14 (20) '2.0'\n-1A329B Extract OS            00 (0) 'MS-DOS'\n-1A329C General Purpose Flag  0808 (2056)\n+1ACA7C LOCAL HEADER #1588    04034B50 (67324752)\n+1ACA80 Extract Zip Spec      14 (20) '2.0'\n+1ACA81 Extract OS            00 (0) 'MS-DOS'\n+1ACA82 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A329E Compression Method    0008 (8) 'Deflated'\n-1A32A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A32A4 CRC                   00000000 (0)\n-1A32A8 Compressed Size       00000000 (0)\n-1A32AC Uncompressed Size     00000000 (0)\n-1A32B0 Filename Length       0031 (49)\n-1A32B2 Extra Length          0000 (0)\n-1A32B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1ACA84 Compression Method    0008 (8) 'Deflated'\n+1ACA86 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1ACA8A CRC                   00000000 (0)\n+1ACA8E Compressed Size       00000000 (0)\n+1ACA92 Uncompressed Size     00000000 (0)\n+1ACA96 Filename Length       0026 (38)\n+1ACA98 Extra Length          0000 (0)\n+1ACA9A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A32B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1ACA9A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A32E5 PAYLOAD               XX\n+1ACAC0 PAYLOAD               XX\n \n-1A32E7 DATA DESCRIPTOR       08074B50 (134695760)\n-1A32EB CRC                   00000000 (0)\n-1A32EF Compressed Size       00000002 (2)\n-1A32F3 Uncompressed Size     00000000 (0)\n+1ACAC2 DATA DESCRIPTOR       08074B50 (134695760)\n+1ACAC6 CRC                   00000000 (0)\n+1ACACA Compressed Size       00000002 (2)\n+1ACACE Uncompressed Size     00000000 (0)\n \n-1A32F7 LOCAL HEADER #1589    04034B50 (67324752)\n-1A32FB Extract Zip Spec      14 (20) '2.0'\n-1A32FC Extract OS            00 (0) 'MS-DOS'\n-1A32FD General Purpose Flag  0808 (2056)\n+1ACAD2 LOCAL HEADER #1589    04034B50 (67324752)\n+1ACAD6 Extract Zip Spec      14 (20) '2.0'\n+1ACAD7 Extract OS            00 (0) 'MS-DOS'\n+1ACAD8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A32FF Compression Method    0008 (8) 'Deflated'\n-1A3301 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A3305 CRC                   00000000 (0)\n-1A3309 Compressed Size       00000000 (0)\n-1A330D Uncompressed Size     00000000 (0)\n-1A3311 Filename Length       0046 (70)\n-1A3313 Extra Length          0000 (0)\n-1A3315 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1ACADA Compression Method    0008 (8) 'Deflated'\n+1ACADC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1ACAE0 CRC                   00000000 (0)\n+1ACAE4 Compressed Size       00000000 (0)\n+1ACAE8 Uncompressed Size     00000000 (0)\n+1ACAEC Filename Length       0030 (48)\n+1ACAEE Extra Length          0000 (0)\n+1ACAF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A3315: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1ACAF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A335B PAYLOAD\n+1ACB20 PAYLOAD               XX\n \n-1A380E DATA DESCRIPTOR       08074B50 (134695760)\n-1A3812 CRC                   8FAE8E58 (2410581592)\n-1A3816 Compressed Size       000004B3 (1203)\n-1A381A Uncompressed Size     000012B7 (4791)\n+1ACB22 DATA DESCRIPTOR       08074B50 (134695760)\n+1ACB26 CRC                   00000000 (0)\n+1ACB2A Compressed Size       00000002 (2)\n+1ACB2E Uncompressed Size     00000000 (0)\n \n-1A381E LOCAL HEADER #1590    04034B50 (67324752)\n-1A3822 Extract Zip Spec      14 (20) '2.0'\n-1A3823 Extract OS            00 (0) 'MS-DOS'\n-1A3824 General Purpose Flag  0808 (2056)\n+1ACB32 LOCAL HEADER #1590    04034B50 (67324752)\n+1ACB36 Extract Zip Spec      14 (20) '2.0'\n+1ACB37 Extract OS            00 (0) 'MS-DOS'\n+1ACB38 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A3826 Compression Method    0008 (8) 'Deflated'\n-1A3828 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A382C CRC                   00000000 (0)\n-1A3830 Compressed Size       00000000 (0)\n-1A3834 Uncompressed Size     00000000 (0)\n-1A3838 Filename Length       0047 (71)\n-1A383A Extra Length          0000 (0)\n-1A383C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1ACB3A Compression Method    0008 (8) 'Deflated'\n+1ACB3C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1ACB40 CRC                   00000000 (0)\n+1ACB44 Compressed Size       00000000 (0)\n+1ACB48 Uncompressed Size     00000000 (0)\n+1ACB4C Filename Length       0042 (66)\n+1ACB4E Extra Length          0000 (0)\n+1ACB50 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A383C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1ACB50: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A3883 PAYLOAD\n+1ACB92 PAYLOAD\n \n-1A3C78 DATA DESCRIPTOR       08074B50 (134695760)\n-1A3C7C CRC                   49D1BF52 (1238482770)\n-1A3C80 Compressed Size       000003F5 (1013)\n-1A3C84 Uncompressed Size     00000CDD (3293)\n+1AD204 DATA DESCRIPTOR       08074B50 (134695760)\n+1AD208 CRC                   BB1EE9E9 (3139365353)\n+1AD20C Compressed Size       00000672 (1650)\n+1AD210 Uncompressed Size     00001480 (5248)\n \n-1A3C88 LOCAL HEADER #1591    04034B50 (67324752)\n-1A3C8C Extract Zip Spec      14 (20) '2.0'\n-1A3C8D Extract OS            00 (0) 'MS-DOS'\n-1A3C8E General Purpose Flag  0808 (2056)\n+1AD214 LOCAL HEADER #1591    04034B50 (67324752)\n+1AD218 Extract Zip Spec      14 (20) '2.0'\n+1AD219 Extract OS            00 (0) 'MS-DOS'\n+1AD21A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A3C90 Compression Method    0008 (8) 'Deflated'\n-1A3C92 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A3C96 CRC                   00000000 (0)\n-1A3C9A Compressed Size       00000000 (0)\n-1A3C9E Uncompressed Size     00000000 (0)\n-1A3CA2 Filename Length       0048 (72)\n-1A3CA4 Extra Length          0000 (0)\n-1A3CA6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1AD21C Compression Method    0008 (8) 'Deflated'\n+1AD21E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1AD222 CRC                   00000000 (0)\n+1AD226 Compressed Size       00000000 (0)\n+1AD22A Uncompressed Size     00000000 (0)\n+1AD22E Filename Length       0052 (82)\n+1AD230 Extra Length          0000 (0)\n+1AD232 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A3CA6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1AD232: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A3CEE PAYLOAD\n+1AD284 PAYLOAD\n \n-1A4036 DATA DESCRIPTOR       08074B50 (134695760)\n-1A403A CRC                   05BCA175 (96248181)\n-1A403E Compressed Size       00000348 (840)\n-1A4042 Uncompressed Size     00000799 (1945)\n+1AD862 DATA DESCRIPTOR       08074B50 (134695760)\n+1AD866 CRC                   E1D762AB (3788989099)\n+1AD86A Compressed Size       000005DE (1502)\n+1AD86E Uncompressed Size     000010D1 (4305)\n \n-1A4046 LOCAL HEADER #1592    04034B50 (67324752)\n-1A404A Extract Zip Spec      14 (20) '2.0'\n-1A404B Extract OS            00 (0) 'MS-DOS'\n-1A404C General Purpose Flag  0808 (2056)\n+1AD872 LOCAL HEADER #1592    04034B50 (67324752)\n+1AD876 Extract Zip Spec      14 (20) '2.0'\n+1AD877 Extract OS            00 (0) 'MS-DOS'\n+1AD878 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A404E Compression Method    0008 (8) 'Deflated'\n-1A4050 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A4054 CRC                   00000000 (0)\n-1A4058 Compressed Size       00000000 (0)\n-1A405C Uncompressed Size     00000000 (0)\n-1A4060 Filename Length       002D (45)\n-1A4062 Extra Length          0000 (0)\n-1A4064 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1AD87A Compression Method    0008 (8) 'Deflated'\n+1AD87C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1AD880 CRC                   00000000 (0)\n+1AD884 Compressed Size       00000000 (0)\n+1AD888 Uncompressed Size     00000000 (0)\n+1AD88C Filename Length       0059 (89)\n+1AD88E Extra Length          0000 (0)\n+1AD890 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A4064: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1AD890: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A4091 PAYLOAD               XX\n+1AD8E9 PAYLOAD\n \n-1A4093 DATA DESCRIPTOR       08074B50 (134695760)\n-1A4097 CRC                   00000000 (0)\n-1A409B Compressed Size       00000002 (2)\n-1A409F Uncompressed Size     00000000 (0)\n+1ADBA3 DATA DESCRIPTOR       08074B50 (134695760)\n+1ADBA7 CRC                   4843AF3D (1212395325)\n+1ADBAB Compressed Size       000002BA (698)\n+1ADBAF Uncompressed Size     00000670 (1648)\n \n-1A40A3 LOCAL HEADER #1593    04034B50 (67324752)\n-1A40A7 Extract Zip Spec      14 (20) '2.0'\n-1A40A8 Extract OS            00 (0) 'MS-DOS'\n-1A40A9 General Purpose Flag  0808 (2056)\n+1ADBB3 LOCAL HEADER #1593    04034B50 (67324752)\n+1ADBB7 Extract Zip Spec      14 (20) '2.0'\n+1ADBB8 Extract OS            00 (0) 'MS-DOS'\n+1ADBB9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A40AB Compression Method    0008 (8) 'Deflated'\n-1A40AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A40B1 CRC                   00000000 (0)\n-1A40B5 Compressed Size       00000000 (0)\n-1A40B9 Uncompressed Size     00000000 (0)\n-1A40BD Filename Length       0045 (69)\n-1A40BF Extra Length          0000 (0)\n-1A40C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1ADBBB Compression Method    0008 (8) 'Deflated'\n+1ADBBD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1ADBC1 CRC                   00000000 (0)\n+1ADBC5 Compressed Size       00000000 (0)\n+1ADBC9 Uncompressed Size     00000000 (0)\n+1ADBCD Filename Length       003D (61)\n+1ADBCF Extra Length          0000 (0)\n+1ADBD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A40C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1ADBD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A4106 PAYLOAD\n+1ADC0E PAYLOAD               XX\n \n-1A477F DATA DESCRIPTOR       08074B50 (134695760)\n-1A4783 CRC                   300B4DD6 (806047190)\n-1A4787 Compressed Size       00000679 (1657)\n-1A478B Uncompressed Size     000016B2 (5810)\n+1ADC10 DATA DESCRIPTOR       08074B50 (134695760)\n+1ADC14 CRC                   00000000 (0)\n+1ADC18 Compressed Size       00000002 (2)\n+1ADC1C Uncompressed Size     00000000 (0)\n \n-1A478F LOCAL HEADER #1594    04034B50 (67324752)\n-1A4793 Extract Zip Spec      14 (20) '2.0'\n-1A4794 Extract OS            00 (0) 'MS-DOS'\n-1A4795 General Purpose Flag  0808 (2056)\n+1ADC20 LOCAL HEADER #1594    04034B50 (67324752)\n+1ADC24 Extract Zip Spec      14 (20) '2.0'\n+1ADC25 Extract OS            00 (0) 'MS-DOS'\n+1ADC26 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A4797 Compression Method    0008 (8) 'Deflated'\n-1A4799 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A479D CRC                   00000000 (0)\n-1A47A1 Compressed Size       00000000 (0)\n-1A47A5 Uncompressed Size     00000000 (0)\n-1A47A9 Filename Length       003B (59)\n-1A47AB Extra Length          0000 (0)\n-1A47AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1ADC28 Compression Method    0008 (8) 'Deflated'\n+1ADC2A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1ADC2E CRC                   00000000 (0)\n+1ADC32 Compressed Size       00000000 (0)\n+1ADC36 Uncompressed Size     00000000 (0)\n+1ADC3A Filename Length       0044 (68)\n+1ADC3C Extra Length          0000 (0)\n+1ADC3E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A47AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1ADC3E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A47E8 PAYLOAD\n+1ADC82 PAYLOAD\n \n-1A4AB8 DATA DESCRIPTOR       08074B50 (134695760)\n-1A4ABC CRC                   F7853FBB (4152704955)\n-1A4AC0 Compressed Size       000002D0 (720)\n-1A4AC4 Uncompressed Size     000005F7 (1527)\n+1ADFEF DATA DESCRIPTOR       08074B50 (134695760)\n+1ADFF3 CRC                   E98EF8F4 (3918461172)\n+1ADFF7 Compressed Size       0000036D (877)\n+1ADFFB Uncompressed Size     000008A5 (2213)\n \n-1A4AC8 LOCAL HEADER #1595    04034B50 (67324752)\n-1A4ACC Extract Zip Spec      14 (20) '2.0'\n-1A4ACD Extract OS            00 (0) 'MS-DOS'\n-1A4ACE General Purpose Flag  0808 (2056)\n+1ADFFF LOCAL HEADER #1595    04034B50 (67324752)\n+1AE003 Extract Zip Spec      14 (20) '2.0'\n+1AE004 Extract OS            00 (0) 'MS-DOS'\n+1AE005 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A4AD0 Compression Method    0008 (8) 'Deflated'\n-1A4AD2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A4AD6 CRC                   00000000 (0)\n-1A4ADA Compressed Size       00000000 (0)\n-1A4ADE Uncompressed Size     00000000 (0)\n-1A4AE2 Filename Length       0043 (67)\n-1A4AE4 Extra Length          0000 (0)\n-1A4AE6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1AE007 Compression Method    0008 (8) 'Deflated'\n+1AE009 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1AE00D CRC                   00000000 (0)\n+1AE011 Compressed Size       00000000 (0)\n+1AE015 Uncompressed Size     00000000 (0)\n+1AE019 Filename Length       004B (75)\n+1AE01B Extra Length          0000 (0)\n+1AE01D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A4AE6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1AE01D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A4B29 PAYLOAD\n+1AE068 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-1A4DEA DATA DESCRIPTOR       08074B50 (134695760)\n-1A4DEE CRC                   E7186373 (3877135219)\n-1A4DF2 Compressed Size       000002C1 (705)\n-1A4DF6 Uncompressed Size     00000585 (1413)\n+1AE0B7 DATA DESCRIPTOR       08074B50 (134695760)\n+1AE0BB CRC                   78F5F066 (2029383782)\n+1AE0BF Compressed Size       0000004F (79)\n+1AE0C3 Uncompressed Size     00000053 (83)\n \n-1A4DFA LOCAL HEADER #1596    04034B50 (67324752)\n-1A4DFE Extract Zip Spec      14 (20) '2.0'\n-1A4DFF Extract OS            00 (0) 'MS-DOS'\n-1A4E00 General Purpose Flag  0808 (2056)\n+1AE0C7 LOCAL HEADER #1596    04034B50 (67324752)\n+1AE0CB Extract Zip Spec      14 (20) '2.0'\n+1AE0CC Extract OS            00 (0) 'MS-DOS'\n+1AE0CD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A4E02 Compression Method    0008 (8) 'Deflated'\n-1A4E04 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A4E08 CRC                   00000000 (0)\n-1A4E0C Compressed Size       00000000 (0)\n-1A4E10 Uncompressed Size     00000000 (0)\n-1A4E14 Filename Length       0046 (70)\n-1A4E16 Extra Length          0000 (0)\n-1A4E18 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1AE0CF Compression Method    0008 (8) 'Deflated'\n+1AE0D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1AE0D5 CRC                   00000000 (0)\n+1AE0D9 Compressed Size       00000000 (0)\n+1AE0DD Uncompressed Size     00000000 (0)\n+1AE0E1 Filename Length       002D (45)\n+1AE0E3 Extra Length          0000 (0)\n+1AE0E5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A4E18: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1AE0E5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A4E5E PAYLOAD\n+1AE112 PAYLOAD               XX\n \n-1A50C2 DATA DESCRIPTOR       08074B50 (134695760)\n-1A50C6 CRC                   AB66324F (2875601487)\n-1A50CA Compressed Size       00000264 (612)\n-1A50CE Uncompressed Size     00000460 (1120)\n+1AE114 DATA DESCRIPTOR       08074B50 (134695760)\n+1AE118 CRC                   00000000 (0)\n+1AE11C Compressed Size       00000002 (2)\n+1AE120 Uncompressed Size     00000000 (0)\n \n-1A50D2 LOCAL HEADER #1597    04034B50 (67324752)\n-1A50D6 Extract Zip Spec      14 (20) '2.0'\n-1A50D7 Extract OS            00 (0) 'MS-DOS'\n-1A50D8 General Purpose Flag  0808 (2056)\n+1AE124 LOCAL HEADER #1597    04034B50 (67324752)\n+1AE128 Extract Zip Spec      14 (20) '2.0'\n+1AE129 Extract OS            00 (0) 'MS-DOS'\n+1AE12A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A50DA Compression Method    0008 (8) 'Deflated'\n-1A50DC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A50E0 CRC                   00000000 (0)\n-1A50E4 Compressed Size       00000000 (0)\n-1A50E8 Uncompressed Size     00000000 (0)\n-1A50EC Filename Length       0048 (72)\n-1A50EE Extra Length          0000 (0)\n-1A50F0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1AE12C Compression Method    0008 (8) 'Deflated'\n+1AE12E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1AE132 CRC                   00000000 (0)\n+1AE136 Compressed Size       00000000 (0)\n+1AE13A Uncompressed Size     00000000 (0)\n+1AE13E Filename Length       004C (76)\n+1AE140 Extra Length          0000 (0)\n+1AE142 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A50F0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1AE142: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A5138 PAYLOAD\n+1AE18E PAYLOAD\n \n-1A53DF DATA DESCRIPTOR       08074B50 (134695760)\n-1A53E3 CRC                   A5D7D6FA (2782385914)\n-1A53E7 Compressed Size       000002A7 (679)\n-1A53EB Uncompressed Size     00000516 (1302)\n+1AEE1E DATA DESCRIPTOR       08074B50 (134695760)\n+1AEE22 CRC                   86E4A798 (2263132056)\n+1AEE26 Compressed Size       00000C90 (3216)\n+1AEE2A Uncompressed Size     00002F2C (12076)\n \n-1A53EF LOCAL HEADER #1598    04034B50 (67324752)\n-1A53F3 Extract Zip Spec      14 (20) '2.0'\n-1A53F4 Extract OS            00 (0) 'MS-DOS'\n-1A53F5 General Purpose Flag  0808 (2056)\n+1AEE2E LOCAL HEADER #1598    04034B50 (67324752)\n+1AEE32 Extract Zip Spec      14 (20) '2.0'\n+1AEE33 Extract OS            00 (0) 'MS-DOS'\n+1AEE34 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A53F7 Compression Method    0008 (8) 'Deflated'\n-1A53F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A53FD CRC                   00000000 (0)\n-1A5401 Compressed Size       00000000 (0)\n-1A5405 Uncompressed Size     00000000 (0)\n-1A5409 Filename Length       0027 (39)\n-1A540B Extra Length          0000 (0)\n-1A540D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1AEE36 Compression Method    0008 (8) 'Deflated'\n+1AEE38 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1AEE3C CRC                   00000000 (0)\n+1AEE40 Compressed Size       00000000 (0)\n+1AEE44 Uncompressed Size     00000000 (0)\n+1AEE48 Filename Length       0053 (83)\n+1AEE4A Extra Length          0000 (0)\n+1AEE4C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A540D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1AEE4C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A5434 PAYLOAD               XX\n+1AEE9F PAYLOAD\n \n-1A5436 DATA DESCRIPTOR       08074B50 (134695760)\n-1A543A CRC                   00000000 (0)\n-1A543E Compressed Size       00000002 (2)\n-1A5442 Uncompressed Size     00000000 (0)\n+1AF115 DATA DESCRIPTOR       08074B50 (134695760)\n+1AF119 CRC                   4296B4B4 (1117172916)\n+1AF11D Compressed Size       00000276 (630)\n+1AF121 Uncompressed Size     00000539 (1337)\n \n-1A5446 LOCAL HEADER #1599    04034B50 (67324752)\n-1A544A Extract Zip Spec      14 (20) '2.0'\n-1A544B Extract OS            00 (0) 'MS-DOS'\n-1A544C General Purpose Flag  0808 (2056)\n+1AF125 LOCAL HEADER #1599    04034B50 (67324752)\n+1AF129 Extract Zip Spec      14 (20) '2.0'\n+1AF12A Extract OS            00 (0) 'MS-DOS'\n+1AF12B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A544E Compression Method    0008 (8) 'Deflated'\n-1A5450 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A5454 CRC                   00000000 (0)\n-1A5458 Compressed Size       00000000 (0)\n-1A545C Uncompressed Size     00000000 (0)\n-1A5460 Filename Length       003B (59)\n-1A5462 Extra Length          0000 (0)\n-1A5464 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1AF12D Compression Method    0008 (8) 'Deflated'\n+1AF12F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1AF133 CRC                   00000000 (0)\n+1AF137 Compressed Size       00000000 (0)\n+1AF13B Uncompressed Size     00000000 (0)\n+1AF13F Filename Length       003A (58)\n+1AF141 Extra Length          0000 (0)\n+1AF143 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A5464: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1AF143: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A549F PAYLOAD\n+1AF17D PAYLOAD               XX\n \n-1A593D DATA DESCRIPTOR       08074B50 (134695760)\n-1A5941 CRC                   3E0609F4 (1040583156)\n-1A5945 Compressed Size       0000049E (1182)\n-1A5949 Uncompressed Size     00000E94 (3732)\n+1AF17F DATA DESCRIPTOR       08074B50 (134695760)\n+1AF183 CRC                   00000000 (0)\n+1AF187 Compressed Size       00000002 (2)\n+1AF18B Uncompressed Size     00000000 (0)\n \n-1A594D LOCAL HEADER #1600    04034B50 (67324752)\n-1A5951 Extract Zip Spec      14 (20) '2.0'\n-1A5952 Extract OS            00 (0) 'MS-DOS'\n-1A5953 General Purpose Flag  0808 (2056)\n+1AF18F LOCAL HEADER #1600    04034B50 (67324752)\n+1AF193 Extract Zip Spec      14 (20) '2.0'\n+1AF194 Extract OS            00 (0) 'MS-DOS'\n+1AF195 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A5955 Compression Method    0008 (8) 'Deflated'\n-1A5957 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A595B CRC                   00000000 (0)\n-1A595F Compressed Size       00000000 (0)\n-1A5963 Uncompressed Size     00000000 (0)\n-1A5967 Filename Length       003C (60)\n-1A5969 Extra Length          0000 (0)\n-1A596B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1AF197 Compression Method    0008 (8) 'Deflated'\n+1AF199 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1AF19D CRC                   00000000 (0)\n+1AF1A1 Compressed Size       00000000 (0)\n+1AF1A5 Uncompressed Size     00000000 (0)\n+1AF1A9 Filename Length       0041 (65)\n+1AF1AB Extra Length          0000 (0)\n+1AF1AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A596B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1AF1AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A59A7 PAYLOAD\n+1AF1EE PAYLOAD\n \n-1A5DCF DATA DESCRIPTOR       08074B50 (134695760)\n-1A5DD3 CRC                   99ADAD26 (2578296102)\n-1A5DD7 Compressed Size       00000428 (1064)\n-1A5DDB Uncompressed Size     00000CCF (3279)\n+1AF5A1 DATA DESCRIPTOR       08074B50 (134695760)\n+1AF5A5 CRC                   91AC24FF (2443977983)\n+1AF5A9 Compressed Size       000003B3 (947)\n+1AF5AD Uncompressed Size     00000941 (2369)\n \n-1A5DDF LOCAL HEADER #1601    04034B50 (67324752)\n-1A5DE3 Extract Zip Spec      14 (20) '2.0'\n-1A5DE4 Extract OS            00 (0) 'MS-DOS'\n-1A5DE5 General Purpose Flag  0808 (2056)\n+1AF5B1 LOCAL HEADER #1601    04034B50 (67324752)\n+1AF5B5 Extract Zip Spec      14 (20) '2.0'\n+1AF5B6 Extract OS            00 (0) 'MS-DOS'\n+1AF5B7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A5DE7 Compression Method    0008 (8) 'Deflated'\n-1A5DE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A5DED CRC                   00000000 (0)\n-1A5DF1 Compressed Size       00000000 (0)\n-1A5DF5 Uncompressed Size     00000000 (0)\n-1A5DF9 Filename Length       003D (61)\n-1A5DFB Extra Length          0000 (0)\n-1A5DFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1AF5B9 Compression Method    0008 (8) 'Deflated'\n+1AF5BB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1AF5BF CRC                   00000000 (0)\n+1AF5C3 Compressed Size       00000000 (0)\n+1AF5C7 Uncompressed Size     00000000 (0)\n+1AF5CB Filename Length       0048 (72)\n+1AF5CD Extra Length          0000 (0)\n+1AF5CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A5DFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1AF5CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A5E3A PAYLOAD\n+1AF617 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-1A6123 DATA DESCRIPTOR       08074B50 (134695760)\n-1A6127 CRC                   61EF883C (1643087932)\n-1A612B Compressed Size       000002E9 (745)\n-1A612F Uncompressed Size     00000719 (1817)\n+1AF663 DATA DESCRIPTOR       08074B50 (134695760)\n+1AF667 CRC                   B107068C (2970027660)\n+1AF66B Compressed Size       0000004C (76)\n+1AF66F Uncompressed Size     00000050 (80)\n \n-1A6133 LOCAL HEADER #1602    04034B50 (67324752)\n-1A6137 Extract Zip Spec      14 (20) '2.0'\n-1A6138 Extract OS            00 (0) 'MS-DOS'\n-1A6139 General Purpose Flag  0808 (2056)\n+1AF673 LOCAL HEADER #1602    04034B50 (67324752)\n+1AF677 Extract Zip Spec      14 (20) '2.0'\n+1AF678 Extract OS            00 (0) 'MS-DOS'\n+1AF679 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A613B Compression Method    0008 (8) 'Deflated'\n-1A613D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A6141 CRC                   00000000 (0)\n-1A6145 Compressed Size       00000000 (0)\n-1A6149 Uncompressed Size     00000000 (0)\n-1A614D Filename Length       002D (45)\n-1A614F Extra Length          0000 (0)\n-1A6151 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1AF67B Compression Method    0008 (8) 'Deflated'\n+1AF67D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1AF681 CRC                   00000000 (0)\n+1AF685 Compressed Size       00000000 (0)\n+1AF689 Uncompressed Size     00000000 (0)\n+1AF68D Filename Length       002C (44)\n+1AF68F Extra Length          0000 (0)\n+1AF691 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A6151: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1AF691: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A617E PAYLOAD               XX\n+1AF6BD PAYLOAD               XX\n \n-1A6180 DATA DESCRIPTOR       08074B50 (134695760)\n-1A6184 CRC                   00000000 (0)\n-1A6188 Compressed Size       00000002 (2)\n-1A618C Uncompressed Size     00000000 (0)\n+1AF6BF DATA DESCRIPTOR       08074B50 (134695760)\n+1AF6C3 CRC                   00000000 (0)\n+1AF6C7 Compressed Size       00000002 (2)\n+1AF6CB Uncompressed Size     00000000 (0)\n \n-1A6190 LOCAL HEADER #1603    04034B50 (67324752)\n-1A6194 Extract Zip Spec      14 (20) '2.0'\n-1A6195 Extract OS            00 (0) 'MS-DOS'\n-1A6196 General Purpose Flag  0808 (2056)\n+1AF6CF LOCAL HEADER #1603    04034B50 (67324752)\n+1AF6D3 Extract Zip Spec      14 (20) '2.0'\n+1AF6D4 Extract OS            00 (0) 'MS-DOS'\n+1AF6D5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A6198 Compression Method    0008 (8) 'Deflated'\n-1A619A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A619E CRC                   00000000 (0)\n-1A61A2 Compressed Size       00000000 (0)\n-1A61A6 Uncompressed Size     00000000 (0)\n-1A61AA Filename Length       0047 (71)\n-1A61AC Extra Length          0000 (0)\n-1A61AE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1AF6D7 Compression Method    0008 (8) 'Deflated'\n+1AF6D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1AF6DD CRC                   00000000 (0)\n+1AF6E1 Compressed Size       00000000 (0)\n+1AF6E5 Uncompressed Size     00000000 (0)\n+1AF6E9 Filename Length       004A (74)\n+1AF6EB Extra Length          0000 (0)\n+1AF6ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A61AE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1AF6ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A61F5 PAYLOAD\n+1AF737 PAYLOAD\n \n-1A66DD DATA DESCRIPTOR       08074B50 (134695760)\n-1A66E1 CRC                   8EE26A20 (2397202976)\n-1A66E5 Compressed Size       000004E8 (1256)\n-1A66E9 Uncompressed Size     0000108D (4237)\n+1AFAE1 DATA DESCRIPTOR       08074B50 (134695760)\n+1AFAE5 CRC                   F13A996B (4047149419)\n+1AFAE9 Compressed Size       000003AA (938)\n+1AFAED Uncompressed Size     00000A44 (2628)\n \n-1A66ED LOCAL HEADER #1604    04034B50 (67324752)\n-1A66F1 Extract Zip Spec      14 (20) '2.0'\n-1A66F2 Extract OS            00 (0) 'MS-DOS'\n-1A66F3 General Purpose Flag  0808 (2056)\n+1AFAF1 LOCAL HEADER #1604    04034B50 (67324752)\n+1AFAF5 Extract Zip Spec      14 (20) '2.0'\n+1AFAF6 Extract OS            00 (0) 'MS-DOS'\n+1AFAF7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A66F5 Compression Method    0008 (8) 'Deflated'\n-1A66F7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A66FB CRC                   00000000 (0)\n-1A66FF Compressed Size       00000000 (0)\n-1A6703 Uncompressed Size     00000000 (0)\n-1A6707 Filename Length       0048 (72)\n-1A6709 Extra Length          0000 (0)\n-1A670B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1AFAF9 Compression Method    0008 (8) 'Deflated'\n+1AFAFB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1AFAFF CRC                   00000000 (0)\n+1AFB03 Compressed Size       00000000 (0)\n+1AFB07 Uncompressed Size     00000000 (0)\n+1AFB0B Filename Length       004A (74)\n+1AFB0D Extra Length          0000 (0)\n+1AFB0F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A670B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1AFB0F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A6753 PAYLOAD\n+1AFB59 PAYLOAD\n \n-1A6BF5 DATA DESCRIPTOR       08074B50 (134695760)\n-1A6BF9 CRC                   D0E3428B (3504554635)\n-1A6BFD Compressed Size       000004A2 (1186)\n-1A6C01 Uncompressed Size     00000F32 (3890)\n+1B08B7 DATA DESCRIPTOR       08074B50 (134695760)\n+1B08BB CRC                   2B568850 (727091280)\n+1B08BF Compressed Size       00000D5E (3422)\n+1B08C3 Uncompressed Size     00003698 (13976)\n \n-1A6C05 LOCAL HEADER #1605    04034B50 (67324752)\n-1A6C09 Extract Zip Spec      14 (20) '2.0'\n-1A6C0A Extract OS            00 (0) 'MS-DOS'\n-1A6C0B General Purpose Flag  0808 (2056)\n+1B08C7 LOCAL HEADER #1605    04034B50 (67324752)\n+1B08CB Extract Zip Spec      14 (20) '2.0'\n+1B08CC Extract OS            00 (0) 'MS-DOS'\n+1B08CD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A6C0D Compression Method    0008 (8) 'Deflated'\n-1A6C0F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A6C13 CRC                   00000000 (0)\n-1A6C17 Compressed Size       00000000 (0)\n-1A6C1B Uncompressed Size     00000000 (0)\n-1A6C1F Filename Length       0049 (73)\n-1A6C21 Extra Length          0000 (0)\n-1A6C23 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B08CF Compression Method    0008 (8) 'Deflated'\n+1B08D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B08D5 CRC                   00000000 (0)\n+1B08D9 Compressed Size       00000000 (0)\n+1B08DD Uncompressed Size     00000000 (0)\n+1B08E1 Filename Length       0051 (81)\n+1B08E3 Extra Length          0000 (0)\n+1B08E5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A6C23: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B08E5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A6C6C PAYLOAD\n+1B0936 PAYLOAD\n \n-1A6F92 DATA DESCRIPTOR       08074B50 (134695760)\n-1A6F96 CRC                   7E62C783 (2120402819)\n-1A6F9A Compressed Size       00000326 (806)\n-1A6F9E Uncompressed Size     0000079E (1950)\n+1B0C5E DATA DESCRIPTOR       08074B50 (134695760)\n+1B0C62 CRC                   78482BCF (2017995727)\n+1B0C66 Compressed Size       00000328 (808)\n+1B0C6A Uncompressed Size     00000726 (1830)\n \n-1A6FA2 LOCAL HEADER #1606    04034B50 (67324752)\n-1A6FA6 Extract Zip Spec      14 (20) '2.0'\n-1A6FA7 Extract OS            00 (0) 'MS-DOS'\n-1A6FA8 General Purpose Flag  0808 (2056)\n+1B0C6E LOCAL HEADER #1606    04034B50 (67324752)\n+1B0C72 Extract Zip Spec      14 (20) '2.0'\n+1B0C73 Extract OS            00 (0) 'MS-DOS'\n+1B0C74 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A6FAA Compression Method    0008 (8) 'Deflated'\n-1A6FAC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A6FB0 CRC                   00000000 (0)\n-1A6FB4 Compressed Size       00000000 (0)\n-1A6FB8 Uncompressed Size     00000000 (0)\n-1A6FBC Filename Length       0039 (57)\n-1A6FBE Extra Length          0000 (0)\n-1A6FC0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B0C76 Compression Method    0008 (8) 'Deflated'\n+1B0C78 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B0C7C CRC                   00000000 (0)\n+1B0C80 Compressed Size       00000000 (0)\n+1B0C84 Uncompressed Size     00000000 (0)\n+1B0C88 Filename Length       0039 (57)\n+1B0C8A Extra Length          0000 (0)\n+1B0C8C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A6FC0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B0C8C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A6FF9 PAYLOAD\n+1B0CC5 PAYLOAD               XX\n \n-1A7267 DATA DESCRIPTOR       08074B50 (134695760)\n-1A726B CRC                   39DE609E (970875038)\n-1A726F Compressed Size       0000026E (622)\n-1A7273 Uncompressed Size     00000481 (1153)\n+1B0CC7 DATA DESCRIPTOR       08074B50 (134695760)\n+1B0CCB CRC                   00000000 (0)\n+1B0CCF Compressed Size       00000002 (2)\n+1B0CD3 Uncompressed Size     00000000 (0)\n \n-1A7277 LOCAL HEADER #1607    04034B50 (67324752)\n-1A727B Extract Zip Spec      14 (20) '2.0'\n-1A727C Extract OS            00 (0) 'MS-DOS'\n-1A727D General Purpose Flag  0808 (2056)\n+1B0CD7 LOCAL HEADER #1607    04034B50 (67324752)\n+1B0CDB Extract Zip Spec      14 (20) '2.0'\n+1B0CDC Extract OS            00 (0) 'MS-DOS'\n+1B0CDD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A727F Compression Method    0008 (8) 'Deflated'\n-1A7281 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A7285 CRC                   00000000 (0)\n-1A7289 Compressed Size       00000000 (0)\n-1A728D Uncompressed Size     00000000 (0)\n-1A7291 Filename Length       0036 (54)\n-1A7293 Extra Length          0000 (0)\n-1A7295 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B0CDF Compression Method    0008 (8) 'Deflated'\n+1B0CE1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B0CE5 CRC                   00000000 (0)\n+1B0CE9 Compressed Size       00000000 (0)\n+1B0CED Uncompressed Size     00000000 (0)\n+1B0CF1 Filename Length       0040 (64)\n+1B0CF3 Extra Length          0000 (0)\n+1B0CF5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A7295: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B0CF5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A72CB PAYLOAD               XX\n+1B0D35 PAYLOAD\n \n-1A72CD DATA DESCRIPTOR       08074B50 (134695760)\n-1A72D1 CRC                   00000000 (0)\n-1A72D5 Compressed Size       00000002 (2)\n-1A72D9 Uncompressed Size     00000000 (0)\n+1B1093 DATA DESCRIPTOR       08074B50 (134695760)\n+1B1097 CRC                   F1E099F8 (4058028536)\n+1B109B Compressed Size       0000035E (862)\n+1B109F Uncompressed Size     000007E8 (2024)\n \n-1A72DD LOCAL HEADER #1608    04034B50 (67324752)\n-1A72E1 Extract Zip Spec      14 (20) '2.0'\n-1A72E2 Extract OS            00 (0) 'MS-DOS'\n-1A72E3 General Purpose Flag  0808 (2056)\n+1B10A3 LOCAL HEADER #1608    04034B50 (67324752)\n+1B10A7 Extract Zip Spec      14 (20) '2.0'\n+1B10A8 Extract OS            00 (0) 'MS-DOS'\n+1B10A9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A72E5 Compression Method    0008 (8) 'Deflated'\n-1A72E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A72EB CRC                   00000000 (0)\n-1A72EF Compressed Size       00000000 (0)\n-1A72F3 Uncompressed Size     00000000 (0)\n-1A72F7 Filename Length       004A (74)\n-1A72F9 Extra Length          0000 (0)\n-1A72FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B10AB Compression Method    0008 (8) 'Deflated'\n+1B10AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B10B1 CRC                   00000000 (0)\n+1B10B5 Compressed Size       00000000 (0)\n+1B10B9 Uncompressed Size     00000000 (0)\n+1B10BD Filename Length       0047 (71)\n+1B10BF Extra Length          0000 (0)\n+1B10C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A72FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B10C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A7345 PAYLOAD\n+1B1108 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-1A767F DATA DESCRIPTOR       08074B50 (134695760)\n-1A7683 CRC                   FAE713D9 (4209447897)\n-1A7687 Compressed Size       0000033A (826)\n-1A768B Uncompressed Size     0000077E (1918)\n+1B1152 DATA DESCRIPTOR       08074B50 (134695760)\n+1B1156 CRC                   9AAEB621 (2595141153)\n+1B115A Compressed Size       0000004A (74)\n+1B115E Uncompressed Size     0000004F (79)\n \n-1A768F LOCAL HEADER #1609    04034B50 (67324752)\n-1A7693 Extract Zip Spec      14 (20) '2.0'\n-1A7694 Extract OS            00 (0) 'MS-DOS'\n-1A7695 General Purpose Flag  0808 (2056)\n+1B1162 LOCAL HEADER #1609    04034B50 (67324752)\n+1B1166 Extract Zip Spec      14 (20) '2.0'\n+1B1167 Extract OS            00 (0) 'MS-DOS'\n+1B1168 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A7697 Compression Method    0008 (8) 'Deflated'\n-1A7699 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A769D CRC                   00000000 (0)\n-1A76A1 Compressed Size       00000000 (0)\n-1A76A5 Uncompressed Size     00000000 (0)\n-1A76A9 Filename Length       0047 (71)\n-1A76AB Extra Length          0000 (0)\n-1A76AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B116A Compression Method    0008 (8) 'Deflated'\n+1B116C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B1170 CRC                   00000000 (0)\n+1B1174 Compressed Size       00000000 (0)\n+1B1178 Uncompressed Size     00000000 (0)\n+1B117C Filename Length       0025 (37)\n+1B117E Extra Length          0000 (0)\n+1B1180 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A76AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B1180: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A76F4 PAYLOAD\n+1B11A5 PAYLOAD               XX\n \n-1A7A2F DATA DESCRIPTOR       08074B50 (134695760)\n-1A7A33 CRC                   1D3EA7BE (490645438)\n-1A7A37 Compressed Size       0000033B (827)\n-1A7A3B Uncompressed Size     00000793 (1939)\n+1B11A7 DATA DESCRIPTOR       08074B50 (134695760)\n+1B11AB CRC                   00000000 (0)\n+1B11AF Compressed Size       00000002 (2)\n+1B11B3 Uncompressed Size     00000000 (0)\n \n-1A7A3F LOCAL HEADER #1610    04034B50 (67324752)\n-1A7A43 Extract Zip Spec      14 (20) '2.0'\n-1A7A44 Extract OS            00 (0) 'MS-DOS'\n-1A7A45 General Purpose Flag  0808 (2056)\n+1B11B7 LOCAL HEADER #1610    04034B50 (67324752)\n+1B11BB Extract Zip Spec      14 (20) '2.0'\n+1B11BC Extract OS            00 (0) 'MS-DOS'\n+1B11BD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A7A47 Compression Method    0008 (8) 'Deflated'\n-1A7A49 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A7A4D CRC                   00000000 (0)\n-1A7A51 Compressed Size       00000000 (0)\n-1A7A55 Uncompressed Size     00000000 (0)\n-1A7A59 Filename Length       004C (76)\n-1A7A5B Extra Length          0000 (0)\n-1A7A5D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B11BF Compression Method    0008 (8) 'Deflated'\n+1B11C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B11C5 CRC                   00000000 (0)\n+1B11C9 Compressed Size       00000000 (0)\n+1B11CD Uncompressed Size     00000000 (0)\n+1B11D1 Filename Length       0044 (68)\n+1B11D3 Extra Length          0000 (0)\n+1B11D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A7A5D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B11D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A7AA9 PAYLOAD\n+1B1219 PAYLOAD\n \n-1A7DE5 DATA DESCRIPTOR       08074B50 (134695760)\n-1A7DE9 CRC                   585FB751 (1482667857)\n-1A7DED Compressed Size       0000033C (828)\n-1A7DF1 Uncompressed Size     00000778 (1912)\n+1B1A72 DATA DESCRIPTOR       08074B50 (134695760)\n+1B1A76 CRC                   A679ECEF (2793008367)\n+1B1A7A Compressed Size       00000859 (2137)\n+1B1A7E Uncompressed Size     00001B9C (7068)\n \n-1A7DF5 LOCAL HEADER #1611    04034B50 (67324752)\n-1A7DF9 Extract Zip Spec      14 (20) '2.0'\n-1A7DFA Extract OS            00 (0) 'MS-DOS'\n-1A7DFB General Purpose Flag  0808 (2056)\n+1B1A82 LOCAL HEADER #1611    04034B50 (67324752)\n+1B1A86 Extract Zip Spec      14 (20) '2.0'\n+1B1A87 Extract OS            00 (0) 'MS-DOS'\n+1B1A88 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A7DFD Compression Method    0008 (8) 'Deflated'\n-1A7DFF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A7E03 CRC                   00000000 (0)\n-1A7E07 Compressed Size       00000000 (0)\n-1A7E0B Uncompressed Size     00000000 (0)\n-1A7E0F Filename Length       0033 (51)\n-1A7E11 Extra Length          0000 (0)\n-1A7E13 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B1A8A Compression Method    0008 (8) 'Deflated'\n+1B1A8C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B1A90 CRC                   00000000 (0)\n+1B1A94 Compressed Size       00000000 (0)\n+1B1A98 Uncompressed Size     00000000 (0)\n+1B1A9C Filename Length       004B (75)\n+1B1A9E Extra Length          0000 (0)\n+1B1AA0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A7E13: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B1AA0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A7E46 PAYLOAD               XX\n+1B1AEB PAYLOAD\n \n-1A7E48 DATA DESCRIPTOR       08074B50 (134695760)\n-1A7E4C CRC                   00000000 (0)\n-1A7E50 Compressed Size       00000002 (2)\n-1A7E54 Uncompressed Size     00000000 (0)\n+1B1D66 DATA DESCRIPTOR       08074B50 (134695760)\n+1B1D6A CRC                   8FA8BF90 (2410200976)\n+1B1D6E Compressed Size       0000027B (635)\n+1B1D72 Uncompressed Size     00000554 (1364)\n \n-1A7E58 LOCAL HEADER #1612    04034B50 (67324752)\n-1A7E5C Extract Zip Spec      14 (20) '2.0'\n-1A7E5D Extract OS            00 (0) 'MS-DOS'\n-1A7E5E General Purpose Flag  0808 (2056)\n+1B1D76 LOCAL HEADER #1612    04034B50 (67324752)\n+1B1D7A Extract Zip Spec      14 (20) '2.0'\n+1B1D7B Extract OS            00 (0) 'MS-DOS'\n+1B1D7C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A7E60 Compression Method    0008 (8) 'Deflated'\n-1A7E62 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A7E66 CRC                   00000000 (0)\n-1A7E6A Compressed Size       00000000 (0)\n-1A7E6E Uncompressed Size     00000000 (0)\n-1A7E72 Filename Length       0044 (68)\n-1A7E74 Extra Length          0000 (0)\n-1A7E76 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B1D7E Compression Method    0008 (8) 'Deflated'\n+1B1D80 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B1D84 CRC                   00000000 (0)\n+1B1D88 Compressed Size       00000000 (0)\n+1B1D8C Uncompressed Size     00000000 (0)\n+1B1D90 Filename Length       003A (58)\n+1B1D92 Extra Length          0000 (0)\n+1B1D94 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A7E76: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B1D94: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A7EBA PAYLOAD\n+1B1DCE PAYLOAD               XX\n \n-1A833D DATA DESCRIPTOR       08074B50 (134695760)\n-1A8341 CRC                   2EE59E00 (786800128)\n-1A8345 Compressed Size       00000483 (1155)\n-1A8349 Uncompressed Size     00000EFE (3838)\n+1B1DD0 DATA DESCRIPTOR       08074B50 (134695760)\n+1B1DD4 CRC                   00000000 (0)\n+1B1DD8 Compressed Size       00000002 (2)\n+1B1DDC Uncompressed Size     00000000 (0)\n \n-1A834D LOCAL HEADER #1613    04034B50 (67324752)\n-1A8351 Extract Zip Spec      14 (20) '2.0'\n-1A8352 Extract OS            00 (0) 'MS-DOS'\n-1A8353 General Purpose Flag  0808 (2056)\n+1B1DE0 LOCAL HEADER #1613    04034B50 (67324752)\n+1B1DE4 Extract Zip Spec      14 (20) '2.0'\n+1B1DE5 Extract OS            00 (0) 'MS-DOS'\n+1B1DE6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A8355 Compression Method    0008 (8) 'Deflated'\n-1A8357 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A835B CRC                   00000000 (0)\n-1A835F Compressed Size       00000000 (0)\n-1A8363 Uncompressed Size     00000000 (0)\n-1A8367 Filename Length       0027 (39)\n-1A8369 Extra Length          0000 (0)\n-1A836B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B1DE8 Compression Method    0008 (8) 'Deflated'\n+1B1DEA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B1DEE CRC                   00000000 (0)\n+1B1DF2 Compressed Size       00000000 (0)\n+1B1DF6 Uncompressed Size     00000000 (0)\n+1B1DFA Filename Length       0041 (65)\n+1B1DFC Extra Length          0000 (0)\n+1B1DFE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A836B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B1DFE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A8392 PAYLOAD               XX\n+1B1E3F PAYLOAD\n \n-1A8394 DATA DESCRIPTOR       08074B50 (134695760)\n-1A8398 CRC                   00000000 (0)\n-1A839C Compressed Size       00000002 (2)\n-1A83A0 Uncompressed Size     00000000 (0)\n+1B2188 DATA DESCRIPTOR       08074B50 (134695760)\n+1B218C CRC                   76B58A01 (1991608833)\n+1B2190 Compressed Size       00000349 (841)\n+1B2194 Uncompressed Size     000007F6 (2038)\n \n-1A83A4 LOCAL HEADER #1614    04034B50 (67324752)\n-1A83A8 Extract Zip Spec      14 (20) '2.0'\n-1A83A9 Extract OS            00 (0) 'MS-DOS'\n-1A83AA General Purpose Flag  0808 (2056)\n+1B2198 LOCAL HEADER #1614    04034B50 (67324752)\n+1B219C Extract Zip Spec      14 (20) '2.0'\n+1B219D Extract OS            00 (0) 'MS-DOS'\n+1B219E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A83AC Compression Method    0008 (8) 'Deflated'\n-1A83AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A83B2 CRC                   00000000 (0)\n-1A83B6 Compressed Size       00000000 (0)\n-1A83BA Uncompressed Size     00000000 (0)\n-1A83BE Filename Length       003F (63)\n-1A83C0 Extra Length          0000 (0)\n-1A83C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B21A0 Compression Method    0008 (8) 'Deflated'\n+1B21A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B21A6 CRC                   00000000 (0)\n+1B21AA Compressed Size       00000000 (0)\n+1B21AE Uncompressed Size     00000000 (0)\n+1B21B2 Filename Length       0048 (72)\n+1B21B4 Extra Length          0000 (0)\n+1B21B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A83C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B21B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A8401 PAYLOAD\n+1B21FE PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-1A8835 DATA DESCRIPTOR       08074B50 (134695760)\n-1A8839 CRC                   33751F07 (863313671)\n-1A883D Compressed Size       00000434 (1076)\n-1A8841 Uncompressed Size     00000D59 (3417)\n+1B2249 DATA DESCRIPTOR       08074B50 (134695760)\n+1B224D CRC                   FC77F286 (4235719302)\n+1B2251 Compressed Size       0000004B (75)\n+1B2255 Uncompressed Size     00000050 (80)\n \n-1A8845 LOCAL HEADER #1615    04034B50 (67324752)\n-1A8849 Extract Zip Spec      14 (20) '2.0'\n-1A884A Extract OS            00 (0) 'MS-DOS'\n-1A884B General Purpose Flag  0808 (2056)\n+1B2259 LOCAL HEADER #1615    04034B50 (67324752)\n+1B225D Extract Zip Spec      14 (20) '2.0'\n+1B225E Extract OS            00 (0) 'MS-DOS'\n+1B225F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A884D Compression Method    0008 (8) 'Deflated'\n-1A884F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A8853 CRC                   00000000 (0)\n-1A8857 Compressed Size       00000000 (0)\n-1A885B Uncompressed Size     00000000 (0)\n-1A885F Filename Length       0040 (64)\n-1A8861 Extra Length          0000 (0)\n-1A8863 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B2261 Compression Method    0008 (8) 'Deflated'\n+1B2263 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B2267 CRC                   00000000 (0)\n+1B226B Compressed Size       00000000 (0)\n+1B226F Uncompressed Size     00000000 (0)\n+1B2273 Filename Length       002B (43)\n+1B2275 Extra Length          0000 (0)\n+1B2277 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A8863: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B2277: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A88A3 PAYLOAD\n+1B22A2 PAYLOAD               XX\n \n-1A8C35 DATA DESCRIPTOR       08074B50 (134695760)\n-1A8C39 CRC                   B2B54D61 (2998226273)\n-1A8C3D Compressed Size       00000392 (914)\n-1A8C41 Uncompressed Size     00000B38 (2872)\n+1B22A4 DATA DESCRIPTOR       08074B50 (134695760)\n+1B22A8 CRC                   00000000 (0)\n+1B22AC Compressed Size       00000002 (2)\n+1B22B0 Uncompressed Size     00000000 (0)\n \n-1A8C45 LOCAL HEADER #1616    04034B50 (67324752)\n-1A8C49 Extract Zip Spec      14 (20) '2.0'\n-1A8C4A Extract OS            00 (0) 'MS-DOS'\n-1A8C4B General Purpose Flag  0808 (2056)\n+1B22B4 LOCAL HEADER #1616    04034B50 (67324752)\n+1B22B8 Extract Zip Spec      14 (20) '2.0'\n+1B22B9 Extract OS            00 (0) 'MS-DOS'\n+1B22BA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A8C4D Compression Method    0008 (8) 'Deflated'\n-1A8C4F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A8C53 CRC                   00000000 (0)\n-1A8C57 Compressed Size       00000000 (0)\n-1A8C5B Uncompressed Size     00000000 (0)\n-1A8C5F Filename Length       003D (61)\n-1A8C61 Extra Length          0000 (0)\n-1A8C63 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B22BC Compression Method    0008 (8) 'Deflated'\n+1B22BE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B22C2 CRC                   00000000 (0)\n+1B22C6 Compressed Size       00000000 (0)\n+1B22CA Uncompressed Size     00000000 (0)\n+1B22CE Filename Length       0048 (72)\n+1B22D0 Extra Length          0000 (0)\n+1B22D2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A8C63: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B22D2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A8CA0 PAYLOAD\n+1B231A PAYLOAD\n \n-1A8F86 DATA DESCRIPTOR       08074B50 (134695760)\n-1A8F8A CRC                   B5CFC99D (3050293661)\n-1A8F8E Compressed Size       000002E6 (742)\n-1A8F92 Uncompressed Size     000006EC (1772)\n+1B2B23 DATA DESCRIPTOR       08074B50 (134695760)\n+1B2B27 CRC                   B44A5E3E (3024772670)\n+1B2B2B Compressed Size       00000809 (2057)\n+1B2B2F Uncompressed Size     00001C54 (7252)\n \n-1A8F96 LOCAL HEADER #1617    04034B50 (67324752)\n-1A8F9A Extract Zip Spec      14 (20) '2.0'\n-1A8F9B Extract OS            00 (0) 'MS-DOS'\n-1A8F9C General Purpose Flag  0808 (2056)\n+1B2B33 LOCAL HEADER #1617    04034B50 (67324752)\n+1B2B37 Extract Zip Spec      14 (20) '2.0'\n+1B2B38 Extract OS            00 (0) 'MS-DOS'\n+1B2B39 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A8F9E Compression Method    0008 (8) 'Deflated'\n-1A8FA0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A8FA4 CRC                   00000000 (0)\n-1A8FA8 Compressed Size       00000000 (0)\n-1A8FAC Uncompressed Size     00000000 (0)\n-1A8FB0 Filename Length       002B (43)\n-1A8FB2 Extra Length          0000 (0)\n-1A8FB4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B2B3B Compression Method    0008 (8) 'Deflated'\n+1B2B3D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B2B41 CRC                   00000000 (0)\n+1B2B45 Compressed Size       00000000 (0)\n+1B2B49 Uncompressed Size     00000000 (0)\n+1B2B4D Filename Length       004F (79)\n+1B2B4F Extra Length          0000 (0)\n+1B2B51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A8FB4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B2B51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A8FDF PAYLOAD               XX\n+1B2BA0 PAYLOAD\n \n-1A8FE1 DATA DESCRIPTOR       08074B50 (134695760)\n-1A8FE5 CRC                   00000000 (0)\n-1A8FE9 Compressed Size       00000002 (2)\n-1A8FED Uncompressed Size     00000000 (0)\n+1B2E2C DATA DESCRIPTOR       08074B50 (134695760)\n+1B2E30 CRC                   2C654259 (744833625)\n+1B2E34 Compressed Size       0000028C (652)\n+1B2E38 Uncompressed Size     0000057E (1406)\n \n-1A8FF1 LOCAL HEADER #1618    04034B50 (67324752)\n-1A8FF5 Extract Zip Spec      14 (20) '2.0'\n-1A8FF6 Extract OS            00 (0) 'MS-DOS'\n-1A8FF7 General Purpose Flag  0808 (2056)\n+1B2E3C LOCAL HEADER #1618    04034B50 (67324752)\n+1B2E40 Extract Zip Spec      14 (20) '2.0'\n+1B2E41 Extract OS            00 (0) 'MS-DOS'\n+1B2E42 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A8FF9 Compression Method    0008 (8) 'Deflated'\n-1A8FFB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A8FFF CRC                   00000000 (0)\n-1A9003 Compressed Size       00000000 (0)\n-1A9007 Uncompressed Size     00000000 (0)\n-1A900B Filename Length       0033 (51)\n-1A900D Extra Length          0000 (0)\n-1A900F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B2E44 Compression Method    0008 (8) 'Deflated'\n+1B2E46 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B2E4A CRC                   00000000 (0)\n+1B2E4E Compressed Size       00000000 (0)\n+1B2E52 Uncompressed Size     00000000 (0)\n+1B2E56 Filename Length       0038 (56)\n+1B2E58 Extra Length          0000 (0)\n+1B2E5A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A900F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B2E5A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A9042 PAYLOAD               XX\n+1B2E92 PAYLOAD               XX\n \n-1A9044 DATA DESCRIPTOR       08074B50 (134695760)\n-1A9048 CRC                   00000000 (0)\n-1A904C Compressed Size       00000002 (2)\n-1A9050 Uncompressed Size     00000000 (0)\n+1B2E94 DATA DESCRIPTOR       08074B50 (134695760)\n+1B2E98 CRC                   00000000 (0)\n+1B2E9C Compressed Size       00000002 (2)\n+1B2EA0 Uncompressed Size     00000000 (0)\n \n-1A9054 LOCAL HEADER #1619    04034B50 (67324752)\n-1A9058 Extract Zip Spec      14 (20) '2.0'\n-1A9059 Extract OS            00 (0) 'MS-DOS'\n-1A905A General Purpose Flag  0808 (2056)\n+1B2EA4 LOCAL HEADER #1619    04034B50 (67324752)\n+1B2EA8 Extract Zip Spec      14 (20) '2.0'\n+1B2EA9 Extract OS            00 (0) 'MS-DOS'\n+1B2EAA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A905C Compression Method    0008 (8) 'Deflated'\n-1A905E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A9062 CRC                   00000000 (0)\n-1A9066 Compressed Size       00000000 (0)\n-1A906A Uncompressed Size     00000000 (0)\n-1A906E Filename Length       0056 (86)\n-1A9070 Extra Length          0000 (0)\n-1A9072 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B2EAC Compression Method    0008 (8) 'Deflated'\n+1B2EAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B2EB2 CRC                   00000000 (0)\n+1B2EB6 Compressed Size       00000000 (0)\n+1B2EBA Uncompressed Size     00000000 (0)\n+1B2EBE Filename Length       003F (63)\n+1B2EC0 Extra Length          0000 (0)\n+1B2EC2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A9072: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B2EC2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A90C8 PAYLOAD\n+1B2F01 PAYLOAD\n \n-1A96E4 DATA DESCRIPTOR       08074B50 (134695760)\n-1A96E8 CRC                   F393F7AB (4086560683)\n-1A96EC Compressed Size       0000061C (1564)\n-1A96F0 Uncompressed Size     000014F7 (5367)\n+1B32EE DATA DESCRIPTOR       08074B50 (134695760)\n+1B32F2 CRC                   4486615B (1149657435)\n+1B32F6 Compressed Size       000003ED (1005)\n+1B32FA Uncompressed Size     00000A8A (2698)\n \n-1A96F4 LOCAL HEADER #1620    04034B50 (67324752)\n-1A96F8 Extract Zip Spec      14 (20) '2.0'\n-1A96F9 Extract OS            00 (0) 'MS-DOS'\n-1A96FA General Purpose Flag  0808 (2056)\n+1B32FE LOCAL HEADER #1620    04034B50 (67324752)\n+1B3302 Extract Zip Spec      14 (20) '2.0'\n+1B3303 Extract OS            00 (0) 'MS-DOS'\n+1B3304 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A96FC Compression Method    0008 (8) 'Deflated'\n-1A96FE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A9702 CRC                   00000000 (0)\n-1A9706 Compressed Size       00000000 (0)\n-1A970A Uncompressed Size     00000000 (0)\n-1A970E Filename Length       0057 (87)\n-1A9710 Extra Length          0000 (0)\n-1A9712 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B3306 Compression Method    0008 (8) 'Deflated'\n+1B3308 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B330C CRC                   00000000 (0)\n+1B3310 Compressed Size       00000000 (0)\n+1B3314 Uncompressed Size     00000000 (0)\n+1B3318 Filename Length       0046 (70)\n+1B331A Extra Length          0000 (0)\n+1B331C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A9712: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B331C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A9769 PAYLOAD\n+1B3362 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-1A9D23 DATA DESCRIPTOR       08074B50 (134695760)\n-1A9D27 CRC                   836D6DDB (2204986843)\n-1A9D2B Compressed Size       000005BA (1466)\n-1A9D2F Uncompressed Size     000014E0 (5344)\n+1B33AC DATA DESCRIPTOR       08074B50 (134695760)\n+1B33B0 CRC                   1E03A4CD (503555277)\n+1B33B4 Compressed Size       0000004A (74)\n+1B33B8 Uncompressed Size     0000004E (78)\n \n-1A9D33 LOCAL HEADER #1621    04034B50 (67324752)\n-1A9D37 Extract Zip Spec      14 (20) '2.0'\n-1A9D38 Extract OS            00 (0) 'MS-DOS'\n-1A9D39 General Purpose Flag  0808 (2056)\n+1B33BC LOCAL HEADER #1621    04034B50 (67324752)\n+1B33C0 Extract Zip Spec      14 (20) '2.0'\n+1B33C1 Extract OS            00 (0) 'MS-DOS'\n+1B33C2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1A9D3B Compression Method    0008 (8) 'Deflated'\n-1A9D3D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1A9D41 CRC                   00000000 (0)\n-1A9D45 Compressed Size       00000000 (0)\n-1A9D49 Uncompressed Size     00000000 (0)\n-1A9D4D Filename Length       0058 (88)\n-1A9D4F Extra Length          0000 (0)\n-1A9D51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B33C4 Compression Method    0008 (8) 'Deflated'\n+1B33C6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B33CA CRC                   00000000 (0)\n+1B33CE Compressed Size       00000000 (0)\n+1B33D2 Uncompressed Size     00000000 (0)\n+1B33D6 Filename Length       0018 (24)\n+1B33D8 Extra Length          0000 (0)\n+1B33DA Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1A9D51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B33DA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1A9DA9 PAYLOAD\n+1B33F2 PAYLOAD               XX\n \n-1AA0DC DATA DESCRIPTOR       08074B50 (134695760)\n-1AA0E0 CRC                   B1C72E69 (2982620777)\n-1AA0E4 Compressed Size       00000333 (819)\n-1AA0E8 Uncompressed Size     0000077E (1918)\n+1B33F4 DATA DESCRIPTOR       08074B50 (134695760)\n+1B33F8 CRC                   00000000 (0)\n+1B33FC Compressed Size       00000002 (2)\n+1B3400 Uncompressed Size     00000000 (0)\n \n-1AA0EC LOCAL HEADER #1622    04034B50 (67324752)\n-1AA0F0 Extract Zip Spec      14 (20) '2.0'\n-1AA0F1 Extract OS            00 (0) 'MS-DOS'\n-1AA0F2 General Purpose Flag  0808 (2056)\n+1B3404 LOCAL HEADER #1622    04034B50 (67324752)\n+1B3408 Extract Zip Spec      14 (20) '2.0'\n+1B3409 Extract OS            00 (0) 'MS-DOS'\n+1B340A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1AA0F4 Compression Method    0008 (8) 'Deflated'\n-1AA0F6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1AA0FA CRC                   00000000 (0)\n-1AA0FE Compressed Size       00000000 (0)\n-1AA102 Uncompressed Size     00000000 (0)\n-1AA106 Filename Length       0052 (82)\n-1AA108 Extra Length          0000 (0)\n-1AA10A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B340C Compression Method    0008 (8) 'Deflated'\n+1B340E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B3412 CRC                   00000000 (0)\n+1B3416 Compressed Size       00000000 (0)\n+1B341A Uncompressed Size     00000000 (0)\n+1B341E Filename Length       0022 (34)\n+1B3420 Extra Length          0000 (0)\n+1B3422 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1AA10A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B3422: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1AA15C PAYLOAD\n+1B3444 PAYLOAD\n \n-1AA6EE DATA DESCRIPTOR       08074B50 (134695760)\n-1AA6F2 CRC                   78006A1A (2013293082)\n-1AA6F6 Compressed Size       00000592 (1426)\n-1AA6FA Uncompressed Size     000012A8 (4776)\n+1B3654 DATA DESCRIPTOR       08074B50 (134695760)\n+1B3658 CRC                   A0D1D7AD (2698106797)\n+1B365C Compressed Size       00000210 (528)\n+1B3660 Uncompressed Size     000003A7 (935)\n \n-1AA6FE LOCAL HEADER #1623    04034B50 (67324752)\n-1AA702 Extract Zip Spec      14 (20) '2.0'\n-1AA703 Extract OS            00 (0) 'MS-DOS'\n-1AA704 General Purpose Flag  0808 (2056)\n+1B3664 LOCAL HEADER #1623    04034B50 (67324752)\n+1B3668 Extract Zip Spec      14 (20) '2.0'\n+1B3669 Extract OS            00 (0) 'MS-DOS'\n+1B366A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1AA706 Compression Method    0008 (8) 'Deflated'\n-1AA708 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1AA70C CRC                   00000000 (0)\n-1AA710 Compressed Size       00000000 (0)\n-1AA714 Uncompressed Size     00000000 (0)\n-1AA718 Filename Length       0053 (83)\n-1AA71A Extra Length          0000 (0)\n-1AA71C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B366C Compression Method    0008 (8) 'Deflated'\n+1B366E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B3672 CRC                   00000000 (0)\n+1B3676 Compressed Size       00000000 (0)\n+1B367A Uncompressed Size     00000000 (0)\n+1B367E Filename Length       0029 (41)\n+1B3680 Extra Length          0000 (0)\n+1B3682 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1AA71C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B3682: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1AA76F PAYLOAD\n+1B36AB PAYLOAD\n \n-1AAD85 DATA DESCRIPTOR       08074B50 (134695760)\n-1AAD89 CRC                   E8DE57DA (3906885594)\n-1AAD8D Compressed Size       00000616 (1558)\n-1AAD91 Uncompressed Size     00001501 (5377)\n+1B38F3 DATA DESCRIPTOR       08074B50 (134695760)\n+1B38F7 CRC                   36E8AAE8 (921217768)\n+1B38FB Compressed Size       00000248 (584)\n+1B38FF Uncompressed Size     0000043E (1086)\n \n-1AAD95 LOCAL HEADER #1624    04034B50 (67324752)\n-1AAD99 Extract Zip Spec      14 (20) '2.0'\n-1AAD9A Extract OS            00 (0) 'MS-DOS'\n-1AAD9B General Purpose Flag  0808 (2056)\n+1B3903 LOCAL HEADER #1624    04034B50 (67324752)\n+1B3907 Extract Zip Spec      14 (20) '2.0'\n+1B3908 Extract OS            00 (0) 'MS-DOS'\n+1B3909 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1AAD9D Compression Method    0008 (8) 'Deflated'\n-1AAD9F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1AADA3 CRC                   00000000 (0)\n-1AADA7 Compressed Size       00000000 (0)\n-1AADAB Uncompressed Size     00000000 (0)\n-1AADAF Filename Length       0054 (84)\n-1AADB1 Extra Length          0000 (0)\n-1AADB3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B390B Compression Method    0008 (8) 'Deflated'\n+1B390D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B3911 CRC                   00000000 (0)\n+1B3915 Compressed Size       00000000 (0)\n+1B3919 Uncompressed Size     00000000 (0)\n+1B391D Filename Length       0020 (32)\n+1B391F Extra Length          0000 (0)\n+1B3921 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1AADB3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B3921: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1AAE07 PAYLOAD\n+1B3941 PAYLOAD               XX\n \n-1AB227 DATA DESCRIPTOR       08074B50 (134695760)\n-1AB22B CRC                   DB97F7FB (3684169723)\n-1AB22F Compressed Size       00000420 (1056)\n-1AB233 Uncompressed Size     00000987 (2439)\n+1B3943 DATA DESCRIPTOR       08074B50 (134695760)\n+1B3947 CRC                   00000000 (0)\n+1B394B Compressed Size       00000002 (2)\n+1B394F Uncompressed Size     00000000 (0)\n \n-1AB237 LOCAL HEADER #1625    04034B50 (67324752)\n-1AB23B Extract Zip Spec      14 (20) '2.0'\n-1AB23C Extract OS            00 (0) 'MS-DOS'\n-1AB23D General Purpose Flag  0808 (2056)\n+1B3953 LOCAL HEADER #1625    04034B50 (67324752)\n+1B3957 Extract Zip Spec      14 (20) '2.0'\n+1B3958 Extract OS            00 (0) 'MS-DOS'\n+1B3959 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1AB23F Compression Method    0008 (8) 'Deflated'\n-1AB241 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1AB245 CRC                   00000000 (0)\n-1AB249 Compressed Size       00000000 (0)\n-1AB24D Uncompressed Size     00000000 (0)\n-1AB251 Filename Length       0045 (69)\n-1AB253 Extra Length          0000 (0)\n-1AB255 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B395B Compression Method    0008 (8) 'Deflated'\n+1B395D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B3961 CRC                   00000000 (0)\n+1B3965 Compressed Size       00000000 (0)\n+1B3969 Uncompressed Size     00000000 (0)\n+1B396D Filename Length       0039 (57)\n+1B396F Extra Length          0000 (0)\n+1B3971 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1AB255: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B3971: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1AB29A PAYLOAD\n+1B39AA PAYLOAD\n \n-1ABBA3 DATA DESCRIPTOR       08074B50 (134695760)\n-1ABBA7 CRC                   FACFCF03 (4207922947)\n-1ABBAB Compressed Size       00000909 (2313)\n-1ABBAF Uncompressed Size     00001FCC (8140)\n+1B3D20 DATA DESCRIPTOR       08074B50 (134695760)\n+1B3D24 CRC                   0C0A434B (201999179)\n+1B3D28 Compressed Size       00000376 (886)\n+1B3D2C Uncompressed Size     0000081B (2075)\n \n-1ABBB3 LOCAL HEADER #1626    04034B50 (67324752)\n-1ABBB7 Extract Zip Spec      14 (20) '2.0'\n-1ABBB8 Extract OS            00 (0) 'MS-DOS'\n-1ABBB9 General Purpose Flag  0808 (2056)\n+1B3D30 LOCAL HEADER #1626    04034B50 (67324752)\n+1B3D34 Extract Zip Spec      14 (20) '2.0'\n+1B3D35 Extract OS            00 (0) 'MS-DOS'\n+1B3D36 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1ABBBB Compression Method    0008 (8) 'Deflated'\n-1ABBBD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1ABBC1 CRC                   00000000 (0)\n-1ABBC5 Compressed Size       00000000 (0)\n-1ABBC9 Uncompressed Size     00000000 (0)\n-1ABBCD Filename Length       0050 (80)\n-1ABBCF Extra Length          0000 (0)\n-1ABBD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B3D38 Compression Method    0008 (8) 'Deflated'\n+1B3D3A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B3D3E CRC                   00000000 (0)\n+1B3D42 Compressed Size       00000000 (0)\n+1B3D46 Uncompressed Size     00000000 (0)\n+1B3D4A Filename Length       0027 (39)\n+1B3D4C Extra Length          0000 (0)\n+1B3D4E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1ABBD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B3D4E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1ABC21 PAYLOAD\n+1B3D75 PAYLOAD\n \n-1ABFFE DATA DESCRIPTOR       08074B50 (134695760)\n-1AC002 CRC                   8EB7D7DD (2394413021)\n-1AC006 Compressed Size       000003DD (989)\n-1AC00A Uncompressed Size     00000A11 (2577)\n+1B4024 DATA DESCRIPTOR       08074B50 (134695760)\n+1B4028 CRC                   7421F96B (1948383595)\n+1B402C Compressed Size       000002AF (687)\n+1B4030 Uncompressed Size     00000763 (1891)\n \n-1AC00E LOCAL HEADER #1627    04034B50 (67324752)\n-1AC012 Extract Zip Spec      14 (20) '2.0'\n-1AC013 Extract OS            00 (0) 'MS-DOS'\n-1AC014 General Purpose Flag  0808 (2056)\n+1B4034 LOCAL HEADER #1627    04034B50 (67324752)\n+1B4038 Extract Zip Spec      14 (20) '2.0'\n+1B4039 Extract OS            00 (0) 'MS-DOS'\n+1B403A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1AC016 Compression Method    0008 (8) 'Deflated'\n-1AC018 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1AC01C CRC                   00000000 (0)\n-1AC020 Compressed Size       00000000 (0)\n-1AC024 Uncompressed Size     00000000 (0)\n-1AC028 Filename Length       003B (59)\n-1AC02A Extra Length          0000 (0)\n-1AC02C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B403C Compression Method    0008 (8) 'Deflated'\n+1B403E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B4042 CRC                   00000000 (0)\n+1B4046 Compressed Size       00000000 (0)\n+1B404A Uncompressed Size     00000000 (0)\n+1B404E Filename Length       0021 (33)\n+1B4050 Extra Length          0000 (0)\n+1B4052 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1AC02C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B4052: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1AC067 PAYLOAD               XX\n+1B4073 PAYLOAD\n \n-1AC069 DATA DESCRIPTOR       08074B50 (134695760)\n-1AC06D CRC                   00000000 (0)\n-1AC071 Compressed Size       00000002 (2)\n-1AC075 Uncompressed Size     00000000 (0)\n+1B497E DATA DESCRIPTOR       08074B50 (134695760)\n+1B4982 CRC                   D19F2618 (3516868120)\n+1B4986 Compressed Size       0000090B (2315)\n+1B498A Uncompressed Size     00004BE5 (19429)\n \n-1AC079 LOCAL HEADER #1628    04034B50 (67324752)\n-1AC07D Extract Zip Spec      14 (20) '2.0'\n-1AC07E Extract OS            00 (0) 'MS-DOS'\n-1AC07F General Purpose Flag  0808 (2056)\n+1B498E LOCAL HEADER #1628    04034B50 (67324752)\n+1B4992 Extract Zip Spec      14 (20) '2.0'\n+1B4993 Extract OS            00 (0) 'MS-DOS'\n+1B4994 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1AC081 Compression Method    0008 (8) 'Deflated'\n-1AC083 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1AC087 CRC                   00000000 (0)\n-1AC08B Compressed Size       00000000 (0)\n-1AC08F Uncompressed Size     00000000 (0)\n-1AC093 Filename Length       0048 (72)\n-1AC095 Extra Length          0000 (0)\n-1AC097 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B4996 Compression Method    0008 (8) 'Deflated'\n+1B4998 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B499C CRC                   00000000 (0)\n+1B49A0 Compressed Size       00000000 (0)\n+1B49A4 Uncompressed Size     00000000 (0)\n+1B49A8 Filename Length       0022 (34)\n+1B49AA Extra Length          0000 (0)\n+1B49AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1AC097: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B49AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1AC0DF PAYLOAD\n+1B49CE PAYLOAD               XX\n \n-1AD194 DATA DESCRIPTOR       08074B50 (134695760)\n-1AD198 CRC                   3E2D4260 (1043153504)\n-1AD19C Compressed Size       000010B5 (4277)\n-1AD1A0 Uncompressed Size     00007BD0 (31696)\n+1B49D0 DATA DESCRIPTOR       08074B50 (134695760)\n+1B49D4 CRC                   00000000 (0)\n+1B49D8 Compressed Size       00000002 (2)\n+1B49DC Uncompressed Size     00000000 (0)\n \n-1AD1A4 LOCAL HEADER #1629    04034B50 (67324752)\n-1AD1A8 Extract Zip Spec      14 (20) '2.0'\n-1AD1A9 Extract OS            00 (0) 'MS-DOS'\n-1AD1AA General Purpose Flag  0808 (2056)\n+1B49E0 LOCAL HEADER #1629    04034B50 (67324752)\n+1B49E4 Extract Zip Spec      14 (20) '2.0'\n+1B49E5 Extract OS            00 (0) 'MS-DOS'\n+1B49E6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1AD1AC Compression Method    0008 (8) 'Deflated'\n-1AD1AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1AD1B2 CRC                   00000000 (0)\n-1AD1B6 Compressed Size       00000000 (0)\n-1AD1BA Uncompressed Size     00000000 (0)\n-1AD1BE Filename Length       004B (75)\n-1AD1C0 Extra Length          0000 (0)\n-1AD1C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B49E8 Compression Method    0008 (8) 'Deflated'\n+1B49EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B49EE CRC                   00000000 (0)\n+1B49F2 Compressed Size       00000000 (0)\n+1B49F6 Uncompressed Size     00000000 (0)\n+1B49FA Filename Length       002F (47)\n+1B49FC Extra Length          0000 (0)\n+1B49FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1AD1C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B49FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1AD20D PAYLOAD\n+1B4A2D PAYLOAD\n \n-1AF7AD DATA DESCRIPTOR       08074B50 (134695760)\n-1AF7B1 CRC                   218FA1FC (563061244)\n-1AF7B5 Compressed Size       000025A0 (9632)\n-1AF7B9 Uncompressed Size     00018F15 (102165)\n+1B4C43 DATA DESCRIPTOR       08074B50 (134695760)\n+1B4C47 CRC                   AB4B3845 (2873833541)\n+1B4C4B Compressed Size       00000216 (534)\n+1B4C4F Uncompressed Size     000003C1 (961)\n \n-1AF7BD LOCAL HEADER #1630    04034B50 (67324752)\n-1AF7C1 Extract Zip Spec      14 (20) '2.0'\n-1AF7C2 Extract OS            00 (0) 'MS-DOS'\n-1AF7C3 General Purpose Flag  0808 (2056)\n+1B4C53 LOCAL HEADER #1630    04034B50 (67324752)\n+1B4C57 Extract Zip Spec      14 (20) '2.0'\n+1B4C58 Extract OS            00 (0) 'MS-DOS'\n+1B4C59 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1AF7C5 Compression Method    0008 (8) 'Deflated'\n-1AF7C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1AF7CB CRC                   00000000 (0)\n-1AF7CF Compressed Size       00000000 (0)\n-1AF7D3 Uncompressed Size     00000000 (0)\n-1AF7D7 Filename Length       001E (30)\n-1AF7D9 Extra Length          0000 (0)\n-1AF7DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B4C5B Compression Method    0008 (8) 'Deflated'\n+1B4C5D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B4C61 CRC                   00000000 (0)\n+1B4C65 Compressed Size       00000000 (0)\n+1B4C69 Uncompressed Size     00000000 (0)\n+1B4C6D Filename Length       0038 (56)\n+1B4C6F Extra Length          0000 (0)\n+1B4C71 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1AF7DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B4C71: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1AF7F9 PAYLOAD               XX\n+1B4CA9 PAYLOAD\n \n-1AF7FB DATA DESCRIPTOR       08074B50 (134695760)\n-1AF7FF CRC                   00000000 (0)\n-1AF803 Compressed Size       00000002 (2)\n-1AF807 Uncompressed Size     00000000 (0)\n+1B4ED5 DATA DESCRIPTOR       08074B50 (134695760)\n+1B4ED9 CRC                   F8808D33 (4169174323)\n+1B4EDD Compressed Size       0000022C (556)\n+1B4EE1 Uncompressed Size     0000040A (1034)\n \n-1AF80B LOCAL HEADER #1631    04034B50 (67324752)\n-1AF80F Extract Zip Spec      14 (20) '2.0'\n-1AF810 Extract OS            00 (0) 'MS-DOS'\n-1AF811 General Purpose Flag  0808 (2056)\n+1B4EE5 LOCAL HEADER #1631    04034B50 (67324752)\n+1B4EE9 Extract Zip Spec      14 (20) '2.0'\n+1B4EEA Extract OS            00 (0) 'MS-DOS'\n+1B4EEB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1AF813 Compression Method    0008 (8) 'Deflated'\n-1AF815 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1AF819 CRC                   00000000 (0)\n-1AF81D Compressed Size       00000000 (0)\n-1AF821 Uncompressed Size     00000000 (0)\n-1AF825 Filename Length       0026 (38)\n-1AF827 Extra Length          0000 (0)\n-1AF829 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B4EED Compression Method    0008 (8) 'Deflated'\n+1B4EEF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B4EF3 CRC                   00000000 (0)\n+1B4EF7 Compressed Size       00000000 (0)\n+1B4EFB Uncompressed Size     00000000 (0)\n+1B4EFF Filename Length       0020 (32)\n+1B4F01 Extra Length          0000 (0)\n+1B4F03 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1AF829: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B4F03: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1AF84F PAYLOAD               XX\n+1B4F23 PAYLOAD               XX\n \n-1AF851 DATA DESCRIPTOR       08074B50 (134695760)\n-1AF855 CRC                   00000000 (0)\n-1AF859 Compressed Size       00000002 (2)\n-1AF85D Uncompressed Size     00000000 (0)\n+1B4F25 DATA DESCRIPTOR       08074B50 (134695760)\n+1B4F29 CRC                   00000000 (0)\n+1B4F2D Compressed Size       00000002 (2)\n+1B4F31 Uncompressed Size     00000000 (0)\n \n-1AF861 LOCAL HEADER #1632    04034B50 (67324752)\n-1AF865 Extract Zip Spec      14 (20) '2.0'\n-1AF866 Extract OS            00 (0) 'MS-DOS'\n-1AF867 General Purpose Flag  0808 (2056)\n+1B4F35 LOCAL HEADER #1632    04034B50 (67324752)\n+1B4F39 Extract Zip Spec      14 (20) '2.0'\n+1B4F3A Extract OS            00 (0) 'MS-DOS'\n+1B4F3B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1AF869 Compression Method    0008 (8) 'Deflated'\n-1AF86B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1AF86F CRC                   00000000 (0)\n-1AF873 Compressed Size       00000000 (0)\n-1AF877 Uncompressed Size     00000000 (0)\n-1AF87B Filename Length       0030 (48)\n-1AF87D Extra Length          0000 (0)\n-1AF87F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B4F3D Compression Method    0008 (8) 'Deflated'\n+1B4F3F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B4F43 CRC                   00000000 (0)\n+1B4F47 Compressed Size       00000000 (0)\n+1B4F4B Uncompressed Size     00000000 (0)\n+1B4F4F Filename Length       0032 (50)\n+1B4F51 Extra Length          0000 (0)\n+1B4F53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1AF87F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B4F53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1AF8AF PAYLOAD               XX\n+1B4F85 PAYLOAD\n \n-1AF8B1 DATA DESCRIPTOR       08074B50 (134695760)\n-1AF8B5 CRC                   00000000 (0)\n-1AF8B9 Compressed Size       00000002 (2)\n-1AF8BD Uncompressed Size     00000000 (0)\n+1B519F DATA DESCRIPTOR       08074B50 (134695760)\n+1B51A3 CRC                   75D97425 (1977185317)\n+1B51A7 Compressed Size       0000021A (538)\n+1B51AB Uncompressed Size     000003C7 (967)\n \n-1AF8C1 LOCAL HEADER #1633    04034B50 (67324752)\n-1AF8C5 Extract Zip Spec      14 (20) '2.0'\n-1AF8C6 Extract OS            00 (0) 'MS-DOS'\n-1AF8C7 General Purpose Flag  0808 (2056)\n+1B51AF LOCAL HEADER #1633    04034B50 (67324752)\n+1B51B3 Extract Zip Spec      14 (20) '2.0'\n+1B51B4 Extract OS            00 (0) 'MS-DOS'\n+1B51B5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1AF8C9 Compression Method    0008 (8) 'Deflated'\n-1AF8CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1AF8CF CRC                   00000000 (0)\n-1AF8D3 Compressed Size       00000000 (0)\n-1AF8D7 Uncompressed Size     00000000 (0)\n-1AF8DB Filename Length       0042 (66)\n-1AF8DD Extra Length          0000 (0)\n-1AF8DF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B51B7 Compression Method    0008 (8) 'Deflated'\n+1B51B9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B51BD CRC                   00000000 (0)\n+1B51C1 Compressed Size       00000000 (0)\n+1B51C5 Uncompressed Size     00000000 (0)\n+1B51C9 Filename Length       0023 (35)\n+1B51CB Extra Length          0000 (0)\n+1B51CD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1AF8DF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B51CD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1AF921 PAYLOAD\n+1B51F0 PAYLOAD               XX\n \n-1AFF8A DATA DESCRIPTOR       08074B50 (134695760)\n-1AFF8E CRC                   37B6CF89 (934727561)\n-1AFF92 Compressed Size       00000669 (1641)\n-1AFF96 Uncompressed Size     000013FA (5114)\n+1B51F2 DATA DESCRIPTOR       08074B50 (134695760)\n+1B51F6 CRC                   00000000 (0)\n+1B51FA Compressed Size       00000002 (2)\n+1B51FE Uncompressed Size     00000000 (0)\n \n-1AFF9A LOCAL HEADER #1634    04034B50 (67324752)\n-1AFF9E Extract Zip Spec      14 (20) '2.0'\n-1AFF9F Extract OS            00 (0) 'MS-DOS'\n-1AFFA0 General Purpose Flag  0808 (2056)\n+1B5202 LOCAL HEADER #1634    04034B50 (67324752)\n+1B5206 Extract Zip Spec      14 (20) '2.0'\n+1B5207 Extract OS            00 (0) 'MS-DOS'\n+1B5208 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1AFFA2 Compression Method    0008 (8) 'Deflated'\n-1AFFA4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1AFFA8 CRC                   00000000 (0)\n-1AFFAC Compressed Size       00000000 (0)\n-1AFFB0 Uncompressed Size     00000000 (0)\n-1AFFB4 Filename Length       0052 (82)\n-1AFFB6 Extra Length          0000 (0)\n-1AFFB8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B520A Compression Method    0008 (8) 'Deflated'\n+1B520C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B5210 CRC                   00000000 (0)\n+1B5214 Compressed Size       00000000 (0)\n+1B5218 Uncompressed Size     00000000 (0)\n+1B521C Filename Length       0033 (51)\n+1B521E Extra Length          0000 (0)\n+1B5220 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1AFFB8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B5220: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B000A PAYLOAD\n+1B5253 PAYLOAD\n \n-1B05DD DATA DESCRIPTOR       08074B50 (134695760)\n-1B05E1 CRC                   79761F08 (2037784328)\n-1B05E5 Compressed Size       000005D3 (1491)\n-1B05E9 Uncompressed Size     0000105D (4189)\n+1B5470 DATA DESCRIPTOR       08074B50 (134695760)\n+1B5474 CRC                   1B82D5A6 (461559206)\n+1B5478 Compressed Size       0000021D (541)\n+1B547C Uncompressed Size     000003C9 (969)\n \n-1B05ED LOCAL HEADER #1635    04034B50 (67324752)\n-1B05F1 Extract Zip Spec      14 (20) '2.0'\n-1B05F2 Extract OS            00 (0) 'MS-DOS'\n-1B05F3 General Purpose Flag  0808 (2056)\n+1B5480 LOCAL HEADER #1635    04034B50 (67324752)\n+1B5484 Extract Zip Spec      14 (20) '2.0'\n+1B5485 Extract OS            00 (0) 'MS-DOS'\n+1B5486 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B05F5 Compression Method    0008 (8) 'Deflated'\n-1B05F7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B05FB CRC                   00000000 (0)\n-1B05FF Compressed Size       00000000 (0)\n-1B0603 Uncompressed Size     00000000 (0)\n-1B0607 Filename Length       0059 (89)\n-1B0609 Extra Length          0000 (0)\n-1B060B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B5488 Compression Method    0008 (8) 'Deflated'\n+1B548A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B548E CRC                   00000000 (0)\n+1B5492 Compressed Size       00000000 (0)\n+1B5496 Uncompressed Size     00000000 (0)\n+1B549A Filename Length       0034 (52)\n+1B549C Extra Length          0000 (0)\n+1B549E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B060B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B549E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B0664 PAYLOAD\n+1B54D2 PAYLOAD\n \n-1B0915 DATA DESCRIPTOR       08074B50 (134695760)\n-1B0919 CRC                   DDA3D8AF (3718502575)\n-1B091D Compressed Size       000002B1 (689)\n-1B0921 Uncompressed Size     00000649 (1609)\n+1B56F1 DATA DESCRIPTOR       08074B50 (134695760)\n+1B56F5 CRC                   E66C1AF8 (3865844472)\n+1B56F9 Compressed Size       0000021F (543)\n+1B56FD Uncompressed Size     000003CB (971)\n \n-1B0925 LOCAL HEADER #1636    04034B50 (67324752)\n-1B0929 Extract Zip Spec      14 (20) '2.0'\n-1B092A Extract OS            00 (0) 'MS-DOS'\n-1B092B General Purpose Flag  0808 (2056)\n+1B5701 LOCAL HEADER #1636    04034B50 (67324752)\n+1B5705 Extract Zip Spec      14 (20) '2.0'\n+1B5706 Extract OS            00 (0) 'MS-DOS'\n+1B5707 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B092D Compression Method    0008 (8) 'Deflated'\n-1B092F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B0933 CRC                   00000000 (0)\n-1B0937 Compressed Size       00000000 (0)\n-1B093B Uncompressed Size     00000000 (0)\n-1B093F Filename Length       002D (45)\n-1B0941 Extra Length          0000 (0)\n-1B0943 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B5709 Compression Method    0008 (8) 'Deflated'\n+1B570B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B570F CRC                   00000000 (0)\n+1B5713 Compressed Size       00000000 (0)\n+1B5717 Uncompressed Size     00000000 (0)\n+1B571B Filename Length       0035 (53)\n+1B571D Extra Length          0000 (0)\n+1B571F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B0943: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B571F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B0970 PAYLOAD               XX\n+1B5754 PAYLOAD\n \n-1B0972 DATA DESCRIPTOR       08074B50 (134695760)\n-1B0976 CRC                   00000000 (0)\n-1B097A Compressed Size       00000002 (2)\n-1B097E Uncompressed Size     00000000 (0)\n+1B5A11 DATA DESCRIPTOR       08074B50 (134695760)\n+1B5A15 CRC                   A93FA4B2 (2839520434)\n+1B5A19 Compressed Size       000002BD (701)\n+1B5A1D Uncompressed Size     000006AC (1708)\n \n-1B0982 LOCAL HEADER #1637    04034B50 (67324752)\n-1B0986 Extract Zip Spec      14 (20) '2.0'\n-1B0987 Extract OS            00 (0) 'MS-DOS'\n-1B0988 General Purpose Flag  0808 (2056)\n+1B5A21 LOCAL HEADER #1637    04034B50 (67324752)\n+1B5A25 Extract Zip Spec      14 (20) '2.0'\n+1B5A26 Extract OS            00 (0) 'MS-DOS'\n+1B5A27 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B098A Compression Method    0008 (8) 'Deflated'\n-1B098C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B0990 CRC                   00000000 (0)\n-1B0994 Compressed Size       00000000 (0)\n-1B0998 Uncompressed Size     00000000 (0)\n-1B099C Filename Length       004C (76)\n-1B099E Extra Length          0000 (0)\n-1B09A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B5A29 Compression Method    0008 (8) 'Deflated'\n+1B5A2B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B5A2F CRC                   00000000 (0)\n+1B5A33 Compressed Size       00000000 (0)\n+1B5A37 Uncompressed Size     00000000 (0)\n+1B5A3B Filename Length       0020 (32)\n+1B5A3D Extra Length          0000 (0)\n+1B5A3F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B09A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B5A3F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B09EC PAYLOAD\n+1B5A5F PAYLOAD               XX\n \n-1B1668 DATA DESCRIPTOR       08074B50 (134695760)\n-1B166C CRC                   52ECC716 (1391249174)\n-1B1670 Compressed Size       00000C7C (3196)\n-1B1674 Uncompressed Size     00002E2A (11818)\n+1B5A61 DATA DESCRIPTOR       08074B50 (134695760)\n+1B5A65 CRC                   00000000 (0)\n+1B5A69 Compressed Size       00000002 (2)\n+1B5A6D Uncompressed Size     00000000 (0)\n \n-1B1678 LOCAL HEADER #1638    04034B50 (67324752)\n-1B167C Extract Zip Spec      14 (20) '2.0'\n-1B167D Extract OS            00 (0) 'MS-DOS'\n-1B167E General Purpose Flag  0808 (2056)\n+1B5A71 LOCAL HEADER #1638    04034B50 (67324752)\n+1B5A75 Extract Zip Spec      14 (20) '2.0'\n+1B5A76 Extract OS            00 (0) 'MS-DOS'\n+1B5A77 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B1680 Compression Method    0008 (8) 'Deflated'\n-1B1682 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B1686 CRC                   00000000 (0)\n-1B168A Compressed Size       00000000 (0)\n-1B168E Uncompressed Size     00000000 (0)\n-1B1692 Filename Length       0053 (83)\n-1B1694 Extra Length          0000 (0)\n-1B1696 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B5A79 Compression Method    0008 (8) 'Deflated'\n+1B5A7B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B5A7F CRC                   00000000 (0)\n+1B5A83 Compressed Size       00000000 (0)\n+1B5A87 Uncompressed Size     00000000 (0)\n+1B5A8B Filename Length       002B (43)\n+1B5A8D Extra Length          0000 (0)\n+1B5A8F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B1696: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B5A8F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B16E9 PAYLOAD\n+1B5ABA PAYLOAD\n \n-1B1957 DATA DESCRIPTOR       08074B50 (134695760)\n-1B195B CRC                   BB1FB1EA (3139416554)\n-1B195F Compressed Size       0000026E (622)\n-1B1963 Uncompressed Size     0000051A (1306)\n+1B5D0E DATA DESCRIPTOR       08074B50 (134695760)\n+1B5D12 CRC                   BEC11652 (3200325202)\n+1B5D16 Compressed Size       00000254 (596)\n+1B5D1A Uncompressed Size     000004CE (1230)\n \n-1B1967 LOCAL HEADER #1639    04034B50 (67324752)\n-1B196B Extract Zip Spec      14 (20) '2.0'\n-1B196C Extract OS            00 (0) 'MS-DOS'\n-1B196D General Purpose Flag  0808 (2056)\n+1B5D1E LOCAL HEADER #1639    04034B50 (67324752)\n+1B5D22 Extract Zip Spec      14 (20) '2.0'\n+1B5D23 Extract OS            00 (0) 'MS-DOS'\n+1B5D24 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B196F Compression Method    0008 (8) 'Deflated'\n-1B1971 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B1975 CRC                   00000000 (0)\n-1B1979 Compressed Size       00000000 (0)\n-1B197D Uncompressed Size     00000000 (0)\n-1B1981 Filename Length       002C (44)\n-1B1983 Extra Length          0000 (0)\n-1B1985 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B5D26 Compression Method    0008 (8) 'Deflated'\n+1B5D28 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B5D2C CRC                   00000000 (0)\n+1B5D30 Compressed Size       00000000 (0)\n+1B5D34 Uncompressed Size     00000000 (0)\n+1B5D38 Filename Length       0032 (50)\n+1B5D3A Extra Length          0000 (0)\n+1B5D3C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B1985: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B5D3C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B19B1 PAYLOAD               XX\n+1B5D6E PAYLOAD\n \n-1B19B3 DATA DESCRIPTOR       08074B50 (134695760)\n-1B19B7 CRC                   00000000 (0)\n-1B19BB Compressed Size       00000002 (2)\n-1B19BF Uncompressed Size     00000000 (0)\n+1B5F99 DATA DESCRIPTOR       08074B50 (134695760)\n+1B5F9D CRC                   E8509F41 (3897597761)\n+1B5FA1 Compressed Size       0000022B (555)\n+1B5FA5 Uncompressed Size     000003ED (1005)\n \n-1B19C3 LOCAL HEADER #1640    04034B50 (67324752)\n-1B19C7 Extract Zip Spec      14 (20) '2.0'\n-1B19C8 Extract OS            00 (0) 'MS-DOS'\n-1B19C9 General Purpose Flag  0808 (2056)\n+1B5FA9 LOCAL HEADER #1640    04034B50 (67324752)\n+1B5FAD Extract Zip Spec      14 (20) '2.0'\n+1B5FAE Extract OS            00 (0) 'MS-DOS'\n+1B5FAF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B19CB Compression Method    0008 (8) 'Deflated'\n-1B19CD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B19D1 CRC                   00000000 (0)\n-1B19D5 Compressed Size       00000000 (0)\n-1B19D9 Uncompressed Size     00000000 (0)\n-1B19DD Filename Length       004A (74)\n-1B19DF Extra Length          0000 (0)\n-1B19E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B5FB1 Compression Method    0008 (8) 'Deflated'\n+1B5FB3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B5FB7 CRC                   00000000 (0)\n+1B5FBB Compressed Size       00000000 (0)\n+1B5FBF Uncompressed Size     00000000 (0)\n+1B5FC3 Filename Length       001F (31)\n+1B5FC5 Extra Length          0000 (0)\n+1B5FC7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B19E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B5FC7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B1A2B PAYLOAD\n+1B5FE6 PAYLOAD               XX\n \n-1B1DCF DATA DESCRIPTOR       08074B50 (134695760)\n-1B1DD3 CRC                   9FC2FAF4 (2680355572)\n-1B1DD7 Compressed Size       000003A4 (932)\n-1B1DDB Uncompressed Size     00000A03 (2563)\n+1B5FE8 DATA DESCRIPTOR       08074B50 (134695760)\n+1B5FEC CRC                   00000000 (0)\n+1B5FF0 Compressed Size       00000002 (2)\n+1B5FF4 Uncompressed Size     00000000 (0)\n \n-1B1DDF LOCAL HEADER #1641    04034B50 (67324752)\n-1B1DE3 Extract Zip Spec      14 (20) '2.0'\n-1B1DE4 Extract OS            00 (0) 'MS-DOS'\n-1B1DE5 General Purpose Flag  0808 (2056)\n+1B5FF8 LOCAL HEADER #1641    04034B50 (67324752)\n+1B5FFC Extract Zip Spec      14 (20) '2.0'\n+1B5FFD Extract OS            00 (0) 'MS-DOS'\n+1B5FFE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B1DE7 Compression Method    0008 (8) 'Deflated'\n-1B1DE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B1DED CRC                   00000000 (0)\n-1B1DF1 Compressed Size       00000000 (0)\n-1B1DF5 Uncompressed Size     00000000 (0)\n-1B1DF9 Filename Length       004A (74)\n-1B1DFB Extra Length          0000 (0)\n-1B1DFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B6000 Compression Method    0008 (8) 'Deflated'\n+1B6002 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B6006 CRC                   00000000 (0)\n+1B600A Compressed Size       00000000 (0)\n+1B600E Uncompressed Size     00000000 (0)\n+1B6012 Filename Length       002D (45)\n+1B6014 Extra Length          0000 (0)\n+1B6016 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B1DFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B6016: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B1E47 PAYLOAD\n+1B6043 PAYLOAD\n \n-1B2B91 DATA DESCRIPTOR       08074B50 (134695760)\n-1B2B95 CRC                   E1F2B0D2 (3790778578)\n-1B2B99 Compressed Size       00000D4A (3402)\n-1B2B9D Uncompressed Size     0000352A (13610)\n+1B625A DATA DESCRIPTOR       08074B50 (134695760)\n+1B625E CRC                   DEFC6FC7 (3741085639)\n+1B6262 Compressed Size       00000217 (535)\n+1B6266 Uncompressed Size     000003BD (957)\n \n-1B2BA1 LOCAL HEADER #1642    04034B50 (67324752)\n-1B2BA5 Extract Zip Spec      14 (20) '2.0'\n-1B2BA6 Extract OS            00 (0) 'MS-DOS'\n-1B2BA7 General Purpose Flag  0808 (2056)\n+1B626A LOCAL HEADER #1642    04034B50 (67324752)\n+1B626E Extract Zip Spec      14 (20) '2.0'\n+1B626F Extract OS            00 (0) 'MS-DOS'\n+1B6270 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B2BA9 Compression Method    0008 (8) 'Deflated'\n-1B2BAB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B2BAF CRC                   00000000 (0)\n-1B2BB3 Compressed Size       00000000 (0)\n-1B2BB7 Uncompressed Size     00000000 (0)\n-1B2BBB Filename Length       0051 (81)\n-1B2BBD Extra Length          0000 (0)\n-1B2BBF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B6272 Compression Method    0008 (8) 'Deflated'\n+1B6274 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B6278 CRC                   00000000 (0)\n+1B627C Compressed Size       00000000 (0)\n+1B6280 Uncompressed Size     00000000 (0)\n+1B6284 Filename Length       0024 (36)\n+1B6286 Extra Length          0000 (0)\n+1B6288 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B2BBF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B6288: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B2C10 PAYLOAD\n+1B62AC PAYLOAD               XX\n \n-1B2F32 DATA DESCRIPTOR       08074B50 (134695760)\n-1B2F36 CRC                   2422B0CC (606253260)\n-1B2F3A Compressed Size       00000322 (802)\n-1B2F3E Uncompressed Size     000006FD (1789)\n+1B62AE DATA DESCRIPTOR       08074B50 (134695760)\n+1B62B2 CRC                   00000000 (0)\n+1B62B6 Compressed Size       00000002 (2)\n+1B62BA Uncompressed Size     00000000 (0)\n \n-1B2F42 LOCAL HEADER #1643    04034B50 (67324752)\n-1B2F46 Extract Zip Spec      14 (20) '2.0'\n-1B2F47 Extract OS            00 (0) 'MS-DOS'\n-1B2F48 General Purpose Flag  0808 (2056)\n+1B62BE LOCAL HEADER #1643    04034B50 (67324752)\n+1B62C2 Extract Zip Spec      14 (20) '2.0'\n+1B62C3 Extract OS            00 (0) 'MS-DOS'\n+1B62C4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B2F4A Compression Method    0008 (8) 'Deflated'\n-1B2F4C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B2F50 CRC                   00000000 (0)\n-1B2F54 Compressed Size       00000000 (0)\n-1B2F58 Uncompressed Size     00000000 (0)\n-1B2F5C Filename Length       0025 (37)\n-1B2F5E Extra Length          0000 (0)\n-1B2F60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B62C6 Compression Method    0008 (8) 'Deflated'\n+1B62C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B62CC CRC                   00000000 (0)\n+1B62D0 Compressed Size       00000000 (0)\n+1B62D4 Uncompressed Size     00000000 (0)\n+1B62D8 Filename Length       0033 (51)\n+1B62DA Extra Length          0000 (0)\n+1B62DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B2F60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B62DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B2F85 PAYLOAD               XX\n+1B630F PAYLOAD\n \n-1B2F87 DATA DESCRIPTOR       08074B50 (134695760)\n-1B2F8B CRC                   00000000 (0)\n-1B2F8F Compressed Size       00000002 (2)\n-1B2F93 Uncompressed Size     00000000 (0)\n+1B658B DATA DESCRIPTOR       08074B50 (134695760)\n+1B658F CRC                   34B28AB6 (884116150)\n+1B6593 Compressed Size       0000027C (636)\n+1B6597 Uncompressed Size     000004E1 (1249)\n \n-1B2F97 LOCAL HEADER #1644    04034B50 (67324752)\n-1B2F9B Extract Zip Spec      14 (20) '2.0'\n-1B2F9C Extract OS            00 (0) 'MS-DOS'\n-1B2F9D General Purpose Flag  0808 (2056)\n+1B659B LOCAL HEADER #1644    04034B50 (67324752)\n+1B659F Extract Zip Spec      14 (20) '2.0'\n+1B65A0 Extract OS            00 (0) 'MS-DOS'\n+1B65A1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B2F9F Compression Method    0008 (8) 'Deflated'\n-1B2FA1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B2FA5 CRC                   00000000 (0)\n-1B2FA9 Compressed Size       00000000 (0)\n-1B2FAD Uncompressed Size     00000000 (0)\n-1B2FB1 Filename Length       0044 (68)\n-1B2FB3 Extra Length          0000 (0)\n-1B2FB5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B65A3 Compression Method    0008 (8) 'Deflated'\n+1B65A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B65A9 CRC                   00000000 (0)\n+1B65AD Compressed Size       00000000 (0)\n+1B65B1 Uncompressed Size     00000000 (0)\n+1B65B5 Filename Length       001F (31)\n+1B65B7 Extra Length          0000 (0)\n+1B65B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B2FB5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B65B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B2FF9 PAYLOAD\n+1B65D8 PAYLOAD               XX\n \n-1B3848 DATA DESCRIPTOR       08074B50 (134695760)\n-1B384C CRC                   52CF3DD1 (1389313489)\n-1B3850 Compressed Size       0000084F (2127)\n-1B3854 Uncompressed Size     00001AE7 (6887)\n+1B65DA DATA DESCRIPTOR       08074B50 (134695760)\n+1B65DE CRC                   00000000 (0)\n+1B65E2 Compressed Size       00000002 (2)\n+1B65E6 Uncompressed Size     00000000 (0)\n \n-1B3858 LOCAL HEADER #1645    04034B50 (67324752)\n-1B385C Extract Zip Spec      14 (20) '2.0'\n-1B385D Extract OS            00 (0) 'MS-DOS'\n-1B385E General Purpose Flag  0808 (2056)\n+1B65EA LOCAL HEADER #1645    04034B50 (67324752)\n+1B65EE Extract Zip Spec      14 (20) '2.0'\n+1B65EF Extract OS            00 (0) 'MS-DOS'\n+1B65F0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B3860 Compression Method    0008 (8) 'Deflated'\n-1B3862 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B3866 CRC                   00000000 (0)\n-1B386A Compressed Size       00000000 (0)\n-1B386E Uncompressed Size     00000000 (0)\n-1B3872 Filename Length       004B (75)\n-1B3874 Extra Length          0000 (0)\n-1B3876 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B65F2 Compression Method    0008 (8) 'Deflated'\n+1B65F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B65F8 CRC                   00000000 (0)\n+1B65FC Compressed Size       00000000 (0)\n+1B6600 Uncompressed Size     00000000 (0)\n+1B6604 Filename Length       002C (44)\n+1B6606 Extra Length          0000 (0)\n+1B6608 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B3876: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B6608: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B38C1 PAYLOAD\n+1B6634 PAYLOAD\n \n-1B3B36 DATA DESCRIPTOR       08074B50 (134695760)\n-1B3B3A CRC                   350D1F44 (890052420)\n-1B3B3E Compressed Size       00000275 (629)\n-1B3B42 Uncompressed Size     00000534 (1332)\n+1B6AB2 DATA DESCRIPTOR       08074B50 (134695760)\n+1B6AB6 CRC                   0CEB317A (216740218)\n+1B6ABA Compressed Size       0000047E (1150)\n+1B6ABE Uncompressed Size     00001263 (4707)\n \n-1B3B46 LOCAL HEADER #1646    04034B50 (67324752)\n-1B3B4A Extract Zip Spec      14 (20) '2.0'\n-1B3B4B Extract OS            00 (0) 'MS-DOS'\n-1B3B4C General Purpose Flag  0808 (2056)\n+1B6AC2 LOCAL HEADER #1646    04034B50 (67324752)\n+1B6AC6 Extract Zip Spec      14 (20) '2.0'\n+1B6AC7 Extract OS            00 (0) 'MS-DOS'\n+1B6AC8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B3B4E Compression Method    0008 (8) 'Deflated'\n-1B3B50 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B3B54 CRC                   00000000 (0)\n-1B3B58 Compressed Size       00000000 (0)\n-1B3B5C Uncompressed Size     00000000 (0)\n-1B3B60 Filename Length       002B (43)\n-1B3B62 Extra Length          0000 (0)\n-1B3B64 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B6ACA Compression Method    0008 (8) 'Deflated'\n+1B6ACC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B6AD0 CRC                   00000000 (0)\n+1B6AD4 Compressed Size       00000000 (0)\n+1B6AD8 Uncompressed Size     00000000 (0)\n+1B6ADC Filename Length       002F (47)\n+1B6ADE Extra Length          0000 (0)\n+1B6AE0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B3B64: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B6AE0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B3B8F PAYLOAD               XX\n+1B6B0F PAYLOAD\n \n-1B3B91 DATA DESCRIPTOR       08074B50 (134695760)\n-1B3B95 CRC                   00000000 (0)\n-1B3B99 Compressed Size       00000002 (2)\n-1B3B9D Uncompressed Size     00000000 (0)\n+1B6D45 DATA DESCRIPTOR       08074B50 (134695760)\n+1B6D49 CRC                   785E6462 (2019452002)\n+1B6D4D Compressed Size       00000236 (566)\n+1B6D51 Uncompressed Size     00000446 (1094)\n \n-1B3BA1 LOCAL HEADER #1647    04034B50 (67324752)\n-1B3BA5 Extract Zip Spec      14 (20) '2.0'\n-1B3BA6 Extract OS            00 (0) 'MS-DOS'\n-1B3BA7 General Purpose Flag  0808 (2056)\n+1B6D55 LOCAL HEADER #1647    04034B50 (67324752)\n+1B6D59 Extract Zip Spec      14 (20) '2.0'\n+1B6D5A Extract OS            00 (0) 'MS-DOS'\n+1B6D5B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B3BA9 Compression Method    0008 (8) 'Deflated'\n-1B3BAB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B3BAF CRC                   00000000 (0)\n-1B3BB3 Compressed Size       00000000 (0)\n-1B3BB7 Uncompressed Size     00000000 (0)\n-1B3BBB Filename Length       0048 (72)\n-1B3BBD Extra Length          0000 (0)\n-1B3BBF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B6D5D Compression Method    0008 (8) 'Deflated'\n+1B6D5F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B6D63 CRC                   00000000 (0)\n+1B6D67 Compressed Size       00000000 (0)\n+1B6D6B Uncompressed Size     00000000 (0)\n+1B6D6F Filename Length       002C (44)\n+1B6D71 Extra Length          0000 (0)\n+1B6D73 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B3BBF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B6D73: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B3C07 PAYLOAD\n+1B6D9F PAYLOAD\n \n-1B4403 DATA DESCRIPTOR       08074B50 (134695760)\n-1B4407 CRC                   F0553B98 (4032117656)\n-1B440B Compressed Size       000007FC (2044)\n-1B440F Uncompressed Size     00001B8F (7055)\n+1B6FB3 DATA DESCRIPTOR       08074B50 (134695760)\n+1B6FB7 CRC                   12EE7A54 (317618772)\n+1B6FBB Compressed Size       00000214 (532)\n+1B6FBF Uncompressed Size     000003B7 (951)\n \n-1B4413 LOCAL HEADER #1648    04034B50 (67324752)\n-1B4417 Extract Zip Spec      14 (20) '2.0'\n-1B4418 Extract OS            00 (0) 'MS-DOS'\n-1B4419 General Purpose Flag  0808 (2056)\n+1B6FC3 LOCAL HEADER #1648    04034B50 (67324752)\n+1B6FC7 Extract Zip Spec      14 (20) '2.0'\n+1B6FC8 Extract OS            00 (0) 'MS-DOS'\n+1B6FC9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B441B Compression Method    0008 (8) 'Deflated'\n-1B441D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B4421 CRC                   00000000 (0)\n-1B4425 Compressed Size       00000000 (0)\n-1B4429 Uncompressed Size     00000000 (0)\n-1B442D Filename Length       004F (79)\n-1B442F Extra Length          0000 (0)\n-1B4431 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B6FCB Compression Method    0008 (8) 'Deflated'\n+1B6FCD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B6FD1 CRC                   00000000 (0)\n+1B6FD5 Compressed Size       00000000 (0)\n+1B6FD9 Uncompressed Size     00000000 (0)\n+1B6FDD Filename Length       002C (44)\n+1B6FDF Extra Length          0000 (0)\n+1B6FE1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B4431: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B6FE1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B4480 PAYLOAD\n+1B700D PAYLOAD\n \n-1B4705 DATA DESCRIPTOR       08074B50 (134695760)\n-1B4709 CRC                   D59518E0 (3583318240)\n-1B470D Compressed Size       00000285 (645)\n-1B4711 Uncompressed Size     0000055D (1373)\n+1B7223 DATA DESCRIPTOR       08074B50 (134695760)\n+1B7227 CRC                   AE09219E (2919834014)\n+1B722B Compressed Size       00000216 (534)\n+1B722F Uncompressed Size     000003B7 (951)\n \n-1B4715 LOCAL HEADER #1649    04034B50 (67324752)\n-1B4719 Extract Zip Spec      14 (20) '2.0'\n-1B471A Extract OS            00 (0) 'MS-DOS'\n-1B471B General Purpose Flag  0808 (2056)\n+1B7233 LOCAL HEADER #1649    04034B50 (67324752)\n+1B7237 Extract Zip Spec      14 (20) '2.0'\n+1B7238 Extract OS            00 (0) 'MS-DOS'\n+1B7239 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B471D Compression Method    0008 (8) 'Deflated'\n-1B471F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B4723 CRC                   00000000 (0)\n-1B4727 Compressed Size       00000000 (0)\n-1B472B Uncompressed Size     00000000 (0)\n-1B472F Filename Length       0018 (24)\n-1B4731 Extra Length          0000 (0)\n-1B4733 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+1B723B Compression Method    0008 (8) 'Deflated'\n+1B723D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B7241 CRC                   00000000 (0)\n+1B7245 Compressed Size       00000000 (0)\n+1B7249 Uncompressed Size     00000000 (0)\n+1B724D Filename Length       002A (42)\n+1B724F Extra Length          0000 (0)\n+1B7251 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B4733: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B7251: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B474B PAYLOAD               XX\n+1B727B PAYLOAD\n \n-1B474D DATA DESCRIPTOR       08074B50 (134695760)\n-1B4751 CRC                   00000000 (0)\n-1B4755 Compressed Size       00000002 (2)\n-1B4759 Uncompressed Size     00000000 (0)\n+1B7490 DATA DESCRIPTOR       08074B50 (134695760)\n+1B7494 CRC                   C0617C64 (3227614308)\n+1B7498 Compressed Size       00000215 (533)\n+1B749C Uncompressed Size     000003B5 (949)\n \n-1B475D LOCAL HEADER #1650    04034B50 (67324752)\n-1B4761 Extract Zip Spec      14 (20) '2.0'\n-1B4762 Extract OS            00 (0) 'MS-DOS'\n-1B4763 General Purpose Flag  0808 (2056)\n+1B74A0 LOCAL HEADER #1650    04034B50 (67324752)\n+1B74A4 Extract Zip Spec      14 (20) '2.0'\n+1B74A5 Extract OS            00 (0) 'MS-DOS'\n+1B74A6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B4765 Compression Method    0008 (8) 'Deflated'\n-1B4767 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B476B CRC                   00000000 (0)\n-1B476F Compressed Size       00000000 (0)\n-1B4773 Uncompressed Size     00000000 (0)\n-1B4777 Filename Length       0022 (34)\n-1B4779 Extra Length          0000 (0)\n-1B477B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B74A8 Compression Method    0008 (8) 'Deflated'\n+1B74AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B74AE CRC                   00000000 (0)\n+1B74B2 Compressed Size       00000000 (0)\n+1B74B6 Uncompressed Size     00000000 (0)\n+1B74BA Filename Length       002A (42)\n+1B74BC Extra Length          0000 (0)\n+1B74BE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B477B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B74BE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B479D PAYLOAD\n+1B74E8 PAYLOAD\n \n-1B49AD DATA DESCRIPTOR       08074B50 (134695760)\n-1B49B1 CRC                   A0D1D7AD (2698106797)\n-1B49B5 Compressed Size       00000210 (528)\n-1B49B9 Uncompressed Size     000003A7 (935)\n+1B771E DATA DESCRIPTOR       08074B50 (134695760)\n+1B7722 CRC                   50E43A38 (1357134392)\n+1B7726 Compressed Size       00000236 (566)\n+1B772A Uncompressed Size     00000420 (1056)\n \n-1B49BD LOCAL HEADER #1651    04034B50 (67324752)\n-1B49C1 Extract Zip Spec      14 (20) '2.0'\n-1B49C2 Extract OS            00 (0) 'MS-DOS'\n-1B49C3 General Purpose Flag  0808 (2056)\n+1B772E LOCAL HEADER #1651    04034B50 (67324752)\n+1B7732 Extract Zip Spec      14 (20) '2.0'\n+1B7733 Extract OS            00 (0) 'MS-DOS'\n+1B7734 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B49C5 Compression Method    0008 (8) 'Deflated'\n-1B49C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B49CB CRC                   00000000 (0)\n-1B49CF Compressed Size       00000000 (0)\n-1B49D3 Uncompressed Size     00000000 (0)\n-1B49D7 Filename Length       0029 (41)\n-1B49D9 Extra Length          0000 (0)\n-1B49DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B7736 Compression Method    0008 (8) 'Deflated'\n+1B7738 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B773C CRC                   00000000 (0)\n+1B7740 Compressed Size       00000000 (0)\n+1B7744 Uncompressed Size     00000000 (0)\n+1B7748 Filename Length       002B (43)\n+1B774A Extra Length          0000 (0)\n+1B774C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B49DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B774C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B4A04 PAYLOAD\n+1B7777 PAYLOAD\n \n-1B4C4C DATA DESCRIPTOR       08074B50 (134695760)\n-1B4C50 CRC                   36E8AAE8 (921217768)\n-1B4C54 Compressed Size       00000248 (584)\n-1B4C58 Uncompressed Size     0000043E (1086)\n+1B79AF DATA DESCRIPTOR       08074B50 (134695760)\n+1B79B3 CRC                   7B632F2C (2070097708)\n+1B79B7 Compressed Size       00000238 (568)\n+1B79BB Uncompressed Size     00000428 (1064)\n \n-1B4C5C LOCAL HEADER #1652    04034B50 (67324752)\n-1B4C60 Extract Zip Spec      14 (20) '2.0'\n-1B4C61 Extract OS            00 (0) 'MS-DOS'\n-1B4C62 General Purpose Flag  0808 (2056)\n+1B79BF LOCAL HEADER #1652    04034B50 (67324752)\n+1B79C3 Extract Zip Spec      14 (20) '2.0'\n+1B79C4 Extract OS            00 (0) 'MS-DOS'\n+1B79C5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B4C64 Compression Method    0008 (8) 'Deflated'\n-1B4C66 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B4C6A CRC                   00000000 (0)\n-1B4C6E Compressed Size       00000000 (0)\n-1B4C72 Uncompressed Size     00000000 (0)\n-1B4C76 Filename Length       0020 (32)\n-1B4C78 Extra Length          0000 (0)\n-1B4C7A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B79C7 Compression Method    0008 (8) 'Deflated'\n+1B79C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B79CD CRC                   00000000 (0)\n+1B79D1 Compressed Size       00000000 (0)\n+1B79D5 Uncompressed Size     00000000 (0)\n+1B79D9 Filename Length       002C (44)\n+1B79DB Extra Length          0000 (0)\n+1B79DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B4C7A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B79DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B4C9A PAYLOAD               XX\n+1B7A09 PAYLOAD\n \n-1B4C9C DATA DESCRIPTOR       08074B50 (134695760)\n-1B4CA0 CRC                   00000000 (0)\n-1B4CA4 Compressed Size       00000002 (2)\n-1B4CA8 Uncompressed Size     00000000 (0)\n+1B7C51 DATA DESCRIPTOR       08074B50 (134695760)\n+1B7C55 CRC                   885A72D3 (2287629011)\n+1B7C59 Compressed Size       00000248 (584)\n+1B7C5D Uncompressed Size     00000481 (1153)\n \n-1B4CAC LOCAL HEADER #1653    04034B50 (67324752)\n-1B4CB0 Extract Zip Spec      14 (20) '2.0'\n-1B4CB1 Extract OS            00 (0) 'MS-DOS'\n-1B4CB2 General Purpose Flag  0808 (2056)\n+1B7C61 LOCAL HEADER #1653    04034B50 (67324752)\n+1B7C65 Extract Zip Spec      14 (20) '2.0'\n+1B7C66 Extract OS            00 (0) 'MS-DOS'\n+1B7C67 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B4CB4 Compression Method    0008 (8) 'Deflated'\n-1B4CB6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B4CBA CRC                   00000000 (0)\n-1B4CBE Compressed Size       00000000 (0)\n-1B4CC2 Uncompressed Size     00000000 (0)\n-1B4CC6 Filename Length       0039 (57)\n-1B4CC8 Extra Length          0000 (0)\n-1B4CCA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B7C69 Compression Method    0008 (8) 'Deflated'\n+1B7C6B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B7C6F CRC                   00000000 (0)\n+1B7C73 Compressed Size       00000000 (0)\n+1B7C77 Uncompressed Size     00000000 (0)\n+1B7C7B Filename Length       002C (44)\n+1B7C7D Extra Length          0000 (0)\n+1B7C7F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B4CCA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B7C7F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B4D03 PAYLOAD\n+1B7CAB PAYLOAD\n \n-1B5072 DATA DESCRIPTOR       08074B50 (134695760)\n-1B5076 CRC                   94A98A55 (2494138965)\n-1B507A Compressed Size       0000036F (879)\n-1B507E Uncompressed Size     000007E6 (2022)\n+1B7EC2 DATA DESCRIPTOR       08074B50 (134695760)\n+1B7EC6 CRC                   419EAEDE (1100918494)\n+1B7ECA Compressed Size       00000217 (535)\n+1B7ECE Uncompressed Size     000003B7 (951)\n \n-1B5082 LOCAL HEADER #1654    04034B50 (67324752)\n-1B5086 Extract Zip Spec      14 (20) '2.0'\n-1B5087 Extract OS            00 (0) 'MS-DOS'\n-1B5088 General Purpose Flag  0808 (2056)\n+1B7ED2 LOCAL HEADER #1654    04034B50 (67324752)\n+1B7ED6 Extract Zip Spec      14 (20) '2.0'\n+1B7ED7 Extract OS            00 (0) 'MS-DOS'\n+1B7ED8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B508A Compression Method    0008 (8) 'Deflated'\n-1B508C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B5090 CRC                   00000000 (0)\n-1B5094 Compressed Size       00000000 (0)\n-1B5098 Uncompressed Size     00000000 (0)\n-1B509C Filename Length       0027 (39)\n-1B509E Extra Length          0000 (0)\n-1B50A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B7EDA Compression Method    0008 (8) 'Deflated'\n+1B7EDC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B7EE0 CRC                   00000000 (0)\n+1B7EE4 Compressed Size       00000000 (0)\n+1B7EE8 Uncompressed Size     00000000 (0)\n+1B7EEC Filename Length       002D (45)\n+1B7EEE Extra Length          0000 (0)\n+1B7EF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B50A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B7EF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B50C7 PAYLOAD\n+1B7F1D PAYLOAD\n \n-1B536D DATA DESCRIPTOR       08074B50 (134695760)\n-1B5371 CRC                   B2D5E5FC (3000362492)\n-1B5375 Compressed Size       000002A6 (678)\n-1B5379 Uncompressed Size     00000738 (1848)\n+1B816A DATA DESCRIPTOR       08074B50 (134695760)\n+1B816E CRC                   730F08F3 (1930365171)\n+1B8172 Compressed Size       0000024D (589)\n+1B8176 Uncompressed Size     0000047B (1147)\n \n-1B537D LOCAL HEADER #1655    04034B50 (67324752)\n-1B5381 Extract Zip Spec      14 (20) '2.0'\n-1B5382 Extract OS            00 (0) 'MS-DOS'\n-1B5383 General Purpose Flag  0808 (2056)\n+1B817A LOCAL HEADER #1655    04034B50 (67324752)\n+1B817E Extract Zip Spec      14 (20) '2.0'\n+1B817F Extract OS            00 (0) 'MS-DOS'\n+1B8180 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B5385 Compression Method    0008 (8) 'Deflated'\n-1B5387 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B538B CRC                   00000000 (0)\n-1B538F Compressed Size       00000000 (0)\n-1B5393 Uncompressed Size     00000000 (0)\n-1B5397 Filename Length       0021 (33)\n-1B5399 Extra Length          0000 (0)\n-1B539B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B8182 Compression Method    0008 (8) 'Deflated'\n+1B8184 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B8188 CRC                   00000000 (0)\n+1B818C Compressed Size       00000000 (0)\n+1B8190 Uncompressed Size     00000000 (0)\n+1B8194 Filename Length       002C (44)\n+1B8196 Extra Length          0000 (0)\n+1B8198 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B539B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B8198: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B53BC PAYLOAD\n+1B81C4 PAYLOAD\n \n-1B5CC7 DATA DESCRIPTOR       08074B50 (134695760)\n-1B5CCB CRC                   D19F2618 (3516868120)\n-1B5CCF Compressed Size       0000090B (2315)\n-1B5CD3 Uncompressed Size     00004BE5 (19429)\n+1B840D DATA DESCRIPTOR       08074B50 (134695760)\n+1B8411 CRC                   61ADD6F9 (1638782713)\n+1B8415 Compressed Size       00000249 (585)\n+1B8419 Uncompressed Size     00000498 (1176)\n \n-1B5CD7 LOCAL HEADER #1656    04034B50 (67324752)\n-1B5CDB Extract Zip Spec      14 (20) '2.0'\n-1B5CDC Extract OS            00 (0) 'MS-DOS'\n-1B5CDD General Purpose Flag  0808 (2056)\n+1B841D LOCAL HEADER #1656    04034B50 (67324752)\n+1B8421 Extract Zip Spec      14 (20) '2.0'\n+1B8422 Extract OS            00 (0) 'MS-DOS'\n+1B8423 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B5CDF Compression Method    0008 (8) 'Deflated'\n-1B5CE1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B5CE5 CRC                   00000000 (0)\n-1B5CE9 Compressed Size       00000000 (0)\n-1B5CED Uncompressed Size     00000000 (0)\n-1B5CF1 Filename Length       0022 (34)\n-1B5CF3 Extra Length          0000 (0)\n-1B5CF5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B8425 Compression Method    0008 (8) 'Deflated'\n+1B8427 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B842B CRC                   00000000 (0)\n+1B842F Compressed Size       00000000 (0)\n+1B8433 Uncompressed Size     00000000 (0)\n+1B8437 Filename Length       002B (43)\n+1B8439 Extra Length          0000 (0)\n+1B843B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B5CF5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B843B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B5D17 PAYLOAD               XX\n+1B8466 PAYLOAD\n \n-1B5D19 DATA DESCRIPTOR       08074B50 (134695760)\n-1B5D1D CRC                   00000000 (0)\n-1B5D21 Compressed Size       00000002 (2)\n-1B5D25 Uncompressed Size     00000000 (0)\n+1B86AC DATA DESCRIPTOR       08074B50 (134695760)\n+1B86B0 CRC                   E87449AF (3899935151)\n+1B86B4 Compressed Size       00000246 (582)\n+1B86B8 Uncompressed Size     00000467 (1127)\n \n-1B5D29 LOCAL HEADER #1657    04034B50 (67324752)\n-1B5D2D Extract Zip Spec      14 (20) '2.0'\n-1B5D2E Extract OS            00 (0) 'MS-DOS'\n-1B5D2F General Purpose Flag  0808 (2056)\n+1B86BC LOCAL HEADER #1657    04034B50 (67324752)\n+1B86C0 Extract Zip Spec      14 (20) '2.0'\n+1B86C1 Extract OS            00 (0) 'MS-DOS'\n+1B86C2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B5D31 Compression Method    0008 (8) 'Deflated'\n-1B5D33 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B5D37 CRC                   00000000 (0)\n-1B5D3B Compressed Size       00000000 (0)\n-1B5D3F Uncompressed Size     00000000 (0)\n-1B5D43 Filename Length       002F (47)\n-1B5D45 Extra Length          0000 (0)\n-1B5D47 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B86C4 Compression Method    0008 (8) 'Deflated'\n+1B86C6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B86CA CRC                   00000000 (0)\n+1B86CE Compressed Size       00000000 (0)\n+1B86D2 Uncompressed Size     00000000 (0)\n+1B86D6 Filename Length       0020 (32)\n+1B86D8 Extra Length          0000 (0)\n+1B86DA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B5D47: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B86DA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B5D76 PAYLOAD\n+1B86FA PAYLOAD               XX\n \n-1B5F8C DATA DESCRIPTOR       08074B50 (134695760)\n-1B5F90 CRC                   AB4B3845 (2873833541)\n-1B5F94 Compressed Size       00000216 (534)\n-1B5F98 Uncompressed Size     000003C1 (961)\n+1B86FC DATA DESCRIPTOR       08074B50 (134695760)\n+1B8700 CRC                   00000000 (0)\n+1B8704 Compressed Size       00000002 (2)\n+1B8708 Uncompressed Size     00000000 (0)\n \n-1B5F9C LOCAL HEADER #1658    04034B50 (67324752)\n-1B5FA0 Extract Zip Spec      14 (20) '2.0'\n-1B5FA1 Extract OS            00 (0) 'MS-DOS'\n-1B5FA2 General Purpose Flag  0808 (2056)\n+1B870C LOCAL HEADER #1658    04034B50 (67324752)\n+1B8710 Extract Zip Spec      14 (20) '2.0'\n+1B8711 Extract OS            00 (0) 'MS-DOS'\n+1B8712 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B5FA4 Compression Method    0008 (8) 'Deflated'\n-1B5FA6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B5FAA CRC                   00000000 (0)\n-1B5FAE Compressed Size       00000000 (0)\n-1B5FB2 Uncompressed Size     00000000 (0)\n-1B5FB6 Filename Length       0038 (56)\n-1B5FB8 Extra Length          0000 (0)\n-1B5FBA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B8714 Compression Method    0008 (8) 'Deflated'\n+1B8716 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B871A CRC                   00000000 (0)\n+1B871E Compressed Size       00000000 (0)\n+1B8722 Uncompressed Size     00000000 (0)\n+1B8726 Filename Length       0028 (40)\n+1B8728 Extra Length          0000 (0)\n+1B872A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B5FBA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B872A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B5FF2 PAYLOAD\n+1B8752 PAYLOAD               XX\n \n-1B6217 DATA DESCRIPTOR       08074B50 (134695760)\n-1B621B CRC                   5F752BEF (1601514479)\n-1B621F Compressed Size       00000225 (549)\n-1B6223 Uncompressed Size     000003F1 (1009)\n+1B8754 DATA DESCRIPTOR       08074B50 (134695760)\n+1B8758 CRC                   00000000 (0)\n+1B875C Compressed Size       00000002 (2)\n+1B8760 Uncompressed Size     00000000 (0)\n \n-1B6227 LOCAL HEADER #1659    04034B50 (67324752)\n-1B622B Extract Zip Spec      14 (20) '2.0'\n-1B622C Extract OS            00 (0) 'MS-DOS'\n-1B622D General Purpose Flag  0808 (2056)\n+1B8764 LOCAL HEADER #1659    04034B50 (67324752)\n+1B8768 Extract Zip Spec      14 (20) '2.0'\n+1B8769 Extract OS            00 (0) 'MS-DOS'\n+1B876A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B622F Compression Method    0008 (8) 'Deflated'\n-1B6231 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B6235 CRC                   00000000 (0)\n-1B6239 Compressed Size       00000000 (0)\n-1B623D Uncompressed Size     00000000 (0)\n-1B6241 Filename Length       0020 (32)\n-1B6243 Extra Length          0000 (0)\n-1B6245 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B876C Compression Method    0008 (8) 'Deflated'\n+1B876E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B8772 CRC                   00000000 (0)\n+1B8776 Compressed Size       00000000 (0)\n+1B877A Uncompressed Size     00000000 (0)\n+1B877E Filename Length       0033 (51)\n+1B8780 Extra Length          0000 (0)\n+1B8782 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B6245: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B8782: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B6265 PAYLOAD               XX\n+1B87B5 PAYLOAD               XX\n \n-1B6267 DATA DESCRIPTOR       08074B50 (134695760)\n-1B626B CRC                   00000000 (0)\n-1B626F Compressed Size       00000002 (2)\n-1B6273 Uncompressed Size     00000000 (0)\n+1B87B7 DATA DESCRIPTOR       08074B50 (134695760)\n+1B87BB CRC                   00000000 (0)\n+1B87BF Compressed Size       00000002 (2)\n+1B87C3 Uncompressed Size     00000000 (0)\n \n-1B6277 LOCAL HEADER #1660    04034B50 (67324752)\n-1B627B Extract Zip Spec      14 (20) '2.0'\n-1B627C Extract OS            00 (0) 'MS-DOS'\n-1B627D General Purpose Flag  0808 (2056)\n+1B87C7 LOCAL HEADER #1660    04034B50 (67324752)\n+1B87CB Extract Zip Spec      14 (20) '2.0'\n+1B87CC Extract OS            00 (0) 'MS-DOS'\n+1B87CD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B627F Compression Method    0008 (8) 'Deflated'\n-1B6281 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B6285 CRC                   00000000 (0)\n-1B6289 Compressed Size       00000000 (0)\n-1B628D Uncompressed Size     00000000 (0)\n-1B6291 Filename Length       0032 (50)\n-1B6293 Extra Length          0000 (0)\n-1B6295 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B87CF Compression Method    0008 (8) 'Deflated'\n+1B87D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B87D5 CRC                   00000000 (0)\n+1B87D9 Compressed Size       00000000 (0)\n+1B87DD Uncompressed Size     00000000 (0)\n+1B87E1 Filename Length       0043 (67)\n+1B87E3 Extra Length          0000 (0)\n+1B87E5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B6295: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B87E5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B62C7 PAYLOAD\n+1B8828 PAYLOAD\n \n-1B64E1 DATA DESCRIPTOR       08074B50 (134695760)\n-1B64E5 CRC                   75D97425 (1977185317)\n-1B64E9 Compressed Size       0000021A (538)\n-1B64ED Uncompressed Size     000003C7 (967)\n+1B8C4A DATA DESCRIPTOR       08074B50 (134695760)\n+1B8C4E CRC                   8EE85A26 (2397592102)\n+1B8C52 Compressed Size       00000422 (1058)\n+1B8C56 Uncompressed Size     00000AFD (2813)\n \n-1B64F1 LOCAL HEADER #1661    04034B50 (67324752)\n-1B64F5 Extract Zip Spec      14 (20) '2.0'\n-1B64F6 Extract OS            00 (0) 'MS-DOS'\n-1B64F7 General Purpose Flag  0808 (2056)\n+1B8C5A LOCAL HEADER #1661    04034B50 (67324752)\n+1B8C5E Extract Zip Spec      14 (20) '2.0'\n+1B8C5F Extract OS            00 (0) 'MS-DOS'\n+1B8C60 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B64F9 Compression Method    0008 (8) 'Deflated'\n-1B64FB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B64FF CRC                   00000000 (0)\n-1B6503 Compressed Size       00000000 (0)\n-1B6507 Uncompressed Size     00000000 (0)\n-1B650B Filename Length       0023 (35)\n-1B650D Extra Length          0000 (0)\n-1B650F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B8C62 Compression Method    0008 (8) 'Deflated'\n+1B8C64 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B8C68 CRC                   00000000 (0)\n+1B8C6C Compressed Size       00000000 (0)\n+1B8C70 Uncompressed Size     00000000 (0)\n+1B8C74 Filename Length       001C (28)\n+1B8C76 Extra Length          0000 (0)\n+1B8C78 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B650F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B8C78: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B6532 PAYLOAD               XX\n+1B8C94 PAYLOAD               XX\n \n-1B6534 DATA DESCRIPTOR       08074B50 (134695760)\n-1B6538 CRC                   00000000 (0)\n-1B653C Compressed Size       00000002 (2)\n-1B6540 Uncompressed Size     00000000 (0)\n+1B8C96 DATA DESCRIPTOR       08074B50 (134695760)\n+1B8C9A CRC                   00000000 (0)\n+1B8C9E Compressed Size       00000002 (2)\n+1B8CA2 Uncompressed Size     00000000 (0)\n \n-1B6544 LOCAL HEADER #1662    04034B50 (67324752)\n-1B6548 Extract Zip Spec      14 (20) '2.0'\n-1B6549 Extract OS            00 (0) 'MS-DOS'\n-1B654A General Purpose Flag  0808 (2056)\n+1B8CA6 LOCAL HEADER #1662    04034B50 (67324752)\n+1B8CAA Extract Zip Spec      14 (20) '2.0'\n+1B8CAB Extract OS            00 (0) 'MS-DOS'\n+1B8CAC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B654C Compression Method    0008 (8) 'Deflated'\n-1B654E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B6552 CRC                   00000000 (0)\n-1B6556 Compressed Size       00000000 (0)\n-1B655A Uncompressed Size     00000000 (0)\n-1B655E Filename Length       0033 (51)\n-1B6560 Extra Length          0000 (0)\n-1B6562 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B8CAE Compression Method    0008 (8) 'Deflated'\n+1B8CB0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B8CB4 CRC                   00000000 (0)\n+1B8CB8 Compressed Size       00000000 (0)\n+1B8CBC Uncompressed Size     00000000 (0)\n+1B8CC0 Filename Length       002A (42)\n+1B8CC2 Extra Length          0000 (0)\n+1B8CC4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B6562: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B8CC4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B6595 PAYLOAD\n+1B8CEE PAYLOAD\n \n-1B67B2 DATA DESCRIPTOR       08074B50 (134695760)\n-1B67B6 CRC                   1B82D5A6 (461559206)\n-1B67BA Compressed Size       0000021D (541)\n-1B67BE Uncompressed Size     000003C9 (969)\n+1B8F01 DATA DESCRIPTOR       08074B50 (134695760)\n+1B8F05 CRC                   DC9E9A97 (3701381783)\n+1B8F09 Compressed Size       00000213 (531)\n+1B8F0D Uncompressed Size     000003B7 (951)\n \n-1B67C2 LOCAL HEADER #1663    04034B50 (67324752)\n-1B67C6 Extract Zip Spec      14 (20) '2.0'\n-1B67C7 Extract OS            00 (0) 'MS-DOS'\n-1B67C8 General Purpose Flag  0808 (2056)\n+1B8F11 LOCAL HEADER #1663    04034B50 (67324752)\n+1B8F15 Extract Zip Spec      14 (20) '2.0'\n+1B8F16 Extract OS            00 (0) 'MS-DOS'\n+1B8F17 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B67CA Compression Method    0008 (8) 'Deflated'\n-1B67CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B67D0 CRC                   00000000 (0)\n-1B67D4 Compressed Size       00000000 (0)\n-1B67D8 Uncompressed Size     00000000 (0)\n-1B67DC Filename Length       0034 (52)\n-1B67DE Extra Length          0000 (0)\n-1B67E0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B8F19 Compression Method    0008 (8) 'Deflated'\n+1B8F1B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B8F1F CRC                   00000000 (0)\n+1B8F23 Compressed Size       00000000 (0)\n+1B8F27 Uncompressed Size     00000000 (0)\n+1B8F2B Filename Length       001A (26)\n+1B8F2D Extra Length          0000 (0)\n+1B8F2F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B67E0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B8F2F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B6814 PAYLOAD\n+1B8F49 PAYLOAD               XX\n \n-1B6A33 DATA DESCRIPTOR       08074B50 (134695760)\n-1B6A37 CRC                   E66C1AF8 (3865844472)\n-1B6A3B Compressed Size       0000021F (543)\n-1B6A3F Uncompressed Size     000003CB (971)\n+1B8F4B DATA DESCRIPTOR       08074B50 (134695760)\n+1B8F4F CRC                   00000000 (0)\n+1B8F53 Compressed Size       00000002 (2)\n+1B8F57 Uncompressed Size     00000000 (0)\n \n-1B6A43 LOCAL HEADER #1664    04034B50 (67324752)\n-1B6A47 Extract Zip Spec      14 (20) '2.0'\n-1B6A48 Extract OS            00 (0) 'MS-DOS'\n-1B6A49 General Purpose Flag  0808 (2056)\n+1B8F5B LOCAL HEADER #1664    04034B50 (67324752)\n+1B8F5F Extract Zip Spec      14 (20) '2.0'\n+1B8F60 Extract OS            00 (0) 'MS-DOS'\n+1B8F61 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B6A4B Compression Method    0008 (8) 'Deflated'\n-1B6A4D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B6A51 CRC                   00000000 (0)\n-1B6A55 Compressed Size       00000000 (0)\n-1B6A59 Uncompressed Size     00000000 (0)\n-1B6A5D Filename Length       0035 (53)\n-1B6A5F Extra Length          0000 (0)\n-1B6A61 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B8F63 Compression Method    0008 (8) 'Deflated'\n+1B8F65 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B8F69 CRC                   00000000 (0)\n+1B8F6D Compressed Size       00000000 (0)\n+1B8F71 Uncompressed Size     00000000 (0)\n+1B8F75 Filename Length       0026 (38)\n+1B8F77 Extra Length          0000 (0)\n+1B8F79 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B6A61: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B8F79: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B6A96 PAYLOAD\n+1B8F9F PAYLOAD\n \n-1B6D53 DATA DESCRIPTOR       08074B50 (134695760)\n-1B6D57 CRC                   A93FA4B2 (2839520434)\n-1B6D5B Compressed Size       000002BD (701)\n-1B6D5F Uncompressed Size     000006AC (1708)\n+1B9279 DATA DESCRIPTOR       08074B50 (134695760)\n+1B927D CRC                   D9881C34 (3649575988)\n+1B9281 Compressed Size       000002DA (730)\n+1B9285 Uncompressed Size     0000063F (1599)\n \n-1B6D63 LOCAL HEADER #1665    04034B50 (67324752)\n-1B6D67 Extract Zip Spec      14 (20) '2.0'\n-1B6D68 Extract OS            00 (0) 'MS-DOS'\n-1B6D69 General Purpose Flag  0808 (2056)\n+1B9289 LOCAL HEADER #1665    04034B50 (67324752)\n+1B928D Extract Zip Spec      14 (20) '2.0'\n+1B928E Extract OS            00 (0) 'MS-DOS'\n+1B928F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B6D6B Compression Method    0008 (8) 'Deflated'\n-1B6D6D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B6D71 CRC                   00000000 (0)\n-1B6D75 Compressed Size       00000000 (0)\n-1B6D79 Uncompressed Size     00000000 (0)\n-1B6D7D Filename Length       0020 (32)\n-1B6D7F Extra Length          0000 (0)\n-1B6D81 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B9291 Compression Method    0008 (8) 'Deflated'\n+1B9293 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B9297 CRC                   00000000 (0)\n+1B929B Compressed Size       00000000 (0)\n+1B929F Uncompressed Size     00000000 (0)\n+1B92A3 Filename Length       002D (45)\n+1B92A5 Extra Length          0000 (0)\n+1B92A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B6D81: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B92A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B6DA1 PAYLOAD               XX\n+1B92D4 PAYLOAD\n \n-1B6DA3 DATA DESCRIPTOR       08074B50 (134695760)\n-1B6DA7 CRC                   00000000 (0)\n-1B6DAB Compressed Size       00000002 (2)\n-1B6DAF Uncompressed Size     00000000 (0)\n+1B9543 DATA DESCRIPTOR       08074B50 (134695760)\n+1B9547 CRC                   29B723AE (699868078)\n+1B954B Compressed Size       0000026F (623)\n+1B954F Uncompressed Size     000004D6 (1238)\n \n-1B6DB3 LOCAL HEADER #1666    04034B50 (67324752)\n-1B6DB7 Extract Zip Spec      14 (20) '2.0'\n-1B6DB8 Extract OS            00 (0) 'MS-DOS'\n-1B6DB9 General Purpose Flag  0808 (2056)\n+1B9553 LOCAL HEADER #1666    04034B50 (67324752)\n+1B9557 Extract Zip Spec      14 (20) '2.0'\n+1B9558 Extract OS            00 (0) 'MS-DOS'\n+1B9559 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B6DBB Compression Method    0008 (8) 'Deflated'\n-1B6DBD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B6DC1 CRC                   00000000 (0)\n-1B6DC5 Compressed Size       00000000 (0)\n-1B6DC9 Uncompressed Size     00000000 (0)\n-1B6DCD Filename Length       002B (43)\n-1B6DCF Extra Length          0000 (0)\n-1B6DD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B955B Compression Method    0008 (8) 'Deflated'\n+1B955D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B9561 CRC                   00000000 (0)\n+1B9565 Compressed Size       00000000 (0)\n+1B9569 Uncompressed Size     00000000 (0)\n+1B956D Filename Length       0016 (22)\n+1B956F Extra Length          0000 (0)\n+1B9571 Filename              'XXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B6DD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B9571: Filename 'XXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B6DFC PAYLOAD\n+1B9587 PAYLOAD               XX\n \n-1B7050 DATA DESCRIPTOR       08074B50 (134695760)\n-1B7054 CRC                   BEC11652 (3200325202)\n-1B7058 Compressed Size       00000254 (596)\n-1B705C Uncompressed Size     000004CE (1230)\n+1B9589 DATA DESCRIPTOR       08074B50 (134695760)\n+1B958D CRC                   00000000 (0)\n+1B9591 Compressed Size       00000002 (2)\n+1B9595 Uncompressed Size     00000000 (0)\n \n-1B7060 LOCAL HEADER #1667    04034B50 (67324752)\n-1B7064 Extract Zip Spec      14 (20) '2.0'\n-1B7065 Extract OS            00 (0) 'MS-DOS'\n-1B7066 General Purpose Flag  0808 (2056)\n+1B9599 LOCAL HEADER #1667    04034B50 (67324752)\n+1B959D Extract Zip Spec      14 (20) '2.0'\n+1B959E Extract OS            00 (0) 'MS-DOS'\n+1B959F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B7068 Compression Method    0008 (8) 'Deflated'\n-1B706A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B706E CRC                   00000000 (0)\n-1B7072 Compressed Size       00000000 (0)\n-1B7076 Uncompressed Size     00000000 (0)\n-1B707A Filename Length       0032 (50)\n-1B707C Extra Length          0000 (0)\n-1B707E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B95A1 Compression Method    0008 (8) 'Deflated'\n+1B95A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B95A7 CRC                   00000000 (0)\n+1B95AB Compressed Size       00000000 (0)\n+1B95AF Uncompressed Size     00000000 (0)\n+1B95B3 Filename Length       001E (30)\n+1B95B5 Extra Length          0000 (0)\n+1B95B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B707E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B95B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B70B0 PAYLOAD\n+1B95D5 PAYLOAD               XX\n \n-1B72DB DATA DESCRIPTOR       08074B50 (134695760)\n-1B72DF CRC                   E8509F41 (3897597761)\n-1B72E3 Compressed Size       0000022B (555)\n-1B72E7 Uncompressed Size     000003ED (1005)\n+1B95D7 DATA DESCRIPTOR       08074B50 (134695760)\n+1B95DB CRC                   00000000 (0)\n+1B95DF Compressed Size       00000002 (2)\n+1B95E3 Uncompressed Size     00000000 (0)\n \n-1B72EB LOCAL HEADER #1668    04034B50 (67324752)\n-1B72EF Extract Zip Spec      14 (20) '2.0'\n-1B72F0 Extract OS            00 (0) 'MS-DOS'\n-1B72F1 General Purpose Flag  0808 (2056)\n+1B95E7 LOCAL HEADER #1668    04034B50 (67324752)\n+1B95EB Extract Zip Spec      14 (20) '2.0'\n+1B95EC Extract OS            00 (0) 'MS-DOS'\n+1B95ED General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B72F3 Compression Method    0008 (8) 'Deflated'\n-1B72F5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B72F9 CRC                   00000000 (0)\n-1B72FD Compressed Size       00000000 (0)\n-1B7301 Uncompressed Size     00000000 (0)\n-1B7305 Filename Length       001F (31)\n-1B7307 Extra Length          0000 (0)\n-1B7309 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B95EF Compression Method    0008 (8) 'Deflated'\n+1B95F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B95F5 CRC                   00000000 (0)\n+1B95F9 Compressed Size       00000000 (0)\n+1B95FD Uncompressed Size     00000000 (0)\n+1B9601 Filename Length       002E (46)\n+1B9603 Extra Length          0000 (0)\n+1B9605 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B7309: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B9605: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B7328 PAYLOAD               XX\n+1B9633 PAYLOAD\n \n-1B732A DATA DESCRIPTOR       08074B50 (134695760)\n-1B732E CRC                   00000000 (0)\n-1B7332 Compressed Size       00000002 (2)\n-1B7336 Uncompressed Size     00000000 (0)\n+1B98AD DATA DESCRIPTOR       08074B50 (134695760)\n+1B98B1 CRC                   496AA8AF (1231726767)\n+1B98B5 Compressed Size       0000027A (634)\n+1B98B9 Uncompressed Size     00000523 (1315)\n \n-1B733A LOCAL HEADER #1669    04034B50 (67324752)\n-1B733E Extract Zip Spec      14 (20) '2.0'\n-1B733F Extract OS            00 (0) 'MS-DOS'\n-1B7340 General Purpose Flag  0808 (2056)\n+1B98BD LOCAL HEADER #1669    04034B50 (67324752)\n+1B98C1 Extract Zip Spec      14 (20) '2.0'\n+1B98C2 Extract OS            00 (0) 'MS-DOS'\n+1B98C3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B7342 Compression Method    0008 (8) 'Deflated'\n-1B7344 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B7348 CRC                   00000000 (0)\n-1B734C Compressed Size       00000000 (0)\n-1B7350 Uncompressed Size     00000000 (0)\n-1B7354 Filename Length       002D (45)\n-1B7356 Extra Length          0000 (0)\n-1B7358 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B98C5 Compression Method    0008 (8) 'Deflated'\n+1B98C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B98CB CRC                   00000000 (0)\n+1B98CF Compressed Size       00000000 (0)\n+1B98D3 Uncompressed Size     00000000 (0)\n+1B98D7 Filename Length       0031 (49)\n+1B98D9 Extra Length          0000 (0)\n+1B98DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B7358: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B98DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B7385 PAYLOAD\n+1B990C PAYLOAD\n \n-1B759C DATA DESCRIPTOR       08074B50 (134695760)\n-1B75A0 CRC                   DEFC6FC7 (3741085639)\n-1B75A4 Compressed Size       00000217 (535)\n-1B75A8 Uncompressed Size     000003BD (957)\n+1B9BA1 DATA DESCRIPTOR       08074B50 (134695760)\n+1B9BA5 CRC                   52213B11 (1377909521)\n+1B9BA9 Compressed Size       00000295 (661)\n+1B9BAD Uncompressed Size     000005A6 (1446)\n \n-1B75AC LOCAL HEADER #1670    04034B50 (67324752)\n-1B75B0 Extract Zip Spec      14 (20) '2.0'\n-1B75B1 Extract OS            00 (0) 'MS-DOS'\n-1B75B2 General Purpose Flag  0808 (2056)\n+1B9BB1 LOCAL HEADER #1670    04034B50 (67324752)\n+1B9BB5 Extract Zip Spec      14 (20) '2.0'\n+1B9BB6 Extract OS            00 (0) 'MS-DOS'\n+1B9BB7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B75B4 Compression Method    0008 (8) 'Deflated'\n-1B75B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B75BA CRC                   00000000 (0)\n-1B75BE Compressed Size       00000000 (0)\n-1B75C2 Uncompressed Size     00000000 (0)\n-1B75C6 Filename Length       0024 (36)\n-1B75C8 Extra Length          0000 (0)\n-1B75CA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B9BB9 Compression Method    0008 (8) 'Deflated'\n+1B9BBB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B9BBF CRC                   00000000 (0)\n+1B9BC3 Compressed Size       00000000 (0)\n+1B9BC7 Uncompressed Size     00000000 (0)\n+1B9BCB Filename Length       001B (27)\n+1B9BCD Extra Length          0000 (0)\n+1B9BCF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B75CA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B9BCF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B75EE PAYLOAD               XX\n+1B9BEA PAYLOAD               XX\n \n-1B75F0 DATA DESCRIPTOR       08074B50 (134695760)\n-1B75F4 CRC                   00000000 (0)\n-1B75F8 Compressed Size       00000002 (2)\n-1B75FC Uncompressed Size     00000000 (0)\n+1B9BEC DATA DESCRIPTOR       08074B50 (134695760)\n+1B9BF0 CRC                   00000000 (0)\n+1B9BF4 Compressed Size       00000002 (2)\n+1B9BF8 Uncompressed Size     00000000 (0)\n \n-1B7600 LOCAL HEADER #1671    04034B50 (67324752)\n-1B7604 Extract Zip Spec      14 (20) '2.0'\n-1B7605 Extract OS            00 (0) 'MS-DOS'\n-1B7606 General Purpose Flag  0808 (2056)\n+1B9BFC LOCAL HEADER #1671    04034B50 (67324752)\n+1B9C00 Extract Zip Spec      14 (20) '2.0'\n+1B9C01 Extract OS            00 (0) 'MS-DOS'\n+1B9C02 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B7608 Compression Method    0008 (8) 'Deflated'\n-1B760A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B760E CRC                   00000000 (0)\n-1B7612 Compressed Size       00000000 (0)\n-1B7616 Uncompressed Size     00000000 (0)\n-1B761A Filename Length       0033 (51)\n-1B761C Extra Length          0000 (0)\n-1B761E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B9C04 Compression Method    0008 (8) 'Deflated'\n+1B9C06 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B9C0A CRC                   00000000 (0)\n+1B9C0E Compressed Size       00000000 (0)\n+1B9C12 Uncompressed Size     00000000 (0)\n+1B9C16 Filename Length       002E (46)\n+1B9C18 Extra Length          0000 (0)\n+1B9C1A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B761E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B9C1A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B7651 PAYLOAD\n+1B9C48 PAYLOAD\n \n-1B78CD DATA DESCRIPTOR       08074B50 (134695760)\n-1B78D1 CRC                   34B28AB6 (884116150)\n-1B78D5 Compressed Size       0000027C (636)\n-1B78D9 Uncompressed Size     000004E1 (1249)\n+1B9F59 DATA DESCRIPTOR       08074B50 (134695760)\n+1B9F5D CRC                   981F5DED (2552192493)\n+1B9F61 Compressed Size       00000311 (785)\n+1B9F65 Uncompressed Size     00000841 (2113)\n \n-1B78DD LOCAL HEADER #1672    04034B50 (67324752)\n-1B78E1 Extract Zip Spec      14 (20) '2.0'\n-1B78E2 Extract OS            00 (0) 'MS-DOS'\n-1B78E3 General Purpose Flag  0808 (2056)\n+1B9F69 LOCAL HEADER #1672    04034B50 (67324752)\n+1B9F6D Extract Zip Spec      14 (20) '2.0'\n+1B9F6E Extract OS            00 (0) 'MS-DOS'\n+1B9F6F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B78E5 Compression Method    0008 (8) 'Deflated'\n-1B78E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B78EB CRC                   00000000 (0)\n-1B78EF Compressed Size       00000000 (0)\n-1B78F3 Uncompressed Size     00000000 (0)\n-1B78F7 Filename Length       001F (31)\n-1B78F9 Extra Length          0000 (0)\n-1B78FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1B9F71 Compression Method    0008 (8) 'Deflated'\n+1B9F73 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1B9F77 CRC                   00000000 (0)\n+1B9F7B Compressed Size       00000000 (0)\n+1B9F7F Uncompressed Size     00000000 (0)\n+1B9F83 Filename Length       0028 (40)\n+1B9F85 Extra Length          0000 (0)\n+1B9F87 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B78FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1B9F87: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B791A PAYLOAD               XX\n+1B9FAF PAYLOAD\n \n-1B791C DATA DESCRIPTOR       08074B50 (134695760)\n-1B7920 CRC                   00000000 (0)\n-1B7924 Compressed Size       00000002 (2)\n-1B7928 Uncompressed Size     00000000 (0)\n+1BA2E8 DATA DESCRIPTOR       08074B50 (134695760)\n+1BA2EC CRC                   D76B4438 (3614131256)\n+1BA2F0 Compressed Size       00000339 (825)\n+1BA2F4 Uncompressed Size     000009FC (2556)\n \n-1B792C LOCAL HEADER #1673    04034B50 (67324752)\n-1B7930 Extract Zip Spec      14 (20) '2.0'\n-1B7931 Extract OS            00 (0) 'MS-DOS'\n-1B7932 General Purpose Flag  0808 (2056)\n+1BA2F8 LOCAL HEADER #1673    04034B50 (67324752)\n+1BA2FC Extract Zip Spec      14 (20) '2.0'\n+1BA2FD Extract OS            00 (0) 'MS-DOS'\n+1BA2FE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B7934 Compression Method    0008 (8) 'Deflated'\n-1B7936 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B793A CRC                   00000000 (0)\n-1B793E Compressed Size       00000000 (0)\n-1B7942 Uncompressed Size     00000000 (0)\n-1B7946 Filename Length       002C (44)\n-1B7948 Extra Length          0000 (0)\n-1B794A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BA300 Compression Method    0008 (8) 'Deflated'\n+1BA302 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BA306 CRC                   00000000 (0)\n+1BA30A Compressed Size       00000000 (0)\n+1BA30E Uncompressed Size     00000000 (0)\n+1BA312 Filename Length       002F (47)\n+1BA314 Extra Length          0000 (0)\n+1BA316 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B794A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BA316: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B7976 PAYLOAD\n+1BA345 PAYLOAD\n \n-1B7DED DATA DESCRIPTOR       08074B50 (134695760)\n-1B7DF1 CRC                   7889994B (2022283595)\n-1B7DF5 Compressed Size       00000477 (1143)\n-1B7DF9 Uncompressed Size     000011F5 (4597)\n+1BA5B5 DATA DESCRIPTOR       08074B50 (134695760)\n+1BA5B9 CRC                   C61A4C11 (3323612177)\n+1BA5BD Compressed Size       00000270 (624)\n+1BA5C1 Uncompressed Size     000004E1 (1249)\n \n-1B7DFD LOCAL HEADER #1674    04034B50 (67324752)\n-1B7E01 Extract Zip Spec      14 (20) '2.0'\n-1B7E02 Extract OS            00 (0) 'MS-DOS'\n-1B7E03 General Purpose Flag  0808 (2056)\n+1BA5C5 LOCAL HEADER #1674    04034B50 (67324752)\n+1BA5C9 Extract Zip Spec      14 (20) '2.0'\n+1BA5CA Extract OS            00 (0) 'MS-DOS'\n+1BA5CB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B7E05 Compression Method    0008 (8) 'Deflated'\n-1B7E07 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B7E0B CRC                   00000000 (0)\n-1B7E0F Compressed Size       00000000 (0)\n-1B7E13 Uncompressed Size     00000000 (0)\n-1B7E17 Filename Length       002F (47)\n-1B7E19 Extra Length          0000 (0)\n-1B7E1B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BA5CD Compression Method    0008 (8) 'Deflated'\n+1BA5CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BA5D3 CRC                   00000000 (0)\n+1BA5D7 Compressed Size       00000000 (0)\n+1BA5DB Uncompressed Size     00000000 (0)\n+1BA5DF Filename Length       0023 (35)\n+1BA5E1 Extra Length          0000 (0)\n+1BA5E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B7E1B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BA5E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B7E4A PAYLOAD\n+1BA606 PAYLOAD               XX\n \n-1B8080 DATA DESCRIPTOR       08074B50 (134695760)\n-1B8084 CRC                   785E6462 (2019452002)\n-1B8088 Compressed Size       00000236 (566)\n-1B808C Uncompressed Size     00000446 (1094)\n+1BA608 DATA DESCRIPTOR       08074B50 (134695760)\n+1BA60C CRC                   00000000 (0)\n+1BA610 Compressed Size       00000002 (2)\n+1BA614 Uncompressed Size     00000000 (0)\n \n-1B8090 LOCAL HEADER #1675    04034B50 (67324752)\n-1B8094 Extract Zip Spec      14 (20) '2.0'\n-1B8095 Extract OS            00 (0) 'MS-DOS'\n-1B8096 General Purpose Flag  0808 (2056)\n+1BA618 LOCAL HEADER #1675    04034B50 (67324752)\n+1BA61C Extract Zip Spec      14 (20) '2.0'\n+1BA61D Extract OS            00 (0) 'MS-DOS'\n+1BA61E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B8098 Compression Method    0008 (8) 'Deflated'\n-1B809A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B809E CRC                   00000000 (0)\n-1B80A2 Compressed Size       00000000 (0)\n-1B80A6 Uncompressed Size     00000000 (0)\n-1B80AA Filename Length       002C (44)\n-1B80AC Extra Length          0000 (0)\n-1B80AE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BA620 Compression Method    0008 (8) 'Deflated'\n+1BA622 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BA626 CRC                   00000000 (0)\n+1BA62A Compressed Size       00000000 (0)\n+1BA62E Uncompressed Size     00000000 (0)\n+1BA632 Filename Length       0038 (56)\n+1BA634 Extra Length          0000 (0)\n+1BA636 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B80AE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BA636: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B80DA PAYLOAD\n+1BA66E PAYLOAD\n \n-1B82EE DATA DESCRIPTOR       08074B50 (134695760)\n-1B82F2 CRC                   12EE7A54 (317618772)\n-1B82F6 Compressed Size       00000214 (532)\n-1B82FA Uncompressed Size     000003B7 (951)\n+1BABA9 DATA DESCRIPTOR       08074B50 (134695760)\n+1BABAD CRC                   90AFF823 (2427451427)\n+1BABB1 Compressed Size       0000053B (1339)\n+1BABB5 Uncompressed Size     000018DF (6367)\n \n-1B82FE LOCAL HEADER #1676    04034B50 (67324752)\n-1B8302 Extract Zip Spec      14 (20) '2.0'\n-1B8303 Extract OS            00 (0) 'MS-DOS'\n-1B8304 General Purpose Flag  0808 (2056)\n+1BABB9 LOCAL HEADER #1676    04034B50 (67324752)\n+1BABBD Extract Zip Spec      14 (20) '2.0'\n+1BABBE Extract OS            00 (0) 'MS-DOS'\n+1BABBF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B8306 Compression Method    0008 (8) 'Deflated'\n-1B8308 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B830C CRC                   00000000 (0)\n-1B8310 Compressed Size       00000000 (0)\n-1B8314 Uncompressed Size     00000000 (0)\n-1B8318 Filename Length       002C (44)\n-1B831A Extra Length          0000 (0)\n-1B831C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BABC1 Compression Method    0008 (8) 'Deflated'\n+1BABC3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BABC7 CRC                   00000000 (0)\n+1BABCB Compressed Size       00000000 (0)\n+1BABCF Uncompressed Size     00000000 (0)\n+1BABD3 Filename Length       003F (63)\n+1BABD5 Extra Length          0000 (0)\n+1BABD7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B831C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BABD7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B8348 PAYLOAD\n+1BAC16 PAYLOAD\n \n-1B855E DATA DESCRIPTOR       08074B50 (134695760)\n-1B8562 CRC                   AE09219E (2919834014)\n-1B8566 Compressed Size       00000216 (534)\n-1B856A Uncompressed Size     000003B7 (951)\n+1BAEAB DATA DESCRIPTOR       08074B50 (134695760)\n+1BAEAF CRC                   85536244 (2236834372)\n+1BAEB3 Compressed Size       00000295 (661)\n+1BAEB7 Uncompressed Size     00000553 (1363)\n \n-1B856E LOCAL HEADER #1677    04034B50 (67324752)\n-1B8572 Extract Zip Spec      14 (20) '2.0'\n-1B8573 Extract OS            00 (0) 'MS-DOS'\n-1B8574 General Purpose Flag  0808 (2056)\n+1BAEBB LOCAL HEADER #1677    04034B50 (67324752)\n+1BAEBF Extract Zip Spec      14 (20) '2.0'\n+1BAEC0 Extract OS            00 (0) 'MS-DOS'\n+1BAEC1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B8576 Compression Method    0008 (8) 'Deflated'\n-1B8578 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B857C CRC                   00000000 (0)\n-1B8580 Compressed Size       00000000 (0)\n-1B8584 Uncompressed Size     00000000 (0)\n-1B8588 Filename Length       002A (42)\n-1B858A Extra Length          0000 (0)\n-1B858C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BAEC3 Compression Method    0008 (8) 'Deflated'\n+1BAEC5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BAEC9 CRC                   00000000 (0)\n+1BAECD Compressed Size       00000000 (0)\n+1BAED1 Uncompressed Size     00000000 (0)\n+1BAED5 Filename Length       0038 (56)\n+1BAED7 Extra Length          0000 (0)\n+1BAED9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B858C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BAED9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B85B6 PAYLOAD\n+1BAF11 PAYLOAD\n \n-1B87CB DATA DESCRIPTOR       08074B50 (134695760)\n-1B87CF CRC                   C0617C64 (3227614308)\n-1B87D3 Compressed Size       00000215 (533)\n-1B87D7 Uncompressed Size     000003B5 (949)\n+1BB464 DATA DESCRIPTOR       08074B50 (134695760)\n+1BB468 CRC                   98DC2CD5 (2564566229)\n+1BB46C Compressed Size       00000553 (1363)\n+1BB470 Uncompressed Size     00001C48 (7240)\n \n-1B87DB LOCAL HEADER #1678    04034B50 (67324752)\n-1B87DF Extract Zip Spec      14 (20) '2.0'\n-1B87E0 Extract OS            00 (0) 'MS-DOS'\n-1B87E1 General Purpose Flag  0808 (2056)\n+1BB474 LOCAL HEADER #1678    04034B50 (67324752)\n+1BB478 Extract Zip Spec      14 (20) '2.0'\n+1BB479 Extract OS            00 (0) 'MS-DOS'\n+1BB47A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B87E3 Compression Method    0008 (8) 'Deflated'\n-1B87E5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B87E9 CRC                   00000000 (0)\n-1B87ED Compressed Size       00000000 (0)\n-1B87F1 Uncompressed Size     00000000 (0)\n-1B87F5 Filename Length       002A (42)\n-1B87F7 Extra Length          0000 (0)\n-1B87F9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BB47C Compression Method    0008 (8) 'Deflated'\n+1BB47E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BB482 CRC                   00000000 (0)\n+1BB486 Compressed Size       00000000 (0)\n+1BB48A Uncompressed Size     00000000 (0)\n+1BB48E Filename Length       001B (27)\n+1BB490 Extra Length          0000 (0)\n+1BB492 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B87F9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BB492: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B8823 PAYLOAD\n+1BB4AD PAYLOAD               XX\n \n-1B8A59 DATA DESCRIPTOR       08074B50 (134695760)\n-1B8A5D CRC                   50E43A38 (1357134392)\n-1B8A61 Compressed Size       00000236 (566)\n-1B8A65 Uncompressed Size     00000420 (1056)\n+1BB4AF DATA DESCRIPTOR       08074B50 (134695760)\n+1BB4B3 CRC                   00000000 (0)\n+1BB4B7 Compressed Size       00000002 (2)\n+1BB4BB Uncompressed Size     00000000 (0)\n \n-1B8A69 LOCAL HEADER #1679    04034B50 (67324752)\n-1B8A6D Extract Zip Spec      14 (20) '2.0'\n-1B8A6E Extract OS            00 (0) 'MS-DOS'\n-1B8A6F General Purpose Flag  0808 (2056)\n+1BB4BF LOCAL HEADER #1679    04034B50 (67324752)\n+1BB4C3 Extract Zip Spec      14 (20) '2.0'\n+1BB4C4 Extract OS            00 (0) 'MS-DOS'\n+1BB4C5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B8A71 Compression Method    0008 (8) 'Deflated'\n-1B8A73 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B8A77 CRC                   00000000 (0)\n-1B8A7B Compressed Size       00000000 (0)\n-1B8A7F Uncompressed Size     00000000 (0)\n-1B8A83 Filename Length       002B (43)\n-1B8A85 Extra Length          0000 (0)\n-1B8A87 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BB4C7 Compression Method    0008 (8) 'Deflated'\n+1BB4C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BB4CD CRC                   00000000 (0)\n+1BB4D1 Compressed Size       00000000 (0)\n+1BB4D5 Uncompressed Size     00000000 (0)\n+1BB4D9 Filename Length       0027 (39)\n+1BB4DB Extra Length          0000 (0)\n+1BB4DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B8A87: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BB4DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B8AB2 PAYLOAD\n+1BB504 PAYLOAD\n \n-1B8CEA DATA DESCRIPTOR       08074B50 (134695760)\n-1B8CEE CRC                   7B632F2C (2070097708)\n-1B8CF2 Compressed Size       00000238 (568)\n-1B8CF6 Uncompressed Size     00000428 (1064)\n+1BB745 DATA DESCRIPTOR       08074B50 (134695760)\n+1BB749 CRC                   B05300B6 (2958229686)\n+1BB74D Compressed Size       00000241 (577)\n+1BB751 Uncompressed Size     00000443 (1091)\n \n-1B8CFA LOCAL HEADER #1680    04034B50 (67324752)\n-1B8CFE Extract Zip Spec      14 (20) '2.0'\n-1B8CFF Extract OS            00 (0) 'MS-DOS'\n-1B8D00 General Purpose Flag  0808 (2056)\n+1BB755 LOCAL HEADER #1680    04034B50 (67324752)\n+1BB759 Extract Zip Spec      14 (20) '2.0'\n+1BB75A Extract OS            00 (0) 'MS-DOS'\n+1BB75B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B8D02 Compression Method    0008 (8) 'Deflated'\n-1B8D04 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B8D08 CRC                   00000000 (0)\n-1B8D0C Compressed Size       00000000 (0)\n-1B8D10 Uncompressed Size     00000000 (0)\n-1B8D14 Filename Length       002C (44)\n-1B8D16 Extra Length          0000 (0)\n-1B8D18 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BB75D Compression Method    0008 (8) 'Deflated'\n+1BB75F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BB763 CRC                   00000000 (0)\n+1BB767 Compressed Size       00000000 (0)\n+1BB76B Uncompressed Size     00000000 (0)\n+1BB76F Filename Length       002E (46)\n+1BB771 Extra Length          0000 (0)\n+1BB773 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B8D18: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BB773: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B8D44 PAYLOAD\n+1BB7A1 PAYLOAD\n \n-1B8F8C DATA DESCRIPTOR       08074B50 (134695760)\n-1B8F90 CRC                   885A72D3 (2287629011)\n-1B8F94 Compressed Size       00000248 (584)\n-1B8F98 Uncompressed Size     00000481 (1153)\n+1BBA59 DATA DESCRIPTOR       08074B50 (134695760)\n+1BBA5D CRC                   4B53EA77 (1263790711)\n+1BBA61 Compressed Size       000002B8 (696)\n+1BBA65 Uncompressed Size     000008BC (2236)\n \n-1B8F9C LOCAL HEADER #1681    04034B50 (67324752)\n-1B8FA0 Extract Zip Spec      14 (20) '2.0'\n-1B8FA1 Extract OS            00 (0) 'MS-DOS'\n-1B8FA2 General Purpose Flag  0808 (2056)\n+1BBA69 LOCAL HEADER #1681    04034B50 (67324752)\n+1BBA6D Extract Zip Spec      14 (20) '2.0'\n+1BBA6E Extract OS            00 (0) 'MS-DOS'\n+1BBA6F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B8FA4 Compression Method    0008 (8) 'Deflated'\n-1B8FA6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B8FAA CRC                   00000000 (0)\n-1B8FAE Compressed Size       00000000 (0)\n-1B8FB2 Uncompressed Size     00000000 (0)\n-1B8FB6 Filename Length       002C (44)\n-1B8FB8 Extra Length          0000 (0)\n-1B8FBA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BBA71 Compression Method    0008 (8) 'Deflated'\n+1BBA73 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BBA77 CRC                   00000000 (0)\n+1BBA7B Compressed Size       00000000 (0)\n+1BBA7F Uncompressed Size     00000000 (0)\n+1BBA83 Filename Length       0025 (37)\n+1BBA85 Extra Length          0000 (0)\n+1BBA87 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B8FBA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BBA87: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B8FE6 PAYLOAD\n+1BBAAC PAYLOAD\n \n-1B91FD DATA DESCRIPTOR       08074B50 (134695760)\n-1B9201 CRC                   419EAEDE (1100918494)\n-1B9205 Compressed Size       00000217 (535)\n-1B9209 Uncompressed Size     000003B7 (951)\n+1BBCBE DATA DESCRIPTOR       08074B50 (134695760)\n+1BBCC2 CRC                   F7117BC1 (4145118145)\n+1BBCC6 Compressed Size       00000212 (530)\n+1BBCCA Uncompressed Size     000003AD (941)\n \n-1B920D LOCAL HEADER #1682    04034B50 (67324752)\n-1B9211 Extract Zip Spec      14 (20) '2.0'\n-1B9212 Extract OS            00 (0) 'MS-DOS'\n-1B9213 General Purpose Flag  0808 (2056)\n+1BBCCE LOCAL HEADER #1682    04034B50 (67324752)\n+1BBCD2 Extract Zip Spec      14 (20) '2.0'\n+1BBCD3 Extract OS            00 (0) 'MS-DOS'\n+1BBCD4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B9215 Compression Method    0008 (8) 'Deflated'\n-1B9217 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B921B CRC                   00000000 (0)\n-1B921F Compressed Size       00000000 (0)\n-1B9223 Uncompressed Size     00000000 (0)\n-1B9227 Filename Length       002D (45)\n-1B9229 Extra Length          0000 (0)\n-1B922B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BBCD6 Compression Method    0008 (8) 'Deflated'\n+1BBCD8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BBCDC CRC                   00000000 (0)\n+1BBCE0 Compressed Size       00000000 (0)\n+1BBCE4 Uncompressed Size     00000000 (0)\n+1BBCE8 Filename Length       0026 (38)\n+1BBCEA Extra Length          0000 (0)\n+1BBCEC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B922B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BBCEC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B9258 PAYLOAD\n+1BBD12 PAYLOAD\n \n-1B949D DATA DESCRIPTOR       08074B50 (134695760)\n-1B94A1 CRC                   76D9341F (1993946143)\n-1B94A5 Compressed Size       00000245 (581)\n-1B94A9 Uncompressed Size     0000045A (1114)\n+1BBF25 DATA DESCRIPTOR       08074B50 (134695760)\n+1BBF29 CRC                   AB71C50D (2876359949)\n+1BBF2D Compressed Size       00000213 (531)\n+1BBF31 Uncompressed Size     000003AF (943)\n \n-1B94AD LOCAL HEADER #1683    04034B50 (67324752)\n-1B94B1 Extract Zip Spec      14 (20) '2.0'\n-1B94B2 Extract OS            00 (0) 'MS-DOS'\n-1B94B3 General Purpose Flag  0808 (2056)\n+1BBF35 LOCAL HEADER #1683    04034B50 (67324752)\n+1BBF39 Extract Zip Spec      14 (20) '2.0'\n+1BBF3A Extract OS            00 (0) 'MS-DOS'\n+1BBF3B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B94B5 Compression Method    0008 (8) 'Deflated'\n-1B94B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B94BB CRC                   00000000 (0)\n-1B94BF Compressed Size       00000000 (0)\n-1B94C3 Uncompressed Size     00000000 (0)\n-1B94C7 Filename Length       002C (44)\n-1B94C9 Extra Length          0000 (0)\n-1B94CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BBF3D Compression Method    0008 (8) 'Deflated'\n+1BBF3F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BBF43 CRC                   00000000 (0)\n+1BBF47 Compressed Size       00000000 (0)\n+1BBF4B Uncompressed Size     00000000 (0)\n+1BBF4F Filename Length       002A (42)\n+1BBF51 Extra Length          0000 (0)\n+1BBF53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B94CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BBF53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B94F7 PAYLOAD\n+1BBF7D PAYLOAD\n \n-1B9740 DATA DESCRIPTOR       08074B50 (134695760)\n-1B9744 CRC                   61ADD6F9 (1638782713)\n-1B9748 Compressed Size       00000249 (585)\n-1B974C Uncompressed Size     00000498 (1176)\n+1BC1F7 DATA DESCRIPTOR       08074B50 (134695760)\n+1BC1FB CRC                   738B9E3F (1938529855)\n+1BC1FF Compressed Size       0000027A (634)\n+1BC203 Uncompressed Size     0000054E (1358)\n \n-1B9750 LOCAL HEADER #1684    04034B50 (67324752)\n-1B9754 Extract Zip Spec      14 (20) '2.0'\n-1B9755 Extract OS            00 (0) 'MS-DOS'\n-1B9756 General Purpose Flag  0808 (2056)\n+1BC207 LOCAL HEADER #1684    04034B50 (67324752)\n+1BC20B Extract Zip Spec      14 (20) '2.0'\n+1BC20C Extract OS            00 (0) 'MS-DOS'\n+1BC20D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B9758 Compression Method    0008 (8) 'Deflated'\n-1B975A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B975E CRC                   00000000 (0)\n-1B9762 Compressed Size       00000000 (0)\n-1B9766 Uncompressed Size     00000000 (0)\n-1B976A Filename Length       002B (43)\n-1B976C Extra Length          0000 (0)\n-1B976E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BC20F Compression Method    0008 (8) 'Deflated'\n+1BC211 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BC215 CRC                   00000000 (0)\n+1BC219 Compressed Size       00000000 (0)\n+1BC21D Uncompressed Size     00000000 (0)\n+1BC221 Filename Length       0031 (49)\n+1BC223 Extra Length          0000 (0)\n+1BC225 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B976E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BC225: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B9799 PAYLOAD\n+1BC256 PAYLOAD\n \n-1B99DF DATA DESCRIPTOR       08074B50 (134695760)\n-1B99E3 CRC                   E87449AF (3899935151)\n-1B99E7 Compressed Size       00000246 (582)\n-1B99EB Uncompressed Size     00000467 (1127)\n+1BC51A DATA DESCRIPTOR       08074B50 (134695760)\n+1BC51E CRC                   302E4037 (808337463)\n+1BC522 Compressed Size       000002C4 (708)\n+1BC526 Uncompressed Size     000007E9 (2025)\n \n-1B99EF LOCAL HEADER #1685    04034B50 (67324752)\n-1B99F3 Extract Zip Spec      14 (20) '2.0'\n-1B99F4 Extract OS            00 (0) 'MS-DOS'\n-1B99F5 General Purpose Flag  0808 (2056)\n+1BC52A LOCAL HEADER #1685    04034B50 (67324752)\n+1BC52E Extract Zip Spec      14 (20) '2.0'\n+1BC52F Extract OS            00 (0) 'MS-DOS'\n+1BC530 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B99F7 Compression Method    0008 (8) 'Deflated'\n-1B99F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B99FD CRC                   00000000 (0)\n-1B9A01 Compressed Size       00000000 (0)\n-1B9A05 Uncompressed Size     00000000 (0)\n-1B9A09 Filename Length       0020 (32)\n-1B9A0B Extra Length          0000 (0)\n-1B9A0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BC532 Compression Method    0008 (8) 'Deflated'\n+1BC534 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BC538 CRC                   00000000 (0)\n+1BC53C Compressed Size       00000000 (0)\n+1BC540 Uncompressed Size     00000000 (0)\n+1BC544 Filename Length       0026 (38)\n+1BC546 Extra Length          0000 (0)\n+1BC548 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B9A0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BC548: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B9A2D PAYLOAD               XX\n+1BC56E PAYLOAD\n \n-1B9A2F DATA DESCRIPTOR       08074B50 (134695760)\n-1B9A33 CRC                   00000000 (0)\n-1B9A37 Compressed Size       00000002 (2)\n-1B9A3B Uncompressed Size     00000000 (0)\n+1BC78D DATA DESCRIPTOR       08074B50 (134695760)\n+1BC791 CRC                   6793ECA6 (1737747622)\n+1BC795 Compressed Size       0000021F (543)\n+1BC799 Uncompressed Size     000003CF (975)\n \n-1B9A3F LOCAL HEADER #1686    04034B50 (67324752)\n-1B9A43 Extract Zip Spec      14 (20) '2.0'\n-1B9A44 Extract OS            00 (0) 'MS-DOS'\n-1B9A45 General Purpose Flag  0808 (2056)\n+1BC79D LOCAL HEADER #1686    04034B50 (67324752)\n+1BC7A1 Extract Zip Spec      14 (20) '2.0'\n+1BC7A2 Extract OS            00 (0) 'MS-DOS'\n+1BC7A3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B9A47 Compression Method    0008 (8) 'Deflated'\n-1B9A49 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B9A4D CRC                   00000000 (0)\n-1B9A51 Compressed Size       00000000 (0)\n-1B9A55 Uncompressed Size     00000000 (0)\n-1B9A59 Filename Length       0028 (40)\n-1B9A5B Extra Length          0000 (0)\n-1B9A5D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BC7A5 Compression Method    0008 (8) 'Deflated'\n+1BC7A7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BC7AB CRC                   00000000 (0)\n+1BC7AF Compressed Size       00000000 (0)\n+1BC7B3 Uncompressed Size     00000000 (0)\n+1BC7B7 Filename Length       002B (43)\n+1BC7B9 Extra Length          0000 (0)\n+1BC7BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B9A5D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BC7BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B9A85 PAYLOAD               XX\n+1BC7E6 PAYLOAD\n \n-1B9A87 DATA DESCRIPTOR       08074B50 (134695760)\n-1B9A8B CRC                   00000000 (0)\n-1B9A8F Compressed Size       00000002 (2)\n-1B9A93 Uncompressed Size     00000000 (0)\n+1BCB69 DATA DESCRIPTOR       08074B50 (134695760)\n+1BCB6D CRC                   39731479 (963843193)\n+1BCB71 Compressed Size       00000383 (899)\n+1BCB75 Uncompressed Size     00000CF9 (3321)\n \n-1B9A97 LOCAL HEADER #1687    04034B50 (67324752)\n-1B9A9B Extract Zip Spec      14 (20) '2.0'\n-1B9A9C Extract OS            00 (0) 'MS-DOS'\n-1B9A9D General Purpose Flag  0808 (2056)\n+1BCB79 LOCAL HEADER #1687    04034B50 (67324752)\n+1BCB7D Extract Zip Spec      14 (20) '2.0'\n+1BCB7E Extract OS            00 (0) 'MS-DOS'\n+1BCB7F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B9A9F Compression Method    0008 (8) 'Deflated'\n-1B9AA1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B9AA5 CRC                   00000000 (0)\n-1B9AA9 Compressed Size       00000000 (0)\n-1B9AAD Uncompressed Size     00000000 (0)\n-1B9AB1 Filename Length       0033 (51)\n-1B9AB3 Extra Length          0000 (0)\n-1B9AB5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BCB81 Compression Method    0008 (8) 'Deflated'\n+1BCB83 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BCB87 CRC                   00000000 (0)\n+1BCB8B Compressed Size       00000000 (0)\n+1BCB8F Uncompressed Size     00000000 (0)\n+1BCB93 Filename Length       0024 (36)\n+1BCB95 Extra Length          0000 (0)\n+1BCB97 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B9AB5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BCB97: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B9AE8 PAYLOAD               XX\n+1BCBBB PAYLOAD               XX\n \n-1B9AEA DATA DESCRIPTOR       08074B50 (134695760)\n-1B9AEE CRC                   00000000 (0)\n-1B9AF2 Compressed Size       00000002 (2)\n-1B9AF6 Uncompressed Size     00000000 (0)\n+1BCBBD DATA DESCRIPTOR       08074B50 (134695760)\n+1BCBC1 CRC                   00000000 (0)\n+1BCBC5 Compressed Size       00000002 (2)\n+1BCBC9 Uncompressed Size     00000000 (0)\n \n-1B9AFA LOCAL HEADER #1688    04034B50 (67324752)\n-1B9AFE Extract Zip Spec      14 (20) '2.0'\n-1B9AFF Extract OS            00 (0) 'MS-DOS'\n-1B9B00 General Purpose Flag  0808 (2056)\n+1BCBCD LOCAL HEADER #1688    04034B50 (67324752)\n+1BCBD1 Extract Zip Spec      14 (20) '2.0'\n+1BCBD2 Extract OS            00 (0) 'MS-DOS'\n+1BCBD3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B9B02 Compression Method    0008 (8) 'Deflated'\n-1B9B04 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B9B08 CRC                   00000000 (0)\n-1B9B0C Compressed Size       00000000 (0)\n-1B9B10 Uncompressed Size     00000000 (0)\n-1B9B14 Filename Length       0043 (67)\n-1B9B16 Extra Length          0000 (0)\n-1B9B18 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BCBD5 Compression Method    0008 (8) 'Deflated'\n+1BCBD7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BCBDB CRC                   00000000 (0)\n+1BCBDF Compressed Size       00000000 (0)\n+1BCBE3 Uncompressed Size     00000000 (0)\n+1BCBE7 Filename Length       0032 (50)\n+1BCBE9 Extra Length          0000 (0)\n+1BCBEB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B9B18: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BCBEB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B9B5B PAYLOAD\n+1BCC1D PAYLOAD\n \n-1B9F76 DATA DESCRIPTOR       08074B50 (134695760)\n-1B9F7A CRC                   CE003164 (3456119140)\n-1B9F7E Compressed Size       0000041B (1051)\n-1B9F82 Uncompressed Size     00000AB3 (2739)\n+1BCE35 DATA DESCRIPTOR       08074B50 (134695760)\n+1BCE39 CRC                   4B6F1882 (1265571970)\n+1BCE3D Compressed Size       00000218 (536)\n+1BCE41 Uncompressed Size     000003C7 (967)\n \n-1B9F86 LOCAL HEADER #1689    04034B50 (67324752)\n-1B9F8A Extract Zip Spec      14 (20) '2.0'\n-1B9F8B Extract OS            00 (0) 'MS-DOS'\n-1B9F8C General Purpose Flag  0808 (2056)\n+1BCE45 LOCAL HEADER #1689    04034B50 (67324752)\n+1BCE49 Extract Zip Spec      14 (20) '2.0'\n+1BCE4A Extract OS            00 (0) 'MS-DOS'\n+1BCE4B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B9F8E Compression Method    0008 (8) 'Deflated'\n-1B9F90 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B9F94 CRC                   00000000 (0)\n-1B9F98 Compressed Size       00000000 (0)\n-1B9F9C Uncompressed Size     00000000 (0)\n-1B9FA0 Filename Length       001C (28)\n-1B9FA2 Extra Length          0000 (0)\n-1B9FA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BCE4D Compression Method    0008 (8) 'Deflated'\n+1BCE4F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BCE53 CRC                   00000000 (0)\n+1BCE57 Compressed Size       00000000 (0)\n+1BCE5B Uncompressed Size     00000000 (0)\n+1BCE5F Filename Length       0039 (57)\n+1BCE61 Extra Length          0000 (0)\n+1BCE63 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B9FA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BCE63: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1B9FC0 PAYLOAD               XX\n+1BCE9C PAYLOAD\n \n-1B9FC2 DATA DESCRIPTOR       08074B50 (134695760)\n-1B9FC6 CRC                   00000000 (0)\n-1B9FCA Compressed Size       00000002 (2)\n-1B9FCE Uncompressed Size     00000000 (0)\n+1BD107 DATA DESCRIPTOR       08074B50 (134695760)\n+1BD10B CRC                   498B4AB9 (1233865401)\n+1BD10F Compressed Size       0000026B (619)\n+1BD113 Uncompressed Size     0000048B (1163)\n \n-1B9FD2 LOCAL HEADER #1690    04034B50 (67324752)\n-1B9FD6 Extract Zip Spec      14 (20) '2.0'\n-1B9FD7 Extract OS            00 (0) 'MS-DOS'\n-1B9FD8 General Purpose Flag  0808 (2056)\n+1BD117 LOCAL HEADER #1690    04034B50 (67324752)\n+1BD11B Extract Zip Spec      14 (20) '2.0'\n+1BD11C Extract OS            00 (0) 'MS-DOS'\n+1BD11D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1B9FDA Compression Method    0008 (8) 'Deflated'\n-1B9FDC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B9FE0 CRC                   00000000 (0)\n-1B9FE4 Compressed Size       00000000 (0)\n-1B9FE8 Uncompressed Size     00000000 (0)\n-1B9FEC Filename Length       002A (42)\n-1B9FEE Extra Length          0000 (0)\n-1B9FF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BD11F Compression Method    0008 (8) 'Deflated'\n+1BD121 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BD125 CRC                   00000000 (0)\n+1BD129 Compressed Size       00000000 (0)\n+1BD12D Uncompressed Size     00000000 (0)\n+1BD131 Filename Length       0037 (55)\n+1BD133 Extra Length          0000 (0)\n+1BD135 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1B9FF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BD135: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BA01A PAYLOAD\n+1BD16C PAYLOAD\n \n-1BA22D DATA DESCRIPTOR       08074B50 (134695760)\n-1BA231 CRC                   DC9E9A97 (3701381783)\n-1BA235 Compressed Size       00000213 (531)\n-1BA239 Uncompressed Size     000003B7 (951)\n+1BD434 DATA DESCRIPTOR       08074B50 (134695760)\n+1BD438 CRC                   DEB81EEE (3736608494)\n+1BD43C Compressed Size       000002C8 (712)\n+1BD440 Uncompressed Size     00000609 (1545)\n \n-1BA23D LOCAL HEADER #1691    04034B50 (67324752)\n-1BA241 Extract Zip Spec      14 (20) '2.0'\n-1BA242 Extract OS            00 (0) 'MS-DOS'\n-1BA243 General Purpose Flag  0808 (2056)\n+1BD444 LOCAL HEADER #1691    04034B50 (67324752)\n+1BD448 Extract Zip Spec      14 (20) '2.0'\n+1BD449 Extract OS            00 (0) 'MS-DOS'\n+1BD44A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BA245 Compression Method    0008 (8) 'Deflated'\n-1BA247 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BA24B CRC                   00000000 (0)\n-1BA24F Compressed Size       00000000 (0)\n-1BA253 Uncompressed Size     00000000 (0)\n-1BA257 Filename Length       001A (26)\n-1BA259 Extra Length          0000 (0)\n-1BA25B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BD44C Compression Method    0008 (8) 'Deflated'\n+1BD44E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BD452 CRC                   00000000 (0)\n+1BD456 Compressed Size       00000000 (0)\n+1BD45A Uncompressed Size     00000000 (0)\n+1BD45E Filename Length       0020 (32)\n+1BD460 Extra Length          0000 (0)\n+1BD462 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BA25B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BD462: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BA275 PAYLOAD               XX\n+1BD482 PAYLOAD               XX\n \n-1BA277 DATA DESCRIPTOR       08074B50 (134695760)\n-1BA27B CRC                   00000000 (0)\n-1BA27F Compressed Size       00000002 (2)\n-1BA283 Uncompressed Size     00000000 (0)\n+1BD484 DATA DESCRIPTOR       08074B50 (134695760)\n+1BD488 CRC                   00000000 (0)\n+1BD48C Compressed Size       00000002 (2)\n+1BD490 Uncompressed Size     00000000 (0)\n \n-1BA287 LOCAL HEADER #1692    04034B50 (67324752)\n-1BA28B Extract Zip Spec      14 (20) '2.0'\n-1BA28C Extract OS            00 (0) 'MS-DOS'\n-1BA28D General Purpose Flag  0808 (2056)\n+1BD494 LOCAL HEADER #1692    04034B50 (67324752)\n+1BD498 Extract Zip Spec      14 (20) '2.0'\n+1BD499 Extract OS            00 (0) 'MS-DOS'\n+1BD49A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BA28F Compression Method    0008 (8) 'Deflated'\n-1BA291 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BA295 CRC                   00000000 (0)\n-1BA299 Compressed Size       00000000 (0)\n-1BA29D Uncompressed Size     00000000 (0)\n-1BA2A1 Filename Length       0026 (38)\n-1BA2A3 Extra Length          0000 (0)\n-1BA2A5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BD49C Compression Method    0008 (8) 'Deflated'\n+1BD49E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BD4A2 CRC                   00000000 (0)\n+1BD4A6 Compressed Size       00000000 (0)\n+1BD4AA Uncompressed Size     00000000 (0)\n+1BD4AE Filename Length       002F (47)\n+1BD4B0 Extra Length          0000 (0)\n+1BD4B2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BA2A5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BD4B2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BA2CB PAYLOAD\n+1BD4E1 PAYLOAD\n \n-1BA5A5 DATA DESCRIPTOR       08074B50 (134695760)\n-1BA5A9 CRC                   D9881C34 (3649575988)\n-1BA5AD Compressed Size       000002DA (730)\n-1BA5B1 Uncompressed Size     0000063F (1599)\n+1BD6F9 DATA DESCRIPTOR       08074B50 (134695760)\n+1BD6FD CRC                   2510FA3B (621869627)\n+1BD701 Compressed Size       00000218 (536)\n+1BD705 Uncompressed Size     000003C1 (961)\n \n-1BA5B5 LOCAL HEADER #1693    04034B50 (67324752)\n-1BA5B9 Extract Zip Spec      14 (20) '2.0'\n-1BA5BA Extract OS            00 (0) 'MS-DOS'\n-1BA5BB General Purpose Flag  0808 (2056)\n+1BD709 LOCAL HEADER #1693    04034B50 (67324752)\n+1BD70D Extract Zip Spec      14 (20) '2.0'\n+1BD70E Extract OS            00 (0) 'MS-DOS'\n+1BD70F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BA5BD Compression Method    0008 (8) 'Deflated'\n-1BA5BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BA5C3 CRC                   00000000 (0)\n-1BA5C7 Compressed Size       00000000 (0)\n-1BA5CB Uncompressed Size     00000000 (0)\n-1BA5CF Filename Length       002D (45)\n-1BA5D1 Extra Length          0000 (0)\n-1BA5D3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BD711 Compression Method    0008 (8) 'Deflated'\n+1BD713 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BD717 CRC                   00000000 (0)\n+1BD71B Compressed Size       00000000 (0)\n+1BD71F Uncompressed Size     00000000 (0)\n+1BD723 Filename Length       001F (31)\n+1BD725 Extra Length          0000 (0)\n+1BD727 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BA5D3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BD727: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BA600 PAYLOAD\n+1BD746 PAYLOAD               XX\n \n-1BA86F DATA DESCRIPTOR       08074B50 (134695760)\n-1BA873 CRC                   29B723AE (699868078)\n-1BA877 Compressed Size       0000026F (623)\n-1BA87B Uncompressed Size     000004D6 (1238)\n+1BD748 DATA DESCRIPTOR       08074B50 (134695760)\n+1BD74C CRC                   00000000 (0)\n+1BD750 Compressed Size       00000002 (2)\n+1BD754 Uncompressed Size     00000000 (0)\n \n-1BA87F LOCAL HEADER #1694    04034B50 (67324752)\n-1BA883 Extract Zip Spec      14 (20) '2.0'\n-1BA884 Extract OS            00 (0) 'MS-DOS'\n-1BA885 General Purpose Flag  0808 (2056)\n+1BD758 LOCAL HEADER #1694    04034B50 (67324752)\n+1BD75C Extract Zip Spec      14 (20) '2.0'\n+1BD75D Extract OS            00 (0) 'MS-DOS'\n+1BD75E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BA887 Compression Method    0008 (8) 'Deflated'\n-1BA889 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BA88D CRC                   00000000 (0)\n-1BA891 Compressed Size       00000000 (0)\n-1BA895 Uncompressed Size     00000000 (0)\n-1BA899 Filename Length       0016 (22)\n-1BA89B Extra Length          0000 (0)\n-1BA89D Filename              'XXXXXXXXXXXXXXXXXXXXXX'\n+1BD760 Compression Method    0008 (8) 'Deflated'\n+1BD762 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BD766 CRC                   00000000 (0)\n+1BD76A Compressed Size       00000000 (0)\n+1BD76E Uncompressed Size     00000000 (0)\n+1BD772 Filename Length       002D (45)\n+1BD774 Extra Length          0000 (0)\n+1BD776 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BA89D: Filename 'XXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BD776: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BA8B3 PAYLOAD               XX\n+1BD7A3 PAYLOAD\n \n-1BA8B5 DATA DESCRIPTOR       08074B50 (134695760)\n-1BA8B9 CRC                   00000000 (0)\n-1BA8BD Compressed Size       00000002 (2)\n-1BA8C1 Uncompressed Size     00000000 (0)\n+1BD9B9 DATA DESCRIPTOR       08074B50 (134695760)\n+1BD9BD CRC                   14A7D3CC (346543052)\n+1BD9C1 Compressed Size       00000216 (534)\n+1BD9C5 Uncompressed Size     000003BD (957)\n \n-1BA8C5 LOCAL HEADER #1695    04034B50 (67324752)\n-1BA8C9 Extract Zip Spec      14 (20) '2.0'\n-1BA8CA Extract OS            00 (0) 'MS-DOS'\n-1BA8CB General Purpose Flag  0808 (2056)\n+1BD9C9 LOCAL HEADER #1695    04034B50 (67324752)\n+1BD9CD Extract Zip Spec      14 (20) '2.0'\n+1BD9CE Extract OS            00 (0) 'MS-DOS'\n+1BD9CF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BA8CD Compression Method    0008 (8) 'Deflated'\n-1BA8CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BA8D3 CRC                   00000000 (0)\n-1BA8D7 Compressed Size       00000000 (0)\n-1BA8DB Uncompressed Size     00000000 (0)\n-1BA8DF Filename Length       001E (30)\n-1BA8E1 Extra Length          0000 (0)\n-1BA8E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BD9D1 Compression Method    0008 (8) 'Deflated'\n+1BD9D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BD9D7 CRC                   00000000 (0)\n+1BD9DB Compressed Size       00000000 (0)\n+1BD9DF Uncompressed Size     00000000 (0)\n+1BD9E3 Filename Length       0022 (34)\n+1BD9E5 Extra Length          0000 (0)\n+1BD9E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BA8E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BD9E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BA901 PAYLOAD               XX\n+1BDA09 PAYLOAD               XX\n \n-1BA903 DATA DESCRIPTOR       08074B50 (134695760)\n-1BA907 CRC                   00000000 (0)\n-1BA90B Compressed Size       00000002 (2)\n-1BA90F Uncompressed Size     00000000 (0)\n+1BDA0B DATA DESCRIPTOR       08074B50 (134695760)\n+1BDA0F CRC                   00000000 (0)\n+1BDA13 Compressed Size       00000002 (2)\n+1BDA17 Uncompressed Size     00000000 (0)\n \n-1BA913 LOCAL HEADER #1696    04034B50 (67324752)\n-1BA917 Extract Zip Spec      14 (20) '2.0'\n-1BA918 Extract OS            00 (0) 'MS-DOS'\n-1BA919 General Purpose Flag  0808 (2056)\n+1BDA1B LOCAL HEADER #1696    04034B50 (67324752)\n+1BDA1F Extract Zip Spec      14 (20) '2.0'\n+1BDA20 Extract OS            00 (0) 'MS-DOS'\n+1BDA21 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BA91B Compression Method    0008 (8) 'Deflated'\n-1BA91D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BA921 CRC                   00000000 (0)\n-1BA925 Compressed Size       00000000 (0)\n-1BA929 Uncompressed Size     00000000 (0)\n-1BA92D Filename Length       002E (46)\n-1BA92F Extra Length          0000 (0)\n-1BA931 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BDA23 Compression Method    0008 (8) 'Deflated'\n+1BDA25 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BDA29 CRC                   00000000 (0)\n+1BDA2D Compressed Size       00000000 (0)\n+1BDA31 Uncompressed Size     00000000 (0)\n+1BDA35 Filename Length       0034 (52)\n+1BDA37 Extra Length          0000 (0)\n+1BDA39 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BA931: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BDA39: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BA95F PAYLOAD\n+1BDA6D PAYLOAD\n \n-1BABD9 DATA DESCRIPTOR       08074B50 (134695760)\n-1BABDD CRC                   496AA8AF (1231726767)\n-1BABE1 Compressed Size       0000027A (634)\n-1BABE5 Uncompressed Size     00000523 (1315)\n+1BDCEC DATA DESCRIPTOR       08074B50 (134695760)\n+1BDCF0 CRC                   1652AFBA (374517690)\n+1BDCF4 Compressed Size       0000027F (639)\n+1BDCF8 Uncompressed Size     00000538 (1336)\n \n-1BABE9 LOCAL HEADER #1697    04034B50 (67324752)\n-1BABED Extract Zip Spec      14 (20) '2.0'\n-1BABEE Extract OS            00 (0) 'MS-DOS'\n-1BABEF General Purpose Flag  0808 (2056)\n+1BDCFC LOCAL HEADER #1697    04034B50 (67324752)\n+1BDD00 Extract Zip Spec      14 (20) '2.0'\n+1BDD01 Extract OS            00 (0) 'MS-DOS'\n+1BDD02 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BABF1 Compression Method    0008 (8) 'Deflated'\n-1BABF3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BABF7 CRC                   00000000 (0)\n-1BABFB Compressed Size       00000000 (0)\n-1BABFF Uncompressed Size     00000000 (0)\n-1BAC03 Filename Length       0031 (49)\n-1BAC05 Extra Length          0000 (0)\n-1BAC07 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BDD04 Compression Method    0008 (8) 'Deflated'\n+1BDD06 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BDD0A CRC                   00000000 (0)\n+1BDD0E Compressed Size       00000000 (0)\n+1BDD12 Uncompressed Size     00000000 (0)\n+1BDD16 Filename Length       0025 (37)\n+1BDD18 Extra Length          0000 (0)\n+1BDD1A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BAC07: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BDD1A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BAC38 PAYLOAD\n+1BDD3F PAYLOAD               XX\n \n-1BAECD DATA DESCRIPTOR       08074B50 (134695760)\n-1BAED1 CRC                   52213B11 (1377909521)\n-1BAED5 Compressed Size       00000295 (661)\n-1BAED9 Uncompressed Size     000005A6 (1446)\n+1BDD41 DATA DESCRIPTOR       08074B50 (134695760)\n+1BDD45 CRC                   00000000 (0)\n+1BDD49 Compressed Size       00000002 (2)\n+1BDD4D Uncompressed Size     00000000 (0)\n \n-1BAEDD LOCAL HEADER #1698    04034B50 (67324752)\n-1BAEE1 Extract Zip Spec      14 (20) '2.0'\n-1BAEE2 Extract OS            00 (0) 'MS-DOS'\n-1BAEE3 General Purpose Flag  0808 (2056)\n+1BDD51 LOCAL HEADER #1698    04034B50 (67324752)\n+1BDD55 Extract Zip Spec      14 (20) '2.0'\n+1BDD56 Extract OS            00 (0) 'MS-DOS'\n+1BDD57 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BAEE5 Compression Method    0008 (8) 'Deflated'\n-1BAEE7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BAEEB CRC                   00000000 (0)\n-1BAEEF Compressed Size       00000000 (0)\n-1BAEF3 Uncompressed Size     00000000 (0)\n-1BAEF7 Filename Length       001B (27)\n-1BAEF9 Extra Length          0000 (0)\n-1BAEFB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BDD59 Compression Method    0008 (8) 'Deflated'\n+1BDD5B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BDD5F CRC                   00000000 (0)\n+1BDD63 Compressed Size       00000000 (0)\n+1BDD67 Uncompressed Size     00000000 (0)\n+1BDD6B Filename Length       003E (62)\n+1BDD6D Extra Length          0000 (0)\n+1BDD6F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BAEFB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BDD6F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BAF16 PAYLOAD               XX\n+1BDDAD PAYLOAD\n \n-1BAF18 DATA DESCRIPTOR       08074B50 (134695760)\n-1BAF1C CRC                   00000000 (0)\n-1BAF20 Compressed Size       00000002 (2)\n-1BAF24 Uncompressed Size     00000000 (0)\n+1BDFCD DATA DESCRIPTOR       08074B50 (134695760)\n+1BDFD1 CRC                   15451137 (356847927)\n+1BDFD5 Compressed Size       00000220 (544)\n+1BDFD9 Uncompressed Size     000003DF (991)\n \n-1BAF28 LOCAL HEADER #1699    04034B50 (67324752)\n-1BAF2C Extract Zip Spec      14 (20) '2.0'\n-1BAF2D Extract OS            00 (0) 'MS-DOS'\n-1BAF2E General Purpose Flag  0808 (2056)\n+1BDFDD LOCAL HEADER #1699    04034B50 (67324752)\n+1BDFE1 Extract Zip Spec      14 (20) '2.0'\n+1BDFE2 Extract OS            00 (0) 'MS-DOS'\n+1BDFE3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BAF30 Compression Method    0008 (8) 'Deflated'\n-1BAF32 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BAF36 CRC                   00000000 (0)\n-1BAF3A Compressed Size       00000000 (0)\n-1BAF3E Uncompressed Size     00000000 (0)\n-1BAF42 Filename Length       002E (46)\n-1BAF44 Extra Length          0000 (0)\n-1BAF46 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BDFE5 Compression Method    0008 (8) 'Deflated'\n+1BDFE7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BDFEB CRC                   00000000 (0)\n+1BDFEF Compressed Size       00000000 (0)\n+1BDFF3 Uncompressed Size     00000000 (0)\n+1BDFF7 Filename Length       0023 (35)\n+1BDFF9 Extra Length          0000 (0)\n+1BDFFB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BAF46: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BDFFB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BAF74 PAYLOAD\n+1BE01E PAYLOAD\n \n-1BB27D DATA DESCRIPTOR       08074B50 (134695760)\n-1BB281 CRC                   BB714DA3 (3144764835)\n-1BB285 Compressed Size       00000309 (777)\n-1BB289 Uncompressed Size     00000804 (2052)\n+1BE2BD DATA DESCRIPTOR       08074B50 (134695760)\n+1BE2C1 CRC                   5AF92E3B (1526279739)\n+1BE2C5 Compressed Size       0000029F (671)\n+1BE2C9 Uncompressed Size     000005DD (1501)\n \n-1BB28D LOCAL HEADER #1700    04034B50 (67324752)\n-1BB291 Extract Zip Spec      14 (20) '2.0'\n-1BB292 Extract OS            00 (0) 'MS-DOS'\n-1BB293 General Purpose Flag  0808 (2056)\n+1BE2CD LOCAL HEADER #1700    04034B50 (67324752)\n+1BE2D1 Extract Zip Spec      14 (20) '2.0'\n+1BE2D2 Extract OS            00 (0) 'MS-DOS'\n+1BE2D3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BB295 Compression Method    0008 (8) 'Deflated'\n-1BB297 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BB29B CRC                   00000000 (0)\n-1BB29F Compressed Size       00000000 (0)\n-1BB2A3 Uncompressed Size     00000000 (0)\n-1BB2A7 Filename Length       0028 (40)\n-1BB2A9 Extra Length          0000 (0)\n-1BB2AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BE2D5 Compression Method    0008 (8) 'Deflated'\n+1BE2D7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BE2DB CRC                   00000000 (0)\n+1BE2DF Compressed Size       00000000 (0)\n+1BE2E3 Uncompressed Size     00000000 (0)\n+1BE2E7 Filename Length       0021 (33)\n+1BE2E9 Extra Length          0000 (0)\n+1BE2EB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BB2AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BE2EB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BB2D3 PAYLOAD\n+1BE30C PAYLOAD\n \n-1BB60C DATA DESCRIPTOR       08074B50 (134695760)\n-1BB610 CRC                   D76B4438 (3614131256)\n-1BB614 Compressed Size       00000339 (825)\n-1BB618 Uncompressed Size     000009FC (2556)\n+1BE5BF DATA DESCRIPTOR       08074B50 (134695760)\n+1BE5C3 CRC                   4813D623 (1209259555)\n+1BE5C7 Compressed Size       000002B3 (691)\n+1BE5CB Uncompressed Size     000005DD (1501)\n \n-1BB61C LOCAL HEADER #1701    04034B50 (67324752)\n-1BB620 Extract Zip Spec      14 (20) '2.0'\n-1BB621 Extract OS            00 (0) 'MS-DOS'\n-1BB622 General Purpose Flag  0808 (2056)\n+1BE5CF LOCAL HEADER #1701    04034B50 (67324752)\n+1BE5D3 Extract Zip Spec      14 (20) '2.0'\n+1BE5D4 Extract OS            00 (0) 'MS-DOS'\n+1BE5D5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BB624 Compression Method    0008 (8) 'Deflated'\n-1BB626 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BB62A CRC                   00000000 (0)\n-1BB62E Compressed Size       00000000 (0)\n-1BB632 Uncompressed Size     00000000 (0)\n-1BB636 Filename Length       002F (47)\n-1BB638 Extra Length          0000 (0)\n-1BB63A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BE5D7 Compression Method    0008 (8) 'Deflated'\n+1BE5D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BE5DD CRC                   00000000 (0)\n+1BE5E1 Compressed Size       00000000 (0)\n+1BE5E5 Uncompressed Size     00000000 (0)\n+1BE5E9 Filename Length       0025 (37)\n+1BE5EB Extra Length          0000 (0)\n+1BE5ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BB63A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BE5ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BB669 PAYLOAD\n+1BE612 PAYLOAD\n \n-1BB8D9 DATA DESCRIPTOR       08074B50 (134695760)\n-1BB8DD CRC                   C61A4C11 (3323612177)\n-1BB8E1 Compressed Size       00000270 (624)\n-1BB8E5 Uncompressed Size     000004E1 (1249)\n+1BEA49 DATA DESCRIPTOR       08074B50 (134695760)\n+1BEA4D CRC                   57D1F11D (1473376541)\n+1BEA51 Compressed Size       00000437 (1079)\n+1BEA55 Uncompressed Size     000012A9 (4777)\n \n-1BB8E9 LOCAL HEADER #1702    04034B50 (67324752)\n-1BB8ED Extract Zip Spec      14 (20) '2.0'\n-1BB8EE Extract OS            00 (0) 'MS-DOS'\n-1BB8EF General Purpose Flag  0808 (2056)\n+1BEA59 LOCAL HEADER #1702    04034B50 (67324752)\n+1BEA5D Extract Zip Spec      14 (20) '2.0'\n+1BEA5E Extract OS            00 (0) 'MS-DOS'\n+1BEA5F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BB8F1 Compression Method    0008 (8) 'Deflated'\n-1BB8F3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BB8F7 CRC                   00000000 (0)\n-1BB8FB Compressed Size       00000000 (0)\n-1BB8FF Uncompressed Size     00000000 (0)\n-1BB903 Filename Length       0023 (35)\n-1BB905 Extra Length          0000 (0)\n-1BB907 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BEA61 Compression Method    0008 (8) 'Deflated'\n+1BEA63 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BEA67 CRC                   00000000 (0)\n+1BEA6B Compressed Size       00000000 (0)\n+1BEA6F Uncompressed Size     00000000 (0)\n+1BEA73 Filename Length       0022 (34)\n+1BEA75 Extra Length          0000 (0)\n+1BEA77 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BB907: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BEA77: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BB92A PAYLOAD               XX\n+1BEA99 PAYLOAD\n \n-1BB92C DATA DESCRIPTOR       08074B50 (134695760)\n-1BB930 CRC                   00000000 (0)\n-1BB934 Compressed Size       00000002 (2)\n-1BB938 Uncompressed Size     00000000 (0)\n+1BEDFA DATA DESCRIPTOR       08074B50 (134695760)\n+1BEDFE CRC                   3FF357FC (1072912380)\n+1BEE02 Compressed Size       00000361 (865)\n+1BEE06 Uncompressed Size     00000981 (2433)\n \n-1BB93C LOCAL HEADER #1703    04034B50 (67324752)\n-1BB940 Extract Zip Spec      14 (20) '2.0'\n-1BB941 Extract OS            00 (0) 'MS-DOS'\n-1BB942 General Purpose Flag  0808 (2056)\n+1BEE0A LOCAL HEADER #1703    04034B50 (67324752)\n+1BEE0E Extract Zip Spec      14 (20) '2.0'\n+1BEE0F Extract OS            00 (0) 'MS-DOS'\n+1BEE10 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BB944 Compression Method    0008 (8) 'Deflated'\n-1BB946 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BB94A CRC                   00000000 (0)\n-1BB94E Compressed Size       00000000 (0)\n-1BB952 Uncompressed Size     00000000 (0)\n-1BB956 Filename Length       0038 (56)\n-1BB958 Extra Length          0000 (0)\n-1BB95A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BEE12 Compression Method    0008 (8) 'Deflated'\n+1BEE14 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BEE18 CRC                   00000000 (0)\n+1BEE1C Compressed Size       00000000 (0)\n+1BEE20 Uncompressed Size     00000000 (0)\n+1BEE24 Filename Length       002A (42)\n+1BEE26 Extra Length          0000 (0)\n+1BEE28 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BB95A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BEE28: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BB992 PAYLOAD\n+1BEE52 PAYLOAD\n \n-1BBEC2 DATA DESCRIPTOR       08074B50 (134695760)\n-1BBEC6 CRC                   1991942D (428971053)\n-1BBECA Compressed Size       00000530 (1328)\n-1BBECE Uncompressed Size     0000184C (6220)\n+1BF0F2 DATA DESCRIPTOR       08074B50 (134695760)\n+1BF0F6 CRC                   A7B8FF5F (2813919071)\n+1BF0FA Compressed Size       000002A0 (672)\n+1BF0FE Uncompressed Size     0000060D (1549)\n \n-1BBED2 LOCAL HEADER #1704    04034B50 (67324752)\n-1BBED6 Extract Zip Spec      14 (20) '2.0'\n-1BBED7 Extract OS            00 (0) 'MS-DOS'\n-1BBED8 General Purpose Flag  0808 (2056)\n+1BF102 LOCAL HEADER #1704    04034B50 (67324752)\n+1BF106 Extract Zip Spec      14 (20) '2.0'\n+1BF107 Extract OS            00 (0) 'MS-DOS'\n+1BF108 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BBEDA Compression Method    0008 (8) 'Deflated'\n-1BBEDC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BBEE0 CRC                   00000000 (0)\n-1BBEE4 Compressed Size       00000000 (0)\n-1BBEE8 Uncompressed Size     00000000 (0)\n-1BBEEC Filename Length       003F (63)\n-1BBEEE Extra Length          0000 (0)\n-1BBEF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BF10A Compression Method    0008 (8) 'Deflated'\n+1BF10C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BF110 CRC                   00000000 (0)\n+1BF114 Compressed Size       00000000 (0)\n+1BF118 Uncompressed Size     00000000 (0)\n+1BF11C Filename Length       0023 (35)\n+1BF11E Extra Length          0000 (0)\n+1BF120 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BBEF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BF120: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BBF2F PAYLOAD\n+1BF143 PAYLOAD\n \n-1BC1B8 DATA DESCRIPTOR       08074B50 (134695760)\n-1BC1BC CRC                   6C394AEE (1815694062)\n-1BC1C0 Compressed Size       00000289 (649)\n-1BC1C4 Uncompressed Size     00000530 (1328)\n+1BF437 DATA DESCRIPTOR       08074B50 (134695760)\n+1BF43B CRC                   BE8E4754 (3196995412)\n+1BF43F Compressed Size       000002F4 (756)\n+1BF443 Uncompressed Size     000006DD (1757)\n \n-1BC1C8 LOCAL HEADER #1705    04034B50 (67324752)\n-1BC1CC Extract Zip Spec      14 (20) '2.0'\n-1BC1CD Extract OS            00 (0) 'MS-DOS'\n-1BC1CE General Purpose Flag  0808 (2056)\n+1BF447 LOCAL HEADER #1705    04034B50 (67324752)\n+1BF44B Extract Zip Spec      14 (20) '2.0'\n+1BF44C Extract OS            00 (0) 'MS-DOS'\n+1BF44D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BC1D0 Compression Method    0008 (8) 'Deflated'\n-1BC1D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BC1D6 CRC                   00000000 (0)\n-1BC1DA Compressed Size       00000000 (0)\n-1BC1DE Uncompressed Size     00000000 (0)\n-1BC1E2 Filename Length       0038 (56)\n-1BC1E4 Extra Length          0000 (0)\n-1BC1E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BF44F Compression Method    0008 (8) 'Deflated'\n+1BF451 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BF455 CRC                   00000000 (0)\n+1BF459 Compressed Size       00000000 (0)\n+1BF45D Uncompressed Size     00000000 (0)\n+1BF461 Filename Length       0027 (39)\n+1BF463 Extra Length          0000 (0)\n+1BF465 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BC1E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BF465: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BC21E PAYLOAD\n+1BF48C PAYLOAD\n \n-1BC763 DATA DESCRIPTOR       08074B50 (134695760)\n-1BC767 CRC                   03FD65CD (66938317)\n-1BC76B Compressed Size       00000545 (1349)\n-1BC76F Uncompressed Size     00001B8B (7051)\n+1BF774 DATA DESCRIPTOR       08074B50 (134695760)\n+1BF778 CRC                   F08690D4 (4035350740)\n+1BF77C Compressed Size       000002E8 (744)\n+1BF780 Uncompressed Size     000007FC (2044)\n \n-1BC773 LOCAL HEADER #1706    04034B50 (67324752)\n-1BC777 Extract Zip Spec      14 (20) '2.0'\n-1BC778 Extract OS            00 (0) 'MS-DOS'\n-1BC779 General Purpose Flag  0808 (2056)\n+1BF784 LOCAL HEADER #1706    04034B50 (67324752)\n+1BF788 Extract Zip Spec      14 (20) '2.0'\n+1BF789 Extract OS            00 (0) 'MS-DOS'\n+1BF78A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BC77B Compression Method    0008 (8) 'Deflated'\n-1BC77D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BC781 CRC                   00000000 (0)\n-1BC785 Compressed Size       00000000 (0)\n-1BC789 Uncompressed Size     00000000 (0)\n-1BC78D Filename Length       001B (27)\n-1BC78F Extra Length          0000 (0)\n-1BC791 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BF78C Compression Method    0008 (8) 'Deflated'\n+1BF78E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BF792 CRC                   00000000 (0)\n+1BF796 Compressed Size       00000000 (0)\n+1BF79A Uncompressed Size     00000000 (0)\n+1BF79E Filename Length       0021 (33)\n+1BF7A0 Extra Length          0000 (0)\n+1BF7A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BC791: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BF7A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BC7AC PAYLOAD               XX\n+1BF7C3 PAYLOAD\n \n-1BC7AE DATA DESCRIPTOR       08074B50 (134695760)\n-1BC7B2 CRC                   00000000 (0)\n-1BC7B6 Compressed Size       00000002 (2)\n-1BC7BA Uncompressed Size     00000000 (0)\n+1BFC5C DATA DESCRIPTOR       08074B50 (134695760)\n+1BFC60 CRC                   EE092214 (3993575956)\n+1BFC64 Compressed Size       00000499 (1177)\n+1BFC68 Uncompressed Size     0000136E (4974)\n \n-1BC7BE LOCAL HEADER #1707    04034B50 (67324752)\n-1BC7C2 Extract Zip Spec      14 (20) '2.0'\n-1BC7C3 Extract OS            00 (0) 'MS-DOS'\n-1BC7C4 General Purpose Flag  0808 (2056)\n+1BFC6C LOCAL HEADER #1707    04034B50 (67324752)\n+1BFC70 Extract Zip Spec      14 (20) '2.0'\n+1BFC71 Extract OS            00 (0) 'MS-DOS'\n+1BFC72 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BC7C6 Compression Method    0008 (8) 'Deflated'\n-1BC7C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BC7CC CRC                   00000000 (0)\n-1BC7D0 Compressed Size       00000000 (0)\n-1BC7D4 Uncompressed Size     00000000 (0)\n-1BC7D8 Filename Length       0027 (39)\n-1BC7DA Extra Length          0000 (0)\n-1BC7DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1BFC74 Compression Method    0008 (8) 'Deflated'\n+1BFC76 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1BFC7A CRC                   00000000 (0)\n+1BFC7E Compressed Size       00000000 (0)\n+1BFC82 Uncompressed Size     00000000 (0)\n+1BFC86 Filename Length       0025 (37)\n+1BFC88 Extra Length          0000 (0)\n+1BFC8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BC7DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1BFC8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BC803 PAYLOAD\n+1BFCAF PAYLOAD\n \n-1BCA44 DATA DESCRIPTOR       08074B50 (134695760)\n-1BCA48 CRC                   B05300B6 (2958229686)\n-1BCA4C Compressed Size       00000241 (577)\n-1BCA50 Uncompressed Size     00000443 (1091)\n+1C0693 DATA DESCRIPTOR       08074B50 (134695760)\n+1C0697 CRC                   EBE35D6F (3957546351)\n+1C069B Compressed Size       000009E4 (2532)\n+1C069F Uncompressed Size     00002D81 (11649)\n \n-1BCA54 LOCAL HEADER #1708    04034B50 (67324752)\n-1BCA58 Extract Zip Spec      14 (20) '2.0'\n-1BCA59 Extract OS            00 (0) 'MS-DOS'\n-1BCA5A General Purpose Flag  0808 (2056)\n+1C06A3 LOCAL HEADER #1708    04034B50 (67324752)\n+1C06A7 Extract Zip Spec      14 (20) '2.0'\n+1C06A8 Extract OS            00 (0) 'MS-DOS'\n+1C06A9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BCA5C Compression Method    0008 (8) 'Deflated'\n-1BCA5E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BCA62 CRC                   00000000 (0)\n-1BCA66 Compressed Size       00000000 (0)\n-1BCA6A Uncompressed Size     00000000 (0)\n-1BCA6E Filename Length       002E (46)\n-1BCA70 Extra Length          0000 (0)\n-1BCA72 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C06AB Compression Method    0008 (8) 'Deflated'\n+1C06AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C06B1 CRC                   00000000 (0)\n+1C06B5 Compressed Size       00000000 (0)\n+1C06B9 Uncompressed Size     00000000 (0)\n+1C06BD Filename Length       0027 (39)\n+1C06BF Extra Length          0000 (0)\n+1C06C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BCA72: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C06C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BCAA0 PAYLOAD\n+1C06E8 PAYLOAD\n \n-1BCD58 DATA DESCRIPTOR       08074B50 (134695760)\n-1BCD5C CRC                   4B53EA77 (1263790711)\n-1BCD60 Compressed Size       000002B8 (696)\n-1BCD64 Uncompressed Size     000008BC (2236)\n+1C095A DATA DESCRIPTOR       08074B50 (134695760)\n+1C095E CRC                   FF29698F (4280904079)\n+1C0962 Compressed Size       00000272 (626)\n+1C0966 Uncompressed Size     00000659 (1625)\n \n-1BCD68 LOCAL HEADER #1709    04034B50 (67324752)\n-1BCD6C Extract Zip Spec      14 (20) '2.0'\n-1BCD6D Extract OS            00 (0) 'MS-DOS'\n-1BCD6E General Purpose Flag  0808 (2056)\n+1C096A LOCAL HEADER #1709    04034B50 (67324752)\n+1C096E Extract Zip Spec      14 (20) '2.0'\n+1C096F Extract OS            00 (0) 'MS-DOS'\n+1C0970 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BCD70 Compression Method    0008 (8) 'Deflated'\n-1BCD72 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BCD76 CRC                   00000000 (0)\n-1BCD7A Compressed Size       00000000 (0)\n-1BCD7E Uncompressed Size     00000000 (0)\n-1BCD82 Filename Length       0025 (37)\n-1BCD84 Extra Length          0000 (0)\n-1BCD86 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C0972 Compression Method    0008 (8) 'Deflated'\n+1C0974 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C0978 CRC                   00000000 (0)\n+1C097C Compressed Size       00000000 (0)\n+1C0980 Uncompressed Size     00000000 (0)\n+1C0984 Filename Length       0028 (40)\n+1C0986 Extra Length          0000 (0)\n+1C0988 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BCD86: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C0988: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BCDAB PAYLOAD\n+1C09B0 PAYLOAD\n \n-1BCFBD DATA DESCRIPTOR       08074B50 (134695760)\n-1BCFC1 CRC                   F7117BC1 (4145118145)\n-1BCFC5 Compressed Size       00000212 (530)\n-1BCFC9 Uncompressed Size     000003AD (941)\n+1C1006 DATA DESCRIPTOR       08074B50 (134695760)\n+1C100A CRC                   B185BD67 (2978332007)\n+1C100E Compressed Size       00000656 (1622)\n+1C1012 Uncompressed Size     00001D1D (7453)\n \n-1BCFCD LOCAL HEADER #1710    04034B50 (67324752)\n-1BCFD1 Extract Zip Spec      14 (20) '2.0'\n-1BCFD2 Extract OS            00 (0) 'MS-DOS'\n-1BCFD3 General Purpose Flag  0808 (2056)\n+1C1016 LOCAL HEADER #1710    04034B50 (67324752)\n+1C101A Extract Zip Spec      14 (20) '2.0'\n+1C101B Extract OS            00 (0) 'MS-DOS'\n+1C101C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BCFD5 Compression Method    0008 (8) 'Deflated'\n-1BCFD7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BCFDB CRC                   00000000 (0)\n-1BCFDF Compressed Size       00000000 (0)\n-1BCFE3 Uncompressed Size     00000000 (0)\n-1BCFE7 Filename Length       0026 (38)\n-1BCFE9 Extra Length          0000 (0)\n-1BCFEB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C101E Compression Method    0008 (8) 'Deflated'\n+1C1020 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C1024 CRC                   00000000 (0)\n+1C1028 Compressed Size       00000000 (0)\n+1C102C Uncompressed Size     00000000 (0)\n+1C1030 Filename Length       001E (30)\n+1C1032 Extra Length          0000 (0)\n+1C1034 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BCFEB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C1034: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BD011 PAYLOAD\n+1C1052 PAYLOAD               XX\n \n-1BD224 DATA DESCRIPTOR       08074B50 (134695760)\n-1BD228 CRC                   AB71C50D (2876359949)\n-1BD22C Compressed Size       00000213 (531)\n-1BD230 Uncompressed Size     000003AF (943)\n+1C1054 DATA DESCRIPTOR       08074B50 (134695760)\n+1C1058 CRC                   00000000 (0)\n+1C105C Compressed Size       00000002 (2)\n+1C1060 Uncompressed Size     00000000 (0)\n \n-1BD234 LOCAL HEADER #1711    04034B50 (67324752)\n-1BD238 Extract Zip Spec      14 (20) '2.0'\n-1BD239 Extract OS            00 (0) 'MS-DOS'\n-1BD23A General Purpose Flag  0808 (2056)\n+1C1064 LOCAL HEADER #1711    04034B50 (67324752)\n+1C1068 Extract Zip Spec      14 (20) '2.0'\n+1C1069 Extract OS            00 (0) 'MS-DOS'\n+1C106A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BD23C Compression Method    0008 (8) 'Deflated'\n-1BD23E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BD242 CRC                   00000000 (0)\n-1BD246 Compressed Size       00000000 (0)\n-1BD24A Uncompressed Size     00000000 (0)\n-1BD24E Filename Length       002A (42)\n-1BD250 Extra Length          0000 (0)\n-1BD252 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C106C Compression Method    0008 (8) 'Deflated'\n+1C106E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C1072 CRC                   00000000 (0)\n+1C1076 Compressed Size       00000000 (0)\n+1C107A Uncompressed Size     00000000 (0)\n+1C107E Filename Length       002A (42)\n+1C1080 Extra Length          0000 (0)\n+1C1082 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BD252: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C1082: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BD27C PAYLOAD\n+1C10AC PAYLOAD\n \n-1BD4F6 DATA DESCRIPTOR       08074B50 (134695760)\n-1BD4FA CRC                   738B9E3F (1938529855)\n-1BD4FE Compressed Size       0000027A (634)\n-1BD502 Uncompressed Size     0000054E (1358)\n+1C1334 DATA DESCRIPTOR       08074B50 (134695760)\n+1C1338 CRC                   54F4EBB3 (1425337267)\n+1C133C Compressed Size       00000288 (648)\n+1C1340 Uncompressed Size     00000554 (1364)\n \n-1BD506 LOCAL HEADER #1712    04034B50 (67324752)\n-1BD50A Extract Zip Spec      14 (20) '2.0'\n-1BD50B Extract OS            00 (0) 'MS-DOS'\n-1BD50C General Purpose Flag  0808 (2056)\n+1C1344 LOCAL HEADER #1712    04034B50 (67324752)\n+1C1348 Extract Zip Spec      14 (20) '2.0'\n+1C1349 Extract OS            00 (0) 'MS-DOS'\n+1C134A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BD50E Compression Method    0008 (8) 'Deflated'\n-1BD510 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BD514 CRC                   00000000 (0)\n-1BD518 Compressed Size       00000000 (0)\n-1BD51C Uncompressed Size     00000000 (0)\n-1BD520 Filename Length       0031 (49)\n-1BD522 Extra Length          0000 (0)\n-1BD524 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C134C Compression Method    0008 (8) 'Deflated'\n+1C134E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C1352 CRC                   00000000 (0)\n+1C1356 Compressed Size       00000000 (0)\n+1C135A Uncompressed Size     00000000 (0)\n+1C135E Filename Length       0036 (54)\n+1C1360 Extra Length          0000 (0)\n+1C1362 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BD524: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C1362: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BD555 PAYLOAD\n+1C1398 PAYLOAD\n \n-1BD812 DATA DESCRIPTOR       08074B50 (134695760)\n-1BD816 CRC                   DF216F41 (3743510337)\n-1BD81A Compressed Size       000002BD (701)\n-1BD81E Uncompressed Size     000007B3 (1971)\n+1C15B9 DATA DESCRIPTOR       08074B50 (134695760)\n+1C15BD CRC                   22C3EE20 (583265824)\n+1C15C1 Compressed Size       00000221 (545)\n+1C15C5 Uncompressed Size     000003CD (973)\n \n-1BD822 LOCAL HEADER #1713    04034B50 (67324752)\n-1BD826 Extract Zip Spec      14 (20) '2.0'\n-1BD827 Extract OS            00 (0) 'MS-DOS'\n-1BD828 General Purpose Flag  0808 (2056)\n+1C15C9 LOCAL HEADER #1713    04034B50 (67324752)\n+1C15CD Extract Zip Spec      14 (20) '2.0'\n+1C15CE Extract OS            00 (0) 'MS-DOS'\n+1C15CF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BD82A Compression Method    0008 (8) 'Deflated'\n-1BD82C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BD830 CRC                   00000000 (0)\n-1BD834 Compressed Size       00000000 (0)\n-1BD838 Uncompressed Size     00000000 (0)\n-1BD83C Filename Length       0026 (38)\n-1BD83E Extra Length          0000 (0)\n-1BD840 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C15D1 Compression Method    0008 (8) 'Deflated'\n+1C15D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C15D7 CRC                   00000000 (0)\n+1C15DB Compressed Size       00000000 (0)\n+1C15DF Uncompressed Size     00000000 (0)\n+1C15E3 Filename Length       002C (44)\n+1C15E5 Extra Length          0000 (0)\n+1C15E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BD840: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C15E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BD866 PAYLOAD\n+1C1613 PAYLOAD\n \n-1BDA7C DATA DESCRIPTOR       08074B50 (134695760)\n-1BDA80 CRC                   7ECEF1EF (2127491567)\n-1BDA84 Compressed Size       00000216 (534)\n-1BDA88 Uncompressed Size     000003B8 (952)\n+1C1911 DATA DESCRIPTOR       08074B50 (134695760)\n+1C1915 CRC                   0569C6BD (90818237)\n+1C1919 Compressed Size       000002FE (766)\n+1C191D Uncompressed Size     000006AE (1710)\n \n-1BDA8C LOCAL HEADER #1714    04034B50 (67324752)\n-1BDA90 Extract Zip Spec      14 (20) '2.0'\n-1BDA91 Extract OS            00 (0) 'MS-DOS'\n-1BDA92 General Purpose Flag  0808 (2056)\n+1C1921 LOCAL HEADER #1714    04034B50 (67324752)\n+1C1925 Extract Zip Spec      14 (20) '2.0'\n+1C1926 Extract OS            00 (0) 'MS-DOS'\n+1C1927 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BDA94 Compression Method    0008 (8) 'Deflated'\n-1BDA96 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BDA9A CRC                   00000000 (0)\n-1BDA9E Compressed Size       00000000 (0)\n-1BDAA2 Uncompressed Size     00000000 (0)\n-1BDAA6 Filename Length       002B (43)\n-1BDAA8 Extra Length          0000 (0)\n-1BDAAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C1929 Compression Method    0008 (8) 'Deflated'\n+1C192B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C192F CRC                   00000000 (0)\n+1C1933 Compressed Size       00000000 (0)\n+1C1937 Uncompressed Size     00000000 (0)\n+1C193B Filename Length       002E (46)\n+1C193D Extra Length          0000 (0)\n+1C193F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BDAAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C193F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BDAD5 PAYLOAD\n+1C196D PAYLOAD\n \n-1BDE4A DATA DESCRIPTOR       08074B50 (134695760)\n-1BDE4E CRC                   43AA3D45 (1135230277)\n-1BDE52 Compressed Size       00000375 (885)\n-1BDE56 Uncompressed Size     00000CA7 (3239)\n+1C1C87 DATA DESCRIPTOR       08074B50 (134695760)\n+1C1C8B CRC                   E0114FF9 (3759230969)\n+1C1C8F Compressed Size       0000031A (794)\n+1C1C93 Uncompressed Size     000007CF (1999)\n \n-1BDE5A LOCAL HEADER #1715    04034B50 (67324752)\n-1BDE5E Extract Zip Spec      14 (20) '2.0'\n-1BDE5F Extract OS            00 (0) 'MS-DOS'\n-1BDE60 General Purpose Flag  0808 (2056)\n+1C1C97 LOCAL HEADER #1715    04034B50 (67324752)\n+1C1C9B Extract Zip Spec      14 (20) '2.0'\n+1C1C9C Extract OS            00 (0) 'MS-DOS'\n+1C1C9D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BDE62 Compression Method    0008 (8) 'Deflated'\n-1BDE64 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BDE68 CRC                   00000000 (0)\n-1BDE6C Compressed Size       00000000 (0)\n-1BDE70 Uncompressed Size     00000000 (0)\n-1BDE74 Filename Length       0024 (36)\n-1BDE76 Extra Length          0000 (0)\n-1BDE78 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C1C9F Compression Method    0008 (8) 'Deflated'\n+1C1CA1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C1CA5 CRC                   00000000 (0)\n+1C1CA9 Compressed Size       00000000 (0)\n+1C1CAD Uncompressed Size     00000000 (0)\n+1C1CB1 Filename Length       0029 (41)\n+1C1CB3 Extra Length          0000 (0)\n+1C1CB5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BDE78: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C1CB5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BDE9C PAYLOAD               XX\n+1C1CDE PAYLOAD\n \n-1BDE9E DATA DESCRIPTOR       08074B50 (134695760)\n-1BDEA2 CRC                   00000000 (0)\n-1BDEA6 Compressed Size       00000002 (2)\n-1BDEAA Uncompressed Size     00000000 (0)\n+1C1EF3 DATA DESCRIPTOR       08074B50 (134695760)\n+1C1EF7 CRC                   C476DBA7 (3296123815)\n+1C1EFB Compressed Size       00000215 (533)\n+1C1EFF Uncompressed Size     000003B5 (949)\n \n-1BDEAE LOCAL HEADER #1716    04034B50 (67324752)\n-1BDEB2 Extract Zip Spec      14 (20) '2.0'\n-1BDEB3 Extract OS            00 (0) 'MS-DOS'\n-1BDEB4 General Purpose Flag  0808 (2056)\n+1C1F03 LOCAL HEADER #1716    04034B50 (67324752)\n+1C1F07 Extract Zip Spec      14 (20) '2.0'\n+1C1F08 Extract OS            00 (0) 'MS-DOS'\n+1C1F09 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BDEB6 Compression Method    0008 (8) 'Deflated'\n-1BDEB8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BDEBC CRC                   00000000 (0)\n-1BDEC0 Compressed Size       00000000 (0)\n-1BDEC4 Uncompressed Size     00000000 (0)\n-1BDEC8 Filename Length       0032 (50)\n-1BDECA Extra Length          0000 (0)\n-1BDECC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C1F0B Compression Method    0008 (8) 'Deflated'\n+1C1F0D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C1F11 CRC                   00000000 (0)\n+1C1F15 Compressed Size       00000000 (0)\n+1C1F19 Uncompressed Size     00000000 (0)\n+1C1F1D Filename Length       0029 (41)\n+1C1F1F Extra Length          0000 (0)\n+1C1F21 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BDECC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C1F21: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BDEFE PAYLOAD\n+1C1F4A PAYLOAD\n \n-1BE116 DATA DESCRIPTOR       08074B50 (134695760)\n-1BE11A CRC                   4B6F1882 (1265571970)\n-1BE11E Compressed Size       00000218 (536)\n-1BE122 Uncompressed Size     000003C7 (967)\n+1C2316 DATA DESCRIPTOR       08074B50 (134695760)\n+1C231A CRC                   A69542CD (2794799821)\n+1C231E Compressed Size       000003CC (972)\n+1C2322 Uncompressed Size     00000A92 (2706)\n \n-1BE126 LOCAL HEADER #1717    04034B50 (67324752)\n-1BE12A Extract Zip Spec      14 (20) '2.0'\n-1BE12B Extract OS            00 (0) 'MS-DOS'\n-1BE12C General Purpose Flag  0808 (2056)\n+1C2326 LOCAL HEADER #1717    04034B50 (67324752)\n+1C232A Extract Zip Spec      14 (20) '2.0'\n+1C232B Extract OS            00 (0) 'MS-DOS'\n+1C232C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BE12E Compression Method    0008 (8) 'Deflated'\n-1BE130 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BE134 CRC                   00000000 (0)\n-1BE138 Compressed Size       00000000 (0)\n-1BE13C Uncompressed Size     00000000 (0)\n-1BE140 Filename Length       0039 (57)\n-1BE142 Extra Length          0000 (0)\n-1BE144 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C232E Compression Method    0008 (8) 'Deflated'\n+1C2330 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C2334 CRC                   00000000 (0)\n+1C2338 Compressed Size       00000000 (0)\n+1C233C Uncompressed Size     00000000 (0)\n+1C2340 Filename Length       0030 (48)\n+1C2342 Extra Length          0000 (0)\n+1C2344 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BE144: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C2344: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BE17D PAYLOAD\n+1C2374 PAYLOAD\n \n-1BE3E0 DATA DESCRIPTOR       08074B50 (134695760)\n-1BE3E4 CRC                   CE84EC2F (3464817711)\n-1BE3E8 Compressed Size       00000263 (611)\n-1BE3EC Uncompressed Size     00000464 (1124)\n+1C25E5 DATA DESCRIPTOR       08074B50 (134695760)\n+1C25E9 CRC                   A83F3E21 (2822716961)\n+1C25ED Compressed Size       00000271 (625)\n+1C25F1 Uncompressed Size     000004DA (1242)\n \n-1BE3F0 LOCAL HEADER #1718    04034B50 (67324752)\n-1BE3F4 Extract Zip Spec      14 (20) '2.0'\n-1BE3F5 Extract OS            00 (0) 'MS-DOS'\n-1BE3F6 General Purpose Flag  0808 (2056)\n+1C25F5 LOCAL HEADER #1718    04034B50 (67324752)\n+1C25F9 Extract Zip Spec      14 (20) '2.0'\n+1C25FA Extract OS            00 (0) 'MS-DOS'\n+1C25FB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BE3F8 Compression Method    0008 (8) 'Deflated'\n-1BE3FA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BE3FE CRC                   00000000 (0)\n-1BE402 Compressed Size       00000000 (0)\n-1BE406 Uncompressed Size     00000000 (0)\n-1BE40A Filename Length       0037 (55)\n-1BE40C Extra Length          0000 (0)\n-1BE40E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C25FD Compression Method    0008 (8) 'Deflated'\n+1C25FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C2603 CRC                   00000000 (0)\n+1C2607 Compressed Size       00000000 (0)\n+1C260B Uncompressed Size     00000000 (0)\n+1C260F Filename Length       0030 (48)\n+1C2611 Extra Length          0000 (0)\n+1C2613 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BE40E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C2613: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BE445 PAYLOAD\n+1C2643 PAYLOAD\n \n-1BE704 DATA DESCRIPTOR       08074B50 (134695760)\n-1BE708 CRC                   EFE6AFC6 (4024872902)\n-1BE70C Compressed Size       000002BF (703)\n-1BE710 Uncompressed Size     000005D1 (1489)\n+1C2911 DATA DESCRIPTOR       08074B50 (134695760)\n+1C2915 CRC                   75803CF4 (1971338484)\n+1C2919 Compressed Size       000002CE (718)\n+1C291D Uncompressed Size     0000059F (1439)\n \n-1BE714 LOCAL HEADER #1719    04034B50 (67324752)\n-1BE718 Extract Zip Spec      14 (20) '2.0'\n-1BE719 Extract OS            00 (0) 'MS-DOS'\n-1BE71A General Purpose Flag  0808 (2056)\n+1C2921 LOCAL HEADER #1719    04034B50 (67324752)\n+1C2925 Extract Zip Spec      14 (20) '2.0'\n+1C2926 Extract OS            00 (0) 'MS-DOS'\n+1C2927 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BE71C Compression Method    0008 (8) 'Deflated'\n-1BE71E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BE722 CRC                   00000000 (0)\n-1BE726 Compressed Size       00000000 (0)\n-1BE72A Uncompressed Size     00000000 (0)\n-1BE72E Filename Length       0020 (32)\n-1BE730 Extra Length          0000 (0)\n-1BE732 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C2929 Compression Method    0008 (8) 'Deflated'\n+1C292B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C292F CRC                   00000000 (0)\n+1C2933 Compressed Size       00000000 (0)\n+1C2937 Uncompressed Size     00000000 (0)\n+1C293B Filename Length       002A (42)\n+1C293D Extra Length          0000 (0)\n+1C293F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BE732: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C293F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BE752 PAYLOAD               XX\n+1C2969 PAYLOAD               XX\n \n-1BE754 DATA DESCRIPTOR       08074B50 (134695760)\n-1BE758 CRC                   00000000 (0)\n-1BE75C Compressed Size       00000002 (2)\n-1BE760 Uncompressed Size     00000000 (0)\n+1C296B DATA DESCRIPTOR       08074B50 (134695760)\n+1C296F CRC                   00000000 (0)\n+1C2973 Compressed Size       00000002 (2)\n+1C2977 Uncompressed Size     00000000 (0)\n \n-1BE764 LOCAL HEADER #1720    04034B50 (67324752)\n-1BE768 Extract Zip Spec      14 (20) '2.0'\n-1BE769 Extract OS            00 (0) 'MS-DOS'\n-1BE76A General Purpose Flag  0808 (2056)\n+1C297B LOCAL HEADER #1720    04034B50 (67324752)\n+1C297F Extract Zip Spec      14 (20) '2.0'\n+1C2980 Extract OS            00 (0) 'MS-DOS'\n+1C2981 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BE76C Compression Method    0008 (8) 'Deflated'\n-1BE76E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BE772 CRC                   00000000 (0)\n-1BE776 Compressed Size       00000000 (0)\n-1BE77A Uncompressed Size     00000000 (0)\n-1BE77E Filename Length       002F (47)\n-1BE780 Extra Length          0000 (0)\n-1BE782 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C2983 Compression Method    0008 (8) 'Deflated'\n+1C2985 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C2989 CRC                   00000000 (0)\n+1C298D Compressed Size       00000000 (0)\n+1C2991 Uncompressed Size     00000000 (0)\n+1C2995 Filename Length       0042 (66)\n+1C2997 Extra Length          0000 (0)\n+1C2999 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BE782: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C2999: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BE7B1 PAYLOAD\n+1C29DB PAYLOAD\n \n-1BE9C9 DATA DESCRIPTOR       08074B50 (134695760)\n-1BE9CD CRC                   2510FA3B (621869627)\n-1BE9D1 Compressed Size       00000218 (536)\n-1BE9D5 Uncompressed Size     000003C1 (961)\n+1C2C00 DATA DESCRIPTOR       08074B50 (134695760)\n+1C2C04 CRC                   823F4C5B (2185186395)\n+1C2C08 Compressed Size       00000225 (549)\n+1C2C0C Uncompressed Size     000003EC (1004)\n \n-1BE9D9 LOCAL HEADER #1721    04034B50 (67324752)\n-1BE9DD Extract Zip Spec      14 (20) '2.0'\n-1BE9DE Extract OS            00 (0) 'MS-DOS'\n-1BE9DF General Purpose Flag  0808 (2056)\n+1C2C10 LOCAL HEADER #1721    04034B50 (67324752)\n+1C2C14 Extract Zip Spec      14 (20) '2.0'\n+1C2C15 Extract OS            00 (0) 'MS-DOS'\n+1C2C16 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BE9E1 Compression Method    0008 (8) 'Deflated'\n-1BE9E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BE9E7 CRC                   00000000 (0)\n-1BE9EB Compressed Size       00000000 (0)\n-1BE9EF Uncompressed Size     00000000 (0)\n-1BE9F3 Filename Length       001F (31)\n-1BE9F5 Extra Length          0000 (0)\n-1BE9F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C2C18 Compression Method    0008 (8) 'Deflated'\n+1C2C1A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C2C1E CRC                   00000000 (0)\n+1C2C22 Compressed Size       00000000 (0)\n+1C2C26 Uncompressed Size     00000000 (0)\n+1C2C2A Filename Length       0025 (37)\n+1C2C2C Extra Length          0000 (0)\n+1C2C2E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BE9F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C2C2E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BEA16 PAYLOAD               XX\n+1C2C53 PAYLOAD               XX\n \n-1BEA18 DATA DESCRIPTOR       08074B50 (134695760)\n-1BEA1C CRC                   00000000 (0)\n-1BEA20 Compressed Size       00000002 (2)\n-1BEA24 Uncompressed Size     00000000 (0)\n+1C2C55 DATA DESCRIPTOR       08074B50 (134695760)\n+1C2C59 CRC                   00000000 (0)\n+1C2C5D Compressed Size       00000002 (2)\n+1C2C61 Uncompressed Size     00000000 (0)\n \n-1BEA28 LOCAL HEADER #1722    04034B50 (67324752)\n-1BEA2C Extract Zip Spec      14 (20) '2.0'\n-1BEA2D Extract OS            00 (0) 'MS-DOS'\n-1BEA2E General Purpose Flag  0808 (2056)\n+1C2C65 LOCAL HEADER #1722    04034B50 (67324752)\n+1C2C69 Extract Zip Spec      14 (20) '2.0'\n+1C2C6A Extract OS            00 (0) 'MS-DOS'\n+1C2C6B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BEA30 Compression Method    0008 (8) 'Deflated'\n-1BEA32 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BEA36 CRC                   00000000 (0)\n-1BEA3A Compressed Size       00000000 (0)\n-1BEA3E Uncompressed Size     00000000 (0)\n-1BEA42 Filename Length       002D (45)\n-1BEA44 Extra Length          0000 (0)\n-1BEA46 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C2C6D Compression Method    0008 (8) 'Deflated'\n+1C2C6F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C2C73 CRC                   00000000 (0)\n+1C2C77 Compressed Size       00000000 (0)\n+1C2C7B Uncompressed Size     00000000 (0)\n+1C2C7F Filename Length       0037 (55)\n+1C2C81 Extra Length          0000 (0)\n+1C2C83 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BEA46: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C2C83: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BEA73 PAYLOAD\n+1C2CBA PAYLOAD\n \n-1BEC89 DATA DESCRIPTOR       08074B50 (134695760)\n-1BEC8D CRC                   14A7D3CC (346543052)\n-1BEC91 Compressed Size       00000216 (534)\n-1BEC95 Uncompressed Size     000003BD (957)\n+1C3237 DATA DESCRIPTOR       08074B50 (134695760)\n+1C323B CRC                   6C151306 (1813320454)\n+1C323F Compressed Size       0000057D (1405)\n+1C3243 Uncompressed Size     00001493 (5267)\n \n-1BEC99 LOCAL HEADER #1723    04034B50 (67324752)\n-1BEC9D Extract Zip Spec      14 (20) '2.0'\n-1BEC9E Extract OS            00 (0) 'MS-DOS'\n-1BEC9F General Purpose Flag  0808 (2056)\n+1C3247 LOCAL HEADER #1723    04034B50 (67324752)\n+1C324B Extract Zip Spec      14 (20) '2.0'\n+1C324C Extract OS            00 (0) 'MS-DOS'\n+1C324D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BECA1 Compression Method    0008 (8) 'Deflated'\n-1BECA3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BECA7 CRC                   00000000 (0)\n-1BECAB Compressed Size       00000000 (0)\n-1BECAF Uncompressed Size     00000000 (0)\n-1BECB3 Filename Length       0022 (34)\n-1BECB5 Extra Length          0000 (0)\n-1BECB7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C324F Compression Method    0008 (8) 'Deflated'\n+1C3251 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C3255 CRC                   00000000 (0)\n+1C3259 Compressed Size       00000000 (0)\n+1C325D Uncompressed Size     00000000 (0)\n+1C3261 Filename Length       0024 (36)\n+1C3263 Extra Length          0000 (0)\n+1C3265 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BECB7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C3265: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BECD9 PAYLOAD               XX\n+1C3289 PAYLOAD               XX\n \n-1BECDB DATA DESCRIPTOR       08074B50 (134695760)\n-1BECDF CRC                   00000000 (0)\n-1BECE3 Compressed Size       00000002 (2)\n-1BECE7 Uncompressed Size     00000000 (0)\n+1C328B DATA DESCRIPTOR       08074B50 (134695760)\n+1C328F CRC                   00000000 (0)\n+1C3293 Compressed Size       00000002 (2)\n+1C3297 Uncompressed Size     00000000 (0)\n \n-1BECEB LOCAL HEADER #1724    04034B50 (67324752)\n-1BECEF Extract Zip Spec      14 (20) '2.0'\n-1BECF0 Extract OS            00 (0) 'MS-DOS'\n-1BECF1 General Purpose Flag  0808 (2056)\n+1C329B LOCAL HEADER #1724    04034B50 (67324752)\n+1C329F Extract Zip Spec      14 (20) '2.0'\n+1C32A0 Extract OS            00 (0) 'MS-DOS'\n+1C32A1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BECF3 Compression Method    0008 (8) 'Deflated'\n-1BECF5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BECF9 CRC                   00000000 (0)\n-1BECFD Compressed Size       00000000 (0)\n-1BED01 Uncompressed Size     00000000 (0)\n-1BED05 Filename Length       0034 (52)\n-1BED07 Extra Length          0000 (0)\n-1BED09 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C32A3 Compression Method    0008 (8) 'Deflated'\n+1C32A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C32A9 CRC                   00000000 (0)\n+1C32AD Compressed Size       00000000 (0)\n+1C32B1 Uncompressed Size     00000000 (0)\n+1C32B5 Filename Length       002C (44)\n+1C32B7 Extra Length          0000 (0)\n+1C32B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BED09: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C32B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BED3D PAYLOAD\n+1C32E5 PAYLOAD               XX\n \n-1BEFBC DATA DESCRIPTOR       08074B50 (134695760)\n-1BEFC0 CRC                   1652AFBA (374517690)\n-1BEFC4 Compressed Size       0000027F (639)\n-1BEFC8 Uncompressed Size     00000538 (1336)\n+1C32E7 DATA DESCRIPTOR       08074B50 (134695760)\n+1C32EB CRC                   00000000 (0)\n+1C32EF Compressed Size       00000002 (2)\n+1C32F3 Uncompressed Size     00000000 (0)\n \n-1BEFCC LOCAL HEADER #1725    04034B50 (67324752)\n-1BEFD0 Extract Zip Spec      14 (20) '2.0'\n-1BEFD1 Extract OS            00 (0) 'MS-DOS'\n-1BEFD2 General Purpose Flag  0808 (2056)\n+1C32F7 LOCAL HEADER #1725    04034B50 (67324752)\n+1C32FB Extract Zip Spec      14 (20) '2.0'\n+1C32FC Extract OS            00 (0) 'MS-DOS'\n+1C32FD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BEFD4 Compression Method    0008 (8) 'Deflated'\n-1BEFD6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BEFDA CRC                   00000000 (0)\n-1BEFDE Compressed Size       00000000 (0)\n-1BEFE2 Uncompressed Size     00000000 (0)\n-1BEFE6 Filename Length       0025 (37)\n-1BEFE8 Extra Length          0000 (0)\n-1BEFEA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C32FF Compression Method    0008 (8) 'Deflated'\n+1C3301 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C3305 CRC                   00000000 (0)\n+1C3309 Compressed Size       00000000 (0)\n+1C330D Uncompressed Size     00000000 (0)\n+1C3311 Filename Length       003C (60)\n+1C3313 Extra Length          0000 (0)\n+1C3315 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BEFEA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C3315: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BF00F PAYLOAD               XX\n+1C3351 PAYLOAD\n \n-1BF011 DATA DESCRIPTOR       08074B50 (134695760)\n-1BF015 CRC                   00000000 (0)\n-1BF019 Compressed Size       00000002 (2)\n-1BF01D Uncompressed Size     00000000 (0)\n+1C3576 DATA DESCRIPTOR       08074B50 (134695760)\n+1C357A CRC                   CC53D052 (3428044882)\n+1C357E Compressed Size       00000225 (549)\n+1C3582 Uncompressed Size     000003D7 (983)\n \n-1BF021 LOCAL HEADER #1726    04034B50 (67324752)\n-1BF025 Extract Zip Spec      14 (20) '2.0'\n-1BF026 Extract OS            00 (0) 'MS-DOS'\n-1BF027 General Purpose Flag  0808 (2056)\n+1C3586 LOCAL HEADER #1726    04034B50 (67324752)\n+1C358A Extract Zip Spec      14 (20) '2.0'\n+1C358B Extract OS            00 (0) 'MS-DOS'\n+1C358C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BF029 Compression Method    0008 (8) 'Deflated'\n-1BF02B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BF02F CRC                   00000000 (0)\n-1BF033 Compressed Size       00000000 (0)\n-1BF037 Uncompressed Size     00000000 (0)\n-1BF03B Filename Length       003E (62)\n-1BF03D Extra Length          0000 (0)\n-1BF03F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C358E Compression Method    0008 (8) 'Deflated'\n+1C3590 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C3594 CRC                   00000000 (0)\n+1C3598 Compressed Size       00000000 (0)\n+1C359C Uncompressed Size     00000000 (0)\n+1C35A0 Filename Length       0026 (38)\n+1C35A2 Extra Length          0000 (0)\n+1C35A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BF03F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C35A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BF07D PAYLOAD\n+1C35CA PAYLOAD               XX\n \n-1BF29D DATA DESCRIPTOR       08074B50 (134695760)\n-1BF2A1 CRC                   15451137 (356847927)\n-1BF2A5 Compressed Size       00000220 (544)\n-1BF2A9 Uncompressed Size     000003DF (991)\n+1C35CC DATA DESCRIPTOR       08074B50 (134695760)\n+1C35D0 CRC                   00000000 (0)\n+1C35D4 Compressed Size       00000002 (2)\n+1C35D8 Uncompressed Size     00000000 (0)\n \n-1BF2AD LOCAL HEADER #1727    04034B50 (67324752)\n-1BF2B1 Extract Zip Spec      14 (20) '2.0'\n-1BF2B2 Extract OS            00 (0) 'MS-DOS'\n-1BF2B3 General Purpose Flag  0808 (2056)\n+1C35DC LOCAL HEADER #1727    04034B50 (67324752)\n+1C35E0 Extract Zip Spec      14 (20) '2.0'\n+1C35E1 Extract OS            00 (0) 'MS-DOS'\n+1C35E2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BF2B5 Compression Method    0008 (8) 'Deflated'\n-1BF2B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BF2BB CRC                   00000000 (0)\n-1BF2BF Compressed Size       00000000 (0)\n-1BF2C3 Uncompressed Size     00000000 (0)\n-1BF2C7 Filename Length       0023 (35)\n-1BF2C9 Extra Length          0000 (0)\n-1BF2CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C35E4 Compression Method    0008 (8) 'Deflated'\n+1C35E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C35EA CRC                   00000000 (0)\n+1C35EE Compressed Size       00000000 (0)\n+1C35F2 Uncompressed Size     00000000 (0)\n+1C35F6 Filename Length       003D (61)\n+1C35F8 Extra Length          0000 (0)\n+1C35FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BF2CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C35FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BF2EE PAYLOAD\n+1C3637 PAYLOAD\n \n-1BF58D DATA DESCRIPTOR       08074B50 (134695760)\n-1BF591 CRC                   5AF92E3B (1526279739)\n-1BF595 Compressed Size       0000029F (671)\n-1BF599 Uncompressed Size     000005DD (1501)\n+1C385C DATA DESCRIPTOR       08074B50 (134695760)\n+1C3860 CRC                   4A3ABC52 (1245363282)\n+1C3864 Compressed Size       00000225 (549)\n+1C3868 Uncompressed Size     000003DD (989)\n \n-1BF59D LOCAL HEADER #1728    04034B50 (67324752)\n-1BF5A1 Extract Zip Spec      14 (20) '2.0'\n-1BF5A2 Extract OS            00 (0) 'MS-DOS'\n-1BF5A3 General Purpose Flag  0808 (2056)\n+1C386C LOCAL HEADER #1728    04034B50 (67324752)\n+1C3870 Extract Zip Spec      14 (20) '2.0'\n+1C3871 Extract OS            00 (0) 'MS-DOS'\n+1C3872 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BF5A5 Compression Method    0008 (8) 'Deflated'\n-1BF5A7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BF5AB CRC                   00000000 (0)\n-1BF5AF Compressed Size       00000000 (0)\n-1BF5B3 Uncompressed Size     00000000 (0)\n-1BF5B7 Filename Length       0021 (33)\n-1BF5B9 Extra Length          0000 (0)\n-1BF5BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C3874 Compression Method    0008 (8) 'Deflated'\n+1C3876 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C387A CRC                   00000000 (0)\n+1C387E Compressed Size       00000000 (0)\n+1C3882 Uncompressed Size     00000000 (0)\n+1C3886 Filename Length       001E (30)\n+1C3888 Extra Length          0000 (0)\n+1C388A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BF5BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C388A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BF5DC PAYLOAD\n+1C38A8 PAYLOAD               XX\n \n-1BF88F DATA DESCRIPTOR       08074B50 (134695760)\n-1BF893 CRC                   4813D623 (1209259555)\n-1BF897 Compressed Size       000002B3 (691)\n-1BF89B Uncompressed Size     000005DD (1501)\n+1C38AA DATA DESCRIPTOR       08074B50 (134695760)\n+1C38AE CRC                   00000000 (0)\n+1C38B2 Compressed Size       00000002 (2)\n+1C38B6 Uncompressed Size     00000000 (0)\n \n-1BF89F LOCAL HEADER #1729    04034B50 (67324752)\n-1BF8A3 Extract Zip Spec      14 (20) '2.0'\n-1BF8A4 Extract OS            00 (0) 'MS-DOS'\n-1BF8A5 General Purpose Flag  0808 (2056)\n+1C38BA LOCAL HEADER #1729    04034B50 (67324752)\n+1C38BE Extract Zip Spec      14 (20) '2.0'\n+1C38BF Extract OS            00 (0) 'MS-DOS'\n+1C38C0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BF8A7 Compression Method    0008 (8) 'Deflated'\n-1BF8A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BF8AD CRC                   00000000 (0)\n-1BF8B1 Compressed Size       00000000 (0)\n-1BF8B5 Uncompressed Size     00000000 (0)\n-1BF8B9 Filename Length       0025 (37)\n-1BF8BB Extra Length          0000 (0)\n-1BF8BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C38C2 Compression Method    0008 (8) 'Deflated'\n+1C38C4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C38C8 CRC                   00000000 (0)\n+1C38CC Compressed Size       00000000 (0)\n+1C38D0 Uncompressed Size     00000000 (0)\n+1C38D4 Filename Length       002B (43)\n+1C38D6 Extra Length          0000 (0)\n+1C38D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BF8BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C38D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BF8E2 PAYLOAD\n+1C3903 PAYLOAD\n \n-1BFD0F DATA DESCRIPTOR       08074B50 (134695760)\n-1BFD13 CRC                   6425D257 (1680200279)\n-1BFD17 Compressed Size       0000042D (1069)\n-1BFD1B Uncompressed Size     000011F5 (4597)\n+1C3CA6 DATA DESCRIPTOR       08074B50 (134695760)\n+1C3CAA CRC                   643DA964 (1681762660)\n+1C3CAE Compressed Size       000003A3 (931)\n+1C3CB2 Uncompressed Size     00000B4F (2895)\n \n-1BFD1F LOCAL HEADER #1730    04034B50 (67324752)\n-1BFD23 Extract Zip Spec      14 (20) '2.0'\n-1BFD24 Extract OS            00 (0) 'MS-DOS'\n-1BFD25 General Purpose Flag  0808 (2056)\n+1C3CB6 LOCAL HEADER #1730    04034B50 (67324752)\n+1C3CBA Extract Zip Spec      14 (20) '2.0'\n+1C3CBB Extract OS            00 (0) 'MS-DOS'\n+1C3CBC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1BFD27 Compression Method    0008 (8) 'Deflated'\n-1BFD29 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1BFD2D CRC                   00000000 (0)\n-1BFD31 Compressed Size       00000000 (0)\n-1BFD35 Uncompressed Size     00000000 (0)\n-1BFD39 Filename Length       0022 (34)\n-1BFD3B Extra Length          0000 (0)\n-1BFD3D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C3CBE Compression Method    0008 (8) 'Deflated'\n+1C3CC0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C3CC4 CRC                   00000000 (0)\n+1C3CC8 Compressed Size       00000000 (0)\n+1C3CCC Uncompressed Size     00000000 (0)\n+1C3CD0 Filename Length       001D (29)\n+1C3CD2 Extra Length          0000 (0)\n+1C3CD4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1BFD3D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C3CD4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1BFD5F PAYLOAD\n+1C3CF1 PAYLOAD               XX\n \n-1C00B9 DATA DESCRIPTOR       08074B50 (134695760)\n-1C00BD CRC                   4751F7D9 (1196554201)\n-1C00C1 Compressed Size       0000035A (858)\n-1C00C5 Uncompressed Size     00000933 (2355)\n+1C3CF3 DATA DESCRIPTOR       08074B50 (134695760)\n+1C3CF7 CRC                   00000000 (0)\n+1C3CFB Compressed Size       00000002 (2)\n+1C3CFF Uncompressed Size     00000000 (0)\n \n-1C00C9 LOCAL HEADER #1731    04034B50 (67324752)\n-1C00CD Extract Zip Spec      14 (20) '2.0'\n-1C00CE Extract OS            00 (0) 'MS-DOS'\n-1C00CF General Purpose Flag  0808 (2056)\n+1C3D03 LOCAL HEADER #1731    04034B50 (67324752)\n+1C3D07 Extract Zip Spec      14 (20) '2.0'\n+1C3D08 Extract OS            00 (0) 'MS-DOS'\n+1C3D09 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C00D1 Compression Method    0008 (8) 'Deflated'\n-1C00D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C00D7 CRC                   00000000 (0)\n-1C00DB Compressed Size       00000000 (0)\n-1C00DF Uncompressed Size     00000000 (0)\n-1C00E3 Filename Length       002A (42)\n-1C00E5 Extra Length          0000 (0)\n-1C00E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C3D0B Compression Method    0008 (8) 'Deflated'\n+1C3D0D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C3D11 CRC                   00000000 (0)\n+1C3D15 Compressed Size       00000000 (0)\n+1C3D19 Uncompressed Size     00000000 (0)\n+1C3D1D Filename Length       002C (44)\n+1C3D1F Extra Length          0000 (0)\n+1C3D21 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C00E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C3D21: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C0111 PAYLOAD\n+1C3D4D PAYLOAD\n \n-1C03B1 DATA DESCRIPTOR       08074B50 (134695760)\n-1C03B5 CRC                   A7B8FF5F (2813919071)\n-1C03B9 Compressed Size       000002A0 (672)\n-1C03BD Uncompressed Size     0000060D (1549)\n+1C3F60 DATA DESCRIPTOR       08074B50 (134695760)\n+1C3F64 CRC                   1456EFA1 (341241761)\n+1C3F68 Compressed Size       00000213 (531)\n+1C3F6C Uncompressed Size     000003BB (955)\n \n-1C03C1 LOCAL HEADER #1732    04034B50 (67324752)\n-1C03C5 Extract Zip Spec      14 (20) '2.0'\n-1C03C6 Extract OS            00 (0) 'MS-DOS'\n-1C03C7 General Purpose Flag  0808 (2056)\n+1C3F70 LOCAL HEADER #1732    04034B50 (67324752)\n+1C3F74 Extract Zip Spec      14 (20) '2.0'\n+1C3F75 Extract OS            00 (0) 'MS-DOS'\n+1C3F76 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C03C9 Compression Method    0008 (8) 'Deflated'\n-1C03CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C03CF CRC                   00000000 (0)\n-1C03D3 Compressed Size       00000000 (0)\n-1C03D7 Uncompressed Size     00000000 (0)\n-1C03DB Filename Length       0023 (35)\n-1C03DD Extra Length          0000 (0)\n-1C03DF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C3F78 Compression Method    0008 (8) 'Deflated'\n+1C3F7A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C3F7E CRC                   00000000 (0)\n+1C3F82 Compressed Size       00000000 (0)\n+1C3F86 Uncompressed Size     00000000 (0)\n+1C3F8A Filename Length       002B (43)\n+1C3F8C Extra Length          0000 (0)\n+1C3F8E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C03DF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C3F8E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C0402 PAYLOAD\n+1C3FB9 PAYLOAD\n \n-1C06EF DATA DESCRIPTOR       08074B50 (134695760)\n-1C06F3 CRC                   A6915B8B (2794544011)\n-1C06F7 Compressed Size       000002ED (749)\n-1C06FB Uncompressed Size     000006AD (1709)\n+1C41CD DATA DESCRIPTOR       08074B50 (134695760)\n+1C41D1 CRC                   E92C073F (3911976767)\n+1C41D5 Compressed Size       00000214 (532)\n+1C41D9 Uncompressed Size     000003B9 (953)\n \n-1C06FF LOCAL HEADER #1733    04034B50 (67324752)\n-1C0703 Extract Zip Spec      14 (20) '2.0'\n-1C0704 Extract OS            00 (0) 'MS-DOS'\n-1C0705 General Purpose Flag  0808 (2056)\n+1C41DD LOCAL HEADER #1733    04034B50 (67324752)\n+1C41E1 Extract Zip Spec      14 (20) '2.0'\n+1C41E2 Extract OS            00 (0) 'MS-DOS'\n+1C41E3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C0707 Compression Method    0008 (8) 'Deflated'\n-1C0709 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C070D CRC                   00000000 (0)\n-1C0711 Compressed Size       00000000 (0)\n-1C0715 Uncompressed Size     00000000 (0)\n-1C0719 Filename Length       0027 (39)\n-1C071B Extra Length          0000 (0)\n-1C071D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C41E5 Compression Method    0008 (8) 'Deflated'\n+1C41E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C41EB CRC                   00000000 (0)\n+1C41EF Compressed Size       00000000 (0)\n+1C41F3 Uncompressed Size     00000000 (0)\n+1C41F7 Filename Length       0031 (49)\n+1C41F9 Extra Length          0000 (0)\n+1C41FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C071D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C41FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C0744 PAYLOAD\n+1C422C PAYLOAD               XX\n \n-1C0A2C DATA DESCRIPTOR       08074B50 (134695760)\n-1C0A30 CRC                   F08690D4 (4035350740)\n-1C0A34 Compressed Size       000002E8 (744)\n-1C0A38 Uncompressed Size     000007FC (2044)\n+1C422E DATA DESCRIPTOR       08074B50 (134695760)\n+1C4232 CRC                   00000000 (0)\n+1C4236 Compressed Size       00000002 (2)\n+1C423A Uncompressed Size     00000000 (0)\n \n-1C0A3C LOCAL HEADER #1734    04034B50 (67324752)\n-1C0A40 Extract Zip Spec      14 (20) '2.0'\n-1C0A41 Extract OS            00 (0) 'MS-DOS'\n-1C0A42 General Purpose Flag  0808 (2056)\n+1C423E LOCAL HEADER #1734    04034B50 (67324752)\n+1C4242 Extract Zip Spec      14 (20) '2.0'\n+1C4243 Extract OS            00 (0) 'MS-DOS'\n+1C4244 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C0A44 Compression Method    0008 (8) 'Deflated'\n-1C0A46 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C0A4A CRC                   00000000 (0)\n-1C0A4E Compressed Size       00000000 (0)\n-1C0A52 Uncompressed Size     00000000 (0)\n-1C0A56 Filename Length       0021 (33)\n-1C0A58 Extra Length          0000 (0)\n-1C0A5A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C4246 Compression Method    0008 (8) 'Deflated'\n+1C4248 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C424C CRC                   00000000 (0)\n+1C4250 Compressed Size       00000000 (0)\n+1C4254 Uncompressed Size     00000000 (0)\n+1C4258 Filename Length       0038 (56)\n+1C425A Extra Length          0000 (0)\n+1C425C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C0A5A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C425C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C0A7B PAYLOAD\n+1C4294 PAYLOAD\n \n-1C0F0A DATA DESCRIPTOR       08074B50 (134695760)\n-1C0F0E CRC                   79872C8E (2038901902)\n-1C0F12 Compressed Size       0000048F (1167)\n-1C0F16 Uncompressed Size     000012BE (4798)\n+1C4676 DATA DESCRIPTOR       08074B50 (134695760)\n+1C467A CRC                   7291F3D3 (1922167763)\n+1C467E Compressed Size       000003E2 (994)\n+1C4682 Uncompressed Size     000010C7 (4295)\n \n-1C0F1A LOCAL HEADER #1735    04034B50 (67324752)\n-1C0F1E Extract Zip Spec      14 (20) '2.0'\n-1C0F1F Extract OS            00 (0) 'MS-DOS'\n-1C0F20 General Purpose Flag  0808 (2056)\n+1C4686 LOCAL HEADER #1735    04034B50 (67324752)\n+1C468A Extract Zip Spec      14 (20) '2.0'\n+1C468B Extract OS            00 (0) 'MS-DOS'\n+1C468C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C0F22 Compression Method    0008 (8) 'Deflated'\n-1C0F24 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C0F28 CRC                   00000000 (0)\n-1C0F2C Compressed Size       00000000 (0)\n-1C0F30 Uncompressed Size     00000000 (0)\n-1C0F34 Filename Length       0025 (37)\n-1C0F36 Extra Length          0000 (0)\n-1C0F38 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C468E Compression Method    0008 (8) 'Deflated'\n+1C4690 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1C4694 CRC                   00000000 (0)\n+1C4698 Compressed Size       00000000 (0)\n+1C469C Uncompressed Size     00000000 (0)\n+1C46A0 Filename Length       003F (63)\n+1C46A2 Extra Length          0000 (0)\n+1C46A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C0F38: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C46A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C0F5D PAYLOAD\n+1C46E3 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-1C1934 DATA DESCRIPTOR       08074B50 (134695760)\n-1C1938 CRC                   037ECE86 (58642054)\n-1C193C Compressed Size       000009D7 (2519)\n-1C1940 Uncompressed Size     00002BF5 (11253)\n+1C4728 DATA DESCRIPTOR       08074B50 (134695760)\n+1C472C CRC                   3C368062 (1010204770)\n+1C4730 Compressed Size       00000045 (69)\n+1C4734 Uncompressed Size     00000047 (71)\n \n-1C1944 LOCAL HEADER #1736    04034B50 (67324752)\n-1C1948 Extract Zip Spec      14 (20) '2.0'\n-1C1949 Extract OS            00 (0) 'MS-DOS'\n-1C194A General Purpose Flag  0808 (2056)\n+1C4738 LOCAL HEADER #1736    04034B50 (67324752)\n+1C473C Extract Zip Spec      14 (20) '2.0'\n+1C473D Extract OS            00 (0) 'MS-DOS'\n+1C473E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C194C Compression Method    0008 (8) 'Deflated'\n-1C194E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C1952 CRC                   00000000 (0)\n-1C1956 Compressed Size       00000000 (0)\n-1C195A Uncompressed Size     00000000 (0)\n-1C195E Filename Length       0027 (39)\n-1C1960 Extra Length          0000 (0)\n-1C1962 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C4740 Compression Method    0008 (8) 'Deflated'\n+1C4742 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C4746 CRC                   00000000 (0)\n+1C474A Compressed Size       00000000 (0)\n+1C474E Uncompressed Size     00000000 (0)\n+1C4752 Filename Length       0010 (16)\n+1C4754 Extra Length          0000 (0)\n+1C4756 Filename              'XXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C1962: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C4756: Filename 'XXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C1989 PAYLOAD\n+1C4766 PAYLOAD               XX\n \n-1C1BFB DATA DESCRIPTOR       08074B50 (134695760)\n-1C1BFF CRC                   FF29698F (4280904079)\n-1C1C03 Compressed Size       00000272 (626)\n-1C1C07 Uncompressed Size     00000659 (1625)\n+1C4768 DATA DESCRIPTOR       08074B50 (134695760)\n+1C476C CRC                   00000000 (0)\n+1C4770 Compressed Size       00000002 (2)\n+1C4774 Uncompressed Size     00000000 (0)\n \n-1C1C0B LOCAL HEADER #1737    04034B50 (67324752)\n-1C1C0F Extract Zip Spec      14 (20) '2.0'\n-1C1C10 Extract OS            00 (0) 'MS-DOS'\n-1C1C11 General Purpose Flag  0808 (2056)\n+1C4778 LOCAL HEADER #1737    04034B50 (67324752)\n+1C477C Extract Zip Spec      14 (20) '2.0'\n+1C477D Extract OS            00 (0) 'MS-DOS'\n+1C477E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C1C13 Compression Method    0008 (8) 'Deflated'\n-1C1C15 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C1C19 CRC                   00000000 (0)\n-1C1C1D Compressed Size       00000000 (0)\n-1C1C21 Uncompressed Size     00000000 (0)\n-1C1C25 Filename Length       0028 (40)\n-1C1C27 Extra Length          0000 (0)\n-1C1C29 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C4780 Compression Method    0008 (8) 'Deflated'\n+1C4782 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C4786 CRC                   00000000 (0)\n+1C478A Compressed Size       00000000 (0)\n+1C478E Uncompressed Size     00000000 (0)\n+1C4792 Filename Length       0017 (23)\n+1C4794 Extra Length          0000 (0)\n+1C4796 Filename              'XXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C1C29: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C4796: Filename 'XXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C1C51 PAYLOAD\n+1C47AD PAYLOAD               XX\n \n-1C229B DATA DESCRIPTOR       08074B50 (134695760)\n-1C229F CRC                   F6E65C00 (4142291968)\n-1C22A3 Compressed Size       0000064A (1610)\n-1C22A7 Uncompressed Size     00001C4D (7245)\n+1C47AF DATA DESCRIPTOR       08074B50 (134695760)\n+1C47B3 CRC                   00000000 (0)\n+1C47B7 Compressed Size       00000002 (2)\n+1C47BB Uncompressed Size     00000000 (0)\n \n-1C22AB LOCAL HEADER #1738    04034B50 (67324752)\n-1C22AF Extract Zip Spec      14 (20) '2.0'\n-1C22B0 Extract OS            00 (0) 'MS-DOS'\n-1C22B1 General Purpose Flag  0808 (2056)\n+1C47BF LOCAL HEADER #1738    04034B50 (67324752)\n+1C47C3 Extract Zip Spec      14 (20) '2.0'\n+1C47C4 Extract OS            00 (0) 'MS-DOS'\n+1C47C5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C22B3 Compression Method    0008 (8) 'Deflated'\n-1C22B5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C22B9 CRC                   00000000 (0)\n-1C22BD Compressed Size       00000000 (0)\n-1C22C1 Uncompressed Size     00000000 (0)\n-1C22C5 Filename Length       001E (30)\n-1C22C7 Extra Length          0000 (0)\n-1C22C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C47C7 Compression Method    0008 (8) 'Deflated'\n+1C47C9 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C47CD CRC                   00000000 (0)\n+1C47D1 Compressed Size       00000000 (0)\n+1C47D5 Uncompressed Size     00000000 (0)\n+1C47D9 Filename Length       001F (31)\n+1C47DB Extra Length          0000 (0)\n+1C47DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C22C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C47DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C22E7 PAYLOAD               XX\n+1C47FC PAYLOAD               XX\n \n-1C22E9 DATA DESCRIPTOR       08074B50 (134695760)\n-1C22ED CRC                   00000000 (0)\n-1C22F1 Compressed Size       00000002 (2)\n-1C22F5 Uncompressed Size     00000000 (0)\n+1C47FE DATA DESCRIPTOR       08074B50 (134695760)\n+1C4802 CRC                   00000000 (0)\n+1C4806 Compressed Size       00000002 (2)\n+1C480A Uncompressed Size     00000000 (0)\n \n-1C22F9 LOCAL HEADER #1739    04034B50 (67324752)\n-1C22FD Extract Zip Spec      14 (20) '2.0'\n-1C22FE Extract OS            00 (0) 'MS-DOS'\n-1C22FF General Purpose Flag  0808 (2056)\n+1C480E LOCAL HEADER #1739    04034B50 (67324752)\n+1C4812 Extract Zip Spec      14 (20) '2.0'\n+1C4813 Extract OS            00 (0) 'MS-DOS'\n+1C4814 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C2301 Compression Method    0008 (8) 'Deflated'\n-1C2303 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C2307 CRC                   00000000 (0)\n-1C230B Compressed Size       00000000 (0)\n-1C230F Uncompressed Size     00000000 (0)\n-1C2313 Filename Length       002A (42)\n-1C2315 Extra Length          0000 (0)\n-1C2317 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C4816 Compression Method    0008 (8) 'Deflated'\n+1C4818 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C481C CRC                   00000000 (0)\n+1C4820 Compressed Size       00000000 (0)\n+1C4824 Uncompressed Size     00000000 (0)\n+1C4828 Filename Length       0024 (36)\n+1C482A Extra Length          0000 (0)\n+1C482C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C2317: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C482C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C2341 PAYLOAD\n+1C4850 PAYLOAD               XX\n \n-1C25C9 DATA DESCRIPTOR       08074B50 (134695760)\n-1C25CD CRC                   54F4EBB3 (1425337267)\n-1C25D1 Compressed Size       00000288 (648)\n-1C25D5 Uncompressed Size     00000554 (1364)\n+1C4852 DATA DESCRIPTOR       08074B50 (134695760)\n+1C4856 CRC                   00000000 (0)\n+1C485A Compressed Size       00000002 (2)\n+1C485E Uncompressed Size     00000000 (0)\n \n-1C25D9 LOCAL HEADER #1740    04034B50 (67324752)\n-1C25DD Extract Zip Spec      14 (20) '2.0'\n-1C25DE Extract OS            00 (0) 'MS-DOS'\n-1C25DF General Purpose Flag  0808 (2056)\n+1C4862 LOCAL HEADER #1740    04034B50 (67324752)\n+1C4866 Extract Zip Spec      14 (20) '2.0'\n+1C4867 Extract OS            00 (0) 'MS-DOS'\n+1C4868 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C25E1 Compression Method    0008 (8) 'Deflated'\n-1C25E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C25E7 CRC                   00000000 (0)\n-1C25EB Compressed Size       00000000 (0)\n-1C25EF Uncompressed Size     00000000 (0)\n-1C25F3 Filename Length       0036 (54)\n-1C25F5 Extra Length          0000 (0)\n-1C25F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C486A Compression Method    0008 (8) 'Deflated'\n+1C486C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C4870 CRC                   00000000 (0)\n+1C4874 Compressed Size       00000000 (0)\n+1C4878 Uncompressed Size     00000000 (0)\n+1C487C Filename Length       0037 (55)\n+1C487E Extra Length          0000 (0)\n+1C4880 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C25F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C4880: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C262D PAYLOAD\n+1C48B7 PAYLOAD\n \n-1C284E DATA DESCRIPTOR       08074B50 (134695760)\n-1C2852 CRC                   22C3EE20 (583265824)\n-1C2856 Compressed Size       00000221 (545)\n-1C285A Uncompressed Size     000003CD (973)\n+1C51D5 DATA DESCRIPTOR       08074B50 (134695760)\n+1C51D9 CRC                   57AE068E (1471022734)\n+1C51DD Compressed Size       0000091E (2334)\n+1C51E1 Uncompressed Size     00001AD7 (6871)\n \n-1C285E LOCAL HEADER #1741    04034B50 (67324752)\n-1C2862 Extract Zip Spec      14 (20) '2.0'\n-1C2863 Extract OS            00 (0) 'MS-DOS'\n-1C2864 General Purpose Flag  0808 (2056)\n+1C51E5 LOCAL HEADER #1741    04034B50 (67324752)\n+1C51E9 Extract Zip Spec      14 (20) '2.0'\n+1C51EA Extract OS            00 (0) 'MS-DOS'\n+1C51EB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C2866 Compression Method    0008 (8) 'Deflated'\n-1C2868 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C286C CRC                   00000000 (0)\n-1C2870 Compressed Size       00000000 (0)\n-1C2874 Uncompressed Size     00000000 (0)\n-1C2878 Filename Length       002C (44)\n-1C287A Extra Length          0000 (0)\n-1C287C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C51ED Compression Method    0008 (8) 'Deflated'\n+1C51EF Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C51F3 CRC                   00000000 (0)\n+1C51F7 Compressed Size       00000000 (0)\n+1C51FB Uncompressed Size     00000000 (0)\n+1C51FF Filename Length       0022 (34)\n+1C5201 Extra Length          0000 (0)\n+1C5203 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C287C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C5203: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C28A8 PAYLOAD\n+1C5225 PAYLOAD               XX\n \n-1C2B9E DATA DESCRIPTOR       08074B50 (134695760)\n-1C2BA2 CRC                   1E2DFE7D (506330749)\n-1C2BA6 Compressed Size       000002F6 (758)\n-1C2BAA Uncompressed Size     00000684 (1668)\n+1C5227 DATA DESCRIPTOR       08074B50 (134695760)\n+1C522B CRC                   00000000 (0)\n+1C522F Compressed Size       00000002 (2)\n+1C5233 Uncompressed Size     00000000 (0)\n \n-1C2BAE LOCAL HEADER #1742    04034B50 (67324752)\n-1C2BB2 Extract Zip Spec      14 (20) '2.0'\n-1C2BB3 Extract OS            00 (0) 'MS-DOS'\n-1C2BB4 General Purpose Flag  0808 (2056)\n+1C5237 LOCAL HEADER #1742    04034B50 (67324752)\n+1C523B Extract Zip Spec      14 (20) '2.0'\n+1C523C Extract OS            00 (0) 'MS-DOS'\n+1C523D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C2BB6 Compression Method    0008 (8) 'Deflated'\n-1C2BB8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C2BBC CRC                   00000000 (0)\n-1C2BC0 Compressed Size       00000000 (0)\n-1C2BC4 Uncompressed Size     00000000 (0)\n-1C2BC8 Filename Length       002E (46)\n-1C2BCA Extra Length          0000 (0)\n-1C2BCC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C523F Compression Method    0008 (8) 'Deflated'\n+1C5241 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C5245 CRC                   00000000 (0)\n+1C5249 Compressed Size       00000000 (0)\n+1C524D Uncompressed Size     00000000 (0)\n+1C5251 Filename Length       0028 (40)\n+1C5253 Extra Length          0000 (0)\n+1C5255 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C2BCC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C5255: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C2BFA PAYLOAD\n+1C527D PAYLOAD               XX\n \n-1C2F14 DATA DESCRIPTOR       08074B50 (134695760)\n-1C2F18 CRC                   E0114FF9 (3759230969)\n-1C2F1C Compressed Size       0000031A (794)\n-1C2F20 Uncompressed Size     000007CF (1999)\n+1C527F DATA DESCRIPTOR       08074B50 (134695760)\n+1C5283 CRC                   00000000 (0)\n+1C5287 Compressed Size       00000002 (2)\n+1C528B Uncompressed Size     00000000 (0)\n \n-1C2F24 LOCAL HEADER #1743    04034B50 (67324752)\n-1C2F28 Extract Zip Spec      14 (20) '2.0'\n-1C2F29 Extract OS            00 (0) 'MS-DOS'\n-1C2F2A General Purpose Flag  0808 (2056)\n+1C528F LOCAL HEADER #1743    04034B50 (67324752)\n+1C5293 Extract Zip Spec      14 (20) '2.0'\n+1C5294 Extract OS            00 (0) 'MS-DOS'\n+1C5295 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C2F2C Compression Method    0008 (8) 'Deflated'\n-1C2F2E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C2F32 CRC                   00000000 (0)\n-1C2F36 Compressed Size       00000000 (0)\n-1C2F3A Uncompressed Size     00000000 (0)\n-1C2F3E Filename Length       0029 (41)\n-1C2F40 Extra Length          0000 (0)\n-1C2F42 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C5297 Compression Method    0008 (8) 'Deflated'\n+1C5299 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C529D CRC                   00000000 (0)\n+1C52A1 Compressed Size       00000000 (0)\n+1C52A5 Uncompressed Size     00000000 (0)\n+1C52A9 Filename Length       003B (59)\n+1C52AB Extra Length          0000 (0)\n+1C52AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C2F42: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C52AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C2F6B PAYLOAD\n+1C52E8 PAYLOAD\n \n-1C3180 DATA DESCRIPTOR       08074B50 (134695760)\n-1C3184 CRC                   C476DBA7 (3296123815)\n-1C3188 Compressed Size       00000215 (533)\n-1C318C Uncompressed Size     000003B5 (949)\n+1C5647 DATA DESCRIPTOR       08074B50 (134695760)\n+1C564B CRC                   F75A753A (4149900602)\n+1C564F Compressed Size       0000035F (863)\n+1C5653 Uncompressed Size     0000079E (1950)\n \n-1C3190 LOCAL HEADER #1744    04034B50 (67324752)\n-1C3194 Extract Zip Spec      14 (20) '2.0'\n-1C3195 Extract OS            00 (0) 'MS-DOS'\n-1C3196 General Purpose Flag  0808 (2056)\n+1C5657 LOCAL HEADER #1744    04034B50 (67324752)\n+1C565B Extract Zip Spec      14 (20) '2.0'\n+1C565C Extract OS            00 (0) 'MS-DOS'\n+1C565D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C3198 Compression Method    0008 (8) 'Deflated'\n-1C319A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C319E CRC                   00000000 (0)\n-1C31A2 Compressed Size       00000000 (0)\n-1C31A6 Uncompressed Size     00000000 (0)\n-1C31AA Filename Length       0029 (41)\n-1C31AC Extra Length          0000 (0)\n-1C31AE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C565F Compression Method    0008 (8) 'Deflated'\n+1C5661 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C5665 CRC                   00000000 (0)\n+1C5669 Compressed Size       00000000 (0)\n+1C566D Uncompressed Size     00000000 (0)\n+1C5671 Filename Length       003C (60)\n+1C5673 Extra Length          0000 (0)\n+1C5675 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C31AE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C5675: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C31D7 PAYLOAD\n+1C56B1 PAYLOAD\n \n-1C35A3 DATA DESCRIPTOR       08074B50 (134695760)\n-1C35A7 CRC                   A69542CD (2794799821)\n-1C35AB Compressed Size       000003CC (972)\n-1C35AF Uncompressed Size     00000A92 (2706)\n+1C5A20 DATA DESCRIPTOR       08074B50 (134695760)\n+1C5A24 CRC                   4D63953A (1298371898)\n+1C5A28 Compressed Size       0000036F (879)\n+1C5A2C Uncompressed Size     0000081B (2075)\n \n-1C35B3 LOCAL HEADER #1745    04034B50 (67324752)\n-1C35B7 Extract Zip Spec      14 (20) '2.0'\n-1C35B8 Extract OS            00 (0) 'MS-DOS'\n-1C35B9 General Purpose Flag  0808 (2056)\n+1C5A30 LOCAL HEADER #1745    04034B50 (67324752)\n+1C5A34 Extract Zip Spec      14 (20) '2.0'\n+1C5A35 Extract OS            00 (0) 'MS-DOS'\n+1C5A36 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C35BB Compression Method    0008 (8) 'Deflated'\n-1C35BD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C35C1 CRC                   00000000 (0)\n-1C35C5 Compressed Size       00000000 (0)\n-1C35C9 Uncompressed Size     00000000 (0)\n-1C35CD Filename Length       0030 (48)\n-1C35CF Extra Length          0000 (0)\n-1C35D1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C5A38 Compression Method    0008 (8) 'Deflated'\n+1C5A3A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C5A3E CRC                   00000000 (0)\n+1C5A42 Compressed Size       00000000 (0)\n+1C5A46 Uncompressed Size     00000000 (0)\n+1C5A4A Filename Length       0037 (55)\n+1C5A4C Extra Length          0000 (0)\n+1C5A4E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C35D1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C5A4E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C3601 PAYLOAD\n+1C5A85 PAYLOAD\n \n-1C3872 DATA DESCRIPTOR       08074B50 (134695760)\n-1C3876 CRC                   A83F3E21 (2822716961)\n-1C387A Compressed Size       00000271 (625)\n-1C387E Uncompressed Size     000004DA (1242)\n+1C5FAB DATA DESCRIPTOR       08074B50 (134695760)\n+1C5FAF CRC                   D08B9F5C (3498811228)\n+1C5FB3 Compressed Size       00000526 (1318)\n+1C5FB7 Uncompressed Size     00000A60 (2656)\n \n-1C3882 LOCAL HEADER #1746    04034B50 (67324752)\n-1C3886 Extract Zip Spec      14 (20) '2.0'\n-1C3887 Extract OS            00 (0) 'MS-DOS'\n-1C3888 General Purpose Flag  0808 (2056)\n+1C5FBB LOCAL HEADER #1746    04034B50 (67324752)\n+1C5FBF Extract Zip Spec      14 (20) '2.0'\n+1C5FC0 Extract OS            00 (0) 'MS-DOS'\n+1C5FC1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C388A Compression Method    0008 (8) 'Deflated'\n-1C388C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C3890 CRC                   00000000 (0)\n-1C3894 Compressed Size       00000000 (0)\n-1C3898 Uncompressed Size     00000000 (0)\n-1C389C Filename Length       0030 (48)\n-1C389E Extra Length          0000 (0)\n-1C38A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C5FC3 Compression Method    0008 (8) 'Deflated'\n+1C5FC5 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C5FC9 CRC                   00000000 (0)\n+1C5FCD Compressed Size       00000000 (0)\n+1C5FD1 Uncompressed Size     00000000 (0)\n+1C5FD5 Filename Length       0038 (56)\n+1C5FD7 Extra Length          0000 (0)\n+1C5FD9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C38A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C5FD9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C38D0 PAYLOAD\n+1C6011 PAYLOAD\n \n-1C3B9E DATA DESCRIPTOR       08074B50 (134695760)\n-1C3BA2 CRC                   75803CF4 (1971338484)\n-1C3BA6 Compressed Size       000002CE (718)\n-1C3BAA Uncompressed Size     0000059F (1439)\n+1C6753 DATA DESCRIPTOR       08074B50 (134695760)\n+1C6757 CRC                   CC968FE2 (3432419298)\n+1C675B Compressed Size       00000742 (1858)\n+1C675F Uncompressed Size     00001758 (5976)\n \n-1C3BAE LOCAL HEADER #1747    04034B50 (67324752)\n-1C3BB2 Extract Zip Spec      14 (20) '2.0'\n-1C3BB3 Extract OS            00 (0) 'MS-DOS'\n-1C3BB4 General Purpose Flag  0808 (2056)\n+1C6763 LOCAL HEADER #1747    04034B50 (67324752)\n+1C6767 Extract Zip Spec      14 (20) '2.0'\n+1C6768 Extract OS            00 (0) 'MS-DOS'\n+1C6769 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C3BB6 Compression Method    0008 (8) 'Deflated'\n-1C3BB8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C3BBC CRC                   00000000 (0)\n-1C3BC0 Compressed Size       00000000 (0)\n-1C3BC4 Uncompressed Size     00000000 (0)\n-1C3BC8 Filename Length       002A (42)\n-1C3BCA Extra Length          0000 (0)\n-1C3BCC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C676B Compression Method    0008 (8) 'Deflated'\n+1C676D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C6771 CRC                   00000000 (0)\n+1C6775 Compressed Size       00000000 (0)\n+1C6779 Uncompressed Size     00000000 (0)\n+1C677D Filename Length       003D (61)\n+1C677F Extra Length          0000 (0)\n+1C6781 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C3BCC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C6781: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C3BF6 PAYLOAD               XX\n+1C67BE PAYLOAD\n \n-1C3BF8 DATA DESCRIPTOR       08074B50 (134695760)\n-1C3BFC CRC                   00000000 (0)\n-1C3C00 Compressed Size       00000002 (2)\n-1C3C04 Uncompressed Size     00000000 (0)\n+1C6ECF DATA DESCRIPTOR       08074B50 (134695760)\n+1C6ED3 CRC                   1549C790 (357156752)\n+1C6ED7 Compressed Size       00000711 (1809)\n+1C6EDB Uncompressed Size     000014F8 (5368)\n \n-1C3C08 LOCAL HEADER #1748    04034B50 (67324752)\n-1C3C0C Extract Zip Spec      14 (20) '2.0'\n-1C3C0D Extract OS            00 (0) 'MS-DOS'\n-1C3C0E General Purpose Flag  0808 (2056)\n+1C6EDF LOCAL HEADER #1748    04034B50 (67324752)\n+1C6EE3 Extract Zip Spec      14 (20) '2.0'\n+1C6EE4 Extract OS            00 (0) 'MS-DOS'\n+1C6EE5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C3C10 Compression Method    0008 (8) 'Deflated'\n-1C3C12 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C3C16 CRC                   00000000 (0)\n-1C3C1A Compressed Size       00000000 (0)\n-1C3C1E Uncompressed Size     00000000 (0)\n-1C3C22 Filename Length       0042 (66)\n-1C3C24 Extra Length          0000 (0)\n-1C3C26 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C6EE7 Compression Method    0008 (8) 'Deflated'\n+1C6EE9 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C6EED CRC                   00000000 (0)\n+1C6EF1 Compressed Size       00000000 (0)\n+1C6EF5 Uncompressed Size     00000000 (0)\n+1C6EF9 Filename Length       0035 (53)\n+1C6EFB Extra Length          0000 (0)\n+1C6EFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C3C26: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C6EFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C3C68 PAYLOAD\n+1C6F32 PAYLOAD\n \n-1C3E8D DATA DESCRIPTOR       08074B50 (134695760)\n-1C3E91 CRC                   823F4C5B (2185186395)\n-1C3E95 Compressed Size       00000225 (549)\n-1C3E99 Uncompressed Size     000003EC (1004)\n+1C71EA DATA DESCRIPTOR       08074B50 (134695760)\n+1C71EE CRC                   764B1E75 (1984634485)\n+1C71F2 Compressed Size       000002B8 (696)\n+1C71F6 Uncompressed Size     0000054F (1359)\n \n-1C3E9D LOCAL HEADER #1749    04034B50 (67324752)\n-1C3EA1 Extract Zip Spec      14 (20) '2.0'\n-1C3EA2 Extract OS            00 (0) 'MS-DOS'\n-1C3EA3 General Purpose Flag  0808 (2056)\n+1C71FA LOCAL HEADER #1749    04034B50 (67324752)\n+1C71FE Extract Zip Spec      14 (20) '2.0'\n+1C71FF Extract OS            00 (0) 'MS-DOS'\n+1C7200 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C3EA5 Compression Method    0008 (8) 'Deflated'\n-1C3EA7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C3EAB CRC                   00000000 (0)\n-1C3EAF Compressed Size       00000000 (0)\n-1C3EB3 Uncompressed Size     00000000 (0)\n-1C3EB7 Filename Length       0025 (37)\n-1C3EB9 Extra Length          0000 (0)\n-1C3EBB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C7202 Compression Method    0008 (8) 'Deflated'\n+1C7204 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C7208 CRC                   00000000 (0)\n+1C720C Compressed Size       00000000 (0)\n+1C7210 Uncompressed Size     00000000 (0)\n+1C7214 Filename Length       003B (59)\n+1C7216 Extra Length          0000 (0)\n+1C7218 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C3EBB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C7218: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C3EE0 PAYLOAD               XX\n+1C7253 PAYLOAD\n \n-1C3EE2 DATA DESCRIPTOR       08074B50 (134695760)\n-1C3EE6 CRC                   00000000 (0)\n-1C3EEA Compressed Size       00000002 (2)\n-1C3EEE Uncompressed Size     00000000 (0)\n+1C7838 DATA DESCRIPTOR       08074B50 (134695760)\n+1C783C CRC                   9EFE4E67 (2667466343)\n+1C7840 Compressed Size       000005E5 (1509)\n+1C7844 Uncompressed Size     00000EDF (3807)\n \n-1C3EF2 LOCAL HEADER #1750    04034B50 (67324752)\n-1C3EF6 Extract Zip Spec      14 (20) '2.0'\n-1C3EF7 Extract OS            00 (0) 'MS-DOS'\n-1C3EF8 General Purpose Flag  0808 (2056)\n+1C7848 LOCAL HEADER #1750    04034B50 (67324752)\n+1C784C Extract Zip Spec      14 (20) '2.0'\n+1C784D Extract OS            00 (0) 'MS-DOS'\n+1C784E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C3EFA Compression Method    0008 (8) 'Deflated'\n-1C3EFC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C3F00 CRC                   00000000 (0)\n-1C3F04 Compressed Size       00000000 (0)\n-1C3F08 Uncompressed Size     00000000 (0)\n-1C3F0C Filename Length       0037 (55)\n-1C3F0E Extra Length          0000 (0)\n-1C3F10 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C7850 Compression Method    0008 (8) 'Deflated'\n+1C7852 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C7856 CRC                   00000000 (0)\n+1C785A Compressed Size       00000000 (0)\n+1C785E Uncompressed Size     00000000 (0)\n+1C7862 Filename Length       0035 (53)\n+1C7864 Extra Length          0000 (0)\n+1C7866 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C3F10: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C7866: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C3F47 PAYLOAD\n+1C789B PAYLOAD\n \n-1C44BA DATA DESCRIPTOR       08074B50 (134695760)\n-1C44BE CRC                   68E206BA (1759643322)\n-1C44C2 Compressed Size       00000573 (1395)\n-1C44C6 Uncompressed Size     000013F7 (5111)\n+1C8513 DATA DESCRIPTOR       08074B50 (134695760)\n+1C8517 CRC                   339C3654 (865875540)\n+1C851B Compressed Size       00000C78 (3192)\n+1C851F Uncompressed Size     0000360D (13837)\n \n-1C44CA LOCAL HEADER #1751    04034B50 (67324752)\n-1C44CE Extract Zip Spec      14 (20) '2.0'\n-1C44CF Extract OS            00 (0) 'MS-DOS'\n-1C44D0 General Purpose Flag  0808 (2056)\n+1C8523 LOCAL HEADER #1751    04034B50 (67324752)\n+1C8527 Extract Zip Spec      14 (20) '2.0'\n+1C8528 Extract OS            00 (0) 'MS-DOS'\n+1C8529 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C44D2 Compression Method    0008 (8) 'Deflated'\n-1C44D4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C44D8 CRC                   00000000 (0)\n-1C44DC Compressed Size       00000000 (0)\n-1C44E0 Uncompressed Size     00000000 (0)\n-1C44E4 Filename Length       0024 (36)\n-1C44E6 Extra Length          0000 (0)\n-1C44E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C852B Compression Method    0008 (8) 'Deflated'\n+1C852D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C8531 CRC                   00000000 (0)\n+1C8535 Compressed Size       00000000 (0)\n+1C8539 Uncompressed Size     00000000 (0)\n+1C853D Filename Length       003C (60)\n+1C853F Extra Length          0000 (0)\n+1C8541 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C44E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C8541: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C450C PAYLOAD               XX\n+1C857D PAYLOAD\n \n-1C450E DATA DESCRIPTOR       08074B50 (134695760)\n-1C4512 CRC                   00000000 (0)\n-1C4516 Compressed Size       00000002 (2)\n-1C451A Uncompressed Size     00000000 (0)\n+1C8B06 DATA DESCRIPTOR       08074B50 (134695760)\n+1C8B0A CRC                   2E60A6BB (778086075)\n+1C8B0E Compressed Size       00000589 (1417)\n+1C8B12 Uncompressed Size     00000B99 (2969)\n \n-1C451E LOCAL HEADER #1752    04034B50 (67324752)\n-1C4522 Extract Zip Spec      14 (20) '2.0'\n-1C4523 Extract OS            00 (0) 'MS-DOS'\n-1C4524 General Purpose Flag  0808 (2056)\n+1C8B16 LOCAL HEADER #1752    04034B50 (67324752)\n+1C8B1A Extract Zip Spec      14 (20) '2.0'\n+1C8B1B Extract OS            00 (0) 'MS-DOS'\n+1C8B1C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C4526 Compression Method    0008 (8) 'Deflated'\n-1C4528 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C452C CRC                   00000000 (0)\n-1C4530 Compressed Size       00000000 (0)\n-1C4534 Uncompressed Size     00000000 (0)\n-1C4538 Filename Length       002C (44)\n-1C453A Extra Length          0000 (0)\n-1C453C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C8B1E Compression Method    0008 (8) 'Deflated'\n+1C8B20 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C8B24 CRC                   00000000 (0)\n+1C8B28 Compressed Size       00000000 (0)\n+1C8B2C Uncompressed Size     00000000 (0)\n+1C8B30 Filename Length       003E (62)\n+1C8B32 Extra Length          0000 (0)\n+1C8B34 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C453C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C8B34: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C4568 PAYLOAD               XX\n+1C8B72 PAYLOAD\n \n-1C456A DATA DESCRIPTOR       08074B50 (134695760)\n-1C456E CRC                   00000000 (0)\n-1C4572 Compressed Size       00000002 (2)\n-1C4576 Uncompressed Size     00000000 (0)\n+1C92A3 DATA DESCRIPTOR       08074B50 (134695760)\n+1C92A7 CRC                   654FFB26 (1699740454)\n+1C92AB Compressed Size       00000731 (1841)\n+1C92AF Uncompressed Size     000012CA (4810)\n \n-1C457A LOCAL HEADER #1753    04034B50 (67324752)\n-1C457E Extract Zip Spec      14 (20) '2.0'\n-1C457F Extract OS            00 (0) 'MS-DOS'\n-1C4580 General Purpose Flag  0808 (2056)\n+1C92B3 LOCAL HEADER #1753    04034B50 (67324752)\n+1C92B7 Extract Zip Spec      14 (20) '2.0'\n+1C92B8 Extract OS            00 (0) 'MS-DOS'\n+1C92B9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C4582 Compression Method    0008 (8) 'Deflated'\n-1C4584 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C4588 CRC                   00000000 (0)\n-1C458C Compressed Size       00000000 (0)\n-1C4590 Uncompressed Size     00000000 (0)\n-1C4594 Filename Length       003C (60)\n-1C4596 Extra Length          0000 (0)\n-1C4598 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C92BB Compression Method    0008 (8) 'Deflated'\n+1C92BD Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C92C1 CRC                   00000000 (0)\n+1C92C5 Compressed Size       00000000 (0)\n+1C92C9 Uncompressed Size     00000000 (0)\n+1C92CD Filename Length       002F (47)\n+1C92CF Extra Length          0000 (0)\n+1C92D1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C4598: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C92D1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C45D4 PAYLOAD\n+1C9300 PAYLOAD\n \n-1C47F9 DATA DESCRIPTOR       08074B50 (134695760)\n-1C47FD CRC                   CC53D052 (3428044882)\n-1C4801 Compressed Size       00000225 (549)\n-1C4805 Uncompressed Size     000003D7 (983)\n+1C9C22 DATA DESCRIPTOR       08074B50 (134695760)\n+1C9C26 CRC                   1538A07E (356032638)\n+1C9C2A Compressed Size       00000922 (2338)\n+1C9C2E Uncompressed Size     00001ABD (6845)\n \n-1C4809 LOCAL HEADER #1754    04034B50 (67324752)\n-1C480D Extract Zip Spec      14 (20) '2.0'\n-1C480E Extract OS            00 (0) 'MS-DOS'\n-1C480F General Purpose Flag  0808 (2056)\n+1C9C32 LOCAL HEADER #1754    04034B50 (67324752)\n+1C9C36 Extract Zip Spec      14 (20) '2.0'\n+1C9C37 Extract OS            00 (0) 'MS-DOS'\n+1C9C38 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C4811 Compression Method    0008 (8) 'Deflated'\n-1C4813 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C4817 CRC                   00000000 (0)\n-1C481B Compressed Size       00000000 (0)\n-1C481F Uncompressed Size     00000000 (0)\n-1C4823 Filename Length       0026 (38)\n-1C4825 Extra Length          0000 (0)\n-1C4827 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1C9C3A Compression Method    0008 (8) 'Deflated'\n+1C9C3C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1C9C40 CRC                   00000000 (0)\n+1C9C44 Compressed Size       00000000 (0)\n+1C9C48 Uncompressed Size     00000000 (0)\n+1C9C4C Filename Length       0040 (64)\n+1C9C4E Extra Length          0000 (0)\n+1C9C50 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C4827: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1C9C50: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C484D PAYLOAD               XX\n+1C9C90 PAYLOAD\n \n-1C484F DATA DESCRIPTOR       08074B50 (134695760)\n-1C4853 CRC                   00000000 (0)\n-1C4857 Compressed Size       00000002 (2)\n-1C485B Uncompressed Size     00000000 (0)\n+1CA06E DATA DESCRIPTOR       08074B50 (134695760)\n+1CA072 CRC                   CA63D3D1 (3395539921)\n+1CA076 Compressed Size       000003DE (990)\n+1CA07A Uncompressed Size     00000A30 (2608)\n \n-1C485F LOCAL HEADER #1755    04034B50 (67324752)\n-1C4863 Extract Zip Spec      14 (20) '2.0'\n-1C4864 Extract OS            00 (0) 'MS-DOS'\n-1C4865 General Purpose Flag  0808 (2056)\n+1CA07E LOCAL HEADER #1755    04034B50 (67324752)\n+1CA082 Extract Zip Spec      14 (20) '2.0'\n+1CA083 Extract OS            00 (0) 'MS-DOS'\n+1CA084 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C4867 Compression Method    0008 (8) 'Deflated'\n-1C4869 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C486D CRC                   00000000 (0)\n-1C4871 Compressed Size       00000000 (0)\n-1C4875 Uncompressed Size     00000000 (0)\n-1C4879 Filename Length       003D (61)\n-1C487B Extra Length          0000 (0)\n-1C487D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1CA086 Compression Method    0008 (8) 'Deflated'\n+1CA088 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1CA08C CRC                   00000000 (0)\n+1CA090 Compressed Size       00000000 (0)\n+1CA094 Uncompressed Size     00000000 (0)\n+1CA098 Filename Length       0039 (57)\n+1CA09A Extra Length          0000 (0)\n+1CA09C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C487D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1CA09C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C48BA PAYLOAD\n+1CA0D5 PAYLOAD\n \n-1C4ADF DATA DESCRIPTOR       08074B50 (134695760)\n-1C4AE3 CRC                   4A3ABC52 (1245363282)\n-1C4AE7 Compressed Size       00000225 (549)\n-1C4AEB Uncompressed Size     000003DD (989)\n+1CA411 DATA DESCRIPTOR       08074B50 (134695760)\n+1CA415 CRC                   12627859 (308443225)\n+1CA419 Compressed Size       0000033C (828)\n+1CA41D Uncompressed Size     00000705 (1797)\n \n-1C4AEF LOCAL HEADER #1756    04034B50 (67324752)\n-1C4AF3 Extract Zip Spec      14 (20) '2.0'\n-1C4AF4 Extract OS            00 (0) 'MS-DOS'\n-1C4AF5 General Purpose Flag  0808 (2056)\n+1CA421 LOCAL HEADER #1756    04034B50 (67324752)\n+1CA425 Extract Zip Spec      14 (20) '2.0'\n+1CA426 Extract OS            00 (0) 'MS-DOS'\n+1CA427 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C4AF7 Compression Method    0008 (8) 'Deflated'\n-1C4AF9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C4AFD CRC                   00000000 (0)\n-1C4B01 Compressed Size       00000000 (0)\n-1C4B05 Uncompressed Size     00000000 (0)\n-1C4B09 Filename Length       001E (30)\n-1C4B0B Extra Length          0000 (0)\n-1C4B0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1CA429 Compression Method    0008 (8) 'Deflated'\n+1CA42B Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1CA42F CRC                   00000000 (0)\n+1CA433 Compressed Size       00000000 (0)\n+1CA437 Uncompressed Size     00000000 (0)\n+1CA43B Filename Length       0034 (52)\n+1CA43D Extra Length          0000 (0)\n+1CA43F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C4B0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1CA43F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C4B2B PAYLOAD               XX\n+1CA473 PAYLOAD\n \n-1C4B2D DATA DESCRIPTOR       08074B50 (134695760)\n-1C4B31 CRC                   00000000 (0)\n-1C4B35 Compressed Size       00000002 (2)\n-1C4B39 Uncompressed Size     00000000 (0)\n+1CAA85 DATA DESCRIPTOR       08074B50 (134695760)\n+1CAA89 CRC                   69B75EA9 (1773625001)\n+1CAA8D Compressed Size       00000612 (1554)\n+1CAA91 Uncompressed Size     00000E67 (3687)\n \n-1C4B3D LOCAL HEADER #1757    04034B50 (67324752)\n-1C4B41 Extract Zip Spec      14 (20) '2.0'\n-1C4B42 Extract OS            00 (0) 'MS-DOS'\n-1C4B43 General Purpose Flag  0808 (2056)\n+1CAA95 LOCAL HEADER #1757    04034B50 (67324752)\n+1CAA99 Extract Zip Spec      14 (20) '2.0'\n+1CAA9A Extract OS            00 (0) 'MS-DOS'\n+1CAA9B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C4B45 Compression Method    0008 (8) 'Deflated'\n-1C4B47 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C4B4B CRC                   00000000 (0)\n-1C4B4F Compressed Size       00000000 (0)\n-1C4B53 Uncompressed Size     00000000 (0)\n-1C4B57 Filename Length       002B (43)\n-1C4B59 Extra Length          0000 (0)\n-1C4B5B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1CAA9D Compression Method    0008 (8) 'Deflated'\n+1CAA9F Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1CAAA3 CRC                   00000000 (0)\n+1CAAA7 Compressed Size       00000000 (0)\n+1CAAAB Uncompressed Size     00000000 (0)\n+1CAAAF Filename Length       0033 (51)\n+1CAAB1 Extra Length          0000 (0)\n+1CAAB3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C4B5B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1CAAB3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C4B86 PAYLOAD\n+1CAAE6 PAYLOAD\n \n-1C4F22 DATA DESCRIPTOR       08074B50 (134695760)\n-1C4F26 CRC                   ECC626C6 (3972409030)\n-1C4F2A Compressed Size       0000039C (924)\n-1C4F2E Uncompressed Size     00000B01 (2817)\n+1CB0B2 DATA DESCRIPTOR       08074B50 (134695760)\n+1CB0B6 CRC                   6E56FB5B (1851194203)\n+1CB0BA Compressed Size       000005CC (1484)\n+1CB0BE Uncompressed Size     00000D09 (3337)\n \n-1C4F32 LOCAL HEADER #1758    04034B50 (67324752)\n-1C4F36 Extract Zip Spec      14 (20) '2.0'\n-1C4F37 Extract OS            00 (0) 'MS-DOS'\n-1C4F38 General Purpose Flag  0808 (2056)\n+1CB0C2 LOCAL HEADER #1758    04034B50 (67324752)\n+1CB0C6 Extract Zip Spec      14 (20) '2.0'\n+1CB0C7 Extract OS            00 (0) 'MS-DOS'\n+1CB0C8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C4F3A Compression Method    0008 (8) 'Deflated'\n-1C4F3C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C4F40 CRC                   00000000 (0)\n-1C4F44 Compressed Size       00000000 (0)\n-1C4F48 Uncompressed Size     00000000 (0)\n-1C4F4C Filename Length       001D (29)\n-1C4F4E Extra Length          0000 (0)\n-1C4F50 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1CB0CA Compression Method    0008 (8) 'Deflated'\n+1CB0CC Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1CB0D0 CRC                   00000000 (0)\n+1CB0D4 Compressed Size       00000000 (0)\n+1CB0D8 Uncompressed Size     00000000 (0)\n+1CB0DC Filename Length       003C (60)\n+1CB0DE Extra Length          0000 (0)\n+1CB0E0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C4F50: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1CB0E0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C4F6D PAYLOAD               XX\n+1CB11C PAYLOAD\n \n-1C4F6F DATA DESCRIPTOR       08074B50 (134695760)\n-1C4F73 CRC                   00000000 (0)\n-1C4F77 Compressed Size       00000002 (2)\n-1C4F7B Uncompressed Size     00000000 (0)\n+1CB6A5 DATA DESCRIPTOR       08074B50 (134695760)\n+1CB6A9 CRC                   812FC9F0 (2167392752)\n+1CB6AD Compressed Size       00000589 (1417)\n+1CB6B1 Uncompressed Size     00000D20 (3360)\n \n-1C4F7F LOCAL HEADER #1759    04034B50 (67324752)\n-1C4F83 Extract Zip Spec      14 (20) '2.0'\n-1C4F84 Extract OS            00 (0) 'MS-DOS'\n-1C4F85 General Purpose Flag  0808 (2056)\n+1CB6B5 LOCAL HEADER #1759    04034B50 (67324752)\n+1CB6B9 Extract Zip Spec      14 (20) '2.0'\n+1CB6BA Extract OS            00 (0) 'MS-DOS'\n+1CB6BB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C4F87 Compression Method    0008 (8) 'Deflated'\n-1C4F89 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C4F8D CRC                   00000000 (0)\n-1C4F91 Compressed Size       00000000 (0)\n-1C4F95 Uncompressed Size     00000000 (0)\n-1C4F99 Filename Length       002C (44)\n-1C4F9B Extra Length          0000 (0)\n-1C4F9D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1CB6BD Compression Method    0008 (8) 'Deflated'\n+1CB6BF Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1CB6C3 CRC                   00000000 (0)\n+1CB6C7 Compressed Size       00000000 (0)\n+1CB6CB Uncompressed Size     00000000 (0)\n+1CB6CF Filename Length       003E (62)\n+1CB6D1 Extra Length          0000 (0)\n+1CB6D3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C4F9D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1CB6D3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C4FC9 PAYLOAD\n+1CB711 PAYLOAD\n \n-1C51DC DATA DESCRIPTOR       08074B50 (134695760)\n-1C51E0 CRC                   1456EFA1 (341241761)\n-1C51E4 Compressed Size       00000213 (531)\n-1C51E8 Uncompressed Size     000003BB (955)\n+1CBF0A DATA DESCRIPTOR       08074B50 (134695760)\n+1CBF0E CRC                   52E473B9 (1390703545)\n+1CBF12 Compressed Size       000007F9 (2041)\n+1CBF16 Uncompressed Size     0000131F (4895)\n \n-1C51EC LOCAL HEADER #1760    04034B50 (67324752)\n-1C51F0 Extract Zip Spec      14 (20) '2.0'\n-1C51F1 Extract OS            00 (0) 'MS-DOS'\n-1C51F2 General Purpose Flag  0808 (2056)\n+1CBF1A LOCAL HEADER #1760    04034B50 (67324752)\n+1CBF1E Extract Zip Spec      14 (20) '2.0'\n+1CBF1F Extract OS            00 (0) 'MS-DOS'\n+1CBF20 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C51F4 Compression Method    0008 (8) 'Deflated'\n-1C51F6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1C51FA CRC                   00000000 (0)\n-1C51FE Compressed Size       00000000 (0)\n-1C5202 Uncompressed Size     00000000 (0)\n-1C5206 Filename Length       002B (43)\n-1C5208 Extra Length          0000 (0)\n-1C520A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1CBF22 Compression Method    0008 (8) 'Deflated'\n+1CBF24 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1CBF28 CRC                   00000000 (0)\n+1CBF2C Compressed Size       00000000 (0)\n+1CBF30 Uncompressed Size     00000000 (0)\n+1CBF34 Filename Length       0039 (57)\n+1CBF36 Extra Length          0000 (0)\n+1CBF38 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C520A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1CBF38: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C5235 PAYLOAD\n+1CBF71 PAYLOAD\n \n-1C5449 DATA DESCRIPTOR       08074B50 (134695760)\n-1C544D CRC                   E92C073F (3911976767)\n-1C5451 Compressed Size       00000214 (532)\n-1C5455 Uncompressed Size     000003B9 (953)\n+1CC4E9 DATA DESCRIPTOR       08074B50 (134695760)\n+1CC4ED CRC                   DB2E2C1B (3677236251)\n+1CC4F1 Compressed Size       00000578 (1400)\n+1CC4F5 Uncompressed Size     00000B80 (2944)\n \n-1C5459 LOCAL HEADER #1761    04034B50 (67324752)\n-1C545D Extract Zip Spec      14 (20) '2.0'\n-1C545E Extract OS            00 (0) 'MS-DOS'\n-1C545F General Purpose Flag  0808 (2056)\n+1CC4F9 LOCAL HEADER #1761    04034B50 (67324752)\n+1CC4FD Extract Zip Spec      14 (20) '2.0'\n+1CC4FE Extract OS            00 (0) 'MS-DOS'\n+1CC4FF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C5461 Compression Method    0008 (8) 'Deflated'\n-1C5463 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1C5467 CRC                   00000000 (0)\n-1C546B Compressed Size       00000000 (0)\n-1C546F Uncompressed Size     00000000 (0)\n-1C5473 Filename Length       0010 (16)\n-1C5475 Extra Length          0000 (0)\n-1C5477 Filename              'XXXXXXXXXXXXXXXX'\n+1CC501 Compression Method    0008 (8) 'Deflated'\n+1CC503 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1CC507 CRC                   00000000 (0)\n+1CC50B Compressed Size       00000000 (0)\n+1CC50F Uncompressed Size     00000000 (0)\n+1CC513 Filename Length       0034 (52)\n+1CC515 Extra Length          0000 (0)\n+1CC517 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C5477: Filename 'XXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1CC517: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C5487 PAYLOAD               XX\n+1CC54B PAYLOAD\n \n-1C5489 DATA DESCRIPTOR       08074B50 (134695760)\n-1C548D CRC                   00000000 (0)\n-1C5491 Compressed Size       00000002 (2)\n-1C5495 Uncompressed Size     00000000 (0)\n+1CC9D4 DATA DESCRIPTOR       08074B50 (134695760)\n+1CC9D8 CRC                   4654378B (1179924363)\n+1CC9DC Compressed Size       00000489 (1161)\n+1CC9E0 Uncompressed Size     0000092E (2350)\n \n-1C5499 LOCAL HEADER #1762    04034B50 (67324752)\n-1C549D Extract Zip Spec      14 (20) '2.0'\n-1C549E Extract OS            00 (0) 'MS-DOS'\n-1C549F General Purpose Flag  0808 (2056)\n+1CC9E4 LOCAL HEADER #1762    04034B50 (67324752)\n+1CC9E8 Extract Zip Spec      14 (20) '2.0'\n+1CC9E9 Extract OS            00 (0) 'MS-DOS'\n+1CC9EA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C54A1 Compression Method    0008 (8) 'Deflated'\n-1C54A3 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1C54A7 CRC                   00000000 (0)\n-1C54AB Compressed Size       00000000 (0)\n-1C54AF Uncompressed Size     00000000 (0)\n-1C54B3 Filename Length       0017 (23)\n-1C54B5 Extra Length          0000 (0)\n-1C54B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXX'\n+1CC9EC Compression Method    0008 (8) 'Deflated'\n+1CC9EE Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1CC9F2 CRC                   00000000 (0)\n+1CC9F6 Compressed Size       00000000 (0)\n+1CC9FA Uncompressed Size     00000000 (0)\n+1CC9FE Filename Length       0030 (48)\n+1CCA00 Extra Length          0000 (0)\n+1CCA02 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C54B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1CCA02: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C54CE PAYLOAD               XX\n+1CCA32 PAYLOAD\n \n-1C54D0 DATA DESCRIPTOR       08074B50 (134695760)\n-1C54D4 CRC                   00000000 (0)\n-1C54D8 Compressed Size       00000002 (2)\n-1C54DC Uncompressed Size     00000000 (0)\n+1CD1C1 DATA DESCRIPTOR       08074B50 (134695760)\n+1CD1C5 CRC                   7728EBEC (1999170540)\n+1CD1C9 Compressed Size       0000078F (1935)\n+1CD1CD Uncompressed Size     000017BD (6077)\n \n-1C54E0 LOCAL HEADER #1763    04034B50 (67324752)\n-1C54E4 Extract Zip Spec      14 (20) '2.0'\n-1C54E5 Extract OS            00 (0) 'MS-DOS'\n-1C54E6 General Purpose Flag  0808 (2056)\n+1CD1D1 LOCAL HEADER #1763    04034B50 (67324752)\n+1CD1D5 Extract Zip Spec      14 (20) '2.0'\n+1CD1D6 Extract OS            00 (0) 'MS-DOS'\n+1CD1D7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C54E8 Compression Method    0008 (8) 'Deflated'\n-1C54EA Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1C54EE CRC                   00000000 (0)\n-1C54F2 Compressed Size       00000000 (0)\n-1C54F6 Uncompressed Size     00000000 (0)\n-1C54FA Filename Length       001F (31)\n-1C54FC Extra Length          0000 (0)\n-1C54FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1CD1D9 Compression Method    0008 (8) 'Deflated'\n+1CD1DB Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1CD1DF CRC                   00000000 (0)\n+1CD1E3 Compressed Size       00000000 (0)\n+1CD1E7 Uncompressed Size     00000000 (0)\n+1CD1EB Filename Length       003D (61)\n+1CD1ED Extra Length          0000 (0)\n+1CD1EF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C54FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1CD1EF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C551D PAYLOAD               XX\n+1CD22C PAYLOAD\n \n-1C551F DATA DESCRIPTOR       08074B50 (134695760)\n-1C5523 CRC                   00000000 (0)\n-1C5527 Compressed Size       00000002 (2)\n-1C552B Uncompressed Size     00000000 (0)\n+1CDB16 DATA DESCRIPTOR       08074B50 (134695760)\n+1CDB1A CRC                   60D7241E (1624712222)\n+1CDB1E Compressed Size       000008EA (2282)\n+1CDB22 Uncompressed Size     000016A3 (5795)\n \n-1C552F LOCAL HEADER #1764    04034B50 (67324752)\n-1C5533 Extract Zip Spec      14 (20) '2.0'\n-1C5534 Extract OS            00 (0) 'MS-DOS'\n-1C5535 General Purpose Flag  0808 (2056)\n+1CDB26 LOCAL HEADER #1764    04034B50 (67324752)\n+1CDB2A Extract Zip Spec      14 (20) '2.0'\n+1CDB2B Extract OS            00 (0) 'MS-DOS'\n+1CDB2C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C5537 Compression Method    0008 (8) 'Deflated'\n-1C5539 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1C553D CRC                   00000000 (0)\n-1C5541 Compressed Size       00000000 (0)\n-1C5545 Uncompressed Size     00000000 (0)\n-1C5549 Filename Length       0024 (36)\n-1C554B Extra Length          0000 (0)\n-1C554D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1CDB2E Compression Method    0008 (8) 'Deflated'\n+1CDB30 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1CDB34 CRC                   00000000 (0)\n+1CDB38 Compressed Size       00000000 (0)\n+1CDB3C Uncompressed Size     00000000 (0)\n+1CDB40 Filename Length       0028 (40)\n+1CDB42 Extra Length          0000 (0)\n+1CDB44 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C554D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1CDB44: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C5571 PAYLOAD               XX\n+1CDB6C PAYLOAD               XX\n \n-1C5573 DATA DESCRIPTOR       08074B50 (134695760)\n-1C5577 CRC                   00000000 (0)\n-1C557B Compressed Size       00000002 (2)\n-1C557F Uncompressed Size     00000000 (0)\n+1CDB6E DATA DESCRIPTOR       08074B50 (134695760)\n+1CDB72 CRC                   00000000 (0)\n+1CDB76 Compressed Size       00000002 (2)\n+1CDB7A Uncompressed Size     00000000 (0)\n \n-1C5583 LOCAL HEADER #1765    04034B50 (67324752)\n-1C5587 Extract Zip Spec      14 (20) '2.0'\n-1C5588 Extract OS            00 (0) 'MS-DOS'\n-1C5589 General Purpose Flag  0808 (2056)\n+1CDB7E LOCAL HEADER #1765    04034B50 (67324752)\n+1CDB82 Extract Zip Spec      14 (20) '2.0'\n+1CDB83 Extract OS            00 (0) 'MS-DOS'\n+1CDB84 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C558B Compression Method    0008 (8) 'Deflated'\n-1C558D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1C5591 CRC                   00000000 (0)\n-1C5595 Compressed Size       00000000 (0)\n-1C5599 Uncompressed Size     00000000 (0)\n-1C559D Filename Length       0037 (55)\n-1C559F Extra Length          0000 (0)\n-1C55A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1CDB86 Compression Method    0008 (8) 'Deflated'\n+1CDB88 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1CDB8C CRC                   00000000 (0)\n+1CDB90 Compressed Size       00000000 (0)\n+1CDB94 Uncompressed Size     00000000 (0)\n+1CDB98 Filename Length       003B (59)\n+1CDB9A Extra Length          0000 (0)\n+1CDB9C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C55A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1CDB9C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C55D8 PAYLOAD\n+1CDBD7 PAYLOAD\n \n-1C5EF6 DATA DESCRIPTOR       08074B50 (134695760)\n-1C5EFA CRC                   57AE068E (1471022734)\n-1C5EFE Compressed Size       0000091E (2334)\n-1C5F02 Uncompressed Size     00001AD7 (6871)\n+1CE74D DATA DESCRIPTOR       08074B50 (134695760)\n+1CE751 CRC                   350B3EEE (889929454)\n+1CE755 Compressed Size       00000B76 (2934)\n+1CE759 Uncompressed Size     00002E9D (11933)\n \n-1C5F06 LOCAL HEADER #1766    04034B50 (67324752)\n-1C5F0A Extract Zip Spec      14 (20) '2.0'\n-1C5F0B Extract OS            00 (0) 'MS-DOS'\n-1C5F0C General Purpose Flag  0808 (2056)\n+1CE75D LOCAL HEADER #1766    04034B50 (67324752)\n+1CE761 Extract Zip Spec      14 (20) '2.0'\n+1CE762 Extract OS            00 (0) 'MS-DOS'\n+1CE763 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C5F0E Compression Method    0008 (8) 'Deflated'\n-1C5F10 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1C5F14 CRC                   00000000 (0)\n-1C5F18 Compressed Size       00000000 (0)\n-1C5F1C Uncompressed Size     00000000 (0)\n-1C5F20 Filename Length       0022 (34)\n-1C5F22 Extra Length          0000 (0)\n-1C5F24 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1CE765 Compression Method    0008 (8) 'Deflated'\n+1CE767 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1CE76B CRC                   00000000 (0)\n+1CE76F Compressed Size       00000000 (0)\n+1CE773 Uncompressed Size     00000000 (0)\n+1CE777 Filename Length       003C (60)\n+1CE779 Extra Length          0000 (0)\n+1CE77B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C5F24: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1CE77B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C5F46 PAYLOAD               XX\n+1CE7B7 PAYLOAD\n \n-1C5F48 DATA DESCRIPTOR       08074B50 (134695760)\n-1C5F4C CRC                   00000000 (0)\n-1C5F50 Compressed Size       00000002 (2)\n-1C5F54 Uncompressed Size     00000000 (0)\n+1CEB3B DATA DESCRIPTOR       08074B50 (134695760)\n+1CEB3F CRC                   0C426FFB (205680635)\n+1CEB43 Compressed Size       00000384 (900)\n+1CEB47 Uncompressed Size     000008A9 (2217)\n \n-1C5F58 LOCAL HEADER #1767    04034B50 (67324752)\n-1C5F5C Extract Zip Spec      14 (20) '2.0'\n-1C5F5D Extract OS            00 (0) 'MS-DOS'\n-1C5F5E General Purpose Flag  0808 (2056)\n+1CEB4B LOCAL HEADER #1767    04034B50 (67324752)\n+1CEB4F Extract Zip Spec      14 (20) '2.0'\n+1CEB50 Extract OS            00 (0) 'MS-DOS'\n+1CEB51 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C5F60 Compression Method    0008 (8) 'Deflated'\n-1C5F62 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1C5F66 CRC                   00000000 (0)\n-1C5F6A Compressed Size       00000000 (0)\n-1C5F6E Uncompressed Size     00000000 (0)\n-1C5F72 Filename Length       0028 (40)\n-1C5F74 Extra Length          0000 (0)\n-1C5F76 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1CEB53 Compression Method    0008 (8) 'Deflated'\n+1CEB55 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1CEB59 CRC                   00000000 (0)\n+1CEB5D Compressed Size       00000000 (0)\n+1CEB61 Uncompressed Size     00000000 (0)\n+1CEB65 Filename Length       0041 (65)\n+1CEB67 Extra Length          0000 (0)\n+1CEB69 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C5F76: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1CEB69: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C5F9E PAYLOAD               XX\n+1CEBAA PAYLOAD\n \n-1C5FA0 DATA DESCRIPTOR       08074B50 (134695760)\n-1C5FA4 CRC                   00000000 (0)\n-1C5FA8 Compressed Size       00000002 (2)\n-1C5FAC Uncompressed Size     00000000 (0)\n+1CEF09 DATA DESCRIPTOR       08074B50 (134695760)\n+1CEF0D CRC                   A4C4918F (2764345743)\n+1CEF11 Compressed Size       0000035F (863)\n+1CEF15 Uncompressed Size     00000803 (2051)\n \n-1C5FB0 LOCAL HEADER #1768    04034B50 (67324752)\n-1C5FB4 Extract Zip Spec      14 (20) '2.0'\n-1C5FB5 Extract OS            00 (0) 'MS-DOS'\n-1C5FB6 General Purpose Flag  0808 (2056)\n+1CEF19 LOCAL HEADER #1768    04034B50 (67324752)\n+1CEF1D Extract Zip Spec      14 (20) '2.0'\n+1CEF1E Extract OS            00 (0) 'MS-DOS'\n+1CEF1F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C5FB8 Compression Method    0008 (8) 'Deflated'\n-1C5FBA Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1C5FBE CRC                   00000000 (0)\n-1C5FC2 Compressed Size       00000000 (0)\n-1C5FC6 Uncompressed Size     00000000 (0)\n-1C5FCA Filename Length       003B (59)\n-1C5FCC Extra Length          0000 (0)\n-1C5FCE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1CEF21 Compression Method    0008 (8) 'Deflated'\n+1CEF23 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1CEF27 CRC                   00000000 (0)\n+1CEF2B Compressed Size       00000000 (0)\n+1CEF2F Uncompressed Size     00000000 (0)\n+1CEF33 Filename Length       003E (62)\n+1CEF35 Extra Length          0000 (0)\n+1CEF37 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C5FCE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1CEF37: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C6009 PAYLOAD\n+1CEF75 PAYLOAD\n \n-1C6368 DATA DESCRIPTOR       08074B50 (134695760)\n-1C636C CRC                   F75A753A (4149900602)\n-1C6370 Compressed Size       0000035F (863)\n-1C6374 Uncompressed Size     0000079E (1950)\n+1CF5FB DATA DESCRIPTOR       08074B50 (134695760)\n+1CF5FF CRC                   DD24EE95 (3710185109)\n+1CF603 Compressed Size       00000686 (1670)\n+1CF607 Uncompressed Size     00001008 (4104)\n \n-1C6378 LOCAL HEADER #1769    04034B50 (67324752)\n-1C637C Extract Zip Spec      14 (20) '2.0'\n-1C637D Extract OS            00 (0) 'MS-DOS'\n-1C637E General Purpose Flag  0808 (2056)\n+1CF60B LOCAL HEADER #1769    04034B50 (67324752)\n+1CF60F Extract Zip Spec      14 (20) '2.0'\n+1CF610 Extract OS            00 (0) 'MS-DOS'\n+1CF611 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C6380 Compression Method    0008 (8) 'Deflated'\n-1C6382 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1C6386 CRC                   00000000 (0)\n-1C638A Compressed Size       00000000 (0)\n-1C638E Uncompressed Size     00000000 (0)\n-1C6392 Filename Length       003C (60)\n-1C6394 Extra Length          0000 (0)\n-1C6396 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1CF613 Compression Method    0008 (8) 'Deflated'\n+1CF615 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1CF619 CRC                   00000000 (0)\n+1CF61D Compressed Size       00000000 (0)\n+1CF621 Uncompressed Size     00000000 (0)\n+1CF625 Filename Length       0037 (55)\n+1CF627 Extra Length          0000 (0)\n+1CF629 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C6396: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1CF629: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C63D2 PAYLOAD\n+1CF660 PAYLOAD\n \n-1C6741 DATA DESCRIPTOR       08074B50 (134695760)\n-1C6745 CRC                   4D63953A (1298371898)\n-1C6749 Compressed Size       0000036F (879)\n-1C674D Uncompressed Size     0000081B (2075)\n+1CFD46 DATA DESCRIPTOR       08074B50 (134695760)\n+1CFD4A CRC                   723EDDAE (1916722606)\n+1CFD4E Compressed Size       000006E6 (1766)\n+1CFD52 Uncompressed Size     0000110C (4364)\n \n-1C6751 LOCAL HEADER #1770    04034B50 (67324752)\n-1C6755 Extract Zip Spec      14 (20) '2.0'\n-1C6756 Extract OS            00 (0) 'MS-DOS'\n-1C6757 General Purpose Flag  0808 (2056)\n+1CFD56 LOCAL HEADER #1770    04034B50 (67324752)\n+1CFD5A Extract Zip Spec      14 (20) '2.0'\n+1CFD5B Extract OS            00 (0) 'MS-DOS'\n+1CFD5C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C6759 Compression Method    0008 (8) 'Deflated'\n-1C675B Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1C675F CRC                   00000000 (0)\n-1C6763 Compressed Size       00000000 (0)\n-1C6767 Uncompressed Size     00000000 (0)\n-1C676B Filename Length       0037 (55)\n-1C676D Extra Length          0000 (0)\n-1C676F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1CFD5E Compression Method    0008 (8) 'Deflated'\n+1CFD60 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1CFD64 CRC                   00000000 (0)\n+1CFD68 Compressed Size       00000000 (0)\n+1CFD6C Uncompressed Size     00000000 (0)\n+1CFD70 Filename Length       0037 (55)\n+1CFD72 Extra Length          0000 (0)\n+1CFD74 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C676F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1CFD74: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C67A6 PAYLOAD\n+1CFDAB PAYLOAD\n \n-1C6CCC DATA DESCRIPTOR       08074B50 (134695760)\n-1C6CD0 CRC                   D08B9F5C (3498811228)\n-1C6CD4 Compressed Size       00000526 (1318)\n-1C6CD8 Uncompressed Size     00000A60 (2656)\n+1D0897 DATA DESCRIPTOR       08074B50 (134695760)\n+1D089B CRC                   1BE0DE32 (467721778)\n+1D089F Compressed Size       00000AEC (2796)\n+1D08A3 Uncompressed Size     00002352 (9042)\n \n-1C6CDC LOCAL HEADER #1771    04034B50 (67324752)\n-1C6CE0 Extract Zip Spec      14 (20) '2.0'\n-1C6CE1 Extract OS            00 (0) 'MS-DOS'\n-1C6CE2 General Purpose Flag  0808 (2056)\n+1D08A7 LOCAL HEADER #1771    04034B50 (67324752)\n+1D08AB Extract Zip Spec      14 (20) '2.0'\n+1D08AC Extract OS            00 (0) 'MS-DOS'\n+1D08AD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C6CE4 Compression Method    0008 (8) 'Deflated'\n-1C6CE6 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1C6CEA CRC                   00000000 (0)\n-1C6CEE Compressed Size       00000000 (0)\n-1C6CF2 Uncompressed Size     00000000 (0)\n-1C6CF6 Filename Length       0038 (56)\n-1C6CF8 Extra Length          0000 (0)\n-1C6CFA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D08AF Compression Method    0008 (8) 'Deflated'\n+1D08B1 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D08B5 CRC                   00000000 (0)\n+1D08B9 Compressed Size       00000000 (0)\n+1D08BD Uncompressed Size     00000000 (0)\n+1D08C1 Filename Length       0036 (54)\n+1D08C3 Extra Length          0000 (0)\n+1D08C5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C6CFA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D08C5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C6D32 PAYLOAD\n+1D08FB PAYLOAD\n \n-1C7474 DATA DESCRIPTOR       08074B50 (134695760)\n-1C7478 CRC                   CC968FE2 (3432419298)\n-1C747C Compressed Size       00000742 (1858)\n-1C7480 Uncompressed Size     00001758 (5976)\n+1D0E90 DATA DESCRIPTOR       08074B50 (134695760)\n+1D0E94 CRC                   56DBC793 (1457244051)\n+1D0E98 Compressed Size       00000595 (1429)\n+1D0E9C Uncompressed Size     00000C79 (3193)\n \n-1C7484 LOCAL HEADER #1772    04034B50 (67324752)\n-1C7488 Extract Zip Spec      14 (20) '2.0'\n-1C7489 Extract OS            00 (0) 'MS-DOS'\n-1C748A General Purpose Flag  0808 (2056)\n+1D0EA0 LOCAL HEADER #1772    04034B50 (67324752)\n+1D0EA4 Extract Zip Spec      14 (20) '2.0'\n+1D0EA5 Extract OS            00 (0) 'MS-DOS'\n+1D0EA6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C748C Compression Method    0008 (8) 'Deflated'\n-1C748E Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1C7492 CRC                   00000000 (0)\n-1C7496 Compressed Size       00000000 (0)\n-1C749A Uncompressed Size     00000000 (0)\n-1C749E Filename Length       003D (61)\n-1C74A0 Extra Length          0000 (0)\n-1C74A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D0EA8 Compression Method    0008 (8) 'Deflated'\n+1D0EAA Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D0EAE CRC                   00000000 (0)\n+1D0EB2 Compressed Size       00000000 (0)\n+1D0EB6 Uncompressed Size     00000000 (0)\n+1D0EBA Filename Length       003B (59)\n+1D0EBC Extra Length          0000 (0)\n+1D0EBE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C74A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D0EBE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C74DF PAYLOAD\n+1D0EF9 PAYLOAD\n \n-1C7BF0 DATA DESCRIPTOR       08074B50 (134695760)\n-1C7BF4 CRC                   1549C790 (357156752)\n-1C7BF8 Compressed Size       00000711 (1809)\n-1C7BFC Uncompressed Size     000014F8 (5368)\n+1D1512 DATA DESCRIPTOR       08074B50 (134695760)\n+1D1516 CRC                   D0079E8D (3490160269)\n+1D151A Compressed Size       00000619 (1561)\n+1D151E Uncompressed Size     00000D8D (3469)\n \n-1C7C00 LOCAL HEADER #1773    04034B50 (67324752)\n-1C7C04 Extract Zip Spec      14 (20) '2.0'\n-1C7C05 Extract OS            00 (0) 'MS-DOS'\n-1C7C06 General Purpose Flag  0808 (2056)\n+1D1522 LOCAL HEADER #1773    04034B50 (67324752)\n+1D1526 Extract Zip Spec      14 (20) '2.0'\n+1D1527 Extract OS            00 (0) 'MS-DOS'\n+1D1528 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C7C08 Compression Method    0008 (8) 'Deflated'\n-1C7C0A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1C7C0E CRC                   00000000 (0)\n-1C7C12 Compressed Size       00000000 (0)\n-1C7C16 Uncompressed Size     00000000 (0)\n-1C7C1A Filename Length       0035 (53)\n-1C7C1C Extra Length          0000 (0)\n-1C7C1E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D152A Compression Method    0008 (8) 'Deflated'\n+1D152C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D1530 CRC                   00000000 (0)\n+1D1534 Compressed Size       00000000 (0)\n+1D1538 Uncompressed Size     00000000 (0)\n+1D153C Filename Length       003E (62)\n+1D153E Extra Length          0000 (0)\n+1D1540 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C7C1E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D1540: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C7C53 PAYLOAD\n+1D157E PAYLOAD\n \n-1C7F0B DATA DESCRIPTOR       08074B50 (134695760)\n-1C7F0F CRC                   764B1E75 (1984634485)\n-1C7F13 Compressed Size       000002B8 (696)\n-1C7F17 Uncompressed Size     0000054F (1359)\n+1D1A90 DATA DESCRIPTOR       08074B50 (134695760)\n+1D1A94 CRC                   77DBD9E2 (2010896866)\n+1D1A98 Compressed Size       00000512 (1298)\n+1D1A9C Uncompressed Size     00000A68 (2664)\n \n-1C7F1B LOCAL HEADER #1774    04034B50 (67324752)\n-1C7F1F Extract Zip Spec      14 (20) '2.0'\n-1C7F20 Extract OS            00 (0) 'MS-DOS'\n-1C7F21 General Purpose Flag  0808 (2056)\n+1D1AA0 LOCAL HEADER #1774    04034B50 (67324752)\n+1D1AA4 Extract Zip Spec      14 (20) '2.0'\n+1D1AA5 Extract OS            00 (0) 'MS-DOS'\n+1D1AA6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C7F23 Compression Method    0008 (8) 'Deflated'\n-1C7F25 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1C7F29 CRC                   00000000 (0)\n-1C7F2D Compressed Size       00000000 (0)\n-1C7F31 Uncompressed Size     00000000 (0)\n-1C7F35 Filename Length       003B (59)\n-1C7F37 Extra Length          0000 (0)\n-1C7F39 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D1AA8 Compression Method    0008 (8) 'Deflated'\n+1D1AAA Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D1AAE CRC                   00000000 (0)\n+1D1AB2 Compressed Size       00000000 (0)\n+1D1AB6 Uncompressed Size     00000000 (0)\n+1D1ABA Filename Length       0036 (54)\n+1D1ABC Extra Length          0000 (0)\n+1D1ABE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C7F39: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D1ABE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C7F74 PAYLOAD\n+1D1AF4 PAYLOAD\n \n-1C8559 DATA DESCRIPTOR       08074B50 (134695760)\n-1C855D CRC                   9EFE4E67 (2667466343)\n-1C8561 Compressed Size       000005E5 (1509)\n-1C8565 Uncompressed Size     00000EDF (3807)\n+1D1FAF DATA DESCRIPTOR       08074B50 (134695760)\n+1D1FB3 CRC                   C66F6586 (3329189254)\n+1D1FB7 Compressed Size       000004BB (1211)\n+1D1FBB Uncompressed Size     0000098F (2447)\n \n-1C8569 LOCAL HEADER #1775    04034B50 (67324752)\n-1C856D Extract Zip Spec      14 (20) '2.0'\n-1C856E Extract OS            00 (0) 'MS-DOS'\n-1C856F General Purpose Flag  0808 (2056)\n+1D1FBF LOCAL HEADER #1775    04034B50 (67324752)\n+1D1FC3 Extract Zip Spec      14 (20) '2.0'\n+1D1FC4 Extract OS            00 (0) 'MS-DOS'\n+1D1FC5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C8571 Compression Method    0008 (8) 'Deflated'\n-1C8573 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1C8577 CRC                   00000000 (0)\n-1C857B Compressed Size       00000000 (0)\n-1C857F Uncompressed Size     00000000 (0)\n-1C8583 Filename Length       0035 (53)\n-1C8585 Extra Length          0000 (0)\n-1C8587 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D1FC7 Compression Method    0008 (8) 'Deflated'\n+1D1FC9 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D1FCD CRC                   00000000 (0)\n+1D1FD1 Compressed Size       00000000 (0)\n+1D1FD5 Uncompressed Size     00000000 (0)\n+1D1FD9 Filename Length       0034 (52)\n+1D1FDB Extra Length          0000 (0)\n+1D1FDD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C8587: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D1FDD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C85BC PAYLOAD\n+1D2011 PAYLOAD\n \n-1C9234 DATA DESCRIPTOR       08074B50 (134695760)\n-1C9238 CRC                   339C3654 (865875540)\n-1C923C Compressed Size       00000C78 (3192)\n-1C9240 Uncompressed Size     0000360D (13837)\n+1D250D DATA DESCRIPTOR       08074B50 (134695760)\n+1D2511 CRC                   CB19F474 (3407475828)\n+1D2515 Compressed Size       000004FC (1276)\n+1D2519 Uncompressed Size     00000B41 (2881)\n \n-1C9244 LOCAL HEADER #1776    04034B50 (67324752)\n-1C9248 Extract Zip Spec      14 (20) '2.0'\n-1C9249 Extract OS            00 (0) 'MS-DOS'\n-1C924A General Purpose Flag  0808 (2056)\n+1D251D LOCAL HEADER #1776    04034B50 (67324752)\n+1D2521 Extract Zip Spec      14 (20) '2.0'\n+1D2522 Extract OS            00 (0) 'MS-DOS'\n+1D2523 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C924C Compression Method    0008 (8) 'Deflated'\n-1C924E Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1C9252 CRC                   00000000 (0)\n-1C9256 Compressed Size       00000000 (0)\n-1C925A Uncompressed Size     00000000 (0)\n-1C925E Filename Length       003C (60)\n-1C9260 Extra Length          0000 (0)\n-1C9262 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D2525 Compression Method    0008 (8) 'Deflated'\n+1D2527 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D252B CRC                   00000000 (0)\n+1D252F Compressed Size       00000000 (0)\n+1D2533 Uncompressed Size     00000000 (0)\n+1D2537 Filename Length       003A (58)\n+1D2539 Extra Length          0000 (0)\n+1D253B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C9262: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D253B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C929E PAYLOAD\n+1D2575 PAYLOAD\n \n-1C9827 DATA DESCRIPTOR       08074B50 (134695760)\n-1C982B CRC                   2E60A6BB (778086075)\n-1C982F Compressed Size       00000589 (1417)\n-1C9833 Uncompressed Size     00000B99 (2969)\n+1D3159 DATA DESCRIPTOR       08074B50 (134695760)\n+1D315D CRC                   FE2BC051 (4264280145)\n+1D3161 Compressed Size       00000BE4 (3044)\n+1D3165 Uncompressed Size     00002F6C (12140)\n \n-1C9837 LOCAL HEADER #1777    04034B50 (67324752)\n-1C983B Extract Zip Spec      14 (20) '2.0'\n-1C983C Extract OS            00 (0) 'MS-DOS'\n-1C983D General Purpose Flag  0808 (2056)\n+1D3169 LOCAL HEADER #1777    04034B50 (67324752)\n+1D316D Extract Zip Spec      14 (20) '2.0'\n+1D316E Extract OS            00 (0) 'MS-DOS'\n+1D316F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C983F Compression Method    0008 (8) 'Deflated'\n-1C9841 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1C9845 CRC                   00000000 (0)\n-1C9849 Compressed Size       00000000 (0)\n-1C984D Uncompressed Size     00000000 (0)\n-1C9851 Filename Length       003E (62)\n-1C9853 Extra Length          0000 (0)\n-1C9855 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D3171 Compression Method    0008 (8) 'Deflated'\n+1D3173 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D3177 CRC                   00000000 (0)\n+1D317B Compressed Size       00000000 (0)\n+1D317F Uncompressed Size     00000000 (0)\n+1D3183 Filename Length       0039 (57)\n+1D3185 Extra Length          0000 (0)\n+1D3187 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C9855: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D3187: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1C9893 PAYLOAD\n+1D31C0 PAYLOAD\n \n-1C9FC4 DATA DESCRIPTOR       08074B50 (134695760)\n-1C9FC8 CRC                   654FFB26 (1699740454)\n-1C9FCC Compressed Size       00000731 (1841)\n-1C9FD0 Uncompressed Size     000012CA (4810)\n+1D352B DATA DESCRIPTOR       08074B50 (134695760)\n+1D352F CRC                   28964A03 (680937987)\n+1D3533 Compressed Size       0000036B (875)\n+1D3537 Uncompressed Size     0000080F (2063)\n \n-1C9FD4 LOCAL HEADER #1778    04034B50 (67324752)\n-1C9FD8 Extract Zip Spec      14 (20) '2.0'\n-1C9FD9 Extract OS            00 (0) 'MS-DOS'\n-1C9FDA General Purpose Flag  0808 (2056)\n+1D353B LOCAL HEADER #1778    04034B50 (67324752)\n+1D353F Extract Zip Spec      14 (20) '2.0'\n+1D3540 Extract OS            00 (0) 'MS-DOS'\n+1D3541 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1C9FDC Compression Method    0008 (8) 'Deflated'\n-1C9FDE Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1C9FE2 CRC                   00000000 (0)\n-1C9FE6 Compressed Size       00000000 (0)\n-1C9FEA Uncompressed Size     00000000 (0)\n-1C9FEE Filename Length       002F (47)\n-1C9FF0 Extra Length          0000 (0)\n-1C9FF2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D3543 Compression Method    0008 (8) 'Deflated'\n+1D3545 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D3549 CRC                   00000000 (0)\n+1D354D Compressed Size       00000000 (0)\n+1D3551 Uncompressed Size     00000000 (0)\n+1D3555 Filename Length       003D (61)\n+1D3557 Extra Length          0000 (0)\n+1D3559 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1C9FF2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D3559: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1CA021 PAYLOAD\n+1D3596 PAYLOAD\n \n-1CA943 DATA DESCRIPTOR       08074B50 (134695760)\n-1CA947 CRC                   1538A07E (356032638)\n-1CA94B Compressed Size       00000922 (2338)\n-1CA94F Uncompressed Size     00001ABD (6845)\n+1D38F7 DATA DESCRIPTOR       08074B50 (134695760)\n+1D38FB CRC                   8696E439 (2258035769)\n+1D38FF Compressed Size       00000361 (865)\n+1D3903 Uncompressed Size     000007F5 (2037)\n \n-1CA953 LOCAL HEADER #1779    04034B50 (67324752)\n-1CA957 Extract Zip Spec      14 (20) '2.0'\n-1CA958 Extract OS            00 (0) 'MS-DOS'\n-1CA959 General Purpose Flag  0808 (2056)\n+1D3907 LOCAL HEADER #1779    04034B50 (67324752)\n+1D390B Extract Zip Spec      14 (20) '2.0'\n+1D390C Extract OS            00 (0) 'MS-DOS'\n+1D390D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1CA95B Compression Method    0008 (8) 'Deflated'\n-1CA95D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1CA961 CRC                   00000000 (0)\n-1CA965 Compressed Size       00000000 (0)\n-1CA969 Uncompressed Size     00000000 (0)\n-1CA96D Filename Length       0040 (64)\n-1CA96F Extra Length          0000 (0)\n-1CA971 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D390F Compression Method    0008 (8) 'Deflated'\n+1D3911 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D3915 CRC                   00000000 (0)\n+1D3919 Compressed Size       00000000 (0)\n+1D391D Uncompressed Size     00000000 (0)\n+1D3921 Filename Length       003C (60)\n+1D3923 Extra Length          0000 (0)\n+1D3925 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1CA971: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D3925: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1CA9B1 PAYLOAD\n+1D3961 PAYLOAD\n \n-1CAD8F DATA DESCRIPTOR       08074B50 (134695760)\n-1CAD93 CRC                   CA63D3D1 (3395539921)\n-1CAD97 Compressed Size       000003DE (990)\n-1CAD9B Uncompressed Size     00000A30 (2608)\n+1D3E4D DATA DESCRIPTOR       08074B50 (134695760)\n+1D3E51 CRC                   AC539B8F (2891160463)\n+1D3E55 Compressed Size       000004EC (1260)\n+1D3E59 Uncompressed Size     00000A07 (2567)\n \n-1CAD9F LOCAL HEADER #1780    04034B50 (67324752)\n-1CADA3 Extract Zip Spec      14 (20) '2.0'\n-1CADA4 Extract OS            00 (0) 'MS-DOS'\n-1CADA5 General Purpose Flag  0808 (2056)\n+1D3E5D LOCAL HEADER #1780    04034B50 (67324752)\n+1D3E61 Extract Zip Spec      14 (20) '2.0'\n+1D3E62 Extract OS            00 (0) 'MS-DOS'\n+1D3E63 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1CADA7 Compression Method    0008 (8) 'Deflated'\n-1CADA9 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1CADAD CRC                   00000000 (0)\n-1CADB1 Compressed Size       00000000 (0)\n-1CADB5 Uncompressed Size     00000000 (0)\n-1CADB9 Filename Length       0039 (57)\n-1CADBB Extra Length          0000 (0)\n-1CADBD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D3E65 Compression Method    0008 (8) 'Deflated'\n+1D3E67 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D3E6B CRC                   00000000 (0)\n+1D3E6F Compressed Size       00000000 (0)\n+1D3E73 Uncompressed Size     00000000 (0)\n+1D3E77 Filename Length       003D (61)\n+1D3E79 Extra Length          0000 (0)\n+1D3E7B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1CADBD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D3E7B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1CADF6 PAYLOAD\n+1D3EB8 PAYLOAD\n \n-1CB132 DATA DESCRIPTOR       08074B50 (134695760)\n-1CB136 CRC                   12627859 (308443225)\n-1CB13A Compressed Size       0000033C (828)\n-1CB13E Uncompressed Size     00000705 (1797)\n+1D45B7 DATA DESCRIPTOR       08074B50 (134695760)\n+1D45BB CRC                   FF195881 (4279851137)\n+1D45BF Compressed Size       000006FF (1791)\n+1D45C3 Uncompressed Size     00001388 (5000)\n \n-1CB142 LOCAL HEADER #1781    04034B50 (67324752)\n-1CB146 Extract Zip Spec      14 (20) '2.0'\n-1CB147 Extract OS            00 (0) 'MS-DOS'\n-1CB148 General Purpose Flag  0808 (2056)\n+1D45C7 LOCAL HEADER #1781    04034B50 (67324752)\n+1D45CB Extract Zip Spec      14 (20) '2.0'\n+1D45CC Extract OS            00 (0) 'MS-DOS'\n+1D45CD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1CB14A Compression Method    0008 (8) 'Deflated'\n-1CB14C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1CB150 CRC                   00000000 (0)\n-1CB154 Compressed Size       00000000 (0)\n-1CB158 Uncompressed Size     00000000 (0)\n-1CB15C Filename Length       0034 (52)\n-1CB15E Extra Length          0000 (0)\n-1CB160 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D45CF Compression Method    0008 (8) 'Deflated'\n+1D45D1 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D45D5 CRC                   00000000 (0)\n+1D45D9 Compressed Size       00000000 (0)\n+1D45DD Uncompressed Size     00000000 (0)\n+1D45E1 Filename Length       003E (62)\n+1D45E3 Extra Length          0000 (0)\n+1D45E5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1CB160: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D45E5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1CB194 PAYLOAD\n+1D4623 PAYLOAD\n \n-1CB7A6 DATA DESCRIPTOR       08074B50 (134695760)\n-1CB7AA CRC                   69B75EA9 (1773625001)\n-1CB7AE Compressed Size       00000612 (1554)\n-1CB7B2 Uncompressed Size     00000E67 (3687)\n+1D4B8C DATA DESCRIPTOR       08074B50 (134695760)\n+1D4B90 CRC                   EF9589B0 (4019554736)\n+1D4B94 Compressed Size       00000569 (1385)\n+1D4B98 Uncompressed Size     00000B3F (2879)\n \n-1CB7B6 LOCAL HEADER #1782    04034B50 (67324752)\n-1CB7BA Extract Zip Spec      14 (20) '2.0'\n-1CB7BB Extract OS            00 (0) 'MS-DOS'\n-1CB7BC General Purpose Flag  0808 (2056)\n+1D4B9C LOCAL HEADER #1782    04034B50 (67324752)\n+1D4BA0 Extract Zip Spec      14 (20) '2.0'\n+1D4BA1 Extract OS            00 (0) 'MS-DOS'\n+1D4BA2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1CB7BE Compression Method    0008 (8) 'Deflated'\n-1CB7C0 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1CB7C4 CRC                   00000000 (0)\n-1CB7C8 Compressed Size       00000000 (0)\n-1CB7CC Uncompressed Size     00000000 (0)\n-1CB7D0 Filename Length       0033 (51)\n-1CB7D2 Extra Length          0000 (0)\n-1CB7D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D4BA4 Compression Method    0008 (8) 'Deflated'\n+1D4BA6 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D4BAA CRC                   00000000 (0)\n+1D4BAE Compressed Size       00000000 (0)\n+1D4BB2 Uncompressed Size     00000000 (0)\n+1D4BB6 Filename Length       003B (59)\n+1D4BB8 Extra Length          0000 (0)\n+1D4BBA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1CB7D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D4BBA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1CB807 PAYLOAD\n+1D4BF5 PAYLOAD\n \n-1CBDD3 DATA DESCRIPTOR       08074B50 (134695760)\n-1CBDD7 CRC                   6E56FB5B (1851194203)\n-1CBDDB Compressed Size       000005CC (1484)\n-1CBDDF Uncompressed Size     00000D09 (3337)\n+1D52CF DATA DESCRIPTOR       08074B50 (134695760)\n+1D52D3 CRC                   273E139A (658379674)\n+1D52D7 Compressed Size       000006DA (1754)\n+1D52DB Uncompressed Size     000015B3 (5555)\n \n-1CBDE3 LOCAL HEADER #1783    04034B50 (67324752)\n-1CBDE7 Extract Zip Spec      14 (20) '2.0'\n-1CBDE8 Extract OS            00 (0) 'MS-DOS'\n-1CBDE9 General Purpose Flag  0808 (2056)\n+1D52DF LOCAL HEADER #1783    04034B50 (67324752)\n+1D52E3 Extract Zip Spec      14 (20) '2.0'\n+1D52E4 Extract OS            00 (0) 'MS-DOS'\n+1D52E5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1CBDEB Compression Method    0008 (8) 'Deflated'\n-1CBDED Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1CBDF1 CRC                   00000000 (0)\n-1CBDF5 Compressed Size       00000000 (0)\n-1CBDF9 Uncompressed Size     00000000 (0)\n-1CBDFD Filename Length       003C (60)\n-1CBDFF Extra Length          0000 (0)\n-1CBE01 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D52E7 Compression Method    0008 (8) 'Deflated'\n+1D52E9 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D52ED CRC                   00000000 (0)\n+1D52F1 Compressed Size       00000000 (0)\n+1D52F5 Uncompressed Size     00000000 (0)\n+1D52F9 Filename Length       0038 (56)\n+1D52FB Extra Length          0000 (0)\n+1D52FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1CBE01: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D52FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1CBE3D PAYLOAD\n+1D5335 PAYLOAD\n \n-1CC3C6 DATA DESCRIPTOR       08074B50 (134695760)\n-1CC3CA CRC                   812FC9F0 (2167392752)\n-1CC3CE Compressed Size       00000589 (1417)\n-1CC3D2 Uncompressed Size     00000D20 (3360)\n+1D5A7C DATA DESCRIPTOR       08074B50 (134695760)\n+1D5A80 CRC                   BB4C70B3 (3142348979)\n+1D5A84 Compressed Size       00000747 (1863)\n+1D5A88 Uncompressed Size     0000146B (5227)\n \n-1CC3D6 LOCAL HEADER #1784    04034B50 (67324752)\n-1CC3DA Extract Zip Spec      14 (20) '2.0'\n-1CC3DB Extract OS            00 (0) 'MS-DOS'\n-1CC3DC General Purpose Flag  0808 (2056)\n+1D5A8C LOCAL HEADER #1784    04034B50 (67324752)\n+1D5A90 Extract Zip Spec      14 (20) '2.0'\n+1D5A91 Extract OS            00 (0) 'MS-DOS'\n+1D5A92 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1CC3DE Compression Method    0008 (8) 'Deflated'\n-1CC3E0 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1CC3E4 CRC                   00000000 (0)\n-1CC3E8 Compressed Size       00000000 (0)\n-1CC3EC Uncompressed Size     00000000 (0)\n-1CC3F0 Filename Length       003E (62)\n-1CC3F2 Extra Length          0000 (0)\n-1CC3F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D5A94 Compression Method    0008 (8) 'Deflated'\n+1D5A96 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D5A9A CRC                   00000000 (0)\n+1D5A9E Compressed Size       00000000 (0)\n+1D5AA2 Uncompressed Size     00000000 (0)\n+1D5AA6 Filename Length       003A (58)\n+1D5AA8 Extra Length          0000 (0)\n+1D5AAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1CC3F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D5AAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1CC432 PAYLOAD\n+1D5AE4 PAYLOAD\n \n-1CCC2B DATA DESCRIPTOR       08074B50 (134695760)\n-1CCC2F CRC                   52E473B9 (1390703545)\n-1CCC33 Compressed Size       000007F9 (2041)\n-1CCC37 Uncompressed Size     0000131F (4895)\n+1D6020 DATA DESCRIPTOR       08074B50 (134695760)\n+1D6024 CRC                   165EFEE5 (375324389)\n+1D6028 Compressed Size       0000053C (1340)\n+1D602C Uncompressed Size     00000ABA (2746)\n \n-1CCC3B LOCAL HEADER #1785    04034B50 (67324752)\n-1CCC3F Extract Zip Spec      14 (20) '2.0'\n-1CCC40 Extract OS            00 (0) 'MS-DOS'\n-1CCC41 General Purpose Flag  0808 (2056)\n+1D6030 LOCAL HEADER #1785    04034B50 (67324752)\n+1D6034 Extract Zip Spec      14 (20) '2.0'\n+1D6035 Extract OS            00 (0) 'MS-DOS'\n+1D6036 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1CCC43 Compression Method    0008 (8) 'Deflated'\n-1CCC45 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1CCC49 CRC                   00000000 (0)\n-1CCC4D Compressed Size       00000000 (0)\n-1CCC51 Uncompressed Size     00000000 (0)\n-1CCC55 Filename Length       0039 (57)\n-1CCC57 Extra Length          0000 (0)\n-1CCC59 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D6038 Compression Method    0008 (8) 'Deflated'\n+1D603A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D603E CRC                   00000000 (0)\n+1D6042 Compressed Size       00000000 (0)\n+1D6046 Uncompressed Size     00000000 (0)\n+1D604A Filename Length       003A (58)\n+1D604C Extra Length          0000 (0)\n+1D604E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1CCC59: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D604E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1CCC92 PAYLOAD\n+1D6088 PAYLOAD\n \n-1CD20A DATA DESCRIPTOR       08074B50 (134695760)\n-1CD20E CRC                   DB2E2C1B (3677236251)\n-1CD212 Compressed Size       00000578 (1400)\n-1CD216 Uncompressed Size     00000B80 (2944)\n+1D6736 DATA DESCRIPTOR       08074B50 (134695760)\n+1D673A CRC                   515E6059 (1365139545)\n+1D673E Compressed Size       000006AE (1710)\n+1D6742 Uncompressed Size     0000106F (4207)\n \n-1CD21A LOCAL HEADER #1786    04034B50 (67324752)\n-1CD21E Extract Zip Spec      14 (20) '2.0'\n-1CD21F Extract OS            00 (0) 'MS-DOS'\n-1CD220 General Purpose Flag  0808 (2056)\n+1D6746 LOCAL HEADER #1786    04034B50 (67324752)\n+1D674A Extract Zip Spec      14 (20) '2.0'\n+1D674B Extract OS            00 (0) 'MS-DOS'\n+1D674C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1CD222 Compression Method    0008 (8) 'Deflated'\n-1CD224 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1CD228 CRC                   00000000 (0)\n-1CD22C Compressed Size       00000000 (0)\n-1CD230 Uncompressed Size     00000000 (0)\n-1CD234 Filename Length       0034 (52)\n-1CD236 Extra Length          0000 (0)\n-1CD238 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D674E Compression Method    0008 (8) 'Deflated'\n+1D6750 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D6754 CRC                   00000000 (0)\n+1D6758 Compressed Size       00000000 (0)\n+1D675C Uncompressed Size     00000000 (0)\n+1D6760 Filename Length       0036 (54)\n+1D6762 Extra Length          0000 (0)\n+1D6764 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1CD238: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D6764: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1CD26C PAYLOAD\n+1D679A PAYLOAD\n \n-1CD6F5 DATA DESCRIPTOR       08074B50 (134695760)\n-1CD6F9 CRC                   4654378B (1179924363)\n-1CD6FD Compressed Size       00000489 (1161)\n-1CD701 Uncompressed Size     0000092E (2350)\n+1D6FAE DATA DESCRIPTOR       08074B50 (134695760)\n+1D6FB2 CRC                   67A3DA8B (1738791563)\n+1D6FB6 Compressed Size       00000814 (2068)\n+1D6FBA Uncompressed Size     0000174A (5962)\n \n-1CD705 LOCAL HEADER #1787    04034B50 (67324752)\n-1CD709 Extract Zip Spec      14 (20) '2.0'\n-1CD70A Extract OS            00 (0) 'MS-DOS'\n-1CD70B General Purpose Flag  0808 (2056)\n+1D6FBE LOCAL HEADER #1787    04034B50 (67324752)\n+1D6FC2 Extract Zip Spec      14 (20) '2.0'\n+1D6FC3 Extract OS            00 (0) 'MS-DOS'\n+1D6FC4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1CD70D Compression Method    0008 (8) 'Deflated'\n-1CD70F Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1CD713 CRC                   00000000 (0)\n-1CD717 Compressed Size       00000000 (0)\n-1CD71B Uncompressed Size     00000000 (0)\n-1CD71F Filename Length       0030 (48)\n-1CD721 Extra Length          0000 (0)\n-1CD723 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D6FC6 Compression Method    0008 (8) 'Deflated'\n+1D6FC8 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D6FCC CRC                   00000000 (0)\n+1D6FD0 Compressed Size       00000000 (0)\n+1D6FD4 Uncompressed Size     00000000 (0)\n+1D6FD8 Filename Length       003B (59)\n+1D6FDA Extra Length          0000 (0)\n+1D6FDC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1CD723: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D6FDC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1CD753 PAYLOAD\n+1D7017 PAYLOAD\n \n-1CDEE2 DATA DESCRIPTOR       08074B50 (134695760)\n-1CDEE6 CRC                   7728EBEC (1999170540)\n-1CDEEA Compressed Size       0000078F (1935)\n-1CDEEE Uncompressed Size     000017BD (6077)\n+1D7B8B DATA DESCRIPTOR       08074B50 (134695760)\n+1D7B8F CRC                   02D2B2EB (47362795)\n+1D7B93 Compressed Size       00000B74 (2932)\n+1D7B97 Uncompressed Size     00002CCA (11466)\n \n-1CDEF2 LOCAL HEADER #1788    04034B50 (67324752)\n-1CDEF6 Extract Zip Spec      14 (20) '2.0'\n-1CDEF7 Extract OS            00 (0) 'MS-DOS'\n-1CDEF8 General Purpose Flag  0808 (2056)\n+1D7B9B LOCAL HEADER #1788    04034B50 (67324752)\n+1D7B9F Extract Zip Spec      14 (20) '2.0'\n+1D7BA0 Extract OS            00 (0) 'MS-DOS'\n+1D7BA1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1CDEFA Compression Method    0008 (8) 'Deflated'\n-1CDEFC Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1CDF00 CRC                   00000000 (0)\n-1CDF04 Compressed Size       00000000 (0)\n-1CDF08 Uncompressed Size     00000000 (0)\n-1CDF0C Filename Length       003D (61)\n-1CDF0E Extra Length          0000 (0)\n-1CDF10 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D7BA3 Compression Method    0008 (8) 'Deflated'\n+1D7BA5 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D7BA9 CRC                   00000000 (0)\n+1D7BAD Compressed Size       00000000 (0)\n+1D7BB1 Uncompressed Size     00000000 (0)\n+1D7BB5 Filename Length       003E (62)\n+1D7BB7 Extra Length          0000 (0)\n+1D7BB9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1CDF10: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D7BB9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1CDF4D PAYLOAD\n+1D7BF7 PAYLOAD\n \n-1CE837 DATA DESCRIPTOR       08074B50 (134695760)\n-1CE83B CRC                   60D7241E (1624712222)\n-1CE83F Compressed Size       000008EA (2282)\n-1CE843 Uncompressed Size     000016A3 (5795)\n+1D81A3 DATA DESCRIPTOR       08074B50 (134695760)\n+1D81A7 CRC                   8611C8ED (2249312493)\n+1D81AB Compressed Size       000005AC (1452)\n+1D81AF Uncompressed Size     00000D39 (3385)\n \n-1CE847 LOCAL HEADER #1789    04034B50 (67324752)\n-1CE84B Extract Zip Spec      14 (20) '2.0'\n-1CE84C Extract OS            00 (0) 'MS-DOS'\n-1CE84D General Purpose Flag  0808 (2056)\n+1D81B3 LOCAL HEADER #1789    04034B50 (67324752)\n+1D81B7 Extract Zip Spec      14 (20) '2.0'\n+1D81B8 Extract OS            00 (0) 'MS-DOS'\n+1D81B9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1CE84F Compression Method    0008 (8) 'Deflated'\n-1CE851 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1CE855 CRC                   00000000 (0)\n-1CE859 Compressed Size       00000000 (0)\n-1CE85D Uncompressed Size     00000000 (0)\n-1CE861 Filename Length       0028 (40)\n-1CE863 Extra Length          0000 (0)\n-1CE865 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D81BB Compression Method    0008 (8) 'Deflated'\n+1D81BD Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D81C1 CRC                   00000000 (0)\n+1D81C5 Compressed Size       00000000 (0)\n+1D81C9 Uncompressed Size     00000000 (0)\n+1D81CD Filename Length       0035 (53)\n+1D81CF Extra Length          0000 (0)\n+1D81D1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1CE865: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D81D1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1CE88D PAYLOAD               XX\n+1D8206 PAYLOAD\n \n-1CE88F DATA DESCRIPTOR       08074B50 (134695760)\n-1CE893 CRC                   00000000 (0)\n-1CE897 Compressed Size       00000002 (2)\n-1CE89B Uncompressed Size     00000000 (0)\n+1D8D43 DATA DESCRIPTOR       08074B50 (134695760)\n+1D8D47 CRC                   E0540578 (3763602808)\n+1D8D4B Compressed Size       00000B3D (2877)\n+1D8D4F Uncompressed Size     00002679 (9849)\n \n-1CE89F LOCAL HEADER #1790    04034B50 (67324752)\n-1CE8A3 Extract Zip Spec      14 (20) '2.0'\n-1CE8A4 Extract OS            00 (0) 'MS-DOS'\n-1CE8A5 General Purpose Flag  0808 (2056)\n+1D8D53 LOCAL HEADER #1790    04034B50 (67324752)\n+1D8D57 Extract Zip Spec      14 (20) '2.0'\n+1D8D58 Extract OS            00 (0) 'MS-DOS'\n+1D8D59 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1CE8A7 Compression Method    0008 (8) 'Deflated'\n-1CE8A9 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1CE8AD CRC                   00000000 (0)\n-1CE8B1 Compressed Size       00000000 (0)\n-1CE8B5 Uncompressed Size     00000000 (0)\n-1CE8B9 Filename Length       003B (59)\n-1CE8BB Extra Length          0000 (0)\n-1CE8BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D8D5B Compression Method    0008 (8) 'Deflated'\n+1D8D5D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D8D61 CRC                   00000000 (0)\n+1D8D65 Compressed Size       00000000 (0)\n+1D8D69 Uncompressed Size     00000000 (0)\n+1D8D6D Filename Length       0038 (56)\n+1D8D6F Extra Length          0000 (0)\n+1D8D71 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1CE8BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D8D71: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1CE8F8 PAYLOAD\n+1D8DA9 PAYLOAD\n \n-1CF46E DATA DESCRIPTOR       08074B50 (134695760)\n-1CF472 CRC                   350B3EEE (889929454)\n-1CF476 Compressed Size       00000B76 (2934)\n-1CF47A Uncompressed Size     00002E9D (11933)\n+1D9352 DATA DESCRIPTOR       08074B50 (134695760)\n+1D9356 CRC                   5238B40F (1379447823)\n+1D935A Compressed Size       000005A9 (1449)\n+1D935E Uncompressed Size     00000CA6 (3238)\n \n-1CF47E LOCAL HEADER #1791    04034B50 (67324752)\n-1CF482 Extract Zip Spec      14 (20) '2.0'\n-1CF483 Extract OS            00 (0) 'MS-DOS'\n-1CF484 General Purpose Flag  0808 (2056)\n+1D9362 LOCAL HEADER #1791    04034B50 (67324752)\n+1D9366 Extract Zip Spec      14 (20) '2.0'\n+1D9367 Extract OS            00 (0) 'MS-DOS'\n+1D9368 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1CF486 Compression Method    0008 (8) 'Deflated'\n-1CF488 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1CF48C CRC                   00000000 (0)\n-1CF490 Compressed Size       00000000 (0)\n-1CF494 Uncompressed Size     00000000 (0)\n-1CF498 Filename Length       003C (60)\n-1CF49A Extra Length          0000 (0)\n-1CF49C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D936A Compression Method    0008 (8) 'Deflated'\n+1D936C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D9370 CRC                   00000000 (0)\n+1D9374 Compressed Size       00000000 (0)\n+1D9378 Uncompressed Size     00000000 (0)\n+1D937C Filename Length       003F (63)\n+1D937E Extra Length          0000 (0)\n+1D9380 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1CF49C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D9380: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1CF4D8 PAYLOAD\n+1D93BF PAYLOAD\n \n-1CF85C DATA DESCRIPTOR       08074B50 (134695760)\n-1CF860 CRC                   0C426FFB (205680635)\n-1CF864 Compressed Size       00000384 (900)\n-1CF868 Uncompressed Size     000008A9 (2217)\n+1D994F DATA DESCRIPTOR       08074B50 (134695760)\n+1D9953 CRC                   14C32F61 (348335969)\n+1D9957 Compressed Size       00000590 (1424)\n+1D995B Uncompressed Size     00000D46 (3398)\n \n-1CF86C LOCAL HEADER #1792    04034B50 (67324752)\n-1CF870 Extract Zip Spec      14 (20) '2.0'\n-1CF871 Extract OS            00 (0) 'MS-DOS'\n-1CF872 General Purpose Flag  0808 (2056)\n+1D995F LOCAL HEADER #1792    04034B50 (67324752)\n+1D9963 Extract Zip Spec      14 (20) '2.0'\n+1D9964 Extract OS            00 (0) 'MS-DOS'\n+1D9965 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1CF874 Compression Method    0008 (8) 'Deflated'\n-1CF876 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1CF87A CRC                   00000000 (0)\n-1CF87E Compressed Size       00000000 (0)\n-1CF882 Uncompressed Size     00000000 (0)\n-1CF886 Filename Length       0041 (65)\n-1CF888 Extra Length          0000 (0)\n-1CF88A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1D9967 Compression Method    0008 (8) 'Deflated'\n+1D9969 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1D996D CRC                   00000000 (0)\n+1D9971 Compressed Size       00000000 (0)\n+1D9975 Uncompressed Size     00000000 (0)\n+1D9979 Filename Length       0035 (53)\n+1D997B Extra Length          0000 (0)\n+1D997D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1CF88A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1D997D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1CF8CB PAYLOAD\n+1D99B2 PAYLOAD\n \n-1CFC2A DATA DESCRIPTOR       08074B50 (134695760)\n-1CFC2E CRC                   A4C4918F (2764345743)\n-1CFC32 Compressed Size       0000035F (863)\n-1CFC36 Uncompressed Size     00000803 (2051)\n+1D9FF9 DATA DESCRIPTOR       08074B50 (134695760)\n+1D9FFD CRC                   B1CE4173 (2983084403)\n+1DA001 Compressed Size       00000647 (1607)\n+1DA005 Uncompressed Size     00000E9E (3742)\n \n-1CFC3A LOCAL HEADER #1793    04034B50 (67324752)\n-1CFC3E Extract Zip Spec      14 (20) '2.0'\n-1CFC3F Extract OS            00 (0) 'MS-DOS'\n-1CFC40 General Purpose Flag  0808 (2056)\n+1DA009 LOCAL HEADER #1793    04034B50 (67324752)\n+1DA00D Extract Zip Spec      14 (20) '2.0'\n+1DA00E Extract OS            00 (0) 'MS-DOS'\n+1DA00F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1CFC42 Compression Method    0008 (8) 'Deflated'\n-1CFC44 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1CFC48 CRC                   00000000 (0)\n-1CFC4C Compressed Size       00000000 (0)\n-1CFC50 Uncompressed Size     00000000 (0)\n-1CFC54 Filename Length       003E (62)\n-1CFC56 Extra Length          0000 (0)\n-1CFC58 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1DA011 Compression Method    0008 (8) 'Deflated'\n+1DA013 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1DA017 CRC                   00000000 (0)\n+1DA01B Compressed Size       00000000 (0)\n+1DA01F Uncompressed Size     00000000 (0)\n+1DA023 Filename Length       0038 (56)\n+1DA025 Extra Length          0000 (0)\n+1DA027 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1CFC58: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DA027: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1CFC96 PAYLOAD\n+1DA05F PAYLOAD\n \n-1D031C DATA DESCRIPTOR       08074B50 (134695760)\n-1D0320 CRC                   DD24EE95 (3710185109)\n-1D0324 Compressed Size       00000686 (1670)\n-1D0328 Uncompressed Size     00001008 (4104)\n+1DAC78 DATA DESCRIPTOR       08074B50 (134695760)\n+1DAC7C CRC                   4FA522A8 (1336222376)\n+1DAC80 Compressed Size       00000C19 (3097)\n+1DAC84 Uncompressed Size     000049D9 (18905)\n \n-1D032C LOCAL HEADER #1794    04034B50 (67324752)\n-1D0330 Extract Zip Spec      14 (20) '2.0'\n-1D0331 Extract OS            00 (0) 'MS-DOS'\n-1D0332 General Purpose Flag  0808 (2056)\n+1DAC88 LOCAL HEADER #1794    04034B50 (67324752)\n+1DAC8C Extract Zip Spec      14 (20) '2.0'\n+1DAC8D Extract OS            00 (0) 'MS-DOS'\n+1DAC8E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D0334 Compression Method    0008 (8) 'Deflated'\n-1D0336 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D033A CRC                   00000000 (0)\n-1D033E Compressed Size       00000000 (0)\n-1D0342 Uncompressed Size     00000000 (0)\n-1D0346 Filename Length       0037 (55)\n-1D0348 Extra Length          0000 (0)\n-1D034A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1DAC90 Compression Method    0008 (8) 'Deflated'\n+1DAC92 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1DAC96 CRC                   00000000 (0)\n+1DAC9A Compressed Size       00000000 (0)\n+1DAC9E Uncompressed Size     00000000 (0)\n+1DACA2 Filename Length       003D (61)\n+1DACA4 Extra Length          0000 (0)\n+1DACA6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D034A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DACA6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D0381 PAYLOAD\n+1DACE3 PAYLOAD\n \n-1D0A67 DATA DESCRIPTOR       08074B50 (134695760)\n-1D0A6B CRC                   723EDDAE (1916722606)\n-1D0A6F Compressed Size       000006E6 (1766)\n-1D0A73 Uncompressed Size     0000110C (4364)\n+1DB029 DATA DESCRIPTOR       08074B50 (134695760)\n+1DB02D CRC                   6A312F64 (1781608292)\n+1DB031 Compressed Size       00000346 (838)\n+1DB035 Uncompressed Size     00000727 (1831)\n \n-1D0A77 LOCAL HEADER #1795    04034B50 (67324752)\n-1D0A7B Extract Zip Spec      14 (20) '2.0'\n-1D0A7C Extract OS            00 (0) 'MS-DOS'\n-1D0A7D General Purpose Flag  0808 (2056)\n+1DB039 LOCAL HEADER #1795    04034B50 (67324752)\n+1DB03D Extract Zip Spec      14 (20) '2.0'\n+1DB03E Extract OS            00 (0) 'MS-DOS'\n+1DB03F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D0A7F Compression Method    0008 (8) 'Deflated'\n-1D0A81 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D0A85 CRC                   00000000 (0)\n-1D0A89 Compressed Size       00000000 (0)\n-1D0A8D Uncompressed Size     00000000 (0)\n-1D0A91 Filename Length       0037 (55)\n-1D0A93 Extra Length          0000 (0)\n-1D0A95 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1DB041 Compression Method    0008 (8) 'Deflated'\n+1DB043 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1DB047 CRC                   00000000 (0)\n+1DB04B Compressed Size       00000000 (0)\n+1DB04F Uncompressed Size     00000000 (0)\n+1DB053 Filename Length       003D (61)\n+1DB055 Extra Length          0000 (0)\n+1DB057 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D0A95: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DB057: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D0ACC PAYLOAD\n+1DB094 PAYLOAD\n \n-1D15B8 DATA DESCRIPTOR       08074B50 (134695760)\n-1D15BC CRC                   1BE0DE32 (467721778)\n-1D15C0 Compressed Size       00000AEC (2796)\n-1D15C4 Uncompressed Size     00002352 (9042)\n+1DB362 DATA DESCRIPTOR       08074B50 (134695760)\n+1DB366 CRC                   EE87A59D (4001867165)\n+1DB36A Compressed Size       000002CE (718)\n+1DB36E Uncompressed Size     000005C7 (1479)\n \n-1D15C8 LOCAL HEADER #1796    04034B50 (67324752)\n-1D15CC Extract Zip Spec      14 (20) '2.0'\n-1D15CD Extract OS            00 (0) 'MS-DOS'\n-1D15CE General Purpose Flag  0808 (2056)\n+1DB372 LOCAL HEADER #1796    04034B50 (67324752)\n+1DB376 Extract Zip Spec      14 (20) '2.0'\n+1DB377 Extract OS            00 (0) 'MS-DOS'\n+1DB378 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D15D0 Compression Method    0008 (8) 'Deflated'\n-1D15D2 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D15D6 CRC                   00000000 (0)\n-1D15DA Compressed Size       00000000 (0)\n-1D15DE Uncompressed Size     00000000 (0)\n-1D15E2 Filename Length       0036 (54)\n-1D15E4 Extra Length          0000 (0)\n-1D15E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1DB37A Compression Method    0008 (8) 'Deflated'\n+1DB37C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1DB380 CRC                   00000000 (0)\n+1DB384 Compressed Size       00000000 (0)\n+1DB388 Uncompressed Size     00000000 (0)\n+1DB38C Filename Length       0037 (55)\n+1DB38E Extra Length          0000 (0)\n+1DB390 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D15E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DB390: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D161C PAYLOAD\n+1DB3C7 PAYLOAD\n \n-1D1BB1 DATA DESCRIPTOR       08074B50 (134695760)\n-1D1BB5 CRC                   56DBC793 (1457244051)\n-1D1BB9 Compressed Size       00000595 (1429)\n-1D1BBD Uncompressed Size     00000C79 (3193)\n+1DB704 DATA DESCRIPTOR       08074B50 (134695760)\n+1DB708 CRC                   9EA0D74F (2661341007)\n+1DB70C Compressed Size       0000033D (829)\n+1DB710 Uncompressed Size     000006EF (1775)\n \n-1D1BC1 LOCAL HEADER #1797    04034B50 (67324752)\n-1D1BC5 Extract Zip Spec      14 (20) '2.0'\n-1D1BC6 Extract OS            00 (0) 'MS-DOS'\n-1D1BC7 General Purpose Flag  0808 (2056)\n+1DB714 LOCAL HEADER #1797    04034B50 (67324752)\n+1DB718 Extract Zip Spec      14 (20) '2.0'\n+1DB719 Extract OS            00 (0) 'MS-DOS'\n+1DB71A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D1BC9 Compression Method    0008 (8) 'Deflated'\n-1D1BCB Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D1BCF CRC                   00000000 (0)\n-1D1BD3 Compressed Size       00000000 (0)\n-1D1BD7 Uncompressed Size     00000000 (0)\n-1D1BDB Filename Length       003B (59)\n-1D1BDD Extra Length          0000 (0)\n-1D1BDF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1DB71C Compression Method    0008 (8) 'Deflated'\n+1DB71E Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1DB722 CRC                   00000000 (0)\n+1DB726 Compressed Size       00000000 (0)\n+1DB72A Uncompressed Size     00000000 (0)\n+1DB72E Filename Length       003C (60)\n+1DB730 Extra Length          0000 (0)\n+1DB732 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D1BDF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DB732: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D1C1A PAYLOAD\n+1DB76E PAYLOAD\n \n-1D2233 DATA DESCRIPTOR       08074B50 (134695760)\n-1D2237 CRC                   D0079E8D (3490160269)\n-1D223B Compressed Size       00000619 (1561)\n-1D223F Uncompressed Size     00000D8D (3469)\n+1DBD10 DATA DESCRIPTOR       08074B50 (134695760)\n+1DBD14 CRC                   4F5E3DED (1331576301)\n+1DBD18 Compressed Size       000005A2 (1442)\n+1DBD1C Uncompressed Size     00000C13 (3091)\n \n-1D2243 LOCAL HEADER #1798    04034B50 (67324752)\n-1D2247 Extract Zip Spec      14 (20) '2.0'\n-1D2248 Extract OS            00 (0) 'MS-DOS'\n-1D2249 General Purpose Flag  0808 (2056)\n+1DBD20 LOCAL HEADER #1798    04034B50 (67324752)\n+1DBD24 Extract Zip Spec      14 (20) '2.0'\n+1DBD25 Extract OS            00 (0) 'MS-DOS'\n+1DBD26 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D224B Compression Method    0008 (8) 'Deflated'\n-1D224D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D2251 CRC                   00000000 (0)\n-1D2255 Compressed Size       00000000 (0)\n-1D2259 Uncompressed Size     00000000 (0)\n-1D225D Filename Length       003E (62)\n-1D225F Extra Length          0000 (0)\n-1D2261 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1DBD28 Compression Method    0008 (8) 'Deflated'\n+1DBD2A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1DBD2E CRC                   00000000 (0)\n+1DBD32 Compressed Size       00000000 (0)\n+1DBD36 Uncompressed Size     00000000 (0)\n+1DBD3A Filename Length       0036 (54)\n+1DBD3C Extra Length          0000 (0)\n+1DBD3E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D2261: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DBD3E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D229F PAYLOAD\n+1DBD74 PAYLOAD\n \n-1D27B1 DATA DESCRIPTOR       08074B50 (134695760)\n-1D27B5 CRC                   77DBD9E2 (2010896866)\n-1D27B9 Compressed Size       00000512 (1298)\n-1D27BD Uncompressed Size     00000A68 (2664)\n+1DC2F2 DATA DESCRIPTOR       08074B50 (134695760)\n+1DC2F6 CRC                   9B537823 (2605938723)\n+1DC2FA Compressed Size       0000057E (1406)\n+1DC2FE Uncompressed Size     00000C42 (3138)\n \n-1D27C1 LOCAL HEADER #1799    04034B50 (67324752)\n-1D27C5 Extract Zip Spec      14 (20) '2.0'\n-1D27C6 Extract OS            00 (0) 'MS-DOS'\n-1D27C7 General Purpose Flag  0808 (2056)\n+1DC302 LOCAL HEADER #1799    04034B50 (67324752)\n+1DC306 Extract Zip Spec      14 (20) '2.0'\n+1DC307 Extract OS            00 (0) 'MS-DOS'\n+1DC308 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D27C9 Compression Method    0008 (8) 'Deflated'\n-1D27CB Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D27CF CRC                   00000000 (0)\n-1D27D3 Compressed Size       00000000 (0)\n-1D27D7 Uncompressed Size     00000000 (0)\n-1D27DB Filename Length       0036 (54)\n-1D27DD Extra Length          0000 (0)\n-1D27DF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1DC30A Compression Method    0008 (8) 'Deflated'\n+1DC30C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1DC310 CRC                   00000000 (0)\n+1DC314 Compressed Size       00000000 (0)\n+1DC318 Uncompressed Size     00000000 (0)\n+1DC31C Filename Length       0037 (55)\n+1DC31E Extra Length          0000 (0)\n+1DC320 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D27DF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DC320: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D2815 PAYLOAD\n+1DC357 PAYLOAD\n \n-1D2CD0 DATA DESCRIPTOR       08074B50 (134695760)\n-1D2CD4 CRC                   C66F6586 (3329189254)\n-1D2CD8 Compressed Size       000004BB (1211)\n-1D2CDC Uncompressed Size     0000098F (2447)\n+1DD3EE DATA DESCRIPTOR       08074B50 (134695760)\n+1DD3F2 CRC                   FA00D04F (4194357327)\n+1DD3F6 Compressed Size       00001097 (4247)\n+1DD3FA Uncompressed Size     00006112 (24850)\n \n-1D2CE0 LOCAL HEADER #1800    04034B50 (67324752)\n-1D2CE4 Extract Zip Spec      14 (20) '2.0'\n-1D2CE5 Extract OS            00 (0) 'MS-DOS'\n-1D2CE6 General Purpose Flag  0808 (2056)\n+1DD3FE LOCAL HEADER #1800    04034B50 (67324752)\n+1DD402 Extract Zip Spec      14 (20) '2.0'\n+1DD403 Extract OS            00 (0) 'MS-DOS'\n+1DD404 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D2CE8 Compression Method    0008 (8) 'Deflated'\n-1D2CEA Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D2CEE CRC                   00000000 (0)\n-1D2CF2 Compressed Size       00000000 (0)\n-1D2CF6 Uncompressed Size     00000000 (0)\n-1D2CFA Filename Length       0034 (52)\n-1D2CFC Extra Length          0000 (0)\n-1D2CFE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1DD406 Compression Method    0008 (8) 'Deflated'\n+1DD408 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1DD40C CRC                   00000000 (0)\n+1DD410 Compressed Size       00000000 (0)\n+1DD414 Uncompressed Size     00000000 (0)\n+1DD418 Filename Length       0038 (56)\n+1DD41A Extra Length          0000 (0)\n+1DD41C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D2CFE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DD41C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D2D32 PAYLOAD\n+1DD454 PAYLOAD\n \n-1D322E DATA DESCRIPTOR       08074B50 (134695760)\n-1D3232 CRC                   CB19F474 (3407475828)\n-1D3236 Compressed Size       000004FC (1276)\n-1D323A Uncompressed Size     00000B41 (2881)\n+1DD9FD DATA DESCRIPTOR       08074B50 (134695760)\n+1DDA01 CRC                   EA548F41 (3931410241)\n+1DDA05 Compressed Size       000005A9 (1449)\n+1DDA09 Uncompressed Size     00000CF9 (3321)\n \n-1D323E LOCAL HEADER #1801    04034B50 (67324752)\n-1D3242 Extract Zip Spec      14 (20) '2.0'\n-1D3243 Extract OS            00 (0) 'MS-DOS'\n-1D3244 General Purpose Flag  0808 (2056)\n+1DDA0D LOCAL HEADER #1801    04034B50 (67324752)\n+1DDA11 Extract Zip Spec      14 (20) '2.0'\n+1DDA12 Extract OS            00 (0) 'MS-DOS'\n+1DDA13 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D3246 Compression Method    0008 (8) 'Deflated'\n-1D3248 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D324C CRC                   00000000 (0)\n-1D3250 Compressed Size       00000000 (0)\n-1D3254 Uncompressed Size     00000000 (0)\n-1D3258 Filename Length       003A (58)\n-1D325A Extra Length          0000 (0)\n-1D325C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1DDA15 Compression Method    0008 (8) 'Deflated'\n+1DDA17 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1DDA1B CRC                   00000000 (0)\n+1DDA1F Compressed Size       00000000 (0)\n+1DDA23 Uncompressed Size     00000000 (0)\n+1DDA27 Filename Length       0039 (57)\n+1DDA29 Extra Length          0000 (0)\n+1DDA2B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D325C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DDA2B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D3296 PAYLOAD\n+1DDA64 PAYLOAD\n \n-1D3E7A DATA DESCRIPTOR       08074B50 (134695760)\n-1D3E7E CRC                   FE2BC051 (4264280145)\n-1D3E82 Compressed Size       00000BE4 (3044)\n-1D3E86 Uncompressed Size     00002F6C (12140)\n+1DDFFF DATA DESCRIPTOR       08074B50 (134695760)\n+1DE003 CRC                   0F4C49C0 (256657856)\n+1DE007 Compressed Size       0000059B (1435)\n+1DE00B Uncompressed Size     00000BEC (3052)\n \n-1D3E8A LOCAL HEADER #1802    04034B50 (67324752)\n-1D3E8E Extract Zip Spec      14 (20) '2.0'\n-1D3E8F Extract OS            00 (0) 'MS-DOS'\n-1D3E90 General Purpose Flag  0808 (2056)\n+1DE00F LOCAL HEADER #1802    04034B50 (67324752)\n+1DE013 Extract Zip Spec      14 (20) '2.0'\n+1DE014 Extract OS            00 (0) 'MS-DOS'\n+1DE015 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D3E92 Compression Method    0008 (8) 'Deflated'\n-1D3E94 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D3E98 CRC                   00000000 (0)\n-1D3E9C Compressed Size       00000000 (0)\n-1D3EA0 Uncompressed Size     00000000 (0)\n-1D3EA4 Filename Length       0039 (57)\n-1D3EA6 Extra Length          0000 (0)\n-1D3EA8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1DE017 Compression Method    0008 (8) 'Deflated'\n+1DE019 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1DE01D CRC                   00000000 (0)\n+1DE021 Compressed Size       00000000 (0)\n+1DE025 Uncompressed Size     00000000 (0)\n+1DE029 Filename Length       0037 (55)\n+1DE02B Extra Length          0000 (0)\n+1DE02D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D3EA8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DE02D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D3EE1 PAYLOAD\n+1DE064 PAYLOAD\n \n-1D424C DATA DESCRIPTOR       08074B50 (134695760)\n-1D4250 CRC                   28964A03 (680937987)\n-1D4254 Compressed Size       0000036B (875)\n-1D4258 Uncompressed Size     0000080F (2063)\n+1DE5C8 DATA DESCRIPTOR       08074B50 (134695760)\n+1DE5CC CRC                   D55758DF (3579271391)\n+1DE5D0 Compressed Size       00000564 (1380)\n+1DE5D4 Uncompressed Size     00000B49 (2889)\n \n-1D425C LOCAL HEADER #1803    04034B50 (67324752)\n-1D4260 Extract Zip Spec      14 (20) '2.0'\n-1D4261 Extract OS            00 (0) 'MS-DOS'\n-1D4262 General Purpose Flag  0808 (2056)\n+1DE5D8 LOCAL HEADER #1803    04034B50 (67324752)\n+1DE5DC Extract Zip Spec      14 (20) '2.0'\n+1DE5DD Extract OS            00 (0) 'MS-DOS'\n+1DE5DE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D4264 Compression Method    0008 (8) 'Deflated'\n-1D4266 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D426A CRC                   00000000 (0)\n-1D426E Compressed Size       00000000 (0)\n-1D4272 Uncompressed Size     00000000 (0)\n-1D4276 Filename Length       003D (61)\n-1D4278 Extra Length          0000 (0)\n-1D427A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1DE5E0 Compression Method    0008 (8) 'Deflated'\n+1DE5E2 Modification Time     50DD91CB (1356698059) 'Mon Jun 29 18:14:22 2020'\n+1DE5E6 CRC                   00000000 (0)\n+1DE5EA Compressed Size       00000000 (0)\n+1DE5EE Uncompressed Size     00000000 (0)\n+1DE5F2 Filename Length       001B (27)\n+1DE5F4 Extra Length          0000 (0)\n+1DE5F6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D427A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DE5F6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D42B7 PAYLOAD\n+1DE611 PAYLOAD               XX\n \n-1D4618 DATA DESCRIPTOR       08074B50 (134695760)\n-1D461C CRC                   8696E439 (2258035769)\n-1D4620 Compressed Size       00000361 (865)\n-1D4624 Uncompressed Size     000007F5 (2037)\n+1DE613 DATA DESCRIPTOR       08074B50 (134695760)\n+1DE617 CRC                   00000000 (0)\n+1DE61B Compressed Size       00000002 (2)\n+1DE61F Uncompressed Size     00000000 (0)\n \n-1D4628 LOCAL HEADER #1804    04034B50 (67324752)\n-1D462C Extract Zip Spec      14 (20) '2.0'\n-1D462D Extract OS            00 (0) 'MS-DOS'\n-1D462E General Purpose Flag  0808 (2056)\n+1DE623 LOCAL HEADER #1804    04034B50 (67324752)\n+1DE627 Extract Zip Spec      14 (20) '2.0'\n+1DE628 Extract OS            00 (0) 'MS-DOS'\n+1DE629 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D4630 Compression Method    0008 (8) 'Deflated'\n-1D4632 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D4636 CRC                   00000000 (0)\n-1D463A Compressed Size       00000000 (0)\n-1D463E Uncompressed Size     00000000 (0)\n-1D4642 Filename Length       003C (60)\n-1D4644 Extra Length          0000 (0)\n-1D4646 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1DE62B Compression Method    0008 (8) 'Deflated'\n+1DE62D Modification Time     50DD91CB (1356698059) 'Mon Jun 29 18:14:22 2020'\n+1DE631 CRC                   00000000 (0)\n+1DE635 Compressed Size       00000000 (0)\n+1DE639 Uncompressed Size     00000000 (0)\n+1DE63D Filename Length       0028 (40)\n+1DE63F Extra Length          0000 (0)\n+1DE641 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D4646: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DE641: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D4682 PAYLOAD\n+1DE669 PAYLOAD               XX\n \n-1D4B6E DATA DESCRIPTOR       08074B50 (134695760)\n-1D4B72 CRC                   AC539B8F (2891160463)\n-1D4B76 Compressed Size       000004EC (1260)\n-1D4B7A Uncompressed Size     00000A07 (2567)\n+1DE66B DATA DESCRIPTOR       08074B50 (134695760)\n+1DE66F CRC                   00000000 (0)\n+1DE673 Compressed Size       00000002 (2)\n+1DE677 Uncompressed Size     00000000 (0)\n \n-1D4B7E LOCAL HEADER #1805    04034B50 (67324752)\n-1D4B82 Extract Zip Spec      14 (20) '2.0'\n-1D4B83 Extract OS            00 (0) 'MS-DOS'\n-1D4B84 General Purpose Flag  0808 (2056)\n+1DE67B LOCAL HEADER #1805    04034B50 (67324752)\n+1DE67F Extract Zip Spec      14 (20) '2.0'\n+1DE680 Extract OS            00 (0) 'MS-DOS'\n+1DE681 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D4B86 Compression Method    0008 (8) 'Deflated'\n-1D4B88 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D4B8C CRC                   00000000 (0)\n-1D4B90 Compressed Size       00000000 (0)\n-1D4B94 Uncompressed Size     00000000 (0)\n-1D4B98 Filename Length       003D (61)\n-1D4B9A Extra Length          0000 (0)\n-1D4B9C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1DE683 Compression Method    0008 (8) 'Deflated'\n+1DE685 Modification Time     50DD91CB (1356698059) 'Mon Jun 29 18:14:22 2020'\n+1DE689 CRC                   00000000 (0)\n+1DE68D Compressed Size       00000000 (0)\n+1DE691 Uncompressed Size     00000000 (0)\n+1DE695 Filename Length       0036 (54)\n+1DE697 Extra Length          0000 (0)\n+1DE699 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D4B9C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DE699: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D4BD9 PAYLOAD\n+1DE6CF PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-1D52D8 DATA DESCRIPTOR       08074B50 (134695760)\n-1D52DC CRC                   FF195881 (4279851137)\n-1D52E0 Compressed Size       000006FF (1791)\n-1D52E4 Uncompressed Size     00001388 (5000)\n+1DE73A DATA DESCRIPTOR       08074B50 (134695760)\n+1DE73E CRC                   37B34B5F (934497119)\n+1DE742 Compressed Size       0000006B (107)\n+1DE746 Uncompressed Size     0000006C (108)\n \n-1D52E8 LOCAL HEADER #1806    04034B50 (67324752)\n-1D52EC Extract Zip Spec      14 (20) '2.0'\n-1D52ED Extract OS            00 (0) 'MS-DOS'\n-1D52EE General Purpose Flag  0808 (2056)\n+1DE74A LOCAL HEADER #1806    04034B50 (67324752)\n+1DE74E Extract Zip Spec      14 (20) '2.0'\n+1DE74F Extract OS            00 (0) 'MS-DOS'\n+1DE750 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D52F0 Compression Method    0008 (8) 'Deflated'\n-1D52F2 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D52F6 CRC                   00000000 (0)\n-1D52FA Compressed Size       00000000 (0)\n-1D52FE Uncompressed Size     00000000 (0)\n-1D5302 Filename Length       003E (62)\n-1D5304 Extra Length          0000 (0)\n-1D5306 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1DE752 Compression Method    0008 (8) 'Deflated'\n+1DE754 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1DE758 CRC                   00000000 (0)\n+1DE75C Compressed Size       00000000 (0)\n+1DE760 Uncompressed Size     00000000 (0)\n+1DE764 Filename Length       0040 (64)\n+1DE766 Extra Length          0000 (0)\n+1DE768 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D5306: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DE768: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D5344 PAYLOAD\n+1DE7A8 PAYLOAD\n \n-1D58AD DATA DESCRIPTOR       08074B50 (134695760)\n-1D58B1 CRC                   EF9589B0 (4019554736)\n-1D58B5 Compressed Size       00000569 (1385)\n-1D58B9 Uncompressed Size     00000B3F (2879)\n+1DECD2 DATA DESCRIPTOR       08074B50 (134695760)\n+1DECD6 CRC                   D3EA2D1D (3555339549)\n+1DECDA Compressed Size       0000052A (1322)\n+1DECDE Uncompressed Size     00000BA9 (2985)\n \n-1D58BD LOCAL HEADER #1807    04034B50 (67324752)\n-1D58C1 Extract Zip Spec      14 (20) '2.0'\n-1D58C2 Extract OS            00 (0) 'MS-DOS'\n-1D58C3 General Purpose Flag  0808 (2056)\n+1DECE2 LOCAL HEADER #1807    04034B50 (67324752)\n+1DECE6 Extract Zip Spec      14 (20) '2.0'\n+1DECE7 Extract OS            00 (0) 'MS-DOS'\n+1DECE8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D58C5 Compression Method    0008 (8) 'Deflated'\n-1D58C7 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D58CB CRC                   00000000 (0)\n-1D58CF Compressed Size       00000000 (0)\n-1D58D3 Uncompressed Size     00000000 (0)\n-1D58D7 Filename Length       003B (59)\n-1D58D9 Extra Length          0000 (0)\n-1D58DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1DECEA Compression Method    0008 (8) 'Deflated'\n+1DECEC Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1DECF0 CRC                   00000000 (0)\n+1DECF4 Compressed Size       00000000 (0)\n+1DECF8 Uncompressed Size     00000000 (0)\n+1DECFC Filename Length       0040 (64)\n+1DECFE Extra Length          0000 (0)\n+1DED00 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D58DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DED00: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D5916 PAYLOAD\n+1DED40 PAYLOAD\n \n-1D5FF0 DATA DESCRIPTOR       08074B50 (134695760)\n-1D5FF4 CRC                   273E139A (658379674)\n-1D5FF8 Compressed Size       000006DA (1754)\n-1D5FFC Uncompressed Size     000015B3 (5555)\n+1DF08E DATA DESCRIPTOR       08074B50 (134695760)\n+1DF092 CRC                   3ADD7788 (987592584)\n+1DF096 Compressed Size       0000034E (846)\n+1DF09A Uncompressed Size     000007D9 (2009)\n \n-1D6000 LOCAL HEADER #1808    04034B50 (67324752)\n-1D6004 Extract Zip Spec      14 (20) '2.0'\n-1D6005 Extract OS            00 (0) 'MS-DOS'\n-1D6006 General Purpose Flag  0808 (2056)\n+1DF09E LOCAL HEADER #1808    04034B50 (67324752)\n+1DF0A2 Extract Zip Spec      14 (20) '2.0'\n+1DF0A3 Extract OS            00 (0) 'MS-DOS'\n+1DF0A4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D6008 Compression Method    0008 (8) 'Deflated'\n-1D600A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D600E CRC                   00000000 (0)\n-1D6012 Compressed Size       00000000 (0)\n-1D6016 Uncompressed Size     00000000 (0)\n-1D601A Filename Length       0038 (56)\n-1D601C Extra Length          0000 (0)\n-1D601E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1DF0A6 Compression Method    0008 (8) 'Deflated'\n+1DF0A8 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1DF0AC CRC                   00000000 (0)\n+1DF0B0 Compressed Size       00000000 (0)\n+1DF0B4 Uncompressed Size     00000000 (0)\n+1DF0B8 Filename Length       003C (60)\n+1DF0BA Extra Length          0000 (0)\n+1DF0BC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D601E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DF0BC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D6056 PAYLOAD\n+1DF0F8 PAYLOAD\n \n-1D679D DATA DESCRIPTOR       08074B50 (134695760)\n-1D67A1 CRC                   BB4C70B3 (3142348979)\n-1D67A5 Compressed Size       00000747 (1863)\n-1D67A9 Uncompressed Size     0000146B (5227)\n+1DF453 DATA DESCRIPTOR       08074B50 (134695760)\n+1DF457 CRC                   B957E47F (3109545087)\n+1DF45B Compressed Size       0000035B (859)\n+1DF45F Uncompressed Size     00000795 (1941)\n \n-1D67AD LOCAL HEADER #1809    04034B50 (67324752)\n-1D67B1 Extract Zip Spec      14 (20) '2.0'\n-1D67B2 Extract OS            00 (0) 'MS-DOS'\n-1D67B3 General Purpose Flag  0808 (2056)\n+1DF463 LOCAL HEADER #1809    04034B50 (67324752)\n+1DF467 Extract Zip Spec      14 (20) '2.0'\n+1DF468 Extract OS            00 (0) 'MS-DOS'\n+1DF469 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D67B5 Compression Method    0008 (8) 'Deflated'\n-1D67B7 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D67BB CRC                   00000000 (0)\n-1D67BF Compressed Size       00000000 (0)\n-1D67C3 Uncompressed Size     00000000 (0)\n-1D67C7 Filename Length       003A (58)\n-1D67C9 Extra Length          0000 (0)\n-1D67CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1DF46B Compression Method    0008 (8) 'Deflated'\n+1DF46D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1DF471 CRC                   00000000 (0)\n+1DF475 Compressed Size       00000000 (0)\n+1DF479 Uncompressed Size     00000000 (0)\n+1DF47D Filename Length       0033 (51)\n+1DF47F Extra Length          0000 (0)\n+1DF481 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D67CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DF481: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D6805 PAYLOAD\n+1DF4B4 PAYLOAD\n \n-1D6D41 DATA DESCRIPTOR       08074B50 (134695760)\n-1D6D45 CRC                   165EFEE5 (375324389)\n-1D6D49 Compressed Size       0000053C (1340)\n-1D6D4D Uncompressed Size     00000ABA (2746)\n+1DFA44 DATA DESCRIPTOR       08074B50 (134695760)\n+1DFA48 CRC                   27E32CDA (669199578)\n+1DFA4C Compressed Size       00000590 (1424)\n+1DFA50 Uncompressed Size     00000EE5 (3813)\n \n-1D6D51 LOCAL HEADER #1810    04034B50 (67324752)\n-1D6D55 Extract Zip Spec      14 (20) '2.0'\n-1D6D56 Extract OS            00 (0) 'MS-DOS'\n-1D6D57 General Purpose Flag  0808 (2056)\n+1DFA54 LOCAL HEADER #1810    04034B50 (67324752)\n+1DFA58 Extract Zip Spec      14 (20) '2.0'\n+1DFA59 Extract OS            00 (0) 'MS-DOS'\n+1DFA5A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D6D59 Compression Method    0008 (8) 'Deflated'\n-1D6D5B Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D6D5F CRC                   00000000 (0)\n-1D6D63 Compressed Size       00000000 (0)\n-1D6D67 Uncompressed Size     00000000 (0)\n-1D6D6B Filename Length       003A (58)\n-1D6D6D Extra Length          0000 (0)\n-1D6D6F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1DFA5C Compression Method    0008 (8) 'Deflated'\n+1DFA5E Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1DFA62 CRC                   00000000 (0)\n+1DFA66 Compressed Size       00000000 (0)\n+1DFA6A Uncompressed Size     00000000 (0)\n+1DFA6E Filename Length       0039 (57)\n+1DFA70 Extra Length          0000 (0)\n+1DFA72 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D6D6F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1DFA72: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D6DA9 PAYLOAD\n+1DFAAB PAYLOAD\n \n-1D7457 DATA DESCRIPTOR       08074B50 (134695760)\n-1D745B CRC                   515E6059 (1365139545)\n-1D745F Compressed Size       000006AE (1710)\n-1D7463 Uncompressed Size     0000106F (4207)\n+1E0043 DATA DESCRIPTOR       08074B50 (134695760)\n+1E0047 CRC                   96A3AA02 (2527308290)\n+1E004B Compressed Size       00000598 (1432)\n+1E004F Uncompressed Size     00000D62 (3426)\n \n-1D7467 LOCAL HEADER #1811    04034B50 (67324752)\n-1D746B Extract Zip Spec      14 (20) '2.0'\n-1D746C Extract OS            00 (0) 'MS-DOS'\n-1D746D General Purpose Flag  0808 (2056)\n+1E0053 LOCAL HEADER #1811    04034B50 (67324752)\n+1E0057 Extract Zip Spec      14 (20) '2.0'\n+1E0058 Extract OS            00 (0) 'MS-DOS'\n+1E0059 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D746F Compression Method    0008 (8) 'Deflated'\n-1D7471 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D7475 CRC                   00000000 (0)\n-1D7479 Compressed Size       00000000 (0)\n-1D747D Uncompressed Size     00000000 (0)\n-1D7481 Filename Length       0036 (54)\n-1D7483 Extra Length          0000 (0)\n-1D7485 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1E005B Compression Method    0008 (8) 'Deflated'\n+1E005D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1E0061 CRC                   00000000 (0)\n+1E0065 Compressed Size       00000000 (0)\n+1E0069 Uncompressed Size     00000000 (0)\n+1E006D Filename Length       0036 (54)\n+1E006F Extra Length          0000 (0)\n+1E0071 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D7485: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E0071: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D74BB PAYLOAD\n+1E00A7 PAYLOAD\n \n-1D7CCF DATA DESCRIPTOR       08074B50 (134695760)\n-1D7CD3 CRC                   67A3DA8B (1738791563)\n-1D7CD7 Compressed Size       00000814 (2068)\n-1D7CDB Uncompressed Size     0000174A (5962)\n+1E092E DATA DESCRIPTOR       08074B50 (134695760)\n+1E0932 CRC                   CA81C016 (3397500950)\n+1E0936 Compressed Size       00000887 (2183)\n+1E093A Uncompressed Size     00002307 (8967)\n \n-1D7CDF LOCAL HEADER #1812    04034B50 (67324752)\n-1D7CE3 Extract Zip Spec      14 (20) '2.0'\n-1D7CE4 Extract OS            00 (0) 'MS-DOS'\n-1D7CE5 General Purpose Flag  0808 (2056)\n+1E093E LOCAL HEADER #1812    04034B50 (67324752)\n+1E0942 Extract Zip Spec      14 (20) '2.0'\n+1E0943 Extract OS            00 (0) 'MS-DOS'\n+1E0944 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D7CE7 Compression Method    0008 (8) 'Deflated'\n-1D7CE9 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D7CED CRC                   00000000 (0)\n-1D7CF1 Compressed Size       00000000 (0)\n-1D7CF5 Uncompressed Size     00000000 (0)\n-1D7CF9 Filename Length       003B (59)\n-1D7CFB Extra Length          0000 (0)\n-1D7CFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1E0946 Compression Method    0008 (8) 'Deflated'\n+1E0948 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1E094C CRC                   00000000 (0)\n+1E0950 Compressed Size       00000000 (0)\n+1E0954 Uncompressed Size     00000000 (0)\n+1E0958 Filename Length       0039 (57)\n+1E095A Extra Length          0000 (0)\n+1E095C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D7CFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E095C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D7D38 PAYLOAD\n+1E0995 PAYLOAD\n \n-1D88AC DATA DESCRIPTOR       08074B50 (134695760)\n-1D88B0 CRC                   02D2B2EB (47362795)\n-1D88B4 Compressed Size       00000B74 (2932)\n-1D88B8 Uncompressed Size     00002CCA (11466)\n+1E0EB1 DATA DESCRIPTOR       08074B50 (134695760)\n+1E0EB5 CRC                   06019AC3 (100768451)\n+1E0EB9 Compressed Size       0000051C (1308)\n+1E0EBD Uncompressed Size     00000A6E (2670)\n \n-1D88BC LOCAL HEADER #1813    04034B50 (67324752)\n-1D88C0 Extract Zip Spec      14 (20) '2.0'\n-1D88C1 Extract OS            00 (0) 'MS-DOS'\n-1D88C2 General Purpose Flag  0808 (2056)\n+1E0EC1 LOCAL HEADER #1813    04034B50 (67324752)\n+1E0EC5 Extract Zip Spec      14 (20) '2.0'\n+1E0EC6 Extract OS            00 (0) 'MS-DOS'\n+1E0EC7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D88C4 Compression Method    0008 (8) 'Deflated'\n-1D88C6 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D88CA CRC                   00000000 (0)\n-1D88CE Compressed Size       00000000 (0)\n-1D88D2 Uncompressed Size     00000000 (0)\n-1D88D6 Filename Length       003E (62)\n-1D88D8 Extra Length          0000 (0)\n-1D88DA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1E0EC9 Compression Method    0008 (8) 'Deflated'\n+1E0ECB Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1E0ECF CRC                   00000000 (0)\n+1E0ED3 Compressed Size       00000000 (0)\n+1E0ED7 Uncompressed Size     00000000 (0)\n+1E0EDB Filename Length       0033 (51)\n+1E0EDD Extra Length          0000 (0)\n+1E0EDF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D88DA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E0EDF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D8918 PAYLOAD\n+1E0F12 PAYLOAD\n \n-1D8EC4 DATA DESCRIPTOR       08074B50 (134695760)\n-1D8EC8 CRC                   8611C8ED (2249312493)\n-1D8ECC Compressed Size       000005AC (1452)\n-1D8ED0 Uncompressed Size     00000D39 (3385)\n+1E16AB DATA DESCRIPTOR       08074B50 (134695760)\n+1E16AF CRC                   5603C310 (1443087120)\n+1E16B3 Compressed Size       00000799 (1945)\n+1E16B7 Uncompressed Size     00001463 (5219)\n \n-1D8ED4 LOCAL HEADER #1814    04034B50 (67324752)\n-1D8ED8 Extract Zip Spec      14 (20) '2.0'\n-1D8ED9 Extract OS            00 (0) 'MS-DOS'\n-1D8EDA General Purpose Flag  0808 (2056)\n+1E16BB LOCAL HEADER #1814    04034B50 (67324752)\n+1E16BF Extract Zip Spec      14 (20) '2.0'\n+1E16C0 Extract OS            00 (0) 'MS-DOS'\n+1E16C1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D8EDC Compression Method    0008 (8) 'Deflated'\n-1D8EDE Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D8EE2 CRC                   00000000 (0)\n-1D8EE6 Compressed Size       00000000 (0)\n-1D8EEA Uncompressed Size     00000000 (0)\n-1D8EEE Filename Length       0035 (53)\n-1D8EF0 Extra Length          0000 (0)\n-1D8EF2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1E16C3 Compression Method    0008 (8) 'Deflated'\n+1E16C5 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1E16C9 CRC                   00000000 (0)\n+1E16CD Compressed Size       00000000 (0)\n+1E16D1 Uncompressed Size     00000000 (0)\n+1E16D5 Filename Length       003E (62)\n+1E16D7 Extra Length          0000 (0)\n+1E16D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D8EF2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E16D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D8F27 PAYLOAD\n+1E1717 PAYLOAD\n \n-1D9A64 DATA DESCRIPTOR       08074B50 (134695760)\n-1D9A68 CRC                   E0540578 (3763602808)\n-1D9A6C Compressed Size       00000B3D (2877)\n-1D9A70 Uncompressed Size     00002679 (9849)\n+1E1C9B DATA DESCRIPTOR       08074B50 (134695760)\n+1E1C9F CRC                   D1926FA5 (3516034981)\n+1E1CA3 Compressed Size       00000584 (1412)\n+1E1CA7 Uncompressed Size     00000BBB (3003)\n \n-1D9A74 LOCAL HEADER #1815    04034B50 (67324752)\n-1D9A78 Extract Zip Spec      14 (20) '2.0'\n-1D9A79 Extract OS            00 (0) 'MS-DOS'\n-1D9A7A General Purpose Flag  0808 (2056)\n+1E1CAB LOCAL HEADER #1815    04034B50 (67324752)\n+1E1CAF Extract Zip Spec      14 (20) '2.0'\n+1E1CB0 Extract OS            00 (0) 'MS-DOS'\n+1E1CB1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1D9A7C Compression Method    0008 (8) 'Deflated'\n-1D9A7E Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1D9A82 CRC                   00000000 (0)\n-1D9A86 Compressed Size       00000000 (0)\n-1D9A8A Uncompressed Size     00000000 (0)\n-1D9A8E Filename Length       0038 (56)\n-1D9A90 Extra Length          0000 (0)\n-1D9A92 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1E1CB3 Compression Method    0008 (8) 'Deflated'\n+1E1CB5 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1E1CB9 CRC                   00000000 (0)\n+1E1CBD Compressed Size       00000000 (0)\n+1E1CC1 Uncompressed Size     00000000 (0)\n+1E1CC5 Filename Length       0038 (56)\n+1E1CC7 Extra Length          0000 (0)\n+1E1CC9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1D9A92: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E1CC9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1D9ACA PAYLOAD\n+1E1D01 PAYLOAD\n \n-1DA073 DATA DESCRIPTOR       08074B50 (134695760)\n-1DA077 CRC                   5238B40F (1379447823)\n-1DA07B Compressed Size       000005A9 (1449)\n-1DA07F Uncompressed Size     00000CA6 (3238)\n+1E3A8D DATA DESCRIPTOR       08074B50 (134695760)\n+1E3A91 CRC                   61E4315C (1642344796)\n+1E3A95 Compressed Size       00001D8C (7564)\n+1E3A99 Uncompressed Size     0000E195 (57749)\n \n-1DA083 LOCAL HEADER #1816    04034B50 (67324752)\n-1DA087 Extract Zip Spec      14 (20) '2.0'\n-1DA088 Extract OS            00 (0) 'MS-DOS'\n-1DA089 General Purpose Flag  0808 (2056)\n+1E3A9D LOCAL HEADER #1816    04034B50 (67324752)\n+1E3AA1 Extract Zip Spec      14 (20) '2.0'\n+1E3AA2 Extract OS            00 (0) 'MS-DOS'\n+1E3AA3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1DA08B Compression Method    0008 (8) 'Deflated'\n-1DA08D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1DA091 CRC                   00000000 (0)\n-1DA095 Compressed Size       00000000 (0)\n-1DA099 Uncompressed Size     00000000 (0)\n-1DA09D Filename Length       003F (63)\n-1DA09F Extra Length          0000 (0)\n-1DA0A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1E3AA5 Compression Method    0008 (8) 'Deflated'\n+1E3AA7 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1E3AAB CRC                   00000000 (0)\n+1E3AAF Compressed Size       00000000 (0)\n+1E3AB3 Uncompressed Size     00000000 (0)\n+1E3AB7 Filename Length       003A (58)\n+1E3AB9 Extra Length          0000 (0)\n+1E3ABB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1DA0A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E3ABB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1DA0E0 PAYLOAD\n+1E3AF5 PAYLOAD\n \n-1DA670 DATA DESCRIPTOR       08074B50 (134695760)\n-1DA674 CRC                   14C32F61 (348335969)\n-1DA678 Compressed Size       00000590 (1424)\n-1DA67C Uncompressed Size     00000D46 (3398)\n+1E40D2 DATA DESCRIPTOR       08074B50 (134695760)\n+1E40D6 CRC                   968E88D0 (2525923536)\n+1E40DA Compressed Size       000005DD (1501)\n+1E40DE Uncompressed Size     00000E0E (3598)\n \n-1DA680 LOCAL HEADER #1817    04034B50 (67324752)\n-1DA684 Extract Zip Spec      14 (20) '2.0'\n-1DA685 Extract OS            00 (0) 'MS-DOS'\n-1DA686 General Purpose Flag  0808 (2056)\n+1E40E2 LOCAL HEADER #1817    04034B50 (67324752)\n+1E40E6 Extract Zip Spec      14 (20) '2.0'\n+1E40E7 Extract OS            00 (0) 'MS-DOS'\n+1E40E8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1DA688 Compression Method    0008 (8) 'Deflated'\n-1DA68A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1DA68E CRC                   00000000 (0)\n-1DA692 Compressed Size       00000000 (0)\n-1DA696 Uncompressed Size     00000000 (0)\n-1DA69A Filename Length       0035 (53)\n-1DA69C Extra Length          0000 (0)\n-1DA69E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1E40EA Compression Method    0008 (8) 'Deflated'\n+1E40EC Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1E40F0 CRC                   00000000 (0)\n+1E40F4 Compressed Size       00000000 (0)\n+1E40F8 Uncompressed Size     00000000 (0)\n+1E40FC Filename Length       0038 (56)\n+1E40FE Extra Length          0000 (0)\n+1E4100 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1DA69E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E4100: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1DA6D3 PAYLOAD\n+1E4138 PAYLOAD\n \n-1DAD1A DATA DESCRIPTOR       08074B50 (134695760)\n-1DAD1E CRC                   B1CE4173 (2983084403)\n-1DAD22 Compressed Size       00000647 (1607)\n-1DAD26 Uncompressed Size     00000E9E (3742)\n+1E5580 DATA DESCRIPTOR       08074B50 (134695760)\n+1E5584 CRC                   E14A6B5A (3779750746)\n+1E5588 Compressed Size       00001448 (5192)\n+1E558C Uncompressed Size     0000694D (26957)\n \n-1DAD2A LOCAL HEADER #1818    04034B50 (67324752)\n-1DAD2E Extract Zip Spec      14 (20) '2.0'\n-1DAD2F Extract OS            00 (0) 'MS-DOS'\n-1DAD30 General Purpose Flag  0808 (2056)\n+1E5590 LOCAL HEADER #1818    04034B50 (67324752)\n+1E5594 Extract Zip Spec      14 (20) '2.0'\n+1E5595 Extract OS            00 (0) 'MS-DOS'\n+1E5596 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1DAD32 Compression Method    0008 (8) 'Deflated'\n-1DAD34 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1DAD38 CRC                   00000000 (0)\n-1DAD3C Compressed Size       00000000 (0)\n-1DAD40 Uncompressed Size     00000000 (0)\n-1DAD44 Filename Length       0038 (56)\n-1DAD46 Extra Length          0000 (0)\n-1DAD48 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1E5598 Compression Method    0008 (8) 'Deflated'\n+1E559A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1E559E CRC                   00000000 (0)\n+1E55A2 Compressed Size       00000000 (0)\n+1E55A6 Uncompressed Size     00000000 (0)\n+1E55AA Filename Length       0035 (53)\n+1E55AC Extra Length          0000 (0)\n+1E55AE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1DAD48: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E55AE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1DAD80 PAYLOAD\n+1E55E3 PAYLOAD\n \n-1DB999 DATA DESCRIPTOR       08074B50 (134695760)\n-1DB99D CRC                   4FA522A8 (1336222376)\n-1DB9A1 Compressed Size       00000C19 (3097)\n-1DB9A5 Uncompressed Size     000049D9 (18905)\n+1E711B DATA DESCRIPTOR       08074B50 (134695760)\n+1E711F CRC                   038157DF (58808287)\n+1E7123 Compressed Size       00001B38 (6968)\n+1E7127 Uncompressed Size     00009F03 (40707)\n \n-1DB9A9 LOCAL HEADER #1819    04034B50 (67324752)\n-1DB9AD Extract Zip Spec      14 (20) '2.0'\n-1DB9AE Extract OS            00 (0) 'MS-DOS'\n-1DB9AF General Purpose Flag  0808 (2056)\n+1E712B LOCAL HEADER #1819    04034B50 (67324752)\n+1E712F Extract Zip Spec      14 (20) '2.0'\n+1E7130 Extract OS            00 (0) 'MS-DOS'\n+1E7131 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1DB9B1 Compression Method    0008 (8) 'Deflated'\n-1DB9B3 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1DB9B7 CRC                   00000000 (0)\n-1DB9BB Compressed Size       00000000 (0)\n-1DB9BF Uncompressed Size     00000000 (0)\n-1DB9C3 Filename Length       003D (61)\n-1DB9C5 Extra Length          0000 (0)\n-1DB9C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1E7133 Compression Method    0008 (8) 'Deflated'\n+1E7135 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1E7139 CRC                   00000000 (0)\n+1E713D Compressed Size       00000000 (0)\n+1E7141 Uncompressed Size     00000000 (0)\n+1E7145 Filename Length       0044 (68)\n+1E7147 Extra Length          0000 (0)\n+1E7149 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1DB9C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E7149: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1DBA04 PAYLOAD\n+1E718D PAYLOAD\n \n-1DBD4A DATA DESCRIPTOR       08074B50 (134695760)\n-1DBD4E CRC                   6A312F64 (1781608292)\n-1DBD52 Compressed Size       00000346 (838)\n-1DBD56 Uncompressed Size     00000727 (1831)\n+1E768A DATA DESCRIPTOR       08074B50 (134695760)\n+1E768E CRC                   9A414F54 (2587971412)\n+1E7692 Compressed Size       000004FD (1277)\n+1E7696 Uncompressed Size     00000A4B (2635)\n \n-1DBD5A LOCAL HEADER #1820    04034B50 (67324752)\n-1DBD5E Extract Zip Spec      14 (20) '2.0'\n-1DBD5F Extract OS            00 (0) 'MS-DOS'\n-1DBD60 General Purpose Flag  0808 (2056)\n+1E769A LOCAL HEADER #1820    04034B50 (67324752)\n+1E769E Extract Zip Spec      14 (20) '2.0'\n+1E769F Extract OS            00 (0) 'MS-DOS'\n+1E76A0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1DBD62 Compression Method    0008 (8) 'Deflated'\n-1DBD64 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1DBD68 CRC                   00000000 (0)\n-1DBD6C Compressed Size       00000000 (0)\n-1DBD70 Uncompressed Size     00000000 (0)\n-1DBD74 Filename Length       003D (61)\n-1DBD76 Extra Length          0000 (0)\n-1DBD78 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1E76A2 Compression Method    0008 (8) 'Deflated'\n+1E76A4 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1E76A8 CRC                   00000000 (0)\n+1E76AC Compressed Size       00000000 (0)\n+1E76B0 Uncompressed Size     00000000 (0)\n+1E76B4 Filename Length       003B (59)\n+1E76B6 Extra Length          0000 (0)\n+1E76B8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1DBD78: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E76B8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1DBDB5 PAYLOAD\n+1E76F3 PAYLOAD\n \n-1DC083 DATA DESCRIPTOR       08074B50 (134695760)\n-1DC087 CRC                   EE87A59D (4001867165)\n-1DC08B Compressed Size       000002CE (718)\n-1DC08F Uncompressed Size     000005C7 (1479)\n+1E7A4E DATA DESCRIPTOR       08074B50 (134695760)\n+1E7A52 CRC                   4BAE3F59 (1269710681)\n+1E7A56 Compressed Size       0000035B (859)\n+1E7A5A Uncompressed Size     00000792 (1938)\n \n-1DC093 LOCAL HEADER #1821    04034B50 (67324752)\n-1DC097 Extract Zip Spec      14 (20) '2.0'\n-1DC098 Extract OS            00 (0) 'MS-DOS'\n-1DC099 General Purpose Flag  0808 (2056)\n+1E7A5E LOCAL HEADER #1821    04034B50 (67324752)\n+1E7A62 Extract Zip Spec      14 (20) '2.0'\n+1E7A63 Extract OS            00 (0) 'MS-DOS'\n+1E7A64 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1DC09B Compression Method    0008 (8) 'Deflated'\n-1DC09D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1DC0A1 CRC                   00000000 (0)\n-1DC0A5 Compressed Size       00000000 (0)\n-1DC0A9 Uncompressed Size     00000000 (0)\n-1DC0AD Filename Length       0037 (55)\n-1DC0AF Extra Length          0000 (0)\n-1DC0B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1E7A66 Compression Method    0008 (8) 'Deflated'\n+1E7A68 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1E7A6C CRC                   00000000 (0)\n+1E7A70 Compressed Size       00000000 (0)\n+1E7A74 Uncompressed Size     00000000 (0)\n+1E7A78 Filename Length       0038 (56)\n+1E7A7A Extra Length          0000 (0)\n+1E7A7C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1DC0B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E7A7C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1DC0E8 PAYLOAD\n+1E7AB4 PAYLOAD\n \n-1DC425 DATA DESCRIPTOR       08074B50 (134695760)\n-1DC429 CRC                   9EA0D74F (2661341007)\n-1DC42D Compressed Size       0000033D (829)\n-1DC431 Uncompressed Size     000006EF (1775)\n+1E7E13 DATA DESCRIPTOR       08074B50 (134695760)\n+1E7E17 CRC                   DA561E50 (3663076944)\n+1E7E1B Compressed Size       0000035F (863)\n+1E7E1F Uncompressed Size     0000070B (1803)\n \n-1DC435 LOCAL HEADER #1822    04034B50 (67324752)\n-1DC439 Extract Zip Spec      14 (20) '2.0'\n-1DC43A Extract OS            00 (0) 'MS-DOS'\n-1DC43B General Purpose Flag  0808 (2056)\n+1E7E23 LOCAL HEADER #1822    04034B50 (67324752)\n+1E7E27 Extract Zip Spec      14 (20) '2.0'\n+1E7E28 Extract OS            00 (0) 'MS-DOS'\n+1E7E29 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1DC43D Compression Method    0008 (8) 'Deflated'\n-1DC43F Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1DC443 CRC                   00000000 (0)\n-1DC447 Compressed Size       00000000 (0)\n-1DC44B Uncompressed Size     00000000 (0)\n-1DC44F Filename Length       003C (60)\n-1DC451 Extra Length          0000 (0)\n-1DC453 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1E7E2B Compression Method    0008 (8) 'Deflated'\n+1E7E2D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1E7E31 CRC                   00000000 (0)\n+1E7E35 Compressed Size       00000000 (0)\n+1E7E39 Uncompressed Size     00000000 (0)\n+1E7E3D Filename Length       003C (60)\n+1E7E3F Extra Length          0000 (0)\n+1E7E41 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1DC453: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E7E41: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1DC48F PAYLOAD\n+1E7E7D PAYLOAD\n \n-1DCA31 DATA DESCRIPTOR       08074B50 (134695760)\n-1DCA35 CRC                   4F5E3DED (1331576301)\n-1DCA39 Compressed Size       000005A2 (1442)\n-1DCA3D Uncompressed Size     00000C13 (3091)\n+1E8412 DATA DESCRIPTOR       08074B50 (134695760)\n+1E8416 CRC                   00A2AB95 (10660757)\n+1E841A Compressed Size       00000595 (1429)\n+1E841E Uncompressed Size     00000C7F (3199)\n \n-1DCA41 LOCAL HEADER #1823    04034B50 (67324752)\n-1DCA45 Extract Zip Spec      14 (20) '2.0'\n-1DCA46 Extract OS            00 (0) 'MS-DOS'\n-1DCA47 General Purpose Flag  0808 (2056)\n+1E8422 LOCAL HEADER #1823    04034B50 (67324752)\n+1E8426 Extract Zip Spec      14 (20) '2.0'\n+1E8427 Extract OS            00 (0) 'MS-DOS'\n+1E8428 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1DCA49 Compression Method    0008 (8) 'Deflated'\n-1DCA4B Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1DCA4F CRC                   00000000 (0)\n-1DCA53 Compressed Size       00000000 (0)\n-1DCA57 Uncompressed Size     00000000 (0)\n-1DCA5B Filename Length       0036 (54)\n-1DCA5D Extra Length          0000 (0)\n-1DCA5F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1E842A Compression Method    0008 (8) 'Deflated'\n+1E842C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1E8430 CRC                   00000000 (0)\n+1E8434 Compressed Size       00000000 (0)\n+1E8438 Uncompressed Size     00000000 (0)\n+1E843C Filename Length       003F (63)\n+1E843E Extra Length          0000 (0)\n+1E8440 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1DCA5F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E8440: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1DCA95 PAYLOAD\n+1E847F PAYLOAD\n \n-1DD013 DATA DESCRIPTOR       08074B50 (134695760)\n-1DD017 CRC                   9B537823 (2605938723)\n-1DD01B Compressed Size       0000057E (1406)\n-1DD01F Uncompressed Size     00000C42 (3138)\n+1E89BB DATA DESCRIPTOR       08074B50 (134695760)\n+1E89BF CRC                   060EB252 (101626450)\n+1E89C3 Compressed Size       0000053C (1340)\n+1E89C7 Uncompressed Size     00000AC0 (2752)\n \n-1DD023 LOCAL HEADER #1824    04034B50 (67324752)\n-1DD027 Extract Zip Spec      14 (20) '2.0'\n-1DD028 Extract OS            00 (0) 'MS-DOS'\n-1DD029 General Purpose Flag  0808 (2056)\n+1E89CB LOCAL HEADER #1824    04034B50 (67324752)\n+1E89CF Extract Zip Spec      14 (20) '2.0'\n+1E89D0 Extract OS            00 (0) 'MS-DOS'\n+1E89D1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1DD02B Compression Method    0008 (8) 'Deflated'\n-1DD02D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1DD031 CRC                   00000000 (0)\n-1DD035 Compressed Size       00000000 (0)\n-1DD039 Uncompressed Size     00000000 (0)\n-1DD03D Filename Length       0037 (55)\n-1DD03F Extra Length          0000 (0)\n-1DD041 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1E89D3 Compression Method    0008 (8) 'Deflated'\n+1E89D5 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1E89D9 CRC                   00000000 (0)\n+1E89DD Compressed Size       00000000 (0)\n+1E89E1 Uncompressed Size     00000000 (0)\n+1E89E5 Filename Length       003C (60)\n+1E89E7 Extra Length          0000 (0)\n+1E89E9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1DD041: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E89E9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1DD078 PAYLOAD\n+1E8A25 PAYLOAD\n \n-1DE10F DATA DESCRIPTOR       08074B50 (134695760)\n-1DE113 CRC                   FA00D04F (4194357327)\n-1DE117 Compressed Size       00001097 (4247)\n-1DE11B Uncompressed Size     00006112 (24850)\n+1E9621 DATA DESCRIPTOR       08074B50 (134695760)\n+1E9625 CRC                   37CC1834 (936122420)\n+1E9629 Compressed Size       00000BFC (3068)\n+1E962D Uncompressed Size     000035A9 (13737)\n \n-1DE11F LOCAL HEADER #1825    04034B50 (67324752)\n-1DE123 Extract Zip Spec      14 (20) '2.0'\n-1DE124 Extract OS            00 (0) 'MS-DOS'\n-1DE125 General Purpose Flag  0808 (2056)\n+1E9631 LOCAL HEADER #1825    04034B50 (67324752)\n+1E9635 Extract Zip Spec      14 (20) '2.0'\n+1E9636 Extract OS            00 (0) 'MS-DOS'\n+1E9637 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1DE127 Compression Method    0008 (8) 'Deflated'\n-1DE129 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1DE12D CRC                   00000000 (0)\n-1DE131 Compressed Size       00000000 (0)\n-1DE135 Uncompressed Size     00000000 (0)\n-1DE139 Filename Length       0038 (56)\n-1DE13B Extra Length          0000 (0)\n-1DE13D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1E9639 Compression Method    0008 (8) 'Deflated'\n+1E963B Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1E963F CRC                   00000000 (0)\n+1E9643 Compressed Size       00000000 (0)\n+1E9647 Uncompressed Size     00000000 (0)\n+1E964B Filename Length       0039 (57)\n+1E964D Extra Length          0000 (0)\n+1E964F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1DE13D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E964F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1DE175 PAYLOAD\n+1E9688 PAYLOAD\n \n-1DE71E DATA DESCRIPTOR       08074B50 (134695760)\n-1DE722 CRC                   EA548F41 (3931410241)\n-1DE726 Compressed Size       000005A9 (1449)\n-1DE72A Uncompressed Size     00000CF9 (3321)\n+1E9B8D DATA DESCRIPTOR       08074B50 (134695760)\n+1E9B91 CRC                   66243DE3 (1713651171)\n+1E9B95 Compressed Size       00000505 (1285)\n+1E9B99 Uncompressed Size     00000AB0 (2736)\n \n-1DE72E LOCAL HEADER #1826    04034B50 (67324752)\n-1DE732 Extract Zip Spec      14 (20) '2.0'\n-1DE733 Extract OS            00 (0) 'MS-DOS'\n-1DE734 General Purpose Flag  0808 (2056)\n+1E9B9D LOCAL HEADER #1826    04034B50 (67324752)\n+1E9BA1 Extract Zip Spec      14 (20) '2.0'\n+1E9BA2 Extract OS            00 (0) 'MS-DOS'\n+1E9BA3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1DE736 Compression Method    0008 (8) 'Deflated'\n-1DE738 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1DE73C CRC                   00000000 (0)\n-1DE740 Compressed Size       00000000 (0)\n-1DE744 Uncompressed Size     00000000 (0)\n-1DE748 Filename Length       0039 (57)\n-1DE74A Extra Length          0000 (0)\n-1DE74C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1E9BA5 Compression Method    0008 (8) 'Deflated'\n+1E9BA7 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1E9BAB CRC                   00000000 (0)\n+1E9BAF Compressed Size       00000000 (0)\n+1E9BB3 Uncompressed Size     00000000 (0)\n+1E9BB7 Filename Length       003E (62)\n+1E9BB9 Extra Length          0000 (0)\n+1E9BBB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1DE74C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1E9BBB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1DE785 PAYLOAD\n+1E9BF9 PAYLOAD\n \n-1DED20 DATA DESCRIPTOR       08074B50 (134695760)\n-1DED24 CRC                   0F4C49C0 (256657856)\n-1DED28 Compressed Size       0000059B (1435)\n-1DED2C Uncompressed Size     00000BEC (3052)\n+1EA0F5 DATA DESCRIPTOR       08074B50 (134695760)\n+1EA0F9 CRC                   1BFC238A (469509002)\n+1EA0FD Compressed Size       000004FC (1276)\n+1EA101 Uncompressed Size     00000A2F (2607)\n \n-1DED30 LOCAL HEADER #1827    04034B50 (67324752)\n-1DED34 Extract Zip Spec      14 (20) '2.0'\n-1DED35 Extract OS            00 (0) 'MS-DOS'\n-1DED36 General Purpose Flag  0808 (2056)\n+1EA105 LOCAL HEADER #1827    04034B50 (67324752)\n+1EA109 Extract Zip Spec      14 (20) '2.0'\n+1EA10A Extract OS            00 (0) 'MS-DOS'\n+1EA10B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1DED38 Compression Method    0008 (8) 'Deflated'\n-1DED3A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1DED3E CRC                   00000000 (0)\n-1DED42 Compressed Size       00000000 (0)\n-1DED46 Uncompressed Size     00000000 (0)\n-1DED4A Filename Length       0037 (55)\n-1DED4C Extra Length          0000 (0)\n-1DED4E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1EA10D Compression Method    0008 (8) 'Deflated'\n+1EA10F Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1EA113 CRC                   00000000 (0)\n+1EA117 Compressed Size       00000000 (0)\n+1EA11B Uncompressed Size     00000000 (0)\n+1EA11F Filename Length       0034 (52)\n+1EA121 Extra Length          0000 (0)\n+1EA123 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1DED4E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1EA123: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1DED85 PAYLOAD\n+1EA157 PAYLOAD\n \n-1DF2E9 DATA DESCRIPTOR       08074B50 (134695760)\n-1DF2ED CRC                   D55758DF (3579271391)\n-1DF2F1 Compressed Size       00000564 (1380)\n-1DF2F5 Uncompressed Size     00000B49 (2889)\n+1EB326 DATA DESCRIPTOR       08074B50 (134695760)\n+1EB32A CRC                   57F2E114 (1475535124)\n+1EB32E Compressed Size       000011CF (4559)\n+1EB332 Uncompressed Size     00005AB2 (23218)\n \n-1DF2F9 LOCAL HEADER #1828    04034B50 (67324752)\n-1DF2FD Extract Zip Spec      14 (20) '2.0'\n-1DF2FE Extract OS            00 (0) 'MS-DOS'\n-1DF2FF General Purpose Flag  0808 (2056)\n+1EB336 LOCAL HEADER #1828    04034B50 (67324752)\n+1EB33A Extract Zip Spec      14 (20) '2.0'\n+1EB33B Extract OS            00 (0) 'MS-DOS'\n+1EB33C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1DF301 Compression Method    0008 (8) 'Deflated'\n-1DF303 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1DF307 CRC                   00000000 (0)\n-1DF30B Compressed Size       00000000 (0)\n-1DF30F Uncompressed Size     00000000 (0)\n-1DF313 Filename Length       0040 (64)\n-1DF315 Extra Length          0000 (0)\n-1DF317 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1EB33E Compression Method    0008 (8) 'Deflated'\n+1EB340 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1EB344 CRC                   00000000 (0)\n+1EB348 Compressed Size       00000000 (0)\n+1EB34C Uncompressed Size     00000000 (0)\n+1EB350 Filename Length       0033 (51)\n+1EB352 Extra Length          0000 (0)\n+1EB354 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1DF317: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1EB354: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1DF357 PAYLOAD\n+1EB387 PAYLOAD\n \n-1DF881 DATA DESCRIPTOR       08074B50 (134695760)\n-1DF885 CRC                   D3EA2D1D (3555339549)\n-1DF889 Compressed Size       0000052A (1322)\n-1DF88D Uncompressed Size     00000BA9 (2985)\n+1ECE59 DATA DESCRIPTOR       08074B50 (134695760)\n+1ECE5D CRC                   7366BE52 (1936113234)\n+1ECE61 Compressed Size       00001AD2 (6866)\n+1ECE65 Uncompressed Size     0000A298 (41624)\n \n-1DF891 LOCAL HEADER #1829    04034B50 (67324752)\n-1DF895 Extract Zip Spec      14 (20) '2.0'\n-1DF896 Extract OS            00 (0) 'MS-DOS'\n-1DF897 General Purpose Flag  0808 (2056)\n+1ECE69 LOCAL HEADER #1829    04034B50 (67324752)\n+1ECE6D Extract Zip Spec      14 (20) '2.0'\n+1ECE6E Extract OS            00 (0) 'MS-DOS'\n+1ECE6F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1DF899 Compression Method    0008 (8) 'Deflated'\n-1DF89B Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1DF89F CRC                   00000000 (0)\n-1DF8A3 Compressed Size       00000000 (0)\n-1DF8A7 Uncompressed Size     00000000 (0)\n-1DF8AB Filename Length       0040 (64)\n-1DF8AD Extra Length          0000 (0)\n-1DF8AF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1ECE71 Compression Method    0008 (8) 'Deflated'\n+1ECE73 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1ECE77 CRC                   00000000 (0)\n+1ECE7B Compressed Size       00000000 (0)\n+1ECE7F Uncompressed Size     00000000 (0)\n+1ECE83 Filename Length       003A (58)\n+1ECE85 Extra Length          0000 (0)\n+1ECE87 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1DF8AF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1ECE87: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1DF8EF PAYLOAD\n+1ECEC1 PAYLOAD\n \n-1DFC3D DATA DESCRIPTOR       08074B50 (134695760)\n-1DFC41 CRC                   3ADD7788 (987592584)\n-1DFC45 Compressed Size       0000034E (846)\n-1DFC49 Uncompressed Size     000007D9 (2009)\n+1ED223 DATA DESCRIPTOR       08074B50 (134695760)\n+1ED227 CRC                   44EA1A2E (1156192814)\n+1ED22B Compressed Size       00000362 (866)\n+1ED22F Uncompressed Size     000007A1 (1953)\n \n-1DFC4D LOCAL HEADER #1830    04034B50 (67324752)\n-1DFC51 Extract Zip Spec      14 (20) '2.0'\n-1DFC52 Extract OS            00 (0) 'MS-DOS'\n-1DFC53 General Purpose Flag  0808 (2056)\n+1ED233 LOCAL HEADER #1830    04034B50 (67324752)\n+1ED237 Extract Zip Spec      14 (20) '2.0'\n+1ED238 Extract OS            00 (0) 'MS-DOS'\n+1ED239 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1DFC55 Compression Method    0008 (8) 'Deflated'\n-1DFC57 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1DFC5B CRC                   00000000 (0)\n-1DFC5F Compressed Size       00000000 (0)\n-1DFC63 Uncompressed Size     00000000 (0)\n-1DFC67 Filename Length       003C (60)\n-1DFC69 Extra Length          0000 (0)\n-1DFC6B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1ED23B Compression Method    0008 (8) 'Deflated'\n+1ED23D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1ED241 CRC                   00000000 (0)\n+1ED245 Compressed Size       00000000 (0)\n+1ED249 Uncompressed Size     00000000 (0)\n+1ED24D Filename Length       0040 (64)\n+1ED24F Extra Length          0000 (0)\n+1ED251 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1DFC6B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1ED251: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1DFCA7 PAYLOAD\n+1ED291 PAYLOAD\n \n-1E0002 DATA DESCRIPTOR       08074B50 (134695760)\n-1E0006 CRC                   B957E47F (3109545087)\n-1E000A Compressed Size       0000035B (859)\n-1E000E Uncompressed Size     00000795 (1941)\n+1ED5F6 DATA DESCRIPTOR       08074B50 (134695760)\n+1ED5FA CRC                   0EA48277 (245662327)\n+1ED5FE Compressed Size       00000365 (869)\n+1ED602 Uncompressed Size     000007B2 (1970)\n \n-1E0012 LOCAL HEADER #1831    04034B50 (67324752)\n-1E0016 Extract Zip Spec      14 (20) '2.0'\n-1E0017 Extract OS            00 (0) 'MS-DOS'\n-1E0018 General Purpose Flag  0808 (2056)\n+1ED606 LOCAL HEADER #1831    04034B50 (67324752)\n+1ED60A Extract Zip Spec      14 (20) '2.0'\n+1ED60B Extract OS            00 (0) 'MS-DOS'\n+1ED60C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1E001A Compression Method    0008 (8) 'Deflated'\n-1E001C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1E0020 CRC                   00000000 (0)\n-1E0024 Compressed Size       00000000 (0)\n-1E0028 Uncompressed Size     00000000 (0)\n-1E002C Filename Length       0033 (51)\n-1E002E Extra Length          0000 (0)\n-1E0030 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1ED60E Compression Method    0008 (8) 'Deflated'\n+1ED610 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1ED614 CRC                   00000000 (0)\n+1ED618 Compressed Size       00000000 (0)\n+1ED61C Uncompressed Size     00000000 (0)\n+1ED620 Filename Length       0036 (54)\n+1ED622 Extra Length          0000 (0)\n+1ED624 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E0030: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1ED624: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1E0063 PAYLOAD\n+1ED65A PAYLOAD\n \n-1E05F3 DATA DESCRIPTOR       08074B50 (134695760)\n-1E05F7 CRC                   27E32CDA (669199578)\n-1E05FB Compressed Size       00000590 (1424)\n-1E05FF Uncompressed Size     00000EE5 (3813)\n+1EDC6C DATA DESCRIPTOR       08074B50 (134695760)\n+1EDC70 CRC                   D18F68BE (3515836606)\n+1EDC74 Compressed Size       00000612 (1554)\n+1EDC78 Uncompressed Size     00000D2C (3372)\n \n-1E0603 LOCAL HEADER #1832    04034B50 (67324752)\n-1E0607 Extract Zip Spec      14 (20) '2.0'\n-1E0608 Extract OS            00 (0) 'MS-DOS'\n-1E0609 General Purpose Flag  0808 (2056)\n+1EDC7C LOCAL HEADER #1832    04034B50 (67324752)\n+1EDC80 Extract Zip Spec      14 (20) '2.0'\n+1EDC81 Extract OS            00 (0) 'MS-DOS'\n+1EDC82 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1E060B Compression Method    0008 (8) 'Deflated'\n-1E060D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1E0611 CRC                   00000000 (0)\n-1E0615 Compressed Size       00000000 (0)\n-1E0619 Uncompressed Size     00000000 (0)\n-1E061D Filename Length       0039 (57)\n-1E061F Extra Length          0000 (0)\n-1E0621 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1EDC84 Compression Method    0008 (8) 'Deflated'\n+1EDC86 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1EDC8A CRC                   00000000 (0)\n+1EDC8E Compressed Size       00000000 (0)\n+1EDC92 Uncompressed Size     00000000 (0)\n+1EDC96 Filename Length       003D (61)\n+1EDC98 Extra Length          0000 (0)\n+1EDC9A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E0621: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1EDC9A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1E065A PAYLOAD\n+1EDCD7 PAYLOAD\n \n-1E0BF2 DATA DESCRIPTOR       08074B50 (134695760)\n-1E0BF6 CRC                   96A3AA02 (2527308290)\n-1E0BFA Compressed Size       00000598 (1432)\n-1E0BFE Uncompressed Size     00000D62 (3426)\n+1EDF42 DATA DESCRIPTOR       08074B50 (134695760)\n+1EDF46 CRC                   E6FF39F2 (3875486194)\n+1EDF4A Compressed Size       0000026B (619)\n+1EDF4E Uncompressed Size     0000046B (1131)\n \n-1E0C02 LOCAL HEADER #1833    04034B50 (67324752)\n-1E0C06 Extract Zip Spec      14 (20) '2.0'\n-1E0C07 Extract OS            00 (0) 'MS-DOS'\n-1E0C08 General Purpose Flag  0808 (2056)\n+1EDF52 LOCAL HEADER #1833    04034B50 (67324752)\n+1EDF56 Extract Zip Spec      14 (20) '2.0'\n+1EDF57 Extract OS            00 (0) 'MS-DOS'\n+1EDF58 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1E0C0A Compression Method    0008 (8) 'Deflated'\n-1E0C0C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1E0C10 CRC                   00000000 (0)\n-1E0C14 Compressed Size       00000000 (0)\n-1E0C18 Uncompressed Size     00000000 (0)\n-1E0C1C Filename Length       0036 (54)\n-1E0C1E Extra Length          0000 (0)\n-1E0C20 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1EDF5A Compression Method    0008 (8) 'Deflated'\n+1EDF5C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1EDF60 CRC                   00000000 (0)\n+1EDF64 Compressed Size       00000000 (0)\n+1EDF68 Uncompressed Size     00000000 (0)\n+1EDF6C Filename Length       003A (58)\n+1EDF6E Extra Length          0000 (0)\n+1EDF70 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E0C20: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1EDF70: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1E0C56 PAYLOAD\n+1EDFAA PAYLOAD\n \n-1E14DD DATA DESCRIPTOR       08074B50 (134695760)\n-1E14E1 CRC                   CA81C016 (3397500950)\n-1E14E5 Compressed Size       00000887 (2183)\n-1E14E9 Uncompressed Size     00002307 (8967)\n+1EE453 DATA DESCRIPTOR       08074B50 (134695760)\n+1EE457 CRC                   265DEF91 (643690385)\n+1EE45B Compressed Size       000004A9 (1193)\n+1EE45F Uncompressed Size     0000098C (2444)\n \n-1E14ED LOCAL HEADER #1834    04034B50 (67324752)\n-1E14F1 Extract Zip Spec      14 (20) '2.0'\n-1E14F2 Extract OS            00 (0) 'MS-DOS'\n-1E14F3 General Purpose Flag  0808 (2056)\n+1EE463 LOCAL HEADER #1834    04034B50 (67324752)\n+1EE467 Extract Zip Spec      14 (20) '2.0'\n+1EE468 Extract OS            00 (0) 'MS-DOS'\n+1EE469 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1E14F5 Compression Method    0008 (8) 'Deflated'\n-1E14F7 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1E14FB CRC                   00000000 (0)\n-1E14FF Compressed Size       00000000 (0)\n-1E1503 Uncompressed Size     00000000 (0)\n-1E1507 Filename Length       0039 (57)\n-1E1509 Extra Length          0000 (0)\n-1E150B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1EE46B Compression Method    0008 (8) 'Deflated'\n+1EE46D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1EE471 CRC                   00000000 (0)\n+1EE475 Compressed Size       00000000 (0)\n+1EE479 Uncompressed Size     00000000 (0)\n+1EE47D Filename Length       0037 (55)\n+1EE47F Extra Length          0000 (0)\n+1EE481 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E150B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1EE481: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1E1544 PAYLOAD\n+1EE4B8 PAYLOAD\n \n-1E1A60 DATA DESCRIPTOR       08074B50 (134695760)\n-1E1A64 CRC                   06019AC3 (100768451)\n-1E1A68 Compressed Size       0000051C (1308)\n-1E1A6C Uncompressed Size     00000A6E (2670)\n+1EE5C7 DATA DESCRIPTOR       08074B50 (134695760)\n+1EE5CB CRC                   E295C65E (3801466462)\n+1EE5CF Compressed Size       0000010F (271)\n+1EE5D3 Uncompressed Size     0000026A (618)\n \n-1E1A70 LOCAL HEADER #1835    04034B50 (67324752)\n-1E1A74 Extract Zip Spec      14 (20) '2.0'\n-1E1A75 Extract OS            00 (0) 'MS-DOS'\n-1E1A76 General Purpose Flag  0808 (2056)\n+1EE5D7 LOCAL HEADER #1835    04034B50 (67324752)\n+1EE5DB Extract Zip Spec      14 (20) '2.0'\n+1EE5DC Extract OS            00 (0) 'MS-DOS'\n+1EE5DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1E1A78 Compression Method    0008 (8) 'Deflated'\n-1E1A7A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1E1A7E CRC                   00000000 (0)\n-1E1A82 Compressed Size       00000000 (0)\n-1E1A86 Uncompressed Size     00000000 (0)\n-1E1A8A Filename Length       0033 (51)\n-1E1A8C Extra Length          0000 (0)\n-1E1A8E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1EE5DF Compression Method    0008 (8) 'Deflated'\n+1EE5E1 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1EE5E5 CRC                   00000000 (0)\n+1EE5E9 Compressed Size       00000000 (0)\n+1EE5ED Uncompressed Size     00000000 (0)\n+1EE5F1 Filename Length       0034 (52)\n+1EE5F3 Extra Length          0000 (0)\n+1EE5F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E1A8E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1EE5F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1E1AC1 PAYLOAD\n+1EE629 PAYLOAD\n \n-1E225A DATA DESCRIPTOR       08074B50 (134695760)\n-1E225E CRC                   5603C310 (1443087120)\n-1E2262 Compressed Size       00000799 (1945)\n-1E2266 Uncompressed Size     00001463 (5219)\n+1EEC7A DATA DESCRIPTOR       08074B50 (134695760)\n+1EEC7E CRC                   BDD7BBBA (3185032122)\n+1EEC82 Compressed Size       00000651 (1617)\n+1EEC86 Uncompressed Size     00000E2C (3628)\n \n-1E226A LOCAL HEADER #1836    04034B50 (67324752)\n-1E226E Extract Zip Spec      14 (20) '2.0'\n-1E226F Extract OS            00 (0) 'MS-DOS'\n-1E2270 General Purpose Flag  0808 (2056)\n+1EEC8A LOCAL HEADER #1836    04034B50 (67324752)\n+1EEC8E Extract Zip Spec      14 (20) '2.0'\n+1EEC8F Extract OS            00 (0) 'MS-DOS'\n+1EEC90 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1E2272 Compression Method    0008 (8) 'Deflated'\n-1E2274 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1E2278 CRC                   00000000 (0)\n-1E227C Compressed Size       00000000 (0)\n-1E2280 Uncompressed Size     00000000 (0)\n-1E2284 Filename Length       003E (62)\n-1E2286 Extra Length          0000 (0)\n-1E2288 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1EEC92 Compression Method    0008 (8) 'Deflated'\n+1EEC94 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1EEC98 CRC                   00000000 (0)\n+1EEC9C Compressed Size       00000000 (0)\n+1EECA0 Uncompressed Size     00000000 (0)\n+1EECA4 Filename Length       0034 (52)\n+1EECA6 Extra Length          0000 (0)\n+1EECA8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E2288: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1EECA8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1E22C6 PAYLOAD\n+1EECDC PAYLOAD\n \n-1E284A DATA DESCRIPTOR       08074B50 (134695760)\n-1E284E CRC                   D1926FA5 (3516034981)\n-1E2852 Compressed Size       00000584 (1412)\n-1E2856 Uncompressed Size     00000BBB (3003)\n+1F191C DATA DESCRIPTOR       08074B50 (134695760)\n+1F1920 CRC                   42CFBA07 (1120909831)\n+1F1924 Compressed Size       00002C40 (11328)\n+1F1928 Uncompressed Size     00016026 (90150)\n \n-1E285A LOCAL HEADER #1837    04034B50 (67324752)\n-1E285E Extract Zip Spec      14 (20) '2.0'\n-1E285F Extract OS            00 (0) 'MS-DOS'\n-1E2860 General Purpose Flag  0808 (2056)\n+1F192C LOCAL HEADER #1837    04034B50 (67324752)\n+1F1930 Extract Zip Spec      14 (20) '2.0'\n+1F1931 Extract OS            00 (0) 'MS-DOS'\n+1F1932 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1E2862 Compression Method    0008 (8) 'Deflated'\n-1E2864 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1E2868 CRC                   00000000 (0)\n-1E286C Compressed Size       00000000 (0)\n-1E2870 Uncompressed Size     00000000 (0)\n-1E2874 Filename Length       0038 (56)\n-1E2876 Extra Length          0000 (0)\n-1E2878 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F1934 Compression Method    0008 (8) 'Deflated'\n+1F1936 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1F193A CRC                   00000000 (0)\n+1F193E Compressed Size       00000000 (0)\n+1F1942 Uncompressed Size     00000000 (0)\n+1F1946 Filename Length       0038 (56)\n+1F1948 Extra Length          0000 (0)\n+1F194A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E2878: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F194A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1E28B0 PAYLOAD\n+1F1982 PAYLOAD\n \n-1E463C DATA DESCRIPTOR       08074B50 (134695760)\n-1E4640 CRC                   61E4315C (1642344796)\n-1E4644 Compressed Size       00001D8C (7564)\n-1E4648 Uncompressed Size     0000E195 (57749)\n+1F205E DATA DESCRIPTOR       08074B50 (134695760)\n+1F2062 CRC                   B1D0AB16 (2983242518)\n+1F2066 Compressed Size       000006DC (1756)\n+1F206A Uncompressed Size     0000137B (4987)\n \n-1E464C LOCAL HEADER #1838    04034B50 (67324752)\n-1E4650 Extract Zip Spec      14 (20) '2.0'\n-1E4651 Extract OS            00 (0) 'MS-DOS'\n-1E4652 General Purpose Flag  0808 (2056)\n+1F206E LOCAL HEADER #1838    04034B50 (67324752)\n+1F2072 Extract Zip Spec      14 (20) '2.0'\n+1F2073 Extract OS            00 (0) 'MS-DOS'\n+1F2074 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1E4654 Compression Method    0008 (8) 'Deflated'\n-1E4656 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1E465A CRC                   00000000 (0)\n-1E465E Compressed Size       00000000 (0)\n-1E4662 Uncompressed Size     00000000 (0)\n-1E4666 Filename Length       003A (58)\n-1E4668 Extra Length          0000 (0)\n-1E466A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F2076 Compression Method    0008 (8) 'Deflated'\n+1F2078 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1F207C CRC                   00000000 (0)\n+1F2080 Compressed Size       00000000 (0)\n+1F2084 Uncompressed Size     00000000 (0)\n+1F2088 Filename Length       003F (63)\n+1F208A Extra Length          0000 (0)\n+1F208C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E466A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F208C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1E46A4 PAYLOAD\n+1F20CB PAYLOAD\n \n-1E4C81 DATA DESCRIPTOR       08074B50 (134695760)\n-1E4C85 CRC                   968E88D0 (2525923536)\n-1E4C89 Compressed Size       000005DD (1501)\n-1E4C8D Uncompressed Size     00000E0E (3598)\n+1F27D6 DATA DESCRIPTOR       08074B50 (134695760)\n+1F27DA CRC                   D684F652 (3599038034)\n+1F27DE Compressed Size       0000070B (1803)\n+1F27E2 Uncompressed Size     0000127F (4735)\n \n-1E4C91 LOCAL HEADER #1839    04034B50 (67324752)\n-1E4C95 Extract Zip Spec      14 (20) '2.0'\n-1E4C96 Extract OS            00 (0) 'MS-DOS'\n-1E4C97 General Purpose Flag  0808 (2056)\n+1F27E6 LOCAL HEADER #1839    04034B50 (67324752)\n+1F27EA Extract Zip Spec      14 (20) '2.0'\n+1F27EB Extract OS            00 (0) 'MS-DOS'\n+1F27EC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1E4C99 Compression Method    0008 (8) 'Deflated'\n-1E4C9B Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1E4C9F CRC                   00000000 (0)\n-1E4CA3 Compressed Size       00000000 (0)\n-1E4CA7 Uncompressed Size     00000000 (0)\n-1E4CAB Filename Length       0038 (56)\n-1E4CAD Extra Length          0000 (0)\n-1E4CAF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F27EE Compression Method    0008 (8) 'Deflated'\n+1F27F0 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1F27F4 CRC                   00000000 (0)\n+1F27F8 Compressed Size       00000000 (0)\n+1F27FC Uncompressed Size     00000000 (0)\n+1F2800 Filename Length       003C (60)\n+1F2802 Extra Length          0000 (0)\n+1F2804 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E4CAF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F2804: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1E4CE7 PAYLOAD\n+1F2840 PAYLOAD\n \n-1E612F DATA DESCRIPTOR       08074B50 (134695760)\n-1E6133 CRC                   E14A6B5A (3779750746)\n-1E6137 Compressed Size       00001448 (5192)\n-1E613B Uncompressed Size     0000694D (26957)\n+1F2D3F DATA DESCRIPTOR       08074B50 (134695760)\n+1F2D43 CRC                   091B09EC (152766956)\n+1F2D47 Compressed Size       000004FF (1279)\n+1F2D4B Uncompressed Size     00000B45 (2885)\n \n-1E613F LOCAL HEADER #1840    04034B50 (67324752)\n-1E6143 Extract Zip Spec      14 (20) '2.0'\n-1E6144 Extract OS            00 (0) 'MS-DOS'\n-1E6145 General Purpose Flag  0808 (2056)\n+1F2D4F LOCAL HEADER #1840    04034B50 (67324752)\n+1F2D53 Extract Zip Spec      14 (20) '2.0'\n+1F2D54 Extract OS            00 (0) 'MS-DOS'\n+1F2D55 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1E6147 Compression Method    0008 (8) 'Deflated'\n-1E6149 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1E614D CRC                   00000000 (0)\n-1E6151 Compressed Size       00000000 (0)\n-1E6155 Uncompressed Size     00000000 (0)\n-1E6159 Filename Length       0035 (53)\n-1E615B Extra Length          0000 (0)\n-1E615D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F2D57 Compression Method    0008 (8) 'Deflated'\n+1F2D59 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1F2D5D CRC                   00000000 (0)\n+1F2D61 Compressed Size       00000000 (0)\n+1F2D65 Uncompressed Size     00000000 (0)\n+1F2D69 Filename Length       0031 (49)\n+1F2D6B Extra Length          0000 (0)\n+1F2D6D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E615D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F2D6D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1E6192 PAYLOAD\n+1F2D9E PAYLOAD\n \n-1E7CCA DATA DESCRIPTOR       08074B50 (134695760)\n-1E7CCE CRC                   038157DF (58808287)\n-1E7CD2 Compressed Size       00001B38 (6968)\n-1E7CD6 Uncompressed Size     00009F03 (40707)\n+1F3268 DATA DESCRIPTOR       08074B50 (134695760)\n+1F326C CRC                   17688FAA (392728490)\n+1F3270 Compressed Size       000004CA (1226)\n+1F3274 Uncompressed Size     000009A8 (2472)\n \n-1E7CDA LOCAL HEADER #1841    04034B50 (67324752)\n-1E7CDE Extract Zip Spec      14 (20) '2.0'\n-1E7CDF Extract OS            00 (0) 'MS-DOS'\n-1E7CE0 General Purpose Flag  0808 (2056)\n+1F3278 LOCAL HEADER #1841    04034B50 (67324752)\n+1F327C Extract Zip Spec      14 (20) '2.0'\n+1F327D Extract OS            00 (0) 'MS-DOS'\n+1F327E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1E7CE2 Compression Method    0008 (8) 'Deflated'\n-1E7CE4 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1E7CE8 CRC                   00000000 (0)\n-1E7CEC Compressed Size       00000000 (0)\n-1E7CF0 Uncompressed Size     00000000 (0)\n-1E7CF4 Filename Length       0044 (68)\n-1E7CF6 Extra Length          0000 (0)\n-1E7CF8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F3280 Compression Method    0008 (8) 'Deflated'\n+1F3282 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1F3286 CRC                   00000000 (0)\n+1F328A Compressed Size       00000000 (0)\n+1F328E Uncompressed Size     00000000 (0)\n+1F3292 Filename Length       0035 (53)\n+1F3294 Extra Length          0000 (0)\n+1F3296 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E7CF8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F3296: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1E7D3C PAYLOAD\n+1F32CB PAYLOAD\n \n-1E8239 DATA DESCRIPTOR       08074B50 (134695760)\n-1E823D CRC                   9A414F54 (2587971412)\n-1E8241 Compressed Size       000004FD (1277)\n-1E8245 Uncompressed Size     00000A4B (2635)\n+1F387F DATA DESCRIPTOR       08074B50 (134695760)\n+1F3883 CRC                   0827F1CF (136835535)\n+1F3887 Compressed Size       000005B4 (1460)\n+1F388B Uncompressed Size     00000C8B (3211)\n \n-1E8249 LOCAL HEADER #1842    04034B50 (67324752)\n-1E824D Extract Zip Spec      14 (20) '2.0'\n-1E824E Extract OS            00 (0) 'MS-DOS'\n-1E824F General Purpose Flag  0808 (2056)\n+1F388F LOCAL HEADER #1842    04034B50 (67324752)\n+1F3893 Extract Zip Spec      14 (20) '2.0'\n+1F3894 Extract OS            00 (0) 'MS-DOS'\n+1F3895 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1E8251 Compression Method    0008 (8) 'Deflated'\n-1E8253 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1E8257 CRC                   00000000 (0)\n-1E825B Compressed Size       00000000 (0)\n-1E825F Uncompressed Size     00000000 (0)\n-1E8263 Filename Length       003B (59)\n-1E8265 Extra Length          0000 (0)\n-1E8267 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F3897 Compression Method    0008 (8) 'Deflated'\n+1F3899 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1F389D CRC                   00000000 (0)\n+1F38A1 Compressed Size       00000000 (0)\n+1F38A5 Uncompressed Size     00000000 (0)\n+1F38A9 Filename Length       003E (62)\n+1F38AB Extra Length          0000 (0)\n+1F38AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E8267: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F38AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1E82A2 PAYLOAD\n+1F38EB PAYLOAD\n \n-1E85FD DATA DESCRIPTOR       08074B50 (134695760)\n-1E8601 CRC                   4BAE3F59 (1269710681)\n-1E8605 Compressed Size       0000035B (859)\n-1E8609 Uncompressed Size     00000792 (1938)\n+1F3E57 DATA DESCRIPTOR       08074B50 (134695760)\n+1F3E5B CRC                   430F5283 (1125077635)\n+1F3E5F Compressed Size       0000056C (1388)\n+1F3E63 Uncompressed Size     00000BD7 (3031)\n \n-1E860D LOCAL HEADER #1843    04034B50 (67324752)\n-1E8611 Extract Zip Spec      14 (20) '2.0'\n-1E8612 Extract OS            00 (0) 'MS-DOS'\n-1E8613 General Purpose Flag  0808 (2056)\n+1F3E67 LOCAL HEADER #1843    04034B50 (67324752)\n+1F3E6B Extract Zip Spec      14 (20) '2.0'\n+1F3E6C Extract OS            00 (0) 'MS-DOS'\n+1F3E6D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1E8615 Compression Method    0008 (8) 'Deflated'\n-1E8617 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1E861B CRC                   00000000 (0)\n-1E861F Compressed Size       00000000 (0)\n-1E8623 Uncompressed Size     00000000 (0)\n-1E8627 Filename Length       0038 (56)\n-1E8629 Extra Length          0000 (0)\n-1E862B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F3E6F Compression Method    0008 (8) 'Deflated'\n+1F3E71 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+1F3E75 CRC                   00000000 (0)\n+1F3E79 Compressed Size       00000000 (0)\n+1F3E7D Uncompressed Size     00000000 (0)\n+1F3E81 Filename Length       002F (47)\n+1F3E83 Extra Length          0000 (0)\n+1F3E85 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E862B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F3E85: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1E8663 PAYLOAD\n+1F3EB4 PAYLOAD\n \n-1E89C2 DATA DESCRIPTOR       08074B50 (134695760)\n-1E89C6 CRC                   DA561E50 (3663076944)\n-1E89CA Compressed Size       0000035F (863)\n-1E89CE Uncompressed Size     0000070B (1803)\n+1F4654 DATA DESCRIPTOR       08074B50 (134695760)\n+1F4658 CRC                   A18F9C9F (2710543519)\n+1F465C Compressed Size       000007A0 (1952)\n+1F4660 Uncompressed Size     000025D9 (9689)\n \n-1E89D2 LOCAL HEADER #1844    04034B50 (67324752)\n-1E89D6 Extract Zip Spec      14 (20) '2.0'\n-1E89D7 Extract OS            00 (0) 'MS-DOS'\n-1E89D8 General Purpose Flag  0808 (2056)\n+1F4664 LOCAL HEADER #1844    04034B50 (67324752)\n+1F4668 Extract Zip Spec      14 (20) '2.0'\n+1F4669 Extract OS            00 (0) 'MS-DOS'\n+1F466A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1E89DA Compression Method    0008 (8) 'Deflated'\n-1E89DC Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1E89E0 CRC                   00000000 (0)\n-1E89E4 Compressed Size       00000000 (0)\n-1E89E8 Uncompressed Size     00000000 (0)\n-1E89EC Filename Length       003C (60)\n-1E89EE Extra Length          0000 (0)\n-1E89F0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F466C Compression Method    0008 (8) 'Deflated'\n+1F466E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F4672 CRC                   00000000 (0)\n+1F4676 Compressed Size       00000000 (0)\n+1F467A Uncompressed Size     00000000 (0)\n+1F467E Filename Length       001A (26)\n+1F4680 Extra Length          0000 (0)\n+1F4682 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E89F0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F4682: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1E8A2C PAYLOAD\n+1F469C PAYLOAD               XX\n \n-1E8FC1 DATA DESCRIPTOR       08074B50 (134695760)\n-1E8FC5 CRC                   00A2AB95 (10660757)\n-1E8FC9 Compressed Size       00000595 (1429)\n-1E8FCD Uncompressed Size     00000C7F (3199)\n+1F469E DATA DESCRIPTOR       08074B50 (134695760)\n+1F46A2 CRC                   00000000 (0)\n+1F46A6 Compressed Size       00000002 (2)\n+1F46AA Uncompressed Size     00000000 (0)\n \n-1E8FD1 LOCAL HEADER #1845    04034B50 (67324752)\n-1E8FD5 Extract Zip Spec      14 (20) '2.0'\n-1E8FD6 Extract OS            00 (0) 'MS-DOS'\n-1E8FD7 General Purpose Flag  0808 (2056)\n+1F46AE LOCAL HEADER #1845    04034B50 (67324752)\n+1F46B2 Extract Zip Spec      14 (20) '2.0'\n+1F46B3 Extract OS            00 (0) 'MS-DOS'\n+1F46B4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1E8FD9 Compression Method    0008 (8) 'Deflated'\n-1E8FDB Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1E8FDF CRC                   00000000 (0)\n-1E8FE3 Compressed Size       00000000 (0)\n-1E8FE7 Uncompressed Size     00000000 (0)\n-1E8FEB Filename Length       003F (63)\n-1E8FED Extra Length          0000 (0)\n-1E8FEF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F46B6 Compression Method    0008 (8) 'Deflated'\n+1F46B8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F46BC CRC                   00000000 (0)\n+1F46C0 Compressed Size       00000000 (0)\n+1F46C4 Uncompressed Size     00000000 (0)\n+1F46C8 Filename Length       003A (58)\n+1F46CA Extra Length          0000 (0)\n+1F46CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E8FEF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F46CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1E902E PAYLOAD\n+1F4706 PAYLOAD\n \n-1E956A DATA DESCRIPTOR       08074B50 (134695760)\n-1E956E CRC                   060EB252 (101626450)\n-1E9572 Compressed Size       0000053C (1340)\n-1E9576 Uncompressed Size     00000AC0 (2752)\n+1F4A7A DATA DESCRIPTOR       08074B50 (134695760)\n+1F4A7E CRC                   42A6419F (1118192031)\n+1F4A82 Compressed Size       00000374 (884)\n+1F4A86 Uncompressed Size     00000A8E (2702)\n \n-1E957A LOCAL HEADER #1846    04034B50 (67324752)\n-1E957E Extract Zip Spec      14 (20) '2.0'\n-1E957F Extract OS            00 (0) 'MS-DOS'\n-1E9580 General Purpose Flag  0808 (2056)\n+1F4A8A LOCAL HEADER #1846    04034B50 (67324752)\n+1F4A8E Extract Zip Spec      14 (20) '2.0'\n+1F4A8F Extract OS            00 (0) 'MS-DOS'\n+1F4A90 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1E9582 Compression Method    0008 (8) 'Deflated'\n-1E9584 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1E9588 CRC                   00000000 (0)\n-1E958C Compressed Size       00000000 (0)\n-1E9590 Uncompressed Size     00000000 (0)\n-1E9594 Filename Length       003C (60)\n-1E9596 Extra Length          0000 (0)\n-1E9598 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F4A92 Compression Method    0008 (8) 'Deflated'\n+1F4A94 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F4A98 CRC                   00000000 (0)\n+1F4A9C Compressed Size       00000000 (0)\n+1F4AA0 Uncompressed Size     00000000 (0)\n+1F4AA4 Filename Length       0045 (69)\n+1F4AA6 Extra Length          0000 (0)\n+1F4AA8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1E9598: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F4AA8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1E95D4 PAYLOAD\n+1F4AED PAYLOAD\n \n-1EA1D0 DATA DESCRIPTOR       08074B50 (134695760)\n-1EA1D4 CRC                   37CC1834 (936122420)\n-1EA1D8 Compressed Size       00000BFC (3068)\n-1EA1DC Uncompressed Size     000035A9 (13737)\n+1F5088 DATA DESCRIPTOR       08074B50 (134695760)\n+1F508C CRC                   3EF8A330 (1056482096)\n+1F5090 Compressed Size       0000059B (1435)\n+1F5094 Uncompressed Size     00001076 (4214)\n \n-1EA1E0 LOCAL HEADER #1847    04034B50 (67324752)\n-1EA1E4 Extract Zip Spec      14 (20) '2.0'\n-1EA1E5 Extract OS            00 (0) 'MS-DOS'\n-1EA1E6 General Purpose Flag  0808 (2056)\n+1F5098 LOCAL HEADER #1847    04034B50 (67324752)\n+1F509C Extract Zip Spec      14 (20) '2.0'\n+1F509D Extract OS            00 (0) 'MS-DOS'\n+1F509E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1EA1E8 Compression Method    0008 (8) 'Deflated'\n-1EA1EA Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1EA1EE CRC                   00000000 (0)\n-1EA1F2 Compressed Size       00000000 (0)\n-1EA1F6 Uncompressed Size     00000000 (0)\n-1EA1FA Filename Length       0039 (57)\n-1EA1FC Extra Length          0000 (0)\n-1EA1FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F50A0 Compression Method    0008 (8) 'Deflated'\n+1F50A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F50A6 CRC                   00000000 (0)\n+1F50AA Compressed Size       00000000 (0)\n+1F50AE Uncompressed Size     00000000 (0)\n+1F50B2 Filename Length       0032 (50)\n+1F50B4 Extra Length          0000 (0)\n+1F50B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1EA1FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F50B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1EA237 PAYLOAD\n+1F50E8 PAYLOAD\n \n-1EA73C DATA DESCRIPTOR       08074B50 (134695760)\n-1EA740 CRC                   66243DE3 (1713651171)\n-1EA744 Compressed Size       00000505 (1285)\n-1EA748 Uncompressed Size     00000AB0 (2736)\n+1F535E DATA DESCRIPTOR       08074B50 (134695760)\n+1F5362 CRC                   EEF0F134 (4008767796)\n+1F5366 Compressed Size       00000276 (630)\n+1F536A Uncompressed Size     0000051B (1307)\n \n-1EA74C LOCAL HEADER #1848    04034B50 (67324752)\n-1EA750 Extract Zip Spec      14 (20) '2.0'\n-1EA751 Extract OS            00 (0) 'MS-DOS'\n-1EA752 General Purpose Flag  0808 (2056)\n+1F536E LOCAL HEADER #1848    04034B50 (67324752)\n+1F5372 Extract Zip Spec      14 (20) '2.0'\n+1F5373 Extract OS            00 (0) 'MS-DOS'\n+1F5374 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1EA754 Compression Method    0008 (8) 'Deflated'\n-1EA756 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1EA75A CRC                   00000000 (0)\n-1EA75E Compressed Size       00000000 (0)\n-1EA762 Uncompressed Size     00000000 (0)\n-1EA766 Filename Length       003E (62)\n-1EA768 Extra Length          0000 (0)\n-1EA76A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F5376 Compression Method    0008 (8) 'Deflated'\n+1F5378 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F537C CRC                   00000000 (0)\n+1F5380 Compressed Size       00000000 (0)\n+1F5384 Uncompressed Size     00000000 (0)\n+1F5388 Filename Length       002E (46)\n+1F538A Extra Length          0000 (0)\n+1F538C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1EA76A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F538C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1EA7A8 PAYLOAD\n+1F53BA PAYLOAD\n \n-1EACA4 DATA DESCRIPTOR       08074B50 (134695760)\n-1EACA8 CRC                   1BFC238A (469509002)\n-1EACAC Compressed Size       000004FC (1276)\n-1EACB0 Uncompressed Size     00000A2F (2607)\n+1F55D1 DATA DESCRIPTOR       08074B50 (134695760)\n+1F55D5 CRC                   1D5DF166 (492695910)\n+1F55D9 Compressed Size       00000217 (535)\n+1F55DD Uncompressed Size     000003AD (941)\n \n-1EACB4 LOCAL HEADER #1849    04034B50 (67324752)\n-1EACB8 Extract Zip Spec      14 (20) '2.0'\n-1EACB9 Extract OS            00 (0) 'MS-DOS'\n-1EACBA General Purpose Flag  0808 (2056)\n+1F55E1 LOCAL HEADER #1849    04034B50 (67324752)\n+1F55E5 Extract Zip Spec      14 (20) '2.0'\n+1F55E6 Extract OS            00 (0) 'MS-DOS'\n+1F55E7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1EACBC Compression Method    0008 (8) 'Deflated'\n-1EACBE Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1EACC2 CRC                   00000000 (0)\n-1EACC6 Compressed Size       00000000 (0)\n-1EACCA Uncompressed Size     00000000 (0)\n-1EACCE Filename Length       0034 (52)\n-1EACD0 Extra Length          0000 (0)\n-1EACD2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F55E9 Compression Method    0008 (8) 'Deflated'\n+1F55EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F55EF CRC                   00000000 (0)\n+1F55F3 Compressed Size       00000000 (0)\n+1F55F7 Uncompressed Size     00000000 (0)\n+1F55FB Filename Length       0035 (53)\n+1F55FD Extra Length          0000 (0)\n+1F55FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1EACD2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F55FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1EAD06 PAYLOAD\n+1F5634 PAYLOAD\n \n-1EBED5 DATA DESCRIPTOR       08074B50 (134695760)\n-1EBED9 CRC                   57F2E114 (1475535124)\n-1EBEDD Compressed Size       000011CF (4559)\n-1EBEE1 Uncompressed Size     00005AB2 (23218)\n+1F58D5 DATA DESCRIPTOR       08074B50 (134695760)\n+1F58D9 CRC                   FAB44FD1 (4206120913)\n+1F58DD Compressed Size       000002A1 (673)\n+1F58E1 Uncompressed Size     000004FF (1279)\n \n-1EBEE5 LOCAL HEADER #1850    04034B50 (67324752)\n-1EBEE9 Extract Zip Spec      14 (20) '2.0'\n-1EBEEA Extract OS            00 (0) 'MS-DOS'\n-1EBEEB General Purpose Flag  0808 (2056)\n+1F58E5 LOCAL HEADER #1850    04034B50 (67324752)\n+1F58E9 Extract Zip Spec      14 (20) '2.0'\n+1F58EA Extract OS            00 (0) 'MS-DOS'\n+1F58EB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1EBEED Compression Method    0008 (8) 'Deflated'\n-1EBEEF Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1EBEF3 CRC                   00000000 (0)\n-1EBEF7 Compressed Size       00000000 (0)\n-1EBEFB Uncompressed Size     00000000 (0)\n-1EBEFF Filename Length       0033 (51)\n-1EBF01 Extra Length          0000 (0)\n-1EBF03 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F58ED Compression Method    0008 (8) 'Deflated'\n+1F58EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F58F3 CRC                   00000000 (0)\n+1F58F7 Compressed Size       00000000 (0)\n+1F58FB Uncompressed Size     00000000 (0)\n+1F58FF Filename Length       0030 (48)\n+1F5901 Extra Length          0000 (0)\n+1F5903 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1EBF03: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F5903: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1EBF36 PAYLOAD\n+1F5933 PAYLOAD\n \n-1EDA08 DATA DESCRIPTOR       08074B50 (134695760)\n-1EDA0C CRC                   7366BE52 (1936113234)\n-1EDA10 Compressed Size       00001AD2 (6866)\n-1EDA14 Uncompressed Size     0000A298 (41624)\n+1F5BF6 DATA DESCRIPTOR       08074B50 (134695760)\n+1F5BFA CRC                   0D3C7289 (222065289)\n+1F5BFE Compressed Size       000002C3 (707)\n+1F5C02 Uncompressed Size     0000064D (1613)\n \n-1EDA18 LOCAL HEADER #1851    04034B50 (67324752)\n-1EDA1C Extract Zip Spec      14 (20) '2.0'\n-1EDA1D Extract OS            00 (0) 'MS-DOS'\n-1EDA1E General Purpose Flag  0808 (2056)\n+1F5C06 LOCAL HEADER #1851    04034B50 (67324752)\n+1F5C0A Extract Zip Spec      14 (20) '2.0'\n+1F5C0B Extract OS            00 (0) 'MS-DOS'\n+1F5C0C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1EDA20 Compression Method    0008 (8) 'Deflated'\n-1EDA22 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1EDA26 CRC                   00000000 (0)\n-1EDA2A Compressed Size       00000000 (0)\n-1EDA2E Uncompressed Size     00000000 (0)\n-1EDA32 Filename Length       003A (58)\n-1EDA34 Extra Length          0000 (0)\n-1EDA36 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F5C0E Compression Method    0008 (8) 'Deflated'\n+1F5C10 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F5C14 CRC                   00000000 (0)\n+1F5C18 Compressed Size       00000000 (0)\n+1F5C1C Uncompressed Size     00000000 (0)\n+1F5C20 Filename Length       002B (43)\n+1F5C22 Extra Length          0000 (0)\n+1F5C24 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1EDA36: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F5C24: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1EDA70 PAYLOAD\n+1F5C4F PAYLOAD\n \n-1EDDD2 DATA DESCRIPTOR       08074B50 (134695760)\n-1EDDD6 CRC                   44EA1A2E (1156192814)\n-1EDDDA Compressed Size       00000362 (866)\n-1EDDDE Uncompressed Size     000007A1 (1953)\n+1F68DB DATA DESCRIPTOR       08074B50 (134695760)\n+1F68DF CRC                   9A0F8216 (2584707606)\n+1F68E3 Compressed Size       00000C8C (3212)\n+1F68E7 Uncompressed Size     00003C3D (15421)\n \n-1EDDE2 LOCAL HEADER #1852    04034B50 (67324752)\n-1EDDE6 Extract Zip Spec      14 (20) '2.0'\n-1EDDE7 Extract OS            00 (0) 'MS-DOS'\n-1EDDE8 General Purpose Flag  0808 (2056)\n+1F68EB LOCAL HEADER #1852    04034B50 (67324752)\n+1F68EF Extract Zip Spec      14 (20) '2.0'\n+1F68F0 Extract OS            00 (0) 'MS-DOS'\n+1F68F1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1EDDEA Compression Method    0008 (8) 'Deflated'\n-1EDDEC Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1EDDF0 CRC                   00000000 (0)\n-1EDDF4 Compressed Size       00000000 (0)\n-1EDDF8 Uncompressed Size     00000000 (0)\n-1EDDFC Filename Length       0040 (64)\n-1EDDFE Extra Length          0000 (0)\n-1EDE00 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F68F3 Compression Method    0008 (8) 'Deflated'\n+1F68F5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F68F9 CRC                   00000000 (0)\n+1F68FD Compressed Size       00000000 (0)\n+1F6901 Uncompressed Size     00000000 (0)\n+1F6905 Filename Length       0033 (51)\n+1F6907 Extra Length          0000 (0)\n+1F6909 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1EDE00: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F6909: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1EDE40 PAYLOAD\n+1F693C PAYLOAD\n \n-1EE1A5 DATA DESCRIPTOR       08074B50 (134695760)\n-1EE1A9 CRC                   0EA48277 (245662327)\n-1EE1AD Compressed Size       00000365 (869)\n-1EE1B1 Uncompressed Size     000007B2 (1970)\n+1F6BB6 DATA DESCRIPTOR       08074B50 (134695760)\n+1F6BBA CRC                   5D4E898D (1565428109)\n+1F6BBE Compressed Size       0000027A (634)\n+1F6BC2 Uncompressed Size     000004E2 (1250)\n \n-1EE1B5 LOCAL HEADER #1853    04034B50 (67324752)\n-1EE1B9 Extract Zip Spec      14 (20) '2.0'\n-1EE1BA Extract OS            00 (0) 'MS-DOS'\n-1EE1BB General Purpose Flag  0808 (2056)\n+1F6BC6 LOCAL HEADER #1853    04034B50 (67324752)\n+1F6BCA Extract Zip Spec      14 (20) '2.0'\n+1F6BCB Extract OS            00 (0) 'MS-DOS'\n+1F6BCC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1EE1BD Compression Method    0008 (8) 'Deflated'\n-1EE1BF Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1EE1C3 CRC                   00000000 (0)\n-1EE1C7 Compressed Size       00000000 (0)\n-1EE1CB Uncompressed Size     00000000 (0)\n-1EE1CF Filename Length       0036 (54)\n-1EE1D1 Extra Length          0000 (0)\n-1EE1D3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F6BCE Compression Method    0008 (8) 'Deflated'\n+1F6BD0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F6BD4 CRC                   00000000 (0)\n+1F6BD8 Compressed Size       00000000 (0)\n+1F6BDC Uncompressed Size     00000000 (0)\n+1F6BE0 Filename Length       002E (46)\n+1F6BE2 Extra Length          0000 (0)\n+1F6BE4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1EE1D3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F6BE4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1EE209 PAYLOAD\n+1F6C12 PAYLOAD\n \n-1EE81B DATA DESCRIPTOR       08074B50 (134695760)\n-1EE81F CRC                   D18F68BE (3515836606)\n-1EE823 Compressed Size       00000612 (1554)\n-1EE827 Uncompressed Size     00000D2C (3372)\n+1F753F DATA DESCRIPTOR       08074B50 (134695760)\n+1F7543 CRC                   2CED0C75 (753732725)\n+1F7547 Compressed Size       0000092D (2349)\n+1F754B Uncompressed Size     00002B2A (11050)\n \n-1EE82B LOCAL HEADER #1854    04034B50 (67324752)\n-1EE82F Extract Zip Spec      14 (20) '2.0'\n-1EE830 Extract OS            00 (0) 'MS-DOS'\n-1EE831 General Purpose Flag  0808 (2056)\n+1F754F LOCAL HEADER #1854    04034B50 (67324752)\n+1F7553 Extract Zip Spec      14 (20) '2.0'\n+1F7554 Extract OS            00 (0) 'MS-DOS'\n+1F7555 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1EE833 Compression Method    0008 (8) 'Deflated'\n-1EE835 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1EE839 CRC                   00000000 (0)\n-1EE83D Compressed Size       00000000 (0)\n-1EE841 Uncompressed Size     00000000 (0)\n-1EE845 Filename Length       003D (61)\n-1EE847 Extra Length          0000 (0)\n-1EE849 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F7557 Compression Method    0008 (8) 'Deflated'\n+1F7559 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F755D CRC                   00000000 (0)\n+1F7561 Compressed Size       00000000 (0)\n+1F7565 Uncompressed Size     00000000 (0)\n+1F7569 Filename Length       0036 (54)\n+1F756B Extra Length          0000 (0)\n+1F756D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1EE849: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F756D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1EE886 PAYLOAD\n+1F75A3 PAYLOAD\n \n-1EEAF1 DATA DESCRIPTOR       08074B50 (134695760)\n-1EEAF5 CRC                   E6FF39F2 (3875486194)\n-1EEAF9 Compressed Size       0000026B (619)\n-1EEAFD Uncompressed Size     0000046B (1131)\n+1F79D5 DATA DESCRIPTOR       08074B50 (134695760)\n+1F79D9 CRC                   C38A081C (3280603164)\n+1F79DD Compressed Size       00000432 (1074)\n+1F79E1 Uncompressed Size     00000C70 (3184)\n \n-1EEB01 LOCAL HEADER #1855    04034B50 (67324752)\n-1EEB05 Extract Zip Spec      14 (20) '2.0'\n-1EEB06 Extract OS            00 (0) 'MS-DOS'\n-1EEB07 General Purpose Flag  0808 (2056)\n+1F79E5 LOCAL HEADER #1855    04034B50 (67324752)\n+1F79E9 Extract Zip Spec      14 (20) '2.0'\n+1F79EA Extract OS            00 (0) 'MS-DOS'\n+1F79EB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1EEB09 Compression Method    0008 (8) 'Deflated'\n-1EEB0B Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1EEB0F CRC                   00000000 (0)\n-1EEB13 Compressed Size       00000000 (0)\n-1EEB17 Uncompressed Size     00000000 (0)\n-1EEB1B Filename Length       003A (58)\n-1EEB1D Extra Length          0000 (0)\n-1EEB1F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F79ED Compression Method    0008 (8) 'Deflated'\n+1F79EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F79F3 CRC                   00000000 (0)\n+1F79F7 Compressed Size       00000000 (0)\n+1F79FB Uncompressed Size     00000000 (0)\n+1F79FF Filename Length       0032 (50)\n+1F7A01 Extra Length          0000 (0)\n+1F7A03 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1EEB1F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F7A03: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1EEB59 PAYLOAD\n+1F7A35 PAYLOAD\n \n-1EF002 DATA DESCRIPTOR       08074B50 (134695760)\n-1EF006 CRC                   265DEF91 (643690385)\n-1EF00A Compressed Size       000004A9 (1193)\n-1EF00E Uncompressed Size     0000098C (2444)\n+1F7D9F DATA DESCRIPTOR       08074B50 (134695760)\n+1F7DA3 CRC                   5D7F96AB (1568642731)\n+1F7DA7 Compressed Size       0000036A (874)\n+1F7DAB Uncompressed Size     00000904 (2308)\n \n-1EF012 LOCAL HEADER #1856    04034B50 (67324752)\n-1EF016 Extract Zip Spec      14 (20) '2.0'\n-1EF017 Extract OS            00 (0) 'MS-DOS'\n-1EF018 General Purpose Flag  0808 (2056)\n+1F7DAF LOCAL HEADER #1856    04034B50 (67324752)\n+1F7DB3 Extract Zip Spec      14 (20) '2.0'\n+1F7DB4 Extract OS            00 (0) 'MS-DOS'\n+1F7DB5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1EF01A Compression Method    0008 (8) 'Deflated'\n-1EF01C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1EF020 CRC                   00000000 (0)\n-1EF024 Compressed Size       00000000 (0)\n-1EF028 Uncompressed Size     00000000 (0)\n-1EF02C Filename Length       0037 (55)\n-1EF02E Extra Length          0000 (0)\n-1EF030 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F7DB7 Compression Method    0008 (8) 'Deflated'\n+1F7DB9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F7DBD CRC                   00000000 (0)\n+1F7DC1 Compressed Size       00000000 (0)\n+1F7DC5 Uncompressed Size     00000000 (0)\n+1F7DC9 Filename Length       002F (47)\n+1F7DCB Extra Length          0000 (0)\n+1F7DCD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1EF030: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F7DCD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1EF067 PAYLOAD\n+1F7DFC PAYLOAD\n \n-1EF176 DATA DESCRIPTOR       08074B50 (134695760)\n-1EF17A CRC                   E295C65E (3801466462)\n-1EF17E Compressed Size       0000010F (271)\n-1EF182 Uncompressed Size     0000026A (618)\n+1F81CB DATA DESCRIPTOR       08074B50 (134695760)\n+1F81CF CRC                   509BAB75 (1352379253)\n+1F81D3 Compressed Size       000003CF (975)\n+1F81D7 Uncompressed Size     0000083C (2108)\n \n-1EF186 LOCAL HEADER #1857    04034B50 (67324752)\n-1EF18A Extract Zip Spec      14 (20) '2.0'\n-1EF18B Extract OS            00 (0) 'MS-DOS'\n-1EF18C General Purpose Flag  0808 (2056)\n+1F81DB LOCAL HEADER #1857    04034B50 (67324752)\n+1F81DF Extract Zip Spec      14 (20) '2.0'\n+1F81E0 Extract OS            00 (0) 'MS-DOS'\n+1F81E1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1EF18E Compression Method    0008 (8) 'Deflated'\n-1EF190 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1EF194 CRC                   00000000 (0)\n-1EF198 Compressed Size       00000000 (0)\n-1EF19C Uncompressed Size     00000000 (0)\n-1EF1A0 Filename Length       0034 (52)\n-1EF1A2 Extra Length          0000 (0)\n-1EF1A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F81E3 Compression Method    0008 (8) 'Deflated'\n+1F81E5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F81E9 CRC                   00000000 (0)\n+1F81ED Compressed Size       00000000 (0)\n+1F81F1 Uncompressed Size     00000000 (0)\n+1F81F5 Filename Length       0031 (49)\n+1F81F7 Extra Length          0000 (0)\n+1F81F9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1EF1A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F81F9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1EF1D8 PAYLOAD\n+1F822A PAYLOAD\n \n-1EF829 DATA DESCRIPTOR       08074B50 (134695760)\n-1EF82D CRC                   BDD7BBBA (3185032122)\n-1EF831 Compressed Size       00000651 (1617)\n-1EF835 Uncompressed Size     00000E2C (3628)\n+1F8677 DATA DESCRIPTOR       08074B50 (134695760)\n+1F867B CRC                   C02150D4 (3223408852)\n+1F867F Compressed Size       0000044D (1101)\n+1F8683 Uncompressed Size     00000BA1 (2977)\n \n-1EF839 LOCAL HEADER #1858    04034B50 (67324752)\n-1EF83D Extract Zip Spec      14 (20) '2.0'\n-1EF83E Extract OS            00 (0) 'MS-DOS'\n-1EF83F General Purpose Flag  0808 (2056)\n+1F8687 LOCAL HEADER #1858    04034B50 (67324752)\n+1F868B Extract Zip Spec      14 (20) '2.0'\n+1F868C Extract OS            00 (0) 'MS-DOS'\n+1F868D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1EF841 Compression Method    0008 (8) 'Deflated'\n-1EF843 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1EF847 CRC                   00000000 (0)\n-1EF84B Compressed Size       00000000 (0)\n-1EF84F Uncompressed Size     00000000 (0)\n-1EF853 Filename Length       0034 (52)\n-1EF855 Extra Length          0000 (0)\n-1EF857 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F868F Compression Method    0008 (8) 'Deflated'\n+1F8691 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F8695 CRC                   00000000 (0)\n+1F8699 Compressed Size       00000000 (0)\n+1F869D Uncompressed Size     00000000 (0)\n+1F86A1 Filename Length       0036 (54)\n+1F86A3 Extra Length          0000 (0)\n+1F86A5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1EF857: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F86A5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1EF88B PAYLOAD\n+1F86DB PAYLOAD\n \n-1F24CB DATA DESCRIPTOR       08074B50 (134695760)\n-1F24CF CRC                   42CFBA07 (1120909831)\n-1F24D3 Compressed Size       00002C40 (11328)\n-1F24D7 Uncompressed Size     00016026 (90150)\n+1F8AA1 DATA DESCRIPTOR       08074B50 (134695760)\n+1F8AA5 CRC                   B34C7492 (3008132242)\n+1F8AA9 Compressed Size       000003C6 (966)\n+1F8AAD Uncompressed Size     00000AAE (2734)\n \n-1F24DB LOCAL HEADER #1859    04034B50 (67324752)\n-1F24DF Extract Zip Spec      14 (20) '2.0'\n-1F24E0 Extract OS            00 (0) 'MS-DOS'\n-1F24E1 General Purpose Flag  0808 (2056)\n+1F8AB1 LOCAL HEADER #1859    04034B50 (67324752)\n+1F8AB5 Extract Zip Spec      14 (20) '2.0'\n+1F8AB6 Extract OS            00 (0) 'MS-DOS'\n+1F8AB7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F24E3 Compression Method    0008 (8) 'Deflated'\n-1F24E5 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1F24E9 CRC                   00000000 (0)\n-1F24ED Compressed Size       00000000 (0)\n-1F24F1 Uncompressed Size     00000000 (0)\n-1F24F5 Filename Length       0038 (56)\n-1F24F7 Extra Length          0000 (0)\n-1F24F9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F8AB9 Compression Method    0008 (8) 'Deflated'\n+1F8ABB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F8ABF CRC                   00000000 (0)\n+1F8AC3 Compressed Size       00000000 (0)\n+1F8AC7 Uncompressed Size     00000000 (0)\n+1F8ACB Filename Length       0025 (37)\n+1F8ACD Extra Length          0000 (0)\n+1F8ACF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F24F9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F8ACF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F2531 PAYLOAD\n+1F8AF4 PAYLOAD               XX\n \n-1F2C0D DATA DESCRIPTOR       08074B50 (134695760)\n-1F2C11 CRC                   B1D0AB16 (2983242518)\n-1F2C15 Compressed Size       000006DC (1756)\n-1F2C19 Uncompressed Size     0000137B (4987)\n+1F8AF6 DATA DESCRIPTOR       08074B50 (134695760)\n+1F8AFA CRC                   00000000 (0)\n+1F8AFE Compressed Size       00000002 (2)\n+1F8B02 Uncompressed Size     00000000 (0)\n \n-1F2C1D LOCAL HEADER #1860    04034B50 (67324752)\n-1F2C21 Extract Zip Spec      14 (20) '2.0'\n-1F2C22 Extract OS            00 (0) 'MS-DOS'\n-1F2C23 General Purpose Flag  0808 (2056)\n+1F8B06 LOCAL HEADER #1860    04034B50 (67324752)\n+1F8B0A Extract Zip Spec      14 (20) '2.0'\n+1F8B0B Extract OS            00 (0) 'MS-DOS'\n+1F8B0C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F2C25 Compression Method    0008 (8) 'Deflated'\n-1F2C27 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1F2C2B CRC                   00000000 (0)\n-1F2C2F Compressed Size       00000000 (0)\n-1F2C33 Uncompressed Size     00000000 (0)\n-1F2C37 Filename Length       003F (63)\n-1F2C39 Extra Length          0000 (0)\n-1F2C3B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F8B0E Compression Method    0008 (8) 'Deflated'\n+1F8B10 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F8B14 CRC                   00000000 (0)\n+1F8B18 Compressed Size       00000000 (0)\n+1F8B1C Uncompressed Size     00000000 (0)\n+1F8B20 Filename Length       0041 (65)\n+1F8B22 Extra Length          0000 (0)\n+1F8B24 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F2C3B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F8B24: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F2C7A PAYLOAD\n+1F8B65 PAYLOAD\n \n-1F3385 DATA DESCRIPTOR       08074B50 (134695760)\n-1F3389 CRC                   D684F652 (3599038034)\n-1F338D Compressed Size       0000070B (1803)\n-1F3391 Uncompressed Size     0000127F (4735)\n+1F8F61 DATA DESCRIPTOR       08074B50 (134695760)\n+1F8F65 CRC                   812905CA (2166949322)\n+1F8F69 Compressed Size       000003FC (1020)\n+1F8F6D Uncompressed Size     00000A8E (2702)\n \n-1F3395 LOCAL HEADER #1861    04034B50 (67324752)\n-1F3399 Extract Zip Spec      14 (20) '2.0'\n-1F339A Extract OS            00 (0) 'MS-DOS'\n-1F339B General Purpose Flag  0808 (2056)\n+1F8F71 LOCAL HEADER #1861    04034B50 (67324752)\n+1F8F75 Extract Zip Spec      14 (20) '2.0'\n+1F8F76 Extract OS            00 (0) 'MS-DOS'\n+1F8F77 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F339D Compression Method    0008 (8) 'Deflated'\n-1F339F Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1F33A3 CRC                   00000000 (0)\n-1F33A7 Compressed Size       00000000 (0)\n-1F33AB Uncompressed Size     00000000 (0)\n-1F33AF Filename Length       003C (60)\n-1F33B1 Extra Length          0000 (0)\n-1F33B3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F8F79 Compression Method    0008 (8) 'Deflated'\n+1F8F7B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F8F7F CRC                   00000000 (0)\n+1F8F83 Compressed Size       00000000 (0)\n+1F8F87 Uncompressed Size     00000000 (0)\n+1F8F8B Filename Length       0042 (66)\n+1F8F8D Extra Length          0000 (0)\n+1F8F8F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F33B3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F8F8F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F33EF PAYLOAD\n+1F8FD1 PAYLOAD\n \n-1F38EE DATA DESCRIPTOR       08074B50 (134695760)\n-1F38F2 CRC                   091B09EC (152766956)\n-1F38F6 Compressed Size       000004FF (1279)\n-1F38FA Uncompressed Size     00000B45 (2885)\n+1F94A8 DATA DESCRIPTOR       08074B50 (134695760)\n+1F94AC CRC                   D4CAE0D6 (3570065622)\n+1F94B0 Compressed Size       000004D7 (1239)\n+1F94B4 Uncompressed Size     00000F80 (3968)\n \n-1F38FE LOCAL HEADER #1862    04034B50 (67324752)\n-1F3902 Extract Zip Spec      14 (20) '2.0'\n-1F3903 Extract OS            00 (0) 'MS-DOS'\n-1F3904 General Purpose Flag  0808 (2056)\n+1F94B8 LOCAL HEADER #1862    04034B50 (67324752)\n+1F94BC Extract Zip Spec      14 (20) '2.0'\n+1F94BD Extract OS            00 (0) 'MS-DOS'\n+1F94BE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F3906 Compression Method    0008 (8) 'Deflated'\n-1F3908 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1F390C CRC                   00000000 (0)\n-1F3910 Compressed Size       00000000 (0)\n-1F3914 Uncompressed Size     00000000 (0)\n-1F3918 Filename Length       0031 (49)\n-1F391A Extra Length          0000 (0)\n-1F391C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F94C0 Compression Method    0008 (8) 'Deflated'\n+1F94C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F94C6 CRC                   00000000 (0)\n+1F94CA Compressed Size       00000000 (0)\n+1F94CE Uncompressed Size     00000000 (0)\n+1F94D2 Filename Length       003F (63)\n+1F94D4 Extra Length          0000 (0)\n+1F94D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F391C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F94D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F394D PAYLOAD\n+1F9515 PAYLOAD\n \n-1F3E17 DATA DESCRIPTOR       08074B50 (134695760)\n-1F3E1B CRC                   17688FAA (392728490)\n-1F3E1F Compressed Size       000004CA (1226)\n-1F3E23 Uncompressed Size     000009A8 (2472)\n+1F99B7 DATA DESCRIPTOR       08074B50 (134695760)\n+1F99BB CRC                   9C44854A (2621736266)\n+1F99BF Compressed Size       000004A2 (1186)\n+1F99C3 Uncompressed Size     00000D4A (3402)\n \n-1F3E27 LOCAL HEADER #1863    04034B50 (67324752)\n-1F3E2B Extract Zip Spec      14 (20) '2.0'\n-1F3E2C Extract OS            00 (0) 'MS-DOS'\n-1F3E2D General Purpose Flag  0808 (2056)\n+1F99C7 LOCAL HEADER #1863    04034B50 (67324752)\n+1F99CB Extract Zip Spec      14 (20) '2.0'\n+1F99CC Extract OS            00 (0) 'MS-DOS'\n+1F99CD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F3E2F Compression Method    0008 (8) 'Deflated'\n-1F3E31 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1F3E35 CRC                   00000000 (0)\n-1F3E39 Compressed Size       00000000 (0)\n-1F3E3D Uncompressed Size     00000000 (0)\n-1F3E41 Filename Length       0035 (53)\n-1F3E43 Extra Length          0000 (0)\n-1F3E45 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F99CF Compression Method    0008 (8) 'Deflated'\n+1F99D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F99D5 CRC                   00000000 (0)\n+1F99D9 Compressed Size       00000000 (0)\n+1F99DD Uncompressed Size     00000000 (0)\n+1F99E1 Filename Length       002D (45)\n+1F99E3 Extra Length          0000 (0)\n+1F99E5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F3E45: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F99E5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F3E7A PAYLOAD\n+1F9A12 PAYLOAD               XX\n \n-1F442E DATA DESCRIPTOR       08074B50 (134695760)\n-1F4432 CRC                   0827F1CF (136835535)\n-1F4436 Compressed Size       000005B4 (1460)\n-1F443A Uncompressed Size     00000C8B (3211)\n+1F9A14 DATA DESCRIPTOR       08074B50 (134695760)\n+1F9A18 CRC                   00000000 (0)\n+1F9A1C Compressed Size       00000002 (2)\n+1F9A20 Uncompressed Size     00000000 (0)\n \n-1F443E LOCAL HEADER #1864    04034B50 (67324752)\n-1F4442 Extract Zip Spec      14 (20) '2.0'\n-1F4443 Extract OS            00 (0) 'MS-DOS'\n-1F4444 General Purpose Flag  0808 (2056)\n+1F9A24 LOCAL HEADER #1864    04034B50 (67324752)\n+1F9A28 Extract Zip Spec      14 (20) '2.0'\n+1F9A29 Extract OS            00 (0) 'MS-DOS'\n+1F9A2A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F4446 Compression Method    0008 (8) 'Deflated'\n-1F4448 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-1F444C CRC                   00000000 (0)\n-1F4450 Compressed Size       00000000 (0)\n-1F4454 Uncompressed Size     00000000 (0)\n-1F4458 Filename Length       003E (62)\n-1F445A Extra Length          0000 (0)\n-1F445C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F9A2C Compression Method    0008 (8) 'Deflated'\n+1F9A2E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F9A32 CRC                   00000000 (0)\n+1F9A36 Compressed Size       00000000 (0)\n+1F9A3A Uncompressed Size     00000000 (0)\n+1F9A3E Filename Length       0042 (66)\n+1F9A40 Extra Length          0000 (0)\n+1F9A42 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F445C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F9A42: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F449A PAYLOAD\n+1F9A84 PAYLOAD\n \n-1F4A06 DATA DESCRIPTOR       08074B50 (134695760)\n-1F4A0A CRC                   430F5283 (1125077635)\n-1F4A0E Compressed Size       0000056C (1388)\n-1F4A12 Uncompressed Size     00000BD7 (3031)\n+1F9DA4 DATA DESCRIPTOR       08074B50 (134695760)\n+1F9DA8 CRC                   F46C8898 (4100753560)\n+1F9DAC Compressed Size       00000320 (800)\n+1F9DB0 Uncompressed Size     000006EB (1771)\n \n-1F4A16 LOCAL HEADER #1865    04034B50 (67324752)\n-1F4A1A Extract Zip Spec      14 (20) '2.0'\n-1F4A1B Extract OS            00 (0) 'MS-DOS'\n-1F4A1C General Purpose Flag  0808 (2056)\n+1F9DB4 LOCAL HEADER #1865    04034B50 (67324752)\n+1F9DB8 Extract Zip Spec      14 (20) '2.0'\n+1F9DB9 Extract OS            00 (0) 'MS-DOS'\n+1F9DBA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F4A1E Compression Method    0008 (8) 'Deflated'\n-1F4A20 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F4A24 CRC                   00000000 (0)\n-1F4A28 Compressed Size       00000000 (0)\n-1F4A2C Uncompressed Size     00000000 (0)\n-1F4A30 Filename Length       001A (26)\n-1F4A32 Extra Length          0000 (0)\n-1F4A34 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1F9DBC Compression Method    0008 (8) 'Deflated'\n+1F9DBE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1F9DC2 CRC                   00000000 (0)\n+1F9DC6 Compressed Size       00000000 (0)\n+1F9DCA Uncompressed Size     00000000 (0)\n+1F9DCE Filename Length       0047 (71)\n+1F9DD0 Extra Length          0000 (0)\n+1F9DD2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F4A34: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1F9DD2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F4A4E PAYLOAD               XX\n+1F9E19 PAYLOAD\n \n-1F4A50 DATA DESCRIPTOR       08074B50 (134695760)\n-1F4A54 CRC                   00000000 (0)\n-1F4A58 Compressed Size       00000002 (2)\n-1F4A5C Uncompressed Size     00000000 (0)\n+1FA254 DATA DESCRIPTOR       08074B50 (134695760)\n+1FA258 CRC                   82A5648F (2191877263)\n+1FA25C Compressed Size       0000043B (1083)\n+1FA260 Uncompressed Size     00000B13 (2835)\n \n-1F4A60 LOCAL HEADER #1866    04034B50 (67324752)\n-1F4A64 Extract Zip Spec      14 (20) '2.0'\n-1F4A65 Extract OS            00 (0) 'MS-DOS'\n-1F4A66 General Purpose Flag  0808 (2056)\n+1FA264 LOCAL HEADER #1866    04034B50 (67324752)\n+1FA268 Extract Zip Spec      14 (20) '2.0'\n+1FA269 Extract OS            00 (0) 'MS-DOS'\n+1FA26A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F4A68 Compression Method    0008 (8) 'Deflated'\n-1F4A6A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F4A6E CRC                   00000000 (0)\n-1F4A72 Compressed Size       00000000 (0)\n-1F4A76 Uncompressed Size     00000000 (0)\n-1F4A7A Filename Length       003A (58)\n-1F4A7C Extra Length          0000 (0)\n-1F4A7E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FA26C Compression Method    0008 (8) 'Deflated'\n+1FA26E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FA272 CRC                   00000000 (0)\n+1FA276 Compressed Size       00000000 (0)\n+1FA27A Uncompressed Size     00000000 (0)\n+1FA27E Filename Length       0044 (68)\n+1FA280 Extra Length          0000 (0)\n+1FA282 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F4A7E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FA282: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F4AB8 PAYLOAD\n+1FA2C6 PAYLOAD\n \n-1F4E21 DATA DESCRIPTOR       08074B50 (134695760)\n-1F4E25 CRC                   CF6AE7CA (3479889866)\n-1F4E29 Compressed Size       00000369 (873)\n-1F4E2D Uncompressed Size     00000A57 (2647)\n+1FA6AD DATA DESCRIPTOR       08074B50 (134695760)\n+1FA6B1 CRC                   DA27253B (3659998523)\n+1FA6B5 Compressed Size       000003E7 (999)\n+1FA6B9 Uncompressed Size     000009FE (2558)\n \n-1F4E31 LOCAL HEADER #1867    04034B50 (67324752)\n-1F4E35 Extract Zip Spec      14 (20) '2.0'\n-1F4E36 Extract OS            00 (0) 'MS-DOS'\n-1F4E37 General Purpose Flag  0808 (2056)\n+1FA6BD LOCAL HEADER #1867    04034B50 (67324752)\n+1FA6C1 Extract Zip Spec      14 (20) '2.0'\n+1FA6C2 Extract OS            00 (0) 'MS-DOS'\n+1FA6C3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F4E39 Compression Method    0008 (8) 'Deflated'\n-1F4E3B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F4E3F CRC                   00000000 (0)\n-1F4E43 Compressed Size       00000000 (0)\n-1F4E47 Uncompressed Size     00000000 (0)\n-1F4E4B Filename Length       0045 (69)\n-1F4E4D Extra Length          0000 (0)\n-1F4E4F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FA6C5 Compression Method    0008 (8) 'Deflated'\n+1FA6C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FA6CB CRC                   00000000 (0)\n+1FA6CF Compressed Size       00000000 (0)\n+1FA6D3 Uncompressed Size     00000000 (0)\n+1FA6D7 Filename Length       0041 (65)\n+1FA6D9 Extra Length          0000 (0)\n+1FA6DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F4E4F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FA6DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F4E94 PAYLOAD\n+1FA71C PAYLOAD\n \n-1F5424 DATA DESCRIPTOR       08074B50 (134695760)\n-1F5428 CRC                   462DB2DF (1177400031)\n-1F542C Compressed Size       00000590 (1424)\n-1F5430 Uncompressed Size     0000100F (4111)\n+1FAAB7 DATA DESCRIPTOR       08074B50 (134695760)\n+1FAABB CRC                   3AE3106C (987959404)\n+1FAABF Compressed Size       0000039B (923)\n+1FAAC3 Uncompressed Size     000007D5 (2005)\n \n-1F5434 LOCAL HEADER #1868    04034B50 (67324752)\n-1F5438 Extract Zip Spec      14 (20) '2.0'\n-1F5439 Extract OS            00 (0) 'MS-DOS'\n-1F543A General Purpose Flag  0808 (2056)\n+1FAAC7 LOCAL HEADER #1868    04034B50 (67324752)\n+1FAACB Extract Zip Spec      14 (20) '2.0'\n+1FAACC Extract OS            00 (0) 'MS-DOS'\n+1FAACD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F543C Compression Method    0008 (8) 'Deflated'\n-1F543E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F5442 CRC                   00000000 (0)\n-1F5446 Compressed Size       00000000 (0)\n-1F544A Uncompressed Size     00000000 (0)\n-1F544E Filename Length       0032 (50)\n-1F5450 Extra Length          0000 (0)\n-1F5452 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FAACF Compression Method    0008 (8) 'Deflated'\n+1FAAD1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FAAD5 CRC                   00000000 (0)\n+1FAAD9 Compressed Size       00000000 (0)\n+1FAADD Uncompressed Size     00000000 (0)\n+1FAAE1 Filename Length       0040 (64)\n+1FAAE3 Extra Length          0000 (0)\n+1FAAE5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F5452: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FAAE5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F5484 PAYLOAD\n+1FAB25 PAYLOAD\n \n-1F56F5 DATA DESCRIPTOR       08074B50 (134695760)\n-1F56F9 CRC                   A8E35A99 (2833472153)\n-1F56FD Compressed Size       00000271 (625)\n-1F5701 Uncompressed Size     000004F2 (1266)\n+1FAFC2 DATA DESCRIPTOR       08074B50 (134695760)\n+1FAFC6 CRC                   5241C10C (1380040972)\n+1FAFCA Compressed Size       0000049D (1181)\n+1FAFCE Uncompressed Size     00000C91 (3217)\n \n-1F5705 LOCAL HEADER #1869    04034B50 (67324752)\n-1F5709 Extract Zip Spec      14 (20) '2.0'\n-1F570A Extract OS            00 (0) 'MS-DOS'\n-1F570B General Purpose Flag  0808 (2056)\n+1FAFD2 LOCAL HEADER #1869    04034B50 (67324752)\n+1FAFD6 Extract Zip Spec      14 (20) '2.0'\n+1FAFD7 Extract OS            00 (0) 'MS-DOS'\n+1FAFD8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F570D Compression Method    0008 (8) 'Deflated'\n-1F570F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F5713 CRC                   00000000 (0)\n-1F5717 Compressed Size       00000000 (0)\n-1F571B Uncompressed Size     00000000 (0)\n-1F571F Filename Length       002E (46)\n-1F5721 Extra Length          0000 (0)\n-1F5723 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FAFDA Compression Method    0008 (8) 'Deflated'\n+1FAFDC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FAFE0 CRC                   00000000 (0)\n+1FAFE4 Compressed Size       00000000 (0)\n+1FAFE8 Uncompressed Size     00000000 (0)\n+1FAFEC Filename Length       003D (61)\n+1FAFEE Extra Length          0000 (0)\n+1FAFF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F5723: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FAFF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F5751 PAYLOAD\n+1FB02D PAYLOAD\n \n-1F5961 DATA DESCRIPTOR       08074B50 (134695760)\n-1F5965 CRC                   ECCEFB44 (3972987716)\n-1F5969 Compressed Size       00000210 (528)\n-1F596D Uncompressed Size     00000398 (920)\n+1FB301 DATA DESCRIPTOR       08074B50 (134695760)\n+1FB305 CRC                   30FBCCB4 (821808308)\n+1FB309 Compressed Size       000002D4 (724)\n+1FB30D Uncompressed Size     000005CD (1485)\n \n-1F5971 LOCAL HEADER #1870    04034B50 (67324752)\n-1F5975 Extract Zip Spec      14 (20) '2.0'\n-1F5976 Extract OS            00 (0) 'MS-DOS'\n-1F5977 General Purpose Flag  0808 (2056)\n+1FB311 LOCAL HEADER #1870    04034B50 (67324752)\n+1FB315 Extract Zip Spec      14 (20) '2.0'\n+1FB316 Extract OS            00 (0) 'MS-DOS'\n+1FB317 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F5979 Compression Method    0008 (8) 'Deflated'\n-1F597B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F597F CRC                   00000000 (0)\n-1F5983 Compressed Size       00000000 (0)\n-1F5987 Uncompressed Size     00000000 (0)\n-1F598B Filename Length       0035 (53)\n-1F598D Extra Length          0000 (0)\n-1F598F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FB319 Compression Method    0008 (8) 'Deflated'\n+1FB31B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FB31F CRC                   00000000 (0)\n+1FB323 Compressed Size       00000000 (0)\n+1FB327 Uncompressed Size     00000000 (0)\n+1FB32B Filename Length       002B (43)\n+1FB32D Extra Length          0000 (0)\n+1FB32F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F598F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FB32F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F59C4 PAYLOAD\n+1FB35A PAYLOAD               XX\n \n-1F5C5D DATA DESCRIPTOR       08074B50 (134695760)\n-1F5C61 CRC                   7822EF2B (2015555371)\n-1F5C65 Compressed Size       00000299 (665)\n-1F5C69 Uncompressed Size     000004DC (1244)\n+1FB35C DATA DESCRIPTOR       08074B50 (134695760)\n+1FB360 CRC                   00000000 (0)\n+1FB364 Compressed Size       00000002 (2)\n+1FB368 Uncompressed Size     00000000 (0)\n \n-1F5C6D LOCAL HEADER #1871    04034B50 (67324752)\n-1F5C71 Extract Zip Spec      14 (20) '2.0'\n-1F5C72 Extract OS            00 (0) 'MS-DOS'\n-1F5C73 General Purpose Flag  0808 (2056)\n+1FB36C LOCAL HEADER #1871    04034B50 (67324752)\n+1FB370 Extract Zip Spec      14 (20) '2.0'\n+1FB371 Extract OS            00 (0) 'MS-DOS'\n+1FB372 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F5C75 Compression Method    0008 (8) 'Deflated'\n-1F5C77 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F5C7B CRC                   00000000 (0)\n-1F5C7F Compressed Size       00000000 (0)\n-1F5C83 Uncompressed Size     00000000 (0)\n-1F5C87 Filename Length       0030 (48)\n-1F5C89 Extra Length          0000 (0)\n-1F5C8B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FB374 Compression Method    0008 (8) 'Deflated'\n+1FB376 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FB37A CRC                   00000000 (0)\n+1FB37E Compressed Size       00000000 (0)\n+1FB382 Uncompressed Size     00000000 (0)\n+1FB386 Filename Length       0045 (69)\n+1FB388 Extra Length          0000 (0)\n+1FB38A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F5C8B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FB38A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F5CBB PAYLOAD\n+1FB3CF PAYLOAD\n \n-1F5F76 DATA DESCRIPTOR       08074B50 (134695760)\n-1F5F7A CRC                   5CAAFB07 (1554709255)\n-1F5F7E Compressed Size       000002BB (699)\n-1F5F82 Uncompressed Size     0000062F (1583)\n+1FB67C DATA DESCRIPTOR       08074B50 (134695760)\n+1FB680 CRC                   397FE7C7 (964683719)\n+1FB684 Compressed Size       000002AD (685)\n+1FB688 Uncompressed Size     00000592 (1426)\n \n-1F5F86 LOCAL HEADER #1872    04034B50 (67324752)\n-1F5F8A Extract Zip Spec      14 (20) '2.0'\n-1F5F8B Extract OS            00 (0) 'MS-DOS'\n-1F5F8C General Purpose Flag  0808 (2056)\n+1FB68C LOCAL HEADER #1872    04034B50 (67324752)\n+1FB690 Extract Zip Spec      14 (20) '2.0'\n+1FB691 Extract OS            00 (0) 'MS-DOS'\n+1FB692 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F5F8E Compression Method    0008 (8) 'Deflated'\n-1F5F90 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F5F94 CRC                   00000000 (0)\n-1F5F98 Compressed Size       00000000 (0)\n-1F5F9C Uncompressed Size     00000000 (0)\n-1F5FA0 Filename Length       002B (43)\n-1F5FA2 Extra Length          0000 (0)\n-1F5FA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FB694 Compression Method    0008 (8) 'Deflated'\n+1FB696 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FB69A CRC                   00000000 (0)\n+1FB69E Compressed Size       00000000 (0)\n+1FB6A2 Uncompressed Size     00000000 (0)\n+1FB6A6 Filename Length       0040 (64)\n+1FB6A8 Extra Length          0000 (0)\n+1FB6AA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F5FA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FB6AA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F5FCF PAYLOAD\n+1FB6EA PAYLOAD\n \n-1F6C47 DATA DESCRIPTOR       08074B50 (134695760)\n-1F6C4B CRC                   4F1688E0 (1326876896)\n-1F6C4F Compressed Size       00000C78 (3192)\n-1F6C53 Uncompressed Size     00003A7C (14972)\n+1FBB17 DATA DESCRIPTOR       08074B50 (134695760)\n+1FBB1B CRC                   6571F019 (1701965849)\n+1FBB1F Compressed Size       0000042D (1069)\n+1FBB23 Uncompressed Size     00000CAD (3245)\n \n-1F6C57 LOCAL HEADER #1873    04034B50 (67324752)\n-1F6C5B Extract Zip Spec      14 (20) '2.0'\n-1F6C5C Extract OS            00 (0) 'MS-DOS'\n-1F6C5D General Purpose Flag  0808 (2056)\n+1FBB27 LOCAL HEADER #1873    04034B50 (67324752)\n+1FBB2B Extract Zip Spec      14 (20) '2.0'\n+1FBB2C Extract OS            00 (0) 'MS-DOS'\n+1FBB2D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F6C5F Compression Method    0008 (8) 'Deflated'\n-1F6C61 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F6C65 CRC                   00000000 (0)\n-1F6C69 Compressed Size       00000000 (0)\n-1F6C6D Uncompressed Size     00000000 (0)\n-1F6C71 Filename Length       0033 (51)\n-1F6C73 Extra Length          0000 (0)\n-1F6C75 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FBB2F Compression Method    0008 (8) 'Deflated'\n+1FBB31 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FBB35 CRC                   00000000 (0)\n+1FBB39 Compressed Size       00000000 (0)\n+1FBB3D Uncompressed Size     00000000 (0)\n+1FBB41 Filename Length       0041 (65)\n+1FBB43 Extra Length          0000 (0)\n+1FBB45 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F6C75: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FBB45: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F6CA8 PAYLOAD\n+1FBB86 PAYLOAD\n \n-1F6F18 DATA DESCRIPTOR       08074B50 (134695760)\n-1F6F1C CRC                   F33C5BFA (4080819194)\n-1F6F20 Compressed Size       00000270 (624)\n-1F6F24 Uncompressed Size     000004BD (1213)\n+1FBF88 DATA DESCRIPTOR       08074B50 (134695760)\n+1FBF8C CRC                   7A468FD9 (2051444697)\n+1FBF90 Compressed Size       00000402 (1026)\n+1FBF94 Uncompressed Size     00000C2C (3116)\n \n-1F6F28 LOCAL HEADER #1874    04034B50 (67324752)\n-1F6F2C Extract Zip Spec      14 (20) '2.0'\n-1F6F2D Extract OS            00 (0) 'MS-DOS'\n-1F6F2E General Purpose Flag  0808 (2056)\n+1FBF98 LOCAL HEADER #1874    04034B50 (67324752)\n+1FBF9C Extract Zip Spec      14 (20) '2.0'\n+1FBF9D Extract OS            00 (0) 'MS-DOS'\n+1FBF9E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F6F30 Compression Method    0008 (8) 'Deflated'\n-1F6F32 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F6F36 CRC                   00000000 (0)\n-1F6F3A Compressed Size       00000000 (0)\n-1F6F3E Uncompressed Size     00000000 (0)\n-1F6F42 Filename Length       002E (46)\n-1F6F44 Extra Length          0000 (0)\n-1F6F46 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FBFA0 Compression Method    0008 (8) 'Deflated'\n+1FBFA2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FBFA6 CRC                   00000000 (0)\n+1FBFAA Compressed Size       00000000 (0)\n+1FBFAE Uncompressed Size     00000000 (0)\n+1FBFB2 Filename Length       003E (62)\n+1FBFB4 Extra Length          0000 (0)\n+1FBFB6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F6F46: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FBFB6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F6F74 PAYLOAD\n+1FBFF4 PAYLOAD\n \n-1F7891 DATA DESCRIPTOR       08074B50 (134695760)\n-1F7895 CRC                   B27D0F80 (2994540416)\n-1F7899 Compressed Size       0000091D (2333)\n-1F789D Uncompressed Size     00002A19 (10777)\n+1FC64C DATA DESCRIPTOR       08074B50 (134695760)\n+1FC650 CRC                   FDA6691C (4255541532)\n+1FC654 Compressed Size       00000658 (1624)\n+1FC658 Uncompressed Size     00001578 (5496)\n \n-1F78A1 LOCAL HEADER #1875    04034B50 (67324752)\n-1F78A5 Extract Zip Spec      14 (20) '2.0'\n-1F78A6 Extract OS            00 (0) 'MS-DOS'\n-1F78A7 General Purpose Flag  0808 (2056)\n+1FC65C LOCAL HEADER #1875    04034B50 (67324752)\n+1FC660 Extract Zip Spec      14 (20) '2.0'\n+1FC661 Extract OS            00 (0) 'MS-DOS'\n+1FC662 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F78A9 Compression Method    0008 (8) 'Deflated'\n-1F78AB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F78AF CRC                   00000000 (0)\n-1F78B3 Compressed Size       00000000 (0)\n-1F78B7 Uncompressed Size     00000000 (0)\n-1F78BB Filename Length       0036 (54)\n-1F78BD Extra Length          0000 (0)\n-1F78BF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FC664 Compression Method    0008 (8) 'Deflated'\n+1FC666 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FC66A CRC                   00000000 (0)\n+1FC66E Compressed Size       00000000 (0)\n+1FC672 Uncompressed Size     00000000 (0)\n+1FC676 Filename Length       002A (42)\n+1FC678 Extra Length          0000 (0)\n+1FC67A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F78BF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FC67A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F78F5 PAYLOAD\n+1FC6A4 PAYLOAD               XX\n \n-1F7D1C DATA DESCRIPTOR       08074B50 (134695760)\n-1F7D20 CRC                   2A67D5E8 (711448040)\n-1F7D24 Compressed Size       00000427 (1063)\n-1F7D28 Uncompressed Size     00000C0C (3084)\n+1FC6A6 DATA DESCRIPTOR       08074B50 (134695760)\n+1FC6AA CRC                   00000000 (0)\n+1FC6AE Compressed Size       00000002 (2)\n+1FC6B2 Uncompressed Size     00000000 (0)\n \n-1F7D2C LOCAL HEADER #1876    04034B50 (67324752)\n-1F7D30 Extract Zip Spec      14 (20) '2.0'\n-1F7D31 Extract OS            00 (0) 'MS-DOS'\n-1F7D32 General Purpose Flag  0808 (2056)\n+1FC6B6 LOCAL HEADER #1876    04034B50 (67324752)\n+1FC6BA Extract Zip Spec      14 (20) '2.0'\n+1FC6BB Extract OS            00 (0) 'MS-DOS'\n+1FC6BC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F7D34 Compression Method    0008 (8) 'Deflated'\n-1F7D36 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F7D3A CRC                   00000000 (0)\n-1F7D3E Compressed Size       00000000 (0)\n-1F7D42 Uncompressed Size     00000000 (0)\n-1F7D46 Filename Length       0032 (50)\n-1F7D48 Extra Length          0000 (0)\n-1F7D4A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FC6BE Compression Method    0008 (8) 'Deflated'\n+1FC6C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FC6C4 CRC                   00000000 (0)\n+1FC6C8 Compressed Size       00000000 (0)\n+1FC6CC Uncompressed Size     00000000 (0)\n+1FC6D0 Filename Length       0039 (57)\n+1FC6D2 Extra Length          0000 (0)\n+1FC6D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F7D4A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FC6D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F7D7C PAYLOAD\n+1FC70D PAYLOAD\n \n-1F80DC DATA DESCRIPTOR       08074B50 (134695760)\n-1F80E0 CRC                   7483DD2E (1954798894)\n-1F80E4 Compressed Size       00000360 (864)\n-1F80E8 Uncompressed Size     000008BC (2236)\n+1FCC1D DATA DESCRIPTOR       08074B50 (134695760)\n+1FCC21 CRC                   AD8A2A72 (2911513202)\n+1FCC25 Compressed Size       00000510 (1296)\n+1FCC29 Uncompressed Size     00000E16 (3606)\n \n-1F80EC LOCAL HEADER #1877    04034B50 (67324752)\n-1F80F0 Extract Zip Spec      14 (20) '2.0'\n-1F80F1 Extract OS            00 (0) 'MS-DOS'\n-1F80F2 General Purpose Flag  0808 (2056)\n+1FCC2D LOCAL HEADER #1877    04034B50 (67324752)\n+1FCC31 Extract Zip Spec      14 (20) '2.0'\n+1FCC32 Extract OS            00 (0) 'MS-DOS'\n+1FCC33 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F80F4 Compression Method    0008 (8) 'Deflated'\n-1F80F6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F80FA CRC                   00000000 (0)\n-1F80FE Compressed Size       00000000 (0)\n-1F8102 Uncompressed Size     00000000 (0)\n-1F8106 Filename Length       002F (47)\n-1F8108 Extra Length          0000 (0)\n-1F810A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FCC35 Compression Method    0008 (8) 'Deflated'\n+1FCC37 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FCC3B CRC                   00000000 (0)\n+1FCC3F Compressed Size       00000000 (0)\n+1FCC43 Uncompressed Size     00000000 (0)\n+1FCC47 Filename Length       0046 (70)\n+1FCC49 Extra Length          0000 (0)\n+1FCC4B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F810A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FCC4B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F8139 PAYLOAD\n+1FCC91 PAYLOAD\n \n-1F84FE DATA DESCRIPTOR       08074B50 (134695760)\n-1F8502 CRC                   6B4F2850 (1800349776)\n-1F8506 Compressed Size       000003C5 (965)\n-1F850A Uncompressed Size     00000801 (2049)\n+1FD0EF DATA DESCRIPTOR       08074B50 (134695760)\n+1FD0F3 CRC                   EEF3CE31 (4008955441)\n+1FD0F7 Compressed Size       0000045E (1118)\n+1FD0FB Uncompressed Size     00000D4D (3405)\n \n-1F850E LOCAL HEADER #1878    04034B50 (67324752)\n-1F8512 Extract Zip Spec      14 (20) '2.0'\n-1F8513 Extract OS            00 (0) 'MS-DOS'\n-1F8514 General Purpose Flag  0808 (2056)\n+1FD0FF LOCAL HEADER #1878    04034B50 (67324752)\n+1FD103 Extract Zip Spec      14 (20) '2.0'\n+1FD104 Extract OS            00 (0) 'MS-DOS'\n+1FD105 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F8516 Compression Method    0008 (8) 'Deflated'\n-1F8518 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F851C CRC                   00000000 (0)\n-1F8520 Compressed Size       00000000 (0)\n-1F8524 Uncompressed Size     00000000 (0)\n-1F8528 Filename Length       0031 (49)\n-1F852A Extra Length          0000 (0)\n-1F852C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FD107 Compression Method    0008 (8) 'Deflated'\n+1FD109 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FD10D CRC                   00000000 (0)\n+1FD111 Compressed Size       00000000 (0)\n+1FD115 Uncompressed Size     00000000 (0)\n+1FD119 Filename Length       0021 (33)\n+1FD11B Extra Length          0000 (0)\n+1FD11D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F852C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FD11D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F855D PAYLOAD\n+1FD13E PAYLOAD               XX\n \n-1F899F DATA DESCRIPTOR       08074B50 (134695760)\n-1F89A3 CRC                   065E383D (106838077)\n-1F89A7 Compressed Size       00000442 (1090)\n-1F89AB Uncompressed Size     00000B59 (2905)\n+1FD140 DATA DESCRIPTOR       08074B50 (134695760)\n+1FD144 CRC                   00000000 (0)\n+1FD148 Compressed Size       00000002 (2)\n+1FD14C Uncompressed Size     00000000 (0)\n \n-1F89AF LOCAL HEADER #1879    04034B50 (67324752)\n-1F89B3 Extract Zip Spec      14 (20) '2.0'\n-1F89B4 Extract OS            00 (0) 'MS-DOS'\n-1F89B5 General Purpose Flag  0808 (2056)\n+1FD150 LOCAL HEADER #1879    04034B50 (67324752)\n+1FD154 Extract Zip Spec      14 (20) '2.0'\n+1FD155 Extract OS            00 (0) 'MS-DOS'\n+1FD156 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F89B7 Compression Method    0008 (8) 'Deflated'\n-1F89B9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F89BD CRC                   00000000 (0)\n-1F89C1 Compressed Size       00000000 (0)\n-1F89C5 Uncompressed Size     00000000 (0)\n-1F89C9 Filename Length       0036 (54)\n-1F89CB Extra Length          0000 (0)\n-1F89CD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FD158 Compression Method    0008 (8) 'Deflated'\n+1FD15A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FD15E CRC                   00000000 (0)\n+1FD162 Compressed Size       00000000 (0)\n+1FD166 Uncompressed Size     00000000 (0)\n+1FD16A Filename Length       0034 (52)\n+1FD16C Extra Length          0000 (0)\n+1FD16E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F89CD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FD16E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F8A03 PAYLOAD\n+1FD1A2 PAYLOAD\n \n-1F8DBF DATA DESCRIPTOR       08074B50 (134695760)\n-1F8DC3 CRC                   33B4FA9F (867498655)\n-1F8DC7 Compressed Size       000003BC (956)\n-1F8DCB Uncompressed Size     00000A57 (2647)\n+1FD57E DATA DESCRIPTOR       08074B50 (134695760)\n+1FD582 CRC                   B359713A (3008983354)\n+1FD586 Compressed Size       000003DC (988)\n+1FD58A Uncompressed Size     00000BB3 (2995)\n \n-1F8DCF LOCAL HEADER #1880    04034B50 (67324752)\n-1F8DD3 Extract Zip Spec      14 (20) '2.0'\n-1F8DD4 Extract OS            00 (0) 'MS-DOS'\n-1F8DD5 General Purpose Flag  0808 (2056)\n+1FD58E LOCAL HEADER #1880    04034B50 (67324752)\n+1FD592 Extract Zip Spec      14 (20) '2.0'\n+1FD593 Extract OS            00 (0) 'MS-DOS'\n+1FD594 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F8DD7 Compression Method    0008 (8) 'Deflated'\n-1F8DD9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F8DDD CRC                   00000000 (0)\n-1F8DE1 Compressed Size       00000000 (0)\n-1F8DE5 Uncompressed Size     00000000 (0)\n-1F8DE9 Filename Length       0025 (37)\n-1F8DEB Extra Length          0000 (0)\n-1F8DED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FD596 Compression Method    0008 (8) 'Deflated'\n+1FD598 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FD59C CRC                   00000000 (0)\n+1FD5A0 Compressed Size       00000000 (0)\n+1FD5A4 Uncompressed Size     00000000 (0)\n+1FD5A8 Filename Length       003B (59)\n+1FD5AA Extra Length          0000 (0)\n+1FD5AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F8DED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FD5AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F8E12 PAYLOAD               XX\n+1FD5E7 PAYLOAD\n \n-1F8E14 DATA DESCRIPTOR       08074B50 (134695760)\n-1F8E18 CRC                   00000000 (0)\n-1F8E1C Compressed Size       00000002 (2)\n-1F8E20 Uncompressed Size     00000000 (0)\n+1FD844 DATA DESCRIPTOR       08074B50 (134695760)\n+1FD848 CRC                   D1906BB3 (3515902899)\n+1FD84C Compressed Size       0000025D (605)\n+1FD850 Uncompressed Size     0000047E (1150)\n \n-1F8E24 LOCAL HEADER #1881    04034B50 (67324752)\n-1F8E28 Extract Zip Spec      14 (20) '2.0'\n-1F8E29 Extract OS            00 (0) 'MS-DOS'\n-1F8E2A General Purpose Flag  0808 (2056)\n+1FD854 LOCAL HEADER #1881    04034B50 (67324752)\n+1FD858 Extract Zip Spec      14 (20) '2.0'\n+1FD859 Extract OS            00 (0) 'MS-DOS'\n+1FD85A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F8E2C Compression Method    0008 (8) 'Deflated'\n-1F8E2E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F8E32 CRC                   00000000 (0)\n-1F8E36 Compressed Size       00000000 (0)\n-1F8E3A Uncompressed Size     00000000 (0)\n-1F8E3E Filename Length       0041 (65)\n-1F8E40 Extra Length          0000 (0)\n-1F8E42 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FD85C Compression Method    0008 (8) 'Deflated'\n+1FD85E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FD862 CRC                   00000000 (0)\n+1FD866 Compressed Size       00000000 (0)\n+1FD86A Uncompressed Size     00000000 (0)\n+1FD86E Filename Length       003C (60)\n+1FD870 Extra Length          0000 (0)\n+1FD872 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F8E42: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FD872: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F8E83 PAYLOAD\n+1FD8AE PAYLOAD\n \n-1F9273 DATA DESCRIPTOR       08074B50 (134695760)\n-1F9277 CRC                   99A066B3 (2577426099)\n-1F927B Compressed Size       000003F0 (1008)\n-1F927F Uncompressed Size     00000A40 (2624)\n+1FDDC1 DATA DESCRIPTOR       08074B50 (134695760)\n+1FDDC5 CRC                   0375CF6B (58052459)\n+1FDDC9 Compressed Size       00000513 (1299)\n+1FDDCD Uncompressed Size     00000E60 (3680)\n \n-1F9283 LOCAL HEADER #1882    04034B50 (67324752)\n-1F9287 Extract Zip Spec      14 (20) '2.0'\n-1F9288 Extract OS            00 (0) 'MS-DOS'\n-1F9289 General Purpose Flag  0808 (2056)\n+1FDDD1 LOCAL HEADER #1882    04034B50 (67324752)\n+1FDDD5 Extract Zip Spec      14 (20) '2.0'\n+1FDDD6 Extract OS            00 (0) 'MS-DOS'\n+1FDDD7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F928B Compression Method    0008 (8) 'Deflated'\n-1F928D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F9291 CRC                   00000000 (0)\n-1F9295 Compressed Size       00000000 (0)\n-1F9299 Uncompressed Size     00000000 (0)\n-1F929D Filename Length       0042 (66)\n-1F929F Extra Length          0000 (0)\n-1F92A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FDDD9 Compression Method    0008 (8) 'Deflated'\n+1FDDDB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FDDDF CRC                   00000000 (0)\n+1FDDE3 Compressed Size       00000000 (0)\n+1FDDE7 Uncompressed Size     00000000 (0)\n+1FDDEB Filename Length       002C (44)\n+1FDDED Extra Length          0000 (0)\n+1FDDEF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F92A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FDDEF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F92E3 PAYLOAD\n+1FDE1B PAYLOAD               XX\n \n-1F97AC DATA DESCRIPTOR       08074B50 (134695760)\n-1F97B0 CRC                   8FC61B83 (2412125059)\n-1F97B4 Compressed Size       000004C9 (1225)\n-1F97B8 Uncompressed Size     00000F15 (3861)\n+1FDE1D DATA DESCRIPTOR       08074B50 (134695760)\n+1FDE21 CRC                   00000000 (0)\n+1FDE25 Compressed Size       00000002 (2)\n+1FDE29 Uncompressed Size     00000000 (0)\n \n-1F97BC LOCAL HEADER #1883    04034B50 (67324752)\n-1F97C0 Extract Zip Spec      14 (20) '2.0'\n-1F97C1 Extract OS            00 (0) 'MS-DOS'\n-1F97C2 General Purpose Flag  0808 (2056)\n+1FDE2D LOCAL HEADER #1883    04034B50 (67324752)\n+1FDE31 Extract Zip Spec      14 (20) '2.0'\n+1FDE32 Extract OS            00 (0) 'MS-DOS'\n+1FDE33 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F97C4 Compression Method    0008 (8) 'Deflated'\n-1F97C6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F97CA CRC                   00000000 (0)\n-1F97CE Compressed Size       00000000 (0)\n-1F97D2 Uncompressed Size     00000000 (0)\n-1F97D6 Filename Length       003F (63)\n-1F97D8 Extra Length          0000 (0)\n-1F97DA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FDE35 Compression Method    0008 (8) 'Deflated'\n+1FDE37 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FDE3B CRC                   00000000 (0)\n+1FDE3F Compressed Size       00000000 (0)\n+1FDE43 Uncompressed Size     00000000 (0)\n+1FDE47 Filename Length       0052 (82)\n+1FDE49 Extra Length          0000 (0)\n+1FDE4B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F97DA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FDE4B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F9819 PAYLOAD\n+1FDE9D PAYLOAD\n \n-1F9CB2 DATA DESCRIPTOR       08074B50 (134695760)\n-1F9CB6 CRC                   C36126A3 (3277924003)\n-1F9CBA Compressed Size       00000499 (1177)\n-1F9CBE Uncompressed Size     00000CF2 (3314)\n+1FE232 DATA DESCRIPTOR       08074B50 (134695760)\n+1FE236 CRC                   D7F68AC0 (3623258816)\n+1FE23A Compressed Size       00000395 (917)\n+1FE23E Uncompressed Size     0000091C (2332)\n \n-1F9CC2 LOCAL HEADER #1884    04034B50 (67324752)\n-1F9CC6 Extract Zip Spec      14 (20) '2.0'\n-1F9CC7 Extract OS            00 (0) 'MS-DOS'\n-1F9CC8 General Purpose Flag  0808 (2056)\n+1FE242 LOCAL HEADER #1884    04034B50 (67324752)\n+1FE246 Extract Zip Spec      14 (20) '2.0'\n+1FE247 Extract OS            00 (0) 'MS-DOS'\n+1FE248 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F9CCA Compression Method    0008 (8) 'Deflated'\n-1F9CCC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F9CD0 CRC                   00000000 (0)\n-1F9CD4 Compressed Size       00000000 (0)\n-1F9CD8 Uncompressed Size     00000000 (0)\n-1F9CDC Filename Length       002D (45)\n-1F9CDE Extra Length          0000 (0)\n-1F9CE0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FE24A Compression Method    0008 (8) 'Deflated'\n+1FE24C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FE250 CRC                   00000000 (0)\n+1FE254 Compressed Size       00000000 (0)\n+1FE258 Uncompressed Size     00000000 (0)\n+1FE25C Filename Length       0047 (71)\n+1FE25E Extra Length          0000 (0)\n+1FE260 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F9CE0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FE260: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F9D0D PAYLOAD               XX\n+1FE2A7 PAYLOAD\n \n-1F9D0F DATA DESCRIPTOR       08074B50 (134695760)\n-1F9D13 CRC                   00000000 (0)\n-1F9D17 Compressed Size       00000002 (2)\n-1F9D1B Uncompressed Size     00000000 (0)\n+1FE4D6 DATA DESCRIPTOR       08074B50 (134695760)\n+1FE4DA CRC                   3D7B6838 (1031497784)\n+1FE4DE Compressed Size       0000022F (559)\n+1FE4E2 Uncompressed Size     000003ED (1005)\n \n-1F9D1F LOCAL HEADER #1885    04034B50 (67324752)\n-1F9D23 Extract Zip Spec      14 (20) '2.0'\n-1F9D24 Extract OS            00 (0) 'MS-DOS'\n-1F9D25 General Purpose Flag  0808 (2056)\n+1FE4E6 LOCAL HEADER #1885    04034B50 (67324752)\n+1FE4EA Extract Zip Spec      14 (20) '2.0'\n+1FE4EB Extract OS            00 (0) 'MS-DOS'\n+1FE4EC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1F9D27 Compression Method    0008 (8) 'Deflated'\n-1F9D29 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1F9D2D CRC                   00000000 (0)\n-1F9D31 Compressed Size       00000000 (0)\n-1F9D35 Uncompressed Size     00000000 (0)\n-1F9D39 Filename Length       0042 (66)\n-1F9D3B Extra Length          0000 (0)\n-1F9D3D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FE4EE Compression Method    0008 (8) 'Deflated'\n+1FE4F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FE4F4 CRC                   00000000 (0)\n+1FE4F8 Compressed Size       00000000 (0)\n+1FE4FC Uncompressed Size     00000000 (0)\n+1FE500 Filename Length       004E (78)\n+1FE502 Extra Length          0000 (0)\n+1FE504 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1F9D3D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FE504: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1F9D7F PAYLOAD\n+1FE552 PAYLOAD\n \n-1FA096 DATA DESCRIPTOR       08074B50 (134695760)\n-1FA09A CRC                   C15189CF (3243346383)\n-1FA09E Compressed Size       00000317 (791)\n-1FA0A2 Uncompressed Size     000006BB (1723)\n+1FE99C DATA DESCRIPTOR       08074B50 (134695760)\n+1FE9A0 CRC                   475F83BC (1197441980)\n+1FE9A4 Compressed Size       0000044A (1098)\n+1FE9A8 Uncompressed Size     00000CBA (3258)\n \n-1FA0A6 LOCAL HEADER #1886    04034B50 (67324752)\n-1FA0AA Extract Zip Spec      14 (20) '2.0'\n-1FA0AB Extract OS            00 (0) 'MS-DOS'\n-1FA0AC General Purpose Flag  0808 (2056)\n+1FE9AC LOCAL HEADER #1886    04034B50 (67324752)\n+1FE9B0 Extract Zip Spec      14 (20) '2.0'\n+1FE9B1 Extract OS            00 (0) 'MS-DOS'\n+1FE9B2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FA0AE Compression Method    0008 (8) 'Deflated'\n-1FA0B0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FA0B4 CRC                   00000000 (0)\n-1FA0B8 Compressed Size       00000000 (0)\n-1FA0BC Uncompressed Size     00000000 (0)\n-1FA0C0 Filename Length       0047 (71)\n-1FA0C2 Extra Length          0000 (0)\n-1FA0C4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FE9B4 Compression Method    0008 (8) 'Deflated'\n+1FE9B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FE9BA CRC                   00000000 (0)\n+1FE9BE Compressed Size       00000000 (0)\n+1FE9C2 Uncompressed Size     00000000 (0)\n+1FE9C6 Filename Length       003C (60)\n+1FE9C8 Extra Length          0000 (0)\n+1FE9CA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FA0C4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FE9CA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FA10B PAYLOAD\n+1FEA06 PAYLOAD\n \n-1FA53E DATA DESCRIPTOR       08074B50 (134695760)\n-1FA542 CRC                   48345DF3 (1211391475)\n-1FA546 Compressed Size       00000433 (1075)\n-1FA54A Uncompressed Size     00000ACD (2765)\n+1FED7B DATA DESCRIPTOR       08074B50 (134695760)\n+1FED7F CRC                   97BCAA4D (2545723981)\n+1FED83 Compressed Size       00000375 (885)\n+1FED87 Uncompressed Size     0000085B (2139)\n \n-1FA54E LOCAL HEADER #1887    04034B50 (67324752)\n-1FA552 Extract Zip Spec      14 (20) '2.0'\n-1FA553 Extract OS            00 (0) 'MS-DOS'\n-1FA554 General Purpose Flag  0808 (2056)\n+1FED8B LOCAL HEADER #1887    04034B50 (67324752)\n+1FED8F Extract Zip Spec      14 (20) '2.0'\n+1FED90 Extract OS            00 (0) 'MS-DOS'\n+1FED91 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FA556 Compression Method    0008 (8) 'Deflated'\n-1FA558 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FA55C CRC                   00000000 (0)\n-1FA560 Compressed Size       00000000 (0)\n-1FA564 Uncompressed Size     00000000 (0)\n-1FA568 Filename Length       0044 (68)\n-1FA56A Extra Length          0000 (0)\n-1FA56C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FED93 Compression Method    0008 (8) 'Deflated'\n+1FED95 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FED99 CRC                   00000000 (0)\n+1FED9D Compressed Size       00000000 (0)\n+1FEDA1 Uncompressed Size     00000000 (0)\n+1FEDA5 Filename Length       0043 (67)\n+1FEDA7 Extra Length          0000 (0)\n+1FEDA9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FA56C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FEDA9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FA5B0 PAYLOAD\n+1FEDEC PAYLOAD\n \n-1FA98B DATA DESCRIPTOR       08074B50 (134695760)\n-1FA98F CRC                   8C150447 (2350187591)\n-1FA993 Compressed Size       000003DB (987)\n-1FA997 Uncompressed Size     000009B8 (2488)\n+1FF203 DATA DESCRIPTOR       08074B50 (134695760)\n+1FF207 CRC                   A0F529B3 (2700421555)\n+1FF20B Compressed Size       00000417 (1047)\n+1FF20F Uncompressed Size     00000CE3 (3299)\n \n-1FA99B LOCAL HEADER #1888    04034B50 (67324752)\n-1FA99F Extract Zip Spec      14 (20) '2.0'\n-1FA9A0 Extract OS            00 (0) 'MS-DOS'\n-1FA9A1 General Purpose Flag  0808 (2056)\n+1FF213 LOCAL HEADER #1888    04034B50 (67324752)\n+1FF217 Extract Zip Spec      14 (20) '2.0'\n+1FF218 Extract OS            00 (0) 'MS-DOS'\n+1FF219 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FA9A3 Compression Method    0008 (8) 'Deflated'\n-1FA9A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FA9A9 CRC                   00000000 (0)\n-1FA9AD Compressed Size       00000000 (0)\n-1FA9B1 Uncompressed Size     00000000 (0)\n-1FA9B5 Filename Length       0041 (65)\n-1FA9B7 Extra Length          0000 (0)\n-1FA9B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FF21B Compression Method    0008 (8) 'Deflated'\n+1FF21D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FF221 CRC                   00000000 (0)\n+1FF225 Compressed Size       00000000 (0)\n+1FF229 Uncompressed Size     00000000 (0)\n+1FF22D Filename Length       004A (74)\n+1FF22F Extra Length          0000 (0)\n+1FF231 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FA9B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FF231: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FA9FA PAYLOAD\n+1FF27B PAYLOAD\n \n-1FAD8B DATA DESCRIPTOR       08074B50 (134695760)\n-1FAD8F CRC                   288B644A (680223818)\n-1FAD93 Compressed Size       00000391 (913)\n-1FAD97 Uncompressed Size     0000079B (1947)\n+1FF6AE DATA DESCRIPTOR       08074B50 (134695760)\n+1FF6B2 CRC                   0978E7E9 (158918633)\n+1FF6B6 Compressed Size       00000433 (1075)\n+1FF6BA Uncompressed Size     00000C93 (3219)\n \n-1FAD9B LOCAL HEADER #1889    04034B50 (67324752)\n-1FAD9F Extract Zip Spec      14 (20) '2.0'\n-1FADA0 Extract OS            00 (0) 'MS-DOS'\n-1FADA1 General Purpose Flag  0808 (2056)\n+1FF6BE LOCAL HEADER #1889    04034B50 (67324752)\n+1FF6C2 Extract Zip Spec      14 (20) '2.0'\n+1FF6C3 Extract OS            00 (0) 'MS-DOS'\n+1FF6C4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FADA3 Compression Method    0008 (8) 'Deflated'\n-1FADA5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FADA9 CRC                   00000000 (0)\n-1FADAD Compressed Size       00000000 (0)\n-1FADB1 Uncompressed Size     00000000 (0)\n-1FADB5 Filename Length       0040 (64)\n-1FADB7 Extra Length          0000 (0)\n-1FADB9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FF6C6 Compression Method    0008 (8) 'Deflated'\n+1FF6C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FF6CC CRC                   00000000 (0)\n+1FF6D0 Compressed Size       00000000 (0)\n+1FF6D4 Uncompressed Size     00000000 (0)\n+1FF6D8 Filename Length       004D (77)\n+1FF6DA Extra Length          0000 (0)\n+1FF6DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FADB9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FF6DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FADF9 PAYLOAD\n+1FF729 PAYLOAD\n \n-1FB28A DATA DESCRIPTOR       08074B50 (134695760)\n-1FB28E CRC                   A6C8F390 (2798187408)\n-1FB292 Compressed Size       00000491 (1169)\n-1FB296 Uncompressed Size     00000C41 (3137)\n+1FFA61 DATA DESCRIPTOR       08074B50 (134695760)\n+1FFA65 CRC                   0929F211 (153743889)\n+1FFA69 Compressed Size       00000338 (824)\n+1FFA6D Uncompressed Size     000008B7 (2231)\n \n-1FB29A LOCAL HEADER #1890    04034B50 (67324752)\n-1FB29E Extract Zip Spec      14 (20) '2.0'\n-1FB29F Extract OS            00 (0) 'MS-DOS'\n-1FB2A0 General Purpose Flag  0808 (2056)\n+1FFA71 LOCAL HEADER #1890    04034B50 (67324752)\n+1FFA75 Extract Zip Spec      14 (20) '2.0'\n+1FFA76 Extract OS            00 (0) 'MS-DOS'\n+1FFA77 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FB2A2 Compression Method    0008 (8) 'Deflated'\n-1FB2A4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FB2A8 CRC                   00000000 (0)\n-1FB2AC Compressed Size       00000000 (0)\n-1FB2B0 Uncompressed Size     00000000 (0)\n-1FB2B4 Filename Length       003D (61)\n-1FB2B6 Extra Length          0000 (0)\n-1FB2B8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FFA79 Compression Method    0008 (8) 'Deflated'\n+1FFA7B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FFA7F CRC                   00000000 (0)\n+1FFA83 Compressed Size       00000000 (0)\n+1FFA87 Uncompressed Size     00000000 (0)\n+1FFA8B Filename Length       0029 (41)\n+1FFA8D Extra Length          0000 (0)\n+1FFA8F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FB2B8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FFA8F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FB2F5 PAYLOAD\n+1FFAB8 PAYLOAD               XX\n \n-1FB5BF DATA DESCRIPTOR       08074B50 (134695760)\n-1FB5C3 CRC                   7350CC44 (1934675012)\n-1FB5C7 Compressed Size       000002CA (714)\n-1FB5CB Uncompressed Size     000005A3 (1443)\n+1FFABA DATA DESCRIPTOR       08074B50 (134695760)\n+1FFABE CRC                   00000000 (0)\n+1FFAC2 Compressed Size       00000002 (2)\n+1FFAC6 Uncompressed Size     00000000 (0)\n \n-1FB5CF LOCAL HEADER #1891    04034B50 (67324752)\n-1FB5D3 Extract Zip Spec      14 (20) '2.0'\n-1FB5D4 Extract OS            00 (0) 'MS-DOS'\n-1FB5D5 General Purpose Flag  0808 (2056)\n+1FFACA LOCAL HEADER #1891    04034B50 (67324752)\n+1FFACE Extract Zip Spec      14 (20) '2.0'\n+1FFACF Extract OS            00 (0) 'MS-DOS'\n+1FFAD0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FB5D7 Compression Method    0008 (8) 'Deflated'\n-1FB5D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FB5DD CRC                   00000000 (0)\n-1FB5E1 Compressed Size       00000000 (0)\n-1FB5E5 Uncompressed Size     00000000 (0)\n-1FB5E9 Filename Length       002B (43)\n-1FB5EB Extra Length          0000 (0)\n-1FB5ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+1FFAD2 Compression Method    0008 (8) 'Deflated'\n+1FFAD4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+1FFAD8 CRC                   00000000 (0)\n+1FFADC Compressed Size       00000000 (0)\n+1FFAE0 Uncompressed Size     00000000 (0)\n+1FFAE4 Filename Length       0044 (68)\n+1FFAE6 Extra Length          0000 (0)\n+1FFAE8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FB5ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x1FFAE8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FB618 PAYLOAD               XX\n+1FFB2C PAYLOAD\n \n-1FB61A DATA DESCRIPTOR       08074B50 (134695760)\n-1FB61E CRC                   00000000 (0)\n-1FB622 Compressed Size       00000002 (2)\n-1FB626 Uncompressed Size     00000000 (0)\n+200D09 DATA DESCRIPTOR       08074B50 (134695760)\n+200D0D CRC                   26D63221 (651571745)\n+200D11 Compressed Size       000011DD (4573)\n+200D15 Uncompressed Size     00005153 (20819)\n \n-1FB62A LOCAL HEADER #1892    04034B50 (67324752)\n-1FB62E Extract Zip Spec      14 (20) '2.0'\n-1FB62F Extract OS            00 (0) 'MS-DOS'\n-1FB630 General Purpose Flag  0808 (2056)\n+200D19 LOCAL HEADER #1892    04034B50 (67324752)\n+200D1D Extract Zip Spec      14 (20) '2.0'\n+200D1E Extract OS            00 (0) 'MS-DOS'\n+200D1F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FB632 Compression Method    0008 (8) 'Deflated'\n-1FB634 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FB638 CRC                   00000000 (0)\n-1FB63C Compressed Size       00000000 (0)\n-1FB640 Uncompressed Size     00000000 (0)\n-1FB644 Filename Length       0045 (69)\n-1FB646 Extra Length          0000 (0)\n-1FB648 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+200D21 Compression Method    0008 (8) 'Deflated'\n+200D23 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+200D27 CRC                   00000000 (0)\n+200D2B Compressed Size       00000000 (0)\n+200D2F Uncompressed Size     00000000 (0)\n+200D33 Filename Length       004B (75)\n+200D35 Extra Length          0000 (0)\n+200D37 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FB648: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x200D37: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FB68D PAYLOAD\n+200D82 PAYLOAD\n \n-1FB932 DATA DESCRIPTOR       08074B50 (134695760)\n-1FB936 CRC                   53726EBB (1400008379)\n-1FB93A Compressed Size       000002A5 (677)\n-1FB93E Uncompressed Size     00000567 (1383)\n+2011B1 DATA DESCRIPTOR       08074B50 (134695760)\n+2011B5 CRC                   16EA47E7 (384452583)\n+2011B9 Compressed Size       0000042F (1071)\n+2011BD Uncompressed Size     00000A81 (2689)\n \n-1FB942 LOCAL HEADER #1893    04034B50 (67324752)\n-1FB946 Extract Zip Spec      14 (20) '2.0'\n-1FB947 Extract OS            00 (0) 'MS-DOS'\n-1FB948 General Purpose Flag  0808 (2056)\n+2011C1 LOCAL HEADER #1893    04034B50 (67324752)\n+2011C5 Extract Zip Spec      14 (20) '2.0'\n+2011C6 Extract OS            00 (0) 'MS-DOS'\n+2011C7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FB94A Compression Method    0008 (8) 'Deflated'\n-1FB94C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FB950 CRC                   00000000 (0)\n-1FB954 Compressed Size       00000000 (0)\n-1FB958 Uncompressed Size     00000000 (0)\n-1FB95C Filename Length       0040 (64)\n-1FB95E Extra Length          0000 (0)\n-1FB960 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2011C9 Compression Method    0008 (8) 'Deflated'\n+2011CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2011CF CRC                   00000000 (0)\n+2011D3 Compressed Size       00000000 (0)\n+2011D7 Uncompressed Size     00000000 (0)\n+2011DB Filename Length       0037 (55)\n+2011DD Extra Length          0000 (0)\n+2011DF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FB960: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2011DF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FB9A0 PAYLOAD\n+201216 PAYLOAD\n \n-1FBDC3 DATA DESCRIPTOR       08074B50 (134695760)\n-1FBDC7 CRC                   C61A5369 (3323614057)\n-1FBDCB Compressed Size       00000423 (1059)\n-1FBDCF Uncompressed Size     00000C49 (3145)\n+2014AA DATA DESCRIPTOR       08074B50 (134695760)\n+2014AE CRC                   82826623 (2189583907)\n+2014B2 Compressed Size       00000294 (660)\n+2014B6 Uncompressed Size     0000052A (1322)\n \n-1FBDD3 LOCAL HEADER #1894    04034B50 (67324752)\n-1FBDD7 Extract Zip Spec      14 (20) '2.0'\n-1FBDD8 Extract OS            00 (0) 'MS-DOS'\n-1FBDD9 General Purpose Flag  0808 (2056)\n+2014BA LOCAL HEADER #1894    04034B50 (67324752)\n+2014BE Extract Zip Spec      14 (20) '2.0'\n+2014BF Extract OS            00 (0) 'MS-DOS'\n+2014C0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FBDDB Compression Method    0008 (8) 'Deflated'\n-1FBDDD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FBDE1 CRC                   00000000 (0)\n-1FBDE5 Compressed Size       00000000 (0)\n-1FBDE9 Uncompressed Size     00000000 (0)\n-1FBDED Filename Length       0041 (65)\n-1FBDEF Extra Length          0000 (0)\n-1FBDF1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2014C2 Compression Method    0008 (8) 'Deflated'\n+2014C4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2014C8 CRC                   00000000 (0)\n+2014CC Compressed Size       00000000 (0)\n+2014D0 Uncompressed Size     00000000 (0)\n+2014D4 Filename Length       001F (31)\n+2014D6 Extra Length          0000 (0)\n+2014D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FBDF1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2014D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FBE32 PAYLOAD\n+2014F7 PAYLOAD               XX\n \n-1FC22D DATA DESCRIPTOR       08074B50 (134695760)\n-1FC231 CRC                   4594C88A (1167378570)\n-1FC235 Compressed Size       000003FB (1019)\n-1FC239 Uncompressed Size     00000BC7 (3015)\n+2014F9 DATA DESCRIPTOR       08074B50 (134695760)\n+2014FD CRC                   00000000 (0)\n+201501 Compressed Size       00000002 (2)\n+201505 Uncompressed Size     00000000 (0)\n \n-1FC23D LOCAL HEADER #1895    04034B50 (67324752)\n-1FC241 Extract Zip Spec      14 (20) '2.0'\n-1FC242 Extract OS            00 (0) 'MS-DOS'\n-1FC243 General Purpose Flag  0808 (2056)\n+201509 LOCAL HEADER #1895    04034B50 (67324752)\n+20150D Extract Zip Spec      14 (20) '2.0'\n+20150E Extract OS            00 (0) 'MS-DOS'\n+20150F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FC245 Compression Method    0008 (8) 'Deflated'\n-1FC247 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FC24B CRC                   00000000 (0)\n-1FC24F Compressed Size       00000000 (0)\n-1FC253 Uncompressed Size     00000000 (0)\n-1FC257 Filename Length       003E (62)\n-1FC259 Extra Length          0000 (0)\n-1FC25B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+201511 Compression Method    0008 (8) 'Deflated'\n+201513 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+201517 CRC                   00000000 (0)\n+20151B Compressed Size       00000000 (0)\n+20151F Uncompressed Size     00000000 (0)\n+201523 Filename Length       004D (77)\n+201525 Extra Length          0000 (0)\n+201527 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FC25B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x201527: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FC299 PAYLOAD\n+201574 PAYLOAD\n \n-1FC8E3 DATA DESCRIPTOR       08074B50 (134695760)\n-1FC8E7 CRC                   06EFE96C (116386156)\n-1FC8EB Compressed Size       0000064A (1610)\n-1FC8EF Uncompressed Size     000014BB (5307)\n+2018E9 DATA DESCRIPTOR       08074B50 (134695760)\n+2018ED CRC                   25BB24C3 (633021635)\n+2018F1 Compressed Size       00000375 (885)\n+2018F5 Uncompressed Size     000009A2 (2466)\n \n-1FC8F3 LOCAL HEADER #1896    04034B50 (67324752)\n-1FC8F7 Extract Zip Spec      14 (20) '2.0'\n-1FC8F8 Extract OS            00 (0) 'MS-DOS'\n-1FC8F9 General Purpose Flag  0808 (2056)\n+2018F9 LOCAL HEADER #1896    04034B50 (67324752)\n+2018FD Extract Zip Spec      14 (20) '2.0'\n+2018FE Extract OS            00 (0) 'MS-DOS'\n+2018FF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FC8FB Compression Method    0008 (8) 'Deflated'\n-1FC8FD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FC901 CRC                   00000000 (0)\n-1FC905 Compressed Size       00000000 (0)\n-1FC909 Uncompressed Size     00000000 (0)\n-1FC90D Filename Length       002A (42)\n-1FC90F Extra Length          0000 (0)\n-1FC911 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+201901 Compression Method    0008 (8) 'Deflated'\n+201903 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+201907 CRC                   00000000 (0)\n+20190B Compressed Size       00000000 (0)\n+20190F Uncompressed Size     00000000 (0)\n+201913 Filename Length       0047 (71)\n+201915 Extra Length          0000 (0)\n+201917 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FC911: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x201917: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FC93B PAYLOAD               XX\n+20195E PAYLOAD\n \n-1FC93D DATA DESCRIPTOR       08074B50 (134695760)\n-1FC941 CRC                   00000000 (0)\n-1FC945 Compressed Size       00000002 (2)\n-1FC949 Uncompressed Size     00000000 (0)\n+2025F7 DATA DESCRIPTOR       08074B50 (134695760)\n+2025FB CRC                   9322DFB2 (2468536242)\n+2025FF Compressed Size       00000C99 (3225)\n+202603 Uncompressed Size     00003EDE (16094)\n \n-1FC94D LOCAL HEADER #1897    04034B50 (67324752)\n-1FC951 Extract Zip Spec      14 (20) '2.0'\n-1FC952 Extract OS            00 (0) 'MS-DOS'\n-1FC953 General Purpose Flag  0808 (2056)\n+202607 LOCAL HEADER #1897    04034B50 (67324752)\n+20260B Extract Zip Spec      14 (20) '2.0'\n+20260C Extract OS            00 (0) 'MS-DOS'\n+20260D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FC955 Compression Method    0008 (8) 'Deflated'\n-1FC957 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FC95B CRC                   00000000 (0)\n-1FC95F Compressed Size       00000000 (0)\n-1FC963 Uncompressed Size     00000000 (0)\n-1FC967 Filename Length       0039 (57)\n-1FC969 Extra Length          0000 (0)\n-1FC96B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20260F Compression Method    0008 (8) 'Deflated'\n+202611 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+202615 CRC                   00000000 (0)\n+202619 Compressed Size       00000000 (0)\n+20261D Uncompressed Size     00000000 (0)\n+202621 Filename Length       0045 (69)\n+202623 Extra Length          0000 (0)\n+202625 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FC96B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x202625: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FC9A4 PAYLOAD\n+20266A PAYLOAD\n \n-1FCEAA DATA DESCRIPTOR       08074B50 (134695760)\n-1FCEAE CRC                   28793399 (679031705)\n-1FCEB2 Compressed Size       00000506 (1286)\n-1FCEB6 Uncompressed Size     00000DA7 (3495)\n+202A6F DATA DESCRIPTOR       08074B50 (134695760)\n+202A73 CRC                   EE2E13F4 (3995997172)\n+202A77 Compressed Size       00000405 (1029)\n+202A7B Uncompressed Size     00000A07 (2567)\n \n-1FCEBA LOCAL HEADER #1898    04034B50 (67324752)\n-1FCEBE Extract Zip Spec      14 (20) '2.0'\n-1FCEBF Extract OS            00 (0) 'MS-DOS'\n-1FCEC0 General Purpose Flag  0808 (2056)\n+202A7F LOCAL HEADER #1898    04034B50 (67324752)\n+202A83 Extract Zip Spec      14 (20) '2.0'\n+202A84 Extract OS            00 (0) 'MS-DOS'\n+202A85 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FCEC2 Compression Method    0008 (8) 'Deflated'\n-1FCEC4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FCEC8 CRC                   00000000 (0)\n-1FCECC Compressed Size       00000000 (0)\n-1FCED0 Uncompressed Size     00000000 (0)\n-1FCED4 Filename Length       0046 (70)\n-1FCED6 Extra Length          0000 (0)\n-1FCED8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+202A87 Compression Method    0008 (8) 'Deflated'\n+202A89 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+202A8D CRC                   00000000 (0)\n+202A91 Compressed Size       00000000 (0)\n+202A95 Uncompressed Size     00000000 (0)\n+202A99 Filename Length       0046 (70)\n+202A9B Extra Length          0000 (0)\n+202A9D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FCED8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x202A9D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FCF1E PAYLOAD\n+202AE3 PAYLOAD\n \n-1FD370 DATA DESCRIPTOR       08074B50 (134695760)\n-1FD374 CRC                   A3334B6D (2738047853)\n-1FD378 Compressed Size       00000452 (1106)\n-1FD37C Uncompressed Size     00000CE7 (3303)\n+202F8E DATA DESCRIPTOR       08074B50 (134695760)\n+202F92 CRC                   9044A5F3 (2420418035)\n+202F96 Compressed Size       000004AB (1195)\n+202F9A Uncompressed Size     00000D59 (3417)\n \n-1FD380 LOCAL HEADER #1899    04034B50 (67324752)\n-1FD384 Extract Zip Spec      14 (20) '2.0'\n-1FD385 Extract OS            00 (0) 'MS-DOS'\n-1FD386 General Purpose Flag  0808 (2056)\n+202F9E LOCAL HEADER #1899    04034B50 (67324752)\n+202FA2 Extract Zip Spec      14 (20) '2.0'\n+202FA3 Extract OS            00 (0) 'MS-DOS'\n+202FA4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FD388 Compression Method    0008 (8) 'Deflated'\n-1FD38A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FD38E CRC                   00000000 (0)\n-1FD392 Compressed Size       00000000 (0)\n-1FD396 Uncompressed Size     00000000 (0)\n-1FD39A Filename Length       0021 (33)\n-1FD39C Extra Length          0000 (0)\n-1FD39E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+202FA6 Compression Method    0008 (8) 'Deflated'\n+202FA8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+202FAC CRC                   00000000 (0)\n+202FB0 Compressed Size       00000000 (0)\n+202FB4 Uncompressed Size     00000000 (0)\n+202FB8 Filename Length       0046 (70)\n+202FBA Extra Length          0000 (0)\n+202FBC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FD39E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x202FBC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FD3BF PAYLOAD               XX\n+203002 PAYLOAD\n \n-1FD3C1 DATA DESCRIPTOR       08074B50 (134695760)\n-1FD3C5 CRC                   00000000 (0)\n-1FD3C9 Compressed Size       00000002 (2)\n-1FD3CD Uncompressed Size     00000000 (0)\n+203307 DATA DESCRIPTOR       08074B50 (134695760)\n+20330B CRC                   15CC2E88 (365702792)\n+20330F Compressed Size       00000305 (773)\n+203313 Uncompressed Size     000007FE (2046)\n \n-1FD3D1 LOCAL HEADER #1900    04034B50 (67324752)\n-1FD3D5 Extract Zip Spec      14 (20) '2.0'\n-1FD3D6 Extract OS            00 (0) 'MS-DOS'\n-1FD3D7 General Purpose Flag  0808 (2056)\n+203317 LOCAL HEADER #1900    04034B50 (67324752)\n+20331B Extract Zip Spec      14 (20) '2.0'\n+20331C Extract OS            00 (0) 'MS-DOS'\n+20331D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FD3D9 Compression Method    0008 (8) 'Deflated'\n-1FD3DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FD3DF CRC                   00000000 (0)\n-1FD3E3 Compressed Size       00000000 (0)\n-1FD3E7 Uncompressed Size     00000000 (0)\n-1FD3EB Filename Length       0034 (52)\n-1FD3ED Extra Length          0000 (0)\n-1FD3EF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20331F Compression Method    0008 (8) 'Deflated'\n+203321 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+203325 CRC                   00000000 (0)\n+203329 Compressed Size       00000000 (0)\n+20332D Uncompressed Size     00000000 (0)\n+203331 Filename Length       0033 (51)\n+203333 Extra Length          0000 (0)\n+203335 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FD3EF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x203335: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FD423 PAYLOAD\n+203368 PAYLOAD\n \n-1FD7F6 DATA DESCRIPTOR       08074B50 (134695760)\n-1FD7FA CRC                   04A20B3B (77728571)\n-1FD7FE Compressed Size       000003D3 (979)\n-1FD802 Uncompressed Size     00000B66 (2918)\n+203B1C DATA DESCRIPTOR       08074B50 (134695760)\n+203B20 CRC                   A00D3EBD (2685222589)\n+203B24 Compressed Size       000007B4 (1972)\n+203B28 Uncompressed Size     00001C52 (7250)\n \n-1FD806 LOCAL HEADER #1901    04034B50 (67324752)\n-1FD80A Extract Zip Spec      14 (20) '2.0'\n-1FD80B Extract OS            00 (0) 'MS-DOS'\n-1FD80C General Purpose Flag  0808 (2056)\n+203B2C LOCAL HEADER #1901    04034B50 (67324752)\n+203B30 Extract Zip Spec      14 (20) '2.0'\n+203B31 Extract OS            00 (0) 'MS-DOS'\n+203B32 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FD80E Compression Method    0008 (8) 'Deflated'\n-1FD810 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FD814 CRC                   00000000 (0)\n-1FD818 Compressed Size       00000000 (0)\n-1FD81C Uncompressed Size     00000000 (0)\n-1FD820 Filename Length       003B (59)\n-1FD822 Extra Length          0000 (0)\n-1FD824 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+203B34 Compression Method    0008 (8) 'Deflated'\n+203B36 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+203B3A CRC                   00000000 (0)\n+203B3E Compressed Size       00000000 (0)\n+203B42 Uncompressed Size     00000000 (0)\n+203B46 Filename Length       0039 (57)\n+203B48 Extra Length          0000 (0)\n+203B4A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FD824: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x203B4A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FD85F PAYLOAD\n+203B83 PAYLOAD\n \n-1FDAB2 DATA DESCRIPTOR       08074B50 (134695760)\n-1FDAB6 CRC                   60C61EB2 (1623596722)\n-1FDABA Compressed Size       00000253 (595)\n-1FDABE Uncompressed Size     00000460 (1120)\n+204076 DATA DESCRIPTOR       08074B50 (134695760)\n+20407A CRC                   69F2CD2A (1777519914)\n+20407E Compressed Size       000004F3 (1267)\n+204082 Uncompressed Size     0000129C (4764)\n \n-1FDAC2 LOCAL HEADER #1902    04034B50 (67324752)\n-1FDAC6 Extract Zip Spec      14 (20) '2.0'\n-1FDAC7 Extract OS            00 (0) 'MS-DOS'\n-1FDAC8 General Purpose Flag  0808 (2056)\n+204086 LOCAL HEADER #1902    04034B50 (67324752)\n+20408A Extract Zip Spec      14 (20) '2.0'\n+20408B Extract OS            00 (0) 'MS-DOS'\n+20408C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FDACA Compression Method    0008 (8) 'Deflated'\n-1FDACC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FDAD0 CRC                   00000000 (0)\n-1FDAD4 Compressed Size       00000000 (0)\n-1FDAD8 Uncompressed Size     00000000 (0)\n-1FDADC Filename Length       003C (60)\n-1FDADE Extra Length          0000 (0)\n-1FDAE0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20408E Compression Method    0008 (8) 'Deflated'\n+204090 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+204094 CRC                   00000000 (0)\n+204098 Compressed Size       00000000 (0)\n+20409C Uncompressed Size     00000000 (0)\n+2040A0 Filename Length       0036 (54)\n+2040A2 Extra Length          0000 (0)\n+2040A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FDAE0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2040A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FDB1C PAYLOAD\n+2040DA PAYLOAD\n \n-1FE023 DATA DESCRIPTOR       08074B50 (134695760)\n-1FE027 CRC                   5AB1BA26 (1521596966)\n-1FE02B Compressed Size       00000507 (1287)\n-1FE02F Uncompressed Size     00000E0A (3594)\n+204792 DATA DESCRIPTOR       08074B50 (134695760)\n+204796 CRC                   3A871853 (981932115)\n+20479A Compressed Size       000006B8 (1720)\n+20479E Uncompressed Size     000018D5 (6357)\n \n-1FE033 LOCAL HEADER #1903    04034B50 (67324752)\n-1FE037 Extract Zip Spec      14 (20) '2.0'\n-1FE038 Extract OS            00 (0) 'MS-DOS'\n-1FE039 General Purpose Flag  0808 (2056)\n+2047A2 LOCAL HEADER #1903    04034B50 (67324752)\n+2047A6 Extract Zip Spec      14 (20) '2.0'\n+2047A7 Extract OS            00 (0) 'MS-DOS'\n+2047A8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FE03B Compression Method    0008 (8) 'Deflated'\n-1FE03D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FE041 CRC                   00000000 (0)\n-1FE045 Compressed Size       00000000 (0)\n-1FE049 Uncompressed Size     00000000 (0)\n-1FE04D Filename Length       002C (44)\n-1FE04F Extra Length          0000 (0)\n-1FE051 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2047AA Compression Method    0008 (8) 'Deflated'\n+2047AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2047B0 CRC                   00000000 (0)\n+2047B4 Compressed Size       00000000 (0)\n+2047B8 Uncompressed Size     00000000 (0)\n+2047BC Filename Length       0037 (55)\n+2047BE Extra Length          0000 (0)\n+2047C0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FE051: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2047C0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FE07D PAYLOAD               XX\n+2047F7 PAYLOAD\n \n-1FE07F DATA DESCRIPTOR       08074B50 (134695760)\n-1FE083 CRC                   00000000 (0)\n-1FE087 Compressed Size       00000002 (2)\n-1FE08B Uncompressed Size     00000000 (0)\n+204C6A DATA DESCRIPTOR       08074B50 (134695760)\n+204C6E CRC                   7BC9467A (2076788346)\n+204C72 Compressed Size       00000473 (1139)\n+204C76 Uncompressed Size     00000CE6 (3302)\n \n-1FE08F LOCAL HEADER #1904    04034B50 (67324752)\n-1FE093 Extract Zip Spec      14 (20) '2.0'\n-1FE094 Extract OS            00 (0) 'MS-DOS'\n-1FE095 General Purpose Flag  0808 (2056)\n+204C7A LOCAL HEADER #1904    04034B50 (67324752)\n+204C7E Extract Zip Spec      14 (20) '2.0'\n+204C7F Extract OS            00 (0) 'MS-DOS'\n+204C80 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FE097 Compression Method    0008 (8) 'Deflated'\n-1FE099 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FE09D CRC                   00000000 (0)\n-1FE0A1 Compressed Size       00000000 (0)\n-1FE0A5 Uncompressed Size     00000000 (0)\n-1FE0A9 Filename Length       0052 (82)\n-1FE0AB Extra Length          0000 (0)\n-1FE0AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+204C82 Compression Method    0008 (8) 'Deflated'\n+204C84 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+204C88 CRC                   00000000 (0)\n+204C8C Compressed Size       00000000 (0)\n+204C90 Uncompressed Size     00000000 (0)\n+204C94 Filename Length       003D (61)\n+204C96 Extra Length          0000 (0)\n+204C98 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FE0AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x204C98: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FE0FF PAYLOAD\n+204CD5 PAYLOAD\n \n-1FE48A DATA DESCRIPTOR       08074B50 (134695760)\n-1FE48E CRC                   ED364E79 (3979759225)\n-1FE492 Compressed Size       0000038B (907)\n-1FE496 Uncompressed Size     000008DD (2269)\n+204F62 DATA DESCRIPTOR       08074B50 (134695760)\n+204F66 CRC                   8442F5C1 (2218980801)\n+204F6A Compressed Size       0000028D (653)\n+204F6E Uncompressed Size     000004E8 (1256)\n \n-1FE49A LOCAL HEADER #1905    04034B50 (67324752)\n-1FE49E Extract Zip Spec      14 (20) '2.0'\n-1FE49F Extract OS            00 (0) 'MS-DOS'\n-1FE4A0 General Purpose Flag  0808 (2056)\n+204F72 LOCAL HEADER #1905    04034B50 (67324752)\n+204F76 Extract Zip Spec      14 (20) '2.0'\n+204F77 Extract OS            00 (0) 'MS-DOS'\n+204F78 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FE4A2 Compression Method    0008 (8) 'Deflated'\n-1FE4A4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FE4A8 CRC                   00000000 (0)\n-1FE4AC Compressed Size       00000000 (0)\n-1FE4B0 Uncompressed Size     00000000 (0)\n-1FE4B4 Filename Length       0047 (71)\n-1FE4B6 Extra Length          0000 (0)\n-1FE4B8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+204F7A Compression Method    0008 (8) 'Deflated'\n+204F7C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+204F80 CRC                   00000000 (0)\n+204F84 Compressed Size       00000000 (0)\n+204F88 Uncompressed Size     00000000 (0)\n+204F8C Filename Length       003F (63)\n+204F8E Extra Length          0000 (0)\n+204F90 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FE4B8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x204F90: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FE4FF PAYLOAD\n+204FCF PAYLOAD\n \n-1FE727 DATA DESCRIPTOR       08074B50 (134695760)\n-1FE72B CRC                   07379C13 (121084947)\n-1FE72F Compressed Size       00000228 (552)\n-1FE733 Uncompressed Size     000003D4 (980)\n+20528F DATA DESCRIPTOR       08074B50 (134695760)\n+205293 CRC                   1B483D0F (457719055)\n+205297 Compressed Size       000002C0 (704)\n+20529B Uncompressed Size     00000667 (1639)\n \n-1FE737 LOCAL HEADER #1906    04034B50 (67324752)\n-1FE73B Extract Zip Spec      14 (20) '2.0'\n-1FE73C Extract OS            00 (0) 'MS-DOS'\n-1FE73D General Purpose Flag  0808 (2056)\n+20529F LOCAL HEADER #1906    04034B50 (67324752)\n+2052A3 Extract Zip Spec      14 (20) '2.0'\n+2052A4 Extract OS            00 (0) 'MS-DOS'\n+2052A5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FE73F Compression Method    0008 (8) 'Deflated'\n-1FE741 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FE745 CRC                   00000000 (0)\n-1FE749 Compressed Size       00000000 (0)\n-1FE74D Uncompressed Size     00000000 (0)\n-1FE751 Filename Length       004E (78)\n-1FE753 Extra Length          0000 (0)\n-1FE755 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2052A7 Compression Method    0008 (8) 'Deflated'\n+2052A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2052AD CRC                   00000000 (0)\n+2052B1 Compressed Size       00000000 (0)\n+2052B5 Uncompressed Size     00000000 (0)\n+2052B9 Filename Length       0025 (37)\n+2052BB Extra Length          0000 (0)\n+2052BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FE755: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2052BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FE7A3 PAYLOAD\n+2052E2 PAYLOAD               XX\n \n-1FEBE3 DATA DESCRIPTOR       08074B50 (134695760)\n-1FEBE7 CRC                   AA1837AB (2853713835)\n-1FEBEB Compressed Size       00000440 (1088)\n-1FEBEF Uncompressed Size     00000C62 (3170)\n+2052E4 DATA DESCRIPTOR       08074B50 (134695760)\n+2052E8 CRC                   00000000 (0)\n+2052EC Compressed Size       00000002 (2)\n+2052F0 Uncompressed Size     00000000 (0)\n \n-1FEBF3 LOCAL HEADER #1907    04034B50 (67324752)\n-1FEBF7 Extract Zip Spec      14 (20) '2.0'\n-1FEBF8 Extract OS            00 (0) 'MS-DOS'\n-1FEBF9 General Purpose Flag  0808 (2056)\n+2052F4 LOCAL HEADER #1907    04034B50 (67324752)\n+2052F8 Extract Zip Spec      14 (20) '2.0'\n+2052F9 Extract OS            00 (0) 'MS-DOS'\n+2052FA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FEBFB Compression Method    0008 (8) 'Deflated'\n-1FEBFD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FEC01 CRC                   00000000 (0)\n-1FEC05 Compressed Size       00000000 (0)\n-1FEC09 Uncompressed Size     00000000 (0)\n-1FEC0D Filename Length       003C (60)\n-1FEC0F Extra Length          0000 (0)\n-1FEC11 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2052FC Compression Method    0008 (8) 'Deflated'\n+2052FE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+205302 CRC                   00000000 (0)\n+205306 Compressed Size       00000000 (0)\n+20530A Uncompressed Size     00000000 (0)\n+20530E Filename Length       0048 (72)\n+205310 Extra Length          0000 (0)\n+205312 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FEC11: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x205312: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FEC4D PAYLOAD\n+20535A PAYLOAD\n \n-1FEFB8 DATA DESCRIPTOR       08074B50 (134695760)\n-1FEFBC CRC                   C4C68375 (3301344117)\n-1FEFC0 Compressed Size       0000036B (875)\n-1FEFC4 Uncompressed Size     0000081D (2077)\n+2057C0 DATA DESCRIPTOR       08074B50 (134695760)\n+2057C4 CRC                   B81EA5D5 (3089016277)\n+2057C8 Compressed Size       00000466 (1126)\n+2057CC Uncompressed Size     00000B91 (2961)\n \n-1FEFC8 LOCAL HEADER #1908    04034B50 (67324752)\n-1FEFCC Extract Zip Spec      14 (20) '2.0'\n-1FEFCD Extract OS            00 (0) 'MS-DOS'\n-1FEFCE General Purpose Flag  0808 (2056)\n+2057D0 LOCAL HEADER #1908    04034B50 (67324752)\n+2057D4 Extract Zip Spec      14 (20) '2.0'\n+2057D5 Extract OS            00 (0) 'MS-DOS'\n+2057D6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FEFD0 Compression Method    0008 (8) 'Deflated'\n-1FEFD2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FEFD6 CRC                   00000000 (0)\n-1FEFDA Compressed Size       00000000 (0)\n-1FEFDE Uncompressed Size     00000000 (0)\n-1FEFE2 Filename Length       0043 (67)\n-1FEFE4 Extra Length          0000 (0)\n-1FEFE6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2057D8 Compression Method    0008 (8) 'Deflated'\n+2057DA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2057DE CRC                   00000000 (0)\n+2057E2 Compressed Size       00000000 (0)\n+2057E6 Uncompressed Size     00000000 (0)\n+2057EA Filename Length       0045 (69)\n+2057EC Extra Length          0000 (0)\n+2057EE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FEFE6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2057EE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FF029 PAYLOAD\n+205833 PAYLOAD\n \n-1FF434 DATA DESCRIPTOR       08074B50 (134695760)\n-1FF438 CRC                   F9021EF9 (4177665785)\n-1FF43C Compressed Size       0000040B (1035)\n-1FF440 Uncompressed Size     00000C7A (3194)\n+205AF0 DATA DESCRIPTOR       08074B50 (134695760)\n+205AF4 CRC                   EF780E16 (4017622550)\n+205AF8 Compressed Size       000002BD (701)\n+205AFC Uncompressed Size     00000562 (1378)\n \n-1FF444 LOCAL HEADER #1909    04034B50 (67324752)\n-1FF448 Extract Zip Spec      14 (20) '2.0'\n-1FF449 Extract OS            00 (0) 'MS-DOS'\n-1FF44A General Purpose Flag  0808 (2056)\n+205B00 LOCAL HEADER #1909    04034B50 (67324752)\n+205B04 Extract Zip Spec      14 (20) '2.0'\n+205B05 Extract OS            00 (0) 'MS-DOS'\n+205B06 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FF44C Compression Method    0008 (8) 'Deflated'\n-1FF44E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FF452 CRC                   00000000 (0)\n-1FF456 Compressed Size       00000000 (0)\n-1FF45A Uncompressed Size     00000000 (0)\n-1FF45E Filename Length       004A (74)\n-1FF460 Extra Length          0000 (0)\n-1FF462 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+205B08 Compression Method    0008 (8) 'Deflated'\n+205B0A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+205B0E CRC                   00000000 (0)\n+205B12 Compressed Size       00000000 (0)\n+205B16 Uncompressed Size     00000000 (0)\n+205B1A Filename Length       0047 (71)\n+205B1C Extra Length          0000 (0)\n+205B1E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FF462: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x205B1E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FF4AC PAYLOAD\n+205B65 PAYLOAD\n \n-1FF8D7 DATA DESCRIPTOR       08074B50 (134695760)\n-1FF8DB CRC                   D8F5C90C (3639986444)\n-1FF8DF Compressed Size       0000042B (1067)\n-1FF8E3 Uncompressed Size     00000C3E (3134)\n+205EF6 DATA DESCRIPTOR       08074B50 (134695760)\n+205EFA CRC                   CC678E8E (3429338766)\n+205EFE Compressed Size       00000391 (913)\n+205F02 Uncompressed Size     000008A3 (2211)\n \n-1FF8E7 LOCAL HEADER #1910    04034B50 (67324752)\n-1FF8EB Extract Zip Spec      14 (20) '2.0'\n-1FF8EC Extract OS            00 (0) 'MS-DOS'\n-1FF8ED General Purpose Flag  0808 (2056)\n+205F06 LOCAL HEADER #1910    04034B50 (67324752)\n+205F0A Extract Zip Spec      14 (20) '2.0'\n+205F0B Extract OS            00 (0) 'MS-DOS'\n+205F0C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FF8EF Compression Method    0008 (8) 'Deflated'\n-1FF8F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FF8F5 CRC                   00000000 (0)\n-1FF8F9 Compressed Size       00000000 (0)\n-1FF8FD Uncompressed Size     00000000 (0)\n-1FF901 Filename Length       004D (77)\n-1FF903 Extra Length          0000 (0)\n-1FF905 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+205F0E Compression Method    0008 (8) 'Deflated'\n+205F10 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+205F14 CRC                   00000000 (0)\n+205F18 Compressed Size       00000000 (0)\n+205F1C Uncompressed Size     00000000 (0)\n+205F20 Filename Length       004A (74)\n+205F22 Extra Length          0000 (0)\n+205F24 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FF905: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x205F24: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FF952 PAYLOAD\n+205F6E PAYLOAD\n \n-1FFC81 DATA DESCRIPTOR       08074B50 (134695760)\n-1FFC85 CRC                   F7E9DD6B (4159298923)\n-1FFC89 Compressed Size       0000032F (815)\n-1FFC8D Uncompressed Size     00000871 (2161)\n+206431 DATA DESCRIPTOR       08074B50 (134695760)\n+206435 CRC                   5E735CAA (1584618666)\n+206439 Compressed Size       000004C3 (1219)\n+20643D Uncompressed Size     00001249 (4681)\n \n-1FFC91 LOCAL HEADER #1911    04034B50 (67324752)\n-1FFC95 Extract Zip Spec      14 (20) '2.0'\n-1FFC96 Extract OS            00 (0) 'MS-DOS'\n-1FFC97 General Purpose Flag  0808 (2056)\n+206441 LOCAL HEADER #1911    04034B50 (67324752)\n+206445 Extract Zip Spec      14 (20) '2.0'\n+206446 Extract OS            00 (0) 'MS-DOS'\n+206447 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FFC99 Compression Method    0008 (8) 'Deflated'\n-1FFC9B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FFC9F CRC                   00000000 (0)\n-1FFCA3 Compressed Size       00000000 (0)\n-1FFCA7 Uncompressed Size     00000000 (0)\n-1FFCAB Filename Length       0029 (41)\n-1FFCAD Extra Length          0000 (0)\n-1FFCAF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+206449 Compression Method    0008 (8) 'Deflated'\n+20644B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20644F CRC                   00000000 (0)\n+206453 Compressed Size       00000000 (0)\n+206457 Uncompressed Size     00000000 (0)\n+20645B Filename Length       0047 (71)\n+20645D Extra Length          0000 (0)\n+20645F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FFCAF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20645F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FFCD8 PAYLOAD               XX\n+2064A6 PAYLOAD\n \n-1FFCDA DATA DESCRIPTOR       08074B50 (134695760)\n-1FFCDE CRC                   00000000 (0)\n-1FFCE2 Compressed Size       00000002 (2)\n-1FFCE6 Uncompressed Size     00000000 (0)\n+206766 DATA DESCRIPTOR       08074B50 (134695760)\n+20676A CRC                   F08C4805 (4035725317)\n+20676E Compressed Size       000002C0 (704)\n+206772 Uncompressed Size     0000056A (1386)\n \n-1FFCEA LOCAL HEADER #1912    04034B50 (67324752)\n-1FFCEE Extract Zip Spec      14 (20) '2.0'\n-1FFCEF Extract OS            00 (0) 'MS-DOS'\n-1FFCF0 General Purpose Flag  0808 (2056)\n+206776 LOCAL HEADER #1912    04034B50 (67324752)\n+20677A Extract Zip Spec      14 (20) '2.0'\n+20677B Extract OS            00 (0) 'MS-DOS'\n+20677C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-1FFCF2 Compression Method    0008 (8) 'Deflated'\n-1FFCF4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1FFCF8 CRC                   00000000 (0)\n-1FFCFC Compressed Size       00000000 (0)\n-1FFD00 Uncompressed Size     00000000 (0)\n-1FFD04 Filename Length       0044 (68)\n-1FFD06 Extra Length          0000 (0)\n-1FFD08 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20677E Compression Method    0008 (8) 'Deflated'\n+206780 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+206784 CRC                   00000000 (0)\n+206788 Compressed Size       00000000 (0)\n+20678C Uncompressed Size     00000000 (0)\n+206790 Filename Length       004B (75)\n+206792 Extra Length          0000 (0)\n+206794 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x1FFD08: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x206794: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-1FFD4C PAYLOAD\n+2067DF PAYLOAD\n \n-200F12 DATA DESCRIPTOR       08074B50 (134695760)\n-200F16 CRC                   8DD7FA96 (2379741846)\n-200F1A Compressed Size       000011C6 (4550)\n-200F1E Uncompressed Size     00004F7F (20351)\n+206AE9 DATA DESCRIPTOR       08074B50 (134695760)\n+206AED CRC                   EACCF2B1 (3939300017)\n+206AF1 Compressed Size       0000030A (778)\n+206AF5 Uncompressed Size     00000704 (1796)\n \n-200F22 LOCAL HEADER #1913    04034B50 (67324752)\n-200F26 Extract Zip Spec      14 (20) '2.0'\n-200F27 Extract OS            00 (0) 'MS-DOS'\n-200F28 General Purpose Flag  0808 (2056)\n+206AF9 LOCAL HEADER #1913    04034B50 (67324752)\n+206AFD Extract Zip Spec      14 (20) '2.0'\n+206AFE Extract OS            00 (0) 'MS-DOS'\n+206AFF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-200F2A Compression Method    0008 (8) 'Deflated'\n-200F2C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-200F30 CRC                   00000000 (0)\n-200F34 Compressed Size       00000000 (0)\n-200F38 Uncompressed Size     00000000 (0)\n-200F3C Filename Length       004B (75)\n-200F3E Extra Length          0000 (0)\n-200F40 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+206B01 Compression Method    0008 (8) 'Deflated'\n+206B03 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+206B07 CRC                   00000000 (0)\n+206B0B Compressed Size       00000000 (0)\n+206B0F Uncompressed Size     00000000 (0)\n+206B13 Filename Length       0046 (70)\n+206B15 Extra Length          0000 (0)\n+206B17 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x200F40: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x206B17: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-200F8B PAYLOAD\n+206B5D PAYLOAD\n \n-2013B2 DATA DESCRIPTOR       08074B50 (134695760)\n-2013B6 CRC                   C31A43AC (3273278380)\n-2013BA Compressed Size       00000427 (1063)\n-2013BE Uncompressed Size     00000A43 (2627)\n+206E1D DATA DESCRIPTOR       08074B50 (134695760)\n+206E21 CRC                   69ADD8AE (1773000878)\n+206E25 Compressed Size       000002C0 (704)\n+206E29 Uncompressed Size     00000566 (1382)\n \n-2013C2 LOCAL HEADER #1914    04034B50 (67324752)\n-2013C6 Extract Zip Spec      14 (20) '2.0'\n-2013C7 Extract OS            00 (0) 'MS-DOS'\n-2013C8 General Purpose Flag  0808 (2056)\n+206E2D LOCAL HEADER #1914    04034B50 (67324752)\n+206E31 Extract Zip Spec      14 (20) '2.0'\n+206E32 Extract OS            00 (0) 'MS-DOS'\n+206E33 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2013CA Compression Method    0008 (8) 'Deflated'\n-2013CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2013D0 CRC                   00000000 (0)\n-2013D4 Compressed Size       00000000 (0)\n-2013D8 Uncompressed Size     00000000 (0)\n-2013DC Filename Length       0037 (55)\n-2013DE Extra Length          0000 (0)\n-2013E0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+206E35 Compression Method    0008 (8) 'Deflated'\n+206E37 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+206E3B CRC                   00000000 (0)\n+206E3F Compressed Size       00000000 (0)\n+206E43 Uncompressed Size     00000000 (0)\n+206E47 Filename Length       0029 (41)\n+206E49 Extra Length          0000 (0)\n+206E4B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2013E0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x206E4B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-201417 PAYLOAD\n+206E74 PAYLOAD               XX\n \n-2016A2 DATA DESCRIPTOR       08074B50 (134695760)\n-2016A6 CRC                   4CCC6F49 (1288466249)\n-2016AA Compressed Size       0000028B (651)\n-2016AE Uncompressed Size     00000506 (1286)\n+206E76 DATA DESCRIPTOR       08074B50 (134695760)\n+206E7A CRC                   00000000 (0)\n+206E7E Compressed Size       00000002 (2)\n+206E82 Uncompressed Size     00000000 (0)\n \n-2016B2 LOCAL HEADER #1915    04034B50 (67324752)\n-2016B6 Extract Zip Spec      14 (20) '2.0'\n-2016B7 Extract OS            00 (0) 'MS-DOS'\n-2016B8 General Purpose Flag  0808 (2056)\n+206E86 LOCAL HEADER #1915    04034B50 (67324752)\n+206E8A Extract Zip Spec      14 (20) '2.0'\n+206E8B Extract OS            00 (0) 'MS-DOS'\n+206E8C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2016BA Compression Method    0008 (8) 'Deflated'\n-2016BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2016C0 CRC                   00000000 (0)\n-2016C4 Compressed Size       00000000 (0)\n-2016C8 Uncompressed Size     00000000 (0)\n-2016CC Filename Length       001F (31)\n-2016CE Extra Length          0000 (0)\n-2016D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+206E8E Compression Method    0008 (8) 'Deflated'\n+206E90 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+206E94 CRC                   00000000 (0)\n+206E98 Compressed Size       00000000 (0)\n+206E9C Uncompressed Size     00000000 (0)\n+206EA0 Filename Length       0059 (89)\n+206EA2 Extra Length          0000 (0)\n+206EA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2016D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x206EA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2016EF PAYLOAD               XX\n+206EFD PAYLOAD\n \n-2016F1 DATA DESCRIPTOR       08074B50 (134695760)\n-2016F5 CRC                   00000000 (0)\n-2016F9 Compressed Size       00000002 (2)\n-2016FD Uncompressed Size     00000000 (0)\n+207305 DATA DESCRIPTOR       08074B50 (134695760)\n+207309 CRC                   2470BA0F (611367439)\n+20730D Compressed Size       00000408 (1032)\n+207311 Uncompressed Size     00000B77 (2935)\n \n-201701 LOCAL HEADER #1916    04034B50 (67324752)\n-201705 Extract Zip Spec      14 (20) '2.0'\n-201706 Extract OS            00 (0) 'MS-DOS'\n-201707 General Purpose Flag  0808 (2056)\n+207315 LOCAL HEADER #1916    04034B50 (67324752)\n+207319 Extract Zip Spec      14 (20) '2.0'\n+20731A Extract OS            00 (0) 'MS-DOS'\n+20731B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-201709 Compression Method    0008 (8) 'Deflated'\n-20170B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20170F CRC                   00000000 (0)\n-201713 Compressed Size       00000000 (0)\n-201717 Uncompressed Size     00000000 (0)\n-20171B Filename Length       004D (77)\n-20171D Extra Length          0000 (0)\n-20171F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20731D Compression Method    0008 (8) 'Deflated'\n+20731F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+207323 CRC                   00000000 (0)\n+207327 Compressed Size       00000000 (0)\n+20732B Uncompressed Size     00000000 (0)\n+20732F Filename Length       004D (77)\n+207331 Extra Length          0000 (0)\n+207333 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20171F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x207333: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20176C PAYLOAD\n+207380 PAYLOAD\n \n-201AD8 DATA DESCRIPTOR       08074B50 (134695760)\n-201ADC CRC                   B342E8EC (3007506668)\n-201AE0 Compressed Size       0000036C (876)\n-201AE4 Uncompressed Size     0000096F (2415)\n+2076C7 DATA DESCRIPTOR       08074B50 (134695760)\n+2076CB CRC                   F02EA49E (4029588638)\n+2076CF Compressed Size       00000347 (839)\n+2076D3 Uncompressed Size     00000730 (1840)\n \n-201AE8 LOCAL HEADER #1917    04034B50 (67324752)\n-201AEC Extract Zip Spec      14 (20) '2.0'\n-201AED Extract OS            00 (0) 'MS-DOS'\n-201AEE General Purpose Flag  0808 (2056)\n+2076D7 LOCAL HEADER #1917    04034B50 (67324752)\n+2076DB Extract Zip Spec      14 (20) '2.0'\n+2076DC Extract OS            00 (0) 'MS-DOS'\n+2076DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-201AF0 Compression Method    0008 (8) 'Deflated'\n-201AF2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-201AF6 CRC                   00000000 (0)\n-201AFA Compressed Size       00000000 (0)\n-201AFE Uncompressed Size     00000000 (0)\n-201B02 Filename Length       0047 (71)\n-201B04 Extra Length          0000 (0)\n-201B06 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2076DF Compression Method    0008 (8) 'Deflated'\n+2076E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2076E5 CRC                   00000000 (0)\n+2076E9 Compressed Size       00000000 (0)\n+2076ED Uncompressed Size     00000000 (0)\n+2076F1 Filename Length       004C (76)\n+2076F3 Extra Length          0000 (0)\n+2076F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x201B06: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2076F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-201B4D PAYLOAD\n+207741 PAYLOAD\n \n-2027D0 DATA DESCRIPTOR       08074B50 (134695760)\n-2027D4 CRC                   CAD52129 (3402965289)\n-2027D8 Compressed Size       00000C83 (3203)\n-2027DC Uncompressed Size     00003D87 (15751)\n+207A87 DATA DESCRIPTOR       08074B50 (134695760)\n+207A8B CRC                   91BA4E47 (2444906055)\n+207A8F Compressed Size       00000346 (838)\n+207A93 Uncompressed Size     0000072B (1835)\n \n-2027E0 LOCAL HEADER #1918    04034B50 (67324752)\n-2027E4 Extract Zip Spec      14 (20) '2.0'\n-2027E5 Extract OS            00 (0) 'MS-DOS'\n-2027E6 General Purpose Flag  0808 (2056)\n+207A97 LOCAL HEADER #1918    04034B50 (67324752)\n+207A9B Extract Zip Spec      14 (20) '2.0'\n+207A9C Extract OS            00 (0) 'MS-DOS'\n+207A9D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2027E8 Compression Method    0008 (8) 'Deflated'\n-2027EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2027EE CRC                   00000000 (0)\n-2027F2 Compressed Size       00000000 (0)\n-2027F6 Uncompressed Size     00000000 (0)\n-2027FA Filename Length       0045 (69)\n-2027FC Extra Length          0000 (0)\n-2027FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+207A9F Compression Method    0008 (8) 'Deflated'\n+207AA1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+207AA5 CRC                   00000000 (0)\n+207AA9 Compressed Size       00000000 (0)\n+207AAD Uncompressed Size     00000000 (0)\n+207AB1 Filename Length       0052 (82)\n+207AB3 Extra Length          0000 (0)\n+207AB5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2027FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x207AB5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-202843 PAYLOAD\n+207B07 PAYLOAD\n \n-202C3D DATA DESCRIPTOR       08074B50 (134695760)\n-202C41 CRC                   47F26503 (1207067907)\n-202C45 Compressed Size       000003FA (1018)\n-202C49 Uncompressed Size     000009C5 (2501)\n+20820C DATA DESCRIPTOR       08074B50 (134695760)\n+208210 CRC                   594A4504 (1498039556)\n+208214 Compressed Size       00000705 (1797)\n+208218 Uncompressed Size     000018FD (6397)\n \n-202C4D LOCAL HEADER #1919    04034B50 (67324752)\n-202C51 Extract Zip Spec      14 (20) '2.0'\n-202C52 Extract OS            00 (0) 'MS-DOS'\n-202C53 General Purpose Flag  0808 (2056)\n+20821C LOCAL HEADER #1919    04034B50 (67324752)\n+208220 Extract Zip Spec      14 (20) '2.0'\n+208221 Extract OS            00 (0) 'MS-DOS'\n+208222 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-202C55 Compression Method    0008 (8) 'Deflated'\n-202C57 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-202C5B CRC                   00000000 (0)\n-202C5F Compressed Size       00000000 (0)\n-202C63 Uncompressed Size     00000000 (0)\n-202C67 Filename Length       0046 (70)\n-202C69 Extra Length          0000 (0)\n-202C6B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+208224 Compression Method    0008 (8) 'Deflated'\n+208226 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20822A CRC                   00000000 (0)\n+20822E Compressed Size       00000000 (0)\n+208232 Uncompressed Size     00000000 (0)\n+208236 Filename Length       0020 (32)\n+208238 Extra Length          0000 (0)\n+20823A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x202C6B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20823A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-202CB1 PAYLOAD\n+20825A PAYLOAD               XX\n \n-203152 DATA DESCRIPTOR       08074B50 (134695760)\n-203156 CRC                   19F0D91C (435214620)\n-20315A Compressed Size       000004A1 (1185)\n-20315E Uncompressed Size     00000D07 (3335)\n+20825C DATA DESCRIPTOR       08074B50 (134695760)\n+208260 CRC                   00000000 (0)\n+208264 Compressed Size       00000002 (2)\n+208268 Uncompressed Size     00000000 (0)\n \n-203162 LOCAL HEADER #1920    04034B50 (67324752)\n-203166 Extract Zip Spec      14 (20) '2.0'\n-203167 Extract OS            00 (0) 'MS-DOS'\n-203168 General Purpose Flag  0808 (2056)\n+20826C LOCAL HEADER #1920    04034B50 (67324752)\n+208270 Extract Zip Spec      14 (20) '2.0'\n+208271 Extract OS            00 (0) 'MS-DOS'\n+208272 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20316A Compression Method    0008 (8) 'Deflated'\n-20316C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-203170 CRC                   00000000 (0)\n-203174 Compressed Size       00000000 (0)\n-203178 Uncompressed Size     00000000 (0)\n-20317C Filename Length       0046 (70)\n-20317E Extra Length          0000 (0)\n-203180 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+208274 Compression Method    0008 (8) 'Deflated'\n+208276 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20827A CRC                   00000000 (0)\n+20827E Compressed Size       00000000 (0)\n+208282 Uncompressed Size     00000000 (0)\n+208286 Filename Length       004C (76)\n+208288 Extra Length          0000 (0)\n+20828A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x203180: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20828A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2031C6 PAYLOAD\n+2082D6 PAYLOAD\n \n-2034C2 DATA DESCRIPTOR       08074B50 (134695760)\n-2034C6 CRC                   7E8AFFB4 (2123038644)\n-2034CA Compressed Size       000002FC (764)\n-2034CE Uncompressed Size     000007C3 (1987)\n+208864 DATA DESCRIPTOR       08074B50 (134695760)\n+208868 CRC                   FF3DB830 (4282234928)\n+20886C Compressed Size       0000058E (1422)\n+208870 Uncompressed Size     000010CE (4302)\n \n-2034D2 LOCAL HEADER #1921    04034B50 (67324752)\n-2034D6 Extract Zip Spec      14 (20) '2.0'\n-2034D7 Extract OS            00 (0) 'MS-DOS'\n-2034D8 General Purpose Flag  0808 (2056)\n+208874 LOCAL HEADER #1921    04034B50 (67324752)\n+208878 Extract Zip Spec      14 (20) '2.0'\n+208879 Extract OS            00 (0) 'MS-DOS'\n+20887A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2034DA Compression Method    0008 (8) 'Deflated'\n-2034DC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2034E0 CRC                   00000000 (0)\n-2034E4 Compressed Size       00000000 (0)\n-2034E8 Uncompressed Size     00000000 (0)\n-2034EC Filename Length       0033 (51)\n-2034EE Extra Length          0000 (0)\n-2034F0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20887C Compression Method    0008 (8) 'Deflated'\n+20887E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+208882 CRC                   00000000 (0)\n+208886 Compressed Size       00000000 (0)\n+20888A Uncompressed Size     00000000 (0)\n+20888E Filename Length       0046 (70)\n+208890 Extra Length          0000 (0)\n+208892 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2034F0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x208892: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-203523 PAYLOAD\n+2088D8 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-203CC3 DATA DESCRIPTOR       08074B50 (134695760)\n-203CC7 CRC                   BE623F70 (3194109808)\n-203CCB Compressed Size       000007A0 (1952)\n-203CCF Uncompressed Size     00001B70 (7024)\n+20890D DATA DESCRIPTOR       08074B50 (134695760)\n+208911 CRC                   ACE74F1F (2900840223)\n+208915 Compressed Size       00000035 (53)\n+208919 Uncompressed Size     0000003D (61)\n \n-203CD3 LOCAL HEADER #1922    04034B50 (67324752)\n-203CD7 Extract Zip Spec      14 (20) '2.0'\n-203CD8 Extract OS            00 (0) 'MS-DOS'\n-203CD9 General Purpose Flag  0808 (2056)\n+20891D LOCAL HEADER #1922    04034B50 (67324752)\n+208921 Extract Zip Spec      14 (20) '2.0'\n+208922 Extract OS            00 (0) 'MS-DOS'\n+208923 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-203CDB Compression Method    0008 (8) 'Deflated'\n-203CDD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-203CE1 CRC                   00000000 (0)\n-203CE5 Compressed Size       00000000 (0)\n-203CE9 Uncompressed Size     00000000 (0)\n-203CED Filename Length       0039 (57)\n-203CEF Extra Length          0000 (0)\n-203CF1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+208925 Compression Method    0008 (8) 'Deflated'\n+208927 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20892B CRC                   00000000 (0)\n+20892F Compressed Size       00000000 (0)\n+208933 Uncompressed Size     00000000 (0)\n+208937 Filename Length       0033 (51)\n+208939 Extra Length          0000 (0)\n+20893B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x203CF1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20893B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-203D2A PAYLOAD\n+20896E PAYLOAD               XX\n \n-204211 DATA DESCRIPTOR       08074B50 (134695760)\n-204215 CRC                   C31D4A4B (3273476683)\n-204219 Compressed Size       000004E7 (1255)\n-20421D Uncompressed Size     0000120B (4619)\n+208970 DATA DESCRIPTOR       08074B50 (134695760)\n+208974 CRC                   00000000 (0)\n+208978 Compressed Size       00000002 (2)\n+20897C Uncompressed Size     00000000 (0)\n \n-204221 LOCAL HEADER #1923    04034B50 (67324752)\n-204225 Extract Zip Spec      14 (20) '2.0'\n-204226 Extract OS            00 (0) 'MS-DOS'\n-204227 General Purpose Flag  0808 (2056)\n+208980 LOCAL HEADER #1923    04034B50 (67324752)\n+208984 Extract Zip Spec      14 (20) '2.0'\n+208985 Extract OS            00 (0) 'MS-DOS'\n+208986 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-204229 Compression Method    0008 (8) 'Deflated'\n-20422B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20422F CRC                   00000000 (0)\n-204233 Compressed Size       00000000 (0)\n-204237 Uncompressed Size     00000000 (0)\n-20423B Filename Length       0036 (54)\n-20423D Extra Length          0000 (0)\n-20423F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+208988 Compression Method    0008 (8) 'Deflated'\n+20898A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20898E CRC                   00000000 (0)\n+208992 Compressed Size       00000000 (0)\n+208996 Uncompressed Size     00000000 (0)\n+20899A Filename Length       003A (58)\n+20899C Extra Length          0000 (0)\n+20899E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20423F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20899E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-204275 PAYLOAD\n+2089D8 PAYLOAD\n \n-20491C DATA DESCRIPTOR       08074B50 (134695760)\n-204920 CRC                   B4E1FAB5 (3034708661)\n-204924 Compressed Size       000006A7 (1703)\n-204928 Uncompressed Size     0000180E (6158)\n+208DA0 DATA DESCRIPTOR       08074B50 (134695760)\n+208DA4 CRC                   4FF02D0F (1341140239)\n+208DA8 Compressed Size       000003C8 (968)\n+208DAC Uncompressed Size     00000BA1 (2977)\n \n-20492C LOCAL HEADER #1924    04034B50 (67324752)\n-204930 Extract Zip Spec      14 (20) '2.0'\n-204931 Extract OS            00 (0) 'MS-DOS'\n-204932 General Purpose Flag  0808 (2056)\n+208DB0 LOCAL HEADER #1924    04034B50 (67324752)\n+208DB4 Extract Zip Spec      14 (20) '2.0'\n+208DB5 Extract OS            00 (0) 'MS-DOS'\n+208DB6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-204934 Compression Method    0008 (8) 'Deflated'\n-204936 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20493A CRC                   00000000 (0)\n-20493E Compressed Size       00000000 (0)\n-204942 Uncompressed Size     00000000 (0)\n-204946 Filename Length       0037 (55)\n-204948 Extra Length          0000 (0)\n-20494A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+208DB8 Compression Method    0008 (8) 'Deflated'\n+208DBA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+208DBE CRC                   00000000 (0)\n+208DC2 Compressed Size       00000000 (0)\n+208DC6 Uncompressed Size     00000000 (0)\n+208DCA Filename Length       0041 (65)\n+208DCC Extra Length          0000 (0)\n+208DCE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20494A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x208DCE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-204981 PAYLOAD\n+208E0F PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-204DE9 DATA DESCRIPTOR       08074B50 (134695760)\n-204DED CRC                   5668569D (1449678493)\n-204DF1 Compressed Size       00000468 (1128)\n-204DF5 Uncompressed Size     00000C7B (3195)\n+208E56 DATA DESCRIPTOR       08074B50 (134695760)\n+208E5A CRC                   EC609363 (3965752163)\n+208E5E Compressed Size       00000047 (71)\n+208E62 Uncompressed Size     00000049 (73)\n \n-204DF9 LOCAL HEADER #1925    04034B50 (67324752)\n-204DFD Extract Zip Spec      14 (20) '2.0'\n-204DFE Extract OS            00 (0) 'MS-DOS'\n-204DFF General Purpose Flag  0808 (2056)\n+208E66 LOCAL HEADER #1925    04034B50 (67324752)\n+208E6A Extract Zip Spec      14 (20) '2.0'\n+208E6B Extract OS            00 (0) 'MS-DOS'\n+208E6C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-204E01 Compression Method    0008 (8) 'Deflated'\n-204E03 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-204E07 CRC                   00000000 (0)\n-204E0B Compressed Size       00000000 (0)\n-204E0F Uncompressed Size     00000000 (0)\n-204E13 Filename Length       003D (61)\n-204E15 Extra Length          0000 (0)\n-204E17 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+208E6E Compression Method    0008 (8) 'Deflated'\n+208E70 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+208E74 CRC                   00000000 (0)\n+208E78 Compressed Size       00000000 (0)\n+208E7C Uncompressed Size     00000000 (0)\n+208E80 Filename Length       002A (42)\n+208E82 Extra Length          0000 (0)\n+208E84 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x204E17: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x208E84: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-204E54 PAYLOAD\n+208EAE PAYLOAD               XX\n \n-2050D8 DATA DESCRIPTOR       08074B50 (134695760)\n-2050DC CRC                   EA525DAF (3931266479)\n-2050E0 Compressed Size       00000284 (644)\n-2050E4 Uncompressed Size     000004C1 (1217)\n+208EB0 DATA DESCRIPTOR       08074B50 (134695760)\n+208EB4 CRC                   00000000 (0)\n+208EB8 Compressed Size       00000002 (2)\n+208EBC Uncompressed Size     00000000 (0)\n \n-2050E8 LOCAL HEADER #1926    04034B50 (67324752)\n-2050EC Extract Zip Spec      14 (20) '2.0'\n-2050ED Extract OS            00 (0) 'MS-DOS'\n-2050EE General Purpose Flag  0808 (2056)\n+208EC0 LOCAL HEADER #1926    04034B50 (67324752)\n+208EC4 Extract Zip Spec      14 (20) '2.0'\n+208EC5 Extract OS            00 (0) 'MS-DOS'\n+208EC6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2050F0 Compression Method    0008 (8) 'Deflated'\n-2050F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2050F6 CRC                   00000000 (0)\n-2050FA Compressed Size       00000000 (0)\n-2050FE Uncompressed Size     00000000 (0)\n-205102 Filename Length       003F (63)\n-205104 Extra Length          0000 (0)\n-205106 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+208EC8 Compression Method    0008 (8) 'Deflated'\n+208ECA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+208ECE CRC                   00000000 (0)\n+208ED2 Compressed Size       00000000 (0)\n+208ED6 Uncompressed Size     00000000 (0)\n+208EDA Filename Length       0046 (70)\n+208EDC Extra Length          0000 (0)\n+208EDE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x205106: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x208EDE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-205145 PAYLOAD\n+208F24 PAYLOAD\n \n-2053FD DATA DESCRIPTOR       08074B50 (134695760)\n-205401 CRC                   6E98A8DB (1855498459)\n-205405 Compressed Size       000002B8 (696)\n-205409 Uncompressed Size     0000063C (1596)\n+2096D8 DATA DESCRIPTOR       08074B50 (134695760)\n+2096DC CRC                   4C9B97DB (1285265371)\n+2096E0 Compressed Size       000007B4 (1972)\n+2096E4 Uncompressed Size     00001DB7 (7607)\n \n-20540D LOCAL HEADER #1927    04034B50 (67324752)\n-205411 Extract Zip Spec      14 (20) '2.0'\n-205412 Extract OS            00 (0) 'MS-DOS'\n-205413 General Purpose Flag  0808 (2056)\n+2096E8 LOCAL HEADER #1927    04034B50 (67324752)\n+2096EC Extract Zip Spec      14 (20) '2.0'\n+2096ED Extract OS            00 (0) 'MS-DOS'\n+2096EE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-205415 Compression Method    0008 (8) 'Deflated'\n-205417 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20541B CRC                   00000000 (0)\n-20541F Compressed Size       00000000 (0)\n-205423 Uncompressed Size     00000000 (0)\n-205427 Filename Length       0025 (37)\n-205429 Extra Length          0000 (0)\n-20542B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2096F0 Compression Method    0008 (8) 'Deflated'\n+2096F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2096F6 CRC                   00000000 (0)\n+2096FA Compressed Size       00000000 (0)\n+2096FE Uncompressed Size     00000000 (0)\n+209702 Filename Length       004D (77)\n+209704 Extra Length          0000 (0)\n+209706 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20542B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x209706: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-205450 PAYLOAD               XX\n+209753 PAYLOAD\n \n-205452 DATA DESCRIPTOR       08074B50 (134695760)\n-205456 CRC                   00000000 (0)\n-20545A Compressed Size       00000002 (2)\n-20545E Uncompressed Size     00000000 (0)\n+209A0C DATA DESCRIPTOR       08074B50 (134695760)\n+209A10 CRC                   17A4831B (396657435)\n+209A14 Compressed Size       000002B9 (697)\n+209A18 Uncompressed Size     0000064B (1611)\n \n-205462 LOCAL HEADER #1928    04034B50 (67324752)\n-205466 Extract Zip Spec      14 (20) '2.0'\n-205467 Extract OS            00 (0) 'MS-DOS'\n-205468 General Purpose Flag  0808 (2056)\n+209A1C LOCAL HEADER #1928    04034B50 (67324752)\n+209A20 Extract Zip Spec      14 (20) '2.0'\n+209A21 Extract OS            00 (0) 'MS-DOS'\n+209A22 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20546A Compression Method    0008 (8) 'Deflated'\n-20546C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-205470 CRC                   00000000 (0)\n-205474 Compressed Size       00000000 (0)\n-205478 Uncompressed Size     00000000 (0)\n-20547C Filename Length       0048 (72)\n-20547E Extra Length          0000 (0)\n-205480 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+209A24 Compression Method    0008 (8) 'Deflated'\n+209A26 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+209A2A CRC                   00000000 (0)\n+209A2E Compressed Size       00000000 (0)\n+209A32 Uncompressed Size     00000000 (0)\n+209A36 Filename Length       0040 (64)\n+209A38 Extra Length          0000 (0)\n+209A3A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x205480: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x209A3A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2054C8 PAYLOAD\n+209A7A PAYLOAD               XX\n \n-205921 DATA DESCRIPTOR       08074B50 (134695760)\n-205925 CRC                   96165FE8 (2518048744)\n-205929 Compressed Size       00000459 (1113)\n-20592D Uncompressed Size     00000B47 (2887)\n+209A7C DATA DESCRIPTOR       08074B50 (134695760)\n+209A80 CRC                   00000000 (0)\n+209A84 Compressed Size       00000002 (2)\n+209A88 Uncompressed Size     00000000 (0)\n \n-205931 LOCAL HEADER #1929    04034B50 (67324752)\n-205935 Extract Zip Spec      14 (20) '2.0'\n-205936 Extract OS            00 (0) 'MS-DOS'\n-205937 General Purpose Flag  0808 (2056)\n+209A8C LOCAL HEADER #1929    04034B50 (67324752)\n+209A90 Extract Zip Spec      14 (20) '2.0'\n+209A91 Extract OS            00 (0) 'MS-DOS'\n+209A92 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-205939 Compression Method    0008 (8) 'Deflated'\n-20593B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20593F CRC                   00000000 (0)\n-205943 Compressed Size       00000000 (0)\n-205947 Uncompressed Size     00000000 (0)\n-20594B Filename Length       0045 (69)\n-20594D Extra Length          0000 (0)\n-20594F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+209A94 Compression Method    0008 (8) 'Deflated'\n+209A96 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+209A9A CRC                   00000000 (0)\n+209A9E Compressed Size       00000000 (0)\n+209AA2 Uncompressed Size     00000000 (0)\n+209AA6 Filename Length       0047 (71)\n+209AA8 Extra Length          0000 (0)\n+209AAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20594F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x209AAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-205994 PAYLOAD\n+209AF1 PAYLOAD\n \n-205C47 DATA DESCRIPTOR       08074B50 (134695760)\n-205C4B CRC                   BB15446F (3138733167)\n-205C4F Compressed Size       000002B3 (691)\n-205C53 Uncompressed Size     00000540 (1344)\n+209E38 DATA DESCRIPTOR       08074B50 (134695760)\n+209E3C CRC                   1213AD1C (303279388)\n+209E40 Compressed Size       00000347 (839)\n+209E44 Uncompressed Size     00000836 (2102)\n \n-205C57 LOCAL HEADER #1930    04034B50 (67324752)\n-205C5B Extract Zip Spec      14 (20) '2.0'\n-205C5C Extract OS            00 (0) 'MS-DOS'\n-205C5D General Purpose Flag  0808 (2056)\n+209E48 LOCAL HEADER #1930    04034B50 (67324752)\n+209E4C Extract Zip Spec      14 (20) '2.0'\n+209E4D Extract OS            00 (0) 'MS-DOS'\n+209E4E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-205C5F Compression Method    0008 (8) 'Deflated'\n-205C61 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-205C65 CRC                   00000000 (0)\n-205C69 Compressed Size       00000000 (0)\n-205C6D Uncompressed Size     00000000 (0)\n-205C71 Filename Length       0047 (71)\n-205C73 Extra Length          0000 (0)\n-205C75 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+209E50 Compression Method    0008 (8) 'Deflated'\n+209E52 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+209E56 CRC                   00000000 (0)\n+209E5A Compressed Size       00000000 (0)\n+209E5E Uncompressed Size     00000000 (0)\n+209E62 Filename Length       004E (78)\n+209E64 Extra Length          0000 (0)\n+209E66 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x205C75: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x209E66: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-205CBC PAYLOAD\n+209EB4 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-206044 DATA DESCRIPTOR       08074B50 (134695760)\n-206048 CRC                   C656CCE4 (3327577316)\n-20604C Compressed Size       00000388 (904)\n-206050 Uncompressed Size     00000872 (2162)\n+209F04 DATA DESCRIPTOR       08074B50 (134695760)\n+209F08 CRC                   15F7279D (368519069)\n+209F0C Compressed Size       00000050 (80)\n+209F10 Uncompressed Size     00000056 (86)\n \n-206054 LOCAL HEADER #1931    04034B50 (67324752)\n-206058 Extract Zip Spec      14 (20) '2.0'\n-206059 Extract OS            00 (0) 'MS-DOS'\n-20605A General Purpose Flag  0808 (2056)\n+209F14 LOCAL HEADER #1931    04034B50 (67324752)\n+209F18 Extract Zip Spec      14 (20) '2.0'\n+209F19 Extract OS            00 (0) 'MS-DOS'\n+209F1A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20605C Compression Method    0008 (8) 'Deflated'\n-20605E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-206062 CRC                   00000000 (0)\n-206066 Compressed Size       00000000 (0)\n-20606A Uncompressed Size     00000000 (0)\n-20606E Filename Length       004A (74)\n-206070 Extra Length          0000 (0)\n-206072 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+209F1C Compression Method    0008 (8) 'Deflated'\n+209F1E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+209F22 CRC                   00000000 (0)\n+209F26 Compressed Size       00000000 (0)\n+209F2A Uncompressed Size     00000000 (0)\n+209F2E Filename Length       0026 (38)\n+209F30 Extra Length          0000 (0)\n+209F32 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x206072: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x209F32: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2060BC PAYLOAD\n+209F58 PAYLOAD               XX\n \n-206576 DATA DESCRIPTOR       08074B50 (134695760)\n-20657A CRC                   6100366B (1627403883)\n-20657E Compressed Size       000004BA (1210)\n-206582 Uncompressed Size     000011E6 (4582)\n+209F5A DATA DESCRIPTOR       08074B50 (134695760)\n+209F5E CRC                   00000000 (0)\n+209F62 Compressed Size       00000002 (2)\n+209F66 Uncompressed Size     00000000 (0)\n \n-206586 LOCAL HEADER #1932    04034B50 (67324752)\n-20658A Extract Zip Spec      14 (20) '2.0'\n-20658B Extract OS            00 (0) 'MS-DOS'\n-20658C General Purpose Flag  0808 (2056)\n+209F6A LOCAL HEADER #1932    04034B50 (67324752)\n+209F6E Extract Zip Spec      14 (20) '2.0'\n+209F6F Extract OS            00 (0) 'MS-DOS'\n+209F70 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20658E Compression Method    0008 (8) 'Deflated'\n-206590 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-206594 CRC                   00000000 (0)\n-206598 Compressed Size       00000000 (0)\n-20659C Uncompressed Size     00000000 (0)\n-2065A0 Filename Length       0047 (71)\n-2065A2 Extra Length          0000 (0)\n-2065A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+209F72 Compression Method    0008 (8) 'Deflated'\n+209F74 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+209F78 CRC                   00000000 (0)\n+209F7C Compressed Size       00000000 (0)\n+209F80 Uncompressed Size     00000000 (0)\n+209F84 Filename Length       003E (62)\n+209F86 Extra Length          0000 (0)\n+209F88 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2065A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x209F88: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2065EB PAYLOAD\n+209FC6 PAYLOAD\n \n-2068A1 DATA DESCRIPTOR       08074B50 (134695760)\n-2068A5 CRC                   8939A522 (2302256418)\n-2068A9 Compressed Size       000002B6 (694)\n-2068AD Uncompressed Size     00000548 (1352)\n+20A762 DATA DESCRIPTOR       08074B50 (134695760)\n+20A766 CRC                   7E3D8E6C (2117963372)\n+20A76A Compressed Size       0000079C (1948)\n+20A76E Uncompressed Size     0000253B (9531)\n \n-2068B1 LOCAL HEADER #1933    04034B50 (67324752)\n-2068B5 Extract Zip Spec      14 (20) '2.0'\n-2068B6 Extract OS            00 (0) 'MS-DOS'\n-2068B7 General Purpose Flag  0808 (2056)\n+20A772 LOCAL HEADER #1933    04034B50 (67324752)\n+20A776 Extract Zip Spec      14 (20) '2.0'\n+20A777 Extract OS            00 (0) 'MS-DOS'\n+20A778 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2068B9 Compression Method    0008 (8) 'Deflated'\n-2068BB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2068BF CRC                   00000000 (0)\n-2068C3 Compressed Size       00000000 (0)\n-2068C7 Uncompressed Size     00000000 (0)\n-2068CB Filename Length       004B (75)\n-2068CD Extra Length          0000 (0)\n-2068CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20A77A Compression Method    0008 (8) 'Deflated'\n+20A77C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20A780 CRC                   00000000 (0)\n+20A784 Compressed Size       00000000 (0)\n+20A788 Uncompressed Size     00000000 (0)\n+20A78C Filename Length       0045 (69)\n+20A78E Extra Length          0000 (0)\n+20A790 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2068CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20A790: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20691A PAYLOAD\n+20A7D5 PAYLOAD\n \n-206C1B DATA DESCRIPTOR       08074B50 (134695760)\n-206C1F CRC                   2244431E (574898974)\n-206C23 Compressed Size       00000301 (769)\n-206C27 Uncompressed Size     000006DE (1758)\n+20AA49 DATA DESCRIPTOR       08074B50 (134695760)\n+20AA4D CRC                   70A19A06 (1889638918)\n+20AA51 Compressed Size       00000274 (628)\n+20AA55 Uncompressed Size     00000517 (1303)\n \n-206C2B LOCAL HEADER #1934    04034B50 (67324752)\n-206C2F Extract Zip Spec      14 (20) '2.0'\n-206C30 Extract OS            00 (0) 'MS-DOS'\n-206C31 General Purpose Flag  0808 (2056)\n+20AA59 LOCAL HEADER #1934    04034B50 (67324752)\n+20AA5D Extract Zip Spec      14 (20) '2.0'\n+20AA5E Extract OS            00 (0) 'MS-DOS'\n+20AA5F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-206C33 Compression Method    0008 (8) 'Deflated'\n-206C35 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-206C39 CRC                   00000000 (0)\n-206C3D Compressed Size       00000000 (0)\n-206C41 Uncompressed Size     00000000 (0)\n-206C45 Filename Length       0046 (70)\n-206C47 Extra Length          0000 (0)\n-206C49 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20AA61 Compression Method    0008 (8) 'Deflated'\n+20AA63 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20AA67 CRC                   00000000 (0)\n+20AA6B Compressed Size       00000000 (0)\n+20AA6F Uncompressed Size     00000000 (0)\n+20AA73 Filename Length       003C (60)\n+20AA75 Extra Length          0000 (0)\n+20AA77 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x206C49: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20AA77: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-206C8F PAYLOAD\n+20AAB3 PAYLOAD               XX\n \n-206F45 DATA DESCRIPTOR       08074B50 (134695760)\n-206F49 CRC                   6B0A1F36 (1795825462)\n-206F4D Compressed Size       000002B6 (694)\n-206F51 Uncompressed Size     00000544 (1348)\n+20AAB5 DATA DESCRIPTOR       08074B50 (134695760)\n+20AAB9 CRC                   00000000 (0)\n+20AABD Compressed Size       00000002 (2)\n+20AAC1 Uncompressed Size     00000000 (0)\n \n-206F55 LOCAL HEADER #1935    04034B50 (67324752)\n-206F59 Extract Zip Spec      14 (20) '2.0'\n-206F5A Extract OS            00 (0) 'MS-DOS'\n-206F5B General Purpose Flag  0808 (2056)\n+20AAC5 LOCAL HEADER #1935    04034B50 (67324752)\n+20AAC9 Extract Zip Spec      14 (20) '2.0'\n+20AACA Extract OS            00 (0) 'MS-DOS'\n+20AACB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-206F5D Compression Method    0008 (8) 'Deflated'\n-206F5F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-206F63 CRC                   00000000 (0)\n-206F67 Compressed Size       00000000 (0)\n-206F6B Uncompressed Size     00000000 (0)\n-206F6F Filename Length       0029 (41)\n-206F71 Extra Length          0000 (0)\n-206F73 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20AACD Compression Method    0008 (8) 'Deflated'\n+20AACF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20AAD3 CRC                   00000000 (0)\n+20AAD7 Compressed Size       00000000 (0)\n+20AADB Uncompressed Size     00000000 (0)\n+20AADF Filename Length       0043 (67)\n+20AAE1 Extra Length          0000 (0)\n+20AAE3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x206F73: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20AAE3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-206F9C PAYLOAD               XX\n+20AB26 PAYLOAD\n \n-206F9E DATA DESCRIPTOR       08074B50 (134695760)\n-206FA2 CRC                   00000000 (0)\n-206FA6 Compressed Size       00000002 (2)\n-206FAA Uncompressed Size     00000000 (0)\n+20AE9A DATA DESCRIPTOR       08074B50 (134695760)\n+20AE9E CRC                   26D24E82 (651316866)\n+20AEA2 Compressed Size       00000374 (884)\n+20AEA6 Uncompressed Size     00000911 (2321)\n \n-206FAE LOCAL HEADER #1936    04034B50 (67324752)\n-206FB2 Extract Zip Spec      14 (20) '2.0'\n-206FB3 Extract OS            00 (0) 'MS-DOS'\n-206FB4 General Purpose Flag  0808 (2056)\n+20AEAA LOCAL HEADER #1936    04034B50 (67324752)\n+20AEAE Extract Zip Spec      14 (20) '2.0'\n+20AEAF Extract OS            00 (0) 'MS-DOS'\n+20AEB0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-206FB6 Compression Method    0008 (8) 'Deflated'\n-206FB8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-206FBC CRC                   00000000 (0)\n-206FC0 Compressed Size       00000000 (0)\n-206FC4 Uncompressed Size     00000000 (0)\n-206FC8 Filename Length       0059 (89)\n-206FCA Extra Length          0000 (0)\n-206FCC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20AEB2 Compression Method    0008 (8) 'Deflated'\n+20AEB4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20AEB8 CRC                   00000000 (0)\n+20AEBC Compressed Size       00000000 (0)\n+20AEC0 Uncompressed Size     00000000 (0)\n+20AEC4 Filename Length       004A (74)\n+20AEC6 Extra Length          0000 (0)\n+20AEC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x206FCC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20AEC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-207025 PAYLOAD\n+20AF12 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-207422 DATA DESCRIPTOR       08074B50 (134695760)\n-207426 CRC                   F6AB8A5C (4138437212)\n-20742A Compressed Size       000003FD (1021)\n-20742E Uncompressed Size     00000B30 (2864)\n+20AF5E DATA DESCRIPTOR       08074B50 (134695760)\n+20AF62 CRC                   3794C7CD (932497357)\n+20AF66 Compressed Size       0000004C (76)\n+20AF6A Uncompressed Size     00000052 (82)\n \n-207432 LOCAL HEADER #1937    04034B50 (67324752)\n-207436 Extract Zip Spec      14 (20) '2.0'\n-207437 Extract OS            00 (0) 'MS-DOS'\n-207438 General Purpose Flag  0808 (2056)\n+20AF6E LOCAL HEADER #1937    04034B50 (67324752)\n+20AF72 Extract Zip Spec      14 (20) '2.0'\n+20AF73 Extract OS            00 (0) 'MS-DOS'\n+20AF74 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20743A Compression Method    0008 (8) 'Deflated'\n-20743C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-207440 CRC                   00000000 (0)\n-207444 Compressed Size       00000000 (0)\n-207448 Uncompressed Size     00000000 (0)\n-20744C Filename Length       004D (77)\n-20744E Extra Length          0000 (0)\n-207450 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20AF76 Compression Method    0008 (8) 'Deflated'\n+20AF78 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20AF7C CRC                   00000000 (0)\n+20AF80 Compressed Size       00000000 (0)\n+20AF84 Uncompressed Size     00000000 (0)\n+20AF88 Filename Length       0027 (39)\n+20AF8A Extra Length          0000 (0)\n+20AF8C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x207450: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20AF8C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20749D PAYLOAD\n+20AFB3 PAYLOAD               XX\n \n-2077DD DATA DESCRIPTOR       08074B50 (134695760)\n-2077E1 CRC                   8ECDA075 (2395840629)\n-2077E5 Compressed Size       00000340 (832)\n-2077E9 Uncompressed Size     00000705 (1797)\n+20AFB5 DATA DESCRIPTOR       08074B50 (134695760)\n+20AFB9 CRC                   00000000 (0)\n+20AFBD Compressed Size       00000002 (2)\n+20AFC1 Uncompressed Size     00000000 (0)\n \n-2077ED LOCAL HEADER #1938    04034B50 (67324752)\n-2077F1 Extract Zip Spec      14 (20) '2.0'\n-2077F2 Extract OS            00 (0) 'MS-DOS'\n-2077F3 General Purpose Flag  0808 (2056)\n+20AFC5 LOCAL HEADER #1938    04034B50 (67324752)\n+20AFC9 Extract Zip Spec      14 (20) '2.0'\n+20AFCA Extract OS            00 (0) 'MS-DOS'\n+20AFCB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2077F5 Compression Method    0008 (8) 'Deflated'\n-2077F7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2077FB CRC                   00000000 (0)\n-2077FF Compressed Size       00000000 (0)\n-207803 Uncompressed Size     00000000 (0)\n-207807 Filename Length       004C (76)\n-207809 Extra Length          0000 (0)\n-20780B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20AFCD Compression Method    0008 (8) 'Deflated'\n+20AFCF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20AFD3 CRC                   00000000 (0)\n+20AFD7 Compressed Size       00000000 (0)\n+20AFDB Uncompressed Size     00000000 (0)\n+20AFDF Filename Length       0040 (64)\n+20AFE1 Extra Length          0000 (0)\n+20AFE3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20780B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20AFE3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-207857 PAYLOAD\n+20B023 PAYLOAD\n \n-207B95 DATA DESCRIPTOR       08074B50 (134695760)\n-207B99 CRC                   C535197D (3308591485)\n-207B9D Compressed Size       0000033E (830)\n-207BA1 Uncompressed Size     00000700 (1792)\n+20B602 DATA DESCRIPTOR       08074B50 (134695760)\n+20B606 CRC                   18469088 (407277704)\n+20B60A Compressed Size       000005DF (1503)\n+20B60E Uncompressed Size     00001573 (5491)\n \n-207BA5 LOCAL HEADER #1939    04034B50 (67324752)\n-207BA9 Extract Zip Spec      14 (20) '2.0'\n-207BAA Extract OS            00 (0) 'MS-DOS'\n-207BAB General Purpose Flag  0808 (2056)\n+20B612 LOCAL HEADER #1939    04034B50 (67324752)\n+20B616 Extract Zip Spec      14 (20) '2.0'\n+20B617 Extract OS            00 (0) 'MS-DOS'\n+20B618 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-207BAD Compression Method    0008 (8) 'Deflated'\n-207BAF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-207BB3 CRC                   00000000 (0)\n-207BB7 Compressed Size       00000000 (0)\n-207BBB Uncompressed Size     00000000 (0)\n-207BBF Filename Length       0052 (82)\n-207BC1 Extra Length          0000 (0)\n-207BC3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20B61A Compression Method    0008 (8) 'Deflated'\n+20B61C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20B620 CRC                   00000000 (0)\n+20B624 Compressed Size       00000000 (0)\n+20B628 Uncompressed Size     00000000 (0)\n+20B62C Filename Length       0047 (71)\n+20B62E Extra Length          0000 (0)\n+20B630 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x207BC3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20B630: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-207C15 PAYLOAD\n+20B677 PAYLOAD\n \n-20830D DATA DESCRIPTOR       08074B50 (134695760)\n-208311 CRC                   A895CAB3 (2828389043)\n-208315 Compressed Size       000006F8 (1784)\n-208319 Uncompressed Size     00001870 (6256)\n+20B8F9 DATA DESCRIPTOR       08074B50 (134695760)\n+20B8FD CRC                   E09F9D87 (3768556935)\n+20B901 Compressed Size       00000282 (642)\n+20B905 Uncompressed Size     00000525 (1317)\n \n-20831D LOCAL HEADER #1940    04034B50 (67324752)\n-208321 Extract Zip Spec      14 (20) '2.0'\n-208322 Extract OS            00 (0) 'MS-DOS'\n-208323 General Purpose Flag  0808 (2056)\n+20B909 LOCAL HEADER #1940    04034B50 (67324752)\n+20B90D Extract Zip Spec      14 (20) '2.0'\n+20B90E Extract OS            00 (0) 'MS-DOS'\n+20B90F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-208325 Compression Method    0008 (8) 'Deflated'\n-208327 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20832B CRC                   00000000 (0)\n-20832F Compressed Size       00000000 (0)\n-208333 Uncompressed Size     00000000 (0)\n-208337 Filename Length       0020 (32)\n-208339 Extra Length          0000 (0)\n-20833B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20B911 Compression Method    0008 (8) 'Deflated'\n+20B913 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20B917 CRC                   00000000 (0)\n+20B91B Compressed Size       00000000 (0)\n+20B91F Uncompressed Size     00000000 (0)\n+20B923 Filename Length       003D (61)\n+20B925 Extra Length          0000 (0)\n+20B927 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20833B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20B927: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20835B PAYLOAD               XX\n+20B964 PAYLOAD               XX\n \n-20835D DATA DESCRIPTOR       08074B50 (134695760)\n-208361 CRC                   00000000 (0)\n-208365 Compressed Size       00000002 (2)\n-208369 Uncompressed Size     00000000 (0)\n+20B966 DATA DESCRIPTOR       08074B50 (134695760)\n+20B96A CRC                   00000000 (0)\n+20B96E Compressed Size       00000002 (2)\n+20B972 Uncompressed Size     00000000 (0)\n \n-20836D LOCAL HEADER #1941    04034B50 (67324752)\n-208371 Extract Zip Spec      14 (20) '2.0'\n-208372 Extract OS            00 (0) 'MS-DOS'\n-208373 General Purpose Flag  0808 (2056)\n+20B976 LOCAL HEADER #1941    04034B50 (67324752)\n+20B97A Extract Zip Spec      14 (20) '2.0'\n+20B97B Extract OS            00 (0) 'MS-DOS'\n+20B97C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-208375 Compression Method    0008 (8) 'Deflated'\n-208377 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20837B CRC                   00000000 (0)\n-20837F Compressed Size       00000000 (0)\n-208383 Uncompressed Size     00000000 (0)\n-208387 Filename Length       004C (76)\n-208389 Extra Length          0000 (0)\n-20838B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20B97E Compression Method    0008 (8) 'Deflated'\n+20B980 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20B984 CRC                   00000000 (0)\n+20B988 Compressed Size       00000000 (0)\n+20B98C Uncompressed Size     00000000 (0)\n+20B990 Filename Length       0044 (68)\n+20B992 Extra Length          0000 (0)\n+20B994 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20838B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20B994: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2083D7 PAYLOAD\n+20B9D8 PAYLOAD\n \n-20895B DATA DESCRIPTOR       08074B50 (134695760)\n-20895F CRC                   C67BB267 (3329995367)\n-208963 Compressed Size       00000584 (1412)\n-208967 Uncompressed Size     0000106A (4202)\n+20BD19 DATA DESCRIPTOR       08074B50 (134695760)\n+20BD1D CRC                   BC035C85 (3154336901)\n+20BD21 Compressed Size       00000341 (833)\n+20BD25 Uncompressed Size     00000830 (2096)\n \n-20896B LOCAL HEADER #1942    04034B50 (67324752)\n-20896F Extract Zip Spec      14 (20) '2.0'\n-208970 Extract OS            00 (0) 'MS-DOS'\n-208971 General Purpose Flag  0808 (2056)\n+20BD29 LOCAL HEADER #1942    04034B50 (67324752)\n+20BD2D Extract Zip Spec      14 (20) '2.0'\n+20BD2E Extract OS            00 (0) 'MS-DOS'\n+20BD2F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-208973 Compression Method    0008 (8) 'Deflated'\n-208975 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-208979 CRC                   00000000 (0)\n-20897D Compressed Size       00000000 (0)\n-208981 Uncompressed Size     00000000 (0)\n-208985 Filename Length       0046 (70)\n-208987 Extra Length          0000 (0)\n-208989 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20BD31 Compression Method    0008 (8) 'Deflated'\n+20BD33 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20BD37 CRC                   00000000 (0)\n+20BD3B Compressed Size       00000000 (0)\n+20BD3F Uncompressed Size     00000000 (0)\n+20BD43 Filename Length       004B (75)\n+20BD45 Extra Length          0000 (0)\n+20BD47 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x208989: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20BD47: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2089CF PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+20BD92 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-208A04 DATA DESCRIPTOR       08074B50 (134695760)\n-208A08 CRC                   ACE74F1F (2900840223)\n-208A0C Compressed Size       00000035 (53)\n-208A10 Uncompressed Size     0000003D (61)\n+20BDE0 DATA DESCRIPTOR       08074B50 (134695760)\n+20BDE4 CRC                   B0326E74 (2956095092)\n+20BDE8 Compressed Size       0000004E (78)\n+20BDEC Uncompressed Size     00000053 (83)\n \n-208A14 LOCAL HEADER #1943    04034B50 (67324752)\n-208A18 Extract Zip Spec      14 (20) '2.0'\n-208A19 Extract OS            00 (0) 'MS-DOS'\n-208A1A General Purpose Flag  0808 (2056)\n+20BDF0 LOCAL HEADER #1943    04034B50 (67324752)\n+20BDF4 Extract Zip Spec      14 (20) '2.0'\n+20BDF5 Extract OS            00 (0) 'MS-DOS'\n+20BDF6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-208A1C Compression Method    0008 (8) 'Deflated'\n-208A1E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-208A22 CRC                   00000000 (0)\n-208A26 Compressed Size       00000000 (0)\n-208A2A Uncompressed Size     00000000 (0)\n-208A2E Filename Length       002A (42)\n-208A30 Extra Length          0000 (0)\n-208A32 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20BDF8 Compression Method    0008 (8) 'Deflated'\n+20BDFA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20BDFE CRC                   00000000 (0)\n+20BE02 Compressed Size       00000000 (0)\n+20BE06 Uncompressed Size     00000000 (0)\n+20BE0A Filename Length       0025 (37)\n+20BE0C Extra Length          0000 (0)\n+20BE0E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x208A32: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20BE0E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-208A5C PAYLOAD               XX\n+20BE33 PAYLOAD               XX\n \n-208A5E DATA DESCRIPTOR       08074B50 (134695760)\n-208A62 CRC                   00000000 (0)\n-208A66 Compressed Size       00000002 (2)\n-208A6A Uncompressed Size     00000000 (0)\n+20BE35 DATA DESCRIPTOR       08074B50 (134695760)\n+20BE39 CRC                   00000000 (0)\n+20BE3D Compressed Size       00000002 (2)\n+20BE41 Uncompressed Size     00000000 (0)\n \n-208A6E LOCAL HEADER #1944    04034B50 (67324752)\n-208A72 Extract Zip Spec      14 (20) '2.0'\n-208A73 Extract OS            00 (0) 'MS-DOS'\n-208A74 General Purpose Flag  0808 (2056)\n+20BE45 LOCAL HEADER #1944    04034B50 (67324752)\n+20BE49 Extract Zip Spec      14 (20) '2.0'\n+20BE4A Extract OS            00 (0) 'MS-DOS'\n+20BE4B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-208A76 Compression Method    0008 (8) 'Deflated'\n-208A78 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-208A7C CRC                   00000000 (0)\n-208A80 Compressed Size       00000000 (0)\n-208A84 Uncompressed Size     00000000 (0)\n-208A88 Filename Length       0046 (70)\n-208A8A Extra Length          0000 (0)\n-208A8C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20BE4D Compression Method    0008 (8) 'Deflated'\n+20BE4F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20BE53 CRC                   00000000 (0)\n+20BE57 Compressed Size       00000000 (0)\n+20BE5B Uncompressed Size     00000000 (0)\n+20BE5F Filename Length       003C (60)\n+20BE61 Extra Length          0000 (0)\n+20BE63 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x208A8C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20BE63: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-208AD2 PAYLOAD\n+20BE9F PAYLOAD\n \n-209277 DATA DESCRIPTOR       08074B50 (134695760)\n-20927B CRC                   C83DC072 (3359490162)\n-20927F Compressed Size       000007A5 (1957)\n-209283 Uncompressed Size     00001CFB (7419)\n+20C45F DATA DESCRIPTOR       08074B50 (134695760)\n+20C463 CRC                   963A2E3A (2520395322)\n+20C467 Compressed Size       000005C0 (1472)\n+20C46B Uncompressed Size     000016EE (5870)\n \n-209287 LOCAL HEADER #1945    04034B50 (67324752)\n-20928B Extract Zip Spec      14 (20) '2.0'\n-20928C Extract OS            00 (0) 'MS-DOS'\n-20928D General Purpose Flag  0808 (2056)\n+20C46F LOCAL HEADER #1945    04034B50 (67324752)\n+20C473 Extract Zip Spec      14 (20) '2.0'\n+20C474 Extract OS            00 (0) 'MS-DOS'\n+20C475 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20928F Compression Method    0008 (8) 'Deflated'\n-209291 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-209295 CRC                   00000000 (0)\n-209299 Compressed Size       00000000 (0)\n-20929D Uncompressed Size     00000000 (0)\n-2092A1 Filename Length       004D (77)\n-2092A3 Extra Length          0000 (0)\n-2092A5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20C477 Compression Method    0008 (8) 'Deflated'\n+20C479 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20C47D CRC                   00000000 (0)\n+20C481 Compressed Size       00000000 (0)\n+20C485 Uncompressed Size     00000000 (0)\n+20C489 Filename Length       0043 (67)\n+20C48B Extra Length          0000 (0)\n+20C48D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2092A5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20C48D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2092F2 PAYLOAD\n+20C4D0 PAYLOAD\n \n-2095A3 DATA DESCRIPTOR       08074B50 (134695760)\n-2095A7 CRC                   30CD3349 (818754377)\n-2095AB Compressed Size       000002B1 (689)\n-2095AF Uncompressed Size     00000623 (1571)\n+20C765 DATA DESCRIPTOR       08074B50 (134695760)\n+20C769 CRC                   1612BDB3 (370326963)\n+20C76D Compressed Size       00000295 (661)\n+20C771 Uncompressed Size     00000870 (2160)\n \n-2095B3 LOCAL HEADER #1946    04034B50 (67324752)\n-2095B7 Extract Zip Spec      14 (20) '2.0'\n-2095B8 Extract OS            00 (0) 'MS-DOS'\n-2095B9 General Purpose Flag  0808 (2056)\n+20C775 LOCAL HEADER #1946    04034B50 (67324752)\n+20C779 Extract Zip Spec      14 (20) '2.0'\n+20C77A Extract OS            00 (0) 'MS-DOS'\n+20C77B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2095BB Compression Method    0008 (8) 'Deflated'\n-2095BD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2095C1 CRC                   00000000 (0)\n-2095C5 Compressed Size       00000000 (0)\n-2095C9 Uncompressed Size     00000000 (0)\n-2095CD Filename Length       0026 (38)\n-2095CF Extra Length          0000 (0)\n-2095D1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20C77D Compression Method    0008 (8) 'Deflated'\n+20C77F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20C783 CRC                   00000000 (0)\n+20C787 Compressed Size       00000000 (0)\n+20C78B Uncompressed Size     00000000 (0)\n+20C78F Filename Length       003B (59)\n+20C791 Extra Length          0000 (0)\n+20C793 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2095D1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20C793: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2095F7 PAYLOAD               XX\n+20C7CE PAYLOAD               XX\n \n-2095F9 DATA DESCRIPTOR       08074B50 (134695760)\n-2095FD CRC                   00000000 (0)\n-209601 Compressed Size       00000002 (2)\n-209605 Uncompressed Size     00000000 (0)\n+20C7D0 DATA DESCRIPTOR       08074B50 (134695760)\n+20C7D4 CRC                   00000000 (0)\n+20C7D8 Compressed Size       00000002 (2)\n+20C7DC Uncompressed Size     00000000 (0)\n \n-209609 LOCAL HEADER #1947    04034B50 (67324752)\n-20960D Extract Zip Spec      14 (20) '2.0'\n-20960E Extract OS            00 (0) 'MS-DOS'\n-20960F General Purpose Flag  0808 (2056)\n+20C7E0 LOCAL HEADER #1947    04034B50 (67324752)\n+20C7E4 Extract Zip Spec      14 (20) '2.0'\n+20C7E5 Extract OS            00 (0) 'MS-DOS'\n+20C7E6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-209611 Compression Method    0008 (8) 'Deflated'\n-209613 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-209617 CRC                   00000000 (0)\n-20961B Compressed Size       00000000 (0)\n-20961F Uncompressed Size     00000000 (0)\n-209623 Filename Length       003E (62)\n-209625 Extra Length          0000 (0)\n-209627 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20C7E8 Compression Method    0008 (8) 'Deflated'\n+20C7EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20C7EE CRC                   00000000 (0)\n+20C7F2 Compressed Size       00000000 (0)\n+20C7F6 Uncompressed Size     00000000 (0)\n+20C7FA Filename Length       0042 (66)\n+20C7FC Extra Length          0000 (0)\n+20C7FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x209627: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20C7FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-209665 PAYLOAD\n+20C840 PAYLOAD\n \n-209DF4 DATA DESCRIPTOR       08074B50 (134695760)\n-209DF8 CRC                   AE94BF94 (2928983956)\n-209DFC Compressed Size       0000078F (1935)\n-209E00 Uncompressed Size     00002469 (9321)\n+20CC01 DATA DESCRIPTOR       08074B50 (134695760)\n+20CC05 CRC                   5928AB14 (1495837460)\n+20CC09 Compressed Size       000003C1 (961)\n+20CC0D Uncompressed Size     00000A1C (2588)\n \n-209E04 LOCAL HEADER #1948    04034B50 (67324752)\n-209E08 Extract Zip Spec      14 (20) '2.0'\n-209E09 Extract OS            00 (0) 'MS-DOS'\n-209E0A General Purpose Flag  0808 (2056)\n+20CC11 LOCAL HEADER #1948    04034B50 (67324752)\n+20CC15 Extract Zip Spec      14 (20) '2.0'\n+20CC16 Extract OS            00 (0) 'MS-DOS'\n+20CC17 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-209E0C Compression Method    0008 (8) 'Deflated'\n-209E0E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-209E12 CRC                   00000000 (0)\n-209E16 Compressed Size       00000000 (0)\n-209E1A Uncompressed Size     00000000 (0)\n-209E1E Filename Length       0045 (69)\n-209E20 Extra Length          0000 (0)\n-209E22 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20CC19 Compression Method    0008 (8) 'Deflated'\n+20CC1B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20CC1F CRC                   00000000 (0)\n+20CC23 Compressed Size       00000000 (0)\n+20CC27 Uncompressed Size     00000000 (0)\n+20CC2B Filename Length       0049 (73)\n+20CC2D Extra Length          0000 (0)\n+20CC2F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x209E22: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20CC2F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-209E67 PAYLOAD\n+20CC78 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20A0D2 DATA DESCRIPTOR       08074B50 (134695760)\n-20A0D6 CRC                   FCE39D55 (4242775381)\n-20A0DA Compressed Size       0000026B (619)\n-20A0DE Uncompressed Size     000004F5 (1269)\n+20CCC4 DATA DESCRIPTOR       08074B50 (134695760)\n+20CCC8 CRC                   4B310E73 (1261506163)\n+20CCCC Compressed Size       0000004C (76)\n+20CCD0 Uncompressed Size     00000051 (81)\n \n-20A0E2 LOCAL HEADER #1949    04034B50 (67324752)\n-20A0E6 Extract Zip Spec      14 (20) '2.0'\n-20A0E7 Extract OS            00 (0) 'MS-DOS'\n-20A0E8 General Purpose Flag  0808 (2056)\n+20CCD4 LOCAL HEADER #1949    04034B50 (67324752)\n+20CCD8 Extract Zip Spec      14 (20) '2.0'\n+20CCD9 Extract OS            00 (0) 'MS-DOS'\n+20CCDA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20A0EA Compression Method    0008 (8) 'Deflated'\n-20A0EC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20A0F0 CRC                   00000000 (0)\n-20A0F4 Compressed Size       00000000 (0)\n-20A0F8 Uncompressed Size     00000000 (0)\n-20A0FC Filename Length       0027 (39)\n-20A0FE Extra Length          0000 (0)\n-20A100 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20CCDC Compression Method    0008 (8) 'Deflated'\n+20CCDE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20CCE2 CRC                   00000000 (0)\n+20CCE6 Compressed Size       00000000 (0)\n+20CCEA Uncompressed Size     00000000 (0)\n+20CCEE Filename Length       0026 (38)\n+20CCF0 Extra Length          0000 (0)\n+20CCF2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20A100: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20CCF2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20A127 PAYLOAD               XX\n+20CD18 PAYLOAD               XX\n \n-20A129 DATA DESCRIPTOR       08074B50 (134695760)\n-20A12D CRC                   00000000 (0)\n-20A131 Compressed Size       00000002 (2)\n-20A135 Uncompressed Size     00000000 (0)\n+20CD1A DATA DESCRIPTOR       08074B50 (134695760)\n+20CD1E CRC                   00000000 (0)\n+20CD22 Compressed Size       00000002 (2)\n+20CD26 Uncompressed Size     00000000 (0)\n \n-20A139 LOCAL HEADER #1950    04034B50 (67324752)\n-20A13D Extract Zip Spec      14 (20) '2.0'\n-20A13E Extract OS            00 (0) 'MS-DOS'\n-20A13F General Purpose Flag  0808 (2056)\n+20CD2A LOCAL HEADER #1950    04034B50 (67324752)\n+20CD2E Extract Zip Spec      14 (20) '2.0'\n+20CD2F Extract OS            00 (0) 'MS-DOS'\n+20CD30 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20A141 Compression Method    0008 (8) 'Deflated'\n-20A143 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20A147 CRC                   00000000 (0)\n-20A14B Compressed Size       00000000 (0)\n-20A14F Uncompressed Size     00000000 (0)\n-20A153 Filename Length       0040 (64)\n-20A155 Extra Length          0000 (0)\n-20A157 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20CD32 Compression Method    0008 (8) 'Deflated'\n+20CD34 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20CD38 CRC                   00000000 (0)\n+20CD3C Compressed Size       00000000 (0)\n+20CD40 Uncompressed Size     00000000 (0)\n+20CD44 Filename Length       0044 (68)\n+20CD46 Extra Length          0000 (0)\n+20CD48 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20A157: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20CD48: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20A197 PAYLOAD\n+20CD8C PAYLOAD\n \n-20A76B DATA DESCRIPTOR       08074B50 (134695760)\n-20A76F CRC                   BE116E78 (3188813432)\n-20A773 Compressed Size       000005D4 (1492)\n-20A777 Uncompressed Size     000014EF (5359)\n+20D102 DATA DESCRIPTOR       08074B50 (134695760)\n+20D106 CRC                   2BBAD075 (733663349)\n+20D10A Compressed Size       00000376 (886)\n+20D10E Uncompressed Size     000008DC (2268)\n \n-20A77B LOCAL HEADER #1951    04034B50 (67324752)\n-20A77F Extract Zip Spec      14 (20) '2.0'\n-20A780 Extract OS            00 (0) 'MS-DOS'\n-20A781 General Purpose Flag  0808 (2056)\n+20D112 LOCAL HEADER #1951    04034B50 (67324752)\n+20D116 Extract Zip Spec      14 (20) '2.0'\n+20D117 Extract OS            00 (0) 'MS-DOS'\n+20D118 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20A783 Compression Method    0008 (8) 'Deflated'\n-20A785 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20A789 CRC                   00000000 (0)\n-20A78D Compressed Size       00000000 (0)\n-20A791 Uncompressed Size     00000000 (0)\n-20A795 Filename Length       0047 (71)\n-20A797 Extra Length          0000 (0)\n-20A799 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20D11A Compression Method    0008 (8) 'Deflated'\n+20D11C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20D120 CRC                   00000000 (0)\n+20D124 Compressed Size       00000000 (0)\n+20D128 Uncompressed Size     00000000 (0)\n+20D12C Filename Length       003E (62)\n+20D12E Extra Length          0000 (0)\n+20D130 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20A799: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20D130: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20A7E0 PAYLOAD\n+20D16E PAYLOAD\n \n-20AA5A DATA DESCRIPTOR       08074B50 (134695760)\n-20AA5E CRC                   0FE45FE3 (266624995)\n-20AA62 Compressed Size       0000027A (634)\n-20AA66 Uncompressed Size     00000505 (1285)\n+20DA79 DATA DESCRIPTOR       08074B50 (134695760)\n+20DA7D CRC                   7A7368DC (2054383836)\n+20DA81 Compressed Size       0000090B (2315)\n+20DA85 Uncompressed Size     0000294D (10573)\n \n-20AA6A LOCAL HEADER #1952    04034B50 (67324752)\n-20AA6E Extract Zip Spec      14 (20) '2.0'\n-20AA6F Extract OS            00 (0) 'MS-DOS'\n-20AA70 General Purpose Flag  0808 (2056)\n+20DA89 LOCAL HEADER #1952    04034B50 (67324752)\n+20DA8D Extract Zip Spec      14 (20) '2.0'\n+20DA8E Extract OS            00 (0) 'MS-DOS'\n+20DA8F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20AA72 Compression Method    0008 (8) 'Deflated'\n-20AA74 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20AA78 CRC                   00000000 (0)\n-20AA7C Compressed Size       00000000 (0)\n-20AA80 Uncompressed Size     00000000 (0)\n-20AA84 Filename Length       0025 (37)\n-20AA86 Extra Length          0000 (0)\n-20AA88 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20DA91 Compression Method    0008 (8) 'Deflated'\n+20DA93 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20DA97 CRC                   00000000 (0)\n+20DA9B Compressed Size       00000000 (0)\n+20DA9F Uncompressed Size     00000000 (0)\n+20DAA3 Filename Length       0045 (69)\n+20DAA5 Extra Length          0000 (0)\n+20DAA7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20AA88: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20DAA7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20AAAD PAYLOAD               XX\n+20DAEC PAYLOAD\n \n-20AAAF DATA DESCRIPTOR       08074B50 (134695760)\n-20AAB3 CRC                   00000000 (0)\n-20AAB7 Compressed Size       00000002 (2)\n-20AABB Uncompressed Size     00000000 (0)\n+20DD6D DATA DESCRIPTOR       08074B50 (134695760)\n+20DD71 CRC                   46F5866F (1190495855)\n+20DD75 Compressed Size       00000281 (641)\n+20DD79 Uncompressed Size     00000521 (1313)\n \n-20AABF LOCAL HEADER #1953    04034B50 (67324752)\n-20AAC3 Extract Zip Spec      14 (20) '2.0'\n-20AAC4 Extract OS            00 (0) 'MS-DOS'\n-20AAC5 General Purpose Flag  0808 (2056)\n+20DD7D LOCAL HEADER #1953    04034B50 (67324752)\n+20DD81 Extract Zip Spec      14 (20) '2.0'\n+20DD82 Extract OS            00 (0) 'MS-DOS'\n+20DD83 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20AAC7 Compression Method    0008 (8) 'Deflated'\n-20AAC9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20AACD CRC                   00000000 (0)\n-20AAD1 Compressed Size       00000000 (0)\n-20AAD5 Uncompressed Size     00000000 (0)\n-20AAD9 Filename Length       003C (60)\n-20AADB Extra Length          0000 (0)\n-20AADD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20DD85 Compression Method    0008 (8) 'Deflated'\n+20DD87 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20DD8B CRC                   00000000 (0)\n+20DD8F Compressed Size       00000000 (0)\n+20DD93 Uncompressed Size     00000000 (0)\n+20DD97 Filename Length       003C (60)\n+20DD99 Extra Length          0000 (0)\n+20DD9B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20AADD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20DD9B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20AB19 PAYLOAD\n+20DDD7 PAYLOAD               XX\n \n-20B0CF DATA DESCRIPTOR       08074B50 (134695760)\n-20B0D3 CRC                   00AA2381 (11150209)\n-20B0D7 Compressed Size       000005B6 (1462)\n-20B0DB Uncompressed Size     0000165C (5724)\n+20DDD9 DATA DESCRIPTOR       08074B50 (134695760)\n+20DDDD CRC                   00000000 (0)\n+20DDE1 Compressed Size       00000002 (2)\n+20DDE5 Uncompressed Size     00000000 (0)\n \n-20B0DF LOCAL HEADER #1954    04034B50 (67324752)\n-20B0E3 Extract Zip Spec      14 (20) '2.0'\n-20B0E4 Extract OS            00 (0) 'MS-DOS'\n-20B0E5 General Purpose Flag  0808 (2056)\n+20DDE9 LOCAL HEADER #1954    04034B50 (67324752)\n+20DDED Extract Zip Spec      14 (20) '2.0'\n+20DDEE Extract OS            00 (0) 'MS-DOS'\n+20DDEF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20B0E7 Compression Method    0008 (8) 'Deflated'\n-20B0E9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20B0ED CRC                   00000000 (0)\n-20B0F1 Compressed Size       00000000 (0)\n-20B0F5 Uncompressed Size     00000000 (0)\n-20B0F9 Filename Length       0043 (67)\n-20B0FB Extra Length          0000 (0)\n-20B0FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20DDF1 Compression Method    0008 (8) 'Deflated'\n+20DDF3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20DDF7 CRC                   00000000 (0)\n+20DDFB Compressed Size       00000000 (0)\n+20DDFF Uncompressed Size     00000000 (0)\n+20DE03 Filename Length       0043 (67)\n+20DE05 Extra Length          0000 (0)\n+20DE07 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20B0FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20DE07: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20B140 PAYLOAD\n+20DE4A PAYLOAD\n \n-20B3CD DATA DESCRIPTOR       08074B50 (134695760)\n-20B3D1 CRC                   7E524C52 (2119322706)\n-20B3D5 Compressed Size       0000028D (653)\n-20B3D9 Uncompressed Size     0000083E (2110)\n+20E174 DATA DESCRIPTOR       08074B50 (134695760)\n+20E178 CRC                   19067571 (419853681)\n+20E17C Compressed Size       0000032A (810)\n+20E180 Uncompressed Size     000007B7 (1975)\n \n-20B3DD LOCAL HEADER #1955    04034B50 (67324752)\n-20B3E1 Extract Zip Spec      14 (20) '2.0'\n-20B3E2 Extract OS            00 (0) 'MS-DOS'\n-20B3E3 General Purpose Flag  0808 (2056)\n+20E184 LOCAL HEADER #1955    04034B50 (67324752)\n+20E188 Extract Zip Spec      14 (20) '2.0'\n+20E189 Extract OS            00 (0) 'MS-DOS'\n+20E18A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20B3E5 Compression Method    0008 (8) 'Deflated'\n-20B3E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20B3EB CRC                   00000000 (0)\n-20B3EF Compressed Size       00000000 (0)\n-20B3F3 Uncompressed Size     00000000 (0)\n-20B3F7 Filename Length       0026 (38)\n-20B3F9 Extra Length          0000 (0)\n-20B3FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20E18C Compression Method    0008 (8) 'Deflated'\n+20E18E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20E192 CRC                   00000000 (0)\n+20E196 Compressed Size       00000000 (0)\n+20E19A Uncompressed Size     00000000 (0)\n+20E19E Filename Length       004A (74)\n+20E1A0 Extra Length          0000 (0)\n+20E1A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20B3FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20E1A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20B421 PAYLOAD               XX\n+20E1EC PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20B423 DATA DESCRIPTOR       08074B50 (134695760)\n-20B427 CRC                   00000000 (0)\n-20B42B Compressed Size       00000002 (2)\n-20B42F Uncompressed Size     00000000 (0)\n+20E239 DATA DESCRIPTOR       08074B50 (134695760)\n+20E23D CRC                   B6221A00 (3055688192)\n+20E241 Compressed Size       0000004D (77)\n+20E245 Uncompressed Size     00000052 (82)\n \n-20B433 LOCAL HEADER #1956    04034B50 (67324752)\n-20B437 Extract Zip Spec      14 (20) '2.0'\n-20B438 Extract OS            00 (0) 'MS-DOS'\n-20B439 General Purpose Flag  0808 (2056)\n+20E249 LOCAL HEADER #1956    04034B50 (67324752)\n+20E24D Extract Zip Spec      14 (20) '2.0'\n+20E24E Extract OS            00 (0) 'MS-DOS'\n+20E24F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20B43B Compression Method    0008 (8) 'Deflated'\n-20B43D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20B441 CRC                   00000000 (0)\n-20B445 Compressed Size       00000000 (0)\n-20B449 Uncompressed Size     00000000 (0)\n-20B44D Filename Length       0044 (68)\n-20B44F Extra Length          0000 (0)\n-20B451 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20E251 Compression Method    0008 (8) 'Deflated'\n+20E253 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20E257 CRC                   00000000 (0)\n+20E25B Compressed Size       00000000 (0)\n+20E25F Uncompressed Size     00000000 (0)\n+20E263 Filename Length       0029 (41)\n+20E265 Extra Length          0000 (0)\n+20E267 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20B451: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20E267: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20B495 PAYLOAD\n+20E290 PAYLOAD               XX\n \n-20B800 DATA DESCRIPTOR       08074B50 (134695760)\n-20B804 CRC                   F93596DA (4181038810)\n-20B808 Compressed Size       0000036B (875)\n-20B80C Uncompressed Size     000008A5 (2213)\n+20E292 DATA DESCRIPTOR       08074B50 (134695760)\n+20E296 CRC                   00000000 (0)\n+20E29A Compressed Size       00000002 (2)\n+20E29E Uncompressed Size     00000000 (0)\n \n-20B810 LOCAL HEADER #1957    04034B50 (67324752)\n-20B814 Extract Zip Spec      14 (20) '2.0'\n-20B815 Extract OS            00 (0) 'MS-DOS'\n-20B816 General Purpose Flag  0808 (2056)\n+20E2A2 LOCAL HEADER #1957    04034B50 (67324752)\n+20E2A6 Extract Zip Spec      14 (20) '2.0'\n+20E2A7 Extract OS            00 (0) 'MS-DOS'\n+20E2A8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20B818 Compression Method    0008 (8) 'Deflated'\n-20B81A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20B81E CRC                   00000000 (0)\n-20B822 Compressed Size       00000000 (0)\n-20B826 Uncompressed Size     00000000 (0)\n-20B82A Filename Length       003E (62)\n-20B82C Extra Length          0000 (0)\n-20B82E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20E2AA Compression Method    0008 (8) 'Deflated'\n+20E2AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20E2B0 CRC                   00000000 (0)\n+20E2B4 Compressed Size       00000000 (0)\n+20E2B8 Uncompressed Size     00000000 (0)\n+20E2BC Filename Length       003F (63)\n+20E2BE Extra Length          0000 (0)\n+20E2C0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20B82E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20E2C0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20B86C PAYLOAD\n+20E2FF PAYLOAD\n \n-20C168 DATA DESCRIPTOR       08074B50 (134695760)\n-20C16C CRC                   6BCB8A4E (1808501326)\n-20C170 Compressed Size       000008FC (2300)\n-20C174 Uncompressed Size     00002868 (10344)\n+20E606 DATA DESCRIPTOR       08074B50 (134695760)\n+20E60A CRC                   C5E6E015 (3320242197)\n+20E60E Compressed Size       00000307 (775)\n+20E612 Uncompressed Size     000006C9 (1737)\n \n-20C178 LOCAL HEADER #1958    04034B50 (67324752)\n-20C17C Extract Zip Spec      14 (20) '2.0'\n-20C17D Extract OS            00 (0) 'MS-DOS'\n-20C17E General Purpose Flag  0808 (2056)\n+20E616 LOCAL HEADER #1958    04034B50 (67324752)\n+20E61A Extract Zip Spec      14 (20) '2.0'\n+20E61B Extract OS            00 (0) 'MS-DOS'\n+20E61C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20C180 Compression Method    0008 (8) 'Deflated'\n-20C182 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20C186 CRC                   00000000 (0)\n-20C18A Compressed Size       00000000 (0)\n-20C18E Uncompressed Size     00000000 (0)\n-20C192 Filename Length       0045 (69)\n-20C194 Extra Length          0000 (0)\n-20C196 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20E61E Compression Method    0008 (8) 'Deflated'\n+20E620 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20E624 CRC                   00000000 (0)\n+20E628 Compressed Size       00000000 (0)\n+20E62C Uncompressed Size     00000000 (0)\n+20E630 Filename Length       0044 (68)\n+20E632 Extra Length          0000 (0)\n+20E634 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20C196: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20E634: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20C1DB PAYLOAD\n+20E678 PAYLOAD\n \n-20C453 DATA DESCRIPTOR       08074B50 (134695760)\n-20C457 CRC                   030A303D (50999357)\n-20C45B Compressed Size       00000278 (632)\n-20C45F Uncompressed Size     00000501 (1281)\n+20F496 DATA DESCRIPTOR       08074B50 (134695760)\n+20F49A CRC                   95EACAEA (2515192554)\n+20F49E Compressed Size       00000E1E (3614)\n+20F4A2 Uncompressed Size     00005E4E (24142)\n \n-20C463 LOCAL HEADER #1959    04034B50 (67324752)\n-20C467 Extract Zip Spec      14 (20) '2.0'\n-20C468 Extract OS            00 (0) 'MS-DOS'\n-20C469 General Purpose Flag  0808 (2056)\n+20F4A6 LOCAL HEADER #1959    04034B50 (67324752)\n+20F4AA Extract Zip Spec      14 (20) '2.0'\n+20F4AB Extract OS            00 (0) 'MS-DOS'\n+20F4AC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20C46B Compression Method    0008 (8) 'Deflated'\n-20C46D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20C471 CRC                   00000000 (0)\n-20C475 Compressed Size       00000000 (0)\n-20C479 Uncompressed Size     00000000 (0)\n-20C47D Filename Length       0029 (41)\n-20C47F Extra Length          0000 (0)\n-20C481 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20F4AE Compression Method    0008 (8) 'Deflated'\n+20F4B0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20F4B4 CRC                   00000000 (0)\n+20F4B8 Compressed Size       00000000 (0)\n+20F4BC Uncompressed Size     00000000 (0)\n+20F4C0 Filename Length       004B (75)\n+20F4C2 Extra Length          0000 (0)\n+20F4C4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20C481: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20F4C4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20C4AA PAYLOAD               XX\n+20F50F PAYLOAD\n \n-20C4AC DATA DESCRIPTOR       08074B50 (134695760)\n-20C4B0 CRC                   00000000 (0)\n-20C4B4 Compressed Size       00000002 (2)\n-20C4B8 Uncompressed Size     00000000 (0)\n+20F77F DATA DESCRIPTOR       08074B50 (134695760)\n+20F783 CRC                   880754E1 (2282181857)\n+20F787 Compressed Size       00000270 (624)\n+20F78B Uncompressed Size     000004F3 (1267)\n \n-20C4BC LOCAL HEADER #1960    04034B50 (67324752)\n-20C4C0 Extract Zip Spec      14 (20) '2.0'\n-20C4C1 Extract OS            00 (0) 'MS-DOS'\n-20C4C2 General Purpose Flag  0808 (2056)\n+20F78F LOCAL HEADER #1960    04034B50 (67324752)\n+20F793 Extract Zip Spec      14 (20) '2.0'\n+20F794 Extract OS            00 (0) 'MS-DOS'\n+20F795 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20C4C4 Compression Method    0008 (8) 'Deflated'\n-20C4C6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20C4CA CRC                   00000000 (0)\n-20C4CE Compressed Size       00000000 (0)\n-20C4D2 Uncompressed Size     00000000 (0)\n-20C4D6 Filename Length       003F (63)\n-20C4D8 Extra Length          0000 (0)\n-20C4DA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20F797 Compression Method    0008 (8) 'Deflated'\n+20F799 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20F79D CRC                   00000000 (0)\n+20F7A1 Compressed Size       00000000 (0)\n+20F7A5 Uncompressed Size     00000000 (0)\n+20F7A9 Filename Length       0044 (68)\n+20F7AB Extra Length          0000 (0)\n+20F7AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20C4DA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20F7AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20C519 PAYLOAD\n+20F7F1 PAYLOAD\n \n-20C817 DATA DESCRIPTOR       08074B50 (134695760)\n-20C81B CRC                   AB30D581 (2872104321)\n-20C81F Compressed Size       000002FE (766)\n-20C823 Uncompressed Size     00000697 (1687)\n+20FC94 DATA DESCRIPTOR       08074B50 (134695760)\n+20FC98 CRC                   3DD6411C (1037451548)\n+20FC9C Compressed Size       000004A3 (1187)\n+20FCA0 Uncompressed Size     00000CAC (3244)\n \n-20C827 LOCAL HEADER #1961    04034B50 (67324752)\n-20C82B Extract Zip Spec      14 (20) '2.0'\n-20C82C Extract OS            00 (0) 'MS-DOS'\n-20C82D General Purpose Flag  0808 (2056)\n+20FCA4 LOCAL HEADER #1961    04034B50 (67324752)\n+20FCA8 Extract Zip Spec      14 (20) '2.0'\n+20FCA9 Extract OS            00 (0) 'MS-DOS'\n+20FCAA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20C82F Compression Method    0008 (8) 'Deflated'\n-20C831 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20C835 CRC                   00000000 (0)\n-20C839 Compressed Size       00000000 (0)\n-20C83D Uncompressed Size     00000000 (0)\n-20C841 Filename Length       0044 (68)\n-20C843 Extra Length          0000 (0)\n-20C845 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20FCAC Compression Method    0008 (8) 'Deflated'\n+20FCAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20FCB2 CRC                   00000000 (0)\n+20FCB6 Compressed Size       00000000 (0)\n+20FCBA Uncompressed Size     00000000 (0)\n+20FCBE Filename Length       003F (63)\n+20FCC0 Extra Length          0000 (0)\n+20FCC2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20C845: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20FCC2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20C889 PAYLOAD\n+20FD01 PAYLOAD               XX\n \n-20D685 DATA DESCRIPTOR       08074B50 (134695760)\n-20D689 CRC                   546B40F4 (1416315124)\n-20D68D Compressed Size       00000DFC (3580)\n-20D691 Uncompressed Size     00005C0A (23562)\n+20FD03 DATA DESCRIPTOR       08074B50 (134695760)\n+20FD07 CRC                   00000000 (0)\n+20FD0B Compressed Size       00000002 (2)\n+20FD0F Uncompressed Size     00000000 (0)\n \n-20D695 LOCAL HEADER #1962    04034B50 (67324752)\n-20D699 Extract Zip Spec      14 (20) '2.0'\n-20D69A Extract OS            00 (0) 'MS-DOS'\n-20D69B General Purpose Flag  0808 (2056)\n+20FD13 LOCAL HEADER #1962    04034B50 (67324752)\n+20FD17 Extract Zip Spec      14 (20) '2.0'\n+20FD18 Extract OS            00 (0) 'MS-DOS'\n+20FD19 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20D69D Compression Method    0008 (8) 'Deflated'\n-20D69F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20D6A3 CRC                   00000000 (0)\n-20D6A7 Compressed Size       00000000 (0)\n-20D6AB Uncompressed Size     00000000 (0)\n-20D6AF Filename Length       004B (75)\n-20D6B1 Extra Length          0000 (0)\n-20D6B3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+20FD1B Compression Method    0008 (8) 'Deflated'\n+20FD1D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+20FD21 CRC                   00000000 (0)\n+20FD25 Compressed Size       00000000 (0)\n+20FD29 Uncompressed Size     00000000 (0)\n+20FD2D Filename Length       0046 (70)\n+20FD2F Extra Length          0000 (0)\n+20FD31 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20D6B3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x20FD31: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20D6FE PAYLOAD\n+20FD77 PAYLOAD\n \n-20D965 DATA DESCRIPTOR       08074B50 (134695760)\n-20D969 CRC                   3F1A06E9 (1058670313)\n-20D96D Compressed Size       00000267 (615)\n-20D971 Uncompressed Size     000004D7 (1239)\n+21008B DATA DESCRIPTOR       08074B50 (134695760)\n+21008F CRC                   9E243A48 (2653174344)\n+210093 Compressed Size       00000314 (788)\n+210097 Uncompressed Size     000006E3 (1763)\n \n-20D975 LOCAL HEADER #1963    04034B50 (67324752)\n-20D979 Extract Zip Spec      14 (20) '2.0'\n-20D97A Extract OS            00 (0) 'MS-DOS'\n-20D97B General Purpose Flag  0808 (2056)\n+21009B LOCAL HEADER #1963    04034B50 (67324752)\n+21009F Extract Zip Spec      14 (20) '2.0'\n+2100A0 Extract OS            00 (0) 'MS-DOS'\n+2100A1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20D97D Compression Method    0008 (8) 'Deflated'\n-20D97F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20D983 CRC                   00000000 (0)\n-20D987 Compressed Size       00000000 (0)\n-20D98B Uncompressed Size     00000000 (0)\n-20D98F Filename Length       0044 (68)\n-20D991 Extra Length          0000 (0)\n-20D993 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2100A3 Compression Method    0008 (8) 'Deflated'\n+2100A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2100A9 CRC                   00000000 (0)\n+2100AD Compressed Size       00000000 (0)\n+2100B1 Uncompressed Size     00000000 (0)\n+2100B5 Filename Length       004D (77)\n+2100B7 Extra Length          0000 (0)\n+2100B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20D993: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2100B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20D9D7 PAYLOAD\n+210106 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20DE6F DATA DESCRIPTOR       08074B50 (134695760)\n-20DE73 CRC                   A5D0004C (2781872204)\n-20DE77 Compressed Size       00000498 (1176)\n-20DE7B Uncompressed Size     00000C55 (3157)\n+210155 DATA DESCRIPTOR       08074B50 (134695760)\n+210159 CRC                   B914F821 (3105159201)\n+21015D Compressed Size       0000004F (79)\n+210161 Uncompressed Size     00000055 (85)\n \n-20DE7F LOCAL HEADER #1964    04034B50 (67324752)\n-20DE83 Extract Zip Spec      14 (20) '2.0'\n-20DE84 Extract OS            00 (0) 'MS-DOS'\n-20DE85 General Purpose Flag  0808 (2056)\n+210165 LOCAL HEADER #1964    04034B50 (67324752)\n+210169 Extract Zip Spec      14 (20) '2.0'\n+21016A Extract OS            00 (0) 'MS-DOS'\n+21016B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20DE87 Compression Method    0008 (8) 'Deflated'\n-20DE89 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20DE8D CRC                   00000000 (0)\n-20DE91 Compressed Size       00000000 (0)\n-20DE95 Uncompressed Size     00000000 (0)\n-20DE99 Filename Length       0041 (65)\n-20DE9B Extra Length          0000 (0)\n-20DE9D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21016D Compression Method    0008 (8) 'Deflated'\n+21016F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+210173 CRC                   00000000 (0)\n+210177 Compressed Size       00000000 (0)\n+21017B Uncompressed Size     00000000 (0)\n+21017F Filename Length       0041 (65)\n+210181 Extra Length          0000 (0)\n+210183 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20DE9D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x210183: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20DEDE PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2101C4 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20DF31 DATA DESCRIPTOR       08074B50 (134695760)\n-20DF35 CRC                   7B0242B7 (2063745719)\n-20DF39 Compressed Size       00000053 (83)\n-20DF3D Uncompressed Size     000000C3 (195)\n+210217 DATA DESCRIPTOR       08074B50 (134695760)\n+21021B CRC                   7B0242B7 (2063745719)\n+21021F Compressed Size       00000053 (83)\n+210223 Uncompressed Size     000000C3 (195)\n \n-20DF41 LOCAL HEADER #1965    04034B50 (67324752)\n-20DF45 Extract Zip Spec      14 (20) '2.0'\n-20DF46 Extract OS            00 (0) 'MS-DOS'\n-20DF47 General Purpose Flag  0808 (2056)\n+210227 LOCAL HEADER #1965    04034B50 (67324752)\n+21022B Extract Zip Spec      14 (20) '2.0'\n+21022C Extract OS            00 (0) 'MS-DOS'\n+21022D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20DF49 Compression Method    0008 (8) 'Deflated'\n-20DF4B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20DF4F CRC                   00000000 (0)\n-20DF53 Compressed Size       00000000 (0)\n-20DF57 Uncompressed Size     00000000 (0)\n-20DF5B Filename Length       005F (95)\n-20DF5D Extra Length          0000 (0)\n-20DF5F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21022F Compression Method    0008 (8) 'Deflated'\n+210231 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+210235 CRC                   00000000 (0)\n+210239 Compressed Size       00000000 (0)\n+21023D Uncompressed Size     00000000 (0)\n+210241 Filename Length       005F (95)\n+210243 Extra Length          0000 (0)\n+210245 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20DF5F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x210245: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20DFBE PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n-                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2102A4 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20E065 DATA DESCRIPTOR       08074B50 (134695760)\n-20E069 CRC                   23C5150B (600118539)\n-20E06D Compressed Size       000000A7 (167)\n-20E071 Uncompressed Size     00000256 (598)\n+210350 DATA DESCRIPTOR       08074B50 (134695760)\n+210354 CRC                   2D373412 (758592530)\n+210358 Compressed Size       000000AC (172)\n+21035C Uncompressed Size     00000258 (600)\n \n-20E075 LOCAL HEADER #1966    04034B50 (67324752)\n-20E079 Extract Zip Spec      14 (20) '2.0'\n-20E07A Extract OS            00 (0) 'MS-DOS'\n-20E07B General Purpose Flag  0808 (2056)\n+210360 LOCAL HEADER #1966    04034B50 (67324752)\n+210364 Extract Zip Spec      14 (20) '2.0'\n+210365 Extract OS            00 (0) 'MS-DOS'\n+210366 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20E07D Compression Method    0008 (8) 'Deflated'\n-20E07F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20E083 CRC                   00000000 (0)\n-20E087 Compressed Size       00000000 (0)\n-20E08B Uncompressed Size     00000000 (0)\n-20E08F Filename Length       004A (74)\n-20E091 Extra Length          0000 (0)\n-20E093 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+210368 Compression Method    0008 (8) 'Deflated'\n+21036A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21036E CRC                   00000000 (0)\n+210372 Compressed Size       00000000 (0)\n+210376 Uncompressed Size     00000000 (0)\n+21037A Filename Length       004A (74)\n+21037C Extra Length          0000 (0)\n+21037E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20E093: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21037E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20E0DD PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2103C8 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20E140 DATA DESCRIPTOR       08074B50 (134695760)\n-20E144 CRC                   4749E288 (1196024456)\n-20E148 Compressed Size       00000063 (99)\n-20E14C Uncompressed Size     000000D6 (214)\n+21042B DATA DESCRIPTOR       08074B50 (134695760)\n+21042F CRC                   4749E288 (1196024456)\n+210433 Compressed Size       00000063 (99)\n+210437 Uncompressed Size     000000D6 (214)\n \n-20E150 LOCAL HEADER #1967    04034B50 (67324752)\n-20E154 Extract Zip Spec      14 (20) '2.0'\n-20E155 Extract OS            00 (0) 'MS-DOS'\n-20E156 General Purpose Flag  0808 (2056)\n+21043B LOCAL HEADER #1967    04034B50 (67324752)\n+21043F Extract Zip Spec      14 (20) '2.0'\n+210440 Extract OS            00 (0) 'MS-DOS'\n+210441 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20E158 Compression Method    0008 (8) 'Deflated'\n-20E15A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20E15E CRC                   00000000 (0)\n-20E162 Compressed Size       00000000 (0)\n-20E166 Uncompressed Size     00000000 (0)\n-20E16A Filename Length       0042 (66)\n-20E16C Extra Length          0000 (0)\n-20E16E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+210443 Compression Method    0008 (8) 'Deflated'\n+210445 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+210449 CRC                   00000000 (0)\n+21044D Compressed Size       00000000 (0)\n+210451 Uncompressed Size     00000000 (0)\n+210455 Filename Length       0042 (66)\n+210457 Extra Length          0000 (0)\n+210459 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20E16E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x210459: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20E1B0 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+21049B PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20E1EE DATA DESCRIPTOR       08074B50 (134695760)\n-20E1F2 CRC                   9BF7AC90 (2616700048)\n-20E1F6 Compressed Size       0000003E (62)\n-20E1FA Uncompressed Size     00000045 (69)\n+2104D9 DATA DESCRIPTOR       08074B50 (134695760)\n+2104DD CRC                   9BF7AC90 (2616700048)\n+2104E1 Compressed Size       0000003E (62)\n+2104E5 Uncompressed Size     00000045 (69)\n \n-20E1FE LOCAL HEADER #1968    04034B50 (67324752)\n-20E202 Extract Zip Spec      14 (20) '2.0'\n-20E203 Extract OS            00 (0) 'MS-DOS'\n-20E204 General Purpose Flag  0808 (2056)\n+2104E9 LOCAL HEADER #1968    04034B50 (67324752)\n+2104ED Extract Zip Spec      14 (20) '2.0'\n+2104EE Extract OS            00 (0) 'MS-DOS'\n+2104EF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20E206 Compression Method    0008 (8) 'Deflated'\n-20E208 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20E20C CRC                   00000000 (0)\n-20E210 Compressed Size       00000000 (0)\n-20E214 Uncompressed Size     00000000 (0)\n-20E218 Filename Length       0044 (68)\n-20E21A Extra Length          0000 (0)\n-20E21C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2104F1 Compression Method    0008 (8) 'Deflated'\n+2104F3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2104F7 CRC                   00000000 (0)\n+2104FB Compressed Size       00000000 (0)\n+2104FF Uncompressed Size     00000000 (0)\n+210503 Filename Length       0044 (68)\n+210505 Extra Length          0000 (0)\n+210507 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20E21C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x210507: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20E260 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+21054B PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20E2CA DATA DESCRIPTOR       08074B50 (134695760)\n-20E2CE CRC                   51878B1A (1367837466)\n-20E2D2 Compressed Size       0000006A (106)\n-20E2D6 Uncompressed Size     00000133 (307)\n+2105B5 DATA DESCRIPTOR       08074B50 (134695760)\n+2105B9 CRC                   51878B1A (1367837466)\n+2105BD Compressed Size       0000006A (106)\n+2105C1 Uncompressed Size     00000133 (307)\n \n-20E2DA LOCAL HEADER #1969    04034B50 (67324752)\n-20E2DE Extract Zip Spec      14 (20) '2.0'\n-20E2DF Extract OS            00 (0) 'MS-DOS'\n-20E2E0 General Purpose Flag  0808 (2056)\n+2105C5 LOCAL HEADER #1969    04034B50 (67324752)\n+2105C9 Extract Zip Spec      14 (20) '2.0'\n+2105CA Extract OS            00 (0) 'MS-DOS'\n+2105CB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20E2E2 Compression Method    0008 (8) 'Deflated'\n-20E2E4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20E2E8 CRC                   00000000 (0)\n-20E2EC Compressed Size       00000000 (0)\n-20E2F0 Uncompressed Size     00000000 (0)\n-20E2F4 Filename Length       0044 (68)\n-20E2F6 Extra Length          0000 (0)\n-20E2F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2105CD Compression Method    0008 (8) 'Deflated'\n+2105CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2105D3 CRC                   00000000 (0)\n+2105D7 Compressed Size       00000000 (0)\n+2105DB Uncompressed Size     00000000 (0)\n+2105DF Filename Length       0044 (68)\n+2105E1 Extra Length          0000 (0)\n+2105E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20E2F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2105E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20E33C PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+210627 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n                              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20E3E2 DATA DESCRIPTOR       08074B50 (134695760)\n-20E3E6 CRC                   D59F7213 (3583996435)\n-20E3EA Compressed Size       000000A6 (166)\n-20E3EE Uncompressed Size     000001E0 (480)\n+2106CD DATA DESCRIPTOR       08074B50 (134695760)\n+2106D1 CRC                   38FE5551 (956192081)\n+2106D5 Compressed Size       000000A6 (166)\n+2106D9 Uncompressed Size     000001E1 (481)\n \n-20E3F2 LOCAL HEADER #1970    04034B50 (67324752)\n-20E3F6 Extract Zip Spec      14 (20) '2.0'\n-20E3F7 Extract OS            00 (0) 'MS-DOS'\n-20E3F8 General Purpose Flag  0808 (2056)\n+2106DD LOCAL HEADER #1970    04034B50 (67324752)\n+2106E1 Extract Zip Spec      14 (20) '2.0'\n+2106E2 Extract OS            00 (0) 'MS-DOS'\n+2106E3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20E3FA Compression Method    0008 (8) 'Deflated'\n-20E3FC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20E400 CRC                   00000000 (0)\n-20E404 Compressed Size       00000000 (0)\n-20E408 Uncompressed Size     00000000 (0)\n-20E40C Filename Length       003F (63)\n-20E40E Extra Length          0000 (0)\n-20E410 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2106E5 Compression Method    0008 (8) 'Deflated'\n+2106E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2106EB CRC                   00000000 (0)\n+2106EF Compressed Size       00000000 (0)\n+2106F3 Uncompressed Size     00000000 (0)\n+2106F7 Filename Length       003F (63)\n+2106F9 Extra Length          0000 (0)\n+2106FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20E410: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2106FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20E44F PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+21073A PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20E489 DATA DESCRIPTOR       08074B50 (134695760)\n-20E48D CRC                   FD317E52 (4247879250)\n-20E491 Compressed Size       0000003A (58)\n-20E495 Uncompressed Size     0000003D (61)\n+210774 DATA DESCRIPTOR       08074B50 (134695760)\n+210778 CRC                   FD317E52 (4247879250)\n+21077C Compressed Size       0000003A (58)\n+210780 Uncompressed Size     0000003D (61)\n \n-20E499 LOCAL HEADER #1971    04034B50 (67324752)\n-20E49D Extract Zip Spec      14 (20) '2.0'\n-20E49E Extract OS            00 (0) 'MS-DOS'\n-20E49F General Purpose Flag  0808 (2056)\n+210784 LOCAL HEADER #1971    04034B50 (67324752)\n+210788 Extract Zip Spec      14 (20) '2.0'\n+210789 Extract OS            00 (0) 'MS-DOS'\n+21078A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20E4A1 Compression Method    0008 (8) 'Deflated'\n-20E4A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20E4A7 CRC                   00000000 (0)\n-20E4AB Compressed Size       00000000 (0)\n-20E4AF Uncompressed Size     00000000 (0)\n-20E4B3 Filename Length       0045 (69)\n-20E4B5 Extra Length          0000 (0)\n-20E4B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21078C Compression Method    0008 (8) 'Deflated'\n+21078E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+210792 CRC                   00000000 (0)\n+210796 Compressed Size       00000000 (0)\n+21079A Uncompressed Size     00000000 (0)\n+21079E Filename Length       0045 (69)\n+2107A0 Extra Length          0000 (0)\n+2107A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20E4B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2107A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20E4FC PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2107E7 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20E567 DATA DESCRIPTOR       08074B50 (134695760)\n-20E56B CRC                   C4F26B25 (3304221477)\n-20E56F Compressed Size       0000006B (107)\n-20E573 Uncompressed Size     0000012A (298)\n+210852 DATA DESCRIPTOR       08074B50 (134695760)\n+210856 CRC                   C4F26B25 (3304221477)\n+21085A Compressed Size       0000006B (107)\n+21085E Uncompressed Size     0000012A (298)\n \n-20E577 LOCAL HEADER #1972    04034B50 (67324752)\n-20E57B Extract Zip Spec      14 (20) '2.0'\n-20E57C Extract OS            00 (0) 'MS-DOS'\n-20E57D General Purpose Flag  0808 (2056)\n+210862 LOCAL HEADER #1972    04034B50 (67324752)\n+210866 Extract Zip Spec      14 (20) '2.0'\n+210867 Extract OS            00 (0) 'MS-DOS'\n+210868 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20E57F Compression Method    0008 (8) 'Deflated'\n-20E581 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20E585 CRC                   00000000 (0)\n-20E589 Compressed Size       00000000 (0)\n-20E58D Uncompressed Size     00000000 (0)\n-20E591 Filename Length       0047 (71)\n-20E593 Extra Length          0000 (0)\n-20E595 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21086A Compression Method    0008 (8) 'Deflated'\n+21086C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+210870 CRC                   00000000 (0)\n+210874 Compressed Size       00000000 (0)\n+210878 Uncompressed Size     00000000 (0)\n+21087C Filename Length       0047 (71)\n+21087E Extra Length          0000 (0)\n+210880 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20E595: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x210880: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20E5DC PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n-                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2108C7 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20E6D2 DATA DESCRIPTOR       08074B50 (134695760)\n-20E6D6 CRC                   5534192D (1429477677)\n-20E6DA Compressed Size       000000F6 (246)\n-20E6DE Uncompressed Size     00000409 (1033)\n+2109C4 DATA DESCRIPTOR       08074B50 (134695760)\n+2109C8 CRC                   BDA8469E (3181921950)\n+2109CC Compressed Size       000000FD (253)\n+2109D0 Uncompressed Size     0000040C (1036)\n \n-20E6E2 LOCAL HEADER #1973    04034B50 (67324752)\n-20E6E6 Extract Zip Spec      14 (20) '2.0'\n-20E6E7 Extract OS            00 (0) 'MS-DOS'\n-20E6E8 General Purpose Flag  0808 (2056)\n+2109D4 LOCAL HEADER #1973    04034B50 (67324752)\n+2109D8 Extract Zip Spec      14 (20) '2.0'\n+2109D9 Extract OS            00 (0) 'MS-DOS'\n+2109DA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20E6EA Compression Method    0008 (8) 'Deflated'\n-20E6EC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20E6F0 CRC                   00000000 (0)\n-20E6F4 Compressed Size       00000000 (0)\n-20E6F8 Uncompressed Size     00000000 (0)\n-20E6FC Filename Length       003C (60)\n-20E6FE Extra Length          0000 (0)\n-20E700 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2109DC Compression Method    0008 (8) 'Deflated'\n+2109DE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2109E2 CRC                   00000000 (0)\n+2109E6 Compressed Size       00000000 (0)\n+2109EA Uncompressed Size     00000000 (0)\n+2109EE Filename Length       003C (60)\n+2109F0 Extra Length          0000 (0)\n+2109F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20E700: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2109F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20E73C PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+210A2E PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n                              X\n \n-20E7C2 DATA DESCRIPTOR       08074B50 (134695760)\n-20E7C6 CRC                   B02A8DBF (2955578815)\n-20E7CA Compressed Size       00000086 (134)\n-20E7CE Uncompressed Size     000001A4 (420)\n+210AB4 DATA DESCRIPTOR       08074B50 (134695760)\n+210AB8 CRC                   B02A8DBF (2955578815)\n+210ABC Compressed Size       00000086 (134)\n+210AC0 Uncompressed Size     000001A4 (420)\n \n-20E7D2 LOCAL HEADER #1974    04034B50 (67324752)\n-20E7D6 Extract Zip Spec      14 (20) '2.0'\n-20E7D7 Extract OS            00 (0) 'MS-DOS'\n-20E7D8 General Purpose Flag  0808 (2056)\n+210AC4 LOCAL HEADER #1974    04034B50 (67324752)\n+210AC8 Extract Zip Spec      14 (20) '2.0'\n+210AC9 Extract OS            00 (0) 'MS-DOS'\n+210ACA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20E7DA Compression Method    0008 (8) 'Deflated'\n-20E7DC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20E7E0 CRC                   00000000 (0)\n-20E7E4 Compressed Size       00000000 (0)\n-20E7E8 Uncompressed Size     00000000 (0)\n-20E7EC Filename Length       0038 (56)\n-20E7EE Extra Length          0000 (0)\n-20E7F0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+210ACC Compression Method    0008 (8) 'Deflated'\n+210ACE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+210AD2 CRC                   00000000 (0)\n+210AD6 Compressed Size       00000000 (0)\n+210ADA Uncompressed Size     00000000 (0)\n+210ADE Filename Length       0038 (56)\n+210AE0 Extra Length          0000 (0)\n+210AE2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20E7F0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x210AE2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20E828 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+210B1A PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20E8A6 DATA DESCRIPTOR       08074B50 (134695760)\n-20E8AA CRC                   83B04446 (2209367110)\n-20E8AE Compressed Size       0000007E (126)\n-20E8B2 Uncompressed Size     00000131 (305)\n+210B98 DATA DESCRIPTOR       08074B50 (134695760)\n+210B9C CRC                   83B04446 (2209367110)\n+210BA0 Compressed Size       0000007E (126)\n+210BA4 Uncompressed Size     00000131 (305)\n \n-20E8B6 LOCAL HEADER #1975    04034B50 (67324752)\n-20E8BA Extract Zip Spec      14 (20) '2.0'\n-20E8BB Extract OS            00 (0) 'MS-DOS'\n-20E8BC General Purpose Flag  0808 (2056)\n+210BA8 LOCAL HEADER #1975    04034B50 (67324752)\n+210BAC Extract Zip Spec      14 (20) '2.0'\n+210BAD Extract OS            00 (0) 'MS-DOS'\n+210BAE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20E8BE Compression Method    0008 (8) 'Deflated'\n-20E8C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20E8C4 CRC                   00000000 (0)\n-20E8C8 Compressed Size       00000000 (0)\n-20E8CC Uncompressed Size     00000000 (0)\n-20E8D0 Filename Length       003D (61)\n-20E8D2 Extra Length          0000 (0)\n-20E8D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+210BB0 Compression Method    0008 (8) 'Deflated'\n+210BB2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+210BB6 CRC                   00000000 (0)\n+210BBA Compressed Size       00000000 (0)\n+210BBE Uncompressed Size     00000000 (0)\n+210BC2 Filename Length       003D (61)\n+210BC4 Extra Length          0000 (0)\n+210BC6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20E8D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x210BC6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20E911 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+210C03 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20E978 DATA DESCRIPTOR       08074B50 (134695760)\n-20E97C CRC                   605C157F (1616647551)\n-20E980 Compressed Size       00000067 (103)\n-20E984 Uncompressed Size     0000014D (333)\n+210C6A DATA DESCRIPTOR       08074B50 (134695760)\n+210C6E CRC                   605C157F (1616647551)\n+210C72 Compressed Size       00000067 (103)\n+210C76 Uncompressed Size     0000014D (333)\n \n-20E988 LOCAL HEADER #1976    04034B50 (67324752)\n-20E98C Extract Zip Spec      14 (20) '2.0'\n-20E98D Extract OS            00 (0) 'MS-DOS'\n-20E98E General Purpose Flag  0808 (2056)\n+210C7A LOCAL HEADER #1976    04034B50 (67324752)\n+210C7E Extract Zip Spec      14 (20) '2.0'\n+210C7F Extract OS            00 (0) 'MS-DOS'\n+210C80 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20E990 Compression Method    0008 (8) 'Deflated'\n-20E992 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20E996 CRC                   00000000 (0)\n-20E99A Compressed Size       00000000 (0)\n-20E99E Uncompressed Size     00000000 (0)\n-20E9A2 Filename Length       0044 (68)\n-20E9A4 Extra Length          0000 (0)\n-20E9A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+210C82 Compression Method    0008 (8) 'Deflated'\n+210C84 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+210C88 CRC                   00000000 (0)\n+210C8C Compressed Size       00000000 (0)\n+210C90 Uncompressed Size     00000000 (0)\n+210C94 Filename Length       0044 (68)\n+210C96 Extra Length          0000 (0)\n+210C98 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20E9A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x210C98: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20E9EA PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+210CDC PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20EA29 DATA DESCRIPTOR       08074B50 (134695760)\n-20EA2D CRC                   E21BFF73 (3793485683)\n-20EA31 Compressed Size       0000003F (63)\n-20EA35 Uncompressed Size     00000049 (73)\n+210D1B DATA DESCRIPTOR       08074B50 (134695760)\n+210D1F CRC                   E21BFF73 (3793485683)\n+210D23 Compressed Size       0000003F (63)\n+210D27 Uncompressed Size     00000049 (73)\n \n-20EA39 LOCAL HEADER #1977    04034B50 (67324752)\n-20EA3D Extract Zip Spec      14 (20) '2.0'\n-20EA3E Extract OS            00 (0) 'MS-DOS'\n-20EA3F General Purpose Flag  0808 (2056)\n+210D2B LOCAL HEADER #1977    04034B50 (67324752)\n+210D2F Extract Zip Spec      14 (20) '2.0'\n+210D30 Extract OS            00 (0) 'MS-DOS'\n+210D31 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20EA41 Compression Method    0008 (8) 'Deflated'\n-20EA43 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20EA47 CRC                   00000000 (0)\n-20EA4B Compressed Size       00000000 (0)\n-20EA4F Uncompressed Size     00000000 (0)\n-20EA53 Filename Length       0041 (65)\n-20EA55 Extra Length          0000 (0)\n-20EA57 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+210D33 Compression Method    0008 (8) 'Deflated'\n+210D35 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+210D39 CRC                   00000000 (0)\n+210D3D Compressed Size       00000000 (0)\n+210D41 Uncompressed Size     00000000 (0)\n+210D45 Filename Length       0041 (65)\n+210D47 Extra Length          0000 (0)\n+210D49 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20EA57: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x210D49: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20EA98 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+210D8A PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20EAF7 DATA DESCRIPTOR       08074B50 (134695760)\n-20EAFB CRC                   78354721 (2016757537)\n-20EAFF Compressed Size       0000005F (95)\n-20EB03 Uncompressed Size     000000F8 (248)\n+210DE9 DATA DESCRIPTOR       08074B50 (134695760)\n+210DED CRC                   78354721 (2016757537)\n+210DF1 Compressed Size       0000005F (95)\n+210DF5 Uncompressed Size     000000F8 (248)\n \n-20EB07 LOCAL HEADER #1978    04034B50 (67324752)\n-20EB0B Extract Zip Spec      14 (20) '2.0'\n-20EB0C Extract OS            00 (0) 'MS-DOS'\n-20EB0D General Purpose Flag  0808 (2056)\n+210DF9 LOCAL HEADER #1978    04034B50 (67324752)\n+210DFD Extract Zip Spec      14 (20) '2.0'\n+210DFE Extract OS            00 (0) 'MS-DOS'\n+210DFF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20EB0F Compression Method    0008 (8) 'Deflated'\n-20EB11 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20EB15 CRC                   00000000 (0)\n-20EB19 Compressed Size       00000000 (0)\n-20EB1D Uncompressed Size     00000000 (0)\n-20EB21 Filename Length       003F (63)\n-20EB23 Extra Length          0000 (0)\n-20EB25 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+210E01 Compression Method    0008 (8) 'Deflated'\n+210E03 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+210E07 CRC                   00000000 (0)\n+210E0B Compressed Size       00000000 (0)\n+210E0F Uncompressed Size     00000000 (0)\n+210E13 Filename Length       003F (63)\n+210E15 Extra Length          0000 (0)\n+210E17 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20EB25: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x210E17: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20EB64 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+210E56 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20EBB0 DATA DESCRIPTOR       08074B50 (134695760)\n-20EBB4 CRC                   3693E7D5 (915662805)\n-20EBB8 Compressed Size       0000004C (76)\n-20EBBC Uncompressed Size     0000007D (125)\n+210EA2 DATA DESCRIPTOR       08074B50 (134695760)\n+210EA6 CRC                   3693E7D5 (915662805)\n+210EAA Compressed Size       0000004C (76)\n+210EAE Uncompressed Size     0000007D (125)\n \n-20EBC0 LOCAL HEADER #1979    04034B50 (67324752)\n-20EBC4 Extract Zip Spec      14 (20) '2.0'\n-20EBC5 Extract OS            00 (0) 'MS-DOS'\n-20EBC6 General Purpose Flag  0808 (2056)\n+210EB2 LOCAL HEADER #1979    04034B50 (67324752)\n+210EB6 Extract Zip Spec      14 (20) '2.0'\n+210EB7 Extract OS            00 (0) 'MS-DOS'\n+210EB8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20EBC8 Compression Method    0008 (8) 'Deflated'\n-20EBCA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20EBCE CRC                   00000000 (0)\n-20EBD2 Compressed Size       00000000 (0)\n-20EBD6 Uncompressed Size     00000000 (0)\n-20EBDA Filename Length       0046 (70)\n-20EBDC Extra Length          0000 (0)\n-20EBDE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+210EBA Compression Method    0008 (8) 'Deflated'\n+210EBC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+210EC0 CRC                   00000000 (0)\n+210EC4 Compressed Size       00000000 (0)\n+210EC8 Uncompressed Size     00000000 (0)\n+210ECC Filename Length       0046 (70)\n+210ECE Extra Length          0000 (0)\n+210ED0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20EBDE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x210ED0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20EC24 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+210F16 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n                              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20ECF1 DATA DESCRIPTOR       08074B50 (134695760)\n-20ECF5 CRC                   F5C1516B (4123087211)\n-20ECF9 Compressed Size       000000CD (205)\n-20ECFD Uncompressed Size     0000034D (845)\n+210FE3 DATA DESCRIPTOR       08074B50 (134695760)\n+210FE7 CRC                   97778096 (2541191318)\n+210FEB Compressed Size       000000CD (205)\n+210FEF Uncompressed Size     00000355 (853)\n \n-20ED01 LOCAL HEADER #1980    04034B50 (67324752)\n-20ED05 Extract Zip Spec      14 (20) '2.0'\n-20ED06 Extract OS            00 (0) 'MS-DOS'\n-20ED07 General Purpose Flag  0808 (2056)\n+210FF3 LOCAL HEADER #1980    04034B50 (67324752)\n+210FF7 Extract Zip Spec      14 (20) '2.0'\n+210FF8 Extract OS            00 (0) 'MS-DOS'\n+210FF9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20ED09 Compression Method    0008 (8) 'Deflated'\n-20ED0B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20ED0F CRC                   00000000 (0)\n-20ED13 Compressed Size       00000000 (0)\n-20ED17 Uncompressed Size     00000000 (0)\n-20ED1B Filename Length       0050 (80)\n-20ED1D Extra Length          0000 (0)\n-20ED1F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+210FFB Compression Method    0008 (8) 'Deflated'\n+210FFD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+211001 CRC                   00000000 (0)\n+211005 Compressed Size       00000000 (0)\n+211009 Uncompressed Size     00000000 (0)\n+21100D Filename Length       0050 (80)\n+21100F Extra Length          0000 (0)\n+211011 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20ED1F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x211011: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20ED6F PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+211061 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20EDB4 DATA DESCRIPTOR       08074B50 (134695760)\n-20EDB8 CRC                   80A8E0CE (2158551246)\n-20EDBC Compressed Size       00000045 (69)\n-20EDC0 Uncompressed Size     00000052 (82)\n+2110A6 DATA DESCRIPTOR       08074B50 (134695760)\n+2110AA CRC                   80A8E0CE (2158551246)\n+2110AE Compressed Size       00000045 (69)\n+2110B2 Uncompressed Size     00000052 (82)\n \n-20EDC4 LOCAL HEADER #1981    04034B50 (67324752)\n-20EDC8 Extract Zip Spec      14 (20) '2.0'\n-20EDC9 Extract OS            00 (0) 'MS-DOS'\n-20EDCA General Purpose Flag  0808 (2056)\n+2110B6 LOCAL HEADER #1981    04034B50 (67324752)\n+2110BA Extract Zip Spec      14 (20) '2.0'\n+2110BB Extract OS            00 (0) 'MS-DOS'\n+2110BC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20EDCC Compression Method    0008 (8) 'Deflated'\n-20EDCE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20EDD2 CRC                   00000000 (0)\n-20EDD6 Compressed Size       00000000 (0)\n-20EDDA Uncompressed Size     00000000 (0)\n-20EDDE Filename Length       0035 (53)\n-20EDE0 Extra Length          0000 (0)\n-20EDE2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2110BE Compression Method    0008 (8) 'Deflated'\n+2110C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2110C4 CRC                   00000000 (0)\n+2110C8 Compressed Size       00000000 (0)\n+2110CC Uncompressed Size     00000000 (0)\n+2110D0 Filename Length       0035 (53)\n+2110D2 Extra Length          0000 (0)\n+2110D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20EDE2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2110D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20EE17 PAYLOAD\n+211109 PAYLOAD\n \n-20EF54 DATA DESCRIPTOR       08074B50 (134695760)\n-20EF58 CRC                   9B0B664B (2601215563)\n-20EF5C Compressed Size       0000013D (317)\n-20EF60 Uncompressed Size     00000489 (1161)\n+211249 DATA DESCRIPTOR       08074B50 (134695760)\n+21124D CRC                   0C25920C (203788812)\n+211251 Compressed Size       00000140 (320)\n+211255 Uncompressed Size     0000048A (1162)\n \n-20EF64 LOCAL HEADER #1982    04034B50 (67324752)\n-20EF68 Extract Zip Spec      14 (20) '2.0'\n-20EF69 Extract OS            00 (0) 'MS-DOS'\n-20EF6A General Purpose Flag  0808 (2056)\n+211259 LOCAL HEADER #1982    04034B50 (67324752)\n+21125D Extract Zip Spec      14 (20) '2.0'\n+21125E Extract OS            00 (0) 'MS-DOS'\n+21125F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20EF6C Compression Method    0008 (8) 'Deflated'\n-20EF6E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20EF72 CRC                   00000000 (0)\n-20EF76 Compressed Size       00000000 (0)\n-20EF7A Uncompressed Size     00000000 (0)\n-20EF7E Filename Length       0033 (51)\n-20EF80 Extra Length          0000 (0)\n-20EF82 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+211261 Compression Method    0008 (8) 'Deflated'\n+211263 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+211267 CRC                   00000000 (0)\n+21126B Compressed Size       00000000 (0)\n+21126F Uncompressed Size     00000000 (0)\n+211273 Filename Length       0033 (51)\n+211275 Extra Length          0000 (0)\n+211277 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20EF82: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x211277: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20EFB5 PAYLOAD\n+2112AA PAYLOAD\n \n-20F0E4 DATA DESCRIPTOR       08074B50 (134695760)\n-20F0E8 CRC                   A8176C28 (2820107304)\n-20F0EC Compressed Size       0000012F (303)\n-20F0F0 Uncompressed Size     0000048F (1167)\n+2113D9 DATA DESCRIPTOR       08074B50 (134695760)\n+2113DD CRC                   ECAE314A (3970838858)\n+2113E1 Compressed Size       0000012F (303)\n+2113E5 Uncompressed Size     00000491 (1169)\n \n-20F0F4 LOCAL HEADER #1983    04034B50 (67324752)\n-20F0F8 Extract Zip Spec      14 (20) '2.0'\n-20F0F9 Extract OS            00 (0) 'MS-DOS'\n-20F0FA General Purpose Flag  0808 (2056)\n+2113E9 LOCAL HEADER #1983    04034B50 (67324752)\n+2113ED Extract Zip Spec      14 (20) '2.0'\n+2113EE Extract OS            00 (0) 'MS-DOS'\n+2113EF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20F0FC Compression Method    0008 (8) 'Deflated'\n-20F0FE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20F102 CRC                   00000000 (0)\n-20F106 Compressed Size       00000000 (0)\n-20F10A Uncompressed Size     00000000 (0)\n-20F10E Filename Length       003C (60)\n-20F110 Extra Length          0000 (0)\n-20F112 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2113F1 Compression Method    0008 (8) 'Deflated'\n+2113F3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2113F7 CRC                   00000000 (0)\n+2113FB Compressed Size       00000000 (0)\n+2113FF Uncompressed Size     00000000 (0)\n+211403 Filename Length       003C (60)\n+211405 Extra Length          0000 (0)\n+211407 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20F112: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x211407: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20F14E PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+211443 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20F187 DATA DESCRIPTOR       08074B50 (134695760)\n-20F18B CRC                   2F399EBD (792305341)\n-20F18F Compressed Size       00000039 (57)\n-20F193 Uncompressed Size     00000043 (67)\n+21147C DATA DESCRIPTOR       08074B50 (134695760)\n+211480 CRC                   2F399EBD (792305341)\n+211484 Compressed Size       00000039 (57)\n+211488 Uncompressed Size     00000043 (67)\n \n-20F197 LOCAL HEADER #1984    04034B50 (67324752)\n-20F19B Extract Zip Spec      14 (20) '2.0'\n-20F19C Extract OS            00 (0) 'MS-DOS'\n-20F19D General Purpose Flag  0808 (2056)\n+21148C LOCAL HEADER #1984    04034B50 (67324752)\n+211490 Extract Zip Spec      14 (20) '2.0'\n+211491 Extract OS            00 (0) 'MS-DOS'\n+211492 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20F19F Compression Method    0008 (8) 'Deflated'\n-20F1A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20F1A5 CRC                   00000000 (0)\n-20F1A9 Compressed Size       00000000 (0)\n-20F1AD Uncompressed Size     00000000 (0)\n-20F1B1 Filename Length       0039 (57)\n-20F1B3 Extra Length          0000 (0)\n-20F1B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+211494 Compression Method    0008 (8) 'Deflated'\n+211496 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21149A CRC                   00000000 (0)\n+21149E Compressed Size       00000000 (0)\n+2114A2 Uncompressed Size     00000000 (0)\n+2114A6 Filename Length       0039 (57)\n+2114A8 Extra Length          0000 (0)\n+2114AA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20F1B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2114AA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20F1EE PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2114E3 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20F24C DATA DESCRIPTOR       08074B50 (134695760)\n-20F250 CRC                   ED03E48F (3976455311)\n-20F254 Compressed Size       0000005E (94)\n-20F258 Uncompressed Size     000000BA (186)\n+211541 DATA DESCRIPTOR       08074B50 (134695760)\n+211545 CRC                   ED03E48F (3976455311)\n+211549 Compressed Size       0000005E (94)\n+21154D Uncompressed Size     000000BA (186)\n \n-20F25C LOCAL HEADER #1985    04034B50 (67324752)\n-20F260 Extract Zip Spec      14 (20) '2.0'\n-20F261 Extract OS            00 (0) 'MS-DOS'\n-20F262 General Purpose Flag  0808 (2056)\n+211551 LOCAL HEADER #1985    04034B50 (67324752)\n+211555 Extract Zip Spec      14 (20) '2.0'\n+211556 Extract OS            00 (0) 'MS-DOS'\n+211557 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20F264 Compression Method    0008 (8) 'Deflated'\n-20F266 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20F26A CRC                   00000000 (0)\n-20F26E Compressed Size       00000000 (0)\n-20F272 Uncompressed Size     00000000 (0)\n-20F276 Filename Length       003C (60)\n-20F278 Extra Length          0000 (0)\n-20F27A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+211559 Compression Method    0008 (8) 'Deflated'\n+21155B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21155F CRC                   00000000 (0)\n+211563 Compressed Size       00000000 (0)\n+211567 Uncompressed Size     00000000 (0)\n+21156B Filename Length       003C (60)\n+21156D Extra Length          0000 (0)\n+21156F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20F27A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21156F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20F2B6 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2115AB PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n                              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20F362 DATA DESCRIPTOR       08074B50 (134695760)\n-20F366 CRC                   72D50831 (1926563889)\n-20F36A Compressed Size       000000AC (172)\n-20F36E Uncompressed Size     0000028C (652)\n+211657 DATA DESCRIPTOR       08074B50 (134695760)\n+21165B CRC                   72D50831 (1926563889)\n+21165F Compressed Size       000000AC (172)\n+211663 Uncompressed Size     0000028C (652)\n \n-20F372 LOCAL HEADER #1986    04034B50 (67324752)\n-20F376 Extract Zip Spec      14 (20) '2.0'\n-20F377 Extract OS            00 (0) 'MS-DOS'\n-20F378 General Purpose Flag  0808 (2056)\n+211667 LOCAL HEADER #1986    04034B50 (67324752)\n+21166B Extract Zip Spec      14 (20) '2.0'\n+21166C Extract OS            00 (0) 'MS-DOS'\n+21166D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20F37A Compression Method    0008 (8) 'Deflated'\n-20F37C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20F380 CRC                   00000000 (0)\n-20F384 Compressed Size       00000000 (0)\n-20F388 Uncompressed Size     00000000 (0)\n-20F38C Filename Length       0040 (64)\n-20F38E Extra Length          0000 (0)\n-20F390 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21166F Compression Method    0008 (8) 'Deflated'\n+211671 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+211675 CRC                   00000000 (0)\n+211679 Compressed Size       00000000 (0)\n+21167D Uncompressed Size     00000000 (0)\n+211681 Filename Length       0040 (64)\n+211683 Extra Length          0000 (0)\n+211685 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20F390: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x211685: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20F3D0 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2116C5 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n                              XXXXX\n \n-20F45A DATA DESCRIPTOR       08074B50 (134695760)\n-20F45E CRC                   388E9B78 (948870008)\n-20F462 Compressed Size       0000008A (138)\n-20F466 Uncompressed Size     00000184 (388)\n+21174F DATA DESCRIPTOR       08074B50 (134695760)\n+211753 CRC                   388E9B78 (948870008)\n+211757 Compressed Size       0000008A (138)\n+21175B Uncompressed Size     00000184 (388)\n \n-20F46A LOCAL HEADER #1987    04034B50 (67324752)\n-20F46E Extract Zip Spec      14 (20) '2.0'\n-20F46F Extract OS            00 (0) 'MS-DOS'\n-20F470 General Purpose Flag  0808 (2056)\n+21175F LOCAL HEADER #1987    04034B50 (67324752)\n+211763 Extract Zip Spec      14 (20) '2.0'\n+211764 Extract OS            00 (0) 'MS-DOS'\n+211765 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20F472 Compression Method    0008 (8) 'Deflated'\n-20F474 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20F478 CRC                   00000000 (0)\n-20F47C Compressed Size       00000000 (0)\n-20F480 Uncompressed Size     00000000 (0)\n-20F484 Filename Length       003B (59)\n-20F486 Extra Length          0000 (0)\n-20F488 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+211767 Compression Method    0008 (8) 'Deflated'\n+211769 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21176D CRC                   00000000 (0)\n+211771 Compressed Size       00000000 (0)\n+211775 Uncompressed Size     00000000 (0)\n+211779 Filename Length       003B (59)\n+21177B Extra Length          0000 (0)\n+21177D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20F488: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21177D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20F4C3 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2117B8 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n                              XXXXXXXXXXXXXXXXXX\n \n-20F55A DATA DESCRIPTOR       08074B50 (134695760)\n-20F55E CRC                   6F4CF591 (1867314577)\n-20F562 Compressed Size       00000097 (151)\n-20F566 Uncompressed Size     00000278 (632)\n+21184F DATA DESCRIPTOR       08074B50 (134695760)\n+211853 CRC                   6F4CF591 (1867314577)\n+211857 Compressed Size       00000097 (151)\n+21185B Uncompressed Size     00000278 (632)\n \n-20F56A LOCAL HEADER #1988    04034B50 (67324752)\n-20F56E Extract Zip Spec      14 (20) '2.0'\n-20F56F Extract OS            00 (0) 'MS-DOS'\n-20F570 General Purpose Flag  0808 (2056)\n+21185F LOCAL HEADER #1988    04034B50 (67324752)\n+211863 Extract Zip Spec      14 (20) '2.0'\n+211864 Extract OS            00 (0) 'MS-DOS'\n+211865 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20F572 Compression Method    0008 (8) 'Deflated'\n-20F574 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20F578 CRC                   00000000 (0)\n-20F57C Compressed Size       00000000 (0)\n-20F580 Uncompressed Size     00000000 (0)\n-20F584 Filename Length       0042 (66)\n-20F586 Extra Length          0000 (0)\n-20F588 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+211867 Compression Method    0008 (8) 'Deflated'\n+211869 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21186D CRC                   00000000 (0)\n+211871 Compressed Size       00000000 (0)\n+211875 Uncompressed Size     00000000 (0)\n+211879 Filename Length       0042 (66)\n+21187B Extra Length          0000 (0)\n+21187D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20F588: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21187D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20F5CA PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2118BF PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n                              X\n \n-20F650 DATA DESCRIPTOR       08074B50 (134695760)\n-20F654 CRC                   4D30A945 (1295034693)\n-20F658 Compressed Size       00000086 (134)\n-20F65C Uncompressed Size     000001AF (431)\n+211945 DATA DESCRIPTOR       08074B50 (134695760)\n+211949 CRC                   4D30A945 (1295034693)\n+21194D Compressed Size       00000086 (134)\n+211951 Uncompressed Size     000001AF (431)\n \n-20F660 LOCAL HEADER #1989    04034B50 (67324752)\n-20F664 Extract Zip Spec      14 (20) '2.0'\n-20F665 Extract OS            00 (0) 'MS-DOS'\n-20F666 General Purpose Flag  0808 (2056)\n+211955 LOCAL HEADER #1989    04034B50 (67324752)\n+211959 Extract Zip Spec      14 (20) '2.0'\n+21195A Extract OS            00 (0) 'MS-DOS'\n+21195B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20F668 Compression Method    0008 (8) 'Deflated'\n-20F66A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20F66E CRC                   00000000 (0)\n-20F672 Compressed Size       00000000 (0)\n-20F676 Uncompressed Size     00000000 (0)\n-20F67A Filename Length       0048 (72)\n-20F67C Extra Length          0000 (0)\n-20F67E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21195D Compression Method    0008 (8) 'Deflated'\n+21195F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+211963 CRC                   00000000 (0)\n+211967 Compressed Size       00000000 (0)\n+21196B Uncompressed Size     00000000 (0)\n+21196F Filename Length       0048 (72)\n+211971 Extra Length          0000 (0)\n+211973 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20F67E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x211973: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20F6C6 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2119BB PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20F71E DATA DESCRIPTOR       08074B50 (134695760)\n-20F722 CRC                   B1A9D94F (2980698447)\n-20F726 Compressed Size       00000058 (88)\n-20F72A Uncompressed Size     000000AB (171)\n+211A13 DATA DESCRIPTOR       08074B50 (134695760)\n+211A17 CRC                   B1A9D94F (2980698447)\n+211A1B Compressed Size       00000058 (88)\n+211A1F Uncompressed Size     000000AB (171)\n \n-20F72E LOCAL HEADER #1990    04034B50 (67324752)\n-20F732 Extract Zip Spec      14 (20) '2.0'\n-20F733 Extract OS            00 (0) 'MS-DOS'\n-20F734 General Purpose Flag  0808 (2056)\n+211A23 LOCAL HEADER #1990    04034B50 (67324752)\n+211A27 Extract Zip Spec      14 (20) '2.0'\n+211A28 Extract OS            00 (0) 'MS-DOS'\n+211A29 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20F736 Compression Method    0008 (8) 'Deflated'\n-20F738 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20F73C CRC                   00000000 (0)\n-20F740 Compressed Size       00000000 (0)\n-20F744 Uncompressed Size     00000000 (0)\n-20F748 Filename Length       003C (60)\n-20F74A Extra Length          0000 (0)\n-20F74C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+211A2B Compression Method    0008 (8) 'Deflated'\n+211A2D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+211A31 CRC                   00000000 (0)\n+211A35 Compressed Size       00000000 (0)\n+211A39 Uncompressed Size     00000000 (0)\n+211A3D Filename Length       003C (60)\n+211A3F Extra Length          0000 (0)\n+211A41 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20F74C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x211A41: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20F788 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+211A7D PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20F7D3 DATA DESCRIPTOR       08074B50 (134695760)\n-20F7D7 CRC                   1CB10FC5 (481365957)\n-20F7DB Compressed Size       0000004B (75)\n-20F7DF Uncompressed Size     000000AB (171)\n+211AC8 DATA DESCRIPTOR       08074B50 (134695760)\n+211ACC CRC                   1CB10FC5 (481365957)\n+211AD0 Compressed Size       0000004B (75)\n+211AD4 Uncompressed Size     000000AB (171)\n \n-20F7E3 LOCAL HEADER #1991    04034B50 (67324752)\n-20F7E7 Extract Zip Spec      14 (20) '2.0'\n-20F7E8 Extract OS            00 (0) 'MS-DOS'\n-20F7E9 General Purpose Flag  0808 (2056)\n+211AD8 LOCAL HEADER #1991    04034B50 (67324752)\n+211ADC Extract Zip Spec      14 (20) '2.0'\n+211ADD Extract OS            00 (0) 'MS-DOS'\n+211ADE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20F7EB Compression Method    0008 (8) 'Deflated'\n-20F7ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20F7F1 CRC                   00000000 (0)\n-20F7F5 Compressed Size       00000000 (0)\n-20F7F9 Uncompressed Size     00000000 (0)\n-20F7FD Filename Length       003F (63)\n-20F7FF Extra Length          0000 (0)\n-20F801 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+211AE0 Compression Method    0008 (8) 'Deflated'\n+211AE2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+211AE6 CRC                   00000000 (0)\n+211AEA Compressed Size       00000000 (0)\n+211AEE Uncompressed Size     00000000 (0)\n+211AF2 Filename Length       003F (63)\n+211AF4 Extra Length          0000 (0)\n+211AF6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20F801: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x211AF6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20F840 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+211B35 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20F86B DATA DESCRIPTOR       08074B50 (134695760)\n-20F86F CRC                   8738E283 (2268652163)\n-20F873 Compressed Size       0000002B (43)\n-20F877 Uncompressed Size     00000039 (57)\n+211B60 DATA DESCRIPTOR       08074B50 (134695760)\n+211B64 CRC                   8738E283 (2268652163)\n+211B68 Compressed Size       0000002B (43)\n+211B6C Uncompressed Size     00000039 (57)\n \n-20F87B LOCAL HEADER #1992    04034B50 (67324752)\n-20F87F Extract Zip Spec      14 (20) '2.0'\n-20F880 Extract OS            00 (0) 'MS-DOS'\n-20F881 General Purpose Flag  0808 (2056)\n+211B70 LOCAL HEADER #1992    04034B50 (67324752)\n+211B74 Extract Zip Spec      14 (20) '2.0'\n+211B75 Extract OS            00 (0) 'MS-DOS'\n+211B76 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20F883 Compression Method    0008 (8) 'Deflated'\n-20F885 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20F889 CRC                   00000000 (0)\n-20F88D Compressed Size       00000000 (0)\n-20F891 Uncompressed Size     00000000 (0)\n-20F895 Filename Length       0041 (65)\n-20F897 Extra Length          0000 (0)\n-20F899 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+211B78 Compression Method    0008 (8) 'Deflated'\n+211B7A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+211B7E CRC                   00000000 (0)\n+211B82 Compressed Size       00000000 (0)\n+211B86 Uncompressed Size     00000000 (0)\n+211B8A Filename Length       0041 (65)\n+211B8C Extra Length          0000 (0)\n+211B8E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20F899: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x211B8E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20F8DA PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+211BCF PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n                              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20F9A9 DATA DESCRIPTOR       08074B50 (134695760)\n-20F9AD CRC                   02A8F678 (44627576)\n-20F9B1 Compressed Size       000000CF (207)\n-20F9B5 Uncompressed Size     000002CA (714)\n+211C9E DATA DESCRIPTOR       08074B50 (134695760)\n+211CA2 CRC                   D0ECCA57 (3505179223)\n+211CA6 Compressed Size       000000CF (207)\n+211CAA Uncompressed Size     000002CC (716)\n \n-20F9B9 LOCAL HEADER #1993    04034B50 (67324752)\n-20F9BD Extract Zip Spec      14 (20) '2.0'\n-20F9BE Extract OS            00 (0) 'MS-DOS'\n-20F9BF General Purpose Flag  0808 (2056)\n+211CAE LOCAL HEADER #1993    04034B50 (67324752)\n+211CB2 Extract Zip Spec      14 (20) '2.0'\n+211CB3 Extract OS            00 (0) 'MS-DOS'\n+211CB4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20F9C1 Compression Method    0008 (8) 'Deflated'\n-20F9C3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20F9C7 CRC                   00000000 (0)\n-20F9CB Compressed Size       00000000 (0)\n-20F9CF Uncompressed Size     00000000 (0)\n-20F9D3 Filename Length       003E (62)\n-20F9D5 Extra Length          0000 (0)\n-20F9D7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+211CB6 Compression Method    0008 (8) 'Deflated'\n+211CB8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+211CBC CRC                   00000000 (0)\n+211CC0 Compressed Size       00000000 (0)\n+211CC4 Uncompressed Size     00000000 (0)\n+211CC8 Filename Length       003E (62)\n+211CCA Extra Length          0000 (0)\n+211CCC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20F9D7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x211CCC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20FA15 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+211D0A PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20FA46 DATA DESCRIPTOR       08074B50 (134695760)\n-20FA4A CRC                   2EA22547 (782378311)\n-20FA4E Compressed Size       00000031 (49)\n-20FA52 Uncompressed Size     00000048 (72)\n+211D3B DATA DESCRIPTOR       08074B50 (134695760)\n+211D3F CRC                   2EA22547 (782378311)\n+211D43 Compressed Size       00000031 (49)\n+211D47 Uncompressed Size     00000048 (72)\n \n-20FA56 LOCAL HEADER #1994    04034B50 (67324752)\n-20FA5A Extract Zip Spec      14 (20) '2.0'\n-20FA5B Extract OS            00 (0) 'MS-DOS'\n-20FA5C General Purpose Flag  0808 (2056)\n+211D4B LOCAL HEADER #1994    04034B50 (67324752)\n+211D4F Extract Zip Spec      14 (20) '2.0'\n+211D50 Extract OS            00 (0) 'MS-DOS'\n+211D51 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20FA5E Compression Method    0008 (8) 'Deflated'\n-20FA60 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20FA64 CRC                   00000000 (0)\n-20FA68 Compressed Size       00000000 (0)\n-20FA6C Uncompressed Size     00000000 (0)\n-20FA70 Filename Length       003B (59)\n-20FA72 Extra Length          0000 (0)\n-20FA74 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+211D53 Compression Method    0008 (8) 'Deflated'\n+211D55 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+211D59 CRC                   00000000 (0)\n+211D5D Compressed Size       00000000 (0)\n+211D61 Uncompressed Size     00000000 (0)\n+211D65 Filename Length       003B (59)\n+211D67 Extra Length          0000 (0)\n+211D69 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20FA74: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x211D69: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20FAAF PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+211DA4 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20FB22 DATA DESCRIPTOR       08074B50 (134695760)\n-20FB26 CRC                   19FFB665 (436188773)\n-20FB2A Compressed Size       00000073 (115)\n-20FB2E Uncompressed Size     00000144 (324)\n+211E17 DATA DESCRIPTOR       08074B50 (134695760)\n+211E1B CRC                   19FFB665 (436188773)\n+211E1F Compressed Size       00000073 (115)\n+211E23 Uncompressed Size     00000144 (324)\n \n-20FB32 LOCAL HEADER #1995    04034B50 (67324752)\n-20FB36 Extract Zip Spec      14 (20) '2.0'\n-20FB37 Extract OS            00 (0) 'MS-DOS'\n-20FB38 General Purpose Flag  0808 (2056)\n+211E27 LOCAL HEADER #1995    04034B50 (67324752)\n+211E2B Extract Zip Spec      14 (20) '2.0'\n+211E2C Extract OS            00 (0) 'MS-DOS'\n+211E2D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20FB3A Compression Method    0008 (8) 'Deflated'\n-20FB3C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20FB40 CRC                   00000000 (0)\n-20FB44 Compressed Size       00000000 (0)\n-20FB48 Uncompressed Size     00000000 (0)\n-20FB4C Filename Length       0040 (64)\n-20FB4E Extra Length          0000 (0)\n-20FB50 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+211E2F Compression Method    0008 (8) 'Deflated'\n+211E31 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+211E35 CRC                   00000000 (0)\n+211E39 Compressed Size       00000000 (0)\n+211E3D Uncompressed Size     00000000 (0)\n+211E41 Filename Length       0040 (64)\n+211E43 Extra Length          0000 (0)\n+211E45 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20FB50: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x211E45: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20FB90 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+211E85 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20FC0A DATA DESCRIPTOR       08074B50 (134695760)\n-20FC0E CRC                   1529E756 (355067734)\n-20FC12 Compressed Size       0000007A (122)\n-20FC16 Uncompressed Size     00000186 (390)\n+211F06 DATA DESCRIPTOR       08074B50 (134695760)\n+211F0A CRC                   77A9D190 (2007617936)\n+211F0E Compressed Size       00000081 (129)\n+211F12 Uncompressed Size     0000018E (398)\n \n-20FC1A LOCAL HEADER #1996    04034B50 (67324752)\n-20FC1E Extract Zip Spec      14 (20) '2.0'\n-20FC1F Extract OS            00 (0) 'MS-DOS'\n-20FC20 General Purpose Flag  0808 (2056)\n+211F16 LOCAL HEADER #1996    04034B50 (67324752)\n+211F1A Extract Zip Spec      14 (20) '2.0'\n+211F1B Extract OS            00 (0) 'MS-DOS'\n+211F1C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20FC22 Compression Method    0008 (8) 'Deflated'\n-20FC24 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20FC28 CRC                   00000000 (0)\n-20FC2C Compressed Size       00000000 (0)\n-20FC30 Uncompressed Size     00000000 (0)\n-20FC34 Filename Length       004E (78)\n-20FC36 Extra Length          0000 (0)\n-20FC38 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+211F1E Compression Method    0008 (8) 'Deflated'\n+211F20 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+211F24 CRC                   00000000 (0)\n+211F28 Compressed Size       00000000 (0)\n+211F2C Uncompressed Size     00000000 (0)\n+211F30 Filename Length       004E (78)\n+211F32 Extra Length          0000 (0)\n+211F34 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20FC38: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x211F34: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20FC86 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n-                             XXX\n+211F82 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+                             XXXXX\n \n-20FD0E DATA DESCRIPTOR       08074B50 (134695760)\n-20FD12 CRC                   CB89DDC8 (3414810056)\n-20FD16 Compressed Size       00000088 (136)\n-20FD1A Uncompressed Size     000001C5 (453)\n+21200C DATA DESCRIPTOR       08074B50 (134695760)\n+212010 CRC                   E654BF14 (3864313620)\n+212014 Compressed Size       0000008A (138)\n+212018 Uncompressed Size     000001CB (459)\n \n-20FD1E LOCAL HEADER #1997    04034B50 (67324752)\n-20FD22 Extract Zip Spec      14 (20) '2.0'\n-20FD23 Extract OS            00 (0) 'MS-DOS'\n-20FD24 General Purpose Flag  0808 (2056)\n+21201C LOCAL HEADER #1997    04034B50 (67324752)\n+212020 Extract Zip Spec      14 (20) '2.0'\n+212021 Extract OS            00 (0) 'MS-DOS'\n+212022 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20FD26 Compression Method    0008 (8) 'Deflated'\n-20FD28 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20FD2C CRC                   00000000 (0)\n-20FD30 Compressed Size       00000000 (0)\n-20FD34 Uncompressed Size     00000000 (0)\n-20FD38 Filename Length       003E (62)\n-20FD3A Extra Length          0000 (0)\n-20FD3C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+212024 Compression Method    0008 (8) 'Deflated'\n+212026 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21202A CRC                   00000000 (0)\n+21202E Compressed Size       00000000 (0)\n+212032 Uncompressed Size     00000000 (0)\n+212036 Filename Length       003E (62)\n+212038 Extra Length          0000 (0)\n+21203A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20FD3C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21203A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20FD7A PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+212078 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20FDBA DATA DESCRIPTOR       08074B50 (134695760)\n-20FDBE CRC                   6AE7C3EE (1793573870)\n-20FDC2 Compressed Size       00000040 (64)\n-20FDC6 Uncompressed Size     0000006D (109)\n+2120B9 DATA DESCRIPTOR       08074B50 (134695760)\n+2120BD CRC                   2318E723 (588834595)\n+2120C1 Compressed Size       00000041 (65)\n+2120C5 Uncompressed Size     0000006F (111)\n \n-20FDCA LOCAL HEADER #1998    04034B50 (67324752)\n-20FDCE Extract Zip Spec      14 (20) '2.0'\n-20FDCF Extract OS            00 (0) 'MS-DOS'\n-20FDD0 General Purpose Flag  0808 (2056)\n+2120C9 LOCAL HEADER #1998    04034B50 (67324752)\n+2120CD Extract Zip Spec      14 (20) '2.0'\n+2120CE Extract OS            00 (0) 'MS-DOS'\n+2120CF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20FDD2 Compression Method    0008 (8) 'Deflated'\n-20FDD4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20FDD8 CRC                   00000000 (0)\n-20FDDC Compressed Size       00000000 (0)\n-20FDE0 Uncompressed Size     00000000 (0)\n-20FDE4 Filename Length       0049 (73)\n-20FDE6 Extra Length          0000 (0)\n-20FDE8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2120D1 Compression Method    0008 (8) 'Deflated'\n+2120D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2120D7 CRC                   00000000 (0)\n+2120DB Compressed Size       00000000 (0)\n+2120DF Uncompressed Size     00000000 (0)\n+2120E3 Filename Length       0049 (73)\n+2120E5 Extra Length          0000 (0)\n+2120E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20FDE8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2120E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20FE31 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+212130 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20FE86 DATA DESCRIPTOR       08074B50 (134695760)\n-20FE8A CRC                   8EA6DB6C (2393299820)\n-20FE8E Compressed Size       00000055 (85)\n-20FE92 Uncompressed Size     0000005C (92)\n+212187 DATA DESCRIPTOR       08074B50 (134695760)\n+21218B CRC                   9A25D8A3 (2586171555)\n+21218F Compressed Size       00000057 (87)\n+212193 Uncompressed Size     0000005E (94)\n \n-20FE96 LOCAL HEADER #1999    04034B50 (67324752)\n-20FE9A Extract Zip Spec      14 (20) '2.0'\n-20FE9B Extract OS            00 (0) 'MS-DOS'\n-20FE9C General Purpose Flag  0808 (2056)\n+212197 LOCAL HEADER #1999    04034B50 (67324752)\n+21219B Extract Zip Spec      14 (20) '2.0'\n+21219C Extract OS            00 (0) 'MS-DOS'\n+21219D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20FE9E Compression Method    0008 (8) 'Deflated'\n-20FEA0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20FEA4 CRC                   00000000 (0)\n-20FEA8 Compressed Size       00000000 (0)\n-20FEAC Uncompressed Size     00000000 (0)\n-20FEB0 Filename Length       0049 (73)\n-20FEB2 Extra Length          0000 (0)\n-20FEB4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21219F Compression Method    0008 (8) 'Deflated'\n+2121A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2121A5 CRC                   00000000 (0)\n+2121A9 Compressed Size       00000000 (0)\n+2121AD Uncompressed Size     00000000 (0)\n+2121B1 Filename Length       0049 (73)\n+2121B3 Extra Length          0000 (0)\n+2121B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20FEB4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2121B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20FEFD PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2121FE PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-20FF4C DATA DESCRIPTOR       08074B50 (134695760)\n-20FF50 CRC                   C4255C66 (3290782822)\n-20FF54 Compressed Size       0000004F (79)\n-20FF58 Uncompressed Size     00000058 (88)\n+21224D DATA DESCRIPTOR       08074B50 (134695760)\n+212251 CRC                   C4255C66 (3290782822)\n+212255 Compressed Size       0000004F (79)\n+212259 Uncompressed Size     00000058 (88)\n \n-20FF5C LOCAL HEADER #2000    04034B50 (67324752)\n-20FF60 Extract Zip Spec      14 (20) '2.0'\n-20FF61 Extract OS            00 (0) 'MS-DOS'\n-20FF62 General Purpose Flag  0808 (2056)\n+21225D LOCAL HEADER #2000    04034B50 (67324752)\n+212261 Extract Zip Spec      14 (20) '2.0'\n+212262 Extract OS            00 (0) 'MS-DOS'\n+212263 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-20FF64 Compression Method    0008 (8) 'Deflated'\n-20FF66 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-20FF6A CRC                   00000000 (0)\n-20FF6E Compressed Size       00000000 (0)\n-20FF72 Uncompressed Size     00000000 (0)\n-20FF76 Filename Length       0044 (68)\n-20FF78 Extra Length          0000 (0)\n-20FF7A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+212265 Compression Method    0008 (8) 'Deflated'\n+212267 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21226B CRC                   00000000 (0)\n+21226F Compressed Size       00000000 (0)\n+212273 Uncompressed Size     00000000 (0)\n+212277 Filename Length       0044 (68)\n+212279 Extra Length          0000 (0)\n+21227B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x20FF7A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21227B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-20FFBE PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2122BF PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-21001E DATA DESCRIPTOR       08074B50 (134695760)\n-210022 CRC                   8141260E (2168530446)\n-210026 Compressed Size       00000060 (96)\n-21002A Uncompressed Size     00000096 (150)\n+21231F DATA DESCRIPTOR       08074B50 (134695760)\n+212323 CRC                   8141260E (2168530446)\n+212327 Compressed Size       00000060 (96)\n+21232B Uncompressed Size     00000096 (150)\n \n-21002E LOCAL HEADER #2001    04034B50 (67324752)\n-210032 Extract Zip Spec      14 (20) '2.0'\n-210033 Extract OS            00 (0) 'MS-DOS'\n-210034 General Purpose Flag  0808 (2056)\n+21232F LOCAL HEADER #2001    04034B50 (67324752)\n+212333 Extract Zip Spec      14 (20) '2.0'\n+212334 Extract OS            00 (0) 'MS-DOS'\n+212335 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210036 Compression Method    0008 (8) 'Deflated'\n-210038 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21003C CRC                   00000000 (0)\n-210040 Compressed Size       00000000 (0)\n-210044 Uncompressed Size     00000000 (0)\n-210048 Filename Length       0050 (80)\n-21004A Extra Length          0000 (0)\n-21004C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+212337 Compression Method    0008 (8) 'Deflated'\n+212339 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21233D CRC                   00000000 (0)\n+212341 Compressed Size       00000000 (0)\n+212345 Uncompressed Size     00000000 (0)\n+212349 Filename Length       0050 (80)\n+21234B Extra Length          0000 (0)\n+21234D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21004C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21234D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-21009C PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+21239D PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n                              XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-210142 DATA DESCRIPTOR       08074B50 (134695760)\n-210146 CRC                   20C66B35 (549874485)\n-21014A Compressed Size       000000A6 (166)\n-21014E Uncompressed Size     0000024E (590)\n+212443 DATA DESCRIPTOR       08074B50 (134695760)\n+212447 CRC                   20C66B35 (549874485)\n+21244B Compressed Size       000000A6 (166)\n+21244F Uncompressed Size     0000024E (590)\n \n-210152 LOCAL HEADER #2002    04034B50 (67324752)\n-210156 Extract Zip Spec      14 (20) '2.0'\n-210157 Extract OS            00 (0) 'MS-DOS'\n-210158 General Purpose Flag  0808 (2056)\n+212453 LOCAL HEADER #2002    04034B50 (67324752)\n+212457 Extract Zip Spec      14 (20) '2.0'\n+212458 Extract OS            00 (0) 'MS-DOS'\n+212459 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21015A Compression Method    0008 (8) 'Deflated'\n-21015C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210160 CRC                   00000000 (0)\n-210164 Compressed Size       00000000 (0)\n-210168 Uncompressed Size     00000000 (0)\n-21016C Filename Length       0049 (73)\n-21016E Extra Length          0000 (0)\n-210170 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21245B Compression Method    0008 (8) 'Deflated'\n+21245D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+212461 CRC                   00000000 (0)\n+212465 Compressed Size       00000000 (0)\n+212469 Uncompressed Size     00000000 (0)\n+21246D Filename Length       0049 (73)\n+21246F Extra Length          0000 (0)\n+212471 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210170: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x212471: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2101B9 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n-                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2124BA PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-210267 DATA DESCRIPTOR       08074B50 (134695760)\n-21026B CRC                   06C4AA00 (113551872)\n-21026F Compressed Size       000000AE (174)\n-210273 Uncompressed Size     00000251 (593)\n+21256D DATA DESCRIPTOR       08074B50 (134695760)\n+212571 CRC                   5A07C547 (1510458695)\n+212575 Compressed Size       000000B3 (179)\n+212579 Uncompressed Size     00000252 (594)\n \n-210277 LOCAL HEADER #2003    04034B50 (67324752)\n-21027B Extract Zip Spec      14 (20) '2.0'\n-21027C Extract OS            00 (0) 'MS-DOS'\n-21027D General Purpose Flag  0808 (2056)\n+21257D LOCAL HEADER #2003    04034B50 (67324752)\n+212581 Extract Zip Spec      14 (20) '2.0'\n+212582 Extract OS            00 (0) 'MS-DOS'\n+212583 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21027F Compression Method    0008 (8) 'Deflated'\n-210281 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210285 CRC                   00000000 (0)\n-210289 Compressed Size       00000000 (0)\n-21028D Uncompressed Size     00000000 (0)\n-210291 Filename Length       0050 (80)\n-210293 Extra Length          0000 (0)\n-210295 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+212585 Compression Method    0008 (8) 'Deflated'\n+212587 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21258B CRC                   00000000 (0)\n+21258F Compressed Size       00000000 (0)\n+212593 Uncompressed Size     00000000 (0)\n+212597 Filename Length       0050 (80)\n+212599 Extra Length          0000 (0)\n+21259B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210295: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21259B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2102E5 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2125EB PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-210347 DATA DESCRIPTOR       08074B50 (134695760)\n-21034B CRC                   9BBB9DE9 (2612764137)\n-21034F Compressed Size       00000062 (98)\n-210353 Uncompressed Size     00000114 (276)\n+212650 DATA DESCRIPTOR       08074B50 (134695760)\n+212654 CRC                   83E117A1 (2212566945)\n+212658 Compressed Size       00000065 (101)\n+21265C Uncompressed Size     00000117 (279)\n \n-210357 LOCAL HEADER #2004    04034B50 (67324752)\n-21035B Extract Zip Spec      14 (20) '2.0'\n-21035C Extract OS            00 (0) 'MS-DOS'\n-21035D General Purpose Flag  0808 (2056)\n+212660 LOCAL HEADER #2004    04034B50 (67324752)\n+212664 Extract Zip Spec      14 (20) '2.0'\n+212665 Extract OS            00 (0) 'MS-DOS'\n+212666 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21035F Compression Method    0008 (8) 'Deflated'\n-210361 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210365 CRC                   00000000 (0)\n-210369 Compressed Size       00000000 (0)\n-21036D Uncompressed Size     00000000 (0)\n-210371 Filename Length       003C (60)\n-210373 Extra Length          0000 (0)\n-210375 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+212668 Compression Method    0008 (8) 'Deflated'\n+21266A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21266E CRC                   00000000 (0)\n+212672 Compressed Size       00000000 (0)\n+212676 Uncompressed Size     00000000 (0)\n+21267A Filename Length       003C (60)\n+21267C Extra Length          0000 (0)\n+21267E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210375: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21267E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2103B1 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2126BA PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-210404 DATA DESCRIPTOR       08074B50 (134695760)\n-210408 CRC                   FF8F0A93 (4287564435)\n-21040C Compressed Size       00000053 (83)\n-210410 Uncompressed Size     000000A2 (162)\n+21270F DATA DESCRIPTOR       08074B50 (134695760)\n+212713 CRC                   D55F5F8C (3579797388)\n+212717 Compressed Size       00000055 (85)\n+21271B Uncompressed Size     000000A3 (163)\n \n-210414 LOCAL HEADER #2005    04034B50 (67324752)\n-210418 Extract Zip Spec      14 (20) '2.0'\n-210419 Extract OS            00 (0) 'MS-DOS'\n-21041A General Purpose Flag  0808 (2056)\n+21271F LOCAL HEADER #2005    04034B50 (67324752)\n+212723 Extract Zip Spec      14 (20) '2.0'\n+212724 Extract OS            00 (0) 'MS-DOS'\n+212725 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21041C Compression Method    0008 (8) 'Deflated'\n-21041E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210422 CRC                   00000000 (0)\n-210426 Compressed Size       00000000 (0)\n-21042A Uncompressed Size     00000000 (0)\n-21042E Filename Length       0052 (82)\n-210430 Extra Length          0000 (0)\n-210432 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+212727 Compression Method    0008 (8) 'Deflated'\n+212729 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21272D CRC                   00000000 (0)\n+212731 Compressed Size       00000000 (0)\n+212735 Uncompressed Size     00000000 (0)\n+212739 Filename Length       0052 (82)\n+21273B Extra Length          0000 (0)\n+21273D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210432: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21273D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-210484 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n-                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+21278F PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-21053C DATA DESCRIPTOR       08074B50 (134695760)\n-210540 CRC                   F65F4647 (4133439047)\n-210544 Compressed Size       000000B8 (184)\n-210548 Uncompressed Size     0000027D (637)\n+21284A DATA DESCRIPTOR       08074B50 (134695760)\n+21284E CRC                   A80508FF (2818902271)\n+212852 Compressed Size       000000BB (187)\n+212856 Uncompressed Size     00000283 (643)\n \n-21054C LOCAL HEADER #2006    04034B50 (67324752)\n-210550 Extract Zip Spec      14 (20) '2.0'\n-210551 Extract OS            00 (0) 'MS-DOS'\n-210552 General Purpose Flag  0808 (2056)\n+21285A LOCAL HEADER #2006    04034B50 (67324752)\n+21285E Extract Zip Spec      14 (20) '2.0'\n+21285F Extract OS            00 (0) 'MS-DOS'\n+212860 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210554 Compression Method    0008 (8) 'Deflated'\n-210556 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21055A CRC                   00000000 (0)\n-21055E Compressed Size       00000000 (0)\n-210562 Uncompressed Size     00000000 (0)\n-210566 Filename Length       005B (91)\n-210568 Extra Length          0000 (0)\n-21056A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+212862 Compression Method    0008 (8) 'Deflated'\n+212864 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+212868 CRC                   00000000 (0)\n+21286C Compressed Size       00000000 (0)\n+212870 Uncompressed Size     00000000 (0)\n+212874 Filename Length       005B (91)\n+212876 Extra Length          0000 (0)\n+212878 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21056A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x212878: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2105C5 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2128D3 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-210624 DATA DESCRIPTOR       08074B50 (134695760)\n-210628 CRC                   A52CE8E2 (2771183842)\n-21062C Compressed Size       0000005F (95)\n-210630 Uncompressed Size     000000B1 (177)\n+212936 DATA DESCRIPTOR       08074B50 (134695760)\n+21293A CRC                   2D09B871 (755611761)\n+21293E Compressed Size       00000063 (99)\n+212942 Uncompressed Size     000000B2 (178)\n \n-210634 LOCAL HEADER #2007    04034B50 (67324752)\n-210638 Extract Zip Spec      14 (20) '2.0'\n-210639 Extract OS            00 (0) 'MS-DOS'\n-21063A General Purpose Flag  0808 (2056)\n+212946 LOCAL HEADER #2007    04034B50 (67324752)\n+21294A Extract Zip Spec      14 (20) '2.0'\n+21294B Extract OS            00 (0) 'MS-DOS'\n+21294C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21063C Compression Method    0008 (8) 'Deflated'\n-21063E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210642 CRC                   00000000 (0)\n-210646 Compressed Size       00000000 (0)\n-21064A Uncompressed Size     00000000 (0)\n-21064E Filename Length       0041 (65)\n-210650 Extra Length          0000 (0)\n-210652 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21294E Compression Method    0008 (8) 'Deflated'\n+212950 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+212954 CRC                   00000000 (0)\n+212958 Compressed Size       00000000 (0)\n+21295C Uncompressed Size     00000000 (0)\n+212960 Filename Length       0041 (65)\n+212962 Extra Length          0000 (0)\n+212964 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210652: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x212964: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-210693 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n-                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2129A5 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-210741 DATA DESCRIPTOR       08074B50 (134695760)\n-210745 CRC                   FDF4851E (4260660510)\n-210749 Compressed Size       000000AE (174)\n-21074D Uncompressed Size     00000313 (787)\n+212A55 DATA DESCRIPTOR       08074B50 (134695760)\n+212A59 CRC                   5208AFC5 (1376300997)\n+212A5D Compressed Size       000000B0 (176)\n+212A61 Uncompressed Size     0000031D (797)\n \n-210751 LOCAL HEADER #2008    04034B50 (67324752)\n-210755 Extract Zip Spec      14 (20) '2.0'\n-210756 Extract OS            00 (0) 'MS-DOS'\n-210757 General Purpose Flag  0808 (2056)\n+212A65 LOCAL HEADER #2008    04034B50 (67324752)\n+212A69 Extract Zip Spec      14 (20) '2.0'\n+212A6A Extract OS            00 (0) 'MS-DOS'\n+212A6B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210759 Compression Method    0008 (8) 'Deflated'\n-21075B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21075F CRC                   00000000 (0)\n-210763 Compressed Size       00000000 (0)\n-210767 Uncompressed Size     00000000 (0)\n-21076B Filename Length       0054 (84)\n-21076D Extra Length          0000 (0)\n-21076F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+212A6D Compression Method    0008 (8) 'Deflated'\n+212A6F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+212A73 CRC                   00000000 (0)\n+212A77 Compressed Size       00000000 (0)\n+212A7B Uncompressed Size     00000000 (0)\n+212A7F Filename Length       0054 (84)\n+212A81 Extra Length          0000 (0)\n+212A83 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21076F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x212A83: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2107C3 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n-                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+212AD7 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-210889 DATA DESCRIPTOR       08074B50 (134695760)\n-21088D CRC                   558BF598 (1435235736)\n-210891 Compressed Size       000000C6 (198)\n-210895 Uncompressed Size     000003FF (1023)\n+212BA0 DATA DESCRIPTOR       08074B50 (134695760)\n+212BA4 CRC                   7A6F7ED2 (2054127314)\n+212BA8 Compressed Size       000000C9 (201)\n+212BAC Uncompressed Size     0000040B (1035)\n \n-210899 LOCAL HEADER #2009    04034B50 (67324752)\n-21089D Extract Zip Spec      14 (20) '2.0'\n-21089E Extract OS            00 (0) 'MS-DOS'\n-21089F General Purpose Flag  0808 (2056)\n+212BB0 LOCAL HEADER #2009    04034B50 (67324752)\n+212BB4 Extract Zip Spec      14 (20) '2.0'\n+212BB5 Extract OS            00 (0) 'MS-DOS'\n+212BB6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2108A1 Compression Method    0008 (8) 'Deflated'\n-2108A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2108A7 CRC                   00000000 (0)\n-2108AB Compressed Size       00000000 (0)\n-2108AF Uncompressed Size     00000000 (0)\n-2108B3 Filename Length       0058 (88)\n-2108B5 Extra Length          0000 (0)\n-2108B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+212BB8 Compression Method    0008 (8) 'Deflated'\n+212BBA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+212BBE CRC                   00000000 (0)\n+212BC2 Compressed Size       00000000 (0)\n+212BC6 Uncompressed Size     00000000 (0)\n+212BCA Filename Length       0058 (88)\n+212BCC Extra Length          0000 (0)\n+212BCE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2108B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x212BCE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-21090F PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n-                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+212C26 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-2109E2 DATA DESCRIPTOR       08074B50 (134695760)\n-2109E6 CRC                   496A27A1 (1231693729)\n-2109EA Compressed Size       000000D3 (211)\n-2109EE Uncompressed Size     000002CC (716)\n+212CFC DATA DESCRIPTOR       08074B50 (134695760)\n+212D00 CRC                   F21C5285 (4061942405)\n+212D04 Compressed Size       000000D6 (214)\n+212D08 Uncompressed Size     000002D5 (725)\n \n-2109F2 LOCAL HEADER #2010    04034B50 (67324752)\n-2109F6 Extract Zip Spec      14 (20) '2.0'\n-2109F7 Extract OS            00 (0) 'MS-DOS'\n-2109F8 General Purpose Flag  0808 (2056)\n+212D0C LOCAL HEADER #2010    04034B50 (67324752)\n+212D10 Extract Zip Spec      14 (20) '2.0'\n+212D11 Extract OS            00 (0) 'MS-DOS'\n+212D12 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2109FA Compression Method    0008 (8) 'Deflated'\n-2109FC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210A00 CRC                   00000000 (0)\n-210A04 Compressed Size       00000000 (0)\n-210A08 Uncompressed Size     00000000 (0)\n-210A0C Filename Length       0052 (82)\n-210A0E Extra Length          0000 (0)\n-210A10 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+212D14 Compression Method    0008 (8) 'Deflated'\n+212D16 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+212D1A CRC                   00000000 (0)\n+212D1E Compressed Size       00000000 (0)\n+212D22 Uncompressed Size     00000000 (0)\n+212D26 Filename Length       0052 (82)\n+212D28 Extra Length          0000 (0)\n+212D2A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210A10: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x212D2A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-210A62 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+212D7C PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-210ACE DATA DESCRIPTOR       08074B50 (134695760)\n-210AD2 CRC                   5B1D6790 (1528653712)\n-210AD6 Compressed Size       0000006C (108)\n-210ADA Uncompressed Size     000000B7 (183)\n+212DEB DATA DESCRIPTOR       08074B50 (134695760)\n+212DEF CRC                   7F686F44 (2137550660)\n+212DF3 Compressed Size       0000006F (111)\n+212DF7 Uncompressed Size     000000B9 (185)\n \n-210ADE LOCAL HEADER #2011    04034B50 (67324752)\n-210AE2 Extract Zip Spec      14 (20) '2.0'\n-210AE3 Extract OS            00 (0) 'MS-DOS'\n-210AE4 General Purpose Flag  0808 (2056)\n+212DFB LOCAL HEADER #2011    04034B50 (67324752)\n+212DFF Extract Zip Spec      14 (20) '2.0'\n+212E00 Extract OS            00 (0) 'MS-DOS'\n+212E01 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210AE6 Compression Method    0008 (8) 'Deflated'\n-210AE8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210AEC CRC                   00000000 (0)\n-210AF0 Compressed Size       00000000 (0)\n-210AF4 Uncompressed Size     00000000 (0)\n-210AF8 Filename Length       0043 (67)\n-210AFA Extra Length          0000 (0)\n-210AFC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+212E03 Compression Method    0008 (8) 'Deflated'\n+212E05 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+212E09 CRC                   00000000 (0)\n+212E0D Compressed Size       00000000 (0)\n+212E11 Uncompressed Size     00000000 (0)\n+212E15 Filename Length       0043 (67)\n+212E17 Extra Length          0000 (0)\n+212E19 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210AFC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x212E19: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-210B3F PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+212E5C PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-210B92 DATA DESCRIPTOR       08074B50 (134695760)\n-210B96 CRC                   89A6CE58 (2309410392)\n-210B9A Compressed Size       00000053 (83)\n-210B9E Uncompressed Size     00000161 (353)\n+212EAB DATA DESCRIPTOR       08074B50 (134695760)\n+212EAF CRC                   299613D2 (697701330)\n+212EB3 Compressed Size       0000004F (79)\n+212EB7 Uncompressed Size     000000B2 (178)\n \n-210BA2 CENTRAL HEADER #1     02014B50 (33639248)\n-210BA6 Created Zip Spec      14 (20) '2.0'\n-210BA7 Created OS            00 (0) 'MS-DOS'\n-210BA8 Extract Zip Spec      14 (20) '2.0'\n-210BA9 Extract OS            00 (0) 'MS-DOS'\n-210BAA General Purpose Flag  0808 (2056)\n+212EBB CENTRAL HEADER #1     02014B50 (33639248)\n+212EBF Created Zip Spec      14 (20) '2.0'\n+212EC0 Created OS            00 (0) 'MS-DOS'\n+212EC1 Extract Zip Spec      14 (20) '2.0'\n+212EC2 Extract OS            00 (0) 'MS-DOS'\n+212EC3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210BAC Compression Method    0008 (8) 'Deflated'\n-210BAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210BB2 CRC                   00000000 (0)\n-210BB6 Compressed Size       00000002 (2)\n-210BBA Uncompressed Size     00000000 (0)\n-210BBE Filename Length       0009 (9)\n-210BC0 Extra Length          0004 (4)\n-210BC2 Comment Length        0000 (0)\n-210BC4 Disk Start            0000 (0)\n-210BC6 Int File Attributes   0000 (0)\n+212EC5 Compression Method    0008 (8) 'Deflated'\n+212EC7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+212ECB CRC                   00000000 (0)\n+212ECF Compressed Size       00000002 (2)\n+212ED3 Uncompressed Size     00000000 (0)\n+212ED7 Filename Length       0009 (9)\n+212ED9 Extra Length          0004 (4)\n+212EDB Comment Length        0000 (0)\n+212EDD Disk Start            0000 (0)\n+212EDF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-210BC8 Ext File Attributes   00000000 (0)\n-210BCC Local Header Offset   00000000 (0)\n-210BD0 Filename              'XXXXXXXXX'\n+212EE1 Ext File Attributes   00000000 (0)\n+212EE5 Local Header Offset   00000000 (0)\n+212EE9 Filename              'XXXXXXXXX'\n #\n-# WARNING: Offset 0x210BD0: Filename 'XXXXXXXXX'\n+# WARNING: Offset 0x212EE9: Filename 'XXXXXXXXX'\n #          Zero length filename\n #\n-210BD9 Extra ID #1           CAFE (51966) 'Java Executable'\n-210BDB   Length              0000 (0)\n+212EF2 Extra ID #1           CAFE (51966) 'Java Executable'\n+212EF4   Length              0000 (0)\n \n-210BDD CENTRAL HEADER #2     02014B50 (33639248)\n-210BE1 Created Zip Spec      14 (20) '2.0'\n-210BE2 Created OS            00 (0) 'MS-DOS'\n-210BE3 Extract Zip Spec      14 (20) '2.0'\n-210BE4 Extract OS            00 (0) 'MS-DOS'\n-210BE5 General Purpose Flag  0808 (2056)\n+212EF6 CENTRAL HEADER #2     02014B50 (33639248)\n+212EFA Created Zip Spec      14 (20) '2.0'\n+212EFB Created OS            00 (0) 'MS-DOS'\n+212EFC Extract Zip Spec      14 (20) '2.0'\n+212EFD Extract OS            00 (0) 'MS-DOS'\n+212EFE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210BE7 Compression Method    0008 (8) 'Deflated'\n-210BE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210BED CRC                   A689EB18 (2794056472)\n-210BF1 Compressed Size       00000042 (66)\n-210BF5 Uncompressed Size     00000040 (64)\n-210BF9 Filename Length       0014 (20)\n-210BFB Extra Length          0000 (0)\n-210BFD Comment Length        0000 (0)\n-210BFF Disk Start            0000 (0)\n-210C01 Int File Attributes   0000 (0)\n+212F00 Compression Method    0008 (8) 'Deflated'\n+212F02 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+212F06 CRC                   A689EB18 (2794056472)\n+212F0A Compressed Size       00000042 (66)\n+212F0E Uncompressed Size     00000040 (64)\n+212F12 Filename Length       0014 (20)\n+212F14 Extra Length          0000 (0)\n+212F16 Comment Length        0000 (0)\n+212F18 Disk Start            0000 (0)\n+212F1A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-210C03 Ext File Attributes   00000000 (0)\n-210C07 Local Header Offset   0000003D (61)\n-210C0B Filename              'XXXXXXXXXXXXXXXXXXXX'\n+212F1C Ext File Attributes   00000000 (0)\n+212F20 Local Header Offset   0000003D (61)\n+212F24 Filename              'XXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210C0B: Filename 'XXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x212F24: Filename 'XXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-210C1F CENTRAL HEADER #3     02014B50 (33639248)\n-210C23 Created Zip Spec      14 (20) '2.0'\n-210C24 Created OS            00 (0) 'MS-DOS'\n-210C25 Extract Zip Spec      14 (20) '2.0'\n-210C26 Extract OS            00 (0) 'MS-DOS'\n-210C27 General Purpose Flag  0808 (2056)\n+212F38 CENTRAL HEADER #3     02014B50 (33639248)\n+212F3C Created Zip Spec      14 (20) '2.0'\n+212F3D Created OS            00 (0) 'MS-DOS'\n+212F3E Extract Zip Spec      14 (20) '2.0'\n+212F3F Extract OS            00 (0) 'MS-DOS'\n+212F40 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210C29 Compression Method    0008 (8) 'Deflated'\n-210C2B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210C2F CRC                   638B5CA1 (1670077601)\n-210C33 Compressed Size       0000232C (9004)\n-210C37 Uncompressed Size     0000FB92 (64402)\n-210C3B Filename Length       0015 (21)\n-210C3D Extra Length          0000 (0)\n-210C3F Comment Length        0000 (0)\n-210C41 Disk Start            0000 (0)\n-210C43 Int File Attributes   0000 (0)\n+212F42 Compression Method    0008 (8) 'Deflated'\n+212F44 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+212F48 CRC                   638B5CA1 (1670077601)\n+212F4C Compressed Size       0000232C (9004)\n+212F50 Uncompressed Size     0000FB92 (64402)\n+212F54 Filename Length       0015 (21)\n+212F56 Extra Length          0000 (0)\n+212F58 Comment Length        0000 (0)\n+212F5A Disk Start            0000 (0)\n+212F5C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-210C45 Ext File Attributes   00000000 (0)\n-210C49 Local Header Offset   000000C1 (193)\n-210C4D Filename              'XXXXXXXXXXXXXXXXXXXXX'\n+212F5E Ext File Attributes   00000000 (0)\n+212F62 Local Header Offset   000000C1 (193)\n+212F66 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210C4D: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x212F66: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-210C62 CENTRAL HEADER #4     02014B50 (33639248)\n-210C66 Created Zip Spec      14 (20) '2.0'\n-210C67 Created OS            00 (0) 'MS-DOS'\n-210C68 Extract Zip Spec      14 (20) '2.0'\n-210C69 Extract OS            00 (0) 'MS-DOS'\n-210C6A General Purpose Flag  0808 (2056)\n+212F7B CENTRAL HEADER #4     02014B50 (33639248)\n+212F7F Created Zip Spec      14 (20) '2.0'\n+212F80 Created OS            00 (0) 'MS-DOS'\n+212F81 Extract Zip Spec      14 (20) '2.0'\n+212F82 Extract OS            00 (0) 'MS-DOS'\n+212F83 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210C6C Compression Method    0008 (8) 'Deflated'\n-210C6E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210C72 CRC                   86E2B4B4 (2263004340)\n-210C76 Compressed Size       00000F6D (3949)\n-210C7A Uncompressed Size     00002C5E (11358)\n-210C7E Filename Length       0010 (16)\n-210C80 Extra Length          0000 (0)\n-210C82 Comment Length        0000 (0)\n-210C84 Disk Start            0000 (0)\n-210C86 Int File Attributes   0000 (0)\n+212F85 Compression Method    0008 (8) 'Deflated'\n+212F87 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+212F8B CRC                   86E2B4B4 (2263004340)\n+212F8F Compressed Size       00000F6D (3949)\n+212F93 Uncompressed Size     00002C5E (11358)\n+212F97 Filename Length       0010 (16)\n+212F99 Extra Length          0000 (0)\n+212F9B Comment Length        0000 (0)\n+212F9D Disk Start            0000 (0)\n+212F9F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-210C88 Ext File Attributes   00000000 (0)\n-210C8C Local Header Offset   00002430 (9264)\n-210C90 Filename              'XXXXXXXXXXXXXXXX'\n+212FA1 Ext File Attributes   00000000 (0)\n+212FA5 Local Header Offset   00002430 (9264)\n+212FA9 Filename              'XXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210C90: Filename 'XXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x212FA9: Filename 'XXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-210CA0 CENTRAL HEADER #5     02014B50 (33639248)\n-210CA4 Created Zip Spec      14 (20) '2.0'\n-210CA5 Created OS            00 (0) 'MS-DOS'\n-210CA6 Extract Zip Spec      14 (20) '2.0'\n-210CA7 Extract OS            00 (0) 'MS-DOS'\n-210CA8 General Purpose Flag  0808 (2056)\n+212FB9 CENTRAL HEADER #5     02014B50 (33639248)\n+212FBD Created Zip Spec      14 (20) '2.0'\n+212FBE Created OS            00 (0) 'MS-DOS'\n+212FBF Extract Zip Spec      14 (20) '2.0'\n+212FC0 Extract OS            00 (0) 'MS-DOS'\n+212FC1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210CAA Compression Method    0008 (8) 'Deflated'\n-210CAC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210CB0 CRC                   8FD5DBBD (2413157309)\n-210CB4 Compressed Size       0000007A (122)\n-210CB8 Uncompressed Size     000000A6 (166)\n-210CBC Filename Length       000F (15)\n-210CBE Extra Length          0000 (0)\n-210CC0 Comment Length        0000 (0)\n-210CC2 Disk Start            0000 (0)\n-210CC4 Int File Attributes   0000 (0)\n+212FC3 Compression Method    0008 (8) 'Deflated'\n+212FC5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+212FC9 CRC                   8FD5DBBD (2413157309)\n+212FCD Compressed Size       0000007A (122)\n+212FD1 Uncompressed Size     000000A6 (166)\n+212FD5 Filename Length       000F (15)\n+212FD7 Extra Length          0000 (0)\n+212FD9 Comment Length        0000 (0)\n+212FDB Disk Start            0000 (0)\n+212FDD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-210CC6 Ext File Attributes   00000000 (0)\n-210CCA Local Header Offset   000033DB (13275)\n-210CCE Filename              'XXXXXXXXXXXXXXX'\n+212FDF Ext File Attributes   00000000 (0)\n+212FE3 Local Header Offset   000033DB (13275)\n+212FE7 Filename              'XXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210CCE: Filename 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x212FE7: Filename 'XXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-210CDD CENTRAL HEADER #6     02014B50 (33639248)\n-210CE1 Created Zip Spec      14 (20) '2.0'\n-210CE2 Created OS            00 (0) 'MS-DOS'\n-210CE3 Extract Zip Spec      14 (20) '2.0'\n-210CE4 Extract OS            00 (0) 'MS-DOS'\n-210CE5 General Purpose Flag  0808 (2056)\n+212FF6 CENTRAL HEADER #6     02014B50 (33639248)\n+212FFA Created Zip Spec      14 (20) '2.0'\n+212FFB Created OS            00 (0) 'MS-DOS'\n+212FFC Extract Zip Spec      14 (20) '2.0'\n+212FFD Extract OS            00 (0) 'MS-DOS'\n+212FFE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210CE7 Compression Method    0008 (8) 'Deflated'\n-210CE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210CED CRC                   00000000 (0)\n-210CF1 Compressed Size       00000002 (2)\n-210CF5 Uncompressed Size     00000000 (0)\n-210CF9 Filename Length       000F (15)\n-210CFB Extra Length          0000 (0)\n-210CFD Comment Length        0000 (0)\n-210CFF Disk Start            0000 (0)\n-210D01 Int File Attributes   0000 (0)\n+213000 Compression Method    0008 (8) 'Deflated'\n+213002 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213006 CRC                   00000000 (0)\n+21300A Compressed Size       00000002 (2)\n+21300E Uncompressed Size     00000000 (0)\n+213012 Filename Length       000F (15)\n+213014 Extra Length          0000 (0)\n+213016 Comment Length        0000 (0)\n+213018 Disk Start            0000 (0)\n+21301A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-210D03 Ext File Attributes   00000000 (0)\n-210D07 Local Header Offset   00003492 (13458)\n-210D0B Filename              'XXXXXXXXXXXXXXX'\n+21301C Ext File Attributes   00000000 (0)\n+213020 Local Header Offset   00003492 (13458)\n+213024 Filename              'XXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210D0B: Filename 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213024: Filename 'XXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-210D1A CENTRAL HEADER #7     02014B50 (33639248)\n-210D1E Created Zip Spec      14 (20) '2.0'\n-210D1F Created OS            00 (0) 'MS-DOS'\n-210D20 Extract Zip Spec      14 (20) '2.0'\n-210D21 Extract OS            00 (0) 'MS-DOS'\n-210D22 General Purpose Flag  0808 (2056)\n+213033 CENTRAL HEADER #7     02014B50 (33639248)\n+213037 Created Zip Spec      14 (20) '2.0'\n+213038 Created OS            00 (0) 'MS-DOS'\n+213039 Extract Zip Spec      14 (20) '2.0'\n+21303A Extract OS            00 (0) 'MS-DOS'\n+21303B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210D24 Compression Method    0008 (8) 'Deflated'\n-210D26 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210D2A CRC                   00000000 (0)\n-210D2E Compressed Size       00000002 (2)\n-210D32 Uncompressed Size     00000000 (0)\n-210D36 Filename Length       0020 (32)\n-210D38 Extra Length          0000 (0)\n-210D3A Comment Length        0000 (0)\n-210D3C Disk Start            0000 (0)\n-210D3E Int File Attributes   0000 (0)\n+21303D Compression Method    0008 (8) 'Deflated'\n+21303F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213043 CRC                   00000000 (0)\n+213047 Compressed Size       00000002 (2)\n+21304B Uncompressed Size     00000000 (0)\n+21304F Filename Length       0020 (32)\n+213051 Extra Length          0000 (0)\n+213053 Comment Length        0000 (0)\n+213055 Disk Start            0000 (0)\n+213057 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-210D40 Ext File Attributes   00000000 (0)\n-210D44 Local Header Offset   000034D1 (13521)\n-210D48 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213059 Ext File Attributes   00000000 (0)\n+21305D Local Header Offset   000034D1 (13521)\n+213061 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210D48: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213061: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-210D68 CENTRAL HEADER #8     02014B50 (33639248)\n-210D6C Created Zip Spec      14 (20) '2.0'\n-210D6D Created OS            00 (0) 'MS-DOS'\n-210D6E Extract Zip Spec      14 (20) '2.0'\n-210D6F Extract OS            00 (0) 'MS-DOS'\n-210D70 General Purpose Flag  0808 (2056)\n+213081 CENTRAL HEADER #8     02014B50 (33639248)\n+213085 Created Zip Spec      14 (20) '2.0'\n+213086 Created OS            00 (0) 'MS-DOS'\n+213087 Extract Zip Spec      14 (20) '2.0'\n+213088 Extract OS            00 (0) 'MS-DOS'\n+213089 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210D72 Compression Method    0008 (8) 'Deflated'\n-210D74 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210D78 CRC                   00000000 (0)\n-210D7C Compressed Size       00000002 (2)\n-210D80 Uncompressed Size     00000000 (0)\n-210D84 Filename Length       0026 (38)\n-210D86 Extra Length          0000 (0)\n-210D88 Comment Length        0000 (0)\n-210D8A Disk Start            0000 (0)\n-210D8C Int File Attributes   0000 (0)\n+21308B Compression Method    0008 (8) 'Deflated'\n+21308D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213091 CRC                   00000000 (0)\n+213095 Compressed Size       00000002 (2)\n+213099 Uncompressed Size     00000000 (0)\n+21309D Filename Length       0026 (38)\n+21309F Extra Length          0000 (0)\n+2130A1 Comment Length        0000 (0)\n+2130A3 Disk Start            0000 (0)\n+2130A5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-210D8E Ext File Attributes   00000000 (0)\n-210D92 Local Header Offset   00003521 (13601)\n-210D96 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2130A7 Ext File Attributes   00000000 (0)\n+2130AB Local Header Offset   00003521 (13601)\n+2130AF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210D96: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2130AF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-210DBC CENTRAL HEADER #9     02014B50 (33639248)\n-210DC0 Created Zip Spec      14 (20) '2.0'\n-210DC1 Created OS            00 (0) 'MS-DOS'\n-210DC2 Extract Zip Spec      14 (20) '2.0'\n-210DC3 Extract OS            00 (0) 'MS-DOS'\n-210DC4 General Purpose Flag  0808 (2056)\n+2130D5 CENTRAL HEADER #9     02014B50 (33639248)\n+2130D9 Created Zip Spec      14 (20) '2.0'\n+2130DA Created OS            00 (0) 'MS-DOS'\n+2130DB Extract Zip Spec      14 (20) '2.0'\n+2130DC Extract OS            00 (0) 'MS-DOS'\n+2130DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210DC6 Compression Method    0008 (8) 'Deflated'\n-210DC8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210DCC CRC                   183E1D03 (406723843)\n-210DD0 Compressed Size       00000DEB (3563)\n-210DD4 Uncompressed Size     0000B03A (45114)\n-210DD8 Filename Length       002D (45)\n-210DDA Extra Length          0000 (0)\n-210DDC Comment Length        0000 (0)\n-210DDE Disk Start            0000 (0)\n-210DE0 Int File Attributes   0000 (0)\n+2130DF Compression Method    0008 (8) 'Deflated'\n+2130E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2130E5 CRC                   45B97541 (1169782081)\n+2130E9 Compressed Size       00000D56 (3414)\n+2130ED Uncompressed Size     0000A69D (42653)\n+2130F1 Filename Length       002D (45)\n+2130F3 Extra Length          0000 (0)\n+2130F5 Comment Length        0000 (0)\n+2130F7 Disk Start            0000 (0)\n+2130F9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-210DE2 Ext File Attributes   00000000 (0)\n-210DE6 Local Header Offset   00003577 (13687)\n-210DEA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2130FB Ext File Attributes   00000000 (0)\n+2130FF Local Header Offset   00003577 (13687)\n+213103 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210DEA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213103: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-210E17 CENTRAL HEADER #10    02014B50 (33639248)\n-210E1B Created Zip Spec      14 (20) '2.0'\n-210E1C Created OS            00 (0) 'MS-DOS'\n-210E1D Extract Zip Spec      14 (20) '2.0'\n-210E1E Extract OS            00 (0) 'MS-DOS'\n-210E1F General Purpose Flag  0808 (2056)\n+213130 CENTRAL HEADER #10    02014B50 (33639248)\n+213134 Created Zip Spec      14 (20) '2.0'\n+213135 Created OS            00 (0) 'MS-DOS'\n+213136 Extract Zip Spec      14 (20) '2.0'\n+213137 Extract OS            00 (0) 'MS-DOS'\n+213138 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210E21 Compression Method    0008 (8) 'Deflated'\n-210E23 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210E27 CRC                   37E806FA (937953018)\n-210E2B Compressed Size       00000037 (55)\n-210E2F Uncompressed Size     0000003C (60)\n-210E33 Filename Length       0034 (52)\n-210E35 Extra Length          0000 (0)\n-210E37 Comment Length        0000 (0)\n-210E39 Disk Start            0000 (0)\n-210E3B Int File Attributes   0000 (0)\n+21313A Compression Method    0008 (8) 'Deflated'\n+21313C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213140 CRC                   37E806FA (937953018)\n+213144 Compressed Size       00000037 (55)\n+213148 Uncompressed Size     0000003C (60)\n+21314C Filename Length       0034 (52)\n+21314E Extra Length          0000 (0)\n+213150 Comment Length        0000 (0)\n+213152 Disk Start            0000 (0)\n+213154 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-210E3D Ext File Attributes   00000000 (0)\n-210E41 Local Header Offset   000043BD (17341)\n-210E45 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213156 Ext File Attributes   00000000 (0)\n+21315A Local Header Offset   00004328 (17192)\n+21315E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210E45: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21315E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-210E79 CENTRAL HEADER #11    02014B50 (33639248)\n-210E7D Created Zip Spec      14 (20) '2.0'\n-210E7E Created OS            00 (0) 'MS-DOS'\n-210E7F Extract Zip Spec      14 (20) '2.0'\n-210E80 Extract OS            00 (0) 'MS-DOS'\n-210E81 General Purpose Flag  0808 (2056)\n+213192 CENTRAL HEADER #11    02014B50 (33639248)\n+213196 Created Zip Spec      14 (20) '2.0'\n+213197 Created OS            00 (0) 'MS-DOS'\n+213198 Extract Zip Spec      14 (20) '2.0'\n+213199 Extract OS            00 (0) 'MS-DOS'\n+21319A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210E83 Compression Method    0008 (8) 'Deflated'\n-210E85 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210E89 CRC                   00000000 (0)\n-210E8D Compressed Size       00000002 (2)\n-210E91 Uncompressed Size     00000000 (0)\n-210E95 Filename Length       0031 (49)\n-210E97 Extra Length          0000 (0)\n-210E99 Comment Length        0000 (0)\n-210E9B Disk Start            0000 (0)\n-210E9D Int File Attributes   0000 (0)\n+21319C Compression Method    0008 (8) 'Deflated'\n+21319E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2131A2 CRC                   00000000 (0)\n+2131A6 Compressed Size       00000002 (2)\n+2131AA Uncompressed Size     00000000 (0)\n+2131AE Filename Length       0004 (4)\n+2131B0 Extra Length          0000 (0)\n+2131B2 Comment Length        0000 (0)\n+2131B4 Disk Start            0000 (0)\n+2131B6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-210E9F Ext File Attributes   00000000 (0)\n-210EA3 Local Header Offset   00004456 (17494)\n-210EA7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2131B8 Ext File Attributes   00000000 (0)\n+2131BC Local Header Offset   000043C1 (17345)\n+2131C0 Filename              'XXXX'\n #\n-# WARNING: Offset 0x210EA7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2131C0: Filename 'XXXX'\n #          Zero length filename\n #\n \n-210ED8 CENTRAL HEADER #12    02014B50 (33639248)\n-210EDC Created Zip Spec      14 (20) '2.0'\n-210EDD Created OS            00 (0) 'MS-DOS'\n-210EDE Extract Zip Spec      14 (20) '2.0'\n-210EDF Extract OS            00 (0) 'MS-DOS'\n-210EE0 General Purpose Flag  0808 (2056)\n+2131C4 CENTRAL HEADER #12    02014B50 (33639248)\n+2131C8 Created Zip Spec      14 (20) '2.0'\n+2131C9 Created OS            00 (0) 'MS-DOS'\n+2131CA Extract Zip Spec      14 (20) '2.0'\n+2131CB Extract OS            00 (0) 'MS-DOS'\n+2131CC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210EE2 Compression Method    0008 (8) 'Deflated'\n-210EE4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210EE8 CRC                   48945B27 (1217682215)\n-210EEC Compressed Size       00000482 (1154)\n-210EF0 Uncompressed Size     00001F82 (8066)\n-210EF4 Filename Length       0038 (56)\n-210EF6 Extra Length          0000 (0)\n-210EF8 Comment Length        0000 (0)\n-210EFA Disk Start            0000 (0)\n-210EFC Int File Attributes   0000 (0)\n+2131CE Compression Method    0008 (8) 'Deflated'\n+2131D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2131D4 CRC                   00000000 (0)\n+2131D8 Compressed Size       00000002 (2)\n+2131DC Uncompressed Size     00000000 (0)\n+2131E0 Filename Length       000B (11)\n+2131E2 Extra Length          0000 (0)\n+2131E4 Comment Length        0000 (0)\n+2131E6 Disk Start            0000 (0)\n+2131E8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-210EFE Ext File Attributes   00000000 (0)\n-210F02 Local Header Offset   000044B7 (17591)\n-210F06 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2131EA Ext File Attributes   00000000 (0)\n+2131EE Local Header Offset   000043F5 (17397)\n+2131F2 Filename              'XXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210F06: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2131F2: Filename 'XXXXXXXXXXX'\n #          Zero length filename\n #\n \n-210F3E CENTRAL HEADER #13    02014B50 (33639248)\n-210F42 Created Zip Spec      14 (20) '2.0'\n-210F43 Created OS            00 (0) 'MS-DOS'\n-210F44 Extract Zip Spec      14 (20) '2.0'\n-210F45 Extract OS            00 (0) 'MS-DOS'\n-210F46 General Purpose Flag  0808 (2056)\n+2131FD CENTRAL HEADER #13    02014B50 (33639248)\n+213201 Created Zip Spec      14 (20) '2.0'\n+213202 Created OS            00 (0) 'MS-DOS'\n+213203 Extract Zip Spec      14 (20) '2.0'\n+213204 Extract OS            00 (0) 'MS-DOS'\n+213205 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210F48 Compression Method    0008 (8) 'Deflated'\n-210F4A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210F4E CRC                   494D98C1 (1229822145)\n-210F52 Compressed Size       00000045 (69)\n-210F56 Uncompressed Size     00000047 (71)\n-210F5A Filename Length       003F (63)\n-210F5C Extra Length          0000 (0)\n-210F5E Comment Length        0000 (0)\n-210F60 Disk Start            0000 (0)\n-210F62 Int File Attributes   0000 (0)\n+213207 Compression Method    0008 (8) 'Deflated'\n+213209 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21320D CRC                   00000000 (0)\n+213211 Compressed Size       00000002 (2)\n+213215 Uncompressed Size     00000000 (0)\n+213219 Filename Length       0011 (17)\n+21321B Extra Length          0000 (0)\n+21321D Comment Length        0000 (0)\n+21321F Disk Start            0000 (0)\n+213221 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-210F64 Ext File Attributes   00000000 (0)\n-210F68 Local Header Offset   0000499F (18847)\n-210F6C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213223 Ext File Attributes   00000000 (0)\n+213227 Local Header Offset   00004430 (17456)\n+21322B Filename              'XXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210F6C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21322B: Filename 'XXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-210FAB CENTRAL HEADER #14    02014B50 (33639248)\n-210FAF Created Zip Spec      14 (20) '2.0'\n-210FB0 Created OS            00 (0) 'MS-DOS'\n-210FB1 Extract Zip Spec      14 (20) '2.0'\n-210FB2 Extract OS            00 (0) 'MS-DOS'\n-210FB3 General Purpose Flag  0808 (2056)\n+21323C CENTRAL HEADER #14    02014B50 (33639248)\n+213240 Created Zip Spec      14 (20) '2.0'\n+213241 Created OS            00 (0) 'MS-DOS'\n+213242 Extract Zip Spec      14 (20) '2.0'\n+213243 Extract OS            00 (0) 'MS-DOS'\n+213244 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210FB5 Compression Method    0008 (8) 'Deflated'\n-210FB7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210FBB CRC                   00000000 (0)\n-210FBF Compressed Size       00000002 (2)\n-210FC3 Uncompressed Size     00000000 (0)\n-210FC7 Filename Length       0010 (16)\n-210FC9 Extra Length          0000 (0)\n-210FCB Comment Length        0000 (0)\n-210FCD Disk Start            0000 (0)\n-210FCF Int File Attributes   0000 (0)\n+213246 Compression Method    0008 (8) 'Deflated'\n+213248 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21324C CRC                   00000000 (0)\n+213250 Compressed Size       00000002 (2)\n+213254 Uncompressed Size     00000000 (0)\n+213258 Filename Length       0018 (24)\n+21325A Extra Length          0000 (0)\n+21325C Comment Length        0000 (0)\n+21325E Disk Start            0000 (0)\n+213260 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-210FD1 Ext File Attributes   00000000 (0)\n-210FD5 Local Header Offset   00004A51 (19025)\n-210FD9 Filename              'XXXXXXXXXXXXXXXX'\n+213262 Ext File Attributes   00000000 (0)\n+213266 Local Header Offset   00004471 (17521)\n+21326A Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x210FD9: Filename 'XXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21326A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-210FE9 CENTRAL HEADER #15    02014B50 (33639248)\n-210FED Created Zip Spec      14 (20) '2.0'\n-210FEE Created OS            00 (0) 'MS-DOS'\n-210FEF Extract Zip Spec      14 (20) '2.0'\n-210FF0 Extract OS            00 (0) 'MS-DOS'\n-210FF1 General Purpose Flag  0808 (2056)\n+213282 CENTRAL HEADER #15    02014B50 (33639248)\n+213286 Created Zip Spec      14 (20) '2.0'\n+213287 Created OS            00 (0) 'MS-DOS'\n+213288 Extract Zip Spec      14 (20) '2.0'\n+213289 Extract OS            00 (0) 'MS-DOS'\n+21328A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-210FF3 Compression Method    0008 (8) 'Deflated'\n-210FF5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-210FF9 CRC                   E62522BB (3861193403)\n-210FFD Compressed Size       0000158A (5514)\n-211001 Uncompressed Size     0001376F (79727)\n-211005 Filename Length       0019 (25)\n-211007 Extra Length          0000 (0)\n-211009 Comment Length        0000 (0)\n-21100B Disk Start            0000 (0)\n-21100D Int File Attributes   0000 (0)\n+21328C Compression Method    0008 (8) 'Deflated'\n+21328E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213292 CRC                   6C5A36DD (1817851613)\n+213296 Compressed Size       0000026C (620)\n+21329A Uncompressed Size     00000495 (1173)\n+21329E Filename Length       002E (46)\n+2132A0 Extra Length          0000 (0)\n+2132A2 Comment Length        0000 (0)\n+2132A4 Disk Start            0000 (0)\n+2132A6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21100F Ext File Attributes   00000000 (0)\n-211013 Local Header Offset   00004A91 (19089)\n-211017 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+2132A8 Ext File Attributes   00000000 (0)\n+2132AC Local Header Offset   000044B9 (17593)\n+2132B0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211017: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2132B0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211030 CENTRAL HEADER #16    02014B50 (33639248)\n-211034 Created Zip Spec      14 (20) '2.0'\n-211035 Created OS            00 (0) 'MS-DOS'\n-211036 Extract Zip Spec      14 (20) '2.0'\n-211037 Extract OS            00 (0) 'MS-DOS'\n-211038 General Purpose Flag  0808 (2056)\n+2132DE CENTRAL HEADER #16    02014B50 (33639248)\n+2132E2 Created Zip Spec      14 (20) '2.0'\n+2132E3 Created OS            00 (0) 'MS-DOS'\n+2132E4 Extract Zip Spec      14 (20) '2.0'\n+2132E5 Extract OS            00 (0) 'MS-DOS'\n+2132E6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21103A Compression Method    0008 (8) 'Deflated'\n-21103C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211040 CRC                   7AAFE556 (2058347862)\n-211044 Compressed Size       00001610 (5648)\n-211048 Uncompressed Size     00013DDB (81371)\n-21104C Filename Length       0012 (18)\n-21104E Extra Length          0000 (0)\n-211050 Comment Length        0000 (0)\n-211052 Disk Start            0000 (0)\n-211054 Int File Attributes   0000 (0)\n+2132E8 Compression Method    0008 (8) 'Deflated'\n+2132EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2132EE CRC                   566E5E12 (1450073618)\n+2132F2 Compressed Size       0000025E (606)\n+2132F6 Uncompressed Size     0000047F (1151)\n+2132FA Filename Length       0030 (48)\n+2132FC Extra Length          0000 (0)\n+2132FE Comment Length        0000 (0)\n+213300 Disk Start            0000 (0)\n+213302 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211056 Ext File Attributes   00000000 (0)\n-21105A Local Header Offset   00006062 (24674)\n-21105E Filename              'XXXXXXXXXXXXXXXXXX'\n+213304 Ext File Attributes   00000000 (0)\n+213308 Local Header Offset   00004781 (18305)\n+21330C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21105E: Filename 'XXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21330C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211070 CENTRAL HEADER #17    02014B50 (33639248)\n-211074 Created Zip Spec      14 (20) '2.0'\n-211075 Created OS            00 (0) 'MS-DOS'\n-211076 Extract Zip Spec      14 (20) '2.0'\n-211077 Extract OS            00 (0) 'MS-DOS'\n-211078 General Purpose Flag  0808 (2056)\n+21333C CENTRAL HEADER #17    02014B50 (33639248)\n+213340 Created Zip Spec      14 (20) '2.0'\n+213341 Created OS            00 (0) 'MS-DOS'\n+213342 Extract Zip Spec      14 (20) '2.0'\n+213343 Extract OS            00 (0) 'MS-DOS'\n+213344 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21107A Compression Method    0008 (8) 'Deflated'\n-21107C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211080 CRC                   6642E973 (1715661171)\n-211084 Compressed Size       00000065 (101)\n-211088 Uncompressed Size     000000C8 (200)\n-21108C Filename Length       0018 (24)\n-21108E Extra Length          0000 (0)\n-211090 Comment Length        0000 (0)\n-211092 Disk Start            0000 (0)\n-211094 Int File Attributes   0000 (0)\n+213346 Compression Method    0008 (8) 'Deflated'\n+213348 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21334C CRC                   8233D78E (2184435598)\n+213350 Compressed Size       0000060F (1551)\n+213354 Uncompressed Size     000013B4 (5044)\n+213358 Filename Length       002E (46)\n+21335A Extra Length          0000 (0)\n+21335C Comment Length        0000 (0)\n+21335E Disk Start            0000 (0)\n+213360 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211096 Ext File Attributes   00000000 (0)\n-21109A Local Header Offset   000076B2 (30386)\n-21109E Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+213362 Ext File Attributes   00000000 (0)\n+213366 Local Header Offset   00004A3D (19005)\n+21336A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21109E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21336A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2110B6 CENTRAL HEADER #18    02014B50 (33639248)\n-2110BA Created Zip Spec      14 (20) '2.0'\n-2110BB Created OS            00 (0) 'MS-DOS'\n-2110BC Extract Zip Spec      14 (20) '2.0'\n-2110BD Extract OS            00 (0) 'MS-DOS'\n-2110BE General Purpose Flag  0808 (2056)\n+213398 CENTRAL HEADER #18    02014B50 (33639248)\n+21339C Created Zip Spec      14 (20) '2.0'\n+21339D Created OS            00 (0) 'MS-DOS'\n+21339E Extract Zip Spec      14 (20) '2.0'\n+21339F Extract OS            00 (0) 'MS-DOS'\n+2133A0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2110C0 Compression Method    0008 (8) 'Deflated'\n-2110C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2110C6 CRC                   03B2110A (62001418)\n-2110CA Compressed Size       00000053 (83)\n-2110CE Uncompressed Size     00000091 (145)\n-2110D2 Filename Length       0017 (23)\n-2110D4 Extra Length          0000 (0)\n-2110D6 Comment Length        0000 (0)\n-2110D8 Disk Start            0000 (0)\n-2110DA Int File Attributes   0000 (0)\n+2133A2 Compression Method    0008 (8) 'Deflated'\n+2133A4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2133A8 CRC                   23EF92DF (602903263)\n+2133AC Compressed Size       000017AA (6058)\n+2133B0 Uncompressed Size     0000606B (24683)\n+2133B4 Filename Length       002C (44)\n+2133B6 Extra Length          0000 (0)\n+2133B8 Comment Length        0000 (0)\n+2133BA Disk Start            0000 (0)\n+2133BC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2110DC Ext File Attributes   00000000 (0)\n-2110E0 Local Header Offset   0000775D (30557)\n-2110E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXX'\n+2133BE Ext File Attributes   00000000 (0)\n+2133C2 Local Header Offset   000050A8 (20648)\n+2133C6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2110E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2133C6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2110FB CENTRAL HEADER #19    02014B50 (33639248)\n-2110FF Created Zip Spec      14 (20) '2.0'\n-211100 Created OS            00 (0) 'MS-DOS'\n-211101 Extract Zip Spec      14 (20) '2.0'\n-211102 Extract OS            00 (0) 'MS-DOS'\n-211103 General Purpose Flag  0808 (2056)\n+2133F2 CENTRAL HEADER #19    02014B50 (33639248)\n+2133F6 Created Zip Spec      14 (20) '2.0'\n+2133F7 Created OS            00 (0) 'MS-DOS'\n+2133F8 Extract Zip Spec      14 (20) '2.0'\n+2133F9 Extract OS            00 (0) 'MS-DOS'\n+2133FA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211105 Compression Method    0008 (8) 'Deflated'\n-211107 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21110B CRC                   00000000 (0)\n-21110F Compressed Size       00000002 (2)\n-211113 Uncompressed Size     00000000 (0)\n-211117 Filename Length       0034 (52)\n-211119 Extra Length          0000 (0)\n-21111B Comment Length        0000 (0)\n-21111D Disk Start            0000 (0)\n-21111F Int File Attributes   0000 (0)\n+2133FC Compression Method    0008 (8) 'Deflated'\n+2133FE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213402 CRC                   8A9B11DB (2325418459)\n+213406 Compressed Size       00001BA0 (7072)\n+21340A Uncompressed Size     000080AE (32942)\n+21340E Filename Length       002A (42)\n+213410 Extra Length          0000 (0)\n+213412 Comment Length        0000 (0)\n+213414 Disk Start            0000 (0)\n+213416 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211121 Ext File Attributes   00000000 (0)\n-211125 Local Header Offset   000077F5 (30709)\n-211129 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213418 Ext File Attributes   00000000 (0)\n+21341C Local Header Offset   000068AC (26796)\n+213420 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211129: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213420: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21115D CENTRAL HEADER #20    02014B50 (33639248)\n-211161 Created Zip Spec      14 (20) '2.0'\n-211162 Created OS            00 (0) 'MS-DOS'\n-211163 Extract Zip Spec      14 (20) '2.0'\n-211164 Extract OS            00 (0) 'MS-DOS'\n-211165 General Purpose Flag  0808 (2056)\n+21344A CENTRAL HEADER #20    02014B50 (33639248)\n+21344E Created Zip Spec      14 (20) '2.0'\n+21344F Created OS            00 (0) 'MS-DOS'\n+213450 Extract Zip Spec      14 (20) '2.0'\n+213451 Extract OS            00 (0) 'MS-DOS'\n+213452 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211167 Compression Method    0008 (8) 'Deflated'\n-211169 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21116D CRC                   FF3886BE (4281894590)\n-211171 Compressed Size       00000504 (1284)\n-211175 Uncompressed Size     0000190E (6414)\n-211179 Filename Length       003B (59)\n-21117B Extra Length          0000 (0)\n-21117D Comment Length        0000 (0)\n-21117F Disk Start            0000 (0)\n-211181 Int File Attributes   0000 (0)\n+213454 Compression Method    0008 (8) 'Deflated'\n+213456 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21345A CRC                   00000000 (0)\n+21345E Compressed Size       00000002 (2)\n+213462 Uncompressed Size     00000000 (0)\n+213466 Filename Length       0022 (34)\n+213468 Extra Length          0000 (0)\n+21346A Comment Length        0000 (0)\n+21346C Disk Start            0000 (0)\n+21346E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211183 Ext File Attributes   00000000 (0)\n-211187 Local Header Offset   00007859 (30809)\n-21118B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213470 Ext File Attributes   00000000 (0)\n+213474 Local Header Offset   000084A4 (33956)\n+213478 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21118B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213478: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2111C6 CENTRAL HEADER #21    02014B50 (33639248)\n-2111CA Created Zip Spec      14 (20) '2.0'\n-2111CB Created OS            00 (0) 'MS-DOS'\n-2111CC Extract Zip Spec      14 (20) '2.0'\n-2111CD Extract OS            00 (0) 'MS-DOS'\n-2111CE General Purpose Flag  0808 (2056)\n+21349A CENTRAL HEADER #21    02014B50 (33639248)\n+21349E Created Zip Spec      14 (20) '2.0'\n+21349F Created OS            00 (0) 'MS-DOS'\n+2134A0 Extract Zip Spec      14 (20) '2.0'\n+2134A1 Extract OS            00 (0) 'MS-DOS'\n+2134A2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2111D0 Compression Method    0008 (8) 'Deflated'\n-2111D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2111D6 CRC                   833E63EB (2201904107)\n-2111DA Compressed Size       00000048 (72)\n-2111DE Uncompressed Size     0000004A (74)\n-2111E2 Filename Length       0042 (66)\n-2111E4 Extra Length          0000 (0)\n-2111E6 Comment Length        0000 (0)\n-2111E8 Disk Start            0000 (0)\n-2111EA Int File Attributes   0000 (0)\n+2134A4 Compression Method    0008 (8) 'Deflated'\n+2134A6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2134AA CRC                   D413AF69 (3558059881)\n+2134AE Compressed Size       00002503 (9475)\n+2134B2 Uncompressed Size     0000D22D (53805)\n+2134B6 Filename Length       0035 (53)\n+2134B8 Extra Length          0000 (0)\n+2134BA Comment Length        0000 (0)\n+2134BC Disk Start            0000 (0)\n+2134BE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2111EC Ext File Attributes   00000000 (0)\n-2111F0 Local Header Offset   00007DC6 (32198)\n-2111F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2134C0 Ext File Attributes   00000000 (0)\n+2134C4 Local Header Offset   000084F6 (34038)\n+2134C8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2111F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2134C8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211236 CENTRAL HEADER #22    02014B50 (33639248)\n-21123A Created Zip Spec      14 (20) '2.0'\n-21123B Created OS            00 (0) 'MS-DOS'\n-21123C Extract Zip Spec      14 (20) '2.0'\n-21123D Extract OS            00 (0) 'MS-DOS'\n-21123E General Purpose Flag  0808 (2056)\n+2134FD CENTRAL HEADER #22    02014B50 (33639248)\n+213501 Created Zip Spec      14 (20) '2.0'\n+213502 Created OS            00 (0) 'MS-DOS'\n+213503 Extract Zip Spec      14 (20) '2.0'\n+213504 Extract OS            00 (0) 'MS-DOS'\n+213505 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211240 Compression Method    0008 (8) 'Deflated'\n-211242 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211246 CRC                   00000000 (0)\n-21124A Compressed Size       00000002 (2)\n-21124E Uncompressed Size     00000000 (0)\n-211252 Filename Length       002E (46)\n-211254 Extra Length          0000 (0)\n-211256 Comment Length        0000 (0)\n-211258 Disk Start            0000 (0)\n-21125A Int File Attributes   0000 (0)\n+213507 Compression Method    0008 (8) 'Deflated'\n+213509 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21350D CRC                   E174331E (3782488862)\n+213511 Compressed Size       0000025F (607)\n+213515 Uncompressed Size     0000048E (1166)\n+213519 Filename Length       0046 (70)\n+21351B Extra Length          0000 (0)\n+21351D Comment Length        0000 (0)\n+21351F Disk Start            0000 (0)\n+213521 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21125C Ext File Attributes   00000000 (0)\n-211260 Local Header Offset   00007E7E (32382)\n-211264 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213523 Ext File Attributes   00000000 (0)\n+213527 Local Header Offset   0000AA5C (43612)\n+21352B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211264: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21352B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211292 CENTRAL HEADER #23    02014B50 (33639248)\n-211296 Created Zip Spec      14 (20) '2.0'\n-211297 Created OS            00 (0) 'MS-DOS'\n-211298 Extract Zip Spec      14 (20) '2.0'\n-211299 Extract OS            00 (0) 'MS-DOS'\n-21129A General Purpose Flag  0808 (2056)\n+213571 CENTRAL HEADER #23    02014B50 (33639248)\n+213575 Created Zip Spec      14 (20) '2.0'\n+213576 Created OS            00 (0) 'MS-DOS'\n+213577 Extract Zip Spec      14 (20) '2.0'\n+213578 Extract OS            00 (0) 'MS-DOS'\n+213579 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21129C Compression Method    0008 (8) 'Deflated'\n-21129E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2112A2 CRC                   3E035C22 (1040407586)\n-2112A6 Compressed Size       000003BC (956)\n-2112AA Uncompressed Size     00000A38 (2616)\n-2112AE Filename Length       0035 (53)\n-2112B0 Extra Length          0000 (0)\n-2112B2 Comment Length        0000 (0)\n-2112B4 Disk Start            0000 (0)\n-2112B6 Int File Attributes   0000 (0)\n+21357B Compression Method    0008 (8) 'Deflated'\n+21357D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213581 CRC                   00000000 (0)\n+213585 Compressed Size       00000002 (2)\n+213589 Uncompressed Size     00000000 (0)\n+21358D Filename Length       002B (43)\n+21358F Extra Length          0000 (0)\n+213591 Comment Length        0000 (0)\n+213593 Disk Start            0000 (0)\n+213595 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2112B8 Ext File Attributes   00000000 (0)\n-2112BC Local Header Offset   00007EDC (32476)\n-2112C0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213597 Ext File Attributes   00000000 (0)\n+21359B Local Header Offset   0000AD2F (44335)\n+21359F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2112C0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21359F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2112F5 CENTRAL HEADER #24    02014B50 (33639248)\n-2112F9 Created Zip Spec      14 (20) '2.0'\n-2112FA Created OS            00 (0) 'MS-DOS'\n-2112FB Extract Zip Spec      14 (20) '2.0'\n-2112FC Extract OS            00 (0) 'MS-DOS'\n-2112FD General Purpose Flag  0808 (2056)\n+2135CA CENTRAL HEADER #24    02014B50 (33639248)\n+2135CE Created Zip Spec      14 (20) '2.0'\n+2135CF Created OS            00 (0) 'MS-DOS'\n+2135D0 Extract Zip Spec      14 (20) '2.0'\n+2135D1 Extract OS            00 (0) 'MS-DOS'\n+2135D2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2112FF Compression Method    0008 (8) 'Deflated'\n-211301 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211305 CRC                   78750509 (2020934921)\n-211309 Compressed Size       00000042 (66)\n-21130D Uncompressed Size     00000044 (68)\n-211311 Filename Length       003C (60)\n-211313 Extra Length          0000 (0)\n-211315 Comment Length        0000 (0)\n-211317 Disk Start            0000 (0)\n-211319 Int File Attributes   0000 (0)\n+2135D4 Compression Method    0008 (8) 'Deflated'\n+2135D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2135DA CRC                   FC3CBC13 (4231838739)\n+2135DE Compressed Size       000003B6 (950)\n+2135E2 Uncompressed Size     00000A37 (2615)\n+2135E6 Filename Length       003F (63)\n+2135E8 Extra Length          0000 (0)\n+2135EA Comment Length        0000 (0)\n+2135EC Disk Start            0000 (0)\n+2135EE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21131B Ext File Attributes   00000000 (0)\n-21131F Local Header Offset   000082FB (33531)\n-211323 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2135F0 Ext File Attributes   00000000 (0)\n+2135F4 Local Header Offset   0000AD8A (44426)\n+2135F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211323: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2135F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21135F CENTRAL HEADER #25    02014B50 (33639248)\n-211363 Created Zip Spec      14 (20) '2.0'\n-211364 Created OS            00 (0) 'MS-DOS'\n-211365 Extract Zip Spec      14 (20) '2.0'\n-211366 Extract OS            00 (0) 'MS-DOS'\n-211367 General Purpose Flag  0808 (2056)\n+213637 CENTRAL HEADER #25    02014B50 (33639248)\n+21363B Created Zip Spec      14 (20) '2.0'\n+21363C Created OS            00 (0) 'MS-DOS'\n+21363D Extract Zip Spec      14 (20) '2.0'\n+21363E Extract OS            00 (0) 'MS-DOS'\n+21363F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211369 Compression Method    0008 (8) 'Deflated'\n-21136B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21136F CRC                   00000000 (0)\n-211373 Compressed Size       00000002 (2)\n-211377 Uncompressed Size     00000000 (0)\n-21137B Filename Length       0009 (9)\n-21137D Extra Length          0000 (0)\n-21137F Comment Length        0000 (0)\n-211381 Disk Start            0000 (0)\n-211383 Int File Attributes   0000 (0)\n+213641 Compression Method    0008 (8) 'Deflated'\n+213643 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213647 CRC                   A83ED6AA (2822690474)\n+21364B Compressed Size       00000868 (2152)\n+21364F Uncompressed Size     00002555 (9557)\n+213653 Filename Length       0048 (72)\n+213655 Extra Length          0000 (0)\n+213657 Comment Length        0000 (0)\n+213659 Disk Start            0000 (0)\n+21365B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211385 Ext File Attributes   00000000 (0)\n-211389 Local Header Offset   000083A7 (33703)\n-21138D Filename              'XXXXXXXXX'\n+21365D Ext File Attributes   00000000 (0)\n+213661 Local Header Offset   0000B1AD (45485)\n+213665 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21138D: Filename 'XXXXXXXXX'\n+# WARNING: Offset 0x213665: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211396 CENTRAL HEADER #26    02014B50 (33639248)\n-21139A Created Zip Spec      14 (20) '2.0'\n-21139B Created OS            00 (0) 'MS-DOS'\n-21139C Extract Zip Spec      14 (20) '2.0'\n-21139D Extract OS            00 (0) 'MS-DOS'\n-21139E General Purpose Flag  0808 (2056)\n+2136AD CENTRAL HEADER #26    02014B50 (33639248)\n+2136B1 Created Zip Spec      14 (20) '2.0'\n+2136B2 Created OS            00 (0) 'MS-DOS'\n+2136B3 Extract Zip Spec      14 (20) '2.0'\n+2136B4 Extract OS            00 (0) 'MS-DOS'\n+2136B5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2113A0 Compression Method    0008 (8) 'Deflated'\n-2113A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2113A6 CRC                   94CE4031 (2496544817)\n-2113AA Compressed Size       000006D2 (1746)\n-2113AE Uncompressed Size     000011A8 (4520)\n-2113B2 Filename Length       001E (30)\n-2113B4 Extra Length          0000 (0)\n-2113B6 Comment Length        0000 (0)\n-2113B8 Disk Start            0000 (0)\n-2113BA Int File Attributes   0000 (0)\n+2136B7 Compression Method    0008 (8) 'Deflated'\n+2136B9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2136BD CRC                   E160ED1C (3781225756)\n+2136C1 Compressed Size       00000686 (1670)\n+2136C5 Uncompressed Size     00001657 (5719)\n+2136C9 Filename Length       0045 (69)\n+2136CB Extra Length          0000 (0)\n+2136CD Comment Length        0000 (0)\n+2136CF Disk Start            0000 (0)\n+2136D1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2113BC Ext File Attributes   00000000 (0)\n-2113C0 Local Header Offset   000083E0 (33760)\n-2113C4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2136D3 Ext File Attributes   00000000 (0)\n+2136D7 Local Header Offset   0000BA8B (47755)\n+2136DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2113C4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2136DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2113E2 CENTRAL HEADER #27    02014B50 (33639248)\n-2113E6 Created Zip Spec      14 (20) '2.0'\n-2113E7 Created OS            00 (0) 'MS-DOS'\n-2113E8 Extract Zip Spec      14 (20) '2.0'\n-2113E9 Extract OS            00 (0) 'MS-DOS'\n-2113EA General Purpose Flag  0808 (2056)\n+213720 CENTRAL HEADER #27    02014B50 (33639248)\n+213724 Created Zip Spec      14 (20) '2.0'\n+213725 Created OS            00 (0) 'MS-DOS'\n+213726 Extract Zip Spec      14 (20) '2.0'\n+213727 Extract OS            00 (0) 'MS-DOS'\n+213728 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2113EC Compression Method    0008 (8) 'Deflated'\n-2113EE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2113F2 CRC                   00000000 (0)\n-2113F6 Compressed Size       00000002 (2)\n-2113FA Uncompressed Size     00000000 (0)\n-2113FE Filename Length       002D (45)\n-211400 Extra Length          0000 (0)\n-211402 Comment Length        0000 (0)\n-211404 Disk Start            0000 (0)\n-211406 Int File Attributes   0000 (0)\n+21372A Compression Method    0008 (8) 'Deflated'\n+21372C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213730 CRC                   156605D7 (359007703)\n+213734 Compressed Size       00000516 (1302)\n+213738 Uncompressed Size     000010AA (4266)\n+21373C Filename Length       0048 (72)\n+21373E Extra Length          0000 (0)\n+213740 Comment Length        0000 (0)\n+213742 Disk Start            0000 (0)\n+213744 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211408 Ext File Attributes   00000000 (0)\n-21140C Local Header Offset   00008AFE (35582)\n-211410 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213746 Ext File Attributes   00000000 (0)\n+21374A Local Header Offset   0000C184 (49540)\n+21374E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211410: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21374E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21143D CENTRAL HEADER #28    02014B50 (33639248)\n-211441 Created Zip Spec      14 (20) '2.0'\n-211442 Created OS            00 (0) 'MS-DOS'\n-211443 Extract Zip Spec      14 (20) '2.0'\n-211444 Extract OS            00 (0) 'MS-DOS'\n-211445 General Purpose Flag  0808 (2056)\n+213796 CENTRAL HEADER #28    02014B50 (33639248)\n+21379A Created Zip Spec      14 (20) '2.0'\n+21379B Created OS            00 (0) 'MS-DOS'\n+21379C Extract Zip Spec      14 (20) '2.0'\n+21379D Extract OS            00 (0) 'MS-DOS'\n+21379E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211447 Compression Method    0008 (8) 'Deflated'\n-211449 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21144D CRC                   4D73DC93 (1299438739)\n-211451 Compressed Size       000003DA (986)\n-211455 Uncompressed Size     00000BA2 (2978)\n-211459 Filename Length       0034 (52)\n-21145B Extra Length          0000 (0)\n-21145D Comment Length        0000 (0)\n-21145F Disk Start            0000 (0)\n-211461 Int File Attributes   0000 (0)\n+2137A0 Compression Method    0008 (8) 'Deflated'\n+2137A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2137A6 CRC                   67C26956 (1740794198)\n+2137AA Compressed Size       000006B3 (1715)\n+2137AE Uncompressed Size     00001B93 (7059)\n+2137B2 Filename Length       0046 (70)\n+2137B4 Extra Length          0000 (0)\n+2137B6 Comment Length        0000 (0)\n+2137B8 Disk Start            0000 (0)\n+2137BA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211463 Ext File Attributes   00000000 (0)\n-211467 Local Header Offset   00008B5B (35675)\n-21146B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2137BC Ext File Attributes   00000000 (0)\n+2137C0 Local Header Offset   0000C710 (50960)\n+2137C4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21146B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2137C4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21149F CENTRAL HEADER #29    02014B50 (33639248)\n-2114A3 Created Zip Spec      14 (20) '2.0'\n-2114A4 Created OS            00 (0) 'MS-DOS'\n-2114A5 Extract Zip Spec      14 (20) '2.0'\n-2114A6 Extract OS            00 (0) 'MS-DOS'\n-2114A7 General Purpose Flag  0808 (2056)\n+21380A CENTRAL HEADER #29    02014B50 (33639248)\n+21380E Created Zip Spec      14 (20) '2.0'\n+21380F Created OS            00 (0) 'MS-DOS'\n+213810 Extract Zip Spec      14 (20) '2.0'\n+213811 Extract OS            00 (0) 'MS-DOS'\n+213812 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2114A9 Compression Method    0008 (8) 'Deflated'\n-2114AB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2114AF CRC                   295DB5AA (694007210)\n-2114B3 Compressed Size       00000041 (65)\n-2114B7 Uncompressed Size     00000043 (67)\n-2114BB Filename Length       003B (59)\n-2114BD Extra Length          0000 (0)\n-2114BF Comment Length        0000 (0)\n-2114C1 Disk Start            0000 (0)\n-2114C3 Int File Attributes   0000 (0)\n+213814 Compression Method    0008 (8) 'Deflated'\n+213816 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21381A CRC                   46796056 (1182359638)\n+21381E Compressed Size       00000661 (1633)\n+213822 Uncompressed Size     00001B45 (6981)\n+213826 Filename Length       0042 (66)\n+213828 Extra Length          0000 (0)\n+21382A Comment Length        0000 (0)\n+21382C Disk Start            0000 (0)\n+21382E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2114C5 Ext File Attributes   00000000 (0)\n-2114C9 Local Header Offset   00008F97 (36759)\n-2114CD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213830 Ext File Attributes   00000000 (0)\n+213834 Local Header Offset   0000CE37 (52791)\n+213838 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2114CD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213838: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211508 CENTRAL HEADER #30    02014B50 (33639248)\n-21150C Created Zip Spec      14 (20) '2.0'\n-21150D Created OS            00 (0) 'MS-DOS'\n-21150E Extract Zip Spec      14 (20) '2.0'\n-21150F Extract OS            00 (0) 'MS-DOS'\n-211510 General Purpose Flag  0808 (2056)\n+21387A CENTRAL HEADER #30    02014B50 (33639248)\n+21387E Created Zip Spec      14 (20) '2.0'\n+21387F Created OS            00 (0) 'MS-DOS'\n+213880 Extract Zip Spec      14 (20) '2.0'\n+213881 Extract OS            00 (0) 'MS-DOS'\n+213882 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211512 Compression Method    0008 (8) 'Deflated'\n-211514 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211518 CRC                   00000000 (0)\n-21151C Compressed Size       00000002 (2)\n-211520 Uncompressed Size     00000000 (0)\n-211524 Filename Length       0033 (51)\n-211526 Extra Length          0000 (0)\n-211528 Comment Length        0000 (0)\n-21152A Disk Start            0000 (0)\n-21152C Int File Attributes   0000 (0)\n+213884 Compression Method    0008 (8) 'Deflated'\n+213886 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21388A CRC                   C694724C (3331617356)\n+21388E Compressed Size       00000316 (790)\n+213892 Uncompressed Size     00000788 (1928)\n+213896 Filename Length       003F (63)\n+213898 Extra Length          0000 (0)\n+21389A Comment Length        0000 (0)\n+21389C Disk Start            0000 (0)\n+21389E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21152E Ext File Attributes   00000000 (0)\n-211532 Local Header Offset   00009041 (36929)\n-211536 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2138A0 Ext File Attributes   00000000 (0)\n+2138A4 Local Header Offset   0000D508 (54536)\n+2138A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211536: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2138A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211569 CENTRAL HEADER #31    02014B50 (33639248)\n-21156D Created Zip Spec      14 (20) '2.0'\n-21156E Created OS            00 (0) 'MS-DOS'\n-21156F Extract Zip Spec      14 (20) '2.0'\n-211570 Extract OS            00 (0) 'MS-DOS'\n-211571 General Purpose Flag  0808 (2056)\n+2138E7 CENTRAL HEADER #31    02014B50 (33639248)\n+2138EB Created Zip Spec      14 (20) '2.0'\n+2138EC Created OS            00 (0) 'MS-DOS'\n+2138ED Extract Zip Spec      14 (20) '2.0'\n+2138EE Extract OS            00 (0) 'MS-DOS'\n+2138EF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211573 Compression Method    0008 (8) 'Deflated'\n-211575 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211579 CRC                   B1327293 (2972873363)\n-21157D Compressed Size       00000396 (918)\n-211581 Uncompressed Size     000008EB (2283)\n-211585 Filename Length       003A (58)\n-211587 Extra Length          0000 (0)\n-211589 Comment Length        0000 (0)\n-21158B Disk Start            0000 (0)\n-21158D Int File Attributes   0000 (0)\n+2138F1 Compression Method    0008 (8) 'Deflated'\n+2138F3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2138F7 CRC                   E2414032 (3795927090)\n+2138FB Compressed Size       000004C3 (1219)\n+2138FF Uncompressed Size     0000118B (4491)\n+213903 Filename Length       0043 (67)\n+213905 Extra Length          0000 (0)\n+213907 Comment Length        0000 (0)\n+213909 Disk Start            0000 (0)\n+21390B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21158F Ext File Attributes   00000000 (0)\n-211593 Local Header Offset   000090A4 (37028)\n-211597 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21390D Ext File Attributes   00000000 (0)\n+213911 Local Header Offset   0000D88B (55435)\n+213915 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211597: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213915: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2115D1 CENTRAL HEADER #32    02014B50 (33639248)\n-2115D5 Created Zip Spec      14 (20) '2.0'\n-2115D6 Created OS            00 (0) 'MS-DOS'\n-2115D7 Extract Zip Spec      14 (20) '2.0'\n-2115D8 Extract OS            00 (0) 'MS-DOS'\n-2115D9 General Purpose Flag  0808 (2056)\n+213958 CENTRAL HEADER #32    02014B50 (33639248)\n+21395C Created Zip Spec      14 (20) '2.0'\n+21395D Created OS            00 (0) 'MS-DOS'\n+21395E Extract Zip Spec      14 (20) '2.0'\n+21395F Extract OS            00 (0) 'MS-DOS'\n+213960 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2115DB Compression Method    0008 (8) 'Deflated'\n-2115DD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2115E1 CRC                   20BB9478 (549164152)\n-2115E5 Compressed Size       00000044 (68)\n-2115E9 Uncompressed Size     00000049 (73)\n-2115ED Filename Length       0041 (65)\n-2115EF Extra Length          0000 (0)\n-2115F1 Comment Length        0000 (0)\n-2115F3 Disk Start            0000 (0)\n-2115F5 Int File Attributes   0000 (0)\n+213962 Compression Method    0008 (8) 'Deflated'\n+213964 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213968 CRC                   85CF6764 (2244962148)\n+21396C Compressed Size       00000494 (1172)\n+213970 Uncompressed Size     00000DB3 (3507)\n+213974 Filename Length       003F (63)\n+213976 Extra Length          0000 (0)\n+213978 Comment Length        0000 (0)\n+21397A Disk Start            0000 (0)\n+21397C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2115F7 Ext File Attributes   00000000 (0)\n-2115FB Local Header Offset   000094A2 (38050)\n-2115FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21397E Ext File Attributes   00000000 (0)\n+213982 Local Header Offset   0000DDBF (56767)\n+213986 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2115FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213986: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211640 CENTRAL HEADER #33    02014B50 (33639248)\n-211644 Created Zip Spec      14 (20) '2.0'\n-211645 Created OS            00 (0) 'MS-DOS'\n-211646 Extract Zip Spec      14 (20) '2.0'\n-211647 Extract OS            00 (0) 'MS-DOS'\n-211648 General Purpose Flag  0808 (2056)\n+2139C5 CENTRAL HEADER #33    02014B50 (33639248)\n+2139C9 Created Zip Spec      14 (20) '2.0'\n+2139CA Created OS            00 (0) 'MS-DOS'\n+2139CB Extract Zip Spec      14 (20) '2.0'\n+2139CC Extract OS            00 (0) 'MS-DOS'\n+2139CD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21164A Compression Method    0008 (8) 'Deflated'\n-21164C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211650 CRC                   00000000 (0)\n-211654 Compressed Size       00000002 (2)\n-211658 Uncompressed Size     00000000 (0)\n-21165C Filename Length       0038 (56)\n-21165E Extra Length          0000 (0)\n-211660 Comment Length        0000 (0)\n-211662 Disk Start            0000 (0)\n-211664 Int File Attributes   0000 (0)\n+2139CF Compression Method    0008 (8) 'Deflated'\n+2139D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2139D5 CRC                   D26D2315 (3530367765)\n+2139D9 Compressed Size       000004FD (1277)\n+2139DD Uncompressed Size     0000115F (4447)\n+2139E1 Filename Length       0045 (69)\n+2139E3 Extra Length          0000 (0)\n+2139E5 Comment Length        0000 (0)\n+2139E7 Disk Start            0000 (0)\n+2139E9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211666 Ext File Attributes   00000000 (0)\n-21166A Local Header Offset   00009555 (38229)\n-21166E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2139EB Ext File Attributes   00000000 (0)\n+2139EF Local Header Offset   0000E2C0 (58048)\n+2139F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21166E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2139F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2116A6 CENTRAL HEADER #34    02014B50 (33639248)\n-2116AA Created Zip Spec      14 (20) '2.0'\n-2116AB Created OS            00 (0) 'MS-DOS'\n-2116AC Extract Zip Spec      14 (20) '2.0'\n-2116AD Extract OS            00 (0) 'MS-DOS'\n-2116AE General Purpose Flag  0808 (2056)\n+213A38 CENTRAL HEADER #34    02014B50 (33639248)\n+213A3C Created Zip Spec      14 (20) '2.0'\n+213A3D Created OS            00 (0) 'MS-DOS'\n+213A3E Extract Zip Spec      14 (20) '2.0'\n+213A3F Extract OS            00 (0) 'MS-DOS'\n+213A40 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2116B0 Compression Method    0008 (8) 'Deflated'\n-2116B2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2116B6 CRC                   C4977D68 (3298262376)\n-2116BA Compressed Size       000003DC (988)\n-2116BE Uncompressed Size     00000C15 (3093)\n-2116C2 Filename Length       003F (63)\n-2116C4 Extra Length          0000 (0)\n-2116C6 Comment Length        0000 (0)\n-2116C8 Disk Start            0000 (0)\n-2116CA Int File Attributes   0000 (0)\n+213A42 Compression Method    0008 (8) 'Deflated'\n+213A44 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213A48 CRC                   F796C627 (4153853479)\n+213A4C Compressed Size       0000060E (1550)\n+213A50 Uncompressed Size     000018D0 (6352)\n+213A54 Filename Length       003D (61)\n+213A56 Extra Length          0000 (0)\n+213A58 Comment Length        0000 (0)\n+213A5A Disk Start            0000 (0)\n+213A5C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2116CC Ext File Attributes   00000000 (0)\n-2116D0 Local Header Offset   000095BD (38333)\n-2116D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213A5E Ext File Attributes   00000000 (0)\n+213A62 Local Header Offset   0000E830 (59440)\n+213A66 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2116D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213A66: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211713 CENTRAL HEADER #35    02014B50 (33639248)\n-211717 Created Zip Spec      14 (20) '2.0'\n-211718 Created OS            00 (0) 'MS-DOS'\n-211719 Extract Zip Spec      14 (20) '2.0'\n-21171A Extract OS            00 (0) 'MS-DOS'\n-21171B General Purpose Flag  0808 (2056)\n+213AA3 CENTRAL HEADER #35    02014B50 (33639248)\n+213AA7 Created Zip Spec      14 (20) '2.0'\n+213AA8 Created OS            00 (0) 'MS-DOS'\n+213AA9 Extract Zip Spec      14 (20) '2.0'\n+213AAA Extract OS            00 (0) 'MS-DOS'\n+213AAB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21171D Compression Method    0008 (8) 'Deflated'\n-21171F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211723 CRC                   D1A9E247 (3517571655)\n-211727 Compressed Size       0000004A (74)\n-21172B Uncompressed Size     0000004E (78)\n-21172F Filename Length       0046 (70)\n-211731 Extra Length          0000 (0)\n-211733 Comment Length        0000 (0)\n-211735 Disk Start            0000 (0)\n-211737 Int File Attributes   0000 (0)\n+213AAD Compression Method    0008 (8) 'Deflated'\n+213AAF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213AB3 CRC                   EB12A7F1 (3943868401)\n+213AB7 Compressed Size       0000043E (1086)\n+213ABB Uncompressed Size     00000E08 (3592)\n+213ABF Filename Length       003D (61)\n+213AC1 Extra Length          0000 (0)\n+213AC3 Comment Length        0000 (0)\n+213AC5 Disk Start            0000 (0)\n+213AC7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211739 Ext File Attributes   00000000 (0)\n-21173D Local Header Offset   00009A06 (39430)\n-211741 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213AC9 Ext File Attributes   00000000 (0)\n+213ACD Local Header Offset   0000EEA9 (61097)\n+213AD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211741: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213AD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211787 CENTRAL HEADER #36    02014B50 (33639248)\n-21178B Created Zip Spec      14 (20) '2.0'\n-21178C Created OS            00 (0) 'MS-DOS'\n-21178D Extract Zip Spec      14 (20) '2.0'\n-21178E Extract OS            00 (0) 'MS-DOS'\n-21178F General Purpose Flag  0808 (2056)\n+213B0E CENTRAL HEADER #36    02014B50 (33639248)\n+213B12 Created Zip Spec      14 (20) '2.0'\n+213B13 Created OS            00 (0) 'MS-DOS'\n+213B14 Extract Zip Spec      14 (20) '2.0'\n+213B15 Extract OS            00 (0) 'MS-DOS'\n+213B16 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211791 Compression Method    0008 (8) 'Deflated'\n-211793 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211797 CRC                   00000000 (0)\n-21179B Compressed Size       00000002 (2)\n-21179F Uncompressed Size     00000000 (0)\n-2117A3 Filename Length       0033 (51)\n-2117A5 Extra Length          0000 (0)\n-2117A7 Comment Length        0000 (0)\n-2117A9 Disk Start            0000 (0)\n-2117AB Int File Attributes   0000 (0)\n+213B18 Compression Method    0008 (8) 'Deflated'\n+213B1A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213B1E CRC                   F5A79DAF (4121402799)\n+213B22 Compressed Size       00000495 (1173)\n+213B26 Uncompressed Size     00000F2D (3885)\n+213B2A Filename Length       003E (62)\n+213B2C Extra Length          0000 (0)\n+213B2E Comment Length        0000 (0)\n+213B30 Disk Start            0000 (0)\n+213B32 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2117AD Ext File Attributes   00000000 (0)\n-2117B1 Local Header Offset   00009AC4 (39620)\n-2117B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213B34 Ext File Attributes   00000000 (0)\n+213B38 Local Header Offset   0000F352 (62290)\n+213B3C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2117B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213B3C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2117E8 CENTRAL HEADER #37    02014B50 (33639248)\n-2117EC Created Zip Spec      14 (20) '2.0'\n-2117ED Created OS            00 (0) 'MS-DOS'\n-2117EE Extract Zip Spec      14 (20) '2.0'\n-2117EF Extract OS            00 (0) 'MS-DOS'\n-2117F0 General Purpose Flag  0808 (2056)\n+213B7A CENTRAL HEADER #37    02014B50 (33639248)\n+213B7E Created Zip Spec      14 (20) '2.0'\n+213B7F Created OS            00 (0) 'MS-DOS'\n+213B80 Extract Zip Spec      14 (20) '2.0'\n+213B81 Extract OS            00 (0) 'MS-DOS'\n+213B82 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2117F2 Compression Method    0008 (8) 'Deflated'\n-2117F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2117F8 CRC                   2EBB8418 (784040984)\n-2117FC Compressed Size       0000038B (907)\n-211800 Uncompressed Size     00000951 (2385)\n-211804 Filename Length       003A (58)\n-211806 Extra Length          0000 (0)\n-211808 Comment Length        0000 (0)\n-21180A Disk Start            0000 (0)\n-21180C Int File Attributes   0000 (0)\n+213B84 Compression Method    0008 (8) 'Deflated'\n+213B86 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213B8A CRC                   24F4C726 (620021542)\n+213B8E Compressed Size       000008BD (2237)\n+213B92 Uncompressed Size     000028F1 (10481)\n+213B96 Filename Length       003F (63)\n+213B98 Extra Length          0000 (0)\n+213B9A Comment Length        0000 (0)\n+213B9C Disk Start            0000 (0)\n+213B9E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21180E Ext File Attributes   00000000 (0)\n-211812 Local Header Offset   00009B27 (39719)\n-211816 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213BA0 Ext File Attributes   00000000 (0)\n+213BA4 Local Header Offset   0000F853 (63571)\n+213BA8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211816: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213BA8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211850 CENTRAL HEADER #38    02014B50 (33639248)\n-211854 Created Zip Spec      14 (20) '2.0'\n-211855 Created OS            00 (0) 'MS-DOS'\n-211856 Extract Zip Spec      14 (20) '2.0'\n-211857 Extract OS            00 (0) 'MS-DOS'\n-211858 General Purpose Flag  0808 (2056)\n+213BE7 CENTRAL HEADER #38    02014B50 (33639248)\n+213BEB Created Zip Spec      14 (20) '2.0'\n+213BEC Created OS            00 (0) 'MS-DOS'\n+213BED Extract Zip Spec      14 (20) '2.0'\n+213BEE Extract OS            00 (0) 'MS-DOS'\n+213BEF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21185A Compression Method    0008 (8) 'Deflated'\n-21185C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211860 CRC                   86CFF4B4 (2261775540)\n-211864 Compressed Size       00000047 (71)\n-211868 Uncompressed Size     00000049 (73)\n-21186C Filename Length       0041 (65)\n-21186E Extra Length          0000 (0)\n-211870 Comment Length        0000 (0)\n-211872 Disk Start            0000 (0)\n-211874 Int File Attributes   0000 (0)\n+213BF1 Compression Method    0008 (8) 'Deflated'\n+213BF3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213BF7 CRC                   35C5DEAF (902160047)\n+213BFB Compressed Size       000006C1 (1729)\n+213BFF Uncompressed Size     00001BA7 (7079)\n+213C03 Filename Length       003F (63)\n+213C05 Extra Length          0000 (0)\n+213C07 Comment Length        0000 (0)\n+213C09 Disk Start            0000 (0)\n+213C0B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211876 Ext File Attributes   00000000 (0)\n-21187A Local Header Offset   00009F1A (40730)\n-21187E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213C0D Ext File Attributes   00000000 (0)\n+213C11 Local Header Offset   0001017D (65917)\n+213C15 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21187E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213C15: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2118BF CENTRAL HEADER #39    02014B50 (33639248)\n-2118C3 Created Zip Spec      14 (20) '2.0'\n-2118C4 Created OS            00 (0) 'MS-DOS'\n-2118C5 Extract Zip Spec      14 (20) '2.0'\n-2118C6 Extract OS            00 (0) 'MS-DOS'\n-2118C7 General Purpose Flag  0808 (2056)\n+213C54 CENTRAL HEADER #39    02014B50 (33639248)\n+213C58 Created Zip Spec      14 (20) '2.0'\n+213C59 Created OS            00 (0) 'MS-DOS'\n+213C5A Extract Zip Spec      14 (20) '2.0'\n+213C5B Extract OS            00 (0) 'MS-DOS'\n+213C5C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2118C9 Compression Method    0008 (8) 'Deflated'\n-2118CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2118CF CRC                   00000000 (0)\n-2118D3 Compressed Size       00000002 (2)\n-2118D7 Uncompressed Size     00000000 (0)\n-2118DB Filename Length       0035 (53)\n-2118DD Extra Length          0000 (0)\n-2118DF Comment Length        0000 (0)\n-2118E1 Disk Start            0000 (0)\n-2118E3 Int File Attributes   0000 (0)\n+213C5E Compression Method    0008 (8) 'Deflated'\n+213C60 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213C64 CRC                   4C4BC15C (1280033116)\n+213C68 Compressed Size       00000560 (1376)\n+213C6C Uncompressed Size     000012C9 (4809)\n+213C70 Filename Length       0040 (64)\n+213C72 Extra Length          0000 (0)\n+213C74 Comment Length        0000 (0)\n+213C76 Disk Start            0000 (0)\n+213C78 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2118E5 Ext File Attributes   00000000 (0)\n-2118E9 Local Header Offset   00009FD0 (40912)\n-2118ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213C7A Ext File Attributes   00000000 (0)\n+213C7E Local Header Offset   000108AB (67755)\n+213C82 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2118ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213C82: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211922 CENTRAL HEADER #40    02014B50 (33639248)\n-211926 Created Zip Spec      14 (20) '2.0'\n-211927 Created OS            00 (0) 'MS-DOS'\n-211928 Extract Zip Spec      14 (20) '2.0'\n-211929 Extract OS            00 (0) 'MS-DOS'\n-21192A General Purpose Flag  0808 (2056)\n+213CC2 CENTRAL HEADER #40    02014B50 (33639248)\n+213CC6 Created Zip Spec      14 (20) '2.0'\n+213CC7 Created OS            00 (0) 'MS-DOS'\n+213CC8 Extract Zip Spec      14 (20) '2.0'\n+213CC9 Extract OS            00 (0) 'MS-DOS'\n+213CCA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21192C Compression Method    0008 (8) 'Deflated'\n-21192E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211932 CRC                   4EEF2300 (1324294912)\n-211936 Compressed Size       00000398 (920)\n-21193A Uncompressed Size     00000916 (2326)\n-21193E Filename Length       003C (60)\n-211940 Extra Length          0000 (0)\n-211942 Comment Length        0000 (0)\n-211944 Disk Start            0000 (0)\n-211946 Int File Attributes   0000 (0)\n+213CCC Compression Method    0008 (8) 'Deflated'\n+213CCE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213CD2 CRC                   3875CC22 (947244066)\n+213CD6 Compressed Size       00000914 (2324)\n+213CDA Uncompressed Size     00002741 (10049)\n+213CDE Filename Length       003F (63)\n+213CE0 Extra Length          0000 (0)\n+213CE2 Comment Length        0000 (0)\n+213CE4 Disk Start            0000 (0)\n+213CE6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211948 Ext File Attributes   00000000 (0)\n-21194C Local Header Offset   0000A035 (41013)\n-211950 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213CE8 Ext File Attributes   00000000 (0)\n+213CEC Local Header Offset   00010E79 (69241)\n+213CF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211950: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213CF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21198C CENTRAL HEADER #41    02014B50 (33639248)\n-211990 Created Zip Spec      14 (20) '2.0'\n-211991 Created OS            00 (0) 'MS-DOS'\n-211992 Extract Zip Spec      14 (20) '2.0'\n-211993 Extract OS            00 (0) 'MS-DOS'\n-211994 General Purpose Flag  0808 (2056)\n+213D2F CENTRAL HEADER #41    02014B50 (33639248)\n+213D33 Created Zip Spec      14 (20) '2.0'\n+213D34 Created OS            00 (0) 'MS-DOS'\n+213D35 Extract Zip Spec      14 (20) '2.0'\n+213D36 Extract OS            00 (0) 'MS-DOS'\n+213D37 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211996 Compression Method    0008 (8) 'Deflated'\n-211998 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21199C CRC                   7D6B90B6 (2104201398)\n-2119A0 Compressed Size       00000049 (73)\n-2119A4 Uncompressed Size     0000004B (75)\n-2119A8 Filename Length       0043 (67)\n-2119AA Extra Length          0000 (0)\n-2119AC Comment Length        0000 (0)\n-2119AE Disk Start            0000 (0)\n-2119B0 Int File Attributes   0000 (0)\n+213D39 Compression Method    0008 (8) 'Deflated'\n+213D3B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213D3F CRC                   5053B7A1 (1347663777)\n+213D43 Compressed Size       000004FE (1278)\n+213D47 Uncompressed Size     000011F9 (4601)\n+213D4B Filename Length       003E (62)\n+213D4D Extra Length          0000 (0)\n+213D4F Comment Length        0000 (0)\n+213D51 Disk Start            0000 (0)\n+213D53 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2119B2 Ext File Attributes   00000000 (0)\n-2119B6 Local Header Offset   0000A437 (42039)\n-2119BA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213D55 Ext File Attributes   00000000 (0)\n+213D59 Local Header Offset   000117FA (71674)\n+213D5D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2119BA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213D5D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2119FD CENTRAL HEADER #42    02014B50 (33639248)\n-211A01 Created Zip Spec      14 (20) '2.0'\n-211A02 Created OS            00 (0) 'MS-DOS'\n-211A03 Extract Zip Spec      14 (20) '2.0'\n-211A04 Extract OS            00 (0) 'MS-DOS'\n-211A05 General Purpose Flag  0808 (2056)\n+213D9B CENTRAL HEADER #42    02014B50 (33639248)\n+213D9F Created Zip Spec      14 (20) '2.0'\n+213DA0 Created OS            00 (0) 'MS-DOS'\n+213DA1 Extract Zip Spec      14 (20) '2.0'\n+213DA2 Extract OS            00 (0) 'MS-DOS'\n+213DA3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211A07 Compression Method    0008 (8) 'Deflated'\n-211A09 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211A0D CRC                   00000000 (0)\n-211A11 Compressed Size       00000002 (2)\n-211A15 Uncompressed Size     00000000 (0)\n-211A19 Filename Length       0036 (54)\n-211A1B Extra Length          0000 (0)\n-211A1D Comment Length        0000 (0)\n-211A1F Disk Start            0000 (0)\n-211A21 Int File Attributes   0000 (0)\n+213DA5 Compression Method    0008 (8) 'Deflated'\n+213DA7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213DAB CRC                   AA9A314A (2862231882)\n+213DAF Compressed Size       0000024C (588)\n+213DB3 Uncompressed Size     0000041E (1054)\n+213DB7 Filename Length       003C (60)\n+213DB9 Extra Length          0000 (0)\n+213DBB Comment Length        0000 (0)\n+213DBD Disk Start            0000 (0)\n+213DBF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211A23 Ext File Attributes   00000000 (0)\n-211A27 Local Header Offset   0000A4F1 (42225)\n-211A2B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213DC1 Ext File Attributes   00000000 (0)\n+213DC5 Local Header Offset   00011D64 (73060)\n+213DC9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211A2B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213DC9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211A61 CENTRAL HEADER #43    02014B50 (33639248)\n-211A65 Created Zip Spec      14 (20) '2.0'\n-211A66 Created OS            00 (0) 'MS-DOS'\n-211A67 Extract Zip Spec      14 (20) '2.0'\n-211A68 Extract OS            00 (0) 'MS-DOS'\n-211A69 General Purpose Flag  0808 (2056)\n+213E05 CENTRAL HEADER #43    02014B50 (33639248)\n+213E09 Created Zip Spec      14 (20) '2.0'\n+213E0A Created OS            00 (0) 'MS-DOS'\n+213E0B Extract Zip Spec      14 (20) '2.0'\n+213E0C Extract OS            00 (0) 'MS-DOS'\n+213E0D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211A6B Compression Method    0008 (8) 'Deflated'\n-211A6D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211A71 CRC                   2E65EAC2 (778431170)\n-211A75 Compressed Size       000003B1 (945)\n-211A79 Uncompressed Size     0000095F (2399)\n-211A7D Filename Length       003D (61)\n-211A7F Extra Length          0000 (0)\n-211A81 Comment Length        0000 (0)\n-211A83 Disk Start            0000 (0)\n-211A85 Int File Attributes   0000 (0)\n+213E0F Compression Method    0008 (8) 'Deflated'\n+213E11 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213E15 CRC                   00000000 (0)\n+213E19 Compressed Size       00000002 (2)\n+213E1D Uncompressed Size     00000000 (0)\n+213E21 Filename Length       001E (30)\n+213E23 Extra Length          0000 (0)\n+213E25 Comment Length        0000 (0)\n+213E27 Disk Start            0000 (0)\n+213E29 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211A87 Ext File Attributes   00000000 (0)\n-211A8B Local Header Offset   0000A557 (42327)\n-211A8F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213E2B Ext File Attributes   00000000 (0)\n+213E2F Local Header Offset   0001201A (73754)\n+213E33 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211A8F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213E33: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211ACC CENTRAL HEADER #44    02014B50 (33639248)\n-211AD0 Created Zip Spec      14 (20) '2.0'\n-211AD1 Created OS            00 (0) 'MS-DOS'\n-211AD2 Extract Zip Spec      14 (20) '2.0'\n-211AD3 Extract OS            00 (0) 'MS-DOS'\n-211AD4 General Purpose Flag  0808 (2056)\n+213E51 CENTRAL HEADER #44    02014B50 (33639248)\n+213E55 Created Zip Spec      14 (20) '2.0'\n+213E56 Created OS            00 (0) 'MS-DOS'\n+213E57 Extract Zip Spec      14 (20) '2.0'\n+213E58 Extract OS            00 (0) 'MS-DOS'\n+213E59 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211AD6 Compression Method    0008 (8) 'Deflated'\n-211AD8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211ADC CRC                   E328D6D4 (3811104468)\n-211AE0 Compressed Size       0000004A (74)\n-211AE4 Uncompressed Size     0000004C (76)\n-211AE8 Filename Length       0044 (68)\n-211AEA Extra Length          0000 (0)\n-211AEC Comment Length        0000 (0)\n-211AEE Disk Start            0000 (0)\n-211AF0 Int File Attributes   0000 (0)\n+213E5B Compression Method    0008 (8) 'Deflated'\n+213E5D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213E61 CRC                   7C75425F (2088059487)\n+213E65 Compressed Size       00000274 (628)\n+213E69 Uncompressed Size     00000499 (1177)\n+213E6D Filename Length       003D (61)\n+213E6F Extra Length          0000 (0)\n+213E71 Comment Length        0000 (0)\n+213E73 Disk Start            0000 (0)\n+213E75 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211AF2 Ext File Attributes   00000000 (0)\n-211AF6 Local Header Offset   0000A973 (43379)\n-211AFA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213E77 Ext File Attributes   00000000 (0)\n+213E7B Local Header Offset   00012068 (73832)\n+213E7F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211AFA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213E7F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211B3E CENTRAL HEADER #45    02014B50 (33639248)\n-211B42 Created Zip Spec      14 (20) '2.0'\n-211B43 Created OS            00 (0) 'MS-DOS'\n-211B44 Extract Zip Spec      14 (20) '2.0'\n-211B45 Extract OS            00 (0) 'MS-DOS'\n-211B46 General Purpose Flag  0808 (2056)\n+213EBC CENTRAL HEADER #45    02014B50 (33639248)\n+213EC0 Created Zip Spec      14 (20) '2.0'\n+213EC1 Created OS            00 (0) 'MS-DOS'\n+213EC2 Extract Zip Spec      14 (20) '2.0'\n+213EC3 Extract OS            00 (0) 'MS-DOS'\n+213EC4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211B48 Compression Method    0008 (8) 'Deflated'\n-211B4A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211B4E CRC                   00000000 (0)\n-211B52 Compressed Size       00000002 (2)\n-211B56 Uncompressed Size     00000000 (0)\n-211B5A Filename Length       0035 (53)\n-211B5C Extra Length          0000 (0)\n-211B5E Comment Length        0000 (0)\n-211B60 Disk Start            0000 (0)\n-211B62 Int File Attributes   0000 (0)\n+213EC6 Compression Method    0008 (8) 'Deflated'\n+213EC8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213ECC CRC                   A67D03FF (2793210879)\n+213ED0 Compressed Size       00000322 (802)\n+213ED4 Uncompressed Size     000006BE (1726)\n+213ED8 Filename Length       0043 (67)\n+213EDA Extra Length          0000 (0)\n+213EDC Comment Length        0000 (0)\n+213EDE Disk Start            0000 (0)\n+213EE0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211B64 Ext File Attributes   00000000 (0)\n-211B68 Local Header Offset   0000AA2F (43567)\n-211B6C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213EE2 Ext File Attributes   00000000 (0)\n+213EE6 Local Header Offset   00012347 (74567)\n+213EEA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211B6C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213EEA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211BA1 CENTRAL HEADER #46    02014B50 (33639248)\n-211BA5 Created Zip Spec      14 (20) '2.0'\n-211BA6 Created OS            00 (0) 'MS-DOS'\n-211BA7 Extract Zip Spec      14 (20) '2.0'\n-211BA8 Extract OS            00 (0) 'MS-DOS'\n-211BA9 General Purpose Flag  0808 (2056)\n+213F2D CENTRAL HEADER #46    02014B50 (33639248)\n+213F31 Created Zip Spec      14 (20) '2.0'\n+213F32 Created OS            00 (0) 'MS-DOS'\n+213F33 Extract Zip Spec      14 (20) '2.0'\n+213F34 Extract OS            00 (0) 'MS-DOS'\n+213F35 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211BAB Compression Method    0008 (8) 'Deflated'\n-211BAD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211BB1 CRC                   FACEEC94 (4207864980)\n-211BB5 Compressed Size       00000455 (1109)\n-211BB9 Uncompressed Size     00000E69 (3689)\n-211BBD Filename Length       003C (60)\n-211BBF Extra Length          0000 (0)\n-211BC1 Comment Length        0000 (0)\n-211BC3 Disk Start            0000 (0)\n-211BC5 Int File Attributes   0000 (0)\n+213F37 Compression Method    0008 (8) 'Deflated'\n+213F39 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213F3D CRC                   F6F65296 (4143338134)\n+213F41 Compressed Size       00000324 (804)\n+213F45 Uncompressed Size     000006C5 (1733)\n+213F49 Filename Length       0045 (69)\n+213F4B Extra Length          0000 (0)\n+213F4D Comment Length        0000 (0)\n+213F4F Disk Start            0000 (0)\n+213F51 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211BC7 Ext File Attributes   00000000 (0)\n-211BCB Local Header Offset   0000AA94 (43668)\n-211BCF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213F53 Ext File Attributes   00000000 (0)\n+213F57 Local Header Offset   000126DA (75482)\n+213F5B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211BCF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213F5B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211C0B CENTRAL HEADER #47    02014B50 (33639248)\n-211C0F Created Zip Spec      14 (20) '2.0'\n-211C10 Created OS            00 (0) 'MS-DOS'\n-211C11 Extract Zip Spec      14 (20) '2.0'\n-211C12 Extract OS            00 (0) 'MS-DOS'\n-211C13 General Purpose Flag  0808 (2056)\n+213FA0 CENTRAL HEADER #47    02014B50 (33639248)\n+213FA4 Created Zip Spec      14 (20) '2.0'\n+213FA5 Created OS            00 (0) 'MS-DOS'\n+213FA6 Extract Zip Spec      14 (20) '2.0'\n+213FA7 Extract OS            00 (0) 'MS-DOS'\n+213FA8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211C15 Compression Method    0008 (8) 'Deflated'\n-211C17 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211C1B CRC                   D4B7125F (3568767583)\n-211C1F Compressed Size       00000049 (73)\n-211C23 Uncompressed Size     0000004B (75)\n-211C27 Filename Length       0043 (67)\n-211C29 Extra Length          0000 (0)\n-211C2B Comment Length        0000 (0)\n-211C2D Disk Start            0000 (0)\n-211C2F Int File Attributes   0000 (0)\n+213FAA Compression Method    0008 (8) 'Deflated'\n+213FAC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+213FB0 CRC                   D200547F (3523236991)\n+213FB4 Compressed Size       000002A3 (675)\n+213FB8 Uncompressed Size     000005CC (1484)\n+213FBC Filename Length       0040 (64)\n+213FBE Extra Length          0000 (0)\n+213FC0 Comment Length        0000 (0)\n+213FC2 Disk Start            0000 (0)\n+213FC4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211C31 Ext File Attributes   00000000 (0)\n-211C35 Local Header Offset   0000AF53 (44883)\n-211C39 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+213FC6 Ext File Attributes   00000000 (0)\n+213FCA Local Header Offset   00012A71 (76401)\n+213FCE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211C39: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x213FCE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211C7C CENTRAL HEADER #48    02014B50 (33639248)\n-211C80 Created Zip Spec      14 (20) '2.0'\n-211C81 Created OS            00 (0) 'MS-DOS'\n-211C82 Extract Zip Spec      14 (20) '2.0'\n-211C83 Extract OS            00 (0) 'MS-DOS'\n-211C84 General Purpose Flag  0808 (2056)\n+21400E CENTRAL HEADER #48    02014B50 (33639248)\n+214012 Created Zip Spec      14 (20) '2.0'\n+214013 Created OS            00 (0) 'MS-DOS'\n+214014 Extract Zip Spec      14 (20) '2.0'\n+214015 Extract OS            00 (0) 'MS-DOS'\n+214016 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211C86 Compression Method    0008 (8) 'Deflated'\n-211C88 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211C8C CRC                   00000000 (0)\n-211C90 Compressed Size       00000002 (2)\n-211C94 Uncompressed Size     00000000 (0)\n-211C98 Filename Length       0034 (52)\n-211C9A Extra Length          0000 (0)\n-211C9C Comment Length        0000 (0)\n-211C9E Disk Start            0000 (0)\n-211CA0 Int File Attributes   0000 (0)\n+214018 Compression Method    0008 (8) 'Deflated'\n+21401A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21401E CRC                   ADCF7988 (2916055432)\n+214022 Compressed Size       000002E1 (737)\n+214026 Uncompressed Size     0000069A (1690)\n+21402A Filename Length       0042 (66)\n+21402C Extra Length          0000 (0)\n+21402E Comment Length        0000 (0)\n+214030 Disk Start            0000 (0)\n+214032 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211CA2 Ext File Attributes   00000000 (0)\n-211CA6 Local Header Offset   0000B00D (45069)\n-211CAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214034 Ext File Attributes   00000000 (0)\n+214038 Local Header Offset   00012D82 (77186)\n+21403C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211CAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21403C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211CDE CENTRAL HEADER #49    02014B50 (33639248)\n-211CE2 Created Zip Spec      14 (20) '2.0'\n-211CE3 Created OS            00 (0) 'MS-DOS'\n-211CE4 Extract Zip Spec      14 (20) '2.0'\n-211CE5 Extract OS            00 (0) 'MS-DOS'\n-211CE6 General Purpose Flag  0808 (2056)\n+21407E CENTRAL HEADER #49    02014B50 (33639248)\n+214082 Created Zip Spec      14 (20) '2.0'\n+214083 Created OS            00 (0) 'MS-DOS'\n+214084 Extract Zip Spec      14 (20) '2.0'\n+214085 Extract OS            00 (0) 'MS-DOS'\n+214086 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211CE8 Compression Method    0008 (8) 'Deflated'\n-211CEA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211CEE CRC                   00C3B148 (12824904)\n-211CF2 Compressed Size       000003A6 (934)\n-211CF6 Uncompressed Size     0000098D (2445)\n-211CFA Filename Length       003B (59)\n-211CFC Extra Length          0000 (0)\n-211CFE Comment Length        0000 (0)\n-211D00 Disk Start            0000 (0)\n-211D02 Int File Attributes   0000 (0)\n+214088 Compression Method    0008 (8) 'Deflated'\n+21408A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21408E CRC                   A8CE0A81 (2832075393)\n+214092 Compressed Size       00000280 (640)\n+214096 Uncompressed Size     0000051E (1310)\n+21409A Filename Length       003D (61)\n+21409C Extra Length          0000 (0)\n+21409E Comment Length        0000 (0)\n+2140A0 Disk Start            0000 (0)\n+2140A2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211D04 Ext File Attributes   00000000 (0)\n-211D08 Local Header Offset   0000B071 (45169)\n-211D0C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2140A4 Ext File Attributes   00000000 (0)\n+2140A8 Local Header Offset   000130D3 (78035)\n+2140AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211D0C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2140AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211D47 CENTRAL HEADER #50    02014B50 (33639248)\n-211D4B Created Zip Spec      14 (20) '2.0'\n-211D4C Created OS            00 (0) 'MS-DOS'\n-211D4D Extract Zip Spec      14 (20) '2.0'\n-211D4E Extract OS            00 (0) 'MS-DOS'\n-211D4F General Purpose Flag  0808 (2056)\n+2140E9 CENTRAL HEADER #50    02014B50 (33639248)\n+2140ED Created Zip Spec      14 (20) '2.0'\n+2140EE Created OS            00 (0) 'MS-DOS'\n+2140EF Extract Zip Spec      14 (20) '2.0'\n+2140F0 Extract OS            00 (0) 'MS-DOS'\n+2140F1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211D51 Compression Method    0008 (8) 'Deflated'\n-211D53 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211D57 CRC                   423C5CE6 (1111252198)\n-211D5B Compressed Size       00000048 (72)\n-211D5F Uncompressed Size     0000004A (74)\n-211D63 Filename Length       0042 (66)\n-211D65 Extra Length          0000 (0)\n-211D67 Comment Length        0000 (0)\n-211D69 Disk Start            0000 (0)\n-211D6B Int File Attributes   0000 (0)\n+2140F3 Compression Method    0008 (8) 'Deflated'\n+2140F5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2140F9 CRC                   5D6056E9 (1566594793)\n+2140FD Compressed Size       00000284 (644)\n+214101 Uncompressed Size     00000526 (1318)\n+214105 Filename Length       003F (63)\n+214107 Extra Length          0000 (0)\n+214109 Comment Length        0000 (0)\n+21410B Disk Start            0000 (0)\n+21410D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211D6D Ext File Attributes   00000000 (0)\n-211D71 Local Header Offset   0000B480 (46208)\n-211D75 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21410F Ext File Attributes   00000000 (0)\n+214113 Local Header Offset   000133BE (78782)\n+214117 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211D75: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214117: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211DB7 CENTRAL HEADER #51    02014B50 (33639248)\n-211DBB Created Zip Spec      14 (20) '2.0'\n-211DBC Created OS            00 (0) 'MS-DOS'\n-211DBD Extract Zip Spec      14 (20) '2.0'\n-211DBE Extract OS            00 (0) 'MS-DOS'\n-211DBF General Purpose Flag  0808 (2056)\n+214156 CENTRAL HEADER #51    02014B50 (33639248)\n+21415A Created Zip Spec      14 (20) '2.0'\n+21415B Created OS            00 (0) 'MS-DOS'\n+21415C Extract Zip Spec      14 (20) '2.0'\n+21415D Extract OS            00 (0) 'MS-DOS'\n+21415E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211DC1 Compression Method    0008 (8) 'Deflated'\n-211DC3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211DC7 CRC                   00000000 (0)\n-211DCB Compressed Size       00000002 (2)\n-211DCF Uncompressed Size     00000000 (0)\n-211DD3 Filename Length       0037 (55)\n-211DD5 Extra Length          0000 (0)\n-211DD7 Comment Length        0000 (0)\n-211DD9 Disk Start            0000 (0)\n-211DDB Int File Attributes   0000 (0)\n+214160 Compression Method    0008 (8) 'Deflated'\n+214162 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214166 CRC                   00000000 (0)\n+21416A Compressed Size       00000002 (2)\n+21416E Uncompressed Size     00000000 (0)\n+214172 Filename Length       0027 (39)\n+214174 Extra Length          0000 (0)\n+214176 Comment Length        0000 (0)\n+214178 Disk Start            0000 (0)\n+21417A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211DDD Ext File Attributes   00000000 (0)\n-211DE1 Local Header Offset   0000B538 (46392)\n-211DE5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21417C Ext File Attributes   00000000 (0)\n+214180 Local Header Offset   000136AF (79535)\n+214184 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211DE5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214184: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211E1C CENTRAL HEADER #52    02014B50 (33639248)\n-211E20 Created Zip Spec      14 (20) '2.0'\n-211E21 Created OS            00 (0) 'MS-DOS'\n-211E22 Extract Zip Spec      14 (20) '2.0'\n-211E23 Extract OS            00 (0) 'MS-DOS'\n-211E24 General Purpose Flag  0808 (2056)\n+2141AB CENTRAL HEADER #52    02014B50 (33639248)\n+2141AF Created Zip Spec      14 (20) '2.0'\n+2141B0 Created OS            00 (0) 'MS-DOS'\n+2141B1 Extract Zip Spec      14 (20) '2.0'\n+2141B2 Extract OS            00 (0) 'MS-DOS'\n+2141B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211E26 Compression Method    0008 (8) 'Deflated'\n-211E28 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211E2C CRC                   13A927BF (329852863)\n-211E30 Compressed Size       0000037E (894)\n-211E34 Uncompressed Size     0000084D (2125)\n-211E38 Filename Length       003E (62)\n-211E3A Extra Length          0000 (0)\n-211E3C Comment Length        0000 (0)\n-211E3E Disk Start            0000 (0)\n-211E40 Int File Attributes   0000 (0)\n+2141B5 Compression Method    0008 (8) 'Deflated'\n+2141B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2141BB CRC                   FFDB09C9 (4292544969)\n+2141BF Compressed Size       00000340 (832)\n+2141C3 Uncompressed Size     00000774 (1908)\n+2141C7 Filename Length       0040 (64)\n+2141C9 Extra Length          0000 (0)\n+2141CB Comment Length        0000 (0)\n+2141CD Disk Start            0000 (0)\n+2141CF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211E42 Ext File Attributes   00000000 (0)\n-211E46 Local Header Offset   0000B59F (46495)\n-211E4A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2141D1 Ext File Attributes   00000000 (0)\n+2141D5 Local Header Offset   00013706 (79622)\n+2141D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211E4A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2141D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211E88 CENTRAL HEADER #53    02014B50 (33639248)\n-211E8C Created Zip Spec      14 (20) '2.0'\n-211E8D Created OS            00 (0) 'MS-DOS'\n-211E8E Extract Zip Spec      14 (20) '2.0'\n-211E8F Extract OS            00 (0) 'MS-DOS'\n-211E90 General Purpose Flag  0808 (2056)\n+214219 CENTRAL HEADER #53    02014B50 (33639248)\n+21421D Created Zip Spec      14 (20) '2.0'\n+21421E Created OS            00 (0) 'MS-DOS'\n+21421F Extract Zip Spec      14 (20) '2.0'\n+214220 Extract OS            00 (0) 'MS-DOS'\n+214221 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211E92 Compression Method    0008 (8) 'Deflated'\n-211E94 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211E98 CRC                   C5928C84 (3314715780)\n-211E9C Compressed Size       0000004B (75)\n-211EA0 Uncompressed Size     0000004D (77)\n-211EA4 Filename Length       0045 (69)\n-211EA6 Extra Length          0000 (0)\n-211EA8 Comment Length        0000 (0)\n-211EAA Disk Start            0000 (0)\n-211EAC Int File Attributes   0000 (0)\n+214223 Compression Method    0008 (8) 'Deflated'\n+214225 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214229 CRC                   00000000 (0)\n+21422D Compressed Size       00000002 (2)\n+214231 Uncompressed Size     00000000 (0)\n+214235 Filename Length       0020 (32)\n+214237 Extra Length          0000 (0)\n+214239 Comment Length        0000 (0)\n+21423B Disk Start            0000 (0)\n+21423D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211EAE Ext File Attributes   00000000 (0)\n-211EB2 Local Header Offset   0000B989 (47497)\n-211EB6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21423F Ext File Attributes   00000000 (0)\n+214243 Local Header Offset   00013AB4 (80564)\n+214247 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211EB6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214247: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211EFB CENTRAL HEADER #54    02014B50 (33639248)\n-211EFF Created Zip Spec      14 (20) '2.0'\n-211F00 Created OS            00 (0) 'MS-DOS'\n-211F01 Extract Zip Spec      14 (20) '2.0'\n-211F02 Extract OS            00 (0) 'MS-DOS'\n-211F03 General Purpose Flag  0808 (2056)\n+214267 CENTRAL HEADER #54    02014B50 (33639248)\n+21426B Created Zip Spec      14 (20) '2.0'\n+21426C Created OS            00 (0) 'MS-DOS'\n+21426D Extract Zip Spec      14 (20) '2.0'\n+21426E Extract OS            00 (0) 'MS-DOS'\n+21426F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211F05 Compression Method    0008 (8) 'Deflated'\n-211F07 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211F0B CRC                   00000000 (0)\n-211F0F Compressed Size       00000002 (2)\n-211F13 Uncompressed Size     00000000 (0)\n-211F17 Filename Length       0033 (51)\n-211F19 Extra Length          0000 (0)\n-211F1B Comment Length        0000 (0)\n-211F1D Disk Start            0000 (0)\n-211F1F Int File Attributes   0000 (0)\n+214271 Compression Method    0008 (8) 'Deflated'\n+214273 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214277 CRC                   A8777CA7 (2826402983)\n+21427B Compressed Size       00000339 (825)\n+21427F Uncompressed Size     00000840 (2112)\n+214283 Filename Length       0044 (68)\n+214285 Extra Length          0000 (0)\n+214287 Comment Length        0000 (0)\n+214289 Disk Start            0000 (0)\n+21428B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211F21 Ext File Attributes   00000000 (0)\n-211F25 Local Header Offset   0000BA47 (47687)\n-211F29 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21428D Ext File Attributes   00000000 (0)\n+214291 Local Header Offset   00013B04 (80644)\n+214295 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211F29: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214295: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211F5C CENTRAL HEADER #55    02014B50 (33639248)\n-211F60 Created Zip Spec      14 (20) '2.0'\n-211F61 Created OS            00 (0) 'MS-DOS'\n-211F62 Extract Zip Spec      14 (20) '2.0'\n-211F63 Extract OS            00 (0) 'MS-DOS'\n-211F64 General Purpose Flag  0808 (2056)\n+2142D9 CENTRAL HEADER #55    02014B50 (33639248)\n+2142DD Created Zip Spec      14 (20) '2.0'\n+2142DE Created OS            00 (0) 'MS-DOS'\n+2142DF Extract Zip Spec      14 (20) '2.0'\n+2142E0 Extract OS            00 (0) 'MS-DOS'\n+2142E1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211F66 Compression Method    0008 (8) 'Deflated'\n-211F68 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211F6C CRC                   E426F2EA (3827757802)\n-211F70 Compressed Size       0000037A (890)\n-211F74 Uncompressed Size     00000898 (2200)\n-211F78 Filename Length       003A (58)\n-211F7A Extra Length          0000 (0)\n-211F7C Comment Length        0000 (0)\n-211F7E Disk Start            0000 (0)\n-211F80 Int File Attributes   0000 (0)\n+2142E3 Compression Method    0008 (8) 'Deflated'\n+2142E5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2142E9 CRC                   00000000 (0)\n+2142ED Compressed Size       00000002 (2)\n+2142F1 Uncompressed Size     00000000 (0)\n+2142F5 Filename Length       0021 (33)\n+2142F7 Extra Length          0000 (0)\n+2142F9 Comment Length        0000 (0)\n+2142FB Disk Start            0000 (0)\n+2142FD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211F82 Ext File Attributes   00000000 (0)\n-211F86 Local Header Offset   0000BAAA (47786)\n-211F8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2142FF Ext File Attributes   00000000 (0)\n+214303 Local Header Offset   00013EAF (81583)\n+214307 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211F8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214307: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-211FC4 CENTRAL HEADER #56    02014B50 (33639248)\n-211FC8 Created Zip Spec      14 (20) '2.0'\n-211FC9 Created OS            00 (0) 'MS-DOS'\n-211FCA Extract Zip Spec      14 (20) '2.0'\n-211FCB Extract OS            00 (0) 'MS-DOS'\n-211FCC General Purpose Flag  0808 (2056)\n+214328 CENTRAL HEADER #56    02014B50 (33639248)\n+21432C Created Zip Spec      14 (20) '2.0'\n+21432D Created OS            00 (0) 'MS-DOS'\n+21432E Extract Zip Spec      14 (20) '2.0'\n+21432F Extract OS            00 (0) 'MS-DOS'\n+214330 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-211FCE Compression Method    0008 (8) 'Deflated'\n-211FD0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-211FD4 CRC                   9F593154 (2673422676)\n-211FD8 Compressed Size       00000047 (71)\n-211FDC Uncompressed Size     00000049 (73)\n-211FE0 Filename Length       0041 (65)\n-211FE2 Extra Length          0000 (0)\n-211FE4 Comment Length        0000 (0)\n-211FE6 Disk Start            0000 (0)\n-211FE8 Int File Attributes   0000 (0)\n+214332 Compression Method    0008 (8) 'Deflated'\n+214334 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214338 CRC                   E294E314 (3801408276)\n+21433C Compressed Size       000005C9 (1481)\n+214340 Uncompressed Size     000012DA (4826)\n+214344 Filename Length       0049 (73)\n+214346 Extra Length          0000 (0)\n+214348 Comment Length        0000 (0)\n+21434A Disk Start            0000 (0)\n+21434C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-211FEA Ext File Attributes   00000000 (0)\n-211FEE Local Header Offset   0000BE8C (48780)\n-211FF2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21434E Ext File Attributes   00000000 (0)\n+214352 Local Header Offset   00013F00 (81664)\n+214356 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x211FF2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214356: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212033 CENTRAL HEADER #57    02014B50 (33639248)\n-212037 Created Zip Spec      14 (20) '2.0'\n-212038 Created OS            00 (0) 'MS-DOS'\n-212039 Extract Zip Spec      14 (20) '2.0'\n-21203A Extract OS            00 (0) 'MS-DOS'\n-21203B General Purpose Flag  0808 (2056)\n+21439F CENTRAL HEADER #57    02014B50 (33639248)\n+2143A3 Created Zip Spec      14 (20) '2.0'\n+2143A4 Created OS            00 (0) 'MS-DOS'\n+2143A5 Extract Zip Spec      14 (20) '2.0'\n+2143A6 Extract OS            00 (0) 'MS-DOS'\n+2143A7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21203D Compression Method    0008 (8) 'Deflated'\n-21203F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212043 CRC                   00000000 (0)\n-212047 Compressed Size       00000002 (2)\n-21204B Uncompressed Size     00000000 (0)\n-21204F Filename Length       0034 (52)\n-212051 Extra Length          0000 (0)\n-212053 Comment Length        0000 (0)\n-212055 Disk Start            0000 (0)\n-212057 Int File Attributes   0000 (0)\n+2143A9 Compression Method    0008 (8) 'Deflated'\n+2143AB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2143AF CRC                   484F34E6 (1213150438)\n+2143B3 Compressed Size       00000402 (1026)\n+2143B7 Uncompressed Size     00000A53 (2643)\n+2143BB Filename Length       0043 (67)\n+2143BD Extra Length          0000 (0)\n+2143BF Comment Length        0000 (0)\n+2143C1 Disk Start            0000 (0)\n+2143C3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212059 Ext File Attributes   00000000 (0)\n-21205D Local Header Offset   0000BF42 (48962)\n-212061 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2143C5 Ext File Attributes   00000000 (0)\n+2143C9 Local Header Offset   00014540 (83264)\n+2143CD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212061: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2143CD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212095 CENTRAL HEADER #58    02014B50 (33639248)\n-212099 Created Zip Spec      14 (20) '2.0'\n-21209A Created OS            00 (0) 'MS-DOS'\n-21209B Extract Zip Spec      14 (20) '2.0'\n-21209C Extract OS            00 (0) 'MS-DOS'\n-21209D General Purpose Flag  0808 (2056)\n+214410 CENTRAL HEADER #58    02014B50 (33639248)\n+214414 Created Zip Spec      14 (20) '2.0'\n+214415 Created OS            00 (0) 'MS-DOS'\n+214416 Extract Zip Spec      14 (20) '2.0'\n+214417 Extract OS            00 (0) 'MS-DOS'\n+214418 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21209F Compression Method    0008 (8) 'Deflated'\n-2120A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2120A5 CRC                   43F8CC2B (1140378667)\n-2120A9 Compressed Size       000003CE (974)\n-2120AD Uncompressed Size     00000ABA (2746)\n-2120B1 Filename Length       003B (59)\n-2120B3 Extra Length          0000 (0)\n-2120B5 Comment Length        0000 (0)\n-2120B7 Disk Start            0000 (0)\n-2120B9 Int File Attributes   0000 (0)\n+21441A Compression Method    0008 (8) 'Deflated'\n+21441C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214420 CRC                   00000000 (0)\n+214424 Compressed Size       00000002 (2)\n+214428 Uncompressed Size     00000000 (0)\n+21442C Filename Length       001E (30)\n+21442E Extra Length          0000 (0)\n+214430 Comment Length        0000 (0)\n+214432 Disk Start            0000 (0)\n+214434 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2120BB Ext File Attributes   00000000 (0)\n-2120BF Local Header Offset   0000BFA6 (49062)\n-2120C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214436 Ext File Attributes   00000000 (0)\n+21443A Local Header Offset   000149B3 (84403)\n+21443E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2120C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21443E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2120FE CENTRAL HEADER #59    02014B50 (33639248)\n-212102 Created Zip Spec      14 (20) '2.0'\n-212103 Created OS            00 (0) 'MS-DOS'\n-212104 Extract Zip Spec      14 (20) '2.0'\n-212105 Extract OS            00 (0) 'MS-DOS'\n-212106 General Purpose Flag  0808 (2056)\n+21445C CENTRAL HEADER #59    02014B50 (33639248)\n+214460 Created Zip Spec      14 (20) '2.0'\n+214461 Created OS            00 (0) 'MS-DOS'\n+214462 Extract Zip Spec      14 (20) '2.0'\n+214463 Extract OS            00 (0) 'MS-DOS'\n+214464 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212108 Compression Method    0008 (8) 'Deflated'\n-21210A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21210E CRC                   FE93114F (4271051087)\n-212112 Compressed Size       00000048 (72)\n-212116 Uncompressed Size     0000004A (74)\n-21211A Filename Length       0042 (66)\n-21211C Extra Length          0000 (0)\n-21211E Comment Length        0000 (0)\n-212120 Disk Start            0000 (0)\n-212122 Int File Attributes   0000 (0)\n+214466 Compression Method    0008 (8) 'Deflated'\n+214468 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21446C CRC                   25A2615A (631398746)\n+214470 Compressed Size       0000171A (5914)\n+214474 Uncompressed Size     000075E8 (30184)\n+214478 Filename Length       0038 (56)\n+21447A Extra Length          0000 (0)\n+21447C Comment Length        0000 (0)\n+21447E Disk Start            0000 (0)\n+214480 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212124 Ext File Attributes   00000000 (0)\n-212128 Local Header Offset   0000C3DD (50141)\n-21212C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214482 Ext File Attributes   00000000 (0)\n+214486 Local Header Offset   00014A01 (84481)\n+21448A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21212C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21448A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21216E CENTRAL HEADER #60    02014B50 (33639248)\n-212172 Created Zip Spec      14 (20) '2.0'\n-212173 Created OS            00 (0) 'MS-DOS'\n-212174 Extract Zip Spec      14 (20) '2.0'\n-212175 Extract OS            00 (0) 'MS-DOS'\n-212176 General Purpose Flag  0808 (2056)\n+2144C2 CENTRAL HEADER #60    02014B50 (33639248)\n+2144C6 Created Zip Spec      14 (20) '2.0'\n+2144C7 Created OS            00 (0) 'MS-DOS'\n+2144C8 Extract Zip Spec      14 (20) '2.0'\n+2144C9 Extract OS            00 (0) 'MS-DOS'\n+2144CA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212178 Compression Method    0008 (8) 'Deflated'\n-21217A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21217E CRC                   00000000 (0)\n-212182 Compressed Size       00000002 (2)\n-212186 Uncompressed Size     00000000 (0)\n-21218A Filename Length       002E (46)\n-21218C Extra Length          0000 (0)\n-21218E Comment Length        0000 (0)\n-212190 Disk Start            0000 (0)\n-212192 Int File Attributes   0000 (0)\n+2144CC Compression Method    0008 (8) 'Deflated'\n+2144CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2144D2 CRC                   3773BB53 (930331475)\n+2144D6 Compressed Size       000008D6 (2262)\n+2144DA Uncompressed Size     00002379 (9081)\n+2144DE Filename Length       0037 (55)\n+2144E0 Extra Length          0000 (0)\n+2144E2 Comment Length        0000 (0)\n+2144E4 Disk Start            0000 (0)\n+2144E6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212194 Ext File Attributes   00000000 (0)\n-212198 Local Header Offset   0000C495 (50325)\n-21219C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2144E8 Ext File Attributes   00000000 (0)\n+2144EC Local Header Offset   00016181 (90497)\n+2144F0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21219C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2144F0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2121CA CENTRAL HEADER #61    02014B50 (33639248)\n-2121CE Created Zip Spec      14 (20) '2.0'\n-2121CF Created OS            00 (0) 'MS-DOS'\n-2121D0 Extract Zip Spec      14 (20) '2.0'\n-2121D1 Extract OS            00 (0) 'MS-DOS'\n-2121D2 General Purpose Flag  0808 (2056)\n+214527 CENTRAL HEADER #61    02014B50 (33639248)\n+21452B Created Zip Spec      14 (20) '2.0'\n+21452C Created OS            00 (0) 'MS-DOS'\n+21452D Extract Zip Spec      14 (20) '2.0'\n+21452E Extract OS            00 (0) 'MS-DOS'\n+21452F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2121D4 Compression Method    0008 (8) 'Deflated'\n-2121D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2121DA CRC                   0FC7AABB (264743611)\n-2121DE Compressed Size       0000039A (922)\n-2121E2 Uncompressed Size     000009B0 (2480)\n-2121E6 Filename Length       0035 (53)\n-2121E8 Extra Length          0000 (0)\n-2121EA Comment Length        0000 (0)\n-2121EC Disk Start            0000 (0)\n-2121EE Int File Attributes   0000 (0)\n+214531 Compression Method    0008 (8) 'Deflated'\n+214533 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214537 CRC                   00000000 (0)\n+21453B Compressed Size       00000002 (2)\n+21453F Uncompressed Size     00000000 (0)\n+214543 Filename Length       000F (15)\n+214545 Extra Length          0000 (0)\n+214547 Comment Length        0000 (0)\n+214549 Disk Start            0000 (0)\n+21454B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2121F0 Ext File Attributes   00000000 (0)\n-2121F4 Local Header Offset   0000C4F3 (50419)\n-2121F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21454D Ext File Attributes   00000000 (0)\n+214551 Local Header Offset   00016ABC (92860)\n+214555 Filename              'XXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2121F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214555: Filename 'XXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21222D CENTRAL HEADER #62    02014B50 (33639248)\n-212231 Created Zip Spec      14 (20) '2.0'\n-212232 Created OS            00 (0) 'MS-DOS'\n-212233 Extract Zip Spec      14 (20) '2.0'\n-212234 Extract OS            00 (0) 'MS-DOS'\n-212235 General Purpose Flag  0808 (2056)\n+214564 CENTRAL HEADER #62    02014B50 (33639248)\n+214568 Created Zip Spec      14 (20) '2.0'\n+214569 Created OS            00 (0) 'MS-DOS'\n+21456A Extract Zip Spec      14 (20) '2.0'\n+21456B Extract OS            00 (0) 'MS-DOS'\n+21456C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212237 Compression Method    0008 (8) 'Deflated'\n-212239 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21223D CRC                   5F285EB1 (1596481201)\n-212241 Compressed Size       00000042 (66)\n-212245 Uncompressed Size     00000044 (68)\n-212249 Filename Length       003C (60)\n-21224B Extra Length          0000 (0)\n-21224D Comment Length        0000 (0)\n-21224F Disk Start            0000 (0)\n-212251 Int File Attributes   0000 (0)\n+21456E Compression Method    0008 (8) 'Deflated'\n+214570 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214574 CRC                   00000000 (0)\n+214578 Compressed Size       00000002 (2)\n+21457C Uncompressed Size     00000000 (0)\n+214580 Filename Length       0018 (24)\n+214582 Extra Length          0000 (0)\n+214584 Comment Length        0000 (0)\n+214586 Disk Start            0000 (0)\n+214588 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212253 Ext File Attributes   00000000 (0)\n-212257 Local Header Offset   0000C8F0 (51440)\n-21225B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21458A Ext File Attributes   00000000 (0)\n+21458E Local Header Offset   00016AFB (92923)\n+214592 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21225B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214592: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212297 CENTRAL HEADER #63    02014B50 (33639248)\n-21229B Created Zip Spec      14 (20) '2.0'\n-21229C Created OS            00 (0) 'MS-DOS'\n-21229D Extract Zip Spec      14 (20) '2.0'\n-21229E Extract OS            00 (0) 'MS-DOS'\n-21229F General Purpose Flag  0808 (2056)\n+2145AA CENTRAL HEADER #63    02014B50 (33639248)\n+2145AE Created Zip Spec      14 (20) '2.0'\n+2145AF Created OS            00 (0) 'MS-DOS'\n+2145B0 Extract Zip Spec      14 (20) '2.0'\n+2145B1 Extract OS            00 (0) 'MS-DOS'\n+2145B2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2122A1 Compression Method    0008 (8) 'Deflated'\n-2122A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2122A7 CRC                   00000000 (0)\n-2122AB Compressed Size       00000002 (2)\n-2122AF Uncompressed Size     00000000 (0)\n-2122B3 Filename Length       0030 (48)\n-2122B5 Extra Length          0000 (0)\n-2122B7 Comment Length        0000 (0)\n-2122B9 Disk Start            0000 (0)\n-2122BB Int File Attributes   0000 (0)\n+2145B4 Compression Method    0008 (8) 'Deflated'\n+2145B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2145BA CRC                   00000000 (0)\n+2145BE Compressed Size       00000002 (2)\n+2145C2 Uncompressed Size     00000000 (0)\n+2145C6 Filename Length       0031 (49)\n+2145C8 Extra Length          0000 (0)\n+2145CA Comment Length        0000 (0)\n+2145CC Disk Start            0000 (0)\n+2145CE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2122BD Ext File Attributes   00000000 (0)\n-2122C1 Local Header Offset   0000C99C (51612)\n-2122C5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2145D0 Ext File Attributes   00000000 (0)\n+2145D4 Local Header Offset   00016B43 (92995)\n+2145D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2122C5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2145D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2122F5 CENTRAL HEADER #64    02014B50 (33639248)\n-2122F9 Created Zip Spec      14 (20) '2.0'\n-2122FA Created OS            00 (0) 'MS-DOS'\n-2122FB Extract Zip Spec      14 (20) '2.0'\n-2122FC Extract OS            00 (0) 'MS-DOS'\n-2122FD General Purpose Flag  0808 (2056)\n+214609 CENTRAL HEADER #64    02014B50 (33639248)\n+21460D Created Zip Spec      14 (20) '2.0'\n+21460E Created OS            00 (0) 'MS-DOS'\n+21460F Extract Zip Spec      14 (20) '2.0'\n+214610 Extract OS            00 (0) 'MS-DOS'\n+214611 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2122FF Compression Method    0008 (8) 'Deflated'\n-212301 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212305 CRC                   45DB5347 (1172001607)\n-212309 Compressed Size       00000448 (1096)\n-21230D Uncompressed Size     00000FBC (4028)\n-212311 Filename Length       0037 (55)\n-212313 Extra Length          0000 (0)\n-212315 Comment Length        0000 (0)\n-212317 Disk Start            0000 (0)\n-212319 Int File Attributes   0000 (0)\n+214613 Compression Method    0008 (8) 'Deflated'\n+214615 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214619 CRC                   50B6758C (1354134924)\n+21461D Compressed Size       00000479 (1145)\n+214621 Uncompressed Size     00001EA4 (7844)\n+214625 Filename Length       0038 (56)\n+214627 Extra Length          0000 (0)\n+214629 Comment Length        0000 (0)\n+21462B Disk Start            0000 (0)\n+21462D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21231B Ext File Attributes   00000000 (0)\n-21231F Local Header Offset   0000C9FC (51708)\n-212323 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21462F Ext File Attributes   00000000 (0)\n+214633 Local Header Offset   00016BA4 (93092)\n+214637 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212323: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214637: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21235A CENTRAL HEADER #65    02014B50 (33639248)\n-21235E Created Zip Spec      14 (20) '2.0'\n-21235F Created OS            00 (0) 'MS-DOS'\n-212360 Extract Zip Spec      14 (20) '2.0'\n-212361 Extract OS            00 (0) 'MS-DOS'\n-212362 General Purpose Flag  0808 (2056)\n+21466F CENTRAL HEADER #65    02014B50 (33639248)\n+214673 Created Zip Spec      14 (20) '2.0'\n+214674 Created OS            00 (0) 'MS-DOS'\n+214675 Extract Zip Spec      14 (20) '2.0'\n+214676 Extract OS            00 (0) 'MS-DOS'\n+214677 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212364 Compression Method    0008 (8) 'Deflated'\n-212366 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21236A CRC                   BE4436A8 (3192141480)\n-21236E Compressed Size       0000003E (62)\n-212372 Uncompressed Size     00000046 (70)\n-212376 Filename Length       003E (62)\n-212378 Extra Length          0000 (0)\n-21237A Comment Length        0000 (0)\n-21237C Disk Start            0000 (0)\n-21237E Int File Attributes   0000 (0)\n+214679 Compression Method    0008 (8) 'Deflated'\n+21467B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21467F CRC                   494D98C1 (1229822145)\n+214683 Compressed Size       00000045 (69)\n+214687 Uncompressed Size     00000047 (71)\n+21468B Filename Length       003F (63)\n+21468D Extra Length          0000 (0)\n+21468F Comment Length        0000 (0)\n+214691 Disk Start            0000 (0)\n+214693 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212380 Ext File Attributes   00000000 (0)\n-212384 Local Header Offset   0000CEA9 (52905)\n-212388 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214695 Ext File Attributes   00000000 (0)\n+214699 Local Header Offset   00017083 (94339)\n+21469D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212388: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21469D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2123C6 CENTRAL HEADER #66    02014B50 (33639248)\n-2123CA Created Zip Spec      14 (20) '2.0'\n-2123CB Created OS            00 (0) 'MS-DOS'\n-2123CC Extract Zip Spec      14 (20) '2.0'\n-2123CD Extract OS            00 (0) 'MS-DOS'\n-2123CE General Purpose Flag  0808 (2056)\n+2146DC CENTRAL HEADER #66    02014B50 (33639248)\n+2146E0 Created Zip Spec      14 (20) '2.0'\n+2146E1 Created OS            00 (0) 'MS-DOS'\n+2146E2 Extract Zip Spec      14 (20) '2.0'\n+2146E3 Extract OS            00 (0) 'MS-DOS'\n+2146E4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2123D0 Compression Method    0008 (8) 'Deflated'\n-2123D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2123D6 CRC                   00000000 (0)\n-2123DA Compressed Size       00000002 (2)\n-2123DE Uncompressed Size     00000000 (0)\n-2123E2 Filename Length       0030 (48)\n-2123E4 Extra Length          0000 (0)\n-2123E6 Comment Length        0000 (0)\n-2123E8 Disk Start            0000 (0)\n-2123EA Int File Attributes   0000 (0)\n+2146E6 Compression Method    0008 (8) 'Deflated'\n+2146E8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2146EC CRC                   00000000 (0)\n+2146F0 Compressed Size       00000002 (2)\n+2146F4 Uncompressed Size     00000000 (0)\n+2146F8 Filename Length       001F (31)\n+2146FA Extra Length          0000 (0)\n+2146FC Comment Length        0000 (0)\n+2146FE Disk Start            0000 (0)\n+214700 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2123EC Ext File Attributes   00000000 (0)\n-2123F0 Local Header Offset   0000CF53 (53075)\n-2123F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214702 Ext File Attributes   00000000 (0)\n+214706 Local Header Offset   00017135 (94517)\n+21470A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2123F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21470A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212424 CENTRAL HEADER #67    02014B50 (33639248)\n-212428 Created Zip Spec      14 (20) '2.0'\n-212429 Created OS            00 (0) 'MS-DOS'\n-21242A Extract Zip Spec      14 (20) '2.0'\n-21242B Extract OS            00 (0) 'MS-DOS'\n-21242C General Purpose Flag  0808 (2056)\n+214729 CENTRAL HEADER #67    02014B50 (33639248)\n+21472D Created Zip Spec      14 (20) '2.0'\n+21472E Created OS            00 (0) 'MS-DOS'\n+21472F Extract Zip Spec      14 (20) '2.0'\n+214730 Extract OS            00 (0) 'MS-DOS'\n+214731 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21242E Compression Method    0008 (8) 'Deflated'\n-212430 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212434 CRC                   59E5C05D (1508229213)\n-212438 Compressed Size       0000035E (862)\n-21243C Uncompressed Size     000007B3 (1971)\n-212440 Filename Length       0037 (55)\n-212442 Extra Length          0000 (0)\n-212444 Comment Length        0000 (0)\n-212446 Disk Start            0000 (0)\n-212448 Int File Attributes   0000 (0)\n+214733 Compression Method    0008 (8) 'Deflated'\n+214735 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214739 CRC                   F164B1B0 (4049908144)\n+21473D Compressed Size       000005BE (1470)\n+214741 Uncompressed Size     00001233 (4659)\n+214745 Filename Length       0034 (52)\n+214747 Extra Length          0000 (0)\n+214749 Comment Length        0000 (0)\n+21474B Disk Start            0000 (0)\n+21474D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21244A Ext File Attributes   00000000 (0)\n-21244E Local Header Offset   0000CFB3 (53171)\n-212452 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21474F Ext File Attributes   00000000 (0)\n+214753 Local Header Offset   00017184 (94596)\n+214757 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212452: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214757: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212489 CENTRAL HEADER #68    02014B50 (33639248)\n-21248D Created Zip Spec      14 (20) '2.0'\n-21248E Created OS            00 (0) 'MS-DOS'\n-21248F Extract Zip Spec      14 (20) '2.0'\n-212490 Extract OS            00 (0) 'MS-DOS'\n-212491 General Purpose Flag  0808 (2056)\n+21478B CENTRAL HEADER #68    02014B50 (33639248)\n+21478F Created Zip Spec      14 (20) '2.0'\n+214790 Created OS            00 (0) 'MS-DOS'\n+214791 Extract Zip Spec      14 (20) '2.0'\n+214792 Extract OS            00 (0) 'MS-DOS'\n+214793 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212493 Compression Method    0008 (8) 'Deflated'\n-212495 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212499 CRC                   09A59FE7 (161849319)\n-21249D Compressed Size       00000044 (68)\n-2124A1 Uncompressed Size     00000046 (70)\n-2124A5 Filename Length       003E (62)\n-2124A7 Extra Length          0000 (0)\n-2124A9 Comment Length        0000 (0)\n-2124AB Disk Start            0000 (0)\n-2124AD Int File Attributes   0000 (0)\n+214795 Compression Method    0008 (8) 'Deflated'\n+214797 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21479B CRC                   D05CAEC0 (3495734976)\n+21479F Compressed Size       00000556 (1366)\n+2147A3 Uncompressed Size     000013D8 (5080)\n+2147A7 Filename Length       0031 (49)\n+2147A9 Extra Length          0000 (0)\n+2147AB Comment Length        0000 (0)\n+2147AD Disk Start            0000 (0)\n+2147AF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2124AF Ext File Attributes   00000000 (0)\n-2124B3 Local Header Offset   0000D376 (54134)\n-2124B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2147B1 Ext File Attributes   00000000 (0)\n+2147B5 Local Header Offset   000177A4 (96164)\n+2147B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2124B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2147B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2124F5 CENTRAL HEADER #69    02014B50 (33639248)\n-2124F9 Created Zip Spec      14 (20) '2.0'\n-2124FA Created OS            00 (0) 'MS-DOS'\n-2124FB Extract Zip Spec      14 (20) '2.0'\n-2124FC Extract OS            00 (0) 'MS-DOS'\n-2124FD General Purpose Flag  0808 (2056)\n+2147EA CENTRAL HEADER #69    02014B50 (33639248)\n+2147EE Created Zip Spec      14 (20) '2.0'\n+2147EF Created OS            00 (0) 'MS-DOS'\n+2147F0 Extract Zip Spec      14 (20) '2.0'\n+2147F1 Extract OS            00 (0) 'MS-DOS'\n+2147F2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2124FF Compression Method    0008 (8) 'Deflated'\n-212501 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212505 CRC                   00000000 (0)\n-212509 Compressed Size       00000002 (2)\n-21250D Uncompressed Size     00000000 (0)\n-212511 Filename Length       002F (47)\n-212513 Extra Length          0000 (0)\n-212515 Comment Length        0000 (0)\n-212517 Disk Start            0000 (0)\n-212519 Int File Attributes   0000 (0)\n+2147F4 Compression Method    0008 (8) 'Deflated'\n+2147F6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2147FA CRC                   6FBAC3DA (1874510810)\n+2147FE Compressed Size       00000579 (1401)\n+214802 Uncompressed Size     000011EC (4588)\n+214806 Filename Length       002F (47)\n+214808 Extra Length          0000 (0)\n+21480A Comment Length        0000 (0)\n+21480C Disk Start            0000 (0)\n+21480E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21251B Ext File Attributes   00000000 (0)\n-21251F Local Header Offset   0000D426 (54310)\n-212523 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214810 Ext File Attributes   00000000 (0)\n+214814 Local Header Offset   00017D59 (97625)\n+214818 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212523: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214818: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212552 CENTRAL HEADER #70    02014B50 (33639248)\n-212556 Created Zip Spec      14 (20) '2.0'\n-212557 Created OS            00 (0) 'MS-DOS'\n-212558 Extract Zip Spec      14 (20) '2.0'\n-212559 Extract OS            00 (0) 'MS-DOS'\n-21255A General Purpose Flag  0808 (2056)\n+214847 CENTRAL HEADER #70    02014B50 (33639248)\n+21484B Created Zip Spec      14 (20) '2.0'\n+21484C Created OS            00 (0) 'MS-DOS'\n+21484D Extract Zip Spec      14 (20) '2.0'\n+21484E Extract OS            00 (0) 'MS-DOS'\n+21484F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21255C Compression Method    0008 (8) 'Deflated'\n-21255E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212562 CRC                   0B401095 (188747925)\n-212566 Compressed Size       000003B2 (946)\n-21256A Uncompressed Size     000009C8 (2504)\n-21256E Filename Length       0036 (54)\n-212570 Extra Length          0000 (0)\n-212572 Comment Length        0000 (0)\n-212574 Disk Start            0000 (0)\n-212576 Int File Attributes   0000 (0)\n+214851 Compression Method    0008 (8) 'Deflated'\n+214853 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214857 CRC                   00000000 (0)\n+21485B Compressed Size       00000002 (2)\n+21485F Uncompressed Size     00000000 (0)\n+214863 Filename Length       0025 (37)\n+214865 Extra Length          0000 (0)\n+214867 Comment Length        0000 (0)\n+214869 Disk Start            0000 (0)\n+21486B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212578 Ext File Attributes   00000000 (0)\n-21257C Local Header Offset   0000D485 (54405)\n-212580 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21486D Ext File Attributes   00000000 (0)\n+214871 Local Header Offset   0001832F (99119)\n+214875 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212580: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214875: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2125B6 CENTRAL HEADER #71    02014B50 (33639248)\n-2125BA Created Zip Spec      14 (20) '2.0'\n-2125BB Created OS            00 (0) 'MS-DOS'\n-2125BC Extract Zip Spec      14 (20) '2.0'\n-2125BD Extract OS            00 (0) 'MS-DOS'\n-2125BE General Purpose Flag  0808 (2056)\n+21489A CENTRAL HEADER #71    02014B50 (33639248)\n+21489E Created Zip Spec      14 (20) '2.0'\n+21489F Created OS            00 (0) 'MS-DOS'\n+2148A0 Extract Zip Spec      14 (20) '2.0'\n+2148A1 Extract OS            00 (0) 'MS-DOS'\n+2148A2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2125C0 Compression Method    0008 (8) 'Deflated'\n-2125C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2125C6 CRC                   8E20026A (2384462442)\n-2125CA Compressed Size       00000043 (67)\n-2125CE Uncompressed Size     00000045 (69)\n-2125D2 Filename Length       003D (61)\n-2125D4 Extra Length          0000 (0)\n-2125D6 Comment Length        0000 (0)\n-2125D8 Disk Start            0000 (0)\n-2125DA Int File Attributes   0000 (0)\n+2148A4 Compression Method    0008 (8) 'Deflated'\n+2148A6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2148AA CRC                   00000000 (0)\n+2148AE Compressed Size       00000002 (2)\n+2148B2 Uncompressed Size     00000000 (0)\n+2148B6 Filename Length       002D (45)\n+2148B8 Extra Length          0000 (0)\n+2148BA Comment Length        0000 (0)\n+2148BC Disk Start            0000 (0)\n+2148BE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2125DC Ext File Attributes   00000000 (0)\n-2125E0 Local Header Offset   0000D89B (55451)\n-2125E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2148C0 Ext File Attributes   00000000 (0)\n+2148C4 Local Header Offset   00018384 (99204)\n+2148C8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2125E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2148C8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212621 CENTRAL HEADER #72    02014B50 (33639248)\n-212625 Created Zip Spec      14 (20) '2.0'\n-212626 Created OS            00 (0) 'MS-DOS'\n-212627 Extract Zip Spec      14 (20) '2.0'\n-212628 Extract OS            00 (0) 'MS-DOS'\n-212629 General Purpose Flag  0808 (2056)\n+2148F5 CENTRAL HEADER #72    02014B50 (33639248)\n+2148F9 Created Zip Spec      14 (20) '2.0'\n+2148FA Created OS            00 (0) 'MS-DOS'\n+2148FB Extract Zip Spec      14 (20) '2.0'\n+2148FC Extract OS            00 (0) 'MS-DOS'\n+2148FD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21262B Compression Method    0008 (8) 'Deflated'\n-21262D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212631 CRC                   00000000 (0)\n-212635 Compressed Size       00000002 (2)\n-212639 Uncompressed Size     00000000 (0)\n-21263D Filename Length       002E (46)\n-21263F Extra Length          0000 (0)\n-212641 Comment Length        0000 (0)\n-212643 Disk Start            0000 (0)\n-212645 Int File Attributes   0000 (0)\n+2148FF Compression Method    0008 (8) 'Deflated'\n+214901 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214905 CRC                   00000000 (0)\n+214909 Compressed Size       00000002 (2)\n+21490D Uncompressed Size     00000000 (0)\n+214911 Filename Length       0038 (56)\n+214913 Extra Length          0000 (0)\n+214915 Comment Length        0000 (0)\n+214917 Disk Start            0000 (0)\n+214919 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212647 Ext File Attributes   00000000 (0)\n-21264B Local Header Offset   0000D949 (55625)\n-21264F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21491B Ext File Attributes   00000000 (0)\n+21491F Local Header Offset   000183E1 (99297)\n+214923 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21264F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214923: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21267D CENTRAL HEADER #73    02014B50 (33639248)\n-212681 Created Zip Spec      14 (20) '2.0'\n-212682 Created OS            00 (0) 'MS-DOS'\n-212683 Extract Zip Spec      14 (20) '2.0'\n-212684 Extract OS            00 (0) 'MS-DOS'\n-212685 General Purpose Flag  0808 (2056)\n+21495B CENTRAL HEADER #73    02014B50 (33639248)\n+21495F Created Zip Spec      14 (20) '2.0'\n+214960 Created OS            00 (0) 'MS-DOS'\n+214961 Extract Zip Spec      14 (20) '2.0'\n+214962 Extract OS            00 (0) 'MS-DOS'\n+214963 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212687 Compression Method    0008 (8) 'Deflated'\n-212689 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21268D CRC                   078EE984 (126806404)\n-212691 Compressed Size       00000378 (888)\n-212695 Uncompressed Size     00000831 (2097)\n-212699 Filename Length       0035 (53)\n-21269B Extra Length          0000 (0)\n-21269D Comment Length        0000 (0)\n-21269F Disk Start            0000 (0)\n-2126A1 Int File Attributes   0000 (0)\n+214965 Compression Method    0008 (8) 'Deflated'\n+214967 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21496B CRC                   EBC487FE (3955525630)\n+21496F Compressed Size       00000668 (1640)\n+214973 Uncompressed Size     00001919 (6425)\n+214977 Filename Length       0060 (96)\n+214979 Extra Length          0000 (0)\n+21497B Comment Length        0000 (0)\n+21497D Disk Start            0000 (0)\n+21497F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2126A3 Ext File Attributes   00000000 (0)\n-2126A7 Local Header Offset   0000D9A7 (55719)\n-2126AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214981 Ext File Attributes   00000000 (0)\n+214985 Local Header Offset   00018449 (99401)\n+214989 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2126AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214989: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2126E0 CENTRAL HEADER #74    02014B50 (33639248)\n-2126E4 Created Zip Spec      14 (20) '2.0'\n-2126E5 Created OS            00 (0) 'MS-DOS'\n-2126E6 Extract Zip Spec      14 (20) '2.0'\n-2126E7 Extract OS            00 (0) 'MS-DOS'\n-2126E8 General Purpose Flag  0808 (2056)\n+2149E9 CENTRAL HEADER #74    02014B50 (33639248)\n+2149ED Created Zip Spec      14 (20) '2.0'\n+2149EE Created OS            00 (0) 'MS-DOS'\n+2149EF Extract Zip Spec      14 (20) '2.0'\n+2149F0 Extract OS            00 (0) 'MS-DOS'\n+2149F1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2126EA Compression Method    0008 (8) 'Deflated'\n-2126EC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2126F0 CRC                   47EB69BB (1206610363)\n-2126F4 Compressed Size       00000042 (66)\n-2126F8 Uncompressed Size     00000044 (68)\n-2126FC Filename Length       003C (60)\n-2126FE Extra Length          0000 (0)\n-212700 Comment Length        0000 (0)\n-212702 Disk Start            0000 (0)\n-212704 Int File Attributes   0000 (0)\n+2149F3 Compression Method    0008 (8) 'Deflated'\n+2149F5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2149F9 CRC                   E36E4DBC (3815656892)\n+2149FD Compressed Size       000006A6 (1702)\n+214A01 Uncompressed Size     00001B46 (6982)\n+214A05 Filename Length       0060 (96)\n+214A07 Extra Length          0000 (0)\n+214A09 Comment Length        0000 (0)\n+214A0B Disk Start            0000 (0)\n+214A0D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212706 Ext File Attributes   00000000 (0)\n-21270A Local Header Offset   0000DD82 (56706)\n-21270E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214A0F Ext File Attributes   00000000 (0)\n+214A13 Local Header Offset   00018B3F (101183)\n+214A17 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21270E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214A17: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21274A CENTRAL HEADER #75    02014B50 (33639248)\n-21274E Created Zip Spec      14 (20) '2.0'\n-21274F Created OS            00 (0) 'MS-DOS'\n-212750 Extract Zip Spec      14 (20) '2.0'\n-212751 Extract OS            00 (0) 'MS-DOS'\n-212752 General Purpose Flag  0808 (2056)\n+214A77 CENTRAL HEADER #75    02014B50 (33639248)\n+214A7B Created Zip Spec      14 (20) '2.0'\n+214A7C Created OS            00 (0) 'MS-DOS'\n+214A7D Extract Zip Spec      14 (20) '2.0'\n+214A7E Extract OS            00 (0) 'MS-DOS'\n+214A7F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212754 Compression Method    0008 (8) 'Deflated'\n-212756 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21275A CRC                   00000000 (0)\n-21275E Compressed Size       00000002 (2)\n-212762 Uncompressed Size     00000000 (0)\n-212766 Filename Length       0032 (50)\n-212768 Extra Length          0000 (0)\n-21276A Comment Length        0000 (0)\n-21276C Disk Start            0000 (0)\n-21276E Int File Attributes   0000 (0)\n+214A81 Compression Method    0008 (8) 'Deflated'\n+214A83 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214A87 CRC                   5E5D5B66 (1583176550)\n+214A8B Compressed Size       000003D6 (982)\n+214A8F Uncompressed Size     00000C31 (3121)\n+214A93 Filename Length       005C (92)\n+214A95 Extra Length          0000 (0)\n+214A97 Comment Length        0000 (0)\n+214A99 Disk Start            0000 (0)\n+214A9B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212770 Ext File Attributes   00000000 (0)\n-212774 Local Header Offset   0000DE2E (56878)\n-212778 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214A9D Ext File Attributes   00000000 (0)\n+214AA1 Local Header Offset   00019273 (103027)\n+214AA5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212778: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214AA5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2127AA CENTRAL HEADER #76    02014B50 (33639248)\n-2127AE Created Zip Spec      14 (20) '2.0'\n-2127AF Created OS            00 (0) 'MS-DOS'\n-2127B0 Extract Zip Spec      14 (20) '2.0'\n-2127B1 Extract OS            00 (0) 'MS-DOS'\n-2127B2 General Purpose Flag  0808 (2056)\n+214B01 CENTRAL HEADER #76    02014B50 (33639248)\n+214B05 Created Zip Spec      14 (20) '2.0'\n+214B06 Created OS            00 (0) 'MS-DOS'\n+214B07 Extract Zip Spec      14 (20) '2.0'\n+214B08 Extract OS            00 (0) 'MS-DOS'\n+214B09 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2127B4 Compression Method    0008 (8) 'Deflated'\n-2127B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2127BA CRC                   BDCAAB86 (3184176006)\n-2127BE Compressed Size       000003CA (970)\n-2127C2 Uncompressed Size     00000AD6 (2774)\n-2127C6 Filename Length       0039 (57)\n-2127C8 Extra Length          0000 (0)\n-2127CA Comment Length        0000 (0)\n-2127CC Disk Start            0000 (0)\n-2127CE Int File Attributes   0000 (0)\n+214B0B Compression Method    0008 (8) 'Deflated'\n+214B0D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214B11 CRC                   52E29042 (1390579778)\n+214B15 Compressed Size       00000465 (1125)\n+214B19 Uncompressed Size     00000C7E (3198)\n+214B1D Filename Length       005A (90)\n+214B1F Extra Length          0000 (0)\n+214B21 Comment Length        0000 (0)\n+214B23 Disk Start            0000 (0)\n+214B25 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2127D0 Ext File Attributes   00000000 (0)\n-2127D4 Local Header Offset   0000DE90 (56976)\n-2127D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214B27 Ext File Attributes   00000000 (0)\n+214B2B Local Header Offset   000196D3 (104147)\n+214B2F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2127D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214B2F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212811 CENTRAL HEADER #77    02014B50 (33639248)\n-212815 Created Zip Spec      14 (20) '2.0'\n-212816 Created OS            00 (0) 'MS-DOS'\n-212817 Extract Zip Spec      14 (20) '2.0'\n-212818 Extract OS            00 (0) 'MS-DOS'\n-212819 General Purpose Flag  0808 (2056)\n+214B89 CENTRAL HEADER #77    02014B50 (33639248)\n+214B8D Created Zip Spec      14 (20) '2.0'\n+214B8E Created OS            00 (0) 'MS-DOS'\n+214B8F Extract Zip Spec      14 (20) '2.0'\n+214B90 Extract OS            00 (0) 'MS-DOS'\n+214B91 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21281B Compression Method    0008 (8) 'Deflated'\n-21281D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212821 CRC                   AB278FDB (2871496667)\n-212825 Compressed Size       00000046 (70)\n-212829 Uncompressed Size     00000048 (72)\n-21282D Filename Length       0040 (64)\n-21282F Extra Length          0000 (0)\n-212831 Comment Length        0000 (0)\n-212833 Disk Start            0000 (0)\n-212835 Int File Attributes   0000 (0)\n+214B93 Compression Method    0008 (8) 'Deflated'\n+214B95 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214B99 CRC                   BB518EC4 (3142684356)\n+214B9D Compressed Size       0000103F (4159)\n+214BA1 Uncompressed Size     00004A66 (19046)\n+214BA5 Filename Length       0061 (97)\n+214BA7 Extra Length          0000 (0)\n+214BA9 Comment Length        0000 (0)\n+214BAB Disk Start            0000 (0)\n+214BAD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212837 Ext File Attributes   00000000 (0)\n-21283B Local Header Offset   0000E2C1 (58049)\n-21283F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214BAF Ext File Attributes   00000000 (0)\n+214BB3 Local Header Offset   00019BC0 (105408)\n+214BB7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21283F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214BB7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21287F CENTRAL HEADER #78    02014B50 (33639248)\n-212883 Created Zip Spec      14 (20) '2.0'\n-212884 Created OS            00 (0) 'MS-DOS'\n-212885 Extract Zip Spec      14 (20) '2.0'\n-212886 Extract OS            00 (0) 'MS-DOS'\n-212887 General Purpose Flag  0808 (2056)\n+214C18 CENTRAL HEADER #78    02014B50 (33639248)\n+214C1C Created Zip Spec      14 (20) '2.0'\n+214C1D Created OS            00 (0) 'MS-DOS'\n+214C1E Extract Zip Spec      14 (20) '2.0'\n+214C1F Extract OS            00 (0) 'MS-DOS'\n+214C20 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212889 Compression Method    0008 (8) 'Deflated'\n-21288B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21288F CRC                   00000000 (0)\n-212893 Compressed Size       00000002 (2)\n-212897 Uncompressed Size     00000000 (0)\n-21289B Filename Length       0035 (53)\n-21289D Extra Length          0000 (0)\n-21289F Comment Length        0000 (0)\n-2128A1 Disk Start            0000 (0)\n-2128A3 Int File Attributes   0000 (0)\n+214C22 Compression Method    0008 (8) 'Deflated'\n+214C24 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214C28 CRC                   88DF9039 (2296352825)\n+214C2C Compressed Size       00000820 (2080)\n+214C30 Uncompressed Size     00001D8D (7565)\n+214C34 Filename Length       0051 (81)\n+214C36 Extra Length          0000 (0)\n+214C38 Comment Length        0000 (0)\n+214C3A Disk Start            0000 (0)\n+214C3C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2128A5 Ext File Attributes   00000000 (0)\n-2128A9 Local Header Offset   0000E375 (58229)\n-2128AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214C3E Ext File Attributes   00000000 (0)\n+214C42 Local Header Offset   0001AC8E (109710)\n+214C46 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2128AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214C46: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2128E2 CENTRAL HEADER #79    02014B50 (33639248)\n-2128E6 Created Zip Spec      14 (20) '2.0'\n-2128E7 Created OS            00 (0) 'MS-DOS'\n-2128E8 Extract Zip Spec      14 (20) '2.0'\n-2128E9 Extract OS            00 (0) 'MS-DOS'\n-2128EA General Purpose Flag  0808 (2056)\n+214C97 CENTRAL HEADER #79    02014B50 (33639248)\n+214C9B Created Zip Spec      14 (20) '2.0'\n+214C9C Created OS            00 (0) 'MS-DOS'\n+214C9D Extract Zip Spec      14 (20) '2.0'\n+214C9E Extract OS            00 (0) 'MS-DOS'\n+214C9F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2128EC Compression Method    0008 (8) 'Deflated'\n-2128EE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2128F2 CRC                   7C2E72D4 (2083418836)\n-2128F6 Compressed Size       000003EE (1006)\n-2128FA Uncompressed Size     00000C74 (3188)\n-2128FE Filename Length       003C (60)\n-212900 Extra Length          0000 (0)\n-212902 Comment Length        0000 (0)\n-212904 Disk Start            0000 (0)\n-212906 Int File Attributes   0000 (0)\n+214CA1 Compression Method    0008 (8) 'Deflated'\n+214CA3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214CA7 CRC                   810B31C1 (2164994497)\n+214CAB Compressed Size       0000031B (795)\n+214CAF Uncompressed Size     00000747 (1863)\n+214CB3 Filename Length       005F (95)\n+214CB5 Extra Length          0000 (0)\n+214CB7 Comment Length        0000 (0)\n+214CB9 Disk Start            0000 (0)\n+214CBB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212908 Ext File Attributes   00000000 (0)\n-21290C Local Header Offset   0000E3DA (58330)\n-212910 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214CBD Ext File Attributes   00000000 (0)\n+214CC1 Local Header Offset   0001B52D (111917)\n+214CC5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212910: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214CC5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21294C CENTRAL HEADER #80    02014B50 (33639248)\n-212950 Created Zip Spec      14 (20) '2.0'\n-212951 Created OS            00 (0) 'MS-DOS'\n-212952 Extract Zip Spec      14 (20) '2.0'\n-212953 Extract OS            00 (0) 'MS-DOS'\n-212954 General Purpose Flag  0808 (2056)\n+214D24 CENTRAL HEADER #80    02014B50 (33639248)\n+214D28 Created Zip Spec      14 (20) '2.0'\n+214D29 Created OS            00 (0) 'MS-DOS'\n+214D2A Extract Zip Spec      14 (20) '2.0'\n+214D2B Extract OS            00 (0) 'MS-DOS'\n+214D2C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212956 Compression Method    0008 (8) 'Deflated'\n-212958 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21295C CRC                   0B8D3BF2 (193805298)\n-212960 Compressed Size       00000049 (73)\n-212964 Uncompressed Size     0000004B (75)\n-212968 Filename Length       0043 (67)\n-21296A Extra Length          0000 (0)\n-21296C Comment Length        0000 (0)\n-21296E Disk Start            0000 (0)\n-212970 Int File Attributes   0000 (0)\n+214D2E Compression Method    0008 (8) 'Deflated'\n+214D30 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214D34 CRC                   494954CD (1229542605)\n+214D38 Compressed Size       000004F6 (1270)\n+214D3C Uncompressed Size     000011EE (4590)\n+214D40 Filename Length       0053 (83)\n+214D42 Extra Length          0000 (0)\n+214D44 Comment Length        0000 (0)\n+214D46 Disk Start            0000 (0)\n+214D48 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212972 Ext File Attributes   00000000 (0)\n-212976 Local Header Offset   0000E832 (59442)\n-21297A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214D4A Ext File Attributes   00000000 (0)\n+214D4E Local Header Offset   0001B8D5 (112853)\n+214D52 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21297A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214D52: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2129BD CENTRAL HEADER #81    02014B50 (33639248)\n-2129C1 Created Zip Spec      14 (20) '2.0'\n-2129C2 Created OS            00 (0) 'MS-DOS'\n-2129C3 Extract Zip Spec      14 (20) '2.0'\n-2129C4 Extract OS            00 (0) 'MS-DOS'\n-2129C5 General Purpose Flag  0808 (2056)\n+214DA5 CENTRAL HEADER #81    02014B50 (33639248)\n+214DA9 Created Zip Spec      14 (20) '2.0'\n+214DAA Created OS            00 (0) 'MS-DOS'\n+214DAB Extract Zip Spec      14 (20) '2.0'\n+214DAC Extract OS            00 (0) 'MS-DOS'\n+214DAD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2129C7 Compression Method    0008 (8) 'Deflated'\n-2129C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2129CD CRC                   00000000 (0)\n-2129D1 Compressed Size       00000002 (2)\n-2129D5 Uncompressed Size     00000000 (0)\n-2129D9 Filename Length       0031 (49)\n-2129DB Extra Length          0000 (0)\n-2129DD Comment Length        0000 (0)\n-2129DF Disk Start            0000 (0)\n-2129E1 Int File Attributes   0000 (0)\n+214DAF Compression Method    0008 (8) 'Deflated'\n+214DB1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214DB5 CRC                   D398E281 (3550012033)\n+214DB9 Compressed Size       00001211 (4625)\n+214DBD Uncompressed Size     00005864 (22628)\n+214DC1 Filename Length       0056 (86)\n+214DC3 Extra Length          0000 (0)\n+214DC5 Comment Length        0000 (0)\n+214DC7 Disk Start            0000 (0)\n+214DC9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2129E3 Ext File Attributes   00000000 (0)\n-2129E7 Local Header Offset   0000E8EC (59628)\n-2129EB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214DCB Ext File Attributes   00000000 (0)\n+214DCF Local Header Offset   0001BE4C (114252)\n+214DD3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2129EB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214DD3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212A1C CENTRAL HEADER #82    02014B50 (33639248)\n-212A20 Created Zip Spec      14 (20) '2.0'\n-212A21 Created OS            00 (0) 'MS-DOS'\n-212A22 Extract Zip Spec      14 (20) '2.0'\n-212A23 Extract OS            00 (0) 'MS-DOS'\n-212A24 General Purpose Flag  0808 (2056)\n+214E29 CENTRAL HEADER #82    02014B50 (33639248)\n+214E2D Created Zip Spec      14 (20) '2.0'\n+214E2E Created OS            00 (0) 'MS-DOS'\n+214E2F Extract Zip Spec      14 (20) '2.0'\n+214E30 Extract OS            00 (0) 'MS-DOS'\n+214E31 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212A26 Compression Method    0008 (8) 'Deflated'\n-212A28 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212A2C CRC                   2B7AF38C (729478028)\n-212A30 Compressed Size       000003CC (972)\n-212A34 Uncompressed Size     00000C82 (3202)\n-212A38 Filename Length       0038 (56)\n-212A3A Extra Length          0000 (0)\n-212A3C Comment Length        0000 (0)\n-212A3E Disk Start            0000 (0)\n-212A40 Int File Attributes   0000 (0)\n+214E33 Compression Method    0008 (8) 'Deflated'\n+214E35 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214E39 CRC                   00000000 (0)\n+214E3D Compressed Size       00000002 (2)\n+214E41 Uncompressed Size     00000000 (0)\n+214E45 Filename Length       0034 (52)\n+214E47 Extra Length          0000 (0)\n+214E49 Comment Length        0000 (0)\n+214E4B Disk Start            0000 (0)\n+214E4D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212A42 Ext File Attributes   00000000 (0)\n-212A46 Local Header Offset   0000E94D (59725)\n-212A4A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214E4F Ext File Attributes   00000000 (0)\n+214E53 Local Header Offset   0001D0E1 (119009)\n+214E57 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212A4A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214E57: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212A82 CENTRAL HEADER #83    02014B50 (33639248)\n-212A86 Created Zip Spec      14 (20) '2.0'\n-212A87 Created OS            00 (0) 'MS-DOS'\n-212A88 Extract Zip Spec      14 (20) '2.0'\n-212A89 Extract OS            00 (0) 'MS-DOS'\n-212A8A General Purpose Flag  0808 (2056)\n+214E8B CENTRAL HEADER #83    02014B50 (33639248)\n+214E8F Created Zip Spec      14 (20) '2.0'\n+214E90 Created OS            00 (0) 'MS-DOS'\n+214E91 Extract Zip Spec      14 (20) '2.0'\n+214E92 Extract OS            00 (0) 'MS-DOS'\n+214E93 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212A8C Compression Method    0008 (8) 'Deflated'\n-212A8E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212A92 CRC                   2A331345 (707990341)\n-212A96 Compressed Size       00000045 (69)\n-212A9A Uncompressed Size     00000047 (71)\n-212A9E Filename Length       003F (63)\n-212AA0 Extra Length          0000 (0)\n-212AA2 Comment Length        0000 (0)\n-212AA4 Disk Start            0000 (0)\n-212AA6 Int File Attributes   0000 (0)\n+214E95 Compression Method    0008 (8) 'Deflated'\n+214E97 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214E9B CRC                   4304EE7E (1124396670)\n+214E9F Compressed Size       000002DC (732)\n+214EA3 Uncompressed Size     00000668 (1640)\n+214EA7 Filename Length       005E (94)\n+214EA9 Extra Length          0000 (0)\n+214EAB Comment Length        0000 (0)\n+214EAD Disk Start            0000 (0)\n+214EAF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212AA8 Ext File Attributes   00000000 (0)\n-212AAC Local Header Offset   0000ED7F (60799)\n-212AB0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214EB1 Ext File Attributes   00000000 (0)\n+214EB5 Local Header Offset   0001D145 (119109)\n+214EB9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212AB0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214EB9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212AEF CENTRAL HEADER #84    02014B50 (33639248)\n-212AF3 Created Zip Spec      14 (20) '2.0'\n-212AF4 Created OS            00 (0) 'MS-DOS'\n-212AF5 Extract Zip Spec      14 (20) '2.0'\n-212AF6 Extract OS            00 (0) 'MS-DOS'\n-212AF7 General Purpose Flag  0808 (2056)\n+214F17 CENTRAL HEADER #84    02014B50 (33639248)\n+214F1B Created Zip Spec      14 (20) '2.0'\n+214F1C Created OS            00 (0) 'MS-DOS'\n+214F1D Extract Zip Spec      14 (20) '2.0'\n+214F1E Extract OS            00 (0) 'MS-DOS'\n+214F1F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212AF9 Compression Method    0008 (8) 'Deflated'\n-212AFB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212AFF CRC                   00000000 (0)\n-212B03 Compressed Size       00000002 (2)\n-212B07 Uncompressed Size     00000000 (0)\n-212B0B Filename Length       0038 (56)\n-212B0D Extra Length          0000 (0)\n-212B0F Comment Length        0000 (0)\n-212B11 Disk Start            0000 (0)\n-212B13 Int File Attributes   0000 (0)\n+214F21 Compression Method    0008 (8) 'Deflated'\n+214F23 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214F27 CRC                   93006498 (2466276504)\n+214F2B Compressed Size       000005F3 (1523)\n+214F2F Uncompressed Size     000011BD (4541)\n+214F33 Filename Length       0069 (105)\n+214F35 Extra Length          0000 (0)\n+214F37 Comment Length        0000 (0)\n+214F39 Disk Start            0000 (0)\n+214F3B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212B15 Ext File Attributes   00000000 (0)\n-212B19 Local Header Offset   0000EE31 (60977)\n-212B1D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214F3D Ext File Attributes   00000000 (0)\n+214F41 Local Header Offset   0001D4AD (119981)\n+214F45 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212B1D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214F45: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212B55 CENTRAL HEADER #85    02014B50 (33639248)\n-212B59 Created Zip Spec      14 (20) '2.0'\n-212B5A Created OS            00 (0) 'MS-DOS'\n-212B5B Extract Zip Spec      14 (20) '2.0'\n-212B5C Extract OS            00 (0) 'MS-DOS'\n-212B5D General Purpose Flag  0808 (2056)\n+214FAE CENTRAL HEADER #85    02014B50 (33639248)\n+214FB2 Created Zip Spec      14 (20) '2.0'\n+214FB3 Created OS            00 (0) 'MS-DOS'\n+214FB4 Extract Zip Spec      14 (20) '2.0'\n+214FB5 Extract OS            00 (0) 'MS-DOS'\n+214FB6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212B5F Compression Method    0008 (8) 'Deflated'\n-212B61 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212B65 CRC                   79CD4FCD (2043498445)\n-212B69 Compressed Size       00000399 (921)\n-212B6D Uncompressed Size     00000900 (2304)\n-212B71 Filename Length       003F (63)\n-212B73 Extra Length          0000 (0)\n-212B75 Comment Length        0000 (0)\n-212B77 Disk Start            0000 (0)\n-212B79 Int File Attributes   0000 (0)\n+214FB8 Compression Method    0008 (8) 'Deflated'\n+214FBA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+214FBE CRC                   2F136214 (789799444)\n+214FC2 Compressed Size       000006E2 (1762)\n+214FC6 Uncompressed Size     0000162B (5675)\n+214FCA Filename Length       0064 (100)\n+214FCC Extra Length          0000 (0)\n+214FCE Comment Length        0000 (0)\n+214FD0 Disk Start            0000 (0)\n+214FD2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212B7B Ext File Attributes   00000000 (0)\n-212B7F Local Header Offset   0000EE99 (61081)\n-212B83 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+214FD4 Ext File Attributes   00000000 (0)\n+214FD8 Local Header Offset   0001DB37 (121655)\n+214FDC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212B83: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x214FDC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212BC2 CENTRAL HEADER #86    02014B50 (33639248)\n-212BC6 Created Zip Spec      14 (20) '2.0'\n-212BC7 Created OS            00 (0) 'MS-DOS'\n-212BC8 Extract Zip Spec      14 (20) '2.0'\n-212BC9 Extract OS            00 (0) 'MS-DOS'\n-212BCA General Purpose Flag  0808 (2056)\n+215040 CENTRAL HEADER #86    02014B50 (33639248)\n+215044 Created Zip Spec      14 (20) '2.0'\n+215045 Created OS            00 (0) 'MS-DOS'\n+215046 Extract Zip Spec      14 (20) '2.0'\n+215047 Extract OS            00 (0) 'MS-DOS'\n+215048 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212BCC Compression Method    0008 (8) 'Deflated'\n-212BCE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212BD2 CRC                   AE9E07C3 (2929592259)\n-212BD6 Compressed Size       0000004A (74)\n-212BDA Uncompressed Size     0000004E (78)\n-212BDE Filename Length       0046 (70)\n-212BE0 Extra Length          0000 (0)\n-212BE2 Comment Length        0000 (0)\n-212BE4 Disk Start            0000 (0)\n-212BE6 Int File Attributes   0000 (0)\n+21504A Compression Method    0008 (8) 'Deflated'\n+21504C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215050 CRC                   00000000 (0)\n+215054 Compressed Size       00000002 (2)\n+215058 Uncompressed Size     00000000 (0)\n+21505C Filename Length       0027 (39)\n+21505E Extra Length          0000 (0)\n+215060 Comment Length        0000 (0)\n+215062 Disk Start            0000 (0)\n+215064 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212BE8 Ext File Attributes   00000000 (0)\n-212BEC Local Header Offset   0000F29F (62111)\n-212BF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215066 Ext File Attributes   00000000 (0)\n+21506A Local Header Offset   0001E2AB (123563)\n+21506E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212BF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21506E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212C36 CENTRAL HEADER #87    02014B50 (33639248)\n-212C3A Created Zip Spec      14 (20) '2.0'\n-212C3B Created OS            00 (0) 'MS-DOS'\n-212C3C Extract Zip Spec      14 (20) '2.0'\n-212C3D Extract OS            00 (0) 'MS-DOS'\n-212C3E General Purpose Flag  0808 (2056)\n+215095 CENTRAL HEADER #87    02014B50 (33639248)\n+215099 Created Zip Spec      14 (20) '2.0'\n+21509A Created OS            00 (0) 'MS-DOS'\n+21509B Extract Zip Spec      14 (20) '2.0'\n+21509C Extract OS            00 (0) 'MS-DOS'\n+21509D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212C40 Compression Method    0008 (8) 'Deflated'\n-212C42 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212C46 CRC                   00000000 (0)\n-212C4A Compressed Size       00000002 (2)\n-212C4E Uncompressed Size     00000000 (0)\n-212C52 Filename Length       0034 (52)\n-212C54 Extra Length          0000 (0)\n-212C56 Comment Length        0000 (0)\n-212C58 Disk Start            0000 (0)\n-212C5A Int File Attributes   0000 (0)\n+21509F Compression Method    0008 (8) 'Deflated'\n+2150A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2150A5 CRC                   6308AEDE (1661513438)\n+2150A9 Compressed Size       000003A7 (935)\n+2150AD Uncompressed Size     00000A9D (2717)\n+2150B1 Filename Length       004D (77)\n+2150B3 Extra Length          0000 (0)\n+2150B5 Comment Length        0000 (0)\n+2150B7 Disk Start            0000 (0)\n+2150B9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212C5C Ext File Attributes   00000000 (0)\n-212C60 Local Header Offset   0000F35D (62301)\n-212C64 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2150BB Ext File Attributes   00000000 (0)\n+2150BF Local Header Offset   0001E302 (123650)\n+2150C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212C64: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2150C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212C98 CENTRAL HEADER #88    02014B50 (33639248)\n-212C9C Created Zip Spec      14 (20) '2.0'\n-212C9D Created OS            00 (0) 'MS-DOS'\n-212C9E Extract Zip Spec      14 (20) '2.0'\n-212C9F Extract OS            00 (0) 'MS-DOS'\n-212CA0 General Purpose Flag  0808 (2056)\n+215110 CENTRAL HEADER #88    02014B50 (33639248)\n+215114 Created Zip Spec      14 (20) '2.0'\n+215115 Created OS            00 (0) 'MS-DOS'\n+215116 Extract Zip Spec      14 (20) '2.0'\n+215117 Extract OS            00 (0) 'MS-DOS'\n+215118 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212CA2 Compression Method    0008 (8) 'Deflated'\n-212CA4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212CA8 CRC                   D9872A58 (3649514072)\n-212CAC Compressed Size       00000379 (889)\n-212CB0 Uncompressed Size     0000083F (2111)\n-212CB4 Filename Length       003B (59)\n-212CB6 Extra Length          0000 (0)\n-212CB8 Comment Length        0000 (0)\n-212CBA Disk Start            0000 (0)\n-212CBC Int File Attributes   0000 (0)\n+21511A Compression Method    0008 (8) 'Deflated'\n+21511C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215120 CRC                   DD0D6020 (3708641312)\n+215124 Compressed Size       0000040F (1039)\n+215128 Uncompressed Size     00000C75 (3189)\n+21512C Filename Length       004D (77)\n+21512E Extra Length          0000 (0)\n+215130 Comment Length        0000 (0)\n+215132 Disk Start            0000 (0)\n+215134 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212CBE Ext File Attributes   00000000 (0)\n-212CC2 Local Header Offset   0000F3C1 (62401)\n-212CC6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215136 Ext File Attributes   00000000 (0)\n+21513A Local Header Offset   0001E724 (124708)\n+21513E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212CC6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21513E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212D01 CENTRAL HEADER #89    02014B50 (33639248)\n-212D05 Created Zip Spec      14 (20) '2.0'\n-212D06 Created OS            00 (0) 'MS-DOS'\n-212D07 Extract Zip Spec      14 (20) '2.0'\n-212D08 Extract OS            00 (0) 'MS-DOS'\n-212D09 General Purpose Flag  0808 (2056)\n+21518B CENTRAL HEADER #89    02014B50 (33639248)\n+21518F Created Zip Spec      14 (20) '2.0'\n+215190 Created OS            00 (0) 'MS-DOS'\n+215191 Extract Zip Spec      14 (20) '2.0'\n+215192 Extract OS            00 (0) 'MS-DOS'\n+215193 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212D0B Compression Method    0008 (8) 'Deflated'\n-212D0D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212D11 CRC                   20792918 (544811288)\n-212D15 Compressed Size       00000045 (69)\n-212D19 Uncompressed Size     0000004A (74)\n-212D1D Filename Length       0042 (66)\n-212D1F Extra Length          0000 (0)\n-212D21 Comment Length        0000 (0)\n-212D23 Disk Start            0000 (0)\n-212D25 Int File Attributes   0000 (0)\n+215195 Compression Method    0008 (8) 'Deflated'\n+215197 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21519B CRC                   79D3C18A (2043920778)\n+21519F Compressed Size       000002E3 (739)\n+2151A3 Uncompressed Size     00000773 (1907)\n+2151A7 Filename Length       0058 (88)\n+2151A9 Extra Length          0000 (0)\n+2151AB Comment Length        0000 (0)\n+2151AD Disk Start            0000 (0)\n+2151AF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212D27 Ext File Attributes   00000000 (0)\n-212D2B Local Header Offset   0000F7A3 (63395)\n-212D2F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2151B1 Ext File Attributes   00000000 (0)\n+2151B5 Local Header Offset   0001EBAE (125870)\n+2151B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212D2F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2151B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212D71 CENTRAL HEADER #90    02014B50 (33639248)\n-212D75 Created Zip Spec      14 (20) '2.0'\n-212D76 Created OS            00 (0) 'MS-DOS'\n-212D77 Extract Zip Spec      14 (20) '2.0'\n-212D78 Extract OS            00 (0) 'MS-DOS'\n-212D79 General Purpose Flag  0808 (2056)\n+215211 CENTRAL HEADER #90    02014B50 (33639248)\n+215215 Created Zip Spec      14 (20) '2.0'\n+215216 Created OS            00 (0) 'MS-DOS'\n+215217 Extract Zip Spec      14 (20) '2.0'\n+215218 Extract OS            00 (0) 'MS-DOS'\n+215219 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212D7B Compression Method    0008 (8) 'Deflated'\n-212D7D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212D81 CRC                   00000000 (0)\n-212D85 Compressed Size       00000002 (2)\n-212D89 Uncompressed Size     00000000 (0)\n-212D8D Filename Length       0030 (48)\n-212D8F Extra Length          0000 (0)\n-212D91 Comment Length        0000 (0)\n-212D93 Disk Start            0000 (0)\n-212D95 Int File Attributes   0000 (0)\n+21521B Compression Method    0008 (8) 'Deflated'\n+21521D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215221 CRC                   D5036E1C (3573771804)\n+215225 Compressed Size       000004A0 (1184)\n+215229 Uncompressed Size     00000F0D (3853)\n+21522D Filename Length       0056 (86)\n+21522F Extra Length          0000 (0)\n+215231 Comment Length        0000 (0)\n+215233 Disk Start            0000 (0)\n+215235 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212D97 Ext File Attributes   00000000 (0)\n-212D9B Local Header Offset   0000F858 (63576)\n-212D9F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215237 Ext File Attributes   00000000 (0)\n+21523B Local Header Offset   0001EF17 (126743)\n+21523F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212D9F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21523F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212DCF CENTRAL HEADER #91    02014B50 (33639248)\n-212DD3 Created Zip Spec      14 (20) '2.0'\n-212DD4 Created OS            00 (0) 'MS-DOS'\n-212DD5 Extract Zip Spec      14 (20) '2.0'\n-212DD6 Extract OS            00 (0) 'MS-DOS'\n-212DD7 General Purpose Flag  0808 (2056)\n+215295 CENTRAL HEADER #91    02014B50 (33639248)\n+215299 Created Zip Spec      14 (20) '2.0'\n+21529A Created OS            00 (0) 'MS-DOS'\n+21529B Extract Zip Spec      14 (20) '2.0'\n+21529C Extract OS            00 (0) 'MS-DOS'\n+21529D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212DD9 Compression Method    0008 (8) 'Deflated'\n-212DDB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212DDF CRC                   922534C7 (2451911879)\n-212DE3 Compressed Size       000003BF (959)\n-212DE7 Uncompressed Size     00000A33 (2611)\n-212DEB Filename Length       0037 (55)\n-212DED Extra Length          0000 (0)\n-212DEF Comment Length        0000 (0)\n-212DF1 Disk Start            0000 (0)\n-212DF3 Int File Attributes   0000 (0)\n+21529F Compression Method    0008 (8) 'Deflated'\n+2152A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2152A5 CRC                   00000000 (0)\n+2152A9 Compressed Size       00000002 (2)\n+2152AD Uncompressed Size     00000000 (0)\n+2152B1 Filename Length       0032 (50)\n+2152B3 Extra Length          0000 (0)\n+2152B5 Comment Length        0000 (0)\n+2152B7 Disk Start            0000 (0)\n+2152B9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212DF5 Ext File Attributes   00000000 (0)\n-212DF9 Local Header Offset   0000F8B8 (63672)\n-212DFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2152BB Ext File Attributes   00000000 (0)\n+2152BF Local Header Offset   0001F43B (128059)\n+2152C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212DFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2152C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212E34 CENTRAL HEADER #92    02014B50 (33639248)\n-212E38 Created Zip Spec      14 (20) '2.0'\n-212E39 Created OS            00 (0) 'MS-DOS'\n-212E3A Extract Zip Spec      14 (20) '2.0'\n-212E3B Extract OS            00 (0) 'MS-DOS'\n-212E3C General Purpose Flag  0808 (2056)\n+2152F5 CENTRAL HEADER #92    02014B50 (33639248)\n+2152F9 Created Zip Spec      14 (20) '2.0'\n+2152FA Created OS            00 (0) 'MS-DOS'\n+2152FB Extract Zip Spec      14 (20) '2.0'\n+2152FC Extract OS            00 (0) 'MS-DOS'\n+2152FD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212E3E Compression Method    0008 (8) 'Deflated'\n-212E40 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212E44 CRC                   7C47DDD5 (2085084629)\n-212E48 Compressed Size       00000044 (68)\n-212E4C Uncompressed Size     00000046 (70)\n-212E50 Filename Length       003E (62)\n-212E52 Extra Length          0000 (0)\n-212E54 Comment Length        0000 (0)\n-212E56 Disk Start            0000 (0)\n-212E58 Int File Attributes   0000 (0)\n+2152FF Compression Method    0008 (8) 'Deflated'\n+215301 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215305 CRC                   E1ADA7E4 (3786254308)\n+215309 Compressed Size       000003CB (971)\n+21530D Uncompressed Size     00000A96 (2710)\n+215311 Filename Length       005A (90)\n+215313 Extra Length          0000 (0)\n+215315 Comment Length        0000 (0)\n+215317 Disk Start            0000 (0)\n+215319 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212E5A Ext File Attributes   00000000 (0)\n-212E5E Local Header Offset   0000FCDC (64732)\n-212E62 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21531B Ext File Attributes   00000000 (0)\n+21531F Local Header Offset   0001F49D (128157)\n+215323 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212E62: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x215323: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212EA0 CENTRAL HEADER #93    02014B50 (33639248)\n-212EA4 Created Zip Spec      14 (20) '2.0'\n-212EA5 Created OS            00 (0) 'MS-DOS'\n-212EA6 Extract Zip Spec      14 (20) '2.0'\n-212EA7 Extract OS            00 (0) 'MS-DOS'\n-212EA8 General Purpose Flag  0808 (2056)\n+21537D CENTRAL HEADER #93    02014B50 (33639248)\n+215381 Created Zip Spec      14 (20) '2.0'\n+215382 Created OS            00 (0) 'MS-DOS'\n+215383 Extract Zip Spec      14 (20) '2.0'\n+215384 Extract OS            00 (0) 'MS-DOS'\n+215385 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212EAA Compression Method    0008 (8) 'Deflated'\n-212EAC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212EB0 CRC                   00000000 (0)\n-212EB4 Compressed Size       00000002 (2)\n-212EB8 Uncompressed Size     00000000 (0)\n-212EBC Filename Length       002F (47)\n-212EBE Extra Length          0000 (0)\n-212EC0 Comment Length        0000 (0)\n-212EC2 Disk Start            0000 (0)\n-212EC4 Int File Attributes   0000 (0)\n+215387 Compression Method    0008 (8) 'Deflated'\n+215389 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21538D CRC                   041B9E71 (68918897)\n+215391 Compressed Size       00000455 (1109)\n+215395 Uncompressed Size     00000ACF (2767)\n+215399 Filename Length       0049 (73)\n+21539B Extra Length          0000 (0)\n+21539D Comment Length        0000 (0)\n+21539F Disk Start            0000 (0)\n+2153A1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212EC6 Ext File Attributes   00000000 (0)\n-212ECA Local Header Offset   0000FD8C (64908)\n-212ECE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2153A3 Ext File Attributes   00000000 (0)\n+2153A7 Local Header Offset   0001F8F0 (129264)\n+2153AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212ECE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2153AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212EFD CENTRAL HEADER #94    02014B50 (33639248)\n-212F01 Created Zip Spec      14 (20) '2.0'\n-212F02 Created OS            00 (0) 'MS-DOS'\n-212F03 Extract Zip Spec      14 (20) '2.0'\n-212F04 Extract OS            00 (0) 'MS-DOS'\n-212F05 General Purpose Flag  0808 (2056)\n+2153F4 CENTRAL HEADER #94    02014B50 (33639248)\n+2153F8 Created Zip Spec      14 (20) '2.0'\n+2153F9 Created OS            00 (0) 'MS-DOS'\n+2153FA Extract Zip Spec      14 (20) '2.0'\n+2153FB Extract OS            00 (0) 'MS-DOS'\n+2153FC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212F07 Compression Method    0008 (8) 'Deflated'\n-212F09 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212F0D CRC                   B2FF8BF3 (3003091955)\n-212F11 Compressed Size       0000043B (1083)\n-212F15 Uncompressed Size     00000F9F (3999)\n-212F19 Filename Length       0036 (54)\n-212F1B Extra Length          0000 (0)\n-212F1D Comment Length        0000 (0)\n-212F1F Disk Start            0000 (0)\n-212F21 Int File Attributes   0000 (0)\n+2153FE Compression Method    0008 (8) 'Deflated'\n+215400 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215404 CRC                   E7D9317D (3889770877)\n+215408 Compressed Size       0000057D (1405)\n+21540C Uncompressed Size     000011D4 (4564)\n+215410 Filename Length       0052 (82)\n+215412 Extra Length          0000 (0)\n+215414 Comment Length        0000 (0)\n+215416 Disk Start            0000 (0)\n+215418 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212F23 Ext File Attributes   00000000 (0)\n-212F27 Local Header Offset   0000FDEB (65003)\n-212F2B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21541A Ext File Attributes   00000000 (0)\n+21541E Local Header Offset   0001FDBC (130492)\n+215422 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212F2B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x215422: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212F61 CENTRAL HEADER #95    02014B50 (33639248)\n-212F65 Created Zip Spec      14 (20) '2.0'\n-212F66 Created OS            00 (0) 'MS-DOS'\n-212F67 Extract Zip Spec      14 (20) '2.0'\n-212F68 Extract OS            00 (0) 'MS-DOS'\n-212F69 General Purpose Flag  0808 (2056)\n+215474 CENTRAL HEADER #95    02014B50 (33639248)\n+215478 Created Zip Spec      14 (20) '2.0'\n+215479 Created OS            00 (0) 'MS-DOS'\n+21547A Extract Zip Spec      14 (20) '2.0'\n+21547B Extract OS            00 (0) 'MS-DOS'\n+21547C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212F6B Compression Method    0008 (8) 'Deflated'\n-212F6D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212F71 CRC                   A1DBB70A (2715531018)\n-212F75 Compressed Size       00000043 (67)\n-212F79 Uncompressed Size     00000045 (69)\n-212F7D Filename Length       003D (61)\n-212F7F Extra Length          0000 (0)\n-212F81 Comment Length        0000 (0)\n-212F83 Disk Start            0000 (0)\n-212F85 Int File Attributes   0000 (0)\n+21547E Compression Method    0008 (8) 'Deflated'\n+215480 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215484 CRC                   7ED1451A (2127643930)\n+215488 Compressed Size       00000438 (1080)\n+21548C Uncompressed Size     00001312 (4882)\n+215490 Filename Length       004F (79)\n+215492 Extra Length          0000 (0)\n+215494 Comment Length        0000 (0)\n+215496 Disk Start            0000 (0)\n+215498 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212F87 Ext File Attributes   00000000 (0)\n-212F8B Local Header Offset   0001028A (66186)\n-212F8F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21549A Ext File Attributes   00000000 (0)\n+21549E Local Header Offset   000203B9 (132025)\n+2154A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212F8F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2154A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-212FCC CENTRAL HEADER #96    02014B50 (33639248)\n-212FD0 Created Zip Spec      14 (20) '2.0'\n-212FD1 Created OS            00 (0) 'MS-DOS'\n-212FD2 Extract Zip Spec      14 (20) '2.0'\n-212FD3 Extract OS            00 (0) 'MS-DOS'\n-212FD4 General Purpose Flag  0808 (2056)\n+2154F1 CENTRAL HEADER #96    02014B50 (33639248)\n+2154F5 Created Zip Spec      14 (20) '2.0'\n+2154F6 Created OS            00 (0) 'MS-DOS'\n+2154F7 Extract Zip Spec      14 (20) '2.0'\n+2154F8 Extract OS            00 (0) 'MS-DOS'\n+2154F9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-212FD6 Compression Method    0008 (8) 'Deflated'\n-212FD8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-212FDC CRC                   00000000 (0)\n-212FE0 Compressed Size       00000002 (2)\n-212FE4 Uncompressed Size     00000000 (0)\n-212FE8 Filename Length       002E (46)\n-212FEA Extra Length          0000 (0)\n-212FEC Comment Length        0000 (0)\n-212FEE Disk Start            0000 (0)\n-212FF0 Int File Attributes   0000 (0)\n+2154FB Compression Method    0008 (8) 'Deflated'\n+2154FD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215501 CRC                   AD821A56 (2910984790)\n+215505 Compressed Size       0000047A (1146)\n+215509 Uncompressed Size     00000CAC (3244)\n+21550D Filename Length       0058 (88)\n+21550F Extra Length          0000 (0)\n+215511 Comment Length        0000 (0)\n+215513 Disk Start            0000 (0)\n+215515 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-212FF2 Ext File Attributes   00000000 (0)\n-212FF6 Local Header Offset   00010338 (66360)\n-212FFA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215517 Ext File Attributes   00000000 (0)\n+21551B Local Header Offset   0002086E (133230)\n+21551F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x212FFA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21551F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213028 CENTRAL HEADER #97    02014B50 (33639248)\n-21302C Created Zip Spec      14 (20) '2.0'\n-21302D Created OS            00 (0) 'MS-DOS'\n-21302E Extract Zip Spec      14 (20) '2.0'\n-21302F Extract OS            00 (0) 'MS-DOS'\n-213030 General Purpose Flag  0808 (2056)\n+215577 CENTRAL HEADER #97    02014B50 (33639248)\n+21557B Created Zip Spec      14 (20) '2.0'\n+21557C Created OS            00 (0) 'MS-DOS'\n+21557D Extract Zip Spec      14 (20) '2.0'\n+21557E Extract OS            00 (0) 'MS-DOS'\n+21557F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213032 Compression Method    0008 (8) 'Deflated'\n-213034 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213038 CRC                   4CDF6DC7 (1289711047)\n-21303C Compressed Size       000003F9 (1017)\n-213040 Uncompressed Size     00000B22 (2850)\n-213044 Filename Length       0035 (53)\n-213046 Extra Length          0000 (0)\n-213048 Comment Length        0000 (0)\n-21304A Disk Start            0000 (0)\n-21304C Int File Attributes   0000 (0)\n+215581 Compression Method    0008 (8) 'Deflated'\n+215583 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215587 CRC                   C24DDA18 (3259882008)\n+21558B Compressed Size       00000371 (881)\n+21558F Uncompressed Size     00000833 (2099)\n+215593 Filename Length       0057 (87)\n+215595 Extra Length          0000 (0)\n+215597 Comment Length        0000 (0)\n+215599 Disk Start            0000 (0)\n+21559B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21304E Ext File Attributes   00000000 (0)\n-213052 Local Header Offset   00010396 (66454)\n-213056 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21559D Ext File Attributes   00000000 (0)\n+2155A1 Local Header Offset   00020D6E (134510)\n+2155A5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213056: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2155A5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21308B CENTRAL HEADER #98    02014B50 (33639248)\n-21308F Created Zip Spec      14 (20) '2.0'\n-213090 Created OS            00 (0) 'MS-DOS'\n-213091 Extract Zip Spec      14 (20) '2.0'\n-213092 Extract OS            00 (0) 'MS-DOS'\n-213093 General Purpose Flag  0808 (2056)\n+2155FC CENTRAL HEADER #98    02014B50 (33639248)\n+215600 Created Zip Spec      14 (20) '2.0'\n+215601 Created OS            00 (0) 'MS-DOS'\n+215602 Extract Zip Spec      14 (20) '2.0'\n+215603 Extract OS            00 (0) 'MS-DOS'\n+215604 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213095 Compression Method    0008 (8) 'Deflated'\n-213097 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21309B CRC                   286EAB64 (678341476)\n-21309F Compressed Size       00000042 (66)\n-2130A3 Uncompressed Size     00000044 (68)\n-2130A7 Filename Length       003C (60)\n-2130A9 Extra Length          0000 (0)\n-2130AB Comment Length        0000 (0)\n-2130AD Disk Start            0000 (0)\n-2130AF Int File Attributes   0000 (0)\n+215606 Compression Method    0008 (8) 'Deflated'\n+215608 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21560C CRC                   FF2A19ED (4280949229)\n+215610 Compressed Size       00000468 (1128)\n+215614 Uncompressed Size     00000B7A (2938)\n+215618 Filename Length       0042 (66)\n+21561A Extra Length          0000 (0)\n+21561C Comment Length        0000 (0)\n+21561E Disk Start            0000 (0)\n+215620 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2130B1 Ext File Attributes   00000000 (0)\n-2130B5 Local Header Offset   000107F2 (67570)\n-2130B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215622 Ext File Attributes   00000000 (0)\n+215626 Local Header Offset   00021164 (135524)\n+21562A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2130B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21562A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2130F5 CENTRAL HEADER #99    02014B50 (33639248)\n-2130F9 Created Zip Spec      14 (20) '2.0'\n-2130FA Created OS            00 (0) 'MS-DOS'\n-2130FB Extract Zip Spec      14 (20) '2.0'\n-2130FC Extract OS            00 (0) 'MS-DOS'\n-2130FD General Purpose Flag  0808 (2056)\n+21566C CENTRAL HEADER #99    02014B50 (33639248)\n+215670 Created Zip Spec      14 (20) '2.0'\n+215671 Created OS            00 (0) 'MS-DOS'\n+215672 Extract Zip Spec      14 (20) '2.0'\n+215673 Extract OS            00 (0) 'MS-DOS'\n+215674 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2130FF Compression Method    0008 (8) 'Deflated'\n-213101 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213105 CRC                   00000000 (0)\n-213109 Compressed Size       00000002 (2)\n-21310D Uncompressed Size     00000000 (0)\n-213111 Filename Length       002F (47)\n-213113 Extra Length          0000 (0)\n-213115 Comment Length        0000 (0)\n-213117 Disk Start            0000 (0)\n-213119 Int File Attributes   0000 (0)\n+215676 Compression Method    0008 (8) 'Deflated'\n+215678 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21567C CRC                   5D54AEAF (1565830831)\n+215680 Compressed Size       00000476 (1142)\n+215684 Uncompressed Size     00000DDE (3550)\n+215688 Filename Length       0048 (72)\n+21568A Extra Length          0000 (0)\n+21568C Comment Length        0000 (0)\n+21568E Disk Start            0000 (0)\n+215690 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21311B Ext File Attributes   00000000 (0)\n-21311F Local Header Offset   0001089E (67742)\n-213123 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215692 Ext File Attributes   00000000 (0)\n+215696 Local Header Offset   0002163C (136764)\n+21569A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213123: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21569A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213152 CENTRAL HEADER #100   02014B50 (33639248)\n-213156 Created Zip Spec      14 (20) '2.0'\n-213157 Created OS            00 (0) 'MS-DOS'\n-213158 Extract Zip Spec      14 (20) '2.0'\n-213159 Extract OS            00 (0) 'MS-DOS'\n-21315A General Purpose Flag  0808 (2056)\n+2156E2 CENTRAL HEADER #100   02014B50 (33639248)\n+2156E6 Created Zip Spec      14 (20) '2.0'\n+2156E7 Created OS            00 (0) 'MS-DOS'\n+2156E8 Extract Zip Spec      14 (20) '2.0'\n+2156E9 Extract OS            00 (0) 'MS-DOS'\n+2156EA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21315C Compression Method    0008 (8) 'Deflated'\n-21315E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213162 CRC                   6EE94123 (1860780323)\n-213166 Compressed Size       000003B2 (946)\n-21316A Uncompressed Size     00000AC3 (2755)\n-21316E Filename Length       0036 (54)\n-213170 Extra Length          0000 (0)\n-213172 Comment Length        0000 (0)\n-213174 Disk Start            0000 (0)\n-213176 Int File Attributes   0000 (0)\n+2156EC Compression Method    0008 (8) 'Deflated'\n+2156EE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2156F2 CRC                   0C9E7B88 (211712904)\n+2156F6 Compressed Size       0000030F (783)\n+2156FA Uncompressed Size     0000065F (1631)\n+2156FE Filename Length       004B (75)\n+215700 Extra Length          0000 (0)\n+215702 Comment Length        0000 (0)\n+215704 Disk Start            0000 (0)\n+215706 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213178 Ext File Attributes   00000000 (0)\n-21317C Local Header Offset   000108FD (67837)\n-213180 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215708 Ext File Attributes   00000000 (0)\n+21570C Local Header Offset   00021B28 (138024)\n+215710 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213180: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x215710: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2131B6 CENTRAL HEADER #101   02014B50 (33639248)\n-2131BA Created Zip Spec      14 (20) '2.0'\n-2131BB Created OS            00 (0) 'MS-DOS'\n-2131BC Extract Zip Spec      14 (20) '2.0'\n-2131BD Extract OS            00 (0) 'MS-DOS'\n-2131BE General Purpose Flag  0808 (2056)\n+21575B CENTRAL HEADER #101   02014B50 (33639248)\n+21575F Created Zip Spec      14 (20) '2.0'\n+215760 Created OS            00 (0) 'MS-DOS'\n+215761 Extract Zip Spec      14 (20) '2.0'\n+215762 Extract OS            00 (0) 'MS-DOS'\n+215763 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2131C0 Compression Method    0008 (8) 'Deflated'\n-2131C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2131C6 CRC                   86FC6C16 (2264689686)\n-2131CA Compressed Size       00000041 (65)\n-2131CE Uncompressed Size     00000045 (69)\n-2131D2 Filename Length       003D (61)\n-2131D4 Extra Length          0000 (0)\n-2131D6 Comment Length        0000 (0)\n-2131D8 Disk Start            0000 (0)\n-2131DA Int File Attributes   0000 (0)\n+215765 Compression Method    0008 (8) 'Deflated'\n+215767 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21576B CRC                   00000000 (0)\n+21576F Compressed Size       00000002 (2)\n+215773 Uncompressed Size     00000000 (0)\n+215777 Filename Length       002E (46)\n+215779 Extra Length          0000 (0)\n+21577B Comment Length        0000 (0)\n+21577D Disk Start            0000 (0)\n+21577F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2131DC Ext File Attributes   00000000 (0)\n-2131E0 Local Header Offset   00010D13 (68883)\n-2131E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215781 Ext File Attributes   00000000 (0)\n+215785 Local Header Offset   00021EB0 (138928)\n+215789 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2131E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x215789: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213221 CENTRAL HEADER #102   02014B50 (33639248)\n-213225 Created Zip Spec      14 (20) '2.0'\n-213226 Created OS            00 (0) 'MS-DOS'\n-213227 Extract Zip Spec      14 (20) '2.0'\n-213228 Extract OS            00 (0) 'MS-DOS'\n-213229 General Purpose Flag  0808 (2056)\n+2157B7 CENTRAL HEADER #102   02014B50 (33639248)\n+2157BB Created Zip Spec      14 (20) '2.0'\n+2157BC Created OS            00 (0) 'MS-DOS'\n+2157BD Extract Zip Spec      14 (20) '2.0'\n+2157BE Extract OS            00 (0) 'MS-DOS'\n+2157BF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21322B Compression Method    0008 (8) 'Deflated'\n-21322D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213231 CRC                   00000000 (0)\n-213235 Compressed Size       00000002 (2)\n-213239 Uncompressed Size     00000000 (0)\n-21323D Filename Length       0033 (51)\n-21323F Extra Length          0000 (0)\n-213241 Comment Length        0000 (0)\n-213243 Disk Start            0000 (0)\n-213245 Int File Attributes   0000 (0)\n+2157C1 Compression Method    0008 (8) 'Deflated'\n+2157C3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2157C7 CRC                   EB9A0122 (3952738594)\n+2157CB Compressed Size       000003E2 (994)\n+2157CF Uncompressed Size     000009AA (2474)\n+2157D3 Filename Length       004C (76)\n+2157D5 Extra Length          0000 (0)\n+2157D7 Comment Length        0000 (0)\n+2157D9 Disk Start            0000 (0)\n+2157DB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213247 Ext File Attributes   00000000 (0)\n-21324B Local Header Offset   00010DBF (69055)\n-21324F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2157DD Ext File Attributes   00000000 (0)\n+2157E1 Local Header Offset   00021F0E (139022)\n+2157E5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21324F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2157E5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213282 CENTRAL HEADER #103   02014B50 (33639248)\n-213286 Created Zip Spec      14 (20) '2.0'\n-213287 Created OS            00 (0) 'MS-DOS'\n-213288 Extract Zip Spec      14 (20) '2.0'\n-213289 Extract OS            00 (0) 'MS-DOS'\n-21328A General Purpose Flag  0808 (2056)\n+215831 CENTRAL HEADER #103   02014B50 (33639248)\n+215835 Created Zip Spec      14 (20) '2.0'\n+215836 Created OS            00 (0) 'MS-DOS'\n+215837 Extract Zip Spec      14 (20) '2.0'\n+215838 Extract OS            00 (0) 'MS-DOS'\n+215839 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21328C Compression Method    0008 (8) 'Deflated'\n-21328E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213292 CRC                   050B85C5 (84641221)\n-213296 Compressed Size       000003F2 (1010)\n-21329A Uncompressed Size     00000CF1 (3313)\n-21329E Filename Length       003A (58)\n-2132A0 Extra Length          0000 (0)\n-2132A2 Comment Length        0000 (0)\n-2132A4 Disk Start            0000 (0)\n-2132A6 Int File Attributes   0000 (0)\n+21583B Compression Method    0008 (8) 'Deflated'\n+21583D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215841 CRC                   E5AFE84D (3853510733)\n+215845 Compressed Size       000004E6 (1254)\n+215849 Uncompressed Size     00000D29 (3369)\n+21584D Filename Length       0064 (100)\n+21584F Extra Length          0000 (0)\n+215851 Comment Length        0000 (0)\n+215853 Disk Start            0000 (0)\n+215855 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2132A8 Ext File Attributes   00000000 (0)\n-2132AC Local Header Offset   00010E22 (69154)\n-2132B0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215857 Ext File Attributes   00000000 (0)\n+21585B Local Header Offset   0002236A (140138)\n+21585F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2132B0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21585F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2132EA CENTRAL HEADER #104   02014B50 (33639248)\n-2132EE Created Zip Spec      14 (20) '2.0'\n-2132EF Created OS            00 (0) 'MS-DOS'\n-2132F0 Extract Zip Spec      14 (20) '2.0'\n-2132F1 Extract OS            00 (0) 'MS-DOS'\n-2132F2 General Purpose Flag  0808 (2056)\n+2158C3 CENTRAL HEADER #104   02014B50 (33639248)\n+2158C7 Created Zip Spec      14 (20) '2.0'\n+2158C8 Created OS            00 (0) 'MS-DOS'\n+2158C9 Extract Zip Spec      14 (20) '2.0'\n+2158CA Extract OS            00 (0) 'MS-DOS'\n+2158CB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2132F4 Compression Method    0008 (8) 'Deflated'\n-2132F6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2132FA CRC                   30325669 (808605289)\n-2132FE Compressed Size       00000047 (71)\n-213302 Uncompressed Size     00000049 (73)\n-213306 Filename Length       0041 (65)\n-213308 Extra Length          0000 (0)\n-21330A Comment Length        0000 (0)\n-21330C Disk Start            0000 (0)\n-21330E Int File Attributes   0000 (0)\n+2158CD Compression Method    0008 (8) 'Deflated'\n+2158CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2158D3 CRC                   00000000 (0)\n+2158D7 Compressed Size       00000002 (2)\n+2158DB Uncompressed Size     00000000 (0)\n+2158DF Filename Length       002D (45)\n+2158E1 Extra Length          0000 (0)\n+2158E3 Comment Length        0000 (0)\n+2158E5 Disk Start            0000 (0)\n+2158E7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213310 Ext File Attributes   00000000 (0)\n-213314 Local Header Offset   0001127C (70268)\n-213318 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2158E9 Ext File Attributes   00000000 (0)\n+2158ED Local Header Offset   000228E2 (141538)\n+2158F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213318: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2158F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213359 CENTRAL HEADER #105   02014B50 (33639248)\n-21335D Created Zip Spec      14 (20) '2.0'\n-21335E Created OS            00 (0) 'MS-DOS'\n-21335F Extract Zip Spec      14 (20) '2.0'\n-213360 Extract OS            00 (0) 'MS-DOS'\n-213361 General Purpose Flag  0808 (2056)\n+21591E CENTRAL HEADER #105   02014B50 (33639248)\n+215922 Created Zip Spec      14 (20) '2.0'\n+215923 Created OS            00 (0) 'MS-DOS'\n+215924 Extract Zip Spec      14 (20) '2.0'\n+215925 Extract OS            00 (0) 'MS-DOS'\n+215926 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213363 Compression Method    0008 (8) 'Deflated'\n-213365 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213369 CRC                   00000000 (0)\n-21336D Compressed Size       00000002 (2)\n-213371 Uncompressed Size     00000000 (0)\n-213375 Filename Length       0012 (18)\n-213377 Extra Length          0000 (0)\n-213379 Comment Length        0000 (0)\n-21337B Disk Start            0000 (0)\n-21337D Int File Attributes   0000 (0)\n+215928 Compression Method    0008 (8) 'Deflated'\n+21592A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21592E CRC                   77721950 (2003966288)\n+215932 Compressed Size       000002F2 (754)\n+215936 Uncompressed Size     00000769 (1897)\n+21593A Filename Length       004B (75)\n+21593C Extra Length          0000 (0)\n+21593E Comment Length        0000 (0)\n+215940 Disk Start            0000 (0)\n+215942 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21337F Ext File Attributes   00000000 (0)\n-213383 Local Header Offset   00011332 (70450)\n-213387 Filename              'XXXXXXXXXXXXXXXXXX'\n+215944 Ext File Attributes   00000000 (0)\n+215948 Local Header Offset   0002293F (141631)\n+21594C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213387: Filename 'XXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21594C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213399 CENTRAL HEADER #106   02014B50 (33639248)\n-21339D Created Zip Spec      14 (20) '2.0'\n-21339E Created OS            00 (0) 'MS-DOS'\n-21339F Extract Zip Spec      14 (20) '2.0'\n-2133A0 Extract OS            00 (0) 'MS-DOS'\n-2133A1 General Purpose Flag  0808 (2056)\n+215997 CENTRAL HEADER #106   02014B50 (33639248)\n+21599B Created Zip Spec      14 (20) '2.0'\n+21599C Created OS            00 (0) 'MS-DOS'\n+21599D Extract Zip Spec      14 (20) '2.0'\n+21599E Extract OS            00 (0) 'MS-DOS'\n+21599F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2133A3 Compression Method    0008 (8) 'Deflated'\n-2133A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2133A9 CRC                   00000000 (0)\n-2133AD Compressed Size       00000002 (2)\n-2133B1 Uncompressed Size     00000000 (0)\n-2133B5 Filename Length       0016 (22)\n-2133B7 Extra Length          0000 (0)\n-2133B9 Comment Length        0000 (0)\n-2133BB Disk Start            0000 (0)\n-2133BD Int File Attributes   0000 (0)\n+2159A1 Compression Method    0008 (8) 'Deflated'\n+2159A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2159A7 CRC                   5603BE91 (1443085969)\n+2159AB Compressed Size       000002F2 (754)\n+2159AF Uncompressed Size     00000768 (1896)\n+2159B3 Filename Length       004B (75)\n+2159B5 Extra Length          0000 (0)\n+2159B7 Comment Length        0000 (0)\n+2159B9 Disk Start            0000 (0)\n+2159BB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2133BF Ext File Attributes   00000000 (0)\n-2133C3 Local Header Offset   00011374 (70516)\n-2133C7 Filename              'XXXXXXXXXXXXXXXXXXXXXX'\n+2159BD Ext File Attributes   00000000 (0)\n+2159C1 Local Header Offset   00022CAA (142506)\n+2159C5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2133C7: Filename 'XXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2159C5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2133DD CENTRAL HEADER #107   02014B50 (33639248)\n-2133E1 Created Zip Spec      14 (20) '2.0'\n-2133E2 Created OS            00 (0) 'MS-DOS'\n-2133E3 Extract Zip Spec      14 (20) '2.0'\n-2133E4 Extract OS            00 (0) 'MS-DOS'\n-2133E5 General Purpose Flag  0808 (2056)\n+215A10 CENTRAL HEADER #107   02014B50 (33639248)\n+215A14 Created Zip Spec      14 (20) '2.0'\n+215A15 Created OS            00 (0) 'MS-DOS'\n+215A16 Extract Zip Spec      14 (20) '2.0'\n+215A17 Extract OS            00 (0) 'MS-DOS'\n+215A18 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2133E7 Compression Method    0008 (8) 'Deflated'\n-2133E9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2133ED CRC                   628AF130 (1653272880)\n-2133F1 Compressed Size       00000454 (1108)\n-2133F5 Uncompressed Size     00000B7F (2943)\n-2133F9 Filename Length       001D (29)\n-2133FB Extra Length          0000 (0)\n-2133FD Comment Length        0000 (0)\n-2133FF Disk Start            0000 (0)\n-213401 Int File Attributes   0000 (0)\n+215A1A Compression Method    0008 (8) 'Deflated'\n+215A1C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215A20 CRC                   BFF1DD26 (3220299046)\n+215A24 Compressed Size       000002F1 (753)\n+215A28 Uncompressed Size     000006C6 (1734)\n+215A2C Filename Length       004A (74)\n+215A2E Extra Length          0000 (0)\n+215A30 Comment Length        0000 (0)\n+215A32 Disk Start            0000 (0)\n+215A34 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213403 Ext File Attributes   00000000 (0)\n-213407 Local Header Offset   000113BA (70586)\n-21340B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215A36 Ext File Attributes   00000000 (0)\n+215A3A Local Header Offset   00023015 (143381)\n+215A3E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21340B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x215A3E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213428 CENTRAL HEADER #108   02014B50 (33639248)\n-21342C Created Zip Spec      14 (20) '2.0'\n-21342D Created OS            00 (0) 'MS-DOS'\n-21342E Extract Zip Spec      14 (20) '2.0'\n-21342F Extract OS            00 (0) 'MS-DOS'\n-213430 General Purpose Flag  0808 (2056)\n+215A88 CENTRAL HEADER #108   02014B50 (33639248)\n+215A8C Created Zip Spec      14 (20) '2.0'\n+215A8D Created OS            00 (0) 'MS-DOS'\n+215A8E Extract Zip Spec      14 (20) '2.0'\n+215A8F Extract OS            00 (0) 'MS-DOS'\n+215A90 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213432 Compression Method    0008 (8) 'Deflated'\n-213434 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213438 CRC                   DF2293D8 (3743585240)\n-21343C Compressed Size       000001EA (490)\n-213440 Uncompressed Size     00000340 (832)\n-213444 Filename Length       0020 (32)\n-213446 Extra Length          0000 (0)\n-213448 Comment Length        0000 (0)\n-21344A Disk Start            0000 (0)\n-21344C Int File Attributes   0000 (0)\n+215A92 Compression Method    0008 (8) 'Deflated'\n+215A94 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215A98 CRC                   00000000 (0)\n+215A9C Compressed Size       00000002 (2)\n+215AA0 Uncompressed Size     00000000 (0)\n+215AA4 Filename Length       0032 (50)\n+215AA6 Extra Length          0000 (0)\n+215AA8 Comment Length        0000 (0)\n+215AAA Disk Start            0000 (0)\n+215AAC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21344E Ext File Attributes   00000000 (0)\n-213452 Local Header Offset   00011859 (71769)\n-213456 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215AAE Ext File Attributes   00000000 (0)\n+215AB2 Local Header Offset   0002337E (144254)\n+215AB6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213456: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x215AB6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213476 CENTRAL HEADER #109   02014B50 (33639248)\n-21347A Created Zip Spec      14 (20) '2.0'\n-21347B Created OS            00 (0) 'MS-DOS'\n-21347C Extract Zip Spec      14 (20) '2.0'\n-21347D Extract OS            00 (0) 'MS-DOS'\n-21347E General Purpose Flag  0808 (2056)\n+215AE8 CENTRAL HEADER #109   02014B50 (33639248)\n+215AEC Created Zip Spec      14 (20) '2.0'\n+215AED Created OS            00 (0) 'MS-DOS'\n+215AEE Extract Zip Spec      14 (20) '2.0'\n+215AEF Extract OS            00 (0) 'MS-DOS'\n+215AF0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213480 Compression Method    0008 (8) 'Deflated'\n-213482 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213486 CRC                   0F1B3503 (253441283)\n-21348A Compressed Size       00000272 (626)\n-21348E Uncompressed Size     000004AC (1196)\n-213492 Filename Length       001F (31)\n-213494 Extra Length          0000 (0)\n-213496 Comment Length        0000 (0)\n-213498 Disk Start            0000 (0)\n-21349A Int File Attributes   0000 (0)\n+215AF2 Compression Method    0008 (8) 'Deflated'\n+215AF4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215AF8 CRC                   D7398AF1 (3610872561)\n+215AFC Compressed Size       00000365 (869)\n+215B00 Uncompressed Size     00000940 (2368)\n+215B04 Filename Length       0050 (80)\n+215B06 Extra Length          0000 (0)\n+215B08 Comment Length        0000 (0)\n+215B0A Disk Start            0000 (0)\n+215B0C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21349C Ext File Attributes   00000000 (0)\n-2134A0 Local Header Offset   00011A91 (72337)\n-2134A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215B0E Ext File Attributes   00000000 (0)\n+215B12 Local Header Offset   000233E0 (144352)\n+215B16 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2134A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x215B16: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2134C3 CENTRAL HEADER #110   02014B50 (33639248)\n-2134C7 Created Zip Spec      14 (20) '2.0'\n-2134C8 Created OS            00 (0) 'MS-DOS'\n-2134C9 Extract Zip Spec      14 (20) '2.0'\n-2134CA Extract OS            00 (0) 'MS-DOS'\n-2134CB General Purpose Flag  0808 (2056)\n+215B66 CENTRAL HEADER #110   02014B50 (33639248)\n+215B6A Created Zip Spec      14 (20) '2.0'\n+215B6B Created OS            00 (0) 'MS-DOS'\n+215B6C Extract Zip Spec      14 (20) '2.0'\n+215B6D Extract OS            00 (0) 'MS-DOS'\n+215B6E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2134CD Compression Method    0008 (8) 'Deflated'\n-2134CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2134D3 CRC                   CD3B8ABC (3443231420)\n-2134D7 Compressed Size       000003D0 (976)\n-2134DB Uncompressed Size     000007D2 (2002)\n-2134DF Filename Length       001F (31)\n-2134E1 Extra Length          0000 (0)\n-2134E3 Comment Length        0000 (0)\n-2134E5 Disk Start            0000 (0)\n-2134E7 Int File Attributes   0000 (0)\n+215B70 Compression Method    0008 (8) 'Deflated'\n+215B72 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215B76 CRC                   BB2451AF (3139719599)\n+215B7A Compressed Size       00000371 (881)\n+215B7E Uncompressed Size     000007DB (2011)\n+215B82 Filename Length       004F (79)\n+215B84 Extra Length          0000 (0)\n+215B86 Comment Length        0000 (0)\n+215B88 Disk Start            0000 (0)\n+215B8A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2134E9 Ext File Attributes   00000000 (0)\n-2134ED Local Header Offset   00011D50 (73040)\n-2134F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215B8C Ext File Attributes   00000000 (0)\n+215B90 Local Header Offset   000237C3 (145347)\n+215B94 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2134F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x215B94: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213510 CENTRAL HEADER #111   02014B50 (33639248)\n-213514 Created Zip Spec      14 (20) '2.0'\n-213515 Created OS            00 (0) 'MS-DOS'\n-213516 Extract Zip Spec      14 (20) '2.0'\n-213517 Extract OS            00 (0) 'MS-DOS'\n-213518 General Purpose Flag  0808 (2056)\n+215BE3 CENTRAL HEADER #111   02014B50 (33639248)\n+215BE7 Created Zip Spec      14 (20) '2.0'\n+215BE8 Created OS            00 (0) 'MS-DOS'\n+215BE9 Extract Zip Spec      14 (20) '2.0'\n+215BEA Extract OS            00 (0) 'MS-DOS'\n+215BEB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21351A Compression Method    0008 (8) 'Deflated'\n-21351C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213520 CRC                   B719070A (3071870730)\n-213524 Compressed Size       0000087B (2171)\n-213528 Uncompressed Size     00001481 (5249)\n-21352C Filename Length       001E (30)\n-21352E Extra Length          0000 (0)\n-213530 Comment Length        0000 (0)\n-213532 Disk Start            0000 (0)\n-213534 Int File Attributes   0000 (0)\n+215BED Compression Method    0008 (8) 'Deflated'\n+215BEF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215BF3 CRC                   59514F7F (1498500991)\n+215BF7 Compressed Size       000003AB (939)\n+215BFB Uncompressed Size     0000088D (2189)\n+215BFF Filename Length       0048 (72)\n+215C01 Extra Length          0000 (0)\n+215C03 Comment Length        0000 (0)\n+215C05 Disk Start            0000 (0)\n+215C07 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213536 Ext File Attributes   00000000 (0)\n-21353A Local Header Offset   0001216D (74093)\n-21353E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215C09 Ext File Attributes   00000000 (0)\n+215C0D Local Header Offset   00023BB1 (146353)\n+215C11 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21353E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x215C11: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21355C CENTRAL HEADER #112   02014B50 (33639248)\n-213560 Created Zip Spec      14 (20) '2.0'\n-213561 Created OS            00 (0) 'MS-DOS'\n-213562 Extract Zip Spec      14 (20) '2.0'\n-213563 Extract OS            00 (0) 'MS-DOS'\n-213564 General Purpose Flag  0808 (2056)\n+215C59 CENTRAL HEADER #112   02014B50 (33639248)\n+215C5D Created Zip Spec      14 (20) '2.0'\n+215C5E Created OS            00 (0) 'MS-DOS'\n+215C5F Extract Zip Spec      14 (20) '2.0'\n+215C60 Extract OS            00 (0) 'MS-DOS'\n+215C61 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213566 Compression Method    0008 (8) 'Deflated'\n-213568 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21356C CRC                   DB70852A (3681584426)\n-213570 Compressed Size       0000036F (879)\n-213574 Uncompressed Size     00000663 (1635)\n-213578 Filename Length       001D (29)\n-21357A Extra Length          0000 (0)\n-21357C Comment Length        0000 (0)\n-21357E Disk Start            0000 (0)\n-213580 Int File Attributes   0000 (0)\n+215C63 Compression Method    0008 (8) 'Deflated'\n+215C65 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215C69 CRC                   00000000 (0)\n+215C6D Compressed Size       00000002 (2)\n+215C71 Uncompressed Size     00000000 (0)\n+215C75 Filename Length       0029 (41)\n+215C77 Extra Length          0000 (0)\n+215C79 Comment Length        0000 (0)\n+215C7B Disk Start            0000 (0)\n+215C7D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213582 Ext File Attributes   00000000 (0)\n-213586 Local Header Offset   00012A34 (76340)\n-21358A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215C7F Ext File Attributes   00000000 (0)\n+215C83 Local Header Offset   00023FD2 (147410)\n+215C87 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21358A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x215C87: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2135A7 CENTRAL HEADER #113   02014B50 (33639248)\n-2135AB Created Zip Spec      14 (20) '2.0'\n-2135AC Created OS            00 (0) 'MS-DOS'\n-2135AD Extract Zip Spec      14 (20) '2.0'\n-2135AE Extract OS            00 (0) 'MS-DOS'\n-2135AF General Purpose Flag  0808 (2056)\n+215CB0 CENTRAL HEADER #113   02014B50 (33639248)\n+215CB4 Created Zip Spec      14 (20) '2.0'\n+215CB5 Created OS            00 (0) 'MS-DOS'\n+215CB6 Extract Zip Spec      14 (20) '2.0'\n+215CB7 Extract OS            00 (0) 'MS-DOS'\n+215CB8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2135B1 Compression Method    0008 (8) 'Deflated'\n-2135B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2135B7 CRC                   00000000 (0)\n-2135BB Compressed Size       00000002 (2)\n-2135BF Uncompressed Size     00000000 (0)\n-2135C3 Filename Length       0034 (52)\n-2135C5 Extra Length          0000 (0)\n-2135C7 Comment Length        0000 (0)\n-2135C9 Disk Start            0000 (0)\n-2135CB Int File Attributes   0000 (0)\n+215CBA Compression Method    0008 (8) 'Deflated'\n+215CBC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215CC0 CRC                   A9F13587 (2851157383)\n+215CC4 Compressed Size       00000457 (1111)\n+215CC8 Uncompressed Size     00000B7E (2942)\n+215CCC Filename Length       0044 (68)\n+215CCE Extra Length          0000 (0)\n+215CD0 Comment Length        0000 (0)\n+215CD2 Disk Start            0000 (0)\n+215CD4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2135CD Ext File Attributes   00000000 (0)\n-2135D1 Local Header Offset   00012DEE (77294)\n-2135D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215CD6 Ext File Attributes   00000000 (0)\n+215CDA Local Header Offset   0002402B (147499)\n+215CDE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2135D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x215CDE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213609 CENTRAL HEADER #114   02014B50 (33639248)\n-21360D Created Zip Spec      14 (20) '2.0'\n-21360E Created OS            00 (0) 'MS-DOS'\n-21360F Extract Zip Spec      14 (20) '2.0'\n-213610 Extract OS            00 (0) 'MS-DOS'\n-213611 General Purpose Flag  0808 (2056)\n+215D22 CENTRAL HEADER #114   02014B50 (33639248)\n+215D26 Created Zip Spec      14 (20) '2.0'\n+215D27 Created OS            00 (0) 'MS-DOS'\n+215D28 Extract Zip Spec      14 (20) '2.0'\n+215D29 Extract OS            00 (0) 'MS-DOS'\n+215D2A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213613 Compression Method    0008 (8) 'Deflated'\n-213615 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213619 CRC                   7212D526 (1913836838)\n-21361D Compressed Size       000003D0 (976)\n-213621 Uncompressed Size     00000956 (2390)\n-213625 Filename Length       003B (59)\n-213627 Extra Length          0000 (0)\n-213629 Comment Length        0000 (0)\n-21362B Disk Start            0000 (0)\n-21362D Int File Attributes   0000 (0)\n+215D2C Compression Method    0008 (8) 'Deflated'\n+215D2E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215D32 CRC                   00000000 (0)\n+215D36 Compressed Size       00000002 (2)\n+215D3A Uncompressed Size     00000000 (0)\n+215D3E Filename Length       0026 (38)\n+215D40 Extra Length          0000 (0)\n+215D42 Comment Length        0000 (0)\n+215D44 Disk Start            0000 (0)\n+215D46 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21362F Ext File Attributes   00000000 (0)\n-213633 Local Header Offset   00012E52 (77394)\n-213637 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215D48 Ext File Attributes   00000000 (0)\n+215D4C Local Header Offset   000244F4 (148724)\n+215D50 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213637: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x215D50: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213672 CENTRAL HEADER #115   02014B50 (33639248)\n-213676 Created Zip Spec      14 (20) '2.0'\n-213677 Created OS            00 (0) 'MS-DOS'\n-213678 Extract Zip Spec      14 (20) '2.0'\n-213679 Extract OS            00 (0) 'MS-DOS'\n-21367A General Purpose Flag  0808 (2056)\n+215D76 CENTRAL HEADER #115   02014B50 (33639248)\n+215D7A Created Zip Spec      14 (20) '2.0'\n+215D7B Created OS            00 (0) 'MS-DOS'\n+215D7C Extract Zip Spec      14 (20) '2.0'\n+215D7D Extract OS            00 (0) 'MS-DOS'\n+215D7E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21367C Compression Method    0008 (8) 'Deflated'\n-21367E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213682 CRC                   01E590F2 (31822066)\n-213686 Compressed Size       00000048 (72)\n-21368A Uncompressed Size     0000004A (74)\n-21368E Filename Length       0042 (66)\n-213690 Extra Length          0000 (0)\n-213692 Comment Length        0000 (0)\n-213694 Disk Start            0000 (0)\n-213696 Int File Attributes   0000 (0)\n+215D80 Compression Method    0008 (8) 'Deflated'\n+215D82 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215D86 CRC                   5AA87E5F (1520991839)\n+215D8A Compressed Size       0000048B (1163)\n+215D8E Uncompressed Size     00000BA1 (2977)\n+215D92 Filename Length       0049 (73)\n+215D94 Extra Length          0000 (0)\n+215D96 Comment Length        0000 (0)\n+215D98 Disk Start            0000 (0)\n+215D9A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213698 Ext File Attributes   00000000 (0)\n-21369C Local Header Offset   0001328B (78475)\n-2136A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215D9C Ext File Attributes   00000000 (0)\n+215DA0 Local Header Offset   0002454A (148810)\n+215DA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2136A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x215DA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2136E2 CENTRAL HEADER #116   02014B50 (33639248)\n-2136E6 Created Zip Spec      14 (20) '2.0'\n-2136E7 Created OS            00 (0) 'MS-DOS'\n-2136E8 Extract Zip Spec      14 (20) '2.0'\n-2136E9 Extract OS            00 (0) 'MS-DOS'\n-2136EA General Purpose Flag  0808 (2056)\n+215DED CENTRAL HEADER #116   02014B50 (33639248)\n+215DF1 Created Zip Spec      14 (20) '2.0'\n+215DF2 Created OS            00 (0) 'MS-DOS'\n+215DF3 Extract Zip Spec      14 (20) '2.0'\n+215DF4 Extract OS            00 (0) 'MS-DOS'\n+215DF5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2136EC Compression Method    0008 (8) 'Deflated'\n-2136EE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2136F2 CRC                   00000000 (0)\n-2136F6 Compressed Size       00000002 (2)\n-2136FA Uncompressed Size     00000000 (0)\n-2136FE Filename Length       0037 (55)\n-213700 Extra Length          0000 (0)\n-213702 Comment Length        0000 (0)\n-213704 Disk Start            0000 (0)\n-213706 Int File Attributes   0000 (0)\n+215DF7 Compression Method    0008 (8) 'Deflated'\n+215DF9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215DFD CRC                   9A04FF8D (2584018829)\n+215E01 Compressed Size       000011EA (4586)\n+215E05 Uncompressed Size     000059B4 (22964)\n+215E09 Filename Length       0044 (68)\n+215E0B Extra Length          0000 (0)\n+215E0D Comment Length        0000 (0)\n+215E0F Disk Start            0000 (0)\n+215E11 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213708 Ext File Attributes   00000000 (0)\n-21370C Local Header Offset   00013343 (78659)\n-213710 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215E13 Ext File Attributes   00000000 (0)\n+215E17 Local Header Offset   00024A4C (150092)\n+215E1B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213710: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x215E1B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213747 CENTRAL HEADER #117   02014B50 (33639248)\n-21374B Created Zip Spec      14 (20) '2.0'\n-21374C Created OS            00 (0) 'MS-DOS'\n-21374D Extract Zip Spec      14 (20) '2.0'\n-21374E Extract OS            00 (0) 'MS-DOS'\n-21374F General Purpose Flag  0808 (2056)\n+215E5F CENTRAL HEADER #117   02014B50 (33639248)\n+215E63 Created Zip Spec      14 (20) '2.0'\n+215E64 Created OS            00 (0) 'MS-DOS'\n+215E65 Extract Zip Spec      14 (20) '2.0'\n+215E66 Extract OS            00 (0) 'MS-DOS'\n+215E67 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213751 Compression Method    0008 (8) 'Deflated'\n-213753 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213757 CRC                   00E8472C (15222572)\n-21375B Compressed Size       000003BB (955)\n-21375F Uncompressed Size     00000BB5 (2997)\n-213763 Filename Length       003E (62)\n-213765 Extra Length          0000 (0)\n-213767 Comment Length        0000 (0)\n-213769 Disk Start            0000 (0)\n-21376B Int File Attributes   0000 (0)\n+215E69 Compression Method    0008 (8) 'Deflated'\n+215E6B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215E6F CRC                   7900D528 (2030097704)\n+215E73 Compressed Size       0000053B (1339)\n+215E77 Uncompressed Size     000013F8 (5112)\n+215E7B Filename Length       0040 (64)\n+215E7D Extra Length          0000 (0)\n+215E7F Comment Length        0000 (0)\n+215E81 Disk Start            0000 (0)\n+215E83 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21376D Ext File Attributes   00000000 (0)\n-213771 Local Header Offset   000133AA (78762)\n-213775 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215E85 Ext File Attributes   00000000 (0)\n+215E89 Local Header Offset   00025CA8 (154792)\n+215E8D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213775: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x215E8D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2137B3 CENTRAL HEADER #118   02014B50 (33639248)\n-2137B7 Created Zip Spec      14 (20) '2.0'\n-2137B8 Created OS            00 (0) 'MS-DOS'\n-2137B9 Extract Zip Spec      14 (20) '2.0'\n-2137BA Extract OS            00 (0) 'MS-DOS'\n-2137BB General Purpose Flag  0808 (2056)\n+215ECD CENTRAL HEADER #118   02014B50 (33639248)\n+215ED1 Created Zip Spec      14 (20) '2.0'\n+215ED2 Created OS            00 (0) 'MS-DOS'\n+215ED3 Extract Zip Spec      14 (20) '2.0'\n+215ED4 Extract OS            00 (0) 'MS-DOS'\n+215ED5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2137BD Compression Method    0008 (8) 'Deflated'\n-2137BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2137C3 CRC                   0BF987D1 (200902609)\n-2137C7 Compressed Size       0000004B (75)\n-2137CB Uncompressed Size     0000004D (77)\n-2137CF Filename Length       0045 (69)\n-2137D1 Extra Length          0000 (0)\n-2137D3 Comment Length        0000 (0)\n-2137D5 Disk Start            0000 (0)\n-2137D7 Int File Attributes   0000 (0)\n+215ED7 Compression Method    0008 (8) 'Deflated'\n+215ED9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215EDD CRC                   00000000 (0)\n+215EE1 Compressed Size       00000002 (2)\n+215EE5 Uncompressed Size     00000000 (0)\n+215EE9 Filename Length       0026 (38)\n+215EEB Extra Length          0000 (0)\n+215EED Comment Length        0000 (0)\n+215EEF Disk Start            0000 (0)\n+215EF1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2137D9 Ext File Attributes   00000000 (0)\n-2137DD Local Header Offset   000137D1 (79825)\n-2137E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215EF3 Ext File Attributes   00000000 (0)\n+215EF7 Local Header Offset   00026251 (156241)\n+215EFB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2137E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x215EFB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213826 CENTRAL HEADER #119   02014B50 (33639248)\n-21382A Created Zip Spec      14 (20) '2.0'\n-21382B Created OS            00 (0) 'MS-DOS'\n-21382C Extract Zip Spec      14 (20) '2.0'\n-21382D Extract OS            00 (0) 'MS-DOS'\n-21382E General Purpose Flag  0808 (2056)\n+215F21 CENTRAL HEADER #119   02014B50 (33639248)\n+215F25 Created Zip Spec      14 (20) '2.0'\n+215F26 Created OS            00 (0) 'MS-DOS'\n+215F27 Extract Zip Spec      14 (20) '2.0'\n+215F28 Extract OS            00 (0) 'MS-DOS'\n+215F29 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213830 Compression Method    0008 (8) 'Deflated'\n-213832 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213836 CRC                   00000000 (0)\n-21383A Compressed Size       00000002 (2)\n-21383E Uncompressed Size     00000000 (0)\n-213842 Filename Length       0039 (57)\n-213844 Extra Length          0000 (0)\n-213846 Comment Length        0000 (0)\n-213848 Disk Start            0000 (0)\n-21384A Int File Attributes   0000 (0)\n+215F2B Compression Method    0008 (8) 'Deflated'\n+215F2D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215F31 CRC                   52B569A3 (1387620771)\n+215F35 Compressed Size       000004D7 (1239)\n+215F39 Uncompressed Size     00000DAF (3503)\n+215F3D Filename Length       0042 (66)\n+215F3F Extra Length          0000 (0)\n+215F41 Comment Length        0000 (0)\n+215F43 Disk Start            0000 (0)\n+215F45 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21384C Ext File Attributes   00000000 (0)\n-213850 Local Header Offset   0001388F (80015)\n-213854 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215F47 Ext File Attributes   00000000 (0)\n+215F4B Local Header Offset   000262A7 (156327)\n+215F4F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213854: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x215F4F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21388D CENTRAL HEADER #120   02014B50 (33639248)\n-213891 Created Zip Spec      14 (20) '2.0'\n-213892 Created OS            00 (0) 'MS-DOS'\n-213893 Extract Zip Spec      14 (20) '2.0'\n-213894 Extract OS            00 (0) 'MS-DOS'\n-213895 General Purpose Flag  0808 (2056)\n+215F91 CENTRAL HEADER #120   02014B50 (33639248)\n+215F95 Created Zip Spec      14 (20) '2.0'\n+215F96 Created OS            00 (0) 'MS-DOS'\n+215F97 Extract Zip Spec      14 (20) '2.0'\n+215F98 Extract OS            00 (0) 'MS-DOS'\n+215F99 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213897 Compression Method    0008 (8) 'Deflated'\n-213899 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21389D CRC                   78AA4678 (2024425080)\n-2138A1 Compressed Size       00000364 (868)\n-2138A5 Uncompressed Size     000007CF (1999)\n-2138A9 Filename Length       0040 (64)\n-2138AB Extra Length          0000 (0)\n-2138AD Comment Length        0000 (0)\n-2138AF Disk Start            0000 (0)\n-2138B1 Int File Attributes   0000 (0)\n+215F9B Compression Method    0008 (8) 'Deflated'\n+215F9D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+215FA1 CRC                   37F5F927 (938866983)\n+215FA5 Compressed Size       00000545 (1349)\n+215FA9 Uncompressed Size     00000ED0 (3792)\n+215FAD Filename Length       003E (62)\n+215FAF Extra Length          0000 (0)\n+215FB1 Comment Length        0000 (0)\n+215FB3 Disk Start            0000 (0)\n+215FB5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2138B3 Ext File Attributes   00000000 (0)\n-2138B7 Local Header Offset   000138F8 (80120)\n-2138BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+215FB7 Ext File Attributes   00000000 (0)\n+215FBB Local Header Offset   000267EE (157678)\n+215FBF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2138BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x215FBF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2138FB CENTRAL HEADER #121   02014B50 (33639248)\n-2138FF Created Zip Spec      14 (20) '2.0'\n-213900 Created OS            00 (0) 'MS-DOS'\n-213901 Extract Zip Spec      14 (20) '2.0'\n-213902 Extract OS            00 (0) 'MS-DOS'\n-213903 General Purpose Flag  0808 (2056)\n+215FFD CENTRAL HEADER #121   02014B50 (33639248)\n+216001 Created Zip Spec      14 (20) '2.0'\n+216002 Created OS            00 (0) 'MS-DOS'\n+216003 Extract Zip Spec      14 (20) '2.0'\n+216004 Extract OS            00 (0) 'MS-DOS'\n+216005 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213905 Compression Method    0008 (8) 'Deflated'\n-213907 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21390B CRC                   30B775F3 (817329651)\n-21390F Compressed Size       0000004D (77)\n-213913 Uncompressed Size     0000004F (79)\n-213917 Filename Length       0047 (71)\n-213919 Extra Length          0000 (0)\n-21391B Comment Length        0000 (0)\n-21391D Disk Start            0000 (0)\n-21391F Int File Attributes   0000 (0)\n+216007 Compression Method    0008 (8) 'Deflated'\n+216009 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21600D CRC                   00000000 (0)\n+216011 Compressed Size       00000002 (2)\n+216015 Uncompressed Size     00000000 (0)\n+216019 Filename Length       0024 (36)\n+21601B Extra Length          0000 (0)\n+21601D Comment Length        0000 (0)\n+21601F Disk Start            0000 (0)\n+216021 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213921 Ext File Attributes   00000000 (0)\n-213925 Local Header Offset   00013CCA (81098)\n-213929 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216023 Ext File Attributes   00000000 (0)\n+216027 Local Header Offset   00026D9F (159135)\n+21602B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213929: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21602B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213970 CENTRAL HEADER #122   02014B50 (33639248)\n-213974 Created Zip Spec      14 (20) '2.0'\n-213975 Created OS            00 (0) 'MS-DOS'\n-213976 Extract Zip Spec      14 (20) '2.0'\n-213977 Extract OS            00 (0) 'MS-DOS'\n-213978 General Purpose Flag  0808 (2056)\n+21604F CENTRAL HEADER #122   02014B50 (33639248)\n+216053 Created Zip Spec      14 (20) '2.0'\n+216054 Created OS            00 (0) 'MS-DOS'\n+216055 Extract Zip Spec      14 (20) '2.0'\n+216056 Extract OS            00 (0) 'MS-DOS'\n+216057 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21397A Compression Method    0008 (8) 'Deflated'\n-21397C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213980 CRC                   00000000 (0)\n-213984 Compressed Size       00000002 (2)\n-213988 Uncompressed Size     00000000 (0)\n-21398C Filename Length       0039 (57)\n-21398E Extra Length          0000 (0)\n-213990 Comment Length        0000 (0)\n-213992 Disk Start            0000 (0)\n-213994 Int File Attributes   0000 (0)\n+216059 Compression Method    0008 (8) 'Deflated'\n+21605B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21605F CRC                   B0C01FD3 (2965381075)\n+216063 Compressed Size       0000067B (1659)\n+216067 Uncompressed Size     00001958 (6488)\n+21606B Filename Length       003D (61)\n+21606D Extra Length          0000 (0)\n+21606F Comment Length        0000 (0)\n+216071 Disk Start            0000 (0)\n+216073 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213996 Ext File Attributes   00000000 (0)\n-21399A Local Header Offset   00013D8C (81292)\n-21399E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216075 Ext File Attributes   00000000 (0)\n+216079 Local Header Offset   00026DF3 (159219)\n+21607D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21399E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21607D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2139D7 CENTRAL HEADER #123   02014B50 (33639248)\n-2139DB Created Zip Spec      14 (20) '2.0'\n-2139DC Created OS            00 (0) 'MS-DOS'\n-2139DD Extract Zip Spec      14 (20) '2.0'\n-2139DE Extract OS            00 (0) 'MS-DOS'\n-2139DF General Purpose Flag  0808 (2056)\n+2160BA CENTRAL HEADER #123   02014B50 (33639248)\n+2160BE Created Zip Spec      14 (20) '2.0'\n+2160BF Created OS            00 (0) 'MS-DOS'\n+2160C0 Extract Zip Spec      14 (20) '2.0'\n+2160C1 Extract OS            00 (0) 'MS-DOS'\n+2160C2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2139E1 Compression Method    0008 (8) 'Deflated'\n-2139E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2139E7 CRC                   4C2A7690 (1277851280)\n-2139EB Compressed Size       00000399 (921)\n-2139EF Uncompressed Size     000009AC (2476)\n-2139F3 Filename Length       0040 (64)\n-2139F5 Extra Length          0000 (0)\n-2139F7 Comment Length        0000 (0)\n-2139F9 Disk Start            0000 (0)\n-2139FB Int File Attributes   0000 (0)\n+2160C4 Compression Method    0008 (8) 'Deflated'\n+2160C6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2160CA CRC                   BBC3A492 (3150161042)\n+2160CE Compressed Size       0000074D (1869)\n+2160D2 Uncompressed Size     00001D2A (7466)\n+2160D6 Filename Length       0037 (55)\n+2160D8 Extra Length          0000 (0)\n+2160DA Comment Length        0000 (0)\n+2160DC Disk Start            0000 (0)\n+2160DE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2139FD Ext File Attributes   00000000 (0)\n-213A01 Local Header Offset   00013DF5 (81397)\n-213A05 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2160E0 Ext File Attributes   00000000 (0)\n+2160E4 Local Header Offset   000274D9 (160985)\n+2160E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213A05: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2160E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213A45 CENTRAL HEADER #124   02014B50 (33639248)\n-213A49 Created Zip Spec      14 (20) '2.0'\n-213A4A Created OS            00 (0) 'MS-DOS'\n-213A4B Extract Zip Spec      14 (20) '2.0'\n-213A4C Extract OS            00 (0) 'MS-DOS'\n-213A4D General Purpose Flag  0808 (2056)\n+21611F CENTRAL HEADER #124   02014B50 (33639248)\n+216123 Created Zip Spec      14 (20) '2.0'\n+216124 Created OS            00 (0) 'MS-DOS'\n+216125 Extract Zip Spec      14 (20) '2.0'\n+216126 Extract OS            00 (0) 'MS-DOS'\n+216127 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213A4F Compression Method    0008 (8) 'Deflated'\n-213A51 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213A55 CRC                   68C29EEA (1757585130)\n-213A59 Compressed Size       0000004D (77)\n-213A5D Uncompressed Size     0000004F (79)\n-213A61 Filename Length       0047 (71)\n-213A63 Extra Length          0000 (0)\n-213A65 Comment Length        0000 (0)\n-213A67 Disk Start            0000 (0)\n-213A69 Int File Attributes   0000 (0)\n+216129 Compression Method    0008 (8) 'Deflated'\n+21612B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21612F CRC                   00000000 (0)\n+216133 Compressed Size       00000002 (2)\n+216137 Uncompressed Size     00000000 (0)\n+21613B Filename Length       0010 (16)\n+21613D Extra Length          0000 (0)\n+21613F Comment Length        0000 (0)\n+216141 Disk Start            0000 (0)\n+216143 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213A6B Ext File Attributes   00000000 (0)\n-213A6F Local Header Offset   000141FC (82428)\n-213A73 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216145 Ext File Attributes   00000000 (0)\n+216149 Local Header Offset   00027C8B (162955)\n+21614D Filename              'XXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213A73: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21614D: Filename 'XXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213ABA CENTRAL HEADER #125   02014B50 (33639248)\n-213ABE Created Zip Spec      14 (20) '2.0'\n-213ABF Created OS            00 (0) 'MS-DOS'\n-213AC0 Extract Zip Spec      14 (20) '2.0'\n-213AC1 Extract OS            00 (0) 'MS-DOS'\n-213AC2 General Purpose Flag  0808 (2056)\n+21615D CENTRAL HEADER #125   02014B50 (33639248)\n+216161 Created Zip Spec      14 (20) '2.0'\n+216162 Created OS            00 (0) 'MS-DOS'\n+216163 Extract Zip Spec      14 (20) '2.0'\n+216164 Extract OS            00 (0) 'MS-DOS'\n+216165 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213AC4 Compression Method    0008 (8) 'Deflated'\n-213AC6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213ACA CRC                   00000000 (0)\n-213ACE Compressed Size       00000002 (2)\n-213AD2 Uncompressed Size     00000000 (0)\n-213AD6 Filename Length       0039 (57)\n-213AD8 Extra Length          0000 (0)\n-213ADA Comment Length        0000 (0)\n-213ADC Disk Start            0000 (0)\n-213ADE Int File Attributes   0000 (0)\n+216167 Compression Method    0008 (8) 'Deflated'\n+216169 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21616D CRC                   91F75F87 (2448908167)\n+216171 Compressed Size       000015AD (5549)\n+216175 Uncompressed Size     00013DD1 (81361)\n+216179 Filename Length       0019 (25)\n+21617B Extra Length          0000 (0)\n+21617D Comment Length        0000 (0)\n+21617F Disk Start            0000 (0)\n+216181 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213AE0 Ext File Attributes   00000000 (0)\n-213AE4 Local Header Offset   000142BE (82622)\n-213AE8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216183 Ext File Attributes   00000000 (0)\n+216187 Local Header Offset   00027CCB (163019)\n+21618B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213AE8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21618B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213B21 CENTRAL HEADER #126   02014B50 (33639248)\n-213B25 Created Zip Spec      14 (20) '2.0'\n-213B26 Created OS            00 (0) 'MS-DOS'\n-213B27 Extract Zip Spec      14 (20) '2.0'\n-213B28 Extract OS            00 (0) 'MS-DOS'\n-213B29 General Purpose Flag  0808 (2056)\n+2161A4 CENTRAL HEADER #126   02014B50 (33639248)\n+2161A8 Created Zip Spec      14 (20) '2.0'\n+2161A9 Created OS            00 (0) 'MS-DOS'\n+2161AA Extract Zip Spec      14 (20) '2.0'\n+2161AB Extract OS            00 (0) 'MS-DOS'\n+2161AC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213B2B Compression Method    0008 (8) 'Deflated'\n-213B2D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213B31 CRC                   7BEDD7A7 (2079184807)\n-213B35 Compressed Size       000003A1 (929)\n-213B39 Uncompressed Size     00000A18 (2584)\n-213B3D Filename Length       0040 (64)\n-213B3F Extra Length          0000 (0)\n-213B41 Comment Length        0000 (0)\n-213B43 Disk Start            0000 (0)\n-213B45 Int File Attributes   0000 (0)\n+2161AE Compression Method    0008 (8) 'Deflated'\n+2161B0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2161B4 CRC                   A63E32BF (2789094079)\n+2161B8 Compressed Size       0000004F (79)\n+2161BC Uncompressed Size     0000005B (91)\n+2161C0 Filename Length       0059 (89)\n+2161C2 Extra Length          0000 (0)\n+2161C4 Comment Length        0000 (0)\n+2161C6 Disk Start            0000 (0)\n+2161C8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213B47 Ext File Attributes   00000000 (0)\n-213B4B Local Header Offset   00014327 (82727)\n-213B4F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2161CA Ext File Attributes   00000000 (0)\n+2161CE Local Header Offset   000292BF (168639)\n+2161D2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213B4F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2161D2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213B8F CENTRAL HEADER #127   02014B50 (33639248)\n-213B93 Created Zip Spec      14 (20) '2.0'\n-213B94 Created OS            00 (0) 'MS-DOS'\n-213B95 Extract Zip Spec      14 (20) '2.0'\n-213B96 Extract OS            00 (0) 'MS-DOS'\n-213B97 General Purpose Flag  0808 (2056)\n+21622B CENTRAL HEADER #127   02014B50 (33639248)\n+21622F Created Zip Spec      14 (20) '2.0'\n+216230 Created OS            00 (0) 'MS-DOS'\n+216231 Extract Zip Spec      14 (20) '2.0'\n+216232 Extract OS            00 (0) 'MS-DOS'\n+216233 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213B99 Compression Method    0008 (8) 'Deflated'\n-213B9B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213B9F CRC                   795A1135 (2035945781)\n-213BA3 Compressed Size       0000004D (77)\n-213BA7 Uncompressed Size     0000004F (79)\n-213BAB Filename Length       0047 (71)\n-213BAD Extra Length          0000 (0)\n-213BAF Comment Length        0000 (0)\n-213BB1 Disk Start            0000 (0)\n-213BB3 Int File Attributes   0000 (0)\n+216235 Compression Method    0008 (8) 'Deflated'\n+216237 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21623B CRC                   DDC8B9B8 (3720919480)\n+21623F Compressed Size       0000161F (5663)\n+216243 Uncompressed Size     00014461 (83041)\n+216247 Filename Length       0012 (18)\n+216249 Extra Length          0000 (0)\n+21624B Comment Length        0000 (0)\n+21624D Disk Start            0000 (0)\n+21624F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213BB5 Ext File Attributes   00000000 (0)\n-213BB9 Local Header Offset   00014736 (83766)\n-213BBD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216251 Ext File Attributes   00000000 (0)\n+216255 Local Header Offset   00029395 (168853)\n+216259 Filename              'XXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213BBD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216259: Filename 'XXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213C04 CENTRAL HEADER #128   02014B50 (33639248)\n-213C08 Created Zip Spec      14 (20) '2.0'\n-213C09 Created OS            00 (0) 'MS-DOS'\n-213C0A Extract Zip Spec      14 (20) '2.0'\n-213C0B Extract OS            00 (0) 'MS-DOS'\n-213C0C General Purpose Flag  0808 (2056)\n+21626B CENTRAL HEADER #128   02014B50 (33639248)\n+21626F Created Zip Spec      14 (20) '2.0'\n+216270 Created OS            00 (0) 'MS-DOS'\n+216271 Extract Zip Spec      14 (20) '2.0'\n+216272 Extract OS            00 (0) 'MS-DOS'\n+216273 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213C0E Compression Method    0008 (8) 'Deflated'\n-213C10 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213C14 CRC                   00000000 (0)\n-213C18 Compressed Size       00000002 (2)\n-213C1C Uncompressed Size     00000000 (0)\n-213C20 Filename Length       0035 (53)\n-213C22 Extra Length          0000 (0)\n-213C24 Comment Length        0000 (0)\n-213C26 Disk Start            0000 (0)\n-213C28 Int File Attributes   0000 (0)\n+216275 Compression Method    0008 (8) 'Deflated'\n+216277 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21627B CRC                   6642E973 (1715661171)\n+21627F Compressed Size       00000065 (101)\n+216283 Uncompressed Size     000000C8 (200)\n+216287 Filename Length       0018 (24)\n+216289 Extra Length          0000 (0)\n+21628B Comment Length        0000 (0)\n+21628D Disk Start            0000 (0)\n+21628F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213C2A Ext File Attributes   00000000 (0)\n-213C2E Local Header Offset   000147F8 (83960)\n-213C32 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216291 Ext File Attributes   00000000 (0)\n+216295 Local Header Offset   0002A9F4 (174580)\n+216299 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213C32: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216299: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213C67 CENTRAL HEADER #129   02014B50 (33639248)\n-213C6B Created Zip Spec      14 (20) '2.0'\n-213C6C Created OS            00 (0) 'MS-DOS'\n-213C6D Extract Zip Spec      14 (20) '2.0'\n-213C6E Extract OS            00 (0) 'MS-DOS'\n-213C6F General Purpose Flag  0808 (2056)\n+2162B1 CENTRAL HEADER #129   02014B50 (33639248)\n+2162B5 Created Zip Spec      14 (20) '2.0'\n+2162B6 Created OS            00 (0) 'MS-DOS'\n+2162B7 Extract Zip Spec      14 (20) '2.0'\n+2162B8 Extract OS            00 (0) 'MS-DOS'\n+2162B9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213C71 Compression Method    0008 (8) 'Deflated'\n-213C73 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213C77 CRC                   6FB1D315 (1873924885)\n-213C7B Compressed Size       000003B5 (949)\n-213C7F Uncompressed Size     00000A29 (2601)\n-213C83 Filename Length       003C (60)\n-213C85 Extra Length          0000 (0)\n-213C87 Comment Length        0000 (0)\n-213C89 Disk Start            0000 (0)\n-213C8B Int File Attributes   0000 (0)\n+2162BB Compression Method    0008 (8) 'Deflated'\n+2162BD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2162C1 CRC                   03B2110A (62001418)\n+2162C5 Compressed Size       00000053 (83)\n+2162C9 Uncompressed Size     00000091 (145)\n+2162CD Filename Length       0017 (23)\n+2162CF Extra Length          0000 (0)\n+2162D1 Comment Length        0000 (0)\n+2162D3 Disk Start            0000 (0)\n+2162D5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213C8D Ext File Attributes   00000000 (0)\n-213C91 Local Header Offset   0001485D (84061)\n-213C95 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2162D7 Ext File Attributes   00000000 (0)\n+2162DB Local Header Offset   0002AA9F (174751)\n+2162DF Filename              'XXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213C95: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2162DF: Filename 'XXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213CD1 CENTRAL HEADER #130   02014B50 (33639248)\n-213CD5 Created Zip Spec      14 (20) '2.0'\n-213CD6 Created OS            00 (0) 'MS-DOS'\n-213CD7 Extract Zip Spec      14 (20) '2.0'\n-213CD8 Extract OS            00 (0) 'MS-DOS'\n-213CD9 General Purpose Flag  0808 (2056)\n+2162F6 CENTRAL HEADER #130   02014B50 (33639248)\n+2162FA Created Zip Spec      14 (20) '2.0'\n+2162FB Created OS            00 (0) 'MS-DOS'\n+2162FC Extract Zip Spec      14 (20) '2.0'\n+2162FD Extract OS            00 (0) 'MS-DOS'\n+2162FE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213CDB Compression Method    0008 (8) 'Deflated'\n-213CDD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213CE1 CRC                   3B7D75EA (998077930)\n-213CE5 Compressed Size       00000047 (71)\n-213CE9 Uncompressed Size     0000004B (75)\n-213CED Filename Length       0043 (67)\n-213CEF Extra Length          0000 (0)\n-213CF1 Comment Length        0000 (0)\n-213CF3 Disk Start            0000 (0)\n-213CF5 Int File Attributes   0000 (0)\n+216300 Compression Method    0008 (8) 'Deflated'\n+216302 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216306 CRC                   00000000 (0)\n+21630A Compressed Size       00000002 (2)\n+21630E Uncompressed Size     00000000 (0)\n+216312 Filename Length       0034 (52)\n+216314 Extra Length          0000 (0)\n+216316 Comment Length        0000 (0)\n+216318 Disk Start            0000 (0)\n+21631A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213CF7 Ext File Attributes   00000000 (0)\n-213CFB Local Header Offset   00014C7C (85116)\n-213CFF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21631C Ext File Attributes   00000000 (0)\n+216320 Local Header Offset   0002AB37 (174903)\n+216324 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213CFF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216324: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213D42 CENTRAL HEADER #131   02014B50 (33639248)\n-213D46 Created Zip Spec      14 (20) '2.0'\n-213D47 Created OS            00 (0) 'MS-DOS'\n-213D48 Extract Zip Spec      14 (20) '2.0'\n-213D49 Extract OS            00 (0) 'MS-DOS'\n-213D4A General Purpose Flag  0808 (2056)\n+216358 CENTRAL HEADER #131   02014B50 (33639248)\n+21635C Created Zip Spec      14 (20) '2.0'\n+21635D Created OS            00 (0) 'MS-DOS'\n+21635E Extract Zip Spec      14 (20) '2.0'\n+21635F Extract OS            00 (0) 'MS-DOS'\n+216360 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213D4C Compression Method    0008 (8) 'Deflated'\n-213D4E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213D52 CRC                   00000000 (0)\n-213D56 Compressed Size       00000002 (2)\n-213D5A Uncompressed Size     00000000 (0)\n-213D5E Filename Length       0036 (54)\n-213D60 Extra Length          0000 (0)\n-213D62 Comment Length        0000 (0)\n-213D64 Disk Start            0000 (0)\n-213D66 Int File Attributes   0000 (0)\n+216362 Compression Method    0008 (8) 'Deflated'\n+216364 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216368 CRC                   DBB26296 (3685900950)\n+21636C Compressed Size       000004FA (1274)\n+216370 Uncompressed Size     00001859 (6233)\n+216374 Filename Length       003B (59)\n+216376 Extra Length          0000 (0)\n+216378 Comment Length        0000 (0)\n+21637A Disk Start            0000 (0)\n+21637C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213D68 Ext File Attributes   00000000 (0)\n-213D6C Local Header Offset   00014D34 (85300)\n-213D70 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21637E Ext File Attributes   00000000 (0)\n+216382 Local Header Offset   0002AB9B (175003)\n+216386 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213D70: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216386: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213DA6 CENTRAL HEADER #132   02014B50 (33639248)\n-213DAA Created Zip Spec      14 (20) '2.0'\n-213DAB Created OS            00 (0) 'MS-DOS'\n-213DAC Extract Zip Spec      14 (20) '2.0'\n-213DAD Extract OS            00 (0) 'MS-DOS'\n-213DAE General Purpose Flag  0808 (2056)\n+2163C1 CENTRAL HEADER #132   02014B50 (33639248)\n+2163C5 Created Zip Spec      14 (20) '2.0'\n+2163C6 Created OS            00 (0) 'MS-DOS'\n+2163C7 Extract Zip Spec      14 (20) '2.0'\n+2163C8 Extract OS            00 (0) 'MS-DOS'\n+2163C9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213DB0 Compression Method    0008 (8) 'Deflated'\n-213DB2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213DB6 CRC                   178839D9 (394803673)\n-213DBA Compressed Size       000003B9 (953)\n-213DBE Uncompressed Size     00000992 (2450)\n-213DC2 Filename Length       003D (61)\n-213DC4 Extra Length          0000 (0)\n-213DC6 Comment Length        0000 (0)\n-213DC8 Disk Start            0000 (0)\n-213DCA Int File Attributes   0000 (0)\n+2163CB Compression Method    0008 (8) 'Deflated'\n+2163CD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2163D1 CRC                   833E63EB (2201904107)\n+2163D5 Compressed Size       00000048 (72)\n+2163D9 Uncompressed Size     0000004A (74)\n+2163DD Filename Length       0042 (66)\n+2163DF Extra Length          0000 (0)\n+2163E1 Comment Length        0000 (0)\n+2163E3 Disk Start            0000 (0)\n+2163E5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213DCC Ext File Attributes   00000000 (0)\n-213DD0 Local Header Offset   00014D9A (85402)\n-213DD4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2163E7 Ext File Attributes   00000000 (0)\n+2163EB Local Header Offset   0002B0FE (176382)\n+2163EF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213DD4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2163EF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213E11 CENTRAL HEADER #133   02014B50 (33639248)\n-213E15 Created Zip Spec      14 (20) '2.0'\n-213E16 Created OS            00 (0) 'MS-DOS'\n-213E17 Extract Zip Spec      14 (20) '2.0'\n-213E18 Extract OS            00 (0) 'MS-DOS'\n-213E19 General Purpose Flag  0808 (2056)\n+216431 CENTRAL HEADER #133   02014B50 (33639248)\n+216435 Created Zip Spec      14 (20) '2.0'\n+216436 Created OS            00 (0) 'MS-DOS'\n+216437 Extract Zip Spec      14 (20) '2.0'\n+216438 Extract OS            00 (0) 'MS-DOS'\n+216439 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213E1B Compression Method    0008 (8) 'Deflated'\n-213E1D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213E21 CRC                   153432AD (355742381)\n-213E25 Compressed Size       0000004A (74)\n-213E29 Uncompressed Size     0000004C (76)\n-213E2D Filename Length       0044 (68)\n-213E2F Extra Length          0000 (0)\n-213E31 Comment Length        0000 (0)\n-213E33 Disk Start            0000 (0)\n-213E35 Int File Attributes   0000 (0)\n+21643B Compression Method    0008 (8) 'Deflated'\n+21643D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216441 CRC                   00000000 (0)\n+216445 Compressed Size       00000002 (2)\n+216449 Uncompressed Size     00000000 (0)\n+21644D Filename Length       0015 (21)\n+21644F Extra Length          0000 (0)\n+216451 Comment Length        0000 (0)\n+216453 Disk Start            0000 (0)\n+216455 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213E37 Ext File Attributes   00000000 (0)\n-213E3B Local Header Offset   000151BE (86462)\n-213E3F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216457 Ext File Attributes   00000000 (0)\n+21645B Local Header Offset   0002B1B6 (176566)\n+21645F Filename              'XXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213E3F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21645F: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213E83 CENTRAL HEADER #134   02014B50 (33639248)\n-213E87 Created Zip Spec      14 (20) '2.0'\n-213E88 Created OS            00 (0) 'MS-DOS'\n-213E89 Extract Zip Spec      14 (20) '2.0'\n-213E8A Extract OS            00 (0) 'MS-DOS'\n-213E8B General Purpose Flag  0808 (2056)\n+216474 CENTRAL HEADER #134   02014B50 (33639248)\n+216478 Created Zip Spec      14 (20) '2.0'\n+216479 Created OS            00 (0) 'MS-DOS'\n+21647A Extract Zip Spec      14 (20) '2.0'\n+21647B Extract OS            00 (0) 'MS-DOS'\n+21647C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213E8D Compression Method    0008 (8) 'Deflated'\n-213E8F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213E93 CRC                   00000000 (0)\n-213E97 Compressed Size       00000002 (2)\n-213E9B Uncompressed Size     00000000 (0)\n-213E9F Filename Length       0035 (53)\n-213EA1 Extra Length          0000 (0)\n-213EA3 Comment Length        0000 (0)\n-213EA5 Disk Start            0000 (0)\n-213EA7 Int File Attributes   0000 (0)\n+21647E Compression Method    0008 (8) 'Deflated'\n+216480 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216484 CRC                   00000000 (0)\n+216488 Compressed Size       00000002 (2)\n+21648C Uncompressed Size     00000000 (0)\n+216490 Filename Length       001D (29)\n+216492 Extra Length          0000 (0)\n+216494 Comment Length        0000 (0)\n+216496 Disk Start            0000 (0)\n+216498 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213EA9 Ext File Attributes   00000000 (0)\n-213EAD Local Header Offset   0001527A (86650)\n-213EB1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21649A Ext File Attributes   00000000 (0)\n+21649E Local Header Offset   0002B1FB (176635)\n+2164A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213EB1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2164A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213EE6 CENTRAL HEADER #135   02014B50 (33639248)\n-213EEA Created Zip Spec      14 (20) '2.0'\n-213EEB Created OS            00 (0) 'MS-DOS'\n-213EEC Extract Zip Spec      14 (20) '2.0'\n-213EED Extract OS            00 (0) 'MS-DOS'\n-213EEE General Purpose Flag  0808 (2056)\n+2164BF CENTRAL HEADER #135   02014B50 (33639248)\n+2164C3 Created Zip Spec      14 (20) '2.0'\n+2164C4 Created OS            00 (0) 'MS-DOS'\n+2164C5 Extract Zip Spec      14 (20) '2.0'\n+2164C6 Extract OS            00 (0) 'MS-DOS'\n+2164C7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213EF0 Compression Method    0008 (8) 'Deflated'\n-213EF2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213EF6 CRC                   8F421884 (2403473540)\n-213EFA Compressed Size       0000035D (861)\n-213EFE Uncompressed Size     000008FC (2300)\n-213F02 Filename Length       003C (60)\n-213F04 Extra Length          0000 (0)\n-213F06 Comment Length        0000 (0)\n-213F08 Disk Start            0000 (0)\n-213F0A Int File Attributes   0000 (0)\n+2164C9 Compression Method    0008 (8) 'Deflated'\n+2164CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2164CF CRC                   C25375A4 (3260249508)\n+2164D3 Compressed Size       00000319 (793)\n+2164D7 Uncompressed Size     0000061B (1563)\n+2164DB Filename Length       0038 (56)\n+2164DD Extra Length          0000 (0)\n+2164DF Comment Length        0000 (0)\n+2164E1 Disk Start            0000 (0)\n+2164E3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213F0C Ext File Attributes   00000000 (0)\n-213F10 Local Header Offset   000152DF (86751)\n-213F14 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2164E5 Ext File Attributes   00000000 (0)\n+2164E9 Local Header Offset   0002B248 (176712)\n+2164ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213F14: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2164ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213F50 CENTRAL HEADER #136   02014B50 (33639248)\n-213F54 Created Zip Spec      14 (20) '2.0'\n-213F55 Created OS            00 (0) 'MS-DOS'\n-213F56 Extract Zip Spec      14 (20) '2.0'\n-213F57 Extract OS            00 (0) 'MS-DOS'\n-213F58 General Purpose Flag  0808 (2056)\n+216525 CENTRAL HEADER #136   02014B50 (33639248)\n+216529 Created Zip Spec      14 (20) '2.0'\n+21652A Created OS            00 (0) 'MS-DOS'\n+21652B Extract Zip Spec      14 (20) '2.0'\n+21652C Extract OS            00 (0) 'MS-DOS'\n+21652D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213F5A Compression Method    0008 (8) 'Deflated'\n-213F5C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213F60 CRC                   D8F9DD34 (3640253748)\n-213F64 Compressed Size       00000049 (73)\n-213F68 Uncompressed Size     0000004B (75)\n-213F6C Filename Length       0043 (67)\n-213F6E Extra Length          0000 (0)\n-213F70 Comment Length        0000 (0)\n-213F72 Disk Start            0000 (0)\n-213F74 Int File Attributes   0000 (0)\n+21652F Compression Method    0008 (8) 'Deflated'\n+216531 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216535 CRC                   27965EEA (664166122)\n+216539 Compressed Size       00000394 (916)\n+21653D Uncompressed Size     00000824 (2084)\n+216541 Filename Length       0029 (41)\n+216543 Extra Length          0000 (0)\n+216545 Comment Length        0000 (0)\n+216547 Disk Start            0000 (0)\n+216549 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213F76 Ext File Attributes   00000000 (0)\n-213F7A Local Header Offset   000156A6 (87718)\n-213F7E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21654B Ext File Attributes   00000000 (0)\n+21654F Local Header Offset   0002B5C7 (177607)\n+216553 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213F7E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216553: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-213FC1 CENTRAL HEADER #137   02014B50 (33639248)\n-213FC5 Created Zip Spec      14 (20) '2.0'\n-213FC6 Created OS            00 (0) 'MS-DOS'\n-213FC7 Extract Zip Spec      14 (20) '2.0'\n-213FC8 Extract OS            00 (0) 'MS-DOS'\n-213FC9 General Purpose Flag  0808 (2056)\n+21657C CENTRAL HEADER #137   02014B50 (33639248)\n+216580 Created Zip Spec      14 (20) '2.0'\n+216581 Created OS            00 (0) 'MS-DOS'\n+216582 Extract Zip Spec      14 (20) '2.0'\n+216583 Extract OS            00 (0) 'MS-DOS'\n+216584 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-213FCB Compression Method    0008 (8) 'Deflated'\n-213FCD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-213FD1 CRC                   00000000 (0)\n-213FD5 Compressed Size       00000002 (2)\n-213FD9 Uncompressed Size     00000000 (0)\n-213FDD Filename Length       0036 (54)\n-213FDF Extra Length          0000 (0)\n-213FE1 Comment Length        0000 (0)\n-213FE3 Disk Start            0000 (0)\n-213FE5 Int File Attributes   0000 (0)\n+216586 Compression Method    0008 (8) 'Deflated'\n+216588 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21658C CRC                   5EECCC48 (1592577096)\n+216590 Compressed Size       00000377 (887)\n+216594 Uncompressed Size     000006F2 (1778)\n+216598 Filename Length       0030 (48)\n+21659A Extra Length          0000 (0)\n+21659C Comment Length        0000 (0)\n+21659E Disk Start            0000 (0)\n+2165A0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-213FE7 Ext File Attributes   00000000 (0)\n-213FEB Local Header Offset   00015760 (87904)\n-213FEF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2165A2 Ext File Attributes   00000000 (0)\n+2165A6 Local Header Offset   0002B9B2 (178610)\n+2165AA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x213FEF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2165AA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214025 CENTRAL HEADER #138   02014B50 (33639248)\n-214029 Created Zip Spec      14 (20) '2.0'\n-21402A Created OS            00 (0) 'MS-DOS'\n-21402B Extract Zip Spec      14 (20) '2.0'\n-21402C Extract OS            00 (0) 'MS-DOS'\n-21402D General Purpose Flag  0808 (2056)\n+2165DA CENTRAL HEADER #138   02014B50 (33639248)\n+2165DE Created Zip Spec      14 (20) '2.0'\n+2165DF Created OS            00 (0) 'MS-DOS'\n+2165E0 Extract Zip Spec      14 (20) '2.0'\n+2165E1 Extract OS            00 (0) 'MS-DOS'\n+2165E2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21402F Compression Method    0008 (8) 'Deflated'\n-214031 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214035 CRC                   06F60447 (116786247)\n-214039 Compressed Size       000003F9 (1017)\n-21403D Uncompressed Size     00000BC5 (3013)\n-214041 Filename Length       003D (61)\n-214043 Extra Length          0000 (0)\n-214045 Comment Length        0000 (0)\n-214047 Disk Start            0000 (0)\n-214049 Int File Attributes   0000 (0)\n+2165E4 Compression Method    0008 (8) 'Deflated'\n+2165E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2165EA CRC                   665C4504 (1717323012)\n+2165EE Compressed Size       0000067E (1662)\n+2165F2 Uncompressed Size     00001123 (4387)\n+2165F6 Filename Length       002E (46)\n+2165F8 Extra Length          0000 (0)\n+2165FA Comment Length        0000 (0)\n+2165FC Disk Start            0000 (0)\n+2165FE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21404B Ext File Attributes   00000000 (0)\n-21404F Local Header Offset   000157C6 (88006)\n-214053 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216600 Ext File Attributes   00000000 (0)\n+216604 Local Header Offset   0002BD87 (179591)\n+216608 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214053: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216608: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214090 CENTRAL HEADER #139   02014B50 (33639248)\n-214094 Created Zip Spec      14 (20) '2.0'\n-214095 Created OS            00 (0) 'MS-DOS'\n-214096 Extract Zip Spec      14 (20) '2.0'\n-214097 Extract OS            00 (0) 'MS-DOS'\n-214098 General Purpose Flag  0808 (2056)\n+216636 CENTRAL HEADER #139   02014B50 (33639248)\n+21663A Created Zip Spec      14 (20) '2.0'\n+21663B Created OS            00 (0) 'MS-DOS'\n+21663C Extract Zip Spec      14 (20) '2.0'\n+21663D Extract OS            00 (0) 'MS-DOS'\n+21663E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21409A Compression Method    0008 (8) 'Deflated'\n-21409C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2140A0 CRC                   39E2F889 (971176073)\n-2140A4 Compressed Size       0000004A (74)\n-2140A8 Uncompressed Size     0000004C (76)\n-2140AC Filename Length       0044 (68)\n-2140AE Extra Length          0000 (0)\n-2140B0 Comment Length        0000 (0)\n-2140B2 Disk Start            0000 (0)\n-2140B4 Int File Attributes   0000 (0)\n+216640 Compression Method    0008 (8) 'Deflated'\n+216642 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216646 CRC                   7FA20103 (2141323523)\n+21664A Compressed Size       0000029A (666)\n+21664E Uncompressed Size     00000534 (1332)\n+216652 Filename Length       0035 (53)\n+216654 Extra Length          0000 (0)\n+216656 Comment Length        0000 (0)\n+216658 Disk Start            0000 (0)\n+21665A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2140B6 Ext File Attributes   00000000 (0)\n-2140BA Local Header Offset   00015C2A (89130)\n-2140BE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21665C Ext File Attributes   00000000 (0)\n+216660 Local Header Offset   0002C461 (181345)\n+216664 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2140BE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216664: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214102 CENTRAL HEADER #140   02014B50 (33639248)\n-214106 Created Zip Spec      14 (20) '2.0'\n-214107 Created OS            00 (0) 'MS-DOS'\n-214108 Extract Zip Spec      14 (20) '2.0'\n-214109 Extract OS            00 (0) 'MS-DOS'\n-21410A General Purpose Flag  0808 (2056)\n+216699 CENTRAL HEADER #140   02014B50 (33639248)\n+21669D Created Zip Spec      14 (20) '2.0'\n+21669E Created OS            00 (0) 'MS-DOS'\n+21669F Extract Zip Spec      14 (20) '2.0'\n+2166A0 Extract OS            00 (0) 'MS-DOS'\n+2166A1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21410C Compression Method    0008 (8) 'Deflated'\n-21410E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214112 CRC                   00000000 (0)\n-214116 Compressed Size       00000002 (2)\n-21411A Uncompressed Size     00000000 (0)\n-21411E Filename Length       0035 (53)\n-214120 Extra Length          0000 (0)\n-214122 Comment Length        0000 (0)\n-214124 Disk Start            0000 (0)\n-214126 Int File Attributes   0000 (0)\n+2166A3 Compression Method    0008 (8) 'Deflated'\n+2166A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2166A9 CRC                   D4481329 (3561493289)\n+2166AD Compressed Size       000004C9 (1225)\n+2166B1 Uncompressed Size     00000B76 (2934)\n+2166B5 Filename Length       002B (43)\n+2166B7 Extra Length          0000 (0)\n+2166B9 Comment Length        0000 (0)\n+2166BB Disk Start            0000 (0)\n+2166BD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214128 Ext File Attributes   00000000 (0)\n-21412C Local Header Offset   00015CE6 (89318)\n-214130 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2166BF Ext File Attributes   00000000 (0)\n+2166C3 Local Header Offset   0002C75E (182110)\n+2166C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214130: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2166C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214165 CENTRAL HEADER #141   02014B50 (33639248)\n-214169 Created Zip Spec      14 (20) '2.0'\n-21416A Created OS            00 (0) 'MS-DOS'\n-21416B Extract Zip Spec      14 (20) '2.0'\n-21416C Extract OS            00 (0) 'MS-DOS'\n-21416D General Purpose Flag  0808 (2056)\n+2166F2 CENTRAL HEADER #141   02014B50 (33639248)\n+2166F6 Created Zip Spec      14 (20) '2.0'\n+2166F7 Created OS            00 (0) 'MS-DOS'\n+2166F8 Extract Zip Spec      14 (20) '2.0'\n+2166F9 Extract OS            00 (0) 'MS-DOS'\n+2166FA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21416F Compression Method    0008 (8) 'Deflated'\n-214171 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214175 CRC                   0701BB57 (117554007)\n-214179 Compressed Size       000003CA (970)\n-21417D Uncompressed Size     00000C33 (3123)\n-214181 Filename Length       003C (60)\n-214183 Extra Length          0000 (0)\n-214185 Comment Length        0000 (0)\n-214187 Disk Start            0000 (0)\n-214189 Int File Attributes   0000 (0)\n+2166FC Compression Method    0008 (8) 'Deflated'\n+2166FE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216702 CRC                   2FCAE9BB (801827259)\n+216706 Compressed Size       0000032F (815)\n+21670A Uncompressed Size     000006CA (1738)\n+21670E Filename Length       002B (43)\n+216710 Extra Length          0000 (0)\n+216712 Comment Length        0000 (0)\n+216714 Disk Start            0000 (0)\n+216716 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21418B Ext File Attributes   00000000 (0)\n-21418F Local Header Offset   00015D4B (89419)\n-214193 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216718 Ext File Attributes   00000000 (0)\n+21671C Local Header Offset   0002CC80 (183424)\n+216720 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214193: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216720: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2141CF CENTRAL HEADER #142   02014B50 (33639248)\n-2141D3 Created Zip Spec      14 (20) '2.0'\n-2141D4 Created OS            00 (0) 'MS-DOS'\n-2141D5 Extract Zip Spec      14 (20) '2.0'\n-2141D6 Extract OS            00 (0) 'MS-DOS'\n-2141D7 General Purpose Flag  0808 (2056)\n+21674B CENTRAL HEADER #142   02014B50 (33639248)\n+21674F Created Zip Spec      14 (20) '2.0'\n+216750 Created OS            00 (0) 'MS-DOS'\n+216751 Extract Zip Spec      14 (20) '2.0'\n+216752 Extract OS            00 (0) 'MS-DOS'\n+216753 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2141D9 Compression Method    0008 (8) 'Deflated'\n-2141DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2141DF CRC                   BACBA827 (3133909031)\n-2141E3 Compressed Size       00000049 (73)\n-2141E7 Uncompressed Size     0000004B (75)\n-2141EB Filename Length       0043 (67)\n-2141ED Extra Length          0000 (0)\n-2141EF Comment Length        0000 (0)\n-2141F1 Disk Start            0000 (0)\n-2141F3 Int File Attributes   0000 (0)\n+216755 Compression Method    0008 (8) 'Deflated'\n+216757 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21675B CRC                   2EFAFE2D (788201005)\n+21675F Compressed Size       0000034D (845)\n+216763 Uncompressed Size     00000732 (1842)\n+216767 Filename Length       002D (45)\n+216769 Extra Length          0000 (0)\n+21676B Comment Length        0000 (0)\n+21676D Disk Start            0000 (0)\n+21676F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2141F5 Ext File Attributes   00000000 (0)\n-2141F9 Local Header Offset   0001617F (90495)\n-2141FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216771 Ext File Attributes   00000000 (0)\n+216775 Local Header Offset   0002D008 (184328)\n+216779 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2141FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216779: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214240 CENTRAL HEADER #143   02014B50 (33639248)\n-214244 Created Zip Spec      14 (20) '2.0'\n-214245 Created OS            00 (0) 'MS-DOS'\n-214246 Extract Zip Spec      14 (20) '2.0'\n-214247 Extract OS            00 (0) 'MS-DOS'\n-214248 General Purpose Flag  0808 (2056)\n+2167A6 CENTRAL HEADER #143   02014B50 (33639248)\n+2167AA Created Zip Spec      14 (20) '2.0'\n+2167AB Created OS            00 (0) 'MS-DOS'\n+2167AC Extract Zip Spec      14 (20) '2.0'\n+2167AD Extract OS            00 (0) 'MS-DOS'\n+2167AE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21424A Compression Method    0008 (8) 'Deflated'\n-21424C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214250 CRC                   00000000 (0)\n-214254 Compressed Size       00000002 (2)\n-214258 Uncompressed Size     00000000 (0)\n-21425C Filename Length       0034 (52)\n-21425E Extra Length          0000 (0)\n-214260 Comment Length        0000 (0)\n-214262 Disk Start            0000 (0)\n-214264 Int File Attributes   0000 (0)\n+2167B0 Compression Method    0008 (8) 'Deflated'\n+2167B2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2167B6 CRC                   09ED5602 (166548994)\n+2167BA Compressed Size       0000022B (555)\n+2167BE Uncompressed Size     000003D1 (977)\n+2167C2 Filename Length       0028 (40)\n+2167C4 Extra Length          0000 (0)\n+2167C6 Comment Length        0000 (0)\n+2167C8 Disk Start            0000 (0)\n+2167CA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214266 Ext File Attributes   00000000 (0)\n-21426A Local Header Offset   00016239 (90681)\n-21426E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2167CC Ext File Attributes   00000000 (0)\n+2167D0 Local Header Offset   0002D3B0 (185264)\n+2167D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21426E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2167D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2142A2 CENTRAL HEADER #144   02014B50 (33639248)\n-2142A6 Created Zip Spec      14 (20) '2.0'\n-2142A7 Created OS            00 (0) 'MS-DOS'\n-2142A8 Extract Zip Spec      14 (20) '2.0'\n-2142A9 Extract OS            00 (0) 'MS-DOS'\n-2142AA General Purpose Flag  0808 (2056)\n+2167FC CENTRAL HEADER #144   02014B50 (33639248)\n+216800 Created Zip Spec      14 (20) '2.0'\n+216801 Created OS            00 (0) 'MS-DOS'\n+216802 Extract Zip Spec      14 (20) '2.0'\n+216803 Extract OS            00 (0) 'MS-DOS'\n+216804 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2142AC Compression Method    0008 (8) 'Deflated'\n-2142AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2142B2 CRC                   6F2313AC (1864569772)\n-2142B6 Compressed Size       000004B1 (1201)\n-2142BA Uncompressed Size     000012B3 (4787)\n-2142BE Filename Length       003B (59)\n-2142C0 Extra Length          0000 (0)\n-2142C2 Comment Length        0000 (0)\n-2142C4 Disk Start            0000 (0)\n-2142C6 Int File Attributes   0000 (0)\n+216806 Compression Method    0008 (8) 'Deflated'\n+216808 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21680C CRC                   58C25CA8 (1489132712)\n+216810 Compressed Size       0000054B (1355)\n+216814 Uncompressed Size     00000CF3 (3315)\n+216818 Filename Length       0028 (40)\n+21681A Extra Length          0000 (0)\n+21681C Comment Length        0000 (0)\n+21681E Disk Start            0000 (0)\n+216820 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2142C8 Ext File Attributes   00000000 (0)\n-2142CC Local Header Offset   0001629D (90781)\n-2142D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216822 Ext File Attributes   00000000 (0)\n+216826 Local Header Offset   0002D631 (185905)\n+21682A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2142D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21682A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21430B CENTRAL HEADER #145   02014B50 (33639248)\n-21430F Created Zip Spec      14 (20) '2.0'\n-214310 Created OS            00 (0) 'MS-DOS'\n-214311 Extract Zip Spec      14 (20) '2.0'\n-214312 Extract OS            00 (0) 'MS-DOS'\n-214313 General Purpose Flag  0808 (2056)\n+216852 CENTRAL HEADER #145   02014B50 (33639248)\n+216856 Created Zip Spec      14 (20) '2.0'\n+216857 Created OS            00 (0) 'MS-DOS'\n+216858 Extract Zip Spec      14 (20) '2.0'\n+216859 Extract OS            00 (0) 'MS-DOS'\n+21685A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214315 Compression Method    0008 (8) 'Deflated'\n-214317 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21431B CRC                   88872903 (2290559235)\n-21431F Compressed Size       00000048 (72)\n-214323 Uncompressed Size     0000004A (74)\n-214327 Filename Length       0042 (66)\n-214329 Extra Length          0000 (0)\n-21432B Comment Length        0000 (0)\n-21432D Disk Start            0000 (0)\n-21432F Int File Attributes   0000 (0)\n+21685C Compression Method    0008 (8) 'Deflated'\n+21685E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216862 CRC                   234C96D0 (592221904)\n+216866 Compressed Size       000005FB (1531)\n+21686A Uncompressed Size     00001088 (4232)\n+21686E Filename Length       002D (45)\n+216870 Extra Length          0000 (0)\n+216872 Comment Length        0000 (0)\n+216874 Disk Start            0000 (0)\n+216876 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214331 Ext File Attributes   00000000 (0)\n-214335 Local Header Offset   000167B7 (92087)\n-214339 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216878 Ext File Attributes   00000000 (0)\n+21687C Local Header Offset   0002DBD2 (187346)\n+216880 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214339: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216880: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21437B CENTRAL HEADER #146   02014B50 (33639248)\n-21437F Created Zip Spec      14 (20) '2.0'\n-214380 Created OS            00 (0) 'MS-DOS'\n-214381 Extract Zip Spec      14 (20) '2.0'\n-214382 Extract OS            00 (0) 'MS-DOS'\n-214383 General Purpose Flag  0808 (2056)\n+2168AD CENTRAL HEADER #146   02014B50 (33639248)\n+2168B1 Created Zip Spec      14 (20) '2.0'\n+2168B2 Created OS            00 (0) 'MS-DOS'\n+2168B3 Extract Zip Spec      14 (20) '2.0'\n+2168B4 Extract OS            00 (0) 'MS-DOS'\n+2168B5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214385 Compression Method    0008 (8) 'Deflated'\n-214387 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21438B CRC                   00000000 (0)\n-21438F Compressed Size       00000002 (2)\n-214393 Uncompressed Size     00000000 (0)\n-214397 Filename Length       0038 (56)\n-214399 Extra Length          0000 (0)\n-21439B Comment Length        0000 (0)\n-21439D Disk Start            0000 (0)\n-21439F Int File Attributes   0000 (0)\n+2168B7 Compression Method    0008 (8) 'Deflated'\n+2168B9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2168BD CRC                   FDB2D35D (4256355165)\n+2168C1 Compressed Size       00000396 (918)\n+2168C5 Uncompressed Size     00000759 (1881)\n+2168C9 Filename Length       002F (47)\n+2168CB Extra Length          0000 (0)\n+2168CD Comment Length        0000 (0)\n+2168CF Disk Start            0000 (0)\n+2168D1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2143A1 Ext File Attributes   00000000 (0)\n-2143A5 Local Header Offset   0001686F (92271)\n-2143A9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2168D3 Ext File Attributes   00000000 (0)\n+2168D7 Local Header Offset   0002E228 (188968)\n+2168DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2143A9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2168DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2143E1 CENTRAL HEADER #147   02014B50 (33639248)\n-2143E5 Created Zip Spec      14 (20) '2.0'\n-2143E6 Created OS            00 (0) 'MS-DOS'\n-2143E7 Extract Zip Spec      14 (20) '2.0'\n-2143E8 Extract OS            00 (0) 'MS-DOS'\n-2143E9 General Purpose Flag  0808 (2056)\n+21690A CENTRAL HEADER #147   02014B50 (33639248)\n+21690E Created Zip Spec      14 (20) '2.0'\n+21690F Created OS            00 (0) 'MS-DOS'\n+216910 Extract Zip Spec      14 (20) '2.0'\n+216911 Extract OS            00 (0) 'MS-DOS'\n+216912 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2143EB Compression Method    0008 (8) 'Deflated'\n-2143ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2143F1 CRC                   E3551669 (3814004329)\n-2143F5 Compressed Size       000003C6 (966)\n-2143F9 Uncompressed Size     00000B49 (2889)\n-2143FD Filename Length       003F (63)\n-2143FF Extra Length          0000 (0)\n-214401 Comment Length        0000 (0)\n-214403 Disk Start            0000 (0)\n-214405 Int File Attributes   0000 (0)\n+216914 Compression Method    0008 (8) 'Deflated'\n+216916 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21691A CRC                   BC987223 (3164107299)\n+21691E Compressed Size       00000252 (594)\n+216922 Uncompressed Size     00000435 (1077)\n+216926 Filename Length       002F (47)\n+216928 Extra Length          0000 (0)\n+21692A Comment Length        0000 (0)\n+21692C Disk Start            0000 (0)\n+21692E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214407 Ext File Attributes   00000000 (0)\n-21440B Local Header Offset   000168D7 (92375)\n-21440F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216930 Ext File Attributes   00000000 (0)\n+216934 Local Header Offset   0002E61B (189979)\n+216938 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21440F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216938: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21444E CENTRAL HEADER #148   02014B50 (33639248)\n-214452 Created Zip Spec      14 (20) '2.0'\n-214453 Created OS            00 (0) 'MS-DOS'\n-214454 Extract Zip Spec      14 (20) '2.0'\n-214455 Extract OS            00 (0) 'MS-DOS'\n-214456 General Purpose Flag  0808 (2056)\n+216967 CENTRAL HEADER #148   02014B50 (33639248)\n+21696B Created Zip Spec      14 (20) '2.0'\n+21696C Created OS            00 (0) 'MS-DOS'\n+21696D Extract Zip Spec      14 (20) '2.0'\n+21696E Extract OS            00 (0) 'MS-DOS'\n+21696F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214458 Compression Method    0008 (8) 'Deflated'\n-21445A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21445E CRC                   7158BA85 (1901640325)\n-214462 Compressed Size       0000004C (76)\n-214466 Uncompressed Size     0000004E (78)\n-21446A Filename Length       0046 (70)\n-21446C Extra Length          0000 (0)\n-21446E Comment Length        0000 (0)\n-214470 Disk Start            0000 (0)\n-214472 Int File Attributes   0000 (0)\n+216971 Compression Method    0008 (8) 'Deflated'\n+216973 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216977 CRC                   00000000 (0)\n+21697B Compressed Size       00000002 (2)\n+21697F Uncompressed Size     00000000 (0)\n+216983 Filename Length       002A (42)\n+216985 Extra Length          0000 (0)\n+216987 Comment Length        0000 (0)\n+216989 Disk Start            0000 (0)\n+21698B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214474 Ext File Attributes   00000000 (0)\n-214478 Local Header Offset   00016D0A (93450)\n-21447C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21698D Ext File Attributes   00000000 (0)\n+216991 Local Header Offset   0002E8CA (190666)\n+216995 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21447C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216995: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2144C2 CENTRAL HEADER #149   02014B50 (33639248)\n-2144C6 Created Zip Spec      14 (20) '2.0'\n-2144C7 Created OS            00 (0) 'MS-DOS'\n-2144C8 Extract Zip Spec      14 (20) '2.0'\n-2144C9 Extract OS            00 (0) 'MS-DOS'\n-2144CA General Purpose Flag  0808 (2056)\n+2169BF CENTRAL HEADER #149   02014B50 (33639248)\n+2169C3 Created Zip Spec      14 (20) '2.0'\n+2169C4 Created OS            00 (0) 'MS-DOS'\n+2169C5 Extract Zip Spec      14 (20) '2.0'\n+2169C6 Extract OS            00 (0) 'MS-DOS'\n+2169C7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2144CC Compression Method    0008 (8) 'Deflated'\n-2144CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2144D2 CRC                   00000000 (0)\n-2144D6 Compressed Size       00000002 (2)\n-2144DA Uncompressed Size     00000000 (0)\n-2144DE Filename Length       0032 (50)\n-2144E0 Extra Length          0000 (0)\n-2144E2 Comment Length        0000 (0)\n-2144E4 Disk Start            0000 (0)\n-2144E6 Int File Attributes   0000 (0)\n+2169C9 Compression Method    0008 (8) 'Deflated'\n+2169CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2169CF CRC                   91868A4C (2441513548)\n+2169D3 Compressed Size       000008AF (2223)\n+2169D7 Uncompressed Size     00002146 (8518)\n+2169DB Filename Length       0043 (67)\n+2169DD Extra Length          0000 (0)\n+2169DF Comment Length        0000 (0)\n+2169E1 Disk Start            0000 (0)\n+2169E3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2144E8 Ext File Attributes   00000000 (0)\n-2144EC Local Header Offset   00016DCA (93642)\n-2144F0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2169E5 Ext File Attributes   00000000 (0)\n+2169E9 Local Header Offset   0002E924 (190756)\n+2169ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2144F0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2169ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214522 CENTRAL HEADER #150   02014B50 (33639248)\n-214526 Created Zip Spec      14 (20) '2.0'\n-214527 Created OS            00 (0) 'MS-DOS'\n-214528 Extract Zip Spec      14 (20) '2.0'\n-214529 Extract OS            00 (0) 'MS-DOS'\n-21452A General Purpose Flag  0808 (2056)\n+216A30 CENTRAL HEADER #150   02014B50 (33639248)\n+216A34 Created Zip Spec      14 (20) '2.0'\n+216A35 Created OS            00 (0) 'MS-DOS'\n+216A36 Extract Zip Spec      14 (20) '2.0'\n+216A37 Extract OS            00 (0) 'MS-DOS'\n+216A38 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21452C Compression Method    0008 (8) 'Deflated'\n-21452E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214532 CRC                   B4003E22 (3019914786)\n-214536 Compressed Size       00000390 (912)\n-21453A Uncompressed Size     00000966 (2406)\n-21453E Filename Length       0039 (57)\n-214540 Extra Length          0000 (0)\n-214542 Comment Length        0000 (0)\n-214544 Disk Start            0000 (0)\n-214546 Int File Attributes   0000 (0)\n+216A3A Compression Method    0008 (8) 'Deflated'\n+216A3C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216A40 CRC                   00000000 (0)\n+216A44 Compressed Size       00000002 (2)\n+216A48 Uncompressed Size     00000000 (0)\n+216A4C Filename Length       0031 (49)\n+216A4E Extra Length          0000 (0)\n+216A50 Comment Length        0000 (0)\n+216A52 Disk Start            0000 (0)\n+216A54 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214548 Ext File Attributes   00000000 (0)\n-21454C Local Header Offset   00016E2C (93740)\n-214550 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216A56 Ext File Attributes   00000000 (0)\n+216A5A Local Header Offset   0002F244 (193092)\n+216A5E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214550: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216A5E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214589 CENTRAL HEADER #151   02014B50 (33639248)\n-21458D Created Zip Spec      14 (20) '2.0'\n-21458E Created OS            00 (0) 'MS-DOS'\n-21458F Extract Zip Spec      14 (20) '2.0'\n-214590 Extract OS            00 (0) 'MS-DOS'\n-214591 General Purpose Flag  0808 (2056)\n+216A8F CENTRAL HEADER #151   02014B50 (33639248)\n+216A93 Created Zip Spec      14 (20) '2.0'\n+216A94 Created OS            00 (0) 'MS-DOS'\n+216A95 Extract Zip Spec      14 (20) '2.0'\n+216A96 Extract OS            00 (0) 'MS-DOS'\n+216A97 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214593 Compression Method    0008 (8) 'Deflated'\n-214595 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214599 CRC                   A473398B (2759014795)\n-21459D Compressed Size       00000046 (70)\n-2145A1 Uncompressed Size     00000048 (72)\n-2145A5 Filename Length       0040 (64)\n-2145A7 Extra Length          0000 (0)\n-2145A9 Comment Length        0000 (0)\n-2145AB Disk Start            0000 (0)\n-2145AD Int File Attributes   0000 (0)\n+216A99 Compression Method    0008 (8) 'Deflated'\n+216A9B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216A9F CRC                   FB552F52 (4216663890)\n+216AA3 Compressed Size       0000028F (655)\n+216AA7 Uncompressed Size     00000532 (1330)\n+216AAB Filename Length       0048 (72)\n+216AAD Extra Length          0000 (0)\n+216AAF Comment Length        0000 (0)\n+216AB1 Disk Start            0000 (0)\n+216AB3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2145AF Ext File Attributes   00000000 (0)\n-2145B3 Local Header Offset   00017223 (94755)\n-2145B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216AB5 Ext File Attributes   00000000 (0)\n+216AB9 Local Header Offset   0002F2A5 (193189)\n+216ABD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2145B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216ABD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2145F7 CENTRAL HEADER #152   02014B50 (33639248)\n-2145FB Created Zip Spec      14 (20) '2.0'\n-2145FC Created OS            00 (0) 'MS-DOS'\n-2145FD Extract Zip Spec      14 (20) '2.0'\n-2145FE Extract OS            00 (0) 'MS-DOS'\n-2145FF General Purpose Flag  0808 (2056)\n+216B05 CENTRAL HEADER #152   02014B50 (33639248)\n+216B09 Created Zip Spec      14 (20) '2.0'\n+216B0A Created OS            00 (0) 'MS-DOS'\n+216B0B Extract Zip Spec      14 (20) '2.0'\n+216B0C Extract OS            00 (0) 'MS-DOS'\n+216B0D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214601 Compression Method    0008 (8) 'Deflated'\n-214603 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214607 CRC                   00000000 (0)\n-21460B Compressed Size       00000002 (2)\n-21460F Uncompressed Size     00000000 (0)\n-214613 Filename Length       0036 (54)\n-214615 Extra Length          0000 (0)\n-214617 Comment Length        0000 (0)\n-214619 Disk Start            0000 (0)\n-21461B Int File Attributes   0000 (0)\n+216B0F Compression Method    0008 (8) 'Deflated'\n+216B11 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216B15 CRC                   87AAF61F (2276128287)\n+216B19 Compressed Size       00000267 (615)\n+216B1D Uncompressed Size     000004F6 (1270)\n+216B21 Filename Length       004F (79)\n+216B23 Extra Length          0000 (0)\n+216B25 Comment Length        0000 (0)\n+216B27 Disk Start            0000 (0)\n+216B29 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21461D Ext File Attributes   00000000 (0)\n-214621 Local Header Offset   000172D7 (94935)\n-214625 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216B2B Ext File Attributes   00000000 (0)\n+216B2F Local Header Offset   0002F5AA (193962)\n+216B33 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214625: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216B33: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21465B CENTRAL HEADER #153   02014B50 (33639248)\n-21465F Created Zip Spec      14 (20) '2.0'\n-214660 Created OS            00 (0) 'MS-DOS'\n-214661 Extract Zip Spec      14 (20) '2.0'\n-214662 Extract OS            00 (0) 'MS-DOS'\n-214663 General Purpose Flag  0808 (2056)\n+216B82 CENTRAL HEADER #153   02014B50 (33639248)\n+216B86 Created Zip Spec      14 (20) '2.0'\n+216B87 Created OS            00 (0) 'MS-DOS'\n+216B88 Extract Zip Spec      14 (20) '2.0'\n+216B89 Extract OS            00 (0) 'MS-DOS'\n+216B8A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214665 Compression Method    0008 (8) 'Deflated'\n-214667 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21466B CRC                   B4C3155F (3032683871)\n-21466F Compressed Size       000003E6 (998)\n-214673 Uncompressed Size     00000C6F (3183)\n-214677 Filename Length       003D (61)\n-214679 Extra Length          0000 (0)\n-21467B Comment Length        0000 (0)\n-21467D Disk Start            0000 (0)\n-21467F Int File Attributes   0000 (0)\n+216B8C Compression Method    0008 (8) 'Deflated'\n+216B8E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216B92 CRC                   00000000 (0)\n+216B96 Compressed Size       00000002 (2)\n+216B9A Uncompressed Size     00000000 (0)\n+216B9E Filename Length       0033 (51)\n+216BA0 Extra Length          0000 (0)\n+216BA2 Comment Length        0000 (0)\n+216BA4 Disk Start            0000 (0)\n+216BA6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214681 Ext File Attributes   00000000 (0)\n-214685 Local Header Offset   0001733D (95037)\n-214689 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216BA8 Ext File Attributes   00000000 (0)\n+216BAC Local Header Offset   0002F88E (194702)\n+216BB0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214689: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216BB0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2146C6 CENTRAL HEADER #154   02014B50 (33639248)\n-2146CA Created Zip Spec      14 (20) '2.0'\n-2146CB Created OS            00 (0) 'MS-DOS'\n-2146CC Extract Zip Spec      14 (20) '2.0'\n-2146CD Extract OS            00 (0) 'MS-DOS'\n-2146CE General Purpose Flag  0808 (2056)\n+216BE3 CENTRAL HEADER #154   02014B50 (33639248)\n+216BE7 Created Zip Spec      14 (20) '2.0'\n+216BE8 Created OS            00 (0) 'MS-DOS'\n+216BE9 Extract Zip Spec      14 (20) '2.0'\n+216BEA Extract OS            00 (0) 'MS-DOS'\n+216BEB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2146D0 Compression Method    0008 (8) 'Deflated'\n-2146D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2146D6 CRC                   2A04AB66 (704949094)\n-2146DA Compressed Size       0000004A (74)\n-2146DE Uncompressed Size     0000004C (76)\n-2146E2 Filename Length       0044 (68)\n-2146E4 Extra Length          0000 (0)\n-2146E6 Comment Length        0000 (0)\n-2146E8 Disk Start            0000 (0)\n-2146EA Int File Attributes   0000 (0)\n+216BED Compression Method    0008 (8) 'Deflated'\n+216BEF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216BF3 CRC                   267D653A (645752122)\n+216BF7 Compressed Size       00000289 (649)\n+216BFB Uncompressed Size     00000532 (1330)\n+216BFF Filename Length       004C (76)\n+216C01 Extra Length          0000 (0)\n+216C03 Comment Length        0000 (0)\n+216C05 Disk Start            0000 (0)\n+216C07 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2146EC Ext File Attributes   00000000 (0)\n-2146F0 Local Header Offset   0001778E (96142)\n-2146F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216C09 Ext File Attributes   00000000 (0)\n+216C0D Local Header Offset   0002F8F1 (194801)\n+216C11 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2146F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216C11: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214738 CENTRAL HEADER #155   02014B50 (33639248)\n-21473C Created Zip Spec      14 (20) '2.0'\n-21473D Created OS            00 (0) 'MS-DOS'\n-21473E Extract Zip Spec      14 (20) '2.0'\n-21473F Extract OS            00 (0) 'MS-DOS'\n-214740 General Purpose Flag  0808 (2056)\n+216C5D CENTRAL HEADER #155   02014B50 (33639248)\n+216C61 Created Zip Spec      14 (20) '2.0'\n+216C62 Created OS            00 (0) 'MS-DOS'\n+216C63 Extract Zip Spec      14 (20) '2.0'\n+216C64 Extract OS            00 (0) 'MS-DOS'\n+216C65 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214742 Compression Method    0008 (8) 'Deflated'\n-214744 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214748 CRC                   00000000 (0)\n-21474C Compressed Size       00000002 (2)\n-214750 Uncompressed Size     00000000 (0)\n-214754 Filename Length       0037 (55)\n-214756 Extra Length          0000 (0)\n-214758 Comment Length        0000 (0)\n-21475A Disk Start            0000 (0)\n-21475C Int File Attributes   0000 (0)\n+216C67 Compression Method    0008 (8) 'Deflated'\n+216C69 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216C6D CRC                   2179F10E (561639694)\n+216C71 Compressed Size       00000265 (613)\n+216C75 Uncompressed Size     000004FE (1278)\n+216C79 Filename Length       0053 (83)\n+216C7B Extra Length          0000 (0)\n+216C7D Comment Length        0000 (0)\n+216C7F Disk Start            0000 (0)\n+216C81 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21475E Ext File Attributes   00000000 (0)\n-214762 Local Header Offset   0001784A (96330)\n-214766 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216C83 Ext File Attributes   00000000 (0)\n+216C87 Local Header Offset   0002FBF4 (195572)\n+216C8B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214766: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216C8B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21479D CENTRAL HEADER #156   02014B50 (33639248)\n-2147A1 Created Zip Spec      14 (20) '2.0'\n-2147A2 Created OS            00 (0) 'MS-DOS'\n-2147A3 Extract Zip Spec      14 (20) '2.0'\n-2147A4 Extract OS            00 (0) 'MS-DOS'\n-2147A5 General Purpose Flag  0808 (2056)\n+216CDE CENTRAL HEADER #156   02014B50 (33639248)\n+216CE2 Created Zip Spec      14 (20) '2.0'\n+216CE3 Created OS            00 (0) 'MS-DOS'\n+216CE4 Extract Zip Spec      14 (20) '2.0'\n+216CE5 Extract OS            00 (0) 'MS-DOS'\n+216CE6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2147A7 Compression Method    0008 (8) 'Deflated'\n-2147A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2147AD CRC                   E0484CF4 (3762834676)\n-2147B1 Compressed Size       0000037C (892)\n-2147B5 Uncompressed Size     0000084F (2127)\n-2147B9 Filename Length       003E (62)\n-2147BB Extra Length          0000 (0)\n-2147BD Comment Length        0000 (0)\n-2147BF Disk Start            0000 (0)\n-2147C1 Int File Attributes   0000 (0)\n+216CE8 Compression Method    0008 (8) 'Deflated'\n+216CEA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216CEE CRC                   00000000 (0)\n+216CF2 Compressed Size       00000002 (2)\n+216CF6 Uncompressed Size     00000000 (0)\n+216CFA Filename Length       0031 (49)\n+216CFC Extra Length          0000 (0)\n+216CFE Comment Length        0000 (0)\n+216D00 Disk Start            0000 (0)\n+216D02 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2147C3 Ext File Attributes   00000000 (0)\n-2147C7 Local Header Offset   000178B1 (96433)\n-2147CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216D04 Ext File Attributes   00000000 (0)\n+216D08 Local Header Offset   0002FEDA (196314)\n+216D0C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2147CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216D0C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214809 CENTRAL HEADER #157   02014B50 (33639248)\n-21480D Created Zip Spec      14 (20) '2.0'\n-21480E Created OS            00 (0) 'MS-DOS'\n-21480F Extract Zip Spec      14 (20) '2.0'\n-214810 Extract OS            00 (0) 'MS-DOS'\n-214811 General Purpose Flag  0808 (2056)\n+216D3D CENTRAL HEADER #157   02014B50 (33639248)\n+216D41 Created Zip Spec      14 (20) '2.0'\n+216D42 Created OS            00 (0) 'MS-DOS'\n+216D43 Extract Zip Spec      14 (20) '2.0'\n+216D44 Extract OS            00 (0) 'MS-DOS'\n+216D45 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214813 Compression Method    0008 (8) 'Deflated'\n-214815 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214819 CRC                   B5C799B8 (3049757112)\n-21481D Compressed Size       0000004A (74)\n-214821 Uncompressed Size     0000004D (77)\n-214825 Filename Length       0045 (69)\n-214827 Extra Length          0000 (0)\n-214829 Comment Length        0000 (0)\n-21482B Disk Start            0000 (0)\n-21482D Int File Attributes   0000 (0)\n+216D47 Compression Method    0008 (8) 'Deflated'\n+216D49 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216D4D CRC                   DEAE7474 (3735975028)\n+216D51 Compressed Size       000008AD (2221)\n+216D55 Uncompressed Size     00002232 (8754)\n+216D59 Filename Length       0042 (66)\n+216D5B Extra Length          0000 (0)\n+216D5D Comment Length        0000 (0)\n+216D5F Disk Start            0000 (0)\n+216D61 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21482F Ext File Attributes   00000000 (0)\n-214833 Local Header Offset   00017C99 (97433)\n-214837 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216D63 Ext File Attributes   00000000 (0)\n+216D67 Local Header Offset   0002FF3B (196411)\n+216D6B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214837: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216D6B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21487C CENTRAL HEADER #158   02014B50 (33639248)\n-214880 Created Zip Spec      14 (20) '2.0'\n-214881 Created OS            00 (0) 'MS-DOS'\n-214882 Extract Zip Spec      14 (20) '2.0'\n-214883 Extract OS            00 (0) 'MS-DOS'\n-214884 General Purpose Flag  0808 (2056)\n+216DAD CENTRAL HEADER #158   02014B50 (33639248)\n+216DB1 Created Zip Spec      14 (20) '2.0'\n+216DB2 Created OS            00 (0) 'MS-DOS'\n+216DB3 Extract Zip Spec      14 (20) '2.0'\n+216DB4 Extract OS            00 (0) 'MS-DOS'\n+216DB5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214886 Compression Method    0008 (8) 'Deflated'\n-214888 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21488C CRC                   00000000 (0)\n-214890 Compressed Size       00000002 (2)\n-214894 Uncompressed Size     00000000 (0)\n-214898 Filename Length       0036 (54)\n-21489A Extra Length          0000 (0)\n-21489C Comment Length        0000 (0)\n-21489E Disk Start            0000 (0)\n-2148A0 Int File Attributes   0000 (0)\n+216DB7 Compression Method    0008 (8) 'Deflated'\n+216DB9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216DBD CRC                   00000000 (0)\n+216DC1 Compressed Size       00000002 (2)\n+216DC5 Uncompressed Size     00000000 (0)\n+216DC9 Filename Length       0037 (55)\n+216DCB Extra Length          0000 (0)\n+216DCD Comment Length        0000 (0)\n+216DCF Disk Start            0000 (0)\n+216DD1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2148A2 Ext File Attributes   00000000 (0)\n-2148A6 Local Header Offset   00017D56 (97622)\n-2148AA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216DD3 Ext File Attributes   00000000 (0)\n+216DD7 Local Header Offset   00030858 (198744)\n+216DDB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2148AA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216DDB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2148E0 CENTRAL HEADER #159   02014B50 (33639248)\n-2148E4 Created Zip Spec      14 (20) '2.0'\n-2148E5 Created OS            00 (0) 'MS-DOS'\n-2148E6 Extract Zip Spec      14 (20) '2.0'\n-2148E7 Extract OS            00 (0) 'MS-DOS'\n-2148E8 General Purpose Flag  0808 (2056)\n+216E12 CENTRAL HEADER #159   02014B50 (33639248)\n+216E16 Created Zip Spec      14 (20) '2.0'\n+216E17 Created OS            00 (0) 'MS-DOS'\n+216E18 Extract Zip Spec      14 (20) '2.0'\n+216E19 Extract OS            00 (0) 'MS-DOS'\n+216E1A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2148EA Compression Method    0008 (8) 'Deflated'\n-2148EC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2148F0 CRC                   F4C8F642 (4106810946)\n-2148F4 Compressed Size       00000362 (866)\n-2148F8 Uncompressed Size     000007CB (1995)\n-2148FC Filename Length       003D (61)\n-2148FE Extra Length          0000 (0)\n-214900 Comment Length        0000 (0)\n-214902 Disk Start            0000 (0)\n-214904 Int File Attributes   0000 (0)\n+216E1C Compression Method    0008 (8) 'Deflated'\n+216E1E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216E22 CRC                   036D4C42 (57494594)\n+216E26 Compressed Size       000003B9 (953)\n+216E2A Uncompressed Size     00000B63 (2915)\n+216E2E Filename Length       0046 (70)\n+216E30 Extra Length          0000 (0)\n+216E32 Comment Length        0000 (0)\n+216E34 Disk Start            0000 (0)\n+216E36 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214906 Ext File Attributes   00000000 (0)\n-21490A Local Header Offset   00017DBC (97724)\n-21490E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216E38 Ext File Attributes   00000000 (0)\n+216E3C Local Header Offset   000308BF (198847)\n+216E40 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21490E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216E40: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21494B CENTRAL HEADER #160   02014B50 (33639248)\n-21494F Created Zip Spec      14 (20) '2.0'\n-214950 Created OS            00 (0) 'MS-DOS'\n-214951 Extract Zip Spec      14 (20) '2.0'\n-214952 Extract OS            00 (0) 'MS-DOS'\n-214953 General Purpose Flag  0808 (2056)\n+216E86 CENTRAL HEADER #160   02014B50 (33639248)\n+216E8A Created Zip Spec      14 (20) '2.0'\n+216E8B Created OS            00 (0) 'MS-DOS'\n+216E8C Extract Zip Spec      14 (20) '2.0'\n+216E8D Extract OS            00 (0) 'MS-DOS'\n+216E8E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214955 Compression Method    0008 (8) 'Deflated'\n-214957 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21495B CRC                   AD875852 (2911328338)\n-21495F Compressed Size       0000004A (74)\n-214963 Uncompressed Size     0000004C (76)\n-214967 Filename Length       0044 (68)\n-214969 Extra Length          0000 (0)\n-21496B Comment Length        0000 (0)\n-21496D Disk Start            0000 (0)\n-21496F Int File Attributes   0000 (0)\n+216E90 Compression Method    0008 (8) 'Deflated'\n+216E92 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216E96 CRC                   27E35EC9 (669212361)\n+216E9A Compressed Size       0000031E (798)\n+216E9E Uncompressed Size     0000080A (2058)\n+216EA2 Filename Length       004E (78)\n+216EA4 Extra Length          0000 (0)\n+216EA6 Comment Length        0000 (0)\n+216EA8 Disk Start            0000 (0)\n+216EAA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214971 Ext File Attributes   00000000 (0)\n-214975 Local Header Offset   00018189 (98697)\n-214979 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216EAC Ext File Attributes   00000000 (0)\n+216EB0 Local Header Offset   00030CEC (199916)\n+216EB4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214979: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216EB4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2149BD CENTRAL HEADER #161   02014B50 (33639248)\n-2149C1 Created Zip Spec      14 (20) '2.0'\n-2149C2 Created OS            00 (0) 'MS-DOS'\n-2149C3 Extract Zip Spec      14 (20) '2.0'\n-2149C4 Extract OS            00 (0) 'MS-DOS'\n-2149C5 General Purpose Flag  0808 (2056)\n+216F02 CENTRAL HEADER #161   02014B50 (33639248)\n+216F06 Created Zip Spec      14 (20) '2.0'\n+216F07 Created OS            00 (0) 'MS-DOS'\n+216F08 Extract Zip Spec      14 (20) '2.0'\n+216F09 Extract OS            00 (0) 'MS-DOS'\n+216F0A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2149C7 Compression Method    0008 (8) 'Deflated'\n-2149C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2149CD CRC                   00000000 (0)\n-2149D1 Compressed Size       00000002 (2)\n-2149D5 Uncompressed Size     00000000 (0)\n-2149D9 Filename Length       0038 (56)\n-2149DB Extra Length          0000 (0)\n-2149DD Comment Length        0000 (0)\n-2149DF Disk Start            0000 (0)\n-2149E1 Int File Attributes   0000 (0)\n+216F0C Compression Method    0008 (8) 'Deflated'\n+216F0E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216F12 CRC                   00000000 (0)\n+216F16 Compressed Size       00000002 (2)\n+216F1A Uncompressed Size     00000000 (0)\n+216F1E Filename Length       0027 (39)\n+216F20 Extra Length          0000 (0)\n+216F22 Comment Length        0000 (0)\n+216F24 Disk Start            0000 (0)\n+216F26 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2149E3 Ext File Attributes   00000000 (0)\n-2149E7 Local Header Offset   00018245 (98885)\n-2149EB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216F28 Ext File Attributes   00000000 (0)\n+216F2C Local Header Offset   00031086 (200838)\n+216F30 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2149EB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216F30: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214A23 CENTRAL HEADER #162   02014B50 (33639248)\n-214A27 Created Zip Spec      14 (20) '2.0'\n-214A28 Created OS            00 (0) 'MS-DOS'\n-214A29 Extract Zip Spec      14 (20) '2.0'\n-214A2A Extract OS            00 (0) 'MS-DOS'\n-214A2B General Purpose Flag  0808 (2056)\n+216F57 CENTRAL HEADER #162   02014B50 (33639248)\n+216F5B Created Zip Spec      14 (20) '2.0'\n+216F5C Created OS            00 (0) 'MS-DOS'\n+216F5D Extract Zip Spec      14 (20) '2.0'\n+216F5E Extract OS            00 (0) 'MS-DOS'\n+216F5F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214A2D Compression Method    0008 (8) 'Deflated'\n-214A2F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214A33 CRC                   A6C9E837 (2798250039)\n-214A37 Compressed Size       0000037D (893)\n-214A3B Uncompressed Size     0000084D (2125)\n-214A3F Filename Length       003F (63)\n-214A41 Extra Length          0000 (0)\n-214A43 Comment Length        0000 (0)\n-214A45 Disk Start            0000 (0)\n-214A47 Int File Attributes   0000 (0)\n+216F61 Compression Method    0008 (8) 'Deflated'\n+216F63 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216F67 CRC                   A6C08F00 (2797637376)\n+216F6B Compressed Size       0000060F (1551)\n+216F6F Uncompressed Size     00001361 (4961)\n+216F73 Filename Length       003D (61)\n+216F75 Extra Length          0000 (0)\n+216F77 Comment Length        0000 (0)\n+216F79 Disk Start            0000 (0)\n+216F7B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214A49 Ext File Attributes   00000000 (0)\n-214A4D Local Header Offset   000182AD (98989)\n-214A51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216F7D Ext File Attributes   00000000 (0)\n+216F81 Local Header Offset   000310DD (200925)\n+216F85 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214A51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216F85: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214A90 CENTRAL HEADER #163   02014B50 (33639248)\n-214A94 Created Zip Spec      14 (20) '2.0'\n-214A95 Created OS            00 (0) 'MS-DOS'\n-214A96 Extract Zip Spec      14 (20) '2.0'\n-214A97 Extract OS            00 (0) 'MS-DOS'\n-214A98 General Purpose Flag  0808 (2056)\n+216FC2 CENTRAL HEADER #163   02014B50 (33639248)\n+216FC6 Created Zip Spec      14 (20) '2.0'\n+216FC7 Created OS            00 (0) 'MS-DOS'\n+216FC8 Extract Zip Spec      14 (20) '2.0'\n+216FC9 Extract OS            00 (0) 'MS-DOS'\n+216FCA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214A9A Compression Method    0008 (8) 'Deflated'\n-214A9C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214AA0 CRC                   26719F8E (644980622)\n-214AA4 Compressed Size       0000004B (75)\n-214AA8 Uncompressed Size     0000004E (78)\n-214AAC Filename Length       0046 (70)\n-214AAE Extra Length          0000 (0)\n-214AB0 Comment Length        0000 (0)\n-214AB2 Disk Start            0000 (0)\n-214AB4 Int File Attributes   0000 (0)\n+216FCC Compression Method    0008 (8) 'Deflated'\n+216FCE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+216FD2 CRC                   FF9ED7FD (4288600061)\n+216FD6 Compressed Size       000004D0 (1232)\n+216FDA Uncompressed Size     00000ECB (3787)\n+216FDE Filename Length       003B (59)\n+216FE0 Extra Length          0000 (0)\n+216FE2 Comment Length        0000 (0)\n+216FE4 Disk Start            0000 (0)\n+216FE6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214AB6 Ext File Attributes   00000000 (0)\n-214ABA Local Header Offset   00018697 (99991)\n-214ABE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+216FE8 Ext File Attributes   00000000 (0)\n+216FEC Local Header Offset   00031757 (202583)\n+216FF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214ABE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x216FF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214B04 CENTRAL HEADER #164   02014B50 (33639248)\n-214B08 Created Zip Spec      14 (20) '2.0'\n-214B09 Created OS            00 (0) 'MS-DOS'\n-214B0A Extract Zip Spec      14 (20) '2.0'\n-214B0B Extract OS            00 (0) 'MS-DOS'\n-214B0C General Purpose Flag  0808 (2056)\n+21702B CENTRAL HEADER #164   02014B50 (33639248)\n+21702F Created Zip Spec      14 (20) '2.0'\n+217030 Created OS            00 (0) 'MS-DOS'\n+217031 Extract Zip Spec      14 (20) '2.0'\n+217032 Extract OS            00 (0) 'MS-DOS'\n+217033 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214B0E Compression Method    0008 (8) 'Deflated'\n-214B10 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214B14 CRC                   00000000 (0)\n-214B18 Compressed Size       00000002 (2)\n-214B1C Uncompressed Size     00000000 (0)\n-214B20 Filename Length       002A (42)\n-214B22 Extra Length          0000 (0)\n-214B24 Comment Length        0000 (0)\n-214B26 Disk Start            0000 (0)\n-214B28 Int File Attributes   0000 (0)\n+217035 Compression Method    0008 (8) 'Deflated'\n+217037 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21703B CRC                   00000000 (0)\n+21703F Compressed Size       00000002 (2)\n+217043 Uncompressed Size     00000000 (0)\n+217047 Filename Length       0028 (40)\n+217049 Extra Length          0000 (0)\n+21704B Comment Length        0000 (0)\n+21704D Disk Start            0000 (0)\n+21704F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214B2A Ext File Attributes   00000000 (0)\n-214B2E Local Header Offset   00018756 (100182)\n-214B32 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217051 Ext File Attributes   00000000 (0)\n+217055 Local Header Offset   00031C90 (203920)\n+217059 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214B32: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217059: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214B5C CENTRAL HEADER #165   02014B50 (33639248)\n-214B60 Created Zip Spec      14 (20) '2.0'\n-214B61 Created OS            00 (0) 'MS-DOS'\n-214B62 Extract Zip Spec      14 (20) '2.0'\n-214B63 Extract OS            00 (0) 'MS-DOS'\n-214B64 General Purpose Flag  0808 (2056)\n+217081 CENTRAL HEADER #165   02014B50 (33639248)\n+217085 Created Zip Spec      14 (20) '2.0'\n+217086 Created OS            00 (0) 'MS-DOS'\n+217087 Extract Zip Spec      14 (20) '2.0'\n+217088 Extract OS            00 (0) 'MS-DOS'\n+217089 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214B66 Compression Method    0008 (8) 'Deflated'\n-214B68 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214B6C CRC                   17F3C42C (401851436)\n-214B70 Compressed Size       0000039E (926)\n-214B74 Uncompressed Size     00000B8A (2954)\n-214B78 Filename Length       0031 (49)\n-214B7A Extra Length          0000 (0)\n-214B7C Comment Length        0000 (0)\n-214B7E Disk Start            0000 (0)\n-214B80 Int File Attributes   0000 (0)\n+21708B Compression Method    0008 (8) 'Deflated'\n+21708D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217091 CRC                   33C069B6 (868247990)\n+217095 Compressed Size       000002E0 (736)\n+217099 Uncompressed Size     000006EC (1772)\n+21709D Filename Length       0050 (80)\n+21709F Extra Length          0000 (0)\n+2170A1 Comment Length        0000 (0)\n+2170A3 Disk Start            0000 (0)\n+2170A5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214B82 Ext File Attributes   00000000 (0)\n-214B86 Local Header Offset   000187B0 (100272)\n-214B8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2170A7 Ext File Attributes   00000000 (0)\n+2170AB Local Header Offset   00031CE8 (204008)\n+2170AF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214B8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2170AF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214BBB CENTRAL HEADER #166   02014B50 (33639248)\n-214BBF Created Zip Spec      14 (20) '2.0'\n-214BC0 Created OS            00 (0) 'MS-DOS'\n-214BC1 Extract Zip Spec      14 (20) '2.0'\n-214BC2 Extract OS            00 (0) 'MS-DOS'\n-214BC3 General Purpose Flag  0808 (2056)\n+2170FF CENTRAL HEADER #166   02014B50 (33639248)\n+217103 Created Zip Spec      14 (20) '2.0'\n+217104 Created OS            00 (0) 'MS-DOS'\n+217105 Extract Zip Spec      14 (20) '2.0'\n+217106 Extract OS            00 (0) 'MS-DOS'\n+217107 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214BC5 Compression Method    0008 (8) 'Deflated'\n-214BC7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214BCB CRC                   9B978690 (2610398864)\n-214BCF Compressed Size       0000003D (61)\n-214BD3 Uncompressed Size     00000040 (64)\n-214BD7 Filename Length       0038 (56)\n-214BD9 Extra Length          0000 (0)\n-214BDB Comment Length        0000 (0)\n-214BDD Disk Start            0000 (0)\n-214BDF Int File Attributes   0000 (0)\n+217109 Compression Method    0008 (8) 'Deflated'\n+21710B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21710F CRC                   1A3A8FC1 (440045505)\n+217113 Compressed Size       0000048D (1165)\n+217117 Uncompressed Size     00000EE2 (3810)\n+21711B Filename Length       0045 (69)\n+21711D Extra Length          0000 (0)\n+21711F Comment Length        0000 (0)\n+217121 Disk Start            0000 (0)\n+217123 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214BE1 Ext File Attributes   00000000 (0)\n-214BE5 Local Header Offset   00018BAD (101293)\n-214BE9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217125 Ext File Attributes   00000000 (0)\n+217129 Local Header Offset   00032046 (204870)\n+21712D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214BE9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21712D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214C21 CENTRAL HEADER #167   02014B50 (33639248)\n-214C25 Created Zip Spec      14 (20) '2.0'\n-214C26 Created OS            00 (0) 'MS-DOS'\n-214C27 Extract Zip Spec      14 (20) '2.0'\n-214C28 Extract OS            00 (0) 'MS-DOS'\n-214C29 General Purpose Flag  0808 (2056)\n+217172 CENTRAL HEADER #167   02014B50 (33639248)\n+217176 Created Zip Spec      14 (20) '2.0'\n+217177 Created OS            00 (0) 'MS-DOS'\n+217178 Extract Zip Spec      14 (20) '2.0'\n+217179 Extract OS            00 (0) 'MS-DOS'\n+21717A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214C2B Compression Method    0008 (8) 'Deflated'\n-214C2D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214C31 CRC                   00000000 (0)\n-214C35 Compressed Size       00000002 (2)\n-214C39 Uncompressed Size     00000000 (0)\n-214C3D Filename Length       0038 (56)\n-214C3F Extra Length          0000 (0)\n-214C41 Comment Length        0000 (0)\n-214C43 Disk Start            0000 (0)\n-214C45 Int File Attributes   0000 (0)\n+21717C Compression Method    0008 (8) 'Deflated'\n+21717E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217182 CRC                   00000000 (0)\n+217186 Compressed Size       00000002 (2)\n+21718A Uncompressed Size     00000000 (0)\n+21718E Filename Length       0029 (41)\n+217190 Extra Length          0000 (0)\n+217192 Comment Length        0000 (0)\n+217194 Disk Start            0000 (0)\n+217196 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214C47 Ext File Attributes   00000000 (0)\n-214C4B Local Header Offset   00018C50 (101456)\n-214C4F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217198 Ext File Attributes   00000000 (0)\n+21719C Local Header Offset   00032546 (206150)\n+2171A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214C4F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2171A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214C87 CENTRAL HEADER #168   02014B50 (33639248)\n-214C8B Created Zip Spec      14 (20) '2.0'\n-214C8C Created OS            00 (0) 'MS-DOS'\n-214C8D Extract Zip Spec      14 (20) '2.0'\n-214C8E Extract OS            00 (0) 'MS-DOS'\n-214C8F General Purpose Flag  0808 (2056)\n+2171C9 CENTRAL HEADER #168   02014B50 (33639248)\n+2171CD Created Zip Spec      14 (20) '2.0'\n+2171CE Created OS            00 (0) 'MS-DOS'\n+2171CF Extract Zip Spec      14 (20) '2.0'\n+2171D0 Extract OS            00 (0) 'MS-DOS'\n+2171D1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214C91 Compression Method    0008 (8) 'Deflated'\n-214C93 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214C97 CRC                   E8369296 (3895890582)\n-214C9B Compressed Size       00000366 (870)\n-214C9F Uncompressed Size     000007B9 (1977)\n-214CA3 Filename Length       003F (63)\n-214CA5 Extra Length          0000 (0)\n-214CA7 Comment Length        0000 (0)\n-214CA9 Disk Start            0000 (0)\n-214CAB Int File Attributes   0000 (0)\n+2171D3 Compression Method    0008 (8) 'Deflated'\n+2171D5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2171D9 CRC                   B2FCFE3E (3002924606)\n+2171DD Compressed Size       0000038F (911)\n+2171E1 Uncompressed Size     0000090C (2316)\n+2171E5 Filename Length       0040 (64)\n+2171E7 Extra Length          0000 (0)\n+2171E9 Comment Length        0000 (0)\n+2171EB Disk Start            0000 (0)\n+2171ED Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214CAD Ext File Attributes   00000000 (0)\n-214CB1 Local Header Offset   00018CB8 (101560)\n-214CB5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2171EF Ext File Attributes   00000000 (0)\n+2171F3 Local Header Offset   0003259F (206239)\n+2171F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214CB5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2171F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214CF4 CENTRAL HEADER #169   02014B50 (33639248)\n-214CF8 Created Zip Spec      14 (20) '2.0'\n-214CF9 Created OS            00 (0) 'MS-DOS'\n-214CFA Extract Zip Spec      14 (20) '2.0'\n-214CFB Extract OS            00 (0) 'MS-DOS'\n-214CFC General Purpose Flag  0808 (2056)\n+217237 CENTRAL HEADER #169   02014B50 (33639248)\n+21723B Created Zip Spec      14 (20) '2.0'\n+21723C Created OS            00 (0) 'MS-DOS'\n+21723D Extract Zip Spec      14 (20) '2.0'\n+21723E Extract OS            00 (0) 'MS-DOS'\n+21723F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214CFE Compression Method    0008 (8) 'Deflated'\n-214D00 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214D04 CRC                   F5EE859D (4126049693)\n-214D08 Compressed Size       0000004B (75)\n-214D0C Uncompressed Size     0000004E (78)\n-214D10 Filename Length       0046 (70)\n-214D12 Extra Length          0000 (0)\n-214D14 Comment Length        0000 (0)\n-214D16 Disk Start            0000 (0)\n-214D18 Int File Attributes   0000 (0)\n+217241 Compression Method    0008 (8) 'Deflated'\n+217243 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217247 CRC                   8FEFC776 (2414856054)\n+21724B Compressed Size       00000361 (865)\n+21724F Uncompressed Size     000008CF (2255)\n+217253 Filename Length       004F (79)\n+217255 Extra Length          0000 (0)\n+217257 Comment Length        0000 (0)\n+217259 Disk Start            0000 (0)\n+21725B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214D1A Ext File Attributes   00000000 (0)\n-214D1E Local Header Offset   0001908B (102539)\n-214D22 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21725D Ext File Attributes   00000000 (0)\n+217261 Local Header Offset   0003299C (207260)\n+217265 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214D22: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217265: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214D68 CENTRAL HEADER #170   02014B50 (33639248)\n-214D6C Created Zip Spec      14 (20) '2.0'\n-214D6D Created OS            00 (0) 'MS-DOS'\n-214D6E Extract Zip Spec      14 (20) '2.0'\n-214D6F Extract OS            00 (0) 'MS-DOS'\n-214D70 General Purpose Flag  0808 (2056)\n+2172B4 CENTRAL HEADER #170   02014B50 (33639248)\n+2172B8 Created Zip Spec      14 (20) '2.0'\n+2172B9 Created OS            00 (0) 'MS-DOS'\n+2172BA Extract Zip Spec      14 (20) '2.0'\n+2172BB Extract OS            00 (0) 'MS-DOS'\n+2172BC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214D72 Compression Method    0008 (8) 'Deflated'\n-214D74 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214D78 CRC                   00000000 (0)\n-214D7C Compressed Size       00000002 (2)\n-214D80 Uncompressed Size     00000000 (0)\n-214D84 Filename Length       003D (61)\n-214D86 Extra Length          0000 (0)\n-214D88 Comment Length        0000 (0)\n-214D8A Disk Start            0000 (0)\n-214D8C Int File Attributes   0000 (0)\n+2172BE Compression Method    0008 (8) 'Deflated'\n+2172C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2172C4 CRC                   33BD82F4 (868057844)\n+2172C8 Compressed Size       000003FF (1023)\n+2172CC Uncompressed Size     00000AA3 (2723)\n+2172D0 Filename Length       0049 (73)\n+2172D2 Extra Length          0000 (0)\n+2172D4 Comment Length        0000 (0)\n+2172D6 Disk Start            0000 (0)\n+2172D8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214D8E Ext File Attributes   00000000 (0)\n-214D92 Local Header Offset   0001914A (102730)\n-214D96 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2172DA Ext File Attributes   00000000 (0)\n+2172DE Local Header Offset   00032D7A (208250)\n+2172E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214D96: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2172E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214DD3 CENTRAL HEADER #171   02014B50 (33639248)\n-214DD7 Created Zip Spec      14 (20) '2.0'\n-214DD8 Created OS            00 (0) 'MS-DOS'\n-214DD9 Extract Zip Spec      14 (20) '2.0'\n-214DDA Extract OS            00 (0) 'MS-DOS'\n-214DDB General Purpose Flag  0808 (2056)\n+21732B CENTRAL HEADER #171   02014B50 (33639248)\n+21732F Created Zip Spec      14 (20) '2.0'\n+217330 Created OS            00 (0) 'MS-DOS'\n+217331 Extract Zip Spec      14 (20) '2.0'\n+217332 Extract OS            00 (0) 'MS-DOS'\n+217333 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214DDD Compression Method    0008 (8) 'Deflated'\n-214DDF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214DE3 CRC                   16DF2D66 (383724902)\n-214DE7 Compressed Size       00000377 (887)\n-214DEB Uncompressed Size     0000083C (2108)\n-214DEF Filename Length       0044 (68)\n-214DF1 Extra Length          0000 (0)\n-214DF3 Comment Length        0000 (0)\n-214DF5 Disk Start            0000 (0)\n-214DF7 Int File Attributes   0000 (0)\n+217335 Compression Method    0008 (8) 'Deflated'\n+217337 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21733B CRC                   00000000 (0)\n+21733F Compressed Size       00000002 (2)\n+217343 Uncompressed Size     00000000 (0)\n+217347 Filename Length       0029 (41)\n+217349 Extra Length          0000 (0)\n+21734B Comment Length        0000 (0)\n+21734D Disk Start            0000 (0)\n+21734F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214DF9 Ext File Attributes   00000000 (0)\n-214DFD Local Header Offset   000191B7 (102839)\n-214E01 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217351 Ext File Attributes   00000000 (0)\n+217355 Local Header Offset   000331F0 (209392)\n+217359 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214E01: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217359: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214E45 CENTRAL HEADER #172   02014B50 (33639248)\n-214E49 Created Zip Spec      14 (20) '2.0'\n-214E4A Created OS            00 (0) 'MS-DOS'\n-214E4B Extract Zip Spec      14 (20) '2.0'\n-214E4C Extract OS            00 (0) 'MS-DOS'\n-214E4D General Purpose Flag  0808 (2056)\n+217382 CENTRAL HEADER #172   02014B50 (33639248)\n+217386 Created Zip Spec      14 (20) '2.0'\n+217387 Created OS            00 (0) 'MS-DOS'\n+217388 Extract Zip Spec      14 (20) '2.0'\n+217389 Extract OS            00 (0) 'MS-DOS'\n+21738A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214E4F Compression Method    0008 (8) 'Deflated'\n-214E51 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214E55 CRC                   A3F71CB2 (2750880946)\n-214E59 Compressed Size       0000004F (79)\n-214E5D Uncompressed Size     00000053 (83)\n-214E61 Filename Length       004B (75)\n-214E63 Extra Length          0000 (0)\n-214E65 Comment Length        0000 (0)\n-214E67 Disk Start            0000 (0)\n-214E69 Int File Attributes   0000 (0)\n+21738C Compression Method    0008 (8) 'Deflated'\n+21738E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217392 CRC                   BCC9CB9D (3167341469)\n+217396 Compressed Size       000005AE (1454)\n+21739A Uncompressed Size     000010C1 (4289)\n+21739E Filename Length       0041 (65)\n+2173A0 Extra Length          0000 (0)\n+2173A2 Comment Length        0000 (0)\n+2173A4 Disk Start            0000 (0)\n+2173A6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214E6B Ext File Attributes   00000000 (0)\n-214E6F Local Header Offset   000195A0 (103840)\n-214E73 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2173A8 Ext File Attributes   00000000 (0)\n+2173AC Local Header Offset   00033249 (209481)\n+2173B0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214E73: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2173B0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214EBE CENTRAL HEADER #173   02014B50 (33639248)\n-214EC2 Created Zip Spec      14 (20) '2.0'\n-214EC3 Created OS            00 (0) 'MS-DOS'\n-214EC4 Extract Zip Spec      14 (20) '2.0'\n-214EC5 Extract OS            00 (0) 'MS-DOS'\n-214EC6 General Purpose Flag  0808 (2056)\n+2173F1 CENTRAL HEADER #173   02014B50 (33639248)\n+2173F5 Created Zip Spec      14 (20) '2.0'\n+2173F6 Created OS            00 (0) 'MS-DOS'\n+2173F7 Extract Zip Spec      14 (20) '2.0'\n+2173F8 Extract OS            00 (0) 'MS-DOS'\n+2173F9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214EC8 Compression Method    0008 (8) 'Deflated'\n-214ECA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214ECE CRC                   00000000 (0)\n-214ED2 Compressed Size       00000002 (2)\n-214ED6 Uncompressed Size     00000000 (0)\n-214EDA Filename Length       0038 (56)\n-214EDC Extra Length          0000 (0)\n-214EDE Comment Length        0000 (0)\n-214EE0 Disk Start            0000 (0)\n-214EE2 Int File Attributes   0000 (0)\n+2173FB Compression Method    0008 (8) 'Deflated'\n+2173FD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217401 CRC                   D501B98C (3573660044)\n+217405 Compressed Size       000006C7 (1735)\n+217409 Uncompressed Size     000014EB (5355)\n+21740D Filename Length       0047 (71)\n+21740F Extra Length          0000 (0)\n+217411 Comment Length        0000 (0)\n+217413 Disk Start            0000 (0)\n+217415 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214EE4 Ext File Attributes   00000000 (0)\n-214EE8 Local Header Offset   00019668 (104040)\n-214EEC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217417 Ext File Attributes   00000000 (0)\n+21741B Local Header Offset   00033866 (211046)\n+21741F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214EEC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21741F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214F24 CENTRAL HEADER #174   02014B50 (33639248)\n-214F28 Created Zip Spec      14 (20) '2.0'\n-214F29 Created OS            00 (0) 'MS-DOS'\n-214F2A Extract Zip Spec      14 (20) '2.0'\n-214F2B Extract OS            00 (0) 'MS-DOS'\n-214F2C General Purpose Flag  0808 (2056)\n+217466 CENTRAL HEADER #174   02014B50 (33639248)\n+21746A Created Zip Spec      14 (20) '2.0'\n+21746B Created OS            00 (0) 'MS-DOS'\n+21746C Extract Zip Spec      14 (20) '2.0'\n+21746D Extract OS            00 (0) 'MS-DOS'\n+21746E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214F2E Compression Method    0008 (8) 'Deflated'\n-214F30 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214F34 CRC                   4C93F7E4 (1284765668)\n-214F38 Compressed Size       00000379 (889)\n-214F3C Uncompressed Size     0000084D (2125)\n-214F40 Filename Length       003F (63)\n-214F42 Extra Length          0000 (0)\n-214F44 Comment Length        0000 (0)\n-214F46 Disk Start            0000 (0)\n-214F48 Int File Attributes   0000 (0)\n+217470 Compression Method    0008 (8) 'Deflated'\n+217472 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217476 CRC                   5955E637 (1498801719)\n+21747A Compressed Size       000006DA (1754)\n+21747E Uncompressed Size     000015EF (5615)\n+217482 Filename Length       0044 (68)\n+217484 Extra Length          0000 (0)\n+217486 Comment Length        0000 (0)\n+217488 Disk Start            0000 (0)\n+21748A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214F4A Ext File Attributes   00000000 (0)\n-214F4E Local Header Offset   000196D0 (104144)\n-214F52 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21748C Ext File Attributes   00000000 (0)\n+217490 Local Header Offset   00033FA2 (212898)\n+217494 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214F52: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217494: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-214F91 CENTRAL HEADER #175   02014B50 (33639248)\n-214F95 Created Zip Spec      14 (20) '2.0'\n-214F96 Created OS            00 (0) 'MS-DOS'\n-214F97 Extract Zip Spec      14 (20) '2.0'\n-214F98 Extract OS            00 (0) 'MS-DOS'\n-214F99 General Purpose Flag  0808 (2056)\n+2174D8 CENTRAL HEADER #175   02014B50 (33639248)\n+2174DC Created Zip Spec      14 (20) '2.0'\n+2174DD Created OS            00 (0) 'MS-DOS'\n+2174DE Extract Zip Spec      14 (20) '2.0'\n+2174DF Extract OS            00 (0) 'MS-DOS'\n+2174E0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-214F9B Compression Method    0008 (8) 'Deflated'\n-214F9D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-214FA1 CRC                   D5DD6E04 (3588058628)\n-214FA5 Compressed Size       0000004B (75)\n-214FA9 Uncompressed Size     0000004E (78)\n-214FAD Filename Length       0046 (70)\n-214FAF Extra Length          0000 (0)\n-214FB1 Comment Length        0000 (0)\n-214FB3 Disk Start            0000 (0)\n-214FB5 Int File Attributes   0000 (0)\n+2174E2 Compression Method    0008 (8) 'Deflated'\n+2174E4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2174E8 CRC                   E9DD16E0 (3923580640)\n+2174EC Compressed Size       00000557 (1367)\n+2174F0 Uncompressed Size     00000D50 (3408)\n+2174F4 Filename Length       003F (63)\n+2174F6 Extra Length          0000 (0)\n+2174F8 Comment Length        0000 (0)\n+2174FA Disk Start            0000 (0)\n+2174FC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-214FB7 Ext File Attributes   00000000 (0)\n-214FBB Local Header Offset   00019AB6 (105142)\n-214FBF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2174FE Ext File Attributes   00000000 (0)\n+217502 Local Header Offset   000346EE (214766)\n+217506 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x214FBF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217506: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215005 CENTRAL HEADER #176   02014B50 (33639248)\n-215009 Created Zip Spec      14 (20) '2.0'\n-21500A Created OS            00 (0) 'MS-DOS'\n-21500B Extract Zip Spec      14 (20) '2.0'\n-21500C Extract OS            00 (0) 'MS-DOS'\n-21500D General Purpose Flag  0808 (2056)\n+217545 CENTRAL HEADER #176   02014B50 (33639248)\n+217549 Created Zip Spec      14 (20) '2.0'\n+21754A Created OS            00 (0) 'MS-DOS'\n+21754B Extract Zip Spec      14 (20) '2.0'\n+21754C Extract OS            00 (0) 'MS-DOS'\n+21754D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21500F Compression Method    0008 (8) 'Deflated'\n-215011 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215015 CRC                   00000000 (0)\n-215019 Compressed Size       00000002 (2)\n-21501D Uncompressed Size     00000000 (0)\n-215021 Filename Length       003D (61)\n-215023 Extra Length          0000 (0)\n-215025 Comment Length        0000 (0)\n-215027 Disk Start            0000 (0)\n-215029 Int File Attributes   0000 (0)\n+21754F Compression Method    0008 (8) 'Deflated'\n+217551 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217555 CRC                   B03BDD5E (2956713310)\n+217559 Compressed Size       00000618 (1560)\n+21755D Uncompressed Size     000012CC (4812)\n+217561 Filename Length       0043 (67)\n+217563 Extra Length          0000 (0)\n+217565 Comment Length        0000 (0)\n+217567 Disk Start            0000 (0)\n+217569 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21502B Ext File Attributes   00000000 (0)\n-21502F Local Header Offset   00019B75 (105333)\n-215033 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21756B Ext File Attributes   00000000 (0)\n+21756F Local Header Offset   00034CB2 (216242)\n+217573 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215033: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217573: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215070 CENTRAL HEADER #177   02014B50 (33639248)\n-215074 Created Zip Spec      14 (20) '2.0'\n-215075 Created OS            00 (0) 'MS-DOS'\n-215076 Extract Zip Spec      14 (20) '2.0'\n-215077 Extract OS            00 (0) 'MS-DOS'\n-215078 General Purpose Flag  0808 (2056)\n+2175B6 CENTRAL HEADER #177   02014B50 (33639248)\n+2175BA Created Zip Spec      14 (20) '2.0'\n+2175BB Created OS            00 (0) 'MS-DOS'\n+2175BC Extract Zip Spec      14 (20) '2.0'\n+2175BD Extract OS            00 (0) 'MS-DOS'\n+2175BE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21507A Compression Method    0008 (8) 'Deflated'\n-21507C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215080 CRC                   FE255727 (4263860007)\n-215084 Compressed Size       0000037D (893)\n-215088 Uncompressed Size     00000840 (2112)\n-21508C Filename Length       0044 (68)\n-21508E Extra Length          0000 (0)\n-215090 Comment Length        0000 (0)\n-215092 Disk Start            0000 (0)\n-215094 Int File Attributes   0000 (0)\n+2175C0 Compression Method    0008 (8) 'Deflated'\n+2175C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2175C6 CRC                   0139FCC5 (20577477)\n+2175CA Compressed Size       0000060A (1546)\n+2175CE Uncompressed Size     00001239 (4665)\n+2175D2 Filename Length       0049 (73)\n+2175D4 Extra Length          0000 (0)\n+2175D6 Comment Length        0000 (0)\n+2175D8 Disk Start            0000 (0)\n+2175DA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215096 Ext File Attributes   00000000 (0)\n-21509A Local Header Offset   00019BE2 (105442)\n-21509E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2175DC Ext File Attributes   00000000 (0)\n+2175E0 Local Header Offset   0003533B (217915)\n+2175E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21509E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2175E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2150E2 CENTRAL HEADER #178   02014B50 (33639248)\n-2150E6 Created Zip Spec      14 (20) '2.0'\n-2150E7 Created OS            00 (0) 'MS-DOS'\n-2150E8 Extract Zip Spec      14 (20) '2.0'\n-2150E9 Extract OS            00 (0) 'MS-DOS'\n-2150EA General Purpose Flag  0808 (2056)\n+21762D CENTRAL HEADER #178   02014B50 (33639248)\n+217631 Created Zip Spec      14 (20) '2.0'\n+217632 Created OS            00 (0) 'MS-DOS'\n+217633 Extract Zip Spec      14 (20) '2.0'\n+217634 Extract OS            00 (0) 'MS-DOS'\n+217635 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2150EC Compression Method    0008 (8) 'Deflated'\n-2150EE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2150F2 CRC                   9BC53808 (2613393416)\n-2150F6 Compressed Size       0000004F (79)\n-2150FA Uncompressed Size     00000053 (83)\n-2150FE Filename Length       004B (75)\n-215100 Extra Length          0000 (0)\n-215102 Comment Length        0000 (0)\n-215104 Disk Start            0000 (0)\n-215106 Int File Attributes   0000 (0)\n+217637 Compression Method    0008 (8) 'Deflated'\n+217639 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21763D CRC                   00000000 (0)\n+217641 Compressed Size       00000002 (2)\n+217645 Uncompressed Size     00000000 (0)\n+217649 Filename Length       0024 (36)\n+21764B Extra Length          0000 (0)\n+21764D Comment Length        0000 (0)\n+21764F Disk Start            0000 (0)\n+217651 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215108 Ext File Attributes   00000000 (0)\n-21510C Local Header Offset   00019FD1 (106449)\n-215110 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217653 Ext File Attributes   00000000 (0)\n+217657 Local Header Offset   000359BC (219580)\n+21765B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215110: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21765B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21515B CENTRAL HEADER #179   02014B50 (33639248)\n-21515F Created Zip Spec      14 (20) '2.0'\n-215160 Created OS            00 (0) 'MS-DOS'\n-215161 Extract Zip Spec      14 (20) '2.0'\n-215162 Extract OS            00 (0) 'MS-DOS'\n-215163 General Purpose Flag  0808 (2056)\n+21767F CENTRAL HEADER #179   02014B50 (33639248)\n+217683 Created Zip Spec      14 (20) '2.0'\n+217684 Created OS            00 (0) 'MS-DOS'\n+217685 Extract Zip Spec      14 (20) '2.0'\n+217686 Extract OS            00 (0) 'MS-DOS'\n+217687 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215165 Compression Method    0008 (8) 'Deflated'\n-215167 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21516B CRC                   00000000 (0)\n-21516F Compressed Size       00000002 (2)\n-215173 Uncompressed Size     00000000 (0)\n-215177 Filename Length       0043 (67)\n-215179 Extra Length          0000 (0)\n-21517B Comment Length        0000 (0)\n-21517D Disk Start            0000 (0)\n-21517F Int File Attributes   0000 (0)\n+217689 Compression Method    0008 (8) 'Deflated'\n+21768B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21768F CRC                   B70DC735 (3071133493)\n+217693 Compressed Size       000003D0 (976)\n+217697 Uncompressed Size     00000959 (2393)\n+21769B Filename Length       0034 (52)\n+21769D Extra Length          0000 (0)\n+21769F Comment Length        0000 (0)\n+2176A1 Disk Start            0000 (0)\n+2176A3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215181 Ext File Attributes   00000000 (0)\n-215185 Local Header Offset   0001A099 (106649)\n-215189 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2176A5 Ext File Attributes   00000000 (0)\n+2176A9 Local Header Offset   00035A10 (219664)\n+2176AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215189: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2176AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2151CC CENTRAL HEADER #180   02014B50 (33639248)\n-2151D0 Created Zip Spec      14 (20) '2.0'\n-2151D1 Created OS            00 (0) 'MS-DOS'\n-2151D2 Extract Zip Spec      14 (20) '2.0'\n-2151D3 Extract OS            00 (0) 'MS-DOS'\n-2151D4 General Purpose Flag  0808 (2056)\n+2176E1 CENTRAL HEADER #180   02014B50 (33639248)\n+2176E5 Created Zip Spec      14 (20) '2.0'\n+2176E6 Created OS            00 (0) 'MS-DOS'\n+2176E7 Extract Zip Spec      14 (20) '2.0'\n+2176E8 Extract OS            00 (0) 'MS-DOS'\n+2176E9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2151D6 Compression Method    0008 (8) 'Deflated'\n-2151D8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2151DC CRC                   0F6B44E1 (258688225)\n-2151E0 Compressed Size       0000035B (859)\n-2151E4 Uncompressed Size     000007F3 (2035)\n-2151E8 Filename Length       004A (74)\n-2151EA Extra Length          0000 (0)\n-2151EC Comment Length        0000 (0)\n-2151EE Disk Start            0000 (0)\n-2151F0 Int File Attributes   0000 (0)\n+2176EB Compression Method    0008 (8) 'Deflated'\n+2176ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2176F1 CRC                   5ECBBD86 (1590410630)\n+2176F5 Compressed Size       000002E5 (741)\n+2176F9 Uncompressed Size     0000068E (1678)\n+2176FD Filename Length       003B (59)\n+2176FF Extra Length          0000 (0)\n+217701 Comment Length        0000 (0)\n+217703 Disk Start            0000 (0)\n+217705 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2151F2 Ext File Attributes   00000000 (0)\n-2151F6 Local Header Offset   0001A10C (106764)\n-2151FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217707 Ext File Attributes   00000000 (0)\n+21770B Local Header Offset   00035E42 (220738)\n+21770F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2151FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21770F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215244 CENTRAL HEADER #181   02014B50 (33639248)\n-215248 Created Zip Spec      14 (20) '2.0'\n-215249 Created OS            00 (0) 'MS-DOS'\n-21524A Extract Zip Spec      14 (20) '2.0'\n-21524B Extract OS            00 (0) 'MS-DOS'\n-21524C General Purpose Flag  0808 (2056)\n+21774A CENTRAL HEADER #181   02014B50 (33639248)\n+21774E Created Zip Spec      14 (20) '2.0'\n+21774F Created OS            00 (0) 'MS-DOS'\n+217750 Extract Zip Spec      14 (20) '2.0'\n+217751 Extract OS            00 (0) 'MS-DOS'\n+217752 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21524E Compression Method    0008 (8) 'Deflated'\n-215250 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215254 CRC                   E73563C3 (3879035843)\n-215258 Compressed Size       00000052 (82)\n-21525C Uncompressed Size     00000059 (89)\n-215260 Filename Length       0051 (81)\n-215262 Extra Length          0000 (0)\n-215264 Comment Length        0000 (0)\n-215266 Disk Start            0000 (0)\n-215268 Int File Attributes   0000 (0)\n+217754 Compression Method    0008 (8) 'Deflated'\n+217756 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21775A CRC                   0CC7ECCD (214428877)\n+21775E Compressed Size       000002E1 (737)\n+217762 Uncompressed Size     00000667 (1639)\n+217766 Filename Length       0038 (56)\n+217768 Extra Length          0000 (0)\n+21776A Comment Length        0000 (0)\n+21776C Disk Start            0000 (0)\n+21776E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21526A Ext File Attributes   00000000 (0)\n-21526E Local Header Offset   0001A4DF (107743)\n-215272 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217770 Ext File Attributes   00000000 (0)\n+217774 Local Header Offset   00036190 (221584)\n+217778 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215272: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217778: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2152C3 CENTRAL HEADER #182   02014B50 (33639248)\n-2152C7 Created Zip Spec      14 (20) '2.0'\n-2152C8 Created OS            00 (0) 'MS-DOS'\n-2152C9 Extract Zip Spec      14 (20) '2.0'\n-2152CA Extract OS            00 (0) 'MS-DOS'\n-2152CB General Purpose Flag  0808 (2056)\n+2177B0 CENTRAL HEADER #182   02014B50 (33639248)\n+2177B4 Created Zip Spec      14 (20) '2.0'\n+2177B5 Created OS            00 (0) 'MS-DOS'\n+2177B6 Extract Zip Spec      14 (20) '2.0'\n+2177B7 Extract OS            00 (0) 'MS-DOS'\n+2177B8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2152CD Compression Method    0008 (8) 'Deflated'\n-2152CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2152D3 CRC                   00000000 (0)\n-2152D7 Compressed Size       00000002 (2)\n-2152DB Uncompressed Size     00000000 (0)\n-2152DF Filename Length       0038 (56)\n-2152E1 Extra Length          0000 (0)\n-2152E3 Comment Length        0000 (0)\n-2152E5 Disk Start            0000 (0)\n-2152E7 Int File Attributes   0000 (0)\n+2177BA Compression Method    0008 (8) 'Deflated'\n+2177BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2177C0 CRC                   091CC51B (152880411)\n+2177C4 Compressed Size       000002DF (735)\n+2177C8 Uncompressed Size     00000665 (1637)\n+2177CC Filename Length       0038 (56)\n+2177CE Extra Length          0000 (0)\n+2177D0 Comment Length        0000 (0)\n+2177D2 Disk Start            0000 (0)\n+2177D4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2152E9 Ext File Attributes   00000000 (0)\n-2152ED Local Header Offset   0001A5B0 (107952)\n-2152F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2177D6 Ext File Attributes   00000000 (0)\n+2177DA Local Header Offset   000364D7 (222423)\n+2177DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2152F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2177DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215329 CENTRAL HEADER #183   02014B50 (33639248)\n-21532D Created Zip Spec      14 (20) '2.0'\n-21532E Created OS            00 (0) 'MS-DOS'\n-21532F Extract Zip Spec      14 (20) '2.0'\n-215330 Extract OS            00 (0) 'MS-DOS'\n-215331 General Purpose Flag  0808 (2056)\n+217816 CENTRAL HEADER #183   02014B50 (33639248)\n+21781A Created Zip Spec      14 (20) '2.0'\n+21781B Created OS            00 (0) 'MS-DOS'\n+21781C Extract Zip Spec      14 (20) '2.0'\n+21781D Extract OS            00 (0) 'MS-DOS'\n+21781E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215333 Compression Method    0008 (8) 'Deflated'\n-215335 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215339 CRC                   7BDC1B8D (2078022541)\n-21533D Compressed Size       0000037E (894)\n-215341 Uncompressed Size     00000836 (2102)\n-215345 Filename Length       003F (63)\n-215347 Extra Length          0000 (0)\n-215349 Comment Length        0000 (0)\n-21534B Disk Start            0000 (0)\n-21534D Int File Attributes   0000 (0)\n+217820 Compression Method    0008 (8) 'Deflated'\n+217822 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217826 CRC                   43B612AE (1136005806)\n+21782A Compressed Size       000002B9 (697)\n+21782E Uncompressed Size     0000056A (1386)\n+217832 Filename Length       003A (58)\n+217834 Extra Length          0000 (0)\n+217836 Comment Length        0000 (0)\n+217838 Disk Start            0000 (0)\n+21783A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21534F Ext File Attributes   00000000 (0)\n-215353 Local Header Offset   0001A618 (108056)\n-215357 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21783C Ext File Attributes   00000000 (0)\n+217840 Local Header Offset   0003681C (223260)\n+217844 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215357: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217844: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215396 CENTRAL HEADER #184   02014B50 (33639248)\n-21539A Created Zip Spec      14 (20) '2.0'\n-21539B Created OS            00 (0) 'MS-DOS'\n-21539C Extract Zip Spec      14 (20) '2.0'\n-21539D Extract OS            00 (0) 'MS-DOS'\n-21539E General Purpose Flag  0808 (2056)\n+21787E CENTRAL HEADER #184   02014B50 (33639248)\n+217882 Created Zip Spec      14 (20) '2.0'\n+217883 Created OS            00 (0) 'MS-DOS'\n+217884 Extract Zip Spec      14 (20) '2.0'\n+217885 Extract OS            00 (0) 'MS-DOS'\n+217886 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2153A0 Compression Method    0008 (8) 'Deflated'\n-2153A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2153A6 CRC                   9A185178 (2585284984)\n-2153AA Compressed Size       0000004B (75)\n-2153AE Uncompressed Size     0000004E (78)\n-2153B2 Filename Length       0046 (70)\n-2153B4 Extra Length          0000 (0)\n-2153B6 Comment Length        0000 (0)\n-2153B8 Disk Start            0000 (0)\n-2153BA Int File Attributes   0000 (0)\n+217888 Compression Method    0008 (8) 'Deflated'\n+21788A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21788E CRC                   DDA728F5 (3718719733)\n+217892 Compressed Size       000002E0 (736)\n+217896 Uncompressed Size     0000066F (1647)\n+21789A Filename Length       0039 (57)\n+21789C Extra Length          0000 (0)\n+21789E Comment Length        0000 (0)\n+2178A0 Disk Start            0000 (0)\n+2178A2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2153BC Ext File Attributes   00000000 (0)\n-2153C0 Local Header Offset   0001AA03 (109059)\n-2153C4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2178A4 Ext File Attributes   00000000 (0)\n+2178A8 Local Header Offset   00036B3D (224061)\n+2178AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2153C4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2178AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21540A CENTRAL HEADER #185   02014B50 (33639248)\n-21540E Created Zip Spec      14 (20) '2.0'\n-21540F Created OS            00 (0) 'MS-DOS'\n-215410 Extract Zip Spec      14 (20) '2.0'\n-215411 Extract OS            00 (0) 'MS-DOS'\n-215412 General Purpose Flag  0808 (2056)\n+2178E5 CENTRAL HEADER #185   02014B50 (33639248)\n+2178E9 Created Zip Spec      14 (20) '2.0'\n+2178EA Created OS            00 (0) 'MS-DOS'\n+2178EB Extract Zip Spec      14 (20) '2.0'\n+2178EC Extract OS            00 (0) 'MS-DOS'\n+2178ED General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215414 Compression Method    0008 (8) 'Deflated'\n-215416 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21541A CRC                   00000000 (0)\n-21541E Compressed Size       00000002 (2)\n-215422 Uncompressed Size     00000000 (0)\n-215426 Filename Length       0039 (57)\n-215428 Extra Length          0000 (0)\n-21542A Comment Length        0000 (0)\n-21542C Disk Start            0000 (0)\n-21542E Int File Attributes   0000 (0)\n+2178EF Compression Method    0008 (8) 'Deflated'\n+2178F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2178F5 CRC                   389B0984 (949684612)\n+2178F9 Compressed Size       000002B7 (695)\n+2178FD Uncompressed Size     0000055A (1370)\n+217901 Filename Length       0037 (55)\n+217903 Extra Length          0000 (0)\n+217905 Comment Length        0000 (0)\n+217907 Disk Start            0000 (0)\n+217909 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215430 Ext File Attributes   00000000 (0)\n-215434 Local Header Offset   0001AAC2 (109250)\n-215438 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21790B Ext File Attributes   00000000 (0)\n+21790F Local Header Offset   00036E84 (224900)\n+217913 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215438: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217913: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215471 CENTRAL HEADER #186   02014B50 (33639248)\n-215475 Created Zip Spec      14 (20) '2.0'\n-215476 Created OS            00 (0) 'MS-DOS'\n-215477 Extract Zip Spec      14 (20) '2.0'\n-215478 Extract OS            00 (0) 'MS-DOS'\n-215479 General Purpose Flag  0808 (2056)\n+21794A CENTRAL HEADER #186   02014B50 (33639248)\n+21794E Created Zip Spec      14 (20) '2.0'\n+21794F Created OS            00 (0) 'MS-DOS'\n+217950 Extract Zip Spec      14 (20) '2.0'\n+217951 Extract OS            00 (0) 'MS-DOS'\n+217952 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21547B Compression Method    0008 (8) 'Deflated'\n-21547D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215481 CRC                   09F70F91 (167186321)\n-215485 Compressed Size       0000038B (907)\n-215489 Uncompressed Size     000008B7 (2231)\n-21548D Filename Length       0040 (64)\n-21548F Extra Length          0000 (0)\n-215491 Comment Length        0000 (0)\n-215493 Disk Start            0000 (0)\n-215495 Int File Attributes   0000 (0)\n+217954 Compression Method    0008 (8) 'Deflated'\n+217956 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21795A CRC                   792EF15D (2033119581)\n+21795E Compressed Size       000002D8 (728)\n+217962 Uncompressed Size     000005FF (1535)\n+217966 Filename Length       0033 (51)\n+217968 Extra Length          0000 (0)\n+21796A Comment Length        0000 (0)\n+21796C Disk Start            0000 (0)\n+21796E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215497 Ext File Attributes   00000000 (0)\n-21549B Local Header Offset   0001AB2B (109355)\n-21549F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217970 Ext File Attributes   00000000 (0)\n+217974 Local Header Offset   000371A0 (225696)\n+217978 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21549F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217978: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2154DF CENTRAL HEADER #187   02014B50 (33639248)\n-2154E3 Created Zip Spec      14 (20) '2.0'\n-2154E4 Created OS            00 (0) 'MS-DOS'\n-2154E5 Extract Zip Spec      14 (20) '2.0'\n-2154E6 Extract OS            00 (0) 'MS-DOS'\n-2154E7 General Purpose Flag  0808 (2056)\n+2179AB CENTRAL HEADER #187   02014B50 (33639248)\n+2179AF Created Zip Spec      14 (20) '2.0'\n+2179B0 Created OS            00 (0) 'MS-DOS'\n+2179B1 Extract Zip Spec      14 (20) '2.0'\n+2179B2 Extract OS            00 (0) 'MS-DOS'\n+2179B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2154E9 Compression Method    0008 (8) 'Deflated'\n-2154EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2154EF CRC                   BCFDA422 (3170739234)\n-2154F3 Compressed Size       0000004C (76)\n-2154F7 Uncompressed Size     0000004F (79)\n-2154FB Filename Length       0047 (71)\n-2154FD Extra Length          0000 (0)\n-2154FF Comment Length        0000 (0)\n-215501 Disk Start            0000 (0)\n-215503 Int File Attributes   0000 (0)\n+2179B5 Compression Method    0008 (8) 'Deflated'\n+2179B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2179BB CRC                   C7E5A422 (3353715746)\n+2179BF Compressed Size       000002B7 (695)\n+2179C3 Uncompressed Size     0000055E (1374)\n+2179C7 Filename Length       0038 (56)\n+2179C9 Extra Length          0000 (0)\n+2179CB Comment Length        0000 (0)\n+2179CD Disk Start            0000 (0)\n+2179CF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215505 Ext File Attributes   00000000 (0)\n-215509 Local Header Offset   0001AF24 (110372)\n-21550D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2179D1 Ext File Attributes   00000000 (0)\n+2179D5 Local Header Offset   000374D9 (226521)\n+2179D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21550D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2179D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215554 CENTRAL HEADER #188   02014B50 (33639248)\n-215558 Created Zip Spec      14 (20) '2.0'\n-215559 Created OS            00 (0) 'MS-DOS'\n-21555A Extract Zip Spec      14 (20) '2.0'\n-21555B Extract OS            00 (0) 'MS-DOS'\n-21555C General Purpose Flag  0808 (2056)\n+217A11 CENTRAL HEADER #188   02014B50 (33639248)\n+217A15 Created Zip Spec      14 (20) '2.0'\n+217A16 Created OS            00 (0) 'MS-DOS'\n+217A17 Extract Zip Spec      14 (20) '2.0'\n+217A18 Extract OS            00 (0) 'MS-DOS'\n+217A19 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21555E Compression Method    0008 (8) 'Deflated'\n-215560 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215564 CRC                   00000000 (0)\n-215568 Compressed Size       00000002 (2)\n-21556C Uncompressed Size     00000000 (0)\n-215570 Filename Length       0039 (57)\n-215572 Extra Length          0000 (0)\n-215574 Comment Length        0000 (0)\n-215576 Disk Start            0000 (0)\n-215578 Int File Attributes   0000 (0)\n+217A1B Compression Method    0008 (8) 'Deflated'\n+217A1D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217A21 CRC                   2C8707FF (747046911)\n+217A25 Compressed Size       000002DF (735)\n+217A29 Uncompressed Size     000005E2 (1506)\n+217A2D Filename Length       0032 (50)\n+217A2F Extra Length          0000 (0)\n+217A31 Comment Length        0000 (0)\n+217A33 Disk Start            0000 (0)\n+217A35 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21557A Ext File Attributes   00000000 (0)\n-21557E Local Header Offset   0001AFE5 (110565)\n-215582 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217A37 Ext File Attributes   00000000 (0)\n+217A3B Local Header Offset   000377F6 (227318)\n+217A3F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215582: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217A3F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2155BB CENTRAL HEADER #189   02014B50 (33639248)\n-2155BF Created Zip Spec      14 (20) '2.0'\n-2155C0 Created OS            00 (0) 'MS-DOS'\n-2155C1 Extract Zip Spec      14 (20) '2.0'\n-2155C2 Extract OS            00 (0) 'MS-DOS'\n-2155C3 General Purpose Flag  0808 (2056)\n+217A71 CENTRAL HEADER #189   02014B50 (33639248)\n+217A75 Created Zip Spec      14 (20) '2.0'\n+217A76 Created OS            00 (0) 'MS-DOS'\n+217A77 Extract Zip Spec      14 (20) '2.0'\n+217A78 Extract OS            00 (0) 'MS-DOS'\n+217A79 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2155C5 Compression Method    0008 (8) 'Deflated'\n-2155C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2155CB CRC                   469E1753 (1184765779)\n-2155CF Compressed Size       0000036F (879)\n-2155D3 Uncompressed Size     0000084D (2125)\n-2155D7 Filename Length       0040 (64)\n-2155D9 Extra Length          0000 (0)\n-2155DB Comment Length        0000 (0)\n-2155DD Disk Start            0000 (0)\n-2155DF Int File Attributes   0000 (0)\n+217A7B Compression Method    0008 (8) 'Deflated'\n+217A7D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217A81 CRC                   B5B9A154 (3048841556)\n+217A85 Compressed Size       0000044E (1102)\n+217A89 Uncompressed Size     00000B6F (2927)\n+217A8D Filename Length       0036 (54)\n+217A8F Extra Length          0000 (0)\n+217A91 Comment Length        0000 (0)\n+217A93 Disk Start            0000 (0)\n+217A95 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2155E1 Ext File Attributes   00000000 (0)\n-2155E5 Local Header Offset   0001B04E (110670)\n-2155E9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217A97 Ext File Attributes   00000000 (0)\n+217A9B Local Header Offset   00037B35 (228149)\n+217A9F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2155E9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217A9F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215629 CENTRAL HEADER #190   02014B50 (33639248)\n-21562D Created Zip Spec      14 (20) '2.0'\n-21562E Created OS            00 (0) 'MS-DOS'\n-21562F Extract Zip Spec      14 (20) '2.0'\n-215630 Extract OS            00 (0) 'MS-DOS'\n-215631 General Purpose Flag  0808 (2056)\n+217AD5 CENTRAL HEADER #190   02014B50 (33639248)\n+217AD9 Created Zip Spec      14 (20) '2.0'\n+217ADA Created OS            00 (0) 'MS-DOS'\n+217ADB Extract Zip Spec      14 (20) '2.0'\n+217ADC Extract OS            00 (0) 'MS-DOS'\n+217ADD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215633 Compression Method    0008 (8) 'Deflated'\n-215635 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215639 CRC                   47014A41 (1191266881)\n-21563D Compressed Size       0000004C (76)\n-215641 Uncompressed Size     0000004F (79)\n-215645 Filename Length       0047 (71)\n-215647 Extra Length          0000 (0)\n-215649 Comment Length        0000 (0)\n-21564B Disk Start            0000 (0)\n-21564D Int File Attributes   0000 (0)\n+217ADF Compression Method    0008 (8) 'Deflated'\n+217AE1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217AE5 CRC                   B82C3560 (3089904992)\n+217AE9 Compressed Size       000002D6 (726)\n+217AED Uncompressed Size     000005CC (1484)\n+217AF1 Filename Length       0032 (50)\n+217AF3 Extra Length          0000 (0)\n+217AF5 Comment Length        0000 (0)\n+217AF7 Disk Start            0000 (0)\n+217AF9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21564F Ext File Attributes   00000000 (0)\n-215653 Local Header Offset   0001B42B (111659)\n-215657 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217AFB Ext File Attributes   00000000 (0)\n+217AFF Local Header Offset   00037FE7 (229351)\n+217B03 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215657: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217B03: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21569E CENTRAL HEADER #191   02014B50 (33639248)\n-2156A2 Created Zip Spec      14 (20) '2.0'\n-2156A3 Created OS            00 (0) 'MS-DOS'\n-2156A4 Extract Zip Spec      14 (20) '2.0'\n-2156A5 Extract OS            00 (0) 'MS-DOS'\n-2156A6 General Purpose Flag  0808 (2056)\n+217B35 CENTRAL HEADER #191   02014B50 (33639248)\n+217B39 Created Zip Spec      14 (20) '2.0'\n+217B3A Created OS            00 (0) 'MS-DOS'\n+217B3B Extract Zip Spec      14 (20) '2.0'\n+217B3C Extract OS            00 (0) 'MS-DOS'\n+217B3D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2156A8 Compression Method    0008 (8) 'Deflated'\n-2156AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2156AE CRC                   00000000 (0)\n-2156B2 Compressed Size       00000002 (2)\n-2156B6 Uncompressed Size     00000000 (0)\n-2156BA Filename Length       003F (63)\n-2156BC Extra Length          0000 (0)\n-2156BE Comment Length        0000 (0)\n-2156C0 Disk Start            0000 (0)\n-2156C2 Int File Attributes   0000 (0)\n+217B3F Compression Method    0008 (8) 'Deflated'\n+217B41 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217B45 CRC                   F57D6E98 (4118638232)\n+217B49 Compressed Size       000002DF (735)\n+217B4D Uncompressed Size     0000066F (1647)\n+217B51 Filename Length       0039 (57)\n+217B53 Extra Length          0000 (0)\n+217B55 Comment Length        0000 (0)\n+217B57 Disk Start            0000 (0)\n+217B59 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2156C4 Ext File Attributes   00000000 (0)\n-2156C8 Local Header Offset   0001B4EC (111852)\n-2156CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217B5B Ext File Attributes   00000000 (0)\n+217B5F Local Header Offset   0003831D (230173)\n+217B63 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2156CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217B63: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21570B CENTRAL HEADER #192   02014B50 (33639248)\n-21570F Created Zip Spec      14 (20) '2.0'\n-215710 Created OS            00 (0) 'MS-DOS'\n-215711 Extract Zip Spec      14 (20) '2.0'\n-215712 Extract OS            00 (0) 'MS-DOS'\n-215713 General Purpose Flag  0808 (2056)\n+217B9C CENTRAL HEADER #192   02014B50 (33639248)\n+217BA0 Created Zip Spec      14 (20) '2.0'\n+217BA1 Created OS            00 (0) 'MS-DOS'\n+217BA2 Extract Zip Spec      14 (20) '2.0'\n+217BA3 Extract OS            00 (0) 'MS-DOS'\n+217BA4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215715 Compression Method    0008 (8) 'Deflated'\n-215717 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21571B CRC                   28F10A22 (686885410)\n-21571F Compressed Size       00000382 (898)\n-215723 Uncompressed Size     0000092B (2347)\n-215727 Filename Length       0046 (70)\n-215729 Extra Length          0000 (0)\n-21572B Comment Length        0000 (0)\n-21572D Disk Start            0000 (0)\n-21572F Int File Attributes   0000 (0)\n+217BA6 Compression Method    0008 (8) 'Deflated'\n+217BA8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217BAC CRC                   00000000 (0)\n+217BB0 Compressed Size       00000002 (2)\n+217BB4 Uncompressed Size     00000000 (0)\n+217BB8 Filename Length       0024 (36)\n+217BBA Extra Length          0000 (0)\n+217BBC Comment Length        0000 (0)\n+217BBE Disk Start            0000 (0)\n+217BC0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215731 Ext File Attributes   00000000 (0)\n-215735 Local Header Offset   0001B55B (111963)\n-215739 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217BC2 Ext File Attributes   00000000 (0)\n+217BC6 Local Header Offset   00038663 (231011)\n+217BCA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215739: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217BCA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21577F CENTRAL HEADER #193   02014B50 (33639248)\n-215783 Created Zip Spec      14 (20) '2.0'\n-215784 Created OS            00 (0) 'MS-DOS'\n-215785 Extract Zip Spec      14 (20) '2.0'\n-215786 Extract OS            00 (0) 'MS-DOS'\n-215787 General Purpose Flag  0808 (2056)\n+217BEE CENTRAL HEADER #193   02014B50 (33639248)\n+217BF2 Created Zip Spec      14 (20) '2.0'\n+217BF3 Created OS            00 (0) 'MS-DOS'\n+217BF4 Extract Zip Spec      14 (20) '2.0'\n+217BF5 Extract OS            00 (0) 'MS-DOS'\n+217BF6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215789 Compression Method    0008 (8) 'Deflated'\n-21578B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21578F CRC                   F5CE41B3 (4123935155)\n-215793 Compressed Size       0000004F (79)\n-215797 Uncompressed Size     00000055 (85)\n-21579B Filename Length       004D (77)\n-21579D Extra Length          0000 (0)\n-21579F Comment Length        0000 (0)\n-2157A1 Disk Start            0000 (0)\n-2157A3 Int File Attributes   0000 (0)\n+217BF8 Compression Method    0008 (8) 'Deflated'\n+217BFA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217BFE CRC                   C962C74B (3378693963)\n+217C02 Compressed Size       0000032F (815)\n+217C06 Uncompressed Size     00000833 (2099)\n+217C0A Filename Length       0037 (55)\n+217C0C Extra Length          0000 (0)\n+217C0E Comment Length        0000 (0)\n+217C10 Disk Start            0000 (0)\n+217C12 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2157A5 Ext File Attributes   00000000 (0)\n-2157A9 Local Header Offset   0001B951 (112977)\n-2157AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217C14 Ext File Attributes   00000000 (0)\n+217C18 Local Header Offset   000386B7 (231095)\n+217C1C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2157AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217C1C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2157FA CENTRAL HEADER #194   02014B50 (33639248)\n-2157FE Created Zip Spec      14 (20) '2.0'\n-2157FF Created OS            00 (0) 'MS-DOS'\n-215800 Extract Zip Spec      14 (20) '2.0'\n-215801 Extract OS            00 (0) 'MS-DOS'\n-215802 General Purpose Flag  0808 (2056)\n+217C53 CENTRAL HEADER #194   02014B50 (33639248)\n+217C57 Created Zip Spec      14 (20) '2.0'\n+217C58 Created OS            00 (0) 'MS-DOS'\n+217C59 Extract Zip Spec      14 (20) '2.0'\n+217C5A Extract OS            00 (0) 'MS-DOS'\n+217C5B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215804 Compression Method    0008 (8) 'Deflated'\n-215806 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21580A CRC                   00000000 (0)\n-21580E Compressed Size       00000002 (2)\n-215812 Uncompressed Size     00000000 (0)\n-215816 Filename Length       0039 (57)\n-215818 Extra Length          0000 (0)\n-21581A Comment Length        0000 (0)\n-21581C Disk Start            0000 (0)\n-21581E Int File Attributes   0000 (0)\n+217C5D Compression Method    0008 (8) 'Deflated'\n+217C5F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217C63 CRC                   7A4C73B7 (2051830711)\n+217C67 Compressed Size       00000367 (871)\n+217C6B Uncompressed Size     00000A32 (2610)\n+217C6F Filename Length       003B (59)\n+217C71 Extra Length          0000 (0)\n+217C73 Comment Length        0000 (0)\n+217C75 Disk Start            0000 (0)\n+217C77 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215820 Ext File Attributes   00000000 (0)\n-215824 Local Header Offset   0001BA1B (113179)\n-215828 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217C79 Ext File Attributes   00000000 (0)\n+217C7D Local Header Offset   00038A4B (232011)\n+217C81 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215828: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217C81: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215861 CENTRAL HEADER #195   02014B50 (33639248)\n-215865 Created Zip Spec      14 (20) '2.0'\n-215866 Created OS            00 (0) 'MS-DOS'\n-215867 Extract Zip Spec      14 (20) '2.0'\n-215868 Extract OS            00 (0) 'MS-DOS'\n-215869 General Purpose Flag  0808 (2056)\n+217CBC CENTRAL HEADER #195   02014B50 (33639248)\n+217CC0 Created Zip Spec      14 (20) '2.0'\n+217CC1 Created OS            00 (0) 'MS-DOS'\n+217CC2 Extract Zip Spec      14 (20) '2.0'\n+217CC3 Extract OS            00 (0) 'MS-DOS'\n+217CC4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21586B Compression Method    0008 (8) 'Deflated'\n-21586D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215871 CRC                   0E05CB4C (235260748)\n-215875 Compressed Size       00000377 (887)\n-215879 Uncompressed Size     0000084C (2124)\n-21587D Filename Length       0040 (64)\n-21587F Extra Length          0000 (0)\n-215881 Comment Length        0000 (0)\n-215883 Disk Start            0000 (0)\n-215885 Int File Attributes   0000 (0)\n+217CC6 Compression Method    0008 (8) 'Deflated'\n+217CC8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217CCC CRC                   00000000 (0)\n+217CD0 Compressed Size       00000002 (2)\n+217CD4 Uncompressed Size     00000000 (0)\n+217CD8 Filename Length       002E (46)\n+217CDA Extra Length          0000 (0)\n+217CDC Comment Length        0000 (0)\n+217CDE Disk Start            0000 (0)\n+217CE0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215887 Ext File Attributes   00000000 (0)\n-21588B Local Header Offset   0001BA84 (113284)\n-21588F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217CE2 Ext File Attributes   00000000 (0)\n+217CE6 Local Header Offset   00038E1B (232987)\n+217CEA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21588F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217CEA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2158CF CENTRAL HEADER #196   02014B50 (33639248)\n-2158D3 Created Zip Spec      14 (20) '2.0'\n-2158D4 Created OS            00 (0) 'MS-DOS'\n-2158D5 Extract Zip Spec      14 (20) '2.0'\n-2158D6 Extract OS            00 (0) 'MS-DOS'\n-2158D7 General Purpose Flag  0808 (2056)\n+217D18 CENTRAL HEADER #196   02014B50 (33639248)\n+217D1C Created Zip Spec      14 (20) '2.0'\n+217D1D Created OS            00 (0) 'MS-DOS'\n+217D1E Extract Zip Spec      14 (20) '2.0'\n+217D1F Extract OS            00 (0) 'MS-DOS'\n+217D20 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2158D9 Compression Method    0008 (8) 'Deflated'\n-2158DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2158DF CRC                   FCB2ABC5 (4239567813)\n-2158E3 Compressed Size       0000004C (76)\n-2158E7 Uncompressed Size     0000004F (79)\n-2158EB Filename Length       0047 (71)\n-2158ED Extra Length          0000 (0)\n-2158EF Comment Length        0000 (0)\n-2158F1 Disk Start            0000 (0)\n-2158F3 Int File Attributes   0000 (0)\n+217D22 Compression Method    0008 (8) 'Deflated'\n+217D24 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217D28 CRC                   BCF898DF (3170408671)\n+217D2C Compressed Size       00000C4A (3146)\n+217D30 Uncompressed Size     00003374 (13172)\n+217D34 Filename Length       0042 (66)\n+217D36 Extra Length          0000 (0)\n+217D38 Comment Length        0000 (0)\n+217D3A Disk Start            0000 (0)\n+217D3C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2158F5 Ext File Attributes   00000000 (0)\n-2158F9 Local Header Offset   0001BE69 (114281)\n-2158FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217D3E Ext File Attributes   00000000 (0)\n+217D42 Local Header Offset   00038E79 (233081)\n+217D46 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2158FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217D46: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215944 CENTRAL HEADER #197   02014B50 (33639248)\n-215948 Created Zip Spec      14 (20) '2.0'\n-215949 Created OS            00 (0) 'MS-DOS'\n-21594A Extract Zip Spec      14 (20) '2.0'\n-21594B Extract OS            00 (0) 'MS-DOS'\n-21594C General Purpose Flag  0808 (2056)\n+217D88 CENTRAL HEADER #197   02014B50 (33639248)\n+217D8C Created Zip Spec      14 (20) '2.0'\n+217D8D Created OS            00 (0) 'MS-DOS'\n+217D8E Extract Zip Spec      14 (20) '2.0'\n+217D8F Extract OS            00 (0) 'MS-DOS'\n+217D90 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21594E Compression Method    0008 (8) 'Deflated'\n-215950 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215954 CRC                   B6BD94DA (3065877722)\n-215958 Compressed Size       0000026B (619)\n-21595C Uncompressed Size     00000474 (1140)\n-215960 Filename Length       000E (14)\n-215962 Extra Length          0000 (0)\n-215964 Comment Length        0000 (0)\n-215966 Disk Start            0000 (0)\n-215968 Int File Attributes   0000 (0)\n+217D92 Compression Method    0008 (8) 'Deflated'\n+217D94 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217D98 CRC                   E35903B0 (3814261680)\n+217D9C Compressed Size       0000029B (667)\n+217DA0 Uncompressed Size     00000540 (1344)\n+217DA4 Filename Length       0049 (73)\n+217DA6 Extra Length          0000 (0)\n+217DA8 Comment Length        0000 (0)\n+217DAA Disk Start            0000 (0)\n+217DAC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21596A Ext File Attributes   00000000 (0)\n-21596E Local Header Offset   0001BF2A (114474)\n-215972 Filename              'XXXXXXXXXXXXXX'\n+217DAE Ext File Attributes   00000000 (0)\n+217DB2 Local Header Offset   00039B33 (236339)\n+217DB6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215972: Filename 'XXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217DB6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215980 CENTRAL HEADER #198   02014B50 (33639248)\n-215984 Created Zip Spec      14 (20) '2.0'\n-215985 Created OS            00 (0) 'MS-DOS'\n-215986 Extract Zip Spec      14 (20) '2.0'\n-215987 Extract OS            00 (0) 'MS-DOS'\n-215988 General Purpose Flag  0808 (2056)\n+217DFF CENTRAL HEADER #198   02014B50 (33639248)\n+217E03 Created Zip Spec      14 (20) '2.0'\n+217E04 Created OS            00 (0) 'MS-DOS'\n+217E05 Extract Zip Spec      14 (20) '2.0'\n+217E06 Extract OS            00 (0) 'MS-DOS'\n+217E07 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21598A Compression Method    0008 (8) 'Deflated'\n-21598C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215990 CRC                   0A4703DB (172426203)\n-215994 Compressed Size       0000044A (1098)\n-215998 Uncompressed Size     00000ADD (2781)\n-21599C Filename Length       0011 (17)\n-21599E Extra Length          0000 (0)\n-2159A0 Comment Length        0000 (0)\n-2159A2 Disk Start            0000 (0)\n-2159A4 Int File Attributes   0000 (0)\n+217E09 Compression Method    0008 (8) 'Deflated'\n+217E0B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217E0F CRC                   00000000 (0)\n+217E13 Compressed Size       00000002 (2)\n+217E17 Uncompressed Size     00000000 (0)\n+217E1B Filename Length       0035 (53)\n+217E1D Extra Length          0000 (0)\n+217E1F Comment Length        0000 (0)\n+217E21 Disk Start            0000 (0)\n+217E23 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2159A6 Ext File Attributes   00000000 (0)\n-2159AA Local Header Offset   0001C1D1 (115153)\n-2159AE Filename              'XXXXXXXXXXXXXXXXX'\n+217E25 Ext File Attributes   00000000 (0)\n+217E29 Local Header Offset   00039E45 (237125)\n+217E2D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2159AE: Filename 'XXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217E2D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2159BF CENTRAL HEADER #199   02014B50 (33639248)\n-2159C3 Created Zip Spec      14 (20) '2.0'\n-2159C4 Created OS            00 (0) 'MS-DOS'\n-2159C5 Extract Zip Spec      14 (20) '2.0'\n-2159C6 Extract OS            00 (0) 'MS-DOS'\n-2159C7 General Purpose Flag  0808 (2056)\n+217E62 CENTRAL HEADER #199   02014B50 (33639248)\n+217E66 Created Zip Spec      14 (20) '2.0'\n+217E67 Created OS            00 (0) 'MS-DOS'\n+217E68 Extract Zip Spec      14 (20) '2.0'\n+217E69 Extract OS            00 (0) 'MS-DOS'\n+217E6A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2159C9 Compression Method    0008 (8) 'Deflated'\n-2159CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2159CF CRC                   00000000 (0)\n-2159D3 Compressed Size       00000002 (2)\n-2159D7 Uncompressed Size     00000000 (0)\n-2159DB Filename Length       003D (61)\n-2159DD Extra Length          0000 (0)\n-2159DF Comment Length        0000 (0)\n-2159E1 Disk Start            0000 (0)\n-2159E3 Int File Attributes   0000 (0)\n+217E6C Compression Method    0008 (8) 'Deflated'\n+217E6E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217E72 CRC                   9ADBEDAC (2598104492)\n+217E76 Compressed Size       000002ED (749)\n+217E7A Uncompressed Size     000005AF (1455)\n+217E7E Filename Length       0043 (67)\n+217E80 Extra Length          0000 (0)\n+217E82 Comment Length        0000 (0)\n+217E84 Disk Start            0000 (0)\n+217E86 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2159E5 Ext File Attributes   00000000 (0)\n-2159E9 Local Header Offset   0001C65A (116314)\n-2159ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217E88 Ext File Attributes   00000000 (0)\n+217E8C Local Header Offset   00039EAA (237226)\n+217E90 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2159ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217E90: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215A2A CENTRAL HEADER #200   02014B50 (33639248)\n-215A2E Created Zip Spec      14 (20) '2.0'\n-215A2F Created OS            00 (0) 'MS-DOS'\n-215A30 Extract Zip Spec      14 (20) '2.0'\n-215A31 Extract OS            00 (0) 'MS-DOS'\n-215A32 General Purpose Flag  0808 (2056)\n+217ED3 CENTRAL HEADER #200   02014B50 (33639248)\n+217ED7 Created Zip Spec      14 (20) '2.0'\n+217ED8 Created OS            00 (0) 'MS-DOS'\n+217ED9 Extract Zip Spec      14 (20) '2.0'\n+217EDA Extract OS            00 (0) 'MS-DOS'\n+217EDB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215A34 Compression Method    0008 (8) 'Deflated'\n-215A36 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215A3A CRC                   FA85A8D5 (4203063509)\n-215A3E Compressed Size       00000500 (1280)\n-215A42 Uncompressed Size     00000F0F (3855)\n-215A46 Filename Length       0044 (68)\n-215A48 Extra Length          0000 (0)\n-215A4A Comment Length        0000 (0)\n-215A4C Disk Start            0000 (0)\n-215A4E Int File Attributes   0000 (0)\n+217EDD Compression Method    0008 (8) 'Deflated'\n+217EDF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217EE3 CRC                   0E6EFC60 (242154592)\n+217EE7 Compressed Size       000002F7 (759)\n+217EEB Uncompressed Size     00000688 (1672)\n+217EEF Filename Length       004A (74)\n+217EF1 Extra Length          0000 (0)\n+217EF3 Comment Length        0000 (0)\n+217EF5 Disk Start            0000 (0)\n+217EF7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215A50 Ext File Attributes   00000000 (0)\n-215A54 Local Header Offset   0001C6C7 (116423)\n-215A58 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217EF9 Ext File Attributes   00000000 (0)\n+217EFD Local Header Offset   0003A208 (238088)\n+217F01 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215A58: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217F01: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215A9C CENTRAL HEADER #201   02014B50 (33639248)\n-215AA0 Created Zip Spec      14 (20) '2.0'\n-215AA1 Created OS            00 (0) 'MS-DOS'\n-215AA2 Extract Zip Spec      14 (20) '2.0'\n-215AA3 Extract OS            00 (0) 'MS-DOS'\n-215AA4 General Purpose Flag  0808 (2056)\n+217F4B CENTRAL HEADER #201   02014B50 (33639248)\n+217F4F Created Zip Spec      14 (20) '2.0'\n+217F50 Created OS            00 (0) 'MS-DOS'\n+217F51 Extract Zip Spec      14 (20) '2.0'\n+217F52 Extract OS            00 (0) 'MS-DOS'\n+217F53 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215AA6 Compression Method    0008 (8) 'Deflated'\n-215AA8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215AAC CRC                   A6E93060 (2800300128)\n-215AB0 Compressed Size       0000004E (78)\n-215AB4 Uncompressed Size     00000053 (83)\n-215AB8 Filename Length       004B (75)\n-215ABA Extra Length          0000 (0)\n-215ABC Comment Length        0000 (0)\n-215ABE Disk Start            0000 (0)\n-215AC0 Int File Attributes   0000 (0)\n+217F55 Compression Method    0008 (8) 'Deflated'\n+217F57 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217F5B CRC                   44A1E13F (1151459647)\n+217F5F Compressed Size       00000685 (1669)\n+217F63 Uncompressed Size     0000149A (5274)\n+217F67 Filename Length       004A (74)\n+217F69 Extra Length          0000 (0)\n+217F6B Comment Length        0000 (0)\n+217F6D Disk Start            0000 (0)\n+217F6F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215AC2 Ext File Attributes   00000000 (0)\n-215AC6 Local Header Offset   0001CC39 (117817)\n-215ACA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217F71 Ext File Attributes   00000000 (0)\n+217F75 Local Header Offset   0003A577 (238967)\n+217F79 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215ACA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217F79: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215B15 CENTRAL HEADER #202   02014B50 (33639248)\n-215B19 Created Zip Spec      14 (20) '2.0'\n-215B1A Created OS            00 (0) 'MS-DOS'\n-215B1B Extract Zip Spec      14 (20) '2.0'\n-215B1C Extract OS            00 (0) 'MS-DOS'\n-215B1D General Purpose Flag  0808 (2056)\n+217FC3 CENTRAL HEADER #202   02014B50 (33639248)\n+217FC7 Created Zip Spec      14 (20) '2.0'\n+217FC8 Created OS            00 (0) 'MS-DOS'\n+217FC9 Extract Zip Spec      14 (20) '2.0'\n+217FCA Extract OS            00 (0) 'MS-DOS'\n+217FCB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215B1F Compression Method    0008 (8) 'Deflated'\n-215B21 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215B25 CRC                   00000000 (0)\n-215B29 Compressed Size       00000002 (2)\n-215B2D Uncompressed Size     00000000 (0)\n-215B31 Filename Length       003D (61)\n-215B33 Extra Length          0000 (0)\n-215B35 Comment Length        0000 (0)\n-215B37 Disk Start            0000 (0)\n-215B39 Int File Attributes   0000 (0)\n+217FCD Compression Method    0008 (8) 'Deflated'\n+217FCF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+217FD3 CRC                   F0BD77BE (4038948798)\n+217FD7 Compressed Size       000002F5 (757)\n+217FDB Uncompressed Size     000005C9 (1481)\n+217FDF Filename Length       0047 (71)\n+217FE1 Extra Length          0000 (0)\n+217FE3 Comment Length        0000 (0)\n+217FE5 Disk Start            0000 (0)\n+217FE7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215B3B Ext File Attributes   00000000 (0)\n-215B3F Local Header Offset   0001CD00 (118016)\n-215B43 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+217FE9 Ext File Attributes   00000000 (0)\n+217FED Local Header Offset   0003AC74 (240756)\n+217FF1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215B43: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x217FF1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215B80 CENTRAL HEADER #203   02014B50 (33639248)\n-215B84 Created Zip Spec      14 (20) '2.0'\n-215B85 Created OS            00 (0) 'MS-DOS'\n-215B86 Extract Zip Spec      14 (20) '2.0'\n-215B87 Extract OS            00 (0) 'MS-DOS'\n-215B88 General Purpose Flag  0808 (2056)\n+218038 CENTRAL HEADER #203   02014B50 (33639248)\n+21803C Created Zip Spec      14 (20) '2.0'\n+21803D Created OS            00 (0) 'MS-DOS'\n+21803E Extract Zip Spec      14 (20) '2.0'\n+21803F Extract OS            00 (0) 'MS-DOS'\n+218040 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215B8A Compression Method    0008 (8) 'Deflated'\n-215B8C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215B90 CRC                   B8E7C6BA (3102197434)\n-215B94 Compressed Size       00000373 (883)\n-215B98 Uncompressed Size     000008DC (2268)\n-215B9C Filename Length       0044 (68)\n-215B9E Extra Length          0000 (0)\n-215BA0 Comment Length        0000 (0)\n-215BA2 Disk Start            0000 (0)\n-215BA4 Int File Attributes   0000 (0)\n+218042 Compression Method    0008 (8) 'Deflated'\n+218044 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218048 CRC                   6CA6E955 (1822878037)\n+21804C Compressed Size       000002B3 (691)\n+218050 Uncompressed Size     00000566 (1382)\n+218054 Filename Length       004E (78)\n+218056 Extra Length          0000 (0)\n+218058 Comment Length        0000 (0)\n+21805A Disk Start            0000 (0)\n+21805C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215BA6 Ext File Attributes   00000000 (0)\n-215BAA Local Header Offset   0001CD6D (118125)\n-215BAE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21805E Ext File Attributes   00000000 (0)\n+218062 Local Header Offset   0003AFDE (241630)\n+218066 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215BAE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218066: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215BF2 CENTRAL HEADER #204   02014B50 (33639248)\n-215BF6 Created Zip Spec      14 (20) '2.0'\n-215BF7 Created OS            00 (0) 'MS-DOS'\n-215BF8 Extract Zip Spec      14 (20) '2.0'\n-215BF9 Extract OS            00 (0) 'MS-DOS'\n-215BFA General Purpose Flag  0808 (2056)\n+2180B4 CENTRAL HEADER #204   02014B50 (33639248)\n+2180B8 Created Zip Spec      14 (20) '2.0'\n+2180B9 Created OS            00 (0) 'MS-DOS'\n+2180BA Extract Zip Spec      14 (20) '2.0'\n+2180BB Extract OS            00 (0) 'MS-DOS'\n+2180BC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215BFC Compression Method    0008 (8) 'Deflated'\n-215BFE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215C02 CRC                   78F5F066 (2029383782)\n-215C06 Compressed Size       0000004F (79)\n-215C0A Uncompressed Size     00000053 (83)\n-215C0E Filename Length       004B (75)\n-215C10 Extra Length          0000 (0)\n-215C12 Comment Length        0000 (0)\n-215C14 Disk Start            0000 (0)\n-215C16 Int File Attributes   0000 (0)\n+2180BE Compression Method    0008 (8) 'Deflated'\n+2180C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2180C4 CRC                   00000000 (0)\n+2180C8 Compressed Size       00000002 (2)\n+2180CC Uncompressed Size     00000000 (0)\n+2180D0 Filename Length       003B (59)\n+2180D2 Extra Length          0000 (0)\n+2180D4 Comment Length        0000 (0)\n+2180D6 Disk Start            0000 (0)\n+2180D8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215C18 Ext File Attributes   00000000 (0)\n-215C1C Local Header Offset   0001D152 (119122)\n-215C20 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2180DA Ext File Attributes   00000000 (0)\n+2180DE Local Header Offset   0003B30D (242445)\n+2180E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215C20: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2180E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215C6B CENTRAL HEADER #205   02014B50 (33639248)\n-215C6F Created Zip Spec      14 (20) '2.0'\n-215C70 Created OS            00 (0) 'MS-DOS'\n-215C71 Extract Zip Spec      14 (20) '2.0'\n-215C72 Extract OS            00 (0) 'MS-DOS'\n-215C73 General Purpose Flag  0808 (2056)\n+21811D CENTRAL HEADER #205   02014B50 (33639248)\n+218121 Created Zip Spec      14 (20) '2.0'\n+218122 Created OS            00 (0) 'MS-DOS'\n+218123 Extract Zip Spec      14 (20) '2.0'\n+218124 Extract OS            00 (0) 'MS-DOS'\n+218125 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215C75 Compression Method    0008 (8) 'Deflated'\n-215C77 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215C7B CRC                   00000000 (0)\n-215C7F Compressed Size       00000002 (2)\n-215C83 Uncompressed Size     00000000 (0)\n-215C87 Filename Length       003A (58)\n-215C89 Extra Length          0000 (0)\n-215C8B Comment Length        0000 (0)\n-215C8D Disk Start            0000 (0)\n-215C8F Int File Attributes   0000 (0)\n+218127 Compression Method    0008 (8) 'Deflated'\n+218129 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21812D CRC                   1C57CB8B (475515787)\n+218131 Compressed Size       00000287 (647)\n+218135 Uncompressed Size     00000532 (1330)\n+218139 Filename Length       0053 (83)\n+21813B Extra Length          0000 (0)\n+21813D Comment Length        0000 (0)\n+21813F Disk Start            0000 (0)\n+218141 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215C91 Ext File Attributes   00000000 (0)\n-215C95 Local Header Offset   0001D21A (119322)\n-215C99 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218143 Ext File Attributes   00000000 (0)\n+218147 Local Header Offset   0003B378 (242552)\n+21814B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215C99: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21814B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215CD3 CENTRAL HEADER #206   02014B50 (33639248)\n-215CD7 Created Zip Spec      14 (20) '2.0'\n-215CD8 Created OS            00 (0) 'MS-DOS'\n-215CD9 Extract Zip Spec      14 (20) '2.0'\n-215CDA Extract OS            00 (0) 'MS-DOS'\n-215CDB General Purpose Flag  0808 (2056)\n+21819E CENTRAL HEADER #206   02014B50 (33639248)\n+2181A2 Created Zip Spec      14 (20) '2.0'\n+2181A3 Created OS            00 (0) 'MS-DOS'\n+2181A4 Extract Zip Spec      14 (20) '2.0'\n+2181A5 Extract OS            00 (0) 'MS-DOS'\n+2181A6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215CDD Compression Method    0008 (8) 'Deflated'\n-215CDF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215CE3 CRC                   7376C130 (1937162544)\n-215CE7 Compressed Size       000003BA (954)\n-215CEB Uncompressed Size     0000097C (2428)\n-215CEF Filename Length       0041 (65)\n-215CF1 Extra Length          0000 (0)\n-215CF3 Comment Length        0000 (0)\n-215CF5 Disk Start            0000 (0)\n-215CF7 Int File Attributes   0000 (0)\n+2181A8 Compression Method    0008 (8) 'Deflated'\n+2181AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2181AE CRC                   CDABD9DC (3450591708)\n+2181B2 Compressed Size       00000363 (867)\n+2181B6 Uncompressed Size     0000070B (1803)\n+2181BA Filename Length       0053 (83)\n+2181BC Extra Length          0000 (0)\n+2181BE Comment Length        0000 (0)\n+2181C0 Disk Start            0000 (0)\n+2181C2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215CF9 Ext File Attributes   00000000 (0)\n-215CFD Local Header Offset   0001D284 (119428)\n-215D01 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2181C4 Ext File Attributes   00000000 (0)\n+2181C8 Local Header Offset   0003B680 (243328)\n+2181CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215D01: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2181CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215D42 CENTRAL HEADER #207   02014B50 (33639248)\n-215D46 Created Zip Spec      14 (20) '2.0'\n-215D47 Created OS            00 (0) 'MS-DOS'\n-215D48 Extract Zip Spec      14 (20) '2.0'\n-215D49 Extract OS            00 (0) 'MS-DOS'\n-215D4A General Purpose Flag  0808 (2056)\n+21821F CENTRAL HEADER #207   02014B50 (33639248)\n+218223 Created Zip Spec      14 (20) '2.0'\n+218224 Created OS            00 (0) 'MS-DOS'\n+218225 Extract Zip Spec      14 (20) '2.0'\n+218226 Extract OS            00 (0) 'MS-DOS'\n+218227 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215D4C Compression Method    0008 (8) 'Deflated'\n-215D4E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215D52 CRC                   B107068C (2970027660)\n-215D56 Compressed Size       0000004C (76)\n-215D5A Uncompressed Size     00000050 (80)\n-215D5E Filename Length       0048 (72)\n-215D60 Extra Length          0000 (0)\n-215D62 Comment Length        0000 (0)\n-215D64 Disk Start            0000 (0)\n-215D66 Int File Attributes   0000 (0)\n+218229 Compression Method    0008 (8) 'Deflated'\n+21822B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21822F CRC                   00000000 (0)\n+218233 Compressed Size       00000002 (2)\n+218237 Uncompressed Size     00000000 (0)\n+21823B Filename Length       0029 (41)\n+21823D Extra Length          0000 (0)\n+21823F Comment Length        0000 (0)\n+218241 Disk Start            0000 (0)\n+218243 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215D68 Ext File Attributes   00000000 (0)\n-215D6C Local Header Offset   0001D6AD (120493)\n-215D70 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218245 Ext File Attributes   00000000 (0)\n+218249 Local Header Offset   0003BA64 (244324)\n+21824D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215D70: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21824D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215DB8 CENTRAL HEADER #208   02014B50 (33639248)\n-215DBC Created Zip Spec      14 (20) '2.0'\n-215DBD Created OS            00 (0) 'MS-DOS'\n-215DBE Extract Zip Spec      14 (20) '2.0'\n-215DBF Extract OS            00 (0) 'MS-DOS'\n-215DC0 General Purpose Flag  0808 (2056)\n+218276 CENTRAL HEADER #208   02014B50 (33639248)\n+21827A Created Zip Spec      14 (20) '2.0'\n+21827B Created OS            00 (0) 'MS-DOS'\n+21827C Extract Zip Spec      14 (20) '2.0'\n+21827D Extract OS            00 (0) 'MS-DOS'\n+21827E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215DC2 Compression Method    0008 (8) 'Deflated'\n-215DC4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215DC8 CRC                   00000000 (0)\n-215DCC Compressed Size       00000002 (2)\n-215DD0 Uncompressed Size     00000000 (0)\n-215DD4 Filename Length       0039 (57)\n-215DD6 Extra Length          0000 (0)\n-215DD8 Comment Length        0000 (0)\n-215DDA Disk Start            0000 (0)\n-215DDC Int File Attributes   0000 (0)\n+218280 Compression Method    0008 (8) 'Deflated'\n+218282 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218286 CRC                   EF9BEB14 (4019972884)\n+21828A Compressed Size       000004D2 (1234)\n+21828E Uncompressed Size     00000C80 (3200)\n+218292 Filename Length       003F (63)\n+218294 Extra Length          0000 (0)\n+218296 Comment Length        0000 (0)\n+218298 Disk Start            0000 (0)\n+21829A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215DDE Ext File Attributes   00000000 (0)\n-215DE2 Local Header Offset   0001D76F (120687)\n-215DE6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21829C Ext File Attributes   00000000 (0)\n+2182A0 Local Header Offset   0003BABD (244413)\n+2182A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215DE6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2182A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215E1F CENTRAL HEADER #209   02014B50 (33639248)\n-215E23 Created Zip Spec      14 (20) '2.0'\n-215E24 Created OS            00 (0) 'MS-DOS'\n-215E25 Extract Zip Spec      14 (20) '2.0'\n-215E26 Extract OS            00 (0) 'MS-DOS'\n-215E27 General Purpose Flag  0808 (2056)\n+2182E3 CENTRAL HEADER #209   02014B50 (33639248)\n+2182E7 Created Zip Spec      14 (20) '2.0'\n+2182E8 Created OS            00 (0) 'MS-DOS'\n+2182E9 Extract Zip Spec      14 (20) '2.0'\n+2182EA Extract OS            00 (0) 'MS-DOS'\n+2182EB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215E29 Compression Method    0008 (8) 'Deflated'\n-215E2B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215E2F CRC                   CFD7D535 (3487028533)\n-215E33 Compressed Size       00000363 (867)\n-215E37 Uncompressed Size     00000819 (2073)\n-215E3B Filename Length       0040 (64)\n-215E3D Extra Length          0000 (0)\n-215E3F Comment Length        0000 (0)\n-215E41 Disk Start            0000 (0)\n-215E43 Int File Attributes   0000 (0)\n+2182ED Compression Method    0008 (8) 'Deflated'\n+2182EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2182F3 CRC                   00000000 (0)\n+2182F7 Compressed Size       00000002 (2)\n+2182FB Uncompressed Size     00000000 (0)\n+2182FF Filename Length       0029 (41)\n+218301 Extra Length          0000 (0)\n+218303 Comment Length        0000 (0)\n+218305 Disk Start            0000 (0)\n+218307 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215E45 Ext File Attributes   00000000 (0)\n-215E49 Local Header Offset   0001D7D8 (120792)\n-215E4D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218309 Ext File Attributes   00000000 (0)\n+21830D Local Header Offset   0003BFFC (245756)\n+218311 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215E4D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218311: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215E8D CENTRAL HEADER #210   02014B50 (33639248)\n-215E91 Created Zip Spec      14 (20) '2.0'\n-215E92 Created OS            00 (0) 'MS-DOS'\n-215E93 Extract Zip Spec      14 (20) '2.0'\n-215E94 Extract OS            00 (0) 'MS-DOS'\n-215E95 General Purpose Flag  0808 (2056)\n+21833A CENTRAL HEADER #210   02014B50 (33639248)\n+21833E Created Zip Spec      14 (20) '2.0'\n+21833F Created OS            00 (0) 'MS-DOS'\n+218340 Extract Zip Spec      14 (20) '2.0'\n+218341 Extract OS            00 (0) 'MS-DOS'\n+218342 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215E97 Compression Method    0008 (8) 'Deflated'\n-215E99 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215E9D CRC                   9AAEB621 (2595141153)\n-215EA1 Compressed Size       0000004A (74)\n-215EA5 Uncompressed Size     0000004F (79)\n-215EA9 Filename Length       0047 (71)\n-215EAB Extra Length          0000 (0)\n-215EAD Comment Length        0000 (0)\n-215EAF Disk Start            0000 (0)\n-215EB1 Int File Attributes   0000 (0)\n+218344 Compression Method    0008 (8) 'Deflated'\n+218346 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21834A CRC                   720B0082 (1913323650)\n+21834E Compressed Size       00000508 (1288)\n+218352 Uncompressed Size     00000FBA (4026)\n+218356 Filename Length       0042 (66)\n+218358 Extra Length          0000 (0)\n+21835A Comment Length        0000 (0)\n+21835C Disk Start            0000 (0)\n+21835E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215EB3 Ext File Attributes   00000000 (0)\n-215EB7 Local Header Offset   0001DBA9 (121769)\n-215EBB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218360 Ext File Attributes   00000000 (0)\n+218364 Local Header Offset   0003C055 (245845)\n+218368 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215EBB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218368: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215F02 CENTRAL HEADER #211   02014B50 (33639248)\n-215F06 Created Zip Spec      14 (20) '2.0'\n-215F07 Created OS            00 (0) 'MS-DOS'\n-215F08 Extract Zip Spec      14 (20) '2.0'\n-215F09 Extract OS            00 (0) 'MS-DOS'\n-215F0A General Purpose Flag  0808 (2056)\n+2183AA CENTRAL HEADER #211   02014B50 (33639248)\n+2183AE Created Zip Spec      14 (20) '2.0'\n+2183AF Created OS            00 (0) 'MS-DOS'\n+2183B0 Extract Zip Spec      14 (20) '2.0'\n+2183B1 Extract OS            00 (0) 'MS-DOS'\n+2183B2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215F0C Compression Method    0008 (8) 'Deflated'\n-215F0E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215F12 CRC                   00000000 (0)\n-215F16 Compressed Size       00000002 (2)\n-215F1A Uncompressed Size     00000000 (0)\n-215F1E Filename Length       003A (58)\n-215F20 Extra Length          0000 (0)\n-215F22 Comment Length        0000 (0)\n-215F24 Disk Start            0000 (0)\n-215F26 Int File Attributes   0000 (0)\n+2183B4 Compression Method    0008 (8) 'Deflated'\n+2183B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2183BA CRC                   0EB84276 (246956662)\n+2183BE Compressed Size       00000292 (658)\n+2183C2 Uncompressed Size     00000517 (1303)\n+2183C6 Filename Length       003F (63)\n+2183C8 Extra Length          0000 (0)\n+2183CA Comment Length        0000 (0)\n+2183CC Disk Start            0000 (0)\n+2183CE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215F28 Ext File Attributes   00000000 (0)\n-215F2C Local Header Offset   0001DC68 (121960)\n-215F30 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2183D0 Ext File Attributes   00000000 (0)\n+2183D4 Local Header Offset   0003C5CD (247245)\n+2183D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215F30: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2183D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215F6A CENTRAL HEADER #212   02014B50 (33639248)\n-215F6E Created Zip Spec      14 (20) '2.0'\n-215F6F Created OS            00 (0) 'MS-DOS'\n-215F70 Extract Zip Spec      14 (20) '2.0'\n-215F71 Extract OS            00 (0) 'MS-DOS'\n-215F72 General Purpose Flag  0808 (2056)\n+218417 CENTRAL HEADER #212   02014B50 (33639248)\n+21841B Created Zip Spec      14 (20) '2.0'\n+21841C Created OS            00 (0) 'MS-DOS'\n+21841D Extract Zip Spec      14 (20) '2.0'\n+21841E Extract OS            00 (0) 'MS-DOS'\n+21841F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215F74 Compression Method    0008 (8) 'Deflated'\n-215F76 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215F7A CRC                   4BC00B23 (1270876963)\n-215F7E Compressed Size       0000034F (847)\n-215F82 Uncompressed Size     00000829 (2089)\n-215F86 Filename Length       0041 (65)\n-215F88 Extra Length          0000 (0)\n-215F8A Comment Length        0000 (0)\n-215F8C Disk Start            0000 (0)\n-215F8E Int File Attributes   0000 (0)\n+218421 Compression Method    0008 (8) 'Deflated'\n+218423 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218427 CRC                   00000000 (0)\n+21842B Compressed Size       00000002 (2)\n+21842F Uncompressed Size     00000000 (0)\n+218433 Filename Length       002B (43)\n+218435 Extra Length          0000 (0)\n+218437 Comment Length        0000 (0)\n+218439 Disk Start            0000 (0)\n+21843B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215F90 Ext File Attributes   00000000 (0)\n-215F94 Local Header Offset   0001DCD2 (122066)\n-215F98 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21843D Ext File Attributes   00000000 (0)\n+218441 Local Header Offset   0003C8CC (248012)\n+218445 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x215F98: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218445: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-215FD9 CENTRAL HEADER #213   02014B50 (33639248)\n-215FDD Created Zip Spec      14 (20) '2.0'\n-215FDE Created OS            00 (0) 'MS-DOS'\n-215FDF Extract Zip Spec      14 (20) '2.0'\n-215FE0 Extract OS            00 (0) 'MS-DOS'\n-215FE1 General Purpose Flag  0808 (2056)\n+218470 CENTRAL HEADER #213   02014B50 (33639248)\n+218474 Created Zip Spec      14 (20) '2.0'\n+218475 Created OS            00 (0) 'MS-DOS'\n+218476 Extract Zip Spec      14 (20) '2.0'\n+218477 Extract OS            00 (0) 'MS-DOS'\n+218478 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-215FE3 Compression Method    0008 (8) 'Deflated'\n-215FE5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-215FE9 CRC                   FC77F286 (4235719302)\n-215FED Compressed Size       0000004B (75)\n-215FF1 Uncompressed Size     00000050 (80)\n-215FF5 Filename Length       0048 (72)\n-215FF7 Extra Length          0000 (0)\n-215FF9 Comment Length        0000 (0)\n-215FFB Disk Start            0000 (0)\n-215FFD Int File Attributes   0000 (0)\n+21847A Compression Method    0008 (8) 'Deflated'\n+21847C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218480 CRC                   64ACCB0D (1689045773)\n+218484 Compressed Size       00000854 (2132)\n+218488 Uncompressed Size     00001B32 (6962)\n+21848C Filename Length       003C (60)\n+21848E Extra Length          0000 (0)\n+218490 Comment Length        0000 (0)\n+218492 Disk Start            0000 (0)\n+218494 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-215FFF Ext File Attributes   00000000 (0)\n-216003 Local Header Offset   0001E090 (123024)\n-216007 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218496 Ext File Attributes   00000000 (0)\n+21849A Local Header Offset   0003C927 (248103)\n+21849E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216007: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21849E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21604F CENTRAL HEADER #214   02014B50 (33639248)\n-216053 Created Zip Spec      14 (20) '2.0'\n-216054 Created OS            00 (0) 'MS-DOS'\n-216055 Extract Zip Spec      14 (20) '2.0'\n-216056 Extract OS            00 (0) 'MS-DOS'\n-216057 General Purpose Flag  0808 (2056)\n+2184DA CENTRAL HEADER #214   02014B50 (33639248)\n+2184DE Created Zip Spec      14 (20) '2.0'\n+2184DF Created OS            00 (0) 'MS-DOS'\n+2184E0 Extract Zip Spec      14 (20) '2.0'\n+2184E1 Extract OS            00 (0) 'MS-DOS'\n+2184E2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216059 Compression Method    0008 (8) 'Deflated'\n-21605B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21605F CRC                   00000000 (0)\n-216063 Compressed Size       00000002 (2)\n-216067 Uncompressed Size     00000000 (0)\n-21606B Filename Length       0038 (56)\n-21606D Extra Length          0000 (0)\n-21606F Comment Length        0000 (0)\n-216071 Disk Start            0000 (0)\n-216073 Int File Attributes   0000 (0)\n+2184E4 Compression Method    0008 (8) 'Deflated'\n+2184E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2184EA CRC                   72CD5ED3 (1926061779)\n+2184EE Compressed Size       00000326 (806)\n+2184F2 Uncompressed Size     0000069B (1691)\n+2184F6 Filename Length       0043 (67)\n+2184F8 Extra Length          0000 (0)\n+2184FA Comment Length        0000 (0)\n+2184FC Disk Start            0000 (0)\n+2184FE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216075 Ext File Attributes   00000000 (0)\n-216079 Local Header Offset   0001E151 (123217)\n-21607D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218500 Ext File Attributes   00000000 (0)\n+218504 Local Header Offset   0003D1E5 (250341)\n+218508 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21607D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218508: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2160B5 CENTRAL HEADER #215   02014B50 (33639248)\n-2160B9 Created Zip Spec      14 (20) '2.0'\n-2160BA Created OS            00 (0) 'MS-DOS'\n-2160BB Extract Zip Spec      14 (20) '2.0'\n-2160BC Extract OS            00 (0) 'MS-DOS'\n-2160BD General Purpose Flag  0808 (2056)\n+21854B CENTRAL HEADER #215   02014B50 (33639248)\n+21854F Created Zip Spec      14 (20) '2.0'\n+218550 Created OS            00 (0) 'MS-DOS'\n+218551 Extract Zip Spec      14 (20) '2.0'\n+218552 Extract OS            00 (0) 'MS-DOS'\n+218553 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2160BF Compression Method    0008 (8) 'Deflated'\n-2160C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2160C5 CRC                   FB57BB2D (4216830765)\n-2160C9 Compressed Size       000003F2 (1010)\n-2160CD Uncompressed Size     00000AD3 (2771)\n-2160D1 Filename Length       003F (63)\n-2160D3 Extra Length          0000 (0)\n-2160D5 Comment Length        0000 (0)\n-2160D7 Disk Start            0000 (0)\n-2160D9 Int File Attributes   0000 (0)\n+218555 Compression Method    0008 (8) 'Deflated'\n+218557 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21855B CRC                   00000000 (0)\n+21855F Compressed Size       00000002 (2)\n+218563 Uncompressed Size     00000000 (0)\n+218567 Filename Length       0028 (40)\n+218569 Extra Length          0000 (0)\n+21856B Comment Length        0000 (0)\n+21856D Disk Start            0000 (0)\n+21856F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2160DB Ext File Attributes   00000000 (0)\n-2160DF Local Header Offset   0001E1B9 (123321)\n-2160E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218571 Ext File Attributes   00000000 (0)\n+218575 Local Header Offset   0003D57C (251260)\n+218579 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2160E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218579: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216122 CENTRAL HEADER #216   02014B50 (33639248)\n-216126 Created Zip Spec      14 (20) '2.0'\n-216127 Created OS            00 (0) 'MS-DOS'\n-216128 Extract Zip Spec      14 (20) '2.0'\n-216129 Extract OS            00 (0) 'MS-DOS'\n-21612A General Purpose Flag  0808 (2056)\n+2185A1 CENTRAL HEADER #216   02014B50 (33639248)\n+2185A5 Created Zip Spec      14 (20) '2.0'\n+2185A6 Created OS            00 (0) 'MS-DOS'\n+2185A7 Extract Zip Spec      14 (20) '2.0'\n+2185A8 Extract OS            00 (0) 'MS-DOS'\n+2185A9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21612C Compression Method    0008 (8) 'Deflated'\n-21612E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216132 CRC                   1E03A4CD (503555277)\n-216136 Compressed Size       0000004A (74)\n-21613A Uncompressed Size     0000004E (78)\n-21613E Filename Length       0046 (70)\n-216140 Extra Length          0000 (0)\n-216142 Comment Length        0000 (0)\n-216144 Disk Start            0000 (0)\n-216146 Int File Attributes   0000 (0)\n+2185AB Compression Method    0008 (8) 'Deflated'\n+2185AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2185B1 CRC                   20710777 (544278391)\n+2185B5 Compressed Size       00000C40 (3136)\n+2185B9 Uncompressed Size     00002E80 (11904)\n+2185BD Filename Length       0036 (54)\n+2185BF Extra Length          0000 (0)\n+2185C1 Comment Length        0000 (0)\n+2185C3 Disk Start            0000 (0)\n+2185C5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216148 Ext File Attributes   00000000 (0)\n-21614C Local Header Offset   0001E618 (124440)\n-216150 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2185C7 Ext File Attributes   00000000 (0)\n+2185CB Local Header Offset   0003D5D4 (251348)\n+2185CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216150: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2185CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216196 CENTRAL HEADER #217   02014B50 (33639248)\n-21619A Created Zip Spec      14 (20) '2.0'\n-21619B Created OS            00 (0) 'MS-DOS'\n-21619C Extract Zip Spec      14 (20) '2.0'\n-21619D Extract OS            00 (0) 'MS-DOS'\n-21619E General Purpose Flag  0808 (2056)\n+218605 CENTRAL HEADER #217   02014B50 (33639248)\n+218609 Created Zip Spec      14 (20) '2.0'\n+21860A Created OS            00 (0) 'MS-DOS'\n+21860B Extract Zip Spec      14 (20) '2.0'\n+21860C Extract OS            00 (0) 'MS-DOS'\n+21860D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2161A0 Compression Method    0008 (8) 'Deflated'\n-2161A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2161A6 CRC                   00000000 (0)\n-2161AA Compressed Size       00000002 (2)\n-2161AE Uncompressed Size     00000000 (0)\n-2161B2 Filename Length       0031 (49)\n-2161B4 Extra Length          0000 (0)\n-2161B6 Comment Length        0000 (0)\n-2161B8 Disk Start            0000 (0)\n-2161BA Int File Attributes   0000 (0)\n+21860F Compression Method    0008 (8) 'Deflated'\n+218611 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218615 CRC                   1A0DB37D (437105533)\n+218619 Compressed Size       000002A5 (677)\n+21861D Uncompressed Size     00000541 (1345)\n+218621 Filename Length       003D (61)\n+218623 Extra Length          0000 (0)\n+218625 Comment Length        0000 (0)\n+218627 Disk Start            0000 (0)\n+218629 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2161BC Ext File Attributes   00000000 (0)\n-2161C0 Local Header Offset   0001E6D6 (124630)\n-2161C4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21862B Ext File Attributes   00000000 (0)\n+21862F Local Header Offset   0003E278 (254584)\n+218633 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2161C4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218633: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2161F5 CENTRAL HEADER #218   02014B50 (33639248)\n-2161F9 Created Zip Spec      14 (20) '2.0'\n-2161FA Created OS            00 (0) 'MS-DOS'\n-2161FB Extract Zip Spec      14 (20) '2.0'\n-2161FC Extract OS            00 (0) 'MS-DOS'\n-2161FD General Purpose Flag  0808 (2056)\n+218670 CENTRAL HEADER #218   02014B50 (33639248)\n+218674 Created Zip Spec      14 (20) '2.0'\n+218675 Created OS            00 (0) 'MS-DOS'\n+218676 Extract Zip Spec      14 (20) '2.0'\n+218677 Extract OS            00 (0) 'MS-DOS'\n+218678 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2161FF Compression Method    0008 (8) 'Deflated'\n-216201 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216205 CRC                   417FF1D2 (1098904018)\n-216209 Compressed Size       000003E9 (1001)\n-21620D Uncompressed Size     0000113A (4410)\n-216211 Filename Length       0038 (56)\n-216213 Extra Length          0000 (0)\n-216215 Comment Length        0000 (0)\n-216217 Disk Start            0000 (0)\n-216219 Int File Attributes   0000 (0)\n+21867A Compression Method    0008 (8) 'Deflated'\n+21867C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218680 CRC                   00000000 (0)\n+218684 Compressed Size       00000002 (2)\n+218688 Uncompressed Size     00000000 (0)\n+21868C Filename Length       002E (46)\n+21868E Extra Length          0000 (0)\n+218690 Comment Length        0000 (0)\n+218692 Disk Start            0000 (0)\n+218694 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21621B Ext File Attributes   00000000 (0)\n-21621F Local Header Offset   0001E737 (124727)\n-216223 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218696 Ext File Attributes   00000000 (0)\n+21869A Local Header Offset   0003E588 (255368)\n+21869E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216223: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21869E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21625B CENTRAL HEADER #219   02014B50 (33639248)\n-21625F Created Zip Spec      14 (20) '2.0'\n-216260 Created OS            00 (0) 'MS-DOS'\n-216261 Extract Zip Spec      14 (20) '2.0'\n-216262 Extract OS            00 (0) 'MS-DOS'\n-216263 General Purpose Flag  0808 (2056)\n+2186CC CENTRAL HEADER #219   02014B50 (33639248)\n+2186D0 Created Zip Spec      14 (20) '2.0'\n+2186D1 Created OS            00 (0) 'MS-DOS'\n+2186D2 Extract Zip Spec      14 (20) '2.0'\n+2186D3 Extract OS            00 (0) 'MS-DOS'\n+2186D4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216265 Compression Method    0008 (8) 'Deflated'\n-216267 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21626B CRC                   3C368062 (1010204770)\n-21626F Compressed Size       00000045 (69)\n-216273 Uncompressed Size     00000047 (71)\n-216277 Filename Length       003F (63)\n-216279 Extra Length          0000 (0)\n-21627B Comment Length        0000 (0)\n-21627D Disk Start            0000 (0)\n-21627F Int File Attributes   0000 (0)\n+2186D6 Compression Method    0008 (8) 'Deflated'\n+2186D8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2186DC CRC                   20217A79 (539064953)\n+2186E0 Compressed Size       0000027E (638)\n+2186E4 Uncompressed Size     00000528 (1320)\n+2186E8 Filename Length       0036 (54)\n+2186EA Extra Length          0000 (0)\n+2186EC Comment Length        0000 (0)\n+2186EE Disk Start            0000 (0)\n+2186F0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216281 Ext File Attributes   00000000 (0)\n-216285 Local Header Offset   0001EB86 (125830)\n-216289 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2186F2 Ext File Attributes   00000000 (0)\n+2186F6 Local Header Offset   0003E5E6 (255462)\n+2186FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216289: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2186FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2162C8 CENTRAL HEADER #220   02014B50 (33639248)\n-2162CC Created Zip Spec      14 (20) '2.0'\n-2162CD Created OS            00 (0) 'MS-DOS'\n-2162CE Extract Zip Spec      14 (20) '2.0'\n-2162CF Extract OS            00 (0) 'MS-DOS'\n-2162D0 General Purpose Flag  0808 (2056)\n+218730 CENTRAL HEADER #220   02014B50 (33639248)\n+218734 Created Zip Spec      14 (20) '2.0'\n+218735 Created OS            00 (0) 'MS-DOS'\n+218736 Extract Zip Spec      14 (20) '2.0'\n+218737 Extract OS            00 (0) 'MS-DOS'\n+218738 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2162D2 Compression Method    0008 (8) 'Deflated'\n-2162D4 Modification Time     50DD91CB (1356698059) 'Mon Jun 29 18:14:22 2020'\n-2162D8 CRC                   00000000 (0)\n-2162DC Compressed Size       00000002 (2)\n-2162E0 Uncompressed Size     00000000 (0)\n-2162E4 Filename Length       001B (27)\n-2162E6 Extra Length          0000 (0)\n-2162E8 Comment Length        0000 (0)\n-2162EA Disk Start            0000 (0)\n-2162EC Int File Attributes   0000 (0)\n+21873A Compression Method    0008 (8) 'Deflated'\n+21873C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218740 CRC                   EFB59934 (4021655860)\n+218744 Compressed Size       00000430 (1072)\n+218748 Uncompressed Size     00000B39 (2873)\n+21874C Filename Length       0040 (64)\n+21874E Extra Length          0000 (0)\n+218750 Comment Length        0000 (0)\n+218752 Disk Start            0000 (0)\n+218754 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2162EE Ext File Attributes   00000000 (0)\n-2162F2 Local Header Offset   0001EC38 (126008)\n-2162F6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218756 Ext File Attributes   00000000 (0)\n+21875A Local Header Offset   0003E8C8 (256200)\n+21875E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2162F6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21875E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216311 CENTRAL HEADER #221   02014B50 (33639248)\n-216315 Created Zip Spec      14 (20) '2.0'\n-216316 Created OS            00 (0) 'MS-DOS'\n-216317 Extract Zip Spec      14 (20) '2.0'\n-216318 Extract OS            00 (0) 'MS-DOS'\n-216319 General Purpose Flag  0808 (2056)\n+21879E CENTRAL HEADER #221   02014B50 (33639248)\n+2187A2 Created Zip Spec      14 (20) '2.0'\n+2187A3 Created OS            00 (0) 'MS-DOS'\n+2187A4 Extract Zip Spec      14 (20) '2.0'\n+2187A5 Extract OS            00 (0) 'MS-DOS'\n+2187A6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21631B Compression Method    0008 (8) 'Deflated'\n-21631D Modification Time     50DD91CB (1356698059) 'Mon Jun 29 18:14:22 2020'\n-216321 CRC                   00000000 (0)\n-216325 Compressed Size       00000002 (2)\n-216329 Uncompressed Size     00000000 (0)\n-21632D Filename Length       0028 (40)\n-21632F Extra Length          0000 (0)\n-216331 Comment Length        0000 (0)\n-216333 Disk Start            0000 (0)\n-216335 Int File Attributes   0000 (0)\n+2187A8 Compression Method    0008 (8) 'Deflated'\n+2187AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2187AE CRC                   B7F4FBDF (3086285791)\n+2187B2 Compressed Size       0000030A (778)\n+2187B6 Uncompressed Size     0000063D (1597)\n+2187BA Filename Length       0040 (64)\n+2187BC Extra Length          0000 (0)\n+2187BE Comment Length        0000 (0)\n+2187C0 Disk Start            0000 (0)\n+2187C2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216337 Ext File Attributes   00000000 (0)\n-21633B Local Header Offset   0001EC83 (126083)\n-21633F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2187C4 Ext File Attributes   00000000 (0)\n+2187C8 Local Header Offset   0003ED66 (257382)\n+2187CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21633F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2187CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216367 CENTRAL HEADER #222   02014B50 (33639248)\n-21636B Created Zip Spec      14 (20) '2.0'\n-21636C Created OS            00 (0) 'MS-DOS'\n-21636D Extract Zip Spec      14 (20) '2.0'\n-21636E Extract OS            00 (0) 'MS-DOS'\n-21636F General Purpose Flag  0808 (2056)\n+21880C CENTRAL HEADER #222   02014B50 (33639248)\n+218810 Created Zip Spec      14 (20) '2.0'\n+218811 Created OS            00 (0) 'MS-DOS'\n+218812 Extract Zip Spec      14 (20) '2.0'\n+218813 Extract OS            00 (0) 'MS-DOS'\n+218814 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216371 Compression Method    0008 (8) 'Deflated'\n-216373 Modification Time     50DD91CB (1356698059) 'Mon Jun 29 18:14:22 2020'\n-216377 CRC                   37B34B5F (934497119)\n-21637B Compressed Size       0000006B (107)\n-21637F Uncompressed Size     0000006C (108)\n-216383 Filename Length       0036 (54)\n-216385 Extra Length          0000 (0)\n-216387 Comment Length        0000 (0)\n-216389 Disk Start            0000 (0)\n-21638B Int File Attributes   0000 (0)\n+218816 Compression Method    0008 (8) 'Deflated'\n+218818 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21881C CRC                   00000000 (0)\n+218820 Compressed Size       00000002 (2)\n+218824 Uncompressed Size     00000000 (0)\n+218828 Filename Length       0025 (37)\n+21882A Extra Length          0000 (0)\n+21882C Comment Length        0000 (0)\n+21882E Disk Start            0000 (0)\n+218830 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21638D Ext File Attributes   00000000 (0)\n-216391 Local Header Offset   0001ECDB (126171)\n-216395 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218832 Ext File Attributes   00000000 (0)\n+218836 Local Header Offset   0003F0DE (258270)\n+21883A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216395: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21883A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2163CB CENTRAL HEADER #223   02014B50 (33639248)\n-2163CF Created Zip Spec      14 (20) '2.0'\n-2163D0 Created OS            00 (0) 'MS-DOS'\n-2163D1 Extract Zip Spec      14 (20) '2.0'\n-2163D2 Extract OS            00 (0) 'MS-DOS'\n-2163D3 General Purpose Flag  0808 (2056)\n+21885F CENTRAL HEADER #223   02014B50 (33639248)\n+218863 Created Zip Spec      14 (20) '2.0'\n+218864 Created OS            00 (0) 'MS-DOS'\n+218865 Extract Zip Spec      14 (20) '2.0'\n+218866 Extract OS            00 (0) 'MS-DOS'\n+218867 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2163D5 Compression Method    0008 (8) 'Deflated'\n-2163D7 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-2163DB CRC                   A18F9C9F (2710543519)\n-2163DF Compressed Size       000007A0 (1952)\n-2163E3 Uncompressed Size     000025D9 (9689)\n-2163E7 Filename Length       002F (47)\n-2163E9 Extra Length          0000 (0)\n-2163EB Comment Length        0000 (0)\n-2163ED Disk Start            0000 (0)\n-2163EF Int File Attributes   0000 (0)\n+218869 Compression Method    0008 (8) 'Deflated'\n+21886B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21886F CRC                   11C1AD74 (297905524)\n+218873 Compressed Size       00000CF0 (3312)\n+218877 Uncompressed Size     00003376 (13174)\n+21887B Filename Length       0040 (64)\n+21887D Extra Length          0000 (0)\n+21887F Comment Length        0000 (0)\n+218881 Disk Start            0000 (0)\n+218883 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2163F1 Ext File Attributes   00000000 (0)\n-2163F5 Local Header Offset   0001EDAA (126378)\n-2163F9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218885 Ext File Attributes   00000000 (0)\n+218889 Local Header Offset   0003F133 (258355)\n+21888D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2163F9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21888D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216428 CENTRAL HEADER #224   02014B50 (33639248)\n-21642C Created Zip Spec      14 (20) '2.0'\n-21642D Created OS            00 (0) 'MS-DOS'\n-21642E Extract Zip Spec      14 (20) '2.0'\n-21642F Extract OS            00 (0) 'MS-DOS'\n-216430 General Purpose Flag  0808 (2056)\n+2188CD CENTRAL HEADER #224   02014B50 (33639248)\n+2188D1 Created Zip Spec      14 (20) '2.0'\n+2188D2 Created OS            00 (0) 'MS-DOS'\n+2188D3 Extract Zip Spec      14 (20) '2.0'\n+2188D4 Extract OS            00 (0) 'MS-DOS'\n+2188D5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216432 Compression Method    0008 (8) 'Deflated'\n-216434 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216438 CRC                   00000000 (0)\n-21643C Compressed Size       00000002 (2)\n-216440 Uncompressed Size     00000000 (0)\n-216444 Filename Length       0033 (51)\n-216446 Extra Length          0000 (0)\n-216448 Comment Length        0000 (0)\n-21644A Disk Start            0000 (0)\n-21644C Int File Attributes   0000 (0)\n+2188D7 Compression Method    0008 (8) 'Deflated'\n+2188D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2188DD CRC                   8CA55593 (2359645587)\n+2188E1 Compressed Size       00000295 (661)\n+2188E5 Uncompressed Size     00000546 (1350)\n+2188E9 Filename Length       003A (58)\n+2188EB Extra Length          0000 (0)\n+2188ED Comment Length        0000 (0)\n+2188EF Disk Start            0000 (0)\n+2188F1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21644E Ext File Attributes   00000000 (0)\n-216452 Local Header Offset   0001F5A7 (128423)\n-216456 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2188F3 Ext File Attributes   00000000 (0)\n+2188F7 Local Header Offset   0003FE91 (261777)\n+2188FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216456: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2188FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216489 CENTRAL HEADER #225   02014B50 (33639248)\n-21648D Created Zip Spec      14 (20) '2.0'\n-21648E Created OS            00 (0) 'MS-DOS'\n-21648F Extract Zip Spec      14 (20) '2.0'\n-216490 Extract OS            00 (0) 'MS-DOS'\n-216491 General Purpose Flag  0808 (2056)\n+218935 CENTRAL HEADER #225   02014B50 (33639248)\n+218939 Created Zip Spec      14 (20) '2.0'\n+21893A Created OS            00 (0) 'MS-DOS'\n+21893B Extract Zip Spec      14 (20) '2.0'\n+21893C Extract OS            00 (0) 'MS-DOS'\n+21893D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216493 Compression Method    0008 (8) 'Deflated'\n-216495 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216499 CRC                   364739E6 (910637542)\n-21649D Compressed Size       000003CF (975)\n-2164A1 Uncompressed Size     00000BF2 (3058)\n-2164A5 Filename Length       003A (58)\n-2164A7 Extra Length          0000 (0)\n-2164A9 Comment Length        0000 (0)\n-2164AB Disk Start            0000 (0)\n-2164AD Int File Attributes   0000 (0)\n+21893F Compression Method    0008 (8) 'Deflated'\n+218941 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218945 CRC                   BDD5C58A (3184903562)\n+218949 Compressed Size       00000301 (769)\n+21894D Uncompressed Size     000006DC (1756)\n+218951 Filename Length       0041 (65)\n+218953 Extra Length          0000 (0)\n+218955 Comment Length        0000 (0)\n+218957 Disk Start            0000 (0)\n+218959 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2164AF Ext File Attributes   00000000 (0)\n-2164B3 Local Header Offset   0001F60A (128522)\n-2164B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21895B Ext File Attributes   00000000 (0)\n+21895F Local Header Offset   0004018E (262542)\n+218963 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2164B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218963: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2164F1 CENTRAL HEADER #226   02014B50 (33639248)\n-2164F5 Created Zip Spec      14 (20) '2.0'\n-2164F6 Created OS            00 (0) 'MS-DOS'\n-2164F7 Extract Zip Spec      14 (20) '2.0'\n-2164F8 Extract OS            00 (0) 'MS-DOS'\n-2164F9 General Purpose Flag  0808 (2056)\n+2189A4 CENTRAL HEADER #226   02014B50 (33639248)\n+2189A8 Created Zip Spec      14 (20) '2.0'\n+2189A9 Created OS            00 (0) 'MS-DOS'\n+2189AA Extract Zip Spec      14 (20) '2.0'\n+2189AB Extract OS            00 (0) 'MS-DOS'\n+2189AC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2164FB Compression Method    0008 (8) 'Deflated'\n-2164FD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216501 CRC                   EC609363 (3965752163)\n-216505 Compressed Size       00000047 (71)\n-216509 Uncompressed Size     00000049 (73)\n-21650D Filename Length       0041 (65)\n-21650F Extra Length          0000 (0)\n-216511 Comment Length        0000 (0)\n-216513 Disk Start            0000 (0)\n-216515 Int File Attributes   0000 (0)\n+2189AE Compression Method    0008 (8) 'Deflated'\n+2189B0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2189B4 CRC                   DBE638BA (3689298106)\n+2189B8 Compressed Size       00000287 (647)\n+2189BC Uncompressed Size     00000518 (1304)\n+2189C0 Filename Length       003A (58)\n+2189C2 Extra Length          0000 (0)\n+2189C4 Comment Length        0000 (0)\n+2189C6 Disk Start            0000 (0)\n+2189C8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216517 Ext File Attributes   00000000 (0)\n-21651B Local Header Offset   0001FA41 (129601)\n-21651F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2189CA Ext File Attributes   00000000 (0)\n+2189CE Local Header Offset   000404FE (263422)\n+2189D2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21651F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2189D2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216560 CENTRAL HEADER #227   02014B50 (33639248)\n-216564 Created Zip Spec      14 (20) '2.0'\n-216565 Created OS            00 (0) 'MS-DOS'\n-216566 Extract Zip Spec      14 (20) '2.0'\n-216567 Extract OS            00 (0) 'MS-DOS'\n-216568 General Purpose Flag  0808 (2056)\n+218A0C CENTRAL HEADER #227   02014B50 (33639248)\n+218A10 Created Zip Spec      14 (20) '2.0'\n+218A11 Created OS            00 (0) 'MS-DOS'\n+218A12 Extract Zip Spec      14 (20) '2.0'\n+218A13 Extract OS            00 (0) 'MS-DOS'\n+218A14 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21656A Compression Method    0008 (8) 'Deflated'\n-21656C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216570 CRC                   00000000 (0)\n-216574 Compressed Size       00000002 (2)\n-216578 Uncompressed Size     00000000 (0)\n-21657C Filename Length       0040 (64)\n-21657E Extra Length          0000 (0)\n-216580 Comment Length        0000 (0)\n-216582 Disk Start            0000 (0)\n-216584 Int File Attributes   0000 (0)\n+218A16 Compression Method    0008 (8) 'Deflated'\n+218A18 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218A1C CRC                   4263898A (1113819530)\n+218A20 Compressed Size       0000065D (1629)\n+218A24 Uncompressed Size     00001420 (5152)\n+218A28 Filename Length       0041 (65)\n+218A2A Extra Length          0000 (0)\n+218A2C Comment Length        0000 (0)\n+218A2E Disk Start            0000 (0)\n+218A30 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216586 Ext File Attributes   00000000 (0)\n-21658A Local Header Offset   0001FAF7 (129783)\n-21658E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218A32 Ext File Attributes   00000000 (0)\n+218A36 Local Header Offset   000407ED (264173)\n+218A3A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21658E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218A3A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2165CE CENTRAL HEADER #228   02014B50 (33639248)\n-2165D2 Created Zip Spec      14 (20) '2.0'\n-2165D3 Created OS            00 (0) 'MS-DOS'\n-2165D4 Extract Zip Spec      14 (20) '2.0'\n-2165D5 Extract OS            00 (0) 'MS-DOS'\n-2165D6 General Purpose Flag  0808 (2056)\n+218A7B CENTRAL HEADER #228   02014B50 (33639248)\n+218A7F Created Zip Spec      14 (20) '2.0'\n+218A80 Created OS            00 (0) 'MS-DOS'\n+218A81 Extract Zip Spec      14 (20) '2.0'\n+218A82 Extract OS            00 (0) 'MS-DOS'\n+218A83 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2165D8 Compression Method    0008 (8) 'Deflated'\n-2165DA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2165DE CRC                   6E02A698 (1845667480)\n-2165E2 Compressed Size       0000034D (845)\n-2165E6 Uncompressed Size     0000086B (2155)\n-2165EA Filename Length       0047 (71)\n-2165EC Extra Length          0000 (0)\n-2165EE Comment Length        0000 (0)\n-2165F0 Disk Start            0000 (0)\n-2165F2 Int File Attributes   0000 (0)\n+218A85 Compression Method    0008 (8) 'Deflated'\n+218A87 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218A8B CRC                   61647F39 (1633976121)\n+218A8F Compressed Size       000005E5 (1509)\n+218A93 Uncompressed Size     0000187C (6268)\n+218A97 Filename Length       0036 (54)\n+218A99 Extra Length          0000 (0)\n+218A9B Comment Length        0000 (0)\n+218A9D Disk Start            0000 (0)\n+218A9F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2165F4 Ext File Attributes   00000000 (0)\n-2165F8 Local Header Offset   0001FB67 (129895)\n-2165FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218AA1 Ext File Attributes   00000000 (0)\n+218AA5 Local Header Offset   00040EB9 (265913)\n+218AA9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2165FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218AA9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216643 CENTRAL HEADER #229   02014B50 (33639248)\n-216647 Created Zip Spec      14 (20) '2.0'\n-216648 Created OS            00 (0) 'MS-DOS'\n-216649 Extract Zip Spec      14 (20) '2.0'\n-21664A Extract OS            00 (0) 'MS-DOS'\n-21664B General Purpose Flag  0808 (2056)\n+218ADF CENTRAL HEADER #229   02014B50 (33639248)\n+218AE3 Created Zip Spec      14 (20) '2.0'\n+218AE4 Created OS            00 (0) 'MS-DOS'\n+218AE5 Extract Zip Spec      14 (20) '2.0'\n+218AE6 Extract OS            00 (0) 'MS-DOS'\n+218AE7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21664D Compression Method    0008 (8) 'Deflated'\n-21664F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216653 CRC                   15F7279D (368519069)\n-216657 Compressed Size       00000050 (80)\n-21665B Uncompressed Size     00000056 (86)\n-21665F Filename Length       004E (78)\n-216661 Extra Length          0000 (0)\n-216663 Comment Length        0000 (0)\n-216665 Disk Start            0000 (0)\n-216667 Int File Attributes   0000 (0)\n+218AE9 Compression Method    0008 (8) 'Deflated'\n+218AEB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218AEF CRC                   48FD2377 (1224549239)\n+218AF3 Compressed Size       000002AA (682)\n+218AF7 Uncompressed Size     00000559 (1369)\n+218AFB Filename Length       0039 (57)\n+218AFD Extra Length          0000 (0)\n+218AFF Comment Length        0000 (0)\n+218B01 Disk Start            0000 (0)\n+218B03 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216669 Ext File Attributes   00000000 (0)\n-21666D Local Header Offset   0001FF29 (130857)\n-216671 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218B05 Ext File Attributes   00000000 (0)\n+218B09 Local Header Offset   00041502 (267522)\n+218B0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216671: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218B0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2166BF CENTRAL HEADER #230   02014B50 (33639248)\n-2166C3 Created Zip Spec      14 (20) '2.0'\n-2166C4 Created OS            00 (0) 'MS-DOS'\n-2166C5 Extract Zip Spec      14 (20) '2.0'\n-2166C6 Extract OS            00 (0) 'MS-DOS'\n-2166C7 General Purpose Flag  0808 (2056)\n+218B46 CENTRAL HEADER #230   02014B50 (33639248)\n+218B4A Created Zip Spec      14 (20) '2.0'\n+218B4B Created OS            00 (0) 'MS-DOS'\n+218B4C Extract Zip Spec      14 (20) '2.0'\n+218B4D Extract OS            00 (0) 'MS-DOS'\n+218B4E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2166C9 Compression Method    0008 (8) 'Deflated'\n-2166CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2166CF CRC                   00000000 (0)\n-2166D3 Compressed Size       00000002 (2)\n-2166D7 Uncompressed Size     00000000 (0)\n-2166DB Filename Length       003C (60)\n-2166DD Extra Length          0000 (0)\n-2166DF Comment Length        0000 (0)\n-2166E1 Disk Start            0000 (0)\n-2166E3 Int File Attributes   0000 (0)\n+218B50 Compression Method    0008 (8) 'Deflated'\n+218B52 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218B56 CRC                   DAA0DBC8 (3667975112)\n+218B5A Compressed Size       000007C4 (1988)\n+218B5E Uncompressed Size     00001AD7 (6871)\n+218B62 Filename Length       0040 (64)\n+218B64 Extra Length          0000 (0)\n+218B66 Comment Length        0000 (0)\n+218B68 Disk Start            0000 (0)\n+218B6A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2166E5 Ext File Attributes   00000000 (0)\n-2166E9 Local Header Offset   0001FFF5 (131061)\n-2166ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218B6C Ext File Attributes   00000000 (0)\n+218B70 Local Header Offset   00041813 (268307)\n+218B74 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2166ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218B74: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216729 CENTRAL HEADER #231   02014B50 (33639248)\n-21672D Created Zip Spec      14 (20) '2.0'\n-21672E Created OS            00 (0) 'MS-DOS'\n-21672F Extract Zip Spec      14 (20) '2.0'\n-216730 Extract OS            00 (0) 'MS-DOS'\n-216731 General Purpose Flag  0808 (2056)\n+218BB4 CENTRAL HEADER #231   02014B50 (33639248)\n+218BB8 Created Zip Spec      14 (20) '2.0'\n+218BB9 Created OS            00 (0) 'MS-DOS'\n+218BBA Extract Zip Spec      14 (20) '2.0'\n+218BBB Extract OS            00 (0) 'MS-DOS'\n+218BBC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216733 Compression Method    0008 (8) 'Deflated'\n-216735 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216739 CRC                   7F9CF02D (2140991533)\n-21673D Compressed Size       0000037B (891)\n-216741 Uncompressed Size     0000094F (2383)\n-216745 Filename Length       0043 (67)\n-216747 Extra Length          0000 (0)\n-216749 Comment Length        0000 (0)\n-21674B Disk Start            0000 (0)\n-21674D Int File Attributes   0000 (0)\n+218BBE Compression Method    0008 (8) 'Deflated'\n+218BC0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218BC4 CRC                   887DA686 (2289936006)\n+218BC8 Compressed Size       000002A9 (681)\n+218BCC Uncompressed Size     00000559 (1369)\n+218BD0 Filename Length       0039 (57)\n+218BD2 Extra Length          0000 (0)\n+218BD4 Comment Length        0000 (0)\n+218BD6 Disk Start            0000 (0)\n+218BD8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21674F Ext File Attributes   00000000 (0)\n-216753 Local Header Offset   00020061 (131169)\n-216757 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218BDA Ext File Attributes   00000000 (0)\n+218BDE Local Header Offset   00042045 (270405)\n+218BE2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216757: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218BE2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21679A CENTRAL HEADER #232   02014B50 (33639248)\n-21679E Created Zip Spec      14 (20) '2.0'\n-21679F Created OS            00 (0) 'MS-DOS'\n-2167A0 Extract Zip Spec      14 (20) '2.0'\n-2167A1 Extract OS            00 (0) 'MS-DOS'\n-2167A2 General Purpose Flag  0808 (2056)\n+218C1B CENTRAL HEADER #232   02014B50 (33639248)\n+218C1F Created Zip Spec      14 (20) '2.0'\n+218C20 Created OS            00 (0) 'MS-DOS'\n+218C21 Extract Zip Spec      14 (20) '2.0'\n+218C22 Extract OS            00 (0) 'MS-DOS'\n+218C23 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2167A4 Compression Method    0008 (8) 'Deflated'\n-2167A6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2167AA CRC                   3794C7CD (932497357)\n-2167AE Compressed Size       0000004C (76)\n-2167B2 Uncompressed Size     00000052 (82)\n-2167B6 Filename Length       004A (74)\n-2167B8 Extra Length          0000 (0)\n-2167BA Comment Length        0000 (0)\n-2167BC Disk Start            0000 (0)\n-2167BE Int File Attributes   0000 (0)\n+218C25 Compression Method    0008 (8) 'Deflated'\n+218C27 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218C2B CRC                   A7345C3C (2805226556)\n+218C2F Compressed Size       000004AB (1195)\n+218C33 Uncompressed Size     00000B51 (2897)\n+218C37 Filename Length       0040 (64)\n+218C39 Extra Length          0000 (0)\n+218C3B Comment Length        0000 (0)\n+218C3D Disk Start            0000 (0)\n+218C3F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2167C0 Ext File Attributes   00000000 (0)\n-2167C4 Local Header Offset   0002044D (132173)\n-2167C8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218C41 Ext File Attributes   00000000 (0)\n+218C45 Local Header Offset   00042355 (271189)\n+218C49 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2167C8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218C49: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216812 CENTRAL HEADER #233   02014B50 (33639248)\n-216816 Created Zip Spec      14 (20) '2.0'\n-216817 Created OS            00 (0) 'MS-DOS'\n-216818 Extract Zip Spec      14 (20) '2.0'\n-216819 Extract OS            00 (0) 'MS-DOS'\n-21681A General Purpose Flag  0808 (2056)\n+218C89 CENTRAL HEADER #233   02014B50 (33639248)\n+218C8D Created Zip Spec      14 (20) '2.0'\n+218C8E Created OS            00 (0) 'MS-DOS'\n+218C8F Extract Zip Spec      14 (20) '2.0'\n+218C90 Extract OS            00 (0) 'MS-DOS'\n+218C91 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21681C Compression Method    0008 (8) 'Deflated'\n-21681E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216822 CRC                   00000000 (0)\n-216826 Compressed Size       00000002 (2)\n-21682A Uncompressed Size     00000000 (0)\n-21682E Filename Length       003D (61)\n-216830 Extra Length          0000 (0)\n-216832 Comment Length        0000 (0)\n-216834 Disk Start            0000 (0)\n-216836 Int File Attributes   0000 (0)\n+218C93 Compression Method    0008 (8) 'Deflated'\n+218C95 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218C99 CRC                   C412C0D3 (3289563347)\n+218C9D Compressed Size       000002A9 (681)\n+218CA1 Uncompressed Size     00000559 (1369)\n+218CA5 Filename Length       0039 (57)\n+218CA7 Extra Length          0000 (0)\n+218CA9 Comment Length        0000 (0)\n+218CAB Disk Start            0000 (0)\n+218CAD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216838 Ext File Attributes   00000000 (0)\n-21683C Local Header Offset   00020511 (132369)\n-216840 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218CAF Ext File Attributes   00000000 (0)\n+218CB3 Local Header Offset   0004286E (272494)\n+218CB7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216840: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218CB7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21687D CENTRAL HEADER #234   02014B50 (33639248)\n-216881 Created Zip Spec      14 (20) '2.0'\n-216882 Created OS            00 (0) 'MS-DOS'\n-216883 Extract Zip Spec      14 (20) '2.0'\n-216884 Extract OS            00 (0) 'MS-DOS'\n-216885 General Purpose Flag  0808 (2056)\n+218CF0 CENTRAL HEADER #234   02014B50 (33639248)\n+218CF4 Created Zip Spec      14 (20) '2.0'\n+218CF5 Created OS            00 (0) 'MS-DOS'\n+218CF6 Extract Zip Spec      14 (20) '2.0'\n+218CF7 Extract OS            00 (0) 'MS-DOS'\n+218CF8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216887 Compression Method    0008 (8) 'Deflated'\n-216889 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21688D CRC                   4F6EDF6B (1332666219)\n-216891 Compressed Size       00000346 (838)\n-216895 Uncompressed Size     00000864 (2148)\n-216899 Filename Length       0044 (68)\n-21689B Extra Length          0000 (0)\n-21689D Comment Length        0000 (0)\n-21689F Disk Start            0000 (0)\n-2168A1 Int File Attributes   0000 (0)\n+218CFA Compression Method    0008 (8) 'Deflated'\n+218CFC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218D00 CRC                   7A3E3AF6 (2050898678)\n+218D04 Compressed Size       00000730 (1840)\n+218D08 Uncompressed Size     0000158D (5517)\n+218D0C Filename Length       0040 (64)\n+218D0E Extra Length          0000 (0)\n+218D10 Comment Length        0000 (0)\n+218D12 Disk Start            0000 (0)\n+218D14 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2168A3 Ext File Attributes   00000000 (0)\n-2168A7 Local Header Offset   0002057E (132478)\n-2168AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218D16 Ext File Attributes   00000000 (0)\n+218D1A Local Header Offset   00042B7E (273278)\n+218D1E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2168AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218D1E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2168EF CENTRAL HEADER #235   02014B50 (33639248)\n-2168F3 Created Zip Spec      14 (20) '2.0'\n-2168F4 Created OS            00 (0) 'MS-DOS'\n-2168F5 Extract Zip Spec      14 (20) '2.0'\n-2168F6 Extract OS            00 (0) 'MS-DOS'\n-2168F7 General Purpose Flag  0808 (2056)\n+218D5E CENTRAL HEADER #235   02014B50 (33639248)\n+218D62 Created Zip Spec      14 (20) '2.0'\n+218D63 Created OS            00 (0) 'MS-DOS'\n+218D64 Extract Zip Spec      14 (20) '2.0'\n+218D65 Extract OS            00 (0) 'MS-DOS'\n+218D66 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2168F9 Compression Method    0008 (8) 'Deflated'\n-2168FB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2168FF CRC                   B0326E74 (2956095092)\n-216903 Compressed Size       0000004E (78)\n-216907 Uncompressed Size     00000053 (83)\n-21690B Filename Length       004B (75)\n-21690D Extra Length          0000 (0)\n-21690F Comment Length        0000 (0)\n-216911 Disk Start            0000 (0)\n-216913 Int File Attributes   0000 (0)\n+218D68 Compression Method    0008 (8) 'Deflated'\n+218D6A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218D6E CRC                   68A40EAC (1755582124)\n+218D72 Compressed Size       000002AA (682)\n+218D76 Uncompressed Size     00000559 (1369)\n+218D7A Filename Length       0039 (57)\n+218D7C Extra Length          0000 (0)\n+218D7E Comment Length        0000 (0)\n+218D80 Disk Start            0000 (0)\n+218D82 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216915 Ext File Attributes   00000000 (0)\n-216919 Local Header Offset   00020936 (133430)\n-21691D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218D84 Ext File Attributes   00000000 (0)\n+218D88 Local Header Offset   0004331C (275228)\n+218D8C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21691D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218D8C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216968 CENTRAL HEADER #236   02014B50 (33639248)\n-21696C Created Zip Spec      14 (20) '2.0'\n-21696D Created OS            00 (0) 'MS-DOS'\n-21696E Extract Zip Spec      14 (20) '2.0'\n-21696F Extract OS            00 (0) 'MS-DOS'\n-216970 General Purpose Flag  0808 (2056)\n+218DC5 CENTRAL HEADER #236   02014B50 (33639248)\n+218DC9 Created Zip Spec      14 (20) '2.0'\n+218DCA Created OS            00 (0) 'MS-DOS'\n+218DCB Extract Zip Spec      14 (20) '2.0'\n+218DCC Extract OS            00 (0) 'MS-DOS'\n+218DCD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216972 Compression Method    0008 (8) 'Deflated'\n-216974 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216978 CRC                   00000000 (0)\n-21697C Compressed Size       00000002 (2)\n-216980 Uncompressed Size     00000000 (0)\n-216984 Filename Length       003B (59)\n-216986 Extra Length          0000 (0)\n-216988 Comment Length        0000 (0)\n-21698A Disk Start            0000 (0)\n-21698C Int File Attributes   0000 (0)\n+218DCF Compression Method    0008 (8) 'Deflated'\n+218DD1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218DD5 CRC                   DEA6E3F0 (3735479280)\n+218DD9 Compressed Size       000003F1 (1009)\n+218DDD Uncompressed Size     00000942 (2370)\n+218DE1 Filename Length       0040 (64)\n+218DE3 Extra Length          0000 (0)\n+218DE5 Comment Length        0000 (0)\n+218DE7 Disk Start            0000 (0)\n+218DE9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21698E Ext File Attributes   00000000 (0)\n-216992 Local Header Offset   000209FD (133629)\n-216996 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218DEB Ext File Attributes   00000000 (0)\n+218DEF Local Header Offset   0004362D (276013)\n+218DF3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216996: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218DF3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2169D1 CENTRAL HEADER #237   02014B50 (33639248)\n-2169D5 Created Zip Spec      14 (20) '2.0'\n-2169D6 Created OS            00 (0) 'MS-DOS'\n-2169D7 Extract Zip Spec      14 (20) '2.0'\n-2169D8 Extract OS            00 (0) 'MS-DOS'\n-2169D9 General Purpose Flag  0808 (2056)\n+218E33 CENTRAL HEADER #237   02014B50 (33639248)\n+218E37 Created Zip Spec      14 (20) '2.0'\n+218E38 Created OS            00 (0) 'MS-DOS'\n+218E39 Extract Zip Spec      14 (20) '2.0'\n+218E3A Extract OS            00 (0) 'MS-DOS'\n+218E3B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2169DB Compression Method    0008 (8) 'Deflated'\n-2169DD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2169E1 CRC                   FD7A58FE (4252653822)\n-2169E5 Compressed Size       000003C7 (967)\n-2169E9 Uncompressed Size     00000A63 (2659)\n-2169ED Filename Length       0042 (66)\n-2169EF Extra Length          0000 (0)\n-2169F1 Comment Length        0000 (0)\n-2169F3 Disk Start            0000 (0)\n-2169F5 Int File Attributes   0000 (0)\n+218E3D Compression Method    0008 (8) 'Deflated'\n+218E3F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218E43 CRC                   1E103695 (504379029)\n+218E47 Compressed Size       000002A9 (681)\n+218E4B Uncompressed Size     00000555 (1365)\n+218E4F Filename Length       0038 (56)\n+218E51 Extra Length          0000 (0)\n+218E53 Comment Length        0000 (0)\n+218E55 Disk Start            0000 (0)\n+218E57 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2169F7 Ext File Attributes   00000000 (0)\n-2169FB Local Header Offset   00020A68 (133736)\n-2169FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218E59 Ext File Attributes   00000000 (0)\n+218E5D Local Header Offset   00043A8C (277132)\n+218E61 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2169FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218E61: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216A41 CENTRAL HEADER #238   02014B50 (33639248)\n-216A45 Created Zip Spec      14 (20) '2.0'\n-216A46 Created OS            00 (0) 'MS-DOS'\n-216A47 Extract Zip Spec      14 (20) '2.0'\n-216A48 Extract OS            00 (0) 'MS-DOS'\n-216A49 General Purpose Flag  0808 (2056)\n+218E99 CENTRAL HEADER #238   02014B50 (33639248)\n+218E9D Created Zip Spec      14 (20) '2.0'\n+218E9E Created OS            00 (0) 'MS-DOS'\n+218E9F Extract Zip Spec      14 (20) '2.0'\n+218EA0 Extract OS            00 (0) 'MS-DOS'\n+218EA1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216A4B Compression Method    0008 (8) 'Deflated'\n-216A4D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216A51 CRC                   4B310E73 (1261506163)\n-216A55 Compressed Size       0000004C (76)\n-216A59 Uncompressed Size     00000051 (81)\n-216A5D Filename Length       0049 (73)\n-216A5F Extra Length          0000 (0)\n-216A61 Comment Length        0000 (0)\n-216A63 Disk Start            0000 (0)\n-216A65 Int File Attributes   0000 (0)\n+218EA3 Compression Method    0008 (8) 'Deflated'\n+218EA5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218EA9 CRC                   0384CEE3 (59035363)\n+218EAD Compressed Size       0000073B (1851)\n+218EB1 Uncompressed Size     0000153C (5436)\n+218EB5 Filename Length       003F (63)\n+218EB7 Extra Length          0000 (0)\n+218EB9 Comment Length        0000 (0)\n+218EBB Disk Start            0000 (0)\n+218EBD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216A67 Ext File Attributes   00000000 (0)\n-216A6B Local Header Offset   00020E9F (134815)\n-216A6F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218EBF Ext File Attributes   00000000 (0)\n+218EC3 Local Header Offset   00043D9B (277915)\n+218EC7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216A6F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218EC7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216AB8 CENTRAL HEADER #239   02014B50 (33639248)\n-216ABC Created Zip Spec      14 (20) '2.0'\n-216ABD Created OS            00 (0) 'MS-DOS'\n-216ABE Extract Zip Spec      14 (20) '2.0'\n-216ABF Extract OS            00 (0) 'MS-DOS'\n-216AC0 General Purpose Flag  0808 (2056)\n+218F06 CENTRAL HEADER #239   02014B50 (33639248)\n+218F0A Created Zip Spec      14 (20) '2.0'\n+218F0B Created OS            00 (0) 'MS-DOS'\n+218F0C Extract Zip Spec      14 (20) '2.0'\n+218F0D Extract OS            00 (0) 'MS-DOS'\n+218F0E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216AC2 Compression Method    0008 (8) 'Deflated'\n-216AC4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216AC8 CRC                   00000000 (0)\n-216ACC Compressed Size       00000002 (2)\n-216AD0 Uncompressed Size     00000000 (0)\n-216AD4 Filename Length       003C (60)\n-216AD6 Extra Length          0000 (0)\n-216AD8 Comment Length        0000 (0)\n-216ADA Disk Start            0000 (0)\n-216ADC Int File Attributes   0000 (0)\n+218F10 Compression Method    0008 (8) 'Deflated'\n+218F12 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218F16 CRC                   A4DAB8AE (2765797550)\n+218F1A Compressed Size       00000297 (663)\n+218F1E Uncompressed Size     0000052C (1324)\n+218F22 Filename Length       003A (58)\n+218F24 Extra Length          0000 (0)\n+218F26 Comment Length        0000 (0)\n+218F28 Disk Start            0000 (0)\n+218F2A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216ADE Ext File Attributes   00000000 (0)\n-216AE2 Local Header Offset   00020F62 (135010)\n-216AE6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218F2C Ext File Attributes   00000000 (0)\n+218F30 Local Header Offset   00044543 (279875)\n+218F34 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216AE6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218F34: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216B22 CENTRAL HEADER #240   02014B50 (33639248)\n-216B26 Created Zip Spec      14 (20) '2.0'\n-216B27 Created OS            00 (0) 'MS-DOS'\n-216B28 Extract Zip Spec      14 (20) '2.0'\n-216B29 Extract OS            00 (0) 'MS-DOS'\n-216B2A General Purpose Flag  0808 (2056)\n+218F6E CENTRAL HEADER #240   02014B50 (33639248)\n+218F72 Created Zip Spec      14 (20) '2.0'\n+218F73 Created OS            00 (0) 'MS-DOS'\n+218F74 Extract Zip Spec      14 (20) '2.0'\n+218F75 Extract OS            00 (0) 'MS-DOS'\n+218F76 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216B2C Compression Method    0008 (8) 'Deflated'\n-216B2E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216B32 CRC                   FC584130 (4233642288)\n-216B36 Compressed Size       00000332 (818)\n-216B3A Uncompressed Size     000007E7 (2023)\n-216B3E Filename Length       0043 (67)\n-216B40 Extra Length          0000 (0)\n-216B42 Comment Length        0000 (0)\n-216B44 Disk Start            0000 (0)\n-216B46 Int File Attributes   0000 (0)\n+218F78 Compression Method    0008 (8) 'Deflated'\n+218F7A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218F7E CRC                   FAE0CB59 (4209036121)\n+218F82 Compressed Size       000008BE (2238)\n+218F86 Uncompressed Size     00001EA2 (7842)\n+218F8A Filename Length       0041 (65)\n+218F8C Extra Length          0000 (0)\n+218F8E Comment Length        0000 (0)\n+218F90 Disk Start            0000 (0)\n+218F92 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216B48 Ext File Attributes   00000000 (0)\n-216B4C Local Header Offset   00020FCE (135118)\n-216B50 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+218F94 Ext File Attributes   00000000 (0)\n+218F98 Local Header Offset   00044842 (280642)\n+218F9C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216B50: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x218F9C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216B93 CENTRAL HEADER #241   02014B50 (33639248)\n-216B97 Created Zip Spec      14 (20) '2.0'\n-216B98 Created OS            00 (0) 'MS-DOS'\n-216B99 Extract Zip Spec      14 (20) '2.0'\n-216B9A Extract OS            00 (0) 'MS-DOS'\n-216B9B General Purpose Flag  0808 (2056)\n+218FDD CENTRAL HEADER #241   02014B50 (33639248)\n+218FE1 Created Zip Spec      14 (20) '2.0'\n+218FE2 Created OS            00 (0) 'MS-DOS'\n+218FE3 Extract Zip Spec      14 (20) '2.0'\n+218FE4 Extract OS            00 (0) 'MS-DOS'\n+218FE5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216B9D Compression Method    0008 (8) 'Deflated'\n-216B9F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216BA3 CRC                   B6221A00 (3055688192)\n-216BA7 Compressed Size       0000004D (77)\n-216BAB Uncompressed Size     00000052 (82)\n-216BAF Filename Length       004A (74)\n-216BB1 Extra Length          0000 (0)\n-216BB3 Comment Length        0000 (0)\n-216BB5 Disk Start            0000 (0)\n-216BB7 Int File Attributes   0000 (0)\n+218FE7 Compression Method    0008 (8) 'Deflated'\n+218FE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+218FED CRC                   B9BB0148 (3116040520)\n+218FF1 Compressed Size       00000273 (627)\n+218FF5 Uncompressed Size     000004AD (1197)\n+218FF9 Filename Length       0043 (67)\n+218FFB Extra Length          0000 (0)\n+218FFD Comment Length        0000 (0)\n+218FFF Disk Start            0000 (0)\n+219001 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216BB9 Ext File Attributes   00000000 (0)\n-216BBD Local Header Offset   00021371 (136049)\n-216BC1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219003 Ext File Attributes   00000000 (0)\n+219007 Local Header Offset   0004516F (282991)\n+21900B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216BC1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21900B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216C0B CENTRAL HEADER #242   02014B50 (33639248)\n-216C0F Created Zip Spec      14 (20) '2.0'\n-216C10 Created OS            00 (0) 'MS-DOS'\n-216C11 Extract Zip Spec      14 (20) '2.0'\n-216C12 Extract OS            00 (0) 'MS-DOS'\n-216C13 General Purpose Flag  0808 (2056)\n+21904E CENTRAL HEADER #242   02014B50 (33639248)\n+219052 Created Zip Spec      14 (20) '2.0'\n+219053 Created OS            00 (0) 'MS-DOS'\n+219054 Extract Zip Spec      14 (20) '2.0'\n+219055 Extract OS            00 (0) 'MS-DOS'\n+219056 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216C15 Compression Method    0008 (8) 'Deflated'\n-216C17 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216C1B CRC                   00000000 (0)\n-216C1F Compressed Size       00000002 (2)\n-216C23 Uncompressed Size     00000000 (0)\n-216C27 Filename Length       003F (63)\n-216C29 Extra Length          0000 (0)\n-216C2B Comment Length        0000 (0)\n-216C2D Disk Start            0000 (0)\n-216C2F Int File Attributes   0000 (0)\n+219058 Compression Method    0008 (8) 'Deflated'\n+21905A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21905E CRC                   00000000 (0)\n+219062 Compressed Size       00000002 (2)\n+219066 Uncompressed Size     00000000 (0)\n+21906A Filename Length       002F (47)\n+21906C Extra Length          0000 (0)\n+21906E Comment Length        0000 (0)\n+219070 Disk Start            0000 (0)\n+219072 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216C31 Ext File Attributes   00000000 (0)\n-216C35 Local Header Offset   00021436 (136246)\n-216C39 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219074 Ext File Attributes   00000000 (0)\n+219078 Local Header Offset   00045453 (283731)\n+21907C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216C39: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21907C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216C78 CENTRAL HEADER #243   02014B50 (33639248)\n-216C7C Created Zip Spec      14 (20) '2.0'\n-216C7D Created OS            00 (0) 'MS-DOS'\n-216C7E Extract Zip Spec      14 (20) '2.0'\n-216C7F Extract OS            00 (0) 'MS-DOS'\n-216C80 General Purpose Flag  0808 (2056)\n+2190AB CENTRAL HEADER #243   02014B50 (33639248)\n+2190AF Created Zip Spec      14 (20) '2.0'\n+2190B0 Created OS            00 (0) 'MS-DOS'\n+2190B1 Extract Zip Spec      14 (20) '2.0'\n+2190B2 Extract OS            00 (0) 'MS-DOS'\n+2190B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216C82 Compression Method    0008 (8) 'Deflated'\n-216C84 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216C88 CRC                   2219CEA0 (572116640)\n-216C8C Compressed Size       0000031B (795)\n-216C90 Uncompressed Size     0000070E (1806)\n-216C94 Filename Length       0046 (70)\n-216C96 Extra Length          0000 (0)\n-216C98 Comment Length        0000 (0)\n-216C9A Disk Start            0000 (0)\n-216C9C Int File Attributes   0000 (0)\n+2190B5 Compression Method    0008 (8) 'Deflated'\n+2190B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2190BB CRC                   381C2681 (941368961)\n+2190BF Compressed Size       00000268 (616)\n+2190C3 Uncompressed Size     0000047E (1150)\n+2190C7 Filename Length       004E (78)\n+2190C9 Extra Length          0000 (0)\n+2190CB Comment Length        0000 (0)\n+2190CD Disk Start            0000 (0)\n+2190CF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216C9E Ext File Attributes   00000000 (0)\n-216CA2 Local Header Offset   000214A5 (136357)\n-216CA6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2190D1 Ext File Attributes   00000000 (0)\n+2190D5 Local Header Offset   000454B2 (283826)\n+2190D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216CA6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2190D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216CEC CENTRAL HEADER #244   02014B50 (33639248)\n-216CF0 Created Zip Spec      14 (20) '2.0'\n-216CF1 Created OS            00 (0) 'MS-DOS'\n-216CF2 Extract Zip Spec      14 (20) '2.0'\n-216CF3 Extract OS            00 (0) 'MS-DOS'\n-216CF4 General Purpose Flag  0808 (2056)\n+219127 CENTRAL HEADER #244   02014B50 (33639248)\n+21912B Created Zip Spec      14 (20) '2.0'\n+21912C Created OS            00 (0) 'MS-DOS'\n+21912D Extract Zip Spec      14 (20) '2.0'\n+21912E Extract OS            00 (0) 'MS-DOS'\n+21912F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216CF6 Compression Method    0008 (8) 'Deflated'\n-216CF8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216CFC CRC                   B914F821 (3105159201)\n-216D00 Compressed Size       0000004F (79)\n-216D04 Uncompressed Size     00000055 (85)\n-216D08 Filename Length       004D (77)\n-216D0A Extra Length          0000 (0)\n-216D0C Comment Length        0000 (0)\n-216D0E Disk Start            0000 (0)\n-216D10 Int File Attributes   0000 (0)\n+219131 Compression Method    0008 (8) 'Deflated'\n+219133 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219137 CRC                   21012AB4 (553724596)\n+21913B Compressed Size       00000308 (776)\n+21913F Uncompressed Size     00000726 (1830)\n+219143 Filename Length       004B (75)\n+219145 Extra Length          0000 (0)\n+219147 Comment Length        0000 (0)\n+219149 Disk Start            0000 (0)\n+21914B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216D12 Ext File Attributes   00000000 (0)\n-216D16 Local Header Offset   00021834 (137268)\n-216D1A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21914D Ext File Attributes   00000000 (0)\n+219151 Local Header Offset   00045796 (284566)\n+219155 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216D1A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219155: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216D67 CENTRAL HEADER #245   02014B50 (33639248)\n-216D6B Created Zip Spec      14 (20) '2.0'\n-216D6C Created OS            00 (0) 'MS-DOS'\n-216D6D Extract Zip Spec      14 (20) '2.0'\n-216D6E Extract OS            00 (0) 'MS-DOS'\n-216D6F General Purpose Flag  0808 (2056)\n+2191A0 CENTRAL HEADER #245   02014B50 (33639248)\n+2191A4 Created Zip Spec      14 (20) '2.0'\n+2191A5 Created OS            00 (0) 'MS-DOS'\n+2191A6 Extract Zip Spec      14 (20) '2.0'\n+2191A7 Extract OS            00 (0) 'MS-DOS'\n+2191A8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216D71 Compression Method    0008 (8) 'Deflated'\n-216D73 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216D77 CRC                   00000000 (0)\n-216D7B Compressed Size       00000002 (2)\n-216D7F Uncompressed Size     00000000 (0)\n-216D83 Filename Length       0012 (18)\n-216D85 Extra Length          0000 (0)\n-216D87 Comment Length        0000 (0)\n-216D89 Disk Start            0000 (0)\n-216D8B Int File Attributes   0000 (0)\n+2191AA Compression Method    0008 (8) 'Deflated'\n+2191AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2191B0 CRC                   06F39E69 (116629097)\n+2191B4 Compressed Size       000004A7 (1191)\n+2191B8 Uncompressed Size     00000D2A (3370)\n+2191BC Filename Length       0041 (65)\n+2191BE Extra Length          0000 (0)\n+2191C0 Comment Length        0000 (0)\n+2191C2 Disk Start            0000 (0)\n+2191C4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216D8D Ext File Attributes   00000000 (0)\n-216D91 Local Header Offset   000218FE (137470)\n-216D95 Filename              'XXXXXXXXXXXXXXXXXX'\n+2191C6 Ext File Attributes   00000000 (0)\n+2191CA Local Header Offset   00045B17 (285463)\n+2191CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216D95: Filename 'XXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2191CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216DA7 CENTRAL HEADER #246   02014B50 (33639248)\n-216DAB Created Zip Spec      14 (20) '2.0'\n-216DAC Created OS            00 (0) 'MS-DOS'\n-216DAD Extract Zip Spec      14 (20) '2.0'\n-216DAE Extract OS            00 (0) 'MS-DOS'\n-216DAF General Purpose Flag  0808 (2056)\n+21920F CENTRAL HEADER #246   02014B50 (33639248)\n+219213 Created Zip Spec      14 (20) '2.0'\n+219214 Created OS            00 (0) 'MS-DOS'\n+219215 Extract Zip Spec      14 (20) '2.0'\n+219216 Extract OS            00 (0) 'MS-DOS'\n+219217 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216DB1 Compression Method    0008 (8) 'Deflated'\n-216DB3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216DB7 CRC                   00000000 (0)\n-216DBB Compressed Size       00000002 (2)\n-216DBF Uncompressed Size     00000000 (0)\n-216DC3 Filename Length       0004 (4)\n-216DC5 Extra Length          0000 (0)\n-216DC7 Comment Length        0000 (0)\n-216DC9 Disk Start            0000 (0)\n-216DCB Int File Attributes   0000 (0)\n+219219 Compression Method    0008 (8) 'Deflated'\n+21921B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21921F CRC                   34F1D732 (888264498)\n+219223 Compressed Size       00000227 (551)\n+219227 Uncompressed Size     000003D0 (976)\n+21922B Filename Length       0041 (65)\n+21922D Extra Length          0000 (0)\n+21922F Comment Length        0000 (0)\n+219231 Disk Start            0000 (0)\n+219233 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216DCD Ext File Attributes   00000000 (0)\n-216DD1 Local Header Offset   00021940 (137536)\n-216DD5 Filename              'XXXX'\n+219235 Ext File Attributes   00000000 (0)\n+219239 Local Header Offset   0004602D (286765)\n+21923D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216DD5: Filename 'XXXX'\n+# WARNING: Offset 0x21923D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216DD9 CENTRAL HEADER #247   02014B50 (33639248)\n-216DDD Created Zip Spec      14 (20) '2.0'\n-216DDE Created OS            00 (0) 'MS-DOS'\n-216DDF Extract Zip Spec      14 (20) '2.0'\n-216DE0 Extract OS            00 (0) 'MS-DOS'\n-216DE1 General Purpose Flag  0808 (2056)\n+21927E CENTRAL HEADER #247   02014B50 (33639248)\n+219282 Created Zip Spec      14 (20) '2.0'\n+219283 Created OS            00 (0) 'MS-DOS'\n+219284 Extract Zip Spec      14 (20) '2.0'\n+219285 Extract OS            00 (0) 'MS-DOS'\n+219286 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216DE3 Compression Method    0008 (8) 'Deflated'\n-216DE5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216DE9 CRC                   00000000 (0)\n-216DED Compressed Size       00000002 (2)\n-216DF1 Uncompressed Size     00000000 (0)\n-216DF5 Filename Length       000B (11)\n-216DF7 Extra Length          0000 (0)\n-216DF9 Comment Length        0000 (0)\n-216DFB Disk Start            0000 (0)\n-216DFD Int File Attributes   0000 (0)\n+219288 Compression Method    0008 (8) 'Deflated'\n+21928A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21928E CRC                   00000000 (0)\n+219292 Compressed Size       00000002 (2)\n+219296 Uncompressed Size     00000000 (0)\n+21929A Filename Length       002E (46)\n+21929C Extra Length          0000 (0)\n+21929E Comment Length        0000 (0)\n+2192A0 Disk Start            0000 (0)\n+2192A2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216DFF Ext File Attributes   00000000 (0)\n-216E03 Local Header Offset   00021974 (137588)\n-216E07 Filename              'XXXXXXXXXXX'\n+2192A4 Ext File Attributes   00000000 (0)\n+2192A8 Local Header Offset   000462C3 (287427)\n+2192AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216E07: Filename 'XXXXXXXXXXX'\n+# WARNING: Offset 0x2192AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216E12 CENTRAL HEADER #248   02014B50 (33639248)\n-216E16 Created Zip Spec      14 (20) '2.0'\n-216E17 Created OS            00 (0) 'MS-DOS'\n-216E18 Extract Zip Spec      14 (20) '2.0'\n-216E19 Extract OS            00 (0) 'MS-DOS'\n-216E1A General Purpose Flag  0808 (2056)\n+2192DA CENTRAL HEADER #248   02014B50 (33639248)\n+2192DE Created Zip Spec      14 (20) '2.0'\n+2192DF Created OS            00 (0) 'MS-DOS'\n+2192E0 Extract Zip Spec      14 (20) '2.0'\n+2192E1 Extract OS            00 (0) 'MS-DOS'\n+2192E2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216E1C Compression Method    0008 (8) 'Deflated'\n-216E1E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216E22 CRC                   00000000 (0)\n-216E26 Compressed Size       00000002 (2)\n-216E2A Uncompressed Size     00000000 (0)\n-216E2E Filename Length       0011 (17)\n-216E30 Extra Length          0000 (0)\n-216E32 Comment Length        0000 (0)\n-216E34 Disk Start            0000 (0)\n-216E36 Int File Attributes   0000 (0)\n+2192E4 Compression Method    0008 (8) 'Deflated'\n+2192E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2192EA CRC                   5C6630BB (1550201019)\n+2192EE Compressed Size       000002BD (701)\n+2192F2 Uncompressed Size     000005AE (1454)\n+2192F6 Filename Length       0043 (67)\n+2192F8 Extra Length          0000 (0)\n+2192FA Comment Length        0000 (0)\n+2192FC Disk Start            0000 (0)\n+2192FE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216E38 Ext File Attributes   00000000 (0)\n-216E3C Local Header Offset   000219AF (137647)\n-216E40 Filename              'XXXXXXXXXXXXXXXXX'\n+219300 Ext File Attributes   00000000 (0)\n+219304 Local Header Offset   00046321 (287521)\n+219308 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216E40: Filename 'XXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219308: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216E51 CENTRAL HEADER #249   02014B50 (33639248)\n-216E55 Created Zip Spec      14 (20) '2.0'\n-216E56 Created OS            00 (0) 'MS-DOS'\n-216E57 Extract Zip Spec      14 (20) '2.0'\n-216E58 Extract OS            00 (0) 'MS-DOS'\n-216E59 General Purpose Flag  0808 (2056)\n+21934B CENTRAL HEADER #249   02014B50 (33639248)\n+21934F Created Zip Spec      14 (20) '2.0'\n+219350 Created OS            00 (0) 'MS-DOS'\n+219351 Extract Zip Spec      14 (20) '2.0'\n+219352 Extract OS            00 (0) 'MS-DOS'\n+219353 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216E5B Compression Method    0008 (8) 'Deflated'\n-216E5D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216E61 CRC                   00000000 (0)\n-216E65 Compressed Size       00000002 (2)\n-216E69 Uncompressed Size     00000000 (0)\n-216E6D Filename Length       0018 (24)\n-216E6F Extra Length          0000 (0)\n-216E71 Comment Length        0000 (0)\n-216E73 Disk Start            0000 (0)\n-216E75 Int File Attributes   0000 (0)\n+219355 Compression Method    0008 (8) 'Deflated'\n+219357 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21935B CRC                   CAF28C51 (3404893265)\n+21935F Compressed Size       00000ADD (2781)\n+219363 Uncompressed Size     00002CF4 (11508)\n+219367 Filename Length       004A (74)\n+219369 Extra Length          0000 (0)\n+21936B Comment Length        0000 (0)\n+21936D Disk Start            0000 (0)\n+21936F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216E77 Ext File Attributes   00000000 (0)\n-216E7B Local Header Offset   000219F0 (137712)\n-216E7F Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+219371 Ext File Attributes   00000000 (0)\n+219375 Local Header Offset   0004664F (288335)\n+219379 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216E7F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219379: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216E97 CENTRAL HEADER #250   02014B50 (33639248)\n-216E9B Created Zip Spec      14 (20) '2.0'\n-216E9C Created OS            00 (0) 'MS-DOS'\n-216E9D Extract Zip Spec      14 (20) '2.0'\n-216E9E Extract OS            00 (0) 'MS-DOS'\n-216E9F General Purpose Flag  0808 (2056)\n+2193C3 CENTRAL HEADER #250   02014B50 (33639248)\n+2193C7 Created Zip Spec      14 (20) '2.0'\n+2193C8 Created OS            00 (0) 'MS-DOS'\n+2193C9 Extract Zip Spec      14 (20) '2.0'\n+2193CA Extract OS            00 (0) 'MS-DOS'\n+2193CB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216EA1 Compression Method    0008 (8) 'Deflated'\n-216EA3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216EA7 CRC                   44C14167 (1153515879)\n-216EAB Compressed Size       00000262 (610)\n-216EAF Uncompressed Size     00000471 (1137)\n-216EB3 Filename Length       002E (46)\n-216EB5 Extra Length          0000 (0)\n-216EB7 Comment Length        0000 (0)\n-216EB9 Disk Start            0000 (0)\n-216EBB Int File Attributes   0000 (0)\n+2193CD Compression Method    0008 (8) 'Deflated'\n+2193CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2193D3 CRC                   00000000 (0)\n+2193D7 Compressed Size       00000002 (2)\n+2193DB Uncompressed Size     00000000 (0)\n+2193DF Filename Length       002D (45)\n+2193E1 Extra Length          0000 (0)\n+2193E3 Comment Length        0000 (0)\n+2193E5 Disk Start            0000 (0)\n+2193E7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216EBD Ext File Attributes   00000000 (0)\n-216EC1 Local Header Offset   00021A38 (137784)\n-216EC5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2193E9 Ext File Attributes   00000000 (0)\n+2193ED Local Header Offset   000471A4 (291236)\n+2193F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216EC5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2193F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216EF3 CENTRAL HEADER #251   02014B50 (33639248)\n-216EF7 Created Zip Spec      14 (20) '2.0'\n-216EF8 Created OS            00 (0) 'MS-DOS'\n-216EF9 Extract Zip Spec      14 (20) '2.0'\n-216EFA Extract OS            00 (0) 'MS-DOS'\n-216EFB General Purpose Flag  0808 (2056)\n+21941E CENTRAL HEADER #251   02014B50 (33639248)\n+219422 Created Zip Spec      14 (20) '2.0'\n+219423 Created OS            00 (0) 'MS-DOS'\n+219424 Extract Zip Spec      14 (20) '2.0'\n+219425 Extract OS            00 (0) 'MS-DOS'\n+219426 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216EFD Compression Method    0008 (8) 'Deflated'\n-216EFF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216F03 CRC                   F5917ED9 (4119953113)\n-216F07 Compressed Size       00000254 (596)\n-216F0B Uncompressed Size     0000045C (1116)\n-216F0F Filename Length       0030 (48)\n-216F11 Extra Length          0000 (0)\n-216F13 Comment Length        0000 (0)\n-216F15 Disk Start            0000 (0)\n-216F17 Int File Attributes   0000 (0)\n+219428 Compression Method    0008 (8) 'Deflated'\n+21942A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21942E CRC                   36D0D661 (919656033)\n+219432 Compressed Size       000005F6 (1526)\n+219436 Uncompressed Size     0000154C (5452)\n+21943A Filename Length       0041 (65)\n+21943C Extra Length          0000 (0)\n+21943E Comment Length        0000 (0)\n+219440 Disk Start            0000 (0)\n+219442 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216F19 Ext File Attributes   00000000 (0)\n-216F1D Local Header Offset   00021CF6 (138486)\n-216F21 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219444 Ext File Attributes   00000000 (0)\n+219448 Local Header Offset   00047201 (291329)\n+21944C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216F21: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21944C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216F51 CENTRAL HEADER #252   02014B50 (33639248)\n-216F55 Created Zip Spec      14 (20) '2.0'\n-216F56 Created OS            00 (0) 'MS-DOS'\n-216F57 Extract Zip Spec      14 (20) '2.0'\n-216F58 Extract OS            00 (0) 'MS-DOS'\n-216F59 General Purpose Flag  0808 (2056)\n+21948D CENTRAL HEADER #252   02014B50 (33639248)\n+219491 Created Zip Spec      14 (20) '2.0'\n+219492 Created OS            00 (0) 'MS-DOS'\n+219493 Extract Zip Spec      14 (20) '2.0'\n+219494 Extract OS            00 (0) 'MS-DOS'\n+219495 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216F5B Compression Method    0008 (8) 'Deflated'\n-216F5D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216F61 CRC                   7CE2D61E (2095240734)\n-216F65 Compressed Size       00000605 (1541)\n-216F69 Uncompressed Size     0000131F (4895)\n-216F6D Filename Length       002E (46)\n-216F6F Extra Length          0000 (0)\n-216F71 Comment Length        0000 (0)\n-216F73 Disk Start            0000 (0)\n-216F75 Int File Attributes   0000 (0)\n+219497 Compression Method    0008 (8) 'Deflated'\n+219499 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21949D CRC                   A2C265E1 (2730649057)\n+2194A1 Compressed Size       0000087E (2174)\n+2194A5 Uncompressed Size     00001D45 (7493)\n+2194A9 Filename Length       0044 (68)\n+2194AB Extra Length          0000 (0)\n+2194AD Comment Length        0000 (0)\n+2194AF Disk Start            0000 (0)\n+2194B1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216F77 Ext File Attributes   00000000 (0)\n-216F7B Local Header Offset   00021FA8 (139176)\n-216F7F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2194B3 Ext File Attributes   00000000 (0)\n+2194B7 Local Header Offset   00047866 (292966)\n+2194BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216F7F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2194BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-216FAD CENTRAL HEADER #253   02014B50 (33639248)\n-216FB1 Created Zip Spec      14 (20) '2.0'\n-216FB2 Created OS            00 (0) 'MS-DOS'\n-216FB3 Extract Zip Spec      14 (20) '2.0'\n-216FB4 Extract OS            00 (0) 'MS-DOS'\n-216FB5 General Purpose Flag  0808 (2056)\n+2194FF CENTRAL HEADER #253   02014B50 (33639248)\n+219503 Created Zip Spec      14 (20) '2.0'\n+219504 Created OS            00 (0) 'MS-DOS'\n+219505 Extract Zip Spec      14 (20) '2.0'\n+219506 Extract OS            00 (0) 'MS-DOS'\n+219507 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-216FB7 Compression Method    0008 (8) 'Deflated'\n-216FB9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-216FBD CRC                   5F946D70 (1603562864)\n-216FC1 Compressed Size       0000178E (6030)\n-216FC5 Uncompressed Size     00005E41 (24129)\n-216FC9 Filename Length       002C (44)\n-216FCB Extra Length          0000 (0)\n-216FCD Comment Length        0000 (0)\n-216FCF Disk Start            0000 (0)\n-216FD1 Int File Attributes   0000 (0)\n+219509 Compression Method    0008 (8) 'Deflated'\n+21950B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21950F CRC                   AEA9AD13 (2930355475)\n+219513 Compressed Size       000002AA (682)\n+219517 Uncompressed Size     000005BA (1466)\n+21951B Filename Length       0044 (68)\n+21951D Extra Length          0000 (0)\n+21951F Comment Length        0000 (0)\n+219521 Disk Start            0000 (0)\n+219523 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-216FD3 Ext File Attributes   00000000 (0)\n-216FD7 Local Header Offset   00022609 (140809)\n-216FDB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219525 Ext File Attributes   00000000 (0)\n+219529 Local Header Offset   00048156 (295254)\n+21952D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x216FDB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21952D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217007 CENTRAL HEADER #254   02014B50 (33639248)\n-21700B Created Zip Spec      14 (20) '2.0'\n-21700C Created OS            00 (0) 'MS-DOS'\n-21700D Extract Zip Spec      14 (20) '2.0'\n-21700E Extract OS            00 (0) 'MS-DOS'\n-21700F General Purpose Flag  0808 (2056)\n+219571 CENTRAL HEADER #254   02014B50 (33639248)\n+219575 Created Zip Spec      14 (20) '2.0'\n+219576 Created OS            00 (0) 'MS-DOS'\n+219577 Extract Zip Spec      14 (20) '2.0'\n+219578 Extract OS            00 (0) 'MS-DOS'\n+219579 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217011 Compression Method    0008 (8) 'Deflated'\n-217013 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217017 CRC                   CBF03B71 (3421518705)\n-21701B Compressed Size       00001B79 (7033)\n-21701F Uncompressed Size     00007DD7 (32215)\n-217023 Filename Length       002A (42)\n-217025 Extra Length          0000 (0)\n-217027 Comment Length        0000 (0)\n-217029 Disk Start            0000 (0)\n-21702B Int File Attributes   0000 (0)\n+21957B Compression Method    0008 (8) 'Deflated'\n+21957D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219581 CRC                   AE0B59B2 (2919979442)\n+219585 Compressed Size       00000049 (73)\n+219589 Uncompressed Size     00000053 (83)\n+21958D Filename Length       0058 (88)\n+21958F Extra Length          0000 (0)\n+219591 Comment Length        0000 (0)\n+219593 Disk Start            0000 (0)\n+219595 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21702D Ext File Attributes   00000000 (0)\n-217031 Local Header Offset   00023DF1 (146929)\n-217035 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219597 Ext File Attributes   00000000 (0)\n+21959B Local Header Offset   00048472 (296050)\n+21959F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217035: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21959F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21705F CENTRAL HEADER #255   02014B50 (33639248)\n-217063 Created Zip Spec      14 (20) '2.0'\n-217064 Created OS            00 (0) 'MS-DOS'\n-217065 Extract Zip Spec      14 (20) '2.0'\n-217066 Extract OS            00 (0) 'MS-DOS'\n-217067 General Purpose Flag  0808 (2056)\n+2195F7 CENTRAL HEADER #255   02014B50 (33639248)\n+2195FB Created Zip Spec      14 (20) '2.0'\n+2195FC Created OS            00 (0) 'MS-DOS'\n+2195FD Extract Zip Spec      14 (20) '2.0'\n+2195FE Extract OS            00 (0) 'MS-DOS'\n+2195FF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217069 Compression Method    0008 (8) 'Deflated'\n-21706B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21706F CRC                   00000000 (0)\n-217073 Compressed Size       00000002 (2)\n-217077 Uncompressed Size     00000000 (0)\n-21707B Filename Length       0022 (34)\n-21707D Extra Length          0000 (0)\n-21707F Comment Length        0000 (0)\n-217081 Disk Start            0000 (0)\n-217083 Int File Attributes   0000 (0)\n+219601 Compression Method    0008 (8) 'Deflated'\n+219603 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219607 CRC                   7F3BA707 (2134615815)\n+21960B Compressed Size       00000059 (89)\n+21960F Uncompressed Size     000000A3 (163)\n+219613 Filename Length       0053 (83)\n+219615 Extra Length          0000 (0)\n+219617 Comment Length        0000 (0)\n+219619 Disk Start            0000 (0)\n+21961B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217085 Ext File Attributes   00000000 (0)\n-217089 Local Header Offset   000259C2 (154050)\n-21708D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21961D Ext File Attributes   00000000 (0)\n+219621 Local Header Offset   00048541 (296257)\n+219625 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21708D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219625: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2170AF CENTRAL HEADER #256   02014B50 (33639248)\n-2170B3 Created Zip Spec      14 (20) '2.0'\n-2170B4 Created OS            00 (0) 'MS-DOS'\n-2170B5 Extract Zip Spec      14 (20) '2.0'\n-2170B6 Extract OS            00 (0) 'MS-DOS'\n-2170B7 General Purpose Flag  0808 (2056)\n+219678 CENTRAL HEADER #256   02014B50 (33639248)\n+21967C Created Zip Spec      14 (20) '2.0'\n+21967D Created OS            00 (0) 'MS-DOS'\n+21967E Extract Zip Spec      14 (20) '2.0'\n+21967F Extract OS            00 (0) 'MS-DOS'\n+219680 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2170B9 Compression Method    0008 (8) 'Deflated'\n-2170BB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2170BF CRC                   57D2914C (1473417548)\n-2170C3 Compressed Size       000024D7 (9431)\n-2170C7 Uncompressed Size     0000CCAC (52396)\n-2170CB Filename Length       0035 (53)\n-2170CD Extra Length          0000 (0)\n-2170CF Comment Length        0000 (0)\n-2170D1 Disk Start            0000 (0)\n-2170D3 Int File Attributes   0000 (0)\n+219682 Compression Method    0008 (8) 'Deflated'\n+219684 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219688 CRC                   00000000 (0)\n+21968C Compressed Size       00000002 (2)\n+219690 Uncompressed Size     00000000 (0)\n+219694 Filename Length       002E (46)\n+219696 Extra Length          0000 (0)\n+219698 Comment Length        0000 (0)\n+21969A Disk Start            0000 (0)\n+21969C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2170D5 Ext File Attributes   00000000 (0)\n-2170D9 Local Header Offset   00025A14 (154132)\n-2170DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21969E Ext File Attributes   00000000 (0)\n+2196A2 Local Header Offset   0004861B (296475)\n+2196A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2170DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2196A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217112 CENTRAL HEADER #257   02014B50 (33639248)\n-217116 Created Zip Spec      14 (20) '2.0'\n-217117 Created OS            00 (0) 'MS-DOS'\n-217118 Extract Zip Spec      14 (20) '2.0'\n-217119 Extract OS            00 (0) 'MS-DOS'\n-21711A General Purpose Flag  0808 (2056)\n+2196D4 CENTRAL HEADER #257   02014B50 (33639248)\n+2196D8 Created Zip Spec      14 (20) '2.0'\n+2196D9 Created OS            00 (0) 'MS-DOS'\n+2196DA Extract Zip Spec      14 (20) '2.0'\n+2196DB Extract OS            00 (0) 'MS-DOS'\n+2196DC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21711C Compression Method    0008 (8) 'Deflated'\n-21711E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217122 CRC                   BB643DBD (3143908797)\n-217126 Compressed Size       00000257 (599)\n-21712A Uncompressed Size     0000046C (1132)\n-21712E Filename Length       0046 (70)\n-217130 Extra Length          0000 (0)\n-217132 Comment Length        0000 (0)\n-217134 Disk Start            0000 (0)\n-217136 Int File Attributes   0000 (0)\n+2196DE Compression Method    0008 (8) 'Deflated'\n+2196E0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2196E4 CRC                   F526CD58 (4112960856)\n+2196E8 Compressed Size       000003B3 (947)\n+2196EC Uncompressed Size     000009F4 (2548)\n+2196F0 Filename Length       0035 (53)\n+2196F2 Extra Length          0000 (0)\n+2196F4 Comment Length        0000 (0)\n+2196F6 Disk Start            0000 (0)\n+2196F8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217138 Ext File Attributes   00000000 (0)\n-21713C Local Header Offset   00027F4E (163662)\n-217140 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2196FA Ext File Attributes   00000000 (0)\n+2196FE Local Header Offset   00048679 (296569)\n+219702 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217140: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219702: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217186 CENTRAL HEADER #258   02014B50 (33639248)\n-21718A Created Zip Spec      14 (20) '2.0'\n-21718B Created OS            00 (0) 'MS-DOS'\n-21718C Extract Zip Spec      14 (20) '2.0'\n-21718D Extract OS            00 (0) 'MS-DOS'\n-21718E General Purpose Flag  0808 (2056)\n+219737 CENTRAL HEADER #258   02014B50 (33639248)\n+21973B Created Zip Spec      14 (20) '2.0'\n+21973C Created OS            00 (0) 'MS-DOS'\n+21973D Extract Zip Spec      14 (20) '2.0'\n+21973E Extract OS            00 (0) 'MS-DOS'\n+21973F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217190 Compression Method    0008 (8) 'Deflated'\n-217192 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217196 CRC                   00000000 (0)\n-21719A Compressed Size       00000002 (2)\n-21719E Uncompressed Size     00000000 (0)\n-2171A2 Filename Length       002B (43)\n-2171A4 Extra Length          0000 (0)\n-2171A6 Comment Length        0000 (0)\n-2171A8 Disk Start            0000 (0)\n-2171AA Int File Attributes   0000 (0)\n+219741 Compression Method    0008 (8) 'Deflated'\n+219743 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219747 CRC                   78750509 (2020934921)\n+21974B Compressed Size       00000042 (66)\n+21974F Uncompressed Size     00000044 (68)\n+219753 Filename Length       003C (60)\n+219755 Extra Length          0000 (0)\n+219757 Comment Length        0000 (0)\n+219759 Disk Start            0000 (0)\n+21975B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2171AC Ext File Attributes   00000000 (0)\n-2171B0 Local Header Offset   00028219 (164377)\n-2171B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21975D Ext File Attributes   00000000 (0)\n+219761 Local Header Offset   00048A8F (297615)\n+219765 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2171B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219765: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2171DF CENTRAL HEADER #259   02014B50 (33639248)\n-2171E3 Created Zip Spec      14 (20) '2.0'\n-2171E4 Created OS            00 (0) 'MS-DOS'\n-2171E5 Extract Zip Spec      14 (20) '2.0'\n-2171E6 Extract OS            00 (0) 'MS-DOS'\n-2171E7 General Purpose Flag  0808 (2056)\n+2197A1 CENTRAL HEADER #259   02014B50 (33639248)\n+2197A5 Created Zip Spec      14 (20) '2.0'\n+2197A6 Created OS            00 (0) 'MS-DOS'\n+2197A7 Extract Zip Spec      14 (20) '2.0'\n+2197A8 Extract OS            00 (0) 'MS-DOS'\n+2197A9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2171E9 Compression Method    0008 (8) 'Deflated'\n-2171EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2171EF CRC                   272CCF3E (657248062)\n-2171F3 Compressed Size       000003AC (940)\n-2171F7 Uncompressed Size     000009E5 (2533)\n-2171FB Filename Length       003F (63)\n-2171FD Extra Length          0000 (0)\n-2171FF Comment Length        0000 (0)\n-217201 Disk Start            0000 (0)\n-217203 Int File Attributes   0000 (0)\n+2197AB Compression Method    0008 (8) 'Deflated'\n+2197AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2197B1 CRC                   00000000 (0)\n+2197B5 Compressed Size       00000002 (2)\n+2197B9 Uncompressed Size     00000000 (0)\n+2197BD Filename Length       0004 (4)\n+2197BF Extra Length          0000 (0)\n+2197C1 Comment Length        0000 (0)\n+2197C3 Disk Start            0000 (0)\n+2197C5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217205 Ext File Attributes   00000000 (0)\n-217209 Local Header Offset   00028274 (164468)\n-21720D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2197C7 Ext File Attributes   00000000 (0)\n+2197CB Local Header Offset   00048B3B (297787)\n+2197CF Filename              'XXXX'\n #\n-# WARNING: Offset 0x21720D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2197CF: Filename 'XXXX'\n #          Zero length filename\n #\n \n-21724C CENTRAL HEADER #260   02014B50 (33639248)\n-217250 Created Zip Spec      14 (20) '2.0'\n-217251 Created OS            00 (0) 'MS-DOS'\n-217252 Extract Zip Spec      14 (20) '2.0'\n-217253 Extract OS            00 (0) 'MS-DOS'\n-217254 General Purpose Flag  0808 (2056)\n+2197D3 CENTRAL HEADER #260   02014B50 (33639248)\n+2197D7 Created Zip Spec      14 (20) '2.0'\n+2197D8 Created OS            00 (0) 'MS-DOS'\n+2197D9 Extract Zip Spec      14 (20) '2.0'\n+2197DA Extract OS            00 (0) 'MS-DOS'\n+2197DB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217256 Compression Method    0008 (8) 'Deflated'\n-217258 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21725C CRC                   A2DFDA9A (2732579482)\n-217260 Compressed Size       00000855 (2133)\n-217264 Uncompressed Size     000023FC (9212)\n-217268 Filename Length       0048 (72)\n-21726A Extra Length          0000 (0)\n-21726C Comment Length        0000 (0)\n-21726E Disk Start            0000 (0)\n-217270 Int File Attributes   0000 (0)\n+2197DD Compression Method    0008 (8) 'Deflated'\n+2197DF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2197E3 CRC                   00000000 (0)\n+2197E7 Compressed Size       00000002 (2)\n+2197EB Uncompressed Size     00000000 (0)\n+2197EF Filename Length       000C (12)\n+2197F1 Extra Length          0000 (0)\n+2197F3 Comment Length        0000 (0)\n+2197F5 Disk Start            0000 (0)\n+2197F7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217272 Ext File Attributes   00000000 (0)\n-217276 Local Header Offset   0002868D (165517)\n-21727A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2197F9 Ext File Attributes   00000000 (0)\n+2197FD Local Header Offset   00048B6F (297839)\n+219801 Filename              'XXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21727A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219801: Filename 'XXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2172C2 CENTRAL HEADER #261   02014B50 (33639248)\n-2172C6 Created Zip Spec      14 (20) '2.0'\n-2172C7 Created OS            00 (0) 'MS-DOS'\n-2172C8 Extract Zip Spec      14 (20) '2.0'\n-2172C9 Extract OS            00 (0) 'MS-DOS'\n-2172CA General Purpose Flag  0808 (2056)\n+21980D CENTRAL HEADER #261   02014B50 (33639248)\n+219811 Created Zip Spec      14 (20) '2.0'\n+219812 Created OS            00 (0) 'MS-DOS'\n+219813 Extract Zip Spec      14 (20) '2.0'\n+219814 Extract OS            00 (0) 'MS-DOS'\n+219815 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2172CC Compression Method    0008 (8) 'Deflated'\n-2172CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2172D2 CRC                   99D438F5 (2580822261)\n-2172D6 Compressed Size       00000677 (1655)\n-2172DA Uncompressed Size     00001582 (5506)\n-2172DE Filename Length       0045 (69)\n-2172E0 Extra Length          0000 (0)\n-2172E2 Comment Length        0000 (0)\n-2172E4 Disk Start            0000 (0)\n-2172E6 Int File Attributes   0000 (0)\n+219817 Compression Method    0008 (8) 'Deflated'\n+219819 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21981D CRC                   00000000 (0)\n+219821 Compressed Size       00000002 (2)\n+219825 Uncompressed Size     00000000 (0)\n+219829 Filename Length       0012 (18)\n+21982B Extra Length          0000 (0)\n+21982D Comment Length        0000 (0)\n+21982F Disk Start            0000 (0)\n+219831 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2172E8 Ext File Attributes   00000000 (0)\n-2172EC Local Header Offset   00028F58 (167768)\n-2172F0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219833 Ext File Attributes   00000000 (0)\n+219837 Local Header Offset   00048BAB (297899)\n+21983B Filename              'XXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2172F0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21983B: Filename 'XXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217335 CENTRAL HEADER #262   02014B50 (33639248)\n-217339 Created Zip Spec      14 (20) '2.0'\n-21733A Created OS            00 (0) 'MS-DOS'\n-21733B Extract Zip Spec      14 (20) '2.0'\n-21733C Extract OS            00 (0) 'MS-DOS'\n-21733D General Purpose Flag  0808 (2056)\n+21984D CENTRAL HEADER #262   02014B50 (33639248)\n+219851 Created Zip Spec      14 (20) '2.0'\n+219852 Created OS            00 (0) 'MS-DOS'\n+219853 Extract Zip Spec      14 (20) '2.0'\n+219854 Extract OS            00 (0) 'MS-DOS'\n+219855 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21733F Compression Method    0008 (8) 'Deflated'\n-217341 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217345 CRC                   348CD6A3 (881645219)\n-217349 Compressed Size       0000050A (1290)\n-21734D Uncompressed Size     00001009 (4105)\n-217351 Filename Length       0048 (72)\n-217353 Extra Length          0000 (0)\n-217355 Comment Length        0000 (0)\n-217357 Disk Start            0000 (0)\n-217359 Int File Attributes   0000 (0)\n+219857 Compression Method    0008 (8) 'Deflated'\n+219859 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21985D CRC                   00000000 (0)\n+219861 Compressed Size       00000002 (2)\n+219865 Uncompressed Size     00000000 (0)\n+219869 Filename Length       0019 (25)\n+21986B Extra Length          0000 (0)\n+21986D Comment Length        0000 (0)\n+21986F Disk Start            0000 (0)\n+219871 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21735B Ext File Attributes   00000000 (0)\n-21735F Local Header Offset   00029642 (169538)\n-217363 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219873 Ext File Attributes   00000000 (0)\n+219877 Local Header Offset   00048BED (297965)\n+21987B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217363: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21987B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2173AB CENTRAL HEADER #263   02014B50 (33639248)\n-2173AF Created Zip Spec      14 (20) '2.0'\n-2173B0 Created OS            00 (0) 'MS-DOS'\n-2173B1 Extract Zip Spec      14 (20) '2.0'\n-2173B2 Extract OS            00 (0) 'MS-DOS'\n-2173B3 General Purpose Flag  0808 (2056)\n+219894 CENTRAL HEADER #263   02014B50 (33639248)\n+219898 Created Zip Spec      14 (20) '2.0'\n+219899 Created OS            00 (0) 'MS-DOS'\n+21989A Extract Zip Spec      14 (20) '2.0'\n+21989B Extract OS            00 (0) 'MS-DOS'\n+21989C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2173B5 Compression Method    0008 (8) 'Deflated'\n-2173B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2173BB CRC                   C2D529E3 (3268749795)\n-2173BF Compressed Size       000006A6 (1702)\n-2173C3 Uncompressed Size     00001A83 (6787)\n-2173C7 Filename Length       0046 (70)\n-2173C9 Extra Length          0000 (0)\n-2173CB Comment Length        0000 (0)\n-2173CD Disk Start            0000 (0)\n-2173CF Int File Attributes   0000 (0)\n+21989E Compression Method    0008 (8) 'Deflated'\n+2198A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2198A4 CRC                   00000000 (0)\n+2198A8 Compressed Size       00000002 (2)\n+2198AC Uncompressed Size     00000000 (0)\n+2198B0 Filename Length       0023 (35)\n+2198B2 Extra Length          0000 (0)\n+2198B4 Comment Length        0000 (0)\n+2198B6 Disk Start            0000 (0)\n+2198B8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2173D1 Ext File Attributes   00000000 (0)\n-2173D5 Local Header Offset   00029BC2 (170946)\n-2173D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2198BA Ext File Attributes   00000000 (0)\n+2198BE Local Header Offset   00048C36 (298038)\n+2198C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2173D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2198C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21741F CENTRAL HEADER #264   02014B50 (33639248)\n-217423 Created Zip Spec      14 (20) '2.0'\n-217424 Created OS            00 (0) 'MS-DOS'\n-217425 Extract Zip Spec      14 (20) '2.0'\n-217426 Extract OS            00 (0) 'MS-DOS'\n-217427 General Purpose Flag  0808 (2056)\n+2198E5 CENTRAL HEADER #264   02014B50 (33639248)\n+2198E9 Created Zip Spec      14 (20) '2.0'\n+2198EA Created OS            00 (0) 'MS-DOS'\n+2198EB Extract Zip Spec      14 (20) '2.0'\n+2198EC Extract OS            00 (0) 'MS-DOS'\n+2198ED General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217429 Compression Method    0008 (8) 'Deflated'\n-21742B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21742F CRC                   E72A3EBF (3878305471)\n-217433 Compressed Size       00000654 (1620)\n-217437 Uncompressed Size     00001A6F (6767)\n-21743B Filename Length       0042 (66)\n-21743D Extra Length          0000 (0)\n-21743F Comment Length        0000 (0)\n-217441 Disk Start            0000 (0)\n-217443 Int File Attributes   0000 (0)\n+2198EF Compression Method    0008 (8) 'Deflated'\n+2198F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2198F5 CRC                   87D33073 (2278764659)\n+2198F9 Compressed Size       000002BB (699)\n+2198FD Uncompressed Size     000005CF (1487)\n+219901 Filename Length       0030 (48)\n+219903 Extra Length          0000 (0)\n+219905 Comment Length        0000 (0)\n+219907 Disk Start            0000 (0)\n+219909 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217445 Ext File Attributes   00000000 (0)\n-217449 Local Header Offset   0002A2DC (172764)\n-21744D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21990B Ext File Attributes   00000000 (0)\n+21990F Local Header Offset   00048C89 (298121)\n+219913 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21744D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219913: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21748F CENTRAL HEADER #265   02014B50 (33639248)\n-217493 Created Zip Spec      14 (20) '2.0'\n-217494 Created OS            00 (0) 'MS-DOS'\n-217495 Extract Zip Spec      14 (20) '2.0'\n-217496 Extract OS            00 (0) 'MS-DOS'\n-217497 General Purpose Flag  0808 (2056)\n+219943 CENTRAL HEADER #265   02014B50 (33639248)\n+219947 Created Zip Spec      14 (20) '2.0'\n+219948 Created OS            00 (0) 'MS-DOS'\n+219949 Extract Zip Spec      14 (20) '2.0'\n+21994A Extract OS            00 (0) 'MS-DOS'\n+21994B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217499 Compression Method    0008 (8) 'Deflated'\n-21749B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21749F CRC                   1CF76EFC (485977852)\n-2174A3 Compressed Size       0000030B (779)\n-2174A7 Uncompressed Size     00000749 (1865)\n-2174AB Filename Length       003F (63)\n-2174AD Extra Length          0000 (0)\n-2174AF Comment Length        0000 (0)\n-2174B1 Disk Start            0000 (0)\n-2174B3 Int File Attributes   0000 (0)\n+21994D Compression Method    0008 (8) 'Deflated'\n+21994F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219953 CRC                   00000000 (0)\n+219957 Compressed Size       00000002 (2)\n+21995B Uncompressed Size     00000000 (0)\n+21995F Filename Length       0019 (25)\n+219961 Extra Length          0000 (0)\n+219963 Comment Length        0000 (0)\n+219965 Disk Start            0000 (0)\n+219967 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2174B5 Ext File Attributes   00000000 (0)\n-2174B9 Local Header Offset   0002A9A0 (174496)\n-2174BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219969 Ext File Attributes   00000000 (0)\n+21996D Local Header Offset   00048FA2 (298914)\n+219971 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2174BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219971: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2174FC CENTRAL HEADER #266   02014B50 (33639248)\n-217500 Created Zip Spec      14 (20) '2.0'\n-217501 Created OS            00 (0) 'MS-DOS'\n-217502 Extract Zip Spec      14 (20) '2.0'\n-217503 Extract OS            00 (0) 'MS-DOS'\n-217504 General Purpose Flag  0808 (2056)\n+21998A CENTRAL HEADER #266   02014B50 (33639248)\n+21998E Created Zip Spec      14 (20) '2.0'\n+21998F Created OS            00 (0) 'MS-DOS'\n+219990 Extract Zip Spec      14 (20) '2.0'\n+219991 Extract OS            00 (0) 'MS-DOS'\n+219992 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217506 Compression Method    0008 (8) 'Deflated'\n-217508 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21750C CRC                   187BA855 (410757205)\n-217510 Compressed Size       000004B9 (1209)\n-217514 Uncompressed Size     000010FE (4350)\n-217518 Filename Length       0043 (67)\n-21751A Extra Length          0000 (0)\n-21751C Comment Length        0000 (0)\n-21751E Disk Start            0000 (0)\n-217520 Int File Attributes   0000 (0)\n+219994 Compression Method    0008 (8) 'Deflated'\n+219996 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21999A CRC                   00000000 (0)\n+21999E Compressed Size       00000002 (2)\n+2199A2 Uncompressed Size     00000000 (0)\n+2199A6 Filename Length       0024 (36)\n+2199A8 Extra Length          0000 (0)\n+2199AA Comment Length        0000 (0)\n+2199AC Disk Start            0000 (0)\n+2199AE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217522 Ext File Attributes   00000000 (0)\n-217526 Local Header Offset   0002AD18 (175384)\n-21752A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2199B0 Ext File Attributes   00000000 (0)\n+2199B4 Local Header Offset   00048FEB (298987)\n+2199B8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21752A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2199B8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21756D CENTRAL HEADER #267   02014B50 (33639248)\n-217571 Created Zip Spec      14 (20) '2.0'\n-217572 Created OS            00 (0) 'MS-DOS'\n-217573 Extract Zip Spec      14 (20) '2.0'\n-217574 Extract OS            00 (0) 'MS-DOS'\n-217575 General Purpose Flag  0808 (2056)\n+2199DC CENTRAL HEADER #267   02014B50 (33639248)\n+2199E0 Created Zip Spec      14 (20) '2.0'\n+2199E1 Created OS            00 (0) 'MS-DOS'\n+2199E2 Extract Zip Spec      14 (20) '2.0'\n+2199E3 Extract OS            00 (0) 'MS-DOS'\n+2199E4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217577 Compression Method    0008 (8) 'Deflated'\n-217579 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21757D CRC                   D7A41DAE (3617856942)\n-217581 Compressed Size       00000488 (1160)\n-217585 Uncompressed Size     00000D3D (3389)\n-217589 Filename Length       003F (63)\n-21758B Extra Length          0000 (0)\n-21758D Comment Length        0000 (0)\n-21758F Disk Start            0000 (0)\n-217591 Int File Attributes   0000 (0)\n+2199E6 Compression Method    0008 (8) 'Deflated'\n+2199E8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2199EC CRC                   79620788 (2036467592)\n+2199F0 Compressed Size       000003C0 (960)\n+2199F4 Uncompressed Size     00000AB0 (2736)\n+2199F8 Filename Length       0032 (50)\n+2199FA Extra Length          0000 (0)\n+2199FC Comment Length        0000 (0)\n+2199FE Disk Start            0000 (0)\n+219A00 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217593 Ext File Attributes   00000000 (0)\n-217597 Local Header Offset   0002B242 (176706)\n-21759B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219A02 Ext File Attributes   00000000 (0)\n+219A06 Local Header Offset   0004903F (299071)\n+219A0A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21759B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219A0A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2175DA CENTRAL HEADER #268   02014B50 (33639248)\n-2175DE Created Zip Spec      14 (20) '2.0'\n-2175DF Created OS            00 (0) 'MS-DOS'\n-2175E0 Extract Zip Spec      14 (20) '2.0'\n-2175E1 Extract OS            00 (0) 'MS-DOS'\n-2175E2 General Purpose Flag  0808 (2056)\n+219A3C CENTRAL HEADER #268   02014B50 (33639248)\n+219A40 Created Zip Spec      14 (20) '2.0'\n+219A41 Created OS            00 (0) 'MS-DOS'\n+219A42 Extract Zip Spec      14 (20) '2.0'\n+219A43 Extract OS            00 (0) 'MS-DOS'\n+219A44 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2175E4 Compression Method    0008 (8) 'Deflated'\n-2175E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2175EA CRC                   F1C1369F (4055971487)\n-2175EE Compressed Size       000004F0 (1264)\n-2175F2 Uncompressed Size     000010CF (4303)\n-2175F6 Filename Length       0045 (69)\n-2175F8 Extra Length          0000 (0)\n-2175FA Comment Length        0000 (0)\n-2175FC Disk Start            0000 (0)\n-2175FE Int File Attributes   0000 (0)\n+219A46 Compression Method    0008 (8) 'Deflated'\n+219A48 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219A4C CRC                   C8043322 (3355718434)\n+219A50 Compressed Size       000003CA (970)\n+219A54 Uncompressed Size     00000B0F (2831)\n+219A58 Filename Length       0030 (48)\n+219A5A Extra Length          0000 (0)\n+219A5C Comment Length        0000 (0)\n+219A5E Disk Start            0000 (0)\n+219A60 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217600 Ext File Attributes   00000000 (0)\n-217604 Local Header Offset   0002B737 (177975)\n-217608 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219A62 Ext File Attributes   00000000 (0)\n+219A66 Local Header Offset   0004945F (300127)\n+219A6A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217608: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219A6A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21764D CENTRAL HEADER #269   02014B50 (33639248)\n-217651 Created Zip Spec      14 (20) '2.0'\n-217652 Created OS            00 (0) 'MS-DOS'\n-217653 Extract Zip Spec      14 (20) '2.0'\n-217654 Extract OS            00 (0) 'MS-DOS'\n-217655 General Purpose Flag  0808 (2056)\n+219A9A CENTRAL HEADER #269   02014B50 (33639248)\n+219A9E Created Zip Spec      14 (20) '2.0'\n+219A9F Created OS            00 (0) 'MS-DOS'\n+219AA0 Extract Zip Spec      14 (20) '2.0'\n+219AA1 Extract OS            00 (0) 'MS-DOS'\n+219AA2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217657 Compression Method    0008 (8) 'Deflated'\n-217659 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21765D CRC                   B12B8896 (2972420246)\n-217661 Compressed Size       000005FF (1535)\n-217665 Uncompressed Size     000017E3 (6115)\n-217669 Filename Length       003D (61)\n-21766B Extra Length          0000 (0)\n-21766D Comment Length        0000 (0)\n-21766F Disk Start            0000 (0)\n-217671 Int File Attributes   0000 (0)\n+219AA4 Compression Method    0008 (8) 'Deflated'\n+219AA6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219AAA CRC                   00000000 (0)\n+219AAE Compressed Size       00000002 (2)\n+219AB2 Uncompressed Size     00000000 (0)\n+219AB6 Filename Length       0018 (24)\n+219AB8 Extra Length          0000 (0)\n+219ABA Comment Length        0000 (0)\n+219ABC Disk Start            0000 (0)\n+219ABE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217673 Ext File Attributes   00000000 (0)\n-217677 Local Header Offset   0002BC9A (179354)\n-21767B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219AC0 Ext File Attributes   00000000 (0)\n+219AC4 Local Header Offset   00049887 (301191)\n+219AC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21767B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219AC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2176B8 CENTRAL HEADER #270   02014B50 (33639248)\n-2176BC Created Zip Spec      14 (20) '2.0'\n-2176BD Created OS            00 (0) 'MS-DOS'\n-2176BE Extract Zip Spec      14 (20) '2.0'\n-2176BF Extract OS            00 (0) 'MS-DOS'\n-2176C0 General Purpose Flag  0808 (2056)\n+219AE0 CENTRAL HEADER #270   02014B50 (33639248)\n+219AE4 Created Zip Spec      14 (20) '2.0'\n+219AE5 Created OS            00 (0) 'MS-DOS'\n+219AE6 Extract Zip Spec      14 (20) '2.0'\n+219AE7 Extract OS            00 (0) 'MS-DOS'\n+219AE8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2176C2 Compression Method    0008 (8) 'Deflated'\n-2176C4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2176C8 CRC                   04D43ED1 (81018577)\n-2176CC Compressed Size       00000432 (1074)\n-2176D0 Uncompressed Size     00000D84 (3460)\n-2176D4 Filename Length       003D (61)\n-2176D6 Extra Length          0000 (0)\n-2176D8 Comment Length        0000 (0)\n-2176DA Disk Start            0000 (0)\n-2176DC Int File Attributes   0000 (0)\n+219AEA Compression Method    0008 (8) 'Deflated'\n+219AEC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219AF0 CRC                   7A6AA41E (2053809182)\n+219AF4 Compressed Size       00000512 (1298)\n+219AF8 Uncompressed Size     00001180 (4480)\n+219AFC Filename Length       0030 (48)\n+219AFE Extra Length          0000 (0)\n+219B00 Comment Length        0000 (0)\n+219B02 Disk Start            0000 (0)\n+219B04 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2176DE Ext File Attributes   00000000 (0)\n-2176E2 Local Header Offset   0002C304 (180996)\n-2176E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219B06 Ext File Attributes   00000000 (0)\n+219B0A Local Header Offset   000498CF (301263)\n+219B0E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2176E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219B0E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217723 CENTRAL HEADER #271   02014B50 (33639248)\n-217727 Created Zip Spec      14 (20) '2.0'\n-217728 Created OS            00 (0) 'MS-DOS'\n-217729 Extract Zip Spec      14 (20) '2.0'\n-21772A Extract OS            00 (0) 'MS-DOS'\n-21772B General Purpose Flag  0808 (2056)\n+219B3E CENTRAL HEADER #271   02014B50 (33639248)\n+219B42 Created Zip Spec      14 (20) '2.0'\n+219B43 Created OS            00 (0) 'MS-DOS'\n+219B44 Extract Zip Spec      14 (20) '2.0'\n+219B45 Extract OS            00 (0) 'MS-DOS'\n+219B46 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21772D Compression Method    0008 (8) 'Deflated'\n-21772F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217733 CRC                   05580F75 (89657205)\n-217737 Compressed Size       0000048A (1162)\n-21773B Uncompressed Size     00000EA4 (3748)\n-21773F Filename Length       003E (62)\n-217741 Extra Length          0000 (0)\n-217743 Comment Length        0000 (0)\n-217745 Disk Start            0000 (0)\n-217747 Int File Attributes   0000 (0)\n+219B48 Compression Method    0008 (8) 'Deflated'\n+219B4A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219B4E CRC                   00F537FE (16070654)\n+219B52 Compressed Size       000002B7 (695)\n+219B56 Uncompressed Size     00000577 (1399)\n+219B5A Filename Length       0029 (41)\n+219B5C Extra Length          0000 (0)\n+219B5E Comment Length        0000 (0)\n+219B60 Disk Start            0000 (0)\n+219B62 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217749 Ext File Attributes   00000000 (0)\n-21774D Local Header Offset   0002C7A1 (182177)\n-217751 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219B64 Ext File Attributes   00000000 (0)\n+219B68 Local Header Offset   00049E3F (302655)\n+219B6C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217751: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219B6C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21778F CENTRAL HEADER #272   02014B50 (33639248)\n-217793 Created Zip Spec      14 (20) '2.0'\n-217794 Created OS            00 (0) 'MS-DOS'\n-217795 Extract Zip Spec      14 (20) '2.0'\n-217796 Extract OS            00 (0) 'MS-DOS'\n-217797 General Purpose Flag  0808 (2056)\n+219B95 CENTRAL HEADER #272   02014B50 (33639248)\n+219B99 Created Zip Spec      14 (20) '2.0'\n+219B9A Created OS            00 (0) 'MS-DOS'\n+219B9B Extract Zip Spec      14 (20) '2.0'\n+219B9C Extract OS            00 (0) 'MS-DOS'\n+219B9D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217799 Compression Method    0008 (8) 'Deflated'\n-21779B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21779F CRC                   D6497204 (3595137540)\n-2177A3 Compressed Size       000008AA (2218)\n-2177A7 Uncompressed Size     00002746 (10054)\n-2177AB Filename Length       003F (63)\n-2177AD Extra Length          0000 (0)\n-2177AF Comment Length        0000 (0)\n-2177B1 Disk Start            0000 (0)\n-2177B3 Int File Attributes   0000 (0)\n+219B9F Compression Method    0008 (8) 'Deflated'\n+219BA1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219BA5 CRC                   1CCCA507 (483173639)\n+219BA9 Compressed Size       0000046C (1132)\n+219BAD Uncompressed Size     000009AB (2475)\n+219BB1 Filename Length       0026 (38)\n+219BB3 Extra Length          0000 (0)\n+219BB5 Comment Length        0000 (0)\n+219BB7 Disk Start            0000 (0)\n+219BB9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2177B5 Ext File Attributes   00000000 (0)\n-2177B9 Local Header Offset   0002CC97 (183447)\n-2177BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219BBB Ext File Attributes   00000000 (0)\n+219BBF Local Header Offset   0004A14D (303437)\n+219BC3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2177BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219BC3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2177FC CENTRAL HEADER #273   02014B50 (33639248)\n-217800 Created Zip Spec      14 (20) '2.0'\n-217801 Created OS            00 (0) 'MS-DOS'\n-217802 Extract Zip Spec      14 (20) '2.0'\n-217803 Extract OS            00 (0) 'MS-DOS'\n-217804 General Purpose Flag  0808 (2056)\n+219BE9 CENTRAL HEADER #273   02014B50 (33639248)\n+219BED Created Zip Spec      14 (20) '2.0'\n+219BEE Created OS            00 (0) 'MS-DOS'\n+219BEF Extract Zip Spec      14 (20) '2.0'\n+219BF0 Extract OS            00 (0) 'MS-DOS'\n+219BF1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217806 Compression Method    0008 (8) 'Deflated'\n-217808 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21780C CRC                   1ADB9373 (450597747)\n-217810 Compressed Size       000006B0 (1712)\n-217814 Uncompressed Size     00001A82 (6786)\n-217818 Filename Length       003F (63)\n-21781A Extra Length          0000 (0)\n-21781C Comment Length        0000 (0)\n-21781E Disk Start            0000 (0)\n-217820 Int File Attributes   0000 (0)\n+219BF3 Compression Method    0008 (8) 'Deflated'\n+219BF5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219BF9 CRC                   0622E0A0 (102949024)\n+219BFD Compressed Size       00000264 (612)\n+219C01 Uncompressed Size     0000049F (1183)\n+219C05 Filename Length       0021 (33)\n+219C07 Extra Length          0000 (0)\n+219C09 Comment Length        0000 (0)\n+219C0B Disk Start            0000 (0)\n+219C0D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217822 Ext File Attributes   00000000 (0)\n-217826 Local Header Offset   0002D5AE (185774)\n-21782A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219C0F Ext File Attributes   00000000 (0)\n+219C13 Local Header Offset   0004A60D (304653)\n+219C17 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21782A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219C17: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217869 CENTRAL HEADER #274   02014B50 (33639248)\n-21786D Created Zip Spec      14 (20) '2.0'\n-21786E Created OS            00 (0) 'MS-DOS'\n-21786F Extract Zip Spec      14 (20) '2.0'\n-217870 Extract OS            00 (0) 'MS-DOS'\n-217871 General Purpose Flag  0808 (2056)\n+219C38 CENTRAL HEADER #274   02014B50 (33639248)\n+219C3C Created Zip Spec      14 (20) '2.0'\n+219C3D Created OS            00 (0) 'MS-DOS'\n+219C3E Extract Zip Spec      14 (20) '2.0'\n+219C3F Extract OS            00 (0) 'MS-DOS'\n+219C40 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217873 Compression Method    0008 (8) 'Deflated'\n-217875 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217879 CRC                   41505507 (1095783687)\n-21787D Compressed Size       00000551 (1361)\n-217881 Uncompressed Size     00001224 (4644)\n-217885 Filename Length       0040 (64)\n-217887 Extra Length          0000 (0)\n-217889 Comment Length        0000 (0)\n-21788B Disk Start            0000 (0)\n-21788D Int File Attributes   0000 (0)\n+219C42 Compression Method    0008 (8) 'Deflated'\n+219C44 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219C48 CRC                   3DF15F74 (1039228788)\n+219C4C Compressed Size       00000650 (1616)\n+219C50 Uncompressed Size     0000229A (8858)\n+219C54 Filename Length       0027 (39)\n+219C56 Extra Length          0000 (0)\n+219C58 Comment Length        0000 (0)\n+219C5A Disk Start            0000 (0)\n+219C5C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21788F Ext File Attributes   00000000 (0)\n-217893 Local Header Offset   0002DCCB (187595)\n-217897 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219C5E Ext File Attributes   00000000 (0)\n+219C62 Local Header Offset   0004A8C0 (305344)\n+219C66 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217897: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219C66: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2178D7 CENTRAL HEADER #275   02014B50 (33639248)\n-2178DB Created Zip Spec      14 (20) '2.0'\n-2178DC Created OS            00 (0) 'MS-DOS'\n-2178DD Extract Zip Spec      14 (20) '2.0'\n-2178DE Extract OS            00 (0) 'MS-DOS'\n-2178DF General Purpose Flag  0808 (2056)\n+219C8D CENTRAL HEADER #275   02014B50 (33639248)\n+219C91 Created Zip Spec      14 (20) '2.0'\n+219C92 Created OS            00 (0) 'MS-DOS'\n+219C93 Extract Zip Spec      14 (20) '2.0'\n+219C94 Extract OS            00 (0) 'MS-DOS'\n+219C95 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2178E1 Compression Method    0008 (8) 'Deflated'\n-2178E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2178E7 CRC                   C452CFCB (3293761483)\n-2178EB Compressed Size       00000902 (2306)\n-2178EF Uncompressed Size     000025C2 (9666)\n-2178F3 Filename Length       003F (63)\n-2178F5 Extra Length          0000 (0)\n-2178F7 Comment Length        0000 (0)\n-2178F9 Disk Start            0000 (0)\n-2178FB Int File Attributes   0000 (0)\n+219C97 Compression Method    0008 (8) 'Deflated'\n+219C99 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219C9D CRC                   52712A03 (1383148035)\n+219CA1 Compressed Size       00000226 (550)\n+219CA5 Uncompressed Size     000003E8 (1000)\n+219CA9 Filename Length       0026 (38)\n+219CAB Extra Length          0000 (0)\n+219CAD Comment Length        0000 (0)\n+219CAF Disk Start            0000 (0)\n+219CB1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2178FD Ext File Attributes   00000000 (0)\n-217901 Local Header Offset   0002E28A (189066)\n-217905 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219CB3 Ext File Attributes   00000000 (0)\n+219CB7 Local Header Offset   0004AF65 (307045)\n+219CBB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217905: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219CBB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217944 CENTRAL HEADER #276   02014B50 (33639248)\n-217948 Created Zip Spec      14 (20) '2.0'\n-217949 Created OS            00 (0) 'MS-DOS'\n-21794A Extract Zip Spec      14 (20) '2.0'\n-21794B Extract OS            00 (0) 'MS-DOS'\n-21794C General Purpose Flag  0808 (2056)\n+219CE1 CENTRAL HEADER #276   02014B50 (33639248)\n+219CE5 Created Zip Spec      14 (20) '2.0'\n+219CE6 Created OS            00 (0) 'MS-DOS'\n+219CE7 Extract Zip Spec      14 (20) '2.0'\n+219CE8 Extract OS            00 (0) 'MS-DOS'\n+219CE9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21794E Compression Method    0008 (8) 'Deflated'\n-217950 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217954 CRC                   FCF57B8C (4243946380)\n-217958 Compressed Size       000004F1 (1265)\n-21795C Uncompressed Size     00001158 (4440)\n-217960 Filename Length       003E (62)\n-217962 Extra Length          0000 (0)\n-217964 Comment Length        0000 (0)\n-217966 Disk Start            0000 (0)\n-217968 Int File Attributes   0000 (0)\n+219CEB Compression Method    0008 (8) 'Deflated'\n+219CED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219CF1 CRC                   4B96BF4D (1268170573)\n+219CF5 Compressed Size       00002661 (9825)\n+219CF9 Uncompressed Size     00011389 (70537)\n+219CFD Filename Length       0020 (32)\n+219CFF Extra Length          0000 (0)\n+219D01 Comment Length        0000 (0)\n+219D03 Disk Start            0000 (0)\n+219D05 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21796A Ext File Attributes   00000000 (0)\n-21796E Local Header Offset   0002EBF9 (191481)\n-217972 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219D07 Ext File Attributes   00000000 (0)\n+219D0B Local Header Offset   0004B1DF (307679)\n+219D0F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217972: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219D0F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2179B0 CENTRAL HEADER #277   02014B50 (33639248)\n-2179B4 Created Zip Spec      14 (20) '2.0'\n-2179B5 Created OS            00 (0) 'MS-DOS'\n-2179B6 Extract Zip Spec      14 (20) '2.0'\n-2179B7 Extract OS            00 (0) 'MS-DOS'\n-2179B8 General Purpose Flag  0808 (2056)\n+219D2F CENTRAL HEADER #277   02014B50 (33639248)\n+219D33 Created Zip Spec      14 (20) '2.0'\n+219D34 Created OS            00 (0) 'MS-DOS'\n+219D35 Extract Zip Spec      14 (20) '2.0'\n+219D36 Extract OS            00 (0) 'MS-DOS'\n+219D37 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2179BA Compression Method    0008 (8) 'Deflated'\n-2179BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2179C0 CRC                   93AEE0AC (2477711532)\n-2179C4 Compressed Size       00000247 (583)\n-2179C8 Uncompressed Size     0000040A (1034)\n-2179CC Filename Length       003C (60)\n-2179CE Extra Length          0000 (0)\n-2179D0 Comment Length        0000 (0)\n-2179D2 Disk Start            0000 (0)\n-2179D4 Int File Attributes   0000 (0)\n+219D39 Compression Method    0008 (8) 'Deflated'\n+219D3B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219D3F CRC                   E6F6EE92 (3874942610)\n+219D43 Compressed Size       00000984 (2436)\n+219D47 Uncompressed Size     00003564 (13668)\n+219D4B Filename Length       0027 (39)\n+219D4D Extra Length          0000 (0)\n+219D4F Comment Length        0000 (0)\n+219D51 Disk Start            0000 (0)\n+219D53 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2179D6 Ext File Attributes   00000000 (0)\n-2179DA Local Header Offset   0002F156 (192854)\n-2179DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219D55 Ext File Attributes   00000000 (0)\n+219D59 Local Header Offset   0004D88E (317582)\n+219D5D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2179DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219D5D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217A1A CENTRAL HEADER #278   02014B50 (33639248)\n-217A1E Created Zip Spec      14 (20) '2.0'\n-217A1F Created OS            00 (0) 'MS-DOS'\n-217A20 Extract Zip Spec      14 (20) '2.0'\n-217A21 Extract OS            00 (0) 'MS-DOS'\n-217A22 General Purpose Flag  0808 (2056)\n+219D84 CENTRAL HEADER #278   02014B50 (33639248)\n+219D88 Created Zip Spec      14 (20) '2.0'\n+219D89 Created OS            00 (0) 'MS-DOS'\n+219D8A Extract Zip Spec      14 (20) '2.0'\n+219D8B Extract OS            00 (0) 'MS-DOS'\n+219D8C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217A24 Compression Method    0008 (8) 'Deflated'\n-217A26 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217A2A CRC                   00000000 (0)\n-217A2E Compressed Size       00000002 (2)\n-217A32 Uncompressed Size     00000000 (0)\n-217A36 Filename Length       001E (30)\n-217A38 Extra Length          0000 (0)\n-217A3A Comment Length        0000 (0)\n-217A3C Disk Start            0000 (0)\n-217A3E Int File Attributes   0000 (0)\n+219D8E Compression Method    0008 (8) 'Deflated'\n+219D90 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219D94 CRC                   D525E52E (3576030510)\n+219D98 Compressed Size       00000BEA (3050)\n+219D9C Uncompressed Size     00003610 (13840)\n+219DA0 Filename Length       0029 (41)\n+219DA2 Extra Length          0000 (0)\n+219DA4 Comment Length        0000 (0)\n+219DA6 Disk Start            0000 (0)\n+219DA8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217A40 Ext File Attributes   00000000 (0)\n-217A44 Local Header Offset   0002F407 (193543)\n-217A48 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219DAA Ext File Attributes   00000000 (0)\n+219DAE Local Header Offset   0004E267 (320103)\n+219DB2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217A48: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219DB2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217A66 CENTRAL HEADER #279   02014B50 (33639248)\n-217A6A Created Zip Spec      14 (20) '2.0'\n-217A6B Created OS            00 (0) 'MS-DOS'\n-217A6C Extract Zip Spec      14 (20) '2.0'\n-217A6D Extract OS            00 (0) 'MS-DOS'\n-217A6E General Purpose Flag  0808 (2056)\n+219DDB CENTRAL HEADER #279   02014B50 (33639248)\n+219DDF Created Zip Spec      14 (20) '2.0'\n+219DE0 Created OS            00 (0) 'MS-DOS'\n+219DE1 Extract Zip Spec      14 (20) '2.0'\n+219DE2 Extract OS            00 (0) 'MS-DOS'\n+219DE3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217A70 Compression Method    0008 (8) 'Deflated'\n-217A72 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217A76 CRC                   7A3B23D9 (2050696153)\n-217A7A Compressed Size       0000026C (620)\n-217A7E Uncompressed Size     00000479 (1145)\n-217A82 Filename Length       003D (61)\n-217A84 Extra Length          0000 (0)\n-217A86 Comment Length        0000 (0)\n-217A88 Disk Start            0000 (0)\n-217A8A Int File Attributes   0000 (0)\n+219DE5 Compression Method    0008 (8) 'Deflated'\n+219DE7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219DEB CRC                   82E9AE97 (2196352663)\n+219DEF Compressed Size       00000B94 (2964)\n+219DF3 Uncompressed Size     0000273B (10043)\n+219DF7 Filename Length       0024 (36)\n+219DF9 Extra Length          0000 (0)\n+219DFB Comment Length        0000 (0)\n+219DFD Disk Start            0000 (0)\n+219DFF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217A8C Ext File Attributes   00000000 (0)\n-217A90 Local Header Offset   0002F455 (193621)\n-217A94 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219E01 Ext File Attributes   00000000 (0)\n+219E05 Local Header Offset   0004EEA8 (323240)\n+219E09 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217A94: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219E09: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217AD1 CENTRAL HEADER #280   02014B50 (33639248)\n-217AD5 Created Zip Spec      14 (20) '2.0'\n-217AD6 Created OS            00 (0) 'MS-DOS'\n-217AD7 Extract Zip Spec      14 (20) '2.0'\n-217AD8 Extract OS            00 (0) 'MS-DOS'\n-217AD9 General Purpose Flag  0808 (2056)\n+219E2D CENTRAL HEADER #280   02014B50 (33639248)\n+219E31 Created Zip Spec      14 (20) '2.0'\n+219E32 Created OS            00 (0) 'MS-DOS'\n+219E33 Extract Zip Spec      14 (20) '2.0'\n+219E34 Extract OS            00 (0) 'MS-DOS'\n+219E35 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217ADB Compression Method    0008 (8) 'Deflated'\n-217ADD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217AE1 CRC                   3E8906CC (1049167564)\n-217AE5 Compressed Size       0000031B (795)\n-217AE9 Uncompressed Size     00000690 (1680)\n-217AED Filename Length       0043 (67)\n-217AEF Extra Length          0000 (0)\n-217AF1 Comment Length        0000 (0)\n-217AF3 Disk Start            0000 (0)\n-217AF5 Int File Attributes   0000 (0)\n+219E37 Compression Method    0008 (8) 'Deflated'\n+219E39 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219E3D CRC                   00000000 (0)\n+219E41 Compressed Size       00000002 (2)\n+219E45 Uncompressed Size     00000000 (0)\n+219E49 Filename Length       0021 (33)\n+219E4B Extra Length          0000 (0)\n+219E4D Comment Length        0000 (0)\n+219E4F Disk Start            0000 (0)\n+219E51 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217AF7 Ext File Attributes   00000000 (0)\n-217AFB Local Header Offset   0002F72C (194348)\n-217AFF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219E53 Ext File Attributes   00000000 (0)\n+219E57 Local Header Offset   0004FA8E (326286)\n+219E5B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217AFF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219E5B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217B42 CENTRAL HEADER #281   02014B50 (33639248)\n-217B46 Created Zip Spec      14 (20) '2.0'\n-217B47 Created OS            00 (0) 'MS-DOS'\n-217B48 Extract Zip Spec      14 (20) '2.0'\n-217B49 Extract OS            00 (0) 'MS-DOS'\n-217B4A General Purpose Flag  0808 (2056)\n+219E7C CENTRAL HEADER #281   02014B50 (33639248)\n+219E80 Created Zip Spec      14 (20) '2.0'\n+219E81 Created OS            00 (0) 'MS-DOS'\n+219E82 Extract Zip Spec      14 (20) '2.0'\n+219E83 Extract OS            00 (0) 'MS-DOS'\n+219E84 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217B4C Compression Method    0008 (8) 'Deflated'\n-217B4E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217B52 CRC                   AE1F051B (2921268507)\n-217B56 Compressed Size       0000031D (797)\n-217B5A Uncompressed Size     00000698 (1688)\n-217B5E Filename Length       0045 (69)\n-217B60 Extra Length          0000 (0)\n-217B62 Comment Length        0000 (0)\n-217B64 Disk Start            0000 (0)\n-217B66 Int File Attributes   0000 (0)\n+219E86 Compression Method    0008 (8) 'Deflated'\n+219E88 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219E8C CRC                   62810B39 (1652624185)\n+219E90 Compressed Size       0000027B (635)\n+219E94 Uncompressed Size     00000554 (1364)\n+219E98 Filename Length       0036 (54)\n+219E9A Extra Length          0000 (0)\n+219E9C Comment Length        0000 (0)\n+219E9E Disk Start            0000 (0)\n+219EA0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217B68 Ext File Attributes   00000000 (0)\n-217B6C Local Header Offset   0002FAB8 (195256)\n-217B70 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219EA2 Ext File Attributes   00000000 (0)\n+219EA6 Local Header Offset   0004FADF (326367)\n+219EAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217B70: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219EAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217BB5 CENTRAL HEADER #282   02014B50 (33639248)\n-217BB9 Created Zip Spec      14 (20) '2.0'\n-217BBA Created OS            00 (0) 'MS-DOS'\n-217BBB Extract Zip Spec      14 (20) '2.0'\n-217BBC Extract OS            00 (0) 'MS-DOS'\n-217BBD General Purpose Flag  0808 (2056)\n+219EE0 CENTRAL HEADER #282   02014B50 (33639248)\n+219EE4 Created Zip Spec      14 (20) '2.0'\n+219EE5 Created OS            00 (0) 'MS-DOS'\n+219EE6 Extract Zip Spec      14 (20) '2.0'\n+219EE7 Extract OS            00 (0) 'MS-DOS'\n+219EE8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217BBF Compression Method    0008 (8) 'Deflated'\n-217BC1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217BC5 CRC                   542D0143 (1412235587)\n-217BC9 Compressed Size       0000029B (667)\n-217BCD Uncompressed Size     000005A4 (1444)\n-217BD1 Filename Length       0040 (64)\n-217BD3 Extra Length          0000 (0)\n-217BD5 Comment Length        0000 (0)\n-217BD7 Disk Start            0000 (0)\n-217BD9 Int File Attributes   0000 (0)\n+219EEA Compression Method    0008 (8) 'Deflated'\n+219EEC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219EF0 CRC                   7918064D (2031617613)\n+219EF4 Compressed Size       00000668 (1640)\n+219EF8 Uncompressed Size     00001974 (6516)\n+219EFC Filename Length       0038 (56)\n+219EFE Extra Length          0000 (0)\n+219F00 Comment Length        0000 (0)\n+219F02 Disk Start            0000 (0)\n+219F04 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217BDB Ext File Attributes   00000000 (0)\n-217BDF Local Header Offset   0002FE48 (196168)\n-217BE3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219F06 Ext File Attributes   00000000 (0)\n+219F0A Local Header Offset   0004FDBE (327102)\n+219F0E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217BE3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219F0E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217C23 CENTRAL HEADER #283   02014B50 (33639248)\n-217C27 Created Zip Spec      14 (20) '2.0'\n-217C28 Created OS            00 (0) 'MS-DOS'\n-217C29 Extract Zip Spec      14 (20) '2.0'\n-217C2A Extract OS            00 (0) 'MS-DOS'\n-217C2B General Purpose Flag  0808 (2056)\n+219F46 CENTRAL HEADER #283   02014B50 (33639248)\n+219F4A Created Zip Spec      14 (20) '2.0'\n+219F4B Created OS            00 (0) 'MS-DOS'\n+219F4C Extract Zip Spec      14 (20) '2.0'\n+219F4D Extract OS            00 (0) 'MS-DOS'\n+219F4E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217C2D Compression Method    0008 (8) 'Deflated'\n-217C2F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217C33 CRC                   FC50C2FA (4233151226)\n-217C37 Compressed Size       000002DA (730)\n-217C3B Uncompressed Size     0000066A (1642)\n-217C3F Filename Length       0042 (66)\n-217C41 Extra Length          0000 (0)\n-217C43 Comment Length        0000 (0)\n-217C45 Disk Start            0000 (0)\n-217C47 Int File Attributes   0000 (0)\n+219F50 Compression Method    0008 (8) 'Deflated'\n+219F52 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219F56 CRC                   9C935B9B (2626902939)\n+219F5A Compressed Size       00000F0B (3851)\n+219F5E Uncompressed Size     000050B4 (20660)\n+219F62 Filename Length       003B (59)\n+219F64 Extra Length          0000 (0)\n+219F66 Comment Length        0000 (0)\n+219F68 Disk Start            0000 (0)\n+219F6A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217C49 Ext File Attributes   00000000 (0)\n-217C4D Local Header Offset   00030151 (196945)\n-217C51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219F6C Ext File Attributes   00000000 (0)\n+219F70 Local Header Offset   0005048C (328844)\n+219F74 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217C51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219F74: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217C93 CENTRAL HEADER #284   02014B50 (33639248)\n-217C97 Created Zip Spec      14 (20) '2.0'\n-217C98 Created OS            00 (0) 'MS-DOS'\n-217C99 Extract Zip Spec      14 (20) '2.0'\n-217C9A Extract OS            00 (0) 'MS-DOS'\n-217C9B General Purpose Flag  0808 (2056)\n+219FAF CENTRAL HEADER #284   02014B50 (33639248)\n+219FB3 Created Zip Spec      14 (20) '2.0'\n+219FB4 Created OS            00 (0) 'MS-DOS'\n+219FB5 Extract Zip Spec      14 (20) '2.0'\n+219FB6 Extract OS            00 (0) 'MS-DOS'\n+219FB7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217C9D Compression Method    0008 (8) 'Deflated'\n-217C9F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217CA3 CRC                   E1CD8446 (3788342342)\n-217CA7 Compressed Size       00000279 (633)\n-217CAB Uncompressed Size     000004FA (1274)\n-217CAF Filename Length       003D (61)\n-217CB1 Extra Length          0000 (0)\n-217CB3 Comment Length        0000 (0)\n-217CB5 Disk Start            0000 (0)\n-217CB7 Int File Attributes   0000 (0)\n+219FB9 Compression Method    0008 (8) 'Deflated'\n+219FBB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+219FBF CRC                   00000000 (0)\n+219FC3 Compressed Size       00000002 (2)\n+219FC7 Uncompressed Size     00000000 (0)\n+219FCB Filename Length       0021 (33)\n+219FCD Extra Length          0000 (0)\n+219FCF Comment Length        0000 (0)\n+219FD1 Disk Start            0000 (0)\n+219FD3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217CB9 Ext File Attributes   00000000 (0)\n-217CBD Local Header Offset   0003049B (197787)\n-217CC1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+219FD5 Ext File Attributes   00000000 (0)\n+219FD9 Local Header Offset   00051400 (332800)\n+219FDD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217CC1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x219FDD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217CFE CENTRAL HEADER #285   02014B50 (33639248)\n-217D02 Created Zip Spec      14 (20) '2.0'\n-217D03 Created OS            00 (0) 'MS-DOS'\n-217D04 Extract Zip Spec      14 (20) '2.0'\n-217D05 Extract OS            00 (0) 'MS-DOS'\n-217D06 General Purpose Flag  0808 (2056)\n+219FFE CENTRAL HEADER #285   02014B50 (33639248)\n+21A002 Created Zip Spec      14 (20) '2.0'\n+21A003 Created OS            00 (0) 'MS-DOS'\n+21A004 Extract Zip Spec      14 (20) '2.0'\n+21A005 Extract OS            00 (0) 'MS-DOS'\n+21A006 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217D08 Compression Method    0008 (8) 'Deflated'\n-217D0A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217D0E CRC                   FE2922A2 (4264108706)\n-217D12 Compressed Size       0000027D (637)\n-217D16 Uncompressed Size     00000502 (1282)\n-217D1A Filename Length       003F (63)\n-217D1C Extra Length          0000 (0)\n-217D1E Comment Length        0000 (0)\n-217D20 Disk Start            0000 (0)\n-217D22 Int File Attributes   0000 (0)\n+21A008 Compression Method    0008 (8) 'Deflated'\n+21A00A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A00E CRC                   2B1352F9 (722686713)\n+21A012 Compressed Size       00000B08 (2824)\n+21A016 Uncompressed Size     00003462 (13410)\n+21A01A Filename Length       0034 (52)\n+21A01C Extra Length          0000 (0)\n+21A01E Comment Length        0000 (0)\n+21A020 Disk Start            0000 (0)\n+21A022 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217D24 Ext File Attributes   00000000 (0)\n-217D28 Local Header Offset   0003077F (198527)\n-217D2C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A024 Ext File Attributes   00000000 (0)\n+21A028 Local Header Offset   00051451 (332881)\n+21A02C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217D2C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A02C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217D6B CENTRAL HEADER #286   02014B50 (33639248)\n-217D6F Created Zip Spec      14 (20) '2.0'\n-217D70 Created OS            00 (0) 'MS-DOS'\n-217D71 Extract Zip Spec      14 (20) '2.0'\n-217D72 Extract OS            00 (0) 'MS-DOS'\n-217D73 General Purpose Flag  0808 (2056)\n+21A060 CENTRAL HEADER #286   02014B50 (33639248)\n+21A064 Created Zip Spec      14 (20) '2.0'\n+21A065 Created OS            00 (0) 'MS-DOS'\n+21A066 Extract Zip Spec      14 (20) '2.0'\n+21A067 Extract OS            00 (0) 'MS-DOS'\n+21A068 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217D75 Compression Method    0008 (8) 'Deflated'\n-217D77 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217D7B CRC                   00000000 (0)\n-217D7F Compressed Size       00000002 (2)\n-217D83 Uncompressed Size     00000000 (0)\n-217D87 Filename Length       0027 (39)\n-217D89 Extra Length          0000 (0)\n-217D8B Comment Length        0000 (0)\n-217D8D Disk Start            0000 (0)\n-217D8F Int File Attributes   0000 (0)\n+21A06A Compression Method    0008 (8) 'Deflated'\n+21A06C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A070 CRC                   50C2BDD7 (1354939863)\n+21A074 Compressed Size       000004E2 (1250)\n+21A078 Uncompressed Size     00000E1B (3611)\n+21A07C Filename Length       003F (63)\n+21A07E Extra Length          0000 (0)\n+21A080 Comment Length        0000 (0)\n+21A082 Disk Start            0000 (0)\n+21A084 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217D91 Ext File Attributes   00000000 (0)\n-217D95 Local Header Offset   00030A69 (199273)\n-217D99 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A086 Ext File Attributes   00000000 (0)\n+21A08A Local Header Offset   00051FBB (335803)\n+21A08E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217D99: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A08E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217DC0 CENTRAL HEADER #287   02014B50 (33639248)\n-217DC4 Created Zip Spec      14 (20) '2.0'\n-217DC5 Created OS            00 (0) 'MS-DOS'\n-217DC6 Extract Zip Spec      14 (20) '2.0'\n-217DC7 Extract OS            00 (0) 'MS-DOS'\n-217DC8 General Purpose Flag  0808 (2056)\n+21A0CD CENTRAL HEADER #287   02014B50 (33639248)\n+21A0D1 Created Zip Spec      14 (20) '2.0'\n+21A0D2 Created OS            00 (0) 'MS-DOS'\n+21A0D3 Extract Zip Spec      14 (20) '2.0'\n+21A0D4 Extract OS            00 (0) 'MS-DOS'\n+21A0D5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217DCA Compression Method    0008 (8) 'Deflated'\n-217DCC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217DD0 CRC                   704BFEFA (1884028666)\n-217DD4 Compressed Size       0000033B (827)\n-217DD8 Uncompressed Size     00000741 (1857)\n-217DDC Filename Length       0040 (64)\n-217DDE Extra Length          0000 (0)\n-217DE0 Comment Length        0000 (0)\n-217DE2 Disk Start            0000 (0)\n-217DE4 Int File Attributes   0000 (0)\n+21A0D7 Compression Method    0008 (8) 'Deflated'\n+21A0D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A0DD CRC                   4F0E9D5D (1326357853)\n+21A0E1 Compressed Size       00000852 (2130)\n+21A0E5 Uncompressed Size     00002017 (8215)\n+21A0E9 Filename Length       002B (43)\n+21A0EB Extra Length          0000 (0)\n+21A0ED Comment Length        0000 (0)\n+21A0EF Disk Start            0000 (0)\n+21A0F1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217DE6 Ext File Attributes   00000000 (0)\n-217DEA Local Header Offset   00030AC0 (199360)\n-217DEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A0F3 Ext File Attributes   00000000 (0)\n+21A0F7 Local Header Offset   0005250A (337162)\n+21A0FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217DEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A0FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217E2E CENTRAL HEADER #288   02014B50 (33639248)\n-217E32 Created Zip Spec      14 (20) '2.0'\n-217E33 Created OS            00 (0) 'MS-DOS'\n-217E34 Extract Zip Spec      14 (20) '2.0'\n-217E35 Extract OS            00 (0) 'MS-DOS'\n-217E36 General Purpose Flag  0808 (2056)\n+21A126 CENTRAL HEADER #288   02014B50 (33639248)\n+21A12A Created Zip Spec      14 (20) '2.0'\n+21A12B Created OS            00 (0) 'MS-DOS'\n+21A12C Extract Zip Spec      14 (20) '2.0'\n+21A12D Extract OS            00 (0) 'MS-DOS'\n+21A12E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217E38 Compression Method    0008 (8) 'Deflated'\n-217E3A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217E3E CRC                   00000000 (0)\n-217E42 Compressed Size       00000002 (2)\n-217E46 Uncompressed Size     00000000 (0)\n-217E4A Filename Length       0020 (32)\n-217E4C Extra Length          0000 (0)\n-217E4E Comment Length        0000 (0)\n-217E50 Disk Start            0000 (0)\n-217E52 Int File Attributes   0000 (0)\n+21A130 Compression Method    0008 (8) 'Deflated'\n+21A132 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A136 CRC                   35B34ECC (900943564)\n+21A13A Compressed Size       00000276 (630)\n+21A13E Uncompressed Size     0000049E (1182)\n+21A142 Filename Length       003B (59)\n+21A144 Extra Length          0000 (0)\n+21A146 Comment Length        0000 (0)\n+21A148 Disk Start            0000 (0)\n+21A14A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217E54 Ext File Attributes   00000000 (0)\n-217E58 Local Header Offset   00030E69 (200297)\n-217E5C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A14C Ext File Attributes   00000000 (0)\n+21A150 Local Header Offset   00052DB5 (339381)\n+21A154 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217E5C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A154: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217E7C CENTRAL HEADER #289   02014B50 (33639248)\n-217E80 Created Zip Spec      14 (20) '2.0'\n-217E81 Created OS            00 (0) 'MS-DOS'\n-217E82 Extract Zip Spec      14 (20) '2.0'\n-217E83 Extract OS            00 (0) 'MS-DOS'\n-217E84 General Purpose Flag  0808 (2056)\n+21A18F CENTRAL HEADER #289   02014B50 (33639248)\n+21A193 Created Zip Spec      14 (20) '2.0'\n+21A194 Created OS            00 (0) 'MS-DOS'\n+21A195 Extract Zip Spec      14 (20) '2.0'\n+21A196 Extract OS            00 (0) 'MS-DOS'\n+21A197 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217E86 Compression Method    0008 (8) 'Deflated'\n-217E88 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217E8C CRC                   7E779F80 (2121768832)\n-217E90 Compressed Size       0000032F (815)\n-217E94 Uncompressed Size     000007FD (2045)\n-217E98 Filename Length       0044 (68)\n-217E9A Extra Length          0000 (0)\n-217E9C Comment Length        0000 (0)\n-217E9E Disk Start            0000 (0)\n-217EA0 Int File Attributes   0000 (0)\n+21A199 Compression Method    0008 (8) 'Deflated'\n+21A19B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A19F CRC                   AE36D6DB (2922829531)\n+21A1A3 Compressed Size       00000275 (629)\n+21A1A7 Uncompressed Size     000004A6 (1190)\n+21A1AB Filename Length       003D (61)\n+21A1AD Extra Length          0000 (0)\n+21A1AF Comment Length        0000 (0)\n+21A1B1 Disk Start            0000 (0)\n+21A1B3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217EA2 Ext File Attributes   00000000 (0)\n-217EA6 Local Header Offset   00030EB9 (200377)\n-217EAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A1B5 Ext File Attributes   00000000 (0)\n+21A1B9 Local Header Offset   00053094 (340116)\n+21A1BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217EAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A1BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217EEE CENTRAL HEADER #290   02014B50 (33639248)\n-217EF2 Created Zip Spec      14 (20) '2.0'\n-217EF3 Created OS            00 (0) 'MS-DOS'\n-217EF4 Extract Zip Spec      14 (20) '2.0'\n-217EF5 Extract OS            00 (0) 'MS-DOS'\n-217EF6 General Purpose Flag  0808 (2056)\n+21A1FA CENTRAL HEADER #290   02014B50 (33639248)\n+21A1FE Created Zip Spec      14 (20) '2.0'\n+21A1FF Created OS            00 (0) 'MS-DOS'\n+21A200 Extract Zip Spec      14 (20) '2.0'\n+21A201 Extract OS            00 (0) 'MS-DOS'\n+21A202 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217EF8 Compression Method    0008 (8) 'Deflated'\n-217EFA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217EFE CRC                   00000000 (0)\n-217F02 Compressed Size       00000002 (2)\n-217F06 Uncompressed Size     00000000 (0)\n-217F0A Filename Length       0021 (33)\n-217F0C Extra Length          0000 (0)\n-217F0E Comment Length        0000 (0)\n-217F10 Disk Start            0000 (0)\n-217F12 Int File Attributes   0000 (0)\n+21A204 Compression Method    0008 (8) 'Deflated'\n+21A206 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A20A CRC                   693DBCBA (1765653690)\n+21A20E Compressed Size       00000C43 (3139)\n+21A212 Uncompressed Size     00002F4D (12109)\n+21A216 Filename Length       002B (43)\n+21A218 Extra Length          0000 (0)\n+21A21A Comment Length        0000 (0)\n+21A21C Disk Start            0000 (0)\n+21A21E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217F14 Ext File Attributes   00000000 (0)\n-217F18 Local Header Offset   0003125A (201306)\n-217F1C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A220 Ext File Attributes   00000000 (0)\n+21A224 Local Header Offset   00053374 (340852)\n+21A228 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217F1C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A228: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217F3D CENTRAL HEADER #291   02014B50 (33639248)\n-217F41 Created Zip Spec      14 (20) '2.0'\n-217F42 Created OS            00 (0) 'MS-DOS'\n-217F43 Extract Zip Spec      14 (20) '2.0'\n-217F44 Extract OS            00 (0) 'MS-DOS'\n-217F45 General Purpose Flag  0808 (2056)\n+21A253 CENTRAL HEADER #291   02014B50 (33639248)\n+21A257 Created Zip Spec      14 (20) '2.0'\n+21A258 Created OS            00 (0) 'MS-DOS'\n+21A259 Extract Zip Spec      14 (20) '2.0'\n+21A25A Extract OS            00 (0) 'MS-DOS'\n+21A25B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217F47 Compression Method    0008 (8) 'Deflated'\n-217F49 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217F4D CRC                   33B32090 (867377296)\n-217F51 Compressed Size       000005BE (1470)\n-217F55 Uncompressed Size     00001259 (4697)\n-217F59 Filename Length       0049 (73)\n-217F5B Extra Length          0000 (0)\n-217F5D Comment Length        0000 (0)\n-217F5F Disk Start            0000 (0)\n-217F61 Int File Attributes   0000 (0)\n+21A25D Compression Method    0008 (8) 'Deflated'\n+21A25F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A263 CRC                   44BCC62B (1153222187)\n+21A267 Compressed Size       00000F74 (3956)\n+21A26B Uncompressed Size     00004608 (17928)\n+21A26F Filename Length       002D (45)\n+21A271 Extra Length          0000 (0)\n+21A273 Comment Length        0000 (0)\n+21A275 Disk Start            0000 (0)\n+21A277 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217F63 Ext File Attributes   00000000 (0)\n-217F67 Local Header Offset   000312AB (201387)\n-217F6B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A279 Ext File Attributes   00000000 (0)\n+21A27D Local Header Offset   00054010 (344080)\n+21A281 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217F6B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A281: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-217FB4 CENTRAL HEADER #292   02014B50 (33639248)\n-217FB8 Created Zip Spec      14 (20) '2.0'\n-217FB9 Created OS            00 (0) 'MS-DOS'\n-217FBA Extract Zip Spec      14 (20) '2.0'\n-217FBB Extract OS            00 (0) 'MS-DOS'\n-217FBC General Purpose Flag  0808 (2056)\n+21A2AE CENTRAL HEADER #292   02014B50 (33639248)\n+21A2B2 Created Zip Spec      14 (20) '2.0'\n+21A2B3 Created OS            00 (0) 'MS-DOS'\n+21A2B4 Extract Zip Spec      14 (20) '2.0'\n+21A2B5 Extract OS            00 (0) 'MS-DOS'\n+21A2B6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-217FBE Compression Method    0008 (8) 'Deflated'\n-217FC0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-217FC4 CRC                   DEA0C858 (3735079000)\n-217FC8 Compressed Size       000003F9 (1017)\n-217FCC Uncompressed Size     00000A13 (2579)\n-217FD0 Filename Length       0043 (67)\n-217FD2 Extra Length          0000 (0)\n-217FD4 Comment Length        0000 (0)\n-217FD6 Disk Start            0000 (0)\n-217FD8 Int File Attributes   0000 (0)\n+21A2B8 Compression Method    0008 (8) 'Deflated'\n+21A2BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A2BE CRC                   00000000 (0)\n+21A2C2 Compressed Size       00000002 (2)\n+21A2C6 Uncompressed Size     00000000 (0)\n+21A2CA Filename Length       0021 (33)\n+21A2CC Extra Length          0000 (0)\n+21A2CE Comment Length        0000 (0)\n+21A2D0 Disk Start            0000 (0)\n+21A2D2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-217FDA Ext File Attributes   00000000 (0)\n-217FDE Local Header Offset   000318E0 (202976)\n-217FE2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A2D4 Ext File Attributes   00000000 (0)\n+21A2D8 Local Header Offset   00054FDF (348127)\n+21A2DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x217FE2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A2DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-218025 CENTRAL HEADER #293   02014B50 (33639248)\n-218029 Created Zip Spec      14 (20) '2.0'\n-21802A Created OS            00 (0) 'MS-DOS'\n-21802B Extract Zip Spec      14 (20) '2.0'\n-21802C Extract OS            00 (0) 'MS-DOS'\n-21802D General Purpose Flag  0808 (2056)\n+21A2FD CENTRAL HEADER #293   02014B50 (33639248)\n+21A301 Created Zip Spec      14 (20) '2.0'\n+21A302 Created OS            00 (0) 'MS-DOS'\n+21A303 Extract Zip Spec      14 (20) '2.0'\n+21A304 Extract OS            00 (0) 'MS-DOS'\n+21A305 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21802F Compression Method    0008 (8) 'Deflated'\n-218031 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-218035 CRC                   00000000 (0)\n-218039 Compressed Size       00000002 (2)\n-21803D Uncompressed Size     00000000 (0)\n-218041 Filename Length       001E (30)\n-218043 Extra Length          0000 (0)\n-218045 Comment Length        0000 (0)\n-218047 Disk Start            0000 (0)\n-218049 Int File Attributes   0000 (0)\n+21A307 Compression Method    0008 (8) 'Deflated'\n+21A309 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A30D CRC                   01EEDE5E (32431710)\n+21A311 Compressed Size       0000028F (655)\n+21A315 Uncompressed Size     000004E7 (1255)\n+21A319 Filename Length       002E (46)\n+21A31B Extra Length          0000 (0)\n+21A31D Comment Length        0000 (0)\n+21A31F Disk Start            0000 (0)\n+21A321 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21804B Ext File Attributes   00000000 (0)\n-21804F Local Header Offset   00031D4A (204106)\n-218053 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A323 Ext File Attributes   00000000 (0)\n+21A327 Local Header Offset   00055030 (348208)\n+21A32B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218053: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A32B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-218071 CENTRAL HEADER #294   02014B50 (33639248)\n-218075 Created Zip Spec      14 (20) '2.0'\n-218076 Created OS            00 (0) 'MS-DOS'\n-218077 Extract Zip Spec      14 (20) '2.0'\n-218078 Extract OS            00 (0) 'MS-DOS'\n-218079 General Purpose Flag  0808 (2056)\n+21A359 CENTRAL HEADER #294   02014B50 (33639248)\n+21A35D Created Zip Spec      14 (20) '2.0'\n+21A35E Created OS            00 (0) 'MS-DOS'\n+21A35F Extract Zip Spec      14 (20) '2.0'\n+21A360 Extract OS            00 (0) 'MS-DOS'\n+21A361 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21807B Compression Method    0008 (8) 'Deflated'\n-21807D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-218081 CRC                   CE83BFB8 (3464740792)\n-218085 Compressed Size       000016FA (5882)\n-218089 Uncompressed Size     00007356 (29526)\n-21808D Filename Length       0038 (56)\n-21808F Extra Length          0000 (0)\n-218091 Comment Length        0000 (0)\n-218093 Disk Start            0000 (0)\n-218095 Int File Attributes   0000 (0)\n+21A363 Compression Method    0008 (8) 'Deflated'\n+21A365 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A369 CRC                   00000000 (0)\n+21A36D Compressed Size       00000002 (2)\n+21A371 Uncompressed Size     00000000 (0)\n+21A375 Filename Length       0029 (41)\n+21A377 Extra Length          0000 (0)\n+21A379 Comment Length        0000 (0)\n+21A37B Disk Start            0000 (0)\n+21A37D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218097 Ext File Attributes   00000000 (0)\n-21809B Local Header Offset   00031D98 (204184)\n-21809F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A37F Ext File Attributes   00000000 (0)\n+21A383 Local Header Offset   0005531B (348955)\n+21A387 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21809F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A387: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2180D7 CENTRAL HEADER #295   02014B50 (33639248)\n-2180DB Created Zip Spec      14 (20) '2.0'\n-2180DC Created OS            00 (0) 'MS-DOS'\n-2180DD Extract Zip Spec      14 (20) '2.0'\n-2180DE Extract OS            00 (0) 'MS-DOS'\n-2180DF General Purpose Flag  0808 (2056)\n+21A3B0 CENTRAL HEADER #295   02014B50 (33639248)\n+21A3B4 Created Zip Spec      14 (20) '2.0'\n+21A3B5 Created OS            00 (0) 'MS-DOS'\n+21A3B6 Extract Zip Spec      14 (20) '2.0'\n+21A3B7 Extract OS            00 (0) 'MS-DOS'\n+21A3B8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2180E1 Compression Method    0008 (8) 'Deflated'\n-2180E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2180E7 CRC                   B659AACE (3059329742)\n-2180EB Compressed Size       000008C7 (2247)\n-2180EF Uncompressed Size     0000227D (8829)\n-2180F3 Filename Length       0037 (55)\n-2180F5 Extra Length          0000 (0)\n-2180F7 Comment Length        0000 (0)\n-2180F9 Disk Start            0000 (0)\n-2180FB Int File Attributes   0000 (0)\n+21A3BA Compression Method    0008 (8) 'Deflated'\n+21A3BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A3C0 CRC                   20854F04 (545607428)\n+21A3C4 Compressed Size       00000490 (1168)\n+21A3C8 Uncompressed Size     00000B1B (2843)\n+21A3CC Filename Length       003E (62)\n+21A3CE Extra Length          0000 (0)\n+21A3D0 Comment Length        0000 (0)\n+21A3D2 Disk Start            0000 (0)\n+21A3D4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2180FD Ext File Attributes   00000000 (0)\n-218101 Local Header Offset   000334F8 (210168)\n-218105 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A3D6 Ext File Attributes   00000000 (0)\n+21A3DA Local Header Offset   00055374 (349044)\n+21A3DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218105: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A3DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21813C CENTRAL HEADER #296   02014B50 (33639248)\n-218140 Created Zip Spec      14 (20) '2.0'\n-218141 Created OS            00 (0) 'MS-DOS'\n-218142 Extract Zip Spec      14 (20) '2.0'\n-218143 Extract OS            00 (0) 'MS-DOS'\n-218144 General Purpose Flag  0808 (2056)\n+21A41C CENTRAL HEADER #296   02014B50 (33639248)\n+21A420 Created Zip Spec      14 (20) '2.0'\n+21A421 Created OS            00 (0) 'MS-DOS'\n+21A422 Extract Zip Spec      14 (20) '2.0'\n+21A423 Extract OS            00 (0) 'MS-DOS'\n+21A424 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218146 Compression Method    0008 (8) 'Deflated'\n-218148 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21814C CRC                   00000000 (0)\n-218150 Compressed Size       00000002 (2)\n-218154 Uncompressed Size     00000000 (0)\n-218158 Filename Length       000F (15)\n-21815A Extra Length          0000 (0)\n-21815C Comment Length        0000 (0)\n-21815E Disk Start            0000 (0)\n-218160 Int File Attributes   0000 (0)\n+21A426 Compression Method    0008 (8) 'Deflated'\n+21A428 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A42C CRC                   D19D012A (3516727594)\n+21A430 Compressed Size       00000338 (824)\n+21A434 Uncompressed Size     00000733 (1843)\n+21A438 Filename Length       003E (62)\n+21A43A Extra Length          0000 (0)\n+21A43C Comment Length        0000 (0)\n+21A43E Disk Start            0000 (0)\n+21A440 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218162 Ext File Attributes   00000000 (0)\n-218166 Local Header Offset   00033E24 (212516)\n-21816A Filename              'XXXXXXXXXXXXXXX'\n+21A442 Ext File Attributes   00000000 (0)\n+21A446 Local Header Offset   00055870 (350320)\n+21A44A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21816A: Filename 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A44A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-218179 CENTRAL HEADER #297   02014B50 (33639248)\n-21817D Created Zip Spec      14 (20) '2.0'\n-21817E Created OS            00 (0) 'MS-DOS'\n-21817F Extract Zip Spec      14 (20) '2.0'\n-218180 Extract OS            00 (0) 'MS-DOS'\n-218181 General Purpose Flag  0808 (2056)\n+21A488 CENTRAL HEADER #297   02014B50 (33639248)\n+21A48C Created Zip Spec      14 (20) '2.0'\n+21A48D Created OS            00 (0) 'MS-DOS'\n+21A48E Extract Zip Spec      14 (20) '2.0'\n+21A48F Extract OS            00 (0) 'MS-DOS'\n+21A490 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218183 Compression Method    0008 (8) 'Deflated'\n-218185 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-218189 CRC                   00000000 (0)\n-21818D Compressed Size       00000002 (2)\n-218191 Uncompressed Size     00000000 (0)\n-218195 Filename Length       0018 (24)\n-218197 Extra Length          0000 (0)\n-218199 Comment Length        0000 (0)\n-21819B Disk Start            0000 (0)\n-21819D Int File Attributes   0000 (0)\n+21A492 Compression Method    0008 (8) 'Deflated'\n+21A494 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A498 CRC                   489CA2B6 (1218224822)\n+21A49C Compressed Size       00000D33 (3379)\n+21A4A0 Uncompressed Size     00003CC4 (15556)\n+21A4A4 Filename Length       0038 (56)\n+21A4A6 Extra Length          0000 (0)\n+21A4A8 Comment Length        0000 (0)\n+21A4AA Disk Start            0000 (0)\n+21A4AC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21819F Ext File Attributes   00000000 (0)\n-2181A3 Local Header Offset   00033E63 (212579)\n-2181A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+21A4AE Ext File Attributes   00000000 (0)\n+21A4B2 Local Header Offset   00055C14 (351252)\n+21A4B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2181A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A4B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2181BF CENTRAL HEADER #298   02014B50 (33639248)\n-2181C3 Created Zip Spec      14 (20) '2.0'\n-2181C4 Created OS            00 (0) 'MS-DOS'\n-2181C5 Extract Zip Spec      14 (20) '2.0'\n-2181C6 Extract OS            00 (0) 'MS-DOS'\n-2181C7 General Purpose Flag  0808 (2056)\n+21A4EE CENTRAL HEADER #298   02014B50 (33639248)\n+21A4F2 Created Zip Spec      14 (20) '2.0'\n+21A4F3 Created OS            00 (0) 'MS-DOS'\n+21A4F4 Extract Zip Spec      14 (20) '2.0'\n+21A4F5 Extract OS            00 (0) 'MS-DOS'\n+21A4F6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2181C9 Compression Method    0008 (8) 'Deflated'\n-2181CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2181CF CRC                   00000000 (0)\n-2181D3 Compressed Size       00000002 (2)\n-2181D7 Uncompressed Size     00000000 (0)\n-2181DB Filename Length       001F (31)\n-2181DD Extra Length          0000 (0)\n-2181DF Comment Length        0000 (0)\n-2181E1 Disk Start            0000 (0)\n-2181E3 Int File Attributes   0000 (0)\n+21A4F8 Compression Method    0008 (8) 'Deflated'\n+21A4FA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A4FE CRC                   BD63F8B8 (3177445560)\n+21A502 Compressed Size       000005F8 (1528)\n+21A506 Uncompressed Size     000013BA (5050)\n+21A50A Filename Length       003C (60)\n+21A50C Extra Length          0000 (0)\n+21A50E Comment Length        0000 (0)\n+21A510 Disk Start            0000 (0)\n+21A512 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2181E5 Ext File Attributes   00000000 (0)\n-2181E9 Local Header Offset   00033EAB (212651)\n-2181ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A514 Ext File Attributes   00000000 (0)\n+21A518 Local Header Offset   000569AD (354733)\n+21A51C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2181ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A51C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21820C CENTRAL HEADER #299   02014B50 (33639248)\n-218210 Created Zip Spec      14 (20) '2.0'\n-218211 Created OS            00 (0) 'MS-DOS'\n-218212 Extract Zip Spec      14 (20) '2.0'\n-218213 Extract OS            00 (0) 'MS-DOS'\n-218214 General Purpose Flag  0808 (2056)\n+21A558 CENTRAL HEADER #299   02014B50 (33639248)\n+21A55C Created Zip Spec      14 (20) '2.0'\n+21A55D Created OS            00 (0) 'MS-DOS'\n+21A55E Extract Zip Spec      14 (20) '2.0'\n+21A55F Extract OS            00 (0) 'MS-DOS'\n+21A560 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218216 Compression Method    0008 (8) 'Deflated'\n-218218 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21821C CRC                   D4A82FA9 (3567792041)\n-218220 Compressed Size       000005B0 (1456)\n-218224 Uncompressed Size     000011C8 (4552)\n-218228 Filename Length       0034 (52)\n-21822A Extra Length          0000 (0)\n-21822C Comment Length        0000 (0)\n-21822E Disk Start            0000 (0)\n-218230 Int File Attributes   0000 (0)\n+21A562 Compression Method    0008 (8) 'Deflated'\n+21A564 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A568 CRC                   C96B89A9 (3379268009)\n+21A56C Compressed Size       0000053B (1339)\n+21A570 Uncompressed Size     00000DB0 (3504)\n+21A574 Filename Length       003F (63)\n+21A576 Extra Length          0000 (0)\n+21A578 Comment Length        0000 (0)\n+21A57A Disk Start            0000 (0)\n+21A57C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218232 Ext File Attributes   00000000 (0)\n-218236 Local Header Offset   00033EFA (212730)\n-21823A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A57E Ext File Attributes   00000000 (0)\n+21A582 Local Header Offset   0005700F (356367)\n+21A586 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21823A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A586: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21826E CENTRAL HEADER #300   02014B50 (33639248)\n-218272 Created Zip Spec      14 (20) '2.0'\n-218273 Created OS            00 (0) 'MS-DOS'\n-218274 Extract Zip Spec      14 (20) '2.0'\n-218275 Extract OS            00 (0) 'MS-DOS'\n-218276 General Purpose Flag  0808 (2056)\n+21A5C5 CENTRAL HEADER #300   02014B50 (33639248)\n+21A5C9 Created Zip Spec      14 (20) '2.0'\n+21A5CA Created OS            00 (0) 'MS-DOS'\n+21A5CB Extract Zip Spec      14 (20) '2.0'\n+21A5CC Extract OS            00 (0) 'MS-DOS'\n+21A5CD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218278 Compression Method    0008 (8) 'Deflated'\n-21827A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21827E CRC                   3F3FCF79 (1061146489)\n-218282 Compressed Size       00000548 (1352)\n-218286 Uncompressed Size     0000135C (4956)\n-21828A Filename Length       0031 (49)\n-21828C Extra Length          0000 (0)\n-21828E Comment Length        0000 (0)\n-218290 Disk Start            0000 (0)\n-218292 Int File Attributes   0000 (0)\n+21A5CF Compression Method    0008 (8) 'Deflated'\n+21A5D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A5D5 CRC                   3FE3ACCB (1071885515)\n+21A5D9 Compressed Size       00000B15 (2837)\n+21A5DD Uncompressed Size     00002CC5 (11461)\n+21A5E1 Filename Length       0039 (57)\n+21A5E3 Extra Length          0000 (0)\n+21A5E5 Comment Length        0000 (0)\n+21A5E7 Disk Start            0000 (0)\n+21A5E9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218294 Ext File Attributes   00000000 (0)\n-218298 Local Header Offset   0003450C (214284)\n-21829C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A5EB Ext File Attributes   00000000 (0)\n+21A5EF Local Header Offset   000575B7 (357815)\n+21A5F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21829C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A5F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2182CD CENTRAL HEADER #301   02014B50 (33639248)\n-2182D1 Created Zip Spec      14 (20) '2.0'\n-2182D2 Created OS            00 (0) 'MS-DOS'\n-2182D3 Extract Zip Spec      14 (20) '2.0'\n-2182D4 Extract OS            00 (0) 'MS-DOS'\n-2182D5 General Purpose Flag  0808 (2056)\n+21A62C CENTRAL HEADER #301   02014B50 (33639248)\n+21A630 Created Zip Spec      14 (20) '2.0'\n+21A631 Created OS            00 (0) 'MS-DOS'\n+21A632 Extract Zip Spec      14 (20) '2.0'\n+21A633 Extract OS            00 (0) 'MS-DOS'\n+21A634 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2182D7 Compression Method    0008 (8) 'Deflated'\n-2182D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2182DD CRC                   F95CA75C (4183598940)\n-2182E1 Compressed Size       0000056B (1387)\n-2182E5 Uncompressed Size     0000115B (4443)\n-2182E9 Filename Length       002F (47)\n-2182EB Extra Length          0000 (0)\n-2182ED Comment Length        0000 (0)\n-2182EF Disk Start            0000 (0)\n-2182F1 Int File Attributes   0000 (0)\n+21A636 Compression Method    0008 (8) 'Deflated'\n+21A638 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A63C CRC                   00000000 (0)\n+21A640 Compressed Size       00000002 (2)\n+21A644 Uncompressed Size     00000000 (0)\n+21A648 Filename Length       001F (31)\n+21A64A Extra Length          0000 (0)\n+21A64C Comment Length        0000 (0)\n+21A64E Disk Start            0000 (0)\n+21A650 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2182F3 Ext File Attributes   00000000 (0)\n-2182F7 Local Header Offset   00034AB3 (215731)\n-2182FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A652 Ext File Attributes   00000000 (0)\n+21A656 Local Header Offset   00058133 (360755)\n+21A65A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2182FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A65A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21832A CENTRAL HEADER #302   02014B50 (33639248)\n-21832E Created Zip Spec      14 (20) '2.0'\n-21832F Created OS            00 (0) 'MS-DOS'\n-218330 Extract Zip Spec      14 (20) '2.0'\n-218331 Extract OS            00 (0) 'MS-DOS'\n-218332 General Purpose Flag  0808 (2056)\n+21A679 CENTRAL HEADER #302   02014B50 (33639248)\n+21A67D Created Zip Spec      14 (20) '2.0'\n+21A67E Created OS            00 (0) 'MS-DOS'\n+21A67F Extract Zip Spec      14 (20) '2.0'\n+21A680 Extract OS            00 (0) 'MS-DOS'\n+21A681 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218334 Compression Method    0008 (8) 'Deflated'\n-218336 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21833A CRC                   00000000 (0)\n-21833E Compressed Size       00000002 (2)\n-218342 Uncompressed Size     00000000 (0)\n-218346 Filename Length       0025 (37)\n-218348 Extra Length          0000 (0)\n-21834A Comment Length        0000 (0)\n-21834C Disk Start            0000 (0)\n-21834E Int File Attributes   0000 (0)\n+21A683 Compression Method    0008 (8) 'Deflated'\n+21A685 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A689 CRC                   A81790A7 (2820116647)\n+21A68D Compressed Size       00000596 (1430)\n+21A691 Uncompressed Size     0000117D (4477)\n+21A695 Filename Length       003A (58)\n+21A697 Extra Length          0000 (0)\n+21A699 Comment Length        0000 (0)\n+21A69B Disk Start            0000 (0)\n+21A69D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218350 Ext File Attributes   00000000 (0)\n-218354 Local Header Offset   0003507B (217211)\n-218358 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A69F Ext File Attributes   00000000 (0)\n+21A6A3 Local Header Offset   00058182 (360834)\n+21A6A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218358: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A6A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21837D CENTRAL HEADER #303   02014B50 (33639248)\n-218381 Created Zip Spec      14 (20) '2.0'\n-218382 Created OS            00 (0) 'MS-DOS'\n-218383 Extract Zip Spec      14 (20) '2.0'\n-218384 Extract OS            00 (0) 'MS-DOS'\n-218385 General Purpose Flag  0808 (2056)\n+21A6E1 CENTRAL HEADER #303   02014B50 (33639248)\n+21A6E5 Created Zip Spec      14 (20) '2.0'\n+21A6E6 Created OS            00 (0) 'MS-DOS'\n+21A6E7 Extract Zip Spec      14 (20) '2.0'\n+21A6E8 Extract OS            00 (0) 'MS-DOS'\n+21A6E9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218387 Compression Method    0008 (8) 'Deflated'\n-218389 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21838D CRC                   00000000 (0)\n-218391 Compressed Size       00000002 (2)\n-218395 Uncompressed Size     00000000 (0)\n-218399 Filename Length       002D (45)\n-21839B Extra Length          0000 (0)\n-21839D Comment Length        0000 (0)\n-21839F Disk Start            0000 (0)\n-2183A1 Int File Attributes   0000 (0)\n+21A6EB Compression Method    0008 (8) 'Deflated'\n+21A6ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A6F1 CRC                   AB15E1E2 (2870338018)\n+21A6F5 Compressed Size       000007C7 (1991)\n+21A6F9 Uncompressed Size     00001B78 (7032)\n+21A6FD Filename Length       0031 (49)\n+21A6FF Extra Length          0000 (0)\n+21A701 Comment Length        0000 (0)\n+21A703 Disk Start            0000 (0)\n+21A705 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2183A3 Ext File Attributes   00000000 (0)\n-2183A7 Local Header Offset   000350D0 (217296)\n-2183AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A707 Ext File Attributes   00000000 (0)\n+21A70B Local Header Offset   00058780 (362368)\n+21A70F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2183AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A70F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2183D8 CENTRAL HEADER #304   02014B50 (33639248)\n-2183DC Created Zip Spec      14 (20) '2.0'\n-2183DD Created OS            00 (0) 'MS-DOS'\n-2183DE Extract Zip Spec      14 (20) '2.0'\n-2183DF Extract OS            00 (0) 'MS-DOS'\n-2183E0 General Purpose Flag  0808 (2056)\n+21A740 CENTRAL HEADER #304   02014B50 (33639248)\n+21A744 Created Zip Spec      14 (20) '2.0'\n+21A745 Created OS            00 (0) 'MS-DOS'\n+21A746 Extract Zip Spec      14 (20) '2.0'\n+21A747 Extract OS            00 (0) 'MS-DOS'\n+21A748 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2183E2 Compression Method    0008 (8) 'Deflated'\n-2183E4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2183E8 CRC                   00000000 (0)\n-2183EC Compressed Size       00000002 (2)\n-2183F0 Uncompressed Size     00000000 (0)\n-2183F4 Filename Length       0038 (56)\n-2183F6 Extra Length          0000 (0)\n-2183F8 Comment Length        0000 (0)\n-2183FA Disk Start            0000 (0)\n-2183FC Int File Attributes   0000 (0)\n+21A74A Compression Method    0008 (8) 'Deflated'\n+21A74C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A750 CRC                   7B55AE57 (2069212759)\n+21A754 Compressed Size       000005A3 (1443)\n+21A758 Uncompressed Size     00001330 (4912)\n+21A75C Filename Length       0036 (54)\n+21A75E Extra Length          0000 (0)\n+21A760 Comment Length        0000 (0)\n+21A762 Disk Start            0000 (0)\n+21A764 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2183FE Ext File Attributes   00000000 (0)\n-218402 Local Header Offset   0003512D (217389)\n-218406 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A766 Ext File Attributes   00000000 (0)\n+21A76A Local Header Offset   00058FA6 (364454)\n+21A76E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218406: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A76E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21843E CENTRAL HEADER #305   02014B50 (33639248)\n-218442 Created Zip Spec      14 (20) '2.0'\n-218443 Created OS            00 (0) 'MS-DOS'\n-218444 Extract Zip Spec      14 (20) '2.0'\n-218445 Extract OS            00 (0) 'MS-DOS'\n-218446 General Purpose Flag  0808 (2056)\n+21A7A4 CENTRAL HEADER #305   02014B50 (33639248)\n+21A7A8 Created Zip Spec      14 (20) '2.0'\n+21A7A9 Created OS            00 (0) 'MS-DOS'\n+21A7AA Extract Zip Spec      14 (20) '2.0'\n+21A7AB Extract OS            00 (0) 'MS-DOS'\n+21A7AC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218448 Compression Method    0008 (8) 'Deflated'\n-21844A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21844E CRC                   B8989C24 (3097009188)\n-218452 Compressed Size       00000656 (1622)\n-218456 Uncompressed Size     00001843 (6211)\n-21845A Filename Length       0060 (96)\n-21845C Extra Length          0000 (0)\n-21845E Comment Length        0000 (0)\n-218460 Disk Start            0000 (0)\n-218462 Int File Attributes   0000 (0)\n+21A7AE Compression Method    0008 (8) 'Deflated'\n+21A7B0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A7B4 CRC                   8F24621B (2401526299)\n+21A7B8 Compressed Size       000008E8 (2280)\n+21A7BC Uncompressed Size     000027FE (10238)\n+21A7C0 Filename Length       002F (47)\n+21A7C2 Extra Length          0000 (0)\n+21A7C4 Comment Length        0000 (0)\n+21A7C6 Disk Start            0000 (0)\n+21A7C8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218464 Ext File Attributes   00000000 (0)\n-218468 Local Header Offset   00035195 (217493)\n-21846C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A7CA Ext File Attributes   00000000 (0)\n+21A7CE Local Header Offset   000595AD (365997)\n+21A7D2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21846C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A7D2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2184CC CENTRAL HEADER #306   02014B50 (33639248)\n-2184D0 Created Zip Spec      14 (20) '2.0'\n-2184D1 Created OS            00 (0) 'MS-DOS'\n-2184D2 Extract Zip Spec      14 (20) '2.0'\n-2184D3 Extract OS            00 (0) 'MS-DOS'\n-2184D4 General Purpose Flag  0808 (2056)\n+21A801 CENTRAL HEADER #306   02014B50 (33639248)\n+21A805 Created Zip Spec      14 (20) '2.0'\n+21A806 Created OS            00 (0) 'MS-DOS'\n+21A807 Extract Zip Spec      14 (20) '2.0'\n+21A808 Extract OS            00 (0) 'MS-DOS'\n+21A809 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2184D6 Compression Method    0008 (8) 'Deflated'\n-2184D8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2184DC CRC                   88B1EF9C (2293362588)\n-2184E0 Compressed Size       00000699 (1689)\n-2184E4 Uncompressed Size     00001A70 (6768)\n-2184E8 Filename Length       0060 (96)\n-2184EA Extra Length          0000 (0)\n-2184EC Comment Length        0000 (0)\n-2184EE Disk Start            0000 (0)\n-2184F0 Int File Attributes   0000 (0)\n+21A80B Compression Method    0008 (8) 'Deflated'\n+21A80D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A811 CRC                   2A9E8F07 (715034375)\n+21A815 Compressed Size       0000029C (668)\n+21A819 Uncompressed Size     00000516 (1302)\n+21A81D Filename Length       003C (60)\n+21A81F Extra Length          0000 (0)\n+21A821 Comment Length        0000 (0)\n+21A823 Disk Start            0000 (0)\n+21A825 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2184F2 Ext File Attributes   00000000 (0)\n-2184F6 Local Header Offset   00035879 (219257)\n-2184FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A827 Ext File Attributes   00000000 (0)\n+21A82B Local Header Offset   00059EF2 (368370)\n+21A82F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2184FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A82F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21855A CENTRAL HEADER #307   02014B50 (33639248)\n-21855E Created Zip Spec      14 (20) '2.0'\n-21855F Created OS            00 (0) 'MS-DOS'\n-218560 Extract Zip Spec      14 (20) '2.0'\n-218561 Extract OS            00 (0) 'MS-DOS'\n-218562 General Purpose Flag  0808 (2056)\n+21A86B CENTRAL HEADER #307   02014B50 (33639248)\n+21A86F Created Zip Spec      14 (20) '2.0'\n+21A870 Created OS            00 (0) 'MS-DOS'\n+21A871 Extract Zip Spec      14 (20) '2.0'\n+21A872 Extract OS            00 (0) 'MS-DOS'\n+21A873 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218564 Compression Method    0008 (8) 'Deflated'\n-218566 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21856A CRC                   B78EFF6E (3079602030)\n-21856E Compressed Size       000003CB (971)\n-218572 Uncompressed Size     00000BDD (3037)\n-218576 Filename Length       005C (92)\n-218578 Extra Length          0000 (0)\n-21857A Comment Length        0000 (0)\n-21857C Disk Start            0000 (0)\n-21857E Int File Attributes   0000 (0)\n+21A875 Compression Method    0008 (8) 'Deflated'\n+21A877 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A87B CRC                   C6D0F0BC (3335581884)\n+21A87F Compressed Size       0000034F (847)\n+21A883 Uncompressed Size     000007B0 (1968)\n+21A887 Filename Length       0039 (57)\n+21A889 Extra Length          0000 (0)\n+21A88B Comment Length        0000 (0)\n+21A88D Disk Start            0000 (0)\n+21A88F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218580 Ext File Attributes   00000000 (0)\n-218584 Local Header Offset   00035FA0 (221088)\n-218588 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A891 Ext File Attributes   00000000 (0)\n+21A895 Local Header Offset   0005A1F8 (369144)\n+21A899 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218588: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A899: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2185E4 CENTRAL HEADER #308   02014B50 (33639248)\n-2185E8 Created Zip Spec      14 (20) '2.0'\n-2185E9 Created OS            00 (0) 'MS-DOS'\n-2185EA Extract Zip Spec      14 (20) '2.0'\n-2185EB Extract OS            00 (0) 'MS-DOS'\n-2185EC General Purpose Flag  0808 (2056)\n+21A8D2 CENTRAL HEADER #308   02014B50 (33639248)\n+21A8D6 Created Zip Spec      14 (20) '2.0'\n+21A8D7 Created OS            00 (0) 'MS-DOS'\n+21A8D8 Extract Zip Spec      14 (20) '2.0'\n+21A8D9 Extract OS            00 (0) 'MS-DOS'\n+21A8DA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2185EE Compression Method    0008 (8) 'Deflated'\n-2185F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2185F4 CRC                   F2F49006 (4076113926)\n-2185F8 Compressed Size       0000045B (1115)\n-2185FC Uncompressed Size     00000C34 (3124)\n-218600 Filename Length       005A (90)\n-218602 Extra Length          0000 (0)\n-218604 Comment Length        0000 (0)\n-218606 Disk Start            0000 (0)\n-218608 Int File Attributes   0000 (0)\n+21A8DC Compression Method    0008 (8) 'Deflated'\n+21A8DE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A8E2 CRC                   A545EC4C (2772823116)\n+21A8E6 Compressed Size       0000027C (636)\n+21A8EA Uncompressed Size     000004DD (1245)\n+21A8EE Filename Length       003D (61)\n+21A8F0 Extra Length          0000 (0)\n+21A8F2 Comment Length        0000 (0)\n+21A8F4 Disk Start            0000 (0)\n+21A8F6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21860A Ext File Attributes   00000000 (0)\n-21860E Local Header Offset   000363F5 (222197)\n-218612 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A8F8 Ext File Attributes   00000000 (0)\n+21A8FC Local Header Offset   0005A5AE (370094)\n+21A900 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218612: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A900: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21866C CENTRAL HEADER #309   02014B50 (33639248)\n-218670 Created Zip Spec      14 (20) '2.0'\n-218671 Created OS            00 (0) 'MS-DOS'\n-218672 Extract Zip Spec      14 (20) '2.0'\n-218673 Extract OS            00 (0) 'MS-DOS'\n-218674 General Purpose Flag  0808 (2056)\n+21A93D CENTRAL HEADER #309   02014B50 (33639248)\n+21A941 Created Zip Spec      14 (20) '2.0'\n+21A942 Created OS            00 (0) 'MS-DOS'\n+21A943 Extract Zip Spec      14 (20) '2.0'\n+21A944 Extract OS            00 (0) 'MS-DOS'\n+21A945 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218676 Compression Method    0008 (8) 'Deflated'\n-218678 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21867C CRC                   63E9E69D (1676273309)\n-218680 Compressed Size       0000102B (4139)\n-218684 Uncompressed Size     000048C6 (18630)\n-218688 Filename Length       0061 (97)\n-21868A Extra Length          0000 (0)\n-21868C Comment Length        0000 (0)\n-21868E Disk Start            0000 (0)\n-218690 Int File Attributes   0000 (0)\n+21A947 Compression Method    0008 (8) 'Deflated'\n+21A949 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A94D CRC                   8BA4EDED (2342841837)\n+21A951 Compressed Size       000003C0 (960)\n+21A955 Uncompressed Size     00000A8C (2700)\n+21A959 Filename Length       003B (59)\n+21A95B Extra Length          0000 (0)\n+21A95D Comment Length        0000 (0)\n+21A95F Disk Start            0000 (0)\n+21A961 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218692 Ext File Attributes   00000000 (0)\n-218696 Local Header Offset   000368D8 (223448)\n-21869A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A963 Ext File Attributes   00000000 (0)\n+21A967 Local Header Offset   0005A895 (370837)\n+21A96B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21869A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A96B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2186FB CENTRAL HEADER #310   02014B50 (33639248)\n-2186FF Created Zip Spec      14 (20) '2.0'\n-218700 Created OS            00 (0) 'MS-DOS'\n-218701 Extract Zip Spec      14 (20) '2.0'\n-218702 Extract OS            00 (0) 'MS-DOS'\n-218703 General Purpose Flag  0808 (2056)\n+21A9A6 CENTRAL HEADER #310   02014B50 (33639248)\n+21A9AA Created Zip Spec      14 (20) '2.0'\n+21A9AB Created OS            00 (0) 'MS-DOS'\n+21A9AC Extract Zip Spec      14 (20) '2.0'\n+21A9AD Extract OS            00 (0) 'MS-DOS'\n+21A9AE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218705 Compression Method    0008 (8) 'Deflated'\n-218707 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21870B CRC                   7BF0B1BF (2079371711)\n-21870F Compressed Size       00000814 (2068)\n-218713 Uncompressed Size     00001CDC (7388)\n-218717 Filename Length       0051 (81)\n-218719 Extra Length          0000 (0)\n-21871B Comment Length        0000 (0)\n-21871D Disk Start            0000 (0)\n-21871F Int File Attributes   0000 (0)\n+21A9B0 Compression Method    0008 (8) 'Deflated'\n+21A9B2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21A9B6 CRC                   C8BED78D (3367950221)\n+21A9BA Compressed Size       00000290 (656)\n+21A9BE Uncompressed Size     000004CE (1230)\n+21A9C2 Filename Length       0037 (55)\n+21A9C4 Extra Length          0000 (0)\n+21A9C6 Comment Length        0000 (0)\n+21A9C8 Disk Start            0000 (0)\n+21A9CA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218721 Ext File Attributes   00000000 (0)\n-218725 Local Header Offset   00037992 (227730)\n-218729 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21A9CC Ext File Attributes   00000000 (0)\n+21A9D0 Local Header Offset   0005ACBE (371902)\n+21A9D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218729: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21A9D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21877A CENTRAL HEADER #311   02014B50 (33639248)\n-21877E Created Zip Spec      14 (20) '2.0'\n-21877F Created OS            00 (0) 'MS-DOS'\n-218780 Extract Zip Spec      14 (20) '2.0'\n-218781 Extract OS            00 (0) 'MS-DOS'\n-218782 General Purpose Flag  0808 (2056)\n+21AA0B CENTRAL HEADER #311   02014B50 (33639248)\n+21AA0F Created Zip Spec      14 (20) '2.0'\n+21AA10 Created OS            00 (0) 'MS-DOS'\n+21AA11 Extract Zip Spec      14 (20) '2.0'\n+21AA12 Extract OS            00 (0) 'MS-DOS'\n+21AA13 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218784 Compression Method    0008 (8) 'Deflated'\n-218786 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21878A CRC                   3CA6083C (1017514044)\n-21878E Compressed Size       00000310 (784)\n-218792 Uncompressed Size     00000716 (1814)\n-218796 Filename Length       005F (95)\n-218798 Extra Length          0000 (0)\n-21879A Comment Length        0000 (0)\n-21879C Disk Start            0000 (0)\n-21879E Int File Attributes   0000 (0)\n+21AA15 Compression Method    0008 (8) 'Deflated'\n+21AA17 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21AA1B CRC                   00000000 (0)\n+21AA1F Compressed Size       00000002 (2)\n+21AA23 Uncompressed Size     00000000 (0)\n+21AA27 Filename Length       002C (44)\n+21AA29 Extra Length          0000 (0)\n+21AA2B Comment Length        0000 (0)\n+21AA2D Disk Start            0000 (0)\n+21AA2F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2187A0 Ext File Attributes   00000000 (0)\n-2187A4 Local Header Offset   00038225 (229925)\n-2187A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21AA31 Ext File Attributes   00000000 (0)\n+21AA35 Local Header Offset   0005AFB3 (372659)\n+21AA39 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2187A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21AA39: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-218807 CENTRAL HEADER #312   02014B50 (33639248)\n-21880B Created Zip Spec      14 (20) '2.0'\n-21880C Created OS            00 (0) 'MS-DOS'\n-21880D Extract Zip Spec      14 (20) '2.0'\n-21880E Extract OS            00 (0) 'MS-DOS'\n-21880F General Purpose Flag  0808 (2056)\n+21AA65 CENTRAL HEADER #312   02014B50 (33639248)\n+21AA69 Created Zip Spec      14 (20) '2.0'\n+21AA6A Created OS            00 (0) 'MS-DOS'\n+21AA6B Extract Zip Spec      14 (20) '2.0'\n+21AA6C Extract OS            00 (0) 'MS-DOS'\n+21AA6D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218811 Compression Method    0008 (8) 'Deflated'\n-218813 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-218817 CRC                   87C6FC27 (2277964839)\n-21881B Compressed Size       000004EA (1258)\n-21881F Uncompressed Size     00001175 (4469)\n-218823 Filename Length       0053 (83)\n-218825 Extra Length          0000 (0)\n-218827 Comment Length        0000 (0)\n-218829 Disk Start            0000 (0)\n-21882B Int File Attributes   0000 (0)\n+21AA6F Compression Method    0008 (8) 'Deflated'\n+21AA71 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21AA75 CRC                   8153B7AF (2169747375)\n+21AA79 Compressed Size       00000970 (2416)\n+21AA7D Uncompressed Size     00002780 (10112)\n+21AA81 Filename Length       004D (77)\n+21AA83 Extra Length          0000 (0)\n+21AA85 Comment Length        0000 (0)\n+21AA87 Disk Start            0000 (0)\n+21AA89 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21882D Ext File Attributes   00000000 (0)\n-218831 Local Header Offset   000385C2 (230850)\n-218835 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21AA8B Ext File Attributes   00000000 (0)\n+21AA8F Local Header Offset   0005B00F (372751)\n+21AA93 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218835: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21AA93: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-218888 CENTRAL HEADER #313   02014B50 (33639248)\n-21888C Created Zip Spec      14 (20) '2.0'\n-21888D Created OS            00 (0) 'MS-DOS'\n-21888E Extract Zip Spec      14 (20) '2.0'\n-21888F Extract OS            00 (0) 'MS-DOS'\n-218890 General Purpose Flag  0808 (2056)\n+21AAE0 CENTRAL HEADER #313   02014B50 (33639248)\n+21AAE4 Created Zip Spec      14 (20) '2.0'\n+21AAE5 Created OS            00 (0) 'MS-DOS'\n+21AAE6 Extract Zip Spec      14 (20) '2.0'\n+21AAE7 Extract OS            00 (0) 'MS-DOS'\n+21AAE8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218892 Compression Method    0008 (8) 'Deflated'\n-218894 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-218898 CRC                   DD6B0419 (3714778137)\n-21889C Compressed Size       000011F7 (4599)\n-2188A0 Uncompressed Size     00005649 (22089)\n-2188A4 Filename Length       0056 (86)\n-2188A6 Extra Length          0000 (0)\n-2188A8 Comment Length        0000 (0)\n-2188AA Disk Start            0000 (0)\n-2188AC Int File Attributes   0000 (0)\n+21AAEA Compression Method    0008 (8) 'Deflated'\n+21AAEC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21AAF0 CRC                   B055C4D7 (2958410967)\n+21AAF4 Compressed Size       00000337 (823)\n+21AAF8 Uncompressed Size     000006F6 (1782)\n+21AAFC Filename Length       0054 (84)\n+21AAFE Extra Length          0000 (0)\n+21AB00 Comment Length        0000 (0)\n+21AB02 Disk Start            0000 (0)\n+21AB04 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2188AE Ext File Attributes   00000000 (0)\n-2188B2 Local Header Offset   00038B2D (232237)\n-2188B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21AB06 Ext File Attributes   00000000 (0)\n+21AB0A Local Header Offset   0005B9FA (375290)\n+21AB0E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2188B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21AB0E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21890C CENTRAL HEADER #314   02014B50 (33639248)\n-218910 Created Zip Spec      14 (20) '2.0'\n-218911 Created OS            00 (0) 'MS-DOS'\n-218912 Extract Zip Spec      14 (20) '2.0'\n-218913 Extract OS            00 (0) 'MS-DOS'\n-218914 General Purpose Flag  0808 (2056)\n+21AB62 CENTRAL HEADER #314   02014B50 (33639248)\n+21AB66 Created Zip Spec      14 (20) '2.0'\n+21AB67 Created OS            00 (0) 'MS-DOS'\n+21AB68 Extract Zip Spec      14 (20) '2.0'\n+21AB69 Extract OS            00 (0) 'MS-DOS'\n+21AB6A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218916 Compression Method    0008 (8) 'Deflated'\n-218918 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21891C CRC                   00000000 (0)\n-218920 Compressed Size       00000002 (2)\n-218924 Uncompressed Size     00000000 (0)\n-218928 Filename Length       0034 (52)\n-21892A Extra Length          0000 (0)\n-21892C Comment Length        0000 (0)\n-21892E Disk Start            0000 (0)\n-218930 Int File Attributes   0000 (0)\n+21AB6C Compression Method    0008 (8) 'Deflated'\n+21AB6E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21AB72 CRC                   46172F4A (1175924554)\n+21AB76 Compressed Size       0000024D (589)\n+21AB7A Uncompressed Size     0000046D (1133)\n+21AB7E Filename Length       0041 (65)\n+21AB80 Extra Length          0000 (0)\n+21AB82 Comment Length        0000 (0)\n+21AB84 Disk Start            0000 (0)\n+21AB86 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218932 Ext File Attributes   00000000 (0)\n-218936 Local Header Offset   00039DA8 (236968)\n-21893A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21AB88 Ext File Attributes   00000000 (0)\n+21AB8C Local Header Offset   0005BDB3 (376243)\n+21AB90 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21893A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21AB90: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21896E CENTRAL HEADER #315   02014B50 (33639248)\n-218972 Created Zip Spec      14 (20) '2.0'\n-218973 Created OS            00 (0) 'MS-DOS'\n-218974 Extract Zip Spec      14 (20) '2.0'\n-218975 Extract OS            00 (0) 'MS-DOS'\n-218976 General Purpose Flag  0808 (2056)\n+21ABD1 CENTRAL HEADER #315   02014B50 (33639248)\n+21ABD5 Created Zip Spec      14 (20) '2.0'\n+21ABD6 Created OS            00 (0) 'MS-DOS'\n+21ABD7 Extract Zip Spec      14 (20) '2.0'\n+21ABD8 Extract OS            00 (0) 'MS-DOS'\n+21ABD9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218978 Compression Method    0008 (8) 'Deflated'\n-21897A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21897E CRC                   B68D8917 (3062728983)\n-218982 Compressed Size       000002D4 (724)\n-218986 Uncompressed Size     00000641 (1601)\n-21898A Filename Length       005E (94)\n-21898C Extra Length          0000 (0)\n-21898E Comment Length        0000 (0)\n-218990 Disk Start            0000 (0)\n-218992 Int File Attributes   0000 (0)\n+21ABDB Compression Method    0008 (8) 'Deflated'\n+21ABDD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21ABE1 CRC                   D56D83FB (3580724219)\n+21ABE5 Compressed Size       000003F6 (1014)\n+21ABE9 Uncompressed Size     00000B69 (2921)\n+21ABED Filename Length       0043 (67)\n+21ABEF Extra Length          0000 (0)\n+21ABF1 Comment Length        0000 (0)\n+21ABF3 Disk Start            0000 (0)\n+21ABF5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218994 Ext File Attributes   00000000 (0)\n-218998 Local Header Offset   00039E0C (237068)\n-21899C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21ABF7 Ext File Attributes   00000000 (0)\n+21ABFB Local Header Offset   0005C06F (376943)\n+21ABFF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21899C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21ABFF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2189FA CENTRAL HEADER #316   02014B50 (33639248)\n-2189FE Created Zip Spec      14 (20) '2.0'\n-2189FF Created OS            00 (0) 'MS-DOS'\n-218A00 Extract Zip Spec      14 (20) '2.0'\n-218A01 Extract OS            00 (0) 'MS-DOS'\n-218A02 General Purpose Flag  0808 (2056)\n+21AC42 CENTRAL HEADER #316   02014B50 (33639248)\n+21AC46 Created Zip Spec      14 (20) '2.0'\n+21AC47 Created OS            00 (0) 'MS-DOS'\n+21AC48 Extract Zip Spec      14 (20) '2.0'\n+21AC49 Extract OS            00 (0) 'MS-DOS'\n+21AC4A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218A04 Compression Method    0008 (8) 'Deflated'\n-218A06 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-218A0A CRC                   919401C9 (2442396105)\n-218A0E Compressed Size       000005E6 (1510)\n-218A12 Uncompressed Size     00001153 (4435)\n-218A16 Filename Length       0069 (105)\n-218A18 Extra Length          0000 (0)\n-218A1A Comment Length        0000 (0)\n-218A1C Disk Start            0000 (0)\n-218A1E Int File Attributes   0000 (0)\n+21AC4C Compression Method    0008 (8) 'Deflated'\n+21AC4E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21AC52 CRC                   69A63658 (1772500568)\n+21AC56 Compressed Size       000002B1 (689)\n+21AC5A Uncompressed Size     00000532 (1330)\n+21AC5E Filename Length       0046 (70)\n+21AC60 Extra Length          0000 (0)\n+21AC62 Comment Length        0000 (0)\n+21AC64 Disk Start            0000 (0)\n+21AC66 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218A20 Ext File Attributes   00000000 (0)\n-218A24 Local Header Offset   0003A16C (237932)\n-218A28 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21AC68 Ext File Attributes   00000000 (0)\n+21AC6C Local Header Offset   0005C4D6 (378070)\n+21AC70 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218A28: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21AC70: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-218A91 CENTRAL HEADER #317   02014B50 (33639248)\n-218A95 Created Zip Spec      14 (20) '2.0'\n-218A96 Created OS            00 (0) 'MS-DOS'\n-218A97 Extract Zip Spec      14 (20) '2.0'\n-218A98 Extract OS            00 (0) 'MS-DOS'\n-218A99 General Purpose Flag  0808 (2056)\n+21ACB6 CENTRAL HEADER #317   02014B50 (33639248)\n+21ACBA Created Zip Spec      14 (20) '2.0'\n+21ACBB Created OS            00 (0) 'MS-DOS'\n+21ACBC Extract Zip Spec      14 (20) '2.0'\n+21ACBD Extract OS            00 (0) 'MS-DOS'\n+21ACBE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218A9B Compression Method    0008 (8) 'Deflated'\n-218A9D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-218AA1 CRC                   587421D1 (1484005841)\n-218AA5 Compressed Size       000006D1 (1745)\n-218AA9 Uncompressed Size     000015AC (5548)\n-218AAD Filename Length       0064 (100)\n-218AAF Extra Length          0000 (0)\n-218AB1 Comment Length        0000 (0)\n-218AB3 Disk Start            0000 (0)\n-218AB5 Int File Attributes   0000 (0)\n+21ACC0 Compression Method    0008 (8) 'Deflated'\n+21ACC2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21ACC6 CRC                   01D091A7 (30445991)\n+21ACCA Compressed Size       0000025B (603)\n+21ACCE Uncompressed Size     00000460 (1120)\n+21ACD2 Filename Length       003A (58)\n+21ACD4 Extra Length          0000 (0)\n+21ACD6 Comment Length        0000 (0)\n+21ACD8 Disk Start            0000 (0)\n+21ACDA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218AB7 Ext File Attributes   00000000 (0)\n-218ABB Local Header Offset   0003A7E9 (239593)\n-218ABF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21ACDC Ext File Attributes   00000000 (0)\n+21ACE0 Local Header Offset   0005C7FB (378875)\n+21ACE4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218ABF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21ACE4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-218B23 CENTRAL HEADER #318   02014B50 (33639248)\n-218B27 Created Zip Spec      14 (20) '2.0'\n-218B28 Created OS            00 (0) 'MS-DOS'\n-218B29 Extract Zip Spec      14 (20) '2.0'\n-218B2A Extract OS            00 (0) 'MS-DOS'\n-218B2B General Purpose Flag  0808 (2056)\n+21AD1E CENTRAL HEADER #318   02014B50 (33639248)\n+21AD22 Created Zip Spec      14 (20) '2.0'\n+21AD23 Created OS            00 (0) 'MS-DOS'\n+21AD24 Extract Zip Spec      14 (20) '2.0'\n+21AD25 Extract OS            00 (0) 'MS-DOS'\n+21AD26 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218B2D Compression Method    0008 (8) 'Deflated'\n-218B2F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-218B33 CRC                   00000000 (0)\n-218B37 Compressed Size       00000002 (2)\n-218B3B Uncompressed Size     00000000 (0)\n-218B3F Filename Length       0027 (39)\n-218B41 Extra Length          0000 (0)\n-218B43 Comment Length        0000 (0)\n-218B45 Disk Start            0000 (0)\n-218B47 Int File Attributes   0000 (0)\n+21AD28 Compression Method    0008 (8) 'Deflated'\n+21AD2A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21AD2E CRC                   FCBE727C (4240339580)\n+21AD32 Compressed Size       000008D8 (2264)\n+21AD36 Uncompressed Size     000024E6 (9446)\n+21AD3A Filename Length       0045 (69)\n+21AD3C Extra Length          0000 (0)\n+21AD3E Comment Length        0000 (0)\n+21AD40 Disk Start            0000 (0)\n+21AD42 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218B49 Ext File Attributes   00000000 (0)\n-218B4D Local Header Offset   0003AF4C (241484)\n-218B51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21AD44 Ext File Attributes   00000000 (0)\n+21AD48 Local Header Offset   0005CABE (379582)\n+21AD4C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218B51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21AD4C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-218B78 CENTRAL HEADER #319   02014B50 (33639248)\n-218B7C Created Zip Spec      14 (20) '2.0'\n-218B7D Created OS            00 (0) 'MS-DOS'\n-218B7E Extract Zip Spec      14 (20) '2.0'\n-218B7F Extract OS            00 (0) 'MS-DOS'\n-218B80 General Purpose Flag  0808 (2056)\n+21AD91 CENTRAL HEADER #319   02014B50 (33639248)\n+21AD95 Created Zip Spec      14 (20) '2.0'\n+21AD96 Created OS            00 (0) 'MS-DOS'\n+21AD97 Extract Zip Spec      14 (20) '2.0'\n+21AD98 Extract OS            00 (0) 'MS-DOS'\n+21AD99 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218B82 Compression Method    0008 (8) 'Deflated'\n-218B84 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-218B88 CRC                   CB41069C (3410036380)\n-218B8C Compressed Size       0000039D (925)\n-218B90 Uncompressed Size     00000A62 (2658)\n-218B94 Filename Length       004D (77)\n-218B96 Extra Length          0000 (0)\n-218B98 Comment Length        0000 (0)\n-218B9A Disk Start            0000 (0)\n-218B9C Int File Attributes   0000 (0)\n+21AD9B Compression Method    0008 (8) 'Deflated'\n+21AD9D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21ADA1 CRC                   E7C23E33 (3888266803)\n+21ADA5 Compressed Size       00000343 (835)\n+21ADA9 Uncompressed Size     000007F1 (2033)\n+21ADAD Filename Length       004C (76)\n+21ADAF Extra Length          0000 (0)\n+21ADB1 Comment Length        0000 (0)\n+21ADB3 Disk Start            0000 (0)\n+21ADB5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218B9E Ext File Attributes   00000000 (0)\n-218BA2 Local Header Offset   0003AFA3 (241571)\n-218BA6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21ADB7 Ext File Attributes   00000000 (0)\n+21ADBB Local Header Offset   0005D409 (381961)\n+21ADBF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218BA6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21ADBF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-218BF3 CENTRAL HEADER #320   02014B50 (33639248)\n-218BF7 Created Zip Spec      14 (20) '2.0'\n-218BF8 Created OS            00 (0) 'MS-DOS'\n-218BF9 Extract Zip Spec      14 (20) '2.0'\n-218BFA Extract OS            00 (0) 'MS-DOS'\n-218BFB General Purpose Flag  0808 (2056)\n+21AE0B CENTRAL HEADER #320   02014B50 (33639248)\n+21AE0F Created Zip Spec      14 (20) '2.0'\n+21AE10 Created OS            00 (0) 'MS-DOS'\n+21AE11 Extract Zip Spec      14 (20) '2.0'\n+21AE12 Extract OS            00 (0) 'MS-DOS'\n+21AE13 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218BFD Compression Method    0008 (8) 'Deflated'\n-218BFF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-218C03 CRC                   22C199A6 (583113126)\n-218C07 Compressed Size       00000405 (1029)\n-218C0B Uncompressed Size     00000C25 (3109)\n-218C0F Filename Length       004D (77)\n-218C11 Extra Length          0000 (0)\n-218C13 Comment Length        0000 (0)\n-218C15 Disk Start            0000 (0)\n-218C17 Int File Attributes   0000 (0)\n+21AE15 Compression Method    0008 (8) 'Deflated'\n+21AE17 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21AE1B CRC                   A4ED9691 (2767034001)\n+21AE1F Compressed Size       00000739 (1849)\n+21AE23 Uncompressed Size     00001C35 (7221)\n+21AE27 Filename Length       004D (77)\n+21AE29 Extra Length          0000 (0)\n+21AE2B Comment Length        0000 (0)\n+21AE2D Disk Start            0000 (0)\n+21AE2F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218C19 Ext File Attributes   00000000 (0)\n-218C1D Local Header Offset   0003B3BB (242619)\n-218C21 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21AE31 Ext File Attributes   00000000 (0)\n+21AE35 Local Header Offset   0005D7C6 (382918)\n+21AE39 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218C21: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21AE39: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-218C6E CENTRAL HEADER #321   02014B50 (33639248)\n-218C72 Created Zip Spec      14 (20) '2.0'\n-218C73 Created OS            00 (0) 'MS-DOS'\n-218C74 Extract Zip Spec      14 (20) '2.0'\n-218C75 Extract OS            00 (0) 'MS-DOS'\n-218C76 General Purpose Flag  0808 (2056)\n+21AE86 CENTRAL HEADER #321   02014B50 (33639248)\n+21AE8A Created Zip Spec      14 (20) '2.0'\n+21AE8B Created OS            00 (0) 'MS-DOS'\n+21AE8C Extract Zip Spec      14 (20) '2.0'\n+21AE8D Extract OS            00 (0) 'MS-DOS'\n+21AE8E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218C78 Compression Method    0008 (8) 'Deflated'\n-218C7A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-218C7E CRC                   7440B75F (1950398303)\n-218C82 Compressed Size       000002DC (732)\n-218C86 Uncompressed Size     00000743 (1859)\n-218C8A Filename Length       0058 (88)\n-218C8C Extra Length          0000 (0)\n-218C8E Comment Length        0000 (0)\n-218C90 Disk Start            0000 (0)\n-218C92 Int File Attributes   0000 (0)\n+21AE90 Compression Method    0008 (8) 'Deflated'\n+21AE92 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21AE96 CRC                   00000000 (0)\n+21AE9A Compressed Size       00000002 (2)\n+21AE9E Uncompressed Size     00000000 (0)\n+21AEA2 Filename Length       0031 (49)\n+21AEA4 Extra Length          0000 (0)\n+21AEA6 Comment Length        0000 (0)\n+21AEA8 Disk Start            0000 (0)\n+21AEAA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218C94 Ext File Attributes   00000000 (0)\n-218C98 Local Header Offset   0003B83B (243771)\n-218C9C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21AEAC Ext File Attributes   00000000 (0)\n+21AEB0 Local Header Offset   0005DF7A (384890)\n+21AEB4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218C9C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21AEB4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-218CF4 CENTRAL HEADER #322   02014B50 (33639248)\n-218CF8 Created Zip Spec      14 (20) '2.0'\n-218CF9 Created OS            00 (0) 'MS-DOS'\n-218CFA Extract Zip Spec      14 (20) '2.0'\n-218CFB Extract OS            00 (0) 'MS-DOS'\n-218CFC General Purpose Flag  0808 (2056)\n+21AEE5 CENTRAL HEADER #322   02014B50 (33639248)\n+21AEE9 Created Zip Spec      14 (20) '2.0'\n+21AEEA Created OS            00 (0) 'MS-DOS'\n+21AEEB Extract Zip Spec      14 (20) '2.0'\n+21AEEC Extract OS            00 (0) 'MS-DOS'\n+21AEED General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218CFE Compression Method    0008 (8) 'Deflated'\n-218D00 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-218D04 CRC                   D92B8674 (3643508340)\n-218D08 Compressed Size       00000497 (1175)\n-218D0C Uncompressed Size     00000EAC (3756)\n-218D10 Filename Length       0056 (86)\n-218D12 Extra Length          0000 (0)\n-218D14 Comment Length        0000 (0)\n-218D16 Disk Start            0000 (0)\n-218D18 Int File Attributes   0000 (0)\n+21AEEF Compression Method    0008 (8) 'Deflated'\n+21AEF1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21AEF5 CRC                   BAE14165 (3135324517)\n+21AEF9 Compressed Size       00001488 (5256)\n+21AEFD Uncompressed Size     00005A88 (23176)\n+21AF01 Filename Length       0054 (84)\n+21AF03 Extra Length          0000 (0)\n+21AF05 Comment Length        0000 (0)\n+21AF07 Disk Start            0000 (0)\n+21AF09 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218D1A Ext File Attributes   00000000 (0)\n-218D1E Local Header Offset   0003BB9D (244637)\n-218D22 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21AF0B Ext File Attributes   00000000 (0)\n+21AF0F Local Header Offset   0005DFDB (384987)\n+21AF13 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218D22: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21AF13: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-218D78 CENTRAL HEADER #323   02014B50 (33639248)\n-218D7C Created Zip Spec      14 (20) '2.0'\n-218D7D Created OS            00 (0) 'MS-DOS'\n-218D7E Extract Zip Spec      14 (20) '2.0'\n-218D7F Extract OS            00 (0) 'MS-DOS'\n-218D80 General Purpose Flag  0808 (2056)\n+21AF67 CENTRAL HEADER #323   02014B50 (33639248)\n+21AF6B Created Zip Spec      14 (20) '2.0'\n+21AF6C Created OS            00 (0) 'MS-DOS'\n+21AF6D Extract Zip Spec      14 (20) '2.0'\n+21AF6E Extract OS            00 (0) 'MS-DOS'\n+21AF6F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218D82 Compression Method    0008 (8) 'Deflated'\n-218D84 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-218D88 CRC                   00000000 (0)\n-218D8C Compressed Size       00000002 (2)\n-218D90 Uncompressed Size     00000000 (0)\n-218D94 Filename Length       0032 (50)\n-218D96 Extra Length          0000 (0)\n-218D98 Comment Length        0000 (0)\n-218D9A Disk Start            0000 (0)\n-218D9C Int File Attributes   0000 (0)\n+21AF71 Compression Method    0008 (8) 'Deflated'\n+21AF73 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21AF77 CRC                   BA62C70E (3127035662)\n+21AF7B Compressed Size       000002A4 (676)\n+21AF7F Uncompressed Size     000005F2 (1522)\n+21AF83 Filename Length       005B (91)\n+21AF85 Extra Length          0000 (0)\n+21AF87 Comment Length        0000 (0)\n+21AF89 Disk Start            0000 (0)\n+21AF8B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218D9E Ext File Attributes   00000000 (0)\n-218DA2 Local Header Offset   0003C0B8 (245944)\n-218DA6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21AF8D Ext File Attributes   00000000 (0)\n+21AF91 Local Header Offset   0005F4E5 (390373)\n+21AF95 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218DA6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21AF95: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-218DD8 CENTRAL HEADER #324   02014B50 (33639248)\n-218DDC Created Zip Spec      14 (20) '2.0'\n-218DDD Created OS            00 (0) 'MS-DOS'\n-218DDE Extract Zip Spec      14 (20) '2.0'\n-218DDF Extract OS            00 (0) 'MS-DOS'\n-218DE0 General Purpose Flag  0808 (2056)\n+21AFF0 CENTRAL HEADER #324   02014B50 (33639248)\n+21AFF4 Created Zip Spec      14 (20) '2.0'\n+21AFF5 Created OS            00 (0) 'MS-DOS'\n+21AFF6 Extract Zip Spec      14 (20) '2.0'\n+21AFF7 Extract OS            00 (0) 'MS-DOS'\n+21AFF8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218DE2 Compression Method    0008 (8) 'Deflated'\n-218DE4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-218DE8 CRC                   E1ADA7E4 (3786254308)\n-218DEC Compressed Size       000003CB (971)\n-218DF0 Uncompressed Size     00000A96 (2710)\n-218DF4 Filename Length       005A (90)\n-218DF6 Extra Length          0000 (0)\n-218DF8 Comment Length        0000 (0)\n-218DFA Disk Start            0000 (0)\n-218DFC Int File Attributes   0000 (0)\n+21AFFA Compression Method    0008 (8) 'Deflated'\n+21AFFC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B000 CRC                   00000000 (0)\n+21B004 Compressed Size       00000002 (2)\n+21B008 Uncompressed Size     00000000 (0)\n+21B00C Filename Length       0030 (48)\n+21B00E Extra Length          0000 (0)\n+21B010 Comment Length        0000 (0)\n+21B012 Disk Start            0000 (0)\n+21B014 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218DFE Ext File Attributes   00000000 (0)\n-218E02 Local Header Offset   0003C11A (246042)\n-218E06 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B016 Ext File Attributes   00000000 (0)\n+21B01A Local Header Offset   0005F812 (391186)\n+21B01E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218E06: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B01E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-218E60 CENTRAL HEADER #325   02014B50 (33639248)\n-218E64 Created Zip Spec      14 (20) '2.0'\n-218E65 Created OS            00 (0) 'MS-DOS'\n-218E66 Extract Zip Spec      14 (20) '2.0'\n-218E67 Extract OS            00 (0) 'MS-DOS'\n-218E68 General Purpose Flag  0808 (2056)\n+21B04E CENTRAL HEADER #325   02014B50 (33639248)\n+21B052 Created Zip Spec      14 (20) '2.0'\n+21B053 Created OS            00 (0) 'MS-DOS'\n+21B054 Extract Zip Spec      14 (20) '2.0'\n+21B055 Extract OS            00 (0) 'MS-DOS'\n+21B056 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218E6A Compression Method    0008 (8) 'Deflated'\n-218E6C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-218E70 CRC                   041B9E71 (68918897)\n-218E74 Compressed Size       00000455 (1109)\n-218E78 Uncompressed Size     00000ACF (2767)\n-218E7C Filename Length       0049 (73)\n-218E7E Extra Length          0000 (0)\n-218E80 Comment Length        0000 (0)\n-218E82 Disk Start            0000 (0)\n-218E84 Int File Attributes   0000 (0)\n+21B058 Compression Method    0008 (8) 'Deflated'\n+21B05A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B05E CRC                   B653D686 (3058947718)\n+21B062 Compressed Size       0000037B (891)\n+21B066 Uncompressed Size     000008EF (2287)\n+21B06A Filename Length       004C (76)\n+21B06C Extra Length          0000 (0)\n+21B06E Comment Length        0000 (0)\n+21B070 Disk Start            0000 (0)\n+21B072 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218E86 Ext File Attributes   00000000 (0)\n-218E8A Local Header Offset   0003C56D (247149)\n-218E8E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B074 Ext File Attributes   00000000 (0)\n+21B078 Local Header Offset   0005F872 (391282)\n+21B07C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218E8E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B07C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-218ED7 CENTRAL HEADER #326   02014B50 (33639248)\n-218EDB Created Zip Spec      14 (20) '2.0'\n-218EDC Created OS            00 (0) 'MS-DOS'\n-218EDD Extract Zip Spec      14 (20) '2.0'\n-218EDE Extract OS            00 (0) 'MS-DOS'\n-218EDF General Purpose Flag  0808 (2056)\n+21B0C8 CENTRAL HEADER #326   02014B50 (33639248)\n+21B0CC Created Zip Spec      14 (20) '2.0'\n+21B0CD Created OS            00 (0) 'MS-DOS'\n+21B0CE Extract Zip Spec      14 (20) '2.0'\n+21B0CF Extract OS            00 (0) 'MS-DOS'\n+21B0D0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218EE1 Compression Method    0008 (8) 'Deflated'\n-218EE3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-218EE7 CRC                   9BFB49A5 (2616936869)\n-218EEB Compressed Size       00000571 (1393)\n-218EEF Uncompressed Size     00001171 (4465)\n-218EF3 Filename Length       0052 (82)\n-218EF5 Extra Length          0000 (0)\n-218EF7 Comment Length        0000 (0)\n-218EF9 Disk Start            0000 (0)\n-218EFB Int File Attributes   0000 (0)\n+21B0D2 Compression Method    0008 (8) 'Deflated'\n+21B0D4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B0D8 CRC                   0495D293 (76927635)\n+21B0DC Compressed Size       0000027B (635)\n+21B0E0 Uncompressed Size     00000545 (1349)\n+21B0E4 Filename Length       0053 (83)\n+21B0E6 Extra Length          0000 (0)\n+21B0E8 Comment Length        0000 (0)\n+21B0EA Disk Start            0000 (0)\n+21B0EC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218EFD Ext File Attributes   00000000 (0)\n-218F01 Local Header Offset   0003CA39 (248377)\n-218F05 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B0EE Ext File Attributes   00000000 (0)\n+21B0F2 Local Header Offset   0005FC67 (392295)\n+21B0F6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218F05: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B0F6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-218F57 CENTRAL HEADER #327   02014B50 (33639248)\n-218F5B Created Zip Spec      14 (20) '2.0'\n-218F5C Created OS            00 (0) 'MS-DOS'\n-218F5D Extract Zip Spec      14 (20) '2.0'\n-218F5E Extract OS            00 (0) 'MS-DOS'\n-218F5F General Purpose Flag  0808 (2056)\n+21B149 CENTRAL HEADER #327   02014B50 (33639248)\n+21B14D Created Zip Spec      14 (20) '2.0'\n+21B14E Created OS            00 (0) 'MS-DOS'\n+21B14F Extract Zip Spec      14 (20) '2.0'\n+21B150 Extract OS            00 (0) 'MS-DOS'\n+21B151 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218F61 Compression Method    0008 (8) 'Deflated'\n-218F63 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-218F67 CRC                   7378DDAE (1937300910)\n-218F6B Compressed Size       0000042E (1070)\n-218F6F Uncompressed Size     000012B5 (4789)\n-218F73 Filename Length       004F (79)\n-218F75 Extra Length          0000 (0)\n-218F77 Comment Length        0000 (0)\n-218F79 Disk Start            0000 (0)\n-218F7B Int File Attributes   0000 (0)\n+21B153 Compression Method    0008 (8) 'Deflated'\n+21B155 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B159 CRC                   00000000 (0)\n+21B15D Compressed Size       00000002 (2)\n+21B161 Uncompressed Size     00000000 (0)\n+21B165 Filename Length       0034 (52)\n+21B167 Extra Length          0000 (0)\n+21B169 Comment Length        0000 (0)\n+21B16B Disk Start            0000 (0)\n+21B16D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218F7D Ext File Attributes   00000000 (0)\n-218F81 Local Header Offset   0003D02A (249898)\n-218F85 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B16F Ext File Attributes   00000000 (0)\n+21B173 Local Header Offset   0005FF63 (393059)\n+21B177 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x218F85: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B177: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-218FD4 CENTRAL HEADER #328   02014B50 (33639248)\n-218FD8 Created Zip Spec      14 (20) '2.0'\n-218FD9 Created OS            00 (0) 'MS-DOS'\n-218FDA Extract Zip Spec      14 (20) '2.0'\n-218FDB Extract OS            00 (0) 'MS-DOS'\n-218FDC General Purpose Flag  0808 (2056)\n+21B1AB CENTRAL HEADER #328   02014B50 (33639248)\n+21B1AF Created Zip Spec      14 (20) '2.0'\n+21B1B0 Created OS            00 (0) 'MS-DOS'\n+21B1B1 Extract Zip Spec      14 (20) '2.0'\n+21B1B2 Extract OS            00 (0) 'MS-DOS'\n+21B1B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-218FDE Compression Method    0008 (8) 'Deflated'\n-218FE0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-218FE4 CRC                   AC9AB837 (2895820855)\n-218FE8 Compressed Size       0000046F (1135)\n-218FEC Uncompressed Size     00000C64 (3172)\n-218FF0 Filename Length       0058 (88)\n-218FF2 Extra Length          0000 (0)\n-218FF4 Comment Length        0000 (0)\n-218FF6 Disk Start            0000 (0)\n-218FF8 Int File Attributes   0000 (0)\n+21B1B5 Compression Method    0008 (8) 'Deflated'\n+21B1B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B1BB CRC                   2171436F (561070959)\n+21B1BF Compressed Size       0000049C (1180)\n+21B1C3 Uncompressed Size     00000FAF (4015)\n+21B1C7 Filename Length       0056 (86)\n+21B1C9 Extra Length          0000 (0)\n+21B1CB Comment Length        0000 (0)\n+21B1CD Disk Start            0000 (0)\n+21B1CF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-218FFA Ext File Attributes   00000000 (0)\n-218FFE Local Header Offset   0003D4D5 (251093)\n-219002 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B1D1 Ext File Attributes   00000000 (0)\n+21B1D5 Local Header Offset   0005FFC7 (393159)\n+21B1D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219002: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B1D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21905A CENTRAL HEADER #329   02014B50 (33639248)\n-21905E Created Zip Spec      14 (20) '2.0'\n-21905F Created OS            00 (0) 'MS-DOS'\n-219060 Extract Zip Spec      14 (20) '2.0'\n-219061 Extract OS            00 (0) 'MS-DOS'\n-219062 General Purpose Flag  0808 (2056)\n+21B22F CENTRAL HEADER #329   02014B50 (33639248)\n+21B233 Created Zip Spec      14 (20) '2.0'\n+21B234 Created OS            00 (0) 'MS-DOS'\n+21B235 Extract Zip Spec      14 (20) '2.0'\n+21B236 Extract OS            00 (0) 'MS-DOS'\n+21B237 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219064 Compression Method    0008 (8) 'Deflated'\n-219066 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21906A CRC                   D46003CA (3563062218)\n-21906E Compressed Size       00000365 (869)\n-219072 Uncompressed Size     00000807 (2055)\n-219076 Filename Length       0057 (87)\n-219078 Extra Length          0000 (0)\n-21907A Comment Length        0000 (0)\n-21907C Disk Start            0000 (0)\n-21907E Int File Attributes   0000 (0)\n+21B239 Compression Method    0008 (8) 'Deflated'\n+21B23B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B23F CRC                   00000000 (0)\n+21B243 Compressed Size       00000002 (2)\n+21B247 Uncompressed Size     00000000 (0)\n+21B24B Filename Length       0022 (34)\n+21B24D Extra Length          0000 (0)\n+21B24F Comment Length        0000 (0)\n+21B251 Disk Start            0000 (0)\n+21B253 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219080 Ext File Attributes   00000000 (0)\n-219084 Local Header Offset   0003D9CA (252362)\n-219088 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B255 Ext File Attributes   00000000 (0)\n+21B259 Local Header Offset   000604E7 (394471)\n+21B25D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219088: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B25D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2190DF CENTRAL HEADER #330   02014B50 (33639248)\n-2190E3 Created Zip Spec      14 (20) '2.0'\n-2190E4 Created OS            00 (0) 'MS-DOS'\n-2190E5 Extract Zip Spec      14 (20) '2.0'\n-2190E6 Extract OS            00 (0) 'MS-DOS'\n-2190E7 General Purpose Flag  0808 (2056)\n+21B27F CENTRAL HEADER #330   02014B50 (33639248)\n+21B283 Created Zip Spec      14 (20) '2.0'\n+21B284 Created OS            00 (0) 'MS-DOS'\n+21B285 Extract Zip Spec      14 (20) '2.0'\n+21B286 Extract OS            00 (0) 'MS-DOS'\n+21B287 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2190E9 Compression Method    0008 (8) 'Deflated'\n-2190EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2190EF CRC                   93877211 (2475127313)\n-2190F3 Compressed Size       0000045D (1117)\n-2190F7 Uncompressed Size     00000B29 (2857)\n-2190FB Filename Length       0042 (66)\n-2190FD Extra Length          0000 (0)\n-2190FF Comment Length        0000 (0)\n-219101 Disk Start            0000 (0)\n-219103 Int File Attributes   0000 (0)\n+21B289 Compression Method    0008 (8) 'Deflated'\n+21B28B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B28F CRC                   2E0F2713 (772744979)\n+21B293 Compressed Size       00000D0C (3340)\n+21B297 Uncompressed Size     00002999 (10649)\n+21B29B Filename Length       0036 (54)\n+21B29D Extra Length          0000 (0)\n+21B29F Comment Length        0000 (0)\n+21B2A1 Disk Start            0000 (0)\n+21B2A3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219105 Ext File Attributes   00000000 (0)\n-219109 Local Header Offset   0003DDB4 (253364)\n-21910D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B2A5 Ext File Attributes   00000000 (0)\n+21B2A9 Local Header Offset   00060539 (394553)\n+21B2AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21910D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B2AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21914F CENTRAL HEADER #331   02014B50 (33639248)\n-219153 Created Zip Spec      14 (20) '2.0'\n-219154 Created OS            00 (0) 'MS-DOS'\n-219155 Extract Zip Spec      14 (20) '2.0'\n-219156 Extract OS            00 (0) 'MS-DOS'\n-219157 General Purpose Flag  0808 (2056)\n+21B2E3 CENTRAL HEADER #331   02014B50 (33639248)\n+21B2E7 Created Zip Spec      14 (20) '2.0'\n+21B2E8 Created OS            00 (0) 'MS-DOS'\n+21B2E9 Extract Zip Spec      14 (20) '2.0'\n+21B2EA Extract OS            00 (0) 'MS-DOS'\n+21B2EB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219159 Compression Method    0008 (8) 'Deflated'\n-21915B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21915F CRC                   7F0F87F2 (2131724274)\n-219163 Compressed Size       0000046B (1131)\n-219167 Uncompressed Size     00000D8D (3469)\n-21916B Filename Length       0048 (72)\n-21916D Extra Length          0000 (0)\n-21916F Comment Length        0000 (0)\n-219171 Disk Start            0000 (0)\n-219173 Int File Attributes   0000 (0)\n+21B2ED Compression Method    0008 (8) 'Deflated'\n+21B2EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B2F3 CRC                   B7E4B654 (3085219412)\n+21B2F7 Compressed Size       0000022A (554)\n+21B2FB Uncompressed Size     000003D7 (983)\n+21B2FF Filename Length       0036 (54)\n+21B301 Extra Length          0000 (0)\n+21B303 Comment Length        0000 (0)\n+21B305 Disk Start            0000 (0)\n+21B307 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219175 Ext File Attributes   00000000 (0)\n-219179 Local Header Offset   0003E281 (254593)\n-21917D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B309 Ext File Attributes   00000000 (0)\n+21B30D Local Header Offset   000612A9 (397993)\n+21B311 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21917D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B311: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2191C5 CENTRAL HEADER #332   02014B50 (33639248)\n-2191C9 Created Zip Spec      14 (20) '2.0'\n-2191CA Created OS            00 (0) 'MS-DOS'\n-2191CB Extract Zip Spec      14 (20) '2.0'\n-2191CC Extract OS            00 (0) 'MS-DOS'\n-2191CD General Purpose Flag  0808 (2056)\n+21B347 CENTRAL HEADER #332   02014B50 (33639248)\n+21B34B Created Zip Spec      14 (20) '2.0'\n+21B34C Created OS            00 (0) 'MS-DOS'\n+21B34D Extract Zip Spec      14 (20) '2.0'\n+21B34E Extract OS            00 (0) 'MS-DOS'\n+21B34F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2191CF Compression Method    0008 (8) 'Deflated'\n-2191D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2191D5 CRC                   0F98947D (261657725)\n-2191D9 Compressed Size       00000303 (771)\n-2191DD Uncompressed Size     00000635 (1589)\n-2191E1 Filename Length       004B (75)\n-2191E3 Extra Length          0000 (0)\n-2191E5 Comment Length        0000 (0)\n-2191E7 Disk Start            0000 (0)\n-2191E9 Int File Attributes   0000 (0)\n+21B351 Compression Method    0008 (8) 'Deflated'\n+21B353 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B357 CRC                   67723A29 (1735539241)\n+21B35B Compressed Size       00000257 (599)\n+21B35F Uncompressed Size     0000044F (1103)\n+21B363 Filename Length       0033 (51)\n+21B365 Extra Length          0000 (0)\n+21B367 Comment Length        0000 (0)\n+21B369 Disk Start            0000 (0)\n+21B36B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2191EB Ext File Attributes   00000000 (0)\n-2191EF Local Header Offset   0003E762 (255842)\n-2191F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B36D Ext File Attributes   00000000 (0)\n+21B371 Local Header Offset   00061537 (398647)\n+21B375 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2191F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B375: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21923E CENTRAL HEADER #333   02014B50 (33639248)\n-219242 Created Zip Spec      14 (20) '2.0'\n-219243 Created OS            00 (0) 'MS-DOS'\n-219244 Extract Zip Spec      14 (20) '2.0'\n-219245 Extract OS            00 (0) 'MS-DOS'\n-219246 General Purpose Flag  0808 (2056)\n+21B3A8 CENTRAL HEADER #333   02014B50 (33639248)\n+21B3AC Created Zip Spec      14 (20) '2.0'\n+21B3AD Created OS            00 (0) 'MS-DOS'\n+21B3AE Extract Zip Spec      14 (20) '2.0'\n+21B3AF Extract OS            00 (0) 'MS-DOS'\n+21B3B0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219248 Compression Method    0008 (8) 'Deflated'\n-21924A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21924E CRC                   00000000 (0)\n-219252 Compressed Size       00000002 (2)\n-219256 Uncompressed Size     00000000 (0)\n-21925A Filename Length       002E (46)\n-21925C Extra Length          0000 (0)\n-21925E Comment Length        0000 (0)\n-219260 Disk Start            0000 (0)\n-219262 Int File Attributes   0000 (0)\n+21B3B2 Compression Method    0008 (8) 'Deflated'\n+21B3B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B3B8 CRC                   EBE34920 (3957541152)\n+21B3BC Compressed Size       000004EB (1259)\n+21B3C0 Uncompressed Size     00000E07 (3591)\n+21B3C4 Filename Length       0038 (56)\n+21B3C6 Extra Length          0000 (0)\n+21B3C8 Comment Length        0000 (0)\n+21B3CA Disk Start            0000 (0)\n+21B3CC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219264 Ext File Attributes   00000000 (0)\n-219268 Local Header Offset   0003EADE (256734)\n-21926C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B3CE Ext File Attributes   00000000 (0)\n+21B3D2 Local Header Offset   000617EF (399343)\n+21B3D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21926C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B3D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21929A CENTRAL HEADER #334   02014B50 (33639248)\n-21929E Created Zip Spec      14 (20) '2.0'\n-21929F Created OS            00 (0) 'MS-DOS'\n-2192A0 Extract Zip Spec      14 (20) '2.0'\n-2192A1 Extract OS            00 (0) 'MS-DOS'\n-2192A2 General Purpose Flag  0808 (2056)\n+21B40E CENTRAL HEADER #334   02014B50 (33639248)\n+21B412 Created Zip Spec      14 (20) '2.0'\n+21B413 Created OS            00 (0) 'MS-DOS'\n+21B414 Extract Zip Spec      14 (20) '2.0'\n+21B415 Extract OS            00 (0) 'MS-DOS'\n+21B416 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2192A4 Compression Method    0008 (8) 'Deflated'\n-2192A6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2192AA CRC                   84EC925F (2230096479)\n-2192AE Compressed Size       000003D6 (982)\n-2192B2 Uncompressed Size     00000975 (2421)\n-2192B6 Filename Length       004C (76)\n-2192B8 Extra Length          0000 (0)\n-2192BA Comment Length        0000 (0)\n-2192BC Disk Start            0000 (0)\n-2192BE Int File Attributes   0000 (0)\n+21B418 Compression Method    0008 (8) 'Deflated'\n+21B41A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B41E CRC                   F01E112A (4028502314)\n+21B422 Compressed Size       00000224 (548)\n+21B426 Uncompressed Size     000003D0 (976)\n+21B42A Filename Length       0038 (56)\n+21B42C Extra Length          0000 (0)\n+21B42E Comment Length        0000 (0)\n+21B430 Disk Start            0000 (0)\n+21B432 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2192C0 Ext File Attributes   00000000 (0)\n-2192C4 Local Header Offset   0003EB3C (256828)\n-2192C8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B434 Ext File Attributes   00000000 (0)\n+21B438 Local Header Offset   00061D40 (400704)\n+21B43C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2192C8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B43C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219314 CENTRAL HEADER #335   02014B50 (33639248)\n-219318 Created Zip Spec      14 (20) '2.0'\n-219319 Created OS            00 (0) 'MS-DOS'\n-21931A Extract Zip Spec      14 (20) '2.0'\n-21931B Extract OS            00 (0) 'MS-DOS'\n-21931C General Purpose Flag  0808 (2056)\n+21B474 CENTRAL HEADER #335   02014B50 (33639248)\n+21B478 Created Zip Spec      14 (20) '2.0'\n+21B479 Created OS            00 (0) 'MS-DOS'\n+21B47A Extract Zip Spec      14 (20) '2.0'\n+21B47B Extract OS            00 (0) 'MS-DOS'\n+21B47C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21931E Compression Method    0008 (8) 'Deflated'\n-219320 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219324 CRC                   32AC7879 (850163833)\n-219328 Compressed Size       000004D8 (1240)\n-21932C Uncompressed Size     00000CD3 (3283)\n-219330 Filename Length       0064 (100)\n-219332 Extra Length          0000 (0)\n-219334 Comment Length        0000 (0)\n-219336 Disk Start            0000 (0)\n-219338 Int File Attributes   0000 (0)\n+21B47E Compression Method    0008 (8) 'Deflated'\n+21B480 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B484 CRC                   00000000 (0)\n+21B488 Compressed Size       00000002 (2)\n+21B48C Uncompressed Size     00000000 (0)\n+21B490 Filename Length       0020 (32)\n+21B492 Extra Length          0000 (0)\n+21B494 Comment Length        0000 (0)\n+21B496 Disk Start            0000 (0)\n+21B498 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21933A Ext File Attributes   00000000 (0)\n-21933E Local Header Offset   0003EF8C (257932)\n-219342 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B49A Ext File Attributes   00000000 (0)\n+21B49E Local Header Offset   00061FCA (401354)\n+21B4A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219342: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B4A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2193A6 CENTRAL HEADER #336   02014B50 (33639248)\n-2193AA Created Zip Spec      14 (20) '2.0'\n-2193AB Created OS            00 (0) 'MS-DOS'\n-2193AC Extract Zip Spec      14 (20) '2.0'\n-2193AD Extract OS            00 (0) 'MS-DOS'\n-2193AE General Purpose Flag  0808 (2056)\n+21B4C2 CENTRAL HEADER #336   02014B50 (33639248)\n+21B4C6 Created Zip Spec      14 (20) '2.0'\n+21B4C7 Created OS            00 (0) 'MS-DOS'\n+21B4C8 Extract Zip Spec      14 (20) '2.0'\n+21B4C9 Extract OS            00 (0) 'MS-DOS'\n+21B4CA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2193B0 Compression Method    0008 (8) 'Deflated'\n-2193B2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2193B6 CRC                   00000000 (0)\n-2193BA Compressed Size       00000002 (2)\n-2193BE Uncompressed Size     00000000 (0)\n-2193C2 Filename Length       002D (45)\n-2193C4 Extra Length          0000 (0)\n-2193C6 Comment Length        0000 (0)\n-2193C8 Disk Start            0000 (0)\n-2193CA Int File Attributes   0000 (0)\n+21B4CC Compression Method    0008 (8) 'Deflated'\n+21B4CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B4D2 CRC                   16DF264E (383723086)\n+21B4D6 Compressed Size       00000221 (545)\n+21B4DA Uncompressed Size     000003CD (973)\n+21B4DE Filename Length       0031 (49)\n+21B4E0 Extra Length          0000 (0)\n+21B4E2 Comment Length        0000 (0)\n+21B4E4 Disk Start            0000 (0)\n+21B4E6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2193CC Ext File Attributes   00000000 (0)\n-2193D0 Local Header Offset   0003F4F6 (259318)\n-2193D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B4E8 Ext File Attributes   00000000 (0)\n+21B4EC Local Header Offset   0006201A (401434)\n+21B4F0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2193D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B4F0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219401 CENTRAL HEADER #337   02014B50 (33639248)\n-219405 Created Zip Spec      14 (20) '2.0'\n-219406 Created OS            00 (0) 'MS-DOS'\n-219407 Extract Zip Spec      14 (20) '2.0'\n-219408 Extract OS            00 (0) 'MS-DOS'\n-219409 General Purpose Flag  0808 (2056)\n+21B521 CENTRAL HEADER #337   02014B50 (33639248)\n+21B525 Created Zip Spec      14 (20) '2.0'\n+21B526 Created OS            00 (0) 'MS-DOS'\n+21B527 Extract Zip Spec      14 (20) '2.0'\n+21B528 Extract OS            00 (0) 'MS-DOS'\n+21B529 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21940B Compression Method    0008 (8) 'Deflated'\n-21940D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219411 CRC                   C7D55000 (3352645632)\n-219415 Compressed Size       000002EA (746)\n-219419 Uncompressed Size     00000737 (1847)\n-21941D Filename Length       004B (75)\n-21941F Extra Length          0000 (0)\n-219421 Comment Length        0000 (0)\n-219423 Disk Start            0000 (0)\n-219425 Int File Attributes   0000 (0)\n+21B52B Compression Method    0008 (8) 'Deflated'\n+21B52D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B531 CRC                   66454DE7 (1715817959)\n+21B535 Compressed Size       0000029A (666)\n+21B539 Uncompressed Size     000005ED (1517)\n+21B53D Filename Length       002E (46)\n+21B53F Extra Length          0000 (0)\n+21B541 Comment Length        0000 (0)\n+21B543 Disk Start            0000 (0)\n+21B545 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219427 Ext File Attributes   00000000 (0)\n-21942B Local Header Offset   0003F553 (259411)\n-21942F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B547 Ext File Attributes   00000000 (0)\n+21B54B Local Header Offset   0006229A (402074)\n+21B54F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21942F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B54F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21947A CENTRAL HEADER #338   02014B50 (33639248)\n-21947E Created Zip Spec      14 (20) '2.0'\n-21947F Created OS            00 (0) 'MS-DOS'\n-219480 Extract Zip Spec      14 (20) '2.0'\n-219481 Extract OS            00 (0) 'MS-DOS'\n-219482 General Purpose Flag  0808 (2056)\n+21B57D CENTRAL HEADER #338   02014B50 (33639248)\n+21B581 Created Zip Spec      14 (20) '2.0'\n+21B582 Created OS            00 (0) 'MS-DOS'\n+21B583 Extract Zip Spec      14 (20) '2.0'\n+21B584 Extract OS            00 (0) 'MS-DOS'\n+21B585 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219484 Compression Method    0008 (8) 'Deflated'\n-219486 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21948A CRC                   33FEB344 (872330052)\n-21948E Compressed Size       000002E9 (745)\n-219492 Uncompressed Size     00000736 (1846)\n-219496 Filename Length       004B (75)\n-219498 Extra Length          0000 (0)\n-21949A Comment Length        0000 (0)\n-21949C Disk Start            0000 (0)\n-21949E Int File Attributes   0000 (0)\n+21B587 Compression Method    0008 (8) 'Deflated'\n+21B589 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B58D CRC                   F8009358 (4160787288)\n+21B591 Compressed Size       0000024E (590)\n+21B595 Uncompressed Size     0000049D (1181)\n+21B599 Filename Length       0035 (53)\n+21B59B Extra Length          0000 (0)\n+21B59D Comment Length        0000 (0)\n+21B59F Disk Start            0000 (0)\n+21B5A1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2194A0 Ext File Attributes   00000000 (0)\n-2194A4 Local Header Offset   0003F8B6 (260278)\n-2194A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B5A3 Ext File Attributes   00000000 (0)\n+21B5A7 Local Header Offset   00062590 (402832)\n+21B5AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2194A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B5AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2194F3 CENTRAL HEADER #339   02014B50 (33639248)\n-2194F7 Created Zip Spec      14 (20) '2.0'\n-2194F8 Created OS            00 (0) 'MS-DOS'\n-2194F9 Extract Zip Spec      14 (20) '2.0'\n-2194FA Extract OS            00 (0) 'MS-DOS'\n-2194FB General Purpose Flag  0808 (2056)\n+21B5E0 CENTRAL HEADER #339   02014B50 (33639248)\n+21B5E4 Created Zip Spec      14 (20) '2.0'\n+21B5E5 Created OS            00 (0) 'MS-DOS'\n+21B5E6 Extract Zip Spec      14 (20) '2.0'\n+21B5E7 Extract OS            00 (0) 'MS-DOS'\n+21B5E8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2194FD Compression Method    0008 (8) 'Deflated'\n-2194FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219503 CRC                   BFF1DD26 (3220299046)\n-219507 Compressed Size       000002F1 (753)\n-21950B Uncompressed Size     000006C6 (1734)\n-21950F Filename Length       004A (74)\n-219511 Extra Length          0000 (0)\n-219513 Comment Length        0000 (0)\n-219515 Disk Start            0000 (0)\n-219517 Int File Attributes   0000 (0)\n+21B5EA Compression Method    0008 (8) 'Deflated'\n+21B5EC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B5F0 CRC                   00000000 (0)\n+21B5F4 Compressed Size       00000002 (2)\n+21B5F8 Uncompressed Size     00000000 (0)\n+21B5FC Filename Length       0020 (32)\n+21B5FE Extra Length          0000 (0)\n+21B600 Comment Length        0000 (0)\n+21B602 Disk Start            0000 (0)\n+21B604 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219519 Ext File Attributes   00000000 (0)\n-21951D Local Header Offset   0003FC18 (261144)\n-219521 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B606 Ext File Attributes   00000000 (0)\n+21B60A Local Header Offset   00062841 (403521)\n+21B60E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219521: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B60E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21956B CENTRAL HEADER #340   02014B50 (33639248)\n-21956F Created Zip Spec      14 (20) '2.0'\n-219570 Created OS            00 (0) 'MS-DOS'\n-219571 Extract Zip Spec      14 (20) '2.0'\n-219572 Extract OS            00 (0) 'MS-DOS'\n-219573 General Purpose Flag  0808 (2056)\n+21B62E CENTRAL HEADER #340   02014B50 (33639248)\n+21B632 Created Zip Spec      14 (20) '2.0'\n+21B633 Created OS            00 (0) 'MS-DOS'\n+21B634 Extract Zip Spec      14 (20) '2.0'\n+21B635 Extract OS            00 (0) 'MS-DOS'\n+21B636 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219575 Compression Method    0008 (8) 'Deflated'\n-219577 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21957B CRC                   00000000 (0)\n-21957F Compressed Size       00000002 (2)\n-219583 Uncompressed Size     00000000 (0)\n-219587 Filename Length       0032 (50)\n-219589 Extra Length          0000 (0)\n-21958B Comment Length        0000 (0)\n-21958D Disk Start            0000 (0)\n-21958F Int File Attributes   0000 (0)\n+21B638 Compression Method    0008 (8) 'Deflated'\n+21B63A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B63E CRC                   C8C419A3 (3368294819)\n+21B642 Compressed Size       000004CC (1228)\n+21B646 Uncompressed Size     00000ECC (3788)\n+21B64A Filename Length       002E (46)\n+21B64C Extra Length          0000 (0)\n+21B64E Comment Length        0000 (0)\n+21B650 Disk Start            0000 (0)\n+21B652 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219591 Ext File Attributes   00000000 (0)\n-219595 Local Header Offset   0003FF81 (262017)\n-219599 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B654 Ext File Attributes   00000000 (0)\n+21B658 Local Header Offset   00062891 (403601)\n+21B65C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219599: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B65C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2195CB CENTRAL HEADER #341   02014B50 (33639248)\n-2195CF Created Zip Spec      14 (20) '2.0'\n-2195D0 Created OS            00 (0) 'MS-DOS'\n-2195D1 Extract Zip Spec      14 (20) '2.0'\n-2195D2 Extract OS            00 (0) 'MS-DOS'\n-2195D3 General Purpose Flag  0808 (2056)\n+21B68A CENTRAL HEADER #341   02014B50 (33639248)\n+21B68E Created Zip Spec      14 (20) '2.0'\n+21B68F Created OS            00 (0) 'MS-DOS'\n+21B690 Extract Zip Spec      14 (20) '2.0'\n+21B691 Extract OS            00 (0) 'MS-DOS'\n+21B692 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2195D5 Compression Method    0008 (8) 'Deflated'\n-2195D7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2195DB CRC                   D7398AF1 (3610872561)\n-2195DF Compressed Size       00000365 (869)\n-2195E3 Uncompressed Size     00000940 (2368)\n-2195E7 Filename Length       0050 (80)\n-2195E9 Extra Length          0000 (0)\n-2195EB Comment Length        0000 (0)\n-2195ED Disk Start            0000 (0)\n-2195EF Int File Attributes   0000 (0)\n+21B694 Compression Method    0008 (8) 'Deflated'\n+21B696 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B69A CRC                   C31C00DA (3273392346)\n+21B69E Compressed Size       00000255 (597)\n+21B6A2 Uncompressed Size     0000042C (1068)\n+21B6A6 Filename Length       0034 (52)\n+21B6A8 Extra Length          0000 (0)\n+21B6AA Comment Length        0000 (0)\n+21B6AC Disk Start            0000 (0)\n+21B6AE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2195F1 Ext File Attributes   00000000 (0)\n-2195F5 Local Header Offset   0003FFE3 (262115)\n-2195F9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B6B0 Ext File Attributes   00000000 (0)\n+21B6B4 Local Header Offset   00062DB9 (404921)\n+21B6B8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2195F9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B6B8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219649 CENTRAL HEADER #342   02014B50 (33639248)\n-21964D Created Zip Spec      14 (20) '2.0'\n-21964E Created OS            00 (0) 'MS-DOS'\n-21964F Extract Zip Spec      14 (20) '2.0'\n-219650 Extract OS            00 (0) 'MS-DOS'\n-219651 General Purpose Flag  0808 (2056)\n+21B6EC CENTRAL HEADER #342   02014B50 (33639248)\n+21B6F0 Created Zip Spec      14 (20) '2.0'\n+21B6F1 Created OS            00 (0) 'MS-DOS'\n+21B6F2 Extract Zip Spec      14 (20) '2.0'\n+21B6F3 Extract OS            00 (0) 'MS-DOS'\n+21B6F4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219653 Compression Method    0008 (8) 'Deflated'\n-219655 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219659 CRC                   85DF07D4 (2245986260)\n-21965D Compressed Size       0000036D (877)\n-219661 Uncompressed Size     000007AB (1963)\n-219665 Filename Length       004F (79)\n-219667 Extra Length          0000 (0)\n-219669 Comment Length        0000 (0)\n-21966B Disk Start            0000 (0)\n-21966D Int File Attributes   0000 (0)\n+21B6F6 Compression Method    0008 (8) 'Deflated'\n+21B6F8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B6FC CRC                   C4FF04D7 (3305047255)\n+21B700 Compressed Size       000002C0 (704)\n+21B704 Uncompressed Size     00000558 (1368)\n+21B708 Filename Length       003D (61)\n+21B70A Extra Length          0000 (0)\n+21B70C Comment Length        0000 (0)\n+21B70E Disk Start            0000 (0)\n+21B710 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21966F Ext File Attributes   00000000 (0)\n-219673 Local Header Offset   000403C6 (263110)\n-219677 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B712 Ext File Attributes   00000000 (0)\n+21B716 Local Header Offset   00063070 (405616)\n+21B71A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219677: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B71A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2196C6 CENTRAL HEADER #343   02014B50 (33639248)\n-2196CA Created Zip Spec      14 (20) '2.0'\n-2196CB Created OS            00 (0) 'MS-DOS'\n-2196CC Extract Zip Spec      14 (20) '2.0'\n-2196CD Extract OS            00 (0) 'MS-DOS'\n-2196CE General Purpose Flag  0808 (2056)\n+21B757 CENTRAL HEADER #343   02014B50 (33639248)\n+21B75B Created Zip Spec      14 (20) '2.0'\n+21B75C Created OS            00 (0) 'MS-DOS'\n+21B75D Extract Zip Spec      14 (20) '2.0'\n+21B75E Extract OS            00 (0) 'MS-DOS'\n+21B75F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2196D0 Compression Method    0008 (8) 'Deflated'\n-2196D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2196D6 CRC                   59514F7F (1498500991)\n-2196DA Compressed Size       000003AB (939)\n-2196DE Uncompressed Size     0000088D (2189)\n-2196E2 Filename Length       0048 (72)\n-2196E4 Extra Length          0000 (0)\n-2196E6 Comment Length        0000 (0)\n-2196E8 Disk Start            0000 (0)\n-2196EA Int File Attributes   0000 (0)\n+21B761 Compression Method    0008 (8) 'Deflated'\n+21B763 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B767 CRC                   B8E6EA58 (3102141016)\n+21B76B Compressed Size       000002BB (699)\n+21B76F Uncompressed Size     0000053B (1339)\n+21B773 Filename Length       003F (63)\n+21B775 Extra Length          0000 (0)\n+21B777 Comment Length        0000 (0)\n+21B779 Disk Start            0000 (0)\n+21B77B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2196EC Ext File Attributes   00000000 (0)\n-2196F0 Local Header Offset   000407B0 (264112)\n-2196F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B77D Ext File Attributes   00000000 (0)\n+21B781 Local Header Offset   0006339B (406427)\n+21B785 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2196F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B785: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21973C CENTRAL HEADER #344   02014B50 (33639248)\n-219740 Created Zip Spec      14 (20) '2.0'\n-219741 Created OS            00 (0) 'MS-DOS'\n-219742 Extract Zip Spec      14 (20) '2.0'\n-219743 Extract OS            00 (0) 'MS-DOS'\n-219744 General Purpose Flag  0808 (2056)\n+21B7C4 CENTRAL HEADER #344   02014B50 (33639248)\n+21B7C8 Created Zip Spec      14 (20) '2.0'\n+21B7C9 Created OS            00 (0) 'MS-DOS'\n+21B7CA Extract Zip Spec      14 (20) '2.0'\n+21B7CB Extract OS            00 (0) 'MS-DOS'\n+21B7CC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219746 Compression Method    0008 (8) 'Deflated'\n-219748 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21974C CRC                   00000000 (0)\n-219750 Compressed Size       00000002 (2)\n-219754 Uncompressed Size     00000000 (0)\n-219758 Filename Length       0029 (41)\n-21975A Extra Length          0000 (0)\n-21975C Comment Length        0000 (0)\n-21975E Disk Start            0000 (0)\n-219760 Int File Attributes   0000 (0)\n+21B7CE Compression Method    0008 (8) 'Deflated'\n+21B7D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B7D4 CRC                   27EF74B8 (670004408)\n+21B7D8 Compressed Size       000002FD (765)\n+21B7DC Uncompressed Size     00000606 (1542)\n+21B7E0 Filename Length       003F (63)\n+21B7E2 Extra Length          0000 (0)\n+21B7E4 Comment Length        0000 (0)\n+21B7E6 Disk Start            0000 (0)\n+21B7E8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219762 Ext File Attributes   00000000 (0)\n-219766 Local Header Offset   00040BD1 (265169)\n-21976A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B7EA Ext File Attributes   00000000 (0)\n+21B7EE Local Header Offset   000636C3 (407235)\n+21B7F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21976A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B7F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219793 CENTRAL HEADER #345   02014B50 (33639248)\n-219797 Created Zip Spec      14 (20) '2.0'\n-219798 Created OS            00 (0) 'MS-DOS'\n-219799 Extract Zip Spec      14 (20) '2.0'\n-21979A Extract OS            00 (0) 'MS-DOS'\n-21979B General Purpose Flag  0808 (2056)\n+21B831 CENTRAL HEADER #345   02014B50 (33639248)\n+21B835 Created Zip Spec      14 (20) '2.0'\n+21B836 Created OS            00 (0) 'MS-DOS'\n+21B837 Extract Zip Spec      14 (20) '2.0'\n+21B838 Extract OS            00 (0) 'MS-DOS'\n+21B839 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21979D Compression Method    0008 (8) 'Deflated'\n-21979F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2197A3 CRC                   EFF8B6F4 (4026054388)\n-2197A7 Compressed Size       0000044C (1100)\n-2197AB Uncompressed Size     00000B2E (2862)\n-2197AF Filename Length       0044 (68)\n-2197B1 Extra Length          0000 (0)\n-2197B3 Comment Length        0000 (0)\n-2197B5 Disk Start            0000 (0)\n-2197B7 Int File Attributes   0000 (0)\n+21B83B Compression Method    0008 (8) 'Deflated'\n+21B83D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B841 CRC                   3F610BCB (1063324619)\n+21B845 Compressed Size       000002C0 (704)\n+21B849 Uncompressed Size     00000555 (1365)\n+21B84D Filename Length       003C (60)\n+21B84F Extra Length          0000 (0)\n+21B851 Comment Length        0000 (0)\n+21B853 Disk Start            0000 (0)\n+21B855 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2197B9 Ext File Attributes   00000000 (0)\n-2197BD Local Header Offset   00040C2A (265258)\n-2197C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B857 Ext File Attributes   00000000 (0)\n+21B85B Local Header Offset   00063A2D (408109)\n+21B85F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2197C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B85F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219805 CENTRAL HEADER #346   02014B50 (33639248)\n-219809 Created Zip Spec      14 (20) '2.0'\n-21980A Created OS            00 (0) 'MS-DOS'\n-21980B Extract Zip Spec      14 (20) '2.0'\n-21980C Extract OS            00 (0) 'MS-DOS'\n-21980D General Purpose Flag  0808 (2056)\n+21B89B CENTRAL HEADER #346   02014B50 (33639248)\n+21B89F Created Zip Spec      14 (20) '2.0'\n+21B8A0 Created OS            00 (0) 'MS-DOS'\n+21B8A1 Extract Zip Spec      14 (20) '2.0'\n+21B8A2 Extract OS            00 (0) 'MS-DOS'\n+21B8A3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21980F Compression Method    0008 (8) 'Deflated'\n-219811 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219815 CRC                   00000000 (0)\n-219819 Compressed Size       00000002 (2)\n-21981D Uncompressed Size     00000000 (0)\n-219821 Filename Length       0026 (38)\n-219823 Extra Length          0000 (0)\n-219825 Comment Length        0000 (0)\n-219827 Disk Start            0000 (0)\n-219829 Int File Attributes   0000 (0)\n+21B8A5 Compression Method    0008 (8) 'Deflated'\n+21B8A7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B8AB CRC                   15F2A538 (368223544)\n+21B8AF Compressed Size       000002BE (702)\n+21B8B3 Uncompressed Size     0000054E (1358)\n+21B8B7 Filename Length       003B (59)\n+21B8B9 Extra Length          0000 (0)\n+21B8BB Comment Length        0000 (0)\n+21B8BD Disk Start            0000 (0)\n+21B8BF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21982B Ext File Attributes   00000000 (0)\n-21982F Local Header Offset   000410E8 (266472)\n-219833 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B8C1 Ext File Attributes   00000000 (0)\n+21B8C5 Local Header Offset   00063D57 (408919)\n+21B8C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219833: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B8C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219859 CENTRAL HEADER #347   02014B50 (33639248)\n-21985D Created Zip Spec      14 (20) '2.0'\n-21985E Created OS            00 (0) 'MS-DOS'\n-21985F Extract Zip Spec      14 (20) '2.0'\n-219860 Extract OS            00 (0) 'MS-DOS'\n-219861 General Purpose Flag  0808 (2056)\n+21B904 CENTRAL HEADER #347   02014B50 (33639248)\n+21B908 Created Zip Spec      14 (20) '2.0'\n+21B909 Created OS            00 (0) 'MS-DOS'\n+21B90A Extract Zip Spec      14 (20) '2.0'\n+21B90B Extract OS            00 (0) 'MS-DOS'\n+21B90C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219863 Compression Method    0008 (8) 'Deflated'\n-219865 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219869 CRC                   E6EC6DE5 (3874254309)\n-21986D Compressed Size       00000480 (1152)\n-219871 Uncompressed Size     00000B52 (2898)\n-219875 Filename Length       0049 (73)\n-219877 Extra Length          0000 (0)\n-219879 Comment Length        0000 (0)\n-21987B Disk Start            0000 (0)\n-21987D Int File Attributes   0000 (0)\n+21B90E Compression Method    0008 (8) 'Deflated'\n+21B910 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B914 CRC                   DB3985F1 (3677980145)\n+21B918 Compressed Size       000002BC (700)\n+21B91C Uncompressed Size     00000554 (1364)\n+21B920 Filename Length       003D (61)\n+21B922 Extra Length          0000 (0)\n+21B924 Comment Length        0000 (0)\n+21B926 Disk Start            0000 (0)\n+21B928 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21987F Ext File Attributes   00000000 (0)\n-219883 Local Header Offset   0004113E (266558)\n-219887 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B92A Ext File Attributes   00000000 (0)\n+21B92E Local Header Offset   0006407E (409726)\n+21B932 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219887: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B932: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2198D0 CENTRAL HEADER #348   02014B50 (33639248)\n-2198D4 Created Zip Spec      14 (20) '2.0'\n-2198D5 Created OS            00 (0) 'MS-DOS'\n-2198D6 Extract Zip Spec      14 (20) '2.0'\n-2198D7 Extract OS            00 (0) 'MS-DOS'\n-2198D8 General Purpose Flag  0808 (2056)\n+21B96F CENTRAL HEADER #348   02014B50 (33639248)\n+21B973 Created Zip Spec      14 (20) '2.0'\n+21B974 Created OS            00 (0) 'MS-DOS'\n+21B975 Extract Zip Spec      14 (20) '2.0'\n+21B976 Extract OS            00 (0) 'MS-DOS'\n+21B977 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2198DA Compression Method    0008 (8) 'Deflated'\n-2198DC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2198E0 CRC                   6DDE9A21 (1843304993)\n-2198E4 Compressed Size       000011D8 (4568)\n-2198E8 Uncompressed Size     0000580E (22542)\n-2198EC Filename Length       0044 (68)\n-2198EE Extra Length          0000 (0)\n-2198F0 Comment Length        0000 (0)\n-2198F2 Disk Start            0000 (0)\n-2198F4 Int File Attributes   0000 (0)\n+21B979 Compression Method    0008 (8) 'Deflated'\n+21B97B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B97F CRC                   7AC3DE73 (2059656819)\n+21B983 Compressed Size       000002BF (703)\n+21B987 Uncompressed Size     0000054B (1355)\n+21B98B Filename Length       003A (58)\n+21B98D Extra Length          0000 (0)\n+21B98F Comment Length        0000 (0)\n+21B991 Disk Start            0000 (0)\n+21B993 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2198F6 Ext File Attributes   00000000 (0)\n-2198FA Local Header Offset   00041635 (267829)\n-2198FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B995 Ext File Attributes   00000000 (0)\n+21B999 Local Header Offset   000643A5 (410533)\n+21B99D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2198FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21B99D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219942 CENTRAL HEADER #349   02014B50 (33639248)\n-219946 Created Zip Spec      14 (20) '2.0'\n-219947 Created OS            00 (0) 'MS-DOS'\n-219948 Extract Zip Spec      14 (20) '2.0'\n-219949 Extract OS            00 (0) 'MS-DOS'\n-21994A General Purpose Flag  0808 (2056)\n+21B9D7 CENTRAL HEADER #349   02014B50 (33639248)\n+21B9DB Created Zip Spec      14 (20) '2.0'\n+21B9DC Created OS            00 (0) 'MS-DOS'\n+21B9DD Extract Zip Spec      14 (20) '2.0'\n+21B9DE Extract OS            00 (0) 'MS-DOS'\n+21B9DF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21994C Compression Method    0008 (8) 'Deflated'\n-21994E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219952 CRC                   FDDFE0B7 (4259307703)\n-219956 Compressed Size       00000533 (1331)\n-21995A Uncompressed Size     0000138F (5007)\n-21995E Filename Length       0040 (64)\n-219960 Extra Length          0000 (0)\n-219962 Comment Length        0000 (0)\n-219964 Disk Start            0000 (0)\n-219966 Int File Attributes   0000 (0)\n+21B9E1 Compression Method    0008 (8) 'Deflated'\n+21B9E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21B9E7 CRC                   190CB88A (420264074)\n+21B9EB Compressed Size       0000029F (671)\n+21B9EF Uncompressed Size     0000051B (1307)\n+21B9F3 Filename Length       003E (62)\n+21B9F5 Extra Length          0000 (0)\n+21B9F7 Comment Length        0000 (0)\n+21B9F9 Disk Start            0000 (0)\n+21B9FB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219968 Ext File Attributes   00000000 (0)\n-21996C Local Header Offset   0004287F (272511)\n-219970 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21B9FD Ext File Attributes   00000000 (0)\n+21BA01 Local Header Offset   000646CC (411340)\n+21BA05 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219970: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21BA05: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2199B0 CENTRAL HEADER #350   02014B50 (33639248)\n-2199B4 Created Zip Spec      14 (20) '2.0'\n-2199B5 Created OS            00 (0) 'MS-DOS'\n-2199B6 Extract Zip Spec      14 (20) '2.0'\n-2199B7 Extract OS            00 (0) 'MS-DOS'\n-2199B8 General Purpose Flag  0808 (2056)\n+21BA43 CENTRAL HEADER #350   02014B50 (33639248)\n+21BA47 Created Zip Spec      14 (20) '2.0'\n+21BA48 Created OS            00 (0) 'MS-DOS'\n+21BA49 Extract Zip Spec      14 (20) '2.0'\n+21BA4A Extract OS            00 (0) 'MS-DOS'\n+21BA4B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2199BA Compression Method    0008 (8) 'Deflated'\n-2199BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2199C0 CRC                   00000000 (0)\n-2199C4 Compressed Size       00000002 (2)\n-2199C8 Uncompressed Size     00000000 (0)\n-2199CC Filename Length       0026 (38)\n-2199CE Extra Length          0000 (0)\n-2199D0 Comment Length        0000 (0)\n-2199D2 Disk Start            0000 (0)\n-2199D4 Int File Attributes   0000 (0)\n+21BA4D Compression Method    0008 (8) 'Deflated'\n+21BA4F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21BA53 CRC                   94D0E691 (2496718481)\n+21BA57 Compressed Size       000002BF (703)\n+21BA5B Uncompressed Size     00000550 (1360)\n+21BA5F Filename Length       003B (59)\n+21BA61 Extra Length          0000 (0)\n+21BA63 Comment Length        0000 (0)\n+21BA65 Disk Start            0000 (0)\n+21BA67 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2199D6 Ext File Attributes   00000000 (0)\n-2199DA Local Header Offset   00042E20 (273952)\n-2199DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21BA69 Ext File Attributes   00000000 (0)\n+21BA6D Local Header Offset   000649D7 (412119)\n+21BA71 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2199DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21BA71: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219A04 CENTRAL HEADER #351   02014B50 (33639248)\n-219A08 Created Zip Spec      14 (20) '2.0'\n-219A09 Created OS            00 (0) 'MS-DOS'\n-219A0A Extract Zip Spec      14 (20) '2.0'\n-219A0B Extract OS            00 (0) 'MS-DOS'\n-219A0C General Purpose Flag  0808 (2056)\n+21BAAC CENTRAL HEADER #351   02014B50 (33639248)\n+21BAB0 Created Zip Spec      14 (20) '2.0'\n+21BAB1 Created OS            00 (0) 'MS-DOS'\n+21BAB2 Extract Zip Spec      14 (20) '2.0'\n+21BAB3 Extract OS            00 (0) 'MS-DOS'\n+21BAB4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219A0E Compression Method    0008 (8) 'Deflated'\n-219A10 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219A14 CRC                   263FC442 (641713218)\n-219A18 Compressed Size       000004CB (1227)\n-219A1C Uncompressed Size     00000D56 (3414)\n-219A20 Filename Length       0042 (66)\n-219A22 Extra Length          0000 (0)\n-219A24 Comment Length        0000 (0)\n-219A26 Disk Start            0000 (0)\n-219A28 Int File Attributes   0000 (0)\n+21BAB6 Compression Method    0008 (8) 'Deflated'\n+21BAB8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21BABC CRC                   E4FF1EF0 (3841924848)\n+21BAC0 Compressed Size       00000267 (615)\n+21BAC4 Uncompressed Size     00000470 (1136)\n+21BAC8 Filename Length       003C (60)\n+21BACA Extra Length          0000 (0)\n+21BACC Comment Length        0000 (0)\n+21BACE Disk Start            0000 (0)\n+21BAD0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219A2A Ext File Attributes   00000000 (0)\n-219A2E Local Header Offset   00042E76 (274038)\n-219A32 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21BAD2 Ext File Attributes   00000000 (0)\n+21BAD6 Local Header Offset   00064CFF (412927)\n+21BADA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219A32: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21BADA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219A74 CENTRAL HEADER #352   02014B50 (33639248)\n-219A78 Created Zip Spec      14 (20) '2.0'\n-219A79 Created OS            00 (0) 'MS-DOS'\n-219A7A Extract Zip Spec      14 (20) '2.0'\n-219A7B Extract OS            00 (0) 'MS-DOS'\n-219A7C General Purpose Flag  0808 (2056)\n+21BB16 CENTRAL HEADER #352   02014B50 (33639248)\n+21BB1A Created Zip Spec      14 (20) '2.0'\n+21BB1B Created OS            00 (0) 'MS-DOS'\n+21BB1C Extract Zip Spec      14 (20) '2.0'\n+21BB1D Extract OS            00 (0) 'MS-DOS'\n+21BB1E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219A7E Compression Method    0008 (8) 'Deflated'\n-219A80 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219A84 CRC                   8F184A91 (2400733841)\n-219A88 Compressed Size       00000538 (1336)\n-219A8C Uncompressed Size     00000E6C (3692)\n-219A90 Filename Length       003E (62)\n-219A92 Extra Length          0000 (0)\n-219A94 Comment Length        0000 (0)\n-219A96 Disk Start            0000 (0)\n-219A98 Int File Attributes   0000 (0)\n+21BB20 Compression Method    0008 (8) 'Deflated'\n+21BB22 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21BB26 CRC                   00000000 (0)\n+21BB2A Compressed Size       00000002 (2)\n+21BB2E Uncompressed Size     00000000 (0)\n+21BB32 Filename Length       0029 (41)\n+21BB34 Extra Length          0000 (0)\n+21BB36 Comment Length        0000 (0)\n+21BB38 Disk Start            0000 (0)\n+21BB3A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219A9A Ext File Attributes   00000000 (0)\n-219A9E Local Header Offset   000433B1 (275377)\n-219AA2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21BB3C Ext File Attributes   00000000 (0)\n+21BB40 Local Header Offset   00064FD0 (413648)\n+21BB44 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219AA2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21BB44: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219AE0 CENTRAL HEADER #353   02014B50 (33639248)\n-219AE4 Created Zip Spec      14 (20) '2.0'\n-219AE5 Created OS            00 (0) 'MS-DOS'\n-219AE6 Extract Zip Spec      14 (20) '2.0'\n-219AE7 Extract OS            00 (0) 'MS-DOS'\n-219AE8 General Purpose Flag  0808 (2056)\n+21BB6D CENTRAL HEADER #353   02014B50 (33639248)\n+21BB71 Created Zip Spec      14 (20) '2.0'\n+21BB72 Created OS            00 (0) 'MS-DOS'\n+21BB73 Extract Zip Spec      14 (20) '2.0'\n+21BB74 Extract OS            00 (0) 'MS-DOS'\n+21BB75 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219AEA Compression Method    0008 (8) 'Deflated'\n-219AEC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219AF0 CRC                   00000000 (0)\n-219AF4 Compressed Size       00000002 (2)\n-219AF8 Uncompressed Size     00000000 (0)\n-219AFC Filename Length       0024 (36)\n-219AFE Extra Length          0000 (0)\n-219B00 Comment Length        0000 (0)\n-219B02 Disk Start            0000 (0)\n-219B04 Int File Attributes   0000 (0)\n+21BB77 Compression Method    0008 (8) 'Deflated'\n+21BB79 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21BB7D CRC                   54CD8A2A (1422756394)\n+21BB81 Compressed Size       000004D2 (1234)\n+21BB85 Uncompressed Size     00000D8D (3469)\n+21BB89 Filename Length       0041 (65)\n+21BB8B Extra Length          0000 (0)\n+21BB8D Comment Length        0000 (0)\n+21BB8F Disk Start            0000 (0)\n+21BB91 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219B06 Ext File Attributes   00000000 (0)\n-219B0A Local Header Offset   00043955 (276821)\n-219B0E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21BB93 Ext File Attributes   00000000 (0)\n+21BB97 Local Header Offset   00065029 (413737)\n+21BB9B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219B0E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21BB9B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219B32 CENTRAL HEADER #354   02014B50 (33639248)\n-219B36 Created Zip Spec      14 (20) '2.0'\n-219B37 Created OS            00 (0) 'MS-DOS'\n-219B38 Extract Zip Spec      14 (20) '2.0'\n-219B39 Extract OS            00 (0) 'MS-DOS'\n-219B3A General Purpose Flag  0808 (2056)\n+21BBDC CENTRAL HEADER #354   02014B50 (33639248)\n+21BBE0 Created Zip Spec      14 (20) '2.0'\n+21BBE1 Created OS            00 (0) 'MS-DOS'\n+21BBE2 Extract Zip Spec      14 (20) '2.0'\n+21BBE3 Extract OS            00 (0) 'MS-DOS'\n+21BBE4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219B3C Compression Method    0008 (8) 'Deflated'\n-219B3E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219B42 CRC                   B14D8B82 (2974649218)\n-219B46 Compressed Size       0000066C (1644)\n-219B4A Uncompressed Size     000018C2 (6338)\n-219B4E Filename Length       003D (61)\n-219B50 Extra Length          0000 (0)\n-219B52 Comment Length        0000 (0)\n-219B54 Disk Start            0000 (0)\n-219B56 Int File Attributes   0000 (0)\n+21BBE6 Compression Method    0008 (8) 'Deflated'\n+21BBE8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21BBEC CRC                   6FAB873E (1873512254)\n+21BBF0 Compressed Size       00000388 (904)\n+21BBF4 Uncompressed Size     000007B0 (1968)\n+21BBF8 Filename Length       0044 (68)\n+21BBFA Extra Length          0000 (0)\n+21BBFC Comment Length        0000 (0)\n+21BBFE Disk Start            0000 (0)\n+21BC00 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219B58 Ext File Attributes   00000000 (0)\n-219B5C Local Header Offset   000439A9 (276905)\n-219B60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21BC02 Ext File Attributes   00000000 (0)\n+21BC06 Local Header Offset   0006556A (415082)\n+21BC0A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219B60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21BC0A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219B9D CENTRAL HEADER #355   02014B50 (33639248)\n-219BA1 Created Zip Spec      14 (20) '2.0'\n-219BA2 Created OS            00 (0) 'MS-DOS'\n-219BA3 Extract Zip Spec      14 (20) '2.0'\n-219BA4 Extract OS            00 (0) 'MS-DOS'\n-219BA5 General Purpose Flag  0808 (2056)\n+21BC4E CENTRAL HEADER #355   02014B50 (33639248)\n+21BC52 Created Zip Spec      14 (20) '2.0'\n+21BC53 Created OS            00 (0) 'MS-DOS'\n+21BC54 Extract Zip Spec      14 (20) '2.0'\n+21BC55 Extract OS            00 (0) 'MS-DOS'\n+21BC56 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219BA7 Compression Method    0008 (8) 'Deflated'\n-219BA9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219BAD CRC                   0414302F (68431919)\n-219BB1 Compressed Size       00000740 (1856)\n-219BB5 Uncompressed Size     00001C89 (7305)\n-219BB9 Filename Length       0037 (55)\n-219BBB Extra Length          0000 (0)\n-219BBD Comment Length        0000 (0)\n-219BBF Disk Start            0000 (0)\n-219BC1 Int File Attributes   0000 (0)\n+21BC58 Compression Method    0008 (8) 'Deflated'\n+21BC5A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21BC5E CRC                   0C78A9F4 (209234420)\n+21BC62 Compressed Size       000002BC (700)\n+21BC66 Uncompressed Size     00000530 (1328)\n+21BC6A Filename Length       004C (76)\n+21BC6C Extra Length          0000 (0)\n+21BC6E Comment Length        0000 (0)\n+21BC70 Disk Start            0000 (0)\n+21BC72 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219BC3 Ext File Attributes   00000000 (0)\n-219BC7 Local Header Offset   00044080 (278656)\n-219BCB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21BC74 Ext File Attributes   00000000 (0)\n+21BC78 Local Header Offset   00065964 (416100)\n+21BC7C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219BCB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21BC7C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219C02 CENTRAL HEADER #356   02014B50 (33639248)\n-219C06 Created Zip Spec      14 (20) '2.0'\n-219C07 Created OS            00 (0) 'MS-DOS'\n-219C08 Extract Zip Spec      14 (20) '2.0'\n-219C09 Extract OS            00 (0) 'MS-DOS'\n-219C0A General Purpose Flag  0808 (2056)\n+21BCC8 CENTRAL HEADER #356   02014B50 (33639248)\n+21BCCC Created Zip Spec      14 (20) '2.0'\n+21BCCD Created OS            00 (0) 'MS-DOS'\n+21BCCE Extract Zip Spec      14 (20) '2.0'\n+21BCCF Extract OS            00 (0) 'MS-DOS'\n+21BCD0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219C0C Compression Method    0008 (8) 'Deflated'\n-219C0E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219C12 CRC                   A63E32BF (2789094079)\n-219C16 Compressed Size       0000004F (79)\n-219C1A Uncompressed Size     0000005B (91)\n-219C1E Filename Length       0059 (89)\n-219C20 Extra Length          0000 (0)\n-219C22 Comment Length        0000 (0)\n-219C24 Disk Start            0000 (0)\n-219C26 Int File Attributes   0000 (0)\n+21BCD2 Compression Method    0008 (8) 'Deflated'\n+21BCD4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21BCD8 CRC                   5D42735B (1564635995)\n+21BCDC Compressed Size       000002C4 (708)\n+21BCE0 Uncompressed Size     0000055A (1370)\n+21BCE4 Filename Length       004C (76)\n+21BCE6 Extra Length          0000 (0)\n+21BCE8 Comment Length        0000 (0)\n+21BCEA Disk Start            0000 (0)\n+21BCEC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219C28 Ext File Attributes   00000000 (0)\n-219C2C Local Header Offset   00044825 (280613)\n-219C30 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21BCEE Ext File Attributes   00000000 (0)\n+21BCF2 Local Header Offset   00065C9A (416922)\n+21BCF6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219C30: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21BCF6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219C89 CENTRAL HEADER #357   02014B50 (33639248)\n-219C8D Created Zip Spec      14 (20) '2.0'\n-219C8E Created OS            00 (0) 'MS-DOS'\n-219C8F Extract Zip Spec      14 (20) '2.0'\n-219C90 Extract OS            00 (0) 'MS-DOS'\n-219C91 General Purpose Flag  0808 (2056)\n+21BD42 CENTRAL HEADER #357   02014B50 (33639248)\n+21BD46 Created Zip Spec      14 (20) '2.0'\n+21BD47 Created OS            00 (0) 'MS-DOS'\n+21BD48 Extract Zip Spec      14 (20) '2.0'\n+21BD49 Extract OS            00 (0) 'MS-DOS'\n+21BD4A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219C93 Compression Method    0008 (8) 'Deflated'\n-219C95 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219C99 CRC                   00000000 (0)\n-219C9D Compressed Size       00000002 (2)\n-219CA1 Uncompressed Size     00000000 (0)\n-219CA5 Filename Length       0015 (21)\n-219CA7 Extra Length          0000 (0)\n-219CA9 Comment Length        0000 (0)\n-219CAB Disk Start            0000 (0)\n-219CAD Int File Attributes   0000 (0)\n+21BD4C Compression Method    0008 (8) 'Deflated'\n+21BD4E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21BD52 CRC                   FE374BB9 (4265036729)\n+21BD56 Compressed Size       000002AF (687)\n+21BD5A Uncompressed Size     000004F7 (1271)\n+21BD5E Filename Length       0049 (73)\n+21BD60 Extra Length          0000 (0)\n+21BD62 Comment Length        0000 (0)\n+21BD64 Disk Start            0000 (0)\n+21BD66 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219CAF Ext File Attributes   00000000 (0)\n-219CB3 Local Header Offset   000448FB (280827)\n-219CB7 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n+21BD68 Ext File Attributes   00000000 (0)\n+21BD6C Local Header Offset   00065FD8 (417752)\n+21BD70 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219CB7: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21BD70: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219CCC CENTRAL HEADER #358   02014B50 (33639248)\n-219CD0 Created Zip Spec      14 (20) '2.0'\n-219CD1 Created OS            00 (0) 'MS-DOS'\n-219CD2 Extract Zip Spec      14 (20) '2.0'\n-219CD3 Extract OS            00 (0) 'MS-DOS'\n-219CD4 General Purpose Flag  0808 (2056)\n+21BDB9 CENTRAL HEADER #358   02014B50 (33639248)\n+21BDBD Created Zip Spec      14 (20) '2.0'\n+21BDBE Created OS            00 (0) 'MS-DOS'\n+21BDBF Extract Zip Spec      14 (20) '2.0'\n+21BDC0 Extract OS            00 (0) 'MS-DOS'\n+21BDC1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219CD6 Compression Method    0008 (8) 'Deflated'\n-219CD8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219CDC CRC                   00000000 (0)\n-219CE0 Compressed Size       00000002 (2)\n-219CE4 Uncompressed Size     00000000 (0)\n-219CE8 Filename Length       001D (29)\n-219CEA Extra Length          0000 (0)\n-219CEC Comment Length        0000 (0)\n-219CEE Disk Start            0000 (0)\n-219CF0 Int File Attributes   0000 (0)\n+21BDC3 Compression Method    0008 (8) 'Deflated'\n+21BDC5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21BDC9 CRC                   EF9E0DDB (4020112859)\n+21BDCD Compressed Size       000002A9 (681)\n+21BDD1 Uncompressed Size     000004E0 (1248)\n+21BDD5 Filename Length       0044 (68)\n+21BDD7 Extra Length          0000 (0)\n+21BDD9 Comment Length        0000 (0)\n+21BDDB Disk Start            0000 (0)\n+21BDDD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219CF2 Ext File Attributes   00000000 (0)\n-219CF6 Local Header Offset   00044940 (280896)\n-219CFA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21BDDF Ext File Attributes   00000000 (0)\n+21BDE3 Local Header Offset   000662FE (418558)\n+21BDE7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219CFA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21BDE7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219D17 CENTRAL HEADER #359   02014B50 (33639248)\n-219D1B Created Zip Spec      14 (20) '2.0'\n-219D1C Created OS            00 (0) 'MS-DOS'\n-219D1D Extract Zip Spec      14 (20) '2.0'\n-219D1E Extract OS            00 (0) 'MS-DOS'\n-219D1F General Purpose Flag  0808 (2056)\n+21BE2B CENTRAL HEADER #359   02014B50 (33639248)\n+21BE2F Created Zip Spec      14 (20) '2.0'\n+21BE30 Created OS            00 (0) 'MS-DOS'\n+21BE31 Extract Zip Spec      14 (20) '2.0'\n+21BE32 Extract OS            00 (0) 'MS-DOS'\n+21BE33 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219D21 Compression Method    0008 (8) 'Deflated'\n-219D23 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219D27 CRC                   8DDA999F (2379913631)\n-219D2B Compressed Size       00000311 (785)\n-219D2F Uncompressed Size     000005F6 (1526)\n-219D33 Filename Length       0038 (56)\n-219D35 Extra Length          0000 (0)\n-219D37 Comment Length        0000 (0)\n-219D39 Disk Start            0000 (0)\n-219D3B Int File Attributes   0000 (0)\n+21BE35 Compression Method    0008 (8) 'Deflated'\n+21BE37 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21BE3B CRC                   65FB8949 (1710983497)\n+21BE3F Compressed Size       0000049B (1179)\n+21BE43 Uncompressed Size     00000C72 (3186)\n+21BE47 Filename Length       0047 (71)\n+21BE49 Extra Length          0000 (0)\n+21BE4B Comment Length        0000 (0)\n+21BE4D Disk Start            0000 (0)\n+21BE4F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219D3D Ext File Attributes   00000000 (0)\n-219D41 Local Header Offset   0004498D (280973)\n-219D45 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21BE51 Ext File Attributes   00000000 (0)\n+21BE55 Local Header Offset   00066619 (419353)\n+21BE59 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219D45: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21BE59: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219D7D CENTRAL HEADER #360   02014B50 (33639248)\n-219D81 Created Zip Spec      14 (20) '2.0'\n-219D82 Created OS            00 (0) 'MS-DOS'\n-219D83 Extract Zip Spec      14 (20) '2.0'\n-219D84 Extract OS            00 (0) 'MS-DOS'\n-219D85 General Purpose Flag  0808 (2056)\n+21BEA0 CENTRAL HEADER #360   02014B50 (33639248)\n+21BEA4 Created Zip Spec      14 (20) '2.0'\n+21BEA5 Created OS            00 (0) 'MS-DOS'\n+21BEA6 Extract Zip Spec      14 (20) '2.0'\n+21BEA7 Extract OS            00 (0) 'MS-DOS'\n+21BEA8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219D87 Compression Method    0008 (8) 'Deflated'\n-219D89 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219D8D CRC                   27965EEA (664166122)\n-219D91 Compressed Size       00000394 (916)\n-219D95 Uncompressed Size     00000824 (2084)\n-219D99 Filename Length       0029 (41)\n-219D9B Extra Length          0000 (0)\n-219D9D Comment Length        0000 (0)\n-219D9F Disk Start            0000 (0)\n-219DA1 Int File Attributes   0000 (0)\n+21BEAA Compression Method    0008 (8) 'Deflated'\n+21BEAC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21BEB0 CRC                   CC224977 (3424799095)\n+21BEB4 Compressed Size       000002A9 (681)\n+21BEB8 Uncompressed Size     000004D9 (1241)\n+21BEBC Filename Length       0043 (67)\n+21BEBE Extra Length          0000 (0)\n+21BEC0 Comment Length        0000 (0)\n+21BEC2 Disk Start            0000 (0)\n+21BEC4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219DA3 Ext File Attributes   00000000 (0)\n-219DA7 Local Header Offset   00044D04 (281860)\n-219DAB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21BEC6 Ext File Attributes   00000000 (0)\n+21BECA Local Header Offset   00066B29 (420649)\n+21BECE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219DAB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21BECE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219DD4 CENTRAL HEADER #361   02014B50 (33639248)\n-219DD8 Created Zip Spec      14 (20) '2.0'\n-219DD9 Created OS            00 (0) 'MS-DOS'\n-219DDA Extract Zip Spec      14 (20) '2.0'\n-219DDB Extract OS            00 (0) 'MS-DOS'\n-219DDC General Purpose Flag  0808 (2056)\n+21BF11 CENTRAL HEADER #361   02014B50 (33639248)\n+21BF15 Created Zip Spec      14 (20) '2.0'\n+21BF16 Created OS            00 (0) 'MS-DOS'\n+21BF17 Extract Zip Spec      14 (20) '2.0'\n+21BF18 Extract OS            00 (0) 'MS-DOS'\n+21BF19 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219DDE Compression Method    0008 (8) 'Deflated'\n-219DE0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219DE4 CRC                   5E2260E1 (1579311329)\n-219DE8 Compressed Size       0000036C (876)\n-219DEC Uncompressed Size     000006CA (1738)\n-219DF0 Filename Length       0030 (48)\n-219DF2 Extra Length          0000 (0)\n-219DF4 Comment Length        0000 (0)\n-219DF6 Disk Start            0000 (0)\n-219DF8 Int File Attributes   0000 (0)\n+21BF1B Compression Method    0008 (8) 'Deflated'\n+21BF1D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21BF21 CRC                   38CBB90F (952875279)\n+21BF25 Compressed Size       000003AE (942)\n+21BF29 Uncompressed Size     000008B0 (2224)\n+21BF2D Filename Length       0049 (73)\n+21BF2F Extra Length          0000 (0)\n+21BF31 Comment Length        0000 (0)\n+21BF33 Disk Start            0000 (0)\n+21BF35 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219DFA Ext File Attributes   00000000 (0)\n-219DFE Local Header Offset   000450EF (282863)\n-219E02 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21BF37 Ext File Attributes   00000000 (0)\n+21BF3B Local Header Offset   00066E43 (421443)\n+21BF3F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219E02: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21BF3F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219E32 CENTRAL HEADER #362   02014B50 (33639248)\n-219E36 Created Zip Spec      14 (20) '2.0'\n-219E37 Created OS            00 (0) 'MS-DOS'\n-219E38 Extract Zip Spec      14 (20) '2.0'\n-219E39 Extract OS            00 (0) 'MS-DOS'\n-219E3A General Purpose Flag  0808 (2056)\n+21BF88 CENTRAL HEADER #362   02014B50 (33639248)\n+21BF8C Created Zip Spec      14 (20) '2.0'\n+21BF8D Created OS            00 (0) 'MS-DOS'\n+21BF8E Extract Zip Spec      14 (20) '2.0'\n+21BF8F Extract OS            00 (0) 'MS-DOS'\n+21BF90 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219E3C Compression Method    0008 (8) 'Deflated'\n-219E3E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219E42 CRC                   665C4504 (1717323012)\n-219E46 Compressed Size       0000067E (1662)\n-219E4A Uncompressed Size     00001123 (4387)\n-219E4E Filename Length       002E (46)\n-219E50 Extra Length          0000 (0)\n-219E52 Comment Length        0000 (0)\n-219E54 Disk Start            0000 (0)\n-219E56 Int File Attributes   0000 (0)\n+21BF92 Compression Method    0008 (8) 'Deflated'\n+21BF94 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21BF98 CRC                   F0075F17 (4027014935)\n+21BF9C Compressed Size       000002B2 (690)\n+21BFA0 Uncompressed Size     00000513 (1299)\n+21BFA4 Filename Length       004B (75)\n+21BFA6 Extra Length          0000 (0)\n+21BFA8 Comment Length        0000 (0)\n+21BFAA Disk Start            0000 (0)\n+21BFAC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219E58 Ext File Attributes   00000000 (0)\n-219E5C Local Header Offset   000454B9 (283833)\n-219E60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21BFAE Ext File Attributes   00000000 (0)\n+21BFB2 Local Header Offset   00067268 (422504)\n+21BFB6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219E60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21BFB6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219E8E CENTRAL HEADER #363   02014B50 (33639248)\n-219E92 Created Zip Spec      14 (20) '2.0'\n-219E93 Created OS            00 (0) 'MS-DOS'\n-219E94 Extract Zip Spec      14 (20) '2.0'\n-219E95 Extract OS            00 (0) 'MS-DOS'\n-219E96 General Purpose Flag  0808 (2056)\n+21C001 CENTRAL HEADER #363   02014B50 (33639248)\n+21C005 Created Zip Spec      14 (20) '2.0'\n+21C006 Created OS            00 (0) 'MS-DOS'\n+21C007 Extract Zip Spec      14 (20) '2.0'\n+21C008 Extract OS            00 (0) 'MS-DOS'\n+21C009 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219E98 Compression Method    0008 (8) 'Deflated'\n-219E9A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219E9E CRC                   7FA20103 (2141323523)\n-219EA2 Compressed Size       0000029A (666)\n-219EA6 Uncompressed Size     00000534 (1332)\n-219EAA Filename Length       0035 (53)\n-219EAC Extra Length          0000 (0)\n-219EAE Comment Length        0000 (0)\n-219EB0 Disk Start            0000 (0)\n-219EB2 Int File Attributes   0000 (0)\n+21C00B Compression Method    0008 (8) 'Deflated'\n+21C00D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C011 CRC                   42E91C9D (1122573469)\n+21C015 Compressed Size       000002AE (686)\n+21C019 Uncompressed Size     000004F9 (1273)\n+21C01D Filename Length       0044 (68)\n+21C01F Extra Length          0000 (0)\n+21C021 Comment Length        0000 (0)\n+21C023 Disk Start            0000 (0)\n+21C025 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219EB4 Ext File Attributes   00000000 (0)\n-219EB8 Local Header Offset   00045B93 (285587)\n-219EBC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C027 Ext File Attributes   00000000 (0)\n+21C02B Local Header Offset   00067593 (423315)\n+21C02F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219EBC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C02F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219EF1 CENTRAL HEADER #364   02014B50 (33639248)\n-219EF5 Created Zip Spec      14 (20) '2.0'\n-219EF6 Created OS            00 (0) 'MS-DOS'\n-219EF7 Extract Zip Spec      14 (20) '2.0'\n-219EF8 Extract OS            00 (0) 'MS-DOS'\n-219EF9 General Purpose Flag  0808 (2056)\n+21C073 CENTRAL HEADER #364   02014B50 (33639248)\n+21C077 Created Zip Spec      14 (20) '2.0'\n+21C078 Created OS            00 (0) 'MS-DOS'\n+21C079 Extract Zip Spec      14 (20) '2.0'\n+21C07A Extract OS            00 (0) 'MS-DOS'\n+21C07B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219EFB Compression Method    0008 (8) 'Deflated'\n-219EFD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219F01 CRC                   EE5647F1 (3998631921)\n-219F05 Compressed Size       000004C0 (1216)\n-219F09 Uncompressed Size     00000B10 (2832)\n-219F0D Filename Length       002B (43)\n-219F0F Extra Length          0000 (0)\n-219F11 Comment Length        0000 (0)\n-219F13 Disk Start            0000 (0)\n-219F15 Int File Attributes   0000 (0)\n+21C07D Compression Method    0008 (8) 'Deflated'\n+21C07F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C083 CRC                   85A11C0C (2241928204)\n+21C087 Compressed Size       000002A6 (678)\n+21C08B Uncompressed Size     000004D0 (1232)\n+21C08F Filename Length       0042 (66)\n+21C091 Extra Length          0000 (0)\n+21C093 Comment Length        0000 (0)\n+21C095 Disk Start            0000 (0)\n+21C097 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219F17 Ext File Attributes   00000000 (0)\n-219F1B Local Header Offset   00045E90 (286352)\n-219F1F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C099 Ext File Attributes   00000000 (0)\n+21C09D Local Header Offset   000678B3 (424115)\n+21C0A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219F1F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C0A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219F4A CENTRAL HEADER #365   02014B50 (33639248)\n-219F4E Created Zip Spec      14 (20) '2.0'\n-219F4F Created OS            00 (0) 'MS-DOS'\n-219F50 Extract Zip Spec      14 (20) '2.0'\n-219F51 Extract OS            00 (0) 'MS-DOS'\n-219F52 General Purpose Flag  0808 (2056)\n+21C0E3 CENTRAL HEADER #365   02014B50 (33639248)\n+21C0E7 Created Zip Spec      14 (20) '2.0'\n+21C0E8 Created OS            00 (0) 'MS-DOS'\n+21C0E9 Extract Zip Spec      14 (20) '2.0'\n+21C0EA Extract OS            00 (0) 'MS-DOS'\n+21C0EB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219F54 Compression Method    0008 (8) 'Deflated'\n-219F56 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219F5A CRC                   2FCAE9BB (801827259)\n-219F5E Compressed Size       0000032F (815)\n-219F62 Uncompressed Size     000006CA (1738)\n-219F66 Filename Length       002B (43)\n-219F68 Extra Length          0000 (0)\n-219F6A Comment Length        0000 (0)\n-219F6C Disk Start            0000 (0)\n-219F6E Int File Attributes   0000 (0)\n+21C0ED Compression Method    0008 (8) 'Deflated'\n+21C0EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C0F3 CRC                   667CA259 (1719444057)\n+21C0F7 Compressed Size       000002AA (682)\n+21C0FB Uncompressed Size     000004EA (1258)\n+21C0FF Filename Length       0048 (72)\n+21C101 Extra Length          0000 (0)\n+21C103 Comment Length        0000 (0)\n+21C105 Disk Start            0000 (0)\n+21C107 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219F70 Ext File Attributes   00000000 (0)\n-219F74 Local Header Offset   000463A9 (287657)\n-219F78 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C109 Ext File Attributes   00000000 (0)\n+21C10D Local Header Offset   00067BC9 (424905)\n+21C111 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219F78: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C111: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219FA3 CENTRAL HEADER #366   02014B50 (33639248)\n-219FA7 Created Zip Spec      14 (20) '2.0'\n-219FA8 Created OS            00 (0) 'MS-DOS'\n-219FA9 Extract Zip Spec      14 (20) '2.0'\n-219FAA Extract OS            00 (0) 'MS-DOS'\n-219FAB General Purpose Flag  0808 (2056)\n+21C159 CENTRAL HEADER #366   02014B50 (33639248)\n+21C15D Created Zip Spec      14 (20) '2.0'\n+21C15E Created OS            00 (0) 'MS-DOS'\n+21C15F Extract Zip Spec      14 (20) '2.0'\n+21C160 Extract OS            00 (0) 'MS-DOS'\n+21C161 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-219FAD Compression Method    0008 (8) 'Deflated'\n-219FAF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-219FB3 CRC                   2EFAFE2D (788201005)\n-219FB7 Compressed Size       0000034D (845)\n-219FBB Uncompressed Size     00000732 (1842)\n-219FBF Filename Length       002D (45)\n-219FC1 Extra Length          0000 (0)\n-219FC3 Comment Length        0000 (0)\n-219FC5 Disk Start            0000 (0)\n-219FC7 Int File Attributes   0000 (0)\n+21C163 Compression Method    0008 (8) 'Deflated'\n+21C165 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C169 CRC                   4E4FEF3B (1313861435)\n+21C16D Compressed Size       000002BA (698)\n+21C171 Uncompressed Size     0000052C (1324)\n+21C175 Filename Length       004C (76)\n+21C177 Extra Length          0000 (0)\n+21C179 Comment Length        0000 (0)\n+21C17B Disk Start            0000 (0)\n+21C17D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-219FC9 Ext File Attributes   00000000 (0)\n-219FCD Local Header Offset   00046731 (288561)\n-219FD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C17F Ext File Attributes   00000000 (0)\n+21C183 Local Header Offset   00067EE9 (425705)\n+21C187 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x219FD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C187: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-219FFE CENTRAL HEADER #367   02014B50 (33639248)\n-21A002 Created Zip Spec      14 (20) '2.0'\n-21A003 Created OS            00 (0) 'MS-DOS'\n-21A004 Extract Zip Spec      14 (20) '2.0'\n-21A005 Extract OS            00 (0) 'MS-DOS'\n-21A006 General Purpose Flag  0808 (2056)\n+21C1D3 CENTRAL HEADER #367   02014B50 (33639248)\n+21C1D7 Created Zip Spec      14 (20) '2.0'\n+21C1D8 Created OS            00 (0) 'MS-DOS'\n+21C1D9 Extract Zip Spec      14 (20) '2.0'\n+21C1DA Extract OS            00 (0) 'MS-DOS'\n+21C1DB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A008 Compression Method    0008 (8) 'Deflated'\n-21A00A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A00E CRC                   09ED5602 (166548994)\n-21A012 Compressed Size       0000022B (555)\n-21A016 Uncompressed Size     000003D1 (977)\n-21A01A Filename Length       0028 (40)\n-21A01C Extra Length          0000 (0)\n-21A01E Comment Length        0000 (0)\n-21A020 Disk Start            0000 (0)\n-21A022 Int File Attributes   0000 (0)\n+21C1DD Compression Method    0008 (8) 'Deflated'\n+21C1DF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C1E3 CRC                   00000000 (0)\n+21C1E7 Compressed Size       00000002 (2)\n+21C1EB Uncompressed Size     00000000 (0)\n+21C1EF Filename Length       0022 (34)\n+21C1F1 Extra Length          0000 (0)\n+21C1F3 Comment Length        0000 (0)\n+21C1F5 Disk Start            0000 (0)\n+21C1F7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A024 Ext File Attributes   00000000 (0)\n-21A028 Local Header Offset   00046AD9 (289497)\n-21A02C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C1F9 Ext File Attributes   00000000 (0)\n+21C1FD Local Header Offset   0006821D (426525)\n+21C201 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A02C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C201: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A054 CENTRAL HEADER #368   02014B50 (33639248)\n-21A058 Created Zip Spec      14 (20) '2.0'\n-21A059 Created OS            00 (0) 'MS-DOS'\n-21A05A Extract Zip Spec      14 (20) '2.0'\n-21A05B Extract OS            00 (0) 'MS-DOS'\n-21A05C General Purpose Flag  0808 (2056)\n+21C223 CENTRAL HEADER #368   02014B50 (33639248)\n+21C227 Created Zip Spec      14 (20) '2.0'\n+21C228 Created OS            00 (0) 'MS-DOS'\n+21C229 Extract Zip Spec      14 (20) '2.0'\n+21C22A Extract OS            00 (0) 'MS-DOS'\n+21C22B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A05E Compression Method    0008 (8) 'Deflated'\n-21A060 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A064 CRC                   58C25CA8 (1489132712)\n-21A068 Compressed Size       0000054B (1355)\n-21A06C Uncompressed Size     00000CF3 (3315)\n-21A070 Filename Length       0028 (40)\n-21A072 Extra Length          0000 (0)\n-21A074 Comment Length        0000 (0)\n-21A076 Disk Start            0000 (0)\n-21A078 Int File Attributes   0000 (0)\n+21C22D Compression Method    0008 (8) 'Deflated'\n+21C22F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C233 CRC                   9A2D2058 (2586648664)\n+21C237 Compressed Size       000004E4 (1252)\n+21C23B Uncompressed Size     00000D7A (3450)\n+21C23F Filename Length       002F (47)\n+21C241 Extra Length          0000 (0)\n+21C243 Comment Length        0000 (0)\n+21C245 Disk Start            0000 (0)\n+21C247 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A07A Ext File Attributes   00000000 (0)\n-21A07E Local Header Offset   00046D5A (290138)\n-21A082 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C249 Ext File Attributes   00000000 (0)\n+21C24D Local Header Offset   0006826F (426607)\n+21C251 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A082: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C251: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A0AA CENTRAL HEADER #369   02014B50 (33639248)\n-21A0AE Created Zip Spec      14 (20) '2.0'\n-21A0AF Created OS            00 (0) 'MS-DOS'\n-21A0B0 Extract Zip Spec      14 (20) '2.0'\n-21A0B1 Extract OS            00 (0) 'MS-DOS'\n-21A0B2 General Purpose Flag  0808 (2056)\n+21C280 CENTRAL HEADER #369   02014B50 (33639248)\n+21C284 Created Zip Spec      14 (20) '2.0'\n+21C285 Created OS            00 (0) 'MS-DOS'\n+21C286 Extract Zip Spec      14 (20) '2.0'\n+21C287 Extract OS            00 (0) 'MS-DOS'\n+21C288 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A0B4 Compression Method    0008 (8) 'Deflated'\n-21A0B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A0BA CRC                   AC72FCB3 (2893216947)\n-21A0BE Compressed Size       000005F2 (1522)\n-21A0C2 Uncompressed Size     00001018 (4120)\n-21A0C6 Filename Length       002D (45)\n-21A0C8 Extra Length          0000 (0)\n-21A0CA Comment Length        0000 (0)\n-21A0CC Disk Start            0000 (0)\n-21A0CE Int File Attributes   0000 (0)\n+21C28A Compression Method    0008 (8) 'Deflated'\n+21C28C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C290 CRC                   8FD49BC2 (2413075394)\n+21C294 Compressed Size       000004A9 (1193)\n+21C298 Uncompressed Size     00000A82 (2690)\n+21C29C Filename Length       002F (47)\n+21C29E Extra Length          0000 (0)\n+21C2A0 Comment Length        0000 (0)\n+21C2A2 Disk Start            0000 (0)\n+21C2A4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A0D0 Ext File Attributes   00000000 (0)\n-21A0D4 Local Header Offset   000472FB (291579)\n-21A0D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C2A6 Ext File Attributes   00000000 (0)\n+21C2AA Local Header Offset   000687B0 (427952)\n+21C2AE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A0D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C2AE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A105 CENTRAL HEADER #370   02014B50 (33639248)\n-21A109 Created Zip Spec      14 (20) '2.0'\n-21A10A Created OS            00 (0) 'MS-DOS'\n-21A10B Extract Zip Spec      14 (20) '2.0'\n-21A10C Extract OS            00 (0) 'MS-DOS'\n-21A10D General Purpose Flag  0808 (2056)\n+21C2DD CENTRAL HEADER #370   02014B50 (33639248)\n+21C2E1 Created Zip Spec      14 (20) '2.0'\n+21C2E2 Created OS            00 (0) 'MS-DOS'\n+21C2E3 Extract Zip Spec      14 (20) '2.0'\n+21C2E4 Extract OS            00 (0) 'MS-DOS'\n+21C2E5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A10F Compression Method    0008 (8) 'Deflated'\n-21A111 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A115 CRC                   FDB2D35D (4256355165)\n-21A119 Compressed Size       00000396 (918)\n-21A11D Uncompressed Size     00000759 (1881)\n-21A121 Filename Length       002F (47)\n-21A123 Extra Length          0000 (0)\n-21A125 Comment Length        0000 (0)\n-21A127 Disk Start            0000 (0)\n-21A129 Int File Attributes   0000 (0)\n+21C2E7 Compression Method    0008 (8) 'Deflated'\n+21C2E9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C2ED CRC                   DFC97490 (3754521744)\n+21C2F1 Compressed Size       00000E1E (3614)\n+21C2F5 Uncompressed Size     00003D93 (15763)\n+21C2F9 Filename Length       0041 (65)\n+21C2FB Extra Length          0000 (0)\n+21C2FD Comment Length        0000 (0)\n+21C2FF Disk Start            0000 (0)\n+21C301 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A12B Ext File Attributes   00000000 (0)\n-21A12F Local Header Offset   00047948 (293192)\n-21A133 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C303 Ext File Attributes   00000000 (0)\n+21C307 Local Header Offset   00068CB6 (429238)\n+21C30B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A133: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C30B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A162 CENTRAL HEADER #371   02014B50 (33639248)\n-21A166 Created Zip Spec      14 (20) '2.0'\n-21A167 Created OS            00 (0) 'MS-DOS'\n-21A168 Extract Zip Spec      14 (20) '2.0'\n-21A169 Extract OS            00 (0) 'MS-DOS'\n-21A16A General Purpose Flag  0808 (2056)\n+21C34C CENTRAL HEADER #371   02014B50 (33639248)\n+21C350 Created Zip Spec      14 (20) '2.0'\n+21C351 Created OS            00 (0) 'MS-DOS'\n+21C352 Extract Zip Spec      14 (20) '2.0'\n+21C353 Extract OS            00 (0) 'MS-DOS'\n+21C354 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A16C Compression Method    0008 (8) 'Deflated'\n-21A16E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A172 CRC                   BC987223 (3164107299)\n-21A176 Compressed Size       00000252 (594)\n-21A17A Uncompressed Size     00000435 (1077)\n-21A17E Filename Length       002F (47)\n-21A180 Extra Length          0000 (0)\n-21A182 Comment Length        0000 (0)\n-21A184 Disk Start            0000 (0)\n-21A186 Int File Attributes   0000 (0)\n+21C356 Compression Method    0008 (8) 'Deflated'\n+21C358 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C35C CRC                   D1BB774A (3518723914)\n+21C360 Compressed Size       00000267 (615)\n+21C364 Uncompressed Size     000004B9 (1209)\n+21C368 Filename Length       0034 (52)\n+21C36A Extra Length          0000 (0)\n+21C36C Comment Length        0000 (0)\n+21C36E Disk Start            0000 (0)\n+21C370 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A188 Ext File Attributes   00000000 (0)\n-21A18C Local Header Offset   00047D3B (294203)\n-21A190 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C372 Ext File Attributes   00000000 (0)\n+21C376 Local Header Offset   00069B43 (432963)\n+21C37A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A190: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C37A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A1BF CENTRAL HEADER #372   02014B50 (33639248)\n-21A1C3 Created Zip Spec      14 (20) '2.0'\n-21A1C4 Created OS            00 (0) 'MS-DOS'\n-21A1C5 Extract Zip Spec      14 (20) '2.0'\n-21A1C6 Extract OS            00 (0) 'MS-DOS'\n-21A1C7 General Purpose Flag  0808 (2056)\n+21C3AE CENTRAL HEADER #372   02014B50 (33639248)\n+21C3B2 Created Zip Spec      14 (20) '2.0'\n+21C3B3 Created OS            00 (0) 'MS-DOS'\n+21C3B4 Extract Zip Spec      14 (20) '2.0'\n+21C3B5 Extract OS            00 (0) 'MS-DOS'\n+21C3B6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A1C9 Compression Method    0008 (8) 'Deflated'\n-21A1CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A1CF CRC                   00000000 (0)\n-21A1D3 Compressed Size       00000002 (2)\n-21A1D7 Uncompressed Size     00000000 (0)\n-21A1DB Filename Length       002A (42)\n-21A1DD Extra Length          0000 (0)\n-21A1DF Comment Length        0000 (0)\n-21A1E1 Disk Start            0000 (0)\n-21A1E3 Int File Attributes   0000 (0)\n+21C3B8 Compression Method    0008 (8) 'Deflated'\n+21C3BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C3BE CRC                   B3A8C3FA (3014181882)\n+21C3C2 Compressed Size       0000027E (638)\n+21C3C6 Uncompressed Size     000004B0 (1200)\n+21C3CA Filename Length       0043 (67)\n+21C3CC Extra Length          0000 (0)\n+21C3CE Comment Length        0000 (0)\n+21C3D0 Disk Start            0000 (0)\n+21C3D2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A1E5 Ext File Attributes   00000000 (0)\n-21A1E9 Local Header Offset   00047FEA (294890)\n-21A1ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C3D4 Ext File Attributes   00000000 (0)\n+21C3D8 Local Header Offset   00069E0C (433676)\n+21C3DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A1ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C3DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A217 CENTRAL HEADER #373   02014B50 (33639248)\n-21A21B Created Zip Spec      14 (20) '2.0'\n-21A21C Created OS            00 (0) 'MS-DOS'\n-21A21D Extract Zip Spec      14 (20) '2.0'\n-21A21E Extract OS            00 (0) 'MS-DOS'\n-21A21F General Purpose Flag  0808 (2056)\n+21C41F CENTRAL HEADER #373   02014B50 (33639248)\n+21C423 Created Zip Spec      14 (20) '2.0'\n+21C424 Created OS            00 (0) 'MS-DOS'\n+21C425 Extract Zip Spec      14 (20) '2.0'\n+21C426 Extract OS            00 (0) 'MS-DOS'\n+21C427 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A221 Compression Method    0008 (8) 'Deflated'\n-21A223 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A227 CRC                   91868A4C (2441513548)\n-21A22B Compressed Size       000008AF (2223)\n-21A22F Uncompressed Size     00002146 (8518)\n-21A233 Filename Length       0043 (67)\n-21A235 Extra Length          0000 (0)\n-21A237 Comment Length        0000 (0)\n-21A239 Disk Start            0000 (0)\n-21A23B Int File Attributes   0000 (0)\n+21C429 Compression Method    0008 (8) 'Deflated'\n+21C42B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C42F CRC                   663E77E4 (1715369956)\n+21C433 Compressed Size       0000028A (650)\n+21C437 Uncompressed Size     000004EE (1262)\n+21C43B Filename Length       003B (59)\n+21C43D Extra Length          0000 (0)\n+21C43F Comment Length        0000 (0)\n+21C441 Disk Start            0000 (0)\n+21C443 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A23D Ext File Attributes   00000000 (0)\n-21A241 Local Header Offset   00048044 (294980)\n-21A245 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C445 Ext File Attributes   00000000 (0)\n+21C449 Local Header Offset   0006A0FB (434427)\n+21C44D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A245: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C44D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A288 CENTRAL HEADER #374   02014B50 (33639248)\n-21A28C Created Zip Spec      14 (20) '2.0'\n-21A28D Created OS            00 (0) 'MS-DOS'\n-21A28E Extract Zip Spec      14 (20) '2.0'\n-21A28F Extract OS            00 (0) 'MS-DOS'\n-21A290 General Purpose Flag  0808 (2056)\n+21C488 CENTRAL HEADER #374   02014B50 (33639248)\n+21C48C Created Zip Spec      14 (20) '2.0'\n+21C48D Created OS            00 (0) 'MS-DOS'\n+21C48E Extract Zip Spec      14 (20) '2.0'\n+21C48F Extract OS            00 (0) 'MS-DOS'\n+21C490 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A292 Compression Method    0008 (8) 'Deflated'\n-21A294 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A298 CRC                   00000000 (0)\n-21A29C Compressed Size       00000002 (2)\n-21A2A0 Uncompressed Size     00000000 (0)\n-21A2A4 Filename Length       0031 (49)\n-21A2A6 Extra Length          0000 (0)\n-21A2A8 Comment Length        0000 (0)\n-21A2AA Disk Start            0000 (0)\n-21A2AC Int File Attributes   0000 (0)\n+21C492 Compression Method    0008 (8) 'Deflated'\n+21C494 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C498 CRC                   4C849D6C (1283759468)\n+21C49C Compressed Size       00000265 (613)\n+21C4A0 Uncompressed Size     0000047A (1146)\n+21C4A4 Filename Length       0037 (55)\n+21C4A6 Extra Length          0000 (0)\n+21C4A8 Comment Length        0000 (0)\n+21C4AA Disk Start            0000 (0)\n+21C4AC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A2AE Ext File Attributes   00000000 (0)\n-21A2B2 Local Header Offset   00048964 (297316)\n-21A2B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C4AE Ext File Attributes   00000000 (0)\n+21C4B2 Local Header Offset   0006A3EE (435182)\n+21C4B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A2B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C4B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A2E7 CENTRAL HEADER #375   02014B50 (33639248)\n-21A2EB Created Zip Spec      14 (20) '2.0'\n-21A2EC Created OS            00 (0) 'MS-DOS'\n-21A2ED Extract Zip Spec      14 (20) '2.0'\n-21A2EE Extract OS            00 (0) 'MS-DOS'\n-21A2EF General Purpose Flag  0808 (2056)\n+21C4ED CENTRAL HEADER #375   02014B50 (33639248)\n+21C4F1 Created Zip Spec      14 (20) '2.0'\n+21C4F2 Created OS            00 (0) 'MS-DOS'\n+21C4F3 Extract Zip Spec      14 (20) '2.0'\n+21C4F4 Extract OS            00 (0) 'MS-DOS'\n+21C4F5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A2F1 Compression Method    0008 (8) 'Deflated'\n-21A2F3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A2F7 CRC                   FB552F52 (4216663890)\n-21A2FB Compressed Size       0000028F (655)\n-21A2FF Uncompressed Size     00000532 (1330)\n-21A303 Filename Length       0048 (72)\n-21A305 Extra Length          0000 (0)\n-21A307 Comment Length        0000 (0)\n-21A309 Disk Start            0000 (0)\n-21A30B Int File Attributes   0000 (0)\n+21C4F7 Compression Method    0008 (8) 'Deflated'\n+21C4F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C4FD CRC                   1F091D5A (520691034)\n+21C501 Compressed Size       00002040 (8256)\n+21C505 Uncompressed Size     0000A106 (41222)\n+21C509 Filename Length       0036 (54)\n+21C50B Extra Length          0000 (0)\n+21C50D Comment Length        0000 (0)\n+21C50F Disk Start            0000 (0)\n+21C511 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A30D Ext File Attributes   00000000 (0)\n-21A311 Local Header Offset   000489C5 (297413)\n-21A315 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C513 Ext File Attributes   00000000 (0)\n+21C517 Local Header Offset   0006A6B8 (435896)\n+21C51B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A315: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C51B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A35D CENTRAL HEADER #376   02014B50 (33639248)\n-21A361 Created Zip Spec      14 (20) '2.0'\n-21A362 Created OS            00 (0) 'MS-DOS'\n-21A363 Extract Zip Spec      14 (20) '2.0'\n-21A364 Extract OS            00 (0) 'MS-DOS'\n-21A365 General Purpose Flag  0808 (2056)\n+21C551 CENTRAL HEADER #376   02014B50 (33639248)\n+21C555 Created Zip Spec      14 (20) '2.0'\n+21C556 Created OS            00 (0) 'MS-DOS'\n+21C557 Extract Zip Spec      14 (20) '2.0'\n+21C558 Extract OS            00 (0) 'MS-DOS'\n+21C559 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A367 Compression Method    0008 (8) 'Deflated'\n-21A369 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A36D CRC                   87AAF61F (2276128287)\n-21A371 Compressed Size       00000267 (615)\n-21A375 Uncompressed Size     000004F6 (1270)\n-21A379 Filename Length       004F (79)\n-21A37B Extra Length          0000 (0)\n-21A37D Comment Length        0000 (0)\n-21A37F Disk Start            0000 (0)\n-21A381 Int File Attributes   0000 (0)\n+21C55B Compression Method    0008 (8) 'Deflated'\n+21C55D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C561 CRC                   BC70E4F4 (3161515252)\n+21C565 Compressed Size       000002E4 (740)\n+21C569 Uncompressed Size     000005B8 (1464)\n+21C56D Filename Length       0036 (54)\n+21C56F Extra Length          0000 (0)\n+21C571 Comment Length        0000 (0)\n+21C573 Disk Start            0000 (0)\n+21C575 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A383 Ext File Attributes   00000000 (0)\n-21A387 Local Header Offset   00048CCA (298186)\n-21A38B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C577 Ext File Attributes   00000000 (0)\n+21C57B Local Header Offset   0006C75C (444252)\n+21C57F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A38B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C57F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A3DA CENTRAL HEADER #377   02014B50 (33639248)\n-21A3DE Created Zip Spec      14 (20) '2.0'\n-21A3DF Created OS            00 (0) 'MS-DOS'\n-21A3E0 Extract Zip Spec      14 (20) '2.0'\n-21A3E1 Extract OS            00 (0) 'MS-DOS'\n-21A3E2 General Purpose Flag  0808 (2056)\n+21C5B5 CENTRAL HEADER #377   02014B50 (33639248)\n+21C5B9 Created Zip Spec      14 (20) '2.0'\n+21C5BA Created OS            00 (0) 'MS-DOS'\n+21C5BB Extract Zip Spec      14 (20) '2.0'\n+21C5BC Extract OS            00 (0) 'MS-DOS'\n+21C5BD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A3E4 Compression Method    0008 (8) 'Deflated'\n-21A3E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A3EA CRC                   00000000 (0)\n-21A3EE Compressed Size       00000002 (2)\n-21A3F2 Uncompressed Size     00000000 (0)\n-21A3F6 Filename Length       0033 (51)\n-21A3F8 Extra Length          0000 (0)\n-21A3FA Comment Length        0000 (0)\n-21A3FC Disk Start            0000 (0)\n-21A3FE Int File Attributes   0000 (0)\n+21C5BF Compression Method    0008 (8) 'Deflated'\n+21C5C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C5C5 CRC                   48D76DDD (1222077917)\n+21C5C9 Compressed Size       0000043E (1086)\n+21C5CD Uncompressed Size     00000932 (2354)\n+21C5D1 Filename Length       002A (42)\n+21C5D3 Extra Length          0000 (0)\n+21C5D5 Comment Length        0000 (0)\n+21C5D7 Disk Start            0000 (0)\n+21C5D9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A400 Ext File Attributes   00000000 (0)\n-21A404 Local Header Offset   00048FAE (298926)\n-21A408 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C5DB Ext File Attributes   00000000 (0)\n+21C5DF Local Header Offset   0006CAA4 (445092)\n+21C5E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A408: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C5E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A43B CENTRAL HEADER #378   02014B50 (33639248)\n-21A43F Created Zip Spec      14 (20) '2.0'\n-21A440 Created OS            00 (0) 'MS-DOS'\n-21A441 Extract Zip Spec      14 (20) '2.0'\n-21A442 Extract OS            00 (0) 'MS-DOS'\n-21A443 General Purpose Flag  0808 (2056)\n+21C60D CENTRAL HEADER #378   02014B50 (33639248)\n+21C611 Created Zip Spec      14 (20) '2.0'\n+21C612 Created OS            00 (0) 'MS-DOS'\n+21C613 Extract Zip Spec      14 (20) '2.0'\n+21C614 Extract OS            00 (0) 'MS-DOS'\n+21C615 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A445 Compression Method    0008 (8) 'Deflated'\n-21A447 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A44B CRC                   267D653A (645752122)\n-21A44F Compressed Size       00000289 (649)\n-21A453 Uncompressed Size     00000532 (1330)\n-21A457 Filename Length       004C (76)\n-21A459 Extra Length          0000 (0)\n-21A45B Comment Length        0000 (0)\n-21A45D Disk Start            0000 (0)\n-21A45F Int File Attributes   0000 (0)\n+21C617 Compression Method    0008 (8) 'Deflated'\n+21C619 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C61D CRC                   8DAF0532 (2377057586)\n+21C621 Compressed Size       00000289 (649)\n+21C625 Uncompressed Size     000004F2 (1266)\n+21C629 Filename Length       003E (62)\n+21C62B Extra Length          0000 (0)\n+21C62D Comment Length        0000 (0)\n+21C62F Disk Start            0000 (0)\n+21C631 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A461 Ext File Attributes   00000000 (0)\n-21A465 Local Header Offset   00049011 (299025)\n-21A469 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C633 Ext File Attributes   00000000 (0)\n+21C637 Local Header Offset   0006CF3A (446266)\n+21C63B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A469: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C63B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A4B5 CENTRAL HEADER #379   02014B50 (33639248)\n-21A4B9 Created Zip Spec      14 (20) '2.0'\n-21A4BA Created OS            00 (0) 'MS-DOS'\n-21A4BB Extract Zip Spec      14 (20) '2.0'\n-21A4BC Extract OS            00 (0) 'MS-DOS'\n-21A4BD General Purpose Flag  0808 (2056)\n+21C679 CENTRAL HEADER #379   02014B50 (33639248)\n+21C67D Created Zip Spec      14 (20) '2.0'\n+21C67E Created OS            00 (0) 'MS-DOS'\n+21C67F Extract Zip Spec      14 (20) '2.0'\n+21C680 Extract OS            00 (0) 'MS-DOS'\n+21C681 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A4BF Compression Method    0008 (8) 'Deflated'\n-21A4C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A4C5 CRC                   2179F10E (561639694)\n-21A4C9 Compressed Size       00000265 (613)\n-21A4CD Uncompressed Size     000004FE (1278)\n-21A4D1 Filename Length       0053 (83)\n-21A4D3 Extra Length          0000 (0)\n-21A4D5 Comment Length        0000 (0)\n-21A4D7 Disk Start            0000 (0)\n-21A4D9 Int File Attributes   0000 (0)\n+21C683 Compression Method    0008 (8) 'Deflated'\n+21C685 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C689 CRC                   5CF3A6C0 (1559471808)\n+21C68D Compressed Size       0000029B (667)\n+21C691 Uncompressed Size     00000535 (1333)\n+21C695 Filename Length       002E (46)\n+21C697 Extra Length          0000 (0)\n+21C699 Comment Length        0000 (0)\n+21C69B Disk Start            0000 (0)\n+21C69D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A4DB Ext File Attributes   00000000 (0)\n-21A4DF Local Header Offset   00049314 (299796)\n-21A4E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C69F Ext File Attributes   00000000 (0)\n+21C6A3 Local Header Offset   0006D22F (447023)\n+21C6A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A4E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C6A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A536 CENTRAL HEADER #380   02014B50 (33639248)\n-21A53A Created Zip Spec      14 (20) '2.0'\n-21A53B Created OS            00 (0) 'MS-DOS'\n-21A53C Extract Zip Spec      14 (20) '2.0'\n-21A53D Extract OS            00 (0) 'MS-DOS'\n-21A53E General Purpose Flag  0808 (2056)\n+21C6D5 CENTRAL HEADER #380   02014B50 (33639248)\n+21C6D9 Created Zip Spec      14 (20) '2.0'\n+21C6DA Created OS            00 (0) 'MS-DOS'\n+21C6DB Extract Zip Spec      14 (20) '2.0'\n+21C6DC Extract OS            00 (0) 'MS-DOS'\n+21C6DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A540 Compression Method    0008 (8) 'Deflated'\n-21A542 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A546 CRC                   00000000 (0)\n-21A54A Compressed Size       00000002 (2)\n-21A54E Uncompressed Size     00000000 (0)\n-21A552 Filename Length       0031 (49)\n-21A554 Extra Length          0000 (0)\n-21A556 Comment Length        0000 (0)\n-21A558 Disk Start            0000 (0)\n-21A55A Int File Attributes   0000 (0)\n+21C6DF Compression Method    0008 (8) 'Deflated'\n+21C6E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C6E5 CRC                   00000000 (0)\n+21C6E9 Compressed Size       00000002 (2)\n+21C6ED Uncompressed Size     00000000 (0)\n+21C6F1 Filename Length       002A (42)\n+21C6F3 Extra Length          0000 (0)\n+21C6F5 Comment Length        0000 (0)\n+21C6F7 Disk Start            0000 (0)\n+21C6F9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A55C Ext File Attributes   00000000 (0)\n-21A560 Local Header Offset   000495FA (300538)\n-21A564 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C6FB Ext File Attributes   00000000 (0)\n+21C6FF Local Header Offset   0006D526 (447782)\n+21C703 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A564: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C703: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A595 CENTRAL HEADER #381   02014B50 (33639248)\n-21A599 Created Zip Spec      14 (20) '2.0'\n-21A59A Created OS            00 (0) 'MS-DOS'\n-21A59B Extract Zip Spec      14 (20) '2.0'\n-21A59C Extract OS            00 (0) 'MS-DOS'\n-21A59D General Purpose Flag  0808 (2056)\n+21C72D CENTRAL HEADER #381   02014B50 (33639248)\n+21C731 Created Zip Spec      14 (20) '2.0'\n+21C732 Created OS            00 (0) 'MS-DOS'\n+21C733 Extract Zip Spec      14 (20) '2.0'\n+21C734 Extract OS            00 (0) 'MS-DOS'\n+21C735 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A59F Compression Method    0008 (8) 'Deflated'\n-21A5A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A5A5 CRC                   AF4730A5 (2940678309)\n-21A5A9 Compressed Size       0000089E (2206)\n-21A5AD Uncompressed Size     00002151 (8529)\n-21A5B1 Filename Length       0042 (66)\n-21A5B3 Extra Length          0000 (0)\n-21A5B5 Comment Length        0000 (0)\n-21A5B7 Disk Start            0000 (0)\n-21A5B9 Int File Attributes   0000 (0)\n+21C737 Compression Method    0008 (8) 'Deflated'\n+21C739 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C73D CRC                   EA8B59C6 (3935001030)\n+21C741 Compressed Size       0000033F (831)\n+21C745 Uncompressed Size     00000800 (2048)\n+21C749 Filename Length       0047 (71)\n+21C74B Extra Length          0000 (0)\n+21C74D Comment Length        0000 (0)\n+21C74F Disk Start            0000 (0)\n+21C751 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A5BB Ext File Attributes   00000000 (0)\n-21A5BF Local Header Offset   0004965B (300635)\n-21A5C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C753 Ext File Attributes   00000000 (0)\n+21C757 Local Header Offset   0006D580 (447872)\n+21C75B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A5C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C75B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A605 CENTRAL HEADER #382   02014B50 (33639248)\n-21A609 Created Zip Spec      14 (20) '2.0'\n-21A60A Created OS            00 (0) 'MS-DOS'\n-21A60B Extract Zip Spec      14 (20) '2.0'\n-21A60C Extract OS            00 (0) 'MS-DOS'\n-21A60D General Purpose Flag  0808 (2056)\n+21C7A2 CENTRAL HEADER #382   02014B50 (33639248)\n+21C7A6 Created Zip Spec      14 (20) '2.0'\n+21C7A7 Created OS            00 (0) 'MS-DOS'\n+21C7A8 Extract Zip Spec      14 (20) '2.0'\n+21C7A9 Extract OS            00 (0) 'MS-DOS'\n+21C7AA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A60F Compression Method    0008 (8) 'Deflated'\n-21A611 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A615 CRC                   00000000 (0)\n-21A619 Compressed Size       00000002 (2)\n-21A61D Uncompressed Size     00000000 (0)\n-21A621 Filename Length       0037 (55)\n-21A623 Extra Length          0000 (0)\n-21A625 Comment Length        0000 (0)\n-21A627 Disk Start            0000 (0)\n-21A629 Int File Attributes   0000 (0)\n+21C7AC Compression Method    0008 (8) 'Deflated'\n+21C7AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C7B2 CRC                   3280412A (847266090)\n+21C7B6 Compressed Size       000002CE (718)\n+21C7BA Uncompressed Size     0000060F (1551)\n+21C7BE Filename Length       0042 (66)\n+21C7C0 Extra Length          0000 (0)\n+21C7C2 Comment Length        0000 (0)\n+21C7C4 Disk Start            0000 (0)\n+21C7C6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A62B Ext File Attributes   00000000 (0)\n-21A62F Local Header Offset   00049F69 (302953)\n-21A633 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C7C8 Ext File Attributes   00000000 (0)\n+21C7CC Local Header Offset   0006D934 (448820)\n+21C7D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A633: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C7D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A66A CENTRAL HEADER #383   02014B50 (33639248)\n-21A66E Created Zip Spec      14 (20) '2.0'\n-21A66F Created OS            00 (0) 'MS-DOS'\n-21A670 Extract Zip Spec      14 (20) '2.0'\n-21A671 Extract OS            00 (0) 'MS-DOS'\n-21A672 General Purpose Flag  0808 (2056)\n+21C812 CENTRAL HEADER #383   02014B50 (33639248)\n+21C816 Created Zip Spec      14 (20) '2.0'\n+21C817 Created OS            00 (0) 'MS-DOS'\n+21C818 Extract Zip Spec      14 (20) '2.0'\n+21C819 Extract OS            00 (0) 'MS-DOS'\n+21C81A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A674 Compression Method    0008 (8) 'Deflated'\n-21A676 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A67A CRC                   036D4C42 (57494594)\n-21A67E Compressed Size       000003B9 (953)\n-21A682 Uncompressed Size     00000B63 (2915)\n-21A686 Filename Length       0046 (70)\n-21A688 Extra Length          0000 (0)\n-21A68A Comment Length        0000 (0)\n-21A68C Disk Start            0000 (0)\n-21A68E Int File Attributes   0000 (0)\n+21C81C Compression Method    0008 (8) 'Deflated'\n+21C81E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C822 CRC                   00000000 (0)\n+21C826 Compressed Size       00000002 (2)\n+21C82A Uncompressed Size     00000000 (0)\n+21C82E Filename Length       002A (42)\n+21C830 Extra Length          0000 (0)\n+21C832 Comment Length        0000 (0)\n+21C834 Disk Start            0000 (0)\n+21C836 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A690 Ext File Attributes   00000000 (0)\n-21A694 Local Header Offset   00049FD0 (303056)\n-21A698 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C838 Ext File Attributes   00000000 (0)\n+21C83C Local Header Offset   0006DC72 (449650)\n+21C840 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A698: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C840: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A6DE CENTRAL HEADER #384   02014B50 (33639248)\n-21A6E2 Created Zip Spec      14 (20) '2.0'\n-21A6E3 Created OS            00 (0) 'MS-DOS'\n-21A6E4 Extract Zip Spec      14 (20) '2.0'\n-21A6E5 Extract OS            00 (0) 'MS-DOS'\n-21A6E6 General Purpose Flag  0808 (2056)\n+21C86A CENTRAL HEADER #384   02014B50 (33639248)\n+21C86E Created Zip Spec      14 (20) '2.0'\n+21C86F Created OS            00 (0) 'MS-DOS'\n+21C870 Extract Zip Spec      14 (20) '2.0'\n+21C871 Extract OS            00 (0) 'MS-DOS'\n+21C872 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A6E8 Compression Method    0008 (8) 'Deflated'\n-21A6EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A6EE CRC                   27E35EC9 (669212361)\n-21A6F2 Compressed Size       0000031E (798)\n-21A6F6 Uncompressed Size     0000080A (2058)\n-21A6FA Filename Length       004E (78)\n-21A6FC Extra Length          0000 (0)\n-21A6FE Comment Length        0000 (0)\n-21A700 Disk Start            0000 (0)\n-21A702 Int File Attributes   0000 (0)\n+21C874 Compression Method    0008 (8) 'Deflated'\n+21C876 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C87A CRC                   B81BB8E1 (3088824545)\n+21C87E Compressed Size       0000054D (1357)\n+21C882 Uncompressed Size     000011D4 (4564)\n+21C886 Filename Length       0041 (65)\n+21C888 Extra Length          0000 (0)\n+21C88A Comment Length        0000 (0)\n+21C88C Disk Start            0000 (0)\n+21C88E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A704 Ext File Attributes   00000000 (0)\n-21A708 Local Header Offset   0004A3FD (304125)\n-21A70C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C890 Ext File Attributes   00000000 (0)\n+21C894 Local Header Offset   0006DCCC (449740)\n+21C898 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A70C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C898: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A75A CENTRAL HEADER #385   02014B50 (33639248)\n-21A75E Created Zip Spec      14 (20) '2.0'\n-21A75F Created OS            00 (0) 'MS-DOS'\n-21A760 Extract Zip Spec      14 (20) '2.0'\n-21A761 Extract OS            00 (0) 'MS-DOS'\n-21A762 General Purpose Flag  0808 (2056)\n+21C8D9 CENTRAL HEADER #385   02014B50 (33639248)\n+21C8DD Created Zip Spec      14 (20) '2.0'\n+21C8DE Created OS            00 (0) 'MS-DOS'\n+21C8DF Extract Zip Spec      14 (20) '2.0'\n+21C8E0 Extract OS            00 (0) 'MS-DOS'\n+21C8E1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A764 Compression Method    0008 (8) 'Deflated'\n-21A766 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A76A CRC                   00000000 (0)\n-21A76E Compressed Size       00000002 (2)\n-21A772 Uncompressed Size     00000000 (0)\n-21A776 Filename Length       0027 (39)\n-21A778 Extra Length          0000 (0)\n-21A77A Comment Length        0000 (0)\n-21A77C Disk Start            0000 (0)\n-21A77E Int File Attributes   0000 (0)\n+21C8E3 Compression Method    0008 (8) 'Deflated'\n+21C8E5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C8E9 CRC                   1FF4288F (536094863)\n+21C8ED Compressed Size       0000045C (1116)\n+21C8F1 Uncompressed Size     00000C58 (3160)\n+21C8F5 Filename Length       0040 (64)\n+21C8F7 Extra Length          0000 (0)\n+21C8F9 Comment Length        0000 (0)\n+21C8FB Disk Start            0000 (0)\n+21C8FD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A780 Ext File Attributes   00000000 (0)\n-21A784 Local Header Offset   0004A797 (305047)\n-21A788 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C8FF Ext File Attributes   00000000 (0)\n+21C903 Local Header Offset   0006E288 (451208)\n+21C907 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A788: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C907: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A7AF CENTRAL HEADER #386   02014B50 (33639248)\n-21A7B3 Created Zip Spec      14 (20) '2.0'\n-21A7B4 Created OS            00 (0) 'MS-DOS'\n-21A7B5 Extract Zip Spec      14 (20) '2.0'\n-21A7B6 Extract OS            00 (0) 'MS-DOS'\n-21A7B7 General Purpose Flag  0808 (2056)\n+21C947 CENTRAL HEADER #386   02014B50 (33639248)\n+21C94B Created Zip Spec      14 (20) '2.0'\n+21C94C Created OS            00 (0) 'MS-DOS'\n+21C94D Extract Zip Spec      14 (20) '2.0'\n+21C94E Extract OS            00 (0) 'MS-DOS'\n+21C94F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A7B9 Compression Method    0008 (8) 'Deflated'\n-21A7BB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A7BF CRC                   469827B2 (1184376754)\n-21A7C3 Compressed Size       00000600 (1536)\n-21A7C7 Uncompressed Size     000012D4 (4820)\n-21A7CB Filename Length       003D (61)\n-21A7CD Extra Length          0000 (0)\n-21A7CF Comment Length        0000 (0)\n-21A7D1 Disk Start            0000 (0)\n-21A7D3 Int File Attributes   0000 (0)\n+21C951 Compression Method    0008 (8) 'Deflated'\n+21C953 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C957 CRC                   00000000 (0)\n+21C95B Compressed Size       00000002 (2)\n+21C95F Uncompressed Size     00000000 (0)\n+21C963 Filename Length       0021 (33)\n+21C965 Extra Length          0000 (0)\n+21C967 Comment Length        0000 (0)\n+21C969 Disk Start            0000 (0)\n+21C96B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A7D5 Ext File Attributes   00000000 (0)\n-21A7D9 Local Header Offset   0004A7EE (305134)\n-21A7DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C96D Ext File Attributes   00000000 (0)\n+21C971 Local Header Offset   0006E752 (452434)\n+21C975 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A7DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C975: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A81A CENTRAL HEADER #387   02014B50 (33639248)\n-21A81E Created Zip Spec      14 (20) '2.0'\n-21A81F Created OS            00 (0) 'MS-DOS'\n-21A820 Extract Zip Spec      14 (20) '2.0'\n-21A821 Extract OS            00 (0) 'MS-DOS'\n-21A822 General Purpose Flag  0808 (2056)\n+21C996 CENTRAL HEADER #387   02014B50 (33639248)\n+21C99A Created Zip Spec      14 (20) '2.0'\n+21C99B Created OS            00 (0) 'MS-DOS'\n+21C99C Extract Zip Spec      14 (20) '2.0'\n+21C99D Extract OS            00 (0) 'MS-DOS'\n+21C99E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A824 Compression Method    0008 (8) 'Deflated'\n-21A826 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A82A CRC                   FF9ED7FD (4288600061)\n-21A82E Compressed Size       000004D0 (1232)\n-21A832 Uncompressed Size     00000ECB (3787)\n-21A836 Filename Length       003B (59)\n-21A838 Extra Length          0000 (0)\n-21A83A Comment Length        0000 (0)\n-21A83C Disk Start            0000 (0)\n-21A83E Int File Attributes   0000 (0)\n+21C9A0 Compression Method    0008 (8) 'Deflated'\n+21C9A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21C9A6 CRC                   C191912C (3247542572)\n+21C9AA Compressed Size       00000375 (885)\n+21C9AE Uncompressed Size     0000096F (2415)\n+21C9B2 Filename Length       0030 (48)\n+21C9B4 Extra Length          0000 (0)\n+21C9B6 Comment Length        0000 (0)\n+21C9B8 Disk Start            0000 (0)\n+21C9BA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A840 Ext File Attributes   00000000 (0)\n-21A844 Local Header Offset   0004AE59 (306777)\n-21A848 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21C9BC Ext File Attributes   00000000 (0)\n+21C9C0 Local Header Offset   0006E7A3 (452515)\n+21C9C4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A848: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21C9C4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A883 CENTRAL HEADER #388   02014B50 (33639248)\n-21A887 Created Zip Spec      14 (20) '2.0'\n-21A888 Created OS            00 (0) 'MS-DOS'\n-21A889 Extract Zip Spec      14 (20) '2.0'\n-21A88A Extract OS            00 (0) 'MS-DOS'\n-21A88B General Purpose Flag  0808 (2056)\n+21C9F4 CENTRAL HEADER #388   02014B50 (33639248)\n+21C9F8 Created Zip Spec      14 (20) '2.0'\n+21C9F9 Created OS            00 (0) 'MS-DOS'\n+21C9FA Extract Zip Spec      14 (20) '2.0'\n+21C9FB Extract OS            00 (0) 'MS-DOS'\n+21C9FC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A88D Compression Method    0008 (8) 'Deflated'\n-21A88F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A893 CRC                   00000000 (0)\n-21A897 Compressed Size       00000002 (2)\n-21A89B Uncompressed Size     00000000 (0)\n-21A89F Filename Length       0028 (40)\n-21A8A1 Extra Length          0000 (0)\n-21A8A3 Comment Length        0000 (0)\n-21A8A5 Disk Start            0000 (0)\n-21A8A7 Int File Attributes   0000 (0)\n+21C9FE Compression Method    0008 (8) 'Deflated'\n+21CA00 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21CA04 CRC                   B9F68231 (3119940145)\n+21CA08 Compressed Size       000003B3 (947)\n+21CA0C Uncompressed Size     00000AC2 (2754)\n+21CA10 Filename Length       002D (45)\n+21CA12 Extra Length          0000 (0)\n+21CA14 Comment Length        0000 (0)\n+21CA16 Disk Start            0000 (0)\n+21CA18 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A8A9 Ext File Attributes   00000000 (0)\n-21A8AD Local Header Offset   0004B392 (308114)\n-21A8B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21CA1A Ext File Attributes   00000000 (0)\n+21CA1E Local Header Offset   0006EB76 (453494)\n+21CA22 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A8B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21CA22: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A8D9 CENTRAL HEADER #389   02014B50 (33639248)\n-21A8DD Created Zip Spec      14 (20) '2.0'\n-21A8DE Created OS            00 (0) 'MS-DOS'\n-21A8DF Extract Zip Spec      14 (20) '2.0'\n-21A8E0 Extract OS            00 (0) 'MS-DOS'\n-21A8E1 General Purpose Flag  0808 (2056)\n+21CA4F CENTRAL HEADER #389   02014B50 (33639248)\n+21CA53 Created Zip Spec      14 (20) '2.0'\n+21CA54 Created OS            00 (0) 'MS-DOS'\n+21CA55 Extract Zip Spec      14 (20) '2.0'\n+21CA56 Extract OS            00 (0) 'MS-DOS'\n+21CA57 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A8E3 Compression Method    0008 (8) 'Deflated'\n-21A8E5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A8E9 CRC                   5EE85BF3 (1592286195)\n-21A8ED Compressed Size       000002D7 (727)\n-21A8F1 Uncompressed Size     000006C4 (1732)\n-21A8F5 Filename Length       0050 (80)\n-21A8F7 Extra Length          0000 (0)\n-21A8F9 Comment Length        0000 (0)\n-21A8FB Disk Start            0000 (0)\n-21A8FD Int File Attributes   0000 (0)\n+21CA59 Compression Method    0008 (8) 'Deflated'\n+21CA5B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21CA5F CRC                   9A0865B9 (2584241593)\n+21CA63 Compressed Size       000002E7 (743)\n+21CA67 Uncompressed Size     0000066B (1643)\n+21CA6B Filename Length       0035 (53)\n+21CA6D Extra Length          0000 (0)\n+21CA6F Comment Length        0000 (0)\n+21CA71 Disk Start            0000 (0)\n+21CA73 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A8FF Ext File Attributes   00000000 (0)\n-21A903 Local Header Offset   0004B3EA (308202)\n-21A907 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21CA75 Ext File Attributes   00000000 (0)\n+21CA79 Local Header Offset   0006EF84 (454532)\n+21CA7D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A907: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21CA7D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A957 CENTRAL HEADER #390   02014B50 (33639248)\n-21A95B Created Zip Spec      14 (20) '2.0'\n-21A95C Created OS            00 (0) 'MS-DOS'\n-21A95D Extract Zip Spec      14 (20) '2.0'\n-21A95E Extract OS            00 (0) 'MS-DOS'\n-21A95F General Purpose Flag  0808 (2056)\n+21CAB2 CENTRAL HEADER #390   02014B50 (33639248)\n+21CAB6 Created Zip Spec      14 (20) '2.0'\n+21CAB7 Created OS            00 (0) 'MS-DOS'\n+21CAB8 Extract Zip Spec      14 (20) '2.0'\n+21CAB9 Extract OS            00 (0) 'MS-DOS'\n+21CABA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A961 Compression Method    0008 (8) 'Deflated'\n-21A963 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A967 CRC                   4F276AEF (1327983343)\n-21A96B Compressed Size       00000481 (1153)\n-21A96F Uncompressed Size     00000E87 (3719)\n-21A973 Filename Length       0045 (69)\n-21A975 Extra Length          0000 (0)\n-21A977 Comment Length        0000 (0)\n-21A979 Disk Start            0000 (0)\n-21A97B Int File Attributes   0000 (0)\n+21CABC Compression Method    0008 (8) 'Deflated'\n+21CABE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21CAC2 CRC                   5F2ADB9F (1596644255)\n+21CAC6 Compressed Size       00000368 (872)\n+21CACA Uncompressed Size     00000832 (2098)\n+21CACE Filename Length       0037 (55)\n+21CAD0 Extra Length          0000 (0)\n+21CAD2 Comment Length        0000 (0)\n+21CAD4 Disk Start            0000 (0)\n+21CAD6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A97D Ext File Attributes   00000000 (0)\n-21A981 Local Header Offset   0004B73F (309055)\n-21A985 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21CAD8 Ext File Attributes   00000000 (0)\n+21CADC Local Header Offset   0006F2CE (455374)\n+21CAE0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A985: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21CAE0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21A9CA CENTRAL HEADER #391   02014B50 (33639248)\n-21A9CE Created Zip Spec      14 (20) '2.0'\n-21A9CF Created OS            00 (0) 'MS-DOS'\n-21A9D0 Extract Zip Spec      14 (20) '2.0'\n-21A9D1 Extract OS            00 (0) 'MS-DOS'\n-21A9D2 General Purpose Flag  0808 (2056)\n+21CB17 CENTRAL HEADER #391   02014B50 (33639248)\n+21CB1B Created Zip Spec      14 (20) '2.0'\n+21CB1C Created OS            00 (0) 'MS-DOS'\n+21CB1D Extract Zip Spec      14 (20) '2.0'\n+21CB1E Extract OS            00 (0) 'MS-DOS'\n+21CB1F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21A9D4 Compression Method    0008 (8) 'Deflated'\n-21A9D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21A9DA CRC                   00000000 (0)\n-21A9DE Compressed Size       00000002 (2)\n-21A9E2 Uncompressed Size     00000000 (0)\n-21A9E6 Filename Length       0029 (41)\n-21A9E8 Extra Length          0000 (0)\n-21A9EA Comment Length        0000 (0)\n-21A9EC Disk Start            0000 (0)\n-21A9EE Int File Attributes   0000 (0)\n+21CB21 Compression Method    0008 (8) 'Deflated'\n+21CB23 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21CB27 CRC                   4D1AEB96 (1293609878)\n+21CB2B Compressed Size       0000037C (892)\n+21CB2F Uncompressed Size     000008CC (2252)\n+21CB33 Filename Length       0037 (55)\n+21CB35 Extra Length          0000 (0)\n+21CB37 Comment Length        0000 (0)\n+21CB39 Disk Start            0000 (0)\n+21CB3B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21A9F0 Ext File Attributes   00000000 (0)\n-21A9F4 Local Header Offset   0004BC33 (310323)\n-21A9F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21CB3D Ext File Attributes   00000000 (0)\n+21CB41 Local Header Offset   0006F69B (456347)\n+21CB45 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21A9F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21CB45: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21AA21 CENTRAL HEADER #392   02014B50 (33639248)\n-21AA25 Created Zip Spec      14 (20) '2.0'\n-21AA26 Created OS            00 (0) 'MS-DOS'\n-21AA27 Extract Zip Spec      14 (20) '2.0'\n-21AA28 Extract OS            00 (0) 'MS-DOS'\n-21AA29 General Purpose Flag  0808 (2056)\n+21CB7C CENTRAL HEADER #392   02014B50 (33639248)\n+21CB80 Created Zip Spec      14 (20) '2.0'\n+21CB81 Created OS            00 (0) 'MS-DOS'\n+21CB82 Extract Zip Spec      14 (20) '2.0'\n+21CB83 Extract OS            00 (0) 'MS-DOS'\n+21CB84 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21AA2B Compression Method    0008 (8) 'Deflated'\n-21AA2D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21AA31 CRC                   E239D68F (3795441295)\n-21AA35 Compressed Size       00000386 (902)\n-21AA39 Uncompressed Size     000008D4 (2260)\n-21AA3D Filename Length       0040 (64)\n-21AA3F Extra Length          0000 (0)\n-21AA41 Comment Length        0000 (0)\n-21AA43 Disk Start            0000 (0)\n-21AA45 Int File Attributes   0000 (0)\n+21CB86 Compression Method    0008 (8) 'Deflated'\n+21CB88 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21CB8C CRC                   00000000 (0)\n+21CB90 Compressed Size       00000002 (2)\n+21CB94 Uncompressed Size     00000000 (0)\n+21CB98 Filename Length       001E (30)\n+21CB9A Extra Length          0000 (0)\n+21CB9C Comment Length        0000 (0)\n+21CB9E Disk Start            0000 (0)\n+21CBA0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21AA47 Ext File Attributes   00000000 (0)\n-21AA4B Local Header Offset   0004BC8C (310412)\n-21AA4F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21CBA2 Ext File Attributes   00000000 (0)\n+21CBA6 Local Header Offset   0006FA7C (457340)\n+21CBAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21AA4F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21CBAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21AA8F CENTRAL HEADER #393   02014B50 (33639248)\n-21AA93 Created Zip Spec      14 (20) '2.0'\n-21AA94 Created OS            00 (0) 'MS-DOS'\n-21AA95 Extract Zip Spec      14 (20) '2.0'\n-21AA96 Extract OS            00 (0) 'MS-DOS'\n-21AA97 General Purpose Flag  0808 (2056)\n+21CBC8 CENTRAL HEADER #393   02014B50 (33639248)\n+21CBCC Created Zip Spec      14 (20) '2.0'\n+21CBCD Created OS            00 (0) 'MS-DOS'\n+21CBCE Extract Zip Spec      14 (20) '2.0'\n+21CBCF Extract OS            00 (0) 'MS-DOS'\n+21CBD0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21AA99 Compression Method    0008 (8) 'Deflated'\n-21AA9B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21AA9F CRC                   5A7B56B1 (1518032561)\n-21AAA3 Compressed Size       00000359 (857)\n-21AAA7 Uncompressed Size     00000899 (2201)\n-21AAAB Filename Length       004F (79)\n-21AAAD Extra Length          0000 (0)\n-21AAAF Comment Length        0000 (0)\n-21AAB1 Disk Start            0000 (0)\n-21AAB3 Int File Attributes   0000 (0)\n+21CBD2 Compression Method    0008 (8) 'Deflated'\n+21CBD4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21CBD8 CRC                   D1400D79 (3510635897)\n+21CBDC Compressed Size       00000327 (807)\n+21CBE0 Uncompressed Size     00000647 (1607)\n+21CBE4 Filename Length       002F (47)\n+21CBE6 Extra Length          0000 (0)\n+21CBE8 Comment Length        0000 (0)\n+21CBEA Disk Start            0000 (0)\n+21CBEC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21AAB5 Ext File Attributes   00000000 (0)\n-21AAB9 Local Header Offset   0004C080 (311424)\n-21AABD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21CBEE Ext File Attributes   00000000 (0)\n+21CBF2 Local Header Offset   0006FACA (457418)\n+21CBF6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21AABD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21CBF6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21AB0C CENTRAL HEADER #394   02014B50 (33639248)\n-21AB10 Created Zip Spec      14 (20) '2.0'\n-21AB11 Created OS            00 (0) 'MS-DOS'\n-21AB12 Extract Zip Spec      14 (20) '2.0'\n-21AB13 Extract OS            00 (0) 'MS-DOS'\n-21AB14 General Purpose Flag  0808 (2056)\n+21CC25 CENTRAL HEADER #394   02014B50 (33639248)\n+21CC29 Created Zip Spec      14 (20) '2.0'\n+21CC2A Created OS            00 (0) 'MS-DOS'\n+21CC2B Extract Zip Spec      14 (20) '2.0'\n+21CC2C Extract OS            00 (0) 'MS-DOS'\n+21CC2D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21AB16 Compression Method    0008 (8) 'Deflated'\n-21AB18 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21AB1C CRC                   C3191A72 (3273202290)\n-21AB20 Compressed Size       000003F3 (1011)\n-21AB24 Uncompressed Size     00000A65 (2661)\n-21AB28 Filename Length       0049 (73)\n-21AB2A Extra Length          0000 (0)\n-21AB2C Comment Length        0000 (0)\n-21AB2E Disk Start            0000 (0)\n-21AB30 Int File Attributes   0000 (0)\n+21CC2F Compression Method    0008 (8) 'Deflated'\n+21CC31 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21CC35 CRC                   00000000 (0)\n+21CC39 Compressed Size       00000002 (2)\n+21CC3D Uncompressed Size     00000000 (0)\n+21CC41 Filename Length       0026 (38)\n+21CC43 Extra Length          0000 (0)\n+21CC45 Comment Length        0000 (0)\n+21CC47 Disk Start            0000 (0)\n+21CC49 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21AB32 Ext File Attributes   00000000 (0)\n-21AB36 Local Header Offset   0004C456 (312406)\n-21AB3A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21CC4B Ext File Attributes   00000000 (0)\n+21CC4F Local Header Offset   0006FE4E (458318)\n+21CC53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21AB3A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21CC53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21AB83 CENTRAL HEADER #395   02014B50 (33639248)\n-21AB87 Created Zip Spec      14 (20) '2.0'\n-21AB88 Created OS            00 (0) 'MS-DOS'\n-21AB89 Extract Zip Spec      14 (20) '2.0'\n-21AB8A Extract OS            00 (0) 'MS-DOS'\n-21AB8B General Purpose Flag  0808 (2056)\n+21CC79 CENTRAL HEADER #395   02014B50 (33639248)\n+21CC7D Created Zip Spec      14 (20) '2.0'\n+21CC7E Created OS            00 (0) 'MS-DOS'\n+21CC7F Extract Zip Spec      14 (20) '2.0'\n+21CC80 Extract OS            00 (0) 'MS-DOS'\n+21CC81 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21AB8D Compression Method    0008 (8) 'Deflated'\n-21AB8F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21AB93 CRC                   00000000 (0)\n-21AB97 Compressed Size       00000002 (2)\n-21AB9B Uncompressed Size     00000000 (0)\n-21AB9F Filename Length       0029 (41)\n-21ABA1 Extra Length          0000 (0)\n-21ABA3 Comment Length        0000 (0)\n-21ABA5 Disk Start            0000 (0)\n-21ABA7 Int File Attributes   0000 (0)\n+21CC83 Compression Method    0008 (8) 'Deflated'\n+21CC85 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21CC89 CRC                   4A87D325 (1250415397)\n+21CC8D Compressed Size       0000028C (652)\n+21CC91 Uncompressed Size     0000052B (1323)\n+21CC95 Filename Length       0036 (54)\n+21CC97 Extra Length          0000 (0)\n+21CC99 Comment Length        0000 (0)\n+21CC9B Disk Start            0000 (0)\n+21CC9D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21ABA9 Ext File Attributes   00000000 (0)\n-21ABAD Local Header Offset   0004C8C0 (313536)\n-21ABB1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21CC9F Ext File Attributes   00000000 (0)\n+21CCA3 Local Header Offset   0006FEA4 (458404)\n+21CCA7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21ABB1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21CCA7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21ABDA CENTRAL HEADER #396   02014B50 (33639248)\n-21ABDE Created Zip Spec      14 (20) '2.0'\n-21ABDF Created OS            00 (0) 'MS-DOS'\n-21ABE0 Extract Zip Spec      14 (20) '2.0'\n-21ABE1 Extract OS            00 (0) 'MS-DOS'\n-21ABE2 General Purpose Flag  0808 (2056)\n+21CCDD CENTRAL HEADER #396   02014B50 (33639248)\n+21CCE1 Created Zip Spec      14 (20) '2.0'\n+21CCE2 Created OS            00 (0) 'MS-DOS'\n+21CCE3 Extract Zip Spec      14 (20) '2.0'\n+21CCE4 Extract OS            00 (0) 'MS-DOS'\n+21CCE5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21ABE4 Compression Method    0008 (8) 'Deflated'\n-21ABE6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21ABEA CRC                   BCC9CB9D (3167341469)\n-21ABEE Compressed Size       000005AE (1454)\n-21ABF2 Uncompressed Size     000010C1 (4289)\n-21ABF6 Filename Length       0041 (65)\n-21ABF8 Extra Length          0000 (0)\n-21ABFA Comment Length        0000 (0)\n-21ABFC Disk Start            0000 (0)\n-21ABFE Int File Attributes   0000 (0)\n+21CCE7 Compression Method    0008 (8) 'Deflated'\n+21CCE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21CCED CRC                   382251E3 (941773283)\n+21CCF1 Compressed Size       00000423 (1059)\n+21CCF5 Uncompressed Size     00000B9D (2973)\n+21CCF9 Filename Length       003D (61)\n+21CCFB Extra Length          0000 (0)\n+21CCFD Comment Length        0000 (0)\n+21CCFF Disk Start            0000 (0)\n+21CD01 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21AC00 Ext File Attributes   00000000 (0)\n-21AC04 Local Header Offset   0004C919 (313625)\n-21AC08 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21CD03 Ext File Attributes   00000000 (0)\n+21CD07 Local Header Offset   00070194 (459156)\n+21CD0B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21AC08: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21CD0B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21AC49 CENTRAL HEADER #397   02014B50 (33639248)\n-21AC4D Created Zip Spec      14 (20) '2.0'\n-21AC4E Created OS            00 (0) 'MS-DOS'\n-21AC4F Extract Zip Spec      14 (20) '2.0'\n-21AC50 Extract OS            00 (0) 'MS-DOS'\n-21AC51 General Purpose Flag  0808 (2056)\n+21CD48 CENTRAL HEADER #397   02014B50 (33639248)\n+21CD4C Created Zip Spec      14 (20) '2.0'\n+21CD4D Created OS            00 (0) 'MS-DOS'\n+21CD4E Extract Zip Spec      14 (20) '2.0'\n+21CD4F Extract OS            00 (0) 'MS-DOS'\n+21CD50 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21AC53 Compression Method    0008 (8) 'Deflated'\n-21AC55 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21AC59 CRC                   D501B98C (3573660044)\n-21AC5D Compressed Size       000006C7 (1735)\n-21AC61 Uncompressed Size     000014EB (5355)\n-21AC65 Filename Length       0047 (71)\n-21AC67 Extra Length          0000 (0)\n-21AC69 Comment Length        0000 (0)\n-21AC6B Disk Start            0000 (0)\n-21AC6D Int File Attributes   0000 (0)\n+21CD52 Compression Method    0008 (8) 'Deflated'\n+21CD54 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21CD58 CRC                   00000000 (0)\n+21CD5C Compressed Size       00000002 (2)\n+21CD60 Uncompressed Size     00000000 (0)\n+21CD64 Filename Length       001B (27)\n+21CD66 Extra Length          0000 (0)\n+21CD68 Comment Length        0000 (0)\n+21CD6A Disk Start            0000 (0)\n+21CD6C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21AC6F Ext File Attributes   00000000 (0)\n-21AC73 Local Header Offset   0004CF36 (315190)\n-21AC77 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21CD6E Ext File Attributes   00000000 (0)\n+21CD72 Local Header Offset   00070622 (460322)\n+21CD76 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21AC77: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21CD76: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21ACBE CENTRAL HEADER #398   02014B50 (33639248)\n-21ACC2 Created Zip Spec      14 (20) '2.0'\n-21ACC3 Created OS            00 (0) 'MS-DOS'\n-21ACC4 Extract Zip Spec      14 (20) '2.0'\n-21ACC5 Extract OS            00 (0) 'MS-DOS'\n-21ACC6 General Purpose Flag  0808 (2056)\n+21CD91 CENTRAL HEADER #398   02014B50 (33639248)\n+21CD95 Created Zip Spec      14 (20) '2.0'\n+21CD96 Created OS            00 (0) 'MS-DOS'\n+21CD97 Extract Zip Spec      14 (20) '2.0'\n+21CD98 Extract OS            00 (0) 'MS-DOS'\n+21CD99 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21ACC8 Compression Method    0008 (8) 'Deflated'\n-21ACCA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21ACCE CRC                   5955E637 (1498801719)\n-21ACD2 Compressed Size       000006DA (1754)\n-21ACD6 Uncompressed Size     000015EF (5615)\n-21ACDA Filename Length       0044 (68)\n-21ACDC Extra Length          0000 (0)\n-21ACDE Comment Length        0000 (0)\n-21ACE0 Disk Start            0000 (0)\n-21ACE2 Int File Attributes   0000 (0)\n+21CD9B Compression Method    0008 (8) 'Deflated'\n+21CD9D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21CDA1 CRC                   7D41B4B3 (2101458099)\n+21CDA5 Compressed Size       00000F90 (3984)\n+21CDA9 Uncompressed Size     000068BF (26815)\n+21CDAD Filename Length       0025 (37)\n+21CDAF Extra Length          0000 (0)\n+21CDB1 Comment Length        0000 (0)\n+21CDB3 Disk Start            0000 (0)\n+21CDB5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21ACE4 Ext File Attributes   00000000 (0)\n-21ACE8 Local Header Offset   0004D672 (317042)\n-21ACEC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21CDB7 Ext File Attributes   00000000 (0)\n+21CDBB Local Header Offset   0007066D (460397)\n+21CDBF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21ACEC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21CDBF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21AD30 CENTRAL HEADER #399   02014B50 (33639248)\n-21AD34 Created Zip Spec      14 (20) '2.0'\n-21AD35 Created OS            00 (0) 'MS-DOS'\n-21AD36 Extract Zip Spec      14 (20) '2.0'\n-21AD37 Extract OS            00 (0) 'MS-DOS'\n-21AD38 General Purpose Flag  0808 (2056)\n+21CDE4 CENTRAL HEADER #399   02014B50 (33639248)\n+21CDE8 Created Zip Spec      14 (20) '2.0'\n+21CDE9 Created OS            00 (0) 'MS-DOS'\n+21CDEA Extract Zip Spec      14 (20) '2.0'\n+21CDEB Extract OS            00 (0) 'MS-DOS'\n+21CDEC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21AD3A Compression Method    0008 (8) 'Deflated'\n-21AD3C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21AD40 CRC                   0BF8995C (200841564)\n-21AD44 Compressed Size       0000054B (1355)\n-21AD48 Uncompressed Size     00000D00 (3328)\n-21AD4C Filename Length       003F (63)\n-21AD4E Extra Length          0000 (0)\n-21AD50 Comment Length        0000 (0)\n-21AD52 Disk Start            0000 (0)\n-21AD54 Int File Attributes   0000 (0)\n+21CDEE Compression Method    0008 (8) 'Deflated'\n+21CDF0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21CDF4 CRC                   D2FF4595 (3539944853)\n+21CDF8 Compressed Size       00000644 (1604)\n+21CDFC Uncompressed Size     00001BE9 (7145)\n+21CE00 Filename Length       002B (43)\n+21CE02 Extra Length          0000 (0)\n+21CE04 Comment Length        0000 (0)\n+21CE06 Disk Start            0000 (0)\n+21CE08 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21AD56 Ext File Attributes   00000000 (0)\n-21AD5A Local Header Offset   0004DDBE (318910)\n-21AD5E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21CE0A Ext File Attributes   00000000 (0)\n+21CE0E Local Header Offset   00071650 (464464)\n+21CE12 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21AD5E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21CE12: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21AD9D CENTRAL HEADER #400   02014B50 (33639248)\n-21ADA1 Created Zip Spec      14 (20) '2.0'\n-21ADA2 Created OS            00 (0) 'MS-DOS'\n-21ADA3 Extract Zip Spec      14 (20) '2.0'\n-21ADA4 Extract OS            00 (0) 'MS-DOS'\n-21ADA5 General Purpose Flag  0808 (2056)\n+21CE3D CENTRAL HEADER #400   02014B50 (33639248)\n+21CE41 Created Zip Spec      14 (20) '2.0'\n+21CE42 Created OS            00 (0) 'MS-DOS'\n+21CE43 Extract Zip Spec      14 (20) '2.0'\n+21CE44 Extract OS            00 (0) 'MS-DOS'\n+21CE45 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21ADA7 Compression Method    0008 (8) 'Deflated'\n-21ADA9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21ADAD CRC                   B03BDD5E (2956713310)\n-21ADB1 Compressed Size       00000618 (1560)\n-21ADB5 Uncompressed Size     000012CC (4812)\n-21ADB9 Filename Length       0043 (67)\n-21ADBB Extra Length          0000 (0)\n-21ADBD Comment Length        0000 (0)\n-21ADBF Disk Start            0000 (0)\n-21ADC1 Int File Attributes   0000 (0)\n+21CE47 Compression Method    0008 (8) 'Deflated'\n+21CE49 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21CE4D CRC                   D8BBACF0 (3636178160)\n+21CE51 Compressed Size       00000428 (1064)\n+21CE55 Uncompressed Size     00000C61 (3169)\n+21CE59 Filename Length       003A (58)\n+21CE5B Extra Length          0000 (0)\n+21CE5D Comment Length        0000 (0)\n+21CE5F Disk Start            0000 (0)\n+21CE61 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21ADC3 Ext File Attributes   00000000 (0)\n-21ADC7 Local Header Offset   0004E376 (320374)\n-21ADCB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21CE63 Ext File Attributes   00000000 (0)\n+21CE67 Local Header Offset   00071CED (466157)\n+21CE6B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21ADCB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21CE6B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21AE0E CENTRAL HEADER #401   02014B50 (33639248)\n-21AE12 Created Zip Spec      14 (20) '2.0'\n-21AE13 Created OS            00 (0) 'MS-DOS'\n-21AE14 Extract Zip Spec      14 (20) '2.0'\n-21AE15 Extract OS            00 (0) 'MS-DOS'\n-21AE16 General Purpose Flag  0808 (2056)\n+21CEA5 CENTRAL HEADER #401   02014B50 (33639248)\n+21CEA9 Created Zip Spec      14 (20) '2.0'\n+21CEAA Created OS            00 (0) 'MS-DOS'\n+21CEAB Extract Zip Spec      14 (20) '2.0'\n+21CEAC Extract OS            00 (0) 'MS-DOS'\n+21CEAD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21AE18 Compression Method    0008 (8) 'Deflated'\n-21AE1A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21AE1E CRC                   5F890A01 (1602816513)\n-21AE22 Compressed Size       000005FA (1530)\n-21AE26 Uncompressed Size     000011D5 (4565)\n-21AE2A Filename Length       0049 (73)\n-21AE2C Extra Length          0000 (0)\n-21AE2E Comment Length        0000 (0)\n-21AE30 Disk Start            0000 (0)\n-21AE32 Int File Attributes   0000 (0)\n+21CEAF Compression Method    0008 (8) 'Deflated'\n+21CEB1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21CEB5 CRC                   DCFCECF5 (3707563253)\n+21CEB9 Compressed Size       00000425 (1061)\n+21CEBD Uncompressed Size     00000BF3 (3059)\n+21CEC1 Filename Length       003B (59)\n+21CEC3 Extra Length          0000 (0)\n+21CEC5 Comment Length        0000 (0)\n+21CEC7 Disk Start            0000 (0)\n+21CEC9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21AE34 Ext File Attributes   00000000 (0)\n-21AE38 Local Header Offset   0004E9FF (322047)\n-21AE3C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21CECB Ext File Attributes   00000000 (0)\n+21CECF Local Header Offset   0007217D (467325)\n+21CED3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21AE3C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21CED3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21AE85 CENTRAL HEADER #402   02014B50 (33639248)\n-21AE89 Created Zip Spec      14 (20) '2.0'\n-21AE8A Created OS            00 (0) 'MS-DOS'\n-21AE8B Extract Zip Spec      14 (20) '2.0'\n-21AE8C Extract OS            00 (0) 'MS-DOS'\n-21AE8D General Purpose Flag  0808 (2056)\n+21CF0E CENTRAL HEADER #402   02014B50 (33639248)\n+21CF12 Created Zip Spec      14 (20) '2.0'\n+21CF13 Created OS            00 (0) 'MS-DOS'\n+21CF14 Extract Zip Spec      14 (20) '2.0'\n+21CF15 Extract OS            00 (0) 'MS-DOS'\n+21CF16 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21AE8F Compression Method    0008 (8) 'Deflated'\n-21AE91 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21AE95 CRC                   00000000 (0)\n-21AE99 Compressed Size       00000002 (2)\n-21AE9D Uncompressed Size     00000000 (0)\n-21AEA1 Filename Length       0024 (36)\n-21AEA3 Extra Length          0000 (0)\n-21AEA5 Comment Length        0000 (0)\n-21AEA7 Disk Start            0000 (0)\n-21AEA9 Int File Attributes   0000 (0)\n+21CF18 Compression Method    0008 (8) 'Deflated'\n+21CF1A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21CF1E CRC                   490F11E6 (1225724390)\n+21CF22 Compressed Size       0000041C (1052)\n+21CF26 Uncompressed Size     00000C65 (3173)\n+21CF2A Filename Length       0032 (50)\n+21CF2C Extra Length          0000 (0)\n+21CF2E Comment Length        0000 (0)\n+21CF30 Disk Start            0000 (0)\n+21CF32 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21AEAB Ext File Attributes   00000000 (0)\n-21AEAF Local Header Offset   0004F070 (323696)\n-21AEB3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21CF34 Ext File Attributes   00000000 (0)\n+21CF38 Local Header Offset   0007260B (468491)\n+21CF3C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21AEB3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21CF3C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21AED7 CENTRAL HEADER #403   02014B50 (33639248)\n-21AEDB Created Zip Spec      14 (20) '2.0'\n-21AEDC Created OS            00 (0) 'MS-DOS'\n-21AEDD Extract Zip Spec      14 (20) '2.0'\n-21AEDE Extract OS            00 (0) 'MS-DOS'\n-21AEDF General Purpose Flag  0808 (2056)\n+21CF6E CENTRAL HEADER #403   02014B50 (33639248)\n+21CF72 Created Zip Spec      14 (20) '2.0'\n+21CF73 Created OS            00 (0) 'MS-DOS'\n+21CF74 Extract Zip Spec      14 (20) '2.0'\n+21CF75 Extract OS            00 (0) 'MS-DOS'\n+21CF76 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21AEE1 Compression Method    0008 (8) 'Deflated'\n-21AEE3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21AEE7 CRC                   B70DC735 (3071133493)\n-21AEEB Compressed Size       000003D0 (976)\n-21AEEF Uncompressed Size     00000959 (2393)\n-21AEF3 Filename Length       0034 (52)\n-21AEF5 Extra Length          0000 (0)\n-21AEF7 Comment Length        0000 (0)\n-21AEF9 Disk Start            0000 (0)\n-21AEFB Int File Attributes   0000 (0)\n+21CF78 Compression Method    0008 (8) 'Deflated'\n+21CF7A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21CF7E CRC                   3A9B5BED (983260141)\n+21CF82 Compressed Size       000003DD (989)\n+21CF86 Uncompressed Size     00000B3F (2879)\n+21CF8A Filename Length       0032 (50)\n+21CF8C Extra Length          0000 (0)\n+21CF8E Comment Length        0000 (0)\n+21CF90 Disk Start            0000 (0)\n+21CF92 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21AEFD Ext File Attributes   00000000 (0)\n-21AF01 Local Header Offset   0004F0C4 (323780)\n-21AF05 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21CF94 Ext File Attributes   00000000 (0)\n+21CF98 Local Header Offset   00072A87 (469639)\n+21CF9C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21AF05: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21CF9C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21AF39 CENTRAL HEADER #404   02014B50 (33639248)\n-21AF3D Created Zip Spec      14 (20) '2.0'\n-21AF3E Created OS            00 (0) 'MS-DOS'\n-21AF3F Extract Zip Spec      14 (20) '2.0'\n-21AF40 Extract OS            00 (0) 'MS-DOS'\n-21AF41 General Purpose Flag  0808 (2056)\n+21CFCE CENTRAL HEADER #404   02014B50 (33639248)\n+21CFD2 Created Zip Spec      14 (20) '2.0'\n+21CFD3 Created OS            00 (0) 'MS-DOS'\n+21CFD4 Extract Zip Spec      14 (20) '2.0'\n+21CFD5 Extract OS            00 (0) 'MS-DOS'\n+21CFD6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21AF43 Compression Method    0008 (8) 'Deflated'\n-21AF45 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21AF49 CRC                   5ECBBD86 (1590410630)\n-21AF4D Compressed Size       000002E5 (741)\n-21AF51 Uncompressed Size     0000068E (1678)\n-21AF55 Filename Length       003B (59)\n-21AF57 Extra Length          0000 (0)\n-21AF59 Comment Length        0000 (0)\n-21AF5B Disk Start            0000 (0)\n-21AF5D Int File Attributes   0000 (0)\n+21CFD8 Compression Method    0008 (8) 'Deflated'\n+21CFDA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21CFDE CRC                   00000000 (0)\n+21CFE2 Compressed Size       00000002 (2)\n+21CFE6 Uncompressed Size     00000000 (0)\n+21CFEA Filename Length       001D (29)\n+21CFEC Extra Length          0000 (0)\n+21CFEE Comment Length        0000 (0)\n+21CFF0 Disk Start            0000 (0)\n+21CFF2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21AF5F Ext File Attributes   00000000 (0)\n-21AF63 Local Header Offset   0004F4F6 (324854)\n-21AF67 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21CFF4 Ext File Attributes   00000000 (0)\n+21CFF8 Local Header Offset   00072EC4 (470724)\n+21CFFC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21AF67: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21CFFC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21AFA2 CENTRAL HEADER #405   02014B50 (33639248)\n-21AFA6 Created Zip Spec      14 (20) '2.0'\n-21AFA7 Created OS            00 (0) 'MS-DOS'\n-21AFA8 Extract Zip Spec      14 (20) '2.0'\n-21AFA9 Extract OS            00 (0) 'MS-DOS'\n-21AFAA General Purpose Flag  0808 (2056)\n+21D019 CENTRAL HEADER #405   02014B50 (33639248)\n+21D01D Created Zip Spec      14 (20) '2.0'\n+21D01E Created OS            00 (0) 'MS-DOS'\n+21D01F Extract Zip Spec      14 (20) '2.0'\n+21D020 Extract OS            00 (0) 'MS-DOS'\n+21D021 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21AFAC Compression Method    0008 (8) 'Deflated'\n-21AFAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21AFB2 CRC                   0CC7ECCD (214428877)\n-21AFB6 Compressed Size       000002E1 (737)\n-21AFBA Uncompressed Size     00000667 (1639)\n-21AFBE Filename Length       0038 (56)\n-21AFC0 Extra Length          0000 (0)\n-21AFC2 Comment Length        0000 (0)\n-21AFC4 Disk Start            0000 (0)\n-21AFC6 Int File Attributes   0000 (0)\n+21D023 Compression Method    0008 (8) 'Deflated'\n+21D025 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D029 CRC                   30256F45 (807759685)\n+21D02D Compressed Size       00000AA5 (2725)\n+21D031 Uncompressed Size     000046E5 (18149)\n+21D035 Filename Length       0036 (54)\n+21D037 Extra Length          0000 (0)\n+21D039 Comment Length        0000 (0)\n+21D03B Disk Start            0000 (0)\n+21D03D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21AFC8 Ext File Attributes   00000000 (0)\n-21AFCC Local Header Offset   0004F844 (325700)\n-21AFD0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D03F Ext File Attributes   00000000 (0)\n+21D043 Local Header Offset   00072F11 (470801)\n+21D047 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21AFD0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D047: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B008 CENTRAL HEADER #406   02014B50 (33639248)\n-21B00C Created Zip Spec      14 (20) '2.0'\n-21B00D Created OS            00 (0) 'MS-DOS'\n-21B00E Extract Zip Spec      14 (20) '2.0'\n-21B00F Extract OS            00 (0) 'MS-DOS'\n-21B010 General Purpose Flag  0808 (2056)\n+21D07D CENTRAL HEADER #406   02014B50 (33639248)\n+21D081 Created Zip Spec      14 (20) '2.0'\n+21D082 Created OS            00 (0) 'MS-DOS'\n+21D083 Extract Zip Spec      14 (20) '2.0'\n+21D084 Extract OS            00 (0) 'MS-DOS'\n+21D085 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B012 Compression Method    0008 (8) 'Deflated'\n-21B014 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B018 CRC                   091CC51B (152880411)\n-21B01C Compressed Size       000002DF (735)\n-21B020 Uncompressed Size     00000665 (1637)\n-21B024 Filename Length       0038 (56)\n-21B026 Extra Length          0000 (0)\n-21B028 Comment Length        0000 (0)\n-21B02A Disk Start            0000 (0)\n-21B02C Int File Attributes   0000 (0)\n+21D087 Compression Method    0008 (8) 'Deflated'\n+21D089 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D08D CRC                   FA032BB6 (4194511798)\n+21D091 Compressed Size       00000A68 (2664)\n+21D095 Uncompressed Size     00003385 (13189)\n+21D099 Filename Length       002C (44)\n+21D09B Extra Length          0000 (0)\n+21D09D Comment Length        0000 (0)\n+21D09F Disk Start            0000 (0)\n+21D0A1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B02E Ext File Attributes   00000000 (0)\n-21B032 Local Header Offset   0004FB8B (326539)\n-21B036 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D0A3 Ext File Attributes   00000000 (0)\n+21D0A7 Local Header Offset   00073A1A (473626)\n+21D0AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B036: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D0AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B06E CENTRAL HEADER #407   02014B50 (33639248)\n-21B072 Created Zip Spec      14 (20) '2.0'\n-21B073 Created OS            00 (0) 'MS-DOS'\n-21B074 Extract Zip Spec      14 (20) '2.0'\n-21B075 Extract OS            00 (0) 'MS-DOS'\n-21B076 General Purpose Flag  0808 (2056)\n+21D0D7 CENTRAL HEADER #407   02014B50 (33639248)\n+21D0DB Created Zip Spec      14 (20) '2.0'\n+21D0DC Created OS            00 (0) 'MS-DOS'\n+21D0DD Extract Zip Spec      14 (20) '2.0'\n+21D0DE Extract OS            00 (0) 'MS-DOS'\n+21D0DF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B078 Compression Method    0008 (8) 'Deflated'\n-21B07A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B07E CRC                   04E4C5B6 (82101686)\n-21B082 Compressed Size       000002B3 (691)\n-21B086 Uncompressed Size     00000545 (1349)\n-21B08A Filename Length       003A (58)\n-21B08C Extra Length          0000 (0)\n-21B08E Comment Length        0000 (0)\n-21B090 Disk Start            0000 (0)\n-21B092 Int File Attributes   0000 (0)\n+21D0E1 Compression Method    0008 (8) 'Deflated'\n+21D0E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D0E7 CRC                   39C07894 (968915092)\n+21D0EB Compressed Size       00000BBA (3002)\n+21D0EF Uncompressed Size     00006AA4 (27300)\n+21D0F3 Filename Length       0026 (38)\n+21D0F5 Extra Length          0000 (0)\n+21D0F7 Comment Length        0000 (0)\n+21D0F9 Disk Start            0000 (0)\n+21D0FB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B094 Ext File Attributes   00000000 (0)\n-21B098 Local Header Offset   0004FED0 (327376)\n-21B09C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D0FD Ext File Attributes   00000000 (0)\n+21D101 Local Header Offset   000744DC (476380)\n+21D105 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B09C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D105: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B0D6 CENTRAL HEADER #408   02014B50 (33639248)\n-21B0DA Created Zip Spec      14 (20) '2.0'\n-21B0DB Created OS            00 (0) 'MS-DOS'\n-21B0DC Extract Zip Spec      14 (20) '2.0'\n-21B0DD Extract OS            00 (0) 'MS-DOS'\n-21B0DE General Purpose Flag  0808 (2056)\n+21D12B CENTRAL HEADER #408   02014B50 (33639248)\n+21D12F Created Zip Spec      14 (20) '2.0'\n+21D130 Created OS            00 (0) 'MS-DOS'\n+21D131 Extract Zip Spec      14 (20) '2.0'\n+21D132 Extract OS            00 (0) 'MS-DOS'\n+21D133 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B0E0 Compression Method    0008 (8) 'Deflated'\n-21B0E2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B0E6 CRC                   DDA728F5 (3718719733)\n-21B0EA Compressed Size       000002E0 (736)\n-21B0EE Uncompressed Size     0000066F (1647)\n-21B0F2 Filename Length       0039 (57)\n-21B0F4 Extra Length          0000 (0)\n-21B0F6 Comment Length        0000 (0)\n-21B0F8 Disk Start            0000 (0)\n-21B0FA Int File Attributes   0000 (0)\n+21D135 Compression Method    0008 (8) 'Deflated'\n+21D137 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D13B CRC                   2313A478 (588489848)\n+21D13F Compressed Size       000004D5 (1237)\n+21D143 Uncompressed Size     00001330 (4912)\n+21D147 Filename Length       002B (43)\n+21D149 Extra Length          0000 (0)\n+21D14B Comment Length        0000 (0)\n+21D14D Disk Start            0000 (0)\n+21D14F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B0FC Ext File Attributes   00000000 (0)\n-21B100 Local Header Offset   000501EB (328171)\n-21B104 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D151 Ext File Attributes   00000000 (0)\n+21D155 Local Header Offset   000750EA (479466)\n+21D159 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B104: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D159: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B13D CENTRAL HEADER #409   02014B50 (33639248)\n-21B141 Created Zip Spec      14 (20) '2.0'\n-21B142 Created OS            00 (0) 'MS-DOS'\n-21B143 Extract Zip Spec      14 (20) '2.0'\n-21B144 Extract OS            00 (0) 'MS-DOS'\n-21B145 General Purpose Flag  0808 (2056)\n+21D184 CENTRAL HEADER #409   02014B50 (33639248)\n+21D188 Created Zip Spec      14 (20) '2.0'\n+21D189 Created OS            00 (0) 'MS-DOS'\n+21D18A Extract Zip Spec      14 (20) '2.0'\n+21D18B Extract OS            00 (0) 'MS-DOS'\n+21D18C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B147 Compression Method    0008 (8) 'Deflated'\n-21B149 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B14D CRC                   443829ED (1144531437)\n-21B151 Compressed Size       000002B0 (688)\n-21B155 Uncompressed Size     00000534 (1332)\n-21B159 Filename Length       0037 (55)\n-21B15B Extra Length          0000 (0)\n-21B15D Comment Length        0000 (0)\n-21B15F Disk Start            0000 (0)\n-21B161 Int File Attributes   0000 (0)\n+21D18E Compression Method    0008 (8) 'Deflated'\n+21D190 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D194 CRC                   10BC97FD (280795133)\n+21D198 Compressed Size       000002C3 (707)\n+21D19C Uncompressed Size     000005B5 (1461)\n+21D1A0 Filename Length       002F (47)\n+21D1A2 Extra Length          0000 (0)\n+21D1A4 Comment Length        0000 (0)\n+21D1A6 Disk Start            0000 (0)\n+21D1A8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B163 Ext File Attributes   00000000 (0)\n-21B167 Local Header Offset   00050532 (329010)\n-21B16B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D1AA Ext File Attributes   00000000 (0)\n+21D1AE Local Header Offset   00075618 (480792)\n+21D1B2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B16B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D1B2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B1A2 CENTRAL HEADER #410   02014B50 (33639248)\n-21B1A6 Created Zip Spec      14 (20) '2.0'\n-21B1A7 Created OS            00 (0) 'MS-DOS'\n-21B1A8 Extract Zip Spec      14 (20) '2.0'\n-21B1A9 Extract OS            00 (0) 'MS-DOS'\n-21B1AA General Purpose Flag  0808 (2056)\n+21D1E1 CENTRAL HEADER #410   02014B50 (33639248)\n+21D1E5 Created Zip Spec      14 (20) '2.0'\n+21D1E6 Created OS            00 (0) 'MS-DOS'\n+21D1E7 Extract Zip Spec      14 (20) '2.0'\n+21D1E8 Extract OS            00 (0) 'MS-DOS'\n+21D1E9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B1AC Compression Method    0008 (8) 'Deflated'\n-21B1AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B1B2 CRC                   482DE9DF (1210968543)\n-21B1B6 Compressed Size       000002CE (718)\n-21B1BA Uncompressed Size     000005D4 (1492)\n-21B1BE Filename Length       0033 (51)\n-21B1C0 Extra Length          0000 (0)\n-21B1C2 Comment Length        0000 (0)\n-21B1C4 Disk Start            0000 (0)\n-21B1C6 Int File Attributes   0000 (0)\n+21D1EB Compression Method    0008 (8) 'Deflated'\n+21D1ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D1F1 CRC                   982A34CC (2552902860)\n+21D1F5 Compressed Size       0000027E (638)\n+21D1F9 Uncompressed Size     000004AE (1198)\n+21D1FD Filename Length       002A (42)\n+21D1FF Extra Length          0000 (0)\n+21D201 Comment Length        0000 (0)\n+21D203 Disk Start            0000 (0)\n+21D205 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B1C8 Ext File Attributes   00000000 (0)\n-21B1CC Local Header Offset   00050847 (329799)\n-21B1D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D207 Ext File Attributes   00000000 (0)\n+21D20B Local Header Offset   00075938 (481592)\n+21D20F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B1D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D20F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B203 CENTRAL HEADER #411   02014B50 (33639248)\n-21B207 Created Zip Spec      14 (20) '2.0'\n-21B208 Created OS            00 (0) 'MS-DOS'\n-21B209 Extract Zip Spec      14 (20) '2.0'\n-21B20A Extract OS            00 (0) 'MS-DOS'\n-21B20B General Purpose Flag  0808 (2056)\n+21D239 CENTRAL HEADER #411   02014B50 (33639248)\n+21D23D Created Zip Spec      14 (20) '2.0'\n+21D23E Created OS            00 (0) 'MS-DOS'\n+21D23F Extract Zip Spec      14 (20) '2.0'\n+21D240 Extract OS            00 (0) 'MS-DOS'\n+21D241 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B20D Compression Method    0008 (8) 'Deflated'\n-21B20F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B213 CRC                   D3DCC156 (3554459990)\n-21B217 Compressed Size       000002B1 (689)\n-21B21B Uncompressed Size     00000539 (1337)\n-21B21F Filename Length       0038 (56)\n-21B221 Extra Length          0000 (0)\n-21B223 Comment Length        0000 (0)\n-21B225 Disk Start            0000 (0)\n-21B227 Int File Attributes   0000 (0)\n+21D243 Compression Method    0008 (8) 'Deflated'\n+21D245 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D249 CRC                   7653CF57 (1985204055)\n+21D24D Compressed Size       00000592 (1426)\n+21D251 Uncompressed Size     000015FB (5627)\n+21D255 Filename Length       002C (44)\n+21D257 Extra Length          0000 (0)\n+21D259 Comment Length        0000 (0)\n+21D25B Disk Start            0000 (0)\n+21D25D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B229 Ext File Attributes   00000000 (0)\n-21B22D Local Header Offset   00050B76 (330614)\n-21B231 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D25F Ext File Attributes   00000000 (0)\n+21D263 Local Header Offset   00075C0E (482318)\n+21D267 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B231: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D267: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B269 CENTRAL HEADER #412   02014B50 (33639248)\n-21B26D Created Zip Spec      14 (20) '2.0'\n-21B26E Created OS            00 (0) 'MS-DOS'\n-21B26F Extract Zip Spec      14 (20) '2.0'\n-21B270 Extract OS            00 (0) 'MS-DOS'\n-21B271 General Purpose Flag  0808 (2056)\n+21D293 CENTRAL HEADER #412   02014B50 (33639248)\n+21D297 Created Zip Spec      14 (20) '2.0'\n+21D298 Created OS            00 (0) 'MS-DOS'\n+21D299 Extract Zip Spec      14 (20) '2.0'\n+21D29A Extract OS            00 (0) 'MS-DOS'\n+21D29B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B273 Compression Method    0008 (8) 'Deflated'\n-21B275 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B279 CRC                   C4DD1C85 (3302825093)\n-21B27D Compressed Size       000002D7 (727)\n-21B281 Uncompressed Size     000005BA (1466)\n-21B285 Filename Length       0032 (50)\n-21B287 Extra Length          0000 (0)\n-21B289 Comment Length        0000 (0)\n-21B28B Disk Start            0000 (0)\n-21B28D Int File Attributes   0000 (0)\n+21D29D Compression Method    0008 (8) 'Deflated'\n+21D29F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D2A3 CRC                   4D87180A (1300699146)\n+21D2A7 Compressed Size       0000037F (895)\n+21D2AB Uncompressed Size     000008A6 (2214)\n+21D2AF Filename Length       002C (44)\n+21D2B1 Extra Length          0000 (0)\n+21D2B3 Comment Length        0000 (0)\n+21D2B5 Disk Start            0000 (0)\n+21D2B7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B28F Ext File Attributes   00000000 (0)\n-21B293 Local Header Offset   00050E8D (331405)\n-21B297 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D2B9 Ext File Attributes   00000000 (0)\n+21D2BD Local Header Offset   000761FA (483834)\n+21D2C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B297: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D2C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B2C9 CENTRAL HEADER #413   02014B50 (33639248)\n-21B2CD Created Zip Spec      14 (20) '2.0'\n-21B2CE Created OS            00 (0) 'MS-DOS'\n-21B2CF Extract Zip Spec      14 (20) '2.0'\n-21B2D0 Extract OS            00 (0) 'MS-DOS'\n-21B2D1 General Purpose Flag  0808 (2056)\n+21D2ED CENTRAL HEADER #413   02014B50 (33639248)\n+21D2F1 Created Zip Spec      14 (20) '2.0'\n+21D2F2 Created OS            00 (0) 'MS-DOS'\n+21D2F3 Extract Zip Spec      14 (20) '2.0'\n+21D2F4 Extract OS            00 (0) 'MS-DOS'\n+21D2F5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B2D3 Compression Method    0008 (8) 'Deflated'\n-21B2D5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B2D9 CRC                   21EA98CC (569022668)\n-21B2DD Compressed Size       00000442 (1090)\n-21B2E1 Uncompressed Size     00000B23 (2851)\n-21B2E5 Filename Length       0036 (54)\n-21B2E7 Extra Length          0000 (0)\n-21B2E9 Comment Length        0000 (0)\n-21B2EB Disk Start            0000 (0)\n-21B2ED Int File Attributes   0000 (0)\n+21D2F7 Compression Method    0008 (8) 'Deflated'\n+21D2F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D2FD CRC                   8F2D4992 (2402109842)\n+21D301 Compressed Size       00000368 (872)\n+21D305 Uncompressed Size     000008C7 (2247)\n+21D309 Filename Length       002B (43)\n+21D30B Extra Length          0000 (0)\n+21D30D Comment Length        0000 (0)\n+21D30F Disk Start            0000 (0)\n+21D311 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B2EF Ext File Attributes   00000000 (0)\n-21B2F3 Local Header Offset   000511C4 (332228)\n-21B2F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D313 Ext File Attributes   00000000 (0)\n+21D317 Local Header Offset   000765D3 (484819)\n+21D31B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B2F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D31B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B32D CENTRAL HEADER #414   02014B50 (33639248)\n-21B331 Created Zip Spec      14 (20) '2.0'\n-21B332 Created OS            00 (0) 'MS-DOS'\n-21B333 Extract Zip Spec      14 (20) '2.0'\n-21B334 Extract OS            00 (0) 'MS-DOS'\n-21B335 General Purpose Flag  0808 (2056)\n+21D346 CENTRAL HEADER #414   02014B50 (33639248)\n+21D34A Created Zip Spec      14 (20) '2.0'\n+21D34B Created OS            00 (0) 'MS-DOS'\n+21D34C Extract Zip Spec      14 (20) '2.0'\n+21D34D Extract OS            00 (0) 'MS-DOS'\n+21D34E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B337 Compression Method    0008 (8) 'Deflated'\n-21B339 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B33D CRC                   96DC7168 (2531029352)\n-21B341 Compressed Size       000002CF (719)\n-21B345 Uncompressed Size     000005A5 (1445)\n-21B349 Filename Length       0032 (50)\n-21B34B Extra Length          0000 (0)\n-21B34D Comment Length        0000 (0)\n-21B34F Disk Start            0000 (0)\n-21B351 Int File Attributes   0000 (0)\n+21D350 Compression Method    0008 (8) 'Deflated'\n+21D352 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D356 CRC                   33828390 (864191376)\n+21D35A Compressed Size       00000359 (857)\n+21D35E Uncompressed Size     00000AEC (2796)\n+21D362 Filename Length       002D (45)\n+21D364 Extra Length          0000 (0)\n+21D366 Comment Length        0000 (0)\n+21D368 Disk Start            0000 (0)\n+21D36A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B353 Ext File Attributes   00000000 (0)\n-21B357 Local Header Offset   0005166A (333418)\n-21B35B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D36C Ext File Attributes   00000000 (0)\n+21D370 Local Header Offset   00076994 (485780)\n+21D374 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B35B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D374: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B38D CENTRAL HEADER #415   02014B50 (33639248)\n-21B391 Created Zip Spec      14 (20) '2.0'\n-21B392 Created OS            00 (0) 'MS-DOS'\n-21B393 Extract Zip Spec      14 (20) '2.0'\n-21B394 Extract OS            00 (0) 'MS-DOS'\n-21B395 General Purpose Flag  0808 (2056)\n+21D3A1 CENTRAL HEADER #415   02014B50 (33639248)\n+21D3A5 Created Zip Spec      14 (20) '2.0'\n+21D3A6 Created OS            00 (0) 'MS-DOS'\n+21D3A7 Extract Zip Spec      14 (20) '2.0'\n+21D3A8 Extract OS            00 (0) 'MS-DOS'\n+21D3A9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B397 Compression Method    0008 (8) 'Deflated'\n-21B399 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B39D CRC                   F57D6E98 (4118638232)\n-21B3A1 Compressed Size       000002DF (735)\n-21B3A5 Uncompressed Size     0000066F (1647)\n-21B3A9 Filename Length       0039 (57)\n-21B3AB Extra Length          0000 (0)\n-21B3AD Comment Length        0000 (0)\n-21B3AF Disk Start            0000 (0)\n-21B3B1 Int File Attributes   0000 (0)\n+21D3AB Compression Method    0008 (8) 'Deflated'\n+21D3AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D3B1 CRC                   ECCF2EAF (3973000879)\n+21D3B5 Compressed Size       00000708 (1800)\n+21D3B9 Uncompressed Size     00001FDF (8159)\n+21D3BD Filename Length       002C (44)\n+21D3BF Extra Length          0000 (0)\n+21D3C1 Comment Length        0000 (0)\n+21D3C3 Disk Start            0000 (0)\n+21D3C5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B3B3 Ext File Attributes   00000000 (0)\n-21B3B7 Local Header Offset   00051999 (334233)\n-21B3BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D3C7 Ext File Attributes   00000000 (0)\n+21D3CB Local Header Offset   00076D48 (486728)\n+21D3CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B3BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D3CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B3F4 CENTRAL HEADER #416   02014B50 (33639248)\n-21B3F8 Created Zip Spec      14 (20) '2.0'\n-21B3F9 Created OS            00 (0) 'MS-DOS'\n-21B3FA Extract Zip Spec      14 (20) '2.0'\n-21B3FB Extract OS            00 (0) 'MS-DOS'\n-21B3FC General Purpose Flag  0808 (2056)\n+21D3FB CENTRAL HEADER #416   02014B50 (33639248)\n+21D3FF Created Zip Spec      14 (20) '2.0'\n+21D400 Created OS            00 (0) 'MS-DOS'\n+21D401 Extract Zip Spec      14 (20) '2.0'\n+21D402 Extract OS            00 (0) 'MS-DOS'\n+21D403 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B3FE Compression Method    0008 (8) 'Deflated'\n-21B400 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B404 CRC                   00000000 (0)\n-21B408 Compressed Size       00000002 (2)\n-21B40C Uncompressed Size     00000000 (0)\n-21B410 Filename Length       0024 (36)\n-21B412 Extra Length          0000 (0)\n-21B414 Comment Length        0000 (0)\n-21B416 Disk Start            0000 (0)\n-21B418 Int File Attributes   0000 (0)\n+21D405 Compression Method    0008 (8) 'Deflated'\n+21D407 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D40B CRC                   4EF6CDD0 (1324797392)\n+21D40F Compressed Size       00000272 (626)\n+21D413 Uncompressed Size     00000489 (1161)\n+21D417 Filename Length       0030 (48)\n+21D419 Extra Length          0000 (0)\n+21D41B Comment Length        0000 (0)\n+21D41D Disk Start            0000 (0)\n+21D41F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B41A Ext File Attributes   00000000 (0)\n-21B41E Local Header Offset   00051CDF (335071)\n-21B422 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D421 Ext File Attributes   00000000 (0)\n+21D425 Local Header Offset   000774AA (488618)\n+21D429 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B422: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D429: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B446 CENTRAL HEADER #417   02014B50 (33639248)\n-21B44A Created Zip Spec      14 (20) '2.0'\n-21B44B Created OS            00 (0) 'MS-DOS'\n-21B44C Extract Zip Spec      14 (20) '2.0'\n-21B44D Extract OS            00 (0) 'MS-DOS'\n-21B44E General Purpose Flag  0808 (2056)\n+21D459 CENTRAL HEADER #417   02014B50 (33639248)\n+21D45D Created Zip Spec      14 (20) '2.0'\n+21D45E Created OS            00 (0) 'MS-DOS'\n+21D45F Extract Zip Spec      14 (20) '2.0'\n+21D460 Extract OS            00 (0) 'MS-DOS'\n+21D461 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B450 Compression Method    0008 (8) 'Deflated'\n-21B452 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B456 CRC                   CD8D1CAF (3448577199)\n-21B45A Compressed Size       00000325 (805)\n-21B45E Uncompressed Size     000007EC (2028)\n-21B462 Filename Length       0037 (55)\n-21B464 Extra Length          0000 (0)\n-21B466 Comment Length        0000 (0)\n-21B468 Disk Start            0000 (0)\n-21B46A Int File Attributes   0000 (0)\n+21D463 Compression Method    0008 (8) 'Deflated'\n+21D465 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D469 CRC                   8192FABF (2173893311)\n+21D46D Compressed Size       00001742 (5954)\n+21D471 Uncompressed Size     00007607 (30215)\n+21D475 Filename Length       0027 (39)\n+21D477 Extra Length          0000 (0)\n+21D479 Comment Length        0000 (0)\n+21D47B Disk Start            0000 (0)\n+21D47D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B46C Ext File Attributes   00000000 (0)\n-21B470 Local Header Offset   00051D33 (335155)\n-21B474 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D47F Ext File Attributes   00000000 (0)\n+21D483 Local Header Offset   0007777A (489338)\n+21D487 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B474: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D487: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B4AB CENTRAL HEADER #418   02014B50 (33639248)\n-21B4AF Created Zip Spec      14 (20) '2.0'\n-21B4B0 Created OS            00 (0) 'MS-DOS'\n-21B4B1 Extract Zip Spec      14 (20) '2.0'\n-21B4B2 Extract OS            00 (0) 'MS-DOS'\n-21B4B3 General Purpose Flag  0808 (2056)\n+21D4AE CENTRAL HEADER #418   02014B50 (33639248)\n+21D4B2 Created Zip Spec      14 (20) '2.0'\n+21D4B3 Created OS            00 (0) 'MS-DOS'\n+21D4B4 Extract Zip Spec      14 (20) '2.0'\n+21D4B5 Extract OS            00 (0) 'MS-DOS'\n+21D4B6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B4B5 Compression Method    0008 (8) 'Deflated'\n-21B4B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B4BB CRC                   7A4C73B7 (2051830711)\n-21B4BF Compressed Size       00000367 (871)\n-21B4C3 Uncompressed Size     00000A32 (2610)\n-21B4C7 Filename Length       003B (59)\n-21B4C9 Extra Length          0000 (0)\n-21B4CB Comment Length        0000 (0)\n-21B4CD Disk Start            0000 (0)\n-21B4CF Int File Attributes   0000 (0)\n+21D4B8 Compression Method    0008 (8) 'Deflated'\n+21D4BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D4BE CRC                   00000000 (0)\n+21D4C2 Compressed Size       00000002 (2)\n+21D4C6 Uncompressed Size     00000000 (0)\n+21D4CA Filename Length       001D (29)\n+21D4CC Extra Length          0000 (0)\n+21D4CE Comment Length        0000 (0)\n+21D4D0 Disk Start            0000 (0)\n+21D4D2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B4D1 Ext File Attributes   00000000 (0)\n-21B4D5 Local Header Offset   000520BD (336061)\n-21B4D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D4D4 Ext File Attributes   00000000 (0)\n+21D4D8 Local Header Offset   00078F11 (495377)\n+21D4DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B4D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D4DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B514 CENTRAL HEADER #419   02014B50 (33639248)\n-21B518 Created Zip Spec      14 (20) '2.0'\n-21B519 Created OS            00 (0) 'MS-DOS'\n-21B51A Extract Zip Spec      14 (20) '2.0'\n-21B51B Extract OS            00 (0) 'MS-DOS'\n-21B51C General Purpose Flag  0808 (2056)\n+21D4F9 CENTRAL HEADER #419   02014B50 (33639248)\n+21D4FD Created Zip Spec      14 (20) '2.0'\n+21D4FE Created OS            00 (0) 'MS-DOS'\n+21D4FF Extract Zip Spec      14 (20) '2.0'\n+21D500 Extract OS            00 (0) 'MS-DOS'\n+21D501 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B51E Compression Method    0008 (8) 'Deflated'\n-21B520 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B524 CRC                   00000000 (0)\n-21B528 Compressed Size       00000002 (2)\n-21B52C Uncompressed Size     00000000 (0)\n-21B530 Filename Length       002E (46)\n-21B532 Extra Length          0000 (0)\n-21B534 Comment Length        0000 (0)\n-21B536 Disk Start            0000 (0)\n-21B538 Int File Attributes   0000 (0)\n+21D503 Compression Method    0008 (8) 'Deflated'\n+21D505 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D509 CRC                   36088937 (906529079)\n+21D50D Compressed Size       000003FC (1020)\n+21D511 Uncompressed Size     0000094E (2382)\n+21D515 Filename Length       002D (45)\n+21D517 Extra Length          0000 (0)\n+21D519 Comment Length        0000 (0)\n+21D51B Disk Start            0000 (0)\n+21D51D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B53A Ext File Attributes   00000000 (0)\n-21B53E Local Header Offset   0005248D (337037)\n-21B542 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D51F Ext File Attributes   00000000 (0)\n+21D523 Local Header Offset   00078F5E (495454)\n+21D527 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B542: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D527: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B570 CENTRAL HEADER #420   02014B50 (33639248)\n-21B574 Created Zip Spec      14 (20) '2.0'\n-21B575 Created OS            00 (0) 'MS-DOS'\n-21B576 Extract Zip Spec      14 (20) '2.0'\n-21B577 Extract OS            00 (0) 'MS-DOS'\n-21B578 General Purpose Flag  0808 (2056)\n+21D554 CENTRAL HEADER #420   02014B50 (33639248)\n+21D558 Created Zip Spec      14 (20) '2.0'\n+21D559 Created OS            00 (0) 'MS-DOS'\n+21D55A Extract Zip Spec      14 (20) '2.0'\n+21D55B Extract OS            00 (0) 'MS-DOS'\n+21D55C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B57A Compression Method    0008 (8) 'Deflated'\n-21B57C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B580 CRC                   BCF898DF (3170408671)\n-21B584 Compressed Size       00000C4A (3146)\n-21B588 Uncompressed Size     00003374 (13172)\n-21B58C Filename Length       0042 (66)\n-21B58E Extra Length          0000 (0)\n-21B590 Comment Length        0000 (0)\n-21B592 Disk Start            0000 (0)\n-21B594 Int File Attributes   0000 (0)\n+21D55E Compression Method    0008 (8) 'Deflated'\n+21D560 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D564 CRC                   C67E8FBE (3330183102)\n+21D568 Compressed Size       0000027E (638)\n+21D56C Uncompressed Size     000004AB (1195)\n+21D570 Filename Length       0036 (54)\n+21D572 Extra Length          0000 (0)\n+21D574 Comment Length        0000 (0)\n+21D576 Disk Start            0000 (0)\n+21D578 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B596 Ext File Attributes   00000000 (0)\n-21B59A Local Header Offset   000524EB (337131)\n-21B59E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D57A Ext File Attributes   00000000 (0)\n+21D57E Local Header Offset   000793B5 (496565)\n+21D582 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B59E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D582: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B5E0 CENTRAL HEADER #421   02014B50 (33639248)\n-21B5E4 Created Zip Spec      14 (20) '2.0'\n-21B5E5 Created OS            00 (0) 'MS-DOS'\n-21B5E6 Extract Zip Spec      14 (20) '2.0'\n-21B5E7 Extract OS            00 (0) 'MS-DOS'\n-21B5E8 General Purpose Flag  0808 (2056)\n+21D5B8 CENTRAL HEADER #421   02014B50 (33639248)\n+21D5BC Created Zip Spec      14 (20) '2.0'\n+21D5BD Created OS            00 (0) 'MS-DOS'\n+21D5BE Extract Zip Spec      14 (20) '2.0'\n+21D5BF Extract OS            00 (0) 'MS-DOS'\n+21D5C0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B5EA Compression Method    0008 (8) 'Deflated'\n-21B5EC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B5F0 CRC                   E35903B0 (3814261680)\n-21B5F4 Compressed Size       0000029B (667)\n-21B5F8 Uncompressed Size     00000540 (1344)\n-21B5FC Filename Length       0049 (73)\n-21B5FE Extra Length          0000 (0)\n-21B600 Comment Length        0000 (0)\n-21B602 Disk Start            0000 (0)\n-21B604 Int File Attributes   0000 (0)\n+21D5C2 Compression Method    0008 (8) 'Deflated'\n+21D5C4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D5C8 CRC                   8F418EA5 (2403438245)\n+21D5CC Compressed Size       0000039C (924)\n+21D5D0 Uncompressed Size     00000967 (2407)\n+21D5D4 Filename Length       0037 (55)\n+21D5D6 Extra Length          0000 (0)\n+21D5D8 Comment Length        0000 (0)\n+21D5DA Disk Start            0000 (0)\n+21D5DC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B606 Ext File Attributes   00000000 (0)\n-21B60A Local Header Offset   000531A5 (340389)\n-21B60E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D5DE Ext File Attributes   00000000 (0)\n+21D5E2 Local Header Offset   00079697 (497303)\n+21D5E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B60E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D5E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B657 CENTRAL HEADER #422   02014B50 (33639248)\n-21B65B Created Zip Spec      14 (20) '2.0'\n-21B65C Created OS            00 (0) 'MS-DOS'\n-21B65D Extract Zip Spec      14 (20) '2.0'\n-21B65E Extract OS            00 (0) 'MS-DOS'\n-21B65F General Purpose Flag  0808 (2056)\n+21D61D CENTRAL HEADER #422   02014B50 (33639248)\n+21D621 Created Zip Spec      14 (20) '2.0'\n+21D622 Created OS            00 (0) 'MS-DOS'\n+21D623 Extract Zip Spec      14 (20) '2.0'\n+21D624 Extract OS            00 (0) 'MS-DOS'\n+21D625 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B661 Compression Method    0008 (8) 'Deflated'\n-21B663 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B667 CRC                   00000000 (0)\n-21B66B Compressed Size       00000002 (2)\n-21B66F Uncompressed Size     00000000 (0)\n-21B673 Filename Length       0035 (53)\n-21B675 Extra Length          0000 (0)\n-21B677 Comment Length        0000 (0)\n-21B679 Disk Start            0000 (0)\n-21B67B Int File Attributes   0000 (0)\n+21D627 Compression Method    0008 (8) 'Deflated'\n+21D629 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D62D CRC                   00000000 (0)\n+21D631 Compressed Size       00000002 (2)\n+21D635 Uncompressed Size     00000000 (0)\n+21D639 Filename Length       001F (31)\n+21D63B Extra Length          0000 (0)\n+21D63D Comment Length        0000 (0)\n+21D63F Disk Start            0000 (0)\n+21D641 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B67D Ext File Attributes   00000000 (0)\n-21B681 Local Header Offset   000534B7 (341175)\n-21B685 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D643 Ext File Attributes   00000000 (0)\n+21D647 Local Header Offset   00079A98 (498328)\n+21D64B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B685: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D64B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B6BA CENTRAL HEADER #423   02014B50 (33639248)\n-21B6BE Created Zip Spec      14 (20) '2.0'\n-21B6BF Created OS            00 (0) 'MS-DOS'\n-21B6C0 Extract Zip Spec      14 (20) '2.0'\n-21B6C1 Extract OS            00 (0) 'MS-DOS'\n-21B6C2 General Purpose Flag  0808 (2056)\n+21D66A CENTRAL HEADER #423   02014B50 (33639248)\n+21D66E Created Zip Spec      14 (20) '2.0'\n+21D66F Created OS            00 (0) 'MS-DOS'\n+21D670 Extract Zip Spec      14 (20) '2.0'\n+21D671 Extract OS            00 (0) 'MS-DOS'\n+21D672 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B6C4 Compression Method    0008 (8) 'Deflated'\n-21B6C6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B6CA CRC                   76BEB07B (1992208507)\n-21B6CE Compressed Size       000002E5 (741)\n-21B6D2 Uncompressed Size     0000058B (1419)\n-21B6D6 Filename Length       0043 (67)\n-21B6D8 Extra Length          0000 (0)\n-21B6DA Comment Length        0000 (0)\n-21B6DC Disk Start            0000 (0)\n-21B6DE Int File Attributes   0000 (0)\n+21D674 Compression Method    0008 (8) 'Deflated'\n+21D676 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D67A CRC                   9D821087 (2642546823)\n+21D67E Compressed Size       00000249 (585)\n+21D682 Uncompressed Size     000004BE (1214)\n+21D686 Filename Length       0029 (41)\n+21D688 Extra Length          0000 (0)\n+21D68A Comment Length        0000 (0)\n+21D68C Disk Start            0000 (0)\n+21D68E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B6E0 Ext File Attributes   00000000 (0)\n-21B6E4 Local Header Offset   0005351C (341276)\n-21B6E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D690 Ext File Attributes   00000000 (0)\n+21D694 Local Header Offset   00079AE7 (498407)\n+21D698 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B6E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D698: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B72B CENTRAL HEADER #424   02014B50 (33639248)\n-21B72F Created Zip Spec      14 (20) '2.0'\n-21B730 Created OS            00 (0) 'MS-DOS'\n-21B731 Extract Zip Spec      14 (20) '2.0'\n-21B732 Extract OS            00 (0) 'MS-DOS'\n-21B733 General Purpose Flag  0808 (2056)\n+21D6C1 CENTRAL HEADER #424   02014B50 (33639248)\n+21D6C5 Created Zip Spec      14 (20) '2.0'\n+21D6C6 Created OS            00 (0) 'MS-DOS'\n+21D6C7 Extract Zip Spec      14 (20) '2.0'\n+21D6C8 Extract OS            00 (0) 'MS-DOS'\n+21D6C9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B735 Compression Method    0008 (8) 'Deflated'\n-21B737 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B73B CRC                   AFF80853 (2952267859)\n-21B73F Compressed Size       000002EF (751)\n-21B743 Uncompressed Size     00000657 (1623)\n-21B747 Filename Length       004A (74)\n-21B749 Extra Length          0000 (0)\n-21B74B Comment Length        0000 (0)\n-21B74D Disk Start            0000 (0)\n-21B74F Int File Attributes   0000 (0)\n+21D6CB Compression Method    0008 (8) 'Deflated'\n+21D6CD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D6D1 CRC                   0D8DFECE (227409614)\n+21D6D5 Compressed Size       00000376 (886)\n+21D6D9 Uncompressed Size     00000F82 (3970)\n+21D6DD Filename Length       002A (42)\n+21D6DF Extra Length          0000 (0)\n+21D6E1 Comment Length        0000 (0)\n+21D6E3 Disk Start            0000 (0)\n+21D6E5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B751 Ext File Attributes   00000000 (0)\n-21B755 Local Header Offset   00053872 (342130)\n-21B759 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D6E7 Ext File Attributes   00000000 (0)\n+21D6EB Local Header Offset   00079D87 (499079)\n+21D6EF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B759: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D6EF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B7A3 CENTRAL HEADER #425   02014B50 (33639248)\n-21B7A7 Created Zip Spec      14 (20) '2.0'\n-21B7A8 Created OS            00 (0) 'MS-DOS'\n-21B7A9 Extract Zip Spec      14 (20) '2.0'\n-21B7AA Extract OS            00 (0) 'MS-DOS'\n-21B7AB General Purpose Flag  0808 (2056)\n+21D719 CENTRAL HEADER #425   02014B50 (33639248)\n+21D71D Created Zip Spec      14 (20) '2.0'\n+21D71E Created OS            00 (0) 'MS-DOS'\n+21D71F Extract Zip Spec      14 (20) '2.0'\n+21D720 Extract OS            00 (0) 'MS-DOS'\n+21D721 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B7AD Compression Method    0008 (8) 'Deflated'\n-21B7AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B7B3 CRC                   64878DEF (1686605295)\n-21B7B7 Compressed Size       00000677 (1655)\n-21B7BB Uncompressed Size     0000141B (5147)\n-21B7BF Filename Length       004A (74)\n-21B7C1 Extra Length          0000 (0)\n-21B7C3 Comment Length        0000 (0)\n-21B7C5 Disk Start            0000 (0)\n-21B7C7 Int File Attributes   0000 (0)\n+21D723 Compression Method    0008 (8) 'Deflated'\n+21D725 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D729 CRC                   A6EF1A57 (2800687703)\n+21D72D Compressed Size       000002E4 (740)\n+21D731 Uncompressed Size     00000745 (1861)\n+21D735 Filename Length       0031 (49)\n+21D737 Extra Length          0000 (0)\n+21D739 Comment Length        0000 (0)\n+21D73B Disk Start            0000 (0)\n+21D73D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B7C9 Ext File Attributes   00000000 (0)\n-21B7CD Local Header Offset   00053BD9 (343001)\n-21B7D1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D73F Ext File Attributes   00000000 (0)\n+21D743 Local Header Offset   0007A155 (500053)\n+21D747 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B7D1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D747: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B81B CENTRAL HEADER #426   02014B50 (33639248)\n-21B81F Created Zip Spec      14 (20) '2.0'\n-21B820 Created OS            00 (0) 'MS-DOS'\n-21B821 Extract Zip Spec      14 (20) '2.0'\n-21B822 Extract OS            00 (0) 'MS-DOS'\n-21B823 General Purpose Flag  0808 (2056)\n+21D778 CENTRAL HEADER #426   02014B50 (33639248)\n+21D77C Created Zip Spec      14 (20) '2.0'\n+21D77D Created OS            00 (0) 'MS-DOS'\n+21D77E Extract Zip Spec      14 (20) '2.0'\n+21D77F Extract OS            00 (0) 'MS-DOS'\n+21D780 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B825 Compression Method    0008 (8) 'Deflated'\n-21B827 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B82B CRC                   B919F4D5 (3105486037)\n-21B82F Compressed Size       000002EA (746)\n-21B833 Uncompressed Size     000005A5 (1445)\n-21B837 Filename Length       0047 (71)\n-21B839 Extra Length          0000 (0)\n-21B83B Comment Length        0000 (0)\n-21B83D Disk Start            0000 (0)\n-21B83F Int File Attributes   0000 (0)\n+21D782 Compression Method    0008 (8) 'Deflated'\n+21D784 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D788 CRC                   626EDC3E (1651432510)\n+21D78C Compressed Size       000005BE (1470)\n+21D790 Uncompressed Size     00001485 (5253)\n+21D794 Filename Length       0031 (49)\n+21D796 Extra Length          0000 (0)\n+21D798 Comment Length        0000 (0)\n+21D79A Disk Start            0000 (0)\n+21D79C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B841 Ext File Attributes   00000000 (0)\n-21B845 Local Header Offset   000542C8 (344776)\n-21B849 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D79E Ext File Attributes   00000000 (0)\n+21D7A2 Local Header Offset   0007A498 (500888)\n+21D7A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B849: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D7A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B890 CENTRAL HEADER #427   02014B50 (33639248)\n-21B894 Created Zip Spec      14 (20) '2.0'\n-21B895 Created OS            00 (0) 'MS-DOS'\n-21B896 Extract Zip Spec      14 (20) '2.0'\n-21B897 Extract OS            00 (0) 'MS-DOS'\n-21B898 General Purpose Flag  0808 (2056)\n+21D7D7 CENTRAL HEADER #427   02014B50 (33639248)\n+21D7DB Created Zip Spec      14 (20) '2.0'\n+21D7DC Created OS            00 (0) 'MS-DOS'\n+21D7DD Extract Zip Spec      14 (20) '2.0'\n+21D7DE Extract OS            00 (0) 'MS-DOS'\n+21D7DF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B89A Compression Method    0008 (8) 'Deflated'\n-21B89C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B8A0 CRC                   06325F9E (103964574)\n-21B8A4 Compressed Size       000002A9 (681)\n-21B8A8 Uncompressed Size     00000541 (1345)\n-21B8AC Filename Length       004E (78)\n-21B8AE Extra Length          0000 (0)\n-21B8B0 Comment Length        0000 (0)\n-21B8B2 Disk Start            0000 (0)\n-21B8B4 Int File Attributes   0000 (0)\n+21D7E1 Compression Method    0008 (8) 'Deflated'\n+21D7E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D7E7 CRC                   00000000 (0)\n+21D7EB Compressed Size       00000002 (2)\n+21D7EF Uncompressed Size     00000000 (0)\n+21D7F3 Filename Length       0023 (35)\n+21D7F5 Extra Length          0000 (0)\n+21D7F7 Comment Length        0000 (0)\n+21D7F9 Disk Start            0000 (0)\n+21D7FB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B8B6 Ext File Attributes   00000000 (0)\n-21B8BA Local Header Offset   00054627 (345639)\n-21B8BE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D7FD Ext File Attributes   00000000 (0)\n+21D801 Local Header Offset   0007AAB5 (502453)\n+21D805 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B8BE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D805: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B90C CENTRAL HEADER #428   02014B50 (33639248)\n-21B910 Created Zip Spec      14 (20) '2.0'\n-21B911 Created OS            00 (0) 'MS-DOS'\n-21B912 Extract Zip Spec      14 (20) '2.0'\n-21B913 Extract OS            00 (0) 'MS-DOS'\n-21B914 General Purpose Flag  0808 (2056)\n+21D828 CENTRAL HEADER #428   02014B50 (33639248)\n+21D82C Created Zip Spec      14 (20) '2.0'\n+21D82D Created OS            00 (0) 'MS-DOS'\n+21D82E Extract Zip Spec      14 (20) '2.0'\n+21D82F Extract OS            00 (0) 'MS-DOS'\n+21D830 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B916 Compression Method    0008 (8) 'Deflated'\n-21B918 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B91C CRC                   00000000 (0)\n-21B920 Compressed Size       00000002 (2)\n-21B924 Uncompressed Size     00000000 (0)\n-21B928 Filename Length       003B (59)\n-21B92A Extra Length          0000 (0)\n-21B92C Comment Length        0000 (0)\n-21B92E Disk Start            0000 (0)\n-21B930 Int File Attributes   0000 (0)\n+21D832 Compression Method    0008 (8) 'Deflated'\n+21D834 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D838 CRC                   65EBC1EB (1709949419)\n+21D83C Compressed Size       000003A6 (934)\n+21D840 Uncompressed Size     00000D0E (3342)\n+21D844 Filename Length       0031 (49)\n+21D846 Extra Length          0000 (0)\n+21D848 Comment Length        0000 (0)\n+21D84A Disk Start            0000 (0)\n+21D84C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B932 Ext File Attributes   00000000 (0)\n-21B936 Local Header Offset   0005494C (346444)\n-21B93A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D84E Ext File Attributes   00000000 (0)\n+21D852 Local Header Offset   0007AB08 (502536)\n+21D856 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B93A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D856: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B975 CENTRAL HEADER #429   02014B50 (33639248)\n-21B979 Created Zip Spec      14 (20) '2.0'\n-21B97A Created OS            00 (0) 'MS-DOS'\n-21B97B Extract Zip Spec      14 (20) '2.0'\n-21B97C Extract OS            00 (0) 'MS-DOS'\n-21B97D General Purpose Flag  0808 (2056)\n+21D887 CENTRAL HEADER #429   02014B50 (33639248)\n+21D88B Created Zip Spec      14 (20) '2.0'\n+21D88C Created OS            00 (0) 'MS-DOS'\n+21D88D Extract Zip Spec      14 (20) '2.0'\n+21D88E Extract OS            00 (0) 'MS-DOS'\n+21D88F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21B97F Compression Method    0008 (8) 'Deflated'\n-21B981 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21B985 CRC                   1C57CB8B (475515787)\n-21B989 Compressed Size       00000287 (647)\n-21B98D Uncompressed Size     00000532 (1330)\n-21B991 Filename Length       0053 (83)\n-21B993 Extra Length          0000 (0)\n-21B995 Comment Length        0000 (0)\n-21B997 Disk Start            0000 (0)\n-21B999 Int File Attributes   0000 (0)\n+21D891 Compression Method    0008 (8) 'Deflated'\n+21D893 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D897 CRC                   006A5B46 (6970182)\n+21D89B Compressed Size       000002C9 (713)\n+21D89F Uncompressed Size     000006F8 (1784)\n+21D8A3 Filename Length       0038 (56)\n+21D8A5 Extra Length          0000 (0)\n+21D8A7 Comment Length        0000 (0)\n+21D8A9 Disk Start            0000 (0)\n+21D8AB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21B99B Ext File Attributes   00000000 (0)\n-21B99F Local Header Offset   000549B7 (346551)\n-21B9A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D8AD Ext File Attributes   00000000 (0)\n+21D8B1 Local Header Offset   0007AF0D (503565)\n+21D8B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21B9A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D8B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21B9F6 CENTRAL HEADER #430   02014B50 (33639248)\n-21B9FA Created Zip Spec      14 (20) '2.0'\n-21B9FB Created OS            00 (0) 'MS-DOS'\n-21B9FC Extract Zip Spec      14 (20) '2.0'\n-21B9FD Extract OS            00 (0) 'MS-DOS'\n-21B9FE General Purpose Flag  0808 (2056)\n+21D8ED CENTRAL HEADER #430   02014B50 (33639248)\n+21D8F1 Created Zip Spec      14 (20) '2.0'\n+21D8F2 Created OS            00 (0) 'MS-DOS'\n+21D8F3 Extract Zip Spec      14 (20) '2.0'\n+21D8F4 Extract OS            00 (0) 'MS-DOS'\n+21D8F5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21BA00 Compression Method    0008 (8) 'Deflated'\n-21BA02 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21BA06 CRC                   9B53D29B (2605961883)\n-21BA0A Compressed Size       0000035C (860)\n-21BA0E Uncompressed Size     000006D4 (1748)\n-21BA12 Filename Length       0053 (83)\n-21BA14 Extra Length          0000 (0)\n-21BA16 Comment Length        0000 (0)\n-21BA18 Disk Start            0000 (0)\n-21BA1A Int File Attributes   0000 (0)\n+21D8F7 Compression Method    0008 (8) 'Deflated'\n+21D8F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D8FD CRC                   00000000 (0)\n+21D901 Compressed Size       00000002 (2)\n+21D905 Uncompressed Size     00000000 (0)\n+21D909 Filename Length       0023 (35)\n+21D90B Extra Length          0000 (0)\n+21D90D Comment Length        0000 (0)\n+21D90F Disk Start            0000 (0)\n+21D911 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21BA1C Ext File Attributes   00000000 (0)\n-21BA20 Local Header Offset   00054CBF (347327)\n-21BA24 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D913 Ext File Attributes   00000000 (0)\n+21D917 Local Header Offset   0007B23C (504380)\n+21D91B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21BA24: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D91B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21BA77 CENTRAL HEADER #431   02014B50 (33639248)\n-21BA7B Created Zip Spec      14 (20) '2.0'\n-21BA7C Created OS            00 (0) 'MS-DOS'\n-21BA7D Extract Zip Spec      14 (20) '2.0'\n-21BA7E Extract OS            00 (0) 'MS-DOS'\n-21BA7F General Purpose Flag  0808 (2056)\n+21D93E CENTRAL HEADER #431   02014B50 (33639248)\n+21D942 Created Zip Spec      14 (20) '2.0'\n+21D943 Created OS            00 (0) 'MS-DOS'\n+21D944 Extract Zip Spec      14 (20) '2.0'\n+21D945 Extract OS            00 (0) 'MS-DOS'\n+21D946 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21BA81 Compression Method    0008 (8) 'Deflated'\n-21BA83 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21BA87 CRC                   00000000 (0)\n-21BA8B Compressed Size       00000002 (2)\n-21BA8F Uncompressed Size     00000000 (0)\n-21BA93 Filename Length       0029 (41)\n-21BA95 Extra Length          0000 (0)\n-21BA97 Comment Length        0000 (0)\n-21BA99 Disk Start            0000 (0)\n-21BA9B Int File Attributes   0000 (0)\n+21D948 Compression Method    0008 (8) 'Deflated'\n+21D94A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D94E CRC                   8FD172CF (2412868303)\n+21D952 Compressed Size       0000034C (844)\n+21D956 Uncompressed Size     00000D1B (3355)\n+21D95A Filename Length       0031 (49)\n+21D95C Extra Length          0000 (0)\n+21D95E Comment Length        0000 (0)\n+21D960 Disk Start            0000 (0)\n+21D962 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21BA9D Ext File Attributes   00000000 (0)\n-21BAA1 Local Header Offset   0005509C (348316)\n-21BAA5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D964 Ext File Attributes   00000000 (0)\n+21D968 Local Header Offset   0007B28F (504463)\n+21D96C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21BAA5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D96C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21BACE CENTRAL HEADER #432   02014B50 (33639248)\n-21BAD2 Created Zip Spec      14 (20) '2.0'\n-21BAD3 Created OS            00 (0) 'MS-DOS'\n-21BAD4 Extract Zip Spec      14 (20) '2.0'\n-21BAD5 Extract OS            00 (0) 'MS-DOS'\n-21BAD6 General Purpose Flag  0808 (2056)\n+21D99D CENTRAL HEADER #432   02014B50 (33639248)\n+21D9A1 Created Zip Spec      14 (20) '2.0'\n+21D9A2 Created OS            00 (0) 'MS-DOS'\n+21D9A3 Extract Zip Spec      14 (20) '2.0'\n+21D9A4 Extract OS            00 (0) 'MS-DOS'\n+21D9A5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21BAD8 Compression Method    0008 (8) 'Deflated'\n-21BADA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21BADE CRC                   F601821B (4127293979)\n-21BAE2 Compressed Size       000004C7 (1223)\n-21BAE6 Uncompressed Size     00000C34 (3124)\n-21BAEA Filename Length       003F (63)\n-21BAEC Extra Length          0000 (0)\n-21BAEE Comment Length        0000 (0)\n-21BAF0 Disk Start            0000 (0)\n-21BAF2 Int File Attributes   0000 (0)\n+21D9A7 Compression Method    0008 (8) 'Deflated'\n+21D9A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21D9AD CRC                   7ADBDBE0 (2061229024)\n+21D9B1 Compressed Size       0000055C (1372)\n+21D9B5 Uncompressed Size     000012FC (4860)\n+21D9B9 Filename Length       0038 (56)\n+21D9BB Extra Length          0000 (0)\n+21D9BD Comment Length        0000 (0)\n+21D9BF Disk Start            0000 (0)\n+21D9C1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21BAF4 Ext File Attributes   00000000 (0)\n-21BAF8 Local Header Offset   000550F5 (348405)\n-21BAFC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21D9C3 Ext File Attributes   00000000 (0)\n+21D9C7 Local Header Offset   0007B63A (505402)\n+21D9CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21BAFC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21D9CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21BB3B CENTRAL HEADER #433   02014B50 (33639248)\n-21BB3F Created Zip Spec      14 (20) '2.0'\n-21BB40 Created OS            00 (0) 'MS-DOS'\n-21BB41 Extract Zip Spec      14 (20) '2.0'\n-21BB42 Extract OS            00 (0) 'MS-DOS'\n-21BB43 General Purpose Flag  0808 (2056)\n+21DA03 CENTRAL HEADER #433   02014B50 (33639248)\n+21DA07 Created Zip Spec      14 (20) '2.0'\n+21DA08 Created OS            00 (0) 'MS-DOS'\n+21DA09 Extract Zip Spec      14 (20) '2.0'\n+21DA0A Extract OS            00 (0) 'MS-DOS'\n+21DA0B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21BB45 Compression Method    0008 (8) 'Deflated'\n-21BB47 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21BB4B CRC                   00000000 (0)\n-21BB4F Compressed Size       00000002 (2)\n-21BB53 Uncompressed Size     00000000 (0)\n-21BB57 Filename Length       0029 (41)\n-21BB59 Extra Length          0000 (0)\n-21BB5B Comment Length        0000 (0)\n-21BB5D Disk Start            0000 (0)\n-21BB5F Int File Attributes   0000 (0)\n+21DA0D Compression Method    0008 (8) 'Deflated'\n+21DA0F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21DA13 CRC                   00000000 (0)\n+21DA17 Compressed Size       00000002 (2)\n+21DA1B Uncompressed Size     00000000 (0)\n+21DA1F Filename Length       0025 (37)\n+21DA21 Extra Length          0000 (0)\n+21DA23 Comment Length        0000 (0)\n+21DA25 Disk Start            0000 (0)\n+21DA27 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21BB61 Ext File Attributes   00000000 (0)\n-21BB65 Local Header Offset   00055629 (349737)\n-21BB69 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21DA29 Ext File Attributes   00000000 (0)\n+21DA2D Local Header Offset   0007BBFC (506876)\n+21DA31 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21BB69: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21DA31: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21BB92 CENTRAL HEADER #434   02014B50 (33639248)\n-21BB96 Created Zip Spec      14 (20) '2.0'\n-21BB97 Created OS            00 (0) 'MS-DOS'\n-21BB98 Extract Zip Spec      14 (20) '2.0'\n-21BB99 Extract OS            00 (0) 'MS-DOS'\n-21BB9A General Purpose Flag  0808 (2056)\n+21DA56 CENTRAL HEADER #434   02014B50 (33639248)\n+21DA5A Created Zip Spec      14 (20) '2.0'\n+21DA5B Created OS            00 (0) 'MS-DOS'\n+21DA5C Extract Zip Spec      14 (20) '2.0'\n+21DA5D Extract OS            00 (0) 'MS-DOS'\n+21DA5E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21BB9C Compression Method    0008 (8) 'Deflated'\n-21BB9E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21BBA2 CRC                   9E4A1FA8 (2655657896)\n-21BBA6 Compressed Size       000004FD (1277)\n-21BBAA Uncompressed Size     00000F53 (3923)\n-21BBAE Filename Length       0042 (66)\n-21BBB0 Extra Length          0000 (0)\n-21BBB2 Comment Length        0000 (0)\n-21BBB4 Disk Start            0000 (0)\n-21BBB6 Int File Attributes   0000 (0)\n+21DA60 Compression Method    0008 (8) 'Deflated'\n+21DA62 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21DA66 CRC                   0237005F (37159007)\n+21DA6A Compressed Size       00000393 (915)\n+21DA6E Uncompressed Size     00000E61 (3681)\n+21DA72 Filename Length       0035 (53)\n+21DA74 Extra Length          0000 (0)\n+21DA76 Comment Length        0000 (0)\n+21DA78 Disk Start            0000 (0)\n+21DA7A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21BBB8 Ext File Attributes   00000000 (0)\n-21BBBC Local Header Offset   00055682 (349826)\n-21BBC0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21DA7C Ext File Attributes   00000000 (0)\n+21DA80 Local Header Offset   0007BC51 (506961)\n+21DA84 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21BBC0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21DA84: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21BC02 CENTRAL HEADER #435   02014B50 (33639248)\n-21BC06 Created Zip Spec      14 (20) '2.0'\n-21BC07 Created OS            00 (0) 'MS-DOS'\n-21BC08 Extract Zip Spec      14 (20) '2.0'\n-21BC09 Extract OS            00 (0) 'MS-DOS'\n-21BC0A General Purpose Flag  0808 (2056)\n+21DAB9 CENTRAL HEADER #435   02014B50 (33639248)\n+21DABD Created Zip Spec      14 (20) '2.0'\n+21DABE Created OS            00 (0) 'MS-DOS'\n+21DABF Extract Zip Spec      14 (20) '2.0'\n+21DAC0 Extract OS            00 (0) 'MS-DOS'\n+21DAC1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21BC0C Compression Method    0008 (8) 'Deflated'\n-21BC0E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21BC12 CRC                   0EB84276 (246956662)\n-21BC16 Compressed Size       00000292 (658)\n-21BC1A Uncompressed Size     00000517 (1303)\n-21BC1E Filename Length       003F (63)\n-21BC20 Extra Length          0000 (0)\n-21BC22 Comment Length        0000 (0)\n-21BC24 Disk Start            0000 (0)\n-21BC26 Int File Attributes   0000 (0)\n+21DAC3 Compression Method    0008 (8) 'Deflated'\n+21DAC5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21DAC9 CRC                   CE737695 (3463673493)\n+21DACD Compressed Size       00000481 (1153)\n+21DAD1 Uncompressed Size     000010CC (4300)\n+21DAD5 Filename Length       003C (60)\n+21DAD7 Extra Length          0000 (0)\n+21DAD9 Comment Length        0000 (0)\n+21DADB Disk Start            0000 (0)\n+21DADD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21BC28 Ext File Attributes   00000000 (0)\n-21BC2C Local Header Offset   00055BEF (351215)\n-21BC30 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21DADF Ext File Attributes   00000000 (0)\n+21DAE3 Local Header Offset   0007C047 (507975)\n+21DAE7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21BC30: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21DAE7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21BC6F CENTRAL HEADER #436   02014B50 (33639248)\n-21BC73 Created Zip Spec      14 (20) '2.0'\n-21BC74 Created OS            00 (0) 'MS-DOS'\n-21BC75 Extract Zip Spec      14 (20) '2.0'\n-21BC76 Extract OS            00 (0) 'MS-DOS'\n-21BC77 General Purpose Flag  0808 (2056)\n+21DB23 CENTRAL HEADER #436   02014B50 (33639248)\n+21DB27 Created Zip Spec      14 (20) '2.0'\n+21DB28 Created OS            00 (0) 'MS-DOS'\n+21DB29 Extract Zip Spec      14 (20) '2.0'\n+21DB2A Extract OS            00 (0) 'MS-DOS'\n+21DB2B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21BC79 Compression Method    0008 (8) 'Deflated'\n-21BC7B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21BC7F CRC                   00000000 (0)\n-21BC83 Compressed Size       00000002 (2)\n-21BC87 Uncompressed Size     00000000 (0)\n-21BC8B Filename Length       002B (43)\n-21BC8D Extra Length          0000 (0)\n-21BC8F Comment Length        0000 (0)\n-21BC91 Disk Start            0000 (0)\n-21BC93 Int File Attributes   0000 (0)\n+21DB2D Compression Method    0008 (8) 'Deflated'\n+21DB2F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21DB33 CRC                   00000000 (0)\n+21DB37 Compressed Size       00000002 (2)\n+21DB3B Uncompressed Size     00000000 (0)\n+21DB3F Filename Length       0026 (38)\n+21DB41 Extra Length          0000 (0)\n+21DB43 Comment Length        0000 (0)\n+21DB45 Disk Start            0000 (0)\n+21DB47 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21BC95 Ext File Attributes   00000000 (0)\n-21BC99 Local Header Offset   00055EEE (351982)\n-21BC9D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21DB49 Ext File Attributes   00000000 (0)\n+21DB4D Local Header Offset   0007C532 (509234)\n+21DB51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21BC9D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21DB51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21BCC8 CENTRAL HEADER #437   02014B50 (33639248)\n-21BCCC Created Zip Spec      14 (20) '2.0'\n-21BCCD Created OS            00 (0) 'MS-DOS'\n-21BCCE Extract Zip Spec      14 (20) '2.0'\n-21BCCF Extract OS            00 (0) 'MS-DOS'\n-21BCD0 General Purpose Flag  0808 (2056)\n+21DB77 CENTRAL HEADER #437   02014B50 (33639248)\n+21DB7B Created Zip Spec      14 (20) '2.0'\n+21DB7C Created OS            00 (0) 'MS-DOS'\n+21DB7D Extract Zip Spec      14 (20) '2.0'\n+21DB7E Extract OS            00 (0) 'MS-DOS'\n+21DB7F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21BCD2 Compression Method    0008 (8) 'Deflated'\n-21BCD4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21BCD8 CRC                   64ACCB0D (1689045773)\n-21BCDC Compressed Size       00000854 (2132)\n-21BCE0 Uncompressed Size     00001B32 (6962)\n-21BCE4 Filename Length       003C (60)\n-21BCE6 Extra Length          0000 (0)\n-21BCE8 Comment Length        0000 (0)\n-21BCEA Disk Start            0000 (0)\n-21BCEC Int File Attributes   0000 (0)\n+21DB81 Compression Method    0008 (8) 'Deflated'\n+21DB83 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21DB87 CRC                   719AAFB0 (1905962928)\n+21DB8B Compressed Size       00000343 (835)\n+21DB8F Uncompressed Size     00000C98 (3224)\n+21DB93 Filename Length       0037 (55)\n+21DB95 Extra Length          0000 (0)\n+21DB97 Comment Length        0000 (0)\n+21DB99 Disk Start            0000 (0)\n+21DB9B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21BCEE Ext File Attributes   00000000 (0)\n-21BCF2 Local Header Offset   00055F49 (352073)\n-21BCF6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21DB9D Ext File Attributes   00000000 (0)\n+21DBA1 Local Header Offset   0007C588 (509320)\n+21DBA5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21BCF6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21DBA5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21BD32 CENTRAL HEADER #438   02014B50 (33639248)\n-21BD36 Created Zip Spec      14 (20) '2.0'\n-21BD37 Created OS            00 (0) 'MS-DOS'\n-21BD38 Extract Zip Spec      14 (20) '2.0'\n-21BD39 Extract OS            00 (0) 'MS-DOS'\n-21BD3A General Purpose Flag  0808 (2056)\n+21DBDC CENTRAL HEADER #438   02014B50 (33639248)\n+21DBE0 Created Zip Spec      14 (20) '2.0'\n+21DBE1 Created OS            00 (0) 'MS-DOS'\n+21DBE2 Extract Zip Spec      14 (20) '2.0'\n+21DBE3 Extract OS            00 (0) 'MS-DOS'\n+21DBE4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21BD3C Compression Method    0008 (8) 'Deflated'\n-21BD3E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21BD42 CRC                   72CD5ED3 (1926061779)\n-21BD46 Compressed Size       00000326 (806)\n-21BD4A Uncompressed Size     0000069B (1691)\n-21BD4E Filename Length       0043 (67)\n-21BD50 Extra Length          0000 (0)\n-21BD52 Comment Length        0000 (0)\n-21BD54 Disk Start            0000 (0)\n-21BD56 Int File Attributes   0000 (0)\n+21DBE6 Compression Method    0008 (8) 'Deflated'\n+21DBE8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21DBEC CRC                   B7D93D08 (3084467464)\n+21DBF0 Compressed Size       00000375 (885)\n+21DBF4 Uncompressed Size     00000CED (3309)\n+21DBF8 Filename Length       003E (62)\n+21DBFA Extra Length          0000 (0)\n+21DBFC Comment Length        0000 (0)\n+21DBFE Disk Start            0000 (0)\n+21DC00 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21BD58 Ext File Attributes   00000000 (0)\n-21BD5C Local Header Offset   00056807 (354311)\n-21BD60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21DC02 Ext File Attributes   00000000 (0)\n+21DC06 Local Header Offset   0007C930 (510256)\n+21DC0A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21BD60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21DC0A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21BDA3 CENTRAL HEADER #439   02014B50 (33639248)\n-21BDA7 Created Zip Spec      14 (20) '2.0'\n-21BDA8 Created OS            00 (0) 'MS-DOS'\n-21BDA9 Extract Zip Spec      14 (20) '2.0'\n-21BDAA Extract OS            00 (0) 'MS-DOS'\n-21BDAB General Purpose Flag  0808 (2056)\n+21DC48 CENTRAL HEADER #439   02014B50 (33639248)\n+21DC4C Created Zip Spec      14 (20) '2.0'\n+21DC4D Created OS            00 (0) 'MS-DOS'\n+21DC4E Extract Zip Spec      14 (20) '2.0'\n+21DC4F Extract OS            00 (0) 'MS-DOS'\n+21DC50 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21BDAD Compression Method    0008 (8) 'Deflated'\n-21BDAF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21BDB3 CRC                   00000000 (0)\n-21BDB7 Compressed Size       00000002 (2)\n-21BDBB Uncompressed Size     00000000 (0)\n-21BDBF Filename Length       0028 (40)\n-21BDC1 Extra Length          0000 (0)\n-21BDC3 Comment Length        0000 (0)\n-21BDC5 Disk Start            0000 (0)\n-21BDC7 Int File Attributes   0000 (0)\n+21DC52 Compression Method    0008 (8) 'Deflated'\n+21DC54 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21DC58 CRC                   00000000 (0)\n+21DC5C Compressed Size       00000002 (2)\n+21DC60 Uncompressed Size     00000000 (0)\n+21DC64 Filename Length       0025 (37)\n+21DC66 Extra Length          0000 (0)\n+21DC68 Comment Length        0000 (0)\n+21DC6A Disk Start            0000 (0)\n+21DC6C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21BDC9 Ext File Attributes   00000000 (0)\n-21BDCD Local Header Offset   00056B9E (355230)\n-21BDD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21DC6E Ext File Attributes   00000000 (0)\n+21DC72 Local Header Offset   0007CD11 (511249)\n+21DC76 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21BDD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21DC76: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21BDF9 CENTRAL HEADER #440   02014B50 (33639248)\n-21BDFD Created Zip Spec      14 (20) '2.0'\n-21BDFE Created OS            00 (0) 'MS-DOS'\n-21BDFF Extract Zip Spec      14 (20) '2.0'\n-21BE00 Extract OS            00 (0) 'MS-DOS'\n-21BE01 General Purpose Flag  0808 (2056)\n+21DC9B CENTRAL HEADER #440   02014B50 (33639248)\n+21DC9F Created Zip Spec      14 (20) '2.0'\n+21DCA0 Created OS            00 (0) 'MS-DOS'\n+21DCA1 Extract Zip Spec      14 (20) '2.0'\n+21DCA2 Extract OS            00 (0) 'MS-DOS'\n+21DCA3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21BE03 Compression Method    0008 (8) 'Deflated'\n-21BE05 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21BE09 CRC                   4CF04636 (1290815030)\n-21BE0D Compressed Size       00000C34 (3124)\n-21BE11 Uncompressed Size     00002D78 (11640)\n-21BE15 Filename Length       0036 (54)\n-21BE17 Extra Length          0000 (0)\n-21BE19 Comment Length        0000 (0)\n-21BE1B Disk Start            0000 (0)\n-21BE1D Int File Attributes   0000 (0)\n+21DCA5 Compression Method    0008 (8) 'Deflated'\n+21DCA7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21DCAB CRC                   FD6565BB (4251280827)\n+21DCAF Compressed Size       0000044E (1102)\n+21DCB3 Uncompressed Size     00001876 (6262)\n+21DCB7 Filename Length       0035 (53)\n+21DCB9 Extra Length          0000 (0)\n+21DCBB Comment Length        0000 (0)\n+21DCBD Disk Start            0000 (0)\n+21DCBF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21BE1F Ext File Attributes   00000000 (0)\n-21BE23 Local Header Offset   00056BF6 (355318)\n-21BE27 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21DCC1 Ext File Attributes   00000000 (0)\n+21DCC5 Local Header Offset   0007CD66 (511334)\n+21DCC9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21BE27: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21DCC9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21BE5D CENTRAL HEADER #441   02014B50 (33639248)\n-21BE61 Created Zip Spec      14 (20) '2.0'\n-21BE62 Created OS            00 (0) 'MS-DOS'\n-21BE63 Extract Zip Spec      14 (20) '2.0'\n-21BE64 Extract OS            00 (0) 'MS-DOS'\n-21BE65 General Purpose Flag  0808 (2056)\n+21DCFE CENTRAL HEADER #441   02014B50 (33639248)\n+21DD02 Created Zip Spec      14 (20) '2.0'\n+21DD03 Created OS            00 (0) 'MS-DOS'\n+21DD04 Extract Zip Spec      14 (20) '2.0'\n+21DD05 Extract OS            00 (0) 'MS-DOS'\n+21DD06 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21BE67 Compression Method    0008 (8) 'Deflated'\n-21BE69 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21BE6D CRC                   FC35A4FC (4231374076)\n-21BE71 Compressed Size       0000029B (667)\n-21BE75 Uncompressed Size     0000051D (1309)\n-21BE79 Filename Length       003D (61)\n-21BE7B Extra Length          0000 (0)\n-21BE7D Comment Length        0000 (0)\n-21BE7F Disk Start            0000 (0)\n-21BE81 Int File Attributes   0000 (0)\n+21DD08 Compression Method    0008 (8) 'Deflated'\n+21DD0A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21DD0E CRC                   2D853131 (763703601)\n+21DD12 Compressed Size       000002C6 (710)\n+21DD16 Uncompressed Size     000006EF (1775)\n+21DD1A Filename Length       003C (60)\n+21DD1C Extra Length          0000 (0)\n+21DD1E Comment Length        0000 (0)\n+21DD20 Disk Start            0000 (0)\n+21DD22 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21BE83 Ext File Attributes   00000000 (0)\n-21BE87 Local Header Offset   0005788E (358542)\n-21BE8B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21DD24 Ext File Attributes   00000000 (0)\n+21DD28 Local Header Offset   0007D217 (512535)\n+21DD2C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21BE8B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21DD2C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21BEC8 CENTRAL HEADER #442   02014B50 (33639248)\n-21BECC Created Zip Spec      14 (20) '2.0'\n-21BECD Created OS            00 (0) 'MS-DOS'\n-21BECE Extract Zip Spec      14 (20) '2.0'\n-21BECF Extract OS            00 (0) 'MS-DOS'\n-21BED0 General Purpose Flag  0808 (2056)\n+21DD68 CENTRAL HEADER #442   02014B50 (33639248)\n+21DD6C Created Zip Spec      14 (20) '2.0'\n+21DD6D Created OS            00 (0) 'MS-DOS'\n+21DD6E Extract Zip Spec      14 (20) '2.0'\n+21DD6F Extract OS            00 (0) 'MS-DOS'\n+21DD70 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21BED2 Compression Method    0008 (8) 'Deflated'\n-21BED4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21BED8 CRC                   00000000 (0)\n-21BEDC Compressed Size       00000002 (2)\n-21BEE0 Uncompressed Size     00000000 (0)\n-21BEE4 Filename Length       002E (46)\n-21BEE6 Extra Length          0000 (0)\n-21BEE8 Comment Length        0000 (0)\n-21BEEA Disk Start            0000 (0)\n-21BEEC Int File Attributes   0000 (0)\n+21DD72 Compression Method    0008 (8) 'Deflated'\n+21DD74 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21DD78 CRC                   00000000 (0)\n+21DD7C Compressed Size       00000002 (2)\n+21DD80 Uncompressed Size     00000000 (0)\n+21DD84 Filename Length       0027 (39)\n+21DD86 Extra Length          0000 (0)\n+21DD88 Comment Length        0000 (0)\n+21DD8A Disk Start            0000 (0)\n+21DD8C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21BEEE Ext File Attributes   00000000 (0)\n-21BEF2 Local Header Offset   00057B94 (359316)\n-21BEF6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21DD8E Ext File Attributes   00000000 (0)\n+21DD92 Local Header Offset   0007D547 (513351)\n+21DD96 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21BEF6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21DD96: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21BF24 CENTRAL HEADER #443   02014B50 (33639248)\n-21BF28 Created Zip Spec      14 (20) '2.0'\n-21BF29 Created OS            00 (0) 'MS-DOS'\n-21BF2A Extract Zip Spec      14 (20) '2.0'\n-21BF2B Extract OS            00 (0) 'MS-DOS'\n-21BF2C General Purpose Flag  0808 (2056)\n+21DDBD CENTRAL HEADER #443   02014B50 (33639248)\n+21DDC1 Created Zip Spec      14 (20) '2.0'\n+21DDC2 Created OS            00 (0) 'MS-DOS'\n+21DDC3 Extract Zip Spec      14 (20) '2.0'\n+21DDC4 Extract OS            00 (0) 'MS-DOS'\n+21DDC5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21BF2E Compression Method    0008 (8) 'Deflated'\n-21BF30 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21BF34 CRC                   20217A79 (539064953)\n-21BF38 Compressed Size       0000027E (638)\n-21BF3C Uncompressed Size     00000528 (1320)\n-21BF40 Filename Length       0036 (54)\n-21BF42 Extra Length          0000 (0)\n-21BF44 Comment Length        0000 (0)\n-21BF46 Disk Start            0000 (0)\n-21BF48 Int File Attributes   0000 (0)\n+21DDC7 Compression Method    0008 (8) 'Deflated'\n+21DDC9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21DDCD CRC                   01B8CE5D (28888669)\n+21DDD1 Compressed Size       000003B8 (952)\n+21DDD5 Uncompressed Size     000013B5 (5045)\n+21DDD9 Filename Length       003A (58)\n+21DDDB Extra Length          0000 (0)\n+21DDDD Comment Length        0000 (0)\n+21DDDF Disk Start            0000 (0)\n+21DDE1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21BF4A Ext File Attributes   00000000 (0)\n-21BF4E Local Header Offset   00057BF2 (359410)\n-21BF52 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21DDE3 Ext File Attributes   00000000 (0)\n+21DDE7 Local Header Offset   0007D59E (513438)\n+21DDEB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21BF52: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21DDEB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21BF88 CENTRAL HEADER #444   02014B50 (33639248)\n-21BF8C Created Zip Spec      14 (20) '2.0'\n-21BF8D Created OS            00 (0) 'MS-DOS'\n-21BF8E Extract Zip Spec      14 (20) '2.0'\n-21BF8F Extract OS            00 (0) 'MS-DOS'\n-21BF90 General Purpose Flag  0808 (2056)\n+21DE25 CENTRAL HEADER #444   02014B50 (33639248)\n+21DE29 Created Zip Spec      14 (20) '2.0'\n+21DE2A Created OS            00 (0) 'MS-DOS'\n+21DE2B Extract Zip Spec      14 (20) '2.0'\n+21DE2C Extract OS            00 (0) 'MS-DOS'\n+21DE2D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21BF92 Compression Method    0008 (8) 'Deflated'\n-21BF94 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21BF98 CRC                   5D27A74D (1562879821)\n-21BF9C Compressed Size       00000426 (1062)\n-21BFA0 Uncompressed Size     00000ADF (2783)\n-21BFA4 Filename Length       0040 (64)\n-21BFA6 Extra Length          0000 (0)\n-21BFA8 Comment Length        0000 (0)\n-21BFAA Disk Start            0000 (0)\n-21BFAC Int File Attributes   0000 (0)\n+21DE2F Compression Method    0008 (8) 'Deflated'\n+21DE31 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21DE35 CRC                   00000000 (0)\n+21DE39 Compressed Size       00000002 (2)\n+21DE3D Uncompressed Size     00000000 (0)\n+21DE41 Filename Length       001F (31)\n+21DE43 Extra Length          0000 (0)\n+21DE45 Comment Length        0000 (0)\n+21DE47 Disk Start            0000 (0)\n+21DE49 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21BFAE Ext File Attributes   00000000 (0)\n-21BFB2 Local Header Offset   00057ED4 (360148)\n-21BFB6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21DE4B Ext File Attributes   00000000 (0)\n+21DE4F Local Header Offset   0007D9BE (514494)\n+21DE53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21BFB6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21DE53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21BFF6 CENTRAL HEADER #445   02014B50 (33639248)\n-21BFFA Created Zip Spec      14 (20) '2.0'\n-21BFFB Created OS            00 (0) 'MS-DOS'\n-21BFFC Extract Zip Spec      14 (20) '2.0'\n-21BFFD Extract OS            00 (0) 'MS-DOS'\n-21BFFE General Purpose Flag  0808 (2056)\n+21DE72 CENTRAL HEADER #445   02014B50 (33639248)\n+21DE76 Created Zip Spec      14 (20) '2.0'\n+21DE77 Created OS            00 (0) 'MS-DOS'\n+21DE78 Extract Zip Spec      14 (20) '2.0'\n+21DE79 Extract OS            00 (0) 'MS-DOS'\n+21DE7A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C000 Compression Method    0008 (8) 'Deflated'\n-21C002 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C006 CRC                   6DBA7C3B (1840938043)\n-21C00A Compressed Size       00000301 (769)\n-21C00E Uncompressed Size     00000611 (1553)\n-21C012 Filename Length       0040 (64)\n-21C014 Extra Length          0000 (0)\n-21C016 Comment Length        0000 (0)\n-21C018 Disk Start            0000 (0)\n-21C01A Int File Attributes   0000 (0)\n+21DE7C Compression Method    0008 (8) 'Deflated'\n+21DE7E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21DE82 CRC                   EE49CD50 (3997814096)\n+21DE86 Compressed Size       000002D6 (726)\n+21DE8A Uncompressed Size     0000075D (1885)\n+21DE8E Filename Length       002A (42)\n+21DE90 Extra Length          0000 (0)\n+21DE92 Comment Length        0000 (0)\n+21DE94 Disk Start            0000 (0)\n+21DE96 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C01C Ext File Attributes   00000000 (0)\n-21C020 Local Header Offset   00058368 (361320)\n-21C024 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21DE98 Ext File Attributes   00000000 (0)\n+21DE9C Local Header Offset   0007DA0D (514573)\n+21DEA0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C024: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21DEA0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C064 CENTRAL HEADER #446   02014B50 (33639248)\n-21C068 Created Zip Spec      14 (20) '2.0'\n-21C069 Created OS            00 (0) 'MS-DOS'\n-21C06A Extract Zip Spec      14 (20) '2.0'\n-21C06B Extract OS            00 (0) 'MS-DOS'\n-21C06C General Purpose Flag  0808 (2056)\n+21DECA CENTRAL HEADER #446   02014B50 (33639248)\n+21DECE Created Zip Spec      14 (20) '2.0'\n+21DECF Created OS            00 (0) 'MS-DOS'\n+21DED0 Extract Zip Spec      14 (20) '2.0'\n+21DED1 Extract OS            00 (0) 'MS-DOS'\n+21DED2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C06E Compression Method    0008 (8) 'Deflated'\n-21C070 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C074 CRC                   00000000 (0)\n-21C078 Compressed Size       00000002 (2)\n-21C07C Uncompressed Size     00000000 (0)\n-21C080 Filename Length       0025 (37)\n-21C082 Extra Length          0000 (0)\n-21C084 Comment Length        0000 (0)\n-21C086 Disk Start            0000 (0)\n-21C088 Int File Attributes   0000 (0)\n+21DED4 Compression Method    0008 (8) 'Deflated'\n+21DED6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21DEDA CRC                   4C723E93 (1282555539)\n+21DEDE Compressed Size       0000023F (575)\n+21DEE2 Uncompressed Size     00000432 (1074)\n+21DEE6 Filename Length       0031 (49)\n+21DEE8 Extra Length          0000 (0)\n+21DEEA Comment Length        0000 (0)\n+21DEEC Disk Start            0000 (0)\n+21DEEE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C08A Ext File Attributes   00000000 (0)\n-21C08E Local Header Offset   000586D7 (362199)\n-21C092 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21DEF0 Ext File Attributes   00000000 (0)\n+21DEF4 Local Header Offset   0007DD3B (515387)\n+21DEF8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C092: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21DEF8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C0B7 CENTRAL HEADER #447   02014B50 (33639248)\n-21C0BB Created Zip Spec      14 (20) '2.0'\n-21C0BC Created OS            00 (0) 'MS-DOS'\n-21C0BD Extract Zip Spec      14 (20) '2.0'\n-21C0BE Extract OS            00 (0) 'MS-DOS'\n-21C0BF General Purpose Flag  0808 (2056)\n+21DF29 CENTRAL HEADER #447   02014B50 (33639248)\n+21DF2D Created Zip Spec      14 (20) '2.0'\n+21DF2E Created OS            00 (0) 'MS-DOS'\n+21DF2F Extract Zip Spec      14 (20) '2.0'\n+21DF30 Extract OS            00 (0) 'MS-DOS'\n+21DF31 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C0C1 Compression Method    0008 (8) 'Deflated'\n-21C0C3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C0C7 CRC                   92ECBDF0 (2464988656)\n-21C0CB Compressed Size       00000CD9 (3289)\n-21C0CF Uncompressed Size     00003237 (12855)\n-21C0D3 Filename Length       0040 (64)\n-21C0D5 Extra Length          0000 (0)\n-21C0D7 Comment Length        0000 (0)\n-21C0D9 Disk Start            0000 (0)\n-21C0DB Int File Attributes   0000 (0)\n+21DF33 Compression Method    0008 (8) 'Deflated'\n+21DF35 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21DF39 CRC                   00000000 (0)\n+21DF3D Compressed Size       00000002 (2)\n+21DF41 Uncompressed Size     00000000 (0)\n+21DF45 Filename Length       0027 (39)\n+21DF47 Extra Length          0000 (0)\n+21DF49 Comment Length        0000 (0)\n+21DF4B Disk Start            0000 (0)\n+21DF4D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C0DD Ext File Attributes   00000000 (0)\n-21C0E1 Local Header Offset   0005872C (362284)\n-21C0E5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21DF4F Ext File Attributes   00000000 (0)\n+21DF53 Local Header Offset   0007DFD9 (516057)\n+21DF57 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C0E5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21DF57: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C125 CENTRAL HEADER #448   02014B50 (33639248)\n-21C129 Created Zip Spec      14 (20) '2.0'\n-21C12A Created OS            00 (0) 'MS-DOS'\n-21C12B Extract Zip Spec      14 (20) '2.0'\n-21C12C Extract OS            00 (0) 'MS-DOS'\n-21C12D General Purpose Flag  0808 (2056)\n+21DF7E CENTRAL HEADER #448   02014B50 (33639248)\n+21DF82 Created Zip Spec      14 (20) '2.0'\n+21DF83 Created OS            00 (0) 'MS-DOS'\n+21DF84 Extract Zip Spec      14 (20) '2.0'\n+21DF85 Extract OS            00 (0) 'MS-DOS'\n+21DF86 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C12F Compression Method    0008 (8) 'Deflated'\n-21C131 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C135 CRC                   8CA55593 (2359645587)\n-21C139 Compressed Size       00000295 (661)\n-21C13D Uncompressed Size     00000546 (1350)\n-21C141 Filename Length       003A (58)\n-21C143 Extra Length          0000 (0)\n-21C145 Comment Length        0000 (0)\n-21C147 Disk Start            0000 (0)\n-21C149 Int File Attributes   0000 (0)\n+21DF88 Compression Method    0008 (8) 'Deflated'\n+21DF8A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21DF8E CRC                   CD3068DB (3442501851)\n+21DF92 Compressed Size       000003A9 (937)\n+21DF96 Uncompressed Size     000008A7 (2215)\n+21DF9A Filename Length       003D (61)\n+21DF9C Extra Length          0000 (0)\n+21DF9E Comment Length        0000 (0)\n+21DFA0 Disk Start            0000 (0)\n+21DFA2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C14B Ext File Attributes   00000000 (0)\n-21C14F Local Header Offset   00059473 (365683)\n-21C153 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21DFA4 Ext File Attributes   00000000 (0)\n+21DFA8 Local Header Offset   0007E030 (516144)\n+21DFAC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C153: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21DFAC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C18D CENTRAL HEADER #449   02014B50 (33639248)\n-21C191 Created Zip Spec      14 (20) '2.0'\n-21C192 Created OS            00 (0) 'MS-DOS'\n-21C193 Extract Zip Spec      14 (20) '2.0'\n-21C194 Extract OS            00 (0) 'MS-DOS'\n-21C195 General Purpose Flag  0808 (2056)\n+21DFE9 CENTRAL HEADER #449   02014B50 (33639248)\n+21DFED Created Zip Spec      14 (20) '2.0'\n+21DFEE Created OS            00 (0) 'MS-DOS'\n+21DFEF Extract Zip Spec      14 (20) '2.0'\n+21DFF0 Extract OS            00 (0) 'MS-DOS'\n+21DFF1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C197 Compression Method    0008 (8) 'Deflated'\n-21C199 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C19D CRC                   BDD5C58A (3184903562)\n-21C1A1 Compressed Size       00000301 (769)\n-21C1A5 Uncompressed Size     000006DC (1756)\n-21C1A9 Filename Length       0041 (65)\n-21C1AB Extra Length          0000 (0)\n-21C1AD Comment Length        0000 (0)\n-21C1AF Disk Start            0000 (0)\n-21C1B1 Int File Attributes   0000 (0)\n+21DFF3 Compression Method    0008 (8) 'Deflated'\n+21DFF5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21DFF9 CRC                   E601D6EE (3858880238)\n+21DFFD Compressed Size       00000326 (806)\n+21E001 Uncompressed Size     00000701 (1793)\n+21E005 Filename Length       003F (63)\n+21E007 Extra Length          0000 (0)\n+21E009 Comment Length        0000 (0)\n+21E00B Disk Start            0000 (0)\n+21E00D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C1B3 Ext File Attributes   00000000 (0)\n-21C1B7 Local Header Offset   00059770 (366448)\n-21C1BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E00F Ext File Attributes   00000000 (0)\n+21E013 Local Header Offset   0007E444 (517188)\n+21E017 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C1BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E017: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C1FC CENTRAL HEADER #450   02014B50 (33639248)\n-21C200 Created Zip Spec      14 (20) '2.0'\n-21C201 Created OS            00 (0) 'MS-DOS'\n-21C202 Extract Zip Spec      14 (20) '2.0'\n-21C203 Extract OS            00 (0) 'MS-DOS'\n-21C204 General Purpose Flag  0808 (2056)\n+21E056 CENTRAL HEADER #450   02014B50 (33639248)\n+21E05A Created Zip Spec      14 (20) '2.0'\n+21E05B Created OS            00 (0) 'MS-DOS'\n+21E05C Extract Zip Spec      14 (20) '2.0'\n+21E05D Extract OS            00 (0) 'MS-DOS'\n+21E05E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C206 Compression Method    0008 (8) 'Deflated'\n-21C208 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C20C CRC                   DBE638BA (3689298106)\n-21C210 Compressed Size       00000287 (647)\n-21C214 Uncompressed Size     00000518 (1304)\n-21C218 Filename Length       003A (58)\n-21C21A Extra Length          0000 (0)\n-21C21C Comment Length        0000 (0)\n-21C21E Disk Start            0000 (0)\n-21C220 Int File Attributes   0000 (0)\n+21E060 Compression Method    0008 (8) 'Deflated'\n+21E062 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E066 CRC                   577B6C79 (1467706489)\n+21E06A Compressed Size       00000331 (817)\n+21E06E Uncompressed Size     000007D4 (2004)\n+21E072 Filename Length       0037 (55)\n+21E074 Extra Length          0000 (0)\n+21E076 Comment Length        0000 (0)\n+21E078 Disk Start            0000 (0)\n+21E07A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C222 Ext File Attributes   00000000 (0)\n-21C226 Local Header Offset   00059AE0 (367328)\n-21C22A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E07C Ext File Attributes   00000000 (0)\n+21E080 Local Header Offset   0007E7D7 (518103)\n+21E084 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C22A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E084: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C264 CENTRAL HEADER #451   02014B50 (33639248)\n-21C268 Created Zip Spec      14 (20) '2.0'\n-21C269 Created OS            00 (0) 'MS-DOS'\n-21C26A Extract Zip Spec      14 (20) '2.0'\n-21C26B Extract OS            00 (0) 'MS-DOS'\n-21C26C General Purpose Flag  0808 (2056)\n+21E0BB CENTRAL HEADER #451   02014B50 (33639248)\n+21E0BF Created Zip Spec      14 (20) '2.0'\n+21E0C0 Created OS            00 (0) 'MS-DOS'\n+21E0C1 Extract Zip Spec      14 (20) '2.0'\n+21E0C2 Extract OS            00 (0) 'MS-DOS'\n+21E0C3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C26E Compression Method    0008 (8) 'Deflated'\n-21C270 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C274 CRC                   4263898A (1113819530)\n-21C278 Compressed Size       0000065D (1629)\n-21C27C Uncompressed Size     00001420 (5152)\n-21C280 Filename Length       0041 (65)\n-21C282 Extra Length          0000 (0)\n-21C284 Comment Length        0000 (0)\n-21C286 Disk Start            0000 (0)\n-21C288 Int File Attributes   0000 (0)\n+21E0C5 Compression Method    0008 (8) 'Deflated'\n+21E0C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E0CB CRC                   00000000 (0)\n+21E0CF Compressed Size       00000002 (2)\n+21E0D3 Uncompressed Size     00000000 (0)\n+21E0D7 Filename Length       001E (30)\n+21E0D9 Extra Length          0000 (0)\n+21E0DB Comment Length        0000 (0)\n+21E0DD Disk Start            0000 (0)\n+21E0DF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C28A Ext File Attributes   00000000 (0)\n-21C28E Local Header Offset   00059DCF (368079)\n-21C292 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E0E1 Ext File Attributes   00000000 (0)\n+21E0E5 Local Header Offset   0007EB6D (519021)\n+21E0E9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C292: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E0E9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C2D3 CENTRAL HEADER #452   02014B50 (33639248)\n-21C2D7 Created Zip Spec      14 (20) '2.0'\n-21C2D8 Created OS            00 (0) 'MS-DOS'\n-21C2D9 Extract Zip Spec      14 (20) '2.0'\n-21C2DA Extract OS            00 (0) 'MS-DOS'\n-21C2DB General Purpose Flag  0808 (2056)\n+21E107 CENTRAL HEADER #452   02014B50 (33639248)\n+21E10B Created Zip Spec      14 (20) '2.0'\n+21E10C Created OS            00 (0) 'MS-DOS'\n+21E10D Extract Zip Spec      14 (20) '2.0'\n+21E10E Extract OS            00 (0) 'MS-DOS'\n+21E10F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C2DD Compression Method    0008 (8) 'Deflated'\n-21C2DF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C2E3 CRC                   61647F39 (1633976121)\n-21C2E7 Compressed Size       000005E5 (1509)\n-21C2EB Uncompressed Size     0000187C (6268)\n-21C2EF Filename Length       0036 (54)\n-21C2F1 Extra Length          0000 (0)\n-21C2F3 Comment Length        0000 (0)\n-21C2F5 Disk Start            0000 (0)\n-21C2F7 Int File Attributes   0000 (0)\n+21E111 Compression Method    0008 (8) 'Deflated'\n+21E113 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E117 CRC                   BF5F9C1E (3210714142)\n+21E11B Compressed Size       00000287 (647)\n+21E11F Uncompressed Size     00000500 (1280)\n+21E123 Filename Length       002C (44)\n+21E125 Extra Length          0000 (0)\n+21E127 Comment Length        0000 (0)\n+21E129 Disk Start            0000 (0)\n+21E12B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C2F9 Ext File Attributes   00000000 (0)\n-21C2FD Local Header Offset   0005A49B (369819)\n-21C301 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E12D Ext File Attributes   00000000 (0)\n+21E131 Local Header Offset   0007EBBB (519099)\n+21E135 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C301: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E135: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C337 CENTRAL HEADER #453   02014B50 (33639248)\n-21C33B Created Zip Spec      14 (20) '2.0'\n-21C33C Created OS            00 (0) 'MS-DOS'\n-21C33D Extract Zip Spec      14 (20) '2.0'\n-21C33E Extract OS            00 (0) 'MS-DOS'\n-21C33F General Purpose Flag  0808 (2056)\n+21E161 CENTRAL HEADER #453   02014B50 (33639248)\n+21E165 Created Zip Spec      14 (20) '2.0'\n+21E166 Created OS            00 (0) 'MS-DOS'\n+21E167 Extract Zip Spec      14 (20) '2.0'\n+21E168 Extract OS            00 (0) 'MS-DOS'\n+21E169 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C341 Compression Method    0008 (8) 'Deflated'\n-21C343 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C347 CRC                   48FD2377 (1224549239)\n-21C34B Compressed Size       000002AA (682)\n-21C34F Uncompressed Size     00000559 (1369)\n-21C353 Filename Length       0039 (57)\n-21C355 Extra Length          0000 (0)\n-21C357 Comment Length        0000 (0)\n-21C359 Disk Start            0000 (0)\n-21C35B Int File Attributes   0000 (0)\n+21E16B Compression Method    0008 (8) 'Deflated'\n+21E16D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E171 CRC                   00000000 (0)\n+21E175 Compressed Size       00000002 (2)\n+21E179 Uncompressed Size     00000000 (0)\n+21E17D Filename Length       0026 (38)\n+21E17F Extra Length          0000 (0)\n+21E181 Comment Length        0000 (0)\n+21E183 Disk Start            0000 (0)\n+21E185 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C35D Ext File Attributes   00000000 (0)\n-21C361 Local Header Offset   0005AAE4 (371428)\n-21C365 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E187 Ext File Attributes   00000000 (0)\n+21E18B Local Header Offset   0007EE9C (519836)\n+21E18F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C365: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E18F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C39E CENTRAL HEADER #454   02014B50 (33639248)\n-21C3A2 Created Zip Spec      14 (20) '2.0'\n-21C3A3 Created OS            00 (0) 'MS-DOS'\n-21C3A4 Extract Zip Spec      14 (20) '2.0'\n-21C3A5 Extract OS            00 (0) 'MS-DOS'\n-21C3A6 General Purpose Flag  0808 (2056)\n+21E1B5 CENTRAL HEADER #454   02014B50 (33639248)\n+21E1B9 Created Zip Spec      14 (20) '2.0'\n+21E1BA Created OS            00 (0) 'MS-DOS'\n+21E1BB Extract Zip Spec      14 (20) '2.0'\n+21E1BC Extract OS            00 (0) 'MS-DOS'\n+21E1BD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C3A8 Compression Method    0008 (8) 'Deflated'\n-21C3AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C3AE CRC                   DAA0DBC8 (3667975112)\n-21C3B2 Compressed Size       000007C4 (1988)\n-21C3B6 Uncompressed Size     00001AD7 (6871)\n-21C3BA Filename Length       0040 (64)\n-21C3BC Extra Length          0000 (0)\n-21C3BE Comment Length        0000 (0)\n-21C3C0 Disk Start            0000 (0)\n-21C3C2 Int File Attributes   0000 (0)\n+21E1BF Compression Method    0008 (8) 'Deflated'\n+21E1C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E1C5 CRC                   6A2AB119 (1781182745)\n+21E1C9 Compressed Size       00000354 (852)\n+21E1CD Uncompressed Size     00000908 (2312)\n+21E1D1 Filename Length       003A (58)\n+21E1D3 Extra Length          0000 (0)\n+21E1D5 Comment Length        0000 (0)\n+21E1D7 Disk Start            0000 (0)\n+21E1D9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C3C4 Ext File Attributes   00000000 (0)\n-21C3C8 Local Header Offset   0005ADF5 (372213)\n-21C3CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E1DB Ext File Attributes   00000000 (0)\n+21E1DF Local Header Offset   0007EEF2 (519922)\n+21E1E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C3CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E1E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C40C CENTRAL HEADER #455   02014B50 (33639248)\n-21C410 Created Zip Spec      14 (20) '2.0'\n-21C411 Created OS            00 (0) 'MS-DOS'\n-21C412 Extract Zip Spec      14 (20) '2.0'\n-21C413 Extract OS            00 (0) 'MS-DOS'\n-21C414 General Purpose Flag  0808 (2056)\n+21E21D CENTRAL HEADER #455   02014B50 (33639248)\n+21E221 Created Zip Spec      14 (20) '2.0'\n+21E222 Created OS            00 (0) 'MS-DOS'\n+21E223 Extract Zip Spec      14 (20) '2.0'\n+21E224 Extract OS            00 (0) 'MS-DOS'\n+21E225 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C416 Compression Method    0008 (8) 'Deflated'\n-21C418 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C41C CRC                   887DA686 (2289936006)\n-21C420 Compressed Size       000002A9 (681)\n-21C424 Uncompressed Size     00000559 (1369)\n-21C428 Filename Length       0039 (57)\n-21C42A Extra Length          0000 (0)\n-21C42C Comment Length        0000 (0)\n-21C42E Disk Start            0000 (0)\n-21C430 Int File Attributes   0000 (0)\n+21E227 Compression Method    0008 (8) 'Deflated'\n+21E229 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E22D CRC                   00000000 (0)\n+21E231 Compressed Size       00000002 (2)\n+21E235 Uncompressed Size     00000000 (0)\n+21E239 Filename Length       0024 (36)\n+21E23B Extra Length          0000 (0)\n+21E23D Comment Length        0000 (0)\n+21E23F Disk Start            0000 (0)\n+21E241 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C432 Ext File Attributes   00000000 (0)\n-21C436 Local Header Offset   0005B627 (374311)\n-21C43A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E243 Ext File Attributes   00000000 (0)\n+21E247 Local Header Offset   0007F2AE (520878)\n+21E24B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C43A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E24B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C473 CENTRAL HEADER #456   02014B50 (33639248)\n-21C477 Created Zip Spec      14 (20) '2.0'\n-21C478 Created OS            00 (0) 'MS-DOS'\n-21C479 Extract Zip Spec      14 (20) '2.0'\n-21C47A Extract OS            00 (0) 'MS-DOS'\n-21C47B General Purpose Flag  0808 (2056)\n+21E26F CENTRAL HEADER #456   02014B50 (33639248)\n+21E273 Created Zip Spec      14 (20) '2.0'\n+21E274 Created OS            00 (0) 'MS-DOS'\n+21E275 Extract Zip Spec      14 (20) '2.0'\n+21E276 Extract OS            00 (0) 'MS-DOS'\n+21E277 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C47D Compression Method    0008 (8) 'Deflated'\n-21C47F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C483 CRC                   A7345C3C (2805226556)\n-21C487 Compressed Size       000004AB (1195)\n-21C48B Uncompressed Size     00000B51 (2897)\n-21C48F Filename Length       0040 (64)\n-21C491 Extra Length          0000 (0)\n-21C493 Comment Length        0000 (0)\n-21C495 Disk Start            0000 (0)\n-21C497 Int File Attributes   0000 (0)\n+21E279 Compression Method    0008 (8) 'Deflated'\n+21E27B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E27F CRC                   19AC3747 (430716743)\n+21E283 Compressed Size       00000362 (866)\n+21E287 Uncompressed Size     0000076E (1902)\n+21E28B Filename Length       0039 (57)\n+21E28D Extra Length          0000 (0)\n+21E28F Comment Length        0000 (0)\n+21E291 Disk Start            0000 (0)\n+21E293 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C499 Ext File Attributes   00000000 (0)\n-21C49D Local Header Offset   0005B937 (375095)\n-21C4A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E295 Ext File Attributes   00000000 (0)\n+21E299 Local Header Offset   0007F302 (520962)\n+21E29D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C4A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E29D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C4E1 CENTRAL HEADER #457   02014B50 (33639248)\n-21C4E5 Created Zip Spec      14 (20) '2.0'\n-21C4E6 Created OS            00 (0) 'MS-DOS'\n-21C4E7 Extract Zip Spec      14 (20) '2.0'\n-21C4E8 Extract OS            00 (0) 'MS-DOS'\n-21C4E9 General Purpose Flag  0808 (2056)\n+21E2D6 CENTRAL HEADER #457   02014B50 (33639248)\n+21E2DA Created Zip Spec      14 (20) '2.0'\n+21E2DB Created OS            00 (0) 'MS-DOS'\n+21E2DC Extract Zip Spec      14 (20) '2.0'\n+21E2DD Extract OS            00 (0) 'MS-DOS'\n+21E2DE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C4EB Compression Method    0008 (8) 'Deflated'\n-21C4ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C4F1 CRC                   C412C0D3 (3289563347)\n-21C4F5 Compressed Size       000002A9 (681)\n-21C4F9 Uncompressed Size     00000559 (1369)\n-21C4FD Filename Length       0039 (57)\n-21C4FF Extra Length          0000 (0)\n-21C501 Comment Length        0000 (0)\n-21C503 Disk Start            0000 (0)\n-21C505 Int File Attributes   0000 (0)\n+21E2E0 Compression Method    0008 (8) 'Deflated'\n+21E2E2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E2E6 CRC                   DFEE0135 (3756917045)\n+21E2EA Compressed Size       00000330 (816)\n+21E2EE Uncompressed Size     0000098D (2445)\n+21E2F2 Filename Length       0037 (55)\n+21E2F4 Extra Length          0000 (0)\n+21E2F6 Comment Length        0000 (0)\n+21E2F8 Disk Start            0000 (0)\n+21E2FA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C507 Ext File Attributes   00000000 (0)\n-21C50B Local Header Offset   0005BE50 (376400)\n-21C50F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E2FC Ext File Attributes   00000000 (0)\n+21E300 Local Header Offset   0007F6CB (521931)\n+21E304 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C50F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E304: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C548 CENTRAL HEADER #458   02014B50 (33639248)\n-21C54C Created Zip Spec      14 (20) '2.0'\n-21C54D Created OS            00 (0) 'MS-DOS'\n-21C54E Extract Zip Spec      14 (20) '2.0'\n-21C54F Extract OS            00 (0) 'MS-DOS'\n-21C550 General Purpose Flag  0808 (2056)\n+21E33B CENTRAL HEADER #458   02014B50 (33639248)\n+21E33F Created Zip Spec      14 (20) '2.0'\n+21E340 Created OS            00 (0) 'MS-DOS'\n+21E341 Extract Zip Spec      14 (20) '2.0'\n+21E342 Extract OS            00 (0) 'MS-DOS'\n+21E343 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C552 Compression Method    0008 (8) 'Deflated'\n-21C554 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C558 CRC                   7A3E3AF6 (2050898678)\n-21C55C Compressed Size       00000730 (1840)\n-21C560 Uncompressed Size     0000158D (5517)\n-21C564 Filename Length       0040 (64)\n-21C566 Extra Length          0000 (0)\n-21C568 Comment Length        0000 (0)\n-21C56A Disk Start            0000 (0)\n-21C56C Int File Attributes   0000 (0)\n+21E345 Compression Method    0008 (8) 'Deflated'\n+21E347 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E34B CRC                   E4E72DDD (3840355805)\n+21E34F Compressed Size       0000072D (1837)\n+21E353 Uncompressed Size     00001BBE (7102)\n+21E357 Filename Length       003C (60)\n+21E359 Extra Length          0000 (0)\n+21E35B Comment Length        0000 (0)\n+21E35D Disk Start            0000 (0)\n+21E35F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C56E Ext File Attributes   00000000 (0)\n-21C572 Local Header Offset   0005C160 (377184)\n-21C576 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E361 Ext File Attributes   00000000 (0)\n+21E365 Local Header Offset   0007FA60 (522848)\n+21E369 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C576: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E369: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C5B6 CENTRAL HEADER #459   02014B50 (33639248)\n-21C5BA Created Zip Spec      14 (20) '2.0'\n-21C5BB Created OS            00 (0) 'MS-DOS'\n-21C5BC Extract Zip Spec      14 (20) '2.0'\n-21C5BD Extract OS            00 (0) 'MS-DOS'\n-21C5BE General Purpose Flag  0808 (2056)\n+21E3A5 CENTRAL HEADER #459   02014B50 (33639248)\n+21E3A9 Created Zip Spec      14 (20) '2.0'\n+21E3AA Created OS            00 (0) 'MS-DOS'\n+21E3AB Extract Zip Spec      14 (20) '2.0'\n+21E3AC Extract OS            00 (0) 'MS-DOS'\n+21E3AD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C5C0 Compression Method    0008 (8) 'Deflated'\n-21C5C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C5C6 CRC                   68A40EAC (1755582124)\n-21C5CA Compressed Size       000002AA (682)\n-21C5CE Uncompressed Size     00000559 (1369)\n-21C5D2 Filename Length       0039 (57)\n-21C5D4 Extra Length          0000 (0)\n-21C5D6 Comment Length        0000 (0)\n-21C5D8 Disk Start            0000 (0)\n-21C5DA Int File Attributes   0000 (0)\n+21E3AF Compression Method    0008 (8) 'Deflated'\n+21E3B1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E3B5 CRC                   5E80C56B (1585497451)\n+21E3B9 Compressed Size       0000061E (1566)\n+21E3BD Uncompressed Size     000015FF (5631)\n+21E3C1 Filename Length       003F (63)\n+21E3C3 Extra Length          0000 (0)\n+21E3C5 Comment Length        0000 (0)\n+21E3C7 Disk Start            0000 (0)\n+21E3C9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C5DC Ext File Attributes   00000000 (0)\n-21C5E0 Local Header Offset   0005C8FE (379134)\n-21C5E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E3CB Ext File Attributes   00000000 (0)\n+21E3CF Local Header Offset   000801F7 (524791)\n+21E3D3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C5E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E3D3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C61D CENTRAL HEADER #460   02014B50 (33639248)\n-21C621 Created Zip Spec      14 (20) '2.0'\n-21C622 Created OS            00 (0) 'MS-DOS'\n-21C623 Extract Zip Spec      14 (20) '2.0'\n-21C624 Extract OS            00 (0) 'MS-DOS'\n-21C625 General Purpose Flag  0808 (2056)\n+21E412 CENTRAL HEADER #460   02014B50 (33639248)\n+21E416 Created Zip Spec      14 (20) '2.0'\n+21E417 Created OS            00 (0) 'MS-DOS'\n+21E418 Extract Zip Spec      14 (20) '2.0'\n+21E419 Extract OS            00 (0) 'MS-DOS'\n+21E41A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C627 Compression Method    0008 (8) 'Deflated'\n-21C629 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C62D CRC                   DEA6E3F0 (3735479280)\n-21C631 Compressed Size       000003F1 (1009)\n-21C635 Uncompressed Size     00000942 (2370)\n-21C639 Filename Length       0040 (64)\n-21C63B Extra Length          0000 (0)\n-21C63D Comment Length        0000 (0)\n-21C63F Disk Start            0000 (0)\n-21C641 Int File Attributes   0000 (0)\n+21E41C Compression Method    0008 (8) 'Deflated'\n+21E41E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E422 CRC                   D1666DFC (3513150972)\n+21E426 Compressed Size       000002F6 (758)\n+21E42A Uncompressed Size     0000068D (1677)\n+21E42E Filename Length       0043 (67)\n+21E430 Extra Length          0000 (0)\n+21E432 Comment Length        0000 (0)\n+21E434 Disk Start            0000 (0)\n+21E436 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C643 Ext File Attributes   00000000 (0)\n-21C647 Local Header Offset   0005CC0F (379919)\n-21C64B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E438 Ext File Attributes   00000000 (0)\n+21E43C Local Header Offset   00080882 (526466)\n+21E440 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C64B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E440: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C68B CENTRAL HEADER #461   02014B50 (33639248)\n-21C68F Created Zip Spec      14 (20) '2.0'\n-21C690 Created OS            00 (0) 'MS-DOS'\n-21C691 Extract Zip Spec      14 (20) '2.0'\n-21C692 Extract OS            00 (0) 'MS-DOS'\n-21C693 General Purpose Flag  0808 (2056)\n+21E483 CENTRAL HEADER #461   02014B50 (33639248)\n+21E487 Created Zip Spec      14 (20) '2.0'\n+21E488 Created OS            00 (0) 'MS-DOS'\n+21E489 Extract Zip Spec      14 (20) '2.0'\n+21E48A Extract OS            00 (0) 'MS-DOS'\n+21E48B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C695 Compression Method    0008 (8) 'Deflated'\n-21C697 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C69B CRC                   1E103695 (504379029)\n-21C69F Compressed Size       000002A9 (681)\n-21C6A3 Uncompressed Size     00000555 (1365)\n-21C6A7 Filename Length       0038 (56)\n-21C6A9 Extra Length          0000 (0)\n-21C6AB Comment Length        0000 (0)\n-21C6AD Disk Start            0000 (0)\n-21C6AF Int File Attributes   0000 (0)\n+21E48D Compression Method    0008 (8) 'Deflated'\n+21E48F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E493 CRC                   00000000 (0)\n+21E497 Compressed Size       00000002 (2)\n+21E49B Uncompressed Size     00000000 (0)\n+21E49F Filename Length       0023 (35)\n+21E4A1 Extra Length          0000 (0)\n+21E4A3 Comment Length        0000 (0)\n+21E4A5 Disk Start            0000 (0)\n+21E4A7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C6B1 Ext File Attributes   00000000 (0)\n-21C6B5 Local Header Offset   0005D06E (381038)\n-21C6B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E4A9 Ext File Attributes   00000000 (0)\n+21E4AD Local Header Offset   00080BE9 (527337)\n+21E4B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C6B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E4B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C6F1 CENTRAL HEADER #462   02014B50 (33639248)\n-21C6F5 Created Zip Spec      14 (20) '2.0'\n-21C6F6 Created OS            00 (0) 'MS-DOS'\n-21C6F7 Extract Zip Spec      14 (20) '2.0'\n-21C6F8 Extract OS            00 (0) 'MS-DOS'\n-21C6F9 General Purpose Flag  0808 (2056)\n+21E4D4 CENTRAL HEADER #462   02014B50 (33639248)\n+21E4D8 Created Zip Spec      14 (20) '2.0'\n+21E4D9 Created OS            00 (0) 'MS-DOS'\n+21E4DA Extract Zip Spec      14 (20) '2.0'\n+21E4DB Extract OS            00 (0) 'MS-DOS'\n+21E4DC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C6FB Compression Method    0008 (8) 'Deflated'\n-21C6FD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C701 CRC                   27AC8562 (665617762)\n-21C705 Compressed Size       00000730 (1840)\n-21C709 Uncompressed Size     000014CB (5323)\n-21C70D Filename Length       003F (63)\n-21C70F Extra Length          0000 (0)\n-21C711 Comment Length        0000 (0)\n-21C713 Disk Start            0000 (0)\n-21C715 Int File Attributes   0000 (0)\n+21E4DE Compression Method    0008 (8) 'Deflated'\n+21E4E0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E4E4 CRC                   25E239BD (635582909)\n+21E4E8 Compressed Size       000002B9 (697)\n+21E4EC Uncompressed Size     00000575 (1397)\n+21E4F0 Filename Length       0032 (50)\n+21E4F2 Extra Length          0000 (0)\n+21E4F4 Comment Length        0000 (0)\n+21E4F6 Disk Start            0000 (0)\n+21E4F8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C717 Ext File Attributes   00000000 (0)\n-21C71B Local Header Offset   0005D37D (381821)\n-21C71F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E4FA Ext File Attributes   00000000 (0)\n+21E4FE Local Header Offset   00080C3C (527420)\n+21E502 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C71F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E502: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C75E CENTRAL HEADER #463   02014B50 (33639248)\n-21C762 Created Zip Spec      14 (20) '2.0'\n-21C763 Created OS            00 (0) 'MS-DOS'\n-21C764 Extract Zip Spec      14 (20) '2.0'\n-21C765 Extract OS            00 (0) 'MS-DOS'\n-21C766 General Purpose Flag  0808 (2056)\n+21E534 CENTRAL HEADER #463   02014B50 (33639248)\n+21E538 Created Zip Spec      14 (20) '2.0'\n+21E539 Created OS            00 (0) 'MS-DOS'\n+21E53A Extract Zip Spec      14 (20) '2.0'\n+21E53B Extract OS            00 (0) 'MS-DOS'\n+21E53C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C768 Compression Method    0008 (8) 'Deflated'\n-21C76A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C76E CRC                   D9486541 (3645400385)\n-21C772 Compressed Size       0000028E (654)\n-21C776 Uncompressed Size     0000050C (1292)\n-21C77A Filename Length       003A (58)\n-21C77C Extra Length          0000 (0)\n-21C77E Comment Length        0000 (0)\n-21C780 Disk Start            0000 (0)\n-21C782 Int File Attributes   0000 (0)\n+21E53E Compression Method    0008 (8) 'Deflated'\n+21E540 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E544 CRC                   6E8E196C (1854806380)\n+21E548 Compressed Size       000008FC (2300)\n+21E54C Uncompressed Size     00001B5F (7007)\n+21E550 Filename Length       003A (58)\n+21E552 Extra Length          0000 (0)\n+21E554 Comment Length        0000 (0)\n+21E556 Disk Start            0000 (0)\n+21E558 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C784 Ext File Attributes   00000000 (0)\n-21C788 Local Header Offset   0005DB1A (383770)\n-21C78C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E55A Ext File Attributes   00000000 (0)\n+21E55E Local Header Offset   00080F55 (528213)\n+21E562 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C78C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E562: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C7C6 CENTRAL HEADER #464   02014B50 (33639248)\n-21C7CA Created Zip Spec      14 (20) '2.0'\n-21C7CB Created OS            00 (0) 'MS-DOS'\n-21C7CC Extract Zip Spec      14 (20) '2.0'\n-21C7CD Extract OS            00 (0) 'MS-DOS'\n-21C7CE General Purpose Flag  0808 (2056)\n+21E59C CENTRAL HEADER #464   02014B50 (33639248)\n+21E5A0 Created Zip Spec      14 (20) '2.0'\n+21E5A1 Created OS            00 (0) 'MS-DOS'\n+21E5A2 Extract Zip Spec      14 (20) '2.0'\n+21E5A3 Extract OS            00 (0) 'MS-DOS'\n+21E5A4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C7D0 Compression Method    0008 (8) 'Deflated'\n-21C7D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C7D6 CRC                   011CB6AA (18658986)\n-21C7DA Compressed Size       000008AF (2223)\n-21C7DE Uncompressed Size     00001DE1 (7649)\n-21C7E2 Filename Length       0041 (65)\n-21C7E4 Extra Length          0000 (0)\n-21C7E6 Comment Length        0000 (0)\n-21C7E8 Disk Start            0000 (0)\n-21C7EA Int File Attributes   0000 (0)\n+21E5A6 Compression Method    0008 (8) 'Deflated'\n+21E5A8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E5AC CRC                   00000000 (0)\n+21E5B0 Compressed Size       00000002 (2)\n+21E5B4 Uncompressed Size     00000000 (0)\n+21E5B8 Filename Length       002E (46)\n+21E5BA Extra Length          0000 (0)\n+21E5BC Comment Length        0000 (0)\n+21E5BE Disk Start            0000 (0)\n+21E5C0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C7EC Ext File Attributes   00000000 (0)\n-21C7F0 Local Header Offset   0005DE10 (384528)\n-21C7F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E5C2 Ext File Attributes   00000000 (0)\n+21E5C6 Local Header Offset   000818B9 (530617)\n+21E5CA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C7F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E5CA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C835 CENTRAL HEADER #465   02014B50 (33639248)\n-21C839 Created Zip Spec      14 (20) '2.0'\n-21C83A Created OS            00 (0) 'MS-DOS'\n-21C83B Extract Zip Spec      14 (20) '2.0'\n-21C83C Extract OS            00 (0) 'MS-DOS'\n-21C83D General Purpose Flag  0808 (2056)\n+21E5F8 CENTRAL HEADER #465   02014B50 (33639248)\n+21E5FC Created Zip Spec      14 (20) '2.0'\n+21E5FD Created OS            00 (0) 'MS-DOS'\n+21E5FE Extract Zip Spec      14 (20) '2.0'\n+21E5FF Extract OS            00 (0) 'MS-DOS'\n+21E600 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C83F Compression Method    0008 (8) 'Deflated'\n-21C841 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C845 CRC                   6056B6FB (1616295675)\n-21C849 Compressed Size       00000269 (617)\n-21C84D Uncompressed Size     00000490 (1168)\n-21C851 Filename Length       0043 (67)\n-21C853 Extra Length          0000 (0)\n-21C855 Comment Length        0000 (0)\n-21C857 Disk Start            0000 (0)\n-21C859 Int File Attributes   0000 (0)\n+21E602 Compression Method    0008 (8) 'Deflated'\n+21E604 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E608 CRC                   4F941D99 (1335106969)\n+21E60C Compressed Size       0000030B (779)\n+21E610 Uncompressed Size     0000094D (2381)\n+21E614 Filename Length       004D (77)\n+21E616 Extra Length          0000 (0)\n+21E618 Comment Length        0000 (0)\n+21E61A Disk Start            0000 (0)\n+21E61C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C85B Ext File Attributes   00000000 (0)\n-21C85F Local Header Offset   0005E72E (386862)\n-21C863 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E61E Ext File Attributes   00000000 (0)\n+21E622 Local Header Offset   00081917 (530711)\n+21E626 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C863: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E626: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C8A6 CENTRAL HEADER #466   02014B50 (33639248)\n-21C8AA Created Zip Spec      14 (20) '2.0'\n-21C8AB Created OS            00 (0) 'MS-DOS'\n-21C8AC Extract Zip Spec      14 (20) '2.0'\n-21C8AD Extract OS            00 (0) 'MS-DOS'\n-21C8AE General Purpose Flag  0808 (2056)\n+21E673 CENTRAL HEADER #466   02014B50 (33639248)\n+21E677 Created Zip Spec      14 (20) '2.0'\n+21E678 Created OS            00 (0) 'MS-DOS'\n+21E679 Extract Zip Spec      14 (20) '2.0'\n+21E67A Extract OS            00 (0) 'MS-DOS'\n+21E67B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C8B0 Compression Method    0008 (8) 'Deflated'\n-21C8B2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C8B6 CRC                   00000000 (0)\n-21C8BA Compressed Size       00000002 (2)\n-21C8BE Uncompressed Size     00000000 (0)\n-21C8C2 Filename Length       002F (47)\n-21C8C4 Extra Length          0000 (0)\n-21C8C6 Comment Length        0000 (0)\n-21C8C8 Disk Start            0000 (0)\n-21C8CA Int File Attributes   0000 (0)\n+21E67D Compression Method    0008 (8) 'Deflated'\n+21E67F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E683 CRC                   00000000 (0)\n+21E687 Compressed Size       00000002 (2)\n+21E68B Uncompressed Size     00000000 (0)\n+21E68F Filename Length       0029 (41)\n+21E691 Extra Length          0000 (0)\n+21E693 Comment Length        0000 (0)\n+21E695 Disk Start            0000 (0)\n+21E697 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C8CC Ext File Attributes   00000000 (0)\n-21C8D0 Local Header Offset   0005EA08 (387592)\n-21C8D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E699 Ext File Attributes   00000000 (0)\n+21E69D Local Header Offset   00081C9D (531613)\n+21E6A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C8D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E6A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C903 CENTRAL HEADER #467   02014B50 (33639248)\n-21C907 Created Zip Spec      14 (20) '2.0'\n-21C908 Created OS            00 (0) 'MS-DOS'\n-21C909 Extract Zip Spec      14 (20) '2.0'\n-21C90A Extract OS            00 (0) 'MS-DOS'\n-21C90B General Purpose Flag  0808 (2056)\n+21E6CA CENTRAL HEADER #467   02014B50 (33639248)\n+21E6CE Created Zip Spec      14 (20) '2.0'\n+21E6CF Created OS            00 (0) 'MS-DOS'\n+21E6D0 Extract Zip Spec      14 (20) '2.0'\n+21E6D1 Extract OS            00 (0) 'MS-DOS'\n+21E6D2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C90D Compression Method    0008 (8) 'Deflated'\n-21C90F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C913 CRC                   3DFE1DA9 (1040063913)\n-21C917 Compressed Size       00000261 (609)\n-21C91B Uncompressed Size     00000463 (1123)\n-21C91F Filename Length       004E (78)\n-21C921 Extra Length          0000 (0)\n-21C923 Comment Length        0000 (0)\n-21C925 Disk Start            0000 (0)\n-21C927 Int File Attributes   0000 (0)\n+21E6D4 Compression Method    0008 (8) 'Deflated'\n+21E6D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E6DA CRC                   9F5D6B51 (2673699665)\n+21E6DE Compressed Size       00000297 (663)\n+21E6E2 Uncompressed Size     00000501 (1281)\n+21E6E6 Filename Length       0046 (70)\n+21E6E8 Extra Length          0000 (0)\n+21E6EA Comment Length        0000 (0)\n+21E6EC Disk Start            0000 (0)\n+21E6EE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C929 Ext File Attributes   00000000 (0)\n-21C92D Local Header Offset   0005EA67 (387687)\n-21C931 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E6F0 Ext File Attributes   00000000 (0)\n+21E6F4 Local Header Offset   00081CF6 (531702)\n+21E6F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C931: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E6F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C97F CENTRAL HEADER #468   02014B50 (33639248)\n-21C983 Created Zip Spec      14 (20) '2.0'\n-21C984 Created OS            00 (0) 'MS-DOS'\n-21C985 Extract Zip Spec      14 (20) '2.0'\n-21C986 Extract OS            00 (0) 'MS-DOS'\n-21C987 General Purpose Flag  0808 (2056)\n+21E73E CENTRAL HEADER #468   02014B50 (33639248)\n+21E742 Created Zip Spec      14 (20) '2.0'\n+21E743 Created OS            00 (0) 'MS-DOS'\n+21E744 Extract Zip Spec      14 (20) '2.0'\n+21E745 Extract OS            00 (0) 'MS-DOS'\n+21E746 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21C989 Compression Method    0008 (8) 'Deflated'\n-21C98B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21C98F CRC                   026F661D (40855069)\n-21C993 Compressed Size       000002FD (765)\n-21C997 Uncompressed Size     000006F0 (1776)\n-21C99B Filename Length       004B (75)\n-21C99D Extra Length          0000 (0)\n-21C99F Comment Length        0000 (0)\n-21C9A1 Disk Start            0000 (0)\n-21C9A3 Int File Attributes   0000 (0)\n+21E748 Compression Method    0008 (8) 'Deflated'\n+21E74A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E74E CRC                   00000000 (0)\n+21E752 Compressed Size       00000002 (2)\n+21E756 Uncompressed Size     00000000 (0)\n+21E75A Filename Length       002B (43)\n+21E75C Extra Length          0000 (0)\n+21E75E Comment Length        0000 (0)\n+21E760 Disk Start            0000 (0)\n+21E762 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21C9A5 Ext File Attributes   00000000 (0)\n-21C9A9 Local Header Offset   0005ED44 (388420)\n-21C9AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E764 Ext File Attributes   00000000 (0)\n+21E768 Local Header Offset   00082001 (532481)\n+21E76C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21C9AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E76C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21C9F8 CENTRAL HEADER #469   02014B50 (33639248)\n-21C9FC Created Zip Spec      14 (20) '2.0'\n-21C9FD Created OS            00 (0) 'MS-DOS'\n-21C9FE Extract Zip Spec      14 (20) '2.0'\n-21C9FF Extract OS            00 (0) 'MS-DOS'\n-21CA00 General Purpose Flag  0808 (2056)\n+21E797 CENTRAL HEADER #469   02014B50 (33639248)\n+21E79B Created Zip Spec      14 (20) '2.0'\n+21E79C Created OS            00 (0) 'MS-DOS'\n+21E79D Extract Zip Spec      14 (20) '2.0'\n+21E79E Extract OS            00 (0) 'MS-DOS'\n+21E79F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21CA02 Compression Method    0008 (8) 'Deflated'\n-21CA04 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21CA08 CRC                   8138F7C2 (2167994306)\n-21CA0C Compressed Size       0000049B (1179)\n-21CA10 Uncompressed Size     00000CD0 (3280)\n-21CA14 Filename Length       0041 (65)\n-21CA16 Extra Length          0000 (0)\n-21CA18 Comment Length        0000 (0)\n-21CA1A Disk Start            0000 (0)\n-21CA1C Int File Attributes   0000 (0)\n+21E7A1 Compression Method    0008 (8) 'Deflated'\n+21E7A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E7A7 CRC                   C15BEF93 (3244027795)\n+21E7AB Compressed Size       000008B8 (2232)\n+21E7AF Uncompressed Size     00001EDF (7903)\n+21E7B3 Filename Length       0049 (73)\n+21E7B5 Extra Length          0000 (0)\n+21E7B7 Comment Length        0000 (0)\n+21E7B9 Disk Start            0000 (0)\n+21E7BB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21CA1E Ext File Attributes   00000000 (0)\n-21CA22 Local Header Offset   0005F0BA (389306)\n-21CA26 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E7BD Ext File Attributes   00000000 (0)\n+21E7C1 Local Header Offset   0008205C (532572)\n+21E7C5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21CA26: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E7C5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21CA67 CENTRAL HEADER #470   02014B50 (33639248)\n-21CA6B Created Zip Spec      14 (20) '2.0'\n-21CA6C Created OS            00 (0) 'MS-DOS'\n-21CA6D Extract Zip Spec      14 (20) '2.0'\n-21CA6E Extract OS            00 (0) 'MS-DOS'\n-21CA6F General Purpose Flag  0808 (2056)\n+21E80E CENTRAL HEADER #470   02014B50 (33639248)\n+21E812 Created Zip Spec      14 (20) '2.0'\n+21E813 Created OS            00 (0) 'MS-DOS'\n+21E814 Extract Zip Spec      14 (20) '2.0'\n+21E815 Extract OS            00 (0) 'MS-DOS'\n+21E816 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21CA71 Compression Method    0008 (8) 'Deflated'\n-21CA73 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21CA77 CRC                   1A8FEFCC (445640652)\n-21CA7B Compressed Size       00000221 (545)\n-21CA7F Uncompressed Size     000003BA (954)\n-21CA83 Filename Length       0041 (65)\n-21CA85 Extra Length          0000 (0)\n-21CA87 Comment Length        0000 (0)\n-21CA89 Disk Start            0000 (0)\n-21CA8B Int File Attributes   0000 (0)\n+21E818 Compression Method    0008 (8) 'Deflated'\n+21E81A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E81E CRC                   EF70124F (4017099343)\n+21E822 Compressed Size       00000421 (1057)\n+21E826 Uncompressed Size     00000960 (2400)\n+21E82A Filename Length       0042 (66)\n+21E82C Extra Length          0000 (0)\n+21E82E Comment Length        0000 (0)\n+21E830 Disk Start            0000 (0)\n+21E832 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21CA8D Ext File Attributes   00000000 (0)\n-21CA91 Local Header Offset   0005F5C4 (390596)\n-21CA95 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E834 Ext File Attributes   00000000 (0)\n+21E838 Local Header Offset   0008298B (534923)\n+21E83C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21CA95: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E83C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21CAD6 CENTRAL HEADER #471   02014B50 (33639248)\n-21CADA Created Zip Spec      14 (20) '2.0'\n-21CADB Created OS            00 (0) 'MS-DOS'\n-21CADC Extract Zip Spec      14 (20) '2.0'\n-21CADD Extract OS            00 (0) 'MS-DOS'\n-21CADE General Purpose Flag  0808 (2056)\n+21E87E CENTRAL HEADER #471   02014B50 (33639248)\n+21E882 Created Zip Spec      14 (20) '2.0'\n+21E883 Created OS            00 (0) 'MS-DOS'\n+21E884 Extract Zip Spec      14 (20) '2.0'\n+21E885 Extract OS            00 (0) 'MS-DOS'\n+21E886 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21CAE0 Compression Method    0008 (8) 'Deflated'\n-21CAE2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21CAE6 CRC                   00000000 (0)\n-21CAEA Compressed Size       00000002 (2)\n-21CAEE Uncompressed Size     00000000 (0)\n-21CAF2 Filename Length       002E (46)\n-21CAF4 Extra Length          0000 (0)\n-21CAF6 Comment Length        0000 (0)\n-21CAF8 Disk Start            0000 (0)\n-21CAFA Int File Attributes   0000 (0)\n+21E888 Compression Method    0008 (8) 'Deflated'\n+21E88A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E88E CRC                   B2FA49D8 (3002747352)\n+21E892 Compressed Size       0000034B (843)\n+21E896 Uncompressed Size     0000083C (2108)\n+21E89A Filename Length       0034 (52)\n+21E89C Extra Length          0000 (0)\n+21E89E Comment Length        0000 (0)\n+21E8A0 Disk Start            0000 (0)\n+21E8A2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21CAFC Ext File Attributes   00000000 (0)\n-21CB00 Local Header Offset   0005F854 (391252)\n-21CB04 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E8A4 Ext File Attributes   00000000 (0)\n+21E8A8 Local Header Offset   00082E1C (536092)\n+21E8AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21CB04: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E8AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21CB32 CENTRAL HEADER #472   02014B50 (33639248)\n-21CB36 Created Zip Spec      14 (20) '2.0'\n-21CB37 Created OS            00 (0) 'MS-DOS'\n-21CB38 Extract Zip Spec      14 (20) '2.0'\n-21CB39 Extract OS            00 (0) 'MS-DOS'\n-21CB3A General Purpose Flag  0808 (2056)\n+21E8E0 CENTRAL HEADER #472   02014B50 (33639248)\n+21E8E4 Created Zip Spec      14 (20) '2.0'\n+21E8E5 Created OS            00 (0) 'MS-DOS'\n+21E8E6 Extract Zip Spec      14 (20) '2.0'\n+21E8E7 Extract OS            00 (0) 'MS-DOS'\n+21E8E8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21CB3C Compression Method    0008 (8) 'Deflated'\n-21CB3E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21CB42 CRC                   1071481B (275859483)\n-21CB46 Compressed Size       000002B5 (693)\n-21CB4A Uncompressed Size     0000058B (1419)\n-21CB4E Filename Length       0043 (67)\n-21CB50 Extra Length          0000 (0)\n-21CB52 Comment Length        0000 (0)\n-21CB54 Disk Start            0000 (0)\n-21CB56 Int File Attributes   0000 (0)\n+21E8EA Compression Method    0008 (8) 'Deflated'\n+21E8EC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E8F0 CRC                   00000000 (0)\n+21E8F4 Compressed Size       00000002 (2)\n+21E8F8 Uncompressed Size     00000000 (0)\n+21E8FC Filename Length       002B (43)\n+21E8FE Extra Length          0000 (0)\n+21E900 Comment Length        0000 (0)\n+21E902 Disk Start            0000 (0)\n+21E904 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21CB58 Ext File Attributes   00000000 (0)\n-21CB5C Local Header Offset   0005F8B2 (391346)\n-21CB60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E906 Ext File Attributes   00000000 (0)\n+21E90A Local Header Offset   000831C9 (537033)\n+21E90E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21CB60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E90E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21CBA3 CENTRAL HEADER #473   02014B50 (33639248)\n-21CBA7 Created Zip Spec      14 (20) '2.0'\n-21CBA8 Created OS            00 (0) 'MS-DOS'\n-21CBA9 Extract Zip Spec      14 (20) '2.0'\n-21CBAA Extract OS            00 (0) 'MS-DOS'\n-21CBAB General Purpose Flag  0808 (2056)\n+21E939 CENTRAL HEADER #473   02014B50 (33639248)\n+21E93D Created Zip Spec      14 (20) '2.0'\n+21E93E Created OS            00 (0) 'MS-DOS'\n+21E93F Extract Zip Spec      14 (20) '2.0'\n+21E940 Extract OS            00 (0) 'MS-DOS'\n+21E941 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21CBAD Compression Method    0008 (8) 'Deflated'\n-21CBAF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21CBB3 CRC                   E4476BF5 (3829885941)\n-21CBB7 Compressed Size       00000ACD (2765)\n-21CBBB Uncompressed Size     00002BF8 (11256)\n-21CBBF Filename Length       004A (74)\n-21CBC1 Extra Length          0000 (0)\n-21CBC3 Comment Length        0000 (0)\n-21CBC5 Disk Start            0000 (0)\n-21CBC7 Int File Attributes   0000 (0)\n+21E943 Compression Method    0008 (8) 'Deflated'\n+21E945 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E949 CRC                   A9E4FF87 (2850357127)\n+21E94D Compressed Size       0000080E (2062)\n+21E951 Uncompressed Size     00001767 (5991)\n+21E955 Filename Length       0045 (69)\n+21E957 Extra Length          0000 (0)\n+21E959 Comment Length        0000 (0)\n+21E95B Disk Start            0000 (0)\n+21E95D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21CBC9 Ext File Attributes   00000000 (0)\n-21CBCD Local Header Offset   0005FBD8 (392152)\n-21CBD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E95F Ext File Attributes   00000000 (0)\n+21E963 Local Header Offset   00083224 (537124)\n+21E967 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21CBD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E967: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21CC1B CENTRAL HEADER #474   02014B50 (33639248)\n-21CC1F Created Zip Spec      14 (20) '2.0'\n-21CC20 Created OS            00 (0) 'MS-DOS'\n-21CC21 Extract Zip Spec      14 (20) '2.0'\n-21CC22 Extract OS            00 (0) 'MS-DOS'\n-21CC23 General Purpose Flag  0808 (2056)\n+21E9AC CENTRAL HEADER #474   02014B50 (33639248)\n+21E9B0 Created Zip Spec      14 (20) '2.0'\n+21E9B1 Created OS            00 (0) 'MS-DOS'\n+21E9B2 Extract Zip Spec      14 (20) '2.0'\n+21E9B3 Extract OS            00 (0) 'MS-DOS'\n+21E9B4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21CC25 Compression Method    0008 (8) 'Deflated'\n-21CC27 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21CC2B CRC                   00000000 (0)\n-21CC2F Compressed Size       00000002 (2)\n-21CC33 Uncompressed Size     00000000 (0)\n-21CC37 Filename Length       002D (45)\n-21CC39 Extra Length          0000 (0)\n-21CC3B Comment Length        0000 (0)\n-21CC3D Disk Start            0000 (0)\n-21CC3F Int File Attributes   0000 (0)\n+21E9B6 Compression Method    0008 (8) 'Deflated'\n+21E9B8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21E9BC CRC                   00000000 (0)\n+21E9C0 Compressed Size       00000002 (2)\n+21E9C4 Uncompressed Size     00000000 (0)\n+21E9C8 Filename Length       0032 (50)\n+21E9CA Extra Length          0000 (0)\n+21E9CC Comment Length        0000 (0)\n+21E9CE Disk Start            0000 (0)\n+21E9D0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21CC41 Ext File Attributes   00000000 (0)\n-21CC45 Local Header Offset   0006071D (395037)\n-21CC49 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21E9D2 Ext File Attributes   00000000 (0)\n+21E9D6 Local Header Offset   00083AA5 (539301)\n+21E9DA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21CC49: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21E9DA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21CC76 CENTRAL HEADER #475   02014B50 (33639248)\n-21CC7A Created Zip Spec      14 (20) '2.0'\n-21CC7B Created OS            00 (0) 'MS-DOS'\n-21CC7C Extract Zip Spec      14 (20) '2.0'\n-21CC7D Extract OS            00 (0) 'MS-DOS'\n-21CC7E General Purpose Flag  0808 (2056)\n+21EA0C CENTRAL HEADER #475   02014B50 (33639248)\n+21EA10 Created Zip Spec      14 (20) '2.0'\n+21EA11 Created OS            00 (0) 'MS-DOS'\n+21EA12 Extract Zip Spec      14 (20) '2.0'\n+21EA13 Extract OS            00 (0) 'MS-DOS'\n+21EA14 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21CC80 Compression Method    0008 (8) 'Deflated'\n-21CC82 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21CC86 CRC                   F23CFA2B (4064082475)\n-21CC8A Compressed Size       000005E9 (1513)\n-21CC8E Uncompressed Size     000014C8 (5320)\n-21CC92 Filename Length       0041 (65)\n-21CC94 Extra Length          0000 (0)\n-21CC96 Comment Length        0000 (0)\n-21CC98 Disk Start            0000 (0)\n-21CC9A Int File Attributes   0000 (0)\n+21EA16 Compression Method    0008 (8) 'Deflated'\n+21EA18 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21EA1C CRC                   7C2CDC15 (2083314709)\n+21EA20 Compressed Size       00000444 (1092)\n+21EA24 Uncompressed Size     00000C7D (3197)\n+21EA28 Filename Length       0047 (71)\n+21EA2A Extra Length          0000 (0)\n+21EA2C Comment Length        0000 (0)\n+21EA2E Disk Start            0000 (0)\n+21EA30 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21CC9C Ext File Attributes   00000000 (0)\n-21CCA0 Local Header Offset   0006077A (395130)\n-21CCA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21EA32 Ext File Attributes   00000000 (0)\n+21EA36 Local Header Offset   00083B07 (539399)\n+21EA3A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21CCA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21EA3A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21CCE5 CENTRAL HEADER #476   02014B50 (33639248)\n-21CCE9 Created Zip Spec      14 (20) '2.0'\n-21CCEA Created OS            00 (0) 'MS-DOS'\n-21CCEB Extract Zip Spec      14 (20) '2.0'\n-21CCEC Extract OS            00 (0) 'MS-DOS'\n-21CCED General Purpose Flag  0808 (2056)\n+21EA81 CENTRAL HEADER #476   02014B50 (33639248)\n+21EA85 Created Zip Spec      14 (20) '2.0'\n+21EA86 Created OS            00 (0) 'MS-DOS'\n+21EA87 Extract Zip Spec      14 (20) '2.0'\n+21EA88 Extract OS            00 (0) 'MS-DOS'\n+21EA89 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21CCEF Compression Method    0008 (8) 'Deflated'\n-21CCF1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21CCF5 CRC                   A2C265E1 (2730649057)\n-21CCF9 Compressed Size       0000087E (2174)\n-21CCFD Uncompressed Size     00001D45 (7493)\n-21CD01 Filename Length       0044 (68)\n-21CD03 Extra Length          0000 (0)\n-21CD05 Comment Length        0000 (0)\n-21CD07 Disk Start            0000 (0)\n-21CD09 Int File Attributes   0000 (0)\n+21EA8B Compression Method    0008 (8) 'Deflated'\n+21EA8D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21EA91 CRC                   00000000 (0)\n+21EA95 Compressed Size       00000002 (2)\n+21EA99 Uncompressed Size     00000000 (0)\n+21EA9D Filename Length       0031 (49)\n+21EA9F Extra Length          0000 (0)\n+21EAA1 Comment Length        0000 (0)\n+21EAA3 Disk Start            0000 (0)\n+21EAA5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21CD0B Ext File Attributes   00000000 (0)\n-21CD0F Local Header Offset   00060DD2 (396754)\n-21CD13 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21EAA7 Ext File Attributes   00000000 (0)\n+21EAAB Local Header Offset   00083FC0 (540608)\n+21EAAF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21CD13: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21EAAF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21CD57 CENTRAL HEADER #477   02014B50 (33639248)\n-21CD5B Created Zip Spec      14 (20) '2.0'\n-21CD5C Created OS            00 (0) 'MS-DOS'\n-21CD5D Extract Zip Spec      14 (20) '2.0'\n-21CD5E Extract OS            00 (0) 'MS-DOS'\n-21CD5F General Purpose Flag  0808 (2056)\n+21EAE0 CENTRAL HEADER #477   02014B50 (33639248)\n+21EAE4 Created Zip Spec      14 (20) '2.0'\n+21EAE5 Created OS            00 (0) 'MS-DOS'\n+21EAE6 Extract Zip Spec      14 (20) '2.0'\n+21EAE7 Extract OS            00 (0) 'MS-DOS'\n+21EAE8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21CD61 Compression Method    0008 (8) 'Deflated'\n-21CD63 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21CD67 CRC                   AEA9AD13 (2930355475)\n-21CD6B Compressed Size       000002AA (682)\n-21CD6F Uncompressed Size     000005BA (1466)\n-21CD73 Filename Length       0044 (68)\n-21CD75 Extra Length          0000 (0)\n-21CD77 Comment Length        0000 (0)\n-21CD79 Disk Start            0000 (0)\n-21CD7B Int File Attributes   0000 (0)\n+21EAEA Compression Method    0008 (8) 'Deflated'\n+21EAEC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21EAF0 CRC                   C7D99F04 (3352928004)\n+21EAF4 Compressed Size       00000423 (1059)\n+21EAF8 Uncompressed Size     00000C02 (3074)\n+21EAFC Filename Length       0045 (69)\n+21EAFE Extra Length          0000 (0)\n+21EB00 Comment Length        0000 (0)\n+21EB02 Disk Start            0000 (0)\n+21EB04 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21CD7D Ext File Attributes   00000000 (0)\n-21CD81 Local Header Offset   000616C2 (399042)\n-21CD85 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21EB06 Ext File Attributes   00000000 (0)\n+21EB0A Local Header Offset   00084021 (540705)\n+21EB0E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21CD85: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21EB0E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21CDC9 CENTRAL HEADER #478   02014B50 (33639248)\n-21CDCD Created Zip Spec      14 (20) '2.0'\n-21CDCE Created OS            00 (0) 'MS-DOS'\n-21CDCF Extract Zip Spec      14 (20) '2.0'\n-21CDD0 Extract OS            00 (0) 'MS-DOS'\n-21CDD1 General Purpose Flag  0808 (2056)\n+21EB53 CENTRAL HEADER #478   02014B50 (33639248)\n+21EB57 Created Zip Spec      14 (20) '2.0'\n+21EB58 Created OS            00 (0) 'MS-DOS'\n+21EB59 Extract Zip Spec      14 (20) '2.0'\n+21EB5A Extract OS            00 (0) 'MS-DOS'\n+21EB5B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21CDD3 Compression Method    0008 (8) 'Deflated'\n-21CDD5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21CDD9 CRC                   AE0B59B2 (2919979442)\n-21CDDD Compressed Size       00000049 (73)\n-21CDE1 Uncompressed Size     00000053 (83)\n-21CDE5 Filename Length       0058 (88)\n-21CDE7 Extra Length          0000 (0)\n-21CDE9 Comment Length        0000 (0)\n-21CDEB Disk Start            0000 (0)\n-21CDED Int File Attributes   0000 (0)\n+21EB5D Compression Method    0008 (8) 'Deflated'\n+21EB5F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21EB63 CRC                   B7E8049A (3085436058)\n+21EB67 Compressed Size       00000487 (1159)\n+21EB6B Uncompressed Size     00000CBE (3262)\n+21EB6F Filename Length       004D (77)\n+21EB71 Extra Length          0000 (0)\n+21EB73 Comment Length        0000 (0)\n+21EB75 Disk Start            0000 (0)\n+21EB77 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21CDEF Ext File Attributes   00000000 (0)\n-21CDF3 Local Header Offset   000619DE (399838)\n-21CDF7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21EB79 Ext File Attributes   00000000 (0)\n+21EB7D Local Header Offset   000844B7 (541879)\n+21EB81 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21CDF7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21EB81: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21CE4F CENTRAL HEADER #479   02014B50 (33639248)\n-21CE53 Created Zip Spec      14 (20) '2.0'\n-21CE54 Created OS            00 (0) 'MS-DOS'\n-21CE55 Extract Zip Spec      14 (20) '2.0'\n-21CE56 Extract OS            00 (0) 'MS-DOS'\n-21CE57 General Purpose Flag  0808 (2056)\n+21EBCE CENTRAL HEADER #479   02014B50 (33639248)\n+21EBD2 Created Zip Spec      14 (20) '2.0'\n+21EBD3 Created OS            00 (0) 'MS-DOS'\n+21EBD4 Extract Zip Spec      14 (20) '2.0'\n+21EBD5 Extract OS            00 (0) 'MS-DOS'\n+21EBD6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21CE59 Compression Method    0008 (8) 'Deflated'\n-21CE5B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21CE5F CRC                   80BC13A6 (2159809446)\n-21CE63 Compressed Size       00000058 (88)\n-21CE67 Uncompressed Size     000000A2 (162)\n-21CE6B Filename Length       0053 (83)\n-21CE6D Extra Length          0000 (0)\n-21CE6F Comment Length        0000 (0)\n-21CE71 Disk Start            0000 (0)\n-21CE73 Int File Attributes   0000 (0)\n+21EBD8 Compression Method    0008 (8) 'Deflated'\n+21EBDA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21EBDE CRC                   365FEBC7 (912255943)\n+21EBE2 Compressed Size       000004A6 (1190)\n+21EBE6 Uncompressed Size     00000B87 (2951)\n+21EBEA Filename Length       003F (63)\n+21EBEC Extra Length          0000 (0)\n+21EBEE Comment Length        0000 (0)\n+21EBF0 Disk Start            0000 (0)\n+21EBF2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21CE75 Ext File Attributes   00000000 (0)\n-21CE79 Local Header Offset   00061AAD (400045)\n-21CE7D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21EBF4 Ext File Attributes   00000000 (0)\n+21EBF8 Local Header Offset   000849B9 (543161)\n+21EBFC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21CE7D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21EBFC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21CED0 CENTRAL HEADER #480   02014B50 (33639248)\n-21CED4 Created Zip Spec      14 (20) '2.0'\n-21CED5 Created OS            00 (0) 'MS-DOS'\n-21CED6 Extract Zip Spec      14 (20) '2.0'\n-21CED7 Extract OS            00 (0) 'MS-DOS'\n-21CED8 General Purpose Flag  0808 (2056)\n+21EC3B CENTRAL HEADER #480   02014B50 (33639248)\n+21EC3F Created Zip Spec      14 (20) '2.0'\n+21EC40 Created OS            00 (0) 'MS-DOS'\n+21EC41 Extract Zip Spec      14 (20) '2.0'\n+21EC42 Extract OS            00 (0) 'MS-DOS'\n+21EC43 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21CEDA Compression Method    0008 (8) 'Deflated'\n-21CEDC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21CEE0 CRC                   00000000 (0)\n-21CEE4 Compressed Size       00000002 (2)\n-21CEE8 Uncompressed Size     00000000 (0)\n-21CEEC Filename Length       0004 (4)\n-21CEEE Extra Length          0000 (0)\n-21CEF0 Comment Length        0000 (0)\n-21CEF2 Disk Start            0000 (0)\n-21CEF4 Int File Attributes   0000 (0)\n+21EC45 Compression Method    0008 (8) 'Deflated'\n+21EC47 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21EC4B CRC                   00000000 (0)\n+21EC4F Compressed Size       00000002 (2)\n+21EC53 Uncompressed Size     00000000 (0)\n+21EC57 Filename Length       0031 (49)\n+21EC59 Extra Length          0000 (0)\n+21EC5B Comment Length        0000 (0)\n+21EC5D Disk Start            0000 (0)\n+21EC5F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21CEF6 Ext File Attributes   00000000 (0)\n-21CEFA Local Header Offset   00061B86 (400262)\n-21CEFE Filename              'XXXX'\n+21EC61 Ext File Attributes   00000000 (0)\n+21EC65 Local Header Offset   00084ECC (544460)\n+21EC69 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21CEFE: Filename 'XXXX'\n+# WARNING: Offset 0x21EC69: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21CF02 CENTRAL HEADER #481   02014B50 (33639248)\n-21CF06 Created Zip Spec      14 (20) '2.0'\n-21CF07 Created OS            00 (0) 'MS-DOS'\n-21CF08 Extract Zip Spec      14 (20) '2.0'\n-21CF09 Extract OS            00 (0) 'MS-DOS'\n-21CF0A General Purpose Flag  0808 (2056)\n+21EC9A CENTRAL HEADER #481   02014B50 (33639248)\n+21EC9E Created Zip Spec      14 (20) '2.0'\n+21EC9F Created OS            00 (0) 'MS-DOS'\n+21ECA0 Extract Zip Spec      14 (20) '2.0'\n+21ECA1 Extract OS            00 (0) 'MS-DOS'\n+21ECA2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21CF0C Compression Method    0008 (8) 'Deflated'\n-21CF0E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21CF12 CRC                   00000000 (0)\n-21CF16 Compressed Size       00000002 (2)\n-21CF1A Uncompressed Size     00000000 (0)\n-21CF1E Filename Length       000C (12)\n-21CF20 Extra Length          0000 (0)\n-21CF22 Comment Length        0000 (0)\n-21CF24 Disk Start            0000 (0)\n-21CF26 Int File Attributes   0000 (0)\n+21ECA4 Compression Method    0008 (8) 'Deflated'\n+21ECA6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21ECAA CRC                   3EDDC0EF (1054720239)\n+21ECAE Compressed Size       000003D8 (984)\n+21ECB2 Uncompressed Size     00000AA3 (2723)\n+21ECB6 Filename Length       0045 (69)\n+21ECB8 Extra Length          0000 (0)\n+21ECBA Comment Length        0000 (0)\n+21ECBC Disk Start            0000 (0)\n+21ECBE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21CF28 Ext File Attributes   00000000 (0)\n-21CF2C Local Header Offset   00061BBA (400314)\n-21CF30 Filename              'XXXXXXXXXXXX'\n+21ECC0 Ext File Attributes   00000000 (0)\n+21ECC4 Local Header Offset   00084F2D (544557)\n+21ECC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21CF30: Filename 'XXXXXXXXXXXX'\n+# WARNING: Offset 0x21ECC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21CF3C CENTRAL HEADER #482   02014B50 (33639248)\n-21CF40 Created Zip Spec      14 (20) '2.0'\n-21CF41 Created OS            00 (0) 'MS-DOS'\n-21CF42 Extract Zip Spec      14 (20) '2.0'\n-21CF43 Extract OS            00 (0) 'MS-DOS'\n-21CF44 General Purpose Flag  0808 (2056)\n+21ED0D CENTRAL HEADER #482   02014B50 (33639248)\n+21ED11 Created Zip Spec      14 (20) '2.0'\n+21ED12 Created OS            00 (0) 'MS-DOS'\n+21ED13 Extract Zip Spec      14 (20) '2.0'\n+21ED14 Extract OS            00 (0) 'MS-DOS'\n+21ED15 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21CF46 Compression Method    0008 (8) 'Deflated'\n-21CF48 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21CF4C CRC                   00000000 (0)\n-21CF50 Compressed Size       00000002 (2)\n-21CF54 Uncompressed Size     00000000 (0)\n-21CF58 Filename Length       0012 (18)\n-21CF5A Extra Length          0000 (0)\n-21CF5C Comment Length        0000 (0)\n-21CF5E Disk Start            0000 (0)\n-21CF60 Int File Attributes   0000 (0)\n+21ED17 Compression Method    0008 (8) 'Deflated'\n+21ED19 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21ED1D CRC                   00000000 (0)\n+21ED21 Compressed Size       00000002 (2)\n+21ED25 Uncompressed Size     00000000 (0)\n+21ED29 Filename Length       0033 (51)\n+21ED2B Extra Length          0000 (0)\n+21ED2D Comment Length        0000 (0)\n+21ED2F Disk Start            0000 (0)\n+21ED31 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21CF62 Ext File Attributes   00000000 (0)\n-21CF66 Local Header Offset   00061BF6 (400374)\n-21CF6A Filename              'XXXXXXXXXXXXXXXXXX'\n+21ED33 Ext File Attributes   00000000 (0)\n+21ED37 Local Header Offset   00085378 (545656)\n+21ED3B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21CF6A: Filename 'XXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21ED3B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21CF7C CENTRAL HEADER #483   02014B50 (33639248)\n-21CF80 Created Zip Spec      14 (20) '2.0'\n-21CF81 Created OS            00 (0) 'MS-DOS'\n-21CF82 Extract Zip Spec      14 (20) '2.0'\n-21CF83 Extract OS            00 (0) 'MS-DOS'\n-21CF84 General Purpose Flag  0808 (2056)\n+21ED6E CENTRAL HEADER #483   02014B50 (33639248)\n+21ED72 Created Zip Spec      14 (20) '2.0'\n+21ED73 Created OS            00 (0) 'MS-DOS'\n+21ED74 Extract Zip Spec      14 (20) '2.0'\n+21ED75 Extract OS            00 (0) 'MS-DOS'\n+21ED76 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21CF86 Compression Method    0008 (8) 'Deflated'\n-21CF88 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21CF8C CRC                   00000000 (0)\n-21CF90 Compressed Size       00000002 (2)\n-21CF94 Uncompressed Size     00000000 (0)\n-21CF98 Filename Length       0019 (25)\n-21CF9A Extra Length          0000 (0)\n-21CF9C Comment Length        0000 (0)\n-21CF9E Disk Start            0000 (0)\n-21CFA0 Int File Attributes   0000 (0)\n+21ED78 Compression Method    0008 (8) 'Deflated'\n+21ED7A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21ED7E CRC                   9B40567E (2604684926)\n+21ED82 Compressed Size       0000040D (1037)\n+21ED86 Uncompressed Size     00000BB0 (2992)\n+21ED8A Filename Length       0049 (73)\n+21ED8C Extra Length          0000 (0)\n+21ED8E Comment Length        0000 (0)\n+21ED90 Disk Start            0000 (0)\n+21ED92 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21CFA2 Ext File Attributes   00000000 (0)\n-21CFA6 Local Header Offset   00061C38 (400440)\n-21CFAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+21ED94 Ext File Attributes   00000000 (0)\n+21ED98 Local Header Offset   000853DB (545755)\n+21ED9C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21CFAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21ED9C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21CFC3 CENTRAL HEADER #484   02014B50 (33639248)\n-21CFC7 Created Zip Spec      14 (20) '2.0'\n-21CFC8 Created OS            00 (0) 'MS-DOS'\n-21CFC9 Extract Zip Spec      14 (20) '2.0'\n-21CFCA Extract OS            00 (0) 'MS-DOS'\n-21CFCB General Purpose Flag  0808 (2056)\n+21EDE5 CENTRAL HEADER #484   02014B50 (33639248)\n+21EDE9 Created Zip Spec      14 (20) '2.0'\n+21EDEA Created OS            00 (0) 'MS-DOS'\n+21EDEB Extract Zip Spec      14 (20) '2.0'\n+21EDEC Extract OS            00 (0) 'MS-DOS'\n+21EDED General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21CFCD Compression Method    0008 (8) 'Deflated'\n-21CFCF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21CFD3 CRC                   00000000 (0)\n-21CFD7 Compressed Size       00000002 (2)\n-21CFDB Uncompressed Size     00000000 (0)\n-21CFDF Filename Length       0023 (35)\n-21CFE1 Extra Length          0000 (0)\n-21CFE3 Comment Length        0000 (0)\n-21CFE5 Disk Start            0000 (0)\n-21CFE7 Int File Attributes   0000 (0)\n+21EDEF Compression Method    0008 (8) 'Deflated'\n+21EDF1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21EDF5 CRC                   00000000 (0)\n+21EDF9 Compressed Size       00000002 (2)\n+21EDFD Uncompressed Size     00000000 (0)\n+21EE01 Filename Length       001E (30)\n+21EE03 Extra Length          0000 (0)\n+21EE05 Comment Length        0000 (0)\n+21EE07 Disk Start            0000 (0)\n+21EE09 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21CFE9 Ext File Attributes   00000000 (0)\n-21CFED Local Header Offset   00061C81 (400513)\n-21CFF1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21EE0B Ext File Attributes   00000000 (0)\n+21EE0F Local Header Offset   0008585F (546911)\n+21EE13 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21CFF1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21EE13: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D014 CENTRAL HEADER #485   02014B50 (33639248)\n-21D018 Created Zip Spec      14 (20) '2.0'\n-21D019 Created OS            00 (0) 'MS-DOS'\n-21D01A Extract Zip Spec      14 (20) '2.0'\n-21D01B Extract OS            00 (0) 'MS-DOS'\n-21D01C General Purpose Flag  0808 (2056)\n+21EE31 CENTRAL HEADER #485   02014B50 (33639248)\n+21EE35 Created Zip Spec      14 (20) '2.0'\n+21EE36 Created OS            00 (0) 'MS-DOS'\n+21EE37 Extract Zip Spec      14 (20) '2.0'\n+21EE38 Extract OS            00 (0) 'MS-DOS'\n+21EE39 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D01E Compression Method    0008 (8) 'Deflated'\n-21D020 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D024 CRC                   87D33073 (2278764659)\n-21D028 Compressed Size       000002BB (699)\n-21D02C Uncompressed Size     000005CF (1487)\n-21D030 Filename Length       0030 (48)\n-21D032 Extra Length          0000 (0)\n-21D034 Comment Length        0000 (0)\n-21D036 Disk Start            0000 (0)\n-21D038 Int File Attributes   0000 (0)\n+21EE3B Compression Method    0008 (8) 'Deflated'\n+21EE3D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21EE41 CRC                   6BA20F13 (1805782803)\n+21EE45 Compressed Size       00001C52 (7250)\n+21EE49 Uncompressed Size     00007CE7 (31975)\n+21EE4D Filename Length       0033 (51)\n+21EE4F Extra Length          0000 (0)\n+21EE51 Comment Length        0000 (0)\n+21EE53 Disk Start            0000 (0)\n+21EE55 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D03A Ext File Attributes   00000000 (0)\n-21D03E Local Header Offset   00061CD4 (400596)\n-21D042 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21EE57 Ext File Attributes   00000000 (0)\n+21EE5B Local Header Offset   000858AD (546989)\n+21EE5F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D042: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21EE5F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D072 CENTRAL HEADER #486   02014B50 (33639248)\n-21D076 Created Zip Spec      14 (20) '2.0'\n-21D077 Created OS            00 (0) 'MS-DOS'\n-21D078 Extract Zip Spec      14 (20) '2.0'\n-21D079 Extract OS            00 (0) 'MS-DOS'\n-21D07A General Purpose Flag  0808 (2056)\n+21EE92 CENTRAL HEADER #486   02014B50 (33639248)\n+21EE96 Created Zip Spec      14 (20) '2.0'\n+21EE97 Created OS            00 (0) 'MS-DOS'\n+21EE98 Extract Zip Spec      14 (20) '2.0'\n+21EE99 Extract OS            00 (0) 'MS-DOS'\n+21EE9A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D07C Compression Method    0008 (8) 'Deflated'\n-21D07E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D082 CRC                   00000000 (0)\n-21D086 Compressed Size       00000002 (2)\n-21D08A Uncompressed Size     00000000 (0)\n-21D08E Filename Length       0019 (25)\n-21D090 Extra Length          0000 (0)\n-21D092 Comment Length        0000 (0)\n-21D094 Disk Start            0000 (0)\n-21D096 Int File Attributes   0000 (0)\n+21EE9C Compression Method    0008 (8) 'Deflated'\n+21EE9E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21EEA2 CRC                   896B8386 (2305524614)\n+21EEA6 Compressed Size       000002C6 (710)\n+21EEAA Uncompressed Size     0000069C (1692)\n+21EEAE Filename Length       002A (42)\n+21EEB0 Extra Length          0000 (0)\n+21EEB2 Comment Length        0000 (0)\n+21EEB4 Disk Start            0000 (0)\n+21EEB6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D098 Ext File Attributes   00000000 (0)\n-21D09C Local Header Offset   00061FED (401389)\n-21D0A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+21EEB8 Ext File Attributes   00000000 (0)\n+21EEBC Local Header Offset   00087560 (554336)\n+21EEC0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D0A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21EEC0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D0B9 CENTRAL HEADER #487   02014B50 (33639248)\n-21D0BD Created Zip Spec      14 (20) '2.0'\n-21D0BE Created OS            00 (0) 'MS-DOS'\n-21D0BF Extract Zip Spec      14 (20) '2.0'\n-21D0C0 Extract OS            00 (0) 'MS-DOS'\n-21D0C1 General Purpose Flag  0808 (2056)\n+21EEEA CENTRAL HEADER #487   02014B50 (33639248)\n+21EEEE Created Zip Spec      14 (20) '2.0'\n+21EEEF Created OS            00 (0) 'MS-DOS'\n+21EEF0 Extract Zip Spec      14 (20) '2.0'\n+21EEF1 Extract OS            00 (0) 'MS-DOS'\n+21EEF2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D0C3 Compression Method    0008 (8) 'Deflated'\n-21D0C5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D0C9 CRC                   00000000 (0)\n-21D0CD Compressed Size       00000002 (2)\n-21D0D1 Uncompressed Size     00000000 (0)\n-21D0D5 Filename Length       0024 (36)\n-21D0D7 Extra Length          0000 (0)\n-21D0D9 Comment Length        0000 (0)\n-21D0DB Disk Start            0000 (0)\n-21D0DD Int File Attributes   0000 (0)\n+21EEF4 Compression Method    0008 (8) 'Deflated'\n+21EEF6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21EEFA CRC                   2D8D7FE9 (764248041)\n+21EEFE Compressed Size       00000366 (870)\n+21EF02 Uncompressed Size     00000769 (1897)\n+21EF06 Filename Length       0028 (40)\n+21EF08 Extra Length          0000 (0)\n+21EF0A Comment Length        0000 (0)\n+21EF0C Disk Start            0000 (0)\n+21EF0E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D0DF Ext File Attributes   00000000 (0)\n-21D0E3 Local Header Offset   00062036 (401462)\n-21D0E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21EF10 Ext File Attributes   00000000 (0)\n+21EF14 Local Header Offset   0008787E (555134)\n+21EF18 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D0E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21EF18: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D10B CENTRAL HEADER #488   02014B50 (33639248)\n-21D10F Created Zip Spec      14 (20) '2.0'\n-21D110 Created OS            00 (0) 'MS-DOS'\n-21D111 Extract Zip Spec      14 (20) '2.0'\n-21D112 Extract OS            00 (0) 'MS-DOS'\n-21D113 General Purpose Flag  0808 (2056)\n+21EF40 CENTRAL HEADER #488   02014B50 (33639248)\n+21EF44 Created Zip Spec      14 (20) '2.0'\n+21EF45 Created OS            00 (0) 'MS-DOS'\n+21EF46 Extract Zip Spec      14 (20) '2.0'\n+21EF47 Extract OS            00 (0) 'MS-DOS'\n+21EF48 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D115 Compression Method    0008 (8) 'Deflated'\n-21D117 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D11B CRC                   9122A7A7 (2434967463)\n-21D11F Compressed Size       000003B9 (953)\n-21D123 Uncompressed Size     00000A3F (2623)\n-21D127 Filename Length       0032 (50)\n-21D129 Extra Length          0000 (0)\n-21D12B Comment Length        0000 (0)\n-21D12D Disk Start            0000 (0)\n-21D12F Int File Attributes   0000 (0)\n+21EF4A Compression Method    0008 (8) 'Deflated'\n+21EF4C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21EF50 CRC                   E9761FB8 (3916832696)\n+21EF54 Compressed Size       0000025D (605)\n+21EF58 Uncompressed Size     00000497 (1175)\n+21EF5C Filename Length       002C (44)\n+21EF5E Extra Length          0000 (0)\n+21EF60 Comment Length        0000 (0)\n+21EF62 Disk Start            0000 (0)\n+21EF64 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D131 Ext File Attributes   00000000 (0)\n-21D135 Local Header Offset   0006208A (401546)\n-21D139 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21EF66 Ext File Attributes   00000000 (0)\n+21EF6A Local Header Offset   00087C3A (556090)\n+21EF6E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D139: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21EF6E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D16B CENTRAL HEADER #489   02014B50 (33639248)\n-21D16F Created Zip Spec      14 (20) '2.0'\n-21D170 Created OS            00 (0) 'MS-DOS'\n-21D171 Extract Zip Spec      14 (20) '2.0'\n-21D172 Extract OS            00 (0) 'MS-DOS'\n-21D173 General Purpose Flag  0808 (2056)\n+21EF9A CENTRAL HEADER #489   02014B50 (33639248)\n+21EF9E Created Zip Spec      14 (20) '2.0'\n+21EF9F Created OS            00 (0) 'MS-DOS'\n+21EFA0 Extract Zip Spec      14 (20) '2.0'\n+21EFA1 Extract OS            00 (0) 'MS-DOS'\n+21EFA2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D175 Compression Method    0008 (8) 'Deflated'\n-21D177 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D17B CRC                   3228CAA5 (841534117)\n-21D17F Compressed Size       000003C2 (962)\n-21D183 Uncompressed Size     00000A97 (2711)\n-21D187 Filename Length       0030 (48)\n-21D189 Extra Length          0000 (0)\n-21D18B Comment Length        0000 (0)\n-21D18D Disk Start            0000 (0)\n-21D18F Int File Attributes   0000 (0)\n+21EFA4 Compression Method    0008 (8) 'Deflated'\n+21EFA6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21EFAA CRC                   00000000 (0)\n+21EFAE Compressed Size       00000002 (2)\n+21EFB2 Uncompressed Size     00000000 (0)\n+21EFB6 Filename Length       001E (30)\n+21EFB8 Extra Length          0000 (0)\n+21EFBA Comment Length        0000 (0)\n+21EFBC Disk Start            0000 (0)\n+21EFBE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D191 Ext File Attributes   00000000 (0)\n-21D195 Local Header Offset   000624A3 (402595)\n-21D199 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21EFC0 Ext File Attributes   00000000 (0)\n+21EFC4 Local Header Offset   00087EF1 (556785)\n+21EFC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D199: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21EFC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D1C9 CENTRAL HEADER #490   02014B50 (33639248)\n-21D1CD Created Zip Spec      14 (20) '2.0'\n-21D1CE Created OS            00 (0) 'MS-DOS'\n-21D1CF Extract Zip Spec      14 (20) '2.0'\n-21D1D0 Extract OS            00 (0) 'MS-DOS'\n-21D1D1 General Purpose Flag  0808 (2056)\n+21EFE6 CENTRAL HEADER #490   02014B50 (33639248)\n+21EFEA Created Zip Spec      14 (20) '2.0'\n+21EFEB Created OS            00 (0) 'MS-DOS'\n+21EFEC Extract Zip Spec      14 (20) '2.0'\n+21EFED Extract OS            00 (0) 'MS-DOS'\n+21EFEE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D1D3 Compression Method    0008 (8) 'Deflated'\n-21D1D5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D1D9 CRC                   00000000 (0)\n-21D1DD Compressed Size       00000002 (2)\n-21D1E1 Uncompressed Size     00000000 (0)\n-21D1E5 Filename Length       0018 (24)\n-21D1E7 Extra Length          0000 (0)\n-21D1E9 Comment Length        0000 (0)\n-21D1EB Disk Start            0000 (0)\n-21D1ED Int File Attributes   0000 (0)\n+21EFF0 Compression Method    0008 (8) 'Deflated'\n+21EFF2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21EFF6 CRC                   7F03CBF8 (2130955256)\n+21EFFA Compressed Size       00000D92 (3474)\n+21EFFE Uncompressed Size     000054E7 (21735)\n+21F002 Filename Length       0032 (50)\n+21F004 Extra Length          0000 (0)\n+21F006 Comment Length        0000 (0)\n+21F008 Disk Start            0000 (0)\n+21F00A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D1EF Ext File Attributes   00000000 (0)\n-21D1F3 Local Header Offset   000628C3 (403651)\n-21D1F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+21F00C Ext File Attributes   00000000 (0)\n+21F010 Local Header Offset   00087F3F (556863)\n+21F014 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D1F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F014: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D20F CENTRAL HEADER #491   02014B50 (33639248)\n-21D213 Created Zip Spec      14 (20) '2.0'\n-21D214 Created OS            00 (0) 'MS-DOS'\n-21D215 Extract Zip Spec      14 (20) '2.0'\n-21D216 Extract OS            00 (0) 'MS-DOS'\n-21D217 General Purpose Flag  0808 (2056)\n+21F046 CENTRAL HEADER #491   02014B50 (33639248)\n+21F04A Created Zip Spec      14 (20) '2.0'\n+21F04B Created OS            00 (0) 'MS-DOS'\n+21F04C Extract Zip Spec      14 (20) '2.0'\n+21F04D Extract OS            00 (0) 'MS-DOS'\n+21F04E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D219 Compression Method    0008 (8) 'Deflated'\n-21D21B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D21F CRC                   4059C95D (1079626077)\n-21D223 Compressed Size       00000507 (1287)\n-21D227 Uncompressed Size     000010F7 (4343)\n-21D22B Filename Length       0030 (48)\n-21D22D Extra Length          0000 (0)\n-21D22F Comment Length        0000 (0)\n-21D231 Disk Start            0000 (0)\n-21D233 Int File Attributes   0000 (0)\n+21F050 Compression Method    0008 (8) 'Deflated'\n+21F052 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F056 CRC                   255BC4C2 (626771138)\n+21F05A Compressed Size       000003B6 (950)\n+21F05E Uncompressed Size     00000985 (2437)\n+21F062 Filename Length       002D (45)\n+21F064 Extra Length          0000 (0)\n+21F066 Comment Length        0000 (0)\n+21F068 Disk Start            0000 (0)\n+21F06A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D235 Ext File Attributes   00000000 (0)\n-21D239 Local Header Offset   0006290B (403723)\n-21D23D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F06C Ext File Attributes   00000000 (0)\n+21F070 Local Header Offset   00088D31 (560433)\n+21F074 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D23D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F074: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D26D CENTRAL HEADER #492   02014B50 (33639248)\n-21D271 Created Zip Spec      14 (20) '2.0'\n-21D272 Created OS            00 (0) 'MS-DOS'\n-21D273 Extract Zip Spec      14 (20) '2.0'\n-21D274 Extract OS            00 (0) 'MS-DOS'\n-21D275 General Purpose Flag  0808 (2056)\n+21F0A1 CENTRAL HEADER #492   02014B50 (33639248)\n+21F0A5 Created Zip Spec      14 (20) '2.0'\n+21F0A6 Created OS            00 (0) 'MS-DOS'\n+21F0A7 Extract Zip Spec      14 (20) '2.0'\n+21F0A8 Extract OS            00 (0) 'MS-DOS'\n+21F0A9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D277 Compression Method    0008 (8) 'Deflated'\n-21D279 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D27D CRC                   BF971C06 (3214351366)\n-21D281 Compressed Size       000002AE (686)\n-21D285 Uncompressed Size     00000552 (1362)\n-21D289 Filename Length       0029 (41)\n-21D28B Extra Length          0000 (0)\n-21D28D Comment Length        0000 (0)\n-21D28F Disk Start            0000 (0)\n-21D291 Int File Attributes   0000 (0)\n+21F0AB Compression Method    0008 (8) 'Deflated'\n+21F0AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F0B1 CRC                   40170699 (1075250841)\n+21F0B5 Compressed Size       00000296 (662)\n+21F0B9 Uncompressed Size     0000059E (1438)\n+21F0BD Filename Length       0029 (41)\n+21F0BF Extra Length          0000 (0)\n+21F0C1 Comment Length        0000 (0)\n+21F0C3 Disk Start            0000 (0)\n+21F0C5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D293 Ext File Attributes   00000000 (0)\n-21D297 Local Header Offset   00062E70 (405104)\n-21D29B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F0C7 Ext File Attributes   00000000 (0)\n+21F0CB Local Header Offset   00089142 (561474)\n+21F0CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D29B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F0CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D2C4 CENTRAL HEADER #493   02014B50 (33639248)\n-21D2C8 Created Zip Spec      14 (20) '2.0'\n-21D2C9 Created OS            00 (0) 'MS-DOS'\n-21D2CA Extract Zip Spec      14 (20) '2.0'\n-21D2CB Extract OS            00 (0) 'MS-DOS'\n-21D2CC General Purpose Flag  0808 (2056)\n+21F0F8 CENTRAL HEADER #493   02014B50 (33639248)\n+21F0FC Created Zip Spec      14 (20) '2.0'\n+21F0FD Created OS            00 (0) 'MS-DOS'\n+21F0FE Extract Zip Spec      14 (20) '2.0'\n+21F0FF Extract OS            00 (0) 'MS-DOS'\n+21F100 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D2CE Compression Method    0008 (8) 'Deflated'\n-21D2D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D2D4 CRC                   1CCCA507 (483173639)\n-21D2D8 Compressed Size       0000046C (1132)\n-21D2DC Uncompressed Size     000009AB (2475)\n-21D2E0 Filename Length       0026 (38)\n-21D2E2 Extra Length          0000 (0)\n-21D2E4 Comment Length        0000 (0)\n-21D2E6 Disk Start            0000 (0)\n-21D2E8 Int File Attributes   0000 (0)\n+21F102 Compression Method    0008 (8) 'Deflated'\n+21F104 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F108 CRC                   A604EAF8 (2785340152)\n+21F10C Compressed Size       000004E6 (1254)\n+21F110 Uncompressed Size     00001249 (4681)\n+21F114 Filename Length       0038 (56)\n+21F116 Extra Length          0000 (0)\n+21F118 Comment Length        0000 (0)\n+21F11A Disk Start            0000 (0)\n+21F11C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D2EA Ext File Attributes   00000000 (0)\n-21D2EE Local Header Offset   00063175 (405877)\n-21D2F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F11E Ext File Attributes   00000000 (0)\n+21F122 Local Header Offset   0008942F (562223)\n+21F126 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D2F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F126: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D318 CENTRAL HEADER #494   02014B50 (33639248)\n-21D31C Created Zip Spec      14 (20) '2.0'\n-21D31D Created OS            00 (0) 'MS-DOS'\n-21D31E Extract Zip Spec      14 (20) '2.0'\n-21D31F Extract OS            00 (0) 'MS-DOS'\n-21D320 General Purpose Flag  0808 (2056)\n+21F15E CENTRAL HEADER #494   02014B50 (33639248)\n+21F162 Created Zip Spec      14 (20) '2.0'\n+21F163 Created OS            00 (0) 'MS-DOS'\n+21F164 Extract Zip Spec      14 (20) '2.0'\n+21F165 Extract OS            00 (0) 'MS-DOS'\n+21F166 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D322 Compression Method    0008 (8) 'Deflated'\n-21D324 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D328 CRC                   0622E0A0 (102949024)\n-21D32C Compressed Size       00000264 (612)\n-21D330 Uncompressed Size     0000049F (1183)\n-21D334 Filename Length       0021 (33)\n-21D336 Extra Length          0000 (0)\n-21D338 Comment Length        0000 (0)\n-21D33A Disk Start            0000 (0)\n-21D33C Int File Attributes   0000 (0)\n+21F168 Compression Method    0008 (8) 'Deflated'\n+21F16A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F16E CRC                   D7EB77B9 (3622533049)\n+21F172 Compressed Size       00000731 (1841)\n+21F176 Uncompressed Size     0000137A (4986)\n+21F17A Filename Length       002C (44)\n+21F17C Extra Length          0000 (0)\n+21F17E Comment Length        0000 (0)\n+21F180 Disk Start            0000 (0)\n+21F182 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D33E Ext File Attributes   00000000 (0)\n-21D342 Local Header Offset   00063635 (407093)\n-21D346 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F184 Ext File Attributes   00000000 (0)\n+21F188 Local Header Offset   0008997B (563579)\n+21F18C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D346: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F18C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D367 CENTRAL HEADER #495   02014B50 (33639248)\n-21D36B Created Zip Spec      14 (20) '2.0'\n-21D36C Created OS            00 (0) 'MS-DOS'\n-21D36D Extract Zip Spec      14 (20) '2.0'\n-21D36E Extract OS            00 (0) 'MS-DOS'\n-21D36F General Purpose Flag  0808 (2056)\n+21F1B8 CENTRAL HEADER #495   02014B50 (33639248)\n+21F1BC Created Zip Spec      14 (20) '2.0'\n+21F1BD Created OS            00 (0) 'MS-DOS'\n+21F1BE Extract Zip Spec      14 (20) '2.0'\n+21F1BF Extract OS            00 (0) 'MS-DOS'\n+21F1C0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D371 Compression Method    0008 (8) 'Deflated'\n-21D373 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D377 CRC                   3DF15F74 (1039228788)\n-21D37B Compressed Size       00000650 (1616)\n-21D37F Uncompressed Size     0000229A (8858)\n-21D383 Filename Length       0027 (39)\n-21D385 Extra Length          0000 (0)\n-21D387 Comment Length        0000 (0)\n-21D389 Disk Start            0000 (0)\n-21D38B Int File Attributes   0000 (0)\n+21F1C2 Compression Method    0008 (8) 'Deflated'\n+21F1C4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F1C8 CRC                   7518C2B8 (1964556984)\n+21F1CC Compressed Size       000002A4 (676)\n+21F1D0 Uncompressed Size     00000535 (1333)\n+21F1D4 Filename Length       0039 (57)\n+21F1D6 Extra Length          0000 (0)\n+21F1D8 Comment Length        0000 (0)\n+21F1DA Disk Start            0000 (0)\n+21F1DC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D38D Ext File Attributes   00000000 (0)\n-21D391 Local Header Offset   000638E8 (407784)\n-21D395 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F1DE Ext File Attributes   00000000 (0)\n+21F1E2 Local Header Offset   0008A106 (565510)\n+21F1E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D395: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F1E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D3BC CENTRAL HEADER #496   02014B50 (33639248)\n-21D3C0 Created Zip Spec      14 (20) '2.0'\n-21D3C1 Created OS            00 (0) 'MS-DOS'\n-21D3C2 Extract Zip Spec      14 (20) '2.0'\n-21D3C3 Extract OS            00 (0) 'MS-DOS'\n-21D3C4 General Purpose Flag  0808 (2056)\n+21F21F CENTRAL HEADER #496   02014B50 (33639248)\n+21F223 Created Zip Spec      14 (20) '2.0'\n+21F224 Created OS            00 (0) 'MS-DOS'\n+21F225 Extract Zip Spec      14 (20) '2.0'\n+21F226 Extract OS            00 (0) 'MS-DOS'\n+21F227 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D3C6 Compression Method    0008 (8) 'Deflated'\n-21D3C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D3CC CRC                   52712A03 (1383148035)\n-21D3D0 Compressed Size       00000226 (550)\n-21D3D4 Uncompressed Size     000003E8 (1000)\n-21D3D8 Filename Length       0026 (38)\n-21D3DA Extra Length          0000 (0)\n-21D3DC Comment Length        0000 (0)\n-21D3DE Disk Start            0000 (0)\n-21D3E0 Int File Attributes   0000 (0)\n+21F229 Compression Method    0008 (8) 'Deflated'\n+21F22B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F22F CRC                   FC613C2C (4234230828)\n+21F233 Compressed Size       000006AB (1707)\n+21F237 Uncompressed Size     00001651 (5713)\n+21F23B Filename Length       002E (46)\n+21F23D Extra Length          0000 (0)\n+21F23F Comment Length        0000 (0)\n+21F241 Disk Start            0000 (0)\n+21F243 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D3E2 Ext File Attributes   00000000 (0)\n-21D3E6 Local Header Offset   00063F8D (409485)\n-21D3EA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F245 Ext File Attributes   00000000 (0)\n+21F249 Local Header Offset   0008A411 (566289)\n+21F24D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D3EA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F24D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D410 CENTRAL HEADER #497   02014B50 (33639248)\n-21D414 Created Zip Spec      14 (20) '2.0'\n-21D415 Created OS            00 (0) 'MS-DOS'\n-21D416 Extract Zip Spec      14 (20) '2.0'\n-21D417 Extract OS            00 (0) 'MS-DOS'\n-21D418 General Purpose Flag  0808 (2056)\n+21F27B CENTRAL HEADER #497   02014B50 (33639248)\n+21F27F Created Zip Spec      14 (20) '2.0'\n+21F280 Created OS            00 (0) 'MS-DOS'\n+21F281 Extract Zip Spec      14 (20) '2.0'\n+21F282 Extract OS            00 (0) 'MS-DOS'\n+21F283 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D41A Compression Method    0008 (8) 'Deflated'\n-21D41C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D420 CRC                   4B96BF4D (1268170573)\n-21D424 Compressed Size       00002661 (9825)\n-21D428 Uncompressed Size     00011389 (70537)\n-21D42C Filename Length       0020 (32)\n-21D42E Extra Length          0000 (0)\n-21D430 Comment Length        0000 (0)\n-21D432 Disk Start            0000 (0)\n-21D434 Int File Attributes   0000 (0)\n+21F285 Compression Method    0008 (8) 'Deflated'\n+21F287 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F28B CRC                   75C25786 (1975670662)\n+21F28F Compressed Size       00001170 (4464)\n+21F293 Uncompressed Size     00004813 (18451)\n+21F297 Filename Length       002D (45)\n+21F299 Extra Length          0000 (0)\n+21F29B Comment Length        0000 (0)\n+21F29D Disk Start            0000 (0)\n+21F29F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D436 Ext File Attributes   00000000 (0)\n-21D43A Local Header Offset   00064207 (410119)\n-21D43E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F2A1 Ext File Attributes   00000000 (0)\n+21F2A5 Local Header Offset   0008AB18 (568088)\n+21F2A9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D43E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F2A9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D45E CENTRAL HEADER #498   02014B50 (33639248)\n-21D462 Created Zip Spec      14 (20) '2.0'\n-21D463 Created OS            00 (0) 'MS-DOS'\n-21D464 Extract Zip Spec      14 (20) '2.0'\n-21D465 Extract OS            00 (0) 'MS-DOS'\n-21D466 General Purpose Flag  0808 (2056)\n+21F2D6 CENTRAL HEADER #498   02014B50 (33639248)\n+21F2DA Created Zip Spec      14 (20) '2.0'\n+21F2DB Created OS            00 (0) 'MS-DOS'\n+21F2DC Extract Zip Spec      14 (20) '2.0'\n+21F2DD Extract OS            00 (0) 'MS-DOS'\n+21F2DE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D468 Compression Method    0008 (8) 'Deflated'\n-21D46A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D46E CRC                   E6F6EE92 (3874942610)\n-21D472 Compressed Size       00000984 (2436)\n-21D476 Uncompressed Size     00003564 (13668)\n-21D47A Filename Length       0027 (39)\n-21D47C Extra Length          0000 (0)\n-21D47E Comment Length        0000 (0)\n-21D480 Disk Start            0000 (0)\n-21D482 Int File Attributes   0000 (0)\n+21F2E0 Compression Method    0008 (8) 'Deflated'\n+21F2E2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F2E6 CRC                   49173B6A (1226259306)\n+21F2EA Compressed Size       00000B30 (2864)\n+21F2EE Uncompressed Size     00002D62 (11618)\n+21F2F2 Filename Length       0032 (50)\n+21F2F4 Extra Length          0000 (0)\n+21F2F6 Comment Length        0000 (0)\n+21F2F8 Disk Start            0000 (0)\n+21F2FA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D484 Ext File Attributes   00000000 (0)\n-21D488 Local Header Offset   000668B6 (420022)\n-21D48C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F2FC Ext File Attributes   00000000 (0)\n+21F300 Local Header Offset   0008BCE3 (572643)\n+21F304 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D48C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F304: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D4B3 CENTRAL HEADER #499   02014B50 (33639248)\n-21D4B7 Created Zip Spec      14 (20) '2.0'\n-21D4B8 Created OS            00 (0) 'MS-DOS'\n-21D4B9 Extract Zip Spec      14 (20) '2.0'\n-21D4BA Extract OS            00 (0) 'MS-DOS'\n-21D4BB General Purpose Flag  0808 (2056)\n+21F336 CENTRAL HEADER #499   02014B50 (33639248)\n+21F33A Created Zip Spec      14 (20) '2.0'\n+21F33B Created OS            00 (0) 'MS-DOS'\n+21F33C Extract Zip Spec      14 (20) '2.0'\n+21F33D Extract OS            00 (0) 'MS-DOS'\n+21F33E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D4BD Compression Method    0008 (8) 'Deflated'\n-21D4BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D4C3 CRC                   8B1361FF (2333303295)\n-21D4C7 Compressed Size       00000BD3 (3027)\n-21D4CB Uncompressed Size     000034A1 (13473)\n-21D4CF Filename Length       0029 (41)\n-21D4D1 Extra Length          0000 (0)\n-21D4D3 Comment Length        0000 (0)\n-21D4D5 Disk Start            0000 (0)\n-21D4D7 Int File Attributes   0000 (0)\n+21F340 Compression Method    0008 (8) 'Deflated'\n+21F342 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F346 CRC                   8D8AC97C (2374683004)\n+21F34A Compressed Size       000008D2 (2258)\n+21F34E Uncompressed Size     00002443 (9283)\n+21F352 Filename Length       0036 (54)\n+21F354 Extra Length          0000 (0)\n+21F356 Comment Length        0000 (0)\n+21F358 Disk Start            0000 (0)\n+21F35A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D4D9 Ext File Attributes   00000000 (0)\n-21D4DD Local Header Offset   0006728F (422543)\n-21D4E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F35C Ext File Attributes   00000000 (0)\n+21F360 Local Header Offset   0008C873 (575603)\n+21F364 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D4E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F364: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D50A CENTRAL HEADER #500   02014B50 (33639248)\n-21D50E Created Zip Spec      14 (20) '2.0'\n-21D50F Created OS            00 (0) 'MS-DOS'\n-21D510 Extract Zip Spec      14 (20) '2.0'\n-21D511 Extract OS            00 (0) 'MS-DOS'\n-21D512 General Purpose Flag  0808 (2056)\n+21F39A CENTRAL HEADER #500   02014B50 (33639248)\n+21F39E Created Zip Spec      14 (20) '2.0'\n+21F39F Created OS            00 (0) 'MS-DOS'\n+21F3A0 Extract Zip Spec      14 (20) '2.0'\n+21F3A1 Extract OS            00 (0) 'MS-DOS'\n+21F3A2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D514 Compression Method    0008 (8) 'Deflated'\n-21D516 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D51A CRC                   F43D3BE1 (4097653729)\n-21D51E Compressed Size       00000B7F (2943)\n-21D522 Uncompressed Size     00002625 (9765)\n-21D526 Filename Length       0024 (36)\n-21D528 Extra Length          0000 (0)\n-21D52A Comment Length        0000 (0)\n-21D52C Disk Start            0000 (0)\n-21D52E Int File Attributes   0000 (0)\n+21F3A4 Compression Method    0008 (8) 'Deflated'\n+21F3A6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F3AA CRC                   0EFD7C48 (251493448)\n+21F3AE Compressed Size       00000593 (1427)\n+21F3B2 Uncompressed Size     000011C9 (4553)\n+21F3B6 Filename Length       0034 (52)\n+21F3B8 Extra Length          0000 (0)\n+21F3BA Comment Length        0000 (0)\n+21F3BC Disk Start            0000 (0)\n+21F3BE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D530 Ext File Attributes   00000000 (0)\n-21D534 Local Header Offset   00067EB9 (425657)\n-21D538 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F3C0 Ext File Attributes   00000000 (0)\n+21F3C4 Local Header Offset   0008D1A9 (577961)\n+21F3C8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D538: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F3C8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D55C CENTRAL HEADER #501   02014B50 (33639248)\n-21D560 Created Zip Spec      14 (20) '2.0'\n-21D561 Created OS            00 (0) 'MS-DOS'\n-21D562 Extract Zip Spec      14 (20) '2.0'\n-21D563 Extract OS            00 (0) 'MS-DOS'\n-21D564 General Purpose Flag  0808 (2056)\n+21F3FC CENTRAL HEADER #501   02014B50 (33639248)\n+21F400 Created Zip Spec      14 (20) '2.0'\n+21F401 Created OS            00 (0) 'MS-DOS'\n+21F402 Extract Zip Spec      14 (20) '2.0'\n+21F403 Extract OS            00 (0) 'MS-DOS'\n+21F404 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D566 Compression Method    0008 (8) 'Deflated'\n-21D568 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D56C CRC                   00000000 (0)\n-21D570 Compressed Size       00000002 (2)\n-21D574 Uncompressed Size     00000000 (0)\n-21D578 Filename Length       0021 (33)\n-21D57A Extra Length          0000 (0)\n-21D57C Comment Length        0000 (0)\n-21D57E Disk Start            0000 (0)\n-21D580 Int File Attributes   0000 (0)\n+21F406 Compression Method    0008 (8) 'Deflated'\n+21F408 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F40C CRC                   8CFD4A70 (2365409904)\n+21F410 Compressed Size       00000C76 (3190)\n+21F414 Uncompressed Size     00002FB5 (12213)\n+21F418 Filename Length       002E (46)\n+21F41A Extra Length          0000 (0)\n+21F41C Comment Length        0000 (0)\n+21F41E Disk Start            0000 (0)\n+21F420 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D582 Ext File Attributes   00000000 (0)\n-21D586 Local Header Offset   00068A8A (428682)\n-21D58A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F422 Ext File Attributes   00000000 (0)\n+21F426 Local Header Offset   0008D79E (579486)\n+21F42A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D58A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F42A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D5AB CENTRAL HEADER #502   02014B50 (33639248)\n-21D5AF Created Zip Spec      14 (20) '2.0'\n-21D5B0 Created OS            00 (0) 'MS-DOS'\n-21D5B1 Extract Zip Spec      14 (20) '2.0'\n-21D5B2 Extract OS            00 (0) 'MS-DOS'\n-21D5B3 General Purpose Flag  0808 (2056)\n+21F458 CENTRAL HEADER #502   02014B50 (33639248)\n+21F45C Created Zip Spec      14 (20) '2.0'\n+21F45D Created OS            00 (0) 'MS-DOS'\n+21F45E Extract Zip Spec      14 (20) '2.0'\n+21F45F Extract OS            00 (0) 'MS-DOS'\n+21F460 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D5B5 Compression Method    0008 (8) 'Deflated'\n-21D5B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D5BB CRC                   62810B39 (1652624185)\n-21D5BF Compressed Size       0000027B (635)\n-21D5C3 Uncompressed Size     00000554 (1364)\n-21D5C7 Filename Length       0036 (54)\n-21D5C9 Extra Length          0000 (0)\n-21D5CB Comment Length        0000 (0)\n-21D5CD Disk Start            0000 (0)\n-21D5CF Int File Attributes   0000 (0)\n+21F462 Compression Method    0008 (8) 'Deflated'\n+21F464 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F468 CRC                   F982D49E (4186100894)\n+21F46C Compressed Size       0000037B (891)\n+21F470 Uncompressed Size     000008F6 (2294)\n+21F474 Filename Length       002E (46)\n+21F476 Extra Length          0000 (0)\n+21F478 Comment Length        0000 (0)\n+21F47A Disk Start            0000 (0)\n+21F47C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D5D1 Ext File Attributes   00000000 (0)\n-21D5D5 Local Header Offset   00068ADB (428763)\n-21D5D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F47E Ext File Attributes   00000000 (0)\n+21F482 Local Header Offset   0008E470 (582768)\n+21F486 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D5D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F486: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D60F CENTRAL HEADER #503   02014B50 (33639248)\n-21D613 Created Zip Spec      14 (20) '2.0'\n-21D614 Created OS            00 (0) 'MS-DOS'\n-21D615 Extract Zip Spec      14 (20) '2.0'\n-21D616 Extract OS            00 (0) 'MS-DOS'\n-21D617 General Purpose Flag  0808 (2056)\n+21F4B4 CENTRAL HEADER #503   02014B50 (33639248)\n+21F4B8 Created Zip Spec      14 (20) '2.0'\n+21F4B9 Created OS            00 (0) 'MS-DOS'\n+21F4BA Extract Zip Spec      14 (20) '2.0'\n+21F4BB Extract OS            00 (0) 'MS-DOS'\n+21F4BC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D619 Compression Method    0008 (8) 'Deflated'\n-21D61B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D61F CRC                   F49AF035 (4103794741)\n-21D623 Compressed Size       0000065D (1629)\n-21D627 Uncompressed Size     000018A5 (6309)\n-21D62B Filename Length       0038 (56)\n-21D62D Extra Length          0000 (0)\n-21D62F Comment Length        0000 (0)\n-21D631 Disk Start            0000 (0)\n-21D633 Int File Attributes   0000 (0)\n+21F4BE Compression Method    0008 (8) 'Deflated'\n+21F4C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F4C4 CRC                   831A7179 (2199548281)\n+21F4C8 Compressed Size       0000036D (877)\n+21F4CC Uncompressed Size     0000080F (2063)\n+21F4D0 Filename Length       0030 (48)\n+21F4D2 Extra Length          0000 (0)\n+21F4D4 Comment Length        0000 (0)\n+21F4D6 Disk Start            0000 (0)\n+21F4D8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D635 Ext File Attributes   00000000 (0)\n-21D639 Local Header Offset   00068DBA (429498)\n-21D63D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F4DA Ext File Attributes   00000000 (0)\n+21F4DE Local Header Offset   0008E847 (583751)\n+21F4E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D63D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F4E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D675 CENTRAL HEADER #504   02014B50 (33639248)\n-21D679 Created Zip Spec      14 (20) '2.0'\n-21D67A Created OS            00 (0) 'MS-DOS'\n-21D67B Extract Zip Spec      14 (20) '2.0'\n-21D67C Extract OS            00 (0) 'MS-DOS'\n-21D67D General Purpose Flag  0808 (2056)\n+21F512 CENTRAL HEADER #504   02014B50 (33639248)\n+21F516 Created Zip Spec      14 (20) '2.0'\n+21F517 Created OS            00 (0) 'MS-DOS'\n+21F518 Extract Zip Spec      14 (20) '2.0'\n+21F519 Extract OS            00 (0) 'MS-DOS'\n+21F51A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D67F Compression Method    0008 (8) 'Deflated'\n-21D681 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D685 CRC                   11EE6DF6 (300838390)\n-21D689 Compressed Size       00000EF2 (3826)\n-21D68D Uncompressed Size     00004ECE (20174)\n-21D691 Filename Length       003B (59)\n-21D693 Extra Length          0000 (0)\n-21D695 Comment Length        0000 (0)\n-21D697 Disk Start            0000 (0)\n-21D699 Int File Attributes   0000 (0)\n+21F51C Compression Method    0008 (8) 'Deflated'\n+21F51E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F522 CRC                   239B6511 (597386513)\n+21F526 Compressed Size       0000064E (1614)\n+21F52A Uncompressed Size     000014C9 (5321)\n+21F52E Filename Length       002F (47)\n+21F530 Extra Length          0000 (0)\n+21F532 Comment Length        0000 (0)\n+21F534 Disk Start            0000 (0)\n+21F536 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D69B Ext File Attributes   00000000 (0)\n-21D69F Local Header Offset   0006947D (431229)\n-21D6A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F538 Ext File Attributes   00000000 (0)\n+21F53C Local Header Offset   0008EC12 (584722)\n+21F540 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D6A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F540: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D6DE CENTRAL HEADER #505   02014B50 (33639248)\n-21D6E2 Created Zip Spec      14 (20) '2.0'\n-21D6E3 Created OS            00 (0) 'MS-DOS'\n-21D6E4 Extract Zip Spec      14 (20) '2.0'\n-21D6E5 Extract OS            00 (0) 'MS-DOS'\n-21D6E6 General Purpose Flag  0808 (2056)\n+21F56F CENTRAL HEADER #505   02014B50 (33639248)\n+21F573 Created Zip Spec      14 (20) '2.0'\n+21F574 Created OS            00 (0) 'MS-DOS'\n+21F575 Extract Zip Spec      14 (20) '2.0'\n+21F576 Extract OS            00 (0) 'MS-DOS'\n+21F577 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D6E8 Compression Method    0008 (8) 'Deflated'\n-21D6EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D6EE CRC                   00000000 (0)\n-21D6F2 Compressed Size       00000002 (2)\n-21D6F6 Uncompressed Size     00000000 (0)\n-21D6FA Filename Length       0021 (33)\n-21D6FC Extra Length          0000 (0)\n-21D6FE Comment Length        0000 (0)\n-21D700 Disk Start            0000 (0)\n-21D702 Int File Attributes   0000 (0)\n+21F579 Compression Method    0008 (8) 'Deflated'\n+21F57B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F57F CRC                   CB16D394 (3407270804)\n+21F583 Compressed Size       000004D2 (1234)\n+21F587 Uncompressed Size     000013CF (5071)\n+21F58B Filename Length       002D (45)\n+21F58D Extra Length          0000 (0)\n+21F58F Comment Length        0000 (0)\n+21F591 Disk Start            0000 (0)\n+21F593 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D704 Ext File Attributes   00000000 (0)\n-21D708 Local Header Offset   0006A3D8 (435160)\n-21D70C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F595 Ext File Attributes   00000000 (0)\n+21F599 Local Header Offset   0008F2BD (586429)\n+21F59D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D70C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F59D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D72D CENTRAL HEADER #506   02014B50 (33639248)\n-21D731 Created Zip Spec      14 (20) '2.0'\n-21D732 Created OS            00 (0) 'MS-DOS'\n-21D733 Extract Zip Spec      14 (20) '2.0'\n-21D734 Extract OS            00 (0) 'MS-DOS'\n-21D735 General Purpose Flag  0808 (2056)\n+21F5CA CENTRAL HEADER #506   02014B50 (33639248)\n+21F5CE Created Zip Spec      14 (20) '2.0'\n+21F5CF Created OS            00 (0) 'MS-DOS'\n+21F5D0 Extract Zip Spec      14 (20) '2.0'\n+21F5D1 Extract OS            00 (0) 'MS-DOS'\n+21F5D2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D737 Compression Method    0008 (8) 'Deflated'\n-21D739 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D73D CRC                   87F19404 (2280756228)\n-21D741 Compressed Size       00000AF9 (2809)\n-21D745 Uncompressed Size     000032DF (13023)\n-21D749 Filename Length       0034 (52)\n-21D74B Extra Length          0000 (0)\n-21D74D Comment Length        0000 (0)\n-21D74F Disk Start            0000 (0)\n-21D751 Int File Attributes   0000 (0)\n+21F5D4 Compression Method    0008 (8) 'Deflated'\n+21F5D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F5DA CRC                   4E3FC833 (1312802867)\n+21F5DE Compressed Size       0000024E (590)\n+21F5E2 Uncompressed Size     00000443 (1091)\n+21F5E6 Filename Length       0029 (41)\n+21F5E8 Extra Length          0000 (0)\n+21F5EA Comment Length        0000 (0)\n+21F5EC Disk Start            0000 (0)\n+21F5EE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D753 Ext File Attributes   00000000 (0)\n-21D757 Local Header Offset   0006A429 (435241)\n-21D75B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F5F0 Ext File Attributes   00000000 (0)\n+21F5F4 Local Header Offset   0008F7EA (587754)\n+21F5F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D75B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F5F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D78F CENTRAL HEADER #507   02014B50 (33639248)\n-21D793 Created Zip Spec      14 (20) '2.0'\n-21D794 Created OS            00 (0) 'MS-DOS'\n-21D795 Extract Zip Spec      14 (20) '2.0'\n-21D796 Extract OS            00 (0) 'MS-DOS'\n-21D797 General Purpose Flag  0808 (2056)\n+21F621 CENTRAL HEADER #507   02014B50 (33639248)\n+21F625 Created Zip Spec      14 (20) '2.0'\n+21F626 Created OS            00 (0) 'MS-DOS'\n+21F627 Extract Zip Spec      14 (20) '2.0'\n+21F628 Extract OS            00 (0) 'MS-DOS'\n+21F629 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D799 Compression Method    0008 (8) 'Deflated'\n-21D79B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D79F CRC                   AA2CE6AF (2855069359)\n-21D7A3 Compressed Size       000004D5 (1237)\n-21D7A7 Uncompressed Size     00000DB2 (3506)\n-21D7AB Filename Length       003F (63)\n-21D7AD Extra Length          0000 (0)\n-21D7AF Comment Length        0000 (0)\n-21D7B1 Disk Start            0000 (0)\n-21D7B3 Int File Attributes   0000 (0)\n+21F62B Compression Method    0008 (8) 'Deflated'\n+21F62D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F631 CRC                   7A9C058A (2057045386)\n+21F635 Compressed Size       00000815 (2069)\n+21F639 Uncompressed Size     00002117 (8471)\n+21F63D Filename Length       002A (42)\n+21F63F Extra Length          0000 (0)\n+21F641 Comment Length        0000 (0)\n+21F643 Disk Start            0000 (0)\n+21F645 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D7B5 Ext File Attributes   00000000 (0)\n-21D7B9 Local Header Offset   0006AF84 (438148)\n-21D7BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F647 Ext File Attributes   00000000 (0)\n+21F64B Local Header Offset   0008FA8F (588431)\n+21F64F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D7BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F64F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D7FC CENTRAL HEADER #508   02014B50 (33639248)\n-21D800 Created Zip Spec      14 (20) '2.0'\n-21D801 Created OS            00 (0) 'MS-DOS'\n-21D802 Extract Zip Spec      14 (20) '2.0'\n-21D803 Extract OS            00 (0) 'MS-DOS'\n-21D804 General Purpose Flag  0808 (2056)\n+21F679 CENTRAL HEADER #508   02014B50 (33639248)\n+21F67D Created Zip Spec      14 (20) '2.0'\n+21F67E Created OS            00 (0) 'MS-DOS'\n+21F67F Extract Zip Spec      14 (20) '2.0'\n+21F680 Extract OS            00 (0) 'MS-DOS'\n+21F681 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D806 Compression Method    0008 (8) 'Deflated'\n-21D808 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D80C CRC                   4F0E9D5D (1326357853)\n-21D810 Compressed Size       00000852 (2130)\n-21D814 Uncompressed Size     00002017 (8215)\n-21D818 Filename Length       002B (43)\n-21D81A Extra Length          0000 (0)\n-21D81C Comment Length        0000 (0)\n-21D81E Disk Start            0000 (0)\n-21D820 Int File Attributes   0000 (0)\n+21F683 Compression Method    0008 (8) 'Deflated'\n+21F685 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F689 CRC                   A4F19F22 (2767298338)\n+21F68D Compressed Size       000004FE (1278)\n+21F691 Uncompressed Size     0000104C (4172)\n+21F695 Filename Length       002A (42)\n+21F697 Extra Length          0000 (0)\n+21F699 Comment Length        0000 (0)\n+21F69B Disk Start            0000 (0)\n+21F69D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D822 Ext File Attributes   00000000 (0)\n-21D826 Local Header Offset   0006B4C6 (439494)\n-21D82A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F69F Ext File Attributes   00000000 (0)\n+21F6A3 Local Header Offset   000902FC (590588)\n+21F6A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D82A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F6A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D855 CENTRAL HEADER #509   02014B50 (33639248)\n-21D859 Created Zip Spec      14 (20) '2.0'\n-21D85A Created OS            00 (0) 'MS-DOS'\n-21D85B Extract Zip Spec      14 (20) '2.0'\n-21D85C Extract OS            00 (0) 'MS-DOS'\n-21D85D General Purpose Flag  0808 (2056)\n+21F6D1 CENTRAL HEADER #509   02014B50 (33639248)\n+21F6D5 Created Zip Spec      14 (20) '2.0'\n+21F6D6 Created OS            00 (0) 'MS-DOS'\n+21F6D7 Extract Zip Spec      14 (20) '2.0'\n+21F6D8 Extract OS            00 (0) 'MS-DOS'\n+21F6D9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D85F Compression Method    0008 (8) 'Deflated'\n-21D861 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D865 CRC                   35B34ECC (900943564)\n-21D869 Compressed Size       00000276 (630)\n-21D86D Uncompressed Size     0000049E (1182)\n-21D871 Filename Length       003B (59)\n-21D873 Extra Length          0000 (0)\n-21D875 Comment Length        0000 (0)\n-21D877 Disk Start            0000 (0)\n-21D879 Int File Attributes   0000 (0)\n+21F6DB Compression Method    0008 (8) 'Deflated'\n+21F6DD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F6E1 CRC                   CBBE6E80 (3418254976)\n+21F6E5 Compressed Size       0000095E (2398)\n+21F6E9 Uncompressed Size     00002283 (8835)\n+21F6ED Filename Length       002B (43)\n+21F6EF Extra Length          0000 (0)\n+21F6F1 Comment Length        0000 (0)\n+21F6F3 Disk Start            0000 (0)\n+21F6F5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D87B Ext File Attributes   00000000 (0)\n-21D87F Local Header Offset   0006BD71 (441713)\n-21D883 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F6F7 Ext File Attributes   00000000 (0)\n+21F6FB Local Header Offset   00090852 (591954)\n+21F6FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D883: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F6FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D8BE CENTRAL HEADER #510   02014B50 (33639248)\n-21D8C2 Created Zip Spec      14 (20) '2.0'\n-21D8C3 Created OS            00 (0) 'MS-DOS'\n-21D8C4 Extract Zip Spec      14 (20) '2.0'\n-21D8C5 Extract OS            00 (0) 'MS-DOS'\n-21D8C6 General Purpose Flag  0808 (2056)\n+21F72A CENTRAL HEADER #510   02014B50 (33639248)\n+21F72E Created Zip Spec      14 (20) '2.0'\n+21F72F Created OS            00 (0) 'MS-DOS'\n+21F730 Extract Zip Spec      14 (20) '2.0'\n+21F731 Extract OS            00 (0) 'MS-DOS'\n+21F732 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D8C8 Compression Method    0008 (8) 'Deflated'\n-21D8CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D8CE CRC                   AE36D6DB (2922829531)\n-21D8D2 Compressed Size       00000275 (629)\n-21D8D6 Uncompressed Size     000004A6 (1190)\n-21D8DA Filename Length       003D (61)\n-21D8DC Extra Length          0000 (0)\n-21D8DE Comment Length        0000 (0)\n-21D8E0 Disk Start            0000 (0)\n-21D8E2 Int File Attributes   0000 (0)\n+21F734 Compression Method    0008 (8) 'Deflated'\n+21F736 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F73A CRC                   139F375C (329201500)\n+21F73E Compressed Size       000003DF (991)\n+21F742 Uncompressed Size     00000BC2 (3010)\n+21F746 Filename Length       002B (43)\n+21F748 Extra Length          0000 (0)\n+21F74A Comment Length        0000 (0)\n+21F74C Disk Start            0000 (0)\n+21F74E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D8E4 Ext File Attributes   00000000 (0)\n-21D8E8 Local Header Offset   0006C050 (442448)\n-21D8EC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F750 Ext File Attributes   00000000 (0)\n+21F754 Local Header Offset   00091209 (594441)\n+21F758 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D8EC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F758: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D929 CENTRAL HEADER #511   02014B50 (33639248)\n-21D92D Created Zip Spec      14 (20) '2.0'\n-21D92E Created OS            00 (0) 'MS-DOS'\n-21D92F Extract Zip Spec      14 (20) '2.0'\n-21D930 Extract OS            00 (0) 'MS-DOS'\n-21D931 General Purpose Flag  0808 (2056)\n+21F783 CENTRAL HEADER #511   02014B50 (33639248)\n+21F787 Created Zip Spec      14 (20) '2.0'\n+21F788 Created OS            00 (0) 'MS-DOS'\n+21F789 Extract Zip Spec      14 (20) '2.0'\n+21F78A Extract OS            00 (0) 'MS-DOS'\n+21F78B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D933 Compression Method    0008 (8) 'Deflated'\n-21D935 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D939 CRC                   693DBCBA (1765653690)\n-21D93D Compressed Size       00000C43 (3139)\n-21D941 Uncompressed Size     00002F4D (12109)\n-21D945 Filename Length       002B (43)\n-21D947 Extra Length          0000 (0)\n-21D949 Comment Length        0000 (0)\n-21D94B Disk Start            0000 (0)\n-21D94D Int File Attributes   0000 (0)\n+21F78D Compression Method    0008 (8) 'Deflated'\n+21F78F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F793 CRC                   C39767CB (3281479627)\n+21F797 Compressed Size       0000040F (1039)\n+21F79B Uncompressed Size     00000DAA (3498)\n+21F79F Filename Length       0026 (38)\n+21F7A1 Extra Length          0000 (0)\n+21F7A3 Comment Length        0000 (0)\n+21F7A5 Disk Start            0000 (0)\n+21F7A7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D94F Ext File Attributes   00000000 (0)\n-21D953 Local Header Offset   0006C330 (443184)\n-21D957 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F7A9 Ext File Attributes   00000000 (0)\n+21F7AD Local Header Offset   00091641 (595521)\n+21F7B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D957: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F7B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D982 CENTRAL HEADER #512   02014B50 (33639248)\n-21D986 Created Zip Spec      14 (20) '2.0'\n-21D987 Created OS            00 (0) 'MS-DOS'\n-21D988 Extract Zip Spec      14 (20) '2.0'\n-21D989 Extract OS            00 (0) 'MS-DOS'\n-21D98A General Purpose Flag  0808 (2056)\n+21F7D7 CENTRAL HEADER #512   02014B50 (33639248)\n+21F7DB Created Zip Spec      14 (20) '2.0'\n+21F7DC Created OS            00 (0) 'MS-DOS'\n+21F7DD Extract Zip Spec      14 (20) '2.0'\n+21F7DE Extract OS            00 (0) 'MS-DOS'\n+21F7DF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D98C Compression Method    0008 (8) 'Deflated'\n-21D98E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D992 CRC                   44BCC62B (1153222187)\n-21D996 Compressed Size       00000F74 (3956)\n-21D99A Uncompressed Size     00004608 (17928)\n-21D99E Filename Length       002D (45)\n-21D9A0 Extra Length          0000 (0)\n-21D9A2 Comment Length        0000 (0)\n-21D9A4 Disk Start            0000 (0)\n-21D9A6 Int File Attributes   0000 (0)\n+21F7E1 Compression Method    0008 (8) 'Deflated'\n+21F7E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F7E7 CRC                   0C719C80 (208772224)\n+21F7EB Compressed Size       00000307 (775)\n+21F7EF Uncompressed Size     000010C1 (4289)\n+21F7F3 Filename Length       002C (44)\n+21F7F5 Extra Length          0000 (0)\n+21F7F7 Comment Length        0000 (0)\n+21F7F9 Disk Start            0000 (0)\n+21F7FB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21D9A8 Ext File Attributes   00000000 (0)\n-21D9AC Local Header Offset   0006CFCC (446412)\n-21D9B0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F7FD Ext File Attributes   00000000 (0)\n+21F801 Local Header Offset   00091AA4 (596644)\n+21F805 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21D9B0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F805: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21D9DD CENTRAL HEADER #513   02014B50 (33639248)\n-21D9E1 Created Zip Spec      14 (20) '2.0'\n-21D9E2 Created OS            00 (0) 'MS-DOS'\n-21D9E3 Extract Zip Spec      14 (20) '2.0'\n-21D9E4 Extract OS            00 (0) 'MS-DOS'\n-21D9E5 General Purpose Flag  0808 (2056)\n+21F831 CENTRAL HEADER #513   02014B50 (33639248)\n+21F835 Created Zip Spec      14 (20) '2.0'\n+21F836 Created OS            00 (0) 'MS-DOS'\n+21F837 Extract Zip Spec      14 (20) '2.0'\n+21F838 Extract OS            00 (0) 'MS-DOS'\n+21F839 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21D9E7 Compression Method    0008 (8) 'Deflated'\n-21D9E9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21D9ED CRC                   00000000 (0)\n-21D9F1 Compressed Size       00000002 (2)\n-21D9F5 Uncompressed Size     00000000 (0)\n-21D9F9 Filename Length       0021 (33)\n-21D9FB Extra Length          0000 (0)\n-21D9FD Comment Length        0000 (0)\n-21D9FF Disk Start            0000 (0)\n-21DA01 Int File Attributes   0000 (0)\n+21F83B Compression Method    0008 (8) 'Deflated'\n+21F83D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F841 CRC                   4A73FA6D (1249114733)\n+21F845 Compressed Size       00000441 (1089)\n+21F849 Uncompressed Size     000010A2 (4258)\n+21F84D Filename Length       002A (42)\n+21F84F Extra Length          0000 (0)\n+21F851 Comment Length        0000 (0)\n+21F853 Disk Start            0000 (0)\n+21F855 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21DA03 Ext File Attributes   00000000 (0)\n-21DA07 Local Header Offset   0006DF9B (450459)\n-21DA0B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F857 Ext File Attributes   00000000 (0)\n+21F85B Local Header Offset   00091E05 (597509)\n+21F85F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21DA0B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F85F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21DA2C CENTRAL HEADER #514   02014B50 (33639248)\n-21DA30 Created Zip Spec      14 (20) '2.0'\n-21DA31 Created OS            00 (0) 'MS-DOS'\n-21DA32 Extract Zip Spec      14 (20) '2.0'\n-21DA33 Extract OS            00 (0) 'MS-DOS'\n-21DA34 General Purpose Flag  0808 (2056)\n+21F889 CENTRAL HEADER #514   02014B50 (33639248)\n+21F88D Created Zip Spec      14 (20) '2.0'\n+21F88E Created OS            00 (0) 'MS-DOS'\n+21F88F Extract Zip Spec      14 (20) '2.0'\n+21F890 Extract OS            00 (0) 'MS-DOS'\n+21F891 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21DA36 Compression Method    0008 (8) 'Deflated'\n-21DA38 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21DA3C CRC                   01EEDE5E (32431710)\n-21DA40 Compressed Size       0000028F (655)\n-21DA44 Uncompressed Size     000004E7 (1255)\n-21DA48 Filename Length       002E (46)\n-21DA4A Extra Length          0000 (0)\n-21DA4C Comment Length        0000 (0)\n-21DA4E Disk Start            0000 (0)\n-21DA50 Int File Attributes   0000 (0)\n+21F893 Compression Method    0008 (8) 'Deflated'\n+21F895 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F899 CRC                   FE0FBB73 (4262443891)\n+21F89D Compressed Size       0000033B (827)\n+21F8A1 Uncompressed Size     0000099D (2461)\n+21F8A5 Filename Length       002E (46)\n+21F8A7 Extra Length          0000 (0)\n+21F8A9 Comment Length        0000 (0)\n+21F8AB Disk Start            0000 (0)\n+21F8AD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21DA52 Ext File Attributes   00000000 (0)\n-21DA56 Local Header Offset   0006DFEC (450540)\n-21DA5A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F8AF Ext File Attributes   00000000 (0)\n+21F8B3 Local Header Offset   0009229E (598686)\n+21F8B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21DA5A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F8B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21DA88 CENTRAL HEADER #515   02014B50 (33639248)\n-21DA8C Created Zip Spec      14 (20) '2.0'\n-21DA8D Created OS            00 (0) 'MS-DOS'\n-21DA8E Extract Zip Spec      14 (20) '2.0'\n-21DA8F Extract OS            00 (0) 'MS-DOS'\n-21DA90 General Purpose Flag  0808 (2056)\n+21F8E5 CENTRAL HEADER #515   02014B50 (33639248)\n+21F8E9 Created Zip Spec      14 (20) '2.0'\n+21F8EA Created OS            00 (0) 'MS-DOS'\n+21F8EB Extract Zip Spec      14 (20) '2.0'\n+21F8EC Extract OS            00 (0) 'MS-DOS'\n+21F8ED General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21DA92 Compression Method    0008 (8) 'Deflated'\n-21DA94 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21DA98 CRC                   00000000 (0)\n-21DA9C Compressed Size       00000002 (2)\n-21DAA0 Uncompressed Size     00000000 (0)\n-21DAA4 Filename Length       0029 (41)\n-21DAA6 Extra Length          0000 (0)\n-21DAA8 Comment Length        0000 (0)\n-21DAAA Disk Start            0000 (0)\n-21DAAC Int File Attributes   0000 (0)\n+21F8EF Compression Method    0008 (8) 'Deflated'\n+21F8F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F8F5 CRC                   F18EE811 (4052674577)\n+21F8F9 Compressed Size       000003F5 (1013)\n+21F8FD Uncompressed Size     00000980 (2432)\n+21F901 Filename Length       0033 (51)\n+21F903 Extra Length          0000 (0)\n+21F905 Comment Length        0000 (0)\n+21F907 Disk Start            0000 (0)\n+21F909 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21DAAE Ext File Attributes   00000000 (0)\n-21DAB2 Local Header Offset   0006E2D7 (451287)\n-21DAB6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F90B Ext File Attributes   00000000 (0)\n+21F90F Local Header Offset   00092635 (599605)\n+21F913 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21DAB6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F913: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21DADF CENTRAL HEADER #516   02014B50 (33639248)\n-21DAE3 Created Zip Spec      14 (20) '2.0'\n-21DAE4 Created OS            00 (0) 'MS-DOS'\n-21DAE5 Extract Zip Spec      14 (20) '2.0'\n-21DAE6 Extract OS            00 (0) 'MS-DOS'\n-21DAE7 General Purpose Flag  0808 (2056)\n+21F946 CENTRAL HEADER #516   02014B50 (33639248)\n+21F94A Created Zip Spec      14 (20) '2.0'\n+21F94B Created OS            00 (0) 'MS-DOS'\n+21F94C Extract Zip Spec      14 (20) '2.0'\n+21F94D Extract OS            00 (0) 'MS-DOS'\n+21F94E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21DAE9 Compression Method    0008 (8) 'Deflated'\n-21DAEB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21DAEF CRC                   20854F04 (545607428)\n-21DAF3 Compressed Size       00000490 (1168)\n-21DAF7 Uncompressed Size     00000B1B (2843)\n-21DAFB Filename Length       003E (62)\n-21DAFD Extra Length          0000 (0)\n-21DAFF Comment Length        0000 (0)\n-21DB01 Disk Start            0000 (0)\n-21DB03 Int File Attributes   0000 (0)\n+21F950 Compression Method    0008 (8) 'Deflated'\n+21F952 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F956 CRC                   3744AF68 (927248232)\n+21F95A Compressed Size       00000C9B (3227)\n+21F95E Uncompressed Size     00003B50 (15184)\n+21F962 Filename Length       002E (46)\n+21F964 Extra Length          0000 (0)\n+21F966 Comment Length        0000 (0)\n+21F968 Disk Start            0000 (0)\n+21F96A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21DB05 Ext File Attributes   00000000 (0)\n-21DB09 Local Header Offset   0006E330 (451376)\n-21DB0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F96C Ext File Attributes   00000000 (0)\n+21F970 Local Header Offset   00092A8B (600715)\n+21F974 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21DB0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F974: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21DB4B CENTRAL HEADER #517   02014B50 (33639248)\n-21DB4F Created Zip Spec      14 (20) '2.0'\n-21DB50 Created OS            00 (0) 'MS-DOS'\n-21DB51 Extract Zip Spec      14 (20) '2.0'\n-21DB52 Extract OS            00 (0) 'MS-DOS'\n-21DB53 General Purpose Flag  0808 (2056)\n+21F9A2 CENTRAL HEADER #517   02014B50 (33639248)\n+21F9A6 Created Zip Spec      14 (20) '2.0'\n+21F9A7 Created OS            00 (0) 'MS-DOS'\n+21F9A8 Extract Zip Spec      14 (20) '2.0'\n+21F9A9 Extract OS            00 (0) 'MS-DOS'\n+21F9AA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21DB55 Compression Method    0008 (8) 'Deflated'\n-21DB57 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21DB5B CRC                   D19D012A (3516727594)\n-21DB5F Compressed Size       00000338 (824)\n-21DB63 Uncompressed Size     00000733 (1843)\n-21DB67 Filename Length       003E (62)\n-21DB69 Extra Length          0000 (0)\n-21DB6B Comment Length        0000 (0)\n-21DB6D Disk Start            0000 (0)\n-21DB6F Int File Attributes   0000 (0)\n+21F9AC Compression Method    0008 (8) 'Deflated'\n+21F9AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21F9B2 CRC                   A4EA9AD2 (2766838482)\n+21F9B6 Compressed Size       00000386 (902)\n+21F9BA Uncompressed Size     0000085B (2139)\n+21F9BE Filename Length       0035 (53)\n+21F9C0 Extra Length          0000 (0)\n+21F9C2 Comment Length        0000 (0)\n+21F9C4 Disk Start            0000 (0)\n+21F9C6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21DB71 Ext File Attributes   00000000 (0)\n-21DB75 Local Header Offset   0006E82C (452652)\n-21DB79 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21F9C8 Ext File Attributes   00000000 (0)\n+21F9CC Local Header Offset   00093782 (604034)\n+21F9D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21DB79: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21F9D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21DBB7 CENTRAL HEADER #518   02014B50 (33639248)\n-21DBBB Created Zip Spec      14 (20) '2.0'\n-21DBBC Created OS            00 (0) 'MS-DOS'\n-21DBBD Extract Zip Spec      14 (20) '2.0'\n-21DBBE Extract OS            00 (0) 'MS-DOS'\n-21DBBF General Purpose Flag  0808 (2056)\n+21FA05 CENTRAL HEADER #518   02014B50 (33639248)\n+21FA09 Created Zip Spec      14 (20) '2.0'\n+21FA0A Created OS            00 (0) 'MS-DOS'\n+21FA0B Extract Zip Spec      14 (20) '2.0'\n+21FA0C Extract OS            00 (0) 'MS-DOS'\n+21FA0D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21DBC1 Compression Method    0008 (8) 'Deflated'\n-21DBC3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21DBC7 CRC                   489CA2B6 (1218224822)\n-21DBCB Compressed Size       00000D33 (3379)\n-21DBCF Uncompressed Size     00003CC4 (15556)\n-21DBD3 Filename Length       0038 (56)\n-21DBD5 Extra Length          0000 (0)\n-21DBD7 Comment Length        0000 (0)\n-21DBD9 Disk Start            0000 (0)\n-21DBDB Int File Attributes   0000 (0)\n+21FA0F Compression Method    0008 (8) 'Deflated'\n+21FA11 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21FA15 CRC                   90514D51 (2421247313)\n+21FA19 Compressed Size       0000141B (5147)\n+21FA1D Uncompressed Size     00005DC7 (24007)\n+21FA21 Filename Length       002B (43)\n+21FA23 Extra Length          0000 (0)\n+21FA25 Comment Length        0000 (0)\n+21FA27 Disk Start            0000 (0)\n+21FA29 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21DBDD Ext File Attributes   00000000 (0)\n-21DBE1 Local Header Offset   0006EBD0 (453584)\n-21DBE5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21FA2B Ext File Attributes   00000000 (0)\n+21FA2F Local Header Offset   00093B6B (605035)\n+21FA33 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21DBE5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21FA33: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21DC1D CENTRAL HEADER #519   02014B50 (33639248)\n-21DC21 Created Zip Spec      14 (20) '2.0'\n-21DC22 Created OS            00 (0) 'MS-DOS'\n-21DC23 Extract Zip Spec      14 (20) '2.0'\n-21DC24 Extract OS            00 (0) 'MS-DOS'\n-21DC25 General Purpose Flag  0808 (2056)\n+21FA5E CENTRAL HEADER #519   02014B50 (33639248)\n+21FA62 Created Zip Spec      14 (20) '2.0'\n+21FA63 Created OS            00 (0) 'MS-DOS'\n+21FA64 Extract Zip Spec      14 (20) '2.0'\n+21FA65 Extract OS            00 (0) 'MS-DOS'\n+21FA66 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21DC27 Compression Method    0008 (8) 'Deflated'\n-21DC29 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21DC2D CRC                   BD63F8B8 (3177445560)\n-21DC31 Compressed Size       000005F8 (1528)\n-21DC35 Uncompressed Size     000013BA (5050)\n-21DC39 Filename Length       003C (60)\n-21DC3B Extra Length          0000 (0)\n-21DC3D Comment Length        0000 (0)\n-21DC3F Disk Start            0000 (0)\n-21DC41 Int File Attributes   0000 (0)\n+21FA68 Compression Method    0008 (8) 'Deflated'\n+21FA6A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21FA6E CRC                   3422DF4F (874700623)\n+21FA72 Compressed Size       0000036E (878)\n+21FA76 Uncompressed Size     0000086A (2154)\n+21FA7A Filename Length       0027 (39)\n+21FA7C Extra Length          0000 (0)\n+21FA7E Comment Length        0000 (0)\n+21FA80 Disk Start            0000 (0)\n+21FA82 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21DC43 Ext File Attributes   00000000 (0)\n-21DC47 Local Header Offset   0006F969 (457065)\n-21DC4B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21FA84 Ext File Attributes   00000000 (0)\n+21FA88 Local Header Offset   00094FDF (610271)\n+21FA8C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21DC4B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21FA8C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21DC87 CENTRAL HEADER #520   02014B50 (33639248)\n-21DC8B Created Zip Spec      14 (20) '2.0'\n-21DC8C Created OS            00 (0) 'MS-DOS'\n-21DC8D Extract Zip Spec      14 (20) '2.0'\n-21DC8E Extract OS            00 (0) 'MS-DOS'\n-21DC8F General Purpose Flag  0808 (2056)\n+21FAB3 CENTRAL HEADER #520   02014B50 (33639248)\n+21FAB7 Created Zip Spec      14 (20) '2.0'\n+21FAB8 Created OS            00 (0) 'MS-DOS'\n+21FAB9 Extract Zip Spec      14 (20) '2.0'\n+21FABA Extract OS            00 (0) 'MS-DOS'\n+21FABB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21DC91 Compression Method    0008 (8) 'Deflated'\n-21DC93 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21DC97 CRC                   C96B89A9 (3379268009)\n-21DC9B Compressed Size       0000053B (1339)\n-21DC9F Uncompressed Size     00000DB0 (3504)\n-21DCA3 Filename Length       003F (63)\n-21DCA5 Extra Length          0000 (0)\n-21DCA7 Comment Length        0000 (0)\n-21DCA9 Disk Start            0000 (0)\n-21DCAB Int File Attributes   0000 (0)\n+21FABD Compression Method    0008 (8) 'Deflated'\n+21FABF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21FAC3 CRC                   5087E57A (1351083386)\n+21FAC7 Compressed Size       000003F9 (1017)\n+21FACB Uncompressed Size     000009A4 (2468)\n+21FACF Filename Length       002C (44)\n+21FAD1 Extra Length          0000 (0)\n+21FAD3 Comment Length        0000 (0)\n+21FAD5 Disk Start            0000 (0)\n+21FAD7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21DCAD Ext File Attributes   00000000 (0)\n-21DCB1 Local Header Offset   0006FFCB (458699)\n-21DCB5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21FAD9 Ext File Attributes   00000000 (0)\n+21FADD Local Header Offset   000953A2 (611234)\n+21FAE1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21DCB5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21FAE1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21DCF4 CENTRAL HEADER #521   02014B50 (33639248)\n-21DCF8 Created Zip Spec      14 (20) '2.0'\n-21DCF9 Created OS            00 (0) 'MS-DOS'\n-21DCFA Extract Zip Spec      14 (20) '2.0'\n-21DCFB Extract OS            00 (0) 'MS-DOS'\n-21DCFC General Purpose Flag  0808 (2056)\n+21FB0D CENTRAL HEADER #521   02014B50 (33639248)\n+21FB11 Created Zip Spec      14 (20) '2.0'\n+21FB12 Created OS            00 (0) 'MS-DOS'\n+21FB13 Extract Zip Spec      14 (20) '2.0'\n+21FB14 Extract OS            00 (0) 'MS-DOS'\n+21FB15 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21DCFE Compression Method    0008 (8) 'Deflated'\n-21DD00 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21DD04 CRC                   3FE3ACCB (1071885515)\n-21DD08 Compressed Size       00000B15 (2837)\n-21DD0C Uncompressed Size     00002CC5 (11461)\n-21DD10 Filename Length       0039 (57)\n-21DD12 Extra Length          0000 (0)\n-21DD14 Comment Length        0000 (0)\n-21DD16 Disk Start            0000 (0)\n-21DD18 Int File Attributes   0000 (0)\n+21FB17 Compression Method    0008 (8) 'Deflated'\n+21FB19 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21FB1D CRC                   34D97477 (886666359)\n+21FB21 Compressed Size       000019E7 (6631)\n+21FB25 Uncompressed Size     00008320 (33568)\n+21FB29 Filename Length       002C (44)\n+21FB2B Extra Length          0000 (0)\n+21FB2D Comment Length        0000 (0)\n+21FB2F Disk Start            0000 (0)\n+21FB31 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21DD1A Ext File Attributes   00000000 (0)\n-21DD1E Local Header Offset   00070573 (460147)\n-21DD22 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21FB33 Ext File Attributes   00000000 (0)\n+21FB37 Local Header Offset   000957F5 (612341)\n+21FB3B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21DD22: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21FB3B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21DD5B CENTRAL HEADER #522   02014B50 (33639248)\n-21DD5F Created Zip Spec      14 (20) '2.0'\n-21DD60 Created OS            00 (0) 'MS-DOS'\n-21DD61 Extract Zip Spec      14 (20) '2.0'\n-21DD62 Extract OS            00 (0) 'MS-DOS'\n-21DD63 General Purpose Flag  0808 (2056)\n+21FB67 CENTRAL HEADER #522   02014B50 (33639248)\n+21FB6B Created Zip Spec      14 (20) '2.0'\n+21FB6C Created OS            00 (0) 'MS-DOS'\n+21FB6D Extract Zip Spec      14 (20) '2.0'\n+21FB6E Extract OS            00 (0) 'MS-DOS'\n+21FB6F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21DD65 Compression Method    0008 (8) 'Deflated'\n-21DD67 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21DD6B CRC                   00000000 (0)\n-21DD6F Compressed Size       00000002 (2)\n-21DD73 Uncompressed Size     00000000 (0)\n-21DD77 Filename Length       001F (31)\n-21DD79 Extra Length          0000 (0)\n-21DD7B Comment Length        0000 (0)\n-21DD7D Disk Start            0000 (0)\n-21DD7F Int File Attributes   0000 (0)\n+21FB71 Compression Method    0008 (8) 'Deflated'\n+21FB73 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21FB77 CRC                   4414A4AD (1142203565)\n+21FB7B Compressed Size       0000207F (8319)\n+21FB7F Uncompressed Size     0000BE90 (48784)\n+21FB83 Filename Length       002F (47)\n+21FB85 Extra Length          0000 (0)\n+21FB87 Comment Length        0000 (0)\n+21FB89 Disk Start            0000 (0)\n+21FB8B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21DD81 Ext File Attributes   00000000 (0)\n-21DD85 Local Header Offset   000710EF (463087)\n-21DD89 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21FB8D Ext File Attributes   00000000 (0)\n+21FB91 Local Header Offset   00097236 (619062)\n+21FB95 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21DD89: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21FB95: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21DDA8 CENTRAL HEADER #523   02014B50 (33639248)\n-21DDAC Created Zip Spec      14 (20) '2.0'\n-21DDAD Created OS            00 (0) 'MS-DOS'\n-21DDAE Extract Zip Spec      14 (20) '2.0'\n-21DDAF Extract OS            00 (0) 'MS-DOS'\n-21DDB0 General Purpose Flag  0808 (2056)\n+21FBC4 CENTRAL HEADER #523   02014B50 (33639248)\n+21FBC8 Created Zip Spec      14 (20) '2.0'\n+21FBC9 Created OS            00 (0) 'MS-DOS'\n+21FBCA Extract Zip Spec      14 (20) '2.0'\n+21FBCB Extract OS            00 (0) 'MS-DOS'\n+21FBCC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21DDB2 Compression Method    0008 (8) 'Deflated'\n-21DDB4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21DDB8 CRC                   F325AC46 (4079332422)\n-21DDBC Compressed Size       00000588 (1416)\n-21DDC0 Uncompressed Size     000010FE (4350)\n-21DDC4 Filename Length       003A (58)\n-21DDC6 Extra Length          0000 (0)\n-21DDC8 Comment Length        0000 (0)\n-21DDCA Disk Start            0000 (0)\n-21DDCC Int File Attributes   0000 (0)\n+21FBCE Compression Method    0008 (8) 'Deflated'\n+21FBD0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21FBD4 CRC                   20B97A60 (549026400)\n+21FBD8 Compressed Size       0000076D (1901)\n+21FBDC Uncompressed Size     0000179D (6045)\n+21FBE0 Filename Length       0038 (56)\n+21FBE2 Extra Length          0000 (0)\n+21FBE4 Comment Length        0000 (0)\n+21FBE6 Disk Start            0000 (0)\n+21FBE8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21DDCE Ext File Attributes   00000000 (0)\n-21DDD2 Local Header Offset   0007113E (463166)\n-21DDD6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21FBEA Ext File Attributes   00000000 (0)\n+21FBEE Local Header Offset   00099312 (627474)\n+21FBF2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21DDD6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21FBF2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21DE10 CENTRAL HEADER #524   02014B50 (33639248)\n-21DE14 Created Zip Spec      14 (20) '2.0'\n-21DE15 Created OS            00 (0) 'MS-DOS'\n-21DE16 Extract Zip Spec      14 (20) '2.0'\n-21DE17 Extract OS            00 (0) 'MS-DOS'\n-21DE18 General Purpose Flag  0808 (2056)\n+21FC2A CENTRAL HEADER #524   02014B50 (33639248)\n+21FC2E Created Zip Spec      14 (20) '2.0'\n+21FC2F Created OS            00 (0) 'MS-DOS'\n+21FC30 Extract Zip Spec      14 (20) '2.0'\n+21FC31 Extract OS            00 (0) 'MS-DOS'\n+21FC32 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21DE1A Compression Method    0008 (8) 'Deflated'\n-21DE1C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21DE20 CRC                   9BAFC26A (2611987050)\n-21DE24 Compressed Size       000007B7 (1975)\n-21DE28 Uncompressed Size     00001AC5 (6853)\n-21DE2C Filename Length       0031 (49)\n-21DE2E Extra Length          0000 (0)\n-21DE30 Comment Length        0000 (0)\n-21DE32 Disk Start            0000 (0)\n-21DE34 Int File Attributes   0000 (0)\n+21FC34 Compression Method    0008 (8) 'Deflated'\n+21FC36 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21FC3A CRC                   0B75FDAE (192282030)\n+21FC3E Compressed Size       000005A6 (1446)\n+21FC42 Uncompressed Size     0000124E (4686)\n+21FC46 Filename Length       003C (60)\n+21FC48 Extra Length          0000 (0)\n+21FC4A Comment Length        0000 (0)\n+21FC4C Disk Start            0000 (0)\n+21FC4E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21DE36 Ext File Attributes   00000000 (0)\n-21DE3A Local Header Offset   0007172E (464686)\n-21DE3E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21FC50 Ext File Attributes   00000000 (0)\n+21FC54 Local Header Offset   00099AE5 (629477)\n+21FC58 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21DE3E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21FC58: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21DE6F CENTRAL HEADER #525   02014B50 (33639248)\n-21DE73 Created Zip Spec      14 (20) '2.0'\n-21DE74 Created OS            00 (0) 'MS-DOS'\n-21DE75 Extract Zip Spec      14 (20) '2.0'\n-21DE76 Extract OS            00 (0) 'MS-DOS'\n-21DE77 General Purpose Flag  0808 (2056)\n+21FC94 CENTRAL HEADER #525   02014B50 (33639248)\n+21FC98 Created Zip Spec      14 (20) '2.0'\n+21FC99 Created OS            00 (0) 'MS-DOS'\n+21FC9A Extract Zip Spec      14 (20) '2.0'\n+21FC9B Extract OS            00 (0) 'MS-DOS'\n+21FC9C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21DE79 Compression Method    0008 (8) 'Deflated'\n-21DE7B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21DE7F CRC                   68B50306 (1756693254)\n-21DE83 Compressed Size       00000597 (1431)\n-21DE87 Uncompressed Size     000012AB (4779)\n-21DE8B Filename Length       0036 (54)\n-21DE8D Extra Length          0000 (0)\n-21DE8F Comment Length        0000 (0)\n-21DE91 Disk Start            0000 (0)\n-21DE93 Int File Attributes   0000 (0)\n+21FC9E Compression Method    0008 (8) 'Deflated'\n+21FCA0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21FCA4 CRC                   D09B55F9 (3499841017)\n+21FCA8 Compressed Size       00000407 (1031)\n+21FCAC Uncompressed Size     00000D4B (3403)\n+21FCB0 Filename Length       0028 (40)\n+21FCB2 Extra Length          0000 (0)\n+21FCB4 Comment Length        0000 (0)\n+21FCB6 Disk Start            0000 (0)\n+21FCB8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21DE95 Ext File Attributes   00000000 (0)\n-21DE99 Local Header Offset   00071F44 (466756)\n-21DE9D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21FCBA Ext File Attributes   00000000 (0)\n+21FCBE Local Header Offset   0009A0F5 (631029)\n+21FCC2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21DE9D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21FCC2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21DED3 CENTRAL HEADER #526   02014B50 (33639248)\n-21DED7 Created Zip Spec      14 (20) '2.0'\n-21DED8 Created OS            00 (0) 'MS-DOS'\n-21DED9 Extract Zip Spec      14 (20) '2.0'\n-21DEDA Extract OS            00 (0) 'MS-DOS'\n-21DEDB General Purpose Flag  0808 (2056)\n+21FCEA CENTRAL HEADER #526   02014B50 (33639248)\n+21FCEE Created Zip Spec      14 (20) '2.0'\n+21FCEF Created OS            00 (0) 'MS-DOS'\n+21FCF0 Extract Zip Spec      14 (20) '2.0'\n+21FCF1 Extract OS            00 (0) 'MS-DOS'\n+21FCF2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21DEDD Compression Method    0008 (8) 'Deflated'\n-21DEDF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21DEE3 CRC                   0BFFCD1E (201313566)\n-21DEE7 Compressed Size       000008D8 (2264)\n-21DEEB Uncompressed Size     00002715 (10005)\n-21DEEF Filename Length       002F (47)\n-21DEF1 Extra Length          0000 (0)\n-21DEF3 Comment Length        0000 (0)\n-21DEF5 Disk Start            0000 (0)\n-21DEF7 Int File Attributes   0000 (0)\n+21FCF4 Compression Method    0008 (8) 'Deflated'\n+21FCF6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21FCFA CRC                   F3B0BA28 (4088445480)\n+21FCFE Compressed Size       000003D9 (985)\n+21FD02 Uncompressed Size     00000A5F (2655)\n+21FD06 Filename Length       0044 (68)\n+21FD08 Extra Length          0000 (0)\n+21FD0A Comment Length        0000 (0)\n+21FD0C Disk Start            0000 (0)\n+21FD0E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21DEF9 Ext File Attributes   00000000 (0)\n-21DEFD Local Header Offset   0007253F (468287)\n-21DF01 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21FD10 Ext File Attributes   00000000 (0)\n+21FD14 Local Header Offset   0009A552 (632146)\n+21FD18 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21DF01: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21FD18: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21DF30 CENTRAL HEADER #527   02014B50 (33639248)\n-21DF34 Created Zip Spec      14 (20) '2.0'\n-21DF35 Created OS            00 (0) 'MS-DOS'\n-21DF36 Extract Zip Spec      14 (20) '2.0'\n-21DF37 Extract OS            00 (0) 'MS-DOS'\n-21DF38 General Purpose Flag  0808 (2056)\n+21FD5C CENTRAL HEADER #527   02014B50 (33639248)\n+21FD60 Created Zip Spec      14 (20) '2.0'\n+21FD61 Created OS            00 (0) 'MS-DOS'\n+21FD62 Extract Zip Spec      14 (20) '2.0'\n+21FD63 Extract OS            00 (0) 'MS-DOS'\n+21FD64 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21DF3A Compression Method    0008 (8) 'Deflated'\n-21DF3C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21DF40 CRC                   94D758DF (2497140959)\n-21DF44 Compressed Size       00000294 (660)\n-21DF48 Uncompressed Size     000004F3 (1267)\n-21DF4C Filename Length       003C (60)\n-21DF4E Extra Length          0000 (0)\n-21DF50 Comment Length        0000 (0)\n-21DF52 Disk Start            0000 (0)\n-21DF54 Int File Attributes   0000 (0)\n+21FD66 Compression Method    0008 (8) 'Deflated'\n+21FD68 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21FD6C CRC                   080CFD86 (135069062)\n+21FD70 Compressed Size       00001E9B (7835)\n+21FD74 Uncompressed Size     00009370 (37744)\n+21FD78 Filename Length       002E (46)\n+21FD7A Extra Length          0000 (0)\n+21FD7C Comment Length        0000 (0)\n+21FD7E Disk Start            0000 (0)\n+21FD80 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21DF56 Ext File Attributes   00000000 (0)\n-21DF5A Local Header Offset   00072E74 (470644)\n-21DF5E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21FD82 Ext File Attributes   00000000 (0)\n+21FD86 Local Header Offset   0009A99D (633245)\n+21FD8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21DF5E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21FD8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21DF9A CENTRAL HEADER #528   02014B50 (33639248)\n-21DF9E Created Zip Spec      14 (20) '2.0'\n-21DF9F Created OS            00 (0) 'MS-DOS'\n-21DFA0 Extract Zip Spec      14 (20) '2.0'\n-21DFA1 Extract OS            00 (0) 'MS-DOS'\n-21DFA2 General Purpose Flag  0808 (2056)\n+21FDB8 CENTRAL HEADER #528   02014B50 (33639248)\n+21FDBC Created Zip Spec      14 (20) '2.0'\n+21FDBD Created OS            00 (0) 'MS-DOS'\n+21FDBE Extract Zip Spec      14 (20) '2.0'\n+21FDBF Extract OS            00 (0) 'MS-DOS'\n+21FDC0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21DFA4 Compression Method    0008 (8) 'Deflated'\n-21DFA6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21DFAA CRC                   778123FC (2004952060)\n-21DFAE Compressed Size       00000346 (838)\n-21DFB2 Uncompressed Size     00000770 (1904)\n-21DFB6 Filename Length       0039 (57)\n-21DFB8 Extra Length          0000 (0)\n-21DFBA Comment Length        0000 (0)\n-21DFBC Disk Start            0000 (0)\n-21DFBE Int File Attributes   0000 (0)\n+21FDC2 Compression Method    0008 (8) 'Deflated'\n+21FDC4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21FDC8 CRC                   70A970FE (1890152702)\n+21FDCC Compressed Size       0000077E (1918)\n+21FDD0 Uncompressed Size     000022D8 (8920)\n+21FDD4 Filename Length       002C (44)\n+21FDD6 Extra Length          0000 (0)\n+21FDD8 Comment Length        0000 (0)\n+21FDDA Disk Start            0000 (0)\n+21FDDC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21DFC0 Ext File Attributes   00000000 (0)\n-21DFC4 Local Header Offset   00073172 (471410)\n-21DFC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21FDDE Ext File Attributes   00000000 (0)\n+21FDE2 Local Header Offset   0009C894 (641172)\n+21FDE6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21DFC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21FDE6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E001 CENTRAL HEADER #529   02014B50 (33639248)\n-21E005 Created Zip Spec      14 (20) '2.0'\n-21E006 Created OS            00 (0) 'MS-DOS'\n-21E007 Extract Zip Spec      14 (20) '2.0'\n-21E008 Extract OS            00 (0) 'MS-DOS'\n-21E009 General Purpose Flag  0808 (2056)\n+21FE12 CENTRAL HEADER #529   02014B50 (33639248)\n+21FE16 Created Zip Spec      14 (20) '2.0'\n+21FE17 Created OS            00 (0) 'MS-DOS'\n+21FE18 Extract Zip Spec      14 (20) '2.0'\n+21FE19 Extract OS            00 (0) 'MS-DOS'\n+21FE1A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E00B Compression Method    0008 (8) 'Deflated'\n-21E00D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E011 CRC                   041CAAC9 (68987593)\n-21E015 Compressed Size       00000273 (627)\n-21E019 Uncompressed Size     000004B1 (1201)\n-21E01D Filename Length       003D (61)\n-21E01F Extra Length          0000 (0)\n-21E021 Comment Length        0000 (0)\n-21E023 Disk Start            0000 (0)\n-21E025 Int File Attributes   0000 (0)\n+21FE1C Compression Method    0008 (8) 'Deflated'\n+21FE1E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21FE22 CRC                   BCEF5B37 (3169803063)\n+21FE26 Compressed Size       0000118B (4491)\n+21FE2A Uncompressed Size     0000634F (25423)\n+21FE2E Filename Length       002B (43)\n+21FE30 Extra Length          0000 (0)\n+21FE32 Comment Length        0000 (0)\n+21FE34 Disk Start            0000 (0)\n+21FE36 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E027 Ext File Attributes   00000000 (0)\n-21E02B Local Header Offset   0007351F (472351)\n-21E02F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21FE38 Ext File Attributes   00000000 (0)\n+21FE3C Local Header Offset   0009D06C (643180)\n+21FE40 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E02F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21FE40: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E06C CENTRAL HEADER #530   02014B50 (33639248)\n-21E070 Created Zip Spec      14 (20) '2.0'\n-21E071 Created OS            00 (0) 'MS-DOS'\n-21E072 Extract Zip Spec      14 (20) '2.0'\n-21E073 Extract OS            00 (0) 'MS-DOS'\n-21E074 General Purpose Flag  0808 (2056)\n+21FE6B CENTRAL HEADER #530   02014B50 (33639248)\n+21FE6F Created Zip Spec      14 (20) '2.0'\n+21FE70 Created OS            00 (0) 'MS-DOS'\n+21FE71 Extract Zip Spec      14 (20) '2.0'\n+21FE72 Extract OS            00 (0) 'MS-DOS'\n+21FE73 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E076 Compression Method    0008 (8) 'Deflated'\n-21E078 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E07C CRC                   01D0CBB6 (30460854)\n-21E080 Compressed Size       000003B8 (952)\n-21E084 Uncompressed Size     00000A4C (2636)\n-21E088 Filename Length       003B (59)\n-21E08A Extra Length          0000 (0)\n-21E08C Comment Length        0000 (0)\n-21E08E Disk Start            0000 (0)\n-21E090 Int File Attributes   0000 (0)\n+21FE75 Compression Method    0008 (8) 'Deflated'\n+21FE77 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21FE7B CRC                   DB02321D (3674354205)\n+21FE7F Compressed Size       00000B07 (2823)\n+21FE83 Uncompressed Size     000027AB (10155)\n+21FE87 Filename Length       002C (44)\n+21FE89 Extra Length          0000 (0)\n+21FE8B Comment Length        0000 (0)\n+21FE8D Disk Start            0000 (0)\n+21FE8F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E092 Ext File Attributes   00000000 (0)\n-21E096 Local Header Offset   000737FD (473085)\n-21E09A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21FE91 Ext File Attributes   00000000 (0)\n+21FE95 Local Header Offset   0009E250 (647760)\n+21FE99 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E09A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21FE99: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E0D5 CENTRAL HEADER #531   02014B50 (33639248)\n-21E0D9 Created Zip Spec      14 (20) '2.0'\n-21E0DA Created OS            00 (0) 'MS-DOS'\n-21E0DB Extract Zip Spec      14 (20) '2.0'\n-21E0DC Extract OS            00 (0) 'MS-DOS'\n-21E0DD General Purpose Flag  0808 (2056)\n+21FEC5 CENTRAL HEADER #531   02014B50 (33639248)\n+21FEC9 Created Zip Spec      14 (20) '2.0'\n+21FECA Created OS            00 (0) 'MS-DOS'\n+21FECB Extract Zip Spec      14 (20) '2.0'\n+21FECC Extract OS            00 (0) 'MS-DOS'\n+21FECD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E0DF Compression Method    0008 (8) 'Deflated'\n-21E0E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E0E5 CRC                   790D5CAF (2030918831)\n-21E0E9 Compressed Size       00000288 (648)\n-21E0ED Uncompressed Size     000004AD (1197)\n-21E0F1 Filename Length       0037 (55)\n-21E0F3 Extra Length          0000 (0)\n-21E0F5 Comment Length        0000 (0)\n-21E0F7 Disk Start            0000 (0)\n-21E0F9 Int File Attributes   0000 (0)\n+21FECF Compression Method    0008 (8) 'Deflated'\n+21FED1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21FED5 CRC                   DCD69CAC (3705052332)\n+21FED9 Compressed Size       000014FD (5373)\n+21FEDD Uncompressed Size     00006690 (26256)\n+21FEE1 Filename Length       002B (43)\n+21FEE3 Extra Length          0000 (0)\n+21FEE5 Comment Length        0000 (0)\n+21FEE7 Disk Start            0000 (0)\n+21FEE9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E0FB Ext File Attributes   00000000 (0)\n-21E0FF Local Header Offset   00073C1E (474142)\n-21E103 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21FEEB Ext File Attributes   00000000 (0)\n+21FEEF Local Header Offset   0009EDB1 (650673)\n+21FEF3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E103: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21FEF3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E13A CENTRAL HEADER #532   02014B50 (33639248)\n-21E13E Created Zip Spec      14 (20) '2.0'\n-21E13F Created OS            00 (0) 'MS-DOS'\n-21E140 Extract Zip Spec      14 (20) '2.0'\n-21E141 Extract OS            00 (0) 'MS-DOS'\n-21E142 General Purpose Flag  0808 (2056)\n+21FF1E CENTRAL HEADER #532   02014B50 (33639248)\n+21FF22 Created Zip Spec      14 (20) '2.0'\n+21FF23 Created OS            00 (0) 'MS-DOS'\n+21FF24 Extract Zip Spec      14 (20) '2.0'\n+21FF25 Extract OS            00 (0) 'MS-DOS'\n+21FF26 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E144 Compression Method    0008 (8) 'Deflated'\n-21E146 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E14A CRC                   00000000 (0)\n-21E14E Compressed Size       00000002 (2)\n-21E152 Uncompressed Size     00000000 (0)\n-21E156 Filename Length       002C (44)\n-21E158 Extra Length          0000 (0)\n-21E15A Comment Length        0000 (0)\n-21E15C Disk Start            0000 (0)\n-21E15E Int File Attributes   0000 (0)\n+21FF28 Compression Method    0008 (8) 'Deflated'\n+21FF2A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21FF2E CRC                   E3FDA003 (3825049603)\n+21FF32 Compressed Size       0000145F (5215)\n+21FF36 Uncompressed Size     000061ED (25069)\n+21FF3A Filename Length       0034 (52)\n+21FF3C Extra Length          0000 (0)\n+21FF3E Comment Length        0000 (0)\n+21FF40 Disk Start            0000 (0)\n+21FF42 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E160 Ext File Attributes   00000000 (0)\n-21E164 Local Header Offset   00073F0B (474891)\n-21E168 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21FF44 Ext File Attributes   00000000 (0)\n+21FF48 Local Header Offset   000A0307 (656135)\n+21FF4C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E168: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21FF4C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E194 CENTRAL HEADER #533   02014B50 (33639248)\n-21E198 Created Zip Spec      14 (20) '2.0'\n-21E199 Created OS            00 (0) 'MS-DOS'\n-21E19A Extract Zip Spec      14 (20) '2.0'\n-21E19B Extract OS            00 (0) 'MS-DOS'\n-21E19C General Purpose Flag  0808 (2056)\n+21FF80 CENTRAL HEADER #533   02014B50 (33639248)\n+21FF84 Created Zip Spec      14 (20) '2.0'\n+21FF85 Created OS            00 (0) 'MS-DOS'\n+21FF86 Extract Zip Spec      14 (20) '2.0'\n+21FF87 Extract OS            00 (0) 'MS-DOS'\n+21FF88 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E19E Compression Method    0008 (8) 'Deflated'\n-21E1A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E1A4 CRC                   A679BD52 (2792996178)\n-21E1A8 Compressed Size       0000095F (2399)\n-21E1AC Uncompressed Size     0000264E (9806)\n-21E1B0 Filename Length       004D (77)\n-21E1B2 Extra Length          0000 (0)\n-21E1B4 Comment Length        0000 (0)\n-21E1B6 Disk Start            0000 (0)\n-21E1B8 Int File Attributes   0000 (0)\n+21FF8A Compression Method    0008 (8) 'Deflated'\n+21FF8C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21FF90 CRC                   9A747BAC (2591325100)\n+21FF94 Compressed Size       00000613 (1555)\n+21FF98 Uncompressed Size     00001305 (4869)\n+21FF9C Filename Length       0031 (49)\n+21FF9E Extra Length          0000 (0)\n+21FFA0 Comment Length        0000 (0)\n+21FFA2 Disk Start            0000 (0)\n+21FFA4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E1BA Ext File Attributes   00000000 (0)\n-21E1BE Local Header Offset   00073F67 (474983)\n-21E1C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+21FFA6 Ext File Attributes   00000000 (0)\n+21FFAA Local Header Offset   000A17C8 (661448)\n+21FFAE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E1C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x21FFAE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E20F CENTRAL HEADER #534   02014B50 (33639248)\n-21E213 Created Zip Spec      14 (20) '2.0'\n-21E214 Created OS            00 (0) 'MS-DOS'\n-21E215 Extract Zip Spec      14 (20) '2.0'\n-21E216 Extract OS            00 (0) 'MS-DOS'\n-21E217 General Purpose Flag  0808 (2056)\n+21FFDF CENTRAL HEADER #534   02014B50 (33639248)\n+21FFE3 Created Zip Spec      14 (20) '2.0'\n+21FFE4 Created OS            00 (0) 'MS-DOS'\n+21FFE5 Extract Zip Spec      14 (20) '2.0'\n+21FFE6 Extract OS            00 (0) 'MS-DOS'\n+21FFE7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E219 Compression Method    0008 (8) 'Deflated'\n-21E21B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E21F CRC                   5C1CB033 (1545383987)\n-21E223 Compressed Size       0000032F (815)\n-21E227 Uncompressed Size     000006CB (1739)\n-21E22B Filename Length       0054 (84)\n-21E22D Extra Length          0000 (0)\n-21E22F Comment Length        0000 (0)\n-21E231 Disk Start            0000 (0)\n-21E233 Int File Attributes   0000 (0)\n+21FFE9 Compression Method    0008 (8) 'Deflated'\n+21FFEB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+21FFEF CRC                   F1EB3E77 (4058726007)\n+21FFF3 Compressed Size       000006E0 (1760)\n+21FFF7 Uncompressed Size     000016D7 (5847)\n+21FFFB Filename Length       0034 (52)\n+21FFFD Extra Length          0000 (0)\n+21FFFF Comment Length        0000 (0)\n+220001 Disk Start            0000 (0)\n+220003 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E235 Ext File Attributes   00000000 (0)\n-21E239 Local Header Offset   00074941 (477505)\n-21E23D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220005 Ext File Attributes   00000000 (0)\n+220009 Local Header Offset   000A1E3A (663098)\n+22000D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E23D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22000D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E291 CENTRAL HEADER #535   02014B50 (33639248)\n-21E295 Created Zip Spec      14 (20) '2.0'\n-21E296 Created OS            00 (0) 'MS-DOS'\n-21E297 Extract Zip Spec      14 (20) '2.0'\n-21E298 Extract OS            00 (0) 'MS-DOS'\n-21E299 General Purpose Flag  0808 (2056)\n+220041 CENTRAL HEADER #535   02014B50 (33639248)\n+220045 Created Zip Spec      14 (20) '2.0'\n+220046 Created OS            00 (0) 'MS-DOS'\n+220047 Extract Zip Spec      14 (20) '2.0'\n+220048 Extract OS            00 (0) 'MS-DOS'\n+220049 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E29B Compression Method    0008 (8) 'Deflated'\n-21E29D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E2A1 CRC                   E6853BBE (3867491262)\n-21E2A5 Compressed Size       00000241 (577)\n-21E2A9 Uncompressed Size     00000448 (1096)\n-21E2AD Filename Length       0041 (65)\n-21E2AF Extra Length          0000 (0)\n-21E2B1 Comment Length        0000 (0)\n-21E2B3 Disk Start            0000 (0)\n-21E2B5 Int File Attributes   0000 (0)\n+22004B Compression Method    0008 (8) 'Deflated'\n+22004D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220051 CRC                   7F641F8A (2137268106)\n+220055 Compressed Size       0000074D (1869)\n+220059 Uncompressed Size     00001B65 (7013)\n+22005D Filename Length       0032 (50)\n+22005F Extra Length          0000 (0)\n+220061 Comment Length        0000 (0)\n+220063 Disk Start            0000 (0)\n+220065 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E2B7 Ext File Attributes   00000000 (0)\n-21E2BB Local Header Offset   00074CF2 (478450)\n-21E2BF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220067 Ext File Attributes   00000000 (0)\n+22006B Local Header Offset   000A257C (664956)\n+22006F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E2BF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22006F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E300 CENTRAL HEADER #536   02014B50 (33639248)\n-21E304 Created Zip Spec      14 (20) '2.0'\n-21E305 Created OS            00 (0) 'MS-DOS'\n-21E306 Extract Zip Spec      14 (20) '2.0'\n-21E307 Extract OS            00 (0) 'MS-DOS'\n-21E308 General Purpose Flag  0808 (2056)\n+2200A1 CENTRAL HEADER #536   02014B50 (33639248)\n+2200A5 Created Zip Spec      14 (20) '2.0'\n+2200A6 Created OS            00 (0) 'MS-DOS'\n+2200A7 Extract Zip Spec      14 (20) '2.0'\n+2200A8 Extract OS            00 (0) 'MS-DOS'\n+2200A9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E30A Compression Method    0008 (8) 'Deflated'\n-21E30C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E310 CRC                   B9E6C475 (3118908533)\n-21E314 Compressed Size       000003ED (1005)\n-21E318 Uncompressed Size     00000B0B (2827)\n-21E31C Filename Length       0043 (67)\n-21E31E Extra Length          0000 (0)\n-21E320 Comment Length        0000 (0)\n-21E322 Disk Start            0000 (0)\n-21E324 Int File Attributes   0000 (0)\n+2200AB Compression Method    0008 (8) 'Deflated'\n+2200AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2200B1 CRC                   6C21C4E0 (1814152416)\n+2200B5 Compressed Size       00000CC1 (3265)\n+2200B9 Uncompressed Size     00003707 (14087)\n+2200BD Filename Length       002E (46)\n+2200BF Extra Length          0000 (0)\n+2200C1 Comment Length        0000 (0)\n+2200C3 Disk Start            0000 (0)\n+2200C5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E326 Ext File Attributes   00000000 (0)\n-21E32A Local Header Offset   00074FA2 (479138)\n-21E32E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2200C7 Ext File Attributes   00000000 (0)\n+2200CB Local Header Offset   000A2D29 (666921)\n+2200CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E32E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2200CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E371 CENTRAL HEADER #537   02014B50 (33639248)\n-21E375 Created Zip Spec      14 (20) '2.0'\n-21E376 Created OS            00 (0) 'MS-DOS'\n-21E377 Extract Zip Spec      14 (20) '2.0'\n-21E378 Extract OS            00 (0) 'MS-DOS'\n-21E379 General Purpose Flag  0808 (2056)\n+2200FD CENTRAL HEADER #537   02014B50 (33639248)\n+220101 Created Zip Spec      14 (20) '2.0'\n+220102 Created OS            00 (0) 'MS-DOS'\n+220103 Extract Zip Spec      14 (20) '2.0'\n+220104 Extract OS            00 (0) 'MS-DOS'\n+220105 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E37B Compression Method    0008 (8) 'Deflated'\n-21E37D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E381 CRC                   74E6231A (1961239322)\n-21E385 Compressed Size       000002A7 (679)\n-21E389 Uncompressed Size     00000511 (1297)\n-21E38D Filename Length       0046 (70)\n-21E38F Extra Length          0000 (0)\n-21E391 Comment Length        0000 (0)\n-21E393 Disk Start            0000 (0)\n-21E395 Int File Attributes   0000 (0)\n+220107 Compression Method    0008 (8) 'Deflated'\n+220109 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22010D CRC                   F3BD8170 (4089282928)\n+220111 Compressed Size       0000037A (890)\n+220115 Uncompressed Size     000008A1 (2209)\n+220119 Filename Length       002B (43)\n+22011B Extra Length          0000 (0)\n+22011D Comment Length        0000 (0)\n+22011F Disk Start            0000 (0)\n+220121 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E397 Ext File Attributes   00000000 (0)\n-21E39B Local Header Offset   00075400 (480256)\n-21E39F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220123 Ext File Attributes   00000000 (0)\n+220127 Local Header Offset   000A3A46 (670278)\n+22012B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E39F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22012B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E3E5 CENTRAL HEADER #538   02014B50 (33639248)\n-21E3E9 Created Zip Spec      14 (20) '2.0'\n-21E3EA Created OS            00 (0) 'MS-DOS'\n-21E3EB Extract Zip Spec      14 (20) '2.0'\n-21E3EC Extract OS            00 (0) 'MS-DOS'\n-21E3ED General Purpose Flag  0808 (2056)\n+220156 CENTRAL HEADER #538   02014B50 (33639248)\n+22015A Created Zip Spec      14 (20) '2.0'\n+22015B Created OS            00 (0) 'MS-DOS'\n+22015C Extract Zip Spec      14 (20) '2.0'\n+22015D Extract OS            00 (0) 'MS-DOS'\n+22015E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E3EF Compression Method    0008 (8) 'Deflated'\n-21E3F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E3F5 CRC                   695FC9AE (1767885230)\n-21E3F9 Compressed Size       00000254 (596)\n-21E3FD Uncompressed Size     00000447 (1095)\n-21E401 Filename Length       003A (58)\n-21E403 Extra Length          0000 (0)\n-21E405 Comment Length        0000 (0)\n-21E407 Disk Start            0000 (0)\n-21E409 Int File Attributes   0000 (0)\n+220160 Compression Method    0008 (8) 'Deflated'\n+220162 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220166 CRC                   56A68FB6 (1453756342)\n+22016A Compressed Size       000009A4 (2468)\n+22016E Uncompressed Size     000023BC (9148)\n+220172 Filename Length       002F (47)\n+220174 Extra Length          0000 (0)\n+220176 Comment Length        0000 (0)\n+220178 Disk Start            0000 (0)\n+22017A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E40B Ext File Attributes   00000000 (0)\n-21E40F Local Header Offset   0007571B (481051)\n-21E413 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22017C Ext File Attributes   00000000 (0)\n+220180 Local Header Offset   000A3E19 (671257)\n+220184 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E413: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220184: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E44D CENTRAL HEADER #539   02014B50 (33639248)\n-21E451 Created Zip Spec      14 (20) '2.0'\n-21E452 Created OS            00 (0) 'MS-DOS'\n-21E453 Extract Zip Spec      14 (20) '2.0'\n-21E454 Extract OS            00 (0) 'MS-DOS'\n-21E455 General Purpose Flag  0808 (2056)\n+2201B3 CENTRAL HEADER #539   02014B50 (33639248)\n+2201B7 Created Zip Spec      14 (20) '2.0'\n+2201B8 Created OS            00 (0) 'MS-DOS'\n+2201B9 Extract Zip Spec      14 (20) '2.0'\n+2201BA Extract OS            00 (0) 'MS-DOS'\n+2201BB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E457 Compression Method    0008 (8) 'Deflated'\n-21E459 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E45D CRC                   1744C936 (390383926)\n-21E461 Compressed Size       000008C8 (2248)\n-21E465 Uncompressed Size     000023F1 (9201)\n-21E469 Filename Length       0045 (69)\n-21E46B Extra Length          0000 (0)\n-21E46D Comment Length        0000 (0)\n-21E46F Disk Start            0000 (0)\n-21E471 Int File Attributes   0000 (0)\n+2201BD Compression Method    0008 (8) 'Deflated'\n+2201BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2201C3 CRC                   111FF296 (287306390)\n+2201C7 Compressed Size       00000484 (1156)\n+2201CB Uncompressed Size     00000B99 (2969)\n+2201CF Filename Length       0026 (38)\n+2201D1 Extra Length          0000 (0)\n+2201D3 Comment Length        0000 (0)\n+2201D5 Disk Start            0000 (0)\n+2201D7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E473 Ext File Attributes   00000000 (0)\n-21E477 Local Header Offset   000759D7 (481751)\n-21E47B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2201D9 Ext File Attributes   00000000 (0)\n+2201DD Local Header Offset   000A481A (673818)\n+2201E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E47B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2201E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E4C0 CENTRAL HEADER #540   02014B50 (33639248)\n-21E4C4 Created Zip Spec      14 (20) '2.0'\n-21E4C5 Created OS            00 (0) 'MS-DOS'\n-21E4C6 Extract Zip Spec      14 (20) '2.0'\n-21E4C7 Extract OS            00 (0) 'MS-DOS'\n-21E4C8 General Purpose Flag  0808 (2056)\n+220207 CENTRAL HEADER #540   02014B50 (33639248)\n+22020B Created Zip Spec      14 (20) '2.0'\n+22020C Created OS            00 (0) 'MS-DOS'\n+22020D Extract Zip Spec      14 (20) '2.0'\n+22020E Extract OS            00 (0) 'MS-DOS'\n+22020F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E4CA Compression Method    0008 (8) 'Deflated'\n-21E4CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E4D0 CRC                   287FAB99 (679455641)\n-21E4D4 Compressed Size       0000033C (828)\n-21E4D8 Uncompressed Size     000007C3 (1987)\n-21E4DC Filename Length       004C (76)\n-21E4DE Extra Length          0000 (0)\n-21E4E0 Comment Length        0000 (0)\n-21E4E2 Disk Start            0000 (0)\n-21E4E4 Int File Attributes   0000 (0)\n+220211 Compression Method    0008 (8) 'Deflated'\n+220213 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220217 CRC                   44CDA5D9 (1154328025)\n+22021B Compressed Size       000004EC (1260)\n+22021F Uncompressed Size     00000E77 (3703)\n+220223 Filename Length       002B (43)\n+220225 Extra Length          0000 (0)\n+220227 Comment Length        0000 (0)\n+220229 Disk Start            0000 (0)\n+22022B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E4E6 Ext File Attributes   00000000 (0)\n-21E4EA Local Header Offset   00076312 (484114)\n-21E4EE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22022D Ext File Attributes   00000000 (0)\n+220231 Local Header Offset   000A4CF2 (675058)\n+220235 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E4EE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220235: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E53A CENTRAL HEADER #541   02014B50 (33639248)\n-21E53E Created Zip Spec      14 (20) '2.0'\n-21E53F Created OS            00 (0) 'MS-DOS'\n-21E540 Extract Zip Spec      14 (20) '2.0'\n-21E541 Extract OS            00 (0) 'MS-DOS'\n-21E542 General Purpose Flag  0808 (2056)\n+220260 CENTRAL HEADER #541   02014B50 (33639248)\n+220264 Created Zip Spec      14 (20) '2.0'\n+220265 Created OS            00 (0) 'MS-DOS'\n+220266 Extract Zip Spec      14 (20) '2.0'\n+220267 Extract OS            00 (0) 'MS-DOS'\n+220268 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E544 Compression Method    0008 (8) 'Deflated'\n-21E546 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E54A CRC                   9083C03B (2424553531)\n-21E54E Compressed Size       0000072C (1836)\n-21E552 Uncompressed Size     00001B7B (7035)\n-21E556 Filename Length       004D (77)\n-21E558 Extra Length          0000 (0)\n-21E55A Comment Length        0000 (0)\n-21E55C Disk Start            0000 (0)\n-21E55E Int File Attributes   0000 (0)\n+22026A Compression Method    0008 (8) 'Deflated'\n+22026C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220270 CRC                   D584FEC4 (3582262980)\n+220274 Compressed Size       00000743 (1859)\n+220278 Uncompressed Size     00001869 (6249)\n+22027C Filename Length       0031 (49)\n+22027E Extra Length          0000 (0)\n+220280 Comment Length        0000 (0)\n+220282 Disk Start            0000 (0)\n+220284 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E560 Ext File Attributes   00000000 (0)\n-21E564 Local Header Offset   000766C8 (485064)\n-21E568 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220286 Ext File Attributes   00000000 (0)\n+22028A Local Header Offset   000A5237 (676407)\n+22028E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E568: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22028E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E5B5 CENTRAL HEADER #542   02014B50 (33639248)\n-21E5B9 Created Zip Spec      14 (20) '2.0'\n-21E5BA Created OS            00 (0) 'MS-DOS'\n-21E5BB Extract Zip Spec      14 (20) '2.0'\n-21E5BC Extract OS            00 (0) 'MS-DOS'\n-21E5BD General Purpose Flag  0808 (2056)\n+2202BF CENTRAL HEADER #542   02014B50 (33639248)\n+2202C3 Created Zip Spec      14 (20) '2.0'\n+2202C4 Created OS            00 (0) 'MS-DOS'\n+2202C5 Extract Zip Spec      14 (20) '2.0'\n+2202C6 Extract OS            00 (0) 'MS-DOS'\n+2202C7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E5BF Compression Method    0008 (8) 'Deflated'\n-21E5C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E5C5 CRC                   00000000 (0)\n-21E5C9 Compressed Size       00000002 (2)\n-21E5CD Uncompressed Size     00000000 (0)\n-21E5D1 Filename Length       0031 (49)\n-21E5D3 Extra Length          0000 (0)\n-21E5D5 Comment Length        0000 (0)\n-21E5D7 Disk Start            0000 (0)\n-21E5D9 Int File Attributes   0000 (0)\n+2202C9 Compression Method    0008 (8) 'Deflated'\n+2202CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2202CF CRC                   6E2E32B0 (1848521392)\n+2202D3 Compressed Size       00000868 (2152)\n+2202D7 Uncompressed Size     000022C0 (8896)\n+2202DB Filename Length       0029 (41)\n+2202DD Extra Length          0000 (0)\n+2202DF Comment Length        0000 (0)\n+2202E1 Disk Start            0000 (0)\n+2202E3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E5DB Ext File Attributes   00000000 (0)\n-21E5DF Local Header Offset   00076E6F (487023)\n-21E5E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2202E5 Ext File Attributes   00000000 (0)\n+2202E9 Local Header Offset   000A59D9 (678361)\n+2202ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E5E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2202ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E614 CENTRAL HEADER #543   02014B50 (33639248)\n-21E618 Created Zip Spec      14 (20) '2.0'\n-21E619 Created OS            00 (0) 'MS-DOS'\n-21E61A Extract Zip Spec      14 (20) '2.0'\n-21E61B Extract OS            00 (0) 'MS-DOS'\n-21E61C General Purpose Flag  0808 (2056)\n+220316 CENTRAL HEADER #543   02014B50 (33639248)\n+22031A Created Zip Spec      14 (20) '2.0'\n+22031B Created OS            00 (0) 'MS-DOS'\n+22031C Extract Zip Spec      14 (20) '2.0'\n+22031D Extract OS            00 (0) 'MS-DOS'\n+22031E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E61E Compression Method    0008 (8) 'Deflated'\n-21E620 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E624 CRC                   F23B4D60 (4063972704)\n-21E628 Compressed Size       00001468 (5224)\n-21E62C Uncompressed Size     0000582A (22570)\n-21E630 Filename Length       0054 (84)\n-21E632 Extra Length          0000 (0)\n-21E634 Comment Length        0000 (0)\n-21E636 Disk Start            0000 (0)\n-21E638 Int File Attributes   0000 (0)\n+220320 Compression Method    0008 (8) 'Deflated'\n+220322 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220326 CRC                   C17F4D7C (3246345596)\n+22032A Compressed Size       000002EC (748)\n+22032E Uncompressed Size     0000068F (1679)\n+220332 Filename Length       002A (42)\n+220334 Extra Length          0000 (0)\n+220336 Comment Length        0000 (0)\n+220338 Disk Start            0000 (0)\n+22033A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E63A Ext File Attributes   00000000 (0)\n-21E63E Local Header Offset   00076ED0 (487120)\n-21E642 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22033C Ext File Attributes   00000000 (0)\n+220340 Local Header Offset   000A6298 (680600)\n+220344 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E642: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220344: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E696 CENTRAL HEADER #544   02014B50 (33639248)\n-21E69A Created Zip Spec      14 (20) '2.0'\n-21E69B Created OS            00 (0) 'MS-DOS'\n-21E69C Extract Zip Spec      14 (20) '2.0'\n-21E69D Extract OS            00 (0) 'MS-DOS'\n-21E69E General Purpose Flag  0808 (2056)\n+22036E CENTRAL HEADER #544   02014B50 (33639248)\n+220372 Created Zip Spec      14 (20) '2.0'\n+220373 Created OS            00 (0) 'MS-DOS'\n+220374 Extract Zip Spec      14 (20) '2.0'\n+220375 Extract OS            00 (0) 'MS-DOS'\n+220376 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E6A0 Compression Method    0008 (8) 'Deflated'\n-21E6A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E6A6 CRC                   E57CCA12 (3850160658)\n-21E6AA Compressed Size       0000029B (667)\n-21E6AE Uncompressed Size     000005CF (1487)\n-21E6B2 Filename Length       005B (91)\n-21E6B4 Extra Length          0000 (0)\n-21E6B6 Comment Length        0000 (0)\n-21E6B8 Disk Start            0000 (0)\n-21E6BA Int File Attributes   0000 (0)\n+220378 Compression Method    0008 (8) 'Deflated'\n+22037A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22037E CRC                   0D00D936 (218159414)\n+220382 Compressed Size       00000492 (1170)\n+220386 Uncompressed Size     00000E8E (3726)\n+22038A Filename Length       0029 (41)\n+22038C Extra Length          0000 (0)\n+22038E Comment Length        0000 (0)\n+220390 Disk Start            0000 (0)\n+220392 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E6BC Ext File Attributes   00000000 (0)\n-21E6C0 Local Header Offset   000783BA (492474)\n-21E6C4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220394 Ext File Attributes   00000000 (0)\n+220398 Local Header Offset   000A65DC (681436)\n+22039C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E6C4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22039C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E71F CENTRAL HEADER #545   02014B50 (33639248)\n-21E723 Created Zip Spec      14 (20) '2.0'\n-21E724 Created OS            00 (0) 'MS-DOS'\n-21E725 Extract Zip Spec      14 (20) '2.0'\n-21E726 Extract OS            00 (0) 'MS-DOS'\n-21E727 General Purpose Flag  0808 (2056)\n+2203C5 CENTRAL HEADER #545   02014B50 (33639248)\n+2203C9 Created Zip Spec      14 (20) '2.0'\n+2203CA Created OS            00 (0) 'MS-DOS'\n+2203CB Extract Zip Spec      14 (20) '2.0'\n+2203CC Extract OS            00 (0) 'MS-DOS'\n+2203CD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E729 Compression Method    0008 (8) 'Deflated'\n-21E72B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E72F CRC                   00000000 (0)\n-21E733 Compressed Size       00000002 (2)\n-21E737 Uncompressed Size     00000000 (0)\n-21E73B Filename Length       0030 (48)\n-21E73D Extra Length          0000 (0)\n-21E73F Comment Length        0000 (0)\n-21E741 Disk Start            0000 (0)\n-21E743 Int File Attributes   0000 (0)\n+2203CF Compression Method    0008 (8) 'Deflated'\n+2203D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2203D5 CRC                   F4388FF8 (4097347576)\n+2203D9 Compressed Size       000004B5 (1205)\n+2203DD Uncompressed Size     00000F20 (3872)\n+2203E1 Filename Length       002A (42)\n+2203E3 Extra Length          0000 (0)\n+2203E5 Comment Length        0000 (0)\n+2203E7 Disk Start            0000 (0)\n+2203E9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E745 Ext File Attributes   00000000 (0)\n-21E749 Local Header Offset   000786DE (493278)\n-21E74D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2203EB Ext File Attributes   00000000 (0)\n+2203EF Local Header Offset   000A6AC5 (682693)\n+2203F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E74D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2203F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E77D CENTRAL HEADER #546   02014B50 (33639248)\n-21E781 Created Zip Spec      14 (20) '2.0'\n-21E782 Created OS            00 (0) 'MS-DOS'\n-21E783 Extract Zip Spec      14 (20) '2.0'\n-21E784 Extract OS            00 (0) 'MS-DOS'\n-21E785 General Purpose Flag  0808 (2056)\n+22041D CENTRAL HEADER #546   02014B50 (33639248)\n+220421 Created Zip Spec      14 (20) '2.0'\n+220422 Created OS            00 (0) 'MS-DOS'\n+220423 Extract Zip Spec      14 (20) '2.0'\n+220424 Extract OS            00 (0) 'MS-DOS'\n+220425 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E787 Compression Method    0008 (8) 'Deflated'\n-21E789 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E78D CRC                   B946295F (3108383071)\n-21E791 Compressed Size       00000376 (886)\n-21E795 Uncompressed Size     000008A7 (2215)\n-21E799 Filename Length       004C (76)\n-21E79B Extra Length          0000 (0)\n-21E79D Comment Length        0000 (0)\n-21E79F Disk Start            0000 (0)\n-21E7A1 Int File Attributes   0000 (0)\n+220427 Compression Method    0008 (8) 'Deflated'\n+220429 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22042D CRC                   39FACF71 (972738417)\n+220431 Compressed Size       00000B93 (2963)\n+220435 Uncompressed Size     00003613 (13843)\n+220439 Filename Length       002B (43)\n+22043B Extra Length          0000 (0)\n+22043D Comment Length        0000 (0)\n+22043F Disk Start            0000 (0)\n+220441 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E7A3 Ext File Attributes   00000000 (0)\n-21E7A7 Local Header Offset   0007873E (493374)\n-21E7AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220443 Ext File Attributes   00000000 (0)\n+220447 Local Header Offset   000A6FD2 (683986)\n+22044B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E7AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22044B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E7F7 CENTRAL HEADER #547   02014B50 (33639248)\n-21E7FB Created Zip Spec      14 (20) '2.0'\n-21E7FC Created OS            00 (0) 'MS-DOS'\n-21E7FD Extract Zip Spec      14 (20) '2.0'\n-21E7FE Extract OS            00 (0) 'MS-DOS'\n-21E7FF General Purpose Flag  0808 (2056)\n+220476 CENTRAL HEADER #547   02014B50 (33639248)\n+22047A Created Zip Spec      14 (20) '2.0'\n+22047B Created OS            00 (0) 'MS-DOS'\n+22047C Extract Zip Spec      14 (20) '2.0'\n+22047D Extract OS            00 (0) 'MS-DOS'\n+22047E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E801 Compression Method    0008 (8) 'Deflated'\n-21E803 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E807 CRC                   208B91F5 (546017781)\n-21E80B Compressed Size       00000272 (626)\n-21E80F Uncompressed Size     00000524 (1316)\n-21E813 Filename Length       0053 (83)\n-21E815 Extra Length          0000 (0)\n-21E817 Comment Length        0000 (0)\n-21E819 Disk Start            0000 (0)\n-21E81B Int File Attributes   0000 (0)\n+220480 Compression Method    0008 (8) 'Deflated'\n+220482 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220486 CRC                   2FD52EF2 (802500338)\n+22048A Compressed Size       0000099B (2459)\n+22048E Uncompressed Size     00002A6C (10860)\n+220492 Filename Length       002B (43)\n+220494 Extra Length          0000 (0)\n+220496 Comment Length        0000 (0)\n+220498 Disk Start            0000 (0)\n+22049A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E81D Ext File Attributes   00000000 (0)\n-21E821 Local Header Offset   00078B2E (494382)\n-21E825 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22049C Ext File Attributes   00000000 (0)\n+2204A0 Local Header Offset   000A7BBE (687038)\n+2204A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E825: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2204A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E878 CENTRAL HEADER #548   02014B50 (33639248)\n-21E87C Created Zip Spec      14 (20) '2.0'\n-21E87D Created OS            00 (0) 'MS-DOS'\n-21E87E Extract Zip Spec      14 (20) '2.0'\n-21E87F Extract OS            00 (0) 'MS-DOS'\n-21E880 General Purpose Flag  0808 (2056)\n+2204CF CENTRAL HEADER #548   02014B50 (33639248)\n+2204D3 Created Zip Spec      14 (20) '2.0'\n+2204D4 Created OS            00 (0) 'MS-DOS'\n+2204D5 Extract Zip Spec      14 (20) '2.0'\n+2204D6 Extract OS            00 (0) 'MS-DOS'\n+2204D7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E882 Compression Method    0008 (8) 'Deflated'\n-21E884 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E888 CRC                   00000000 (0)\n-21E88C Compressed Size       00000002 (2)\n-21E890 Uncompressed Size     00000000 (0)\n-21E894 Filename Length       0034 (52)\n-21E896 Extra Length          0000 (0)\n-21E898 Comment Length        0000 (0)\n-21E89A Disk Start            0000 (0)\n-21E89C Int File Attributes   0000 (0)\n+2204D9 Compression Method    0008 (8) 'Deflated'\n+2204DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2204DF CRC                   42C7E3CE (1120396238)\n+2204E3 Compressed Size       00000952 (2386)\n+2204E7 Uncompressed Size     000021AF (8623)\n+2204EB Filename Length       0030 (48)\n+2204ED Extra Length          0000 (0)\n+2204EF Comment Length        0000 (0)\n+2204F1 Disk Start            0000 (0)\n+2204F3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E89E Ext File Attributes   00000000 (0)\n-21E8A2 Local Header Offset   00078E21 (495137)\n-21E8A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2204F5 Ext File Attributes   00000000 (0)\n+2204F9 Local Header Offset   000A85B2 (689586)\n+2204FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E8A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2204FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E8DA CENTRAL HEADER #549   02014B50 (33639248)\n-21E8DE Created Zip Spec      14 (20) '2.0'\n-21E8DF Created OS            00 (0) 'MS-DOS'\n-21E8E0 Extract Zip Spec      14 (20) '2.0'\n-21E8E1 Extract OS            00 (0) 'MS-DOS'\n-21E8E2 General Purpose Flag  0808 (2056)\n+22052D CENTRAL HEADER #549   02014B50 (33639248)\n+220531 Created Zip Spec      14 (20) '2.0'\n+220532 Created OS            00 (0) 'MS-DOS'\n+220533 Extract Zip Spec      14 (20) '2.0'\n+220534 Extract OS            00 (0) 'MS-DOS'\n+220535 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E8E4 Compression Method    0008 (8) 'Deflated'\n-21E8E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E8EA CRC                   C03FB50A (3225400586)\n-21E8EE Compressed Size       00000492 (1170)\n-21E8F2 Uncompressed Size     00000F4A (3914)\n-21E8F6 Filename Length       0056 (86)\n-21E8F8 Extra Length          0000 (0)\n-21E8FA Comment Length        0000 (0)\n-21E8FC Disk Start            0000 (0)\n-21E8FE Int File Attributes   0000 (0)\n+220537 Compression Method    0008 (8) 'Deflated'\n+220539 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22053D CRC                   9B8BDB69 (2609634153)\n+220541 Compressed Size       00000C77 (3191)\n+220545 Uncompressed Size     00003527 (13607)\n+220549 Filename Length       002B (43)\n+22054B Extra Length          0000 (0)\n+22054D Comment Length        0000 (0)\n+22054F Disk Start            0000 (0)\n+220551 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E900 Ext File Attributes   00000000 (0)\n-21E904 Local Header Offset   00078E85 (495237)\n-21E908 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220553 Ext File Attributes   00000000 (0)\n+220557 Local Header Offset   000A8F62 (692066)\n+22055B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E908: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22055B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E95E CENTRAL HEADER #550   02014B50 (33639248)\n-21E962 Created Zip Spec      14 (20) '2.0'\n-21E963 Created OS            00 (0) 'MS-DOS'\n-21E964 Extract Zip Spec      14 (20) '2.0'\n-21E965 Extract OS            00 (0) 'MS-DOS'\n-21E966 General Purpose Flag  0808 (2056)\n+220586 CENTRAL HEADER #550   02014B50 (33639248)\n+22058A Created Zip Spec      14 (20) '2.0'\n+22058B Created OS            00 (0) 'MS-DOS'\n+22058C Extract Zip Spec      14 (20) '2.0'\n+22058D Extract OS            00 (0) 'MS-DOS'\n+22058E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E968 Compression Method    0008 (8) 'Deflated'\n-21E96A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E96E CRC                   00000000 (0)\n-21E972 Compressed Size       00000002 (2)\n-21E976 Uncompressed Size     00000000 (0)\n-21E97A Filename Length       0022 (34)\n-21E97C Extra Length          0000 (0)\n-21E97E Comment Length        0000 (0)\n-21E980 Disk Start            0000 (0)\n-21E982 Int File Attributes   0000 (0)\n+220590 Compression Method    0008 (8) 'Deflated'\n+220592 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220596 CRC                   2A6335AE (711144878)\n+22059A Compressed Size       00000C83 (3203)\n+22059E Uncompressed Size     00003628 (13864)\n+2205A2 Filename Length       002E (46)\n+2205A4 Extra Length          0000 (0)\n+2205A6 Comment Length        0000 (0)\n+2205A8 Disk Start            0000 (0)\n+2205AA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E984 Ext File Attributes   00000000 (0)\n-21E988 Local Header Offset   0007939B (496539)\n-21E98C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2205AC Ext File Attributes   00000000 (0)\n+2205B0 Local Header Offset   000A9C32 (695346)\n+2205B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E98C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2205B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21E9AE CENTRAL HEADER #551   02014B50 (33639248)\n-21E9B2 Created Zip Spec      14 (20) '2.0'\n-21E9B3 Created OS            00 (0) 'MS-DOS'\n-21E9B4 Extract Zip Spec      14 (20) '2.0'\n-21E9B5 Extract OS            00 (0) 'MS-DOS'\n-21E9B6 General Purpose Flag  0808 (2056)\n+2205E2 CENTRAL HEADER #551   02014B50 (33639248)\n+2205E6 Created Zip Spec      14 (20) '2.0'\n+2205E7 Created OS            00 (0) 'MS-DOS'\n+2205E8 Extract Zip Spec      14 (20) '2.0'\n+2205E9 Extract OS            00 (0) 'MS-DOS'\n+2205EA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21E9B8 Compression Method    0008 (8) 'Deflated'\n-21E9BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21E9BE CRC                   2CFFA2CA (754950858)\n-21E9C2 Compressed Size       00000CF7 (3319)\n-21E9C6 Uncompressed Size     00002810 (10256)\n-21E9CA Filename Length       0036 (54)\n-21E9CC Extra Length          0000 (0)\n-21E9CE Comment Length        0000 (0)\n-21E9D0 Disk Start            0000 (0)\n-21E9D2 Int File Attributes   0000 (0)\n+2205EC Compression Method    0008 (8) 'Deflated'\n+2205EE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2205F2 CRC                   4DECBF7A (1307361146)\n+2205F6 Compressed Size       0000054A (1354)\n+2205FA Uncompressed Size     00001CA2 (7330)\n+2205FE Filename Length       0026 (38)\n+220600 Extra Length          0000 (0)\n+220602 Comment Length        0000 (0)\n+220604 Disk Start            0000 (0)\n+220606 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21E9D4 Ext File Attributes   00000000 (0)\n-21E9D8 Local Header Offset   000793ED (496621)\n-21E9DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220608 Ext File Attributes   00000000 (0)\n+22060C Local Header Offset   000AA911 (698641)\n+220610 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21E9DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220610: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21EA12 CENTRAL HEADER #552   02014B50 (33639248)\n-21EA16 Created Zip Spec      14 (20) '2.0'\n-21EA17 Created OS            00 (0) 'MS-DOS'\n-21EA18 Extract Zip Spec      14 (20) '2.0'\n-21EA19 Extract OS            00 (0) 'MS-DOS'\n-21EA1A General Purpose Flag  0808 (2056)\n+220636 CENTRAL HEADER #552   02014B50 (33639248)\n+22063A Created Zip Spec      14 (20) '2.0'\n+22063B Created OS            00 (0) 'MS-DOS'\n+22063C Extract Zip Spec      14 (20) '2.0'\n+22063D Extract OS            00 (0) 'MS-DOS'\n+22063E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21EA1C Compression Method    0008 (8) 'Deflated'\n-21EA1E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21EA22 CRC                   A6E18129 (2799796521)\n-21EA26 Compressed Size       00000222 (546)\n-21EA2A Uncompressed Size     000003BF (959)\n-21EA2E Filename Length       0036 (54)\n-21EA30 Extra Length          0000 (0)\n-21EA32 Comment Length        0000 (0)\n-21EA34 Disk Start            0000 (0)\n-21EA36 Int File Attributes   0000 (0)\n+220640 Compression Method    0008 (8) 'Deflated'\n+220642 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220646 CRC                   00000000 (0)\n+22064A Compressed Size       00000002 (2)\n+22064E Uncompressed Size     00000000 (0)\n+220652 Filename Length       0023 (35)\n+220654 Extra Length          0000 (0)\n+220656 Comment Length        0000 (0)\n+220658 Disk Start            0000 (0)\n+22065A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21EA38 Ext File Attributes   00000000 (0)\n-21EA3C Local Header Offset   0007A148 (500040)\n-21EA40 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22065C Ext File Attributes   00000000 (0)\n+220660 Local Header Offset   000AAEAF (700079)\n+220664 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21EA40: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220664: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21EA76 CENTRAL HEADER #553   02014B50 (33639248)\n-21EA7A Created Zip Spec      14 (20) '2.0'\n-21EA7B Created OS            00 (0) 'MS-DOS'\n-21EA7C Extract Zip Spec      14 (20) '2.0'\n-21EA7D Extract OS            00 (0) 'MS-DOS'\n-21EA7E General Purpose Flag  0808 (2056)\n+220687 CENTRAL HEADER #553   02014B50 (33639248)\n+22068B Created Zip Spec      14 (20) '2.0'\n+22068C Created OS            00 (0) 'MS-DOS'\n+22068D Extract Zip Spec      14 (20) '2.0'\n+22068E Extract OS            00 (0) 'MS-DOS'\n+22068F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21EA80 Compression Method    0008 (8) 'Deflated'\n-21EA82 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21EA86 CRC                   0D4F07B4 (223283124)\n-21EA8A Compressed Size       00000250 (592)\n-21EA8E Uncompressed Size     0000042F (1071)\n-21EA92 Filename Length       0033 (51)\n-21EA94 Extra Length          0000 (0)\n-21EA96 Comment Length        0000 (0)\n-21EA98 Disk Start            0000 (0)\n-21EA9A Int File Attributes   0000 (0)\n+220691 Compression Method    0008 (8) 'Deflated'\n+220693 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220697 CRC                   DF16DFCA (3742818250)\n+22069B Compressed Size       000002DA (730)\n+22069F Uncompressed Size     000005D0 (1488)\n+2206A3 Filename Length       0030 (48)\n+2206A5 Extra Length          0000 (0)\n+2206A7 Comment Length        0000 (0)\n+2206A9 Disk Start            0000 (0)\n+2206AB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21EA9C Ext File Attributes   00000000 (0)\n-21EAA0 Local Header Offset   0007A3CE (500686)\n-21EAA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2206AD Ext File Attributes   00000000 (0)\n+2206B1 Local Header Offset   000AAF02 (700162)\n+2206B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21EAA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2206B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21EAD7 CENTRAL HEADER #554   02014B50 (33639248)\n-21EADB Created Zip Spec      14 (20) '2.0'\n-21EADC Created OS            00 (0) 'MS-DOS'\n-21EADD Extract Zip Spec      14 (20) '2.0'\n-21EADE Extract OS            00 (0) 'MS-DOS'\n-21EADF General Purpose Flag  0808 (2056)\n+2206E5 CENTRAL HEADER #554   02014B50 (33639248)\n+2206E9 Created Zip Spec      14 (20) '2.0'\n+2206EA Created OS            00 (0) 'MS-DOS'\n+2206EB Extract Zip Spec      14 (20) '2.0'\n+2206EC Extract OS            00 (0) 'MS-DOS'\n+2206ED General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21EAE1 Compression Method    0008 (8) 'Deflated'\n-21EAE3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21EAE7 CRC                   E90F01CB (3910074827)\n-21EAEB Compressed Size       000004E1 (1249)\n-21EAEF Uncompressed Size     00000D8D (3469)\n-21EAF3 Filename Length       0038 (56)\n-21EAF5 Extra Length          0000 (0)\n-21EAF7 Comment Length        0000 (0)\n-21EAF9 Disk Start            0000 (0)\n-21EAFB Int File Attributes   0000 (0)\n+2206EF Compression Method    0008 (8) 'Deflated'\n+2206F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2206F5 CRC                   14F52AE5 (351611621)\n+2206F9 Compressed Size       000008CE (2254)\n+2206FD Uncompressed Size     00001E9C (7836)\n+220701 Filename Length       0036 (54)\n+220703 Extra Length          0000 (0)\n+220705 Comment Length        0000 (0)\n+220707 Disk Start            0000 (0)\n+220709 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21EAFD Ext File Attributes   00000000 (0)\n-21EB01 Local Header Offset   0007A67F (501375)\n-21EB05 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22070B Ext File Attributes   00000000 (0)\n+22070F Local Header Offset   000AB23A (700986)\n+220713 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21EB05: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220713: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21EB3D CENTRAL HEADER #555   02014B50 (33639248)\n-21EB41 Created Zip Spec      14 (20) '2.0'\n-21EB42 Created OS            00 (0) 'MS-DOS'\n-21EB43 Extract Zip Spec      14 (20) '2.0'\n-21EB44 Extract OS            00 (0) 'MS-DOS'\n-21EB45 General Purpose Flag  0808 (2056)\n+220749 CENTRAL HEADER #555   02014B50 (33639248)\n+22074D Created Zip Spec      14 (20) '2.0'\n+22074E Created OS            00 (0) 'MS-DOS'\n+22074F Extract Zip Spec      14 (20) '2.0'\n+220750 Extract OS            00 (0) 'MS-DOS'\n+220751 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21EB47 Compression Method    0008 (8) 'Deflated'\n-21EB49 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21EB4D CRC                   1B8CE743 (462219075)\n-21EB51 Compressed Size       0000021E (542)\n-21EB55 Uncompressed Size     000003B6 (950)\n-21EB59 Filename Length       0038 (56)\n-21EB5B Extra Length          0000 (0)\n-21EB5D Comment Length        0000 (0)\n-21EB5F Disk Start            0000 (0)\n-21EB61 Int File Attributes   0000 (0)\n+220753 Compression Method    0008 (8) 'Deflated'\n+220755 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220759 CRC                   455A049E (1163527326)\n+22075D Compressed Size       00000744 (1860)\n+220761 Uncompressed Size     00001BA0 (7072)\n+220765 Filename Length       0034 (52)\n+220767 Extra Length          0000 (0)\n+220769 Comment Length        0000 (0)\n+22076B Disk Start            0000 (0)\n+22076D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21EB63 Ext File Attributes   00000000 (0)\n-21EB67 Local Header Offset   0007ABC6 (502726)\n-21EB6B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22076F Ext File Attributes   00000000 (0)\n+220773 Local Header Offset   000ABB6C (703340)\n+220777 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21EB6B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220777: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21EBA3 CENTRAL HEADER #556   02014B50 (33639248)\n-21EBA7 Created Zip Spec      14 (20) '2.0'\n-21EBA8 Created OS            00 (0) 'MS-DOS'\n-21EBA9 Extract Zip Spec      14 (20) '2.0'\n-21EBAA Extract OS            00 (0) 'MS-DOS'\n-21EBAB General Purpose Flag  0808 (2056)\n+2207AB CENTRAL HEADER #556   02014B50 (33639248)\n+2207AF Created Zip Spec      14 (20) '2.0'\n+2207B0 Created OS            00 (0) 'MS-DOS'\n+2207B1 Extract Zip Spec      14 (20) '2.0'\n+2207B2 Extract OS            00 (0) 'MS-DOS'\n+2207B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21EBAD Compression Method    0008 (8) 'Deflated'\n-21EBAF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21EBB3 CRC                   00000000 (0)\n-21EBB7 Compressed Size       00000002 (2)\n-21EBBB Uncompressed Size     00000000 (0)\n-21EBBF Filename Length       0020 (32)\n-21EBC1 Extra Length          0000 (0)\n-21EBC3 Comment Length        0000 (0)\n-21EBC5 Disk Start            0000 (0)\n-21EBC7 Int File Attributes   0000 (0)\n+2207B5 Compression Method    0008 (8) 'Deflated'\n+2207B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2207BB CRC                   C852179E (3360823198)\n+2207BF Compressed Size       0000033F (831)\n+2207C3 Uncompressed Size     00000798 (1944)\n+2207C7 Filename Length       002E (46)\n+2207C9 Extra Length          0000 (0)\n+2207CB Comment Length        0000 (0)\n+2207CD Disk Start            0000 (0)\n+2207CF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21EBC9 Ext File Attributes   00000000 (0)\n-21EBCD Local Header Offset   0007AE4A (503370)\n-21EBD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2207D1 Ext File Attributes   00000000 (0)\n+2207D5 Local Header Offset   000AC312 (705298)\n+2207D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21EBD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2207D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21EBF1 CENTRAL HEADER #557   02014B50 (33639248)\n-21EBF5 Created Zip Spec      14 (20) '2.0'\n-21EBF6 Created OS            00 (0) 'MS-DOS'\n-21EBF7 Extract Zip Spec      14 (20) '2.0'\n-21EBF8 Extract OS            00 (0) 'MS-DOS'\n-21EBF9 General Purpose Flag  0808 (2056)\n+220807 CENTRAL HEADER #557   02014B50 (33639248)\n+22080B Created Zip Spec      14 (20) '2.0'\n+22080C Created OS            00 (0) 'MS-DOS'\n+22080D Extract Zip Spec      14 (20) '2.0'\n+22080E Extract OS            00 (0) 'MS-DOS'\n+22080F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21EBFB Compression Method    0008 (8) 'Deflated'\n-21EBFD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21EC01 CRC                   94BF4E7B (2495565435)\n-21EC05 Compressed Size       00000219 (537)\n-21EC09 Uncompressed Size     000003B5 (949)\n-21EC0D Filename Length       0031 (49)\n-21EC0F Extra Length          0000 (0)\n-21EC11 Comment Length        0000 (0)\n-21EC13 Disk Start            0000 (0)\n-21EC15 Int File Attributes   0000 (0)\n+220811 Compression Method    0008 (8) 'Deflated'\n+220813 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220817 CRC                   BD46272F (3175491375)\n+22081B Compressed Size       00000845 (2117)\n+22081F Uncompressed Size     00001CB5 (7349)\n+220823 Filename Length       0031 (49)\n+220825 Extra Length          0000 (0)\n+220827 Comment Length        0000 (0)\n+220829 Disk Start            0000 (0)\n+22082B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21EC17 Ext File Attributes   00000000 (0)\n-21EC1B Local Header Offset   0007AE9A (503450)\n-21EC1F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22082D Ext File Attributes   00000000 (0)\n+220831 Local Header Offset   000AC6AD (706221)\n+220835 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21EC1F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220835: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21EC50 CENTRAL HEADER #558   02014B50 (33639248)\n-21EC54 Created Zip Spec      14 (20) '2.0'\n-21EC55 Created OS            00 (0) 'MS-DOS'\n-21EC56 Extract Zip Spec      14 (20) '2.0'\n-21EC57 Extract OS            00 (0) 'MS-DOS'\n-21EC58 General Purpose Flag  0808 (2056)\n+220866 CENTRAL HEADER #558   02014B50 (33639248)\n+22086A Created Zip Spec      14 (20) '2.0'\n+22086B Created OS            00 (0) 'MS-DOS'\n+22086C Extract Zip Spec      14 (20) '2.0'\n+22086D Extract OS            00 (0) 'MS-DOS'\n+22086E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21EC5A Compression Method    0008 (8) 'Deflated'\n-21EC5C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21EC60 CRC                   01244711 (19154705)\n-21EC64 Compressed Size       00000293 (659)\n-21EC68 Uncompressed Size     000005BD (1469)\n-21EC6C Filename Length       002E (46)\n-21EC6E Extra Length          0000 (0)\n-21EC70 Comment Length        0000 (0)\n-21EC72 Disk Start            0000 (0)\n-21EC74 Int File Attributes   0000 (0)\n+220870 Compression Method    0008 (8) 'Deflated'\n+220872 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220876 CRC                   F51CAE43 (4112297539)\n+22087A Compressed Size       00000755 (1877)\n+22087E Uncompressed Size     00001BD5 (7125)\n+220882 Filename Length       002F (47)\n+220884 Extra Length          0000 (0)\n+220886 Comment Length        0000 (0)\n+220888 Disk Start            0000 (0)\n+22088A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21EC76 Ext File Attributes   00000000 (0)\n-21EC7A Local Header Offset   0007B112 (504082)\n-21EC7E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22088C Ext File Attributes   00000000 (0)\n+220890 Local Header Offset   000ACF51 (708433)\n+220894 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21EC7E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220894: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21ECAC CENTRAL HEADER #559   02014B50 (33639248)\n-21ECB0 Created Zip Spec      14 (20) '2.0'\n-21ECB1 Created OS            00 (0) 'MS-DOS'\n-21ECB2 Extract Zip Spec      14 (20) '2.0'\n-21ECB3 Extract OS            00 (0) 'MS-DOS'\n-21ECB4 General Purpose Flag  0808 (2056)\n+2208C3 CENTRAL HEADER #559   02014B50 (33639248)\n+2208C7 Created Zip Spec      14 (20) '2.0'\n+2208C8 Created OS            00 (0) 'MS-DOS'\n+2208C9 Extract Zip Spec      14 (20) '2.0'\n+2208CA Extract OS            00 (0) 'MS-DOS'\n+2208CB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21ECB6 Compression Method    0008 (8) 'Deflated'\n-21ECB8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21ECBC CRC                   8B9FA779 (2342496121)\n-21ECC0 Compressed Size       00000248 (584)\n-21ECC4 Uncompressed Size     0000047A (1146)\n-21ECC8 Filename Length       0035 (53)\n-21ECCA Extra Length          0000 (0)\n-21ECCC Comment Length        0000 (0)\n-21ECCE Disk Start            0000 (0)\n-21ECD0 Int File Attributes   0000 (0)\n+2208CD Compression Method    0008 (8) 'Deflated'\n+2208CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2208D3 CRC                   00000000 (0)\n+2208D7 Compressed Size       00000002 (2)\n+2208DB Uncompressed Size     00000000 (0)\n+2208DF Filename Length       0020 (32)\n+2208E1 Extra Length          0000 (0)\n+2208E3 Comment Length        0000 (0)\n+2208E5 Disk Start            0000 (0)\n+2208E7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21ECD2 Ext File Attributes   00000000 (0)\n-21ECD6 Local Header Offset   0007B401 (504833)\n-21ECDA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2208E9 Ext File Attributes   00000000 (0)\n+2208ED Local Header Offset   000AD703 (710403)\n+2208F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21ECDA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2208F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21ED0F CENTRAL HEADER #560   02014B50 (33639248)\n-21ED13 Created Zip Spec      14 (20) '2.0'\n-21ED14 Created OS            00 (0) 'MS-DOS'\n-21ED15 Extract Zip Spec      14 (20) '2.0'\n-21ED16 Extract OS            00 (0) 'MS-DOS'\n-21ED17 General Purpose Flag  0808 (2056)\n+220911 CENTRAL HEADER #560   02014B50 (33639248)\n+220915 Created Zip Spec      14 (20) '2.0'\n+220916 Created OS            00 (0) 'MS-DOS'\n+220917 Extract Zip Spec      14 (20) '2.0'\n+220918 Extract OS            00 (0) 'MS-DOS'\n+220919 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21ED19 Compression Method    0008 (8) 'Deflated'\n-21ED1B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21ED1F CRC                   00000000 (0)\n-21ED23 Compressed Size       00000002 (2)\n-21ED27 Uncompressed Size     00000000 (0)\n-21ED2B Filename Length       0020 (32)\n-21ED2D Extra Length          0000 (0)\n-21ED2F Comment Length        0000 (0)\n-21ED31 Disk Start            0000 (0)\n-21ED33 Int File Attributes   0000 (0)\n+22091B Compression Method    0008 (8) 'Deflated'\n+22091D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220921 CRC                   DB5A6031 (3680133169)\n+220925 Compressed Size       00000382 (898)\n+220929 Uncompressed Size     000007C1 (1985)\n+22092D Filename Length       003F (63)\n+22092F Extra Length          0000 (0)\n+220931 Comment Length        0000 (0)\n+220933 Disk Start            0000 (0)\n+220935 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21ED35 Ext File Attributes   00000000 (0)\n-21ED39 Local Header Offset   0007B6AC (505516)\n-21ED3D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220937 Ext File Attributes   00000000 (0)\n+22093B Local Header Offset   000AD753 (710483)\n+22093F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21ED3D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22093F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21ED5D CENTRAL HEADER #561   02014B50 (33639248)\n-21ED61 Created Zip Spec      14 (20) '2.0'\n-21ED62 Created OS            00 (0) 'MS-DOS'\n-21ED63 Extract Zip Spec      14 (20) '2.0'\n-21ED64 Extract OS            00 (0) 'MS-DOS'\n-21ED65 General Purpose Flag  0808 (2056)\n+22097E CENTRAL HEADER #561   02014B50 (33639248)\n+220982 Created Zip Spec      14 (20) '2.0'\n+220983 Created OS            00 (0) 'MS-DOS'\n+220984 Extract Zip Spec      14 (20) '2.0'\n+220985 Extract OS            00 (0) 'MS-DOS'\n+220986 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21ED67 Compression Method    0008 (8) 'Deflated'\n-21ED69 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21ED6D CRC                   6A25F272 (1780871794)\n-21ED71 Compressed Size       000004C1 (1217)\n-21ED75 Uncompressed Size     00000E60 (3680)\n-21ED79 Filename Length       002E (46)\n-21ED7B Extra Length          0000 (0)\n-21ED7D Comment Length        0000 (0)\n-21ED7F Disk Start            0000 (0)\n-21ED81 Int File Attributes   0000 (0)\n+220988 Compression Method    0008 (8) 'Deflated'\n+22098A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22098E CRC                   695EFF74 (1767833460)\n+220992 Compressed Size       00000F43 (3907)\n+220996 Uncompressed Size     00004A07 (18951)\n+22099A Filename Length       0032 (50)\n+22099C Extra Length          0000 (0)\n+22099E Comment Length        0000 (0)\n+2209A0 Disk Start            0000 (0)\n+2209A2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21ED83 Ext File Attributes   00000000 (0)\n-21ED87 Local Header Offset   0007B6FC (505596)\n-21ED8B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2209A4 Ext File Attributes   00000000 (0)\n+2209A8 Local Header Offset   000ADB42 (711490)\n+2209AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21ED8B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2209AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21EDB9 CENTRAL HEADER #562   02014B50 (33639248)\n-21EDBD Created Zip Spec      14 (20) '2.0'\n-21EDBE Created OS            00 (0) 'MS-DOS'\n-21EDBF Extract Zip Spec      14 (20) '2.0'\n-21EDC0 Extract OS            00 (0) 'MS-DOS'\n-21EDC1 General Purpose Flag  0808 (2056)\n+2209DE CENTRAL HEADER #562   02014B50 (33639248)\n+2209E2 Created Zip Spec      14 (20) '2.0'\n+2209E3 Created OS            00 (0) 'MS-DOS'\n+2209E4 Extract Zip Spec      14 (20) '2.0'\n+2209E5 Extract OS            00 (0) 'MS-DOS'\n+2209E6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21EDC3 Compression Method    0008 (8) 'Deflated'\n-21EDC5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21EDC9 CRC                   94774B8E (2490846094)\n-21EDCD Compressed Size       0000024C (588)\n-21EDD1 Uncompressed Size     00000411 (1041)\n-21EDD5 Filename Length       0034 (52)\n-21EDD7 Extra Length          0000 (0)\n-21EDD9 Comment Length        0000 (0)\n-21EDDB Disk Start            0000 (0)\n-21EDDD Int File Attributes   0000 (0)\n+2209E8 Compression Method    0008 (8) 'Deflated'\n+2209EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2209EE CRC                   00000000 (0)\n+2209F2 Compressed Size       00000002 (2)\n+2209F6 Uncompressed Size     00000000 (0)\n+2209FA Filename Length       0020 (32)\n+2209FC Extra Length          0000 (0)\n+2209FE Comment Length        0000 (0)\n+220A00 Disk Start            0000 (0)\n+220A02 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21EDDF Ext File Attributes   00000000 (0)\n-21EDE3 Local Header Offset   0007BC19 (506905)\n-21EDE7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220A04 Ext File Attributes   00000000 (0)\n+220A08 Local Header Offset   000AEAE5 (715493)\n+220A0C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21EDE7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220A0C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21EE1B CENTRAL HEADER #563   02014B50 (33639248)\n-21EE1F Created Zip Spec      14 (20) '2.0'\n-21EE20 Created OS            00 (0) 'MS-DOS'\n-21EE21 Extract Zip Spec      14 (20) '2.0'\n-21EE22 Extract OS            00 (0) 'MS-DOS'\n-21EE23 General Purpose Flag  0808 (2056)\n+220A2C CENTRAL HEADER #563   02014B50 (33639248)\n+220A30 Created Zip Spec      14 (20) '2.0'\n+220A31 Created OS            00 (0) 'MS-DOS'\n+220A32 Extract Zip Spec      14 (20) '2.0'\n+220A33 Extract OS            00 (0) 'MS-DOS'\n+220A34 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21EE25 Compression Method    0008 (8) 'Deflated'\n-21EE27 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21EE2B CRC                   A95D9412 (2841482258)\n-21EE2F Compressed Size       000002B6 (694)\n-21EE33 Uncompressed Size     00000532 (1330)\n-21EE37 Filename Length       003D (61)\n-21EE39 Extra Length          0000 (0)\n-21EE3B Comment Length        0000 (0)\n-21EE3D Disk Start            0000 (0)\n-21EE3F Int File Attributes   0000 (0)\n+220A36 Compression Method    0008 (8) 'Deflated'\n+220A38 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220A3C CRC                   FB06EFC4 (4211535812)\n+220A40 Compressed Size       000003AF (943)\n+220A44 Uncompressed Size     00000833 (2099)\n+220A48 Filename Length       002E (46)\n+220A4A Extra Length          0000 (0)\n+220A4C Comment Length        0000 (0)\n+220A4E Disk Start            0000 (0)\n+220A50 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21EE41 Ext File Attributes   00000000 (0)\n-21EE45 Local Header Offset   0007BEC7 (507591)\n-21EE49 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220A52 Ext File Attributes   00000000 (0)\n+220A56 Local Header Offset   000AEB35 (715573)\n+220A5A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21EE49: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220A5A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21EE86 CENTRAL HEADER #564   02014B50 (33639248)\n-21EE8A Created Zip Spec      14 (20) '2.0'\n-21EE8B Created OS            00 (0) 'MS-DOS'\n-21EE8C Extract Zip Spec      14 (20) '2.0'\n-21EE8D Extract OS            00 (0) 'MS-DOS'\n-21EE8E General Purpose Flag  0808 (2056)\n+220A88 CENTRAL HEADER #564   02014B50 (33639248)\n+220A8C Created Zip Spec      14 (20) '2.0'\n+220A8D Created OS            00 (0) 'MS-DOS'\n+220A8E Extract Zip Spec      14 (20) '2.0'\n+220A8F Extract OS            00 (0) 'MS-DOS'\n+220A90 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21EE90 Compression Method    0008 (8) 'Deflated'\n-21EE92 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21EE96 CRC                   578BE304 (1468785412)\n-21EE9A Compressed Size       000002B2 (690)\n-21EE9E Uncompressed Size     00000514 (1300)\n-21EEA2 Filename Length       003F (63)\n-21EEA4 Extra Length          0000 (0)\n-21EEA6 Comment Length        0000 (0)\n-21EEA8 Disk Start            0000 (0)\n-21EEAA Int File Attributes   0000 (0)\n+220A92 Compression Method    0008 (8) 'Deflated'\n+220A94 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220A98 CRC                   00000000 (0)\n+220A9C Compressed Size       00000002 (2)\n+220AA0 Uncompressed Size     00000000 (0)\n+220AA4 Filename Length       0017 (23)\n+220AA6 Extra Length          0000 (0)\n+220AA8 Comment Length        0000 (0)\n+220AAA Disk Start            0000 (0)\n+220AAC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21EEAC Ext File Attributes   00000000 (0)\n-21EEB0 Local Header Offset   0007C1E8 (508392)\n-21EEB4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220AAE Ext File Attributes   00000000 (0)\n+220AB2 Local Header Offset   000AEF40 (716608)\n+220AB6 Filename              'XXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21EEB4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220AB6: Filename 'XXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21EEF3 CENTRAL HEADER #565   02014B50 (33639248)\n-21EEF7 Created Zip Spec      14 (20) '2.0'\n-21EEF8 Created OS            00 (0) 'MS-DOS'\n-21EEF9 Extract Zip Spec      14 (20) '2.0'\n-21EEFA Extract OS            00 (0) 'MS-DOS'\n-21EEFB General Purpose Flag  0808 (2056)\n+220ACD CENTRAL HEADER #565   02014B50 (33639248)\n+220AD1 Created Zip Spec      14 (20) '2.0'\n+220AD2 Created OS            00 (0) 'MS-DOS'\n+220AD3 Extract Zip Spec      14 (20) '2.0'\n+220AD4 Extract OS            00 (0) 'MS-DOS'\n+220AD5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21EEFD Compression Method    0008 (8) 'Deflated'\n-21EEFF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21EF03 CRC                   8AE0BB27 (2329983783)\n-21EF07 Compressed Size       000002F3 (755)\n-21EF0B Uncompressed Size     000005DA (1498)\n-21EF0F Filename Length       003F (63)\n-21EF11 Extra Length          0000 (0)\n-21EF13 Comment Length        0000 (0)\n-21EF15 Disk Start            0000 (0)\n-21EF17 Int File Attributes   0000 (0)\n+220AD7 Compression Method    0008 (8) 'Deflated'\n+220AD9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220ADD CRC                   18AD9BF8 (414030840)\n+220AE1 Compressed Size       0000071D (1821)\n+220AE5 Uncompressed Size     0000177E (6014)\n+220AE9 Filename Length       0033 (51)\n+220AEB Extra Length          0000 (0)\n+220AED Comment Length        0000 (0)\n+220AEF Disk Start            0000 (0)\n+220AF1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21EF19 Ext File Attributes   00000000 (0)\n-21EF1D Local Header Offset   0007C507 (509191)\n-21EF21 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220AF3 Ext File Attributes   00000000 (0)\n+220AF7 Local Header Offset   000AEF87 (716679)\n+220AFB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21EF21: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220AFB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21EF60 CENTRAL HEADER #566   02014B50 (33639248)\n-21EF64 Created Zip Spec      14 (20) '2.0'\n-21EF65 Created OS            00 (0) 'MS-DOS'\n-21EF66 Extract Zip Spec      14 (20) '2.0'\n-21EF67 Extract OS            00 (0) 'MS-DOS'\n-21EF68 General Purpose Flag  0808 (2056)\n+220B2E CENTRAL HEADER #566   02014B50 (33639248)\n+220B32 Created Zip Spec      14 (20) '2.0'\n+220B33 Created OS            00 (0) 'MS-DOS'\n+220B34 Extract Zip Spec      14 (20) '2.0'\n+220B35 Extract OS            00 (0) 'MS-DOS'\n+220B36 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21EF6A Compression Method    0008 (8) 'Deflated'\n-21EF6C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21EF70 CRC                   D8EB7635 (3639309877)\n-21EF74 Compressed Size       000002B6 (694)\n-21EF78 Uncompressed Size     0000052E (1326)\n-21EF7C Filename Length       003C (60)\n-21EF7E Extra Length          0000 (0)\n-21EF80 Comment Length        0000 (0)\n-21EF82 Disk Start            0000 (0)\n-21EF84 Int File Attributes   0000 (0)\n+220B38 Compression Method    0008 (8) 'Deflated'\n+220B3A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220B3E CRC                   1BB78BFC (465013756)\n+220B42 Compressed Size       000002C1 (705)\n+220B46 Uncompressed Size     0000057E (1406)\n+220B4A Filename Length       0034 (52)\n+220B4C Extra Length          0000 (0)\n+220B4E Comment Length        0000 (0)\n+220B50 Disk Start            0000 (0)\n+220B52 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21EF86 Ext File Attributes   00000000 (0)\n-21EF8A Local Header Offset   0007C867 (510055)\n-21EF8E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220B54 Ext File Attributes   00000000 (0)\n+220B58 Local Header Offset   000AF705 (718597)\n+220B5C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21EF8E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220B5C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21EFCA CENTRAL HEADER #567   02014B50 (33639248)\n-21EFCE Created Zip Spec      14 (20) '2.0'\n-21EFCF Created OS            00 (0) 'MS-DOS'\n-21EFD0 Extract Zip Spec      14 (20) '2.0'\n-21EFD1 Extract OS            00 (0) 'MS-DOS'\n-21EFD2 General Purpose Flag  0808 (2056)\n+220B90 CENTRAL HEADER #567   02014B50 (33639248)\n+220B94 Created Zip Spec      14 (20) '2.0'\n+220B95 Created OS            00 (0) 'MS-DOS'\n+220B96 Extract Zip Spec      14 (20) '2.0'\n+220B97 Extract OS            00 (0) 'MS-DOS'\n+220B98 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21EFD4 Compression Method    0008 (8) 'Deflated'\n-21EFD6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21EFDA CRC                   7C7DD03D (2088620093)\n-21EFDE Compressed Size       000002B5 (693)\n-21EFE2 Uncompressed Size     00000528 (1320)\n-21EFE6 Filename Length       003B (59)\n-21EFE8 Extra Length          0000 (0)\n-21EFEA Comment Length        0000 (0)\n-21EFEC Disk Start            0000 (0)\n-21EFEE Int File Attributes   0000 (0)\n+220B9A Compression Method    0008 (8) 'Deflated'\n+220B9C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220BA0 CRC                   163DDCF2 (373153010)\n+220BA4 Compressed Size       00000272 (626)\n+220BA8 Uncompressed Size     00000482 (1154)\n+220BAC Filename Length       0031 (49)\n+220BAE Extra Length          0000 (0)\n+220BB0 Comment Length        0000 (0)\n+220BB2 Disk Start            0000 (0)\n+220BB4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21EFF0 Ext File Attributes   00000000 (0)\n-21EFF4 Local Header Offset   0007CB87 (510855)\n-21EFF8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220BB6 Ext File Attributes   00000000 (0)\n+220BBA Local Header Offset   000AFA28 (719400)\n+220BBE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21EFF8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220BBE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F033 CENTRAL HEADER #568   02014B50 (33639248)\n-21F037 Created Zip Spec      14 (20) '2.0'\n-21F038 Created OS            00 (0) 'MS-DOS'\n-21F039 Extract Zip Spec      14 (20) '2.0'\n-21F03A Extract OS            00 (0) 'MS-DOS'\n-21F03B General Purpose Flag  0808 (2056)\n+220BEF CENTRAL HEADER #568   02014B50 (33639248)\n+220BF3 Created Zip Spec      14 (20) '2.0'\n+220BF4 Created OS            00 (0) 'MS-DOS'\n+220BF5 Extract Zip Spec      14 (20) '2.0'\n+220BF6 Extract OS            00 (0) 'MS-DOS'\n+220BF7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F03D Compression Method    0008 (8) 'Deflated'\n-21F03F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F043 CRC                   39AACB0F (967494415)\n-21F047 Compressed Size       000002B2 (690)\n-21F04B Uncompressed Size     0000052E (1326)\n-21F04F Filename Length       003D (61)\n-21F051 Extra Length          0000 (0)\n-21F053 Comment Length        0000 (0)\n-21F055 Disk Start            0000 (0)\n-21F057 Int File Attributes   0000 (0)\n+220BF9 Compression Method    0008 (8) 'Deflated'\n+220BFB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220BFF CRC                   6F7884D3 (1870169299)\n+220C03 Compressed Size       00000341 (833)\n+220C07 Uncompressed Size     0000064F (1615)\n+220C0B Filename Length       0021 (33)\n+220C0D Extra Length          0000 (0)\n+220C0F Comment Length        0000 (0)\n+220C11 Disk Start            0000 (0)\n+220C13 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F059 Ext File Attributes   00000000 (0)\n-21F05D Local Header Offset   0007CEA5 (511653)\n-21F061 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220C15 Ext File Attributes   00000000 (0)\n+220C19 Local Header Offset   000AFCF9 (720121)\n+220C1D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F061: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220C1D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F09E CENTRAL HEADER #569   02014B50 (33639248)\n-21F0A2 Created Zip Spec      14 (20) '2.0'\n-21F0A3 Created OS            00 (0) 'MS-DOS'\n-21F0A4 Extract Zip Spec      14 (20) '2.0'\n-21F0A5 Extract OS            00 (0) 'MS-DOS'\n-21F0A6 General Purpose Flag  0808 (2056)\n+220C3E CENTRAL HEADER #569   02014B50 (33639248)\n+220C42 Created Zip Spec      14 (20) '2.0'\n+220C43 Created OS            00 (0) 'MS-DOS'\n+220C44 Extract Zip Spec      14 (20) '2.0'\n+220C45 Extract OS            00 (0) 'MS-DOS'\n+220C46 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F0A8 Compression Method    0008 (8) 'Deflated'\n-21F0AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F0AE CRC                   5BF59138 (1542820152)\n-21F0B2 Compressed Size       000002B4 (692)\n-21F0B6 Uncompressed Size     00000524 (1316)\n-21F0BA Filename Length       003A (58)\n-21F0BC Extra Length          0000 (0)\n-21F0BE Comment Length        0000 (0)\n-21F0C0 Disk Start            0000 (0)\n-21F0C2 Int File Attributes   0000 (0)\n+220C48 Compression Method    0008 (8) 'Deflated'\n+220C4A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220C4E CRC                   7837B4D1 (2016916689)\n+220C52 Compressed Size       000003EA (1002)\n+220C56 Uncompressed Size     0000091E (2334)\n+220C5A Filename Length       002B (43)\n+220C5C Extra Length          0000 (0)\n+220C5E Comment Length        0000 (0)\n+220C60 Disk Start            0000 (0)\n+220C62 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F0C4 Ext File Attributes   00000000 (0)\n-21F0C8 Local Header Offset   0007D1C2 (512450)\n-21F0CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220C64 Ext File Attributes   00000000 (0)\n+220C68 Local Header Offset   000B0089 (721033)\n+220C6C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F0CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220C6C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F106 CENTRAL HEADER #570   02014B50 (33639248)\n-21F10A Created Zip Spec      14 (20) '2.0'\n-21F10B Created OS            00 (0) 'MS-DOS'\n-21F10C Extract Zip Spec      14 (20) '2.0'\n-21F10D Extract OS            00 (0) 'MS-DOS'\n-21F10E General Purpose Flag  0808 (2056)\n+220C97 CENTRAL HEADER #570   02014B50 (33639248)\n+220C9B Created Zip Spec      14 (20) '2.0'\n+220C9C Created OS            00 (0) 'MS-DOS'\n+220C9D Extract Zip Spec      14 (20) '2.0'\n+220C9E Extract OS            00 (0) 'MS-DOS'\n+220C9F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F110 Compression Method    0008 (8) 'Deflated'\n-21F112 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F116 CRC                   9AA4AEC4 (2594483908)\n-21F11A Compressed Size       00000295 (661)\n-21F11E Uncompressed Size     000004F3 (1267)\n-21F122 Filename Length       003E (62)\n-21F124 Extra Length          0000 (0)\n-21F126 Comment Length        0000 (0)\n-21F128 Disk Start            0000 (0)\n-21F12A Int File Attributes   0000 (0)\n+220CA1 Compression Method    0008 (8) 'Deflated'\n+220CA3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220CA7 CRC                   1FC70E2E (533138990)\n+220CAB Compressed Size       000005DC (1500)\n+220CAF Uncompressed Size     000012E0 (4832)\n+220CB3 Filename Length       0029 (41)\n+220CB5 Extra Length          0000 (0)\n+220CB7 Comment Length        0000 (0)\n+220CB9 Disk Start            0000 (0)\n+220CBB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F12C Ext File Attributes   00000000 (0)\n-21F130 Local Header Offset   0007D4DE (513246)\n-21F134 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220CBD Ext File Attributes   00000000 (0)\n+220CC1 Local Header Offset   000B04CC (722124)\n+220CC5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F134: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220CC5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F172 CENTRAL HEADER #571   02014B50 (33639248)\n-21F176 Created Zip Spec      14 (20) '2.0'\n-21F177 Created OS            00 (0) 'MS-DOS'\n-21F178 Extract Zip Spec      14 (20) '2.0'\n-21F179 Extract OS            00 (0) 'MS-DOS'\n-21F17A General Purpose Flag  0808 (2056)\n+220CEE CENTRAL HEADER #571   02014B50 (33639248)\n+220CF2 Created Zip Spec      14 (20) '2.0'\n+220CF3 Created OS            00 (0) 'MS-DOS'\n+220CF4 Extract Zip Spec      14 (20) '2.0'\n+220CF5 Extract OS            00 (0) 'MS-DOS'\n+220CF6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F17C Compression Method    0008 (8) 'Deflated'\n-21F17E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F182 CRC                   FD88956D (4253586797)\n-21F186 Compressed Size       000002B4 (692)\n-21F18A Uncompressed Size     00000529 (1321)\n-21F18E Filename Length       003B (59)\n-21F190 Extra Length          0000 (0)\n-21F192 Comment Length        0000 (0)\n-21F194 Disk Start            0000 (0)\n-21F196 Int File Attributes   0000 (0)\n+220CF8 Compression Method    0008 (8) 'Deflated'\n+220CFA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220CFE CRC                   34F679E6 (888568294)\n+220D02 Compressed Size       0000026B (619)\n+220D06 Uncompressed Size     00000485 (1157)\n+220D0A Filename Length       0028 (40)\n+220D0C Extra Length          0000 (0)\n+220D0E Comment Length        0000 (0)\n+220D10 Disk Start            0000 (0)\n+220D12 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F198 Ext File Attributes   00000000 (0)\n-21F19C Local Header Offset   0007D7DF (514015)\n-21F1A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220D14 Ext File Attributes   00000000 (0)\n+220D18 Local Header Offset   000B0AFF (723711)\n+220D1C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F1A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220D1C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F1DB CENTRAL HEADER #572   02014B50 (33639248)\n-21F1DF Created Zip Spec      14 (20) '2.0'\n-21F1E0 Created OS            00 (0) 'MS-DOS'\n-21F1E1 Extract Zip Spec      14 (20) '2.0'\n-21F1E2 Extract OS            00 (0) 'MS-DOS'\n-21F1E3 General Purpose Flag  0808 (2056)\n+220D44 CENTRAL HEADER #572   02014B50 (33639248)\n+220D48 Created Zip Spec      14 (20) '2.0'\n+220D49 Created OS            00 (0) 'MS-DOS'\n+220D4A Extract Zip Spec      14 (20) '2.0'\n+220D4B Extract OS            00 (0) 'MS-DOS'\n+220D4C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F1E5 Compression Method    0008 (8) 'Deflated'\n-21F1E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F1EB CRC                   88F80863 (2297956451)\n-21F1EF Compressed Size       0000025F (607)\n-21F1F3 Uncompressed Size     00000452 (1106)\n-21F1F7 Filename Length       003C (60)\n-21F1F9 Extra Length          0000 (0)\n-21F1FB Comment Length        0000 (0)\n-21F1FD Disk Start            0000 (0)\n-21F1FF Int File Attributes   0000 (0)\n+220D4E Compression Method    0008 (8) 'Deflated'\n+220D50 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220D54 CRC                   A2725211 (2725401105)\n+220D58 Compressed Size       0000062D (1581)\n+220D5C Uncompressed Size     0000128F (4751)\n+220D60 Filename Length       0030 (48)\n+220D62 Extra Length          0000 (0)\n+220D64 Comment Length        0000 (0)\n+220D66 Disk Start            0000 (0)\n+220D68 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F201 Ext File Attributes   00000000 (0)\n-21F205 Local Header Offset   0007DAFC (514812)\n-21F209 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220D6A Ext File Attributes   00000000 (0)\n+220D6E Local Header Offset   000B0DC0 (724416)\n+220D72 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F209: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220D72: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F245 CENTRAL HEADER #573   02014B50 (33639248)\n-21F249 Created Zip Spec      14 (20) '2.0'\n-21F24A Created OS            00 (0) 'MS-DOS'\n-21F24B Extract Zip Spec      14 (20) '2.0'\n-21F24C Extract OS            00 (0) 'MS-DOS'\n-21F24D General Purpose Flag  0808 (2056)\n+220DA2 CENTRAL HEADER #573   02014B50 (33639248)\n+220DA6 Created Zip Spec      14 (20) '2.0'\n+220DA7 Created OS            00 (0) 'MS-DOS'\n+220DA8 Extract Zip Spec      14 (20) '2.0'\n+220DA9 Extract OS            00 (0) 'MS-DOS'\n+220DAA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F24F Compression Method    0008 (8) 'Deflated'\n-21F251 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F255 CRC                   00000000 (0)\n-21F259 Compressed Size       00000002 (2)\n-21F25D Uncompressed Size     00000000 (0)\n-21F261 Filename Length       0029 (41)\n-21F263 Extra Length          0000 (0)\n-21F265 Comment Length        0000 (0)\n-21F267 Disk Start            0000 (0)\n-21F269 Int File Attributes   0000 (0)\n+220DAC Compression Method    0008 (8) 'Deflated'\n+220DAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220DB2 CRC                   646CD426 (1684853798)\n+220DB6 Compressed Size       0000055F (1375)\n+220DBA Uncompressed Size     0000153D (5437)\n+220DBE Filename Length       0026 (38)\n+220DC0 Extra Length          0000 (0)\n+220DC2 Comment Length        0000 (0)\n+220DC4 Disk Start            0000 (0)\n+220DC6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F26B Ext File Attributes   00000000 (0)\n-21F26F Local Header Offset   0007DDC5 (515525)\n-21F273 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220DC8 Ext File Attributes   00000000 (0)\n+220DCC Local Header Offset   000B144B (726091)\n+220DD0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F273: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220DD0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F29C CENTRAL HEADER #574   02014B50 (33639248)\n-21F2A0 Created Zip Spec      14 (20) '2.0'\n-21F2A1 Created OS            00 (0) 'MS-DOS'\n-21F2A2 Extract Zip Spec      14 (20) '2.0'\n-21F2A3 Extract OS            00 (0) 'MS-DOS'\n-21F2A4 General Purpose Flag  0808 (2056)\n+220DF6 CENTRAL HEADER #574   02014B50 (33639248)\n+220DFA Created Zip Spec      14 (20) '2.0'\n+220DFB Created OS            00 (0) 'MS-DOS'\n+220DFC Extract Zip Spec      14 (20) '2.0'\n+220DFD Extract OS            00 (0) 'MS-DOS'\n+220DFE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F2A6 Compression Method    0008 (8) 'Deflated'\n-21F2A8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F2AC CRC                   56E92431 (1458119729)\n-21F2B0 Compressed Size       000004C7 (1223)\n-21F2B4 Uncompressed Size     00000D31 (3377)\n-21F2B8 Filename Length       0041 (65)\n-21F2BA Extra Length          0000 (0)\n-21F2BC Comment Length        0000 (0)\n-21F2BE Disk Start            0000 (0)\n-21F2C0 Int File Attributes   0000 (0)\n+220E00 Compression Method    0008 (8) 'Deflated'\n+220E02 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220E06 CRC                   D4D0313F (3570413887)\n+220E0A Compressed Size       0000028E (654)\n+220E0E Uncompressed Size     000004DD (1245)\n+220E12 Filename Length       0033 (51)\n+220E14 Extra Length          0000 (0)\n+220E16 Comment Length        0000 (0)\n+220E18 Disk Start            0000 (0)\n+220E1A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F2C2 Ext File Attributes   00000000 (0)\n-21F2C6 Local Header Offset   0007DE1E (515614)\n-21F2CA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220E1C Ext File Attributes   00000000 (0)\n+220E20 Local Header Offset   000B19FE (727550)\n+220E24 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F2CA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220E24: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F30B CENTRAL HEADER #575   02014B50 (33639248)\n-21F30F Created Zip Spec      14 (20) '2.0'\n-21F310 Created OS            00 (0) 'MS-DOS'\n-21F311 Extract Zip Spec      14 (20) '2.0'\n-21F312 Extract OS            00 (0) 'MS-DOS'\n-21F313 General Purpose Flag  0808 (2056)\n+220E57 CENTRAL HEADER #575   02014B50 (33639248)\n+220E5B Created Zip Spec      14 (20) '2.0'\n+220E5C Created OS            00 (0) 'MS-DOS'\n+220E5D Extract Zip Spec      14 (20) '2.0'\n+220E5E Extract OS            00 (0) 'MS-DOS'\n+220E5F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F315 Compression Method    0008 (8) 'Deflated'\n-21F317 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F31B CRC                   54A7512C (1420251436)\n-21F31F Compressed Size       0000037E (894)\n-21F323 Uncompressed Size     00000774 (1908)\n-21F327 Filename Length       0044 (68)\n-21F329 Extra Length          0000 (0)\n-21F32B Comment Length        0000 (0)\n-21F32D Disk Start            0000 (0)\n-21F32F Int File Attributes   0000 (0)\n+220E61 Compression Method    0008 (8) 'Deflated'\n+220E63 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220E67 CRC                   00000000 (0)\n+220E6B Compressed Size       00000002 (2)\n+220E6F Uncompressed Size     00000000 (0)\n+220E73 Filename Length       001B (27)\n+220E75 Extra Length          0000 (0)\n+220E77 Comment Length        0000 (0)\n+220E79 Disk Start            0000 (0)\n+220E7B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F331 Ext File Attributes   00000000 (0)\n-21F335 Local Header Offset   0007E354 (516948)\n-21F339 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220E7D Ext File Attributes   00000000 (0)\n+220E81 Local Header Offset   000B1CED (728301)\n+220E85 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F339: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220E85: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F37D CENTRAL HEADER #576   02014B50 (33639248)\n-21F381 Created Zip Spec      14 (20) '2.0'\n-21F382 Created OS            00 (0) 'MS-DOS'\n-21F383 Extract Zip Spec      14 (20) '2.0'\n-21F384 Extract OS            00 (0) 'MS-DOS'\n-21F385 General Purpose Flag  0808 (2056)\n+220EA0 CENTRAL HEADER #576   02014B50 (33639248)\n+220EA4 Created Zip Spec      14 (20) '2.0'\n+220EA5 Created OS            00 (0) 'MS-DOS'\n+220EA6 Extract Zip Spec      14 (20) '2.0'\n+220EA7 Extract OS            00 (0) 'MS-DOS'\n+220EA8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F387 Compression Method    0008 (8) 'Deflated'\n-21F389 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F38D CRC                   44B63BF0 (1152793584)\n-21F391 Compressed Size       000002B1 (689)\n-21F395 Uncompressed Size     0000050F (1295)\n-21F399 Filename Length       004C (76)\n-21F39B Extra Length          0000 (0)\n-21F39D Comment Length        0000 (0)\n-21F39F Disk Start            0000 (0)\n-21F3A1 Int File Attributes   0000 (0)\n+220EAA Compression Method    0008 (8) 'Deflated'\n+220EAC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220EB0 CRC                   63368ED1 (1664519889)\n+220EB4 Compressed Size       00000234 (564)\n+220EB8 Uncompressed Size     000003FE (1022)\n+220EBC Filename Length       0037 (55)\n+220EBE Extra Length          0000 (0)\n+220EC0 Comment Length        0000 (0)\n+220EC2 Disk Start            0000 (0)\n+220EC4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F3A3 Ext File Attributes   00000000 (0)\n-21F3A7 Local Header Offset   0007E744 (517956)\n-21F3AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220EC6 Ext File Attributes   00000000 (0)\n+220ECA Local Header Offset   000B1D38 (728376)\n+220ECE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F3AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220ECE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F3F7 CENTRAL HEADER #577   02014B50 (33639248)\n-21F3FB Created Zip Spec      14 (20) '2.0'\n-21F3FC Created OS            00 (0) 'MS-DOS'\n-21F3FD Extract Zip Spec      14 (20) '2.0'\n-21F3FE Extract OS            00 (0) 'MS-DOS'\n-21F3FF General Purpose Flag  0808 (2056)\n+220F05 CENTRAL HEADER #577   02014B50 (33639248)\n+220F09 Created Zip Spec      14 (20) '2.0'\n+220F0A Created OS            00 (0) 'MS-DOS'\n+220F0B Extract Zip Spec      14 (20) '2.0'\n+220F0C Extract OS            00 (0) 'MS-DOS'\n+220F0D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F401 Compression Method    0008 (8) 'Deflated'\n-21F403 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F407 CRC                   6FDF7D92 (1876917650)\n-21F40B Compressed Size       000002BA (698)\n-21F40F Uncompressed Size     00000538 (1336)\n-21F413 Filename Length       004C (76)\n-21F415 Extra Length          0000 (0)\n-21F417 Comment Length        0000 (0)\n-21F419 Disk Start            0000 (0)\n-21F41B Int File Attributes   0000 (0)\n+220F0F Compression Method    0008 (8) 'Deflated'\n+220F11 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220F15 CRC                   876E0335 (2272133941)\n+220F19 Compressed Size       00000630 (1584)\n+220F1D Uncompressed Size     00001328 (4904)\n+220F21 Filename Length       0030 (48)\n+220F23 Extra Length          0000 (0)\n+220F25 Comment Length        0000 (0)\n+220F27 Disk Start            0000 (0)\n+220F29 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F41D Ext File Attributes   00000000 (0)\n-21F421 Local Header Offset   0007EA6F (518767)\n-21F425 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220F2B Ext File Attributes   00000000 (0)\n+220F2F Local Header Offset   000B1FD1 (729041)\n+220F33 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F425: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220F33: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F471 CENTRAL HEADER #578   02014B50 (33639248)\n-21F475 Created Zip Spec      14 (20) '2.0'\n-21F476 Created OS            00 (0) 'MS-DOS'\n-21F477 Extract Zip Spec      14 (20) '2.0'\n-21F478 Extract OS            00 (0) 'MS-DOS'\n-21F479 General Purpose Flag  0808 (2056)\n+220F63 CENTRAL HEADER #578   02014B50 (33639248)\n+220F67 Created Zip Spec      14 (20) '2.0'\n+220F68 Created OS            00 (0) 'MS-DOS'\n+220F69 Extract Zip Spec      14 (20) '2.0'\n+220F6A Extract OS            00 (0) 'MS-DOS'\n+220F6B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F47B Compression Method    0008 (8) 'Deflated'\n-21F47D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F481 CRC                   E28B1205 (3800764933)\n-21F485 Compressed Size       000002A4 (676)\n-21F489 Uncompressed Size     000004D6 (1238)\n-21F48D Filename Length       0049 (73)\n-21F48F Extra Length          0000 (0)\n-21F491 Comment Length        0000 (0)\n-21F493 Disk Start            0000 (0)\n-21F495 Int File Attributes   0000 (0)\n+220F6D Compression Method    0008 (8) 'Deflated'\n+220F6F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220F73 CRC                   1E67CB82 (510118786)\n+220F77 Compressed Size       00000327 (807)\n+220F7B Uncompressed Size     00000A90 (2704)\n+220F7F Filename Length       002F (47)\n+220F81 Extra Length          0000 (0)\n+220F83 Comment Length        0000 (0)\n+220F85 Disk Start            0000 (0)\n+220F87 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F497 Ext File Attributes   00000000 (0)\n-21F49B Local Header Offset   0007EDA3 (519587)\n-21F49F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220F89 Ext File Attributes   00000000 (0)\n+220F8D Local Header Offset   000B265F (730719)\n+220F91 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F49F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220F91: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F4E8 CENTRAL HEADER #579   02014B50 (33639248)\n-21F4EC Created Zip Spec      14 (20) '2.0'\n-21F4ED Created OS            00 (0) 'MS-DOS'\n-21F4EE Extract Zip Spec      14 (20) '2.0'\n-21F4EF Extract OS            00 (0) 'MS-DOS'\n-21F4F0 General Purpose Flag  0808 (2056)\n+220FC0 CENTRAL HEADER #579   02014B50 (33639248)\n+220FC4 Created Zip Spec      14 (20) '2.0'\n+220FC5 Created OS            00 (0) 'MS-DOS'\n+220FC6 Extract Zip Spec      14 (20) '2.0'\n+220FC7 Extract OS            00 (0) 'MS-DOS'\n+220FC8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F4F2 Compression Method    0008 (8) 'Deflated'\n-21F4F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F4F8 CRC                   8C9A6BCF (2358930383)\n-21F4FC Compressed Size       0000029F (671)\n-21F500 Uncompressed Size     000004BF (1215)\n-21F504 Filename Length       0044 (68)\n-21F506 Extra Length          0000 (0)\n-21F508 Comment Length        0000 (0)\n-21F50A Disk Start            0000 (0)\n-21F50C Int File Attributes   0000 (0)\n+220FCA Compression Method    0008 (8) 'Deflated'\n+220FCC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+220FD0 CRC                   61CAA47B (1640670331)\n+220FD4 Compressed Size       00000232 (562)\n+220FD8 Uncompressed Size     000003DE (990)\n+220FDC Filename Length       0036 (54)\n+220FDE Extra Length          0000 (0)\n+220FE0 Comment Length        0000 (0)\n+220FE2 Disk Start            0000 (0)\n+220FE4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F50E Ext File Attributes   00000000 (0)\n-21F512 Local Header Offset   0007F0BE (520382)\n-21F516 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+220FE6 Ext File Attributes   00000000 (0)\n+220FEA Local Header Offset   000B29E3 (731619)\n+220FEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F516: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x220FEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F55A CENTRAL HEADER #580   02014B50 (33639248)\n-21F55E Created Zip Spec      14 (20) '2.0'\n-21F55F Created OS            00 (0) 'MS-DOS'\n-21F560 Extract Zip Spec      14 (20) '2.0'\n-21F561 Extract OS            00 (0) 'MS-DOS'\n-21F562 General Purpose Flag  0808 (2056)\n+221024 CENTRAL HEADER #580   02014B50 (33639248)\n+221028 Created Zip Spec      14 (20) '2.0'\n+221029 Created OS            00 (0) 'MS-DOS'\n+22102A Extract Zip Spec      14 (20) '2.0'\n+22102B Extract OS            00 (0) 'MS-DOS'\n+22102C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F564 Compression Method    0008 (8) 'Deflated'\n-21F566 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F56A CRC                   17228680 (388138624)\n-21F56E Compressed Size       0000048F (1167)\n-21F572 Uncompressed Size     00000C22 (3106)\n-21F576 Filename Length       0047 (71)\n-21F578 Extra Length          0000 (0)\n-21F57A Comment Length        0000 (0)\n-21F57C Disk Start            0000 (0)\n-21F57E Int File Attributes   0000 (0)\n+22102E Compression Method    0008 (8) 'Deflated'\n+221030 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221034 CRC                   607FF27E (1618997886)\n+221038 Compressed Size       0000047D (1149)\n+22103C Uncompressed Size     00000C53 (3155)\n+221040 Filename Length       0033 (51)\n+221042 Extra Length          0000 (0)\n+221044 Comment Length        0000 (0)\n+221046 Disk Start            0000 (0)\n+221048 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F580 Ext File Attributes   00000000 (0)\n-21F584 Local Header Offset   0007F3CF (521167)\n-21F588 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22104A Ext File Attributes   00000000 (0)\n+22104E Local Header Offset   000B2C79 (732281)\n+221052 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F588: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221052: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F5CF CENTRAL HEADER #581   02014B50 (33639248)\n-21F5D3 Created Zip Spec      14 (20) '2.0'\n-21F5D4 Created OS            00 (0) 'MS-DOS'\n-21F5D5 Extract Zip Spec      14 (20) '2.0'\n-21F5D6 Extract OS            00 (0) 'MS-DOS'\n-21F5D7 General Purpose Flag  0808 (2056)\n+221085 CENTRAL HEADER #581   02014B50 (33639248)\n+221089 Created Zip Spec      14 (20) '2.0'\n+22108A Created OS            00 (0) 'MS-DOS'\n+22108B Extract Zip Spec      14 (20) '2.0'\n+22108C Extract OS            00 (0) 'MS-DOS'\n+22108D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F5D9 Compression Method    0008 (8) 'Deflated'\n-21F5DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F5DF CRC                   90DCE257 (2430394967)\n-21F5E3 Compressed Size       0000029D (669)\n-21F5E7 Uncompressed Size     000004B8 (1208)\n-21F5EB Filename Length       0043 (67)\n-21F5ED Extra Length          0000 (0)\n-21F5EF Comment Length        0000 (0)\n-21F5F1 Disk Start            0000 (0)\n-21F5F3 Int File Attributes   0000 (0)\n+22108F Compression Method    0008 (8) 'Deflated'\n+221091 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221095 CRC                   7B7924E9 (2071536873)\n+221099 Compressed Size       000007AC (1964)\n+22109D Uncompressed Size     00001C78 (7288)\n+2210A1 Filename Length       002D (45)\n+2210A3 Extra Length          0000 (0)\n+2210A5 Comment Length        0000 (0)\n+2210A7 Disk Start            0000 (0)\n+2210A9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F5F5 Ext File Attributes   00000000 (0)\n-21F5F9 Local Header Offset   0007F8D3 (522451)\n-21F5FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2210AB Ext File Attributes   00000000 (0)\n+2210AF Local Header Offset   000B3157 (733527)\n+2210B3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F5FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2210B3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F640 CENTRAL HEADER #582   02014B50 (33639248)\n-21F644 Created Zip Spec      14 (20) '2.0'\n-21F645 Created OS            00 (0) 'MS-DOS'\n-21F646 Extract Zip Spec      14 (20) '2.0'\n-21F647 Extract OS            00 (0) 'MS-DOS'\n-21F648 General Purpose Flag  0808 (2056)\n+2210E0 CENTRAL HEADER #582   02014B50 (33639248)\n+2210E4 Created Zip Spec      14 (20) '2.0'\n+2210E5 Created OS            00 (0) 'MS-DOS'\n+2210E6 Extract Zip Spec      14 (20) '2.0'\n+2210E7 Extract OS            00 (0) 'MS-DOS'\n+2210E8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F64A Compression Method    0008 (8) 'Deflated'\n-21F64C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F650 CRC                   092E21B3 (154018227)\n-21F654 Compressed Size       000003A4 (932)\n-21F658 Uncompressed Size     00000873 (2163)\n-21F65C Filename Length       0049 (73)\n-21F65E Extra Length          0000 (0)\n-21F660 Comment Length        0000 (0)\n-21F662 Disk Start            0000 (0)\n-21F664 Int File Attributes   0000 (0)\n+2210EA Compression Method    0008 (8) 'Deflated'\n+2210EC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2210F0 CRC                   707F9167 (1887408487)\n+2210F4 Compressed Size       00000439 (1081)\n+2210F8 Uncompressed Size     00000C0D (3085)\n+2210FC Filename Length       0030 (48)\n+2210FE Extra Length          0000 (0)\n+221100 Comment Length        0000 (0)\n+221102 Disk Start            0000 (0)\n+221104 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F666 Ext File Attributes   00000000 (0)\n-21F66A Local Header Offset   0007FBE1 (523233)\n-21F66E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221106 Ext File Attributes   00000000 (0)\n+22110A Local Header Offset   000B395E (735582)\n+22110E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F66E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22110E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F6B7 CENTRAL HEADER #583   02014B50 (33639248)\n-21F6BB Created Zip Spec      14 (20) '2.0'\n-21F6BC Created OS            00 (0) 'MS-DOS'\n-21F6BD Extract Zip Spec      14 (20) '2.0'\n-21F6BE Extract OS            00 (0) 'MS-DOS'\n-21F6BF General Purpose Flag  0808 (2056)\n+22113E CENTRAL HEADER #583   02014B50 (33639248)\n+221142 Created Zip Spec      14 (20) '2.0'\n+221143 Created OS            00 (0) 'MS-DOS'\n+221144 Extract Zip Spec      14 (20) '2.0'\n+221145 Extract OS            00 (0) 'MS-DOS'\n+221146 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F6C1 Compression Method    0008 (8) 'Deflated'\n-21F6C3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F6C7 CRC                   D50997CD (3574175693)\n-21F6CB Compressed Size       000002A8 (680)\n-21F6CF Uncompressed Size     000004F1 (1265)\n-21F6D3 Filename Length       004B (75)\n-21F6D5 Extra Length          0000 (0)\n-21F6D7 Comment Length        0000 (0)\n-21F6D9 Disk Start            0000 (0)\n-21F6DB Int File Attributes   0000 (0)\n+221148 Compression Method    0008 (8) 'Deflated'\n+22114A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22114E CRC                   FDA638C9 (4255529161)\n+221152 Compressed Size       000003CC (972)\n+221156 Uncompressed Size     00000AC1 (2753)\n+22115A Filename Length       0033 (51)\n+22115C Extra Length          0000 (0)\n+22115E Comment Length        0000 (0)\n+221160 Disk Start            0000 (0)\n+221162 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F6DD Ext File Attributes   00000000 (0)\n-21F6E1 Local Header Offset   0007FFFC (524284)\n-21F6E5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221164 Ext File Attributes   00000000 (0)\n+221168 Local Header Offset   000B3DF5 (736757)\n+22116C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F6E5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22116C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F730 CENTRAL HEADER #584   02014B50 (33639248)\n-21F734 Created Zip Spec      14 (20) '2.0'\n-21F735 Created OS            00 (0) 'MS-DOS'\n-21F736 Extract Zip Spec      14 (20) '2.0'\n-21F737 Extract OS            00 (0) 'MS-DOS'\n-21F738 General Purpose Flag  0808 (2056)\n+22119F CENTRAL HEADER #584   02014B50 (33639248)\n+2211A3 Created Zip Spec      14 (20) '2.0'\n+2211A4 Created OS            00 (0) 'MS-DOS'\n+2211A5 Extract Zip Spec      14 (20) '2.0'\n+2211A6 Extract OS            00 (0) 'MS-DOS'\n+2211A7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F73A Compression Method    0008 (8) 'Deflated'\n-21F73C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F740 CRC                   1389D7CB (327800779)\n-21F744 Compressed Size       000002A6 (678)\n-21F748 Uncompressed Size     000004D7 (1239)\n-21F74C Filename Length       0044 (68)\n-21F74E Extra Length          0000 (0)\n-21F750 Comment Length        0000 (0)\n-21F752 Disk Start            0000 (0)\n-21F754 Int File Attributes   0000 (0)\n+2211A9 Compression Method    0008 (8) 'Deflated'\n+2211AB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2211AF CRC                   5FA42AEE (1604594414)\n+2211B3 Compressed Size       000006D0 (1744)\n+2211B7 Uncompressed Size     00001ADA (6874)\n+2211BB Filename Length       002D (45)\n+2211BD Extra Length          0000 (0)\n+2211BF Comment Length        0000 (0)\n+2211C1 Disk Start            0000 (0)\n+2211C3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F756 Ext File Attributes   00000000 (0)\n-21F75A Local Header Offset   0008031D (525085)\n-21F75E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2211C5 Ext File Attributes   00000000 (0)\n+2211C9 Local Header Offset   000B4222 (737826)\n+2211CD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F75E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2211CD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F7A2 CENTRAL HEADER #585   02014B50 (33639248)\n-21F7A6 Created Zip Spec      14 (20) '2.0'\n-21F7A7 Created OS            00 (0) 'MS-DOS'\n-21F7A8 Extract Zip Spec      14 (20) '2.0'\n-21F7A9 Extract OS            00 (0) 'MS-DOS'\n-21F7AA General Purpose Flag  0808 (2056)\n+2211FA CENTRAL HEADER #585   02014B50 (33639248)\n+2211FE Created Zip Spec      14 (20) '2.0'\n+2211FF Created OS            00 (0) 'MS-DOS'\n+221200 Extract Zip Spec      14 (20) '2.0'\n+221201 Extract OS            00 (0) 'MS-DOS'\n+221202 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F7AC Compression Method    0008 (8) 'Deflated'\n-21F7AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F7B2 CRC                   0204ADF7 (33861111)\n-21F7B6 Compressed Size       0000029C (668)\n-21F7BA Uncompressed Size     000004AF (1199)\n-21F7BE Filename Length       0042 (66)\n-21F7C0 Extra Length          0000 (0)\n-21F7C2 Comment Length        0000 (0)\n-21F7C4 Disk Start            0000 (0)\n-21F7C6 Int File Attributes   0000 (0)\n+221204 Compression Method    0008 (8) 'Deflated'\n+221206 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22120A CRC                   619FED81 (1637870977)\n+22120E Compressed Size       0000057C (1404)\n+221212 Uncompressed Size     00001181 (4481)\n+221216 Filename Length       0031 (49)\n+221218 Extra Length          0000 (0)\n+22121A Comment Length        0000 (0)\n+22121C Disk Start            0000 (0)\n+22121E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F7C8 Ext File Attributes   00000000 (0)\n-21F7CC Local Header Offset   00080635 (525877)\n-21F7D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221220 Ext File Attributes   00000000 (0)\n+221224 Local Header Offset   000B494D (739661)\n+221228 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F7D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221228: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F812 CENTRAL HEADER #586   02014B50 (33639248)\n-21F816 Created Zip Spec      14 (20) '2.0'\n-21F817 Created OS            00 (0) 'MS-DOS'\n-21F818 Extract Zip Spec      14 (20) '2.0'\n-21F819 Extract OS            00 (0) 'MS-DOS'\n-21F81A General Purpose Flag  0808 (2056)\n+221259 CENTRAL HEADER #586   02014B50 (33639248)\n+22125D Created Zip Spec      14 (20) '2.0'\n+22125E Created OS            00 (0) 'MS-DOS'\n+22125F Extract Zip Spec      14 (20) '2.0'\n+221260 Extract OS            00 (0) 'MS-DOS'\n+221261 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F81C Compression Method    0008 (8) 'Deflated'\n-21F81E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F822 CRC                   DE2764C3 (3727123651)\n-21F826 Compressed Size       0000029F (671)\n-21F82A Uncompressed Size     000004C9 (1225)\n-21F82E Filename Length       0048 (72)\n-21F830 Extra Length          0000 (0)\n-21F832 Comment Length        0000 (0)\n-21F834 Disk Start            0000 (0)\n-21F836 Int File Attributes   0000 (0)\n+221263 Compression Method    0008 (8) 'Deflated'\n+221265 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221269 CRC                   E8166721 (3893782305)\n+22126D Compressed Size       0000043F (1087)\n+221271 Uncompressed Size     00000C82 (3202)\n+221275 Filename Length       002F (47)\n+221277 Extra Length          0000 (0)\n+221279 Comment Length        0000 (0)\n+22127B Disk Start            0000 (0)\n+22127D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F838 Ext File Attributes   00000000 (0)\n-21F83C Local Header Offset   00080941 (526657)\n-21F840 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22127F Ext File Attributes   00000000 (0)\n+221283 Local Header Offset   000B4F28 (741160)\n+221287 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F840: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221287: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F888 CENTRAL HEADER #587   02014B50 (33639248)\n-21F88C Created Zip Spec      14 (20) '2.0'\n-21F88D Created OS            00 (0) 'MS-DOS'\n-21F88E Extract Zip Spec      14 (20) '2.0'\n-21F88F Extract OS            00 (0) 'MS-DOS'\n-21F890 General Purpose Flag  0808 (2056)\n+2212B6 CENTRAL HEADER #587   02014B50 (33639248)\n+2212BA Created Zip Spec      14 (20) '2.0'\n+2212BB Created OS            00 (0) 'MS-DOS'\n+2212BC Extract Zip Spec      14 (20) '2.0'\n+2212BD Extract OS            00 (0) 'MS-DOS'\n+2212BE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F892 Compression Method    0008 (8) 'Deflated'\n-21F894 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F898 CRC                   A00FADB6 (2685382070)\n-21F89C Compressed Size       000002AE (686)\n-21F8A0 Uncompressed Size     0000050B (1291)\n-21F8A4 Filename Length       004C (76)\n-21F8A6 Extra Length          0000 (0)\n-21F8A8 Comment Length        0000 (0)\n-21F8AA Disk Start            0000 (0)\n-21F8AC Int File Attributes   0000 (0)\n+2212C0 Compression Method    0008 (8) 'Deflated'\n+2212C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2212C6 CRC                   363316B0 (909317808)\n+2212CA Compressed Size       000007A1 (1953)\n+2212CE Uncompressed Size     00001D36 (7478)\n+2212D2 Filename Length       0031 (49)\n+2212D4 Extra Length          0000 (0)\n+2212D6 Comment Length        0000 (0)\n+2212D8 Disk Start            0000 (0)\n+2212DA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F8AE Ext File Attributes   00000000 (0)\n-21F8B2 Local Header Offset   00080C56 (527446)\n-21F8B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2212DC Ext File Attributes   00000000 (0)\n+2212E0 Local Header Offset   000B53C4 (742340)\n+2212E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F8B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2212E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F902 CENTRAL HEADER #588   02014B50 (33639248)\n-21F906 Created Zip Spec      14 (20) '2.0'\n-21F907 Created OS            00 (0) 'MS-DOS'\n-21F908 Extract Zip Spec      14 (20) '2.0'\n-21F909 Extract OS            00 (0) 'MS-DOS'\n-21F90A General Purpose Flag  0808 (2056)\n+221315 CENTRAL HEADER #588   02014B50 (33639248)\n+221319 Created Zip Spec      14 (20) '2.0'\n+22131A Created OS            00 (0) 'MS-DOS'\n+22131B Extract Zip Spec      14 (20) '2.0'\n+22131C Extract OS            00 (0) 'MS-DOS'\n+22131D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F90C Compression Method    0008 (8) 'Deflated'\n-21F90E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F912 CRC                   00000000 (0)\n-21F916 Compressed Size       00000002 (2)\n-21F91A Uncompressed Size     00000000 (0)\n-21F91E Filename Length       0022 (34)\n-21F920 Extra Length          0000 (0)\n-21F922 Comment Length        0000 (0)\n-21F924 Disk Start            0000 (0)\n-21F926 Int File Attributes   0000 (0)\n+22131F Compression Method    0008 (8) 'Deflated'\n+221321 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221325 CRC                   00000000 (0)\n+221329 Compressed Size       00000002 (2)\n+22132D Uncompressed Size     00000000 (0)\n+221331 Filename Length       001D (29)\n+221333 Extra Length          0000 (0)\n+221335 Comment Length        0000 (0)\n+221337 Disk Start            0000 (0)\n+221339 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F928 Ext File Attributes   00000000 (0)\n-21F92C Local Header Offset   00080F7E (528254)\n-21F930 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22133B Ext File Attributes   00000000 (0)\n+22133F Local Header Offset   000B5BC4 (744388)\n+221343 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F930: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221343: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F952 CENTRAL HEADER #589   02014B50 (33639248)\n-21F956 Created Zip Spec      14 (20) '2.0'\n-21F957 Created OS            00 (0) 'MS-DOS'\n-21F958 Extract Zip Spec      14 (20) '2.0'\n-21F959 Extract OS            00 (0) 'MS-DOS'\n-21F95A General Purpose Flag  0808 (2056)\n+221360 CENTRAL HEADER #589   02014B50 (33639248)\n+221364 Created Zip Spec      14 (20) '2.0'\n+221365 Created OS            00 (0) 'MS-DOS'\n+221366 Extract Zip Spec      14 (20) '2.0'\n+221367 Extract OS            00 (0) 'MS-DOS'\n+221368 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F95C Compression Method    0008 (8) 'Deflated'\n-21F95E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F962 CRC                   9A2D2058 (2586648664)\n-21F966 Compressed Size       000004E4 (1252)\n-21F96A Uncompressed Size     00000D7A (3450)\n-21F96E Filename Length       002F (47)\n-21F970 Extra Length          0000 (0)\n-21F972 Comment Length        0000 (0)\n-21F974 Disk Start            0000 (0)\n-21F976 Int File Attributes   0000 (0)\n+22136A Compression Method    0008 (8) 'Deflated'\n+22136C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221370 CRC                   8C6F354A (2356098378)\n+221374 Compressed Size       0000020C (524)\n+221378 Uncompressed Size     00000398 (920)\n+22137C Filename Length       002D (45)\n+22137E Extra Length          0000 (0)\n+221380 Comment Length        0000 (0)\n+221382 Disk Start            0000 (0)\n+221384 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F978 Ext File Attributes   00000000 (0)\n-21F97C Local Header Offset   00080FD0 (528336)\n-21F980 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221386 Ext File Attributes   00000000 (0)\n+22138A Local Header Offset   000B5C11 (744465)\n+22138E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F980: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22138E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21F9AF CENTRAL HEADER #590   02014B50 (33639248)\n-21F9B3 Created Zip Spec      14 (20) '2.0'\n-21F9B4 Created OS            00 (0) 'MS-DOS'\n-21F9B5 Extract Zip Spec      14 (20) '2.0'\n-21F9B6 Extract OS            00 (0) 'MS-DOS'\n-21F9B7 General Purpose Flag  0808 (2056)\n+2213BB CENTRAL HEADER #590   02014B50 (33639248)\n+2213BF Created Zip Spec      14 (20) '2.0'\n+2213C0 Created OS            00 (0) 'MS-DOS'\n+2213C1 Extract Zip Spec      14 (20) '2.0'\n+2213C2 Extract OS            00 (0) 'MS-DOS'\n+2213C3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21F9B9 Compression Method    0008 (8) 'Deflated'\n-21F9BB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21F9BF CRC                   5D8BAE4F (1569435215)\n-21F9C3 Compressed Size       0000049E (1182)\n-21F9C7 Uncompressed Size     00000A47 (2631)\n-21F9CB Filename Length       002F (47)\n-21F9CD Extra Length          0000 (0)\n-21F9CF Comment Length        0000 (0)\n-21F9D1 Disk Start            0000 (0)\n-21F9D3 Int File Attributes   0000 (0)\n+2213C5 Compression Method    0008 (8) 'Deflated'\n+2213C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2213CB CRC                   4B31CC84 (1261554820)\n+2213CF Compressed Size       00000242 (578)\n+2213D3 Uncompressed Size     00000431 (1073)\n+2213D7 Filename Length       002D (45)\n+2213D9 Extra Length          0000 (0)\n+2213DB Comment Length        0000 (0)\n+2213DD Disk Start            0000 (0)\n+2213DF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21F9D5 Ext File Attributes   00000000 (0)\n-21F9D9 Local Header Offset   00081511 (529681)\n-21F9DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2213E1 Ext File Attributes   00000000 (0)\n+2213E5 Local Header Offset   000B5E78 (745080)\n+2213E9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21F9DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2213E9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21FA0C CENTRAL HEADER #591   02014B50 (33639248)\n-21FA10 Created Zip Spec      14 (20) '2.0'\n-21FA11 Created OS            00 (0) 'MS-DOS'\n-21FA12 Extract Zip Spec      14 (20) '2.0'\n-21FA13 Extract OS            00 (0) 'MS-DOS'\n-21FA14 General Purpose Flag  0808 (2056)\n+221416 CENTRAL HEADER #591   02014B50 (33639248)\n+22141A Created Zip Spec      14 (20) '2.0'\n+22141B Created OS            00 (0) 'MS-DOS'\n+22141C Extract Zip Spec      14 (20) '2.0'\n+22141D Extract OS            00 (0) 'MS-DOS'\n+22141E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21FA16 Compression Method    0008 (8) 'Deflated'\n-21FA18 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21FA1C CRC                   B148CBF0 (2974338032)\n-21FA20 Compressed Size       00000E08 (3592)\n-21FA24 Uncompressed Size     00003C07 (15367)\n-21FA28 Filename Length       0041 (65)\n-21FA2A Extra Length          0000 (0)\n-21FA2C Comment Length        0000 (0)\n-21FA2E Disk Start            0000 (0)\n-21FA30 Int File Attributes   0000 (0)\n+221420 Compression Method    0008 (8) 'Deflated'\n+221422 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221426 CRC                   66AD4132 (1722630450)\n+22142A Compressed Size       00000246 (582)\n+22142E Uncompressed Size     00000442 (1090)\n+221432 Filename Length       0035 (53)\n+221434 Extra Length          0000 (0)\n+221436 Comment Length        0000 (0)\n+221438 Disk Start            0000 (0)\n+22143A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21FA32 Ext File Attributes   00000000 (0)\n-21FA36 Local Header Offset   00081A0C (530956)\n-21FA3A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22143C Ext File Attributes   00000000 (0)\n+221440 Local Header Offset   000B6115 (745749)\n+221444 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21FA3A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221444: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21FA7B CENTRAL HEADER #592   02014B50 (33639248)\n-21FA7F Created Zip Spec      14 (20) '2.0'\n-21FA80 Created OS            00 (0) 'MS-DOS'\n-21FA81 Extract Zip Spec      14 (20) '2.0'\n-21FA82 Extract OS            00 (0) 'MS-DOS'\n-21FA83 General Purpose Flag  0808 (2056)\n+221479 CENTRAL HEADER #592   02014B50 (33639248)\n+22147D Created Zip Spec      14 (20) '2.0'\n+22147E Created OS            00 (0) 'MS-DOS'\n+22147F Extract Zip Spec      14 (20) '2.0'\n+221480 Extract OS            00 (0) 'MS-DOS'\n+221481 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21FA85 Compression Method    0008 (8) 'Deflated'\n-21FA87 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21FA8B CRC                   D1BB774A (3518723914)\n-21FA8F Compressed Size       00000267 (615)\n-21FA93 Uncompressed Size     000004B9 (1209)\n-21FA97 Filename Length       0034 (52)\n-21FA99 Extra Length          0000 (0)\n-21FA9B Comment Length        0000 (0)\n-21FA9D Disk Start            0000 (0)\n-21FA9F Int File Attributes   0000 (0)\n+221483 Compression Method    0008 (8) 'Deflated'\n+221485 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221489 CRC                   49B9FF79 (1236926329)\n+22148D Compressed Size       00000319 (793)\n+221491 Uncompressed Size     00000809 (2057)\n+221495 Filename Length       0032 (50)\n+221497 Extra Length          0000 (0)\n+221499 Comment Length        0000 (0)\n+22149B Disk Start            0000 (0)\n+22149D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21FAA1 Ext File Attributes   00000000 (0)\n-21FAA5 Local Header Offset   00082883 (534659)\n-21FAA9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22149F Ext File Attributes   00000000 (0)\n+2214A3 Local Header Offset   000B63BE (746430)\n+2214A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21FAA9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2214A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21FADD CENTRAL HEADER #593   02014B50 (33639248)\n-21FAE1 Created Zip Spec      14 (20) '2.0'\n-21FAE2 Created OS            00 (0) 'MS-DOS'\n-21FAE3 Extract Zip Spec      14 (20) '2.0'\n-21FAE4 Extract OS            00 (0) 'MS-DOS'\n-21FAE5 General Purpose Flag  0808 (2056)\n+2214D9 CENTRAL HEADER #593   02014B50 (33639248)\n+2214DD Created Zip Spec      14 (20) '2.0'\n+2214DE Created OS            00 (0) 'MS-DOS'\n+2214DF Extract Zip Spec      14 (20) '2.0'\n+2214E0 Extract OS            00 (0) 'MS-DOS'\n+2214E1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21FAE7 Compression Method    0008 (8) 'Deflated'\n-21FAE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21FAED CRC                   F2DE48ED (4074653933)\n-21FAF1 Compressed Size       00000279 (633)\n-21FAF5 Uncompressed Size     0000048D (1165)\n-21FAF9 Filename Length       0043 (67)\n-21FAFB Extra Length          0000 (0)\n-21FAFD Comment Length        0000 (0)\n-21FAFF Disk Start            0000 (0)\n-21FB01 Int File Attributes   0000 (0)\n+2214E3 Compression Method    0008 (8) 'Deflated'\n+2214E5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2214E9 CRC                   D07DEF14 (3497914132)\n+2214ED Compressed Size       0000035A (858)\n+2214F1 Uncompressed Size     0000078D (1933)\n+2214F5 Filename Length       0030 (48)\n+2214F7 Extra Length          0000 (0)\n+2214F9 Comment Length        0000 (0)\n+2214FB Disk Start            0000 (0)\n+2214FD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21FB03 Ext File Attributes   00000000 (0)\n-21FB07 Local Header Offset   00082B4C (535372)\n-21FB0B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2214FF Ext File Attributes   00000000 (0)\n+221503 Local Header Offset   000B6737 (747319)\n+221507 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21FB0B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221507: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21FB4E CENTRAL HEADER #594   02014B50 (33639248)\n-21FB52 Created Zip Spec      14 (20) '2.0'\n-21FB53 Created OS            00 (0) 'MS-DOS'\n-21FB54 Extract Zip Spec      14 (20) '2.0'\n-21FB55 Extract OS            00 (0) 'MS-DOS'\n-21FB56 General Purpose Flag  0808 (2056)\n+221537 CENTRAL HEADER #594   02014B50 (33639248)\n+22153B Created Zip Spec      14 (20) '2.0'\n+22153C Created OS            00 (0) 'MS-DOS'\n+22153D Extract Zip Spec      14 (20) '2.0'\n+22153E Extract OS            00 (0) 'MS-DOS'\n+22153F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21FB58 Compression Method    0008 (8) 'Deflated'\n-21FB5A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21FB5E CRC                   0662480F (107104271)\n-21FB62 Compressed Size       00000281 (641)\n-21FB66 Uncompressed Size     000004C4 (1220)\n-21FB6A Filename Length       003B (59)\n-21FB6C Extra Length          0000 (0)\n-21FB6E Comment Length        0000 (0)\n-21FB70 Disk Start            0000 (0)\n-21FB72 Int File Attributes   0000 (0)\n+221541 Compression Method    0008 (8) 'Deflated'\n+221543 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221547 CRC                   4AFAB67E (1257944702)\n+22154B Compressed Size       00000247 (583)\n+22154F Uncompressed Size     00000448 (1096)\n+221553 Filename Length       0038 (56)\n+221555 Extra Length          0000 (0)\n+221557 Comment Length        0000 (0)\n+221559 Disk Start            0000 (0)\n+22155B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21FB74 Ext File Attributes   00000000 (0)\n-21FB78 Local Header Offset   00082E36 (536118)\n-21FB7C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22155D Ext File Attributes   00000000 (0)\n+221561 Local Header Offset   000B6AEF (748271)\n+221565 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21FB7C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221565: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21FBB7 CENTRAL HEADER #595   02014B50 (33639248)\n-21FBBB Created Zip Spec      14 (20) '2.0'\n-21FBBC Created OS            00 (0) 'MS-DOS'\n-21FBBD Extract Zip Spec      14 (20) '2.0'\n-21FBBE Extract OS            00 (0) 'MS-DOS'\n-21FBBF General Purpose Flag  0808 (2056)\n+22159D CENTRAL HEADER #595   02014B50 (33639248)\n+2215A1 Created Zip Spec      14 (20) '2.0'\n+2215A2 Created OS            00 (0) 'MS-DOS'\n+2215A3 Extract Zip Spec      14 (20) '2.0'\n+2215A4 Extract OS            00 (0) 'MS-DOS'\n+2215A5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21FBC1 Compression Method    0008 (8) 'Deflated'\n-21FBC3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21FBC7 CRC                   4C849D6C (1283759468)\n-21FBCB Compressed Size       00000265 (613)\n-21FBCF Uncompressed Size     0000047A (1146)\n-21FBD3 Filename Length       0037 (55)\n-21FBD5 Extra Length          0000 (0)\n-21FBD7 Comment Length        0000 (0)\n-21FBD9 Disk Start            0000 (0)\n-21FBDB Int File Attributes   0000 (0)\n+2215A7 Compression Method    0008 (8) 'Deflated'\n+2215A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2215AD CRC                   00000000 (0)\n+2215B1 Compressed Size       00000002 (2)\n+2215B5 Uncompressed Size     00000000 (0)\n+2215B9 Filename Length       001D (29)\n+2215BB Extra Length          0000 (0)\n+2215BD Comment Length        0000 (0)\n+2215BF Disk Start            0000 (0)\n+2215C1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21FBDD Ext File Attributes   00000000 (0)\n-21FBE1 Local Header Offset   00083120 (536864)\n-21FBE5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2215C3 Ext File Attributes   00000000 (0)\n+2215C7 Local Header Offset   000B6D9C (748956)\n+2215CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21FBE5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2215CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21FC1C CENTRAL HEADER #596   02014B50 (33639248)\n-21FC20 Created Zip Spec      14 (20) '2.0'\n-21FC21 Created OS            00 (0) 'MS-DOS'\n-21FC22 Extract Zip Spec      14 (20) '2.0'\n-21FC23 Extract OS            00 (0) 'MS-DOS'\n-21FC24 General Purpose Flag  0808 (2056)\n+2215E8 CENTRAL HEADER #596   02014B50 (33639248)\n+2215EC Created Zip Spec      14 (20) '2.0'\n+2215ED Created OS            00 (0) 'MS-DOS'\n+2215EE Extract Zip Spec      14 (20) '2.0'\n+2215EF Extract OS            00 (0) 'MS-DOS'\n+2215F0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21FC26 Compression Method    0008 (8) 'Deflated'\n-21FC28 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21FC2C CRC                   A96FE6E5 (2842683109)\n-21FC30 Compressed Size       00002019 (8217)\n-21FC34 Uncompressed Size     00009CEF (40175)\n-21FC38 Filename Length       0036 (54)\n-21FC3A Extra Length          0000 (0)\n-21FC3C Comment Length        0000 (0)\n-21FC3E Disk Start            0000 (0)\n-21FC40 Int File Attributes   0000 (0)\n+2215F2 Compression Method    0008 (8) 'Deflated'\n+2215F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2215F8 CRC                   C563319A (3311612314)\n+2215FC Compressed Size       000003DF (991)\n+221600 Uncompressed Size     00000B90 (2960)\n+221604 Filename Length       0036 (54)\n+221606 Extra Length          0000 (0)\n+221608 Comment Length        0000 (0)\n+22160A Disk Start            0000 (0)\n+22160C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21FC42 Ext File Attributes   00000000 (0)\n-21FC46 Local Header Offset   000833EA (537578)\n-21FC4A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22160E Ext File Attributes   00000000 (0)\n+221612 Local Header Offset   000B6DE9 (749033)\n+221616 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21FC4A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221616: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21FC80 CENTRAL HEADER #597   02014B50 (33639248)\n-21FC84 Created Zip Spec      14 (20) '2.0'\n-21FC85 Created OS            00 (0) 'MS-DOS'\n-21FC86 Extract Zip Spec      14 (20) '2.0'\n-21FC87 Extract OS            00 (0) 'MS-DOS'\n-21FC88 General Purpose Flag  0808 (2056)\n+22164C CENTRAL HEADER #597   02014B50 (33639248)\n+221650 Created Zip Spec      14 (20) '2.0'\n+221651 Created OS            00 (0) 'MS-DOS'\n+221652 Extract Zip Spec      14 (20) '2.0'\n+221653 Extract OS            00 (0) 'MS-DOS'\n+221654 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21FC8A Compression Method    0008 (8) 'Deflated'\n-21FC8C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21FC90 CRC                   CA31D6AC (3392263852)\n-21FC94 Compressed Size       000002DD (733)\n-21FC98 Uncompressed Size     0000058E (1422)\n-21FC9C Filename Length       0036 (54)\n-21FC9E Extra Length          0000 (0)\n-21FCA0 Comment Length        0000 (0)\n-21FCA2 Disk Start            0000 (0)\n-21FCA4 Int File Attributes   0000 (0)\n+221656 Compression Method    0008 (8) 'Deflated'\n+221658 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22165C CRC                   1187A07F (294101119)\n+221660 Compressed Size       00000499 (1177)\n+221664 Uncompressed Size     000010B8 (4280)\n+221668 Filename Length       002F (47)\n+22166A Extra Length          0000 (0)\n+22166C Comment Length        0000 (0)\n+22166E Disk Start            0000 (0)\n+221670 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21FCA6 Ext File Attributes   00000000 (0)\n-21FCAA Local Header Offset   00085467 (545895)\n-21FCAE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221672 Ext File Attributes   00000000 (0)\n+221676 Local Header Offset   000B722C (750124)\n+22167A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21FCAE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22167A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21FCE4 CENTRAL HEADER #598   02014B50 (33639248)\n-21FCE8 Created Zip Spec      14 (20) '2.0'\n-21FCE9 Created OS            00 (0) 'MS-DOS'\n-21FCEA Extract Zip Spec      14 (20) '2.0'\n-21FCEB Extract OS            00 (0) 'MS-DOS'\n-21FCEC General Purpose Flag  0808 (2056)\n+2216A9 CENTRAL HEADER #598   02014B50 (33639248)\n+2216AD Created Zip Spec      14 (20) '2.0'\n+2216AE Created OS            00 (0) 'MS-DOS'\n+2216AF Extract Zip Spec      14 (20) '2.0'\n+2216B0 Extract OS            00 (0) 'MS-DOS'\n+2216B1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21FCEE Compression Method    0008 (8) 'Deflated'\n-21FCF0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21FCF4 CRC                   48D76DDD (1222077917)\n-21FCF8 Compressed Size       0000043E (1086)\n-21FCFC Uncompressed Size     00000932 (2354)\n-21FD00 Filename Length       002A (42)\n-21FD02 Extra Length          0000 (0)\n-21FD04 Comment Length        0000 (0)\n-21FD06 Disk Start            0000 (0)\n-21FD08 Int File Attributes   0000 (0)\n+2216B3 Compression Method    0008 (8) 'Deflated'\n+2216B5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2216B9 CRC                   FD9DED40 (4254985536)\n+2216BD Compressed Size       00000067 (103)\n+2216C1 Uncompressed Size     000000A5 (165)\n+2216C5 Filename Length       0044 (68)\n+2216C7 Extra Length          0000 (0)\n+2216C9 Comment Length        0000 (0)\n+2216CB Disk Start            0000 (0)\n+2216CD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21FD0A Ext File Attributes   00000000 (0)\n-21FD0E Local Header Offset   000857A8 (546728)\n-21FD12 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2216CF Ext File Attributes   00000000 (0)\n+2216D3 Local Header Offset   000B7722 (751394)\n+2216D7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21FD12: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2216D7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21FD3C CENTRAL HEADER #599   02014B50 (33639248)\n-21FD40 Created Zip Spec      14 (20) '2.0'\n-21FD41 Created OS            00 (0) 'MS-DOS'\n-21FD42 Extract Zip Spec      14 (20) '2.0'\n-21FD43 Extract OS            00 (0) 'MS-DOS'\n-21FD44 General Purpose Flag  0808 (2056)\n+22171B CENTRAL HEADER #599   02014B50 (33639248)\n+22171F Created Zip Spec      14 (20) '2.0'\n+221720 Created OS            00 (0) 'MS-DOS'\n+221721 Extract Zip Spec      14 (20) '2.0'\n+221722 Extract OS            00 (0) 'MS-DOS'\n+221723 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21FD46 Compression Method    0008 (8) 'Deflated'\n-21FD48 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21FD4C CRC                   C525F495 (3307598997)\n-21FD50 Compressed Size       00000283 (643)\n-21FD54 Uncompressed Size     000004C9 (1225)\n-21FD58 Filename Length       003E (62)\n-21FD5A Extra Length          0000 (0)\n-21FD5C Comment Length        0000 (0)\n-21FD5E Disk Start            0000 (0)\n-21FD60 Int File Attributes   0000 (0)\n+221725 Compression Method    0008 (8) 'Deflated'\n+221727 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22172B CRC                   BF790872 (3212380274)\n+22172F Compressed Size       00000047 (71)\n+221733 Uncompressed Size     0000004C (76)\n+221737 Filename Length       0055 (85)\n+221739 Extra Length          0000 (0)\n+22173B Comment Length        0000 (0)\n+22173D Disk Start            0000 (0)\n+22173F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21FD62 Ext File Attributes   00000000 (0)\n-21FD66 Local Header Offset   00085C3E (547902)\n-21FD6A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221741 Ext File Attributes   00000000 (0)\n+221745 Local Header Offset   000B77FB (751611)\n+221749 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21FD6A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221749: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21FDA8 CENTRAL HEADER #600   02014B50 (33639248)\n-21FDAC Created Zip Spec      14 (20) '2.0'\n-21FDAD Created OS            00 (0) 'MS-DOS'\n-21FDAE Extract Zip Spec      14 (20) '2.0'\n-21FDAF Extract OS            00 (0) 'MS-DOS'\n-21FDB0 General Purpose Flag  0808 (2056)\n+22179E CENTRAL HEADER #600   02014B50 (33639248)\n+2217A2 Created Zip Spec      14 (20) '2.0'\n+2217A3 Created OS            00 (0) 'MS-DOS'\n+2217A4 Extract Zip Spec      14 (20) '2.0'\n+2217A5 Extract OS            00 (0) 'MS-DOS'\n+2217A6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21FDB2 Compression Method    0008 (8) 'Deflated'\n-21FDB4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21FDB8 CRC                   25A296EC (631412460)\n-21FDBC Compressed Size       00000291 (657)\n-21FDC0 Uncompressed Size     00000510 (1296)\n-21FDC4 Filename Length       002E (46)\n-21FDC6 Extra Length          0000 (0)\n-21FDC8 Comment Length        0000 (0)\n-21FDCA Disk Start            0000 (0)\n-21FDCC Int File Attributes   0000 (0)\n+2217A8 Compression Method    0008 (8) 'Deflated'\n+2217AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2217AE CRC                   F822DEA4 (4163034788)\n+2217B2 Compressed Size       00000042 (66)\n+2217B6 Uncompressed Size     00000072 (114)\n+2217BA Filename Length       0049 (73)\n+2217BC Extra Length          0000 (0)\n+2217BE Comment Length        0000 (0)\n+2217C0 Disk Start            0000 (0)\n+2217C2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21FDCE Ext File Attributes   00000000 (0)\n-21FDD2 Local Header Offset   00085F2D (548653)\n-21FDD6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2217C4 Ext File Attributes   00000000 (0)\n+2217C8 Local Header Offset   000B78C5 (751813)\n+2217CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21FDD6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2217CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21FE04 CENTRAL HEADER #601   02014B50 (33639248)\n-21FE08 Created Zip Spec      14 (20) '2.0'\n-21FE09 Created OS            00 (0) 'MS-DOS'\n-21FE0A Extract Zip Spec      14 (20) '2.0'\n-21FE0B Extract OS            00 (0) 'MS-DOS'\n-21FE0C General Purpose Flag  0808 (2056)\n+221815 CENTRAL HEADER #601   02014B50 (33639248)\n+221819 Created Zip Spec      14 (20) '2.0'\n+22181A Created OS            00 (0) 'MS-DOS'\n+22181B Extract Zip Spec      14 (20) '2.0'\n+22181C Extract OS            00 (0) 'MS-DOS'\n+22181D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21FE0E Compression Method    0008 (8) 'Deflated'\n-21FE10 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21FE14 CRC                   00000000 (0)\n-21FE18 Compressed Size       00000002 (2)\n-21FE1C Uncompressed Size     00000000 (0)\n-21FE20 Filename Length       002A (42)\n-21FE22 Extra Length          0000 (0)\n-21FE24 Comment Length        0000 (0)\n-21FE26 Disk Start            0000 (0)\n-21FE28 Int File Attributes   0000 (0)\n+22181F Compression Method    0008 (8) 'Deflated'\n+221821 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221825 CRC                   00000000 (0)\n+221829 Compressed Size       00000002 (2)\n+22182D Uncompressed Size     00000000 (0)\n+221831 Filename Length       0012 (18)\n+221833 Extra Length          0000 (0)\n+221835 Comment Length        0000 (0)\n+221837 Disk Start            0000 (0)\n+221839 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21FE2A Ext File Attributes   00000000 (0)\n-21FE2E Local Header Offset   0008621A (549402)\n-21FE32 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22183B Ext File Attributes   00000000 (0)\n+22183F Local Header Offset   000B797E (751998)\n+221843 Filename              'XXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21FE32: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221843: Filename 'XXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21FE5C CENTRAL HEADER #602   02014B50 (33639248)\n-21FE60 Created Zip Spec      14 (20) '2.0'\n-21FE61 Created OS            00 (0) 'MS-DOS'\n-21FE62 Extract Zip Spec      14 (20) '2.0'\n-21FE63 Extract OS            00 (0) 'MS-DOS'\n-21FE64 General Purpose Flag  0808 (2056)\n+221855 CENTRAL HEADER #602   02014B50 (33639248)\n+221859 Created Zip Spec      14 (20) '2.0'\n+22185A Created OS            00 (0) 'MS-DOS'\n+22185B Extract Zip Spec      14 (20) '2.0'\n+22185C Extract OS            00 (0) 'MS-DOS'\n+22185D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21FE66 Compression Method    0008 (8) 'Deflated'\n-21FE68 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21FE6C CRC                   EA8B59C6 (3935001030)\n-21FE70 Compressed Size       0000033F (831)\n-21FE74 Uncompressed Size     00000800 (2048)\n-21FE78 Filename Length       0047 (71)\n-21FE7A Extra Length          0000 (0)\n-21FE7C Comment Length        0000 (0)\n-21FE7E Disk Start            0000 (0)\n-21FE80 Int File Attributes   0000 (0)\n+22185F Compression Method    0008 (8) 'Deflated'\n+221861 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221865 CRC                   00000000 (0)\n+221869 Compressed Size       00000002 (2)\n+22186D Uncompressed Size     00000000 (0)\n+221871 Filename Length       0009 (9)\n+221873 Extra Length          0000 (0)\n+221875 Comment Length        0000 (0)\n+221877 Disk Start            0000 (0)\n+221879 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21FE82 Ext File Attributes   00000000 (0)\n-21FE86 Local Header Offset   00086274 (549492)\n-21FE8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22187B Ext File Attributes   00000000 (0)\n+22187F Local Header Offset   000B79C0 (752064)\n+221883 Filename              'XXXXXXXXX'\n #\n-# WARNING: Offset 0x21FE8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221883: Filename 'XXXXXXXXX'\n #          Zero length filename\n #\n \n-21FED1 CENTRAL HEADER #603   02014B50 (33639248)\n-21FED5 Created Zip Spec      14 (20) '2.0'\n-21FED6 Created OS            00 (0) 'MS-DOS'\n-21FED7 Extract Zip Spec      14 (20) '2.0'\n-21FED8 Extract OS            00 (0) 'MS-DOS'\n-21FED9 General Purpose Flag  0808 (2056)\n+22188C CENTRAL HEADER #603   02014B50 (33639248)\n+221890 Created Zip Spec      14 (20) '2.0'\n+221891 Created OS            00 (0) 'MS-DOS'\n+221892 Extract Zip Spec      14 (20) '2.0'\n+221893 Extract OS            00 (0) 'MS-DOS'\n+221894 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21FEDB Compression Method    0008 (8) 'Deflated'\n-21FEDD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21FEE1 CRC                   3280412A (847266090)\n-21FEE5 Compressed Size       000002CE (718)\n-21FEE9 Uncompressed Size     0000060F (1551)\n-21FEED Filename Length       0042 (66)\n-21FEEF Extra Length          0000 (0)\n-21FEF1 Comment Length        0000 (0)\n-21FEF3 Disk Start            0000 (0)\n-21FEF5 Int File Attributes   0000 (0)\n+221896 Compression Method    0008 (8) 'Deflated'\n+221898 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22189C CRC                   1096B4BF (278312127)\n+2218A0 Compressed Size       000006E2 (1762)\n+2218A4 Uncompressed Size     0000124E (4686)\n+2218A8 Filename Length       001E (30)\n+2218AA Extra Length          0000 (0)\n+2218AC Comment Length        0000 (0)\n+2218AE Disk Start            0000 (0)\n+2218B0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21FEF7 Ext File Attributes   00000000 (0)\n-21FEFB Local Header Offset   00086628 (550440)\n-21FEFF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2218B2 Ext File Attributes   00000000 (0)\n+2218B6 Local Header Offset   000B79F9 (752121)\n+2218BA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21FEFF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2218BA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21FF41 CENTRAL HEADER #604   02014B50 (33639248)\n-21FF45 Created Zip Spec      14 (20) '2.0'\n-21FF46 Created OS            00 (0) 'MS-DOS'\n-21FF47 Extract Zip Spec      14 (20) '2.0'\n-21FF48 Extract OS            00 (0) 'MS-DOS'\n-21FF49 General Purpose Flag  0808 (2056)\n+2218D8 CENTRAL HEADER #604   02014B50 (33639248)\n+2218DC Created Zip Spec      14 (20) '2.0'\n+2218DD Created OS            00 (0) 'MS-DOS'\n+2218DE Extract Zip Spec      14 (20) '2.0'\n+2218DF Extract OS            00 (0) 'MS-DOS'\n+2218E0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21FF4B Compression Method    0008 (8) 'Deflated'\n-21FF4D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21FF51 CRC                   00000000 (0)\n-21FF55 Compressed Size       00000002 (2)\n-21FF59 Uncompressed Size     00000000 (0)\n-21FF5D Filename Length       002A (42)\n-21FF5F Extra Length          0000 (0)\n-21FF61 Comment Length        0000 (0)\n-21FF63 Disk Start            0000 (0)\n-21FF65 Int File Attributes   0000 (0)\n+2218E2 Compression Method    0008 (8) 'Deflated'\n+2218E4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2218E8 CRC                   00000000 (0)\n+2218EC Compressed Size       00000002 (2)\n+2218F0 Uncompressed Size     00000000 (0)\n+2218F4 Filename Length       002D (45)\n+2218F6 Extra Length          0000 (0)\n+2218F8 Comment Length        0000 (0)\n+2218FA Disk Start            0000 (0)\n+2218FC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21FF67 Ext File Attributes   00000000 (0)\n-21FF6B Local Header Offset   00086966 (551270)\n-21FF6F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2218FE Ext File Attributes   00000000 (0)\n+221902 Local Header Offset   000B8127 (753959)\n+221906 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21FF6F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221906: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-21FF99 CENTRAL HEADER #605   02014B50 (33639248)\n-21FF9D Created Zip Spec      14 (20) '2.0'\n-21FF9E Created OS            00 (0) 'MS-DOS'\n-21FF9F Extract Zip Spec      14 (20) '2.0'\n-21FFA0 Extract OS            00 (0) 'MS-DOS'\n-21FFA1 General Purpose Flag  0808 (2056)\n+221933 CENTRAL HEADER #605   02014B50 (33639248)\n+221937 Created Zip Spec      14 (20) '2.0'\n+221938 Created OS            00 (0) 'MS-DOS'\n+221939 Extract Zip Spec      14 (20) '2.0'\n+22193A Extract OS            00 (0) 'MS-DOS'\n+22193B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-21FFA3 Compression Method    0008 (8) 'Deflated'\n-21FFA5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-21FFA9 CRC                   B81BB8E1 (3088824545)\n-21FFAD Compressed Size       0000054D (1357)\n-21FFB1 Uncompressed Size     000011D4 (4564)\n-21FFB5 Filename Length       0041 (65)\n-21FFB7 Extra Length          0000 (0)\n-21FFB9 Comment Length        0000 (0)\n-21FFBB Disk Start            0000 (0)\n-21FFBD Int File Attributes   0000 (0)\n+22193D Compression Method    0008 (8) 'Deflated'\n+22193F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221943 CRC                   CDE8C563 (3454584163)\n+221947 Compressed Size       000003D2 (978)\n+22194B Uncompressed Size     00000B50 (2896)\n+22194F Filename Length       0034 (52)\n+221951 Extra Length          0000 (0)\n+221953 Comment Length        0000 (0)\n+221955 Disk Start            0000 (0)\n+221957 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-21FFBF Ext File Attributes   00000000 (0)\n-21FFC3 Local Header Offset   000869C0 (551360)\n-21FFC7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221959 Ext File Attributes   00000000 (0)\n+22195D Local Header Offset   000B8184 (754052)\n+221961 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x21FFC7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221961: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220008 CENTRAL HEADER #606   02014B50 (33639248)\n-22000C Created Zip Spec      14 (20) '2.0'\n-22000D Created OS            00 (0) 'MS-DOS'\n-22000E Extract Zip Spec      14 (20) '2.0'\n-22000F Extract OS            00 (0) 'MS-DOS'\n-220010 General Purpose Flag  0808 (2056)\n+221995 CENTRAL HEADER #606   02014B50 (33639248)\n+221999 Created Zip Spec      14 (20) '2.0'\n+22199A Created OS            00 (0) 'MS-DOS'\n+22199B Extract Zip Spec      14 (20) '2.0'\n+22199C Extract OS            00 (0) 'MS-DOS'\n+22199D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220012 Compression Method    0008 (8) 'Deflated'\n-220014 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220018 CRC                   C0FD96E7 (3237844711)\n-22001C Compressed Size       00000451 (1105)\n-220020 Uncompressed Size     00000BFA (3066)\n-220024 Filename Length       0040 (64)\n-220026 Extra Length          0000 (0)\n-220028 Comment Length        0000 (0)\n-22002A Disk Start            0000 (0)\n-22002C Int File Attributes   0000 (0)\n+22199F Compression Method    0008 (8) 'Deflated'\n+2219A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2219A5 CRC                   295DB5AA (694007210)\n+2219A9 Compressed Size       00000041 (65)\n+2219AD Uncompressed Size     00000043 (67)\n+2219B1 Filename Length       003B (59)\n+2219B3 Extra Length          0000 (0)\n+2219B5 Comment Length        0000 (0)\n+2219B7 Disk Start            0000 (0)\n+2219B9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22002E Ext File Attributes   00000000 (0)\n-220032 Local Header Offset   00086F7C (552828)\n-220036 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2219BB Ext File Attributes   00000000 (0)\n+2219BF Local Header Offset   000B85B8 (755128)\n+2219C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220036: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2219C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220076 CENTRAL HEADER #607   02014B50 (33639248)\n-22007A Created Zip Spec      14 (20) '2.0'\n-22007B Created OS            00 (0) 'MS-DOS'\n-22007C Extract Zip Spec      14 (20) '2.0'\n-22007D Extract OS            00 (0) 'MS-DOS'\n-22007E General Purpose Flag  0808 (2056)\n+2219FE CENTRAL HEADER #607   02014B50 (33639248)\n+221A02 Created Zip Spec      14 (20) '2.0'\n+221A03 Created OS            00 (0) 'MS-DOS'\n+221A04 Extract Zip Spec      14 (20) '2.0'\n+221A05 Extract OS            00 (0) 'MS-DOS'\n+221A06 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220080 Compression Method    0008 (8) 'Deflated'\n-220082 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220086 CRC                   00000000 (0)\n-22008A Compressed Size       00000002 (2)\n-22008E Uncompressed Size     00000000 (0)\n-220092 Filename Length       0021 (33)\n-220094 Extra Length          0000 (0)\n-220096 Comment Length        0000 (0)\n-220098 Disk Start            0000 (0)\n-22009A Int File Attributes   0000 (0)\n+221A08 Compression Method    0008 (8) 'Deflated'\n+221A0A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221A0E CRC                   00000000 (0)\n+221A12 Compressed Size       00000002 (2)\n+221A16 Uncompressed Size     00000000 (0)\n+221A1A Filename Length       0017 (23)\n+221A1C Extra Length          0000 (0)\n+221A1E Comment Length        0000 (0)\n+221A20 Disk Start            0000 (0)\n+221A22 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22009C Ext File Attributes   00000000 (0)\n-2200A0 Local Header Offset   0008743B (554043)\n-2200A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221A24 Ext File Attributes   00000000 (0)\n+221A28 Local Header Offset   000B8662 (755298)\n+221A2C Filename              'XXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2200A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221A2C: Filename 'XXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2200C5 CENTRAL HEADER #608   02014B50 (33639248)\n-2200C9 Created Zip Spec      14 (20) '2.0'\n-2200CA Created OS            00 (0) 'MS-DOS'\n-2200CB Extract Zip Spec      14 (20) '2.0'\n-2200CC Extract OS            00 (0) 'MS-DOS'\n-2200CD General Purpose Flag  0808 (2056)\n+221A43 CENTRAL HEADER #608   02014B50 (33639248)\n+221A47 Created Zip Spec      14 (20) '2.0'\n+221A48 Created OS            00 (0) 'MS-DOS'\n+221A49 Extract Zip Spec      14 (20) '2.0'\n+221A4A Extract OS            00 (0) 'MS-DOS'\n+221A4B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2200CF Compression Method    0008 (8) 'Deflated'\n-2200D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2200D5 CRC                   3980931B (964727579)\n-2200D9 Compressed Size       0000036A (874)\n-2200DD Uncompressed Size     00000925 (2341)\n-2200E1 Filename Length       0030 (48)\n-2200E3 Extra Length          0000 (0)\n-2200E5 Comment Length        0000 (0)\n-2200E7 Disk Start            0000 (0)\n-2200E9 Int File Attributes   0000 (0)\n+221A4D Compression Method    0008 (8) 'Deflated'\n+221A4F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221A53 CRC                   4E701AB1 (1315969713)\n+221A57 Compressed Size       0000031C (796)\n+221A5B Uncompressed Size     000006EA (1770)\n+221A5F Filename Length       0021 (33)\n+221A61 Extra Length          0000 (0)\n+221A63 Comment Length        0000 (0)\n+221A65 Disk Start            0000 (0)\n+221A67 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2200EB Ext File Attributes   00000000 (0)\n-2200EF Local Header Offset   0008748C (554124)\n-2200F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221A69 Ext File Attributes   00000000 (0)\n+221A6D Local Header Offset   000B86A9 (755369)\n+221A71 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2200F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221A71: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220123 CENTRAL HEADER #609   02014B50 (33639248)\n-220127 Created Zip Spec      14 (20) '2.0'\n-220128 Created OS            00 (0) 'MS-DOS'\n-220129 Extract Zip Spec      14 (20) '2.0'\n-22012A Extract OS            00 (0) 'MS-DOS'\n-22012B General Purpose Flag  0808 (2056)\n+221A92 CENTRAL HEADER #609   02014B50 (33639248)\n+221A96 Created Zip Spec      14 (20) '2.0'\n+221A97 Created OS            00 (0) 'MS-DOS'\n+221A98 Extract Zip Spec      14 (20) '2.0'\n+221A99 Extract OS            00 (0) 'MS-DOS'\n+221A9A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22012D Compression Method    0008 (8) 'Deflated'\n-22012F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220133 CRC                   4F8202FE (1333920510)\n-220137 Compressed Size       000003A8 (936)\n-22013B Uncompressed Size     00000A7B (2683)\n-22013F Filename Length       002D (45)\n-220141 Extra Length          0000 (0)\n-220143 Comment Length        0000 (0)\n-220145 Disk Start            0000 (0)\n-220147 Int File Attributes   0000 (0)\n+221A9C Compression Method    0008 (8) 'Deflated'\n+221A9E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221AA2 CRC                   95722913 (2507286803)\n+221AA6 Compressed Size       0000032C (812)\n+221AAA Uncompressed Size     000006C2 (1730)\n+221AAE Filename Length       0028 (40)\n+221AB0 Extra Length          0000 (0)\n+221AB2 Comment Length        0000 (0)\n+221AB4 Disk Start            0000 (0)\n+221AB6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220149 Ext File Attributes   00000000 (0)\n-22014D Local Header Offset   00087854 (555092)\n-220151 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221AB8 Ext File Attributes   00000000 (0)\n+221ABC Local Header Offset   000B8A14 (756244)\n+221AC0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220151: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221AC0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22017E CENTRAL HEADER #610   02014B50 (33639248)\n-220182 Created Zip Spec      14 (20) '2.0'\n-220183 Created OS            00 (0) 'MS-DOS'\n-220184 Extract Zip Spec      14 (20) '2.0'\n-220185 Extract OS            00 (0) 'MS-DOS'\n-220186 General Purpose Flag  0808 (2056)\n+221AE8 CENTRAL HEADER #610   02014B50 (33639248)\n+221AEC Created Zip Spec      14 (20) '2.0'\n+221AED Created OS            00 (0) 'MS-DOS'\n+221AEE Extract Zip Spec      14 (20) '2.0'\n+221AEF Extract OS            00 (0) 'MS-DOS'\n+221AF0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220188 Compression Method    0008 (8) 'Deflated'\n-22018A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22018E CRC                   3F1DB4B7 (1058911415)\n-220192 Compressed Size       000002DE (734)\n-220196 Uncompressed Size     00000638 (1592)\n-22019A Filename Length       0035 (53)\n-22019C Extra Length          0000 (0)\n-22019E Comment Length        0000 (0)\n-2201A0 Disk Start            0000 (0)\n-2201A2 Int File Attributes   0000 (0)\n+221AF2 Compression Method    0008 (8) 'Deflated'\n+221AF4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221AF8 CRC                   00000000 (0)\n+221AFC Compressed Size       00000002 (2)\n+221B00 Uncompressed Size     00000000 (0)\n+221B04 Filename Length       001E (30)\n+221B06 Extra Length          0000 (0)\n+221B08 Comment Length        0000 (0)\n+221B0A Disk Start            0000 (0)\n+221B0C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2201A4 Ext File Attributes   00000000 (0)\n-2201A8 Local Header Offset   00087C57 (556119)\n-2201AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221B0E Ext File Attributes   00000000 (0)\n+221B12 Local Header Offset   000B8D96 (757142)\n+221B16 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2201AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221B16: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2201E1 CENTRAL HEADER #611   02014B50 (33639248)\n-2201E5 Created Zip Spec      14 (20) '2.0'\n-2201E6 Created OS            00 (0) 'MS-DOS'\n-2201E7 Extract Zip Spec      14 (20) '2.0'\n-2201E8 Extract OS            00 (0) 'MS-DOS'\n-2201E9 General Purpose Flag  0808 (2056)\n+221B34 CENTRAL HEADER #611   02014B50 (33639248)\n+221B38 Created Zip Spec      14 (20) '2.0'\n+221B39 Created OS            00 (0) 'MS-DOS'\n+221B3A Extract Zip Spec      14 (20) '2.0'\n+221B3B Extract OS            00 (0) 'MS-DOS'\n+221B3C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2201EB Compression Method    0008 (8) 'Deflated'\n-2201ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2201F1 CRC                   86537D4A (2253618506)\n-2201F5 Compressed Size       00000360 (864)\n-2201F9 Uncompressed Size     000007F0 (2032)\n-2201FD Filename Length       0037 (55)\n-2201FF Extra Length          0000 (0)\n-220201 Comment Length        0000 (0)\n-220203 Disk Start            0000 (0)\n-220205 Int File Attributes   0000 (0)\n+221B3E Compression Method    0008 (8) 'Deflated'\n+221B40 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221B44 CRC                   0E9E2711 (245245713)\n+221B48 Compressed Size       00000790 (1936)\n+221B4C Uncompressed Size     000016CB (5835)\n+221B50 Filename Length       002E (46)\n+221B52 Extra Length          0000 (0)\n+221B54 Comment Length        0000 (0)\n+221B56 Disk Start            0000 (0)\n+221B58 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220207 Ext File Attributes   00000000 (0)\n-22020B Local Header Offset   00087F98 (556952)\n-22020F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221B5A Ext File Attributes   00000000 (0)\n+221B5E Local Header Offset   000B8DE4 (757220)\n+221B62 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22020F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221B62: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220246 CENTRAL HEADER #612   02014B50 (33639248)\n-22024A Created Zip Spec      14 (20) '2.0'\n-22024B Created OS            00 (0) 'MS-DOS'\n-22024C Extract Zip Spec      14 (20) '2.0'\n-22024D Extract OS            00 (0) 'MS-DOS'\n-22024E General Purpose Flag  0808 (2056)\n+221B90 CENTRAL HEADER #612   02014B50 (33639248)\n+221B94 Created Zip Spec      14 (20) '2.0'\n+221B95 Created OS            00 (0) 'MS-DOS'\n+221B96 Extract Zip Spec      14 (20) '2.0'\n+221B97 Extract OS            00 (0) 'MS-DOS'\n+221B98 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220250 Compression Method    0008 (8) 'Deflated'\n-220252 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220256 CRC                   76835014 (1988317204)\n-22025A Compressed Size       00000372 (882)\n-22025E Uncompressed Size     00000885 (2181)\n-220262 Filename Length       0037 (55)\n-220264 Extra Length          0000 (0)\n-220266 Comment Length        0000 (0)\n-220268 Disk Start            0000 (0)\n-22026A Int File Attributes   0000 (0)\n+221B9A Compression Method    0008 (8) 'Deflated'\n+221B9C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221BA0 CRC                   00000000 (0)\n+221BA4 Compressed Size       00000002 (2)\n+221BA8 Uncompressed Size     00000000 (0)\n+221BAC Filename Length       001F (31)\n+221BAE Extra Length          0000 (0)\n+221BB0 Comment Length        0000 (0)\n+221BB2 Disk Start            0000 (0)\n+221BB4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22026C Ext File Attributes   00000000 (0)\n-220270 Local Header Offset   0008835D (557917)\n-220274 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221BB6 Ext File Attributes   00000000 (0)\n+221BBA Local Header Offset   000B95D0 (759248)\n+221BBE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220274: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221BBE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2202AB CENTRAL HEADER #613   02014B50 (33639248)\n-2202AF Created Zip Spec      14 (20) '2.0'\n-2202B0 Created OS            00 (0) 'MS-DOS'\n-2202B1 Extract Zip Spec      14 (20) '2.0'\n-2202B2 Extract OS            00 (0) 'MS-DOS'\n-2202B3 General Purpose Flag  0808 (2056)\n+221BDD CENTRAL HEADER #613   02014B50 (33639248)\n+221BE1 Created Zip Spec      14 (20) '2.0'\n+221BE2 Created OS            00 (0) 'MS-DOS'\n+221BE3 Extract Zip Spec      14 (20) '2.0'\n+221BE4 Extract OS            00 (0) 'MS-DOS'\n+221BE5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2202B5 Compression Method    0008 (8) 'Deflated'\n-2202B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2202BB CRC                   00000000 (0)\n-2202BF Compressed Size       00000002 (2)\n-2202C3 Uncompressed Size     00000000 (0)\n-2202C7 Filename Length       001E (30)\n-2202C9 Extra Length          0000 (0)\n-2202CB Comment Length        0000 (0)\n-2202CD Disk Start            0000 (0)\n-2202CF Int File Attributes   0000 (0)\n+221BE7 Compression Method    0008 (8) 'Deflated'\n+221BE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221BED CRC                   048D5F10 (76373776)\n+221BF1 Compressed Size       000004B5 (1205)\n+221BF5 Uncompressed Size     00000C38 (3128)\n+221BF9 Filename Length       0038 (56)\n+221BFB Extra Length          0000 (0)\n+221BFD Comment Length        0000 (0)\n+221BFF Disk Start            0000 (0)\n+221C01 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2202D1 Ext File Attributes   00000000 (0)\n-2202D5 Local Header Offset   00088734 (558900)\n-2202D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221C03 Ext File Attributes   00000000 (0)\n+221C07 Local Header Offset   000B961F (759327)\n+221C0B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2202D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221C0B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2202F7 CENTRAL HEADER #614   02014B50 (33639248)\n-2202FB Created Zip Spec      14 (20) '2.0'\n-2202FC Created OS            00 (0) 'MS-DOS'\n-2202FD Extract Zip Spec      14 (20) '2.0'\n-2202FE Extract OS            00 (0) 'MS-DOS'\n-2202FF General Purpose Flag  0808 (2056)\n+221C43 CENTRAL HEADER #614   02014B50 (33639248)\n+221C47 Created Zip Spec      14 (20) '2.0'\n+221C48 Created OS            00 (0) 'MS-DOS'\n+221C49 Extract Zip Spec      14 (20) '2.0'\n+221C4A Extract OS            00 (0) 'MS-DOS'\n+221C4B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220301 Compression Method    0008 (8) 'Deflated'\n-220303 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220307 CRC                   7A06D81E (2047268894)\n-22030B Compressed Size       0000031E (798)\n-22030F Uncompressed Size     00000619 (1561)\n-220313 Filename Length       002F (47)\n-220315 Extra Length          0000 (0)\n-220317 Comment Length        0000 (0)\n-220319 Disk Start            0000 (0)\n-22031B Int File Attributes   0000 (0)\n+221C4D Compression Method    0008 (8) 'Deflated'\n+221C4F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221C53 CRC                   00000000 (0)\n+221C57 Compressed Size       00000002 (2)\n+221C5B Uncompressed Size     00000000 (0)\n+221C5F Filename Length       0028 (40)\n+221C61 Extra Length          0000 (0)\n+221C63 Comment Length        0000 (0)\n+221C65 Disk Start            0000 (0)\n+221C67 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22031D Ext File Attributes   00000000 (0)\n-220321 Local Header Offset   00088782 (558978)\n-220325 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221C69 Ext File Attributes   00000000 (0)\n+221C6D Local Header Offset   000B9B3A (760634)\n+221C71 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220325: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221C71: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220354 CENTRAL HEADER #615   02014B50 (33639248)\n-220358 Created Zip Spec      14 (20) '2.0'\n-220359 Created OS            00 (0) 'MS-DOS'\n-22035A Extract Zip Spec      14 (20) '2.0'\n-22035B Extract OS            00 (0) 'MS-DOS'\n-22035C General Purpose Flag  0808 (2056)\n+221C99 CENTRAL HEADER #615   02014B50 (33639248)\n+221C9D Created Zip Spec      14 (20) '2.0'\n+221C9E Created OS            00 (0) 'MS-DOS'\n+221C9F Extract Zip Spec      14 (20) '2.0'\n+221CA0 Extract OS            00 (0) 'MS-DOS'\n+221CA1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22035E Compression Method    0008 (8) 'Deflated'\n-220360 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220364 CRC                   00000000 (0)\n-220368 Compressed Size       00000002 (2)\n-22036C Uncompressed Size     00000000 (0)\n-220370 Filename Length       0026 (38)\n-220372 Extra Length          0000 (0)\n-220374 Comment Length        0000 (0)\n-220376 Disk Start            0000 (0)\n-220378 Int File Attributes   0000 (0)\n+221CA3 Compression Method    0008 (8) 'Deflated'\n+221CA5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221CA9 CRC                   EF4D8024 (4014833700)\n+221CAD Compressed Size       00000528 (1320)\n+221CB1 Uncompressed Size     00000C9F (3231)\n+221CB5 Filename Length       003A (58)\n+221CB7 Extra Length          0000 (0)\n+221CB9 Comment Length        0000 (0)\n+221CBB Disk Start            0000 (0)\n+221CBD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22037A Ext File Attributes   00000000 (0)\n-22037E Local Header Offset   00088AFD (559869)\n-220382 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221CBF Ext File Attributes   00000000 (0)\n+221CC3 Local Header Offset   000B9B92 (760722)\n+221CC7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220382: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221CC7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2203A8 CENTRAL HEADER #616   02014B50 (33639248)\n-2203AC Created Zip Spec      14 (20) '2.0'\n-2203AD Created OS            00 (0) 'MS-DOS'\n-2203AE Extract Zip Spec      14 (20) '2.0'\n-2203AF Extract OS            00 (0) 'MS-DOS'\n-2203B0 General Purpose Flag  0808 (2056)\n+221D01 CENTRAL HEADER #616   02014B50 (33639248)\n+221D05 Created Zip Spec      14 (20) '2.0'\n+221D06 Created OS            00 (0) 'MS-DOS'\n+221D07 Extract Zip Spec      14 (20) '2.0'\n+221D08 Extract OS            00 (0) 'MS-DOS'\n+221D09 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2203B2 Compression Method    0008 (8) 'Deflated'\n-2203B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2203B8 CRC                   596F5AFB (1500470011)\n-2203BC Compressed Size       00000283 (643)\n-2203C0 Uncompressed Size     00000504 (1284)\n-2203C4 Filename Length       0036 (54)\n-2203C6 Extra Length          0000 (0)\n-2203C8 Comment Length        0000 (0)\n-2203CA Disk Start            0000 (0)\n-2203CC Int File Attributes   0000 (0)\n+221D0B Compression Method    0008 (8) 'Deflated'\n+221D0D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221D11 CRC                   11FDDB06 (301849350)\n+221D15 Compressed Size       000002F2 (754)\n+221D19 Uncompressed Size     0000065F (1631)\n+221D1D Filename Length       0041 (65)\n+221D1F Extra Length          0000 (0)\n+221D21 Comment Length        0000 (0)\n+221D23 Disk Start            0000 (0)\n+221D25 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2203CE Ext File Attributes   00000000 (0)\n-2203D2 Local Header Offset   00088B53 (559955)\n-2203D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221D27 Ext File Attributes   00000000 (0)\n+221D2B Local Header Offset   000BA122 (762146)\n+221D2F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2203D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221D2F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22040C CENTRAL HEADER #617   02014B50 (33639248)\n-220410 Created Zip Spec      14 (20) '2.0'\n-220411 Created OS            00 (0) 'MS-DOS'\n-220412 Extract Zip Spec      14 (20) '2.0'\n-220413 Extract OS            00 (0) 'MS-DOS'\n-220414 General Purpose Flag  0808 (2056)\n+221D70 CENTRAL HEADER #617   02014B50 (33639248)\n+221D74 Created Zip Spec      14 (20) '2.0'\n+221D75 Created OS            00 (0) 'MS-DOS'\n+221D76 Extract Zip Spec      14 (20) '2.0'\n+221D77 Extract OS            00 (0) 'MS-DOS'\n+221D78 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220416 Compression Method    0008 (8) 'Deflated'\n-220418 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22041C CRC                   DAE5D322 (3672494882)\n-220420 Compressed Size       00000417 (1047)\n-220424 Uncompressed Size     00000B55 (2901)\n-220428 Filename Length       003D (61)\n-22042A Extra Length          0000 (0)\n-22042C Comment Length        0000 (0)\n-22042E Disk Start            0000 (0)\n-220430 Int File Attributes   0000 (0)\n+221D7A Compression Method    0008 (8) 'Deflated'\n+221D7C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221D80 CRC                   901C84B7 (2417788087)\n+221D84 Compressed Size       000009DB (2523)\n+221D88 Uncompressed Size     00002AEB (10987)\n+221D8C Filename Length       0038 (56)\n+221D8E Extra Length          0000 (0)\n+221D90 Comment Length        0000 (0)\n+221D92 Disk Start            0000 (0)\n+221D94 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220432 Ext File Attributes   00000000 (0)\n-220436 Local Header Offset   00088E3A (560698)\n-22043A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221D96 Ext File Attributes   00000000 (0)\n+221D9A Local Header Offset   000BA483 (763011)\n+221D9E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22043A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221D9E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220477 CENTRAL HEADER #618   02014B50 (33639248)\n-22047B Created Zip Spec      14 (20) '2.0'\n-22047C Created OS            00 (0) 'MS-DOS'\n-22047D Extract Zip Spec      14 (20) '2.0'\n-22047E Extract OS            00 (0) 'MS-DOS'\n-22047F General Purpose Flag  0808 (2056)\n+221DD6 CENTRAL HEADER #618   02014B50 (33639248)\n+221DDA Created Zip Spec      14 (20) '2.0'\n+221DDB Created OS            00 (0) 'MS-DOS'\n+221DDC Extract Zip Spec      14 (20) '2.0'\n+221DDD Extract OS            00 (0) 'MS-DOS'\n+221DDE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220481 Compression Method    0008 (8) 'Deflated'\n-220483 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220487 CRC                   00000000 (0)\n-22048B Compressed Size       00000002 (2)\n-22048F Uncompressed Size     00000000 (0)\n-220493 Filename Length       001B (27)\n-220495 Extra Length          0000 (0)\n-220497 Comment Length        0000 (0)\n-220499 Disk Start            0000 (0)\n-22049B Int File Attributes   0000 (0)\n+221DE0 Compression Method    0008 (8) 'Deflated'\n+221DE2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221DE6 CRC                   00000000 (0)\n+221DEA Compressed Size       00000002 (2)\n+221DEE Uncompressed Size     00000000 (0)\n+221DF2 Filename Length       0026 (38)\n+221DF4 Extra Length          0000 (0)\n+221DF6 Comment Length        0000 (0)\n+221DF8 Disk Start            0000 (0)\n+221DFA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22049D Ext File Attributes   00000000 (0)\n-2204A1 Local Header Offset   000892BC (561852)\n-2204A5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221DFC Ext File Attributes   00000000 (0)\n+221E00 Local Header Offset   000BAEC4 (765636)\n+221E04 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2204A5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221E04: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2204C0 CENTRAL HEADER #619   02014B50 (33639248)\n-2204C4 Created Zip Spec      14 (20) '2.0'\n-2204C5 Created OS            00 (0) 'MS-DOS'\n-2204C6 Extract Zip Spec      14 (20) '2.0'\n-2204C7 Extract OS            00 (0) 'MS-DOS'\n-2204C8 General Purpose Flag  0808 (2056)\n+221E2A CENTRAL HEADER #619   02014B50 (33639248)\n+221E2E Created Zip Spec      14 (20) '2.0'\n+221E2F Created OS            00 (0) 'MS-DOS'\n+221E30 Extract Zip Spec      14 (20) '2.0'\n+221E31 Extract OS            00 (0) 'MS-DOS'\n+221E32 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2204CA Compression Method    0008 (8) 'Deflated'\n-2204CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2204D0 CRC                   0BDE6714 (199124756)\n-2204D4 Compressed Size       00000F70 (3952)\n-2204D8 Uncompressed Size     00006518 (25880)\n-2204DC Filename Length       0025 (37)\n-2204DE Extra Length          0000 (0)\n-2204E0 Comment Length        0000 (0)\n-2204E2 Disk Start            0000 (0)\n-2204E4 Int File Attributes   0000 (0)\n+221E34 Compression Method    0008 (8) 'Deflated'\n+221E36 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221E3A CRC                   5EA7953B (1588041019)\n+221E3E Compressed Size       00000563 (1379)\n+221E42 Uncompressed Size     00000E48 (3656)\n+221E46 Filename Length       0031 (49)\n+221E48 Extra Length          0000 (0)\n+221E4A Comment Length        0000 (0)\n+221E4C Disk Start            0000 (0)\n+221E4E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2204E6 Ext File Attributes   00000000 (0)\n-2204EA Local Header Offset   00089307 (561927)\n-2204EE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221E50 Ext File Attributes   00000000 (0)\n+221E54 Local Header Offset   000BAF1A (765722)\n+221E58 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2204EE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221E58: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220513 CENTRAL HEADER #620   02014B50 (33639248)\n-220517 Created Zip Spec      14 (20) '2.0'\n-220518 Created OS            00 (0) 'MS-DOS'\n-220519 Extract Zip Spec      14 (20) '2.0'\n-22051A Extract OS            00 (0) 'MS-DOS'\n-22051B General Purpose Flag  0808 (2056)\n+221E89 CENTRAL HEADER #620   02014B50 (33639248)\n+221E8D Created Zip Spec      14 (20) '2.0'\n+221E8E Created OS            00 (0) 'MS-DOS'\n+221E8F Extract Zip Spec      14 (20) '2.0'\n+221E90 Extract OS            00 (0) 'MS-DOS'\n+221E91 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22051D Compression Method    0008 (8) 'Deflated'\n-22051F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220523 CRC                   16F10E62 (384896610)\n-220527 Compressed Size       00000639 (1593)\n-22052B Uncompressed Size     00001B02 (6914)\n-22052F Filename Length       002B (43)\n-220531 Extra Length          0000 (0)\n-220533 Comment Length        0000 (0)\n-220535 Disk Start            0000 (0)\n-220537 Int File Attributes   0000 (0)\n+221E93 Compression Method    0008 (8) 'Deflated'\n+221E95 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221E99 CRC                   05E875FD (99120637)\n+221E9D Compressed Size       00000321 (801)\n+221EA1 Uncompressed Size     0000070E (1806)\n+221EA5 Filename Length       0038 (56)\n+221EA7 Extra Length          0000 (0)\n+221EA9 Comment Length        0000 (0)\n+221EAB Disk Start            0000 (0)\n+221EAD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220539 Ext File Attributes   00000000 (0)\n-22053D Local Header Offset   0008A2CA (565962)\n-220541 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221EAF Ext File Attributes   00000000 (0)\n+221EB3 Local Header Offset   000BB4DC (767196)\n+221EB7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220541: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221EB7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22056C CENTRAL HEADER #621   02014B50 (33639248)\n-220570 Created Zip Spec      14 (20) '2.0'\n-220571 Created OS            00 (0) 'MS-DOS'\n-220572 Extract Zip Spec      14 (20) '2.0'\n-220573 Extract OS            00 (0) 'MS-DOS'\n-220574 General Purpose Flag  0808 (2056)\n+221EEF CENTRAL HEADER #621   02014B50 (33639248)\n+221EF3 Created Zip Spec      14 (20) '2.0'\n+221EF4 Created OS            00 (0) 'MS-DOS'\n+221EF5 Extract Zip Spec      14 (20) '2.0'\n+221EF6 Extract OS            00 (0) 'MS-DOS'\n+221EF7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220576 Compression Method    0008 (8) 'Deflated'\n-220578 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22057C CRC                   A6F50F6E (2801078126)\n-220580 Compressed Size       0000041D (1053)\n-220584 Uncompressed Size     00000BEB (3051)\n-220588 Filename Length       003A (58)\n-22058A Extra Length          0000 (0)\n-22058C Comment Length        0000 (0)\n-22058E Disk Start            0000 (0)\n-220590 Int File Attributes   0000 (0)\n+221EF9 Compression Method    0008 (8) 'Deflated'\n+221EFB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221EFF CRC                   00000000 (0)\n+221F03 Compressed Size       00000002 (2)\n+221F07 Uncompressed Size     00000000 (0)\n+221F0B Filename Length       0023 (35)\n+221F0D Extra Length          0000 (0)\n+221F0F Comment Length        0000 (0)\n+221F11 Disk Start            0000 (0)\n+221F13 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220592 Ext File Attributes   00000000 (0)\n-220596 Local Header Offset   0008A95C (567644)\n-22059A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221F15 Ext File Attributes   00000000 (0)\n+221F19 Local Header Offset   000BB863 (768099)\n+221F1D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22059A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221F1D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2205D4 CENTRAL HEADER #622   02014B50 (33639248)\n-2205D8 Created Zip Spec      14 (20) '2.0'\n-2205D9 Created OS            00 (0) 'MS-DOS'\n-2205DA Extract Zip Spec      14 (20) '2.0'\n-2205DB Extract OS            00 (0) 'MS-DOS'\n-2205DC General Purpose Flag  0808 (2056)\n+221F40 CENTRAL HEADER #622   02014B50 (33639248)\n+221F44 Created Zip Spec      14 (20) '2.0'\n+221F45 Created OS            00 (0) 'MS-DOS'\n+221F46 Extract Zip Spec      14 (20) '2.0'\n+221F47 Extract OS            00 (0) 'MS-DOS'\n+221F48 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2205DE Compression Method    0008 (8) 'Deflated'\n-2205E0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2205E4 CRC                   5110A2B9 (1360044729)\n-2205E8 Compressed Size       0000041B (1051)\n-2205EC Uncompressed Size     00000B8E (2958)\n-2205F0 Filename Length       003B (59)\n-2205F2 Extra Length          0000 (0)\n-2205F4 Comment Length        0000 (0)\n-2205F6 Disk Start            0000 (0)\n-2205F8 Int File Attributes   0000 (0)\n+221F4A Compression Method    0008 (8) 'Deflated'\n+221F4C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221F50 CRC                   21421505 (557978885)\n+221F54 Compressed Size       00000516 (1302)\n+221F58 Uncompressed Size     00000C9E (3230)\n+221F5C Filename Length       0030 (48)\n+221F5E Extra Length          0000 (0)\n+221F60 Comment Length        0000 (0)\n+221F62 Disk Start            0000 (0)\n+221F64 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2205FA Ext File Attributes   00000000 (0)\n-2205FE Local Header Offset   0008ADE1 (568801)\n-220602 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221F66 Ext File Attributes   00000000 (0)\n+221F6A Local Header Offset   000BB8B6 (768182)\n+221F6E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220602: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221F6E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22063D CENTRAL HEADER #623   02014B50 (33639248)\n-220641 Created Zip Spec      14 (20) '2.0'\n-220642 Created OS            00 (0) 'MS-DOS'\n-220643 Extract Zip Spec      14 (20) '2.0'\n-220644 Extract OS            00 (0) 'MS-DOS'\n-220645 General Purpose Flag  0808 (2056)\n+221F9E CENTRAL HEADER #623   02014B50 (33639248)\n+221FA2 Created Zip Spec      14 (20) '2.0'\n+221FA3 Created OS            00 (0) 'MS-DOS'\n+221FA4 Extract Zip Spec      14 (20) '2.0'\n+221FA5 Extract OS            00 (0) 'MS-DOS'\n+221FA6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220647 Compression Method    0008 (8) 'Deflated'\n-220649 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22064D CRC                   490F11E6 (1225724390)\n-220651 Compressed Size       0000041C (1052)\n-220655 Uncompressed Size     00000C65 (3173)\n-220659 Filename Length       0032 (50)\n-22065B Extra Length          0000 (0)\n-22065D Comment Length        0000 (0)\n-22065F Disk Start            0000 (0)\n-220661 Int File Attributes   0000 (0)\n+221FA8 Compression Method    0008 (8) 'Deflated'\n+221FAA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+221FAE CRC                   766BD114 (1986777364)\n+221FB2 Compressed Size       000002F2 (754)\n+221FB6 Uncompressed Size     00000649 (1609)\n+221FBA Filename Length       0037 (55)\n+221FBC Extra Length          0000 (0)\n+221FBE Comment Length        0000 (0)\n+221FC0 Disk Start            0000 (0)\n+221FC2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220663 Ext File Attributes   00000000 (0)\n-220667 Local Header Offset   0008B265 (569957)\n-22066B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+221FC4 Ext File Attributes   00000000 (0)\n+221FC8 Local Header Offset   000BBE2A (769578)\n+221FCC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22066B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x221FCC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22069D CENTRAL HEADER #624   02014B50 (33639248)\n-2206A1 Created Zip Spec      14 (20) '2.0'\n-2206A2 Created OS            00 (0) 'MS-DOS'\n-2206A3 Extract Zip Spec      14 (20) '2.0'\n-2206A4 Extract OS            00 (0) 'MS-DOS'\n-2206A5 General Purpose Flag  0808 (2056)\n+222003 CENTRAL HEADER #624   02014B50 (33639248)\n+222007 Created Zip Spec      14 (20) '2.0'\n+222008 Created OS            00 (0) 'MS-DOS'\n+222009 Extract Zip Spec      14 (20) '2.0'\n+22200A Extract OS            00 (0) 'MS-DOS'\n+22200B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2206A7 Compression Method    0008 (8) 'Deflated'\n-2206A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2206AD CRC                   2D3D8039 (759005241)\n-2206B1 Compressed Size       000003D3 (979)\n-2206B5 Uncompressed Size     00000AD5 (2773)\n-2206B9 Filename Length       0032 (50)\n-2206BB Extra Length          0000 (0)\n-2206BD Comment Length        0000 (0)\n-2206BF Disk Start            0000 (0)\n-2206C1 Int File Attributes   0000 (0)\n+22200D Compression Method    0008 (8) 'Deflated'\n+22200F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222013 CRC                   00000000 (0)\n+222017 Compressed Size       00000002 (2)\n+22201B Uncompressed Size     00000000 (0)\n+22201F Filename Length       0023 (35)\n+222021 Extra Length          0000 (0)\n+222023 Comment Length        0000 (0)\n+222025 Disk Start            0000 (0)\n+222027 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2206C3 Ext File Attributes   00000000 (0)\n-2206C7 Local Header Offset   0008B6E1 (571105)\n-2206CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222029 Ext File Attributes   00000000 (0)\n+22202D Local Header Offset   000BC181 (770433)\n+222031 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2206CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222031: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2206FD CENTRAL HEADER #625   02014B50 (33639248)\n-220701 Created Zip Spec      14 (20) '2.0'\n-220702 Created OS            00 (0) 'MS-DOS'\n-220703 Extract Zip Spec      14 (20) '2.0'\n-220704 Extract OS            00 (0) 'MS-DOS'\n-220705 General Purpose Flag  0808 (2056)\n+222054 CENTRAL HEADER #625   02014B50 (33639248)\n+222058 Created Zip Spec      14 (20) '2.0'\n+222059 Created OS            00 (0) 'MS-DOS'\n+22205A Extract Zip Spec      14 (20) '2.0'\n+22205B Extract OS            00 (0) 'MS-DOS'\n+22205C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220707 Compression Method    0008 (8) 'Deflated'\n-220709 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22070D CRC                   00000000 (0)\n-220711 Compressed Size       00000002 (2)\n-220715 Uncompressed Size     00000000 (0)\n-220719 Filename Length       001D (29)\n-22071B Extra Length          0000 (0)\n-22071D Comment Length        0000 (0)\n-22071F Disk Start            0000 (0)\n-220721 Int File Attributes   0000 (0)\n+22205E Compression Method    0008 (8) 'Deflated'\n+222060 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222064 CRC                   E901806B (3909189739)\n+222068 Compressed Size       000004D9 (1241)\n+22206C Uncompressed Size     00000B75 (2933)\n+222070 Filename Length       0030 (48)\n+222072 Extra Length          0000 (0)\n+222074 Comment Length        0000 (0)\n+222076 Disk Start            0000 (0)\n+222078 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220723 Ext File Attributes   00000000 (0)\n-220727 Local Header Offset   0008BB14 (572180)\n-22072B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22207A Ext File Attributes   00000000 (0)\n+22207E Local Header Offset   000BC1D4 (770516)\n+222082 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22072B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222082: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220748 CENTRAL HEADER #626   02014B50 (33639248)\n-22074C Created Zip Spec      14 (20) '2.0'\n-22074D Created OS            00 (0) 'MS-DOS'\n-22074E Extract Zip Spec      14 (20) '2.0'\n-22074F Extract OS            00 (0) 'MS-DOS'\n-220750 General Purpose Flag  0808 (2056)\n+2220B2 CENTRAL HEADER #626   02014B50 (33639248)\n+2220B6 Created Zip Spec      14 (20) '2.0'\n+2220B7 Created OS            00 (0) 'MS-DOS'\n+2220B8 Extract Zip Spec      14 (20) '2.0'\n+2220B9 Extract OS            00 (0) 'MS-DOS'\n+2220BA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220752 Compression Method    0008 (8) 'Deflated'\n-220754 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220758 CRC                   BACA53B9 (3133821881)\n-22075C Compressed Size       00000A93 (2707)\n-220760 Uncompressed Size     000044D5 (17621)\n-220764 Filename Length       0036 (54)\n-220766 Extra Length          0000 (0)\n-220768 Comment Length        0000 (0)\n-22076A Disk Start            0000 (0)\n-22076C Int File Attributes   0000 (0)\n+2220BC Compression Method    0008 (8) 'Deflated'\n+2220BE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2220C2 CRC                   45C1CEBF (1170329279)\n+2220C6 Compressed Size       000002F1 (753)\n+2220CA Uncompressed Size     00000649 (1609)\n+2220CE Filename Length       0037 (55)\n+2220D0 Extra Length          0000 (0)\n+2220D2 Comment Length        0000 (0)\n+2220D4 Disk Start            0000 (0)\n+2220D6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22076E Ext File Attributes   00000000 (0)\n-220772 Local Header Offset   0008BB61 (572257)\n-220776 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2220D8 Ext File Attributes   00000000 (0)\n+2220DC Local Header Offset   000BC70B (771851)\n+2220E0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220776: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2220E0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2207AC CENTRAL HEADER #627   02014B50 (33639248)\n-2207B0 Created Zip Spec      14 (20) '2.0'\n-2207B1 Created OS            00 (0) 'MS-DOS'\n-2207B2 Extract Zip Spec      14 (20) '2.0'\n-2207B3 Extract OS            00 (0) 'MS-DOS'\n-2207B4 General Purpose Flag  0808 (2056)\n+222117 CENTRAL HEADER #627   02014B50 (33639248)\n+22211B Created Zip Spec      14 (20) '2.0'\n+22211C Created OS            00 (0) 'MS-DOS'\n+22211D Extract Zip Spec      14 (20) '2.0'\n+22211E Extract OS            00 (0) 'MS-DOS'\n+22211F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2207B6 Compression Method    0008 (8) 'Deflated'\n-2207B8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2207BC CRC                   FA032BB6 (4194511798)\n-2207C0 Compressed Size       00000A68 (2664)\n-2207C4 Uncompressed Size     00003385 (13189)\n-2207C8 Filename Length       002C (44)\n-2207CA Extra Length          0000 (0)\n-2207CC Comment Length        0000 (0)\n-2207CE Disk Start            0000 (0)\n-2207D0 Int File Attributes   0000 (0)\n+222121 Compression Method    0008 (8) 'Deflated'\n+222123 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222127 CRC                   00000000 (0)\n+22212B Compressed Size       00000002 (2)\n+22212F Uncompressed Size     00000000 (0)\n+222133 Filename Length       002B (43)\n+222135 Extra Length          0000 (0)\n+222137 Comment Length        0000 (0)\n+222139 Disk Start            0000 (0)\n+22213B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2207D2 Ext File Attributes   00000000 (0)\n-2207D6 Local Header Offset   0008C658 (575064)\n-2207DA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22213D Ext File Attributes   00000000 (0)\n+222141 Local Header Offset   000BCA61 (772705)\n+222145 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2207DA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222145: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220806 CENTRAL HEADER #628   02014B50 (33639248)\n-22080A Created Zip Spec      14 (20) '2.0'\n-22080B Created OS            00 (0) 'MS-DOS'\n-22080C Extract Zip Spec      14 (20) '2.0'\n-22080D Extract OS            00 (0) 'MS-DOS'\n-22080E General Purpose Flag  0808 (2056)\n+222170 CENTRAL HEADER #628   02014B50 (33639248)\n+222174 Created Zip Spec      14 (20) '2.0'\n+222175 Created OS            00 (0) 'MS-DOS'\n+222176 Extract Zip Spec      14 (20) '2.0'\n+222177 Extract OS            00 (0) 'MS-DOS'\n+222178 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220810 Compression Method    0008 (8) 'Deflated'\n-220812 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220816 CRC                   39C07894 (968915092)\n-22081A Compressed Size       00000BBA (3002)\n-22081E Uncompressed Size     00006AA4 (27300)\n-220822 Filename Length       0026 (38)\n-220824 Extra Length          0000 (0)\n-220826 Comment Length        0000 (0)\n-220828 Disk Start            0000 (0)\n-22082A Int File Attributes   0000 (0)\n+22217A Compression Method    0008 (8) 'Deflated'\n+22217C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222180 CRC                   27EFB86F (670021743)\n+222184 Compressed Size       000004DF (1247)\n+222188 Uncompressed Size     00000B71 (2929)\n+22218C Filename Length       0040 (64)\n+22218E Extra Length          0000 (0)\n+222190 Comment Length        0000 (0)\n+222192 Disk Start            0000 (0)\n+222194 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22082C Ext File Attributes   00000000 (0)\n-220830 Local Header Offset   0008D11A (577818)\n-220834 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222196 Ext File Attributes   00000000 (0)\n+22219A Local Header Offset   000BCABC (772796)\n+22219E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220834: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22219E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22085A CENTRAL HEADER #629   02014B50 (33639248)\n-22085E Created Zip Spec      14 (20) '2.0'\n-22085F Created OS            00 (0) 'MS-DOS'\n-220860 Extract Zip Spec      14 (20) '2.0'\n-220861 Extract OS            00 (0) 'MS-DOS'\n-220862 General Purpose Flag  0808 (2056)\n+2221DE CENTRAL HEADER #629   02014B50 (33639248)\n+2221E2 Created Zip Spec      14 (20) '2.0'\n+2221E3 Created OS            00 (0) 'MS-DOS'\n+2221E4 Extract Zip Spec      14 (20) '2.0'\n+2221E5 Extract OS            00 (0) 'MS-DOS'\n+2221E6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220864 Compression Method    0008 (8) 'Deflated'\n-220866 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22086A CRC                   2313A478 (588489848)\n-22086E Compressed Size       000004D5 (1237)\n-220872 Uncompressed Size     00001330 (4912)\n-220876 Filename Length       002B (43)\n-220878 Extra Length          0000 (0)\n-22087A Comment Length        0000 (0)\n-22087C Disk Start            0000 (0)\n-22087E Int File Attributes   0000 (0)\n+2221E8 Compression Method    0008 (8) 'Deflated'\n+2221EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2221EE CRC                   0D988858 (228100184)\n+2221F2 Compressed Size       0000031A (794)\n+2221F6 Uncompressed Size     000006C6 (1734)\n+2221FA Filename Length       0047 (71)\n+2221FC Extra Length          0000 (0)\n+2221FE Comment Length        0000 (0)\n+222200 Disk Start            0000 (0)\n+222202 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220880 Ext File Attributes   00000000 (0)\n-220884 Local Header Offset   0008DD28 (580904)\n-220888 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222204 Ext File Attributes   00000000 (0)\n+222208 Local Header Offset   000BD009 (774153)\n+22220C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220888: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22220C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2208B3 CENTRAL HEADER #630   02014B50 (33639248)\n-2208B7 Created Zip Spec      14 (20) '2.0'\n-2208B8 Created OS            00 (0) 'MS-DOS'\n-2208B9 Extract Zip Spec      14 (20) '2.0'\n-2208BA Extract OS            00 (0) 'MS-DOS'\n-2208BB General Purpose Flag  0808 (2056)\n+222253 CENTRAL HEADER #630   02014B50 (33639248)\n+222257 Created Zip Spec      14 (20) '2.0'\n+222258 Created OS            00 (0) 'MS-DOS'\n+222259 Extract Zip Spec      14 (20) '2.0'\n+22225A Extract OS            00 (0) 'MS-DOS'\n+22225B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2208BD Compression Method    0008 (8) 'Deflated'\n-2208BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2208C3 CRC                   10BC97FD (280795133)\n-2208C7 Compressed Size       000002C3 (707)\n-2208CB Uncompressed Size     000005B5 (1461)\n-2208CF Filename Length       002F (47)\n-2208D1 Extra Length          0000 (0)\n-2208D3 Comment Length        0000 (0)\n-2208D5 Disk Start            0000 (0)\n-2208D7 Int File Attributes   0000 (0)\n+22225D Compression Method    0008 (8) 'Deflated'\n+22225F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222263 CRC                   00000000 (0)\n+222267 Compressed Size       00000002 (2)\n+22226B Uncompressed Size     00000000 (0)\n+22226F Filename Length       0033 (51)\n+222271 Extra Length          0000 (0)\n+222273 Comment Length        0000 (0)\n+222275 Disk Start            0000 (0)\n+222277 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2208D9 Ext File Attributes   00000000 (0)\n-2208DD Local Header Offset   0008E256 (582230)\n-2208E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222279 Ext File Attributes   00000000 (0)\n+22227D Local Header Offset   000BD398 (775064)\n+222281 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2208E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222281: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220910 CENTRAL HEADER #631   02014B50 (33639248)\n-220914 Created Zip Spec      14 (20) '2.0'\n-220915 Created OS            00 (0) 'MS-DOS'\n-220916 Extract Zip Spec      14 (20) '2.0'\n-220917 Extract OS            00 (0) 'MS-DOS'\n-220918 General Purpose Flag  0808 (2056)\n+2222B4 CENTRAL HEADER #631   02014B50 (33639248)\n+2222B8 Created Zip Spec      14 (20) '2.0'\n+2222B9 Created OS            00 (0) 'MS-DOS'\n+2222BA Extract Zip Spec      14 (20) '2.0'\n+2222BB Extract OS            00 (0) 'MS-DOS'\n+2222BC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22091A Compression Method    0008 (8) 'Deflated'\n-22091C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220920 CRC                   982A34CC (2552902860)\n-220924 Compressed Size       0000027E (638)\n-220928 Uncompressed Size     000004AE (1198)\n-22092C Filename Length       002A (42)\n-22092E Extra Length          0000 (0)\n-220930 Comment Length        0000 (0)\n-220932 Disk Start            0000 (0)\n-220934 Int File Attributes   0000 (0)\n+2222BE Compression Method    0008 (8) 'Deflated'\n+2222C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2222C4 CRC                   6B1D5A12 (1797085714)\n+2222C8 Compressed Size       0000038F (911)\n+2222CC Uncompressed Size     000008B1 (2225)\n+2222D0 Filename Length       003A (58)\n+2222D2 Extra Length          0000 (0)\n+2222D4 Comment Length        0000 (0)\n+2222D6 Disk Start            0000 (0)\n+2222D8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220936 Ext File Attributes   00000000 (0)\n-22093A Local Header Offset   0008E576 (583030)\n-22093E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2222DA Ext File Attributes   00000000 (0)\n+2222DE Local Header Offset   000BD3FB (775163)\n+2222E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22093E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2222E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220968 CENTRAL HEADER #632   02014B50 (33639248)\n-22096C Created Zip Spec      14 (20) '2.0'\n-22096D Created OS            00 (0) 'MS-DOS'\n-22096E Extract Zip Spec      14 (20) '2.0'\n-22096F Extract OS            00 (0) 'MS-DOS'\n-220970 General Purpose Flag  0808 (2056)\n+22231C CENTRAL HEADER #632   02014B50 (33639248)\n+222320 Created Zip Spec      14 (20) '2.0'\n+222321 Created OS            00 (0) 'MS-DOS'\n+222322 Extract Zip Spec      14 (20) '2.0'\n+222323 Extract OS            00 (0) 'MS-DOS'\n+222324 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220972 Compression Method    0008 (8) 'Deflated'\n-220974 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220978 CRC                   7653CF57 (1985204055)\n-22097C Compressed Size       00000592 (1426)\n-220980 Uncompressed Size     000015FB (5627)\n-220984 Filename Length       002C (44)\n-220986 Extra Length          0000 (0)\n-220988 Comment Length        0000 (0)\n-22098A Disk Start            0000 (0)\n-22098C Int File Attributes   0000 (0)\n+222326 Compression Method    0008 (8) 'Deflated'\n+222328 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22232C CRC                   20BB9478 (549164152)\n+222330 Compressed Size       00000044 (68)\n+222334 Uncompressed Size     00000049 (73)\n+222338 Filename Length       0041 (65)\n+22233A Extra Length          0000 (0)\n+22233C Comment Length        0000 (0)\n+22233E Disk Start            0000 (0)\n+222340 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22098E Ext File Attributes   00000000 (0)\n-220992 Local Header Offset   0008E84C (583756)\n-220996 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222342 Ext File Attributes   00000000 (0)\n+222346 Local Header Offset   000BD7F2 (776178)\n+22234A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220996: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22234A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2209C2 CENTRAL HEADER #633   02014B50 (33639248)\n-2209C6 Created Zip Spec      14 (20) '2.0'\n-2209C7 Created OS            00 (0) 'MS-DOS'\n-2209C8 Extract Zip Spec      14 (20) '2.0'\n-2209C9 Extract OS            00 (0) 'MS-DOS'\n-2209CA General Purpose Flag  0808 (2056)\n+22238B CENTRAL HEADER #633   02014B50 (33639248)\n+22238F Created Zip Spec      14 (20) '2.0'\n+222390 Created OS            00 (0) 'MS-DOS'\n+222391 Extract Zip Spec      14 (20) '2.0'\n+222392 Extract OS            00 (0) 'MS-DOS'\n+222393 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2209CC Compression Method    0008 (8) 'Deflated'\n-2209CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2209D2 CRC                   4D87180A (1300699146)\n-2209D6 Compressed Size       0000037F (895)\n-2209DA Uncompressed Size     000008A6 (2214)\n-2209DE Filename Length       002C (44)\n-2209E0 Extra Length          0000 (0)\n-2209E2 Comment Length        0000 (0)\n-2209E4 Disk Start            0000 (0)\n-2209E6 Int File Attributes   0000 (0)\n+222395 Compression Method    0008 (8) 'Deflated'\n+222397 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22239B CRC                   00000000 (0)\n+22239F Compressed Size       00000002 (2)\n+2223A3 Uncompressed Size     00000000 (0)\n+2223A7 Filename Length       001C (28)\n+2223A9 Extra Length          0000 (0)\n+2223AB Comment Length        0000 (0)\n+2223AD Disk Start            0000 (0)\n+2223AF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2209E8 Ext File Attributes   00000000 (0)\n-2209EC Local Header Offset   0008EE38 (585272)\n-2209F0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2223B1 Ext File Attributes   00000000 (0)\n+2223B5 Local Header Offset   000BD8A5 (776357)\n+2223B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2209F0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2223B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220A1C CENTRAL HEADER #634   02014B50 (33639248)\n-220A20 Created Zip Spec      14 (20) '2.0'\n-220A21 Created OS            00 (0) 'MS-DOS'\n-220A22 Extract Zip Spec      14 (20) '2.0'\n-220A23 Extract OS            00 (0) 'MS-DOS'\n-220A24 General Purpose Flag  0808 (2056)\n+2223D5 CENTRAL HEADER #634   02014B50 (33639248)\n+2223D9 Created Zip Spec      14 (20) '2.0'\n+2223DA Created OS            00 (0) 'MS-DOS'\n+2223DB Extract Zip Spec      14 (20) '2.0'\n+2223DC Extract OS            00 (0) 'MS-DOS'\n+2223DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220A26 Compression Method    0008 (8) 'Deflated'\n-220A28 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220A2C CRC                   8F2D4992 (2402109842)\n-220A30 Compressed Size       00000368 (872)\n-220A34 Uncompressed Size     000008C7 (2247)\n-220A38 Filename Length       002B (43)\n-220A3A Extra Length          0000 (0)\n-220A3C Comment Length        0000 (0)\n-220A3E Disk Start            0000 (0)\n-220A40 Int File Attributes   0000 (0)\n+2223DF Compression Method    0008 (8) 'Deflated'\n+2223E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2223E5 CRC                   9FA19E67 (2678169191)\n+2223E9 Compressed Size       00000332 (818)\n+2223ED Uncompressed Size     00000668 (1640)\n+2223F1 Filename Length       0030 (48)\n+2223F3 Extra Length          0000 (0)\n+2223F5 Comment Length        0000 (0)\n+2223F7 Disk Start            0000 (0)\n+2223F9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220A42 Ext File Attributes   00000000 (0)\n-220A46 Local Header Offset   0008F211 (586257)\n-220A4A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2223FB Ext File Attributes   00000000 (0)\n+2223FF Local Header Offset   000BD8F1 (776433)\n+222403 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220A4A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222403: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220A75 CENTRAL HEADER #635   02014B50 (33639248)\n-220A79 Created Zip Spec      14 (20) '2.0'\n-220A7A Created OS            00 (0) 'MS-DOS'\n-220A7B Extract Zip Spec      14 (20) '2.0'\n-220A7C Extract OS            00 (0) 'MS-DOS'\n-220A7D General Purpose Flag  0808 (2056)\n+222433 CENTRAL HEADER #635   02014B50 (33639248)\n+222437 Created Zip Spec      14 (20) '2.0'\n+222438 Created OS            00 (0) 'MS-DOS'\n+222439 Extract Zip Spec      14 (20) '2.0'\n+22243A Extract OS            00 (0) 'MS-DOS'\n+22243B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220A7F Compression Method    0008 (8) 'Deflated'\n-220A81 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220A85 CRC                   33828390 (864191376)\n-220A89 Compressed Size       00000359 (857)\n-220A8D Uncompressed Size     00000AEC (2796)\n-220A91 Filename Length       002D (45)\n-220A93 Extra Length          0000 (0)\n-220A95 Comment Length        0000 (0)\n-220A97 Disk Start            0000 (0)\n-220A99 Int File Attributes   0000 (0)\n+22243D Compression Method    0008 (8) 'Deflated'\n+22243F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222443 CRC                   00116B33 (1141555)\n+222447 Compressed Size       000002D0 (720)\n+22244B Uncompressed Size     000005E3 (1507)\n+22244F Filename Length       002B (43)\n+222451 Extra Length          0000 (0)\n+222453 Comment Length        0000 (0)\n+222455 Disk Start            0000 (0)\n+222457 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220A9B Ext File Attributes   00000000 (0)\n-220A9F Local Header Offset   0008F5D2 (587218)\n-220AA3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222459 Ext File Attributes   00000000 (0)\n+22245D Local Header Offset   000BDC81 (777345)\n+222461 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220AA3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222461: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220AD0 CENTRAL HEADER #636   02014B50 (33639248)\n-220AD4 Created Zip Spec      14 (20) '2.0'\n-220AD5 Created OS            00 (0) 'MS-DOS'\n-220AD6 Extract Zip Spec      14 (20) '2.0'\n-220AD7 Extract OS            00 (0) 'MS-DOS'\n-220AD8 General Purpose Flag  0808 (2056)\n+22248C CENTRAL HEADER #636   02014B50 (33639248)\n+222490 Created Zip Spec      14 (20) '2.0'\n+222491 Created OS            00 (0) 'MS-DOS'\n+222492 Extract Zip Spec      14 (20) '2.0'\n+222493 Extract OS            00 (0) 'MS-DOS'\n+222494 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220ADA Compression Method    0008 (8) 'Deflated'\n-220ADC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220AE0 CRC                   ECCF2EAF (3973000879)\n-220AE4 Compressed Size       00000708 (1800)\n-220AE8 Uncompressed Size     00001FDF (8159)\n-220AEC Filename Length       002C (44)\n-220AEE Extra Length          0000 (0)\n-220AF0 Comment Length        0000 (0)\n-220AF2 Disk Start            0000 (0)\n-220AF4 Int File Attributes   0000 (0)\n+222496 Compression Method    0008 (8) 'Deflated'\n+222498 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22249C CRC                   767F730D (1988064013)\n+2224A0 Compressed Size       00000279 (633)\n+2224A4 Uncompressed Size     00000479 (1145)\n+2224A8 Filename Length       002A (42)\n+2224AA Extra Length          0000 (0)\n+2224AC Comment Length        0000 (0)\n+2224AE Disk Start            0000 (0)\n+2224B0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220AF6 Ext File Attributes   00000000 (0)\n-220AFA Local Header Offset   0008F986 (588166)\n-220AFE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2224B2 Ext File Attributes   00000000 (0)\n+2224B6 Local Header Offset   000BDFAA (778154)\n+2224BA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220AFE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2224BA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220B2A CENTRAL HEADER #637   02014B50 (33639248)\n-220B2E Created Zip Spec      14 (20) '2.0'\n-220B2F Created OS            00 (0) 'MS-DOS'\n-220B30 Extract Zip Spec      14 (20) '2.0'\n-220B31 Extract OS            00 (0) 'MS-DOS'\n-220B32 General Purpose Flag  0808 (2056)\n+2224E4 CENTRAL HEADER #637   02014B50 (33639248)\n+2224E8 Created Zip Spec      14 (20) '2.0'\n+2224E9 Created OS            00 (0) 'MS-DOS'\n+2224EA Extract Zip Spec      14 (20) '2.0'\n+2224EB Extract OS            00 (0) 'MS-DOS'\n+2224EC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220B34 Compression Method    0008 (8) 'Deflated'\n-220B36 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220B3A CRC                   4EF6CDD0 (1324797392)\n-220B3E Compressed Size       00000272 (626)\n-220B42 Uncompressed Size     00000489 (1161)\n-220B46 Filename Length       0030 (48)\n-220B48 Extra Length          0000 (0)\n-220B4A Comment Length        0000 (0)\n-220B4C Disk Start            0000 (0)\n-220B4E Int File Attributes   0000 (0)\n+2224EE Compression Method    0008 (8) 'Deflated'\n+2224F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2224F4 CRC                   00000000 (0)\n+2224F8 Compressed Size       00000002 (2)\n+2224FC Uncompressed Size     00000000 (0)\n+222500 Filename Length       0023 (35)\n+222502 Extra Length          0000 (0)\n+222504 Comment Length        0000 (0)\n+222506 Disk Start            0000 (0)\n+222508 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220B50 Ext File Attributes   00000000 (0)\n-220B54 Local Header Offset   000900E8 (590056)\n-220B58 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22250A Ext File Attributes   00000000 (0)\n+22250E Local Header Offset   000BE27B (778875)\n+222512 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220B58: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222512: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220B88 CENTRAL HEADER #638   02014B50 (33639248)\n-220B8C Created Zip Spec      14 (20) '2.0'\n-220B8D Created OS            00 (0) 'MS-DOS'\n-220B8E Extract Zip Spec      14 (20) '2.0'\n-220B8F Extract OS            00 (0) 'MS-DOS'\n-220B90 General Purpose Flag  0808 (2056)\n+222535 CENTRAL HEADER #638   02014B50 (33639248)\n+222539 Created Zip Spec      14 (20) '2.0'\n+22253A Created OS            00 (0) 'MS-DOS'\n+22253B Extract Zip Spec      14 (20) '2.0'\n+22253C Extract OS            00 (0) 'MS-DOS'\n+22253D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220B92 Compression Method    0008 (8) 'Deflated'\n-220B94 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220B98 CRC                   D5F1D071 (3589394545)\n-220B9C Compressed Size       00001720 (5920)\n-220BA0 Uncompressed Size     000072B9 (29369)\n-220BA4 Filename Length       0027 (39)\n-220BA6 Extra Length          0000 (0)\n-220BA8 Comment Length        0000 (0)\n-220BAA Disk Start            0000 (0)\n-220BAC Int File Attributes   0000 (0)\n+22253F Compression Method    0008 (8) 'Deflated'\n+222541 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222545 CRC                   C93175C4 (3375461828)\n+222549 Compressed Size       0000068A (1674)\n+22254D Uncompressed Size     000012EA (4842)\n+222551 Filename Length       0038 (56)\n+222553 Extra Length          0000 (0)\n+222555 Comment Length        0000 (0)\n+222557 Disk Start            0000 (0)\n+222559 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220BAE Ext File Attributes   00000000 (0)\n-220BB2 Local Header Offset   000903B8 (590776)\n-220BB6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22255B Ext File Attributes   00000000 (0)\n+22255F Local Header Offset   000BE2CE (778958)\n+222563 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220BB6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222563: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220BDD CENTRAL HEADER #639   02014B50 (33639248)\n-220BE1 Created Zip Spec      14 (20) '2.0'\n-220BE2 Created OS            00 (0) 'MS-DOS'\n-220BE3 Extract Zip Spec      14 (20) '2.0'\n-220BE4 Extract OS            00 (0) 'MS-DOS'\n-220BE5 General Purpose Flag  0808 (2056)\n+22259B CENTRAL HEADER #639   02014B50 (33639248)\n+22259F Created Zip Spec      14 (20) '2.0'\n+2225A0 Created OS            00 (0) 'MS-DOS'\n+2225A1 Extract Zip Spec      14 (20) '2.0'\n+2225A2 Extract OS            00 (0) 'MS-DOS'\n+2225A3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220BE7 Compression Method    0008 (8) 'Deflated'\n-220BE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220BED CRC                   00000000 (0)\n-220BF1 Compressed Size       00000002 (2)\n-220BF5 Uncompressed Size     00000000 (0)\n-220BF9 Filename Length       001D (29)\n-220BFB Extra Length          0000 (0)\n-220BFD Comment Length        0000 (0)\n-220BFF Disk Start            0000 (0)\n-220C01 Int File Attributes   0000 (0)\n+2225A5 Compression Method    0008 (8) 'Deflated'\n+2225A7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2225AB CRC                   00000000 (0)\n+2225AF Compressed Size       00000002 (2)\n+2225B3 Uncompressed Size     00000000 (0)\n+2225B7 Filename Length       0024 (36)\n+2225B9 Extra Length          0000 (0)\n+2225BB Comment Length        0000 (0)\n+2225BD Disk Start            0000 (0)\n+2225BF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220C03 Ext File Attributes   00000000 (0)\n-220C07 Local Header Offset   00091B2D (596781)\n-220C0B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2225C1 Ext File Attributes   00000000 (0)\n+2225C5 Local Header Offset   000BE9BE (780734)\n+2225C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220C0B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2225C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220C28 CENTRAL HEADER #640   02014B50 (33639248)\n-220C2C Created Zip Spec      14 (20) '2.0'\n-220C2D Created OS            00 (0) 'MS-DOS'\n-220C2E Extract Zip Spec      14 (20) '2.0'\n-220C2F Extract OS            00 (0) 'MS-DOS'\n-220C30 General Purpose Flag  0808 (2056)\n+2225ED CENTRAL HEADER #640   02014B50 (33639248)\n+2225F1 Created Zip Spec      14 (20) '2.0'\n+2225F2 Created OS            00 (0) 'MS-DOS'\n+2225F3 Extract Zip Spec      14 (20) '2.0'\n+2225F4 Extract OS            00 (0) 'MS-DOS'\n+2225F5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220C32 Compression Method    0008 (8) 'Deflated'\n-220C34 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220C38 CRC                   99C9FFC3 (2580152259)\n-220C3C Compressed Size       000003F2 (1010)\n-220C40 Uncompressed Size     00000902 (2306)\n-220C44 Filename Length       002D (45)\n-220C46 Extra Length          0000 (0)\n-220C48 Comment Length        0000 (0)\n-220C4A Disk Start            0000 (0)\n-220C4C Int File Attributes   0000 (0)\n+2225F7 Compression Method    0008 (8) 'Deflated'\n+2225F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2225FD CRC                   1D7B340C (494613516)\n+222601 Compressed Size       0000036D (877)\n+222605 Uncompressed Size     000007D6 (2006)\n+222609 Filename Length       003B (59)\n+22260B Extra Length          0000 (0)\n+22260D Comment Length        0000 (0)\n+22260F Disk Start            0000 (0)\n+222611 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220C4E Ext File Attributes   00000000 (0)\n-220C52 Local Header Offset   00091B7A (596858)\n-220C56 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222613 Ext File Attributes   00000000 (0)\n+222617 Local Header Offset   000BEA12 (780818)\n+22261B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220C56: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22261B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220C83 CENTRAL HEADER #641   02014B50 (33639248)\n-220C87 Created Zip Spec      14 (20) '2.0'\n-220C88 Created OS            00 (0) 'MS-DOS'\n-220C89 Extract Zip Spec      14 (20) '2.0'\n-220C8A Extract OS            00 (0) 'MS-DOS'\n-220C8B General Purpose Flag  0808 (2056)\n+222656 CENTRAL HEADER #641   02014B50 (33639248)\n+22265A Created Zip Spec      14 (20) '2.0'\n+22265B Created OS            00 (0) 'MS-DOS'\n+22265C Extract Zip Spec      14 (20) '2.0'\n+22265D Extract OS            00 (0) 'MS-DOS'\n+22265E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220C8D Compression Method    0008 (8) 'Deflated'\n-220C8F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220C93 CRC                   C53EC878 (3309226104)\n-220C97 Compressed Size       00000274 (628)\n-220C9B Uncompressed Size     00000488 (1160)\n-220C9F Filename Length       0036 (54)\n-220CA1 Extra Length          0000 (0)\n-220CA3 Comment Length        0000 (0)\n-220CA5 Disk Start            0000 (0)\n-220CA7 Int File Attributes   0000 (0)\n+222660 Compression Method    0008 (8) 'Deflated'\n+222662 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222666 CRC                   00000000 (0)\n+22266A Compressed Size       00000002 (2)\n+22266E Uncompressed Size     00000000 (0)\n+222672 Filename Length       0030 (48)\n+222674 Extra Length          0000 (0)\n+222676 Comment Length        0000 (0)\n+222678 Disk Start            0000 (0)\n+22267A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220CA9 Ext File Attributes   00000000 (0)\n-220CAD Local Header Offset   00091FC7 (597959)\n-220CB1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22267C Ext File Attributes   00000000 (0)\n+222680 Local Header Offset   000BEDE8 (781800)\n+222684 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220CB1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222684: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220CE7 CENTRAL HEADER #642   02014B50 (33639248)\n-220CEB Created Zip Spec      14 (20) '2.0'\n-220CEC Created OS            00 (0) 'MS-DOS'\n-220CED Extract Zip Spec      14 (20) '2.0'\n-220CEE Extract OS            00 (0) 'MS-DOS'\n-220CEF General Purpose Flag  0808 (2056)\n+2226B4 CENTRAL HEADER #642   02014B50 (33639248)\n+2226B8 Created Zip Spec      14 (20) '2.0'\n+2226B9 Created OS            00 (0) 'MS-DOS'\n+2226BA Extract Zip Spec      14 (20) '2.0'\n+2226BB Extract OS            00 (0) 'MS-DOS'\n+2226BC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220CF1 Compression Method    0008 (8) 'Deflated'\n-220CF3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220CF7 CRC                   8EF8ABEC (2398661612)\n-220CFB Compressed Size       00000392 (914)\n-220CFF Uncompressed Size     00000920 (2336)\n-220D03 Filename Length       0037 (55)\n-220D05 Extra Length          0000 (0)\n-220D07 Comment Length        0000 (0)\n-220D09 Disk Start            0000 (0)\n-220D0B Int File Attributes   0000 (0)\n+2226BE Compression Method    0008 (8) 'Deflated'\n+2226C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2226C4 CRC                   5A6ECC92 (1517210770)\n+2226C8 Compressed Size       000002BE (702)\n+2226CC Uncompressed Size     000005C3 (1475)\n+2226D0 Filename Length       0040 (64)\n+2226D2 Extra Length          0000 (0)\n+2226D4 Comment Length        0000 (0)\n+2226D6 Disk Start            0000 (0)\n+2226D8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220D0D Ext File Attributes   00000000 (0)\n-220D11 Local Header Offset   0009229F (598687)\n-220D15 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2226DA Ext File Attributes   00000000 (0)\n+2226DE Local Header Offset   000BEE48 (781896)\n+2226E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220D15: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2226E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220D4C CENTRAL HEADER #643   02014B50 (33639248)\n-220D50 Created Zip Spec      14 (20) '2.0'\n-220D51 Created OS            00 (0) 'MS-DOS'\n-220D52 Extract Zip Spec      14 (20) '2.0'\n-220D53 Extract OS            00 (0) 'MS-DOS'\n-220D54 General Purpose Flag  0808 (2056)\n+222722 CENTRAL HEADER #643   02014B50 (33639248)\n+222726 Created Zip Spec      14 (20) '2.0'\n+222727 Created OS            00 (0) 'MS-DOS'\n+222728 Extract Zip Spec      14 (20) '2.0'\n+222729 Extract OS            00 (0) 'MS-DOS'\n+22272A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220D56 Compression Method    0008 (8) 'Deflated'\n-220D58 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220D5C CRC                   00000000 (0)\n-220D60 Compressed Size       00000002 (2)\n-220D64 Uncompressed Size     00000000 (0)\n-220D68 Filename Length       001F (31)\n-220D6A Extra Length          0000 (0)\n-220D6C Comment Length        0000 (0)\n-220D6E Disk Start            0000 (0)\n-220D70 Int File Attributes   0000 (0)\n+22272C Compression Method    0008 (8) 'Deflated'\n+22272E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222732 CRC                   B191ADCB (2979114443)\n+222736 Compressed Size       00000E0D (3597)\n+22273A Uncompressed Size     00003D3F (15679)\n+22273E Filename Length       003F (63)\n+222740 Extra Length          0000 (0)\n+222742 Comment Length        0000 (0)\n+222744 Disk Start            0000 (0)\n+222746 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220D72 Ext File Attributes   00000000 (0)\n-220D76 Local Header Offset   00092696 (599702)\n-220D7A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222748 Ext File Attributes   00000000 (0)\n+22274C Local Header Offset   000BF174 (782708)\n+222750 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220D7A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222750: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220D99 CENTRAL HEADER #644   02014B50 (33639248)\n-220D9D Created Zip Spec      14 (20) '2.0'\n-220D9E Created OS            00 (0) 'MS-DOS'\n-220D9F Extract Zip Spec      14 (20) '2.0'\n-220DA0 Extract OS            00 (0) 'MS-DOS'\n-220DA1 General Purpose Flag  0808 (2056)\n+22278F CENTRAL HEADER #644   02014B50 (33639248)\n+222793 Created Zip Spec      14 (20) '2.0'\n+222794 Created OS            00 (0) 'MS-DOS'\n+222795 Extract Zip Spec      14 (20) '2.0'\n+222796 Extract OS            00 (0) 'MS-DOS'\n+222797 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220DA3 Compression Method    0008 (8) 'Deflated'\n-220DA5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220DA9 CRC                   9D821087 (2642546823)\n-220DAD Compressed Size       00000249 (585)\n-220DB1 Uncompressed Size     000004BE (1214)\n-220DB5 Filename Length       0029 (41)\n-220DB7 Extra Length          0000 (0)\n-220DB9 Comment Length        0000 (0)\n-220DBB Disk Start            0000 (0)\n-220DBD Int File Attributes   0000 (0)\n+222799 Compression Method    0008 (8) 'Deflated'\n+22279B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22279F CRC                   00000000 (0)\n+2227A3 Compressed Size       00000002 (2)\n+2227A7 Uncompressed Size     00000000 (0)\n+2227AB Filename Length       0038 (56)\n+2227AD Extra Length          0000 (0)\n+2227AF Comment Length        0000 (0)\n+2227B1 Disk Start            0000 (0)\n+2227B3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220DBF Ext File Attributes   00000000 (0)\n-220DC3 Local Header Offset   000926E5 (599781)\n-220DC7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2227B5 Ext File Attributes   00000000 (0)\n+2227B9 Local Header Offset   000BFFEE (786414)\n+2227BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220DC7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2227BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220DF0 CENTRAL HEADER #645   02014B50 (33639248)\n-220DF4 Created Zip Spec      14 (20) '2.0'\n-220DF5 Created OS            00 (0) 'MS-DOS'\n-220DF6 Extract Zip Spec      14 (20) '2.0'\n-220DF7 Extract OS            00 (0) 'MS-DOS'\n-220DF8 General Purpose Flag  0808 (2056)\n+2227F5 CENTRAL HEADER #645   02014B50 (33639248)\n+2227F9 Created Zip Spec      14 (20) '2.0'\n+2227FA Created OS            00 (0) 'MS-DOS'\n+2227FB Extract Zip Spec      14 (20) '2.0'\n+2227FC Extract OS            00 (0) 'MS-DOS'\n+2227FD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220DFA Compression Method    0008 (8) 'Deflated'\n-220DFC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220E00 CRC                   7A6DF346 (2054026054)\n-220E04 Compressed Size       00000371 (881)\n-220E08 Uncompressed Size     00000ED8 (3800)\n-220E0C Filename Length       002A (42)\n-220E0E Extra Length          0000 (0)\n-220E10 Comment Length        0000 (0)\n-220E12 Disk Start            0000 (0)\n-220E14 Int File Attributes   0000 (0)\n+2227FF Compression Method    0008 (8) 'Deflated'\n+222801 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222805 CRC                   705B7625 (1885042213)\n+222809 Compressed Size       000003D4 (980)\n+22280D Uncompressed Size     00000BC3 (3011)\n+222811 Filename Length       003F (63)\n+222813 Extra Length          0000 (0)\n+222815 Comment Length        0000 (0)\n+222817 Disk Start            0000 (0)\n+222819 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220E16 Ext File Attributes   00000000 (0)\n-220E1A Local Header Offset   00092985 (600453)\n-220E1E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22281B Ext File Attributes   00000000 (0)\n+22281F Local Header Offset   000C0056 (786518)\n+222823 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220E1E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222823: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220E48 CENTRAL HEADER #646   02014B50 (33639248)\n-220E4C Created Zip Spec      14 (20) '2.0'\n-220E4D Created OS            00 (0) 'MS-DOS'\n-220E4E Extract Zip Spec      14 (20) '2.0'\n-220E4F Extract OS            00 (0) 'MS-DOS'\n-220E50 General Purpose Flag  0808 (2056)\n+222862 CENTRAL HEADER #646   02014B50 (33639248)\n+222866 Created Zip Spec      14 (20) '2.0'\n+222867 Created OS            00 (0) 'MS-DOS'\n+222868 Extract Zip Spec      14 (20) '2.0'\n+222869 Extract OS            00 (0) 'MS-DOS'\n+22286A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220E52 Compression Method    0008 (8) 'Deflated'\n-220E54 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220E58 CRC                   A6EF1A57 (2800687703)\n-220E5C Compressed Size       000002E4 (740)\n-220E60 Uncompressed Size     00000745 (1861)\n-220E64 Filename Length       0031 (49)\n-220E66 Extra Length          0000 (0)\n-220E68 Comment Length        0000 (0)\n-220E6A Disk Start            0000 (0)\n-220E6C Int File Attributes   0000 (0)\n+22286C Compression Method    0008 (8) 'Deflated'\n+22286E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222872 CRC                   D1A9E247 (3517571655)\n+222876 Compressed Size       0000004A (74)\n+22287A Uncompressed Size     0000004E (78)\n+22287E Filename Length       0046 (70)\n+222880 Extra Length          0000 (0)\n+222882 Comment Length        0000 (0)\n+222884 Disk Start            0000 (0)\n+222886 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220E6E Ext File Attributes   00000000 (0)\n-220E72 Local Header Offset   00092D4E (601422)\n-220E76 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222888 Ext File Attributes   00000000 (0)\n+22288C Local Header Offset   000C0497 (787607)\n+222890 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220E76: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222890: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220EA7 CENTRAL HEADER #647   02014B50 (33639248)\n-220EAB Created Zip Spec      14 (20) '2.0'\n-220EAC Created OS            00 (0) 'MS-DOS'\n-220EAD Extract Zip Spec      14 (20) '2.0'\n-220EAE Extract OS            00 (0) 'MS-DOS'\n-220EAF General Purpose Flag  0808 (2056)\n+2228D6 CENTRAL HEADER #647   02014B50 (33639248)\n+2228DA Created Zip Spec      14 (20) '2.0'\n+2228DB Created OS            00 (0) 'MS-DOS'\n+2228DC Extract Zip Spec      14 (20) '2.0'\n+2228DD Extract OS            00 (0) 'MS-DOS'\n+2228DE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220EB1 Compression Method    0008 (8) 'Deflated'\n-220EB3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220EB7 CRC                   626EDC3E (1651432510)\n-220EBB Compressed Size       000005BE (1470)\n-220EBF Uncompressed Size     00001485 (5253)\n-220EC3 Filename Length       0031 (49)\n-220EC5 Extra Length          0000 (0)\n-220EC7 Comment Length        0000 (0)\n-220EC9 Disk Start            0000 (0)\n-220ECB Int File Attributes   0000 (0)\n+2228E0 Compression Method    0008 (8) 'Deflated'\n+2228E2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2228E6 CRC                   00000000 (0)\n+2228EA Compressed Size       00000002 (2)\n+2228EE Uncompressed Size     00000000 (0)\n+2228F2 Filename Length       001A (26)\n+2228F4 Extra Length          0000 (0)\n+2228F6 Comment Length        0000 (0)\n+2228F8 Disk Start            0000 (0)\n+2228FA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220ECD Ext File Attributes   00000000 (0)\n-220ED1 Local Header Offset   00093091 (602257)\n-220ED5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2228FC Ext File Attributes   00000000 (0)\n+222900 Local Header Offset   000C0555 (787797)\n+222904 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220ED5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222904: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220F06 CENTRAL HEADER #648   02014B50 (33639248)\n-220F0A Created Zip Spec      14 (20) '2.0'\n-220F0B Created OS            00 (0) 'MS-DOS'\n-220F0C Extract Zip Spec      14 (20) '2.0'\n-220F0D Extract OS            00 (0) 'MS-DOS'\n-220F0E General Purpose Flag  0808 (2056)\n+22291E CENTRAL HEADER #648   02014B50 (33639248)\n+222922 Created Zip Spec      14 (20) '2.0'\n+222923 Created OS            00 (0) 'MS-DOS'\n+222924 Extract Zip Spec      14 (20) '2.0'\n+222925 Extract OS            00 (0) 'MS-DOS'\n+222926 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220F10 Compression Method    0008 (8) 'Deflated'\n-220F12 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220F16 CRC                   00000000 (0)\n-220F1A Compressed Size       00000002 (2)\n-220F1E Uncompressed Size     00000000 (0)\n-220F22 Filename Length       0023 (35)\n-220F24 Extra Length          0000 (0)\n-220F26 Comment Length        0000 (0)\n-220F28 Disk Start            0000 (0)\n-220F2A Int File Attributes   0000 (0)\n+222928 Compression Method    0008 (8) 'Deflated'\n+22292A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22292E CRC                   040E3AFC (68041468)\n+222932 Compressed Size       00000310 (784)\n+222936 Uncompressed Size     00000783 (1923)\n+22293A Filename Length       0026 (38)\n+22293C Extra Length          0000 (0)\n+22293E Comment Length        0000 (0)\n+222940 Disk Start            0000 (0)\n+222942 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220F2C Ext File Attributes   00000000 (0)\n-220F30 Local Header Offset   000936AE (603822)\n-220F34 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222944 Ext File Attributes   00000000 (0)\n+222948 Local Header Offset   000C059F (787871)\n+22294C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220F34: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22294C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220F57 CENTRAL HEADER #649   02014B50 (33639248)\n-220F5B Created Zip Spec      14 (20) '2.0'\n-220F5C Created OS            00 (0) 'MS-DOS'\n-220F5D Extract Zip Spec      14 (20) '2.0'\n-220F5E Extract OS            00 (0) 'MS-DOS'\n-220F5F General Purpose Flag  0808 (2056)\n+222972 CENTRAL HEADER #649   02014B50 (33639248)\n+222976 Created Zip Spec      14 (20) '2.0'\n+222977 Created OS            00 (0) 'MS-DOS'\n+222978 Extract Zip Spec      14 (20) '2.0'\n+222979 Extract OS            00 (0) 'MS-DOS'\n+22297A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220F61 Compression Method    0008 (8) 'Deflated'\n-220F63 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220F67 CRC                   65EBC1EB (1709949419)\n-220F6B Compressed Size       000003A6 (934)\n-220F6F Uncompressed Size     00000D0E (3342)\n-220F73 Filename Length       0031 (49)\n-220F75 Extra Length          0000 (0)\n-220F77 Comment Length        0000 (0)\n-220F79 Disk Start            0000 (0)\n-220F7B Int File Attributes   0000 (0)\n+22297C Compression Method    0008 (8) 'Deflated'\n+22297E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222982 CRC                   1A6C5333 (443306803)\n+222986 Compressed Size       000002F8 (760)\n+22298A Uncompressed Size     00000849 (2121)\n+22298E Filename Length       002D (45)\n+222990 Extra Length          0000 (0)\n+222992 Comment Length        0000 (0)\n+222994 Disk Start            0000 (0)\n+222996 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220F7D Ext File Attributes   00000000 (0)\n-220F81 Local Header Offset   00093701 (603905)\n-220F85 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222998 Ext File Attributes   00000000 (0)\n+22299C Local Header Offset   000C0903 (788739)\n+2229A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220F85: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2229A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-220FB6 CENTRAL HEADER #650   02014B50 (33639248)\n-220FBA Created Zip Spec      14 (20) '2.0'\n-220FBB Created OS            00 (0) 'MS-DOS'\n-220FBC Extract Zip Spec      14 (20) '2.0'\n-220FBD Extract OS            00 (0) 'MS-DOS'\n-220FBE General Purpose Flag  0808 (2056)\n+2229CD CENTRAL HEADER #650   02014B50 (33639248)\n+2229D1 Created Zip Spec      14 (20) '2.0'\n+2229D2 Created OS            00 (0) 'MS-DOS'\n+2229D3 Extract Zip Spec      14 (20) '2.0'\n+2229D4 Extract OS            00 (0) 'MS-DOS'\n+2229D5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-220FC0 Compression Method    0008 (8) 'Deflated'\n-220FC2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-220FC6 CRC                   006A5B46 (6970182)\n-220FCA Compressed Size       000002C9 (713)\n-220FCE Uncompressed Size     000006F8 (1784)\n-220FD2 Filename Length       0038 (56)\n-220FD4 Extra Length          0000 (0)\n-220FD6 Comment Length        0000 (0)\n-220FD8 Disk Start            0000 (0)\n-220FDA Int File Attributes   0000 (0)\n+2229D7 Compression Method    0008 (8) 'Deflated'\n+2229D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2229DD CRC                   107C6EE6 (276590310)\n+2229E1 Compressed Size       000002ED (749)\n+2229E5 Uncompressed Size     0000058B (1419)\n+2229E9 Filename Length       0025 (37)\n+2229EB Extra Length          0000 (0)\n+2229ED Comment Length        0000 (0)\n+2229EF Disk Start            0000 (0)\n+2229F1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-220FDC Ext File Attributes   00000000 (0)\n-220FE0 Local Header Offset   00093B06 (604934)\n-220FE4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2229F3 Ext File Attributes   00000000 (0)\n+2229F7 Local Header Offset   000C0C56 (789590)\n+2229FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x220FE4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2229FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22101C CENTRAL HEADER #651   02014B50 (33639248)\n-221020 Created Zip Spec      14 (20) '2.0'\n-221021 Created OS            00 (0) 'MS-DOS'\n-221022 Extract Zip Spec      14 (20) '2.0'\n-221023 Extract OS            00 (0) 'MS-DOS'\n-221024 General Purpose Flag  0808 (2056)\n+222A20 CENTRAL HEADER #651   02014B50 (33639248)\n+222A24 Created Zip Spec      14 (20) '2.0'\n+222A25 Created OS            00 (0) 'MS-DOS'\n+222A26 Extract Zip Spec      14 (20) '2.0'\n+222A27 Extract OS            00 (0) 'MS-DOS'\n+222A28 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221026 Compression Method    0008 (8) 'Deflated'\n-221028 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22102C CRC                   00000000 (0)\n-221030 Compressed Size       00000002 (2)\n-221034 Uncompressed Size     00000000 (0)\n-221038 Filename Length       0023 (35)\n-22103A Extra Length          0000 (0)\n-22103C Comment Length        0000 (0)\n-22103E Disk Start            0000 (0)\n-221040 Int File Attributes   0000 (0)\n+222A2A Compression Method    0008 (8) 'Deflated'\n+222A2C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222A30 CRC                   9EA8C701 (2661861121)\n+222A34 Compressed Size       0000033F (831)\n+222A38 Uncompressed Size     00000771 (1905)\n+222A3C Filename Length       0024 (36)\n+222A3E Extra Length          0000 (0)\n+222A40 Comment Length        0000 (0)\n+222A42 Disk Start            0000 (0)\n+222A44 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221042 Ext File Attributes   00000000 (0)\n-221046 Local Header Offset   00093E35 (605749)\n-22104A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222A46 Ext File Attributes   00000000 (0)\n+222A4A Local Header Offset   000C0F96 (790422)\n+222A4E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22104A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222A4E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22106D CENTRAL HEADER #652   02014B50 (33639248)\n-221071 Created Zip Spec      14 (20) '2.0'\n-221072 Created OS            00 (0) 'MS-DOS'\n-221073 Extract Zip Spec      14 (20) '2.0'\n-221074 Extract OS            00 (0) 'MS-DOS'\n-221075 General Purpose Flag  0808 (2056)\n+222A72 CENTRAL HEADER #652   02014B50 (33639248)\n+222A76 Created Zip Spec      14 (20) '2.0'\n+222A77 Created OS            00 (0) 'MS-DOS'\n+222A78 Extract Zip Spec      14 (20) '2.0'\n+222A79 Extract OS            00 (0) 'MS-DOS'\n+222A7A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221077 Compression Method    0008 (8) 'Deflated'\n-221079 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22107D CRC                   8FD172CF (2412868303)\n-221081 Compressed Size       0000034C (844)\n-221085 Uncompressed Size     00000D1B (3355)\n-221089 Filename Length       0031 (49)\n-22108B Extra Length          0000 (0)\n-22108D Comment Length        0000 (0)\n-22108F Disk Start            0000 (0)\n-221091 Int File Attributes   0000 (0)\n+222A7C Compression Method    0008 (8) 'Deflated'\n+222A7E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222A82 CRC                   2D139396 (756257686)\n+222A86 Compressed Size       000002B7 (695)\n+222A8A Uncompressed Size     00000584 (1412)\n+222A8E Filename Length       0025 (37)\n+222A90 Extra Length          0000 (0)\n+222A92 Comment Length        0000 (0)\n+222A94 Disk Start            0000 (0)\n+222A96 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221093 Ext File Attributes   00000000 (0)\n-221097 Local Header Offset   00093E88 (605832)\n-22109B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222A98 Ext File Attributes   00000000 (0)\n+222A9C Local Header Offset   000C1327 (791335)\n+222AA0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22109B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222AA0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2210CC CENTRAL HEADER #653   02014B50 (33639248)\n-2210D0 Created Zip Spec      14 (20) '2.0'\n-2210D1 Created OS            00 (0) 'MS-DOS'\n-2210D2 Extract Zip Spec      14 (20) '2.0'\n-2210D3 Extract OS            00 (0) 'MS-DOS'\n-2210D4 General Purpose Flag  0808 (2056)\n+222AC5 CENTRAL HEADER #653   02014B50 (33639248)\n+222AC9 Created Zip Spec      14 (20) '2.0'\n+222ACA Created OS            00 (0) 'MS-DOS'\n+222ACB Extract Zip Spec      14 (20) '2.0'\n+222ACC Extract OS            00 (0) 'MS-DOS'\n+222ACD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2210D6 Compression Method    0008 (8) 'Deflated'\n-2210D8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2210DC CRC                   7ADBDBE0 (2061229024)\n-2210E0 Compressed Size       0000055C (1372)\n-2210E4 Uncompressed Size     000012FC (4860)\n-2210E8 Filename Length       0038 (56)\n-2210EA Extra Length          0000 (0)\n-2210EC Comment Length        0000 (0)\n-2210EE Disk Start            0000 (0)\n-2210F0 Int File Attributes   0000 (0)\n+222ACF Compression Method    0008 (8) 'Deflated'\n+222AD1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222AD5 CRC                   CEFC9AFA (3472661242)\n+222AD9 Compressed Size       000005B2 (1458)\n+222ADD Uncompressed Size     00000F04 (3844)\n+222AE1 Filename Length       0028 (40)\n+222AE3 Extra Length          0000 (0)\n+222AE5 Comment Length        0000 (0)\n+222AE7 Disk Start            0000 (0)\n+222AE9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2210F2 Ext File Attributes   00000000 (0)\n-2210F6 Local Header Offset   00094233 (606771)\n-2210FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222AEB Ext File Attributes   00000000 (0)\n+222AEF Local Header Offset   000C1631 (792113)\n+222AF3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2210FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222AF3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221132 CENTRAL HEADER #654   02014B50 (33639248)\n-221136 Created Zip Spec      14 (20) '2.0'\n-221137 Created OS            00 (0) 'MS-DOS'\n-221138 Extract Zip Spec      14 (20) '2.0'\n-221139 Extract OS            00 (0) 'MS-DOS'\n-22113A General Purpose Flag  0808 (2056)\n+222B1B CENTRAL HEADER #654   02014B50 (33639248)\n+222B1F Created Zip Spec      14 (20) '2.0'\n+222B20 Created OS            00 (0) 'MS-DOS'\n+222B21 Extract Zip Spec      14 (20) '2.0'\n+222B22 Extract OS            00 (0) 'MS-DOS'\n+222B23 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22113C Compression Method    0008 (8) 'Deflated'\n-22113E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221142 CRC                   00000000 (0)\n-221146 Compressed Size       00000002 (2)\n-22114A Uncompressed Size     00000000 (0)\n-22114E Filename Length       0025 (37)\n-221150 Extra Length          0000 (0)\n-221152 Comment Length        0000 (0)\n-221154 Disk Start            0000 (0)\n-221156 Int File Attributes   0000 (0)\n+222B25 Compression Method    0008 (8) 'Deflated'\n+222B27 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222B2B CRC                   D7F89917 (3623393559)\n+222B2F Compressed Size       00000210 (528)\n+222B33 Uncompressed Size     000003AC (940)\n+222B37 Filename Length       0029 (41)\n+222B39 Extra Length          0000 (0)\n+222B3B Comment Length        0000 (0)\n+222B3D Disk Start            0000 (0)\n+222B3F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221158 Ext File Attributes   00000000 (0)\n-22115C Local Header Offset   000947F5 (608245)\n-221160 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222B41 Ext File Attributes   00000000 (0)\n+222B45 Local Header Offset   000C1C39 (793657)\n+222B49 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221160: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222B49: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221185 CENTRAL HEADER #655   02014B50 (33639248)\n-221189 Created Zip Spec      14 (20) '2.0'\n-22118A Created OS            00 (0) 'MS-DOS'\n-22118B Extract Zip Spec      14 (20) '2.0'\n-22118C Extract OS            00 (0) 'MS-DOS'\n-22118D General Purpose Flag  0808 (2056)\n+222B72 CENTRAL HEADER #655   02014B50 (33639248)\n+222B76 Created Zip Spec      14 (20) '2.0'\n+222B77 Created OS            00 (0) 'MS-DOS'\n+222B78 Extract Zip Spec      14 (20) '2.0'\n+222B79 Extract OS            00 (0) 'MS-DOS'\n+222B7A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22118F Compression Method    0008 (8) 'Deflated'\n-221191 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221195 CRC                   0237005F (37159007)\n-221199 Compressed Size       00000393 (915)\n-22119D Uncompressed Size     00000E61 (3681)\n-2211A1 Filename Length       0035 (53)\n-2211A3 Extra Length          0000 (0)\n-2211A5 Comment Length        0000 (0)\n-2211A7 Disk Start            0000 (0)\n-2211A9 Int File Attributes   0000 (0)\n+222B7C Compression Method    0008 (8) 'Deflated'\n+222B7E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222B82 CRC                   4A25E4BC (1243997372)\n+222B86 Compressed Size       00000311 (785)\n+222B8A Uncompressed Size     00000621 (1569)\n+222B8E Filename Length       0029 (41)\n+222B90 Extra Length          0000 (0)\n+222B92 Comment Length        0000 (0)\n+222B94 Disk Start            0000 (0)\n+222B96 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2211AB Ext File Attributes   00000000 (0)\n-2211AF Local Header Offset   0009484A (608330)\n-2211B3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222B98 Ext File Attributes   00000000 (0)\n+222B9C Local Header Offset   000C1EA0 (794272)\n+222BA0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2211B3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222BA0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2211E8 CENTRAL HEADER #656   02014B50 (33639248)\n-2211EC Created Zip Spec      14 (20) '2.0'\n-2211ED Created OS            00 (0) 'MS-DOS'\n-2211EE Extract Zip Spec      14 (20) '2.0'\n-2211EF Extract OS            00 (0) 'MS-DOS'\n-2211F0 General Purpose Flag  0808 (2056)\n+222BC9 CENTRAL HEADER #656   02014B50 (33639248)\n+222BCD Created Zip Spec      14 (20) '2.0'\n+222BCE Created OS            00 (0) 'MS-DOS'\n+222BCF Extract Zip Spec      14 (20) '2.0'\n+222BD0 Extract OS            00 (0) 'MS-DOS'\n+222BD1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2211F2 Compression Method    0008 (8) 'Deflated'\n-2211F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2211F8 CRC                   CE737695 (3463673493)\n-2211FC Compressed Size       00000481 (1153)\n-221200 Uncompressed Size     000010CC (4300)\n-221204 Filename Length       003C (60)\n-221206 Extra Length          0000 (0)\n-221208 Comment Length        0000 (0)\n-22120A Disk Start            0000 (0)\n-22120C Int File Attributes   0000 (0)\n+222BD3 Compression Method    0008 (8) 'Deflated'\n+222BD5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222BD9 CRC                   D97FD102 (3649032450)\n+222BDD Compressed Size       00000344 (836)\n+222BE1 Uncompressed Size     0000083D (2109)\n+222BE5 Filename Length       0027 (39)\n+222BE7 Extra Length          0000 (0)\n+222BE9 Comment Length        0000 (0)\n+222BEB Disk Start            0000 (0)\n+222BED Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22120E Ext File Attributes   00000000 (0)\n-221212 Local Header Offset   00094C40 (609344)\n-221216 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222BEF Ext File Attributes   00000000 (0)\n+222BF3 Local Header Offset   000C2208 (795144)\n+222BF7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221216: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222BF7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221252 CENTRAL HEADER #657   02014B50 (33639248)\n-221256 Created Zip Spec      14 (20) '2.0'\n-221257 Created OS            00 (0) 'MS-DOS'\n-221258 Extract Zip Spec      14 (20) '2.0'\n-221259 Extract OS            00 (0) 'MS-DOS'\n-22125A General Purpose Flag  0808 (2056)\n+222C1E CENTRAL HEADER #657   02014B50 (33639248)\n+222C22 Created Zip Spec      14 (20) '2.0'\n+222C23 Created OS            00 (0) 'MS-DOS'\n+222C24 Extract Zip Spec      14 (20) '2.0'\n+222C25 Extract OS            00 (0) 'MS-DOS'\n+222C26 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22125C Compression Method    0008 (8) 'Deflated'\n-22125E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221262 CRC                   00000000 (0)\n-221266 Compressed Size       00000002 (2)\n-22126A Uncompressed Size     00000000 (0)\n-22126E Filename Length       0026 (38)\n-221270 Extra Length          0000 (0)\n-221272 Comment Length        0000 (0)\n-221274 Disk Start            0000 (0)\n-221276 Int File Attributes   0000 (0)\n+222C28 Compression Method    0008 (8) 'Deflated'\n+222C2A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222C2E CRC                   6CA638E1 (1822832865)\n+222C32 Compressed Size       0000030F (783)\n+222C36 Uncompressed Size     00000968 (2408)\n+222C3A Filename Length       0031 (49)\n+222C3C Extra Length          0000 (0)\n+222C3E Comment Length        0000 (0)\n+222C40 Disk Start            0000 (0)\n+222C42 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221278 Ext File Attributes   00000000 (0)\n-22127C Local Header Offset   0009512B (610603)\n-221280 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222C44 Ext File Attributes   00000000 (0)\n+222C48 Local Header Offset   000C25A1 (796065)\n+222C4C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221280: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222C4C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2212A6 CENTRAL HEADER #658   02014B50 (33639248)\n-2212AA Created Zip Spec      14 (20) '2.0'\n-2212AB Created OS            00 (0) 'MS-DOS'\n-2212AC Extract Zip Spec      14 (20) '2.0'\n-2212AD Extract OS            00 (0) 'MS-DOS'\n-2212AE General Purpose Flag  0808 (2056)\n+222C7D CENTRAL HEADER #658   02014B50 (33639248)\n+222C81 Created Zip Spec      14 (20) '2.0'\n+222C82 Created OS            00 (0) 'MS-DOS'\n+222C83 Extract Zip Spec      14 (20) '2.0'\n+222C84 Extract OS            00 (0) 'MS-DOS'\n+222C85 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2212B0 Compression Method    0008 (8) 'Deflated'\n-2212B2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2212B6 CRC                   719AAFB0 (1905962928)\n-2212BA Compressed Size       00000343 (835)\n-2212BE Uncompressed Size     00000C98 (3224)\n-2212C2 Filename Length       0037 (55)\n-2212C4 Extra Length          0000 (0)\n-2212C6 Comment Length        0000 (0)\n-2212C8 Disk Start            0000 (0)\n-2212CA Int File Attributes   0000 (0)\n+222C87 Compression Method    0008 (8) 'Deflated'\n+222C89 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222C8D CRC                   31AD4BD9 (833440729)\n+222C91 Compressed Size       000002EC (748)\n+222C95 Uncompressed Size     00000635 (1589)\n+222C99 Filename Length       002B (43)\n+222C9B Extra Length          0000 (0)\n+222C9D Comment Length        0000 (0)\n+222C9F Disk Start            0000 (0)\n+222CA1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2212CC Ext File Attributes   00000000 (0)\n-2212D0 Local Header Offset   00095181 (610689)\n-2212D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222CA3 Ext File Attributes   00000000 (0)\n+222CA7 Local Header Offset   000C290F (796943)\n+222CAB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2212D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222CAB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22130B CENTRAL HEADER #659   02014B50 (33639248)\n-22130F Created Zip Spec      14 (20) '2.0'\n-221310 Created OS            00 (0) 'MS-DOS'\n-221311 Extract Zip Spec      14 (20) '2.0'\n-221312 Extract OS            00 (0) 'MS-DOS'\n-221313 General Purpose Flag  0808 (2056)\n+222CD6 CENTRAL HEADER #659   02014B50 (33639248)\n+222CDA Created Zip Spec      14 (20) '2.0'\n+222CDB Created OS            00 (0) 'MS-DOS'\n+222CDC Extract Zip Spec      14 (20) '2.0'\n+222CDD Extract OS            00 (0) 'MS-DOS'\n+222CDE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221315 Compression Method    0008 (8) 'Deflated'\n-221317 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22131B CRC                   B7D93D08 (3084467464)\n-22131F Compressed Size       00000375 (885)\n-221323 Uncompressed Size     00000CED (3309)\n-221327 Filename Length       003E (62)\n-221329 Extra Length          0000 (0)\n-22132B Comment Length        0000 (0)\n-22132D Disk Start            0000 (0)\n-22132F Int File Attributes   0000 (0)\n+222CE0 Compression Method    0008 (8) 'Deflated'\n+222CE2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222CE6 CRC                   8BF38561 (2347992417)\n+222CEA Compressed Size       000003C4 (964)\n+222CEE Uncompressed Size     00000CE9 (3305)\n+222CF2 Filename Length       0030 (48)\n+222CF4 Extra Length          0000 (0)\n+222CF6 Comment Length        0000 (0)\n+222CF8 Disk Start            0000 (0)\n+222CFA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221331 Ext File Attributes   00000000 (0)\n-221335 Local Header Offset   00095529 (611625)\n-221339 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222CFC Ext File Attributes   00000000 (0)\n+222D00 Local Header Offset   000C2C54 (797780)\n+222D04 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221339: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222D04: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221377 CENTRAL HEADER #660   02014B50 (33639248)\n-22137B Created Zip Spec      14 (20) '2.0'\n-22137C Created OS            00 (0) 'MS-DOS'\n-22137D Extract Zip Spec      14 (20) '2.0'\n-22137E Extract OS            00 (0) 'MS-DOS'\n-22137F General Purpose Flag  0808 (2056)\n+222D34 CENTRAL HEADER #660   02014B50 (33639248)\n+222D38 Created Zip Spec      14 (20) '2.0'\n+222D39 Created OS            00 (0) 'MS-DOS'\n+222D3A Extract Zip Spec      14 (20) '2.0'\n+222D3B Extract OS            00 (0) 'MS-DOS'\n+222D3C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221381 Compression Method    0008 (8) 'Deflated'\n-221383 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221387 CRC                   00000000 (0)\n-22138B Compressed Size       00000002 (2)\n-22138F Uncompressed Size     00000000 (0)\n-221393 Filename Length       0025 (37)\n-221395 Extra Length          0000 (0)\n-221397 Comment Length        0000 (0)\n-221399 Disk Start            0000 (0)\n-22139B Int File Attributes   0000 (0)\n+222D3E Compression Method    0008 (8) 'Deflated'\n+222D40 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222D44 CRC                   38EB0C43 (954928195)\n+222D48 Compressed Size       0000034E (846)\n+222D4C Uncompressed Size     000006E3 (1763)\n+222D50 Filename Length       002D (45)\n+222D52 Extra Length          0000 (0)\n+222D54 Comment Length        0000 (0)\n+222D56 Disk Start            0000 (0)\n+222D58 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22139D Ext File Attributes   00000000 (0)\n-2213A1 Local Header Offset   0009590A (612618)\n-2213A5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222D5A Ext File Attributes   00000000 (0)\n+222D5E Local Header Offset   000C3076 (798838)\n+222D62 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2213A5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222D62: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2213CA CENTRAL HEADER #661   02014B50 (33639248)\n-2213CE Created Zip Spec      14 (20) '2.0'\n-2213CF Created OS            00 (0) 'MS-DOS'\n-2213D0 Extract Zip Spec      14 (20) '2.0'\n-2213D1 Extract OS            00 (0) 'MS-DOS'\n-2213D2 General Purpose Flag  0808 (2056)\n+222D8F CENTRAL HEADER #661   02014B50 (33639248)\n+222D93 Created Zip Spec      14 (20) '2.0'\n+222D94 Created OS            00 (0) 'MS-DOS'\n+222D95 Extract Zip Spec      14 (20) '2.0'\n+222D96 Extract OS            00 (0) 'MS-DOS'\n+222D97 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2213D4 Compression Method    0008 (8) 'Deflated'\n-2213D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2213DA CRC                   FD6565BB (4251280827)\n-2213DE Compressed Size       0000044E (1102)\n-2213E2 Uncompressed Size     00001876 (6262)\n-2213E6 Filename Length       0035 (53)\n-2213E8 Extra Length          0000 (0)\n-2213EA Comment Length        0000 (0)\n-2213EC Disk Start            0000 (0)\n-2213EE Int File Attributes   0000 (0)\n+222D99 Compression Method    0008 (8) 'Deflated'\n+222D9B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222D9F CRC                   D0646959 (3496241497)\n+222DA3 Compressed Size       00000358 (856)\n+222DA7 Uncompressed Size     000007C1 (1985)\n+222DAB Filename Length       002F (47)\n+222DAD Extra Length          0000 (0)\n+222DAF Comment Length        0000 (0)\n+222DB1 Disk Start            0000 (0)\n+222DB3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2213F0 Ext File Attributes   00000000 (0)\n-2213F4 Local Header Offset   0009595F (612703)\n-2213F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222DB5 Ext File Attributes   00000000 (0)\n+222DB9 Local Header Offset   000C341F (799775)\n+222DBD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2213F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222DBD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22142D CENTRAL HEADER #662   02014B50 (33639248)\n-221431 Created Zip Spec      14 (20) '2.0'\n-221432 Created OS            00 (0) 'MS-DOS'\n-221433 Extract Zip Spec      14 (20) '2.0'\n-221434 Extract OS            00 (0) 'MS-DOS'\n-221435 General Purpose Flag  0808 (2056)\n+222DEC CENTRAL HEADER #662   02014B50 (33639248)\n+222DF0 Created Zip Spec      14 (20) '2.0'\n+222DF1 Created OS            00 (0) 'MS-DOS'\n+222DF2 Extract Zip Spec      14 (20) '2.0'\n+222DF3 Extract OS            00 (0) 'MS-DOS'\n+222DF4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221437 Compression Method    0008 (8) 'Deflated'\n-221439 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22143D CRC                   2D853131 (763703601)\n-221441 Compressed Size       000002C6 (710)\n-221445 Uncompressed Size     000006EF (1775)\n-221449 Filename Length       003C (60)\n-22144B Extra Length          0000 (0)\n-22144D Comment Length        0000 (0)\n-22144F Disk Start            0000 (0)\n-221451 Int File Attributes   0000 (0)\n+222DF6 Compression Method    0008 (8) 'Deflated'\n+222DF8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222DFC CRC                   4475FC12 (1148582930)\n+222E00 Compressed Size       0000035B (859)\n+222E04 Uncompressed Size     0000084E (2126)\n+222E08 Filename Length       002A (42)\n+222E0A Extra Length          0000 (0)\n+222E0C Comment Length        0000 (0)\n+222E0E Disk Start            0000 (0)\n+222E10 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221453 Ext File Attributes   00000000 (0)\n-221457 Local Header Offset   00095E10 (613904)\n-22145B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222E12 Ext File Attributes   00000000 (0)\n+222E16 Local Header Offset   000C37D4 (800724)\n+222E1A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22145B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222E1A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221497 CENTRAL HEADER #663   02014B50 (33639248)\n-22149B Created Zip Spec      14 (20) '2.0'\n-22149C Created OS            00 (0) 'MS-DOS'\n-22149D Extract Zip Spec      14 (20) '2.0'\n-22149E Extract OS            00 (0) 'MS-DOS'\n-22149F General Purpose Flag  0808 (2056)\n+222E44 CENTRAL HEADER #663   02014B50 (33639248)\n+222E48 Created Zip Spec      14 (20) '2.0'\n+222E49 Created OS            00 (0) 'MS-DOS'\n+222E4A Extract Zip Spec      14 (20) '2.0'\n+222E4B Extract OS            00 (0) 'MS-DOS'\n+222E4C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2214A1 Compression Method    0008 (8) 'Deflated'\n-2214A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2214A7 CRC                   00000000 (0)\n-2214AB Compressed Size       00000002 (2)\n-2214AF Uncompressed Size     00000000 (0)\n-2214B3 Filename Length       0027 (39)\n-2214B5 Extra Length          0000 (0)\n-2214B7 Comment Length        0000 (0)\n-2214B9 Disk Start            0000 (0)\n-2214BB Int File Attributes   0000 (0)\n+222E4E Compression Method    0008 (8) 'Deflated'\n+222E50 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222E54 CRC                   65BE8BD8 (1706986456)\n+222E58 Compressed Size       000003B8 (952)\n+222E5C Uncompressed Size     00000C19 (3097)\n+222E60 Filename Length       002B (43)\n+222E62 Extra Length          0000 (0)\n+222E64 Comment Length        0000 (0)\n+222E66 Disk Start            0000 (0)\n+222E68 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2214BD Ext File Attributes   00000000 (0)\n-2214C1 Local Header Offset   00096140 (614720)\n-2214C5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222E6A Ext File Attributes   00000000 (0)\n+222E6E Local Header Offset   000C3B87 (801671)\n+222E72 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2214C5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222E72: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2214EC CENTRAL HEADER #664   02014B50 (33639248)\n-2214F0 Created Zip Spec      14 (20) '2.0'\n-2214F1 Created OS            00 (0) 'MS-DOS'\n-2214F2 Extract Zip Spec      14 (20) '2.0'\n-2214F3 Extract OS            00 (0) 'MS-DOS'\n-2214F4 General Purpose Flag  0808 (2056)\n+222E9D CENTRAL HEADER #664   02014B50 (33639248)\n+222EA1 Created Zip Spec      14 (20) '2.0'\n+222EA2 Created OS            00 (0) 'MS-DOS'\n+222EA3 Extract Zip Spec      14 (20) '2.0'\n+222EA4 Extract OS            00 (0) 'MS-DOS'\n+222EA5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2214F6 Compression Method    0008 (8) 'Deflated'\n-2214F8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2214FC CRC                   01B8CE5D (28888669)\n-221500 Compressed Size       000003B8 (952)\n-221504 Uncompressed Size     000013B5 (5045)\n-221508 Filename Length       003A (58)\n-22150A Extra Length          0000 (0)\n-22150C Comment Length        0000 (0)\n-22150E Disk Start            0000 (0)\n-221510 Int File Attributes   0000 (0)\n+222EA7 Compression Method    0008 (8) 'Deflated'\n+222EA9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222EAD CRC                   00000000 (0)\n+222EB1 Compressed Size       00000002 (2)\n+222EB5 Uncompressed Size     00000000 (0)\n+222EB9 Filename Length       0021 (33)\n+222EBB Extra Length          0000 (0)\n+222EBD Comment Length        0000 (0)\n+222EBF Disk Start            0000 (0)\n+222EC1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221512 Ext File Attributes   00000000 (0)\n-221516 Local Header Offset   00096197 (614807)\n-22151A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222EC3 Ext File Attributes   00000000 (0)\n+222EC7 Local Header Offset   000C3F98 (802712)\n+222ECB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22151A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222ECB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221554 CENTRAL HEADER #665   02014B50 (33639248)\n-221558 Created Zip Spec      14 (20) '2.0'\n-221559 Created OS            00 (0) 'MS-DOS'\n-22155A Extract Zip Spec      14 (20) '2.0'\n-22155B Extract OS            00 (0) 'MS-DOS'\n-22155C General Purpose Flag  0808 (2056)\n+222EEC CENTRAL HEADER #665   02014B50 (33639248)\n+222EF0 Created Zip Spec      14 (20) '2.0'\n+222EF1 Created OS            00 (0) 'MS-DOS'\n+222EF2 Extract Zip Spec      14 (20) '2.0'\n+222EF3 Extract OS            00 (0) 'MS-DOS'\n+222EF4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22155E Compression Method    0008 (8) 'Deflated'\n-221560 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221564 CRC                   00000000 (0)\n-221568 Compressed Size       00000002 (2)\n-22156C Uncompressed Size     00000000 (0)\n-221570 Filename Length       001F (31)\n-221572 Extra Length          0000 (0)\n-221574 Comment Length        0000 (0)\n-221576 Disk Start            0000 (0)\n-221578 Int File Attributes   0000 (0)\n+222EF6 Compression Method    0008 (8) 'Deflated'\n+222EF8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222EFC CRC                   33E8796E (870873454)\n+222F00 Compressed Size       000006CE (1742)\n+222F04 Uncompressed Size     00002559 (9561)\n+222F08 Filename Length       003B (59)\n+222F0A Extra Length          0000 (0)\n+222F0C Comment Length        0000 (0)\n+222F0E Disk Start            0000 (0)\n+222F10 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22157A Ext File Attributes   00000000 (0)\n-22157E Local Header Offset   000965B7 (615863)\n-221582 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222F12 Ext File Attributes   00000000 (0)\n+222F16 Local Header Offset   000C3FE9 (802793)\n+222F1A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221582: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222F1A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2215A1 CENTRAL HEADER #666   02014B50 (33639248)\n-2215A5 Created Zip Spec      14 (20) '2.0'\n-2215A6 Created OS            00 (0) 'MS-DOS'\n-2215A7 Extract Zip Spec      14 (20) '2.0'\n-2215A8 Extract OS            00 (0) 'MS-DOS'\n-2215A9 General Purpose Flag  0808 (2056)\n+222F55 CENTRAL HEADER #666   02014B50 (33639248)\n+222F59 Created Zip Spec      14 (20) '2.0'\n+222F5A Created OS            00 (0) 'MS-DOS'\n+222F5B Extract Zip Spec      14 (20) '2.0'\n+222F5C Extract OS            00 (0) 'MS-DOS'\n+222F5D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2215AB Compression Method    0008 (8) 'Deflated'\n-2215AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2215B1 CRC                   EE49CD50 (3997814096)\n-2215B5 Compressed Size       000002D6 (726)\n-2215B9 Uncompressed Size     0000075D (1885)\n-2215BD Filename Length       002A (42)\n-2215BF Extra Length          0000 (0)\n-2215C1 Comment Length        0000 (0)\n-2215C3 Disk Start            0000 (0)\n-2215C5 Int File Attributes   0000 (0)\n+222F5F Compression Method    0008 (8) 'Deflated'\n+222F61 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222F65 CRC                   AD83DA8F (2911099535)\n+222F69 Compressed Size       000006AB (1707)\n+222F6D Uncompressed Size     00001EB2 (7858)\n+222F71 Filename Length       0043 (67)\n+222F73 Extra Length          0000 (0)\n+222F75 Comment Length        0000 (0)\n+222F77 Disk Start            0000 (0)\n+222F79 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2215C7 Ext File Attributes   00000000 (0)\n-2215CB Local Header Offset   00096606 (615942)\n-2215CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222F7B Ext File Attributes   00000000 (0)\n+222F7F Local Header Offset   000C4720 (804640)\n+222F83 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2215CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222F83: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2215F9 CENTRAL HEADER #667   02014B50 (33639248)\n-2215FD Created Zip Spec      14 (20) '2.0'\n-2215FE Created OS            00 (0) 'MS-DOS'\n-2215FF Extract Zip Spec      14 (20) '2.0'\n-221600 Extract OS            00 (0) 'MS-DOS'\n-221601 General Purpose Flag  0808 (2056)\n+222FC6 CENTRAL HEADER #667   02014B50 (33639248)\n+222FCA Created Zip Spec      14 (20) '2.0'\n+222FCB Created OS            00 (0) 'MS-DOS'\n+222FCC Extract Zip Spec      14 (20) '2.0'\n+222FCD Extract OS            00 (0) 'MS-DOS'\n+222FCE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221603 Compression Method    0008 (8) 'Deflated'\n-221605 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221609 CRC                   4C723E93 (1282555539)\n-22160D Compressed Size       0000023F (575)\n-221611 Uncompressed Size     00000432 (1074)\n-221615 Filename Length       0031 (49)\n-221617 Extra Length          0000 (0)\n-221619 Comment Length        0000 (0)\n-22161B Disk Start            0000 (0)\n-22161D Int File Attributes   0000 (0)\n+222FD0 Compression Method    0008 (8) 'Deflated'\n+222FD2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+222FD6 CRC                   14F45D67 (351559015)\n+222FDA Compressed Size       0000198E (6542)\n+222FDE Uncompressed Size     0000AE27 (44583)\n+222FE2 Filename Length       0033 (51)\n+222FE4 Extra Length          0000 (0)\n+222FE6 Comment Length        0000 (0)\n+222FE8 Disk Start            0000 (0)\n+222FEA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22161F Ext File Attributes   00000000 (0)\n-221623 Local Header Offset   00096934 (616756)\n-221627 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+222FEC Ext File Attributes   00000000 (0)\n+222FF0 Local Header Offset   000C4E3C (806460)\n+222FF4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221627: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x222FF4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221658 CENTRAL HEADER #668   02014B50 (33639248)\n-22165C Created Zip Spec      14 (20) '2.0'\n-22165D Created OS            00 (0) 'MS-DOS'\n-22165E Extract Zip Spec      14 (20) '2.0'\n-22165F Extract OS            00 (0) 'MS-DOS'\n-221660 General Purpose Flag  0808 (2056)\n+223027 CENTRAL HEADER #668   02014B50 (33639248)\n+22302B Created Zip Spec      14 (20) '2.0'\n+22302C Created OS            00 (0) 'MS-DOS'\n+22302D Extract Zip Spec      14 (20) '2.0'\n+22302E Extract OS            00 (0) 'MS-DOS'\n+22302F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221662 Compression Method    0008 (8) 'Deflated'\n-221664 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221668 CRC                   00000000 (0)\n-22166C Compressed Size       00000002 (2)\n-221670 Uncompressed Size     00000000 (0)\n-221674 Filename Length       0027 (39)\n-221676 Extra Length          0000 (0)\n-221678 Comment Length        0000 (0)\n-22167A Disk Start            0000 (0)\n-22167C Int File Attributes   0000 (0)\n+223031 Compression Method    0008 (8) 'Deflated'\n+223033 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223037 CRC                   6A53E0FE (1783881982)\n+22303B Compressed Size       0000024F (591)\n+22303F Uncompressed Size     00000456 (1110)\n+223043 Filename Length       003A (58)\n+223045 Extra Length          0000 (0)\n+223047 Comment Length        0000 (0)\n+223049 Disk Start            0000 (0)\n+22304B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22167E Ext File Attributes   00000000 (0)\n-221682 Local Header Offset   00096BD2 (617426)\n-221686 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22304D Ext File Attributes   00000000 (0)\n+223051 Local Header Offset   000C682B (813099)\n+223055 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221686: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223055: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2216AD CENTRAL HEADER #669   02014B50 (33639248)\n-2216B1 Created Zip Spec      14 (20) '2.0'\n-2216B2 Created OS            00 (0) 'MS-DOS'\n-2216B3 Extract Zip Spec      14 (20) '2.0'\n-2216B4 Extract OS            00 (0) 'MS-DOS'\n-2216B5 General Purpose Flag  0808 (2056)\n+22308F CENTRAL HEADER #669   02014B50 (33639248)\n+223093 Created Zip Spec      14 (20) '2.0'\n+223094 Created OS            00 (0) 'MS-DOS'\n+223095 Extract Zip Spec      14 (20) '2.0'\n+223096 Extract OS            00 (0) 'MS-DOS'\n+223097 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2216B7 Compression Method    0008 (8) 'Deflated'\n-2216B9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2216BD CRC                   CD3068DB (3442501851)\n-2216C1 Compressed Size       000003A9 (937)\n-2216C5 Uncompressed Size     000008A7 (2215)\n-2216C9 Filename Length       003D (61)\n-2216CB Extra Length          0000 (0)\n-2216CD Comment Length        0000 (0)\n-2216CF Disk Start            0000 (0)\n-2216D1 Int File Attributes   0000 (0)\n+223099 Compression Method    0008 (8) 'Deflated'\n+22309B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22309F CRC                   4997E6D6 (1234691798)\n+2230A3 Compressed Size       00000429 (1065)\n+2230A7 Uncompressed Size     00000C53 (3155)\n+2230AB Filename Length       003E (62)\n+2230AD Extra Length          0000 (0)\n+2230AF Comment Length        0000 (0)\n+2230B1 Disk Start            0000 (0)\n+2230B3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2216D3 Ext File Attributes   00000000 (0)\n-2216D7 Local Header Offset   00096C29 (617513)\n-2216DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2230B5 Ext File Attributes   00000000 (0)\n+2230B9 Local Header Offset   000C6AE2 (813794)\n+2230BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2216DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2230BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221718 CENTRAL HEADER #670   02014B50 (33639248)\n-22171C Created Zip Spec      14 (20) '2.0'\n-22171D Created OS            00 (0) 'MS-DOS'\n-22171E Extract Zip Spec      14 (20) '2.0'\n-22171F Extract OS            00 (0) 'MS-DOS'\n-221720 General Purpose Flag  0808 (2056)\n+2230FB CENTRAL HEADER #670   02014B50 (33639248)\n+2230FF Created Zip Spec      14 (20) '2.0'\n+223100 Created OS            00 (0) 'MS-DOS'\n+223101 Extract Zip Spec      14 (20) '2.0'\n+223102 Extract OS            00 (0) 'MS-DOS'\n+223103 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221722 Compression Method    0008 (8) 'Deflated'\n-221724 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221728 CRC                   E601D6EE (3858880238)\n-22172C Compressed Size       00000326 (806)\n-221730 Uncompressed Size     00000701 (1793)\n-221734 Filename Length       003F (63)\n-221736 Extra Length          0000 (0)\n-221738 Comment Length        0000 (0)\n-22173A Disk Start            0000 (0)\n-22173C Int File Attributes   0000 (0)\n+223105 Compression Method    0008 (8) 'Deflated'\n+223107 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22310B CRC                   996F8C6F (2574224495)\n+22310F Compressed Size       00000307 (775)\n+223113 Uncompressed Size     00000765 (1893)\n+223117 Filename Length       003F (63)\n+223119 Extra Length          0000 (0)\n+22311B Comment Length        0000 (0)\n+22311D Disk Start            0000 (0)\n+22311F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22173E Ext File Attributes   00000000 (0)\n-221742 Local Header Offset   0009703D (618557)\n-221746 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223121 Ext File Attributes   00000000 (0)\n+223125 Local Header Offset   000C6F77 (814967)\n+223129 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221746: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223129: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221785 CENTRAL HEADER #671   02014B50 (33639248)\n-221789 Created Zip Spec      14 (20) '2.0'\n-22178A Created OS            00 (0) 'MS-DOS'\n-22178B Extract Zip Spec      14 (20) '2.0'\n-22178C Extract OS            00 (0) 'MS-DOS'\n-22178D General Purpose Flag  0808 (2056)\n+223168 CENTRAL HEADER #671   02014B50 (33639248)\n+22316C Created Zip Spec      14 (20) '2.0'\n+22316D Created OS            00 (0) 'MS-DOS'\n+22316E Extract Zip Spec      14 (20) '2.0'\n+22316F Extract OS            00 (0) 'MS-DOS'\n+223170 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22178F Compression Method    0008 (8) 'Deflated'\n-221791 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221795 CRC                   577B6C79 (1467706489)\n-221799 Compressed Size       00000331 (817)\n-22179D Uncompressed Size     000007D4 (2004)\n-2217A1 Filename Length       0037 (55)\n-2217A3 Extra Length          0000 (0)\n-2217A5 Comment Length        0000 (0)\n-2217A7 Disk Start            0000 (0)\n-2217A9 Int File Attributes   0000 (0)\n+223172 Compression Method    0008 (8) 'Deflated'\n+223174 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223178 CRC                   C2B309D7 (3266513367)\n+22317C Compressed Size       00000537 (1335)\n+223180 Uncompressed Size     0000133E (4926)\n+223184 Filename Length       0034 (52)\n+223186 Extra Length          0000 (0)\n+223188 Comment Length        0000 (0)\n+22318A Disk Start            0000 (0)\n+22318C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2217AB Ext File Attributes   00000000 (0)\n-2217AF Local Header Offset   000973D0 (619472)\n-2217B3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22318E Ext File Attributes   00000000 (0)\n+223192 Local Header Offset   000C72EB (815851)\n+223196 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2217B3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223196: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2217EA CENTRAL HEADER #672   02014B50 (33639248)\n-2217EE Created Zip Spec      14 (20) '2.0'\n-2217EF Created OS            00 (0) 'MS-DOS'\n-2217F0 Extract Zip Spec      14 (20) '2.0'\n-2217F1 Extract OS            00 (0) 'MS-DOS'\n-2217F2 General Purpose Flag  0808 (2056)\n+2231CA CENTRAL HEADER #672   02014B50 (33639248)\n+2231CE Created Zip Spec      14 (20) '2.0'\n+2231CF Created OS            00 (0) 'MS-DOS'\n+2231D0 Extract Zip Spec      14 (20) '2.0'\n+2231D1 Extract OS            00 (0) 'MS-DOS'\n+2231D2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2217F4 Compression Method    0008 (8) 'Deflated'\n-2217F6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2217FA CRC                   00000000 (0)\n-2217FE Compressed Size       00000002 (2)\n-221802 Uncompressed Size     00000000 (0)\n-221806 Filename Length       001E (30)\n-221808 Extra Length          0000 (0)\n-22180A Comment Length        0000 (0)\n-22180C Disk Start            0000 (0)\n-22180E Int File Attributes   0000 (0)\n+2231D4 Compression Method    0008 (8) 'Deflated'\n+2231D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2231DA CRC                   9D245ED3 (2636406483)\n+2231DE Compressed Size       000003C0 (960)\n+2231E2 Uncompressed Size     00000A45 (2629)\n+2231E6 Filename Length       0040 (64)\n+2231E8 Extra Length          0000 (0)\n+2231EA Comment Length        0000 (0)\n+2231EC Disk Start            0000 (0)\n+2231EE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221810 Ext File Attributes   00000000 (0)\n-221814 Local Header Offset   00097766 (620390)\n-221818 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2231F0 Ext File Attributes   00000000 (0)\n+2231F4 Local Header Offset   000C7884 (817284)\n+2231F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221818: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2231F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221836 CENTRAL HEADER #673   02014B50 (33639248)\n-22183A Created Zip Spec      14 (20) '2.0'\n-22183B Created OS            00 (0) 'MS-DOS'\n-22183C Extract Zip Spec      14 (20) '2.0'\n-22183D Extract OS            00 (0) 'MS-DOS'\n-22183E General Purpose Flag  0808 (2056)\n+223238 CENTRAL HEADER #673   02014B50 (33639248)\n+22323C Created Zip Spec      14 (20) '2.0'\n+22323D Created OS            00 (0) 'MS-DOS'\n+22323E Extract Zip Spec      14 (20) '2.0'\n+22323F Extract OS            00 (0) 'MS-DOS'\n+223240 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221840 Compression Method    0008 (8) 'Deflated'\n-221842 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221846 CRC                   BF5F9C1E (3210714142)\n-22184A Compressed Size       00000287 (647)\n-22184E Uncompressed Size     00000500 (1280)\n-221852 Filename Length       002C (44)\n-221854 Extra Length          0000 (0)\n-221856 Comment Length        0000 (0)\n-221858 Disk Start            0000 (0)\n-22185A Int File Attributes   0000 (0)\n+223242 Compression Method    0008 (8) 'Deflated'\n+223244 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223248 CRC                   5ED5B140 (1591062848)\n+22324C Compressed Size       00000551 (1361)\n+223250 Uncompressed Size     000015E8 (5608)\n+223254 Filename Length       003A (58)\n+223256 Extra Length          0000 (0)\n+223258 Comment Length        0000 (0)\n+22325A Disk Start            0000 (0)\n+22325C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22185C Ext File Attributes   00000000 (0)\n-221860 Local Header Offset   000977B4 (620468)\n-221864 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22325E Ext File Attributes   00000000 (0)\n+223262 Local Header Offset   000C7CB2 (818354)\n+223266 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221864: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223266: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221890 CENTRAL HEADER #674   02014B50 (33639248)\n-221894 Created Zip Spec      14 (20) '2.0'\n-221895 Created OS            00 (0) 'MS-DOS'\n-221896 Extract Zip Spec      14 (20) '2.0'\n-221897 Extract OS            00 (0) 'MS-DOS'\n-221898 General Purpose Flag  0808 (2056)\n+2232A0 CENTRAL HEADER #674   02014B50 (33639248)\n+2232A4 Created Zip Spec      14 (20) '2.0'\n+2232A5 Created OS            00 (0) 'MS-DOS'\n+2232A6 Extract Zip Spec      14 (20) '2.0'\n+2232A7 Extract OS            00 (0) 'MS-DOS'\n+2232A8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22189A Compression Method    0008 (8) 'Deflated'\n-22189C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2218A0 CRC                   00000000 (0)\n-2218A4 Compressed Size       00000002 (2)\n-2218A8 Uncompressed Size     00000000 (0)\n-2218AC Filename Length       0026 (38)\n-2218AE Extra Length          0000 (0)\n-2218B0 Comment Length        0000 (0)\n-2218B2 Disk Start            0000 (0)\n-2218B4 Int File Attributes   0000 (0)\n+2232AA Compression Method    0008 (8) 'Deflated'\n+2232AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2232B0 CRC                   CC038CDE (3422784734)\n+2232B4 Compressed Size       0000065F (1631)\n+2232B8 Uncompressed Size     000019AF (6575)\n+2232BC Filename Length       0037 (55)\n+2232BE Extra Length          0000 (0)\n+2232C0 Comment Length        0000 (0)\n+2232C2 Disk Start            0000 (0)\n+2232C4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2218B6 Ext File Attributes   00000000 (0)\n-2218BA Local Header Offset   00097A95 (621205)\n-2218BE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2232C6 Ext File Attributes   00000000 (0)\n+2232CA Local Header Offset   000C826B (819819)\n+2232CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2218BE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2232CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2218E4 CENTRAL HEADER #675   02014B50 (33639248)\n-2218E8 Created Zip Spec      14 (20) '2.0'\n-2218E9 Created OS            00 (0) 'MS-DOS'\n-2218EA Extract Zip Spec      14 (20) '2.0'\n-2218EB Extract OS            00 (0) 'MS-DOS'\n-2218EC General Purpose Flag  0808 (2056)\n+223305 CENTRAL HEADER #675   02014B50 (33639248)\n+223309 Created Zip Spec      14 (20) '2.0'\n+22330A Created OS            00 (0) 'MS-DOS'\n+22330B Extract Zip Spec      14 (20) '2.0'\n+22330C Extract OS            00 (0) 'MS-DOS'\n+22330D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2218EE Compression Method    0008 (8) 'Deflated'\n-2218F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2218F4 CRC                   5E930431 (1586693169)\n-2218F8 Compressed Size       0000034F (847)\n-2218FC Uncompressed Size     000008C7 (2247)\n-221900 Filename Length       003A (58)\n-221902 Extra Length          0000 (0)\n-221904 Comment Length        0000 (0)\n-221906 Disk Start            0000 (0)\n-221908 Int File Attributes   0000 (0)\n+22330F Compression Method    0008 (8) 'Deflated'\n+223311 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223315 CRC                   80349D10 (2150931728)\n+223319 Compressed Size       00000314 (788)\n+22331D Uncompressed Size     00000779 (1913)\n+223321 Filename Length       003E (62)\n+223323 Extra Length          0000 (0)\n+223325 Comment Length        0000 (0)\n+223327 Disk Start            0000 (0)\n+223329 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22190A Ext File Attributes   00000000 (0)\n-22190E Local Header Offset   00097AEB (621291)\n-221912 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22332B Ext File Attributes   00000000 (0)\n+22332F Local Header Offset   000C892F (821551)\n+223333 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221912: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223333: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22194C CENTRAL HEADER #676   02014B50 (33639248)\n-221950 Created Zip Spec      14 (20) '2.0'\n-221951 Created OS            00 (0) 'MS-DOS'\n-221952 Extract Zip Spec      14 (20) '2.0'\n-221953 Extract OS            00 (0) 'MS-DOS'\n-221954 General Purpose Flag  0808 (2056)\n+223371 CENTRAL HEADER #676   02014B50 (33639248)\n+223375 Created Zip Spec      14 (20) '2.0'\n+223376 Created OS            00 (0) 'MS-DOS'\n+223377 Extract Zip Spec      14 (20) '2.0'\n+223378 Extract OS            00 (0) 'MS-DOS'\n+223379 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221956 Compression Method    0008 (8) 'Deflated'\n-221958 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22195C CRC                   00000000 (0)\n-221960 Compressed Size       00000002 (2)\n-221964 Uncompressed Size     00000000 (0)\n-221968 Filename Length       0024 (36)\n-22196A Extra Length          0000 (0)\n-22196C Comment Length        0000 (0)\n-22196E Disk Start            0000 (0)\n-221970 Int File Attributes   0000 (0)\n+22337B Compression Method    0008 (8) 'Deflated'\n+22337D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223381 CRC                   00000000 (0)\n+223385 Compressed Size       00000002 (2)\n+223389 Uncompressed Size     00000000 (0)\n+22338D Filename Length       0023 (35)\n+22338F Extra Length          0000 (0)\n+223391 Comment Length        0000 (0)\n+223393 Disk Start            0000 (0)\n+223395 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221972 Ext File Attributes   00000000 (0)\n-221976 Local Header Offset   00097EA2 (622242)\n-22197A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223397 Ext File Attributes   00000000 (0)\n+22339B Local Header Offset   000C8CAF (822447)\n+22339F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22197A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22339F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22199E CENTRAL HEADER #677   02014B50 (33639248)\n-2219A2 Created Zip Spec      14 (20) '2.0'\n-2219A3 Created OS            00 (0) 'MS-DOS'\n-2219A4 Extract Zip Spec      14 (20) '2.0'\n-2219A5 Extract OS            00 (0) 'MS-DOS'\n-2219A6 General Purpose Flag  0808 (2056)\n+2233C2 CENTRAL HEADER #677   02014B50 (33639248)\n+2233C6 Created Zip Spec      14 (20) '2.0'\n+2233C7 Created OS            00 (0) 'MS-DOS'\n+2233C8 Extract Zip Spec      14 (20) '2.0'\n+2233C9 Extract OS            00 (0) 'MS-DOS'\n+2233CA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2219A8 Compression Method    0008 (8) 'Deflated'\n-2219AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2219AE CRC                   54C421FF (1422139903)\n-2219B2 Compressed Size       00000358 (856)\n-2219B6 Uncompressed Size     00000739 (1849)\n-2219BA Filename Length       0039 (57)\n-2219BC Extra Length          0000 (0)\n-2219BE Comment Length        0000 (0)\n-2219C0 Disk Start            0000 (0)\n-2219C2 Int File Attributes   0000 (0)\n+2233CC Compression Method    0008 (8) 'Deflated'\n+2233CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2233D2 CRC                   D599DEAA (3583631018)\n+2233D6 Compressed Size       00000332 (818)\n+2233DA Uncompressed Size     000009A4 (2468)\n+2233DE Filename Length       0037 (55)\n+2233E0 Extra Length          0000 (0)\n+2233E2 Comment Length        0000 (0)\n+2233E4 Disk Start            0000 (0)\n+2233E6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2219C4 Ext File Attributes   00000000 (0)\n-2219C8 Local Header Offset   00097EF6 (622326)\n-2219CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2233E8 Ext File Attributes   00000000 (0)\n+2233EC Local Header Offset   000C8D02 (822530)\n+2233F0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2219CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2233F0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221A05 CENTRAL HEADER #678   02014B50 (33639248)\n-221A09 Created Zip Spec      14 (20) '2.0'\n-221A0A Created OS            00 (0) 'MS-DOS'\n-221A0B Extract Zip Spec      14 (20) '2.0'\n-221A0C Extract OS            00 (0) 'MS-DOS'\n-221A0D General Purpose Flag  0808 (2056)\n+223427 CENTRAL HEADER #678   02014B50 (33639248)\n+22342B Created Zip Spec      14 (20) '2.0'\n+22342C Created OS            00 (0) 'MS-DOS'\n+22342D Extract Zip Spec      14 (20) '2.0'\n+22342E Extract OS            00 (0) 'MS-DOS'\n+22342F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221A0F Compression Method    0008 (8) 'Deflated'\n-221A11 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221A15 CRC                   DFEE0135 (3756917045)\n-221A19 Compressed Size       00000330 (816)\n-221A1D Uncompressed Size     0000098D (2445)\n-221A21 Filename Length       0037 (55)\n-221A23 Extra Length          0000 (0)\n-221A25 Comment Length        0000 (0)\n-221A27 Disk Start            0000 (0)\n-221A29 Int File Attributes   0000 (0)\n+223431 Compression Method    0008 (8) 'Deflated'\n+223433 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223437 CRC                   E165CDFB (3781545467)\n+22343B Compressed Size       0000023B (571)\n+22343F Uncompressed Size     0000041A (1050)\n+223443 Filename Length       0036 (54)\n+223445 Extra Length          0000 (0)\n+223447 Comment Length        0000 (0)\n+223449 Disk Start            0000 (0)\n+22344B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221A2B Ext File Attributes   00000000 (0)\n-221A2F Local Header Offset   000982B5 (623285)\n-221A33 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22344D Ext File Attributes   00000000 (0)\n+223451 Local Header Offset   000C9099 (823449)\n+223455 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221A33: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223455: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221A6A CENTRAL HEADER #679   02014B50 (33639248)\n-221A6E Created Zip Spec      14 (20) '2.0'\n-221A6F Created OS            00 (0) 'MS-DOS'\n-221A70 Extract Zip Spec      14 (20) '2.0'\n-221A71 Extract OS            00 (0) 'MS-DOS'\n-221A72 General Purpose Flag  0808 (2056)\n+22348B CENTRAL HEADER #679   02014B50 (33639248)\n+22348F Created Zip Spec      14 (20) '2.0'\n+223490 Created OS            00 (0) 'MS-DOS'\n+223491 Extract Zip Spec      14 (20) '2.0'\n+223492 Extract OS            00 (0) 'MS-DOS'\n+223493 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221A74 Compression Method    0008 (8) 'Deflated'\n-221A76 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221A7A CRC                   F7472DA9 (4148637097)\n-221A7E Compressed Size       00000722 (1826)\n-221A82 Uncompressed Size     00001AF8 (6904)\n-221A86 Filename Length       003C (60)\n-221A88 Extra Length          0000 (0)\n-221A8A Comment Length        0000 (0)\n-221A8C Disk Start            0000 (0)\n-221A8E Int File Attributes   0000 (0)\n+223495 Compression Method    0008 (8) 'Deflated'\n+223497 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22349B CRC                   72699C54 (1919523924)\n+22349F Compressed Size       000002C2 (706)\n+2234A3 Uncompressed Size     000005B9 (1465)\n+2234A7 Filename Length       0037 (55)\n+2234A9 Extra Length          0000 (0)\n+2234AB Comment Length        0000 (0)\n+2234AD Disk Start            0000 (0)\n+2234AF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221A90 Ext File Attributes   00000000 (0)\n-221A94 Local Header Offset   0009864A (624202)\n-221A98 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2234B1 Ext File Attributes   00000000 (0)\n+2234B5 Local Header Offset   000C9338 (824120)\n+2234B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221A98: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2234B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221AD4 CENTRAL HEADER #680   02014B50 (33639248)\n-221AD8 Created Zip Spec      14 (20) '2.0'\n-221AD9 Created OS            00 (0) 'MS-DOS'\n-221ADA Extract Zip Spec      14 (20) '2.0'\n-221ADB Extract OS            00 (0) 'MS-DOS'\n-221ADC General Purpose Flag  0808 (2056)\n+2234F0 CENTRAL HEADER #680   02014B50 (33639248)\n+2234F4 Created Zip Spec      14 (20) '2.0'\n+2234F5 Created OS            00 (0) 'MS-DOS'\n+2234F6 Extract Zip Spec      14 (20) '2.0'\n+2234F7 Extract OS            00 (0) 'MS-DOS'\n+2234F8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221ADE Compression Method    0008 (8) 'Deflated'\n-221AE0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221AE4 CRC                   17B25B54 (397564756)\n-221AE8 Compressed Size       00000613 (1555)\n-221AEC Uncompressed Size     00001558 (5464)\n-221AF0 Filename Length       003F (63)\n-221AF2 Extra Length          0000 (0)\n-221AF4 Comment Length        0000 (0)\n-221AF6 Disk Start            0000 (0)\n-221AF8 Int File Attributes   0000 (0)\n+2234FA Compression Method    0008 (8) 'Deflated'\n+2234FC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223500 CRC                   330FACB0 (856665264)\n+223504 Compressed Size       000002A4 (676)\n+223508 Uncompressed Size     00000588 (1416)\n+22350C Filename Length       0036 (54)\n+22350E Extra Length          0000 (0)\n+223510 Comment Length        0000 (0)\n+223512 Disk Start            0000 (0)\n+223514 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221AFA Ext File Attributes   00000000 (0)\n-221AFE Local Header Offset   00098DD6 (626134)\n-221B02 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223516 Ext File Attributes   00000000 (0)\n+22351A Local Header Offset   000C965F (824927)\n+22351E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221B02: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22351E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221B41 CENTRAL HEADER #681   02014B50 (33639248)\n-221B45 Created Zip Spec      14 (20) '2.0'\n-221B46 Created OS            00 (0) 'MS-DOS'\n-221B47 Extract Zip Spec      14 (20) '2.0'\n-221B48 Extract OS            00 (0) 'MS-DOS'\n-221B49 General Purpose Flag  0808 (2056)\n+223554 CENTRAL HEADER #681   02014B50 (33639248)\n+223558 Created Zip Spec      14 (20) '2.0'\n+223559 Created OS            00 (0) 'MS-DOS'\n+22355A Extract Zip Spec      14 (20) '2.0'\n+22355B Extract OS            00 (0) 'MS-DOS'\n+22355C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221B4B Compression Method    0008 (8) 'Deflated'\n-221B4D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221B51 CRC                   9C1B711A (2619044122)\n-221B55 Compressed Size       000002EE (750)\n-221B59 Uncompressed Size     0000065E (1630)\n-221B5D Filename Length       0043 (67)\n-221B5F Extra Length          0000 (0)\n-221B61 Comment Length        0000 (0)\n-221B63 Disk Start            0000 (0)\n-221B65 Int File Attributes   0000 (0)\n+22355E Compression Method    0008 (8) 'Deflated'\n+223560 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223564 CRC                   D85DA328 (3630015272)\n+223568 Compressed Size       0000033E (830)\n+22356C Uncompressed Size     000007B2 (1970)\n+223570 Filename Length       0031 (49)\n+223572 Extra Length          0000 (0)\n+223574 Comment Length        0000 (0)\n+223576 Disk Start            0000 (0)\n+223578 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221B67 Ext File Attributes   00000000 (0)\n-221B6B Local Header Offset   00099456 (627798)\n-221B6F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22357A Ext File Attributes   00000000 (0)\n+22357E Local Header Offset   000C9967 (825703)\n+223582 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221B6F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223582: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221BB2 CENTRAL HEADER #682   02014B50 (33639248)\n-221BB6 Created Zip Spec      14 (20) '2.0'\n-221BB7 Created OS            00 (0) 'MS-DOS'\n-221BB8 Extract Zip Spec      14 (20) '2.0'\n-221BB9 Extract OS            00 (0) 'MS-DOS'\n-221BBA General Purpose Flag  0808 (2056)\n+2235B3 CENTRAL HEADER #682   02014B50 (33639248)\n+2235B7 Created Zip Spec      14 (20) '2.0'\n+2235B8 Created OS            00 (0) 'MS-DOS'\n+2235B9 Extract Zip Spec      14 (20) '2.0'\n+2235BA Extract OS            00 (0) 'MS-DOS'\n+2235BB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221BBC Compression Method    0008 (8) 'Deflated'\n-221BBE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221BC2 CRC                   00000000 (0)\n-221BC6 Compressed Size       00000002 (2)\n-221BCA Uncompressed Size     00000000 (0)\n-221BCE Filename Length       0023 (35)\n-221BD0 Extra Length          0000 (0)\n-221BD2 Comment Length        0000 (0)\n-221BD4 Disk Start            0000 (0)\n-221BD6 Int File Attributes   0000 (0)\n+2235BD Compression Method    0008 (8) 'Deflated'\n+2235BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2235C3 CRC                   B04E2D51 (2957913425)\n+2235C7 Compressed Size       00000461 (1121)\n+2235CB Uncompressed Size     0000135D (4957)\n+2235CF Filename Length       0032 (50)\n+2235D1 Extra Length          0000 (0)\n+2235D3 Comment Length        0000 (0)\n+2235D5 Disk Start            0000 (0)\n+2235D7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221BD8 Ext File Attributes   00000000 (0)\n-221BDC Local Header Offset   000997B5 (628661)\n-221BE0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2235D9 Ext File Attributes   00000000 (0)\n+2235DD Local Header Offset   000C9D04 (826628)\n+2235E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221BE0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2235E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221C03 CENTRAL HEADER #683   02014B50 (33639248)\n-221C07 Created Zip Spec      14 (20) '2.0'\n-221C08 Created OS            00 (0) 'MS-DOS'\n-221C09 Extract Zip Spec      14 (20) '2.0'\n-221C0A Extract OS            00 (0) 'MS-DOS'\n-221C0B General Purpose Flag  0808 (2056)\n+223613 CENTRAL HEADER #683   02014B50 (33639248)\n+223617 Created Zip Spec      14 (20) '2.0'\n+223618 Created OS            00 (0) 'MS-DOS'\n+223619 Extract Zip Spec      14 (20) '2.0'\n+22361A Extract OS            00 (0) 'MS-DOS'\n+22361B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221C0D Compression Method    0008 (8) 'Deflated'\n-221C0F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221C13 CRC                   8247BF31 (2185740081)\n-221C17 Compressed Size       000002AF (687)\n-221C1B Uncompressed Size     0000054B (1355)\n-221C1F Filename Length       0032 (50)\n-221C21 Extra Length          0000 (0)\n-221C23 Comment Length        0000 (0)\n-221C25 Disk Start            0000 (0)\n-221C27 Int File Attributes   0000 (0)\n+22361D Compression Method    0008 (8) 'Deflated'\n+22361F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223623 CRC                   D366AAB0 (3546720944)\n+223627 Compressed Size       0000051E (1310)\n+22362B Uncompressed Size     00000EEC (3820)\n+22362F Filename Length       002F (47)\n+223631 Extra Length          0000 (0)\n+223633 Comment Length        0000 (0)\n+223635 Disk Start            0000 (0)\n+223637 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221C29 Ext File Attributes   00000000 (0)\n-221C2D Local Header Offset   00099808 (628744)\n-221C31 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223639 Ext File Attributes   00000000 (0)\n+22363D Local Header Offset   000CA1C5 (827845)\n+223641 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221C31: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223641: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221C63 CENTRAL HEADER #684   02014B50 (33639248)\n-221C67 Created Zip Spec      14 (20) '2.0'\n-221C68 Created OS            00 (0) 'MS-DOS'\n-221C69 Extract Zip Spec      14 (20) '2.0'\n-221C6A Extract OS            00 (0) 'MS-DOS'\n-221C6B General Purpose Flag  0808 (2056)\n+223670 CENTRAL HEADER #684   02014B50 (33639248)\n+223674 Created Zip Spec      14 (20) '2.0'\n+223675 Created OS            00 (0) 'MS-DOS'\n+223676 Extract Zip Spec      14 (20) '2.0'\n+223677 Extract OS            00 (0) 'MS-DOS'\n+223678 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221C6D Compression Method    0008 (8) 'Deflated'\n-221C6F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221C73 CRC                   8DDA963E (2379912766)\n-221C77 Compressed Size       000008EC (2284)\n-221C7B Uncompressed Size     00001A95 (6805)\n-221C7F Filename Length       003A (58)\n-221C81 Extra Length          0000 (0)\n-221C83 Comment Length        0000 (0)\n-221C85 Disk Start            0000 (0)\n-221C87 Int File Attributes   0000 (0)\n+22367A Compression Method    0008 (8) 'Deflated'\n+22367C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223680 CRC                   FF46E79C (4282836892)\n+223684 Compressed Size       0000051B (1307)\n+223688 Uncompressed Size     00000FC4 (4036)\n+22368C Filename Length       0030 (48)\n+22368E Extra Length          0000 (0)\n+223690 Comment Length        0000 (0)\n+223692 Disk Start            0000 (0)\n+223694 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221C89 Ext File Attributes   00000000 (0)\n-221C8D Local Header Offset   00099B17 (629527)\n-221C91 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223696 Ext File Attributes   00000000 (0)\n+22369A Local Header Offset   000CA740 (829248)\n+22369E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221C91: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22369E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221CCB CENTRAL HEADER #685   02014B50 (33639248)\n-221CCF Created Zip Spec      14 (20) '2.0'\n-221CD0 Created OS            00 (0) 'MS-DOS'\n-221CD1 Extract Zip Spec      14 (20) '2.0'\n-221CD2 Extract OS            00 (0) 'MS-DOS'\n-221CD3 General Purpose Flag  0808 (2056)\n+2236CE CENTRAL HEADER #685   02014B50 (33639248)\n+2236D2 Created Zip Spec      14 (20) '2.0'\n+2236D3 Created OS            00 (0) 'MS-DOS'\n+2236D4 Extract Zip Spec      14 (20) '2.0'\n+2236D5 Extract OS            00 (0) 'MS-DOS'\n+2236D6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221CD5 Compression Method    0008 (8) 'Deflated'\n-221CD7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221CDB CRC                   00000000 (0)\n-221CDF Compressed Size       00000002 (2)\n-221CE3 Uncompressed Size     00000000 (0)\n-221CE7 Filename Length       002E (46)\n-221CE9 Extra Length          0000 (0)\n-221CEB Comment Length        0000 (0)\n-221CED Disk Start            0000 (0)\n-221CEF Int File Attributes   0000 (0)\n+2236D8 Compression Method    0008 (8) 'Deflated'\n+2236DA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2236DE CRC                   00000000 (0)\n+2236E2 Compressed Size       00000002 (2)\n+2236E6 Uncompressed Size     00000000 (0)\n+2236EA Filename Length       0029 (41)\n+2236EC Extra Length          0000 (0)\n+2236EE Comment Length        0000 (0)\n+2236F0 Disk Start            0000 (0)\n+2236F2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221CF1 Ext File Attributes   00000000 (0)\n-221CF5 Local Header Offset   0009A46B (631915)\n-221CF9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2236F4 Ext File Attributes   00000000 (0)\n+2236F8 Local Header Offset   000CACB9 (830649)\n+2236FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221CF9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2236FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221D27 CENTRAL HEADER #686   02014B50 (33639248)\n-221D2B Created Zip Spec      14 (20) '2.0'\n-221D2C Created OS            00 (0) 'MS-DOS'\n-221D2D Extract Zip Spec      14 (20) '2.0'\n-221D2E Extract OS            00 (0) 'MS-DOS'\n-221D2F General Purpose Flag  0808 (2056)\n+223725 CENTRAL HEADER #686   02014B50 (33639248)\n+223729 Created Zip Spec      14 (20) '2.0'\n+22372A Created OS            00 (0) 'MS-DOS'\n+22372B Extract Zip Spec      14 (20) '2.0'\n+22372C Extract OS            00 (0) 'MS-DOS'\n+22372D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221D31 Compression Method    0008 (8) 'Deflated'\n-221D33 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221D37 CRC                   A445CFD0 (2756038608)\n-221D3B Compressed Size       00000303 (771)\n-221D3F Uncompressed Size     0000090C (2316)\n-221D43 Filename Length       004D (77)\n-221D45 Extra Length          0000 (0)\n-221D47 Comment Length        0000 (0)\n-221D49 Disk Start            0000 (0)\n-221D4B Int File Attributes   0000 (0)\n+22372F Compression Method    0008 (8) 'Deflated'\n+223731 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223735 CRC                   6E137A75 (1846770293)\n+223739 Compressed Size       00001044 (4164)\n+22373D Uncompressed Size     000050EF (20719)\n+223741 Filename Length       003B (59)\n+223743 Extra Length          0000 (0)\n+223745 Comment Length        0000 (0)\n+223747 Disk Start            0000 (0)\n+223749 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221D4D Ext File Attributes   00000000 (0)\n-221D51 Local Header Offset   0009A4C9 (632009)\n-221D55 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22374B Ext File Attributes   00000000 (0)\n+22374F Local Header Offset   000CAD12 (830738)\n+223753 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221D55: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223753: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221DA2 CENTRAL HEADER #687   02014B50 (33639248)\n-221DA6 Created Zip Spec      14 (20) '2.0'\n-221DA7 Created OS            00 (0) 'MS-DOS'\n-221DA8 Extract Zip Spec      14 (20) '2.0'\n-221DA9 Extract OS            00 (0) 'MS-DOS'\n-221DAA General Purpose Flag  0808 (2056)\n+22378E CENTRAL HEADER #687   02014B50 (33639248)\n+223792 Created Zip Spec      14 (20) '2.0'\n+223793 Created OS            00 (0) 'MS-DOS'\n+223794 Extract Zip Spec      14 (20) '2.0'\n+223795 Extract OS            00 (0) 'MS-DOS'\n+223796 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221DAC Compression Method    0008 (8) 'Deflated'\n-221DAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221DB2 CRC                   00000000 (0)\n-221DB6 Compressed Size       00000002 (2)\n-221DBA Uncompressed Size     00000000 (0)\n-221DBE Filename Length       0029 (41)\n-221DC0 Extra Length          0000 (0)\n-221DC2 Comment Length        0000 (0)\n-221DC4 Disk Start            0000 (0)\n-221DC6 Int File Attributes   0000 (0)\n+223798 Compression Method    0008 (8) 'Deflated'\n+22379A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22379E CRC                   00000000 (0)\n+2237A2 Compressed Size       00000002 (2)\n+2237A6 Uncompressed Size     00000000 (0)\n+2237AA Filename Length       002B (43)\n+2237AC Extra Length          0000 (0)\n+2237AE Comment Length        0000 (0)\n+2237B0 Disk Start            0000 (0)\n+2237B2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221DC8 Ext File Attributes   00000000 (0)\n-221DCC Local Header Offset   0009A847 (632903)\n-221DD0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2237B4 Ext File Attributes   00000000 (0)\n+2237B8 Local Header Offset   000CBDBF (835007)\n+2237BC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221DD0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2237BC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221DF9 CENTRAL HEADER #688   02014B50 (33639248)\n-221DFD Created Zip Spec      14 (20) '2.0'\n-221DFE Created OS            00 (0) 'MS-DOS'\n-221DFF Extract Zip Spec      14 (20) '2.0'\n-221E00 Extract OS            00 (0) 'MS-DOS'\n-221E01 General Purpose Flag  0808 (2056)\n+2237E7 CENTRAL HEADER #688   02014B50 (33639248)\n+2237EB Created Zip Spec      14 (20) '2.0'\n+2237EC Created OS            00 (0) 'MS-DOS'\n+2237ED Extract Zip Spec      14 (20) '2.0'\n+2237EE Extract OS            00 (0) 'MS-DOS'\n+2237EF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221E03 Compression Method    0008 (8) 'Deflated'\n-221E05 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221E09 CRC                   0A4E202C (172892204)\n-221E0D Compressed Size       0000028F (655)\n-221E11 Uncompressed Size     000004DB (1243)\n-221E15 Filename Length       0046 (70)\n-221E17 Extra Length          0000 (0)\n-221E19 Comment Length        0000 (0)\n-221E1B Disk Start            0000 (0)\n-221E1D Int File Attributes   0000 (0)\n+2237F1 Compression Method    0008 (8) 'Deflated'\n+2237F3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2237F7 CRC                   38A27EA4 (950173348)\n+2237FB Compressed Size       00000C4B (3147)\n+2237FF Uncompressed Size     00002E18 (11800)\n+223803 Filename Length       003D (61)\n+223805 Extra Length          0000 (0)\n+223807 Comment Length        0000 (0)\n+223809 Disk Start            0000 (0)\n+22380B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221E1F Ext File Attributes   00000000 (0)\n-221E23 Local Header Offset   0009A8A0 (632992)\n-221E27 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22380D Ext File Attributes   00000000 (0)\n+223811 Local Header Offset   000CBE1A (835098)\n+223815 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221E27: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223815: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221E6D CENTRAL HEADER #689   02014B50 (33639248)\n-221E71 Created Zip Spec      14 (20) '2.0'\n-221E72 Created OS            00 (0) 'MS-DOS'\n-221E73 Extract Zip Spec      14 (20) '2.0'\n-221E74 Extract OS            00 (0) 'MS-DOS'\n-221E75 General Purpose Flag  0808 (2056)\n+223852 CENTRAL HEADER #689   02014B50 (33639248)\n+223856 Created Zip Spec      14 (20) '2.0'\n+223857 Created OS            00 (0) 'MS-DOS'\n+223858 Extract Zip Spec      14 (20) '2.0'\n+223859 Extract OS            00 (0) 'MS-DOS'\n+22385A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221E77 Compression Method    0008 (8) 'Deflated'\n-221E79 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221E7D CRC                   00000000 (0)\n-221E81 Compressed Size       00000002 (2)\n-221E85 Uncompressed Size     00000000 (0)\n-221E89 Filename Length       002B (43)\n-221E8B Extra Length          0000 (0)\n-221E8D Comment Length        0000 (0)\n-221E8F Disk Start            0000 (0)\n-221E91 Int File Attributes   0000 (0)\n+22385C Compression Method    0008 (8) 'Deflated'\n+22385E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223862 CRC                   8AF6C6B7 (2331428535)\n+223866 Compressed Size       000002B3 (691)\n+22386A Uncompressed Size     000005BB (1467)\n+22386E Filename Length       0046 (70)\n+223870 Extra Length          0000 (0)\n+223872 Comment Length        0000 (0)\n+223874 Disk Start            0000 (0)\n+223876 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221E93 Ext File Attributes   00000000 (0)\n-221E97 Local Header Offset   0009ABA3 (633763)\n-221E9B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223878 Ext File Attributes   00000000 (0)\n+22387C Local Header Offset   000CCAD0 (838352)\n+223880 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221E9B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223880: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221EC6 CENTRAL HEADER #690   02014B50 (33639248)\n-221ECA Created Zip Spec      14 (20) '2.0'\n-221ECB Created OS            00 (0) 'MS-DOS'\n-221ECC Extract Zip Spec      14 (20) '2.0'\n-221ECD Extract OS            00 (0) 'MS-DOS'\n-221ECE General Purpose Flag  0808 (2056)\n+2238C6 CENTRAL HEADER #690   02014B50 (33639248)\n+2238CA Created Zip Spec      14 (20) '2.0'\n+2238CB Created OS            00 (0) 'MS-DOS'\n+2238CC Extract Zip Spec      14 (20) '2.0'\n+2238CD Extract OS            00 (0) 'MS-DOS'\n+2238CE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221ED0 Compression Method    0008 (8) 'Deflated'\n-221ED2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221ED6 CRC                   6D3F9D1E (1832885534)\n-221EDA Compressed Size       000008A8 (2216)\n-221EDE Uncompressed Size     00001E30 (7728)\n-221EE2 Filename Length       0049 (73)\n-221EE4 Extra Length          0000 (0)\n-221EE6 Comment Length        0000 (0)\n-221EE8 Disk Start            0000 (0)\n-221EEA Int File Attributes   0000 (0)\n+2238D0 Compression Method    0008 (8) 'Deflated'\n+2238D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2238D6 CRC                   2C68D340 (745067328)\n+2238DA Compressed Size       0000043C (1084)\n+2238DE Uncompressed Size     00001165 (4453)\n+2238E2 Filename Length       0049 (73)\n+2238E4 Extra Length          0000 (0)\n+2238E6 Comment Length        0000 (0)\n+2238E8 Disk Start            0000 (0)\n+2238EA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221EEC Ext File Attributes   00000000 (0)\n-221EF0 Local Header Offset   0009ABFE (633854)\n-221EF4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2238EC Ext File Attributes   00000000 (0)\n+2238F0 Local Header Offset   000CCDF7 (839159)\n+2238F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221EF4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2238F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221F3D CENTRAL HEADER #691   02014B50 (33639248)\n-221F41 Created Zip Spec      14 (20) '2.0'\n-221F42 Created OS            00 (0) 'MS-DOS'\n-221F43 Extract Zip Spec      14 (20) '2.0'\n-221F44 Extract OS            00 (0) 'MS-DOS'\n-221F45 General Purpose Flag  0808 (2056)\n+22393D CENTRAL HEADER #691   02014B50 (33639248)\n+223941 Created Zip Spec      14 (20) '2.0'\n+223942 Created OS            00 (0) 'MS-DOS'\n+223943 Extract Zip Spec      14 (20) '2.0'\n+223944 Extract OS            00 (0) 'MS-DOS'\n+223945 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221F47 Compression Method    0008 (8) 'Deflated'\n-221F49 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221F4D CRC                   355480AB (894730411)\n-221F51 Compressed Size       00000414 (1044)\n-221F55 Uncompressed Size     00000919 (2329)\n-221F59 Filename Length       0042 (66)\n-221F5B Extra Length          0000 (0)\n-221F5D Comment Length        0000 (0)\n-221F5F Disk Start            0000 (0)\n-221F61 Int File Attributes   0000 (0)\n+223947 Compression Method    0008 (8) 'Deflated'\n+223949 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22394D CRC                   C14E1F5D (3243122525)\n+223951 Compressed Size       000003EC (1004)\n+223955 Uncompressed Size     00000DD5 (3541)\n+223959 Filename Length       0046 (70)\n+22395B Extra Length          0000 (0)\n+22395D Comment Length        0000 (0)\n+22395F Disk Start            0000 (0)\n+223961 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221F63 Ext File Attributes   00000000 (0)\n-221F67 Local Header Offset   0009B51D (636189)\n-221F6B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223963 Ext File Attributes   00000000 (0)\n+223967 Local Header Offset   000CD2AA (840362)\n+22396B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221F6B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22396B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-221FAD CENTRAL HEADER #692   02014B50 (33639248)\n-221FB1 Created Zip Spec      14 (20) '2.0'\n-221FB2 Created OS            00 (0) 'MS-DOS'\n-221FB3 Extract Zip Spec      14 (20) '2.0'\n-221FB4 Extract OS            00 (0) 'MS-DOS'\n-221FB5 General Purpose Flag  0808 (2056)\n+2239B1 CENTRAL HEADER #692   02014B50 (33639248)\n+2239B5 Created Zip Spec      14 (20) '2.0'\n+2239B6 Created OS            00 (0) 'MS-DOS'\n+2239B7 Extract Zip Spec      14 (20) '2.0'\n+2239B8 Extract OS            00 (0) 'MS-DOS'\n+2239B9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-221FB7 Compression Method    0008 (8) 'Deflated'\n-221FB9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-221FBD CRC                   47FCDE13 (1207754259)\n-221FC1 Compressed Size       00000343 (835)\n-221FC5 Uncompressed Size     000007FA (2042)\n-221FC9 Filename Length       0034 (52)\n-221FCB Extra Length          0000 (0)\n-221FCD Comment Length        0000 (0)\n-221FCF Disk Start            0000 (0)\n-221FD1 Int File Attributes   0000 (0)\n+2239BB Compression Method    0008 (8) 'Deflated'\n+2239BD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2239C1 CRC                   0593378C (93534092)\n+2239C5 Compressed Size       0000037E (894)\n+2239C9 Uncompressed Size     000009B6 (2486)\n+2239CD Filename Length       003C (60)\n+2239CF Extra Length          0000 (0)\n+2239D1 Comment Length        0000 (0)\n+2239D3 Disk Start            0000 (0)\n+2239D5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-221FD3 Ext File Attributes   00000000 (0)\n-221FD7 Local Header Offset   0009B9A1 (637345)\n-221FDB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2239D7 Ext File Attributes   00000000 (0)\n+2239DB Local Header Offset   000CD70A (841482)\n+2239DF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x221FDB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2239DF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22200F CENTRAL HEADER #693   02014B50 (33639248)\n-222013 Created Zip Spec      14 (20) '2.0'\n-222014 Created OS            00 (0) 'MS-DOS'\n-222015 Extract Zip Spec      14 (20) '2.0'\n-222016 Extract OS            00 (0) 'MS-DOS'\n-222017 General Purpose Flag  0808 (2056)\n+223A1B CENTRAL HEADER #693   02014B50 (33639248)\n+223A1F Created Zip Spec      14 (20) '2.0'\n+223A20 Created OS            00 (0) 'MS-DOS'\n+223A21 Extract Zip Spec      14 (20) '2.0'\n+223A22 Extract OS            00 (0) 'MS-DOS'\n+223A23 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222019 Compression Method    0008 (8) 'Deflated'\n-22201B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22201F CRC                   00000000 (0)\n-222023 Compressed Size       00000002 (2)\n-222027 Uncompressed Size     00000000 (0)\n-22202B Filename Length       002B (43)\n-22202D Extra Length          0000 (0)\n-22202F Comment Length        0000 (0)\n-222031 Disk Start            0000 (0)\n-222033 Int File Attributes   0000 (0)\n+223A25 Compression Method    0008 (8) 'Deflated'\n+223A27 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223A2B CRC                   B40DC99A (3020802458)\n+223A2F Compressed Size       0000028D (653)\n+223A33 Uncompressed Size     00000516 (1302)\n+223A37 Filename Length       0037 (55)\n+223A39 Extra Length          0000 (0)\n+223A3B Comment Length        0000 (0)\n+223A3D Disk Start            0000 (0)\n+223A3F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222035 Ext File Attributes   00000000 (0)\n-222039 Local Header Offset   0009BD46 (638278)\n-22203D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223A41 Ext File Attributes   00000000 (0)\n+223A45 Local Header Offset   000CDAF2 (842482)\n+223A49 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22203D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223A49: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222068 CENTRAL HEADER #694   02014B50 (33639248)\n-22206C Created Zip Spec      14 (20) '2.0'\n-22206D Created OS            00 (0) 'MS-DOS'\n-22206E Extract Zip Spec      14 (20) '2.0'\n-22206F Extract OS            00 (0) 'MS-DOS'\n-222070 General Purpose Flag  0808 (2056)\n+223A80 CENTRAL HEADER #694   02014B50 (33639248)\n+223A84 Created Zip Spec      14 (20) '2.0'\n+223A85 Created OS            00 (0) 'MS-DOS'\n+223A86 Extract Zip Spec      14 (20) '2.0'\n+223A87 Extract OS            00 (0) 'MS-DOS'\n+223A88 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222072 Compression Method    0008 (8) 'Deflated'\n-222074 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222078 CRC                   A9E4FF87 (2850357127)\n-22207C Compressed Size       0000080E (2062)\n-222080 Uncompressed Size     00001767 (5991)\n-222084 Filename Length       0045 (69)\n-222086 Extra Length          0000 (0)\n-222088 Comment Length        0000 (0)\n-22208A Disk Start            0000 (0)\n-22208C Int File Attributes   0000 (0)\n+223A8A Compression Method    0008 (8) 'Deflated'\n+223A8C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223A90 CRC                   27689F2C (661167916)\n+223A94 Compressed Size       0000041D (1053)\n+223A98 Uncompressed Size     00000AAA (2730)\n+223A9C Filename Length       0041 (65)\n+223A9E Extra Length          0000 (0)\n+223AA0 Comment Length        0000 (0)\n+223AA2 Disk Start            0000 (0)\n+223AA4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22208E Ext File Attributes   00000000 (0)\n-222092 Local Header Offset   0009BDA1 (638369)\n-222096 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223AA6 Ext File Attributes   00000000 (0)\n+223AAA Local Header Offset   000CDDE4 (843236)\n+223AAE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222096: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223AAE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2220DB CENTRAL HEADER #695   02014B50 (33639248)\n-2220DF Created Zip Spec      14 (20) '2.0'\n-2220E0 Created OS            00 (0) 'MS-DOS'\n-2220E1 Extract Zip Spec      14 (20) '2.0'\n-2220E2 Extract OS            00 (0) 'MS-DOS'\n-2220E3 General Purpose Flag  0808 (2056)\n+223AEF CENTRAL HEADER #695   02014B50 (33639248)\n+223AF3 Created Zip Spec      14 (20) '2.0'\n+223AF4 Created OS            00 (0) 'MS-DOS'\n+223AF5 Extract Zip Spec      14 (20) '2.0'\n+223AF6 Extract OS            00 (0) 'MS-DOS'\n+223AF7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2220E5 Compression Method    0008 (8) 'Deflated'\n-2220E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2220EB CRC                   00000000 (0)\n-2220EF Compressed Size       00000002 (2)\n-2220F3 Uncompressed Size     00000000 (0)\n-2220F7 Filename Length       0032 (50)\n-2220F9 Extra Length          0000 (0)\n-2220FB Comment Length        0000 (0)\n-2220FD Disk Start            0000 (0)\n-2220FF Int File Attributes   0000 (0)\n+223AF9 Compression Method    0008 (8) 'Deflated'\n+223AFB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223AFF CRC                   00000000 (0)\n+223B03 Compressed Size       00000002 (2)\n+223B07 Uncompressed Size     00000000 (0)\n+223B0B Filename Length       0032 (50)\n+223B0D Extra Length          0000 (0)\n+223B0F Comment Length        0000 (0)\n+223B11 Disk Start            0000 (0)\n+223B13 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222101 Ext File Attributes   00000000 (0)\n-222105 Local Header Offset   0009C622 (640546)\n-222109 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223B15 Ext File Attributes   00000000 (0)\n+223B19 Local Header Offset   000CE270 (844400)\n+223B1D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222109: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223B1D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22213B CENTRAL HEADER #696   02014B50 (33639248)\n-22213F Created Zip Spec      14 (20) '2.0'\n-222140 Created OS            00 (0) 'MS-DOS'\n-222141 Extract Zip Spec      14 (20) '2.0'\n-222142 Extract OS            00 (0) 'MS-DOS'\n-222143 General Purpose Flag  0808 (2056)\n+223B4F CENTRAL HEADER #696   02014B50 (33639248)\n+223B53 Created Zip Spec      14 (20) '2.0'\n+223B54 Created OS            00 (0) 'MS-DOS'\n+223B55 Extract Zip Spec      14 (20) '2.0'\n+223B56 Extract OS            00 (0) 'MS-DOS'\n+223B57 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222145 Compression Method    0008 (8) 'Deflated'\n-222147 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22214B CRC                   7C2CDC15 (2083314709)\n-22214F Compressed Size       00000444 (1092)\n-222153 Uncompressed Size     00000C7D (3197)\n-222157 Filename Length       0047 (71)\n-222159 Extra Length          0000 (0)\n-22215B Comment Length        0000 (0)\n-22215D Disk Start            0000 (0)\n-22215F Int File Attributes   0000 (0)\n+223B59 Compression Method    0008 (8) 'Deflated'\n+223B5B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223B5F CRC                   E73F3737 (3879679799)\n+223B63 Compressed Size       0000044D (1101)\n+223B67 Uncompressed Size     00000B9F (2975)\n+223B6B Filename Length       0048 (72)\n+223B6D Extra Length          0000 (0)\n+223B6F Comment Length        0000 (0)\n+223B71 Disk Start            0000 (0)\n+223B73 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222161 Ext File Attributes   00000000 (0)\n-222165 Local Header Offset   0009C684 (640644)\n-222169 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223B75 Ext File Attributes   00000000 (0)\n+223B79 Local Header Offset   000CE2D2 (844498)\n+223B7D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222169: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223B7D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2221B0 CENTRAL HEADER #697   02014B50 (33639248)\n-2221B4 Created Zip Spec      14 (20) '2.0'\n-2221B5 Created OS            00 (0) 'MS-DOS'\n-2221B6 Extract Zip Spec      14 (20) '2.0'\n-2221B7 Extract OS            00 (0) 'MS-DOS'\n-2221B8 General Purpose Flag  0808 (2056)\n+223BC5 CENTRAL HEADER #697   02014B50 (33639248)\n+223BC9 Created Zip Spec      14 (20) '2.0'\n+223BCA Created OS            00 (0) 'MS-DOS'\n+223BCB Extract Zip Spec      14 (20) '2.0'\n+223BCC Extract OS            00 (0) 'MS-DOS'\n+223BCD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2221BA Compression Method    0008 (8) 'Deflated'\n-2221BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2221C0 CRC                   00000000 (0)\n-2221C4 Compressed Size       00000002 (2)\n-2221C8 Uncompressed Size     00000000 (0)\n-2221CC Filename Length       0031 (49)\n-2221CE Extra Length          0000 (0)\n-2221D0 Comment Length        0000 (0)\n-2221D2 Disk Start            0000 (0)\n-2221D4 Int File Attributes   0000 (0)\n+223BCF Compression Method    0008 (8) 'Deflated'\n+223BD1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223BD5 CRC                   BC922CD8 (3163696344)\n+223BD9 Compressed Size       000003AE (942)\n+223BDD Uncompressed Size     00000890 (2192)\n+223BE1 Filename Length       0045 (69)\n+223BE3 Extra Length          0000 (0)\n+223BE5 Comment Length        0000 (0)\n+223BE7 Disk Start            0000 (0)\n+223BE9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2221D6 Ext File Attributes   00000000 (0)\n-2221DA Local Header Offset   0009CB3D (641853)\n-2221DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223BEB Ext File Attributes   00000000 (0)\n+223BEF Local Header Offset   000CE795 (845717)\n+223BF3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2221DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223BF3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22220F CENTRAL HEADER #698   02014B50 (33639248)\n-222213 Created Zip Spec      14 (20) '2.0'\n-222214 Created OS            00 (0) 'MS-DOS'\n-222215 Extract Zip Spec      14 (20) '2.0'\n-222216 Extract OS            00 (0) 'MS-DOS'\n-222217 General Purpose Flag  0808 (2056)\n+223C38 CENTRAL HEADER #698   02014B50 (33639248)\n+223C3C Created Zip Spec      14 (20) '2.0'\n+223C3D Created OS            00 (0) 'MS-DOS'\n+223C3E Extract Zip Spec      14 (20) '2.0'\n+223C3F Extract OS            00 (0) 'MS-DOS'\n+223C40 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222219 Compression Method    0008 (8) 'Deflated'\n-22221B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22221F CRC                   DF3FC6E9 (3745498857)\n-222223 Compressed Size       00000418 (1048)\n-222227 Uncompressed Size     00000BC1 (3009)\n-22222B Filename Length       0045 (69)\n-22222D Extra Length          0000 (0)\n-22222F Comment Length        0000 (0)\n-222231 Disk Start            0000 (0)\n-222233 Int File Attributes   0000 (0)\n+223C42 Compression Method    0008 (8) 'Deflated'\n+223C44 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223C48 CRC                   B13FDACC (2973752012)\n+223C4C Compressed Size       0000081E (2078)\n+223C50 Uncompressed Size     0000217A (8570)\n+223C54 Filename Length       004C (76)\n+223C56 Extra Length          0000 (0)\n+223C58 Comment Length        0000 (0)\n+223C5A Disk Start            0000 (0)\n+223C5C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222235 Ext File Attributes   00000000 (0)\n-222239 Local Header Offset   0009CB9E (641950)\n-22223D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223C5E Ext File Attributes   00000000 (0)\n+223C62 Local Header Offset   000CEBB6 (846774)\n+223C66 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22223D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223C66: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222282 CENTRAL HEADER #699   02014B50 (33639248)\n-222286 Created Zip Spec      14 (20) '2.0'\n-222287 Created OS            00 (0) 'MS-DOS'\n-222288 Extract Zip Spec      14 (20) '2.0'\n-222289 Extract OS            00 (0) 'MS-DOS'\n-22228A General Purpose Flag  0808 (2056)\n+223CB2 CENTRAL HEADER #699   02014B50 (33639248)\n+223CB6 Created Zip Spec      14 (20) '2.0'\n+223CB7 Created OS            00 (0) 'MS-DOS'\n+223CB8 Extract Zip Spec      14 (20) '2.0'\n+223CB9 Extract OS            00 (0) 'MS-DOS'\n+223CBA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22228C Compression Method    0008 (8) 'Deflated'\n-22228E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222292 CRC                   B7E8049A (3085436058)\n-222296 Compressed Size       00000487 (1159)\n-22229A Uncompressed Size     00000CBE (3262)\n-22229E Filename Length       004D (77)\n-2222A0 Extra Length          0000 (0)\n-2222A2 Comment Length        0000 (0)\n-2222A4 Disk Start            0000 (0)\n-2222A6 Int File Attributes   0000 (0)\n+223CBC Compression Method    0008 (8) 'Deflated'\n+223CBE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223CC2 CRC                   2FB42746 (800335686)\n+223CC6 Compressed Size       000007B7 (1975)\n+223CCA Uncompressed Size     00001E7B (7803)\n+223CCE Filename Length       004B (75)\n+223CD0 Extra Length          0000 (0)\n+223CD2 Comment Length        0000 (0)\n+223CD4 Disk Start            0000 (0)\n+223CD6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2222A8 Ext File Attributes   00000000 (0)\n-2222AC Local Header Offset   0009D029 (643113)\n-2222B0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223CD8 Ext File Attributes   00000000 (0)\n+223CDC Local Header Offset   000CF44E (848974)\n+223CE0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2222B0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223CE0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2222FD CENTRAL HEADER #700   02014B50 (33639248)\n-222301 Created Zip Spec      14 (20) '2.0'\n-222302 Created OS            00 (0) 'MS-DOS'\n-222303 Extract Zip Spec      14 (20) '2.0'\n-222304 Extract OS            00 (0) 'MS-DOS'\n-222305 General Purpose Flag  0808 (2056)\n+223D2B CENTRAL HEADER #700   02014B50 (33639248)\n+223D2F Created Zip Spec      14 (20) '2.0'\n+223D30 Created OS            00 (0) 'MS-DOS'\n+223D31 Extract Zip Spec      14 (20) '2.0'\n+223D32 Extract OS            00 (0) 'MS-DOS'\n+223D33 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222307 Compression Method    0008 (8) 'Deflated'\n-222309 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22230D CRC                   365FEBC7 (912255943)\n-222311 Compressed Size       000004A6 (1190)\n-222315 Uncompressed Size     00000B87 (2951)\n-222319 Filename Length       003F (63)\n-22231B Extra Length          0000 (0)\n-22231D Comment Length        0000 (0)\n-22231F Disk Start            0000 (0)\n-222321 Int File Attributes   0000 (0)\n+223D35 Compression Method    0008 (8) 'Deflated'\n+223D37 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223D3B CRC                   C01CAB2E (3223104302)\n+223D3F Compressed Size       000008DD (2269)\n+223D43 Uncompressed Size     0000247E (9342)\n+223D47 Filename Length       004C (76)\n+223D49 Extra Length          0000 (0)\n+223D4B Comment Length        0000 (0)\n+223D4D Disk Start            0000 (0)\n+223D4F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222323 Ext File Attributes   00000000 (0)\n-222327 Local Header Offset   0009D52B (644395)\n-22232B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223D51 Ext File Attributes   00000000 (0)\n+223D55 Local Header Offset   000CFC7E (851070)\n+223D59 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22232B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223D59: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22236A CENTRAL HEADER #701   02014B50 (33639248)\n-22236E Created Zip Spec      14 (20) '2.0'\n-22236F Created OS            00 (0) 'MS-DOS'\n-222370 Extract Zip Spec      14 (20) '2.0'\n-222371 Extract OS            00 (0) 'MS-DOS'\n-222372 General Purpose Flag  0808 (2056)\n+223DA5 CENTRAL HEADER #701   02014B50 (33639248)\n+223DA9 Created Zip Spec      14 (20) '2.0'\n+223DAA Created OS            00 (0) 'MS-DOS'\n+223DAB Extract Zip Spec      14 (20) '2.0'\n+223DAC Extract OS            00 (0) 'MS-DOS'\n+223DAD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222374 Compression Method    0008 (8) 'Deflated'\n-222376 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22237A CRC                   00000000 (0)\n-22237E Compressed Size       00000002 (2)\n-222382 Uncompressed Size     00000000 (0)\n-222386 Filename Length       0031 (49)\n-222388 Extra Length          0000 (0)\n-22238A Comment Length        0000 (0)\n-22238C Disk Start            0000 (0)\n-22238E Int File Attributes   0000 (0)\n+223DAF Compression Method    0008 (8) 'Deflated'\n+223DB1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223DB5 CRC                   6C372682 (1815553666)\n+223DB9 Compressed Size       000009AA (2474)\n+223DBD Uncompressed Size     000024E2 (9442)\n+223DC1 Filename Length       004B (75)\n+223DC3 Extra Length          0000 (0)\n+223DC5 Comment Length        0000 (0)\n+223DC7 Disk Start            0000 (0)\n+223DC9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222390 Ext File Attributes   00000000 (0)\n-222394 Local Header Offset   0009DA3E (645694)\n-222398 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223DCB Ext File Attributes   00000000 (0)\n+223DCF Local Header Offset   000D05D5 (853461)\n+223DD3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222398: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223DD3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2223C9 CENTRAL HEADER #702   02014B50 (33639248)\n-2223CD Created Zip Spec      14 (20) '2.0'\n-2223CE Created OS            00 (0) 'MS-DOS'\n-2223CF Extract Zip Spec      14 (20) '2.0'\n-2223D0 Extract OS            00 (0) 'MS-DOS'\n-2223D1 General Purpose Flag  0808 (2056)\n+223E1E CENTRAL HEADER #702   02014B50 (33639248)\n+223E22 Created Zip Spec      14 (20) '2.0'\n+223E23 Created OS            00 (0) 'MS-DOS'\n+223E24 Extract Zip Spec      14 (20) '2.0'\n+223E25 Extract OS            00 (0) 'MS-DOS'\n+223E26 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2223D3 Compression Method    0008 (8) 'Deflated'\n-2223D5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2223D9 CRC                   3EDDC0EF (1054720239)\n-2223DD Compressed Size       000003D8 (984)\n-2223E1 Uncompressed Size     00000AA3 (2723)\n-2223E5 Filename Length       0045 (69)\n-2223E7 Extra Length          0000 (0)\n-2223E9 Comment Length        0000 (0)\n-2223EB Disk Start            0000 (0)\n-2223ED Int File Attributes   0000 (0)\n+223E28 Compression Method    0008 (8) 'Deflated'\n+223E2A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223E2E CRC                   7F591FA6 (2136547238)\n+223E32 Compressed Size       000002F6 (758)\n+223E36 Uncompressed Size     0000079B (1947)\n+223E3A Filename Length       0046 (70)\n+223E3C Extra Length          0000 (0)\n+223E3E Comment Length        0000 (0)\n+223E40 Disk Start            0000 (0)\n+223E42 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2223EF Ext File Attributes   00000000 (0)\n-2223F3 Local Header Offset   0009DA9F (645791)\n-2223F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223E44 Ext File Attributes   00000000 (0)\n+223E48 Local Header Offset   000D0FF8 (856056)\n+223E4C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2223F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223E4C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22243C CENTRAL HEADER #703   02014B50 (33639248)\n-222440 Created Zip Spec      14 (20) '2.0'\n-222441 Created OS            00 (0) 'MS-DOS'\n-222442 Extract Zip Spec      14 (20) '2.0'\n-222443 Extract OS            00 (0) 'MS-DOS'\n-222444 General Purpose Flag  0808 (2056)\n+223E92 CENTRAL HEADER #703   02014B50 (33639248)\n+223E96 Created Zip Spec      14 (20) '2.0'\n+223E97 Created OS            00 (0) 'MS-DOS'\n+223E98 Extract Zip Spec      14 (20) '2.0'\n+223E99 Extract OS            00 (0) 'MS-DOS'\n+223E9A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222446 Compression Method    0008 (8) 'Deflated'\n-222448 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22244C CRC                   00000000 (0)\n-222450 Compressed Size       00000002 (2)\n-222454 Uncompressed Size     00000000 (0)\n-222458 Filename Length       0033 (51)\n-22245A Extra Length          0000 (0)\n-22245C Comment Length        0000 (0)\n-22245E Disk Start            0000 (0)\n-222460 Int File Attributes   0000 (0)\n+223E9C Compression Method    0008 (8) 'Deflated'\n+223E9E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223EA2 CRC                   BBC269CA (3150080458)\n+223EA6 Compressed Size       00000553 (1363)\n+223EAA Uncompressed Size     000011E6 (4582)\n+223EAE Filename Length       0047 (71)\n+223EB0 Extra Length          0000 (0)\n+223EB2 Comment Length        0000 (0)\n+223EB4 Disk Start            0000 (0)\n+223EB6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222462 Ext File Attributes   00000000 (0)\n-222466 Local Header Offset   0009DEEA (646890)\n-22246A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223EB8 Ext File Attributes   00000000 (0)\n+223EBC Local Header Offset   000D1362 (856930)\n+223EC0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22246A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223EC0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22249D CENTRAL HEADER #704   02014B50 (33639248)\n-2224A1 Created Zip Spec      14 (20) '2.0'\n-2224A2 Created OS            00 (0) 'MS-DOS'\n-2224A3 Extract Zip Spec      14 (20) '2.0'\n-2224A4 Extract OS            00 (0) 'MS-DOS'\n-2224A5 General Purpose Flag  0808 (2056)\n+223F07 CENTRAL HEADER #704   02014B50 (33639248)\n+223F0B Created Zip Spec      14 (20) '2.0'\n+223F0C Created OS            00 (0) 'MS-DOS'\n+223F0D Extract Zip Spec      14 (20) '2.0'\n+223F0E Extract OS            00 (0) 'MS-DOS'\n+223F0F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2224A7 Compression Method    0008 (8) 'Deflated'\n-2224A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2224AD CRC                   25691E02 (627645954)\n-2224B1 Compressed Size       00000405 (1029)\n-2224B5 Uncompressed Size     00000B75 (2933)\n-2224B9 Filename Length       0049 (73)\n-2224BB Extra Length          0000 (0)\n-2224BD Comment Length        0000 (0)\n-2224BF Disk Start            0000 (0)\n-2224C1 Int File Attributes   0000 (0)\n+223F11 Compression Method    0008 (8) 'Deflated'\n+223F13 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223F17 CRC                   CCFFACEF (3439308015)\n+223F1B Compressed Size       00000428 (1064)\n+223F1F Uncompressed Size     00000A6F (2671)\n+223F23 Filename Length       0049 (73)\n+223F25 Extra Length          0000 (0)\n+223F27 Comment Length        0000 (0)\n+223F29 Disk Start            0000 (0)\n+223F2B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2224C3 Ext File Attributes   00000000 (0)\n-2224C7 Local Header Offset   0009DF4D (646989)\n-2224CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223F2D Ext File Attributes   00000000 (0)\n+223F31 Local Header Offset   000D192A (858410)\n+223F35 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2224CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223F35: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222514 CENTRAL HEADER #705   02014B50 (33639248)\n-222518 Created Zip Spec      14 (20) '2.0'\n-222519 Created OS            00 (0) 'MS-DOS'\n-22251A Extract Zip Spec      14 (20) '2.0'\n-22251B Extract OS            00 (0) 'MS-DOS'\n-22251C General Purpose Flag  0808 (2056)\n+223F7E CENTRAL HEADER #705   02014B50 (33639248)\n+223F82 Created Zip Spec      14 (20) '2.0'\n+223F83 Created OS            00 (0) 'MS-DOS'\n+223F84 Extract Zip Spec      14 (20) '2.0'\n+223F85 Extract OS            00 (0) 'MS-DOS'\n+223F86 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22251E Compression Method    0008 (8) 'Deflated'\n-222520 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222524 CRC                   00000000 (0)\n-222528 Compressed Size       00000002 (2)\n-22252C Uncompressed Size     00000000 (0)\n-222530 Filename Length       001E (30)\n-222532 Extra Length          0000 (0)\n-222534 Comment Length        0000 (0)\n-222536 Disk Start            0000 (0)\n-222538 Int File Attributes   0000 (0)\n+223F88 Compression Method    0008 (8) 'Deflated'\n+223F8A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+223F8E CRC                   39DE0130 (970850608)\n+223F92 Compressed Size       00000430 (1072)\n+223F96 Uncompressed Size     00000AD0 (2768)\n+223F9A Filename Length       0049 (73)\n+223F9C Extra Length          0000 (0)\n+223F9E Comment Length        0000 (0)\n+223FA0 Disk Start            0000 (0)\n+223FA2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22253A Ext File Attributes   00000000 (0)\n-22253E Local Header Offset   0009E3C9 (648137)\n-222542 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+223FA4 Ext File Attributes   00000000 (0)\n+223FA8 Local Header Offset   000D1DC9 (859593)\n+223FAC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222542: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x223FAC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222560 CENTRAL HEADER #706   02014B50 (33639248)\n-222564 Created Zip Spec      14 (20) '2.0'\n-222565 Created OS            00 (0) 'MS-DOS'\n-222566 Extract Zip Spec      14 (20) '2.0'\n-222567 Extract OS            00 (0) 'MS-DOS'\n-222568 General Purpose Flag  0808 (2056)\n+223FF5 CENTRAL HEADER #706   02014B50 (33639248)\n+223FF9 Created Zip Spec      14 (20) '2.0'\n+223FFA Created OS            00 (0) 'MS-DOS'\n+223FFB Extract Zip Spec      14 (20) '2.0'\n+223FFC Extract OS            00 (0) 'MS-DOS'\n+223FFD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22256A Compression Method    0008 (8) 'Deflated'\n-22256C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222570 CRC                   15C91CF2 (365501682)\n-222574 Compressed Size       00001C34 (7220)\n-222578 Uncompressed Size     000079B9 (31161)\n-22257C Filename Length       0033 (51)\n-22257E Extra Length          0000 (0)\n-222580 Comment Length        0000 (0)\n-222582 Disk Start            0000 (0)\n-222584 Int File Attributes   0000 (0)\n+223FFF Compression Method    0008 (8) 'Deflated'\n+224001 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224005 CRC                   00000000 (0)\n+224009 Compressed Size       00000002 (2)\n+22400D Uncompressed Size     00000000 (0)\n+224011 Filename Length       0021 (33)\n+224013 Extra Length          0000 (0)\n+224015 Comment Length        0000 (0)\n+224017 Disk Start            0000 (0)\n+224019 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222586 Ext File Attributes   00000000 (0)\n-22258A Local Header Offset   0009E417 (648215)\n-22258E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22401B Ext File Attributes   00000000 (0)\n+22401F Local Header Offset   000D2270 (860784)\n+224023 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22258E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224023: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2225C1 CENTRAL HEADER #707   02014B50 (33639248)\n-2225C5 Created Zip Spec      14 (20) '2.0'\n-2225C6 Created OS            00 (0) 'MS-DOS'\n-2225C7 Extract Zip Spec      14 (20) '2.0'\n-2225C8 Extract OS            00 (0) 'MS-DOS'\n-2225C9 General Purpose Flag  0808 (2056)\n+224044 CENTRAL HEADER #707   02014B50 (33639248)\n+224048 Created Zip Spec      14 (20) '2.0'\n+224049 Created OS            00 (0) 'MS-DOS'\n+22404A Extract Zip Spec      14 (20) '2.0'\n+22404B Extract OS            00 (0) 'MS-DOS'\n+22404C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2225CB Compression Method    0008 (8) 'Deflated'\n-2225CD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2225D1 CRC                   896B8386 (2305524614)\n-2225D5 Compressed Size       000002C6 (710)\n-2225D9 Uncompressed Size     0000069C (1692)\n-2225DD Filename Length       002A (42)\n-2225DF Extra Length          0000 (0)\n-2225E1 Comment Length        0000 (0)\n-2225E3 Disk Start            0000 (0)\n-2225E5 Int File Attributes   0000 (0)\n+22404E Compression Method    0008 (8) 'Deflated'\n+224050 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224054 CRC                   1A03F22E (436466222)\n+224058 Compressed Size       0000026F (623)\n+22405C Uncompressed Size     000004DF (1247)\n+224060 Filename Length       0033 (51)\n+224062 Extra Length          0000 (0)\n+224064 Comment Length        0000 (0)\n+224066 Disk Start            0000 (0)\n+224068 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2225E7 Ext File Attributes   00000000 (0)\n-2225EB Local Header Offset   000A00AC (655532)\n-2225EF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22406A Ext File Attributes   00000000 (0)\n+22406E Local Header Offset   000D22C1 (860865)\n+224072 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2225EF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224072: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222619 CENTRAL HEADER #708   02014B50 (33639248)\n-22261D Created Zip Spec      14 (20) '2.0'\n-22261E Created OS            00 (0) 'MS-DOS'\n-22261F Extract Zip Spec      14 (20) '2.0'\n-222620 Extract OS            00 (0) 'MS-DOS'\n-222621 General Purpose Flag  0808 (2056)\n+2240A5 CENTRAL HEADER #708   02014B50 (33639248)\n+2240A9 Created Zip Spec      14 (20) '2.0'\n+2240AA Created OS            00 (0) 'MS-DOS'\n+2240AB Extract Zip Spec      14 (20) '2.0'\n+2240AC Extract OS            00 (0) 'MS-DOS'\n+2240AD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222623 Compression Method    0008 (8) 'Deflated'\n-222625 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222629 CRC                   2D8D7FE9 (764248041)\n-22262D Compressed Size       00000366 (870)\n-222631 Uncompressed Size     00000769 (1897)\n-222635 Filename Length       0028 (40)\n-222637 Extra Length          0000 (0)\n-222639 Comment Length        0000 (0)\n-22263B Disk Start            0000 (0)\n-22263D Int File Attributes   0000 (0)\n+2240AF Compression Method    0008 (8) 'Deflated'\n+2240B1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2240B5 CRC                   00000000 (0)\n+2240B9 Compressed Size       00000002 (2)\n+2240BD Uncompressed Size     00000000 (0)\n+2240C1 Filename Length       0027 (39)\n+2240C3 Extra Length          0000 (0)\n+2240C5 Comment Length        0000 (0)\n+2240C7 Disk Start            0000 (0)\n+2240C9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22263F Ext File Attributes   00000000 (0)\n-222643 Local Header Offset   000A03CA (656330)\n-222647 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2240CB Ext File Attributes   00000000 (0)\n+2240CF Local Header Offset   000D2591 (861585)\n+2240D3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222647: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2240D3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22266F CENTRAL HEADER #709   02014B50 (33639248)\n-222673 Created Zip Spec      14 (20) '2.0'\n-222674 Created OS            00 (0) 'MS-DOS'\n-222675 Extract Zip Spec      14 (20) '2.0'\n-222676 Extract OS            00 (0) 'MS-DOS'\n-222677 General Purpose Flag  0808 (2056)\n+2240FA CENTRAL HEADER #709   02014B50 (33639248)\n+2240FE Created Zip Spec      14 (20) '2.0'\n+2240FF Created OS            00 (0) 'MS-DOS'\n+224100 Extract Zip Spec      14 (20) '2.0'\n+224101 Extract OS            00 (0) 'MS-DOS'\n+224102 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222679 Compression Method    0008 (8) 'Deflated'\n-22267B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22267F CRC                   E9761FB8 (3916832696)\n-222683 Compressed Size       0000025D (605)\n-222687 Uncompressed Size     00000497 (1175)\n-22268B Filename Length       002C (44)\n-22268D Extra Length          0000 (0)\n-22268F Comment Length        0000 (0)\n-222691 Disk Start            0000 (0)\n-222693 Int File Attributes   0000 (0)\n+224104 Compression Method    0008 (8) 'Deflated'\n+224106 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22410A CRC                   DBE899CA (3689454026)\n+22410E Compressed Size       00000B09 (2825)\n+224112 Uncompressed Size     00002E6D (11885)\n+224116 Filename Length       0037 (55)\n+224118 Extra Length          0000 (0)\n+22411A Comment Length        0000 (0)\n+22411C Disk Start            0000 (0)\n+22411E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222695 Ext File Attributes   00000000 (0)\n-222699 Local Header Offset   000A0786 (657286)\n-22269D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224120 Ext File Attributes   00000000 (0)\n+224124 Local Header Offset   000D25E8 (861672)\n+224128 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22269D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224128: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2226C9 CENTRAL HEADER #710   02014B50 (33639248)\n-2226CD Created Zip Spec      14 (20) '2.0'\n-2226CE Created OS            00 (0) 'MS-DOS'\n-2226CF Extract Zip Spec      14 (20) '2.0'\n-2226D0 Extract OS            00 (0) 'MS-DOS'\n-2226D1 General Purpose Flag  0808 (2056)\n+22415F CENTRAL HEADER #710   02014B50 (33639248)\n+224163 Created Zip Spec      14 (20) '2.0'\n+224164 Created OS            00 (0) 'MS-DOS'\n+224165 Extract Zip Spec      14 (20) '2.0'\n+224166 Extract OS            00 (0) 'MS-DOS'\n+224167 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2226D3 Compression Method    0008 (8) 'Deflated'\n-2226D5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2226D9 CRC                   00000000 (0)\n-2226DD Compressed Size       00000002 (2)\n-2226E1 Uncompressed Size     00000000 (0)\n-2226E5 Filename Length       001E (30)\n-2226E7 Extra Length          0000 (0)\n-2226E9 Comment Length        0000 (0)\n-2226EB Disk Start            0000 (0)\n-2226ED Int File Attributes   0000 (0)\n+224169 Compression Method    0008 (8) 'Deflated'\n+22416B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22416F CRC                   00000000 (0)\n+224173 Compressed Size       00000002 (2)\n+224177 Uncompressed Size     00000000 (0)\n+22417B Filename Length       0029 (41)\n+22417D Extra Length          0000 (0)\n+22417F Comment Length        0000 (0)\n+224181 Disk Start            0000 (0)\n+224183 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2226EF Ext File Attributes   00000000 (0)\n-2226F3 Local Header Offset   000A0A3D (657981)\n-2226F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224185 Ext File Attributes   00000000 (0)\n+224189 Local Header Offset   000D3156 (864598)\n+22418D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2226F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22418D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222715 CENTRAL HEADER #711   02014B50 (33639248)\n-222719 Created Zip Spec      14 (20) '2.0'\n-22271A Created OS            00 (0) 'MS-DOS'\n-22271B Extract Zip Spec      14 (20) '2.0'\n-22271C Extract OS            00 (0) 'MS-DOS'\n-22271D General Purpose Flag  0808 (2056)\n+2241B6 CENTRAL HEADER #711   02014B50 (33639248)\n+2241BA Created Zip Spec      14 (20) '2.0'\n+2241BB Created OS            00 (0) 'MS-DOS'\n+2241BC Extract Zip Spec      14 (20) '2.0'\n+2241BD Extract OS            00 (0) 'MS-DOS'\n+2241BE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22271F Compression Method    0008 (8) 'Deflated'\n-222721 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222725 CRC                   24647E40 (610565696)\n-222729 Compressed Size       00000D80 (3456)\n-22272D Uncompressed Size     00005305 (21253)\n-222731 Filename Length       0032 (50)\n-222733 Extra Length          0000 (0)\n-222735 Comment Length        0000 (0)\n-222737 Disk Start            0000 (0)\n-222739 Int File Attributes   0000 (0)\n+2241C0 Compression Method    0008 (8) 'Deflated'\n+2241C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2241C6 CRC                   91FB3CEA (2449161450)\n+2241CA Compressed Size       0000028B (651)\n+2241CE Uncompressed Size     00000518 (1304)\n+2241D2 Filename Length       0032 (50)\n+2241D4 Extra Length          0000 (0)\n+2241D6 Comment Length        0000 (0)\n+2241D8 Disk Start            0000 (0)\n+2241DA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22273B Ext File Attributes   00000000 (0)\n-22273F Local Header Offset   000A0A8B (658059)\n-222743 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2241DC Ext File Attributes   00000000 (0)\n+2241E0 Local Header Offset   000D31AF (864687)\n+2241E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222743: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2241E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222775 CENTRAL HEADER #712   02014B50 (33639248)\n-222779 Created Zip Spec      14 (20) '2.0'\n-22277A Created OS            00 (0) 'MS-DOS'\n-22277B Extract Zip Spec      14 (20) '2.0'\n-22277C Extract OS            00 (0) 'MS-DOS'\n-22277D General Purpose Flag  0808 (2056)\n+224216 CENTRAL HEADER #712   02014B50 (33639248)\n+22421A Created Zip Spec      14 (20) '2.0'\n+22421B Created OS            00 (0) 'MS-DOS'\n+22421C Extract Zip Spec      14 (20) '2.0'\n+22421D Extract OS            00 (0) 'MS-DOS'\n+22421E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22277F Compression Method    0008 (8) 'Deflated'\n-222781 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222785 CRC                   9612E24D (2517819981)\n-222789 Compressed Size       000003AC (940)\n-22278D Uncompressed Size     00000936 (2358)\n-222791 Filename Length       002D (45)\n-222793 Extra Length          0000 (0)\n-222795 Comment Length        0000 (0)\n-222797 Disk Start            0000 (0)\n-222799 Int File Attributes   0000 (0)\n+224220 Compression Method    0008 (8) 'Deflated'\n+224222 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224226 CRC                   492B287D (1227565181)\n+22422A Compressed Size       0000052C (1324)\n+22422E Uncompressed Size     00000FCE (4046)\n+224232 Filename Length       0042 (66)\n+224234 Extra Length          0000 (0)\n+224236 Comment Length        0000 (0)\n+224238 Disk Start            0000 (0)\n+22423A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22279B Ext File Attributes   00000000 (0)\n-22279F Local Header Offset   000A186B (661611)\n-2227A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22423C Ext File Attributes   00000000 (0)\n+224240 Local Header Offset   000D349A (865434)\n+224244 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2227A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224244: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2227D0 CENTRAL HEADER #713   02014B50 (33639248)\n-2227D4 Created Zip Spec      14 (20) '2.0'\n-2227D5 Created OS            00 (0) 'MS-DOS'\n-2227D6 Extract Zip Spec      14 (20) '2.0'\n-2227D7 Extract OS            00 (0) 'MS-DOS'\n-2227D8 General Purpose Flag  0808 (2056)\n+224286 CENTRAL HEADER #713   02014B50 (33639248)\n+22428A Created Zip Spec      14 (20) '2.0'\n+22428B Created OS            00 (0) 'MS-DOS'\n+22428C Extract Zip Spec      14 (20) '2.0'\n+22428D Extract OS            00 (0) 'MS-DOS'\n+22428E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2227DA Compression Method    0008 (8) 'Deflated'\n-2227DC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2227E0 CRC                   40170699 (1075250841)\n-2227E4 Compressed Size       00000296 (662)\n-2227E8 Uncompressed Size     0000059E (1438)\n-2227EC Filename Length       0029 (41)\n-2227EE Extra Length          0000 (0)\n-2227F0 Comment Length        0000 (0)\n-2227F2 Disk Start            0000 (0)\n-2227F4 Int File Attributes   0000 (0)\n+224290 Compression Method    0008 (8) 'Deflated'\n+224292 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224296 CRC                   EB3BD2B9 (3946566329)\n+22429A Compressed Size       00000530 (1328)\n+22429E Uncompressed Size     0000169D (5789)\n+2242A2 Filename Length       0039 (57)\n+2242A4 Extra Length          0000 (0)\n+2242A6 Comment Length        0000 (0)\n+2242A8 Disk Start            0000 (0)\n+2242AA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2227F6 Ext File Attributes   00000000 (0)\n-2227FA Local Header Offset   000A1C72 (662642)\n-2227FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2242AC Ext File Attributes   00000000 (0)\n+2242B0 Local Header Offset   000D3A36 (866870)\n+2242B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2227FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2242B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222827 CENTRAL HEADER #714   02014B50 (33639248)\n-22282B Created Zip Spec      14 (20) '2.0'\n-22282C Created OS            00 (0) 'MS-DOS'\n-22282D Extract Zip Spec      14 (20) '2.0'\n-22282E Extract OS            00 (0) 'MS-DOS'\n-22282F General Purpose Flag  0808 (2056)\n+2242ED CENTRAL HEADER #714   02014B50 (33639248)\n+2242F1 Created Zip Spec      14 (20) '2.0'\n+2242F2 Created OS            00 (0) 'MS-DOS'\n+2242F3 Extract Zip Spec      14 (20) '2.0'\n+2242F4 Extract OS            00 (0) 'MS-DOS'\n+2242F5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222831 Compression Method    0008 (8) 'Deflated'\n-222833 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222837 CRC                   A604EAF8 (2785340152)\n-22283B Compressed Size       000004E6 (1254)\n-22283F Uncompressed Size     00001249 (4681)\n-222843 Filename Length       0038 (56)\n-222845 Extra Length          0000 (0)\n-222847 Comment Length        0000 (0)\n-222849 Disk Start            0000 (0)\n-22284B Int File Attributes   0000 (0)\n+2242F7 Compression Method    0008 (8) 'Deflated'\n+2242F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2242FD CRC                   00000000 (0)\n+224301 Compressed Size       00000002 (2)\n+224305 Uncompressed Size     00000000 (0)\n+224309 Filename Length       0031 (49)\n+22430B Extra Length          0000 (0)\n+22430D Comment Length        0000 (0)\n+22430F Disk Start            0000 (0)\n+224311 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22284D Ext File Attributes   00000000 (0)\n-222851 Local Header Offset   000A1F5F (663391)\n-222855 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224313 Ext File Attributes   00000000 (0)\n+224317 Local Header Offset   000D3FCD (868301)\n+22431B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222855: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22431B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22288D CENTRAL HEADER #715   02014B50 (33639248)\n-222891 Created Zip Spec      14 (20) '2.0'\n-222892 Created OS            00 (0) 'MS-DOS'\n-222893 Extract Zip Spec      14 (20) '2.0'\n-222894 Extract OS            00 (0) 'MS-DOS'\n-222895 General Purpose Flag  0808 (2056)\n+22434C CENTRAL HEADER #715   02014B50 (33639248)\n+224350 Created Zip Spec      14 (20) '2.0'\n+224351 Created OS            00 (0) 'MS-DOS'\n+224352 Extract Zip Spec      14 (20) '2.0'\n+224353 Extract OS            00 (0) 'MS-DOS'\n+224354 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222897 Compression Method    0008 (8) 'Deflated'\n-222899 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22289D CRC                   D7EB77B9 (3622533049)\n-2228A1 Compressed Size       00000731 (1841)\n-2228A5 Uncompressed Size     0000137A (4986)\n-2228A9 Filename Length       002C (44)\n-2228AB Extra Length          0000 (0)\n-2228AD Comment Length        0000 (0)\n-2228AF Disk Start            0000 (0)\n-2228B1 Int File Attributes   0000 (0)\n+224356 Compression Method    0008 (8) 'Deflated'\n+224358 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22435C CRC                   74498D23 (1950977315)\n+224360 Compressed Size       0000034E (846)\n+224364 Uncompressed Size     00000738 (1848)\n+224368 Filename Length       0048 (72)\n+22436A Extra Length          0000 (0)\n+22436C Comment Length        0000 (0)\n+22436E Disk Start            0000 (0)\n+224370 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2228B3 Ext File Attributes   00000000 (0)\n-2228B7 Local Header Offset   000A24AB (664747)\n-2228BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224372 Ext File Attributes   00000000 (0)\n+224376 Local Header Offset   000D402E (868398)\n+22437A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2228BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22437A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2228E7 CENTRAL HEADER #716   02014B50 (33639248)\n-2228EB Created Zip Spec      14 (20) '2.0'\n-2228EC Created OS            00 (0) 'MS-DOS'\n-2228ED Extract Zip Spec      14 (20) '2.0'\n-2228EE Extract OS            00 (0) 'MS-DOS'\n-2228EF General Purpose Flag  0808 (2056)\n+2243C2 CENTRAL HEADER #716   02014B50 (33639248)\n+2243C6 Created Zip Spec      14 (20) '2.0'\n+2243C7 Created OS            00 (0) 'MS-DOS'\n+2243C8 Extract Zip Spec      14 (20) '2.0'\n+2243C9 Extract OS            00 (0) 'MS-DOS'\n+2243CA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2228F1 Compression Method    0008 (8) 'Deflated'\n-2228F3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2228F7 CRC                   95FCA49F (2516362399)\n-2228FB Compressed Size       0000029C (668)\n-2228FF Uncompressed Size     00000510 (1296)\n-222903 Filename Length       0039 (57)\n-222905 Extra Length          0000 (0)\n-222907 Comment Length        0000 (0)\n-222909 Disk Start            0000 (0)\n-22290B Int File Attributes   0000 (0)\n+2243CC Compression Method    0008 (8) 'Deflated'\n+2243CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2243D2 CRC                   C2DA4C0E (3269086222)\n+2243D6 Compressed Size       000002B1 (689)\n+2243DA Uncompressed Size     00000581 (1409)\n+2243DE Filename Length       0047 (71)\n+2243E0 Extra Length          0000 (0)\n+2243E2 Comment Length        0000 (0)\n+2243E4 Disk Start            0000 (0)\n+2243E6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22290D Ext File Attributes   00000000 (0)\n-222911 Local Header Offset   000A2C36 (666678)\n-222915 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2243E8 Ext File Attributes   00000000 (0)\n+2243EC Local Header Offset   000D43F2 (869362)\n+2243F0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222915: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2243F0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22294E CENTRAL HEADER #717   02014B50 (33639248)\n-222952 Created Zip Spec      14 (20) '2.0'\n-222953 Created OS            00 (0) 'MS-DOS'\n-222954 Extract Zip Spec      14 (20) '2.0'\n-222955 Extract OS            00 (0) 'MS-DOS'\n-222956 General Purpose Flag  0808 (2056)\n+224437 CENTRAL HEADER #717   02014B50 (33639248)\n+22443B Created Zip Spec      14 (20) '2.0'\n+22443C Created OS            00 (0) 'MS-DOS'\n+22443D Extract Zip Spec      14 (20) '2.0'\n+22443E Extract OS            00 (0) 'MS-DOS'\n+22443F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222958 Compression Method    0008 (8) 'Deflated'\n-22295A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22295E CRC                   EEA257C4 (4003616708)\n-222962 Compressed Size       000006A0 (1696)\n-222966 Uncompressed Size     000015B8 (5560)\n-22296A Filename Length       002E (46)\n-22296C Extra Length          0000 (0)\n-22296E Comment Length        0000 (0)\n-222970 Disk Start            0000 (0)\n-222972 Int File Attributes   0000 (0)\n+224441 Compression Method    0008 (8) 'Deflated'\n+224443 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224447 CRC                   A166D974 (2707872116)\n+22444B Compressed Size       000004DD (1245)\n+22444F Uncompressed Size     00000E50 (3664)\n+224453 Filename Length       0047 (71)\n+224455 Extra Length          0000 (0)\n+224457 Comment Length        0000 (0)\n+224459 Disk Start            0000 (0)\n+22445B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222974 Ext File Attributes   00000000 (0)\n-222978 Local Header Offset   000A2F39 (667449)\n-22297C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22445D Ext File Attributes   00000000 (0)\n+224461 Local Header Offset   000D4718 (870168)\n+224465 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22297C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224465: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2229AA CENTRAL HEADER #718   02014B50 (33639248)\n-2229AE Created Zip Spec      14 (20) '2.0'\n-2229AF Created OS            00 (0) 'MS-DOS'\n-2229B0 Extract Zip Spec      14 (20) '2.0'\n-2229B1 Extract OS            00 (0) 'MS-DOS'\n-2229B2 General Purpose Flag  0808 (2056)\n+2244AC CENTRAL HEADER #718   02014B50 (33639248)\n+2244B0 Created Zip Spec      14 (20) '2.0'\n+2244B1 Created OS            00 (0) 'MS-DOS'\n+2244B2 Extract Zip Spec      14 (20) '2.0'\n+2244B3 Extract OS            00 (0) 'MS-DOS'\n+2244B4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2229B4 Compression Method    0008 (8) 'Deflated'\n-2229B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2229BA CRC                   54F0EEAE (1425075886)\n-2229BE Compressed Size       00001158 (4440)\n-2229C2 Uncompressed Size     00004623 (17955)\n-2229C6 Filename Length       002D (45)\n-2229C8 Extra Length          0000 (0)\n-2229CA Comment Length        0000 (0)\n-2229CC Disk Start            0000 (0)\n-2229CE Int File Attributes   0000 (0)\n+2244B6 Compression Method    0008 (8) 'Deflated'\n+2244B8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2244BC CRC                   07F19A54 (133274196)\n+2244C0 Compressed Size       000005E6 (1510)\n+2244C4 Uncompressed Size     000010DC (4316)\n+2244C8 Filename Length       0046 (70)\n+2244CA Extra Length          0000 (0)\n+2244CC Comment Length        0000 (0)\n+2244CE Disk Start            0000 (0)\n+2244D0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2229D0 Ext File Attributes   00000000 (0)\n-2229D4 Local Header Offset   000A3635 (669237)\n-2229D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2244D2 Ext File Attributes   00000000 (0)\n+2244D6 Local Header Offset   000D4C6A (871530)\n+2244DA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2229D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2244DA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222A05 CENTRAL HEADER #719   02014B50 (33639248)\n-222A09 Created Zip Spec      14 (20) '2.0'\n-222A0A Created OS            00 (0) 'MS-DOS'\n-222A0B Extract Zip Spec      14 (20) '2.0'\n-222A0C Extract OS            00 (0) 'MS-DOS'\n-222A0D General Purpose Flag  0808 (2056)\n+224520 CENTRAL HEADER #719   02014B50 (33639248)\n+224524 Created Zip Spec      14 (20) '2.0'\n+224525 Created OS            00 (0) 'MS-DOS'\n+224526 Extract Zip Spec      14 (20) '2.0'\n+224527 Extract OS            00 (0) 'MS-DOS'\n+224528 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222A0F Compression Method    0008 (8) 'Deflated'\n-222A11 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222A15 CRC                   49173B6A (1226259306)\n-222A19 Compressed Size       00000B30 (2864)\n-222A1D Uncompressed Size     00002D62 (11618)\n-222A21 Filename Length       0032 (50)\n-222A23 Extra Length          0000 (0)\n-222A25 Comment Length        0000 (0)\n-222A27 Disk Start            0000 (0)\n-222A29 Int File Attributes   0000 (0)\n+22452A Compression Method    0008 (8) 'Deflated'\n+22452C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224530 CRC                   F5209683 (4112553603)\n+224534 Compressed Size       0000058D (1421)\n+224538 Uncompressed Size     00001210 (4624)\n+22453C Filename Length       0049 (73)\n+22453E Extra Length          0000 (0)\n+224540 Comment Length        0000 (0)\n+224542 Disk Start            0000 (0)\n+224544 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222A2B Ext File Attributes   00000000 (0)\n-222A2F Local Header Offset   000A47E8 (673768)\n-222A33 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224546 Ext File Attributes   00000000 (0)\n+22454A Local Header Offset   000D52C4 (873156)\n+22454E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222A33: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22454E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222A65 CENTRAL HEADER #720   02014B50 (33639248)\n-222A69 Created Zip Spec      14 (20) '2.0'\n-222A6A Created OS            00 (0) 'MS-DOS'\n-222A6B Extract Zip Spec      14 (20) '2.0'\n-222A6C Extract OS            00 (0) 'MS-DOS'\n-222A6D General Purpose Flag  0808 (2056)\n+224597 CENTRAL HEADER #720   02014B50 (33639248)\n+22459B Created Zip Spec      14 (20) '2.0'\n+22459C Created OS            00 (0) 'MS-DOS'\n+22459D Extract Zip Spec      14 (20) '2.0'\n+22459E Extract OS            00 (0) 'MS-DOS'\n+22459F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222A6F Compression Method    0008 (8) 'Deflated'\n-222A71 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222A75 CRC                   094FFA20 (156236320)\n-222A79 Compressed Size       000008C5 (2245)\n-222A7D Uncompressed Size     0000235E (9054)\n-222A81 Filename Length       0036 (54)\n-222A83 Extra Length          0000 (0)\n-222A85 Comment Length        0000 (0)\n-222A87 Disk Start            0000 (0)\n-222A89 Int File Attributes   0000 (0)\n+2245A1 Compression Method    0008 (8) 'Deflated'\n+2245A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2245A7 CRC                   00000000 (0)\n+2245AB Compressed Size       00000002 (2)\n+2245AF Uncompressed Size     00000000 (0)\n+2245B3 Filename Length       0024 (36)\n+2245B5 Extra Length          0000 (0)\n+2245B7 Comment Length        0000 (0)\n+2245B9 Disk Start            0000 (0)\n+2245BB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222A8B Ext File Attributes   00000000 (0)\n-222A8F Local Header Offset   000A5378 (676728)\n-222A93 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2245BD Ext File Attributes   00000000 (0)\n+2245C1 Local Header Offset   000D58C8 (874696)\n+2245C5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222A93: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2245C5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222AC9 CENTRAL HEADER #721   02014B50 (33639248)\n-222ACD Created Zip Spec      14 (20) '2.0'\n-222ACE Created OS            00 (0) 'MS-DOS'\n-222ACF Extract Zip Spec      14 (20) '2.0'\n-222AD0 Extract OS            00 (0) 'MS-DOS'\n-222AD1 General Purpose Flag  0808 (2056)\n+2245E9 CENTRAL HEADER #721   02014B50 (33639248)\n+2245ED Created Zip Spec      14 (20) '2.0'\n+2245EE Created OS            00 (0) 'MS-DOS'\n+2245EF Extract Zip Spec      14 (20) '2.0'\n+2245F0 Extract OS            00 (0) 'MS-DOS'\n+2245F1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222AD3 Compression Method    0008 (8) 'Deflated'\n-222AD5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222AD9 CRC                   0EFD7C48 (251493448)\n-222ADD Compressed Size       00000593 (1427)\n-222AE1 Uncompressed Size     000011C9 (4553)\n-222AE5 Filename Length       0034 (52)\n-222AE7 Extra Length          0000 (0)\n-222AE9 Comment Length        0000 (0)\n-222AEB Disk Start            0000 (0)\n-222AED Int File Attributes   0000 (0)\n+2245F3 Compression Method    0008 (8) 'Deflated'\n+2245F5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2245F9 CRC                   A7E27376 (2816635766)\n+2245FD Compressed Size       00000352 (850)\n+224601 Uncompressed Size     0000076D (1901)\n+224605 Filename Length       0038 (56)\n+224607 Extra Length          0000 (0)\n+224609 Comment Length        0000 (0)\n+22460B Disk Start            0000 (0)\n+22460D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222AEF Ext File Attributes   00000000 (0)\n-222AF3 Local Header Offset   000A5CA1 (679073)\n-222AF7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22460F Ext File Attributes   00000000 (0)\n+224613 Local Header Offset   000D591C (874780)\n+224617 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222AF7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224617: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222B2B CENTRAL HEADER #722   02014B50 (33639248)\n-222B2F Created Zip Spec      14 (20) '2.0'\n-222B30 Created OS            00 (0) 'MS-DOS'\n-222B31 Extract Zip Spec      14 (20) '2.0'\n-222B32 Extract OS            00 (0) 'MS-DOS'\n-222B33 General Purpose Flag  0808 (2056)\n+22464F CENTRAL HEADER #722   02014B50 (33639248)\n+224653 Created Zip Spec      14 (20) '2.0'\n+224654 Created OS            00 (0) 'MS-DOS'\n+224655 Extract Zip Spec      14 (20) '2.0'\n+224656 Extract OS            00 (0) 'MS-DOS'\n+224657 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222B35 Compression Method    0008 (8) 'Deflated'\n-222B37 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222B3B CRC                   8CFD4A70 (2365409904)\n-222B3F Compressed Size       00000C76 (3190)\n-222B43 Uncompressed Size     00002FB5 (12213)\n-222B47 Filename Length       002E (46)\n-222B49 Extra Length          0000 (0)\n-222B4B Comment Length        0000 (0)\n-222B4D Disk Start            0000 (0)\n-222B4F Int File Attributes   0000 (0)\n+224659 Compression Method    0008 (8) 'Deflated'\n+22465B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22465F CRC                   28520740 (676464448)\n+224663 Compressed Size       0000032C (812)\n+224667 Uncompressed Size     00000910 (2320)\n+22466B Filename Length       0047 (71)\n+22466D Extra Length          0000 (0)\n+22466F Comment Length        0000 (0)\n+224671 Disk Start            0000 (0)\n+224673 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222B51 Ext File Attributes   00000000 (0)\n-222B55 Local Header Offset   000A6296 (680598)\n-222B59 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224675 Ext File Attributes   00000000 (0)\n+224679 Local Header Offset   000D5CD4 (875732)\n+22467D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222B59: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22467D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222B87 CENTRAL HEADER #723   02014B50 (33639248)\n-222B8B Created Zip Spec      14 (20) '2.0'\n-222B8C Created OS            00 (0) 'MS-DOS'\n-222B8D Extract Zip Spec      14 (20) '2.0'\n-222B8E Extract OS            00 (0) 'MS-DOS'\n-222B8F General Purpose Flag  0808 (2056)\n+2246C4 CENTRAL HEADER #723   02014B50 (33639248)\n+2246C8 Created Zip Spec      14 (20) '2.0'\n+2246C9 Created OS            00 (0) 'MS-DOS'\n+2246CA Extract Zip Spec      14 (20) '2.0'\n+2246CB Extract OS            00 (0) 'MS-DOS'\n+2246CC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222B91 Compression Method    0008 (8) 'Deflated'\n-222B93 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222B97 CRC                   81A24999 (2174896537)\n-222B9B Compressed Size       00000373 (883)\n-222B9F Uncompressed Size     000008A4 (2212)\n-222BA3 Filename Length       002E (46)\n-222BA5 Extra Length          0000 (0)\n-222BA7 Comment Length        0000 (0)\n-222BA9 Disk Start            0000 (0)\n-222BAB Int File Attributes   0000 (0)\n+2246CE Compression Method    0008 (8) 'Deflated'\n+2246D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2246D4 CRC                   B8E0F8E9 (3101751529)\n+2246D8 Compressed Size       000009A0 (2464)\n+2246DC Uncompressed Size     00002FAF (12207)\n+2246E0 Filename Length       0037 (55)\n+2246E2 Extra Length          0000 (0)\n+2246E4 Comment Length        0000 (0)\n+2246E6 Disk Start            0000 (0)\n+2246E8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222BAD Ext File Attributes   00000000 (0)\n-222BB1 Local Header Offset   000A6F68 (683880)\n-222BB5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2246EA Ext File Attributes   00000000 (0)\n+2246EE Local Header Offset   000D6075 (876661)\n+2246F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222BB5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2246F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222BE3 CENTRAL HEADER #724   02014B50 (33639248)\n-222BE7 Created Zip Spec      14 (20) '2.0'\n-222BE8 Created OS            00 (0) 'MS-DOS'\n-222BE9 Extract Zip Spec      14 (20) '2.0'\n-222BEA Extract OS            00 (0) 'MS-DOS'\n-222BEB General Purpose Flag  0808 (2056)\n+224729 CENTRAL HEADER #724   02014B50 (33639248)\n+22472D Created Zip Spec      14 (20) '2.0'\n+22472E Created OS            00 (0) 'MS-DOS'\n+22472F Extract Zip Spec      14 (20) '2.0'\n+224730 Extract OS            00 (0) 'MS-DOS'\n+224731 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222BED Compression Method    0008 (8) 'Deflated'\n-222BEF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222BF3 CRC                   831A7179 (2199548281)\n-222BF7 Compressed Size       0000036D (877)\n-222BFB Uncompressed Size     0000080F (2063)\n-222BFF Filename Length       0030 (48)\n-222C01 Extra Length          0000 (0)\n-222C03 Comment Length        0000 (0)\n-222C05 Disk Start            0000 (0)\n-222C07 Int File Attributes   0000 (0)\n+224733 Compression Method    0008 (8) 'Deflated'\n+224735 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224739 CRC                   191CDF67 (421322599)\n+22473D Compressed Size       0000052E (1326)\n+224741 Uncompressed Size     00001001 (4097)\n+224745 Filename Length       0036 (54)\n+224747 Extra Length          0000 (0)\n+224749 Comment Length        0000 (0)\n+22474B Disk Start            0000 (0)\n+22474D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222C09 Ext File Attributes   00000000 (0)\n-222C0D Local Header Offset   000A7337 (684855)\n-222C11 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22474F Ext File Attributes   00000000 (0)\n+224753 Local Header Offset   000D6A7A (879226)\n+224757 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222C11: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224757: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222C41 CENTRAL HEADER #725   02014B50 (33639248)\n-222C45 Created Zip Spec      14 (20) '2.0'\n-222C46 Created OS            00 (0) 'MS-DOS'\n-222C47 Extract Zip Spec      14 (20) '2.0'\n-222C48 Extract OS            00 (0) 'MS-DOS'\n-222C49 General Purpose Flag  0808 (2056)\n+22478D CENTRAL HEADER #725   02014B50 (33639248)\n+224791 Created Zip Spec      14 (20) '2.0'\n+224792 Created OS            00 (0) 'MS-DOS'\n+224793 Extract Zip Spec      14 (20) '2.0'\n+224794 Extract OS            00 (0) 'MS-DOS'\n+224795 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222C4B Compression Method    0008 (8) 'Deflated'\n-222C4D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222C51 CRC                   7319AF3E (1931063102)\n-222C55 Compressed Size       00000643 (1603)\n-222C59 Uncompressed Size     0000143D (5181)\n-222C5D Filename Length       002F (47)\n-222C5F Extra Length          0000 (0)\n-222C61 Comment Length        0000 (0)\n-222C63 Disk Start            0000 (0)\n-222C65 Int File Attributes   0000 (0)\n+224797 Compression Method    0008 (8) 'Deflated'\n+224799 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22479D CRC                   D94EDD2B (3645824299)\n+2247A1 Compressed Size       0000050B (1291)\n+2247A5 Uncompressed Size     0000108B (4235)\n+2247A9 Filename Length       0039 (57)\n+2247AB Extra Length          0000 (0)\n+2247AD Comment Length        0000 (0)\n+2247AF Disk Start            0000 (0)\n+2247B1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222C67 Ext File Attributes   00000000 (0)\n-222C6B Local Header Offset   000A7702 (685826)\n-222C6F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2247B3 Ext File Attributes   00000000 (0)\n+2247B7 Local Header Offset   000D700C (880652)\n+2247BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222C6F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2247BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222C9E CENTRAL HEADER #726   02014B50 (33639248)\n-222CA2 Created Zip Spec      14 (20) '2.0'\n-222CA3 Created OS            00 (0) 'MS-DOS'\n-222CA4 Extract Zip Spec      14 (20) '2.0'\n-222CA5 Extract OS            00 (0) 'MS-DOS'\n-222CA6 General Purpose Flag  0808 (2056)\n+2247F4 CENTRAL HEADER #726   02014B50 (33639248)\n+2247F8 Created Zip Spec      14 (20) '2.0'\n+2247F9 Created OS            00 (0) 'MS-DOS'\n+2247FA Extract Zip Spec      14 (20) '2.0'\n+2247FB Extract OS            00 (0) 'MS-DOS'\n+2247FC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222CA8 Compression Method    0008 (8) 'Deflated'\n-222CAA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222CAE CRC                   D07CEF7E (3497848702)\n-222CB2 Compressed Size       000004C5 (1221)\n-222CB6 Uncompressed Size     00001341 (4929)\n-222CBA Filename Length       002D (45)\n-222CBC Extra Length          0000 (0)\n-222CBE Comment Length        0000 (0)\n-222CC0 Disk Start            0000 (0)\n-222CC2 Int File Attributes   0000 (0)\n+2247FE Compression Method    0008 (8) 'Deflated'\n+224800 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224804 CRC                   C397571B (3281475355)\n+224808 Compressed Size       000004CB (1227)\n+22480C Uncompressed Size     00001058 (4184)\n+224810 Filename Length       0035 (53)\n+224812 Extra Length          0000 (0)\n+224814 Comment Length        0000 (0)\n+224816 Disk Start            0000 (0)\n+224818 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222CC4 Ext File Attributes   00000000 (0)\n-222CC8 Local Header Offset   000A7DA2 (687522)\n-222CCC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22481A Ext File Attributes   00000000 (0)\n+22481E Local Header Offset   000D757E (882046)\n+224822 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222CCC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224822: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222CF9 CENTRAL HEADER #727   02014B50 (33639248)\n-222CFD Created Zip Spec      14 (20) '2.0'\n-222CFE Created OS            00 (0) 'MS-DOS'\n-222CFF Extract Zip Spec      14 (20) '2.0'\n-222D00 Extract OS            00 (0) 'MS-DOS'\n-222D01 General Purpose Flag  0808 (2056)\n+224857 CENTRAL HEADER #727   02014B50 (33639248)\n+22485B Created Zip Spec      14 (20) '2.0'\n+22485C Created OS            00 (0) 'MS-DOS'\n+22485D Extract Zip Spec      14 (20) '2.0'\n+22485E Extract OS            00 (0) 'MS-DOS'\n+22485F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222D03 Compression Method    0008 (8) 'Deflated'\n-222D05 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222D09 CRC                   4E3FC833 (1312802867)\n-222D0D Compressed Size       0000024E (590)\n-222D11 Uncompressed Size     00000443 (1091)\n-222D15 Filename Length       0029 (41)\n-222D17 Extra Length          0000 (0)\n-222D19 Comment Length        0000 (0)\n-222D1B Disk Start            0000 (0)\n-222D1D Int File Attributes   0000 (0)\n+224861 Compression Method    0008 (8) 'Deflated'\n+224863 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224867 CRC                   9B1DD286 (2602422918)\n+22486B Compressed Size       00000800 (2048)\n+22486F Uncompressed Size     00001CC3 (7363)\n+224873 Filename Length       0037 (55)\n+224875 Extra Length          0000 (0)\n+224877 Comment Length        0000 (0)\n+224879 Disk Start            0000 (0)\n+22487B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222D1F Ext File Attributes   00000000 (0)\n-222D23 Local Header Offset   000A82C2 (688834)\n-222D27 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22487D Ext File Attributes   00000000 (0)\n+224881 Local Header Offset   000D7AAC (883372)\n+224885 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222D27: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224885: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222D50 CENTRAL HEADER #728   02014B50 (33639248)\n-222D54 Created Zip Spec      14 (20) '2.0'\n-222D55 Created OS            00 (0) 'MS-DOS'\n-222D56 Extract Zip Spec      14 (20) '2.0'\n-222D57 Extract OS            00 (0) 'MS-DOS'\n-222D58 General Purpose Flag  0808 (2056)\n+2248BC CENTRAL HEADER #728   02014B50 (33639248)\n+2248C0 Created Zip Spec      14 (20) '2.0'\n+2248C1 Created OS            00 (0) 'MS-DOS'\n+2248C2 Extract Zip Spec      14 (20) '2.0'\n+2248C3 Extract OS            00 (0) 'MS-DOS'\n+2248C4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222D5A Compression Method    0008 (8) 'Deflated'\n-222D5C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222D60 CRC                   7A9C058A (2057045386)\n-222D64 Compressed Size       00000815 (2069)\n-222D68 Uncompressed Size     00002117 (8471)\n-222D6C Filename Length       002A (42)\n-222D6E Extra Length          0000 (0)\n-222D70 Comment Length        0000 (0)\n-222D72 Disk Start            0000 (0)\n-222D74 Int File Attributes   0000 (0)\n+2248C6 Compression Method    0008 (8) 'Deflated'\n+2248C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2248CC CRC                   8ED687AA (2396424106)\n+2248D0 Compressed Size       000003B2 (946)\n+2248D4 Uncompressed Size     00000C9B (3227)\n+2248D8 Filename Length       0038 (56)\n+2248DA Extra Length          0000 (0)\n+2248DC Comment Length        0000 (0)\n+2248DE Disk Start            0000 (0)\n+2248E0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222D76 Ext File Attributes   00000000 (0)\n-222D7A Local Header Offset   000A8567 (689511)\n-222D7E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2248E2 Ext File Attributes   00000000 (0)\n+2248E6 Local Header Offset   000D8311 (885521)\n+2248EA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222D7E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2248EA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222DA8 CENTRAL HEADER #729   02014B50 (33639248)\n-222DAC Created Zip Spec      14 (20) '2.0'\n-222DAD Created OS            00 (0) 'MS-DOS'\n-222DAE Extract Zip Spec      14 (20) '2.0'\n-222DAF Extract OS            00 (0) 'MS-DOS'\n-222DB0 General Purpose Flag  0808 (2056)\n+224922 CENTRAL HEADER #729   02014B50 (33639248)\n+224926 Created Zip Spec      14 (20) '2.0'\n+224927 Created OS            00 (0) 'MS-DOS'\n+224928 Extract Zip Spec      14 (20) '2.0'\n+224929 Extract OS            00 (0) 'MS-DOS'\n+22492A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222DB2 Compression Method    0008 (8) 'Deflated'\n-222DB4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222DB8 CRC                   A4F19F22 (2767298338)\n-222DBC Compressed Size       000004FE (1278)\n-222DC0 Uncompressed Size     0000104C (4172)\n-222DC4 Filename Length       002A (42)\n-222DC6 Extra Length          0000 (0)\n-222DC8 Comment Length        0000 (0)\n-222DCA Disk Start            0000 (0)\n-222DCC Int File Attributes   0000 (0)\n+22492C Compression Method    0008 (8) 'Deflated'\n+22492E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224932 CRC                   3E4334ED (1044591853)\n+224936 Compressed Size       0000028A (650)\n+22493A Uncompressed Size     0000066A (1642)\n+22493E Filename Length       003E (62)\n+224940 Extra Length          0000 (0)\n+224942 Comment Length        0000 (0)\n+224944 Disk Start            0000 (0)\n+224946 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222DCE Ext File Attributes   00000000 (0)\n-222DD2 Local Header Offset   000A8DD4 (691668)\n-222DD6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224948 Ext File Attributes   00000000 (0)\n+22494C Local Header Offset   000D8729 (886569)\n+224950 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222DD6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224950: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222E00 CENTRAL HEADER #730   02014B50 (33639248)\n-222E04 Created Zip Spec      14 (20) '2.0'\n-222E05 Created OS            00 (0) 'MS-DOS'\n-222E06 Extract Zip Spec      14 (20) '2.0'\n-222E07 Extract OS            00 (0) 'MS-DOS'\n-222E08 General Purpose Flag  0808 (2056)\n+22498E CENTRAL HEADER #730   02014B50 (33639248)\n+224992 Created Zip Spec      14 (20) '2.0'\n+224993 Created OS            00 (0) 'MS-DOS'\n+224994 Extract Zip Spec      14 (20) '2.0'\n+224995 Extract OS            00 (0) 'MS-DOS'\n+224996 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222E0A Compression Method    0008 (8) 'Deflated'\n-222E0C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222E10 CRC                   E7A31A4E (3886225998)\n-222E14 Compressed Size       0000094D (2381)\n-222E18 Uncompressed Size     00002166 (8550)\n-222E1C Filename Length       002B (43)\n-222E1E Extra Length          0000 (0)\n-222E20 Comment Length        0000 (0)\n-222E22 Disk Start            0000 (0)\n-222E24 Int File Attributes   0000 (0)\n+224998 Compression Method    0008 (8) 'Deflated'\n+22499A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22499E CRC                   1F076089 (520577161)\n+2249A2 Compressed Size       00000227 (551)\n+2249A6 Uncompressed Size     000003FD (1021)\n+2249AA Filename Length       003F (63)\n+2249AC Extra Length          0000 (0)\n+2249AE Comment Length        0000 (0)\n+2249B0 Disk Start            0000 (0)\n+2249B2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222E26 Ext File Attributes   00000000 (0)\n-222E2A Local Header Offset   000A932A (693034)\n-222E2E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2249B4 Ext File Attributes   00000000 (0)\n+2249B8 Local Header Offset   000D8A1F (887327)\n+2249BC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222E2E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2249BC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222E59 CENTRAL HEADER #731   02014B50 (33639248)\n-222E5D Created Zip Spec      14 (20) '2.0'\n-222E5E Created OS            00 (0) 'MS-DOS'\n-222E5F Extract Zip Spec      14 (20) '2.0'\n-222E60 Extract OS            00 (0) 'MS-DOS'\n-222E61 General Purpose Flag  0808 (2056)\n+2249FB CENTRAL HEADER #731   02014B50 (33639248)\n+2249FF Created Zip Spec      14 (20) '2.0'\n+224A00 Created OS            00 (0) 'MS-DOS'\n+224A01 Extract Zip Spec      14 (20) '2.0'\n+224A02 Extract OS            00 (0) 'MS-DOS'\n+224A03 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222E63 Compression Method    0008 (8) 'Deflated'\n-222E65 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222E69 CRC                   139F375C (329201500)\n-222E6D Compressed Size       000003DF (991)\n-222E71 Uncompressed Size     00000BC2 (3010)\n-222E75 Filename Length       002B (43)\n-222E77 Extra Length          0000 (0)\n-222E79 Comment Length        0000 (0)\n-222E7B Disk Start            0000 (0)\n-222E7D Int File Attributes   0000 (0)\n+224A05 Compression Method    0008 (8) 'Deflated'\n+224A07 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224A0B CRC                   63B69239 (1672909369)\n+224A0F Compressed Size       00000408 (1032)\n+224A13 Uncompressed Size     00000F7F (3967)\n+224A17 Filename Length       0041 (65)\n+224A19 Extra Length          0000 (0)\n+224A1B Comment Length        0000 (0)\n+224A1D Disk Start            0000 (0)\n+224A1F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222E7F Ext File Attributes   00000000 (0)\n-222E83 Local Header Offset   000A9CD0 (695504)\n-222E87 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224A21 Ext File Attributes   00000000 (0)\n+224A25 Local Header Offset   000D8CB3 (887987)\n+224A29 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222E87: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224A29: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222EB2 CENTRAL HEADER #732   02014B50 (33639248)\n-222EB6 Created Zip Spec      14 (20) '2.0'\n-222EB7 Created OS            00 (0) 'MS-DOS'\n-222EB8 Extract Zip Spec      14 (20) '2.0'\n-222EB9 Extract OS            00 (0) 'MS-DOS'\n-222EBA General Purpose Flag  0808 (2056)\n+224A6A CENTRAL HEADER #732   02014B50 (33639248)\n+224A6E Created Zip Spec      14 (20) '2.0'\n+224A6F Created OS            00 (0) 'MS-DOS'\n+224A70 Extract Zip Spec      14 (20) '2.0'\n+224A71 Extract OS            00 (0) 'MS-DOS'\n+224A72 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222EBC Compression Method    0008 (8) 'Deflated'\n-222EBE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222EC2 CRC                   C39767CB (3281479627)\n-222EC6 Compressed Size       0000040F (1039)\n-222ECA Uncompressed Size     00000DAA (3498)\n-222ECE Filename Length       0026 (38)\n-222ED0 Extra Length          0000 (0)\n-222ED2 Comment Length        0000 (0)\n-222ED4 Disk Start            0000 (0)\n-222ED6 Int File Attributes   0000 (0)\n+224A74 Compression Method    0008 (8) 'Deflated'\n+224A76 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224A7A CRC                   DB6423CF (3680773071)\n+224A7E Compressed Size       00000405 (1029)\n+224A82 Uncompressed Size     00000DEE (3566)\n+224A86 Filename Length       0037 (55)\n+224A88 Extra Length          0000 (0)\n+224A8A Comment Length        0000 (0)\n+224A8C Disk Start            0000 (0)\n+224A8E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222ED8 Ext File Attributes   00000000 (0)\n-222EDC Local Header Offset   000AA108 (696584)\n-222EE0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224A90 Ext File Attributes   00000000 (0)\n+224A94 Local Header Offset   000D912A (889130)\n+224A98 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222EE0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224A98: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222F06 CENTRAL HEADER #733   02014B50 (33639248)\n-222F0A Created Zip Spec      14 (20) '2.0'\n-222F0B Created OS            00 (0) 'MS-DOS'\n-222F0C Extract Zip Spec      14 (20) '2.0'\n-222F0D Extract OS            00 (0) 'MS-DOS'\n-222F0E General Purpose Flag  0808 (2056)\n+224ACF CENTRAL HEADER #733   02014B50 (33639248)\n+224AD3 Created Zip Spec      14 (20) '2.0'\n+224AD4 Created OS            00 (0) 'MS-DOS'\n+224AD5 Extract Zip Spec      14 (20) '2.0'\n+224AD6 Extract OS            00 (0) 'MS-DOS'\n+224AD7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222F10 Compression Method    0008 (8) 'Deflated'\n-222F12 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222F16 CRC                   0C719C80 (208772224)\n-222F1A Compressed Size       00000307 (775)\n-222F1E Uncompressed Size     000010C1 (4289)\n-222F22 Filename Length       002C (44)\n-222F24 Extra Length          0000 (0)\n-222F26 Comment Length        0000 (0)\n-222F28 Disk Start            0000 (0)\n-222F2A Int File Attributes   0000 (0)\n+224AD9 Compression Method    0008 (8) 'Deflated'\n+224ADB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224ADF CRC                   79B32E36 (2041785910)\n+224AE3 Compressed Size       00000928 (2344)\n+224AE7 Uncompressed Size     00001E8F (7823)\n+224AEB Filename Length       0035 (53)\n+224AED Extra Length          0000 (0)\n+224AEF Comment Length        0000 (0)\n+224AF1 Disk Start            0000 (0)\n+224AF3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222F2C Ext File Attributes   00000000 (0)\n-222F30 Local Header Offset   000AA56B (697707)\n-222F34 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224AF5 Ext File Attributes   00000000 (0)\n+224AF9 Local Header Offset   000D9594 (890260)\n+224AFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222F34: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224AFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222F60 CENTRAL HEADER #734   02014B50 (33639248)\n-222F64 Created Zip Spec      14 (20) '2.0'\n-222F65 Created OS            00 (0) 'MS-DOS'\n-222F66 Extract Zip Spec      14 (20) '2.0'\n-222F67 Extract OS            00 (0) 'MS-DOS'\n-222F68 General Purpose Flag  0808 (2056)\n+224B32 CENTRAL HEADER #734   02014B50 (33639248)\n+224B36 Created Zip Spec      14 (20) '2.0'\n+224B37 Created OS            00 (0) 'MS-DOS'\n+224B38 Extract Zip Spec      14 (20) '2.0'\n+224B39 Extract OS            00 (0) 'MS-DOS'\n+224B3A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222F6A Compression Method    0008 (8) 'Deflated'\n-222F6C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222F70 CRC                   4A73FA6D (1249114733)\n-222F74 Compressed Size       00000441 (1089)\n-222F78 Uncompressed Size     000010A2 (4258)\n-222F7C Filename Length       002A (42)\n-222F7E Extra Length          0000 (0)\n-222F80 Comment Length        0000 (0)\n-222F82 Disk Start            0000 (0)\n-222F84 Int File Attributes   0000 (0)\n+224B3C Compression Method    0008 (8) 'Deflated'\n+224B3E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224B42 CRC                   5F8B1DE8 (1602952680)\n+224B46 Compressed Size       000003C5 (965)\n+224B4A Uncompressed Size     00000A0E (2574)\n+224B4E Filename Length       0036 (54)\n+224B50 Extra Length          0000 (0)\n+224B52 Comment Length        0000 (0)\n+224B54 Disk Start            0000 (0)\n+224B56 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222F86 Ext File Attributes   00000000 (0)\n-222F8A Local Header Offset   000AA8CC (698572)\n-222F8E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224B58 Ext File Attributes   00000000 (0)\n+224B5C Local Header Offset   000D9F1F (892703)\n+224B60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222F8E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224B60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-222FB8 CENTRAL HEADER #735   02014B50 (33639248)\n-222FBC Created Zip Spec      14 (20) '2.0'\n-222FBD Created OS            00 (0) 'MS-DOS'\n-222FBE Extract Zip Spec      14 (20) '2.0'\n-222FBF Extract OS            00 (0) 'MS-DOS'\n-222FC0 General Purpose Flag  0808 (2056)\n+224B96 CENTRAL HEADER #735   02014B50 (33639248)\n+224B9A Created Zip Spec      14 (20) '2.0'\n+224B9B Created OS            00 (0) 'MS-DOS'\n+224B9C Extract Zip Spec      14 (20) '2.0'\n+224B9D Extract OS            00 (0) 'MS-DOS'\n+224B9E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-222FC2 Compression Method    0008 (8) 'Deflated'\n-222FC4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-222FC8 CRC                   7D5526CA (2102732490)\n-222FCC Compressed Size       0000032E (814)\n-222FD0 Uncompressed Size     00000960 (2400)\n-222FD4 Filename Length       002E (46)\n-222FD6 Extra Length          0000 (0)\n-222FD8 Comment Length        0000 (0)\n-222FDA Disk Start            0000 (0)\n-222FDC Int File Attributes   0000 (0)\n+224BA0 Compression Method    0008 (8) 'Deflated'\n+224BA2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224BA6 CRC                   D9BD9D3A (3653082426)\n+224BAA Compressed Size       00000278 (632)\n+224BAE Uncompressed Size     00000469 (1129)\n+224BB2 Filename Length       0044 (68)\n+224BB4 Extra Length          0000 (0)\n+224BB6 Comment Length        0000 (0)\n+224BB8 Disk Start            0000 (0)\n+224BBA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-222FDE Ext File Attributes   00000000 (0)\n-222FE2 Local Header Offset   000AAD65 (699749)\n-222FE6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224BBC Ext File Attributes   00000000 (0)\n+224BC0 Local Header Offset   000DA348 (893768)\n+224BC4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x222FE6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224BC4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223014 CENTRAL HEADER #736   02014B50 (33639248)\n-223018 Created Zip Spec      14 (20) '2.0'\n-223019 Created OS            00 (0) 'MS-DOS'\n-22301A Extract Zip Spec      14 (20) '2.0'\n-22301B Extract OS            00 (0) 'MS-DOS'\n-22301C General Purpose Flag  0808 (2056)\n+224C08 CENTRAL HEADER #736   02014B50 (33639248)\n+224C0C Created Zip Spec      14 (20) '2.0'\n+224C0D Created OS            00 (0) 'MS-DOS'\n+224C0E Extract Zip Spec      14 (20) '2.0'\n+224C0F Extract OS            00 (0) 'MS-DOS'\n+224C10 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22301E Compression Method    0008 (8) 'Deflated'\n-223020 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223024 CRC                   3C2ED9BE (1009703358)\n-223028 Compressed Size       000003E9 (1001)\n-22302C Uncompressed Size     00000939 (2361)\n-223030 Filename Length       0033 (51)\n-223032 Extra Length          0000 (0)\n-223034 Comment Length        0000 (0)\n-223036 Disk Start            0000 (0)\n-223038 Int File Attributes   0000 (0)\n+224C12 Compression Method    0008 (8) 'Deflated'\n+224C14 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224C18 CRC                   78792D26 (2021207334)\n+224C1C Compressed Size       000002FE (766)\n+224C20 Uncompressed Size     000006B5 (1717)\n+224C24 Filename Length       003C (60)\n+224C26 Extra Length          0000 (0)\n+224C28 Comment Length        0000 (0)\n+224C2A Disk Start            0000 (0)\n+224C2C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22303A Ext File Attributes   00000000 (0)\n-22303E Local Header Offset   000AB0EF (700655)\n-223042 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224C2E Ext File Attributes   00000000 (0)\n+224C32 Local Header Offset   000DA632 (894514)\n+224C36 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223042: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224C36: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223075 CENTRAL HEADER #737   02014B50 (33639248)\n-223079 Created Zip Spec      14 (20) '2.0'\n-22307A Created OS            00 (0) 'MS-DOS'\n-22307B Extract Zip Spec      14 (20) '2.0'\n-22307C Extract OS            00 (0) 'MS-DOS'\n-22307D General Purpose Flag  0808 (2056)\n+224C72 CENTRAL HEADER #737   02014B50 (33639248)\n+224C76 Created Zip Spec      14 (20) '2.0'\n+224C77 Created OS            00 (0) 'MS-DOS'\n+224C78 Extract Zip Spec      14 (20) '2.0'\n+224C79 Extract OS            00 (0) 'MS-DOS'\n+224C7A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22307F Compression Method    0008 (8) 'Deflated'\n-223081 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223085 CRC                   BA95C40E (3130377230)\n-223089 Compressed Size       00000C86 (3206)\n-22308D Uncompressed Size     000039CB (14795)\n-223091 Filename Length       002E (46)\n-223093 Extra Length          0000 (0)\n-223095 Comment Length        0000 (0)\n-223097 Disk Start            0000 (0)\n-223099 Int File Attributes   0000 (0)\n+224C7C Compression Method    0008 (8) 'Deflated'\n+224C7E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224C82 CRC                   A9090E7C (2835943036)\n+224C86 Compressed Size       000003C5 (965)\n+224C8A Uncompressed Size     00000C45 (3141)\n+224C8E Filename Length       0037 (55)\n+224C90 Extra Length          0000 (0)\n+224C92 Comment Length        0000 (0)\n+224C94 Disk Start            0000 (0)\n+224C96 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22309B Ext File Attributes   00000000 (0)\n-22309F Local Header Offset   000AB539 (701753)\n-2230A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224C98 Ext File Attributes   00000000 (0)\n+224C9C Local Header Offset   000DA99A (895386)\n+224CA0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2230A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224CA0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2230D1 CENTRAL HEADER #738   02014B50 (33639248)\n-2230D5 Created Zip Spec      14 (20) '2.0'\n-2230D6 Created OS            00 (0) 'MS-DOS'\n-2230D7 Extract Zip Spec      14 (20) '2.0'\n-2230D8 Extract OS            00 (0) 'MS-DOS'\n-2230D9 General Purpose Flag  0808 (2056)\n+224CD7 CENTRAL HEADER #738   02014B50 (33639248)\n+224CDB Created Zip Spec      14 (20) '2.0'\n+224CDC Created OS            00 (0) 'MS-DOS'\n+224CDD Extract Zip Spec      14 (20) '2.0'\n+224CDE Extract OS            00 (0) 'MS-DOS'\n+224CDF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2230DB Compression Method    0008 (8) 'Deflated'\n-2230DD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2230E1 CRC                   A4EA9AD2 (2766838482)\n-2230E5 Compressed Size       00000386 (902)\n-2230E9 Uncompressed Size     0000085B (2139)\n-2230ED Filename Length       0035 (53)\n-2230EF Extra Length          0000 (0)\n-2230F1 Comment Length        0000 (0)\n-2230F3 Disk Start            0000 (0)\n-2230F5 Int File Attributes   0000 (0)\n+224CE1 Compression Method    0008 (8) 'Deflated'\n+224CE3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224CE7 CRC                   00000000 (0)\n+224CEB Compressed Size       00000002 (2)\n+224CEF Uncompressed Size     00000000 (0)\n+224CF3 Filename Length       002A (42)\n+224CF5 Extra Length          0000 (0)\n+224CF7 Comment Length        0000 (0)\n+224CF9 Disk Start            0000 (0)\n+224CFB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2230F7 Ext File Attributes   00000000 (0)\n-2230FB Local Header Offset   000AC21B (705051)\n-2230FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224CFD Ext File Attributes   00000000 (0)\n+224D01 Local Header Offset   000DADC4 (896452)\n+224D05 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2230FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224D05: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223134 CENTRAL HEADER #739   02014B50 (33639248)\n-223138 Created Zip Spec      14 (20) '2.0'\n-223139 Created OS            00 (0) 'MS-DOS'\n-22313A Extract Zip Spec      14 (20) '2.0'\n-22313B Extract OS            00 (0) 'MS-DOS'\n-22313C General Purpose Flag  0808 (2056)\n+224D2F CENTRAL HEADER #739   02014B50 (33639248)\n+224D33 Created Zip Spec      14 (20) '2.0'\n+224D34 Created OS            00 (0) 'MS-DOS'\n+224D35 Extract Zip Spec      14 (20) '2.0'\n+224D36 Extract OS            00 (0) 'MS-DOS'\n+224D37 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22313E Compression Method    0008 (8) 'Deflated'\n-223140 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223144 CRC                   90514D51 (2421247313)\n-223148 Compressed Size       0000141B (5147)\n-22314C Uncompressed Size     00005DC7 (24007)\n-223150 Filename Length       002B (43)\n-223152 Extra Length          0000 (0)\n-223154 Comment Length        0000 (0)\n-223156 Disk Start            0000 (0)\n-223158 Int File Attributes   0000 (0)\n+224D39 Compression Method    0008 (8) 'Deflated'\n+224D3B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224D3F CRC                   101D85B9 (270370233)\n+224D43 Compressed Size       000003B3 (947)\n+224D47 Uncompressed Size     0000094B (2379)\n+224D4B Filename Length       003B (59)\n+224D4D Extra Length          0000 (0)\n+224D4F Comment Length        0000 (0)\n+224D51 Disk Start            0000 (0)\n+224D53 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22315A Ext File Attributes   00000000 (0)\n-22315E Local Header Offset   000AC604 (706052)\n-223162 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224D55 Ext File Attributes   00000000 (0)\n+224D59 Local Header Offset   000DAE1E (896542)\n+224D5D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223162: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224D5D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22318D CENTRAL HEADER #740   02014B50 (33639248)\n-223191 Created Zip Spec      14 (20) '2.0'\n-223192 Created OS            00 (0) 'MS-DOS'\n-223193 Extract Zip Spec      14 (20) '2.0'\n-223194 Extract OS            00 (0) 'MS-DOS'\n-223195 General Purpose Flag  0808 (2056)\n+224D98 CENTRAL HEADER #740   02014B50 (33639248)\n+224D9C Created Zip Spec      14 (20) '2.0'\n+224D9D Created OS            00 (0) 'MS-DOS'\n+224D9E Extract Zip Spec      14 (20) '2.0'\n+224D9F Extract OS            00 (0) 'MS-DOS'\n+224DA0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223197 Compression Method    0008 (8) 'Deflated'\n-223199 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22319D CRC                   6148ED28 (1632169256)\n-2231A1 Compressed Size       00000362 (866)\n-2231A5 Uncompressed Size     00000813 (2067)\n-2231A9 Filename Length       0027 (39)\n-2231AB Extra Length          0000 (0)\n-2231AD Comment Length        0000 (0)\n-2231AF Disk Start            0000 (0)\n-2231B1 Int File Attributes   0000 (0)\n+224DA2 Compression Method    0008 (8) 'Deflated'\n+224DA4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224DA8 CRC                   7EE6D15A (2129056090)\n+224DAC Compressed Size       00000452 (1106)\n+224DB0 Uncompressed Size     00000D5E (3422)\n+224DB4 Filename Length       003D (61)\n+224DB6 Extra Length          0000 (0)\n+224DB8 Comment Length        0000 (0)\n+224DBA Disk Start            0000 (0)\n+224DBC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2231B3 Ext File Attributes   00000000 (0)\n-2231B7 Local Header Offset   000ADA78 (711288)\n-2231BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224DBE Ext File Attributes   00000000 (0)\n+224DC2 Local Header Offset   000DB23A (897594)\n+224DC6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2231BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224DC6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2231E2 CENTRAL HEADER #741   02014B50 (33639248)\n-2231E6 Created Zip Spec      14 (20) '2.0'\n-2231E7 Created OS            00 (0) 'MS-DOS'\n-2231E8 Extract Zip Spec      14 (20) '2.0'\n-2231E9 Extract OS            00 (0) 'MS-DOS'\n-2231EA General Purpose Flag  0808 (2056)\n+224E03 CENTRAL HEADER #741   02014B50 (33639248)\n+224E07 Created Zip Spec      14 (20) '2.0'\n+224E08 Created OS            00 (0) 'MS-DOS'\n+224E09 Extract Zip Spec      14 (20) '2.0'\n+224E0A Extract OS            00 (0) 'MS-DOS'\n+224E0B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2231EC Compression Method    0008 (8) 'Deflated'\n-2231EE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2231F2 CRC                   32B357AB (850614187)\n-2231F6 Compressed Size       000003EF (1007)\n-2231FA Uncompressed Size     0000095A (2394)\n-2231FE Filename Length       002C (44)\n-223200 Extra Length          0000 (0)\n-223202 Comment Length        0000 (0)\n-223204 Disk Start            0000 (0)\n-223206 Int File Attributes   0000 (0)\n+224E0D Compression Method    0008 (8) 'Deflated'\n+224E0F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224E13 CRC                   00000000 (0)\n+224E17 Compressed Size       00000002 (2)\n+224E1B Uncompressed Size     00000000 (0)\n+224E1F Filename Length       002F (47)\n+224E21 Extra Length          0000 (0)\n+224E23 Comment Length        0000 (0)\n+224E25 Disk Start            0000 (0)\n+224E27 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223208 Ext File Attributes   00000000 (0)\n-22320C Local Header Offset   000ADE2F (712239)\n-223210 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224E29 Ext File Attributes   00000000 (0)\n+224E2D Local Header Offset   000DB6F7 (898807)\n+224E31 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223210: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224E31: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22323C CENTRAL HEADER #742   02014B50 (33639248)\n-223240 Created Zip Spec      14 (20) '2.0'\n-223241 Created OS            00 (0) 'MS-DOS'\n-223242 Extract Zip Spec      14 (20) '2.0'\n-223243 Extract OS            00 (0) 'MS-DOS'\n-223244 General Purpose Flag  0808 (2056)\n+224E60 CENTRAL HEADER #742   02014B50 (33639248)\n+224E64 Created Zip Spec      14 (20) '2.0'\n+224E65 Created OS            00 (0) 'MS-DOS'\n+224E66 Extract Zip Spec      14 (20) '2.0'\n+224E67 Extract OS            00 (0) 'MS-DOS'\n+224E68 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223246 Compression Method    0008 (8) 'Deflated'\n-223248 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22324C CRC                   34D97477 (886666359)\n-223250 Compressed Size       000019E7 (6631)\n-223254 Uncompressed Size     00008320 (33568)\n-223258 Filename Length       002C (44)\n-22325A Extra Length          0000 (0)\n-22325C Comment Length        0000 (0)\n-22325E Disk Start            0000 (0)\n-223260 Int File Attributes   0000 (0)\n+224E6A Compression Method    0008 (8) 'Deflated'\n+224E6C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224E70 CRC                   A053D891 (2689849489)\n+224E74 Compressed Size       00000471 (1137)\n+224E78 Uncompressed Size     00001205 (4613)\n+224E7C Filename Length       0048 (72)\n+224E7E Extra Length          0000 (0)\n+224E80 Comment Length        0000 (0)\n+224E82 Disk Start            0000 (0)\n+224E84 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223262 Ext File Attributes   00000000 (0)\n-223266 Local Header Offset   000AE278 (713336)\n-22326A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224E86 Ext File Attributes   00000000 (0)\n+224E8A Local Header Offset   000DB756 (898902)\n+224E8E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22326A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224E8E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223296 CENTRAL HEADER #743   02014B50 (33639248)\n-22329A Created Zip Spec      14 (20) '2.0'\n-22329B Created OS            00 (0) 'MS-DOS'\n-22329C Extract Zip Spec      14 (20) '2.0'\n-22329D Extract OS            00 (0) 'MS-DOS'\n-22329E General Purpose Flag  0808 (2056)\n+224ED6 CENTRAL HEADER #743   02014B50 (33639248)\n+224EDA Created Zip Spec      14 (20) '2.0'\n+224EDB Created OS            00 (0) 'MS-DOS'\n+224EDC Extract Zip Spec      14 (20) '2.0'\n+224EDD Extract OS            00 (0) 'MS-DOS'\n+224EDE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2232A0 Compression Method    0008 (8) 'Deflated'\n-2232A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2232A6 CRC                   6788144F (1736971343)\n-2232AA Compressed Size       00002056 (8278)\n-2232AE Uncompressed Size     0000B91D (47389)\n-2232B2 Filename Length       002F (47)\n-2232B4 Extra Length          0000 (0)\n-2232B6 Comment Length        0000 (0)\n-2232B8 Disk Start            0000 (0)\n-2232BA Int File Attributes   0000 (0)\n+224EE0 Compression Method    0008 (8) 'Deflated'\n+224EE2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224EE6 CRC                   F077FE2F (4034395695)\n+224EEA Compressed Size       0000031E (798)\n+224EEE Uncompressed Size     000007C3 (1987)\n+224EF2 Filename Length       0043 (67)\n+224EF4 Extra Length          0000 (0)\n+224EF6 Comment Length        0000 (0)\n+224EF8 Disk Start            0000 (0)\n+224EFA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2232BC Ext File Attributes   00000000 (0)\n-2232C0 Local Header Offset   000AFCB9 (720057)\n-2232C4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224EFC Ext File Attributes   00000000 (0)\n+224F00 Local Header Offset   000DBC3D (900157)\n+224F04 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2232C4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224F04: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2232F3 CENTRAL HEADER #744   02014B50 (33639248)\n-2232F7 Created Zip Spec      14 (20) '2.0'\n-2232F8 Created OS            00 (0) 'MS-DOS'\n-2232F9 Extract Zip Spec      14 (20) '2.0'\n-2232FA Extract OS            00 (0) 'MS-DOS'\n-2232FB General Purpose Flag  0808 (2056)\n+224F47 CENTRAL HEADER #744   02014B50 (33639248)\n+224F4B Created Zip Spec      14 (20) '2.0'\n+224F4C Created OS            00 (0) 'MS-DOS'\n+224F4D Extract Zip Spec      14 (20) '2.0'\n+224F4E Extract OS            00 (0) 'MS-DOS'\n+224F4F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2232FD Compression Method    0008 (8) 'Deflated'\n-2232FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223303 CRC                   9D4E3C73 (2639150195)\n-223307 Compressed Size       0000075E (1886)\n-22330B Uncompressed Size     00001707 (5895)\n-22330F Filename Length       0038 (56)\n-223311 Extra Length          0000 (0)\n-223313 Comment Length        0000 (0)\n-223315 Disk Start            0000 (0)\n-223317 Int File Attributes   0000 (0)\n+224F51 Compression Method    0008 (8) 'Deflated'\n+224F53 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224F57 CRC                   1DD7EFDF (500690911)\n+224F5B Compressed Size       0000069C (1692)\n+224F5F Uncompressed Size     0000154F (5455)\n+224F63 Filename Length       0049 (73)\n+224F65 Extra Length          0000 (0)\n+224F67 Comment Length        0000 (0)\n+224F69 Disk Start            0000 (0)\n+224F6B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223319 Ext File Attributes   00000000 (0)\n-22331D Local Header Offset   000B1D6C (728428)\n-223321 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224F6D Ext File Attributes   00000000 (0)\n+224F71 Local Header Offset   000DBFCC (901068)\n+224F75 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223321: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224F75: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223359 CENTRAL HEADER #745   02014B50 (33639248)\n-22335D Created Zip Spec      14 (20) '2.0'\n-22335E Created OS            00 (0) 'MS-DOS'\n-22335F Extract Zip Spec      14 (20) '2.0'\n-223360 Extract OS            00 (0) 'MS-DOS'\n-223361 General Purpose Flag  0808 (2056)\n+224FBE CENTRAL HEADER #745   02014B50 (33639248)\n+224FC2 Created Zip Spec      14 (20) '2.0'\n+224FC3 Created OS            00 (0) 'MS-DOS'\n+224FC4 Extract Zip Spec      14 (20) '2.0'\n+224FC5 Extract OS            00 (0) 'MS-DOS'\n+224FC6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223363 Compression Method    0008 (8) 'Deflated'\n-223365 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223369 CRC                   359BAAF7 (899394295)\n-22336D Compressed Size       00000598 (1432)\n-223371 Uncompressed Size     000011CA (4554)\n-223375 Filename Length       003C (60)\n-223377 Extra Length          0000 (0)\n-223379 Comment Length        0000 (0)\n-22337B Disk Start            0000 (0)\n-22337D Int File Attributes   0000 (0)\n+224FC8 Compression Method    0008 (8) 'Deflated'\n+224FCA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+224FCE CRC                   00000000 (0)\n+224FD2 Compressed Size       00000002 (2)\n+224FD6 Uncompressed Size     00000000 (0)\n+224FDA Filename Length       0033 (51)\n+224FDC Extra Length          0000 (0)\n+224FDE Comment Length        0000 (0)\n+224FE0 Disk Start            0000 (0)\n+224FE2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22337F Ext File Attributes   00000000 (0)\n-223383 Local Header Offset   000B2530 (730416)\n-223387 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+224FE4 Ext File Attributes   00000000 (0)\n+224FE8 Local Header Offset   000DC6DF (902879)\n+224FEC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223387: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x224FEC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2233C3 CENTRAL HEADER #746   02014B50 (33639248)\n-2233C7 Created Zip Spec      14 (20) '2.0'\n-2233C8 Created OS            00 (0) 'MS-DOS'\n-2233C9 Extract Zip Spec      14 (20) '2.0'\n-2233CA Extract OS            00 (0) 'MS-DOS'\n-2233CB General Purpose Flag  0808 (2056)\n+22501F CENTRAL HEADER #746   02014B50 (33639248)\n+225023 Created Zip Spec      14 (20) '2.0'\n+225024 Created OS            00 (0) 'MS-DOS'\n+225025 Extract Zip Spec      14 (20) '2.0'\n+225026 Extract OS            00 (0) 'MS-DOS'\n+225027 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2233CD Compression Method    0008 (8) 'Deflated'\n-2233CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2233D3 CRC                   4DF6AB6E (1308011374)\n-2233D7 Compressed Size       000003FC (1020)\n-2233DB Uncompressed Size     00000CBD (3261)\n-2233DF Filename Length       0028 (40)\n-2233E1 Extra Length          0000 (0)\n-2233E3 Comment Length        0000 (0)\n-2233E5 Disk Start            0000 (0)\n-2233E7 Int File Attributes   0000 (0)\n+225029 Compression Method    0008 (8) 'Deflated'\n+22502B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22502F CRC                   1909E1F3 (420078067)\n+225033 Compressed Size       0000040F (1039)\n+225037 Uncompressed Size     00000E69 (3689)\n+22503B Filename Length       0049 (73)\n+22503D Extra Length          0000 (0)\n+22503F Comment Length        0000 (0)\n+225041 Disk Start            0000 (0)\n+225043 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2233E9 Ext File Attributes   00000000 (0)\n-2233ED Local Header Offset   000B2B32 (731954)\n-2233F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225045 Ext File Attributes   00000000 (0)\n+225049 Local Header Offset   000DC742 (902978)\n+22504D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2233F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22504D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223419 CENTRAL HEADER #747   02014B50 (33639248)\n-22341D Created Zip Spec      14 (20) '2.0'\n-22341E Created OS            00 (0) 'MS-DOS'\n-22341F Extract Zip Spec      14 (20) '2.0'\n-223420 Extract OS            00 (0) 'MS-DOS'\n-223421 General Purpose Flag  0808 (2056)\n+225096 CENTRAL HEADER #747   02014B50 (33639248)\n+22509A Created Zip Spec      14 (20) '2.0'\n+22509B Created OS            00 (0) 'MS-DOS'\n+22509C Extract Zip Spec      14 (20) '2.0'\n+22509D Extract OS            00 (0) 'MS-DOS'\n+22509E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223423 Compression Method    0008 (8) 'Deflated'\n-223425 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223429 CRC                   E15897D6 (3780679638)\n-22342D Compressed Size       000003D1 (977)\n-223431 Uncompressed Size     00000A1C (2588)\n-223435 Filename Length       0044 (68)\n-223437 Extra Length          0000 (0)\n-223439 Comment Length        0000 (0)\n-22343B Disk Start            0000 (0)\n-22343D Int File Attributes   0000 (0)\n+2250A0 Compression Method    0008 (8) 'Deflated'\n+2250A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2250A6 CRC                   40313D69 (1076968809)\n+2250AA Compressed Size       0000029A (666)\n+2250AE Uncompressed Size     00000521 (1313)\n+2250B2 Filename Length       0045 (69)\n+2250B4 Extra Length          0000 (0)\n+2250B6 Comment Length        0000 (0)\n+2250B8 Disk Start            0000 (0)\n+2250BA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22343F Ext File Attributes   00000000 (0)\n-223443 Local Header Offset   000B2F84 (733060)\n-223447 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2250BC Ext File Attributes   00000000 (0)\n+2250C0 Local Header Offset   000DCBC8 (904136)\n+2250C4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223447: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2250C4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22348B CENTRAL HEADER #748   02014B50 (33639248)\n-22348F Created Zip Spec      14 (20) '2.0'\n-223490 Created OS            00 (0) 'MS-DOS'\n-223491 Extract Zip Spec      14 (20) '2.0'\n-223492 Extract OS            00 (0) 'MS-DOS'\n-223493 General Purpose Flag  0808 (2056)\n+225109 CENTRAL HEADER #748   02014B50 (33639248)\n+22510D Created Zip Spec      14 (20) '2.0'\n+22510E Created OS            00 (0) 'MS-DOS'\n+22510F Extract Zip Spec      14 (20) '2.0'\n+225110 Extract OS            00 (0) 'MS-DOS'\n+225111 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223495 Compression Method    0008 (8) 'Deflated'\n-223497 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22349B CRC                   080CFD86 (135069062)\n-22349F Compressed Size       00001E9B (7835)\n-2234A3 Uncompressed Size     00009370 (37744)\n-2234A7 Filename Length       002E (46)\n-2234A9 Extra Length          0000 (0)\n-2234AB Comment Length        0000 (0)\n-2234AD Disk Start            0000 (0)\n-2234AF Int File Attributes   0000 (0)\n+225113 Compression Method    0008 (8) 'Deflated'\n+225115 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225119 CRC                   00000000 (0)\n+22511D Compressed Size       00000002 (2)\n+225121 Uncompressed Size     00000000 (0)\n+225125 Filename Length       003A (58)\n+225127 Extra Length          0000 (0)\n+225129 Comment Length        0000 (0)\n+22512B Disk Start            0000 (0)\n+22512D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2234B1 Ext File Attributes   00000000 (0)\n-2234B5 Local Header Offset   000B33C7 (734151)\n-2234B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22512F Ext File Attributes   00000000 (0)\n+225133 Local Header Offset   000DCED5 (904917)\n+225137 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2234B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225137: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2234E7 CENTRAL HEADER #749   02014B50 (33639248)\n-2234EB Created Zip Spec      14 (20) '2.0'\n-2234EC Created OS            00 (0) 'MS-DOS'\n-2234ED Extract Zip Spec      14 (20) '2.0'\n-2234EE Extract OS            00 (0) 'MS-DOS'\n-2234EF General Purpose Flag  0808 (2056)\n+225171 CENTRAL HEADER #749   02014B50 (33639248)\n+225175 Created Zip Spec      14 (20) '2.0'\n+225176 Created OS            00 (0) 'MS-DOS'\n+225177 Extract Zip Spec      14 (20) '2.0'\n+225178 Extract OS            00 (0) 'MS-DOS'\n+225179 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2234F1 Compression Method    0008 (8) 'Deflated'\n-2234F3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2234F7 CRC                   45127F53 (1158840147)\n-2234FB Compressed Size       00000772 (1906)\n-2234FF Uncompressed Size     000021F8 (8696)\n-223503 Filename Length       002C (44)\n-223505 Extra Length          0000 (0)\n-223507 Comment Length        0000 (0)\n-223509 Disk Start            0000 (0)\n-22350B Int File Attributes   0000 (0)\n+22517B Compression Method    0008 (8) 'Deflated'\n+22517D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225181 CRC                   7D6D8264 (2104328804)\n+225185 Compressed Size       0000060E (1550)\n+225189 Uncompressed Size     0000153E (5438)\n+22518D Filename Length       005E (94)\n+22518F Extra Length          0000 (0)\n+225191 Comment Length        0000 (0)\n+225193 Disk Start            0000 (0)\n+225195 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22350D Ext File Attributes   00000000 (0)\n-223511 Local Header Offset   000B52BE (742078)\n-223515 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225197 Ext File Attributes   00000000 (0)\n+22519B Local Header Offset   000DCF3F (905023)\n+22519F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223515: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22519F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223541 CENTRAL HEADER #750   02014B50 (33639248)\n-223545 Created Zip Spec      14 (20) '2.0'\n-223546 Created OS            00 (0) 'MS-DOS'\n-223547 Extract Zip Spec      14 (20) '2.0'\n-223548 Extract OS            00 (0) 'MS-DOS'\n-223549 General Purpose Flag  0808 (2056)\n+2251FD CENTRAL HEADER #750   02014B50 (33639248)\n+225201 Created Zip Spec      14 (20) '2.0'\n+225202 Created OS            00 (0) 'MS-DOS'\n+225203 Extract Zip Spec      14 (20) '2.0'\n+225204 Extract OS            00 (0) 'MS-DOS'\n+225205 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22354B Compression Method    0008 (8) 'Deflated'\n-22354D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223551 CRC                   BCEF5B37 (3169803063)\n-223555 Compressed Size       0000118B (4491)\n-223559 Uncompressed Size     0000634F (25423)\n-22355D Filename Length       002B (43)\n-22355F Extra Length          0000 (0)\n-223561 Comment Length        0000 (0)\n-223563 Disk Start            0000 (0)\n-223565 Int File Attributes   0000 (0)\n+225207 Compression Method    0008 (8) 'Deflated'\n+225209 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22520D CRC                   5474BB92 (1416936338)\n+225211 Compressed Size       0000029F (671)\n+225215 Uncompressed Size     00000551 (1361)\n+225219 Filename Length       005A (90)\n+22521B Extra Length          0000 (0)\n+22521D Comment Length        0000 (0)\n+22521F Disk Start            0000 (0)\n+225221 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223567 Ext File Attributes   00000000 (0)\n-22356B Local Header Offset   000B5A8A (744074)\n-22356F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225223 Ext File Attributes   00000000 (0)\n+225227 Local Header Offset   000DD5D9 (906713)\n+22522B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22356F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22522B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22359A CENTRAL HEADER #751   02014B50 (33639248)\n-22359E Created Zip Spec      14 (20) '2.0'\n-22359F Created OS            00 (0) 'MS-DOS'\n-2235A0 Extract Zip Spec      14 (20) '2.0'\n-2235A1 Extract OS            00 (0) 'MS-DOS'\n-2235A2 General Purpose Flag  0808 (2056)\n+225285 CENTRAL HEADER #751   02014B50 (33639248)\n+225289 Created Zip Spec      14 (20) '2.0'\n+22528A Created OS            00 (0) 'MS-DOS'\n+22528B Extract Zip Spec      14 (20) '2.0'\n+22528C Extract OS            00 (0) 'MS-DOS'\n+22528D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2235A4 Compression Method    0008 (8) 'Deflated'\n-2235A6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2235AA CRC                   E7AAF9A0 (3886741920)\n-2235AE Compressed Size       00000AFB (2811)\n-2235B2 Uncompressed Size     000026C6 (9926)\n-2235B6 Filename Length       002C (44)\n-2235B8 Extra Length          0000 (0)\n-2235BA Comment Length        0000 (0)\n-2235BC Disk Start            0000 (0)\n-2235BE Int File Attributes   0000 (0)\n+22528F Compression Method    0008 (8) 'Deflated'\n+225291 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225295 CRC                   00000000 (0)\n+225299 Compressed Size       00000002 (2)\n+22529D Uncompressed Size     00000000 (0)\n+2252A1 Filename Length       0036 (54)\n+2252A3 Extra Length          0000 (0)\n+2252A5 Comment Length        0000 (0)\n+2252A7 Disk Start            0000 (0)\n+2252A9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2235C0 Ext File Attributes   00000000 (0)\n-2235C4 Local Header Offset   000B6C6E (748654)\n-2235C8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2252AB Ext File Attributes   00000000 (0)\n+2252AF Local Header Offset   000DD900 (907520)\n+2252B3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2235C8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2252B3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2235F4 CENTRAL HEADER #752   02014B50 (33639248)\n-2235F8 Created Zip Spec      14 (20) '2.0'\n-2235F9 Created OS            00 (0) 'MS-DOS'\n-2235FA Extract Zip Spec      14 (20) '2.0'\n-2235FB Extract OS            00 (0) 'MS-DOS'\n-2235FC General Purpose Flag  0808 (2056)\n+2252E9 CENTRAL HEADER #752   02014B50 (33639248)\n+2252ED Created Zip Spec      14 (20) '2.0'\n+2252EE Created OS            00 (0) 'MS-DOS'\n+2252EF Extract Zip Spec      14 (20) '2.0'\n+2252F0 Extract OS            00 (0) 'MS-DOS'\n+2252F1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2235FE Compression Method    0008 (8) 'Deflated'\n-223600 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223604 CRC                   4A1B9248 (1243320904)\n-223608 Compressed Size       000014E2 (5346)\n-22360C Uncompressed Size     0000642A (25642)\n-223610 Filename Length       002B (43)\n-223612 Extra Length          0000 (0)\n-223614 Comment Length        0000 (0)\n-223616 Disk Start            0000 (0)\n-223618 Int File Attributes   0000 (0)\n+2252F3 Compression Method    0008 (8) 'Deflated'\n+2252F5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2252F9 CRC                   F9C89211 (4190671377)\n+2252FD Compressed Size       00000389 (905)\n+225301 Uncompressed Size     000008E6 (2278)\n+225305 Filename Length       004F (79)\n+225307 Extra Length          0000 (0)\n+225309 Comment Length        0000 (0)\n+22530B Disk Start            0000 (0)\n+22530D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22361A Ext File Attributes   00000000 (0)\n-22361E Local Header Offset   000B77C3 (751555)\n-223622 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22530F Ext File Attributes   00000000 (0)\n+225313 Local Header Offset   000DD966 (907622)\n+225317 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223622: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225317: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22364D CENTRAL HEADER #753   02014B50 (33639248)\n-223651 Created Zip Spec      14 (20) '2.0'\n-223652 Created OS            00 (0) 'MS-DOS'\n-223653 Extract Zip Spec      14 (20) '2.0'\n-223654 Extract OS            00 (0) 'MS-DOS'\n-223655 General Purpose Flag  0808 (2056)\n+225366 CENTRAL HEADER #753   02014B50 (33639248)\n+22536A Created Zip Spec      14 (20) '2.0'\n+22536B Created OS            00 (0) 'MS-DOS'\n+22536C Extract Zip Spec      14 (20) '2.0'\n+22536D Extract OS            00 (0) 'MS-DOS'\n+22536E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223657 Compression Method    0008 (8) 'Deflated'\n-223659 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22365D CRC                   4BCB8E78 (1271631480)\n-223661 Compressed Size       00001440 (5184)\n-223665 Uncompressed Size     00005EF7 (24311)\n-223669 Filename Length       0034 (52)\n-22366B Extra Length          0000 (0)\n-22366D Comment Length        0000 (0)\n-22366F Disk Start            0000 (0)\n-223671 Int File Attributes   0000 (0)\n+225370 Compression Method    0008 (8) 'Deflated'\n+225372 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225376 CRC                   66FEA41B (1727964187)\n+22537A Compressed Size       0000028E (654)\n+22537E Uncompressed Size     00000521 (1313)\n+225382 Filename Length       004B (75)\n+225384 Extra Length          0000 (0)\n+225386 Comment Length        0000 (0)\n+225388 Disk Start            0000 (0)\n+22538A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223673 Ext File Attributes   00000000 (0)\n-223677 Local Header Offset   000B8CFE (756990)\n-22367B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22538C Ext File Attributes   00000000 (0)\n+225390 Local Header Offset   000DDD6C (908652)\n+225394 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22367B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225394: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2236AF CENTRAL HEADER #754   02014B50 (33639248)\n-2236B3 Created Zip Spec      14 (20) '2.0'\n-2236B4 Created OS            00 (0) 'MS-DOS'\n-2236B5 Extract Zip Spec      14 (20) '2.0'\n-2236B6 Extract OS            00 (0) 'MS-DOS'\n-2236B7 General Purpose Flag  0808 (2056)\n+2253DF CENTRAL HEADER #754   02014B50 (33639248)\n+2253E3 Created Zip Spec      14 (20) '2.0'\n+2253E4 Created OS            00 (0) 'MS-DOS'\n+2253E5 Extract Zip Spec      14 (20) '2.0'\n+2253E6 Extract OS            00 (0) 'MS-DOS'\n+2253E7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2236B9 Compression Method    0008 (8) 'Deflated'\n-2236BB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2236BF CRC                   EBCB75D3 (3955979731)\n-2236C3 Compressed Size       00000605 (1541)\n-2236C7 Uncompressed Size     00001235 (4661)\n-2236CB Filename Length       0031 (49)\n-2236CD Extra Length          0000 (0)\n-2236CF Comment Length        0000 (0)\n-2236D1 Disk Start            0000 (0)\n-2236D3 Int File Attributes   0000 (0)\n+2253E9 Compression Method    0008 (8) 'Deflated'\n+2253EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2253EF CRC                   00000000 (0)\n+2253F3 Compressed Size       00000002 (2)\n+2253F7 Uncompressed Size     00000000 (0)\n+2253FB Filename Length       0039 (57)\n+2253FD Extra Length          0000 (0)\n+2253FF Comment Length        0000 (0)\n+225401 Disk Start            0000 (0)\n+225403 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2236D5 Ext File Attributes   00000000 (0)\n-2236D9 Local Header Offset   000BA1A0 (762272)\n-2236DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225405 Ext File Attributes   00000000 (0)\n+225409 Local Header Offset   000DE073 (909427)\n+22540D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2236DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22540D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22370E CENTRAL HEADER #755   02014B50 (33639248)\n-223712 Created Zip Spec      14 (20) '2.0'\n-223713 Created OS            00 (0) 'MS-DOS'\n-223714 Extract Zip Spec      14 (20) '2.0'\n-223715 Extract OS            00 (0) 'MS-DOS'\n-223716 General Purpose Flag  0808 (2056)\n+225446 CENTRAL HEADER #755   02014B50 (33639248)\n+22544A Created Zip Spec      14 (20) '2.0'\n+22544B Created OS            00 (0) 'MS-DOS'\n+22544C Extract Zip Spec      14 (20) '2.0'\n+22544D Extract OS            00 (0) 'MS-DOS'\n+22544E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223718 Compression Method    0008 (8) 'Deflated'\n-22371A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22371E CRC                   0D6CD567 (225236327)\n-223722 Compressed Size       000006D0 (1744)\n-223726 Uncompressed Size     000015F5 (5621)\n-22372A Filename Length       0034 (52)\n-22372C Extra Length          0000 (0)\n-22372E Comment Length        0000 (0)\n-223730 Disk Start            0000 (0)\n-223732 Int File Attributes   0000 (0)\n+225450 Compression Method    0008 (8) 'Deflated'\n+225452 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225456 CRC                   E83FE9D5 (3896502741)\n+22545A Compressed Size       000004D6 (1238)\n+22545E Uncompressed Size     00000C8C (3212)\n+225462 Filename Length       0055 (85)\n+225464 Extra Length          0000 (0)\n+225466 Comment Length        0000 (0)\n+225468 Disk Start            0000 (0)\n+22546A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223734 Ext File Attributes   00000000 (0)\n-223738 Local Header Offset   000BA804 (763908)\n-22373C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22546C Ext File Attributes   00000000 (0)\n+225470 Local Header Offset   000DE0DC (909532)\n+225474 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22373C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225474: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223770 CENTRAL HEADER #756   02014B50 (33639248)\n-223774 Created Zip Spec      14 (20) '2.0'\n-223775 Created OS            00 (0) 'MS-DOS'\n-223776 Extract Zip Spec      14 (20) '2.0'\n-223777 Extract OS            00 (0) 'MS-DOS'\n-223778 General Purpose Flag  0808 (2056)\n+2254C9 CENTRAL HEADER #756   02014B50 (33639248)\n+2254CD Created Zip Spec      14 (20) '2.0'\n+2254CE Created OS            00 (0) 'MS-DOS'\n+2254CF Extract Zip Spec      14 (20) '2.0'\n+2254D0 Extract OS            00 (0) 'MS-DOS'\n+2254D1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22377A Compression Method    0008 (8) 'Deflated'\n-22377C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223780 CRC                   6E97D75C (1855444828)\n-223784 Compressed Size       0000073D (1853)\n-223788 Uncompressed Size     00001A42 (6722)\n-22378C Filename Length       0032 (50)\n-22378E Extra Length          0000 (0)\n-223790 Comment Length        0000 (0)\n-223792 Disk Start            0000 (0)\n-223794 Int File Attributes   0000 (0)\n+2254D3 Compression Method    0008 (8) 'Deflated'\n+2254D5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2254D9 CRC                   DF933BA4 (3750968228)\n+2254DD Compressed Size       000002AA (682)\n+2254E1 Uncompressed Size     00000555 (1365)\n+2254E5 Filename Length       0051 (81)\n+2254E7 Extra Length          0000 (0)\n+2254E9 Comment Length        0000 (0)\n+2254EB Disk Start            0000 (0)\n+2254ED Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223796 Ext File Attributes   00000000 (0)\n-22379A Local Header Offset   000BAF36 (765750)\n-22379E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2254EF Ext File Attributes   00000000 (0)\n+2254F3 Local Header Offset   000DE635 (910901)\n+2254F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22379E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2254F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2237D0 CENTRAL HEADER #757   02014B50 (33639248)\n-2237D4 Created Zip Spec      14 (20) '2.0'\n-2237D5 Created OS            00 (0) 'MS-DOS'\n-2237D6 Extract Zip Spec      14 (20) '2.0'\n-2237D7 Extract OS            00 (0) 'MS-DOS'\n-2237D8 General Purpose Flag  0808 (2056)\n+225548 CENTRAL HEADER #757   02014B50 (33639248)\n+22554C Created Zip Spec      14 (20) '2.0'\n+22554D Created OS            00 (0) 'MS-DOS'\n+22554E Extract Zip Spec      14 (20) '2.0'\n+22554F Extract OS            00 (0) 'MS-DOS'\n+225550 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2237DA Compression Method    0008 (8) 'Deflated'\n-2237DC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2237E0 CRC                   327F969A (847222426)\n-2237E4 Compressed Size       00000CAC (3244)\n-2237E8 Uncompressed Size     0000350F (13583)\n-2237EC Filename Length       002E (46)\n-2237EE Extra Length          0000 (0)\n-2237F0 Comment Length        0000 (0)\n-2237F2 Disk Start            0000 (0)\n-2237F4 Int File Attributes   0000 (0)\n+225552 Compression Method    0008 (8) 'Deflated'\n+225554 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225558 CRC                   00000000 (0)\n+22555C Compressed Size       00000002 (2)\n+225560 Uncompressed Size     00000000 (0)\n+225564 Filename Length       0037 (55)\n+225566 Extra Length          0000 (0)\n+225568 Comment Length        0000 (0)\n+22556A Disk Start            0000 (0)\n+22556C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2237F6 Ext File Attributes   00000000 (0)\n-2237FA Local Header Offset   000BB6D3 (767699)\n-2237FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22556E Ext File Attributes   00000000 (0)\n+225572 Local Header Offset   000DE95E (911710)\n+225576 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2237FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225576: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22382C CENTRAL HEADER #758   02014B50 (33639248)\n-223830 Created Zip Spec      14 (20) '2.0'\n-223831 Created OS            00 (0) 'MS-DOS'\n-223832 Extract Zip Spec      14 (20) '2.0'\n-223833 Extract OS            00 (0) 'MS-DOS'\n-223834 General Purpose Flag  0808 (2056)\n+2255AD CENTRAL HEADER #758   02014B50 (33639248)\n+2255B1 Created Zip Spec      14 (20) '2.0'\n+2255B2 Created OS            00 (0) 'MS-DOS'\n+2255B3 Extract Zip Spec      14 (20) '2.0'\n+2255B4 Extract OS            00 (0) 'MS-DOS'\n+2255B5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223836 Compression Method    0008 (8) 'Deflated'\n-223838 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22383C CRC                   C17F60B4 (3246350516)\n-223840 Compressed Size       00000373 (883)\n-223844 Uncompressed Size     0000084E (2126)\n-223848 Filename Length       002B (43)\n-22384A Extra Length          0000 (0)\n-22384C Comment Length        0000 (0)\n-22384E Disk Start            0000 (0)\n-223850 Int File Attributes   0000 (0)\n+2255B7 Compression Method    0008 (8) 'Deflated'\n+2255B9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2255BD CRC                   9032EA6A (2419255914)\n+2255C1 Compressed Size       000003A7 (935)\n+2255C5 Uncompressed Size     00000944 (2372)\n+2255C9 Filename Length       0055 (85)\n+2255CB Extra Length          0000 (0)\n+2255CD Comment Length        0000 (0)\n+2255CF Disk Start            0000 (0)\n+2255D1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223852 Ext File Attributes   00000000 (0)\n-223856 Local Header Offset   000BC3DB (771035)\n-22385A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2255D3 Ext File Attributes   00000000 (0)\n+2255D7 Local Header Offset   000DE9C5 (911813)\n+2255DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22385A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2255DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223885 CENTRAL HEADER #759   02014B50 (33639248)\n-223889 Created Zip Spec      14 (20) '2.0'\n-22388A Created OS            00 (0) 'MS-DOS'\n-22388B Extract Zip Spec      14 (20) '2.0'\n-22388C Extract OS            00 (0) 'MS-DOS'\n-22388D General Purpose Flag  0808 (2056)\n+225630 CENTRAL HEADER #759   02014B50 (33639248)\n+225634 Created Zip Spec      14 (20) '2.0'\n+225635 Created OS            00 (0) 'MS-DOS'\n+225636 Extract Zip Spec      14 (20) '2.0'\n+225637 Extract OS            00 (0) 'MS-DOS'\n+225638 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22388F Compression Method    0008 (8) 'Deflated'\n-223891 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223895 CRC                   60259860 (1613076576)\n-223899 Compressed Size       0000098F (2447)\n-22389D Uncompressed Size     0000229B (8859)\n-2238A1 Filename Length       002F (47)\n-2238A3 Extra Length          0000 (0)\n-2238A5 Comment Length        0000 (0)\n-2238A7 Disk Start            0000 (0)\n-2238A9 Int File Attributes   0000 (0)\n+22563A Compression Method    0008 (8) 'Deflated'\n+22563C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225640 CRC                   897FB906 (2306849030)\n+225644 Compressed Size       000002A3 (675)\n+225648 Uncompressed Size     00000546 (1350)\n+22564C Filename Length       0051 (81)\n+22564E Extra Length          0000 (0)\n+225650 Comment Length        0000 (0)\n+225652 Disk Start            0000 (0)\n+225654 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2238AB Ext File Attributes   00000000 (0)\n-2238AF Local Header Offset   000BC7A7 (772007)\n-2238B3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225656 Ext File Attributes   00000000 (0)\n+22565A Local Header Offset   000DEDEF (912879)\n+22565E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2238B3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22565E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2238E2 CENTRAL HEADER #760   02014B50 (33639248)\n-2238E6 Created Zip Spec      14 (20) '2.0'\n-2238E7 Created OS            00 (0) 'MS-DOS'\n-2238E8 Extract Zip Spec      14 (20) '2.0'\n-2238E9 Extract OS            00 (0) 'MS-DOS'\n-2238EA General Purpose Flag  0808 (2056)\n+2256AF CENTRAL HEADER #760   02014B50 (33639248)\n+2256B3 Created Zip Spec      14 (20) '2.0'\n+2256B4 Created OS            00 (0) 'MS-DOS'\n+2256B5 Extract Zip Spec      14 (20) '2.0'\n+2256B6 Extract OS            00 (0) 'MS-DOS'\n+2256B7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2238EC Compression Method    0008 (8) 'Deflated'\n-2238EE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2238F2 CRC                   CBED4405 (3421324293)\n-2238F6 Compressed Size       0000047C (1148)\n-2238FA Uncompressed Size     00000B21 (2849)\n-2238FE Filename Length       0026 (38)\n-223900 Extra Length          0000 (0)\n-223902 Comment Length        0000 (0)\n-223904 Disk Start            0000 (0)\n-223906 Int File Attributes   0000 (0)\n+2256B9 Compression Method    0008 (8) 'Deflated'\n+2256BB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2256BF CRC                   00000000 (0)\n+2256C3 Compressed Size       00000002 (2)\n+2256C7 Uncompressed Size     00000000 (0)\n+2256CB Filename Length       0020 (32)\n+2256CD Extra Length          0000 (0)\n+2256CF Comment Length        0000 (0)\n+2256D1 Disk Start            0000 (0)\n+2256D3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223908 Ext File Attributes   00000000 (0)\n-22390C Local Header Offset   000BD193 (774547)\n-223910 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2256D5 Ext File Attributes   00000000 (0)\n+2256D9 Local Header Offset   000DF111 (913681)\n+2256DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223910: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2256DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223936 CENTRAL HEADER #761   02014B50 (33639248)\n-22393A Created Zip Spec      14 (20) '2.0'\n-22393B Created OS            00 (0) 'MS-DOS'\n-22393C Extract Zip Spec      14 (20) '2.0'\n-22393D Extract OS            00 (0) 'MS-DOS'\n-22393E General Purpose Flag  0808 (2056)\n+2256FD CENTRAL HEADER #761   02014B50 (33639248)\n+225701 Created Zip Spec      14 (20) '2.0'\n+225702 Created OS            00 (0) 'MS-DOS'\n+225703 Extract Zip Spec      14 (20) '2.0'\n+225704 Extract OS            00 (0) 'MS-DOS'\n+225705 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223940 Compression Method    0008 (8) 'Deflated'\n-223942 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223946 CRC                   4EECAFD1 (1324134353)\n-22394A Compressed Size       000004DF (1247)\n-22394E Uncompressed Size     00000DF0 (3568)\n-223952 Filename Length       002B (43)\n-223954 Extra Length          0000 (0)\n-223956 Comment Length        0000 (0)\n-223958 Disk Start            0000 (0)\n-22395A Int File Attributes   0000 (0)\n+225707 Compression Method    0008 (8) 'Deflated'\n+225709 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22570D CRC                   C50A75E6 (3305797094)\n+225711 Compressed Size       0000032E (814)\n+225715 Uncompressed Size     00000738 (1848)\n+225719 Filename Length       0033 (51)\n+22571B Extra Length          0000 (0)\n+22571D Comment Length        0000 (0)\n+22571F Disk Start            0000 (0)\n+225721 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22395C Ext File Attributes   00000000 (0)\n-223960 Local Header Offset   000BD663 (775779)\n-223964 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225723 Ext File Attributes   00000000 (0)\n+225727 Local Header Offset   000DF161 (913761)\n+22572B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223964: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22572B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22398F CENTRAL HEADER #762   02014B50 (33639248)\n-223993 Created Zip Spec      14 (20) '2.0'\n-223994 Created OS            00 (0) 'MS-DOS'\n-223995 Extract Zip Spec      14 (20) '2.0'\n-223996 Extract OS            00 (0) 'MS-DOS'\n-223997 General Purpose Flag  0808 (2056)\n+22575E CENTRAL HEADER #762   02014B50 (33639248)\n+225762 Created Zip Spec      14 (20) '2.0'\n+225763 Created OS            00 (0) 'MS-DOS'\n+225764 Extract Zip Spec      14 (20) '2.0'\n+225765 Extract OS            00 (0) 'MS-DOS'\n+225766 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223999 Compression Method    0008 (8) 'Deflated'\n-22399B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22399F CRC                   44E5E8ED (1155918061)\n-2239A3 Compressed Size       00000733 (1843)\n-2239A7 Uncompressed Size     00001786 (6022)\n-2239AB Filename Length       0031 (49)\n-2239AD Extra Length          0000 (0)\n-2239AF Comment Length        0000 (0)\n-2239B1 Disk Start            0000 (0)\n-2239B3 Int File Attributes   0000 (0)\n+225768 Compression Method    0008 (8) 'Deflated'\n+22576A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22576E CRC                   7B898F0A (2072612618)\n+225772 Compressed Size       00000307 (775)\n+225776 Uncompressed Size     00000633 (1587)\n+22577A Filename Length       002D (45)\n+22577C Extra Length          0000 (0)\n+22577E Comment Length        0000 (0)\n+225780 Disk Start            0000 (0)\n+225782 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2239B5 Ext File Attributes   00000000 (0)\n-2239B9 Local Header Offset   000BDB9B (777115)\n-2239BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225784 Ext File Attributes   00000000 (0)\n+225788 Local Header Offset   000DF4F0 (914672)\n+22578C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2239BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22578C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2239EE CENTRAL HEADER #763   02014B50 (33639248)\n-2239F2 Created Zip Spec      14 (20) '2.0'\n-2239F3 Created OS            00 (0) 'MS-DOS'\n-2239F4 Extract Zip Spec      14 (20) '2.0'\n-2239F5 Extract OS            00 (0) 'MS-DOS'\n-2239F6 General Purpose Flag  0808 (2056)\n+2257B9 CENTRAL HEADER #763   02014B50 (33639248)\n+2257BD Created Zip Spec      14 (20) '2.0'\n+2257BE Created OS            00 (0) 'MS-DOS'\n+2257BF Extract Zip Spec      14 (20) '2.0'\n+2257C0 Extract OS            00 (0) 'MS-DOS'\n+2257C1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2239F8 Compression Method    0008 (8) 'Deflated'\n-2239FA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2239FE CRC                   AEF897E4 (2935527396)\n-223A02 Compressed Size       00000853 (2131)\n-223A06 Uncompressed Size     00002174 (8564)\n-223A0A Filename Length       0029 (41)\n-223A0C Extra Length          0000 (0)\n-223A0E Comment Length        0000 (0)\n-223A10 Disk Start            0000 (0)\n-223A12 Int File Attributes   0000 (0)\n+2257C3 Compression Method    0008 (8) 'Deflated'\n+2257C5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2257C9 CRC                   00000000 (0)\n+2257CD Compressed Size       00000002 (2)\n+2257D1 Uncompressed Size     00000000 (0)\n+2257D5 Filename Length       0033 (51)\n+2257D7 Extra Length          0000 (0)\n+2257D9 Comment Length        0000 (0)\n+2257DB Disk Start            0000 (0)\n+2257DD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223A14 Ext File Attributes   00000000 (0)\n-223A18 Local Header Offset   000BE32D (779053)\n-223A1C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2257DF Ext File Attributes   00000000 (0)\n+2257E3 Local Header Offset   000DF852 (915538)\n+2257E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223A1C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2257E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223A45 CENTRAL HEADER #764   02014B50 (33639248)\n-223A49 Created Zip Spec      14 (20) '2.0'\n-223A4A Created OS            00 (0) 'MS-DOS'\n-223A4B Extract Zip Spec      14 (20) '2.0'\n-223A4C Extract OS            00 (0) 'MS-DOS'\n-223A4D General Purpose Flag  0808 (2056)\n+22581A CENTRAL HEADER #764   02014B50 (33639248)\n+22581E Created Zip Spec      14 (20) '2.0'\n+22581F Created OS            00 (0) 'MS-DOS'\n+225820 Extract Zip Spec      14 (20) '2.0'\n+225821 Extract OS            00 (0) 'MS-DOS'\n+225822 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223A4F Compression Method    0008 (8) 'Deflated'\n-223A51 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223A55 CRC                   1F3B896F (523995503)\n-223A59 Compressed Size       000002E4 (740)\n-223A5D Uncompressed Size     0000065A (1626)\n-223A61 Filename Length       002A (42)\n-223A63 Extra Length          0000 (0)\n-223A65 Comment Length        0000 (0)\n-223A67 Disk Start            0000 (0)\n-223A69 Int File Attributes   0000 (0)\n+225824 Compression Method    0008 (8) 'Deflated'\n+225826 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22582A CRC                   412C4DB4 (1093422516)\n+22582E Compressed Size       00000384 (900)\n+225832 Uncompressed Size     00000916 (2326)\n+225836 Filename Length       003A (58)\n+225838 Extra Length          0000 (0)\n+22583A Comment Length        0000 (0)\n+22583C Disk Start            0000 (0)\n+22583E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223A6B Ext File Attributes   00000000 (0)\n-223A6F Local Header Offset   000BEBD7 (781271)\n-223A73 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225840 Ext File Attributes   00000000 (0)\n+225844 Local Header Offset   000DF8B5 (915637)\n+225848 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223A73: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225848: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223A9D CENTRAL HEADER #765   02014B50 (33639248)\n-223AA1 Created Zip Spec      14 (20) '2.0'\n-223AA2 Created OS            00 (0) 'MS-DOS'\n-223AA3 Extract Zip Spec      14 (20) '2.0'\n-223AA4 Extract OS            00 (0) 'MS-DOS'\n-223AA5 General Purpose Flag  0808 (2056)\n+225882 CENTRAL HEADER #765   02014B50 (33639248)\n+225886 Created Zip Spec      14 (20) '2.0'\n+225887 Created OS            00 (0) 'MS-DOS'\n+225888 Extract Zip Spec      14 (20) '2.0'\n+225889 Extract OS            00 (0) 'MS-DOS'\n+22588A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223AA7 Compression Method    0008 (8) 'Deflated'\n-223AA9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223AAD CRC                   FE661D4B (4268105035)\n-223AB1 Compressed Size       00000483 (1155)\n-223AB5 Uncompressed Size     00000DF5 (3573)\n-223AB9 Filename Length       0029 (41)\n-223ABB Extra Length          0000 (0)\n-223ABD Comment Length        0000 (0)\n-223ABF Disk Start            0000 (0)\n-223AC1 Int File Attributes   0000 (0)\n+22588C Compression Method    0008 (8) 'Deflated'\n+22588E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225892 CRC                   86CFF4B4 (2261775540)\n+225896 Compressed Size       00000047 (71)\n+22589A Uncompressed Size     00000049 (73)\n+22589E Filename Length       0041 (65)\n+2258A0 Extra Length          0000 (0)\n+2258A2 Comment Length        0000 (0)\n+2258A4 Disk Start            0000 (0)\n+2258A6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223AC3 Ext File Attributes   00000000 (0)\n-223AC7 Local Header Offset   000BEF13 (782099)\n-223ACB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2258A8 Ext File Attributes   00000000 (0)\n+2258AC Local Header Offset   000DFCA1 (916641)\n+2258B0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223ACB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2258B0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223AF4 CENTRAL HEADER #766   02014B50 (33639248)\n-223AF8 Created Zip Spec      14 (20) '2.0'\n-223AF9 Created OS            00 (0) 'MS-DOS'\n-223AFA Extract Zip Spec      14 (20) '2.0'\n-223AFB Extract OS            00 (0) 'MS-DOS'\n-223AFC General Purpose Flag  0808 (2056)\n+2258F1 CENTRAL HEADER #766   02014B50 (33639248)\n+2258F5 Created Zip Spec      14 (20) '2.0'\n+2258F6 Created OS            00 (0) 'MS-DOS'\n+2258F7 Extract Zip Spec      14 (20) '2.0'\n+2258F8 Extract OS            00 (0) 'MS-DOS'\n+2258F9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223AFE Compression Method    0008 (8) 'Deflated'\n-223B00 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223B04 CRC                   32F83356 (855126870)\n-223B08 Compressed Size       000004A7 (1191)\n-223B0C Uncompressed Size     00000E80 (3712)\n-223B10 Filename Length       002A (42)\n-223B12 Extra Length          0000 (0)\n-223B14 Comment Length        0000 (0)\n-223B16 Disk Start            0000 (0)\n-223B18 Int File Attributes   0000 (0)\n+2258FB Compression Method    0008 (8) 'Deflated'\n+2258FD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225901 CRC                   00000000 (0)\n+225905 Compressed Size       00000002 (2)\n+225909 Uncompressed Size     00000000 (0)\n+22590D Filename Length       002A (42)\n+22590F Extra Length          0000 (0)\n+225911 Comment Length        0000 (0)\n+225913 Disk Start            0000 (0)\n+225915 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223B1A Ext File Attributes   00000000 (0)\n-223B1E Local Header Offset   000BF3ED (783341)\n-223B22 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225917 Ext File Attributes   00000000 (0)\n+22591B Local Header Offset   000DFD57 (916823)\n+22591F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223B22: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22591F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223B4C CENTRAL HEADER #767   02014B50 (33639248)\n-223B50 Created Zip Spec      14 (20) '2.0'\n-223B51 Created OS            00 (0) 'MS-DOS'\n-223B52 Extract Zip Spec      14 (20) '2.0'\n-223B53 Extract OS            00 (0) 'MS-DOS'\n-223B54 General Purpose Flag  0808 (2056)\n+225949 CENTRAL HEADER #767   02014B50 (33639248)\n+22594D Created Zip Spec      14 (20) '2.0'\n+22594E Created OS            00 (0) 'MS-DOS'\n+22594F Extract Zip Spec      14 (20) '2.0'\n+225950 Extract OS            00 (0) 'MS-DOS'\n+225951 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223B56 Compression Method    0008 (8) 'Deflated'\n-223B58 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223B5C CRC                   5B6E7792 (1533966226)\n-223B60 Compressed Size       00000B79 (2937)\n-223B64 Uncompressed Size     000033BD (13245)\n-223B68 Filename Length       002B (43)\n-223B6A Extra Length          0000 (0)\n-223B6C Comment Length        0000 (0)\n-223B6E Disk Start            0000 (0)\n-223B70 Int File Attributes   0000 (0)\n+225953 Compression Method    0008 (8) 'Deflated'\n+225955 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225959 CRC                   9FEC08A1 (2683046049)\n+22595D Compressed Size       0000067E (1662)\n+225961 Uncompressed Size     0000287C (10364)\n+225965 Filename Length       0047 (71)\n+225967 Extra Length          0000 (0)\n+225969 Comment Length        0000 (0)\n+22596B Disk Start            0000 (0)\n+22596D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223B72 Ext File Attributes   00000000 (0)\n-223B76 Local Header Offset   000BF8EC (784620)\n-223B7A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22596F Ext File Attributes   00000000 (0)\n+225973 Local Header Offset   000DFDB1 (916913)\n+225977 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223B7A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225977: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223BA5 CENTRAL HEADER #768   02014B50 (33639248)\n-223BA9 Created Zip Spec      14 (20) '2.0'\n-223BAA Created OS            00 (0) 'MS-DOS'\n-223BAB Extract Zip Spec      14 (20) '2.0'\n-223BAC Extract OS            00 (0) 'MS-DOS'\n-223BAD General Purpose Flag  0808 (2056)\n+2259BE CENTRAL HEADER #768   02014B50 (33639248)\n+2259C2 Created Zip Spec      14 (20) '2.0'\n+2259C3 Created OS            00 (0) 'MS-DOS'\n+2259C4 Extract Zip Spec      14 (20) '2.0'\n+2259C5 Extract OS            00 (0) 'MS-DOS'\n+2259C6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223BAF Compression Method    0008 (8) 'Deflated'\n-223BB1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223BB5 CRC                   321C1C15 (840702997)\n-223BB9 Compressed Size       00000987 (2439)\n-223BBD Uncompressed Size     00002894 (10388)\n-223BC1 Filename Length       002B (43)\n-223BC3 Extra Length          0000 (0)\n-223BC5 Comment Length        0000 (0)\n-223BC7 Disk Start            0000 (0)\n-223BC9 Int File Attributes   0000 (0)\n+2259C8 Compression Method    0008 (8) 'Deflated'\n+2259CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2259CE CRC                   399B609C (966484124)\n+2259D2 Compressed Size       0000031A (794)\n+2259D6 Uncompressed Size     000007FB (2043)\n+2259DA Filename Length       004E (78)\n+2259DC Extra Length          0000 (0)\n+2259DE Comment Length        0000 (0)\n+2259E0 Disk Start            0000 (0)\n+2259E2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223BCB Ext File Attributes   00000000 (0)\n-223BCF Local Header Offset   000C04BE (787646)\n-223BD3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2259E4 Ext File Attributes   00000000 (0)\n+2259E8 Local Header Offset   000E04A4 (918692)\n+2259EC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223BD3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2259EC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223BFE CENTRAL HEADER #769   02014B50 (33639248)\n-223C02 Created Zip Spec      14 (20) '2.0'\n-223C03 Created OS            00 (0) 'MS-DOS'\n-223C04 Extract Zip Spec      14 (20) '2.0'\n-223C05 Extract OS            00 (0) 'MS-DOS'\n-223C06 General Purpose Flag  0808 (2056)\n+225A3A CENTRAL HEADER #769   02014B50 (33639248)\n+225A3E Created Zip Spec      14 (20) '2.0'\n+225A3F Created OS            00 (0) 'MS-DOS'\n+225A40 Extract Zip Spec      14 (20) '2.0'\n+225A41 Extract OS            00 (0) 'MS-DOS'\n+225A42 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223C08 Compression Method    0008 (8) 'Deflated'\n-223C0A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223C0E CRC                   52C8839A (1388872602)\n-223C12 Compressed Size       00000942 (2370)\n-223C16 Uncompressed Size     000020A7 (8359)\n-223C1A Filename Length       0030 (48)\n-223C1C Extra Length          0000 (0)\n-223C1E Comment Length        0000 (0)\n-223C20 Disk Start            0000 (0)\n-223C22 Int File Attributes   0000 (0)\n+225A44 Compression Method    0008 (8) 'Deflated'\n+225A46 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225A4A CRC                   9371F11F (2473718047)\n+225A4E Compressed Size       00000788 (1928)\n+225A52 Uncompressed Size     00001B9D (7069)\n+225A56 Filename Length       003B (59)\n+225A58 Extra Length          0000 (0)\n+225A5A Comment Length        0000 (0)\n+225A5C Disk Start            0000 (0)\n+225A5E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223C24 Ext File Attributes   00000000 (0)\n-223C28 Local Header Offset   000C0E9E (790174)\n-223C2C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225A60 Ext File Attributes   00000000 (0)\n+225A64 Local Header Offset   000E083A (919610)\n+225A68 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223C2C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225A68: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223C5C CENTRAL HEADER #770   02014B50 (33639248)\n-223C60 Created Zip Spec      14 (20) '2.0'\n-223C61 Created OS            00 (0) 'MS-DOS'\n-223C62 Extract Zip Spec      14 (20) '2.0'\n-223C63 Extract OS            00 (0) 'MS-DOS'\n-223C64 General Purpose Flag  0808 (2056)\n+225AA3 CENTRAL HEADER #770   02014B50 (33639248)\n+225AA7 Created Zip Spec      14 (20) '2.0'\n+225AA8 Created OS            00 (0) 'MS-DOS'\n+225AA9 Extract Zip Spec      14 (20) '2.0'\n+225AAA Extract OS            00 (0) 'MS-DOS'\n+225AAB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223C66 Compression Method    0008 (8) 'Deflated'\n-223C68 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223C6C CRC                   838E36DD (2207135453)\n-223C70 Compressed Size       00000C5F (3167)\n-223C74 Uncompressed Size     00003312 (13074)\n-223C78 Filename Length       002B (43)\n-223C7A Extra Length          0000 (0)\n-223C7C Comment Length        0000 (0)\n-223C7E Disk Start            0000 (0)\n-223C80 Int File Attributes   0000 (0)\n+225AAD Compression Method    0008 (8) 'Deflated'\n+225AAF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225AB3 CRC                   79FA59C0 (2046450112)\n+225AB7 Compressed Size       0000082D (2093)\n+225ABB Uncompressed Size     00001CDC (7388)\n+225ABF Filename Length       003A (58)\n+225AC1 Extra Length          0000 (0)\n+225AC3 Comment Length        0000 (0)\n+225AC5 Disk Start            0000 (0)\n+225AC7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223C82 Ext File Attributes   00000000 (0)\n-223C86 Local Header Offset   000C183E (792638)\n-223C8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225AC9 Ext File Attributes   00000000 (0)\n+225ACD Local Header Offset   000E102B (921643)\n+225AD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223C8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225AD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223CB5 CENTRAL HEADER #771   02014B50 (33639248)\n-223CB9 Created Zip Spec      14 (20) '2.0'\n-223CBA Created OS            00 (0) 'MS-DOS'\n-223CBB Extract Zip Spec      14 (20) '2.0'\n-223CBC Extract OS            00 (0) 'MS-DOS'\n-223CBD General Purpose Flag  0808 (2056)\n+225B0B CENTRAL HEADER #771   02014B50 (33639248)\n+225B0F Created Zip Spec      14 (20) '2.0'\n+225B10 Created OS            00 (0) 'MS-DOS'\n+225B11 Extract Zip Spec      14 (20) '2.0'\n+225B12 Extract OS            00 (0) 'MS-DOS'\n+225B13 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223CBF Compression Method    0008 (8) 'Deflated'\n-223CC1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223CC5 CRC                   CB5B9E0C (3411779084)\n-223CC9 Compressed Size       00000C72 (3186)\n-223CCD Uncompressed Size     00003489 (13449)\n-223CD1 Filename Length       002E (46)\n-223CD3 Extra Length          0000 (0)\n-223CD5 Comment Length        0000 (0)\n-223CD7 Disk Start            0000 (0)\n-223CD9 Int File Attributes   0000 (0)\n+225B15 Compression Method    0008 (8) 'Deflated'\n+225B17 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225B1B CRC                   EF9DBA26 (4020091430)\n+225B1F Compressed Size       000006E9 (1769)\n+225B23 Uncompressed Size     00001B24 (6948)\n+225B27 Filename Length       0040 (64)\n+225B29 Extra Length          0000 (0)\n+225B2B Comment Length        0000 (0)\n+225B2D Disk Start            0000 (0)\n+225B2F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223CDB Ext File Attributes   00000000 (0)\n-223CDF Local Header Offset   000C24F6 (795894)\n-223CE3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225B31 Ext File Attributes   00000000 (0)\n+225B35 Local Header Offset   000E18C0 (923840)\n+225B39 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223CE3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225B39: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223D11 CENTRAL HEADER #772   02014B50 (33639248)\n-223D15 Created Zip Spec      14 (20) '2.0'\n-223D16 Created OS            00 (0) 'MS-DOS'\n-223D17 Extract Zip Spec      14 (20) '2.0'\n-223D18 Extract OS            00 (0) 'MS-DOS'\n-223D19 General Purpose Flag  0808 (2056)\n+225B79 CENTRAL HEADER #772   02014B50 (33639248)\n+225B7D Created Zip Spec      14 (20) '2.0'\n+225B7E Created OS            00 (0) 'MS-DOS'\n+225B7F Extract Zip Spec      14 (20) '2.0'\n+225B80 Extract OS            00 (0) 'MS-DOS'\n+225B81 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223D1B Compression Method    0008 (8) 'Deflated'\n-223D1D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223D21 CRC                   5FCFA231 (1607442993)\n-223D25 Compressed Size       0000053D (1341)\n-223D29 Uncompressed Size     00001BE6 (7142)\n-223D2D Filename Length       0026 (38)\n-223D2F Extra Length          0000 (0)\n-223D31 Comment Length        0000 (0)\n-223D33 Disk Start            0000 (0)\n-223D35 Int File Attributes   0000 (0)\n+225B83 Compression Method    0008 (8) 'Deflated'\n+225B85 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225B89 CRC                   A0D2AF4F (2698161999)\n+225B8D Compressed Size       000004F4 (1268)\n+225B91 Uncompressed Size     00001399 (5017)\n+225B95 Filename Length       003B (59)\n+225B97 Extra Length          0000 (0)\n+225B99 Comment Length        0000 (0)\n+225B9B Disk Start            0000 (0)\n+225B9D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223D37 Ext File Attributes   00000000 (0)\n-223D3B Local Header Offset   000C31C4 (799172)\n-223D3F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225B9F Ext File Attributes   00000000 (0)\n+225BA3 Local Header Offset   000E2017 (925719)\n+225BA7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223D3F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225BA7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223D65 CENTRAL HEADER #773   02014B50 (33639248)\n-223D69 Created Zip Spec      14 (20) '2.0'\n-223D6A Created OS            00 (0) 'MS-DOS'\n-223D6B Extract Zip Spec      14 (20) '2.0'\n-223D6C Extract OS            00 (0) 'MS-DOS'\n-223D6D General Purpose Flag  0808 (2056)\n+225BE2 CENTRAL HEADER #773   02014B50 (33639248)\n+225BE6 Created Zip Spec      14 (20) '2.0'\n+225BE7 Created OS            00 (0) 'MS-DOS'\n+225BE8 Extract Zip Spec      14 (20) '2.0'\n+225BE9 Extract OS            00 (0) 'MS-DOS'\n+225BEA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223D6F Compression Method    0008 (8) 'Deflated'\n-223D71 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223D75 CRC                   00000000 (0)\n-223D79 Compressed Size       00000002 (2)\n-223D7D Uncompressed Size     00000000 (0)\n-223D81 Filename Length       0023 (35)\n-223D83 Extra Length          0000 (0)\n-223D85 Comment Length        0000 (0)\n-223D87 Disk Start            0000 (0)\n-223D89 Int File Attributes   0000 (0)\n+225BEC Compression Method    0008 (8) 'Deflated'\n+225BEE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225BF2 CRC                   79ACCC49 (2041367625)\n+225BF6 Compressed Size       000003A5 (933)\n+225BFA Uncompressed Size     00000D46 (3398)\n+225BFE Filename Length       003A (58)\n+225C00 Extra Length          0000 (0)\n+225C02 Comment Length        0000 (0)\n+225C04 Disk Start            0000 (0)\n+225C06 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223D8B Ext File Attributes   00000000 (0)\n-223D8F Local Header Offset   000C3755 (800597)\n-223D93 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225C08 Ext File Attributes   00000000 (0)\n+225C0C Local Header Offset   000E2574 (927092)\n+225C10 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223D93: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225C10: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223DB6 CENTRAL HEADER #774   02014B50 (33639248)\n-223DBA Created Zip Spec      14 (20) '2.0'\n-223DBB Created OS            00 (0) 'MS-DOS'\n-223DBC Extract Zip Spec      14 (20) '2.0'\n-223DBD Extract OS            00 (0) 'MS-DOS'\n-223DBE General Purpose Flag  0808 (2056)\n+225C4A CENTRAL HEADER #774   02014B50 (33639248)\n+225C4E Created Zip Spec      14 (20) '2.0'\n+225C4F Created OS            00 (0) 'MS-DOS'\n+225C50 Extract Zip Spec      14 (20) '2.0'\n+225C51 Extract OS            00 (0) 'MS-DOS'\n+225C52 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223DC0 Compression Method    0008 (8) 'Deflated'\n-223DC2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223DC6 CRC                   53B2D875 (1404229749)\n-223DCA Compressed Size       000002D2 (722)\n-223DCE Uncompressed Size     000005A4 (1444)\n-223DD2 Filename Length       0030 (48)\n-223DD4 Extra Length          0000 (0)\n-223DD6 Comment Length        0000 (0)\n-223DD8 Disk Start            0000 (0)\n-223DDA Int File Attributes   0000 (0)\n+225C54 Compression Method    0008 (8) 'Deflated'\n+225C56 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225C5A CRC                   E768197F (3882359167)\n+225C5E Compressed Size       00000773 (1907)\n+225C62 Uncompressed Size     00001A69 (6761)\n+225C66 Filename Length       003A (58)\n+225C68 Extra Length          0000 (0)\n+225C6A Comment Length        0000 (0)\n+225C6C Disk Start            0000 (0)\n+225C6E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223DDC Ext File Attributes   00000000 (0)\n-223DE0 Local Header Offset   000C37A8 (800680)\n-223DE4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225C70 Ext File Attributes   00000000 (0)\n+225C74 Local Header Offset   000E2981 (928129)\n+225C78 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223DE4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225C78: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223E14 CENTRAL HEADER #775   02014B50 (33639248)\n-223E18 Created Zip Spec      14 (20) '2.0'\n-223E19 Created OS            00 (0) 'MS-DOS'\n-223E1A Extract Zip Spec      14 (20) '2.0'\n-223E1B Extract OS            00 (0) 'MS-DOS'\n-223E1C General Purpose Flag  0808 (2056)\n+225CB2 CENTRAL HEADER #775   02014B50 (33639248)\n+225CB6 Created Zip Spec      14 (20) '2.0'\n+225CB7 Created OS            00 (0) 'MS-DOS'\n+225CB8 Extract Zip Spec      14 (20) '2.0'\n+225CB9 Extract OS            00 (0) 'MS-DOS'\n+225CBA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223E1E Compression Method    0008 (8) 'Deflated'\n-223E20 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223E24 CRC                   07CF28F9 (131016953)\n-223E28 Compressed Size       000008BE (2238)\n-223E2C Uncompressed Size     00001D72 (7538)\n-223E30 Filename Length       0036 (54)\n-223E32 Extra Length          0000 (0)\n-223E34 Comment Length        0000 (0)\n-223E36 Disk Start            0000 (0)\n-223E38 Int File Attributes   0000 (0)\n+225CBC Compression Method    0008 (8) 'Deflated'\n+225CBE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225CC2 CRC                   010536C2 (17118914)\n+225CC6 Compressed Size       000002AF (687)\n+225CCA Uncompressed Size     00000632 (1586)\n+225CCE Filename Length       003F (63)\n+225CD0 Extra Length          0000 (0)\n+225CD2 Comment Length        0000 (0)\n+225CD4 Disk Start            0000 (0)\n+225CD6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223E3A Ext File Attributes   00000000 (0)\n-223E3E Local Header Offset   000C3AD8 (801496)\n-223E42 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225CD8 Ext File Attributes   00000000 (0)\n+225CDC Local Header Offset   000E315C (930140)\n+225CE0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223E42: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225CE0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223E78 CENTRAL HEADER #776   02014B50 (33639248)\n-223E7C Created Zip Spec      14 (20) '2.0'\n-223E7D Created OS            00 (0) 'MS-DOS'\n-223E7E Extract Zip Spec      14 (20) '2.0'\n-223E7F Extract OS            00 (0) 'MS-DOS'\n-223E80 General Purpose Flag  0808 (2056)\n+225D1F CENTRAL HEADER #776   02014B50 (33639248)\n+225D23 Created Zip Spec      14 (20) '2.0'\n+225D24 Created OS            00 (0) 'MS-DOS'\n+225D25 Extract Zip Spec      14 (20) '2.0'\n+225D26 Extract OS            00 (0) 'MS-DOS'\n+225D27 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223E82 Compression Method    0008 (8) 'Deflated'\n-223E84 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223E88 CRC                   FF8666DF (4286998239)\n-223E8C Compressed Size       00000734 (1844)\n-223E90 Uncompressed Size     00001A8A (6794)\n-223E94 Filename Length       0034 (52)\n-223E96 Extra Length          0000 (0)\n-223E98 Comment Length        0000 (0)\n-223E9A Disk Start            0000 (0)\n-223E9C Int File Attributes   0000 (0)\n+225D29 Compression Method    0008 (8) 'Deflated'\n+225D2B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225D2F CRC                   00000000 (0)\n+225D33 Compressed Size       00000002 (2)\n+225D37 Uncompressed Size     00000000 (0)\n+225D3B Filename Length       0035 (53)\n+225D3D Extra Length          0000 (0)\n+225D3F Comment Length        0000 (0)\n+225D41 Disk Start            0000 (0)\n+225D43 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223E9E Ext File Attributes   00000000 (0)\n-223EA2 Local Header Offset   000C43FA (803834)\n-223EA6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225D45 Ext File Attributes   00000000 (0)\n+225D49 Local Header Offset   000E3478 (930936)\n+225D4D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223EA6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225D4D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223EDA CENTRAL HEADER #777   02014B50 (33639248)\n-223EDE Created Zip Spec      14 (20) '2.0'\n-223EDF Created OS            00 (0) 'MS-DOS'\n-223EE0 Extract Zip Spec      14 (20) '2.0'\n-223EE1 Extract OS            00 (0) 'MS-DOS'\n-223EE2 General Purpose Flag  0808 (2056)\n+225D82 CENTRAL HEADER #777   02014B50 (33639248)\n+225D86 Created Zip Spec      14 (20) '2.0'\n+225D87 Created OS            00 (0) 'MS-DOS'\n+225D88 Extract Zip Spec      14 (20) '2.0'\n+225D89 Extract OS            00 (0) 'MS-DOS'\n+225D8A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223EE4 Compression Method    0008 (8) 'Deflated'\n-223EE6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223EEA CRC                   C4C508F0 (3301247216)\n-223EEE Compressed Size       00000333 (819)\n-223EF2 Uncompressed Size     00000751 (1873)\n-223EF6 Filename Length       002E (46)\n-223EF8 Extra Length          0000 (0)\n-223EFA Comment Length        0000 (0)\n-223EFC Disk Start            0000 (0)\n-223EFE Int File Attributes   0000 (0)\n+225D8C Compression Method    0008 (8) 'Deflated'\n+225D8E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225D92 CRC                   53B720C2 (1404510402)\n+225D96 Compressed Size       00000391 (913)\n+225D9A Uncompressed Size     000008DC (2268)\n+225D9E Filename Length       003C (60)\n+225DA0 Extra Length          0000 (0)\n+225DA2 Comment Length        0000 (0)\n+225DA4 Disk Start            0000 (0)\n+225DA6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223F00 Ext File Attributes   00000000 (0)\n-223F04 Local Header Offset   000C4B90 (805776)\n-223F08 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225DA8 Ext File Attributes   00000000 (0)\n+225DAC Local Header Offset   000E34DD (931037)\n+225DB0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223F08: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225DB0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223F36 CENTRAL HEADER #778   02014B50 (33639248)\n-223F3A Created Zip Spec      14 (20) '2.0'\n-223F3B Created OS            00 (0) 'MS-DOS'\n-223F3C Extract Zip Spec      14 (20) '2.0'\n-223F3D Extract OS            00 (0) 'MS-DOS'\n-223F3E General Purpose Flag  0808 (2056)\n+225DEC CENTRAL HEADER #778   02014B50 (33639248)\n+225DF0 Created Zip Spec      14 (20) '2.0'\n+225DF1 Created OS            00 (0) 'MS-DOS'\n+225DF2 Extract Zip Spec      14 (20) '2.0'\n+225DF3 Extract OS            00 (0) 'MS-DOS'\n+225DF4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223F40 Compression Method    0008 (8) 'Deflated'\n-223F42 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223F46 CRC                   55945694 (1435784852)\n-223F4A Compressed Size       00000839 (2105)\n-223F4E Uncompressed Size     00001B9B (7067)\n-223F52 Filename Length       0031 (49)\n-223F54 Extra Length          0000 (0)\n-223F56 Comment Length        0000 (0)\n-223F58 Disk Start            0000 (0)\n-223F5A Int File Attributes   0000 (0)\n+225DF6 Compression Method    0008 (8) 'Deflated'\n+225DF8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225DFC CRC                   7D6B90B6 (2104201398)\n+225E00 Compressed Size       00000049 (73)\n+225E04 Uncompressed Size     0000004B (75)\n+225E08 Filename Length       0043 (67)\n+225E0A Extra Length          0000 (0)\n+225E0C Comment Length        0000 (0)\n+225E0E Disk Start            0000 (0)\n+225E10 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223F5C Ext File Attributes   00000000 (0)\n-223F60 Local Header Offset   000C4F1F (806687)\n-223F64 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225E12 Ext File Attributes   00000000 (0)\n+225E16 Local Header Offset   000E38D8 (932056)\n+225E1A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223F64: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225E1A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223F95 CENTRAL HEADER #779   02014B50 (33639248)\n-223F99 Created Zip Spec      14 (20) '2.0'\n-223F9A Created OS            00 (0) 'MS-DOS'\n-223F9B Extract Zip Spec      14 (20) '2.0'\n-223F9C Extract OS            00 (0) 'MS-DOS'\n-223F9D General Purpose Flag  0808 (2056)\n+225E5D CENTRAL HEADER #779   02014B50 (33639248)\n+225E61 Created Zip Spec      14 (20) '2.0'\n+225E62 Created OS            00 (0) 'MS-DOS'\n+225E63 Extract Zip Spec      14 (20) '2.0'\n+225E64 Extract OS            00 (0) 'MS-DOS'\n+225E65 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223F9F Compression Method    0008 (8) 'Deflated'\n-223FA1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-223FA5 CRC                   CEB8A43B (3468207163)\n-223FA9 Compressed Size       00000744 (1860)\n-223FAD Uncompressed Size     00001ABC (6844)\n-223FB1 Filename Length       002F (47)\n-223FB3 Extra Length          0000 (0)\n-223FB5 Comment Length        0000 (0)\n-223FB7 Disk Start            0000 (0)\n-223FB9 Int File Attributes   0000 (0)\n+225E67 Compression Method    0008 (8) 'Deflated'\n+225E69 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225E6D CRC                   00000000 (0)\n+225E71 Compressed Size       00000002 (2)\n+225E75 Uncompressed Size     00000000 (0)\n+225E79 Filename Length       002B (43)\n+225E7B Extra Length          0000 (0)\n+225E7D Comment Length        0000 (0)\n+225E7F Disk Start            0000 (0)\n+225E81 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-223FBB Ext File Attributes   00000000 (0)\n-223FBF Local Header Offset   000C57B7 (808887)\n-223FC3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225E83 Ext File Attributes   00000000 (0)\n+225E87 Local Header Offset   000E3992 (932242)\n+225E8B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x223FC3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225E8B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-223FF2 CENTRAL HEADER #780   02014B50 (33639248)\n-223FF6 Created Zip Spec      14 (20) '2.0'\n-223FF7 Created OS            00 (0) 'MS-DOS'\n-223FF8 Extract Zip Spec      14 (20) '2.0'\n-223FF9 Extract OS            00 (0) 'MS-DOS'\n-223FFA General Purpose Flag  0808 (2056)\n+225EB6 CENTRAL HEADER #780   02014B50 (33639248)\n+225EBA Created Zip Spec      14 (20) '2.0'\n+225EBB Created OS            00 (0) 'MS-DOS'\n+225EBC Extract Zip Spec      14 (20) '2.0'\n+225EBD Extract OS            00 (0) 'MS-DOS'\n+225EBE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-223FFC Compression Method    0008 (8) 'Deflated'\n-223FFE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224002 CRC                   00000000 (0)\n-224006 Compressed Size       00000002 (2)\n-22400A Uncompressed Size     00000000 (0)\n-22400E Filename Length       0020 (32)\n-224010 Extra Length          0000 (0)\n-224012 Comment Length        0000 (0)\n-224014 Disk Start            0000 (0)\n-224016 Int File Attributes   0000 (0)\n+225EC0 Compression Method    0008 (8) 'Deflated'\n+225EC2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225EC6 CRC                   73E7CE8A (1944571530)\n+225ECA Compressed Size       00000686 (1670)\n+225ECE Uncompressed Size     000027E6 (10214)\n+225ED2 Filename Length       0048 (72)\n+225ED4 Extra Length          0000 (0)\n+225ED6 Comment Length        0000 (0)\n+225ED8 Disk Start            0000 (0)\n+225EDA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224018 Ext File Attributes   00000000 (0)\n-22401C Local Header Offset   000C5F58 (810840)\n-224020 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225EDC Ext File Attributes   00000000 (0)\n+225EE0 Local Header Offset   000E39ED (932333)\n+225EE4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224020: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225EE4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224040 CENTRAL HEADER #781   02014B50 (33639248)\n-224044 Created Zip Spec      14 (20) '2.0'\n-224045 Created OS            00 (0) 'MS-DOS'\n-224046 Extract Zip Spec      14 (20) '2.0'\n-224047 Extract OS            00 (0) 'MS-DOS'\n-224048 General Purpose Flag  0808 (2056)\n+225F2C CENTRAL HEADER #781   02014B50 (33639248)\n+225F30 Created Zip Spec      14 (20) '2.0'\n+225F31 Created OS            00 (0) 'MS-DOS'\n+225F32 Extract Zip Spec      14 (20) '2.0'\n+225F33 Extract OS            00 (0) 'MS-DOS'\n+225F34 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22404A Compression Method    0008 (8) 'Deflated'\n-22404C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224050 CRC                   339D235A (865936218)\n-224054 Compressed Size       00000378 (888)\n-224058 Uncompressed Size     00000791 (1937)\n-22405C Filename Length       003F (63)\n-22405E Extra Length          0000 (0)\n-224060 Comment Length        0000 (0)\n-224062 Disk Start            0000 (0)\n-224064 Int File Attributes   0000 (0)\n+225F36 Compression Method    0008 (8) 'Deflated'\n+225F38 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225F3C CRC                   EADF50E0 (3940503776)\n+225F40 Compressed Size       0000097F (2431)\n+225F44 Uncompressed Size     00002355 (9045)\n+225F48 Filename Length       003C (60)\n+225F4A Extra Length          0000 (0)\n+225F4C Comment Length        0000 (0)\n+225F4E Disk Start            0000 (0)\n+225F50 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224066 Ext File Attributes   00000000 (0)\n-22406A Local Header Offset   000C5FA8 (810920)\n-22406E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225F52 Ext File Attributes   00000000 (0)\n+225F56 Local Header Offset   000E40E9 (934121)\n+225F5A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22406E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225F5A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2240AD CENTRAL HEADER #782   02014B50 (33639248)\n-2240B1 Created Zip Spec      14 (20) '2.0'\n-2240B2 Created OS            00 (0) 'MS-DOS'\n-2240B3 Extract Zip Spec      14 (20) '2.0'\n-2240B4 Extract OS            00 (0) 'MS-DOS'\n-2240B5 General Purpose Flag  0808 (2056)\n+225F96 CENTRAL HEADER #782   02014B50 (33639248)\n+225F9A Created Zip Spec      14 (20) '2.0'\n+225F9B Created OS            00 (0) 'MS-DOS'\n+225F9C Extract Zip Spec      14 (20) '2.0'\n+225F9D Extract OS            00 (0) 'MS-DOS'\n+225F9E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2240B7 Compression Method    0008 (8) 'Deflated'\n-2240B9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2240BD CRC                   F30DAB50 (4077759312)\n-2240C1 Compressed Size       00000F25 (3877)\n-2240C5 Uncompressed Size     000047F4 (18420)\n-2240C9 Filename Length       0032 (50)\n-2240CB Extra Length          0000 (0)\n-2240CD Comment Length        0000 (0)\n-2240CF Disk Start            0000 (0)\n-2240D1 Int File Attributes   0000 (0)\n+225FA0 Compression Method    0008 (8) 'Deflated'\n+225FA2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+225FA6 CRC                   1CB2BCAF (481475759)\n+225FAA Compressed Size       00000AC6 (2758)\n+225FAE Uncompressed Size     0000251F (9503)\n+225FB2 Filename Length       003B (59)\n+225FB4 Extra Length          0000 (0)\n+225FB6 Comment Length        0000 (0)\n+225FB8 Disk Start            0000 (0)\n+225FBA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2240D3 Ext File Attributes   00000000 (0)\n-2240D7 Local Header Offset   000C638D (811917)\n-2240DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+225FBC Ext File Attributes   00000000 (0)\n+225FC0 Local Header Offset   000E4AD2 (936658)\n+225FC4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2240DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x225FC4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22410D CENTRAL HEADER #783   02014B50 (33639248)\n-224111 Created Zip Spec      14 (20) '2.0'\n-224112 Created OS            00 (0) 'MS-DOS'\n-224113 Extract Zip Spec      14 (20) '2.0'\n-224114 Extract OS            00 (0) 'MS-DOS'\n-224115 General Purpose Flag  0808 (2056)\n+225FFF CENTRAL HEADER #783   02014B50 (33639248)\n+226003 Created Zip Spec      14 (20) '2.0'\n+226004 Created OS            00 (0) 'MS-DOS'\n+226005 Extract Zip Spec      14 (20) '2.0'\n+226006 Extract OS            00 (0) 'MS-DOS'\n+226007 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224117 Compression Method    0008 (8) 'Deflated'\n-224119 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22411D CRC                   00000000 (0)\n-224121 Compressed Size       00000002 (2)\n-224125 Uncompressed Size     00000000 (0)\n-224129 Filename Length       0020 (32)\n-22412B Extra Length          0000 (0)\n-22412D Comment Length        0000 (0)\n-22412F Disk Start            0000 (0)\n-224131 Int File Attributes   0000 (0)\n+226009 Compression Method    0008 (8) 'Deflated'\n+22600B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22600F CRC                   7DE2A421 (2112005153)\n+226013 Compressed Size       0000075A (1882)\n+226017 Uncompressed Size     0000190A (6410)\n+22601B Filename Length       0042 (66)\n+22601D Extra Length          0000 (0)\n+22601F Comment Length        0000 (0)\n+226021 Disk Start            0000 (0)\n+226023 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224133 Ext File Attributes   00000000 (0)\n-224137 Local Header Offset   000C7312 (815890)\n-22413B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226025 Ext File Attributes   00000000 (0)\n+226029 Local Header Offset   000E5601 (939521)\n+22602D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22413B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22602D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22415B CENTRAL HEADER #784   02014B50 (33639248)\n-22415F Created Zip Spec      14 (20) '2.0'\n-224160 Created OS            00 (0) 'MS-DOS'\n-224161 Extract Zip Spec      14 (20) '2.0'\n-224162 Extract OS            00 (0) 'MS-DOS'\n-224163 General Purpose Flag  0808 (2056)\n+22606F CENTRAL HEADER #784   02014B50 (33639248)\n+226073 Created Zip Spec      14 (20) '2.0'\n+226074 Created OS            00 (0) 'MS-DOS'\n+226075 Extract Zip Spec      14 (20) '2.0'\n+226076 Extract OS            00 (0) 'MS-DOS'\n+226077 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224165 Compression Method    0008 (8) 'Deflated'\n-224167 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22416B CRC                   9409E400 (2483676160)\n-22416F Compressed Size       000003A7 (935)\n-224173 Uncompressed Size     000007F6 (2038)\n-224177 Filename Length       002E (46)\n-224179 Extra Length          0000 (0)\n-22417B Comment Length        0000 (0)\n-22417D Disk Start            0000 (0)\n-22417F Int File Attributes   0000 (0)\n+226079 Compression Method    0008 (8) 'Deflated'\n+22607B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22607F CRC                   3BA2E25A (1000530522)\n+226083 Compressed Size       000004C9 (1225)\n+226087 Uncompressed Size     00000E40 (3648)\n+22608B Filename Length       0041 (65)\n+22608D Extra Length          0000 (0)\n+22608F Comment Length        0000 (0)\n+226091 Disk Start            0000 (0)\n+226093 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224181 Ext File Attributes   00000000 (0)\n-224185 Local Header Offset   000C7362 (815970)\n-224189 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226095 Ext File Attributes   00000000 (0)\n+226099 Local Header Offset   000E5DCB (941515)\n+22609D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224189: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22609D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2241B7 CENTRAL HEADER #785   02014B50 (33639248)\n-2241BB Created Zip Spec      14 (20) '2.0'\n-2241BC Created OS            00 (0) 'MS-DOS'\n-2241BD Extract Zip Spec      14 (20) '2.0'\n-2241BE Extract OS            00 (0) 'MS-DOS'\n-2241BF General Purpose Flag  0808 (2056)\n+2260DE CENTRAL HEADER #785   02014B50 (33639248)\n+2260E2 Created Zip Spec      14 (20) '2.0'\n+2260E3 Created OS            00 (0) 'MS-DOS'\n+2260E4 Extract Zip Spec      14 (20) '2.0'\n+2260E5 Extract OS            00 (0) 'MS-DOS'\n+2260E6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2241C1 Compression Method    0008 (8) 'Deflated'\n-2241C3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2241C7 CRC                   00000000 (0)\n-2241CB Compressed Size       00000002 (2)\n-2241CF Uncompressed Size     00000000 (0)\n-2241D3 Filename Length       0017 (23)\n-2241D5 Extra Length          0000 (0)\n-2241D7 Comment Length        0000 (0)\n-2241D9 Disk Start            0000 (0)\n-2241DB Int File Attributes   0000 (0)\n+2260E8 Compression Method    0008 (8) 'Deflated'\n+2260EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2260EE CRC                   1E5B2A86 (509291142)\n+2260F2 Compressed Size       000003D1 (977)\n+2260F6 Uncompressed Size     00000A9A (2714)\n+2260FA Filename Length       0045 (69)\n+2260FC Extra Length          0000 (0)\n+2260FE Comment Length        0000 (0)\n+226100 Disk Start            0000 (0)\n+226102 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2241DD Ext File Attributes   00000000 (0)\n-2241E1 Local Header Offset   000C7765 (816997)\n-2241E5 Filename              'XXXXXXXXXXXXXXXXXXXXXXX'\n+226104 Ext File Attributes   00000000 (0)\n+226108 Local Header Offset   000E6303 (942851)\n+22610C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2241E5: Filename 'XXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22610C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2241FC CENTRAL HEADER #786   02014B50 (33639248)\n-224200 Created Zip Spec      14 (20) '2.0'\n-224201 Created OS            00 (0) 'MS-DOS'\n-224202 Extract Zip Spec      14 (20) '2.0'\n-224203 Extract OS            00 (0) 'MS-DOS'\n-224204 General Purpose Flag  0808 (2056)\n+226151 CENTRAL HEADER #786   02014B50 (33639248)\n+226155 Created Zip Spec      14 (20) '2.0'\n+226156 Created OS            00 (0) 'MS-DOS'\n+226157 Extract Zip Spec      14 (20) '2.0'\n+226158 Extract OS            00 (0) 'MS-DOS'\n+226159 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224206 Compression Method    0008 (8) 'Deflated'\n-224208 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22420C CRC                   0896EC5C (144108636)\n-224210 Compressed Size       0000070E (1806)\n-224214 Uncompressed Size     000016D6 (5846)\n-224218 Filename Length       0033 (51)\n-22421A Extra Length          0000 (0)\n-22421C Comment Length        0000 (0)\n-22421E Disk Start            0000 (0)\n-224220 Int File Attributes   0000 (0)\n+22615B Compression Method    0008 (8) 'Deflated'\n+22615D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226161 CRC                   1CDD10AA (484249770)\n+226165 Compressed Size       00000935 (2357)\n+226169 Uncompressed Size     00001FCD (8141)\n+22616D Filename Length       003B (59)\n+22616F Extra Length          0000 (0)\n+226171 Comment Length        0000 (0)\n+226173 Disk Start            0000 (0)\n+226175 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224222 Ext File Attributes   00000000 (0)\n-224226 Local Header Offset   000C77AC (817068)\n-22422A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226177 Ext File Attributes   00000000 (0)\n+22617B Local Header Offset   000E6747 (943943)\n+22617F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22422A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22617F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22425D CENTRAL HEADER #787   02014B50 (33639248)\n-224261 Created Zip Spec      14 (20) '2.0'\n-224262 Created OS            00 (0) 'MS-DOS'\n-224263 Extract Zip Spec      14 (20) '2.0'\n-224264 Extract OS            00 (0) 'MS-DOS'\n-224265 General Purpose Flag  0808 (2056)\n+2261BA CENTRAL HEADER #787   02014B50 (33639248)\n+2261BE Created Zip Spec      14 (20) '2.0'\n+2261BF Created OS            00 (0) 'MS-DOS'\n+2261C0 Extract Zip Spec      14 (20) '2.0'\n+2261C1 Extract OS            00 (0) 'MS-DOS'\n+2261C2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224267 Compression Method    0008 (8) 'Deflated'\n-224269 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22426D CRC                   7DBCFDD1 (2109537745)\n-224271 Compressed Size       000002B9 (697)\n-224275 Uncompressed Size     0000055B (1371)\n-224279 Filename Length       0034 (52)\n-22427B Extra Length          0000 (0)\n-22427D Comment Length        0000 (0)\n-22427F Disk Start            0000 (0)\n-224281 Int File Attributes   0000 (0)\n+2261C4 Compression Method    0008 (8) 'Deflated'\n+2261C6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2261CA CRC                   52A8EAC6 (1386801862)\n+2261CE Compressed Size       000005E0 (1504)\n+2261D2 Uncompressed Size     00001505 (5381)\n+2261D6 Filename Length       0042 (66)\n+2261D8 Extra Length          0000 (0)\n+2261DA Comment Length        0000 (0)\n+2261DC Disk Start            0000 (0)\n+2261DE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224283 Ext File Attributes   00000000 (0)\n-224287 Local Header Offset   000C7F1B (818971)\n-22428B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2261E0 Ext File Attributes   00000000 (0)\n+2261E4 Local Header Offset   000E70E5 (946405)\n+2261E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22428B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2261E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2242BF CENTRAL HEADER #788   02014B50 (33639248)\n-2242C3 Created Zip Spec      14 (20) '2.0'\n-2242C4 Created OS            00 (0) 'MS-DOS'\n-2242C5 Extract Zip Spec      14 (20) '2.0'\n-2242C6 Extract OS            00 (0) 'MS-DOS'\n-2242C7 General Purpose Flag  0808 (2056)\n+22622A CENTRAL HEADER #788   02014B50 (33639248)\n+22622E Created Zip Spec      14 (20) '2.0'\n+22622F Created OS            00 (0) 'MS-DOS'\n+226230 Extract Zip Spec      14 (20) '2.0'\n+226231 Extract OS            00 (0) 'MS-DOS'\n+226232 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2242C9 Compression Method    0008 (8) 'Deflated'\n-2242CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2242CF CRC                   3AC92564 (986260836)\n-2242D3 Compressed Size       0000026A (618)\n-2242D7 Uncompressed Size     00000464 (1124)\n-2242DB Filename Length       0031 (49)\n-2242DD Extra Length          0000 (0)\n-2242DF Comment Length        0000 (0)\n-2242E1 Disk Start            0000 (0)\n-2242E3 Int File Attributes   0000 (0)\n+226234 Compression Method    0008 (8) 'Deflated'\n+226236 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22623A CRC                   1AC58108 (449151240)\n+22623E Compressed Size       000002D4 (724)\n+226242 Uncompressed Size     00000679 (1657)\n+226246 Filename Length       0040 (64)\n+226248 Extra Length          0000 (0)\n+22624A Comment Length        0000 (0)\n+22624C Disk Start            0000 (0)\n+22624E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2242E5 Ext File Attributes   00000000 (0)\n-2242E9 Local Header Offset   000C8236 (819766)\n-2242ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226250 Ext File Attributes   00000000 (0)\n+226254 Local Header Offset   000E7735 (948021)\n+226258 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2242ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226258: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22431E CENTRAL HEADER #789   02014B50 (33639248)\n-224322 Created Zip Spec      14 (20) '2.0'\n-224323 Created OS            00 (0) 'MS-DOS'\n-224324 Extract Zip Spec      14 (20) '2.0'\n-224325 Extract OS            00 (0) 'MS-DOS'\n-224326 General Purpose Flag  0808 (2056)\n+226298 CENTRAL HEADER #789   02014B50 (33639248)\n+22629C Created Zip Spec      14 (20) '2.0'\n+22629D Created OS            00 (0) 'MS-DOS'\n+22629E Extract Zip Spec      14 (20) '2.0'\n+22629F Extract OS            00 (0) 'MS-DOS'\n+2262A0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224328 Compression Method    0008 (8) 'Deflated'\n-22432A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22432E CRC                   0EB290DE (246583518)\n-224332 Compressed Size       00000339 (825)\n-224336 Uncompressed Size     0000061E (1566)\n-22433A Filename Length       0021 (33)\n-22433C Extra Length          0000 (0)\n-22433E Comment Length        0000 (0)\n-224340 Disk Start            0000 (0)\n-224342 Int File Attributes   0000 (0)\n+2262A2 Compression Method    0008 (8) 'Deflated'\n+2262A4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2262A8 CRC                   377C624A (930898506)\n+2262AC Compressed Size       00000621 (1569)\n+2262B0 Uncompressed Size     00001627 (5671)\n+2262B4 Filename Length       003B (59)\n+2262B6 Extra Length          0000 (0)\n+2262B8 Comment Length        0000 (0)\n+2262BA Disk Start            0000 (0)\n+2262BC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224344 Ext File Attributes   00000000 (0)\n-224348 Local Header Offset   000C84FF (820479)\n-22434C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2262BE Ext File Attributes   00000000 (0)\n+2262C2 Local Header Offset   000E7A77 (948855)\n+2262C6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22434C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2262C6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22436D CENTRAL HEADER #790   02014B50 (33639248)\n-224371 Created Zip Spec      14 (20) '2.0'\n-224372 Created OS            00 (0) 'MS-DOS'\n-224373 Extract Zip Spec      14 (20) '2.0'\n-224374 Extract OS            00 (0) 'MS-DOS'\n-224375 General Purpose Flag  0808 (2056)\n+226301 CENTRAL HEADER #790   02014B50 (33639248)\n+226305 Created Zip Spec      14 (20) '2.0'\n+226306 Created OS            00 (0) 'MS-DOS'\n+226307 Extract Zip Spec      14 (20) '2.0'\n+226308 Extract OS            00 (0) 'MS-DOS'\n+226309 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224377 Compression Method    0008 (8) 'Deflated'\n-224379 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22437D CRC                   2A1C7A3B (706509371)\n-224381 Compressed Size       000003DE (990)\n-224385 Uncompressed Size     000008DC (2268)\n-224389 Filename Length       002B (43)\n-22438B Extra Length          0000 (0)\n-22438D Comment Length        0000 (0)\n-22438F Disk Start            0000 (0)\n-224391 Int File Attributes   0000 (0)\n+22630B Compression Method    0008 (8) 'Deflated'\n+22630D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226311 CRC                   37334079 (926105721)\n+226315 Compressed Size       000005C9 (1481)\n+226319 Uncompressed Size     00001758 (5976)\n+22631D Filename Length       0045 (69)\n+22631F Extra Length          0000 (0)\n+226321 Comment Length        0000 (0)\n+226323 Disk Start            0000 (0)\n+226325 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224393 Ext File Attributes   00000000 (0)\n-224397 Local Header Offset   000C8887 (821383)\n-22439B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226327 Ext File Attributes   00000000 (0)\n+22632B Local Header Offset   000E8101 (950529)\n+22632F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22439B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22632F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2243C6 CENTRAL HEADER #791   02014B50 (33639248)\n-2243CA Created Zip Spec      14 (20) '2.0'\n-2243CB Created OS            00 (0) 'MS-DOS'\n-2243CC Extract Zip Spec      14 (20) '2.0'\n-2243CD Extract OS            00 (0) 'MS-DOS'\n-2243CE General Purpose Flag  0808 (2056)\n+226374 CENTRAL HEADER #791   02014B50 (33639248)\n+226378 Created Zip Spec      14 (20) '2.0'\n+226379 Created OS            00 (0) 'MS-DOS'\n+22637A Extract Zip Spec      14 (20) '2.0'\n+22637B Extract OS            00 (0) 'MS-DOS'\n+22637C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2243D0 Compression Method    0008 (8) 'Deflated'\n-2243D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2243D6 CRC                   3A57EAC8 (978840264)\n-2243DA Compressed Size       000005CE (1486)\n-2243DE Uncompressed Size     0000126A (4714)\n-2243E2 Filename Length       0029 (41)\n-2243E4 Extra Length          0000 (0)\n-2243E6 Comment Length        0000 (0)\n-2243E8 Disk Start            0000 (0)\n-2243EA Int File Attributes   0000 (0)\n+22637E Compression Method    0008 (8) 'Deflated'\n+226380 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226384 CRC                   00000000 (0)\n+226388 Compressed Size       00000002 (2)\n+22638C Uncompressed Size     00000000 (0)\n+226390 Filename Length       0033 (51)\n+226392 Extra Length          0000 (0)\n+226394 Comment Length        0000 (0)\n+226396 Disk Start            0000 (0)\n+226398 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2243EC Ext File Attributes   00000000 (0)\n-2243F0 Local Header Offset   000C8CBE (822462)\n-2243F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22639A Ext File Attributes   00000000 (0)\n+22639E Local Header Offset   000E873D (952125)\n+2263A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2243F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2263A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22441D CENTRAL HEADER #792   02014B50 (33639248)\n-224421 Created Zip Spec      14 (20) '2.0'\n-224422 Created OS            00 (0) 'MS-DOS'\n-224423 Extract Zip Spec      14 (20) '2.0'\n-224424 Extract OS            00 (0) 'MS-DOS'\n-224425 General Purpose Flag  0808 (2056)\n+2263D5 CENTRAL HEADER #792   02014B50 (33639248)\n+2263D9 Created Zip Spec      14 (20) '2.0'\n+2263DA Created OS            00 (0) 'MS-DOS'\n+2263DB Extract Zip Spec      14 (20) '2.0'\n+2263DC Extract OS            00 (0) 'MS-DOS'\n+2263DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224427 Compression Method    0008 (8) 'Deflated'\n-224429 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22442D CRC                   B1AAD78E (2980763534)\n-224431 Compressed Size       00000262 (610)\n-224435 Uncompressed Size     00000463 (1123)\n-224439 Filename Length       0028 (40)\n-22443B Extra Length          0000 (0)\n-22443D Comment Length        0000 (0)\n-22443F Disk Start            0000 (0)\n-224441 Int File Attributes   0000 (0)\n+2263DF Compression Method    0008 (8) 'Deflated'\n+2263E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2263E5 CRC                   58FEAB57 (1493085015)\n+2263E9 Compressed Size       000003A4 (932)\n+2263ED Uncompressed Size     000008C3 (2243)\n+2263F1 Filename Length       0047 (71)\n+2263F3 Extra Length          0000 (0)\n+2263F5 Comment Length        0000 (0)\n+2263F7 Disk Start            0000 (0)\n+2263F9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224443 Ext File Attributes   00000000 (0)\n-224447 Local Header Offset   000C92E3 (824035)\n-22444B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2263FB Ext File Attributes   00000000 (0)\n+2263FF Local Header Offset   000E87A0 (952224)\n+226403 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22444B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226403: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224473 CENTRAL HEADER #793   02014B50 (33639248)\n-224477 Created Zip Spec      14 (20) '2.0'\n-224478 Created OS            00 (0) 'MS-DOS'\n-224479 Extract Zip Spec      14 (20) '2.0'\n-22447A Extract OS            00 (0) 'MS-DOS'\n-22447B General Purpose Flag  0808 (2056)\n+22644A CENTRAL HEADER #793   02014B50 (33639248)\n+22644E Created Zip Spec      14 (20) '2.0'\n+22644F Created OS            00 (0) 'MS-DOS'\n+226450 Extract Zip Spec      14 (20) '2.0'\n+226451 Extract OS            00 (0) 'MS-DOS'\n+226452 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22447D Compression Method    0008 (8) 'Deflated'\n-22447F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224483 CRC                   903888C3 (2419624131)\n-224487 Compressed Size       00000621 (1569)\n-22448B Uncompressed Size     0000120D (4621)\n-22448F Filename Length       0030 (48)\n-224491 Extra Length          0000 (0)\n-224493 Comment Length        0000 (0)\n-224495 Disk Start            0000 (0)\n-224497 Int File Attributes   0000 (0)\n+226454 Compression Method    0008 (8) 'Deflated'\n+226456 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22645A CRC                   A355BCB4 (2740305076)\n+22645E Compressed Size       00000D58 (3416)\n+226462 Uncompressed Size     00003AB8 (15032)\n+226466 Filename Length       0048 (72)\n+226468 Extra Length          0000 (0)\n+22646A Comment Length        0000 (0)\n+22646C Disk Start            0000 (0)\n+22646E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224499 Ext File Attributes   00000000 (0)\n-22449D Local Header Offset   000C959B (824731)\n-2244A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226470 Ext File Attributes   00000000 (0)\n+226474 Local Header Offset   000E8BB9 (953273)\n+226478 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2244A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226478: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2244D1 CENTRAL HEADER #794   02014B50 (33639248)\n-2244D5 Created Zip Spec      14 (20) '2.0'\n-2244D6 Created OS            00 (0) 'MS-DOS'\n-2244D7 Extract Zip Spec      14 (20) '2.0'\n-2244D8 Extract OS            00 (0) 'MS-DOS'\n-2244D9 General Purpose Flag  0808 (2056)\n+2264C0 CENTRAL HEADER #794   02014B50 (33639248)\n+2264C4 Created Zip Spec      14 (20) '2.0'\n+2264C5 Created OS            00 (0) 'MS-DOS'\n+2264C6 Extract Zip Spec      14 (20) '2.0'\n+2264C7 Extract OS            00 (0) 'MS-DOS'\n+2264C8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2244DB Compression Method    0008 (8) 'Deflated'\n-2244DD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2244E1 CRC                   98A61B9D (2561022877)\n-2244E5 Compressed Size       00000555 (1365)\n-2244E9 Uncompressed Size     000014BA (5306)\n-2244ED Filename Length       0026 (38)\n-2244EF Extra Length          0000 (0)\n-2244F1 Comment Length        0000 (0)\n-2244F3 Disk Start            0000 (0)\n-2244F5 Int File Attributes   0000 (0)\n+2264CA Compression Method    0008 (8) 'Deflated'\n+2264CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2264D0 CRC                   00000000 (0)\n+2264D4 Compressed Size       00000002 (2)\n+2264D8 Uncompressed Size     00000000 (0)\n+2264DC Filename Length       0036 (54)\n+2264DE Extra Length          0000 (0)\n+2264E0 Comment Length        0000 (0)\n+2264E2 Disk Start            0000 (0)\n+2264E4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2244F7 Ext File Attributes   00000000 (0)\n-2244FB Local Header Offset   000C9C1A (826394)\n-2244FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2264E6 Ext File Attributes   00000000 (0)\n+2264EA Local Header Offset   000E9987 (956807)\n+2264EE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2244FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2264EE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224525 CENTRAL HEADER #795   02014B50 (33639248)\n-224529 Created Zip Spec      14 (20) '2.0'\n-22452A Created OS            00 (0) 'MS-DOS'\n-22452B Extract Zip Spec      14 (20) '2.0'\n-22452C Extract OS            00 (0) 'MS-DOS'\n-22452D General Purpose Flag  0808 (2056)\n+226524 CENTRAL HEADER #795   02014B50 (33639248)\n+226528 Created Zip Spec      14 (20) '2.0'\n+226529 Created OS            00 (0) 'MS-DOS'\n+22652A Extract Zip Spec      14 (20) '2.0'\n+22652B Extract OS            00 (0) 'MS-DOS'\n+22652C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22452F Compression Method    0008 (8) 'Deflated'\n-224531 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224535 CRC                   1AE780F7 (451379447)\n-224539 Compressed Size       00000287 (647)\n-22453D Uncompressed Size     000004BD (1213)\n-224541 Filename Length       0033 (51)\n-224543 Extra Length          0000 (0)\n-224545 Comment Length        0000 (0)\n-224547 Disk Start            0000 (0)\n-224549 Int File Attributes   0000 (0)\n+22652E Compression Method    0008 (8) 'Deflated'\n+226530 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226534 CRC                   1D29AE65 (489270885)\n+226538 Compressed Size       000003AA (938)\n+22653C Uncompressed Size     00000924 (2340)\n+226540 Filename Length       003D (61)\n+226542 Extra Length          0000 (0)\n+226544 Comment Length        0000 (0)\n+226546 Disk Start            0000 (0)\n+226548 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22454B Ext File Attributes   00000000 (0)\n-22454F Local Header Offset   000CA1C3 (827843)\n-224553 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22654A Ext File Attributes   00000000 (0)\n+22654E Local Header Offset   000E99ED (956909)\n+226552 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224553: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226552: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224586 CENTRAL HEADER #796   02014B50 (33639248)\n-22458A Created Zip Spec      14 (20) '2.0'\n-22458B Created OS            00 (0) 'MS-DOS'\n-22458C Extract Zip Spec      14 (20) '2.0'\n-22458D Extract OS            00 (0) 'MS-DOS'\n-22458E General Purpose Flag  0808 (2056)\n+22658F CENTRAL HEADER #796   02014B50 (33639248)\n+226593 Created Zip Spec      14 (20) '2.0'\n+226594 Created OS            00 (0) 'MS-DOS'\n+226595 Extract Zip Spec      14 (20) '2.0'\n+226596 Extract OS            00 (0) 'MS-DOS'\n+226597 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224590 Compression Method    0008 (8) 'Deflated'\n-224592 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224596 CRC                   00000000 (0)\n-22459A Compressed Size       00000002 (2)\n-22459E Uncompressed Size     00000000 (0)\n-2245A2 Filename Length       001B (27)\n-2245A4 Extra Length          0000 (0)\n-2245A6 Comment Length        0000 (0)\n-2245A8 Disk Start            0000 (0)\n-2245AA Int File Attributes   0000 (0)\n+226599 Compression Method    0008 (8) 'Deflated'\n+22659B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22659F CRC                   E328D6D4 (3811104468)\n+2265A3 Compressed Size       0000004A (74)\n+2265A7 Uncompressed Size     0000004C (76)\n+2265AB Filename Length       0044 (68)\n+2265AD Extra Length          0000 (0)\n+2265AF Comment Length        0000 (0)\n+2265B1 Disk Start            0000 (0)\n+2265B3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2245AC Ext File Attributes   00000000 (0)\n-2245B0 Local Header Offset   000CA4AB (828587)\n-2245B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2265B5 Ext File Attributes   00000000 (0)\n+2265B9 Local Header Offset   000E9E02 (957954)\n+2265BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2245B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2265BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2245CF CENTRAL HEADER #797   02014B50 (33639248)\n-2245D3 Created Zip Spec      14 (20) '2.0'\n-2245D4 Created OS            00 (0) 'MS-DOS'\n-2245D5 Extract Zip Spec      14 (20) '2.0'\n-2245D6 Extract OS            00 (0) 'MS-DOS'\n-2245D7 General Purpose Flag  0808 (2056)\n+226601 CENTRAL HEADER #797   02014B50 (33639248)\n+226605 Created Zip Spec      14 (20) '2.0'\n+226606 Created OS            00 (0) 'MS-DOS'\n+226607 Extract Zip Spec      14 (20) '2.0'\n+226608 Extract OS            00 (0) 'MS-DOS'\n+226609 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2245D9 Compression Method    0008 (8) 'Deflated'\n-2245DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2245DF CRC                   86E81518 (2263356696)\n-2245E3 Compressed Size       0000022E (558)\n-2245E7 Uncompressed Size     000003E4 (996)\n-2245EB Filename Length       0037 (55)\n-2245ED Extra Length          0000 (0)\n-2245EF Comment Length        0000 (0)\n-2245F1 Disk Start            0000 (0)\n-2245F3 Int File Attributes   0000 (0)\n+22660B Compression Method    0008 (8) 'Deflated'\n+22660D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226611 CRC                   00000000 (0)\n+226615 Compressed Size       00000002 (2)\n+226619 Uncompressed Size     00000000 (0)\n+22661D Filename Length       001F (31)\n+22661F Extra Length          0000 (0)\n+226621 Comment Length        0000 (0)\n+226623 Disk Start            0000 (0)\n+226625 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2245F5 Ext File Attributes   00000000 (0)\n-2245F9 Local Header Offset   000CA4F6 (828662)\n-2245FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226627 Ext File Attributes   00000000 (0)\n+22662B Local Header Offset   000E9EBE (958142)\n+22662F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2245FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22662F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224634 CENTRAL HEADER #798   02014B50 (33639248)\n-224638 Created Zip Spec      14 (20) '2.0'\n-224639 Created OS            00 (0) 'MS-DOS'\n-22463A Extract Zip Spec      14 (20) '2.0'\n-22463B Extract OS            00 (0) 'MS-DOS'\n-22463C General Purpose Flag  0808 (2056)\n+22664E CENTRAL HEADER #798   02014B50 (33639248)\n+226652 Created Zip Spec      14 (20) '2.0'\n+226653 Created OS            00 (0) 'MS-DOS'\n+226654 Extract Zip Spec      14 (20) '2.0'\n+226655 Extract OS            00 (0) 'MS-DOS'\n+226656 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22463E Compression Method    0008 (8) 'Deflated'\n-224640 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224644 CRC                   201D5BFC (538795004)\n-224648 Compressed Size       00000621 (1569)\n-22464C Uncompressed Size     000012A8 (4776)\n-224650 Filename Length       0030 (48)\n-224652 Extra Length          0000 (0)\n-224654 Comment Length        0000 (0)\n-224656 Disk Start            0000 (0)\n-224658 Int File Attributes   0000 (0)\n+226658 Compression Method    0008 (8) 'Deflated'\n+22665A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22665E CRC                   2526A8CF (623290575)\n+226662 Compressed Size       000002E1 (737)\n+226666 Uncompressed Size     00000657 (1623)\n+22666A Filename Length       0037 (55)\n+22666C Extra Length          0000 (0)\n+22666E Comment Length        0000 (0)\n+226670 Disk Start            0000 (0)\n+226672 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22465A Ext File Attributes   00000000 (0)\n-22465E Local Header Offset   000CA789 (829321)\n-224662 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226674 Ext File Attributes   00000000 (0)\n+226678 Local Header Offset   000E9F0D (958221)\n+22667C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224662: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22667C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224692 CENTRAL HEADER #799   02014B50 (33639248)\n-224696 Created Zip Spec      14 (20) '2.0'\n-224697 Created OS            00 (0) 'MS-DOS'\n-224698 Extract Zip Spec      14 (20) '2.0'\n-224699 Extract OS            00 (0) 'MS-DOS'\n-22469A General Purpose Flag  0808 (2056)\n+2266B3 CENTRAL HEADER #799   02014B50 (33639248)\n+2266B7 Created Zip Spec      14 (20) '2.0'\n+2266B8 Created OS            00 (0) 'MS-DOS'\n+2266B9 Extract Zip Spec      14 (20) '2.0'\n+2266BA Extract OS            00 (0) 'MS-DOS'\n+2266BB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22469C Compression Method    0008 (8) 'Deflated'\n-22469E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2246A2 CRC                   E946A330 (3913720624)\n-2246A6 Compressed Size       0000031F (799)\n-2246AA Uncompressed Size     00000A39 (2617)\n-2246AE Filename Length       002F (47)\n-2246B0 Extra Length          0000 (0)\n-2246B2 Comment Length        0000 (0)\n-2246B4 Disk Start            0000 (0)\n-2246B6 Int File Attributes   0000 (0)\n+2266BD Compression Method    0008 (8) 'Deflated'\n+2266BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2266C3 CRC                   CD8B51D1 (3448459729)\n+2266C7 Compressed Size       00000232 (562)\n+2266CB Uncompressed Size     000003DC (988)\n+2266CF Filename Length       0031 (49)\n+2266D1 Extra Length          0000 (0)\n+2266D3 Comment Length        0000 (0)\n+2266D5 Disk Start            0000 (0)\n+2266D7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2246B8 Ext File Attributes   00000000 (0)\n-2246BC Local Header Offset   000CAE08 (830984)\n-2246C0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2266D9 Ext File Attributes   00000000 (0)\n+2266DD Local Header Offset   000EA253 (959059)\n+2266E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2246C0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2266E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2246EF CENTRAL HEADER #800   02014B50 (33639248)\n-2246F3 Created Zip Spec      14 (20) '2.0'\n-2246F4 Created OS            00 (0) 'MS-DOS'\n-2246F5 Extract Zip Spec      14 (20) '2.0'\n-2246F6 Extract OS            00 (0) 'MS-DOS'\n-2246F7 General Purpose Flag  0808 (2056)\n+226712 CENTRAL HEADER #800   02014B50 (33639248)\n+226716 Created Zip Spec      14 (20) '2.0'\n+226717 Created OS            00 (0) 'MS-DOS'\n+226718 Extract Zip Spec      14 (20) '2.0'\n+226719 Extract OS            00 (0) 'MS-DOS'\n+22671A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2246F9 Compression Method    0008 (8) 'Deflated'\n-2246FB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2246FF CRC                   FBAECD89 (4222537097)\n-224703 Compressed Size       00000228 (552)\n-224707 Uncompressed Size     000003C4 (964)\n-22470B Filename Length       0036 (54)\n-22470D Extra Length          0000 (0)\n-22470F Comment Length        0000 (0)\n-224711 Disk Start            0000 (0)\n-224713 Int File Attributes   0000 (0)\n+22671C Compression Method    0008 (8) 'Deflated'\n+22671E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226722 CRC                   322BAD20 (841723168)\n+226726 Compressed Size       00000333 (819)\n+22672A Uncompressed Size     00000700 (1792)\n+22672E Filename Length       002D (45)\n+226730 Extra Length          0000 (0)\n+226732 Comment Length        0000 (0)\n+226734 Disk Start            0000 (0)\n+226736 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224715 Ext File Attributes   00000000 (0)\n-224719 Local Header Offset   000CB184 (831876)\n-22471D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226738 Ext File Attributes   00000000 (0)\n+22673C Local Header Offset   000EA4E4 (959716)\n+226740 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22471D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226740: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224753 CENTRAL HEADER #801   02014B50 (33639248)\n-224757 Created Zip Spec      14 (20) '2.0'\n-224758 Created OS            00 (0) 'MS-DOS'\n-224759 Extract Zip Spec      14 (20) '2.0'\n-22475A Extract OS            00 (0) 'MS-DOS'\n-22475B General Purpose Flag  0808 (2056)\n+22676D CENTRAL HEADER #801   02014B50 (33639248)\n+226771 Created Zip Spec      14 (20) '2.0'\n+226772 Created OS            00 (0) 'MS-DOS'\n+226773 Extract Zip Spec      14 (20) '2.0'\n+226774 Extract OS            00 (0) 'MS-DOS'\n+226775 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22475D Compression Method    0008 (8) 'Deflated'\n-22475F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224763 CRC                   E22DB581 (3794646401)\n-224767 Compressed Size       00000472 (1138)\n-22476B Uncompressed Size     00000BEE (3054)\n-22476F Filename Length       0033 (51)\n-224771 Extra Length          0000 (0)\n-224773 Comment Length        0000 (0)\n-224775 Disk Start            0000 (0)\n-224777 Int File Attributes   0000 (0)\n+226777 Compression Method    0008 (8) 'Deflated'\n+226779 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22677D CRC                   9A56CC71 (2589379697)\n+226781 Compressed Size       0000065D (1629)\n+226785 Uncompressed Size     000019AA (6570)\n+226789 Filename Length       002E (46)\n+22678B Extra Length          0000 (0)\n+22678D Comment Length        0000 (0)\n+22678F Disk Start            0000 (0)\n+226791 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224779 Ext File Attributes   00000000 (0)\n-22477D Local Header Offset   000CB410 (832528)\n-224781 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226793 Ext File Attributes   00000000 (0)\n+226797 Local Header Offset   000EA872 (960626)\n+22679B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224781: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22679B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2247B4 CENTRAL HEADER #802   02014B50 (33639248)\n-2247B8 Created Zip Spec      14 (20) '2.0'\n-2247B9 Created OS            00 (0) 'MS-DOS'\n-2247BA Extract Zip Spec      14 (20) '2.0'\n-2247BB Extract OS            00 (0) 'MS-DOS'\n-2247BC General Purpose Flag  0808 (2056)\n+2267C9 CENTRAL HEADER #802   02014B50 (33639248)\n+2267CD Created Zip Spec      14 (20) '2.0'\n+2267CE Created OS            00 (0) 'MS-DOS'\n+2267CF Extract Zip Spec      14 (20) '2.0'\n+2267D0 Extract OS            00 (0) 'MS-DOS'\n+2267D1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2247BE Compression Method    0008 (8) 'Deflated'\n-2247C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2247C4 CRC                   02426CD5 (37907669)\n-2247C8 Compressed Size       0000079A (1946)\n-2247CC Uncompressed Size     00001B9D (7069)\n-2247D0 Filename Length       002D (45)\n-2247D2 Extra Length          0000 (0)\n-2247D4 Comment Length        0000 (0)\n-2247D6 Disk Start            0000 (0)\n-2247D8 Int File Attributes   0000 (0)\n+2267D3 Compression Method    0008 (8) 'Deflated'\n+2267D5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2267D9 CRC                   BBB4B4AC (3149182124)\n+2267DD Compressed Size       00000285 (645)\n+2267E1 Uncompressed Size     000007E6 (2022)\n+2267E5 Filename Length       0033 (51)\n+2267E7 Extra Length          0000 (0)\n+2267E9 Comment Length        0000 (0)\n+2267EB Disk Start            0000 (0)\n+2267ED Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2247DA Ext File Attributes   00000000 (0)\n-2247DE Local Header Offset   000CB8E3 (833763)\n-2247E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2267EF Ext File Attributes   00000000 (0)\n+2267F3 Local Header Offset   000EAF2B (962347)\n+2267F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2247E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2267F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22480F CENTRAL HEADER #803   02014B50 (33639248)\n-224813 Created Zip Spec      14 (20) '2.0'\n-224814 Created OS            00 (0) 'MS-DOS'\n-224815 Extract Zip Spec      14 (20) '2.0'\n-224816 Extract OS            00 (0) 'MS-DOS'\n-224817 General Purpose Flag  0808 (2056)\n+22682A CENTRAL HEADER #803   02014B50 (33639248)\n+22682E Created Zip Spec      14 (20) '2.0'\n+22682F Created OS            00 (0) 'MS-DOS'\n+226830 Extract Zip Spec      14 (20) '2.0'\n+226831 Extract OS            00 (0) 'MS-DOS'\n+226832 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224819 Compression Method    0008 (8) 'Deflated'\n-22481B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22481F CRC                   641CBA7B (1679604347)\n-224823 Compressed Size       00000430 (1072)\n-224827 Uncompressed Size     00000BB0 (2992)\n-22482B Filename Length       0030 (48)\n-22482D Extra Length          0000 (0)\n-22482F Comment Length        0000 (0)\n-224831 Disk Start            0000 (0)\n-224833 Int File Attributes   0000 (0)\n+226834 Compression Method    0008 (8) 'Deflated'\n+226836 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22683A CRC                   302E6CD8 (808348888)\n+22683E Compressed Size       0000029D (669)\n+226842 Uncompressed Size     000004FA (1274)\n+226846 Filename Length       002F (47)\n+226848 Extra Length          0000 (0)\n+22684A Comment Length        0000 (0)\n+22684C Disk Start            0000 (0)\n+22684E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224835 Ext File Attributes   00000000 (0)\n-224839 Local Header Offset   000CC0D8 (835800)\n-22483D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226850 Ext File Attributes   00000000 (0)\n+226854 Local Header Offset   000EB211 (963089)\n+226858 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22483D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226858: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22486D CENTRAL HEADER #804   02014B50 (33639248)\n-224871 Created Zip Spec      14 (20) '2.0'\n-224872 Created OS            00 (0) 'MS-DOS'\n-224873 Extract Zip Spec      14 (20) '2.0'\n-224874 Extract OS            00 (0) 'MS-DOS'\n-224875 General Purpose Flag  0808 (2056)\n+226887 CENTRAL HEADER #804   02014B50 (33639248)\n+22688B Created Zip Spec      14 (20) '2.0'\n+22688C Created OS            00 (0) 'MS-DOS'\n+22688D Extract Zip Spec      14 (20) '2.0'\n+22688E Extract OS            00 (0) 'MS-DOS'\n+22688F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224877 Compression Method    0008 (8) 'Deflated'\n-224879 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22487D CRC                   C652D326 (3327316774)\n-224881 Compressed Size       000003C2 (962)\n-224885 Uncompressed Size     00000A71 (2673)\n-224889 Filename Length       0033 (51)\n-22488B Extra Length          0000 (0)\n-22488D Comment Length        0000 (0)\n-22488F Disk Start            0000 (0)\n-224891 Int File Attributes   0000 (0)\n+226891 Compression Method    0008 (8) 'Deflated'\n+226893 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226897 CRC                   6ADC9301 (1792840449)\n+22689B Compressed Size       0000022E (558)\n+22689F Uncompressed Size     000003E4 (996)\n+2268A3 Filename Length       0031 (49)\n+2268A5 Extra Length          0000 (0)\n+2268A7 Comment Length        0000 (0)\n+2268A9 Disk Start            0000 (0)\n+2268AB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224893 Ext File Attributes   00000000 (0)\n-224897 Local Header Offset   000CC566 (836966)\n-22489B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2268AD Ext File Attributes   00000000 (0)\n+2268B1 Local Header Offset   000EB50B (963851)\n+2268B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22489B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2268B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2248CE CENTRAL HEADER #805   02014B50 (33639248)\n-2248D2 Created Zip Spec      14 (20) '2.0'\n-2248D3 Created OS            00 (0) 'MS-DOS'\n-2248D4 Extract Zip Spec      14 (20) '2.0'\n-2248D5 Extract OS            00 (0) 'MS-DOS'\n-2248D6 General Purpose Flag  0808 (2056)\n+2268E6 CENTRAL HEADER #805   02014B50 (33639248)\n+2268EA Created Zip Spec      14 (20) '2.0'\n+2268EB Created OS            00 (0) 'MS-DOS'\n+2268EC Extract Zip Spec      14 (20) '2.0'\n+2268ED Extract OS            00 (0) 'MS-DOS'\n+2268EE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2248D8 Compression Method    0008 (8) 'Deflated'\n-2248DA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2248DE CRC                   DE4FB79A (3729766298)\n-2248E2 Compressed Size       000006C2 (1730)\n-2248E6 Uncompressed Size     00001A0D (6669)\n-2248EA Filename Length       002D (45)\n-2248EC Extra Length          0000 (0)\n-2248EE Comment Length        0000 (0)\n-2248F0 Disk Start            0000 (0)\n-2248F2 Int File Attributes   0000 (0)\n+2268F0 Compression Method    0008 (8) 'Deflated'\n+2268F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2268F6 CRC                   00000000 (0)\n+2268FA Compressed Size       00000002 (2)\n+2268FE Uncompressed Size     00000000 (0)\n+226902 Filename Length       0025 (37)\n+226904 Extra Length          0000 (0)\n+226906 Comment Length        0000 (0)\n+226908 Disk Start            0000 (0)\n+22690A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2248F4 Ext File Attributes   00000000 (0)\n-2248F8 Local Header Offset   000CC989 (838025)\n-2248FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22690C Ext File Attributes   00000000 (0)\n+226910 Local Header Offset   000EB798 (964504)\n+226914 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2248FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226914: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224929 CENTRAL HEADER #806   02014B50 (33639248)\n-22492D Created Zip Spec      14 (20) '2.0'\n-22492E Created OS            00 (0) 'MS-DOS'\n-22492F Extract Zip Spec      14 (20) '2.0'\n-224930 Extract OS            00 (0) 'MS-DOS'\n-224931 General Purpose Flag  0808 (2056)\n+226939 CENTRAL HEADER #806   02014B50 (33639248)\n+22693D Created Zip Spec      14 (20) '2.0'\n+22693E Created OS            00 (0) 'MS-DOS'\n+22693F Extract Zip Spec      14 (20) '2.0'\n+226940 Extract OS            00 (0) 'MS-DOS'\n+226941 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224933 Compression Method    0008 (8) 'Deflated'\n-224935 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224939 CRC                   C6C2FD7D (3334667645)\n-22493D Compressed Size       0000056D (1389)\n-224941 Uncompressed Size     0000110A (4362)\n-224945 Filename Length       0031 (49)\n-224947 Extra Length          0000 (0)\n-224949 Comment Length        0000 (0)\n-22494B Disk Start            0000 (0)\n-22494D Int File Attributes   0000 (0)\n+226943 Compression Method    0008 (8) 'Deflated'\n+226945 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226949 CRC                   F69577E7 (4136990695)\n+22694D Compressed Size       0000026D (621)\n+226951 Uncompressed Size     0000048A (1162)\n+226955 Filename Length       0041 (65)\n+226957 Extra Length          0000 (0)\n+226959 Comment Length        0000 (0)\n+22695B Disk Start            0000 (0)\n+22695D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22494F Ext File Attributes   00000000 (0)\n-224953 Local Header Offset   000CD0A6 (839846)\n-224957 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22695F Ext File Attributes   00000000 (0)\n+226963 Local Header Offset   000EB7ED (964589)\n+226967 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224957: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226967: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224988 CENTRAL HEADER #807   02014B50 (33639248)\n-22498C Created Zip Spec      14 (20) '2.0'\n-22498D Created OS            00 (0) 'MS-DOS'\n-22498E Extract Zip Spec      14 (20) '2.0'\n-22498F Extract OS            00 (0) 'MS-DOS'\n-224990 General Purpose Flag  0808 (2056)\n+2269A8 CENTRAL HEADER #807   02014B50 (33639248)\n+2269AC Created Zip Spec      14 (20) '2.0'\n+2269AD Created OS            00 (0) 'MS-DOS'\n+2269AE Extract Zip Spec      14 (20) '2.0'\n+2269AF Extract OS            00 (0) 'MS-DOS'\n+2269B0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224992 Compression Method    0008 (8) 'Deflated'\n-224994 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224998 CRC                   92839F02 (2458099458)\n-22499C Compressed Size       00000434 (1076)\n-2249A0 Uncompressed Size     00000C1C (3100)\n-2249A4 Filename Length       002F (47)\n-2249A6 Extra Length          0000 (0)\n-2249A8 Comment Length        0000 (0)\n-2249AA Disk Start            0000 (0)\n-2249AC Int File Attributes   0000 (0)\n+2269B2 Compression Method    0008 (8) 'Deflated'\n+2269B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2269B8 CRC                   93092688 (2466850440)\n+2269BC Compressed Size       00000F85 (3973)\n+2269C0 Uncompressed Size     000042E1 (17121)\n+2269C4 Filename Length       0035 (53)\n+2269C6 Extra Length          0000 (0)\n+2269C8 Comment Length        0000 (0)\n+2269CA Disk Start            0000 (0)\n+2269CC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2249AE Ext File Attributes   00000000 (0)\n-2249B2 Local Header Offset   000CD672 (841330)\n-2249B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2269CE Ext File Attributes   00000000 (0)\n+2269D2 Local Header Offset   000EBAC9 (965321)\n+2269D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2249B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2269D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2249E5 CENTRAL HEADER #808   02014B50 (33639248)\n-2249E9 Created Zip Spec      14 (20) '2.0'\n-2249EA Created OS            00 (0) 'MS-DOS'\n-2249EB Extract Zip Spec      14 (20) '2.0'\n-2249EC Extract OS            00 (0) 'MS-DOS'\n-2249ED General Purpose Flag  0808 (2056)\n+226A0B CENTRAL HEADER #808   02014B50 (33639248)\n+226A0F Created Zip Spec      14 (20) '2.0'\n+226A10 Created OS            00 (0) 'MS-DOS'\n+226A11 Extract Zip Spec      14 (20) '2.0'\n+226A12 Extract OS            00 (0) 'MS-DOS'\n+226A13 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2249EF Compression Method    0008 (8) 'Deflated'\n-2249F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2249F5 CRC                   ED067114 (3976622356)\n-2249F9 Compressed Size       00000790 (1936)\n-2249FD Uncompressed Size     00001C7D (7293)\n-224A01 Filename Length       0031 (49)\n-224A03 Extra Length          0000 (0)\n-224A05 Comment Length        0000 (0)\n-224A07 Disk Start            0000 (0)\n-224A09 Int File Attributes   0000 (0)\n+226A15 Compression Method    0008 (8) 'Deflated'\n+226A17 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226A1B CRC                   29CC663D (701261373)\n+226A1F Compressed Size       0000173E (5950)\n+226A23 Uncompressed Size     000071B8 (29112)\n+226A27 Filename Length       003C (60)\n+226A29 Extra Length          0000 (0)\n+226A2B Comment Length        0000 (0)\n+226A2D Disk Start            0000 (0)\n+226A2F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224A0B Ext File Attributes   00000000 (0)\n-224A0F Local Header Offset   000CDB03 (842499)\n-224A13 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226A31 Ext File Attributes   00000000 (0)\n+226A35 Local Header Offset   000ECAB1 (969393)\n+226A39 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224A13: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226A39: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224A44 CENTRAL HEADER #809   02014B50 (33639248)\n-224A48 Created Zip Spec      14 (20) '2.0'\n-224A49 Created OS            00 (0) 'MS-DOS'\n-224A4A Extract Zip Spec      14 (20) '2.0'\n-224A4B Extract OS            00 (0) 'MS-DOS'\n-224A4C General Purpose Flag  0808 (2056)\n+226A75 CENTRAL HEADER #809   02014B50 (33639248)\n+226A79 Created Zip Spec      14 (20) '2.0'\n+226A7A Created OS            00 (0) 'MS-DOS'\n+226A7B Extract Zip Spec      14 (20) '2.0'\n+226A7C Extract OS            00 (0) 'MS-DOS'\n+226A7D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224A4E Compression Method    0008 (8) 'Deflated'\n-224A50 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224A54 CRC                   00000000 (0)\n-224A58 Compressed Size       00000002 (2)\n-224A5C Uncompressed Size     00000000 (0)\n-224A60 Filename Length       001D (29)\n-224A62 Extra Length          0000 (0)\n-224A64 Comment Length        0000 (0)\n-224A66 Disk Start            0000 (0)\n-224A68 Int File Attributes   0000 (0)\n+226A7F Compression Method    0008 (8) 'Deflated'\n+226A81 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226A85 CRC                   11BF3CA1 (297745569)\n+226A89 Compressed Size       00000258 (600)\n+226A8D Uncompressed Size     0000049E (1182)\n+226A91 Filename Length       003A (58)\n+226A93 Extra Length          0000 (0)\n+226A95 Comment Length        0000 (0)\n+226A97 Disk Start            0000 (0)\n+226A99 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224A6A Ext File Attributes   00000000 (0)\n-224A6E Local Header Offset   000CE2F2 (844530)\n-224A72 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226A9B Ext File Attributes   00000000 (0)\n+226A9F Local Header Offset   000EE259 (975449)\n+226AA3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224A72: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226AA3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224A8F CENTRAL HEADER #810   02014B50 (33639248)\n-224A93 Created Zip Spec      14 (20) '2.0'\n-224A94 Created OS            00 (0) 'MS-DOS'\n-224A95 Extract Zip Spec      14 (20) '2.0'\n-224A96 Extract OS            00 (0) 'MS-DOS'\n-224A97 General Purpose Flag  0808 (2056)\n+226ADD CENTRAL HEADER #810   02014B50 (33639248)\n+226AE1 Created Zip Spec      14 (20) '2.0'\n+226AE2 Created OS            00 (0) 'MS-DOS'\n+226AE3 Extract Zip Spec      14 (20) '2.0'\n+226AE4 Extract OS            00 (0) 'MS-DOS'\n+226AE5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224A99 Compression Method    0008 (8) 'Deflated'\n-224A9B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224A9F CRC                   D7F884E9 (3623388393)\n-224AA3 Compressed Size       00000204 (516)\n-224AA7 Uncompressed Size     00000381 (897)\n-224AAB Filename Length       002D (45)\n-224AAD Extra Length          0000 (0)\n-224AAF Comment Length        0000 (0)\n-224AB1 Disk Start            0000 (0)\n-224AB3 Int File Attributes   0000 (0)\n+226AE7 Compression Method    0008 (8) 'Deflated'\n+226AE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226AED CRC                   8B7AC527 (2340078887)\n+226AF1 Compressed Size       00000439 (1081)\n+226AF5 Uncompressed Size     00000DCC (3532)\n+226AF9 Filename Length       0034 (52)\n+226AFB Extra Length          0000 (0)\n+226AFD Comment Length        0000 (0)\n+226AFF Disk Start            0000 (0)\n+226B01 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224AB5 Ext File Attributes   00000000 (0)\n-224AB9 Local Header Offset   000CE33F (844607)\n-224ABD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226B03 Ext File Attributes   00000000 (0)\n+226B07 Local Header Offset   000EE519 (976153)\n+226B0B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224ABD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226B0B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224AEA CENTRAL HEADER #811   02014B50 (33639248)\n-224AEE Created Zip Spec      14 (20) '2.0'\n-224AEF Created OS            00 (0) 'MS-DOS'\n-224AF0 Extract Zip Spec      14 (20) '2.0'\n-224AF1 Extract OS            00 (0) 'MS-DOS'\n-224AF2 General Purpose Flag  0808 (2056)\n+226B3F CENTRAL HEADER #811   02014B50 (33639248)\n+226B43 Created Zip Spec      14 (20) '2.0'\n+226B44 Created OS            00 (0) 'MS-DOS'\n+226B45 Extract Zip Spec      14 (20) '2.0'\n+226B46 Extract OS            00 (0) 'MS-DOS'\n+226B47 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224AF4 Compression Method    0008 (8) 'Deflated'\n-224AF6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224AFA CRC                   28AB9AE3 (682334947)\n-224AFE Compressed Size       0000023B (571)\n-224B02 Uncompressed Size     00000411 (1041)\n-224B06 Filename Length       002D (45)\n-224B08 Extra Length          0000 (0)\n-224B0A Comment Length        0000 (0)\n-224B0C Disk Start            0000 (0)\n-224B0E Int File Attributes   0000 (0)\n+226B49 Compression Method    0008 (8) 'Deflated'\n+226B4B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226B4F CRC                   117709A7 (293013927)\n+226B53 Compressed Size       000002BF (703)\n+226B57 Uncompressed Size     0000056A (1386)\n+226B5B Filename Length       0035 (53)\n+226B5D Extra Length          0000 (0)\n+226B5F Comment Length        0000 (0)\n+226B61 Disk Start            0000 (0)\n+226B63 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224B10 Ext File Attributes   00000000 (0)\n-224B14 Local Header Offset   000CE59E (845214)\n-224B18 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226B65 Ext File Attributes   00000000 (0)\n+226B69 Local Header Offset   000EE9B4 (977332)\n+226B6D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224B18: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226B6D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224B45 CENTRAL HEADER #812   02014B50 (33639248)\n-224B49 Created Zip Spec      14 (20) '2.0'\n-224B4A Created OS            00 (0) 'MS-DOS'\n-224B4B Extract Zip Spec      14 (20) '2.0'\n-224B4C Extract OS            00 (0) 'MS-DOS'\n-224B4D General Purpose Flag  0808 (2056)\n+226BA2 CENTRAL HEADER #812   02014B50 (33639248)\n+226BA6 Created Zip Spec      14 (20) '2.0'\n+226BA7 Created OS            00 (0) 'MS-DOS'\n+226BA8 Extract Zip Spec      14 (20) '2.0'\n+226BA9 Extract OS            00 (0) 'MS-DOS'\n+226BAA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224B4F Compression Method    0008 (8) 'Deflated'\n-224B51 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224B55 CRC                   9CAA7033 (2628415539)\n-224B59 Compressed Size       0000023E (574)\n-224B5D Uncompressed Size     00000426 (1062)\n-224B61 Filename Length       0035 (53)\n-224B63 Extra Length          0000 (0)\n-224B65 Comment Length        0000 (0)\n-224B67 Disk Start            0000 (0)\n-224B69 Int File Attributes   0000 (0)\n+226BAC Compression Method    0008 (8) 'Deflated'\n+226BAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226BB2 CRC                   00000000 (0)\n+226BB6 Compressed Size       00000002 (2)\n+226BBA Uncompressed Size     00000000 (0)\n+226BBE Filename Length       0026 (38)\n+226BC0 Extra Length          0000 (0)\n+226BC2 Comment Length        0000 (0)\n+226BC4 Disk Start            0000 (0)\n+226BC6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224B6B Ext File Attributes   00000000 (0)\n-224B6F Local Header Offset   000CE834 (845876)\n-224B73 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226BC8 Ext File Attributes   00000000 (0)\n+226BCC Local Header Offset   000EECD6 (978134)\n+226BD0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224B73: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226BD0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224BA8 CENTRAL HEADER #813   02014B50 (33639248)\n-224BAC Created Zip Spec      14 (20) '2.0'\n-224BAD Created OS            00 (0) 'MS-DOS'\n-224BAE Extract Zip Spec      14 (20) '2.0'\n-224BAF Extract OS            00 (0) 'MS-DOS'\n-224BB0 General Purpose Flag  0808 (2056)\n+226BF6 CENTRAL HEADER #813   02014B50 (33639248)\n+226BFA Created Zip Spec      14 (20) '2.0'\n+226BFB Created OS            00 (0) 'MS-DOS'\n+226BFC Extract Zip Spec      14 (20) '2.0'\n+226BFD Extract OS            00 (0) 'MS-DOS'\n+226BFE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224BB2 Compression Method    0008 (8) 'Deflated'\n-224BB4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224BB8 CRC                   C2B7ABEC (3266817004)\n-224BBC Compressed Size       0000030F (783)\n-224BC0 Uncompressed Size     000007C9 (1993)\n-224BC4 Filename Length       0032 (50)\n-224BC6 Extra Length          0000 (0)\n-224BC8 Comment Length        0000 (0)\n-224BCA Disk Start            0000 (0)\n-224BCC Int File Attributes   0000 (0)\n+226C00 Compression Method    0008 (8) 'Deflated'\n+226C02 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226C06 CRC                   A1B16DDC (2712759772)\n+226C0A Compressed Size       000004E7 (1255)\n+226C0E Uncompressed Size     00000BB9 (3001)\n+226C12 Filename Length       0035 (53)\n+226C14 Extra Length          0000 (0)\n+226C16 Comment Length        0000 (0)\n+226C18 Disk Start            0000 (0)\n+226C1A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224BCE Ext File Attributes   00000000 (0)\n-224BD2 Local Header Offset   000CEAD5 (846549)\n-224BD6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226C1C Ext File Attributes   00000000 (0)\n+226C20 Local Header Offset   000EED2C (978220)\n+226C24 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224BD6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226C24: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224C08 CENTRAL HEADER #814   02014B50 (33639248)\n-224C0C Created Zip Spec      14 (20) '2.0'\n-224C0D Created OS            00 (0) 'MS-DOS'\n-224C0E Extract Zip Spec      14 (20) '2.0'\n-224C0F Extract OS            00 (0) 'MS-DOS'\n-224C10 General Purpose Flag  0808 (2056)\n+226C59 CENTRAL HEADER #814   02014B50 (33639248)\n+226C5D Created Zip Spec      14 (20) '2.0'\n+226C5E Created OS            00 (0) 'MS-DOS'\n+226C5F Extract Zip Spec      14 (20) '2.0'\n+226C60 Extract OS            00 (0) 'MS-DOS'\n+226C61 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224C12 Compression Method    0008 (8) 'Deflated'\n-224C14 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224C18 CRC                   2C4FF5E6 (743437798)\n-224C1C Compressed Size       00000351 (849)\n-224C20 Uncompressed Size     0000075E (1886)\n-224C24 Filename Length       0030 (48)\n-224C26 Extra Length          0000 (0)\n-224C28 Comment Length        0000 (0)\n-224C2A Disk Start            0000 (0)\n-224C2C Int File Attributes   0000 (0)\n+226C63 Compression Method    0008 (8) 'Deflated'\n+226C65 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226C69 CRC                   00000000 (0)\n+226C6D Compressed Size       00000002 (2)\n+226C71 Uncompressed Size     00000000 (0)\n+226C75 Filename Length       0027 (39)\n+226C77 Extra Length          0000 (0)\n+226C79 Comment Length        0000 (0)\n+226C7B Disk Start            0000 (0)\n+226C7D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224C2E Ext File Attributes   00000000 (0)\n-224C32 Local Header Offset   000CEE44 (847428)\n-224C36 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226C7F Ext File Attributes   00000000 (0)\n+226C83 Local Header Offset   000EF276 (979574)\n+226C87 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224C36: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226C87: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224C66 CENTRAL HEADER #815   02014B50 (33639248)\n-224C6A Created Zip Spec      14 (20) '2.0'\n-224C6B Created OS            00 (0) 'MS-DOS'\n-224C6C Extract Zip Spec      14 (20) '2.0'\n-224C6D Extract OS            00 (0) 'MS-DOS'\n-224C6E General Purpose Flag  0808 (2056)\n+226CAE CENTRAL HEADER #815   02014B50 (33639248)\n+226CB2 Created Zip Spec      14 (20) '2.0'\n+226CB3 Created OS            00 (0) 'MS-DOS'\n+226CB4 Extract Zip Spec      14 (20) '2.0'\n+226CB5 Extract OS            00 (0) 'MS-DOS'\n+226CB6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224C70 Compression Method    0008 (8) 'Deflated'\n-224C72 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224C76 CRC                   420D2C18 (1108159512)\n-224C7A Compressed Size       00000240 (576)\n-224C7E Uncompressed Size     0000042C (1068)\n-224C82 Filename Length       0038 (56)\n-224C84 Extra Length          0000 (0)\n-224C86 Comment Length        0000 (0)\n-224C88 Disk Start            0000 (0)\n-224C8A Int File Attributes   0000 (0)\n+226CB8 Compression Method    0008 (8) 'Deflated'\n+226CBA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226CBE CRC                   43B8CAA4 (1136183972)\n+226CC2 Compressed Size       000006CC (1740)\n+226CC6 Uncompressed Size     00001D14 (7444)\n+226CCA Filename Length       003E (62)\n+226CCC Extra Length          0000 (0)\n+226CCE Comment Length        0000 (0)\n+226CD0 Disk Start            0000 (0)\n+226CD2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224C8C Ext File Attributes   00000000 (0)\n-224C90 Local Header Offset   000CF1F3 (848371)\n-224C94 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226CD4 Ext File Attributes   00000000 (0)\n+226CD8 Local Header Offset   000EF2CD (979661)\n+226CDC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224C94: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226CDC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224CCC CENTRAL HEADER #816   02014B50 (33639248)\n-224CD0 Created Zip Spec      14 (20) '2.0'\n-224CD1 Created OS            00 (0) 'MS-DOS'\n-224CD2 Extract Zip Spec      14 (20) '2.0'\n-224CD3 Extract OS            00 (0) 'MS-DOS'\n-224CD4 General Purpose Flag  0808 (2056)\n+226D1A CENTRAL HEADER #816   02014B50 (33639248)\n+226D1E Created Zip Spec      14 (20) '2.0'\n+226D1F Created OS            00 (0) 'MS-DOS'\n+226D20 Extract Zip Spec      14 (20) '2.0'\n+226D21 Extract OS            00 (0) 'MS-DOS'\n+226D22 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224CD6 Compression Method    0008 (8) 'Deflated'\n-224CD8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224CDC CRC                   00000000 (0)\n-224CE0 Compressed Size       00000002 (2)\n-224CE4 Uncompressed Size     00000000 (0)\n-224CE8 Filename Length       001D (29)\n-224CEA Extra Length          0000 (0)\n-224CEC Comment Length        0000 (0)\n-224CEE Disk Start            0000 (0)\n-224CF0 Int File Attributes   0000 (0)\n+226D24 Compression Method    0008 (8) 'Deflated'\n+226D26 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226D2A CRC                   91BA560C (2444908044)\n+226D2E Compressed Size       00000036 (54)\n+226D32 Uncompressed Size     0000003B (59)\n+226D36 Filename Length       0046 (70)\n+226D38 Extra Length          0000 (0)\n+226D3A Comment Length        0000 (0)\n+226D3C Disk Start            0000 (0)\n+226D3E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224CF2 Ext File Attributes   00000000 (0)\n-224CF6 Local Header Offset   000CF499 (849049)\n-224CFA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226D40 Ext File Attributes   00000000 (0)\n+226D44 Local Header Offset   000EFA05 (981509)\n+226D48 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224CFA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226D48: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224D17 CENTRAL HEADER #817   02014B50 (33639248)\n-224D1B Created Zip Spec      14 (20) '2.0'\n-224D1C Created OS            00 (0) 'MS-DOS'\n-224D1D Extract Zip Spec      14 (20) '2.0'\n-224D1E Extract OS            00 (0) 'MS-DOS'\n-224D1F General Purpose Flag  0808 (2056)\n+226D8E CENTRAL HEADER #817   02014B50 (33639248)\n+226D92 Created Zip Spec      14 (20) '2.0'\n+226D93 Created OS            00 (0) 'MS-DOS'\n+226D94 Extract Zip Spec      14 (20) '2.0'\n+226D95 Extract OS            00 (0) 'MS-DOS'\n+226D96 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224D21 Compression Method    0008 (8) 'Deflated'\n-224D23 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224D27 CRC                   40BAC24E (1085981262)\n-224D2B Compressed Size       000003D7 (983)\n-224D2F Uncompressed Size     00000B49 (2889)\n-224D33 Filename Length       0036 (54)\n-224D35 Extra Length          0000 (0)\n-224D37 Comment Length        0000 (0)\n-224D39 Disk Start            0000 (0)\n-224D3B Int File Attributes   0000 (0)\n+226D98 Compression Method    0008 (8) 'Deflated'\n+226D9A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226D9E CRC                   00000000 (0)\n+226DA2 Compressed Size       00000002 (2)\n+226DA6 Uncompressed Size     00000000 (0)\n+226DAA Filename Length       0035 (53)\n+226DAC Extra Length          0000 (0)\n+226DAE Comment Length        0000 (0)\n+226DB0 Disk Start            0000 (0)\n+226DB2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224D3D Ext File Attributes   00000000 (0)\n-224D41 Local Header Offset   000CF4E6 (849126)\n-224D45 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226DB4 Ext File Attributes   00000000 (0)\n+226DB8 Local Header Offset   000EFAAF (981679)\n+226DBC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224D45: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226DBC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224D7B CENTRAL HEADER #818   02014B50 (33639248)\n-224D7F Created Zip Spec      14 (20) '2.0'\n-224D80 Created OS            00 (0) 'MS-DOS'\n-224D81 Extract Zip Spec      14 (20) '2.0'\n-224D82 Extract OS            00 (0) 'MS-DOS'\n-224D83 General Purpose Flag  0808 (2056)\n+226DF1 CENTRAL HEADER #818   02014B50 (33639248)\n+226DF5 Created Zip Spec      14 (20) '2.0'\n+226DF6 Created OS            00 (0) 'MS-DOS'\n+226DF7 Extract Zip Spec      14 (20) '2.0'\n+226DF8 Extract OS            00 (0) 'MS-DOS'\n+226DF9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224D85 Compression Method    0008 (8) 'Deflated'\n-224D87 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224D8B CRC                   CC5CA724 (3428624164)\n-224D8F Compressed Size       0000048C (1164)\n-224D93 Uncompressed Size     0000105D (4189)\n-224D97 Filename Length       002F (47)\n-224D99 Extra Length          0000 (0)\n-224D9B Comment Length        0000 (0)\n-224D9D Disk Start            0000 (0)\n-224D9F Int File Attributes   0000 (0)\n+226DFB Compression Method    0008 (8) 'Deflated'\n+226DFD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226E01 CRC                   DB79C8F6 (3682191606)\n+226E05 Compressed Size       00000450 (1104)\n+226E09 Uncompressed Size     00000E01 (3585)\n+226E0D Filename Length       003C (60)\n+226E0F Extra Length          0000 (0)\n+226E11 Comment Length        0000 (0)\n+226E13 Disk Start            0000 (0)\n+226E15 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224DA1 Ext File Attributes   00000000 (0)\n-224DA5 Local Header Offset   000CF921 (850209)\n-224DA9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226E17 Ext File Attributes   00000000 (0)\n+226E1B Local Header Offset   000EFB14 (981780)\n+226E1F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224DA9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226E1F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224DD8 CENTRAL HEADER #819   02014B50 (33639248)\n-224DDC Created Zip Spec      14 (20) '2.0'\n-224DDD Created OS            00 (0) 'MS-DOS'\n-224DDE Extract Zip Spec      14 (20) '2.0'\n-224DDF Extract OS            00 (0) 'MS-DOS'\n-224DE0 General Purpose Flag  0808 (2056)\n+226E5B CENTRAL HEADER #819   02014B50 (33639248)\n+226E5F Created Zip Spec      14 (20) '2.0'\n+226E60 Created OS            00 (0) 'MS-DOS'\n+226E61 Extract Zip Spec      14 (20) '2.0'\n+226E62 Extract OS            00 (0) 'MS-DOS'\n+226E63 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224DE2 Compression Method    0008 (8) 'Deflated'\n-224DE4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224DE8 CRC                   DA7850A4 (3665318052)\n-224DEC Compressed Size       00000064 (100)\n-224DF0 Uncompressed Size     000000A3 (163)\n-224DF4 Filename Length       0044 (68)\n-224DF6 Extra Length          0000 (0)\n-224DF8 Comment Length        0000 (0)\n-224DFA Disk Start            0000 (0)\n-224DFC Int File Attributes   0000 (0)\n+226E65 Compression Method    0008 (8) 'Deflated'\n+226E67 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226E6B CRC                   D4B7125F (3568767583)\n+226E6F Compressed Size       00000049 (73)\n+226E73 Uncompressed Size     0000004B (75)\n+226E77 Filename Length       0043 (67)\n+226E79 Extra Length          0000 (0)\n+226E7B Comment Length        0000 (0)\n+226E7D Disk Start            0000 (0)\n+226E7F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224DFE Ext File Attributes   00000000 (0)\n-224E02 Local Header Offset   000CFE0A (851466)\n-224E06 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226E81 Ext File Attributes   00000000 (0)\n+226E85 Local Header Offset   000EFFCE (982990)\n+226E89 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224E06: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226E89: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224E4A CENTRAL HEADER #820   02014B50 (33639248)\n-224E4E Created Zip Spec      14 (20) '2.0'\n-224E4F Created OS            00 (0) 'MS-DOS'\n-224E50 Extract Zip Spec      14 (20) '2.0'\n-224E51 Extract OS            00 (0) 'MS-DOS'\n-224E52 General Purpose Flag  0808 (2056)\n+226ECC CENTRAL HEADER #820   02014B50 (33639248)\n+226ED0 Created Zip Spec      14 (20) '2.0'\n+226ED1 Created OS            00 (0) 'MS-DOS'\n+226ED2 Extract Zip Spec      14 (20) '2.0'\n+226ED3 Extract OS            00 (0) 'MS-DOS'\n+226ED4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224E54 Compression Method    0008 (8) 'Deflated'\n-224E56 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224E5A CRC                   BF790872 (3212380274)\n-224E5E Compressed Size       00000047 (71)\n-224E62 Uncompressed Size     0000004C (76)\n-224E66 Filename Length       0055 (85)\n-224E68 Extra Length          0000 (0)\n-224E6A Comment Length        0000 (0)\n-224E6C Disk Start            0000 (0)\n-224E6E Int File Attributes   0000 (0)\n+226ED6 Compression Method    0008 (8) 'Deflated'\n+226ED8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226EDC CRC                   00000000 (0)\n+226EE0 Compressed Size       00000002 (2)\n+226EE4 Uncompressed Size     00000000 (0)\n+226EE8 Filename Length       0029 (41)\n+226EEA Extra Length          0000 (0)\n+226EEC Comment Length        0000 (0)\n+226EEE Disk Start            0000 (0)\n+226EF0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224E70 Ext File Attributes   00000000 (0)\n-224E74 Local Header Offset   000CFEE0 (851680)\n-224E78 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226EF2 Ext File Attributes   00000000 (0)\n+226EF6 Local Header Offset   000F0088 (983176)\n+226EFA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224E78: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226EFA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224ECD CENTRAL HEADER #821   02014B50 (33639248)\n-224ED1 Created Zip Spec      14 (20) '2.0'\n-224ED2 Created OS            00 (0) 'MS-DOS'\n-224ED3 Extract Zip Spec      14 (20) '2.0'\n-224ED4 Extract OS            00 (0) 'MS-DOS'\n-224ED5 General Purpose Flag  0808 (2056)\n+226F23 CENTRAL HEADER #821   02014B50 (33639248)\n+226F27 Created Zip Spec      14 (20) '2.0'\n+226F28 Created OS            00 (0) 'MS-DOS'\n+226F29 Extract Zip Spec      14 (20) '2.0'\n+226F2A Extract OS            00 (0) 'MS-DOS'\n+226F2B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224ED7 Compression Method    0008 (8) 'Deflated'\n-224ED9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224EDD CRC                   BA3A525C (3124384348)\n-224EE1 Compressed Size       00000041 (65)\n-224EE5 Uncompressed Size     00000071 (113)\n-224EE9 Filename Length       0049 (73)\n-224EEB Extra Length          0000 (0)\n-224EED Comment Length        0000 (0)\n-224EEF Disk Start            0000 (0)\n-224EF1 Int File Attributes   0000 (0)\n+226F2D Compression Method    0008 (8) 'Deflated'\n+226F2F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226F33 CRC                   0EB2B1F5 (246591989)\n+226F37 Compressed Size       00000691 (1681)\n+226F3B Uncompressed Size     000017B3 (6067)\n+226F3F Filename Length       0039 (57)\n+226F41 Extra Length          0000 (0)\n+226F43 Comment Length        0000 (0)\n+226F45 Disk Start            0000 (0)\n+226F47 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224EF3 Ext File Attributes   00000000 (0)\n-224EF7 Local Header Offset   000CFFAA (851882)\n-224EFB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+226F49 Ext File Attributes   00000000 (0)\n+226F4D Local Header Offset   000F00E1 (983265)\n+226F51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224EFB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226F51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224F44 CENTRAL HEADER #822   02014B50 (33639248)\n-224F48 Created Zip Spec      14 (20) '2.0'\n-224F49 Created OS            00 (0) 'MS-DOS'\n-224F4A Extract Zip Spec      14 (20) '2.0'\n-224F4B Extract OS            00 (0) 'MS-DOS'\n-224F4C General Purpose Flag  0808 (2056)\n+226F8A CENTRAL HEADER #822   02014B50 (33639248)\n+226F8E Created Zip Spec      14 (20) '2.0'\n+226F8F Created OS            00 (0) 'MS-DOS'\n+226F90 Extract Zip Spec      14 (20) '2.0'\n+226F91 Extract OS            00 (0) 'MS-DOS'\n+226F92 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224F4E Compression Method    0008 (8) 'Deflated'\n-224F50 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224F54 CRC                   00000000 (0)\n-224F58 Compressed Size       00000002 (2)\n-224F5C Uncompressed Size     00000000 (0)\n-224F60 Filename Length       0017 (23)\n-224F62 Extra Length          0000 (0)\n-224F64 Comment Length        0000 (0)\n-224F66 Disk Start            0000 (0)\n-224F68 Int File Attributes   0000 (0)\n+226F94 Compression Method    0008 (8) 'Deflated'\n+226F96 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+226F9A CRC                   B6BACA35 (3065694773)\n+226F9E Compressed Size       0000086C (2156)\n+226FA2 Uncompressed Size     00001D98 (7576)\n+226FA6 Filename Length       0038 (56)\n+226FA8 Extra Length          0000 (0)\n+226FAA Comment Length        0000 (0)\n+226FAC Disk Start            0000 (0)\n+226FAE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224F6A Ext File Attributes   00000000 (0)\n-224F6E Local Header Offset   000D0062 (852066)\n-224F72 Filename              'XXXXXXXXXXXXXXXXXXXXXXX'\n+226FB0 Ext File Attributes   00000000 (0)\n+226FB4 Local Header Offset   000F07D9 (985049)\n+226FB8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224F72: Filename 'XXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x226FB8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224F89 CENTRAL HEADER #823   02014B50 (33639248)\n-224F8D Created Zip Spec      14 (20) '2.0'\n-224F8E Created OS            00 (0) 'MS-DOS'\n-224F8F Extract Zip Spec      14 (20) '2.0'\n-224F90 Extract OS            00 (0) 'MS-DOS'\n-224F91 General Purpose Flag  0808 (2056)\n+226FF0 CENTRAL HEADER #823   02014B50 (33639248)\n+226FF4 Created Zip Spec      14 (20) '2.0'\n+226FF5 Created OS            00 (0) 'MS-DOS'\n+226FF6 Extract Zip Spec      14 (20) '2.0'\n+226FF7 Extract OS            00 (0) 'MS-DOS'\n+226FF8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224F93 Compression Method    0008 (8) 'Deflated'\n-224F95 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224F99 CRC                   4E701AB1 (1315969713)\n-224F9D Compressed Size       0000031C (796)\n-224FA1 Uncompressed Size     000006EA (1770)\n-224FA5 Filename Length       0021 (33)\n-224FA7 Extra Length          0000 (0)\n-224FA9 Comment Length        0000 (0)\n-224FAB Disk Start            0000 (0)\n-224FAD Int File Attributes   0000 (0)\n+226FFA Compression Method    0008 (8) 'Deflated'\n+226FFC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227000 CRC                   E154BEF4 (3780427508)\n+227004 Compressed Size       0000066D (1645)\n+227008 Uncompressed Size     0000187E (6270)\n+22700C Filename Length       003E (62)\n+22700E Extra Length          0000 (0)\n+227010 Comment Length        0000 (0)\n+227012 Disk Start            0000 (0)\n+227014 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224FAF Ext File Attributes   00000000 (0)\n-224FB3 Local Header Offset   000D00A9 (852137)\n-224FB7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227016 Ext File Attributes   00000000 (0)\n+22701A Local Header Offset   000F10AB (987307)\n+22701E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x224FB7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22701E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-224FD8 CENTRAL HEADER #824   02014B50 (33639248)\n-224FDC Created Zip Spec      14 (20) '2.0'\n-224FDD Created OS            00 (0) 'MS-DOS'\n-224FDE Extract Zip Spec      14 (20) '2.0'\n-224FDF Extract OS            00 (0) 'MS-DOS'\n-224FE0 General Purpose Flag  0808 (2056)\n+22705C CENTRAL HEADER #824   02014B50 (33639248)\n+227060 Created Zip Spec      14 (20) '2.0'\n+227061 Created OS            00 (0) 'MS-DOS'\n+227062 Extract Zip Spec      14 (20) '2.0'\n+227063 Extract OS            00 (0) 'MS-DOS'\n+227064 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-224FE2 Compression Method    0008 (8) 'Deflated'\n-224FE4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-224FE8 CRC                   95722913 (2507286803)\n-224FEC Compressed Size       0000032C (812)\n-224FF0 Uncompressed Size     000006C2 (1730)\n-224FF4 Filename Length       0028 (40)\n-224FF6 Extra Length          0000 (0)\n-224FF8 Comment Length        0000 (0)\n-224FFA Disk Start            0000 (0)\n-224FFC Int File Attributes   0000 (0)\n+227066 Compression Method    0008 (8) 'Deflated'\n+227068 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22706C CRC                   B2448F97 (2990837655)\n+227070 Compressed Size       0000037B (891)\n+227074 Uncompressed Size     00000CB7 (3255)\n+227078 Filename Length       0039 (57)\n+22707A Extra Length          0000 (0)\n+22707C Comment Length        0000 (0)\n+22707E Disk Start            0000 (0)\n+227080 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-224FFE Ext File Attributes   00000000 (0)\n-225002 Local Header Offset   000D0414 (853012)\n-225006 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227082 Ext File Attributes   00000000 (0)\n+227086 Local Header Offset   000F1784 (989060)\n+22708A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225006: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22708A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22502E CENTRAL HEADER #825   02014B50 (33639248)\n-225032 Created Zip Spec      14 (20) '2.0'\n-225033 Created OS            00 (0) 'MS-DOS'\n-225034 Extract Zip Spec      14 (20) '2.0'\n-225035 Extract OS            00 (0) 'MS-DOS'\n-225036 General Purpose Flag  0808 (2056)\n+2270C3 CENTRAL HEADER #825   02014B50 (33639248)\n+2270C7 Created Zip Spec      14 (20) '2.0'\n+2270C8 Created OS            00 (0) 'MS-DOS'\n+2270C9 Extract Zip Spec      14 (20) '2.0'\n+2270CA Extract OS            00 (0) 'MS-DOS'\n+2270CB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225038 Compression Method    0008 (8) 'Deflated'\n-22503A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22503E CRC                   00000000 (0)\n-225042 Compressed Size       00000002 (2)\n-225046 Uncompressed Size     00000000 (0)\n-22504A Filename Length       001E (30)\n-22504C Extra Length          0000 (0)\n-22504E Comment Length        0000 (0)\n-225050 Disk Start            0000 (0)\n-225052 Int File Attributes   0000 (0)\n+2270CD Compression Method    0008 (8) 'Deflated'\n+2270CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2270D3 CRC                   A33A370C (2738501388)\n+2270D7 Compressed Size       000005B2 (1458)\n+2270DB Uncompressed Size     000010ED (4333)\n+2270DF Filename Length       0038 (56)\n+2270E1 Extra Length          0000 (0)\n+2270E3 Comment Length        0000 (0)\n+2270E5 Disk Start            0000 (0)\n+2270E7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225054 Ext File Attributes   00000000 (0)\n-225058 Local Header Offset   000D0796 (853910)\n-22505C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2270E9 Ext File Attributes   00000000 (0)\n+2270ED Local Header Offset   000F1B66 (990054)\n+2270F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22505C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2270F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22507A CENTRAL HEADER #826   02014B50 (33639248)\n-22507E Created Zip Spec      14 (20) '2.0'\n-22507F Created OS            00 (0) 'MS-DOS'\n-225080 Extract Zip Spec      14 (20) '2.0'\n-225081 Extract OS            00 (0) 'MS-DOS'\n-225082 General Purpose Flag  0808 (2056)\n+227129 CENTRAL HEADER #826   02014B50 (33639248)\n+22712D Created Zip Spec      14 (20) '2.0'\n+22712E Created OS            00 (0) 'MS-DOS'\n+22712F Extract Zip Spec      14 (20) '2.0'\n+227130 Extract OS            00 (0) 'MS-DOS'\n+227131 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225084 Compression Method    0008 (8) 'Deflated'\n-225086 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22508A CRC                   0E9E2711 (245245713)\n-22508E Compressed Size       00000790 (1936)\n-225092 Uncompressed Size     000016CB (5835)\n-225096 Filename Length       002E (46)\n-225098 Extra Length          0000 (0)\n-22509A Comment Length        0000 (0)\n-22509C Disk Start            0000 (0)\n-22509E Int File Attributes   0000 (0)\n+227133 Compression Method    0008 (8) 'Deflated'\n+227135 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227139 CRC                   242C94A2 (606901410)\n+22713D Compressed Size       000002AD (685)\n+227141 Uncompressed Size     0000062C (1580)\n+227145 Filename Length       003D (61)\n+227147 Extra Length          0000 (0)\n+227149 Comment Length        0000 (0)\n+22714B Disk Start            0000 (0)\n+22714D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2250A0 Ext File Attributes   00000000 (0)\n-2250A4 Local Header Offset   000D07E4 (853988)\n-2250A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22714F Ext File Attributes   00000000 (0)\n+227153 Local Header Offset   000F217E (991614)\n+227157 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2250A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227157: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2250D6 CENTRAL HEADER #827   02014B50 (33639248)\n-2250DA Created Zip Spec      14 (20) '2.0'\n-2250DB Created OS            00 (0) 'MS-DOS'\n-2250DC Extract Zip Spec      14 (20) '2.0'\n-2250DD Extract OS            00 (0) 'MS-DOS'\n-2250DE General Purpose Flag  0808 (2056)\n+227194 CENTRAL HEADER #827   02014B50 (33639248)\n+227198 Created Zip Spec      14 (20) '2.0'\n+227199 Created OS            00 (0) 'MS-DOS'\n+22719A Extract Zip Spec      14 (20) '2.0'\n+22719B Extract OS            00 (0) 'MS-DOS'\n+22719C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2250E0 Compression Method    0008 (8) 'Deflated'\n-2250E2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2250E6 CRC                   00000000 (0)\n-2250EA Compressed Size       00000002 (2)\n-2250EE Uncompressed Size     00000000 (0)\n-2250F2 Filename Length       001F (31)\n-2250F4 Extra Length          0000 (0)\n-2250F6 Comment Length        0000 (0)\n-2250F8 Disk Start            0000 (0)\n-2250FA Int File Attributes   0000 (0)\n+22719E Compression Method    0008 (8) 'Deflated'\n+2271A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2271A4 CRC                   00000000 (0)\n+2271A8 Compressed Size       00000002 (2)\n+2271AC Uncompressed Size     00000000 (0)\n+2271B0 Filename Length       0034 (52)\n+2271B2 Extra Length          0000 (0)\n+2271B4 Comment Length        0000 (0)\n+2271B6 Disk Start            0000 (0)\n+2271B8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2250FC Ext File Attributes   00000000 (0)\n-225100 Local Header Offset   000D0FD0 (856016)\n-225104 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2271BA Ext File Attributes   00000000 (0)\n+2271BE Local Header Offset   000F2496 (992406)\n+2271C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225104: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2271C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225123 CENTRAL HEADER #828   02014B50 (33639248)\n-225127 Created Zip Spec      14 (20) '2.0'\n-225128 Created OS            00 (0) 'MS-DOS'\n-225129 Extract Zip Spec      14 (20) '2.0'\n-22512A Extract OS            00 (0) 'MS-DOS'\n-22512B General Purpose Flag  0808 (2056)\n+2271F6 CENTRAL HEADER #828   02014B50 (33639248)\n+2271FA Created Zip Spec      14 (20) '2.0'\n+2271FB Created OS            00 (0) 'MS-DOS'\n+2271FC Extract Zip Spec      14 (20) '2.0'\n+2271FD Extract OS            00 (0) 'MS-DOS'\n+2271FE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22512D Compression Method    0008 (8) 'Deflated'\n-22512F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225133 CRC                   048D5F10 (76373776)\n-225137 Compressed Size       000004B5 (1205)\n-22513B Uncompressed Size     00000C38 (3128)\n-22513F Filename Length       0038 (56)\n-225141 Extra Length          0000 (0)\n-225143 Comment Length        0000 (0)\n-225145 Disk Start            0000 (0)\n-225147 Int File Attributes   0000 (0)\n+227200 Compression Method    0008 (8) 'Deflated'\n+227202 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227206 CRC                   5512F588 (1427305864)\n+22720A Compressed Size       0000039F (927)\n+22720E Uncompressed Size     0000094F (2383)\n+227212 Filename Length       003B (59)\n+227214 Extra Length          0000 (0)\n+227216 Comment Length        0000 (0)\n+227218 Disk Start            0000 (0)\n+22721A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225149 Ext File Attributes   00000000 (0)\n-22514D Local Header Offset   000D101F (856095)\n-225151 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22721C Ext File Attributes   00000000 (0)\n+227220 Local Header Offset   000F24FA (992506)\n+227224 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225151: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227224: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225189 CENTRAL HEADER #829   02014B50 (33639248)\n-22518D Created Zip Spec      14 (20) '2.0'\n-22518E Created OS            00 (0) 'MS-DOS'\n-22518F Extract Zip Spec      14 (20) '2.0'\n-225190 Extract OS            00 (0) 'MS-DOS'\n-225191 General Purpose Flag  0808 (2056)\n+22725F CENTRAL HEADER #829   02014B50 (33639248)\n+227263 Created Zip Spec      14 (20) '2.0'\n+227264 Created OS            00 (0) 'MS-DOS'\n+227265 Extract Zip Spec      14 (20) '2.0'\n+227266 Extract OS            00 (0) 'MS-DOS'\n+227267 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225193 Compression Method    0008 (8) 'Deflated'\n-225195 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225199 CRC                   00000000 (0)\n-22519D Compressed Size       00000002 (2)\n-2251A1 Uncompressed Size     00000000 (0)\n-2251A5 Filename Length       0028 (40)\n-2251A7 Extra Length          0000 (0)\n-2251A9 Comment Length        0000 (0)\n-2251AB Disk Start            0000 (0)\n-2251AD Int File Attributes   0000 (0)\n+227269 Compression Method    0008 (8) 'Deflated'\n+22726B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22726F CRC                   423C5CE6 (1111252198)\n+227273 Compressed Size       00000048 (72)\n+227277 Uncompressed Size     0000004A (74)\n+22727B Filename Length       0042 (66)\n+22727D Extra Length          0000 (0)\n+22727F Comment Length        0000 (0)\n+227281 Disk Start            0000 (0)\n+227283 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2251AF Ext File Attributes   00000000 (0)\n-2251B3 Local Header Offset   000D153A (857402)\n-2251B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227285 Ext File Attributes   00000000 (0)\n+227289 Local Header Offset   000F2902 (993538)\n+22728D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2251B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22728D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2251DF CENTRAL HEADER #830   02014B50 (33639248)\n-2251E3 Created Zip Spec      14 (20) '2.0'\n-2251E4 Created OS            00 (0) 'MS-DOS'\n-2251E5 Extract Zip Spec      14 (20) '2.0'\n-2251E6 Extract OS            00 (0) 'MS-DOS'\n-2251E7 General Purpose Flag  0808 (2056)\n+2272CF CENTRAL HEADER #830   02014B50 (33639248)\n+2272D3 Created Zip Spec      14 (20) '2.0'\n+2272D4 Created OS            00 (0) 'MS-DOS'\n+2272D5 Extract Zip Spec      14 (20) '2.0'\n+2272D6 Extract OS            00 (0) 'MS-DOS'\n+2272D7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2251E9 Compression Method    0008 (8) 'Deflated'\n-2251EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2251EF CRC                   6447E2ED (1682432749)\n-2251F3 Compressed Size       0000051F (1311)\n-2251F7 Uncompressed Size     00000C52 (3154)\n-2251FB Filename Length       003A (58)\n-2251FD Extra Length          0000 (0)\n-2251FF Comment Length        0000 (0)\n-225201 Disk Start            0000 (0)\n-225203 Int File Attributes   0000 (0)\n+2272D9 Compression Method    0008 (8) 'Deflated'\n+2272DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2272DF CRC                   00000000 (0)\n+2272E3 Compressed Size       00000002 (2)\n+2272E7 Uncompressed Size     00000000 (0)\n+2272EB Filename Length       002C (44)\n+2272ED Extra Length          0000 (0)\n+2272EF Comment Length        0000 (0)\n+2272F1 Disk Start            0000 (0)\n+2272F3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225205 Ext File Attributes   00000000 (0)\n-225209 Local Header Offset   000D1592 (857490)\n-22520D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2272F5 Ext File Attributes   00000000 (0)\n+2272F9 Local Header Offset   000F29BA (993722)\n+2272FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22520D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2272FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225247 CENTRAL HEADER #831   02014B50 (33639248)\n-22524B Created Zip Spec      14 (20) '2.0'\n-22524C Created OS            00 (0) 'MS-DOS'\n-22524D Extract Zip Spec      14 (20) '2.0'\n-22524E Extract OS            00 (0) 'MS-DOS'\n-22524F General Purpose Flag  0808 (2056)\n+227329 CENTRAL HEADER #831   02014B50 (33639248)\n+22732D Created Zip Spec      14 (20) '2.0'\n+22732E Created OS            00 (0) 'MS-DOS'\n+22732F Extract Zip Spec      14 (20) '2.0'\n+227330 Extract OS            00 (0) 'MS-DOS'\n+227331 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225251 Compression Method    0008 (8) 'Deflated'\n-225253 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225257 CRC                   11FDDB06 (301849350)\n-22525B Compressed Size       000002F2 (754)\n-22525F Uncompressed Size     0000065F (1631)\n-225263 Filename Length       0041 (65)\n-225265 Extra Length          0000 (0)\n-225267 Comment Length        0000 (0)\n-225269 Disk Start            0000 (0)\n-22526B Int File Attributes   0000 (0)\n+227333 Compression Method    0008 (8) 'Deflated'\n+227335 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227339 CRC                   56951E3F (1452613183)\n+22733D Compressed Size       00000709 (1801)\n+227341 Uncompressed Size     0000197F (6527)\n+227345 Filename Length       003F (63)\n+227347 Extra Length          0000 (0)\n+227349 Comment Length        0000 (0)\n+22734B Disk Start            0000 (0)\n+22734D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22526D Ext File Attributes   00000000 (0)\n-225271 Local Header Offset   000D1B19 (858905)\n-225275 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22734F Ext File Attributes   00000000 (0)\n+227353 Local Header Offset   000F2A16 (993814)\n+227357 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225275: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227357: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2252B6 CENTRAL HEADER #832   02014B50 (33639248)\n-2252BA Created Zip Spec      14 (20) '2.0'\n-2252BB Created OS            00 (0) 'MS-DOS'\n-2252BC Extract Zip Spec      14 (20) '2.0'\n-2252BD Extract OS            00 (0) 'MS-DOS'\n-2252BE General Purpose Flag  0808 (2056)\n+227396 CENTRAL HEADER #832   02014B50 (33639248)\n+22739A Created Zip Spec      14 (20) '2.0'\n+22739B Created OS            00 (0) 'MS-DOS'\n+22739C Extract Zip Spec      14 (20) '2.0'\n+22739D Extract OS            00 (0) 'MS-DOS'\n+22739E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2252C0 Compression Method    0008 (8) 'Deflated'\n-2252C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2252C6 CRC                   58EB82E0 (1491829472)\n-2252CA Compressed Size       000009C9 (2505)\n-2252CE Uncompressed Size     00002969 (10601)\n-2252D2 Filename Length       0038 (56)\n-2252D4 Extra Length          0000 (0)\n-2252D6 Comment Length        0000 (0)\n-2252D8 Disk Start            0000 (0)\n-2252DA Int File Attributes   0000 (0)\n+2273A0 Compression Method    0008 (8) 'Deflated'\n+2273A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2273A6 CRC                   42023036 (1107439670)\n+2273AA Compressed Size       000005AE (1454)\n+2273AE Uncompressed Size     000010C6 (4294)\n+2273B2 Filename Length       003E (62)\n+2273B4 Extra Length          0000 (0)\n+2273B6 Comment Length        0000 (0)\n+2273B8 Disk Start            0000 (0)\n+2273BA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2252DC Ext File Attributes   00000000 (0)\n-2252E0 Local Header Offset   000D1E7A (859770)\n-2252E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2273BC Ext File Attributes   00000000 (0)\n+2273C0 Local Header Offset   000F318C (995724)\n+2273C4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2252E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2273C4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22531C CENTRAL HEADER #833   02014B50 (33639248)\n-225320 Created Zip Spec      14 (20) '2.0'\n-225321 Created OS            00 (0) 'MS-DOS'\n-225322 Extract Zip Spec      14 (20) '2.0'\n-225323 Extract OS            00 (0) 'MS-DOS'\n-225324 General Purpose Flag  0808 (2056)\n+227402 CENTRAL HEADER #833   02014B50 (33639248)\n+227406 Created Zip Spec      14 (20) '2.0'\n+227407 Created OS            00 (0) 'MS-DOS'\n+227408 Extract Zip Spec      14 (20) '2.0'\n+227409 Extract OS            00 (0) 'MS-DOS'\n+22740A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225326 Compression Method    0008 (8) 'Deflated'\n-225328 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22532C CRC                   00000000 (0)\n-225330 Compressed Size       00000002 (2)\n-225334 Uncompressed Size     00000000 (0)\n-225338 Filename Length       0026 (38)\n-22533A Extra Length          0000 (0)\n-22533C Comment Length        0000 (0)\n-22533E Disk Start            0000 (0)\n-225340 Int File Attributes   0000 (0)\n+22740C Compression Method    0008 (8) 'Deflated'\n+22740E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227412 CRC                   52180500 (1377305856)\n+227416 Compressed Size       00000693 (1683)\n+22741A Uncompressed Size     000017DE (6110)\n+22741E Filename Length       0044 (68)\n+227420 Extra Length          0000 (0)\n+227422 Comment Length        0000 (0)\n+227424 Disk Start            0000 (0)\n+227426 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225342 Ext File Attributes   00000000 (0)\n-225346 Local Header Offset   000D28A9 (862377)\n-22534A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227428 Ext File Attributes   00000000 (0)\n+22742C Local Header Offset   000F37A6 (997286)\n+227430 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22534A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227430: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225370 CENTRAL HEADER #834   02014B50 (33639248)\n-225374 Created Zip Spec      14 (20) '2.0'\n-225375 Created OS            00 (0) 'MS-DOS'\n-225376 Extract Zip Spec      14 (20) '2.0'\n-225377 Extract OS            00 (0) 'MS-DOS'\n-225378 General Purpose Flag  0808 (2056)\n+227474 CENTRAL HEADER #834   02014B50 (33639248)\n+227478 Created Zip Spec      14 (20) '2.0'\n+227479 Created OS            00 (0) 'MS-DOS'\n+22747A Extract Zip Spec      14 (20) '2.0'\n+22747B Extract OS            00 (0) 'MS-DOS'\n+22747C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22537A Compression Method    0008 (8) 'Deflated'\n-22537C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225380 CRC                   5EA7953B (1588041019)\n-225384 Compressed Size       00000563 (1379)\n-225388 Uncompressed Size     00000E48 (3656)\n-22538C Filename Length       0031 (49)\n-22538E Extra Length          0000 (0)\n-225390 Comment Length        0000 (0)\n-225392 Disk Start            0000 (0)\n-225394 Int File Attributes   0000 (0)\n+22747E Compression Method    0008 (8) 'Deflated'\n+227480 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227484 CRC                   EC29A626 (3962152486)\n+227488 Compressed Size       00000424 (1060)\n+22748C Uncompressed Size     000011CA (4554)\n+227490 Filename Length       003F (63)\n+227492 Extra Length          0000 (0)\n+227494 Comment Length        0000 (0)\n+227496 Disk Start            0000 (0)\n+227498 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225396 Ext File Attributes   00000000 (0)\n-22539A Local Header Offset   000D28FF (862463)\n-22539E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22749A Ext File Attributes   00000000 (0)\n+22749E Local Header Offset   000F3EAB (999083)\n+2274A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22539E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2274A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2253CF CENTRAL HEADER #835   02014B50 (33639248)\n-2253D3 Created Zip Spec      14 (20) '2.0'\n-2253D4 Created OS            00 (0) 'MS-DOS'\n-2253D5 Extract Zip Spec      14 (20) '2.0'\n-2253D6 Extract OS            00 (0) 'MS-DOS'\n-2253D7 General Purpose Flag  0808 (2056)\n+2274E1 CENTRAL HEADER #835   02014B50 (33639248)\n+2274E5 Created Zip Spec      14 (20) '2.0'\n+2274E6 Created OS            00 (0) 'MS-DOS'\n+2274E7 Extract Zip Spec      14 (20) '2.0'\n+2274E8 Extract OS            00 (0) 'MS-DOS'\n+2274E9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2253D9 Compression Method    0008 (8) 'Deflated'\n-2253DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2253DF CRC                   05E875FD (99120637)\n-2253E3 Compressed Size       00000321 (801)\n-2253E7 Uncompressed Size     0000070E (1806)\n-2253EB Filename Length       0038 (56)\n-2253ED Extra Length          0000 (0)\n-2253EF Comment Length        0000 (0)\n-2253F1 Disk Start            0000 (0)\n-2253F3 Int File Attributes   0000 (0)\n+2274EB Compression Method    0008 (8) 'Deflated'\n+2274ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2274F1 CRC                   253B482C (624642092)\n+2274F5 Compressed Size       0000066A (1642)\n+2274F9 Uncompressed Size     000014A3 (5283)\n+2274FD Filename Length       003E (62)\n+2274FF Extra Length          0000 (0)\n+227501 Comment Length        0000 (0)\n+227503 Disk Start            0000 (0)\n+227505 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2253F5 Ext File Attributes   00000000 (0)\n-2253F9 Local Header Offset   000D2EC1 (863937)\n-2253FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227507 Ext File Attributes   00000000 (0)\n+22750B Local Header Offset   000F433C (1000252)\n+22750F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2253FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22750F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225435 CENTRAL HEADER #836   02014B50 (33639248)\n-225439 Created Zip Spec      14 (20) '2.0'\n-22543A Created OS            00 (0) 'MS-DOS'\n-22543B Extract Zip Spec      14 (20) '2.0'\n-22543C Extract OS            00 (0) 'MS-DOS'\n-22543D General Purpose Flag  0808 (2056)\n+22754D CENTRAL HEADER #836   02014B50 (33639248)\n+227551 Created Zip Spec      14 (20) '2.0'\n+227552 Created OS            00 (0) 'MS-DOS'\n+227553 Extract Zip Spec      14 (20) '2.0'\n+227554 Extract OS            00 (0) 'MS-DOS'\n+227555 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22543F Compression Method    0008 (8) 'Deflated'\n-225441 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225445 CRC                   00000000 (0)\n-225449 Compressed Size       00000002 (2)\n-22544D Uncompressed Size     00000000 (0)\n-225451 Filename Length       0023 (35)\n-225453 Extra Length          0000 (0)\n-225455 Comment Length        0000 (0)\n-225457 Disk Start            0000 (0)\n-225459 Int File Attributes   0000 (0)\n+227557 Compression Method    0008 (8) 'Deflated'\n+227559 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22755D CRC                   117073F8 (292582392)\n+227561 Compressed Size       000002BA (698)\n+227565 Uncompressed Size     0000065C (1628)\n+227569 Filename Length       0043 (67)\n+22756B Extra Length          0000 (0)\n+22756D Comment Length        0000 (0)\n+22756F Disk Start            0000 (0)\n+227571 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22545B Ext File Attributes   00000000 (0)\n-22545F Local Header Offset   000D3248 (864840)\n-225463 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227573 Ext File Attributes   00000000 (0)\n+227577 Local Header Offset   000F4A12 (1002002)\n+22757B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225463: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22757B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225486 CENTRAL HEADER #837   02014B50 (33639248)\n-22548A Created Zip Spec      14 (20) '2.0'\n-22548B Created OS            00 (0) 'MS-DOS'\n-22548C Extract Zip Spec      14 (20) '2.0'\n-22548D Extract OS            00 (0) 'MS-DOS'\n-22548E General Purpose Flag  0808 (2056)\n+2275BE CENTRAL HEADER #837   02014B50 (33639248)\n+2275C2 Created Zip Spec      14 (20) '2.0'\n+2275C3 Created OS            00 (0) 'MS-DOS'\n+2275C4 Extract Zip Spec      14 (20) '2.0'\n+2275C5 Extract OS            00 (0) 'MS-DOS'\n+2275C6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225490 Compression Method    0008 (8) 'Deflated'\n-225492 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225496 CRC                   39ECA03B (971808827)\n-22549A Compressed Size       00000509 (1289)\n-22549E Uncompressed Size     00000C4E (3150)\n-2254A2 Filename Length       0030 (48)\n-2254A4 Extra Length          0000 (0)\n-2254A6 Comment Length        0000 (0)\n-2254A8 Disk Start            0000 (0)\n-2254AA Int File Attributes   0000 (0)\n+2275C8 Compression Method    0008 (8) 'Deflated'\n+2275CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2275CE CRC                   00000000 (0)\n+2275D2 Compressed Size       00000002 (2)\n+2275D6 Uncompressed Size     00000000 (0)\n+2275DA Filename Length       0037 (55)\n+2275DC Extra Length          0000 (0)\n+2275DE Comment Length        0000 (0)\n+2275E0 Disk Start            0000 (0)\n+2275E2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2254AC Ext File Attributes   00000000 (0)\n-2254B0 Local Header Offset   000D329B (864923)\n-2254B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2275E4 Ext File Attributes   00000000 (0)\n+2275E8 Local Header Offset   000F4D3D (1002813)\n+2275EC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2254B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2275EC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2254E4 CENTRAL HEADER #838   02014B50 (33639248)\n-2254E8 Created Zip Spec      14 (20) '2.0'\n-2254E9 Created OS            00 (0) 'MS-DOS'\n-2254EA Extract Zip Spec      14 (20) '2.0'\n-2254EB Extract OS            00 (0) 'MS-DOS'\n-2254EC General Purpose Flag  0808 (2056)\n+227623 CENTRAL HEADER #838   02014B50 (33639248)\n+227627 Created Zip Spec      14 (20) '2.0'\n+227628 Created OS            00 (0) 'MS-DOS'\n+227629 Extract Zip Spec      14 (20) '2.0'\n+22762A Extract OS            00 (0) 'MS-DOS'\n+22762B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2254EE Compression Method    0008 (8) 'Deflated'\n-2254F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2254F4 CRC                   D327EA9B (3542608539)\n-2254F8 Compressed Size       000002E9 (745)\n-2254FC Uncompressed Size     0000061E (1566)\n-225500 Filename Length       0037 (55)\n-225502 Extra Length          0000 (0)\n-225504 Comment Length        0000 (0)\n-225506 Disk Start            0000 (0)\n-225508 Int File Attributes   0000 (0)\n+22762D Compression Method    0008 (8) 'Deflated'\n+22762F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227633 CRC                   72B9B37F (1924772735)\n+227637 Compressed Size       00000377 (887)\n+22763B Uncompressed Size     00000819 (2073)\n+22763F Filename Length       003E (62)\n+227641 Extra Length          0000 (0)\n+227643 Comment Length        0000 (0)\n+227645 Disk Start            0000 (0)\n+227647 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22550A Ext File Attributes   00000000 (0)\n-22550E Local Header Offset   000D3802 (866306)\n-225512 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227649 Ext File Attributes   00000000 (0)\n+22764D Local Header Offset   000F4DA4 (1002916)\n+227651 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225512: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227651: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225549 CENTRAL HEADER #839   02014B50 (33639248)\n-22554D Created Zip Spec      14 (20) '2.0'\n-22554E Created OS            00 (0) 'MS-DOS'\n-22554F Extract Zip Spec      14 (20) '2.0'\n-225550 Extract OS            00 (0) 'MS-DOS'\n-225551 General Purpose Flag  0808 (2056)\n+22768F CENTRAL HEADER #839   02014B50 (33639248)\n+227693 Created Zip Spec      14 (20) '2.0'\n+227694 Created OS            00 (0) 'MS-DOS'\n+227695 Extract Zip Spec      14 (20) '2.0'\n+227696 Extract OS            00 (0) 'MS-DOS'\n+227697 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225553 Compression Method    0008 (8) 'Deflated'\n-225555 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225559 CRC                   00000000 (0)\n-22555D Compressed Size       00000002 (2)\n-225561 Uncompressed Size     00000000 (0)\n-225565 Filename Length       0023 (35)\n-225567 Extra Length          0000 (0)\n-225569 Comment Length        0000 (0)\n-22556B Disk Start            0000 (0)\n-22556D Int File Attributes   0000 (0)\n+227699 Compression Method    0008 (8) 'Deflated'\n+22769B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22769F CRC                   C5928C84 (3314715780)\n+2276A3 Compressed Size       0000004B (75)\n+2276A7 Uncompressed Size     0000004D (77)\n+2276AB Filename Length       0045 (69)\n+2276AD Extra Length          0000 (0)\n+2276AF Comment Length        0000 (0)\n+2276B1 Disk Start            0000 (0)\n+2276B3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22556F Ext File Attributes   00000000 (0)\n-225573 Local Header Offset   000D3B50 (867152)\n-225577 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2276B5 Ext File Attributes   00000000 (0)\n+2276B9 Local Header Offset   000F5187 (1003911)\n+2276BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225577: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2276BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22559A CENTRAL HEADER #840   02014B50 (33639248)\n-22559E Created Zip Spec      14 (20) '2.0'\n-22559F Created OS            00 (0) 'MS-DOS'\n-2255A0 Extract Zip Spec      14 (20) '2.0'\n-2255A1 Extract OS            00 (0) 'MS-DOS'\n-2255A2 General Purpose Flag  0808 (2056)\n+227702 CENTRAL HEADER #840   02014B50 (33639248)\n+227706 Created Zip Spec      14 (20) '2.0'\n+227707 Created OS            00 (0) 'MS-DOS'\n+227708 Extract Zip Spec      14 (20) '2.0'\n+227709 Extract OS            00 (0) 'MS-DOS'\n+22770A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2255A4 Compression Method    0008 (8) 'Deflated'\n-2255A6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2255AA CRC                   E901806B (3909189739)\n-2255AE Compressed Size       000004D9 (1241)\n-2255B2 Uncompressed Size     00000B75 (2933)\n-2255B6 Filename Length       0030 (48)\n-2255B8 Extra Length          0000 (0)\n-2255BA Comment Length        0000 (0)\n-2255BC Disk Start            0000 (0)\n-2255BE Int File Attributes   0000 (0)\n+22770C Compression Method    0008 (8) 'Deflated'\n+22770E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227712 CRC                   00000000 (0)\n+227716 Compressed Size       00000002 (2)\n+22771A Uncompressed Size     00000000 (0)\n+22771E Filename Length       001E (30)\n+227720 Extra Length          0000 (0)\n+227722 Comment Length        0000 (0)\n+227724 Disk Start            0000 (0)\n+227726 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2255C0 Ext File Attributes   00000000 (0)\n-2255C4 Local Header Offset   000D3BA3 (867235)\n-2255C8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227728 Ext File Attributes   00000000 (0)\n+22772C Local Header Offset   000F5245 (1004101)\n+227730 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2255C8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227730: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2255F8 CENTRAL HEADER #841   02014B50 (33639248)\n-2255FC Created Zip Spec      14 (20) '2.0'\n-2255FD Created OS            00 (0) 'MS-DOS'\n-2255FE Extract Zip Spec      14 (20) '2.0'\n-2255FF Extract OS            00 (0) 'MS-DOS'\n-225600 General Purpose Flag  0808 (2056)\n+22774E CENTRAL HEADER #841   02014B50 (33639248)\n+227752 Created Zip Spec      14 (20) '2.0'\n+227753 Created OS            00 (0) 'MS-DOS'\n+227754 Extract Zip Spec      14 (20) '2.0'\n+227755 Extract OS            00 (0) 'MS-DOS'\n+227756 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225602 Compression Method    0008 (8) 'Deflated'\n-225604 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225608 CRC                   45C1CEBF (1170329279)\n-22560C Compressed Size       000002F1 (753)\n-225610 Uncompressed Size     00000649 (1609)\n-225614 Filename Length       0037 (55)\n-225616 Extra Length          0000 (0)\n-225618 Comment Length        0000 (0)\n-22561A Disk Start            0000 (0)\n-22561C Int File Attributes   0000 (0)\n+227758 Compression Method    0008 (8) 'Deflated'\n+22775A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22775E CRC                   22156101 (571826433)\n+227762 Compressed Size       000002E1 (737)\n+227766 Uncompressed Size     00000645 (1605)\n+22776A Filename Length       0028 (40)\n+22776C Extra Length          0000 (0)\n+22776E Comment Length        0000 (0)\n+227770 Disk Start            0000 (0)\n+227772 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22561E Ext File Attributes   00000000 (0)\n-225622 Local Header Offset   000D40DA (868570)\n-225626 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227774 Ext File Attributes   00000000 (0)\n+227778 Local Header Offset   000F5293 (1004179)\n+22777C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225626: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22777C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22565D CENTRAL HEADER #842   02014B50 (33639248)\n-225661 Created Zip Spec      14 (20) '2.0'\n-225662 Created OS            00 (0) 'MS-DOS'\n-225663 Extract Zip Spec      14 (20) '2.0'\n-225664 Extract OS            00 (0) 'MS-DOS'\n-225665 General Purpose Flag  0808 (2056)\n+2277A4 CENTRAL HEADER #842   02014B50 (33639248)\n+2277A8 Created Zip Spec      14 (20) '2.0'\n+2277A9 Created OS            00 (0) 'MS-DOS'\n+2277AA Extract Zip Spec      14 (20) '2.0'\n+2277AB Extract OS            00 (0) 'MS-DOS'\n+2277AC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225667 Compression Method    0008 (8) 'Deflated'\n-225669 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22566D CRC                   00000000 (0)\n-225671 Compressed Size       00000002 (2)\n-225675 Uncompressed Size     00000000 (0)\n-225679 Filename Length       002B (43)\n-22567B Extra Length          0000 (0)\n-22567D Comment Length        0000 (0)\n-22567F Disk Start            0000 (0)\n-225681 Int File Attributes   0000 (0)\n+2277AE Compression Method    0008 (8) 'Deflated'\n+2277B0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2277B4 CRC                   5BDCE546 (1541203270)\n+2277B8 Compressed Size       000002AD (685)\n+2277BC Uncompressed Size     00000530 (1328)\n+2277C0 Filename Length       002C (44)\n+2277C2 Extra Length          0000 (0)\n+2277C4 Comment Length        0000 (0)\n+2277C6 Disk Start            0000 (0)\n+2277C8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225683 Ext File Attributes   00000000 (0)\n-225687 Local Header Offset   000D4430 (869424)\n-22568B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2277CA Ext File Attributes   00000000 (0)\n+2277CE Local Header Offset   000F55CA (1005002)\n+2277D2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22568B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2277D2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2256B6 CENTRAL HEADER #843   02014B50 (33639248)\n-2256BA Created Zip Spec      14 (20) '2.0'\n-2256BB Created OS            00 (0) 'MS-DOS'\n-2256BC Extract Zip Spec      14 (20) '2.0'\n-2256BD Extract OS            00 (0) 'MS-DOS'\n-2256BE General Purpose Flag  0808 (2056)\n+2277FE CENTRAL HEADER #843   02014B50 (33639248)\n+227802 Created Zip Spec      14 (20) '2.0'\n+227803 Created OS            00 (0) 'MS-DOS'\n+227804 Extract Zip Spec      14 (20) '2.0'\n+227805 Extract OS            00 (0) 'MS-DOS'\n+227806 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2256C0 Compression Method    0008 (8) 'Deflated'\n-2256C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2256C6 CRC                   27EFB86F (670021743)\n-2256CA Compressed Size       000004DF (1247)\n-2256CE Uncompressed Size     00000B71 (2929)\n-2256D2 Filename Length       0040 (64)\n-2256D4 Extra Length          0000 (0)\n-2256D6 Comment Length        0000 (0)\n-2256D8 Disk Start            0000 (0)\n-2256DA Int File Attributes   0000 (0)\n+227808 Compression Method    0008 (8) 'Deflated'\n+22780A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22780E CRC                   86A6B236 (2259071542)\n+227812 Compressed Size       0000031F (799)\n+227816 Uncompressed Size     0000078D (1933)\n+22781A Filename Length       002D (45)\n+22781C Extra Length          0000 (0)\n+22781E Comment Length        0000 (0)\n+227820 Disk Start            0000 (0)\n+227822 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2256DC Ext File Attributes   00000000 (0)\n-2256E0 Local Header Offset   000D448B (869515)\n-2256E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227824 Ext File Attributes   00000000 (0)\n+227828 Local Header Offset   000F58D1 (1005777)\n+22782C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2256E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22782C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225724 CENTRAL HEADER #844   02014B50 (33639248)\n-225728 Created Zip Spec      14 (20) '2.0'\n-225729 Created OS            00 (0) 'MS-DOS'\n-22572A Extract Zip Spec      14 (20) '2.0'\n-22572B Extract OS            00 (0) 'MS-DOS'\n-22572C General Purpose Flag  0808 (2056)\n+227859 CENTRAL HEADER #844   02014B50 (33639248)\n+22785D Created Zip Spec      14 (20) '2.0'\n+22785E Created OS            00 (0) 'MS-DOS'\n+22785F Extract Zip Spec      14 (20) '2.0'\n+227860 Extract OS            00 (0) 'MS-DOS'\n+227861 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22572E Compression Method    0008 (8) 'Deflated'\n-225730 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225734 CRC                   0D988858 (228100184)\n-225738 Compressed Size       0000031A (794)\n-22573C Uncompressed Size     000006C6 (1734)\n-225740 Filename Length       0047 (71)\n-225742 Extra Length          0000 (0)\n-225744 Comment Length        0000 (0)\n-225746 Disk Start            0000 (0)\n-225748 Int File Attributes   0000 (0)\n+227863 Compression Method    0008 (8) 'Deflated'\n+227865 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227869 CRC                   1B4BCF89 (457953161)\n+22786D Compressed Size       00000289 (649)\n+227871 Uncompressed Size     000004F3 (1267)\n+227875 Filename Length       0027 (39)\n+227877 Extra Length          0000 (0)\n+227879 Comment Length        0000 (0)\n+22787B Disk Start            0000 (0)\n+22787D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22574A Ext File Attributes   00000000 (0)\n-22574E Local Header Offset   000D49D8 (870872)\n-225752 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22787F Ext File Attributes   00000000 (0)\n+227883 Local Header Offset   000F5C4B (1006667)\n+227887 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225752: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227887: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225799 CENTRAL HEADER #845   02014B50 (33639248)\n-22579D Created Zip Spec      14 (20) '2.0'\n-22579E Created OS            00 (0) 'MS-DOS'\n-22579F Extract Zip Spec      14 (20) '2.0'\n-2257A0 Extract OS            00 (0) 'MS-DOS'\n-2257A1 General Purpose Flag  0808 (2056)\n+2278AE CENTRAL HEADER #845   02014B50 (33639248)\n+2278B2 Created Zip Spec      14 (20) '2.0'\n+2278B3 Created OS            00 (0) 'MS-DOS'\n+2278B4 Extract Zip Spec      14 (20) '2.0'\n+2278B5 Extract OS            00 (0) 'MS-DOS'\n+2278B6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2257A3 Compression Method    0008 (8) 'Deflated'\n-2257A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2257A9 CRC                   00000000 (0)\n-2257AD Compressed Size       00000002 (2)\n-2257B1 Uncompressed Size     00000000 (0)\n-2257B5 Filename Length       001C (28)\n-2257B7 Extra Length          0000 (0)\n-2257B9 Comment Length        0000 (0)\n-2257BB Disk Start            0000 (0)\n-2257BD Int File Attributes   0000 (0)\n+2278B8 Compression Method    0008 (8) 'Deflated'\n+2278BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2278BE CRC                   00000000 (0)\n+2278C2 Compressed Size       00000002 (2)\n+2278C6 Uncompressed Size     00000000 (0)\n+2278CA Filename Length       0027 (39)\n+2278CC Extra Length          0000 (0)\n+2278CE Comment Length        0000 (0)\n+2278D0 Disk Start            0000 (0)\n+2278D2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2257BF Ext File Attributes   00000000 (0)\n-2257C3 Local Header Offset   000D4D67 (871783)\n-2257C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2278D4 Ext File Attributes   00000000 (0)\n+2278D8 Local Header Offset   000F5F29 (1007401)\n+2278DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2257C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2278DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2257E3 CENTRAL HEADER #846   02014B50 (33639248)\n-2257E7 Created Zip Spec      14 (20) '2.0'\n-2257E8 Created OS            00 (0) 'MS-DOS'\n-2257E9 Extract Zip Spec      14 (20) '2.0'\n-2257EA Extract OS            00 (0) 'MS-DOS'\n-2257EB General Purpose Flag  0808 (2056)\n+227903 CENTRAL HEADER #846   02014B50 (33639248)\n+227907 Created Zip Spec      14 (20) '2.0'\n+227908 Created OS            00 (0) 'MS-DOS'\n+227909 Extract Zip Spec      14 (20) '2.0'\n+22790A Extract OS            00 (0) 'MS-DOS'\n+22790B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2257ED Compression Method    0008 (8) 'Deflated'\n-2257EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2257F3 CRC                   9FA19E67 (2678169191)\n-2257F7 Compressed Size       00000332 (818)\n-2257FB Uncompressed Size     00000668 (1640)\n-2257FF Filename Length       0030 (48)\n-225801 Extra Length          0000 (0)\n-225803 Comment Length        0000 (0)\n-225805 Disk Start            0000 (0)\n-225807 Int File Attributes   0000 (0)\n+22790D Compression Method    0008 (8) 'Deflated'\n+22790F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227913 CRC                   DDB2647D (3719455869)\n+227917 Compressed Size       00000278 (632)\n+22791B Uncompressed Size     00000501 (1281)\n+22791F Filename Length       0039 (57)\n+227921 Extra Length          0000 (0)\n+227923 Comment Length        0000 (0)\n+227925 Disk Start            0000 (0)\n+227927 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225809 Ext File Attributes   00000000 (0)\n-22580D Local Header Offset   000D4DB3 (871859)\n-225811 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227929 Ext File Attributes   00000000 (0)\n+22792D Local Header Offset   000F5F80 (1007488)\n+227931 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225811: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227931: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225841 CENTRAL HEADER #847   02014B50 (33639248)\n-225845 Created Zip Spec      14 (20) '2.0'\n-225846 Created OS            00 (0) 'MS-DOS'\n-225847 Extract Zip Spec      14 (20) '2.0'\n-225848 Extract OS            00 (0) 'MS-DOS'\n-225849 General Purpose Flag  0808 (2056)\n+22796A CENTRAL HEADER #847   02014B50 (33639248)\n+22796E Created Zip Spec      14 (20) '2.0'\n+22796F Created OS            00 (0) 'MS-DOS'\n+227970 Extract Zip Spec      14 (20) '2.0'\n+227971 Extract OS            00 (0) 'MS-DOS'\n+227972 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22584B Compression Method    0008 (8) 'Deflated'\n-22584D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225851 CRC                   00116B33 (1141555)\n-225855 Compressed Size       000002D0 (720)\n-225859 Uncompressed Size     000005E3 (1507)\n-22585D Filename Length       002B (43)\n-22585F Extra Length          0000 (0)\n-225861 Comment Length        0000 (0)\n-225863 Disk Start            0000 (0)\n-225865 Int File Attributes   0000 (0)\n+227974 Compression Method    0008 (8) 'Deflated'\n+227976 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22797A CRC                   5D9DDBCF (1570626511)\n+22797E Compressed Size       00000267 (615)\n+227982 Uncompressed Size     000004A5 (1189)\n+227986 Filename Length       003D (61)\n+227988 Extra Length          0000 (0)\n+22798A Comment Length        0000 (0)\n+22798C Disk Start            0000 (0)\n+22798E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225867 Ext File Attributes   00000000 (0)\n-22586B Local Header Offset   000D5143 (872771)\n-22586F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227990 Ext File Attributes   00000000 (0)\n+227994 Local Header Offset   000F625F (1008223)\n+227998 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22586F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227998: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22589A CENTRAL HEADER #848   02014B50 (33639248)\n-22589E Created Zip Spec      14 (20) '2.0'\n-22589F Created OS            00 (0) 'MS-DOS'\n-2258A0 Extract Zip Spec      14 (20) '2.0'\n-2258A1 Extract OS            00 (0) 'MS-DOS'\n-2258A2 General Purpose Flag  0808 (2056)\n+2279D5 CENTRAL HEADER #848   02014B50 (33639248)\n+2279D9 Created Zip Spec      14 (20) '2.0'\n+2279DA Created OS            00 (0) 'MS-DOS'\n+2279DB Extract Zip Spec      14 (20) '2.0'\n+2279DC Extract OS            00 (0) 'MS-DOS'\n+2279DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2258A4 Compression Method    0008 (8) 'Deflated'\n-2258A6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2258AA CRC                   767F730D (1988064013)\n-2258AE Compressed Size       00000279 (633)\n-2258B2 Uncompressed Size     00000479 (1145)\n-2258B6 Filename Length       002A (42)\n-2258B8 Extra Length          0000 (0)\n-2258BA Comment Length        0000 (0)\n-2258BC Disk Start            0000 (0)\n-2258BE Int File Attributes   0000 (0)\n+2279DF Compression Method    0008 (8) 'Deflated'\n+2279E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2279E5 CRC                   4453948E (1146328206)\n+2279E9 Compressed Size       000002EE (750)\n+2279ED Uncompressed Size     0000076E (1902)\n+2279F1 Filename Length       003E (62)\n+2279F3 Extra Length          0000 (0)\n+2279F5 Comment Length        0000 (0)\n+2279F7 Disk Start            0000 (0)\n+2279F9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2258C0 Ext File Attributes   00000000 (0)\n-2258C4 Local Header Offset   000D546C (873580)\n-2258C8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2279FB Ext File Attributes   00000000 (0)\n+2279FF Local Header Offset   000F6531 (1008945)\n+227A03 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2258C8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227A03: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2258F2 CENTRAL HEADER #849   02014B50 (33639248)\n-2258F6 Created Zip Spec      14 (20) '2.0'\n-2258F7 Created OS            00 (0) 'MS-DOS'\n-2258F8 Extract Zip Spec      14 (20) '2.0'\n-2258F9 Extract OS            00 (0) 'MS-DOS'\n-2258FA General Purpose Flag  0808 (2056)\n+227A41 CENTRAL HEADER #849   02014B50 (33639248)\n+227A45 Created Zip Spec      14 (20) '2.0'\n+227A46 Created OS            00 (0) 'MS-DOS'\n+227A47 Extract Zip Spec      14 (20) '2.0'\n+227A48 Extract OS            00 (0) 'MS-DOS'\n+227A49 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2258FC Compression Method    0008 (8) 'Deflated'\n-2258FE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225902 CRC                   00000000 (0)\n-225906 Compressed Size       00000002 (2)\n-22590A Uncompressed Size     00000000 (0)\n-22590E Filename Length       0023 (35)\n-225910 Extra Length          0000 (0)\n-225912 Comment Length        0000 (0)\n-225914 Disk Start            0000 (0)\n-225916 Int File Attributes   0000 (0)\n+227A4B Compression Method    0008 (8) 'Deflated'\n+227A4D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227A51 CRC                   E8A94DD9 (3903409625)\n+227A55 Compressed Size       0000022B (555)\n+227A59 Uncompressed Size     00000420 (1056)\n+227A5D Filename Length       0038 (56)\n+227A5F Extra Length          0000 (0)\n+227A61 Comment Length        0000 (0)\n+227A63 Disk Start            0000 (0)\n+227A65 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225918 Ext File Attributes   00000000 (0)\n-22591C Local Header Offset   000D573D (874301)\n-225920 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227A67 Ext File Attributes   00000000 (0)\n+227A6B Local Header Offset   000F688B (1009803)\n+227A6F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225920: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227A6F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225943 CENTRAL HEADER #850   02014B50 (33639248)\n-225947 Created Zip Spec      14 (20) '2.0'\n-225948 Created OS            00 (0) 'MS-DOS'\n-225949 Extract Zip Spec      14 (20) '2.0'\n-22594A Extract OS            00 (0) 'MS-DOS'\n-22594B General Purpose Flag  0808 (2056)\n+227AA7 CENTRAL HEADER #850   02014B50 (33639248)\n+227AAB Created Zip Spec      14 (20) '2.0'\n+227AAC Created OS            00 (0) 'MS-DOS'\n+227AAD Extract Zip Spec      14 (20) '2.0'\n+227AAE Extract OS            00 (0) 'MS-DOS'\n+227AAF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22594D Compression Method    0008 (8) 'Deflated'\n-22594F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225953 CRC                   C93175C4 (3375461828)\n-225957 Compressed Size       0000068A (1674)\n-22595B Uncompressed Size     000012EA (4842)\n-22595F Filename Length       0038 (56)\n-225961 Extra Length          0000 (0)\n-225963 Comment Length        0000 (0)\n-225965 Disk Start            0000 (0)\n-225967 Int File Attributes   0000 (0)\n+227AB1 Compression Method    0008 (8) 'Deflated'\n+227AB3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227AB7 CRC                   00000000 (0)\n+227ABB Compressed Size       00000002 (2)\n+227ABF Uncompressed Size     00000000 (0)\n+227AC3 Filename Length       002F (47)\n+227AC5 Extra Length          0000 (0)\n+227AC7 Comment Length        0000 (0)\n+227AC9 Disk Start            0000 (0)\n+227ACB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225969 Ext File Attributes   00000000 (0)\n-22596D Local Header Offset   000D5790 (874384)\n-225971 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227ACD Ext File Attributes   00000000 (0)\n+227AD1 Local Header Offset   000F6B1C (1010460)\n+227AD5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225971: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227AD5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2259A9 CENTRAL HEADER #851   02014B50 (33639248)\n-2259AD Created Zip Spec      14 (20) '2.0'\n-2259AE Created OS            00 (0) 'MS-DOS'\n-2259AF Extract Zip Spec      14 (20) '2.0'\n-2259B0 Extract OS            00 (0) 'MS-DOS'\n-2259B1 General Purpose Flag  0808 (2056)\n+227B04 CENTRAL HEADER #851   02014B50 (33639248)\n+227B08 Created Zip Spec      14 (20) '2.0'\n+227B09 Created OS            00 (0) 'MS-DOS'\n+227B0A Extract Zip Spec      14 (20) '2.0'\n+227B0B Extract OS            00 (0) 'MS-DOS'\n+227B0C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2259B3 Compression Method    0008 (8) 'Deflated'\n-2259B5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2259B9 CRC                   00000000 (0)\n-2259BD Compressed Size       00000002 (2)\n-2259C1 Uncompressed Size     00000000 (0)\n-2259C5 Filename Length       0024 (36)\n-2259C7 Extra Length          0000 (0)\n-2259C9 Comment Length        0000 (0)\n-2259CB Disk Start            0000 (0)\n-2259CD Int File Attributes   0000 (0)\n+227B0E Compression Method    0008 (8) 'Deflated'\n+227B10 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227B14 CRC                   C68A15C0 (3330938304)\n+227B18 Compressed Size       00000514 (1300)\n+227B1C Uncompressed Size     000011A2 (4514)\n+227B20 Filename Length       0049 (73)\n+227B22 Extra Length          0000 (0)\n+227B24 Comment Length        0000 (0)\n+227B26 Disk Start            0000 (0)\n+227B28 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2259CF Ext File Attributes   00000000 (0)\n-2259D3 Local Header Offset   000D5E80 (876160)\n-2259D7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227B2A Ext File Attributes   00000000 (0)\n+227B2E Local Header Offset   000F6B7B (1010555)\n+227B32 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2259D7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227B32: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2259FB CENTRAL HEADER #852   02014B50 (33639248)\n-2259FF Created Zip Spec      14 (20) '2.0'\n-225A00 Created OS            00 (0) 'MS-DOS'\n-225A01 Extract Zip Spec      14 (20) '2.0'\n-225A02 Extract OS            00 (0) 'MS-DOS'\n-225A03 General Purpose Flag  0808 (2056)\n+227B7B CENTRAL HEADER #852   02014B50 (33639248)\n+227B7F Created Zip Spec      14 (20) '2.0'\n+227B80 Created OS            00 (0) 'MS-DOS'\n+227B81 Extract Zip Spec      14 (20) '2.0'\n+227B82 Extract OS            00 (0) 'MS-DOS'\n+227B83 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225A05 Compression Method    0008 (8) 'Deflated'\n-225A07 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225A0B CRC                   1D7B340C (494613516)\n-225A0F Compressed Size       0000036D (877)\n-225A13 Uncompressed Size     000007D6 (2006)\n-225A17 Filename Length       003B (59)\n-225A19 Extra Length          0000 (0)\n-225A1B Comment Length        0000 (0)\n-225A1D Disk Start            0000 (0)\n-225A1F Int File Attributes   0000 (0)\n+227B85 Compression Method    0008 (8) 'Deflated'\n+227B87 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227B8B CRC                   27A7C8DD (665307357)\n+227B8F Compressed Size       000005B0 (1456)\n+227B93 Uncompressed Size     00001334 (4916)\n+227B97 Filename Length       0046 (70)\n+227B99 Extra Length          0000 (0)\n+227B9B Comment Length        0000 (0)\n+227B9D Disk Start            0000 (0)\n+227B9F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225A21 Ext File Attributes   00000000 (0)\n-225A25 Local Header Offset   000D5ED4 (876244)\n-225A29 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227BA1 Ext File Attributes   00000000 (0)\n+227BA5 Local Header Offset   000F7106 (1011974)\n+227BA9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225A29: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227BA9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225A64 CENTRAL HEADER #853   02014B50 (33639248)\n-225A68 Created Zip Spec      14 (20) '2.0'\n-225A69 Created OS            00 (0) 'MS-DOS'\n-225A6A Extract Zip Spec      14 (20) '2.0'\n-225A6B Extract OS            00 (0) 'MS-DOS'\n-225A6C General Purpose Flag  0808 (2056)\n+227BEF CENTRAL HEADER #853   02014B50 (33639248)\n+227BF3 Created Zip Spec      14 (20) '2.0'\n+227BF4 Created OS            00 (0) 'MS-DOS'\n+227BF5 Extract Zip Spec      14 (20) '2.0'\n+227BF6 Extract OS            00 (0) 'MS-DOS'\n+227BF7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225A6E Compression Method    0008 (8) 'Deflated'\n-225A70 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225A74 CRC                   00000000 (0)\n-225A78 Compressed Size       00000002 (2)\n-225A7C Uncompressed Size     00000000 (0)\n-225A80 Filename Length       0030 (48)\n-225A82 Extra Length          0000 (0)\n-225A84 Comment Length        0000 (0)\n-225A86 Disk Start            0000 (0)\n-225A88 Int File Attributes   0000 (0)\n+227BF9 Compression Method    0008 (8) 'Deflated'\n+227BFB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227BFF CRC                   EC1A089B (3961129115)\n+227C03 Compressed Size       00000654 (1620)\n+227C07 Uncompressed Size     00001498 (5272)\n+227C0B Filename Length       0045 (69)\n+227C0D Extra Length          0000 (0)\n+227C0F Comment Length        0000 (0)\n+227C11 Disk Start            0000 (0)\n+227C13 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225A8A Ext File Attributes   00000000 (0)\n-225A8E Local Header Offset   000D62AA (877226)\n-225A92 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227C15 Ext File Attributes   00000000 (0)\n+227C19 Local Header Offset   000F772A (1013546)\n+227C1D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225A92: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227C1D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225AC2 CENTRAL HEADER #854   02014B50 (33639248)\n-225AC6 Created Zip Spec      14 (20) '2.0'\n-225AC7 Created OS            00 (0) 'MS-DOS'\n-225AC8 Extract Zip Spec      14 (20) '2.0'\n-225AC9 Extract OS            00 (0) 'MS-DOS'\n-225ACA General Purpose Flag  0808 (2056)\n+227C62 CENTRAL HEADER #854   02014B50 (33639248)\n+227C66 Created Zip Spec      14 (20) '2.0'\n+227C67 Created OS            00 (0) 'MS-DOS'\n+227C68 Extract Zip Spec      14 (20) '2.0'\n+227C69 Extract OS            00 (0) 'MS-DOS'\n+227C6A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225ACC Compression Method    0008 (8) 'Deflated'\n-225ACE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225AD2 CRC                   5A6ECC92 (1517210770)\n-225AD6 Compressed Size       000002BE (702)\n-225ADA Uncompressed Size     000005C3 (1475)\n-225ADE Filename Length       0040 (64)\n-225AE0 Extra Length          0000 (0)\n-225AE2 Comment Length        0000 (0)\n-225AE4 Disk Start            0000 (0)\n-225AE6 Int File Attributes   0000 (0)\n+227C6C Compression Method    0008 (8) 'Deflated'\n+227C6E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227C72 CRC                   D99CBCB4 (3650927796)\n+227C76 Compressed Size       00000280 (640)\n+227C7A Uncompressed Size     00000536 (1334)\n+227C7E Filename Length       0049 (73)\n+227C80 Extra Length          0000 (0)\n+227C82 Comment Length        0000 (0)\n+227C84 Disk Start            0000 (0)\n+227C86 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225AE8 Ext File Attributes   00000000 (0)\n-225AEC Local Header Offset   000D630A (877322)\n-225AF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227C88 Ext File Attributes   00000000 (0)\n+227C8C Local Header Offset   000F7DF1 (1015281)\n+227C90 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225AF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227C90: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225B30 CENTRAL HEADER #855   02014B50 (33639248)\n-225B34 Created Zip Spec      14 (20) '2.0'\n-225B35 Created OS            00 (0) 'MS-DOS'\n-225B36 Extract Zip Spec      14 (20) '2.0'\n-225B37 Extract OS            00 (0) 'MS-DOS'\n-225B38 General Purpose Flag  0808 (2056)\n+227CD9 CENTRAL HEADER #855   02014B50 (33639248)\n+227CDD Created Zip Spec      14 (20) '2.0'\n+227CDE Created OS            00 (0) 'MS-DOS'\n+227CDF Extract Zip Spec      14 (20) '2.0'\n+227CE0 Extract OS            00 (0) 'MS-DOS'\n+227CE1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225B3A Compression Method    0008 (8) 'Deflated'\n-225B3C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225B40 CRC                   B191ADCB (2979114443)\n-225B44 Compressed Size       00000E0D (3597)\n-225B48 Uncompressed Size     00003D3F (15679)\n-225B4C Filename Length       003F (63)\n-225B4E Extra Length          0000 (0)\n-225B50 Comment Length        0000 (0)\n-225B52 Disk Start            0000 (0)\n-225B54 Int File Attributes   0000 (0)\n+227CE3 Compression Method    0008 (8) 'Deflated'\n+227CE5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227CE9 CRC                   25CC04D5 (634127573)\n+227CED Compressed Size       0000058E (1422)\n+227CF1 Uncompressed Size     00001094 (4244)\n+227CF5 Filename Length       004A (74)\n+227CF7 Extra Length          0000 (0)\n+227CF9 Comment Length        0000 (0)\n+227CFB Disk Start            0000 (0)\n+227CFD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225B56 Ext File Attributes   00000000 (0)\n-225B5A Local Header Offset   000D6636 (878134)\n-225B5E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227CFF Ext File Attributes   00000000 (0)\n+227D03 Local Header Offset   000F80E8 (1016040)\n+227D07 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225B5E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227D07: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225B9D CENTRAL HEADER #856   02014B50 (33639248)\n-225BA1 Created Zip Spec      14 (20) '2.0'\n-225BA2 Created OS            00 (0) 'MS-DOS'\n-225BA3 Extract Zip Spec      14 (20) '2.0'\n-225BA4 Extract OS            00 (0) 'MS-DOS'\n-225BA5 General Purpose Flag  0808 (2056)\n+227D51 CENTRAL HEADER #856   02014B50 (33639248)\n+227D55 Created Zip Spec      14 (20) '2.0'\n+227D56 Created OS            00 (0) 'MS-DOS'\n+227D57 Extract Zip Spec      14 (20) '2.0'\n+227D58 Extract OS            00 (0) 'MS-DOS'\n+227D59 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225BA7 Compression Method    0008 (8) 'Deflated'\n-225BA9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225BAD CRC                   00000000 (0)\n-225BB1 Compressed Size       00000002 (2)\n-225BB5 Uncompressed Size     00000000 (0)\n-225BB9 Filename Length       001A (26)\n-225BBB Extra Length          0000 (0)\n-225BBD Comment Length        0000 (0)\n-225BBF Disk Start            0000 (0)\n-225BC1 Int File Attributes   0000 (0)\n+227D5B Compression Method    0008 (8) 'Deflated'\n+227D5D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227D61 CRC                   ECA8B7E4 (3970480100)\n+227D65 Compressed Size       00000284 (644)\n+227D69 Uncompressed Size     00000545 (1349)\n+227D6D Filename Length       004E (78)\n+227D6F Extra Length          0000 (0)\n+227D71 Comment Length        0000 (0)\n+227D73 Disk Start            0000 (0)\n+227D75 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225BC3 Ext File Attributes   00000000 (0)\n-225BC7 Local Header Offset   000D74B0 (881840)\n-225BCB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227D77 Ext File Attributes   00000000 (0)\n+227D7B Local Header Offset   000F86EE (1017582)\n+227D7F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225BCB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227D7F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225BE5 CENTRAL HEADER #857   02014B50 (33639248)\n-225BE9 Created Zip Spec      14 (20) '2.0'\n-225BEA Created OS            00 (0) 'MS-DOS'\n-225BEB Extract Zip Spec      14 (20) '2.0'\n-225BEC Extract OS            00 (0) 'MS-DOS'\n-225BED General Purpose Flag  0808 (2056)\n+227DCD CENTRAL HEADER #857   02014B50 (33639248)\n+227DD1 Created Zip Spec      14 (20) '2.0'\n+227DD2 Created OS            00 (0) 'MS-DOS'\n+227DD3 Extract Zip Spec      14 (20) '2.0'\n+227DD4 Extract OS            00 (0) 'MS-DOS'\n+227DD5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225BEF Compression Method    0008 (8) 'Deflated'\n-225BF1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225BF5 CRC                   1FBA8398 (532317080)\n-225BF9 Compressed Size       00000305 (773)\n-225BFD Uncompressed Size     0000073A (1850)\n-225C01 Filename Length       0026 (38)\n-225C03 Extra Length          0000 (0)\n-225C05 Comment Length        0000 (0)\n-225C07 Disk Start            0000 (0)\n-225C09 Int File Attributes   0000 (0)\n+227DD7 Compression Method    0008 (8) 'Deflated'\n+227DD9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227DDD CRC                   00000000 (0)\n+227DE1 Compressed Size       00000002 (2)\n+227DE5 Uncompressed Size     00000000 (0)\n+227DE9 Filename Length       0026 (38)\n+227DEB Extra Length          0000 (0)\n+227DED Comment Length        0000 (0)\n+227DEF Disk Start            0000 (0)\n+227DF1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225C0B Ext File Attributes   00000000 (0)\n-225C0F Local Header Offset   000D74FA (881914)\n-225C13 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227DF3 Ext File Attributes   00000000 (0)\n+227DF7 Local Header Offset   000F89EE (1018350)\n+227DFB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225C13: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227DFB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225C39 CENTRAL HEADER #858   02014B50 (33639248)\n-225C3D Created Zip Spec      14 (20) '2.0'\n-225C3E Created OS            00 (0) 'MS-DOS'\n-225C3F Extract Zip Spec      14 (20) '2.0'\n-225C40 Extract OS            00 (0) 'MS-DOS'\n-225C41 General Purpose Flag  0808 (2056)\n+227E21 CENTRAL HEADER #858   02014B50 (33639248)\n+227E25 Created Zip Spec      14 (20) '2.0'\n+227E26 Created OS            00 (0) 'MS-DOS'\n+227E27 Extract Zip Spec      14 (20) '2.0'\n+227E28 Extract OS            00 (0) 'MS-DOS'\n+227E29 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225C43 Compression Method    0008 (8) 'Deflated'\n-225C45 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225C49 CRC                   1A6C5333 (443306803)\n-225C4D Compressed Size       000002F8 (760)\n-225C51 Uncompressed Size     00000849 (2121)\n-225C55 Filename Length       002D (45)\n-225C57 Extra Length          0000 (0)\n-225C59 Comment Length        0000 (0)\n-225C5B Disk Start            0000 (0)\n-225C5D Int File Attributes   0000 (0)\n+227E2B Compression Method    0008 (8) 'Deflated'\n+227E2D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227E31 CRC                   F154D7FB (4048869371)\n+227E35 Compressed Size       000004D8 (1240)\n+227E39 Uncompressed Size     00000FA2 (4002)\n+227E3D Filename Length       0038 (56)\n+227E3F Extra Length          0000 (0)\n+227E41 Comment Length        0000 (0)\n+227E43 Disk Start            0000 (0)\n+227E45 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225C5F Ext File Attributes   00000000 (0)\n-225C63 Local Header Offset   000D7853 (882771)\n-225C67 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227E47 Ext File Attributes   00000000 (0)\n+227E4B Local Header Offset   000F8A44 (1018436)\n+227E4F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225C67: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227E4F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225C94 CENTRAL HEADER #859   02014B50 (33639248)\n-225C98 Created Zip Spec      14 (20) '2.0'\n-225C99 Created OS            00 (0) 'MS-DOS'\n-225C9A Extract Zip Spec      14 (20) '2.0'\n-225C9B Extract OS            00 (0) 'MS-DOS'\n-225C9C General Purpose Flag  0808 (2056)\n+227E87 CENTRAL HEADER #859   02014B50 (33639248)\n+227E8B Created Zip Spec      14 (20) '2.0'\n+227E8C Created OS            00 (0) 'MS-DOS'\n+227E8D Extract Zip Spec      14 (20) '2.0'\n+227E8E Extract OS            00 (0) 'MS-DOS'\n+227E8F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225C9E Compression Method    0008 (8) 'Deflated'\n-225CA0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225CA4 CRC                   107C6EE6 (276590310)\n-225CA8 Compressed Size       000002ED (749)\n-225CAC Uncompressed Size     0000058B (1419)\n-225CB0 Filename Length       0025 (37)\n-225CB2 Extra Length          0000 (0)\n-225CB4 Comment Length        0000 (0)\n-225CB6 Disk Start            0000 (0)\n-225CB8 Int File Attributes   0000 (0)\n+227E91 Compression Method    0008 (8) 'Deflated'\n+227E93 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227E97 CRC                   126F64B9 (309290169)\n+227E9B Compressed Size       00000612 (1554)\n+227E9F Uncompressed Size     000013C0 (5056)\n+227EA3 Filename Length       0034 (52)\n+227EA5 Extra Length          0000 (0)\n+227EA7 Comment Length        0000 (0)\n+227EA9 Disk Start            0000 (0)\n+227EAB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225CBA Ext File Attributes   00000000 (0)\n-225CBE Local Header Offset   000D7BA6 (883622)\n-225CC2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227EAD Ext File Attributes   00000000 (0)\n+227EB1 Local Header Offset   000F8F82 (1019778)\n+227EB5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225CC2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227EB5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225CE7 CENTRAL HEADER #860   02014B50 (33639248)\n-225CEB Created Zip Spec      14 (20) '2.0'\n-225CEC Created OS            00 (0) 'MS-DOS'\n-225CED Extract Zip Spec      14 (20) '2.0'\n-225CEE Extract OS            00 (0) 'MS-DOS'\n-225CEF General Purpose Flag  0808 (2056)\n+227EE9 CENTRAL HEADER #860   02014B50 (33639248)\n+227EED Created Zip Spec      14 (20) '2.0'\n+227EEE Created OS            00 (0) 'MS-DOS'\n+227EEF Extract Zip Spec      14 (20) '2.0'\n+227EF0 Extract OS            00 (0) 'MS-DOS'\n+227EF1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225CF1 Compression Method    0008 (8) 'Deflated'\n-225CF3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225CF7 CRC                   201747E5 (538396645)\n-225CFB Compressed Size       00000334 (820)\n-225CFF Uncompressed Size     00000734 (1844)\n-225D03 Filename Length       0024 (36)\n-225D05 Extra Length          0000 (0)\n-225D07 Comment Length        0000 (0)\n-225D09 Disk Start            0000 (0)\n-225D0B Int File Attributes   0000 (0)\n+227EF3 Compression Method    0008 (8) 'Deflated'\n+227EF5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227EF9 CRC                   DE2F0B5D (3727625053)\n+227EFD Compressed Size       00000272 (626)\n+227F01 Uncompressed Size     000004EB (1259)\n+227F05 Filename Length       0038 (56)\n+227F07 Extra Length          0000 (0)\n+227F09 Comment Length        0000 (0)\n+227F0B Disk Start            0000 (0)\n+227F0D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225D0D Ext File Attributes   00000000 (0)\n-225D11 Local Header Offset   000D7EE6 (884454)\n-225D15 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227F0F Ext File Attributes   00000000 (0)\n+227F13 Local Header Offset   000F95F6 (1021430)\n+227F17 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225D15: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227F17: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225D39 CENTRAL HEADER #861   02014B50 (33639248)\n-225D3D Created Zip Spec      14 (20) '2.0'\n-225D3E Created OS            00 (0) 'MS-DOS'\n-225D3F Extract Zip Spec      14 (20) '2.0'\n-225D40 Extract OS            00 (0) 'MS-DOS'\n-225D41 General Purpose Flag  0808 (2056)\n+227F4F CENTRAL HEADER #861   02014B50 (33639248)\n+227F53 Created Zip Spec      14 (20) '2.0'\n+227F54 Created OS            00 (0) 'MS-DOS'\n+227F55 Extract Zip Spec      14 (20) '2.0'\n+227F56 Extract OS            00 (0) 'MS-DOS'\n+227F57 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225D43 Compression Method    0008 (8) 'Deflated'\n-225D45 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225D49 CRC                   B08F3D84 (2962177412)\n-225D4D Compressed Size       000002AF (687)\n-225D51 Uncompressed Size     0000055C (1372)\n-225D55 Filename Length       0025 (37)\n-225D57 Extra Length          0000 (0)\n-225D59 Comment Length        0000 (0)\n-225D5B Disk Start            0000 (0)\n-225D5D Int File Attributes   0000 (0)\n+227F59 Compression Method    0008 (8) 'Deflated'\n+227F5B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227F5F CRC                   91721BC5 (2440174533)\n+227F63 Compressed Size       00000582 (1410)\n+227F67 Uncompressed Size     0000103F (4159)\n+227F6B Filename Length       0039 (57)\n+227F6D Extra Length          0000 (0)\n+227F6F Comment Length        0000 (0)\n+227F71 Disk Start            0000 (0)\n+227F73 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225D5F Ext File Attributes   00000000 (0)\n-225D63 Local Header Offset   000D826C (885356)\n-225D67 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227F75 Ext File Attributes   00000000 (0)\n+227F79 Local Header Offset   000F98CE (1022158)\n+227F7D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225D67: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227F7D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225D8C CENTRAL HEADER #862   02014B50 (33639248)\n-225D90 Created Zip Spec      14 (20) '2.0'\n-225D91 Created OS            00 (0) 'MS-DOS'\n-225D92 Extract Zip Spec      14 (20) '2.0'\n-225D93 Extract OS            00 (0) 'MS-DOS'\n-225D94 General Purpose Flag  0808 (2056)\n+227FB6 CENTRAL HEADER #862   02014B50 (33639248)\n+227FBA Created Zip Spec      14 (20) '2.0'\n+227FBB Created OS            00 (0) 'MS-DOS'\n+227FBC Extract Zip Spec      14 (20) '2.0'\n+227FBD Extract OS            00 (0) 'MS-DOS'\n+227FBE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225D96 Compression Method    0008 (8) 'Deflated'\n-225D98 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225D9C CRC                   AB401562 (2873103714)\n-225DA0 Compressed Size       000005A5 (1445)\n-225DA4 Uncompressed Size     00000E7B (3707)\n-225DA8 Filename Length       0028 (40)\n-225DAA Extra Length          0000 (0)\n-225DAC Comment Length        0000 (0)\n-225DAE Disk Start            0000 (0)\n-225DB0 Int File Attributes   0000 (0)\n+227FC0 Compression Method    0008 (8) 'Deflated'\n+227FC2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+227FC6 CRC                   6E31EAB9 (1848765113)\n+227FCA Compressed Size       00000276 (630)\n+227FCE Uncompressed Size     000004FA (1274)\n+227FD2 Filename Length       003D (61)\n+227FD4 Extra Length          0000 (0)\n+227FD6 Comment Length        0000 (0)\n+227FD8 Disk Start            0000 (0)\n+227FDA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225DB2 Ext File Attributes   00000000 (0)\n-225DB6 Local Header Offset   000D856E (886126)\n-225DBA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+227FDC Ext File Attributes   00000000 (0)\n+227FE0 Local Header Offset   000F9EB7 (1023671)\n+227FE4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225DBA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x227FE4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225DE2 CENTRAL HEADER #863   02014B50 (33639248)\n-225DE6 Created Zip Spec      14 (20) '2.0'\n-225DE7 Created OS            00 (0) 'MS-DOS'\n-225DE8 Extract Zip Spec      14 (20) '2.0'\n-225DE9 Extract OS            00 (0) 'MS-DOS'\n-225DEA General Purpose Flag  0808 (2056)\n+228021 CENTRAL HEADER #863   02014B50 (33639248)\n+228025 Created Zip Spec      14 (20) '2.0'\n+228026 Created OS            00 (0) 'MS-DOS'\n+228027 Extract Zip Spec      14 (20) '2.0'\n+228028 Extract OS            00 (0) 'MS-DOS'\n+228029 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225DEC Compression Method    0008 (8) 'Deflated'\n-225DEE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225DF2 CRC                   D7F89917 (3623393559)\n-225DF6 Compressed Size       00000210 (528)\n-225DFA Uncompressed Size     000003AC (940)\n-225DFE Filename Length       0029 (41)\n-225E00 Extra Length          0000 (0)\n-225E02 Comment Length        0000 (0)\n-225E04 Disk Start            0000 (0)\n-225E06 Int File Attributes   0000 (0)\n+22802B Compression Method    0008 (8) 'Deflated'\n+22802D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228031 CRC                   9A81C390 (2592195472)\n+228035 Compressed Size       0000054E (1358)\n+228039 Uncompressed Size     0000109F (4255)\n+22803D Filename Length       0035 (53)\n+22803F Extra Length          0000 (0)\n+228041 Comment Length        0000 (0)\n+228043 Disk Start            0000 (0)\n+228045 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225E08 Ext File Attributes   00000000 (0)\n-225E0C Local Header Offset   000D8B69 (887657)\n-225E10 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228047 Ext File Attributes   00000000 (0)\n+22804B Local Header Offset   000FA198 (1024408)\n+22804F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225E10: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22804F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225E39 CENTRAL HEADER #864   02014B50 (33639248)\n-225E3D Created Zip Spec      14 (20) '2.0'\n-225E3E Created OS            00 (0) 'MS-DOS'\n-225E3F Extract Zip Spec      14 (20) '2.0'\n-225E40 Extract OS            00 (0) 'MS-DOS'\n-225E41 General Purpose Flag  0808 (2056)\n+228084 CENTRAL HEADER #864   02014B50 (33639248)\n+228088 Created Zip Spec      14 (20) '2.0'\n+228089 Created OS            00 (0) 'MS-DOS'\n+22808A Extract Zip Spec      14 (20) '2.0'\n+22808B Extract OS            00 (0) 'MS-DOS'\n+22808C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225E43 Compression Method    0008 (8) 'Deflated'\n-225E45 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225E49 CRC                   277ABF59 (662355801)\n-225E4D Compressed Size       00000309 (777)\n-225E51 Uncompressed Size     000005F8 (1528)\n-225E55 Filename Length       0029 (41)\n-225E57 Extra Length          0000 (0)\n-225E59 Comment Length        0000 (0)\n-225E5B Disk Start            0000 (0)\n-225E5D Int File Attributes   0000 (0)\n+22808E Compression Method    0008 (8) 'Deflated'\n+228090 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228094 CRC                   00000000 (0)\n+228098 Compressed Size       00000002 (2)\n+22809C Uncompressed Size     00000000 (0)\n+2280A0 Filename Length       0033 (51)\n+2280A2 Extra Length          0000 (0)\n+2280A4 Comment Length        0000 (0)\n+2280A6 Disk Start            0000 (0)\n+2280A8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225E5F Ext File Attributes   00000000 (0)\n-225E63 Local Header Offset   000D8DD0 (888272)\n-225E67 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2280AA Ext File Attributes   00000000 (0)\n+2280AE Local Header Offset   000FA749 (1025865)\n+2280B2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225E67: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2280B2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225E90 CENTRAL HEADER #865   02014B50 (33639248)\n-225E94 Created Zip Spec      14 (20) '2.0'\n-225E95 Created OS            00 (0) 'MS-DOS'\n-225E96 Extract Zip Spec      14 (20) '2.0'\n-225E97 Extract OS            00 (0) 'MS-DOS'\n-225E98 General Purpose Flag  0808 (2056)\n+2280E5 CENTRAL HEADER #865   02014B50 (33639248)\n+2280E9 Created Zip Spec      14 (20) '2.0'\n+2280EA Created OS            00 (0) 'MS-DOS'\n+2280EB Extract Zip Spec      14 (20) '2.0'\n+2280EC Extract OS            00 (0) 'MS-DOS'\n+2280ED General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225E9A Compression Method    0008 (8) 'Deflated'\n-225E9C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225EA0 CRC                   D97FD102 (3649032450)\n-225EA4 Compressed Size       00000344 (836)\n-225EA8 Uncompressed Size     0000083D (2109)\n-225EAC Filename Length       0027 (39)\n-225EAE Extra Length          0000 (0)\n-225EB0 Comment Length        0000 (0)\n-225EB2 Disk Start            0000 (0)\n-225EB4 Int File Attributes   0000 (0)\n+2280EF Compression Method    0008 (8) 'Deflated'\n+2280F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2280F5 CRC                   4435D23A (1144377914)\n+2280F9 Compressed Size       00000373 (883)\n+2280FD Uncompressed Size     00000862 (2146)\n+228101 Filename Length       003A (58)\n+228103 Extra Length          0000 (0)\n+228105 Comment Length        0000 (0)\n+228107 Disk Start            0000 (0)\n+228109 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225EB6 Ext File Attributes   00000000 (0)\n-225EBA Local Header Offset   000D9130 (889136)\n-225EBE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22810B Ext File Attributes   00000000 (0)\n+22810F Local Header Offset   000FA7AC (1025964)\n+228113 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225EBE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228113: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225EE5 CENTRAL HEADER #866   02014B50 (33639248)\n-225EE9 Created Zip Spec      14 (20) '2.0'\n-225EEA Created OS            00 (0) 'MS-DOS'\n-225EEB Extract Zip Spec      14 (20) '2.0'\n-225EEC Extract OS            00 (0) 'MS-DOS'\n-225EED General Purpose Flag  0808 (2056)\n+22814D CENTRAL HEADER #866   02014B50 (33639248)\n+228151 Created Zip Spec      14 (20) '2.0'\n+228152 Created OS            00 (0) 'MS-DOS'\n+228153 Extract Zip Spec      14 (20) '2.0'\n+228154 Extract OS            00 (0) 'MS-DOS'\n+228155 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225EEF Compression Method    0008 (8) 'Deflated'\n-225EF1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225EF5 CRC                   6CA638E1 (1822832865)\n-225EF9 Compressed Size       0000030F (783)\n-225EFD Uncompressed Size     00000968 (2408)\n-225F01 Filename Length       0031 (49)\n-225F03 Extra Length          0000 (0)\n-225F05 Comment Length        0000 (0)\n-225F07 Disk Start            0000 (0)\n-225F09 Int File Attributes   0000 (0)\n+228157 Compression Method    0008 (8) 'Deflated'\n+228159 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22815D CRC                   9F593154 (2673422676)\n+228161 Compressed Size       00000047 (71)\n+228165 Uncompressed Size     00000049 (73)\n+228169 Filename Length       0041 (65)\n+22816B Extra Length          0000 (0)\n+22816D Comment Length        0000 (0)\n+22816F Disk Start            0000 (0)\n+228171 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225F0B Ext File Attributes   00000000 (0)\n-225F0F Local Header Offset   000D94C9 (890057)\n-225F13 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228173 Ext File Attributes   00000000 (0)\n+228177 Local Header Offset   000FAB87 (1026951)\n+22817B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225F13: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22817B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225F44 CENTRAL HEADER #867   02014B50 (33639248)\n-225F48 Created Zip Spec      14 (20) '2.0'\n-225F49 Created OS            00 (0) 'MS-DOS'\n-225F4A Extract Zip Spec      14 (20) '2.0'\n-225F4B Extract OS            00 (0) 'MS-DOS'\n-225F4C General Purpose Flag  0808 (2056)\n+2281BC CENTRAL HEADER #867   02014B50 (33639248)\n+2281C0 Created Zip Spec      14 (20) '2.0'\n+2281C1 Created OS            00 (0) 'MS-DOS'\n+2281C2 Extract Zip Spec      14 (20) '2.0'\n+2281C3 Extract OS            00 (0) 'MS-DOS'\n+2281C4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225F4E Compression Method    0008 (8) 'Deflated'\n-225F50 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225F54 CRC                   A6AFF543 (2796549443)\n-225F58 Compressed Size       000002E1 (737)\n-225F5C Uncompressed Size     00000613 (1555)\n-225F60 Filename Length       002B (43)\n-225F62 Extra Length          0000 (0)\n-225F64 Comment Length        0000 (0)\n-225F66 Disk Start            0000 (0)\n-225F68 Int File Attributes   0000 (0)\n+2281C6 Compression Method    0008 (8) 'Deflated'\n+2281C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2281CC CRC                   00000000 (0)\n+2281D0 Compressed Size       00000002 (2)\n+2281D4 Uncompressed Size     00000000 (0)\n+2281D8 Filename Length       001F (31)\n+2281DA Extra Length          0000 (0)\n+2281DC Comment Length        0000 (0)\n+2281DE Disk Start            0000 (0)\n+2281E0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225F6A Ext File Attributes   00000000 (0)\n-225F6E Local Header Offset   000D9837 (890935)\n-225F72 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2281E2 Ext File Attributes   00000000 (0)\n+2281E6 Local Header Offset   000FAC3D (1027133)\n+2281EA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225F72: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2281EA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225F9D CENTRAL HEADER #868   02014B50 (33639248)\n-225FA1 Created Zip Spec      14 (20) '2.0'\n-225FA2 Created OS            00 (0) 'MS-DOS'\n-225FA3 Extract Zip Spec      14 (20) '2.0'\n-225FA4 Extract OS            00 (0) 'MS-DOS'\n-225FA5 General Purpose Flag  0808 (2056)\n+228209 CENTRAL HEADER #868   02014B50 (33639248)\n+22820D Created Zip Spec      14 (20) '2.0'\n+22820E Created OS            00 (0) 'MS-DOS'\n+22820F Extract Zip Spec      14 (20) '2.0'\n+228210 Extract OS            00 (0) 'MS-DOS'\n+228211 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-225FA7 Compression Method    0008 (8) 'Deflated'\n-225FA9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-225FAD CRC                   F7D73BF2 (4158077938)\n-225FB1 Compressed Size       000003B7 (951)\n-225FB5 Uncompressed Size     00000C96 (3222)\n-225FB9 Filename Length       0030 (48)\n-225FBB Extra Length          0000 (0)\n-225FBD Comment Length        0000 (0)\n-225FBF Disk Start            0000 (0)\n-225FC1 Int File Attributes   0000 (0)\n+228213 Compression Method    0008 (8) 'Deflated'\n+228215 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228219 CRC                   20838DDF (545492447)\n+22821D Compressed Size       0000029A (666)\n+228221 Uncompressed Size     00000527 (1319)\n+228225 Filename Length       002E (46)\n+228227 Extra Length          0000 (0)\n+228229 Comment Length        0000 (0)\n+22822B Disk Start            0000 (0)\n+22822D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-225FC3 Ext File Attributes   00000000 (0)\n-225FC7 Local Header Offset   000D9B71 (891761)\n-225FCB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22822F Ext File Attributes   00000000 (0)\n+228233 Local Header Offset   000FAC8C (1027212)\n+228237 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x225FCB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228237: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-225FFB CENTRAL HEADER #869   02014B50 (33639248)\n-225FFF Created Zip Spec      14 (20) '2.0'\n-226000 Created OS            00 (0) 'MS-DOS'\n-226001 Extract Zip Spec      14 (20) '2.0'\n-226002 Extract OS            00 (0) 'MS-DOS'\n-226003 General Purpose Flag  0808 (2056)\n+228265 CENTRAL HEADER #869   02014B50 (33639248)\n+228269 Created Zip Spec      14 (20) '2.0'\n+22826A Created OS            00 (0) 'MS-DOS'\n+22826B Extract Zip Spec      14 (20) '2.0'\n+22826C Extract OS            00 (0) 'MS-DOS'\n+22826D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226005 Compression Method    0008 (8) 'Deflated'\n-226007 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22600B CRC                   D7FFC616 (3623863830)\n-22600F Compressed Size       00000340 (832)\n-226013 Uncompressed Size     000006A9 (1705)\n-226017 Filename Length       002D (45)\n-226019 Extra Length          0000 (0)\n-22601B Comment Length        0000 (0)\n-22601D Disk Start            0000 (0)\n-22601F Int File Attributes   0000 (0)\n+22826F Compression Method    0008 (8) 'Deflated'\n+228271 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228275 CRC                   736BD280 (1936446080)\n+228279 Compressed Size       0000028E (654)\n+22827D Uncompressed Size     0000056A (1386)\n+228281 Filename Length       002F (47)\n+228283 Extra Length          0000 (0)\n+228285 Comment Length        0000 (0)\n+228287 Disk Start            0000 (0)\n+228289 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226021 Ext File Attributes   00000000 (0)\n-226025 Local Header Offset   000D9F86 (892806)\n-226029 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22828B Ext File Attributes   00000000 (0)\n+22828F Local Header Offset   000FAF82 (1027970)\n+228293 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226029: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228293: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226056 CENTRAL HEADER #870   02014B50 (33639248)\n-22605A Created Zip Spec      14 (20) '2.0'\n-22605B Created OS            00 (0) 'MS-DOS'\n-22605C Extract Zip Spec      14 (20) '2.0'\n-22605D Extract OS            00 (0) 'MS-DOS'\n-22605E General Purpose Flag  0808 (2056)\n+2282C2 CENTRAL HEADER #870   02014B50 (33639248)\n+2282C6 Created Zip Spec      14 (20) '2.0'\n+2282C7 Created OS            00 (0) 'MS-DOS'\n+2282C8 Extract Zip Spec      14 (20) '2.0'\n+2282C9 Extract OS            00 (0) 'MS-DOS'\n+2282CA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226060 Compression Method    0008 (8) 'Deflated'\n-226062 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226066 CRC                   272E47E6 (657344486)\n-22606A Compressed Size       0000034C (844)\n-22606E Uncompressed Size     00000789 (1929)\n-226072 Filename Length       002F (47)\n-226074 Extra Length          0000 (0)\n-226076 Comment Length        0000 (0)\n-226078 Disk Start            0000 (0)\n-22607A Int File Attributes   0000 (0)\n+2282CC Compression Method    0008 (8) 'Deflated'\n+2282CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2282D2 CRC                   C27E840C (3263071244)\n+2282D6 Compressed Size       000002E1 (737)\n+2282DA Uncompressed Size     000006E9 (1769)\n+2282DE Filename Length       002E (46)\n+2282E0 Extra Length          0000 (0)\n+2282E2 Comment Length        0000 (0)\n+2282E4 Disk Start            0000 (0)\n+2282E6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22607C Ext File Attributes   00000000 (0)\n-226080 Local Header Offset   000DA321 (893729)\n-226084 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2282E8 Ext File Attributes   00000000 (0)\n+2282EC Local Header Offset   000FB26D (1028717)\n+2282F0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226084: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2282F0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2260B3 CENTRAL HEADER #871   02014B50 (33639248)\n-2260B7 Created Zip Spec      14 (20) '2.0'\n-2260B8 Created OS            00 (0) 'MS-DOS'\n-2260B9 Extract Zip Spec      14 (20) '2.0'\n-2260BA Extract OS            00 (0) 'MS-DOS'\n-2260BB General Purpose Flag  0808 (2056)\n+22831E CENTRAL HEADER #871   02014B50 (33639248)\n+228322 Created Zip Spec      14 (20) '2.0'\n+228323 Created OS            00 (0) 'MS-DOS'\n+228324 Extract Zip Spec      14 (20) '2.0'\n+228325 Extract OS            00 (0) 'MS-DOS'\n+228326 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2260BD Compression Method    0008 (8) 'Deflated'\n-2260BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2260C3 CRC                   684E4E1B (1749962267)\n-2260C7 Compressed Size       00000351 (849)\n-2260CB Uncompressed Size     00000814 (2068)\n-2260CF Filename Length       002A (42)\n-2260D1 Extra Length          0000 (0)\n-2260D3 Comment Length        0000 (0)\n-2260D5 Disk Start            0000 (0)\n-2260D7 Int File Attributes   0000 (0)\n+228328 Compression Method    0008 (8) 'Deflated'\n+22832A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22832E CRC                   00000000 (0)\n+228332 Compressed Size       00000002 (2)\n+228336 Uncompressed Size     00000000 (0)\n+22833A Filename Length       0025 (37)\n+22833C Extra Length          0000 (0)\n+22833E Comment Length        0000 (0)\n+228340 Disk Start            0000 (0)\n+228342 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2260D9 Ext File Attributes   00000000 (0)\n-2260DD Local Header Offset   000DA6CA (894666)\n-2260E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228344 Ext File Attributes   00000000 (0)\n+228348 Local Header Offset   000FB5AA (1029546)\n+22834C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2260E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22834C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22610B CENTRAL HEADER #872   02014B50 (33639248)\n-22610F Created Zip Spec      14 (20) '2.0'\n-226110 Created OS            00 (0) 'MS-DOS'\n-226111 Extract Zip Spec      14 (20) '2.0'\n-226112 Extract OS            00 (0) 'MS-DOS'\n-226113 General Purpose Flag  0808 (2056)\n+228371 CENTRAL HEADER #872   02014B50 (33639248)\n+228375 Created Zip Spec      14 (20) '2.0'\n+228376 Created OS            00 (0) 'MS-DOS'\n+228377 Extract Zip Spec      14 (20) '2.0'\n+228378 Extract OS            00 (0) 'MS-DOS'\n+228379 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226115 Compression Method    0008 (8) 'Deflated'\n-226117 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22611B CRC                   65BE8BD8 (1706986456)\n-22611F Compressed Size       000003B8 (952)\n-226123 Uncompressed Size     00000C19 (3097)\n-226127 Filename Length       002B (43)\n-226129 Extra Length          0000 (0)\n-22612B Comment Length        0000 (0)\n-22612D Disk Start            0000 (0)\n-22612F Int File Attributes   0000 (0)\n+22837B Compression Method    0008 (8) 'Deflated'\n+22837D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228381 CRC                   88BB48F4 (2293975284)\n+228385 Compressed Size       00000274 (628)\n+228389 Uncompressed Size     00000509 (1289)\n+22838D Filename Length       0039 (57)\n+22838F Extra Length          0000 (0)\n+228391 Comment Length        0000 (0)\n+228393 Disk Start            0000 (0)\n+228395 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226131 Ext File Attributes   00000000 (0)\n-226135 Local Header Offset   000DAA73 (895603)\n-226139 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228397 Ext File Attributes   00000000 (0)\n+22839B Local Header Offset   000FB5FF (1029631)\n+22839F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226139: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22839F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226164 CENTRAL HEADER #873   02014B50 (33639248)\n-226168 Created Zip Spec      14 (20) '2.0'\n-226169 Created OS            00 (0) 'MS-DOS'\n-22616A Extract Zip Spec      14 (20) '2.0'\n-22616B Extract OS            00 (0) 'MS-DOS'\n-22616C General Purpose Flag  0808 (2056)\n+2283D8 CENTRAL HEADER #873   02014B50 (33639248)\n+2283DC Created Zip Spec      14 (20) '2.0'\n+2283DD Created OS            00 (0) 'MS-DOS'\n+2283DE Extract Zip Spec      14 (20) '2.0'\n+2283DF Extract OS            00 (0) 'MS-DOS'\n+2283E0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22616E Compression Method    0008 (8) 'Deflated'\n-226170 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226174 CRC                   00000000 (0)\n-226178 Compressed Size       00000002 (2)\n-22617C Uncompressed Size     00000000 (0)\n-226180 Filename Length       0021 (33)\n-226182 Extra Length          0000 (0)\n-226184 Comment Length        0000 (0)\n-226186 Disk Start            0000 (0)\n-226188 Int File Attributes   0000 (0)\n+2283E2 Compression Method    0008 (8) 'Deflated'\n+2283E4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2283E8 CRC                   690E10B4 (1762529460)\n+2283EC Compressed Size       00000615 (1557)\n+2283F0 Uncompressed Size     0000128E (4750)\n+2283F4 Filename Length       0039 (57)\n+2283F6 Extra Length          0000 (0)\n+2283F8 Comment Length        0000 (0)\n+2283FA Disk Start            0000 (0)\n+2283FC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22618A Ext File Attributes   00000000 (0)\n-22618E Local Header Offset   000DAE84 (896644)\n-226192 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2283FE Ext File Attributes   00000000 (0)\n+228402 Local Header Offset   000FB8DA (1030362)\n+228406 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226192: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228406: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2261B3 CENTRAL HEADER #874   02014B50 (33639248)\n-2261B7 Created Zip Spec      14 (20) '2.0'\n-2261B8 Created OS            00 (0) 'MS-DOS'\n-2261B9 Extract Zip Spec      14 (20) '2.0'\n-2261BA Extract OS            00 (0) 'MS-DOS'\n-2261BB General Purpose Flag  0808 (2056)\n+22843F CENTRAL HEADER #874   02014B50 (33639248)\n+228443 Created Zip Spec      14 (20) '2.0'\n+228444 Created OS            00 (0) 'MS-DOS'\n+228445 Extract Zip Spec      14 (20) '2.0'\n+228446 Extract OS            00 (0) 'MS-DOS'\n+228447 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2261BD Compression Method    0008 (8) 'Deflated'\n-2261BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2261C3 CRC                   68852581 (1753556353)\n-2261C7 Compressed Size       000006C2 (1730)\n-2261CB Uncompressed Size     00002404 (9220)\n-2261CF Filename Length       003B (59)\n-2261D1 Extra Length          0000 (0)\n-2261D3 Comment Length        0000 (0)\n-2261D5 Disk Start            0000 (0)\n-2261D7 Int File Attributes   0000 (0)\n+228449 Compression Method    0008 (8) 'Deflated'\n+22844B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22844F CRC                   00000000 (0)\n+228453 Compressed Size       00000002 (2)\n+228457 Uncompressed Size     00000000 (0)\n+22845B Filename Length       0027 (39)\n+22845D Extra Length          0000 (0)\n+22845F Comment Length        0000 (0)\n+228461 Disk Start            0000 (0)\n+228463 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2261D9 Ext File Attributes   00000000 (0)\n-2261DD Local Header Offset   000DAED5 (896725)\n-2261E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228465 Ext File Attributes   00000000 (0)\n+228469 Local Header Offset   000FBF56 (1032022)\n+22846D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2261E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22846D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22621C CENTRAL HEADER #875   02014B50 (33639248)\n-226220 Created Zip Spec      14 (20) '2.0'\n-226221 Created OS            00 (0) 'MS-DOS'\n-226222 Extract Zip Spec      14 (20) '2.0'\n-226223 Extract OS            00 (0) 'MS-DOS'\n-226224 General Purpose Flag  0808 (2056)\n+228494 CENTRAL HEADER #875   02014B50 (33639248)\n+228498 Created Zip Spec      14 (20) '2.0'\n+228499 Created OS            00 (0) 'MS-DOS'\n+22849A Extract Zip Spec      14 (20) '2.0'\n+22849B Extract OS            00 (0) 'MS-DOS'\n+22849C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226226 Compression Method    0008 (8) 'Deflated'\n-226228 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22622C CRC                   AD83DA8F (2911099535)\n-226230 Compressed Size       000006AB (1707)\n-226234 Uncompressed Size     00001EB2 (7858)\n-226238 Filename Length       0043 (67)\n-22623A Extra Length          0000 (0)\n-22623C Comment Length        0000 (0)\n-22623E Disk Start            0000 (0)\n-226240 Int File Attributes   0000 (0)\n+22849E Compression Method    0008 (8) 'Deflated'\n+2284A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2284A4 CRC                   099C0616 (161220118)\n+2284A8 Compressed Size       000002D8 (728)\n+2284AC Uncompressed Size     00000628 (1576)\n+2284B0 Filename Length       003D (61)\n+2284B2 Extra Length          0000 (0)\n+2284B4 Comment Length        0000 (0)\n+2284B6 Disk Start            0000 (0)\n+2284B8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226242 Ext File Attributes   00000000 (0)\n-226246 Local Header Offset   000DB600 (898560)\n-22624A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2284BA Ext File Attributes   00000000 (0)\n+2284BE Local Header Offset   000FBFAD (1032109)\n+2284C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22624A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2284C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22628D CENTRAL HEADER #876   02014B50 (33639248)\n-226291 Created Zip Spec      14 (20) '2.0'\n-226292 Created OS            00 (0) 'MS-DOS'\n-226293 Extract Zip Spec      14 (20) '2.0'\n-226294 Extract OS            00 (0) 'MS-DOS'\n-226295 General Purpose Flag  0808 (2056)\n+2284FF CENTRAL HEADER #876   02014B50 (33639248)\n+228503 Created Zip Spec      14 (20) '2.0'\n+228504 Created OS            00 (0) 'MS-DOS'\n+228505 Extract Zip Spec      14 (20) '2.0'\n+228506 Extract OS            00 (0) 'MS-DOS'\n+228507 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226297 Compression Method    0008 (8) 'Deflated'\n-226299 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22629D CRC                   2E56D9DD (777443805)\n-2262A1 Compressed Size       0000196A (6506)\n-2262A5 Uncompressed Size     0000AA70 (43632)\n-2262A9 Filename Length       0033 (51)\n-2262AB Extra Length          0000 (0)\n-2262AD Comment Length        0000 (0)\n-2262AF Disk Start            0000 (0)\n-2262B1 Int File Attributes   0000 (0)\n+228509 Compression Method    0008 (8) 'Deflated'\n+22850B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22850F CRC                   1EBD34EC (515716332)\n+228513 Compressed Size       000003DA (986)\n+228517 Uncompressed Size     00000948 (2376)\n+22851B Filename Length       003D (61)\n+22851D Extra Length          0000 (0)\n+22851F Comment Length        0000 (0)\n+228521 Disk Start            0000 (0)\n+228523 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2262B3 Ext File Attributes   00000000 (0)\n-2262B7 Local Header Offset   000DBD1C (900380)\n-2262BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228525 Ext File Attributes   00000000 (0)\n+228529 Local Header Offset   000FC2F0 (1032944)\n+22852D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2262BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22852D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2262EE CENTRAL HEADER #877   02014B50 (33639248)\n-2262F2 Created Zip Spec      14 (20) '2.0'\n-2262F3 Created OS            00 (0) 'MS-DOS'\n-2262F4 Extract Zip Spec      14 (20) '2.0'\n-2262F5 Extract OS            00 (0) 'MS-DOS'\n-2262F6 General Purpose Flag  0808 (2056)\n+22856A CENTRAL HEADER #877   02014B50 (33639248)\n+22856E Created Zip Spec      14 (20) '2.0'\n+22856F Created OS            00 (0) 'MS-DOS'\n+228570 Extract Zip Spec      14 (20) '2.0'\n+228571 Extract OS            00 (0) 'MS-DOS'\n+228572 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2262F8 Compression Method    0008 (8) 'Deflated'\n-2262FA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2262FE CRC                   6A53E0FE (1783881982)\n-226302 Compressed Size       0000024F (591)\n-226306 Uncompressed Size     00000456 (1110)\n-22630A Filename Length       003A (58)\n-22630C Extra Length          0000 (0)\n-22630E Comment Length        0000 (0)\n-226310 Disk Start            0000 (0)\n-226312 Int File Attributes   0000 (0)\n+228574 Compression Method    0008 (8) 'Deflated'\n+228576 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22857A CRC                   129B84CC (312181964)\n+22857E Compressed Size       00000273 (627)\n+228582 Uncompressed Size     00000511 (1297)\n+228586 Filename Length       003D (61)\n+228588 Extra Length          0000 (0)\n+22858A Comment Length        0000 (0)\n+22858C Disk Start            0000 (0)\n+22858E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226314 Ext File Attributes   00000000 (0)\n-226318 Local Header Offset   000DD6E7 (906983)\n-22631C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228590 Ext File Attributes   00000000 (0)\n+228594 Local Header Offset   000FC735 (1034037)\n+228598 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22631C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228598: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226356 CENTRAL HEADER #878   02014B50 (33639248)\n-22635A Created Zip Spec      14 (20) '2.0'\n-22635B Created OS            00 (0) 'MS-DOS'\n-22635C Extract Zip Spec      14 (20) '2.0'\n-22635D Extract OS            00 (0) 'MS-DOS'\n-22635E General Purpose Flag  0808 (2056)\n+2285D5 CENTRAL HEADER #878   02014B50 (33639248)\n+2285D9 Created Zip Spec      14 (20) '2.0'\n+2285DA Created OS            00 (0) 'MS-DOS'\n+2285DB Extract Zip Spec      14 (20) '2.0'\n+2285DC Extract OS            00 (0) 'MS-DOS'\n+2285DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226360 Compression Method    0008 (8) 'Deflated'\n-226362 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226366 CRC                   4997E6D6 (1234691798)\n-22636A Compressed Size       00000429 (1065)\n-22636E Uncompressed Size     00000C53 (3155)\n-226372 Filename Length       003E (62)\n-226374 Extra Length          0000 (0)\n-226376 Comment Length        0000 (0)\n-226378 Disk Start            0000 (0)\n-22637A Int File Attributes   0000 (0)\n+2285DF Compression Method    0008 (8) 'Deflated'\n+2285E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2285E5 CRC                   9F24457D (2669954429)\n+2285E9 Compressed Size       00000295 (661)\n+2285ED Uncompressed Size     0000053C (1340)\n+2285F1 Filename Length       003D (61)\n+2285F3 Extra Length          0000 (0)\n+2285F5 Comment Length        0000 (0)\n+2285F7 Disk Start            0000 (0)\n+2285F9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22637C Ext File Attributes   00000000 (0)\n-226380 Local Header Offset   000DD99E (907678)\n-226384 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2285FB Ext File Attributes   00000000 (0)\n+2285FF Local Header Offset   000FCA13 (1034771)\n+228603 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226384: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228603: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2263C2 CENTRAL HEADER #879   02014B50 (33639248)\n-2263C6 Created Zip Spec      14 (20) '2.0'\n-2263C7 Created OS            00 (0) 'MS-DOS'\n-2263C8 Extract Zip Spec      14 (20) '2.0'\n-2263C9 Extract OS            00 (0) 'MS-DOS'\n-2263CA General Purpose Flag  0808 (2056)\n+228640 CENTRAL HEADER #879   02014B50 (33639248)\n+228644 Created Zip Spec      14 (20) '2.0'\n+228645 Created OS            00 (0) 'MS-DOS'\n+228646 Extract Zip Spec      14 (20) '2.0'\n+228647 Extract OS            00 (0) 'MS-DOS'\n+228648 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2263CC Compression Method    0008 (8) 'Deflated'\n-2263CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2263D2 CRC                   996F8C6F (2574224495)\n-2263D6 Compressed Size       00000307 (775)\n-2263DA Uncompressed Size     00000765 (1893)\n-2263DE Filename Length       003F (63)\n-2263E0 Extra Length          0000 (0)\n-2263E2 Comment Length        0000 (0)\n-2263E4 Disk Start            0000 (0)\n-2263E6 Int File Attributes   0000 (0)\n+22864A Compression Method    0008 (8) 'Deflated'\n+22864C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228650 CRC                   F1DDFBFB (4057857019)\n+228654 Compressed Size       00000312 (786)\n+228658 Uncompressed Size     000006D2 (1746)\n+22865C Filename Length       003A (58)\n+22865E Extra Length          0000 (0)\n+228660 Comment Length        0000 (0)\n+228662 Disk Start            0000 (0)\n+228664 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2263E8 Ext File Attributes   00000000 (0)\n-2263EC Local Header Offset   000DDE33 (908851)\n-2263F0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228666 Ext File Attributes   00000000 (0)\n+22866A Local Header Offset   000FCD13 (1035539)\n+22866E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2263F0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22866E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22642F CENTRAL HEADER #880   02014B50 (33639248)\n-226433 Created Zip Spec      14 (20) '2.0'\n-226434 Created OS            00 (0) 'MS-DOS'\n-226435 Extract Zip Spec      14 (20) '2.0'\n-226436 Extract OS            00 (0) 'MS-DOS'\n-226437 General Purpose Flag  0808 (2056)\n+2286A8 CENTRAL HEADER #880   02014B50 (33639248)\n+2286AC Created Zip Spec      14 (20) '2.0'\n+2286AD Created OS            00 (0) 'MS-DOS'\n+2286AE Extract Zip Spec      14 (20) '2.0'\n+2286AF Extract OS            00 (0) 'MS-DOS'\n+2286B0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226439 Compression Method    0008 (8) 'Deflated'\n-22643B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22643F CRC                   F6247952 (4129585490)\n-226443 Compressed Size       0000052D (1325)\n-226447 Uncompressed Size     000012A2 (4770)\n-22644B Filename Length       0034 (52)\n-22644D Extra Length          0000 (0)\n-22644F Comment Length        0000 (0)\n-226451 Disk Start            0000 (0)\n-226453 Int File Attributes   0000 (0)\n+2286B2 Compression Method    0008 (8) 'Deflated'\n+2286B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2286B8 CRC                   00000000 (0)\n+2286BC Compressed Size       00000002 (2)\n+2286C0 Uncompressed Size     00000000 (0)\n+2286C4 Filename Length       0027 (39)\n+2286C6 Extra Length          0000 (0)\n+2286C8 Comment Length        0000 (0)\n+2286CA Disk Start            0000 (0)\n+2286CC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226455 Ext File Attributes   00000000 (0)\n-226459 Local Header Offset   000DE1A7 (909735)\n-22645D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2286CE Ext File Attributes   00000000 (0)\n+2286D2 Local Header Offset   000FD08D (1036429)\n+2286D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22645D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2286D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226491 CENTRAL HEADER #881   02014B50 (33639248)\n-226495 Created Zip Spec      14 (20) '2.0'\n-226496 Created OS            00 (0) 'MS-DOS'\n-226497 Extract Zip Spec      14 (20) '2.0'\n-226498 Extract OS            00 (0) 'MS-DOS'\n-226499 General Purpose Flag  0808 (2056)\n+2286FD CENTRAL HEADER #881   02014B50 (33639248)\n+228701 Created Zip Spec      14 (20) '2.0'\n+228702 Created OS            00 (0) 'MS-DOS'\n+228703 Extract Zip Spec      14 (20) '2.0'\n+228704 Extract OS            00 (0) 'MS-DOS'\n+228705 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22649B Compression Method    0008 (8) 'Deflated'\n-22649D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2264A1 CRC                   9D245ED3 (2636406483)\n-2264A5 Compressed Size       000003C0 (960)\n-2264A9 Uncompressed Size     00000A45 (2629)\n-2264AD Filename Length       0040 (64)\n-2264AF Extra Length          0000 (0)\n-2264B1 Comment Length        0000 (0)\n-2264B3 Disk Start            0000 (0)\n-2264B5 Int File Attributes   0000 (0)\n+228707 Compression Method    0008 (8) 'Deflated'\n+228709 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22870D CRC                   AD23A7BE (2904795070)\n+228711 Compressed Size       00000424 (1060)\n+228715 Uncompressed Size     00000CE3 (3299)\n+228719 Filename Length       003E (62)\n+22871B Extra Length          0000 (0)\n+22871D Comment Length        0000 (0)\n+22871F Disk Start            0000 (0)\n+228721 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2264B7 Ext File Attributes   00000000 (0)\n-2264BB Local Header Offset   000DE736 (911158)\n-2264BF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228723 Ext File Attributes   00000000 (0)\n+228727 Local Header Offset   000FD0E4 (1036516)\n+22872B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2264BF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22872B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2264FF CENTRAL HEADER #882   02014B50 (33639248)\n-226503 Created Zip Spec      14 (20) '2.0'\n-226504 Created OS            00 (0) 'MS-DOS'\n-226505 Extract Zip Spec      14 (20) '2.0'\n-226506 Extract OS            00 (0) 'MS-DOS'\n-226507 General Purpose Flag  0808 (2056)\n+228769 CENTRAL HEADER #882   02014B50 (33639248)\n+22876D Created Zip Spec      14 (20) '2.0'\n+22876E Created OS            00 (0) 'MS-DOS'\n+22876F Extract Zip Spec      14 (20) '2.0'\n+228770 Extract OS            00 (0) 'MS-DOS'\n+228771 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226509 Compression Method    0008 (8) 'Deflated'\n-22650B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22650F CRC                   5ED5B140 (1591062848)\n-226513 Compressed Size       00000551 (1361)\n-226517 Uncompressed Size     000015E8 (5608)\n-22651B Filename Length       003A (58)\n-22651D Extra Length          0000 (0)\n-22651F Comment Length        0000 (0)\n-226521 Disk Start            0000 (0)\n-226523 Int File Attributes   0000 (0)\n+228773 Compression Method    0008 (8) 'Deflated'\n+228775 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228779 CRC                   00000000 (0)\n+22877D Compressed Size       00000002 (2)\n+228781 Uncompressed Size     00000000 (0)\n+228785 Filename Length       0026 (38)\n+228787 Extra Length          0000 (0)\n+228789 Comment Length        0000 (0)\n+22878B Disk Start            0000 (0)\n+22878D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226525 Ext File Attributes   00000000 (0)\n-226529 Local Header Offset   000DEB64 (912228)\n-22652D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22878F Ext File Attributes   00000000 (0)\n+228793 Local Header Offset   000FD574 (1037684)\n+228797 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22652D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228797: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226567 CENTRAL HEADER #883   02014B50 (33639248)\n-22656B Created Zip Spec      14 (20) '2.0'\n-22656C Created OS            00 (0) 'MS-DOS'\n-22656D Extract Zip Spec      14 (20) '2.0'\n-22656E Extract OS            00 (0) 'MS-DOS'\n-22656F General Purpose Flag  0808 (2056)\n+2287BD CENTRAL HEADER #883   02014B50 (33639248)\n+2287C1 Created Zip Spec      14 (20) '2.0'\n+2287C2 Created OS            00 (0) 'MS-DOS'\n+2287C3 Extract Zip Spec      14 (20) '2.0'\n+2287C4 Extract OS            00 (0) 'MS-DOS'\n+2287C5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226571 Compression Method    0008 (8) 'Deflated'\n-226573 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226577 CRC                   CC038CDE (3422784734)\n-22657B Compressed Size       0000065F (1631)\n-22657F Uncompressed Size     000019AF (6575)\n-226583 Filename Length       0037 (55)\n-226585 Extra Length          0000 (0)\n-226587 Comment Length        0000 (0)\n-226589 Disk Start            0000 (0)\n-22658B Int File Attributes   0000 (0)\n+2287C7 Compression Method    0008 (8) 'Deflated'\n+2287C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2287CD CRC                   2A48966F (709400175)\n+2287D1 Compressed Size       00000263 (611)\n+2287D5 Uncompressed Size     000004E9 (1257)\n+2287D9 Filename Length       003B (59)\n+2287DB Extra Length          0000 (0)\n+2287DD Comment Length        0000 (0)\n+2287DF Disk Start            0000 (0)\n+2287E1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22658D Ext File Attributes   00000000 (0)\n-226591 Local Header Offset   000DF11D (913693)\n-226595 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2287E3 Ext File Attributes   00000000 (0)\n+2287E7 Local Header Offset   000FD5CA (1037770)\n+2287EB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226595: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2287EB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2265CC CENTRAL HEADER #884   02014B50 (33639248)\n-2265D0 Created Zip Spec      14 (20) '2.0'\n-2265D1 Created OS            00 (0) 'MS-DOS'\n-2265D2 Extract Zip Spec      14 (20) '2.0'\n-2265D3 Extract OS            00 (0) 'MS-DOS'\n-2265D4 General Purpose Flag  0808 (2056)\n+228826 CENTRAL HEADER #884   02014B50 (33639248)\n+22882A Created Zip Spec      14 (20) '2.0'\n+22882B Created OS            00 (0) 'MS-DOS'\n+22882C Extract Zip Spec      14 (20) '2.0'\n+22882D Extract OS            00 (0) 'MS-DOS'\n+22882E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2265D6 Compression Method    0008 (8) 'Deflated'\n-2265D8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2265DC CRC                   80349D10 (2150931728)\n-2265E0 Compressed Size       00000314 (788)\n-2265E4 Uncompressed Size     00000779 (1913)\n-2265E8 Filename Length       003E (62)\n-2265EA Extra Length          0000 (0)\n-2265EC Comment Length        0000 (0)\n-2265EE Disk Start            0000 (0)\n-2265F0 Int File Attributes   0000 (0)\n+228830 Compression Method    0008 (8) 'Deflated'\n+228832 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228836 CRC                   150E80EA (353272042)\n+22883A Compressed Size       0000057C (1404)\n+22883E Uncompressed Size     00000F58 (3928)\n+228842 Filename Length       003B (59)\n+228844 Extra Length          0000 (0)\n+228846 Comment Length        0000 (0)\n+228848 Disk Start            0000 (0)\n+22884A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2265F2 Ext File Attributes   00000000 (0)\n-2265F6 Local Header Offset   000DF7E1 (915425)\n-2265FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22884C Ext File Attributes   00000000 (0)\n+228850 Local Header Offset   000FD896 (1038486)\n+228854 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2265FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228854: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226638 CENTRAL HEADER #885   02014B50 (33639248)\n-22663C Created Zip Spec      14 (20) '2.0'\n-22663D Created OS            00 (0) 'MS-DOS'\n-22663E Extract Zip Spec      14 (20) '2.0'\n-22663F Extract OS            00 (0) 'MS-DOS'\n-226640 General Purpose Flag  0808 (2056)\n+22888F CENTRAL HEADER #885   02014B50 (33639248)\n+228893 Created Zip Spec      14 (20) '2.0'\n+228894 Created OS            00 (0) 'MS-DOS'\n+228895 Extract Zip Spec      14 (20) '2.0'\n+228896 Extract OS            00 (0) 'MS-DOS'\n+228897 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226642 Compression Method    0008 (8) 'Deflated'\n-226644 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226648 CRC                   00000000 (0)\n-22664C Compressed Size       00000002 (2)\n-226650 Uncompressed Size     00000000 (0)\n-226654 Filename Length       0023 (35)\n-226656 Extra Length          0000 (0)\n-226658 Comment Length        0000 (0)\n-22665A Disk Start            0000 (0)\n-22665C Int File Attributes   0000 (0)\n+228899 Compression Method    0008 (8) 'Deflated'\n+22889B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22889F CRC                   00000000 (0)\n+2288A3 Compressed Size       00000002 (2)\n+2288A7 Uncompressed Size     00000000 (0)\n+2288AB Filename Length       0034 (52)\n+2288AD Extra Length          0000 (0)\n+2288AF Comment Length        0000 (0)\n+2288B1 Disk Start            0000 (0)\n+2288B3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22665E Ext File Attributes   00000000 (0)\n-226662 Local Header Offset   000DFB61 (916321)\n-226666 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2288B5 Ext File Attributes   00000000 (0)\n+2288B9 Local Header Offset   000FDE7B (1039995)\n+2288BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226666: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2288BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226689 CENTRAL HEADER #886   02014B50 (33639248)\n-22668D Created Zip Spec      14 (20) '2.0'\n-22668E Created OS            00 (0) 'MS-DOS'\n-22668F Extract Zip Spec      14 (20) '2.0'\n-226690 Extract OS            00 (0) 'MS-DOS'\n-226691 General Purpose Flag  0808 (2056)\n+2288F1 CENTRAL HEADER #886   02014B50 (33639248)\n+2288F5 Created Zip Spec      14 (20) '2.0'\n+2288F6 Created OS            00 (0) 'MS-DOS'\n+2288F7 Extract Zip Spec      14 (20) '2.0'\n+2288F8 Extract OS            00 (0) 'MS-DOS'\n+2288F9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226693 Compression Method    0008 (8) 'Deflated'\n-226695 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226699 CRC                   D599DEAA (3583631018)\n-22669D Compressed Size       00000332 (818)\n-2266A1 Uncompressed Size     000009A4 (2468)\n-2266A5 Filename Length       0037 (55)\n-2266A7 Extra Length          0000 (0)\n-2266A9 Comment Length        0000 (0)\n-2266AB Disk Start            0000 (0)\n-2266AD Int File Attributes   0000 (0)\n+2288FB Compression Method    0008 (8) 'Deflated'\n+2288FD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228901 CRC                   A5CD24A2 (2781684898)\n+228905 Compressed Size       000003C6 (966)\n+228909 Uncompressed Size     00000A73 (2675)\n+22890D Filename Length       003B (59)\n+22890F Extra Length          0000 (0)\n+228911 Comment Length        0000 (0)\n+228913 Disk Start            0000 (0)\n+228915 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2266AF Ext File Attributes   00000000 (0)\n-2266B3 Local Header Offset   000DFBB4 (916404)\n-2266B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228917 Ext File Attributes   00000000 (0)\n+22891B Local Header Offset   000FDEDF (1040095)\n+22891F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2266B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22891F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2266EE CENTRAL HEADER #887   02014B50 (33639248)\n-2266F2 Created Zip Spec      14 (20) '2.0'\n-2266F3 Created OS            00 (0) 'MS-DOS'\n-2266F4 Extract Zip Spec      14 (20) '2.0'\n-2266F5 Extract OS            00 (0) 'MS-DOS'\n-2266F6 General Purpose Flag  0808 (2056)\n+22895A CENTRAL HEADER #887   02014B50 (33639248)\n+22895E Created Zip Spec      14 (20) '2.0'\n+22895F Created OS            00 (0) 'MS-DOS'\n+228960 Extract Zip Spec      14 (20) '2.0'\n+228961 Extract OS            00 (0) 'MS-DOS'\n+228962 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2266F8 Compression Method    0008 (8) 'Deflated'\n-2266FA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2266FE CRC                   E165CDFB (3781545467)\n-226702 Compressed Size       0000023B (571)\n-226706 Uncompressed Size     0000041A (1050)\n-22670A Filename Length       0036 (54)\n-22670C Extra Length          0000 (0)\n-22670E Comment Length        0000 (0)\n-226710 Disk Start            0000 (0)\n-226712 Int File Attributes   0000 (0)\n+228964 Compression Method    0008 (8) 'Deflated'\n+228966 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22896A CRC                   FE93114F (4271051087)\n+22896E Compressed Size       00000048 (72)\n+228972 Uncompressed Size     0000004A (74)\n+228976 Filename Length       0042 (66)\n+228978 Extra Length          0000 (0)\n+22897A Comment Length        0000 (0)\n+22897C Disk Start            0000 (0)\n+22897E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226714 Ext File Attributes   00000000 (0)\n-226718 Local Header Offset   000DFF4B (917323)\n-22671C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228980 Ext File Attributes   00000000 (0)\n+228984 Local Header Offset   000FE30E (1041166)\n+228988 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22671C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228988: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226752 CENTRAL HEADER #888   02014B50 (33639248)\n-226756 Created Zip Spec      14 (20) '2.0'\n-226757 Created OS            00 (0) 'MS-DOS'\n-226758 Extract Zip Spec      14 (20) '2.0'\n-226759 Extract OS            00 (0) 'MS-DOS'\n-22675A General Purpose Flag  0808 (2056)\n+2289CA CENTRAL HEADER #888   02014B50 (33639248)\n+2289CE Created Zip Spec      14 (20) '2.0'\n+2289CF Created OS            00 (0) 'MS-DOS'\n+2289D0 Extract Zip Spec      14 (20) '2.0'\n+2289D1 Extract OS            00 (0) 'MS-DOS'\n+2289D2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22675C Compression Method    0008 (8) 'Deflated'\n-22675E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226762 CRC                   72699C54 (1919523924)\n-226766 Compressed Size       000002C2 (706)\n-22676A Uncompressed Size     000005B9 (1465)\n-22676E Filename Length       0037 (55)\n-226770 Extra Length          0000 (0)\n-226772 Comment Length        0000 (0)\n-226774 Disk Start            0000 (0)\n-226776 Int File Attributes   0000 (0)\n+2289D4 Compression Method    0008 (8) 'Deflated'\n+2289D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2289DA CRC                   00000000 (0)\n+2289DE Compressed Size       00000002 (2)\n+2289E2 Uncompressed Size     00000000 (0)\n+2289E6 Filename Length       0016 (22)\n+2289E8 Extra Length          0000 (0)\n+2289EA Comment Length        0000 (0)\n+2289EC Disk Start            0000 (0)\n+2289EE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226778 Ext File Attributes   00000000 (0)\n-22677C Local Header Offset   000E01EA (917994)\n-226780 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2289F0 Ext File Attributes   00000000 (0)\n+2289F4 Local Header Offset   000FE3C6 (1041350)\n+2289F8 Filename              'XXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226780: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2289F8: Filename 'XXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2267B7 CENTRAL HEADER #889   02014B50 (33639248)\n-2267BB Created Zip Spec      14 (20) '2.0'\n-2267BC Created OS            00 (0) 'MS-DOS'\n-2267BD Extract Zip Spec      14 (20) '2.0'\n-2267BE Extract OS            00 (0) 'MS-DOS'\n-2267BF General Purpose Flag  0808 (2056)\n+228A0E CENTRAL HEADER #889   02014B50 (33639248)\n+228A12 Created Zip Spec      14 (20) '2.0'\n+228A13 Created OS            00 (0) 'MS-DOS'\n+228A14 Extract Zip Spec      14 (20) '2.0'\n+228A15 Extract OS            00 (0) 'MS-DOS'\n+228A16 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2267C1 Compression Method    0008 (8) 'Deflated'\n-2267C3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2267C7 CRC                   330FACB0 (856665264)\n-2267CB Compressed Size       000002A4 (676)\n-2267CF Uncompressed Size     00000588 (1416)\n-2267D3 Filename Length       0036 (54)\n-2267D5 Extra Length          0000 (0)\n-2267D7 Comment Length        0000 (0)\n-2267D9 Disk Start            0000 (0)\n-2267DB Int File Attributes   0000 (0)\n+228A18 Compression Method    0008 (8) 'Deflated'\n+228A1A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228A1E CRC                   00000000 (0)\n+228A22 Compressed Size       00000002 (2)\n+228A26 Uncompressed Size     00000000 (0)\n+228A2A Filename Length       001E (30)\n+228A2C Extra Length          0000 (0)\n+228A2E Comment Length        0000 (0)\n+228A30 Disk Start            0000 (0)\n+228A32 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2267DD Ext File Attributes   00000000 (0)\n-2267E1 Local Header Offset   000E0511 (918801)\n-2267E5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228A34 Ext File Attributes   00000000 (0)\n+228A38 Local Header Offset   000FE40C (1041420)\n+228A3C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2267E5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228A3C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22681B CENTRAL HEADER #890   02014B50 (33639248)\n-22681F Created Zip Spec      14 (20) '2.0'\n-226820 Created OS            00 (0) 'MS-DOS'\n-226821 Extract Zip Spec      14 (20) '2.0'\n-226822 Extract OS            00 (0) 'MS-DOS'\n-226823 General Purpose Flag  0808 (2056)\n+228A5A CENTRAL HEADER #890   02014B50 (33639248)\n+228A5E Created Zip Spec      14 (20) '2.0'\n+228A5F Created OS            00 (0) 'MS-DOS'\n+228A60 Extract Zip Spec      14 (20) '2.0'\n+228A61 Extract OS            00 (0) 'MS-DOS'\n+228A62 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226825 Compression Method    0008 (8) 'Deflated'\n-226827 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22682B CRC                   D85DA328 (3630015272)\n-22682F Compressed Size       0000033E (830)\n-226833 Uncompressed Size     000007B2 (1970)\n-226837 Filename Length       0031 (49)\n-226839 Extra Length          0000 (0)\n-22683B Comment Length        0000 (0)\n-22683D Disk Start            0000 (0)\n-22683F Int File Attributes   0000 (0)\n+228A64 Compression Method    0008 (8) 'Deflated'\n+228A66 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228A6A CRC                   00900547 (9438535)\n+228A6E Compressed Size       00000219 (537)\n+228A72 Uncompressed Size     000003BF (959)\n+228A76 Filename Length       002E (46)\n+228A78 Extra Length          0000 (0)\n+228A7A Comment Length        0000 (0)\n+228A7C Disk Start            0000 (0)\n+228A7E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226841 Ext File Attributes   00000000 (0)\n-226845 Local Header Offset   000E0819 (919577)\n-226849 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228A80 Ext File Attributes   00000000 (0)\n+228A84 Local Header Offset   000FE45A (1041498)\n+228A88 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226849: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228A88: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22687A CENTRAL HEADER #891   02014B50 (33639248)\n-22687E Created Zip Spec      14 (20) '2.0'\n-22687F Created OS            00 (0) 'MS-DOS'\n-226880 Extract Zip Spec      14 (20) '2.0'\n-226881 Extract OS            00 (0) 'MS-DOS'\n-226882 General Purpose Flag  0808 (2056)\n+228AB6 CENTRAL HEADER #891   02014B50 (33639248)\n+228ABA Created Zip Spec      14 (20) '2.0'\n+228ABB Created OS            00 (0) 'MS-DOS'\n+228ABC Extract Zip Spec      14 (20) '2.0'\n+228ABD Extract OS            00 (0) 'MS-DOS'\n+228ABE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226884 Compression Method    0008 (8) 'Deflated'\n-226886 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22688A CRC                   B04E2D51 (2957913425)\n-22688E Compressed Size       00000461 (1121)\n-226892 Uncompressed Size     0000135D (4957)\n-226896 Filename Length       0032 (50)\n-226898 Extra Length          0000 (0)\n-22689A Comment Length        0000 (0)\n-22689C Disk Start            0000 (0)\n-22689E Int File Attributes   0000 (0)\n+228AC0 Compression Method    0008 (8) 'Deflated'\n+228AC2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228AC6 CRC                   1D274B23 (489114403)\n+228ACA Compressed Size       0000031B (795)\n+228ACE Uncompressed Size     000007EC (2028)\n+228AD2 Filename Length       0033 (51)\n+228AD4 Extra Length          0000 (0)\n+228AD6 Comment Length        0000 (0)\n+228AD8 Disk Start            0000 (0)\n+228ADA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2268A0 Ext File Attributes   00000000 (0)\n-2268A4 Local Header Offset   000E0BB6 (920502)\n-2268A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228ADC Ext File Attributes   00000000 (0)\n+228AE0 Local Header Offset   000FE6CF (1042127)\n+228AE4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2268A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228AE4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2268DA CENTRAL HEADER #892   02014B50 (33639248)\n-2268DE Created Zip Spec      14 (20) '2.0'\n-2268DF Created OS            00 (0) 'MS-DOS'\n-2268E0 Extract Zip Spec      14 (20) '2.0'\n-2268E1 Extract OS            00 (0) 'MS-DOS'\n-2268E2 General Purpose Flag  0808 (2056)\n+228B17 CENTRAL HEADER #892   02014B50 (33639248)\n+228B1B Created Zip Spec      14 (20) '2.0'\n+228B1C Created OS            00 (0) 'MS-DOS'\n+228B1D Extract Zip Spec      14 (20) '2.0'\n+228B1E Extract OS            00 (0) 'MS-DOS'\n+228B1F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2268E4 Compression Method    0008 (8) 'Deflated'\n-2268E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2268EA CRC                   8CC675B8 (2361816504)\n-2268EE Compressed Size       00000513 (1299)\n-2268F2 Uncompressed Size     00000E5B (3675)\n-2268F6 Filename Length       002F (47)\n-2268F8 Extra Length          0000 (0)\n-2268FA Comment Length        0000 (0)\n-2268FC Disk Start            0000 (0)\n-2268FE Int File Attributes   0000 (0)\n+228B21 Compression Method    0008 (8) 'Deflated'\n+228B23 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228B27 CRC                   C514DA82 (3306478210)\n+228B2B Compressed Size       00000265 (613)\n+228B2F Uncompressed Size     00000465 (1125)\n+228B33 Filename Length       0031 (49)\n+228B35 Extra Length          0000 (0)\n+228B37 Comment Length        0000 (0)\n+228B39 Disk Start            0000 (0)\n+228B3B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226900 Ext File Attributes   00000000 (0)\n-226904 Local Header Offset   000E1077 (921719)\n-226908 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228B3D Ext File Attributes   00000000 (0)\n+228B41 Local Header Offset   000FEA4B (1043019)\n+228B45 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226908: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228B45: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226937 CENTRAL HEADER #893   02014B50 (33639248)\n-22693B Created Zip Spec      14 (20) '2.0'\n-22693C Created OS            00 (0) 'MS-DOS'\n-22693D Extract Zip Spec      14 (20) '2.0'\n-22693E Extract OS            00 (0) 'MS-DOS'\n-22693F General Purpose Flag  0808 (2056)\n+228B76 CENTRAL HEADER #893   02014B50 (33639248)\n+228B7A Created Zip Spec      14 (20) '2.0'\n+228B7B Created OS            00 (0) 'MS-DOS'\n+228B7C Extract Zip Spec      14 (20) '2.0'\n+228B7D Extract OS            00 (0) 'MS-DOS'\n+228B7E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226941 Compression Method    0008 (8) 'Deflated'\n-226943 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226947 CRC                   FF46E79C (4282836892)\n-22694B Compressed Size       0000051B (1307)\n-22694F Uncompressed Size     00000FC4 (4036)\n-226953 Filename Length       0030 (48)\n-226955 Extra Length          0000 (0)\n-226957 Comment Length        0000 (0)\n-226959 Disk Start            0000 (0)\n-22695B Int File Attributes   0000 (0)\n+228B80 Compression Method    0008 (8) 'Deflated'\n+228B82 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228B86 CRC                   58855C59 (1485134937)\n+228B8A Compressed Size       00000858 (2136)\n+228B8E Uncompressed Size     00001F83 (8067)\n+228B92 Filename Length       0025 (37)\n+228B94 Extra Length          0000 (0)\n+228B96 Comment Length        0000 (0)\n+228B98 Disk Start            0000 (0)\n+228B9A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22695D Ext File Attributes   00000000 (0)\n-226961 Local Header Offset   000E15E7 (923111)\n-226965 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228B9C Ext File Attributes   00000000 (0)\n+228BA0 Local Header Offset   000FED0F (1043727)\n+228BA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226965: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228BA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226995 CENTRAL HEADER #894   02014B50 (33639248)\n-226999 Created Zip Spec      14 (20) '2.0'\n-22699A Created OS            00 (0) 'MS-DOS'\n-22699B Extract Zip Spec      14 (20) '2.0'\n-22699C Extract OS            00 (0) 'MS-DOS'\n-22699D General Purpose Flag  0808 (2056)\n+228BC9 CENTRAL HEADER #894   02014B50 (33639248)\n+228BCD Created Zip Spec      14 (20) '2.0'\n+228BCE Created OS            00 (0) 'MS-DOS'\n+228BCF Extract Zip Spec      14 (20) '2.0'\n+228BD0 Extract OS            00 (0) 'MS-DOS'\n+228BD1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22699F Compression Method    0008 (8) 'Deflated'\n-2269A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2269A5 CRC                   00000000 (0)\n-2269A9 Compressed Size       00000002 (2)\n-2269AD Uncompressed Size     00000000 (0)\n-2269B1 Filename Length       0029 (41)\n-2269B3 Extra Length          0000 (0)\n-2269B5 Comment Length        0000 (0)\n-2269B7 Disk Start            0000 (0)\n-2269B9 Int File Attributes   0000 (0)\n+228BD3 Compression Method    0008 (8) 'Deflated'\n+228BD5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228BD9 CRC                   16C36050 (381902928)\n+228BDD Compressed Size       00000443 (1091)\n+228BE1 Uncompressed Size     00000A30 (2608)\n+228BE5 Filename Length       0026 (38)\n+228BE7 Extra Length          0000 (0)\n+228BE9 Comment Length        0000 (0)\n+228BEB Disk Start            0000 (0)\n+228BED Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2269BB Ext File Attributes   00000000 (0)\n-2269BF Local Header Offset   000E1B60 (924512)\n-2269C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228BEF Ext File Attributes   00000000 (0)\n+228BF3 Local Header Offset   000FF5BA (1045946)\n+228BF7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2269C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228BF7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2269EC CENTRAL HEADER #895   02014B50 (33639248)\n-2269F0 Created Zip Spec      14 (20) '2.0'\n-2269F1 Created OS            00 (0) 'MS-DOS'\n-2269F2 Extract Zip Spec      14 (20) '2.0'\n-2269F3 Extract OS            00 (0) 'MS-DOS'\n-2269F4 General Purpose Flag  0808 (2056)\n+228C1D CENTRAL HEADER #895   02014B50 (33639248)\n+228C21 Created Zip Spec      14 (20) '2.0'\n+228C22 Created OS            00 (0) 'MS-DOS'\n+228C23 Extract Zip Spec      14 (20) '2.0'\n+228C24 Extract OS            00 (0) 'MS-DOS'\n+228C25 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2269F6 Compression Method    0008 (8) 'Deflated'\n-2269F8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2269FC CRC                   6E137A75 (1846770293)\n-226A00 Compressed Size       00001044 (4164)\n-226A04 Uncompressed Size     000050EF (20719)\n-226A08 Filename Length       003B (59)\n-226A0A Extra Length          0000 (0)\n-226A0C Comment Length        0000 (0)\n-226A0E Disk Start            0000 (0)\n-226A10 Int File Attributes   0000 (0)\n+228C27 Compression Method    0008 (8) 'Deflated'\n+228C29 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228C2D CRC                   28FBE016 (687595542)\n+228C31 Compressed Size       0000040C (1036)\n+228C35 Uncompressed Size     00000A76 (2678)\n+228C39 Filename Length       002A (42)\n+228C3B Extra Length          0000 (0)\n+228C3D Comment Length        0000 (0)\n+228C3F Disk Start            0000 (0)\n+228C41 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226A12 Ext File Attributes   00000000 (0)\n-226A16 Local Header Offset   000E1BB9 (924601)\n-226A1A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228C43 Ext File Attributes   00000000 (0)\n+228C47 Local Header Offset   000FFA51 (1047121)\n+228C4B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226A1A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228C4B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226A55 CENTRAL HEADER #896   02014B50 (33639248)\n-226A59 Created Zip Spec      14 (20) '2.0'\n-226A5A Created OS            00 (0) 'MS-DOS'\n-226A5B Extract Zip Spec      14 (20) '2.0'\n-226A5C Extract OS            00 (0) 'MS-DOS'\n-226A5D General Purpose Flag  0808 (2056)\n+228C75 CENTRAL HEADER #896   02014B50 (33639248)\n+228C79 Created Zip Spec      14 (20) '2.0'\n+228C7A Created OS            00 (0) 'MS-DOS'\n+228C7B Extract Zip Spec      14 (20) '2.0'\n+228C7C Extract OS            00 (0) 'MS-DOS'\n+228C7D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226A5F Compression Method    0008 (8) 'Deflated'\n-226A61 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226A65 CRC                   00000000 (0)\n-226A69 Compressed Size       00000002 (2)\n-226A6D Uncompressed Size     00000000 (0)\n-226A71 Filename Length       002B (43)\n-226A73 Extra Length          0000 (0)\n-226A75 Comment Length        0000 (0)\n-226A77 Disk Start            0000 (0)\n-226A79 Int File Attributes   0000 (0)\n+228C7F Compression Method    0008 (8) 'Deflated'\n+228C81 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228C85 CRC                   18D15EB0 (416374448)\n+228C89 Compressed Size       00000BEA (3050)\n+228C8D Uncompressed Size     00003175 (12661)\n+228C91 Filename Length       0028 (40)\n+228C93 Extra Length          0000 (0)\n+228C95 Comment Length        0000 (0)\n+228C97 Disk Start            0000 (0)\n+228C99 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226A7B Ext File Attributes   00000000 (0)\n-226A7F Local Header Offset   000E2C66 (928870)\n-226A83 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228C9B Ext File Attributes   00000000 (0)\n+228C9F Local Header Offset   000FFEB5 (1048245)\n+228CA3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226A83: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228CA3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226AAE CENTRAL HEADER #897   02014B50 (33639248)\n-226AB2 Created Zip Spec      14 (20) '2.0'\n-226AB3 Created OS            00 (0) 'MS-DOS'\n-226AB4 Extract Zip Spec      14 (20) '2.0'\n-226AB5 Extract OS            00 (0) 'MS-DOS'\n-226AB6 General Purpose Flag  0808 (2056)\n+228CCB CENTRAL HEADER #897   02014B50 (33639248)\n+228CCF Created Zip Spec      14 (20) '2.0'\n+228CD0 Created OS            00 (0) 'MS-DOS'\n+228CD1 Extract Zip Spec      14 (20) '2.0'\n+228CD2 Extract OS            00 (0) 'MS-DOS'\n+228CD3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226AB8 Compression Method    0008 (8) 'Deflated'\n-226ABA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226ABE CRC                   71D1D17D (1909576061)\n-226AC2 Compressed Size       00000C33 (3123)\n-226AC6 Uncompressed Size     00002CEB (11499)\n-226ACA Filename Length       003D (61)\n-226ACC Extra Length          0000 (0)\n-226ACE Comment Length        0000 (0)\n-226AD0 Disk Start            0000 (0)\n-226AD2 Int File Attributes   0000 (0)\n+228CD5 Compression Method    0008 (8) 'Deflated'\n+228CD7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228CDB CRC                   C1E775CF (3253171663)\n+228CDF Compressed Size       000003B9 (953)\n+228CE3 Uncompressed Size     000009AF (2479)\n+228CE7 Filename Length       002C (44)\n+228CE9 Extra Length          0000 (0)\n+228CEB Comment Length        0000 (0)\n+228CED Disk Start            0000 (0)\n+228CEF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226AD4 Ext File Attributes   00000000 (0)\n-226AD8 Local Header Offset   000E2CC1 (928961)\n-226ADC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228CF1 Ext File Attributes   00000000 (0)\n+228CF5 Local Header Offset   00100AF5 (1051381)\n+228CF9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226ADC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228CF9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226B19 CENTRAL HEADER #898   02014B50 (33639248)\n-226B1D Created Zip Spec      14 (20) '2.0'\n-226B1E Created OS            00 (0) 'MS-DOS'\n-226B1F Extract Zip Spec      14 (20) '2.0'\n-226B20 Extract OS            00 (0) 'MS-DOS'\n-226B21 General Purpose Flag  0808 (2056)\n+228D25 CENTRAL HEADER #898   02014B50 (33639248)\n+228D29 Created Zip Spec      14 (20) '2.0'\n+228D2A Created OS            00 (0) 'MS-DOS'\n+228D2B Extract Zip Spec      14 (20) '2.0'\n+228D2C Extract OS            00 (0) 'MS-DOS'\n+228D2D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226B23 Compression Method    0008 (8) 'Deflated'\n-226B25 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226B29 CRC                   8AF6C6B7 (2331428535)\n-226B2D Compressed Size       000002B3 (691)\n-226B31 Uncompressed Size     000005BB (1467)\n-226B35 Filename Length       0046 (70)\n-226B37 Extra Length          0000 (0)\n-226B39 Comment Length        0000 (0)\n-226B3B Disk Start            0000 (0)\n-226B3D Int File Attributes   0000 (0)\n+228D2F Compression Method    0008 (8) 'Deflated'\n+228D31 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228D35 CRC                   7E97C5F2 (2123875826)\n+228D39 Compressed Size       0000047B (1147)\n+228D3D Uncompressed Size     00000A79 (2681)\n+228D41 Filename Length       0023 (35)\n+228D43 Extra Length          0000 (0)\n+228D45 Comment Length        0000 (0)\n+228D47 Disk Start            0000 (0)\n+228D49 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226B3F Ext File Attributes   00000000 (0)\n-226B43 Local Header Offset   000E395F (932191)\n-226B47 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228D4B Ext File Attributes   00000000 (0)\n+228D4F Local Header Offset   00100F08 (1052424)\n+228D53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226B47: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228D53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226B8D CENTRAL HEADER #899   02014B50 (33639248)\n-226B91 Created Zip Spec      14 (20) '2.0'\n-226B92 Created OS            00 (0) 'MS-DOS'\n-226B93 Extract Zip Spec      14 (20) '2.0'\n-226B94 Extract OS            00 (0) 'MS-DOS'\n-226B95 General Purpose Flag  0808 (2056)\n+228D76 CENTRAL HEADER #899   02014B50 (33639248)\n+228D7A Created Zip Spec      14 (20) '2.0'\n+228D7B Created OS            00 (0) 'MS-DOS'\n+228D7C Extract Zip Spec      14 (20) '2.0'\n+228D7D Extract OS            00 (0) 'MS-DOS'\n+228D7E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226B97 Compression Method    0008 (8) 'Deflated'\n-226B99 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226B9D CRC                   2C68D340 (745067328)\n-226BA1 Compressed Size       0000043C (1084)\n-226BA5 Uncompressed Size     00001165 (4453)\n-226BA9 Filename Length       0049 (73)\n-226BAB Extra Length          0000 (0)\n-226BAD Comment Length        0000 (0)\n-226BAF Disk Start            0000 (0)\n-226BB1 Int File Attributes   0000 (0)\n+228D80 Compression Method    0008 (8) 'Deflated'\n+228D82 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228D86 CRC                   525AF459 (1381692505)\n+228D8A Compressed Size       00000299 (665)\n+228D8E Uncompressed Size     0000053F (1343)\n+228D92 Filename Length       0022 (34)\n+228D94 Extra Length          0000 (0)\n+228D96 Comment Length        0000 (0)\n+228D98 Disk Start            0000 (0)\n+228D9A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226BB3 Ext File Attributes   00000000 (0)\n-226BB7 Local Header Offset   000E3C86 (932998)\n-226BBB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228D9C Ext File Attributes   00000000 (0)\n+228DA0 Local Header Offset   001013D4 (1053652)\n+228DA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226BBB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228DA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226C04 CENTRAL HEADER #900   02014B50 (33639248)\n-226C08 Created Zip Spec      14 (20) '2.0'\n-226C09 Created OS            00 (0) 'MS-DOS'\n-226C0A Extract Zip Spec      14 (20) '2.0'\n-226C0B Extract OS            00 (0) 'MS-DOS'\n-226C0C General Purpose Flag  0808 (2056)\n+228DC6 CENTRAL HEADER #900   02014B50 (33639248)\n+228DCA Created Zip Spec      14 (20) '2.0'\n+228DCB Created OS            00 (0) 'MS-DOS'\n+228DCC Extract Zip Spec      14 (20) '2.0'\n+228DCD Extract OS            00 (0) 'MS-DOS'\n+228DCE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226C0E Compression Method    0008 (8) 'Deflated'\n-226C10 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226C14 CRC                   C14E1F5D (3243122525)\n-226C18 Compressed Size       000003EC (1004)\n-226C1C Uncompressed Size     00000DD5 (3541)\n-226C20 Filename Length       0046 (70)\n-226C22 Extra Length          0000 (0)\n-226C24 Comment Length        0000 (0)\n-226C26 Disk Start            0000 (0)\n-226C28 Int File Attributes   0000 (0)\n+228DD0 Compression Method    0008 (8) 'Deflated'\n+228DD2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228DD6 CRC                   FC32E707 (4231194375)\n+228DDA Compressed Size       0000029D (669)\n+228DDE Uncompressed Size     000005AC (1452)\n+228DE2 Filename Length       002A (42)\n+228DE4 Extra Length          0000 (0)\n+228DE6 Comment Length        0000 (0)\n+228DE8 Disk Start            0000 (0)\n+228DEA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226C2A Ext File Attributes   00000000 (0)\n-226C2E Local Header Offset   000E4139 (934201)\n-226C32 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228DEC Ext File Attributes   00000000 (0)\n+228DF0 Local Header Offset   001016BD (1054397)\n+228DF4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226C32: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228DF4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226C78 CENTRAL HEADER #901   02014B50 (33639248)\n-226C7C Created Zip Spec      14 (20) '2.0'\n-226C7D Created OS            00 (0) 'MS-DOS'\n-226C7E Extract Zip Spec      14 (20) '2.0'\n-226C7F Extract OS            00 (0) 'MS-DOS'\n-226C80 General Purpose Flag  0808 (2056)\n+228E1E CENTRAL HEADER #901   02014B50 (33639248)\n+228E22 Created Zip Spec      14 (20) '2.0'\n+228E23 Created OS            00 (0) 'MS-DOS'\n+228E24 Extract Zip Spec      14 (20) '2.0'\n+228E25 Extract OS            00 (0) 'MS-DOS'\n+228E26 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226C82 Compression Method    0008 (8) 'Deflated'\n-226C84 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226C88 CRC                   0593378C (93534092)\n-226C8C Compressed Size       0000037E (894)\n-226C90 Uncompressed Size     000009B6 (2486)\n-226C94 Filename Length       003C (60)\n-226C96 Extra Length          0000 (0)\n-226C98 Comment Length        0000 (0)\n-226C9A Disk Start            0000 (0)\n-226C9C Int File Attributes   0000 (0)\n+228E28 Compression Method    0008 (8) 'Deflated'\n+228E2A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228E2E CRC                   2EDA0DE9 (786042345)\n+228E32 Compressed Size       0000043E (1086)\n+228E36 Uncompressed Size     00000965 (2405)\n+228E3A Filename Length       0020 (32)\n+228E3C Extra Length          0000 (0)\n+228E3E Comment Length        0000 (0)\n+228E40 Disk Start            0000 (0)\n+228E42 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226C9E Ext File Attributes   00000000 (0)\n-226CA2 Local Header Offset   000E4599 (935321)\n-226CA6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228E44 Ext File Attributes   00000000 (0)\n+228E48 Local Header Offset   001019B2 (1055154)\n+228E4C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226CA6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228E4C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226CE2 CENTRAL HEADER #902   02014B50 (33639248)\n-226CE6 Created Zip Spec      14 (20) '2.0'\n-226CE7 Created OS            00 (0) 'MS-DOS'\n-226CE8 Extract Zip Spec      14 (20) '2.0'\n-226CE9 Extract OS            00 (0) 'MS-DOS'\n-226CEA General Purpose Flag  0808 (2056)\n+228E6C CENTRAL HEADER #902   02014B50 (33639248)\n+228E70 Created Zip Spec      14 (20) '2.0'\n+228E71 Created OS            00 (0) 'MS-DOS'\n+228E72 Extract Zip Spec      14 (20) '2.0'\n+228E73 Extract OS            00 (0) 'MS-DOS'\n+228E74 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226CEC Compression Method    0008 (8) 'Deflated'\n-226CEE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226CF2 CRC                   B40DC99A (3020802458)\n-226CF6 Compressed Size       0000028D (653)\n-226CFA Uncompressed Size     00000516 (1302)\n-226CFE Filename Length       0037 (55)\n-226D00 Extra Length          0000 (0)\n-226D02 Comment Length        0000 (0)\n-226D04 Disk Start            0000 (0)\n-226D06 Int File Attributes   0000 (0)\n+228E76 Compression Method    0008 (8) 'Deflated'\n+228E78 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228E7C CRC                   F67FCDE8 (4135570920)\n+228E80 Compressed Size       00000589 (1417)\n+228E84 Uncompressed Size     00000FE9 (4073)\n+228E88 Filename Length       0027 (39)\n+228E8A Extra Length          0000 (0)\n+228E8C Comment Length        0000 (0)\n+228E8E Disk Start            0000 (0)\n+228E90 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226D08 Ext File Attributes   00000000 (0)\n-226D0C Local Header Offset   000E4981 (936321)\n-226D10 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228E92 Ext File Attributes   00000000 (0)\n+228E96 Local Header Offset   00101E3E (1056318)\n+228E9A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226D10: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228E9A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226D47 CENTRAL HEADER #903   02014B50 (33639248)\n-226D4B Created Zip Spec      14 (20) '2.0'\n-226D4C Created OS            00 (0) 'MS-DOS'\n-226D4D Extract Zip Spec      14 (20) '2.0'\n-226D4E Extract OS            00 (0) 'MS-DOS'\n-226D4F General Purpose Flag  0808 (2056)\n+228EC1 CENTRAL HEADER #903   02014B50 (33639248)\n+228EC5 Created Zip Spec      14 (20) '2.0'\n+228EC6 Created OS            00 (0) 'MS-DOS'\n+228EC7 Extract Zip Spec      14 (20) '2.0'\n+228EC8 Extract OS            00 (0) 'MS-DOS'\n+228EC9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226D51 Compression Method    0008 (8) 'Deflated'\n-226D53 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226D57 CRC                   27689F2C (661167916)\n-226D5B Compressed Size       0000041D (1053)\n-226D5F Uncompressed Size     00000AAA (2730)\n-226D63 Filename Length       0041 (65)\n-226D65 Extra Length          0000 (0)\n-226D67 Comment Length        0000 (0)\n-226D69 Disk Start            0000 (0)\n-226D6B Int File Attributes   0000 (0)\n+228ECB Compression Method    0008 (8) 'Deflated'\n+228ECD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228ED1 CRC                   E5052367 (3842319207)\n+228ED5 Compressed Size       00000472 (1138)\n+228ED9 Uncompressed Size     00000F2D (3885)\n+228EDD Filename Length       0024 (36)\n+228EDF Extra Length          0000 (0)\n+228EE1 Comment Length        0000 (0)\n+228EE3 Disk Start            0000 (0)\n+228EE5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226D6D Ext File Attributes   00000000 (0)\n-226D71 Local Header Offset   000E4C73 (937075)\n-226D75 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228EE7 Ext File Attributes   00000000 (0)\n+228EEB Local Header Offset   0010241C (1057820)\n+228EEF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226D75: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228EEF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226DB6 CENTRAL HEADER #904   02014B50 (33639248)\n-226DBA Created Zip Spec      14 (20) '2.0'\n-226DBB Created OS            00 (0) 'MS-DOS'\n-226DBC Extract Zip Spec      14 (20) '2.0'\n-226DBD Extract OS            00 (0) 'MS-DOS'\n-226DBE General Purpose Flag  0808 (2056)\n+228F13 CENTRAL HEADER #904   02014B50 (33639248)\n+228F17 Created Zip Spec      14 (20) '2.0'\n+228F18 Created OS            00 (0) 'MS-DOS'\n+228F19 Extract Zip Spec      14 (20) '2.0'\n+228F1A Extract OS            00 (0) 'MS-DOS'\n+228F1B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226DC0 Compression Method    0008 (8) 'Deflated'\n-226DC2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226DC6 CRC                   00000000 (0)\n-226DCA Compressed Size       00000002 (2)\n-226DCE Uncompressed Size     00000000 (0)\n-226DD2 Filename Length       0032 (50)\n-226DD4 Extra Length          0000 (0)\n-226DD6 Comment Length        0000 (0)\n-226DD8 Disk Start            0000 (0)\n-226DDA Int File Attributes   0000 (0)\n+228F1D Compression Method    0008 (8) 'Deflated'\n+228F1F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228F23 CRC                   1A821C29 (444734505)\n+228F27 Compressed Size       00000207 (519)\n+228F2B Uncompressed Size     0000038E (910)\n+228F2F Filename Length       0024 (36)\n+228F31 Extra Length          0000 (0)\n+228F33 Comment Length        0000 (0)\n+228F35 Disk Start            0000 (0)\n+228F37 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226DDC Ext File Attributes   00000000 (0)\n-226DE0 Local Header Offset   000E50FF (938239)\n-226DE4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228F39 Ext File Attributes   00000000 (0)\n+228F3D Local Header Offset   001028E0 (1059040)\n+228F41 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226DE4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228F41: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226E16 CENTRAL HEADER #905   02014B50 (33639248)\n-226E1A Created Zip Spec      14 (20) '2.0'\n-226E1B Created OS            00 (0) 'MS-DOS'\n-226E1C Extract Zip Spec      14 (20) '2.0'\n-226E1D Extract OS            00 (0) 'MS-DOS'\n-226E1E General Purpose Flag  0808 (2056)\n+228F65 CENTRAL HEADER #905   02014B50 (33639248)\n+228F69 Created Zip Spec      14 (20) '2.0'\n+228F6A Created OS            00 (0) 'MS-DOS'\n+228F6B Extract Zip Spec      14 (20) '2.0'\n+228F6C Extract OS            00 (0) 'MS-DOS'\n+228F6D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226E20 Compression Method    0008 (8) 'Deflated'\n-226E22 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226E26 CRC                   3CE2D276 (1021497974)\n-226E2A Compressed Size       00000445 (1093)\n-226E2E Uncompressed Size     00000B3E (2878)\n-226E32 Filename Length       0048 (72)\n-226E34 Extra Length          0000 (0)\n-226E36 Comment Length        0000 (0)\n-226E38 Disk Start            0000 (0)\n-226E3A Int File Attributes   0000 (0)\n+228F6F Compression Method    0008 (8) 'Deflated'\n+228F71 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228F75 CRC                   19B4DE27 (431283751)\n+228F79 Compressed Size       000002C5 (709)\n+228F7D Uncompressed Size     000005D1 (1489)\n+228F81 Filename Length       0021 (33)\n+228F83 Extra Length          0000 (0)\n+228F85 Comment Length        0000 (0)\n+228F87 Disk Start            0000 (0)\n+228F89 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226E3C Ext File Attributes   00000000 (0)\n-226E40 Local Header Offset   000E5161 (938337)\n-226E44 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228F8B Ext File Attributes   00000000 (0)\n+228F8F Local Header Offset   00102B39 (1059641)\n+228F93 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226E44: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228F93: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226E8C CENTRAL HEADER #906   02014B50 (33639248)\n-226E90 Created Zip Spec      14 (20) '2.0'\n-226E91 Created OS            00 (0) 'MS-DOS'\n-226E92 Extract Zip Spec      14 (20) '2.0'\n-226E93 Extract OS            00 (0) 'MS-DOS'\n-226E94 General Purpose Flag  0808 (2056)\n+228FB4 CENTRAL HEADER #906   02014B50 (33639248)\n+228FB8 Created Zip Spec      14 (20) '2.0'\n+228FB9 Created OS            00 (0) 'MS-DOS'\n+228FBA Extract Zip Spec      14 (20) '2.0'\n+228FBB Extract OS            00 (0) 'MS-DOS'\n+228FBC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226E96 Compression Method    0008 (8) 'Deflated'\n-226E98 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226E9C CRC                   BC922CD8 (3163696344)\n-226EA0 Compressed Size       000003AE (942)\n-226EA4 Uncompressed Size     00000890 (2192)\n-226EA8 Filename Length       0045 (69)\n-226EAA Extra Length          0000 (0)\n-226EAC Comment Length        0000 (0)\n-226EAE Disk Start            0000 (0)\n-226EB0 Int File Attributes   0000 (0)\n+228FBE Compression Method    0008 (8) 'Deflated'\n+228FC0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+228FC4 CRC                   D82F1E47 (3626966599)\n+228FC8 Compressed Size       000002AB (683)\n+228FCC Uncompressed Size     0000059A (1434)\n+228FD0 Filename Length       0029 (41)\n+228FD2 Extra Length          0000 (0)\n+228FD4 Comment Length        0000 (0)\n+228FD6 Disk Start            0000 (0)\n+228FD8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226EB2 Ext File Attributes   00000000 (0)\n-226EB6 Local Header Offset   000E561C (939548)\n-226EBA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+228FDA Ext File Attributes   00000000 (0)\n+228FDE Local Header Offset   00102E4D (1060429)\n+228FE2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226EBA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x228FE2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226EFF CENTRAL HEADER #907   02014B50 (33639248)\n-226F03 Created Zip Spec      14 (20) '2.0'\n-226F04 Created OS            00 (0) 'MS-DOS'\n-226F05 Extract Zip Spec      14 (20) '2.0'\n-226F06 Extract OS            00 (0) 'MS-DOS'\n-226F07 General Purpose Flag  0808 (2056)\n+22900B CENTRAL HEADER #907   02014B50 (33639248)\n+22900F Created Zip Spec      14 (20) '2.0'\n+229010 Created OS            00 (0) 'MS-DOS'\n+229011 Extract Zip Spec      14 (20) '2.0'\n+229012 Extract OS            00 (0) 'MS-DOS'\n+229013 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226F09 Compression Method    0008 (8) 'Deflated'\n-226F0B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226F0F CRC                   B13FDACC (2973752012)\n-226F13 Compressed Size       0000081E (2078)\n-226F17 Uncompressed Size     0000217A (8570)\n-226F1B Filename Length       004C (76)\n-226F1D Extra Length          0000 (0)\n-226F1F Comment Length        0000 (0)\n-226F21 Disk Start            0000 (0)\n-226F23 Int File Attributes   0000 (0)\n+229015 Compression Method    0008 (8) 'Deflated'\n+229017 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22901B CRC                   16B7BD77 (381140343)\n+22901F Compressed Size       0000037A (890)\n+229023 Uncompressed Size     00000805 (2053)\n+229027 Filename Length       002A (42)\n+229029 Extra Length          0000 (0)\n+22902B Comment Length        0000 (0)\n+22902D Disk Start            0000 (0)\n+22902F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226F25 Ext File Attributes   00000000 (0)\n-226F29 Local Header Offset   000E5A3D (940605)\n-226F2D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229031 Ext File Attributes   00000000 (0)\n+229035 Local Header Offset   0010314F (1061199)\n+229039 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226F2D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229039: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226F79 CENTRAL HEADER #908   02014B50 (33639248)\n-226F7D Created Zip Spec      14 (20) '2.0'\n-226F7E Created OS            00 (0) 'MS-DOS'\n-226F7F Extract Zip Spec      14 (20) '2.0'\n-226F80 Extract OS            00 (0) 'MS-DOS'\n-226F81 General Purpose Flag  0808 (2056)\n+229063 CENTRAL HEADER #908   02014B50 (33639248)\n+229067 Created Zip Spec      14 (20) '2.0'\n+229068 Created OS            00 (0) 'MS-DOS'\n+229069 Extract Zip Spec      14 (20) '2.0'\n+22906A Extract OS            00 (0) 'MS-DOS'\n+22906B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226F83 Compression Method    0008 (8) 'Deflated'\n-226F85 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-226F89 CRC                   2FB42746 (800335686)\n-226F8D Compressed Size       000007B7 (1975)\n-226F91 Uncompressed Size     00001E7B (7803)\n-226F95 Filename Length       004B (75)\n-226F97 Extra Length          0000 (0)\n-226F99 Comment Length        0000 (0)\n-226F9B Disk Start            0000 (0)\n-226F9D Int File Attributes   0000 (0)\n+22906D Compression Method    0008 (8) 'Deflated'\n+22906F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229073 CRC                   CCB43BAA (3434363818)\n+229077 Compressed Size       000005D0 (1488)\n+22907B Uncompressed Size     00000DF0 (3568)\n+22907F Filename Length       0022 (34)\n+229081 Extra Length          0000 (0)\n+229083 Comment Length        0000 (0)\n+229085 Disk Start            0000 (0)\n+229087 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-226F9F Ext File Attributes   00000000 (0)\n-226FA3 Local Header Offset   000E62D5 (942805)\n-226FA7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229089 Ext File Attributes   00000000 (0)\n+22908D Local Header Offset   00103521 (1062177)\n+229091 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x226FA7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229091: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-226FF2 CENTRAL HEADER #909   02014B50 (33639248)\n-226FF6 Created Zip Spec      14 (20) '2.0'\n-226FF7 Created OS            00 (0) 'MS-DOS'\n-226FF8 Extract Zip Spec      14 (20) '2.0'\n-226FF9 Extract OS            00 (0) 'MS-DOS'\n-226FFA General Purpose Flag  0808 (2056)\n+2290B3 CENTRAL HEADER #909   02014B50 (33639248)\n+2290B7 Created Zip Spec      14 (20) '2.0'\n+2290B8 Created OS            00 (0) 'MS-DOS'\n+2290B9 Extract Zip Spec      14 (20) '2.0'\n+2290BA Extract OS            00 (0) 'MS-DOS'\n+2290BB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-226FFC Compression Method    0008 (8) 'Deflated'\n-226FFE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227002 CRC                   C01CAB2E (3223104302)\n-227006 Compressed Size       000008DD (2269)\n-22700A Uncompressed Size     0000247E (9342)\n-22700E Filename Length       004C (76)\n-227010 Extra Length          0000 (0)\n-227012 Comment Length        0000 (0)\n-227014 Disk Start            0000 (0)\n-227016 Int File Attributes   0000 (0)\n+2290BD Compression Method    0008 (8) 'Deflated'\n+2290BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2290C3 CRC                   6D231835 (1831016501)\n+2290C7 Compressed Size       000002D2 (722)\n+2290CB Uncompressed Size     000005FB (1531)\n+2290CF Filename Length       0028 (40)\n+2290D1 Extra Length          0000 (0)\n+2290D3 Comment Length        0000 (0)\n+2290D5 Disk Start            0000 (0)\n+2290D7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227018 Ext File Attributes   00000000 (0)\n-22701C Local Header Offset   000E6B05 (944901)\n-227020 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2290D9 Ext File Attributes   00000000 (0)\n+2290DD Local Header Offset   00103B41 (1063745)\n+2290E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227020: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2290E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22706C CENTRAL HEADER #910   02014B50 (33639248)\n-227070 Created Zip Spec      14 (20) '2.0'\n-227071 Created OS            00 (0) 'MS-DOS'\n-227072 Extract Zip Spec      14 (20) '2.0'\n-227073 Extract OS            00 (0) 'MS-DOS'\n-227074 General Purpose Flag  0808 (2056)\n+229109 CENTRAL HEADER #910   02014B50 (33639248)\n+22910D Created Zip Spec      14 (20) '2.0'\n+22910E Created OS            00 (0) 'MS-DOS'\n+22910F Extract Zip Spec      14 (20) '2.0'\n+229110 Extract OS            00 (0) 'MS-DOS'\n+229111 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227076 Compression Method    0008 (8) 'Deflated'\n-227078 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22707C CRC                   6C372682 (1815553666)\n-227080 Compressed Size       000009AA (2474)\n-227084 Uncompressed Size     000024E2 (9442)\n-227088 Filename Length       004B (75)\n-22708A Extra Length          0000 (0)\n-22708C Comment Length        0000 (0)\n-22708E Disk Start            0000 (0)\n-227090 Int File Attributes   0000 (0)\n+229113 Compression Method    0008 (8) 'Deflated'\n+229115 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229119 CRC                   2A77FFA2 (712507298)\n+22911D Compressed Size       00000301 (769)\n+229121 Uncompressed Size     00000719 (1817)\n+229125 Filename Length       0026 (38)\n+229127 Extra Length          0000 (0)\n+229129 Comment Length        0000 (0)\n+22912B Disk Start            0000 (0)\n+22912D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227092 Ext File Attributes   00000000 (0)\n-227096 Local Header Offset   000E745C (947292)\n-22709A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22912F Ext File Attributes   00000000 (0)\n+229133 Local Header Offset   00103E69 (1064553)\n+229137 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22709A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229137: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2270E5 CENTRAL HEADER #911   02014B50 (33639248)\n-2270E9 Created Zip Spec      14 (20) '2.0'\n-2270EA Created OS            00 (0) 'MS-DOS'\n-2270EB Extract Zip Spec      14 (20) '2.0'\n-2270EC Extract OS            00 (0) 'MS-DOS'\n-2270ED General Purpose Flag  0808 (2056)\n+22915D CENTRAL HEADER #911   02014B50 (33639248)\n+229161 Created Zip Spec      14 (20) '2.0'\n+229162 Created OS            00 (0) 'MS-DOS'\n+229163 Extract Zip Spec      14 (20) '2.0'\n+229164 Extract OS            00 (0) 'MS-DOS'\n+229165 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2270EF Compression Method    0008 (8) 'Deflated'\n-2270F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2270F5 CRC                   7F591FA6 (2136547238)\n-2270F9 Compressed Size       000002F6 (758)\n-2270FD Uncompressed Size     0000079B (1947)\n-227101 Filename Length       0046 (70)\n-227103 Extra Length          0000 (0)\n-227105 Comment Length        0000 (0)\n-227107 Disk Start            0000 (0)\n-227109 Int File Attributes   0000 (0)\n+229167 Compression Method    0008 (8) 'Deflated'\n+229169 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22916D CRC                   1DB16B63 (498166627)\n+229171 Compressed Size       0000064F (1615)\n+229175 Uncompressed Size     000015FD (5629)\n+229179 Filename Length       0020 (32)\n+22917B Extra Length          0000 (0)\n+22917D Comment Length        0000 (0)\n+22917F Disk Start            0000 (0)\n+229181 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22710B Ext File Attributes   00000000 (0)\n-22710F Local Header Offset   000E7E7F (949887)\n-227113 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229183 Ext File Attributes   00000000 (0)\n+229187 Local Header Offset   001041BE (1065406)\n+22918B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227113: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22918B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227159 CENTRAL HEADER #912   02014B50 (33639248)\n-22715D Created Zip Spec      14 (20) '2.0'\n-22715E Created OS            00 (0) 'MS-DOS'\n-22715F Extract Zip Spec      14 (20) '2.0'\n-227160 Extract OS            00 (0) 'MS-DOS'\n-227161 General Purpose Flag  0808 (2056)\n+2291AB CENTRAL HEADER #912   02014B50 (33639248)\n+2291AF Created Zip Spec      14 (20) '2.0'\n+2291B0 Created OS            00 (0) 'MS-DOS'\n+2291B1 Extract Zip Spec      14 (20) '2.0'\n+2291B2 Extract OS            00 (0) 'MS-DOS'\n+2291B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227163 Compression Method    0008 (8) 'Deflated'\n-227165 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227169 CRC                   229A16D5 (580523733)\n-22716D Compressed Size       0000054B (1355)\n-227171 Uncompressed Size     00001172 (4466)\n-227175 Filename Length       0047 (71)\n-227177 Extra Length          0000 (0)\n-227179 Comment Length        0000 (0)\n-22717B Disk Start            0000 (0)\n-22717D Int File Attributes   0000 (0)\n+2291B5 Compression Method    0008 (8) 'Deflated'\n+2291B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2291BB CRC                   3BFD1345 (1006441285)\n+2291BF Compressed Size       0000027C (636)\n+2291C3 Uncompressed Size     0000059E (1438)\n+2291C7 Filename Length       0026 (38)\n+2291C9 Extra Length          0000 (0)\n+2291CB Comment Length        0000 (0)\n+2291CD Disk Start            0000 (0)\n+2291CF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22717F Ext File Attributes   00000000 (0)\n-227183 Local Header Offset   000E81E9 (950761)\n-227187 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2291D1 Ext File Attributes   00000000 (0)\n+2291D5 Local Header Offset   0010485B (1067099)\n+2291D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227187: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2291D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2271CE CENTRAL HEADER #913   02014B50 (33639248)\n-2271D2 Created Zip Spec      14 (20) '2.0'\n-2271D3 Created OS            00 (0) 'MS-DOS'\n-2271D4 Extract Zip Spec      14 (20) '2.0'\n-2271D5 Extract OS            00 (0) 'MS-DOS'\n-2271D6 General Purpose Flag  0808 (2056)\n+2291FF CENTRAL HEADER #913   02014B50 (33639248)\n+229203 Created Zip Spec      14 (20) '2.0'\n+229204 Created OS            00 (0) 'MS-DOS'\n+229205 Extract Zip Spec      14 (20) '2.0'\n+229206 Extract OS            00 (0) 'MS-DOS'\n+229207 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2271D8 Compression Method    0008 (8) 'Deflated'\n-2271DA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2271DE CRC                   6C52AC25 (1817357349)\n-2271E2 Compressed Size       0000041F (1055)\n-2271E6 Uncompressed Size     00000A2F (2607)\n-2271EA Filename Length       0049 (73)\n-2271EC Extra Length          0000 (0)\n-2271EE Comment Length        0000 (0)\n-2271F0 Disk Start            0000 (0)\n-2271F2 Int File Attributes   0000 (0)\n+229209 Compression Method    0008 (8) 'Deflated'\n+22920B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22920F CRC                   C3E7F091 (3286757521)\n+229213 Compressed Size       0000113B (4411)\n+229217 Uncompressed Size     00005A5D (23133)\n+22921B Filename Length       0024 (36)\n+22921D Extra Length          0000 (0)\n+22921F Comment Length        0000 (0)\n+229221 Disk Start            0000 (0)\n+229223 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2271F4 Ext File Attributes   00000000 (0)\n-2271F8 Local Header Offset   000E87A9 (952233)\n-2271FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229225 Ext File Attributes   00000000 (0)\n+229229 Local Header Offset   00104B2B (1067819)\n+22922D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2271FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22922D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227245 CENTRAL HEADER #914   02014B50 (33639248)\n-227249 Created Zip Spec      14 (20) '2.0'\n-22724A Created OS            00 (0) 'MS-DOS'\n-22724B Extract Zip Spec      14 (20) '2.0'\n-22724C Extract OS            00 (0) 'MS-DOS'\n-22724D General Purpose Flag  0808 (2056)\n+229251 CENTRAL HEADER #914   02014B50 (33639248)\n+229255 Created Zip Spec      14 (20) '2.0'\n+229256 Created OS            00 (0) 'MS-DOS'\n+229257 Extract Zip Spec      14 (20) '2.0'\n+229258 Extract OS            00 (0) 'MS-DOS'\n+229259 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22724F Compression Method    0008 (8) 'Deflated'\n-227251 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227255 CRC                   39DE0130 (970850608)\n-227259 Compressed Size       00000430 (1072)\n-22725D Uncompressed Size     00000AD0 (2768)\n-227261 Filename Length       0049 (73)\n-227263 Extra Length          0000 (0)\n-227265 Comment Length        0000 (0)\n-227267 Disk Start            0000 (0)\n-227269 Int File Attributes   0000 (0)\n+22925B Compression Method    0008 (8) 'Deflated'\n+22925D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229261 CRC                   CCECA2E4 (3438060260)\n+229265 Compressed Size       00000481 (1153)\n+229269 Uncompressed Size     00000D97 (3479)\n+22926D Filename Length       0026 (38)\n+22926F Extra Length          0000 (0)\n+229271 Comment Length        0000 (0)\n+229273 Disk Start            0000 (0)\n+229275 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22726B Ext File Attributes   00000000 (0)\n-22726F Local Header Offset   000E8C3F (953407)\n-227273 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229277 Ext File Attributes   00000000 (0)\n+22927B Local Header Offset   00105CB8 (1072312)\n+22927F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227273: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22927F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2272BC CENTRAL HEADER #915   02014B50 (33639248)\n-2272C0 Created Zip Spec      14 (20) '2.0'\n-2272C1 Created OS            00 (0) 'MS-DOS'\n-2272C2 Extract Zip Spec      14 (20) '2.0'\n-2272C3 Extract OS            00 (0) 'MS-DOS'\n-2272C4 General Purpose Flag  0808 (2056)\n+2292A5 CENTRAL HEADER #915   02014B50 (33639248)\n+2292A9 Created Zip Spec      14 (20) '2.0'\n+2292AA Created OS            00 (0) 'MS-DOS'\n+2292AB Extract Zip Spec      14 (20) '2.0'\n+2292AC Extract OS            00 (0) 'MS-DOS'\n+2292AD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2272C6 Compression Method    0008 (8) 'Deflated'\n-2272C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2272CC CRC                   00000000 (0)\n-2272D0 Compressed Size       00000002 (2)\n-2272D4 Uncompressed Size     00000000 (0)\n-2272D8 Filename Length       0021 (33)\n-2272DA Extra Length          0000 (0)\n-2272DC Comment Length        0000 (0)\n-2272DE Disk Start            0000 (0)\n-2272E0 Int File Attributes   0000 (0)\n+2292AF Compression Method    0008 (8) 'Deflated'\n+2292B1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2292B5 CRC                   8DF2CD69 (2381499753)\n+2292B9 Compressed Size       00000B03 (2819)\n+2292BD Uncompressed Size     00003C43 (15427)\n+2292C1 Filename Length       0027 (39)\n+2292C3 Extra Length          0000 (0)\n+2292C5 Comment Length        0000 (0)\n+2292C7 Disk Start            0000 (0)\n+2292C9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2272E2 Ext File Attributes   00000000 (0)\n-2272E6 Local Header Offset   000E90E6 (954598)\n-2272EA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2292CB Ext File Attributes   00000000 (0)\n+2292CF Local Header Offset   0010618D (1073549)\n+2292D3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2272EA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2292D3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22730B CENTRAL HEADER #916   02014B50 (33639248)\n-22730F Created Zip Spec      14 (20) '2.0'\n-227310 Created OS            00 (0) 'MS-DOS'\n-227311 Extract Zip Spec      14 (20) '2.0'\n-227312 Extract OS            00 (0) 'MS-DOS'\n-227313 General Purpose Flag  0808 (2056)\n+2292FA CENTRAL HEADER #916   02014B50 (33639248)\n+2292FE Created Zip Spec      14 (20) '2.0'\n+2292FF Created OS            00 (0) 'MS-DOS'\n+229300 Extract Zip Spec      14 (20) '2.0'\n+229301 Extract OS            00 (0) 'MS-DOS'\n+229302 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227315 Compression Method    0008 (8) 'Deflated'\n-227317 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22731B CRC                   1A03F22E (436466222)\n-22731F Compressed Size       0000026F (623)\n-227323 Uncompressed Size     000004DF (1247)\n-227327 Filename Length       0033 (51)\n-227329 Extra Length          0000 (0)\n-22732B Comment Length        0000 (0)\n-22732D Disk Start            0000 (0)\n-22732F Int File Attributes   0000 (0)\n+229304 Compression Method    0008 (8) 'Deflated'\n+229306 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22930A CRC                   B577D739 (3044529977)\n+22930E Compressed Size       00000742 (1858)\n+229312 Uncompressed Size     0000218E (8590)\n+229316 Filename Length       0023 (35)\n+229318 Extra Length          0000 (0)\n+22931A Comment Length        0000 (0)\n+22931C Disk Start            0000 (0)\n+22931E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227331 Ext File Attributes   00000000 (0)\n-227335 Local Header Offset   000E9137 (954679)\n-227339 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229320 Ext File Attributes   00000000 (0)\n+229324 Local Header Offset   00106CE5 (1076453)\n+229328 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227339: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229328: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22736C CENTRAL HEADER #917   02014B50 (33639248)\n-227370 Created Zip Spec      14 (20) '2.0'\n-227371 Created OS            00 (0) 'MS-DOS'\n-227372 Extract Zip Spec      14 (20) '2.0'\n-227373 Extract OS            00 (0) 'MS-DOS'\n-227374 General Purpose Flag  0808 (2056)\n+22934B CENTRAL HEADER #917   02014B50 (33639248)\n+22934F Created Zip Spec      14 (20) '2.0'\n+229350 Created OS            00 (0) 'MS-DOS'\n+229351 Extract Zip Spec      14 (20) '2.0'\n+229352 Extract OS            00 (0) 'MS-DOS'\n+229353 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227376 Compression Method    0008 (8) 'Deflated'\n-227378 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22737C CRC                   00000000 (0)\n-227380 Compressed Size       00000002 (2)\n-227384 Uncompressed Size     00000000 (0)\n-227388 Filename Length       0027 (39)\n-22738A Extra Length          0000 (0)\n-22738C Comment Length        0000 (0)\n-22738E Disk Start            0000 (0)\n-227390 Int File Attributes   0000 (0)\n+229355 Compression Method    0008 (8) 'Deflated'\n+229357 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22935B CRC                   CDFD7CF6 (3455941878)\n+22935F Compressed Size       0000041A (1050)\n+229363 Uncompressed Size     00000BBA (3002)\n+229367 Filename Length       002A (42)\n+229369 Extra Length          0000 (0)\n+22936B Comment Length        0000 (0)\n+22936D Disk Start            0000 (0)\n+22936F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227392 Ext File Attributes   00000000 (0)\n-227396 Local Header Offset   000E9407 (955399)\n-22739A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229371 Ext File Attributes   00000000 (0)\n+229375 Local Header Offset   00107478 (1078392)\n+229379 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22739A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229379: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2273C1 CENTRAL HEADER #918   02014B50 (33639248)\n-2273C5 Created Zip Spec      14 (20) '2.0'\n-2273C6 Created OS            00 (0) 'MS-DOS'\n-2273C7 Extract Zip Spec      14 (20) '2.0'\n-2273C8 Extract OS            00 (0) 'MS-DOS'\n-2273C9 General Purpose Flag  0808 (2056)\n+2293A3 CENTRAL HEADER #918   02014B50 (33639248)\n+2293A7 Created Zip Spec      14 (20) '2.0'\n+2293A8 Created OS            00 (0) 'MS-DOS'\n+2293A9 Extract Zip Spec      14 (20) '2.0'\n+2293AA Extract OS            00 (0) 'MS-DOS'\n+2293AB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2273CB Compression Method    0008 (8) 'Deflated'\n-2273CD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2273D1 CRC                   DBE899CA (3689454026)\n-2273D5 Compressed Size       00000B09 (2825)\n-2273D9 Uncompressed Size     00002E6D (11885)\n-2273DD Filename Length       0037 (55)\n-2273DF Extra Length          0000 (0)\n-2273E1 Comment Length        0000 (0)\n-2273E3 Disk Start            0000 (0)\n-2273E5 Int File Attributes   0000 (0)\n+2293AD Compression Method    0008 (8) 'Deflated'\n+2293AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2293B3 CRC                   32C986CB (852068043)\n+2293B7 Compressed Size       00000296 (662)\n+2293BB Uncompressed Size     000004C5 (1221)\n+2293BF Filename Length       0026 (38)\n+2293C1 Extra Length          0000 (0)\n+2293C3 Comment Length        0000 (0)\n+2293C5 Disk Start            0000 (0)\n+2293C7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2273E7 Ext File Attributes   00000000 (0)\n-2273EB Local Header Offset   000E945E (955486)\n-2273EF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2293C9 Ext File Attributes   00000000 (0)\n+2293CD Local Header Offset   001078EA (1079530)\n+2293D1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2273EF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2293D1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227426 CENTRAL HEADER #919   02014B50 (33639248)\n-22742A Created Zip Spec      14 (20) '2.0'\n-22742B Created OS            00 (0) 'MS-DOS'\n-22742C Extract Zip Spec      14 (20) '2.0'\n-22742D Extract OS            00 (0) 'MS-DOS'\n-22742E General Purpose Flag  0808 (2056)\n+2293F7 CENTRAL HEADER #919   02014B50 (33639248)\n+2293FB Created Zip Spec      14 (20) '2.0'\n+2293FC Created OS            00 (0) 'MS-DOS'\n+2293FD Extract Zip Spec      14 (20) '2.0'\n+2293FE Extract OS            00 (0) 'MS-DOS'\n+2293FF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227430 Compression Method    0008 (8) 'Deflated'\n-227432 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227436 CRC                   00000000 (0)\n-22743A Compressed Size       00000002 (2)\n-22743E Uncompressed Size     00000000 (0)\n-227442 Filename Length       0029 (41)\n-227444 Extra Length          0000 (0)\n-227446 Comment Length        0000 (0)\n-227448 Disk Start            0000 (0)\n-22744A Int File Attributes   0000 (0)\n+229401 Compression Method    0008 (8) 'Deflated'\n+229403 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229407 CRC                   00000000 (0)\n+22940B Compressed Size       00000002 (2)\n+22940F Uncompressed Size     00000000 (0)\n+229413 Filename Length       001C (28)\n+229415 Extra Length          0000 (0)\n+229417 Comment Length        0000 (0)\n+229419 Disk Start            0000 (0)\n+22941B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22744C Ext File Attributes   00000000 (0)\n-227450 Local Header Offset   000E9FCC (958412)\n-227454 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22941D Ext File Attributes   00000000 (0)\n+229421 Local Header Offset   00107BD4 (1080276)\n+229425 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227454: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229425: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22747D CENTRAL HEADER #920   02014B50 (33639248)\n-227481 Created Zip Spec      14 (20) '2.0'\n-227482 Created OS            00 (0) 'MS-DOS'\n-227483 Extract Zip Spec      14 (20) '2.0'\n-227484 Extract OS            00 (0) 'MS-DOS'\n-227485 General Purpose Flag  0808 (2056)\n+229441 CENTRAL HEADER #920   02014B50 (33639248)\n+229445 Created Zip Spec      14 (20) '2.0'\n+229446 Created OS            00 (0) 'MS-DOS'\n+229447 Extract Zip Spec      14 (20) '2.0'\n+229448 Extract OS            00 (0) 'MS-DOS'\n+229449 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227487 Compression Method    0008 (8) 'Deflated'\n-227489 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22748D CRC                   91FB3CEA (2449161450)\n-227491 Compressed Size       0000028B (651)\n-227495 Uncompressed Size     00000518 (1304)\n-227499 Filename Length       0032 (50)\n-22749B Extra Length          0000 (0)\n-22749D Comment Length        0000 (0)\n-22749F Disk Start            0000 (0)\n-2274A1 Int File Attributes   0000 (0)\n+22944B Compression Method    0008 (8) 'Deflated'\n+22944D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229451 CRC                   9594ED56 (2509565270)\n+229455 Compressed Size       0000099C (2460)\n+229459 Uncompressed Size     00001E5D (7773)\n+22945D Filename Length       0030 (48)\n+22945F Extra Length          0000 (0)\n+229461 Comment Length        0000 (0)\n+229463 Disk Start            0000 (0)\n+229465 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2274A3 Ext File Attributes   00000000 (0)\n-2274A7 Local Header Offset   000EA025 (958501)\n-2274AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229467 Ext File Attributes   00000000 (0)\n+22946B Local Header Offset   00107C20 (1080352)\n+22946F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2274AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22946F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2274DD CENTRAL HEADER #921   02014B50 (33639248)\n-2274E1 Created Zip Spec      14 (20) '2.0'\n-2274E2 Created OS            00 (0) 'MS-DOS'\n-2274E3 Extract Zip Spec      14 (20) '2.0'\n-2274E4 Extract OS            00 (0) 'MS-DOS'\n-2274E5 General Purpose Flag  0808 (2056)\n+22949F CENTRAL HEADER #921   02014B50 (33639248)\n+2294A3 Created Zip Spec      14 (20) '2.0'\n+2294A4 Created OS            00 (0) 'MS-DOS'\n+2294A5 Extract Zip Spec      14 (20) '2.0'\n+2294A6 Extract OS            00 (0) 'MS-DOS'\n+2294A7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2274E7 Compression Method    0008 (8) 'Deflated'\n-2274E9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2274ED CRC                   492B287D (1227565181)\n-2274F1 Compressed Size       0000052C (1324)\n-2274F5 Uncompressed Size     00000FCE (4046)\n-2274F9 Filename Length       0042 (66)\n-2274FB Extra Length          0000 (0)\n-2274FD Comment Length        0000 (0)\n-2274FF Disk Start            0000 (0)\n-227501 Int File Attributes   0000 (0)\n+2294A9 Compression Method    0008 (8) 'Deflated'\n+2294AB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2294AF CRC                   B52DE397 (3039683479)\n+2294B3 Compressed Size       000006FD (1789)\n+2294B7 Uncompressed Size     00001623 (5667)\n+2294BB Filename Length       0032 (50)\n+2294BD Extra Length          0000 (0)\n+2294BF Comment Length        0000 (0)\n+2294C1 Disk Start            0000 (0)\n+2294C3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227503 Ext File Attributes   00000000 (0)\n-227507 Local Header Offset   000EA310 (959248)\n-22750B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2294C5 Ext File Attributes   00000000 (0)\n+2294C9 Local Header Offset   0010861A (1082906)\n+2294CD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22750B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2294CD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22754D CENTRAL HEADER #922   02014B50 (33639248)\n-227551 Created Zip Spec      14 (20) '2.0'\n-227552 Created OS            00 (0) 'MS-DOS'\n-227553 Extract Zip Spec      14 (20) '2.0'\n-227554 Extract OS            00 (0) 'MS-DOS'\n-227555 General Purpose Flag  0808 (2056)\n+2294FF CENTRAL HEADER #922   02014B50 (33639248)\n+229503 Created Zip Spec      14 (20) '2.0'\n+229504 Created OS            00 (0) 'MS-DOS'\n+229505 Extract Zip Spec      14 (20) '2.0'\n+229506 Extract OS            00 (0) 'MS-DOS'\n+229507 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227557 Compression Method    0008 (8) 'Deflated'\n-227559 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22755D CRC                   EB3BD2B9 (3946566329)\n-227561 Compressed Size       00000530 (1328)\n-227565 Uncompressed Size     0000169D (5789)\n-227569 Filename Length       0039 (57)\n-22756B Extra Length          0000 (0)\n-22756D Comment Length        0000 (0)\n-22756F Disk Start            0000 (0)\n-227571 Int File Attributes   0000 (0)\n+229509 Compression Method    0008 (8) 'Deflated'\n+22950B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22950F CRC                   851F3F00 (2233417472)\n+229513 Compressed Size       00000323 (803)\n+229517 Uncompressed Size     00000723 (1827)\n+22951B Filename Length       0032 (50)\n+22951D Extra Length          0000 (0)\n+22951F Comment Length        0000 (0)\n+229521 Disk Start            0000 (0)\n+229523 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227573 Ext File Attributes   00000000 (0)\n-227577 Local Header Offset   000EA8AC (960684)\n-22757B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229525 Ext File Attributes   00000000 (0)\n+229529 Local Header Offset   00108D77 (1084791)\n+22952D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22757B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22952D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2275B4 CENTRAL HEADER #923   02014B50 (33639248)\n-2275B8 Created Zip Spec      14 (20) '2.0'\n-2275B9 Created OS            00 (0) 'MS-DOS'\n-2275BA Extract Zip Spec      14 (20) '2.0'\n-2275BB Extract OS            00 (0) 'MS-DOS'\n-2275BC General Purpose Flag  0808 (2056)\n+22955F CENTRAL HEADER #923   02014B50 (33639248)\n+229563 Created Zip Spec      14 (20) '2.0'\n+229564 Created OS            00 (0) 'MS-DOS'\n+229565 Extract Zip Spec      14 (20) '2.0'\n+229566 Extract OS            00 (0) 'MS-DOS'\n+229567 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2275BE Compression Method    0008 (8) 'Deflated'\n-2275C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2275C4 CRC                   00000000 (0)\n-2275C8 Compressed Size       00000002 (2)\n-2275CC Uncompressed Size     00000000 (0)\n-2275D0 Filename Length       0031 (49)\n-2275D2 Extra Length          0000 (0)\n-2275D4 Comment Length        0000 (0)\n-2275D6 Disk Start            0000 (0)\n-2275D8 Int File Attributes   0000 (0)\n+229569 Compression Method    0008 (8) 'Deflated'\n+22956B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22956F CRC                   86FDBE3E (2264776254)\n+229573 Compressed Size       0000059A (1434)\n+229577 Uncompressed Size     00000FB9 (4025)\n+22957B Filename Length       0031 (49)\n+22957D Extra Length          0000 (0)\n+22957F Comment Length        0000 (0)\n+229581 Disk Start            0000 (0)\n+229583 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2275DA Ext File Attributes   00000000 (0)\n-2275DE Local Header Offset   000EAE43 (962115)\n-2275E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229585 Ext File Attributes   00000000 (0)\n+229589 Local Header Offset   001090FA (1085690)\n+22958D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2275E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22958D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227613 CENTRAL HEADER #924   02014B50 (33639248)\n-227617 Created Zip Spec      14 (20) '2.0'\n-227618 Created OS            00 (0) 'MS-DOS'\n-227619 Extract Zip Spec      14 (20) '2.0'\n-22761A Extract OS            00 (0) 'MS-DOS'\n-22761B General Purpose Flag  0808 (2056)\n+2295BE CENTRAL HEADER #924   02014B50 (33639248)\n+2295C2 Created Zip Spec      14 (20) '2.0'\n+2295C3 Created OS            00 (0) 'MS-DOS'\n+2295C4 Extract Zip Spec      14 (20) '2.0'\n+2295C5 Extract OS            00 (0) 'MS-DOS'\n+2295C6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22761D Compression Method    0008 (8) 'Deflated'\n-22761F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227623 CRC                   74498D23 (1950977315)\n-227627 Compressed Size       0000034E (846)\n-22762B Uncompressed Size     00000738 (1848)\n-22762F Filename Length       0048 (72)\n-227631 Extra Length          0000 (0)\n-227633 Comment Length        0000 (0)\n-227635 Disk Start            0000 (0)\n-227637 Int File Attributes   0000 (0)\n+2295C8 Compression Method    0008 (8) 'Deflated'\n+2295CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2295CE CRC                   CA71D506 (3396457734)\n+2295D2 Compressed Size       00000501 (1281)\n+2295D6 Uncompressed Size     00000D90 (3472)\n+2295DA Filename Length       0036 (54)\n+2295DC Extra Length          0000 (0)\n+2295DE Comment Length        0000 (0)\n+2295E0 Disk Start            0000 (0)\n+2295E2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227639 Ext File Attributes   00000000 (0)\n-22763D Local Header Offset   000EAEA4 (962212)\n-227641 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2295E4 Ext File Attributes   00000000 (0)\n+2295E8 Local Header Offset   001096F3 (1087219)\n+2295EC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227641: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2295EC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227689 CENTRAL HEADER #925   02014B50 (33639248)\n-22768D Created Zip Spec      14 (20) '2.0'\n-22768E Created OS            00 (0) 'MS-DOS'\n-22768F Extract Zip Spec      14 (20) '2.0'\n-227690 Extract OS            00 (0) 'MS-DOS'\n-227691 General Purpose Flag  0808 (2056)\n+229622 CENTRAL HEADER #925   02014B50 (33639248)\n+229626 Created Zip Spec      14 (20) '2.0'\n+229627 Created OS            00 (0) 'MS-DOS'\n+229628 Extract Zip Spec      14 (20) '2.0'\n+229629 Extract OS            00 (0) 'MS-DOS'\n+22962A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227693 Compression Method    0008 (8) 'Deflated'\n-227695 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227699 CRC                   C2DA4C0E (3269086222)\n-22769D Compressed Size       000002B1 (689)\n-2276A1 Uncompressed Size     00000581 (1409)\n-2276A5 Filename Length       0047 (71)\n-2276A7 Extra Length          0000 (0)\n-2276A9 Comment Length        0000 (0)\n-2276AB Disk Start            0000 (0)\n-2276AD Int File Attributes   0000 (0)\n+22962C Compression Method    0008 (8) 'Deflated'\n+22962E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229632 CRC                   B42DC810 (3022899216)\n+229636 Compressed Size       00000756 (1878)\n+22963A Uncompressed Size     000018CC (6348)\n+22963E Filename Length       002E (46)\n+229640 Extra Length          0000 (0)\n+229642 Comment Length        0000 (0)\n+229644 Disk Start            0000 (0)\n+229646 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2276AF Ext File Attributes   00000000 (0)\n-2276B3 Local Header Offset   000EB268 (963176)\n-2276B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229648 Ext File Attributes   00000000 (0)\n+22964C Local Header Offset   00109C58 (1088600)\n+229650 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2276B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229650: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2276FE CENTRAL HEADER #926   02014B50 (33639248)\n-227702 Created Zip Spec      14 (20) '2.0'\n-227703 Created OS            00 (0) 'MS-DOS'\n-227704 Extract Zip Spec      14 (20) '2.0'\n-227705 Extract OS            00 (0) 'MS-DOS'\n-227706 General Purpose Flag  0808 (2056)\n+22967E CENTRAL HEADER #926   02014B50 (33639248)\n+229682 Created Zip Spec      14 (20) '2.0'\n+229683 Created OS            00 (0) 'MS-DOS'\n+229684 Extract Zip Spec      14 (20) '2.0'\n+229685 Extract OS            00 (0) 'MS-DOS'\n+229686 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227708 Compression Method    0008 (8) 'Deflated'\n-22770A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22770E CRC                   A166D974 (2707872116)\n-227712 Compressed Size       000004DD (1245)\n-227716 Uncompressed Size     00000E50 (3664)\n-22771A Filename Length       0047 (71)\n-22771C Extra Length          0000 (0)\n-22771E Comment Length        0000 (0)\n-227720 Disk Start            0000 (0)\n-227722 Int File Attributes   0000 (0)\n+229688 Compression Method    0008 (8) 'Deflated'\n+22968A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22968E CRC                   5D6B9E17 (1567333911)\n+229692 Compressed Size       000004F9 (1273)\n+229696 Uncompressed Size     00000CC3 (3267)\n+22969A Filename Length       0031 (49)\n+22969C Extra Length          0000 (0)\n+22969E Comment Length        0000 (0)\n+2296A0 Disk Start            0000 (0)\n+2296A2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227724 Ext File Attributes   00000000 (0)\n-227728 Local Header Offset   000EB58E (963982)\n-22772C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2296A4 Ext File Attributes   00000000 (0)\n+2296A8 Local Header Offset   0010A40A (1090570)\n+2296AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22772C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2296AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227773 CENTRAL HEADER #927   02014B50 (33639248)\n-227777 Created Zip Spec      14 (20) '2.0'\n-227778 Created OS            00 (0) 'MS-DOS'\n-227779 Extract Zip Spec      14 (20) '2.0'\n-22777A Extract OS            00 (0) 'MS-DOS'\n-22777B General Purpose Flag  0808 (2056)\n+2296DD CENTRAL HEADER #927   02014B50 (33639248)\n+2296E1 Created Zip Spec      14 (20) '2.0'\n+2296E2 Created OS            00 (0) 'MS-DOS'\n+2296E3 Extract Zip Spec      14 (20) '2.0'\n+2296E4 Extract OS            00 (0) 'MS-DOS'\n+2296E5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22777D Compression Method    0008 (8) 'Deflated'\n-22777F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227783 CRC                   F227F3D5 (4062704597)\n-227787 Compressed Size       000005DA (1498)\n-22778B Uncompressed Size     0000107D (4221)\n-22778F Filename Length       0046 (70)\n-227791 Extra Length          0000 (0)\n-227793 Comment Length        0000 (0)\n-227795 Disk Start            0000 (0)\n-227797 Int File Attributes   0000 (0)\n+2296E7 Compression Method    0008 (8) 'Deflated'\n+2296E9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2296ED CRC                   33E95645 (870929989)\n+2296F1 Compressed Size       0000035A (858)\n+2296F5 Uncompressed Size     0000073C (1852)\n+2296F9 Filename Length       002B (43)\n+2296FB Extra Length          0000 (0)\n+2296FD Comment Length        0000 (0)\n+2296FF Disk Start            0000 (0)\n+229701 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227799 Ext File Attributes   00000000 (0)\n-22779D Local Header Offset   000EBAE0 (965344)\n-2277A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229703 Ext File Attributes   00000000 (0)\n+229707 Local Header Offset   0010A962 (1091938)\n+22970B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2277A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22970B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2277E7 CENTRAL HEADER #928   02014B50 (33639248)\n-2277EB Created Zip Spec      14 (20) '2.0'\n-2277EC Created OS            00 (0) 'MS-DOS'\n-2277ED Extract Zip Spec      14 (20) '2.0'\n-2277EE Extract OS            00 (0) 'MS-DOS'\n-2277EF General Purpose Flag  0808 (2056)\n+229736 CENTRAL HEADER #928   02014B50 (33639248)\n+22973A Created Zip Spec      14 (20) '2.0'\n+22973B Created OS            00 (0) 'MS-DOS'\n+22973C Extract Zip Spec      14 (20) '2.0'\n+22973D Extract OS            00 (0) 'MS-DOS'\n+22973E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2277F1 Compression Method    0008 (8) 'Deflated'\n-2277F3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2277F7 CRC                   F5209683 (4112553603)\n-2277FB Compressed Size       0000058D (1421)\n-2277FF Uncompressed Size     00001210 (4624)\n-227803 Filename Length       0049 (73)\n-227805 Extra Length          0000 (0)\n-227807 Comment Length        0000 (0)\n-227809 Disk Start            0000 (0)\n-22780B Int File Attributes   0000 (0)\n+229740 Compression Method    0008 (8) 'Deflated'\n+229742 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229746 CRC                   DF14BD96 (3742678422)\n+22974A Compressed Size       000006C8 (1736)\n+22974E Uncompressed Size     000016A6 (5798)\n+229752 Filename Length       0030 (48)\n+229754 Extra Length          0000 (0)\n+229756 Comment Length        0000 (0)\n+229758 Disk Start            0000 (0)\n+22975A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22780D Ext File Attributes   00000000 (0)\n-227811 Local Header Offset   000EC12E (966958)\n-227815 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22975C Ext File Attributes   00000000 (0)\n+229760 Local Header Offset   0010AD15 (1092885)\n+229764 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227815: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229764: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22785E CENTRAL HEADER #929   02014B50 (33639248)\n-227862 Created Zip Spec      14 (20) '2.0'\n-227863 Created OS            00 (0) 'MS-DOS'\n-227864 Extract Zip Spec      14 (20) '2.0'\n-227865 Extract OS            00 (0) 'MS-DOS'\n-227866 General Purpose Flag  0808 (2056)\n+229794 CENTRAL HEADER #929   02014B50 (33639248)\n+229798 Created Zip Spec      14 (20) '2.0'\n+229799 Created OS            00 (0) 'MS-DOS'\n+22979A Extract Zip Spec      14 (20) '2.0'\n+22979B Extract OS            00 (0) 'MS-DOS'\n+22979C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227868 Compression Method    0008 (8) 'Deflated'\n-22786A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22786E CRC                   00000000 (0)\n-227872 Compressed Size       00000002 (2)\n-227876 Uncompressed Size     00000000 (0)\n-22787A Filename Length       0024 (36)\n-22787C Extra Length          0000 (0)\n-22787E Comment Length        0000 (0)\n-227880 Disk Start            0000 (0)\n-227882 Int File Attributes   0000 (0)\n+22979E Compression Method    0008 (8) 'Deflated'\n+2297A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2297A4 CRC                   FA17120C (4195815948)\n+2297A8 Compressed Size       000005A1 (1441)\n+2297AC Uncompressed Size     00000EE2 (3810)\n+2297B0 Filename Length       0033 (51)\n+2297B2 Extra Length          0000 (0)\n+2297B4 Comment Length        0000 (0)\n+2297B6 Disk Start            0000 (0)\n+2297B8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227884 Ext File Attributes   00000000 (0)\n-227888 Local Header Offset   000EC732 (968498)\n-22788C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2297BA Ext File Attributes   00000000 (0)\n+2297BE Local Header Offset   0010B43B (1094715)\n+2297C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22788C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2297C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2278B0 CENTRAL HEADER #930   02014B50 (33639248)\n-2278B4 Created Zip Spec      14 (20) '2.0'\n-2278B5 Created OS            00 (0) 'MS-DOS'\n-2278B6 Extract Zip Spec      14 (20) '2.0'\n-2278B7 Extract OS            00 (0) 'MS-DOS'\n-2278B8 General Purpose Flag  0808 (2056)\n+2297F5 CENTRAL HEADER #930   02014B50 (33639248)\n+2297F9 Created Zip Spec      14 (20) '2.0'\n+2297FA Created OS            00 (0) 'MS-DOS'\n+2297FB Extract Zip Spec      14 (20) '2.0'\n+2297FC Extract OS            00 (0) 'MS-DOS'\n+2297FD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2278BA Compression Method    0008 (8) 'Deflated'\n-2278BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2278C0 CRC                   A7E27376 (2816635766)\n-2278C4 Compressed Size       00000352 (850)\n-2278C8 Uncompressed Size     0000076D (1901)\n-2278CC Filename Length       0038 (56)\n-2278CE Extra Length          0000 (0)\n-2278D0 Comment Length        0000 (0)\n-2278D2 Disk Start            0000 (0)\n-2278D4 Int File Attributes   0000 (0)\n+2297FF Compression Method    0008 (8) 'Deflated'\n+229801 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229805 CRC                   8B21CC44 (2334248004)\n+229809 Compressed Size       00000AFF (2815)\n+22980D Uncompressed Size     0000343B (13371)\n+229811 Filename Length       002E (46)\n+229813 Extra Length          0000 (0)\n+229815 Comment Length        0000 (0)\n+229817 Disk Start            0000 (0)\n+229819 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2278D6 Ext File Attributes   00000000 (0)\n-2278DA Local Header Offset   000EC786 (968582)\n-2278DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22981B Ext File Attributes   00000000 (0)\n+22981F Local Header Offset   0010BA3D (1096253)\n+229823 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2278DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229823: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227916 CENTRAL HEADER #931   02014B50 (33639248)\n-22791A Created Zip Spec      14 (20) '2.0'\n-22791B Created OS            00 (0) 'MS-DOS'\n-22791C Extract Zip Spec      14 (20) '2.0'\n-22791D Extract OS            00 (0) 'MS-DOS'\n-22791E General Purpose Flag  0808 (2056)\n+229851 CENTRAL HEADER #931   02014B50 (33639248)\n+229855 Created Zip Spec      14 (20) '2.0'\n+229856 Created OS            00 (0) 'MS-DOS'\n+229857 Extract Zip Spec      14 (20) '2.0'\n+229858 Extract OS            00 (0) 'MS-DOS'\n+229859 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227920 Compression Method    0008 (8) 'Deflated'\n-227922 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227926 CRC                   28520740 (676464448)\n-22792A Compressed Size       0000032C (812)\n-22792E Uncompressed Size     00000910 (2320)\n-227932 Filename Length       0047 (71)\n-227934 Extra Length          0000 (0)\n-227936 Comment Length        0000 (0)\n-227938 Disk Start            0000 (0)\n-22793A Int File Attributes   0000 (0)\n+22985B Compression Method    0008 (8) 'Deflated'\n+22985D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229861 CRC                   BDC74FB9 (3183955897)\n+229865 Compressed Size       00000A8B (2699)\n+229869 Uncompressed Size     00002C1E (11294)\n+22986D Filename Length       0032 (50)\n+22986F Extra Length          0000 (0)\n+229871 Comment Length        0000 (0)\n+229873 Disk Start            0000 (0)\n+229875 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22793C Ext File Attributes   00000000 (0)\n-227940 Local Header Offset   000ECB3E (969534)\n-227944 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229877 Ext File Attributes   00000000 (0)\n+22987B Local Header Offset   0010C598 (1099160)\n+22987F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227944: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22987F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22798B CENTRAL HEADER #932   02014B50 (33639248)\n-22798F Created Zip Spec      14 (20) '2.0'\n-227990 Created OS            00 (0) 'MS-DOS'\n-227991 Extract Zip Spec      14 (20) '2.0'\n-227992 Extract OS            00 (0) 'MS-DOS'\n-227993 General Purpose Flag  0808 (2056)\n+2298B1 CENTRAL HEADER #932   02014B50 (33639248)\n+2298B5 Created Zip Spec      14 (20) '2.0'\n+2298B6 Created OS            00 (0) 'MS-DOS'\n+2298B7 Extract Zip Spec      14 (20) '2.0'\n+2298B8 Extract OS            00 (0) 'MS-DOS'\n+2298B9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227995 Compression Method    0008 (8) 'Deflated'\n-227997 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22799B CRC                   C60919F1 (3322485233)\n-22799F Compressed Size       00000991 (2449)\n-2279A3 Uncompressed Size     00002E58 (11864)\n-2279A7 Filename Length       0037 (55)\n-2279A9 Extra Length          0000 (0)\n-2279AB Comment Length        0000 (0)\n-2279AD Disk Start            0000 (0)\n-2279AF Int File Attributes   0000 (0)\n+2298BB Compression Method    0008 (8) 'Deflated'\n+2298BD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2298C1 CRC                   4BE7E92F (1273489711)\n+2298C5 Compressed Size       00000465 (1125)\n+2298C9 Uncompressed Size     00000B3B (2875)\n+2298CD Filename Length       002E (46)\n+2298CF Extra Length          0000 (0)\n+2298D1 Comment Length        0000 (0)\n+2298D3 Disk Start            0000 (0)\n+2298D5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2279B1 Ext File Attributes   00000000 (0)\n-2279B5 Local Header Offset   000ECEDF (970463)\n-2279B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2298D7 Ext File Attributes   00000000 (0)\n+2298DB Local Header Offset   0010D083 (1101955)\n+2298DF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2279B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2298DF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2279F0 CENTRAL HEADER #933   02014B50 (33639248)\n-2279F4 Created Zip Spec      14 (20) '2.0'\n-2279F5 Created OS            00 (0) 'MS-DOS'\n-2279F6 Extract Zip Spec      14 (20) '2.0'\n-2279F7 Extract OS            00 (0) 'MS-DOS'\n-2279F8 General Purpose Flag  0808 (2056)\n+22990D CENTRAL HEADER #933   02014B50 (33639248)\n+229911 Created Zip Spec      14 (20) '2.0'\n+229912 Created OS            00 (0) 'MS-DOS'\n+229913 Extract Zip Spec      14 (20) '2.0'\n+229914 Extract OS            00 (0) 'MS-DOS'\n+229915 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2279FA Compression Method    0008 (8) 'Deflated'\n-2279FC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227A00 CRC                   C68A09E8 (3330935272)\n-227A04 Compressed Size       00000525 (1317)\n-227A08 Uncompressed Size     00000F96 (3990)\n-227A0C Filename Length       0036 (54)\n-227A0E Extra Length          0000 (0)\n-227A10 Comment Length        0000 (0)\n-227A12 Disk Start            0000 (0)\n-227A14 Int File Attributes   0000 (0)\n+229917 Compression Method    0008 (8) 'Deflated'\n+229919 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22991D CRC                   EE9BE4CE (4003194062)\n+229921 Compressed Size       0000044C (1100)\n+229925 Uncompressed Size     00000A15 (2581)\n+229929 Filename Length       002C (44)\n+22992B Extra Length          0000 (0)\n+22992D Comment Length        0000 (0)\n+22992F Disk Start            0000 (0)\n+229931 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227A16 Ext File Attributes   00000000 (0)\n-227A1A Local Header Offset   000ED8D5 (973013)\n-227A1E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229933 Ext File Attributes   00000000 (0)\n+229937 Local Header Offset   0010D544 (1103172)\n+22993B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227A1E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22993B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227A54 CENTRAL HEADER #934   02014B50 (33639248)\n-227A58 Created Zip Spec      14 (20) '2.0'\n-227A59 Created OS            00 (0) 'MS-DOS'\n-227A5A Extract Zip Spec      14 (20) '2.0'\n-227A5B Extract OS            00 (0) 'MS-DOS'\n-227A5C General Purpose Flag  0808 (2056)\n+229967 CENTRAL HEADER #934   02014B50 (33639248)\n+22996B Created Zip Spec      14 (20) '2.0'\n+22996C Created OS            00 (0) 'MS-DOS'\n+22996D Extract Zip Spec      14 (20) '2.0'\n+22996E Extract OS            00 (0) 'MS-DOS'\n+22996F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227A5E Compression Method    0008 (8) 'Deflated'\n-227A60 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227A64 CRC                   AE59B827 (2925115431)\n-227A68 Compressed Size       00000500 (1280)\n-227A6C Uncompressed Size     00001018 (4120)\n-227A70 Filename Length       0039 (57)\n-227A72 Extra Length          0000 (0)\n-227A74 Comment Length        0000 (0)\n-227A76 Disk Start            0000 (0)\n-227A78 Int File Attributes   0000 (0)\n+229971 Compression Method    0008 (8) 'Deflated'\n+229973 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229977 CRC                   930DE3AE (2467161006)\n+22997B Compressed Size       00000448 (1096)\n+22997F Uncompressed Size     00000A3C (2620)\n+229983 Filename Length       002F (47)\n+229985 Extra Length          0000 (0)\n+229987 Comment Length        0000 (0)\n+229989 Disk Start            0000 (0)\n+22998B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227A7A Ext File Attributes   00000000 (0)\n-227A7E Local Header Offset   000EDE5E (974430)\n-227A82 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22998D Ext File Attributes   00000000 (0)\n+229991 Local Header Offset   0010D9EA (1104362)\n+229995 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227A82: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229995: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227ABB CENTRAL HEADER #935   02014B50 (33639248)\n-227ABF Created Zip Spec      14 (20) '2.0'\n-227AC0 Created OS            00 (0) 'MS-DOS'\n-227AC1 Extract Zip Spec      14 (20) '2.0'\n-227AC2 Extract OS            00 (0) 'MS-DOS'\n-227AC3 General Purpose Flag  0808 (2056)\n+2299C4 CENTRAL HEADER #935   02014B50 (33639248)\n+2299C8 Created Zip Spec      14 (20) '2.0'\n+2299C9 Created OS            00 (0) 'MS-DOS'\n+2299CA Extract Zip Spec      14 (20) '2.0'\n+2299CB Extract OS            00 (0) 'MS-DOS'\n+2299CC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227AC5 Compression Method    0008 (8) 'Deflated'\n-227AC7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227ACB CRC                   C397571B (3281475355)\n-227ACF Compressed Size       000004CB (1227)\n-227AD3 Uncompressed Size     00001058 (4184)\n-227AD7 Filename Length       0035 (53)\n-227AD9 Extra Length          0000 (0)\n-227ADB Comment Length        0000 (0)\n-227ADD Disk Start            0000 (0)\n-227ADF Int File Attributes   0000 (0)\n+2299CE Compression Method    0008 (8) 'Deflated'\n+2299D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2299D4 CRC                   00000000 (0)\n+2299D8 Compressed Size       00000002 (2)\n+2299DC Uncompressed Size     00000000 (0)\n+2299E0 Filename Length       0020 (32)\n+2299E2 Extra Length          0000 (0)\n+2299E4 Comment Length        0000 (0)\n+2299E6 Disk Start            0000 (0)\n+2299E8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227AE1 Ext File Attributes   00000000 (0)\n-227AE5 Local Header Offset   000EE3C5 (975813)\n-227AE9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2299EA Ext File Attributes   00000000 (0)\n+2299EE Local Header Offset   0010DE8F (1105551)\n+2299F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227AE9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2299F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227B1E CENTRAL HEADER #936   02014B50 (33639248)\n-227B22 Created Zip Spec      14 (20) '2.0'\n-227B23 Created OS            00 (0) 'MS-DOS'\n-227B24 Extract Zip Spec      14 (20) '2.0'\n-227B25 Extract OS            00 (0) 'MS-DOS'\n-227B26 General Purpose Flag  0808 (2056)\n+229A12 CENTRAL HEADER #936   02014B50 (33639248)\n+229A16 Created Zip Spec      14 (20) '2.0'\n+229A17 Created OS            00 (0) 'MS-DOS'\n+229A18 Extract Zip Spec      14 (20) '2.0'\n+229A19 Extract OS            00 (0) 'MS-DOS'\n+229A1A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227B28 Compression Method    0008 (8) 'Deflated'\n-227B2A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227B2E CRC                   F1D2C098 (4057120920)\n-227B32 Compressed Size       000007F0 (2032)\n-227B36 Uncompressed Size     00001C03 (7171)\n-227B3A Filename Length       0037 (55)\n-227B3C Extra Length          0000 (0)\n-227B3E Comment Length        0000 (0)\n-227B40 Disk Start            0000 (0)\n-227B42 Int File Attributes   0000 (0)\n+229A1C Compression Method    0008 (8) 'Deflated'\n+229A1E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229A22 CRC                   184AAEF9 (407547641)\n+229A26 Compressed Size       00000414 (1044)\n+229A2A Uncompressed Size     00000ADF (2783)\n+229A2E Filename Length       0036 (54)\n+229A30 Extra Length          0000 (0)\n+229A32 Comment Length        0000 (0)\n+229A34 Disk Start            0000 (0)\n+229A36 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227B44 Ext File Attributes   00000000 (0)\n-227B48 Local Header Offset   000EE8F3 (977139)\n-227B4C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229A38 Ext File Attributes   00000000 (0)\n+229A3C Local Header Offset   0010DEDF (1105631)\n+229A40 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227B4C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229A40: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227B83 CENTRAL HEADER #937   02014B50 (33639248)\n-227B87 Created Zip Spec      14 (20) '2.0'\n-227B88 Created OS            00 (0) 'MS-DOS'\n-227B89 Extract Zip Spec      14 (20) '2.0'\n-227B8A Extract OS            00 (0) 'MS-DOS'\n-227B8B General Purpose Flag  0808 (2056)\n+229A76 CENTRAL HEADER #937   02014B50 (33639248)\n+229A7A Created Zip Spec      14 (20) '2.0'\n+229A7B Created OS            00 (0) 'MS-DOS'\n+229A7C Extract Zip Spec      14 (20) '2.0'\n+229A7D Extract OS            00 (0) 'MS-DOS'\n+229A7E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227B8D Compression Method    0008 (8) 'Deflated'\n-227B8F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227B93 CRC                   8ED687AA (2396424106)\n-227B97 Compressed Size       000003B2 (946)\n-227B9B Uncompressed Size     00000C9B (3227)\n-227B9F Filename Length       0038 (56)\n-227BA1 Extra Length          0000 (0)\n-227BA3 Comment Length        0000 (0)\n-227BA5 Disk Start            0000 (0)\n-227BA7 Int File Attributes   0000 (0)\n+229A80 Compression Method    0008 (8) 'Deflated'\n+229A82 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229A86 CRC                   3867D7AC (946329516)\n+229A8A Compressed Size       0000041D (1053)\n+229A8E Uncompressed Size     00000A70 (2672)\n+229A92 Filename Length       002D (45)\n+229A94 Extra Length          0000 (0)\n+229A96 Comment Length        0000 (0)\n+229A98 Disk Start            0000 (0)\n+229A9A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227BA9 Ext File Attributes   00000000 (0)\n-227BAD Local Header Offset   000EF148 (979272)\n-227BB1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229A9C Ext File Attributes   00000000 (0)\n+229AA0 Local Header Offset   0010E357 (1106775)\n+229AA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227BB1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229AA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227BE9 CENTRAL HEADER #938   02014B50 (33639248)\n-227BED Created Zip Spec      14 (20) '2.0'\n-227BEE Created OS            00 (0) 'MS-DOS'\n-227BEF Extract Zip Spec      14 (20) '2.0'\n-227BF0 Extract OS            00 (0) 'MS-DOS'\n-227BF1 General Purpose Flag  0808 (2056)\n+229AD1 CENTRAL HEADER #938   02014B50 (33639248)\n+229AD5 Created Zip Spec      14 (20) '2.0'\n+229AD6 Created OS            00 (0) 'MS-DOS'\n+229AD7 Extract Zip Spec      14 (20) '2.0'\n+229AD8 Extract OS            00 (0) 'MS-DOS'\n+229AD9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227BF3 Compression Method    0008 (8) 'Deflated'\n-227BF5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227BF9 CRC                   3E4334ED (1044591853)\n-227BFD Compressed Size       0000028A (650)\n-227C01 Uncompressed Size     0000066A (1642)\n-227C05 Filename Length       003E (62)\n-227C07 Extra Length          0000 (0)\n-227C09 Comment Length        0000 (0)\n-227C0B Disk Start            0000 (0)\n-227C0D Int File Attributes   0000 (0)\n+229ADB Compression Method    0008 (8) 'Deflated'\n+229ADD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229AE1 CRC                   00E586BE (15042238)\n+229AE5 Compressed Size       0000032B (811)\n+229AE9 Uncompressed Size     00000678 (1656)\n+229AED Filename Length       002F (47)\n+229AEF Extra Length          0000 (0)\n+229AF1 Comment Length        0000 (0)\n+229AF3 Disk Start            0000 (0)\n+229AF5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227C0F Ext File Attributes   00000000 (0)\n-227C13 Local Header Offset   000EF560 (980320)\n-227C17 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229AF7 Ext File Attributes   00000000 (0)\n+229AFB Local Header Offset   0010E7CF (1107919)\n+229AFF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227C17: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229AFF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227C55 CENTRAL HEADER #939   02014B50 (33639248)\n-227C59 Created Zip Spec      14 (20) '2.0'\n-227C5A Created OS            00 (0) 'MS-DOS'\n-227C5B Extract Zip Spec      14 (20) '2.0'\n-227C5C Extract OS            00 (0) 'MS-DOS'\n-227C5D General Purpose Flag  0808 (2056)\n+229B2E CENTRAL HEADER #939   02014B50 (33639248)\n+229B32 Created Zip Spec      14 (20) '2.0'\n+229B33 Created OS            00 (0) 'MS-DOS'\n+229B34 Extract Zip Spec      14 (20) '2.0'\n+229B35 Extract OS            00 (0) 'MS-DOS'\n+229B36 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227C5F Compression Method    0008 (8) 'Deflated'\n-227C61 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227C65 CRC                   1F076089 (520577161)\n-227C69 Compressed Size       00000227 (551)\n-227C6D Uncompressed Size     000003FD (1021)\n-227C71 Filename Length       003F (63)\n-227C73 Extra Length          0000 (0)\n-227C75 Comment Length        0000 (0)\n-227C77 Disk Start            0000 (0)\n-227C79 Int File Attributes   0000 (0)\n+229B38 Compression Method    0008 (8) 'Deflated'\n+229B3A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229B3E CRC                   00000000 (0)\n+229B42 Compressed Size       00000002 (2)\n+229B46 Uncompressed Size     00000000 (0)\n+229B4A Filename Length       001E (30)\n+229B4C Extra Length          0000 (0)\n+229B4E Comment Length        0000 (0)\n+229B50 Disk Start            0000 (0)\n+229B52 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227C7B Ext File Attributes   00000000 (0)\n-227C7F Local Header Offset   000EF856 (981078)\n-227C83 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229B54 Ext File Attributes   00000000 (0)\n+229B58 Local Header Offset   0010EB57 (1108823)\n+229B5C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227C83: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229B5C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227CC2 CENTRAL HEADER #940   02014B50 (33639248)\n-227CC6 Created Zip Spec      14 (20) '2.0'\n-227CC7 Created OS            00 (0) 'MS-DOS'\n-227CC8 Extract Zip Spec      14 (20) '2.0'\n-227CC9 Extract OS            00 (0) 'MS-DOS'\n-227CCA General Purpose Flag  0808 (2056)\n+229B7A CENTRAL HEADER #940   02014B50 (33639248)\n+229B7E Created Zip Spec      14 (20) '2.0'\n+229B7F Created OS            00 (0) 'MS-DOS'\n+229B80 Extract Zip Spec      14 (20) '2.0'\n+229B81 Extract OS            00 (0) 'MS-DOS'\n+229B82 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227CCC Compression Method    0008 (8) 'Deflated'\n-227CCE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227CD2 CRC                   63B69239 (1672909369)\n-227CD6 Compressed Size       00000408 (1032)\n-227CDA Uncompressed Size     00000F7F (3967)\n-227CDE Filename Length       0041 (65)\n-227CE0 Extra Length          0000 (0)\n-227CE2 Comment Length        0000 (0)\n-227CE4 Disk Start            0000 (0)\n-227CE6 Int File Attributes   0000 (0)\n+229B84 Compression Method    0008 (8) 'Deflated'\n+229B86 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229B8A CRC                   E1C5881F (3787819039)\n+229B8E Compressed Size       00000336 (822)\n+229B92 Uncompressed Size     000006AD (1709)\n+229B96 Filename Length       003C (60)\n+229B98 Extra Length          0000 (0)\n+229B9A Comment Length        0000 (0)\n+229B9C Disk Start            0000 (0)\n+229B9E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227CE8 Ext File Attributes   00000000 (0)\n-227CEC Local Header Offset   000EFAEA (981738)\n-227CF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229BA0 Ext File Attributes   00000000 (0)\n+229BA4 Local Header Offset   0010EBA5 (1108901)\n+229BA8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227CF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229BA8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227D31 CENTRAL HEADER #941   02014B50 (33639248)\n-227D35 Created Zip Spec      14 (20) '2.0'\n-227D36 Created OS            00 (0) 'MS-DOS'\n-227D37 Extract Zip Spec      14 (20) '2.0'\n-227D38 Extract OS            00 (0) 'MS-DOS'\n-227D39 General Purpose Flag  0808 (2056)\n+229BE4 CENTRAL HEADER #941   02014B50 (33639248)\n+229BE8 Created Zip Spec      14 (20) '2.0'\n+229BE9 Created OS            00 (0) 'MS-DOS'\n+229BEA Extract Zip Spec      14 (20) '2.0'\n+229BEB Extract OS            00 (0) 'MS-DOS'\n+229BEC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227D3B Compression Method    0008 (8) 'Deflated'\n-227D3D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227D41 CRC                   DB6423CF (3680773071)\n-227D45 Compressed Size       00000405 (1029)\n-227D49 Uncompressed Size     00000DEE (3566)\n-227D4D Filename Length       0037 (55)\n-227D4F Extra Length          0000 (0)\n-227D51 Comment Length        0000 (0)\n-227D53 Disk Start            0000 (0)\n-227D55 Int File Attributes   0000 (0)\n+229BEE Compression Method    0008 (8) 'Deflated'\n+229BF0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229BF4 CRC                   FE9FE6BA (4271892154)\n+229BF8 Compressed Size       00000261 (609)\n+229BFC Uncompressed Size     00000515 (1301)\n+229C00 Filename Length       003A (58)\n+229C02 Extra Length          0000 (0)\n+229C04 Comment Length        0000 (0)\n+229C06 Disk Start            0000 (0)\n+229C08 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227D57 Ext File Attributes   00000000 (0)\n-227D5B Local Header Offset   000EFF61 (982881)\n-227D5F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229C0A Ext File Attributes   00000000 (0)\n+229C0E Local Header Offset   0010EF45 (1109829)\n+229C12 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227D5F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229C12: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227D96 CENTRAL HEADER #942   02014B50 (33639248)\n-227D9A Created Zip Spec      14 (20) '2.0'\n-227D9B Created OS            00 (0) 'MS-DOS'\n-227D9C Extract Zip Spec      14 (20) '2.0'\n-227D9D Extract OS            00 (0) 'MS-DOS'\n-227D9E General Purpose Flag  0808 (2056)\n+229C4C CENTRAL HEADER #942   02014B50 (33639248)\n+229C50 Created Zip Spec      14 (20) '2.0'\n+229C51 Created OS            00 (0) 'MS-DOS'\n+229C52 Extract Zip Spec      14 (20) '2.0'\n+229C53 Extract OS            00 (0) 'MS-DOS'\n+229C54 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227DA0 Compression Method    0008 (8) 'Deflated'\n-227DA2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227DA6 CRC                   B4E5D367 (3034960743)\n-227DAA Compressed Size       0000091D (2333)\n-227DAE Uncompressed Size     00001DDA (7642)\n-227DB2 Filename Length       0035 (53)\n-227DB4 Extra Length          0000 (0)\n-227DB6 Comment Length        0000 (0)\n-227DB8 Disk Start            0000 (0)\n-227DBA Int File Attributes   0000 (0)\n+229C56 Compression Method    0008 (8) 'Deflated'\n+229C58 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229C5C CRC                   07F77085 (133656709)\n+229C60 Compressed Size       00000267 (615)\n+229C64 Uncompressed Size     000004F7 (1271)\n+229C68 Filename Length       0039 (57)\n+229C6A Extra Length          0000 (0)\n+229C6C Comment Length        0000 (0)\n+229C6E Disk Start            0000 (0)\n+229C70 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227DBC Ext File Attributes   00000000 (0)\n-227DC0 Local Header Offset   000F03CB (984011)\n-227DC4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229C72 Ext File Attributes   00000000 (0)\n+229C76 Local Header Offset   0010F20E (1110542)\n+229C7A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227DC4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229C7A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227DF9 CENTRAL HEADER #943   02014B50 (33639248)\n-227DFD Created Zip Spec      14 (20) '2.0'\n-227DFE Created OS            00 (0) 'MS-DOS'\n-227DFF Extract Zip Spec      14 (20) '2.0'\n-227E00 Extract OS            00 (0) 'MS-DOS'\n-227E01 General Purpose Flag  0808 (2056)\n+229CB3 CENTRAL HEADER #943   02014B50 (33639248)\n+229CB7 Created Zip Spec      14 (20) '2.0'\n+229CB8 Created OS            00 (0) 'MS-DOS'\n+229CB9 Extract Zip Spec      14 (20) '2.0'\n+229CBA Extract OS            00 (0) 'MS-DOS'\n+229CBB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227E03 Compression Method    0008 (8) 'Deflated'\n-227E05 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227E09 CRC                   602945D5 (1613317589)\n-227E0D Compressed Size       000003BA (954)\n-227E11 Uncompressed Size     000009C9 (2505)\n-227E15 Filename Length       0036 (54)\n-227E17 Extra Length          0000 (0)\n-227E19 Comment Length        0000 (0)\n-227E1B Disk Start            0000 (0)\n-227E1D Int File Attributes   0000 (0)\n+229CBD Compression Method    0008 (8) 'Deflated'\n+229CBF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229CC3 CRC                   334FA791 (860858257)\n+229CC7 Compressed Size       000003EB (1003)\n+229CCB Uncompressed Size     00000C9A (3226)\n+229CCF Filename Length       003A (58)\n+229CD1 Extra Length          0000 (0)\n+229CD3 Comment Length        0000 (0)\n+229CD5 Disk Start            0000 (0)\n+229CD7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227E1F Ext File Attributes   00000000 (0)\n-227E23 Local Header Offset   000F0D4B (986443)\n-227E27 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229CD9 Ext File Attributes   00000000 (0)\n+229CDD Local Header Offset   0010F4DC (1111260)\n+229CE1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227E27: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229CE1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227E5D CENTRAL HEADER #944   02014B50 (33639248)\n-227E61 Created Zip Spec      14 (20) '2.0'\n-227E62 Created OS            00 (0) 'MS-DOS'\n-227E63 Extract Zip Spec      14 (20) '2.0'\n-227E64 Extract OS            00 (0) 'MS-DOS'\n-227E65 General Purpose Flag  0808 (2056)\n+229D1B CENTRAL HEADER #944   02014B50 (33639248)\n+229D1F Created Zip Spec      14 (20) '2.0'\n+229D20 Created OS            00 (0) 'MS-DOS'\n+229D21 Extract Zip Spec      14 (20) '2.0'\n+229D22 Extract OS            00 (0) 'MS-DOS'\n+229D23 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227E67 Compression Method    0008 (8) 'Deflated'\n-227E69 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227E6D CRC                   D9BD9D3A (3653082426)\n-227E71 Compressed Size       00000278 (632)\n-227E75 Uncompressed Size     00000469 (1129)\n-227E79 Filename Length       0044 (68)\n-227E7B Extra Length          0000 (0)\n-227E7D Comment Length        0000 (0)\n-227E7F Disk Start            0000 (0)\n-227E81 Int File Attributes   0000 (0)\n+229D25 Compression Method    0008 (8) 'Deflated'\n+229D27 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229D2B CRC                   5C26FEE4 (1546059492)\n+229D2F Compressed Size       00000436 (1078)\n+229D33 Uncompressed Size     00000D57 (3415)\n+229D37 Filename Length       0039 (57)\n+229D39 Extra Length          0000 (0)\n+229D3B Comment Length        0000 (0)\n+229D3D Disk Start            0000 (0)\n+229D3F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227E83 Ext File Attributes   00000000 (0)\n-227E87 Local Header Offset   000F1169 (987497)\n-227E8B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229D41 Ext File Attributes   00000000 (0)\n+229D45 Local Header Offset   0010F92F (1112367)\n+229D49 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227E8B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229D49: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227ECF CENTRAL HEADER #945   02014B50 (33639248)\n-227ED3 Created Zip Spec      14 (20) '2.0'\n-227ED4 Created OS            00 (0) 'MS-DOS'\n-227ED5 Extract Zip Spec      14 (20) '2.0'\n-227ED6 Extract OS            00 (0) 'MS-DOS'\n-227ED7 General Purpose Flag  0808 (2056)\n+229D82 CENTRAL HEADER #945   02014B50 (33639248)\n+229D86 Created Zip Spec      14 (20) '2.0'\n+229D87 Created OS            00 (0) 'MS-DOS'\n+229D88 Extract Zip Spec      14 (20) '2.0'\n+229D89 Extract OS            00 (0) 'MS-DOS'\n+229D8A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227ED9 Compression Method    0008 (8) 'Deflated'\n-227EDB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227EDF CRC                   78792D26 (2021207334)\n-227EE3 Compressed Size       000002FE (766)\n-227EE7 Uncompressed Size     000006B5 (1717)\n-227EEB Filename Length       003C (60)\n-227EED Extra Length          0000 (0)\n-227EEF Comment Length        0000 (0)\n-227EF1 Disk Start            0000 (0)\n-227EF3 Int File Attributes   0000 (0)\n+229D8C Compression Method    0008 (8) 'Deflated'\n+229D8E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229D92 CRC                   00000000 (0)\n+229D96 Compressed Size       00000002 (2)\n+229D9A Uncompressed Size     00000000 (0)\n+229D9E Filename Length       001E (30)\n+229DA0 Extra Length          0000 (0)\n+229DA2 Comment Length        0000 (0)\n+229DA4 Disk Start            0000 (0)\n+229DA6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227EF5 Ext File Attributes   00000000 (0)\n-227EF9 Local Header Offset   000F1453 (988243)\n-227EFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229DA8 Ext File Attributes   00000000 (0)\n+229DAC Local Header Offset   0010FDCC (1113548)\n+229DB0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227EFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229DB0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227F39 CENTRAL HEADER #946   02014B50 (33639248)\n-227F3D Created Zip Spec      14 (20) '2.0'\n-227F3E Created OS            00 (0) 'MS-DOS'\n-227F3F Extract Zip Spec      14 (20) '2.0'\n-227F40 Extract OS            00 (0) 'MS-DOS'\n-227F41 General Purpose Flag  0808 (2056)\n+229DCE CENTRAL HEADER #946   02014B50 (33639248)\n+229DD2 Created Zip Spec      14 (20) '2.0'\n+229DD3 Created OS            00 (0) 'MS-DOS'\n+229DD4 Extract Zip Spec      14 (20) '2.0'\n+229DD5 Extract OS            00 (0) 'MS-DOS'\n+229DD6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227F43 Compression Method    0008 (8) 'Deflated'\n-227F45 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227F49 CRC                   A9090E7C (2835943036)\n-227F4D Compressed Size       000003C5 (965)\n-227F51 Uncompressed Size     00000C45 (3141)\n-227F55 Filename Length       0037 (55)\n-227F57 Extra Length          0000 (0)\n-227F59 Comment Length        0000 (0)\n-227F5B Disk Start            0000 (0)\n-227F5D Int File Attributes   0000 (0)\n+229DD8 Compression Method    0008 (8) 'Deflated'\n+229DDA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229DDE CRC                   EC8B751D (3968562461)\n+229DE2 Compressed Size       0000037F (895)\n+229DE6 Uncompressed Size     000008F6 (2294)\n+229DEA Filename Length       0033 (51)\n+229DEC Extra Length          0000 (0)\n+229DEE Comment Length        0000 (0)\n+229DF0 Disk Start            0000 (0)\n+229DF2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227F5F Ext File Attributes   00000000 (0)\n-227F63 Local Header Offset   000F17BB (989115)\n-227F67 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229DF4 Ext File Attributes   00000000 (0)\n+229DF8 Local Header Offset   0010FE1A (1113626)\n+229DFC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227F67: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229DFC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227F9E CENTRAL HEADER #947   02014B50 (33639248)\n-227FA2 Created Zip Spec      14 (20) '2.0'\n-227FA3 Created OS            00 (0) 'MS-DOS'\n-227FA4 Extract Zip Spec      14 (20) '2.0'\n-227FA5 Extract OS            00 (0) 'MS-DOS'\n-227FA6 General Purpose Flag  0808 (2056)\n+229E2F CENTRAL HEADER #947   02014B50 (33639248)\n+229E33 Created Zip Spec      14 (20) '2.0'\n+229E34 Created OS            00 (0) 'MS-DOS'\n+229E35 Extract Zip Spec      14 (20) '2.0'\n+229E36 Extract OS            00 (0) 'MS-DOS'\n+229E37 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-227FA8 Compression Method    0008 (8) 'Deflated'\n-227FAA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-227FAE CRC                   00000000 (0)\n-227FB2 Compressed Size       00000002 (2)\n-227FB6 Uncompressed Size     00000000 (0)\n-227FBA Filename Length       002A (42)\n-227FBC Extra Length          0000 (0)\n-227FBE Comment Length        0000 (0)\n-227FC0 Disk Start            0000 (0)\n-227FC2 Int File Attributes   0000 (0)\n+229E39 Compression Method    0008 (8) 'Deflated'\n+229E3B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229E3F CRC                   62F535FA (1660237306)\n+229E43 Compressed Size       00000980 (2432)\n+229E47 Uncompressed Size     00002022 (8226)\n+229E4B Filename Length       0032 (50)\n+229E4D Extra Length          0000 (0)\n+229E4F Comment Length        0000 (0)\n+229E51 Disk Start            0000 (0)\n+229E53 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-227FC4 Ext File Attributes   00000000 (0)\n-227FC8 Local Header Offset   000F1BE5 (990181)\n-227FCC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229E55 Ext File Attributes   00000000 (0)\n+229E59 Local Header Offset   001101FA (1114618)\n+229E5D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x227FCC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229E5D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-227FF6 CENTRAL HEADER #948   02014B50 (33639248)\n-227FFA Created Zip Spec      14 (20) '2.0'\n-227FFB Created OS            00 (0) 'MS-DOS'\n-227FFC Extract Zip Spec      14 (20) '2.0'\n-227FFD Extract OS            00 (0) 'MS-DOS'\n-227FFE General Purpose Flag  0808 (2056)\n+229E8F CENTRAL HEADER #948   02014B50 (33639248)\n+229E93 Created Zip Spec      14 (20) '2.0'\n+229E94 Created OS            00 (0) 'MS-DOS'\n+229E95 Extract Zip Spec      14 (20) '2.0'\n+229E96 Extract OS            00 (0) 'MS-DOS'\n+229E97 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228000 Compression Method    0008 (8) 'Deflated'\n-228002 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228006 CRC                   101D85B9 (270370233)\n-22800A Compressed Size       000003B3 (947)\n-22800E Uncompressed Size     0000094B (2379)\n-228012 Filename Length       003B (59)\n-228014 Extra Length          0000 (0)\n-228016 Comment Length        0000 (0)\n-228018 Disk Start            0000 (0)\n-22801A Int File Attributes   0000 (0)\n+229E99 Compression Method    0008 (8) 'Deflated'\n+229E9B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229E9F CRC                   56578DF7 (1448578551)\n+229EA3 Compressed Size       00000572 (1394)\n+229EA7 Uncompressed Size     00001172 (4466)\n+229EAB Filename Length       0033 (51)\n+229EAD Extra Length          0000 (0)\n+229EAF Comment Length        0000 (0)\n+229EB1 Disk Start            0000 (0)\n+229EB3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22801C Ext File Attributes   00000000 (0)\n-228020 Local Header Offset   000F1C3F (990271)\n-228024 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229EB5 Ext File Attributes   00000000 (0)\n+229EB9 Local Header Offset   00110BDA (1117146)\n+229EBD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228024: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229EBD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22805F CENTRAL HEADER #949   02014B50 (33639248)\n-228063 Created Zip Spec      14 (20) '2.0'\n-228064 Created OS            00 (0) 'MS-DOS'\n-228065 Extract Zip Spec      14 (20) '2.0'\n-228066 Extract OS            00 (0) 'MS-DOS'\n-228067 General Purpose Flag  0808 (2056)\n+229EF0 CENTRAL HEADER #949   02014B50 (33639248)\n+229EF4 Created Zip Spec      14 (20) '2.0'\n+229EF5 Created OS            00 (0) 'MS-DOS'\n+229EF6 Extract Zip Spec      14 (20) '2.0'\n+229EF7 Extract OS            00 (0) 'MS-DOS'\n+229EF8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228069 Compression Method    0008 (8) 'Deflated'\n-22806B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22806F CRC                   7EE6D15A (2129056090)\n-228073 Compressed Size       00000452 (1106)\n-228077 Uncompressed Size     00000D5E (3422)\n-22807B Filename Length       003D (61)\n-22807D Extra Length          0000 (0)\n-22807F Comment Length        0000 (0)\n-228081 Disk Start            0000 (0)\n-228083 Int File Attributes   0000 (0)\n+229EFA Compression Method    0008 (8) 'Deflated'\n+229EFC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229F00 CRC                   1140D3D7 (289461207)\n+229F04 Compressed Size       000008D2 (2258)\n+229F08 Uncompressed Size     000021E4 (8676)\n+229F0C Filename Length       0038 (56)\n+229F0E Extra Length          0000 (0)\n+229F10 Comment Length        0000 (0)\n+229F12 Disk Start            0000 (0)\n+229F14 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228085 Ext File Attributes   00000000 (0)\n-228089 Local Header Offset   000F205B (991323)\n-22808D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229F16 Ext File Attributes   00000000 (0)\n+229F1A Local Header Offset   001111AD (1118637)\n+229F1E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22808D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229F1E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2280CA CENTRAL HEADER #950   02014B50 (33639248)\n-2280CE Created Zip Spec      14 (20) '2.0'\n-2280CF Created OS            00 (0) 'MS-DOS'\n-2280D0 Extract Zip Spec      14 (20) '2.0'\n-2280D1 Extract OS            00 (0) 'MS-DOS'\n-2280D2 General Purpose Flag  0808 (2056)\n+229F56 CENTRAL HEADER #950   02014B50 (33639248)\n+229F5A Created Zip Spec      14 (20) '2.0'\n+229F5B Created OS            00 (0) 'MS-DOS'\n+229F5C Extract Zip Spec      14 (20) '2.0'\n+229F5D Extract OS            00 (0) 'MS-DOS'\n+229F5E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2280D4 Compression Method    0008 (8) 'Deflated'\n-2280D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2280DA CRC                   00000000 (0)\n-2280DE Compressed Size       00000002 (2)\n-2280E2 Uncompressed Size     00000000 (0)\n-2280E6 Filename Length       002F (47)\n-2280E8 Extra Length          0000 (0)\n-2280EA Comment Length        0000 (0)\n-2280EC Disk Start            0000 (0)\n-2280EE Int File Attributes   0000 (0)\n+229F60 Compression Method    0008 (8) 'Deflated'\n+229F62 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229F66 CRC                   B6A13567 (3064018279)\n+229F6A Compressed Size       0000050A (1290)\n+229F6E Uncompressed Size     00000FBC (4028)\n+229F72 Filename Length       0035 (53)\n+229F74 Extra Length          0000 (0)\n+229F76 Comment Length        0000 (0)\n+229F78 Disk Start            0000 (0)\n+229F7A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2280F0 Ext File Attributes   00000000 (0)\n-2280F4 Local Header Offset   000F2518 (992536)\n-2280F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229F7C Ext File Attributes   00000000 (0)\n+229F80 Local Header Offset   00111AE5 (1120997)\n+229F84 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2280F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229F84: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228127 CENTRAL HEADER #951   02014B50 (33639248)\n-22812B Created Zip Spec      14 (20) '2.0'\n-22812C Created OS            00 (0) 'MS-DOS'\n-22812D Extract Zip Spec      14 (20) '2.0'\n-22812E Extract OS            00 (0) 'MS-DOS'\n-22812F General Purpose Flag  0808 (2056)\n+229FB9 CENTRAL HEADER #951   02014B50 (33639248)\n+229FBD Created Zip Spec      14 (20) '2.0'\n+229FBE Created OS            00 (0) 'MS-DOS'\n+229FBF Extract Zip Spec      14 (20) '2.0'\n+229FC0 Extract OS            00 (0) 'MS-DOS'\n+229FC1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228131 Compression Method    0008 (8) 'Deflated'\n-228133 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228137 CRC                   A053D891 (2689849489)\n-22813B Compressed Size       00000471 (1137)\n-22813F Uncompressed Size     00001205 (4613)\n-228143 Filename Length       0048 (72)\n-228145 Extra Length          0000 (0)\n-228147 Comment Length        0000 (0)\n-228149 Disk Start            0000 (0)\n-22814B Int File Attributes   0000 (0)\n+229FC3 Compression Method    0008 (8) 'Deflated'\n+229FC5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+229FC9 CRC                   0A163D1E (169229598)\n+229FCD Compressed Size       00000444 (1092)\n+229FD1 Uncompressed Size     0000101E (4126)\n+229FD5 Filename Length       002D (45)\n+229FD7 Extra Length          0000 (0)\n+229FD9 Comment Length        0000 (0)\n+229FDB Disk Start            0000 (0)\n+229FDD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22814D Ext File Attributes   00000000 (0)\n-228151 Local Header Offset   000F2577 (992631)\n-228155 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+229FDF Ext File Attributes   00000000 (0)\n+229FE3 Local Header Offset   00112052 (1122386)\n+229FE7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228155: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x229FE7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22819D CENTRAL HEADER #952   02014B50 (33639248)\n-2281A1 Created Zip Spec      14 (20) '2.0'\n-2281A2 Created OS            00 (0) 'MS-DOS'\n-2281A3 Extract Zip Spec      14 (20) '2.0'\n-2281A4 Extract OS            00 (0) 'MS-DOS'\n-2281A5 General Purpose Flag  0808 (2056)\n+22A014 CENTRAL HEADER #952   02014B50 (33639248)\n+22A018 Created Zip Spec      14 (20) '2.0'\n+22A019 Created OS            00 (0) 'MS-DOS'\n+22A01A Extract Zip Spec      14 (20) '2.0'\n+22A01B Extract OS            00 (0) 'MS-DOS'\n+22A01C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2281A7 Compression Method    0008 (8) 'Deflated'\n-2281A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2281AD CRC                   F077FE2F (4034395695)\n-2281B1 Compressed Size       0000031E (798)\n-2281B5 Uncompressed Size     000007C3 (1987)\n-2281B9 Filename Length       0043 (67)\n-2281BB Extra Length          0000 (0)\n-2281BD Comment Length        0000 (0)\n-2281BF Disk Start            0000 (0)\n-2281C1 Int File Attributes   0000 (0)\n+22A01E Compression Method    0008 (8) 'Deflated'\n+22A020 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A024 CRC                   873A5673 (2268747379)\n+22A028 Compressed Size       000002EA (746)\n+22A02C Uncompressed Size     0000072D (1837)\n+22A030 Filename Length       0031 (49)\n+22A032 Extra Length          0000 (0)\n+22A034 Comment Length        0000 (0)\n+22A036 Disk Start            0000 (0)\n+22A038 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2281C3 Ext File Attributes   00000000 (0)\n-2281C7 Local Header Offset   000F2A5E (993886)\n-2281CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A03A Ext File Attributes   00000000 (0)\n+22A03E Local Header Offset   001124F1 (1123569)\n+22A042 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2281CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A042: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22820E CENTRAL HEADER #953   02014B50 (33639248)\n-228212 Created Zip Spec      14 (20) '2.0'\n-228213 Created OS            00 (0) 'MS-DOS'\n-228214 Extract Zip Spec      14 (20) '2.0'\n-228215 Extract OS            00 (0) 'MS-DOS'\n-228216 General Purpose Flag  0808 (2056)\n+22A073 CENTRAL HEADER #953   02014B50 (33639248)\n+22A077 Created Zip Spec      14 (20) '2.0'\n+22A078 Created OS            00 (0) 'MS-DOS'\n+22A079 Extract Zip Spec      14 (20) '2.0'\n+22A07A Extract OS            00 (0) 'MS-DOS'\n+22A07B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228218 Compression Method    0008 (8) 'Deflated'\n-22821A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22821E CRC                   F135EAA5 (4046842533)\n-228222 Compressed Size       0000068C (1676)\n-228226 Uncompressed Size     000014BA (5306)\n-22822A Filename Length       0049 (73)\n-22822C Extra Length          0000 (0)\n-22822E Comment Length        0000 (0)\n-228230 Disk Start            0000 (0)\n-228232 Int File Attributes   0000 (0)\n+22A07D Compression Method    0008 (8) 'Deflated'\n+22A07F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A083 CRC                   B63E72D7 (3057545943)\n+22A087 Compressed Size       0000049E (1182)\n+22A08B Uncompressed Size     00000D50 (3408)\n+22A08F Filename Length       0038 (56)\n+22A091 Extra Length          0000 (0)\n+22A093 Comment Length        0000 (0)\n+22A095 Disk Start            0000 (0)\n+22A097 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228234 Ext File Attributes   00000000 (0)\n-228238 Local Header Offset   000F2DED (994797)\n-22823C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A099 Ext File Attributes   00000000 (0)\n+22A09D Local Header Offset   0011283A (1124410)\n+22A0A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22823C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A0A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228285 CENTRAL HEADER #954   02014B50 (33639248)\n-228289 Created Zip Spec      14 (20) '2.0'\n-22828A Created OS            00 (0) 'MS-DOS'\n-22828B Extract Zip Spec      14 (20) '2.0'\n-22828C Extract OS            00 (0) 'MS-DOS'\n-22828D General Purpose Flag  0808 (2056)\n+22A0D9 CENTRAL HEADER #954   02014B50 (33639248)\n+22A0DD Created Zip Spec      14 (20) '2.0'\n+22A0DE Created OS            00 (0) 'MS-DOS'\n+22A0DF Extract Zip Spec      14 (20) '2.0'\n+22A0E0 Extract OS            00 (0) 'MS-DOS'\n+22A0E1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22828F Compression Method    0008 (8) 'Deflated'\n-228291 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228295 CRC                   00000000 (0)\n-228299 Compressed Size       00000002 (2)\n-22829D Uncompressed Size     00000000 (0)\n-2282A1 Filename Length       0033 (51)\n-2282A3 Extra Length          0000 (0)\n-2282A5 Comment Length        0000 (0)\n-2282A7 Disk Start            0000 (0)\n-2282A9 Int File Attributes   0000 (0)\n+22A0E3 Compression Method    0008 (8) 'Deflated'\n+22A0E5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A0E9 CRC                   C40EC84E (3289303118)\n+22A0ED Compressed Size       00000434 (1076)\n+22A0F1 Uncompressed Size     00000D18 (3352)\n+22A0F5 Filename Length       003A (58)\n+22A0F7 Extra Length          0000 (0)\n+22A0F9 Comment Length        0000 (0)\n+22A0FB Disk Start            0000 (0)\n+22A0FD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2282AB Ext File Attributes   00000000 (0)\n-2282AF Local Header Offset   000F34F0 (996592)\n-2282B3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A0FF Ext File Attributes   00000000 (0)\n+22A103 Local Header Offset   00112D3E (1125694)\n+22A107 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2282B3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A107: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2282E6 CENTRAL HEADER #955   02014B50 (33639248)\n-2282EA Created Zip Spec      14 (20) '2.0'\n-2282EB Created OS            00 (0) 'MS-DOS'\n-2282EC Extract Zip Spec      14 (20) '2.0'\n-2282ED Extract OS            00 (0) 'MS-DOS'\n-2282EE General Purpose Flag  0808 (2056)\n+22A141 CENTRAL HEADER #955   02014B50 (33639248)\n+22A145 Created Zip Spec      14 (20) '2.0'\n+22A146 Created OS            00 (0) 'MS-DOS'\n+22A147 Extract Zip Spec      14 (20) '2.0'\n+22A148 Extract OS            00 (0) 'MS-DOS'\n+22A149 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2282F0 Compression Method    0008 (8) 'Deflated'\n-2282F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2282F6 CRC                   32EFA1AA (854565290)\n-2282FA Compressed Size       00000406 (1030)\n-2282FE Uncompressed Size     00000E18 (3608)\n-228302 Filename Length       0049 (73)\n-228304 Extra Length          0000 (0)\n-228306 Comment Length        0000 (0)\n-228308 Disk Start            0000 (0)\n-22830A Int File Attributes   0000 (0)\n+22A14B Compression Method    0008 (8) 'Deflated'\n+22A14D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A151 CRC                   00000000 (0)\n+22A155 Compressed Size       00000002 (2)\n+22A159 Uncompressed Size     00000000 (0)\n+22A15D Filename Length       0024 (36)\n+22A15F Extra Length          0000 (0)\n+22A161 Comment Length        0000 (0)\n+22A163 Disk Start            0000 (0)\n+22A165 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22830C Ext File Attributes   00000000 (0)\n-228310 Local Header Offset   000F3553 (996691)\n-228314 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A167 Ext File Attributes   00000000 (0)\n+22A16B Local Header Offset   001131DA (1126874)\n+22A16F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228314: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A16F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22835D CENTRAL HEADER #956   02014B50 (33639248)\n-228361 Created Zip Spec      14 (20) '2.0'\n-228362 Created OS            00 (0) 'MS-DOS'\n-228363 Extract Zip Spec      14 (20) '2.0'\n-228364 Extract OS            00 (0) 'MS-DOS'\n-228365 General Purpose Flag  0808 (2056)\n+22A193 CENTRAL HEADER #956   02014B50 (33639248)\n+22A197 Created Zip Spec      14 (20) '2.0'\n+22A198 Created OS            00 (0) 'MS-DOS'\n+22A199 Extract Zip Spec      14 (20) '2.0'\n+22A19A Extract OS            00 (0) 'MS-DOS'\n+22A19B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228367 Compression Method    0008 (8) 'Deflated'\n-228369 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22836D CRC                   40313D69 (1076968809)\n-228371 Compressed Size       0000029A (666)\n-228375 Uncompressed Size     00000521 (1313)\n-228379 Filename Length       0045 (69)\n-22837B Extra Length          0000 (0)\n-22837D Comment Length        0000 (0)\n-22837F Disk Start            0000 (0)\n-228381 Int File Attributes   0000 (0)\n+22A19D Compression Method    0008 (8) 'Deflated'\n+22A19F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A1A3 CRC                   3F21380C (1059141644)\n+22A1A7 Compressed Size       000004D3 (1235)\n+22A1AB Uncompressed Size     00000E11 (3601)\n+22A1AF Filename Length       0036 (54)\n+22A1B1 Extra Length          0000 (0)\n+22A1B3 Comment Length        0000 (0)\n+22A1B5 Disk Start            0000 (0)\n+22A1B7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228383 Ext File Attributes   00000000 (0)\n-228387 Local Header Offset   000F39D0 (997840)\n-22838B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A1B9 Ext File Attributes   00000000 (0)\n+22A1BD Local Header Offset   0011322E (1126958)\n+22A1C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22838B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A1C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2283D0 CENTRAL HEADER #957   02014B50 (33639248)\n-2283D4 Created Zip Spec      14 (20) '2.0'\n-2283D5 Created OS            00 (0) 'MS-DOS'\n-2283D6 Extract Zip Spec      14 (20) '2.0'\n-2283D7 Extract OS            00 (0) 'MS-DOS'\n-2283D8 General Purpose Flag  0808 (2056)\n+22A1F7 CENTRAL HEADER #957   02014B50 (33639248)\n+22A1FB Created Zip Spec      14 (20) '2.0'\n+22A1FC Created OS            00 (0) 'MS-DOS'\n+22A1FD Extract Zip Spec      14 (20) '2.0'\n+22A1FE Extract OS            00 (0) 'MS-DOS'\n+22A1FF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2283DA Compression Method    0008 (8) 'Deflated'\n-2283DC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2283E0 CRC                   00000000 (0)\n-2283E4 Compressed Size       00000002 (2)\n-2283E8 Uncompressed Size     00000000 (0)\n-2283EC Filename Length       003A (58)\n-2283EE Extra Length          0000 (0)\n-2283F0 Comment Length        0000 (0)\n-2283F2 Disk Start            0000 (0)\n-2283F4 Int File Attributes   0000 (0)\n+22A201 Compression Method    0008 (8) 'Deflated'\n+22A203 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A207 CRC                   49F89DC8 (1241030088)\n+22A20B Compressed Size       0000023F (575)\n+22A20F Uncompressed Size     0000041E (1054)\n+22A213 Filename Length       0035 (53)\n+22A215 Extra Length          0000 (0)\n+22A217 Comment Length        0000 (0)\n+22A219 Disk Start            0000 (0)\n+22A21B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2283F6 Ext File Attributes   00000000 (0)\n-2283FA Local Header Offset   000F3CDD (998621)\n-2283FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A21D Ext File Attributes   00000000 (0)\n+22A221 Local Header Offset   00113765 (1128293)\n+22A225 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2283FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A225: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228438 CENTRAL HEADER #958   02014B50 (33639248)\n-22843C Created Zip Spec      14 (20) '2.0'\n-22843D Created OS            00 (0) 'MS-DOS'\n-22843E Extract Zip Spec      14 (20) '2.0'\n-22843F Extract OS            00 (0) 'MS-DOS'\n-228440 General Purpose Flag  0808 (2056)\n+22A25A CENTRAL HEADER #958   02014B50 (33639248)\n+22A25E Created Zip Spec      14 (20) '2.0'\n+22A25F Created OS            00 (0) 'MS-DOS'\n+22A260 Extract Zip Spec      14 (20) '2.0'\n+22A261 Extract OS            00 (0) 'MS-DOS'\n+22A262 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228442 Compression Method    0008 (8) 'Deflated'\n-228444 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228448 CRC                   956AD47E (2506806398)\n-22844C Compressed Size       00000605 (1541)\n-228450 Uncompressed Size     000014D1 (5329)\n-228454 Filename Length       005E (94)\n-228456 Extra Length          0000 (0)\n-228458 Comment Length        0000 (0)\n-22845A Disk Start            0000 (0)\n-22845C Int File Attributes   0000 (0)\n+22A264 Compression Method    0008 (8) 'Deflated'\n+22A266 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A26A CRC                   00000000 (0)\n+22A26E Compressed Size       00000002 (2)\n+22A272 Uncompressed Size     00000000 (0)\n+22A276 Filename Length       001B (27)\n+22A278 Extra Length          0000 (0)\n+22A27A Comment Length        0000 (0)\n+22A27C Disk Start            0000 (0)\n+22A27E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22845E Ext File Attributes   00000000 (0)\n-228462 Local Header Offset   000F3D47 (998727)\n-228466 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A280 Ext File Attributes   00000000 (0)\n+22A284 Local Header Offset   00113A07 (1128967)\n+22A288 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228466: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A288: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2284C4 CENTRAL HEADER #959   02014B50 (33639248)\n-2284C8 Created Zip Spec      14 (20) '2.0'\n-2284C9 Created OS            00 (0) 'MS-DOS'\n-2284CA Extract Zip Spec      14 (20) '2.0'\n-2284CB Extract OS            00 (0) 'MS-DOS'\n-2284CC General Purpose Flag  0808 (2056)\n+22A2A3 CENTRAL HEADER #959   02014B50 (33639248)\n+22A2A7 Created Zip Spec      14 (20) '2.0'\n+22A2A8 Created OS            00 (0) 'MS-DOS'\n+22A2A9 Extract Zip Spec      14 (20) '2.0'\n+22A2AA Extract OS            00 (0) 'MS-DOS'\n+22A2AB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2284CE Compression Method    0008 (8) 'Deflated'\n-2284D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2284D4 CRC                   5474BB92 (1416936338)\n-2284D8 Compressed Size       0000029F (671)\n-2284DC Uncompressed Size     00000551 (1361)\n-2284E0 Filename Length       005A (90)\n-2284E2 Extra Length          0000 (0)\n-2284E4 Comment Length        0000 (0)\n-2284E6 Disk Start            0000 (0)\n-2284E8 Int File Attributes   0000 (0)\n+22A2AD Compression Method    0008 (8) 'Deflated'\n+22A2AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A2B3 CRC                   E40DEA4B (3826117195)\n+22A2B7 Compressed Size       000004B6 (1206)\n+22A2BB Uncompressed Size     00000CAE (3246)\n+22A2BF Filename Length       0034 (52)\n+22A2C1 Extra Length          0000 (0)\n+22A2C3 Comment Length        0000 (0)\n+22A2C5 Disk Start            0000 (0)\n+22A2C7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2284EA Ext File Attributes   00000000 (0)\n-2284EE Local Header Offset   000F43D8 (1000408)\n-2284F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A2C9 Ext File Attributes   00000000 (0)\n+22A2CD Local Header Offset   00113A52 (1129042)\n+22A2D1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2284F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A2D1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22854C CENTRAL HEADER #960   02014B50 (33639248)\n-228550 Created Zip Spec      14 (20) '2.0'\n-228551 Created OS            00 (0) 'MS-DOS'\n-228552 Extract Zip Spec      14 (20) '2.0'\n-228553 Extract OS            00 (0) 'MS-DOS'\n-228554 General Purpose Flag  0808 (2056)\n+22A305 CENTRAL HEADER #960   02014B50 (33639248)\n+22A309 Created Zip Spec      14 (20) '2.0'\n+22A30A Created OS            00 (0) 'MS-DOS'\n+22A30B Extract Zip Spec      14 (20) '2.0'\n+22A30C Extract OS            00 (0) 'MS-DOS'\n+22A30D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228556 Compression Method    0008 (8) 'Deflated'\n-228558 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22855C CRC                   00000000 (0)\n-228560 Compressed Size       00000002 (2)\n-228564 Uncompressed Size     00000000 (0)\n-228568 Filename Length       0036 (54)\n-22856A Extra Length          0000 (0)\n-22856C Comment Length        0000 (0)\n-22856E Disk Start            0000 (0)\n-228570 Int File Attributes   0000 (0)\n+22A30F Compression Method    0008 (8) 'Deflated'\n+22A311 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A315 CRC                   09E32673 (165881459)\n+22A319 Compressed Size       0000066E (1646)\n+22A31D Uncompressed Size     0000136F (4975)\n+22A321 Filename Length       0034 (52)\n+22A323 Extra Length          0000 (0)\n+22A325 Comment Length        0000 (0)\n+22A327 Disk Start            0000 (0)\n+22A329 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228572 Ext File Attributes   00000000 (0)\n-228576 Local Header Offset   000F46FF (1001215)\n-22857A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A32B Ext File Attributes   00000000 (0)\n+22A32F Local Header Offset   00113F6A (1130346)\n+22A333 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22857A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A333: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2285B0 CENTRAL HEADER #961   02014B50 (33639248)\n-2285B4 Created Zip Spec      14 (20) '2.0'\n-2285B5 Created OS            00 (0) 'MS-DOS'\n-2285B6 Extract Zip Spec      14 (20) '2.0'\n-2285B7 Extract OS            00 (0) 'MS-DOS'\n-2285B8 General Purpose Flag  0808 (2056)\n+22A367 CENTRAL HEADER #961   02014B50 (33639248)\n+22A36B Created Zip Spec      14 (20) '2.0'\n+22A36C Created OS            00 (0) 'MS-DOS'\n+22A36D Extract Zip Spec      14 (20) '2.0'\n+22A36E Extract OS            00 (0) 'MS-DOS'\n+22A36F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2285BA Compression Method    0008 (8) 'Deflated'\n-2285BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2285C0 CRC                   F2C441AD (4072948141)\n-2285C4 Compressed Size       00000383 (899)\n-2285C8 Uncompressed Size     000008B3 (2227)\n-2285CC Filename Length       004F (79)\n-2285CE Extra Length          0000 (0)\n-2285D0 Comment Length        0000 (0)\n-2285D2 Disk Start            0000 (0)\n-2285D4 Int File Attributes   0000 (0)\n+22A371 Compression Method    0008 (8) 'Deflated'\n+22A373 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A377 CRC                   BE828C08 (3196226568)\n+22A37B Compressed Size       0000054D (1357)\n+22A37F Uncompressed Size     00000F73 (3955)\n+22A383 Filename Length       0038 (56)\n+22A385 Extra Length          0000 (0)\n+22A387 Comment Length        0000 (0)\n+22A389 Disk Start            0000 (0)\n+22A38B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2285D6 Ext File Attributes   00000000 (0)\n-2285DA Local Header Offset   000F4765 (1001317)\n-2285DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A38D Ext File Attributes   00000000 (0)\n+22A391 Local Header Offset   0011463A (1132090)\n+22A395 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2285DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A395: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22862D CENTRAL HEADER #962   02014B50 (33639248)\n-228631 Created Zip Spec      14 (20) '2.0'\n-228632 Created OS            00 (0) 'MS-DOS'\n-228633 Extract Zip Spec      14 (20) '2.0'\n-228634 Extract OS            00 (0) 'MS-DOS'\n-228635 General Purpose Flag  0808 (2056)\n+22A3CD CENTRAL HEADER #962   02014B50 (33639248)\n+22A3D1 Created Zip Spec      14 (20) '2.0'\n+22A3D2 Created OS            00 (0) 'MS-DOS'\n+22A3D3 Extract Zip Spec      14 (20) '2.0'\n+22A3D4 Extract OS            00 (0) 'MS-DOS'\n+22A3D5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228637 Compression Method    0008 (8) 'Deflated'\n-228639 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22863D CRC                   E0C2D2A3 (3770864291)\n-228641 Compressed Size       00000285 (645)\n-228645 Uncompressed Size     000004FE (1278)\n-228649 Filename Length       004B (75)\n-22864B Extra Length          0000 (0)\n-22864D Comment Length        0000 (0)\n-22864F Disk Start            0000 (0)\n-228651 Int File Attributes   0000 (0)\n+22A3D7 Compression Method    0008 (8) 'Deflated'\n+22A3D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A3DD CRC                   00000000 (0)\n+22A3E1 Compressed Size       00000002 (2)\n+22A3E5 Uncompressed Size     00000000 (0)\n+22A3E9 Filename Length       0025 (37)\n+22A3EB Extra Length          0000 (0)\n+22A3ED Comment Length        0000 (0)\n+22A3EF Disk Start            0000 (0)\n+22A3F1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228653 Ext File Attributes   00000000 (0)\n-228657 Local Header Offset   000F4B65 (1002341)\n-22865B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A3F3 Ext File Attributes   00000000 (0)\n+22A3F7 Local Header Offset   00114BED (1133549)\n+22A3FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22865B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A3FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2286A6 CENTRAL HEADER #963   02014B50 (33639248)\n-2286AA Created Zip Spec      14 (20) '2.0'\n-2286AB Created OS            00 (0) 'MS-DOS'\n-2286AC Extract Zip Spec      14 (20) '2.0'\n-2286AD Extract OS            00 (0) 'MS-DOS'\n-2286AE General Purpose Flag  0808 (2056)\n+22A420 CENTRAL HEADER #963   02014B50 (33639248)\n+22A424 Created Zip Spec      14 (20) '2.0'\n+22A425 Created OS            00 (0) 'MS-DOS'\n+22A426 Extract Zip Spec      14 (20) '2.0'\n+22A427 Extract OS            00 (0) 'MS-DOS'\n+22A428 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2286B0 Compression Method    0008 (8) 'Deflated'\n-2286B2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2286B6 CRC                   00000000 (0)\n-2286BA Compressed Size       00000002 (2)\n-2286BE Uncompressed Size     00000000 (0)\n-2286C2 Filename Length       0039 (57)\n-2286C4 Extra Length          0000 (0)\n-2286C6 Comment Length        0000 (0)\n-2286C8 Disk Start            0000 (0)\n-2286CA Int File Attributes   0000 (0)\n+22A42A Compression Method    0008 (8) 'Deflated'\n+22A42C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A430 CRC                   33B08A9A (867207834)\n+22A434 Compressed Size       000003CA (970)\n+22A438 Uncompressed Size     000008F0 (2288)\n+22A43C Filename Length       003F (63)\n+22A43E Extra Length          0000 (0)\n+22A440 Comment Length        0000 (0)\n+22A442 Disk Start            0000 (0)\n+22A444 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2286CC Ext File Attributes   00000000 (0)\n-2286D0 Local Header Offset   000F4E63 (1003107)\n-2286D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A446 Ext File Attributes   00000000 (0)\n+22A44A Local Header Offset   00114C42 (1133634)\n+22A44E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2286D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A44E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22870D CENTRAL HEADER #964   02014B50 (33639248)\n-228711 Created Zip Spec      14 (20) '2.0'\n-228712 Created OS            00 (0) 'MS-DOS'\n-228713 Extract Zip Spec      14 (20) '2.0'\n-228714 Extract OS            00 (0) 'MS-DOS'\n-228715 General Purpose Flag  0808 (2056)\n+22A48D CENTRAL HEADER #964   02014B50 (33639248)\n+22A491 Created Zip Spec      14 (20) '2.0'\n+22A492 Created OS            00 (0) 'MS-DOS'\n+22A493 Extract Zip Spec      14 (20) '2.0'\n+22A494 Extract OS            00 (0) 'MS-DOS'\n+22A495 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228717 Compression Method    0008 (8) 'Deflated'\n-228719 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22871D CRC                   9D8FBCBD (2643442877)\n-228721 Compressed Size       000004CD (1229)\n-228725 Uncompressed Size     00000C4B (3147)\n-228729 Filename Length       0055 (85)\n-22872B Extra Length          0000 (0)\n-22872D Comment Length        0000 (0)\n-22872F Disk Start            0000 (0)\n-228731 Int File Attributes   0000 (0)\n+22A497 Compression Method    0008 (8) 'Deflated'\n+22A499 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A49D CRC                   00000000 (0)\n+22A4A1 Compressed Size       00000002 (2)\n+22A4A5 Uncompressed Size     00000000 (0)\n+22A4A9 Filename Length       001F (31)\n+22A4AB Extra Length          0000 (0)\n+22A4AD Comment Length        0000 (0)\n+22A4AF Disk Start            0000 (0)\n+22A4B1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228733 Ext File Attributes   00000000 (0)\n-228737 Local Header Offset   000F4ECC (1003212)\n-22873B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A4B3 Ext File Attributes   00000000 (0)\n+22A4B7 Local Header Offset   00115079 (1134713)\n+22A4BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22873B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A4BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228790 CENTRAL HEADER #965   02014B50 (33639248)\n-228794 Created Zip Spec      14 (20) '2.0'\n-228795 Created OS            00 (0) 'MS-DOS'\n-228796 Extract Zip Spec      14 (20) '2.0'\n-228797 Extract OS            00 (0) 'MS-DOS'\n-228798 General Purpose Flag  0808 (2056)\n+22A4DA CENTRAL HEADER #965   02014B50 (33639248)\n+22A4DE Created Zip Spec      14 (20) '2.0'\n+22A4DF Created OS            00 (0) 'MS-DOS'\n+22A4E0 Extract Zip Spec      14 (20) '2.0'\n+22A4E1 Extract OS            00 (0) 'MS-DOS'\n+22A4E2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22879A Compression Method    0008 (8) 'Deflated'\n-22879C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2287A0 CRC                   DF933BA4 (3750968228)\n-2287A4 Compressed Size       000002AA (682)\n-2287A8 Uncompressed Size     00000555 (1365)\n-2287AC Filename Length       0051 (81)\n-2287AE Extra Length          0000 (0)\n-2287B0 Comment Length        0000 (0)\n-2287B2 Disk Start            0000 (0)\n-2287B4 Int File Attributes   0000 (0)\n+22A4E4 Compression Method    0008 (8) 'Deflated'\n+22A4E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A4EA CRC                   776F6B16 (2003790614)\n+22A4EE Compressed Size       00000391 (913)\n+22A4F2 Uncompressed Size     0000084C (2124)\n+22A4F6 Filename Length       0033 (51)\n+22A4F8 Extra Length          0000 (0)\n+22A4FA Comment Length        0000 (0)\n+22A4FC Disk Start            0000 (0)\n+22A4FE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2287B6 Ext File Attributes   00000000 (0)\n-2287BA Local Header Offset   000F541C (1004572)\n-2287BE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A500 Ext File Attributes   00000000 (0)\n+22A504 Local Header Offset   001150C8 (1134792)\n+22A508 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2287BE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A508: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22880F CENTRAL HEADER #966   02014B50 (33639248)\n-228813 Created Zip Spec      14 (20) '2.0'\n-228814 Created OS            00 (0) 'MS-DOS'\n-228815 Extract Zip Spec      14 (20) '2.0'\n-228816 Extract OS            00 (0) 'MS-DOS'\n-228817 General Purpose Flag  0808 (2056)\n+22A53B CENTRAL HEADER #966   02014B50 (33639248)\n+22A53F Created Zip Spec      14 (20) '2.0'\n+22A540 Created OS            00 (0) 'MS-DOS'\n+22A541 Extract Zip Spec      14 (20) '2.0'\n+22A542 Extract OS            00 (0) 'MS-DOS'\n+22A543 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228819 Compression Method    0008 (8) 'Deflated'\n-22881B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22881F CRC                   00000000 (0)\n-228823 Compressed Size       00000002 (2)\n-228827 Uncompressed Size     00000000 (0)\n-22882B Filename Length       0037 (55)\n-22882D Extra Length          0000 (0)\n-22882F Comment Length        0000 (0)\n-228831 Disk Start            0000 (0)\n-228833 Int File Attributes   0000 (0)\n+22A545 Compression Method    0008 (8) 'Deflated'\n+22A547 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A54B CRC                   00000000 (0)\n+22A54F Compressed Size       00000002 (2)\n+22A553 Uncompressed Size     00000000 (0)\n+22A557 Filename Length       0023 (35)\n+22A559 Extra Length          0000 (0)\n+22A55B Comment Length        0000 (0)\n+22A55D Disk Start            0000 (0)\n+22A55F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228835 Ext File Attributes   00000000 (0)\n-228839 Local Header Offset   000F5745 (1005381)\n-22883D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A561 Ext File Attributes   00000000 (0)\n+22A565 Local Header Offset   001154BA (1135802)\n+22A569 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22883D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A569: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228874 CENTRAL HEADER #967   02014B50 (33639248)\n-228878 Created Zip Spec      14 (20) '2.0'\n-228879 Created OS            00 (0) 'MS-DOS'\n-22887A Extract Zip Spec      14 (20) '2.0'\n-22887B Extract OS            00 (0) 'MS-DOS'\n-22887C General Purpose Flag  0808 (2056)\n+22A58C CENTRAL HEADER #967   02014B50 (33639248)\n+22A590 Created Zip Spec      14 (20) '2.0'\n+22A591 Created OS            00 (0) 'MS-DOS'\n+22A592 Extract Zip Spec      14 (20) '2.0'\n+22A593 Extract OS            00 (0) 'MS-DOS'\n+22A594 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22887E Compression Method    0008 (8) 'Deflated'\n-228880 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228884 CRC                   5CADB8BA (1554888890)\n-228888 Compressed Size       0000039E (926)\n-22888C Uncompressed Size     00000910 (2320)\n-228890 Filename Length       0055 (85)\n-228892 Extra Length          0000 (0)\n-228894 Comment Length        0000 (0)\n-228896 Disk Start            0000 (0)\n-228898 Int File Attributes   0000 (0)\n+22A596 Compression Method    0008 (8) 'Deflated'\n+22A598 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A59C CRC                   A1EB5EED (2716557037)\n+22A5A0 Compressed Size       000006D3 (1747)\n+22A5A4 Uncompressed Size     000016D2 (5842)\n+22A5A8 Filename Length       003F (63)\n+22A5AA Extra Length          0000 (0)\n+22A5AC Comment Length        0000 (0)\n+22A5AE Disk Start            0000 (0)\n+22A5B0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22889A Ext File Attributes   00000000 (0)\n-22889E Local Header Offset   000F57AC (1005484)\n-2288A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A5B2 Ext File Attributes   00000000 (0)\n+22A5B6 Local Header Offset   0011550D (1135885)\n+22A5BA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2288A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A5BA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2288F7 CENTRAL HEADER #968   02014B50 (33639248)\n-2288FB Created Zip Spec      14 (20) '2.0'\n-2288FC Created OS            00 (0) 'MS-DOS'\n-2288FD Extract Zip Spec      14 (20) '2.0'\n-2288FE Extract OS            00 (0) 'MS-DOS'\n-2288FF General Purpose Flag  0808 (2056)\n+22A5F9 CENTRAL HEADER #968   02014B50 (33639248)\n+22A5FD Created Zip Spec      14 (20) '2.0'\n+22A5FE Created OS            00 (0) 'MS-DOS'\n+22A5FF Extract Zip Spec      14 (20) '2.0'\n+22A600 Extract OS            00 (0) 'MS-DOS'\n+22A601 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228901 Compression Method    0008 (8) 'Deflated'\n-228903 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228907 CRC                   897FB906 (2306849030)\n-22890B Compressed Size       000002A3 (675)\n-22890F Uncompressed Size     00000546 (1350)\n-228913 Filename Length       0051 (81)\n-228915 Extra Length          0000 (0)\n-228917 Comment Length        0000 (0)\n-228919 Disk Start            0000 (0)\n-22891B Int File Attributes   0000 (0)\n+22A603 Compression Method    0008 (8) 'Deflated'\n+22A605 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A609 CRC                   93BDDA62 (2478692962)\n+22A60D Compressed Size       0000094C (2380)\n+22A611 Uncompressed Size     00002000 (8192)\n+22A615 Filename Length       002F (47)\n+22A617 Extra Length          0000 (0)\n+22A619 Comment Length        0000 (0)\n+22A61B Disk Start            0000 (0)\n+22A61D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22891D Ext File Attributes   00000000 (0)\n-228921 Local Header Offset   000F5BCD (1006541)\n-228925 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A61F Ext File Attributes   00000000 (0)\n+22A623 Local Header Offset   00115C4D (1137741)\n+22A627 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228925: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A627: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228976 CENTRAL HEADER #969   02014B50 (33639248)\n-22897A Created Zip Spec      14 (20) '2.0'\n-22897B Created OS            00 (0) 'MS-DOS'\n-22897C Extract Zip Spec      14 (20) '2.0'\n-22897D Extract OS            00 (0) 'MS-DOS'\n-22897E General Purpose Flag  0808 (2056)\n+22A656 CENTRAL HEADER #969   02014B50 (33639248)\n+22A65A Created Zip Spec      14 (20) '2.0'\n+22A65B Created OS            00 (0) 'MS-DOS'\n+22A65C Extract Zip Spec      14 (20) '2.0'\n+22A65D Extract OS            00 (0) 'MS-DOS'\n+22A65E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228980 Compression Method    0008 (8) 'Deflated'\n-228982 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228986 CRC                   00000000 (0)\n-22898A Compressed Size       00000002 (2)\n-22898E Uncompressed Size     00000000 (0)\n-228992 Filename Length       0020 (32)\n-228994 Extra Length          0000 (0)\n-228996 Comment Length        0000 (0)\n-228998 Disk Start            0000 (0)\n-22899A Int File Attributes   0000 (0)\n+22A660 Compression Method    0008 (8) 'Deflated'\n+22A662 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A666 CRC                   E459791A (3831068954)\n+22A66A Compressed Size       00000B02 (2818)\n+22A66E Uncompressed Size     00002B55 (11093)\n+22A672 Filename Length       002D (45)\n+22A674 Extra Length          0000 (0)\n+22A676 Comment Length        0000 (0)\n+22A678 Disk Start            0000 (0)\n+22A67A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22899C Ext File Attributes   00000000 (0)\n-2289A0 Local Header Offset   000F5EEF (1007343)\n-2289A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A67C Ext File Attributes   00000000 (0)\n+22A680 Local Header Offset   001165F6 (1140214)\n+22A684 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2289A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A684: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2289C4 CENTRAL HEADER #970   02014B50 (33639248)\n-2289C8 Created Zip Spec      14 (20) '2.0'\n-2289C9 Created OS            00 (0) 'MS-DOS'\n-2289CA Extract Zip Spec      14 (20) '2.0'\n-2289CB Extract OS            00 (0) 'MS-DOS'\n-2289CC General Purpose Flag  0808 (2056)\n+22A6B1 CENTRAL HEADER #970   02014B50 (33639248)\n+22A6B5 Created Zip Spec      14 (20) '2.0'\n+22A6B6 Created OS            00 (0) 'MS-DOS'\n+22A6B7 Extract Zip Spec      14 (20) '2.0'\n+22A6B8 Extract OS            00 (0) 'MS-DOS'\n+22A6B9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2289CE Compression Method    0008 (8) 'Deflated'\n-2289D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2289D4 CRC                   6365E73A (1667622714)\n-2289D8 Compressed Size       00000326 (806)\n-2289DC Uncompressed Size     00000708 (1800)\n-2289E0 Filename Length       0033 (51)\n-2289E2 Extra Length          0000 (0)\n-2289E4 Comment Length        0000 (0)\n-2289E6 Disk Start            0000 (0)\n-2289E8 Int File Attributes   0000 (0)\n+22A6BB Compression Method    0008 (8) 'Deflated'\n+22A6BD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A6C1 CRC                   80C30D3D (2160266557)\n+22A6C5 Compressed Size       000002F8 (760)\n+22A6C9 Uncompressed Size     0000065E (1630)\n+22A6CD Filename Length       002E (46)\n+22A6CF Extra Length          0000 (0)\n+22A6D1 Comment Length        0000 (0)\n+22A6D3 Disk Start            0000 (0)\n+22A6D5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2289EA Ext File Attributes   00000000 (0)\n-2289EE Local Header Offset   000F5F3F (1007423)\n-2289F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A6D7 Ext File Attributes   00000000 (0)\n+22A6DB Local Header Offset   00117153 (1143123)\n+22A6DF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2289F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A6DF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228A25 CENTRAL HEADER #971   02014B50 (33639248)\n-228A29 Created Zip Spec      14 (20) '2.0'\n-228A2A Created OS            00 (0) 'MS-DOS'\n-228A2B Extract Zip Spec      14 (20) '2.0'\n-228A2C Extract OS            00 (0) 'MS-DOS'\n-228A2D General Purpose Flag  0808 (2056)\n+22A70D CENTRAL HEADER #971   02014B50 (33639248)\n+22A711 Created Zip Spec      14 (20) '2.0'\n+22A712 Created OS            00 (0) 'MS-DOS'\n+22A713 Extract Zip Spec      14 (20) '2.0'\n+22A714 Extract OS            00 (0) 'MS-DOS'\n+22A715 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228A2F Compression Method    0008 (8) 'Deflated'\n-228A31 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228A35 CRC                   BFAE288D (3215861901)\n-228A39 Compressed Size       000002FE (766)\n-228A3D Uncompressed Size     0000060E (1550)\n-228A41 Filename Length       002D (45)\n-228A43 Extra Length          0000 (0)\n-228A45 Comment Length        0000 (0)\n-228A47 Disk Start            0000 (0)\n-228A49 Int File Attributes   0000 (0)\n+22A717 Compression Method    0008 (8) 'Deflated'\n+22A719 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A71D CRC                   8E103737 (2383427383)\n+22A721 Compressed Size       0000098B (2443)\n+22A725 Uncompressed Size     00002C47 (11335)\n+22A729 Filename Length       002A (42)\n+22A72B Extra Length          0000 (0)\n+22A72D Comment Length        0000 (0)\n+22A72F Disk Start            0000 (0)\n+22A731 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228A4B Ext File Attributes   00000000 (0)\n-228A4F Local Header Offset   000F62C6 (1008326)\n-228A53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A733 Ext File Attributes   00000000 (0)\n+22A737 Local Header Offset   001174A7 (1143975)\n+22A73B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228A53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A73B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228A80 CENTRAL HEADER #972   02014B50 (33639248)\n-228A84 Created Zip Spec      14 (20) '2.0'\n-228A85 Created OS            00 (0) 'MS-DOS'\n-228A86 Extract Zip Spec      14 (20) '2.0'\n-228A87 Extract OS            00 (0) 'MS-DOS'\n-228A88 General Purpose Flag  0808 (2056)\n+22A765 CENTRAL HEADER #972   02014B50 (33639248)\n+22A769 Created Zip Spec      14 (20) '2.0'\n+22A76A Created OS            00 (0) 'MS-DOS'\n+22A76B Extract Zip Spec      14 (20) '2.0'\n+22A76C Extract OS            00 (0) 'MS-DOS'\n+22A76D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228A8A Compression Method    0008 (8) 'Deflated'\n-228A8C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228A90 CRC                   00000000 (0)\n-228A94 Compressed Size       00000002 (2)\n-228A98 Uncompressed Size     00000000 (0)\n-228A9C Filename Length       002A (42)\n-228A9E Extra Length          0000 (0)\n-228AA0 Comment Length        0000 (0)\n-228AA2 Disk Start            0000 (0)\n-228AA4 Int File Attributes   0000 (0)\n+22A76F Compression Method    0008 (8) 'Deflated'\n+22A771 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A775 CRC                   00000000 (0)\n+22A779 Compressed Size       00000002 (2)\n+22A77D Uncompressed Size     00000000 (0)\n+22A781 Filename Length       002E (46)\n+22A783 Extra Length          0000 (0)\n+22A785 Comment Length        0000 (0)\n+22A787 Disk Start            0000 (0)\n+22A789 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228AA6 Ext File Attributes   00000000 (0)\n-228AAA Local Header Offset   000F661F (1009183)\n-228AAE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A78B Ext File Attributes   00000000 (0)\n+22A78F Local Header Offset   00117E8A (1146506)\n+22A793 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228AAE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A793: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228AD8 CENTRAL HEADER #973   02014B50 (33639248)\n-228ADC Created Zip Spec      14 (20) '2.0'\n-228ADD Created OS            00 (0) 'MS-DOS'\n-228ADE Extract Zip Spec      14 (20) '2.0'\n-228ADF Extract OS            00 (0) 'MS-DOS'\n-228AE0 General Purpose Flag  0808 (2056)\n+22A7C1 CENTRAL HEADER #973   02014B50 (33639248)\n+22A7C5 Created Zip Spec      14 (20) '2.0'\n+22A7C6 Created OS            00 (0) 'MS-DOS'\n+22A7C7 Extract Zip Spec      14 (20) '2.0'\n+22A7C8 Extract OS            00 (0) 'MS-DOS'\n+22A7C9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228AE2 Compression Method    0008 (8) 'Deflated'\n-228AE4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228AE8 CRC                   9FEC08A1 (2683046049)\n-228AEC Compressed Size       0000067E (1662)\n-228AF0 Uncompressed Size     0000287C (10364)\n-228AF4 Filename Length       0047 (71)\n-228AF6 Extra Length          0000 (0)\n-228AF8 Comment Length        0000 (0)\n-228AFA Disk Start            0000 (0)\n-228AFC Int File Attributes   0000 (0)\n+22A7CB Compression Method    0008 (8) 'Deflated'\n+22A7CD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A7D1 CRC                   A1CBD481 (2714489985)\n+22A7D5 Compressed Size       00000393 (915)\n+22A7D9 Uncompressed Size     00000971 (2417)\n+22A7DD Filename Length       0035 (53)\n+22A7DF Extra Length          0000 (0)\n+22A7E1 Comment Length        0000 (0)\n+22A7E3 Disk Start            0000 (0)\n+22A7E5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228AFE Ext File Attributes   00000000 (0)\n-228B02 Local Header Offset   000F6679 (1009273)\n-228B06 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A7E7 Ext File Attributes   00000000 (0)\n+22A7EB Local Header Offset   00117EE8 (1146600)\n+22A7EF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228B06: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A7EF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228B4D CENTRAL HEADER #974   02014B50 (33639248)\n-228B51 Created Zip Spec      14 (20) '2.0'\n-228B52 Created OS            00 (0) 'MS-DOS'\n-228B53 Extract Zip Spec      14 (20) '2.0'\n-228B54 Extract OS            00 (0) 'MS-DOS'\n-228B55 General Purpose Flag  0808 (2056)\n+22A824 CENTRAL HEADER #974   02014B50 (33639248)\n+22A828 Created Zip Spec      14 (20) '2.0'\n+22A829 Created OS            00 (0) 'MS-DOS'\n+22A82A Extract Zip Spec      14 (20) '2.0'\n+22A82B Extract OS            00 (0) 'MS-DOS'\n+22A82C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228B57 Compression Method    0008 (8) 'Deflated'\n-228B59 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228B5D CRC                   399B609C (966484124)\n-228B61 Compressed Size       0000031A (794)\n-228B65 Uncompressed Size     000007FB (2043)\n-228B69 Filename Length       004E (78)\n-228B6B Extra Length          0000 (0)\n-228B6D Comment Length        0000 (0)\n-228B6F Disk Start            0000 (0)\n-228B71 Int File Attributes   0000 (0)\n+22A82E Compression Method    0008 (8) 'Deflated'\n+22A830 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A834 CRC                   5F285EB1 (1596481201)\n+22A838 Compressed Size       00000042 (66)\n+22A83C Uncompressed Size     00000044 (68)\n+22A840 Filename Length       003C (60)\n+22A842 Extra Length          0000 (0)\n+22A844 Comment Length        0000 (0)\n+22A846 Disk Start            0000 (0)\n+22A848 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228B73 Ext File Attributes   00000000 (0)\n-228B77 Local Header Offset   000F6D6C (1011052)\n-228B7B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A84A Ext File Attributes   00000000 (0)\n+22A84E Local Header Offset   001182DE (1147614)\n+22A852 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228B7B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A852: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228BC9 CENTRAL HEADER #975   02014B50 (33639248)\n-228BCD Created Zip Spec      14 (20) '2.0'\n-228BCE Created OS            00 (0) 'MS-DOS'\n-228BCF Extract Zip Spec      14 (20) '2.0'\n-228BD0 Extract OS            00 (0) 'MS-DOS'\n-228BD1 General Purpose Flag  0808 (2056)\n+22A88E CENTRAL HEADER #975   02014B50 (33639248)\n+22A892 Created Zip Spec      14 (20) '2.0'\n+22A893 Created OS            00 (0) 'MS-DOS'\n+22A894 Extract Zip Spec      14 (20) '2.0'\n+22A895 Extract OS            00 (0) 'MS-DOS'\n+22A896 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228BD3 Compression Method    0008 (8) 'Deflated'\n-228BD5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228BD9 CRC                   9ADB27A7 (2598053799)\n-228BDD Compressed Size       0000077A (1914)\n-228BE1 Uncompressed Size     00001AC6 (6854)\n-228BE5 Filename Length       003B (59)\n-228BE7 Extra Length          0000 (0)\n-228BE9 Comment Length        0000 (0)\n-228BEB Disk Start            0000 (0)\n-228BED Int File Attributes   0000 (0)\n+22A898 Compression Method    0008 (8) 'Deflated'\n+22A89A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A89E CRC                   5F5E6ACD (1600023245)\n+22A8A2 Compressed Size       00000F00 (3840)\n+22A8A6 Uncompressed Size     00003F85 (16261)\n+22A8AA Filename Length       003D (61)\n+22A8AC Extra Length          0000 (0)\n+22A8AE Comment Length        0000 (0)\n+22A8B0 Disk Start            0000 (0)\n+22A8B2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228BEF Ext File Attributes   00000000 (0)\n-228BF3 Local Header Offset   000F7102 (1011970)\n-228BF7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A8B4 Ext File Attributes   00000000 (0)\n+22A8B8 Local Header Offset   0011838A (1147786)\n+22A8BC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228BF7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A8BC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228C32 CENTRAL HEADER #976   02014B50 (33639248)\n-228C36 Created Zip Spec      14 (20) '2.0'\n-228C37 Created OS            00 (0) 'MS-DOS'\n-228C38 Extract Zip Spec      14 (20) '2.0'\n-228C39 Extract OS            00 (0) 'MS-DOS'\n-228C3A General Purpose Flag  0808 (2056)\n+22A8F9 CENTRAL HEADER #976   02014B50 (33639248)\n+22A8FD Created Zip Spec      14 (20) '2.0'\n+22A8FE Created OS            00 (0) 'MS-DOS'\n+22A8FF Extract Zip Spec      14 (20) '2.0'\n+22A900 Extract OS            00 (0) 'MS-DOS'\n+22A901 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228C3C Compression Method    0008 (8) 'Deflated'\n-228C3E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228C42 CRC                   79FA59C0 (2046450112)\n-228C46 Compressed Size       0000082D (2093)\n-228C4A Uncompressed Size     00001CDC (7388)\n-228C4E Filename Length       003A (58)\n-228C50 Extra Length          0000 (0)\n-228C52 Comment Length        0000 (0)\n-228C54 Disk Start            0000 (0)\n-228C56 Int File Attributes   0000 (0)\n+22A903 Compression Method    0008 (8) 'Deflated'\n+22A905 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A909 CRC                   980C94D0 (2550961360)\n+22A90D Compressed Size       00000755 (1877)\n+22A911 Uncompressed Size     0000199A (6554)\n+22A915 Filename Length       003E (62)\n+22A917 Extra Length          0000 (0)\n+22A919 Comment Length        0000 (0)\n+22A91B Disk Start            0000 (0)\n+22A91D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228C58 Ext File Attributes   00000000 (0)\n-228C5C Local Header Offset   000F78E5 (1013989)\n-228C60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A91F Ext File Attributes   00000000 (0)\n+22A923 Local Header Offset   001192F5 (1151733)\n+22A927 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228C60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A927: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228C9A CENTRAL HEADER #977   02014B50 (33639248)\n-228C9E Created Zip Spec      14 (20) '2.0'\n-228C9F Created OS            00 (0) 'MS-DOS'\n-228CA0 Extract Zip Spec      14 (20) '2.0'\n-228CA1 Extract OS            00 (0) 'MS-DOS'\n-228CA2 General Purpose Flag  0808 (2056)\n+22A965 CENTRAL HEADER #977   02014B50 (33639248)\n+22A969 Created Zip Spec      14 (20) '2.0'\n+22A96A Created OS            00 (0) 'MS-DOS'\n+22A96B Extract Zip Spec      14 (20) '2.0'\n+22A96C Extract OS            00 (0) 'MS-DOS'\n+22A96D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228CA4 Compression Method    0008 (8) 'Deflated'\n-228CA6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228CAA CRC                   0C148F63 (202674019)\n-228CAE Compressed Size       000006DE (1758)\n-228CB2 Uncompressed Size     00001A7A (6778)\n-228CB6 Filename Length       0040 (64)\n-228CB8 Extra Length          0000 (0)\n-228CBA Comment Length        0000 (0)\n-228CBC Disk Start            0000 (0)\n-228CBE Int File Attributes   0000 (0)\n+22A96F Compression Method    0008 (8) 'Deflated'\n+22A971 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A975 CRC                   4C7D08FC (1283262716)\n+22A979 Compressed Size       000003FD (1021)\n+22A97D Uncompressed Size     000008FF (2303)\n+22A981 Filename Length       0032 (50)\n+22A983 Extra Length          0000 (0)\n+22A985 Comment Length        0000 (0)\n+22A987 Disk Start            0000 (0)\n+22A989 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228CC0 Ext File Attributes   00000000 (0)\n-228CC4 Local Header Offset   000F817A (1016186)\n-228CC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A98B Ext File Attributes   00000000 (0)\n+22A98F Local Header Offset   00119AB6 (1153718)\n+22A993 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228CC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A993: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228D08 CENTRAL HEADER #978   02014B50 (33639248)\n-228D0C Created Zip Spec      14 (20) '2.0'\n-228D0D Created OS            00 (0) 'MS-DOS'\n-228D0E Extract Zip Spec      14 (20) '2.0'\n-228D0F Extract OS            00 (0) 'MS-DOS'\n-228D10 General Purpose Flag  0808 (2056)\n+22A9C5 CENTRAL HEADER #978   02014B50 (33639248)\n+22A9C9 Created Zip Spec      14 (20) '2.0'\n+22A9CA Created OS            00 (0) 'MS-DOS'\n+22A9CB Extract Zip Spec      14 (20) '2.0'\n+22A9CC Extract OS            00 (0) 'MS-DOS'\n+22A9CD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228D12 Compression Method    0008 (8) 'Deflated'\n-228D14 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228D18 CRC                   C0DCFA8D (3235707533)\n-228D1C Compressed Size       000004E7 (1255)\n-228D20 Uncompressed Size     00001319 (4889)\n-228D24 Filename Length       003B (59)\n-228D26 Extra Length          0000 (0)\n-228D28 Comment Length        0000 (0)\n-228D2A Disk Start            0000 (0)\n-228D2C Int File Attributes   0000 (0)\n+22A9CF Compression Method    0008 (8) 'Deflated'\n+22A9D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22A9D5 CRC                   EAE8515F (3941093727)\n+22A9D9 Compressed Size       000008F1 (2289)\n+22A9DD Uncompressed Size     00001FF9 (8185)\n+22A9E1 Filename Length       0040 (64)\n+22A9E3 Extra Length          0000 (0)\n+22A9E5 Comment Length        0000 (0)\n+22A9E7 Disk Start            0000 (0)\n+22A9E9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228D2E Ext File Attributes   00000000 (0)\n-228D32 Local Header Offset   000F88C6 (1018054)\n-228D36 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22A9EB Ext File Attributes   00000000 (0)\n+22A9EF Local Header Offset   00119F13 (1154835)\n+22A9F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228D36: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22A9F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228D71 CENTRAL HEADER #979   02014B50 (33639248)\n-228D75 Created Zip Spec      14 (20) '2.0'\n-228D76 Created OS            00 (0) 'MS-DOS'\n-228D77 Extract Zip Spec      14 (20) '2.0'\n-228D78 Extract OS            00 (0) 'MS-DOS'\n-228D79 General Purpose Flag  0808 (2056)\n+22AA33 CENTRAL HEADER #979   02014B50 (33639248)\n+22AA37 Created Zip Spec      14 (20) '2.0'\n+22AA38 Created OS            00 (0) 'MS-DOS'\n+22AA39 Extract Zip Spec      14 (20) '2.0'\n+22AA3A Extract OS            00 (0) 'MS-DOS'\n+22AA3B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228D7B Compression Method    0008 (8) 'Deflated'\n-228D7D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228D81 CRC                   4C151237 (1276449335)\n-228D85 Compressed Size       0000039C (924)\n-228D89 Uncompressed Size     00000CD1 (3281)\n-228D8D Filename Length       003A (58)\n-228D8F Extra Length          0000 (0)\n-228D91 Comment Length        0000 (0)\n-228D93 Disk Start            0000 (0)\n-228D95 Int File Attributes   0000 (0)\n+22AA3D Compression Method    0008 (8) 'Deflated'\n+22AA3F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22AA43 CRC                   E202F321 (3791844129)\n+22AA47 Compressed Size       0000080B (2059)\n+22AA4B Uncompressed Size     00001C58 (7256)\n+22AA4F Filename Length       003C (60)\n+22AA51 Extra Length          0000 (0)\n+22AA53 Comment Length        0000 (0)\n+22AA55 Disk Start            0000 (0)\n+22AA57 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228D97 Ext File Attributes   00000000 (0)\n-228D9B Local Header Offset   000F8E16 (1019414)\n-228D9F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22AA59 Ext File Attributes   00000000 (0)\n+22AA5D Local Header Offset   0011A872 (1157234)\n+22AA61 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228D9F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22AA61: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228DD9 CENTRAL HEADER #980   02014B50 (33639248)\n-228DDD Created Zip Spec      14 (20) '2.0'\n-228DDE Created OS            00 (0) 'MS-DOS'\n-228DDF Extract Zip Spec      14 (20) '2.0'\n-228DE0 Extract OS            00 (0) 'MS-DOS'\n-228DE1 General Purpose Flag  0808 (2056)\n+22AA9D CENTRAL HEADER #980   02014B50 (33639248)\n+22AAA1 Created Zip Spec      14 (20) '2.0'\n+22AAA2 Created OS            00 (0) 'MS-DOS'\n+22AAA3 Extract Zip Spec      14 (20) '2.0'\n+22AAA4 Extract OS            00 (0) 'MS-DOS'\n+22AAA5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228DE3 Compression Method    0008 (8) 'Deflated'\n-228DE5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228DE9 CRC                   E768197F (3882359167)\n-228DED Compressed Size       00000773 (1907)\n-228DF1 Uncompressed Size     00001A69 (6761)\n-228DF5 Filename Length       003A (58)\n-228DF7 Extra Length          0000 (0)\n-228DF9 Comment Length        0000 (0)\n-228DFB Disk Start            0000 (0)\n-228DFD Int File Attributes   0000 (0)\n+22AAA7 Compression Method    0008 (8) 'Deflated'\n+22AAA9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22AAAD CRC                   DBBCD787 (3686586247)\n+22AAB1 Compressed Size       00000A4C (2636)\n+22AAB5 Uncompressed Size     00002BDF (11231)\n+22AAB9 Filename Length       0033 (51)\n+22AABB Extra Length          0000 (0)\n+22AABD Comment Length        0000 (0)\n+22AABF Disk Start            0000 (0)\n+22AAC1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228DFF Ext File Attributes   00000000 (0)\n-228E03 Local Header Offset   000F921A (1020442)\n-228E07 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22AAC3 Ext File Attributes   00000000 (0)\n+22AAC7 Local Header Offset   0011B0E7 (1159399)\n+22AACB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228E07: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22AACB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228E41 CENTRAL HEADER #981   02014B50 (33639248)\n-228E45 Created Zip Spec      14 (20) '2.0'\n-228E46 Created OS            00 (0) 'MS-DOS'\n-228E47 Extract Zip Spec      14 (20) '2.0'\n-228E48 Extract OS            00 (0) 'MS-DOS'\n-228E49 General Purpose Flag  0808 (2056)\n+22AAFE CENTRAL HEADER #981   02014B50 (33639248)\n+22AB02 Created Zip Spec      14 (20) '2.0'\n+22AB03 Created OS            00 (0) 'MS-DOS'\n+22AB04 Extract Zip Spec      14 (20) '2.0'\n+22AB05 Extract OS            00 (0) 'MS-DOS'\n+22AB06 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228E4B Compression Method    0008 (8) 'Deflated'\n-228E4D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228E51 CRC                   010536C2 (17118914)\n-228E55 Compressed Size       000002AF (687)\n-228E59 Uncompressed Size     00000632 (1586)\n-228E5D Filename Length       003F (63)\n-228E5F Extra Length          0000 (0)\n-228E61 Comment Length        0000 (0)\n-228E63 Disk Start            0000 (0)\n-228E65 Int File Attributes   0000 (0)\n+22AB08 Compression Method    0008 (8) 'Deflated'\n+22AB0A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22AB0E CRC                   E1297FD5 (3777593301)\n+22AB12 Compressed Size       0000037A (890)\n+22AB16 Uncompressed Size     00000A4E (2638)\n+22AB1A Filename Length       003A (58)\n+22AB1C Extra Length          0000 (0)\n+22AB1E Comment Length        0000 (0)\n+22AB20 Disk Start            0000 (0)\n+22AB22 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228E67 Ext File Attributes   00000000 (0)\n-228E6B Local Header Offset   000F99F5 (1022453)\n-228E6F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22AB24 Ext File Attributes   00000000 (0)\n+22AB28 Local Header Offset   0011BB94 (1162132)\n+22AB2C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228E6F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22AB2C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228EAE CENTRAL HEADER #982   02014B50 (33639248)\n-228EB2 Created Zip Spec      14 (20) '2.0'\n-228EB3 Created OS            00 (0) 'MS-DOS'\n-228EB4 Extract Zip Spec      14 (20) '2.0'\n-228EB5 Extract OS            00 (0) 'MS-DOS'\n-228EB6 General Purpose Flag  0808 (2056)\n+22AB66 CENTRAL HEADER #982   02014B50 (33639248)\n+22AB6A Created Zip Spec      14 (20) '2.0'\n+22AB6B Created OS            00 (0) 'MS-DOS'\n+22AB6C Extract Zip Spec      14 (20) '2.0'\n+22AB6D Extract OS            00 (0) 'MS-DOS'\n+22AB6E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228EB8 Compression Method    0008 (8) 'Deflated'\n-228EBA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228EBE CRC                   00000000 (0)\n-228EC2 Compressed Size       00000002 (2)\n-228EC6 Uncompressed Size     00000000 (0)\n-228ECA Filename Length       002B (43)\n-228ECC Extra Length          0000 (0)\n-228ECE Comment Length        0000 (0)\n-228ED0 Disk Start            0000 (0)\n-228ED2 Int File Attributes   0000 (0)\n+22AB70 Compression Method    0008 (8) 'Deflated'\n+22AB72 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22AB76 CRC                   CDBF443E (3451864126)\n+22AB7A Compressed Size       00000466 (1126)\n+22AB7E Uncompressed Size     00000C74 (3188)\n+22AB82 Filename Length       0038 (56)\n+22AB84 Extra Length          0000 (0)\n+22AB86 Comment Length        0000 (0)\n+22AB88 Disk Start            0000 (0)\n+22AB8A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228ED4 Ext File Attributes   00000000 (0)\n-228ED8 Local Header Offset   000F9D11 (1023249)\n-228EDC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22AB8C Ext File Attributes   00000000 (0)\n+22AB90 Local Header Offset   0011BF76 (1163126)\n+22AB94 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228EDC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22AB94: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228F07 CENTRAL HEADER #983   02014B50 (33639248)\n-228F0B Created Zip Spec      14 (20) '2.0'\n-228F0C Created OS            00 (0) 'MS-DOS'\n-228F0D Extract Zip Spec      14 (20) '2.0'\n-228F0E Extract OS            00 (0) 'MS-DOS'\n-228F0F General Purpose Flag  0808 (2056)\n+22ABCC CENTRAL HEADER #983   02014B50 (33639248)\n+22ABD0 Created Zip Spec      14 (20) '2.0'\n+22ABD1 Created OS            00 (0) 'MS-DOS'\n+22ABD2 Extract Zip Spec      14 (20) '2.0'\n+22ABD3 Extract OS            00 (0) 'MS-DOS'\n+22ABD4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228F11 Compression Method    0008 (8) 'Deflated'\n-228F13 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228F17 CRC                   73E7CE8A (1944571530)\n-228F1B Compressed Size       00000686 (1670)\n-228F1F Uncompressed Size     000027E6 (10214)\n-228F23 Filename Length       0048 (72)\n-228F25 Extra Length          0000 (0)\n-228F27 Comment Length        0000 (0)\n-228F29 Disk Start            0000 (0)\n-228F2B Int File Attributes   0000 (0)\n+22ABD6 Compression Method    0008 (8) 'Deflated'\n+22ABD8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22ABDC CRC                   151E182C (354293804)\n+22ABE0 Compressed Size       000002BC (700)\n+22ABE4 Uncompressed Size     000005DD (1501)\n+22ABE8 Filename Length       0036 (54)\n+22ABEA Extra Length          0000 (0)\n+22ABEC Comment Length        0000 (0)\n+22ABEE Disk Start            0000 (0)\n+22ABF0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228F2D Ext File Attributes   00000000 (0)\n-228F31 Local Header Offset   000F9D6C (1023340)\n-228F35 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22ABF2 Ext File Attributes   00000000 (0)\n+22ABF6 Local Header Offset   0011C442 (1164354)\n+22ABFA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228F35: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22ABFA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228F7D CENTRAL HEADER #984   02014B50 (33639248)\n-228F81 Created Zip Spec      14 (20) '2.0'\n-228F82 Created OS            00 (0) 'MS-DOS'\n-228F83 Extract Zip Spec      14 (20) '2.0'\n-228F84 Extract OS            00 (0) 'MS-DOS'\n-228F85 General Purpose Flag  0808 (2056)\n+22AC30 CENTRAL HEADER #984   02014B50 (33639248)\n+22AC34 Created Zip Spec      14 (20) '2.0'\n+22AC35 Created OS            00 (0) 'MS-DOS'\n+22AC36 Extract Zip Spec      14 (20) '2.0'\n+22AC37 Extract OS            00 (0) 'MS-DOS'\n+22AC38 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228F87 Compression Method    0008 (8) 'Deflated'\n-228F89 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228F8D CRC                   CD460ADB (3443919579)\n-228F91 Compressed Size       0000096A (2410)\n-228F95 Uncompressed Size     00002241 (8769)\n-228F99 Filename Length       003C (60)\n-228F9B Extra Length          0000 (0)\n-228F9D Comment Length        0000 (0)\n-228F9F Disk Start            0000 (0)\n-228FA1 Int File Attributes   0000 (0)\n+22AC3A Compression Method    0008 (8) 'Deflated'\n+22AC3C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22AC40 CRC                   39CBA339 (969646905)\n+22AC44 Compressed Size       00000962 (2402)\n+22AC48 Uncompressed Size     00002090 (8336)\n+22AC4C Filename Length       0035 (53)\n+22AC4E Extra Length          0000 (0)\n+22AC50 Comment Length        0000 (0)\n+22AC52 Disk Start            0000 (0)\n+22AC54 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-228FA3 Ext File Attributes   00000000 (0)\n-228FA7 Local Header Offset   000FA468 (1025128)\n-228FAB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22AC56 Ext File Attributes   00000000 (0)\n+22AC5A Local Header Offset   0011C762 (1165154)\n+22AC5E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x228FAB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22AC5E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-228FE7 CENTRAL HEADER #985   02014B50 (33639248)\n-228FEB Created Zip Spec      14 (20) '2.0'\n-228FEC Created OS            00 (0) 'MS-DOS'\n-228FED Extract Zip Spec      14 (20) '2.0'\n-228FEE Extract OS            00 (0) 'MS-DOS'\n-228FEF General Purpose Flag  0808 (2056)\n+22AC93 CENTRAL HEADER #985   02014B50 (33639248)\n+22AC97 Created Zip Spec      14 (20) '2.0'\n+22AC98 Created OS            00 (0) 'MS-DOS'\n+22AC99 Extract Zip Spec      14 (20) '2.0'\n+22AC9A Extract OS            00 (0) 'MS-DOS'\n+22AC9B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-228FF1 Compression Method    0008 (8) 'Deflated'\n-228FF3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-228FF7 CRC                   17148ACF (387222223)\n-228FFB Compressed Size       00000AB8 (2744)\n-228FFF Uncompressed Size     00002446 (9286)\n-229003 Filename Length       003B (59)\n-229005 Extra Length          0000 (0)\n-229007 Comment Length        0000 (0)\n-229009 Disk Start            0000 (0)\n-22900B Int File Attributes   0000 (0)\n+22AC9D Compression Method    0008 (8) 'Deflated'\n+22AC9F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22ACA3 CRC                   07C16F02 (130117378)\n+22ACA7 Compressed Size       00001890 (6288)\n+22ACAB Uncompressed Size     00006DE5 (28133)\n+22ACAF Filename Length       0036 (54)\n+22ACB1 Extra Length          0000 (0)\n+22ACB3 Comment Length        0000 (0)\n+22ACB5 Disk Start            0000 (0)\n+22ACB7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22900D Ext File Attributes   00000000 (0)\n-229011 Local Header Offset   000FAE3C (1027644)\n-229015 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22ACB9 Ext File Attributes   00000000 (0)\n+22ACBD Local Header Offset   0011D127 (1167655)\n+22ACC1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229015: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22ACC1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229050 CENTRAL HEADER #986   02014B50 (33639248)\n-229054 Created Zip Spec      14 (20) '2.0'\n-229055 Created OS            00 (0) 'MS-DOS'\n-229056 Extract Zip Spec      14 (20) '2.0'\n-229057 Extract OS            00 (0) 'MS-DOS'\n-229058 General Purpose Flag  0808 (2056)\n+22ACF7 CENTRAL HEADER #986   02014B50 (33639248)\n+22ACFB Created Zip Spec      14 (20) '2.0'\n+22ACFC Created OS            00 (0) 'MS-DOS'\n+22ACFD Extract Zip Spec      14 (20) '2.0'\n+22ACFE Extract OS            00 (0) 'MS-DOS'\n+22ACFF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22905A Compression Method    0008 (8) 'Deflated'\n-22905C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229060 CRC                   15F2B7F5 (368228341)\n-229064 Compressed Size       0000074A (1866)\n-229068 Uncompressed Size     00001869 (6249)\n-22906C Filename Length       0042 (66)\n-22906E Extra Length          0000 (0)\n-229070 Comment Length        0000 (0)\n-229072 Disk Start            0000 (0)\n-229074 Int File Attributes   0000 (0)\n+22AD01 Compression Method    0008 (8) 'Deflated'\n+22AD03 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22AD07 CRC                   DA119291 (3658584721)\n+22AD0B Compressed Size       000002E4 (740)\n+22AD0F Uncompressed Size     00000752 (1874)\n+22AD13 Filename Length       003C (60)\n+22AD15 Extra Length          0000 (0)\n+22AD17 Comment Length        0000 (0)\n+22AD19 Disk Start            0000 (0)\n+22AD1B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229076 Ext File Attributes   00000000 (0)\n-22907A Local Header Offset   000FB95D (1030493)\n-22907E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22AD1D Ext File Attributes   00000000 (0)\n+22AD21 Local Header Offset   0011EA1B (1174043)\n+22AD25 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22907E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22AD25: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2290C0 CENTRAL HEADER #987   02014B50 (33639248)\n-2290C4 Created Zip Spec      14 (20) '2.0'\n-2290C5 Created OS            00 (0) 'MS-DOS'\n-2290C6 Extract Zip Spec      14 (20) '2.0'\n-2290C7 Extract OS            00 (0) 'MS-DOS'\n-2290C8 General Purpose Flag  0808 (2056)\n+22AD61 CENTRAL HEADER #987   02014B50 (33639248)\n+22AD65 Created Zip Spec      14 (20) '2.0'\n+22AD66 Created OS            00 (0) 'MS-DOS'\n+22AD67 Extract Zip Spec      14 (20) '2.0'\n+22AD68 Extract OS            00 (0) 'MS-DOS'\n+22AD69 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2290CA Compression Method    0008 (8) 'Deflated'\n-2290CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2290D0 CRC                   BA9CD18D (3130839437)\n-2290D4 Compressed Size       000004BF (1215)\n-2290D8 Uncompressed Size     00000DDB (3547)\n-2290DC Filename Length       0041 (65)\n-2290DE Extra Length          0000 (0)\n-2290E0 Comment Length        0000 (0)\n-2290E2 Disk Start            0000 (0)\n-2290E4 Int File Attributes   0000 (0)\n+22AD6B Compression Method    0008 (8) 'Deflated'\n+22AD6D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22AD71 CRC                   0574FE58 (91553368)\n+22AD75 Compressed Size       0000082B (2091)\n+22AD79 Uncompressed Size     000020D9 (8409)\n+22AD7D Filename Length       0042 (66)\n+22AD7F Extra Length          0000 (0)\n+22AD81 Comment Length        0000 (0)\n+22AD83 Disk Start            0000 (0)\n+22AD85 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2290E6 Ext File Attributes   00000000 (0)\n-2290EA Local Header Offset   000FC117 (1032471)\n-2290EE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22AD87 Ext File Attributes   00000000 (0)\n+22AD8B Local Header Offset   0011ED69 (1174889)\n+22AD8F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2290EE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22AD8F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22912F CENTRAL HEADER #988   02014B50 (33639248)\n-229133 Created Zip Spec      14 (20) '2.0'\n-229134 Created OS            00 (0) 'MS-DOS'\n-229135 Extract Zip Spec      14 (20) '2.0'\n-229136 Extract OS            00 (0) 'MS-DOS'\n-229137 General Purpose Flag  0808 (2056)\n+22ADD1 CENTRAL HEADER #988   02014B50 (33639248)\n+22ADD5 Created Zip Spec      14 (20) '2.0'\n+22ADD6 Created OS            00 (0) 'MS-DOS'\n+22ADD7 Extract Zip Spec      14 (20) '2.0'\n+22ADD8 Extract OS            00 (0) 'MS-DOS'\n+22ADD9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229139 Compression Method    0008 (8) 'Deflated'\n-22913B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22913F CRC                   16F071B0 (384856496)\n-229143 Compressed Size       000003CA (970)\n-229147 Uncompressed Size     00000A5E (2654)\n-22914B Filename Length       0045 (69)\n-22914D Extra Length          0000 (0)\n-22914F Comment Length        0000 (0)\n-229151 Disk Start            0000 (0)\n-229153 Int File Attributes   0000 (0)\n+22ADDB Compression Method    0008 (8) 'Deflated'\n+22ADDD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22ADE1 CRC                   B5644E62 (3043249762)\n+22ADE5 Compressed Size       000006BD (1725)\n+22ADE9 Uncompressed Size     0000189A (6298)\n+22ADED Filename Length       0045 (69)\n+22ADEF Extra Length          0000 (0)\n+22ADF1 Comment Length        0000 (0)\n+22ADF3 Disk Start            0000 (0)\n+22ADF5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229155 Ext File Attributes   00000000 (0)\n-229159 Local Header Offset   000FC645 (1033797)\n-22915D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22ADF7 Ext File Attributes   00000000 (0)\n+22ADFB Local Header Offset   0011F604 (1177092)\n+22ADFF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22915D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22ADFF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2291A2 CENTRAL HEADER #989   02014B50 (33639248)\n-2291A6 Created Zip Spec      14 (20) '2.0'\n-2291A7 Created OS            00 (0) 'MS-DOS'\n-2291A8 Extract Zip Spec      14 (20) '2.0'\n-2291A9 Extract OS            00 (0) 'MS-DOS'\n-2291AA General Purpose Flag  0808 (2056)\n+22AE44 CENTRAL HEADER #989   02014B50 (33639248)\n+22AE48 Created Zip Spec      14 (20) '2.0'\n+22AE49 Created OS            00 (0) 'MS-DOS'\n+22AE4A Extract Zip Spec      14 (20) '2.0'\n+22AE4B Extract OS            00 (0) 'MS-DOS'\n+22AE4C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2291AC Compression Method    0008 (8) 'Deflated'\n-2291AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2291B2 CRC                   99FF093E (2583628094)\n-2291B6 Compressed Size       00000923 (2339)\n-2291BA Uncompressed Size     00001F03 (7939)\n-2291BE Filename Length       003B (59)\n-2291C0 Extra Length          0000 (0)\n-2291C2 Comment Length        0000 (0)\n-2291C4 Disk Start            0000 (0)\n-2291C6 Int File Attributes   0000 (0)\n+22AE4E Compression Method    0008 (8) 'Deflated'\n+22AE50 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22AE54 CRC                   00000000 (0)\n+22AE58 Compressed Size       00000002 (2)\n+22AE5C Uncompressed Size     00000000 (0)\n+22AE60 Filename Length       002B (43)\n+22AE62 Extra Length          0000 (0)\n+22AE64 Comment Length        0000 (0)\n+22AE66 Disk Start            0000 (0)\n+22AE68 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2291C8 Ext File Attributes   00000000 (0)\n-2291CC Local Header Offset   000FCA82 (1034882)\n-2291D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22AE6A Ext File Attributes   00000000 (0)\n+22AE6E Local Header Offset   0011FD34 (1178932)\n+22AE72 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2291D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22AE72: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22920B CENTRAL HEADER #990   02014B50 (33639248)\n-22920F Created Zip Spec      14 (20) '2.0'\n-229210 Created OS            00 (0) 'MS-DOS'\n-229211 Extract Zip Spec      14 (20) '2.0'\n-229212 Extract OS            00 (0) 'MS-DOS'\n-229213 General Purpose Flag  0808 (2056)\n+22AE9D CENTRAL HEADER #990   02014B50 (33639248)\n+22AEA1 Created Zip Spec      14 (20) '2.0'\n+22AEA2 Created OS            00 (0) 'MS-DOS'\n+22AEA3 Extract Zip Spec      14 (20) '2.0'\n+22AEA4 Extract OS            00 (0) 'MS-DOS'\n+22AEA5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229215 Compression Method    0008 (8) 'Deflated'\n-229217 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22921B CRC                   7ED127C7 (2127636423)\n-22921F Compressed Size       000005D7 (1495)\n-229223 Uncompressed Size     0000147B (5243)\n-229227 Filename Length       0042 (66)\n-229229 Extra Length          0000 (0)\n-22922B Comment Length        0000 (0)\n-22922D Disk Start            0000 (0)\n-22922F Int File Attributes   0000 (0)\n+22AEA7 Compression Method    0008 (8) 'Deflated'\n+22AEA9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22AEAD CRC                   45086F19 (1158180633)\n+22AEB1 Compressed Size       000007DA (2010)\n+22AEB5 Uncompressed Size     000022F3 (8947)\n+22AEB9 Filename Length       003C (60)\n+22AEBB Extra Length          0000 (0)\n+22AEBD Comment Length        0000 (0)\n+22AEBF Disk Start            0000 (0)\n+22AEC1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229231 Ext File Attributes   00000000 (0)\n-229235 Local Header Offset   000FD40E (1037326)\n-229239 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22AEC3 Ext File Attributes   00000000 (0)\n+22AEC7 Local Header Offset   0011FD8F (1179023)\n+22AECB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229239: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22AECB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22927B CENTRAL HEADER #991   02014B50 (33639248)\n-22927F Created Zip Spec      14 (20) '2.0'\n-229280 Created OS            00 (0) 'MS-DOS'\n-229281 Extract Zip Spec      14 (20) '2.0'\n-229282 Extract OS            00 (0) 'MS-DOS'\n-229283 General Purpose Flag  0808 (2056)\n+22AF07 CENTRAL HEADER #991   02014B50 (33639248)\n+22AF0B Created Zip Spec      14 (20) '2.0'\n+22AF0C Created OS            00 (0) 'MS-DOS'\n+22AF0D Extract Zip Spec      14 (20) '2.0'\n+22AF0E Extract OS            00 (0) 'MS-DOS'\n+22AF0F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229285 Compression Method    0008 (8) 'Deflated'\n-229287 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22928B CRC                   4AAC1D37 (1252793655)\n-22928F Compressed Size       000002CA (714)\n-229293 Uncompressed Size     0000064E (1614)\n-229297 Filename Length       0040 (64)\n-229299 Extra Length          0000 (0)\n-22929B Comment Length        0000 (0)\n-22929D Disk Start            0000 (0)\n-22929F Int File Attributes   0000 (0)\n+22AF11 Compression Method    0008 (8) 'Deflated'\n+22AF13 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22AF17 CRC                   57E4B8CF (1474607311)\n+22AF1B Compressed Size       0000068F (1679)\n+22AF1F Uncompressed Size     000016C7 (5831)\n+22AF23 Filename Length       003B (59)\n+22AF25 Extra Length          0000 (0)\n+22AF27 Comment Length        0000 (0)\n+22AF29 Disk Start            0000 (0)\n+22AF2B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2292A1 Ext File Attributes   00000000 (0)\n-2292A5 Local Header Offset   000FDA55 (1038933)\n-2292A9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22AF2D Ext File Attributes   00000000 (0)\n+22AF31 Local Header Offset   001205D3 (1181139)\n+22AF35 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2292A9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22AF35: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2292E9 CENTRAL HEADER #992   02014B50 (33639248)\n-2292ED Created Zip Spec      14 (20) '2.0'\n-2292EE Created OS            00 (0) 'MS-DOS'\n-2292EF Extract Zip Spec      14 (20) '2.0'\n-2292F0 Extract OS            00 (0) 'MS-DOS'\n-2292F1 General Purpose Flag  0808 (2056)\n+22AF70 CENTRAL HEADER #992   02014B50 (33639248)\n+22AF74 Created Zip Spec      14 (20) '2.0'\n+22AF75 Created OS            00 (0) 'MS-DOS'\n+22AF76 Extract Zip Spec      14 (20) '2.0'\n+22AF77 Extract OS            00 (0) 'MS-DOS'\n+22AF78 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2292F3 Compression Method    0008 (8) 'Deflated'\n-2292F5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2292F9 CRC                   155577E8 (357922792)\n-2292FD Compressed Size       00000614 (1556)\n-229301 Uncompressed Size     000015AE (5550)\n-229305 Filename Length       003B (59)\n-229307 Extra Length          0000 (0)\n-229309 Comment Length        0000 (0)\n-22930B Disk Start            0000 (0)\n-22930D Int File Attributes   0000 (0)\n+22AF7A Compression Method    0008 (8) 'Deflated'\n+22AF7C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22AF80 CRC                   00000000 (0)\n+22AF84 Compressed Size       00000002 (2)\n+22AF88 Uncompressed Size     00000000 (0)\n+22AF8C Filename Length       002B (43)\n+22AF8E Extra Length          0000 (0)\n+22AF90 Comment Length        0000 (0)\n+22AF92 Disk Start            0000 (0)\n+22AF94 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22930F Ext File Attributes   00000000 (0)\n-229313 Local Header Offset   000FDD8D (1039757)\n-229317 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22AF96 Ext File Attributes   00000000 (0)\n+22AF9A Local Header Offset   00120CCB (1182923)\n+22AF9E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229317: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22AF9E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229352 CENTRAL HEADER #993   02014B50 (33639248)\n-229356 Created Zip Spec      14 (20) '2.0'\n-229357 Created OS            00 (0) 'MS-DOS'\n-229358 Extract Zip Spec      14 (20) '2.0'\n-229359 Extract OS            00 (0) 'MS-DOS'\n-22935A General Purpose Flag  0808 (2056)\n+22AFC9 CENTRAL HEADER #993   02014B50 (33639248)\n+22AFCD Created Zip Spec      14 (20) '2.0'\n+22AFCE Created OS            00 (0) 'MS-DOS'\n+22AFCF Extract Zip Spec      14 (20) '2.0'\n+22AFD0 Extract OS            00 (0) 'MS-DOS'\n+22AFD1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22935C Compression Method    0008 (8) 'Deflated'\n-22935E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229362 CRC                   FC50D2E5 (4233155301)\n-229366 Compressed Size       000005BE (1470)\n-22936A Uncompressed Size     000016CB (5835)\n-22936E Filename Length       0045 (69)\n-229370 Extra Length          0000 (0)\n-229372 Comment Length        0000 (0)\n-229374 Disk Start            0000 (0)\n-229376 Int File Attributes   0000 (0)\n+22AFD3 Compression Method    0008 (8) 'Deflated'\n+22AFD5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22AFD9 CRC                   A77D588D (2810009741)\n+22AFDD Compressed Size       00000398 (920)\n+22AFE1 Uncompressed Size     00000921 (2337)\n+22AFE5 Filename Length       0043 (67)\n+22AFE7 Extra Length          0000 (0)\n+22AFE9 Comment Length        0000 (0)\n+22AFEB Disk Start            0000 (0)\n+22AFED Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229378 Ext File Attributes   00000000 (0)\n-22937C Local Header Offset   000FE40A (1041418)\n-229380 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22AFEF Ext File Attributes   00000000 (0)\n+22AFF3 Local Header Offset   00120D26 (1183014)\n+22AFF7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229380: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22AFF7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2293C5 CENTRAL HEADER #994   02014B50 (33639248)\n-2293C9 Created Zip Spec      14 (20) '2.0'\n-2293CA Created OS            00 (0) 'MS-DOS'\n-2293CB Extract Zip Spec      14 (20) '2.0'\n-2293CC Extract OS            00 (0) 'MS-DOS'\n-2293CD General Purpose Flag  0808 (2056)\n+22B03A CENTRAL HEADER #994   02014B50 (33639248)\n+22B03E Created Zip Spec      14 (20) '2.0'\n+22B03F Created OS            00 (0) 'MS-DOS'\n+22B040 Extract Zip Spec      14 (20) '2.0'\n+22B041 Extract OS            00 (0) 'MS-DOS'\n+22B042 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2293CF Compression Method    0008 (8) 'Deflated'\n-2293D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2293D5 CRC                   00000000 (0)\n-2293D9 Compressed Size       00000002 (2)\n-2293DD Uncompressed Size     00000000 (0)\n-2293E1 Filename Length       0033 (51)\n-2293E3 Extra Length          0000 (0)\n-2293E5 Comment Length        0000 (0)\n-2293E7 Disk Start            0000 (0)\n-2293E9 Int File Attributes   0000 (0)\n+22B044 Compression Method    0008 (8) 'Deflated'\n+22B046 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B04A CRC                   DF443A2F (3745790511)\n+22B04E Compressed Size       00000471 (1137)\n+22B052 Uncompressed Size     00000BC9 (3017)\n+22B056 Filename Length       0047 (71)\n+22B058 Extra Length          0000 (0)\n+22B05A Comment Length        0000 (0)\n+22B05C Disk Start            0000 (0)\n+22B05E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2293EB Ext File Attributes   00000000 (0)\n-2293EF Local Header Offset   000FEA3B (1043003)\n-2293F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B060 Ext File Attributes   00000000 (0)\n+22B064 Local Header Offset   0012112F (1184047)\n+22B068 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2293F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B068: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229426 CENTRAL HEADER #995   02014B50 (33639248)\n-22942A Created Zip Spec      14 (20) '2.0'\n-22942B Created OS            00 (0) 'MS-DOS'\n-22942C Extract Zip Spec      14 (20) '2.0'\n-22942D Extract OS            00 (0) 'MS-DOS'\n-22942E General Purpose Flag  0808 (2056)\n+22B0AF CENTRAL HEADER #995   02014B50 (33639248)\n+22B0B3 Created Zip Spec      14 (20) '2.0'\n+22B0B4 Created OS            00 (0) 'MS-DOS'\n+22B0B5 Extract Zip Spec      14 (20) '2.0'\n+22B0B6 Extract OS            00 (0) 'MS-DOS'\n+22B0B7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229430 Compression Method    0008 (8) 'Deflated'\n-229432 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229436 CRC                   58FEAB57 (1493085015)\n-22943A Compressed Size       000003A4 (932)\n-22943E Uncompressed Size     000008C3 (2243)\n-229442 Filename Length       0047 (71)\n-229444 Extra Length          0000 (0)\n-229446 Comment Length        0000 (0)\n-229448 Disk Start            0000 (0)\n-22944A Int File Attributes   0000 (0)\n+22B0B9 Compression Method    0008 (8) 'Deflated'\n+22B0BB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B0BF CRC                   00000000 (0)\n+22B0C3 Compressed Size       00000002 (2)\n+22B0C7 Uncompressed Size     00000000 (0)\n+22B0CB Filename Length       0030 (48)\n+22B0CD Extra Length          0000 (0)\n+22B0CF Comment Length        0000 (0)\n+22B0D1 Disk Start            0000 (0)\n+22B0D3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22944C Ext File Attributes   00000000 (0)\n-229450 Local Header Offset   000FEA9E (1043102)\n-229454 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B0D5 Ext File Attributes   00000000 (0)\n+22B0D9 Local Header Offset   00121615 (1185301)\n+22B0DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229454: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B0DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22949B CENTRAL HEADER #996   02014B50 (33639248)\n-22949F Created Zip Spec      14 (20) '2.0'\n-2294A0 Created OS            00 (0) 'MS-DOS'\n-2294A1 Extract Zip Spec      14 (20) '2.0'\n-2294A2 Extract OS            00 (0) 'MS-DOS'\n-2294A3 General Purpose Flag  0808 (2056)\n+22B10D CENTRAL HEADER #996   02014B50 (33639248)\n+22B111 Created Zip Spec      14 (20) '2.0'\n+22B112 Created OS            00 (0) 'MS-DOS'\n+22B113 Extract Zip Spec      14 (20) '2.0'\n+22B114 Extract OS            00 (0) 'MS-DOS'\n+22B115 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2294A5 Compression Method    0008 (8) 'Deflated'\n-2294A7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2294AB CRC                   BC1F87C6 (3156182982)\n-2294AF Compressed Size       00000D44 (3396)\n-2294B3 Uncompressed Size     0000391E (14622)\n-2294B7 Filename Length       0048 (72)\n-2294B9 Extra Length          0000 (0)\n-2294BB Comment Length        0000 (0)\n-2294BD Disk Start            0000 (0)\n-2294BF Int File Attributes   0000 (0)\n+22B117 Compression Method    0008 (8) 'Deflated'\n+22B119 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B11D CRC                   C3B87E97 (3283648151)\n+22B121 Compressed Size       00000441 (1089)\n+22B125 Uncompressed Size     00000F4C (3916)\n+22B129 Filename Length       0037 (55)\n+22B12B Extra Length          0000 (0)\n+22B12D Comment Length        0000 (0)\n+22B12F Disk Start            0000 (0)\n+22B131 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2294C1 Ext File Attributes   00000000 (0)\n-2294C5 Local Header Offset   000FEEB7 (1044151)\n-2294C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B133 Ext File Attributes   00000000 (0)\n+22B137 Local Header Offset   00121675 (1185397)\n+22B13B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2294C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B13B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229511 CENTRAL HEADER #997   02014B50 (33639248)\n-229515 Created Zip Spec      14 (20) '2.0'\n-229516 Created OS            00 (0) 'MS-DOS'\n-229517 Extract Zip Spec      14 (20) '2.0'\n-229518 Extract OS            00 (0) 'MS-DOS'\n-229519 General Purpose Flag  0808 (2056)\n+22B172 CENTRAL HEADER #997   02014B50 (33639248)\n+22B176 Created Zip Spec      14 (20) '2.0'\n+22B177 Created OS            00 (0) 'MS-DOS'\n+22B178 Extract Zip Spec      14 (20) '2.0'\n+22B179 Extract OS            00 (0) 'MS-DOS'\n+22B17A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22951B Compression Method    0008 (8) 'Deflated'\n-22951D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229521 CRC                   00000000 (0)\n-229525 Compressed Size       00000002 (2)\n-229529 Uncompressed Size     00000000 (0)\n-22952D Filename Length       001F (31)\n-22952F Extra Length          0000 (0)\n-229531 Comment Length        0000 (0)\n-229533 Disk Start            0000 (0)\n-229535 Int File Attributes   0000 (0)\n+22B17C Compression Method    0008 (8) 'Deflated'\n+22B17E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B182 CRC                   BE4436A8 (3192141480)\n+22B186 Compressed Size       0000003E (62)\n+22B18A Uncompressed Size     00000046 (70)\n+22B18E Filename Length       003E (62)\n+22B190 Extra Length          0000 (0)\n+22B192 Comment Length        0000 (0)\n+22B194 Disk Start            0000 (0)\n+22B196 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229537 Ext File Attributes   00000000 (0)\n-22953B Local Header Offset   000FFC71 (1047665)\n-22953F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B198 Ext File Attributes   00000000 (0)\n+22B19C Local Header Offset   00121B1B (1186587)\n+22B1A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22953F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B1A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22955E CENTRAL HEADER #998   02014B50 (33639248)\n-229562 Created Zip Spec      14 (20) '2.0'\n-229563 Created OS            00 (0) 'MS-DOS'\n-229564 Extract Zip Spec      14 (20) '2.0'\n-229565 Extract OS            00 (0) 'MS-DOS'\n-229566 General Purpose Flag  0808 (2056)\n+22B1DE CENTRAL HEADER #998   02014B50 (33639248)\n+22B1E2 Created Zip Spec      14 (20) '2.0'\n+22B1E3 Created OS            00 (0) 'MS-DOS'\n+22B1E4 Extract Zip Spec      14 (20) '2.0'\n+22B1E5 Extract OS            00 (0) 'MS-DOS'\n+22B1E6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229568 Compression Method    0008 (8) 'Deflated'\n-22956A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22956E CRC                   36F8F065 (922284133)\n-229572 Compressed Size       000002DB (731)\n-229576 Uncompressed Size     0000062A (1578)\n-22957A Filename Length       0037 (55)\n-22957C Extra Length          0000 (0)\n-22957E Comment Length        0000 (0)\n-229580 Disk Start            0000 (0)\n-229582 Int File Attributes   0000 (0)\n+22B1E8 Compression Method    0008 (8) 'Deflated'\n+22B1EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B1EE CRC                   00000000 (0)\n+22B1F2 Compressed Size       00000002 (2)\n+22B1F6 Uncompressed Size     00000000 (0)\n+22B1FA Filename Length       0024 (36)\n+22B1FC Extra Length          0000 (0)\n+22B1FE Comment Length        0000 (0)\n+22B200 Disk Start            0000 (0)\n+22B202 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229584 Ext File Attributes   00000000 (0)\n-229588 Local Header Offset   000FFCC0 (1047744)\n-22958C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B204 Ext File Attributes   00000000 (0)\n+22B208 Local Header Offset   00121BC5 (1186757)\n+22B20C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22958C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B20C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2295C3 CENTRAL HEADER #999   02014B50 (33639248)\n-2295C7 Created Zip Spec      14 (20) '2.0'\n-2295C8 Created OS            00 (0) 'MS-DOS'\n-2295C9 Extract Zip Spec      14 (20) '2.0'\n-2295CA Extract OS            00 (0) 'MS-DOS'\n-2295CB General Purpose Flag  0808 (2056)\n+22B230 CENTRAL HEADER #999   02014B50 (33639248)\n+22B234 Created Zip Spec      14 (20) '2.0'\n+22B235 Created OS            00 (0) 'MS-DOS'\n+22B236 Extract Zip Spec      14 (20) '2.0'\n+22B237 Extract OS            00 (0) 'MS-DOS'\n+22B238 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2295CD Compression Method    0008 (8) 'Deflated'\n-2295CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2295D3 CRC                   CD8B51D1 (3448459729)\n-2295D7 Compressed Size       00000232 (562)\n-2295DB Uncompressed Size     000003DC (988)\n-2295DF Filename Length       0031 (49)\n-2295E1 Extra Length          0000 (0)\n-2295E3 Comment Length        0000 (0)\n-2295E5 Disk Start            0000 (0)\n-2295E7 Int File Attributes   0000 (0)\n+22B23A Compression Method    0008 (8) 'Deflated'\n+22B23C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B240 CRC                   780A8F69 (2013957993)\n+22B244 Compressed Size       000002C5 (709)\n+22B248 Uncompressed Size     000005F6 (1526)\n+22B24C Filename Length       0036 (54)\n+22B24E Extra Length          0000 (0)\n+22B250 Comment Length        0000 (0)\n+22B252 Disk Start            0000 (0)\n+22B254 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2295E9 Ext File Attributes   00000000 (0)\n-2295ED Local Header Offset   00100000 (1048576)\n-2295F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B256 Ext File Attributes   00000000 (0)\n+22B25A Local Header Offset   00121C19 (1186841)\n+22B25E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2295F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B25E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229622 CENTRAL HEADER #1000  02014B50 (33639248)\n-229626 Created Zip Spec      14 (20) '2.0'\n-229627 Created OS            00 (0) 'MS-DOS'\n-229628 Extract Zip Spec      14 (20) '2.0'\n-229629 Extract OS            00 (0) 'MS-DOS'\n-22962A General Purpose Flag  0808 (2056)\n+22B294 CENTRAL HEADER #1000  02014B50 (33639248)\n+22B298 Created Zip Spec      14 (20) '2.0'\n+22B299 Created OS            00 (0) 'MS-DOS'\n+22B29A Extract Zip Spec      14 (20) '2.0'\n+22B29B Extract OS            00 (0) 'MS-DOS'\n+22B29C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22962C Compression Method    0008 (8) 'Deflated'\n-22962E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229632 CRC                   123318DF (305338591)\n-229636 Compressed Size       0000032F (815)\n-22963A Uncompressed Size     000006C9 (1737)\n-22963E Filename Length       002D (45)\n-229640 Extra Length          0000 (0)\n-229642 Comment Length        0000 (0)\n-229644 Disk Start            0000 (0)\n-229646 Int File Attributes   0000 (0)\n+22B29E Compression Method    0008 (8) 'Deflated'\n+22B2A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B2A4 CRC                   0693959E (110335390)\n+22B2A8 Compressed Size       0000044E (1102)\n+22B2AC Uncompressed Size     00000AB6 (2742)\n+22B2B0 Filename Length       0035 (53)\n+22B2B2 Extra Length          0000 (0)\n+22B2B4 Comment Length        0000 (0)\n+22B2B6 Disk Start            0000 (0)\n+22B2B8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229648 Ext File Attributes   00000000 (0)\n-22964C Local Header Offset   00100291 (1049233)\n-229650 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B2BA Ext File Attributes   00000000 (0)\n+22B2BE Local Header Offset   00121F42 (1187650)\n+22B2C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229650: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B2C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22967D CENTRAL HEADER #1001  02014B50 (33639248)\n-229681 Created Zip Spec      14 (20) '2.0'\n-229682 Created OS            00 (0) 'MS-DOS'\n-229683 Extract Zip Spec      14 (20) '2.0'\n-229684 Extract OS            00 (0) 'MS-DOS'\n-229685 General Purpose Flag  0808 (2056)\n+22B2F7 CENTRAL HEADER #1001  02014B50 (33639248)\n+22B2FB Created Zip Spec      14 (20) '2.0'\n+22B2FC Created OS            00 (0) 'MS-DOS'\n+22B2FD Extract Zip Spec      14 (20) '2.0'\n+22B2FE Extract OS            00 (0) 'MS-DOS'\n+22B2FF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229687 Compression Method    0008 (8) 'Deflated'\n-229689 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22968D CRC                   6B994ABC (1805208252)\n-229691 Compressed Size       00000650 (1616)\n-229695 Uncompressed Size     000018EB (6379)\n-229699 Filename Length       002E (46)\n-22969B Extra Length          0000 (0)\n-22969D Comment Length        0000 (0)\n-22969F Disk Start            0000 (0)\n-2296A1 Int File Attributes   0000 (0)\n+22B301 Compression Method    0008 (8) 'Deflated'\n+22B303 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B307 CRC                   EACFC8D2 (3939485906)\n+22B30B Compressed Size       00000613 (1555)\n+22B30F Uncompressed Size     000011EA (4586)\n+22B313 Filename Length       0036 (54)\n+22B315 Extra Length          0000 (0)\n+22B317 Comment Length        0000 (0)\n+22B319 Disk Start            0000 (0)\n+22B31B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2296A3 Ext File Attributes   00000000 (0)\n-2296A7 Local Header Offset   0010061B (1050139)\n-2296AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B31D Ext File Attributes   00000000 (0)\n+22B321 Local Header Offset   001223F3 (1188851)\n+22B325 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2296AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B325: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2296D9 CENTRAL HEADER #1002  02014B50 (33639248)\n-2296DD Created Zip Spec      14 (20) '2.0'\n-2296DE Created OS            00 (0) 'MS-DOS'\n-2296DF Extract Zip Spec      14 (20) '2.0'\n-2296E0 Extract OS            00 (0) 'MS-DOS'\n-2296E1 General Purpose Flag  0808 (2056)\n+22B35B CENTRAL HEADER #1002  02014B50 (33639248)\n+22B35F Created Zip Spec      14 (20) '2.0'\n+22B360 Created OS            00 (0) 'MS-DOS'\n+22B361 Extract Zip Spec      14 (20) '2.0'\n+22B362 Extract OS            00 (0) 'MS-DOS'\n+22B363 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2296E3 Compression Method    0008 (8) 'Deflated'\n-2296E5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2296E9 CRC                   387B0FF7 (947589111)\n-2296ED Compressed Size       0000027C (636)\n-2296F1 Uncompressed Size     000007B7 (1975)\n-2296F5 Filename Length       0033 (51)\n-2296F7 Extra Length          0000 (0)\n-2296F9 Comment Length        0000 (0)\n-2296FB Disk Start            0000 (0)\n-2296FD Int File Attributes   0000 (0)\n+22B365 Compression Method    0008 (8) 'Deflated'\n+22B367 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B36B CRC                   00000000 (0)\n+22B36F Compressed Size       00000002 (2)\n+22B373 Uncompressed Size     00000000 (0)\n+22B377 Filename Length       0030 (48)\n+22B379 Extra Length          0000 (0)\n+22B37B Comment Length        0000 (0)\n+22B37D Disk Start            0000 (0)\n+22B37F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2296FF Ext File Attributes   00000000 (0)\n-229703 Local Header Offset   00100CC7 (1051847)\n-229707 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B381 Ext File Attributes   00000000 (0)\n+22B385 Local Header Offset   00122A6A (1190506)\n+22B389 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229707: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B389: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22973A CENTRAL HEADER #1003  02014B50 (33639248)\n-22973E Created Zip Spec      14 (20) '2.0'\n-22973F Created OS            00 (0) 'MS-DOS'\n-229740 Extract Zip Spec      14 (20) '2.0'\n-229741 Extract OS            00 (0) 'MS-DOS'\n-229742 General Purpose Flag  0808 (2056)\n+22B3B9 CENTRAL HEADER #1003  02014B50 (33639248)\n+22B3BD Created Zip Spec      14 (20) '2.0'\n+22B3BE Created OS            00 (0) 'MS-DOS'\n+22B3BF Extract Zip Spec      14 (20) '2.0'\n+22B3C0 Extract OS            00 (0) 'MS-DOS'\n+22B3C1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229744 Compression Method    0008 (8) 'Deflated'\n-229746 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22974A CRC                   0F6205B4 (258082228)\n-22974E Compressed Size       00000295 (661)\n-229752 Uncompressed Size     000004DB (1243)\n-229756 Filename Length       002F (47)\n-229758 Extra Length          0000 (0)\n-22975A Comment Length        0000 (0)\n-22975C Disk Start            0000 (0)\n-22975E Int File Attributes   0000 (0)\n+22B3C3 Compression Method    0008 (8) 'Deflated'\n+22B3C5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B3C9 CRC                   C4A7A8FF (3299322111)\n+22B3CD Compressed Size       00000357 (855)\n+22B3D1 Uncompressed Size     00000783 (1923)\n+22B3D5 Filename Length       0037 (55)\n+22B3D7 Extra Length          0000 (0)\n+22B3D9 Comment Length        0000 (0)\n+22B3DB Disk Start            0000 (0)\n+22B3DD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229760 Ext File Attributes   00000000 (0)\n-229764 Local Header Offset   00100FA4 (1052580)\n-229768 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B3DF Ext File Attributes   00000000 (0)\n+22B3E3 Local Header Offset   00122ACA (1190602)\n+22B3E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229768: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B3E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229797 CENTRAL HEADER #1004  02014B50 (33639248)\n-22979B Created Zip Spec      14 (20) '2.0'\n-22979C Created OS            00 (0) 'MS-DOS'\n-22979D Extract Zip Spec      14 (20) '2.0'\n-22979E Extract OS            00 (0) 'MS-DOS'\n-22979F General Purpose Flag  0808 (2056)\n+22B41E CENTRAL HEADER #1004  02014B50 (33639248)\n+22B422 Created Zip Spec      14 (20) '2.0'\n+22B423 Created OS            00 (0) 'MS-DOS'\n+22B424 Extract Zip Spec      14 (20) '2.0'\n+22B425 Extract OS            00 (0) 'MS-DOS'\n+22B426 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2297A1 Compression Method    0008 (8) 'Deflated'\n-2297A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2297A7 CRC                   6ADC9301 (1792840449)\n-2297AB Compressed Size       0000022E (558)\n-2297AF Uncompressed Size     000003E4 (996)\n-2297B3 Filename Length       0031 (49)\n-2297B5 Extra Length          0000 (0)\n-2297B7 Comment Length        0000 (0)\n-2297B9 Disk Start            0000 (0)\n-2297BB Int File Attributes   0000 (0)\n+22B428 Compression Method    0008 (8) 'Deflated'\n+22B42A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B42E CRC                   09A59FE7 (161849319)\n+22B432 Compressed Size       00000044 (68)\n+22B436 Uncompressed Size     00000046 (70)\n+22B43A Filename Length       003E (62)\n+22B43C Extra Length          0000 (0)\n+22B43E Comment Length        0000 (0)\n+22B440 Disk Start            0000 (0)\n+22B442 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2297BD Ext File Attributes   00000000 (0)\n-2297C1 Local Header Offset   00101296 (1053334)\n-2297C5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B444 Ext File Attributes   00000000 (0)\n+22B448 Local Header Offset   00122E86 (1191558)\n+22B44C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2297C5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B44C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2297F6 CENTRAL HEADER #1005  02014B50 (33639248)\n-2297FA Created Zip Spec      14 (20) '2.0'\n-2297FB Created OS            00 (0) 'MS-DOS'\n-2297FC Extract Zip Spec      14 (20) '2.0'\n-2297FD Extract OS            00 (0) 'MS-DOS'\n-2297FE General Purpose Flag  0808 (2056)\n+22B48A CENTRAL HEADER #1005  02014B50 (33639248)\n+22B48E Created Zip Spec      14 (20) '2.0'\n+22B48F Created OS            00 (0) 'MS-DOS'\n+22B490 Extract Zip Spec      14 (20) '2.0'\n+22B491 Extract OS            00 (0) 'MS-DOS'\n+22B492 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229800 Compression Method    0008 (8) 'Deflated'\n-229802 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229806 CRC                   00000000 (0)\n-22980A Compressed Size       00000002 (2)\n-22980E Uncompressed Size     00000000 (0)\n-229812 Filename Length       0025 (37)\n-229814 Extra Length          0000 (0)\n-229816 Comment Length        0000 (0)\n-229818 Disk Start            0000 (0)\n-22981A Int File Attributes   0000 (0)\n+22B494 Compression Method    0008 (8) 'Deflated'\n+22B496 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B49A CRC                   00000000 (0)\n+22B49E Compressed Size       00000002 (2)\n+22B4A2 Uncompressed Size     00000000 (0)\n+22B4A6 Filename Length       0023 (35)\n+22B4A8 Extra Length          0000 (0)\n+22B4AA Comment Length        0000 (0)\n+22B4AC Disk Start            0000 (0)\n+22B4AE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22981C Ext File Attributes   00000000 (0)\n-229820 Local Header Offset   00101523 (1053987)\n-229824 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B4B0 Ext File Attributes   00000000 (0)\n+22B4B4 Local Header Offset   00122F36 (1191734)\n+22B4B8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229824: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B4B8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229849 CENTRAL HEADER #1006  02014B50 (33639248)\n-22984D Created Zip Spec      14 (20) '2.0'\n-22984E Created OS            00 (0) 'MS-DOS'\n-22984F Extract Zip Spec      14 (20) '2.0'\n-229850 Extract OS            00 (0) 'MS-DOS'\n-229851 General Purpose Flag  0808 (2056)\n+22B4DB CENTRAL HEADER #1006  02014B50 (33639248)\n+22B4DF Created Zip Spec      14 (20) '2.0'\n+22B4E0 Created OS            00 (0) 'MS-DOS'\n+22B4E1 Extract Zip Spec      14 (20) '2.0'\n+22B4E2 Extract OS            00 (0) 'MS-DOS'\n+22B4E3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229853 Compression Method    0008 (8) 'Deflated'\n-229855 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229859 CRC                   3F422686 (1061299846)\n-22985D Compressed Size       00000266 (614)\n-229861 Uncompressed Size     0000046C (1132)\n-229865 Filename Length       0041 (65)\n-229867 Extra Length          0000 (0)\n-229869 Comment Length        0000 (0)\n-22986B Disk Start            0000 (0)\n-22986D Int File Attributes   0000 (0)\n+22B4E5 Compression Method    0008 (8) 'Deflated'\n+22B4E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B4EB CRC                   928E5A20 (2458802720)\n+22B4EF Compressed Size       000008EA (2282)\n+22B4F3 Uncompressed Size     00001E46 (7750)\n+22B4F7 Filename Length       0034 (52)\n+22B4F9 Extra Length          0000 (0)\n+22B4FB Comment Length        0000 (0)\n+22B4FD Disk Start            0000 (0)\n+22B4FF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22986F Ext File Attributes   00000000 (0)\n-229873 Local Header Offset   00101578 (1054072)\n-229877 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B501 Ext File Attributes   00000000 (0)\n+22B505 Local Header Offset   00122F89 (1191817)\n+22B509 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229877: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B509: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2298B8 CENTRAL HEADER #1007  02014B50 (33639248)\n-2298BC Created Zip Spec      14 (20) '2.0'\n-2298BD Created OS            00 (0) 'MS-DOS'\n-2298BE Extract Zip Spec      14 (20) '2.0'\n-2298BF Extract OS            00 (0) 'MS-DOS'\n-2298C0 General Purpose Flag  0808 (2056)\n+22B53D CENTRAL HEADER #1007  02014B50 (33639248)\n+22B541 Created Zip Spec      14 (20) '2.0'\n+22B542 Created OS            00 (0) 'MS-DOS'\n+22B543 Extract Zip Spec      14 (20) '2.0'\n+22B544 Extract OS            00 (0) 'MS-DOS'\n+22B545 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2298C2 Compression Method    0008 (8) 'Deflated'\n-2298C4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2298C8 CRC                   A75036DE (2807051998)\n-2298CC Compressed Size       00000F72 (3954)\n-2298D0 Uncompressed Size     00004108 (16648)\n-2298D4 Filename Length       0035 (53)\n-2298D6 Extra Length          0000 (0)\n-2298D8 Comment Length        0000 (0)\n-2298DA Disk Start            0000 (0)\n-2298DC Int File Attributes   0000 (0)\n+22B547 Compression Method    0008 (8) 'Deflated'\n+22B549 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B54D CRC                   B3BC74DF (3015472351)\n+22B551 Compressed Size       00000242 (578)\n+22B555 Uncompressed Size     00000429 (1065)\n+22B559 Filename Length       003D (61)\n+22B55B Extra Length          0000 (0)\n+22B55D Comment Length        0000 (0)\n+22B55F Disk Start            0000 (0)\n+22B561 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2298DE Ext File Attributes   00000000 (0)\n-2298E2 Local Header Offset   0010184D (1054797)\n-2298E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B563 Ext File Attributes   00000000 (0)\n+22B567 Local Header Offset   001238D5 (1194197)\n+22B56B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2298E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B56B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22991B CENTRAL HEADER #1008  02014B50 (33639248)\n-22991F Created Zip Spec      14 (20) '2.0'\n-229920 Created OS            00 (0) 'MS-DOS'\n-229921 Extract Zip Spec      14 (20) '2.0'\n-229922 Extract OS            00 (0) 'MS-DOS'\n-229923 General Purpose Flag  0808 (2056)\n+22B5A8 CENTRAL HEADER #1008  02014B50 (33639248)\n+22B5AC Created Zip Spec      14 (20) '2.0'\n+22B5AD Created OS            00 (0) 'MS-DOS'\n+22B5AE Extract Zip Spec      14 (20) '2.0'\n+22B5AF Extract OS            00 (0) 'MS-DOS'\n+22B5B0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229925 Compression Method    0008 (8) 'Deflated'\n-229927 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22992B CRC                   F1F2D150 (4059222352)\n-22992F Compressed Size       00001721 (5921)\n-229933 Uncompressed Size     00006EC8 (28360)\n-229937 Filename Length       003C (60)\n-229939 Extra Length          0000 (0)\n-22993B Comment Length        0000 (0)\n-22993D Disk Start            0000 (0)\n-22993F Int File Attributes   0000 (0)\n+22B5B2 Compression Method    0008 (8) 'Deflated'\n+22B5B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B5B8 CRC                   F065E593 (4033209747)\n+22B5BC Compressed Size       000003EA (1002)\n+22B5C0 Uncompressed Size     00000928 (2344)\n+22B5C4 Filename Length       003C (60)\n+22B5C6 Extra Length          0000 (0)\n+22B5C8 Comment Length        0000 (0)\n+22B5CA Disk Start            0000 (0)\n+22B5CC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229941 Ext File Attributes   00000000 (0)\n-229945 Local Header Offset   00102822 (1058850)\n-229949 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B5CE Ext File Attributes   00000000 (0)\n+22B5D2 Local Header Offset   00123B82 (1194882)\n+22B5D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229949: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B5D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229985 CENTRAL HEADER #1009  02014B50 (33639248)\n-229989 Created Zip Spec      14 (20) '2.0'\n-22998A Created OS            00 (0) 'MS-DOS'\n-22998B Extract Zip Spec      14 (20) '2.0'\n-22998C Extract OS            00 (0) 'MS-DOS'\n-22998D General Purpose Flag  0808 (2056)\n+22B612 CENTRAL HEADER #1009  02014B50 (33639248)\n+22B616 Created Zip Spec      14 (20) '2.0'\n+22B617 Created OS            00 (0) 'MS-DOS'\n+22B618 Extract Zip Spec      14 (20) '2.0'\n+22B619 Extract OS            00 (0) 'MS-DOS'\n+22B61A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22998F Compression Method    0008 (8) 'Deflated'\n-229991 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229995 CRC                   F823DAB1 (4163099313)\n-229999 Compressed Size       00000253 (595)\n-22999D Uncompressed Size     00000480 (1152)\n-2299A1 Filename Length       003A (58)\n-2299A3 Extra Length          0000 (0)\n-2299A5 Comment Length        0000 (0)\n-2299A7 Disk Start            0000 (0)\n-2299A9 Int File Attributes   0000 (0)\n+22B61C Compression Method    0008 (8) 'Deflated'\n+22B61E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B622 CRC                   C56F8EA2 (3312422562)\n+22B626 Compressed Size       000003DE (990)\n+22B62A Uncompressed Size     00000B62 (2914)\n+22B62E Filename Length       003F (63)\n+22B630 Extra Length          0000 (0)\n+22B632 Comment Length        0000 (0)\n+22B634 Disk Start            0000 (0)\n+22B636 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2299AB Ext File Attributes   00000000 (0)\n-2299AF Local Header Offset   00103FAD (1064877)\n-2299B3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B638 Ext File Attributes   00000000 (0)\n+22B63C Local Header Offset   00123FD6 (1195990)\n+22B640 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2299B3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B640: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2299ED CENTRAL HEADER #1010  02014B50 (33639248)\n-2299F1 Created Zip Spec      14 (20) '2.0'\n-2299F2 Created OS            00 (0) 'MS-DOS'\n-2299F3 Extract Zip Spec      14 (20) '2.0'\n-2299F4 Extract OS            00 (0) 'MS-DOS'\n-2299F5 General Purpose Flag  0808 (2056)\n+22B67F CENTRAL HEADER #1010  02014B50 (33639248)\n+22B683 Created Zip Spec      14 (20) '2.0'\n+22B684 Created OS            00 (0) 'MS-DOS'\n+22B685 Extract Zip Spec      14 (20) '2.0'\n+22B686 Extract OS            00 (0) 'MS-DOS'\n+22B687 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2299F7 Compression Method    0008 (8) 'Deflated'\n-2299F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2299FD CRC                   0B4932D9 (189346521)\n-229A01 Compressed Size       00000430 (1072)\n-229A05 Uncompressed Size     00000D69 (3433)\n-229A09 Filename Length       0034 (52)\n-229A0B Extra Length          0000 (0)\n-229A0D Comment Length        0000 (0)\n-229A0F Disk Start            0000 (0)\n-229A11 Int File Attributes   0000 (0)\n+22B689 Compression Method    0008 (8) 'Deflated'\n+22B68B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B68F CRC                   00000000 (0)\n+22B693 Compressed Size       00000002 (2)\n+22B697 Uncompressed Size     00000000 (0)\n+22B69B Filename Length       002F (47)\n+22B69D Extra Length          0000 (0)\n+22B69F Comment Length        0000 (0)\n+22B6A1 Disk Start            0000 (0)\n+22B6A3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229A13 Ext File Attributes   00000000 (0)\n-229A17 Local Header Offset   00104268 (1065576)\n-229A1B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B6A5 Ext File Attributes   00000000 (0)\n+22B6A9 Local Header Offset   00124421 (1197089)\n+22B6AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229A1B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B6AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229A4F CENTRAL HEADER #1011  02014B50 (33639248)\n-229A53 Created Zip Spec      14 (20) '2.0'\n-229A54 Created OS            00 (0) 'MS-DOS'\n-229A55 Extract Zip Spec      14 (20) '2.0'\n-229A56 Extract OS            00 (0) 'MS-DOS'\n-229A57 General Purpose Flag  0808 (2056)\n+22B6DC CENTRAL HEADER #1011  02014B50 (33639248)\n+22B6E0 Created Zip Spec      14 (20) '2.0'\n+22B6E1 Created OS            00 (0) 'MS-DOS'\n+22B6E2 Extract Zip Spec      14 (20) '2.0'\n+22B6E3 Extract OS            00 (0) 'MS-DOS'\n+22B6E4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229A59 Compression Method    0008 (8) 'Deflated'\n-229A5B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229A5F CRC                   117709A7 (293013927)\n-229A63 Compressed Size       000002BF (703)\n-229A67 Uncompressed Size     0000056A (1386)\n-229A6B Filename Length       0035 (53)\n-229A6D Extra Length          0000 (0)\n-229A6F Comment Length        0000 (0)\n-229A71 Disk Start            0000 (0)\n-229A73 Int File Attributes   0000 (0)\n+22B6E6 Compression Method    0008 (8) 'Deflated'\n+22B6E8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B6EC CRC                   03176EE3 (51867363)\n+22B6F0 Compressed Size       000003AA (938)\n+22B6F4 Uncompressed Size     00000988 (2440)\n+22B6F8 Filename Length       0036 (54)\n+22B6FA Extra Length          0000 (0)\n+22B6FC Comment Length        0000 (0)\n+22B6FE Disk Start            0000 (0)\n+22B700 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229A75 Ext File Attributes   00000000 (0)\n-229A79 Local Header Offset   001046FA (1066746)\n-229A7D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B702 Ext File Attributes   00000000 (0)\n+22B706 Local Header Offset   00124480 (1197184)\n+22B70A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229A7D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B70A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229AB2 CENTRAL HEADER #1012  02014B50 (33639248)\n-229AB6 Created Zip Spec      14 (20) '2.0'\n-229AB7 Created OS            00 (0) 'MS-DOS'\n-229AB8 Extract Zip Spec      14 (20) '2.0'\n-229AB9 Extract OS            00 (0) 'MS-DOS'\n-229ABA General Purpose Flag  0808 (2056)\n+22B740 CENTRAL HEADER #1012  02014B50 (33639248)\n+22B744 Created Zip Spec      14 (20) '2.0'\n+22B745 Created OS            00 (0) 'MS-DOS'\n+22B746 Extract Zip Spec      14 (20) '2.0'\n+22B747 Extract OS            00 (0) 'MS-DOS'\n+22B748 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229ABC Compression Method    0008 (8) 'Deflated'\n-229ABE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229AC2 CRC                   00000000 (0)\n-229AC6 Compressed Size       00000002 (2)\n-229ACA Uncompressed Size     00000000 (0)\n-229ACE Filename Length       0026 (38)\n-229AD0 Extra Length          0000 (0)\n-229AD2 Comment Length        0000 (0)\n-229AD4 Disk Start            0000 (0)\n-229AD6 Int File Attributes   0000 (0)\n+22B74A Compression Method    0008 (8) 'Deflated'\n+22B74C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B750 CRC                   8E20026A (2384462442)\n+22B754 Compressed Size       00000043 (67)\n+22B758 Uncompressed Size     00000045 (69)\n+22B75C Filename Length       003D (61)\n+22B75E Extra Length          0000 (0)\n+22B760 Comment Length        0000 (0)\n+22B762 Disk Start            0000 (0)\n+22B764 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229AD8 Ext File Attributes   00000000 (0)\n-229ADC Local Header Offset   00104A1C (1067548)\n-229AE0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B766 Ext File Attributes   00000000 (0)\n+22B76A Local Header Offset   0012488E (1198222)\n+22B76E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229AE0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B76E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229B06 CENTRAL HEADER #1013  02014B50 (33639248)\n-229B0A Created Zip Spec      14 (20) '2.0'\n-229B0B Created OS            00 (0) 'MS-DOS'\n-229B0C Extract Zip Spec      14 (20) '2.0'\n-229B0D Extract OS            00 (0) 'MS-DOS'\n-229B0E General Purpose Flag  0808 (2056)\n+22B7AB CENTRAL HEADER #1013  02014B50 (33639248)\n+22B7AF Created Zip Spec      14 (20) '2.0'\n+22B7B0 Created OS            00 (0) 'MS-DOS'\n+22B7B1 Extract Zip Spec      14 (20) '2.0'\n+22B7B2 Extract OS            00 (0) 'MS-DOS'\n+22B7B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229B10 Compression Method    0008 (8) 'Deflated'\n-229B12 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229B16 CRC                   35D495FB (903124475)\n-229B1A Compressed Size       000004DC (1244)\n-229B1E Uncompressed Size     00000B6B (2923)\n-229B22 Filename Length       0035 (53)\n-229B24 Extra Length          0000 (0)\n-229B26 Comment Length        0000 (0)\n-229B28 Disk Start            0000 (0)\n-229B2A Int File Attributes   0000 (0)\n+22B7B5 Compression Method    0008 (8) 'Deflated'\n+22B7B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B7BB CRC                   00000000 (0)\n+22B7BF Compressed Size       00000002 (2)\n+22B7C3 Uncompressed Size     00000000 (0)\n+22B7C7 Filename Length       001F (31)\n+22B7C9 Extra Length          0000 (0)\n+22B7CB Comment Length        0000 (0)\n+22B7CD Disk Start            0000 (0)\n+22B7CF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229B2C Ext File Attributes   00000000 (0)\n-229B30 Local Header Offset   00104A72 (1067634)\n-229B34 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B7D1 Ext File Attributes   00000000 (0)\n+22B7D5 Local Header Offset   0012493C (1198396)\n+22B7D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229B34: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B7D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229B69 CENTRAL HEADER #1014  02014B50 (33639248)\n-229B6D Created Zip Spec      14 (20) '2.0'\n-229B6E Created OS            00 (0) 'MS-DOS'\n-229B6F Extract Zip Spec      14 (20) '2.0'\n-229B70 Extract OS            00 (0) 'MS-DOS'\n-229B71 General Purpose Flag  0808 (2056)\n+22B7F8 CENTRAL HEADER #1014  02014B50 (33639248)\n+22B7FC Created Zip Spec      14 (20) '2.0'\n+22B7FD Created OS            00 (0) 'MS-DOS'\n+22B7FE Extract Zip Spec      14 (20) '2.0'\n+22B7FF Extract OS            00 (0) 'MS-DOS'\n+22B800 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229B73 Compression Method    0008 (8) 'Deflated'\n-229B75 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229B79 CRC                   00000000 (0)\n-229B7D Compressed Size       00000002 (2)\n-229B81 Uncompressed Size     00000000 (0)\n-229B85 Filename Length       0027 (39)\n-229B87 Extra Length          0000 (0)\n-229B89 Comment Length        0000 (0)\n-229B8B Disk Start            0000 (0)\n-229B8D Int File Attributes   0000 (0)\n+22B802 Compression Method    0008 (8) 'Deflated'\n+22B804 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B808 CRC                   00000000 (0)\n+22B80C Compressed Size       00000002 (2)\n+22B810 Uncompressed Size     00000000 (0)\n+22B814 Filename Length       0023 (35)\n+22B816 Extra Length          0000 (0)\n+22B818 Comment Length        0000 (0)\n+22B81A Disk Start            0000 (0)\n+22B81C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229B8F Ext File Attributes   00000000 (0)\n-229B93 Local Header Offset   00104FB1 (1068977)\n-229B97 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B81E Ext File Attributes   00000000 (0)\n+22B822 Local Header Offset   0012498B (1198475)\n+22B826 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229B97: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B826: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229BBE CENTRAL HEADER #1015  02014B50 (33639248)\n-229BC2 Created Zip Spec      14 (20) '2.0'\n-229BC3 Created OS            00 (0) 'MS-DOS'\n-229BC4 Extract Zip Spec      14 (20) '2.0'\n-229BC5 Extract OS            00 (0) 'MS-DOS'\n-229BC6 General Purpose Flag  0808 (2056)\n+22B849 CENTRAL HEADER #1015  02014B50 (33639248)\n+22B84D Created Zip Spec      14 (20) '2.0'\n+22B84E Created OS            00 (0) 'MS-DOS'\n+22B84F Extract Zip Spec      14 (20) '2.0'\n+22B850 Extract OS            00 (0) 'MS-DOS'\n+22B851 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229BC8 Compression Method    0008 (8) 'Deflated'\n-229BCA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229BCE CRC                   2FB39AE6 (800299750)\n-229BD2 Compressed Size       000006C0 (1728)\n-229BD6 Uncompressed Size     00001C52 (7250)\n-229BDA Filename Length       003E (62)\n-229BDC Extra Length          0000 (0)\n-229BDE Comment Length        0000 (0)\n-229BE0 Disk Start            0000 (0)\n-229BE2 Int File Attributes   0000 (0)\n+22B853 Compression Method    0008 (8) 'Deflated'\n+22B855 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B859 CRC                   BAD7984F (3134691407)\n+22B85D Compressed Size       000002CF (719)\n+22B861 Uncompressed Size     000005A7 (1447)\n+22B865 Filename Length       003B (59)\n+22B867 Extra Length          0000 (0)\n+22B869 Comment Length        0000 (0)\n+22B86B Disk Start            0000 (0)\n+22B86D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229BE4 Ext File Attributes   00000000 (0)\n-229BE8 Local Header Offset   00105008 (1069064)\n-229BEC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B86F Ext File Attributes   00000000 (0)\n+22B873 Local Header Offset   001249DE (1198558)\n+22B877 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229BEC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B877: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229C2A CENTRAL HEADER #1016  02014B50 (33639248)\n-229C2E Created Zip Spec      14 (20) '2.0'\n-229C2F Created OS            00 (0) 'MS-DOS'\n-229C30 Extract Zip Spec      14 (20) '2.0'\n-229C31 Extract OS            00 (0) 'MS-DOS'\n-229C32 General Purpose Flag  0808 (2056)\n+22B8B2 CENTRAL HEADER #1016  02014B50 (33639248)\n+22B8B6 Created Zip Spec      14 (20) '2.0'\n+22B8B7 Created OS            00 (0) 'MS-DOS'\n+22B8B8 Extract Zip Spec      14 (20) '2.0'\n+22B8B9 Extract OS            00 (0) 'MS-DOS'\n+22B8BA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229C34 Compression Method    0008 (8) 'Deflated'\n-229C36 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229C3A CRC                   91BA560C (2444908044)\n-229C3E Compressed Size       00000036 (54)\n-229C42 Uncompressed Size     0000003B (59)\n-229C46 Filename Length       0046 (70)\n-229C48 Extra Length          0000 (0)\n-229C4A Comment Length        0000 (0)\n-229C4C Disk Start            0000 (0)\n-229C4E Int File Attributes   0000 (0)\n+22B8BC Compression Method    0008 (8) 'Deflated'\n+22B8BE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B8C2 CRC                   00000000 (0)\n+22B8C6 Compressed Size       00000002 (2)\n+22B8CA Uncompressed Size     00000000 (0)\n+22B8CE Filename Length       0022 (34)\n+22B8D0 Extra Length          0000 (0)\n+22B8D2 Comment Length        0000 (0)\n+22B8D4 Disk Start            0000 (0)\n+22B8D6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229C50 Ext File Attributes   00000000 (0)\n-229C54 Local Header Offset   00105734 (1070900)\n-229C58 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B8D8 Ext File Attributes   00000000 (0)\n+22B8DC Local Header Offset   00124D16 (1199382)\n+22B8E0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229C58: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B8E0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229C9E CENTRAL HEADER #1017  02014B50 (33639248)\n-229CA2 Created Zip Spec      14 (20) '2.0'\n-229CA3 Created OS            00 (0) 'MS-DOS'\n-229CA4 Extract Zip Spec      14 (20) '2.0'\n-229CA5 Extract OS            00 (0) 'MS-DOS'\n-229CA6 General Purpose Flag  0808 (2056)\n+22B902 CENTRAL HEADER #1017  02014B50 (33639248)\n+22B906 Created Zip Spec      14 (20) '2.0'\n+22B907 Created OS            00 (0) 'MS-DOS'\n+22B908 Extract Zip Spec      14 (20) '2.0'\n+22B909 Extract OS            00 (0) 'MS-DOS'\n+22B90A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229CA8 Compression Method    0008 (8) 'Deflated'\n-229CAA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229CAE CRC                   00000000 (0)\n-229CB2 Compressed Size       00000002 (2)\n-229CB6 Uncompressed Size     00000000 (0)\n-229CBA Filename Length       0029 (41)\n-229CBC Extra Length          0000 (0)\n-229CBE Comment Length        0000 (0)\n-229CC0 Disk Start            0000 (0)\n-229CC2 Int File Attributes   0000 (0)\n+22B90C Compression Method    0008 (8) 'Deflated'\n+22B90E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B912 CRC                   B748FF21 (3075014433)\n+22B916 Compressed Size       000007D3 (2003)\n+22B91A Uncompressed Size     00001AD2 (6866)\n+22B91E Filename Length       0032 (50)\n+22B920 Extra Length          0000 (0)\n+22B922 Comment Length        0000 (0)\n+22B924 Disk Start            0000 (0)\n+22B926 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229CC4 Ext File Attributes   00000000 (0)\n-229CC8 Local Header Offset   001057DE (1071070)\n-229CCC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B928 Ext File Attributes   00000000 (0)\n+22B92C Local Header Offset   00124D68 (1199464)\n+22B930 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229CCC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B930: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229CF5 CENTRAL HEADER #1018  02014B50 (33639248)\n-229CF9 Created Zip Spec      14 (20) '2.0'\n-229CFA Created OS            00 (0) 'MS-DOS'\n-229CFB Extract Zip Spec      14 (20) '2.0'\n-229CFC Extract OS            00 (0) 'MS-DOS'\n-229CFD General Purpose Flag  0808 (2056)\n+22B962 CENTRAL HEADER #1018  02014B50 (33639248)\n+22B966 Created Zip Spec      14 (20) '2.0'\n+22B967 Created OS            00 (0) 'MS-DOS'\n+22B968 Extract Zip Spec      14 (20) '2.0'\n+22B969 Extract OS            00 (0) 'MS-DOS'\n+22B96A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229CFF Compression Method    0008 (8) 'Deflated'\n-229D01 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229D05 CRC                   3D7F2712 (1031743250)\n-229D09 Compressed Size       00000681 (1665)\n-229D0D Uncompressed Size     000016F4 (5876)\n-229D11 Filename Length       0039 (57)\n-229D13 Extra Length          0000 (0)\n-229D15 Comment Length        0000 (0)\n-229D17 Disk Start            0000 (0)\n-229D19 Int File Attributes   0000 (0)\n+22B96C Compression Method    0008 (8) 'Deflated'\n+22B96E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B972 CRC                   E36AF793 (3815438227)\n+22B976 Compressed Size       0000048A (1162)\n+22B97A Uncompressed Size     00000AA2 (2722)\n+22B97E Filename Length       003A (58)\n+22B980 Extra Length          0000 (0)\n+22B982 Comment Length        0000 (0)\n+22B984 Disk Start            0000 (0)\n+22B986 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229D1B Ext File Attributes   00000000 (0)\n-229D1F Local Header Offset   00105837 (1071159)\n-229D23 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B988 Ext File Attributes   00000000 (0)\n+22B98C Local Header Offset   0012559B (1201563)\n+22B990 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229D23: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B990: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229D5C CENTRAL HEADER #1019  02014B50 (33639248)\n-229D60 Created Zip Spec      14 (20) '2.0'\n-229D61 Created OS            00 (0) 'MS-DOS'\n-229D62 Extract Zip Spec      14 (20) '2.0'\n-229D63 Extract OS            00 (0) 'MS-DOS'\n-229D64 General Purpose Flag  0808 (2056)\n+22B9CA CENTRAL HEADER #1019  02014B50 (33639248)\n+22B9CE Created Zip Spec      14 (20) '2.0'\n+22B9CF Created OS            00 (0) 'MS-DOS'\n+22B9D0 Extract Zip Spec      14 (20) '2.0'\n+22B9D1 Extract OS            00 (0) 'MS-DOS'\n+22B9D2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229D66 Compression Method    0008 (8) 'Deflated'\n-229D68 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229D6C CRC                   1A88D275 (445174389)\n-229D70 Compressed Size       0000085F (2143)\n-229D74 Uncompressed Size     00001CEA (7402)\n-229D78 Filename Length       0038 (56)\n-229D7A Extra Length          0000 (0)\n-229D7C Comment Length        0000 (0)\n-229D7E Disk Start            0000 (0)\n-229D80 Int File Attributes   0000 (0)\n+22B9D4 Compression Method    0008 (8) 'Deflated'\n+22B9D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22B9DA CRC                   00000000 (0)\n+22B9DE Compressed Size       00000002 (2)\n+22B9E2 Uncompressed Size     00000000 (0)\n+22B9E6 Filename Length       002E (46)\n+22B9E8 Extra Length          0000 (0)\n+22B9EA Comment Length        0000 (0)\n+22B9EC Disk Start            0000 (0)\n+22B9EE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229D82 Ext File Attributes   00000000 (0)\n-229D86 Local Header Offset   00105F1F (1072927)\n-229D8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22B9F0 Ext File Attributes   00000000 (0)\n+22B9F4 Local Header Offset   00125A8D (1202829)\n+22B9F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229D8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22B9F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229DC2 CENTRAL HEADER #1020  02014B50 (33639248)\n-229DC6 Created Zip Spec      14 (20) '2.0'\n-229DC7 Created OS            00 (0) 'MS-DOS'\n-229DC8 Extract Zip Spec      14 (20) '2.0'\n-229DC9 Extract OS            00 (0) 'MS-DOS'\n-229DCA General Purpose Flag  0808 (2056)\n+22BA26 CENTRAL HEADER #1020  02014B50 (33639248)\n+22BA2A Created Zip Spec      14 (20) '2.0'\n+22BA2B Created OS            00 (0) 'MS-DOS'\n+22BA2C Extract Zip Spec      14 (20) '2.0'\n+22BA2D Extract OS            00 (0) 'MS-DOS'\n+22BA2E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229DCC Compression Method    0008 (8) 'Deflated'\n-229DCE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229DD2 CRC                   72A94157 (1923694935)\n-229DD6 Compressed Size       0000065D (1629)\n-229DDA Uncompressed Size     000017D7 (6103)\n-229DDE Filename Length       003E (62)\n-229DE0 Extra Length          0000 (0)\n-229DE2 Comment Length        0000 (0)\n-229DE4 Disk Start            0000 (0)\n-229DE6 Int File Attributes   0000 (0)\n+22BA30 Compression Method    0008 (8) 'Deflated'\n+22BA32 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22BA36 CRC                   53E95BBF (1407802303)\n+22BA3A Compressed Size       00000370 (880)\n+22BA3E Uncompressed Size     000007FD (2045)\n+22BA42 Filename Length       0035 (53)\n+22BA44 Extra Length          0000 (0)\n+22BA46 Comment Length        0000 (0)\n+22BA48 Disk Start            0000 (0)\n+22BA4A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229DE8 Ext File Attributes   00000000 (0)\n-229DEC Local Header Offset   001067E4 (1075172)\n-229DF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22BA4C Ext File Attributes   00000000 (0)\n+22BA50 Local Header Offset   00125AEB (1202923)\n+22BA54 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229DF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22BA54: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229E2E CENTRAL HEADER #1021  02014B50 (33639248)\n-229E32 Created Zip Spec      14 (20) '2.0'\n-229E33 Created OS            00 (0) 'MS-DOS'\n-229E34 Extract Zip Spec      14 (20) '2.0'\n-229E35 Extract OS            00 (0) 'MS-DOS'\n-229E36 General Purpose Flag  0808 (2056)\n+22BA89 CENTRAL HEADER #1021  02014B50 (33639248)\n+22BA8D Created Zip Spec      14 (20) '2.0'\n+22BA8E Created OS            00 (0) 'MS-DOS'\n+22BA8F Extract Zip Spec      14 (20) '2.0'\n+22BA90 Extract OS            00 (0) 'MS-DOS'\n+22BA91 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229E38 Compression Method    0008 (8) 'Deflated'\n-229E3A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229E3E CRC                   B2448F97 (2990837655)\n-229E42 Compressed Size       0000037B (891)\n-229E46 Uncompressed Size     00000CB7 (3255)\n-229E4A Filename Length       0039 (57)\n-229E4C Extra Length          0000 (0)\n-229E4E Comment Length        0000 (0)\n-229E50 Disk Start            0000 (0)\n-229E52 Int File Attributes   0000 (0)\n+22BA93 Compression Method    0008 (8) 'Deflated'\n+22BA95 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22BA99 CRC                   47EB69BB (1206610363)\n+22BA9D Compressed Size       00000042 (66)\n+22BAA1 Uncompressed Size     00000044 (68)\n+22BAA5 Filename Length       003C (60)\n+22BAA7 Extra Length          0000 (0)\n+22BAA9 Comment Length        0000 (0)\n+22BAAB Disk Start            0000 (0)\n+22BAAD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229E54 Ext File Attributes   00000000 (0)\n-229E58 Local Header Offset   00106EAD (1076909)\n-229E5C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22BAAF Ext File Attributes   00000000 (0)\n+22BAB3 Local Header Offset   00125EBE (1203902)\n+22BAB7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229E5C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22BAB7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229E95 CENTRAL HEADER #1022  02014B50 (33639248)\n-229E99 Created Zip Spec      14 (20) '2.0'\n-229E9A Created OS            00 (0) 'MS-DOS'\n-229E9B Extract Zip Spec      14 (20) '2.0'\n-229E9C Extract OS            00 (0) 'MS-DOS'\n-229E9D General Purpose Flag  0808 (2056)\n+22BAF3 CENTRAL HEADER #1022  02014B50 (33639248)\n+22BAF7 Created Zip Spec      14 (20) '2.0'\n+22BAF8 Created OS            00 (0) 'MS-DOS'\n+22BAF9 Extract Zip Spec      14 (20) '2.0'\n+22BAFA Extract OS            00 (0) 'MS-DOS'\n+22BAFB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229E9F Compression Method    0008 (8) 'Deflated'\n-229EA1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229EA5 CRC                   3C17A7B5 (1008183221)\n-229EA9 Compressed Size       000005A8 (1448)\n-229EAD Uncompressed Size     0000107D (4221)\n-229EB1 Filename Length       0038 (56)\n-229EB3 Extra Length          0000 (0)\n-229EB5 Comment Length        0000 (0)\n-229EB7 Disk Start            0000 (0)\n-229EB9 Int File Attributes   0000 (0)\n+22BAFD Compression Method    0008 (8) 'Deflated'\n+22BAFF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22BB03 CRC                   00000000 (0)\n+22BB07 Compressed Size       00000002 (2)\n+22BB0B Uncompressed Size     00000000 (0)\n+22BB0F Filename Length       0026 (38)\n+22BB11 Extra Length          0000 (0)\n+22BB13 Comment Length        0000 (0)\n+22BB15 Disk Start            0000 (0)\n+22BB17 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229EBB Ext File Attributes   00000000 (0)\n-229EBF Local Header Offset   0010728F (1077903)\n-229EC3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22BB19 Ext File Attributes   00000000 (0)\n+22BB1D Local Header Offset   00125F6A (1204074)\n+22BB21 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229EC3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22BB21: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229EFB CENTRAL HEADER #1023  02014B50 (33639248)\n-229EFF Created Zip Spec      14 (20) '2.0'\n-229F00 Created OS            00 (0) 'MS-DOS'\n-229F01 Extract Zip Spec      14 (20) '2.0'\n-229F02 Extract OS            00 (0) 'MS-DOS'\n-229F03 General Purpose Flag  0808 (2056)\n+22BB47 CENTRAL HEADER #1023  02014B50 (33639248)\n+22BB4B Created Zip Spec      14 (20) '2.0'\n+22BB4C Created OS            00 (0) 'MS-DOS'\n+22BB4D Extract Zip Spec      14 (20) '2.0'\n+22BB4E Extract OS            00 (0) 'MS-DOS'\n+22BB4F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229F05 Compression Method    0008 (8) 'Deflated'\n-229F07 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229F0B CRC                   242C94A2 (606901410)\n-229F0F Compressed Size       000002AD (685)\n-229F13 Uncompressed Size     0000062C (1580)\n-229F17 Filename Length       003D (61)\n-229F19 Extra Length          0000 (0)\n-229F1B Comment Length        0000 (0)\n-229F1D Disk Start            0000 (0)\n-229F1F Int File Attributes   0000 (0)\n+22BB51 Compression Method    0008 (8) 'Deflated'\n+22BB53 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22BB57 CRC                   626BA0DE (1651220702)\n+22BB5B Compressed Size       0000027D (637)\n+22BB5F Uncompressed Size     000004AB (1195)\n+22BB63 Filename Length       0034 (52)\n+22BB65 Extra Length          0000 (0)\n+22BB67 Comment Length        0000 (0)\n+22BB69 Disk Start            0000 (0)\n+22BB6B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229F21 Ext File Attributes   00000000 (0)\n-229F25 Local Header Offset   0010789D (1079453)\n-229F29 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22BB6D Ext File Attributes   00000000 (0)\n+22BB71 Local Header Offset   00125FC0 (1204160)\n+22BB75 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229F29: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22BB75: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229F66 CENTRAL HEADER #1024  02014B50 (33639248)\n-229F6A Created Zip Spec      14 (20) '2.0'\n-229F6B Created OS            00 (0) 'MS-DOS'\n-229F6C Extract Zip Spec      14 (20) '2.0'\n-229F6D Extract OS            00 (0) 'MS-DOS'\n-229F6E General Purpose Flag  0808 (2056)\n+22BBA9 CENTRAL HEADER #1024  02014B50 (33639248)\n+22BBAD Created Zip Spec      14 (20) '2.0'\n+22BBAE Created OS            00 (0) 'MS-DOS'\n+22BBAF Extract Zip Spec      14 (20) '2.0'\n+22BBB0 Extract OS            00 (0) 'MS-DOS'\n+22BBB1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229F70 Compression Method    0008 (8) 'Deflated'\n-229F72 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229F76 CRC                   00000000 (0)\n-229F7A Compressed Size       00000002 (2)\n-229F7E Uncompressed Size     00000000 (0)\n-229F82 Filename Length       002C (44)\n-229F84 Extra Length          0000 (0)\n-229F86 Comment Length        0000 (0)\n-229F88 Disk Start            0000 (0)\n-229F8A Int File Attributes   0000 (0)\n+22BBB3 Compression Method    0008 (8) 'Deflated'\n+22BBB5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22BBB9 CRC                   BA6404A6 (3127116966)\n+22BBBD Compressed Size       00000304 (772)\n+22BBC1 Uncompressed Size     0000065B (1627)\n+22BBC5 Filename Length       004B (75)\n+22BBC7 Extra Length          0000 (0)\n+22BBC9 Comment Length        0000 (0)\n+22BBCB Disk Start            0000 (0)\n+22BBCD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229F8C Ext File Attributes   00000000 (0)\n-229F90 Local Header Offset   00107BB5 (1080245)\n-229F94 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22BBCF Ext File Attributes   00000000 (0)\n+22BBD3 Local Header Offset   0012629F (1204895)\n+22BBD7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229F94: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22BBD7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-229FC0 CENTRAL HEADER #1025  02014B50 (33639248)\n-229FC4 Created Zip Spec      14 (20) '2.0'\n-229FC5 Created OS            00 (0) 'MS-DOS'\n-229FC6 Extract Zip Spec      14 (20) '2.0'\n-229FC7 Extract OS            00 (0) 'MS-DOS'\n-229FC8 General Purpose Flag  0808 (2056)\n+22BC22 CENTRAL HEADER #1025  02014B50 (33639248)\n+22BC26 Created Zip Spec      14 (20) '2.0'\n+22BC27 Created OS            00 (0) 'MS-DOS'\n+22BC28 Extract Zip Spec      14 (20) '2.0'\n+22BC29 Extract OS            00 (0) 'MS-DOS'\n+22BC2A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-229FCA Compression Method    0008 (8) 'Deflated'\n-229FCC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-229FD0 CRC                   56951E3F (1452613183)\n-229FD4 Compressed Size       00000709 (1801)\n-229FD8 Uncompressed Size     0000197F (6527)\n-229FDC Filename Length       003F (63)\n-229FDE Extra Length          0000 (0)\n-229FE0 Comment Length        0000 (0)\n-229FE2 Disk Start            0000 (0)\n-229FE4 Int File Attributes   0000 (0)\n+22BC2C Compression Method    0008 (8) 'Deflated'\n+22BC2E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22BC32 CRC                   ED0697F4 (3976632308)\n+22BC36 Compressed Size       00000997 (2455)\n+22BC3A Uncompressed Size     000022BD (8893)\n+22BC3E Filename Length       003A (58)\n+22BC40 Extra Length          0000 (0)\n+22BC42 Comment Length        0000 (0)\n+22BC44 Disk Start            0000 (0)\n+22BC46 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-229FE6 Ext File Attributes   00000000 (0)\n-229FEA Local Header Offset   00107C11 (1080337)\n-229FEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22BC48 Ext File Attributes   00000000 (0)\n+22BC4C Local Header Offset   0012661C (1205788)\n+22BC50 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x229FEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22BC50: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A02D CENTRAL HEADER #1026  02014B50 (33639248)\n-22A031 Created Zip Spec      14 (20) '2.0'\n-22A032 Created OS            00 (0) 'MS-DOS'\n-22A033 Extract Zip Spec      14 (20) '2.0'\n-22A034 Extract OS            00 (0) 'MS-DOS'\n-22A035 General Purpose Flag  0808 (2056)\n+22BC8A CENTRAL HEADER #1026  02014B50 (33639248)\n+22BC8E Created Zip Spec      14 (20) '2.0'\n+22BC8F Created OS            00 (0) 'MS-DOS'\n+22BC90 Extract Zip Spec      14 (20) '2.0'\n+22BC91 Extract OS            00 (0) 'MS-DOS'\n+22BC92 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A037 Compression Method    0008 (8) 'Deflated'\n-22A039 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A03D CRC                   42023036 (1107439670)\n-22A041 Compressed Size       000005AE (1454)\n-22A045 Uncompressed Size     000010C6 (4294)\n-22A049 Filename Length       003E (62)\n-22A04B Extra Length          0000 (0)\n-22A04D Comment Length        0000 (0)\n-22A04F Disk Start            0000 (0)\n-22A051 Int File Attributes   0000 (0)\n+22BC94 Compression Method    0008 (8) 'Deflated'\n+22BC96 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22BC9A CRC                   D14D14C7 (3511489735)\n+22BC9E Compressed Size       00000433 (1075)\n+22BCA2 Uncompressed Size     00000CF4 (3316)\n+22BCA6 Filename Length       003F (63)\n+22BCA8 Extra Length          0000 (0)\n+22BCAA Comment Length        0000 (0)\n+22BCAC Disk Start            0000 (0)\n+22BCAE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A053 Ext File Attributes   00000000 (0)\n-22A057 Local Header Offset   00108387 (1082247)\n-22A05B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22BCB0 Ext File Attributes   00000000 (0)\n+22BCB4 Local Header Offset   0012701B (1208347)\n+22BCB8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A05B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22BCB8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A099 CENTRAL HEADER #1027  02014B50 (33639248)\n-22A09D Created Zip Spec      14 (20) '2.0'\n-22A09E Created OS            00 (0) 'MS-DOS'\n-22A09F Extract Zip Spec      14 (20) '2.0'\n-22A0A0 Extract OS            00 (0) 'MS-DOS'\n-22A0A1 General Purpose Flag  0808 (2056)\n+22BCF7 CENTRAL HEADER #1027  02014B50 (33639248)\n+22BCFB Created Zip Spec      14 (20) '2.0'\n+22BCFC Created OS            00 (0) 'MS-DOS'\n+22BCFD Extract Zip Spec      14 (20) '2.0'\n+22BCFE Extract OS            00 (0) 'MS-DOS'\n+22BCFF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A0A3 Compression Method    0008 (8) 'Deflated'\n-22A0A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A0A9 CRC                   4DD0FDAC (1305542060)\n-22A0AD Compressed Size       00000688 (1672)\n-22A0B1 Uncompressed Size     00001750 (5968)\n-22A0B5 Filename Length       0044 (68)\n-22A0B7 Extra Length          0000 (0)\n-22A0B9 Comment Length        0000 (0)\n-22A0BB Disk Start            0000 (0)\n-22A0BD Int File Attributes   0000 (0)\n+22BD01 Compression Method    0008 (8) 'Deflated'\n+22BD03 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22BD07 CRC                   5C6A1FAA (1550458794)\n+22BD0B Compressed Size       000003C2 (962)\n+22BD0F Uncompressed Size     0000095F (2399)\n+22BD13 Filename Length       0046 (70)\n+22BD15 Extra Length          0000 (0)\n+22BD17 Comment Length        0000 (0)\n+22BD19 Disk Start            0000 (0)\n+22BD1B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A0BF Ext File Attributes   00000000 (0)\n-22A0C3 Local Header Offset   001089A1 (1083809)\n-22A0C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22BD1D Ext File Attributes   00000000 (0)\n+22BD21 Local Header Offset   001274BB (1209531)\n+22BD25 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A0C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22BD25: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A10B CENTRAL HEADER #1028  02014B50 (33639248)\n-22A10F Created Zip Spec      14 (20) '2.0'\n-22A110 Created OS            00 (0) 'MS-DOS'\n-22A111 Extract Zip Spec      14 (20) '2.0'\n-22A112 Extract OS            00 (0) 'MS-DOS'\n-22A113 General Purpose Flag  0808 (2056)\n+22BD6B CENTRAL HEADER #1028  02014B50 (33639248)\n+22BD6F Created Zip Spec      14 (20) '2.0'\n+22BD70 Created OS            00 (0) 'MS-DOS'\n+22BD71 Extract Zip Spec      14 (20) '2.0'\n+22BD72 Extract OS            00 (0) 'MS-DOS'\n+22BD73 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A115 Compression Method    0008 (8) 'Deflated'\n-22A117 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A11B CRC                   EC29A626 (3962152486)\n-22A11F Compressed Size       00000424 (1060)\n-22A123 Uncompressed Size     000011CA (4554)\n-22A127 Filename Length       003F (63)\n-22A129 Extra Length          0000 (0)\n-22A12B Comment Length        0000 (0)\n-22A12D Disk Start            0000 (0)\n-22A12F Int File Attributes   0000 (0)\n+22BD75 Compression Method    0008 (8) 'Deflated'\n+22BD77 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22BD7B CRC                   00000000 (0)\n+22BD7F Compressed Size       00000002 (2)\n+22BD83 Uncompressed Size     00000000 (0)\n+22BD87 Filename Length       0032 (50)\n+22BD89 Extra Length          0000 (0)\n+22BD8B Comment Length        0000 (0)\n+22BD8D Disk Start            0000 (0)\n+22BD8F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A131 Ext File Attributes   00000000 (0)\n-22A135 Local Header Offset   0010909B (1085595)\n-22A139 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22BD91 Ext File Attributes   00000000 (0)\n+22BD95 Local Header Offset   001278F1 (1210609)\n+22BD99 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A139: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22BD99: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A178 CENTRAL HEADER #1029  02014B50 (33639248)\n-22A17C Created Zip Spec      14 (20) '2.0'\n-22A17D Created OS            00 (0) 'MS-DOS'\n-22A17E Extract Zip Spec      14 (20) '2.0'\n-22A17F Extract OS            00 (0) 'MS-DOS'\n-22A180 General Purpose Flag  0808 (2056)\n+22BDCB CENTRAL HEADER #1029  02014B50 (33639248)\n+22BDCF Created Zip Spec      14 (20) '2.0'\n+22BDD0 Created OS            00 (0) 'MS-DOS'\n+22BDD1 Extract Zip Spec      14 (20) '2.0'\n+22BDD2 Extract OS            00 (0) 'MS-DOS'\n+22BDD3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A182 Compression Method    0008 (8) 'Deflated'\n-22A184 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A188 CRC                   253B482C (624642092)\n-22A18C Compressed Size       0000066A (1642)\n-22A190 Uncompressed Size     000014A3 (5283)\n-22A194 Filename Length       003E (62)\n-22A196 Extra Length          0000 (0)\n-22A198 Comment Length        0000 (0)\n-22A19A Disk Start            0000 (0)\n-22A19C Int File Attributes   0000 (0)\n+22BDD5 Compression Method    0008 (8) 'Deflated'\n+22BDD7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22BDDB CRC                   19FB740D (435909645)\n+22BDDF Compressed Size       000003C3 (963)\n+22BDE3 Uncompressed Size     00000A8E (2702)\n+22BDE7 Filename Length       0039 (57)\n+22BDE9 Extra Length          0000 (0)\n+22BDEB Comment Length        0000 (0)\n+22BDED Disk Start            0000 (0)\n+22BDEF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A19E Ext File Attributes   00000000 (0)\n-22A1A2 Local Header Offset   0010952C (1086764)\n-22A1A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22BDF1 Ext File Attributes   00000000 (0)\n+22BDF5 Local Header Offset   00127953 (1210707)\n+22BDF9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A1A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22BDF9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A1E4 CENTRAL HEADER #1030  02014B50 (33639248)\n-22A1E8 Created Zip Spec      14 (20) '2.0'\n-22A1E9 Created OS            00 (0) 'MS-DOS'\n-22A1EA Extract Zip Spec      14 (20) '2.0'\n-22A1EB Extract OS            00 (0) 'MS-DOS'\n-22A1EC General Purpose Flag  0808 (2056)\n+22BE32 CENTRAL HEADER #1030  02014B50 (33639248)\n+22BE36 Created Zip Spec      14 (20) '2.0'\n+22BE37 Created OS            00 (0) 'MS-DOS'\n+22BE38 Extract Zip Spec      14 (20) '2.0'\n+22BE39 Extract OS            00 (0) 'MS-DOS'\n+22BE3A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A1EE Compression Method    0008 (8) 'Deflated'\n-22A1F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A1F4 CRC                   117073F8 (292582392)\n-22A1F8 Compressed Size       000002BA (698)\n-22A1FC Uncompressed Size     0000065C (1628)\n-22A200 Filename Length       0043 (67)\n-22A202 Extra Length          0000 (0)\n-22A204 Comment Length        0000 (0)\n-22A206 Disk Start            0000 (0)\n-22A208 Int File Attributes   0000 (0)\n+22BE3C Compression Method    0008 (8) 'Deflated'\n+22BE3E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22BE42 CRC                   AB278FDB (2871496667)\n+22BE46 Compressed Size       00000046 (70)\n+22BE4A Uncompressed Size     00000048 (72)\n+22BE4E Filename Length       0040 (64)\n+22BE50 Extra Length          0000 (0)\n+22BE52 Comment Length        0000 (0)\n+22BE54 Disk Start            0000 (0)\n+22BE56 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A20A Ext File Attributes   00000000 (0)\n-22A20E Local Header Offset   00109C02 (1088514)\n-22A212 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22BE58 Ext File Attributes   00000000 (0)\n+22BE5C Local Header Offset   00127D7D (1211773)\n+22BE60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A212: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22BE60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A255 CENTRAL HEADER #1031  02014B50 (33639248)\n-22A259 Created Zip Spec      14 (20) '2.0'\n-22A25A Created OS            00 (0) 'MS-DOS'\n-22A25B Extract Zip Spec      14 (20) '2.0'\n-22A25C Extract OS            00 (0) 'MS-DOS'\n-22A25D General Purpose Flag  0808 (2056)\n+22BEA0 CENTRAL HEADER #1031  02014B50 (33639248)\n+22BEA4 Created Zip Spec      14 (20) '2.0'\n+22BEA5 Created OS            00 (0) 'MS-DOS'\n+22BEA6 Extract Zip Spec      14 (20) '2.0'\n+22BEA7 Extract OS            00 (0) 'MS-DOS'\n+22BEA8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A25F Compression Method    0008 (8) 'Deflated'\n-22A261 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A265 CRC                   00000000 (0)\n-22A269 Compressed Size       00000002 (2)\n-22A26D Uncompressed Size     00000000 (0)\n-22A271 Filename Length       001E (30)\n-22A273 Extra Length          0000 (0)\n-22A275 Comment Length        0000 (0)\n-22A277 Disk Start            0000 (0)\n-22A279 Int File Attributes   0000 (0)\n+22BEAA Compression Method    0008 (8) 'Deflated'\n+22BEAC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22BEB0 CRC                   00000000 (0)\n+22BEB4 Compressed Size       00000002 (2)\n+22BEB8 Uncompressed Size     00000000 (0)\n+22BEBC Filename Length       0029 (41)\n+22BEBE Extra Length          0000 (0)\n+22BEC0 Comment Length        0000 (0)\n+22BEC2 Disk Start            0000 (0)\n+22BEC4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A27B Ext File Attributes   00000000 (0)\n-22A27F Local Header Offset   00109F2D (1089325)\n-22A283 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22BEC6 Ext File Attributes   00000000 (0)\n+22BECA Local Header Offset   00127E31 (1211953)\n+22BECE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A283: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22BECE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A2A1 CENTRAL HEADER #1032  02014B50 (33639248)\n-22A2A5 Created Zip Spec      14 (20) '2.0'\n-22A2A6 Created OS            00 (0) 'MS-DOS'\n-22A2A7 Extract Zip Spec      14 (20) '2.0'\n-22A2A8 Extract OS            00 (0) 'MS-DOS'\n-22A2A9 General Purpose Flag  0808 (2056)\n+22BEF7 CENTRAL HEADER #1032  02014B50 (33639248)\n+22BEFB Created Zip Spec      14 (20) '2.0'\n+22BEFC Created OS            00 (0) 'MS-DOS'\n+22BEFD Extract Zip Spec      14 (20) '2.0'\n+22BEFE Extract OS            00 (0) 'MS-DOS'\n+22BEFF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A2AB Compression Method    0008 (8) 'Deflated'\n-22A2AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A2B1 CRC                   22156101 (571826433)\n-22A2B5 Compressed Size       000002E1 (737)\n-22A2B9 Uncompressed Size     00000645 (1605)\n-22A2BD Filename Length       0028 (40)\n-22A2BF Extra Length          0000 (0)\n-22A2C1 Comment Length        0000 (0)\n-22A2C3 Disk Start            0000 (0)\n-22A2C5 Int File Attributes   0000 (0)\n+22BF01 Compression Method    0008 (8) 'Deflated'\n+22BF03 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22BF07 CRC                   263D0E7B (641535611)\n+22BF0B Compressed Size       000009AA (2474)\n+22BF0F Uncompressed Size     000023BC (9148)\n+22BF13 Filename Length       0040 (64)\n+22BF15 Extra Length          0000 (0)\n+22BF17 Comment Length        0000 (0)\n+22BF19 Disk Start            0000 (0)\n+22BF1B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A2C7 Ext File Attributes   00000000 (0)\n-22A2CB Local Header Offset   00109F7B (1089403)\n-22A2CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22BF1D Ext File Attributes   00000000 (0)\n+22BF21 Local Header Offset   00127E8A (1212042)\n+22BF25 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A2CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22BF25: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A2F7 CENTRAL HEADER #1033  02014B50 (33639248)\n-22A2FB Created Zip Spec      14 (20) '2.0'\n-22A2FC Created OS            00 (0) 'MS-DOS'\n-22A2FD Extract Zip Spec      14 (20) '2.0'\n-22A2FE Extract OS            00 (0) 'MS-DOS'\n-22A2FF General Purpose Flag  0808 (2056)\n+22BF65 CENTRAL HEADER #1033  02014B50 (33639248)\n+22BF69 Created Zip Spec      14 (20) '2.0'\n+22BF6A Created OS            00 (0) 'MS-DOS'\n+22BF6B Extract Zip Spec      14 (20) '2.0'\n+22BF6C Extract OS            00 (0) 'MS-DOS'\n+22BF6D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A301 Compression Method    0008 (8) 'Deflated'\n-22A303 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A307 CRC                   5BDCE546 (1541203270)\n-22A30B Compressed Size       000002AD (685)\n-22A30F Uncompressed Size     00000530 (1328)\n-22A313 Filename Length       002C (44)\n-22A315 Extra Length          0000 (0)\n-22A317 Comment Length        0000 (0)\n-22A319 Disk Start            0000 (0)\n-22A31B Int File Attributes   0000 (0)\n+22BF6F Compression Method    0008 (8) 'Deflated'\n+22BF71 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22BF75 CRC                   00000000 (0)\n+22BF79 Compressed Size       00000002 (2)\n+22BF7D Uncompressed Size     00000000 (0)\n+22BF81 Filename Length       0035 (53)\n+22BF83 Extra Length          0000 (0)\n+22BF85 Comment Length        0000 (0)\n+22BF87 Disk Start            0000 (0)\n+22BF89 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A31D Ext File Attributes   00000000 (0)\n-22A321 Local Header Offset   0010A2B2 (1090226)\n-22A325 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22BF8B Ext File Attributes   00000000 (0)\n+22BF8F Local Header Offset   001288A2 (1214626)\n+22BF93 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A325: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22BF93: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A351 CENTRAL HEADER #1034  02014B50 (33639248)\n-22A355 Created Zip Spec      14 (20) '2.0'\n-22A356 Created OS            00 (0) 'MS-DOS'\n-22A357 Extract Zip Spec      14 (20) '2.0'\n-22A358 Extract OS            00 (0) 'MS-DOS'\n-22A359 General Purpose Flag  0808 (2056)\n+22BFC8 CENTRAL HEADER #1034  02014B50 (33639248)\n+22BFCC Created Zip Spec      14 (20) '2.0'\n+22BFCD Created OS            00 (0) 'MS-DOS'\n+22BFCE Extract Zip Spec      14 (20) '2.0'\n+22BFCF Extract OS            00 (0) 'MS-DOS'\n+22BFD0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A35B Compression Method    0008 (8) 'Deflated'\n-22A35D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A361 CRC                   86A6B236 (2259071542)\n-22A365 Compressed Size       0000031F (799)\n-22A369 Uncompressed Size     0000078D (1933)\n-22A36D Filename Length       002D (45)\n-22A36F Extra Length          0000 (0)\n-22A371 Comment Length        0000 (0)\n-22A373 Disk Start            0000 (0)\n-22A375 Int File Attributes   0000 (0)\n+22BFD2 Compression Method    0008 (8) 'Deflated'\n+22BFD4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22BFD8 CRC                   42F6A52E (1123460398)\n+22BFDC Compressed Size       000003E5 (997)\n+22BFE0 Uncompressed Size     00000C1F (3103)\n+22BFE4 Filename Length       003C (60)\n+22BFE6 Extra Length          0000 (0)\n+22BFE8 Comment Length        0000 (0)\n+22BFEA Disk Start            0000 (0)\n+22BFEC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A377 Ext File Attributes   00000000 (0)\n-22A37B Local Header Offset   0010A5B9 (1091001)\n-22A37F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22BFEE Ext File Attributes   00000000 (0)\n+22BFF2 Local Header Offset   00128907 (1214727)\n+22BFF6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A37F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22BFF6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A3AC CENTRAL HEADER #1035  02014B50 (33639248)\n-22A3B0 Created Zip Spec      14 (20) '2.0'\n-22A3B1 Created OS            00 (0) 'MS-DOS'\n-22A3B2 Extract Zip Spec      14 (20) '2.0'\n-22A3B3 Extract OS            00 (0) 'MS-DOS'\n-22A3B4 General Purpose Flag  0808 (2056)\n+22C032 CENTRAL HEADER #1035  02014B50 (33639248)\n+22C036 Created Zip Spec      14 (20) '2.0'\n+22C037 Created OS            00 (0) 'MS-DOS'\n+22C038 Extract Zip Spec      14 (20) '2.0'\n+22C039 Extract OS            00 (0) 'MS-DOS'\n+22C03A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A3B6 Compression Method    0008 (8) 'Deflated'\n-22A3B8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A3BC CRC                   1B4BCF89 (457953161)\n-22A3C0 Compressed Size       00000289 (649)\n-22A3C4 Uncompressed Size     000004F3 (1267)\n-22A3C8 Filename Length       0027 (39)\n-22A3CA Extra Length          0000 (0)\n-22A3CC Comment Length        0000 (0)\n-22A3CE Disk Start            0000 (0)\n-22A3D0 Int File Attributes   0000 (0)\n+22C03C Compression Method    0008 (8) 'Deflated'\n+22C03E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C042 CRC                   0B8D3BF2 (193805298)\n+22C046 Compressed Size       00000049 (73)\n+22C04A Uncompressed Size     0000004B (75)\n+22C04E Filename Length       0043 (67)\n+22C050 Extra Length          0000 (0)\n+22C052 Comment Length        0000 (0)\n+22C054 Disk Start            0000 (0)\n+22C056 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A3D2 Ext File Attributes   00000000 (0)\n-22A3D6 Local Header Offset   0010A933 (1091891)\n-22A3DA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C058 Ext File Attributes   00000000 (0)\n+22C05C Local Header Offset   00128D56 (1215830)\n+22C060 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A3DA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C060: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A401 CENTRAL HEADER #1036  02014B50 (33639248)\n-22A405 Created Zip Spec      14 (20) '2.0'\n-22A406 Created OS            00 (0) 'MS-DOS'\n-22A407 Extract Zip Spec      14 (20) '2.0'\n-22A408 Extract OS            00 (0) 'MS-DOS'\n-22A409 General Purpose Flag  0808 (2056)\n+22C0A3 CENTRAL HEADER #1036  02014B50 (33639248)\n+22C0A7 Created Zip Spec      14 (20) '2.0'\n+22C0A8 Created OS            00 (0) 'MS-DOS'\n+22C0A9 Extract Zip Spec      14 (20) '2.0'\n+22C0AA Extract OS            00 (0) 'MS-DOS'\n+22C0AB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A40B Compression Method    0008 (8) 'Deflated'\n-22A40D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A411 CRC                   00000000 (0)\n-22A415 Compressed Size       00000002 (2)\n-22A419 Uncompressed Size     00000000 (0)\n-22A41D Filename Length       0027 (39)\n-22A41F Extra Length          0000 (0)\n-22A421 Comment Length        0000 (0)\n-22A423 Disk Start            0000 (0)\n-22A425 Int File Attributes   0000 (0)\n+22C0AD Compression Method    0008 (8) 'Deflated'\n+22C0AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C0B3 CRC                   00000000 (0)\n+22C0B7 Compressed Size       00000002 (2)\n+22C0BB Uncompressed Size     00000000 (0)\n+22C0BF Filename Length       0025 (37)\n+22C0C1 Extra Length          0000 (0)\n+22C0C3 Comment Length        0000 (0)\n+22C0C5 Disk Start            0000 (0)\n+22C0C7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A427 Ext File Attributes   00000000 (0)\n-22A42B Local Header Offset   0010AC11 (1092625)\n-22A42F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C0C9 Ext File Attributes   00000000 (0)\n+22C0CD Local Header Offset   00128E10 (1216016)\n+22C0D1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A42F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C0D1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A456 CENTRAL HEADER #1037  02014B50 (33639248)\n-22A45A Created Zip Spec      14 (20) '2.0'\n-22A45B Created OS            00 (0) 'MS-DOS'\n-22A45C Extract Zip Spec      14 (20) '2.0'\n-22A45D Extract OS            00 (0) 'MS-DOS'\n-22A45E General Purpose Flag  0808 (2056)\n+22C0F6 CENTRAL HEADER #1037  02014B50 (33639248)\n+22C0FA Created Zip Spec      14 (20) '2.0'\n+22C0FB Created OS            00 (0) 'MS-DOS'\n+22C0FC Extract Zip Spec      14 (20) '2.0'\n+22C0FD Extract OS            00 (0) 'MS-DOS'\n+22C0FE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A460 Compression Method    0008 (8) 'Deflated'\n-22A462 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A466 CRC                   DDB2647D (3719455869)\n-22A46A Compressed Size       00000278 (632)\n-22A46E Uncompressed Size     00000501 (1281)\n-22A472 Filename Length       0039 (57)\n-22A474 Extra Length          0000 (0)\n-22A476 Comment Length        0000 (0)\n-22A478 Disk Start            0000 (0)\n-22A47A Int File Attributes   0000 (0)\n+22C100 Compression Method    0008 (8) 'Deflated'\n+22C102 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C106 CRC                   63A56C0E (1671785486)\n+22C10A Compressed Size       00000294 (660)\n+22C10E Uncompressed Size     000004E2 (1250)\n+22C112 Filename Length       003C (60)\n+22C114 Extra Length          0000 (0)\n+22C116 Comment Length        0000 (0)\n+22C118 Disk Start            0000 (0)\n+22C11A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A47C Ext File Attributes   00000000 (0)\n-22A480 Local Header Offset   0010AC68 (1092712)\n-22A484 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C11C Ext File Attributes   00000000 (0)\n+22C120 Local Header Offset   00128E65 (1216101)\n+22C124 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A484: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C124: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A4BD CENTRAL HEADER #1038  02014B50 (33639248)\n-22A4C1 Created Zip Spec      14 (20) '2.0'\n-22A4C2 Created OS            00 (0) 'MS-DOS'\n-22A4C3 Extract Zip Spec      14 (20) '2.0'\n-22A4C4 Extract OS            00 (0) 'MS-DOS'\n-22A4C5 General Purpose Flag  0808 (2056)\n+22C160 CENTRAL HEADER #1038  02014B50 (33639248)\n+22C164 Created Zip Spec      14 (20) '2.0'\n+22C165 Created OS            00 (0) 'MS-DOS'\n+22C166 Extract Zip Spec      14 (20) '2.0'\n+22C167 Extract OS            00 (0) 'MS-DOS'\n+22C168 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A4C7 Compression Method    0008 (8) 'Deflated'\n-22A4C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A4CD CRC                   5D9DDBCF (1570626511)\n-22A4D1 Compressed Size       00000267 (615)\n-22A4D5 Uncompressed Size     000004A5 (1189)\n-22A4D9 Filename Length       003D (61)\n-22A4DB Extra Length          0000 (0)\n-22A4DD Comment Length        0000 (0)\n-22A4DF Disk Start            0000 (0)\n-22A4E1 Int File Attributes   0000 (0)\n+22C16A Compression Method    0008 (8) 'Deflated'\n+22C16C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C170 CRC                   E0FB0689 (3774547593)\n+22C174 Compressed Size       000002BC (700)\n+22C178 Uncompressed Size     000005C0 (1472)\n+22C17C Filename Length       0041 (65)\n+22C17E Extra Length          0000 (0)\n+22C180 Comment Length        0000 (0)\n+22C182 Disk Start            0000 (0)\n+22C184 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A4E3 Ext File Attributes   00000000 (0)\n-22A4E7 Local Header Offset   0010AF47 (1093447)\n-22A4EB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C186 Ext File Attributes   00000000 (0)\n+22C18A Local Header Offset   00129163 (1216867)\n+22C18E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A4EB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C18E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A528 CENTRAL HEADER #1039  02014B50 (33639248)\n-22A52C Created Zip Spec      14 (20) '2.0'\n-22A52D Created OS            00 (0) 'MS-DOS'\n-22A52E Extract Zip Spec      14 (20) '2.0'\n-22A52F Extract OS            00 (0) 'MS-DOS'\n-22A530 General Purpose Flag  0808 (2056)\n+22C1CF CENTRAL HEADER #1039  02014B50 (33639248)\n+22C1D3 Created Zip Spec      14 (20) '2.0'\n+22C1D4 Created OS            00 (0) 'MS-DOS'\n+22C1D5 Extract Zip Spec      14 (20) '2.0'\n+22C1D6 Extract OS            00 (0) 'MS-DOS'\n+22C1D7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A532 Compression Method    0008 (8) 'Deflated'\n-22A534 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A538 CRC                   4453948E (1146328206)\n-22A53C Compressed Size       000002EE (750)\n-22A540 Uncompressed Size     0000076E (1902)\n-22A544 Filename Length       003E (62)\n-22A546 Extra Length          0000 (0)\n-22A548 Comment Length        0000 (0)\n-22A54A Disk Start            0000 (0)\n-22A54C Int File Attributes   0000 (0)\n+22C1D9 Compression Method    0008 (8) 'Deflated'\n+22C1DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C1DF CRC                   45D210E4 (1171394788)\n+22C1E3 Compressed Size       000002BA (698)\n+22C1E7 Uncompressed Size     000005CE (1486)\n+22C1EB Filename Length       0042 (66)\n+22C1ED Extra Length          0000 (0)\n+22C1EF Comment Length        0000 (0)\n+22C1F1 Disk Start            0000 (0)\n+22C1F3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A54E Ext File Attributes   00000000 (0)\n-22A552 Local Header Offset   0010B219 (1094169)\n-22A556 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C1F5 Ext File Attributes   00000000 (0)\n+22C1F9 Local Header Offset   0012948E (1217678)\n+22C1FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A556: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C1FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A594 CENTRAL HEADER #1040  02014B50 (33639248)\n-22A598 Created Zip Spec      14 (20) '2.0'\n-22A599 Created OS            00 (0) 'MS-DOS'\n-22A59A Extract Zip Spec      14 (20) '2.0'\n-22A59B Extract OS            00 (0) 'MS-DOS'\n-22A59C General Purpose Flag  0808 (2056)\n+22C23F CENTRAL HEADER #1040  02014B50 (33639248)\n+22C243 Created Zip Spec      14 (20) '2.0'\n+22C244 Created OS            00 (0) 'MS-DOS'\n+22C245 Extract Zip Spec      14 (20) '2.0'\n+22C246 Extract OS            00 (0) 'MS-DOS'\n+22C247 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A59E Compression Method    0008 (8) 'Deflated'\n-22A5A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A5A4 CRC                   E8A94DD9 (3903409625)\n-22A5A8 Compressed Size       0000022B (555)\n-22A5AC Uncompressed Size     00000420 (1056)\n-22A5B0 Filename Length       0038 (56)\n-22A5B2 Extra Length          0000 (0)\n-22A5B4 Comment Length        0000 (0)\n-22A5B6 Disk Start            0000 (0)\n-22A5B8 Int File Attributes   0000 (0)\n+22C249 Compression Method    0008 (8) 'Deflated'\n+22C24B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C24F CRC                   F30965C2 (4077479362)\n+22C253 Compressed Size       000011F9 (4601)\n+22C257 Uncompressed Size     0000630A (25354)\n+22C25B Filename Length       0035 (53)\n+22C25D Extra Length          0000 (0)\n+22C25F Comment Length        0000 (0)\n+22C261 Disk Start            0000 (0)\n+22C263 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A5BA Ext File Attributes   00000000 (0)\n-22A5BE Local Header Offset   0010B573 (1095027)\n-22A5C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C265 Ext File Attributes   00000000 (0)\n+22C269 Local Header Offset   001297B8 (1218488)\n+22C26D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A5C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C26D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A5FA CENTRAL HEADER #1041  02014B50 (33639248)\n-22A5FE Created Zip Spec      14 (20) '2.0'\n-22A5FF Created OS            00 (0) 'MS-DOS'\n-22A600 Extract Zip Spec      14 (20) '2.0'\n-22A601 Extract OS            00 (0) 'MS-DOS'\n-22A602 General Purpose Flag  0808 (2056)\n+22C2A2 CENTRAL HEADER #1041  02014B50 (33639248)\n+22C2A6 Created Zip Spec      14 (20) '2.0'\n+22C2A7 Created OS            00 (0) 'MS-DOS'\n+22C2A8 Extract Zip Spec      14 (20) '2.0'\n+22C2A9 Extract OS            00 (0) 'MS-DOS'\n+22C2AA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A604 Compression Method    0008 (8) 'Deflated'\n-22A606 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A60A CRC                   00000000 (0)\n-22A60E Compressed Size       00000002 (2)\n-22A612 Uncompressed Size     00000000 (0)\n-22A616 Filename Length       002F (47)\n-22A618 Extra Length          0000 (0)\n-22A61A Comment Length        0000 (0)\n-22A61C Disk Start            0000 (0)\n-22A61E Int File Attributes   0000 (0)\n+22C2AC Compression Method    0008 (8) 'Deflated'\n+22C2AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C2B2 CRC                   046733D7 (73872343)\n+22C2B6 Compressed Size       000002BD (701)\n+22C2BA Uncompressed Size     00000548 (1352)\n+22C2BE Filename Length       0039 (57)\n+22C2C0 Extra Length          0000 (0)\n+22C2C2 Comment Length        0000 (0)\n+22C2C4 Disk Start            0000 (0)\n+22C2C6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A620 Ext File Attributes   00000000 (0)\n-22A624 Local Header Offset   0010B804 (1095684)\n-22A628 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C2C8 Ext File Attributes   00000000 (0)\n+22C2CC Local Header Offset   0012AA14 (1223188)\n+22C2D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A628: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C2D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A657 CENTRAL HEADER #1042  02014B50 (33639248)\n-22A65B Created Zip Spec      14 (20) '2.0'\n-22A65C Created OS            00 (0) 'MS-DOS'\n-22A65D Extract Zip Spec      14 (20) '2.0'\n-22A65E Extract OS            00 (0) 'MS-DOS'\n-22A65F General Purpose Flag  0808 (2056)\n+22C309 CENTRAL HEADER #1042  02014B50 (33639248)\n+22C30D Created Zip Spec      14 (20) '2.0'\n+22C30E Created OS            00 (0) 'MS-DOS'\n+22C30F Extract Zip Spec      14 (20) '2.0'\n+22C310 Extract OS            00 (0) 'MS-DOS'\n+22C311 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A661 Compression Method    0008 (8) 'Deflated'\n-22A663 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A667 CRC                   C68A15C0 (3330938304)\n-22A66B Compressed Size       00000514 (1300)\n-22A66F Uncompressed Size     000011A2 (4514)\n-22A673 Filename Length       0049 (73)\n-22A675 Extra Length          0000 (0)\n-22A677 Comment Length        0000 (0)\n-22A679 Disk Start            0000 (0)\n-22A67B Int File Attributes   0000 (0)\n+22C313 Compression Method    0008 (8) 'Deflated'\n+22C315 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C319 CRC                   0C743F4B (208944971)\n+22C31D Compressed Size       0000080E (2062)\n+22C321 Uncompressed Size     00001883 (6275)\n+22C325 Filename Length       0037 (55)\n+22C327 Extra Length          0000 (0)\n+22C329 Comment Length        0000 (0)\n+22C32B Disk Start            0000 (0)\n+22C32D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A67D Ext File Attributes   00000000 (0)\n-22A681 Local Header Offset   0010B863 (1095779)\n-22A685 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C32F Ext File Attributes   00000000 (0)\n+22C333 Local Header Offset   0012AD38 (1223992)\n+22C337 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A685: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C337: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A6CE CENTRAL HEADER #1043  02014B50 (33639248)\n-22A6D2 Created Zip Spec      14 (20) '2.0'\n-22A6D3 Created OS            00 (0) 'MS-DOS'\n-22A6D4 Extract Zip Spec      14 (20) '2.0'\n-22A6D5 Extract OS            00 (0) 'MS-DOS'\n-22A6D6 General Purpose Flag  0808 (2056)\n+22C36E CENTRAL HEADER #1043  02014B50 (33639248)\n+22C372 Created Zip Spec      14 (20) '2.0'\n+22C373 Created OS            00 (0) 'MS-DOS'\n+22C374 Extract Zip Spec      14 (20) '2.0'\n+22C375 Extract OS            00 (0) 'MS-DOS'\n+22C376 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A6D8 Compression Method    0008 (8) 'Deflated'\n-22A6DA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A6DE CRC                   27A7C8DD (665307357)\n-22A6E2 Compressed Size       000005B0 (1456)\n-22A6E6 Uncompressed Size     00001334 (4916)\n-22A6EA Filename Length       0046 (70)\n-22A6EC Extra Length          0000 (0)\n-22A6EE Comment Length        0000 (0)\n-22A6F0 Disk Start            0000 (0)\n-22A6F2 Int File Attributes   0000 (0)\n+22C378 Compression Method    0008 (8) 'Deflated'\n+22C37A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C37E CRC                   ADE79375 (2917634933)\n+22C382 Compressed Size       0000055E (1374)\n+22C386 Uncompressed Size     00000F93 (3987)\n+22C38A Filename Length       003B (59)\n+22C38C Extra Length          0000 (0)\n+22C38E Comment Length        0000 (0)\n+22C390 Disk Start            0000 (0)\n+22C392 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A6F4 Ext File Attributes   00000000 (0)\n-22A6F8 Local Header Offset   0010BDEE (1097198)\n-22A6FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C394 Ext File Attributes   00000000 (0)\n+22C398 Local Header Offset   0012B5AB (1226155)\n+22C39C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A6FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C39C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A742 CENTRAL HEADER #1044  02014B50 (33639248)\n-22A746 Created Zip Spec      14 (20) '2.0'\n-22A747 Created OS            00 (0) 'MS-DOS'\n-22A748 Extract Zip Spec      14 (20) '2.0'\n-22A749 Extract OS            00 (0) 'MS-DOS'\n-22A74A General Purpose Flag  0808 (2056)\n+22C3D7 CENTRAL HEADER #1044  02014B50 (33639248)\n+22C3DB Created Zip Spec      14 (20) '2.0'\n+22C3DC Created OS            00 (0) 'MS-DOS'\n+22C3DD Extract Zip Spec      14 (20) '2.0'\n+22C3DE Extract OS            00 (0) 'MS-DOS'\n+22C3DF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A74C Compression Method    0008 (8) 'Deflated'\n-22A74E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A752 CRC                   EC1A089B (3961129115)\n-22A756 Compressed Size       00000654 (1620)\n-22A75A Uncompressed Size     00001498 (5272)\n-22A75E Filename Length       0045 (69)\n-22A760 Extra Length          0000 (0)\n-22A762 Comment Length        0000 (0)\n-22A764 Disk Start            0000 (0)\n-22A766 Int File Attributes   0000 (0)\n+22C3E1 Compression Method    0008 (8) 'Deflated'\n+22C3E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C3E7 CRC                   95A966C5 (2510907077)\n+22C3EB Compressed Size       00000ABB (2747)\n+22C3EF Uncompressed Size     0000279F (10143)\n+22C3F3 Filename Length       0038 (56)\n+22C3F5 Extra Length          0000 (0)\n+22C3F7 Comment Length        0000 (0)\n+22C3F9 Disk Start            0000 (0)\n+22C3FB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A768 Ext File Attributes   00000000 (0)\n-22A76C Local Header Offset   0010C412 (1098770)\n-22A770 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C3FD Ext File Attributes   00000000 (0)\n+22C401 Local Header Offset   0012BB72 (1227634)\n+22C405 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A770: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C405: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A7B5 CENTRAL HEADER #1045  02014B50 (33639248)\n-22A7B9 Created Zip Spec      14 (20) '2.0'\n-22A7BA Created OS            00 (0) 'MS-DOS'\n-22A7BB Extract Zip Spec      14 (20) '2.0'\n-22A7BC Extract OS            00 (0) 'MS-DOS'\n-22A7BD General Purpose Flag  0808 (2056)\n+22C43D CENTRAL HEADER #1045  02014B50 (33639248)\n+22C441 Created Zip Spec      14 (20) '2.0'\n+22C442 Created OS            00 (0) 'MS-DOS'\n+22C443 Extract Zip Spec      14 (20) '2.0'\n+22C444 Extract OS            00 (0) 'MS-DOS'\n+22C445 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A7BF Compression Method    0008 (8) 'Deflated'\n-22A7C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A7C5 CRC                   D99CBCB4 (3650927796)\n-22A7C9 Compressed Size       00000280 (640)\n-22A7CD Uncompressed Size     00000536 (1334)\n-22A7D1 Filename Length       0049 (73)\n-22A7D3 Extra Length          0000 (0)\n-22A7D5 Comment Length        0000 (0)\n-22A7D7 Disk Start            0000 (0)\n-22A7D9 Int File Attributes   0000 (0)\n+22C447 Compression Method    0008 (8) 'Deflated'\n+22C449 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C44D CRC                   FBA20F3E (4221701950)\n+22C451 Compressed Size       00000341 (833)\n+22C455 Uncompressed Size     0000069F (1695)\n+22C459 Filename Length       0034 (52)\n+22C45B Extra Length          0000 (0)\n+22C45D Comment Length        0000 (0)\n+22C45F Disk Start            0000 (0)\n+22C461 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A7DB Ext File Attributes   00000000 (0)\n-22A7DF Local Header Offset   0010CAD9 (1100505)\n-22A7E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C463 Ext File Attributes   00000000 (0)\n+22C467 Local Header Offset   0012C693 (1230483)\n+22C46B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A7E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C46B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A82C CENTRAL HEADER #1046  02014B50 (33639248)\n-22A830 Created Zip Spec      14 (20) '2.0'\n-22A831 Created OS            00 (0) 'MS-DOS'\n-22A832 Extract Zip Spec      14 (20) '2.0'\n-22A833 Extract OS            00 (0) 'MS-DOS'\n-22A834 General Purpose Flag  0808 (2056)\n+22C49F CENTRAL HEADER #1046  02014B50 (33639248)\n+22C4A3 Created Zip Spec      14 (20) '2.0'\n+22C4A4 Created OS            00 (0) 'MS-DOS'\n+22C4A5 Extract Zip Spec      14 (20) '2.0'\n+22C4A6 Extract OS            00 (0) 'MS-DOS'\n+22C4A7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A836 Compression Method    0008 (8) 'Deflated'\n-22A838 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A83C CRC                   25CC04D5 (634127573)\n-22A840 Compressed Size       0000058E (1422)\n-22A844 Uncompressed Size     00001094 (4244)\n-22A848 Filename Length       004A (74)\n-22A84A Extra Length          0000 (0)\n-22A84C Comment Length        0000 (0)\n-22A84E Disk Start            0000 (0)\n-22A850 Int File Attributes   0000 (0)\n+22C4A9 Compression Method    0008 (8) 'Deflated'\n+22C4AB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C4AF CRC                   6BB5A87E (1807067262)\n+22C4B3 Compressed Size       000003F9 (1017)\n+22C4B7 Uncompressed Size     00001101 (4353)\n+22C4BB Filename Length       0035 (53)\n+22C4BD Extra Length          0000 (0)\n+22C4BF Comment Length        0000 (0)\n+22C4C1 Disk Start            0000 (0)\n+22C4C3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A852 Ext File Attributes   00000000 (0)\n-22A856 Local Header Offset   0010CDD0 (1101264)\n-22A85A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C4C5 Ext File Attributes   00000000 (0)\n+22C4C9 Local Header Offset   0012CA36 (1231414)\n+22C4CD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A85A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C4CD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A8A4 CENTRAL HEADER #1047  02014B50 (33639248)\n-22A8A8 Created Zip Spec      14 (20) '2.0'\n-22A8A9 Created OS            00 (0) 'MS-DOS'\n-22A8AA Extract Zip Spec      14 (20) '2.0'\n-22A8AB Extract OS            00 (0) 'MS-DOS'\n-22A8AC General Purpose Flag  0808 (2056)\n+22C502 CENTRAL HEADER #1047  02014B50 (33639248)\n+22C506 Created Zip Spec      14 (20) '2.0'\n+22C507 Created OS            00 (0) 'MS-DOS'\n+22C508 Extract Zip Spec      14 (20) '2.0'\n+22C509 Extract OS            00 (0) 'MS-DOS'\n+22C50A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A8AE Compression Method    0008 (8) 'Deflated'\n-22A8B0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A8B4 CRC                   ECA8B7E4 (3970480100)\n-22A8B8 Compressed Size       00000284 (644)\n-22A8BC Uncompressed Size     00000545 (1349)\n-22A8C0 Filename Length       004E (78)\n-22A8C2 Extra Length          0000 (0)\n-22A8C4 Comment Length        0000 (0)\n-22A8C6 Disk Start            0000 (0)\n-22A8C8 Int File Attributes   0000 (0)\n+22C50C Compression Method    0008 (8) 'Deflated'\n+22C50E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C512 CRC                   00000000 (0)\n+22C516 Compressed Size       00000002 (2)\n+22C51A Uncompressed Size     00000000 (0)\n+22C51E Filename Length       0029 (41)\n+22C520 Extra Length          0000 (0)\n+22C522 Comment Length        0000 (0)\n+22C524 Disk Start            0000 (0)\n+22C526 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A8CA Ext File Attributes   00000000 (0)\n-22A8CE Local Header Offset   0010D3D6 (1102806)\n-22A8D2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C528 Ext File Attributes   00000000 (0)\n+22C52C Local Header Offset   0012CE92 (1232530)\n+22C530 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A8D2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C530: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A920 CENTRAL HEADER #1048  02014B50 (33639248)\n-22A924 Created Zip Spec      14 (20) '2.0'\n-22A925 Created OS            00 (0) 'MS-DOS'\n-22A926 Extract Zip Spec      14 (20) '2.0'\n-22A927 Extract OS            00 (0) 'MS-DOS'\n-22A928 General Purpose Flag  0808 (2056)\n+22C559 CENTRAL HEADER #1048  02014B50 (33639248)\n+22C55D Created Zip Spec      14 (20) '2.0'\n+22C55E Created OS            00 (0) 'MS-DOS'\n+22C55F Extract Zip Spec      14 (20) '2.0'\n+22C560 Extract OS            00 (0) 'MS-DOS'\n+22C561 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A92A Compression Method    0008 (8) 'Deflated'\n-22A92C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A930 CRC                   00000000 (0)\n-22A934 Compressed Size       00000002 (2)\n-22A938 Uncompressed Size     00000000 (0)\n-22A93C Filename Length       0026 (38)\n-22A93E Extra Length          0000 (0)\n-22A940 Comment Length        0000 (0)\n-22A942 Disk Start            0000 (0)\n-22A944 Int File Attributes   0000 (0)\n+22C563 Compression Method    0008 (8) 'Deflated'\n+22C565 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C569 CRC                   B641845C (3057747036)\n+22C56D Compressed Size       00000592 (1426)\n+22C571 Uncompressed Size     000010B7 (4279)\n+22C575 Filename Length       0043 (67)\n+22C577 Extra Length          0000 (0)\n+22C579 Comment Length        0000 (0)\n+22C57B Disk Start            0000 (0)\n+22C57D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A946 Ext File Attributes   00000000 (0)\n-22A94A Local Header Offset   0010D6D6 (1103574)\n-22A94E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C57F Ext File Attributes   00000000 (0)\n+22C583 Local Header Offset   0012CEEB (1232619)\n+22C587 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A94E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C587: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A974 CENTRAL HEADER #1049  02014B50 (33639248)\n-22A978 Created Zip Spec      14 (20) '2.0'\n-22A979 Created OS            00 (0) 'MS-DOS'\n-22A97A Extract Zip Spec      14 (20) '2.0'\n-22A97B Extract OS            00 (0) 'MS-DOS'\n-22A97C General Purpose Flag  0808 (2056)\n+22C5CA CENTRAL HEADER #1049  02014B50 (33639248)\n+22C5CE Created Zip Spec      14 (20) '2.0'\n+22C5CF Created OS            00 (0) 'MS-DOS'\n+22C5D0 Extract Zip Spec      14 (20) '2.0'\n+22C5D1 Extract OS            00 (0) 'MS-DOS'\n+22C5D2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A97E Compression Method    0008 (8) 'Deflated'\n-22A980 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A984 CRC                   F154D7FB (4048869371)\n-22A988 Compressed Size       000004D8 (1240)\n-22A98C Uncompressed Size     00000FA2 (4002)\n-22A990 Filename Length       0038 (56)\n-22A992 Extra Length          0000 (0)\n-22A994 Comment Length        0000 (0)\n-22A996 Disk Start            0000 (0)\n-22A998 Int File Attributes   0000 (0)\n+22C5D4 Compression Method    0008 (8) 'Deflated'\n+22C5D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C5DA CRC                   00000000 (0)\n+22C5DE Compressed Size       00000002 (2)\n+22C5E2 Uncompressed Size     00000000 (0)\n+22C5E6 Filename Length       0028 (40)\n+22C5E8 Extra Length          0000 (0)\n+22C5EA Comment Length        0000 (0)\n+22C5EC Disk Start            0000 (0)\n+22C5EE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22A99A Ext File Attributes   00000000 (0)\n-22A99E Local Header Offset   0010D72C (1103660)\n-22A9A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C5F0 Ext File Attributes   00000000 (0)\n+22C5F4 Local Header Offset   0012D4EE (1234158)\n+22C5F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22A9A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C5F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22A9DA CENTRAL HEADER #1050  02014B50 (33639248)\n-22A9DE Created Zip Spec      14 (20) '2.0'\n-22A9DF Created OS            00 (0) 'MS-DOS'\n-22A9E0 Extract Zip Spec      14 (20) '2.0'\n-22A9E1 Extract OS            00 (0) 'MS-DOS'\n-22A9E2 General Purpose Flag  0808 (2056)\n+22C620 CENTRAL HEADER #1050  02014B50 (33639248)\n+22C624 Created Zip Spec      14 (20) '2.0'\n+22C625 Created OS            00 (0) 'MS-DOS'\n+22C626 Extract Zip Spec      14 (20) '2.0'\n+22C627 Extract OS            00 (0) 'MS-DOS'\n+22C628 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22A9E4 Compression Method    0008 (8) 'Deflated'\n-22A9E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22A9EA CRC                   126F64B9 (309290169)\n-22A9EE Compressed Size       00000612 (1554)\n-22A9F2 Uncompressed Size     000013C0 (5056)\n-22A9F6 Filename Length       0034 (52)\n-22A9F8 Extra Length          0000 (0)\n-22A9FA Comment Length        0000 (0)\n-22A9FC Disk Start            0000 (0)\n-22A9FE Int File Attributes   0000 (0)\n+22C62A Compression Method    0008 (8) 'Deflated'\n+22C62C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C630 CRC                   021D9C13 (35494931)\n+22C634 Compressed Size       0000034D (845)\n+22C638 Uncompressed Size     00000951 (2385)\n+22C63C Filename Length       003F (63)\n+22C63E Extra Length          0000 (0)\n+22C640 Comment Length        0000 (0)\n+22C642 Disk Start            0000 (0)\n+22C644 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22AA00 Ext File Attributes   00000000 (0)\n-22AA04 Local Header Offset   0010DC6A (1105002)\n-22AA08 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C646 Ext File Attributes   00000000 (0)\n+22C64A Local Header Offset   0012D546 (1234246)\n+22C64E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22AA08: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C64E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22AA3C CENTRAL HEADER #1051  02014B50 (33639248)\n-22AA40 Created Zip Spec      14 (20) '2.0'\n-22AA41 Created OS            00 (0) 'MS-DOS'\n-22AA42 Extract Zip Spec      14 (20) '2.0'\n-22AA43 Extract OS            00 (0) 'MS-DOS'\n-22AA44 General Purpose Flag  0808 (2056)\n+22C68D CENTRAL HEADER #1051  02014B50 (33639248)\n+22C691 Created Zip Spec      14 (20) '2.0'\n+22C692 Created OS            00 (0) 'MS-DOS'\n+22C693 Extract Zip Spec      14 (20) '2.0'\n+22C694 Extract OS            00 (0) 'MS-DOS'\n+22C695 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22AA46 Compression Method    0008 (8) 'Deflated'\n-22AA48 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22AA4C CRC                   DE2F0B5D (3727625053)\n-22AA50 Compressed Size       00000272 (626)\n-22AA54 Uncompressed Size     000004EB (1259)\n-22AA58 Filename Length       0038 (56)\n-22AA5A Extra Length          0000 (0)\n-22AA5C Comment Length        0000 (0)\n-22AA5E Disk Start            0000 (0)\n-22AA60 Int File Attributes   0000 (0)\n+22C697 Compression Method    0008 (8) 'Deflated'\n+22C699 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C69D CRC                   C419897B (3290007931)\n+22C6A1 Compressed Size       0000044E (1102)\n+22C6A5 Uncompressed Size     00000C66 (3174)\n+22C6A9 Filename Length       004E (78)\n+22C6AB Extra Length          0000 (0)\n+22C6AD Comment Length        0000 (0)\n+22C6AF Disk Start            0000 (0)\n+22C6B1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22AA62 Ext File Attributes   00000000 (0)\n-22AA66 Local Header Offset   0010E2DE (1106654)\n-22AA6A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C6B3 Ext File Attributes   00000000 (0)\n+22C6B7 Local Header Offset   0012D900 (1235200)\n+22C6BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22AA6A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C6BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22AAA2 CENTRAL HEADER #1052  02014B50 (33639248)\n-22AAA6 Created Zip Spec      14 (20) '2.0'\n-22AAA7 Created OS            00 (0) 'MS-DOS'\n-22AAA8 Extract Zip Spec      14 (20) '2.0'\n-22AAA9 Extract OS            00 (0) 'MS-DOS'\n-22AAAA General Purpose Flag  0808 (2056)\n+22C709 CENTRAL HEADER #1052  02014B50 (33639248)\n+22C70D Created Zip Spec      14 (20) '2.0'\n+22C70E Created OS            00 (0) 'MS-DOS'\n+22C70F Extract Zip Spec      14 (20) '2.0'\n+22C710 Extract OS            00 (0) 'MS-DOS'\n+22C711 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22AAAC Compression Method    0008 (8) 'Deflated'\n-22AAAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22AAB2 CRC                   91721BC5 (2440174533)\n-22AAB6 Compressed Size       00000582 (1410)\n-22AABA Uncompressed Size     0000103F (4159)\n-22AABE Filename Length       0039 (57)\n-22AAC0 Extra Length          0000 (0)\n-22AAC2 Comment Length        0000 (0)\n-22AAC4 Disk Start            0000 (0)\n-22AAC6 Int File Attributes   0000 (0)\n+22C713 Compression Method    0008 (8) 'Deflated'\n+22C715 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C719 CRC                   78C43CAA (2026126506)\n+22C71D Compressed Size       0000004B (75)\n+22C721 Uncompressed Size     00000088 (136)\n+22C725 Filename Length       004F (79)\n+22C727 Extra Length          0000 (0)\n+22C729 Comment Length        0000 (0)\n+22C72B Disk Start            0000 (0)\n+22C72D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22AAC8 Ext File Attributes   00000000 (0)\n-22AACC Local Header Offset   0010E5B6 (1107382)\n-22AAD0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C72F Ext File Attributes   00000000 (0)\n+22C733 Local Header Offset   0012DDCA (1236426)\n+22C737 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22AAD0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C737: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22AB09 CENTRAL HEADER #1053  02014B50 (33639248)\n-22AB0D Created Zip Spec      14 (20) '2.0'\n-22AB0E Created OS            00 (0) 'MS-DOS'\n-22AB0F Extract Zip Spec      14 (20) '2.0'\n-22AB10 Extract OS            00 (0) 'MS-DOS'\n-22AB11 General Purpose Flag  0808 (2056)\n+22C786 CENTRAL HEADER #1053  02014B50 (33639248)\n+22C78A Created Zip Spec      14 (20) '2.0'\n+22C78B Created OS            00 (0) 'MS-DOS'\n+22C78C Extract Zip Spec      14 (20) '2.0'\n+22C78D Extract OS            00 (0) 'MS-DOS'\n+22C78E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22AB13 Compression Method    0008 (8) 'Deflated'\n-22AB15 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22AB19 CRC                   6E31EAB9 (1848765113)\n-22AB1D Compressed Size       00000276 (630)\n-22AB21 Uncompressed Size     000004FA (1274)\n-22AB25 Filename Length       003D (61)\n-22AB27 Extra Length          0000 (0)\n-22AB29 Comment Length        0000 (0)\n-22AB2B Disk Start            0000 (0)\n-22AB2D Int File Attributes   0000 (0)\n+22C790 Compression Method    0008 (8) 'Deflated'\n+22C792 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C796 CRC                   00000000 (0)\n+22C79A Compressed Size       00000002 (2)\n+22C79E Uncompressed Size     00000000 (0)\n+22C7A2 Filename Length       0031 (49)\n+22C7A4 Extra Length          0000 (0)\n+22C7A6 Comment Length        0000 (0)\n+22C7A8 Disk Start            0000 (0)\n+22C7AA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22AB2F Ext File Attributes   00000000 (0)\n-22AB33 Local Header Offset   0010EB9F (1108895)\n-22AB37 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C7AC Ext File Attributes   00000000 (0)\n+22C7B0 Local Header Offset   0012DE92 (1236626)\n+22C7B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22AB37: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C7B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22AB74 CENTRAL HEADER #1054  02014B50 (33639248)\n-22AB78 Created Zip Spec      14 (20) '2.0'\n-22AB79 Created OS            00 (0) 'MS-DOS'\n-22AB7A Extract Zip Spec      14 (20) '2.0'\n-22AB7B Extract OS            00 (0) 'MS-DOS'\n-22AB7C General Purpose Flag  0808 (2056)\n+22C7E5 CENTRAL HEADER #1054  02014B50 (33639248)\n+22C7E9 Created Zip Spec      14 (20) '2.0'\n+22C7EA Created OS            00 (0) 'MS-DOS'\n+22C7EB Extract Zip Spec      14 (20) '2.0'\n+22C7EC Extract OS            00 (0) 'MS-DOS'\n+22C7ED General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22AB7E Compression Method    0008 (8) 'Deflated'\n-22AB80 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22AB84 CRC                   9A81C390 (2592195472)\n-22AB88 Compressed Size       0000054E (1358)\n-22AB8C Uncompressed Size     0000109F (4255)\n-22AB90 Filename Length       0035 (53)\n-22AB92 Extra Length          0000 (0)\n-22AB94 Comment Length        0000 (0)\n-22AB96 Disk Start            0000 (0)\n-22AB98 Int File Attributes   0000 (0)\n+22C7EF Compression Method    0008 (8) 'Deflated'\n+22C7F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C7F5 CRC                   FBA32B90 (4221774736)\n+22C7F9 Compressed Size       000003C4 (964)\n+22C7FD Uncompressed Size     00000C2F (3119)\n+22C801 Filename Length       0038 (56)\n+22C803 Extra Length          0000 (0)\n+22C805 Comment Length        0000 (0)\n+22C807 Disk Start            0000 (0)\n+22C809 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22AB9A Ext File Attributes   00000000 (0)\n-22AB9E Local Header Offset   0010EE80 (1109632)\n-22ABA2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C80B Ext File Attributes   00000000 (0)\n+22C80F Local Header Offset   0012DEF3 (1236723)\n+22C813 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22ABA2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C813: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22ABD7 CENTRAL HEADER #1055  02014B50 (33639248)\n-22ABDB Created Zip Spec      14 (20) '2.0'\n-22ABDC Created OS            00 (0) 'MS-DOS'\n-22ABDD Extract Zip Spec      14 (20) '2.0'\n-22ABDE Extract OS            00 (0) 'MS-DOS'\n-22ABDF General Purpose Flag  0808 (2056)\n+22C84B CENTRAL HEADER #1055  02014B50 (33639248)\n+22C84F Created Zip Spec      14 (20) '2.0'\n+22C850 Created OS            00 (0) 'MS-DOS'\n+22C851 Extract Zip Spec      14 (20) '2.0'\n+22C852 Extract OS            00 (0) 'MS-DOS'\n+22C853 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22ABE1 Compression Method    0008 (8) 'Deflated'\n-22ABE3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22ABE7 CRC                   00000000 (0)\n-22ABEB Compressed Size       00000002 (2)\n-22ABEF Uncompressed Size     00000000 (0)\n-22ABF3 Filename Length       001F (31)\n-22ABF5 Extra Length          0000 (0)\n-22ABF7 Comment Length        0000 (0)\n-22ABF9 Disk Start            0000 (0)\n-22ABFB Int File Attributes   0000 (0)\n+22C855 Compression Method    0008 (8) 'Deflated'\n+22C857 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C85B CRC                   2A331345 (707990341)\n+22C85F Compressed Size       00000045 (69)\n+22C863 Uncompressed Size     00000047 (71)\n+22C867 Filename Length       003F (63)\n+22C869 Extra Length          0000 (0)\n+22C86B Comment Length        0000 (0)\n+22C86D Disk Start            0000 (0)\n+22C86F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22ABFD Ext File Attributes   00000000 (0)\n-22AC01 Local Header Offset   0010F431 (1111089)\n-22AC05 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C871 Ext File Attributes   00000000 (0)\n+22C875 Local Header Offset   0012E31D (1237789)\n+22C879 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22AC05: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C879: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22AC24 CENTRAL HEADER #1056  02014B50 (33639248)\n-22AC28 Created Zip Spec      14 (20) '2.0'\n-22AC29 Created OS            00 (0) 'MS-DOS'\n-22AC2A Extract Zip Spec      14 (20) '2.0'\n-22AC2B Extract OS            00 (0) 'MS-DOS'\n-22AC2C General Purpose Flag  0808 (2056)\n+22C8B8 CENTRAL HEADER #1056  02014B50 (33639248)\n+22C8BC Created Zip Spec      14 (20) '2.0'\n+22C8BD Created OS            00 (0) 'MS-DOS'\n+22C8BE Extract Zip Spec      14 (20) '2.0'\n+22C8BF Extract OS            00 (0) 'MS-DOS'\n+22C8C0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22AC2E Compression Method    0008 (8) 'Deflated'\n-22AC30 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22AC34 CRC                   20838DDF (545492447)\n-22AC38 Compressed Size       0000029A (666)\n-22AC3C Uncompressed Size     00000527 (1319)\n-22AC40 Filename Length       002E (46)\n-22AC42 Extra Length          0000 (0)\n-22AC44 Comment Length        0000 (0)\n-22AC46 Disk Start            0000 (0)\n-22AC48 Int File Attributes   0000 (0)\n+22C8C2 Compression Method    0008 (8) 'Deflated'\n+22C8C4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C8C8 CRC                   00000000 (0)\n+22C8CC Compressed Size       00000002 (2)\n+22C8D0 Uncompressed Size     00000000 (0)\n+22C8D4 Filename Length       002B (43)\n+22C8D6 Extra Length          0000 (0)\n+22C8D8 Comment Length        0000 (0)\n+22C8DA Disk Start            0000 (0)\n+22C8DC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22AC4A Ext File Attributes   00000000 (0)\n-22AC4E Local Header Offset   0010F480 (1111168)\n-22AC52 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C8DE Ext File Attributes   00000000 (0)\n+22C8E2 Local Header Offset   0012E3CF (1237967)\n+22C8E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22AC52: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C8E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22AC80 CENTRAL HEADER #1057  02014B50 (33639248)\n-22AC84 Created Zip Spec      14 (20) '2.0'\n-22AC85 Created OS            00 (0) 'MS-DOS'\n-22AC86 Extract Zip Spec      14 (20) '2.0'\n-22AC87 Extract OS            00 (0) 'MS-DOS'\n-22AC88 General Purpose Flag  0808 (2056)\n+22C911 CENTRAL HEADER #1057  02014B50 (33639248)\n+22C915 Created Zip Spec      14 (20) '2.0'\n+22C916 Created OS            00 (0) 'MS-DOS'\n+22C917 Extract Zip Spec      14 (20) '2.0'\n+22C918 Extract OS            00 (0) 'MS-DOS'\n+22C919 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22AC8A Compression Method    0008 (8) 'Deflated'\n-22AC8C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22AC90 CRC                   736BD280 (1936446080)\n-22AC94 Compressed Size       0000028E (654)\n-22AC98 Uncompressed Size     0000056A (1386)\n-22AC9C Filename Length       002F (47)\n-22AC9E Extra Length          0000 (0)\n-22ACA0 Comment Length        0000 (0)\n-22ACA2 Disk Start            0000 (0)\n-22ACA4 Int File Attributes   0000 (0)\n+22C91B Compression Method    0008 (8) 'Deflated'\n+22C91D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C921 CRC                   C2851F80 (3263504256)\n+22C925 Compressed Size       00000876 (2166)\n+22C929 Uncompressed Size     0000207E (8318)\n+22C92D Filename Length       003E (62)\n+22C92F Extra Length          0000 (0)\n+22C931 Comment Length        0000 (0)\n+22C933 Disk Start            0000 (0)\n+22C935 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22ACA6 Ext File Attributes   00000000 (0)\n-22ACAA Local Header Offset   0010F776 (1111926)\n-22ACAE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C937 Ext File Attributes   00000000 (0)\n+22C93B Local Header Offset   0012E42A (1238058)\n+22C93F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22ACAE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C93F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22ACDD CENTRAL HEADER #1058  02014B50 (33639248)\n-22ACE1 Created Zip Spec      14 (20) '2.0'\n-22ACE2 Created OS            00 (0) 'MS-DOS'\n-22ACE3 Extract Zip Spec      14 (20) '2.0'\n-22ACE4 Extract OS            00 (0) 'MS-DOS'\n-22ACE5 General Purpose Flag  0808 (2056)\n+22C97D CENTRAL HEADER #1058  02014B50 (33639248)\n+22C981 Created Zip Spec      14 (20) '2.0'\n+22C982 Created OS            00 (0) 'MS-DOS'\n+22C983 Extract Zip Spec      14 (20) '2.0'\n+22C984 Extract OS            00 (0) 'MS-DOS'\n+22C985 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22ACE7 Compression Method    0008 (8) 'Deflated'\n-22ACE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22ACED CRC                   C27E840C (3263071244)\n-22ACF1 Compressed Size       000002E1 (737)\n-22ACF5 Uncompressed Size     000006E9 (1769)\n-22ACF9 Filename Length       002E (46)\n-22ACFB Extra Length          0000 (0)\n-22ACFD Comment Length        0000 (0)\n-22ACFF Disk Start            0000 (0)\n-22AD01 Int File Attributes   0000 (0)\n+22C987 Compression Method    0008 (8) 'Deflated'\n+22C989 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C98D CRC                   00000000 (0)\n+22C991 Compressed Size       00000002 (2)\n+22C995 Uncompressed Size     00000000 (0)\n+22C999 Filename Length       0038 (56)\n+22C99B Extra Length          0000 (0)\n+22C99D Comment Length        0000 (0)\n+22C99F Disk Start            0000 (0)\n+22C9A1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22AD03 Ext File Attributes   00000000 (0)\n-22AD07 Local Header Offset   0010FA61 (1112673)\n-22AD0B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22C9A3 Ext File Attributes   00000000 (0)\n+22C9A7 Local Header Offset   0012ED0C (1240332)\n+22C9AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22AD0B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22C9AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22AD39 CENTRAL HEADER #1059  02014B50 (33639248)\n-22AD3D Created Zip Spec      14 (20) '2.0'\n-22AD3E Created OS            00 (0) 'MS-DOS'\n-22AD3F Extract Zip Spec      14 (20) '2.0'\n-22AD40 Extract OS            00 (0) 'MS-DOS'\n-22AD41 General Purpose Flag  0808 (2056)\n+22C9E3 CENTRAL HEADER #1059  02014B50 (33639248)\n+22C9E7 Created Zip Spec      14 (20) '2.0'\n+22C9E8 Created OS            00 (0) 'MS-DOS'\n+22C9E9 Extract Zip Spec      14 (20) '2.0'\n+22C9EA Extract OS            00 (0) 'MS-DOS'\n+22C9EB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22AD43 Compression Method    0008 (8) 'Deflated'\n-22AD45 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22AD49 CRC                   00000000 (0)\n-22AD4D Compressed Size       00000002 (2)\n-22AD51 Uncompressed Size     00000000 (0)\n-22AD55 Filename Length       0025 (37)\n-22AD57 Extra Length          0000 (0)\n-22AD59 Comment Length        0000 (0)\n-22AD5B Disk Start            0000 (0)\n-22AD5D Int File Attributes   0000 (0)\n+22C9ED Compression Method    0008 (8) 'Deflated'\n+22C9EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22C9F3 CRC                   DFB279C5 (3753015749)\n+22C9F7 Compressed Size       00000392 (914)\n+22C9FB Uncompressed Size     000008C6 (2246)\n+22C9FF Filename Length       003F (63)\n+22CA01 Extra Length          0000 (0)\n+22CA03 Comment Length        0000 (0)\n+22CA05 Disk Start            0000 (0)\n+22CA07 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22AD5F Ext File Attributes   00000000 (0)\n-22AD63 Local Header Offset   0010FD9E (1113502)\n-22AD67 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22CA09 Ext File Attributes   00000000 (0)\n+22CA0D Local Header Offset   0012ED74 (1240436)\n+22CA11 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22AD67: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22CA11: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22AD8C CENTRAL HEADER #1060  02014B50 (33639248)\n-22AD90 Created Zip Spec      14 (20) '2.0'\n-22AD91 Created OS            00 (0) 'MS-DOS'\n-22AD92 Extract Zip Spec      14 (20) '2.0'\n-22AD93 Extract OS            00 (0) 'MS-DOS'\n-22AD94 General Purpose Flag  0808 (2056)\n+22CA50 CENTRAL HEADER #1060  02014B50 (33639248)\n+22CA54 Created Zip Spec      14 (20) '2.0'\n+22CA55 Created OS            00 (0) 'MS-DOS'\n+22CA56 Extract Zip Spec      14 (20) '2.0'\n+22CA57 Extract OS            00 (0) 'MS-DOS'\n+22CA58 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22AD96 Compression Method    0008 (8) 'Deflated'\n-22AD98 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22AD9C CRC                   88BB48F4 (2293975284)\n-22ADA0 Compressed Size       00000274 (628)\n-22ADA4 Uncompressed Size     00000509 (1289)\n-22ADA8 Filename Length       0039 (57)\n-22ADAA Extra Length          0000 (0)\n-22ADAC Comment Length        0000 (0)\n-22ADAE Disk Start            0000 (0)\n-22ADB0 Int File Attributes   0000 (0)\n+22CA5A Compression Method    0008 (8) 'Deflated'\n+22CA5C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22CA60 CRC                   AE9E07C3 (2929592259)\n+22CA64 Compressed Size       0000004A (74)\n+22CA68 Uncompressed Size     0000004E (78)\n+22CA6C Filename Length       0046 (70)\n+22CA6E Extra Length          0000 (0)\n+22CA70 Comment Length        0000 (0)\n+22CA72 Disk Start            0000 (0)\n+22CA74 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22ADB2 Ext File Attributes   00000000 (0)\n-22ADB6 Local Header Offset   0010FDF3 (1113587)\n-22ADBA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22CA76 Ext File Attributes   00000000 (0)\n+22CA7A Local Header Offset   0012F173 (1241459)\n+22CA7E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22ADBA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22CA7E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22ADF3 CENTRAL HEADER #1061  02014B50 (33639248)\n-22ADF7 Created Zip Spec      14 (20) '2.0'\n-22ADF8 Created OS            00 (0) 'MS-DOS'\n-22ADF9 Extract Zip Spec      14 (20) '2.0'\n-22ADFA Extract OS            00 (0) 'MS-DOS'\n-22ADFB General Purpose Flag  0808 (2056)\n+22CAC4 CENTRAL HEADER #1061  02014B50 (33639248)\n+22CAC8 Created Zip Spec      14 (20) '2.0'\n+22CAC9 Created OS            00 (0) 'MS-DOS'\n+22CACA Extract Zip Spec      14 (20) '2.0'\n+22CACB Extract OS            00 (0) 'MS-DOS'\n+22CACC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22ADFD Compression Method    0008 (8) 'Deflated'\n-22ADFF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22AE03 CRC                   690E10B4 (1762529460)\n-22AE07 Compressed Size       00000615 (1557)\n-22AE0B Uncompressed Size     0000128E (4750)\n-22AE0F Filename Length       0039 (57)\n-22AE11 Extra Length          0000 (0)\n-22AE13 Comment Length        0000 (0)\n-22AE15 Disk Start            0000 (0)\n-22AE17 Int File Attributes   0000 (0)\n+22CACE Compression Method    0008 (8) 'Deflated'\n+22CAD0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22CAD4 CRC                   00000000 (0)\n+22CAD8 Compressed Size       00000002 (2)\n+22CADC Uncompressed Size     00000000 (0)\n+22CAE0 Filename Length       0028 (40)\n+22CAE2 Extra Length          0000 (0)\n+22CAE4 Comment Length        0000 (0)\n+22CAE6 Disk Start            0000 (0)\n+22CAE8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22AE19 Ext File Attributes   00000000 (0)\n-22AE1D Local Header Offset   001100CE (1114318)\n-22AE21 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22CAEA Ext File Attributes   00000000 (0)\n+22CAEE Local Header Offset   0012F231 (1241649)\n+22CAF2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22AE21: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22CAF2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22AE5A CENTRAL HEADER #1062  02014B50 (33639248)\n-22AE5E Created Zip Spec      14 (20) '2.0'\n-22AE5F Created OS            00 (0) 'MS-DOS'\n-22AE60 Extract Zip Spec      14 (20) '2.0'\n-22AE61 Extract OS            00 (0) 'MS-DOS'\n-22AE62 General Purpose Flag  0808 (2056)\n+22CB1A CENTRAL HEADER #1062  02014B50 (33639248)\n+22CB1E Created Zip Spec      14 (20) '2.0'\n+22CB1F Created OS            00 (0) 'MS-DOS'\n+22CB20 Extract Zip Spec      14 (20) '2.0'\n+22CB21 Extract OS            00 (0) 'MS-DOS'\n+22CB22 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22AE64 Compression Method    0008 (8) 'Deflated'\n-22AE66 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22AE6A CRC                   00000000 (0)\n-22AE6E Compressed Size       00000002 (2)\n-22AE72 Uncompressed Size     00000000 (0)\n-22AE76 Filename Length       0027 (39)\n-22AE78 Extra Length          0000 (0)\n-22AE7A Comment Length        0000 (0)\n-22AE7C Disk Start            0000 (0)\n-22AE7E Int File Attributes   0000 (0)\n+22CB24 Compression Method    0008 (8) 'Deflated'\n+22CB26 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22CB2A CRC                   E525BFD2 (3844456402)\n+22CB2E Compressed Size       000006AE (1710)\n+22CB32 Uncompressed Size     00001958 (6488)\n+22CB36 Filename Length       003E (62)\n+22CB38 Extra Length          0000 (0)\n+22CB3A Comment Length        0000 (0)\n+22CB3C Disk Start            0000 (0)\n+22CB3E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22AE80 Ext File Attributes   00000000 (0)\n-22AE84 Local Header Offset   0011074A (1115978)\n-22AE88 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22CB40 Ext File Attributes   00000000 (0)\n+22CB44 Local Header Offset   0012F289 (1241737)\n+22CB48 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22AE88: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22CB48: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22AEAF CENTRAL HEADER #1063  02014B50 (33639248)\n-22AEB3 Created Zip Spec      14 (20) '2.0'\n-22AEB4 Created OS            00 (0) 'MS-DOS'\n-22AEB5 Extract Zip Spec      14 (20) '2.0'\n-22AEB6 Extract OS            00 (0) 'MS-DOS'\n-22AEB7 General Purpose Flag  0808 (2056)\n+22CB86 CENTRAL HEADER #1063  02014B50 (33639248)\n+22CB8A Created Zip Spec      14 (20) '2.0'\n+22CB8B Created OS            00 (0) 'MS-DOS'\n+22CB8C Extract Zip Spec      14 (20) '2.0'\n+22CB8D Extract OS            00 (0) 'MS-DOS'\n+22CB8E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22AEB9 Compression Method    0008 (8) 'Deflated'\n-22AEBB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22AEBF CRC                   099C0616 (161220118)\n-22AEC3 Compressed Size       000002D8 (728)\n-22AEC7 Uncompressed Size     00000628 (1576)\n-22AECB Filename Length       003D (61)\n-22AECD Extra Length          0000 (0)\n-22AECF Comment Length        0000 (0)\n-22AED1 Disk Start            0000 (0)\n-22AED3 Int File Attributes   0000 (0)\n+22CB90 Compression Method    0008 (8) 'Deflated'\n+22CB92 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22CB96 CRC                   00000000 (0)\n+22CB9A Compressed Size       00000002 (2)\n+22CB9E Uncompressed Size     00000000 (0)\n+22CBA2 Filename Length       0034 (52)\n+22CBA4 Extra Length          0000 (0)\n+22CBA6 Comment Length        0000 (0)\n+22CBA8 Disk Start            0000 (0)\n+22CBAA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22AED5 Ext File Attributes   00000000 (0)\n-22AED9 Local Header Offset   001107A1 (1116065)\n-22AEDD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22CBAC Ext File Attributes   00000000 (0)\n+22CBB0 Local Header Offset   0012F9A3 (1243555)\n+22CBB4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22AEDD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22CBB4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22AF1A CENTRAL HEADER #1064  02014B50 (33639248)\n-22AF1E Created Zip Spec      14 (20) '2.0'\n-22AF1F Created OS            00 (0) 'MS-DOS'\n-22AF20 Extract Zip Spec      14 (20) '2.0'\n-22AF21 Extract OS            00 (0) 'MS-DOS'\n-22AF22 General Purpose Flag  0808 (2056)\n+22CBE8 CENTRAL HEADER #1064  02014B50 (33639248)\n+22CBEC Created Zip Spec      14 (20) '2.0'\n+22CBED Created OS            00 (0) 'MS-DOS'\n+22CBEE Extract Zip Spec      14 (20) '2.0'\n+22CBEF Extract OS            00 (0) 'MS-DOS'\n+22CBF0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22AF24 Compression Method    0008 (8) 'Deflated'\n-22AF26 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22AF2A CRC                   1EBD34EC (515716332)\n-22AF2E Compressed Size       000003DA (986)\n-22AF32 Uncompressed Size     00000948 (2376)\n-22AF36 Filename Length       003D (61)\n-22AF38 Extra Length          0000 (0)\n-22AF3A Comment Length        0000 (0)\n-22AF3C Disk Start            0000 (0)\n-22AF3E Int File Attributes   0000 (0)\n+22CBF2 Compression Method    0008 (8) 'Deflated'\n+22CBF4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22CBF8 CRC                   6C50312F (1817194799)\n+22CBFC Compressed Size       00000372 (882)\n+22CC00 Uncompressed Size     0000080B (2059)\n+22CC04 Filename Length       003B (59)\n+22CC06 Extra Length          0000 (0)\n+22CC08 Comment Length        0000 (0)\n+22CC0A Disk Start            0000 (0)\n+22CC0C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22AF40 Ext File Attributes   00000000 (0)\n-22AF44 Local Header Offset   00110AE4 (1116900)\n-22AF48 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22CC0E Ext File Attributes   00000000 (0)\n+22CC12 Local Header Offset   0012FA07 (1243655)\n+22CC16 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22AF48: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22CC16: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22AF85 CENTRAL HEADER #1065  02014B50 (33639248)\n-22AF89 Created Zip Spec      14 (20) '2.0'\n-22AF8A Created OS            00 (0) 'MS-DOS'\n-22AF8B Extract Zip Spec      14 (20) '2.0'\n-22AF8C Extract OS            00 (0) 'MS-DOS'\n-22AF8D General Purpose Flag  0808 (2056)\n+22CC51 CENTRAL HEADER #1065  02014B50 (33639248)\n+22CC55 Created Zip Spec      14 (20) '2.0'\n+22CC56 Created OS            00 (0) 'MS-DOS'\n+22CC57 Extract Zip Spec      14 (20) '2.0'\n+22CC58 Extract OS            00 (0) 'MS-DOS'\n+22CC59 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22AF8F Compression Method    0008 (8) 'Deflated'\n-22AF91 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22AF95 CRC                   00C8CBDF (13159391)\n-22AF99 Compressed Size       0000026C (620)\n-22AF9D Uncompressed Size     000004EF (1263)\n-22AFA1 Filename Length       003D (61)\n-22AFA3 Extra Length          0000 (0)\n-22AFA5 Comment Length        0000 (0)\n-22AFA7 Disk Start            0000 (0)\n-22AFA9 Int File Attributes   0000 (0)\n+22CC5B Compression Method    0008 (8) 'Deflated'\n+22CC5D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22CC61 CRC                   20792918 (544811288)\n+22CC65 Compressed Size       00000045 (69)\n+22CC69 Uncompressed Size     0000004A (74)\n+22CC6D Filename Length       0042 (66)\n+22CC6F Extra Length          0000 (0)\n+22CC71 Comment Length        0000 (0)\n+22CC73 Disk Start            0000 (0)\n+22CC75 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22AFAB Ext File Attributes   00000000 (0)\n-22AFAF Local Header Offset   00110F29 (1117993)\n-22AFB3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22CC77 Ext File Attributes   00000000 (0)\n+22CC7B Local Header Offset   0012FDE2 (1244642)\n+22CC7F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22AFB3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22CC7F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22AFF0 CENTRAL HEADER #1066  02014B50 (33639248)\n-22AFF4 Created Zip Spec      14 (20) '2.0'\n-22AFF5 Created OS            00 (0) 'MS-DOS'\n-22AFF6 Extract Zip Spec      14 (20) '2.0'\n-22AFF7 Extract OS            00 (0) 'MS-DOS'\n-22AFF8 General Purpose Flag  0808 (2056)\n+22CCC1 CENTRAL HEADER #1066  02014B50 (33639248)\n+22CCC5 Created Zip Spec      14 (20) '2.0'\n+22CCC6 Created OS            00 (0) 'MS-DOS'\n+22CCC7 Extract Zip Spec      14 (20) '2.0'\n+22CCC8 Extract OS            00 (0) 'MS-DOS'\n+22CCC9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22AFFA Compression Method    0008 (8) 'Deflated'\n-22AFFC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B000 CRC                   9F24457D (2669954429)\n-22B004 Compressed Size       00000295 (661)\n-22B008 Uncompressed Size     0000053C (1340)\n-22B00C Filename Length       003D (61)\n-22B00E Extra Length          0000 (0)\n-22B010 Comment Length        0000 (0)\n-22B012 Disk Start            0000 (0)\n-22B014 Int File Attributes   0000 (0)\n+22CCCB Compression Method    0008 (8) 'Deflated'\n+22CCCD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22CCD1 CRC                   00000000 (0)\n+22CCD5 Compressed Size       00000002 (2)\n+22CCD9 Uncompressed Size     00000000 (0)\n+22CCDD Filename Length       0024 (36)\n+22CCDF Extra Length          0000 (0)\n+22CCE1 Comment Length        0000 (0)\n+22CCE3 Disk Start            0000 (0)\n+22CCE5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B016 Ext File Attributes   00000000 (0)\n-22B01A Local Header Offset   00111200 (1118720)\n-22B01E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22CCE7 Ext File Attributes   00000000 (0)\n+22CCEB Local Header Offset   0012FE97 (1244823)\n+22CCEF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B01E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22CCEF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B05B CENTRAL HEADER #1067  02014B50 (33639248)\n-22B05F Created Zip Spec      14 (20) '2.0'\n-22B060 Created OS            00 (0) 'MS-DOS'\n-22B061 Extract Zip Spec      14 (20) '2.0'\n-22B062 Extract OS            00 (0) 'MS-DOS'\n-22B063 General Purpose Flag  0808 (2056)\n+22CD13 CENTRAL HEADER #1067  02014B50 (33639248)\n+22CD17 Created Zip Spec      14 (20) '2.0'\n+22CD18 Created OS            00 (0) 'MS-DOS'\n+22CD19 Extract Zip Spec      14 (20) '2.0'\n+22CD1A Extract OS            00 (0) 'MS-DOS'\n+22CD1B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B065 Compression Method    0008 (8) 'Deflated'\n-22B067 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B06B CRC                   E226A571 (3794183537)\n-22B06F Compressed Size       0000030A (778)\n-22B073 Uncompressed Size     000006A0 (1696)\n-22B077 Filename Length       003A (58)\n-22B079 Extra Length          0000 (0)\n-22B07B Comment Length        0000 (0)\n-22B07D Disk Start            0000 (0)\n-22B07F Int File Attributes   0000 (0)\n+22CD1D Compression Method    0008 (8) 'Deflated'\n+22CD1F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22CD23 CRC                   2CD78AEC (752323308)\n+22CD27 Compressed Size       0000091A (2330)\n+22CD2B Uncompressed Size     0000277A (10106)\n+22CD2F Filename Length       0036 (54)\n+22CD31 Extra Length          0000 (0)\n+22CD33 Comment Length        0000 (0)\n+22CD35 Disk Start            0000 (0)\n+22CD37 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B081 Ext File Attributes   00000000 (0)\n-22B085 Local Header Offset   00111500 (1119488)\n-22B089 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22CD39 Ext File Attributes   00000000 (0)\n+22CD3D Local Header Offset   0012FEEB (1244907)\n+22CD41 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B089: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22CD41: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B0C3 CENTRAL HEADER #1068  02014B50 (33639248)\n-22B0C7 Created Zip Spec      14 (20) '2.0'\n-22B0C8 Created OS            00 (0) 'MS-DOS'\n-22B0C9 Extract Zip Spec      14 (20) '2.0'\n-22B0CA Extract OS            00 (0) 'MS-DOS'\n-22B0CB General Purpose Flag  0808 (2056)\n+22CD77 CENTRAL HEADER #1068  02014B50 (33639248)\n+22CD7B Created Zip Spec      14 (20) '2.0'\n+22CD7C Created OS            00 (0) 'MS-DOS'\n+22CD7D Extract Zip Spec      14 (20) '2.0'\n+22CD7E Extract OS            00 (0) 'MS-DOS'\n+22CD7F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B0CD Compression Method    0008 (8) 'Deflated'\n-22B0CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B0D3 CRC                   00000000 (0)\n-22B0D7 Compressed Size       00000002 (2)\n-22B0DB Uncompressed Size     00000000 (0)\n-22B0DF Filename Length       0027 (39)\n-22B0E1 Extra Length          0000 (0)\n-22B0E3 Comment Length        0000 (0)\n-22B0E5 Disk Start            0000 (0)\n-22B0E7 Int File Attributes   0000 (0)\n+22CD81 Compression Method    0008 (8) 'Deflated'\n+22CD83 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22CD87 CRC                   00000000 (0)\n+22CD8B Compressed Size       00000002 (2)\n+22CD8F Uncompressed Size     00000000 (0)\n+22CD93 Filename Length       0030 (48)\n+22CD95 Extra Length          0000 (0)\n+22CD97 Comment Length        0000 (0)\n+22CD99 Disk Start            0000 (0)\n+22CD9B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B0E9 Ext File Attributes   00000000 (0)\n-22B0ED Local Header Offset   00111872 (1120370)\n-22B0F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22CD9D Ext File Attributes   00000000 (0)\n+22CDA1 Local Header Offset   00130869 (1247337)\n+22CDA5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B0F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22CDA5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B118 CENTRAL HEADER #1069  02014B50 (33639248)\n-22B11C Created Zip Spec      14 (20) '2.0'\n-22B11D Created OS            00 (0) 'MS-DOS'\n-22B11E Extract Zip Spec      14 (20) '2.0'\n-22B11F Extract OS            00 (0) 'MS-DOS'\n-22B120 General Purpose Flag  0808 (2056)\n+22CDD5 CENTRAL HEADER #1069  02014B50 (33639248)\n+22CDD9 Created Zip Spec      14 (20) '2.0'\n+22CDDA Created OS            00 (0) 'MS-DOS'\n+22CDDB Extract Zip Spec      14 (20) '2.0'\n+22CDDC Extract OS            00 (0) 'MS-DOS'\n+22CDDD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B122 Compression Method    0008 (8) 'Deflated'\n-22B124 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B128 CRC                   AD23A7BE (2904795070)\n-22B12C Compressed Size       00000424 (1060)\n-22B130 Uncompressed Size     00000CE3 (3299)\n-22B134 Filename Length       003E (62)\n-22B136 Extra Length          0000 (0)\n-22B138 Comment Length        0000 (0)\n-22B13A Disk Start            0000 (0)\n-22B13C Int File Attributes   0000 (0)\n+22CDDF Compression Method    0008 (8) 'Deflated'\n+22CDE1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22CDE5 CRC                   C023047F (3223520383)\n+22CDE9 Compressed Size       000003B9 (953)\n+22CDED Uncompressed Size     000009EF (2543)\n+22CDF1 Filename Length       0037 (55)\n+22CDF3 Extra Length          0000 (0)\n+22CDF5 Comment Length        0000 (0)\n+22CDF7 Disk Start            0000 (0)\n+22CDF9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B13E Ext File Attributes   00000000 (0)\n-22B142 Local Header Offset   001118C9 (1120457)\n-22B146 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22CDFB Ext File Attributes   00000000 (0)\n+22CDFF Local Header Offset   001308C9 (1247433)\n+22CE03 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B146: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22CE03: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B184 CENTRAL HEADER #1070  02014B50 (33639248)\n-22B188 Created Zip Spec      14 (20) '2.0'\n-22B189 Created OS            00 (0) 'MS-DOS'\n-22B18A Extract Zip Spec      14 (20) '2.0'\n-22B18B Extract OS            00 (0) 'MS-DOS'\n-22B18C General Purpose Flag  0808 (2056)\n+22CE3A CENTRAL HEADER #1070  02014B50 (33639248)\n+22CE3E Created Zip Spec      14 (20) '2.0'\n+22CE3F Created OS            00 (0) 'MS-DOS'\n+22CE40 Extract Zip Spec      14 (20) '2.0'\n+22CE41 Extract OS            00 (0) 'MS-DOS'\n+22CE42 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B18E Compression Method    0008 (8) 'Deflated'\n-22B190 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B194 CRC                   00000000 (0)\n-22B198 Compressed Size       00000002 (2)\n-22B19C Uncompressed Size     00000000 (0)\n-22B1A0 Filename Length       0026 (38)\n-22B1A2 Extra Length          0000 (0)\n-22B1A4 Comment Length        0000 (0)\n-22B1A6 Disk Start            0000 (0)\n-22B1A8 Int File Attributes   0000 (0)\n+22CE44 Compression Method    0008 (8) 'Deflated'\n+22CE46 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22CE4A CRC                   7C47DDD5 (2085084629)\n+22CE4E Compressed Size       00000044 (68)\n+22CE52 Uncompressed Size     00000046 (70)\n+22CE56 Filename Length       003E (62)\n+22CE58 Extra Length          0000 (0)\n+22CE5A Comment Length        0000 (0)\n+22CE5C Disk Start            0000 (0)\n+22CE5E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B1AA Ext File Attributes   00000000 (0)\n-22B1AE Local Header Offset   00111D59 (1121625)\n-22B1B2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22CE60 Ext File Attributes   00000000 (0)\n+22CE64 Local Header Offset   00130CE7 (1248487)\n+22CE68 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B1B2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22CE68: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B1D8 CENTRAL HEADER #1071  02014B50 (33639248)\n-22B1DC Created Zip Spec      14 (20) '2.0'\n-22B1DD Created OS            00 (0) 'MS-DOS'\n-22B1DE Extract Zip Spec      14 (20) '2.0'\n-22B1DF Extract OS            00 (0) 'MS-DOS'\n-22B1E0 General Purpose Flag  0808 (2056)\n+22CEA6 CENTRAL HEADER #1071  02014B50 (33639248)\n+22CEAA Created Zip Spec      14 (20) '2.0'\n+22CEAB Created OS            00 (0) 'MS-DOS'\n+22CEAC Extract Zip Spec      14 (20) '2.0'\n+22CEAD Extract OS            00 (0) 'MS-DOS'\n+22CEAE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B1E2 Compression Method    0008 (8) 'Deflated'\n-22B1E4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B1E8 CRC                   2A48966F (709400175)\n-22B1EC Compressed Size       00000263 (611)\n-22B1F0 Uncompressed Size     000004E9 (1257)\n-22B1F4 Filename Length       003B (59)\n-22B1F6 Extra Length          0000 (0)\n-22B1F8 Comment Length        0000 (0)\n-22B1FA Disk Start            0000 (0)\n-22B1FC Int File Attributes   0000 (0)\n+22CEB0 Compression Method    0008 (8) 'Deflated'\n+22CEB2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22CEB6 CRC                   00000000 (0)\n+22CEBA Compressed Size       00000002 (2)\n+22CEBE Uncompressed Size     00000000 (0)\n+22CEC2 Filename Length       0023 (35)\n+22CEC4 Extra Length          0000 (0)\n+22CEC6 Comment Length        0000 (0)\n+22CEC8 Disk Start            0000 (0)\n+22CECA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B1FE Ext File Attributes   00000000 (0)\n-22B202 Local Header Offset   00111DAF (1121711)\n-22B206 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22CECC Ext File Attributes   00000000 (0)\n+22CED0 Local Header Offset   00130D97 (1248663)\n+22CED4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B206: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22CED4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B241 CENTRAL HEADER #1072  02014B50 (33639248)\n-22B245 Created Zip Spec      14 (20) '2.0'\n-22B246 Created OS            00 (0) 'MS-DOS'\n-22B247 Extract Zip Spec      14 (20) '2.0'\n-22B248 Extract OS            00 (0) 'MS-DOS'\n-22B249 General Purpose Flag  0808 (2056)\n+22CEF7 CENTRAL HEADER #1072  02014B50 (33639248)\n+22CEFB Created Zip Spec      14 (20) '2.0'\n+22CEFC Created OS            00 (0) 'MS-DOS'\n+22CEFD Extract Zip Spec      14 (20) '2.0'\n+22CEFE Extract OS            00 (0) 'MS-DOS'\n+22CEFF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B24B Compression Method    0008 (8) 'Deflated'\n-22B24D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B251 CRC                   8AF1B8FB (2331097339)\n-22B255 Compressed Size       00000570 (1392)\n-22B259 Uncompressed Size     00000EF9 (3833)\n-22B25D Filename Length       003B (59)\n-22B25F Extra Length          0000 (0)\n-22B261 Comment Length        0000 (0)\n-22B263 Disk Start            0000 (0)\n-22B265 Int File Attributes   0000 (0)\n+22CF01 Compression Method    0008 (8) 'Deflated'\n+22CF03 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22CF07 CRC                   E49ADE4B (3835354699)\n+22CF0B Compressed Size       0000047F (1151)\n+22CF0F Uncompressed Size     00000C26 (3110)\n+22CF13 Filename Length       003E (62)\n+22CF15 Extra Length          0000 (0)\n+22CF17 Comment Length        0000 (0)\n+22CF19 Disk Start            0000 (0)\n+22CF1B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B267 Ext File Attributes   00000000 (0)\n-22B26B Local Header Offset   0011207B (1122427)\n-22B26F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22CF1D Ext File Attributes   00000000 (0)\n+22CF21 Local Header Offset   00130DEA (1248746)\n+22CF25 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B26F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22CF25: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B2AA CENTRAL HEADER #1073  02014B50 (33639248)\n-22B2AE Created Zip Spec      14 (20) '2.0'\n-22B2AF Created OS            00 (0) 'MS-DOS'\n-22B2B0 Extract Zip Spec      14 (20) '2.0'\n-22B2B1 Extract OS            00 (0) 'MS-DOS'\n-22B2B2 General Purpose Flag  0808 (2056)\n+22CF63 CENTRAL HEADER #1073  02014B50 (33639248)\n+22CF67 Created Zip Spec      14 (20) '2.0'\n+22CF68 Created OS            00 (0) 'MS-DOS'\n+22CF69 Extract Zip Spec      14 (20) '2.0'\n+22CF6A Extract OS            00 (0) 'MS-DOS'\n+22CF6B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B2B4 Compression Method    0008 (8) 'Deflated'\n-22B2B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B2BA CRC                   00000000 (0)\n-22B2BE Compressed Size       00000002 (2)\n-22B2C2 Uncompressed Size     00000000 (0)\n-22B2C6 Filename Length       0016 (22)\n-22B2C8 Extra Length          0000 (0)\n-22B2CA Comment Length        0000 (0)\n-22B2CC Disk Start            0000 (0)\n-22B2CE Int File Attributes   0000 (0)\n+22CF6D Compression Method    0008 (8) 'Deflated'\n+22CF6F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22CF73 CRC                   CAFD8C87 (3405614215)\n+22CF77 Compressed Size       0000024F (591)\n+22CF7B Uncompressed Size     00000411 (1041)\n+22CF7F Filename Length       0031 (49)\n+22CF81 Extra Length          0000 (0)\n+22CF83 Comment Length        0000 (0)\n+22CF85 Disk Start            0000 (0)\n+22CF87 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B2D0 Ext File Attributes   00000000 (0)\n-22B2D4 Local Header Offset   00112654 (1123924)\n-22B2D8 Filename              'XXXXXXXXXXXXXXXXXXXXXX'\n+22CF89 Ext File Attributes   00000000 (0)\n+22CF8D Local Header Offset   001312D5 (1250005)\n+22CF91 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B2D8: Filename 'XXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22CF91: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B2EE CENTRAL HEADER #1074  02014B50 (33639248)\n-22B2F2 Created Zip Spec      14 (20) '2.0'\n-22B2F3 Created OS            00 (0) 'MS-DOS'\n-22B2F4 Extract Zip Spec      14 (20) '2.0'\n-22B2F5 Extract OS            00 (0) 'MS-DOS'\n-22B2F6 General Purpose Flag  0808 (2056)\n+22CFC2 CENTRAL HEADER #1074  02014B50 (33639248)\n+22CFC6 Created Zip Spec      14 (20) '2.0'\n+22CFC7 Created OS            00 (0) 'MS-DOS'\n+22CFC8 Extract Zip Spec      14 (20) '2.0'\n+22CFC9 Extract OS            00 (0) 'MS-DOS'\n+22CFCA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B2F8 Compression Method    0008 (8) 'Deflated'\n-22B2FA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B2FE CRC                   00000000 (0)\n-22B302 Compressed Size       00000002 (2)\n-22B306 Uncompressed Size     00000000 (0)\n-22B30A Filename Length       001E (30)\n-22B30C Extra Length          0000 (0)\n-22B30E Comment Length        0000 (0)\n-22B310 Disk Start            0000 (0)\n-22B312 Int File Attributes   0000 (0)\n+22CFCC Compression Method    0008 (8) 'Deflated'\n+22CFCE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22CFD2 CRC                   3D20A35F (1025549151)\n+22CFD6 Compressed Size       000005C3 (1475)\n+22CFDA Uncompressed Size     0000127A (4730)\n+22CFDE Filename Length       003F (63)\n+22CFE0 Extra Length          0000 (0)\n+22CFE2 Comment Length        0000 (0)\n+22CFE4 Disk Start            0000 (0)\n+22CFE6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B314 Ext File Attributes   00000000 (0)\n-22B318 Local Header Offset   0011269A (1123994)\n-22B31C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22CFE8 Ext File Attributes   00000000 (0)\n+22CFEC Local Header Offset   00131583 (1250691)\n+22CFF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B31C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22CFF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B33A CENTRAL HEADER #1075  02014B50 (33639248)\n-22B33E Created Zip Spec      14 (20) '2.0'\n-22B33F Created OS            00 (0) 'MS-DOS'\n-22B340 Extract Zip Spec      14 (20) '2.0'\n-22B341 Extract OS            00 (0) 'MS-DOS'\n-22B342 General Purpose Flag  0808 (2056)\n+22D02F CENTRAL HEADER #1075  02014B50 (33639248)\n+22D033 Created Zip Spec      14 (20) '2.0'\n+22D034 Created OS            00 (0) 'MS-DOS'\n+22D035 Extract Zip Spec      14 (20) '2.0'\n+22D036 Extract OS            00 (0) 'MS-DOS'\n+22D037 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B344 Compression Method    0008 (8) 'Deflated'\n-22B346 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B34A CRC                   00900547 (9438535)\n-22B34E Compressed Size       00000219 (537)\n-22B352 Uncompressed Size     000003BF (959)\n-22B356 Filename Length       002E (46)\n-22B358 Extra Length          0000 (0)\n-22B35A Comment Length        0000 (0)\n-22B35C Disk Start            0000 (0)\n-22B35E Int File Attributes   0000 (0)\n+22D039 Compression Method    0008 (8) 'Deflated'\n+22D03B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D03F CRC                   74B3513E (1957908798)\n+22D043 Compressed Size       000003A8 (936)\n+22D047 Uncompressed Size     00000A15 (2581)\n+22D04B Filename Length       003C (60)\n+22D04D Extra Length          0000 (0)\n+22D04F Comment Length        0000 (0)\n+22D051 Disk Start            0000 (0)\n+22D053 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B360 Ext File Attributes   00000000 (0)\n-22B364 Local Header Offset   001126E8 (1124072)\n-22B368 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D055 Ext File Attributes   00000000 (0)\n+22D059 Local Header Offset   00131BB3 (1252275)\n+22D05D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B368: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D05D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B396 CENTRAL HEADER #1076  02014B50 (33639248)\n-22B39A Created Zip Spec      14 (20) '2.0'\n-22B39B Created OS            00 (0) 'MS-DOS'\n-22B39C Extract Zip Spec      14 (20) '2.0'\n-22B39D Extract OS            00 (0) 'MS-DOS'\n-22B39E General Purpose Flag  0808 (2056)\n+22D099 CENTRAL HEADER #1076  02014B50 (33639248)\n+22D09D Created Zip Spec      14 (20) '2.0'\n+22D09E Created OS            00 (0) 'MS-DOS'\n+22D09F Extract Zip Spec      14 (20) '2.0'\n+22D0A0 Extract OS            00 (0) 'MS-DOS'\n+22D0A1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B3A0 Compression Method    0008 (8) 'Deflated'\n-22B3A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B3A6 CRC                   C50B0632 (3305834034)\n-22B3AA Compressed Size       00000313 (787)\n-22B3AE Uncompressed Size     000007AE (1966)\n-22B3B2 Filename Length       0033 (51)\n-22B3B4 Extra Length          0000 (0)\n-22B3B6 Comment Length        0000 (0)\n-22B3B8 Disk Start            0000 (0)\n-22B3BA Int File Attributes   0000 (0)\n+22D0A3 Compression Method    0008 (8) 'Deflated'\n+22D0A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D0A9 CRC                   755A7982 (1968863618)\n+22D0AD Compressed Size       00000484 (1156)\n+22D0B1 Uncompressed Size     00000C91 (3217)\n+22D0B5 Filename Length       003F (63)\n+22D0B7 Extra Length          0000 (0)\n+22D0B9 Comment Length        0000 (0)\n+22D0BB Disk Start            0000 (0)\n+22D0BD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B3BC Ext File Attributes   00000000 (0)\n-22B3C0 Local Header Offset   0011295D (1124701)\n-22B3C4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D0BF Ext File Attributes   00000000 (0)\n+22D0C3 Local Header Offset   00131FC5 (1253317)\n+22D0C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B3C4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D0C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B3F7 CENTRAL HEADER #1077  02014B50 (33639248)\n-22B3FB Created Zip Spec      14 (20) '2.0'\n-22B3FC Created OS            00 (0) 'MS-DOS'\n-22B3FD Extract Zip Spec      14 (20) '2.0'\n-22B3FE Extract OS            00 (0) 'MS-DOS'\n-22B3FF General Purpose Flag  0808 (2056)\n+22D106 CENTRAL HEADER #1077  02014B50 (33639248)\n+22D10A Created Zip Spec      14 (20) '2.0'\n+22D10B Created OS            00 (0) 'MS-DOS'\n+22D10C Extract Zip Spec      14 (20) '2.0'\n+22D10D Extract OS            00 (0) 'MS-DOS'\n+22D10E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B401 Compression Method    0008 (8) 'Deflated'\n-22B403 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B407 CRC                   C514DA82 (3306478210)\n-22B40B Compressed Size       00000265 (613)\n-22B40F Uncompressed Size     00000465 (1125)\n-22B413 Filename Length       0031 (49)\n-22B415 Extra Length          0000 (0)\n-22B417 Comment Length        0000 (0)\n-22B419 Disk Start            0000 (0)\n-22B41B Int File Attributes   0000 (0)\n+22D110 Compression Method    0008 (8) 'Deflated'\n+22D112 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D116 CRC                   CB062A84 (3406178948)\n+22D11A Compressed Size       00000327 (807)\n+22D11E Uncompressed Size     000007E1 (2017)\n+22D122 Filename Length       003F (63)\n+22D124 Extra Length          0000 (0)\n+22D126 Comment Length        0000 (0)\n+22D128 Disk Start            0000 (0)\n+22D12A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B41D Ext File Attributes   00000000 (0)\n-22B421 Local Header Offset   00112CD1 (1125585)\n-22B425 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D12C Ext File Attributes   00000000 (0)\n+22D130 Local Header Offset   001324B6 (1254582)\n+22D134 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B425: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D134: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B456 CENTRAL HEADER #1078  02014B50 (33639248)\n-22B45A Created Zip Spec      14 (20) '2.0'\n-22B45B Created OS            00 (0) 'MS-DOS'\n-22B45C Extract Zip Spec      14 (20) '2.0'\n-22B45D Extract OS            00 (0) 'MS-DOS'\n-22B45E General Purpose Flag  0808 (2056)\n+22D173 CENTRAL HEADER #1078  02014B50 (33639248)\n+22D177 Created Zip Spec      14 (20) '2.0'\n+22D178 Created OS            00 (0) 'MS-DOS'\n+22D179 Extract Zip Spec      14 (20) '2.0'\n+22D17A Extract OS            00 (0) 'MS-DOS'\n+22D17B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B460 Compression Method    0008 (8) 'Deflated'\n-22B462 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B466 CRC                   3836550F (943084815)\n-22B46A Compressed Size       00000848 (2120)\n-22B46E Uncompressed Size     00001E84 (7812)\n-22B472 Filename Length       0025 (37)\n-22B474 Extra Length          0000 (0)\n-22B476 Comment Length        0000 (0)\n-22B478 Disk Start            0000 (0)\n-22B47A Int File Attributes   0000 (0)\n+22D17D Compression Method    0008 (8) 'Deflated'\n+22D17F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D183 CRC                   D7522A4D (3612486221)\n+22D187 Compressed Size       00000DD4 (3540)\n+22D18B Uncompressed Size     00003319 (13081)\n+22D18F Filename Length       0034 (52)\n+22D191 Extra Length          0000 (0)\n+22D193 Comment Length        0000 (0)\n+22D195 Disk Start            0000 (0)\n+22D197 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B47C Ext File Attributes   00000000 (0)\n-22B480 Local Header Offset   00112F95 (1126293)\n-22B484 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D199 Ext File Attributes   00000000 (0)\n+22D19D Local Header Offset   0013284A (1255498)\n+22D1A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B484: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D1A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B4A9 CENTRAL HEADER #1079  02014B50 (33639248)\n-22B4AD Created Zip Spec      14 (20) '2.0'\n-22B4AE Created OS            00 (0) 'MS-DOS'\n-22B4AF Extract Zip Spec      14 (20) '2.0'\n-22B4B0 Extract OS            00 (0) 'MS-DOS'\n-22B4B1 General Purpose Flag  0808 (2056)\n+22D1D5 CENTRAL HEADER #1079  02014B50 (33639248)\n+22D1D9 Created Zip Spec      14 (20) '2.0'\n+22D1DA Created OS            00 (0) 'MS-DOS'\n+22D1DB Extract Zip Spec      14 (20) '2.0'\n+22D1DC Extract OS            00 (0) 'MS-DOS'\n+22D1DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B4B3 Compression Method    0008 (8) 'Deflated'\n-22B4B5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B4B9 CRC                   16C36050 (381902928)\n-22B4BD Compressed Size       00000443 (1091)\n-22B4C1 Uncompressed Size     00000A30 (2608)\n-22B4C5 Filename Length       0026 (38)\n-22B4C7 Extra Length          0000 (0)\n-22B4C9 Comment Length        0000 (0)\n-22B4CB Disk Start            0000 (0)\n-22B4CD Int File Attributes   0000 (0)\n+22D1DF Compression Method    0008 (8) 'Deflated'\n+22D1E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D1E5 CRC                   6BBB41BD (1807434173)\n+22D1E9 Compressed Size       00000290 (656)\n+22D1ED Uncompressed Size     000004F5 (1269)\n+22D1F1 Filename Length       003A (58)\n+22D1F3 Extra Length          0000 (0)\n+22D1F5 Comment Length        0000 (0)\n+22D1F7 Disk Start            0000 (0)\n+22D1F9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B4CF Ext File Attributes   00000000 (0)\n-22B4D3 Local Header Offset   00113830 (1128496)\n-22B4D7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D1FB Ext File Attributes   00000000 (0)\n+22D1FF Local Header Offset   00133680 (1259136)\n+22D203 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B4D7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D203: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B4FD CENTRAL HEADER #1080  02014B50 (33639248)\n-22B501 Created Zip Spec      14 (20) '2.0'\n-22B502 Created OS            00 (0) 'MS-DOS'\n-22B503 Extract Zip Spec      14 (20) '2.0'\n-22B504 Extract OS            00 (0) 'MS-DOS'\n-22B505 General Purpose Flag  0808 (2056)\n+22D23D CENTRAL HEADER #1080  02014B50 (33639248)\n+22D241 Created Zip Spec      14 (20) '2.0'\n+22D242 Created OS            00 (0) 'MS-DOS'\n+22D243 Extract Zip Spec      14 (20) '2.0'\n+22D244 Extract OS            00 (0) 'MS-DOS'\n+22D245 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B507 Compression Method    0008 (8) 'Deflated'\n-22B509 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B50D CRC                   5C1C5F40 (1545363264)\n-22B511 Compressed Size       00000402 (1026)\n-22B515 Uncompressed Size     00000A28 (2600)\n-22B519 Filename Length       002A (42)\n-22B51B Extra Length          0000 (0)\n-22B51D Comment Length        0000 (0)\n-22B51F Disk Start            0000 (0)\n-22B521 Int File Attributes   0000 (0)\n+22D247 Compression Method    0008 (8) 'Deflated'\n+22D249 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D24D CRC                   086F2C9C (141503644)\n+22D251 Compressed Size       0000033C (828)\n+22D255 Uncompressed Size     000006D1 (1745)\n+22D259 Filename Length       0039 (57)\n+22D25B Extra Length          0000 (0)\n+22D25D Comment Length        0000 (0)\n+22D25F Disk Start            0000 (0)\n+22D261 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B523 Ext File Attributes   00000000 (0)\n-22B527 Local Header Offset   00113CC7 (1129671)\n-22B52B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D263 Ext File Attributes   00000000 (0)\n+22D267 Local Header Offset   00133978 (1259896)\n+22D26B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B52B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D26B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B555 CENTRAL HEADER #1081  02014B50 (33639248)\n-22B559 Created Zip Spec      14 (20) '2.0'\n-22B55A Created OS            00 (0) 'MS-DOS'\n-22B55B Extract Zip Spec      14 (20) '2.0'\n-22B55C Extract OS            00 (0) 'MS-DOS'\n-22B55D General Purpose Flag  0808 (2056)\n+22D2A4 CENTRAL HEADER #1081  02014B50 (33639248)\n+22D2A8 Created Zip Spec      14 (20) '2.0'\n+22D2A9 Created OS            00 (0) 'MS-DOS'\n+22D2AA Extract Zip Spec      14 (20) '2.0'\n+22D2AB Extract OS            00 (0) 'MS-DOS'\n+22D2AC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B55F Compression Method    0008 (8) 'Deflated'\n-22B561 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B565 CRC                   93FCD4E8 (2482820328)\n-22B569 Compressed Size       00000BD6 (3030)\n-22B56D Uncompressed Size     00003024 (12324)\n-22B571 Filename Length       0028 (40)\n-22B573 Extra Length          0000 (0)\n-22B575 Comment Length        0000 (0)\n-22B577 Disk Start            0000 (0)\n-22B579 Int File Attributes   0000 (0)\n+22D2AE Compression Method    0008 (8) 'Deflated'\n+22D2B0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D2B4 CRC                   A0E895BE (2699597246)\n+22D2B8 Compressed Size       00000649 (1609)\n+22D2BC Uncompressed Size     00001200 (4608)\n+22D2C0 Filename Length       0038 (56)\n+22D2C2 Extra Length          0000 (0)\n+22D2C4 Comment Length        0000 (0)\n+22D2C6 Disk Start            0000 (0)\n+22D2C8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B57B Ext File Attributes   00000000 (0)\n-22B57F Local Header Offset   00114121 (1130785)\n-22B583 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D2CA Ext File Attributes   00000000 (0)\n+22D2CE Local Header Offset   00133D1B (1260827)\n+22D2D2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B583: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D2D2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B5AB CENTRAL HEADER #1082  02014B50 (33639248)\n-22B5AF Created Zip Spec      14 (20) '2.0'\n-22B5B0 Created OS            00 (0) 'MS-DOS'\n-22B5B1 Extract Zip Spec      14 (20) '2.0'\n-22B5B2 Extract OS            00 (0) 'MS-DOS'\n-22B5B3 General Purpose Flag  0808 (2056)\n+22D30A CENTRAL HEADER #1082  02014B50 (33639248)\n+22D30E Created Zip Spec      14 (20) '2.0'\n+22D30F Created OS            00 (0) 'MS-DOS'\n+22D310 Extract Zip Spec      14 (20) '2.0'\n+22D311 Extract OS            00 (0) 'MS-DOS'\n+22D312 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B5B5 Compression Method    0008 (8) 'Deflated'\n-22B5B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B5BB CRC                   735FA0B6 (1935646902)\n-22B5BF Compressed Size       000003B0 (944)\n-22B5C3 Uncompressed Size     00000968 (2408)\n-22B5C7 Filename Length       002C (44)\n-22B5C9 Extra Length          0000 (0)\n-22B5CB Comment Length        0000 (0)\n-22B5CD Disk Start            0000 (0)\n-22B5CF Int File Attributes   0000 (0)\n+22D314 Compression Method    0008 (8) 'Deflated'\n+22D316 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D31A CRC                   939A92A5 (2476380837)\n+22D31E Compressed Size       0000040C (1036)\n+22D322 Uncompressed Size     000009EA (2538)\n+22D326 Filename Length       003A (58)\n+22D328 Extra Length          0000 (0)\n+22D32A Comment Length        0000 (0)\n+22D32C Disk Start            0000 (0)\n+22D32E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B5D1 Ext File Attributes   00000000 (0)\n-22B5D5 Local Header Offset   00114D4D (1133901)\n-22B5D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D330 Ext File Attributes   00000000 (0)\n+22D334 Local Header Offset   001343CA (1262538)\n+22D338 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B5D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D338: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B605 CENTRAL HEADER #1083  02014B50 (33639248)\n-22B609 Created Zip Spec      14 (20) '2.0'\n-22B60A Created OS            00 (0) 'MS-DOS'\n-22B60B Extract Zip Spec      14 (20) '2.0'\n-22B60C Extract OS            00 (0) 'MS-DOS'\n-22B60D General Purpose Flag  0808 (2056)\n+22D372 CENTRAL HEADER #1083  02014B50 (33639248)\n+22D376 Created Zip Spec      14 (20) '2.0'\n+22D377 Created OS            00 (0) 'MS-DOS'\n+22D378 Extract Zip Spec      14 (20) '2.0'\n+22D379 Extract OS            00 (0) 'MS-DOS'\n+22D37A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B60F Compression Method    0008 (8) 'Deflated'\n-22B611 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B615 CRC                   2AE2442E (719471662)\n-22B619 Compressed Size       00000471 (1137)\n-22B61D Uncompressed Size     00000A18 (2584)\n-22B621 Filename Length       0023 (35)\n-22B623 Extra Length          0000 (0)\n-22B625 Comment Length        0000 (0)\n-22B627 Disk Start            0000 (0)\n-22B629 Int File Attributes   0000 (0)\n+22D37C Compression Method    0008 (8) 'Deflated'\n+22D37E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D382 CRC                   4DDA4FAB (1306152875)\n+22D386 Compressed Size       0000031F (799)\n+22D38A Uncompressed Size     00000793 (1939)\n+22D38E Filename Length       0037 (55)\n+22D390 Extra Length          0000 (0)\n+22D392 Comment Length        0000 (0)\n+22D394 Disk Start            0000 (0)\n+22D396 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B62B Ext File Attributes   00000000 (0)\n-22B62F Local Header Offset   00115157 (1134935)\n-22B633 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D398 Ext File Attributes   00000000 (0)\n+22D39C Local Header Offset   0013483E (1263678)\n+22D3A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B633: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D3A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B656 CENTRAL HEADER #1084  02014B50 (33639248)\n-22B65A Created Zip Spec      14 (20) '2.0'\n-22B65B Created OS            00 (0) 'MS-DOS'\n-22B65C Extract Zip Spec      14 (20) '2.0'\n-22B65D Extract OS            00 (0) 'MS-DOS'\n-22B65E General Purpose Flag  0808 (2056)\n+22D3D7 CENTRAL HEADER #1084  02014B50 (33639248)\n+22D3DB Created Zip Spec      14 (20) '2.0'\n+22D3DC Created OS            00 (0) 'MS-DOS'\n+22D3DD Extract Zip Spec      14 (20) '2.0'\n+22D3DE Extract OS            00 (0) 'MS-DOS'\n+22D3DF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B660 Compression Method    0008 (8) 'Deflated'\n-22B662 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B666 CRC                   525AF459 (1381692505)\n-22B66A Compressed Size       00000299 (665)\n-22B66E Uncompressed Size     0000053F (1343)\n-22B672 Filename Length       0022 (34)\n-22B674 Extra Length          0000 (0)\n-22B676 Comment Length        0000 (0)\n-22B678 Disk Start            0000 (0)\n-22B67A Int File Attributes   0000 (0)\n+22D3E1 Compression Method    0008 (8) 'Deflated'\n+22D3E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D3E7 CRC                   00000000 (0)\n+22D3EB Compressed Size       00000002 (2)\n+22D3EF Uncompressed Size     00000000 (0)\n+22D3F3 Filename Length       002F (47)\n+22D3F5 Extra Length          0000 (0)\n+22D3F7 Comment Length        0000 (0)\n+22D3F9 Disk Start            0000 (0)\n+22D3FB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B67C Ext File Attributes   00000000 (0)\n-22B680 Local Header Offset   00115619 (1136153)\n-22B684 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D3FD Ext File Attributes   00000000 (0)\n+22D401 Local Header Offset   00134BC2 (1264578)\n+22D405 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B684: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D405: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B6A6 CENTRAL HEADER #1085  02014B50 (33639248)\n-22B6AA Created Zip Spec      14 (20) '2.0'\n-22B6AB Created OS            00 (0) 'MS-DOS'\n-22B6AC Extract Zip Spec      14 (20) '2.0'\n-22B6AD Extract OS            00 (0) 'MS-DOS'\n-22B6AE General Purpose Flag  0808 (2056)\n+22D434 CENTRAL HEADER #1085  02014B50 (33639248)\n+22D438 Created Zip Spec      14 (20) '2.0'\n+22D439 Created OS            00 (0) 'MS-DOS'\n+22D43A Extract Zip Spec      14 (20) '2.0'\n+22D43B Extract OS            00 (0) 'MS-DOS'\n+22D43C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B6B0 Compression Method    0008 (8) 'Deflated'\n-22B6B2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B6B6 CRC                   FC32E707 (4231194375)\n-22B6BA Compressed Size       0000029D (669)\n-22B6BE Uncompressed Size     000005AC (1452)\n-22B6C2 Filename Length       002A (42)\n-22B6C4 Extra Length          0000 (0)\n-22B6C6 Comment Length        0000 (0)\n-22B6C8 Disk Start            0000 (0)\n-22B6CA Int File Attributes   0000 (0)\n+22D43E Compression Method    0008 (8) 'Deflated'\n+22D440 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D444 CRC                   00000000 (0)\n+22D448 Compressed Size       00000002 (2)\n+22D44C Uncompressed Size     00000000 (0)\n+22D450 Filename Length       0037 (55)\n+22D452 Extra Length          0000 (0)\n+22D454 Comment Length        0000 (0)\n+22D456 Disk Start            0000 (0)\n+22D458 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B6CC Ext File Attributes   00000000 (0)\n-22B6D0 Local Header Offset   00115902 (1136898)\n-22B6D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D45A Ext File Attributes   00000000 (0)\n+22D45E Local Header Offset   00134C21 (1264673)\n+22D462 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B6D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D462: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B6FE CENTRAL HEADER #1086  02014B50 (33639248)\n-22B702 Created Zip Spec      14 (20) '2.0'\n-22B703 Created OS            00 (0) 'MS-DOS'\n-22B704 Extract Zip Spec      14 (20) '2.0'\n-22B705 Extract OS            00 (0) 'MS-DOS'\n-22B706 General Purpose Flag  0808 (2056)\n+22D499 CENTRAL HEADER #1086  02014B50 (33639248)\n+22D49D Created Zip Spec      14 (20) '2.0'\n+22D49E Created OS            00 (0) 'MS-DOS'\n+22D49F Extract Zip Spec      14 (20) '2.0'\n+22D4A0 Extract OS            00 (0) 'MS-DOS'\n+22D4A1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B708 Compression Method    0008 (8) 'Deflated'\n-22B70A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B70E CRC                   2EDA0DE9 (786042345)\n-22B712 Compressed Size       0000043E (1086)\n-22B716 Uncompressed Size     00000965 (2405)\n-22B71A Filename Length       0020 (32)\n-22B71C Extra Length          0000 (0)\n-22B71E Comment Length        0000 (0)\n-22B720 Disk Start            0000 (0)\n-22B722 Int File Attributes   0000 (0)\n+22D4A3 Compression Method    0008 (8) 'Deflated'\n+22D4A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D4A9 CRC                   E3F9F330 (3824808752)\n+22D4AD Compressed Size       00000397 (919)\n+22D4B1 Uncompressed Size     00000859 (2137)\n+22D4B5 Filename Length       005A (90)\n+22D4B7 Extra Length          0000 (0)\n+22D4B9 Comment Length        0000 (0)\n+22D4BB Disk Start            0000 (0)\n+22D4BD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B724 Ext File Attributes   00000000 (0)\n-22B728 Local Header Offset   00115BF7 (1137655)\n-22B72C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D4BF Ext File Attributes   00000000 (0)\n+22D4C3 Local Header Offset   00134C88 (1264776)\n+22D4C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B72C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D4C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B74C CENTRAL HEADER #1087  02014B50 (33639248)\n-22B750 Created Zip Spec      14 (20) '2.0'\n-22B751 Created OS            00 (0) 'MS-DOS'\n-22B752 Extract Zip Spec      14 (20) '2.0'\n-22B753 Extract OS            00 (0) 'MS-DOS'\n-22B754 General Purpose Flag  0808 (2056)\n+22D521 CENTRAL HEADER #1087  02014B50 (33639248)\n+22D525 Created Zip Spec      14 (20) '2.0'\n+22D526 Created OS            00 (0) 'MS-DOS'\n+22D527 Extract Zip Spec      14 (20) '2.0'\n+22D528 Extract OS            00 (0) 'MS-DOS'\n+22D529 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B756 Compression Method    0008 (8) 'Deflated'\n-22B758 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B75C CRC                   16263A19 (371603993)\n-22B760 Compressed Size       0000057C (1404)\n-22B764 Uncompressed Size     00000F7D (3965)\n-22B768 Filename Length       0027 (39)\n-22B76A Extra Length          0000 (0)\n-22B76C Comment Length        0000 (0)\n-22B76E Disk Start            0000 (0)\n-22B770 Int File Attributes   0000 (0)\n+22D52B Compression Method    0008 (8) 'Deflated'\n+22D52D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D531 CRC                   879AD63A (2275071546)\n+22D535 Compressed Size       00000331 (817)\n+22D539 Uncompressed Size     000006F0 (1776)\n+22D53D Filename Length       004F (79)\n+22D53F Extra Length          0000 (0)\n+22D541 Comment Length        0000 (0)\n+22D543 Disk Start            0000 (0)\n+22D545 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B772 Ext File Attributes   00000000 (0)\n-22B776 Local Header Offset   00116083 (1138819)\n-22B77A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D547 Ext File Attributes   00000000 (0)\n+22D54B Local Header Offset   001350A7 (1265831)\n+22D54F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B77A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D54F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B7A1 CENTRAL HEADER #1088  02014B50 (33639248)\n-22B7A5 Created Zip Spec      14 (20) '2.0'\n-22B7A6 Created OS            00 (0) 'MS-DOS'\n-22B7A7 Extract Zip Spec      14 (20) '2.0'\n-22B7A8 Extract OS            00 (0) 'MS-DOS'\n-22B7A9 General Purpose Flag  0808 (2056)\n+22D59E CENTRAL HEADER #1088  02014B50 (33639248)\n+22D5A2 Created Zip Spec      14 (20) '2.0'\n+22D5A3 Created OS            00 (0) 'MS-DOS'\n+22D5A4 Extract Zip Spec      14 (20) '2.0'\n+22D5A5 Extract OS            00 (0) 'MS-DOS'\n+22D5A6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B7AB Compression Method    0008 (8) 'Deflated'\n-22B7AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B7B1 CRC                   4A170C4C (1243024460)\n-22B7B5 Compressed Size       00000467 (1127)\n-22B7B9 Uncompressed Size     00000EA1 (3745)\n-22B7BD Filename Length       0024 (36)\n-22B7BF Extra Length          0000 (0)\n-22B7C1 Comment Length        0000 (0)\n-22B7C3 Disk Start            0000 (0)\n-22B7C5 Int File Attributes   0000 (0)\n+22D5A8 Compression Method    0008 (8) 'Deflated'\n+22D5AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D5AE CRC                   00000000 (0)\n+22D5B2 Compressed Size       00000002 (2)\n+22D5B6 Uncompressed Size     00000000 (0)\n+22D5BA Filename Length       002B (43)\n+22D5BC Extra Length          0000 (0)\n+22D5BE Comment Length        0000 (0)\n+22D5C0 Disk Start            0000 (0)\n+22D5C2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B7C7 Ext File Attributes   00000000 (0)\n-22B7CB Local Header Offset   00116654 (1140308)\n-22B7CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D5C4 Ext File Attributes   00000000 (0)\n+22D5C8 Local Header Offset   00135455 (1266773)\n+22D5CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B7CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D5CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B7F3 CENTRAL HEADER #1089  02014B50 (33639248)\n-22B7F7 Created Zip Spec      14 (20) '2.0'\n-22B7F8 Created OS            00 (0) 'MS-DOS'\n-22B7F9 Extract Zip Spec      14 (20) '2.0'\n-22B7FA Extract OS            00 (0) 'MS-DOS'\n-22B7FB General Purpose Flag  0808 (2056)\n+22D5F7 CENTRAL HEADER #1089  02014B50 (33639248)\n+22D5FB Created Zip Spec      14 (20) '2.0'\n+22D5FC Created OS            00 (0) 'MS-DOS'\n+22D5FD Extract Zip Spec      14 (20) '2.0'\n+22D5FE Extract OS            00 (0) 'MS-DOS'\n+22D5FF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B7FD Compression Method    0008 (8) 'Deflated'\n-22B7FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B803 CRC                   D1AB43CA (3517662154)\n-22B807 Compressed Size       00000200 (512)\n-22B80B Uncompressed Size     00000377 (887)\n-22B80F Filename Length       0024 (36)\n-22B811 Extra Length          0000 (0)\n-22B813 Comment Length        0000 (0)\n-22B815 Disk Start            0000 (0)\n-22B817 Int File Attributes   0000 (0)\n+22D601 Compression Method    0008 (8) 'Deflated'\n+22D603 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D607 CRC                   FC72AE7D (4235374205)\n+22D60B Compressed Size       0000028A (650)\n+22D60F Uncompressed Size     00000523 (1315)\n+22D613 Filename Length       003B (59)\n+22D615 Extra Length          0000 (0)\n+22D617 Comment Length        0000 (0)\n+22D619 Disk Start            0000 (0)\n+22D61B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B819 Ext File Attributes   00000000 (0)\n-22B81D Local Header Offset   00116B0D (1141517)\n-22B821 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D61D Ext File Attributes   00000000 (0)\n+22D621 Local Header Offset   001354B0 (1266864)\n+22D625 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B821: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D625: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B845 CENTRAL HEADER #1090  02014B50 (33639248)\n-22B849 Created Zip Spec      14 (20) '2.0'\n-22B84A Created OS            00 (0) 'MS-DOS'\n-22B84B Extract Zip Spec      14 (20) '2.0'\n-22B84C Extract OS            00 (0) 'MS-DOS'\n-22B84D General Purpose Flag  0808 (2056)\n+22D660 CENTRAL HEADER #1090  02014B50 (33639248)\n+22D664 Created Zip Spec      14 (20) '2.0'\n+22D665 Created OS            00 (0) 'MS-DOS'\n+22D666 Extract Zip Spec      14 (20) '2.0'\n+22D667 Extract OS            00 (0) 'MS-DOS'\n+22D668 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B84F Compression Method    0008 (8) 'Deflated'\n-22B851 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B855 CRC                   19B4DE27 (431283751)\n-22B859 Compressed Size       000002C5 (709)\n-22B85D Uncompressed Size     000005D1 (1489)\n-22B861 Filename Length       0021 (33)\n-22B863 Extra Length          0000 (0)\n-22B865 Comment Length        0000 (0)\n-22B867 Disk Start            0000 (0)\n-22B869 Int File Attributes   0000 (0)\n+22D66A Compression Method    0008 (8) 'Deflated'\n+22D66C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D670 CRC                   98665538 (2556843320)\n+22D674 Compressed Size       00000626 (1574)\n+22D678 Uncompressed Size     000015FB (5627)\n+22D67C Filename Length       003D (61)\n+22D67E Extra Length          0000 (0)\n+22D680 Comment Length        0000 (0)\n+22D682 Disk Start            0000 (0)\n+22D684 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B86B Ext File Attributes   00000000 (0)\n-22B86F Local Header Offset   00116D5F (1142111)\n-22B873 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D686 Ext File Attributes   00000000 (0)\n+22D68A Local Header Offset   001357A3 (1267619)\n+22D68E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B873: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D68E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B894 CENTRAL HEADER #1091  02014B50 (33639248)\n-22B898 Created Zip Spec      14 (20) '2.0'\n-22B899 Created OS            00 (0) 'MS-DOS'\n-22B89A Extract Zip Spec      14 (20) '2.0'\n-22B89B Extract OS            00 (0) 'MS-DOS'\n-22B89C General Purpose Flag  0808 (2056)\n+22D6CB CENTRAL HEADER #1091  02014B50 (33639248)\n+22D6CF Created Zip Spec      14 (20) '2.0'\n+22D6D0 Created OS            00 (0) 'MS-DOS'\n+22D6D1 Extract Zip Spec      14 (20) '2.0'\n+22D6D2 Extract OS            00 (0) 'MS-DOS'\n+22D6D3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B89E Compression Method    0008 (8) 'Deflated'\n-22B8A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B8A4 CRC                   D82F1E47 (3626966599)\n-22B8A8 Compressed Size       000002AB (683)\n-22B8AC Uncompressed Size     0000059A (1434)\n-22B8B0 Filename Length       0029 (41)\n-22B8B2 Extra Length          0000 (0)\n-22B8B4 Comment Length        0000 (0)\n-22B8B6 Disk Start            0000 (0)\n-22B8B8 Int File Attributes   0000 (0)\n+22D6D5 Compression Method    0008 (8) 'Deflated'\n+22D6D7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D6DB CRC                   00000000 (0)\n+22D6DF Compressed Size       00000002 (2)\n+22D6E3 Uncompressed Size     00000000 (0)\n+22D6E7 Filename Length       002F (47)\n+22D6E9 Extra Length          0000 (0)\n+22D6EB Comment Length        0000 (0)\n+22D6ED Disk Start            0000 (0)\n+22D6EF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B8BA Ext File Attributes   00000000 (0)\n-22B8BE Local Header Offset   00117073 (1142899)\n-22B8C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D6F1 Ext File Attributes   00000000 (0)\n+22D6F5 Local Header Offset   00135E34 (1269300)\n+22D6F9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B8C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D6F9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B8EB CENTRAL HEADER #1092  02014B50 (33639248)\n-22B8EF Created Zip Spec      14 (20) '2.0'\n-22B8F0 Created OS            00 (0) 'MS-DOS'\n-22B8F1 Extract Zip Spec      14 (20) '2.0'\n-22B8F2 Extract OS            00 (0) 'MS-DOS'\n-22B8F3 General Purpose Flag  0808 (2056)\n+22D728 CENTRAL HEADER #1092  02014B50 (33639248)\n+22D72C Created Zip Spec      14 (20) '2.0'\n+22D72D Created OS            00 (0) 'MS-DOS'\n+22D72E Extract Zip Spec      14 (20) '2.0'\n+22D72F Extract OS            00 (0) 'MS-DOS'\n+22D730 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B8F5 Compression Method    0008 (8) 'Deflated'\n-22B8F7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B8FB CRC                   2BFDB64A (738047562)\n-22B8FF Compressed Size       0000036F (879)\n-22B903 Uncompressed Size     000007D0 (2000)\n-22B907 Filename Length       002A (42)\n-22B909 Extra Length          0000 (0)\n-22B90B Comment Length        0000 (0)\n-22B90D Disk Start            0000 (0)\n-22B90F Int File Attributes   0000 (0)\n+22D732 Compression Method    0008 (8) 'Deflated'\n+22D734 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D738 CRC                   E36316D8 (3814921944)\n+22D73C Compressed Size       00000432 (1074)\n+22D740 Uncompressed Size     00000F30 (3888)\n+22D744 Filename Length       0036 (54)\n+22D746 Extra Length          0000 (0)\n+22D748 Comment Length        0000 (0)\n+22D74A Disk Start            0000 (0)\n+22D74C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B911 Ext File Attributes   00000000 (0)\n-22B915 Local Header Offset   00117375 (1143669)\n-22B919 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D74E Ext File Attributes   00000000 (0)\n+22D752 Local Header Offset   00135E93 (1269395)\n+22D756 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B919: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D756: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B943 CENTRAL HEADER #1093  02014B50 (33639248)\n-22B947 Created Zip Spec      14 (20) '2.0'\n-22B948 Created OS            00 (0) 'MS-DOS'\n-22B949 Extract Zip Spec      14 (20) '2.0'\n-22B94A Extract OS            00 (0) 'MS-DOS'\n-22B94B General Purpose Flag  0808 (2056)\n+22D78C CENTRAL HEADER #1093  02014B50 (33639248)\n+22D790 Created Zip Spec      14 (20) '2.0'\n+22D791 Created OS            00 (0) 'MS-DOS'\n+22D792 Extract Zip Spec      14 (20) '2.0'\n+22D793 Extract OS            00 (0) 'MS-DOS'\n+22D794 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B94D Compression Method    0008 (8) 'Deflated'\n-22B94F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B953 CRC                   CCB43BAA (3434363818)\n-22B957 Compressed Size       000005D0 (1488)\n-22B95B Uncompressed Size     00000DF0 (3568)\n-22B95F Filename Length       0022 (34)\n-22B961 Extra Length          0000 (0)\n-22B963 Comment Length        0000 (0)\n-22B965 Disk Start            0000 (0)\n-22B967 Int File Attributes   0000 (0)\n+22D796 Compression Method    0008 (8) 'Deflated'\n+22D798 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D79C CRC                   A1DBB70A (2715531018)\n+22D7A0 Compressed Size       00000043 (67)\n+22D7A4 Uncompressed Size     00000045 (69)\n+22D7A8 Filename Length       003D (61)\n+22D7AA Extra Length          0000 (0)\n+22D7AC Comment Length        0000 (0)\n+22D7AE Disk Start            0000 (0)\n+22D7B0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B969 Ext File Attributes   00000000 (0)\n-22B96D Local Header Offset   0011773C (1144636)\n-22B971 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D7B2 Ext File Attributes   00000000 (0)\n+22D7B6 Local Header Offset   00136329 (1270569)\n+22D7BA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B971: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D7BA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B993 CENTRAL HEADER #1094  02014B50 (33639248)\n-22B997 Created Zip Spec      14 (20) '2.0'\n-22B998 Created OS            00 (0) 'MS-DOS'\n-22B999 Extract Zip Spec      14 (20) '2.0'\n-22B99A Extract OS            00 (0) 'MS-DOS'\n-22B99B General Purpose Flag  0808 (2056)\n+22D7F7 CENTRAL HEADER #1094  02014B50 (33639248)\n+22D7FB Created Zip Spec      14 (20) '2.0'\n+22D7FC Created OS            00 (0) 'MS-DOS'\n+22D7FD Extract Zip Spec      14 (20) '2.0'\n+22D7FE Extract OS            00 (0) 'MS-DOS'\n+22D7FF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B99D Compression Method    0008 (8) 'Deflated'\n-22B99F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B9A3 CRC                   0D33E2B2 (221504178)\n-22B9A7 Compressed Size       000002CB (715)\n-22B9AB Uncompressed Size     000005CC (1484)\n-22B9AF Filename Length       0028 (40)\n-22B9B1 Extra Length          0000 (0)\n-22B9B3 Comment Length        0000 (0)\n-22B9B5 Disk Start            0000 (0)\n-22B9B7 Int File Attributes   0000 (0)\n+22D801 Compression Method    0008 (8) 'Deflated'\n+22D803 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D807 CRC                   00000000 (0)\n+22D80B Compressed Size       00000002 (2)\n+22D80F Uncompressed Size     00000000 (0)\n+22D813 Filename Length       0015 (21)\n+22D815 Extra Length          0000 (0)\n+22D817 Comment Length        0000 (0)\n+22D819 Disk Start            0000 (0)\n+22D81B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22B9B9 Ext File Attributes   00000000 (0)\n-22B9BD Local Header Offset   00117D5C (1146204)\n-22B9C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D81D Ext File Attributes   00000000 (0)\n+22D821 Local Header Offset   001363D7 (1270743)\n+22D825 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22B9C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D825: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22B9E9 CENTRAL HEADER #1095  02014B50 (33639248)\n-22B9ED Created Zip Spec      14 (20) '2.0'\n-22B9EE Created OS            00 (0) 'MS-DOS'\n-22B9EF Extract Zip Spec      14 (20) '2.0'\n-22B9F0 Extract OS            00 (0) 'MS-DOS'\n-22B9F1 General Purpose Flag  0808 (2056)\n+22D83A CENTRAL HEADER #1095  02014B50 (33639248)\n+22D83E Created Zip Spec      14 (20) '2.0'\n+22D83F Created OS            00 (0) 'MS-DOS'\n+22D840 Extract Zip Spec      14 (20) '2.0'\n+22D841 Extract OS            00 (0) 'MS-DOS'\n+22D842 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22B9F3 Compression Method    0008 (8) 'Deflated'\n-22B9F5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22B9F9 CRC                   319BF765 (832304997)\n-22B9FD Compressed Size       000002F9 (761)\n-22BA01 Uncompressed Size     000006DD (1757)\n-22BA05 Filename Length       0026 (38)\n-22BA07 Extra Length          0000 (0)\n-22BA09 Comment Length        0000 (0)\n-22BA0B Disk Start            0000 (0)\n-22BA0D Int File Attributes   0000 (0)\n+22D844 Compression Method    0008 (8) 'Deflated'\n+22D846 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D84A CRC                   00000000 (0)\n+22D84E Compressed Size       00000002 (2)\n+22D852 Uncompressed Size     00000000 (0)\n+22D856 Filename Length       0019 (25)\n+22D858 Extra Length          0000 (0)\n+22D85A Comment Length        0000 (0)\n+22D85C Disk Start            0000 (0)\n+22D85E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22BA0F Ext File Attributes   00000000 (0)\n-22BA13 Local Header Offset   0011807D (1147005)\n-22BA17 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D860 Ext File Attributes   00000000 (0)\n+22D864 Local Header Offset   0013641C (1270812)\n+22D868 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22BA17: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D868: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22BA3D CENTRAL HEADER #1096  02014B50 (33639248)\n-22BA41 Created Zip Spec      14 (20) '2.0'\n-22BA42 Created OS            00 (0) 'MS-DOS'\n-22BA43 Extract Zip Spec      14 (20) '2.0'\n-22BA44 Extract OS            00 (0) 'MS-DOS'\n-22BA45 General Purpose Flag  0808 (2056)\n+22D881 CENTRAL HEADER #1096  02014B50 (33639248)\n+22D885 Created Zip Spec      14 (20) '2.0'\n+22D886 Created OS            00 (0) 'MS-DOS'\n+22D887 Extract Zip Spec      14 (20) '2.0'\n+22D888 Extract OS            00 (0) 'MS-DOS'\n+22D889 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22BA47 Compression Method    0008 (8) 'Deflated'\n-22BA49 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22BA4D CRC                   7799251E (2006525214)\n-22BA51 Compressed Size       0000063F (1599)\n-22BA55 Uncompressed Size     00001541 (5441)\n-22BA59 Filename Length       0020 (32)\n-22BA5B Extra Length          0000 (0)\n-22BA5D Comment Length        0000 (0)\n-22BA5F Disk Start            0000 (0)\n-22BA61 Int File Attributes   0000 (0)\n+22D88B Compression Method    0008 (8) 'Deflated'\n+22D88D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D891 CRC                   00000000 (0)\n+22D895 Compressed Size       00000002 (2)\n+22D899 Uncompressed Size     00000000 (0)\n+22D89D Filename Length       0022 (34)\n+22D89F Extra Length          0000 (0)\n+22D8A1 Comment Length        0000 (0)\n+22D8A3 Disk Start            0000 (0)\n+22D8A5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22BA63 Ext File Attributes   00000000 (0)\n-22BA67 Local Header Offset   001183CA (1147850)\n-22BA6B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D8A7 Ext File Attributes   00000000 (0)\n+22D8AB Local Header Offset   00136465 (1270885)\n+22D8AF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22BA6B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D8AF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22BA8B CENTRAL HEADER #1097  02014B50 (33639248)\n-22BA8F Created Zip Spec      14 (20) '2.0'\n-22BA90 Created OS            00 (0) 'MS-DOS'\n-22BA91 Extract Zip Spec      14 (20) '2.0'\n-22BA92 Extract OS            00 (0) 'MS-DOS'\n-22BA93 General Purpose Flag  0808 (2056)\n+22D8D1 CENTRAL HEADER #1097  02014B50 (33639248)\n+22D8D5 Created Zip Spec      14 (20) '2.0'\n+22D8D6 Created OS            00 (0) 'MS-DOS'\n+22D8D7 Extract Zip Spec      14 (20) '2.0'\n+22D8D8 Extract OS            00 (0) 'MS-DOS'\n+22D8D9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22BA95 Compression Method    0008 (8) 'Deflated'\n-22BA97 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22BA9B CRC                   3BFD1345 (1006441285)\n-22BA9F Compressed Size       0000027C (636)\n-22BAA3 Uncompressed Size     0000059E (1438)\n-22BAA7 Filename Length       0026 (38)\n-22BAA9 Extra Length          0000 (0)\n-22BAAB Comment Length        0000 (0)\n-22BAAD Disk Start            0000 (0)\n-22BAAF Int File Attributes   0000 (0)\n+22D8DB Compression Method    0008 (8) 'Deflated'\n+22D8DD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D8E1 CRC                   00000000 (0)\n+22D8E5 Compressed Size       00000002 (2)\n+22D8E9 Uncompressed Size     00000000 (0)\n+22D8ED Filename Length       0029 (41)\n+22D8EF Extra Length          0000 (0)\n+22D8F1 Comment Length        0000 (0)\n+22D8F3 Disk Start            0000 (0)\n+22D8F5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22BAB1 Ext File Attributes   00000000 (0)\n-22BAB5 Local Header Offset   00118A57 (1149527)\n-22BAB9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D8F7 Ext File Attributes   00000000 (0)\n+22D8FB Local Header Offset   001364B7 (1270967)\n+22D8FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22BAB9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D8FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22BADF CENTRAL HEADER #1098  02014B50 (33639248)\n-22BAE3 Created Zip Spec      14 (20) '2.0'\n-22BAE4 Created OS            00 (0) 'MS-DOS'\n-22BAE5 Extract Zip Spec      14 (20) '2.0'\n-22BAE6 Extract OS            00 (0) 'MS-DOS'\n-22BAE7 General Purpose Flag  0808 (2056)\n+22D928 CENTRAL HEADER #1098  02014B50 (33639248)\n+22D92C Created Zip Spec      14 (20) '2.0'\n+22D92D Created OS            00 (0) 'MS-DOS'\n+22D92E Extract Zip Spec      14 (20) '2.0'\n+22D92F Extract OS            00 (0) 'MS-DOS'\n+22D930 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22BAE9 Compression Method    0008 (8) 'Deflated'\n-22BAEB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22BAEF CRC                   8B2B5BC6 (2334874566)\n-22BAF3 Compressed Size       0000111C (4380)\n-22BAF7 Uncompressed Size     00005703 (22275)\n-22BAFB Filename Length       0024 (36)\n-22BAFD Extra Length          0000 (0)\n-22BAFF Comment Length        0000 (0)\n-22BB01 Disk Start            0000 (0)\n-22BB03 Int File Attributes   0000 (0)\n+22D932 Compression Method    0008 (8) 'Deflated'\n+22D934 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D938 CRC                   E5707DAD (3849354669)\n+22D93C Compressed Size       000008E0 (2272)\n+22D940 Uncompressed Size     00001EB3 (7859)\n+22D944 Filename Length       003C (60)\n+22D946 Extra Length          0000 (0)\n+22D948 Comment Length        0000 (0)\n+22D94A Disk Start            0000 (0)\n+22D94C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22BB05 Ext File Attributes   00000000 (0)\n-22BB09 Local Header Offset   00118D27 (1150247)\n-22BB0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D94E Ext File Attributes   00000000 (0)\n+22D952 Local Header Offset   00136510 (1271056)\n+22D956 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22BB0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D956: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22BB31 CENTRAL HEADER #1099  02014B50 (33639248)\n-22BB35 Created Zip Spec      14 (20) '2.0'\n-22BB36 Created OS            00 (0) 'MS-DOS'\n-22BB37 Extract Zip Spec      14 (20) '2.0'\n-22BB38 Extract OS            00 (0) 'MS-DOS'\n-22BB39 General Purpose Flag  0808 (2056)\n+22D992 CENTRAL HEADER #1099  02014B50 (33639248)\n+22D996 Created Zip Spec      14 (20) '2.0'\n+22D997 Created OS            00 (0) 'MS-DOS'\n+22D998 Extract Zip Spec      14 (20) '2.0'\n+22D999 Extract OS            00 (0) 'MS-DOS'\n+22D99A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22BB3B Compression Method    0008 (8) 'Deflated'\n-22BB3D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22BB41 CRC                   D96AD9D5 (3647658453)\n-22BB45 Compressed Size       00000478 (1144)\n-22BB49 Uncompressed Size     00000D23 (3363)\n-22BB4D Filename Length       0026 (38)\n-22BB4F Extra Length          0000 (0)\n-22BB51 Comment Length        0000 (0)\n-22BB53 Disk Start            0000 (0)\n-22BB55 Int File Attributes   0000 (0)\n+22D99C Compression Method    0008 (8) 'Deflated'\n+22D99E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22D9A2 CRC                   6680C3C2 (1719714754)\n+22D9A6 Compressed Size       00000600 (1536)\n+22D9AA Uncompressed Size     00001240 (4672)\n+22D9AE Filename Length       0044 (68)\n+22D9B0 Extra Length          0000 (0)\n+22D9B2 Comment Length        0000 (0)\n+22D9B4 Disk Start            0000 (0)\n+22D9B6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22BB57 Ext File Attributes   00000000 (0)\n-22BB5B Local Header Offset   00119E95 (1154709)\n-22BB5F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22D9B8 Ext File Attributes   00000000 (0)\n+22D9BC Local Header Offset   00136E5A (1273434)\n+22D9C0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22BB5F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22D9C0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22BB85 CENTRAL HEADER #1100  02014B50 (33639248)\n-22BB89 Created Zip Spec      14 (20) '2.0'\n-22BB8A Created OS            00 (0) 'MS-DOS'\n-22BB8B Extract Zip Spec      14 (20) '2.0'\n-22BB8C Extract OS            00 (0) 'MS-DOS'\n-22BB8D General Purpose Flag  0808 (2056)\n+22DA04 CENTRAL HEADER #1100  02014B50 (33639248)\n+22DA08 Created Zip Spec      14 (20) '2.0'\n+22DA09 Created OS            00 (0) 'MS-DOS'\n+22DA0A Extract Zip Spec      14 (20) '2.0'\n+22DA0B Extract OS            00 (0) 'MS-DOS'\n+22DA0C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22BB8F Compression Method    0008 (8) 'Deflated'\n-22BB91 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22BB95 CRC                   7D1A8DDF (2098892255)\n-22BB99 Compressed Size       00000AF0 (2800)\n-22BB9D Uncompressed Size     00003A8A (14986)\n-22BBA1 Filename Length       0027 (39)\n-22BBA3 Extra Length          0000 (0)\n-22BBA5 Comment Length        0000 (0)\n-22BBA7 Disk Start            0000 (0)\n-22BBA9 Int File Attributes   0000 (0)\n+22DA0E Compression Method    0008 (8) 'Deflated'\n+22DA10 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22DA14 CRC                   00000000 (0)\n+22DA18 Compressed Size       00000002 (2)\n+22DA1C Uncompressed Size     00000000 (0)\n+22DA20 Filename Length       002E (46)\n+22DA22 Extra Length          0000 (0)\n+22DA24 Comment Length        0000 (0)\n+22DA26 Disk Start            0000 (0)\n+22DA28 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22BBAB Ext File Attributes   00000000 (0)\n-22BBAF Local Header Offset   0011A361 (1155937)\n-22BBB3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22DA2A Ext File Attributes   00000000 (0)\n+22DA2E Local Header Offset   001374CC (1275084)\n+22DA32 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22BBB3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22DA32: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22BBDA CENTRAL HEADER #1101  02014B50 (33639248)\n-22BBDE Created Zip Spec      14 (20) '2.0'\n-22BBDF Created OS            00 (0) 'MS-DOS'\n-22BBE0 Extract Zip Spec      14 (20) '2.0'\n-22BBE1 Extract OS            00 (0) 'MS-DOS'\n-22BBE2 General Purpose Flag  0808 (2056)\n+22DA60 CENTRAL HEADER #1101  02014B50 (33639248)\n+22DA64 Created Zip Spec      14 (20) '2.0'\n+22DA65 Created OS            00 (0) 'MS-DOS'\n+22DA66 Extract Zip Spec      14 (20) '2.0'\n+22DA67 Extract OS            00 (0) 'MS-DOS'\n+22DA68 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22BBE4 Compression Method    0008 (8) 'Deflated'\n-22BBE6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22BBEA CRC                   B577D739 (3044529977)\n-22BBEE Compressed Size       00000742 (1858)\n-22BBF2 Uncompressed Size     0000218E (8590)\n-22BBF6 Filename Length       0023 (35)\n-22BBF8 Extra Length          0000 (0)\n-22BBFA Comment Length        0000 (0)\n-22BBFC Disk Start            0000 (0)\n-22BBFE Int File Attributes   0000 (0)\n+22DA6A Compression Method    0008 (8) 'Deflated'\n+22DA6C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22DA70 CRC                   E989D516 (3918124310)\n+22DA74 Compressed Size       000003F1 (1009)\n+22DA78 Uncompressed Size     00000ADD (2781)\n+22DA7C Filename Length       0035 (53)\n+22DA7E Extra Length          0000 (0)\n+22DA80 Comment Length        0000 (0)\n+22DA82 Disk Start            0000 (0)\n+22DA84 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22BC00 Ext File Attributes   00000000 (0)\n-22BC04 Local Header Offset   0011AEA6 (1158822)\n-22BC08 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22DA86 Ext File Attributes   00000000 (0)\n+22DA8A Local Header Offset   0013752A (1275178)\n+22DA8E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22BC08: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22DA8E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22BC2B CENTRAL HEADER #1102  02014B50 (33639248)\n-22BC2F Created Zip Spec      14 (20) '2.0'\n-22BC30 Created OS            00 (0) 'MS-DOS'\n-22BC31 Extract Zip Spec      14 (20) '2.0'\n-22BC32 Extract OS            00 (0) 'MS-DOS'\n-22BC33 General Purpose Flag  0808 (2056)\n+22DAC3 CENTRAL HEADER #1102  02014B50 (33639248)\n+22DAC7 Created Zip Spec      14 (20) '2.0'\n+22DAC8 Created OS            00 (0) 'MS-DOS'\n+22DAC9 Extract Zip Spec      14 (20) '2.0'\n+22DACA Extract OS            00 (0) 'MS-DOS'\n+22DACB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22BC35 Compression Method    0008 (8) 'Deflated'\n-22BC37 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22BC3B CRC                   1894D2EA (412406506)\n-22BC3F Compressed Size       0000040F (1039)\n-22BC43 Uncompressed Size     00000B60 (2912)\n-22BC47 Filename Length       002A (42)\n-22BC49 Extra Length          0000 (0)\n-22BC4B Comment Length        0000 (0)\n-22BC4D Disk Start            0000 (0)\n-22BC4F Int File Attributes   0000 (0)\n+22DACD Compression Method    0008 (8) 'Deflated'\n+22DACF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22DAD3 CRC                   286EAB64 (678341476)\n+22DAD7 Compressed Size       00000042 (66)\n+22DADB Uncompressed Size     00000044 (68)\n+22DADF Filename Length       003C (60)\n+22DAE1 Extra Length          0000 (0)\n+22DAE3 Comment Length        0000 (0)\n+22DAE5 Disk Start            0000 (0)\n+22DAE7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22BC51 Ext File Attributes   00000000 (0)\n-22BC55 Local Header Offset   0011B639 (1160761)\n-22BC59 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22DAE9 Ext File Attributes   00000000 (0)\n+22DAED Local Header Offset   0013797E (1276286)\n+22DAF1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22BC59: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22DAF1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22BC83 CENTRAL HEADER #1103  02014B50 (33639248)\n-22BC87 Created Zip Spec      14 (20) '2.0'\n-22BC88 Created OS            00 (0) 'MS-DOS'\n-22BC89 Extract Zip Spec      14 (20) '2.0'\n-22BC8A Extract OS            00 (0) 'MS-DOS'\n-22BC8B General Purpose Flag  0808 (2056)\n+22DB2D CENTRAL HEADER #1103  02014B50 (33639248)\n+22DB31 Created Zip Spec      14 (20) '2.0'\n+22DB32 Created OS            00 (0) 'MS-DOS'\n+22DB33 Extract Zip Spec      14 (20) '2.0'\n+22DB34 Extract OS            00 (0) 'MS-DOS'\n+22DB35 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22BC8D Compression Method    0008 (8) 'Deflated'\n-22BC8F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22BC93 CRC                   4977D9A5 (1232591269)\n-22BC97 Compressed Size       0000028D (653)\n-22BC9B Uncompressed Size     000004A5 (1189)\n-22BC9F Filename Length       0026 (38)\n-22BCA1 Extra Length          0000 (0)\n-22BCA3 Comment Length        0000 (0)\n-22BCA5 Disk Start            0000 (0)\n-22BCA7 Int File Attributes   0000 (0)\n+22DB37 Compression Method    0008 (8) 'Deflated'\n+22DB39 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22DB3D CRC                   00000000 (0)\n+22DB41 Compressed Size       00000002 (2)\n+22DB45 Uncompressed Size     00000000 (0)\n+22DB49 Filename Length       0023 (35)\n+22DB4B Extra Length          0000 (0)\n+22DB4D Comment Length        0000 (0)\n+22DB4F Disk Start            0000 (0)\n+22DB51 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22BCA9 Ext File Attributes   00000000 (0)\n-22BCAD Local Header Offset   0011BAA0 (1161888)\n-22BCB1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22DB53 Ext File Attributes   00000000 (0)\n+22DB57 Local Header Offset   00137A2A (1276458)\n+22DB5B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22BCB1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22DB5B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22BCD7 CENTRAL HEADER #1104  02014B50 (33639248)\n-22BCDB Created Zip Spec      14 (20) '2.0'\n-22BCDC Created OS            00 (0) 'MS-DOS'\n-22BCDD Extract Zip Spec      14 (20) '2.0'\n-22BCDE Extract OS            00 (0) 'MS-DOS'\n-22BCDF General Purpose Flag  0808 (2056)\n+22DB7E CENTRAL HEADER #1104  02014B50 (33639248)\n+22DB82 Created Zip Spec      14 (20) '2.0'\n+22DB83 Created OS            00 (0) 'MS-DOS'\n+22DB84 Extract Zip Spec      14 (20) '2.0'\n+22DB85 Extract OS            00 (0) 'MS-DOS'\n+22DB86 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22BCE1 Compression Method    0008 (8) 'Deflated'\n-22BCE3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22BCE7 CRC                   00000000 (0)\n-22BCEB Compressed Size       00000002 (2)\n-22BCEF Uncompressed Size     00000000 (0)\n-22BCF3 Filename Length       001C (28)\n-22BCF5 Extra Length          0000 (0)\n-22BCF7 Comment Length        0000 (0)\n-22BCF9 Disk Start            0000 (0)\n-22BCFB Int File Attributes   0000 (0)\n+22DB88 Compression Method    0008 (8) 'Deflated'\n+22DB8A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22DB8E CRC                   01526E5B (22179419)\n+22DB92 Compressed Size       00000413 (1043)\n+22DB96 Uncompressed Size     00000AA2 (2722)\n+22DB9A Filename Length       003C (60)\n+22DB9C Extra Length          0000 (0)\n+22DB9E Comment Length        0000 (0)\n+22DBA0 Disk Start            0000 (0)\n+22DBA2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22BCFD Ext File Attributes   00000000 (0)\n-22BD01 Local Header Offset   0011BD81 (1162625)\n-22BD05 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22DBA4 Ext File Attributes   00000000 (0)\n+22DBA8 Local Header Offset   00137A7D (1276541)\n+22DBAC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22BD05: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22DBAC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22BD21 CENTRAL HEADER #1105  02014B50 (33639248)\n-22BD25 Created Zip Spec      14 (20) '2.0'\n-22BD26 Created OS            00 (0) 'MS-DOS'\n-22BD27 Extract Zip Spec      14 (20) '2.0'\n-22BD28 Extract OS            00 (0) 'MS-DOS'\n-22BD29 General Purpose Flag  0808 (2056)\n+22DBE8 CENTRAL HEADER #1105  02014B50 (33639248)\n+22DBEC Created Zip Spec      14 (20) '2.0'\n+22DBED Created OS            00 (0) 'MS-DOS'\n+22DBEE Extract Zip Spec      14 (20) '2.0'\n+22DBEF Extract OS            00 (0) 'MS-DOS'\n+22DBF0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22BD2B Compression Method    0008 (8) 'Deflated'\n-22BD2D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22BD31 CRC                   300456E0 (805590752)\n-22BD35 Compressed Size       0000098D (2445)\n-22BD39 Uncompressed Size     00001D9B (7579)\n-22BD3D Filename Length       0030 (48)\n-22BD3F Extra Length          0000 (0)\n-22BD41 Comment Length        0000 (0)\n-22BD43 Disk Start            0000 (0)\n-22BD45 Int File Attributes   0000 (0)\n+22DBF2 Compression Method    0008 (8) 'Deflated'\n+22DBF4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22DBF8 CRC                   D457458D (3562489229)\n+22DBFC Compressed Size       000001FF (511)\n+22DC00 Uncompressed Size     00000381 (897)\n+22DC04 Filename Length       0032 (50)\n+22DC06 Extra Length          0000 (0)\n+22DC08 Comment Length        0000 (0)\n+22DC0A Disk Start            0000 (0)\n+22DC0C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22BD47 Ext File Attributes   00000000 (0)\n-22BD4B Local Header Offset   0011BDCD (1162701)\n-22BD4F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22DC0E Ext File Attributes   00000000 (0)\n+22DC12 Local Header Offset   00137EFA (1277690)\n+22DC16 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22BD4F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22DC16: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22BD7F CENTRAL HEADER #1106  02014B50 (33639248)\n-22BD83 Created Zip Spec      14 (20) '2.0'\n-22BD84 Created OS            00 (0) 'MS-DOS'\n-22BD85 Extract Zip Spec      14 (20) '2.0'\n-22BD86 Extract OS            00 (0) 'MS-DOS'\n-22BD87 General Purpose Flag  0808 (2056)\n+22DC48 CENTRAL HEADER #1106  02014B50 (33639248)\n+22DC4C Created Zip Spec      14 (20) '2.0'\n+22DC4D Created OS            00 (0) 'MS-DOS'\n+22DC4E Extract Zip Spec      14 (20) '2.0'\n+22DC4F Extract OS            00 (0) 'MS-DOS'\n+22DC50 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22BD89 Compression Method    0008 (8) 'Deflated'\n-22BD8B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22BD8F CRC                   B52DE397 (3039683479)\n-22BD93 Compressed Size       000006FD (1789)\n-22BD97 Uncompressed Size     00001623 (5667)\n-22BD9B Filename Length       0032 (50)\n-22BD9D Extra Length          0000 (0)\n-22BD9F Comment Length        0000 (0)\n-22BDA1 Disk Start            0000 (0)\n-22BDA3 Int File Attributes   0000 (0)\n+22DC52 Compression Method    0008 (8) 'Deflated'\n+22DC54 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22DC58 CRC                   73B49906 (1941215494)\n+22DC5C Compressed Size       0000036F (879)\n+22DC60 Uncompressed Size     000007C7 (1991)\n+22DC64 Filename Length       0035 (53)\n+22DC66 Extra Length          0000 (0)\n+22DC68 Comment Length        0000 (0)\n+22DC6A Disk Start            0000 (0)\n+22DC6C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22BDA5 Ext File Attributes   00000000 (0)\n-22BDA9 Local Header Offset   0011C7B8 (1165240)\n-22BDAD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22DC6E Ext File Attributes   00000000 (0)\n+22DC72 Local Header Offset   00138159 (1278297)\n+22DC76 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22BDAD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22DC76: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22BDDF CENTRAL HEADER #1107  02014B50 (33639248)\n-22BDE3 Created Zip Spec      14 (20) '2.0'\n-22BDE4 Created OS            00 (0) 'MS-DOS'\n-22BDE5 Extract Zip Spec      14 (20) '2.0'\n-22BDE6 Extract OS            00 (0) 'MS-DOS'\n-22BDE7 General Purpose Flag  0808 (2056)\n+22DCAB CENTRAL HEADER #1107  02014B50 (33639248)\n+22DCAF Created Zip Spec      14 (20) '2.0'\n+22DCB0 Created OS            00 (0) 'MS-DOS'\n+22DCB1 Extract Zip Spec      14 (20) '2.0'\n+22DCB2 Extract OS            00 (0) 'MS-DOS'\n+22DCB3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22BDE9 Compression Method    0008 (8) 'Deflated'\n-22BDEB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22BDEF CRC                   851F3F00 (2233417472)\n-22BDF3 Compressed Size       00000323 (803)\n-22BDF7 Uncompressed Size     00000723 (1827)\n-22BDFB Filename Length       0032 (50)\n-22BDFD Extra Length          0000 (0)\n-22BDFF Comment Length        0000 (0)\n-22BE01 Disk Start            0000 (0)\n-22BE03 Int File Attributes   0000 (0)\n+22DCB5 Compression Method    0008 (8) 'Deflated'\n+22DCB7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22DCBB CRC                   7E6F88F1 (2121238769)\n+22DCBF Compressed Size       000005B1 (1457)\n+22DCC3 Uncompressed Size     0000105B (4187)\n+22DCC7 Filename Length       0033 (51)\n+22DCC9 Extra Length          0000 (0)\n+22DCCB Comment Length        0000 (0)\n+22DCCD Disk Start            0000 (0)\n+22DCCF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22BE05 Ext File Attributes   00000000 (0)\n-22BE09 Local Header Offset   0011CF15 (1167125)\n-22BE0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22DCD1 Ext File Attributes   00000000 (0)\n+22DCD5 Local Header Offset   0013852B (1279275)\n+22DCD9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22BE0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22DCD9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22BE3F CENTRAL HEADER #1108  02014B50 (33639248)\n-22BE43 Created Zip Spec      14 (20) '2.0'\n-22BE44 Created OS            00 (0) 'MS-DOS'\n-22BE45 Extract Zip Spec      14 (20) '2.0'\n-22BE46 Extract OS            00 (0) 'MS-DOS'\n-22BE47 General Purpose Flag  0808 (2056)\n+22DD0C CENTRAL HEADER #1108  02014B50 (33639248)\n+22DD10 Created Zip Spec      14 (20) '2.0'\n+22DD11 Created OS            00 (0) 'MS-DOS'\n+22DD12 Extract Zip Spec      14 (20) '2.0'\n+22DD13 Extract OS            00 (0) 'MS-DOS'\n+22DD14 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22BE49 Compression Method    0008 (8) 'Deflated'\n-22BE4B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22BE4F CRC                   86FDBE3E (2264776254)\n-22BE53 Compressed Size       0000059A (1434)\n-22BE57 Uncompressed Size     00000FB9 (4025)\n-22BE5B Filename Length       0031 (49)\n-22BE5D Extra Length          0000 (0)\n-22BE5F Comment Length        0000 (0)\n-22BE61 Disk Start            0000 (0)\n-22BE63 Int File Attributes   0000 (0)\n+22DD16 Compression Method    0008 (8) 'Deflated'\n+22DD18 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22DD1C CRC                   65B11F2E (1706106670)\n+22DD20 Compressed Size       000009A9 (2473)\n+22DD24 Uncompressed Size     000029BC (10684)\n+22DD28 Filename Length       0038 (56)\n+22DD2A Extra Length          0000 (0)\n+22DD2C Comment Length        0000 (0)\n+22DD2E Disk Start            0000 (0)\n+22DD30 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22BE65 Ext File Attributes   00000000 (0)\n-22BE69 Local Header Offset   0011D298 (1168024)\n-22BE6D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22DD32 Ext File Attributes   00000000 (0)\n+22DD36 Local Header Offset   00138B3D (1280829)\n+22DD3A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22BE6D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22DD3A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22BE9E CENTRAL HEADER #1109  02014B50 (33639248)\n-22BEA2 Created Zip Spec      14 (20) '2.0'\n-22BEA3 Created OS            00 (0) 'MS-DOS'\n-22BEA4 Extract Zip Spec      14 (20) '2.0'\n-22BEA5 Extract OS            00 (0) 'MS-DOS'\n-22BEA6 General Purpose Flag  0808 (2056)\n+22DD72 CENTRAL HEADER #1109  02014B50 (33639248)\n+22DD76 Created Zip Spec      14 (20) '2.0'\n+22DD77 Created OS            00 (0) 'MS-DOS'\n+22DD78 Extract Zip Spec      14 (20) '2.0'\n+22DD79 Extract OS            00 (0) 'MS-DOS'\n+22DD7A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22BEA8 Compression Method    0008 (8) 'Deflated'\n-22BEAA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22BEAE CRC                   A0F5CB6A (2700462954)\n-22BEB2 Compressed Size       000004F5 (1269)\n-22BEB6 Uncompressed Size     00000D48 (3400)\n-22BEBA Filename Length       0036 (54)\n-22BEBC Extra Length          0000 (0)\n-22BEBE Comment Length        0000 (0)\n-22BEC0 Disk Start            0000 (0)\n-22BEC2 Int File Attributes   0000 (0)\n+22DD7C Compression Method    0008 (8) 'Deflated'\n+22DD7E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22DD82 CRC                   ECC477BE (3972298686)\n+22DD86 Compressed Size       00000A0E (2574)\n+22DD8A Uncompressed Size     000021FB (8699)\n+22DD8E Filename Length       0034 (52)\n+22DD90 Extra Length          0000 (0)\n+22DD92 Comment Length        0000 (0)\n+22DD94 Disk Start            0000 (0)\n+22DD96 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22BEC4 Ext File Attributes   00000000 (0)\n-22BEC8 Local Header Offset   0011D891 (1169553)\n-22BECC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22DD98 Ext File Attributes   00000000 (0)\n+22DD9C Local Header Offset   0013954C (1283404)\n+22DDA0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22BECC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22DDA0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22BF02 CENTRAL HEADER #1110  02014B50 (33639248)\n-22BF06 Created Zip Spec      14 (20) '2.0'\n-22BF07 Created OS            00 (0) 'MS-DOS'\n-22BF08 Extract Zip Spec      14 (20) '2.0'\n-22BF09 Extract OS            00 (0) 'MS-DOS'\n-22BF0A General Purpose Flag  0808 (2056)\n+22DDD4 CENTRAL HEADER #1110  02014B50 (33639248)\n+22DDD8 Created Zip Spec      14 (20) '2.0'\n+22DDD9 Created OS            00 (0) 'MS-DOS'\n+22DDDA Extract Zip Spec      14 (20) '2.0'\n+22DDDB Extract OS            00 (0) 'MS-DOS'\n+22DDDC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22BF0C Compression Method    0008 (8) 'Deflated'\n-22BF0E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22BF12 CRC                   38AEBD8D (950975885)\n-22BF16 Compressed Size       0000074B (1867)\n-22BF1A Uncompressed Size     00001838 (6200)\n-22BF1E Filename Length       002E (46)\n-22BF20 Extra Length          0000 (0)\n-22BF22 Comment Length        0000 (0)\n-22BF24 Disk Start            0000 (0)\n-22BF26 Int File Attributes   0000 (0)\n+22DDDE Compression Method    0008 (8) 'Deflated'\n+22DDE0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22DDE4 CRC                   67A5A923 (1738909987)\n+22DDE8 Compressed Size       000003FA (1018)\n+22DDEC Uncompressed Size     00000A93 (2707)\n+22DDF0 Filename Length       0044 (68)\n+22DDF2 Extra Length          0000 (0)\n+22DDF4 Comment Length        0000 (0)\n+22DDF6 Disk Start            0000 (0)\n+22DDF8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22BF28 Ext File Attributes   00000000 (0)\n-22BF2C Local Header Offset   0011DDEA (1170922)\n-22BF30 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22DDFA Ext File Attributes   00000000 (0)\n+22DDFE Local Header Offset   00139FBC (1286076)\n+22DE02 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22BF30: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22DE02: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22BF5E CENTRAL HEADER #1111  02014B50 (33639248)\n-22BF62 Created Zip Spec      14 (20) '2.0'\n-22BF63 Created OS            00 (0) 'MS-DOS'\n-22BF64 Extract Zip Spec      14 (20) '2.0'\n-22BF65 Extract OS            00 (0) 'MS-DOS'\n-22BF66 General Purpose Flag  0808 (2056)\n+22DE46 CENTRAL HEADER #1111  02014B50 (33639248)\n+22DE4A Created Zip Spec      14 (20) '2.0'\n+22DE4B Created OS            00 (0) 'MS-DOS'\n+22DE4C Extract Zip Spec      14 (20) '2.0'\n+22DE4D Extract OS            00 (0) 'MS-DOS'\n+22DE4E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22BF68 Compression Method    0008 (8) 'Deflated'\n-22BF6A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22BF6E CRC                   5D6B9E17 (1567333911)\n-22BF72 Compressed Size       000004F9 (1273)\n-22BF76 Uncompressed Size     00000CC3 (3267)\n-22BF7A Filename Length       0031 (49)\n-22BF7C Extra Length          0000 (0)\n-22BF7E Comment Length        0000 (0)\n-22BF80 Disk Start            0000 (0)\n-22BF82 Int File Attributes   0000 (0)\n+22DE50 Compression Method    0008 (8) 'Deflated'\n+22DE52 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22DE56 CRC                   00000000 (0)\n+22DE5A Compressed Size       00000002 (2)\n+22DE5E Uncompressed Size     00000000 (0)\n+22DE62 Filename Length       0030 (48)\n+22DE64 Extra Length          0000 (0)\n+22DE66 Comment Length        0000 (0)\n+22DE68 Disk Start            0000 (0)\n+22DE6A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22BF84 Ext File Attributes   00000000 (0)\n-22BF88 Local Header Offset   0011E591 (1172881)\n-22BF8C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22DE6C Ext File Attributes   00000000 (0)\n+22DE70 Local Header Offset   0013A428 (1287208)\n+22DE74 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22BF8C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22DE74: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22BFBD CENTRAL HEADER #1112  02014B50 (33639248)\n-22BFC1 Created Zip Spec      14 (20) '2.0'\n-22BFC2 Created OS            00 (0) 'MS-DOS'\n-22BFC3 Extract Zip Spec      14 (20) '2.0'\n-22BFC4 Extract OS            00 (0) 'MS-DOS'\n-22BFC5 General Purpose Flag  0808 (2056)\n+22DEA4 CENTRAL HEADER #1112  02014B50 (33639248)\n+22DEA8 Created Zip Spec      14 (20) '2.0'\n+22DEA9 Created OS            00 (0) 'MS-DOS'\n+22DEAA Extract Zip Spec      14 (20) '2.0'\n+22DEAB Extract OS            00 (0) 'MS-DOS'\n+22DEAC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22BFC7 Compression Method    0008 (8) 'Deflated'\n-22BFC9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22BFCD CRC                   33E95645 (870929989)\n-22BFD1 Compressed Size       0000035A (858)\n-22BFD5 Uncompressed Size     0000073C (1852)\n-22BFD9 Filename Length       002B (43)\n-22BFDB Extra Length          0000 (0)\n-22BFDD Comment Length        0000 (0)\n-22BFDF Disk Start            0000 (0)\n-22BFE1 Int File Attributes   0000 (0)\n+22DEAE Compression Method    0008 (8) 'Deflated'\n+22DEB0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22DEB4 CRC                   63B2617E (1672634750)\n+22DEB8 Compressed Size       00000263 (611)\n+22DEBC Uncompressed Size     00000460 (1120)\n+22DEC0 Filename Length       0046 (70)\n+22DEC2 Extra Length          0000 (0)\n+22DEC4 Comment Length        0000 (0)\n+22DEC6 Disk Start            0000 (0)\n+22DEC8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22BFE3 Ext File Attributes   00000000 (0)\n-22BFE7 Local Header Offset   0011EAE9 (1174249)\n-22BFEB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22DECA Ext File Attributes   00000000 (0)\n+22DECE Local Header Offset   0013A488 (1287304)\n+22DED2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22BFEB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22DED2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C016 CENTRAL HEADER #1113  02014B50 (33639248)\n-22C01A Created Zip Spec      14 (20) '2.0'\n-22C01B Created OS            00 (0) 'MS-DOS'\n-22C01C Extract Zip Spec      14 (20) '2.0'\n-22C01D Extract OS            00 (0) 'MS-DOS'\n-22C01E General Purpose Flag  0808 (2056)\n+22DF18 CENTRAL HEADER #1113  02014B50 (33639248)\n+22DF1C Created Zip Spec      14 (20) '2.0'\n+22DF1D Created OS            00 (0) 'MS-DOS'\n+22DF1E Extract Zip Spec      14 (20) '2.0'\n+22DF1F Extract OS            00 (0) 'MS-DOS'\n+22DF20 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C020 Compression Method    0008 (8) 'Deflated'\n-22C022 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C026 CRC                   DF14BD96 (3742678422)\n-22C02A Compressed Size       000006C8 (1736)\n-22C02E Uncompressed Size     000016A6 (5798)\n-22C032 Filename Length       0030 (48)\n-22C034 Extra Length          0000 (0)\n-22C036 Comment Length        0000 (0)\n-22C038 Disk Start            0000 (0)\n-22C03A Int File Attributes   0000 (0)\n+22DF22 Compression Method    0008 (8) 'Deflated'\n+22DF24 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22DF28 CRC                   1AFA4B4D (452610893)\n+22DF2C Compressed Size       000002A1 (673)\n+22DF30 Uncompressed Size     000005DB (1499)\n+22DF34 Filename Length       0045 (69)\n+22DF36 Extra Length          0000 (0)\n+22DF38 Comment Length        0000 (0)\n+22DF3A Disk Start            0000 (0)\n+22DF3C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C03C Ext File Attributes   00000000 (0)\n-22C040 Local Header Offset   0011EE9C (1175196)\n-22C044 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22DF3E Ext File Attributes   00000000 (0)\n+22DF42 Local Header Offset   0013A75F (1288031)\n+22DF46 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C044: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22DF46: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C074 CENTRAL HEADER #1114  02014B50 (33639248)\n-22C078 Created Zip Spec      14 (20) '2.0'\n-22C079 Created OS            00 (0) 'MS-DOS'\n-22C07A Extract Zip Spec      14 (20) '2.0'\n-22C07B Extract OS            00 (0) 'MS-DOS'\n-22C07C General Purpose Flag  0808 (2056)\n+22DF8B CENTRAL HEADER #1114  02014B50 (33639248)\n+22DF8F Created Zip Spec      14 (20) '2.0'\n+22DF90 Created OS            00 (0) 'MS-DOS'\n+22DF91 Extract Zip Spec      14 (20) '2.0'\n+22DF92 Extract OS            00 (0) 'MS-DOS'\n+22DF93 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C07E Compression Method    0008 (8) 'Deflated'\n-22C080 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C084 CRC                   FA17120C (4195815948)\n-22C088 Compressed Size       000005A1 (1441)\n-22C08C Uncompressed Size     00000EE2 (3810)\n-22C090 Filename Length       0033 (51)\n-22C092 Extra Length          0000 (0)\n-22C094 Comment Length        0000 (0)\n-22C096 Disk Start            0000 (0)\n-22C098 Int File Attributes   0000 (0)\n+22DF95 Compression Method    0008 (8) 'Deflated'\n+22DF97 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22DF9B CRC                   25DC5E62 (635199074)\n+22DF9F Compressed Size       000005EC (1516)\n+22DFA3 Uncompressed Size     00001184 (4484)\n+22DFA7 Filename Length       004A (74)\n+22DFA9 Extra Length          0000 (0)\n+22DFAB Comment Length        0000 (0)\n+22DFAD Disk Start            0000 (0)\n+22DFAF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C09A Ext File Attributes   00000000 (0)\n-22C09E Local Header Offset   0011F5C2 (1177026)\n-22C0A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22DFB1 Ext File Attributes   00000000 (0)\n+22DFB5 Local Header Offset   0013AA73 (1288819)\n+22DFB9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C0A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22DFB9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C0D5 CENTRAL HEADER #1115  02014B50 (33639248)\n-22C0D9 Created Zip Spec      14 (20) '2.0'\n-22C0DA Created OS            00 (0) 'MS-DOS'\n-22C0DB Extract Zip Spec      14 (20) '2.0'\n-22C0DC Extract OS            00 (0) 'MS-DOS'\n-22C0DD General Purpose Flag  0808 (2056)\n+22E003 CENTRAL HEADER #1115  02014B50 (33639248)\n+22E007 Created Zip Spec      14 (20) '2.0'\n+22E008 Created OS            00 (0) 'MS-DOS'\n+22E009 Extract Zip Spec      14 (20) '2.0'\n+22E00A Extract OS            00 (0) 'MS-DOS'\n+22E00B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C0DF Compression Method    0008 (8) 'Deflated'\n-22C0E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C0E5 CRC                   BCD228F3 (3167889651)\n-22C0E9 Compressed Size       00000AF2 (2802)\n-22C0ED Uncompressed Size     0000334E (13134)\n-22C0F1 Filename Length       002E (46)\n-22C0F3 Extra Length          0000 (0)\n-22C0F5 Comment Length        0000 (0)\n-22C0F7 Disk Start            0000 (0)\n-22C0F9 Int File Attributes   0000 (0)\n+22E00D Compression Method    0008 (8) 'Deflated'\n+22E00F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E013 CRC                   AADBB488 (2866525320)\n+22E017 Compressed Size       00000262 (610)\n+22E01B Uncompressed Size     00000460 (1120)\n+22E01F Filename Length       0046 (70)\n+22E021 Extra Length          0000 (0)\n+22E023 Comment Length        0000 (0)\n+22E025 Disk Start            0000 (0)\n+22E027 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C0FB Ext File Attributes   00000000 (0)\n-22C0FF Local Header Offset   0011FBC4 (1178564)\n-22C103 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E029 Ext File Attributes   00000000 (0)\n+22E02D Local Header Offset   0013B0D7 (1290455)\n+22E031 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C103: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E031: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C131 CENTRAL HEADER #1116  02014B50 (33639248)\n-22C135 Created Zip Spec      14 (20) '2.0'\n-22C136 Created OS            00 (0) 'MS-DOS'\n-22C137 Extract Zip Spec      14 (20) '2.0'\n-22C138 Extract OS            00 (0) 'MS-DOS'\n-22C139 General Purpose Flag  0808 (2056)\n+22E077 CENTRAL HEADER #1116  02014B50 (33639248)\n+22E07B Created Zip Spec      14 (20) '2.0'\n+22E07C Created OS            00 (0) 'MS-DOS'\n+22E07D Extract Zip Spec      14 (20) '2.0'\n+22E07E Extract OS            00 (0) 'MS-DOS'\n+22E07F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C13B Compression Method    0008 (8) 'Deflated'\n-22C13D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C141 CRC                   BDC74FB9 (3183955897)\n-22C145 Compressed Size       00000A8B (2699)\n-22C149 Uncompressed Size     00002C1E (11294)\n-22C14D Filename Length       0032 (50)\n-22C14F Extra Length          0000 (0)\n-22C151 Comment Length        0000 (0)\n-22C153 Disk Start            0000 (0)\n-22C155 Int File Attributes   0000 (0)\n+22E081 Compression Method    0008 (8) 'Deflated'\n+22E083 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E087 CRC                   BEF6AA62 (3203836514)\n+22E08B Compressed Size       0000026E (622)\n+22E08F Uncompressed Size     0000047C (1148)\n+22E093 Filename Length       004A (74)\n+22E095 Extra Length          0000 (0)\n+22E097 Comment Length        0000 (0)\n+22E099 Disk Start            0000 (0)\n+22E09B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C157 Ext File Attributes   00000000 (0)\n-22C15B Local Header Offset   00120712 (1181458)\n-22C15F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E09D Ext File Attributes   00000000 (0)\n+22E0A1 Local Header Offset   0013B3AD (1291181)\n+22E0A5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C15F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E0A5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C191 CENTRAL HEADER #1117  02014B50 (33639248)\n-22C195 Created Zip Spec      14 (20) '2.0'\n-22C196 Created OS            00 (0) 'MS-DOS'\n-22C197 Extract Zip Spec      14 (20) '2.0'\n-22C198 Extract OS            00 (0) 'MS-DOS'\n-22C199 General Purpose Flag  0808 (2056)\n+22E0EF CENTRAL HEADER #1117  02014B50 (33639248)\n+22E0F3 Created Zip Spec      14 (20) '2.0'\n+22E0F4 Created OS            00 (0) 'MS-DOS'\n+22E0F5 Extract Zip Spec      14 (20) '2.0'\n+22E0F6 Extract OS            00 (0) 'MS-DOS'\n+22E0F7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C19B Compression Method    0008 (8) 'Deflated'\n-22C19D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C1A1 CRC                   4BE7E92F (1273489711)\n-22C1A5 Compressed Size       00000465 (1125)\n-22C1A9 Uncompressed Size     00000B3B (2875)\n-22C1AD Filename Length       002E (46)\n-22C1AF Extra Length          0000 (0)\n-22C1B1 Comment Length        0000 (0)\n-22C1B3 Disk Start            0000 (0)\n-22C1B5 Int File Attributes   0000 (0)\n+22E0F9 Compression Method    0008 (8) 'Deflated'\n+22E0FB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E0FF CRC                   6F1FEDD0 (1864363472)\n+22E103 Compressed Size       0000003F (63)\n+22E107 Uncompressed Size     0000004D (77)\n+22E10B Filename Length       0059 (89)\n+22E10D Extra Length          0000 (0)\n+22E10F Comment Length        0000 (0)\n+22E111 Disk Start            0000 (0)\n+22E113 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C1B7 Ext File Attributes   00000000 (0)\n-22C1BB Local Header Offset   001211FD (1184253)\n-22C1BF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E115 Ext File Attributes   00000000 (0)\n+22E119 Local Header Offset   0013B693 (1291923)\n+22E11D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C1BF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E11D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C1ED CENTRAL HEADER #1118  02014B50 (33639248)\n-22C1F1 Created Zip Spec      14 (20) '2.0'\n-22C1F2 Created OS            00 (0) 'MS-DOS'\n-22C1F3 Extract Zip Spec      14 (20) '2.0'\n-22C1F4 Extract OS            00 (0) 'MS-DOS'\n-22C1F5 General Purpose Flag  0808 (2056)\n+22E176 CENTRAL HEADER #1118  02014B50 (33639248)\n+22E17A Created Zip Spec      14 (20) '2.0'\n+22E17B Created OS            00 (0) 'MS-DOS'\n+22E17C Extract Zip Spec      14 (20) '2.0'\n+22E17D Extract OS            00 (0) 'MS-DOS'\n+22E17E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C1F7 Compression Method    0008 (8) 'Deflated'\n-22C1F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C1FD CRC                   EE9BE4CE (4003194062)\n-22C201 Compressed Size       0000044C (1100)\n-22C205 Uncompressed Size     00000A15 (2581)\n-22C209 Filename Length       002C (44)\n-22C20B Extra Length          0000 (0)\n-22C20D Comment Length        0000 (0)\n-22C20F Disk Start            0000 (0)\n-22C211 Int File Attributes   0000 (0)\n+22E180 Compression Method    0008 (8) 'Deflated'\n+22E182 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E186 CRC                   6F1FEDD0 (1864363472)\n+22E18A Compressed Size       0000003F (63)\n+22E18E Uncompressed Size     0000004D (77)\n+22E192 Filename Length       0059 (89)\n+22E194 Extra Length          0000 (0)\n+22E196 Comment Length        0000 (0)\n+22E198 Disk Start            0000 (0)\n+22E19A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C213 Ext File Attributes   00000000 (0)\n-22C217 Local Header Offset   001216BE (1185470)\n-22C21B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E19C Ext File Attributes   00000000 (0)\n+22E1A0 Local Header Offset   0013B759 (1292121)\n+22E1A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C21B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E1A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C247 CENTRAL HEADER #1119  02014B50 (33639248)\n-22C24B Created Zip Spec      14 (20) '2.0'\n-22C24C Created OS            00 (0) 'MS-DOS'\n-22C24D Extract Zip Spec      14 (20) '2.0'\n-22C24E Extract OS            00 (0) 'MS-DOS'\n-22C24F General Purpose Flag  0808 (2056)\n+22E1FD CENTRAL HEADER #1119  02014B50 (33639248)\n+22E201 Created Zip Spec      14 (20) '2.0'\n+22E202 Created OS            00 (0) 'MS-DOS'\n+22E203 Extract Zip Spec      14 (20) '2.0'\n+22E204 Extract OS            00 (0) 'MS-DOS'\n+22E205 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C251 Compression Method    0008 (8) 'Deflated'\n-22C253 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C257 CRC                   24C74556 (617039190)\n-22C25B Compressed Size       00000440 (1088)\n-22C25F Uncompressed Size     00000A01 (2561)\n-22C263 Filename Length       002F (47)\n-22C265 Extra Length          0000 (0)\n-22C267 Comment Length        0000 (0)\n-22C269 Disk Start            0000 (0)\n-22C26B Int File Attributes   0000 (0)\n+22E207 Compression Method    0008 (8) 'Deflated'\n+22E209 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E20D CRC                   00000000 (0)\n+22E211 Compressed Size       00000002 (2)\n+22E215 Uncompressed Size     00000000 (0)\n+22E219 Filename Length       002F (47)\n+22E21B Extra Length          0000 (0)\n+22E21D Comment Length        0000 (0)\n+22E21F Disk Start            0000 (0)\n+22E221 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C26D Ext File Attributes   00000000 (0)\n-22C271 Local Header Offset   00121B64 (1186660)\n-22C275 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E223 Ext File Attributes   00000000 (0)\n+22E227 Local Header Offset   0013B81F (1292319)\n+22E22B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C275: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E22B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C2A4 CENTRAL HEADER #1120  02014B50 (33639248)\n-22C2A8 Created Zip Spec      14 (20) '2.0'\n-22C2A9 Created OS            00 (0) 'MS-DOS'\n-22C2AA Extract Zip Spec      14 (20) '2.0'\n-22C2AB Extract OS            00 (0) 'MS-DOS'\n-22C2AC General Purpose Flag  0808 (2056)\n+22E25A CENTRAL HEADER #1120  02014B50 (33639248)\n+22E25E Created Zip Spec      14 (20) '2.0'\n+22E25F Created OS            00 (0) 'MS-DOS'\n+22E260 Extract Zip Spec      14 (20) '2.0'\n+22E261 Extract OS            00 (0) 'MS-DOS'\n+22E262 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C2AE Compression Method    0008 (8) 'Deflated'\n-22C2B0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C2B4 CRC                   00000000 (0)\n-22C2B8 Compressed Size       00000002 (2)\n-22C2BC Uncompressed Size     00000000 (0)\n-22C2C0 Filename Length       0020 (32)\n-22C2C2 Extra Length          0000 (0)\n-22C2C4 Comment Length        0000 (0)\n-22C2C6 Disk Start            0000 (0)\n-22C2C8 Int File Attributes   0000 (0)\n+22E264 Compression Method    0008 (8) 'Deflated'\n+22E266 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E26A CRC                   C105B8EB (3238377707)\n+22E26E Compressed Size       000003AB (939)\n+22E272 Uncompressed Size     00000A79 (2681)\n+22E276 Filename Length       0036 (54)\n+22E278 Extra Length          0000 (0)\n+22E27A Comment Length        0000 (0)\n+22E27C Disk Start            0000 (0)\n+22E27E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C2CA Ext File Attributes   00000000 (0)\n-22C2CE Local Header Offset   00122001 (1187841)\n-22C2D2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E280 Ext File Attributes   00000000 (0)\n+22E284 Local Header Offset   0013B87E (1292414)\n+22E288 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C2D2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E288: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C2F2 CENTRAL HEADER #1121  02014B50 (33639248)\n-22C2F6 Created Zip Spec      14 (20) '2.0'\n-22C2F7 Created OS            00 (0) 'MS-DOS'\n-22C2F8 Extract Zip Spec      14 (20) '2.0'\n-22C2F9 Extract OS            00 (0) 'MS-DOS'\n-22C2FA General Purpose Flag  0808 (2056)\n+22E2BE CENTRAL HEADER #1121  02014B50 (33639248)\n+22E2C2 Created Zip Spec      14 (20) '2.0'\n+22E2C3 Created OS            00 (0) 'MS-DOS'\n+22E2C4 Extract Zip Spec      14 (20) '2.0'\n+22E2C5 Extract OS            00 (0) 'MS-DOS'\n+22E2C6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C2FC Compression Method    0008 (8) 'Deflated'\n-22C2FE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C302 CRC                   F1C552FF (4056240895)\n-22C306 Compressed Size       0000040A (1034)\n-22C30A Uncompressed Size     00000A9C (2716)\n-22C30E Filename Length       0036 (54)\n-22C310 Extra Length          0000 (0)\n-22C312 Comment Length        0000 (0)\n-22C314 Disk Start            0000 (0)\n-22C316 Int File Attributes   0000 (0)\n+22E2C8 Compression Method    0008 (8) 'Deflated'\n+22E2CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E2CE CRC                   86FC6C16 (2264689686)\n+22E2D2 Compressed Size       00000041 (65)\n+22E2D6 Uncompressed Size     00000045 (69)\n+22E2DA Filename Length       003D (61)\n+22E2DC Extra Length          0000 (0)\n+22E2DE Comment Length        0000 (0)\n+22E2E0 Disk Start            0000 (0)\n+22E2E2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C318 Ext File Attributes   00000000 (0)\n-22C31C Local Header Offset   00122051 (1187921)\n-22C320 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E2E4 Ext File Attributes   00000000 (0)\n+22E2E8 Local Header Offset   0013BC8D (1293453)\n+22E2EC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C320: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E2EC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C356 CENTRAL HEADER #1122  02014B50 (33639248)\n-22C35A Created Zip Spec      14 (20) '2.0'\n-22C35B Created OS            00 (0) 'MS-DOS'\n-22C35C Extract Zip Spec      14 (20) '2.0'\n-22C35D Extract OS            00 (0) 'MS-DOS'\n-22C35E General Purpose Flag  0808 (2056)\n+22E329 CENTRAL HEADER #1122  02014B50 (33639248)\n+22E32D Created Zip Spec      14 (20) '2.0'\n+22E32E Created OS            00 (0) 'MS-DOS'\n+22E32F Extract Zip Spec      14 (20) '2.0'\n+22E330 Extract OS            00 (0) 'MS-DOS'\n+22E331 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C360 Compression Method    0008 (8) 'Deflated'\n-22C362 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C366 CRC                   0D540AED (223611629)\n-22C36A Compressed Size       00000412 (1042)\n-22C36E Uncompressed Size     00000A14 (2580)\n-22C372 Filename Length       002D (45)\n-22C374 Extra Length          0000 (0)\n-22C376 Comment Length        0000 (0)\n-22C378 Disk Start            0000 (0)\n-22C37A Int File Attributes   0000 (0)\n+22E333 Compression Method    0008 (8) 'Deflated'\n+22E335 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E339 CRC                   00000000 (0)\n+22E33D Compressed Size       00000002 (2)\n+22E341 Uncompressed Size     00000000 (0)\n+22E345 Filename Length       001A (26)\n+22E347 Extra Length          0000 (0)\n+22E349 Comment Length        0000 (0)\n+22E34B Disk Start            0000 (0)\n+22E34D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C37C Ext File Attributes   00000000 (0)\n-22C380 Local Header Offset   001224BF (1189055)\n-22C384 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E34F Ext File Attributes   00000000 (0)\n+22E353 Local Header Offset   0013BD39 (1293625)\n+22E357 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C384: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E357: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C3B1 CENTRAL HEADER #1123  02014B50 (33639248)\n-22C3B5 Created Zip Spec      14 (20) '2.0'\n-22C3B6 Created OS            00 (0) 'MS-DOS'\n-22C3B7 Extract Zip Spec      14 (20) '2.0'\n-22C3B8 Extract OS            00 (0) 'MS-DOS'\n-22C3B9 General Purpose Flag  0808 (2056)\n+22E371 CENTRAL HEADER #1123  02014B50 (33639248)\n+22E375 Created Zip Spec      14 (20) '2.0'\n+22E376 Created OS            00 (0) 'MS-DOS'\n+22E377 Extract Zip Spec      14 (20) '2.0'\n+22E378 Extract OS            00 (0) 'MS-DOS'\n+22E379 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C3BB Compression Method    0008 (8) 'Deflated'\n-22C3BD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C3C1 CRC                   00E586BE (15042238)\n-22C3C5 Compressed Size       0000032B (811)\n-22C3C9 Uncompressed Size     00000678 (1656)\n-22C3CD Filename Length       002F (47)\n-22C3CF Extra Length          0000 (0)\n-22C3D1 Comment Length        0000 (0)\n-22C3D3 Disk Start            0000 (0)\n-22C3D5 Int File Attributes   0000 (0)\n+22E37B Compression Method    0008 (8) 'Deflated'\n+22E37D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E381 CRC                   D8E4F331 (3638883121)\n+22E385 Compressed Size       000002A3 (675)\n+22E389 Uncompressed Size     00000544 (1348)\n+22E38D Filename Length       002E (46)\n+22E38F Extra Length          0000 (0)\n+22E391 Comment Length        0000 (0)\n+22E393 Disk Start            0000 (0)\n+22E395 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C3D7 Ext File Attributes   00000000 (0)\n-22C3DB Local Header Offset   0012292C (1190188)\n-22C3DF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E397 Ext File Attributes   00000000 (0)\n+22E39B Local Header Offset   0013BD83 (1293699)\n+22E39F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C3DF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E39F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C40E CENTRAL HEADER #1124  02014B50 (33639248)\n-22C412 Created Zip Spec      14 (20) '2.0'\n-22C413 Created OS            00 (0) 'MS-DOS'\n-22C414 Extract Zip Spec      14 (20) '2.0'\n-22C415 Extract OS            00 (0) 'MS-DOS'\n-22C416 General Purpose Flag  0808 (2056)\n+22E3CD CENTRAL HEADER #1124  02014B50 (33639248)\n+22E3D1 Created Zip Spec      14 (20) '2.0'\n+22E3D2 Created OS            00 (0) 'MS-DOS'\n+22E3D3 Extract Zip Spec      14 (20) '2.0'\n+22E3D4 Extract OS            00 (0) 'MS-DOS'\n+22E3D5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C418 Compression Method    0008 (8) 'Deflated'\n-22C41A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C41E CRC                   00000000 (0)\n-22C422 Compressed Size       00000002 (2)\n-22C426 Uncompressed Size     00000000 (0)\n-22C42A Filename Length       001E (30)\n-22C42C Extra Length          0000 (0)\n-22C42E Comment Length        0000 (0)\n-22C430 Disk Start            0000 (0)\n-22C432 Int File Attributes   0000 (0)\n+22E3D7 Compression Method    0008 (8) 'Deflated'\n+22E3D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E3DD CRC                   C7E99B2E (3353975598)\n+22E3E1 Compressed Size       00000448 (1096)\n+22E3E5 Uncompressed Size     00000ACD (2765)\n+22E3E9 Filename Length       0028 (40)\n+22E3EB Extra Length          0000 (0)\n+22E3ED Comment Length        0000 (0)\n+22E3EF Disk Start            0000 (0)\n+22E3F1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C434 Ext File Attributes   00000000 (0)\n-22C438 Local Header Offset   00122CB4 (1191092)\n-22C43C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E3F3 Ext File Attributes   00000000 (0)\n+22E3F7 Local Header Offset   0013C082 (1294466)\n+22E3FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C43C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E3FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C45A CENTRAL HEADER #1125  02014B50 (33639248)\n-22C45E Created Zip Spec      14 (20) '2.0'\n-22C45F Created OS            00 (0) 'MS-DOS'\n-22C460 Extract Zip Spec      14 (20) '2.0'\n-22C461 Extract OS            00 (0) 'MS-DOS'\n-22C462 General Purpose Flag  0808 (2056)\n+22E423 CENTRAL HEADER #1125  02014B50 (33639248)\n+22E427 Created Zip Spec      14 (20) '2.0'\n+22E428 Created OS            00 (0) 'MS-DOS'\n+22E429 Extract Zip Spec      14 (20) '2.0'\n+22E42A Extract OS            00 (0) 'MS-DOS'\n+22E42B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C464 Compression Method    0008 (8) 'Deflated'\n-22C466 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C46A CRC                   E1C5881F (3787819039)\n-22C46E Compressed Size       00000336 (822)\n-22C472 Uncompressed Size     000006AD (1709)\n-22C476 Filename Length       003C (60)\n-22C478 Extra Length          0000 (0)\n-22C47A Comment Length        0000 (0)\n-22C47C Disk Start            0000 (0)\n-22C47E Int File Attributes   0000 (0)\n+22E42D Compression Method    0008 (8) 'Deflated'\n+22E42F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E433 CRC                   A4BC4964 (2763802980)\n+22E437 Compressed Size       0000042E (1070)\n+22E43B Uncompressed Size     000014B7 (5303)\n+22E43F Filename Length       0036 (54)\n+22E441 Extra Length          0000 (0)\n+22E443 Comment Length        0000 (0)\n+22E445 Disk Start            0000 (0)\n+22E447 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C480 Ext File Attributes   00000000 (0)\n-22C484 Local Header Offset   00122D02 (1191170)\n-22C488 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E449 Ext File Attributes   00000000 (0)\n+22E44D Local Header Offset   0013C520 (1295648)\n+22E451 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C488: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E451: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C4C4 CENTRAL HEADER #1126  02014B50 (33639248)\n-22C4C8 Created Zip Spec      14 (20) '2.0'\n-22C4C9 Created OS            00 (0) 'MS-DOS'\n-22C4CA Extract Zip Spec      14 (20) '2.0'\n-22C4CB Extract OS            00 (0) 'MS-DOS'\n-22C4CC General Purpose Flag  0808 (2056)\n+22E487 CENTRAL HEADER #1126  02014B50 (33639248)\n+22E48B Created Zip Spec      14 (20) '2.0'\n+22E48C Created OS            00 (0) 'MS-DOS'\n+22E48D Extract Zip Spec      14 (20) '2.0'\n+22E48E Extract OS            00 (0) 'MS-DOS'\n+22E48F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C4CE Compression Method    0008 (8) 'Deflated'\n-22C4D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C4D4 CRC                   FE9FE6BA (4271892154)\n-22C4D8 Compressed Size       00000261 (609)\n-22C4DC Uncompressed Size     00000515 (1301)\n-22C4E0 Filename Length       003A (58)\n-22C4E2 Extra Length          0000 (0)\n-22C4E4 Comment Length        0000 (0)\n-22C4E6 Disk Start            0000 (0)\n-22C4E8 Int File Attributes   0000 (0)\n+22E491 Compression Method    0008 (8) 'Deflated'\n+22E493 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E497 CRC                   4C19B653 (1276753491)\n+22E49B Compressed Size       000004BF (1215)\n+22E49F Uncompressed Size     00000A34 (2612)\n+22E4A3 Filename Length       002D (45)\n+22E4A5 Extra Length          0000 (0)\n+22E4A7 Comment Length        0000 (0)\n+22E4A9 Disk Start            0000 (0)\n+22E4AB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C4EA Ext File Attributes   00000000 (0)\n-22C4EE Local Header Offset   001230A2 (1192098)\n-22C4F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E4AD Ext File Attributes   00000000 (0)\n+22E4B1 Local Header Offset   0013C9B2 (1296818)\n+22E4B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C4F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E4B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C52C CENTRAL HEADER #1127  02014B50 (33639248)\n-22C530 Created Zip Spec      14 (20) '2.0'\n-22C531 Created OS            00 (0) 'MS-DOS'\n-22C532 Extract Zip Spec      14 (20) '2.0'\n-22C533 Extract OS            00 (0) 'MS-DOS'\n-22C534 General Purpose Flag  0808 (2056)\n+22E4E2 CENTRAL HEADER #1127  02014B50 (33639248)\n+22E4E6 Created Zip Spec      14 (20) '2.0'\n+22E4E7 Created OS            00 (0) 'MS-DOS'\n+22E4E8 Extract Zip Spec      14 (20) '2.0'\n+22E4E9 Extract OS            00 (0) 'MS-DOS'\n+22E4EA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C536 Compression Method    0008 (8) 'Deflated'\n-22C538 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C53C CRC                   07F77085 (133656709)\n-22C540 Compressed Size       00000267 (615)\n-22C544 Uncompressed Size     000004F7 (1271)\n-22C548 Filename Length       0039 (57)\n-22C54A Extra Length          0000 (0)\n-22C54C Comment Length        0000 (0)\n-22C54E Disk Start            0000 (0)\n-22C550 Int File Attributes   0000 (0)\n+22E4EC Compression Method    0008 (8) 'Deflated'\n+22E4EE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E4F2 CRC                   92D33C56 (2463317078)\n+22E4F6 Compressed Size       00000290 (656)\n+22E4FA Uncompressed Size     0000053A (1338)\n+22E4FE Filename Length       0027 (39)\n+22E500 Extra Length          0000 (0)\n+22E502 Comment Length        0000 (0)\n+22E504 Disk Start            0000 (0)\n+22E506 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C552 Ext File Attributes   00000000 (0)\n-22C556 Local Header Offset   0012336B (1192811)\n-22C55A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E508 Ext File Attributes   00000000 (0)\n+22E50C Local Header Offset   0013CECC (1298124)\n+22E510 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C55A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E510: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C593 CENTRAL HEADER #1128  02014B50 (33639248)\n-22C597 Created Zip Spec      14 (20) '2.0'\n-22C598 Created OS            00 (0) 'MS-DOS'\n-22C599 Extract Zip Spec      14 (20) '2.0'\n-22C59A Extract OS            00 (0) 'MS-DOS'\n-22C59B General Purpose Flag  0808 (2056)\n+22E537 CENTRAL HEADER #1128  02014B50 (33639248)\n+22E53B Created Zip Spec      14 (20) '2.0'\n+22E53C Created OS            00 (0) 'MS-DOS'\n+22E53D Extract Zip Spec      14 (20) '2.0'\n+22E53E Extract OS            00 (0) 'MS-DOS'\n+22E53F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C59D Compression Method    0008 (8) 'Deflated'\n-22C59F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C5A3 CRC                   334FA791 (860858257)\n-22C5A7 Compressed Size       000003EB (1003)\n-22C5AB Uncompressed Size     00000C9A (3226)\n-22C5AF Filename Length       003A (58)\n-22C5B1 Extra Length          0000 (0)\n-22C5B3 Comment Length        0000 (0)\n-22C5B5 Disk Start            0000 (0)\n-22C5B7 Int File Attributes   0000 (0)\n+22E541 Compression Method    0008 (8) 'Deflated'\n+22E543 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E547 CRC                   8AC6D7E1 (2328287201)\n+22E54B Compressed Size       000003BB (955)\n+22E54F Uncompressed Size     000007D3 (2003)\n+22E553 Filename Length       002E (46)\n+22E555 Extra Length          0000 (0)\n+22E557 Comment Length        0000 (0)\n+22E559 Disk Start            0000 (0)\n+22E55B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C5B9 Ext File Attributes   00000000 (0)\n-22C5BD Local Header Offset   00123639 (1193529)\n-22C5C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E55D Ext File Attributes   00000000 (0)\n+22E561 Local Header Offset   0013D1B1 (1298865)\n+22E565 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C5C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E565: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C5FB CENTRAL HEADER #1129  02014B50 (33639248)\n-22C5FF Created Zip Spec      14 (20) '2.0'\n-22C600 Created OS            00 (0) 'MS-DOS'\n-22C601 Extract Zip Spec      14 (20) '2.0'\n-22C602 Extract OS            00 (0) 'MS-DOS'\n-22C603 General Purpose Flag  0808 (2056)\n+22E593 CENTRAL HEADER #1129  02014B50 (33639248)\n+22E597 Created Zip Spec      14 (20) '2.0'\n+22E598 Created OS            00 (0) 'MS-DOS'\n+22E599 Extract Zip Spec      14 (20) '2.0'\n+22E59A Extract OS            00 (0) 'MS-DOS'\n+22E59B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C605 Compression Method    0008 (8) 'Deflated'\n-22C607 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C60B CRC                   5C26FEE4 (1546059492)\n-22C60F Compressed Size       00000436 (1078)\n-22C613 Uncompressed Size     00000D57 (3415)\n-22C617 Filename Length       0039 (57)\n-22C619 Extra Length          0000 (0)\n-22C61B Comment Length        0000 (0)\n-22C61D Disk Start            0000 (0)\n-22C61F Int File Attributes   0000 (0)\n+22E59D Compression Method    0008 (8) 'Deflated'\n+22E59F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E5A3 CRC                   12C409E5 (314837477)\n+22E5A7 Compressed Size       000002C9 (713)\n+22E5AB Uncompressed Size     0000061F (1567)\n+22E5AF Filename Length       0035 (53)\n+22E5B1 Extra Length          0000 (0)\n+22E5B3 Comment Length        0000 (0)\n+22E5B5 Disk Start            0000 (0)\n+22E5B7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C621 Ext File Attributes   00000000 (0)\n-22C625 Local Header Offset   00123A8C (1194636)\n-22C629 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E5B9 Ext File Attributes   00000000 (0)\n+22E5BD Local Header Offset   0013D5C8 (1299912)\n+22E5C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C629: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E5C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C662 CENTRAL HEADER #1130  02014B50 (33639248)\n-22C666 Created Zip Spec      14 (20) '2.0'\n-22C667 Created OS            00 (0) 'MS-DOS'\n-22C668 Extract Zip Spec      14 (20) '2.0'\n-22C669 Extract OS            00 (0) 'MS-DOS'\n-22C66A General Purpose Flag  0808 (2056)\n+22E5F6 CENTRAL HEADER #1130  02014B50 (33639248)\n+22E5FA Created Zip Spec      14 (20) '2.0'\n+22E5FB Created OS            00 (0) 'MS-DOS'\n+22E5FC Extract Zip Spec      14 (20) '2.0'\n+22E5FD Extract OS            00 (0) 'MS-DOS'\n+22E5FE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C66C Compression Method    0008 (8) 'Deflated'\n-22C66E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C672 CRC                   00000000 (0)\n-22C676 Compressed Size       00000002 (2)\n-22C67A Uncompressed Size     00000000 (0)\n-22C67E Filename Length       001E (30)\n-22C680 Extra Length          0000 (0)\n-22C682 Comment Length        0000 (0)\n-22C684 Disk Start            0000 (0)\n-22C686 Int File Attributes   0000 (0)\n+22E600 Compression Method    0008 (8) 'Deflated'\n+22E602 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E606 CRC                   6C2E2D81 (1814965633)\n+22E60A Compressed Size       00000739 (1849)\n+22E60E Uncompressed Size     00001602 (5634)\n+22E612 Filename Length       002E (46)\n+22E614 Extra Length          0000 (0)\n+22E616 Comment Length        0000 (0)\n+22E618 Disk Start            0000 (0)\n+22E61A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C688 Ext File Attributes   00000000 (0)\n-22C68C Local Header Offset   00123F29 (1195817)\n-22C690 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E61C Ext File Attributes   00000000 (0)\n+22E620 Local Header Offset   0013D8F4 (1300724)\n+22E624 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C690: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E624: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C6AE CENTRAL HEADER #1131  02014B50 (33639248)\n-22C6B2 Created Zip Spec      14 (20) '2.0'\n-22C6B3 Created OS            00 (0) 'MS-DOS'\n-22C6B4 Extract Zip Spec      14 (20) '2.0'\n-22C6B5 Extract OS            00 (0) 'MS-DOS'\n-22C6B6 General Purpose Flag  0808 (2056)\n+22E652 CENTRAL HEADER #1131  02014B50 (33639248)\n+22E656 Created Zip Spec      14 (20) '2.0'\n+22E657 Created OS            00 (0) 'MS-DOS'\n+22E658 Extract Zip Spec      14 (20) '2.0'\n+22E659 Extract OS            00 (0) 'MS-DOS'\n+22E65A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C6B8 Compression Method    0008 (8) 'Deflated'\n-22C6BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C6BE CRC                   EC8B751D (3968562461)\n-22C6C2 Compressed Size       0000037F (895)\n-22C6C6 Uncompressed Size     000008F6 (2294)\n-22C6CA Filename Length       0033 (51)\n-22C6CC Extra Length          0000 (0)\n-22C6CE Comment Length        0000 (0)\n-22C6D0 Disk Start            0000 (0)\n-22C6D2 Int File Attributes   0000 (0)\n+22E65C Compression Method    0008 (8) 'Deflated'\n+22E65E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E662 CRC                   ED9B9E6B (3986398827)\n+22E666 Compressed Size       00000255 (597)\n+22E66A Uncompressed Size     000004B7 (1207)\n+22E66E Filename Length       0036 (54)\n+22E670 Extra Length          0000 (0)\n+22E672 Comment Length        0000 (0)\n+22E674 Disk Start            0000 (0)\n+22E676 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C6D4 Ext File Attributes   00000000 (0)\n-22C6D8 Local Header Offset   00123F77 (1195895)\n-22C6DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E678 Ext File Attributes   00000000 (0)\n+22E67C Local Header Offset   0013E089 (1302665)\n+22E680 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C6DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E680: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C70F CENTRAL HEADER #1132  02014B50 (33639248)\n-22C713 Created Zip Spec      14 (20) '2.0'\n-22C714 Created OS            00 (0) 'MS-DOS'\n-22C715 Extract Zip Spec      14 (20) '2.0'\n-22C716 Extract OS            00 (0) 'MS-DOS'\n-22C717 General Purpose Flag  0808 (2056)\n+22E6B6 CENTRAL HEADER #1132  02014B50 (33639248)\n+22E6BA Created Zip Spec      14 (20) '2.0'\n+22E6BB Created OS            00 (0) 'MS-DOS'\n+22E6BC Extract Zip Spec      14 (20) '2.0'\n+22E6BD Extract OS            00 (0) 'MS-DOS'\n+22E6BE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C719 Compression Method    0008 (8) 'Deflated'\n-22C71B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C71F CRC                   A5C33F03 (2781036291)\n-22C723 Compressed Size       0000096F (2415)\n-22C727 Uncompressed Size     00001F52 (8018)\n-22C72B Filename Length       0032 (50)\n-22C72D Extra Length          0000 (0)\n-22C72F Comment Length        0000 (0)\n-22C731 Disk Start            0000 (0)\n-22C733 Int File Attributes   0000 (0)\n+22E6C0 Compression Method    0008 (8) 'Deflated'\n+22E6C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E6C6 CRC                   00000000 (0)\n+22E6CA Compressed Size       00000002 (2)\n+22E6CE Uncompressed Size     00000000 (0)\n+22E6D2 Filename Length       0021 (33)\n+22E6D4 Extra Length          0000 (0)\n+22E6D6 Comment Length        0000 (0)\n+22E6D8 Disk Start            0000 (0)\n+22E6DA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C735 Ext File Attributes   00000000 (0)\n-22C739 Local Header Offset   00124357 (1196887)\n-22C73D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E6DC Ext File Attributes   00000000 (0)\n+22E6E0 Local Header Offset   0013E342 (1303362)\n+22E6E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C73D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E6E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C76F CENTRAL HEADER #1133  02014B50 (33639248)\n-22C773 Created Zip Spec      14 (20) '2.0'\n-22C774 Created OS            00 (0) 'MS-DOS'\n-22C775 Extract Zip Spec      14 (20) '2.0'\n-22C776 Extract OS            00 (0) 'MS-DOS'\n-22C777 General Purpose Flag  0808 (2056)\n+22E705 CENTRAL HEADER #1133  02014B50 (33639248)\n+22E709 Created Zip Spec      14 (20) '2.0'\n+22E70A Created OS            00 (0) 'MS-DOS'\n+22E70B Extract Zip Spec      14 (20) '2.0'\n+22E70C Extract OS            00 (0) 'MS-DOS'\n+22E70D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C779 Compression Method    0008 (8) 'Deflated'\n-22C77B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C77F CRC                   861CA040 (2250022976)\n-22C783 Compressed Size       00000567 (1383)\n-22C787 Uncompressed Size     000010FE (4350)\n-22C78B Filename Length       0033 (51)\n-22C78D Extra Length          0000 (0)\n-22C78F Comment Length        0000 (0)\n-22C791 Disk Start            0000 (0)\n-22C793 Int File Attributes   0000 (0)\n+22E70F Compression Method    0008 (8) 'Deflated'\n+22E711 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E715 CRC                   3799B565 (932820325)\n+22E719 Compressed Size       00000312 (786)\n+22E71D Uncompressed Size     0000086B (2155)\n+22E721 Filename Length       003E (62)\n+22E723 Extra Length          0000 (0)\n+22E725 Comment Length        0000 (0)\n+22E727 Disk Start            0000 (0)\n+22E729 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C795 Ext File Attributes   00000000 (0)\n-22C799 Local Header Offset   00124D26 (1199398)\n-22C79D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E72B Ext File Attributes   00000000 (0)\n+22E72F Local Header Offset   0013E393 (1303443)\n+22E733 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C79D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E733: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C7D0 CENTRAL HEADER #1134  02014B50 (33639248)\n-22C7D4 Created Zip Spec      14 (20) '2.0'\n-22C7D5 Created OS            00 (0) 'MS-DOS'\n-22C7D6 Extract Zip Spec      14 (20) '2.0'\n-22C7D7 Extract OS            00 (0) 'MS-DOS'\n-22C7D8 General Purpose Flag  0808 (2056)\n+22E771 CENTRAL HEADER #1134  02014B50 (33639248)\n+22E775 Created Zip Spec      14 (20) '2.0'\n+22E776 Created OS            00 (0) 'MS-DOS'\n+22E777 Extract Zip Spec      14 (20) '2.0'\n+22E778 Extract OS            00 (0) 'MS-DOS'\n+22E779 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C7DA Compression Method    0008 (8) 'Deflated'\n-22C7DC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C7E0 CRC                   1140D3D7 (289461207)\n-22C7E4 Compressed Size       000008D2 (2258)\n-22C7E8 Uncompressed Size     000021E4 (8676)\n-22C7EC Filename Length       0038 (56)\n-22C7EE Extra Length          0000 (0)\n-22C7F0 Comment Length        0000 (0)\n-22C7F2 Disk Start            0000 (0)\n-22C7F4 Int File Attributes   0000 (0)\n+22E77B Compression Method    0008 (8) 'Deflated'\n+22E77D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E781 CRC                   0B335580 (187913600)\n+22E785 Compressed Size       00000337 (823)\n+22E789 Uncompressed Size     000006ED (1773)\n+22E78D Filename Length       0045 (69)\n+22E78F Extra Length          0000 (0)\n+22E791 Comment Length        0000 (0)\n+22E793 Disk Start            0000 (0)\n+22E795 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C7F6 Ext File Attributes   00000000 (0)\n-22C7FA Local Header Offset   001252EE (1200878)\n-22C7FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E797 Ext File Attributes   00000000 (0)\n+22E79B Local Header Offset   0013E711 (1304337)\n+22E79F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C7FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E79F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C836 CENTRAL HEADER #1135  02014B50 (33639248)\n-22C83A Created Zip Spec      14 (20) '2.0'\n-22C83B Created OS            00 (0) 'MS-DOS'\n-22C83C Extract Zip Spec      14 (20) '2.0'\n-22C83D Extract OS            00 (0) 'MS-DOS'\n-22C83E General Purpose Flag  0808 (2056)\n+22E7E4 CENTRAL HEADER #1135  02014B50 (33639248)\n+22E7E8 Created Zip Spec      14 (20) '2.0'\n+22E7E9 Created OS            00 (0) 'MS-DOS'\n+22E7EA Extract Zip Spec      14 (20) '2.0'\n+22E7EB Extract OS            00 (0) 'MS-DOS'\n+22E7EC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C840 Compression Method    0008 (8) 'Deflated'\n-22C842 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C846 CRC                   90398B66 (2419690342)\n-22C84A Compressed Size       00000500 (1280)\n-22C84E Uncompressed Size     00000F56 (3926)\n-22C852 Filename Length       0035 (53)\n-22C854 Extra Length          0000 (0)\n-22C856 Comment Length        0000 (0)\n-22C858 Disk Start            0000 (0)\n-22C85A Int File Attributes   0000 (0)\n+22E7EE Compression Method    0008 (8) 'Deflated'\n+22E7F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E7F4 CRC                   4E9CD747 (1318901575)\n+22E7F8 Compressed Size       0000029C (668)\n+22E7FC Uncompressed Size     00000587 (1415)\n+22E800 Filename Length       0046 (70)\n+22E802 Extra Length          0000 (0)\n+22E804 Comment Length        0000 (0)\n+22E806 Disk Start            0000 (0)\n+22E808 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C85C Ext File Attributes   00000000 (0)\n-22C860 Local Header Offset   00125C26 (1203238)\n-22C864 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E80A Ext File Attributes   00000000 (0)\n+22E80E Local Header Offset   0013EABB (1305275)\n+22E812 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C864: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E812: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C899 CENTRAL HEADER #1136  02014B50 (33639248)\n-22C89D Created Zip Spec      14 (20) '2.0'\n-22C89E Created OS            00 (0) 'MS-DOS'\n-22C89F Extract Zip Spec      14 (20) '2.0'\n-22C8A0 Extract OS            00 (0) 'MS-DOS'\n-22C8A1 General Purpose Flag  0808 (2056)\n+22E858 CENTRAL HEADER #1136  02014B50 (33639248)\n+22E85C Created Zip Spec      14 (20) '2.0'\n+22E85D Created OS            00 (0) 'MS-DOS'\n+22E85E Extract Zip Spec      14 (20) '2.0'\n+22E85F Extract OS            00 (0) 'MS-DOS'\n+22E860 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C8A3 Compression Method    0008 (8) 'Deflated'\n-22C8A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C8A9 CRC                   8054E5B8 (2153047480)\n-22C8AD Compressed Size       00000439 (1081)\n-22C8B1 Uncompressed Size     00000FA9 (4009)\n-22C8B5 Filename Length       002D (45)\n-22C8B7 Extra Length          0000 (0)\n-22C8B9 Comment Length        0000 (0)\n-22C8BB Disk Start            0000 (0)\n-22C8BD Int File Attributes   0000 (0)\n+22E862 Compression Method    0008 (8) 'Deflated'\n+22E864 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E868 CRC                   A92DE3D2 (2838356946)\n+22E86C Compressed Size       0000039B (923)\n+22E870 Uncompressed Size     000008A1 (2209)\n+22E874 Filename Length       0044 (68)\n+22E876 Extra Length          0000 (0)\n+22E878 Comment Length        0000 (0)\n+22E87A Disk Start            0000 (0)\n+22E87C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C8BF Ext File Attributes   00000000 (0)\n-22C8C3 Local Header Offset   00126189 (1204617)\n-22C8C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E87E Ext File Attributes   00000000 (0)\n+22E882 Local Header Offset   0013EDCB (1306059)\n+22E886 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C8C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E886: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C8F4 CENTRAL HEADER #1137  02014B50 (33639248)\n-22C8F8 Created Zip Spec      14 (20) '2.0'\n-22C8F9 Created OS            00 (0) 'MS-DOS'\n-22C8FA Extract Zip Spec      14 (20) '2.0'\n-22C8FB Extract OS            00 (0) 'MS-DOS'\n-22C8FC General Purpose Flag  0808 (2056)\n+22E8CA CENTRAL HEADER #1137  02014B50 (33639248)\n+22E8CE Created Zip Spec      14 (20) '2.0'\n+22E8CF Created OS            00 (0) 'MS-DOS'\n+22E8D0 Extract Zip Spec      14 (20) '2.0'\n+22E8D1 Extract OS            00 (0) 'MS-DOS'\n+22E8D2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C8FE Compression Method    0008 (8) 'Deflated'\n-22C900 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C904 CRC                   873A5673 (2268747379)\n-22C908 Compressed Size       000002EA (746)\n-22C90C Uncompressed Size     0000072D (1837)\n-22C910 Filename Length       0031 (49)\n-22C912 Extra Length          0000 (0)\n-22C914 Comment Length        0000 (0)\n-22C916 Disk Start            0000 (0)\n-22C918 Int File Attributes   0000 (0)\n+22E8D4 Compression Method    0008 (8) 'Deflated'\n+22E8D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E8DA CRC                   B19E4EA6 (2979942054)\n+22E8DE Compressed Size       000006D3 (1747)\n+22E8E2 Uncompressed Size     0000188D (6285)\n+22E8E6 Filename Length       003C (60)\n+22E8E8 Extra Length          0000 (0)\n+22E8EA Comment Length        0000 (0)\n+22E8EC Disk Start            0000 (0)\n+22E8EE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C91A Ext File Attributes   00000000 (0)\n-22C91E Local Header Offset   0012661D (1205789)\n-22C922 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E8F0 Ext File Attributes   00000000 (0)\n+22E8F4 Local Header Offset   0013F1D8 (1307096)\n+22E8F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C922: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E8F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C953 CENTRAL HEADER #1138  02014B50 (33639248)\n-22C957 Created Zip Spec      14 (20) '2.0'\n-22C958 Created OS            00 (0) 'MS-DOS'\n-22C959 Extract Zip Spec      14 (20) '2.0'\n-22C95A Extract OS            00 (0) 'MS-DOS'\n-22C95B General Purpose Flag  0808 (2056)\n+22E934 CENTRAL HEADER #1138  02014B50 (33639248)\n+22E938 Created Zip Spec      14 (20) '2.0'\n+22E939 Created OS            00 (0) 'MS-DOS'\n+22E93A Extract Zip Spec      14 (20) '2.0'\n+22E93B Extract OS            00 (0) 'MS-DOS'\n+22E93C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C95D Compression Method    0008 (8) 'Deflated'\n-22C95F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C963 CRC                   B63E72D7 (3057545943)\n-22C967 Compressed Size       0000049E (1182)\n-22C96B Uncompressed Size     00000D50 (3408)\n-22C96F Filename Length       0038 (56)\n-22C971 Extra Length          0000 (0)\n-22C973 Comment Length        0000 (0)\n-22C975 Disk Start            0000 (0)\n-22C977 Int File Attributes   0000 (0)\n+22E93E Compression Method    0008 (8) 'Deflated'\n+22E940 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E944 CRC                   25CCFC5A (634190938)\n+22E948 Compressed Size       00000913 (2323)\n+22E94C Uncompressed Size     00002B62 (11106)\n+22E950 Filename Length       0045 (69)\n+22E952 Extra Length          0000 (0)\n+22E954 Comment Length        0000 (0)\n+22E956 Disk Start            0000 (0)\n+22E958 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C979 Ext File Attributes   00000000 (0)\n-22C97D Local Header Offset   00126966 (1206630)\n-22C981 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E95A Ext File Attributes   00000000 (0)\n+22E95E Local Header Offset   0013F915 (1308949)\n+22E962 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C981: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E962: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22C9B9 CENTRAL HEADER #1139  02014B50 (33639248)\n-22C9BD Created Zip Spec      14 (20) '2.0'\n-22C9BE Created OS            00 (0) 'MS-DOS'\n-22C9BF Extract Zip Spec      14 (20) '2.0'\n-22C9C0 Extract OS            00 (0) 'MS-DOS'\n-22C9C1 General Purpose Flag  0808 (2056)\n+22E9A7 CENTRAL HEADER #1139  02014B50 (33639248)\n+22E9AB Created Zip Spec      14 (20) '2.0'\n+22E9AC Created OS            00 (0) 'MS-DOS'\n+22E9AD Extract Zip Spec      14 (20) '2.0'\n+22E9AE Extract OS            00 (0) 'MS-DOS'\n+22E9AF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22C9C3 Compression Method    0008 (8) 'Deflated'\n-22C9C5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22C9C9 CRC                   C40EC84E (3289303118)\n-22C9CD Compressed Size       00000434 (1076)\n-22C9D1 Uncompressed Size     00000D18 (3352)\n-22C9D5 Filename Length       003A (58)\n-22C9D7 Extra Length          0000 (0)\n-22C9D9 Comment Length        0000 (0)\n-22C9DB Disk Start            0000 (0)\n-22C9DD Int File Attributes   0000 (0)\n+22E9B1 Compression Method    0008 (8) 'Deflated'\n+22E9B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22E9B7 CRC                   DEC94C5D (3737734237)\n+22E9BB Compressed Size       0000088A (2186)\n+22E9BF Uncompressed Size     000020CD (8397)\n+22E9C3 Filename Length       0040 (64)\n+22E9C5 Extra Length          0000 (0)\n+22E9C7 Comment Length        0000 (0)\n+22E9C9 Disk Start            0000 (0)\n+22E9CB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22C9DF Ext File Attributes   00000000 (0)\n-22C9E3 Local Header Offset   00126E6A (1207914)\n-22C9E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22E9CD Ext File Attributes   00000000 (0)\n+22E9D1 Local Header Offset   0014029B (1311387)\n+22E9D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22C9E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22E9D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22CA21 CENTRAL HEADER #1140  02014B50 (33639248)\n-22CA25 Created Zip Spec      14 (20) '2.0'\n-22CA26 Created OS            00 (0) 'MS-DOS'\n-22CA27 Extract Zip Spec      14 (20) '2.0'\n-22CA28 Extract OS            00 (0) 'MS-DOS'\n-22CA29 General Purpose Flag  0808 (2056)\n+22EA15 CENTRAL HEADER #1140  02014B50 (33639248)\n+22EA19 Created Zip Spec      14 (20) '2.0'\n+22EA1A Created OS            00 (0) 'MS-DOS'\n+22EA1B Extract Zip Spec      14 (20) '2.0'\n+22EA1C Extract OS            00 (0) 'MS-DOS'\n+22EA1D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22CA2B Compression Method    0008 (8) 'Deflated'\n-22CA2D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22CA31 CRC                   00000000 (0)\n-22CA35 Compressed Size       00000002 (2)\n-22CA39 Uncompressed Size     00000000 (0)\n-22CA3D Filename Length       0024 (36)\n-22CA3F Extra Length          0000 (0)\n-22CA41 Comment Length        0000 (0)\n-22CA43 Disk Start            0000 (0)\n-22CA45 Int File Attributes   0000 (0)\n+22EA1F Compression Method    0008 (8) 'Deflated'\n+22EA21 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22EA25 CRC                   71025D3E (1895980350)\n+22EA29 Compressed Size       0000088C (2188)\n+22EA2D Uncompressed Size     0000309E (12446)\n+22EA31 Filename Length       0038 (56)\n+22EA33 Extra Length          0000 (0)\n+22EA35 Comment Length        0000 (0)\n+22EA37 Disk Start            0000 (0)\n+22EA39 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22CA47 Ext File Attributes   00000000 (0)\n-22CA4B Local Header Offset   00127306 (1209094)\n-22CA4F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22EA3B Ext File Attributes   00000000 (0)\n+22EA3F Local Header Offset   00140B93 (1313683)\n+22EA43 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22CA4F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22EA43: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22CA73 CENTRAL HEADER #1141  02014B50 (33639248)\n-22CA77 Created Zip Spec      14 (20) '2.0'\n-22CA78 Created OS            00 (0) 'MS-DOS'\n-22CA79 Extract Zip Spec      14 (20) '2.0'\n-22CA7A Extract OS            00 (0) 'MS-DOS'\n-22CA7B General Purpose Flag  0808 (2056)\n+22EA7B CENTRAL HEADER #1141  02014B50 (33639248)\n+22EA7F Created Zip Spec      14 (20) '2.0'\n+22EA80 Created OS            00 (0) 'MS-DOS'\n+22EA81 Extract Zip Spec      14 (20) '2.0'\n+22EA82 Extract OS            00 (0) 'MS-DOS'\n+22EA83 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22CA7D Compression Method    0008 (8) 'Deflated'\n-22CA7F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22CA83 CRC                   7D5510EE (2102726894)\n-22CA87 Compressed Size       000004C7 (1223)\n-22CA8B Uncompressed Size     00000DAE (3502)\n-22CA8F Filename Length       0036 (54)\n-22CA91 Extra Length          0000 (0)\n-22CA93 Comment Length        0000 (0)\n-22CA95 Disk Start            0000 (0)\n-22CA97 Int File Attributes   0000 (0)\n+22EA85 Compression Method    0008 (8) 'Deflated'\n+22EA87 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22EA8B CRC                   BE5FB3B5 (3193942965)\n+22EA8F Compressed Size       000002C9 (713)\n+22EA93 Uncompressed Size     00000604 (1540)\n+22EA97 Filename Length       003F (63)\n+22EA99 Extra Length          0000 (0)\n+22EA9B Comment Length        0000 (0)\n+22EA9D Disk Start            0000 (0)\n+22EA9F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22CA99 Ext File Attributes   00000000 (0)\n-22CA9D Local Header Offset   0012735A (1209178)\n-22CAA1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22EAA1 Ext File Attributes   00000000 (0)\n+22EAA5 Local Header Offset   00141485 (1315973)\n+22EAA9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22CAA1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22EAA9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22CAD7 CENTRAL HEADER #1142  02014B50 (33639248)\n-22CADB Created Zip Spec      14 (20) '2.0'\n-22CADC Created OS            00 (0) 'MS-DOS'\n-22CADD Extract Zip Spec      14 (20) '2.0'\n-22CADE Extract OS            00 (0) 'MS-DOS'\n-22CADF General Purpose Flag  0808 (2056)\n+22EAE8 CENTRAL HEADER #1142  02014B50 (33639248)\n+22EAEC Created Zip Spec      14 (20) '2.0'\n+22EAED Created OS            00 (0) 'MS-DOS'\n+22EAEE Extract Zip Spec      14 (20) '2.0'\n+22EAEF Extract OS            00 (0) 'MS-DOS'\n+22EAF0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22CAE1 Compression Method    0008 (8) 'Deflated'\n-22CAE3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22CAE7 CRC                   FC4D9CC7 (4232944839)\n-22CAEB Compressed Size       00000238 (568)\n-22CAEF Uncompressed Size     00000409 (1033)\n-22CAF3 Filename Length       0035 (53)\n-22CAF5 Extra Length          0000 (0)\n-22CAF7 Comment Length        0000 (0)\n-22CAF9 Disk Start            0000 (0)\n-22CAFB Int File Attributes   0000 (0)\n+22EAF2 Compression Method    0008 (8) 'Deflated'\n+22EAF4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22EAF8 CRC                   ED1E1920 (3978172704)\n+22EAFC Compressed Size       00000A47 (2631)\n+22EB00 Uncompressed Size     00002FC8 (12232)\n+22EB04 Filename Length       0036 (54)\n+22EB06 Extra Length          0000 (0)\n+22EB08 Comment Length        0000 (0)\n+22EB0A Disk Start            0000 (0)\n+22EB0C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22CAFD Ext File Attributes   00000000 (0)\n-22CB01 Local Header Offset   00127885 (1210501)\n-22CB05 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22EB0E Ext File Attributes   00000000 (0)\n+22EB12 Local Header Offset   001417BB (1316795)\n+22EB16 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22CB05: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22EB16: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22CB3A CENTRAL HEADER #1143  02014B50 (33639248)\n-22CB3E Created Zip Spec      14 (20) '2.0'\n-22CB3F Created OS            00 (0) 'MS-DOS'\n-22CB40 Extract Zip Spec      14 (20) '2.0'\n-22CB41 Extract OS            00 (0) 'MS-DOS'\n-22CB42 General Purpose Flag  0808 (2056)\n+22EB4C CENTRAL HEADER #1143  02014B50 (33639248)\n+22EB50 Created Zip Spec      14 (20) '2.0'\n+22EB51 Created OS            00 (0) 'MS-DOS'\n+22EB52 Extract Zip Spec      14 (20) '2.0'\n+22EB53 Extract OS            00 (0) 'MS-DOS'\n+22EB54 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22CB44 Compression Method    0008 (8) 'Deflated'\n-22CB46 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22CB4A CRC                   00000000 (0)\n-22CB4E Compressed Size       00000002 (2)\n-22CB52 Uncompressed Size     00000000 (0)\n-22CB56 Filename Length       001B (27)\n-22CB58 Extra Length          0000 (0)\n-22CB5A Comment Length        0000 (0)\n-22CB5C Disk Start            0000 (0)\n-22CB5E Int File Attributes   0000 (0)\n+22EB56 Compression Method    0008 (8) 'Deflated'\n+22EB58 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22EB5C CRC                   9286ACC7 (2458299591)\n+22EB60 Compressed Size       00000331 (817)\n+22EB64 Uncompressed Size     000007EB (2027)\n+22EB68 Filename Length       003D (61)\n+22EB6A Extra Length          0000 (0)\n+22EB6C Comment Length        0000 (0)\n+22EB6E Disk Start            0000 (0)\n+22EB70 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22CB60 Ext File Attributes   00000000 (0)\n-22CB64 Local Header Offset   00127B20 (1211168)\n-22CB68 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22EB72 Ext File Attributes   00000000 (0)\n+22EB76 Local Header Offset   00142266 (1319526)\n+22EB7A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22CB68: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22EB7A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22CB83 CENTRAL HEADER #1144  02014B50 (33639248)\n-22CB87 Created Zip Spec      14 (20) '2.0'\n-22CB88 Created OS            00 (0) 'MS-DOS'\n-22CB89 Extract Zip Spec      14 (20) '2.0'\n-22CB8A Extract OS            00 (0) 'MS-DOS'\n-22CB8B General Purpose Flag  0808 (2056)\n+22EBB7 CENTRAL HEADER #1144  02014B50 (33639248)\n+22EBBB Created Zip Spec      14 (20) '2.0'\n+22EBBC Created OS            00 (0) 'MS-DOS'\n+22EBBD Extract Zip Spec      14 (20) '2.0'\n+22EBBE Extract OS            00 (0) 'MS-DOS'\n+22EBBF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22CB8D Compression Method    0008 (8) 'Deflated'\n-22CB8F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22CB93 CRC                   E40DEA4B (3826117195)\n-22CB97 Compressed Size       000004B6 (1206)\n-22CB9B Uncompressed Size     00000CAE (3246)\n-22CB9F Filename Length       0034 (52)\n-22CBA1 Extra Length          0000 (0)\n-22CBA3 Comment Length        0000 (0)\n-22CBA5 Disk Start            0000 (0)\n-22CBA7 Int File Attributes   0000 (0)\n+22EBC1 Compression Method    0008 (8) 'Deflated'\n+22EBC3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22EBC7 CRC                   8EF20CD3 (2398227667)\n+22EBCB Compressed Size       0000123B (4667)\n+22EBCF Uncompressed Size     00005410 (21520)\n+22EBD3 Filename Length       003E (62)\n+22EBD5 Extra Length          0000 (0)\n+22EBD7 Comment Length        0000 (0)\n+22EBD9 Disk Start            0000 (0)\n+22EBDB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22CBA9 Ext File Attributes   00000000 (0)\n-22CBAD Local Header Offset   00127B6B (1211243)\n-22CBB1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22EBDD Ext File Attributes   00000000 (0)\n+22EBE1 Local Header Offset   00142602 (1320450)\n+22EBE5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22CBB1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22EBE5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22CBE5 CENTRAL HEADER #1145  02014B50 (33639248)\n-22CBE9 Created Zip Spec      14 (20) '2.0'\n-22CBEA Created OS            00 (0) 'MS-DOS'\n-22CBEB Extract Zip Spec      14 (20) '2.0'\n-22CBEC Extract OS            00 (0) 'MS-DOS'\n-22CBED General Purpose Flag  0808 (2056)\n+22EC23 CENTRAL HEADER #1145  02014B50 (33639248)\n+22EC27 Created Zip Spec      14 (20) '2.0'\n+22EC28 Created OS            00 (0) 'MS-DOS'\n+22EC29 Extract Zip Spec      14 (20) '2.0'\n+22EC2A Extract OS            00 (0) 'MS-DOS'\n+22EC2B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22CBEF Compression Method    0008 (8) 'Deflated'\n-22CBF1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22CBF5 CRC                   7B8AE3FF (2072699903)\n-22CBF9 Compressed Size       00000662 (1634)\n-22CBFD Uncompressed Size     000012F0 (4848)\n-22CC01 Filename Length       0034 (52)\n-22CC03 Extra Length          0000 (0)\n-22CC05 Comment Length        0000 (0)\n-22CC07 Disk Start            0000 (0)\n-22CC09 Int File Attributes   0000 (0)\n+22EC2D Compression Method    0008 (8) 'Deflated'\n+22EC2F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22EC33 CRC                   82D7146C (2195133548)\n+22EC37 Compressed Size       00000C35 (3125)\n+22EC3B Uncompressed Size     00002DE5 (11749)\n+22EC3F Filename Length       0047 (71)\n+22EC41 Extra Length          0000 (0)\n+22EC43 Comment Length        0000 (0)\n+22EC45 Disk Start            0000 (0)\n+22EC47 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22CC0B Ext File Attributes   00000000 (0)\n-22CC0F Local Header Offset   00128083 (1212547)\n-22CC13 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22EC49 Ext File Attributes   00000000 (0)\n+22EC4D Local Header Offset   001438A9 (1325225)\n+22EC51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22CC13: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22EC51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22CC47 CENTRAL HEADER #1146  02014B50 (33639248)\n-22CC4B Created Zip Spec      14 (20) '2.0'\n-22CC4C Created OS            00 (0) 'MS-DOS'\n-22CC4D Extract Zip Spec      14 (20) '2.0'\n-22CC4E Extract OS            00 (0) 'MS-DOS'\n-22CC4F General Purpose Flag  0808 (2056)\n+22EC98 CENTRAL HEADER #1146  02014B50 (33639248)\n+22EC9C Created Zip Spec      14 (20) '2.0'\n+22EC9D Created OS            00 (0) 'MS-DOS'\n+22EC9E Extract Zip Spec      14 (20) '2.0'\n+22EC9F Extract OS            00 (0) 'MS-DOS'\n+22ECA0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22CC51 Compression Method    0008 (8) 'Deflated'\n-22CC53 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22CC57 CRC                   19702ABA (426781370)\n-22CC5B Compressed Size       00000542 (1346)\n-22CC5F Uncompressed Size     00000F11 (3857)\n-22CC63 Filename Length       0038 (56)\n-22CC65 Extra Length          0000 (0)\n-22CC67 Comment Length        0000 (0)\n-22CC69 Disk Start            0000 (0)\n-22CC6B Int File Attributes   0000 (0)\n+22ECA2 Compression Method    0008 (8) 'Deflated'\n+22ECA4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22ECA8 CRC                   988327A2 (2558732194)\n+22ECAC Compressed Size       000002FF (767)\n+22ECB0 Uncompressed Size     000006B3 (1715)\n+22ECB4 Filename Length       0045 (69)\n+22ECB6 Extra Length          0000 (0)\n+22ECB8 Comment Length        0000 (0)\n+22ECBA Disk Start            0000 (0)\n+22ECBC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22CC6D Ext File Attributes   00000000 (0)\n-22CC71 Local Header Offset   00128747 (1214279)\n-22CC75 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22ECBE Ext File Attributes   00000000 (0)\n+22ECC2 Local Header Offset   00144553 (1328467)\n+22ECC6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22CC75: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22ECC6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22CCAD CENTRAL HEADER #1147  02014B50 (33639248)\n-22CCB1 Created Zip Spec      14 (20) '2.0'\n-22CCB2 Created OS            00 (0) 'MS-DOS'\n-22CCB3 Extract Zip Spec      14 (20) '2.0'\n-22CCB4 Extract OS            00 (0) 'MS-DOS'\n-22CCB5 General Purpose Flag  0808 (2056)\n+22ED0B CENTRAL HEADER #1147  02014B50 (33639248)\n+22ED0F Created Zip Spec      14 (20) '2.0'\n+22ED10 Created OS            00 (0) 'MS-DOS'\n+22ED11 Extract Zip Spec      14 (20) '2.0'\n+22ED12 Extract OS            00 (0) 'MS-DOS'\n+22ED13 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22CCB7 Compression Method    0008 (8) 'Deflated'\n-22CCB9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22CCBD CRC                   00000000 (0)\n-22CCC1 Compressed Size       00000002 (2)\n-22CCC5 Uncompressed Size     00000000 (0)\n-22CCC9 Filename Length       0025 (37)\n-22CCCB Extra Length          0000 (0)\n-22CCCD Comment Length        0000 (0)\n-22CCCF Disk Start            0000 (0)\n-22CCD1 Int File Attributes   0000 (0)\n+22ED15 Compression Method    0008 (8) 'Deflated'\n+22ED17 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22ED1B CRC                   756EE014 (1970200596)\n+22ED1F Compressed Size       000004B5 (1205)\n+22ED23 Uncompressed Size     00000E28 (3624)\n+22ED27 Filename Length       0035 (53)\n+22ED29 Extra Length          0000 (0)\n+22ED2B Comment Length        0000 (0)\n+22ED2D Disk Start            0000 (0)\n+22ED2F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22CCD3 Ext File Attributes   00000000 (0)\n-22CCD7 Local Header Offset   00128CEF (1215727)\n-22CCDB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22ED31 Ext File Attributes   00000000 (0)\n+22ED35 Local Header Offset   001448C5 (1329349)\n+22ED39 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22CCDB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22ED39: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22CD00 CENTRAL HEADER #1148  02014B50 (33639248)\n-22CD04 Created Zip Spec      14 (20) '2.0'\n-22CD05 Created OS            00 (0) 'MS-DOS'\n-22CD06 Extract Zip Spec      14 (20) '2.0'\n-22CD07 Extract OS            00 (0) 'MS-DOS'\n-22CD08 General Purpose Flag  0808 (2056)\n+22ED6E CENTRAL HEADER #1148  02014B50 (33639248)\n+22ED72 Created Zip Spec      14 (20) '2.0'\n+22ED73 Created OS            00 (0) 'MS-DOS'\n+22ED74 Extract Zip Spec      14 (20) '2.0'\n+22ED75 Extract OS            00 (0) 'MS-DOS'\n+22ED76 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22CD0A Compression Method    0008 (8) 'Deflated'\n-22CD0C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22CD10 CRC                   763975AF (1983477167)\n-22CD14 Compressed Size       000003C2 (962)\n-22CD18 Uncompressed Size     000008BC (2236)\n-22CD1C Filename Length       003F (63)\n-22CD1E Extra Length          0000 (0)\n-22CD20 Comment Length        0000 (0)\n-22CD22 Disk Start            0000 (0)\n-22CD24 Int File Attributes   0000 (0)\n+22ED78 Compression Method    0008 (8) 'Deflated'\n+22ED7A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22ED7E CRC                   3557220F (894902799)\n+22ED82 Compressed Size       000002BE (702)\n+22ED86 Uncompressed Size     000005FC (1532)\n+22ED8A Filename Length       003F (63)\n+22ED8C Extra Length          0000 (0)\n+22ED8E Comment Length        0000 (0)\n+22ED90 Disk Start            0000 (0)\n+22ED92 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22CD26 Ext File Attributes   00000000 (0)\n-22CD2A Local Header Offset   00128D44 (1215812)\n-22CD2E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22ED94 Ext File Attributes   00000000 (0)\n+22ED98 Local Header Offset   00144DDD (1330653)\n+22ED9C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22CD2E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22ED9C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22CD6D CENTRAL HEADER #1149  02014B50 (33639248)\n-22CD71 Created Zip Spec      14 (20) '2.0'\n-22CD72 Created OS            00 (0) 'MS-DOS'\n-22CD73 Extract Zip Spec      14 (20) '2.0'\n-22CD74 Extract OS            00 (0) 'MS-DOS'\n-22CD75 General Purpose Flag  0808 (2056)\n+22EDDB CENTRAL HEADER #1149  02014B50 (33639248)\n+22EDDF Created Zip Spec      14 (20) '2.0'\n+22EDE0 Created OS            00 (0) 'MS-DOS'\n+22EDE1 Extract Zip Spec      14 (20) '2.0'\n+22EDE2 Extract OS            00 (0) 'MS-DOS'\n+22EDE3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22CD77 Compression Method    0008 (8) 'Deflated'\n-22CD79 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22CD7D CRC                   00000000 (0)\n-22CD81 Compressed Size       00000002 (2)\n-22CD85 Uncompressed Size     00000000 (0)\n-22CD89 Filename Length       001F (31)\n-22CD8B Extra Length          0000 (0)\n-22CD8D Comment Length        0000 (0)\n-22CD8F Disk Start            0000 (0)\n-22CD91 Int File Attributes   0000 (0)\n+22EDE5 Compression Method    0008 (8) 'Deflated'\n+22EDE7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22EDEB CRC                   00000000 (0)\n+22EDEF Compressed Size       00000002 (2)\n+22EDF3 Uncompressed Size     00000000 (0)\n+22EDF7 Filename Length       0027 (39)\n+22EDF9 Extra Length          0000 (0)\n+22EDFB Comment Length        0000 (0)\n+22EDFD Disk Start            0000 (0)\n+22EDFF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22CD93 Ext File Attributes   00000000 (0)\n-22CD97 Local Header Offset   00129173 (1216883)\n-22CD9B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22EE01 Ext File Attributes   00000000 (0)\n+22EE05 Local Header Offset   00145108 (1331464)\n+22EE09 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22CD9B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22EE09: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22CDBA CENTRAL HEADER #1150  02014B50 (33639248)\n-22CDBE Created Zip Spec      14 (20) '2.0'\n-22CDBF Created OS            00 (0) 'MS-DOS'\n-22CDC0 Extract Zip Spec      14 (20) '2.0'\n-22CDC1 Extract OS            00 (0) 'MS-DOS'\n-22CDC2 General Purpose Flag  0808 (2056)\n+22EE30 CENTRAL HEADER #1150  02014B50 (33639248)\n+22EE34 Created Zip Spec      14 (20) '2.0'\n+22EE35 Created OS            00 (0) 'MS-DOS'\n+22EE36 Extract Zip Spec      14 (20) '2.0'\n+22EE37 Extract OS            00 (0) 'MS-DOS'\n+22EE38 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22CDC4 Compression Method    0008 (8) 'Deflated'\n-22CDC6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22CDCA CRC                   776F6B16 (2003790614)\n-22CDCE Compressed Size       00000391 (913)\n-22CDD2 Uncompressed Size     0000084C (2124)\n-22CDD6 Filename Length       0033 (51)\n-22CDD8 Extra Length          0000 (0)\n-22CDDA Comment Length        0000 (0)\n-22CDDC Disk Start            0000 (0)\n-22CDDE Int File Attributes   0000 (0)\n+22EE3A Compression Method    0008 (8) 'Deflated'\n+22EE3C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22EE40 CRC                   B96C1EAA (3110870698)\n+22EE44 Compressed Size       00000285 (645)\n+22EE48 Uncompressed Size     00000517 (1303)\n+22EE4C Filename Length       004A (74)\n+22EE4E Extra Length          0000 (0)\n+22EE50 Comment Length        0000 (0)\n+22EE52 Disk Start            0000 (0)\n+22EE54 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22CDE0 Ext File Attributes   00000000 (0)\n-22CDE4 Local Header Offset   001291C2 (1216962)\n-22CDE8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22EE56 Ext File Attributes   00000000 (0)\n+22EE5A Local Header Offset   0014515F (1331551)\n+22EE5E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22CDE8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22EE5E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22CE1B CENTRAL HEADER #1151  02014B50 (33639248)\n-22CE1F Created Zip Spec      14 (20) '2.0'\n-22CE20 Created OS            00 (0) 'MS-DOS'\n-22CE21 Extract Zip Spec      14 (20) '2.0'\n-22CE22 Extract OS            00 (0) 'MS-DOS'\n-22CE23 General Purpose Flag  0808 (2056)\n+22EEA8 CENTRAL HEADER #1151  02014B50 (33639248)\n+22EEAC Created Zip Spec      14 (20) '2.0'\n+22EEAD Created OS            00 (0) 'MS-DOS'\n+22EEAE Extract Zip Spec      14 (20) '2.0'\n+22EEAF Extract OS            00 (0) 'MS-DOS'\n+22EEB0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22CE25 Compression Method    0008 (8) 'Deflated'\n-22CE27 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22CE2B CRC                   00000000 (0)\n-22CE2F Compressed Size       00000002 (2)\n-22CE33 Uncompressed Size     00000000 (0)\n-22CE37 Filename Length       0023 (35)\n-22CE39 Extra Length          0000 (0)\n-22CE3B Comment Length        0000 (0)\n-22CE3D Disk Start            0000 (0)\n-22CE3F Int File Attributes   0000 (0)\n+22EEB2 Compression Method    0008 (8) 'Deflated'\n+22EEB4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22EEB8 CRC                   7934C791 (2033502097)\n+22EEBC Compressed Size       00000287 (647)\n+22EEC0 Uncompressed Size     0000051C (1308)\n+22EEC4 Filename Length       004B (75)\n+22EEC6 Extra Length          0000 (0)\n+22EEC8 Comment Length        0000 (0)\n+22EECA Disk Start            0000 (0)\n+22EECC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22CE41 Ext File Attributes   00000000 (0)\n-22CE45 Local Header Offset   001295B4 (1217972)\n-22CE49 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22EECE Ext File Attributes   00000000 (0)\n+22EED2 Local Header Offset   0014545C (1332316)\n+22EED6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22CE49: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22EED6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22CE6C CENTRAL HEADER #1152  02014B50 (33639248)\n-22CE70 Created Zip Spec      14 (20) '2.0'\n-22CE71 Created OS            00 (0) 'MS-DOS'\n-22CE72 Extract Zip Spec      14 (20) '2.0'\n-22CE73 Extract OS            00 (0) 'MS-DOS'\n-22CE74 General Purpose Flag  0808 (2056)\n+22EF21 CENTRAL HEADER #1152  02014B50 (33639248)\n+22EF25 Created Zip Spec      14 (20) '2.0'\n+22EF26 Created OS            00 (0) 'MS-DOS'\n+22EF27 Extract Zip Spec      14 (20) '2.0'\n+22EF28 Extract OS            00 (0) 'MS-DOS'\n+22EF29 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22CE76 Compression Method    0008 (8) 'Deflated'\n-22CE78 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22CE7C CRC                   A1EB5EED (2716557037)\n-22CE80 Compressed Size       000006D3 (1747)\n-22CE84 Uncompressed Size     000016D2 (5842)\n-22CE88 Filename Length       003F (63)\n-22CE8A Extra Length          0000 (0)\n-22CE8C Comment Length        0000 (0)\n-22CE8E Disk Start            0000 (0)\n-22CE90 Int File Attributes   0000 (0)\n+22EF2B Compression Method    0008 (8) 'Deflated'\n+22EF2D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22EF31 CRC                   BF357544 (3207951684)\n+22EF35 Compressed Size       00000365 (869)\n+22EF39 Uncompressed Size     000008B2 (2226)\n+22EF3D Filename Length       0041 (65)\n+22EF3F Extra Length          0000 (0)\n+22EF41 Comment Length        0000 (0)\n+22EF43 Disk Start            0000 (0)\n+22EF45 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22CE92 Ext File Attributes   00000000 (0)\n-22CE96 Local Header Offset   00129607 (1218055)\n-22CE9A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22EF47 Ext File Attributes   00000000 (0)\n+22EF4B Local Header Offset   0014575C (1333084)\n+22EF4F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22CE9A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22EF4F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22CED9 CENTRAL HEADER #1153  02014B50 (33639248)\n-22CEDD Created Zip Spec      14 (20) '2.0'\n-22CEDE Created OS            00 (0) 'MS-DOS'\n-22CEDF Extract Zip Spec      14 (20) '2.0'\n-22CEE0 Extract OS            00 (0) 'MS-DOS'\n-22CEE1 General Purpose Flag  0808 (2056)\n+22EF90 CENTRAL HEADER #1153  02014B50 (33639248)\n+22EF94 Created Zip Spec      14 (20) '2.0'\n+22EF95 Created OS            00 (0) 'MS-DOS'\n+22EF96 Extract Zip Spec      14 (20) '2.0'\n+22EF97 Extract OS            00 (0) 'MS-DOS'\n+22EF98 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22CEE3 Compression Method    0008 (8) 'Deflated'\n-22CEE5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22CEE9 CRC                   71347931 (1899264305)\n-22CEED Compressed Size       00000939 (2361)\n-22CEF1 Uncompressed Size     00001EE7 (7911)\n-22CEF5 Filename Length       002F (47)\n-22CEF7 Extra Length          0000 (0)\n-22CEF9 Comment Length        0000 (0)\n-22CEFB Disk Start            0000 (0)\n-22CEFD Int File Attributes   0000 (0)\n+22EF9A Compression Method    0008 (8) 'Deflated'\n+22EF9C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22EFA0 CRC                   59957DEF (1502969327)\n+22EFA4 Compressed Size       00000311 (785)\n+22EFA8 Uncompressed Size     000006AB (1707)\n+22EFAC Filename Length       004A (74)\n+22EFAE Extra Length          0000 (0)\n+22EFB0 Comment Length        0000 (0)\n+22EFB2 Disk Start            0000 (0)\n+22EFB4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22CEFF Ext File Attributes   00000000 (0)\n-22CF03 Local Header Offset   00129D47 (1219911)\n-22CF07 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22EFB6 Ext File Attributes   00000000 (0)\n+22EFBA Local Header Offset   00145B30 (1334064)\n+22EFBE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22CF07: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22EFBE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22CF36 CENTRAL HEADER #1154  02014B50 (33639248)\n-22CF3A Created Zip Spec      14 (20) '2.0'\n-22CF3B Created OS            00 (0) 'MS-DOS'\n-22CF3C Extract Zip Spec      14 (20) '2.0'\n-22CF3D Extract OS            00 (0) 'MS-DOS'\n-22CF3E General Purpose Flag  0808 (2056)\n+22F008 CENTRAL HEADER #1154  02014B50 (33639248)\n+22F00C Created Zip Spec      14 (20) '2.0'\n+22F00D Created OS            00 (0) 'MS-DOS'\n+22F00E Extract Zip Spec      14 (20) '2.0'\n+22F00F Extract OS            00 (0) 'MS-DOS'\n+22F010 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22CF40 Compression Method    0008 (8) 'Deflated'\n-22CF42 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22CF46 CRC                   E459791A (3831068954)\n-22CF4A Compressed Size       00000B02 (2818)\n-22CF4E Uncompressed Size     00002B55 (11093)\n-22CF52 Filename Length       002D (45)\n-22CF54 Extra Length          0000 (0)\n-22CF56 Comment Length        0000 (0)\n-22CF58 Disk Start            0000 (0)\n-22CF5A Int File Attributes   0000 (0)\n+22F012 Compression Method    0008 (8) 'Deflated'\n+22F014 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F018 CRC                   30CE65FD (818832893)\n+22F01C Compressed Size       00000298 (664)\n+22F020 Uncompressed Size     00000545 (1349)\n+22F024 Filename Length       004C (76)\n+22F026 Extra Length          0000 (0)\n+22F028 Comment Length        0000 (0)\n+22F02A Disk Start            0000 (0)\n+22F02C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22CF5C Ext File Attributes   00000000 (0)\n-22CF60 Local Header Offset   0012A6DD (1222365)\n-22CF64 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F02E Ext File Attributes   00000000 (0)\n+22F032 Local Header Offset   00145EB9 (1334969)\n+22F036 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22CF64: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F036: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22CF91 CENTRAL HEADER #1155  02014B50 (33639248)\n-22CF95 Created Zip Spec      14 (20) '2.0'\n-22CF96 Created OS            00 (0) 'MS-DOS'\n-22CF97 Extract Zip Spec      14 (20) '2.0'\n-22CF98 Extract OS            00 (0) 'MS-DOS'\n-22CF99 General Purpose Flag  0808 (2056)\n+22F082 CENTRAL HEADER #1155  02014B50 (33639248)\n+22F086 Created Zip Spec      14 (20) '2.0'\n+22F087 Created OS            00 (0) 'MS-DOS'\n+22F088 Extract Zip Spec      14 (20) '2.0'\n+22F089 Extract OS            00 (0) 'MS-DOS'\n+22F08A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22CF9B Compression Method    0008 (8) 'Deflated'\n-22CF9D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22CFA1 CRC                   80C30D3D (2160266557)\n-22CFA5 Compressed Size       000002F8 (760)\n-22CFA9 Uncompressed Size     0000065E (1630)\n-22CFAD Filename Length       002E (46)\n-22CFAF Extra Length          0000 (0)\n-22CFB1 Comment Length        0000 (0)\n-22CFB3 Disk Start            0000 (0)\n-22CFB5 Int File Attributes   0000 (0)\n+22F08C Compression Method    0008 (8) 'Deflated'\n+22F08E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F092 CRC                   C145F19E (3242586526)\n+22F096 Compressed Size       0000029B (667)\n+22F09A Uncompressed Size     0000054B (1355)\n+22F09E Filename Length       004D (77)\n+22F0A0 Extra Length          0000 (0)\n+22F0A2 Comment Length        0000 (0)\n+22F0A4 Disk Start            0000 (0)\n+22F0A6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22CFB7 Ext File Attributes   00000000 (0)\n-22CFBB Local Header Offset   0012B23A (1225274)\n-22CFBF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F0A8 Ext File Attributes   00000000 (0)\n+22F0AC Local Header Offset   001461CB (1335755)\n+22F0B0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22CFBF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F0B0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22CFED CENTRAL HEADER #1156  02014B50 (33639248)\n-22CFF1 Created Zip Spec      14 (20) '2.0'\n-22CFF2 Created OS            00 (0) 'MS-DOS'\n-22CFF3 Extract Zip Spec      14 (20) '2.0'\n-22CFF4 Extract OS            00 (0) 'MS-DOS'\n-22CFF5 General Purpose Flag  0808 (2056)\n+22F0FD CENTRAL HEADER #1156  02014B50 (33639248)\n+22F101 Created Zip Spec      14 (20) '2.0'\n+22F102 Created OS            00 (0) 'MS-DOS'\n+22F103 Extract Zip Spec      14 (20) '2.0'\n+22F104 Extract OS            00 (0) 'MS-DOS'\n+22F105 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22CFF7 Compression Method    0008 (8) 'Deflated'\n-22CFF9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22CFFD CRC                   613BF150 (1631318352)\n-22D001 Compressed Size       0000097B (2427)\n-22D005 Uncompressed Size     00002B36 (11062)\n-22D009 Filename Length       002A (42)\n-22D00B Extra Length          0000 (0)\n-22D00D Comment Length        0000 (0)\n-22D00F Disk Start            0000 (0)\n-22D011 Int File Attributes   0000 (0)\n+22F107 Compression Method    0008 (8) 'Deflated'\n+22F109 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F10D CRC                   511C2CC7 (1360800967)\n+22F111 Compressed Size       000002D1 (721)\n+22F115 Uncompressed Size     000006A4 (1700)\n+22F119 Filename Length       0040 (64)\n+22F11B Extra Length          0000 (0)\n+22F11D Comment Length        0000 (0)\n+22F11F Disk Start            0000 (0)\n+22F121 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D013 Ext File Attributes   00000000 (0)\n-22D017 Local Header Offset   0012B58E (1226126)\n-22D01B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F123 Ext File Attributes   00000000 (0)\n+22F127 Local Header Offset   001464E1 (1336545)\n+22F12B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D01B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F12B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D045 CENTRAL HEADER #1157  02014B50 (33639248)\n-22D049 Created Zip Spec      14 (20) '2.0'\n-22D04A Created OS            00 (0) 'MS-DOS'\n-22D04B Extract Zip Spec      14 (20) '2.0'\n-22D04C Extract OS            00 (0) 'MS-DOS'\n-22D04D General Purpose Flag  0808 (2056)\n+22F16B CENTRAL HEADER #1157  02014B50 (33639248)\n+22F16F Created Zip Spec      14 (20) '2.0'\n+22F170 Created OS            00 (0) 'MS-DOS'\n+22F171 Extract Zip Spec      14 (20) '2.0'\n+22F172 Extract OS            00 (0) 'MS-DOS'\n+22F173 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D04F Compression Method    0008 (8) 'Deflated'\n-22D051 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D055 CRC                   B7F8FDDA (3086548442)\n-22D059 Compressed Size       00000EEE (3822)\n-22D05D Uncompressed Size     00003E47 (15943)\n-22D061 Filename Length       003D (61)\n-22D063 Extra Length          0000 (0)\n-22D065 Comment Length        0000 (0)\n-22D067 Disk Start            0000 (0)\n-22D069 Int File Attributes   0000 (0)\n+22F175 Compression Method    0008 (8) 'Deflated'\n+22F177 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F17B CRC                   B5EBBEE9 (3052125929)\n+22F17F Compressed Size       00000298 (664)\n+22F183 Uncompressed Size     00000569 (1385)\n+22F187 Filename Length       004D (77)\n+22F189 Extra Length          0000 (0)\n+22F18B Comment Length        0000 (0)\n+22F18D Disk Start            0000 (0)\n+22F18F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D06B Ext File Attributes   00000000 (0)\n-22D06F Local Header Offset   0012BF61 (1228641)\n-22D073 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F191 Ext File Attributes   00000000 (0)\n+22F195 Local Header Offset   00146820 (1337376)\n+22F199 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D073: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F199: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D0B0 CENTRAL HEADER #1158  02014B50 (33639248)\n-22D0B4 Created Zip Spec      14 (20) '2.0'\n-22D0B5 Created OS            00 (0) 'MS-DOS'\n-22D0B6 Extract Zip Spec      14 (20) '2.0'\n-22D0B7 Extract OS            00 (0) 'MS-DOS'\n-22D0B8 General Purpose Flag  0808 (2056)\n+22F1E6 CENTRAL HEADER #1158  02014B50 (33639248)\n+22F1EA Created Zip Spec      14 (20) '2.0'\n+22F1EB Created OS            00 (0) 'MS-DOS'\n+22F1EC Extract Zip Spec      14 (20) '2.0'\n+22F1ED Extract OS            00 (0) 'MS-DOS'\n+22F1EE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D0BA Compression Method    0008 (8) 'Deflated'\n-22D0BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D0C0 CRC                   03D1B931 (64076081)\n-22D0C4 Compressed Size       00000748 (1864)\n-22D0C8 Uncompressed Size     000018E3 (6371)\n-22D0CC Filename Length       003E (62)\n-22D0CE Extra Length          0000 (0)\n-22D0D0 Comment Length        0000 (0)\n-22D0D2 Disk Start            0000 (0)\n-22D0D4 Int File Attributes   0000 (0)\n+22F1F0 Compression Method    0008 (8) 'Deflated'\n+22F1F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F1F6 CRC                   31557B6E (827685742)\n+22F1FA Compressed Size       0000029C (668)\n+22F1FE Uncompressed Size     00000571 (1393)\n+22F202 Filename Length       004F (79)\n+22F204 Extra Length          0000 (0)\n+22F206 Comment Length        0000 (0)\n+22F208 Disk Start            0000 (0)\n+22F20A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D0D6 Ext File Attributes   00000000 (0)\n-22D0DA Local Header Offset   0012CEBA (1232570)\n-22D0DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F20C Ext File Attributes   00000000 (0)\n+22F210 Local Header Offset   00146B33 (1338163)\n+22F214 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D0DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F214: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D11C CENTRAL HEADER #1159  02014B50 (33639248)\n-22D120 Created Zip Spec      14 (20) '2.0'\n-22D121 Created OS            00 (0) 'MS-DOS'\n-22D122 Extract Zip Spec      14 (20) '2.0'\n-22D123 Extract OS            00 (0) 'MS-DOS'\n-22D124 General Purpose Flag  0808 (2056)\n+22F263 CENTRAL HEADER #1159  02014B50 (33639248)\n+22F267 Created Zip Spec      14 (20) '2.0'\n+22F268 Created OS            00 (0) 'MS-DOS'\n+22F269 Extract Zip Spec      14 (20) '2.0'\n+22F26A Extract OS            00 (0) 'MS-DOS'\n+22F26B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D126 Compression Method    0008 (8) 'Deflated'\n-22D128 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D12C CRC                   F93BB070 (4181438576)\n-22D130 Compressed Size       000003F3 (1011)\n-22D134 Uncompressed Size     000008B8 (2232)\n-22D138 Filename Length       0032 (50)\n-22D13A Extra Length          0000 (0)\n-22D13C Comment Length        0000 (0)\n-22D13E Disk Start            0000 (0)\n-22D140 Int File Attributes   0000 (0)\n+22F26D Compression Method    0008 (8) 'Deflated'\n+22F26F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F273 CRC                   9E00A28D (2650841741)\n+22F277 Compressed Size       00000295 (661)\n+22F27B Uncompressed Size     00000562 (1378)\n+22F27F Filename Length       004A (74)\n+22F281 Extra Length          0000 (0)\n+22F283 Comment Length        0000 (0)\n+22F285 Disk Start            0000 (0)\n+22F287 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D142 Ext File Attributes   00000000 (0)\n-22D146 Local Header Offset   0012D66E (1234542)\n-22D14A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F289 Ext File Attributes   00000000 (0)\n+22F28D Local Header Offset   00146E4C (1338956)\n+22F291 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D14A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F291: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D17C CENTRAL HEADER #1160  02014B50 (33639248)\n-22D180 Created Zip Spec      14 (20) '2.0'\n-22D181 Created OS            00 (0) 'MS-DOS'\n-22D182 Extract Zip Spec      14 (20) '2.0'\n-22D183 Extract OS            00 (0) 'MS-DOS'\n-22D184 General Purpose Flag  0808 (2056)\n+22F2DB CENTRAL HEADER #1160  02014B50 (33639248)\n+22F2DF Created Zip Spec      14 (20) '2.0'\n+22F2E0 Created OS            00 (0) 'MS-DOS'\n+22F2E1 Extract Zip Spec      14 (20) '2.0'\n+22F2E2 Extract OS            00 (0) 'MS-DOS'\n+22F2E3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D186 Compression Method    0008 (8) 'Deflated'\n-22D188 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D18C CRC                   C7D35A4B (3352517195)\n-22D190 Compressed Size       000008E7 (2279)\n-22D194 Uncompressed Size     00001F36 (7990)\n-22D198 Filename Length       0040 (64)\n-22D19A Extra Length          0000 (0)\n-22D19C Comment Length        0000 (0)\n-22D19E Disk Start            0000 (0)\n-22D1A0 Int File Attributes   0000 (0)\n+22F2E5 Compression Method    0008 (8) 'Deflated'\n+22F2E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F2EB CRC                   B8F3B221 (3102978593)\n+22F2EF Compressed Size       000002A0 (672)\n+22F2F3 Uncompressed Size     00000588 (1416)\n+22F2F7 Filename Length       004C (76)\n+22F2F9 Extra Length          0000 (0)\n+22F2FB Comment Length        0000 (0)\n+22F2FD Disk Start            0000 (0)\n+22F2FF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D1A2 Ext File Attributes   00000000 (0)\n-22D1A6 Local Header Offset   0012DAC1 (1235649)\n-22D1AA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F301 Ext File Attributes   00000000 (0)\n+22F305 Local Header Offset   00147159 (1339737)\n+22F309 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D1AA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F309: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D1EA CENTRAL HEADER #1161  02014B50 (33639248)\n-22D1EE Created Zip Spec      14 (20) '2.0'\n-22D1EF Created OS            00 (0) 'MS-DOS'\n-22D1F0 Extract Zip Spec      14 (20) '2.0'\n-22D1F1 Extract OS            00 (0) 'MS-DOS'\n-22D1F2 General Purpose Flag  0808 (2056)\n+22F355 CENTRAL HEADER #1161  02014B50 (33639248)\n+22F359 Created Zip Spec      14 (20) '2.0'\n+22F35A Created OS            00 (0) 'MS-DOS'\n+22F35B Extract Zip Spec      14 (20) '2.0'\n+22F35C Extract OS            00 (0) 'MS-DOS'\n+22F35D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D1F4 Compression Method    0008 (8) 'Deflated'\n-22D1F6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D1FA CRC                   D012E5FC (3490899452)\n-22D1FE Compressed Size       000007FD (2045)\n-22D202 Uncompressed Size     00001BA0 (7072)\n-22D206 Filename Length       003C (60)\n-22D208 Extra Length          0000 (0)\n-22D20A Comment Length        0000 (0)\n-22D20C Disk Start            0000 (0)\n-22D20E Int File Attributes   0000 (0)\n+22F35F Compression Method    0008 (8) 'Deflated'\n+22F361 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F365 CRC                   A03840DB (2688041179)\n+22F369 Compressed Size       00000379 (889)\n+22F36D Uncompressed Size     000008E6 (2278)\n+22F371 Filename Length       0048 (72)\n+22F373 Extra Length          0000 (0)\n+22F375 Comment Length        0000 (0)\n+22F377 Disk Start            0000 (0)\n+22F379 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D210 Ext File Attributes   00000000 (0)\n-22D214 Local Header Offset   0012E416 (1238038)\n-22D218 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F37B Ext File Attributes   00000000 (0)\n+22F37F Local Header Offset   00147473 (1340531)\n+22F383 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D218: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F383: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D254 CENTRAL HEADER #1162  02014B50 (33639248)\n-22D258 Created Zip Spec      14 (20) '2.0'\n-22D259 Created OS            00 (0) 'MS-DOS'\n-22D25A Extract Zip Spec      14 (20) '2.0'\n-22D25B Extract OS            00 (0) 'MS-DOS'\n-22D25C General Purpose Flag  0808 (2056)\n+22F3CB CENTRAL HEADER #1162  02014B50 (33639248)\n+22F3CF Created Zip Spec      14 (20) '2.0'\n+22F3D0 Created OS            00 (0) 'MS-DOS'\n+22F3D1 Extract Zip Spec      14 (20) '2.0'\n+22F3D2 Extract OS            00 (0) 'MS-DOS'\n+22F3D3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D25E Compression Method    0008 (8) 'Deflated'\n-22D260 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D264 CRC                   A6D38CE4 (2798882020)\n-22D268 Compressed Size       00000A39 (2617)\n-22D26C Uncompressed Size     00002AE7 (10983)\n-22D270 Filename Length       0033 (51)\n-22D272 Extra Length          0000 (0)\n-22D274 Comment Length        0000 (0)\n-22D276 Disk Start            0000 (0)\n-22D278 Int File Attributes   0000 (0)\n+22F3D5 Compression Method    0008 (8) 'Deflated'\n+22F3D7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F3DB CRC                   00000000 (0)\n+22F3DF Compressed Size       00000002 (2)\n+22F3E3 Uncompressed Size     00000000 (0)\n+22F3E7 Filename Length       0030 (48)\n+22F3E9 Extra Length          0000 (0)\n+22F3EB Comment Length        0000 (0)\n+22F3ED Disk Start            0000 (0)\n+22F3EF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D27A Ext File Attributes   00000000 (0)\n-22D27E Local Header Offset   0012EC7D (1240189)\n-22D282 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F3F1 Ext File Attributes   00000000 (0)\n+22F3F5 Local Header Offset   00147862 (1341538)\n+22F3F9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D282: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F3F9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D2B5 CENTRAL HEADER #1163  02014B50 (33639248)\n-22D2B9 Created Zip Spec      14 (20) '2.0'\n-22D2BA Created OS            00 (0) 'MS-DOS'\n-22D2BB Extract Zip Spec      14 (20) '2.0'\n-22D2BC Extract OS            00 (0) 'MS-DOS'\n-22D2BD General Purpose Flag  0808 (2056)\n+22F429 CENTRAL HEADER #1163  02014B50 (33639248)\n+22F42D Created Zip Spec      14 (20) '2.0'\n+22F42E Created OS            00 (0) 'MS-DOS'\n+22F42F Extract Zip Spec      14 (20) '2.0'\n+22F430 Extract OS            00 (0) 'MS-DOS'\n+22F431 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D2BF Compression Method    0008 (8) 'Deflated'\n-22D2C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D2C5 CRC                   982FC700 (2553267968)\n-22D2C9 Compressed Size       00000370 (880)\n-22D2CD Uncompressed Size     00000A19 (2585)\n-22D2D1 Filename Length       003A (58)\n-22D2D3 Extra Length          0000 (0)\n-22D2D5 Comment Length        0000 (0)\n-22D2D7 Disk Start            0000 (0)\n-22D2D9 Int File Attributes   0000 (0)\n+22F433 Compression Method    0008 (8) 'Deflated'\n+22F435 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F439 CRC                   80296188 (2150195592)\n+22F43D Compressed Size       00000404 (1028)\n+22F441 Uncompressed Size     00000E77 (3703)\n+22F445 Filename Length       0049 (73)\n+22F447 Extra Length          0000 (0)\n+22F449 Comment Length        0000 (0)\n+22F44B Disk Start            0000 (0)\n+22F44D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D2DB Ext File Attributes   00000000 (0)\n-22D2DF Local Header Offset   0012F717 (1242903)\n-22D2E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F44F Ext File Attributes   00000000 (0)\n+22F453 Local Header Offset   001478C2 (1341634)\n+22F457 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D2E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F457: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D31D CENTRAL HEADER #1164  02014B50 (33639248)\n-22D321 Created Zip Spec      14 (20) '2.0'\n-22D322 Created OS            00 (0) 'MS-DOS'\n-22D323 Extract Zip Spec      14 (20) '2.0'\n-22D324 Extract OS            00 (0) 'MS-DOS'\n-22D325 General Purpose Flag  0808 (2056)\n+22F4A0 CENTRAL HEADER #1164  02014B50 (33639248)\n+22F4A4 Created Zip Spec      14 (20) '2.0'\n+22F4A5 Created OS            00 (0) 'MS-DOS'\n+22F4A6 Extract Zip Spec      14 (20) '2.0'\n+22F4A7 Extract OS            00 (0) 'MS-DOS'\n+22F4A8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D327 Compression Method    0008 (8) 'Deflated'\n-22D329 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D32D CRC                   C6A73CC6 (3332848838)\n-22D331 Compressed Size       0000045E (1118)\n-22D335 Uncompressed Size     00000C1E (3102)\n-22D339 Filename Length       0038 (56)\n-22D33B Extra Length          0000 (0)\n-22D33D Comment Length        0000 (0)\n-22D33F Disk Start            0000 (0)\n-22D341 Int File Attributes   0000 (0)\n+22F4AA Compression Method    0008 (8) 'Deflated'\n+22F4AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F4B0 CRC                   179D40B4 (396181684)\n+22F4B4 Compressed Size       00000B12 (2834)\n+22F4B8 Uncompressed Size     00002D41 (11585)\n+22F4BC Filename Length       0054 (84)\n+22F4BE Extra Length          0000 (0)\n+22F4C0 Comment Length        0000 (0)\n+22F4C2 Disk Start            0000 (0)\n+22F4C4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D343 Ext File Attributes   00000000 (0)\n-22D347 Local Header Offset   0012FAEF (1243887)\n-22D34B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F4C6 Ext File Attributes   00000000 (0)\n+22F4CA Local Header Offset   00147D3D (1342781)\n+22F4CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D34B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F4CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D383 CENTRAL HEADER #1165  02014B50 (33639248)\n-22D387 Created Zip Spec      14 (20) '2.0'\n-22D388 Created OS            00 (0) 'MS-DOS'\n-22D389 Extract Zip Spec      14 (20) '2.0'\n-22D38A Extract OS            00 (0) 'MS-DOS'\n-22D38B General Purpose Flag  0808 (2056)\n+22F522 CENTRAL HEADER #1165  02014B50 (33639248)\n+22F526 Created Zip Spec      14 (20) '2.0'\n+22F527 Created OS            00 (0) 'MS-DOS'\n+22F528 Extract Zip Spec      14 (20) '2.0'\n+22F529 Extract OS            00 (0) 'MS-DOS'\n+22F52A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D38D Compression Method    0008 (8) 'Deflated'\n-22D38F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D393 CRC                   94899E78 (2492046968)\n-22D397 Compressed Size       000002B3 (691)\n-22D39B Uncompressed Size     000005B1 (1457)\n-22D39F Filename Length       0036 (54)\n-22D3A1 Extra Length          0000 (0)\n-22D3A3 Comment Length        0000 (0)\n-22D3A5 Disk Start            0000 (0)\n-22D3A7 Int File Attributes   0000 (0)\n+22F52C Compression Method    0008 (8) 'Deflated'\n+22F52E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F532 CRC                   00000000 (0)\n+22F536 Compressed Size       00000002 (2)\n+22F53A Uncompressed Size     00000000 (0)\n+22F53E Filename Length       002A (42)\n+22F540 Extra Length          0000 (0)\n+22F542 Comment Length        0000 (0)\n+22F544 Disk Start            0000 (0)\n+22F546 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D3A9 Ext File Attributes   00000000 (0)\n-22D3AD Local Header Offset   0012FFB3 (1245107)\n-22D3B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F548 Ext File Attributes   00000000 (0)\n+22F54C Local Header Offset   001488D1 (1345745)\n+22F550 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D3B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F550: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D3E7 CENTRAL HEADER #1166  02014B50 (33639248)\n-22D3EB Created Zip Spec      14 (20) '2.0'\n-22D3EC Created OS            00 (0) 'MS-DOS'\n-22D3ED Extract Zip Spec      14 (20) '2.0'\n-22D3EE Extract OS            00 (0) 'MS-DOS'\n-22D3EF General Purpose Flag  0808 (2056)\n+22F57A CENTRAL HEADER #1166  02014B50 (33639248)\n+22F57E Created Zip Spec      14 (20) '2.0'\n+22F57F Created OS            00 (0) 'MS-DOS'\n+22F580 Extract Zip Spec      14 (20) '2.0'\n+22F581 Extract OS            00 (0) 'MS-DOS'\n+22F582 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D3F1 Compression Method    0008 (8) 'Deflated'\n-22D3F3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D3F7 CRC                   4247D839 (1112004665)\n-22D3FB Compressed Size       00000956 (2390)\n-22D3FF Uncompressed Size     00001FD9 (8153)\n-22D403 Filename Length       0035 (53)\n-22D405 Extra Length          0000 (0)\n-22D407 Comment Length        0000 (0)\n-22D409 Disk Start            0000 (0)\n-22D40B Int File Attributes   0000 (0)\n+22F584 Compression Method    0008 (8) 'Deflated'\n+22F586 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F58A CRC                   D8B03CE3 (3635428579)\n+22F58E Compressed Size       000004B8 (1208)\n+22F592 Uncompressed Size     00000ECC (3788)\n+22F596 Filename Length       0049 (73)\n+22F598 Extra Length          0000 (0)\n+22F59A Comment Length        0000 (0)\n+22F59C Disk Start            0000 (0)\n+22F59E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D40D Ext File Attributes   00000000 (0)\n-22D411 Local Header Offset   001302CA (1245898)\n-22D415 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F5A0 Ext File Attributes   00000000 (0)\n+22F5A4 Local Header Offset   0014892B (1345835)\n+22F5A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D415: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F5A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D44A CENTRAL HEADER #1167  02014B50 (33639248)\n-22D44E Created Zip Spec      14 (20) '2.0'\n-22D44F Created OS            00 (0) 'MS-DOS'\n-22D450 Extract Zip Spec      14 (20) '2.0'\n-22D451 Extract OS            00 (0) 'MS-DOS'\n-22D452 General Purpose Flag  0808 (2056)\n+22F5F1 CENTRAL HEADER #1167  02014B50 (33639248)\n+22F5F5 Created Zip Spec      14 (20) '2.0'\n+22F5F6 Created OS            00 (0) 'MS-DOS'\n+22F5F7 Extract Zip Spec      14 (20) '2.0'\n+22F5F8 Extract OS            00 (0) 'MS-DOS'\n+22F5F9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D454 Compression Method    0008 (8) 'Deflated'\n-22D456 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D45A CRC                   C2B511E4 (3266646500)\n-22D45E Compressed Size       00001872 (6258)\n-22D462 Uncompressed Size     00006B37 (27447)\n-22D466 Filename Length       0036 (54)\n-22D468 Extra Length          0000 (0)\n-22D46A Comment Length        0000 (0)\n-22D46C Disk Start            0000 (0)\n-22D46E Int File Attributes   0000 (0)\n+22F5FB Compression Method    0008 (8) 'Deflated'\n+22F5FD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F601 CRC                   EEBAB417 (4005213207)\n+22F605 Compressed Size       000002EF (751)\n+22F609 Uncompressed Size     000005FF (1535)\n+22F60D Filename Length       0048 (72)\n+22F60F Extra Length          0000 (0)\n+22F611 Comment Length        0000 (0)\n+22F613 Disk Start            0000 (0)\n+22F615 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D470 Ext File Attributes   00000000 (0)\n-22D474 Local Header Offset   00130C83 (1248387)\n-22D478 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F617 Ext File Attributes   00000000 (0)\n+22F61B Local Header Offset   00148E5A (1347162)\n+22F61F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D478: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F61F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D4AE CENTRAL HEADER #1168  02014B50 (33639248)\n-22D4B2 Created Zip Spec      14 (20) '2.0'\n-22D4B3 Created OS            00 (0) 'MS-DOS'\n-22D4B4 Extract Zip Spec      14 (20) '2.0'\n-22D4B5 Extract OS            00 (0) 'MS-DOS'\n-22D4B6 General Purpose Flag  0808 (2056)\n+22F667 CENTRAL HEADER #1168  02014B50 (33639248)\n+22F66B Created Zip Spec      14 (20) '2.0'\n+22F66C Created OS            00 (0) 'MS-DOS'\n+22F66D Extract Zip Spec      14 (20) '2.0'\n+22F66E Extract OS            00 (0) 'MS-DOS'\n+22F66F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D4B8 Compression Method    0008 (8) 'Deflated'\n-22D4BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D4BE CRC                   7317DB5C (1930943324)\n-22D4C2 Compressed Size       000002DB (731)\n-22D4C6 Uncompressed Size     00000714 (1812)\n-22D4CA Filename Length       003C (60)\n-22D4CC Extra Length          0000 (0)\n-22D4CE Comment Length        0000 (0)\n-22D4D0 Disk Start            0000 (0)\n-22D4D2 Int File Attributes   0000 (0)\n+22F671 Compression Method    0008 (8) 'Deflated'\n+22F673 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F677 CRC                   75D2ADE7 (1976741351)\n+22F67B Compressed Size       000003DE (990)\n+22F67F Uncompressed Size     00000B2B (2859)\n+22F683 Filename Length       0059 (89)\n+22F685 Extra Length          0000 (0)\n+22F687 Comment Length        0000 (0)\n+22F689 Disk Start            0000 (0)\n+22F68B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D4D4 Ext File Attributes   00000000 (0)\n-22D4D8 Local Header Offset   00132559 (1254745)\n-22D4DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F68D Ext File Attributes   00000000 (0)\n+22F691 Local Header Offset   001491BF (1348031)\n+22F695 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D4DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F695: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D518 CENTRAL HEADER #1169  02014B50 (33639248)\n-22D51C Created Zip Spec      14 (20) '2.0'\n-22D51D Created OS            00 (0) 'MS-DOS'\n-22D51E Extract Zip Spec      14 (20) '2.0'\n-22D51F Extract OS            00 (0) 'MS-DOS'\n-22D520 General Purpose Flag  0808 (2056)\n+22F6EE CENTRAL HEADER #1169  02014B50 (33639248)\n+22F6F2 Created Zip Spec      14 (20) '2.0'\n+22F6F3 Created OS            00 (0) 'MS-DOS'\n+22F6F4 Extract Zip Spec      14 (20) '2.0'\n+22F6F5 Extract OS            00 (0) 'MS-DOS'\n+22F6F6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D522 Compression Method    0008 (8) 'Deflated'\n-22D524 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D528 CRC                   344C1E36 (877403702)\n-22D52C Compressed Size       00000817 (2071)\n-22D530 Uncompressed Size     00001FCC (8140)\n-22D534 Filename Length       0042 (66)\n-22D536 Extra Length          0000 (0)\n-22D538 Comment Length        0000 (0)\n-22D53A Disk Start            0000 (0)\n-22D53C Int File Attributes   0000 (0)\n+22F6F8 Compression Method    0008 (8) 'Deflated'\n+22F6FA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F6FE CRC                   755A196E (1968839022)\n+22F702 Compressed Size       00000616 (1558)\n+22F706 Uncompressed Size     00001309 (4873)\n+22F70A Filename Length       003C (60)\n+22F70C Extra Length          0000 (0)\n+22F70E Comment Length        0000 (0)\n+22F710 Disk Start            0000 (0)\n+22F712 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D53E Ext File Attributes   00000000 (0)\n-22D542 Local Header Offset   0013289E (1255582)\n-22D546 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F714 Ext File Attributes   00000000 (0)\n+22F718 Local Header Offset   00149624 (1349156)\n+22F71C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D546: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F71C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D588 CENTRAL HEADER #1170  02014B50 (33639248)\n-22D58C Created Zip Spec      14 (20) '2.0'\n-22D58D Created OS            00 (0) 'MS-DOS'\n-22D58E Extract Zip Spec      14 (20) '2.0'\n-22D58F Extract OS            00 (0) 'MS-DOS'\n-22D590 General Purpose Flag  0808 (2056)\n+22F758 CENTRAL HEADER #1170  02014B50 (33639248)\n+22F75C Created Zip Spec      14 (20) '2.0'\n+22F75D Created OS            00 (0) 'MS-DOS'\n+22F75E Extract Zip Spec      14 (20) '2.0'\n+22F75F Extract OS            00 (0) 'MS-DOS'\n+22F760 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D592 Compression Method    0008 (8) 'Deflated'\n-22D594 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D598 CRC                   3B14B127 (991211815)\n-22D59C Compressed Size       000006AF (1711)\n-22D5A0 Uncompressed Size     000017C7 (6087)\n-22D5A4 Filename Length       0045 (69)\n-22D5A6 Extra Length          0000 (0)\n-22D5A8 Comment Length        0000 (0)\n-22D5AA Disk Start            0000 (0)\n-22D5AC Int File Attributes   0000 (0)\n+22F762 Compression Method    0008 (8) 'Deflated'\n+22F764 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F768 CRC                   59E1F72D (1507981101)\n+22F76C Compressed Size       000003D7 (983)\n+22F770 Uncompressed Size     0000092F (2351)\n+22F774 Filename Length       004E (78)\n+22F776 Extra Length          0000 (0)\n+22F778 Comment Length        0000 (0)\n+22F77A Disk Start            0000 (0)\n+22F77C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D5AE Ext File Attributes   00000000 (0)\n-22D5B2 Local Header Offset   00133125 (1257765)\n-22D5B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F77E Ext File Attributes   00000000 (0)\n+22F782 Local Header Offset   00149CA4 (1350820)\n+22F786 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D5B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F786: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D5FB CENTRAL HEADER #1171  02014B50 (33639248)\n-22D5FF Created Zip Spec      14 (20) '2.0'\n-22D600 Created OS            00 (0) 'MS-DOS'\n-22D601 Extract Zip Spec      14 (20) '2.0'\n-22D602 Extract OS            00 (0) 'MS-DOS'\n-22D603 General Purpose Flag  0808 (2056)\n+22F7D4 CENTRAL HEADER #1171  02014B50 (33639248)\n+22F7D8 Created Zip Spec      14 (20) '2.0'\n+22F7D9 Created OS            00 (0) 'MS-DOS'\n+22F7DA Extract Zip Spec      14 (20) '2.0'\n+22F7DB Extract OS            00 (0) 'MS-DOS'\n+22F7DC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D605 Compression Method    0008 (8) 'Deflated'\n-22D607 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D60B CRC                   00000000 (0)\n-22D60F Compressed Size       00000002 (2)\n-22D613 Uncompressed Size     00000000 (0)\n-22D617 Filename Length       002B (43)\n-22D619 Extra Length          0000 (0)\n-22D61B Comment Length        0000 (0)\n-22D61D Disk Start            0000 (0)\n-22D61F Int File Attributes   0000 (0)\n+22F7DE Compression Method    0008 (8) 'Deflated'\n+22F7E0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F7E4 CRC                   FB40FD46 (4215340358)\n+22F7E8 Compressed Size       0000040C (1036)\n+22F7EC Uncompressed Size     00000B06 (2822)\n+22F7F0 Filename Length       0054 (84)\n+22F7F2 Extra Length          0000 (0)\n+22F7F4 Comment Length        0000 (0)\n+22F7F6 Disk Start            0000 (0)\n+22F7F8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D621 Ext File Attributes   00000000 (0)\n-22D625 Local Header Offset   00133847 (1259591)\n-22D629 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F7FA Ext File Attributes   00000000 (0)\n+22F7FE Local Header Offset   0014A0F7 (1351927)\n+22F802 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D629: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F802: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D654 CENTRAL HEADER #1172  02014B50 (33639248)\n-22D658 Created Zip Spec      14 (20) '2.0'\n-22D659 Created OS            00 (0) 'MS-DOS'\n-22D65A Extract Zip Spec      14 (20) '2.0'\n-22D65B Extract OS            00 (0) 'MS-DOS'\n-22D65C General Purpose Flag  0808 (2056)\n+22F856 CENTRAL HEADER #1172  02014B50 (33639248)\n+22F85A Created Zip Spec      14 (20) '2.0'\n+22F85B Created OS            00 (0) 'MS-DOS'\n+22F85C Extract Zip Spec      14 (20) '2.0'\n+22F85D Extract OS            00 (0) 'MS-DOS'\n+22F85E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D65E Compression Method    0008 (8) 'Deflated'\n-22D660 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D664 CRC                   1915FFAE (420872110)\n-22D668 Compressed Size       000007CC (1996)\n-22D66C Uncompressed Size     00002228 (8744)\n-22D670 Filename Length       003C (60)\n-22D672 Extra Length          0000 (0)\n-22D674 Comment Length        0000 (0)\n-22D676 Disk Start            0000 (0)\n-22D678 Int File Attributes   0000 (0)\n+22F860 Compression Method    0008 (8) 'Deflated'\n+22F862 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F866 CRC                   53F9F17D (1408889213)\n+22F86A Compressed Size       0000054E (1358)\n+22F86E Uncompressed Size     0000100D (4109)\n+22F872 Filename Length       0050 (80)\n+22F874 Extra Length          0000 (0)\n+22F876 Comment Length        0000 (0)\n+22F878 Disk Start            0000 (0)\n+22F87A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D67A Ext File Attributes   00000000 (0)\n-22D67E Local Header Offset   001338A2 (1259682)\n-22D682 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F87C Ext File Attributes   00000000 (0)\n+22F880 Local Header Offset   0014A585 (1353093)\n+22F884 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D682: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F884: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D6BE CENTRAL HEADER #1173  02014B50 (33639248)\n-22D6C2 Created Zip Spec      14 (20) '2.0'\n-22D6C3 Created OS            00 (0) 'MS-DOS'\n-22D6C4 Extract Zip Spec      14 (20) '2.0'\n-22D6C5 Extract OS            00 (0) 'MS-DOS'\n-22D6C6 General Purpose Flag  0808 (2056)\n+22F8D4 CENTRAL HEADER #1173  02014B50 (33639248)\n+22F8D8 Created Zip Spec      14 (20) '2.0'\n+22F8D9 Created OS            00 (0) 'MS-DOS'\n+22F8DA Extract Zip Spec      14 (20) '2.0'\n+22F8DB Extract OS            00 (0) 'MS-DOS'\n+22F8DC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D6C8 Compression Method    0008 (8) 'Deflated'\n-22D6CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D6CE CRC                   B4BC5053 (3032240211)\n-22D6D2 Compressed Size       00000685 (1669)\n-22D6D6 Uncompressed Size     00001648 (5704)\n-22D6DA Filename Length       003B (59)\n-22D6DC Extra Length          0000 (0)\n-22D6DE Comment Length        0000 (0)\n-22D6E0 Disk Start            0000 (0)\n-22D6E2 Int File Attributes   0000 (0)\n+22F8DE Compression Method    0008 (8) 'Deflated'\n+22F8E0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F8E4 CRC                   D85C97E6 (3629946854)\n+22F8E8 Compressed Size       00000C35 (3125)\n+22F8EC Uncompressed Size     000035CB (13771)\n+22F8F0 Filename Length       004B (75)\n+22F8F2 Extra Length          0000 (0)\n+22F8F4 Comment Length        0000 (0)\n+22F8F6 Disk Start            0000 (0)\n+22F8F8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D6E4 Ext File Attributes   00000000 (0)\n-22D6E8 Local Header Offset   001340D8 (1261784)\n-22D6EC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F8FA Ext File Attributes   00000000 (0)\n+22F8FE Local Header Offset   0014AB51 (1354577)\n+22F902 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D6EC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F902: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D727 CENTRAL HEADER #1174  02014B50 (33639248)\n-22D72B Created Zip Spec      14 (20) '2.0'\n-22D72C Created OS            00 (0) 'MS-DOS'\n-22D72D Extract Zip Spec      14 (20) '2.0'\n-22D72E Extract OS            00 (0) 'MS-DOS'\n-22D72F General Purpose Flag  0808 (2056)\n+22F94D CENTRAL HEADER #1174  02014B50 (33639248)\n+22F951 Created Zip Spec      14 (20) '2.0'\n+22F952 Created OS            00 (0) 'MS-DOS'\n+22F953 Extract Zip Spec      14 (20) '2.0'\n+22F954 Extract OS            00 (0) 'MS-DOS'\n+22F955 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D731 Compression Method    0008 (8) 'Deflated'\n-22D733 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D737 CRC                   00000000 (0)\n-22D73B Compressed Size       00000002 (2)\n-22D73F Uncompressed Size     00000000 (0)\n-22D743 Filename Length       002B (43)\n-22D745 Extra Length          0000 (0)\n-22D747 Comment Length        0000 (0)\n-22D749 Disk Start            0000 (0)\n-22D74B Int File Attributes   0000 (0)\n+22F957 Compression Method    0008 (8) 'Deflated'\n+22F959 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F95D CRC                   790FD089 (2031079561)\n+22F961 Compressed Size       000003E7 (999)\n+22F965 Uncompressed Size     000008A2 (2210)\n+22F969 Filename Length       0053 (83)\n+22F96B Extra Length          0000 (0)\n+22F96D Comment Length        0000 (0)\n+22F96F Disk Start            0000 (0)\n+22F971 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D74D Ext File Attributes   00000000 (0)\n-22D751 Local Header Offset   001347C6 (1263558)\n-22D755 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F973 Ext File Attributes   00000000 (0)\n+22F977 Local Header Offset   0014B7FF (1357823)\n+22F97B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D755: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F97B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D780 CENTRAL HEADER #1175  02014B50 (33639248)\n-22D784 Created Zip Spec      14 (20) '2.0'\n-22D785 Created OS            00 (0) 'MS-DOS'\n-22D786 Extract Zip Spec      14 (20) '2.0'\n-22D787 Extract OS            00 (0) 'MS-DOS'\n-22D788 General Purpose Flag  0808 (2056)\n+22F9CE CENTRAL HEADER #1175  02014B50 (33639248)\n+22F9D2 Created Zip Spec      14 (20) '2.0'\n+22F9D3 Created OS            00 (0) 'MS-DOS'\n+22F9D4 Extract Zip Spec      14 (20) '2.0'\n+22F9D5 Extract OS            00 (0) 'MS-DOS'\n+22F9D6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D78A Compression Method    0008 (8) 'Deflated'\n-22D78C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D790 CRC                   C9453D78 (3376758136)\n-22D794 Compressed Size       0000038D (909)\n-22D798 Uncompressed Size     000008E4 (2276)\n-22D79C Filename Length       0043 (67)\n-22D79E Extra Length          0000 (0)\n-22D7A0 Comment Length        0000 (0)\n-22D7A2 Disk Start            0000 (0)\n-22D7A4 Int File Attributes   0000 (0)\n+22F9D8 Compression Method    0008 (8) 'Deflated'\n+22F9DA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22F9DE CRC                   85FEC00A (2248065034)\n+22F9E2 Compressed Size       00000515 (1301)\n+22F9E6 Uncompressed Size     00000ED7 (3799)\n+22F9EA Filename Length       0050 (80)\n+22F9EC Extra Length          0000 (0)\n+22F9EE Comment Length        0000 (0)\n+22F9F0 Disk Start            0000 (0)\n+22F9F2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D7A6 Ext File Attributes   00000000 (0)\n-22D7AA Local Header Offset   00134821 (1263649)\n-22D7AE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22F9F4 Ext File Attributes   00000000 (0)\n+22F9F8 Local Header Offset   0014BC67 (1358951)\n+22F9FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D7AE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22F9FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D7F1 CENTRAL HEADER #1176  02014B50 (33639248)\n-22D7F5 Created Zip Spec      14 (20) '2.0'\n-22D7F6 Created OS            00 (0) 'MS-DOS'\n-22D7F7 Extract Zip Spec      14 (20) '2.0'\n-22D7F8 Extract OS            00 (0) 'MS-DOS'\n-22D7F9 General Purpose Flag  0808 (2056)\n+22FA4C CENTRAL HEADER #1176  02014B50 (33639248)\n+22FA50 Created Zip Spec      14 (20) '2.0'\n+22FA51 Created OS            00 (0) 'MS-DOS'\n+22FA52 Extract Zip Spec      14 (20) '2.0'\n+22FA53 Extract OS            00 (0) 'MS-DOS'\n+22FA54 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D7FB Compression Method    0008 (8) 'Deflated'\n-22D7FD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D801 CRC                   5A226E99 (1512205977)\n-22D805 Compressed Size       00000465 (1125)\n-22D809 Uncompressed Size     00000B86 (2950)\n-22D80D Filename Length       0047 (71)\n-22D80F Extra Length          0000 (0)\n-22D811 Comment Length        0000 (0)\n-22D813 Disk Start            0000 (0)\n-22D815 Int File Attributes   0000 (0)\n+22FA56 Compression Method    0008 (8) 'Deflated'\n+22FA58 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22FA5C CRC                   ACB394E1 (2897450209)\n+22FA60 Compressed Size       00000367 (871)\n+22FA64 Uncompressed Size     0000087F (2175)\n+22FA68 Filename Length       0048 (72)\n+22FA6A Extra Length          0000 (0)\n+22FA6C Comment Length        0000 (0)\n+22FA6E Disk Start            0000 (0)\n+22FA70 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D817 Ext File Attributes   00000000 (0)\n-22D81B Local Header Offset   00134C1F (1264671)\n-22D81F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22FA72 Ext File Attributes   00000000 (0)\n+22FA76 Local Header Offset   0014C1FA (1360378)\n+22FA7A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D81F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22FA7A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D866 CENTRAL HEADER #1177  02014B50 (33639248)\n-22D86A Created Zip Spec      14 (20) '2.0'\n-22D86B Created OS            00 (0) 'MS-DOS'\n-22D86C Extract Zip Spec      14 (20) '2.0'\n-22D86D Extract OS            00 (0) 'MS-DOS'\n-22D86E General Purpose Flag  0808 (2056)\n+22FAC2 CENTRAL HEADER #1177  02014B50 (33639248)\n+22FAC6 Created Zip Spec      14 (20) '2.0'\n+22FAC7 Created OS            00 (0) 'MS-DOS'\n+22FAC8 Extract Zip Spec      14 (20) '2.0'\n+22FAC9 Extract OS            00 (0) 'MS-DOS'\n+22FACA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D870 Compression Method    0008 (8) 'Deflated'\n-22D872 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D876 CRC                   00000000 (0)\n-22D87A Compressed Size       00000002 (2)\n-22D87E Uncompressed Size     00000000 (0)\n-22D882 Filename Length       0024 (36)\n-22D884 Extra Length          0000 (0)\n-22D886 Comment Length        0000 (0)\n-22D888 Disk Start            0000 (0)\n-22D88A Int File Attributes   0000 (0)\n+22FACC Compression Method    0008 (8) 'Deflated'\n+22FACE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22FAD2 CRC                   00000000 (0)\n+22FAD6 Compressed Size       00000002 (2)\n+22FADA Uncompressed Size     00000000 (0)\n+22FADE Filename Length       0030 (48)\n+22FAE0 Extra Length          0000 (0)\n+22FAE2 Comment Length        0000 (0)\n+22FAE4 Disk Start            0000 (0)\n+22FAE6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D88C Ext File Attributes   00000000 (0)\n-22D890 Local Header Offset   001350F9 (1265913)\n-22D894 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22FAE8 Ext File Attributes   00000000 (0)\n+22FAEC Local Header Offset   0014C5D7 (1361367)\n+22FAF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D894: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22FAF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D8B8 CENTRAL HEADER #1178  02014B50 (33639248)\n-22D8BC Created Zip Spec      14 (20) '2.0'\n-22D8BD Created OS            00 (0) 'MS-DOS'\n-22D8BE Extract Zip Spec      14 (20) '2.0'\n-22D8BF Extract OS            00 (0) 'MS-DOS'\n-22D8C0 General Purpose Flag  0808 (2056)\n+22FB20 CENTRAL HEADER #1178  02014B50 (33639248)\n+22FB24 Created Zip Spec      14 (20) '2.0'\n+22FB25 Created OS            00 (0) 'MS-DOS'\n+22FB26 Extract Zip Spec      14 (20) '2.0'\n+22FB27 Extract OS            00 (0) 'MS-DOS'\n+22FB28 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D8C2 Compression Method    0008 (8) 'Deflated'\n-22D8C4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D8C8 CRC                   780A8F69 (2013957993)\n-22D8CC Compressed Size       000002C5 (709)\n-22D8D0 Uncompressed Size     000005F6 (1526)\n-22D8D4 Filename Length       0036 (54)\n-22D8D6 Extra Length          0000 (0)\n-22D8D8 Comment Length        0000 (0)\n-22D8DA Disk Start            0000 (0)\n-22D8DC Int File Attributes   0000 (0)\n+22FB2A Compression Method    0008 (8) 'Deflated'\n+22FB2C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22FB30 CRC                   AF38F813 (2939746323)\n+22FB34 Compressed Size       00000BA6 (2982)\n+22FB38 Uncompressed Size     00002F8F (12175)\n+22FB3C Filename Length       0054 (84)\n+22FB3E Extra Length          0000 (0)\n+22FB40 Comment Length        0000 (0)\n+22FB42 Disk Start            0000 (0)\n+22FB44 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D8DE Ext File Attributes   00000000 (0)\n-22D8E2 Local Header Offset   0013514D (1265997)\n-22D8E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22FB46 Ext File Attributes   00000000 (0)\n+22FB4A Local Header Offset   0014C637 (1361463)\n+22FB4E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D8E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22FB4E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D91C CENTRAL HEADER #1179  02014B50 (33639248)\n-22D920 Created Zip Spec      14 (20) '2.0'\n-22D921 Created OS            00 (0) 'MS-DOS'\n-22D922 Extract Zip Spec      14 (20) '2.0'\n-22D923 Extract OS            00 (0) 'MS-DOS'\n-22D924 General Purpose Flag  0808 (2056)\n+22FBA2 CENTRAL HEADER #1179  02014B50 (33639248)\n+22FBA6 Created Zip Spec      14 (20) '2.0'\n+22FBA7 Created OS            00 (0) 'MS-DOS'\n+22FBA8 Extract Zip Spec      14 (20) '2.0'\n+22FBA9 Extract OS            00 (0) 'MS-DOS'\n+22FBAA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D926 Compression Method    0008 (8) 'Deflated'\n-22D928 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D92C CRC                   0693959E (110335390)\n-22D930 Compressed Size       0000044E (1102)\n-22D934 Uncompressed Size     00000AB6 (2742)\n-22D938 Filename Length       0035 (53)\n-22D93A Extra Length          0000 (0)\n-22D93C Comment Length        0000 (0)\n-22D93E Disk Start            0000 (0)\n-22D940 Int File Attributes   0000 (0)\n+22FBAC Compression Method    0008 (8) 'Deflated'\n+22FBAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22FBB2 CRC                   6659263F (1717118527)\n+22FBB6 Compressed Size       000007CA (1994)\n+22FBBA Uncompressed Size     00001E19 (7705)\n+22FBBE Filename Length       004E (78)\n+22FBC0 Extra Length          0000 (0)\n+22FBC2 Comment Length        0000 (0)\n+22FBC4 Disk Start            0000 (0)\n+22FBC6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D942 Ext File Attributes   00000000 (0)\n-22D946 Local Header Offset   00135476 (1266806)\n-22D94A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22FBC8 Ext File Attributes   00000000 (0)\n+22FBCC Local Header Offset   0014D25F (1364575)\n+22FBD0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D94A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22FBD0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D97F CENTRAL HEADER #1180  02014B50 (33639248)\n-22D983 Created Zip Spec      14 (20) '2.0'\n-22D984 Created OS            00 (0) 'MS-DOS'\n-22D985 Extract Zip Spec      14 (20) '2.0'\n-22D986 Extract OS            00 (0) 'MS-DOS'\n-22D987 General Purpose Flag  0808 (2056)\n+22FC1E CENTRAL HEADER #1180  02014B50 (33639248)\n+22FC22 Created Zip Spec      14 (20) '2.0'\n+22FC23 Created OS            00 (0) 'MS-DOS'\n+22FC24 Extract Zip Spec      14 (20) '2.0'\n+22FC25 Extract OS            00 (0) 'MS-DOS'\n+22FC26 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D989 Compression Method    0008 (8) 'Deflated'\n-22D98B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D98F CRC                   F08334AC (4035130540)\n-22D993 Compressed Size       00000606 (1542)\n-22D997 Uncompressed Size     00001172 (4466)\n-22D99B Filename Length       0036 (54)\n-22D99D Extra Length          0000 (0)\n-22D99F Comment Length        0000 (0)\n-22D9A1 Disk Start            0000 (0)\n-22D9A3 Int File Attributes   0000 (0)\n+22FC28 Compression Method    0008 (8) 'Deflated'\n+22FC2A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22FC2E CRC                   00000000 (0)\n+22FC32 Compressed Size       00000002 (2)\n+22FC36 Uncompressed Size     00000000 (0)\n+22FC3A Filename Length       002B (43)\n+22FC3C Extra Length          0000 (0)\n+22FC3E Comment Length        0000 (0)\n+22FC40 Disk Start            0000 (0)\n+22FC42 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22D9A5 Ext File Attributes   00000000 (0)\n-22D9A9 Local Header Offset   00135927 (1268007)\n-22D9AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22FC44 Ext File Attributes   00000000 (0)\n+22FC48 Local Header Offset   0014DAA5 (1366693)\n+22FC4C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22D9AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22FC4C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22D9E3 CENTRAL HEADER #1181  02014B50 (33639248)\n-22D9E7 Created Zip Spec      14 (20) '2.0'\n-22D9E8 Created OS            00 (0) 'MS-DOS'\n-22D9E9 Extract Zip Spec      14 (20) '2.0'\n-22D9EA Extract OS            00 (0) 'MS-DOS'\n-22D9EB General Purpose Flag  0808 (2056)\n+22FC77 CENTRAL HEADER #1181  02014B50 (33639248)\n+22FC7B Created Zip Spec      14 (20) '2.0'\n+22FC7C Created OS            00 (0) 'MS-DOS'\n+22FC7D Extract Zip Spec      14 (20) '2.0'\n+22FC7E Extract OS            00 (0) 'MS-DOS'\n+22FC7F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22D9ED Compression Method    0008 (8) 'Deflated'\n-22D9EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22D9F3 CRC                   00000000 (0)\n-22D9F7 Compressed Size       00000002 (2)\n-22D9FB Uncompressed Size     00000000 (0)\n-22D9FF Filename Length       0023 (35)\n-22DA01 Extra Length          0000 (0)\n-22DA03 Comment Length        0000 (0)\n-22DA05 Disk Start            0000 (0)\n-22DA07 Int File Attributes   0000 (0)\n+22FC81 Compression Method    0008 (8) 'Deflated'\n+22FC83 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22FC87 CRC                   1E182794 (504899476)\n+22FC8B Compressed Size       00000495 (1173)\n+22FC8F Uncompressed Size     00000CDF (3295)\n+22FC93 Filename Length       0051 (81)\n+22FC95 Extra Length          0000 (0)\n+22FC97 Comment Length        0000 (0)\n+22FC99 Disk Start            0000 (0)\n+22FC9B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22DA09 Ext File Attributes   00000000 (0)\n-22DA0D Local Header Offset   00135F91 (1269649)\n-22DA11 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22FC9D Ext File Attributes   00000000 (0)\n+22FCA1 Local Header Offset   0014DB00 (1366784)\n+22FCA5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22DA11: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22FCA5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22DA34 CENTRAL HEADER #1182  02014B50 (33639248)\n-22DA38 Created Zip Spec      14 (20) '2.0'\n-22DA39 Created OS            00 (0) 'MS-DOS'\n-22DA3A Extract Zip Spec      14 (20) '2.0'\n-22DA3B Extract OS            00 (0) 'MS-DOS'\n-22DA3C General Purpose Flag  0808 (2056)\n+22FCF6 CENTRAL HEADER #1182  02014B50 (33639248)\n+22FCFA Created Zip Spec      14 (20) '2.0'\n+22FCFB Created OS            00 (0) 'MS-DOS'\n+22FCFC Extract Zip Spec      14 (20) '2.0'\n+22FCFD Extract OS            00 (0) 'MS-DOS'\n+22FCFE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22DA3E Compression Method    0008 (8) 'Deflated'\n-22DA40 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22DA44 CRC                   67E99252 (1743360594)\n-22DA48 Compressed Size       000008DB (2267)\n-22DA4C Uncompressed Size     00001D88 (7560)\n-22DA50 Filename Length       0034 (52)\n-22DA52 Extra Length          0000 (0)\n-22DA54 Comment Length        0000 (0)\n-22DA56 Disk Start            0000 (0)\n-22DA58 Int File Attributes   0000 (0)\n+22FD00 Compression Method    0008 (8) 'Deflated'\n+22FD02 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22FD06 CRC                   6D847AE7 (1837398759)\n+22FD0A Compressed Size       00000215 (533)\n+22FD0E Uncompressed Size     000003AC (940)\n+22FD12 Filename Length       0047 (71)\n+22FD14 Extra Length          0000 (0)\n+22FD16 Comment Length        0000 (0)\n+22FD18 Disk Start            0000 (0)\n+22FD1A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22DA5A Ext File Attributes   00000000 (0)\n-22DA5E Local Header Offset   00135FE4 (1269732)\n-22DA62 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22FD1C Ext File Attributes   00000000 (0)\n+22FD20 Local Header Offset   0014E014 (1368084)\n+22FD24 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22DA62: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22FD24: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22DA96 CENTRAL HEADER #1183  02014B50 (33639248)\n-22DA9A Created Zip Spec      14 (20) '2.0'\n-22DA9B Created OS            00 (0) 'MS-DOS'\n-22DA9C Extract Zip Spec      14 (20) '2.0'\n-22DA9D Extract OS            00 (0) 'MS-DOS'\n-22DA9E General Purpose Flag  0808 (2056)\n+22FD6B CENTRAL HEADER #1183  02014B50 (33639248)\n+22FD6F Created Zip Spec      14 (20) '2.0'\n+22FD70 Created OS            00 (0) 'MS-DOS'\n+22FD71 Extract Zip Spec      14 (20) '2.0'\n+22FD72 Extract OS            00 (0) 'MS-DOS'\n+22FD73 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22DAA0 Compression Method    0008 (8) 'Deflated'\n-22DAA2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22DAA6 CRC                   B3BC74DF (3015472351)\n-22DAAA Compressed Size       00000242 (578)\n-22DAAE Uncompressed Size     00000429 (1065)\n-22DAB2 Filename Length       003D (61)\n-22DAB4 Extra Length          0000 (0)\n-22DAB6 Comment Length        0000 (0)\n-22DAB8 Disk Start            0000 (0)\n-22DABA Int File Attributes   0000 (0)\n+22FD75 Compression Method    0008 (8) 'Deflated'\n+22FD77 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22FD7B CRC                   21E16F63 (568422243)\n+22FD7F Compressed Size       00000264 (612)\n+22FD83 Uncompressed Size     0000046D (1133)\n+22FD87 Filename Length       004A (74)\n+22FD89 Extra Length          0000 (0)\n+22FD8B Comment Length        0000 (0)\n+22FD8D Disk Start            0000 (0)\n+22FD8F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22DABC Ext File Attributes   00000000 (0)\n-22DAC0 Local Header Offset   00136921 (1272097)\n-22DAC4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22FD91 Ext File Attributes   00000000 (0)\n+22FD95 Local Header Offset   0014E29E (1368734)\n+22FD99 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22DAC4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22FD99: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22DB01 CENTRAL HEADER #1184  02014B50 (33639248)\n-22DB05 Created Zip Spec      14 (20) '2.0'\n-22DB06 Created OS            00 (0) 'MS-DOS'\n-22DB07 Extract Zip Spec      14 (20) '2.0'\n-22DB08 Extract OS            00 (0) 'MS-DOS'\n-22DB09 General Purpose Flag  0808 (2056)\n+22FDE3 CENTRAL HEADER #1184  02014B50 (33639248)\n+22FDE7 Created Zip Spec      14 (20) '2.0'\n+22FDE8 Created OS            00 (0) 'MS-DOS'\n+22FDE9 Extract Zip Spec      14 (20) '2.0'\n+22FDEA Extract OS            00 (0) 'MS-DOS'\n+22FDEB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22DB0B Compression Method    0008 (8) 'Deflated'\n-22DB0D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22DB11 CRC                   29478F2B (692555563)\n-22DB15 Compressed Size       000003E1 (993)\n-22DB19 Uncompressed Size     000008EB (2283)\n-22DB1D Filename Length       003C (60)\n-22DB1F Extra Length          0000 (0)\n-22DB21 Comment Length        0000 (0)\n-22DB23 Disk Start            0000 (0)\n-22DB25 Int File Attributes   0000 (0)\n+22FDED Compression Method    0008 (8) 'Deflated'\n+22FDEF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22FDF3 CRC                   0709B18C (118075788)\n+22FDF7 Compressed Size       00000A71 (2673)\n+22FDFB Uncompressed Size     00003B49 (15177)\n+22FDFF Filename Length       0040 (64)\n+22FE01 Extra Length          0000 (0)\n+22FE03 Comment Length        0000 (0)\n+22FE05 Disk Start            0000 (0)\n+22FE07 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22DB27 Ext File Attributes   00000000 (0)\n-22DB2B Local Header Offset   00136BCE (1272782)\n-22DB2F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22FE09 Ext File Attributes   00000000 (0)\n+22FE0D Local Header Offset   0014E57A (1369466)\n+22FE11 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22DB2F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22FE11: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22DB6B CENTRAL HEADER #1185  02014B50 (33639248)\n-22DB6F Created Zip Spec      14 (20) '2.0'\n-22DB70 Created OS            00 (0) 'MS-DOS'\n-22DB71 Extract Zip Spec      14 (20) '2.0'\n-22DB72 Extract OS            00 (0) 'MS-DOS'\n-22DB73 General Purpose Flag  0808 (2056)\n+22FE51 CENTRAL HEADER #1185  02014B50 (33639248)\n+22FE55 Created Zip Spec      14 (20) '2.0'\n+22FE56 Created OS            00 (0) 'MS-DOS'\n+22FE57 Extract Zip Spec      14 (20) '2.0'\n+22FE58 Extract OS            00 (0) 'MS-DOS'\n+22FE59 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22DB75 Compression Method    0008 (8) 'Deflated'\n-22DB77 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22DB7B CRC                   DBBDBD3B (3686645051)\n-22DB7F Compressed Size       000003D6 (982)\n-22DB83 Uncompressed Size     00000B0C (2828)\n-22DB87 Filename Length       003F (63)\n-22DB89 Extra Length          0000 (0)\n-22DB8B Comment Length        0000 (0)\n-22DB8D Disk Start            0000 (0)\n-22DB8F Int File Attributes   0000 (0)\n+22FE5B Compression Method    0008 (8) 'Deflated'\n+22FE5D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22FE61 CRC                   E2477A52 (3796335186)\n+22FE65 Compressed Size       000003FA (1018)\n+22FE69 Uncompressed Size     00000B00 (2816)\n+22FE6D Filename Length       0044 (68)\n+22FE6F Extra Length          0000 (0)\n+22FE71 Comment Length        0000 (0)\n+22FE73 Disk Start            0000 (0)\n+22FE75 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22DB91 Ext File Attributes   00000000 (0)\n-22DB95 Local Header Offset   00137019 (1273881)\n-22DB99 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22FE77 Ext File Attributes   00000000 (0)\n+22FE7B Local Header Offset   0014F059 (1372249)\n+22FE7F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22DB99: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22FE7F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22DBD8 CENTRAL HEADER #1186  02014B50 (33639248)\n-22DBDC Created Zip Spec      14 (20) '2.0'\n-22DBDD Created OS            00 (0) 'MS-DOS'\n-22DBDE Extract Zip Spec      14 (20) '2.0'\n-22DBDF Extract OS            00 (0) 'MS-DOS'\n-22DBE0 General Purpose Flag  0808 (2056)\n+22FEC3 CENTRAL HEADER #1186  02014B50 (33639248)\n+22FEC7 Created Zip Spec      14 (20) '2.0'\n+22FEC8 Created OS            00 (0) 'MS-DOS'\n+22FEC9 Extract Zip Spec      14 (20) '2.0'\n+22FECA Extract OS            00 (0) 'MS-DOS'\n+22FECB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22DBE2 Compression Method    0008 (8) 'Deflated'\n-22DBE4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22DBE8 CRC                   00000000 (0)\n-22DBEC Compressed Size       00000002 (2)\n-22DBF0 Uncompressed Size     00000000 (0)\n-22DBF4 Filename Length       001F (31)\n-22DBF6 Extra Length          0000 (0)\n-22DBF8 Comment Length        0000 (0)\n-22DBFA Disk Start            0000 (0)\n-22DBFC Int File Attributes   0000 (0)\n+22FECD Compression Method    0008 (8) 'Deflated'\n+22FECF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22FED3 CRC                   00160E4A (1445450)\n+22FED7 Compressed Size       000005B2 (1458)\n+22FEDB Uncompressed Size     00001208 (4616)\n+22FEDF Filename Length       0045 (69)\n+22FEE1 Extra Length          0000 (0)\n+22FEE3 Comment Length        0000 (0)\n+22FEE5 Disk Start            0000 (0)\n+22FEE7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22DBFE Ext File Attributes   00000000 (0)\n-22DC02 Local Header Offset   0013745C (1274972)\n-22DC06 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22FEE9 Ext File Attributes   00000000 (0)\n+22FEED Local Header Offset   0014F4C5 (1373381)\n+22FEF1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22DC06: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22FEF1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22DC25 CENTRAL HEADER #1187  02014B50 (33639248)\n-22DC29 Created Zip Spec      14 (20) '2.0'\n-22DC2A Created OS            00 (0) 'MS-DOS'\n-22DC2B Extract Zip Spec      14 (20) '2.0'\n-22DC2C Extract OS            00 (0) 'MS-DOS'\n-22DC2D General Purpose Flag  0808 (2056)\n+22FF36 CENTRAL HEADER #1187  02014B50 (33639248)\n+22FF3A Created Zip Spec      14 (20) '2.0'\n+22FF3B Created OS            00 (0) 'MS-DOS'\n+22FF3C Extract Zip Spec      14 (20) '2.0'\n+22FF3D Extract OS            00 (0) 'MS-DOS'\n+22FF3E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22DC2F Compression Method    0008 (8) 'Deflated'\n-22DC31 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22DC35 CRC                   00000000 (0)\n-22DC39 Compressed Size       00000002 (2)\n-22DC3D Uncompressed Size     00000000 (0)\n-22DC41 Filename Length       0023 (35)\n-22DC43 Extra Length          0000 (0)\n-22DC45 Comment Length        0000 (0)\n-22DC47 Disk Start            0000 (0)\n-22DC49 Int File Attributes   0000 (0)\n+22FF40 Compression Method    0008 (8) 'Deflated'\n+22FF42 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22FF46 CRC                   6EF68498 (1861649560)\n+22FF4A Compressed Size       000003FD (1021)\n+22FF4E Uncompressed Size     00000A70 (2672)\n+22FF52 Filename Length       0050 (80)\n+22FF54 Extra Length          0000 (0)\n+22FF56 Comment Length        0000 (0)\n+22FF58 Disk Start            0000 (0)\n+22FF5A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22DC4B Ext File Attributes   00000000 (0)\n-22DC4F Local Header Offset   001374AB (1275051)\n-22DC53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22FF5C Ext File Attributes   00000000 (0)\n+22FF60 Local Header Offset   0014FAEA (1374954)\n+22FF64 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22DC53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22FF64: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22DC76 CENTRAL HEADER #1188  02014B50 (33639248)\n-22DC7A Created Zip Spec      14 (20) '2.0'\n-22DC7B Created OS            00 (0) 'MS-DOS'\n-22DC7C Extract Zip Spec      14 (20) '2.0'\n-22DC7D Extract OS            00 (0) 'MS-DOS'\n-22DC7E General Purpose Flag  0808 (2056)\n+22FFB4 CENTRAL HEADER #1188  02014B50 (33639248)\n+22FFB8 Created Zip Spec      14 (20) '2.0'\n+22FFB9 Created OS            00 (0) 'MS-DOS'\n+22FFBA Extract Zip Spec      14 (20) '2.0'\n+22FFBB Extract OS            00 (0) 'MS-DOS'\n+22FFBC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22DC80 Compression Method    0008 (8) 'Deflated'\n-22DC82 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22DC86 CRC                   6A4EF718 (1783559960)\n-22DC8A Compressed Size       000002C4 (708)\n-22DC8E Uncompressed Size     00000580 (1408)\n-22DC92 Filename Length       003B (59)\n-22DC94 Extra Length          0000 (0)\n-22DC96 Comment Length        0000 (0)\n-22DC98 Disk Start            0000 (0)\n-22DC9A Int File Attributes   0000 (0)\n+22FFBE Compression Method    0008 (8) 'Deflated'\n+22FFC0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+22FFC4 CRC                   0DCE7BD6 (231635926)\n+22FFC8 Compressed Size       0000024D (589)\n+22FFCC Uncompressed Size     00000419 (1049)\n+22FFD0 Filename Length       0032 (50)\n+22FFD2 Extra Length          0000 (0)\n+22FFD4 Comment Length        0000 (0)\n+22FFD6 Disk Start            0000 (0)\n+22FFD8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22DC9C Ext File Attributes   00000000 (0)\n-22DCA0 Local Header Offset   001374FE (1275134)\n-22DCA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+22FFDA Ext File Attributes   00000000 (0)\n+22FFDE Local Header Offset   0014FF65 (1376101)\n+22FFE2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22DCA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x22FFE2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22DCDF CENTRAL HEADER #1189  02014B50 (33639248)\n-22DCE3 Created Zip Spec      14 (20) '2.0'\n-22DCE4 Created OS            00 (0) 'MS-DOS'\n-22DCE5 Extract Zip Spec      14 (20) '2.0'\n-22DCE6 Extract OS            00 (0) 'MS-DOS'\n-22DCE7 General Purpose Flag  0808 (2056)\n+230014 CENTRAL HEADER #1189  02014B50 (33639248)\n+230018 Created Zip Spec      14 (20) '2.0'\n+230019 Created OS            00 (0) 'MS-DOS'\n+23001A Extract Zip Spec      14 (20) '2.0'\n+23001B Extract OS            00 (0) 'MS-DOS'\n+23001C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22DCE9 Compression Method    0008 (8) 'Deflated'\n-22DCEB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22DCEF CRC                   00000000 (0)\n-22DCF3 Compressed Size       00000002 (2)\n-22DCF7 Uncompressed Size     00000000 (0)\n-22DCFB Filename Length       0022 (34)\n-22DCFD Extra Length          0000 (0)\n-22DCFF Comment Length        0000 (0)\n-22DD01 Disk Start            0000 (0)\n-22DD03 Int File Attributes   0000 (0)\n+23001E Compression Method    0008 (8) 'Deflated'\n+230020 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230024 CRC                   00000000 (0)\n+230028 Compressed Size       00000002 (2)\n+23002C Uncompressed Size     00000000 (0)\n+230030 Filename Length       002A (42)\n+230032 Extra Length          0000 (0)\n+230034 Comment Length        0000 (0)\n+230036 Disk Start            0000 (0)\n+230038 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22DD05 Ext File Attributes   00000000 (0)\n-22DD09 Local Header Offset   0013782B (1275947)\n-22DD0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23003A Ext File Attributes   00000000 (0)\n+23003E Local Header Offset   00150212 (1376786)\n+230042 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22DD0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230042: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22DD2F CENTRAL HEADER #1190  02014B50 (33639248)\n-22DD33 Created Zip Spec      14 (20) '2.0'\n-22DD34 Created OS            00 (0) 'MS-DOS'\n-22DD35 Extract Zip Spec      14 (20) '2.0'\n-22DD36 Extract OS            00 (0) 'MS-DOS'\n-22DD37 General Purpose Flag  0808 (2056)\n+23006C CENTRAL HEADER #1190  02014B50 (33639248)\n+230070 Created Zip Spec      14 (20) '2.0'\n+230071 Created OS            00 (0) 'MS-DOS'\n+230072 Extract Zip Spec      14 (20) '2.0'\n+230073 Extract OS            00 (0) 'MS-DOS'\n+230074 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22DD39 Compression Method    0008 (8) 'Deflated'\n-22DD3B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22DD3F CRC                   B748FF21 (3075014433)\n-22DD43 Compressed Size       000007D3 (2003)\n-22DD47 Uncompressed Size     00001AD2 (6866)\n-22DD4B Filename Length       0032 (50)\n-22DD4D Extra Length          0000 (0)\n-22DD4F Comment Length        0000 (0)\n-22DD51 Disk Start            0000 (0)\n-22DD53 Int File Attributes   0000 (0)\n+230076 Compression Method    0008 (8) 'Deflated'\n+230078 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23007C CRC                   3EC7C431 (1053279281)\n+230080 Compressed Size       0000031E (798)\n+230084 Uncompressed Size     000006D8 (1752)\n+230088 Filename Length       004C (76)\n+23008A Extra Length          0000 (0)\n+23008C Comment Length        0000 (0)\n+23008E Disk Start            0000 (0)\n+230090 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22DD55 Ext File Attributes   00000000 (0)\n-22DD59 Local Header Offset   0013787D (1276029)\n-22DD5D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230092 Ext File Attributes   00000000 (0)\n+230096 Local Header Offset   0015026C (1376876)\n+23009A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22DD5D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23009A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22DD8F CENTRAL HEADER #1191  02014B50 (33639248)\n-22DD93 Created Zip Spec      14 (20) '2.0'\n-22DD94 Created OS            00 (0) 'MS-DOS'\n-22DD95 Extract Zip Spec      14 (20) '2.0'\n-22DD96 Extract OS            00 (0) 'MS-DOS'\n-22DD97 General Purpose Flag  0808 (2056)\n+2300E6 CENTRAL HEADER #1191  02014B50 (33639248)\n+2300EA Created Zip Spec      14 (20) '2.0'\n+2300EB Created OS            00 (0) 'MS-DOS'\n+2300EC Extract Zip Spec      14 (20) '2.0'\n+2300ED Extract OS            00 (0) 'MS-DOS'\n+2300EE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22DD99 Compression Method    0008 (8) 'Deflated'\n-22DD9B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22DD9F CRC                   BE2E03C3 (3190686659)\n-22DDA3 Compressed Size       00000481 (1153)\n-22DDA7 Uncompressed Size     00000A63 (2659)\n-22DDAB Filename Length       003A (58)\n-22DDAD Extra Length          0000 (0)\n-22DDAF Comment Length        0000 (0)\n-22DDB1 Disk Start            0000 (0)\n-22DDB3 Int File Attributes   0000 (0)\n+2300F0 Compression Method    0008 (8) 'Deflated'\n+2300F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2300F6 CRC                   0AF6711C (183922972)\n+2300FA Compressed Size       000002FF (767)\n+2300FE Uncompressed Size     000006CE (1742)\n+230102 Filename Length       0046 (70)\n+230104 Extra Length          0000 (0)\n+230106 Comment Length        0000 (0)\n+230108 Disk Start            0000 (0)\n+23010A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22DDB5 Ext File Attributes   00000000 (0)\n-22DDB9 Local Header Offset   001380B0 (1278128)\n-22DDBD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23010C Ext File Attributes   00000000 (0)\n+230110 Local Header Offset   00150604 (1377796)\n+230114 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22DDBD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230114: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22DDF7 CENTRAL HEADER #1192  02014B50 (33639248)\n-22DDFB Created Zip Spec      14 (20) '2.0'\n-22DDFC Created OS            00 (0) 'MS-DOS'\n-22DDFD Extract Zip Spec      14 (20) '2.0'\n-22DDFE Extract OS            00 (0) 'MS-DOS'\n-22DDFF General Purpose Flag  0808 (2056)\n+23015A CENTRAL HEADER #1192  02014B50 (33639248)\n+23015E Created Zip Spec      14 (20) '2.0'\n+23015F Created OS            00 (0) 'MS-DOS'\n+230160 Extract Zip Spec      14 (20) '2.0'\n+230161 Extract OS            00 (0) 'MS-DOS'\n+230162 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22DE01 Compression Method    0008 (8) 'Deflated'\n-22DE03 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22DE07 CRC                   00000000 (0)\n-22DE0B Compressed Size       00000002 (2)\n-22DE0F Uncompressed Size     00000000 (0)\n-22DE13 Filename Length       0026 (38)\n-22DE15 Extra Length          0000 (0)\n-22DE17 Comment Length        0000 (0)\n-22DE19 Disk Start            0000 (0)\n-22DE1B Int File Attributes   0000 (0)\n+230164 Compression Method    0008 (8) 'Deflated'\n+230166 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23016A CRC                   00000000 (0)\n+23016E Compressed Size       00000002 (2)\n+230172 Uncompressed Size     00000000 (0)\n+230176 Filename Length       0026 (38)\n+230178 Extra Length          0000 (0)\n+23017A Comment Length        0000 (0)\n+23017C Disk Start            0000 (0)\n+23017E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22DE1D Ext File Attributes   00000000 (0)\n-22DE21 Local Header Offset   00138599 (1279385)\n-22DE25 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230180 Ext File Attributes   00000000 (0)\n+230184 Local Header Offset   00150977 (1378679)\n+230188 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22DE25: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230188: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22DE4B CENTRAL HEADER #1193  02014B50 (33639248)\n-22DE4F Created Zip Spec      14 (20) '2.0'\n-22DE50 Created OS            00 (0) 'MS-DOS'\n-22DE51 Extract Zip Spec      14 (20) '2.0'\n-22DE52 Extract OS            00 (0) 'MS-DOS'\n-22DE53 General Purpose Flag  0808 (2056)\n+2301AE CENTRAL HEADER #1193  02014B50 (33639248)\n+2301B2 Created Zip Spec      14 (20) '2.0'\n+2301B3 Created OS            00 (0) 'MS-DOS'\n+2301B4 Extract Zip Spec      14 (20) '2.0'\n+2301B5 Extract OS            00 (0) 'MS-DOS'\n+2301B6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22DE55 Compression Method    0008 (8) 'Deflated'\n-22DE57 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22DE5B CRC                   0DF301D6 (234029526)\n-22DE5F Compressed Size       00000274 (628)\n-22DE63 Uncompressed Size     00000488 (1160)\n-22DE67 Filename Length       0034 (52)\n-22DE69 Extra Length          0000 (0)\n-22DE6B Comment Length        0000 (0)\n-22DE6D Disk Start            0000 (0)\n-22DE6F Int File Attributes   0000 (0)\n+2301B8 Compression Method    0008 (8) 'Deflated'\n+2301BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2301BE CRC                   AA7692A4 (2859897508)\n+2301C2 Compressed Size       00000552 (1362)\n+2301C6 Uncompressed Size     00000F95 (3989)\n+2301CA Filename Length       0047 (71)\n+2301CC Extra Length          0000 (0)\n+2301CE Comment Length        0000 (0)\n+2301D0 Disk Start            0000 (0)\n+2301D2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22DE71 Ext File Attributes   00000000 (0)\n-22DE75 Local Header Offset   001385EF (1279471)\n-22DE79 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2301D4 Ext File Attributes   00000000 (0)\n+2301D8 Local Header Offset   001509CD (1378765)\n+2301DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22DE79: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2301DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22DEAD CENTRAL HEADER #1194  02014B50 (33639248)\n-22DEB1 Created Zip Spec      14 (20) '2.0'\n-22DEB2 Created OS            00 (0) 'MS-DOS'\n-22DEB3 Extract Zip Spec      14 (20) '2.0'\n-22DEB4 Extract OS            00 (0) 'MS-DOS'\n-22DEB5 General Purpose Flag  0808 (2056)\n+230223 CENTRAL HEADER #1194  02014B50 (33639248)\n+230227 Created Zip Spec      14 (20) '2.0'\n+230228 Created OS            00 (0) 'MS-DOS'\n+230229 Extract Zip Spec      14 (20) '2.0'\n+23022A Extract OS            00 (0) 'MS-DOS'\n+23022B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22DEB7 Compression Method    0008 (8) 'Deflated'\n-22DEB9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22DEBD CRC                   280A6840 (671770688)\n-22DEC1 Compressed Size       000002FF (767)\n-22DEC5 Uncompressed Size     00000632 (1586)\n-22DEC9 Filename Length       004B (75)\n-22DECB Extra Length          0000 (0)\n-22DECD Comment Length        0000 (0)\n-22DECF Disk Start            0000 (0)\n-22DED1 Int File Attributes   0000 (0)\n+23022D Compression Method    0008 (8) 'Deflated'\n+23022F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230233 CRC                   B7357AFB (3073735419)\n+230237 Compressed Size       00000B61 (2913)\n+23023B Uncompressed Size     00002D19 (11545)\n+23023F Filename Length       003B (59)\n+230241 Extra Length          0000 (0)\n+230243 Comment Length        0000 (0)\n+230245 Disk Start            0000 (0)\n+230247 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22DED3 Ext File Attributes   00000000 (0)\n-22DED7 Local Header Offset   001388C5 (1280197)\n-22DEDB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230249 Ext File Attributes   00000000 (0)\n+23024D Local Header Offset   00150F94 (1380244)\n+230251 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22DEDB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230251: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22DF26 CENTRAL HEADER #1195  02014B50 (33639248)\n-22DF2A Created Zip Spec      14 (20) '2.0'\n-22DF2B Created OS            00 (0) 'MS-DOS'\n-22DF2C Extract Zip Spec      14 (20) '2.0'\n-22DF2D Extract OS            00 (0) 'MS-DOS'\n-22DF2E General Purpose Flag  0808 (2056)\n+23028C CENTRAL HEADER #1195  02014B50 (33639248)\n+230290 Created Zip Spec      14 (20) '2.0'\n+230291 Created OS            00 (0) 'MS-DOS'\n+230292 Extract Zip Spec      14 (20) '2.0'\n+230293 Extract OS            00 (0) 'MS-DOS'\n+230294 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22DF30 Compression Method    0008 (8) 'Deflated'\n-22DF32 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22DF36 CRC                   ED0697F4 (3976632308)\n-22DF3A Compressed Size       00000997 (2455)\n-22DF3E Uncompressed Size     000022BD (8893)\n-22DF42 Filename Length       003A (58)\n-22DF44 Extra Length          0000 (0)\n-22DF46 Comment Length        0000 (0)\n-22DF48 Disk Start            0000 (0)\n-22DF4A Int File Attributes   0000 (0)\n+230296 Compression Method    0008 (8) 'Deflated'\n+230298 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23029C CRC                   C79AC1A5 (3348808101)\n+2302A0 Compressed Size       00000429 (1065)\n+2302A4 Uncompressed Size     00000D0C (3340)\n+2302A8 Filename Length       004E (78)\n+2302AA Extra Length          0000 (0)\n+2302AC Comment Length        0000 (0)\n+2302AE Disk Start            0000 (0)\n+2302B0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22DF4C Ext File Attributes   00000000 (0)\n-22DF50 Local Header Offset   00138C3D (1281085)\n-22DF54 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2302B2 Ext File Attributes   00000000 (0)\n+2302B6 Local Header Offset   00151B5E (1383262)\n+2302BA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22DF54: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2302BA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22DF8E CENTRAL HEADER #1196  02014B50 (33639248)\n-22DF92 Created Zip Spec      14 (20) '2.0'\n-22DF93 Created OS            00 (0) 'MS-DOS'\n-22DF94 Extract Zip Spec      14 (20) '2.0'\n-22DF95 Extract OS            00 (0) 'MS-DOS'\n-22DF96 General Purpose Flag  0808 (2056)\n+230308 CENTRAL HEADER #1196  02014B50 (33639248)\n+23030C Created Zip Spec      14 (20) '2.0'\n+23030D Created OS            00 (0) 'MS-DOS'\n+23030E Extract Zip Spec      14 (20) '2.0'\n+23030F Extract OS            00 (0) 'MS-DOS'\n+230310 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22DF98 Compression Method    0008 (8) 'Deflated'\n-22DF9A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22DF9E CRC                   D14D14C7 (3511489735)\n-22DFA2 Compressed Size       00000433 (1075)\n-22DFA6 Uncompressed Size     00000CF4 (3316)\n-22DFAA Filename Length       003F (63)\n-22DFAC Extra Length          0000 (0)\n-22DFAE Comment Length        0000 (0)\n-22DFB0 Disk Start            0000 (0)\n-22DFB2 Int File Attributes   0000 (0)\n+230312 Compression Method    0008 (8) 'Deflated'\n+230314 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230318 CRC                   09C52AF8 (163916536)\n+23031C Compressed Size       00000213 (531)\n+230320 Uncompressed Size     000003A9 (937)\n+230324 Filename Length       0042 (66)\n+230326 Extra Length          0000 (0)\n+230328 Comment Length        0000 (0)\n+23032A Disk Start            0000 (0)\n+23032C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22DFB4 Ext File Attributes   00000000 (0)\n-22DFB8 Local Header Offset   0013963C (1283644)\n-22DFBC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23032E Ext File Attributes   00000000 (0)\n+230332 Local Header Offset   00152003 (1384451)\n+230336 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22DFBC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230336: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22DFFB CENTRAL HEADER #1197  02014B50 (33639248)\n-22DFFF Created Zip Spec      14 (20) '2.0'\n-22E000 Created OS            00 (0) 'MS-DOS'\n-22E001 Extract Zip Spec      14 (20) '2.0'\n-22E002 Extract OS            00 (0) 'MS-DOS'\n-22E003 General Purpose Flag  0808 (2056)\n+230378 CENTRAL HEADER #1197  02014B50 (33639248)\n+23037C Created Zip Spec      14 (20) '2.0'\n+23037D Created OS            00 (0) 'MS-DOS'\n+23037E Extract Zip Spec      14 (20) '2.0'\n+23037F Extract OS            00 (0) 'MS-DOS'\n+230380 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E005 Compression Method    0008 (8) 'Deflated'\n-22E007 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E00B CRC                   EE95F899 (4002805913)\n-22E00F Compressed Size       000003B9 (953)\n-22E013 Uncompressed Size     00000925 (2341)\n-22E017 Filename Length       0046 (70)\n-22E019 Extra Length          0000 (0)\n-22E01B Comment Length        0000 (0)\n-22E01D Disk Start            0000 (0)\n-22E01F Int File Attributes   0000 (0)\n+230382 Compression Method    0008 (8) 'Deflated'\n+230384 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230388 CRC                   963EDCDB (2520702171)\n+23038C Compressed Size       00001A00 (6656)\n+230390 Uncompressed Size     0000723A (29242)\n+230394 Filename Length       003C (60)\n+230396 Extra Length          0000 (0)\n+230398 Comment Length        0000 (0)\n+23039A Disk Start            0000 (0)\n+23039C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E021 Ext File Attributes   00000000 (0)\n-22E025 Local Header Offset   00139ADC (1284828)\n-22E029 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23039E Ext File Attributes   00000000 (0)\n+2303A2 Local Header Offset   00152286 (1385094)\n+2303A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E029: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2303A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E06F CENTRAL HEADER #1198  02014B50 (33639248)\n-22E073 Created Zip Spec      14 (20) '2.0'\n-22E074 Created OS            00 (0) 'MS-DOS'\n-22E075 Extract Zip Spec      14 (20) '2.0'\n-22E076 Extract OS            00 (0) 'MS-DOS'\n-22E077 General Purpose Flag  0808 (2056)\n+2303E2 CENTRAL HEADER #1198  02014B50 (33639248)\n+2303E6 Created Zip Spec      14 (20) '2.0'\n+2303E7 Created OS            00 (0) 'MS-DOS'\n+2303E8 Extract Zip Spec      14 (20) '2.0'\n+2303E9 Extract OS            00 (0) 'MS-DOS'\n+2303EA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E079 Compression Method    0008 (8) 'Deflated'\n-22E07B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E07F CRC                   00000000 (0)\n-22E083 Compressed Size       00000002 (2)\n-22E087 Uncompressed Size     00000000 (0)\n-22E08B Filename Length       0029 (41)\n-22E08D Extra Length          0000 (0)\n-22E08F Comment Length        0000 (0)\n-22E091 Disk Start            0000 (0)\n-22E093 Int File Attributes   0000 (0)\n+2303EC Compression Method    0008 (8) 'Deflated'\n+2303EE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2303F2 CRC                   180ADDBE (403365310)\n+2303F6 Compressed Size       00001F09 (7945)\n+2303FA Uncompressed Size     000095B9 (38329)\n+2303FE Filename Length       003B (59)\n+230400 Extra Length          0000 (0)\n+230402 Comment Length        0000 (0)\n+230404 Disk Start            0000 (0)\n+230406 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E095 Ext File Attributes   00000000 (0)\n-22E099 Local Header Offset   00139F09 (1285897)\n-22E09D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230408 Ext File Attributes   00000000 (0)\n+23040C Local Header Offset   00153CF0 (1391856)\n+230410 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E09D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230410: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E0C6 CENTRAL HEADER #1199  02014B50 (33639248)\n-22E0CA Created Zip Spec      14 (20) '2.0'\n-22E0CB Created OS            00 (0) 'MS-DOS'\n-22E0CC Extract Zip Spec      14 (20) '2.0'\n-22E0CD Extract OS            00 (0) 'MS-DOS'\n-22E0CE General Purpose Flag  0808 (2056)\n+23044B CENTRAL HEADER #1199  02014B50 (33639248)\n+23044F Created Zip Spec      14 (20) '2.0'\n+230450 Created OS            00 (0) 'MS-DOS'\n+230451 Extract Zip Spec      14 (20) '2.0'\n+230452 Extract OS            00 (0) 'MS-DOS'\n+230453 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E0D0 Compression Method    0008 (8) 'Deflated'\n-22E0D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E0D6 CRC                   BD5DBB91 (3177036689)\n-22E0DA Compressed Size       000009A0 (2464)\n-22E0DE Uncompressed Size     000022E9 (8937)\n-22E0E2 Filename Length       0040 (64)\n-22E0E4 Extra Length          0000 (0)\n-22E0E6 Comment Length        0000 (0)\n-22E0E8 Disk Start            0000 (0)\n-22E0EA Int File Attributes   0000 (0)\n+230455 Compression Method    0008 (8) 'Deflated'\n+230457 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23045B CRC                   7701B7FD (1996601341)\n+23045F Compressed Size       0000036E (878)\n+230463 Uncompressed Size     00000864 (2148)\n+230467 Filename Length       0043 (67)\n+230469 Extra Length          0000 (0)\n+23046B Comment Length        0000 (0)\n+23046D Disk Start            0000 (0)\n+23046F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E0EC Ext File Attributes   00000000 (0)\n-22E0F0 Local Header Offset   00139F62 (1285986)\n-22E0F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230471 Ext File Attributes   00000000 (0)\n+230475 Local Header Offset   00155C62 (1399906)\n+230479 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E0F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230479: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E134 CENTRAL HEADER #1200  02014B50 (33639248)\n-22E138 Created Zip Spec      14 (20) '2.0'\n-22E139 Created OS            00 (0) 'MS-DOS'\n-22E13A Extract Zip Spec      14 (20) '2.0'\n-22E13B Extract OS            00 (0) 'MS-DOS'\n-22E13C General Purpose Flag  0808 (2056)\n+2304BC CENTRAL HEADER #1200  02014B50 (33639248)\n+2304C0 Created Zip Spec      14 (20) '2.0'\n+2304C1 Created OS            00 (0) 'MS-DOS'\n+2304C2 Extract Zip Spec      14 (20) '2.0'\n+2304C3 Extract OS            00 (0) 'MS-DOS'\n+2304C4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E13E Compression Method    0008 (8) 'Deflated'\n-22E140 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E144 CRC                   00000000 (0)\n-22E148 Compressed Size       00000002 (2)\n-22E14C Uncompressed Size     00000000 (0)\n-22E150 Filename Length       0025 (37)\n-22E152 Extra Length          0000 (0)\n-22E154 Comment Length        0000 (0)\n-22E156 Disk Start            0000 (0)\n-22E158 Int File Attributes   0000 (0)\n+2304C6 Compression Method    0008 (8) 'Deflated'\n+2304C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2304CC CRC                   00000000 (0)\n+2304D0 Compressed Size       00000002 (2)\n+2304D4 Uncompressed Size     00000000 (0)\n+2304D8 Filename Length       0020 (32)\n+2304DA Extra Length          0000 (0)\n+2304DC Comment Length        0000 (0)\n+2304DE Disk Start            0000 (0)\n+2304E0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E15A Ext File Attributes   00000000 (0)\n-22E15E Local Header Offset   0013A970 (1288560)\n-22E162 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2304E2 Ext File Attributes   00000000 (0)\n+2304E6 Local Header Offset   00156041 (1400897)\n+2304EA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E162: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2304EA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E187 CENTRAL HEADER #1201  02014B50 (33639248)\n-22E18B Created Zip Spec      14 (20) '2.0'\n-22E18C Created OS            00 (0) 'MS-DOS'\n-22E18D Extract Zip Spec      14 (20) '2.0'\n-22E18E Extract OS            00 (0) 'MS-DOS'\n-22E18F General Purpose Flag  0808 (2056)\n+23050A CENTRAL HEADER #1201  02014B50 (33639248)\n+23050E Created Zip Spec      14 (20) '2.0'\n+23050F Created OS            00 (0) 'MS-DOS'\n+230510 Extract Zip Spec      14 (20) '2.0'\n+230511 Extract OS            00 (0) 'MS-DOS'\n+230512 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E191 Compression Method    0008 (8) 'Deflated'\n-22E193 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E197 CRC                   338329BB (864233915)\n-22E19B Compressed Size       0000028D (653)\n-22E19F Uncompressed Size     000004C3 (1219)\n-22E1A3 Filename Length       003C (60)\n-22E1A5 Extra Length          0000 (0)\n-22E1A7 Comment Length        0000 (0)\n-22E1A9 Disk Start            0000 (0)\n-22E1AB Int File Attributes   0000 (0)\n+230514 Compression Method    0008 (8) 'Deflated'\n+230516 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23051A CRC                   B5B90B55 (3048803157)\n+23051E Compressed Size       000005EC (1516)\n+230522 Uncompressed Size     000011CD (4557)\n+230526 Filename Length       0036 (54)\n+230528 Extra Length          0000 (0)\n+23052A Comment Length        0000 (0)\n+23052C Disk Start            0000 (0)\n+23052E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E1AD Ext File Attributes   00000000 (0)\n-22E1B1 Local Header Offset   0013A9C5 (1288645)\n-22E1B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230530 Ext File Attributes   00000000 (0)\n+230534 Local Header Offset   00156091 (1400977)\n+230538 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E1B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230538: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E1F1 CENTRAL HEADER #1202  02014B50 (33639248)\n-22E1F5 Created Zip Spec      14 (20) '2.0'\n-22E1F6 Created OS            00 (0) 'MS-DOS'\n-22E1F7 Extract Zip Spec      14 (20) '2.0'\n-22E1F8 Extract OS            00 (0) 'MS-DOS'\n-22E1F9 General Purpose Flag  0808 (2056)\n+23056E CENTRAL HEADER #1202  02014B50 (33639248)\n+230572 Created Zip Spec      14 (20) '2.0'\n+230573 Created OS            00 (0) 'MS-DOS'\n+230574 Extract Zip Spec      14 (20) '2.0'\n+230575 Extract OS            00 (0) 'MS-DOS'\n+230576 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E1FB Compression Method    0008 (8) 'Deflated'\n-22E1FD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E201 CRC                   3B13030C (991101708)\n-22E205 Compressed Size       000002B3 (691)\n-22E209 Uncompressed Size     0000059C (1436)\n-22E20D Filename Length       0041 (65)\n-22E20F Extra Length          0000 (0)\n-22E211 Comment Length        0000 (0)\n-22E213 Disk Start            0000 (0)\n-22E215 Int File Attributes   0000 (0)\n+230578 Compression Method    0008 (8) 'Deflated'\n+23057A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23057E CRC                   5117C509 (1360512265)\n+230582 Compressed Size       000002C3 (707)\n+230586 Uncompressed Size     000005CF (1487)\n+23058A Filename Length       0039 (57)\n+23058C Extra Length          0000 (0)\n+23058E Comment Length        0000 (0)\n+230590 Disk Start            0000 (0)\n+230592 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E217 Ext File Attributes   00000000 (0)\n-22E21B Local Header Offset   0013ACBC (1289404)\n-22E21F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230594 Ext File Attributes   00000000 (0)\n+230598 Local Header Offset   001566E1 (1402593)\n+23059C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E21F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23059C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E260 CENTRAL HEADER #1203  02014B50 (33639248)\n-22E264 Created Zip Spec      14 (20) '2.0'\n-22E265 Created OS            00 (0) 'MS-DOS'\n-22E266 Extract Zip Spec      14 (20) '2.0'\n-22E267 Extract OS            00 (0) 'MS-DOS'\n-22E268 General Purpose Flag  0808 (2056)\n+2305D5 CENTRAL HEADER #1203  02014B50 (33639248)\n+2305D9 Created Zip Spec      14 (20) '2.0'\n+2305DA Created OS            00 (0) 'MS-DOS'\n+2305DB Extract Zip Spec      14 (20) '2.0'\n+2305DC Extract OS            00 (0) 'MS-DOS'\n+2305DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E26A Compression Method    0008 (8) 'Deflated'\n-22E26C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E270 CRC                   45D210E4 (1171394788)\n-22E274 Compressed Size       000002BA (698)\n-22E278 Uncompressed Size     000005CE (1486)\n-22E27C Filename Length       0042 (66)\n-22E27E Extra Length          0000 (0)\n-22E280 Comment Length        0000 (0)\n-22E282 Disk Start            0000 (0)\n-22E284 Int File Attributes   0000 (0)\n+2305DF Compression Method    0008 (8) 'Deflated'\n+2305E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2305E5 CRC                   FCC4145B (4240708699)\n+2305E9 Compressed Size       00000315 (789)\n+2305ED Uncompressed Size     000006E0 (1760)\n+2305F1 Filename Length       0039 (57)\n+2305F3 Extra Length          0000 (0)\n+2305F5 Comment Length        0000 (0)\n+2305F7 Disk Start            0000 (0)\n+2305F9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E286 Ext File Attributes   00000000 (0)\n-22E28A Local Header Offset   0013AFDE (1290206)\n-22E28E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2305FB Ext File Attributes   00000000 (0)\n+2305FF Local Header Offset   00156A0B (1403403)\n+230603 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E28E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230603: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E2D0 CENTRAL HEADER #1204  02014B50 (33639248)\n-22E2D4 Created Zip Spec      14 (20) '2.0'\n-22E2D5 Created OS            00 (0) 'MS-DOS'\n-22E2D6 Extract Zip Spec      14 (20) '2.0'\n-22E2D7 Extract OS            00 (0) 'MS-DOS'\n-22E2D8 General Purpose Flag  0808 (2056)\n+23063C CENTRAL HEADER #1204  02014B50 (33639248)\n+230640 Created Zip Spec      14 (20) '2.0'\n+230641 Created OS            00 (0) 'MS-DOS'\n+230642 Extract Zip Spec      14 (20) '2.0'\n+230643 Extract OS            00 (0) 'MS-DOS'\n+230644 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E2DA Compression Method    0008 (8) 'Deflated'\n-22E2DC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E2E0 CRC                   FCFC2855 (4244383829)\n-22E2E4 Compressed Size       000011DF (4575)\n-22E2E8 Uncompressed Size     00006050 (24656)\n-22E2EC Filename Length       0035 (53)\n-22E2EE Extra Length          0000 (0)\n-22E2F0 Comment Length        0000 (0)\n-22E2F2 Disk Start            0000 (0)\n-22E2F4 Int File Attributes   0000 (0)\n+230646 Compression Method    0008 (8) 'Deflated'\n+230648 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23064C CRC                   A6BC7A6B (2797369963)\n+230650 Compressed Size       000002C6 (710)\n+230654 Uncompressed Size     000005DB (1499)\n+230658 Filename Length       003B (59)\n+23065A Extra Length          0000 (0)\n+23065C Comment Length        0000 (0)\n+23065E Disk Start            0000 (0)\n+230660 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E2F6 Ext File Attributes   00000000 (0)\n-22E2FA Local Header Offset   0013B308 (1291016)\n-22E2FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230662 Ext File Attributes   00000000 (0)\n+230666 Local Header Offset   00156D87 (1404295)\n+23066A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E2FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23066A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E333 CENTRAL HEADER #1205  02014B50 (33639248)\n-22E337 Created Zip Spec      14 (20) '2.0'\n-22E338 Created OS            00 (0) 'MS-DOS'\n-22E339 Extract Zip Spec      14 (20) '2.0'\n-22E33A Extract OS            00 (0) 'MS-DOS'\n-22E33B General Purpose Flag  0808 (2056)\n+2306A5 CENTRAL HEADER #1205  02014B50 (33639248)\n+2306A9 Created Zip Spec      14 (20) '2.0'\n+2306AA Created OS            00 (0) 'MS-DOS'\n+2306AB Extract Zip Spec      14 (20) '2.0'\n+2306AC Extract OS            00 (0) 'MS-DOS'\n+2306AD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E33D Compression Method    0008 (8) 'Deflated'\n-22E33F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E343 CRC                   F36E07A4 (4084074404)\n-22E347 Compressed Size       000002B5 (693)\n-22E34B Uncompressed Size     00000528 (1320)\n-22E34F Filename Length       0039 (57)\n-22E351 Extra Length          0000 (0)\n-22E353 Comment Length        0000 (0)\n-22E355 Disk Start            0000 (0)\n-22E357 Int File Attributes   0000 (0)\n+2306AF Compression Method    0008 (8) 'Deflated'\n+2306B1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2306B5 CRC                   CDD77CC5 (3453451461)\n+2306B9 Compressed Size       00000317 (791)\n+2306BD Uncompressed Size     000006EA (1770)\n+2306C1 Filename Length       003B (59)\n+2306C3 Extra Length          0000 (0)\n+2306C5 Comment Length        0000 (0)\n+2306C7 Disk Start            0000 (0)\n+2306C9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E359 Ext File Attributes   00000000 (0)\n-22E35D Local Header Offset   0013C54A (1295690)\n-22E361 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2306CB Ext File Attributes   00000000 (0)\n+2306CF Local Header Offset   001570B6 (1405110)\n+2306D3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E361: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2306D3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E39A CENTRAL HEADER #1206  02014B50 (33639248)\n-22E39E Created Zip Spec      14 (20) '2.0'\n-22E39F Created OS            00 (0) 'MS-DOS'\n-22E3A0 Extract Zip Spec      14 (20) '2.0'\n-22E3A1 Extract OS            00 (0) 'MS-DOS'\n-22E3A2 General Purpose Flag  0808 (2056)\n+23070E CENTRAL HEADER #1206  02014B50 (33639248)\n+230712 Created Zip Spec      14 (20) '2.0'\n+230713 Created OS            00 (0) 'MS-DOS'\n+230714 Extract Zip Spec      14 (20) '2.0'\n+230715 Extract OS            00 (0) 'MS-DOS'\n+230716 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E3A4 Compression Method    0008 (8) 'Deflated'\n-22E3A6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E3AA CRC                   4E01C35D (1308738397)\n-22E3AE Compressed Size       000007FF (2047)\n-22E3B2 Uncompressed Size     000017D8 (6104)\n-22E3B6 Filename Length       0037 (55)\n-22E3B8 Extra Length          0000 (0)\n-22E3BA Comment Length        0000 (0)\n-22E3BC Disk Start            0000 (0)\n-22E3BE Int File Attributes   0000 (0)\n+230718 Compression Method    0008 (8) 'Deflated'\n+23071A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23071E CRC                   5112EBCA (1360194506)\n+230722 Compressed Size       000002CC (716)\n+230726 Uncompressed Size     000005C7 (1479)\n+23072A Filename Length       0031 (49)\n+23072C Extra Length          0000 (0)\n+23072E Comment Length        0000 (0)\n+230730 Disk Start            0000 (0)\n+230732 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E3C0 Ext File Attributes   00000000 (0)\n-22E3C4 Local Header Offset   0013C866 (1296486)\n-22E3C8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230734 Ext File Attributes   00000000 (0)\n+230738 Local Header Offset   00157436 (1406006)\n+23073C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E3C8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23073C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E3FF CENTRAL HEADER #1207  02014B50 (33639248)\n-22E403 Created Zip Spec      14 (20) '2.0'\n-22E404 Created OS            00 (0) 'MS-DOS'\n-22E405 Extract Zip Spec      14 (20) '2.0'\n-22E406 Extract OS            00 (0) 'MS-DOS'\n-22E407 General Purpose Flag  0808 (2056)\n+23076D CENTRAL HEADER #1207  02014B50 (33639248)\n+230771 Created Zip Spec      14 (20) '2.0'\n+230772 Created OS            00 (0) 'MS-DOS'\n+230773 Extract Zip Spec      14 (20) '2.0'\n+230774 Extract OS            00 (0) 'MS-DOS'\n+230775 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E409 Compression Method    0008 (8) 'Deflated'\n-22E40B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E40F CRC                   CCF50709 (3438610185)\n-22E413 Compressed Size       00000555 (1365)\n-22E417 Uncompressed Size     00000F33 (3891)\n-22E41B Filename Length       003B (59)\n-22E41D Extra Length          0000 (0)\n-22E41F Comment Length        0000 (0)\n-22E421 Disk Start            0000 (0)\n-22E423 Int File Attributes   0000 (0)\n+230777 Compression Method    0008 (8) 'Deflated'\n+230779 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23077D CRC                   00000000 (0)\n+230781 Compressed Size       00000002 (2)\n+230785 Uncompressed Size     00000000 (0)\n+230789 Filename Length       0021 (33)\n+23078B Extra Length          0000 (0)\n+23078D Comment Length        0000 (0)\n+23078F Disk Start            0000 (0)\n+230791 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E425 Ext File Attributes   00000000 (0)\n-22E429 Local Header Offset   0013D0CA (1298634)\n-22E42D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230793 Ext File Attributes   00000000 (0)\n+230797 Local Header Offset   00157761 (1406817)\n+23079B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E42D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23079B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E468 CENTRAL HEADER #1208  02014B50 (33639248)\n-22E46C Created Zip Spec      14 (20) '2.0'\n-22E46D Created OS            00 (0) 'MS-DOS'\n-22E46E Extract Zip Spec      14 (20) '2.0'\n-22E46F Extract OS            00 (0) 'MS-DOS'\n-22E470 General Purpose Flag  0808 (2056)\n+2307BC CENTRAL HEADER #1208  02014B50 (33639248)\n+2307C0 Created Zip Spec      14 (20) '2.0'\n+2307C1 Created OS            00 (0) 'MS-DOS'\n+2307C2 Extract Zip Spec      14 (20) '2.0'\n+2307C3 Extract OS            00 (0) 'MS-DOS'\n+2307C4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E472 Compression Method    0008 (8) 'Deflated'\n-22E474 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E478 CRC                   8C523252 (2354197074)\n-22E47C Compressed Size       00000AA5 (2725)\n-22E480 Uncompressed Size     0000268F (9871)\n-22E484 Filename Length       0038 (56)\n-22E486 Extra Length          0000 (0)\n-22E488 Comment Length        0000 (0)\n-22E48A Disk Start            0000 (0)\n-22E48C Int File Attributes   0000 (0)\n+2307C6 Compression Method    0008 (8) 'Deflated'\n+2307C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2307CC CRC                   F2E8FAB9 (4075354809)\n+2307D0 Compressed Size       00000369 (873)\n+2307D4 Uncompressed Size     00000826 (2086)\n+2307D8 Filename Length       003B (59)\n+2307DA Extra Length          0000 (0)\n+2307DC Comment Length        0000 (0)\n+2307DE Disk Start            0000 (0)\n+2307E0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E48E Ext File Attributes   00000000 (0)\n-22E492 Local Header Offset   0013D688 (1300104)\n-22E496 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2307E2 Ext File Attributes   00000000 (0)\n+2307E6 Local Header Offset   001577B2 (1406898)\n+2307EA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E496: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2307EA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E4CE CENTRAL HEADER #1209  02014B50 (33639248)\n-22E4D2 Created Zip Spec      14 (20) '2.0'\n-22E4D3 Created OS            00 (0) 'MS-DOS'\n-22E4D4 Extract Zip Spec      14 (20) '2.0'\n-22E4D5 Extract OS            00 (0) 'MS-DOS'\n-22E4D6 General Purpose Flag  0808 (2056)\n+230825 CENTRAL HEADER #1209  02014B50 (33639248)\n+230829 Created Zip Spec      14 (20) '2.0'\n+23082A Created OS            00 (0) 'MS-DOS'\n+23082B Extract Zip Spec      14 (20) '2.0'\n+23082C Extract OS            00 (0) 'MS-DOS'\n+23082D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E4D8 Compression Method    0008 (8) 'Deflated'\n-22E4DA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E4DE CRC                   CBF7FEA9 (3422027433)\n-22E4E2 Compressed Size       0000033C (828)\n-22E4E6 Uncompressed Size     0000066C (1644)\n-22E4EA Filename Length       0034 (52)\n-22E4EC Extra Length          0000 (0)\n-22E4EE Comment Length        0000 (0)\n-22E4F0 Disk Start            0000 (0)\n-22E4F2 Int File Attributes   0000 (0)\n+23082F Compression Method    0008 (8) 'Deflated'\n+230831 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230835 CRC                   00000000 (0)\n+230839 Compressed Size       00000002 (2)\n+23083D Uncompressed Size     00000000 (0)\n+230841 Filename Length       0022 (34)\n+230843 Extra Length          0000 (0)\n+230845 Comment Length        0000 (0)\n+230847 Disk Start            0000 (0)\n+230849 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E4F4 Ext File Attributes   00000000 (0)\n-22E4F8 Local Header Offset   0013E193 (1302931)\n-22E4FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23084B Ext File Attributes   00000000 (0)\n+23084F Local Header Offset   00157B84 (1407876)\n+230853 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E4FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230853: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E530 CENTRAL HEADER #1210  02014B50 (33639248)\n-22E534 Created Zip Spec      14 (20) '2.0'\n-22E535 Created OS            00 (0) 'MS-DOS'\n-22E536 Extract Zip Spec      14 (20) '2.0'\n-22E537 Extract OS            00 (0) 'MS-DOS'\n-22E538 General Purpose Flag  0808 (2056)\n+230875 CENTRAL HEADER #1210  02014B50 (33639248)\n+230879 Created Zip Spec      14 (20) '2.0'\n+23087A Created OS            00 (0) 'MS-DOS'\n+23087B Extract Zip Spec      14 (20) '2.0'\n+23087C Extract OS            00 (0) 'MS-DOS'\n+23087D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E53A Compression Method    0008 (8) 'Deflated'\n-22E53C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E540 CRC                   FD7FF5E7 (4253021671)\n-22E544 Compressed Size       000003F1 (1009)\n-22E548 Uncompressed Size     0000107A (4218)\n-22E54C Filename Length       0035 (53)\n-22E54E Extra Length          0000 (0)\n-22E550 Comment Length        0000 (0)\n-22E552 Disk Start            0000 (0)\n-22E554 Int File Attributes   0000 (0)\n+23087F Compression Method    0008 (8) 'Deflated'\n+230881 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230885 CRC                   5DDCD4C5 (1574753477)\n+230889 Compressed Size       0000124E (4686)\n+23088D Uncompressed Size     0000537F (21375)\n+230891 Filename Length       0037 (55)\n+230893 Extra Length          0000 (0)\n+230895 Comment Length        0000 (0)\n+230897 Disk Start            0000 (0)\n+230899 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E556 Ext File Attributes   00000000 (0)\n-22E55A Local Header Offset   0013E531 (1303857)\n-22E55E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23089B Ext File Attributes   00000000 (0)\n+23089F Local Header Offset   00157BD6 (1407958)\n+2308A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E55E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2308A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E593 CENTRAL HEADER #1211  02014B50 (33639248)\n-22E597 Created Zip Spec      14 (20) '2.0'\n-22E598 Created OS            00 (0) 'MS-DOS'\n-22E599 Extract Zip Spec      14 (20) '2.0'\n-22E59A Extract OS            00 (0) 'MS-DOS'\n-22E59B General Purpose Flag  0808 (2056)\n+2308DA CENTRAL HEADER #1211  02014B50 (33639248)\n+2308DE Created Zip Spec      14 (20) '2.0'\n+2308DF Created OS            00 (0) 'MS-DOS'\n+2308E0 Extract Zip Spec      14 (20) '2.0'\n+2308E1 Extract OS            00 (0) 'MS-DOS'\n+2308E2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E59D Compression Method    0008 (8) 'Deflated'\n-22E59F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E5A3 CRC                   00000000 (0)\n-22E5A7 Compressed Size       00000002 (2)\n-22E5AB Uncompressed Size     00000000 (0)\n-22E5AF Filename Length       0029 (41)\n-22E5B1 Extra Length          0000 (0)\n-22E5B3 Comment Length        0000 (0)\n-22E5B5 Disk Start            0000 (0)\n-22E5B7 Int File Attributes   0000 (0)\n+2308E4 Compression Method    0008 (8) 'Deflated'\n+2308E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2308EA CRC                   5BC81E29 (1539841577)\n+2308EE Compressed Size       000008C4 (2244)\n+2308F2 Uncompressed Size     00001D8A (7562)\n+2308F6 Filename Length       003E (62)\n+2308F8 Extra Length          0000 (0)\n+2308FA Comment Length        0000 (0)\n+2308FC Disk Start            0000 (0)\n+2308FE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E5B9 Ext File Attributes   00000000 (0)\n-22E5BD Local Header Offset   0013E985 (1304965)\n-22E5C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230900 Ext File Attributes   00000000 (0)\n+230904 Local Header Offset   00158E89 (1412745)\n+230908 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E5C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230908: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E5EA CENTRAL HEADER #1212  02014B50 (33639248)\n-22E5EE Created Zip Spec      14 (20) '2.0'\n-22E5EF Created OS            00 (0) 'MS-DOS'\n-22E5F0 Extract Zip Spec      14 (20) '2.0'\n-22E5F1 Extract OS            00 (0) 'MS-DOS'\n-22E5F2 General Purpose Flag  0808 (2056)\n+230946 CENTRAL HEADER #1212  02014B50 (33639248)\n+23094A Created Zip Spec      14 (20) '2.0'\n+23094B Created OS            00 (0) 'MS-DOS'\n+23094C Extract Zip Spec      14 (20) '2.0'\n+23094D Extract OS            00 (0) 'MS-DOS'\n+23094E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E5F4 Compression Method    0008 (8) 'Deflated'\n-22E5F6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E5FA CRC                   6A1A9325 (1780126501)\n-22E5FE Compressed Size       00000585 (1413)\n-22E602 Uncompressed Size     0000103E (4158)\n-22E606 Filename Length       0043 (67)\n-22E608 Extra Length          0000 (0)\n-22E60A Comment Length        0000 (0)\n-22E60C Disk Start            0000 (0)\n-22E60E Int File Attributes   0000 (0)\n+230950 Compression Method    0008 (8) 'Deflated'\n+230952 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230956 CRC                   A266F3B2 (2724656050)\n+23095A Compressed Size       00000BED (3053)\n+23095E Uncompressed Size     0000462E (17966)\n+230962 Filename Length       0037 (55)\n+230964 Extra Length          0000 (0)\n+230966 Comment Length        0000 (0)\n+230968 Disk Start            0000 (0)\n+23096A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E610 Ext File Attributes   00000000 (0)\n-22E614 Local Header Offset   0013E9DE (1305054)\n-22E618 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23096C Ext File Attributes   00000000 (0)\n+230970 Local Header Offset   001597B9 (1415097)\n+230974 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E618: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230974: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E65B CENTRAL HEADER #1213  02014B50 (33639248)\n-22E65F Created Zip Spec      14 (20) '2.0'\n-22E660 Created OS            00 (0) 'MS-DOS'\n-22E661 Extract Zip Spec      14 (20) '2.0'\n-22E662 Extract OS            00 (0) 'MS-DOS'\n-22E663 General Purpose Flag  0808 (2056)\n+2309AB CENTRAL HEADER #1213  02014B50 (33639248)\n+2309AF Created Zip Spec      14 (20) '2.0'\n+2309B0 Created OS            00 (0) 'MS-DOS'\n+2309B1 Extract Zip Spec      14 (20) '2.0'\n+2309B2 Extract OS            00 (0) 'MS-DOS'\n+2309B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E665 Compression Method    0008 (8) 'Deflated'\n-22E667 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E66B CRC                   00000000 (0)\n-22E66F Compressed Size       00000002 (2)\n-22E673 Uncompressed Size     00000000 (0)\n-22E677 Filename Length       0028 (40)\n-22E679 Extra Length          0000 (0)\n-22E67B Comment Length        0000 (0)\n-22E67D Disk Start            0000 (0)\n-22E67F Int File Attributes   0000 (0)\n+2309B5 Compression Method    0008 (8) 'Deflated'\n+2309B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2309BB CRC                   952E3CF5 (2502835445)\n+2309BF Compressed Size       000002C7 (711)\n+2309C3 Uncompressed Size     00000552 (1362)\n+2309C7 Filename Length       0043 (67)\n+2309C9 Extra Length          0000 (0)\n+2309CB Comment Length        0000 (0)\n+2309CD Disk Start            0000 (0)\n+2309CF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E681 Ext File Attributes   00000000 (0)\n-22E685 Local Header Offset   0013EFD4 (1306580)\n-22E689 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2309D1 Ext File Attributes   00000000 (0)\n+2309D5 Local Header Offset   0015A40B (1418251)\n+2309D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E689: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2309D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E6B1 CENTRAL HEADER #1214  02014B50 (33639248)\n-22E6B5 Created Zip Spec      14 (20) '2.0'\n-22E6B6 Created OS            00 (0) 'MS-DOS'\n-22E6B7 Extract Zip Spec      14 (20) '2.0'\n-22E6B8 Extract OS            00 (0) 'MS-DOS'\n-22E6B9 General Purpose Flag  0808 (2056)\n+230A1C CENTRAL HEADER #1214  02014B50 (33639248)\n+230A20 Created Zip Spec      14 (20) '2.0'\n+230A21 Created OS            00 (0) 'MS-DOS'\n+230A22 Extract Zip Spec      14 (20) '2.0'\n+230A23 Extract OS            00 (0) 'MS-DOS'\n+230A24 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E6BB Compression Method    0008 (8) 'Deflated'\n-22E6BD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E6C1 CRC                   021D9C13 (35494931)\n-22E6C5 Compressed Size       0000034D (845)\n-22E6C9 Uncompressed Size     00000951 (2385)\n-22E6CD Filename Length       003F (63)\n-22E6CF Extra Length          0000 (0)\n-22E6D1 Comment Length        0000 (0)\n-22E6D3 Disk Start            0000 (0)\n-22E6D5 Int File Attributes   0000 (0)\n+230A26 Compression Method    0008 (8) 'Deflated'\n+230A28 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230A2C CRC                   290EDBFF (688839679)\n+230A30 Compressed Size       00000040 (64)\n+230A34 Uncompressed Size     00000049 (73)\n+230A38 Filename Length       0052 (82)\n+230A3A Extra Length          0000 (0)\n+230A3C Comment Length        0000 (0)\n+230A3E Disk Start            0000 (0)\n+230A40 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E6D7 Ext File Attributes   00000000 (0)\n-22E6DB Local Header Offset   0013F02C (1306668)\n-22E6DF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230A42 Ext File Attributes   00000000 (0)\n+230A46 Local Header Offset   0015A743 (1419075)\n+230A4A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E6DF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230A4A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E71E CENTRAL HEADER #1215  02014B50 (33639248)\n-22E722 Created Zip Spec      14 (20) '2.0'\n-22E723 Created OS            00 (0) 'MS-DOS'\n-22E724 Extract Zip Spec      14 (20) '2.0'\n-22E725 Extract OS            00 (0) 'MS-DOS'\n-22E726 General Purpose Flag  0808 (2056)\n+230A9C CENTRAL HEADER #1215  02014B50 (33639248)\n+230AA0 Created Zip Spec      14 (20) '2.0'\n+230AA1 Created OS            00 (0) 'MS-DOS'\n+230AA2 Extract Zip Spec      14 (20) '2.0'\n+230AA3 Extract OS            00 (0) 'MS-DOS'\n+230AA4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E728 Compression Method    0008 (8) 'Deflated'\n-22E72A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E72E CRC                   48F808F8 (1224214776)\n-22E732 Compressed Size       00000443 (1091)\n-22E736 Uncompressed Size     00000BF1 (3057)\n-22E73A Filename Length       004E (78)\n-22E73C Extra Length          0000 (0)\n-22E73E Comment Length        0000 (0)\n-22E740 Disk Start            0000 (0)\n-22E742 Int File Attributes   0000 (0)\n+230AA6 Compression Method    0008 (8) 'Deflated'\n+230AA8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230AAC CRC                   A49FCF77 (2761936759)\n+230AB0 Compressed Size       0000004D (77)\n+230AB4 Uncompressed Size     00000054 (84)\n+230AB8 Filename Length       005B (91)\n+230ABA Extra Length          0000 (0)\n+230ABC Comment Length        0000 (0)\n+230ABE Disk Start            0000 (0)\n+230AC0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E744 Ext File Attributes   00000000 (0)\n-22E748 Local Header Offset   0013F3E6 (1307622)\n-22E74C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230AC2 Ext File Attributes   00000000 (0)\n+230AC6 Local Header Offset   0015A803 (1419267)\n+230ACA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E74C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230ACA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E79A CENTRAL HEADER #1216  02014B50 (33639248)\n-22E79E Created Zip Spec      14 (20) '2.0'\n-22E79F Created OS            00 (0) 'MS-DOS'\n-22E7A0 Extract Zip Spec      14 (20) '2.0'\n-22E7A1 Extract OS            00 (0) 'MS-DOS'\n-22E7A2 General Purpose Flag  0808 (2056)\n+230B25 CENTRAL HEADER #1216  02014B50 (33639248)\n+230B29 Created Zip Spec      14 (20) '2.0'\n+230B2A Created OS            00 (0) 'MS-DOS'\n+230B2B Extract Zip Spec      14 (20) '2.0'\n+230B2C Extract OS            00 (0) 'MS-DOS'\n+230B2D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E7A4 Compression Method    0008 (8) 'Deflated'\n-22E7A6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E7AA CRC                   78C43CAA (2026126506)\n-22E7AE Compressed Size       0000004B (75)\n-22E7B2 Uncompressed Size     00000088 (136)\n-22E7B6 Filename Length       004F (79)\n-22E7B8 Extra Length          0000 (0)\n-22E7BA Comment Length        0000 (0)\n-22E7BC Disk Start            0000 (0)\n-22E7BE Int File Attributes   0000 (0)\n+230B2F Compression Method    0008 (8) 'Deflated'\n+230B31 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230B35 CRC                   F515114D (4111798605)\n+230B39 Compressed Size       00000049 (73)\n+230B3D Uncompressed Size     00000054 (84)\n+230B41 Filename Length       005D (93)\n+230B43 Extra Length          0000 (0)\n+230B45 Comment Length        0000 (0)\n+230B47 Disk Start            0000 (0)\n+230B49 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E7C0 Ext File Attributes   00000000 (0)\n-22E7C4 Local Header Offset   0013F8A5 (1308837)\n-22E7C8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230B4B Ext File Attributes   00000000 (0)\n+230B4F Local Header Offset   0015A8D9 (1419481)\n+230B53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E7C8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230B53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E817 CENTRAL HEADER #1217  02014B50 (33639248)\n-22E81B Created Zip Spec      14 (20) '2.0'\n-22E81C Created OS            00 (0) 'MS-DOS'\n-22E81D Extract Zip Spec      14 (20) '2.0'\n-22E81E Extract OS            00 (0) 'MS-DOS'\n-22E81F General Purpose Flag  0808 (2056)\n+230BB0 CENTRAL HEADER #1217  02014B50 (33639248)\n+230BB4 Created Zip Spec      14 (20) '2.0'\n+230BB5 Created OS            00 (0) 'MS-DOS'\n+230BB6 Extract Zip Spec      14 (20) '2.0'\n+230BB7 Extract OS            00 (0) 'MS-DOS'\n+230BB8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E821 Compression Method    0008 (8) 'Deflated'\n-22E823 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E827 CRC                   00000000 (0)\n-22E82B Compressed Size       00000002 (2)\n-22E82F Uncompressed Size     00000000 (0)\n-22E833 Filename Length       002B (43)\n-22E835 Extra Length          0000 (0)\n-22E837 Comment Length        0000 (0)\n-22E839 Disk Start            0000 (0)\n-22E83B Int File Attributes   0000 (0)\n+230BBA Compression Method    0008 (8) 'Deflated'\n+230BBC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230BC0 CRC                   285254BA (676484282)\n+230BC4 Compressed Size       00000045 (69)\n+230BC8 Uncompressed Size     0000004E (78)\n+230BCC Filename Length       0059 (89)\n+230BCE Extra Length          0000 (0)\n+230BD0 Comment Length        0000 (0)\n+230BD2 Disk Start            0000 (0)\n+230BD4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E83D Ext File Attributes   00000000 (0)\n-22E841 Local Header Offset   0013F96D (1309037)\n-22E845 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230BD6 Ext File Attributes   00000000 (0)\n+230BDA Local Header Offset   0015A9AD (1419693)\n+230BDE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E845: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230BDE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E870 CENTRAL HEADER #1218  02014B50 (33639248)\n-22E874 Created Zip Spec      14 (20) '2.0'\n-22E875 Created OS            00 (0) 'MS-DOS'\n-22E876 Extract Zip Spec      14 (20) '2.0'\n-22E877 Extract OS            00 (0) 'MS-DOS'\n-22E878 General Purpose Flag  0808 (2056)\n+230C37 CENTRAL HEADER #1218  02014B50 (33639248)\n+230C3B Created Zip Spec      14 (20) '2.0'\n+230C3C Created OS            00 (0) 'MS-DOS'\n+230C3D Extract Zip Spec      14 (20) '2.0'\n+230C3E Extract OS            00 (0) 'MS-DOS'\n+230C3F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E87A Compression Method    0008 (8) 'Deflated'\n-22E87C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E880 CRC                   E8E97BAC (3907615660)\n-22E884 Compressed Size       00000868 (2152)\n-22E888 Uncompressed Size     00001FC1 (8129)\n-22E88C Filename Length       003E (62)\n-22E88E Extra Length          0000 (0)\n-22E890 Comment Length        0000 (0)\n-22E892 Disk Start            0000 (0)\n-22E894 Int File Attributes   0000 (0)\n+230C41 Compression Method    0008 (8) 'Deflated'\n+230C43 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230C47 CRC                   9DAB4985 (2645248389)\n+230C4B Compressed Size       0000003E (62)\n+230C4F Uncompressed Size     0000004A (74)\n+230C53 Filename Length       0056 (86)\n+230C55 Extra Length          0000 (0)\n+230C57 Comment Length        0000 (0)\n+230C59 Disk Start            0000 (0)\n+230C5B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E896 Ext File Attributes   00000000 (0)\n-22E89A Local Header Offset   0013F9C8 (1309128)\n-22E89E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230C5D Ext File Attributes   00000000 (0)\n+230C61 Local Header Offset   0015AA79 (1419897)\n+230C65 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E89E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230C65: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E8DC CENTRAL HEADER #1219  02014B50 (33639248)\n-22E8E0 Created Zip Spec      14 (20) '2.0'\n-22E8E1 Created OS            00 (0) 'MS-DOS'\n-22E8E2 Extract Zip Spec      14 (20) '2.0'\n-22E8E3 Extract OS            00 (0) 'MS-DOS'\n-22E8E4 General Purpose Flag  0808 (2056)\n+230CBB CENTRAL HEADER #1219  02014B50 (33639248)\n+230CBF Created Zip Spec      14 (20) '2.0'\n+230CC0 Created OS            00 (0) 'MS-DOS'\n+230CC1 Extract Zip Spec      14 (20) '2.0'\n+230CC2 Extract OS            00 (0) 'MS-DOS'\n+230CC3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E8E6 Compression Method    0008 (8) 'Deflated'\n-22E8E8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E8EC CRC                   00000000 (0)\n-22E8F0 Compressed Size       00000002 (2)\n-22E8F4 Uncompressed Size     00000000 (0)\n-22E8F8 Filename Length       0028 (40)\n-22E8FA Extra Length          0000 (0)\n-22E8FC Comment Length        0000 (0)\n-22E8FE Disk Start            0000 (0)\n-22E900 Int File Attributes   0000 (0)\n+230CC5 Compression Method    0008 (8) 'Deflated'\n+230CC7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230CCB CRC                   00000000 (0)\n+230CCF Compressed Size       00000002 (2)\n+230CD3 Uncompressed Size     00000000 (0)\n+230CD7 Filename Length       0033 (51)\n+230CD9 Extra Length          0000 (0)\n+230CDB Comment Length        0000 (0)\n+230CDD Disk Start            0000 (0)\n+230CDF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E902 Ext File Attributes   00000000 (0)\n-22E906 Local Header Offset   0014029C (1311388)\n-22E90A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230CE1 Ext File Attributes   00000000 (0)\n+230CE5 Local Header Offset   0015AB3B (1420091)\n+230CE9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E90A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230CE9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E932 CENTRAL HEADER #1220  02014B50 (33639248)\n-22E936 Created Zip Spec      14 (20) '2.0'\n-22E937 Created OS            00 (0) 'MS-DOS'\n-22E938 Extract Zip Spec      14 (20) '2.0'\n-22E939 Extract OS            00 (0) 'MS-DOS'\n-22E93A General Purpose Flag  0808 (2056)\n+230D1C CENTRAL HEADER #1220  02014B50 (33639248)\n+230D20 Created Zip Spec      14 (20) '2.0'\n+230D21 Created OS            00 (0) 'MS-DOS'\n+230D22 Extract Zip Spec      14 (20) '2.0'\n+230D23 Extract OS            00 (0) 'MS-DOS'\n+230D24 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E93C Compression Method    0008 (8) 'Deflated'\n-22E93E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E942 CRC                   E525BFD2 (3844456402)\n-22E946 Compressed Size       000006AE (1710)\n-22E94A Uncompressed Size     00001958 (6488)\n-22E94E Filename Length       003E (62)\n-22E950 Extra Length          0000 (0)\n-22E952 Comment Length        0000 (0)\n-22E954 Disk Start            0000 (0)\n-22E956 Int File Attributes   0000 (0)\n+230D26 Compression Method    0008 (8) 'Deflated'\n+230D28 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230D2C CRC                   C9D6A7C1 (3386288065)\n+230D30 Compressed Size       000003E9 (1001)\n+230D34 Uncompressed Size     00000C99 (3225)\n+230D38 Filename Length       003A (58)\n+230D3A Extra Length          0000 (0)\n+230D3C Comment Length        0000 (0)\n+230D3E Disk Start            0000 (0)\n+230D40 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E958 Ext File Attributes   00000000 (0)\n-22E95C Local Header Offset   001402F4 (1311476)\n-22E960 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230D42 Ext File Attributes   00000000 (0)\n+230D46 Local Header Offset   0015AB9E (1420190)\n+230D4A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E960: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230D4A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E99E CENTRAL HEADER #1221  02014B50 (33639248)\n-22E9A2 Created Zip Spec      14 (20) '2.0'\n-22E9A3 Created OS            00 (0) 'MS-DOS'\n-22E9A4 Extract Zip Spec      14 (20) '2.0'\n-22E9A5 Extract OS            00 (0) 'MS-DOS'\n-22E9A6 General Purpose Flag  0808 (2056)\n+230D84 CENTRAL HEADER #1221  02014B50 (33639248)\n+230D88 Created Zip Spec      14 (20) '2.0'\n+230D89 Created OS            00 (0) 'MS-DOS'\n+230D8A Extract Zip Spec      14 (20) '2.0'\n+230D8B Extract OS            00 (0) 'MS-DOS'\n+230D8C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E9A8 Compression Method    0008 (8) 'Deflated'\n-22E9AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22E9AE CRC                   00000000 (0)\n-22E9B2 Compressed Size       00000002 (2)\n-22E9B6 Uncompressed Size     00000000 (0)\n-22E9BA Filename Length       0024 (36)\n-22E9BC Extra Length          0000 (0)\n-22E9BE Comment Length        0000 (0)\n-22E9C0 Disk Start            0000 (0)\n-22E9C2 Int File Attributes   0000 (0)\n+230D8E Compression Method    0008 (8) 'Deflated'\n+230D90 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230D94 CRC                   30325669 (808605289)\n+230D98 Compressed Size       00000047 (71)\n+230D9C Uncompressed Size     00000049 (73)\n+230DA0 Filename Length       0041 (65)\n+230DA2 Extra Length          0000 (0)\n+230DA4 Comment Length        0000 (0)\n+230DA6 Disk Start            0000 (0)\n+230DA8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22E9C4 Ext File Attributes   00000000 (0)\n-22E9C8 Local Header Offset   00140A0E (1313294)\n-22E9CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230DAA Ext File Attributes   00000000 (0)\n+230DAE Local Header Offset   0015AFEF (1421295)\n+230DB2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22E9CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230DB2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22E9F0 CENTRAL HEADER #1222  02014B50 (33639248)\n-22E9F4 Created Zip Spec      14 (20) '2.0'\n-22E9F5 Created OS            00 (0) 'MS-DOS'\n-22E9F6 Extract Zip Spec      14 (20) '2.0'\n-22E9F7 Extract OS            00 (0) 'MS-DOS'\n-22E9F8 General Purpose Flag  0808 (2056)\n+230DF3 CENTRAL HEADER #1222  02014B50 (33639248)\n+230DF7 Created Zip Spec      14 (20) '2.0'\n+230DF8 Created OS            00 (0) 'MS-DOS'\n+230DF9 Extract Zip Spec      14 (20) '2.0'\n+230DFA Extract OS            00 (0) 'MS-DOS'\n+230DFB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22E9FA Compression Method    0008 (8) 'Deflated'\n-22E9FC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22EA00 CRC                   2CD78AEC (752323308)\n-22EA04 Compressed Size       0000091A (2330)\n-22EA08 Uncompressed Size     0000277A (10106)\n-22EA0C Filename Length       0036 (54)\n-22EA0E Extra Length          0000 (0)\n-22EA10 Comment Length        0000 (0)\n-22EA12 Disk Start            0000 (0)\n-22EA14 Int File Attributes   0000 (0)\n+230DFD Compression Method    0008 (8) 'Deflated'\n+230DFF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230E03 CRC                   00000000 (0)\n+230E07 Compressed Size       00000002 (2)\n+230E0B Uncompressed Size     00000000 (0)\n+230E0F Filename Length       001B (27)\n+230E11 Extra Length          0000 (0)\n+230E13 Comment Length        0000 (0)\n+230E15 Disk Start            0000 (0)\n+230E17 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22EA16 Ext File Attributes   00000000 (0)\n-22EA1A Local Header Offset   00140A62 (1313378)\n-22EA1E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230E19 Ext File Attributes   00000000 (0)\n+230E1D Local Header Offset   0015B0A5 (1421477)\n+230E21 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22EA1E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230E21: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22EA54 CENTRAL HEADER #1223  02014B50 (33639248)\n-22EA58 Created Zip Spec      14 (20) '2.0'\n-22EA59 Created OS            00 (0) 'MS-DOS'\n-22EA5A Extract Zip Spec      14 (20) '2.0'\n-22EA5B Extract OS            00 (0) 'MS-DOS'\n-22EA5C General Purpose Flag  0808 (2056)\n+230E3C CENTRAL HEADER #1223  02014B50 (33639248)\n+230E40 Created Zip Spec      14 (20) '2.0'\n+230E41 Created OS            00 (0) 'MS-DOS'\n+230E42 Extract Zip Spec      14 (20) '2.0'\n+230E43 Extract OS            00 (0) 'MS-DOS'\n+230E44 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22EA5E Compression Method    0008 (8) 'Deflated'\n-22EA60 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22EA64 CRC                   00000000 (0)\n-22EA68 Compressed Size       00000002 (2)\n-22EA6C Uncompressed Size     00000000 (0)\n-22EA70 Filename Length       0023 (35)\n-22EA72 Extra Length          0000 (0)\n-22EA74 Comment Length        0000 (0)\n-22EA76 Disk Start            0000 (0)\n-22EA78 Int File Attributes   0000 (0)\n+230E46 Compression Method    0008 (8) 'Deflated'\n+230E48 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230E4C CRC                   14FCC408 (352109576)\n+230E50 Compressed Size       00000262 (610)\n+230E54 Uncompressed Size     00000497 (1175)\n+230E58 Filename Length       0029 (41)\n+230E5A Extra Length          0000 (0)\n+230E5C Comment Length        0000 (0)\n+230E5E Disk Start            0000 (0)\n+230E60 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22EA7A Ext File Attributes   00000000 (0)\n-22EA7E Local Header Offset   001413E0 (1315808)\n-22EA82 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230E62 Ext File Attributes   00000000 (0)\n+230E66 Local Header Offset   0015B0F0 (1421552)\n+230E6A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22EA82: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230E6A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22EAA5 CENTRAL HEADER #1224  02014B50 (33639248)\n-22EAA9 Created Zip Spec      14 (20) '2.0'\n-22EAAA Created OS            00 (0) 'MS-DOS'\n-22EAAB Extract Zip Spec      14 (20) '2.0'\n-22EAAC Extract OS            00 (0) 'MS-DOS'\n-22EAAD General Purpose Flag  0808 (2056)\n+230E93 CENTRAL HEADER #1224  02014B50 (33639248)\n+230E97 Created Zip Spec      14 (20) '2.0'\n+230E98 Created OS            00 (0) 'MS-DOS'\n+230E99 Extract Zip Spec      14 (20) '2.0'\n+230E9A Extract OS            00 (0) 'MS-DOS'\n+230E9B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22EAAF Compression Method    0008 (8) 'Deflated'\n-22EAB1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22EAB5 CRC                   3DF79E03 (1039638019)\n-22EAB9 Compressed Size       00000476 (1142)\n-22EABD Uncompressed Size     00000BD6 (3030)\n-22EAC1 Filename Length       003E (62)\n-22EAC3 Extra Length          0000 (0)\n-22EAC5 Comment Length        0000 (0)\n-22EAC7 Disk Start            0000 (0)\n-22EAC9 Int File Attributes   0000 (0)\n+230E9D Compression Method    0008 (8) 'Deflated'\n+230E9F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230EA3 CRC                   6D55499F (1834305951)\n+230EA7 Compressed Size       000005CB (1483)\n+230EAB Uncompressed Size     00001115 (4373)\n+230EAF Filename Length       0024 (36)\n+230EB1 Extra Length          0000 (0)\n+230EB3 Comment Length        0000 (0)\n+230EB5 Disk Start            0000 (0)\n+230EB7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22EACB Ext File Attributes   00000000 (0)\n-22EACF Local Header Offset   00141433 (1315891)\n-22EAD3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230EB9 Ext File Attributes   00000000 (0)\n+230EBD Local Header Offset   0015B3A9 (1422249)\n+230EC1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22EAD3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230EC1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22EB11 CENTRAL HEADER #1225  02014B50 (33639248)\n-22EB15 Created Zip Spec      14 (20) '2.0'\n-22EB16 Created OS            00 (0) 'MS-DOS'\n-22EB17 Extract Zip Spec      14 (20) '2.0'\n-22EB18 Extract OS            00 (0) 'MS-DOS'\n-22EB19 General Purpose Flag  0808 (2056)\n+230EE5 CENTRAL HEADER #1225  02014B50 (33639248)\n+230EE9 Created Zip Spec      14 (20) '2.0'\n+230EEA Created OS            00 (0) 'MS-DOS'\n+230EEB Extract Zip Spec      14 (20) '2.0'\n+230EEC Extract OS            00 (0) 'MS-DOS'\n+230EED General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22EB1B Compression Method    0008 (8) 'Deflated'\n-22EB1D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22EB21 CRC                   4DA1C2B1 (1302446769)\n-22EB25 Compressed Size       0000024A (586)\n-22EB29 Uncompressed Size     000003F4 (1012)\n-22EB2D Filename Length       0031 (49)\n-22EB2F Extra Length          0000 (0)\n-22EB31 Comment Length        0000 (0)\n-22EB33 Disk Start            0000 (0)\n-22EB35 Int File Attributes   0000 (0)\n+230EEF Compression Method    0008 (8) 'Deflated'\n+230EF1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230EF5 CRC                   00000000 (0)\n+230EF9 Compressed Size       00000002 (2)\n+230EFD Uncompressed Size     00000000 (0)\n+230F01 Filename Length       0012 (18)\n+230F03 Extra Length          0000 (0)\n+230F05 Comment Length        0000 (0)\n+230F07 Disk Start            0000 (0)\n+230F09 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22EB37 Ext File Attributes   00000000 (0)\n-22EB3B Local Header Offset   00141915 (1317141)\n-22EB3F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230F0B Ext File Attributes   00000000 (0)\n+230F0F Local Header Offset   0015B9C6 (1423814)\n+230F13 Filename              'XXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22EB3F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230F13: Filename 'XXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22EB70 CENTRAL HEADER #1226  02014B50 (33639248)\n-22EB74 Created Zip Spec      14 (20) '2.0'\n-22EB75 Created OS            00 (0) 'MS-DOS'\n-22EB76 Extract Zip Spec      14 (20) '2.0'\n-22EB77 Extract OS            00 (0) 'MS-DOS'\n-22EB78 General Purpose Flag  0808 (2056)\n+230F25 CENTRAL HEADER #1226  02014B50 (33639248)\n+230F29 Created Zip Spec      14 (20) '2.0'\n+230F2A Created OS            00 (0) 'MS-DOS'\n+230F2B Extract Zip Spec      14 (20) '2.0'\n+230F2C Extract OS            00 (0) 'MS-DOS'\n+230F2D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22EB7A Compression Method    0008 (8) 'Deflated'\n-22EB7C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22EB80 CRC                   150F0CC2 (353307842)\n-22EB84 Compressed Size       000005B7 (1463)\n-22EB88 Uncompressed Size     000011F7 (4599)\n-22EB8C Filename Length       003F (63)\n-22EB8E Extra Length          0000 (0)\n-22EB90 Comment Length        0000 (0)\n-22EB92 Disk Start            0000 (0)\n-22EB94 Int File Attributes   0000 (0)\n+230F2F Compression Method    0008 (8) 'Deflated'\n+230F31 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230F35 CRC                   00000000 (0)\n+230F39 Compressed Size       00000002 (2)\n+230F3D Uncompressed Size     00000000 (0)\n+230F41 Filename Length       0016 (22)\n+230F43 Extra Length          0000 (0)\n+230F45 Comment Length        0000 (0)\n+230F47 Disk Start            0000 (0)\n+230F49 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22EB96 Ext File Attributes   00000000 (0)\n-22EB9A Local Header Offset   00141BBE (1317822)\n-22EB9E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230F4B Ext File Attributes   00000000 (0)\n+230F4F Local Header Offset   0015BA08 (1423880)\n+230F53 Filename              'XXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22EB9E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230F53: Filename 'XXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22EBDD CENTRAL HEADER #1227  02014B50 (33639248)\n-22EBE1 Created Zip Spec      14 (20) '2.0'\n-22EBE2 Created OS            00 (0) 'MS-DOS'\n-22EBE3 Extract Zip Spec      14 (20) '2.0'\n-22EBE4 Extract OS            00 (0) 'MS-DOS'\n-22EBE5 General Purpose Flag  0808 (2056)\n+230F69 CENTRAL HEADER #1227  02014B50 (33639248)\n+230F6D Created Zip Spec      14 (20) '2.0'\n+230F6E Created OS            00 (0) 'MS-DOS'\n+230F6F Extract Zip Spec      14 (20) '2.0'\n+230F70 Extract OS            00 (0) 'MS-DOS'\n+230F71 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22EBE7 Compression Method    0008 (8) 'Deflated'\n-22EBE9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22EBED CRC                   74B3513E (1957908798)\n-22EBF1 Compressed Size       000003A8 (936)\n-22EBF5 Uncompressed Size     00000A15 (2581)\n-22EBF9 Filename Length       003C (60)\n-22EBFB Extra Length          0000 (0)\n-22EBFD Comment Length        0000 (0)\n-22EBFF Disk Start            0000 (0)\n-22EC01 Int File Attributes   0000 (0)\n+230F73 Compression Method    0008 (8) 'Deflated'\n+230F75 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230F79 CRC                   F79D8E60 (4154297952)\n+230F7D Compressed Size       0000045D (1117)\n+230F81 Uncompressed Size     00000BEB (3051)\n+230F85 Filename Length       001D (29)\n+230F87 Extra Length          0000 (0)\n+230F89 Comment Length        0000 (0)\n+230F8B Disk Start            0000 (0)\n+230F8D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22EC03 Ext File Attributes   00000000 (0)\n-22EC07 Local Header Offset   001421E2 (1319394)\n-22EC0B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230F8F Ext File Attributes   00000000 (0)\n+230F93 Local Header Offset   0015BA4E (1423950)\n+230F97 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22EC0B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230F97: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22EC47 CENTRAL HEADER #1228  02014B50 (33639248)\n-22EC4B Created Zip Spec      14 (20) '2.0'\n-22EC4C Created OS            00 (0) 'MS-DOS'\n-22EC4D Extract Zip Spec      14 (20) '2.0'\n-22EC4E Extract OS            00 (0) 'MS-DOS'\n-22EC4F General Purpose Flag  0808 (2056)\n+230FB4 CENTRAL HEADER #1228  02014B50 (33639248)\n+230FB8 Created Zip Spec      14 (20) '2.0'\n+230FB9 Created OS            00 (0) 'MS-DOS'\n+230FBA Extract Zip Spec      14 (20) '2.0'\n+230FBB Extract OS            00 (0) 'MS-DOS'\n+230FBC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22EC51 Compression Method    0008 (8) 'Deflated'\n-22EC53 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22EC57 CRC                   59C6BCF2 (1506196722)\n-22EC5B Compressed Size       00000478 (1144)\n-22EC5F Uncompressed Size     00000C48 (3144)\n-22EC63 Filename Length       003F (63)\n-22EC65 Extra Length          0000 (0)\n-22EC67 Comment Length        0000 (0)\n-22EC69 Disk Start            0000 (0)\n-22EC6B Int File Attributes   0000 (0)\n+230FBE Compression Method    0008 (8) 'Deflated'\n+230FC0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+230FC4 CRC                   3ED932F9 (1054421753)\n+230FC8 Compressed Size       000001F0 (496)\n+230FCC Uncompressed Size     00000354 (852)\n+230FD0 Filename Length       0020 (32)\n+230FD2 Extra Length          0000 (0)\n+230FD4 Comment Length        0000 (0)\n+230FD6 Disk Start            0000 (0)\n+230FD8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22EC6D Ext File Attributes   00000000 (0)\n-22EC71 Local Header Offset   001425F4 (1320436)\n-22EC75 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+230FDA Ext File Attributes   00000000 (0)\n+230FDE Local Header Offset   0015BEF6 (1425142)\n+230FE2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22EC75: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x230FE2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22ECB4 CENTRAL HEADER #1229  02014B50 (33639248)\n-22ECB8 Created Zip Spec      14 (20) '2.0'\n-22ECB9 Created OS            00 (0) 'MS-DOS'\n-22ECBA Extract Zip Spec      14 (20) '2.0'\n-22ECBB Extract OS            00 (0) 'MS-DOS'\n-22ECBC General Purpose Flag  0808 (2056)\n+231002 CENTRAL HEADER #1229  02014B50 (33639248)\n+231006 Created Zip Spec      14 (20) '2.0'\n+231007 Created OS            00 (0) 'MS-DOS'\n+231008 Extract Zip Spec      14 (20) '2.0'\n+231009 Extract OS            00 (0) 'MS-DOS'\n+23100A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22ECBE Compression Method    0008 (8) 'Deflated'\n-22ECC0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22ECC4 CRC                   CB062A84 (3406178948)\n-22ECC8 Compressed Size       00000327 (807)\n-22ECCC Uncompressed Size     000007E1 (2017)\n-22ECD0 Filename Length       003F (63)\n-22ECD2 Extra Length          0000 (0)\n-22ECD4 Comment Length        0000 (0)\n-22ECD6 Disk Start            0000 (0)\n-22ECD8 Int File Attributes   0000 (0)\n+23100C Compression Method    0008 (8) 'Deflated'\n+23100E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231012 CRC                   B518B61F (3038295583)\n+231016 Compressed Size       0000027B (635)\n+23101A Uncompressed Size     000004D4 (1236)\n+23101E Filename Length       001F (31)\n+231020 Extra Length          0000 (0)\n+231022 Comment Length        0000 (0)\n+231024 Disk Start            0000 (0)\n+231026 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22ECDA Ext File Attributes   00000000 (0)\n-22ECDE Local Header Offset   00142AD9 (1321689)\n-22ECE2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231028 Ext File Attributes   00000000 (0)\n+23102C Local Header Offset   0015C134 (1425716)\n+231030 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22ECE2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231030: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22ED21 CENTRAL HEADER #1230  02014B50 (33639248)\n-22ED25 Created Zip Spec      14 (20) '2.0'\n-22ED26 Created OS            00 (0) 'MS-DOS'\n-22ED27 Extract Zip Spec      14 (20) '2.0'\n-22ED28 Extract OS            00 (0) 'MS-DOS'\n-22ED29 General Purpose Flag  0808 (2056)\n+23104F CENTRAL HEADER #1230  02014B50 (33639248)\n+231053 Created Zip Spec      14 (20) '2.0'\n+231054 Created OS            00 (0) 'MS-DOS'\n+231055 Extract Zip Spec      14 (20) '2.0'\n+231056 Extract OS            00 (0) 'MS-DOS'\n+231057 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22ED2B Compression Method    0008 (8) 'Deflated'\n-22ED2D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22ED31 CRC                   8E964D75 (2392214901)\n-22ED35 Compressed Size       00000DC2 (3522)\n-22ED39 Uncompressed Size     000031F2 (12786)\n-22ED3D Filename Length       0034 (52)\n-22ED3F Extra Length          0000 (0)\n-22ED41 Comment Length        0000 (0)\n-22ED43 Disk Start            0000 (0)\n-22ED45 Int File Attributes   0000 (0)\n+231059 Compression Method    0008 (8) 'Deflated'\n+23105B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23105F CRC                   CD3B8ABC (3443231420)\n+231063 Compressed Size       000003D0 (976)\n+231067 Uncompressed Size     000007D2 (2002)\n+23106B Filename Length       001F (31)\n+23106D Extra Length          0000 (0)\n+23106F Comment Length        0000 (0)\n+231071 Disk Start            0000 (0)\n+231073 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22ED47 Ext File Attributes   00000000 (0)\n-22ED4B Local Header Offset   00142E6D (1322605)\n-22ED4F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231075 Ext File Attributes   00000000 (0)\n+231079 Local Header Offset   0015C3FC (1426428)\n+23107D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22ED4F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23107D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22ED83 CENTRAL HEADER #1231  02014B50 (33639248)\n-22ED87 Created Zip Spec      14 (20) '2.0'\n-22ED88 Created OS            00 (0) 'MS-DOS'\n-22ED89 Extract Zip Spec      14 (20) '2.0'\n-22ED8A Extract OS            00 (0) 'MS-DOS'\n-22ED8B General Purpose Flag  0808 (2056)\n+23109C CENTRAL HEADER #1231  02014B50 (33639248)\n+2310A0 Created Zip Spec      14 (20) '2.0'\n+2310A1 Created OS            00 (0) 'MS-DOS'\n+2310A2 Extract Zip Spec      14 (20) '2.0'\n+2310A3 Extract OS            00 (0) 'MS-DOS'\n+2310A4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22ED8D Compression Method    0008 (8) 'Deflated'\n-22ED8F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22ED93 CRC                   2E39C29D (775537309)\n-22ED97 Compressed Size       00000288 (648)\n-22ED9B Uncompressed Size     000004D4 (1236)\n-22ED9F Filename Length       003A (58)\n-22EDA1 Extra Length          0000 (0)\n-22EDA3 Comment Length        0000 (0)\n-22EDA5 Disk Start            0000 (0)\n-22EDA7 Int File Attributes   0000 (0)\n+2310A6 Compression Method    0008 (8) 'Deflated'\n+2310A8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2310AC CRC                   4CE4C327 (1290060583)\n+2310B0 Compressed Size       0000088B (2187)\n+2310B4 Uncompressed Size     00001505 (5381)\n+2310B8 Filename Length       001E (30)\n+2310BA Extra Length          0000 (0)\n+2310BC Comment Length        0000 (0)\n+2310BE Disk Start            0000 (0)\n+2310C0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22EDA9 Ext File Attributes   00000000 (0)\n-22EDAD Local Header Offset   00143C91 (1326225)\n-22EDB1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2310C2 Ext File Attributes   00000000 (0)\n+2310C6 Local Header Offset   0015C819 (1427481)\n+2310CA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22EDB1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2310CA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22EDEB CENTRAL HEADER #1232  02014B50 (33639248)\n-22EDEF Created Zip Spec      14 (20) '2.0'\n-22EDF0 Created OS            00 (0) 'MS-DOS'\n-22EDF1 Extract Zip Spec      14 (20) '2.0'\n-22EDF2 Extract OS            00 (0) 'MS-DOS'\n-22EDF3 General Purpose Flag  0808 (2056)\n+2310E8 CENTRAL HEADER #1232  02014B50 (33639248)\n+2310EC Created Zip Spec      14 (20) '2.0'\n+2310ED Created OS            00 (0) 'MS-DOS'\n+2310EE Extract Zip Spec      14 (20) '2.0'\n+2310EF Extract OS            00 (0) 'MS-DOS'\n+2310F0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22EDF5 Compression Method    0008 (8) 'Deflated'\n-22EDF7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22EDFB CRC                   8AE5D3FF (2330317823)\n-22EDFF Compressed Size       00000334 (820)\n-22EE03 Uncompressed Size     000006A5 (1701)\n-22EE07 Filename Length       0039 (57)\n-22EE09 Extra Length          0000 (0)\n-22EE0B Comment Length        0000 (0)\n-22EE0D Disk Start            0000 (0)\n-22EE0F Int File Attributes   0000 (0)\n+2310F2 Compression Method    0008 (8) 'Deflated'\n+2310F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2310F8 CRC                   FA33FECC (4197711564)\n+2310FC Compressed Size       00000377 (887)\n+231100 Uncompressed Size     0000069F (1695)\n+231104 Filename Length       001D (29)\n+231106 Extra Length          0000 (0)\n+231108 Comment Length        0000 (0)\n+23110A Disk Start            0000 (0)\n+23110C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22EE11 Ext File Attributes   00000000 (0)\n-22EE15 Local Header Offset   00143F81 (1326977)\n-22EE19 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23110E Ext File Attributes   00000000 (0)\n+231112 Local Header Offset   0015D0F0 (1429744)\n+231116 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22EE19: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231116: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22EE52 CENTRAL HEADER #1233  02014B50 (33639248)\n-22EE56 Created Zip Spec      14 (20) '2.0'\n-22EE57 Created OS            00 (0) 'MS-DOS'\n-22EE58 Extract Zip Spec      14 (20) '2.0'\n-22EE59 Extract OS            00 (0) 'MS-DOS'\n-22EE5A General Purpose Flag  0808 (2056)\n+231133 CENTRAL HEADER #1233  02014B50 (33639248)\n+231137 Created Zip Spec      14 (20) '2.0'\n+231138 Created OS            00 (0) 'MS-DOS'\n+231139 Extract Zip Spec      14 (20) '2.0'\n+23113A Extract OS            00 (0) 'MS-DOS'\n+23113B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22EE5C Compression Method    0008 (8) 'Deflated'\n-22EE5E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22EE62 CRC                   1149E8E6 (290056422)\n-22EE66 Compressed Size       0000063B (1595)\n-22EE6A Uncompressed Size     00001196 (4502)\n-22EE6E Filename Length       0038 (56)\n-22EE70 Extra Length          0000 (0)\n-22EE72 Comment Length        0000 (0)\n-22EE74 Disk Start            0000 (0)\n-22EE76 Int File Attributes   0000 (0)\n+23113D Compression Method    0008 (8) 'Deflated'\n+23113F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231143 CRC                   00000000 (0)\n+231147 Compressed Size       00000002 (2)\n+23114B Uncompressed Size     00000000 (0)\n+23114F Filename Length       0034 (52)\n+231151 Extra Length          0000 (0)\n+231153 Comment Length        0000 (0)\n+231155 Disk Start            0000 (0)\n+231157 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22EE78 Ext File Attributes   00000000 (0)\n-22EE7C Local Header Offset   0014431C (1327900)\n-22EE80 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231159 Ext File Attributes   00000000 (0)\n+23115D Local Header Offset   0015D4B2 (1430706)\n+231161 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22EE80: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231161: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22EEB8 CENTRAL HEADER #1234  02014B50 (33639248)\n-22EEBC Created Zip Spec      14 (20) '2.0'\n-22EEBD Created OS            00 (0) 'MS-DOS'\n-22EEBE Extract Zip Spec      14 (20) '2.0'\n-22EEBF Extract OS            00 (0) 'MS-DOS'\n-22EEC0 General Purpose Flag  0808 (2056)\n+231195 CENTRAL HEADER #1234  02014B50 (33639248)\n+231199 Created Zip Spec      14 (20) '2.0'\n+23119A Created OS            00 (0) 'MS-DOS'\n+23119B Extract Zip Spec      14 (20) '2.0'\n+23119C Extract OS            00 (0) 'MS-DOS'\n+23119D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22EEC2 Compression Method    0008 (8) 'Deflated'\n-22EEC4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22EEC8 CRC                   939A92A5 (2476380837)\n-22EECC Compressed Size       0000040C (1036)\n-22EED0 Uncompressed Size     000009EA (2538)\n-22EED4 Filename Length       003A (58)\n-22EED6 Extra Length          0000 (0)\n-22EED8 Comment Length        0000 (0)\n-22EEDA Disk Start            0000 (0)\n-22EEDC Int File Attributes   0000 (0)\n+23119F Compression Method    0008 (8) 'Deflated'\n+2311A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2311A5 CRC                   C9681FCD (3379044301)\n+2311A9 Compressed Size       000003C8 (968)\n+2311AD Uncompressed Size     00000917 (2327)\n+2311B1 Filename Length       003B (59)\n+2311B3 Extra Length          0000 (0)\n+2311B5 Comment Length        0000 (0)\n+2311B7 Disk Start            0000 (0)\n+2311B9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22EEDE Ext File Attributes   00000000 (0)\n-22EEE2 Local Header Offset   001449BD (1329597)\n-22EEE6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2311BB Ext File Attributes   00000000 (0)\n+2311BF Local Header Offset   0015D516 (1430806)\n+2311C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22EEE6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2311C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22EF20 CENTRAL HEADER #1235  02014B50 (33639248)\n-22EF24 Created Zip Spec      14 (20) '2.0'\n-22EF25 Created OS            00 (0) 'MS-DOS'\n-22EF26 Extract Zip Spec      14 (20) '2.0'\n-22EF27 Extract OS            00 (0) 'MS-DOS'\n-22EF28 General Purpose Flag  0808 (2056)\n+2311FE CENTRAL HEADER #1235  02014B50 (33639248)\n+231202 Created Zip Spec      14 (20) '2.0'\n+231203 Created OS            00 (0) 'MS-DOS'\n+231204 Extract Zip Spec      14 (20) '2.0'\n+231205 Extract OS            00 (0) 'MS-DOS'\n+231206 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22EF2A Compression Method    0008 (8) 'Deflated'\n-22EF2C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22EF30 CRC                   4DDA4FAB (1306152875)\n-22EF34 Compressed Size       0000031F (799)\n-22EF38 Uncompressed Size     00000793 (1939)\n-22EF3C Filename Length       0037 (55)\n-22EF3E Extra Length          0000 (0)\n-22EF40 Comment Length        0000 (0)\n-22EF42 Disk Start            0000 (0)\n-22EF44 Int File Attributes   0000 (0)\n+231208 Compression Method    0008 (8) 'Deflated'\n+23120A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23120E CRC                   01E590F2 (31822066)\n+231212 Compressed Size       00000048 (72)\n+231216 Uncompressed Size     0000004A (74)\n+23121A Filename Length       0042 (66)\n+23121C Extra Length          0000 (0)\n+23121E Comment Length        0000 (0)\n+231220 Disk Start            0000 (0)\n+231222 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22EF46 Ext File Attributes   00000000 (0)\n-22EF4A Local Header Offset   00144E31 (1330737)\n-22EF4E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231224 Ext File Attributes   00000000 (0)\n+231228 Local Header Offset   0015D947 (1431879)\n+23122C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22EF4E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23122C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22EF85 CENTRAL HEADER #1236  02014B50 (33639248)\n-22EF89 Created Zip Spec      14 (20) '2.0'\n-22EF8A Created OS            00 (0) 'MS-DOS'\n-22EF8B Extract Zip Spec      14 (20) '2.0'\n-22EF8C Extract OS            00 (0) 'MS-DOS'\n-22EF8D General Purpose Flag  0808 (2056)\n+23126E CENTRAL HEADER #1236  02014B50 (33639248)\n+231272 Created Zip Spec      14 (20) '2.0'\n+231273 Created OS            00 (0) 'MS-DOS'\n+231274 Extract Zip Spec      14 (20) '2.0'\n+231275 Extract OS            00 (0) 'MS-DOS'\n+231276 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22EF8F Compression Method    0008 (8) 'Deflated'\n-22EF91 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22EF95 CRC                   00000000 (0)\n-22EF99 Compressed Size       00000002 (2)\n-22EF9D Uncompressed Size     00000000 (0)\n-22EFA1 Filename Length       002F (47)\n-22EFA3 Extra Length          0000 (0)\n-22EFA5 Comment Length        0000 (0)\n-22EFA7 Disk Start            0000 (0)\n-22EFA9 Int File Attributes   0000 (0)\n+231278 Compression Method    0008 (8) 'Deflated'\n+23127A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23127E CRC                   00000000 (0)\n+231282 Compressed Size       00000002 (2)\n+231286 Uncompressed Size     00000000 (0)\n+23128A Filename Length       0020 (32)\n+23128C Extra Length          0000 (0)\n+23128E Comment Length        0000 (0)\n+231290 Disk Start            0000 (0)\n+231292 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22EFAB Ext File Attributes   00000000 (0)\n-22EFAF Local Header Offset   001451B5 (1331637)\n-22EFB3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231294 Ext File Attributes   00000000 (0)\n+231298 Local Header Offset   0015D9FF (1432063)\n+23129C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22EFB3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23129C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22EFE2 CENTRAL HEADER #1237  02014B50 (33639248)\n-22EFE6 Created Zip Spec      14 (20) '2.0'\n-22EFE7 Created OS            00 (0) 'MS-DOS'\n-22EFE8 Extract Zip Spec      14 (20) '2.0'\n-22EFE9 Extract OS            00 (0) 'MS-DOS'\n-22EFEA General Purpose Flag  0808 (2056)\n+2312BC CENTRAL HEADER #1237  02014B50 (33639248)\n+2312C0 Created Zip Spec      14 (20) '2.0'\n+2312C1 Created OS            00 (0) 'MS-DOS'\n+2312C2 Extract Zip Spec      14 (20) '2.0'\n+2312C3 Extract OS            00 (0) 'MS-DOS'\n+2312C4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22EFEC Compression Method    0008 (8) 'Deflated'\n-22EFEE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22EFF2 CRC                   00000000 (0)\n-22EFF6 Compressed Size       00000002 (2)\n-22EFFA Uncompressed Size     00000000 (0)\n-22EFFE Filename Length       0037 (55)\n-22F000 Extra Length          0000 (0)\n-22F002 Comment Length        0000 (0)\n-22F004 Disk Start            0000 (0)\n-22F006 Int File Attributes   0000 (0)\n+2312C6 Compression Method    0008 (8) 'Deflated'\n+2312C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2312CC CRC                   AE92FDCB (2928868811)\n+2312D0 Compressed Size       00000742 (1858)\n+2312D4 Uncompressed Size     00001744 (5956)\n+2312D8 Filename Length       0032 (50)\n+2312DA Extra Length          0000 (0)\n+2312DC Comment Length        0000 (0)\n+2312DE Disk Start            0000 (0)\n+2312E0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F008 Ext File Attributes   00000000 (0)\n-22F00C Local Header Offset   00145214 (1331732)\n-22F010 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2312E2 Ext File Attributes   00000000 (0)\n+2312E6 Local Header Offset   0015DA4F (1432143)\n+2312EA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F010: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2312EA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F047 CENTRAL HEADER #1238  02014B50 (33639248)\n-22F04B Created Zip Spec      14 (20) '2.0'\n-22F04C Created OS            00 (0) 'MS-DOS'\n-22F04D Extract Zip Spec      14 (20) '2.0'\n-22F04E Extract OS            00 (0) 'MS-DOS'\n-22F04F General Purpose Flag  0808 (2056)\n+23131C CENTRAL HEADER #1238  02014B50 (33639248)\n+231320 Created Zip Spec      14 (20) '2.0'\n+231321 Created OS            00 (0) 'MS-DOS'\n+231322 Extract Zip Spec      14 (20) '2.0'\n+231323 Extract OS            00 (0) 'MS-DOS'\n+231324 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F051 Compression Method    0008 (8) 'Deflated'\n-22F053 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F057 CRC                   E3F9F330 (3824808752)\n-22F05B Compressed Size       00000397 (919)\n-22F05F Uncompressed Size     00000859 (2137)\n-22F063 Filename Length       005A (90)\n-22F065 Extra Length          0000 (0)\n-22F067 Comment Length        0000 (0)\n-22F069 Disk Start            0000 (0)\n-22F06B Int File Attributes   0000 (0)\n+231326 Compression Method    0008 (8) 'Deflated'\n+231328 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23132C CRC                   1162A7F0 (291678192)\n+231330 Compressed Size       0000066E (1646)\n+231334 Uncompressed Size     00001680 (5760)\n+231338 Filename Length       0039 (57)\n+23133A Extra Length          0000 (0)\n+23133C Comment Length        0000 (0)\n+23133E Disk Start            0000 (0)\n+231340 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F06D Ext File Attributes   00000000 (0)\n-22F071 Local Header Offset   0014527B (1331835)\n-22F075 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231342 Ext File Attributes   00000000 (0)\n+231346 Local Header Offset   0015E1F1 (1434097)\n+23134A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F075: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23134A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F0CF CENTRAL HEADER #1239  02014B50 (33639248)\n-22F0D3 Created Zip Spec      14 (20) '2.0'\n-22F0D4 Created OS            00 (0) 'MS-DOS'\n-22F0D5 Extract Zip Spec      14 (20) '2.0'\n-22F0D6 Extract OS            00 (0) 'MS-DOS'\n-22F0D7 General Purpose Flag  0808 (2056)\n+231383 CENTRAL HEADER #1239  02014B50 (33639248)\n+231387 Created Zip Spec      14 (20) '2.0'\n+231388 Created OS            00 (0) 'MS-DOS'\n+231389 Extract Zip Spec      14 (20) '2.0'\n+23138A Extract OS            00 (0) 'MS-DOS'\n+23138B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F0D9 Compression Method    0008 (8) 'Deflated'\n-22F0DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F0DF CRC                   FF2D0DF3 (4281142771)\n-22F0E3 Compressed Size       00000329 (809)\n-22F0E7 Uncompressed Size     000006C6 (1734)\n-22F0EB Filename Length       004F (79)\n-22F0ED Extra Length          0000 (0)\n-22F0EF Comment Length        0000 (0)\n-22F0F1 Disk Start            0000 (0)\n-22F0F3 Int File Attributes   0000 (0)\n+23138D Compression Method    0008 (8) 'Deflated'\n+23138F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231393 CRC                   00000000 (0)\n+231397 Compressed Size       00000002 (2)\n+23139B Uncompressed Size     00000000 (0)\n+23139F Filename Length       0037 (55)\n+2313A1 Extra Length          0000 (0)\n+2313A3 Comment Length        0000 (0)\n+2313A5 Disk Start            0000 (0)\n+2313A7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F0F5 Ext File Attributes   00000000 (0)\n-22F0F9 Local Header Offset   0014569A (1332890)\n-22F0FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2313A9 Ext File Attributes   00000000 (0)\n+2313AD Local Header Offset   0015E8C6 (1435846)\n+2313B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F0FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2313B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F14C CENTRAL HEADER #1240  02014B50 (33639248)\n-22F150 Created Zip Spec      14 (20) '2.0'\n-22F151 Created OS            00 (0) 'MS-DOS'\n-22F152 Extract Zip Spec      14 (20) '2.0'\n-22F153 Extract OS            00 (0) 'MS-DOS'\n-22F154 General Purpose Flag  0808 (2056)\n+2313E8 CENTRAL HEADER #1240  02014B50 (33639248)\n+2313EC Created Zip Spec      14 (20) '2.0'\n+2313ED Created OS            00 (0) 'MS-DOS'\n+2313EE Extract Zip Spec      14 (20) '2.0'\n+2313EF Extract OS            00 (0) 'MS-DOS'\n+2313F0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F156 Compression Method    0008 (8) 'Deflated'\n-22F158 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F15C CRC                   00000000 (0)\n-22F160 Compressed Size       00000002 (2)\n-22F164 Uncompressed Size     00000000 (0)\n-22F168 Filename Length       002B (43)\n-22F16A Extra Length          0000 (0)\n-22F16C Comment Length        0000 (0)\n-22F16E Disk Start            0000 (0)\n-22F170 Int File Attributes   0000 (0)\n+2313F2 Compression Method    0008 (8) 'Deflated'\n+2313F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2313F8 CRC                   1F6FA72F (527410991)\n+2313FC Compressed Size       000003B4 (948)\n+231400 Uncompressed Size     00000B68 (2920)\n+231404 Filename Length       003E (62)\n+231406 Extra Length          0000 (0)\n+231408 Comment Length        0000 (0)\n+23140A Disk Start            0000 (0)\n+23140C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F172 Ext File Attributes   00000000 (0)\n-22F176 Local Header Offset   00145A40 (1333824)\n-22F17A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23140E Ext File Attributes   00000000 (0)\n+231412 Local Header Offset   0015E92D (1435949)\n+231416 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F17A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231416: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F1A5 CENTRAL HEADER #1241  02014B50 (33639248)\n-22F1A9 Created Zip Spec      14 (20) '2.0'\n-22F1AA Created OS            00 (0) 'MS-DOS'\n-22F1AB Extract Zip Spec      14 (20) '2.0'\n-22F1AC Extract OS            00 (0) 'MS-DOS'\n-22F1AD General Purpose Flag  0808 (2056)\n+231454 CENTRAL HEADER #1241  02014B50 (33639248)\n+231458 Created Zip Spec      14 (20) '2.0'\n+231459 Created OS            00 (0) 'MS-DOS'\n+23145A Extract Zip Spec      14 (20) '2.0'\n+23145B Extract OS            00 (0) 'MS-DOS'\n+23145C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F1AF Compression Method    0008 (8) 'Deflated'\n-22F1B1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F1B5 CRC                   FC72AE7D (4235374205)\n-22F1B9 Compressed Size       0000028A (650)\n-22F1BD Uncompressed Size     00000523 (1315)\n-22F1C1 Filename Length       003B (59)\n-22F1C3 Extra Length          0000 (0)\n-22F1C5 Comment Length        0000 (0)\n-22F1C7 Disk Start            0000 (0)\n-22F1C9 Int File Attributes   0000 (0)\n+23145E Compression Method    0008 (8) 'Deflated'\n+231460 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231464 CRC                   0BF987D1 (200902609)\n+231468 Compressed Size       0000004B (75)\n+23146C Uncompressed Size     0000004D (77)\n+231470 Filename Length       0045 (69)\n+231472 Extra Length          0000 (0)\n+231474 Comment Length        0000 (0)\n+231476 Disk Start            0000 (0)\n+231478 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F1CB Ext File Attributes   00000000 (0)\n-22F1CF Local Header Offset   00145A9B (1333915)\n-22F1D3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23147A Ext File Attributes   00000000 (0)\n+23147E Local Header Offset   0015ED4D (1437005)\n+231482 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F1D3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231482: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F20E CENTRAL HEADER #1242  02014B50 (33639248)\n-22F212 Created Zip Spec      14 (20) '2.0'\n-22F213 Created OS            00 (0) 'MS-DOS'\n-22F214 Extract Zip Spec      14 (20) '2.0'\n-22F215 Extract OS            00 (0) 'MS-DOS'\n-22F216 General Purpose Flag  0808 (2056)\n+2314C7 CENTRAL HEADER #1242  02014B50 (33639248)\n+2314CB Created Zip Spec      14 (20) '2.0'\n+2314CC Created OS            00 (0) 'MS-DOS'\n+2314CD Extract Zip Spec      14 (20) '2.0'\n+2314CE Extract OS            00 (0) 'MS-DOS'\n+2314CF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F218 Compression Method    0008 (8) 'Deflated'\n-22F21A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F21E CRC                   DD3F3E44 (3711909444)\n-22F222 Compressed Size       00000616 (1558)\n-22F226 Uncompressed Size     00001567 (5479)\n-22F22A Filename Length       003D (61)\n-22F22C Extra Length          0000 (0)\n-22F22E Comment Length        0000 (0)\n-22F230 Disk Start            0000 (0)\n-22F232 Int File Attributes   0000 (0)\n+2314D1 Compression Method    0008 (8) 'Deflated'\n+2314D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2314D7 CRC                   00000000 (0)\n+2314DB Compressed Size       00000002 (2)\n+2314DF Uncompressed Size     00000000 (0)\n+2314E3 Filename Length       0024 (36)\n+2314E5 Extra Length          0000 (0)\n+2314E7 Comment Length        0000 (0)\n+2314E9 Disk Start            0000 (0)\n+2314EB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F234 Ext File Attributes   00000000 (0)\n-22F238 Local Header Offset   00145D8E (1334670)\n-22F23C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2314ED Ext File Attributes   00000000 (0)\n+2314F1 Local Header Offset   0015EE0B (1437195)\n+2314F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F23C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2314F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F279 CENTRAL HEADER #1243  02014B50 (33639248)\n-22F27D Created Zip Spec      14 (20) '2.0'\n-22F27E Created OS            00 (0) 'MS-DOS'\n-22F27F Extract Zip Spec      14 (20) '2.0'\n-22F280 Extract OS            00 (0) 'MS-DOS'\n-22F281 General Purpose Flag  0808 (2056)\n+231519 CENTRAL HEADER #1243  02014B50 (33639248)\n+23151D Created Zip Spec      14 (20) '2.0'\n+23151E Created OS            00 (0) 'MS-DOS'\n+23151F Extract Zip Spec      14 (20) '2.0'\n+231520 Extract OS            00 (0) 'MS-DOS'\n+231521 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F283 Compression Method    0008 (8) 'Deflated'\n-22F285 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F289 CRC                   00000000 (0)\n-22F28D Compressed Size       00000002 (2)\n-22F291 Uncompressed Size     00000000 (0)\n-22F295 Filename Length       0015 (21)\n-22F297 Extra Length          0000 (0)\n-22F299 Comment Length        0000 (0)\n-22F29B Disk Start            0000 (0)\n-22F29D Int File Attributes   0000 (0)\n+231523 Compression Method    0008 (8) 'Deflated'\n+231525 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231529 CRC                   E0604599 (3764405657)\n+23152D Compressed Size       00000E71 (3697)\n+231531 Uncompressed Size     00004154 (16724)\n+231535 Filename Length       003A (58)\n+231537 Extra Length          0000 (0)\n+231539 Comment Length        0000 (0)\n+23153B Disk Start            0000 (0)\n+23153D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F29F Ext File Attributes   00000000 (0)\n-22F2A3 Local Header Offset   0014640F (1336335)\n-22F2A7 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n+23153F Ext File Attributes   00000000 (0)\n+231543 Local Header Offset   0015EE5F (1437279)\n+231547 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F2A7: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231547: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F2BC CENTRAL HEADER #1244  02014B50 (33639248)\n-22F2C0 Created Zip Spec      14 (20) '2.0'\n-22F2C1 Created OS            00 (0) 'MS-DOS'\n-22F2C2 Extract Zip Spec      14 (20) '2.0'\n-22F2C3 Extract OS            00 (0) 'MS-DOS'\n-22F2C4 General Purpose Flag  0808 (2056)\n+231581 CENTRAL HEADER #1244  02014B50 (33639248)\n+231585 Created Zip Spec      14 (20) '2.0'\n+231586 Created OS            00 (0) 'MS-DOS'\n+231587 Extract Zip Spec      14 (20) '2.0'\n+231588 Extract OS            00 (0) 'MS-DOS'\n+231589 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F2C6 Compression Method    0008 (8) 'Deflated'\n-22F2C8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F2CC CRC                   00000000 (0)\n-22F2D0 Compressed Size       00000002 (2)\n-22F2D4 Uncompressed Size     00000000 (0)\n-22F2D8 Filename Length       0019 (25)\n-22F2DA Extra Length          0000 (0)\n-22F2DC Comment Length        0000 (0)\n-22F2DE Disk Start            0000 (0)\n-22F2E0 Int File Attributes   0000 (0)\n+23158B Compression Method    0008 (8) 'Deflated'\n+23158D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231591 CRC                   20C4D90B (549771531)\n+231595 Compressed Size       0000026F (623)\n+231599 Uncompressed Size     000004E4 (1252)\n+23159D Filename Length       0041 (65)\n+23159F Extra Length          0000 (0)\n+2315A1 Comment Length        0000 (0)\n+2315A3 Disk Start            0000 (0)\n+2315A5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F2E2 Ext File Attributes   00000000 (0)\n-22F2E6 Local Header Offset   00146454 (1336404)\n-22F2EA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+2315A7 Ext File Attributes   00000000 (0)\n+2315AB Local Header Offset   0015FD38 (1441080)\n+2315AF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F2EA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2315AF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F303 CENTRAL HEADER #1245  02014B50 (33639248)\n-22F307 Created Zip Spec      14 (20) '2.0'\n-22F308 Created OS            00 (0) 'MS-DOS'\n-22F309 Extract Zip Spec      14 (20) '2.0'\n-22F30A Extract OS            00 (0) 'MS-DOS'\n-22F30B General Purpose Flag  0808 (2056)\n+2315F0 CENTRAL HEADER #1245  02014B50 (33639248)\n+2315F4 Created Zip Spec      14 (20) '2.0'\n+2315F5 Created OS            00 (0) 'MS-DOS'\n+2315F6 Extract Zip Spec      14 (20) '2.0'\n+2315F7 Extract OS            00 (0) 'MS-DOS'\n+2315F8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F30D Compression Method    0008 (8) 'Deflated'\n-22F30F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F313 CRC                   00000000 (0)\n-22F317 Compressed Size       00000002 (2)\n-22F31B Uncompressed Size     00000000 (0)\n-22F31F Filename Length       0022 (34)\n-22F321 Extra Length          0000 (0)\n-22F323 Comment Length        0000 (0)\n-22F325 Disk Start            0000 (0)\n-22F327 Int File Attributes   0000 (0)\n+2315FA Compression Method    0008 (8) 'Deflated'\n+2315FC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231600 CRC                   BE10FD6D (3188784493)\n+231604 Compressed Size       00000327 (807)\n+231608 Uncompressed Size     000007CE (1998)\n+23160C Filename Length       0042 (66)\n+23160E Extra Length          0000 (0)\n+231610 Comment Length        0000 (0)\n+231612 Disk Start            0000 (0)\n+231614 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F329 Ext File Attributes   00000000 (0)\n-22F32D Local Header Offset   0014649D (1336477)\n-22F331 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231616 Ext File Attributes   00000000 (0)\n+23161A Local Header Offset   00160016 (1441814)\n+23161E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F331: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23161E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F353 CENTRAL HEADER #1246  02014B50 (33639248)\n-22F357 Created Zip Spec      14 (20) '2.0'\n-22F358 Created OS            00 (0) 'MS-DOS'\n-22F359 Extract Zip Spec      14 (20) '2.0'\n-22F35A Extract OS            00 (0) 'MS-DOS'\n-22F35B General Purpose Flag  0808 (2056)\n+231660 CENTRAL HEADER #1246  02014B50 (33639248)\n+231664 Created Zip Spec      14 (20) '2.0'\n+231665 Created OS            00 (0) 'MS-DOS'\n+231666 Extract Zip Spec      14 (20) '2.0'\n+231667 Extract OS            00 (0) 'MS-DOS'\n+231668 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F35D Compression Method    0008 (8) 'Deflated'\n-22F35F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F363 CRC                   00000000 (0)\n-22F367 Compressed Size       00000002 (2)\n-22F36B Uncompressed Size     00000000 (0)\n-22F36F Filename Length       0029 (41)\n-22F371 Extra Length          0000 (0)\n-22F373 Comment Length        0000 (0)\n-22F375 Disk Start            0000 (0)\n-22F377 Int File Attributes   0000 (0)\n+23166A Compression Method    0008 (8) 'Deflated'\n+23166C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231670 CRC                   00000000 (0)\n+231674 Compressed Size       00000002 (2)\n+231678 Uncompressed Size     00000000 (0)\n+23167C Filename Length       0039 (57)\n+23167E Extra Length          0000 (0)\n+231680 Comment Length        0000 (0)\n+231682 Disk Start            0000 (0)\n+231684 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F379 Ext File Attributes   00000000 (0)\n-22F37D Local Header Offset   001464EF (1336559)\n-22F381 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231686 Ext File Attributes   00000000 (0)\n+23168A Local Header Offset   001603AD (1442733)\n+23168E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F381: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23168E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F3AA CENTRAL HEADER #1247  02014B50 (33639248)\n-22F3AE Created Zip Spec      14 (20) '2.0'\n-22F3AF Created OS            00 (0) 'MS-DOS'\n-22F3B0 Extract Zip Spec      14 (20) '2.0'\n-22F3B1 Extract OS            00 (0) 'MS-DOS'\n-22F3B2 General Purpose Flag  0808 (2056)\n+2316C7 CENTRAL HEADER #1247  02014B50 (33639248)\n+2316CB Created Zip Spec      14 (20) '2.0'\n+2316CC Created OS            00 (0) 'MS-DOS'\n+2316CD Extract Zip Spec      14 (20) '2.0'\n+2316CE Extract OS            00 (0) 'MS-DOS'\n+2316CF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F3B4 Compression Method    0008 (8) 'Deflated'\n-22F3B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F3BA CRC                   D1A0D101 (3516977409)\n-22F3BE Compressed Size       000008D1 (2257)\n-22F3C2 Uncompressed Size     00001DEF (7663)\n-22F3C6 Filename Length       003C (60)\n-22F3C8 Extra Length          0000 (0)\n-22F3CA Comment Length        0000 (0)\n-22F3CC Disk Start            0000 (0)\n-22F3CE Int File Attributes   0000 (0)\n+2316D1 Compression Method    0008 (8) 'Deflated'\n+2316D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2316D7 CRC                   0FDE28B3 (266217651)\n+2316DB Compressed Size       0000035C (860)\n+2316DF Uncompressed Size     0000079F (1951)\n+2316E3 Filename Length       0040 (64)\n+2316E5 Extra Length          0000 (0)\n+2316E7 Comment Length        0000 (0)\n+2316E9 Disk Start            0000 (0)\n+2316EB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F3D0 Ext File Attributes   00000000 (0)\n-22F3D4 Local Header Offset   00146548 (1336648)\n-22F3D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2316ED Ext File Attributes   00000000 (0)\n+2316F1 Local Header Offset   00160416 (1442838)\n+2316F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F3D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2316F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F414 CENTRAL HEADER #1248  02014B50 (33639248)\n-22F418 Created Zip Spec      14 (20) '2.0'\n-22F419 Created OS            00 (0) 'MS-DOS'\n-22F41A Extract Zip Spec      14 (20) '2.0'\n-22F41B Extract OS            00 (0) 'MS-DOS'\n-22F41C General Purpose Flag  0808 (2056)\n+231735 CENTRAL HEADER #1248  02014B50 (33639248)\n+231739 Created Zip Spec      14 (20) '2.0'\n+23173A Created OS            00 (0) 'MS-DOS'\n+23173B Extract Zip Spec      14 (20) '2.0'\n+23173C Extract OS            00 (0) 'MS-DOS'\n+23173D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F41E Compression Method    0008 (8) 'Deflated'\n-22F420 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F424 CRC                   DF3DF190 (3745378704)\n-22F428 Compressed Size       000005F3 (1523)\n-22F42C Uncompressed Size     000011B2 (4530)\n-22F430 Filename Length       0044 (68)\n-22F432 Extra Length          0000 (0)\n-22F434 Comment Length        0000 (0)\n-22F436 Disk Start            0000 (0)\n-22F438 Int File Attributes   0000 (0)\n+23173F Compression Method    0008 (8) 'Deflated'\n+231741 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231745 CRC                   30B775F3 (817329651)\n+231749 Compressed Size       0000004D (77)\n+23174D Uncompressed Size     0000004F (79)\n+231751 Filename Length       0047 (71)\n+231753 Extra Length          0000 (0)\n+231755 Comment Length        0000 (0)\n+231757 Disk Start            0000 (0)\n+231759 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F43A Ext File Attributes   00000000 (0)\n-22F43E Local Header Offset   00146E83 (1339011)\n-22F442 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23175B Ext File Attributes   00000000 (0)\n+23175F Local Header Offset   001607E0 (1443808)\n+231763 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F442: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231763: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F486 CENTRAL HEADER #1249  02014B50 (33639248)\n-22F48A Created Zip Spec      14 (20) '2.0'\n-22F48B Created OS            00 (0) 'MS-DOS'\n-22F48C Extract Zip Spec      14 (20) '2.0'\n-22F48D Extract OS            00 (0) 'MS-DOS'\n-22F48E General Purpose Flag  0808 (2056)\n+2317AA CENTRAL HEADER #1249  02014B50 (33639248)\n+2317AE Created Zip Spec      14 (20) '2.0'\n+2317AF Created OS            00 (0) 'MS-DOS'\n+2317B0 Extract Zip Spec      14 (20) '2.0'\n+2317B1 Extract OS            00 (0) 'MS-DOS'\n+2317B2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F490 Compression Method    0008 (8) 'Deflated'\n-22F492 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F496 CRC                   00000000 (0)\n-22F49A Compressed Size       00000002 (2)\n-22F49E Uncompressed Size     00000000 (0)\n-22F4A2 Filename Length       0023 (35)\n-22F4A4 Extra Length          0000 (0)\n-22F4A6 Comment Length        0000 (0)\n-22F4A8 Disk Start            0000 (0)\n-22F4AA Int File Attributes   0000 (0)\n+2317B4 Compression Method    0008 (8) 'Deflated'\n+2317B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2317BA CRC                   00000000 (0)\n+2317BE Compressed Size       00000002 (2)\n+2317C2 Uncompressed Size     00000000 (0)\n+2317C6 Filename Length       0024 (36)\n+2317C8 Extra Length          0000 (0)\n+2317CA Comment Length        0000 (0)\n+2317CC Disk Start            0000 (0)\n+2317CE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F4AC Ext File Attributes   00000000 (0)\n-22F4B0 Local Header Offset   001474E8 (1340648)\n-22F4B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2317D0 Ext File Attributes   00000000 (0)\n+2317D4 Local Header Offset   001608A2 (1444002)\n+2317D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F4B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2317D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F4D7 CENTRAL HEADER #1250  02014B50 (33639248)\n-22F4DB Created Zip Spec      14 (20) '2.0'\n-22F4DC Created OS            00 (0) 'MS-DOS'\n-22F4DD Extract Zip Spec      14 (20) '2.0'\n-22F4DE Extract OS            00 (0) 'MS-DOS'\n-22F4DF General Purpose Flag  0808 (2056)\n+2317FC CENTRAL HEADER #1250  02014B50 (33639248)\n+231800 Created Zip Spec      14 (20) '2.0'\n+231801 Created OS            00 (0) 'MS-DOS'\n+231802 Extract Zip Spec      14 (20) '2.0'\n+231803 Extract OS            00 (0) 'MS-DOS'\n+231804 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F4E1 Compression Method    0008 (8) 'Deflated'\n-22F4E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F4E7 CRC                   210B2AE8 (554380008)\n-22F4EB Compressed Size       00000406 (1030)\n-22F4EF Uncompressed Size     00000A59 (2649)\n-22F4F3 Filename Length       003C (60)\n-22F4F5 Extra Length          0000 (0)\n-22F4F7 Comment Length        0000 (0)\n-22F4F9 Disk Start            0000 (0)\n-22F4FB Int File Attributes   0000 (0)\n+231806 Compression Method    0008 (8) 'Deflated'\n+231808 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23180C CRC                   7F603610 (2137011728)\n+231810 Compressed Size       0000036D (877)\n+231814 Uncompressed Size     0000086B (2155)\n+231818 Filename Length       003A (58)\n+23181A Extra Length          0000 (0)\n+23181C Comment Length        0000 (0)\n+23181E Disk Start            0000 (0)\n+231820 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F4FD Ext File Attributes   00000000 (0)\n-22F501 Local Header Offset   0014753B (1340731)\n-22F505 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231822 Ext File Attributes   00000000 (0)\n+231826 Local Header Offset   001608F6 (1444086)\n+23182A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F505: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23182A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F541 CENTRAL HEADER #1251  02014B50 (33639248)\n-22F545 Created Zip Spec      14 (20) '2.0'\n-22F546 Created OS            00 (0) 'MS-DOS'\n-22F547 Extract Zip Spec      14 (20) '2.0'\n-22F548 Extract OS            00 (0) 'MS-DOS'\n-22F549 General Purpose Flag  0808 (2056)\n+231864 CENTRAL HEADER #1251  02014B50 (33639248)\n+231868 Created Zip Spec      14 (20) '2.0'\n+231869 Created OS            00 (0) 'MS-DOS'\n+23186A Extract Zip Spec      14 (20) '2.0'\n+23186B Extract OS            00 (0) 'MS-DOS'\n+23186C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F54B Compression Method    0008 (8) 'Deflated'\n-22F54D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F551 CRC                   C1CD2495 (3251446933)\n-22F555 Compressed Size       000001F9 (505)\n-22F559 Uncompressed Size     0000036C (876)\n-22F55D Filename Length       0032 (50)\n-22F55F Extra Length          0000 (0)\n-22F561 Comment Length        0000 (0)\n-22F563 Disk Start            0000 (0)\n-22F565 Int File Attributes   0000 (0)\n+23186E Compression Method    0008 (8) 'Deflated'\n+231870 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231874 CRC                   57271651 (1462179409)\n+231878 Compressed Size       00000D7A (3450)\n+23187C Uncompressed Size     00003A1F (14879)\n+231880 Filename Length       003A (58)\n+231882 Extra Length          0000 (0)\n+231884 Comment Length        0000 (0)\n+231886 Disk Start            0000 (0)\n+231888 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F567 Ext File Attributes   00000000 (0)\n-22F56B Local Header Offset   001479AB (1341867)\n-22F56F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23188A Ext File Attributes   00000000 (0)\n+23188E Local Header Offset   00160CCB (1445067)\n+231892 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F56F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231892: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F5A1 CENTRAL HEADER #1252  02014B50 (33639248)\n-22F5A5 Created Zip Spec      14 (20) '2.0'\n-22F5A6 Created OS            00 (0) 'MS-DOS'\n-22F5A7 Extract Zip Spec      14 (20) '2.0'\n-22F5A8 Extract OS            00 (0) 'MS-DOS'\n-22F5A9 General Purpose Flag  0808 (2056)\n+2318CC CENTRAL HEADER #1252  02014B50 (33639248)\n+2318D0 Created Zip Spec      14 (20) '2.0'\n+2318D1 Created OS            00 (0) 'MS-DOS'\n+2318D2 Extract Zip Spec      14 (20) '2.0'\n+2318D3 Extract OS            00 (0) 'MS-DOS'\n+2318D4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F5AB Compression Method    0008 (8) 'Deflated'\n-22F5AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F5B1 CRC                   C06931B4 (3228119476)\n-22F5B5 Compressed Size       00000365 (869)\n-22F5B9 Uncompressed Size     0000079E (1950)\n-22F5BD Filename Length       0035 (53)\n-22F5BF Extra Length          0000 (0)\n-22F5C1 Comment Length        0000 (0)\n-22F5C3 Disk Start            0000 (0)\n-22F5C5 Int File Attributes   0000 (0)\n+2318D6 Compression Method    0008 (8) 'Deflated'\n+2318D8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2318DC CRC                   E96DE12E (3916292398)\n+2318E0 Compressed Size       000002D8 (728)\n+2318E4 Uncompressed Size     00000683 (1667)\n+2318E8 Filename Length       0041 (65)\n+2318EA Extra Length          0000 (0)\n+2318EC Comment Length        0000 (0)\n+2318EE Disk Start            0000 (0)\n+2318F0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F5C7 Ext File Attributes   00000000 (0)\n-22F5CB Local Header Offset   00147C04 (1342468)\n-22F5CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2318F2 Ext File Attributes   00000000 (0)\n+2318F6 Local Header Offset   00161AAD (1448621)\n+2318FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F5CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2318FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F604 CENTRAL HEADER #1253  02014B50 (33639248)\n-22F608 Created Zip Spec      14 (20) '2.0'\n-22F609 Created OS            00 (0) 'MS-DOS'\n-22F60A Extract Zip Spec      14 (20) '2.0'\n-22F60B Extract OS            00 (0) 'MS-DOS'\n-22F60C General Purpose Flag  0808 (2056)\n+23193B CENTRAL HEADER #1253  02014B50 (33639248)\n+23193F Created Zip Spec      14 (20) '2.0'\n+231940 Created OS            00 (0) 'MS-DOS'\n+231941 Extract Zip Spec      14 (20) '2.0'\n+231942 Extract OS            00 (0) 'MS-DOS'\n+231943 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F60E Compression Method    0008 (8) 'Deflated'\n-22F610 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F614 CRC                   89D2048F (2312242319)\n-22F618 Compressed Size       000005A4 (1444)\n-22F61C Uncompressed Size     00000FE5 (4069)\n-22F620 Filename Length       0033 (51)\n-22F622 Extra Length          0000 (0)\n-22F624 Comment Length        0000 (0)\n-22F626 Disk Start            0000 (0)\n-22F628 Int File Attributes   0000 (0)\n+231945 Compression Method    0008 (8) 'Deflated'\n+231947 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23194B CRC                   30ABB121 (816558369)\n+23194F Compressed Size       00000873 (2163)\n+231953 Uncompressed Size     0000212F (8495)\n+231957 Filename Length       0042 (66)\n+231959 Extra Length          0000 (0)\n+23195B Comment Length        0000 (0)\n+23195D Disk Start            0000 (0)\n+23195F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F62A Ext File Attributes   00000000 (0)\n-22F62E Local Header Offset   00147FCC (1343436)\n-22F632 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231961 Ext File Attributes   00000000 (0)\n+231965 Local Header Offset   00161DF4 (1449460)\n+231969 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F632: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231969: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F665 CENTRAL HEADER #1254  02014B50 (33639248)\n-22F669 Created Zip Spec      14 (20) '2.0'\n-22F66A Created OS            00 (0) 'MS-DOS'\n-22F66B Extract Zip Spec      14 (20) '2.0'\n-22F66C Extract OS            00 (0) 'MS-DOS'\n-22F66D General Purpose Flag  0808 (2056)\n+2319AB CENTRAL HEADER #1254  02014B50 (33639248)\n+2319AF Created Zip Spec      14 (20) '2.0'\n+2319B0 Created OS            00 (0) 'MS-DOS'\n+2319B1 Extract Zip Spec      14 (20) '2.0'\n+2319B2 Extract OS            00 (0) 'MS-DOS'\n+2319B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F66F Compression Method    0008 (8) 'Deflated'\n-22F671 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F675 CRC                   8EC3CE19 (2395196953)\n-22F679 Compressed Size       0000099A (2458)\n-22F67D Uncompressed Size     000028DB (10459)\n-22F681 Filename Length       0038 (56)\n-22F683 Extra Length          0000 (0)\n-22F685 Comment Length        0000 (0)\n-22F687 Disk Start            0000 (0)\n-22F689 Int File Attributes   0000 (0)\n+2319B5 Compression Method    0008 (8) 'Deflated'\n+2319B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2319BB CRC                   9A6BCF9D (2590756765)\n+2319BF Compressed Size       0000043A (1082)\n+2319C3 Uncompressed Size     00000CBA (3258)\n+2319C7 Filename Length       004F (79)\n+2319C9 Extra Length          0000 (0)\n+2319CB Comment Length        0000 (0)\n+2319CD Disk Start            0000 (0)\n+2319CF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F68B Ext File Attributes   00000000 (0)\n-22F68F Local Header Offset   001485D1 (1344977)\n-22F693 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2319D1 Ext File Attributes   00000000 (0)\n+2319D5 Local Header Offset   001626D7 (1451735)\n+2319D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F693: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2319D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F6CB CENTRAL HEADER #1255  02014B50 (33639248)\n-22F6CF Created Zip Spec      14 (20) '2.0'\n-22F6D0 Created OS            00 (0) 'MS-DOS'\n-22F6D1 Extract Zip Spec      14 (20) '2.0'\n-22F6D2 Extract OS            00 (0) 'MS-DOS'\n-22F6D3 General Purpose Flag  0808 (2056)\n+231A28 CENTRAL HEADER #1255  02014B50 (33639248)\n+231A2C Created Zip Spec      14 (20) '2.0'\n+231A2D Created OS            00 (0) 'MS-DOS'\n+231A2E Extract Zip Spec      14 (20) '2.0'\n+231A2F Extract OS            00 (0) 'MS-DOS'\n+231A30 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F6D5 Compression Method    0008 (8) 'Deflated'\n-22F6D7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F6DB CRC                   672528B3 (1730488499)\n-22F6DF Compressed Size       000009FC (2556)\n-22F6E3 Uncompressed Size     00002110 (8464)\n-22F6E7 Filename Length       0034 (52)\n-22F6E9 Extra Length          0000 (0)\n-22F6EB Comment Length        0000 (0)\n-22F6ED Disk Start            0000 (0)\n-22F6EF Int File Attributes   0000 (0)\n+231A32 Compression Method    0008 (8) 'Deflated'\n+231A34 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231A38 CRC                   3AB6ADA6 (985050534)\n+231A3C Compressed Size       0000026F (623)\n+231A40 Uncompressed Size     000004F6 (1270)\n+231A44 Filename Length       0049 (73)\n+231A46 Extra Length          0000 (0)\n+231A48 Comment Length        0000 (0)\n+231A4A Disk Start            0000 (0)\n+231A4C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F6F1 Ext File Attributes   00000000 (0)\n-22F6F5 Local Header Offset   00148FD1 (1347537)\n-22F6F9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231A4E Ext File Attributes   00000000 (0)\n+231A52 Local Header Offset   00162B8E (1452942)\n+231A56 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F6F9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231A56: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F72D CENTRAL HEADER #1256  02014B50 (33639248)\n-22F731 Created Zip Spec      14 (20) '2.0'\n-22F732 Created OS            00 (0) 'MS-DOS'\n-22F733 Extract Zip Spec      14 (20) '2.0'\n-22F734 Extract OS            00 (0) 'MS-DOS'\n-22F735 General Purpose Flag  0808 (2056)\n+231A9F CENTRAL HEADER #1256  02014B50 (33639248)\n+231AA3 Created Zip Spec      14 (20) '2.0'\n+231AA4 Created OS            00 (0) 'MS-DOS'\n+231AA5 Extract Zip Spec      14 (20) '2.0'\n+231AA6 Extract OS            00 (0) 'MS-DOS'\n+231AA7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F737 Compression Method    0008 (8) 'Deflated'\n-22F739 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F73D CRC                   5C1106B9 (1544619705)\n-22F741 Compressed Size       000003EE (1006)\n-22F745 Uncompressed Size     00000A3E (2622)\n-22F749 Filename Length       0044 (68)\n-22F74B Extra Length          0000 (0)\n-22F74D Comment Length        0000 (0)\n-22F74F Disk Start            0000 (0)\n-22F751 Int File Attributes   0000 (0)\n+231AA9 Compression Method    0008 (8) 'Deflated'\n+231AAB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231AAF CRC                   00000000 (0)\n+231AB3 Compressed Size       00000002 (2)\n+231AB7 Uncompressed Size     00000000 (0)\n+231ABB Filename Length       0029 (41)\n+231ABD Extra Length          0000 (0)\n+231ABF Comment Length        0000 (0)\n+231AC1 Disk Start            0000 (0)\n+231AC3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F753 Ext File Attributes   00000000 (0)\n-22F757 Local Header Offset   00149A2F (1350191)\n-22F75B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231AC5 Ext File Attributes   00000000 (0)\n+231AC9 Local Header Offset   00162E74 (1453684)\n+231ACD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F75B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231ACD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F79F CENTRAL HEADER #1257  02014B50 (33639248)\n-22F7A3 Created Zip Spec      14 (20) '2.0'\n-22F7A4 Created OS            00 (0) 'MS-DOS'\n-22F7A5 Extract Zip Spec      14 (20) '2.0'\n-22F7A6 Extract OS            00 (0) 'MS-DOS'\n-22F7A7 General Purpose Flag  0808 (2056)\n+231AF6 CENTRAL HEADER #1257  02014B50 (33639248)\n+231AFA Created Zip Spec      14 (20) '2.0'\n+231AFB Created OS            00 (0) 'MS-DOS'\n+231AFC Extract Zip Spec      14 (20) '2.0'\n+231AFD Extract OS            00 (0) 'MS-DOS'\n+231AFE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F7A9 Compression Method    0008 (8) 'Deflated'\n-22F7AB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F7AF CRC                   00000000 (0)\n-22F7B3 Compressed Size       00000002 (2)\n-22F7B7 Uncompressed Size     00000000 (0)\n-22F7BB Filename Length       0030 (48)\n-22F7BD Extra Length          0000 (0)\n-22F7BF Comment Length        0000 (0)\n-22F7C1 Disk Start            0000 (0)\n-22F7C3 Int File Attributes   0000 (0)\n+231B00 Compression Method    0008 (8) 'Deflated'\n+231B02 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231B06 CRC                   2502C8DF (620939487)\n+231B0A Compressed Size       00000514 (1300)\n+231B0E Uncompressed Size     00000CD7 (3287)\n+231B12 Filename Length       0044 (68)\n+231B14 Extra Length          0000 (0)\n+231B16 Comment Length        0000 (0)\n+231B18 Disk Start            0000 (0)\n+231B1A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F7C5 Ext File Attributes   00000000 (0)\n-22F7C9 Local Header Offset   00149E8F (1351311)\n-22F7CD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231B1C Ext File Attributes   00000000 (0)\n+231B20 Local Header Offset   00162ECD (1453773)\n+231B24 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F7CD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231B24: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F7FD CENTRAL HEADER #1258  02014B50 (33639248)\n-22F801 Created Zip Spec      14 (20) '2.0'\n-22F802 Created OS            00 (0) 'MS-DOS'\n-22F803 Extract Zip Spec      14 (20) '2.0'\n-22F804 Extract OS            00 (0) 'MS-DOS'\n-22F805 General Purpose Flag  0808 (2056)\n+231B68 CENTRAL HEADER #1258  02014B50 (33639248)\n+231B6C Created Zip Spec      14 (20) '2.0'\n+231B6D Created OS            00 (0) 'MS-DOS'\n+231B6E Extract Zip Spec      14 (20) '2.0'\n+231B6F Extract OS            00 (0) 'MS-DOS'\n+231B70 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F807 Compression Method    0008 (8) 'Deflated'\n-22F809 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F80D CRC                   1C86279A (478554010)\n-22F811 Compressed Size       00000258 (600)\n-22F815 Uncompressed Size     00000446 (1094)\n-22F819 Filename Length       0046 (70)\n-22F81B Extra Length          0000 (0)\n-22F81D Comment Length        0000 (0)\n-22F81F Disk Start            0000 (0)\n-22F821 Int File Attributes   0000 (0)\n+231B72 Compression Method    0008 (8) 'Deflated'\n+231B74 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231B78 CRC                   B9A91D04 (3114867972)\n+231B7C Compressed Size       000005F8 (1528)\n+231B80 Uncompressed Size     000015CB (5579)\n+231B84 Filename Length       0043 (67)\n+231B86 Extra Length          0000 (0)\n+231B88 Comment Length        0000 (0)\n+231B8A Disk Start            0000 (0)\n+231B8C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F823 Ext File Attributes   00000000 (0)\n-22F827 Local Header Offset   00149EEF (1351407)\n-22F82B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231B8E Ext File Attributes   00000000 (0)\n+231B92 Local Header Offset   00163453 (1455187)\n+231B96 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F82B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231B96: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F871 CENTRAL HEADER #1259  02014B50 (33639248)\n-22F875 Created Zip Spec      14 (20) '2.0'\n-22F876 Created OS            00 (0) 'MS-DOS'\n-22F877 Extract Zip Spec      14 (20) '2.0'\n-22F878 Extract OS            00 (0) 'MS-DOS'\n-22F879 General Purpose Flag  0808 (2056)\n+231BD9 CENTRAL HEADER #1259  02014B50 (33639248)\n+231BDD Created Zip Spec      14 (20) '2.0'\n+231BDE Created OS            00 (0) 'MS-DOS'\n+231BDF Extract Zip Spec      14 (20) '2.0'\n+231BE0 Extract OS            00 (0) 'MS-DOS'\n+231BE1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F87B Compression Method    0008 (8) 'Deflated'\n-22F87D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F881 CRC                   E37CC454 (3816604756)\n-22F885 Compressed Size       0000029A (666)\n-22F889 Uncompressed Size     000005B2 (1458)\n-22F88D Filename Length       0045 (69)\n-22F88F Extra Length          0000 (0)\n-22F891 Comment Length        0000 (0)\n-22F893 Disk Start            0000 (0)\n-22F895 Int File Attributes   0000 (0)\n+231BE3 Compression Method    0008 (8) 'Deflated'\n+231BE5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231BE9 CRC                   00000000 (0)\n+231BED Compressed Size       00000002 (2)\n+231BF1 Uncompressed Size     00000000 (0)\n+231BF5 Filename Length       0039 (57)\n+231BF7 Extra Length          0000 (0)\n+231BF9 Comment Length        0000 (0)\n+231BFB Disk Start            0000 (0)\n+231BFD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F897 Ext File Attributes   00000000 (0)\n-22F89B Local Header Offset   0014A1BB (1352123)\n-22F89F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231BFF Ext File Attributes   00000000 (0)\n+231C03 Local Header Offset   00163ABC (1456828)\n+231C07 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F89F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231C07: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F8E4 CENTRAL HEADER #1260  02014B50 (33639248)\n-22F8E8 Created Zip Spec      14 (20) '2.0'\n-22F8E9 Created OS            00 (0) 'MS-DOS'\n-22F8EA Extract Zip Spec      14 (20) '2.0'\n-22F8EB Extract OS            00 (0) 'MS-DOS'\n-22F8EC General Purpose Flag  0808 (2056)\n+231C40 CENTRAL HEADER #1260  02014B50 (33639248)\n+231C44 Created Zip Spec      14 (20) '2.0'\n+231C45 Created OS            00 (0) 'MS-DOS'\n+231C46 Extract Zip Spec      14 (20) '2.0'\n+231C47 Extract OS            00 (0) 'MS-DOS'\n+231C48 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F8EE Compression Method    0008 (8) 'Deflated'\n-22F8F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F8F4 CRC                   2C4E86BA (743343802)\n-22F8F8 Compressed Size       000005DE (1502)\n-22F8FC Uncompressed Size     00001120 (4384)\n-22F900 Filename Length       004A (74)\n-22F902 Extra Length          0000 (0)\n-22F904 Comment Length        0000 (0)\n-22F906 Disk Start            0000 (0)\n-22F908 Int File Attributes   0000 (0)\n+231C4A Compression Method    0008 (8) 'Deflated'\n+231C4C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231C50 CRC                   2D62C29D (761447069)\n+231C54 Compressed Size       00000392 (914)\n+231C58 Uncompressed Size     0000096E (2414)\n+231C5C Filename Length       0040 (64)\n+231C5E Extra Length          0000 (0)\n+231C60 Comment Length        0000 (0)\n+231C62 Disk Start            0000 (0)\n+231C64 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F90A Ext File Attributes   00000000 (0)\n-22F90E Local Header Offset   0014A4C8 (1352904)\n-22F912 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231C66 Ext File Attributes   00000000 (0)\n+231C6A Local Header Offset   00163B25 (1456933)\n+231C6E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F912: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231C6E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F95C CENTRAL HEADER #1261  02014B50 (33639248)\n-22F960 Created Zip Spec      14 (20) '2.0'\n-22F961 Created OS            00 (0) 'MS-DOS'\n-22F962 Extract Zip Spec      14 (20) '2.0'\n-22F963 Extract OS            00 (0) 'MS-DOS'\n-22F964 General Purpose Flag  0808 (2056)\n+231CAE CENTRAL HEADER #1261  02014B50 (33639248)\n+231CB2 Created Zip Spec      14 (20) '2.0'\n+231CB3 Created OS            00 (0) 'MS-DOS'\n+231CB4 Extract Zip Spec      14 (20) '2.0'\n+231CB5 Extract OS            00 (0) 'MS-DOS'\n+231CB6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F966 Compression Method    0008 (8) 'Deflated'\n-22F968 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F96C CRC                   592F92C2 (1496289986)\n-22F970 Compressed Size       00000258 (600)\n-22F974 Uncompressed Size     00000446 (1094)\n-22F978 Filename Length       0046 (70)\n-22F97A Extra Length          0000 (0)\n-22F97C Comment Length        0000 (0)\n-22F97E Disk Start            0000 (0)\n-22F980 Int File Attributes   0000 (0)\n+231CB8 Compression Method    0008 (8) 'Deflated'\n+231CBA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231CBE CRC                   68C29EEA (1757585130)\n+231CC2 Compressed Size       0000004D (77)\n+231CC6 Uncompressed Size     0000004F (79)\n+231CCA Filename Length       0047 (71)\n+231CCC Extra Length          0000 (0)\n+231CCE Comment Length        0000 (0)\n+231CD0 Disk Start            0000 (0)\n+231CD2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F982 Ext File Attributes   00000000 (0)\n-22F986 Local Header Offset   0014AB1E (1354526)\n-22F98A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231CD4 Ext File Attributes   00000000 (0)\n+231CD8 Local Header Offset   00163F25 (1457957)\n+231CDC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F98A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231CDC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22F9D0 CENTRAL HEADER #1262  02014B50 (33639248)\n-22F9D4 Created Zip Spec      14 (20) '2.0'\n-22F9D5 Created OS            00 (0) 'MS-DOS'\n-22F9D6 Extract Zip Spec      14 (20) '2.0'\n-22F9D7 Extract OS            00 (0) 'MS-DOS'\n-22F9D8 General Purpose Flag  0808 (2056)\n+231D23 CENTRAL HEADER #1262  02014B50 (33639248)\n+231D27 Created Zip Spec      14 (20) '2.0'\n+231D28 Created OS            00 (0) 'MS-DOS'\n+231D29 Extract Zip Spec      14 (20) '2.0'\n+231D2A Extract OS            00 (0) 'MS-DOS'\n+231D2B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22F9DA Compression Method    0008 (8) 'Deflated'\n-22F9DC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22F9E0 CRC                   7BC2ED93 (2076372371)\n-22F9E4 Compressed Size       00000265 (613)\n-22F9E8 Uncompressed Size     00000461 (1121)\n-22F9EC Filename Length       004A (74)\n-22F9EE Extra Length          0000 (0)\n-22F9F0 Comment Length        0000 (0)\n-22F9F2 Disk Start            0000 (0)\n-22F9F4 Int File Attributes   0000 (0)\n+231D2D Compression Method    0008 (8) 'Deflated'\n+231D2F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231D33 CRC                   00000000 (0)\n+231D37 Compressed Size       00000002 (2)\n+231D3B Uncompressed Size     00000000 (0)\n+231D3F Filename Length       0024 (36)\n+231D41 Extra Length          0000 (0)\n+231D43 Comment Length        0000 (0)\n+231D45 Disk Start            0000 (0)\n+231D47 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22F9F6 Ext File Attributes   00000000 (0)\n-22F9FA Local Header Offset   0014ADEA (1355242)\n-22F9FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231D49 Ext File Attributes   00000000 (0)\n+231D4D Local Header Offset   00163FE7 (1458151)\n+231D51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22F9FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231D51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22FA48 CENTRAL HEADER #1263  02014B50 (33639248)\n-22FA4C Created Zip Spec      14 (20) '2.0'\n-22FA4D Created OS            00 (0) 'MS-DOS'\n-22FA4E Extract Zip Spec      14 (20) '2.0'\n-22FA4F Extract OS            00 (0) 'MS-DOS'\n-22FA50 General Purpose Flag  0808 (2056)\n+231D75 CENTRAL HEADER #1263  02014B50 (33639248)\n+231D79 Created Zip Spec      14 (20) '2.0'\n+231D7A Created OS            00 (0) 'MS-DOS'\n+231D7B Extract Zip Spec      14 (20) '2.0'\n+231D7C Extract OS            00 (0) 'MS-DOS'\n+231D7D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22FA52 Compression Method    0008 (8) 'Deflated'\n-22FA54 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22FA58 CRC                   6F1FEDD0 (1864363472)\n-22FA5C Compressed Size       0000003F (63)\n-22FA60 Uncompressed Size     0000004D (77)\n-22FA64 Filename Length       0059 (89)\n-22FA66 Extra Length          0000 (0)\n-22FA68 Comment Length        0000 (0)\n-22FA6A Disk Start            0000 (0)\n-22FA6C Int File Attributes   0000 (0)\n+231D7F Compression Method    0008 (8) 'Deflated'\n+231D81 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231D85 CRC                   CCE4DF99 (3437551513)\n+231D89 Compressed Size       00000235 (565)\n+231D8D Uncompressed Size     000003E1 (993)\n+231D91 Filename Length       0036 (54)\n+231D93 Extra Length          0000 (0)\n+231D95 Comment Length        0000 (0)\n+231D97 Disk Start            0000 (0)\n+231D99 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22FA6E Ext File Attributes   00000000 (0)\n-22FA72 Local Header Offset   0014B0C7 (1355975)\n-22FA76 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231D9B Ext File Attributes   00000000 (0)\n+231D9F Local Header Offset   0016403B (1458235)\n+231DA3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22FA76: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231DA3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22FACF CENTRAL HEADER #1264  02014B50 (33639248)\n-22FAD3 Created Zip Spec      14 (20) '2.0'\n-22FAD4 Created OS            00 (0) 'MS-DOS'\n-22FAD5 Extract Zip Spec      14 (20) '2.0'\n-22FAD6 Extract OS            00 (0) 'MS-DOS'\n-22FAD7 General Purpose Flag  0808 (2056)\n+231DD9 CENTRAL HEADER #1264  02014B50 (33639248)\n+231DDD Created Zip Spec      14 (20) '2.0'\n+231DDE Created OS            00 (0) 'MS-DOS'\n+231DDF Extract Zip Spec      14 (20) '2.0'\n+231DE0 Extract OS            00 (0) 'MS-DOS'\n+231DE1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22FAD9 Compression Method    0008 (8) 'Deflated'\n-22FADB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22FADF CRC                   6F1FEDD0 (1864363472)\n-22FAE3 Compressed Size       0000003F (63)\n-22FAE7 Uncompressed Size     0000004D (77)\n-22FAEB Filename Length       0059 (89)\n-22FAED Extra Length          0000 (0)\n-22FAEF Comment Length        0000 (0)\n-22FAF1 Disk Start            0000 (0)\n-22FAF3 Int File Attributes   0000 (0)\n+231DE3 Compression Method    0008 (8) 'Deflated'\n+231DE5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231DE9 CRC                   E6F1CD7B (3874606459)\n+231DED Compressed Size       00000244 (580)\n+231DF1 Uncompressed Size     000003E8 (1000)\n+231DF5 Filename Length       0035 (53)\n+231DF7 Extra Length          0000 (0)\n+231DF9 Comment Length        0000 (0)\n+231DFB Disk Start            0000 (0)\n+231DFD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22FAF5 Ext File Attributes   00000000 (0)\n-22FAF9 Local Header Offset   0014B18D (1356173)\n-22FAFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231DFF Ext File Attributes   00000000 (0)\n+231E03 Local Header Offset   001642D4 (1458900)\n+231E07 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22FAFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231E07: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22FB56 CENTRAL HEADER #1265  02014B50 (33639248)\n-22FB5A Created Zip Spec      14 (20) '2.0'\n-22FB5B Created OS            00 (0) 'MS-DOS'\n-22FB5C Extract Zip Spec      14 (20) '2.0'\n-22FB5D Extract OS            00 (0) 'MS-DOS'\n-22FB5E General Purpose Flag  0808 (2056)\n+231E3C CENTRAL HEADER #1265  02014B50 (33639248)\n+231E40 Created Zip Spec      14 (20) '2.0'\n+231E41 Created OS            00 (0) 'MS-DOS'\n+231E42 Extract Zip Spec      14 (20) '2.0'\n+231E43 Extract OS            00 (0) 'MS-DOS'\n+231E44 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22FB60 Compression Method    0008 (8) 'Deflated'\n-22FB62 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22FB66 CRC                   00000000 (0)\n-22FB6A Compressed Size       00000002 (2)\n-22FB6E Uncompressed Size     00000000 (0)\n-22FB72 Filename Length       001A (26)\n-22FB74 Extra Length          0000 (0)\n-22FB76 Comment Length        0000 (0)\n-22FB78 Disk Start            0000 (0)\n-22FB7A Int File Attributes   0000 (0)\n+231E46 Compression Method    0008 (8) 'Deflated'\n+231E48 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231E4C CRC                   7BBE25FE (2076059134)\n+231E50 Compressed Size       00000372 (882)\n+231E54 Uncompressed Size     00000826 (2086)\n+231E58 Filename Length       0032 (50)\n+231E5A Extra Length          0000 (0)\n+231E5C Comment Length        0000 (0)\n+231E5E Disk Start            0000 (0)\n+231E60 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22FB7C Ext File Attributes   00000000 (0)\n-22FB80 Local Header Offset   0014B253 (1356371)\n-22FB84 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231E62 Ext File Attributes   00000000 (0)\n+231E66 Local Header Offset   0016457B (1459579)\n+231E6A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22FB84: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231E6A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22FB9E CENTRAL HEADER #1266  02014B50 (33639248)\n-22FBA2 Created Zip Spec      14 (20) '2.0'\n-22FBA3 Created OS            00 (0) 'MS-DOS'\n-22FBA4 Extract Zip Spec      14 (20) '2.0'\n-22FBA5 Extract OS            00 (0) 'MS-DOS'\n-22FBA6 General Purpose Flag  0808 (2056)\n+231E9C CENTRAL HEADER #1266  02014B50 (33639248)\n+231EA0 Created Zip Spec      14 (20) '2.0'\n+231EA1 Created OS            00 (0) 'MS-DOS'\n+231EA2 Extract Zip Spec      14 (20) '2.0'\n+231EA3 Extract OS            00 (0) 'MS-DOS'\n+231EA4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22FBA8 Compression Method    0008 (8) 'Deflated'\n-22FBAA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22FBAE CRC                   D4B8B1A6 (3568873894)\n-22FBB2 Compressed Size       00000299 (665)\n-22FBB6 Uncompressed Size     00000520 (1312)\n-22FBBA Filename Length       002E (46)\n-22FBBC Extra Length          0000 (0)\n-22FBBE Comment Length        0000 (0)\n-22FBC0 Disk Start            0000 (0)\n-22FBC2 Int File Attributes   0000 (0)\n+231EA6 Compression Method    0008 (8) 'Deflated'\n+231EA8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231EAC CRC                   3E36C27D (1043776125)\n+231EB0 Compressed Size       0000025A (602)\n+231EB4 Uncompressed Size     00000443 (1091)\n+231EB8 Filename Length       0036 (54)\n+231EBA Extra Length          0000 (0)\n+231EBC Comment Length        0000 (0)\n+231EBE Disk Start            0000 (0)\n+231EC0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22FBC4 Ext File Attributes   00000000 (0)\n-22FBC8 Local Header Offset   0014B29D (1356445)\n-22FBCC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231EC2 Ext File Attributes   00000000 (0)\n+231EC6 Local Header Offset   0016494D (1460557)\n+231ECA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22FBCC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231ECA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22FBFA CENTRAL HEADER #1267  02014B50 (33639248)\n-22FBFE Created Zip Spec      14 (20) '2.0'\n-22FBFF Created OS            00 (0) 'MS-DOS'\n-22FC00 Extract Zip Spec      14 (20) '2.0'\n-22FC01 Extract OS            00 (0) 'MS-DOS'\n-22FC02 General Purpose Flag  0808 (2056)\n+231F00 CENTRAL HEADER #1267  02014B50 (33639248)\n+231F04 Created Zip Spec      14 (20) '2.0'\n+231F05 Created OS            00 (0) 'MS-DOS'\n+231F06 Extract Zip Spec      14 (20) '2.0'\n+231F07 Extract OS            00 (0) 'MS-DOS'\n+231F08 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22FC04 Compression Method    0008 (8) 'Deflated'\n-22FC06 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22FC0A CRC                   9303661A (2466473498)\n-22FC0E Compressed Size       0000043D (1085)\n-22FC12 Uncompressed Size     00000A6D (2669)\n-22FC16 Filename Length       0028 (40)\n-22FC18 Extra Length          0000 (0)\n-22FC1A Comment Length        0000 (0)\n-22FC1C Disk Start            0000 (0)\n-22FC1E Int File Attributes   0000 (0)\n+231F0A Compression Method    0008 (8) 'Deflated'\n+231F0C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231F10 CRC                   9FD06EC6 (2681237190)\n+231F14 Compressed Size       0000032F (815)\n+231F18 Uncompressed Size     0000083A (2106)\n+231F1C Filename Length       0038 (56)\n+231F1E Extra Length          0000 (0)\n+231F20 Comment Length        0000 (0)\n+231F22 Disk Start            0000 (0)\n+231F24 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22FC20 Ext File Attributes   00000000 (0)\n-22FC24 Local Header Offset   0014B592 (1357202)\n-22FC28 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231F26 Ext File Attributes   00000000 (0)\n+231F2A Local Header Offset   00164C0B (1461259)\n+231F2E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22FC28: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231F2E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22FC50 CENTRAL HEADER #1268  02014B50 (33639248)\n-22FC54 Created Zip Spec      14 (20) '2.0'\n-22FC55 Created OS            00 (0) 'MS-DOS'\n-22FC56 Extract Zip Spec      14 (20) '2.0'\n-22FC57 Extract OS            00 (0) 'MS-DOS'\n-22FC58 General Purpose Flag  0808 (2056)\n+231F66 CENTRAL HEADER #1268  02014B50 (33639248)\n+231F6A Created Zip Spec      14 (20) '2.0'\n+231F6B Created OS            00 (0) 'MS-DOS'\n+231F6C Extract Zip Spec      14 (20) '2.0'\n+231F6D Extract OS            00 (0) 'MS-DOS'\n+231F6E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22FC5A Compression Method    0008 (8) 'Deflated'\n-22FC5C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22FC60 CRC                   8391A9ED (2207361517)\n-22FC64 Compressed Size       00000421 (1057)\n-22FC68 Uncompressed Size     00001419 (5145)\n-22FC6C Filename Length       0036 (54)\n-22FC6E Extra Length          0000 (0)\n-22FC70 Comment Length        0000 (0)\n-22FC72 Disk Start            0000 (0)\n-22FC74 Int File Attributes   0000 (0)\n+231F70 Compression Method    0008 (8) 'Deflated'\n+231F72 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231F76 CRC                   AA83E634 (2860770868)\n+231F7A Compressed Size       0000027E (638)\n+231F7E Uncompressed Size     000004C3 (1219)\n+231F82 Filename Length       003D (61)\n+231F84 Extra Length          0000 (0)\n+231F86 Comment Length        0000 (0)\n+231F88 Disk Start            0000 (0)\n+231F8A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22FC76 Ext File Attributes   00000000 (0)\n-22FC7A Local Header Offset   0014BA25 (1358373)\n-22FC7E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231F8C Ext File Attributes   00000000 (0)\n+231F90 Local Header Offset   00164FA0 (1462176)\n+231F94 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22FC7E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231F94: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22FCB4 CENTRAL HEADER #1269  02014B50 (33639248)\n-22FCB8 Created Zip Spec      14 (20) '2.0'\n-22FCB9 Created OS            00 (0) 'MS-DOS'\n-22FCBA Extract Zip Spec      14 (20) '2.0'\n-22FCBB Extract OS            00 (0) 'MS-DOS'\n-22FCBC General Purpose Flag  0808 (2056)\n+231FD1 CENTRAL HEADER #1269  02014B50 (33639248)\n+231FD5 Created Zip Spec      14 (20) '2.0'\n+231FD6 Created OS            00 (0) 'MS-DOS'\n+231FD7 Extract Zip Spec      14 (20) '2.0'\n+231FD8 Extract OS            00 (0) 'MS-DOS'\n+231FD9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22FCBE Compression Method    0008 (8) 'Deflated'\n-22FCC0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22FCC4 CRC                   4C19B653 (1276753491)\n-22FCC8 Compressed Size       000004BF (1215)\n-22FCCC Uncompressed Size     00000A34 (2612)\n-22FCD0 Filename Length       002D (45)\n-22FCD2 Extra Length          0000 (0)\n-22FCD4 Comment Length        0000 (0)\n-22FCD6 Disk Start            0000 (0)\n-22FCD8 Int File Attributes   0000 (0)\n+231FDB Compression Method    0008 (8) 'Deflated'\n+231FDD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+231FE1 CRC                   00000000 (0)\n+231FE5 Compressed Size       00000002 (2)\n+231FE9 Uncompressed Size     00000000 (0)\n+231FED Filename Length       002C (44)\n+231FEF Extra Length          0000 (0)\n+231FF1 Comment Length        0000 (0)\n+231FF3 Disk Start            0000 (0)\n+231FF5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22FCDA Ext File Attributes   00000000 (0)\n-22FCDE Local Header Offset   0014BEAA (1359530)\n-22FCE2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+231FF7 Ext File Attributes   00000000 (0)\n+231FFB Local Header Offset   00165289 (1462921)\n+231FFF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22FCE2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x231FFF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22FD0F CENTRAL HEADER #1270  02014B50 (33639248)\n-22FD13 Created Zip Spec      14 (20) '2.0'\n-22FD14 Created OS            00 (0) 'MS-DOS'\n-22FD15 Extract Zip Spec      14 (20) '2.0'\n-22FD16 Extract OS            00 (0) 'MS-DOS'\n-22FD17 General Purpose Flag  0808 (2056)\n+23202B CENTRAL HEADER #1270  02014B50 (33639248)\n+23202F Created Zip Spec      14 (20) '2.0'\n+232030 Created OS            00 (0) 'MS-DOS'\n+232031 Extract Zip Spec      14 (20) '2.0'\n+232032 Extract OS            00 (0) 'MS-DOS'\n+232033 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22FD19 Compression Method    0008 (8) 'Deflated'\n-22FD1B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22FD1F CRC                   92D33C56 (2463317078)\n-22FD23 Compressed Size       00000290 (656)\n-22FD27 Uncompressed Size     0000053A (1338)\n-22FD2B Filename Length       0027 (39)\n-22FD2D Extra Length          0000 (0)\n-22FD2F Comment Length        0000 (0)\n-22FD31 Disk Start            0000 (0)\n-22FD33 Int File Attributes   0000 (0)\n+232035 Compression Method    0008 (8) 'Deflated'\n+232037 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23203B CRC                   C08A2F01 (3230281473)\n+23203F Compressed Size       00000DA3 (3491)\n+232043 Uncompressed Size     000042B4 (17076)\n+232047 Filename Length       0047 (71)\n+232049 Extra Length          0000 (0)\n+23204B Comment Length        0000 (0)\n+23204D Disk Start            0000 (0)\n+23204F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22FD35 Ext File Attributes   00000000 (0)\n-22FD39 Local Header Offset   0014C3C4 (1360836)\n-22FD3D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232051 Ext File Attributes   00000000 (0)\n+232055 Local Header Offset   001652E5 (1463013)\n+232059 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22FD3D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232059: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22FD64 CENTRAL HEADER #1271  02014B50 (33639248)\n-22FD68 Created Zip Spec      14 (20) '2.0'\n-22FD69 Created OS            00 (0) 'MS-DOS'\n-22FD6A Extract Zip Spec      14 (20) '2.0'\n-22FD6B Extract OS            00 (0) 'MS-DOS'\n-22FD6C General Purpose Flag  0808 (2056)\n+2320A0 CENTRAL HEADER #1271  02014B50 (33639248)\n+2320A4 Created Zip Spec      14 (20) '2.0'\n+2320A5 Created OS            00 (0) 'MS-DOS'\n+2320A6 Extract Zip Spec      14 (20) '2.0'\n+2320A7 Extract OS            00 (0) 'MS-DOS'\n+2320A8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22FD6E Compression Method    0008 (8) 'Deflated'\n-22FD70 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22FD74 CRC                   8AC6D7E1 (2328287201)\n-22FD78 Compressed Size       000003BB (955)\n-22FD7C Uncompressed Size     000007D3 (2003)\n-22FD80 Filename Length       002E (46)\n-22FD82 Extra Length          0000 (0)\n-22FD84 Comment Length        0000 (0)\n-22FD86 Disk Start            0000 (0)\n-22FD88 Int File Attributes   0000 (0)\n+2320AA Compression Method    0008 (8) 'Deflated'\n+2320AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2320B0 CRC                   7A12603D (2048024637)\n+2320B4 Compressed Size       00000271 (625)\n+2320B8 Uncompressed Size     000004FC (1276)\n+2320BC Filename Length       004C (76)\n+2320BE Extra Length          0000 (0)\n+2320C0 Comment Length        0000 (0)\n+2320C2 Disk Start            0000 (0)\n+2320C4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22FD8A Ext File Attributes   00000000 (0)\n-22FD8E Local Header Offset   0014C6A9 (1361577)\n-22FD92 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2320C6 Ext File Attributes   00000000 (0)\n+2320CA Local Header Offset   001660FD (1466621)\n+2320CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22FD92: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2320CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22FDC0 CENTRAL HEADER #1272  02014B50 (33639248)\n-22FDC4 Created Zip Spec      14 (20) '2.0'\n-22FDC5 Created OS            00 (0) 'MS-DOS'\n-22FDC6 Extract Zip Spec      14 (20) '2.0'\n-22FDC7 Extract OS            00 (0) 'MS-DOS'\n-22FDC8 General Purpose Flag  0808 (2056)\n+23211A CENTRAL HEADER #1272  02014B50 (33639248)\n+23211E Created Zip Spec      14 (20) '2.0'\n+23211F Created OS            00 (0) 'MS-DOS'\n+232120 Extract Zip Spec      14 (20) '2.0'\n+232121 Extract OS            00 (0) 'MS-DOS'\n+232122 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22FDCA Compression Method    0008 (8) 'Deflated'\n-22FDCC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22FDD0 CRC                   BDE39003 (3185807363)\n-22FDD4 Compressed Size       000002C2 (706)\n-22FDD8 Uncompressed Size     000005F9 (1529)\n-22FDDC Filename Length       0035 (53)\n-22FDDE Extra Length          0000 (0)\n-22FDE0 Comment Length        0000 (0)\n-22FDE2 Disk Start            0000 (0)\n-22FDE4 Int File Attributes   0000 (0)\n+232124 Compression Method    0008 (8) 'Deflated'\n+232126 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23212A CRC                   00000000 (0)\n+23212E Compressed Size       00000002 (2)\n+232132 Uncompressed Size     00000000 (0)\n+232136 Filename Length       002C (44)\n+232138 Extra Length          0000 (0)\n+23213A Comment Length        0000 (0)\n+23213C Disk Start            0000 (0)\n+23213E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22FDE6 Ext File Attributes   00000000 (0)\n-22FDEA Local Header Offset   0014CAC0 (1362624)\n-22FDEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232140 Ext File Attributes   00000000 (0)\n+232144 Local Header Offset   001663E8 (1467368)\n+232148 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22FDEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232148: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22FE23 CENTRAL HEADER #1273  02014B50 (33639248)\n-22FE27 Created Zip Spec      14 (20) '2.0'\n-22FE28 Created OS            00 (0) 'MS-DOS'\n-22FE29 Extract Zip Spec      14 (20) '2.0'\n-22FE2A Extract OS            00 (0) 'MS-DOS'\n-22FE2B General Purpose Flag  0808 (2056)\n+232174 CENTRAL HEADER #1273  02014B50 (33639248)\n+232178 Created Zip Spec      14 (20) '2.0'\n+232179 Created OS            00 (0) 'MS-DOS'\n+23217A Extract Zip Spec      14 (20) '2.0'\n+23217B Extract OS            00 (0) 'MS-DOS'\n+23217C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22FE2D Compression Method    0008 (8) 'Deflated'\n-22FE2F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22FE33 CRC                   6C2E2D81 (1814965633)\n-22FE37 Compressed Size       00000739 (1849)\n-22FE3B Uncompressed Size     00001602 (5634)\n-22FE3F Filename Length       002E (46)\n-22FE41 Extra Length          0000 (0)\n-22FE43 Comment Length        0000 (0)\n-22FE45 Disk Start            0000 (0)\n-22FE47 Int File Attributes   0000 (0)\n+23217E Compression Method    0008 (8) 'Deflated'\n+232180 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232184 CRC                   72360194 (1916141972)\n+232188 Compressed Size       0000070C (1804)\n+23218C Uncompressed Size     00001FE6 (8166)\n+232190 Filename Length       0048 (72)\n+232192 Extra Length          0000 (0)\n+232194 Comment Length        0000 (0)\n+232196 Disk Start            0000 (0)\n+232198 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22FE49 Ext File Attributes   00000000 (0)\n-22FE4D Local Header Offset   0014CDE5 (1363429)\n-22FE51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23219A Ext File Attributes   00000000 (0)\n+23219E Local Header Offset   00166444 (1467460)\n+2321A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22FE51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2321A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22FE7F CENTRAL HEADER #1274  02014B50 (33639248)\n-22FE83 Created Zip Spec      14 (20) '2.0'\n-22FE84 Created OS            00 (0) 'MS-DOS'\n-22FE85 Extract Zip Spec      14 (20) '2.0'\n-22FE86 Extract OS            00 (0) 'MS-DOS'\n-22FE87 General Purpose Flag  0808 (2056)\n+2321EA CENTRAL HEADER #1274  02014B50 (33639248)\n+2321EE Created Zip Spec      14 (20) '2.0'\n+2321EF Created OS            00 (0) 'MS-DOS'\n+2321F0 Extract Zip Spec      14 (20) '2.0'\n+2321F1 Extract OS            00 (0) 'MS-DOS'\n+2321F2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22FE89 Compression Method    0008 (8) 'Deflated'\n-22FE8B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22FE8F CRC                   350310AE (889393326)\n-22FE93 Compressed Size       0000024A (586)\n-22FE97 Uncompressed Size     0000048E (1166)\n-22FE9B Filename Length       0036 (54)\n-22FE9D Extra Length          0000 (0)\n-22FE9F Comment Length        0000 (0)\n-22FEA1 Disk Start            0000 (0)\n-22FEA3 Int File Attributes   0000 (0)\n+2321F4 Compression Method    0008 (8) 'Deflated'\n+2321F6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2321FA CRC                   9AC76181 (2596757889)\n+2321FE Compressed Size       000007D9 (2009)\n+232202 Uncompressed Size     00001C36 (7222)\n+232206 Filename Length       004D (77)\n+232208 Extra Length          0000 (0)\n+23220A Comment Length        0000 (0)\n+23220C Disk Start            0000 (0)\n+23220E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22FEA5 Ext File Attributes   00000000 (0)\n-22FEA9 Local Header Offset   0014D57A (1365370)\n-22FEAD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232210 Ext File Attributes   00000000 (0)\n+232214 Local Header Offset   00166BC6 (1469382)\n+232218 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22FEAD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232218: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22FEE3 CENTRAL HEADER #1275  02014B50 (33639248)\n-22FEE7 Created Zip Spec      14 (20) '2.0'\n-22FEE8 Created OS            00 (0) 'MS-DOS'\n-22FEE9 Extract Zip Spec      14 (20) '2.0'\n-22FEEA Extract OS            00 (0) 'MS-DOS'\n-22FEEB General Purpose Flag  0808 (2056)\n+232265 CENTRAL HEADER #1275  02014B50 (33639248)\n+232269 Created Zip Spec      14 (20) '2.0'\n+23226A Created OS            00 (0) 'MS-DOS'\n+23226B Extract Zip Spec      14 (20) '2.0'\n+23226C Extract OS            00 (0) 'MS-DOS'\n+23226D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22FEED Compression Method    0008 (8) 'Deflated'\n-22FEEF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22FEF3 CRC                   00000000 (0)\n-22FEF7 Compressed Size       00000002 (2)\n-22FEFB Uncompressed Size     00000000 (0)\n-22FEFF Filename Length       0021 (33)\n-22FF01 Extra Length          0000 (0)\n-22FF03 Comment Length        0000 (0)\n-22FF05 Disk Start            0000 (0)\n-22FF07 Int File Attributes   0000 (0)\n+23226F Compression Method    0008 (8) 'Deflated'\n+232271 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232275 CRC                   00000000 (0)\n+232279 Compressed Size       00000002 (2)\n+23227D Uncompressed Size     00000000 (0)\n+232281 Filename Length       0039 (57)\n+232283 Extra Length          0000 (0)\n+232285 Comment Length        0000 (0)\n+232287 Disk Start            0000 (0)\n+232289 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22FF09 Ext File Attributes   00000000 (0)\n-22FF0D Local Header Offset   0014D828 (1366056)\n-22FF11 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23228B Ext File Attributes   00000000 (0)\n+23228F Local Header Offset   0016741A (1471514)\n+232293 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22FF11: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232293: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22FF32 CENTRAL HEADER #1276  02014B50 (33639248)\n-22FF36 Created Zip Spec      14 (20) '2.0'\n-22FF37 Created OS            00 (0) 'MS-DOS'\n-22FF38 Extract Zip Spec      14 (20) '2.0'\n-22FF39 Extract OS            00 (0) 'MS-DOS'\n-22FF3A General Purpose Flag  0808 (2056)\n+2322CC CENTRAL HEADER #1276  02014B50 (33639248)\n+2322D0 Created Zip Spec      14 (20) '2.0'\n+2322D1 Created OS            00 (0) 'MS-DOS'\n+2322D2 Extract Zip Spec      14 (20) '2.0'\n+2322D3 Extract OS            00 (0) 'MS-DOS'\n+2322D4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22FF3C Compression Method    0008 (8) 'Deflated'\n-22FF3E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22FF42 CRC                   D05840B7 (3495444663)\n-22FF46 Compressed Size       0000030B (779)\n-22FF4A Uncompressed Size     00000833 (2099)\n-22FF4E Filename Length       003E (62)\n-22FF50 Extra Length          0000 (0)\n-22FF52 Comment Length        0000 (0)\n-22FF54 Disk Start            0000 (0)\n-22FF56 Int File Attributes   0000 (0)\n+2322D6 Compression Method    0008 (8) 'Deflated'\n+2322D8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2322DC CRC                   E9E92C7C (3924372604)\n+2322E0 Compressed Size       0000039A (922)\n+2322E4 Uncompressed Size     000009D6 (2518)\n+2322E8 Filename Length       0040 (64)\n+2322EA Extra Length          0000 (0)\n+2322EC Comment Length        0000 (0)\n+2322EE Disk Start            0000 (0)\n+2322F0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22FF58 Ext File Attributes   00000000 (0)\n-22FF5C Local Header Offset   0014D879 (1366137)\n-22FF60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2322F2 Ext File Attributes   00000000 (0)\n+2322F6 Local Header Offset   00167483 (1471619)\n+2322FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22FF60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2322FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-22FF9E CENTRAL HEADER #1277  02014B50 (33639248)\n-22FFA2 Created Zip Spec      14 (20) '2.0'\n-22FFA3 Created OS            00 (0) 'MS-DOS'\n-22FFA4 Extract Zip Spec      14 (20) '2.0'\n-22FFA5 Extract OS            00 (0) 'MS-DOS'\n-22FFA6 General Purpose Flag  0808 (2056)\n+23233A CENTRAL HEADER #1277  02014B50 (33639248)\n+23233E Created Zip Spec      14 (20) '2.0'\n+23233F Created OS            00 (0) 'MS-DOS'\n+232340 Extract Zip Spec      14 (20) '2.0'\n+232341 Extract OS            00 (0) 'MS-DOS'\n+232342 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-22FFA8 Compression Method    0008 (8) 'Deflated'\n-22FFAA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-22FFAE CRC                   D9AD2407 (3652002823)\n-22FFB2 Compressed Size       0000032E (814)\n-22FFB6 Uncompressed Size     000006C3 (1731)\n-22FFBA Filename Length       0045 (69)\n-22FFBC Extra Length          0000 (0)\n-22FFBE Comment Length        0000 (0)\n-22FFC0 Disk Start            0000 (0)\n-22FFC2 Int File Attributes   0000 (0)\n+232344 Compression Method    0008 (8) 'Deflated'\n+232346 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23234A CRC                   795A1135 (2035945781)\n+23234E Compressed Size       0000004D (77)\n+232352 Uncompressed Size     0000004F (79)\n+232356 Filename Length       0047 (71)\n+232358 Extra Length          0000 (0)\n+23235A Comment Length        0000 (0)\n+23235C Disk Start            0000 (0)\n+23235E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-22FFC4 Ext File Attributes   00000000 (0)\n-22FFC8 Local Header Offset   0014DBF0 (1367024)\n-22FFCC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232360 Ext File Attributes   00000000 (0)\n+232364 Local Header Offset   0016788B (1472651)\n+232368 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x22FFCC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232368: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230011 CENTRAL HEADER #1278  02014B50 (33639248)\n-230015 Created Zip Spec      14 (20) '2.0'\n-230016 Created OS            00 (0) 'MS-DOS'\n-230017 Extract Zip Spec      14 (20) '2.0'\n-230018 Extract OS            00 (0) 'MS-DOS'\n-230019 General Purpose Flag  0808 (2056)\n+2323AF CENTRAL HEADER #1278  02014B50 (33639248)\n+2323B3 Created Zip Spec      14 (20) '2.0'\n+2323B4 Created OS            00 (0) 'MS-DOS'\n+2323B5 Extract Zip Spec      14 (20) '2.0'\n+2323B6 Extract OS            00 (0) 'MS-DOS'\n+2323B7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23001B Compression Method    0008 (8) 'Deflated'\n-23001D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230021 CRC                   6AAAC02C (1789575212)\n-230025 Compressed Size       00000294 (660)\n-230029 Uncompressed Size     00000565 (1381)\n-23002D Filename Length       0046 (70)\n-23002F Extra Length          0000 (0)\n-230031 Comment Length        0000 (0)\n-230033 Disk Start            0000 (0)\n-230035 Int File Attributes   0000 (0)\n+2323B9 Compression Method    0008 (8) 'Deflated'\n+2323BB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2323BF CRC                   00000000 (0)\n+2323C3 Compressed Size       00000002 (2)\n+2323C7 Uncompressed Size     00000000 (0)\n+2323CB Filename Length       0020 (32)\n+2323CD Extra Length          0000 (0)\n+2323CF Comment Length        0000 (0)\n+2323D1 Disk Start            0000 (0)\n+2323D3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230037 Ext File Attributes   00000000 (0)\n-23003B Local Header Offset   0014DF91 (1367953)\n-23003F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2323D5 Ext File Attributes   00000000 (0)\n+2323D9 Local Header Offset   0016794D (1472845)\n+2323DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23003F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2323DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230085 CENTRAL HEADER #1279  02014B50 (33639248)\n-230089 Created Zip Spec      14 (20) '2.0'\n-23008A Created OS            00 (0) 'MS-DOS'\n-23008B Extract Zip Spec      14 (20) '2.0'\n-23008C Extract OS            00 (0) 'MS-DOS'\n-23008D General Purpose Flag  0808 (2056)\n+2323FD CENTRAL HEADER #1279  02014B50 (33639248)\n+232401 Created Zip Spec      14 (20) '2.0'\n+232402 Created OS            00 (0) 'MS-DOS'\n+232403 Extract Zip Spec      14 (20) '2.0'\n+232404 Extract OS            00 (0) 'MS-DOS'\n+232405 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23008F Compression Method    0008 (8) 'Deflated'\n-230091 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230095 CRC                   5F8855A5 (1602770341)\n-230099 Compressed Size       0000038F (911)\n-23009D Uncompressed Size     00000870 (2160)\n-2300A1 Filename Length       0044 (68)\n-2300A3 Extra Length          0000 (0)\n-2300A5 Comment Length        0000 (0)\n-2300A7 Disk Start            0000 (0)\n-2300A9 Int File Attributes   0000 (0)\n+232407 Compression Method    0008 (8) 'Deflated'\n+232409 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23240D CRC                   3CD43B28 (1020541736)\n+232411 Compressed Size       00001073 (4211)\n+232415 Uncompressed Size     00004EA7 (20135)\n+232419 Filename Length       0032 (50)\n+23241B Extra Length          0000 (0)\n+23241D Comment Length        0000 (0)\n+23241F Disk Start            0000 (0)\n+232421 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2300AB Ext File Attributes   00000000 (0)\n-2300AF Local Header Offset   0014E299 (1368729)\n-2300B3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232423 Ext File Attributes   00000000 (0)\n+232427 Local Header Offset   0016799D (1472925)\n+23242B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2300B3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23242B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2300F7 CENTRAL HEADER #1280  02014B50 (33639248)\n-2300FB Created Zip Spec      14 (20) '2.0'\n-2300FC Created OS            00 (0) 'MS-DOS'\n-2300FD Extract Zip Spec      14 (20) '2.0'\n-2300FE Extract OS            00 (0) 'MS-DOS'\n-2300FF General Purpose Flag  0808 (2056)\n+23245D CENTRAL HEADER #1280  02014B50 (33639248)\n+232461 Created Zip Spec      14 (20) '2.0'\n+232462 Created OS            00 (0) 'MS-DOS'\n+232463 Extract Zip Spec      14 (20) '2.0'\n+232464 Extract OS            00 (0) 'MS-DOS'\n+232465 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230101 Compression Method    0008 (8) 'Deflated'\n-230103 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230107 CRC                   C2AD0276 (3266118262)\n-23010B Compressed Size       000006C4 (1732)\n-23010F Uncompressed Size     000017B0 (6064)\n-230113 Filename Length       003C (60)\n-230115 Extra Length          0000 (0)\n-230117 Comment Length        0000 (0)\n-230119 Disk Start            0000 (0)\n-23011B Int File Attributes   0000 (0)\n+232467 Compression Method    0008 (8) 'Deflated'\n+232469 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23246D CRC                   DA82F0B1 (3666014385)\n+232471 Compressed Size       0000026B (619)\n+232475 Uncompressed Size     000004D7 (1239)\n+232479 Filename Length       0039 (57)\n+23247B Extra Length          0000 (0)\n+23247D Comment Length        0000 (0)\n+23247F Disk Start            0000 (0)\n+232481 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23011D Ext File Attributes   00000000 (0)\n-230121 Local Header Offset   0014E69A (1369754)\n-230125 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232483 Ext File Attributes   00000000 (0)\n+232487 Local Header Offset   00168A70 (1477232)\n+23248B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230125: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23248B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230161 CENTRAL HEADER #1281  02014B50 (33639248)\n-230165 Created Zip Spec      14 (20) '2.0'\n-230166 Created OS            00 (0) 'MS-DOS'\n-230167 Extract Zip Spec      14 (20) '2.0'\n-230168 Extract OS            00 (0) 'MS-DOS'\n-230169 General Purpose Flag  0808 (2056)\n+2324C4 CENTRAL HEADER #1281  02014B50 (33639248)\n+2324C8 Created Zip Spec      14 (20) '2.0'\n+2324C9 Created OS            00 (0) 'MS-DOS'\n+2324CA Extract Zip Spec      14 (20) '2.0'\n+2324CB Extract OS            00 (0) 'MS-DOS'\n+2324CC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23016B Compression Method    0008 (8) 'Deflated'\n-23016D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230171 CRC                   77B5952D (2008388909)\n-230175 Compressed Size       00000901 (2305)\n-230179 Uncompressed Size     00002A27 (10791)\n-23017D Filename Length       0045 (69)\n-23017F Extra Length          0000 (0)\n-230181 Comment Length        0000 (0)\n-230183 Disk Start            0000 (0)\n-230185 Int File Attributes   0000 (0)\n+2324CE Compression Method    0008 (8) 'Deflated'\n+2324D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2324D4 CRC                   C8E9661F (3370739231)\n+2324D8 Compressed Size       00000306 (774)\n+2324DC Uncompressed Size     00000782 (1922)\n+2324E0 Filename Length       003A (58)\n+2324E2 Extra Length          0000 (0)\n+2324E4 Comment Length        0000 (0)\n+2324E6 Disk Start            0000 (0)\n+2324E8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230187 Ext File Attributes   00000000 (0)\n-23018B Local Header Offset   0014EDC8 (1371592)\n-23018F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2324EA Ext File Attributes   00000000 (0)\n+2324EE Local Header Offset   00168D42 (1477954)\n+2324F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23018F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2324F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2301D4 CENTRAL HEADER #1282  02014B50 (33639248)\n-2301D8 Created Zip Spec      14 (20) '2.0'\n-2301D9 Created OS            00 (0) 'MS-DOS'\n-2301DA Extract Zip Spec      14 (20) '2.0'\n-2301DB Extract OS            00 (0) 'MS-DOS'\n-2301DC General Purpose Flag  0808 (2056)\n+23252C CENTRAL HEADER #1282  02014B50 (33639248)\n+232530 Created Zip Spec      14 (20) '2.0'\n+232531 Created OS            00 (0) 'MS-DOS'\n+232532 Extract Zip Spec      14 (20) '2.0'\n+232533 Extract OS            00 (0) 'MS-DOS'\n+232534 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2301DE Compression Method    0008 (8) 'Deflated'\n-2301E0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2301E4 CRC                   013987D8 (20547544)\n-2301E8 Compressed Size       0000087C (2172)\n-2301EC Uncompressed Size     00001FF0 (8176)\n-2301F0 Filename Length       0040 (64)\n-2301F2 Extra Length          0000 (0)\n-2301F4 Comment Length        0000 (0)\n-2301F6 Disk Start            0000 (0)\n-2301F8 Int File Attributes   0000 (0)\n+232536 Compression Method    0008 (8) 'Deflated'\n+232538 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23253C CRC                   80DBFA57 (2161900119)\n+232540 Compressed Size       0000026B (619)\n+232544 Uncompressed Size     000004EC (1260)\n+232548 Filename Length       0041 (65)\n+23254A Extra Length          0000 (0)\n+23254C Comment Length        0000 (0)\n+23254E Disk Start            0000 (0)\n+232550 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2301FA Ext File Attributes   00000000 (0)\n-2301FE Local Header Offset   0014F73C (1374012)\n-230202 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232552 Ext File Attributes   00000000 (0)\n+232556 Local Header Offset   001690B0 (1478832)\n+23255A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230202: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23255A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230242 CENTRAL HEADER #1283  02014B50 (33639248)\n-230246 Created Zip Spec      14 (20) '2.0'\n-230247 Created OS            00 (0) 'MS-DOS'\n-230248 Extract Zip Spec      14 (20) '2.0'\n-230249 Extract OS            00 (0) 'MS-DOS'\n-23024A General Purpose Flag  0808 (2056)\n+23259B CENTRAL HEADER #1283  02014B50 (33639248)\n+23259F Created Zip Spec      14 (20) '2.0'\n+2325A0 Created OS            00 (0) 'MS-DOS'\n+2325A1 Extract Zip Spec      14 (20) '2.0'\n+2325A2 Extract OS            00 (0) 'MS-DOS'\n+2325A3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23024C Compression Method    0008 (8) 'Deflated'\n-23024E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230252 CRC                   E564338A (3848549258)\n-230256 Compressed Size       0000087A (2170)\n-23025A Uncompressed Size     00002F23 (12067)\n-23025E Filename Length       0038 (56)\n-230260 Extra Length          0000 (0)\n-230262 Comment Length        0000 (0)\n-230264 Disk Start            0000 (0)\n-230266 Int File Attributes   0000 (0)\n+2325A5 Compression Method    0008 (8) 'Deflated'\n+2325A7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2325AB CRC                   00000000 (0)\n+2325AF Compressed Size       00000002 (2)\n+2325B3 Uncompressed Size     00000000 (0)\n+2325B7 Filename Length       0035 (53)\n+2325B9 Extra Length          0000 (0)\n+2325BB Comment Length        0000 (0)\n+2325BD Disk Start            0000 (0)\n+2325BF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230268 Ext File Attributes   00000000 (0)\n-23026C Local Header Offset   00150026 (1376294)\n-230270 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2325C1 Ext File Attributes   00000000 (0)\n+2325C5 Local Header Offset   0016938A (1479562)\n+2325C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230270: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2325C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2302A8 CENTRAL HEADER #1284  02014B50 (33639248)\n-2302AC Created Zip Spec      14 (20) '2.0'\n-2302AD Created OS            00 (0) 'MS-DOS'\n-2302AE Extract Zip Spec      14 (20) '2.0'\n-2302AF Extract OS            00 (0) 'MS-DOS'\n-2302B0 General Purpose Flag  0808 (2056)\n+2325FE CENTRAL HEADER #1284  02014B50 (33639248)\n+232602 Created Zip Spec      14 (20) '2.0'\n+232603 Created OS            00 (0) 'MS-DOS'\n+232604 Extract Zip Spec      14 (20) '2.0'\n+232605 Extract OS            00 (0) 'MS-DOS'\n+232606 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2302B2 Compression Method    0008 (8) 'Deflated'\n-2302B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2302B8 CRC                   4D393448 (1295594568)\n-2302BC Compressed Size       000002BF (703)\n-2302C0 Uncompressed Size     000005E0 (1504)\n-2302C4 Filename Length       003F (63)\n-2302C6 Extra Length          0000 (0)\n-2302C8 Comment Length        0000 (0)\n-2302CA Disk Start            0000 (0)\n-2302CC Int File Attributes   0000 (0)\n+232608 Compression Method    0008 (8) 'Deflated'\n+23260A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23260E CRC                   1ABCFE9F (448593567)\n+232612 Compressed Size       000003AE (942)\n+232616 Uncompressed Size     000009E6 (2534)\n+23261A Filename Length       003C (60)\n+23261C Extra Length          0000 (0)\n+23261E Comment Length        0000 (0)\n+232620 Disk Start            0000 (0)\n+232622 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2302CE Ext File Attributes   00000000 (0)\n-2302D2 Local Header Offset   00150906 (1378566)\n-2302D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232624 Ext File Attributes   00000000 (0)\n+232628 Local Header Offset   001693EF (1479663)\n+23262C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2302D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23262C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230315 CENTRAL HEADER #1285  02014B50 (33639248)\n-230319 Created Zip Spec      14 (20) '2.0'\n-23031A Created OS            00 (0) 'MS-DOS'\n-23031B Extract Zip Spec      14 (20) '2.0'\n-23031C Extract OS            00 (0) 'MS-DOS'\n-23031D General Purpose Flag  0808 (2056)\n+232668 CENTRAL HEADER #1285  02014B50 (33639248)\n+23266C Created Zip Spec      14 (20) '2.0'\n+23266D Created OS            00 (0) 'MS-DOS'\n+23266E Extract Zip Spec      14 (20) '2.0'\n+23266F Extract OS            00 (0) 'MS-DOS'\n+232670 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23031F Compression Method    0008 (8) 'Deflated'\n-230321 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230325 CRC                   6E2B9BED (1848351725)\n-230329 Compressed Size       00000A39 (2617)\n-23032D Uncompressed Size     00002EA9 (11945)\n-230331 Filename Length       0036 (54)\n-230333 Extra Length          0000 (0)\n-230335 Comment Length        0000 (0)\n-230337 Disk Start            0000 (0)\n-230339 Int File Attributes   0000 (0)\n+232672 Compression Method    0008 (8) 'Deflated'\n+232674 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232678 CRC                   3B7D75EA (998077930)\n+23267C Compressed Size       00000047 (71)\n+232680 Uncompressed Size     0000004B (75)\n+232684 Filename Length       0043 (67)\n+232686 Extra Length          0000 (0)\n+232688 Comment Length        0000 (0)\n+23268A Disk Start            0000 (0)\n+23268C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23033B Ext File Attributes   00000000 (0)\n-23033F Local Header Offset   00150C32 (1379378)\n-230343 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23268E Ext File Attributes   00000000 (0)\n+232692 Local Header Offset   00169807 (1480711)\n+232696 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230343: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232696: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230379 CENTRAL HEADER #1286  02014B50 (33639248)\n-23037D Created Zip Spec      14 (20) '2.0'\n-23037E Created OS            00 (0) 'MS-DOS'\n-23037F Extract Zip Spec      14 (20) '2.0'\n-230380 Extract OS            00 (0) 'MS-DOS'\n-230381 General Purpose Flag  0808 (2056)\n+2326D9 CENTRAL HEADER #1286  02014B50 (33639248)\n+2326DD Created Zip Spec      14 (20) '2.0'\n+2326DE Created OS            00 (0) 'MS-DOS'\n+2326DF Extract Zip Spec      14 (20) '2.0'\n+2326E0 Extract OS            00 (0) 'MS-DOS'\n+2326E1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230383 Compression Method    0008 (8) 'Deflated'\n-230385 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230389 CRC                   9F02351C (2667722012)\n-23038D Compressed Size       00000327 (807)\n-230391 Uncompressed Size     000007B6 (1974)\n-230395 Filename Length       003D (61)\n-230397 Extra Length          0000 (0)\n-230399 Comment Length        0000 (0)\n-23039B Disk Start            0000 (0)\n-23039D Int File Attributes   0000 (0)\n+2326E3 Compression Method    0008 (8) 'Deflated'\n+2326E5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2326E9 CRC                   00000000 (0)\n+2326ED Compressed Size       00000002 (2)\n+2326F1 Uncompressed Size     00000000 (0)\n+2326F5 Filename Length       0021 (33)\n+2326F7 Extra Length          0000 (0)\n+2326F9 Comment Length        0000 (0)\n+2326FB Disk Start            0000 (0)\n+2326FD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23039F Ext File Attributes   00000000 (0)\n-2303A3 Local Header Offset   001516CF (1382095)\n-2303A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2326FF Ext File Attributes   00000000 (0)\n+232703 Local Header Offset   001698BF (1480895)\n+232707 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2303A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232707: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2303E4 CENTRAL HEADER #1287  02014B50 (33639248)\n-2303E8 Created Zip Spec      14 (20) '2.0'\n-2303E9 Created OS            00 (0) 'MS-DOS'\n-2303EA Extract Zip Spec      14 (20) '2.0'\n-2303EB Extract OS            00 (0) 'MS-DOS'\n-2303EC General Purpose Flag  0808 (2056)\n+232728 CENTRAL HEADER #1287  02014B50 (33639248)\n+23272C Created Zip Spec      14 (20) '2.0'\n+23272D Created OS            00 (0) 'MS-DOS'\n+23272E Extract Zip Spec      14 (20) '2.0'\n+23272F Extract OS            00 (0) 'MS-DOS'\n+232730 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2303EE Compression Method    0008 (8) 'Deflated'\n-2303F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2303F4 CRC                   88D1E805 (2295457797)\n-2303F8 Compressed Size       00001221 (4641)\n-2303FC Uncompressed Size     0000521E (21022)\n-230400 Filename Length       003E (62)\n-230402 Extra Length          0000 (0)\n-230404 Comment Length        0000 (0)\n-230406 Disk Start            0000 (0)\n-230408 Int File Attributes   0000 (0)\n+232732 Compression Method    0008 (8) 'Deflated'\n+232734 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232738 CRC                   5B9C99AA (1536989610)\n+23273C Compressed Size       00000321 (801)\n+232740 Uncompressed Size     00000668 (1640)\n+232744 Filename Length       003C (60)\n+232746 Extra Length          0000 (0)\n+232748 Comment Length        0000 (0)\n+23274A Disk Start            0000 (0)\n+23274C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23040A Ext File Attributes   00000000 (0)\n-23040E Local Header Offset   00151A61 (1383009)\n-230412 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23274E Ext File Attributes   00000000 (0)\n+232752 Local Header Offset   00169910 (1480976)\n+232756 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230412: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232756: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230450 CENTRAL HEADER #1288  02014B50 (33639248)\n-230454 Created Zip Spec      14 (20) '2.0'\n-230455 Created OS            00 (0) 'MS-DOS'\n-230456 Extract Zip Spec      14 (20) '2.0'\n-230457 Extract OS            00 (0) 'MS-DOS'\n-230458 General Purpose Flag  0808 (2056)\n+232792 CENTRAL HEADER #1288  02014B50 (33639248)\n+232796 Created Zip Spec      14 (20) '2.0'\n+232797 Created OS            00 (0) 'MS-DOS'\n+232798 Extract Zip Spec      14 (20) '2.0'\n+232799 Extract OS            00 (0) 'MS-DOS'\n+23279A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23045A Compression Method    0008 (8) 'Deflated'\n-23045C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230460 CRC                   1C63503A (476270650)\n-230464 Compressed Size       00000C27 (3111)\n-230468 Uncompressed Size     00002CDC (11484)\n-23046C Filename Length       0047 (71)\n-23046E Extra Length          0000 (0)\n-230470 Comment Length        0000 (0)\n-230472 Disk Start            0000 (0)\n-230474 Int File Attributes   0000 (0)\n+23279C Compression Method    0008 (8) 'Deflated'\n+23279E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2327A2 CRC                   050B43B2 (84624306)\n+2327A6 Compressed Size       000003EF (1007)\n+2327AA Uncompressed Size     00000A2A (2602)\n+2327AE Filename Length       0035 (53)\n+2327B0 Extra Length          0000 (0)\n+2327B2 Comment Length        0000 (0)\n+2327B4 Disk Start            0000 (0)\n+2327B6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230476 Ext File Attributes   00000000 (0)\n-23047A Local Header Offset   00152CEE (1387758)\n-23047E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2327B8 Ext File Attributes   00000000 (0)\n+2327BC Local Header Offset   00169C9B (1481883)\n+2327C0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23047E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2327C0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2304C5 CENTRAL HEADER #1289  02014B50 (33639248)\n-2304C9 Created Zip Spec      14 (20) '2.0'\n-2304CA Created OS            00 (0) 'MS-DOS'\n-2304CB Extract Zip Spec      14 (20) '2.0'\n-2304CC Extract OS            00 (0) 'MS-DOS'\n-2304CD General Purpose Flag  0808 (2056)\n+2327F5 CENTRAL HEADER #1289  02014B50 (33639248)\n+2327F9 Created Zip Spec      14 (20) '2.0'\n+2327FA Created OS            00 (0) 'MS-DOS'\n+2327FB Extract Zip Spec      14 (20) '2.0'\n+2327FC Extract OS            00 (0) 'MS-DOS'\n+2327FD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2304CF Compression Method    0008 (8) 'Deflated'\n-2304D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2304D5 CRC                   A7D42D9C (2815700380)\n-2304D9 Compressed Size       000002F5 (757)\n-2304DD Uncompressed Size     0000068D (1677)\n-2304E1 Filename Length       0045 (69)\n-2304E3 Extra Length          0000 (0)\n-2304E5 Comment Length        0000 (0)\n-2304E7 Disk Start            0000 (0)\n-2304E9 Int File Attributes   0000 (0)\n+2327FF Compression Method    0008 (8) 'Deflated'\n+232801 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232805 CRC                   C548D865 (3309885541)\n+232809 Compressed Size       00000D3A (3386)\n+23280D Uncompressed Size     000039FF (14847)\n+232811 Filename Length       0034 (52)\n+232813 Extra Length          0000 (0)\n+232815 Comment Length        0000 (0)\n+232817 Disk Start            0000 (0)\n+232819 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2304EB Ext File Attributes   00000000 (0)\n-2304EF Local Header Offset   0015398A (1390986)\n-2304F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23281B Ext File Attributes   00000000 (0)\n+23281F Local Header Offset   0016A0ED (1482989)\n+232823 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2304F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232823: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230538 CENTRAL HEADER #1290  02014B50 (33639248)\n-23053C Created Zip Spec      14 (20) '2.0'\n-23053D Created OS            00 (0) 'MS-DOS'\n-23053E Extract Zip Spec      14 (20) '2.0'\n-23053F Extract OS            00 (0) 'MS-DOS'\n-230540 General Purpose Flag  0808 (2056)\n+232857 CENTRAL HEADER #1290  02014B50 (33639248)\n+23285B Created Zip Spec      14 (20) '2.0'\n+23285C Created OS            00 (0) 'MS-DOS'\n+23285D Extract Zip Spec      14 (20) '2.0'\n+23285E Extract OS            00 (0) 'MS-DOS'\n+23285F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230542 Compression Method    0008 (8) 'Deflated'\n-230544 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230548 CRC                   F623C4B3 (4129539251)\n-23054C Compressed Size       000004AB (1195)\n-230550 Uncompressed Size     00000DAA (3498)\n-230554 Filename Length       0035 (53)\n-230556 Extra Length          0000 (0)\n-230558 Comment Length        0000 (0)\n-23055A Disk Start            0000 (0)\n-23055C Int File Attributes   0000 (0)\n+232861 Compression Method    0008 (8) 'Deflated'\n+232863 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232867 CRC                   F93C1E65 (4181466725)\n+23286B Compressed Size       0000027B (635)\n+23286F Uncompressed Size     000004F1 (1265)\n+232873 Filename Length       003B (59)\n+232875 Extra Length          0000 (0)\n+232877 Comment Length        0000 (0)\n+232879 Disk Start            0000 (0)\n+23287B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23055E Ext File Attributes   00000000 (0)\n-230562 Local Header Offset   00153CF2 (1391858)\n-230566 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23287D Ext File Attributes   00000000 (0)\n+232881 Local Header Offset   0016AE89 (1486473)\n+232885 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230566: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232885: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23059B CENTRAL HEADER #1291  02014B50 (33639248)\n-23059F Created Zip Spec      14 (20) '2.0'\n-2305A0 Created OS            00 (0) 'MS-DOS'\n-2305A1 Extract Zip Spec      14 (20) '2.0'\n-2305A2 Extract OS            00 (0) 'MS-DOS'\n-2305A3 General Purpose Flag  0808 (2056)\n+2328C0 CENTRAL HEADER #1291  02014B50 (33639248)\n+2328C4 Created Zip Spec      14 (20) '2.0'\n+2328C5 Created OS            00 (0) 'MS-DOS'\n+2328C6 Extract Zip Spec      14 (20) '2.0'\n+2328C7 Extract OS            00 (0) 'MS-DOS'\n+2328C8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2305A5 Compression Method    0008 (8) 'Deflated'\n-2305A7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2305AB CRC                   5B09319E (1527329182)\n-2305AF Compressed Size       000002B4 (692)\n-2305B3 Uncompressed Size     000005D6 (1494)\n-2305B7 Filename Length       003F (63)\n-2305B9 Extra Length          0000 (0)\n-2305BB Comment Length        0000 (0)\n-2305BD Disk Start            0000 (0)\n-2305BF Int File Attributes   0000 (0)\n+2328CA Compression Method    0008 (8) 'Deflated'\n+2328CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2328D0 CRC                   1758261F (391652895)\n+2328D4 Compressed Size       00001076 (4214)\n+2328D8 Uncompressed Size     0000495E (18782)\n+2328DC Filename Length       003C (60)\n+2328DE Extra Length          0000 (0)\n+2328E0 Comment Length        0000 (0)\n+2328E2 Disk Start            0000 (0)\n+2328E4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2305C1 Ext File Attributes   00000000 (0)\n-2305C5 Local Header Offset   00154200 (1393152)\n-2305C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2328E6 Ext File Attributes   00000000 (0)\n+2328EA Local Header Offset   0016B16D (1487213)\n+2328EE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2305C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2328EE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230608 CENTRAL HEADER #1292  02014B50 (33639248)\n-23060C Created Zip Spec      14 (20) '2.0'\n-23060D Created OS            00 (0) 'MS-DOS'\n-23060E Extract Zip Spec      14 (20) '2.0'\n-23060F Extract OS            00 (0) 'MS-DOS'\n-230610 General Purpose Flag  0808 (2056)\n+23292A CENTRAL HEADER #1292  02014B50 (33639248)\n+23292E Created Zip Spec      14 (20) '2.0'\n+23292F Created OS            00 (0) 'MS-DOS'\n+232930 Extract Zip Spec      14 (20) '2.0'\n+232931 Extract OS            00 (0) 'MS-DOS'\n+232932 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230612 Compression Method    0008 (8) 'Deflated'\n-230614 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230618 CRC                   00000000 (0)\n-23061C Compressed Size       00000002 (2)\n-230620 Uncompressed Size     00000000 (0)\n-230624 Filename Length       0027 (39)\n-230626 Extra Length          0000 (0)\n-230628 Comment Length        0000 (0)\n-23062A Disk Start            0000 (0)\n-23062C Int File Attributes   0000 (0)\n+232934 Compression Method    0008 (8) 'Deflated'\n+232936 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23293A CRC                   09B44E50 (162811472)\n+23293E Compressed Size       0000026C (620)\n+232942 Uncompressed Size     000004EF (1263)\n+232946 Filename Length       0043 (67)\n+232948 Extra Length          0000 (0)\n+23294A Comment Length        0000 (0)\n+23294C Disk Start            0000 (0)\n+23294E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23062E Ext File Attributes   00000000 (0)\n-230632 Local Header Offset   00154521 (1393953)\n-230636 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232950 Ext File Attributes   00000000 (0)\n+232954 Local Header Offset   0016C24D (1491533)\n+232958 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230636: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232958: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23065D CENTRAL HEADER #1293  02014B50 (33639248)\n-230661 Created Zip Spec      14 (20) '2.0'\n-230662 Created OS            00 (0) 'MS-DOS'\n-230663 Extract Zip Spec      14 (20) '2.0'\n-230664 Extract OS            00 (0) 'MS-DOS'\n-230665 General Purpose Flag  0808 (2056)\n+23299B CENTRAL HEADER #1293  02014B50 (33639248)\n+23299F Created Zip Spec      14 (20) '2.0'\n+2329A0 Created OS            00 (0) 'MS-DOS'\n+2329A1 Extract Zip Spec      14 (20) '2.0'\n+2329A2 Extract OS            00 (0) 'MS-DOS'\n+2329A3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230667 Compression Method    0008 (8) 'Deflated'\n-230669 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23066D CRC                   504AAFAB (1347071915)\n-230671 Compressed Size       0000027D (637)\n-230675 Uncompressed Size     000004F6 (1270)\n-230679 Filename Length       004A (74)\n-23067B Extra Length          0000 (0)\n-23067D Comment Length        0000 (0)\n-23067F Disk Start            0000 (0)\n-230681 Int File Attributes   0000 (0)\n+2329A5 Compression Method    0008 (8) 'Deflated'\n+2329A7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2329AB CRC                   09B44E50 (162811472)\n+2329AF Compressed Size       0000026C (620)\n+2329B3 Uncompressed Size     000004EF (1263)\n+2329B7 Filename Length       0048 (72)\n+2329B9 Extra Length          0000 (0)\n+2329BB Comment Length        0000 (0)\n+2329BD Disk Start            0000 (0)\n+2329BF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230683 Ext File Attributes   00000000 (0)\n-230687 Local Header Offset   00154578 (1394040)\n-23068B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2329C1 Ext File Attributes   00000000 (0)\n+2329C5 Local Header Offset   0016C52A (1492266)\n+2329C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23068B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2329C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2306D5 CENTRAL HEADER #1294  02014B50 (33639248)\n-2306D9 Created Zip Spec      14 (20) '2.0'\n-2306DA Created OS            00 (0) 'MS-DOS'\n-2306DB Extract Zip Spec      14 (20) '2.0'\n-2306DC Extract OS            00 (0) 'MS-DOS'\n-2306DD General Purpose Flag  0808 (2056)\n+232A11 CENTRAL HEADER #1294  02014B50 (33639248)\n+232A15 Created Zip Spec      14 (20) '2.0'\n+232A16 Created OS            00 (0) 'MS-DOS'\n+232A17 Extract Zip Spec      14 (20) '2.0'\n+232A18 Extract OS            00 (0) 'MS-DOS'\n+232A19 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2306DF Compression Method    0008 (8) 'Deflated'\n-2306E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2306E5 CRC                   24C1B311 (616674065)\n-2306E9 Compressed Size       00000280 (640)\n-2306ED Uncompressed Size     000004FB (1275)\n-2306F1 Filename Length       004B (75)\n-2306F3 Extra Length          0000 (0)\n-2306F5 Comment Length        0000 (0)\n-2306F7 Disk Start            0000 (0)\n-2306F9 Int File Attributes   0000 (0)\n+232A1B Compression Method    0008 (8) 'Deflated'\n+232A1D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232A21 CRC                   09B44E50 (162811472)\n+232A25 Compressed Size       0000026C (620)\n+232A29 Uncompressed Size     000004EF (1263)\n+232A2D Filename Length       0050 (80)\n+232A2F Extra Length          0000 (0)\n+232A31 Comment Length        0000 (0)\n+232A33 Disk Start            0000 (0)\n+232A35 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2306FB Ext File Attributes   00000000 (0)\n-2306FF Local Header Offset   0015486D (1394797)\n-230703 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232A37 Ext File Attributes   00000000 (0)\n+232A3B Local Header Offset   0016C80C (1493004)\n+232A3F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230703: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232A3F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23074E CENTRAL HEADER #1295  02014B50 (33639248)\n-230752 Created Zip Spec      14 (20) '2.0'\n-230753 Created OS            00 (0) 'MS-DOS'\n-230754 Extract Zip Spec      14 (20) '2.0'\n-230755 Extract OS            00 (0) 'MS-DOS'\n-230756 General Purpose Flag  0808 (2056)\n+232A8F CENTRAL HEADER #1295  02014B50 (33639248)\n+232A93 Created Zip Spec      14 (20) '2.0'\n+232A94 Created OS            00 (0) 'MS-DOS'\n+232A95 Extract Zip Spec      14 (20) '2.0'\n+232A96 Extract OS            00 (0) 'MS-DOS'\n+232A97 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230758 Compression Method    0008 (8) 'Deflated'\n-23075A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23075E CRC                   F122AA0E (4045580814)\n-230762 Compressed Size       0000035E (862)\n-230766 Uncompressed Size     0000086F (2159)\n-23076A Filename Length       0041 (65)\n-23076C Extra Length          0000 (0)\n-23076E Comment Length        0000 (0)\n-230770 Disk Start            0000 (0)\n-230772 Int File Attributes   0000 (0)\n+232A99 Compression Method    0008 (8) 'Deflated'\n+232A9B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232A9F CRC                   00000000 (0)\n+232AA3 Compressed Size       00000002 (2)\n+232AA7 Uncompressed Size     00000000 (0)\n+232AAB Filename Length       0036 (54)\n+232AAD Extra Length          0000 (0)\n+232AAF Comment Length        0000 (0)\n+232AB1 Disk Start            0000 (0)\n+232AB3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230774 Ext File Attributes   00000000 (0)\n-230778 Local Header Offset   00154B66 (1395558)\n-23077C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232AB5 Ext File Attributes   00000000 (0)\n+232AB9 Local Header Offset   0016CAF6 (1493750)\n+232ABD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23077C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232ABD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2307BD CENTRAL HEADER #1296  02014B50 (33639248)\n-2307C1 Created Zip Spec      14 (20) '2.0'\n-2307C2 Created OS            00 (0) 'MS-DOS'\n-2307C3 Extract Zip Spec      14 (20) '2.0'\n-2307C4 Extract OS            00 (0) 'MS-DOS'\n-2307C5 General Purpose Flag  0808 (2056)\n+232AF3 CENTRAL HEADER #1296  02014B50 (33639248)\n+232AF7 Created Zip Spec      14 (20) '2.0'\n+232AF8 Created OS            00 (0) 'MS-DOS'\n+232AF9 Extract Zip Spec      14 (20) '2.0'\n+232AFA Extract OS            00 (0) 'MS-DOS'\n+232AFB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2307C7 Compression Method    0008 (8) 'Deflated'\n-2307C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2307CD CRC                   267DEE50 (645787216)\n-2307D1 Compressed Size       00000308 (776)\n-2307D5 Uncompressed Size     0000067B (1659)\n-2307D9 Filename Length       004A (74)\n-2307DB Extra Length          0000 (0)\n-2307DD Comment Length        0000 (0)\n-2307DF Disk Start            0000 (0)\n-2307E1 Int File Attributes   0000 (0)\n+232AFD Compression Method    0008 (8) 'Deflated'\n+232AFF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232B03 CRC                   136E4489 (325993609)\n+232B07 Compressed Size       000003B3 (947)\n+232B0B Uncompressed Size     00000951 (2385)\n+232B0F Filename Length       003D (61)\n+232B11 Extra Length          0000 (0)\n+232B13 Comment Length        0000 (0)\n+232B15 Disk Start            0000 (0)\n+232B17 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2307E3 Ext File Attributes   00000000 (0)\n-2307E7 Local Header Offset   00154F33 (1396531)\n-2307EB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232B19 Ext File Attributes   00000000 (0)\n+232B1D Local Header Offset   0016CB5C (1493852)\n+232B21 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2307EB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232B21: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230835 CENTRAL HEADER #1297  02014B50 (33639248)\n-230839 Created Zip Spec      14 (20) '2.0'\n-23083A Created OS            00 (0) 'MS-DOS'\n-23083B Extract Zip Spec      14 (20) '2.0'\n-23083C Extract OS            00 (0) 'MS-DOS'\n-23083D General Purpose Flag  0808 (2056)\n+232B5E CENTRAL HEADER #1297  02014B50 (33639248)\n+232B62 Created Zip Spec      14 (20) '2.0'\n+232B63 Created OS            00 (0) 'MS-DOS'\n+232B64 Extract Zip Spec      14 (20) '2.0'\n+232B65 Extract OS            00 (0) 'MS-DOS'\n+232B66 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23083F Compression Method    0008 (8) 'Deflated'\n-230841 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230845 CRC                   398D4C03 (965561347)\n-230849 Compressed Size       0000028E (654)\n-23084D Uncompressed Size     00000524 (1316)\n-230851 Filename Length       004C (76)\n-230853 Extra Length          0000 (0)\n-230855 Comment Length        0000 (0)\n-230857 Disk Start            0000 (0)\n-230859 Int File Attributes   0000 (0)\n+232B68 Compression Method    0008 (8) 'Deflated'\n+232B6A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232B6E CRC                   153432AD (355742381)\n+232B72 Compressed Size       0000004A (74)\n+232B76 Uncompressed Size     0000004C (76)\n+232B7A Filename Length       0044 (68)\n+232B7C Extra Length          0000 (0)\n+232B7E Comment Length        0000 (0)\n+232B80 Disk Start            0000 (0)\n+232B82 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23085B Ext File Attributes   00000000 (0)\n-23085F Local Header Offset   001552B3 (1397427)\n-230863 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232B84 Ext File Attributes   00000000 (0)\n+232B88 Local Header Offset   0016CF7A (1494906)\n+232B8C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230863: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232B8C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2308AF CENTRAL HEADER #1298  02014B50 (33639248)\n-2308B3 Created Zip Spec      14 (20) '2.0'\n-2308B4 Created OS            00 (0) 'MS-DOS'\n-2308B5 Extract Zip Spec      14 (20) '2.0'\n-2308B6 Extract OS            00 (0) 'MS-DOS'\n-2308B7 General Purpose Flag  0808 (2056)\n+232BD0 CENTRAL HEADER #1298  02014B50 (33639248)\n+232BD4 Created Zip Spec      14 (20) '2.0'\n+232BD5 Created OS            00 (0) 'MS-DOS'\n+232BD6 Extract Zip Spec      14 (20) '2.0'\n+232BD7 Extract OS            00 (0) 'MS-DOS'\n+232BD8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2308B9 Compression Method    0008 (8) 'Deflated'\n-2308BB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2308BF CRC                   120048C8 (302008520)\n-2308C3 Compressed Size       00000292 (658)\n-2308C7 Uncompressed Size     0000052A (1322)\n-2308CB Filename Length       004D (77)\n-2308CD Extra Length          0000 (0)\n-2308CF Comment Length        0000 (0)\n-2308D1 Disk Start            0000 (0)\n-2308D3 Int File Attributes   0000 (0)\n+232BDA Compression Method    0008 (8) 'Deflated'\n+232BDC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232BE0 CRC                   00000000 (0)\n+232BE4 Compressed Size       00000002 (2)\n+232BE8 Uncompressed Size     00000000 (0)\n+232BEC Filename Length       001F (31)\n+232BEE Extra Length          0000 (0)\n+232BF0 Comment Length        0000 (0)\n+232BF2 Disk Start            0000 (0)\n+232BF4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2308D5 Ext File Attributes   00000000 (0)\n-2308D9 Local Header Offset   001555BB (1398203)\n-2308DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232BF6 Ext File Attributes   00000000 (0)\n+232BFA Local Header Offset   0016D036 (1495094)\n+232BFE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2308DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232BFE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23092A CENTRAL HEADER #1299  02014B50 (33639248)\n-23092E Created Zip Spec      14 (20) '2.0'\n-23092F Created OS            00 (0) 'MS-DOS'\n-230930 Extract Zip Spec      14 (20) '2.0'\n-230931 Extract OS            00 (0) 'MS-DOS'\n-230932 General Purpose Flag  0808 (2056)\n+232C1D CENTRAL HEADER #1299  02014B50 (33639248)\n+232C21 Created Zip Spec      14 (20) '2.0'\n+232C22 Created OS            00 (0) 'MS-DOS'\n+232C23 Extract Zip Spec      14 (20) '2.0'\n+232C24 Extract OS            00 (0) 'MS-DOS'\n+232C25 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230934 Compression Method    0008 (8) 'Deflated'\n-230936 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23093A CRC                   7B9FC9D5 (2074069461)\n-23093E Compressed Size       000002C9 (713)\n-230942 Uncompressed Size     00000675 (1653)\n-230946 Filename Length       0040 (64)\n-230948 Extra Length          0000 (0)\n-23094A Comment Length        0000 (0)\n-23094C Disk Start            0000 (0)\n-23094E Int File Attributes   0000 (0)\n+232C27 Compression Method    0008 (8) 'Deflated'\n+232C29 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232C2D CRC                   775C02B8 (2002518712)\n+232C31 Compressed Size       00000D8F (3471)\n+232C35 Uncompressed Size     00003F5B (16219)\n+232C39 Filename Length       0030 (48)\n+232C3B Extra Length          0000 (0)\n+232C3D Comment Length        0000 (0)\n+232C3F Disk Start            0000 (0)\n+232C41 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230950 Ext File Attributes   00000000 (0)\n-230954 Local Header Offset   001558C8 (1398984)\n-230958 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232C43 Ext File Attributes   00000000 (0)\n+232C47 Local Header Offset   0016D085 (1495173)\n+232C4B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230958: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232C4B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230998 CENTRAL HEADER #1300  02014B50 (33639248)\n-23099C Created Zip Spec      14 (20) '2.0'\n-23099D Created OS            00 (0) 'MS-DOS'\n-23099E Extract Zip Spec      14 (20) '2.0'\n-23099F Extract OS            00 (0) 'MS-DOS'\n-2309A0 General Purpose Flag  0808 (2056)\n+232C7B CENTRAL HEADER #1300  02014B50 (33639248)\n+232C7F Created Zip Spec      14 (20) '2.0'\n+232C80 Created OS            00 (0) 'MS-DOS'\n+232C81 Extract Zip Spec      14 (20) '2.0'\n+232C82 Extract OS            00 (0) 'MS-DOS'\n+232C83 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2309A2 Compression Method    0008 (8) 'Deflated'\n-2309A4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2309A8 CRC                   A2914700 (2727429888)\n-2309AC Compressed Size       00000290 (656)\n-2309B0 Uncompressed Size     00000547 (1351)\n-2309B4 Filename Length       004D (77)\n-2309B6 Extra Length          0000 (0)\n-2309B8 Comment Length        0000 (0)\n-2309BA Disk Start            0000 (0)\n-2309BC Int File Attributes   0000 (0)\n+232C85 Compression Method    0008 (8) 'Deflated'\n+232C87 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232C8B CRC                   C7AB4B17 (3349891863)\n+232C8F Compressed Size       0000029A (666)\n+232C93 Uncompressed Size     000005A5 (1445)\n+232C97 Filename Length       0037 (55)\n+232C99 Extra Length          0000 (0)\n+232C9B Comment Length        0000 (0)\n+232C9D Disk Start            0000 (0)\n+232C9F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2309BE Ext File Attributes   00000000 (0)\n-2309C2 Local Header Offset   00155BFF (1399807)\n-2309C6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232CA1 Ext File Attributes   00000000 (0)\n+232CA5 Local Header Offset   0016DE72 (1498738)\n+232CA9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2309C6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232CA9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230A13 CENTRAL HEADER #1301  02014B50 (33639248)\n-230A17 Created Zip Spec      14 (20) '2.0'\n-230A18 Created OS            00 (0) 'MS-DOS'\n-230A19 Extract Zip Spec      14 (20) '2.0'\n-230A1A Extract OS            00 (0) 'MS-DOS'\n-230A1B General Purpose Flag  0808 (2056)\n+232CE0 CENTRAL HEADER #1301  02014B50 (33639248)\n+232CE4 Created Zip Spec      14 (20) '2.0'\n+232CE5 Created OS            00 (0) 'MS-DOS'\n+232CE6 Extract Zip Spec      14 (20) '2.0'\n+232CE7 Extract OS            00 (0) 'MS-DOS'\n+232CE8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230A1D Compression Method    0008 (8) 'Deflated'\n-230A1F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230A23 CRC                   A0D533A5 (2698326949)\n-230A27 Compressed Size       00000292 (658)\n-230A2B Uncompressed Size     0000054F (1359)\n-230A2F Filename Length       004F (79)\n-230A31 Extra Length          0000 (0)\n-230A33 Comment Length        0000 (0)\n-230A35 Disk Start            0000 (0)\n-230A37 Int File Attributes   0000 (0)\n+232CEA Compression Method    0008 (8) 'Deflated'\n+232CEC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232CF0 CRC                   935B5779 (2472236921)\n+232CF4 Compressed Size       000008C9 (2249)\n+232CF8 Uncompressed Size     000020C2 (8386)\n+232CFC Filename Length       0038 (56)\n+232CFE Extra Length          0000 (0)\n+232D00 Comment Length        0000 (0)\n+232D02 Disk Start            0000 (0)\n+232D04 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230A39 Ext File Attributes   00000000 (0)\n-230A3D Local Header Offset   00155F0A (1400586)\n-230A41 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232D06 Ext File Attributes   00000000 (0)\n+232D0A Local Header Offset   0016E171 (1499505)\n+232D0E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230A41: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232D0E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230A90 CENTRAL HEADER #1302  02014B50 (33639248)\n-230A94 Created Zip Spec      14 (20) '2.0'\n-230A95 Created OS            00 (0) 'MS-DOS'\n-230A96 Extract Zip Spec      14 (20) '2.0'\n-230A97 Extract OS            00 (0) 'MS-DOS'\n-230A98 General Purpose Flag  0808 (2056)\n+232D46 CENTRAL HEADER #1302  02014B50 (33639248)\n+232D4A Created Zip Spec      14 (20) '2.0'\n+232D4B Created OS            00 (0) 'MS-DOS'\n+232D4C Extract Zip Spec      14 (20) '2.0'\n+232D4D Extract OS            00 (0) 'MS-DOS'\n+232D4E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230A9A Compression Method    0008 (8) 'Deflated'\n-230A9C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230AA0 CRC                   DD6C864E (3714877006)\n-230AA4 Compressed Size       0000028D (653)\n-230AA8 Uncompressed Size     00000540 (1344)\n-230AAC Filename Length       004A (74)\n-230AAE Extra Length          0000 (0)\n-230AB0 Comment Length        0000 (0)\n-230AB2 Disk Start            0000 (0)\n-230AB4 Int File Attributes   0000 (0)\n+232D50 Compression Method    0008 (8) 'Deflated'\n+232D52 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232D56 CRC                   00000000 (0)\n+232D5A Compressed Size       00000002 (2)\n+232D5E Uncompressed Size     00000000 (0)\n+232D62 Filename Length       0035 (53)\n+232D64 Extra Length          0000 (0)\n+232D66 Comment Length        0000 (0)\n+232D68 Disk Start            0000 (0)\n+232D6A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230AB6 Ext File Attributes   00000000 (0)\n-230ABA Local Header Offset   00156219 (1401369)\n-230ABE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232D6C Ext File Attributes   00000000 (0)\n+232D70 Local Header Offset   0016EAA0 (1501856)\n+232D74 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230ABE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232D74: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230B08 CENTRAL HEADER #1303  02014B50 (33639248)\n-230B0C Created Zip Spec      14 (20) '2.0'\n-230B0D Created OS            00 (0) 'MS-DOS'\n-230B0E Extract Zip Spec      14 (20) '2.0'\n-230B0F Extract OS            00 (0) 'MS-DOS'\n-230B10 General Purpose Flag  0808 (2056)\n+232DA9 CENTRAL HEADER #1303  02014B50 (33639248)\n+232DAD Created Zip Spec      14 (20) '2.0'\n+232DAE Created OS            00 (0) 'MS-DOS'\n+232DAF Extract Zip Spec      14 (20) '2.0'\n+232DB0 Extract OS            00 (0) 'MS-DOS'\n+232DB1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230B12 Compression Method    0008 (8) 'Deflated'\n-230B14 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230B18 CRC                   F868DDB6 (4167622070)\n-230B1C Compressed Size       00000298 (664)\n-230B20 Uncompressed Size     00000565 (1381)\n-230B24 Filename Length       004C (76)\n-230B26 Extra Length          0000 (0)\n-230B28 Comment Length        0000 (0)\n-230B2A Disk Start            0000 (0)\n-230B2C Int File Attributes   0000 (0)\n+232DB3 Compression Method    0008 (8) 'Deflated'\n+232DB5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232DB9 CRC                   69F6084D (1777731661)\n+232DBD Compressed Size       00000357 (855)\n+232DC1 Uncompressed Size     000008C5 (2245)\n+232DC5 Filename Length       003C (60)\n+232DC7 Extra Length          0000 (0)\n+232DC9 Comment Length        0000 (0)\n+232DCB Disk Start            0000 (0)\n+232DCD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230B2E Ext File Attributes   00000000 (0)\n-230B32 Local Header Offset   0015651E (1402142)\n-230B36 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232DCF Ext File Attributes   00000000 (0)\n+232DD3 Local Header Offset   0016EB05 (1501957)\n+232DD7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230B36: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232DD7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230B82 CENTRAL HEADER #1304  02014B50 (33639248)\n-230B86 Created Zip Spec      14 (20) '2.0'\n-230B87 Created OS            00 (0) 'MS-DOS'\n-230B88 Extract Zip Spec      14 (20) '2.0'\n-230B89 Extract OS            00 (0) 'MS-DOS'\n-230B8A General Purpose Flag  0808 (2056)\n+232E13 CENTRAL HEADER #1304  02014B50 (33639248)\n+232E17 Created Zip Spec      14 (20) '2.0'\n+232E18 Created OS            00 (0) 'MS-DOS'\n+232E19 Extract Zip Spec      14 (20) '2.0'\n+232E1A Extract OS            00 (0) 'MS-DOS'\n+232E1B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230B8C Compression Method    0008 (8) 'Deflated'\n-230B8E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230B92 CRC                   97496C8E (2538171534)\n-230B96 Compressed Size       00000370 (880)\n-230B9A Uncompressed Size     000008A6 (2214)\n-230B9E Filename Length       0048 (72)\n-230BA0 Extra Length          0000 (0)\n-230BA2 Comment Length        0000 (0)\n-230BA4 Disk Start            0000 (0)\n-230BA6 Int File Attributes   0000 (0)\n+232E1D Compression Method    0008 (8) 'Deflated'\n+232E1F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232E23 CRC                   D8F9DD34 (3640253748)\n+232E27 Compressed Size       00000049 (73)\n+232E2B Uncompressed Size     0000004B (75)\n+232E2F Filename Length       0043 (67)\n+232E31 Extra Length          0000 (0)\n+232E33 Comment Length        0000 (0)\n+232E35 Disk Start            0000 (0)\n+232E37 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230BA8 Ext File Attributes   00000000 (0)\n-230BAC Local Header Offset   00156830 (1402928)\n-230BB0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232E39 Ext File Attributes   00000000 (0)\n+232E3D Local Header Offset   0016EEC6 (1502918)\n+232E41 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230BB0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232E41: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230BF8 CENTRAL HEADER #1305  02014B50 (33639248)\n-230BFC Created Zip Spec      14 (20) '2.0'\n-230BFD Created OS            00 (0) 'MS-DOS'\n-230BFE Extract Zip Spec      14 (20) '2.0'\n-230BFF Extract OS            00 (0) 'MS-DOS'\n-230C00 General Purpose Flag  0808 (2056)\n+232E84 CENTRAL HEADER #1305  02014B50 (33639248)\n+232E88 Created Zip Spec      14 (20) '2.0'\n+232E89 Created OS            00 (0) 'MS-DOS'\n+232E8A Extract Zip Spec      14 (20) '2.0'\n+232E8B Extract OS            00 (0) 'MS-DOS'\n+232E8C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230C02 Compression Method    0008 (8) 'Deflated'\n-230C04 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230C08 CRC                   00000000 (0)\n-230C0C Compressed Size       00000002 (2)\n-230C10 Uncompressed Size     00000000 (0)\n-230C14 Filename Length       0030 (48)\n-230C16 Extra Length          0000 (0)\n-230C18 Comment Length        0000 (0)\n-230C1A Disk Start            0000 (0)\n-230C1C Int File Attributes   0000 (0)\n+232E8E Compression Method    0008 (8) 'Deflated'\n+232E90 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232E94 CRC                   00000000 (0)\n+232E98 Compressed Size       00000002 (2)\n+232E9C Uncompressed Size     00000000 (0)\n+232EA0 Filename Length       0021 (33)\n+232EA2 Extra Length          0000 (0)\n+232EA4 Comment Length        0000 (0)\n+232EA6 Disk Start            0000 (0)\n+232EA8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230C1E Ext File Attributes   00000000 (0)\n-230C22 Local Header Offset   00156C16 (1403926)\n-230C26 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232EAA Ext File Attributes   00000000 (0)\n+232EAE Local Header Offset   0016EF80 (1503104)\n+232EB2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230C26: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232EB2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230C56 CENTRAL HEADER #1306  02014B50 (33639248)\n-230C5A Created Zip Spec      14 (20) '2.0'\n-230C5B Created OS            00 (0) 'MS-DOS'\n-230C5C Extract Zip Spec      14 (20) '2.0'\n-230C5D Extract OS            00 (0) 'MS-DOS'\n-230C5E General Purpose Flag  0808 (2056)\n+232ED3 CENTRAL HEADER #1306  02014B50 (33639248)\n+232ED7 Created Zip Spec      14 (20) '2.0'\n+232ED8 Created OS            00 (0) 'MS-DOS'\n+232ED9 Extract Zip Spec      14 (20) '2.0'\n+232EDA Extract OS            00 (0) 'MS-DOS'\n+232EDB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230C60 Compression Method    0008 (8) 'Deflated'\n-230C62 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230C66 CRC                   C309C134 (3272196404)\n-230C6A Compressed Size       000003FA (1018)\n-230C6E Uncompressed Size     00000E22 (3618)\n-230C72 Filename Length       0049 (73)\n-230C74 Extra Length          0000 (0)\n-230C76 Comment Length        0000 (0)\n-230C78 Disk Start            0000 (0)\n-230C7A Int File Attributes   0000 (0)\n+232EDD Compression Method    0008 (8) 'Deflated'\n+232EDF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232EE3 CRC                   74817B02 (1954642690)\n+232EE7 Compressed Size       000006E9 (1769)\n+232EEB Uncompressed Size     0000281A (10266)\n+232EEF Filename Length       0046 (70)\n+232EF1 Extra Length          0000 (0)\n+232EF3 Comment Length        0000 (0)\n+232EF5 Disk Start            0000 (0)\n+232EF7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230C7C Ext File Attributes   00000000 (0)\n-230C80 Local Header Offset   00156C76 (1404022)\n-230C84 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232EF9 Ext File Attributes   00000000 (0)\n+232EFD Local Header Offset   0016EFD1 (1503185)\n+232F01 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230C84: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232F01: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230CCD CENTRAL HEADER #1307  02014B50 (33639248)\n-230CD1 Created Zip Spec      14 (20) '2.0'\n-230CD2 Created OS            00 (0) 'MS-DOS'\n-230CD3 Extract Zip Spec      14 (20) '2.0'\n-230CD4 Extract OS            00 (0) 'MS-DOS'\n-230CD5 General Purpose Flag  0808 (2056)\n+232F47 CENTRAL HEADER #1307  02014B50 (33639248)\n+232F4B Created Zip Spec      14 (20) '2.0'\n+232F4C Created OS            00 (0) 'MS-DOS'\n+232F4D Extract Zip Spec      14 (20) '2.0'\n+232F4E Extract OS            00 (0) 'MS-DOS'\n+232F4F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230CD7 Compression Method    0008 (8) 'Deflated'\n-230CD9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230CDD CRC                   BD334F2B (3174256427)\n-230CE1 Compressed Size       00000B02 (2818)\n-230CE5 Uncompressed Size     00002C35 (11317)\n-230CE9 Filename Length       0054 (84)\n-230CEB Extra Length          0000 (0)\n-230CED Comment Length        0000 (0)\n-230CEF Disk Start            0000 (0)\n-230CF1 Int File Attributes   0000 (0)\n+232F51 Compression Method    0008 (8) 'Deflated'\n+232F53 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232F57 CRC                   8BDBBEA7 (2346434215)\n+232F5B Compressed Size       00000AE8 (2792)\n+232F5F Uncompressed Size     00002C91 (11409)\n+232F63 Filename Length       003C (60)\n+232F65 Extra Length          0000 (0)\n+232F67 Comment Length        0000 (0)\n+232F69 Disk Start            0000 (0)\n+232F6B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230CF3 Ext File Attributes   00000000 (0)\n-230CF7 Local Header Offset   001570E7 (1405159)\n-230CFB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232F6D Ext File Attributes   00000000 (0)\n+232F71 Local Header Offset   0016F72E (1505070)\n+232F75 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230CFB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232F75: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230D4F CENTRAL HEADER #1308  02014B50 (33639248)\n-230D53 Created Zip Spec      14 (20) '2.0'\n-230D54 Created OS            00 (0) 'MS-DOS'\n-230D55 Extract Zip Spec      14 (20) '2.0'\n-230D56 Extract OS            00 (0) 'MS-DOS'\n-230D57 General Purpose Flag  0808 (2056)\n+232FB1 CENTRAL HEADER #1308  02014B50 (33639248)\n+232FB5 Created Zip Spec      14 (20) '2.0'\n+232FB6 Created OS            00 (0) 'MS-DOS'\n+232FB7 Extract Zip Spec      14 (20) '2.0'\n+232FB8 Extract OS            00 (0) 'MS-DOS'\n+232FB9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230D59 Compression Method    0008 (8) 'Deflated'\n-230D5B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230D5F CRC                   00000000 (0)\n-230D63 Compressed Size       00000002 (2)\n-230D67 Uncompressed Size     00000000 (0)\n-230D6B Filename Length       002A (42)\n-230D6D Extra Length          0000 (0)\n-230D6F Comment Length        0000 (0)\n-230D71 Disk Start            0000 (0)\n-230D73 Int File Attributes   0000 (0)\n+232FBB Compression Method    0008 (8) 'Deflated'\n+232FBD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+232FC1 CRC                   B1C6B8A4 (2982590628)\n+232FC5 Compressed Size       00000214 (532)\n+232FC9 Uncompressed Size     000003C5 (965)\n+232FCD Filename Length       0032 (50)\n+232FCF Extra Length          0000 (0)\n+232FD1 Comment Length        0000 (0)\n+232FD3 Disk Start            0000 (0)\n+232FD5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230D75 Ext File Attributes   00000000 (0)\n-230D79 Local Header Offset   00157C6B (1408107)\n-230D7D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+232FD7 Ext File Attributes   00000000 (0)\n+232FDB Local Header Offset   00170280 (1507968)\n+232FDF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230D7D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x232FDF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230DA7 CENTRAL HEADER #1309  02014B50 (33639248)\n-230DAB Created Zip Spec      14 (20) '2.0'\n-230DAC Created OS            00 (0) 'MS-DOS'\n-230DAD Extract Zip Spec      14 (20) '2.0'\n-230DAE Extract OS            00 (0) 'MS-DOS'\n-230DAF General Purpose Flag  0808 (2056)\n+233011 CENTRAL HEADER #1309  02014B50 (33639248)\n+233015 Created Zip Spec      14 (20) '2.0'\n+233016 Created OS            00 (0) 'MS-DOS'\n+233017 Extract Zip Spec      14 (20) '2.0'\n+233018 Extract OS            00 (0) 'MS-DOS'\n+233019 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230DB1 Compression Method    0008 (8) 'Deflated'\n-230DB3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230DB7 CRC                   8764F382 (2271540098)\n-230DBB Compressed Size       000004AD (1197)\n-230DBF Uncompressed Size     00000E76 (3702)\n-230DC3 Filename Length       0049 (73)\n-230DC5 Extra Length          0000 (0)\n-230DC7 Comment Length        0000 (0)\n-230DC9 Disk Start            0000 (0)\n-230DCB Int File Attributes   0000 (0)\n+23301B Compression Method    0008 (8) 'Deflated'\n+23301D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233021 CRC                   00000000 (0)\n+233025 Compressed Size       00000002 (2)\n+233029 Uncompressed Size     00000000 (0)\n+23302D Filename Length       0036 (54)\n+23302F Extra Length          0000 (0)\n+233031 Comment Length        0000 (0)\n+233033 Disk Start            0000 (0)\n+233035 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230DCD Ext File Attributes   00000000 (0)\n-230DD1 Local Header Offset   00157CC5 (1408197)\n-230DD5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233037 Ext File Attributes   00000000 (0)\n+23303B Local Header Offset   001704F4 (1508596)\n+23303F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230DD5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23303F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230E1E CENTRAL HEADER #1310  02014B50 (33639248)\n-230E22 Created Zip Spec      14 (20) '2.0'\n-230E23 Created OS            00 (0) 'MS-DOS'\n-230E24 Extract Zip Spec      14 (20) '2.0'\n-230E25 Extract OS            00 (0) 'MS-DOS'\n-230E26 General Purpose Flag  0808 (2056)\n+233075 CENTRAL HEADER #1310  02014B50 (33639248)\n+233079 Created Zip Spec      14 (20) '2.0'\n+23307A Created OS            00 (0) 'MS-DOS'\n+23307B Extract Zip Spec      14 (20) '2.0'\n+23307C Extract OS            00 (0) 'MS-DOS'\n+23307D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230E28 Compression Method    0008 (8) 'Deflated'\n-230E2A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230E2E CRC                   E42AC0C2 (3828007106)\n-230E32 Compressed Size       000002E7 (743)\n-230E36 Uncompressed Size     000005D7 (1495)\n-230E3A Filename Length       0048 (72)\n-230E3C Extra Length          0000 (0)\n-230E3E Comment Length        0000 (0)\n-230E40 Disk Start            0000 (0)\n-230E42 Int File Attributes   0000 (0)\n+23307F Compression Method    0008 (8) 'Deflated'\n+233081 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233085 CRC                   26CC786B (650934379)\n+233089 Compressed Size       000003F5 (1013)\n+23308D Uncompressed Size     00000B76 (2934)\n+233091 Filename Length       003D (61)\n+233093 Extra Length          0000 (0)\n+233095 Comment Length        0000 (0)\n+233097 Disk Start            0000 (0)\n+233099 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230E44 Ext File Attributes   00000000 (0)\n-230E48 Local Header Offset   001581E9 (1409513)\n-230E4C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23309B Ext File Attributes   00000000 (0)\n+23309F Local Header Offset   0017055A (1508698)\n+2330A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230E4C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2330A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230E94 CENTRAL HEADER #1311  02014B50 (33639248)\n-230E98 Created Zip Spec      14 (20) '2.0'\n-230E99 Created OS            00 (0) 'MS-DOS'\n-230E9A Extract Zip Spec      14 (20) '2.0'\n-230E9B Extract OS            00 (0) 'MS-DOS'\n-230E9C General Purpose Flag  0808 (2056)\n+2330E0 CENTRAL HEADER #1311  02014B50 (33639248)\n+2330E4 Created Zip Spec      14 (20) '2.0'\n+2330E5 Created OS            00 (0) 'MS-DOS'\n+2330E6 Extract Zip Spec      14 (20) '2.0'\n+2330E7 Extract OS            00 (0) 'MS-DOS'\n+2330E8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230E9E Compression Method    0008 (8) 'Deflated'\n-230EA0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230EA4 CRC                   33C91E00 (868818432)\n-230EA8 Compressed Size       000003D6 (982)\n-230EAC Uncompressed Size     00000AEA (2794)\n-230EB0 Filename Length       0059 (89)\n-230EB2 Extra Length          0000 (0)\n-230EB4 Comment Length        0000 (0)\n-230EB6 Disk Start            0000 (0)\n-230EB8 Int File Attributes   0000 (0)\n+2330EA Compression Method    0008 (8) 'Deflated'\n+2330EC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2330F0 CRC                   39E2F889 (971176073)\n+2330F4 Compressed Size       0000004A (74)\n+2330F8 Uncompressed Size     0000004C (76)\n+2330FC Filename Length       0044 (68)\n+2330FE Extra Length          0000 (0)\n+233100 Comment Length        0000 (0)\n+233102 Disk Start            0000 (0)\n+233104 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230EBA Ext File Attributes   00000000 (0)\n-230EBE Local Header Offset   00158546 (1410374)\n-230EC2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233106 Ext File Attributes   00000000 (0)\n+23310A Local Header Offset   001709BA (1509818)\n+23310E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230EC2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23310E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230F1B CENTRAL HEADER #1312  02014B50 (33639248)\n-230F1F Created Zip Spec      14 (20) '2.0'\n-230F20 Created OS            00 (0) 'MS-DOS'\n-230F21 Extract Zip Spec      14 (20) '2.0'\n-230F22 Extract OS            00 (0) 'MS-DOS'\n-230F23 General Purpose Flag  0808 (2056)\n+233152 CENTRAL HEADER #1312  02014B50 (33639248)\n+233156 Created Zip Spec      14 (20) '2.0'\n+233157 Created OS            00 (0) 'MS-DOS'\n+233158 Extract Zip Spec      14 (20) '2.0'\n+233159 Extract OS            00 (0) 'MS-DOS'\n+23315A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230F25 Compression Method    0008 (8) 'Deflated'\n-230F27 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230F2B CRC                   055EEF97 (90107799)\n-230F2F Compressed Size       0000060B (1547)\n-230F33 Uncompressed Size     000012A3 (4771)\n-230F37 Filename Length       003C (60)\n-230F39 Extra Length          0000 (0)\n-230F3B Comment Length        0000 (0)\n-230F3D Disk Start            0000 (0)\n-230F3F Int File Attributes   0000 (0)\n+23315C Compression Method    0008 (8) 'Deflated'\n+23315E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233162 CRC                   00000000 (0)\n+233166 Compressed Size       00000002 (2)\n+23316A Uncompressed Size     00000000 (0)\n+23316E Filename Length       0020 (32)\n+233170 Extra Length          0000 (0)\n+233172 Comment Length        0000 (0)\n+233174 Disk Start            0000 (0)\n+233176 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230F41 Ext File Attributes   00000000 (0)\n-230F45 Local Header Offset   001589A3 (1411491)\n-230F49 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233178 Ext File Attributes   00000000 (0)\n+23317C Local Header Offset   00170A76 (1510006)\n+233180 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230F49: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233180: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-230F85 CENTRAL HEADER #1313  02014B50 (33639248)\n-230F89 Created Zip Spec      14 (20) '2.0'\n-230F8A Created OS            00 (0) 'MS-DOS'\n-230F8B Extract Zip Spec      14 (20) '2.0'\n-230F8C Extract OS            00 (0) 'MS-DOS'\n-230F8D General Purpose Flag  0808 (2056)\n+2331A0 CENTRAL HEADER #1313  02014B50 (33639248)\n+2331A4 Created Zip Spec      14 (20) '2.0'\n+2331A5 Created OS            00 (0) 'MS-DOS'\n+2331A6 Extract Zip Spec      14 (20) '2.0'\n+2331A7 Extract OS            00 (0) 'MS-DOS'\n+2331A8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-230F8F Compression Method    0008 (8) 'Deflated'\n-230F91 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-230F95 CRC                   02F66D1C (49704220)\n-230F99 Compressed Size       000003CC (972)\n-230F9D Uncompressed Size     000008F8 (2296)\n-230FA1 Filename Length       004E (78)\n-230FA3 Extra Length          0000 (0)\n-230FA5 Comment Length        0000 (0)\n-230FA7 Disk Start            0000 (0)\n-230FA9 Int File Attributes   0000 (0)\n+2331AA Compression Method    0008 (8) 'Deflated'\n+2331AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2331B0 CRC                   EDC5D490 (3989165200)\n+2331B4 Compressed Size       00000470 (1136)\n+2331B8 Uncompressed Size     00000E50 (3664)\n+2331BC Filename Length       003E (62)\n+2331BE Extra Length          0000 (0)\n+2331C0 Comment Length        0000 (0)\n+2331C2 Disk Start            0000 (0)\n+2331C4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-230FAB Ext File Attributes   00000000 (0)\n-230FAF Local Header Offset   00159018 (1413144)\n-230FB3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2331C6 Ext File Attributes   00000000 (0)\n+2331CA Local Header Offset   00170AC6 (1510086)\n+2331CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x230FB3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2331CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231001 CENTRAL HEADER #1314  02014B50 (33639248)\n-231005 Created Zip Spec      14 (20) '2.0'\n-231006 Created OS            00 (0) 'MS-DOS'\n-231007 Extract Zip Spec      14 (20) '2.0'\n-231008 Extract OS            00 (0) 'MS-DOS'\n-231009 General Purpose Flag  0808 (2056)\n+23320C CENTRAL HEADER #1314  02014B50 (33639248)\n+233210 Created Zip Spec      14 (20) '2.0'\n+233211 Created OS            00 (0) 'MS-DOS'\n+233212 Extract Zip Spec      14 (20) '2.0'\n+233213 Extract OS            00 (0) 'MS-DOS'\n+233214 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23100B Compression Method    0008 (8) 'Deflated'\n-23100D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231011 CRC                   0266C937 (40290615)\n-231015 Compressed Size       00000401 (1025)\n-231019 Uncompressed Size     00000AC3 (2755)\n-23101D Filename Length       0054 (84)\n-23101F Extra Length          0000 (0)\n-231021 Comment Length        0000 (0)\n-231023 Disk Start            0000 (0)\n-231025 Int File Attributes   0000 (0)\n+233216 Compression Method    0008 (8) 'Deflated'\n+233218 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23321C CRC                   F6A25F0D (4137836301)\n+233220 Compressed Size       00001408 (5128)\n+233224 Uncompressed Size     00005EAB (24235)\n+233228 Filename Length       0032 (50)\n+23322A Extra Length          0000 (0)\n+23322C Comment Length        0000 (0)\n+23322E Disk Start            0000 (0)\n+233230 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231027 Ext File Attributes   00000000 (0)\n-23102B Local Header Offset   00159460 (1414240)\n-23102F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233232 Ext File Attributes   00000000 (0)\n+233236 Local Header Offset   00170FA2 (1511330)\n+23323A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23102F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23323A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231083 CENTRAL HEADER #1315  02014B50 (33639248)\n-231087 Created Zip Spec      14 (20) '2.0'\n-231088 Created OS            00 (0) 'MS-DOS'\n-231089 Extract Zip Spec      14 (20) '2.0'\n-23108A Extract OS            00 (0) 'MS-DOS'\n-23108B General Purpose Flag  0808 (2056)\n+23326C CENTRAL HEADER #1315  02014B50 (33639248)\n+233270 Created Zip Spec      14 (20) '2.0'\n+233271 Created OS            00 (0) 'MS-DOS'\n+233272 Extract Zip Spec      14 (20) '2.0'\n+233273 Extract OS            00 (0) 'MS-DOS'\n+233274 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23108D Compression Method    0008 (8) 'Deflated'\n-23108F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231093 CRC                   BFC681E5 (3217457637)\n-231097 Compressed Size       00000541 (1345)\n-23109B Uncompressed Size     00000FB5 (4021)\n-23109F Filename Length       0050 (80)\n-2310A1 Extra Length          0000 (0)\n-2310A3 Comment Length        0000 (0)\n-2310A5 Disk Start            0000 (0)\n-2310A7 Int File Attributes   0000 (0)\n+233276 Compression Method    0008 (8) 'Deflated'\n+233278 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23327C CRC                   8E75DF39 (2390089529)\n+233280 Compressed Size       00000354 (852)\n+233284 Uncompressed Size     000007A7 (1959)\n+233288 Filename Length       0039 (57)\n+23328A Extra Length          0000 (0)\n+23328C Comment Length        0000 (0)\n+23328E Disk Start            0000 (0)\n+233290 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2310A9 Ext File Attributes   00000000 (0)\n-2310AD Local Header Offset   001598E3 (1415395)\n-2310B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233292 Ext File Attributes   00000000 (0)\n+233296 Local Header Offset   0017240A (1516554)\n+23329A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2310B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23329A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231101 CENTRAL HEADER #1316  02014B50 (33639248)\n-231105 Created Zip Spec      14 (20) '2.0'\n-231106 Created OS            00 (0) 'MS-DOS'\n-231107 Extract Zip Spec      14 (20) '2.0'\n-231108 Extract OS            00 (0) 'MS-DOS'\n-231109 General Purpose Flag  0808 (2056)\n+2332D3 CENTRAL HEADER #1316  02014B50 (33639248)\n+2332D7 Created Zip Spec      14 (20) '2.0'\n+2332D8 Created OS            00 (0) 'MS-DOS'\n+2332D9 Extract Zip Spec      14 (20) '2.0'\n+2332DA Extract OS            00 (0) 'MS-DOS'\n+2332DB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23110B Compression Method    0008 (8) 'Deflated'\n-23110D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231111 CRC                   3C5C28F1 (1012672753)\n-231115 Compressed Size       00000C22 (3106)\n-231119 Uncompressed Size     0000348D (13453)\n-23111D Filename Length       004B (75)\n-23111F Extra Length          0000 (0)\n-231121 Comment Length        0000 (0)\n-231123 Disk Start            0000 (0)\n-231125 Int File Attributes   0000 (0)\n+2332DD Compression Method    0008 (8) 'Deflated'\n+2332DF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2332E3 CRC                   6AA8E21B (1789452827)\n+2332E7 Compressed Size       00000659 (1625)\n+2332EB Uncompressed Size     0000175E (5982)\n+2332EF Filename Length       003A (58)\n+2332F1 Extra Length          0000 (0)\n+2332F3 Comment Length        0000 (0)\n+2332F5 Disk Start            0000 (0)\n+2332F7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231127 Ext File Attributes   00000000 (0)\n-23112B Local Header Offset   00159EA2 (1416866)\n-23112F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2332F9 Ext File Attributes   00000000 (0)\n+2332FD Local Header Offset   001727C5 (1517509)\n+233301 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23112F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233301: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23117A CENTRAL HEADER #1317  02014B50 (33639248)\n-23117E Created Zip Spec      14 (20) '2.0'\n-23117F Created OS            00 (0) 'MS-DOS'\n-231180 Extract Zip Spec      14 (20) '2.0'\n-231181 Extract OS            00 (0) 'MS-DOS'\n-231182 General Purpose Flag  0808 (2056)\n+23333B CENTRAL HEADER #1317  02014B50 (33639248)\n+23333F Created Zip Spec      14 (20) '2.0'\n+233340 Created OS            00 (0) 'MS-DOS'\n+233341 Extract Zip Spec      14 (20) '2.0'\n+233342 Extract OS            00 (0) 'MS-DOS'\n+233343 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231184 Compression Method    0008 (8) 'Deflated'\n-231186 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23118A CRC                   81760C22 (2171997218)\n-23118E Compressed Size       000003DE (990)\n-231192 Uncompressed Size     0000086F (2159)\n-231196 Filename Length       0053 (83)\n-231198 Extra Length          0000 (0)\n-23119A Comment Length        0000 (0)\n-23119C Disk Start            0000 (0)\n-23119E Int File Attributes   0000 (0)\n+233345 Compression Method    0008 (8) 'Deflated'\n+233347 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23334B CRC                   22BB3DD7 (582696407)\n+23334F Compressed Size       00000271 (625)\n+233353 Uncompressed Size     000004FA (1274)\n+233357 Filename Length       0041 (65)\n+233359 Extra Length          0000 (0)\n+23335B Comment Length        0000 (0)\n+23335D Disk Start            0000 (0)\n+23335F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2311A0 Ext File Attributes   00000000 (0)\n-2311A4 Local Header Offset   0015AB3D (1420093)\n-2311A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233361 Ext File Attributes   00000000 (0)\n+233365 Local Header Offset   00172E86 (1519238)\n+233369 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2311A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233369: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2311FB CENTRAL HEADER #1318  02014B50 (33639248)\n-2311FF Created Zip Spec      14 (20) '2.0'\n-231200 Created OS            00 (0) 'MS-DOS'\n-231201 Extract Zip Spec      14 (20) '2.0'\n-231202 Extract OS            00 (0) 'MS-DOS'\n-231203 General Purpose Flag  0808 (2056)\n+2333AA CENTRAL HEADER #1318  02014B50 (33639248)\n+2333AE Created Zip Spec      14 (20) '2.0'\n+2333AF Created OS            00 (0) 'MS-DOS'\n+2333B0 Extract Zip Spec      14 (20) '2.0'\n+2333B1 Extract OS            00 (0) 'MS-DOS'\n+2333B2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231205 Compression Method    0008 (8) 'Deflated'\n-231207 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23120B CRC                   7D70DC8D (2104548493)\n-23120F Compressed Size       00000509 (1289)\n-231213 Uncompressed Size     00000E7E (3710)\n-231217 Filename Length       0050 (80)\n-231219 Extra Length          0000 (0)\n-23121B Comment Length        0000 (0)\n-23121D Disk Start            0000 (0)\n-23121F Int File Attributes   0000 (0)\n+2333B4 Compression Method    0008 (8) 'Deflated'\n+2333B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2333BA CRC                   B2C3D88B (2999179403)\n+2333BE Compressed Size       0000070B (1803)\n+2333C2 Uncompressed Size     00001B65 (7013)\n+2333C6 Filename Length       0035 (53)\n+2333C8 Extra Length          0000 (0)\n+2333CA Comment Length        0000 (0)\n+2333CC Disk Start            0000 (0)\n+2333CE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231221 Ext File Attributes   00000000 (0)\n-231225 Local Header Offset   0015AF9C (1421212)\n-231229 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2333D0 Ext File Attributes   00000000 (0)\n+2333D4 Local Header Offset   00173166 (1519974)\n+2333D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231229: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2333D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231279 CENTRAL HEADER #1319  02014B50 (33639248)\n-23127D Created Zip Spec      14 (20) '2.0'\n-23127E Created OS            00 (0) 'MS-DOS'\n-23127F Extract Zip Spec      14 (20) '2.0'\n-231280 Extract OS            00 (0) 'MS-DOS'\n-231281 General Purpose Flag  0808 (2056)\n+23340D CENTRAL HEADER #1319  02014B50 (33639248)\n+233411 Created Zip Spec      14 (20) '2.0'\n+233412 Created OS            00 (0) 'MS-DOS'\n+233413 Extract Zip Spec      14 (20) '2.0'\n+233414 Extract OS            00 (0) 'MS-DOS'\n+233415 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231283 Compression Method    0008 (8) 'Deflated'\n-231285 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231289 CRC                   BE3056BF (3190838975)\n-23128D Compressed Size       0000035B (859)\n-231291 Uncompressed Size     00000848 (2120)\n-231295 Filename Length       0048 (72)\n-231297 Extra Length          0000 (0)\n-231299 Comment Length        0000 (0)\n-23129B Disk Start            0000 (0)\n-23129D Int File Attributes   0000 (0)\n+233417 Compression Method    0008 (8) 'Deflated'\n+233419 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23341D CRC                   00000000 (0)\n+233421 Compressed Size       00000002 (2)\n+233425 Uncompressed Size     00000000 (0)\n+233429 Filename Length       0025 (37)\n+23342B Extra Length          0000 (0)\n+23342D Comment Length        0000 (0)\n+23342F Disk Start            0000 (0)\n+233431 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23129F Ext File Attributes   00000000 (0)\n-2312A3 Local Header Offset   0015B523 (1422627)\n-2312A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233433 Ext File Attributes   00000000 (0)\n+233437 Local Header Offset   001738D4 (1521876)\n+23343B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2312A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23343B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2312EF CENTRAL HEADER #1320  02014B50 (33639248)\n-2312F3 Created Zip Spec      14 (20) '2.0'\n-2312F4 Created OS            00 (0) 'MS-DOS'\n-2312F5 Extract Zip Spec      14 (20) '2.0'\n-2312F6 Extract OS            00 (0) 'MS-DOS'\n-2312F7 General Purpose Flag  0808 (2056)\n+233460 CENTRAL HEADER #1320  02014B50 (33639248)\n+233464 Created Zip Spec      14 (20) '2.0'\n+233465 Created OS            00 (0) 'MS-DOS'\n+233466 Extract Zip Spec      14 (20) '2.0'\n+233467 Extract OS            00 (0) 'MS-DOS'\n+233468 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2312F9 Compression Method    0008 (8) 'Deflated'\n-2312FB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2312FF CRC                   00000000 (0)\n-231303 Compressed Size       00000002 (2)\n-231307 Uncompressed Size     00000000 (0)\n-23130B Filename Length       0030 (48)\n-23130D Extra Length          0000 (0)\n-23130F Comment Length        0000 (0)\n-231311 Disk Start            0000 (0)\n-231313 Int File Attributes   0000 (0)\n+23346A Compression Method    0008 (8) 'Deflated'\n+23346C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233470 CRC                   E8B12001 (3903922177)\n+233474 Compressed Size       00000425 (1061)\n+233478 Uncompressed Size     00000AFB (2811)\n+23347C Filename Length       0041 (65)\n+23347E Extra Length          0000 (0)\n+233480 Comment Length        0000 (0)\n+233482 Disk Start            0000 (0)\n+233484 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231315 Ext File Attributes   00000000 (0)\n-231319 Local Header Offset   0015B8F4 (1423604)\n-23131D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233486 Ext File Attributes   00000000 (0)\n+23348A Local Header Offset   00173929 (1521961)\n+23348E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23131D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23348E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23134D CENTRAL HEADER #1321  02014B50 (33639248)\n-231351 Created Zip Spec      14 (20) '2.0'\n-231352 Created OS            00 (0) 'MS-DOS'\n-231353 Extract Zip Spec      14 (20) '2.0'\n-231354 Extract OS            00 (0) 'MS-DOS'\n-231355 General Purpose Flag  0808 (2056)\n+2334CF CENTRAL HEADER #1321  02014B50 (33639248)\n+2334D3 Created Zip Spec      14 (20) '2.0'\n+2334D4 Created OS            00 (0) 'MS-DOS'\n+2334D5 Extract Zip Spec      14 (20) '2.0'\n+2334D6 Extract OS            00 (0) 'MS-DOS'\n+2334D7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231357 Compression Method    0008 (8) 'Deflated'\n-231359 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23135D CRC                   E322696B (3810683243)\n-231361 Compressed Size       00000B90 (2960)\n-231365 Uncompressed Size     00002E62 (11874)\n-231369 Filename Length       0054 (84)\n-23136B Extra Length          0000 (0)\n-23136D Comment Length        0000 (0)\n-23136F Disk Start            0000 (0)\n-231371 Int File Attributes   0000 (0)\n+2334D9 Compression Method    0008 (8) 'Deflated'\n+2334DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2334DF CRC                   0823E298 (136569496)\n+2334E3 Compressed Size       000007EC (2028)\n+2334E7 Uncompressed Size     00001FFE (8190)\n+2334EB Filename Length       0041 (65)\n+2334ED Extra Length          0000 (0)\n+2334EF Comment Length        0000 (0)\n+2334F1 Disk Start            0000 (0)\n+2334F3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231373 Ext File Attributes   00000000 (0)\n-231377 Local Header Offset   0015B954 (1423700)\n-23137B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2334F5 Ext File Attributes   00000000 (0)\n+2334F9 Local Header Offset   00173DBD (1523133)\n+2334FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23137B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2334FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2313CF CENTRAL HEADER #1322  02014B50 (33639248)\n-2313D3 Created Zip Spec      14 (20) '2.0'\n-2313D4 Created OS            00 (0) 'MS-DOS'\n-2313D5 Extract Zip Spec      14 (20) '2.0'\n-2313D6 Extract OS            00 (0) 'MS-DOS'\n-2313D7 General Purpose Flag  0808 (2056)\n+23353E CENTRAL HEADER #1322  02014B50 (33639248)\n+233542 Created Zip Spec      14 (20) '2.0'\n+233543 Created OS            00 (0) 'MS-DOS'\n+233544 Extract Zip Spec      14 (20) '2.0'\n+233545 Extract OS            00 (0) 'MS-DOS'\n+233546 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2313D9 Compression Method    0008 (8) 'Deflated'\n-2313DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2313DF CRC                   6CE6F13F (1827074367)\n-2313E3 Compressed Size       000007BE (1982)\n-2313E7 Uncompressed Size     00001D8A (7562)\n-2313EB Filename Length       004E (78)\n-2313ED Extra Length          0000 (0)\n-2313EF Comment Length        0000 (0)\n-2313F1 Disk Start            0000 (0)\n-2313F3 Int File Attributes   0000 (0)\n+233548 Compression Method    0008 (8) 'Deflated'\n+23354A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23354E CRC                   00000000 (0)\n+233552 Compressed Size       00000002 (2)\n+233556 Uncompressed Size     00000000 (0)\n+23355A Filename Length       0035 (53)\n+23355C Extra Length          0000 (0)\n+23355E Comment Length        0000 (0)\n+233560 Disk Start            0000 (0)\n+233562 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2313F5 Ext File Attributes   00000000 (0)\n-2313F9 Local Header Offset   0015C566 (1426790)\n-2313FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233564 Ext File Attributes   00000000 (0)\n+233568 Local Header Offset   00174618 (1525272)\n+23356C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2313FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23356C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23144B CENTRAL HEADER #1323  02014B50 (33639248)\n-23144F Created Zip Spec      14 (20) '2.0'\n-231450 Created OS            00 (0) 'MS-DOS'\n-231451 Extract Zip Spec      14 (20) '2.0'\n-231452 Extract OS            00 (0) 'MS-DOS'\n-231453 General Purpose Flag  0808 (2056)\n+2335A1 CENTRAL HEADER #1323  02014B50 (33639248)\n+2335A5 Created Zip Spec      14 (20) '2.0'\n+2335A6 Created OS            00 (0) 'MS-DOS'\n+2335A7 Extract Zip Spec      14 (20) '2.0'\n+2335A8 Extract OS            00 (0) 'MS-DOS'\n+2335A9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231455 Compression Method    0008 (8) 'Deflated'\n-231457 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23145B CRC                   00000000 (0)\n-23145F Compressed Size       00000002 (2)\n-231463 Uncompressed Size     00000000 (0)\n-231467 Filename Length       002B (43)\n-231469 Extra Length          0000 (0)\n-23146B Comment Length        0000 (0)\n-23146D Disk Start            0000 (0)\n-23146F Int File Attributes   0000 (0)\n+2335AB Compression Method    0008 (8) 'Deflated'\n+2335AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2335B1 CRC                   6A8F4F7A (1787776890)\n+2335B5 Compressed Size       000003C4 (964)\n+2335B9 Uncompressed Size     00000BE1 (3041)\n+2335BD Filename Length       003C (60)\n+2335BF Extra Length          0000 (0)\n+2335C1 Comment Length        0000 (0)\n+2335C3 Disk Start            0000 (0)\n+2335C5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231471 Ext File Attributes   00000000 (0)\n-231475 Local Header Offset   0015CDA0 (1428896)\n-231479 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2335C7 Ext File Attributes   00000000 (0)\n+2335CB Local Header Offset   0017467D (1525373)\n+2335CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231479: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2335CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2314A4 CENTRAL HEADER #1324  02014B50 (33639248)\n-2314A8 Created Zip Spec      14 (20) '2.0'\n-2314A9 Created OS            00 (0) 'MS-DOS'\n-2314AA Extract Zip Spec      14 (20) '2.0'\n-2314AB Extract OS            00 (0) 'MS-DOS'\n-2314AC General Purpose Flag  0808 (2056)\n+23360B CENTRAL HEADER #1324  02014B50 (33639248)\n+23360F Created Zip Spec      14 (20) '2.0'\n+233610 Created OS            00 (0) 'MS-DOS'\n+233611 Extract Zip Spec      14 (20) '2.0'\n+233612 Extract OS            00 (0) 'MS-DOS'\n+233613 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2314AE Compression Method    0008 (8) 'Deflated'\n-2314B0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2314B4 CRC                   C9115A1F (3373357599)\n-2314B8 Compressed Size       0000048B (1163)\n-2314BC Uncompressed Size     00000C95 (3221)\n-2314C0 Filename Length       0051 (81)\n-2314C2 Extra Length          0000 (0)\n-2314C4 Comment Length        0000 (0)\n-2314C6 Disk Start            0000 (0)\n-2314C8 Int File Attributes   0000 (0)\n+233615 Compression Method    0008 (8) 'Deflated'\n+233617 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23361B CRC                   BACBA827 (3133909031)\n+23361F Compressed Size       00000049 (73)\n+233623 Uncompressed Size     0000004B (75)\n+233627 Filename Length       0043 (67)\n+233629 Extra Length          0000 (0)\n+23362B Comment Length        0000 (0)\n+23362D Disk Start            0000 (0)\n+23362F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2314CA Ext File Attributes   00000000 (0)\n-2314CE Local Header Offset   0015CDFB (1428987)\n-2314D2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233631 Ext File Attributes   00000000 (0)\n+233635 Local Header Offset   00174AAB (1526443)\n+233639 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2314D2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233639: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231523 CENTRAL HEADER #1325  02014B50 (33639248)\n-231527 Created Zip Spec      14 (20) '2.0'\n-231528 Created OS            00 (0) 'MS-DOS'\n-231529 Extract Zip Spec      14 (20) '2.0'\n-23152A Extract OS            00 (0) 'MS-DOS'\n-23152B General Purpose Flag  0808 (2056)\n+23367C CENTRAL HEADER #1325  02014B50 (33639248)\n+233680 Created Zip Spec      14 (20) '2.0'\n+233681 Created OS            00 (0) 'MS-DOS'\n+233682 Extract Zip Spec      14 (20) '2.0'\n+233683 Extract OS            00 (0) 'MS-DOS'\n+233684 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23152D Compression Method    0008 (8) 'Deflated'\n-23152F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231533 CRC                   2197D7D3 (563599315)\n-231537 Compressed Size       00000210 (528)\n-23153B Uncompressed Size     00000398 (920)\n-23153F Filename Length       0047 (71)\n-231541 Extra Length          0000 (0)\n-231543 Comment Length        0000 (0)\n-231545 Disk Start            0000 (0)\n-231547 Int File Attributes   0000 (0)\n+233686 Compression Method    0008 (8) 'Deflated'\n+233688 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23368C CRC                   00000000 (0)\n+233690 Compressed Size       00000002 (2)\n+233694 Uncompressed Size     00000000 (0)\n+233698 Filename Length       001F (31)\n+23369A Extra Length          0000 (0)\n+23369C Comment Length        0000 (0)\n+23369E Disk Start            0000 (0)\n+2336A0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231549 Ext File Attributes   00000000 (0)\n-23154D Local Header Offset   0015D305 (1430277)\n-231551 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2336A2 Ext File Attributes   00000000 (0)\n+2336A6 Local Header Offset   00174B65 (1526629)\n+2336AA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231551: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2336AA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231598 CENTRAL HEADER #1326  02014B50 (33639248)\n-23159C Created Zip Spec      14 (20) '2.0'\n-23159D Created OS            00 (0) 'MS-DOS'\n-23159E Extract Zip Spec      14 (20) '2.0'\n-23159F Extract OS            00 (0) 'MS-DOS'\n-2315A0 General Purpose Flag  0808 (2056)\n+2336C9 CENTRAL HEADER #1326  02014B50 (33639248)\n+2336CD Created Zip Spec      14 (20) '2.0'\n+2336CE Created OS            00 (0) 'MS-DOS'\n+2336CF Extract Zip Spec      14 (20) '2.0'\n+2336D0 Extract OS            00 (0) 'MS-DOS'\n+2336D1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2315A2 Compression Method    0008 (8) 'Deflated'\n-2315A4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2315A8 CRC                   D03865FF (3493357055)\n-2315AC Compressed Size       0000025B (603)\n-2315B0 Uncompressed Size     00000454 (1108)\n-2315B4 Filename Length       004A (74)\n-2315B6 Extra Length          0000 (0)\n-2315B8 Comment Length        0000 (0)\n-2315BA Disk Start            0000 (0)\n-2315BC Int File Attributes   0000 (0)\n+2336D3 Compression Method    0008 (8) 'Deflated'\n+2336D5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2336D9 CRC                   5CAA5BA4 (1554668452)\n+2336DD Compressed Size       00000AA0 (2720)\n+2336E1 Uncompressed Size     00002A93 (10899)\n+2336E5 Filename Length       0030 (48)\n+2336E7 Extra Length          0000 (0)\n+2336E9 Comment Length        0000 (0)\n+2336EB Disk Start            0000 (0)\n+2336ED Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2315BE Ext File Attributes   00000000 (0)\n-2315C2 Local Header Offset   0015D58A (1430922)\n-2315C6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2336EF Ext File Attributes   00000000 (0)\n+2336F3 Local Header Offset   00174BB4 (1526708)\n+2336F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2315C6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2336F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231610 CENTRAL HEADER #1327  02014B50 (33639248)\n-231614 Created Zip Spec      14 (20) '2.0'\n-231615 Created OS            00 (0) 'MS-DOS'\n-231616 Extract Zip Spec      14 (20) '2.0'\n-231617 Extract OS            00 (0) 'MS-DOS'\n-231618 General Purpose Flag  0808 (2056)\n+233727 CENTRAL HEADER #1327  02014B50 (33639248)\n+23372B Created Zip Spec      14 (20) '2.0'\n+23372C Created OS            00 (0) 'MS-DOS'\n+23372D Extract Zip Spec      14 (20) '2.0'\n+23372E Extract OS            00 (0) 'MS-DOS'\n+23372F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23161A Compression Method    0008 (8) 'Deflated'\n-23161C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231620 CRC                   D6056B09 (3590679305)\n-231624 Compressed Size       00000A5D (2653)\n-231628 Uncompressed Size     000039C3 (14787)\n-23162C Filename Length       0040 (64)\n-23162E Extra Length          0000 (0)\n-231630 Comment Length        0000 (0)\n-231632 Disk Start            0000 (0)\n-231634 Int File Attributes   0000 (0)\n+233731 Compression Method    0008 (8) 'Deflated'\n+233733 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233737 CRC                   55DBCEB5 (1440468661)\n+23373B Compressed Size       000002BE (702)\n+23373F Uncompressed Size     0000058E (1422)\n+233743 Filename Length       0039 (57)\n+233745 Extra Length          0000 (0)\n+233747 Comment Length        0000 (0)\n+233749 Disk Start            0000 (0)\n+23374B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231636 Ext File Attributes   00000000 (0)\n-23163A Local Header Offset   0015D85D (1431645)\n-23163E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23374D Ext File Attributes   00000000 (0)\n+233751 Local Header Offset   001756B2 (1529522)\n+233755 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23163E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233755: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23167E CENTRAL HEADER #1328  02014B50 (33639248)\n-231682 Created Zip Spec      14 (20) '2.0'\n-231683 Created OS            00 (0) 'MS-DOS'\n-231684 Extract Zip Spec      14 (20) '2.0'\n-231685 Extract OS            00 (0) 'MS-DOS'\n-231686 General Purpose Flag  0808 (2056)\n+23378E CENTRAL HEADER #1328  02014B50 (33639248)\n+233792 Created Zip Spec      14 (20) '2.0'\n+233793 Created OS            00 (0) 'MS-DOS'\n+233794 Extract Zip Spec      14 (20) '2.0'\n+233795 Extract OS            00 (0) 'MS-DOS'\n+233796 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231688 Compression Method    0008 (8) 'Deflated'\n-23168A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23168E CRC                   8A132C8F (2316512399)\n-231692 Compressed Size       000003EF (1007)\n-231696 Uncompressed Size     00000AB9 (2745)\n-23169A Filename Length       0044 (68)\n-23169C Extra Length          0000 (0)\n-23169E Comment Length        0000 (0)\n-2316A0 Disk Start            0000 (0)\n-2316A2 Int File Attributes   0000 (0)\n+233798 Compression Method    0008 (8) 'Deflated'\n+23379A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23379E CRC                   74ECF448 (1961686088)\n+2337A2 Compressed Size       000002C0 (704)\n+2337A6 Uncompressed Size     00000590 (1424)\n+2337AA Filename Length       0037 (55)\n+2337AC Extra Length          0000 (0)\n+2337AE Comment Length        0000 (0)\n+2337B0 Disk Start            0000 (0)\n+2337B2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2316A4 Ext File Attributes   00000000 (0)\n-2316A8 Local Header Offset   0015E328 (1434408)\n-2316AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2337B4 Ext File Attributes   00000000 (0)\n+2337B8 Local Header Offset   001759D7 (1530327)\n+2337BC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2316AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2337BC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2316F0 CENTRAL HEADER #1329  02014B50 (33639248)\n-2316F4 Created Zip Spec      14 (20) '2.0'\n-2316F5 Created OS            00 (0) 'MS-DOS'\n-2316F6 Extract Zip Spec      14 (20) '2.0'\n-2316F7 Extract OS            00 (0) 'MS-DOS'\n-2316F8 General Purpose Flag  0808 (2056)\n+2337F3 CENTRAL HEADER #1329  02014B50 (33639248)\n+2337F7 Created Zip Spec      14 (20) '2.0'\n+2337F8 Created OS            00 (0) 'MS-DOS'\n+2337F9 Extract Zip Spec      14 (20) '2.0'\n+2337FA Extract OS            00 (0) 'MS-DOS'\n+2337FB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2316FA Compression Method    0008 (8) 'Deflated'\n-2316FC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231700 CRC                   F9713EB9 (4184948409)\n-231704 Compressed Size       000005A2 (1442)\n-231708 Uncompressed Size     00001198 (4504)\n-23170C Filename Length       0045 (69)\n-23170E Extra Length          0000 (0)\n-231710 Comment Length        0000 (0)\n-231712 Disk Start            0000 (0)\n-231714 Int File Attributes   0000 (0)\n+2337FD Compression Method    0008 (8) 'Deflated'\n+2337FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233803 CRC                   5119DCCD (1360649421)\n+233807 Compressed Size       00000363 (867)\n+23380B Uncompressed Size     0000097E (2430)\n+23380F Filename Length       0038 (56)\n+233811 Extra Length          0000 (0)\n+233813 Comment Length        0000 (0)\n+233815 Disk Start            0000 (0)\n+233817 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231716 Ext File Attributes   00000000 (0)\n-23171A Local Header Offset   0015E789 (1435529)\n-23171E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233819 Ext File Attributes   00000000 (0)\n+23381D Local Header Offset   00175CFC (1531132)\n+233821 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23171E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233821: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231763 CENTRAL HEADER #1330  02014B50 (33639248)\n-231767 Created Zip Spec      14 (20) '2.0'\n-231768 Created OS            00 (0) 'MS-DOS'\n-231769 Extract Zip Spec      14 (20) '2.0'\n-23176A Extract OS            00 (0) 'MS-DOS'\n-23176B General Purpose Flag  0808 (2056)\n+233859 CENTRAL HEADER #1330  02014B50 (33639248)\n+23385D Created Zip Spec      14 (20) '2.0'\n+23385E Created OS            00 (0) 'MS-DOS'\n+23385F Extract Zip Spec      14 (20) '2.0'\n+233860 Extract OS            00 (0) 'MS-DOS'\n+233861 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23176D Compression Method    0008 (8) 'Deflated'\n-23176F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231773 CRC                   5914D57F (1494537599)\n-231777 Compressed Size       000003F4 (1012)\n-23177B Uncompressed Size     00000A34 (2612)\n-23177F Filename Length       0050 (80)\n-231781 Extra Length          0000 (0)\n-231783 Comment Length        0000 (0)\n-231785 Disk Start            0000 (0)\n-231787 Int File Attributes   0000 (0)\n+233863 Compression Method    0008 (8) 'Deflated'\n+233865 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233869 CRC                   A9FB32A5 (2851812005)\n+23386D Compressed Size       00000A80 (2688)\n+233871 Uncompressed Size     000027AF (10159)\n+233875 Filename Length       0040 (64)\n+233877 Extra Length          0000 (0)\n+233879 Comment Length        0000 (0)\n+23387B Disk Start            0000 (0)\n+23387D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231789 Ext File Attributes   00000000 (0)\n-23178D Local Header Offset   0015ED9E (1437086)\n-231791 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23387F Ext File Attributes   00000000 (0)\n+233883 Local Header Offset   001760C5 (1532101)\n+233887 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231791: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233887: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2317E1 CENTRAL HEADER #1331  02014B50 (33639248)\n-2317E5 Created Zip Spec      14 (20) '2.0'\n-2317E6 Created OS            00 (0) 'MS-DOS'\n-2317E7 Extract Zip Spec      14 (20) '2.0'\n-2317E8 Extract OS            00 (0) 'MS-DOS'\n-2317E9 General Purpose Flag  0808 (2056)\n+2338C7 CENTRAL HEADER #1331  02014B50 (33639248)\n+2338CB Created Zip Spec      14 (20) '2.0'\n+2338CC Created OS            00 (0) 'MS-DOS'\n+2338CD Extract Zip Spec      14 (20) '2.0'\n+2338CE Extract OS            00 (0) 'MS-DOS'\n+2338CF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2317EB Compression Method    0008 (8) 'Deflated'\n-2317ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2317F1 CRC                   F9948D9B (4187262363)\n-2317F5 Compressed Size       00000247 (583)\n-2317F9 Uncompressed Size     00000403 (1027)\n-2317FD Filename Length       0032 (50)\n-2317FF Extra Length          0000 (0)\n-231801 Comment Length        0000 (0)\n-231803 Disk Start            0000 (0)\n-231805 Int File Attributes   0000 (0)\n+2338D1 Compression Method    0008 (8) 'Deflated'\n+2338D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2338D7 CRC                   1848A62B (407414315)\n+2338DB Compressed Size       0000026D (621)\n+2338DF Uncompressed Size     000004F5 (1269)\n+2338E3 Filename Length       0047 (71)\n+2338E5 Extra Length          0000 (0)\n+2338E7 Comment Length        0000 (0)\n+2338E9 Disk Start            0000 (0)\n+2338EB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231807 Ext File Attributes   00000000 (0)\n-23180B Local Header Offset   0015F210 (1438224)\n-23180F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2338ED Ext File Attributes   00000000 (0)\n+2338F1 Local Header Offset   00176BB3 (1534899)\n+2338F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23180F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2338F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231841 CENTRAL HEADER #1332  02014B50 (33639248)\n-231845 Created Zip Spec      14 (20) '2.0'\n-231846 Created OS            00 (0) 'MS-DOS'\n-231847 Extract Zip Spec      14 (20) '2.0'\n-231848 Extract OS            00 (0) 'MS-DOS'\n-231849 General Purpose Flag  0808 (2056)\n+23393C CENTRAL HEADER #1332  02014B50 (33639248)\n+233940 Created Zip Spec      14 (20) '2.0'\n+233941 Created OS            00 (0) 'MS-DOS'\n+233942 Extract Zip Spec      14 (20) '2.0'\n+233943 Extract OS            00 (0) 'MS-DOS'\n+233944 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23184B Compression Method    0008 (8) 'Deflated'\n-23184D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231851 CRC                   00000000 (0)\n-231855 Compressed Size       00000002 (2)\n-231859 Uncompressed Size     00000000 (0)\n-23185D Filename Length       002A (42)\n-23185F Extra Length          0000 (0)\n-231861 Comment Length        0000 (0)\n-231863 Disk Start            0000 (0)\n-231865 Int File Attributes   0000 (0)\n+233946 Compression Method    0008 (8) 'Deflated'\n+233948 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23394C CRC                   00000000 (0)\n+233950 Compressed Size       00000002 (2)\n+233954 Uncompressed Size     00000000 (0)\n+233958 Filename Length       0034 (52)\n+23395A Extra Length          0000 (0)\n+23395C Comment Length        0000 (0)\n+23395E Disk Start            0000 (0)\n+233960 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231867 Ext File Attributes   00000000 (0)\n-23186B Local Header Offset   0015F4B7 (1438903)\n-23186F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233962 Ext File Attributes   00000000 (0)\n+233966 Local Header Offset   00176E95 (1535637)\n+23396A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23186F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23396A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231899 CENTRAL HEADER #1333  02014B50 (33639248)\n-23189D Created Zip Spec      14 (20) '2.0'\n-23189E Created OS            00 (0) 'MS-DOS'\n-23189F Extract Zip Spec      14 (20) '2.0'\n-2318A0 Extract OS            00 (0) 'MS-DOS'\n-2318A1 General Purpose Flag  0808 (2056)\n+23399E CENTRAL HEADER #1333  02014B50 (33639248)\n+2339A2 Created Zip Spec      14 (20) '2.0'\n+2339A3 Created OS            00 (0) 'MS-DOS'\n+2339A4 Extract Zip Spec      14 (20) '2.0'\n+2339A5 Extract OS            00 (0) 'MS-DOS'\n+2339A6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2318A3 Compression Method    0008 (8) 'Deflated'\n-2318A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2318A9 CRC                   D0D8B588 (3503863176)\n-2318AD Compressed Size       00000314 (788)\n-2318B1 Uncompressed Size     000006A9 (1705)\n-2318B5 Filename Length       004C (76)\n-2318B7 Extra Length          0000 (0)\n-2318B9 Comment Length        0000 (0)\n-2318BB Disk Start            0000 (0)\n-2318BD Int File Attributes   0000 (0)\n+2339A8 Compression Method    0008 (8) 'Deflated'\n+2339AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2339AE CRC                   72A63AD4 (1923496660)\n+2339B2 Compressed Size       000004AA (1194)\n+2339B6 Uncompressed Size     0000122E (4654)\n+2339BA Filename Length       003B (59)\n+2339BC Extra Length          0000 (0)\n+2339BE Comment Length        0000 (0)\n+2339C0 Disk Start            0000 (0)\n+2339C2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2318BF Ext File Attributes   00000000 (0)\n-2318C3 Local Header Offset   0015F511 (1438993)\n-2318C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2339C4 Ext File Attributes   00000000 (0)\n+2339C8 Local Header Offset   00176EF9 (1535737)\n+2339CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2318C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2339CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231913 CENTRAL HEADER #1334  02014B50 (33639248)\n-231917 Created Zip Spec      14 (20) '2.0'\n-231918 Created OS            00 (0) 'MS-DOS'\n-231919 Extract Zip Spec      14 (20) '2.0'\n-23191A Extract OS            00 (0) 'MS-DOS'\n-23191B General Purpose Flag  0808 (2056)\n+233A07 CENTRAL HEADER #1334  02014B50 (33639248)\n+233A0B Created Zip Spec      14 (20) '2.0'\n+233A0C Created OS            00 (0) 'MS-DOS'\n+233A0D Extract Zip Spec      14 (20) '2.0'\n+233A0E Extract OS            00 (0) 'MS-DOS'\n+233A0F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23191D Compression Method    0008 (8) 'Deflated'\n-23191F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231923 CRC                   DDD86D2D (3721948461)\n-231927 Compressed Size       000002F5 (757)\n-23192B Uncompressed Size     000006A3 (1699)\n-23192F Filename Length       0046 (70)\n-231931 Extra Length          0000 (0)\n-231933 Comment Length        0000 (0)\n-231935 Disk Start            0000 (0)\n-231937 Int File Attributes   0000 (0)\n+233A11 Compression Method    0008 (8) 'Deflated'\n+233A13 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233A17 CRC                   88872903 (2290559235)\n+233A1B Compressed Size       00000048 (72)\n+233A1F Uncompressed Size     0000004A (74)\n+233A23 Filename Length       0042 (66)\n+233A25 Extra Length          0000 (0)\n+233A27 Comment Length        0000 (0)\n+233A29 Disk Start            0000 (0)\n+233A2B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231939 Ext File Attributes   00000000 (0)\n-23193D Local Header Offset   0015F89F (1439903)\n-231941 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233A2D Ext File Attributes   00000000 (0)\n+233A31 Local Header Offset   0017740C (1537036)\n+233A35 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231941: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233A35: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231987 CENTRAL HEADER #1335  02014B50 (33639248)\n-23198B Created Zip Spec      14 (20) '2.0'\n-23198C Created OS            00 (0) 'MS-DOS'\n-23198D Extract Zip Spec      14 (20) '2.0'\n-23198E Extract OS            00 (0) 'MS-DOS'\n-23198F General Purpose Flag  0808 (2056)\n+233A77 CENTRAL HEADER #1335  02014B50 (33639248)\n+233A7B Created Zip Spec      14 (20) '2.0'\n+233A7C Created OS            00 (0) 'MS-DOS'\n+233A7D Extract Zip Spec      14 (20) '2.0'\n+233A7E Extract OS            00 (0) 'MS-DOS'\n+233A7F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231991 Compression Method    0008 (8) 'Deflated'\n-231993 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231997 CRC                   00000000 (0)\n-23199B Compressed Size       00000002 (2)\n-23199F Uncompressed Size     00000000 (0)\n-2319A3 Filename Length       0026 (38)\n-2319A5 Extra Length          0000 (0)\n-2319A7 Comment Length        0000 (0)\n-2319A9 Disk Start            0000 (0)\n-2319AB Int File Attributes   0000 (0)\n+233A81 Compression Method    0008 (8) 'Deflated'\n+233A83 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233A87 CRC                   00000000 (0)\n+233A8B Compressed Size       00000002 (2)\n+233A8F Uncompressed Size     00000000 (0)\n+233A93 Filename Length       0023 (35)\n+233A95 Extra Length          0000 (0)\n+233A97 Comment Length        0000 (0)\n+233A99 Disk Start            0000 (0)\n+233A9B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2319AD Ext File Attributes   00000000 (0)\n-2319B1 Local Header Offset   0015FC08 (1440776)\n-2319B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233A9D Ext File Attributes   00000000 (0)\n+233AA1 Local Header Offset   001774C4 (1537220)\n+233AA5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2319B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233AA5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2319DB CENTRAL HEADER #1336  02014B50 (33639248)\n-2319DF Created Zip Spec      14 (20) '2.0'\n-2319E0 Created OS            00 (0) 'MS-DOS'\n-2319E1 Extract Zip Spec      14 (20) '2.0'\n-2319E2 Extract OS            00 (0) 'MS-DOS'\n-2319E3 General Purpose Flag  0808 (2056)\n+233AC8 CENTRAL HEADER #1336  02014B50 (33639248)\n+233ACC Created Zip Spec      14 (20) '2.0'\n+233ACD Created OS            00 (0) 'MS-DOS'\n+233ACE Extract Zip Spec      14 (20) '2.0'\n+233ACF Extract OS            00 (0) 'MS-DOS'\n+233AD0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2319E5 Compression Method    0008 (8) 'Deflated'\n-2319E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2319EB CRC                   F2CE052F (4073588015)\n-2319EF Compressed Size       00000546 (1350)\n-2319F3 Uncompressed Size     00000F34 (3892)\n-2319F7 Filename Length       0047 (71)\n-2319F9 Extra Length          0000 (0)\n-2319FB Comment Length        0000 (0)\n-2319FD Disk Start            0000 (0)\n-2319FF Int File Attributes   0000 (0)\n+233AD2 Compression Method    0008 (8) 'Deflated'\n+233AD4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233AD8 CRC                   BDA5F435 (3181769781)\n+233ADC Compressed Size       00000A07 (2567)\n+233AE0 Uncompressed Size     000031C7 (12743)\n+233AE4 Filename Length       0038 (56)\n+233AE6 Extra Length          0000 (0)\n+233AE8 Comment Length        0000 (0)\n+233AEA Disk Start            0000 (0)\n+233AEC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231A01 Ext File Attributes   00000000 (0)\n-231A05 Local Header Offset   0015FC5E (1440862)\n-231A09 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233AEE Ext File Attributes   00000000 (0)\n+233AF2 Local Header Offset   00177517 (1537303)\n+233AF6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231A09: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233AF6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231A50 CENTRAL HEADER #1337  02014B50 (33639248)\n-231A54 Created Zip Spec      14 (20) '2.0'\n-231A55 Created OS            00 (0) 'MS-DOS'\n-231A56 Extract Zip Spec      14 (20) '2.0'\n-231A57 Extract OS            00 (0) 'MS-DOS'\n-231A58 General Purpose Flag  0808 (2056)\n+233B2E CENTRAL HEADER #1337  02014B50 (33639248)\n+233B32 Created Zip Spec      14 (20) '2.0'\n+233B33 Created OS            00 (0) 'MS-DOS'\n+233B34 Extract Zip Spec      14 (20) '2.0'\n+233B35 Extract OS            00 (0) 'MS-DOS'\n+233B36 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231A5A Compression Method    0008 (8) 'Deflated'\n-231A5C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231A60 CRC                   BF63BCF2 (3210984690)\n-231A64 Compressed Size       00000B50 (2896)\n-231A68 Uncompressed Size     00002BFC (11260)\n-231A6C Filename Length       003B (59)\n-231A6E Extra Length          0000 (0)\n-231A70 Comment Length        0000 (0)\n-231A72 Disk Start            0000 (0)\n-231A74 Int File Attributes   0000 (0)\n+233B38 Compression Method    0008 (8) 'Deflated'\n+233B3A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233B3E CRC                   BA9C4A25 (3130804773)\n+233B42 Compressed Size       00000269 (617)\n+233B46 Uncompressed Size     000004DF (1247)\n+233B4A Filename Length       003F (63)\n+233B4C Extra Length          0000 (0)\n+233B4E Comment Length        0000 (0)\n+233B50 Disk Start            0000 (0)\n+233B52 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231A76 Ext File Attributes   00000000 (0)\n-231A7A Local Header Offset   00160219 (1442329)\n-231A7E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233B54 Ext File Attributes   00000000 (0)\n+233B58 Local Header Offset   00177F84 (1539972)\n+233B5C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231A7E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233B5C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231AB9 CENTRAL HEADER #1338  02014B50 (33639248)\n-231ABD Created Zip Spec      14 (20) '2.0'\n-231ABE Created OS            00 (0) 'MS-DOS'\n-231ABF Extract Zip Spec      14 (20) '2.0'\n-231AC0 Extract OS            00 (0) 'MS-DOS'\n-231AC1 General Purpose Flag  0808 (2056)\n+233B9B CENTRAL HEADER #1338  02014B50 (33639248)\n+233B9F Created Zip Spec      14 (20) '2.0'\n+233BA0 Created OS            00 (0) 'MS-DOS'\n+233BA1 Extract Zip Spec      14 (20) '2.0'\n+233BA2 Extract OS            00 (0) 'MS-DOS'\n+233BA3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231AC3 Compression Method    0008 (8) 'Deflated'\n-231AC5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231AC9 CRC                   E2D6B20B (3805721099)\n-231ACD Compressed Size       0000041E (1054)\n-231AD1 Uncompressed Size     00000CC3 (3267)\n-231AD5 Filename Length       004E (78)\n-231AD7 Extra Length          0000 (0)\n-231AD9 Comment Length        0000 (0)\n-231ADB Disk Start            0000 (0)\n-231ADD Int File Attributes   0000 (0)\n+233BA5 Compression Method    0008 (8) 'Deflated'\n+233BA7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233BAB CRC                   23EFD54C (602920268)\n+233BAF Compressed Size       0000075F (1887)\n+233BB3 Uncompressed Size     00001F2E (7982)\n+233BB7 Filename Length       0048 (72)\n+233BB9 Extra Length          0000 (0)\n+233BBB Comment Length        0000 (0)\n+233BBD Disk Start            0000 (0)\n+233BBF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231ADF Ext File Attributes   00000000 (0)\n-231AE3 Local Header Offset   00160DD2 (1445330)\n-231AE7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233BC1 Ext File Attributes   00000000 (0)\n+233BC5 Local Header Offset   0017825A (1540698)\n+233BC9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231AE7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233BC9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231B35 CENTRAL HEADER #1339  02014B50 (33639248)\n-231B39 Created Zip Spec      14 (20) '2.0'\n-231B3A Created OS            00 (0) 'MS-DOS'\n-231B3B Extract Zip Spec      14 (20) '2.0'\n-231B3C Extract OS            00 (0) 'MS-DOS'\n-231B3D General Purpose Flag  0808 (2056)\n+233C11 CENTRAL HEADER #1339  02014B50 (33639248)\n+233C15 Created Zip Spec      14 (20) '2.0'\n+233C16 Created OS            00 (0) 'MS-DOS'\n+233C17 Extract Zip Spec      14 (20) '2.0'\n+233C18 Extract OS            00 (0) 'MS-DOS'\n+233C19 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231B3F Compression Method    0008 (8) 'Deflated'\n-231B41 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231B45 CRC                   ACAF58B5 (2897172661)\n-231B49 Compressed Size       0000020D (525)\n-231B4D Uncompressed Size     00000394 (916)\n-231B51 Filename Length       0042 (66)\n-231B53 Extra Length          0000 (0)\n-231B55 Comment Length        0000 (0)\n-231B57 Disk Start            0000 (0)\n-231B59 Int File Attributes   0000 (0)\n+233C1B Compression Method    0008 (8) 'Deflated'\n+233C1D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233C21 CRC                   CC2EC0C4 (3425616068)\n+233C25 Compressed Size       00000270 (624)\n+233C29 Uncompressed Size     00000502 (1282)\n+233C2D Filename Length       004F (79)\n+233C2F Extra Length          0000 (0)\n+233C31 Comment Length        0000 (0)\n+233C33 Disk Start            0000 (0)\n+233C35 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231B5B Ext File Attributes   00000000 (0)\n-231B5F Local Header Offset   0016126C (1446508)\n-231B63 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233C37 Ext File Attributes   00000000 (0)\n+233C3B Local Header Offset   00178A2F (1542703)\n+233C3F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231B63: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233C3F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231BA5 CENTRAL HEADER #1340  02014B50 (33639248)\n-231BA9 Created Zip Spec      14 (20) '2.0'\n-231BAA Created OS            00 (0) 'MS-DOS'\n-231BAB Extract Zip Spec      14 (20) '2.0'\n-231BAC Extract OS            00 (0) 'MS-DOS'\n-231BAD General Purpose Flag  0808 (2056)\n+233C8E CENTRAL HEADER #1340  02014B50 (33639248)\n+233C92 Created Zip Spec      14 (20) '2.0'\n+233C93 Created OS            00 (0) 'MS-DOS'\n+233C94 Extract Zip Spec      14 (20) '2.0'\n+233C95 Extract OS            00 (0) 'MS-DOS'\n+233C96 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231BAF Compression Method    0008 (8) 'Deflated'\n-231BB1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231BB5 CRC                   963EDCDB (2520702171)\n-231BB9 Compressed Size       00001A00 (6656)\n-231BBD Uncompressed Size     0000723A (29242)\n-231BC1 Filename Length       003C (60)\n-231BC3 Extra Length          0000 (0)\n-231BC5 Comment Length        0000 (0)\n-231BC7 Disk Start            0000 (0)\n-231BC9 Int File Attributes   0000 (0)\n+233C98 Compression Method    0008 (8) 'Deflated'\n+233C9A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233C9E CRC                   00000000 (0)\n+233CA2 Compressed Size       00000002 (2)\n+233CA6 Uncompressed Size     00000000 (0)\n+233CAA Filename Length       0038 (56)\n+233CAC Extra Length          0000 (0)\n+233CAE Comment Length        0000 (0)\n+233CB0 Disk Start            0000 (0)\n+233CB2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231BCB Ext File Attributes   00000000 (0)\n-231BCF Local Header Offset   001614E9 (1447145)\n-231BD3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233CB4 Ext File Attributes   00000000 (0)\n+233CB8 Local Header Offset   00178D1C (1543452)\n+233CBC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231BD3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233CBC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231C0F CENTRAL HEADER #1341  02014B50 (33639248)\n-231C13 Created Zip Spec      14 (20) '2.0'\n-231C14 Created OS            00 (0) 'MS-DOS'\n-231C15 Extract Zip Spec      14 (20) '2.0'\n-231C16 Extract OS            00 (0) 'MS-DOS'\n-231C17 General Purpose Flag  0808 (2056)\n+233CF4 CENTRAL HEADER #1341  02014B50 (33639248)\n+233CF8 Created Zip Spec      14 (20) '2.0'\n+233CF9 Created OS            00 (0) 'MS-DOS'\n+233CFA Extract Zip Spec      14 (20) '2.0'\n+233CFB Extract OS            00 (0) 'MS-DOS'\n+233CFC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231C19 Compression Method    0008 (8) 'Deflated'\n-231C1B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231C1F CRC                   FA47221B (4198965787)\n-231C23 Compressed Size       00001EE4 (7908)\n-231C27 Uncompressed Size     0000926E (37486)\n-231C2B Filename Length       003B (59)\n-231C2D Extra Length          0000 (0)\n-231C2F Comment Length        0000 (0)\n-231C31 Disk Start            0000 (0)\n-231C33 Int File Attributes   0000 (0)\n+233CFE Compression Method    0008 (8) 'Deflated'\n+233D00 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233D04 CRC                   6A4E29DE (1783507422)\n+233D08 Compressed Size       000003BF (959)\n+233D0C Uncompressed Size     00000AFE (2814)\n+233D10 Filename Length       003F (63)\n+233D12 Extra Length          0000 (0)\n+233D14 Comment Length        0000 (0)\n+233D16 Disk Start            0000 (0)\n+233D18 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231C35 Ext File Attributes   00000000 (0)\n-231C39 Local Header Offset   00162F53 (1453907)\n-231C3D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233D1A Ext File Attributes   00000000 (0)\n+233D1E Local Header Offset   00178D84 (1543556)\n+233D22 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231C3D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233D22: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231C78 CENTRAL HEADER #1342  02014B50 (33639248)\n-231C7C Created Zip Spec      14 (20) '2.0'\n-231C7D Created OS            00 (0) 'MS-DOS'\n-231C7E Extract Zip Spec      14 (20) '2.0'\n-231C7F Extract OS            00 (0) 'MS-DOS'\n-231C80 General Purpose Flag  0808 (2056)\n+233D61 CENTRAL HEADER #1342  02014B50 (33639248)\n+233D65 Created Zip Spec      14 (20) '2.0'\n+233D66 Created OS            00 (0) 'MS-DOS'\n+233D67 Extract Zip Spec      14 (20) '2.0'\n+233D68 Extract OS            00 (0) 'MS-DOS'\n+233D69 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231C82 Compression Method    0008 (8) 'Deflated'\n-231C84 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231C88 CRC                   14A86D48 (346582344)\n-231C8C Compressed Size       00000360 (864)\n-231C90 Uncompressed Size     0000082F (2095)\n-231C94 Filename Length       0043 (67)\n-231C96 Extra Length          0000 (0)\n-231C98 Comment Length        0000 (0)\n-231C9A Disk Start            0000 (0)\n-231C9C Int File Attributes   0000 (0)\n+233D6B Compression Method    0008 (8) 'Deflated'\n+233D6D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233D71 CRC                   7158BA85 (1901640325)\n+233D75 Compressed Size       0000004C (76)\n+233D79 Uncompressed Size     0000004E (78)\n+233D7D Filename Length       0046 (70)\n+233D7F Extra Length          0000 (0)\n+233D81 Comment Length        0000 (0)\n+233D83 Disk Start            0000 (0)\n+233D85 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231C9E Ext File Attributes   00000000 (0)\n-231CA2 Local Header Offset   00164EA0 (1461920)\n-231CA6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233D87 Ext File Attributes   00000000 (0)\n+233D8B Local Header Offset   001791B0 (1544624)\n+233D8F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231CA6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233D8F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231CE9 CENTRAL HEADER #1343  02014B50 (33639248)\n-231CED Created Zip Spec      14 (20) '2.0'\n-231CEE Created OS            00 (0) 'MS-DOS'\n-231CEF Extract Zip Spec      14 (20) '2.0'\n-231CF0 Extract OS            00 (0) 'MS-DOS'\n-231CF1 General Purpose Flag  0808 (2056)\n+233DD5 CENTRAL HEADER #1343  02014B50 (33639248)\n+233DD9 Created Zip Spec      14 (20) '2.0'\n+233DDA Created OS            00 (0) 'MS-DOS'\n+233DDB Extract Zip Spec      14 (20) '2.0'\n+233DDC Extract OS            00 (0) 'MS-DOS'\n+233DDD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231CF3 Compression Method    0008 (8) 'Deflated'\n-231CF5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231CF9 CRC                   00000000 (0)\n-231CFD Compressed Size       00000002 (2)\n-231D01 Uncompressed Size     00000000 (0)\n-231D05 Filename Length       0020 (32)\n-231D07 Extra Length          0000 (0)\n-231D09 Comment Length        0000 (0)\n-231D0B Disk Start            0000 (0)\n-231D0D Int File Attributes   0000 (0)\n+233DDF Compression Method    0008 (8) 'Deflated'\n+233DE1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233DE5 CRC                   00000000 (0)\n+233DE9 Compressed Size       00000002 (2)\n+233DED Uncompressed Size     00000000 (0)\n+233DF1 Filename Length       0019 (25)\n+233DF3 Extra Length          0000 (0)\n+233DF5 Comment Length        0000 (0)\n+233DF7 Disk Start            0000 (0)\n+233DF9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231D0F Ext File Attributes   00000000 (0)\n-231D13 Local Header Offset   00165271 (1462897)\n-231D17 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233DFB Ext File Attributes   00000000 (0)\n+233DFF Local Header Offset   00179270 (1544816)\n+233E03 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231D17: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233E03: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231D37 CENTRAL HEADER #1344  02014B50 (33639248)\n-231D3B Created Zip Spec      14 (20) '2.0'\n-231D3C Created OS            00 (0) 'MS-DOS'\n-231D3D Extract Zip Spec      14 (20) '2.0'\n-231D3E Extract OS            00 (0) 'MS-DOS'\n-231D3F General Purpose Flag  0808 (2056)\n+233E1C CENTRAL HEADER #1344  02014B50 (33639248)\n+233E20 Created Zip Spec      14 (20) '2.0'\n+233E21 Created OS            00 (0) 'MS-DOS'\n+233E22 Extract Zip Spec      14 (20) '2.0'\n+233E23 Extract OS            00 (0) 'MS-DOS'\n+233E24 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231D41 Compression Method    0008 (8) 'Deflated'\n-231D43 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231D47 CRC                   A7748368 (2809430888)\n-231D4B Compressed Size       000005DF (1503)\n-231D4F Uncompressed Size     00001148 (4424)\n-231D53 Filename Length       0036 (54)\n-231D55 Extra Length          0000 (0)\n-231D57 Comment Length        0000 (0)\n-231D59 Disk Start            0000 (0)\n-231D5B Int File Attributes   0000 (0)\n+233E26 Compression Method    0008 (8) 'Deflated'\n+233E28 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233E2C CRC                   4E27066E (1311180398)\n+233E30 Compressed Size       0000028D (653)\n+233E34 Uncompressed Size     00000528 (1320)\n+233E38 Filename Length       0027 (39)\n+233E3A Extra Length          0000 (0)\n+233E3C Comment Length        0000 (0)\n+233E3E Disk Start            0000 (0)\n+233E40 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231D5D Ext File Attributes   00000000 (0)\n-231D61 Local Header Offset   001652C1 (1462977)\n-231D65 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233E42 Ext File Attributes   00000000 (0)\n+233E46 Local Header Offset   001792B9 (1544889)\n+233E4A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231D65: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233E4A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231D9B CENTRAL HEADER #1345  02014B50 (33639248)\n-231D9F Created Zip Spec      14 (20) '2.0'\n-231DA0 Created OS            00 (0) 'MS-DOS'\n-231DA1 Extract Zip Spec      14 (20) '2.0'\n-231DA2 Extract OS            00 (0) 'MS-DOS'\n-231DA3 General Purpose Flag  0808 (2056)\n+233E71 CENTRAL HEADER #1345  02014B50 (33639248)\n+233E75 Created Zip Spec      14 (20) '2.0'\n+233E76 Created OS            00 (0) 'MS-DOS'\n+233E77 Extract Zip Spec      14 (20) '2.0'\n+233E78 Extract OS            00 (0) 'MS-DOS'\n+233E79 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231DA5 Compression Method    0008 (8) 'Deflated'\n-231DA7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231DAB CRC                   5117C509 (1360512265)\n-231DAF Compressed Size       000002C3 (707)\n-231DB3 Uncompressed Size     000005CF (1487)\n-231DB7 Filename Length       0039 (57)\n-231DB9 Extra Length          0000 (0)\n-231DBB Comment Length        0000 (0)\n-231DBD Disk Start            0000 (0)\n-231DBF Int File Attributes   0000 (0)\n+233E7B Compression Method    0008 (8) 'Deflated'\n+233E7D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233E81 CRC                   3E4BD5A8 (1045157288)\n+233E85 Compressed Size       00000213 (531)\n+233E89 Uncompressed Size     000003AC (940)\n+233E8D Filename Length       002C (44)\n+233E8F Extra Length          0000 (0)\n+233E91 Comment Length        0000 (0)\n+233E93 Disk Start            0000 (0)\n+233E95 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231DC1 Ext File Attributes   00000000 (0)\n-231DC5 Local Header Offset   00165904 (1464580)\n-231DC9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233E97 Ext File Attributes   00000000 (0)\n+233E9B Local Header Offset   0017959B (1545627)\n+233E9F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231DC9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233E9F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231E02 CENTRAL HEADER #1346  02014B50 (33639248)\n-231E06 Created Zip Spec      14 (20) '2.0'\n-231E07 Created OS            00 (0) 'MS-DOS'\n-231E08 Extract Zip Spec      14 (20) '2.0'\n-231E09 Extract OS            00 (0) 'MS-DOS'\n-231E0A General Purpose Flag  0808 (2056)\n+233ECB CENTRAL HEADER #1346  02014B50 (33639248)\n+233ECF Created Zip Spec      14 (20) '2.0'\n+233ED0 Created OS            00 (0) 'MS-DOS'\n+233ED1 Extract Zip Spec      14 (20) '2.0'\n+233ED2 Extract OS            00 (0) 'MS-DOS'\n+233ED3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231E0C Compression Method    0008 (8) 'Deflated'\n-231E0E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231E12 CRC                   FCC4145B (4240708699)\n-231E16 Compressed Size       00000315 (789)\n-231E1A Uncompressed Size     000006E0 (1760)\n-231E1E Filename Length       0039 (57)\n-231E20 Extra Length          0000 (0)\n-231E22 Comment Length        0000 (0)\n-231E24 Disk Start            0000 (0)\n-231E26 Int File Attributes   0000 (0)\n+233ED5 Compression Method    0008 (8) 'Deflated'\n+233ED7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233EDB CRC                   51FB7003 (1375432707)\n+233EDF Compressed Size       0000024D (589)\n+233EE3 Uncompressed Size     0000044C (1100)\n+233EE7 Filename Length       0025 (37)\n+233EE9 Extra Length          0000 (0)\n+233EEB Comment Length        0000 (0)\n+233EED Disk Start            0000 (0)\n+233EEF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231E28 Ext File Attributes   00000000 (0)\n-231E2C Local Header Offset   00165C2E (1465390)\n-231E30 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233EF1 Ext File Attributes   00000000 (0)\n+233EF5 Local Header Offset   00179808 (1546248)\n+233EF9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231E30: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233EF9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231E69 CENTRAL HEADER #1347  02014B50 (33639248)\n-231E6D Created Zip Spec      14 (20) '2.0'\n-231E6E Created OS            00 (0) 'MS-DOS'\n-231E6F Extract Zip Spec      14 (20) '2.0'\n-231E70 Extract OS            00 (0) 'MS-DOS'\n-231E71 General Purpose Flag  0808 (2056)\n+233F1E CENTRAL HEADER #1347  02014B50 (33639248)\n+233F22 Created Zip Spec      14 (20) '2.0'\n+233F23 Created OS            00 (0) 'MS-DOS'\n+233F24 Extract Zip Spec      14 (20) '2.0'\n+233F25 Extract OS            00 (0) 'MS-DOS'\n+233F26 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231E73 Compression Method    0008 (8) 'Deflated'\n-231E75 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231E79 CRC                   A6BC7A6B (2797369963)\n-231E7D Compressed Size       000002C6 (710)\n-231E81 Uncompressed Size     000005DB (1499)\n-231E85 Filename Length       003B (59)\n-231E87 Extra Length          0000 (0)\n-231E89 Comment Length        0000 (0)\n-231E8B Disk Start            0000 (0)\n-231E8D Int File Attributes   0000 (0)\n+233F28 Compression Method    0008 (8) 'Deflated'\n+233F2A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233F2E CRC                   9DE5257E (2649040254)\n+233F32 Compressed Size       00000287 (647)\n+233F36 Uncompressed Size     000004ED (1261)\n+233F3A Filename Length       002C (44)\n+233F3C Extra Length          0000 (0)\n+233F3E Comment Length        0000 (0)\n+233F40 Disk Start            0000 (0)\n+233F42 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231E8F Ext File Attributes   00000000 (0)\n-231E93 Local Header Offset   00165FAA (1466282)\n-231E97 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233F44 Ext File Attributes   00000000 (0)\n+233F48 Local Header Offset   00179AA8 (1546920)\n+233F4C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231E97: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233F4C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231ED2 CENTRAL HEADER #1348  02014B50 (33639248)\n-231ED6 Created Zip Spec      14 (20) '2.0'\n-231ED7 Created OS            00 (0) 'MS-DOS'\n-231ED8 Extract Zip Spec      14 (20) '2.0'\n-231ED9 Extract OS            00 (0) 'MS-DOS'\n-231EDA General Purpose Flag  0808 (2056)\n+233F78 CENTRAL HEADER #1348  02014B50 (33639248)\n+233F7C Created Zip Spec      14 (20) '2.0'\n+233F7D Created OS            00 (0) 'MS-DOS'\n+233F7E Extract Zip Spec      14 (20) '2.0'\n+233F7F Extract OS            00 (0) 'MS-DOS'\n+233F80 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231EDC Compression Method    0008 (8) 'Deflated'\n-231EDE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231EE2 CRC                   CDD77CC5 (3453451461)\n-231EE6 Compressed Size       00000317 (791)\n-231EEA Uncompressed Size     000006EA (1770)\n-231EEE Filename Length       003B (59)\n-231EF0 Extra Length          0000 (0)\n-231EF2 Comment Length        0000 (0)\n-231EF4 Disk Start            0000 (0)\n-231EF6 Int File Attributes   0000 (0)\n+233F82 Compression Method    0008 (8) 'Deflated'\n+233F84 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233F88 CRC                   78905E9C (2022727324)\n+233F8C Compressed Size       000005AD (1453)\n+233F90 Uncompressed Size     00000D44 (3396)\n+233F94 Filename Length       002C (44)\n+233F96 Extra Length          0000 (0)\n+233F98 Comment Length        0000 (0)\n+233F9A Disk Start            0000 (0)\n+233F9C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231EF8 Ext File Attributes   00000000 (0)\n-231EFC Local Header Offset   001662D9 (1467097)\n-231F00 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233F9E Ext File Attributes   00000000 (0)\n+233FA2 Local Header Offset   00179D89 (1547657)\n+233FA6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231F00: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x233FA6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231F3B CENTRAL HEADER #1349  02014B50 (33639248)\n-231F3F Created Zip Spec      14 (20) '2.0'\n-231F40 Created OS            00 (0) 'MS-DOS'\n-231F41 Extract Zip Spec      14 (20) '2.0'\n-231F42 Extract OS            00 (0) 'MS-DOS'\n-231F43 General Purpose Flag  0808 (2056)\n+233FD2 CENTRAL HEADER #1349  02014B50 (33639248)\n+233FD6 Created Zip Spec      14 (20) '2.0'\n+233FD7 Created OS            00 (0) 'MS-DOS'\n+233FD8 Extract Zip Spec      14 (20) '2.0'\n+233FD9 Extract OS            00 (0) 'MS-DOS'\n+233FDA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231F45 Compression Method    0008 (8) 'Deflated'\n-231F47 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231F4B CRC                   1D384067 (490225767)\n-231F4F Compressed Size       000002C5 (709)\n-231F53 Uncompressed Size     0000059E (1438)\n-231F57 Filename Length       0031 (49)\n-231F59 Extra Length          0000 (0)\n-231F5B Comment Length        0000 (0)\n-231F5D Disk Start            0000 (0)\n-231F5F Int File Attributes   0000 (0)\n+233FDC Compression Method    0008 (8) 'Deflated'\n+233FDE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+233FE2 CRC                   00000000 (0)\n+233FE6 Compressed Size       00000002 (2)\n+233FEA Uncompressed Size     00000000 (0)\n+233FEE Filename Length       0021 (33)\n+233FF0 Extra Length          0000 (0)\n+233FF2 Comment Length        0000 (0)\n+233FF4 Disk Start            0000 (0)\n+233FF6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231F61 Ext File Attributes   00000000 (0)\n-231F65 Local Header Offset   00166659 (1467993)\n-231F69 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+233FF8 Ext File Attributes   00000000 (0)\n+233FFC Local Header Offset   0017A390 (1549200)\n+234000 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231F69: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234000: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231F9A CENTRAL HEADER #1350  02014B50 (33639248)\n-231F9E Created Zip Spec      14 (20) '2.0'\n-231F9F Created OS            00 (0) 'MS-DOS'\n-231FA0 Extract Zip Spec      14 (20) '2.0'\n-231FA1 Extract OS            00 (0) 'MS-DOS'\n-231FA2 General Purpose Flag  0808 (2056)\n+234021 CENTRAL HEADER #1350  02014B50 (33639248)\n+234025 Created Zip Spec      14 (20) '2.0'\n+234026 Created OS            00 (0) 'MS-DOS'\n+234027 Extract Zip Spec      14 (20) '2.0'\n+234028 Extract OS            00 (0) 'MS-DOS'\n+234029 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231FA4 Compression Method    0008 (8) 'Deflated'\n-231FA6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231FAA CRC                   00000000 (0)\n-231FAE Compressed Size       00000002 (2)\n-231FB2 Uncompressed Size     00000000 (0)\n-231FB6 Filename Length       0021 (33)\n-231FB8 Extra Length          0000 (0)\n-231FBA Comment Length        0000 (0)\n-231FBC Disk Start            0000 (0)\n-231FBE Int File Attributes   0000 (0)\n+23402B Compression Method    0008 (8) 'Deflated'\n+23402D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234031 CRC                   FA4C7A14 (4199315988)\n+234035 Compressed Size       00000627 (1575)\n+234039 Uncompressed Size     00001336 (4918)\n+23403D Filename Length       003C (60)\n+23403F Extra Length          0000 (0)\n+234041 Comment Length        0000 (0)\n+234043 Disk Start            0000 (0)\n+234045 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-231FC0 Ext File Attributes   00000000 (0)\n-231FC4 Local Header Offset   0016697D (1468797)\n-231FC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234047 Ext File Attributes   00000000 (0)\n+23404B Local Header Offset   0017A3E1 (1549281)\n+23404F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x231FC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23404F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-231FE9 CENTRAL HEADER #1351  02014B50 (33639248)\n-231FED Created Zip Spec      14 (20) '2.0'\n-231FEE Created OS            00 (0) 'MS-DOS'\n-231FEF Extract Zip Spec      14 (20) '2.0'\n-231FF0 Extract OS            00 (0) 'MS-DOS'\n-231FF1 General Purpose Flag  0808 (2056)\n+23408B CENTRAL HEADER #1351  02014B50 (33639248)\n+23408F Created Zip Spec      14 (20) '2.0'\n+234090 Created OS            00 (0) 'MS-DOS'\n+234091 Extract Zip Spec      14 (20) '2.0'\n+234092 Extract OS            00 (0) 'MS-DOS'\n+234093 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-231FF3 Compression Method    0008 (8) 'Deflated'\n-231FF5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-231FF9 CRC                   F2E8FAB9 (4075354809)\n-231FFD Compressed Size       00000369 (873)\n-232001 Uncompressed Size     00000826 (2086)\n-232005 Filename Length       003B (59)\n-232007 Extra Length          0000 (0)\n-232009 Comment Length        0000 (0)\n-23200B Disk Start            0000 (0)\n-23200D Int File Attributes   0000 (0)\n+234095 Compression Method    0008 (8) 'Deflated'\n+234097 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23409B CRC                   0F745EE4 (259284708)\n+23409F Compressed Size       00000255 (597)\n+2340A3 Uncompressed Size     0000047D (1149)\n+2340A7 Filename Length       003C (60)\n+2340A9 Extra Length          0000 (0)\n+2340AB Comment Length        0000 (0)\n+2340AD Disk Start            0000 (0)\n+2340AF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23200F Ext File Attributes   00000000 (0)\n-232013 Local Header Offset   001669CE (1468878)\n-232017 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2340B1 Ext File Attributes   00000000 (0)\n+2340B5 Local Header Offset   0017AA72 (1550962)\n+2340B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232017: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2340B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232052 CENTRAL HEADER #1352  02014B50 (33639248)\n-232056 Created Zip Spec      14 (20) '2.0'\n-232057 Created OS            00 (0) 'MS-DOS'\n-232058 Extract Zip Spec      14 (20) '2.0'\n-232059 Extract OS            00 (0) 'MS-DOS'\n-23205A General Purpose Flag  0808 (2056)\n+2340F5 CENTRAL HEADER #1352  02014B50 (33639248)\n+2340F9 Created Zip Spec      14 (20) '2.0'\n+2340FA Created OS            00 (0) 'MS-DOS'\n+2340FB Extract Zip Spec      14 (20) '2.0'\n+2340FC Extract OS            00 (0) 'MS-DOS'\n+2340FD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23205C Compression Method    0008 (8) 'Deflated'\n-23205E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232062 CRC                   00000000 (0)\n-232066 Compressed Size       00000002 (2)\n-23206A Uncompressed Size     00000000 (0)\n-23206E Filename Length       0022 (34)\n-232070 Extra Length          0000 (0)\n-232072 Comment Length        0000 (0)\n-232074 Disk Start            0000 (0)\n-232076 Int File Attributes   0000 (0)\n+2340FF Compression Method    0008 (8) 'Deflated'\n+234101 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234105 CRC                   10FA9E81 (284860033)\n+234109 Compressed Size       00000934 (2356)\n+23410D Uncompressed Size     000021D4 (8660)\n+234111 Filename Length       0033 (51)\n+234113 Extra Length          0000 (0)\n+234115 Comment Length        0000 (0)\n+234117 Disk Start            0000 (0)\n+234119 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232078 Ext File Attributes   00000000 (0)\n-23207C Local Header Offset   00166DA0 (1469856)\n-232080 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23411B Ext File Attributes   00000000 (0)\n+23411F Local Header Offset   0017AD31 (1551665)\n+234123 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232080: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234123: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2320A2 CENTRAL HEADER #1353  02014B50 (33639248)\n-2320A6 Created Zip Spec      14 (20) '2.0'\n-2320A7 Created OS            00 (0) 'MS-DOS'\n-2320A8 Extract Zip Spec      14 (20) '2.0'\n-2320A9 Extract OS            00 (0) 'MS-DOS'\n-2320AA General Purpose Flag  0808 (2056)\n+234156 CENTRAL HEADER #1353  02014B50 (33639248)\n+23415A Created Zip Spec      14 (20) '2.0'\n+23415B Created OS            00 (0) 'MS-DOS'\n+23415C Extract Zip Spec      14 (20) '2.0'\n+23415D Extract OS            00 (0) 'MS-DOS'\n+23415E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2320AC Compression Method    0008 (8) 'Deflated'\n-2320AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2320B2 CRC                   5DDCD4C5 (1574753477)\n-2320B6 Compressed Size       0000124E (4686)\n-2320BA Uncompressed Size     0000537F (21375)\n-2320BE Filename Length       0037 (55)\n-2320C0 Extra Length          0000 (0)\n-2320C2 Comment Length        0000 (0)\n-2320C4 Disk Start            0000 (0)\n-2320C6 Int File Attributes   0000 (0)\n+234160 Compression Method    0008 (8) 'Deflated'\n+234162 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234166 CRC                   9E6062D0 (2657116880)\n+23416A Compressed Size       00000253 (595)\n+23416E Uncompressed Size     0000047D (1149)\n+234172 Filename Length       003C (60)\n+234174 Extra Length          0000 (0)\n+234176 Comment Length        0000 (0)\n+234178 Disk Start            0000 (0)\n+23417A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2320C8 Ext File Attributes   00000000 (0)\n-2320CC Local Header Offset   00166DF2 (1469938)\n-2320D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23417C Ext File Attributes   00000000 (0)\n+234180 Local Header Offset   0017B6C6 (1554118)\n+234184 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2320D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234184: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232107 CENTRAL HEADER #1354  02014B50 (33639248)\n-23210B Created Zip Spec      14 (20) '2.0'\n-23210C Created OS            00 (0) 'MS-DOS'\n-23210D Extract Zip Spec      14 (20) '2.0'\n-23210E Extract OS            00 (0) 'MS-DOS'\n-23210F General Purpose Flag  0808 (2056)\n+2341C0 CENTRAL HEADER #1354  02014B50 (33639248)\n+2341C4 Created Zip Spec      14 (20) '2.0'\n+2341C5 Created OS            00 (0) 'MS-DOS'\n+2341C6 Extract Zip Spec      14 (20) '2.0'\n+2341C7 Extract OS            00 (0) 'MS-DOS'\n+2341C8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232111 Compression Method    0008 (8) 'Deflated'\n-232113 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232117 CRC                   5BC81E29 (1539841577)\n-23211B Compressed Size       000008C4 (2244)\n-23211F Uncompressed Size     00001D8A (7562)\n-232123 Filename Length       003E (62)\n-232125 Extra Length          0000 (0)\n-232127 Comment Length        0000 (0)\n-232129 Disk Start            0000 (0)\n-23212B Int File Attributes   0000 (0)\n+2341CA Compression Method    0008 (8) 'Deflated'\n+2341CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2341D0 CRC                   00000000 (0)\n+2341D4 Compressed Size       00000002 (2)\n+2341D8 Uncompressed Size     00000000 (0)\n+2341DC Filename Length       0032 (50)\n+2341DE Extra Length          0000 (0)\n+2341E0 Comment Length        0000 (0)\n+2341E2 Disk Start            0000 (0)\n+2341E4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23212D Ext File Attributes   00000000 (0)\n-232131 Local Header Offset   001680A5 (1474725)\n-232135 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2341E6 Ext File Attributes   00000000 (0)\n+2341EA Local Header Offset   0017B983 (1554819)\n+2341EE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232135: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2341EE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232173 CENTRAL HEADER #1355  02014B50 (33639248)\n-232177 Created Zip Spec      14 (20) '2.0'\n-232178 Created OS            00 (0) 'MS-DOS'\n-232179 Extract Zip Spec      14 (20) '2.0'\n-23217A Extract OS            00 (0) 'MS-DOS'\n-23217B General Purpose Flag  0808 (2056)\n+234220 CENTRAL HEADER #1355  02014B50 (33639248)\n+234224 Created Zip Spec      14 (20) '2.0'\n+234225 Created OS            00 (0) 'MS-DOS'\n+234226 Extract Zip Spec      14 (20) '2.0'\n+234227 Extract OS            00 (0) 'MS-DOS'\n+234228 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23217D Compression Method    0008 (8) 'Deflated'\n-23217F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232183 CRC                   A266F3B2 (2724656050)\n-232187 Compressed Size       00000BED (3053)\n-23218B Uncompressed Size     0000462E (17966)\n-23218F Filename Length       0037 (55)\n-232191 Extra Length          0000 (0)\n-232193 Comment Length        0000 (0)\n-232195 Disk Start            0000 (0)\n-232197 Int File Attributes   0000 (0)\n+23422A Compression Method    0008 (8) 'Deflated'\n+23422C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234230 CRC                   6A3922C1 (1782129345)\n+234234 Compressed Size       00000389 (905)\n+234238 Uncompressed Size     0000092A (2346)\n+23423C Filename Length       0039 (57)\n+23423E Extra Length          0000 (0)\n+234240 Comment Length        0000 (0)\n+234242 Disk Start            0000 (0)\n+234244 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232199 Ext File Attributes   00000000 (0)\n-23219D Local Header Offset   001689D5 (1477077)\n-2321A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234246 Ext File Attributes   00000000 (0)\n+23424A Local Header Offset   0017B9E5 (1554917)\n+23424E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2321A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23424E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2321D8 CENTRAL HEADER #1356  02014B50 (33639248)\n-2321DC Created Zip Spec      14 (20) '2.0'\n-2321DD Created OS            00 (0) 'MS-DOS'\n-2321DE Extract Zip Spec      14 (20) '2.0'\n-2321DF Extract OS            00 (0) 'MS-DOS'\n-2321E0 General Purpose Flag  0808 (2056)\n+234287 CENTRAL HEADER #1356  02014B50 (33639248)\n+23428B Created Zip Spec      14 (20) '2.0'\n+23428C Created OS            00 (0) 'MS-DOS'\n+23428D Extract Zip Spec      14 (20) '2.0'\n+23428E Extract OS            00 (0) 'MS-DOS'\n+23428F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2321E2 Compression Method    0008 (8) 'Deflated'\n-2321E4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2321E8 CRC                   952E3CF5 (2502835445)\n-2321EC Compressed Size       000002C7 (711)\n-2321F0 Uncompressed Size     00000552 (1362)\n-2321F4 Filename Length       0043 (67)\n-2321F6 Extra Length          0000 (0)\n-2321F8 Comment Length        0000 (0)\n-2321FA Disk Start            0000 (0)\n-2321FC Int File Attributes   0000 (0)\n+234291 Compression Method    0008 (8) 'Deflated'\n+234293 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234297 CRC                   A473398B (2759014795)\n+23429B Compressed Size       00000046 (70)\n+23429F Uncompressed Size     00000048 (72)\n+2342A3 Filename Length       0040 (64)\n+2342A5 Extra Length          0000 (0)\n+2342A7 Comment Length        0000 (0)\n+2342A9 Disk Start            0000 (0)\n+2342AB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2321FE Ext File Attributes   00000000 (0)\n-232202 Local Header Offset   00169627 (1480231)\n-232206 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2342AD Ext File Attributes   00000000 (0)\n+2342B1 Local Header Offset   0017BDD5 (1555925)\n+2342B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232206: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2342B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232249 CENTRAL HEADER #1357  02014B50 (33639248)\n-23224D Created Zip Spec      14 (20) '2.0'\n-23224E Created OS            00 (0) 'MS-DOS'\n-23224F Extract Zip Spec      14 (20) '2.0'\n-232250 Extract OS            00 (0) 'MS-DOS'\n-232251 General Purpose Flag  0808 (2056)\n+2342F5 CENTRAL HEADER #1357  02014B50 (33639248)\n+2342F9 Created Zip Spec      14 (20) '2.0'\n+2342FA Created OS            00 (0) 'MS-DOS'\n+2342FB Extract Zip Spec      14 (20) '2.0'\n+2342FC Extract OS            00 (0) 'MS-DOS'\n+2342FD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232253 Compression Method    0008 (8) 'Deflated'\n-232255 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232259 CRC                   290EDBFF (688839679)\n-23225D Compressed Size       00000040 (64)\n-232261 Uncompressed Size     00000049 (73)\n-232265 Filename Length       0052 (82)\n-232267 Extra Length          0000 (0)\n-232269 Comment Length        0000 (0)\n-23226B Disk Start            0000 (0)\n-23226D Int File Attributes   0000 (0)\n+2342FF Compression Method    0008 (8) 'Deflated'\n+234301 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234305 CRC                   00000000 (0)\n+234309 Compressed Size       00000002 (2)\n+23430D Uncompressed Size     00000000 (0)\n+234311 Filename Length       001F (31)\n+234313 Extra Length          0000 (0)\n+234315 Comment Length        0000 (0)\n+234317 Disk Start            0000 (0)\n+234319 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23226F Ext File Attributes   00000000 (0)\n-232273 Local Header Offset   0016995F (1481055)\n-232277 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23431B Ext File Attributes   00000000 (0)\n+23431F Local Header Offset   0017BE89 (1556105)\n+234323 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232277: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234323: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2322C9 CENTRAL HEADER #1358  02014B50 (33639248)\n-2322CD Created Zip Spec      14 (20) '2.0'\n-2322CE Created OS            00 (0) 'MS-DOS'\n-2322CF Extract Zip Spec      14 (20) '2.0'\n-2322D0 Extract OS            00 (0) 'MS-DOS'\n-2322D1 General Purpose Flag  0808 (2056)\n+234342 CENTRAL HEADER #1358  02014B50 (33639248)\n+234346 Created Zip Spec      14 (20) '2.0'\n+234347 Created OS            00 (0) 'MS-DOS'\n+234348 Extract Zip Spec      14 (20) '2.0'\n+234349 Extract OS            00 (0) 'MS-DOS'\n+23434A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2322D3 Compression Method    0008 (8) 'Deflated'\n-2322D5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2322D9 CRC                   A49FCF77 (2761936759)\n-2322DD Compressed Size       0000004D (77)\n-2322E1 Uncompressed Size     00000054 (84)\n-2322E5 Filename Length       005B (91)\n-2322E7 Extra Length          0000 (0)\n-2322E9 Comment Length        0000 (0)\n-2322EB Disk Start            0000 (0)\n-2322ED Int File Attributes   0000 (0)\n+23434C Compression Method    0008 (8) 'Deflated'\n+23434E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234352 CRC                   EA5FE743 (3932153667)\n+234356 Compressed Size       00000907 (2311)\n+23435A Uncompressed Size     00002351 (9041)\n+23435E Filename Length       0030 (48)\n+234360 Extra Length          0000 (0)\n+234362 Comment Length        0000 (0)\n+234364 Disk Start            0000 (0)\n+234366 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2322EF Ext File Attributes   00000000 (0)\n-2322F3 Local Header Offset   00169A1F (1481247)\n-2322F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234368 Ext File Attributes   00000000 (0)\n+23436C Local Header Offset   0017BED8 (1556184)\n+234370 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2322F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234370: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232352 CENTRAL HEADER #1359  02014B50 (33639248)\n-232356 Created Zip Spec      14 (20) '2.0'\n-232357 Created OS            00 (0) 'MS-DOS'\n-232358 Extract Zip Spec      14 (20) '2.0'\n-232359 Extract OS            00 (0) 'MS-DOS'\n-23235A General Purpose Flag  0808 (2056)\n+2343A0 CENTRAL HEADER #1359  02014B50 (33639248)\n+2343A4 Created Zip Spec      14 (20) '2.0'\n+2343A5 Created OS            00 (0) 'MS-DOS'\n+2343A6 Extract Zip Spec      14 (20) '2.0'\n+2343A7 Extract OS            00 (0) 'MS-DOS'\n+2343A8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23235C Compression Method    0008 (8) 'Deflated'\n-23235E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232362 CRC                   F515114D (4111798605)\n-232366 Compressed Size       00000049 (73)\n-23236A Uncompressed Size     00000054 (84)\n-23236E Filename Length       005D (93)\n-232370 Extra Length          0000 (0)\n-232372 Comment Length        0000 (0)\n-232374 Disk Start            0000 (0)\n-232376 Int File Attributes   0000 (0)\n+2343AA Compression Method    0008 (8) 'Deflated'\n+2343AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2343B0 CRC                   4C68B52A (1281930538)\n+2343B4 Compressed Size       00000406 (1030)\n+2343B8 Uncompressed Size     00000B4C (2892)\n+2343BC Filename Length       0037 (55)\n+2343BE Extra Length          0000 (0)\n+2343C0 Comment Length        0000 (0)\n+2343C2 Disk Start            0000 (0)\n+2343C4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232378 Ext File Attributes   00000000 (0)\n-23237C Local Header Offset   00169AF5 (1481461)\n-232380 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2343C6 Ext File Attributes   00000000 (0)\n+2343CA Local Header Offset   0017C83D (1558589)\n+2343CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232380: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2343CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2323DD CENTRAL HEADER #1360  02014B50 (33639248)\n-2323E1 Created Zip Spec      14 (20) '2.0'\n-2323E2 Created OS            00 (0) 'MS-DOS'\n-2323E3 Extract Zip Spec      14 (20) '2.0'\n-2323E4 Extract OS            00 (0) 'MS-DOS'\n-2323E5 General Purpose Flag  0808 (2056)\n+234405 CENTRAL HEADER #1360  02014B50 (33639248)\n+234409 Created Zip Spec      14 (20) '2.0'\n+23440A Created OS            00 (0) 'MS-DOS'\n+23440B Extract Zip Spec      14 (20) '2.0'\n+23440C Extract OS            00 (0) 'MS-DOS'\n+23440D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2323E7 Compression Method    0008 (8) 'Deflated'\n-2323E9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2323ED CRC                   285254BA (676484282)\n-2323F1 Compressed Size       00000045 (69)\n-2323F5 Uncompressed Size     0000004E (78)\n-2323F9 Filename Length       0059 (89)\n-2323FB Extra Length          0000 (0)\n-2323FD Comment Length        0000 (0)\n-2323FF Disk Start            0000 (0)\n-232401 Int File Attributes   0000 (0)\n+23440F Compression Method    0008 (8) 'Deflated'\n+234411 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234415 CRC                   23426219 (591553049)\n+234419 Compressed Size       00000B86 (2950)\n+23441D Uncompressed Size     00002C53 (11347)\n+234421 Filename Length       0031 (49)\n+234423 Extra Length          0000 (0)\n+234425 Comment Length        0000 (0)\n+234427 Disk Start            0000 (0)\n+234429 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232403 Ext File Attributes   00000000 (0)\n-232407 Local Header Offset   00169BC9 (1481673)\n-23240B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23442B Ext File Attributes   00000000 (0)\n+23442F Local Header Offset   0017CCA8 (1559720)\n+234433 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23240B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234433: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232464 CENTRAL HEADER #1361  02014B50 (33639248)\n-232468 Created Zip Spec      14 (20) '2.0'\n-232469 Created OS            00 (0) 'MS-DOS'\n-23246A Extract Zip Spec      14 (20) '2.0'\n-23246B Extract OS            00 (0) 'MS-DOS'\n-23246C General Purpose Flag  0808 (2056)\n+234464 CENTRAL HEADER #1361  02014B50 (33639248)\n+234468 Created Zip Spec      14 (20) '2.0'\n+234469 Created OS            00 (0) 'MS-DOS'\n+23446A Extract Zip Spec      14 (20) '2.0'\n+23446B Extract OS            00 (0) 'MS-DOS'\n+23446C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23246E Compression Method    0008 (8) 'Deflated'\n-232470 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232474 CRC                   9DAB4985 (2645248389)\n-232478 Compressed Size       0000003E (62)\n-23247C Uncompressed Size     0000004A (74)\n-232480 Filename Length       0056 (86)\n-232482 Extra Length          0000 (0)\n-232484 Comment Length        0000 (0)\n-232486 Disk Start            0000 (0)\n-232488 Int File Attributes   0000 (0)\n+23446E Compression Method    0008 (8) 'Deflated'\n+234470 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234474 CRC                   DAB7FE63 (3669491299)\n+234478 Compressed Size       00000592 (1426)\n+23447C Uncompressed Size     00001734 (5940)\n+234480 Filename Length       002E (46)\n+234482 Extra Length          0000 (0)\n+234484 Comment Length        0000 (0)\n+234486 Disk Start            0000 (0)\n+234488 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23248A Ext File Attributes   00000000 (0)\n-23248E Local Header Offset   00169C95 (1481877)\n-232492 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23448A Ext File Attributes   00000000 (0)\n+23448E Local Header Offset   0017D88D (1562765)\n+234492 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232492: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234492: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2324E8 CENTRAL HEADER #1362  02014B50 (33639248)\n-2324EC Created Zip Spec      14 (20) '2.0'\n-2324ED Created OS            00 (0) 'MS-DOS'\n-2324EE Extract Zip Spec      14 (20) '2.0'\n-2324EF Extract OS            00 (0) 'MS-DOS'\n-2324F0 General Purpose Flag  0808 (2056)\n+2344C0 CENTRAL HEADER #1362  02014B50 (33639248)\n+2344C4 Created Zip Spec      14 (20) '2.0'\n+2344C5 Created OS            00 (0) 'MS-DOS'\n+2344C6 Extract Zip Spec      14 (20) '2.0'\n+2344C7 Extract OS            00 (0) 'MS-DOS'\n+2344C8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2324F2 Compression Method    0008 (8) 'Deflated'\n-2324F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2324F8 CRC                   00000000 (0)\n-2324FC Compressed Size       00000002 (2)\n-232500 Uncompressed Size     00000000 (0)\n-232504 Filename Length       001B (27)\n-232506 Extra Length          0000 (0)\n-232508 Comment Length        0000 (0)\n-23250A Disk Start            0000 (0)\n-23250C Int File Attributes   0000 (0)\n+2344CA Compression Method    0008 (8) 'Deflated'\n+2344CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2344D0 CRC                   00000000 (0)\n+2344D4 Compressed Size       00000002 (2)\n+2344D8 Uncompressed Size     00000000 (0)\n+2344DC Filename Length       0036 (54)\n+2344DE Extra Length          0000 (0)\n+2344E0 Comment Length        0000 (0)\n+2344E2 Disk Start            0000 (0)\n+2344E4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23250E Ext File Attributes   00000000 (0)\n-232512 Local Header Offset   00169D57 (1482071)\n-232516 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2344E6 Ext File Attributes   00000000 (0)\n+2344EA Local Header Offset   0017DE7B (1564283)\n+2344EE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232516: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2344EE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232531 CENTRAL HEADER #1363  02014B50 (33639248)\n-232535 Created Zip Spec      14 (20) '2.0'\n-232536 Created OS            00 (0) 'MS-DOS'\n-232537 Extract Zip Spec      14 (20) '2.0'\n-232538 Extract OS            00 (0) 'MS-DOS'\n-232539 General Purpose Flag  0808 (2056)\n+234524 CENTRAL HEADER #1363  02014B50 (33639248)\n+234528 Created Zip Spec      14 (20) '2.0'\n+234529 Created OS            00 (0) 'MS-DOS'\n+23452A Extract Zip Spec      14 (20) '2.0'\n+23452B Extract OS            00 (0) 'MS-DOS'\n+23452C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23253B Compression Method    0008 (8) 'Deflated'\n-23253D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232541 CRC                   14FCC408 (352109576)\n-232545 Compressed Size       00000262 (610)\n-232549 Uncompressed Size     00000497 (1175)\n-23254D Filename Length       0029 (41)\n-23254F Extra Length          0000 (0)\n-232551 Comment Length        0000 (0)\n-232553 Disk Start            0000 (0)\n-232555 Int File Attributes   0000 (0)\n+23452E Compression Method    0008 (8) 'Deflated'\n+234530 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234534 CRC                   5192999D (1368562077)\n+234538 Compressed Size       000003DE (990)\n+23453C Uncompressed Size     00000C1C (3100)\n+234540 Filename Length       003D (61)\n+234542 Extra Length          0000 (0)\n+234544 Comment Length        0000 (0)\n+234546 Disk Start            0000 (0)\n+234548 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232557 Ext File Attributes   00000000 (0)\n-23255B Local Header Offset   00169DA2 (1482146)\n-23255F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23454A Ext File Attributes   00000000 (0)\n+23454E Local Header Offset   0017DEE1 (1564385)\n+234552 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23255F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234552: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232588 CENTRAL HEADER #1364  02014B50 (33639248)\n-23258C Created Zip Spec      14 (20) '2.0'\n-23258D Created OS            00 (0) 'MS-DOS'\n-23258E Extract Zip Spec      14 (20) '2.0'\n-23258F Extract OS            00 (0) 'MS-DOS'\n-232590 General Purpose Flag  0808 (2056)\n+23458F CENTRAL HEADER #1364  02014B50 (33639248)\n+234593 Created Zip Spec      14 (20) '2.0'\n+234594 Created OS            00 (0) 'MS-DOS'\n+234595 Extract Zip Spec      14 (20) '2.0'\n+234596 Extract OS            00 (0) 'MS-DOS'\n+234597 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232592 Compression Method    0008 (8) 'Deflated'\n-232594 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232598 CRC                   6D55499F (1834305951)\n-23259C Compressed Size       000005CB (1483)\n-2325A0 Uncompressed Size     00001115 (4373)\n-2325A4 Filename Length       0024 (36)\n-2325A6 Extra Length          0000 (0)\n-2325A8 Comment Length        0000 (0)\n-2325AA Disk Start            0000 (0)\n-2325AC Int File Attributes   0000 (0)\n+234599 Compression Method    0008 (8) 'Deflated'\n+23459B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23459F CRC                   2A04AB66 (704949094)\n+2345A3 Compressed Size       0000004A (74)\n+2345A7 Uncompressed Size     0000004C (76)\n+2345AB Filename Length       0044 (68)\n+2345AD Extra Length          0000 (0)\n+2345AF Comment Length        0000 (0)\n+2345B1 Disk Start            0000 (0)\n+2345B3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2325AE Ext File Attributes   00000000 (0)\n-2325B2 Local Header Offset   0016A05B (1482843)\n-2325B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2345B5 Ext File Attributes   00000000 (0)\n+2345B9 Local Header Offset   0017E32A (1565482)\n+2345BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2325B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2345BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2325DA CENTRAL HEADER #1365  02014B50 (33639248)\n-2325DE Created Zip Spec      14 (20) '2.0'\n-2325DF Created OS            00 (0) 'MS-DOS'\n-2325E0 Extract Zip Spec      14 (20) '2.0'\n-2325E1 Extract OS            00 (0) 'MS-DOS'\n-2325E2 General Purpose Flag  0808 (2056)\n+234601 CENTRAL HEADER #1365  02014B50 (33639248)\n+234605 Created Zip Spec      14 (20) '2.0'\n+234606 Created OS            00 (0) 'MS-DOS'\n+234607 Extract Zip Spec      14 (20) '2.0'\n+234608 Extract OS            00 (0) 'MS-DOS'\n+234609 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2325E4 Compression Method    0008 (8) 'Deflated'\n-2325E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2325EA CRC                   00000000 (0)\n-2325EE Compressed Size       00000002 (2)\n-2325F2 Uncompressed Size     00000000 (0)\n-2325F6 Filename Length       0020 (32)\n-2325F8 Extra Length          0000 (0)\n-2325FA Comment Length        0000 (0)\n-2325FC Disk Start            0000 (0)\n-2325FE Int File Attributes   0000 (0)\n+23460B Compression Method    0008 (8) 'Deflated'\n+23460D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234611 CRC                   00000000 (0)\n+234615 Compressed Size       00000002 (2)\n+234619 Uncompressed Size     00000000 (0)\n+23461D Filename Length       0022 (34)\n+23461F Extra Length          0000 (0)\n+234621 Comment Length        0000 (0)\n+234623 Disk Start            0000 (0)\n+234625 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232600 Ext File Attributes   00000000 (0)\n-232604 Local Header Offset   0016A678 (1484408)\n-232608 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234627 Ext File Attributes   00000000 (0)\n+23462B Local Header Offset   0017E3E6 (1565670)\n+23462F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232608: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23462F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232628 CENTRAL HEADER #1366  02014B50 (33639248)\n-23262C Created Zip Spec      14 (20) '2.0'\n-23262D Created OS            00 (0) 'MS-DOS'\n-23262E Extract Zip Spec      14 (20) '2.0'\n-23262F Extract OS            00 (0) 'MS-DOS'\n-232630 General Purpose Flag  0808 (2056)\n+234651 CENTRAL HEADER #1366  02014B50 (33639248)\n+234655 Created Zip Spec      14 (20) '2.0'\n+234656 Created OS            00 (0) 'MS-DOS'\n+234657 Extract Zip Spec      14 (20) '2.0'\n+234658 Extract OS            00 (0) 'MS-DOS'\n+234659 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232632 Compression Method    0008 (8) 'Deflated'\n-232634 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232638 CRC                   AE92FDCB (2928868811)\n-23263C Compressed Size       00000742 (1858)\n-232640 Uncompressed Size     00001744 (5956)\n-232644 Filename Length       0032 (50)\n-232646 Extra Length          0000 (0)\n-232648 Comment Length        0000 (0)\n-23264A Disk Start            0000 (0)\n-23264C Int File Attributes   0000 (0)\n+23465B Compression Method    0008 (8) 'Deflated'\n+23465D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234661 CRC                   2AFEDAAE (721345198)\n+234665 Compressed Size       000003DA (986)\n+234669 Uncompressed Size     00000992 (2450)\n+23466D Filename Length       0036 (54)\n+23466F Extra Length          0000 (0)\n+234671 Comment Length        0000 (0)\n+234673 Disk Start            0000 (0)\n+234675 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23264E Ext File Attributes   00000000 (0)\n-232652 Local Header Offset   0016A6C8 (1484488)\n-232656 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234677 Ext File Attributes   00000000 (0)\n+23467B Local Header Offset   0017E438 (1565752)\n+23467F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232656: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23467F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232688 CENTRAL HEADER #1367  02014B50 (33639248)\n-23268C Created Zip Spec      14 (20) '2.0'\n-23268D Created OS            00 (0) 'MS-DOS'\n-23268E Extract Zip Spec      14 (20) '2.0'\n-23268F Extract OS            00 (0) 'MS-DOS'\n-232690 General Purpose Flag  0808 (2056)\n+2346B5 CENTRAL HEADER #1367  02014B50 (33639248)\n+2346B9 Created Zip Spec      14 (20) '2.0'\n+2346BA Created OS            00 (0) 'MS-DOS'\n+2346BB Extract Zip Spec      14 (20) '2.0'\n+2346BC Extract OS            00 (0) 'MS-DOS'\n+2346BD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232692 Compression Method    0008 (8) 'Deflated'\n-232694 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232698 CRC                   1162A7F0 (291678192)\n-23269C Compressed Size       0000066E (1646)\n-2326A0 Uncompressed Size     00001680 (5760)\n-2326A4 Filename Length       0039 (57)\n-2326A6 Extra Length          0000 (0)\n-2326A8 Comment Length        0000 (0)\n-2326AA Disk Start            0000 (0)\n-2326AC Int File Attributes   0000 (0)\n+2346BF Compression Method    0008 (8) 'Deflated'\n+2346C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2346C5 CRC                   00000000 (0)\n+2346C9 Compressed Size       00000002 (2)\n+2346CD Uncompressed Size     00000000 (0)\n+2346D1 Filename Length       0037 (55)\n+2346D3 Extra Length          0000 (0)\n+2346D5 Comment Length        0000 (0)\n+2346D7 Disk Start            0000 (0)\n+2346D9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2326AE Ext File Attributes   00000000 (0)\n-2326B2 Local Header Offset   0016AE6A (1486442)\n-2326B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2346DB Ext File Attributes   00000000 (0)\n+2346DF Local Header Offset   0017E876 (1566838)\n+2346E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2326B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2346E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2326EF CENTRAL HEADER #1368  02014B50 (33639248)\n-2326F3 Created Zip Spec      14 (20) '2.0'\n-2326F4 Created OS            00 (0) 'MS-DOS'\n-2326F5 Extract Zip Spec      14 (20) '2.0'\n-2326F6 Extract OS            00 (0) 'MS-DOS'\n-2326F7 General Purpose Flag  0808 (2056)\n+23471A CENTRAL HEADER #1368  02014B50 (33639248)\n+23471E Created Zip Spec      14 (20) '2.0'\n+23471F Created OS            00 (0) 'MS-DOS'\n+234720 Extract Zip Spec      14 (20) '2.0'\n+234721 Extract OS            00 (0) 'MS-DOS'\n+234722 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2326F9 Compression Method    0008 (8) 'Deflated'\n-2326FB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2326FF CRC                   00000000 (0)\n-232703 Compressed Size       00000002 (2)\n-232707 Uncompressed Size     00000000 (0)\n-23270B Filename Length       0024 (36)\n-23270D Extra Length          0000 (0)\n-23270F Comment Length        0000 (0)\n-232711 Disk Start            0000 (0)\n-232713 Int File Attributes   0000 (0)\n+234724 Compression Method    0008 (8) 'Deflated'\n+234726 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23472A CRC                   FBE00F68 (4225765224)\n+23472E Compressed Size       00000375 (885)\n+234732 Uncompressed Size     0000081B (2075)\n+234736 Filename Length       003E (62)\n+234738 Extra Length          0000 (0)\n+23473A Comment Length        0000 (0)\n+23473C Disk Start            0000 (0)\n+23473E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232715 Ext File Attributes   00000000 (0)\n-232719 Local Header Offset   0016B53F (1488191)\n-23271D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234740 Ext File Attributes   00000000 (0)\n+234744 Local Header Offset   0017E8DD (1566941)\n+234748 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23271D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234748: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232741 CENTRAL HEADER #1369  02014B50 (33639248)\n-232745 Created Zip Spec      14 (20) '2.0'\n-232746 Created OS            00 (0) 'MS-DOS'\n-232747 Extract Zip Spec      14 (20) '2.0'\n-232748 Extract OS            00 (0) 'MS-DOS'\n-232749 General Purpose Flag  0808 (2056)\n+234786 CENTRAL HEADER #1369  02014B50 (33639248)\n+23478A Created Zip Spec      14 (20) '2.0'\n+23478B Created OS            00 (0) 'MS-DOS'\n+23478C Extract Zip Spec      14 (20) '2.0'\n+23478D Extract OS            00 (0) 'MS-DOS'\n+23478E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23274B Compression Method    0008 (8) 'Deflated'\n-23274D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232751 CRC                   E0604599 (3764405657)\n-232755 Compressed Size       00000E71 (3697)\n-232759 Uncompressed Size     00004154 (16724)\n-23275D Filename Length       003A (58)\n-23275F Extra Length          0000 (0)\n-232761 Comment Length        0000 (0)\n-232763 Disk Start            0000 (0)\n-232765 Int File Attributes   0000 (0)\n+234790 Compression Method    0008 (8) 'Deflated'\n+234792 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234796 CRC                   B5C799B8 (3049757112)\n+23479A Compressed Size       0000004A (74)\n+23479E Uncompressed Size     0000004D (77)\n+2347A2 Filename Length       0045 (69)\n+2347A4 Extra Length          0000 (0)\n+2347A6 Comment Length        0000 (0)\n+2347A8 Disk Start            0000 (0)\n+2347AA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232767 Ext File Attributes   00000000 (0)\n-23276B Local Header Offset   0016B593 (1488275)\n-23276F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2347AC Ext File Attributes   00000000 (0)\n+2347B0 Local Header Offset   0017ECBE (1567934)\n+2347B4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23276F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2347B4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2327A9 CENTRAL HEADER #1370  02014B50 (33639248)\n-2327AD Created Zip Spec      14 (20) '2.0'\n-2327AE Created OS            00 (0) 'MS-DOS'\n-2327AF Extract Zip Spec      14 (20) '2.0'\n-2327B0 Extract OS            00 (0) 'MS-DOS'\n-2327B1 General Purpose Flag  0808 (2056)\n+2347F9 CENTRAL HEADER #1370  02014B50 (33639248)\n+2347FD Created Zip Spec      14 (20) '2.0'\n+2347FE Created OS            00 (0) 'MS-DOS'\n+2347FF Extract Zip Spec      14 (20) '2.0'\n+234800 Extract OS            00 (0) 'MS-DOS'\n+234801 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2327B3 Compression Method    0008 (8) 'Deflated'\n-2327B5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2327B9 CRC                   20C4D90B (549771531)\n-2327BD Compressed Size       0000026F (623)\n-2327C1 Uncompressed Size     000004E4 (1252)\n-2327C5 Filename Length       0041 (65)\n-2327C7 Extra Length          0000 (0)\n-2327C9 Comment Length        0000 (0)\n-2327CB Disk Start            0000 (0)\n-2327CD Int File Attributes   0000 (0)\n+234803 Compression Method    0008 (8) 'Deflated'\n+234805 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234809 CRC                   00000000 (0)\n+23480D Compressed Size       00000002 (2)\n+234811 Uncompressed Size     00000000 (0)\n+234815 Filename Length       0021 (33)\n+234817 Extra Length          0000 (0)\n+234819 Comment Length        0000 (0)\n+23481B Disk Start            0000 (0)\n+23481D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2327CF Ext File Attributes   00000000 (0)\n-2327D3 Local Header Offset   0016C46C (1492076)\n-2327D7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23481F Ext File Attributes   00000000 (0)\n+234823 Local Header Offset   0017ED7B (1568123)\n+234827 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2327D7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234827: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232818 CENTRAL HEADER #1371  02014B50 (33639248)\n-23281C Created Zip Spec      14 (20) '2.0'\n-23281D Created OS            00 (0) 'MS-DOS'\n-23281E Extract Zip Spec      14 (20) '2.0'\n-23281F Extract OS            00 (0) 'MS-DOS'\n-232820 General Purpose Flag  0808 (2056)\n+234848 CENTRAL HEADER #1371  02014B50 (33639248)\n+23484C Created Zip Spec      14 (20) '2.0'\n+23484D Created OS            00 (0) 'MS-DOS'\n+23484E Extract Zip Spec      14 (20) '2.0'\n+23484F Extract OS            00 (0) 'MS-DOS'\n+234850 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232822 Compression Method    0008 (8) 'Deflated'\n-232824 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232828 CRC                   DE8C8852 (3733751890)\n-23282C Compressed Size       0000031F (799)\n-232830 Uncompressed Size     0000078C (1932)\n-232834 Filename Length       0042 (66)\n-232836 Extra Length          0000 (0)\n-232838 Comment Length        0000 (0)\n-23283A Disk Start            0000 (0)\n-23283C Int File Attributes   0000 (0)\n+234852 Compression Method    0008 (8) 'Deflated'\n+234854 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234858 CRC                   88CEDD40 (2295258432)\n+23485C Compressed Size       0000058E (1422)\n+234860 Uncompressed Size     000011F6 (4598)\n+234864 Filename Length       0034 (52)\n+234866 Extra Length          0000 (0)\n+234868 Comment Length        0000 (0)\n+23486A Disk Start            0000 (0)\n+23486C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23283E Ext File Attributes   00000000 (0)\n-232842 Local Header Offset   0016C74A (1492810)\n-232846 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23486E Ext File Attributes   00000000 (0)\n+234872 Local Header Offset   0017EDCC (1568204)\n+234876 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232846: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234876: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232888 CENTRAL HEADER #1372  02014B50 (33639248)\n-23288C Created Zip Spec      14 (20) '2.0'\n-23288D Created OS            00 (0) 'MS-DOS'\n-23288E Extract Zip Spec      14 (20) '2.0'\n-23288F Extract OS            00 (0) 'MS-DOS'\n-232890 General Purpose Flag  0808 (2056)\n+2348AA CENTRAL HEADER #1372  02014B50 (33639248)\n+2348AE Created Zip Spec      14 (20) '2.0'\n+2348AF Created OS            00 (0) 'MS-DOS'\n+2348B0 Extract Zip Spec      14 (20) '2.0'\n+2348B1 Extract OS            00 (0) 'MS-DOS'\n+2348B2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232892 Compression Method    0008 (8) 'Deflated'\n-232894 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232898 CRC                   00000000 (0)\n-23289C Compressed Size       00000002 (2)\n-2328A0 Uncompressed Size     00000000 (0)\n-2328A4 Filename Length       0024 (36)\n-2328A6 Extra Length          0000 (0)\n-2328A8 Comment Length        0000 (0)\n-2328AA Disk Start            0000 (0)\n-2328AC Int File Attributes   0000 (0)\n+2348B4 Compression Method    0008 (8) 'Deflated'\n+2348B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2348BA CRC                   00000000 (0)\n+2348BE Compressed Size       00000002 (2)\n+2348C2 Uncompressed Size     00000000 (0)\n+2348C6 Filename Length       0036 (54)\n+2348C8 Extra Length          0000 (0)\n+2348CA Comment Length        0000 (0)\n+2348CC Disk Start            0000 (0)\n+2348CE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2328AE Ext File Attributes   00000000 (0)\n-2328B2 Local Header Offset   0016CAD9 (1493721)\n-2328B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2348D0 Ext File Attributes   00000000 (0)\n+2348D4 Local Header Offset   0017F3BC (1569724)\n+2348D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2328B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2348D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2328DA CENTRAL HEADER #1373  02014B50 (33639248)\n-2328DE Created Zip Spec      14 (20) '2.0'\n-2328DF Created OS            00 (0) 'MS-DOS'\n-2328E0 Extract Zip Spec      14 (20) '2.0'\n-2328E1 Extract OS            00 (0) 'MS-DOS'\n-2328E2 General Purpose Flag  0808 (2056)\n+23490E CENTRAL HEADER #1373  02014B50 (33639248)\n+234912 Created Zip Spec      14 (20) '2.0'\n+234913 Created OS            00 (0) 'MS-DOS'\n+234914 Extract Zip Spec      14 (20) '2.0'\n+234915 Extract OS            00 (0) 'MS-DOS'\n+234916 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2328E4 Compression Method    0008 (8) 'Deflated'\n-2328E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2328EA CRC                   FA431F6B (4198702955)\n-2328EE Compressed Size       00000362 (866)\n-2328F2 Uncompressed Size     0000081E (2078)\n-2328F6 Filename Length       003A (58)\n-2328F8 Extra Length          0000 (0)\n-2328FA Comment Length        0000 (0)\n-2328FC Disk Start            0000 (0)\n-2328FE Int File Attributes   0000 (0)\n+234918 Compression Method    0008 (8) 'Deflated'\n+23491A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23491E CRC                   5DC5D2E5 (1573245669)\n+234922 Compressed Size       0000035B (859)\n+234926 Uncompressed Size     0000079B (1947)\n+23492A Filename Length       003D (61)\n+23492C Extra Length          0000 (0)\n+23492E Comment Length        0000 (0)\n+234930 Disk Start            0000 (0)\n+234932 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232900 Ext File Attributes   00000000 (0)\n-232904 Local Header Offset   0016CB2D (1493805)\n-232908 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234934 Ext File Attributes   00000000 (0)\n+234938 Local Header Offset   0017F422 (1569826)\n+23493C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232908: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23493C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232942 CENTRAL HEADER #1374  02014B50 (33639248)\n-232946 Created Zip Spec      14 (20) '2.0'\n-232947 Created OS            00 (0) 'MS-DOS'\n-232948 Extract Zip Spec      14 (20) '2.0'\n-232949 Extract OS            00 (0) 'MS-DOS'\n-23294A General Purpose Flag  0808 (2056)\n+234979 CENTRAL HEADER #1374  02014B50 (33639248)\n+23497D Created Zip Spec      14 (20) '2.0'\n+23497E Created OS            00 (0) 'MS-DOS'\n+23497F Extract Zip Spec      14 (20) '2.0'\n+234980 Extract OS            00 (0) 'MS-DOS'\n+234981 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23294C Compression Method    0008 (8) 'Deflated'\n-23294E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232952 CRC                   57271651 (1462179409)\n-232956 Compressed Size       00000D7A (3450)\n-23295A Uncompressed Size     00003A1F (14879)\n-23295E Filename Length       003A (58)\n-232960 Extra Length          0000 (0)\n-232962 Comment Length        0000 (0)\n-232964 Disk Start            0000 (0)\n-232966 Int File Attributes   0000 (0)\n+234983 Compression Method    0008 (8) 'Deflated'\n+234985 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234989 CRC                   AD875852 (2911328338)\n+23498D Compressed Size       0000004A (74)\n+234991 Uncompressed Size     0000004C (76)\n+234995 Filename Length       0044 (68)\n+234997 Extra Length          0000 (0)\n+234999 Comment Length        0000 (0)\n+23499B Disk Start            0000 (0)\n+23499D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232968 Ext File Attributes   00000000 (0)\n-23296C Local Header Offset   0016CEF7 (1494775)\n-232970 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23499F Ext File Attributes   00000000 (0)\n+2349A3 Local Header Offset   0017F7E8 (1570792)\n+2349A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232970: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2349A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2329AA CENTRAL HEADER #1375  02014B50 (33639248)\n-2329AE Created Zip Spec      14 (20) '2.0'\n-2329AF Created OS            00 (0) 'MS-DOS'\n-2329B0 Extract Zip Spec      14 (20) '2.0'\n-2329B1 Extract OS            00 (0) 'MS-DOS'\n-2329B2 General Purpose Flag  0808 (2056)\n+2349EB CENTRAL HEADER #1375  02014B50 (33639248)\n+2349EF Created Zip Spec      14 (20) '2.0'\n+2349F0 Created OS            00 (0) 'MS-DOS'\n+2349F1 Extract Zip Spec      14 (20) '2.0'\n+2349F2 Extract OS            00 (0) 'MS-DOS'\n+2349F3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2329B4 Compression Method    0008 (8) 'Deflated'\n-2329B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2329BA CRC                   E96DE12E (3916292398)\n-2329BE Compressed Size       000002D8 (728)\n-2329C2 Uncompressed Size     00000683 (1667)\n-2329C6 Filename Length       0041 (65)\n-2329C8 Extra Length          0000 (0)\n-2329CA Comment Length        0000 (0)\n-2329CC Disk Start            0000 (0)\n-2329CE Int File Attributes   0000 (0)\n+2349F5 Compression Method    0008 (8) 'Deflated'\n+2349F7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2349FB CRC                   00000000 (0)\n+2349FF Compressed Size       00000002 (2)\n+234A03 Uncompressed Size     00000000 (0)\n+234A07 Filename Length       0023 (35)\n+234A09 Extra Length          0000 (0)\n+234A0B Comment Length        0000 (0)\n+234A0D Disk Start            0000 (0)\n+234A0F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2329D0 Ext File Attributes   00000000 (0)\n-2329D4 Local Header Offset   0016DCD9 (1498329)\n-2329D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234A11 Ext File Attributes   00000000 (0)\n+234A15 Local Header Offset   0017F8A4 (1570980)\n+234A19 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2329D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234A19: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232A19 CENTRAL HEADER #1376  02014B50 (33639248)\n-232A1D Created Zip Spec      14 (20) '2.0'\n-232A1E Created OS            00 (0) 'MS-DOS'\n-232A1F Extract Zip Spec      14 (20) '2.0'\n-232A20 Extract OS            00 (0) 'MS-DOS'\n-232A21 General Purpose Flag  0808 (2056)\n+234A3C CENTRAL HEADER #1376  02014B50 (33639248)\n+234A40 Created Zip Spec      14 (20) '2.0'\n+234A41 Created OS            00 (0) 'MS-DOS'\n+234A42 Extract Zip Spec      14 (20) '2.0'\n+234A43 Extract OS            00 (0) 'MS-DOS'\n+234A44 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232A23 Compression Method    0008 (8) 'Deflated'\n-232A25 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232A29 CRC                   F6A7D6C9 (4138194633)\n-232A2D Compressed Size       00000865 (2149)\n-232A31 Uncompressed Size     0000205C (8284)\n-232A35 Filename Length       0042 (66)\n-232A37 Extra Length          0000 (0)\n-232A39 Comment Length        0000 (0)\n-232A3B Disk Start            0000 (0)\n-232A3D Int File Attributes   0000 (0)\n+234A46 Compression Method    0008 (8) 'Deflated'\n+234A48 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234A4C CRC                   75FBF59C (1979446684)\n+234A50 Compressed Size       00000572 (1394)\n+234A54 Uncompressed Size     00000FCF (4047)\n+234A58 Filename Length       0038 (56)\n+234A5A Extra Length          0000 (0)\n+234A5C Comment Length        0000 (0)\n+234A5E Disk Start            0000 (0)\n+234A60 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232A3F Ext File Attributes   00000000 (0)\n-232A43 Local Header Offset   0016E020 (1499168)\n-232A47 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234A62 Ext File Attributes   00000000 (0)\n+234A66 Local Header Offset   0017F8F7 (1571063)\n+234A6A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232A47: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234A6A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232A89 CENTRAL HEADER #1377  02014B50 (33639248)\n-232A8D Created Zip Spec      14 (20) '2.0'\n-232A8E Created OS            00 (0) 'MS-DOS'\n-232A8F Extract Zip Spec      14 (20) '2.0'\n-232A90 Extract OS            00 (0) 'MS-DOS'\n-232A91 General Purpose Flag  0808 (2056)\n+234AA2 CENTRAL HEADER #1377  02014B50 (33639248)\n+234AA6 Created Zip Spec      14 (20) '2.0'\n+234AA7 Created OS            00 (0) 'MS-DOS'\n+234AA8 Extract Zip Spec      14 (20) '2.0'\n+234AA9 Extract OS            00 (0) 'MS-DOS'\n+234AAA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232A93 Compression Method    0008 (8) 'Deflated'\n-232A95 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232A99 CRC                   B6EA911C (3068825884)\n-232A9D Compressed Size       0000042F (1071)\n-232AA1 Uncompressed Size     00000C6F (3183)\n-232AA5 Filename Length       004F (79)\n-232AA7 Extra Length          0000 (0)\n-232AA9 Comment Length        0000 (0)\n-232AAB Disk Start            0000 (0)\n-232AAD Int File Attributes   0000 (0)\n+234AAC Compression Method    0008 (8) 'Deflated'\n+234AAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234AB2 CRC                   00000000 (0)\n+234AB6 Compressed Size       00000002 (2)\n+234ABA Uncompressed Size     00000000 (0)\n+234ABE Filename Length       0038 (56)\n+234AC0 Extra Length          0000 (0)\n+234AC2 Comment Length        0000 (0)\n+234AC4 Disk Start            0000 (0)\n+234AC6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232AAF Ext File Attributes   00000000 (0)\n-232AB3 Local Header Offset   0016E8F5 (1501429)\n-232AB7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234AC8 Ext File Attributes   00000000 (0)\n+234ACC Local Header Offset   0017FECF (1572559)\n+234AD0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232AB7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234AD0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232B06 CENTRAL HEADER #1378  02014B50 (33639248)\n-232B0A Created Zip Spec      14 (20) '2.0'\n-232B0B Created OS            00 (0) 'MS-DOS'\n-232B0C Extract Zip Spec      14 (20) '2.0'\n-232B0D Extract OS            00 (0) 'MS-DOS'\n-232B0E General Purpose Flag  0808 (2056)\n+234B08 CENTRAL HEADER #1378  02014B50 (33639248)\n+234B0C Created Zip Spec      14 (20) '2.0'\n+234B0D Created OS            00 (0) 'MS-DOS'\n+234B0E Extract Zip Spec      14 (20) '2.0'\n+234B0F Extract OS            00 (0) 'MS-DOS'\n+234B10 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232B10 Compression Method    0008 (8) 'Deflated'\n-232B12 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232B16 CRC                   ACDFEDCC (2900356556)\n-232B1A Compressed Size       00000266 (614)\n-232B1E Uncompressed Size     000004D9 (1241)\n-232B22 Filename Length       0049 (73)\n-232B24 Extra Length          0000 (0)\n-232B26 Comment Length        0000 (0)\n-232B28 Disk Start            0000 (0)\n-232B2A Int File Attributes   0000 (0)\n+234B12 Compression Method    0008 (8) 'Deflated'\n+234B14 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234B18 CRC                   3042ABBA (809675706)\n+234B1C Compressed Size       00000376 (886)\n+234B20 Uncompressed Size     00000819 (2073)\n+234B24 Filename Length       003F (63)\n+234B26 Extra Length          0000 (0)\n+234B28 Comment Length        0000 (0)\n+234B2A Disk Start            0000 (0)\n+234B2C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232B2C Ext File Attributes   00000000 (0)\n-232B30 Local Header Offset   0016EDA1 (1502625)\n-232B34 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234B2E Ext File Attributes   00000000 (0)\n+234B32 Local Header Offset   0017FF37 (1572663)\n+234B36 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232B34: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234B36: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232B7D CENTRAL HEADER #1379  02014B50 (33639248)\n-232B81 Created Zip Spec      14 (20) '2.0'\n-232B82 Created OS            00 (0) 'MS-DOS'\n-232B83 Extract Zip Spec      14 (20) '2.0'\n-232B84 Extract OS            00 (0) 'MS-DOS'\n-232B85 General Purpose Flag  0808 (2056)\n+234B75 CENTRAL HEADER #1379  02014B50 (33639248)\n+234B79 Created Zip Spec      14 (20) '2.0'\n+234B7A Created OS            00 (0) 'MS-DOS'\n+234B7B Extract Zip Spec      14 (20) '2.0'\n+234B7C Extract OS            00 (0) 'MS-DOS'\n+234B7D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232B87 Compression Method    0008 (8) 'Deflated'\n-232B89 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232B8D CRC                   00000000 (0)\n-232B91 Compressed Size       00000002 (2)\n-232B95 Uncompressed Size     00000000 (0)\n-232B99 Filename Length       0029 (41)\n-232B9B Extra Length          0000 (0)\n-232B9D Comment Length        0000 (0)\n-232B9F Disk Start            0000 (0)\n-232BA1 Int File Attributes   0000 (0)\n+234B7F Compression Method    0008 (8) 'Deflated'\n+234B81 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234B85 CRC                   26719F8E (644980622)\n+234B89 Compressed Size       0000004B (75)\n+234B8D Uncompressed Size     0000004E (78)\n+234B91 Filename Length       0046 (70)\n+234B93 Extra Length          0000 (0)\n+234B95 Comment Length        0000 (0)\n+234B97 Disk Start            0000 (0)\n+234B99 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232BA3 Ext File Attributes   00000000 (0)\n-232BA7 Local Header Offset   0016F07E (1503358)\n-232BAB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234B9B Ext File Attributes   00000000 (0)\n+234B9F Local Header Offset   0018031A (1573658)\n+234BA3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232BAB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234BA3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232BD4 CENTRAL HEADER #1380  02014B50 (33639248)\n-232BD8 Created Zip Spec      14 (20) '2.0'\n-232BD9 Created OS            00 (0) 'MS-DOS'\n-232BDA Extract Zip Spec      14 (20) '2.0'\n-232BDB Extract OS            00 (0) 'MS-DOS'\n-232BDC General Purpose Flag  0808 (2056)\n+234BE9 CENTRAL HEADER #1380  02014B50 (33639248)\n+234BED Created Zip Spec      14 (20) '2.0'\n+234BEE Created OS            00 (0) 'MS-DOS'\n+234BEF Extract Zip Spec      14 (20) '2.0'\n+234BF0 Extract OS            00 (0) 'MS-DOS'\n+234BF1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232BDE Compression Method    0008 (8) 'Deflated'\n-232BE0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232BE4 CRC                   7087B36E (1887941486)\n-232BE8 Compressed Size       00000508 (1288)\n-232BEC Uncompressed Size     00000C71 (3185)\n-232BF0 Filename Length       0044 (68)\n-232BF2 Extra Length          0000 (0)\n-232BF4 Comment Length        0000 (0)\n-232BF6 Disk Start            0000 (0)\n-232BF8 Int File Attributes   0000 (0)\n+234BF3 Compression Method    0008 (8) 'Deflated'\n+234BF5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234BF9 CRC                   00000000 (0)\n+234BFD Compressed Size       00000002 (2)\n+234C01 Uncompressed Size     00000000 (0)\n+234C05 Filename Length       0015 (21)\n+234C07 Extra Length          0000 (0)\n+234C09 Comment Length        0000 (0)\n+234C0B Disk Start            0000 (0)\n+234C0D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232BFA Ext File Attributes   00000000 (0)\n-232BFE Local Header Offset   0016F0D7 (1503447)\n-232C02 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234C0F Ext File Attributes   00000000 (0)\n+234C13 Local Header Offset   001803D9 (1573849)\n+234C17 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232C02: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234C17: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232C46 CENTRAL HEADER #1381  02014B50 (33639248)\n-232C4A Created Zip Spec      14 (20) '2.0'\n-232C4B Created OS            00 (0) 'MS-DOS'\n-232C4C Extract Zip Spec      14 (20) '2.0'\n-232C4D Extract OS            00 (0) 'MS-DOS'\n-232C4E General Purpose Flag  0808 (2056)\n+234C2C CENTRAL HEADER #1381  02014B50 (33639248)\n+234C30 Created Zip Spec      14 (20) '2.0'\n+234C31 Created OS            00 (0) 'MS-DOS'\n+234C32 Extract Zip Spec      14 (20) '2.0'\n+234C33 Extract OS            00 (0) 'MS-DOS'\n+234C34 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232C50 Compression Method    0008 (8) 'Deflated'\n-232C52 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232C56 CRC                   AF46E40B (2940658699)\n-232C5A Compressed Size       000005EE (1518)\n-232C5E Uncompressed Size     00001556 (5462)\n-232C62 Filename Length       0043 (67)\n-232C64 Extra Length          0000 (0)\n-232C66 Comment Length        0000 (0)\n-232C68 Disk Start            0000 (0)\n-232C6A Int File Attributes   0000 (0)\n+234C36 Compression Method    0008 (8) 'Deflated'\n+234C38 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234C3C CRC                   00000000 (0)\n+234C40 Compressed Size       00000002 (2)\n+234C44 Uncompressed Size     00000000 (0)\n+234C48 Filename Length       001D (29)\n+234C4A Extra Length          0000 (0)\n+234C4C Comment Length        0000 (0)\n+234C4E Disk Start            0000 (0)\n+234C50 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232C6C Ext File Attributes   00000000 (0)\n-232C70 Local Header Offset   0016F651 (1504849)\n-232C74 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234C52 Ext File Attributes   00000000 (0)\n+234C56 Local Header Offset   0018041E (1573918)\n+234C5A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232C74: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234C5A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232CB7 CENTRAL HEADER #1382  02014B50 (33639248)\n-232CBB Created Zip Spec      14 (20) '2.0'\n-232CBC Created OS            00 (0) 'MS-DOS'\n-232CBD Extract Zip Spec      14 (20) '2.0'\n-232CBE Extract OS            00 (0) 'MS-DOS'\n-232CBF General Purpose Flag  0808 (2056)\n+234C77 CENTRAL HEADER #1382  02014B50 (33639248)\n+234C7B Created Zip Spec      14 (20) '2.0'\n+234C7C Created OS            00 (0) 'MS-DOS'\n+234C7D Extract Zip Spec      14 (20) '2.0'\n+234C7E Extract OS            00 (0) 'MS-DOS'\n+234C7F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232CC1 Compression Method    0008 (8) 'Deflated'\n-232CC3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232CC7 CRC                   00000000 (0)\n-232CCB Compressed Size       00000002 (2)\n-232CCF Uncompressed Size     00000000 (0)\n-232CD3 Filename Length       0024 (36)\n-232CD5 Extra Length          0000 (0)\n-232CD7 Comment Length        0000 (0)\n-232CD9 Disk Start            0000 (0)\n-232CDB Int File Attributes   0000 (0)\n+234C81 Compression Method    0008 (8) 'Deflated'\n+234C83 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234C87 CRC                   FE44AB9A (4265913242)\n+234C8B Compressed Size       00000237 (567)\n+234C8F Uncompressed Size     000003F7 (1015)\n+234C93 Filename Length       002D (45)\n+234C95 Extra Length          0000 (0)\n+234C97 Comment Length        0000 (0)\n+234C99 Disk Start            0000 (0)\n+234C9B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232CDD Ext File Attributes   00000000 (0)\n-232CE1 Local Header Offset   0016FCB0 (1506480)\n-232CE5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234C9D Ext File Attributes   00000000 (0)\n+234CA1 Local Header Offset   0018046B (1573995)\n+234CA5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232CE5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234CA5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232D09 CENTRAL HEADER #1383  02014B50 (33639248)\n-232D0D Created Zip Spec      14 (20) '2.0'\n-232D0E Created OS            00 (0) 'MS-DOS'\n-232D0F Extract Zip Spec      14 (20) '2.0'\n-232D10 Extract OS            00 (0) 'MS-DOS'\n-232D11 General Purpose Flag  0808 (2056)\n+234CD2 CENTRAL HEADER #1383  02014B50 (33639248)\n+234CD6 Created Zip Spec      14 (20) '2.0'\n+234CD7 Created OS            00 (0) 'MS-DOS'\n+234CD8 Extract Zip Spec      14 (20) '2.0'\n+234CD9 Extract OS            00 (0) 'MS-DOS'\n+234CDA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232D13 Compression Method    0008 (8) 'Deflated'\n-232D15 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232D19 CRC                   CCE4DF99 (3437551513)\n-232D1D Compressed Size       00000235 (565)\n-232D21 Uncompressed Size     000003E1 (993)\n-232D25 Filename Length       0036 (54)\n-232D27 Extra Length          0000 (0)\n-232D29 Comment Length        0000 (0)\n-232D2B Disk Start            0000 (0)\n-232D2D Int File Attributes   0000 (0)\n+234CDC Compression Method    0008 (8) 'Deflated'\n+234CDE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234CE2 CRC                   C783A617 (3347293719)\n+234CE6 Compressed Size       0000030B (779)\n+234CEA Uncompressed Size     00000880 (2176)\n+234CEE Filename Length       0030 (48)\n+234CF0 Extra Length          0000 (0)\n+234CF2 Comment Length        0000 (0)\n+234CF4 Disk Start            0000 (0)\n+234CF6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232D2F Ext File Attributes   00000000 (0)\n-232D33 Local Header Offset   0016FD04 (1506564)\n-232D37 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234CF8 Ext File Attributes   00000000 (0)\n+234CFC Local Header Offset   001806FD (1574653)\n+234D00 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232D37: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234D00: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232D6D CENTRAL HEADER #1384  02014B50 (33639248)\n-232D71 Created Zip Spec      14 (20) '2.0'\n-232D72 Created OS            00 (0) 'MS-DOS'\n-232D73 Extract Zip Spec      14 (20) '2.0'\n-232D74 Extract OS            00 (0) 'MS-DOS'\n-232D75 General Purpose Flag  0808 (2056)\n+234D30 CENTRAL HEADER #1384  02014B50 (33639248)\n+234D34 Created Zip Spec      14 (20) '2.0'\n+234D35 Created OS            00 (0) 'MS-DOS'\n+234D36 Extract Zip Spec      14 (20) '2.0'\n+234D37 Extract OS            00 (0) 'MS-DOS'\n+234D38 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232D77 Compression Method    0008 (8) 'Deflated'\n-232D79 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232D7D CRC                   F48F4A7B (4103031419)\n-232D81 Compressed Size       0000023D (573)\n-232D85 Uncompressed Size     000003CF (975)\n-232D89 Filename Length       0035 (53)\n-232D8B Extra Length          0000 (0)\n-232D8D Comment Length        0000 (0)\n-232D8F Disk Start            0000 (0)\n-232D91 Int File Attributes   0000 (0)\n+234D3A Compression Method    0008 (8) 'Deflated'\n+234D3C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234D40 CRC                   F2C44151 (4072948049)\n+234D44 Compressed Size       00000252 (594)\n+234D48 Uncompressed Size     000004A6 (1190)\n+234D4C Filename Length       0037 (55)\n+234D4E Extra Length          0000 (0)\n+234D50 Comment Length        0000 (0)\n+234D52 Disk Start            0000 (0)\n+234D54 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232D93 Ext File Attributes   00000000 (0)\n-232D97 Local Header Offset   0016FF9D (1507229)\n-232D9B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234D56 Ext File Attributes   00000000 (0)\n+234D5A Local Header Offset   00180A66 (1575526)\n+234D5E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232D9B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234D5E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232DD0 CENTRAL HEADER #1385  02014B50 (33639248)\n-232DD4 Created Zip Spec      14 (20) '2.0'\n-232DD5 Created OS            00 (0) 'MS-DOS'\n-232DD6 Extract Zip Spec      14 (20) '2.0'\n-232DD7 Extract OS            00 (0) 'MS-DOS'\n-232DD8 General Purpose Flag  0808 (2056)\n+234D95 CENTRAL HEADER #1385  02014B50 (33639248)\n+234D99 Created Zip Spec      14 (20) '2.0'\n+234D9A Created OS            00 (0) 'MS-DOS'\n+234D9B Extract Zip Spec      14 (20) '2.0'\n+234D9C Extract OS            00 (0) 'MS-DOS'\n+234D9D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232DDA Compression Method    0008 (8) 'Deflated'\n-232DDC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232DE0 CRC                   85A56629 (2242209321)\n-232DE4 Compressed Size       00000366 (870)\n-232DE8 Uncompressed Size     000007E5 (2021)\n-232DEC Filename Length       0032 (50)\n-232DEE Extra Length          0000 (0)\n-232DF0 Comment Length        0000 (0)\n-232DF2 Disk Start            0000 (0)\n-232DF4 Int File Attributes   0000 (0)\n+234D9F Compression Method    0008 (8) 'Deflated'\n+234DA1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234DA5 CRC                   D40E78F4 (3557718260)\n+234DA9 Compressed Size       00000262 (610)\n+234DAD Uncompressed Size     000004A8 (1192)\n+234DB1 Filename Length       0031 (49)\n+234DB3 Extra Length          0000 (0)\n+234DB5 Comment Length        0000 (0)\n+234DB7 Disk Start            0000 (0)\n+234DB9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232DF6 Ext File Attributes   00000000 (0)\n-232DFA Local Header Offset   0017023D (1507901)\n-232DFE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234DBB Ext File Attributes   00000000 (0)\n+234DBF Local Header Offset   00180D1D (1576221)\n+234DC3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232DFE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234DC3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232E30 CENTRAL HEADER #1386  02014B50 (33639248)\n-232E34 Created Zip Spec      14 (20) '2.0'\n-232E35 Created OS            00 (0) 'MS-DOS'\n-232E36 Extract Zip Spec      14 (20) '2.0'\n-232E37 Extract OS            00 (0) 'MS-DOS'\n-232E38 General Purpose Flag  0808 (2056)\n+234DF4 CENTRAL HEADER #1386  02014B50 (33639248)\n+234DF8 Created Zip Spec      14 (20) '2.0'\n+234DF9 Created OS            00 (0) 'MS-DOS'\n+234DFA Extract Zip Spec      14 (20) '2.0'\n+234DFB Extract OS            00 (0) 'MS-DOS'\n+234DFC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232E3A Compression Method    0008 (8) 'Deflated'\n-232E3C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232E40 CRC                   CB7D1A2B (3413973547)\n-232E44 Compressed Size       00000253 (595)\n-232E48 Uncompressed Size     00000422 (1058)\n-232E4C Filename Length       0036 (54)\n-232E4E Extra Length          0000 (0)\n-232E50 Comment Length        0000 (0)\n-232E52 Disk Start            0000 (0)\n-232E54 Int File Attributes   0000 (0)\n+234DFE Compression Method    0008 (8) 'Deflated'\n+234E00 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234E04 CRC                   2A63E263 (711189091)\n+234E08 Compressed Size       000002D1 (721)\n+234E0C Uncompressed Size     0000061D (1565)\n+234E10 Filename Length       0038 (56)\n+234E12 Extra Length          0000 (0)\n+234E14 Comment Length        0000 (0)\n+234E16 Disk Start            0000 (0)\n+234E18 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232E56 Ext File Attributes   00000000 (0)\n-232E5A Local Header Offset   00170603 (1508867)\n-232E5E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234E1A Ext File Attributes   00000000 (0)\n+234E1E Local Header Offset   00180FDE (1576926)\n+234E22 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232E5E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234E22: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232E94 CENTRAL HEADER #1387  02014B50 (33639248)\n-232E98 Created Zip Spec      14 (20) '2.0'\n-232E99 Created OS            00 (0) 'MS-DOS'\n-232E9A Extract Zip Spec      14 (20) '2.0'\n-232E9B Extract OS            00 (0) 'MS-DOS'\n-232E9C General Purpose Flag  0808 (2056)\n+234E5A CENTRAL HEADER #1387  02014B50 (33639248)\n+234E5E Created Zip Spec      14 (20) '2.0'\n+234E5F Created OS            00 (0) 'MS-DOS'\n+234E60 Extract Zip Spec      14 (20) '2.0'\n+234E61 Extract OS            00 (0) 'MS-DOS'\n+234E62 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232E9E Compression Method    0008 (8) 'Deflated'\n-232EA0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232EA4 CRC                   3C17796F (1008171375)\n-232EA8 Compressed Size       00000323 (803)\n-232EAC Uncompressed Size     000007F7 (2039)\n-232EB0 Filename Length       0038 (56)\n-232EB2 Extra Length          0000 (0)\n-232EB4 Comment Length        0000 (0)\n-232EB6 Disk Start            0000 (0)\n-232EB8 Int File Attributes   0000 (0)\n+234E64 Compression Method    0008 (8) 'Deflated'\n+234E66 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234E6A CRC                   D473D979 (3564362105)\n+234E6E Compressed Size       0000022A (554)\n+234E72 Uncompressed Size     00000400 (1024)\n+234E76 Filename Length       0038 (56)\n+234E78 Extra Length          0000 (0)\n+234E7A Comment Length        0000 (0)\n+234E7C Disk Start            0000 (0)\n+234E7E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232EBA Ext File Attributes   00000000 (0)\n-232EBE Local Header Offset   001708BA (1509562)\n-232EC2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234E80 Ext File Attributes   00000000 (0)\n+234E84 Local Header Offset   00181315 (1577749)\n+234E88 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232EC2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234E88: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232EFA CENTRAL HEADER #1388  02014B50 (33639248)\n-232EFE Created Zip Spec      14 (20) '2.0'\n-232EFF Created OS            00 (0) 'MS-DOS'\n-232F00 Extract Zip Spec      14 (20) '2.0'\n-232F01 Extract OS            00 (0) 'MS-DOS'\n-232F02 General Purpose Flag  0808 (2056)\n+234EC0 CENTRAL HEADER #1388  02014B50 (33639248)\n+234EC4 Created Zip Spec      14 (20) '2.0'\n+234EC5 Created OS            00 (0) 'MS-DOS'\n+234EC6 Extract Zip Spec      14 (20) '2.0'\n+234EC7 Extract OS            00 (0) 'MS-DOS'\n+234EC8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232F04 Compression Method    0008 (8) 'Deflated'\n-232F06 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232F0A CRC                   18C4C330 (415548208)\n-232F0E Compressed Size       00000274 (628)\n-232F12 Uncompressed Size     000004A5 (1189)\n-232F16 Filename Length       003D (61)\n-232F18 Extra Length          0000 (0)\n-232F1A Comment Length        0000 (0)\n-232F1C Disk Start            0000 (0)\n-232F1E Int File Attributes   0000 (0)\n+234ECA Compression Method    0008 (8) 'Deflated'\n+234ECC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234ED0 CRC                   00000000 (0)\n+234ED4 Compressed Size       00000002 (2)\n+234ED8 Uncompressed Size     00000000 (0)\n+234EDC Filename Length       0028 (40)\n+234EDE Extra Length          0000 (0)\n+234EE0 Comment Length        0000 (0)\n+234EE2 Disk Start            0000 (0)\n+234EE4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232F20 Ext File Attributes   00000000 (0)\n-232F24 Local Header Offset   00170C43 (1510467)\n-232F28 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234EE6 Ext File Attributes   00000000 (0)\n+234EEA Local Header Offset   001815A5 (1578405)\n+234EEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232F28: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234EEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232F65 CENTRAL HEADER #1389  02014B50 (33639248)\n-232F69 Created Zip Spec      14 (20) '2.0'\n-232F6A Created OS            00 (0) 'MS-DOS'\n-232F6B Extract Zip Spec      14 (20) '2.0'\n-232F6C Extract OS            00 (0) 'MS-DOS'\n-232F6D General Purpose Flag  0808 (2056)\n+234F16 CENTRAL HEADER #1389  02014B50 (33639248)\n+234F1A Created Zip Spec      14 (20) '2.0'\n+234F1B Created OS            00 (0) 'MS-DOS'\n+234F1C Extract Zip Spec      14 (20) '2.0'\n+234F1D Extract OS            00 (0) 'MS-DOS'\n+234F1E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232F6F Compression Method    0008 (8) 'Deflated'\n-232F71 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232F75 CRC                   00000000 (0)\n-232F79 Compressed Size       00000002 (2)\n-232F7D Uncompressed Size     00000000 (0)\n-232F81 Filename Length       002C (44)\n-232F83 Extra Length          0000 (0)\n-232F85 Comment Length        0000 (0)\n-232F87 Disk Start            0000 (0)\n-232F89 Int File Attributes   0000 (0)\n+234F20 Compression Method    0008 (8) 'Deflated'\n+234F22 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234F26 CRC                   45D6532E (1171673902)\n+234F2A Compressed Size       000002C2 (706)\n+234F2E Uncompressed Size     00000647 (1607)\n+234F32 Filename Length       0030 (48)\n+234F34 Extra Length          0000 (0)\n+234F36 Comment Length        0000 (0)\n+234F38 Disk Start            0000 (0)\n+234F3A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232F8B Ext File Attributes   00000000 (0)\n-232F8F Local Header Offset   00170F22 (1511202)\n-232F93 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234F3C Ext File Attributes   00000000 (0)\n+234F40 Local Header Offset   001815FD (1578493)\n+234F44 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232F93: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234F44: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-232FBF CENTRAL HEADER #1390  02014B50 (33639248)\n-232FC3 Created Zip Spec      14 (20) '2.0'\n-232FC4 Created OS            00 (0) 'MS-DOS'\n-232FC5 Extract Zip Spec      14 (20) '2.0'\n-232FC6 Extract OS            00 (0) 'MS-DOS'\n-232FC7 General Purpose Flag  0808 (2056)\n+234F74 CENTRAL HEADER #1390  02014B50 (33639248)\n+234F78 Created Zip Spec      14 (20) '2.0'\n+234F79 Created OS            00 (0) 'MS-DOS'\n+234F7A Extract Zip Spec      14 (20) '2.0'\n+234F7B Extract OS            00 (0) 'MS-DOS'\n+234F7C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-232FC9 Compression Method    0008 (8) 'Deflated'\n-232FCB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-232FCF CRC                   C08A2F01 (3230281473)\n-232FD3 Compressed Size       00000DA3 (3491)\n-232FD7 Uncompressed Size     000042B4 (17076)\n-232FDB Filename Length       0047 (71)\n-232FDD Extra Length          0000 (0)\n-232FDF Comment Length        0000 (0)\n-232FE1 Disk Start            0000 (0)\n-232FE3 Int File Attributes   0000 (0)\n+234F7E Compression Method    0008 (8) 'Deflated'\n+234F80 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234F84 CRC                   00000000 (0)\n+234F88 Compressed Size       00000002 (2)\n+234F8C Uncompressed Size     00000000 (0)\n+234F90 Filename Length       0025 (37)\n+234F92 Extra Length          0000 (0)\n+234F94 Comment Length        0000 (0)\n+234F96 Disk Start            0000 (0)\n+234F98 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-232FE5 Ext File Attributes   00000000 (0)\n-232FE9 Local Header Offset   00170F7E (1511294)\n-232FED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234F9A Ext File Attributes   00000000 (0)\n+234F9E Local Header Offset   0018191D (1579293)\n+234FA2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x232FED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234FA2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233034 CENTRAL HEADER #1391  02014B50 (33639248)\n-233038 Created Zip Spec      14 (20) '2.0'\n-233039 Created OS            00 (0) 'MS-DOS'\n-23303A Extract Zip Spec      14 (20) '2.0'\n-23303B Extract OS            00 (0) 'MS-DOS'\n-23303C General Purpose Flag  0808 (2056)\n+234FC7 CENTRAL HEADER #1391  02014B50 (33639248)\n+234FCB Created Zip Spec      14 (20) '2.0'\n+234FCC Created OS            00 (0) 'MS-DOS'\n+234FCD Extract Zip Spec      14 (20) '2.0'\n+234FCE Extract OS            00 (0) 'MS-DOS'\n+234FCF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23303E Compression Method    0008 (8) 'Deflated'\n-233040 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233044 CRC                   7A12603D (2048024637)\n-233048 Compressed Size       00000271 (625)\n-23304C Uncompressed Size     000004FC (1276)\n-233050 Filename Length       004C (76)\n-233052 Extra Length          0000 (0)\n-233054 Comment Length        0000 (0)\n-233056 Disk Start            0000 (0)\n-233058 Int File Attributes   0000 (0)\n+234FD1 Compression Method    0008 (8) 'Deflated'\n+234FD3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+234FD7 CRC                   D812ECFA (3625118970)\n+234FDB Compressed Size       000004A3 (1187)\n+234FDF Uncompressed Size     00000F93 (3987)\n+234FE3 Filename Length       003C (60)\n+234FE5 Extra Length          0000 (0)\n+234FE7 Comment Length        0000 (0)\n+234FE9 Disk Start            0000 (0)\n+234FEB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23305A Ext File Attributes   00000000 (0)\n-23305E Local Header Offset   00171D96 (1514902)\n-233062 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+234FED Ext File Attributes   00000000 (0)\n+234FF1 Local Header Offset   00181972 (1579378)\n+234FF5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233062: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x234FF5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2330AE CENTRAL HEADER #1392  02014B50 (33639248)\n-2330B2 Created Zip Spec      14 (20) '2.0'\n-2330B3 Created OS            00 (0) 'MS-DOS'\n-2330B4 Extract Zip Spec      14 (20) '2.0'\n-2330B5 Extract OS            00 (0) 'MS-DOS'\n-2330B6 General Purpose Flag  0808 (2056)\n+235031 CENTRAL HEADER #1392  02014B50 (33639248)\n+235035 Created Zip Spec      14 (20) '2.0'\n+235036 Created OS            00 (0) 'MS-DOS'\n+235037 Extract Zip Spec      14 (20) '2.0'\n+235038 Extract OS            00 (0) 'MS-DOS'\n+235039 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2330B8 Compression Method    0008 (8) 'Deflated'\n-2330BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2330BE CRC                   00000000 (0)\n-2330C2 Compressed Size       00000002 (2)\n-2330C6 Uncompressed Size     00000000 (0)\n-2330CA Filename Length       002C (44)\n-2330CC Extra Length          0000 (0)\n-2330CE Comment Length        0000 (0)\n-2330D0 Disk Start            0000 (0)\n-2330D2 Int File Attributes   0000 (0)\n+23503B Compression Method    0008 (8) 'Deflated'\n+23503D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235041 CRC                   E1096065 (3775488101)\n+235045 Compressed Size       0000030F (783)\n+235049 Uncompressed Size     000006BD (1725)\n+23504D Filename Length       003E (62)\n+23504F Extra Length          0000 (0)\n+235051 Comment Length        0000 (0)\n+235053 Disk Start            0000 (0)\n+235055 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2330D4 Ext File Attributes   00000000 (0)\n-2330D8 Local Header Offset   00172081 (1515649)\n-2330DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235057 Ext File Attributes   00000000 (0)\n+23505B Local Header Offset   00181E7F (1580671)\n+23505F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2330DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23505F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233108 CENTRAL HEADER #1393  02014B50 (33639248)\n-23310C Created Zip Spec      14 (20) '2.0'\n-23310D Created OS            00 (0) 'MS-DOS'\n-23310E Extract Zip Spec      14 (20) '2.0'\n-23310F Extract OS            00 (0) 'MS-DOS'\n-233110 General Purpose Flag  0808 (2056)\n+23509D CENTRAL HEADER #1393  02014B50 (33639248)\n+2350A1 Created Zip Spec      14 (20) '2.0'\n+2350A2 Created OS            00 (0) 'MS-DOS'\n+2350A3 Extract Zip Spec      14 (20) '2.0'\n+2350A4 Extract OS            00 (0) 'MS-DOS'\n+2350A5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233112 Compression Method    0008 (8) 'Deflated'\n-233114 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233118 CRC                   72360194 (1916141972)\n-23311C Compressed Size       0000070C (1804)\n-233120 Uncompressed Size     00001FE6 (8166)\n-233124 Filename Length       0048 (72)\n-233126 Extra Length          0000 (0)\n-233128 Comment Length        0000 (0)\n-23312A Disk Start            0000 (0)\n-23312C Int File Attributes   0000 (0)\n+2350A7 Compression Method    0008 (8) 'Deflated'\n+2350A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2350AD CRC                   00000000 (0)\n+2350B1 Compressed Size       00000002 (2)\n+2350B5 Uncompressed Size     00000000 (0)\n+2350B9 Filename Length       0022 (34)\n+2350BB Extra Length          0000 (0)\n+2350BD Comment Length        0000 (0)\n+2350BF Disk Start            0000 (0)\n+2350C1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23312E Ext File Attributes   00000000 (0)\n-233132 Local Header Offset   001720DD (1515741)\n-233136 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2350C3 Ext File Attributes   00000000 (0)\n+2350C7 Local Header Offset   001821FA (1581562)\n+2350CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233136: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2350CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23317E CENTRAL HEADER #1394  02014B50 (33639248)\n-233182 Created Zip Spec      14 (20) '2.0'\n-233183 Created OS            00 (0) 'MS-DOS'\n-233184 Extract Zip Spec      14 (20) '2.0'\n-233185 Extract OS            00 (0) 'MS-DOS'\n-233186 General Purpose Flag  0808 (2056)\n+2350ED CENTRAL HEADER #1394  02014B50 (33639248)\n+2350F1 Created Zip Spec      14 (20) '2.0'\n+2350F2 Created OS            00 (0) 'MS-DOS'\n+2350F3 Extract Zip Spec      14 (20) '2.0'\n+2350F4 Extract OS            00 (0) 'MS-DOS'\n+2350F5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233188 Compression Method    0008 (8) 'Deflated'\n-23318A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23318E CRC                   B6B21903 (3065125123)\n-233192 Compressed Size       000007CC (1996)\n-233196 Uncompressed Size     00001B80 (7040)\n-23319A Filename Length       004D (77)\n-23319C Extra Length          0000 (0)\n-23319E Comment Length        0000 (0)\n-2331A0 Disk Start            0000 (0)\n-2331A2 Int File Attributes   0000 (0)\n+2350F7 Compression Method    0008 (8) 'Deflated'\n+2350F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2350FD CRC                   86EEED41 (2263805249)\n+235101 Compressed Size       000004F4 (1268)\n+235105 Uncompressed Size     00000E84 (3716)\n+235109 Filename Length       002B (43)\n+23510B Extra Length          0000 (0)\n+23510D Comment Length        0000 (0)\n+23510F Disk Start            0000 (0)\n+235111 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2331A4 Ext File Attributes   00000000 (0)\n-2331A8 Local Header Offset   0017285F (1517663)\n-2331AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235113 Ext File Attributes   00000000 (0)\n+235117 Local Header Offset   0018224C (1581644)\n+23511B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2331AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23511B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2331F9 CENTRAL HEADER #1395  02014B50 (33639248)\n-2331FD Created Zip Spec      14 (20) '2.0'\n-2331FE Created OS            00 (0) 'MS-DOS'\n-2331FF Extract Zip Spec      14 (20) '2.0'\n-233200 Extract OS            00 (0) 'MS-DOS'\n-233201 General Purpose Flag  0808 (2056)\n+235146 CENTRAL HEADER #1395  02014B50 (33639248)\n+23514A Created Zip Spec      14 (20) '2.0'\n+23514B Created OS            00 (0) 'MS-DOS'\n+23514C Extract Zip Spec      14 (20) '2.0'\n+23514D Extract OS            00 (0) 'MS-DOS'\n+23514E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233203 Compression Method    0008 (8) 'Deflated'\n-233205 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233209 CRC                   00000000 (0)\n-23320D Compressed Size       00000002 (2)\n-233211 Uncompressed Size     00000000 (0)\n-233215 Filename Length       0020 (32)\n-233217 Extra Length          0000 (0)\n-233219 Comment Length        0000 (0)\n-23321B Disk Start            0000 (0)\n-23321D Int File Attributes   0000 (0)\n+235150 Compression Method    0008 (8) 'Deflated'\n+235152 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235156 CRC                   E32E7BA0 (3811474336)\n+23515A Compressed Size       00000445 (1093)\n+23515E Uncompressed Size     00000D90 (3472)\n+235162 Filename Length       0029 (41)\n+235164 Extra Length          0000 (0)\n+235166 Comment Length        0000 (0)\n+235168 Disk Start            0000 (0)\n+23516A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23321F Ext File Attributes   00000000 (0)\n-233223 Local Header Offset   001730A6 (1519782)\n-233227 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23516C Ext File Attributes   00000000 (0)\n+235170 Local Header Offset   00182799 (1583001)\n+235174 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233227: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235174: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233247 CENTRAL HEADER #1396  02014B50 (33639248)\n-23324B Created Zip Spec      14 (20) '2.0'\n-23324C Created OS            00 (0) 'MS-DOS'\n-23324D Extract Zip Spec      14 (20) '2.0'\n-23324E Extract OS            00 (0) 'MS-DOS'\n-23324F General Purpose Flag  0808 (2056)\n+23519D CENTRAL HEADER #1396  02014B50 (33639248)\n+2351A1 Created Zip Spec      14 (20) '2.0'\n+2351A2 Created OS            00 (0) 'MS-DOS'\n+2351A3 Extract Zip Spec      14 (20) '2.0'\n+2351A4 Extract OS            00 (0) 'MS-DOS'\n+2351A5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233251 Compression Method    0008 (8) 'Deflated'\n-233253 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233257 CRC                   3CD43B28 (1020541736)\n-23325B Compressed Size       00001073 (4211)\n-23325F Uncompressed Size     00004EA7 (20135)\n-233263 Filename Length       0032 (50)\n-233265 Extra Length          0000 (0)\n-233267 Comment Length        0000 (0)\n-233269 Disk Start            0000 (0)\n-23326B Int File Attributes   0000 (0)\n+2351A7 Compression Method    0008 (8) 'Deflated'\n+2351A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2351AD CRC                   C56E8E67 (3312356967)\n+2351B1 Compressed Size       000004B2 (1202)\n+2351B5 Uncompressed Size     00000D52 (3410)\n+2351B9 Filename Length       002E (46)\n+2351BB Extra Length          0000 (0)\n+2351BD Comment Length        0000 (0)\n+2351BF Disk Start            0000 (0)\n+2351C1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23326D Ext File Attributes   00000000 (0)\n-233271 Local Header Offset   001730F6 (1519862)\n-233275 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2351C3 Ext File Attributes   00000000 (0)\n+2351C7 Local Header Offset   00182C35 (1584181)\n+2351CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233275: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2351CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2332A7 CENTRAL HEADER #1397  02014B50 (33639248)\n-2332AB Created Zip Spec      14 (20) '2.0'\n-2332AC Created OS            00 (0) 'MS-DOS'\n-2332AD Extract Zip Spec      14 (20) '2.0'\n-2332AE Extract OS            00 (0) 'MS-DOS'\n-2332AF General Purpose Flag  0808 (2056)\n+2351F9 CENTRAL HEADER #1397  02014B50 (33639248)\n+2351FD Created Zip Spec      14 (20) '2.0'\n+2351FE Created OS            00 (0) 'MS-DOS'\n+2351FF Extract Zip Spec      14 (20) '2.0'\n+235200 Extract OS            00 (0) 'MS-DOS'\n+235201 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2332B1 Compression Method    0008 (8) 'Deflated'\n-2332B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2332B7 CRC                   DA82F0B1 (3666014385)\n-2332BB Compressed Size       0000026B (619)\n-2332BF Uncompressed Size     000004D7 (1239)\n-2332C3 Filename Length       0039 (57)\n-2332C5 Extra Length          0000 (0)\n-2332C7 Comment Length        0000 (0)\n-2332C9 Disk Start            0000 (0)\n-2332CB Int File Attributes   0000 (0)\n+235203 Compression Method    0008 (8) 'Deflated'\n+235205 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235209 CRC                   A95B3402 (2841326594)\n+23520D Compressed Size       000004BB (1211)\n+235211 Uncompressed Size     00000D85 (3461)\n+235215 Filename Length       002D (45)\n+235217 Extra Length          0000 (0)\n+235219 Comment Length        0000 (0)\n+23521B Disk Start            0000 (0)\n+23521D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2332CD Ext File Attributes   00000000 (0)\n-2332D1 Local Header Offset   001741C9 (1524169)\n-2332D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23521F Ext File Attributes   00000000 (0)\n+235223 Local Header Offset   00183143 (1585475)\n+235227 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2332D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235227: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23330E CENTRAL HEADER #1398  02014B50 (33639248)\n-233312 Created Zip Spec      14 (20) '2.0'\n-233313 Created OS            00 (0) 'MS-DOS'\n-233314 Extract Zip Spec      14 (20) '2.0'\n-233315 Extract OS            00 (0) 'MS-DOS'\n-233316 General Purpose Flag  0808 (2056)\n+235254 CENTRAL HEADER #1398  02014B50 (33639248)\n+235258 Created Zip Spec      14 (20) '2.0'\n+235259 Created OS            00 (0) 'MS-DOS'\n+23525A Extract Zip Spec      14 (20) '2.0'\n+23525B Extract OS            00 (0) 'MS-DOS'\n+23525C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233318 Compression Method    0008 (8) 'Deflated'\n-23331A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23331E CRC                   34AAC091 (883605649)\n-233322 Compressed Size       000002FD (765)\n-233326 Uncompressed Size     00000742 (1858)\n-23332A Filename Length       003A (58)\n-23332C Extra Length          0000 (0)\n-23332E Comment Length        0000 (0)\n-233330 Disk Start            0000 (0)\n-233332 Int File Attributes   0000 (0)\n+23525E Compression Method    0008 (8) 'Deflated'\n+235260 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235264 CRC                   E56C2CA8 (3849071784)\n+235268 Compressed Size       0000049C (1180)\n+23526C Uncompressed Size     00000B6F (2927)\n+235270 Filename Length       0036 (54)\n+235272 Extra Length          0000 (0)\n+235274 Comment Length        0000 (0)\n+235276 Disk Start            0000 (0)\n+235278 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233334 Ext File Attributes   00000000 (0)\n-233338 Local Header Offset   0017449B (1524891)\n-23333C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23527A Ext File Attributes   00000000 (0)\n+23527E Local Header Offset   00183659 (1586777)\n+235282 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23333C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235282: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233376 CENTRAL HEADER #1399  02014B50 (33639248)\n-23337A Created Zip Spec      14 (20) '2.0'\n-23337B Created OS            00 (0) 'MS-DOS'\n-23337C Extract Zip Spec      14 (20) '2.0'\n-23337D Extract OS            00 (0) 'MS-DOS'\n-23337E General Purpose Flag  0808 (2056)\n+2352B8 CENTRAL HEADER #1399  02014B50 (33639248)\n+2352BC Created Zip Spec      14 (20) '2.0'\n+2352BD Created OS            00 (0) 'MS-DOS'\n+2352BE Extract Zip Spec      14 (20) '2.0'\n+2352BF Extract OS            00 (0) 'MS-DOS'\n+2352C0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233380 Compression Method    0008 (8) 'Deflated'\n-233382 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233386 CRC                   70BBABEF (1891347439)\n-23338A Compressed Size       00000263 (611)\n-23338E Uncompressed Size     000004CE (1230)\n-233392 Filename Length       0041 (65)\n-233394 Extra Length          0000 (0)\n-233396 Comment Length        0000 (0)\n-233398 Disk Start            0000 (0)\n-23339A Int File Attributes   0000 (0)\n+2352C2 Compression Method    0008 (8) 'Deflated'\n+2352C4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2352C8 CRC                   AADA64B2 (2866439346)\n+2352CC Compressed Size       0000028D (653)\n+2352D0 Uncompressed Size     00000519 (1305)\n+2352D4 Filename Length       002B (43)\n+2352D6 Extra Length          0000 (0)\n+2352D8 Comment Length        0000 (0)\n+2352DA Disk Start            0000 (0)\n+2352DC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23339C Ext File Attributes   00000000 (0)\n-2333A0 Local Header Offset   00174800 (1525760)\n-2333A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2352DE Ext File Attributes   00000000 (0)\n+2352E2 Local Header Offset   00183B59 (1588057)\n+2352E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2333A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2352E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2333E5 CENTRAL HEADER #1400  02014B50 (33639248)\n-2333E9 Created Zip Spec      14 (20) '2.0'\n-2333EA Created OS            00 (0) 'MS-DOS'\n-2333EB Extract Zip Spec      14 (20) '2.0'\n-2333EC Extract OS            00 (0) 'MS-DOS'\n-2333ED General Purpose Flag  0808 (2056)\n+235311 CENTRAL HEADER #1400  02014B50 (33639248)\n+235315 Created Zip Spec      14 (20) '2.0'\n+235316 Created OS            00 (0) 'MS-DOS'\n+235317 Extract Zip Spec      14 (20) '2.0'\n+235318 Extract OS            00 (0) 'MS-DOS'\n+235319 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2333EF Compression Method    0008 (8) 'Deflated'\n-2333F1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2333F5 CRC                   00000000 (0)\n-2333F9 Compressed Size       00000002 (2)\n-2333FD Uncompressed Size     00000000 (0)\n-233401 Filename Length       0021 (33)\n-233403 Extra Length          0000 (0)\n-233405 Comment Length        0000 (0)\n-233407 Disk Start            0000 (0)\n-233409 Int File Attributes   0000 (0)\n+23531B Compression Method    0008 (8) 'Deflated'\n+23531D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235321 CRC                   DC712B5A (3698404186)\n+235325 Compressed Size       000005F1 (1521)\n+235329 Uncompressed Size     000010E3 (4323)\n+23532D Filename Length       002C (44)\n+23532F Extra Length          0000 (0)\n+235331 Comment Length        0000 (0)\n+235333 Disk Start            0000 (0)\n+235335 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23340B Ext File Attributes   00000000 (0)\n-23340F Local Header Offset   00174AD2 (1526482)\n-233413 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235337 Ext File Attributes   00000000 (0)\n+23533B Local Header Offset   00183E3F (1588799)\n+23533F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233413: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23533F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233434 CENTRAL HEADER #1401  02014B50 (33639248)\n-233438 Created Zip Spec      14 (20) '2.0'\n-233439 Created OS            00 (0) 'MS-DOS'\n-23343A Extract Zip Spec      14 (20) '2.0'\n-23343B Extract OS            00 (0) 'MS-DOS'\n-23343C General Purpose Flag  0808 (2056)\n+23536B CENTRAL HEADER #1401  02014B50 (33639248)\n+23536F Created Zip Spec      14 (20) '2.0'\n+235370 Created OS            00 (0) 'MS-DOS'\n+235371 Extract Zip Spec      14 (20) '2.0'\n+235372 Extract OS            00 (0) 'MS-DOS'\n+235373 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23343E Compression Method    0008 (8) 'Deflated'\n-233440 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233444 CRC                   DD92E439 (3717391417)\n-233448 Compressed Size       00000315 (789)\n-23344C Uncompressed Size     00000641 (1601)\n-233450 Filename Length       003C (60)\n-233452 Extra Length          0000 (0)\n-233454 Comment Length        0000 (0)\n-233456 Disk Start            0000 (0)\n-233458 Int File Attributes   0000 (0)\n+235375 Compression Method    0008 (8) 'Deflated'\n+235377 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23537B CRC                   1F2281E7 (522355175)\n+23537F Compressed Size       000002CB (715)\n+235383 Uncompressed Size     00000625 (1573)\n+235387 Filename Length       002E (46)\n+235389 Extra Length          0000 (0)\n+23538B Comment Length        0000 (0)\n+23538D Disk Start            0000 (0)\n+23538F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23345A Ext File Attributes   00000000 (0)\n-23345E Local Header Offset   00174B23 (1526563)\n-233462 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235391 Ext File Attributes   00000000 (0)\n+235395 Local Header Offset   0018448A (1590410)\n+235399 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233462: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235399: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23349E CENTRAL HEADER #1402  02014B50 (33639248)\n-2334A2 Created Zip Spec      14 (20) '2.0'\n-2334A3 Created OS            00 (0) 'MS-DOS'\n-2334A4 Extract Zip Spec      14 (20) '2.0'\n-2334A5 Extract OS            00 (0) 'MS-DOS'\n-2334A6 General Purpose Flag  0808 (2056)\n+2353C7 CENTRAL HEADER #1402  02014B50 (33639248)\n+2353CB Created Zip Spec      14 (20) '2.0'\n+2353CC Created OS            00 (0) 'MS-DOS'\n+2353CD Extract Zip Spec      14 (20) '2.0'\n+2353CE Extract OS            00 (0) 'MS-DOS'\n+2353CF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2334A8 Compression Method    0008 (8) 'Deflated'\n-2334AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2334AE CRC                   1FAE29F0 (531507696)\n-2334B2 Compressed Size       000003E5 (997)\n-2334B6 Uncompressed Size     000009D3 (2515)\n-2334BA Filename Length       0035 (53)\n-2334BC Extra Length          0000 (0)\n-2334BE Comment Length        0000 (0)\n-2334C0 Disk Start            0000 (0)\n-2334C2 Int File Attributes   0000 (0)\n+2353D1 Compression Method    0008 (8) 'Deflated'\n+2353D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2353D7 CRC                   00000000 (0)\n+2353DB Compressed Size       00000002 (2)\n+2353DF Uncompressed Size     00000000 (0)\n+2353E3 Filename Length       0022 (34)\n+2353E5 Extra Length          0000 (0)\n+2353E7 Comment Length        0000 (0)\n+2353E9 Disk Start            0000 (0)\n+2353EB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2334C4 Ext File Attributes   00000000 (0)\n-2334C8 Local Header Offset   00174EA2 (1527458)\n-2334CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2353ED Ext File Attributes   00000000 (0)\n+2353F1 Local Header Offset   001847B1 (1591217)\n+2353F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2334CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2353F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233501 CENTRAL HEADER #1403  02014B50 (33639248)\n-233505 Created Zip Spec      14 (20) '2.0'\n-233506 Created OS            00 (0) 'MS-DOS'\n-233507 Extract Zip Spec      14 (20) '2.0'\n-233508 Extract OS            00 (0) 'MS-DOS'\n-233509 General Purpose Flag  0808 (2056)\n+235417 CENTRAL HEADER #1403  02014B50 (33639248)\n+23541B Created Zip Spec      14 (20) '2.0'\n+23541C Created OS            00 (0) 'MS-DOS'\n+23541D Extract Zip Spec      14 (20) '2.0'\n+23541E Extract OS            00 (0) 'MS-DOS'\n+23541F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23350B Compression Method    0008 (8) 'Deflated'\n-23350D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233511 CRC                   CF695E4A (3479789130)\n-233515 Compressed Size       00000D24 (3364)\n-233519 Uncompressed Size     00003883 (14467)\n-23351D Filename Length       0034 (52)\n-23351F Extra Length          0000 (0)\n-233521 Comment Length        0000 (0)\n-233523 Disk Start            0000 (0)\n-233525 Int File Attributes   0000 (0)\n+235421 Compression Method    0008 (8) 'Deflated'\n+235423 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235427 CRC                   0E9B786A (245069930)\n+23542B Compressed Size       00000350 (848)\n+23542F Uncompressed Size     000008D3 (2259)\n+235433 Filename Length       0034 (52)\n+235435 Extra Length          0000 (0)\n+235437 Comment Length        0000 (0)\n+235439 Disk Start            0000 (0)\n+23543B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233527 Ext File Attributes   00000000 (0)\n-23352B Local Header Offset   001752EA (1528554)\n-23352F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23543D Ext File Attributes   00000000 (0)\n+235441 Local Header Offset   00184803 (1591299)\n+235445 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23352F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235445: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233563 CENTRAL HEADER #1404  02014B50 (33639248)\n-233567 Created Zip Spec      14 (20) '2.0'\n-233568 Created OS            00 (0) 'MS-DOS'\n-233569 Extract Zip Spec      14 (20) '2.0'\n-23356A Extract OS            00 (0) 'MS-DOS'\n-23356B General Purpose Flag  0808 (2056)\n+235479 CENTRAL HEADER #1404  02014B50 (33639248)\n+23547D Created Zip Spec      14 (20) '2.0'\n+23547E Created OS            00 (0) 'MS-DOS'\n+23547F Extract Zip Spec      14 (20) '2.0'\n+235480 Extract OS            00 (0) 'MS-DOS'\n+235481 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23356D Compression Method    0008 (8) 'Deflated'\n-23356F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233573 CRC                   EE6324FC (3999474940)\n-233577 Compressed Size       00000273 (627)\n-23357B Uncompressed Size     000004D1 (1233)\n-23357F Filename Length       003B (59)\n-233581 Extra Length          0000 (0)\n-233583 Comment Length        0000 (0)\n-233585 Disk Start            0000 (0)\n-233587 Int File Attributes   0000 (0)\n+235483 Compression Method    0008 (8) 'Deflated'\n+235485 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235489 CRC                   966E868C (2523825804)\n+23548D Compressed Size       000003E8 (1000)\n+235491 Uncompressed Size     00000ADB (2779)\n+235495 Filename Length       0038 (56)\n+235497 Extra Length          0000 (0)\n+235499 Comment Length        0000 (0)\n+23549B Disk Start            0000 (0)\n+23549D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233589 Ext File Attributes   00000000 (0)\n-23358D Local Header Offset   00176070 (1532016)\n-233591 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23549F Ext File Attributes   00000000 (0)\n+2354A3 Local Header Offset   00184BB5 (1592245)\n+2354A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233591: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2354A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2335CC CENTRAL HEADER #1405  02014B50 (33639248)\n-2335D0 Created Zip Spec      14 (20) '2.0'\n-2335D1 Created OS            00 (0) 'MS-DOS'\n-2335D2 Extract Zip Spec      14 (20) '2.0'\n-2335D3 Extract OS            00 (0) 'MS-DOS'\n-2335D4 General Purpose Flag  0808 (2056)\n+2354DF CENTRAL HEADER #1405  02014B50 (33639248)\n+2354E3 Created Zip Spec      14 (20) '2.0'\n+2354E4 Created OS            00 (0) 'MS-DOS'\n+2354E5 Extract Zip Spec      14 (20) '2.0'\n+2354E6 Extract OS            00 (0) 'MS-DOS'\n+2354E7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2335D6 Compression Method    0008 (8) 'Deflated'\n-2335D8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2335DC CRC                   8A186986 (2316855686)\n-2335E0 Compressed Size       0000105B (4187)\n-2335E4 Uncompressed Size     0000477D (18301)\n-2335E8 Filename Length       003C (60)\n-2335EA Extra Length          0000 (0)\n-2335EC Comment Length        0000 (0)\n-2335EE Disk Start            0000 (0)\n-2335F0 Int File Attributes   0000 (0)\n+2354E9 Compression Method    0008 (8) 'Deflated'\n+2354EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2354EF CRC                   00000000 (0)\n+2354F3 Compressed Size       00000002 (2)\n+2354F7 Uncompressed Size     00000000 (0)\n+2354FB Filename Length       001C (28)\n+2354FD Extra Length          0000 (0)\n+2354FF Comment Length        0000 (0)\n+235501 Disk Start            0000 (0)\n+235503 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2335F2 Ext File Attributes   00000000 (0)\n-2335F6 Local Header Offset   0017634C (1532748)\n-2335FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235505 Ext File Attributes   00000000 (0)\n+235509 Local Header Offset   00185003 (1593347)\n+23550D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2335FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23550D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233636 CENTRAL HEADER #1406  02014B50 (33639248)\n-23363A Created Zip Spec      14 (20) '2.0'\n-23363B Created OS            00 (0) 'MS-DOS'\n-23363C Extract Zip Spec      14 (20) '2.0'\n-23363D Extract OS            00 (0) 'MS-DOS'\n-23363E General Purpose Flag  0808 (2056)\n+235529 CENTRAL HEADER #1406  02014B50 (33639248)\n+23552D Created Zip Spec      14 (20) '2.0'\n+23552E Created OS            00 (0) 'MS-DOS'\n+23552F Extract Zip Spec      14 (20) '2.0'\n+235530 Extract OS            00 (0) 'MS-DOS'\n+235531 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233640 Compression Method    0008 (8) 'Deflated'\n-233642 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233646 CRC                   35541C2F (894704687)\n-23364A Compressed Size       00000263 (611)\n-23364E Uncompressed Size     000004D1 (1233)\n-233652 Filename Length       0043 (67)\n-233654 Extra Length          0000 (0)\n-233656 Comment Length        0000 (0)\n-233658 Disk Start            0000 (0)\n-23365A Int File Attributes   0000 (0)\n+235533 Compression Method    0008 (8) 'Deflated'\n+235535 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235539 CRC                   93C23403 (2478978051)\n+23553D Compressed Size       0000023B (571)\n+235541 Uncompressed Size     000003DE (990)\n+235545 Filename Length       002D (45)\n+235547 Extra Length          0000 (0)\n+235549 Comment Length        0000 (0)\n+23554B Disk Start            0000 (0)\n+23554D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23365C Ext File Attributes   00000000 (0)\n-233660 Local Header Offset   00177411 (1537041)\n-233664 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23554F Ext File Attributes   00000000 (0)\n+235553 Local Header Offset   0018504F (1593423)\n+235557 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233664: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235557: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2336A7 CENTRAL HEADER #1407  02014B50 (33639248)\n-2336AB Created Zip Spec      14 (20) '2.0'\n-2336AC Created OS            00 (0) 'MS-DOS'\n-2336AD Extract Zip Spec      14 (20) '2.0'\n-2336AE Extract OS            00 (0) 'MS-DOS'\n-2336AF General Purpose Flag  0808 (2056)\n+235584 CENTRAL HEADER #1407  02014B50 (33639248)\n+235588 Created Zip Spec      14 (20) '2.0'\n+235589 Created OS            00 (0) 'MS-DOS'\n+23558A Extract Zip Spec      14 (20) '2.0'\n+23558B Extract OS            00 (0) 'MS-DOS'\n+23558C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2336B1 Compression Method    0008 (8) 'Deflated'\n-2336B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2336B7 CRC                   35541C2F (894704687)\n-2336BB Compressed Size       00000263 (611)\n-2336BF Uncompressed Size     000004D1 (1233)\n-2336C3 Filename Length       0048 (72)\n-2336C5 Extra Length          0000 (0)\n-2336C7 Comment Length        0000 (0)\n-2336C9 Disk Start            0000 (0)\n-2336CB Int File Attributes   0000 (0)\n+23558E Compression Method    0008 (8) 'Deflated'\n+235590 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235594 CRC                   00000000 (0)\n+235598 Compressed Size       00000002 (2)\n+23559C Uncompressed Size     00000000 (0)\n+2355A0 Filename Length       001C (28)\n+2355A2 Extra Length          0000 (0)\n+2355A4 Comment Length        0000 (0)\n+2355A6 Disk Start            0000 (0)\n+2355A8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2336CD Ext File Attributes   00000000 (0)\n-2336D1 Local Header Offset   001776E5 (1537765)\n-2336D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2355AA Ext File Attributes   00000000 (0)\n+2355AE Local Header Offset   001852E5 (1594085)\n+2355B2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2336D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2355B2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23371D CENTRAL HEADER #1408  02014B50 (33639248)\n-233721 Created Zip Spec      14 (20) '2.0'\n-233722 Created OS            00 (0) 'MS-DOS'\n-233723 Extract Zip Spec      14 (20) '2.0'\n-233724 Extract OS            00 (0) 'MS-DOS'\n-233725 General Purpose Flag  0808 (2056)\n+2355CE CENTRAL HEADER #1408  02014B50 (33639248)\n+2355D2 Created Zip Spec      14 (20) '2.0'\n+2355D3 Created OS            00 (0) 'MS-DOS'\n+2355D4 Extract Zip Spec      14 (20) '2.0'\n+2355D5 Extract OS            00 (0) 'MS-DOS'\n+2355D6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233727 Compression Method    0008 (8) 'Deflated'\n-233729 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23372D CRC                   35541C2F (894704687)\n-233731 Compressed Size       00000263 (611)\n-233735 Uncompressed Size     000004D1 (1233)\n-233739 Filename Length       0050 (80)\n-23373B Extra Length          0000 (0)\n-23373D Comment Length        0000 (0)\n-23373F Disk Start            0000 (0)\n-233741 Int File Attributes   0000 (0)\n+2355D8 Compression Method    0008 (8) 'Deflated'\n+2355DA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2355DE CRC                   4EEFA113 (1324327187)\n+2355E2 Compressed Size       00000475 (1141)\n+2355E6 Uncompressed Size     00000B51 (2897)\n+2355EA Filename Length       0034 (52)\n+2355EC Extra Length          0000 (0)\n+2355EE Comment Length        0000 (0)\n+2355F0 Disk Start            0000 (0)\n+2355F2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233743 Ext File Attributes   00000000 (0)\n-233747 Local Header Offset   001779BE (1538494)\n-23374B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2355F4 Ext File Attributes   00000000 (0)\n+2355F8 Local Header Offset   00185331 (1594161)\n+2355FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23374B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2355FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23379B CENTRAL HEADER #1409  02014B50 (33639248)\n-23379F Created Zip Spec      14 (20) '2.0'\n-2337A0 Created OS            00 (0) 'MS-DOS'\n-2337A1 Extract Zip Spec      14 (20) '2.0'\n-2337A2 Extract OS            00 (0) 'MS-DOS'\n-2337A3 General Purpose Flag  0808 (2056)\n+235630 CENTRAL HEADER #1409  02014B50 (33639248)\n+235634 Created Zip Spec      14 (20) '2.0'\n+235635 Created OS            00 (0) 'MS-DOS'\n+235636 Extract Zip Spec      14 (20) '2.0'\n+235637 Extract OS            00 (0) 'MS-DOS'\n+235638 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2337A5 Compression Method    0008 (8) 'Deflated'\n-2337A7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2337AB CRC                   00000000 (0)\n-2337AF Compressed Size       00000002 (2)\n-2337B3 Uncompressed Size     00000000 (0)\n-2337B7 Filename Length       001F (31)\n-2337B9 Extra Length          0000 (0)\n-2337BB Comment Length        0000 (0)\n-2337BD Disk Start            0000 (0)\n-2337BF Int File Attributes   0000 (0)\n+23563A Compression Method    0008 (8) 'Deflated'\n+23563C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235640 CRC                   9CF5D1EF (2633355759)\n+235644 Compressed Size       000007D6 (2006)\n+235648 Uncompressed Size     00001B08 (6920)\n+23564C Filename Length       0033 (51)\n+23564E Extra Length          0000 (0)\n+235650 Comment Length        0000 (0)\n+235652 Disk Start            0000 (0)\n+235654 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2337C1 Ext File Attributes   00000000 (0)\n-2337C5 Local Header Offset   00177C9F (1539231)\n-2337C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235656 Ext File Attributes   00000000 (0)\n+23565A Local Header Offset   00185808 (1595400)\n+23565E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2337C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23565E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2337E8 CENTRAL HEADER #1410  02014B50 (33639248)\n-2337EC Created Zip Spec      14 (20) '2.0'\n-2337ED Created OS            00 (0) 'MS-DOS'\n-2337EE Extract Zip Spec      14 (20) '2.0'\n-2337EF Extract OS            00 (0) 'MS-DOS'\n-2337F0 General Purpose Flag  0808 (2056)\n+235691 CENTRAL HEADER #1410  02014B50 (33639248)\n+235695 Created Zip Spec      14 (20) '2.0'\n+235696 Created OS            00 (0) 'MS-DOS'\n+235697 Extract Zip Spec      14 (20) '2.0'\n+235698 Extract OS            00 (0) 'MS-DOS'\n+235699 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2337F2 Compression Method    0008 (8) 'Deflated'\n-2337F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2337F8 CRC                   E5134667 (3843245671)\n-2337FC Compressed Size       00000D7E (3454)\n-233800 Uncompressed Size     00003DF8 (15864)\n-233804 Filename Length       0030 (48)\n-233806 Extra Length          0000 (0)\n-233808 Comment Length        0000 (0)\n-23380A Disk Start            0000 (0)\n-23380C Int File Attributes   0000 (0)\n+23569B Compression Method    0008 (8) 'Deflated'\n+23569D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2356A1 CRC                   60B50DD7 (1622478295)\n+2356A5 Compressed Size       0000034C (844)\n+2356A9 Uncompressed Size     0000071D (1821)\n+2356AD Filename Length       0035 (53)\n+2356AF Extra Length          0000 (0)\n+2356B1 Comment Length        0000 (0)\n+2356B3 Disk Start            0000 (0)\n+2356B5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23380E Ext File Attributes   00000000 (0)\n-233812 Local Header Offset   00177CEE (1539310)\n-233816 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2356B7 Ext File Attributes   00000000 (0)\n+2356BB Local Header Offset   0018603F (1597503)\n+2356BF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233816: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2356BF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233846 CENTRAL HEADER #1411  02014B50 (33639248)\n-23384A Created Zip Spec      14 (20) '2.0'\n-23384B Created OS            00 (0) 'MS-DOS'\n-23384C Extract Zip Spec      14 (20) '2.0'\n-23384D Extract OS            00 (0) 'MS-DOS'\n-23384E General Purpose Flag  0808 (2056)\n+2356F4 CENTRAL HEADER #1411  02014B50 (33639248)\n+2356F8 Created Zip Spec      14 (20) '2.0'\n+2356F9 Created OS            00 (0) 'MS-DOS'\n+2356FA Extract Zip Spec      14 (20) '2.0'\n+2356FB Extract OS            00 (0) 'MS-DOS'\n+2356FC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233850 Compression Method    0008 (8) 'Deflated'\n-233852 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233856 CRC                   EAAFA7AC (3937380268)\n-23385A Compressed Size       00000291 (657)\n-23385E Uncompressed Size     00000581 (1409)\n-233862 Filename Length       0037 (55)\n-233864 Extra Length          0000 (0)\n-233866 Comment Length        0000 (0)\n-233868 Disk Start            0000 (0)\n-23386A Int File Attributes   0000 (0)\n+2356FE Compression Method    0008 (8) 'Deflated'\n+235700 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235704 CRC                   78614F57 (2019643223)\n+235708 Compressed Size       00000B88 (2952)\n+23570C Uncompressed Size     00002BDA (11226)\n+235710 Filename Length       0034 (52)\n+235712 Extra Length          0000 (0)\n+235714 Comment Length        0000 (0)\n+235716 Disk Start            0000 (0)\n+235718 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23386C Ext File Attributes   00000000 (0)\n-233870 Local Header Offset   00178ACA (1542858)\n-233874 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23571A Ext File Attributes   00000000 (0)\n+23571E Local Header Offset   001863EE (1598446)\n+235722 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233874: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235722: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2338AB CENTRAL HEADER #1412  02014B50 (33639248)\n-2338AF Created Zip Spec      14 (20) '2.0'\n-2338B0 Created OS            00 (0) 'MS-DOS'\n-2338B1 Extract Zip Spec      14 (20) '2.0'\n-2338B2 Extract OS            00 (0) 'MS-DOS'\n-2338B3 General Purpose Flag  0808 (2056)\n+235756 CENTRAL HEADER #1412  02014B50 (33639248)\n+23575A Created Zip Spec      14 (20) '2.0'\n+23575B Created OS            00 (0) 'MS-DOS'\n+23575C Extract Zip Spec      14 (20) '2.0'\n+23575D Extract OS            00 (0) 'MS-DOS'\n+23575E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2338B5 Compression Method    0008 (8) 'Deflated'\n-2338B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2338BB CRC                   D94FAF9D (3645878173)\n-2338BF Compressed Size       000008BF (2239)\n-2338C3 Uncompressed Size     00001FF4 (8180)\n-2338C7 Filename Length       0038 (56)\n-2338C9 Extra Length          0000 (0)\n-2338CB Comment Length        0000 (0)\n-2338CD Disk Start            0000 (0)\n-2338CF Int File Attributes   0000 (0)\n+235760 Compression Method    0008 (8) 'Deflated'\n+235762 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235766 CRC                   17A6F6D0 (396818128)\n+23576A Compressed Size       000006B7 (1719)\n+23576E Uncompressed Size     00001AC2 (6850)\n+235772 Filename Length       0032 (50)\n+235774 Extra Length          0000 (0)\n+235776 Comment Length        0000 (0)\n+235778 Disk Start            0000 (0)\n+23577A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2338D1 Ext File Attributes   00000000 (0)\n-2338D5 Local Header Offset   00178DC0 (1543616)\n-2338D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23577C Ext File Attributes   00000000 (0)\n+235780 Local Header Offset   00186FD8 (1601496)\n+235784 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2338D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235784: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233911 CENTRAL HEADER #1413  02014B50 (33639248)\n-233915 Created Zip Spec      14 (20) '2.0'\n-233916 Created OS            00 (0) 'MS-DOS'\n-233917 Extract Zip Spec      14 (20) '2.0'\n-233918 Extract OS            00 (0) 'MS-DOS'\n-233919 General Purpose Flag  0808 (2056)\n+2357B6 CENTRAL HEADER #1413  02014B50 (33639248)\n+2357BA Created Zip Spec      14 (20) '2.0'\n+2357BB Created OS            00 (0) 'MS-DOS'\n+2357BC Extract Zip Spec      14 (20) '2.0'\n+2357BD Extract OS            00 (0) 'MS-DOS'\n+2357BE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23391B Compression Method    0008 (8) 'Deflated'\n-23391D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233921 CRC                   00000000 (0)\n-233925 Compressed Size       00000002 (2)\n-233929 Uncompressed Size     00000000 (0)\n-23392D Filename Length       0021 (33)\n-23392F Extra Length          0000 (0)\n-233931 Comment Length        0000 (0)\n-233933 Disk Start            0000 (0)\n-233935 Int File Attributes   0000 (0)\n+2357C0 Compression Method    0008 (8) 'Deflated'\n+2357C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2357C6 CRC                   65289261 (1697157729)\n+2357CA Compressed Size       000005CC (1484)\n+2357CE Uncompressed Size     00000FD7 (4055)\n+2357D2 Filename Length       0031 (49)\n+2357D4 Extra Length          0000 (0)\n+2357D6 Comment Length        0000 (0)\n+2357D8 Disk Start            0000 (0)\n+2357DA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233937 Ext File Attributes   00000000 (0)\n-23393B Local Header Offset   001796E5 (1545957)\n-23393F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2357DC Ext File Attributes   00000000 (0)\n+2357E0 Local Header Offset   001876EF (1603311)\n+2357E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23393F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2357E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233960 CENTRAL HEADER #1414  02014B50 (33639248)\n-233964 Created Zip Spec      14 (20) '2.0'\n-233965 Created OS            00 (0) 'MS-DOS'\n-233966 Extract Zip Spec      14 (20) '2.0'\n-233967 Extract OS            00 (0) 'MS-DOS'\n-233968 General Purpose Flag  0808 (2056)\n+235815 CENTRAL HEADER #1414  02014B50 (33639248)\n+235819 Created Zip Spec      14 (20) '2.0'\n+23581A Created OS            00 (0) 'MS-DOS'\n+23581B Extract Zip Spec      14 (20) '2.0'\n+23581C Extract OS            00 (0) 'MS-DOS'\n+23581D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23396A Compression Method    0008 (8) 'Deflated'\n-23396C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233970 CRC                   CF5D6816 (3479005206)\n-233974 Compressed Size       000006D9 (1753)\n-233978 Uncompressed Size     000026A9 (9897)\n-23397C Filename Length       0046 (70)\n-23397E Extra Length          0000 (0)\n-233980 Comment Length        0000 (0)\n-233982 Disk Start            0000 (0)\n-233984 Int File Attributes   0000 (0)\n+23581F Compression Method    0008 (8) 'Deflated'\n+235821 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235825 CRC                   59C732CA (1506226890)\n+235829 Compressed Size       000004F2 (1266)\n+23582D Uncompressed Size     00000F65 (3941)\n+235831 Filename Length       0032 (50)\n+235833 Extra Length          0000 (0)\n+235835 Comment Length        0000 (0)\n+235837 Disk Start            0000 (0)\n+235839 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233986 Ext File Attributes   00000000 (0)\n-23398A Local Header Offset   00179736 (1546038)\n-23398E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23583B Ext File Attributes   00000000 (0)\n+23583F Local Header Offset   00187D1A (1604890)\n+235843 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23398E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235843: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2339D4 CENTRAL HEADER #1415  02014B50 (33639248)\n-2339D8 Created Zip Spec      14 (20) '2.0'\n-2339D9 Created OS            00 (0) 'MS-DOS'\n-2339DA Extract Zip Spec      14 (20) '2.0'\n-2339DB Extract OS            00 (0) 'MS-DOS'\n-2339DC General Purpose Flag  0808 (2056)\n+235875 CENTRAL HEADER #1415  02014B50 (33639248)\n+235879 Created Zip Spec      14 (20) '2.0'\n+23587A Created OS            00 (0) 'MS-DOS'\n+23587B Extract Zip Spec      14 (20) '2.0'\n+23587C Extract OS            00 (0) 'MS-DOS'\n+23587D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2339DE Compression Method    0008 (8) 'Deflated'\n-2339E0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2339E4 CRC                   4F723C34 (1332886580)\n-2339E8 Compressed Size       00000AD8 (2776)\n-2339EC Uncompressed Size     00002B78 (11128)\n-2339F0 Filename Length       003C (60)\n-2339F2 Extra Length          0000 (0)\n-2339F4 Comment Length        0000 (0)\n-2339F6 Disk Start            0000 (0)\n-2339F8 Int File Attributes   0000 (0)\n+23587F Compression Method    0008 (8) 'Deflated'\n+235881 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235885 CRC                   62C17732 (1656846130)\n+235889 Compressed Size       00000456 (1110)\n+23588D Uncompressed Size     00000B13 (2835)\n+235891 Filename Length       0034 (52)\n+235893 Extra Length          0000 (0)\n+235895 Comment Length        0000 (0)\n+235897 Disk Start            0000 (0)\n+235899 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2339FA Ext File Attributes   00000000 (0)\n-2339FE Local Header Offset   00179E83 (1547907)\n-233A02 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23589B Ext File Attributes   00000000 (0)\n+23589F Local Header Offset   0018826C (1606252)\n+2358A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233A02: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2358A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233A3E CENTRAL HEADER #1416  02014B50 (33639248)\n-233A42 Created Zip Spec      14 (20) '2.0'\n-233A43 Created OS            00 (0) 'MS-DOS'\n-233A44 Extract Zip Spec      14 (20) '2.0'\n-233A45 Extract OS            00 (0) 'MS-DOS'\n-233A46 General Purpose Flag  0808 (2056)\n+2358D7 CENTRAL HEADER #1416  02014B50 (33639248)\n+2358DB Created Zip Spec      14 (20) '2.0'\n+2358DC Created OS            00 (0) 'MS-DOS'\n+2358DD Extract Zip Spec      14 (20) '2.0'\n+2358DE Extract OS            00 (0) 'MS-DOS'\n+2358DF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233A48 Compression Method    0008 (8) 'Deflated'\n-233A4A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233A4E CRC                   71DE9B6F (1910414191)\n-233A52 Compressed Size       0000020C (524)\n-233A56 Uncompressed Size     000003AF (943)\n-233A5A Filename Length       0032 (50)\n-233A5C Extra Length          0000 (0)\n-233A5E Comment Length        0000 (0)\n-233A60 Disk Start            0000 (0)\n-233A62 Int File Attributes   0000 (0)\n+2358E1 Compression Method    0008 (8) 'Deflated'\n+2358E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2358E7 CRC                   BD59212E (3176735022)\n+2358EB Compressed Size       00000465 (1125)\n+2358EF Uncompressed Size     00000AC7 (2759)\n+2358F3 Filename Length       0036 (54)\n+2358F5 Extra Length          0000 (0)\n+2358F7 Comment Length        0000 (0)\n+2358F9 Disk Start            0000 (0)\n+2358FB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233A64 Ext File Attributes   00000000 (0)\n-233A68 Local Header Offset   0017A9C5 (1550789)\n-233A6C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2358FD Ext File Attributes   00000000 (0)\n+235901 Local Header Offset   00188724 (1607460)\n+235905 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233A6C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235905: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233A9E CENTRAL HEADER #1417  02014B50 (33639248)\n-233AA2 Created Zip Spec      14 (20) '2.0'\n-233AA3 Created OS            00 (0) 'MS-DOS'\n-233AA4 Extract Zip Spec      14 (20) '2.0'\n-233AA5 Extract OS            00 (0) 'MS-DOS'\n-233AA6 General Purpose Flag  0808 (2056)\n+23593B CENTRAL HEADER #1417  02014B50 (33639248)\n+23593F Created Zip Spec      14 (20) '2.0'\n+235940 Created OS            00 (0) 'MS-DOS'\n+235941 Extract Zip Spec      14 (20) '2.0'\n+235942 Extract OS            00 (0) 'MS-DOS'\n+235943 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233AA8 Compression Method    0008 (8) 'Deflated'\n-233AAA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233AAE CRC                   00000000 (0)\n-233AB2 Compressed Size       00000002 (2)\n-233AB6 Uncompressed Size     00000000 (0)\n-233ABA Filename Length       0020 (32)\n-233ABC Extra Length          0000 (0)\n-233ABE Comment Length        0000 (0)\n-233AC0 Disk Start            0000 (0)\n-233AC2 Int File Attributes   0000 (0)\n+235945 Compression Method    0008 (8) 'Deflated'\n+235947 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23594B CRC                   6E324421 (1848788001)\n+23594F Compressed Size       0000057D (1405)\n+235953 Uncompressed Size     00001018 (4120)\n+235957 Filename Length       0033 (51)\n+235959 Extra Length          0000 (0)\n+23595B Comment Length        0000 (0)\n+23595D Disk Start            0000 (0)\n+23595F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233AC4 Ext File Attributes   00000000 (0)\n-233AC8 Local Header Offset   0017AC31 (1551409)\n-233ACC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235961 Ext File Attributes   00000000 (0)\n+235965 Local Header Offset   00188BED (1608685)\n+235969 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233ACC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235969: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233AEC CENTRAL HEADER #1418  02014B50 (33639248)\n-233AF0 Created Zip Spec      14 (20) '2.0'\n-233AF1 Created OS            00 (0) 'MS-DOS'\n-233AF2 Extract Zip Spec      14 (20) '2.0'\n-233AF3 Extract OS            00 (0) 'MS-DOS'\n-233AF4 General Purpose Flag  0808 (2056)\n+23599C CENTRAL HEADER #1418  02014B50 (33639248)\n+2359A0 Created Zip Spec      14 (20) '2.0'\n+2359A1 Created OS            00 (0) 'MS-DOS'\n+2359A2 Extract Zip Spec      14 (20) '2.0'\n+2359A3 Extract OS            00 (0) 'MS-DOS'\n+2359A4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233AF6 Compression Method    0008 (8) 'Deflated'\n-233AF8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233AFC CRC                   BB0161DF (3137429983)\n-233B00 Compressed Size       00000468 (1128)\n-233B04 Uncompressed Size     00000DF9 (3577)\n-233B08 Filename Length       003E (62)\n-233B0A Extra Length          0000 (0)\n-233B0C Comment Length        0000 (0)\n-233B0E Disk Start            0000 (0)\n-233B10 Int File Attributes   0000 (0)\n+2359A6 Compression Method    0008 (8) 'Deflated'\n+2359A8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2359AC CRC                   00000000 (0)\n+2359B0 Compressed Size       00000002 (2)\n+2359B4 Uncompressed Size     00000000 (0)\n+2359B8 Filename Length       001E (30)\n+2359BA Extra Length          0000 (0)\n+2359BC Comment Length        0000 (0)\n+2359BE Disk Start            0000 (0)\n+2359C0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233B12 Ext File Attributes   00000000 (0)\n-233B16 Local Header Offset   0017AC81 (1551489)\n-233B1A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2359C2 Ext File Attributes   00000000 (0)\n+2359C6 Local Header Offset   001891CB (1610187)\n+2359CA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233B1A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2359CA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233B58 CENTRAL HEADER #1419  02014B50 (33639248)\n-233B5C Created Zip Spec      14 (20) '2.0'\n-233B5D Created OS            00 (0) 'MS-DOS'\n-233B5E Extract Zip Spec      14 (20) '2.0'\n-233B5F Extract OS            00 (0) 'MS-DOS'\n-233B60 General Purpose Flag  0808 (2056)\n+2359E8 CENTRAL HEADER #1419  02014B50 (33639248)\n+2359EC Created Zip Spec      14 (20) '2.0'\n+2359ED Created OS            00 (0) 'MS-DOS'\n+2359EE Extract Zip Spec      14 (20) '2.0'\n+2359EF Extract OS            00 (0) 'MS-DOS'\n+2359F0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233B62 Compression Method    0008 (8) 'Deflated'\n-233B64 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233B68 CRC                   E2B000EA (3803185386)\n-233B6C Compressed Size       000013F0 (5104)\n-233B70 Uncompressed Size     00005C3B (23611)\n-233B74 Filename Length       0032 (50)\n-233B76 Extra Length          0000 (0)\n-233B78 Comment Length        0000 (0)\n-233B7A Disk Start            0000 (0)\n-233B7C Int File Attributes   0000 (0)\n+2359F2 Compression Method    0008 (8) 'Deflated'\n+2359F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2359F8 CRC                   5829DD8D (1479138701)\n+2359FC Compressed Size       000005A6 (1446)\n+235A00 Uncompressed Size     0000114E (4430)\n+235A04 Filename Length       0035 (53)\n+235A06 Extra Length          0000 (0)\n+235A08 Comment Length        0000 (0)\n+235A0A Disk Start            0000 (0)\n+235A0C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233B7E Ext File Attributes   00000000 (0)\n-233B82 Local Header Offset   0017B155 (1552725)\n-233B86 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235A0E Ext File Attributes   00000000 (0)\n+235A12 Local Header Offset   00189219 (1610265)\n+235A16 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233B86: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235A16: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233BB8 CENTRAL HEADER #1420  02014B50 (33639248)\n-233BBC Created Zip Spec      14 (20) '2.0'\n-233BBD Created OS            00 (0) 'MS-DOS'\n-233BBE Extract Zip Spec      14 (20) '2.0'\n-233BBF Extract OS            00 (0) 'MS-DOS'\n-233BC0 General Purpose Flag  0808 (2056)\n+235A4B CENTRAL HEADER #1420  02014B50 (33639248)\n+235A4F Created Zip Spec      14 (20) '2.0'\n+235A50 Created OS            00 (0) 'MS-DOS'\n+235A51 Extract Zip Spec      14 (20) '2.0'\n+235A52 Extract OS            00 (0) 'MS-DOS'\n+235A53 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233BC2 Compression Method    0008 (8) 'Deflated'\n-233BC4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233BC8 CRC                   A100EF71 (2701193073)\n-233BCC Compressed Size       0000034A (842)\n-233BD0 Uncompressed Size     00000776 (1910)\n-233BD4 Filename Length       0039 (57)\n-233BD6 Extra Length          0000 (0)\n-233BD8 Comment Length        0000 (0)\n-233BDA Disk Start            0000 (0)\n-233BDC Int File Attributes   0000 (0)\n+235A55 Compression Method    0008 (8) 'Deflated'\n+235A57 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235A5B CRC                   00000000 (0)\n+235A5F Compressed Size       00000002 (2)\n+235A63 Uncompressed Size     00000000 (0)\n+235A67 Filename Length       001C (28)\n+235A69 Extra Length          0000 (0)\n+235A6B Comment Length        0000 (0)\n+235A6D Disk Start            0000 (0)\n+235A6F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233BDE Ext File Attributes   00000000 (0)\n-233BE2 Local Header Offset   0017C5A5 (1557925)\n-233BE6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235A71 Ext File Attributes   00000000 (0)\n+235A75 Local Header Offset   00189822 (1611810)\n+235A79 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233BE6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235A79: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233C1F CENTRAL HEADER #1421  02014B50 (33639248)\n-233C23 Created Zip Spec      14 (20) '2.0'\n-233C24 Created OS            00 (0) 'MS-DOS'\n-233C25 Extract Zip Spec      14 (20) '2.0'\n-233C26 Extract OS            00 (0) 'MS-DOS'\n-233C27 General Purpose Flag  0808 (2056)\n+235A95 CENTRAL HEADER #1421  02014B50 (33639248)\n+235A99 Created Zip Spec      14 (20) '2.0'\n+235A9A Created OS            00 (0) 'MS-DOS'\n+235A9B Extract Zip Spec      14 (20) '2.0'\n+235A9C Extract OS            00 (0) 'MS-DOS'\n+235A9D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233C29 Compression Method    0008 (8) 'Deflated'\n-233C2B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233C2F CRC                   2220AA2B (572566059)\n-233C33 Compressed Size       00000648 (1608)\n-233C37 Uncompressed Size     000016C4 (5828)\n-233C3B Filename Length       003A (58)\n-233C3D Extra Length          0000 (0)\n-233C3F Comment Length        0000 (0)\n-233C41 Disk Start            0000 (0)\n-233C43 Int File Attributes   0000 (0)\n+235A9F Compression Method    0008 (8) 'Deflated'\n+235AA1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235AA5 CRC                   AF68925C (2942866012)\n+235AA9 Compressed Size       0000026A (618)\n+235AAD Uncompressed Size     000004FE (1278)\n+235AB1 Filename Length       002A (42)\n+235AB3 Extra Length          0000 (0)\n+235AB5 Comment Length        0000 (0)\n+235AB7 Disk Start            0000 (0)\n+235AB9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233C45 Ext File Attributes   00000000 (0)\n-233C49 Local Header Offset   0017C956 (1558870)\n-233C4D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235ABB Ext File Attributes   00000000 (0)\n+235ABF Local Header Offset   0018986E (1611886)\n+235AC3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233C4D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235AC3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233C87 CENTRAL HEADER #1422  02014B50 (33639248)\n-233C8B Created Zip Spec      14 (20) '2.0'\n-233C8C Created OS            00 (0) 'MS-DOS'\n-233C8D Extract Zip Spec      14 (20) '2.0'\n-233C8E Extract OS            00 (0) 'MS-DOS'\n-233C8F General Purpose Flag  0808 (2056)\n+235AED CENTRAL HEADER #1422  02014B50 (33639248)\n+235AF1 Created Zip Spec      14 (20) '2.0'\n+235AF2 Created OS            00 (0) 'MS-DOS'\n+235AF3 Extract Zip Spec      14 (20) '2.0'\n+235AF4 Extract OS            00 (0) 'MS-DOS'\n+235AF5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233C91 Compression Method    0008 (8) 'Deflated'\n-233C93 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233C97 CRC                   94B18BA4 (2494663588)\n-233C9B Compressed Size       00000269 (617)\n-233C9F Uncompressed Size     000004D9 (1241)\n-233CA3 Filename Length       0041 (65)\n-233CA5 Extra Length          0000 (0)\n-233CA7 Comment Length        0000 (0)\n-233CA9 Disk Start            0000 (0)\n-233CAB Int File Attributes   0000 (0)\n+235AF7 Compression Method    0008 (8) 'Deflated'\n+235AF9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235AFD CRC                   97DFDDD6 (2548030934)\n+235B01 Compressed Size       00000604 (1540)\n+235B05 Uncompressed Size     00001266 (4710)\n+235B09 Filename Length       0027 (39)\n+235B0B Extra Length          0000 (0)\n+235B0D Comment Length        0000 (0)\n+235B0F Disk Start            0000 (0)\n+235B11 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233CAD Ext File Attributes   00000000 (0)\n-233CB1 Local Header Offset   0017D006 (1560582)\n-233CB5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235B13 Ext File Attributes   00000000 (0)\n+235B17 Local Header Offset   00189B30 (1612592)\n+235B1B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233CB5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235B1B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233CF6 CENTRAL HEADER #1423  02014B50 (33639248)\n-233CFA Created Zip Spec      14 (20) '2.0'\n-233CFB Created OS            00 (0) 'MS-DOS'\n-233CFC Extract Zip Spec      14 (20) '2.0'\n-233CFD Extract OS            00 (0) 'MS-DOS'\n-233CFE General Purpose Flag  0808 (2056)\n+235B42 CENTRAL HEADER #1423  02014B50 (33639248)\n+235B46 Created Zip Spec      14 (20) '2.0'\n+235B47 Created OS            00 (0) 'MS-DOS'\n+235B48 Extract Zip Spec      14 (20) '2.0'\n+235B49 Extract OS            00 (0) 'MS-DOS'\n+235B4A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233D00 Compression Method    0008 (8) 'Deflated'\n-233D02 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233D06 CRC                   F3388AB4 (4080569012)\n-233D0A Compressed Size       000006FA (1786)\n-233D0E Uncompressed Size     00001A7B (6779)\n-233D12 Filename Length       0035 (53)\n-233D14 Extra Length          0000 (0)\n-233D16 Comment Length        0000 (0)\n-233D18 Disk Start            0000 (0)\n-233D1A Int File Attributes   0000 (0)\n+235B4C Compression Method    0008 (8) 'Deflated'\n+235B4E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235B52 CRC                   00000000 (0)\n+235B56 Compressed Size       00000002 (2)\n+235B5A Uncompressed Size     00000000 (0)\n+235B5E Filename Length       0024 (36)\n+235B60 Extra Length          0000 (0)\n+235B62 Comment Length        0000 (0)\n+235B64 Disk Start            0000 (0)\n+235B66 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233D1C Ext File Attributes   00000000 (0)\n-233D20 Local Header Offset   0017D2DE (1561310)\n-233D24 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235B68 Ext File Attributes   00000000 (0)\n+235B6C Local Header Offset   0018A189 (1614217)\n+235B70 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233D24: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235B70: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233D59 CENTRAL HEADER #1424  02014B50 (33639248)\n-233D5D Created Zip Spec      14 (20) '2.0'\n-233D5E Created OS            00 (0) 'MS-DOS'\n-233D5F Extract Zip Spec      14 (20) '2.0'\n-233D60 Extract OS            00 (0) 'MS-DOS'\n-233D61 General Purpose Flag  0808 (2056)\n+235B94 CENTRAL HEADER #1424  02014B50 (33639248)\n+235B98 Created Zip Spec      14 (20) '2.0'\n+235B99 Created OS            00 (0) 'MS-DOS'\n+235B9A Extract Zip Spec      14 (20) '2.0'\n+235B9B Extract OS            00 (0) 'MS-DOS'\n+235B9C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233D63 Compression Method    0008 (8) 'Deflated'\n-233D65 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233D69 CRC                   00000000 (0)\n-233D6D Compressed Size       00000002 (2)\n-233D71 Uncompressed Size     00000000 (0)\n-233D75 Filename Length       0025 (37)\n-233D77 Extra Length          0000 (0)\n-233D79 Comment Length        0000 (0)\n-233D7B Disk Start            0000 (0)\n-233D7D Int File Attributes   0000 (0)\n+235B9E Compression Method    0008 (8) 'Deflated'\n+235BA0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235BA4 CRC                   5688E99A (1451813274)\n+235BA8 Compressed Size       000005C2 (1474)\n+235BAC Uncompressed Size     00001436 (5174)\n+235BB0 Filename Length       003B (59)\n+235BB2 Extra Length          0000 (0)\n+235BB4 Comment Length        0000 (0)\n+235BB6 Disk Start            0000 (0)\n+235BB8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233D7F Ext File Attributes   00000000 (0)\n-233D83 Local Header Offset   0017DA3B (1563195)\n-233D87 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235BBA Ext File Attributes   00000000 (0)\n+235BBE Local Header Offset   0018A1DD (1614301)\n+235BC2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233D87: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235BC2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233DAC CENTRAL HEADER #1425  02014B50 (33639248)\n-233DB0 Created Zip Spec      14 (20) '2.0'\n-233DB1 Created OS            00 (0) 'MS-DOS'\n-233DB2 Extract Zip Spec      14 (20) '2.0'\n-233DB3 Extract OS            00 (0) 'MS-DOS'\n-233DB4 General Purpose Flag  0808 (2056)\n+235BFD CENTRAL HEADER #1425  02014B50 (33639248)\n+235C01 Created Zip Spec      14 (20) '2.0'\n+235C02 Created OS            00 (0) 'MS-DOS'\n+235C03 Extract Zip Spec      14 (20) '2.0'\n+235C04 Extract OS            00 (0) 'MS-DOS'\n+235C05 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233DB6 Compression Method    0008 (8) 'Deflated'\n-233DB8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233DBC CRC                   D4BBF170 (3569086832)\n-233DC0 Compressed Size       0000041C (1052)\n-233DC4 Uncompressed Size     00000AB8 (2744)\n-233DC8 Filename Length       0041 (65)\n-233DCA Extra Length          0000 (0)\n-233DCC Comment Length        0000 (0)\n-233DCE Disk Start            0000 (0)\n-233DD0 Int File Attributes   0000 (0)\n+235C07 Compression Method    0008 (8) 'Deflated'\n+235C09 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235C0D CRC                   DA916F8A (3666964362)\n+235C11 Compressed Size       00000376 (886)\n+235C15 Uncompressed Size     000007A1 (1953)\n+235C19 Filename Length       003F (63)\n+235C1B Extra Length          0000 (0)\n+235C1D Comment Length        0000 (0)\n+235C1F Disk Start            0000 (0)\n+235C21 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233DD2 Ext File Attributes   00000000 (0)\n-233DD6 Local Header Offset   0017DA90 (1563280)\n-233DDA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235C23 Ext File Attributes   00000000 (0)\n+235C27 Local Header Offset   0018A808 (1615880)\n+235C2B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233DDA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235C2B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233E1B CENTRAL HEADER #1426  02014B50 (33639248)\n-233E1F Created Zip Spec      14 (20) '2.0'\n-233E20 Created OS            00 (0) 'MS-DOS'\n-233E21 Extract Zip Spec      14 (20) '2.0'\n-233E22 Extract OS            00 (0) 'MS-DOS'\n-233E23 General Purpose Flag  0808 (2056)\n+235C6A CENTRAL HEADER #1426  02014B50 (33639248)\n+235C6E Created Zip Spec      14 (20) '2.0'\n+235C6F Created OS            00 (0) 'MS-DOS'\n+235C70 Extract Zip Spec      14 (20) '2.0'\n+235C71 Extract OS            00 (0) 'MS-DOS'\n+235C72 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233E25 Compression Method    0008 (8) 'Deflated'\n-233E27 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233E2B CRC                   76AAEB5B (1990912859)\n-233E2F Compressed Size       000007E0 (2016)\n-233E33 Uncompressed Size     00001F41 (8001)\n-233E37 Filename Length       0041 (65)\n-233E39 Extra Length          0000 (0)\n-233E3B Comment Length        0000 (0)\n-233E3D Disk Start            0000 (0)\n-233E3F Int File Attributes   0000 (0)\n+235C74 Compression Method    0008 (8) 'Deflated'\n+235C76 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235C7A CRC                   5C0FF18B (1544548747)\n+235C7E Compressed Size       000005D2 (1490)\n+235C82 Uncompressed Size     0000107E (4222)\n+235C86 Filename Length       003A (58)\n+235C88 Extra Length          0000 (0)\n+235C8A Comment Length        0000 (0)\n+235C8C Disk Start            0000 (0)\n+235C8E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233E41 Ext File Attributes   00000000 (0)\n-233E45 Local Header Offset   0017DF1B (1564443)\n-233E49 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235C90 Ext File Attributes   00000000 (0)\n+235C94 Local Header Offset   0018ABEB (1616875)\n+235C98 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233E49: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235C98: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233E8A CENTRAL HEADER #1427  02014B50 (33639248)\n-233E8E Created Zip Spec      14 (20) '2.0'\n-233E8F Created OS            00 (0) 'MS-DOS'\n-233E90 Extract Zip Spec      14 (20) '2.0'\n-233E91 Extract OS            00 (0) 'MS-DOS'\n-233E92 General Purpose Flag  0808 (2056)\n+235CD2 CENTRAL HEADER #1427  02014B50 (33639248)\n+235CD6 Created Zip Spec      14 (20) '2.0'\n+235CD7 Created OS            00 (0) 'MS-DOS'\n+235CD8 Extract Zip Spec      14 (20) '2.0'\n+235CD9 Extract OS            00 (0) 'MS-DOS'\n+235CDA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233E94 Compression Method    0008 (8) 'Deflated'\n-233E96 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233E9A CRC                   00000000 (0)\n-233E9E Compressed Size       00000002 (2)\n-233EA2 Uncompressed Size     00000000 (0)\n-233EA6 Filename Length       001F (31)\n-233EA8 Extra Length          0000 (0)\n-233EAA Comment Length        0000 (0)\n-233EAC Disk Start            0000 (0)\n-233EAE Int File Attributes   0000 (0)\n+235CDC Compression Method    0008 (8) 'Deflated'\n+235CDE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235CE2 CRC                   F592DA8D (4120042125)\n+235CE6 Compressed Size       0000034A (842)\n+235CEA Uncompressed Size     00000713 (1811)\n+235CEE Filename Length       003F (63)\n+235CF0 Extra Length          0000 (0)\n+235CF2 Comment Length        0000 (0)\n+235CF4 Disk Start            0000 (0)\n+235CF6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233EB0 Ext File Attributes   00000000 (0)\n-233EB4 Local Header Offset   0017E76A (1566570)\n-233EB8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235CF8 Ext File Attributes   00000000 (0)\n+235CFC Local Header Offset   0018B225 (1618469)\n+235D00 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233EB8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235D00: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233ED7 CENTRAL HEADER #1428  02014B50 (33639248)\n-233EDB Created Zip Spec      14 (20) '2.0'\n-233EDC Created OS            00 (0) 'MS-DOS'\n-233EDD Extract Zip Spec      14 (20) '2.0'\n-233EDE Extract OS            00 (0) 'MS-DOS'\n-233EDF General Purpose Flag  0808 (2056)\n+235D3F CENTRAL HEADER #1428  02014B50 (33639248)\n+235D43 Created Zip Spec      14 (20) '2.0'\n+235D44 Created OS            00 (0) 'MS-DOS'\n+235D45 Extract Zip Spec      14 (20) '2.0'\n+235D46 Extract OS            00 (0) 'MS-DOS'\n+235D47 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233EE1 Compression Method    0008 (8) 'Deflated'\n-233EE3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233EE7 CRC                   67F68BAB (1744210859)\n-233EEB Compressed Size       00000A8D (2701)\n-233EEF Uncompressed Size     0000296B (10603)\n-233EF3 Filename Length       0030 (48)\n-233EF5 Extra Length          0000 (0)\n-233EF7 Comment Length        0000 (0)\n-233EF9 Disk Start            0000 (0)\n-233EFB Int File Attributes   0000 (0)\n+235D49 Compression Method    0008 (8) 'Deflated'\n+235D4B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235D4F CRC                   D705EF34 (3607490356)\n+235D53 Compressed Size       00000476 (1142)\n+235D57 Uncompressed Size     00000CCA (3274)\n+235D5B Filename Length       003D (61)\n+235D5D Extra Length          0000 (0)\n+235D5F Comment Length        0000 (0)\n+235D61 Disk Start            0000 (0)\n+235D63 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233EFD Ext File Attributes   00000000 (0)\n-233F01 Local Header Offset   0017E7B9 (1566649)\n-233F05 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235D65 Ext File Attributes   00000000 (0)\n+235D69 Local Header Offset   0018B5DC (1619420)\n+235D6D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233F05: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235D6D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233F35 CENTRAL HEADER #1429  02014B50 (33639248)\n-233F39 Created Zip Spec      14 (20) '2.0'\n-233F3A Created OS            00 (0) 'MS-DOS'\n-233F3B Extract Zip Spec      14 (20) '2.0'\n-233F3C Extract OS            00 (0) 'MS-DOS'\n-233F3D General Purpose Flag  0808 (2056)\n+235DAA CENTRAL HEADER #1429  02014B50 (33639248)\n+235DAE Created Zip Spec      14 (20) '2.0'\n+235DAF Created OS            00 (0) 'MS-DOS'\n+235DB0 Extract Zip Spec      14 (20) '2.0'\n+235DB1 Extract OS            00 (0) 'MS-DOS'\n+235DB2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233F3F Compression Method    0008 (8) 'Deflated'\n-233F41 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233F45 CRC                   5E420043 (1581383747)\n-233F49 Compressed Size       000002B5 (693)\n-233F4D Uncompressed Size     00000563 (1379)\n-233F51 Filename Length       0039 (57)\n-233F53 Extra Length          0000 (0)\n-233F55 Comment Length        0000 (0)\n-233F57 Disk Start            0000 (0)\n-233F59 Int File Attributes   0000 (0)\n+235DB4 Compression Method    0008 (8) 'Deflated'\n+235DB6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235DBA CRC                   00000000 (0)\n+235DBE Compressed Size       00000002 (2)\n+235DC2 Uncompressed Size     00000000 (0)\n+235DC6 Filename Length       001C (28)\n+235DC8 Extra Length          0000 (0)\n+235DCA Comment Length        0000 (0)\n+235DCC Disk Start            0000 (0)\n+235DCE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233F5B Ext File Attributes   00000000 (0)\n-233F5F Local Header Offset   0017F2A4 (1569444)\n-233F63 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235DD0 Ext File Attributes   00000000 (0)\n+235DD4 Local Header Offset   0018BABD (1620669)\n+235DD8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233F63: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235DD8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-233F9C CENTRAL HEADER #1430  02014B50 (33639248)\n-233FA0 Created Zip Spec      14 (20) '2.0'\n-233FA1 Created OS            00 (0) 'MS-DOS'\n-233FA2 Extract Zip Spec      14 (20) '2.0'\n-233FA3 Extract OS            00 (0) 'MS-DOS'\n-233FA4 General Purpose Flag  0808 (2056)\n+235DF4 CENTRAL HEADER #1430  02014B50 (33639248)\n+235DF8 Created Zip Spec      14 (20) '2.0'\n+235DF9 Created OS            00 (0) 'MS-DOS'\n+235DFA Extract Zip Spec      14 (20) '2.0'\n+235DFB Extract OS            00 (0) 'MS-DOS'\n+235DFC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-233FA6 Compression Method    0008 (8) 'Deflated'\n-233FA8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-233FAC CRC                   F10F61B1 (4044317105)\n-233FB0 Compressed Size       000002B7 (695)\n-233FB4 Uncompressed Size     00000567 (1383)\n-233FB8 Filename Length       0037 (55)\n-233FBA Extra Length          0000 (0)\n-233FBC Comment Length        0000 (0)\n-233FBE Disk Start            0000 (0)\n-233FC0 Int File Attributes   0000 (0)\n+235DFE Compression Method    0008 (8) 'Deflated'\n+235E00 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235E04 CRC                   2AA01116 (715133206)\n+235E08 Compressed Size       0000021D (541)\n+235E0C Uncompressed Size     000003D7 (983)\n+235E10 Filename Length       002B (43)\n+235E12 Extra Length          0000 (0)\n+235E14 Comment Length        0000 (0)\n+235E16 Disk Start            0000 (0)\n+235E18 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-233FC2 Ext File Attributes   00000000 (0)\n-233FC6 Local Header Offset   0017F5C0 (1570240)\n-233FCA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235E1A Ext File Attributes   00000000 (0)\n+235E1E Local Header Offset   0018BB09 (1620745)\n+235E22 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x233FCA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235E22: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234001 CENTRAL HEADER #1431  02014B50 (33639248)\n-234005 Created Zip Spec      14 (20) '2.0'\n-234006 Created OS            00 (0) 'MS-DOS'\n-234007 Extract Zip Spec      14 (20) '2.0'\n-234008 Extract OS            00 (0) 'MS-DOS'\n-234009 General Purpose Flag  0808 (2056)\n+235E4D CENTRAL HEADER #1431  02014B50 (33639248)\n+235E51 Created Zip Spec      14 (20) '2.0'\n+235E52 Created OS            00 (0) 'MS-DOS'\n+235E53 Extract Zip Spec      14 (20) '2.0'\n+235E54 Extract OS            00 (0) 'MS-DOS'\n+235E55 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23400B Compression Method    0008 (8) 'Deflated'\n-23400D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234011 CRC                   F71501FC (4145349116)\n-234015 Compressed Size       0000035C (860)\n-234019 Uncompressed Size     00000924 (2340)\n-23401D Filename Length       0038 (56)\n-23401F Extra Length          0000 (0)\n-234021 Comment Length        0000 (0)\n-234023 Disk Start            0000 (0)\n-234025 Int File Attributes   0000 (0)\n+235E57 Compression Method    0008 (8) 'Deflated'\n+235E59 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235E5D CRC                   70DD7BE1 (1893563361)\n+235E61 Compressed Size       000003F2 (1010)\n+235E65 Uncompressed Size     00000AAE (2734)\n+235E69 Filename Length       0024 (36)\n+235E6B Extra Length          0000 (0)\n+235E6D Comment Length        0000 (0)\n+235E6F Disk Start            0000 (0)\n+235E71 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234027 Ext File Attributes   00000000 (0)\n-23402B Local Header Offset   0017F8DC (1571036)\n-23402F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235E73 Ext File Attributes   00000000 (0)\n+235E77 Local Header Offset   0018BD7F (1621375)\n+235E7B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23402F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235E7B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234067 CENTRAL HEADER #1432  02014B50 (33639248)\n-23406B Created Zip Spec      14 (20) '2.0'\n-23406C Created OS            00 (0) 'MS-DOS'\n-23406D Extract Zip Spec      14 (20) '2.0'\n-23406E Extract OS            00 (0) 'MS-DOS'\n-23406F General Purpose Flag  0808 (2056)\n+235E9F CENTRAL HEADER #1432  02014B50 (33639248)\n+235EA3 Created Zip Spec      14 (20) '2.0'\n+235EA4 Created OS            00 (0) 'MS-DOS'\n+235EA5 Extract Zip Spec      14 (20) '2.0'\n+235EA6 Extract OS            00 (0) 'MS-DOS'\n+235EA7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234071 Compression Method    0008 (8) 'Deflated'\n-234073 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234077 CRC                   B6DFDCE2 (3068124386)\n-23407B Compressed Size       00000A71 (2673)\n-23407F Uncompressed Size     000026B1 (9905)\n-234083 Filename Length       0040 (64)\n-234085 Extra Length          0000 (0)\n-234087 Comment Length        0000 (0)\n-234089 Disk Start            0000 (0)\n-23408B Int File Attributes   0000 (0)\n+235EA9 Compression Method    0008 (8) 'Deflated'\n+235EAB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235EAF CRC                   725BA0A7 (1918607527)\n+235EB3 Compressed Size       000003A6 (934)\n+235EB7 Uncompressed Size     000008DD (2269)\n+235EBB Filename Length       0028 (40)\n+235EBD Extra Length          0000 (0)\n+235EBF Comment Length        0000 (0)\n+235EC1 Disk Start            0000 (0)\n+235EC3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23408D Ext File Attributes   00000000 (0)\n-234091 Local Header Offset   0017FC9E (1571998)\n-234095 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235EC5 Ext File Attributes   00000000 (0)\n+235EC9 Local Header Offset   0018C1C3 (1622467)\n+235ECD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234095: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235ECD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2340D5 CENTRAL HEADER #1433  02014B50 (33639248)\n-2340D9 Created Zip Spec      14 (20) '2.0'\n-2340DA Created OS            00 (0) 'MS-DOS'\n-2340DB Extract Zip Spec      14 (20) '2.0'\n-2340DC Extract OS            00 (0) 'MS-DOS'\n-2340DD General Purpose Flag  0808 (2056)\n+235EF5 CENTRAL HEADER #1433  02014B50 (33639248)\n+235EF9 Created Zip Spec      14 (20) '2.0'\n+235EFA Created OS            00 (0) 'MS-DOS'\n+235EFB Extract Zip Spec      14 (20) '2.0'\n+235EFC Extract OS            00 (0) 'MS-DOS'\n+235EFD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2340DF Compression Method    0008 (8) 'Deflated'\n-2340E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2340E5 CRC                   3C911134 (1016140084)\n-2340E9 Compressed Size       00000264 (612)\n-2340ED Uncompressed Size     000004D9 (1241)\n-2340F1 Filename Length       0047 (71)\n-2340F3 Extra Length          0000 (0)\n-2340F5 Comment Length        0000 (0)\n-2340F7 Disk Start            0000 (0)\n-2340F9 Int File Attributes   0000 (0)\n+235EFF Compression Method    0008 (8) 'Deflated'\n+235F01 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235F05 CRC                   7076ABE9 (1886825449)\n+235F09 Compressed Size       00000D79 (3449)\n+235F0D Uncompressed Size     00003F37 (16183)\n+235F11 Filename Length       0027 (39)\n+235F13 Extra Length          0000 (0)\n+235F15 Comment Length        0000 (0)\n+235F17 Disk Start            0000 (0)\n+235F19 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2340FB Ext File Attributes   00000000 (0)\n-2340FF Local Header Offset   0018077D (1574781)\n-234103 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235F1B Ext File Attributes   00000000 (0)\n+235F1F Local Header Offset   0018C5BF (1623487)\n+235F23 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234103: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235F23: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23414A CENTRAL HEADER #1434  02014B50 (33639248)\n-23414E Created Zip Spec      14 (20) '2.0'\n-23414F Created OS            00 (0) 'MS-DOS'\n-234150 Extract Zip Spec      14 (20) '2.0'\n-234151 Extract OS            00 (0) 'MS-DOS'\n-234152 General Purpose Flag  0808 (2056)\n+235F4A CENTRAL HEADER #1434  02014B50 (33639248)\n+235F4E Created Zip Spec      14 (20) '2.0'\n+235F4F Created OS            00 (0) 'MS-DOS'\n+235F50 Extract Zip Spec      14 (20) '2.0'\n+235F51 Extract OS            00 (0) 'MS-DOS'\n+235F52 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234154 Compression Method    0008 (8) 'Deflated'\n-234156 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23415A CRC                   00000000 (0)\n-23415E Compressed Size       00000002 (2)\n-234162 Uncompressed Size     00000000 (0)\n-234166 Filename Length       0023 (35)\n-234168 Extra Length          0000 (0)\n-23416A Comment Length        0000 (0)\n-23416C Disk Start            0000 (0)\n-23416E Int File Attributes   0000 (0)\n+235F54 Compression Method    0008 (8) 'Deflated'\n+235F56 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235F5A CRC                   E7722336 (3883017014)\n+235F5E Compressed Size       00000803 (2051)\n+235F62 Uncompressed Size     00001DD8 (7640)\n+235F66 Filename Length       0026 (38)\n+235F68 Extra Length          0000 (0)\n+235F6A Comment Length        0000 (0)\n+235F6C Disk Start            0000 (0)\n+235F6E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234170 Ext File Attributes   00000000 (0)\n-234174 Local Header Offset   00180A56 (1575510)\n-234178 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235F70 Ext File Attributes   00000000 (0)\n+235F74 Local Header Offset   0018D38D (1627021)\n+235F78 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234178: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235F78: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23419B CENTRAL HEADER #1435  02014B50 (33639248)\n-23419F Created Zip Spec      14 (20) '2.0'\n-2341A0 Created OS            00 (0) 'MS-DOS'\n-2341A1 Extract Zip Spec      14 (20) '2.0'\n-2341A2 Extract OS            00 (0) 'MS-DOS'\n-2341A3 General Purpose Flag  0808 (2056)\n+235F9E CENTRAL HEADER #1435  02014B50 (33639248)\n+235FA2 Created Zip Spec      14 (20) '2.0'\n+235FA3 Created OS            00 (0) 'MS-DOS'\n+235FA4 Extract Zip Spec      14 (20) '2.0'\n+235FA5 Extract OS            00 (0) 'MS-DOS'\n+235FA6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2341A5 Compression Method    0008 (8) 'Deflated'\n-2341A7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2341AB CRC                   71E62C15 (1910909973)\n-2341AF Compressed Size       000009FA (2554)\n-2341B3 Uncompressed Size     00003076 (12406)\n-2341B7 Filename Length       0038 (56)\n-2341B9 Extra Length          0000 (0)\n-2341BB Comment Length        0000 (0)\n-2341BD Disk Start            0000 (0)\n-2341BF Int File Attributes   0000 (0)\n+235FA8 Compression Method    0008 (8) 'Deflated'\n+235FAA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+235FAE CRC                   00000000 (0)\n+235FB2 Compressed Size       00000002 (2)\n+235FB6 Uncompressed Size     00000000 (0)\n+235FBA Filename Length       002A (42)\n+235FBC Extra Length          0000 (0)\n+235FBE Comment Length        0000 (0)\n+235FC0 Disk Start            0000 (0)\n+235FC2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2341C1 Ext File Attributes   00000000 (0)\n-2341C5 Local Header Offset   00180AA9 (1575593)\n-2341C9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+235FC4 Ext File Attributes   00000000 (0)\n+235FC8 Local Header Offset   0018DBE4 (1629156)\n+235FCC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2341C9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x235FCC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234201 CENTRAL HEADER #1436  02014B50 (33639248)\n-234205 Created Zip Spec      14 (20) '2.0'\n-234206 Created OS            00 (0) 'MS-DOS'\n-234207 Extract Zip Spec      14 (20) '2.0'\n-234208 Extract OS            00 (0) 'MS-DOS'\n-234209 General Purpose Flag  0808 (2056)\n+235FF6 CENTRAL HEADER #1436  02014B50 (33639248)\n+235FFA Created Zip Spec      14 (20) '2.0'\n+235FFB Created OS            00 (0) 'MS-DOS'\n+235FFC Extract Zip Spec      14 (20) '2.0'\n+235FFD Extract OS            00 (0) 'MS-DOS'\n+235FFE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23420B Compression Method    0008 (8) 'Deflated'\n-23420D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234211 CRC                   6ACD2956 (1791830358)\n-234215 Compressed Size       00000263 (611)\n-234219 Uncompressed Size     000004BE (1214)\n-23421D Filename Length       003F (63)\n-23421F Extra Length          0000 (0)\n-234221 Comment Length        0000 (0)\n-234223 Disk Start            0000 (0)\n-234225 Int File Attributes   0000 (0)\n+236000 Compression Method    0008 (8) 'Deflated'\n+236002 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236006 CRC                   CC527EDE (3427958494)\n+23600A Compressed Size       00000397 (919)\n+23600E Uncompressed Size     00000B3D (2877)\n+236012 Filename Length       0031 (49)\n+236014 Extra Length          0000 (0)\n+236016 Comment Length        0000 (0)\n+236018 Disk Start            0000 (0)\n+23601A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234227 Ext File Attributes   00000000 (0)\n-23422B Local Header Offset   00181509 (1578249)\n-23422F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23601C Ext File Attributes   00000000 (0)\n+236020 Local Header Offset   0018DC3E (1629246)\n+236024 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23422F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236024: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23426E CENTRAL HEADER #1437  02014B50 (33639248)\n-234272 Created Zip Spec      14 (20) '2.0'\n-234273 Created OS            00 (0) 'MS-DOS'\n-234274 Extract Zip Spec      14 (20) '2.0'\n-234275 Extract OS            00 (0) 'MS-DOS'\n-234276 General Purpose Flag  0808 (2056)\n+236055 CENTRAL HEADER #1437  02014B50 (33639248)\n+236059 Created Zip Spec      14 (20) '2.0'\n+23605A Created OS            00 (0) 'MS-DOS'\n+23605B Extract Zip Spec      14 (20) '2.0'\n+23605C Extract OS            00 (0) 'MS-DOS'\n+23605D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234278 Compression Method    0008 (8) 'Deflated'\n-23427A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23427E CRC                   32A6602D (849764397)\n-234282 Compressed Size       0000074E (1870)\n-234286 Uncompressed Size     00001E83 (7811)\n-23428A Filename Length       0048 (72)\n-23428C Extra Length          0000 (0)\n-23428E Comment Length        0000 (0)\n-234290 Disk Start            0000 (0)\n-234292 Int File Attributes   0000 (0)\n+23605F Compression Method    0008 (8) 'Deflated'\n+236061 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236065 CRC                   9B978690 (2610398864)\n+236069 Compressed Size       0000003D (61)\n+23606D Uncompressed Size     00000040 (64)\n+236071 Filename Length       0038 (56)\n+236073 Extra Length          0000 (0)\n+236075 Comment Length        0000 (0)\n+236077 Disk Start            0000 (0)\n+236079 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234294 Ext File Attributes   00000000 (0)\n-234298 Local Header Offset   001817D9 (1578969)\n-23429C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23607B Ext File Attributes   00000000 (0)\n+23607F Local Header Offset   0018E034 (1630260)\n+236083 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23429C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236083: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2342E4 CENTRAL HEADER #1438  02014B50 (33639248)\n-2342E8 Created Zip Spec      14 (20) '2.0'\n-2342E9 Created OS            00 (0) 'MS-DOS'\n-2342EA Extract Zip Spec      14 (20) '2.0'\n-2342EB Extract OS            00 (0) 'MS-DOS'\n-2342EC General Purpose Flag  0808 (2056)\n+2360BB CENTRAL HEADER #1438  02014B50 (33639248)\n+2360BF Created Zip Spec      14 (20) '2.0'\n+2360C0 Created OS            00 (0) 'MS-DOS'\n+2360C1 Extract Zip Spec      14 (20) '2.0'\n+2360C2 Extract OS            00 (0) 'MS-DOS'\n+2360C3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2342EE Compression Method    0008 (8) 'Deflated'\n-2342F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2342F4 CRC                   DA761D6A (3665173866)\n-2342F8 Compressed Size       00000267 (615)\n-2342FC Uncompressed Size     000004E6 (1254)\n-234300 Filename Length       004F (79)\n-234302 Extra Length          0000 (0)\n-234304 Comment Length        0000 (0)\n-234306 Disk Start            0000 (0)\n-234308 Int File Attributes   0000 (0)\n+2360C5 Compression Method    0008 (8) 'Deflated'\n+2360C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2360CB CRC                   00000000 (0)\n+2360CF Compressed Size       00000002 (2)\n+2360D3 Uncompressed Size     00000000 (0)\n+2360D7 Filename Length       0022 (34)\n+2360D9 Extra Length          0000 (0)\n+2360DB Comment Length        0000 (0)\n+2360DD Disk Start            0000 (0)\n+2360DF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23430A Ext File Attributes   00000000 (0)\n-23430E Local Header Offset   00181F9D (1580957)\n-234312 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2360E1 Ext File Attributes   00000000 (0)\n+2360E5 Local Header Offset   0018E0D7 (1630423)\n+2360E9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234312: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2360E9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234361 CENTRAL HEADER #1439  02014B50 (33639248)\n-234365 Created Zip Spec      14 (20) '2.0'\n-234366 Created OS            00 (0) 'MS-DOS'\n-234367 Extract Zip Spec      14 (20) '2.0'\n-234368 Extract OS            00 (0) 'MS-DOS'\n-234369 General Purpose Flag  0808 (2056)\n+23610B CENTRAL HEADER #1439  02014B50 (33639248)\n+23610F Created Zip Spec      14 (20) '2.0'\n+236110 Created OS            00 (0) 'MS-DOS'\n+236111 Extract Zip Spec      14 (20) '2.0'\n+236112 Extract OS            00 (0) 'MS-DOS'\n+236113 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23436B Compression Method    0008 (8) 'Deflated'\n-23436D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234371 CRC                   00000000 (0)\n-234375 Compressed Size       00000002 (2)\n-234379 Uncompressed Size     00000000 (0)\n-23437D Filename Length       0019 (25)\n-23437F Extra Length          0000 (0)\n-234381 Comment Length        0000 (0)\n-234383 Disk Start            0000 (0)\n-234385 Int File Attributes   0000 (0)\n+236115 Compression Method    0008 (8) 'Deflated'\n+236117 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23611B CRC                   072B28E1 (120269025)\n+23611F Compressed Size       00000244 (580)\n+236123 Uncompressed Size     00000423 (1059)\n+236127 Filename Length       0030 (48)\n+236129 Extra Length          0000 (0)\n+23612B Comment Length        0000 (0)\n+23612D Disk Start            0000 (0)\n+23612F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234387 Ext File Attributes   00000000 (0)\n-23438B Local Header Offset   00182281 (1581697)\n-23438F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+236131 Ext File Attributes   00000000 (0)\n+236135 Local Header Offset   0018E129 (1630505)\n+236139 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23438F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236139: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2343A8 CENTRAL HEADER #1440  02014B50 (33639248)\n-2343AC Created Zip Spec      14 (20) '2.0'\n-2343AD Created OS            00 (0) 'MS-DOS'\n-2343AE Extract Zip Spec      14 (20) '2.0'\n-2343AF Extract OS            00 (0) 'MS-DOS'\n-2343B0 General Purpose Flag  0808 (2056)\n+236169 CENTRAL HEADER #1440  02014B50 (33639248)\n+23616D Created Zip Spec      14 (20) '2.0'\n+23616E Created OS            00 (0) 'MS-DOS'\n+23616F Extract Zip Spec      14 (20) '2.0'\n+236170 Extract OS            00 (0) 'MS-DOS'\n+236171 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2343B2 Compression Method    0008 (8) 'Deflated'\n-2343B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2343B8 CRC                   974A673F (2538235711)\n-2343BC Compressed Size       00000283 (643)\n-2343C0 Uncompressed Size     0000050A (1290)\n-2343C4 Filename Length       0027 (39)\n-2343C6 Extra Length          0000 (0)\n-2343C8 Comment Length        0000 (0)\n-2343CA Disk Start            0000 (0)\n-2343CC Int File Attributes   0000 (0)\n+236173 Compression Method    0008 (8) 'Deflated'\n+236175 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236179 CRC                   2705935A (654676826)\n+23617D Compressed Size       000002A1 (673)\n+236181 Uncompressed Size     000005C8 (1480)\n+236185 Filename Length       0030 (48)\n+236187 Extra Length          0000 (0)\n+236189 Comment Length        0000 (0)\n+23618B Disk Start            0000 (0)\n+23618D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2343CE Ext File Attributes   00000000 (0)\n-2343D2 Local Header Offset   001822CA (1581770)\n-2343D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23618F Ext File Attributes   00000000 (0)\n+236193 Local Header Offset   0018E3CB (1631179)\n+236197 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2343D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236197: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2343FD CENTRAL HEADER #1441  02014B50 (33639248)\n-234401 Created Zip Spec      14 (20) '2.0'\n-234402 Created OS            00 (0) 'MS-DOS'\n-234403 Extract Zip Spec      14 (20) '2.0'\n-234404 Extract OS            00 (0) 'MS-DOS'\n-234405 General Purpose Flag  0808 (2056)\n+2361C7 CENTRAL HEADER #1441  02014B50 (33639248)\n+2361CB Created Zip Spec      14 (20) '2.0'\n+2361CC Created OS            00 (0) 'MS-DOS'\n+2361CD Extract Zip Spec      14 (20) '2.0'\n+2361CE Extract OS            00 (0) 'MS-DOS'\n+2361CF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234407 Compression Method    0008 (8) 'Deflated'\n-234409 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23440D CRC                   8692FC93 (2257779859)\n-234411 Compressed Size       0000020D (525)\n-234415 Uncompressed Size     00000396 (918)\n-234419 Filename Length       002C (44)\n-23441B Extra Length          0000 (0)\n-23441D Comment Length        0000 (0)\n-23441F Disk Start            0000 (0)\n-234421 Int File Attributes   0000 (0)\n+2361D1 Compression Method    0008 (8) 'Deflated'\n+2361D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2361D7 CRC                   9F97C867 (2677524583)\n+2361DB Compressed Size       000002FF (767)\n+2361DF Uncompressed Size     000008EC (2284)\n+2361E3 Filename Length       0030 (48)\n+2361E5 Extra Length          0000 (0)\n+2361E7 Comment Length        0000 (0)\n+2361E9 Disk Start            0000 (0)\n+2361EB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234423 Ext File Attributes   00000000 (0)\n-234427 Local Header Offset   001825A2 (1582498)\n-23442B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2361ED Ext File Attributes   00000000 (0)\n+2361F1 Local Header Offset   0018E6CA (1631946)\n+2361F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23442B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2361F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234457 CENTRAL HEADER #1442  02014B50 (33639248)\n-23445B Created Zip Spec      14 (20) '2.0'\n-23445C Created OS            00 (0) 'MS-DOS'\n-23445D Extract Zip Spec      14 (20) '2.0'\n-23445E Extract OS            00 (0) 'MS-DOS'\n-23445F General Purpose Flag  0808 (2056)\n+236225 CENTRAL HEADER #1442  02014B50 (33639248)\n+236229 Created Zip Spec      14 (20) '2.0'\n+23622A Created OS            00 (0) 'MS-DOS'\n+23622B Extract Zip Spec      14 (20) '2.0'\n+23622C Extract OS            00 (0) 'MS-DOS'\n+23622D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234461 Compression Method    0008 (8) 'Deflated'\n-234463 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234467 CRC                   51FB7003 (1375432707)\n-23446B Compressed Size       0000024D (589)\n-23446F Uncompressed Size     0000044C (1100)\n-234473 Filename Length       0025 (37)\n-234475 Extra Length          0000 (0)\n-234477 Comment Length        0000 (0)\n-234479 Disk Start            0000 (0)\n-23447B Int File Attributes   0000 (0)\n+23622F Compression Method    0008 (8) 'Deflated'\n+236231 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236235 CRC                   BCDD8DC5 (3168636357)\n+236239 Compressed Size       00000328 (808)\n+23623D Uncompressed Size     00000AB5 (2741)\n+236241 Filename Length       0031 (49)\n+236243 Extra Length          0000 (0)\n+236245 Comment Length        0000 (0)\n+236247 Disk Start            0000 (0)\n+236249 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23447D Ext File Attributes   00000000 (0)\n-234481 Local Header Offset   00182809 (1583113)\n-234485 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23624B Ext File Attributes   00000000 (0)\n+23624F Local Header Offset   0018EA27 (1632807)\n+236253 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234485: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236253: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2344AA CENTRAL HEADER #1443  02014B50 (33639248)\n-2344AE Created Zip Spec      14 (20) '2.0'\n-2344AF Created OS            00 (0) 'MS-DOS'\n-2344B0 Extract Zip Spec      14 (20) '2.0'\n-2344B1 Extract OS            00 (0) 'MS-DOS'\n-2344B2 General Purpose Flag  0808 (2056)\n+236284 CENTRAL HEADER #1443  02014B50 (33639248)\n+236288 Created Zip Spec      14 (20) '2.0'\n+236289 Created OS            00 (0) 'MS-DOS'\n+23628A Extract Zip Spec      14 (20) '2.0'\n+23628B Extract OS            00 (0) 'MS-DOS'\n+23628C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2344B4 Compression Method    0008 (8) 'Deflated'\n-2344B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2344BA CRC                   9DE5257E (2649040254)\n-2344BE Compressed Size       00000287 (647)\n-2344C2 Uncompressed Size     000004ED (1261)\n-2344C6 Filename Length       002C (44)\n-2344C8 Extra Length          0000 (0)\n-2344CA Comment Length        0000 (0)\n-2344CC Disk Start            0000 (0)\n-2344CE Int File Attributes   0000 (0)\n+23628E Compression Method    0008 (8) 'Deflated'\n+236290 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236294 CRC                   27A2E85E (664987742)\n+236298 Compressed Size       00000520 (1312)\n+23629C Uncompressed Size     00000DAC (3500)\n+2362A0 Filename Length       0032 (50)\n+2362A2 Extra Length          0000 (0)\n+2362A4 Comment Length        0000 (0)\n+2362A6 Disk Start            0000 (0)\n+2362A8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2344D0 Ext File Attributes   00000000 (0)\n-2344D4 Local Header Offset   00182AA9 (1583785)\n-2344D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2362AA Ext File Attributes   00000000 (0)\n+2362AE Local Header Offset   0018EDAE (1633710)\n+2362B2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2344D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2362B2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234504 CENTRAL HEADER #1444  02014B50 (33639248)\n-234508 Created Zip Spec      14 (20) '2.0'\n-234509 Created OS            00 (0) 'MS-DOS'\n-23450A Extract Zip Spec      14 (20) '2.0'\n-23450B Extract OS            00 (0) 'MS-DOS'\n-23450C General Purpose Flag  0808 (2056)\n+2362E4 CENTRAL HEADER #1444  02014B50 (33639248)\n+2362E8 Created Zip Spec      14 (20) '2.0'\n+2362E9 Created OS            00 (0) 'MS-DOS'\n+2362EA Extract Zip Spec      14 (20) '2.0'\n+2362EB Extract OS            00 (0) 'MS-DOS'\n+2362EC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23450E Compression Method    0008 (8) 'Deflated'\n-234510 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234514 CRC                   78905E9C (2022727324)\n-234518 Compressed Size       000005AD (1453)\n-23451C Uncompressed Size     00000D44 (3396)\n-234520 Filename Length       002C (44)\n-234522 Extra Length          0000 (0)\n-234524 Comment Length        0000 (0)\n-234526 Disk Start            0000 (0)\n-234528 Int File Attributes   0000 (0)\n+2362EE Compression Method    0008 (8) 'Deflated'\n+2362F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2362F4 CRC                   58C605A3 (1489372579)\n+2362F8 Compressed Size       00000430 (1072)\n+2362FC Uncompressed Size     00000924 (2340)\n+236300 Filename Length       0033 (51)\n+236302 Extra Length          0000 (0)\n+236304 Comment Length        0000 (0)\n+236306 Disk Start            0000 (0)\n+236308 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23452A Ext File Attributes   00000000 (0)\n-23452E Local Header Offset   00182D8A (1584522)\n-234532 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23630A Ext File Attributes   00000000 (0)\n+23630E Local Header Offset   0018F32E (1635118)\n+236312 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234532: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236312: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23455E CENTRAL HEADER #1445  02014B50 (33639248)\n-234562 Created Zip Spec      14 (20) '2.0'\n-234563 Created OS            00 (0) 'MS-DOS'\n-234564 Extract Zip Spec      14 (20) '2.0'\n-234565 Extract OS            00 (0) 'MS-DOS'\n-234566 General Purpose Flag  0808 (2056)\n+236345 CENTRAL HEADER #1445  02014B50 (33639248)\n+236349 Created Zip Spec      14 (20) '2.0'\n+23634A Created OS            00 (0) 'MS-DOS'\n+23634B Extract Zip Spec      14 (20) '2.0'\n+23634C Extract OS            00 (0) 'MS-DOS'\n+23634D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234568 Compression Method    0008 (8) 'Deflated'\n-23456A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23456E CRC                   00000000 (0)\n-234572 Compressed Size       00000002 (2)\n-234576 Uncompressed Size     00000000 (0)\n-23457A Filename Length       0021 (33)\n-23457C Extra Length          0000 (0)\n-23457E Comment Length        0000 (0)\n-234580 Disk Start            0000 (0)\n-234582 Int File Attributes   0000 (0)\n+23634F Compression Method    0008 (8) 'Deflated'\n+236351 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236355 CRC                   FF4A6A33 (4283066931)\n+236359 Compressed Size       00000421 (1057)\n+23635D Uncompressed Size     00000A23 (2595)\n+236361 Filename Length       0034 (52)\n+236363 Extra Length          0000 (0)\n+236365 Comment Length        0000 (0)\n+236367 Disk Start            0000 (0)\n+236369 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234584 Ext File Attributes   00000000 (0)\n-234588 Local Header Offset   00183391 (1586065)\n-23458C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23636B Ext File Attributes   00000000 (0)\n+23636F Local Header Offset   0018F7BF (1636287)\n+236373 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23458C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236373: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2345AD CENTRAL HEADER #1446  02014B50 (33639248)\n-2345B1 Created Zip Spec      14 (20) '2.0'\n-2345B2 Created OS            00 (0) 'MS-DOS'\n-2345B3 Extract Zip Spec      14 (20) '2.0'\n-2345B4 Extract OS            00 (0) 'MS-DOS'\n-2345B5 General Purpose Flag  0808 (2056)\n+2363A7 CENTRAL HEADER #1446  02014B50 (33639248)\n+2363AB Created Zip Spec      14 (20) '2.0'\n+2363AC Created OS            00 (0) 'MS-DOS'\n+2363AD Extract Zip Spec      14 (20) '2.0'\n+2363AE Extract OS            00 (0) 'MS-DOS'\n+2363AF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2345B7 Compression Method    0008 (8) 'Deflated'\n-2345B9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2345BD CRC                   FA4C7A14 (4199315988)\n-2345C1 Compressed Size       00000627 (1575)\n-2345C5 Uncompressed Size     00001336 (4918)\n-2345C9 Filename Length       003C (60)\n-2345CB Extra Length          0000 (0)\n-2345CD Comment Length        0000 (0)\n-2345CF Disk Start            0000 (0)\n-2345D1 Int File Attributes   0000 (0)\n+2363B1 Compression Method    0008 (8) 'Deflated'\n+2363B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2363B7 CRC                   00000000 (0)\n+2363BB Compressed Size       00000002 (2)\n+2363BF Uncompressed Size     00000000 (0)\n+2363C3 Filename Length       002A (42)\n+2363C5 Extra Length          0000 (0)\n+2363C7 Comment Length        0000 (0)\n+2363C9 Disk Start            0000 (0)\n+2363CB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2345D3 Ext File Attributes   00000000 (0)\n-2345D7 Local Header Offset   001833E2 (1586146)\n-2345DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2363CD Ext File Attributes   00000000 (0)\n+2363D1 Local Header Offset   0018FC42 (1637442)\n+2363D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2345DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2363D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234617 CENTRAL HEADER #1447  02014B50 (33639248)\n-23461B Created Zip Spec      14 (20) '2.0'\n-23461C Created OS            00 (0) 'MS-DOS'\n-23461D Extract Zip Spec      14 (20) '2.0'\n-23461E Extract OS            00 (0) 'MS-DOS'\n-23461F General Purpose Flag  0808 (2056)\n+2363FF CENTRAL HEADER #1447  02014B50 (33639248)\n+236403 Created Zip Spec      14 (20) '2.0'\n+236404 Created OS            00 (0) 'MS-DOS'\n+236405 Extract Zip Spec      14 (20) '2.0'\n+236406 Extract OS            00 (0) 'MS-DOS'\n+236407 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234621 Compression Method    0008 (8) 'Deflated'\n-234623 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234627 CRC                   9C73731D (2624811805)\n-23462B Compressed Size       0000024E (590)\n-23462F Uncompressed Size     00000460 (1120)\n-234633 Filename Length       003C (60)\n-234635 Extra Length          0000 (0)\n-234637 Comment Length        0000 (0)\n-234639 Disk Start            0000 (0)\n-23463B Int File Attributes   0000 (0)\n+236409 Compression Method    0008 (8) 'Deflated'\n+23640B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23640F CRC                   BC3782BE (3157754558)\n+236413 Compressed Size       000003AD (941)\n+236417 Uncompressed Size     00000865 (2149)\n+23641B Filename Length       0048 (72)\n+23641D Extra Length          0000 (0)\n+23641F Comment Length        0000 (0)\n+236421 Disk Start            0000 (0)\n+236423 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23463D Ext File Attributes   00000000 (0)\n-234641 Local Header Offset   00183A73 (1587827)\n-234645 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+236425 Ext File Attributes   00000000 (0)\n+236429 Local Header Offset   0018FC9C (1637532)\n+23642D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234645: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23642D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234681 CENTRAL HEADER #1448  02014B50 (33639248)\n-234685 Created Zip Spec      14 (20) '2.0'\n-234686 Created OS            00 (0) 'MS-DOS'\n-234687 Extract Zip Spec      14 (20) '2.0'\n-234688 Extract OS            00 (0) 'MS-DOS'\n-234689 General Purpose Flag  0808 (2056)\n+236475 CENTRAL HEADER #1448  02014B50 (33639248)\n+236479 Created Zip Spec      14 (20) '2.0'\n+23647A Created OS            00 (0) 'MS-DOS'\n+23647B Extract Zip Spec      14 (20) '2.0'\n+23647C Extract OS            00 (0) 'MS-DOS'\n+23647D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23468B Compression Method    0008 (8) 'Deflated'\n-23468D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234691 CRC                   10FA9E81 (284860033)\n-234695 Compressed Size       00000934 (2356)\n-234699 Uncompressed Size     000021D4 (8660)\n-23469D Filename Length       0033 (51)\n-23469F Extra Length          0000 (0)\n-2346A1 Comment Length        0000 (0)\n-2346A3 Disk Start            0000 (0)\n-2346A5 Int File Attributes   0000 (0)\n+23647F Compression Method    0008 (8) 'Deflated'\n+236481 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236485 CRC                   50042D13 (1342450963)\n+236489 Compressed Size       00000281 (641)\n+23648D Uncompressed Size     000004B3 (1203)\n+236491 Filename Length       0045 (69)\n+236493 Extra Length          0000 (0)\n+236495 Comment Length        0000 (0)\n+236497 Disk Start            0000 (0)\n+236499 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2346A7 Ext File Attributes   00000000 (0)\n-2346AB Local Header Offset   00183D2B (1588523)\n-2346AF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23649B Ext File Attributes   00000000 (0)\n+23649F Local Header Offset   001900BF (1638591)\n+2364A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2346AF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2364A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2346E2 CENTRAL HEADER #1449  02014B50 (33639248)\n-2346E6 Created Zip Spec      14 (20) '2.0'\n-2346E7 Created OS            00 (0) 'MS-DOS'\n-2346E8 Extract Zip Spec      14 (20) '2.0'\n-2346E9 Extract OS            00 (0) 'MS-DOS'\n-2346EA General Purpose Flag  0808 (2056)\n+2364E8 CENTRAL HEADER #1449  02014B50 (33639248)\n+2364EC Created Zip Spec      14 (20) '2.0'\n+2364ED Created OS            00 (0) 'MS-DOS'\n+2364EE Extract Zip Spec      14 (20) '2.0'\n+2364EF Extract OS            00 (0) 'MS-DOS'\n+2364F0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2346EC Compression Method    0008 (8) 'Deflated'\n-2346EE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2346F2 CRC                   A1A88F0D (2712178445)\n-2346F6 Compressed Size       0000024C (588)\n-2346FA Uncompressed Size     00000460 (1120)\n-2346FE Filename Length       003C (60)\n-234700 Extra Length          0000 (0)\n-234702 Comment Length        0000 (0)\n-234704 Disk Start            0000 (0)\n-234706 Int File Attributes   0000 (0)\n+2364F2 Compression Method    0008 (8) 'Deflated'\n+2364F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2364F8 CRC                   00000000 (0)\n+2364FC Compressed Size       00000002 (2)\n+236500 Uncompressed Size     00000000 (0)\n+236504 Filename Length       0038 (56)\n+236506 Extra Length          0000 (0)\n+236508 Comment Length        0000 (0)\n+23650A Disk Start            0000 (0)\n+23650C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234708 Ext File Attributes   00000000 (0)\n-23470C Local Header Offset   001846C0 (1590976)\n-234710 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23650E Ext File Attributes   00000000 (0)\n+236512 Local Header Offset   001903B3 (1639347)\n+236516 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234710: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236516: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23474C CENTRAL HEADER #1450  02014B50 (33639248)\n-234750 Created Zip Spec      14 (20) '2.0'\n-234751 Created OS            00 (0) 'MS-DOS'\n-234752 Extract Zip Spec      14 (20) '2.0'\n-234753 Extract OS            00 (0) 'MS-DOS'\n-234754 General Purpose Flag  0808 (2056)\n+23654E CENTRAL HEADER #1450  02014B50 (33639248)\n+236552 Created Zip Spec      14 (20) '2.0'\n+236553 Created OS            00 (0) 'MS-DOS'\n+236554 Extract Zip Spec      14 (20) '2.0'\n+236555 Extract OS            00 (0) 'MS-DOS'\n+236556 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234756 Compression Method    0008 (8) 'Deflated'\n-234758 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23475C CRC                   00000000 (0)\n-234760 Compressed Size       00000002 (2)\n-234764 Uncompressed Size     00000000 (0)\n-234768 Filename Length       001F (31)\n-23476A Extra Length          0000 (0)\n-23476C Comment Length        0000 (0)\n-23476E Disk Start            0000 (0)\n-234770 Int File Attributes   0000 (0)\n+236558 Compression Method    0008 (8) 'Deflated'\n+23655A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23655E CRC                   91053145 (2433036613)\n+236562 Compressed Size       00000357 (855)\n+236566 Uncompressed Size     00000789 (1929)\n+23656A Filename Length       003F (63)\n+23656C Extra Length          0000 (0)\n+23656E Comment Length        0000 (0)\n+236570 Disk Start            0000 (0)\n+236572 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234772 Ext File Attributes   00000000 (0)\n-234776 Local Header Offset   00184976 (1591670)\n-23477A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+236574 Ext File Attributes   00000000 (0)\n+236578 Local Header Offset   0019041B (1639451)\n+23657C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23477A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23657C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234799 CENTRAL HEADER #1451  02014B50 (33639248)\n-23479D Created Zip Spec      14 (20) '2.0'\n-23479E Created OS            00 (0) 'MS-DOS'\n-23479F Extract Zip Spec      14 (20) '2.0'\n-2347A0 Extract OS            00 (0) 'MS-DOS'\n-2347A1 General Purpose Flag  0808 (2056)\n+2365BB CENTRAL HEADER #1451  02014B50 (33639248)\n+2365BF Created Zip Spec      14 (20) '2.0'\n+2365C0 Created OS            00 (0) 'MS-DOS'\n+2365C1 Extract Zip Spec      14 (20) '2.0'\n+2365C2 Extract OS            00 (0) 'MS-DOS'\n+2365C3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2347A3 Compression Method    0008 (8) 'Deflated'\n-2347A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2347A9 CRC                   EA5FE743 (3932153667)\n-2347AD Compressed Size       00000907 (2311)\n-2347B1 Uncompressed Size     00002351 (9041)\n-2347B5 Filename Length       0030 (48)\n-2347B7 Extra Length          0000 (0)\n-2347B9 Comment Length        0000 (0)\n-2347BB Disk Start            0000 (0)\n-2347BD Int File Attributes   0000 (0)\n+2365C5 Compression Method    0008 (8) 'Deflated'\n+2365C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2365CB CRC                   F5EE859D (4126049693)\n+2365CF Compressed Size       0000004B (75)\n+2365D3 Uncompressed Size     0000004E (78)\n+2365D7 Filename Length       0046 (70)\n+2365D9 Extra Length          0000 (0)\n+2365DB Comment Length        0000 (0)\n+2365DD Disk Start            0000 (0)\n+2365DF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2347BF Ext File Attributes   00000000 (0)\n-2347C3 Local Header Offset   001849C5 (1591749)\n-2347C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2365E1 Ext File Attributes   00000000 (0)\n+2365E5 Local Header Offset   001907DF (1640415)\n+2365E9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2347C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2365E9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2347F7 CENTRAL HEADER #1452  02014B50 (33639248)\n-2347FB Created Zip Spec      14 (20) '2.0'\n-2347FC Created OS            00 (0) 'MS-DOS'\n-2347FD Extract Zip Spec      14 (20) '2.0'\n-2347FE Extract OS            00 (0) 'MS-DOS'\n-2347FF General Purpose Flag  0808 (2056)\n+23662F CENTRAL HEADER #1452  02014B50 (33639248)\n+236633 Created Zip Spec      14 (20) '2.0'\n+236634 Created OS            00 (0) 'MS-DOS'\n+236635 Extract Zip Spec      14 (20) '2.0'\n+236636 Extract OS            00 (0) 'MS-DOS'\n+236637 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234801 Compression Method    0008 (8) 'Deflated'\n-234803 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234807 CRC                   8FE44697 (2414102167)\n-23480B Compressed Size       000003FB (1019)\n-23480F Uncompressed Size     00000B05 (2821)\n-234813 Filename Length       0037 (55)\n-234815 Extra Length          0000 (0)\n-234817 Comment Length        0000 (0)\n-234819 Disk Start            0000 (0)\n-23481B Int File Attributes   0000 (0)\n+236639 Compression Method    0008 (8) 'Deflated'\n+23663B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23663F CRC                   00000000 (0)\n+236643 Compressed Size       00000002 (2)\n+236647 Uncompressed Size     00000000 (0)\n+23664B Filename Length       002B (43)\n+23664D Extra Length          0000 (0)\n+23664F Comment Length        0000 (0)\n+236651 Disk Start            0000 (0)\n+236653 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23481D Ext File Attributes   00000000 (0)\n-234821 Local Header Offset   0018532A (1594154)\n-234825 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+236655 Ext File Attributes   00000000 (0)\n+236659 Local Header Offset   0019089E (1640606)\n+23665D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234825: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23665D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23485C CENTRAL HEADER #1453  02014B50 (33639248)\n-234860 Created Zip Spec      14 (20) '2.0'\n-234861 Created OS            00 (0) 'MS-DOS'\n-234862 Extract Zip Spec      14 (20) '2.0'\n-234863 Extract OS            00 (0) 'MS-DOS'\n-234864 General Purpose Flag  0808 (2056)\n+236688 CENTRAL HEADER #1453  02014B50 (33639248)\n+23668C Created Zip Spec      14 (20) '2.0'\n+23668D Created OS            00 (0) 'MS-DOS'\n+23668E Extract Zip Spec      14 (20) '2.0'\n+23668F Extract OS            00 (0) 'MS-DOS'\n+236690 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234866 Compression Method    0008 (8) 'Deflated'\n-234868 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23486C CRC                   8F262250 (2401641040)\n-234870 Compressed Size       00000B74 (2932)\n-234874 Uncompressed Size     00002B4E (11086)\n-234878 Filename Length       0031 (49)\n-23487A Extra Length          0000 (0)\n-23487C Comment Length        0000 (0)\n-23487E Disk Start            0000 (0)\n-234880 Int File Attributes   0000 (0)\n+236692 Compression Method    0008 (8) 'Deflated'\n+236694 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236698 CRC                   42503EDC (1112555228)\n+23669C Compressed Size       00000427 (1063)\n+2366A0 Uncompressed Size     00000D9C (3484)\n+2366A4 Filename Length       0043 (67)\n+2366A6 Extra Length          0000 (0)\n+2366A8 Comment Length        0000 (0)\n+2366AA Disk Start            0000 (0)\n+2366AC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234882 Ext File Attributes   00000000 (0)\n-234886 Local Header Offset   0018578A (1595274)\n-23488A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2366AE Ext File Attributes   00000000 (0)\n+2366B2 Local Header Offset   001908F9 (1640697)\n+2366B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23488A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2366B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2348BB CENTRAL HEADER #1454  02014B50 (33639248)\n-2348BF Created Zip Spec      14 (20) '2.0'\n-2348C0 Created OS            00 (0) 'MS-DOS'\n-2348C1 Extract Zip Spec      14 (20) '2.0'\n-2348C2 Extract OS            00 (0) 'MS-DOS'\n-2348C3 General Purpose Flag  0808 (2056)\n+2366F9 CENTRAL HEADER #1454  02014B50 (33639248)\n+2366FD Created Zip Spec      14 (20) '2.0'\n+2366FE Created OS            00 (0) 'MS-DOS'\n+2366FF Extract Zip Spec      14 (20) '2.0'\n+236700 Extract OS            00 (0) 'MS-DOS'\n+236701 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2348C5 Compression Method    0008 (8) 'Deflated'\n-2348C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2348CB CRC                   DAB7FE63 (3669491299)\n-2348CF Compressed Size       00000592 (1426)\n-2348D3 Uncompressed Size     00001734 (5940)\n-2348D7 Filename Length       002E (46)\n-2348D9 Extra Length          0000 (0)\n-2348DB Comment Length        0000 (0)\n-2348DD Disk Start            0000 (0)\n-2348DF Int File Attributes   0000 (0)\n+236703 Compression Method    0008 (8) 'Deflated'\n+236705 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236709 CRC                   86605046 (2254458950)\n+23670D Compressed Size       000003DF (991)\n+236711 Uncompressed Size     00000CE3 (3299)\n+236715 Filename Length       0044 (68)\n+236717 Extra Length          0000 (0)\n+236719 Comment Length        0000 (0)\n+23671B Disk Start            0000 (0)\n+23671D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2348E1 Ext File Attributes   00000000 (0)\n-2348E5 Local Header Offset   0018635D (1598301)\n-2348E9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23671F Ext File Attributes   00000000 (0)\n+236723 Local Header Offset   00190D91 (1641873)\n+236727 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2348E9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236727: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234917 CENTRAL HEADER #1455  02014B50 (33639248)\n-23491B Created Zip Spec      14 (20) '2.0'\n-23491C Created OS            00 (0) 'MS-DOS'\n-23491D Extract Zip Spec      14 (20) '2.0'\n-23491E Extract OS            00 (0) 'MS-DOS'\n-23491F General Purpose Flag  0808 (2056)\n+23676B CENTRAL HEADER #1455  02014B50 (33639248)\n+23676F Created Zip Spec      14 (20) '2.0'\n+236770 Created OS            00 (0) 'MS-DOS'\n+236771 Extract Zip Spec      14 (20) '2.0'\n+236772 Extract OS            00 (0) 'MS-DOS'\n+236773 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234921 Compression Method    0008 (8) 'Deflated'\n-234923 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234927 CRC                   00000000 (0)\n-23492B Compressed Size       00000002 (2)\n-23492F Uncompressed Size     00000000 (0)\n-234933 Filename Length       0022 (34)\n-234935 Extra Length          0000 (0)\n-234937 Comment Length        0000 (0)\n-234939 Disk Start            0000 (0)\n-23493B Int File Attributes   0000 (0)\n+236775 Compression Method    0008 (8) 'Deflated'\n+236777 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23677B CRC                   C83ECB39 (3359558457)\n+23677F Compressed Size       00000329 (809)\n+236783 Uncompressed Size     000007BB (1979)\n+236787 Filename Length       0045 (69)\n+236789 Extra Length          0000 (0)\n+23678B Comment Length        0000 (0)\n+23678D Disk Start            0000 (0)\n+23678F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23493D Ext File Attributes   00000000 (0)\n-234941 Local Header Offset   0018694B (1599819)\n-234945 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+236791 Ext File Attributes   00000000 (0)\n+236795 Local Header Offset   001911E2 (1642978)\n+236799 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234945: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236799: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234967 CENTRAL HEADER #1456  02014B50 (33639248)\n-23496B Created Zip Spec      14 (20) '2.0'\n-23496C Created OS            00 (0) 'MS-DOS'\n-23496D Extract Zip Spec      14 (20) '2.0'\n-23496E Extract OS            00 (0) 'MS-DOS'\n-23496F General Purpose Flag  0808 (2056)\n+2367DE CENTRAL HEADER #1456  02014B50 (33639248)\n+2367E2 Created Zip Spec      14 (20) '2.0'\n+2367E3 Created OS            00 (0) 'MS-DOS'\n+2367E4 Extract Zip Spec      14 (20) '2.0'\n+2367E5 Extract OS            00 (0) 'MS-DOS'\n+2367E6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234971 Compression Method    0008 (8) 'Deflated'\n-234973 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234977 CRC                   2AFEDAAE (721345198)\n-23497B Compressed Size       000003DA (986)\n-23497F Uncompressed Size     00000992 (2450)\n-234983 Filename Length       0036 (54)\n-234985 Extra Length          0000 (0)\n-234987 Comment Length        0000 (0)\n-234989 Disk Start            0000 (0)\n-23498B Int File Attributes   0000 (0)\n+2367E8 Compression Method    0008 (8) 'Deflated'\n+2367EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2367EE CRC                   00000000 (0)\n+2367F2 Compressed Size       00000002 (2)\n+2367F6 Uncompressed Size     00000000 (0)\n+2367FA Filename Length       003D (61)\n+2367FC Extra Length          0000 (0)\n+2367FE Comment Length        0000 (0)\n+236800 Disk Start            0000 (0)\n+236802 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23498D Ext File Attributes   00000000 (0)\n-234991 Local Header Offset   0018699D (1599901)\n-234995 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+236804 Ext File Attributes   00000000 (0)\n+236808 Local Header Offset   0019157E (1643902)\n+23680C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234995: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23680C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2349CB CENTRAL HEADER #1457  02014B50 (33639248)\n-2349CF Created Zip Spec      14 (20) '2.0'\n-2349D0 Created OS            00 (0) 'MS-DOS'\n-2349D1 Extract Zip Spec      14 (20) '2.0'\n-2349D2 Extract OS            00 (0) 'MS-DOS'\n-2349D3 General Purpose Flag  0808 (2056)\n+236849 CENTRAL HEADER #1457  02014B50 (33639248)\n+23684D Created Zip Spec      14 (20) '2.0'\n+23684E Created OS            00 (0) 'MS-DOS'\n+23684F Extract Zip Spec      14 (20) '2.0'\n+236850 Extract OS            00 (0) 'MS-DOS'\n+236851 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2349D5 Compression Method    0008 (8) 'Deflated'\n-2349D7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2349DB CRC                   00000000 (0)\n-2349DF Compressed Size       00000002 (2)\n-2349E3 Uncompressed Size     00000000 (0)\n-2349E7 Filename Length       0021 (33)\n-2349E9 Extra Length          0000 (0)\n-2349EB Comment Length        0000 (0)\n-2349ED Disk Start            0000 (0)\n-2349EF Int File Attributes   0000 (0)\n+236853 Compression Method    0008 (8) 'Deflated'\n+236855 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236859 CRC                   4A5D3F5A (1247625050)\n+23685D Compressed Size       00000369 (873)\n+236861 Uncompressed Size     00000808 (2056)\n+236865 Filename Length       0044 (68)\n+236867 Extra Length          0000 (0)\n+236869 Comment Length        0000 (0)\n+23686B Disk Start            0000 (0)\n+23686D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2349F1 Ext File Attributes   00000000 (0)\n-2349F5 Local Header Offset   00186DDB (1600987)\n-2349F9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23686F Ext File Attributes   00000000 (0)\n+236873 Local Header Offset   001915EB (1644011)\n+236877 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2349F9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236877: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234A1A CENTRAL HEADER #1458  02014B50 (33639248)\n-234A1E Created Zip Spec      14 (20) '2.0'\n-234A1F Created OS            00 (0) 'MS-DOS'\n-234A20 Extract Zip Spec      14 (20) '2.0'\n-234A21 Extract OS            00 (0) 'MS-DOS'\n-234A22 General Purpose Flag  0808 (2056)\n+2368BB CENTRAL HEADER #1458  02014B50 (33639248)\n+2368BF Created Zip Spec      14 (20) '2.0'\n+2368C0 Created OS            00 (0) 'MS-DOS'\n+2368C1 Extract Zip Spec      14 (20) '2.0'\n+2368C2 Extract OS            00 (0) 'MS-DOS'\n+2368C3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234A24 Compression Method    0008 (8) 'Deflated'\n-234A26 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234A2A CRC                   88CEDD40 (2295258432)\n-234A2E Compressed Size       0000058E (1422)\n-234A32 Uncompressed Size     000011F6 (4598)\n-234A36 Filename Length       0034 (52)\n-234A38 Extra Length          0000 (0)\n-234A3A Comment Length        0000 (0)\n-234A3C Disk Start            0000 (0)\n-234A3E Int File Attributes   0000 (0)\n+2368C5 Compression Method    0008 (8) 'Deflated'\n+2368C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2368CB CRC                   A3F71CB2 (2750880946)\n+2368CF Compressed Size       0000004F (79)\n+2368D3 Uncompressed Size     00000053 (83)\n+2368D7 Filename Length       004B (75)\n+2368D9 Extra Length          0000 (0)\n+2368DB Comment Length        0000 (0)\n+2368DD Disk Start            0000 (0)\n+2368DF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234A40 Ext File Attributes   00000000 (0)\n-234A44 Local Header Offset   00186E2C (1601068)\n-234A48 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2368E1 Ext File Attributes   00000000 (0)\n+2368E5 Local Header Offset   001919C6 (1644998)\n+2368E9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234A48: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2368E9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234A7C CENTRAL HEADER #1459  02014B50 (33639248)\n-234A80 Created Zip Spec      14 (20) '2.0'\n-234A81 Created OS            00 (0) 'MS-DOS'\n-234A82 Extract Zip Spec      14 (20) '2.0'\n-234A83 Extract OS            00 (0) 'MS-DOS'\n-234A84 General Purpose Flag  0808 (2056)\n+236934 CENTRAL HEADER #1459  02014B50 (33639248)\n+236938 Created Zip Spec      14 (20) '2.0'\n+236939 Created OS            00 (0) 'MS-DOS'\n+23693A Extract Zip Spec      14 (20) '2.0'\n+23693B Extract OS            00 (0) 'MS-DOS'\n+23693C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234A86 Compression Method    0008 (8) 'Deflated'\n-234A88 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234A8C CRC                   00000000 (0)\n-234A90 Compressed Size       00000002 (2)\n-234A94 Uncompressed Size     00000000 (0)\n-234A98 Filename Length       0023 (35)\n-234A9A Extra Length          0000 (0)\n-234A9C Comment Length        0000 (0)\n-234A9E Disk Start            0000 (0)\n-234AA0 Int File Attributes   0000 (0)\n+23693E Compression Method    0008 (8) 'Deflated'\n+236940 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236944 CRC                   00000000 (0)\n+236948 Compressed Size       00000002 (2)\n+23694C Uncompressed Size     00000000 (0)\n+236950 Filename Length       0026 (38)\n+236952 Extra Length          0000 (0)\n+236954 Comment Length        0000 (0)\n+236956 Disk Start            0000 (0)\n+236958 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234AA2 Ext File Attributes   00000000 (0)\n-234AA6 Local Header Offset   0018741C (1602588)\n-234AAA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23695A Ext File Attributes   00000000 (0)\n+23695E Local Header Offset   00191A8E (1645198)\n+236962 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234AAA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236962: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234ACD CENTRAL HEADER #1460  02014B50 (33639248)\n-234AD1 Created Zip Spec      14 (20) '2.0'\n-234AD2 Created OS            00 (0) 'MS-DOS'\n-234AD3 Extract Zip Spec      14 (20) '2.0'\n-234AD4 Extract OS            00 (0) 'MS-DOS'\n-234AD5 General Purpose Flag  0808 (2056)\n+236988 CENTRAL HEADER #1460  02014B50 (33639248)\n+23698C Created Zip Spec      14 (20) '2.0'\n+23698D Created OS            00 (0) 'MS-DOS'\n+23698E Extract Zip Spec      14 (20) '2.0'\n+23698F Extract OS            00 (0) 'MS-DOS'\n+236990 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234AD7 Compression Method    0008 (8) 'Deflated'\n-234AD9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234ADD CRC                   75FBF59C (1979446684)\n-234AE1 Compressed Size       00000572 (1394)\n-234AE5 Uncompressed Size     00000FCF (4047)\n-234AE9 Filename Length       0038 (56)\n-234AEB Extra Length          0000 (0)\n-234AED Comment Length        0000 (0)\n-234AEF Disk Start            0000 (0)\n-234AF1 Int File Attributes   0000 (0)\n+236992 Compression Method    0008 (8) 'Deflated'\n+236994 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236998 CRC                   4E53FCE8 (1314127080)\n+23699C Compressed Size       0000031D (797)\n+2369A0 Uncompressed Size     00000756 (1878)\n+2369A4 Filename Length       0035 (53)\n+2369A6 Extra Length          0000 (0)\n+2369A8 Comment Length        0000 (0)\n+2369AA Disk Start            0000 (0)\n+2369AC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234AF3 Ext File Attributes   00000000 (0)\n-234AF7 Local Header Offset   0018746F (1602671)\n-234AFB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2369AE Ext File Attributes   00000000 (0)\n+2369B2 Local Header Offset   00191AE4 (1645284)\n+2369B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234AFB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2369B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234B33 CENTRAL HEADER #1461  02014B50 (33639248)\n-234B37 Created Zip Spec      14 (20) '2.0'\n-234B38 Created OS            00 (0) 'MS-DOS'\n-234B39 Extract Zip Spec      14 (20) '2.0'\n-234B3A Extract OS            00 (0) 'MS-DOS'\n-234B3B General Purpose Flag  0808 (2056)\n+2369EB CENTRAL HEADER #1461  02014B50 (33639248)\n+2369EF Created Zip Spec      14 (20) '2.0'\n+2369F0 Created OS            00 (0) 'MS-DOS'\n+2369F1 Extract Zip Spec      14 (20) '2.0'\n+2369F2 Extract OS            00 (0) 'MS-DOS'\n+2369F3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234B3D Compression Method    0008 (8) 'Deflated'\n-234B3F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234B43 CRC                   00000000 (0)\n-234B47 Compressed Size       00000002 (2)\n-234B4B Uncompressed Size     00000000 (0)\n-234B4F Filename Length       0015 (21)\n-234B51 Extra Length          0000 (0)\n-234B53 Comment Length        0000 (0)\n-234B55 Disk Start            0000 (0)\n-234B57 Int File Attributes   0000 (0)\n+2369F5 Compression Method    0008 (8) 'Deflated'\n+2369F7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2369FB CRC                   58015D22 (1476484386)\n+2369FF Compressed Size       000003F2 (1010)\n+236A03 Uncompressed Size     00000CF3 (3315)\n+236A07 Filename Length       0039 (57)\n+236A09 Extra Length          0000 (0)\n+236A0B Comment Length        0000 (0)\n+236A0D Disk Start            0000 (0)\n+236A0F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234B59 Ext File Attributes   00000000 (0)\n-234B5D Local Header Offset   00187A47 (1604167)\n-234B61 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n+236A11 Ext File Attributes   00000000 (0)\n+236A15 Local Header Offset   00191E64 (1646180)\n+236A19 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234B61: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236A19: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234B76 CENTRAL HEADER #1462  02014B50 (33639248)\n-234B7A Created Zip Spec      14 (20) '2.0'\n-234B7B Created OS            00 (0) 'MS-DOS'\n-234B7C Extract Zip Spec      14 (20) '2.0'\n-234B7D Extract OS            00 (0) 'MS-DOS'\n-234B7E General Purpose Flag  0808 (2056)\n+236A52 CENTRAL HEADER #1462  02014B50 (33639248)\n+236A56 Created Zip Spec      14 (20) '2.0'\n+236A57 Created OS            00 (0) 'MS-DOS'\n+236A58 Extract Zip Spec      14 (20) '2.0'\n+236A59 Extract OS            00 (0) 'MS-DOS'\n+236A5A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234B80 Compression Method    0008 (8) 'Deflated'\n-234B82 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234B86 CRC                   00000000 (0)\n-234B8A Compressed Size       00000002 (2)\n-234B8E Uncompressed Size     00000000 (0)\n-234B92 Filename Length       001D (29)\n-234B94 Extra Length          0000 (0)\n-234B96 Comment Length        0000 (0)\n-234B98 Disk Start            0000 (0)\n-234B9A Int File Attributes   0000 (0)\n+236A5C Compression Method    0008 (8) 'Deflated'\n+236A5E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236A62 CRC                   5529CB85 (1428802437)\n+236A66 Compressed Size       00000383 (899)\n+236A6A Uncompressed Size     00000B6A (2922)\n+236A6E Filename Length       003A (58)\n+236A70 Extra Length          0000 (0)\n+236A72 Comment Length        0000 (0)\n+236A74 Disk Start            0000 (0)\n+236A76 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234B9C Ext File Attributes   00000000 (0)\n-234BA0 Local Header Offset   00187A8C (1604236)\n-234BA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+236A78 Ext File Attributes   00000000 (0)\n+236A7C Local Header Offset   001922BD (1647293)\n+236A80 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234BA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236A80: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234BC1 CENTRAL HEADER #1463  02014B50 (33639248)\n-234BC5 Created Zip Spec      14 (20) '2.0'\n-234BC6 Created OS            00 (0) 'MS-DOS'\n-234BC7 Extract Zip Spec      14 (20) '2.0'\n-234BC8 Extract OS            00 (0) 'MS-DOS'\n-234BC9 General Purpose Flag  0808 (2056)\n+236ABA CENTRAL HEADER #1463  02014B50 (33639248)\n+236ABE Created Zip Spec      14 (20) '2.0'\n+236ABF Created OS            00 (0) 'MS-DOS'\n+236AC0 Extract Zip Spec      14 (20) '2.0'\n+236AC1 Extract OS            00 (0) 'MS-DOS'\n+236AC2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234BCB Compression Method    0008 (8) 'Deflated'\n-234BCD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234BD1 CRC                   FE44AB9A (4265913242)\n-234BD5 Compressed Size       00000237 (567)\n-234BD9 Uncompressed Size     000003F7 (1015)\n-234BDD Filename Length       002D (45)\n-234BDF Extra Length          0000 (0)\n-234BE1 Comment Length        0000 (0)\n-234BE3 Disk Start            0000 (0)\n-234BE5 Int File Attributes   0000 (0)\n+236AC4 Compression Method    0008 (8) 'Deflated'\n+236AC6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236ACA CRC                   78F3EAFE (2029251326)\n+236ACE Compressed Size       0000031F (799)\n+236AD2 Uncompressed Size     0000078D (1933)\n+236AD6 Filename Length       003B (59)\n+236AD8 Extra Length          0000 (0)\n+236ADA Comment Length        0000 (0)\n+236ADC Disk Start            0000 (0)\n+236ADE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234BE7 Ext File Attributes   00000000 (0)\n-234BEB Local Header Offset   00187AD9 (1604313)\n-234BEF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+236AE0 Ext File Attributes   00000000 (0)\n+236AE4 Local Header Offset   001926A8 (1648296)\n+236AE8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234BEF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236AE8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234C1C CENTRAL HEADER #1464  02014B50 (33639248)\n-234C20 Created Zip Spec      14 (20) '2.0'\n-234C21 Created OS            00 (0) 'MS-DOS'\n-234C22 Extract Zip Spec      14 (20) '2.0'\n-234C23 Extract OS            00 (0) 'MS-DOS'\n-234C24 General Purpose Flag  0808 (2056)\n+236B23 CENTRAL HEADER #1464  02014B50 (33639248)\n+236B27 Created Zip Spec      14 (20) '2.0'\n+236B28 Created OS            00 (0) 'MS-DOS'\n+236B29 Extract Zip Spec      14 (20) '2.0'\n+236B2A Extract OS            00 (0) 'MS-DOS'\n+236B2B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234C26 Compression Method    0008 (8) 'Deflated'\n-234C28 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234C2C CRC                   C783A617 (3347293719)\n-234C30 Compressed Size       0000030B (779)\n-234C34 Uncompressed Size     00000880 (2176)\n-234C38 Filename Length       0030 (48)\n-234C3A Extra Length          0000 (0)\n-234C3C Comment Length        0000 (0)\n-234C3E Disk Start            0000 (0)\n-234C40 Int File Attributes   0000 (0)\n+236B2D Compression Method    0008 (8) 'Deflated'\n+236B2F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236B33 CRC                   00000000 (0)\n+236B37 Compressed Size       00000002 (2)\n+236B3B Uncompressed Size     00000000 (0)\n+236B3F Filename Length       0038 (56)\n+236B41 Extra Length          0000 (0)\n+236B43 Comment Length        0000 (0)\n+236B45 Disk Start            0000 (0)\n+236B47 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234C42 Ext File Attributes   00000000 (0)\n-234C46 Local Header Offset   00187D6B (1604971)\n-234C4A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+236B49 Ext File Attributes   00000000 (0)\n+236B4D Local Header Offset   00192A30 (1649200)\n+236B51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234C4A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236B51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234C7A CENTRAL HEADER #1465  02014B50 (33639248)\n-234C7E Created Zip Spec      14 (20) '2.0'\n-234C7F Created OS            00 (0) 'MS-DOS'\n-234C80 Extract Zip Spec      14 (20) '2.0'\n-234C81 Extract OS            00 (0) 'MS-DOS'\n-234C82 General Purpose Flag  0808 (2056)\n+236B89 CENTRAL HEADER #1465  02014B50 (33639248)\n+236B8D Created Zip Spec      14 (20) '2.0'\n+236B8E Created OS            00 (0) 'MS-DOS'\n+236B8F Extract Zip Spec      14 (20) '2.0'\n+236B90 Extract OS            00 (0) 'MS-DOS'\n+236B91 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234C84 Compression Method    0008 (8) 'Deflated'\n-234C86 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234C8A CRC                   F2C44151 (4072948049)\n-234C8E Compressed Size       00000252 (594)\n-234C92 Uncompressed Size     000004A6 (1190)\n-234C96 Filename Length       0037 (55)\n-234C98 Extra Length          0000 (0)\n-234C9A Comment Length        0000 (0)\n-234C9C Disk Start            0000 (0)\n-234C9E Int File Attributes   0000 (0)\n+236B93 Compression Method    0008 (8) 'Deflated'\n+236B95 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236B99 CRC                   2E75446F (779437167)\n+236B9D Compressed Size       00000371 (881)\n+236BA1 Uncompressed Size     00000819 (2073)\n+236BA5 Filename Length       003F (63)\n+236BA7 Extra Length          0000 (0)\n+236BA9 Comment Length        0000 (0)\n+236BAB Disk Start            0000 (0)\n+236BAD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234CA0 Ext File Attributes   00000000 (0)\n-234CA4 Local Header Offset   001880D4 (1605844)\n-234CA8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+236BAF Ext File Attributes   00000000 (0)\n+236BB3 Local Header Offset   00192A98 (1649304)\n+236BB7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234CA8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236BB7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234CDF CENTRAL HEADER #1466  02014B50 (33639248)\n-234CE3 Created Zip Spec      14 (20) '2.0'\n-234CE4 Created OS            00 (0) 'MS-DOS'\n-234CE5 Extract Zip Spec      14 (20) '2.0'\n-234CE6 Extract OS            00 (0) 'MS-DOS'\n-234CE7 General Purpose Flag  0808 (2056)\n+236BF6 CENTRAL HEADER #1466  02014B50 (33639248)\n+236BFA Created Zip Spec      14 (20) '2.0'\n+236BFB Created OS            00 (0) 'MS-DOS'\n+236BFC Extract Zip Spec      14 (20) '2.0'\n+236BFD Extract OS            00 (0) 'MS-DOS'\n+236BFE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234CE9 Compression Method    0008 (8) 'Deflated'\n-234CEB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234CEF CRC                   D40E78F4 (3557718260)\n-234CF3 Compressed Size       00000262 (610)\n-234CF7 Uncompressed Size     000004A8 (1192)\n-234CFB Filename Length       0031 (49)\n-234CFD Extra Length          0000 (0)\n-234CFF Comment Length        0000 (0)\n-234D01 Disk Start            0000 (0)\n-234D03 Int File Attributes   0000 (0)\n+236C00 Compression Method    0008 (8) 'Deflated'\n+236C02 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236C06 CRC                   D5DD6E04 (3588058628)\n+236C0A Compressed Size       0000004B (75)\n+236C0E Uncompressed Size     0000004E (78)\n+236C12 Filename Length       0046 (70)\n+236C14 Extra Length          0000 (0)\n+236C16 Comment Length        0000 (0)\n+236C18 Disk Start            0000 (0)\n+236C1A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234D05 Ext File Attributes   00000000 (0)\n-234D09 Local Header Offset   0018838B (1606539)\n-234D0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+236C1C Ext File Attributes   00000000 (0)\n+236C20 Local Header Offset   00192E76 (1650294)\n+236C24 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234D0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236C24: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234D3E CENTRAL HEADER #1467  02014B50 (33639248)\n-234D42 Created Zip Spec      14 (20) '2.0'\n-234D43 Created OS            00 (0) 'MS-DOS'\n-234D44 Extract Zip Spec      14 (20) '2.0'\n-234D45 Extract OS            00 (0) 'MS-DOS'\n-234D46 General Purpose Flag  0808 (2056)\n+236C6A CENTRAL HEADER #1467  02014B50 (33639248)\n+236C6E Created Zip Spec      14 (20) '2.0'\n+236C6F Created OS            00 (0) 'MS-DOS'\n+236C70 Extract Zip Spec      14 (20) '2.0'\n+236C71 Extract OS            00 (0) 'MS-DOS'\n+236C72 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234D48 Compression Method    0008 (8) 'Deflated'\n-234D4A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234D4E CRC                   2A63E263 (711189091)\n-234D52 Compressed Size       000002D1 (721)\n-234D56 Uncompressed Size     0000061D (1565)\n-234D5A Filename Length       0038 (56)\n-234D5C Extra Length          0000 (0)\n-234D5E Comment Length        0000 (0)\n-234D60 Disk Start            0000 (0)\n-234D62 Int File Attributes   0000 (0)\n+236C74 Compression Method    0008 (8) 'Deflated'\n+236C76 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236C7A CRC                   00000000 (0)\n+236C7E Compressed Size       00000002 (2)\n+236C82 Uncompressed Size     00000000 (0)\n+236C86 Filename Length       002B (43)\n+236C88 Extra Length          0000 (0)\n+236C8A Comment Length        0000 (0)\n+236C8C Disk Start            0000 (0)\n+236C8E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234D64 Ext File Attributes   00000000 (0)\n-234D68 Local Header Offset   0018864C (1607244)\n-234D6C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+236C90 Ext File Attributes   00000000 (0)\n+236C94 Local Header Offset   00192F35 (1650485)\n+236C98 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234D6C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236C98: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234DA4 CENTRAL HEADER #1468  02014B50 (33639248)\n-234DA8 Created Zip Spec      14 (20) '2.0'\n-234DA9 Created OS            00 (0) 'MS-DOS'\n-234DAA Extract Zip Spec      14 (20) '2.0'\n-234DAB Extract OS            00 (0) 'MS-DOS'\n-234DAC General Purpose Flag  0808 (2056)\n+236CC3 CENTRAL HEADER #1468  02014B50 (33639248)\n+236CC7 Created Zip Spec      14 (20) '2.0'\n+236CC8 Created OS            00 (0) 'MS-DOS'\n+236CC9 Extract Zip Spec      14 (20) '2.0'\n+236CCA Extract OS            00 (0) 'MS-DOS'\n+236CCB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234DAE Compression Method    0008 (8) 'Deflated'\n-234DB0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234DB4 CRC                   D473D979 (3564362105)\n-234DB8 Compressed Size       0000022A (554)\n-234DBC Uncompressed Size     00000400 (1024)\n-234DC0 Filename Length       0038 (56)\n-234DC2 Extra Length          0000 (0)\n-234DC4 Comment Length        0000 (0)\n-234DC6 Disk Start            0000 (0)\n-234DC8 Int File Attributes   0000 (0)\n+236CCD Compression Method    0008 (8) 'Deflated'\n+236CCF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236CD3 CRC                   D893DDBD (3633569213)\n+236CD7 Compressed Size       00000462 (1122)\n+236CDB Uncompressed Size     00000DBC (3516)\n+236CDF Filename Length       0043 (67)\n+236CE1 Extra Length          0000 (0)\n+236CE3 Comment Length        0000 (0)\n+236CE5 Disk Start            0000 (0)\n+236CE7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234DCA Ext File Attributes   00000000 (0)\n-234DCE Local Header Offset   00188983 (1608067)\n-234DD2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+236CE9 Ext File Attributes   00000000 (0)\n+236CED Local Header Offset   00192F90 (1650576)\n+236CF1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234DD2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236CF1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234E0A CENTRAL HEADER #1469  02014B50 (33639248)\n-234E0E Created Zip Spec      14 (20) '2.0'\n-234E0F Created OS            00 (0) 'MS-DOS'\n-234E10 Extract Zip Spec      14 (20) '2.0'\n-234E11 Extract OS            00 (0) 'MS-DOS'\n-234E12 General Purpose Flag  0808 (2056)\n+236D34 CENTRAL HEADER #1469  02014B50 (33639248)\n+236D38 Created Zip Spec      14 (20) '2.0'\n+236D39 Created OS            00 (0) 'MS-DOS'\n+236D3A Extract Zip Spec      14 (20) '2.0'\n+236D3B Extract OS            00 (0) 'MS-DOS'\n+236D3C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234E14 Compression Method    0008 (8) 'Deflated'\n-234E16 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234E1A CRC                   00000000 (0)\n-234E1E Compressed Size       00000002 (2)\n-234E22 Uncompressed Size     00000000 (0)\n-234E26 Filename Length       0028 (40)\n-234E28 Extra Length          0000 (0)\n-234E2A Comment Length        0000 (0)\n-234E2C Disk Start            0000 (0)\n-234E2E Int File Attributes   0000 (0)\n+236D3E Compression Method    0008 (8) 'Deflated'\n+236D40 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236D44 CRC                   C397AAA7 (3281496743)\n+236D48 Compressed Size       00000420 (1056)\n+236D4C Uncompressed Size     00000D3F (3391)\n+236D50 Filename Length       0044 (68)\n+236D52 Extra Length          0000 (0)\n+236D54 Comment Length        0000 (0)\n+236D56 Disk Start            0000 (0)\n+236D58 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234E30 Ext File Attributes   00000000 (0)\n-234E34 Local Header Offset   00188C13 (1608723)\n-234E38 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+236D5A Ext File Attributes   00000000 (0)\n+236D5E Local Header Offset   00193463 (1651811)\n+236D62 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234E38: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236D62: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234E60 CENTRAL HEADER #1470  02014B50 (33639248)\n-234E64 Created Zip Spec      14 (20) '2.0'\n-234E65 Created OS            00 (0) 'MS-DOS'\n-234E66 Extract Zip Spec      14 (20) '2.0'\n-234E67 Extract OS            00 (0) 'MS-DOS'\n-234E68 General Purpose Flag  0808 (2056)\n+236DA6 CENTRAL HEADER #1470  02014B50 (33639248)\n+236DAA Created Zip Spec      14 (20) '2.0'\n+236DAB Created OS            00 (0) 'MS-DOS'\n+236DAC Extract Zip Spec      14 (20) '2.0'\n+236DAD Extract OS            00 (0) 'MS-DOS'\n+236DAE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234E6A Compression Method    0008 (8) 'Deflated'\n-234E6C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234E70 CRC                   45D6532E (1171673902)\n-234E74 Compressed Size       000002C2 (706)\n-234E78 Uncompressed Size     00000647 (1607)\n-234E7C Filename Length       0030 (48)\n-234E7E Extra Length          0000 (0)\n-234E80 Comment Length        0000 (0)\n-234E82 Disk Start            0000 (0)\n-234E84 Int File Attributes   0000 (0)\n+236DB0 Compression Method    0008 (8) 'Deflated'\n+236DB2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236DB6 CRC                   33E433F6 (870593526)\n+236DBA Compressed Size       0000033E (830)\n+236DBE Uncompressed Size     000007F6 (2038)\n+236DC2 Filename Length       0045 (69)\n+236DC4 Extra Length          0000 (0)\n+236DC6 Comment Length        0000 (0)\n+236DC8 Disk Start            0000 (0)\n+236DCA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234E86 Ext File Attributes   00000000 (0)\n-234E8A Local Header Offset   00188C6B (1608811)\n-234E8E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+236DCC Ext File Attributes   00000000 (0)\n+236DD0 Local Header Offset   001938F5 (1652981)\n+236DD4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234E8E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236DD4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234EBE CENTRAL HEADER #1471  02014B50 (33639248)\n-234EC2 Created Zip Spec      14 (20) '2.0'\n-234EC3 Created OS            00 (0) 'MS-DOS'\n-234EC4 Extract Zip Spec      14 (20) '2.0'\n-234EC5 Extract OS            00 (0) 'MS-DOS'\n-234EC6 General Purpose Flag  0808 (2056)\n+236E19 CENTRAL HEADER #1471  02014B50 (33639248)\n+236E1D Created Zip Spec      14 (20) '2.0'\n+236E1E Created OS            00 (0) 'MS-DOS'\n+236E1F Extract Zip Spec      14 (20) '2.0'\n+236E20 Extract OS            00 (0) 'MS-DOS'\n+236E21 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234EC8 Compression Method    0008 (8) 'Deflated'\n-234ECA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234ECE CRC                   00000000 (0)\n-234ED2 Compressed Size       00000002 (2)\n-234ED6 Uncompressed Size     00000000 (0)\n-234EDA Filename Length       0025 (37)\n-234EDC Extra Length          0000 (0)\n-234EDE Comment Length        0000 (0)\n-234EE0 Disk Start            0000 (0)\n-234EE2 Int File Attributes   0000 (0)\n+236E23 Compression Method    0008 (8) 'Deflated'\n+236E25 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236E29 CRC                   ED1EB0B7 (3978211511)\n+236E2D Compressed Size       0000026E (622)\n+236E31 Uncompressed Size     000004A5 (1189)\n+236E35 Filename Length       0049 (73)\n+236E37 Extra Length          0000 (0)\n+236E39 Comment Length        0000 (0)\n+236E3B Disk Start            0000 (0)\n+236E3D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234EE4 Ext File Attributes   00000000 (0)\n-234EE8 Local Header Offset   00188F8B (1609611)\n-234EEC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+236E3F Ext File Attributes   00000000 (0)\n+236E43 Local Header Offset   00193CA6 (1653926)\n+236E47 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234EEC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236E47: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234F11 CENTRAL HEADER #1472  02014B50 (33639248)\n-234F15 Created Zip Spec      14 (20) '2.0'\n-234F16 Created OS            00 (0) 'MS-DOS'\n-234F17 Extract Zip Spec      14 (20) '2.0'\n-234F18 Extract OS            00 (0) 'MS-DOS'\n-234F19 General Purpose Flag  0808 (2056)\n+236E90 CENTRAL HEADER #1472  02014B50 (33639248)\n+236E94 Created Zip Spec      14 (20) '2.0'\n+236E95 Created OS            00 (0) 'MS-DOS'\n+236E96 Extract Zip Spec      14 (20) '2.0'\n+236E97 Extract OS            00 (0) 'MS-DOS'\n+236E98 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234F1B Compression Method    0008 (8) 'Deflated'\n-234F1D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234F21 CRC                   D812ECFA (3625118970)\n-234F25 Compressed Size       000004A3 (1187)\n-234F29 Uncompressed Size     00000F93 (3987)\n-234F2D Filename Length       003C (60)\n-234F2F Extra Length          0000 (0)\n-234F31 Comment Length        0000 (0)\n-234F33 Disk Start            0000 (0)\n-234F35 Int File Attributes   0000 (0)\n+236E9A Compression Method    0008 (8) 'Deflated'\n+236E9C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236EA0 CRC                   00000000 (0)\n+236EA4 Compressed Size       00000002 (2)\n+236EA8 Uncompressed Size     00000000 (0)\n+236EAC Filename Length       0031 (49)\n+236EAE Extra Length          0000 (0)\n+236EB0 Comment Length        0000 (0)\n+236EB2 Disk Start            0000 (0)\n+236EB4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234F37 Ext File Attributes   00000000 (0)\n-234F3B Local Header Offset   00188FE0 (1609696)\n-234F3F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+236EB6 Ext File Attributes   00000000 (0)\n+236EBA Local Header Offset   00193F8B (1654667)\n+236EBE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234F3F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236EBE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234F7B CENTRAL HEADER #1473  02014B50 (33639248)\n-234F7F Created Zip Spec      14 (20) '2.0'\n-234F80 Created OS            00 (0) 'MS-DOS'\n-234F81 Extract Zip Spec      14 (20) '2.0'\n-234F82 Extract OS            00 (0) 'MS-DOS'\n-234F83 General Purpose Flag  0808 (2056)\n+236EEF CENTRAL HEADER #1473  02014B50 (33639248)\n+236EF3 Created Zip Spec      14 (20) '2.0'\n+236EF4 Created OS            00 (0) 'MS-DOS'\n+236EF5 Extract Zip Spec      14 (20) '2.0'\n+236EF6 Extract OS            00 (0) 'MS-DOS'\n+236EF7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234F85 Compression Method    0008 (8) 'Deflated'\n-234F87 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234F8B CRC                   E1096065 (3775488101)\n-234F8F Compressed Size       0000030F (783)\n-234F93 Uncompressed Size     000006BD (1725)\n-234F97 Filename Length       003E (62)\n-234F99 Extra Length          0000 (0)\n-234F9B Comment Length        0000 (0)\n-234F9D Disk Start            0000 (0)\n-234F9F Int File Attributes   0000 (0)\n+236EF9 Compression Method    0008 (8) 'Deflated'\n+236EFB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236EFF CRC                   589CDBF7 (1486674935)\n+236F03 Compressed Size       000002BA (698)\n+236F07 Uncompressed Size     000005CC (1484)\n+236F0B Filename Length       0058 (88)\n+236F0D Extra Length          0000 (0)\n+236F0F Comment Length        0000 (0)\n+236F11 Disk Start            0000 (0)\n+236F13 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-234FA1 Ext File Attributes   00000000 (0)\n-234FA5 Local Header Offset   001894ED (1610989)\n-234FA9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+236F15 Ext File Attributes   00000000 (0)\n+236F19 Local Header Offset   00193FEC (1654764)\n+236F1D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x234FA9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236F1D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-234FE7 CENTRAL HEADER #1474  02014B50 (33639248)\n-234FEB Created Zip Spec      14 (20) '2.0'\n-234FEC Created OS            00 (0) 'MS-DOS'\n-234FED Extract Zip Spec      14 (20) '2.0'\n-234FEE Extract OS            00 (0) 'MS-DOS'\n-234FEF General Purpose Flag  0808 (2056)\n+236F75 CENTRAL HEADER #1474  02014B50 (33639248)\n+236F79 Created Zip Spec      14 (20) '2.0'\n+236F7A Created OS            00 (0) 'MS-DOS'\n+236F7B Extract Zip Spec      14 (20) '2.0'\n+236F7C Extract OS            00 (0) 'MS-DOS'\n+236F7D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-234FF1 Compression Method    0008 (8) 'Deflated'\n-234FF3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-234FF7 CRC                   00000000 (0)\n-234FFB Compressed Size       00000002 (2)\n-234FFF Uncompressed Size     00000000 (0)\n-235003 Filename Length       0022 (34)\n-235005 Extra Length          0000 (0)\n-235007 Comment Length        0000 (0)\n-235009 Disk Start            0000 (0)\n-23500B Int File Attributes   0000 (0)\n+236F7F Compression Method    0008 (8) 'Deflated'\n+236F81 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+236F85 CRC                   35094442 (889799746)\n+236F89 Compressed Size       00000274 (628)\n+236F8D Uncompressed Size     000004E2 (1250)\n+236F91 Filename Length       0057 (87)\n+236F93 Extra Length          0000 (0)\n+236F95 Comment Length        0000 (0)\n+236F97 Disk Start            0000 (0)\n+236F99 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23500D Ext File Attributes   00000000 (0)\n-235011 Local Header Offset   00189868 (1611880)\n-235015 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+236F9B Ext File Attributes   00000000 (0)\n+236F9F Local Header Offset   0019432C (1655596)\n+236FA3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235015: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x236FA3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235037 CENTRAL HEADER #1475  02014B50 (33639248)\n-23503B Created Zip Spec      14 (20) '2.0'\n-23503C Created OS            00 (0) 'MS-DOS'\n-23503D Extract Zip Spec      14 (20) '2.0'\n-23503E Extract OS            00 (0) 'MS-DOS'\n-23503F General Purpose Flag  0808 (2056)\n+236FFA CENTRAL HEADER #1475  02014B50 (33639248)\n+236FFE Created Zip Spec      14 (20) '2.0'\n+236FFF Created OS            00 (0) 'MS-DOS'\n+237000 Extract Zip Spec      14 (20) '2.0'\n+237001 Extract OS            00 (0) 'MS-DOS'\n+237002 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235041 Compression Method    0008 (8) 'Deflated'\n-235043 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235047 CRC                   86EEED41 (2263805249)\n-23504B Compressed Size       000004F4 (1268)\n-23504F Uncompressed Size     00000E84 (3716)\n-235053 Filename Length       002B (43)\n-235055 Extra Length          0000 (0)\n-235057 Comment Length        0000 (0)\n-235059 Disk Start            0000 (0)\n-23505B Int File Attributes   0000 (0)\n+237004 Compression Method    0008 (8) 'Deflated'\n+237006 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23700A CRC                   F8518504 (4166092036)\n+23700E Compressed Size       0000032E (814)\n+237012 Uncompressed Size     00000754 (1876)\n+237016 Filename Length       0050 (80)\n+237018 Extra Length          0000 (0)\n+23701A Comment Length        0000 (0)\n+23701C Disk Start            0000 (0)\n+23701E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23505D Ext File Attributes   00000000 (0)\n-235061 Local Header Offset   001898BA (1611962)\n-235065 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237020 Ext File Attributes   00000000 (0)\n+237024 Local Header Offset   00194625 (1656357)\n+237028 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235065: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237028: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235090 CENTRAL HEADER #1476  02014B50 (33639248)\n-235094 Created Zip Spec      14 (20) '2.0'\n-235095 Created OS            00 (0) 'MS-DOS'\n-235096 Extract Zip Spec      14 (20) '2.0'\n-235097 Extract OS            00 (0) 'MS-DOS'\n-235098 General Purpose Flag  0808 (2056)\n+237078 CENTRAL HEADER #1476  02014B50 (33639248)\n+23707C Created Zip Spec      14 (20) '2.0'\n+23707D Created OS            00 (0) 'MS-DOS'\n+23707E Extract Zip Spec      14 (20) '2.0'\n+23707F Extract OS            00 (0) 'MS-DOS'\n+237080 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23509A Compression Method    0008 (8) 'Deflated'\n-23509C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2350A0 CRC                   1E97BBCE (513260494)\n-2350A4 Compressed Size       00000439 (1081)\n-2350A8 Uncompressed Size     00000D38 (3384)\n-2350AC Filename Length       0029 (41)\n-2350AE Extra Length          0000 (0)\n-2350B0 Comment Length        0000 (0)\n-2350B2 Disk Start            0000 (0)\n-2350B4 Int File Attributes   0000 (0)\n+237082 Compression Method    0008 (8) 'Deflated'\n+237084 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237088 CRC                   C6552311 (3327468305)\n+23708C Compressed Size       00000389 (905)\n+237090 Uncompressed Size     000008C4 (2244)\n+237094 Filename Length       0059 (89)\n+237096 Extra Length          0000 (0)\n+237098 Comment Length        0000 (0)\n+23709A Disk Start            0000 (0)\n+23709C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2350B6 Ext File Attributes   00000000 (0)\n-2350BA Local Header Offset   00189E07 (1613319)\n-2350BE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23709E Ext File Attributes   00000000 (0)\n+2370A2 Local Header Offset   001949D1 (1657297)\n+2370A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2350BE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2370A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2350E7 CENTRAL HEADER #1477  02014B50 (33639248)\n-2350EB Created Zip Spec      14 (20) '2.0'\n-2350EC Created OS            00 (0) 'MS-DOS'\n-2350ED Extract Zip Spec      14 (20) '2.0'\n-2350EE Extract OS            00 (0) 'MS-DOS'\n-2350EF General Purpose Flag  0808 (2056)\n+2370FF CENTRAL HEADER #1477  02014B50 (33639248)\n+237103 Created Zip Spec      14 (20) '2.0'\n+237104 Created OS            00 (0) 'MS-DOS'\n+237105 Extract Zip Spec      14 (20) '2.0'\n+237106 Extract OS            00 (0) 'MS-DOS'\n+237107 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2350F1 Compression Method    0008 (8) 'Deflated'\n-2350F3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2350F7 CRC                   5DD1BF6F (1574027119)\n-2350FB Compressed Size       000004A6 (1190)\n-2350FF Uncompressed Size     00000D02 (3330)\n-235103 Filename Length       002E (46)\n-235105 Extra Length          0000 (0)\n-235107 Comment Length        0000 (0)\n-235109 Disk Start            0000 (0)\n-23510B Int File Attributes   0000 (0)\n+237109 Compression Method    0008 (8) 'Deflated'\n+23710B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23710F CRC                   87B990A8 (2277085352)\n+237113 Compressed Size       0000005B (91)\n+237117 Uncompressed Size     000000BA (186)\n+23711B Filename Length       0063 (99)\n+23711D Extra Length          0000 (0)\n+23711F Comment Length        0000 (0)\n+237121 Disk Start            0000 (0)\n+237123 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23510D Ext File Attributes   00000000 (0)\n-235111 Local Header Offset   0018A297 (1614487)\n-235115 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237125 Ext File Attributes   00000000 (0)\n+237129 Local Header Offset   00194DE1 (1658337)\n+23712D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235115: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23712D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235143 CENTRAL HEADER #1478  02014B50 (33639248)\n-235147 Created Zip Spec      14 (20) '2.0'\n-235148 Created OS            00 (0) 'MS-DOS'\n-235149 Extract Zip Spec      14 (20) '2.0'\n-23514A Extract OS            00 (0) 'MS-DOS'\n-23514B General Purpose Flag  0808 (2056)\n+237190 CENTRAL HEADER #1478  02014B50 (33639248)\n+237194 Created Zip Spec      14 (20) '2.0'\n+237195 Created OS            00 (0) 'MS-DOS'\n+237196 Extract Zip Spec      14 (20) '2.0'\n+237197 Extract OS            00 (0) 'MS-DOS'\n+237198 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23514D Compression Method    0008 (8) 'Deflated'\n-23514F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235153 CRC                   677CD800 (1736235008)\n-235157 Compressed Size       000004B1 (1201)\n-23515B Uncompressed Size     00000D35 (3381)\n-23515F Filename Length       002D (45)\n-235161 Extra Length          0000 (0)\n-235163 Comment Length        0000 (0)\n-235165 Disk Start            0000 (0)\n-235167 Int File Attributes   0000 (0)\n+23719A Compression Method    0008 (8) 'Deflated'\n+23719C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2371A0 CRC                   00000000 (0)\n+2371A4 Compressed Size       00000002 (2)\n+2371A8 Uncompressed Size     00000000 (0)\n+2371AC Filename Length       003D (61)\n+2371AE Extra Length          0000 (0)\n+2371B0 Comment Length        0000 (0)\n+2371B2 Disk Start            0000 (0)\n+2371B4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235169 Ext File Attributes   00000000 (0)\n-23516D Local Header Offset   0018A799 (1615769)\n-235171 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2371B6 Ext File Attributes   00000000 (0)\n+2371BA Local Header Offset   00194ECD (1658573)\n+2371BE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235171: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2371BE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23519E CENTRAL HEADER #1479  02014B50 (33639248)\n-2351A2 Created Zip Spec      14 (20) '2.0'\n-2351A3 Created OS            00 (0) 'MS-DOS'\n-2351A4 Extract Zip Spec      14 (20) '2.0'\n-2351A5 Extract OS            00 (0) 'MS-DOS'\n-2351A6 General Purpose Flag  0808 (2056)\n+2371FB CENTRAL HEADER #1479  02014B50 (33639248)\n+2371FF Created Zip Spec      14 (20) '2.0'\n+237200 Created OS            00 (0) 'MS-DOS'\n+237201 Extract Zip Spec      14 (20) '2.0'\n+237202 Extract OS            00 (0) 'MS-DOS'\n+237203 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2351A8 Compression Method    0008 (8) 'Deflated'\n-2351AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2351AE CRC                   15091C1F (352918559)\n-2351B2 Compressed Size       00000490 (1168)\n-2351B6 Uncompressed Size     00000B30 (2864)\n-2351BA Filename Length       0036 (54)\n-2351BC Extra Length          0000 (0)\n-2351BE Comment Length        0000 (0)\n-2351C0 Disk Start            0000 (0)\n-2351C2 Int File Attributes   0000 (0)\n+237205 Compression Method    0008 (8) 'Deflated'\n+237207 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23720B CRC                   7063BECD (1885585101)\n+23720F Compressed Size       0000036F (879)\n+237213 Uncompressed Size     0000080C (2060)\n+237217 Filename Length       0044 (68)\n+237219 Extra Length          0000 (0)\n+23721B Comment Length        0000 (0)\n+23721D Disk Start            0000 (0)\n+23721F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2351C4 Ext File Attributes   00000000 (0)\n-2351C8 Local Header Offset   0018ACA5 (1617061)\n-2351CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237221 Ext File Attributes   00000000 (0)\n+237225 Local Header Offset   00194F3A (1658682)\n+237229 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2351CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237229: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235202 CENTRAL HEADER #1480  02014B50 (33639248)\n-235206 Created Zip Spec      14 (20) '2.0'\n-235207 Created OS            00 (0) 'MS-DOS'\n-235208 Extract Zip Spec      14 (20) '2.0'\n-235209 Extract OS            00 (0) 'MS-DOS'\n-23520A General Purpose Flag  0808 (2056)\n+23726D CENTRAL HEADER #1480  02014B50 (33639248)\n+237271 Created Zip Spec      14 (20) '2.0'\n+237272 Created OS            00 (0) 'MS-DOS'\n+237273 Extract Zip Spec      14 (20) '2.0'\n+237274 Extract OS            00 (0) 'MS-DOS'\n+237275 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23520C Compression Method    0008 (8) 'Deflated'\n-23520E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235212 CRC                   AADA64B2 (2866439346)\n-235216 Compressed Size       0000028D (653)\n-23521A Uncompressed Size     00000519 (1305)\n-23521E Filename Length       002B (43)\n-235220 Extra Length          0000 (0)\n-235222 Comment Length        0000 (0)\n-235224 Disk Start            0000 (0)\n-235226 Int File Attributes   0000 (0)\n+237277 Compression Method    0008 (8) 'Deflated'\n+237279 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23727D CRC                   9BC53808 (2613393416)\n+237281 Compressed Size       0000004F (79)\n+237285 Uncompressed Size     00000053 (83)\n+237289 Filename Length       004B (75)\n+23728B Extra Length          0000 (0)\n+23728D Comment Length        0000 (0)\n+23728F Disk Start            0000 (0)\n+237291 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235228 Ext File Attributes   00000000 (0)\n-23522C Local Header Offset   0018B199 (1618329)\n-235230 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237293 Ext File Attributes   00000000 (0)\n+237297 Local Header Offset   0019531B (1659675)\n+23729B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235230: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23729B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23525B CENTRAL HEADER #1481  02014B50 (33639248)\n-23525F Created Zip Spec      14 (20) '2.0'\n-235260 Created OS            00 (0) 'MS-DOS'\n-235261 Extract Zip Spec      14 (20) '2.0'\n-235262 Extract OS            00 (0) 'MS-DOS'\n-235263 General Purpose Flag  0808 (2056)\n+2372E6 CENTRAL HEADER #1481  02014B50 (33639248)\n+2372EA Created Zip Spec      14 (20) '2.0'\n+2372EB Created OS            00 (0) 'MS-DOS'\n+2372EC Extract Zip Spec      14 (20) '2.0'\n+2372ED Extract OS            00 (0) 'MS-DOS'\n+2372EE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235265 Compression Method    0008 (8) 'Deflated'\n-235267 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23526B CRC                   CD1091C2 (3440415170)\n-23526F Compressed Size       000005E7 (1511)\n-235273 Uncompressed Size     00001084 (4228)\n-235277 Filename Length       002C (44)\n-235279 Extra Length          0000 (0)\n-23527B Comment Length        0000 (0)\n-23527D Disk Start            0000 (0)\n-23527F Int File Attributes   0000 (0)\n+2372F0 Compression Method    0008 (8) 'Deflated'\n+2372F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2372F6 CRC                   00000000 (0)\n+2372FA Compressed Size       00000002 (2)\n+2372FE Uncompressed Size     00000000 (0)\n+237302 Filename Length       001B (27)\n+237304 Extra Length          0000 (0)\n+237306 Comment Length        0000 (0)\n+237308 Disk Start            0000 (0)\n+23730A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235281 Ext File Attributes   00000000 (0)\n-235285 Local Header Offset   0018B47F (1619071)\n-235289 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23730C Ext File Attributes   00000000 (0)\n+237310 Local Header Offset   001953E3 (1659875)\n+237314 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235289: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237314: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2352B5 CENTRAL HEADER #1482  02014B50 (33639248)\n-2352B9 Created Zip Spec      14 (20) '2.0'\n-2352BA Created OS            00 (0) 'MS-DOS'\n-2352BB Extract Zip Spec      14 (20) '2.0'\n-2352BC Extract OS            00 (0) 'MS-DOS'\n-2352BD General Purpose Flag  0808 (2056)\n+23732F CENTRAL HEADER #1482  02014B50 (33639248)\n+237333 Created Zip Spec      14 (20) '2.0'\n+237334 Created OS            00 (0) 'MS-DOS'\n+237335 Extract Zip Spec      14 (20) '2.0'\n+237336 Extract OS            00 (0) 'MS-DOS'\n+237337 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2352BF Compression Method    0008 (8) 'Deflated'\n-2352C1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2352C5 CRC                   CA6DC12E (3396190510)\n-2352C9 Compressed Size       000002BF (703)\n-2352CD Uncompressed Size     00000600 (1536)\n-2352D1 Filename Length       002E (46)\n-2352D3 Extra Length          0000 (0)\n-2352D5 Comment Length        0000 (0)\n-2352D7 Disk Start            0000 (0)\n-2352D9 Int File Attributes   0000 (0)\n+237339 Compression Method    0008 (8) 'Deflated'\n+23733B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23733F CRC                   00000000 (0)\n+237343 Compressed Size       00000002 (2)\n+237347 Uncompressed Size     00000000 (0)\n+23734B Filename Length       0023 (35)\n+23734D Extra Length          0000 (0)\n+23734F Comment Length        0000 (0)\n+237351 Disk Start            0000 (0)\n+237353 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2352DB Ext File Attributes   00000000 (0)\n-2352DF Local Header Offset   0018BAC0 (1620672)\n-2352E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237355 Ext File Attributes   00000000 (0)\n+237359 Local Header Offset   0019542E (1659950)\n+23735D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2352E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23735D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235311 CENTRAL HEADER #1483  02014B50 (33639248)\n-235315 Created Zip Spec      14 (20) '2.0'\n-235316 Created OS            00 (0) 'MS-DOS'\n-235317 Extract Zip Spec      14 (20) '2.0'\n-235318 Extract OS            00 (0) 'MS-DOS'\n-235319 General Purpose Flag  0808 (2056)\n+237380 CENTRAL HEADER #1483  02014B50 (33639248)\n+237384 Created Zip Spec      14 (20) '2.0'\n+237385 Created OS            00 (0) 'MS-DOS'\n+237386 Extract Zip Spec      14 (20) '2.0'\n+237387 Extract OS            00 (0) 'MS-DOS'\n+237388 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23531B Compression Method    0008 (8) 'Deflated'\n-23531D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235321 CRC                   00000000 (0)\n-235325 Compressed Size       00000002 (2)\n-235329 Uncompressed Size     00000000 (0)\n-23532D Filename Length       0022 (34)\n-23532F Extra Length          0000 (0)\n-235331 Comment Length        0000 (0)\n-235333 Disk Start            0000 (0)\n-235335 Int File Attributes   0000 (0)\n+23738A Compression Method    0008 (8) 'Deflated'\n+23738C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237390 CRC                   ED7C06AB (3984328363)\n+237394 Compressed Size       00000395 (917)\n+237398 Uncompressed Size     00000AE6 (2790)\n+23739C Filename Length       003B (59)\n+23739E Extra Length          0000 (0)\n+2373A0 Comment Length        0000 (0)\n+2373A2 Disk Start            0000 (0)\n+2373A4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235337 Ext File Attributes   00000000 (0)\n-23533B Local Header Offset   0018BDDB (1621467)\n-23533F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2373A6 Ext File Attributes   00000000 (0)\n+2373AA Local Header Offset   00195481 (1660033)\n+2373AE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23533F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2373AE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235361 CENTRAL HEADER #1484  02014B50 (33639248)\n-235365 Created Zip Spec      14 (20) '2.0'\n-235366 Created OS            00 (0) 'MS-DOS'\n-235367 Extract Zip Spec      14 (20) '2.0'\n-235368 Extract OS            00 (0) 'MS-DOS'\n-235369 General Purpose Flag  0808 (2056)\n+2373E9 CENTRAL HEADER #1484  02014B50 (33639248)\n+2373ED Created Zip Spec      14 (20) '2.0'\n+2373EE Created OS            00 (0) 'MS-DOS'\n+2373EF Extract Zip Spec      14 (20) '2.0'\n+2373F0 Extract OS            00 (0) 'MS-DOS'\n+2373F1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23536B Compression Method    0008 (8) 'Deflated'\n-23536D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235371 CRC                   8BEA30C0 (2347380928)\n-235375 Compressed Size       00000348 (840)\n-235379 Uncompressed Size     00000893 (2195)\n-23537D Filename Length       0034 (52)\n-23537F Extra Length          0000 (0)\n-235381 Comment Length        0000 (0)\n-235383 Disk Start            0000 (0)\n-235385 Int File Attributes   0000 (0)\n+2373F3 Compression Method    0008 (8) 'Deflated'\n+2373F5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2373F9 CRC                   86102534 (2249205044)\n+2373FD Compressed Size       00000359 (857)\n+237401 Uncompressed Size     00000AAA (2730)\n+237405 Filename Length       003C (60)\n+237407 Extra Length          0000 (0)\n+237409 Comment Length        0000 (0)\n+23740B Disk Start            0000 (0)\n+23740D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235387 Ext File Attributes   00000000 (0)\n-23538B Local Header Offset   0018BE2D (1621549)\n-23538F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23740F Ext File Attributes   00000000 (0)\n+237413 Local Header Offset   0019587F (1661055)\n+237417 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23538F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237417: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2353C3 CENTRAL HEADER #1485  02014B50 (33639248)\n-2353C7 Created Zip Spec      14 (20) '2.0'\n-2353C8 Created OS            00 (0) 'MS-DOS'\n-2353C9 Extract Zip Spec      14 (20) '2.0'\n-2353CA Extract OS            00 (0) 'MS-DOS'\n-2353CB General Purpose Flag  0808 (2056)\n+237453 CENTRAL HEADER #1485  02014B50 (33639248)\n+237457 Created Zip Spec      14 (20) '2.0'\n+237458 Created OS            00 (0) 'MS-DOS'\n+237459 Extract Zip Spec      14 (20) '2.0'\n+23745A Extract OS            00 (0) 'MS-DOS'\n+23745B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2353CD Compression Method    0008 (8) 'Deflated'\n-2353CF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2353D3 CRC                   9A0D91FA (2584580602)\n-2353D7 Compressed Size       000003DD (989)\n-2353DB Uncompressed Size     00000A9D (2717)\n-2353DF Filename Length       0038 (56)\n-2353E1 Extra Length          0000 (0)\n-2353E3 Comment Length        0000 (0)\n-2353E5 Disk Start            0000 (0)\n-2353E7 Int File Attributes   0000 (0)\n+23745D Compression Method    0008 (8) 'Deflated'\n+23745F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237463 CRC                   D9C4B6B2 (3653547698)\n+237467 Compressed Size       000002FB (763)\n+23746B Uncompressed Size     0000073C (1852)\n+23746F Filename Length       003D (61)\n+237471 Extra Length          0000 (0)\n+237473 Comment Length        0000 (0)\n+237475 Disk Start            0000 (0)\n+237477 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2353E9 Ext File Attributes   00000000 (0)\n-2353ED Local Header Offset   0018C1D7 (1622487)\n-2353F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237479 Ext File Attributes   00000000 (0)\n+23747D Local Header Offset   00195C42 (1662018)\n+237481 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2353F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237481: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235429 CENTRAL HEADER #1486  02014B50 (33639248)\n-23542D Created Zip Spec      14 (20) '2.0'\n-23542E Created OS            00 (0) 'MS-DOS'\n-23542F Extract Zip Spec      14 (20) '2.0'\n-235430 Extract OS            00 (0) 'MS-DOS'\n-235431 General Purpose Flag  0808 (2056)\n+2374BE CENTRAL HEADER #1486  02014B50 (33639248)\n+2374C2 Created Zip Spec      14 (20) '2.0'\n+2374C3 Created OS            00 (0) 'MS-DOS'\n+2374C4 Extract Zip Spec      14 (20) '2.0'\n+2374C5 Extract OS            00 (0) 'MS-DOS'\n+2374C6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235433 Compression Method    0008 (8) 'Deflated'\n-235435 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235439 CRC                   00000000 (0)\n-23543D Compressed Size       00000002 (2)\n-235441 Uncompressed Size     00000000 (0)\n-235445 Filename Length       001C (28)\n-235447 Extra Length          0000 (0)\n-235449 Comment Length        0000 (0)\n-23544B Disk Start            0000 (0)\n-23544D Int File Attributes   0000 (0)\n+2374C8 Compression Method    0008 (8) 'Deflated'\n+2374CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2374CE CRC                   5DF61F16 (1576410902)\n+2374D2 Compressed Size       000002EF (751)\n+2374D6 Uncompressed Size     00000733 (1843)\n+2374DA Filename Length       0041 (65)\n+2374DC Extra Length          0000 (0)\n+2374DE Comment Length        0000 (0)\n+2374E0 Disk Start            0000 (0)\n+2374E2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23544F Ext File Attributes   00000000 (0)\n-235453 Local Header Offset   0018C61A (1623578)\n-235457 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2374E4 Ext File Attributes   00000000 (0)\n+2374E8 Local Header Offset   00195FA8 (1662888)\n+2374EC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235457: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2374EC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235473 CENTRAL HEADER #1487  02014B50 (33639248)\n-235477 Created Zip Spec      14 (20) '2.0'\n-235478 Created OS            00 (0) 'MS-DOS'\n-235479 Extract Zip Spec      14 (20) '2.0'\n-23547A Extract OS            00 (0) 'MS-DOS'\n-23547B General Purpose Flag  0808 (2056)\n+23752D CENTRAL HEADER #1487  02014B50 (33639248)\n+237531 Created Zip Spec      14 (20) '2.0'\n+237532 Created OS            00 (0) 'MS-DOS'\n+237533 Extract Zip Spec      14 (20) '2.0'\n+237534 Extract OS            00 (0) 'MS-DOS'\n+237535 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23547D Compression Method    0008 (8) 'Deflated'\n-23547F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235483 CRC                   93C23403 (2478978051)\n-235487 Compressed Size       0000023B (571)\n-23548B Uncompressed Size     000003DE (990)\n-23548F Filename Length       002D (45)\n-235491 Extra Length          0000 (0)\n-235493 Comment Length        0000 (0)\n-235495 Disk Start            0000 (0)\n-235497 Int File Attributes   0000 (0)\n+237537 Compression Method    0008 (8) 'Deflated'\n+237539 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23753D CRC                   B4FAC75F (3036333919)\n+237541 Compressed Size       0000047B (1147)\n+237545 Uncompressed Size     00001227 (4647)\n+237549 Filename Length       003E (62)\n+23754B Extra Length          0000 (0)\n+23754D Comment Length        0000 (0)\n+23754F Disk Start            0000 (0)\n+237551 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235499 Ext File Attributes   00000000 (0)\n-23549D Local Header Offset   0018C666 (1623654)\n-2354A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237553 Ext File Attributes   00000000 (0)\n+237557 Local Header Offset   00196306 (1663750)\n+23755B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2354A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23755B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2354CE CENTRAL HEADER #1488  02014B50 (33639248)\n-2354D2 Created Zip Spec      14 (20) '2.0'\n-2354D3 Created OS            00 (0) 'MS-DOS'\n-2354D4 Extract Zip Spec      14 (20) '2.0'\n-2354D5 Extract OS            00 (0) 'MS-DOS'\n-2354D6 General Purpose Flag  0808 (2056)\n+237599 CENTRAL HEADER #1488  02014B50 (33639248)\n+23759D Created Zip Spec      14 (20) '2.0'\n+23759E Created OS            00 (0) 'MS-DOS'\n+23759F Extract Zip Spec      14 (20) '2.0'\n+2375A0 Extract OS            00 (0) 'MS-DOS'\n+2375A1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2354D8 Compression Method    0008 (8) 'Deflated'\n-2354DA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2354DE CRC                   00000000 (0)\n-2354E2 Compressed Size       00000002 (2)\n-2354E6 Uncompressed Size     00000000 (0)\n-2354EA Filename Length       001C (28)\n-2354EC Extra Length          0000 (0)\n-2354EE Comment Length        0000 (0)\n-2354F0 Disk Start            0000 (0)\n-2354F2 Int File Attributes   0000 (0)\n+2375A3 Compression Method    0008 (8) 'Deflated'\n+2375A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2375A9 CRC                   00000000 (0)\n+2375AD Compressed Size       00000002 (2)\n+2375B1 Uncompressed Size     00000000 (0)\n+2375B5 Filename Length       002E (46)\n+2375B7 Extra Length          0000 (0)\n+2375B9 Comment Length        0000 (0)\n+2375BB Disk Start            0000 (0)\n+2375BD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2354F4 Ext File Attributes   00000000 (0)\n-2354F8 Local Header Offset   0018C8FC (1624316)\n-2354FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2375BF Ext File Attributes   00000000 (0)\n+2375C3 Local Header Offset   001967ED (1665005)\n+2375C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2354FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2375C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235518 CENTRAL HEADER #1489  02014B50 (33639248)\n-23551C Created Zip Spec      14 (20) '2.0'\n-23551D Created OS            00 (0) 'MS-DOS'\n-23551E Extract Zip Spec      14 (20) '2.0'\n-23551F Extract OS            00 (0) 'MS-DOS'\n-235520 General Purpose Flag  0808 (2056)\n+2375F5 CENTRAL HEADER #1489  02014B50 (33639248)\n+2375F9 Created Zip Spec      14 (20) '2.0'\n+2375FA Created OS            00 (0) 'MS-DOS'\n+2375FB Extract Zip Spec      14 (20) '2.0'\n+2375FC Extract OS            00 (0) 'MS-DOS'\n+2375FD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235522 Compression Method    0008 (8) 'Deflated'\n-235524 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235528 CRC                   FA05AB13 (4194675475)\n-23552C Compressed Size       0000046B (1131)\n-235530 Uncompressed Size     00000B10 (2832)\n-235534 Filename Length       0034 (52)\n-235536 Extra Length          0000 (0)\n-235538 Comment Length        0000 (0)\n-23553A Disk Start            0000 (0)\n-23553C Int File Attributes   0000 (0)\n+2375FF Compression Method    0008 (8) 'Deflated'\n+237601 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237605 CRC                   00000000 (0)\n+237609 Compressed Size       00000002 (2)\n+23760D Uncompressed Size     00000000 (0)\n+237611 Filename Length       0034 (52)\n+237613 Extra Length          0000 (0)\n+237615 Comment Length        0000 (0)\n+237617 Disk Start            0000 (0)\n+237619 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23553E Ext File Attributes   00000000 (0)\n-235542 Local Header Offset   0018C948 (1624392)\n-235546 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23761B Ext File Attributes   00000000 (0)\n+23761F Local Header Offset   0019684B (1665099)\n+237623 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235546: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237623: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23557A CENTRAL HEADER #1490  02014B50 (33639248)\n-23557E Created Zip Spec      14 (20) '2.0'\n-23557F Created OS            00 (0) 'MS-DOS'\n-235580 Extract Zip Spec      14 (20) '2.0'\n-235581 Extract OS            00 (0) 'MS-DOS'\n-235582 General Purpose Flag  0808 (2056)\n+237657 CENTRAL HEADER #1490  02014B50 (33639248)\n+23765B Created Zip Spec      14 (20) '2.0'\n+23765C Created OS            00 (0) 'MS-DOS'\n+23765D Extract Zip Spec      14 (20) '2.0'\n+23765E Extract OS            00 (0) 'MS-DOS'\n+23765F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235584 Compression Method    0008 (8) 'Deflated'\n-235586 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23558A CRC                   4A88912B (1250464043)\n-23558E Compressed Size       000007CB (1995)\n-235592 Uncompressed Size     00001A65 (6757)\n-235596 Filename Length       0033 (51)\n-235598 Extra Length          0000 (0)\n-23559A Comment Length        0000 (0)\n-23559C Disk Start            0000 (0)\n-23559E Int File Attributes   0000 (0)\n+237661 Compression Method    0008 (8) 'Deflated'\n+237663 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237667 CRC                   B981B5EA (3112285674)\n+23766B Compressed Size       00000311 (785)\n+23766F Uncompressed Size     000006AF (1711)\n+237673 Filename Length       0047 (71)\n+237675 Extra Length          0000 (0)\n+237677 Comment Length        0000 (0)\n+237679 Disk Start            0000 (0)\n+23767B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2355A0 Ext File Attributes   00000000 (0)\n-2355A4 Local Header Offset   0018CE15 (1625621)\n-2355A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23767D Ext File Attributes   00000000 (0)\n+237681 Local Header Offset   001968AF (1665199)\n+237685 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2355A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237685: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2355DB CENTRAL HEADER #1491  02014B50 (33639248)\n-2355DF Created Zip Spec      14 (20) '2.0'\n-2355E0 Created OS            00 (0) 'MS-DOS'\n-2355E1 Extract Zip Spec      14 (20) '2.0'\n-2355E2 Extract OS            00 (0) 'MS-DOS'\n-2355E3 General Purpose Flag  0808 (2056)\n+2376CC CENTRAL HEADER #1491  02014B50 (33639248)\n+2376D0 Created Zip Spec      14 (20) '2.0'\n+2376D1 Created OS            00 (0) 'MS-DOS'\n+2376D2 Extract Zip Spec      14 (20) '2.0'\n+2376D3 Extract OS            00 (0) 'MS-DOS'\n+2376D4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2355E5 Compression Method    0008 (8) 'Deflated'\n-2355E7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2355EB CRC                   0FA20D48 (262278472)\n-2355EF Compressed Size       00000343 (835)\n-2355F3 Uncompressed Size     000006EF (1775)\n-2355F7 Filename Length       0035 (53)\n-2355F9 Extra Length          0000 (0)\n-2355FB Comment Length        0000 (0)\n-2355FD Disk Start            0000 (0)\n-2355FF Int File Attributes   0000 (0)\n+2376D6 Compression Method    0008 (8) 'Deflated'\n+2376D8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2376DC CRC                   D04429D3 (3494128083)\n+2376E0 Compressed Size       00000315 (789)\n+2376E4 Uncompressed Size     000006AF (1711)\n+2376E8 Filename Length       0046 (70)\n+2376EA Extra Length          0000 (0)\n+2376EC Comment Length        0000 (0)\n+2376EE Disk Start            0000 (0)\n+2376F0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235601 Ext File Attributes   00000000 (0)\n-235605 Local Header Offset   0018D641 (1627713)\n-235609 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2376F2 Ext File Attributes   00000000 (0)\n+2376F6 Local Header Offset   00196C35 (1666101)\n+2376FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235609: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2376FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23563E CENTRAL HEADER #1492  02014B50 (33639248)\n-235642 Created Zip Spec      14 (20) '2.0'\n-235643 Created OS            00 (0) 'MS-DOS'\n-235644 Extract Zip Spec      14 (20) '2.0'\n-235645 Extract OS            00 (0) 'MS-DOS'\n-235646 General Purpose Flag  0808 (2056)\n+237740 CENTRAL HEADER #1492  02014B50 (33639248)\n+237744 Created Zip Spec      14 (20) '2.0'\n+237745 Created OS            00 (0) 'MS-DOS'\n+237746 Extract Zip Spec      14 (20) '2.0'\n+237747 Extract OS            00 (0) 'MS-DOS'\n+237748 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235648 Compression Method    0008 (8) 'Deflated'\n-23564A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23564E CRC                   27D9ECF0 (668593392)\n-235652 Compressed Size       00000B77 (2935)\n-235656 Uncompressed Size     00002AD5 (10965)\n-23565A Filename Length       0034 (52)\n-23565C Extra Length          0000 (0)\n-23565E Comment Length        0000 (0)\n-235660 Disk Start            0000 (0)\n-235662 Int File Attributes   0000 (0)\n+23774A Compression Method    0008 (8) 'Deflated'\n+23774C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237750 CRC                   473D2A13 (1195190803)\n+237754 Compressed Size       00000378 (888)\n+237758 Uncompressed Size     000007E1 (2017)\n+23775C Filename Length       004C (76)\n+23775E Extra Length          0000 (0)\n+237760 Comment Length        0000 (0)\n+237762 Disk Start            0000 (0)\n+237764 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235664 Ext File Attributes   00000000 (0)\n-235668 Local Header Offset   0018D9E7 (1628647)\n-23566C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237766 Ext File Attributes   00000000 (0)\n+23776A Local Header Offset   00196FBE (1667006)\n+23776E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23566C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23776E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2356A0 CENTRAL HEADER #1493  02014B50 (33639248)\n-2356A4 Created Zip Spec      14 (20) '2.0'\n-2356A5 Created OS            00 (0) 'MS-DOS'\n-2356A6 Extract Zip Spec      14 (20) '2.0'\n-2356A7 Extract OS            00 (0) 'MS-DOS'\n-2356A8 General Purpose Flag  0808 (2056)\n+2377BA CENTRAL HEADER #1493  02014B50 (33639248)\n+2377BE Created Zip Spec      14 (20) '2.0'\n+2377BF Created OS            00 (0) 'MS-DOS'\n+2377C0 Extract Zip Spec      14 (20) '2.0'\n+2377C1 Extract OS            00 (0) 'MS-DOS'\n+2377C2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2356AA Compression Method    0008 (8) 'Deflated'\n-2356AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2356B0 CRC                   540DE20D (1410195981)\n-2356B4 Compressed Size       000006AC (1708)\n-2356B8 Uncompressed Size     00001A1C (6684)\n-2356BC Filename Length       0032 (50)\n-2356BE Extra Length          0000 (0)\n-2356C0 Comment Length        0000 (0)\n-2356C2 Disk Start            0000 (0)\n-2356C4 Int File Attributes   0000 (0)\n+2377C4 Compression Method    0008 (8) 'Deflated'\n+2377C6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2377CA CRC                   5EDE06FE (1591609086)\n+2377CE Compressed Size       00000323 (803)\n+2377D2 Uncompressed Size     000006F6 (1782)\n+2377D6 Filename Length       0048 (72)\n+2377D8 Extra Length          0000 (0)\n+2377DA Comment Length        0000 (0)\n+2377DC Disk Start            0000 (0)\n+2377DE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2356C6 Ext File Attributes   00000000 (0)\n-2356CA Local Header Offset   0018E5C0 (1631680)\n-2356CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2377E0 Ext File Attributes   00000000 (0)\n+2377E4 Local Header Offset   001973B0 (1668016)\n+2377E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2356CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2377E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235700 CENTRAL HEADER #1494  02014B50 (33639248)\n-235704 Created Zip Spec      14 (20) '2.0'\n-235705 Created OS            00 (0) 'MS-DOS'\n-235706 Extract Zip Spec      14 (20) '2.0'\n-235707 Extract OS            00 (0) 'MS-DOS'\n-235708 General Purpose Flag  0808 (2056)\n+237830 CENTRAL HEADER #1494  02014B50 (33639248)\n+237834 Created Zip Spec      14 (20) '2.0'\n+237835 Created OS            00 (0) 'MS-DOS'\n+237836 Extract Zip Spec      14 (20) '2.0'\n+237837 Extract OS            00 (0) 'MS-DOS'\n+237838 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23570A Compression Method    0008 (8) 'Deflated'\n-23570C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235710 CRC                   256F6EAD (628059821)\n-235714 Compressed Size       000005BF (1471)\n-235718 Uncompressed Size     00000F7C (3964)\n-23571C Filename Length       0031 (49)\n-23571E Extra Length          0000 (0)\n-235720 Comment Length        0000 (0)\n-235722 Disk Start            0000 (0)\n-235724 Int File Attributes   0000 (0)\n+23783A Compression Method    0008 (8) 'Deflated'\n+23783C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237840 CRC                   C24A81AD (3259662765)\n+237844 Compressed Size       00000315 (789)\n+237848 Uncompressed Size     0000070D (1805)\n+23784C Filename Length       004C (76)\n+23784E Extra Length          0000 (0)\n+237850 Comment Length        0000 (0)\n+237852 Disk Start            0000 (0)\n+237854 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235726 Ext File Attributes   00000000 (0)\n-23572A Local Header Offset   0018ECCC (1633484)\n-23572E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237856 Ext File Attributes   00000000 (0)\n+23785A Local Header Offset   00197749 (1668937)\n+23785E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23572E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23785E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23575F CENTRAL HEADER #1495  02014B50 (33639248)\n-235763 Created Zip Spec      14 (20) '2.0'\n-235764 Created OS            00 (0) 'MS-DOS'\n-235765 Extract Zip Spec      14 (20) '2.0'\n-235766 Extract OS            00 (0) 'MS-DOS'\n-235767 General Purpose Flag  0808 (2056)\n+2378AA CENTRAL HEADER #1495  02014B50 (33639248)\n+2378AE Created Zip Spec      14 (20) '2.0'\n+2378AF Created OS            00 (0) 'MS-DOS'\n+2378B0 Extract Zip Spec      14 (20) '2.0'\n+2378B1 Extract OS            00 (0) 'MS-DOS'\n+2378B2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235769 Compression Method    0008 (8) 'Deflated'\n-23576B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23576F CRC                   41EC82BB (1106019003)\n-235773 Compressed Size       000004E6 (1254)\n-235777 Uncompressed Size     00000F05 (3845)\n-23577B Filename Length       0032 (50)\n-23577D Extra Length          0000 (0)\n-23577F Comment Length        0000 (0)\n-235781 Disk Start            0000 (0)\n-235783 Int File Attributes   0000 (0)\n+2378B4 Compression Method    0008 (8) 'Deflated'\n+2378B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2378BA CRC                   5F5E8EB8 (1600032440)\n+2378BE Compressed Size       00000337 (823)\n+2378C2 Uncompressed Size     00000748 (1864)\n+2378C6 Filename Length       0048 (72)\n+2378C8 Extra Length          0000 (0)\n+2378CA Comment Length        0000 (0)\n+2378CC Disk Start            0000 (0)\n+2378CE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235785 Ext File Attributes   00000000 (0)\n-235789 Local Header Offset   0018F2EA (1635050)\n-23578D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2378D0 Ext File Attributes   00000000 (0)\n+2378D4 Local Header Offset   00197AD8 (1669848)\n+2378D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23578D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2378D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2357BF CENTRAL HEADER #1496  02014B50 (33639248)\n-2357C3 Created Zip Spec      14 (20) '2.0'\n-2357C4 Created OS            00 (0) 'MS-DOS'\n-2357C5 Extract Zip Spec      14 (20) '2.0'\n-2357C6 Extract OS            00 (0) 'MS-DOS'\n-2357C7 General Purpose Flag  0808 (2056)\n+237920 CENTRAL HEADER #1496  02014B50 (33639248)\n+237924 Created Zip Spec      14 (20) '2.0'\n+237925 Created OS            00 (0) 'MS-DOS'\n+237926 Extract Zip Spec      14 (20) '2.0'\n+237927 Extract OS            00 (0) 'MS-DOS'\n+237928 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2357C9 Compression Method    0008 (8) 'Deflated'\n-2357CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2357CF CRC                   C71A64BF (3340395711)\n-2357D3 Compressed Size       0000044C (1100)\n-2357D7 Uncompressed Size     00000AD7 (2775)\n-2357DB Filename Length       0034 (52)\n-2357DD Extra Length          0000 (0)\n-2357DF Comment Length        0000 (0)\n-2357E1 Disk Start            0000 (0)\n-2357E3 Int File Attributes   0000 (0)\n+23792A Compression Method    0008 (8) 'Deflated'\n+23792C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237930 CRC                   058FA161 (93299041)\n+237934 Compressed Size       00000312 (786)\n+237938 Uncompressed Size     000006A3 (1699)\n+23793C Filename Length       0047 (71)\n+23793E Extra Length          0000 (0)\n+237940 Comment Length        0000 (0)\n+237942 Disk Start            0000 (0)\n+237944 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2357E5 Ext File Attributes   00000000 (0)\n-2357E9 Local Header Offset   0018F830 (1636400)\n-2357ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237946 Ext File Attributes   00000000 (0)\n+23794A Local Header Offset   00197E85 (1670789)\n+23794E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2357ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23794E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235821 CENTRAL HEADER #1497  02014B50 (33639248)\n-235825 Created Zip Spec      14 (20) '2.0'\n-235826 Created OS            00 (0) 'MS-DOS'\n-235827 Extract Zip Spec      14 (20) '2.0'\n-235828 Extract OS            00 (0) 'MS-DOS'\n-235829 General Purpose Flag  0808 (2056)\n+237995 CENTRAL HEADER #1497  02014B50 (33639248)\n+237999 Created Zip Spec      14 (20) '2.0'\n+23799A Created OS            00 (0) 'MS-DOS'\n+23799B Extract Zip Spec      14 (20) '2.0'\n+23799C Extract OS            00 (0) 'MS-DOS'\n+23799D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23582B Compression Method    0008 (8) 'Deflated'\n-23582D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235831 CRC                   ED50455A (3981460826)\n-235835 Compressed Size       0000045A (1114)\n-235839 Uncompressed Size     00000A88 (2696)\n-23583D Filename Length       0036 (54)\n-23583F Extra Length          0000 (0)\n-235841 Comment Length        0000 (0)\n-235843 Disk Start            0000 (0)\n-235845 Int File Attributes   0000 (0)\n+23799F Compression Method    0008 (8) 'Deflated'\n+2379A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2379A5 CRC                   E27B7C96 (3799743638)\n+2379A9 Compressed Size       00000325 (805)\n+2379AD Uncompressed Size     00000740 (1856)\n+2379B1 Filename Length       004D (77)\n+2379B3 Extra Length          0000 (0)\n+2379B5 Comment Length        0000 (0)\n+2379B7 Disk Start            0000 (0)\n+2379B9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235847 Ext File Attributes   00000000 (0)\n-23584B Local Header Offset   0018FCDE (1637598)\n-23584F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2379BB Ext File Attributes   00000000 (0)\n+2379BF Local Header Offset   0019820C (1671692)\n+2379C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23584F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2379C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235885 CENTRAL HEADER #1498  02014B50 (33639248)\n-235889 Created Zip Spec      14 (20) '2.0'\n-23588A Created OS            00 (0) 'MS-DOS'\n-23588B Extract Zip Spec      14 (20) '2.0'\n-23588C Extract OS            00 (0) 'MS-DOS'\n-23588D General Purpose Flag  0808 (2056)\n+237A10 CENTRAL HEADER #1498  02014B50 (33639248)\n+237A14 Created Zip Spec      14 (20) '2.0'\n+237A15 Created OS            00 (0) 'MS-DOS'\n+237A16 Extract Zip Spec      14 (20) '2.0'\n+237A17 Extract OS            00 (0) 'MS-DOS'\n+237A18 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23588F Compression Method    0008 (8) 'Deflated'\n-235891 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235895 CRC                   BA485F30 (3125305136)\n-235899 Compressed Size       00000573 (1395)\n-23589D Uncompressed Size     00000FBB (4027)\n-2358A1 Filename Length       0033 (51)\n-2358A3 Extra Length          0000 (0)\n-2358A5 Comment Length        0000 (0)\n-2358A7 Disk Start            0000 (0)\n-2358A9 Int File Attributes   0000 (0)\n+237A1A Compression Method    0008 (8) 'Deflated'\n+237A1C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237A20 CRC                   9F3D415D (2671591773)\n+237A24 Compressed Size       00000323 (803)\n+237A28 Uncompressed Size     0000071B (1819)\n+237A2C Filename Length       0049 (73)\n+237A2E Extra Length          0000 (0)\n+237A30 Comment Length        0000 (0)\n+237A32 Disk Start            0000 (0)\n+237A34 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2358AB Ext File Attributes   00000000 (0)\n-2358AF Local Header Offset   0019019C (1638812)\n-2358B3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237A36 Ext File Attributes   00000000 (0)\n+237A3A Local Header Offset   001985AC (1672620)\n+237A3E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2358B3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237A3E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2358E6 CENTRAL HEADER #1499  02014B50 (33639248)\n-2358EA Created Zip Spec      14 (20) '2.0'\n-2358EB Created OS            00 (0) 'MS-DOS'\n-2358EC Extract Zip Spec      14 (20) '2.0'\n-2358ED Extract OS            00 (0) 'MS-DOS'\n-2358EE General Purpose Flag  0808 (2056)\n+237A87 CENTRAL HEADER #1499  02014B50 (33639248)\n+237A8B Created Zip Spec      14 (20) '2.0'\n+237A8C Created OS            00 (0) 'MS-DOS'\n+237A8D Extract Zip Spec      14 (20) '2.0'\n+237A8E Extract OS            00 (0) 'MS-DOS'\n+237A8F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2358F0 Compression Method    0008 (8) 'Deflated'\n-2358F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2358F6 CRC                   00000000 (0)\n-2358FA Compressed Size       00000002 (2)\n-2358FE Uncompressed Size     00000000 (0)\n-235902 Filename Length       001E (30)\n-235904 Extra Length          0000 (0)\n-235906 Comment Length        0000 (0)\n-235908 Disk Start            0000 (0)\n-23590A Int File Attributes   0000 (0)\n+237A91 Compression Method    0008 (8) 'Deflated'\n+237A93 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237A97 CRC                   51BCB93C (1371322684)\n+237A9B Compressed Size       00000320 (800)\n+237A9F Uncompressed Size     000006D9 (1753)\n+237AA3 Filename Length       0045 (69)\n+237AA5 Extra Length          0000 (0)\n+237AA7 Comment Length        0000 (0)\n+237AA9 Disk Start            0000 (0)\n+237AAB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23590C Ext File Attributes   00000000 (0)\n-235910 Local Header Offset   00190770 (1640304)\n-235914 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237AAD Ext File Attributes   00000000 (0)\n+237AB1 Local Header Offset   00198946 (1673542)\n+237AB5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235914: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237AB5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235932 CENTRAL HEADER #1500  02014B50 (33639248)\n-235936 Created Zip Spec      14 (20) '2.0'\n-235937 Created OS            00 (0) 'MS-DOS'\n-235938 Extract Zip Spec      14 (20) '2.0'\n-235939 Extract OS            00 (0) 'MS-DOS'\n-23593A General Purpose Flag  0808 (2056)\n+237AFA CENTRAL HEADER #1500  02014B50 (33639248)\n+237AFE Created Zip Spec      14 (20) '2.0'\n+237AFF Created OS            00 (0) 'MS-DOS'\n+237B00 Extract Zip Spec      14 (20) '2.0'\n+237B01 Extract OS            00 (0) 'MS-DOS'\n+237B02 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23593C Compression Method    0008 (8) 'Deflated'\n-23593E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235942 CRC                   72812E46 (1921068614)\n-235946 Compressed Size       0000059C (1436)\n-23594A Uncompressed Size     000010D3 (4307)\n-23594E Filename Length       0035 (53)\n-235950 Extra Length          0000 (0)\n-235952 Comment Length        0000 (0)\n-235954 Disk Start            0000 (0)\n-235956 Int File Attributes   0000 (0)\n+237B04 Compression Method    0008 (8) 'Deflated'\n+237B06 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237B0A CRC                   A6FC3818 (2801547288)\n+237B0E Compressed Size       000002F5 (757)\n+237B12 Uncompressed Size     00000627 (1575)\n+237B16 Filename Length       0043 (67)\n+237B18 Extra Length          0000 (0)\n+237B1A Comment Length        0000 (0)\n+237B1C Disk Start            0000 (0)\n+237B1E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235958 Ext File Attributes   00000000 (0)\n-23595C Local Header Offset   001907BE (1640382)\n-235960 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237B20 Ext File Attributes   00000000 (0)\n+237B24 Local Header Offset   00198CD9 (1674457)\n+237B28 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235960: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237B28: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235995 CENTRAL HEADER #1501  02014B50 (33639248)\n-235999 Created Zip Spec      14 (20) '2.0'\n-23599A Created OS            00 (0) 'MS-DOS'\n-23599B Extract Zip Spec      14 (20) '2.0'\n-23599C Extract OS            00 (0) 'MS-DOS'\n-23599D General Purpose Flag  0808 (2056)\n+237B6B CENTRAL HEADER #1501  02014B50 (33639248)\n+237B6F Created Zip Spec      14 (20) '2.0'\n+237B70 Created OS            00 (0) 'MS-DOS'\n+237B71 Extract Zip Spec      14 (20) '2.0'\n+237B72 Extract OS            00 (0) 'MS-DOS'\n+237B73 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23599F Compression Method    0008 (8) 'Deflated'\n-2359A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2359A5 CRC                   00000000 (0)\n-2359A9 Compressed Size       00000002 (2)\n-2359AD Uncompressed Size     00000000 (0)\n-2359B1 Filename Length       001C (28)\n-2359B3 Extra Length          0000 (0)\n-2359B5 Comment Length        0000 (0)\n-2359B7 Disk Start            0000 (0)\n-2359B9 Int File Attributes   0000 (0)\n+237B75 Compression Method    0008 (8) 'Deflated'\n+237B77 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237B7B CRC                   2D3E4959 (759056729)\n+237B7F Compressed Size       00000314 (788)\n+237B83 Uncompressed Size     000006AB (1707)\n+237B87 Filename Length       0048 (72)\n+237B89 Extra Length          0000 (0)\n+237B8B Comment Length        0000 (0)\n+237B8D Disk Start            0000 (0)\n+237B8F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2359BB Ext File Attributes   00000000 (0)\n-2359BF Local Header Offset   00190DBD (1641917)\n-2359C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237B91 Ext File Attributes   00000000 (0)\n+237B95 Local Header Offset   0019903F (1675327)\n+237B99 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2359C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237B99: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2359DF CENTRAL HEADER #1502  02014B50 (33639248)\n-2359E3 Created Zip Spec      14 (20) '2.0'\n-2359E4 Created OS            00 (0) 'MS-DOS'\n-2359E5 Extract Zip Spec      14 (20) '2.0'\n-2359E6 Extract OS            00 (0) 'MS-DOS'\n-2359E7 General Purpose Flag  0808 (2056)\n+237BE1 CENTRAL HEADER #1502  02014B50 (33639248)\n+237BE5 Created Zip Spec      14 (20) '2.0'\n+237BE6 Created OS            00 (0) 'MS-DOS'\n+237BE7 Extract Zip Spec      14 (20) '2.0'\n+237BE8 Extract OS            00 (0) 'MS-DOS'\n+237BE9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2359E9 Compression Method    0008 (8) 'Deflated'\n-2359EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2359EF CRC                   4C3B1439 (1278940217)\n-2359F3 Compressed Size       00000263 (611)\n-2359F7 Uncompressed Size     000004E5 (1253)\n-2359FB Filename Length       002A (42)\n-2359FD Extra Length          0000 (0)\n-2359FF Comment Length        0000 (0)\n-235A01 Disk Start            0000 (0)\n-235A03 Int File Attributes   0000 (0)\n+237BEB Compression Method    0008 (8) 'Deflated'\n+237BED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237BF1 CRC                   34807571 (880833905)\n+237BF5 Compressed Size       000002FA (762)\n+237BF9 Uncompressed Size     00000649 (1609)\n+237BFD Filename Length       0045 (69)\n+237BFF Extra Length          0000 (0)\n+237C01 Comment Length        0000 (0)\n+237C03 Disk Start            0000 (0)\n+237C05 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235A05 Ext File Attributes   00000000 (0)\n-235A09 Local Header Offset   00190E09 (1641993)\n-235A0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237C07 Ext File Attributes   00000000 (0)\n+237C0B Local Header Offset   001993C9 (1676233)\n+237C0F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235A0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237C0F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235A37 CENTRAL HEADER #1503  02014B50 (33639248)\n-235A3B Created Zip Spec      14 (20) '2.0'\n-235A3C Created OS            00 (0) 'MS-DOS'\n-235A3D Extract Zip Spec      14 (20) '2.0'\n-235A3E Extract OS            00 (0) 'MS-DOS'\n-235A3F General Purpose Flag  0808 (2056)\n+237C54 CENTRAL HEADER #1503  02014B50 (33639248)\n+237C58 Created Zip Spec      14 (20) '2.0'\n+237C59 Created OS            00 (0) 'MS-DOS'\n+237C5A Extract Zip Spec      14 (20) '2.0'\n+237C5B Extract OS            00 (0) 'MS-DOS'\n+237C5C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235A41 Compression Method    0008 (8) 'Deflated'\n-235A43 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235A47 CRC                   0C035F96 (201547670)\n-235A4B Compressed Size       000005F9 (1529)\n-235A4F Uncompressed Size     000011CA (4554)\n-235A53 Filename Length       0027 (39)\n-235A55 Extra Length          0000 (0)\n-235A57 Comment Length        0000 (0)\n-235A59 Disk Start            0000 (0)\n-235A5B Int File Attributes   0000 (0)\n+237C5E Compression Method    0008 (8) 'Deflated'\n+237C60 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237C64 CRC                   823F34AF (2185180335)\n+237C68 Compressed Size       000002DF (735)\n+237C6C Uncompressed Size     000005E7 (1511)\n+237C70 Filename Length       0049 (73)\n+237C72 Extra Length          0000 (0)\n+237C74 Comment Length        0000 (0)\n+237C76 Disk Start            0000 (0)\n+237C78 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235A5D Ext File Attributes   00000000 (0)\n-235A61 Local Header Offset   001910C4 (1642692)\n-235A65 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237C7A Ext File Attributes   00000000 (0)\n+237C7E Local Header Offset   00199736 (1677110)\n+237C82 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235A65: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237C82: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235A8C CENTRAL HEADER #1504  02014B50 (33639248)\n-235A90 Created Zip Spec      14 (20) '2.0'\n-235A91 Created OS            00 (0) 'MS-DOS'\n-235A92 Extract Zip Spec      14 (20) '2.0'\n-235A93 Extract OS            00 (0) 'MS-DOS'\n-235A94 General Purpose Flag  0808 (2056)\n+237CCB CENTRAL HEADER #1504  02014B50 (33639248)\n+237CCF Created Zip Spec      14 (20) '2.0'\n+237CD0 Created OS            00 (0) 'MS-DOS'\n+237CD1 Extract Zip Spec      14 (20) '2.0'\n+237CD2 Extract OS            00 (0) 'MS-DOS'\n+237CD3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235A96 Compression Method    0008 (8) 'Deflated'\n-235A98 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235A9C CRC                   00000000 (0)\n-235AA0 Compressed Size       00000002 (2)\n-235AA4 Uncompressed Size     00000000 (0)\n-235AA8 Filename Length       0024 (36)\n-235AAA Extra Length          0000 (0)\n-235AAC Comment Length        0000 (0)\n-235AAE Disk Start            0000 (0)\n-235AB0 Int File Attributes   0000 (0)\n+237CD5 Compression Method    0008 (8) 'Deflated'\n+237CD7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237CDB CRC                   F89085BF (4170220991)\n+237CDF Compressed Size       00000302 (770)\n+237CE3 Uncompressed Size     0000067C (1660)\n+237CE7 Filename Length       0049 (73)\n+237CE9 Extra Length          0000 (0)\n+237CEB Comment Length        0000 (0)\n+237CED Disk Start            0000 (0)\n+237CEF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235AB2 Ext File Attributes   00000000 (0)\n-235AB6 Local Header Offset   00191712 (1644306)\n-235ABA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237CF1 Ext File Attributes   00000000 (0)\n+237CF5 Local Header Offset   00199A8C (1677964)\n+237CF9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235ABA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237CF9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235ADE CENTRAL HEADER #1505  02014B50 (33639248)\n-235AE2 Created Zip Spec      14 (20) '2.0'\n-235AE3 Created OS            00 (0) 'MS-DOS'\n-235AE4 Extract Zip Spec      14 (20) '2.0'\n-235AE5 Extract OS            00 (0) 'MS-DOS'\n-235AE6 General Purpose Flag  0808 (2056)\n+237D42 CENTRAL HEADER #1505  02014B50 (33639248)\n+237D46 Created Zip Spec      14 (20) '2.0'\n+237D47 Created OS            00 (0) 'MS-DOS'\n+237D48 Extract Zip Spec      14 (20) '2.0'\n+237D49 Extract OS            00 (0) 'MS-DOS'\n+237D4A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235AE8 Compression Method    0008 (8) 'Deflated'\n-235AEA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235AEE CRC                   5688E99A (1451813274)\n-235AF2 Compressed Size       000005C2 (1474)\n-235AF6 Uncompressed Size     00001436 (5174)\n-235AFA Filename Length       003B (59)\n-235AFC Extra Length          0000 (0)\n-235AFE Comment Length        0000 (0)\n-235B00 Disk Start            0000 (0)\n-235B02 Int File Attributes   0000 (0)\n+237D4C Compression Method    0008 (8) 'Deflated'\n+237D4E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237D52 CRC                   A0A0B3FD (2694886397)\n+237D56 Compressed Size       00000363 (867)\n+237D5A Uncompressed Size     00000817 (2071)\n+237D5E Filename Length       004C (76)\n+237D60 Extra Length          0000 (0)\n+237D62 Comment Length        0000 (0)\n+237D64 Disk Start            0000 (0)\n+237D66 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235B04 Ext File Attributes   00000000 (0)\n-235B08 Local Header Offset   00191766 (1644390)\n-235B0C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237D68 Ext File Attributes   00000000 (0)\n+237D6C Local Header Offset   00199E05 (1678853)\n+237D70 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235B0C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237D70: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235B47 CENTRAL HEADER #1506  02014B50 (33639248)\n-235B4B Created Zip Spec      14 (20) '2.0'\n-235B4C Created OS            00 (0) 'MS-DOS'\n-235B4D Extract Zip Spec      14 (20) '2.0'\n-235B4E Extract OS            00 (0) 'MS-DOS'\n-235B4F General Purpose Flag  0808 (2056)\n+237DBC CENTRAL HEADER #1506  02014B50 (33639248)\n+237DC0 Created Zip Spec      14 (20) '2.0'\n+237DC1 Created OS            00 (0) 'MS-DOS'\n+237DC2 Extract Zip Spec      14 (20) '2.0'\n+237DC3 Extract OS            00 (0) 'MS-DOS'\n+237DC4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235B51 Compression Method    0008 (8) 'Deflated'\n-235B53 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235B57 CRC                   DA916F8A (3666964362)\n-235B5B Compressed Size       00000376 (886)\n-235B5F Uncompressed Size     000007A1 (1953)\n-235B63 Filename Length       003F (63)\n-235B65 Extra Length          0000 (0)\n-235B67 Comment Length        0000 (0)\n-235B69 Disk Start            0000 (0)\n-235B6B Int File Attributes   0000 (0)\n+237DC6 Compression Method    0008 (8) 'Deflated'\n+237DC8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237DCC CRC                   00000000 (0)\n+237DD0 Compressed Size       00000002 (2)\n+237DD4 Uncompressed Size     00000000 (0)\n+237DD8 Filename Length       0043 (67)\n+237DDA Extra Length          0000 (0)\n+237DDC Comment Length        0000 (0)\n+237DDE Disk Start            0000 (0)\n+237DE0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235B6D Ext File Attributes   00000000 (0)\n-235B71 Local Header Offset   00191D91 (1645969)\n-235B75 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237DE2 Ext File Attributes   00000000 (0)\n+237DE6 Local Header Offset   0019A1E2 (1679842)\n+237DEA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235B75: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237DEA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235BB4 CENTRAL HEADER #1507  02014B50 (33639248)\n-235BB8 Created Zip Spec      14 (20) '2.0'\n-235BB9 Created OS            00 (0) 'MS-DOS'\n-235BBA Extract Zip Spec      14 (20) '2.0'\n-235BBB Extract OS            00 (0) 'MS-DOS'\n-235BBC General Purpose Flag  0808 (2056)\n+237E2D CENTRAL HEADER #1507  02014B50 (33639248)\n+237E31 Created Zip Spec      14 (20) '2.0'\n+237E32 Created OS            00 (0) 'MS-DOS'\n+237E33 Extract Zip Spec      14 (20) '2.0'\n+237E34 Extract OS            00 (0) 'MS-DOS'\n+237E35 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235BBE Compression Method    0008 (8) 'Deflated'\n-235BC0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235BC4 CRC                   1CB52B1D (481635101)\n-235BC8 Compressed Size       000005C7 (1479)\n-235BCC Uncompressed Size     0000100F (4111)\n-235BD0 Filename Length       003A (58)\n-235BD2 Extra Length          0000 (0)\n-235BD4 Comment Length        0000 (0)\n-235BD6 Disk Start            0000 (0)\n-235BD8 Int File Attributes   0000 (0)\n+237E37 Compression Method    0008 (8) 'Deflated'\n+237E39 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237E3D CRC                   D7D86FD9 (3621285849)\n+237E41 Compressed Size       0000034D (845)\n+237E45 Uncompressed Size     000007C2 (1986)\n+237E49 Filename Length       004A (74)\n+237E4B Extra Length          0000 (0)\n+237E4D Comment Length        0000 (0)\n+237E4F Disk Start            0000 (0)\n+237E51 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235BDA Ext File Attributes   00000000 (0)\n-235BDE Local Header Offset   00192174 (1646964)\n-235BE2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237E53 Ext File Attributes   00000000 (0)\n+237E57 Local Header Offset   0019A255 (1679957)\n+237E5B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235BE2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237E5B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235C1C CENTRAL HEADER #1508  02014B50 (33639248)\n-235C20 Created Zip Spec      14 (20) '2.0'\n-235C21 Created OS            00 (0) 'MS-DOS'\n-235C22 Extract Zip Spec      14 (20) '2.0'\n-235C23 Extract OS            00 (0) 'MS-DOS'\n-235C24 General Purpose Flag  0808 (2056)\n+237EA5 CENTRAL HEADER #1508  02014B50 (33639248)\n+237EA9 Created Zip Spec      14 (20) '2.0'\n+237EAA Created OS            00 (0) 'MS-DOS'\n+237EAB Extract Zip Spec      14 (20) '2.0'\n+237EAC Extract OS            00 (0) 'MS-DOS'\n+237EAD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235C26 Compression Method    0008 (8) 'Deflated'\n-235C28 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235C2C CRC                   B7AE5AFA (3081657082)\n-235C30 Compressed Size       00000340 (832)\n-235C34 Uncompressed Size     000006EA (1770)\n-235C38 Filename Length       003F (63)\n-235C3A Extra Length          0000 (0)\n-235C3C Comment Length        0000 (0)\n-235C3E Disk Start            0000 (0)\n-235C40 Int File Attributes   0000 (0)\n+237EAF Compression Method    0008 (8) 'Deflated'\n+237EB1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237EB5 CRC                   E73563C3 (3879035843)\n+237EB9 Compressed Size       00000052 (82)\n+237EBD Uncompressed Size     00000059 (89)\n+237EC1 Filename Length       0051 (81)\n+237EC3 Extra Length          0000 (0)\n+237EC5 Comment Length        0000 (0)\n+237EC7 Disk Start            0000 (0)\n+237EC9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235C42 Ext File Attributes   00000000 (0)\n-235C46 Local Header Offset   001927A3 (1648547)\n-235C4A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237ECB Ext File Attributes   00000000 (0)\n+237ECF Local Header Offset   0019A61A (1680922)\n+237ED3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235C4A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237ED3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235C89 CENTRAL HEADER #1509  02014B50 (33639248)\n-235C8D Created Zip Spec      14 (20) '2.0'\n-235C8E Created OS            00 (0) 'MS-DOS'\n-235C8F Extract Zip Spec      14 (20) '2.0'\n-235C90 Extract OS            00 (0) 'MS-DOS'\n-235C91 General Purpose Flag  0808 (2056)\n+237F24 CENTRAL HEADER #1509  02014B50 (33639248)\n+237F28 Created Zip Spec      14 (20) '2.0'\n+237F29 Created OS            00 (0) 'MS-DOS'\n+237F2A Extract Zip Spec      14 (20) '2.0'\n+237F2B Extract OS            00 (0) 'MS-DOS'\n+237F2C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235C93 Compression Method    0008 (8) 'Deflated'\n-235C95 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235C99 CRC                   D392C9E8 (3549612520)\n-235C9D Compressed Size       00000468 (1128)\n-235CA1 Uncompressed Size     00000C81 (3201)\n-235CA5 Filename Length       003D (61)\n-235CA7 Extra Length          0000 (0)\n-235CA9 Comment Length        0000 (0)\n-235CAB Disk Start            0000 (0)\n-235CAD Int File Attributes   0000 (0)\n+237F2E Compression Method    0008 (8) 'Deflated'\n+237F30 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237F34 CRC                   00000000 (0)\n+237F38 Compressed Size       00000002 (2)\n+237F3C Uncompressed Size     00000000 (0)\n+237F40 Filename Length       0027 (39)\n+237F42 Extra Length          0000 (0)\n+237F44 Comment Length        0000 (0)\n+237F46 Disk Start            0000 (0)\n+237F48 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235CAF Ext File Attributes   00000000 (0)\n-235CB3 Local Header Offset   00192B50 (1649488)\n-235CB7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237F4A Ext File Attributes   00000000 (0)\n+237F4E Local Header Offset   0019A6EB (1681131)\n+237F52 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235CB7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237F52: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235CF4 CENTRAL HEADER #1510  02014B50 (33639248)\n-235CF8 Created Zip Spec      14 (20) '2.0'\n-235CF9 Created OS            00 (0) 'MS-DOS'\n-235CFA Extract Zip Spec      14 (20) '2.0'\n-235CFB Extract OS            00 (0) 'MS-DOS'\n-235CFC General Purpose Flag  0808 (2056)\n+237F79 CENTRAL HEADER #1510  02014B50 (33639248)\n+237F7D Created Zip Spec      14 (20) '2.0'\n+237F7E Created OS            00 (0) 'MS-DOS'\n+237F7F Extract Zip Spec      14 (20) '2.0'\n+237F80 Extract OS            00 (0) 'MS-DOS'\n+237F81 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235CFE Compression Method    0008 (8) 'Deflated'\n-235D00 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235D04 CRC                   00000000 (0)\n-235D08 Compressed Size       00000002 (2)\n-235D0C Uncompressed Size     00000000 (0)\n-235D10 Filename Length       001C (28)\n-235D12 Extra Length          0000 (0)\n-235D14 Comment Length        0000 (0)\n-235D16 Disk Start            0000 (0)\n-235D18 Int File Attributes   0000 (0)\n+237F83 Compression Method    0008 (8) 'Deflated'\n+237F85 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237F89 CRC                   C9462C54 (3376819284)\n+237F8D Compressed Size       0000033C (828)\n+237F91 Uncompressed Size     000007DD (2013)\n+237F95 Filename Length       0046 (70)\n+237F97 Extra Length          0000 (0)\n+237F99 Comment Length        0000 (0)\n+237F9B Disk Start            0000 (0)\n+237F9D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235D1A Ext File Attributes   00000000 (0)\n-235D1E Local Header Offset   00193023 (1650723)\n-235D22 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+237F9F Ext File Attributes   00000000 (0)\n+237FA3 Local Header Offset   0019A742 (1681218)\n+237FA7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235D22: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x237FA7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235D3E CENTRAL HEADER #1511  02014B50 (33639248)\n-235D42 Created Zip Spec      14 (20) '2.0'\n-235D43 Created OS            00 (0) 'MS-DOS'\n-235D44 Extract Zip Spec      14 (20) '2.0'\n-235D45 Extract OS            00 (0) 'MS-DOS'\n-235D46 General Purpose Flag  0808 (2056)\n+237FED CENTRAL HEADER #1511  02014B50 (33639248)\n+237FF1 Created Zip Spec      14 (20) '2.0'\n+237FF2 Created OS            00 (0) 'MS-DOS'\n+237FF3 Extract Zip Spec      14 (20) '2.0'\n+237FF4 Extract OS            00 (0) 'MS-DOS'\n+237FF5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235D48 Compression Method    0008 (8) 'Deflated'\n-235D4A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235D4E CRC                   2AA01116 (715133206)\n-235D52 Compressed Size       0000021D (541)\n-235D56 Uncompressed Size     000003D7 (983)\n-235D5A Filename Length       002B (43)\n-235D5C Extra Length          0000 (0)\n-235D5E Comment Length        0000 (0)\n-235D60 Disk Start            0000 (0)\n-235D62 Int File Attributes   0000 (0)\n+237FF7 Compression Method    0008 (8) 'Deflated'\n+237FF9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+237FFD CRC                   4C5ED1C3 (1281282499)\n+238001 Compressed Size       000003BB (955)\n+238005 Uncompressed Size     00000940 (2368)\n+238009 Filename Length       0046 (70)\n+23800B Extra Length          0000 (0)\n+23800D Comment Length        0000 (0)\n+23800F Disk Start            0000 (0)\n+238011 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235D64 Ext File Attributes   00000000 (0)\n-235D68 Local Header Offset   0019306F (1650799)\n-235D6C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238013 Ext File Attributes   00000000 (0)\n+238017 Local Header Offset   0019AAF2 (1682162)\n+23801B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235D6C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23801B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235D97 CENTRAL HEADER #1512  02014B50 (33639248)\n-235D9B Created Zip Spec      14 (20) '2.0'\n-235D9C Created OS            00 (0) 'MS-DOS'\n-235D9D Extract Zip Spec      14 (20) '2.0'\n-235D9E Extract OS            00 (0) 'MS-DOS'\n-235D9F General Purpose Flag  0808 (2056)\n+238061 CENTRAL HEADER #1512  02014B50 (33639248)\n+238065 Created Zip Spec      14 (20) '2.0'\n+238066 Created OS            00 (0) 'MS-DOS'\n+238067 Extract Zip Spec      14 (20) '2.0'\n+238068 Extract OS            00 (0) 'MS-DOS'\n+238069 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235DA1 Compression Method    0008 (8) 'Deflated'\n-235DA3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235DA7 CRC                   70DD7BE1 (1893563361)\n-235DAB Compressed Size       000003F2 (1010)\n-235DAF Uncompressed Size     00000AAE (2734)\n-235DB3 Filename Length       0024 (36)\n-235DB5 Extra Length          0000 (0)\n-235DB7 Comment Length        0000 (0)\n-235DB9 Disk Start            0000 (0)\n-235DBB Int File Attributes   0000 (0)\n+23806B Compression Method    0008 (8) 'Deflated'\n+23806D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238071 CRC                   1A06EC84 (436661380)\n+238075 Compressed Size       000002F4 (756)\n+238079 Uncompressed Size     00000647 (1607)\n+23807D Filename Length       0047 (71)\n+23807F Extra Length          0000 (0)\n+238081 Comment Length        0000 (0)\n+238083 Disk Start            0000 (0)\n+238085 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235DBD Ext File Attributes   00000000 (0)\n-235DC1 Local Header Offset   001932E5 (1651429)\n-235DC5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238087 Ext File Attributes   00000000 (0)\n+23808B Local Header Offset   0019AF21 (1683233)\n+23808F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235DC5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23808F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235DE9 CENTRAL HEADER #1513  02014B50 (33639248)\n-235DED Created Zip Spec      14 (20) '2.0'\n-235DEE Created OS            00 (0) 'MS-DOS'\n-235DEF Extract Zip Spec      14 (20) '2.0'\n-235DF0 Extract OS            00 (0) 'MS-DOS'\n-235DF1 General Purpose Flag  0808 (2056)\n+2380D6 CENTRAL HEADER #1513  02014B50 (33639248)\n+2380DA Created Zip Spec      14 (20) '2.0'\n+2380DB Created OS            00 (0) 'MS-DOS'\n+2380DC Extract Zip Spec      14 (20) '2.0'\n+2380DD Extract OS            00 (0) 'MS-DOS'\n+2380DE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235DF3 Compression Method    0008 (8) 'Deflated'\n-235DF5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235DF9 CRC                   725BA0A7 (1918607527)\n-235DFD Compressed Size       000003A6 (934)\n-235E01 Uncompressed Size     000008DD (2269)\n-235E05 Filename Length       0028 (40)\n-235E07 Extra Length          0000 (0)\n-235E09 Comment Length        0000 (0)\n-235E0B Disk Start            0000 (0)\n-235E0D Int File Attributes   0000 (0)\n+2380E0 Compression Method    0008 (8) 'Deflated'\n+2380E2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2380E6 CRC                   EBC07089 (3955257481)\n+2380EA Compressed Size       000003EE (1006)\n+2380EE Uncompressed Size     00000B84 (2948)\n+2380F2 Filename Length       003B (59)\n+2380F4 Extra Length          0000 (0)\n+2380F6 Comment Length        0000 (0)\n+2380F8 Disk Start            0000 (0)\n+2380FA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235E0F Ext File Attributes   00000000 (0)\n-235E13 Local Header Offset   00193729 (1652521)\n-235E17 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2380FC Ext File Attributes   00000000 (0)\n+238100 Local Header Offset   0019B28A (1684106)\n+238104 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235E17: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238104: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235E3F CENTRAL HEADER #1514  02014B50 (33639248)\n-235E43 Created Zip Spec      14 (20) '2.0'\n-235E44 Created OS            00 (0) 'MS-DOS'\n-235E45 Extract Zip Spec      14 (20) '2.0'\n-235E46 Extract OS            00 (0) 'MS-DOS'\n-235E47 General Purpose Flag  0808 (2056)\n+23813F CENTRAL HEADER #1514  02014B50 (33639248)\n+238143 Created Zip Spec      14 (20) '2.0'\n+238144 Created OS            00 (0) 'MS-DOS'\n+238145 Extract Zip Spec      14 (20) '2.0'\n+238146 Extract OS            00 (0) 'MS-DOS'\n+238147 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235E49 Compression Method    0008 (8) 'Deflated'\n-235E4B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235E4F CRC                   353D3BE5 (893205477)\n-235E53 Compressed Size       00000D61 (3425)\n-235E57 Uncompressed Size     00003D01 (15617)\n-235E5B Filename Length       0027 (39)\n-235E5D Extra Length          0000 (0)\n-235E5F Comment Length        0000 (0)\n-235E61 Disk Start            0000 (0)\n-235E63 Int File Attributes   0000 (0)\n+238149 Compression Method    0008 (8) 'Deflated'\n+23814B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23814F CRC                   BE6D297E (3194825086)\n+238153 Compressed Size       00000322 (802)\n+238157 Uncompressed Size     00000881 (2177)\n+23815B Filename Length       003C (60)\n+23815D Extra Length          0000 (0)\n+23815F Comment Length        0000 (0)\n+238161 Disk Start            0000 (0)\n+238163 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235E65 Ext File Attributes   00000000 (0)\n-235E69 Local Header Offset   00193B25 (1653541)\n-235E6D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238165 Ext File Attributes   00000000 (0)\n+238169 Local Header Offset   0019B6E1 (1685217)\n+23816D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235E6D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23816D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235E94 CENTRAL HEADER #1515  02014B50 (33639248)\n-235E98 Created Zip Spec      14 (20) '2.0'\n-235E99 Created OS            00 (0) 'MS-DOS'\n-235E9A Extract Zip Spec      14 (20) '2.0'\n-235E9B Extract OS            00 (0) 'MS-DOS'\n-235E9C General Purpose Flag  0808 (2056)\n+2381A9 CENTRAL HEADER #1515  02014B50 (33639248)\n+2381AD Created Zip Spec      14 (20) '2.0'\n+2381AE Created OS            00 (0) 'MS-DOS'\n+2381AF Extract Zip Spec      14 (20) '2.0'\n+2381B0 Extract OS            00 (0) 'MS-DOS'\n+2381B1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235E9E Compression Method    0008 (8) 'Deflated'\n-235EA0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235EA4 CRC                   1DFA3CFF (502938879)\n-235EA8 Compressed Size       000007F3 (2035)\n-235EAC Uncompressed Size     00001CCE (7374)\n-235EB0 Filename Length       0026 (38)\n-235EB2 Extra Length          0000 (0)\n-235EB4 Comment Length        0000 (0)\n-235EB6 Disk Start            0000 (0)\n-235EB8 Int File Attributes   0000 (0)\n+2381B3 Compression Method    0008 (8) 'Deflated'\n+2381B5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2381B9 CRC                   9ED05045 (2664452165)\n+2381BD Compressed Size       00000321 (801)\n+2381C1 Uncompressed Size     00000798 (1944)\n+2381C5 Filename Length       003D (61)\n+2381C7 Extra Length          0000 (0)\n+2381C9 Comment Length        0000 (0)\n+2381CB Disk Start            0000 (0)\n+2381CD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235EBA Ext File Attributes   00000000 (0)\n-235EBE Local Header Offset   001948DB (1657051)\n-235EC2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2381CF Ext File Attributes   00000000 (0)\n+2381D3 Local Header Offset   0019BA6D (1686125)\n+2381D7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235EC2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2381D7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235EE8 CENTRAL HEADER #1516  02014B50 (33639248)\n-235EEC Created Zip Spec      14 (20) '2.0'\n-235EED Created OS            00 (0) 'MS-DOS'\n-235EEE Extract Zip Spec      14 (20) '2.0'\n-235EEF Extract OS            00 (0) 'MS-DOS'\n-235EF0 General Purpose Flag  0808 (2056)\n+238214 CENTRAL HEADER #1516  02014B50 (33639248)\n+238218 Created Zip Spec      14 (20) '2.0'\n+238219 Created OS            00 (0) 'MS-DOS'\n+23821A Extract Zip Spec      14 (20) '2.0'\n+23821B Extract OS            00 (0) 'MS-DOS'\n+23821C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235EF2 Compression Method    0008 (8) 'Deflated'\n-235EF4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235EF8 CRC                   00000000 (0)\n-235EFC Compressed Size       00000002 (2)\n-235F00 Uncompressed Size     00000000 (0)\n-235F04 Filename Length       0022 (34)\n-235F06 Extra Length          0000 (0)\n-235F08 Comment Length        0000 (0)\n-235F0A Disk Start            0000 (0)\n-235F0C Int File Attributes   0000 (0)\n+23821E Compression Method    0008 (8) 'Deflated'\n+238220 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238224 CRC                   00000000 (0)\n+238228 Compressed Size       00000002 (2)\n+23822C Uncompressed Size     00000000 (0)\n+238230 Filename Length       002D (45)\n+238232 Extra Length          0000 (0)\n+238234 Comment Length        0000 (0)\n+238236 Disk Start            0000 (0)\n+238238 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235F0E Ext File Attributes   00000000 (0)\n-235F12 Local Header Offset   00195122 (1659170)\n-235F16 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23823A Ext File Attributes   00000000 (0)\n+23823E Local Header Offset   0019BDF9 (1687033)\n+238242 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235F16: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238242: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235F38 CENTRAL HEADER #1517  02014B50 (33639248)\n-235F3C Created Zip Spec      14 (20) '2.0'\n-235F3D Created OS            00 (0) 'MS-DOS'\n-235F3E Extract Zip Spec      14 (20) '2.0'\n-235F3F Extract OS            00 (0) 'MS-DOS'\n-235F40 General Purpose Flag  0808 (2056)\n+23826F CENTRAL HEADER #1517  02014B50 (33639248)\n+238273 Created Zip Spec      14 (20) '2.0'\n+238274 Created OS            00 (0) 'MS-DOS'\n+238275 Extract Zip Spec      14 (20) '2.0'\n+238276 Extract OS            00 (0) 'MS-DOS'\n+238277 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235F42 Compression Method    0008 (8) 'Deflated'\n-235F44 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235F48 CRC                   072B28E1 (120269025)\n-235F4C Compressed Size       00000244 (580)\n-235F50 Uncompressed Size     00000423 (1059)\n-235F54 Filename Length       0030 (48)\n-235F56 Extra Length          0000 (0)\n-235F58 Comment Length        0000 (0)\n-235F5A Disk Start            0000 (0)\n-235F5C Int File Attributes   0000 (0)\n+238279 Compression Method    0008 (8) 'Deflated'\n+23827B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23827F CRC                   6029E0CC (1613357260)\n+238283 Compressed Size       0000040D (1037)\n+238287 Uncompressed Size     00000D7E (3454)\n+23828B Filename Length       0047 (71)\n+23828D Extra Length          0000 (0)\n+23828F Comment Length        0000 (0)\n+238291 Disk Start            0000 (0)\n+238293 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235F5E Ext File Attributes   00000000 (0)\n-235F62 Local Header Offset   00195174 (1659252)\n-235F66 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238295 Ext File Attributes   00000000 (0)\n+238299 Local Header Offset   0019BE56 (1687126)\n+23829D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235F66: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23829D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235F96 CENTRAL HEADER #1518  02014B50 (33639248)\n-235F9A Created Zip Spec      14 (20) '2.0'\n-235F9B Created OS            00 (0) 'MS-DOS'\n-235F9C Extract Zip Spec      14 (20) '2.0'\n-235F9D Extract OS            00 (0) 'MS-DOS'\n-235F9E General Purpose Flag  0808 (2056)\n+2382E4 CENTRAL HEADER #1518  02014B50 (33639248)\n+2382E8 Created Zip Spec      14 (20) '2.0'\n+2382E9 Created OS            00 (0) 'MS-DOS'\n+2382EA Extract Zip Spec      14 (20) '2.0'\n+2382EB Extract OS            00 (0) 'MS-DOS'\n+2382EC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235FA0 Compression Method    0008 (8) 'Deflated'\n-235FA2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-235FA6 CRC                   121EAF1A (304000794)\n-235FAA Compressed Size       00000295 (661)\n-235FAE Uncompressed Size     000005A4 (1444)\n-235FB2 Filename Length       0030 (48)\n-235FB4 Extra Length          0000 (0)\n-235FB6 Comment Length        0000 (0)\n-235FB8 Disk Start            0000 (0)\n-235FBA Int File Attributes   0000 (0)\n+2382EE Compression Method    0008 (8) 'Deflated'\n+2382F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2382F4 CRC                   5EB75116 (1589072150)\n+2382F8 Compressed Size       000003C1 (961)\n+2382FC Uncompressed Size     00000CEE (3310)\n+238300 Filename Length       0048 (72)\n+238302 Extra Length          0000 (0)\n+238304 Comment Length        0000 (0)\n+238306 Disk Start            0000 (0)\n+238308 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-235FBC Ext File Attributes   00000000 (0)\n-235FC0 Local Header Offset   00195416 (1659926)\n-235FC4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23830A Ext File Attributes   00000000 (0)\n+23830E Local Header Offset   0019C2D8 (1688280)\n+238312 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x235FC4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238312: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-235FF4 CENTRAL HEADER #1519  02014B50 (33639248)\n-235FF8 Created Zip Spec      14 (20) '2.0'\n-235FF9 Created OS            00 (0) 'MS-DOS'\n-235FFA Extract Zip Spec      14 (20) '2.0'\n-235FFB Extract OS            00 (0) 'MS-DOS'\n-235FFC General Purpose Flag  0808 (2056)\n+23835A CENTRAL HEADER #1519  02014B50 (33639248)\n+23835E Created Zip Spec      14 (20) '2.0'\n+23835F Created OS            00 (0) 'MS-DOS'\n+238360 Extract Zip Spec      14 (20) '2.0'\n+238361 Extract OS            00 (0) 'MS-DOS'\n+238362 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-235FFE Compression Method    0008 (8) 'Deflated'\n-236000 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236004 CRC                   9F97C867 (2677524583)\n-236008 Compressed Size       000002FF (767)\n-23600C Uncompressed Size     000008EC (2284)\n-236010 Filename Length       0030 (48)\n-236012 Extra Length          0000 (0)\n-236014 Comment Length        0000 (0)\n-236016 Disk Start            0000 (0)\n-236018 Int File Attributes   0000 (0)\n+238364 Compression Method    0008 (8) 'Deflated'\n+238366 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23836A CRC                   20799CC3 (544840899)\n+23836E Compressed Size       00000333 (819)\n+238372 Uncompressed Size     000007DF (2015)\n+238376 Filename Length       0049 (73)\n+238378 Extra Length          0000 (0)\n+23837A Comment Length        0000 (0)\n+23837C Disk Start            0000 (0)\n+23837E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23601A Ext File Attributes   00000000 (0)\n-23601E Local Header Offset   00195709 (1660681)\n-236022 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238380 Ext File Attributes   00000000 (0)\n+238384 Local Header Offset   0019C70F (1689359)\n+238388 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236022: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238388: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236052 CENTRAL HEADER #1520  02014B50 (33639248)\n-236056 Created Zip Spec      14 (20) '2.0'\n-236057 Created OS            00 (0) 'MS-DOS'\n-236058 Extract Zip Spec      14 (20) '2.0'\n-236059 Extract OS            00 (0) 'MS-DOS'\n-23605A General Purpose Flag  0808 (2056)\n+2383D1 CENTRAL HEADER #1520  02014B50 (33639248)\n+2383D5 Created Zip Spec      14 (20) '2.0'\n+2383D6 Created OS            00 (0) 'MS-DOS'\n+2383D7 Extract Zip Spec      14 (20) '2.0'\n+2383D8 Extract OS            00 (0) 'MS-DOS'\n+2383D9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23605C Compression Method    0008 (8) 'Deflated'\n-23605E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236062 CRC                   BCDD8DC5 (3168636357)\n-236066 Compressed Size       00000328 (808)\n-23606A Uncompressed Size     00000AB5 (2741)\n-23606E Filename Length       0031 (49)\n-236070 Extra Length          0000 (0)\n-236072 Comment Length        0000 (0)\n-236074 Disk Start            0000 (0)\n-236076 Int File Attributes   0000 (0)\n+2383DB Compression Method    0008 (8) 'Deflated'\n+2383DD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2383E1 CRC                   00000000 (0)\n+2383E5 Compressed Size       00000002 (2)\n+2383E9 Uncompressed Size     00000000 (0)\n+2383ED Filename Length       0038 (56)\n+2383EF Extra Length          0000 (0)\n+2383F1 Comment Length        0000 (0)\n+2383F3 Disk Start            0000 (0)\n+2383F5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236078 Ext File Attributes   00000000 (0)\n-23607C Local Header Offset   00195A66 (1661542)\n-236080 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2383F7 Ext File Attributes   00000000 (0)\n+2383FB Local Header Offset   0019CAB9 (1690297)\n+2383FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236080: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2383FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2360B1 CENTRAL HEADER #1521  02014B50 (33639248)\n-2360B5 Created Zip Spec      14 (20) '2.0'\n-2360B6 Created OS            00 (0) 'MS-DOS'\n-2360B7 Extract Zip Spec      14 (20) '2.0'\n-2360B8 Extract OS            00 (0) 'MS-DOS'\n-2360B9 General Purpose Flag  0808 (2056)\n+238437 CENTRAL HEADER #1521  02014B50 (33639248)\n+23843B Created Zip Spec      14 (20) '2.0'\n+23843C Created OS            00 (0) 'MS-DOS'\n+23843D Extract Zip Spec      14 (20) '2.0'\n+23843E Extract OS            00 (0) 'MS-DOS'\n+23843F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2360BB Compression Method    0008 (8) 'Deflated'\n-2360BD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2360C1 CRC                   F1A78E98 (4054290072)\n-2360C5 Compressed Size       00000513 (1299)\n-2360C9 Uncompressed Size     00000D54 (3412)\n-2360CD Filename Length       0032 (50)\n-2360CF Extra Length          0000 (0)\n-2360D1 Comment Length        0000 (0)\n-2360D3 Disk Start            0000 (0)\n-2360D5 Int File Attributes   0000 (0)\n+238441 Compression Method    0008 (8) 'Deflated'\n+238443 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238447 CRC                   EA70B20B (3933254155)\n+23844B Compressed Size       0000036F (879)\n+23844F Uncompressed Size     00000802 (2050)\n+238453 Filename Length       003F (63)\n+238455 Extra Length          0000 (0)\n+238457 Comment Length        0000 (0)\n+238459 Disk Start            0000 (0)\n+23845B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2360D7 Ext File Attributes   00000000 (0)\n-2360DB Local Header Offset   00195DED (1662445)\n-2360DF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23845D Ext File Attributes   00000000 (0)\n+238461 Local Header Offset   0019CB21 (1690401)\n+238465 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2360DF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238465: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236111 CENTRAL HEADER #1522  02014B50 (33639248)\n-236115 Created Zip Spec      14 (20) '2.0'\n-236116 Created OS            00 (0) 'MS-DOS'\n-236117 Extract Zip Spec      14 (20) '2.0'\n-236118 Extract OS            00 (0) 'MS-DOS'\n-236119 General Purpose Flag  0808 (2056)\n+2384A4 CENTRAL HEADER #1522  02014B50 (33639248)\n+2384A8 Created Zip Spec      14 (20) '2.0'\n+2384A9 Created OS            00 (0) 'MS-DOS'\n+2384AA Extract Zip Spec      14 (20) '2.0'\n+2384AB Extract OS            00 (0) 'MS-DOS'\n+2384AC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23611B Compression Method    0008 (8) 'Deflated'\n-23611D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236121 CRC                   CA608B45 (3395324741)\n-236125 Compressed Size       00000425 (1061)\n-236129 Uncompressed Size     000008E9 (2281)\n-23612D Filename Length       0033 (51)\n-23612F Extra Length          0000 (0)\n-236131 Comment Length        0000 (0)\n-236133 Disk Start            0000 (0)\n-236135 Int File Attributes   0000 (0)\n+2384AE Compression Method    0008 (8) 'Deflated'\n+2384B0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2384B4 CRC                   9A185178 (2585284984)\n+2384B8 Compressed Size       0000004B (75)\n+2384BC Uncompressed Size     0000004E (78)\n+2384C0 Filename Length       0046 (70)\n+2384C2 Extra Length          0000 (0)\n+2384C4 Comment Length        0000 (0)\n+2384C6 Disk Start            0000 (0)\n+2384C8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236137 Ext File Attributes   00000000 (0)\n-23613B Local Header Offset   00196360 (1663840)\n-23613F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2384CA Ext File Attributes   00000000 (0)\n+2384CE Local Header Offset   0019CEFD (1691389)\n+2384D2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23613F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2384D2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236172 CENTRAL HEADER #1523  02014B50 (33639248)\n-236176 Created Zip Spec      14 (20) '2.0'\n-236177 Created OS            00 (0) 'MS-DOS'\n-236178 Extract Zip Spec      14 (20) '2.0'\n-236179 Extract OS            00 (0) 'MS-DOS'\n-23617A General Purpose Flag  0808 (2056)\n+238518 CENTRAL HEADER #1523  02014B50 (33639248)\n+23851C Created Zip Spec      14 (20) '2.0'\n+23851D Created OS            00 (0) 'MS-DOS'\n+23851E Extract Zip Spec      14 (20) '2.0'\n+23851F Extract OS            00 (0) 'MS-DOS'\n+238520 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23617C Compression Method    0008 (8) 'Deflated'\n-23617E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236182 CRC                   04921C47 (76684359)\n-236186 Compressed Size       00000415 (1045)\n-23618A Uncompressed Size     000009D7 (2519)\n-23618E Filename Length       0034 (52)\n-236190 Extra Length          0000 (0)\n-236192 Comment Length        0000 (0)\n-236194 Disk Start            0000 (0)\n-236196 Int File Attributes   0000 (0)\n+238522 Compression Method    0008 (8) 'Deflated'\n+238524 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238528 CRC                   00000000 (0)\n+23852C Compressed Size       00000002 (2)\n+238530 Uncompressed Size     00000000 (0)\n+238534 Filename Length       0027 (39)\n+238536 Extra Length          0000 (0)\n+238538 Comment Length        0000 (0)\n+23853A Disk Start            0000 (0)\n+23853C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236198 Ext File Attributes   00000000 (0)\n-23619C Local Header Offset   001967E6 (1664998)\n-2361A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23853E Ext File Attributes   00000000 (0)\n+238542 Local Header Offset   0019CFBC (1691580)\n+238546 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2361A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238546: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2361D4 CENTRAL HEADER #1524  02014B50 (33639248)\n-2361D8 Created Zip Spec      14 (20) '2.0'\n-2361D9 Created OS            00 (0) 'MS-DOS'\n-2361DA Extract Zip Spec      14 (20) '2.0'\n-2361DB Extract OS            00 (0) 'MS-DOS'\n-2361DC General Purpose Flag  0808 (2056)\n+23856D CENTRAL HEADER #1524  02014B50 (33639248)\n+238571 Created Zip Spec      14 (20) '2.0'\n+238572 Created OS            00 (0) 'MS-DOS'\n+238573 Extract Zip Spec      14 (20) '2.0'\n+238574 Extract OS            00 (0) 'MS-DOS'\n+238575 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2361DE Compression Method    0008 (8) 'Deflated'\n-2361E0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2361E4 CRC                   00000000 (0)\n-2361E8 Compressed Size       00000002 (2)\n-2361EC Uncompressed Size     00000000 (0)\n-2361F0 Filename Length       002A (42)\n-2361F2 Extra Length          0000 (0)\n-2361F4 Comment Length        0000 (0)\n-2361F6 Disk Start            0000 (0)\n-2361F8 Int File Attributes   0000 (0)\n+238577 Compression Method    0008 (8) 'Deflated'\n+238579 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23857D CRC                   D8DFD1C9 (3638546889)\n+238581 Compressed Size       000004A4 (1188)\n+238585 Uncompressed Size     00000A85 (2693)\n+238589 Filename Length       003A (58)\n+23858B Extra Length          0000 (0)\n+23858D Comment Length        0000 (0)\n+23858F Disk Start            0000 (0)\n+238591 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2361FA Ext File Attributes   00000000 (0)\n-2361FE Local Header Offset   00196C5D (1666141)\n-236202 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238593 Ext File Attributes   00000000 (0)\n+238597 Local Header Offset   0019D013 (1691667)\n+23859B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236202: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23859B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23622C CENTRAL HEADER #1525  02014B50 (33639248)\n-236230 Created Zip Spec      14 (20) '2.0'\n-236231 Created OS            00 (0) 'MS-DOS'\n-236232 Extract Zip Spec      14 (20) '2.0'\n-236233 Extract OS            00 (0) 'MS-DOS'\n-236234 General Purpose Flag  0808 (2056)\n+2385D5 CENTRAL HEADER #1525  02014B50 (33639248)\n+2385D9 Created Zip Spec      14 (20) '2.0'\n+2385DA Created OS            00 (0) 'MS-DOS'\n+2385DB Extract Zip Spec      14 (20) '2.0'\n+2385DC Extract OS            00 (0) 'MS-DOS'\n+2385DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236236 Compression Method    0008 (8) 'Deflated'\n-236238 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23623C CRC                   27075A5A (654793306)\n-236240 Compressed Size       000003A2 (930)\n-236244 Uncompressed Size     00000828 (2088)\n-236248 Filename Length       0048 (72)\n-23624A Extra Length          0000 (0)\n-23624C Comment Length        0000 (0)\n-23624E Disk Start            0000 (0)\n-236250 Int File Attributes   0000 (0)\n+2385DF Compression Method    0008 (8) 'Deflated'\n+2385E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2385E5 CRC                   70240B76 (1881410422)\n+2385E9 Compressed Size       00000469 (1129)\n+2385ED Uncompressed Size     000011F6 (4598)\n+2385F1 Filename Length       003B (59)\n+2385F3 Extra Length          0000 (0)\n+2385F5 Comment Length        0000 (0)\n+2385F7 Disk Start            0000 (0)\n+2385F9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236252 Ext File Attributes   00000000 (0)\n-236256 Local Header Offset   00196CB7 (1666231)\n-23625A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2385FB Ext File Attributes   00000000 (0)\n+2385FF Local Header Offset   0019D51F (1692959)\n+238603 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23625A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238603: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2362A2 CENTRAL HEADER #1526  02014B50 (33639248)\n-2362A6 Created Zip Spec      14 (20) '2.0'\n-2362A7 Created OS            00 (0) 'MS-DOS'\n-2362A8 Extract Zip Spec      14 (20) '2.0'\n-2362A9 Extract OS            00 (0) 'MS-DOS'\n-2362AA General Purpose Flag  0808 (2056)\n+23863E CENTRAL HEADER #1526  02014B50 (33639248)\n+238642 Created Zip Spec      14 (20) '2.0'\n+238643 Created OS            00 (0) 'MS-DOS'\n+238644 Extract Zip Spec      14 (20) '2.0'\n+238645 Extract OS            00 (0) 'MS-DOS'\n+238646 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2362AC Compression Method    0008 (8) 'Deflated'\n-2362AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2362B2 CRC                   48B6E606 (1219945990)\n-2362B6 Compressed Size       00000276 (630)\n-2362BA Uncompressed Size     00000493 (1171)\n-2362BE Filename Length       0045 (69)\n-2362C0 Extra Length          0000 (0)\n-2362C2 Comment Length        0000 (0)\n-2362C4 Disk Start            0000 (0)\n-2362C6 Int File Attributes   0000 (0)\n+238648 Compression Method    0008 (8) 'Deflated'\n+23864A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23864E CRC                   8E4DF810 (2387474448)\n+238652 Compressed Size       000003FA (1018)\n+238656 Uncompressed Size     00000CEA (3306)\n+23865A Filename Length       003C (60)\n+23865C Extra Length          0000 (0)\n+23865E Comment Length        0000 (0)\n+238660 Disk Start            0000 (0)\n+238662 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2362C8 Ext File Attributes   00000000 (0)\n-2362CC Local Header Offset   001970CF (1667279)\n-2362D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238664 Ext File Attributes   00000000 (0)\n+238668 Local Header Offset   0019D9F1 (1694193)\n+23866C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2362D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23866C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236315 CENTRAL HEADER #1527  02014B50 (33639248)\n-236319 Created Zip Spec      14 (20) '2.0'\n-23631A Created OS            00 (0) 'MS-DOS'\n-23631B Extract Zip Spec      14 (20) '2.0'\n-23631C Extract OS            00 (0) 'MS-DOS'\n-23631D General Purpose Flag  0808 (2056)\n+2386A8 CENTRAL HEADER #1527  02014B50 (33639248)\n+2386AC Created Zip Spec      14 (20) '2.0'\n+2386AD Created OS            00 (0) 'MS-DOS'\n+2386AE Extract Zip Spec      14 (20) '2.0'\n+2386AF Extract OS            00 (0) 'MS-DOS'\n+2386B0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23631F Compression Method    0008 (8) 'Deflated'\n-236321 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236325 CRC                   00000000 (0)\n-236329 Compressed Size       00000002 (2)\n-23632D Uncompressed Size     00000000 (0)\n-236331 Filename Length       002B (43)\n-236333 Extra Length          0000 (0)\n-236335 Comment Length        0000 (0)\n-236337 Disk Start            0000 (0)\n-236339 Int File Attributes   0000 (0)\n+2386B2 Compression Method    0008 (8) 'Deflated'\n+2386B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2386B8 CRC                   1A2117E1 (438376417)\n+2386BC Compressed Size       0000034B (843)\n+2386C0 Uncompressed Size     000007D9 (2009)\n+2386C4 Filename Length       003D (61)\n+2386C6 Extra Length          0000 (0)\n+2386C8 Comment Length        0000 (0)\n+2386CA Disk Start            0000 (0)\n+2386CC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23633B Ext File Attributes   00000000 (0)\n-23633F Local Header Offset   001973B8 (1668024)\n-236343 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2386CE Ext File Attributes   00000000 (0)\n+2386D2 Local Header Offset   0019DE55 (1695317)\n+2386D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236343: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2386D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23636E CENTRAL HEADER #1528  02014B50 (33639248)\n-236372 Created Zip Spec      14 (20) '2.0'\n-236373 Created OS            00 (0) 'MS-DOS'\n-236374 Extract Zip Spec      14 (20) '2.0'\n-236375 Extract OS            00 (0) 'MS-DOS'\n-236376 General Purpose Flag  0808 (2056)\n+238713 CENTRAL HEADER #1528  02014B50 (33639248)\n+238717 Created Zip Spec      14 (20) '2.0'\n+238718 Created OS            00 (0) 'MS-DOS'\n+238719 Extract Zip Spec      14 (20) '2.0'\n+23871A Extract OS            00 (0) 'MS-DOS'\n+23871B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236378 Compression Method    0008 (8) 'Deflated'\n-23637A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23637E CRC                   313A7353 (825914195)\n-236382 Compressed Size       0000041E (1054)\n-236386 Uncompressed Size     00000D23 (3363)\n-23638A Filename Length       0043 (67)\n-23638C Extra Length          0000 (0)\n-23638E Comment Length        0000 (0)\n-236390 Disk Start            0000 (0)\n-236392 Int File Attributes   0000 (0)\n+23871D Compression Method    0008 (8) 'Deflated'\n+23871F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238723 CRC                   00000000 (0)\n+238727 Compressed Size       00000002 (2)\n+23872B Uncompressed Size     00000000 (0)\n+23872F Filename Length       0031 (49)\n+238731 Extra Length          0000 (0)\n+238733 Comment Length        0000 (0)\n+238735 Disk Start            0000 (0)\n+238737 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236394 Ext File Attributes   00000000 (0)\n-236398 Local Header Offset   00197413 (1668115)\n-23639C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238739 Ext File Attributes   00000000 (0)\n+23873D Local Header Offset   0019E20B (1696267)\n+238741 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23639C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238741: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2363DF CENTRAL HEADER #1529  02014B50 (33639248)\n-2363E3 Created Zip Spec      14 (20) '2.0'\n-2363E4 Created OS            00 (0) 'MS-DOS'\n-2363E5 Extract Zip Spec      14 (20) '2.0'\n-2363E6 Extract OS            00 (0) 'MS-DOS'\n-2363E7 General Purpose Flag  0808 (2056)\n+238772 CENTRAL HEADER #1529  02014B50 (33639248)\n+238776 Created Zip Spec      14 (20) '2.0'\n+238777 Created OS            00 (0) 'MS-DOS'\n+238778 Extract Zip Spec      14 (20) '2.0'\n+238779 Extract OS            00 (0) 'MS-DOS'\n+23877A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2363E9 Compression Method    0008 (8) 'Deflated'\n-2363EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2363EF CRC                   86605046 (2254458950)\n-2363F3 Compressed Size       000003DF (991)\n-2363F7 Uncompressed Size     00000CE3 (3299)\n-2363FB Filename Length       0044 (68)\n-2363FD Extra Length          0000 (0)\n-2363FF Comment Length        0000 (0)\n-236401 Disk Start            0000 (0)\n-236403 Int File Attributes   0000 (0)\n+23877C Compression Method    0008 (8) 'Deflated'\n+23877E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238782 CRC                   9E944773 (2660517747)\n+238786 Compressed Size       000004BC (1212)\n+23878A Uncompressed Size     0000135F (4959)\n+23878E Filename Length       0046 (70)\n+238790 Extra Length          0000 (0)\n+238792 Comment Length        0000 (0)\n+238794 Disk Start            0000 (0)\n+238796 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236405 Ext File Attributes   00000000 (0)\n-236409 Local Header Offset   001978A2 (1669282)\n-23640D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238798 Ext File Attributes   00000000 (0)\n+23879C Local Header Offset   0019E26C (1696364)\n+2387A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23640D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2387A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236451 CENTRAL HEADER #1530  02014B50 (33639248)\n-236455 Created Zip Spec      14 (20) '2.0'\n-236456 Created OS            00 (0) 'MS-DOS'\n-236457 Extract Zip Spec      14 (20) '2.0'\n-236458 Extract OS            00 (0) 'MS-DOS'\n-236459 General Purpose Flag  0808 (2056)\n+2387E6 CENTRAL HEADER #1530  02014B50 (33639248)\n+2387EA Created Zip Spec      14 (20) '2.0'\n+2387EB Created OS            00 (0) 'MS-DOS'\n+2387EC Extract Zip Spec      14 (20) '2.0'\n+2387ED Extract OS            00 (0) 'MS-DOS'\n+2387EE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23645B Compression Method    0008 (8) 'Deflated'\n-23645D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236461 CRC                   4FF68747 (1341556551)\n-236465 Compressed Size       00000322 (802)\n-236469 Uncompressed Size     00000780 (1920)\n-23646D Filename Length       0045 (69)\n-23646F Extra Length          0000 (0)\n-236471 Comment Length        0000 (0)\n-236473 Disk Start            0000 (0)\n-236475 Int File Attributes   0000 (0)\n+2387F0 Compression Method    0008 (8) 'Deflated'\n+2387F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2387F6 CRC                   75FA3855 (1979332693)\n+2387FA Compressed Size       00000400 (1024)\n+2387FE Uncompressed Size     00000D57 (3415)\n+238802 Filename Length       0047 (71)\n+238804 Extra Length          0000 (0)\n+238806 Comment Length        0000 (0)\n+238808 Disk Start            0000 (0)\n+23880A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236477 Ext File Attributes   00000000 (0)\n-23647B Local Header Offset   00197CF3 (1670387)\n-23647F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23880C Ext File Attributes   00000000 (0)\n+238810 Local Header Offset   0019E79C (1697692)\n+238814 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23647F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238814: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2364C4 CENTRAL HEADER #1531  02014B50 (33639248)\n-2364C8 Created Zip Spec      14 (20) '2.0'\n-2364C9 Created OS            00 (0) 'MS-DOS'\n-2364CA Extract Zip Spec      14 (20) '2.0'\n-2364CB Extract OS            00 (0) 'MS-DOS'\n-2364CC General Purpose Flag  0808 (2056)\n+23885B CENTRAL HEADER #1531  02014B50 (33639248)\n+23885F Created Zip Spec      14 (20) '2.0'\n+238860 Created OS            00 (0) 'MS-DOS'\n+238861 Extract Zip Spec      14 (20) '2.0'\n+238862 Extract OS            00 (0) 'MS-DOS'\n+238863 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2364CE Compression Method    0008 (8) 'Deflated'\n-2364D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2364D4 CRC                   00000000 (0)\n-2364D8 Compressed Size       00000002 (2)\n-2364DC Uncompressed Size     00000000 (0)\n-2364E0 Filename Length       0026 (38)\n-2364E2 Extra Length          0000 (0)\n-2364E4 Comment Length        0000 (0)\n-2364E6 Disk Start            0000 (0)\n-2364E8 Int File Attributes   0000 (0)\n+238865 Compression Method    0008 (8) 'Deflated'\n+238867 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23886B CRC                   90B7F551 (2427974993)\n+23886F Compressed Size       0000034F (847)\n+238873 Uncompressed Size     000007D2 (2002)\n+238877 Filename Length       0048 (72)\n+238879 Extra Length          0000 (0)\n+23887B Comment Length        0000 (0)\n+23887D Disk Start            0000 (0)\n+23887F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2364EA Ext File Attributes   00000000 (0)\n-2364EE Local Header Offset   00198088 (1671304)\n-2364F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238881 Ext File Attributes   00000000 (0)\n+238885 Local Header Offset   0019EC11 (1698833)\n+238889 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2364F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238889: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236518 CENTRAL HEADER #1532  02014B50 (33639248)\n-23651C Created Zip Spec      14 (20) '2.0'\n-23651D Created OS            00 (0) 'MS-DOS'\n-23651E Extract Zip Spec      14 (20) '2.0'\n-23651F Extract OS            00 (0) 'MS-DOS'\n-236520 General Purpose Flag  0808 (2056)\n+2388D1 CENTRAL HEADER #1532  02014B50 (33639248)\n+2388D5 Created Zip Spec      14 (20) '2.0'\n+2388D6 Created OS            00 (0) 'MS-DOS'\n+2388D7 Extract Zip Spec      14 (20) '2.0'\n+2388D8 Extract OS            00 (0) 'MS-DOS'\n+2388D9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236522 Compression Method    0008 (8) 'Deflated'\n-236524 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236528 CRC                   1FDC8762 (534546274)\n-23652C Compressed Size       00000314 (788)\n-236530 Uncompressed Size     00000721 (1825)\n-236534 Filename Length       0035 (53)\n-236536 Extra Length          0000 (0)\n-236538 Comment Length        0000 (0)\n-23653A Disk Start            0000 (0)\n-23653C Int File Attributes   0000 (0)\n+2388DB Compression Method    0008 (8) 'Deflated'\n+2388DD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2388E1 CRC                   00000000 (0)\n+2388E5 Compressed Size       00000002 (2)\n+2388E9 Uncompressed Size     00000000 (0)\n+2388ED Filename Length       002D (45)\n+2388EF Extra Length          0000 (0)\n+2388F1 Comment Length        0000 (0)\n+2388F3 Disk Start            0000 (0)\n+2388F5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23653E Ext File Attributes   00000000 (0)\n-236542 Local Header Offset   001980DE (1671390)\n-236546 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2388F7 Ext File Attributes   00000000 (0)\n+2388FB Local Header Offset   0019EFD6 (1699798)\n+2388FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236546: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2388FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23657B CENTRAL HEADER #1533  02014B50 (33639248)\n-23657F Created Zip Spec      14 (20) '2.0'\n-236580 Created OS            00 (0) 'MS-DOS'\n-236581 Extract Zip Spec      14 (20) '2.0'\n-236582 Extract OS            00 (0) 'MS-DOS'\n-236583 General Purpose Flag  0808 (2056)\n+23892C CENTRAL HEADER #1533  02014B50 (33639248)\n+238930 Created Zip Spec      14 (20) '2.0'\n+238931 Created OS            00 (0) 'MS-DOS'\n+238932 Extract Zip Spec      14 (20) '2.0'\n+238933 Extract OS            00 (0) 'MS-DOS'\n+238934 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236585 Compression Method    0008 (8) 'Deflated'\n-236587 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23658B CRC                   58015D22 (1476484386)\n-23658F Compressed Size       000003F2 (1010)\n-236593 Uncompressed Size     00000CF3 (3315)\n-236597 Filename Length       0039 (57)\n-236599 Extra Length          0000 (0)\n-23659B Comment Length        0000 (0)\n-23659D Disk Start            0000 (0)\n-23659F Int File Attributes   0000 (0)\n+238936 Compression Method    0008 (8) 'Deflated'\n+238938 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23893C CRC                   B5FDD8AE (3053312174)\n+238940 Compressed Size       00000689 (1673)\n+238944 Uncompressed Size     00001750 (5968)\n+238948 Filename Length       0045 (69)\n+23894A Extra Length          0000 (0)\n+23894C Comment Length        0000 (0)\n+23894E Disk Start            0000 (0)\n+238950 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2365A1 Ext File Attributes   00000000 (0)\n-2365A5 Local Header Offset   00198455 (1672277)\n-2365A9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238952 Ext File Attributes   00000000 (0)\n+238956 Local Header Offset   0019F033 (1699891)\n+23895A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2365A9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23895A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2365E2 CENTRAL HEADER #1534  02014B50 (33639248)\n-2365E6 Created Zip Spec      14 (20) '2.0'\n-2365E7 Created OS            00 (0) 'MS-DOS'\n-2365E8 Extract Zip Spec      14 (20) '2.0'\n-2365E9 Extract OS            00 (0) 'MS-DOS'\n-2365EA General Purpose Flag  0808 (2056)\n+23899F CENTRAL HEADER #1534  02014B50 (33639248)\n+2389A3 Created Zip Spec      14 (20) '2.0'\n+2389A4 Created OS            00 (0) 'MS-DOS'\n+2389A5 Extract Zip Spec      14 (20) '2.0'\n+2389A6 Extract OS            00 (0) 'MS-DOS'\n+2389A7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2365EC Compression Method    0008 (8) 'Deflated'\n-2365EE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2365F2 CRC                   5529CB85 (1428802437)\n-2365F6 Compressed Size       00000383 (899)\n-2365FA Uncompressed Size     00000B6A (2922)\n-2365FE Filename Length       003A (58)\n-236600 Extra Length          0000 (0)\n-236602 Comment Length        0000 (0)\n-236604 Disk Start            0000 (0)\n-236606 Int File Attributes   0000 (0)\n+2389A9 Compression Method    0008 (8) 'Deflated'\n+2389AB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2389AF CRC                   F7853FBB (4152704955)\n+2389B3 Compressed Size       000002D0 (720)\n+2389B7 Uncompressed Size     000005F7 (1527)\n+2389BB Filename Length       003B (59)\n+2389BD Extra Length          0000 (0)\n+2389BF Comment Length        0000 (0)\n+2389C1 Disk Start            0000 (0)\n+2389C3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236608 Ext File Attributes   00000000 (0)\n-23660C Local Header Offset   001988AE (1673390)\n-236610 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2389C5 Ext File Attributes   00000000 (0)\n+2389C9 Local Header Offset   0019F72F (1701679)\n+2389CD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236610: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2389CD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23664A CENTRAL HEADER #1535  02014B50 (33639248)\n-23664E Created Zip Spec      14 (20) '2.0'\n-23664F Created OS            00 (0) 'MS-DOS'\n-236650 Extract Zip Spec      14 (20) '2.0'\n-236651 Extract OS            00 (0) 'MS-DOS'\n-236652 General Purpose Flag  0808 (2056)\n+238A08 CENTRAL HEADER #1535  02014B50 (33639248)\n+238A0C Created Zip Spec      14 (20) '2.0'\n+238A0D Created OS            00 (0) 'MS-DOS'\n+238A0E Extract Zip Spec      14 (20) '2.0'\n+238A0F Extract OS            00 (0) 'MS-DOS'\n+238A10 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236654 Compression Method    0008 (8) 'Deflated'\n-236656 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23665A CRC                   E3E7B767 (3823613799)\n-23665E Compressed Size       00000315 (789)\n-236662 Uncompressed Size     00000753 (1875)\n-236666 Filename Length       003B (59)\n-236668 Extra Length          0000 (0)\n-23666A Comment Length        0000 (0)\n-23666C Disk Start            0000 (0)\n-23666E Int File Attributes   0000 (0)\n+238A12 Compression Method    0008 (8) 'Deflated'\n+238A14 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238A18 CRC                   E7186373 (3877135219)\n+238A1C Compressed Size       000002C1 (705)\n+238A20 Uncompressed Size     00000585 (1413)\n+238A24 Filename Length       0043 (67)\n+238A26 Extra Length          0000 (0)\n+238A28 Comment Length        0000 (0)\n+238A2A Disk Start            0000 (0)\n+238A2C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236670 Ext File Attributes   00000000 (0)\n-236674 Local Header Offset   00198C99 (1674393)\n-236678 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238A2E Ext File Attributes   00000000 (0)\n+238A32 Local Header Offset   0019FA68 (1702504)\n+238A36 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236678: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238A36: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2366B3 CENTRAL HEADER #1536  02014B50 (33639248)\n-2366B7 Created Zip Spec      14 (20) '2.0'\n-2366B8 Created OS            00 (0) 'MS-DOS'\n-2366B9 Extract Zip Spec      14 (20) '2.0'\n-2366BA Extract OS            00 (0) 'MS-DOS'\n-2366BB General Purpose Flag  0808 (2056)\n+238A79 CENTRAL HEADER #1536  02014B50 (33639248)\n+238A7D Created Zip Spec      14 (20) '2.0'\n+238A7E Created OS            00 (0) 'MS-DOS'\n+238A7F Extract Zip Spec      14 (20) '2.0'\n+238A80 Extract OS            00 (0) 'MS-DOS'\n+238A81 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2366BD Compression Method    0008 (8) 'Deflated'\n-2366BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2366C3 CRC                   00000000 (0)\n-2366C7 Compressed Size       00000002 (2)\n-2366CB Uncompressed Size     00000000 (0)\n-2366CF Filename Length       002B (43)\n-2366D1 Extra Length          0000 (0)\n-2366D3 Comment Length        0000 (0)\n-2366D5 Disk Start            0000 (0)\n-2366D7 Int File Attributes   0000 (0)\n+238A83 Compression Method    0008 (8) 'Deflated'\n+238A85 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238A89 CRC                   080350B9 (134435001)\n+238A8D Compressed Size       0000026E (622)\n+238A91 Uncompressed Size     00000480 (1152)\n+238A95 Filename Length       0046 (70)\n+238A97 Extra Length          0000 (0)\n+238A99 Comment Length        0000 (0)\n+238A9B Disk Start            0000 (0)\n+238A9D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2366D9 Ext File Attributes   00000000 (0)\n-2366DD Local Header Offset   00199017 (1675287)\n-2366E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238A9F Ext File Attributes   00000000 (0)\n+238AA3 Local Header Offset   0019FD9A (1703322)\n+238AA7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2366E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238AA7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23670C CENTRAL HEADER #1537  02014B50 (33639248)\n-236710 Created Zip Spec      14 (20) '2.0'\n-236711 Created OS            00 (0) 'MS-DOS'\n-236712 Extract Zip Spec      14 (20) '2.0'\n-236713 Extract OS            00 (0) 'MS-DOS'\n-236714 General Purpose Flag  0808 (2056)\n+238AED CENTRAL HEADER #1537  02014B50 (33639248)\n+238AF1 Created Zip Spec      14 (20) '2.0'\n+238AF2 Created OS            00 (0) 'MS-DOS'\n+238AF3 Extract Zip Spec      14 (20) '2.0'\n+238AF4 Extract OS            00 (0) 'MS-DOS'\n+238AF5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236716 Compression Method    0008 (8) 'Deflated'\n-236718 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23671C CRC                   D5F6B94F (3589716303)\n-236720 Compressed Size       00000457 (1111)\n-236724 Uncompressed Size     00000D44 (3396)\n-236728 Filename Length       0043 (67)\n-23672A Extra Length          0000 (0)\n-23672C Comment Length        0000 (0)\n-23672E Disk Start            0000 (0)\n-236730 Int File Attributes   0000 (0)\n+238AF7 Compression Method    0008 (8) 'Deflated'\n+238AF9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238AFD CRC                   39A8FB9C (967375772)\n+238B01 Compressed Size       000002B1 (689)\n+238B05 Uncompressed Size     0000053D (1341)\n+238B09 Filename Length       0048 (72)\n+238B0B Extra Length          0000 (0)\n+238B0D Comment Length        0000 (0)\n+238B0F Disk Start            0000 (0)\n+238B11 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236732 Ext File Attributes   00000000 (0)\n-236736 Local Header Offset   00199072 (1675378)\n-23673A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238B13 Ext File Attributes   00000000 (0)\n+238B17 Local Header Offset   001A007C (1704060)\n+238B1B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23673A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238B1B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23677D CENTRAL HEADER #1538  02014B50 (33639248)\n-236781 Created Zip Spec      14 (20) '2.0'\n-236782 Created OS            00 (0) 'MS-DOS'\n-236783 Extract Zip Spec      14 (20) '2.0'\n-236784 Extract OS            00 (0) 'MS-DOS'\n-236785 General Purpose Flag  0808 (2056)\n+238B63 CENTRAL HEADER #1538  02014B50 (33639248)\n+238B67 Created Zip Spec      14 (20) '2.0'\n+238B68 Created OS            00 (0) 'MS-DOS'\n+238B69 Extract Zip Spec      14 (20) '2.0'\n+238B6A Extract OS            00 (0) 'MS-DOS'\n+238B6B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236787 Compression Method    0008 (8) 'Deflated'\n-236789 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23678D CRC                   DDF975D0 (3724113360)\n-236791 Compressed Size       00000416 (1046)\n-236795 Uncompressed Size     00000CCA (3274)\n-236799 Filename Length       0044 (68)\n-23679B Extra Length          0000 (0)\n-23679D Comment Length        0000 (0)\n-23679F Disk Start            0000 (0)\n-2367A1 Int File Attributes   0000 (0)\n+238B6D Compression Method    0008 (8) 'Deflated'\n+238B6F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238B73 CRC                   00000000 (0)\n+238B77 Compressed Size       00000002 (2)\n+238B7B Uncompressed Size     00000000 (0)\n+238B7F Filename Length       0039 (57)\n+238B81 Extra Length          0000 (0)\n+238B83 Comment Length        0000 (0)\n+238B85 Disk Start            0000 (0)\n+238B87 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2367A3 Ext File Attributes   00000000 (0)\n-2367A7 Local Header Offset   0019953A (1676602)\n-2367AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238B89 Ext File Attributes   00000000 (0)\n+238B8D Local Header Offset   001A03A3 (1704867)\n+238B91 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2367AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238B91: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2367EF CENTRAL HEADER #1539  02014B50 (33639248)\n-2367F3 Created Zip Spec      14 (20) '2.0'\n-2367F4 Created OS            00 (0) 'MS-DOS'\n-2367F5 Extract Zip Spec      14 (20) '2.0'\n-2367F6 Extract OS            00 (0) 'MS-DOS'\n-2367F7 General Purpose Flag  0808 (2056)\n+238BCA CENTRAL HEADER #1539  02014B50 (33639248)\n+238BCE Created Zip Spec      14 (20) '2.0'\n+238BCF Created OS            00 (0) 'MS-DOS'\n+238BD0 Extract Zip Spec      14 (20) '2.0'\n+238BD1 Extract OS            00 (0) 'MS-DOS'\n+238BD2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2367F9 Compression Method    0008 (8) 'Deflated'\n-2367FB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2367FF CRC                   B8EAACB4 (3102387380)\n-236803 Compressed Size       00000337 (823)\n-236807 Uncompressed Size     000007BB (1979)\n-23680B Filename Length       0045 (69)\n-23680D Extra Length          0000 (0)\n-23680F Comment Length        0000 (0)\n-236811 Disk Start            0000 (0)\n-236813 Int File Attributes   0000 (0)\n+238BD4 Compression Method    0008 (8) 'Deflated'\n+238BD6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238BDA CRC                   CA9739B0 (3398908336)\n+238BDE Compressed Size       0000037D (893)\n+238BE2 Uncompressed Size     0000087F (2175)\n+238BE6 Filename Length       0040 (64)\n+238BE8 Extra Length          0000 (0)\n+238BEA Comment Length        0000 (0)\n+238BEC Disk Start            0000 (0)\n+238BEE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236815 Ext File Attributes   00000000 (0)\n-236819 Local Header Offset   001999C2 (1677762)\n-23681D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238BF0 Ext File Attributes   00000000 (0)\n+238BF4 Local Header Offset   001A040C (1704972)\n+238BF8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23681D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238BF8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236862 CENTRAL HEADER #1540  02014B50 (33639248)\n-236866 Created Zip Spec      14 (20) '2.0'\n-236867 Created OS            00 (0) 'MS-DOS'\n-236868 Extract Zip Spec      14 (20) '2.0'\n-236869 Extract OS            00 (0) 'MS-DOS'\n-23686A General Purpose Flag  0808 (2056)\n+238C38 CENTRAL HEADER #1540  02014B50 (33639248)\n+238C3C Created Zip Spec      14 (20) '2.0'\n+238C3D Created OS            00 (0) 'MS-DOS'\n+238C3E Extract Zip Spec      14 (20) '2.0'\n+238C3F Extract OS            00 (0) 'MS-DOS'\n+238C40 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23686C Compression Method    0008 (8) 'Deflated'\n-23686E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236872 CRC                   A762DB85 (2808273797)\n-236876 Compressed Size       00000267 (615)\n-23687A Uncompressed Size     00000487 (1159)\n-23687E Filename Length       0049 (73)\n-236880 Extra Length          0000 (0)\n-236882 Comment Length        0000 (0)\n-236884 Disk Start            0000 (0)\n-236886 Int File Attributes   0000 (0)\n+238C42 Compression Method    0008 (8) 'Deflated'\n+238C44 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238C48 CRC                   BCFDA422 (3170739234)\n+238C4C Compressed Size       0000004C (76)\n+238C50 Uncompressed Size     0000004F (79)\n+238C54 Filename Length       0047 (71)\n+238C56 Extra Length          0000 (0)\n+238C58 Comment Length        0000 (0)\n+238C5A Disk Start            0000 (0)\n+238C5C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236888 Ext File Attributes   00000000 (0)\n-23688C Local Header Offset   00199D6C (1678700)\n-236890 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238C5E Ext File Attributes   00000000 (0)\n+238C62 Local Header Offset   001A07F7 (1705975)\n+238C66 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236890: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238C66: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2368D9 CENTRAL HEADER #1541  02014B50 (33639248)\n-2368DD Created Zip Spec      14 (20) '2.0'\n-2368DE Created OS            00 (0) 'MS-DOS'\n-2368DF Extract Zip Spec      14 (20) '2.0'\n-2368E0 Extract OS            00 (0) 'MS-DOS'\n-2368E1 General Purpose Flag  0808 (2056)\n+238CAD CENTRAL HEADER #1541  02014B50 (33639248)\n+238CB1 Created Zip Spec      14 (20) '2.0'\n+238CB2 Created OS            00 (0) 'MS-DOS'\n+238CB3 Extract Zip Spec      14 (20) '2.0'\n+238CB4 Extract OS            00 (0) 'MS-DOS'\n+238CB5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2368E3 Compression Method    0008 (8) 'Deflated'\n-2368E5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2368E9 CRC                   00000000 (0)\n-2368ED Compressed Size       00000002 (2)\n-2368F1 Uncompressed Size     00000000 (0)\n-2368F5 Filename Length       0031 (49)\n-2368F7 Extra Length          0000 (0)\n-2368F9 Comment Length        0000 (0)\n-2368FB Disk Start            0000 (0)\n-2368FD Int File Attributes   0000 (0)\n+238CB7 Compression Method    0008 (8) 'Deflated'\n+238CB9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238CBD CRC                   00000000 (0)\n+238CC1 Compressed Size       00000002 (2)\n+238CC5 Uncompressed Size     00000000 (0)\n+238CC9 Filename Length       0027 (39)\n+238CCB Extra Length          0000 (0)\n+238CCD Comment Length        0000 (0)\n+238CCF Disk Start            0000 (0)\n+238CD1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2368FF Ext File Attributes   00000000 (0)\n-236903 Local Header Offset   0019A04A (1679434)\n-236907 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238CD3 Ext File Attributes   00000000 (0)\n+238CD7 Local Header Offset   001A08B8 (1706168)\n+238CDB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236907: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238CDB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236938 CENTRAL HEADER #1542  02014B50 (33639248)\n-23693C Created Zip Spec      14 (20) '2.0'\n-23693D Created OS            00 (0) 'MS-DOS'\n-23693E Extract Zip Spec      14 (20) '2.0'\n-23693F Extract OS            00 (0) 'MS-DOS'\n-236940 General Purpose Flag  0808 (2056)\n+238D02 CENTRAL HEADER #1542  02014B50 (33639248)\n+238D06 Created Zip Spec      14 (20) '2.0'\n+238D07 Created OS            00 (0) 'MS-DOS'\n+238D08 Extract Zip Spec      14 (20) '2.0'\n+238D09 Extract OS            00 (0) 'MS-DOS'\n+238D0A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236942 Compression Method    0008 (8) 'Deflated'\n-236944 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236948 CRC                   E10895F0 (3775436272)\n-23694C Compressed Size       000002B2 (690)\n-236950 Uncompressed Size     000005A8 (1448)\n-236954 Filename Length       0058 (88)\n-236956 Extra Length          0000 (0)\n-236958 Comment Length        0000 (0)\n-23695A Disk Start            0000 (0)\n-23695C Int File Attributes   0000 (0)\n+238D0C Compression Method    0008 (8) 'Deflated'\n+238D0E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238D12 CRC                   3E0609F4 (1040583156)\n+238D16 Compressed Size       0000049E (1182)\n+238D1A Uncompressed Size     00000E94 (3732)\n+238D1E Filename Length       003B (59)\n+238D20 Extra Length          0000 (0)\n+238D22 Comment Length        0000 (0)\n+238D24 Disk Start            0000 (0)\n+238D26 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23695E Ext File Attributes   00000000 (0)\n-236962 Local Header Offset   0019A0AB (1679531)\n-236966 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238D28 Ext File Attributes   00000000 (0)\n+238D2C Local Header Offset   001A090F (1706255)\n+238D30 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236966: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238D30: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2369BE CENTRAL HEADER #1543  02014B50 (33639248)\n-2369C2 Created Zip Spec      14 (20) '2.0'\n-2369C3 Created OS            00 (0) 'MS-DOS'\n-2369C4 Extract Zip Spec      14 (20) '2.0'\n-2369C5 Extract OS            00 (0) 'MS-DOS'\n-2369C6 General Purpose Flag  0808 (2056)\n+238D6B CENTRAL HEADER #1543  02014B50 (33639248)\n+238D6F Created Zip Spec      14 (20) '2.0'\n+238D70 Created OS            00 (0) 'MS-DOS'\n+238D71 Extract Zip Spec      14 (20) '2.0'\n+238D72 Extract OS            00 (0) 'MS-DOS'\n+238D73 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2369C8 Compression Method    0008 (8) 'Deflated'\n-2369CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2369CE CRC                   EE1761D8 (3994509784)\n-2369D2 Compressed Size       0000026B (619)\n-2369D6 Uncompressed Size     000004C6 (1222)\n-2369DA Filename Length       0057 (87)\n-2369DC Extra Length          0000 (0)\n-2369DE Comment Length        0000 (0)\n-2369E0 Disk Start            0000 (0)\n-2369E2 Int File Attributes   0000 (0)\n+238D75 Compression Method    0008 (8) 'Deflated'\n+238D77 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238D7B CRC                   99ADAD26 (2578296102)\n+238D7F Compressed Size       00000428 (1064)\n+238D83 Uncompressed Size     00000CCF (3279)\n+238D87 Filename Length       003C (60)\n+238D89 Extra Length          0000 (0)\n+238D8B Comment Length        0000 (0)\n+238D8D Disk Start            0000 (0)\n+238D8F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2369E4 Ext File Attributes   00000000 (0)\n-2369E8 Local Header Offset   0019A3E3 (1680355)\n-2369EC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238D91 Ext File Attributes   00000000 (0)\n+238D95 Local Header Offset   001A0E16 (1707542)\n+238D99 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2369EC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238D99: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236A43 CENTRAL HEADER #1544  02014B50 (33639248)\n-236A47 Created Zip Spec      14 (20) '2.0'\n-236A48 Created OS            00 (0) 'MS-DOS'\n-236A49 Extract Zip Spec      14 (20) '2.0'\n-236A4A Extract OS            00 (0) 'MS-DOS'\n-236A4B General Purpose Flag  0808 (2056)\n+238DD5 CENTRAL HEADER #1544  02014B50 (33639248)\n+238DD9 Created Zip Spec      14 (20) '2.0'\n+238DDA Created OS            00 (0) 'MS-DOS'\n+238DDB Extract Zip Spec      14 (20) '2.0'\n+238DDC Extract OS            00 (0) 'MS-DOS'\n+238DDD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236A4D Compression Method    0008 (8) 'Deflated'\n-236A4F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236A53 CRC                   FCEAC14E (4243243342)\n-236A57 Compressed Size       00000322 (802)\n-236A5B Uncompressed Size     00000729 (1833)\n-236A5F Filename Length       0050 (80)\n-236A61 Extra Length          0000 (0)\n-236A63 Comment Length        0000 (0)\n-236A65 Disk Start            0000 (0)\n-236A67 Int File Attributes   0000 (0)\n+238DDF Compression Method    0008 (8) 'Deflated'\n+238DE1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238DE5 CRC                   61EF883C (1643087932)\n+238DE9 Compressed Size       000002E9 (745)\n+238DED Uncompressed Size     00000719 (1817)\n+238DF1 Filename Length       003D (61)\n+238DF3 Extra Length          0000 (0)\n+238DF5 Comment Length        0000 (0)\n+238DF7 Disk Start            0000 (0)\n+238DF9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236A69 Ext File Attributes   00000000 (0)\n-236A6D Local Header Offset   0019A6D3 (1681107)\n-236A71 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238DFB Ext File Attributes   00000000 (0)\n+238DFF Local Header Offset   001A12A8 (1708712)\n+238E03 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236A71: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238E03: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236AC1 CENTRAL HEADER #1545  02014B50 (33639248)\n-236AC5 Created Zip Spec      14 (20) '2.0'\n-236AC6 Created OS            00 (0) 'MS-DOS'\n-236AC7 Extract Zip Spec      14 (20) '2.0'\n-236AC8 Extract OS            00 (0) 'MS-DOS'\n-236AC9 General Purpose Flag  0808 (2056)\n+238E40 CENTRAL HEADER #1545  02014B50 (33639248)\n+238E44 Created Zip Spec      14 (20) '2.0'\n+238E45 Created OS            00 (0) 'MS-DOS'\n+238E46 Extract Zip Spec      14 (20) '2.0'\n+238E47 Extract OS            00 (0) 'MS-DOS'\n+238E48 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236ACB Compression Method    0008 (8) 'Deflated'\n-236ACD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236AD1 CRC                   8464A9F5 (2221189621)\n-236AD5 Compressed Size       0000037E (894)\n-236AD9 Uncompressed Size     00000892 (2194)\n-236ADD Filename Length       0059 (89)\n-236ADF Extra Length          0000 (0)\n-236AE1 Comment Length        0000 (0)\n-236AE3 Disk Start            0000 (0)\n-236AE5 Int File Attributes   0000 (0)\n+238E4A Compression Method    0008 (8) 'Deflated'\n+238E4C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238E50 CRC                   00000000 (0)\n+238E54 Compressed Size       00000002 (2)\n+238E58 Uncompressed Size     00000000 (0)\n+238E5C Filename Length       0039 (57)\n+238E5E Extra Length          0000 (0)\n+238E60 Comment Length        0000 (0)\n+238E62 Disk Start            0000 (0)\n+238E64 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236AE7 Ext File Attributes   00000000 (0)\n-236AEB Local Header Offset   0019AA73 (1682035)\n-236AEF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238E66 Ext File Attributes   00000000 (0)\n+238E6A Local Header Offset   001A15FC (1709564)\n+238E6E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236AEF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238E6E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236B48 CENTRAL HEADER #1546  02014B50 (33639248)\n-236B4C Created Zip Spec      14 (20) '2.0'\n-236B4D Created OS            00 (0) 'MS-DOS'\n-236B4E Extract Zip Spec      14 (20) '2.0'\n-236B4F Extract OS            00 (0) 'MS-DOS'\n-236B50 General Purpose Flag  0808 (2056)\n+238EA7 CENTRAL HEADER #1546  02014B50 (33639248)\n+238EAB Created Zip Spec      14 (20) '2.0'\n+238EAC Created OS            00 (0) 'MS-DOS'\n+238EAD Extract Zip Spec      14 (20) '2.0'\n+238EAE Extract OS            00 (0) 'MS-DOS'\n+238EAF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236B52 Compression Method    0008 (8) 'Deflated'\n-236B54 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236B58 CRC                   433990B3 (1127846067)\n-236B5C Compressed Size       0000005A (90)\n-236B60 Uncompressed Size     000000B9 (185)\n-236B64 Filename Length       0063 (99)\n-236B66 Extra Length          0000 (0)\n-236B68 Comment Length        0000 (0)\n-236B6A Disk Start            0000 (0)\n-236B6C Int File Attributes   0000 (0)\n+238EB1 Compression Method    0008 (8) 'Deflated'\n+238EB3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238EB7 CRC                   7B8B6784 (2072733572)\n+238EBB Compressed Size       00000368 (872)\n+238EBF Uncompressed Size     00000819 (2073)\n+238EC3 Filename Length       0040 (64)\n+238EC5 Extra Length          0000 (0)\n+238EC7 Comment Length        0000 (0)\n+238EC9 Disk Start            0000 (0)\n+238ECB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236B6E Ext File Attributes   00000000 (0)\n-236B72 Local Header Offset   0019AE78 (1683064)\n-236B76 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238ECD Ext File Attributes   00000000 (0)\n+238ED1 Local Header Offset   001A1665 (1709669)\n+238ED5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236B76: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238ED5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236BD9 CENTRAL HEADER #1547  02014B50 (33639248)\n-236BDD Created Zip Spec      14 (20) '2.0'\n-236BDE Created OS            00 (0) 'MS-DOS'\n-236BDF Extract Zip Spec      14 (20) '2.0'\n-236BE0 Extract OS            00 (0) 'MS-DOS'\n-236BE1 General Purpose Flag  0808 (2056)\n+238F15 CENTRAL HEADER #1547  02014B50 (33639248)\n+238F19 Created Zip Spec      14 (20) '2.0'\n+238F1A Created OS            00 (0) 'MS-DOS'\n+238F1B Extract Zip Spec      14 (20) '2.0'\n+238F1C Extract OS            00 (0) 'MS-DOS'\n+238F1D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236BE3 Compression Method    0008 (8) 'Deflated'\n-236BE5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236BE9 CRC                   00000000 (0)\n-236BED Compressed Size       00000002 (2)\n-236BF1 Uncompressed Size     00000000 (0)\n-236BF5 Filename Length       001B (27)\n-236BF7 Extra Length          0000 (0)\n-236BF9 Comment Length        0000 (0)\n-236BFB Disk Start            0000 (0)\n-236BFD Int File Attributes   0000 (0)\n+238F1F Compression Method    0008 (8) 'Deflated'\n+238F21 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238F25 CRC                   47014A41 (1191266881)\n+238F29 Compressed Size       0000004C (76)\n+238F2D Uncompressed Size     0000004F (79)\n+238F31 Filename Length       0047 (71)\n+238F33 Extra Length          0000 (0)\n+238F35 Comment Length        0000 (0)\n+238F37 Disk Start            0000 (0)\n+238F39 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236BFF Ext File Attributes   00000000 (0)\n-236C03 Local Header Offset   0019AF63 (1683299)\n-236C07 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238F3B Ext File Attributes   00000000 (0)\n+238F3F Local Header Offset   001A1A3B (1710651)\n+238F43 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236C07: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238F43: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236C22 CENTRAL HEADER #1548  02014B50 (33639248)\n-236C26 Created Zip Spec      14 (20) '2.0'\n-236C27 Created OS            00 (0) 'MS-DOS'\n-236C28 Extract Zip Spec      14 (20) '2.0'\n-236C29 Extract OS            00 (0) 'MS-DOS'\n-236C2A General Purpose Flag  0808 (2056)\n+238F8A CENTRAL HEADER #1548  02014B50 (33639248)\n+238F8E Created Zip Spec      14 (20) '2.0'\n+238F8F Created OS            00 (0) 'MS-DOS'\n+238F90 Extract Zip Spec      14 (20) '2.0'\n+238F91 Extract OS            00 (0) 'MS-DOS'\n+238F92 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236C2C Compression Method    0008 (8) 'Deflated'\n-236C2E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236C32 CRC                   00000000 (0)\n-236C36 Compressed Size       00000002 (2)\n-236C3A Uncompressed Size     00000000 (0)\n-236C3E Filename Length       0023 (35)\n-236C40 Extra Length          0000 (0)\n-236C42 Comment Length        0000 (0)\n-236C44 Disk Start            0000 (0)\n-236C46 Int File Attributes   0000 (0)\n+238F94 Compression Method    0008 (8) 'Deflated'\n+238F96 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238F9A CRC                   00000000 (0)\n+238F9E Compressed Size       00000002 (2)\n+238FA2 Uncompressed Size     00000000 (0)\n+238FA6 Filename Length       002D (45)\n+238FA8 Extra Length          0000 (0)\n+238FAA Comment Length        0000 (0)\n+238FAC Disk Start            0000 (0)\n+238FAE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236C48 Ext File Attributes   00000000 (0)\n-236C4C Local Header Offset   0019AFAE (1683374)\n-236C50 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+238FB0 Ext File Attributes   00000000 (0)\n+238FB4 Local Header Offset   001A1AFC (1710844)\n+238FB8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236C50: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x238FB8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236C73 CENTRAL HEADER #1549  02014B50 (33639248)\n-236C77 Created Zip Spec      14 (20) '2.0'\n-236C78 Created OS            00 (0) 'MS-DOS'\n-236C79 Extract Zip Spec      14 (20) '2.0'\n-236C7A Extract OS            00 (0) 'MS-DOS'\n-236C7B General Purpose Flag  0808 (2056)\n+238FE5 CENTRAL HEADER #1549  02014B50 (33639248)\n+238FE9 Created Zip Spec      14 (20) '2.0'\n+238FEA Created OS            00 (0) 'MS-DOS'\n+238FEB Extract Zip Spec      14 (20) '2.0'\n+238FEC Extract OS            00 (0) 'MS-DOS'\n+238FED General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236C7D Compression Method    0008 (8) 'Deflated'\n-236C7F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236C83 CRC                   852B452E (2234205486)\n-236C87 Compressed Size       0000038D (909)\n-236C8B Uncompressed Size     00000A84 (2692)\n-236C8F Filename Length       003B (59)\n-236C91 Extra Length          0000 (0)\n-236C93 Comment Length        0000 (0)\n-236C95 Disk Start            0000 (0)\n-236C97 Int File Attributes   0000 (0)\n+238FEF Compression Method    0008 (8) 'Deflated'\n+238FF1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+238FF5 CRC                   8EE26A20 (2397202976)\n+238FF9 Compressed Size       000004E8 (1256)\n+238FFD Uncompressed Size     0000108D (4237)\n+239001 Filename Length       0047 (71)\n+239003 Extra Length          0000 (0)\n+239005 Comment Length        0000 (0)\n+239007 Disk Start            0000 (0)\n+239009 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236C99 Ext File Attributes   00000000 (0)\n-236C9D Local Header Offset   0019B001 (1683457)\n-236CA1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23900B Ext File Attributes   00000000 (0)\n+23900F Local Header Offset   001A1B59 (1710937)\n+239013 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236CA1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239013: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236CDC CENTRAL HEADER #1550  02014B50 (33639248)\n-236CE0 Created Zip Spec      14 (20) '2.0'\n-236CE1 Created OS            00 (0) 'MS-DOS'\n-236CE2 Extract Zip Spec      14 (20) '2.0'\n-236CE3 Extract OS            00 (0) 'MS-DOS'\n-236CE4 General Purpose Flag  0808 (2056)\n+23905A CENTRAL HEADER #1550  02014B50 (33639248)\n+23905E Created Zip Spec      14 (20) '2.0'\n+23905F Created OS            00 (0) 'MS-DOS'\n+239060 Extract Zip Spec      14 (20) '2.0'\n+239061 Extract OS            00 (0) 'MS-DOS'\n+239062 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236CE6 Compression Method    0008 (8) 'Deflated'\n-236CE8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236CEC CRC                   3D3ED0A6 (1027526822)\n-236CF0 Compressed Size       00000350 (848)\n-236CF4 Uncompressed Size     00000A4B (2635)\n-236CF8 Filename Length       003C (60)\n-236CFA Extra Length          0000 (0)\n-236CFC Comment Length        0000 (0)\n-236CFE Disk Start            0000 (0)\n-236D00 Int File Attributes   0000 (0)\n+239064 Compression Method    0008 (8) 'Deflated'\n+239066 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23906A CRC                   9A974193 (2593603987)\n+23906E Compressed Size       000004AA (1194)\n+239072 Uncompressed Size     00000FB4 (4020)\n+239076 Filename Length       0048 (72)\n+239078 Extra Length          0000 (0)\n+23907A Comment Length        0000 (0)\n+23907C Disk Start            0000 (0)\n+23907E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236D02 Ext File Attributes   00000000 (0)\n-236D06 Local Header Offset   0019B3F7 (1684471)\n-236D0A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239080 Ext File Attributes   00000000 (0)\n+239084 Local Header Offset   001A20B6 (1712310)\n+239088 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236D0A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239088: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236D46 CENTRAL HEADER #1551  02014B50 (33639248)\n-236D4A Created Zip Spec      14 (20) '2.0'\n-236D4B Created OS            00 (0) 'MS-DOS'\n-236D4C Extract Zip Spec      14 (20) '2.0'\n-236D4D Extract OS            00 (0) 'MS-DOS'\n-236D4E General Purpose Flag  0808 (2056)\n+2390D0 CENTRAL HEADER #1551  02014B50 (33639248)\n+2390D4 Created Zip Spec      14 (20) '2.0'\n+2390D5 Created OS            00 (0) 'MS-DOS'\n+2390D6 Extract Zip Spec      14 (20) '2.0'\n+2390D7 Extract OS            00 (0) 'MS-DOS'\n+2390D8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236D50 Compression Method    0008 (8) 'Deflated'\n-236D52 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236D56 CRC                   0FA733C6 (262616006)\n-236D5A Compressed Size       000002F5 (757)\n-236D5E Uncompressed Size     00000707 (1799)\n-236D62 Filename Length       003D (61)\n-236D64 Extra Length          0000 (0)\n-236D66 Comment Length        0000 (0)\n-236D68 Disk Start            0000 (0)\n-236D6A Int File Attributes   0000 (0)\n+2390DA Compression Method    0008 (8) 'Deflated'\n+2390DC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2390E0 CRC                   1224CDAB (304401835)\n+2390E4 Compressed Size       0000032F (815)\n+2390E8 Uncompressed Size     000007D8 (2008)\n+2390EC Filename Length       0049 (73)\n+2390EE Extra Length          0000 (0)\n+2390F0 Comment Length        0000 (0)\n+2390F2 Disk Start            0000 (0)\n+2390F4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236D6C Ext File Attributes   00000000 (0)\n-236D70 Local Header Offset   0019B7B1 (1685425)\n-236D74 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2390F6 Ext File Attributes   00000000 (0)\n+2390FA Local Header Offset   001A25D6 (1713622)\n+2390FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236D74: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2390FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236DB1 CENTRAL HEADER #1552  02014B50 (33639248)\n-236DB5 Created Zip Spec      14 (20) '2.0'\n-236DB6 Created OS            00 (0) 'MS-DOS'\n-236DB7 Extract Zip Spec      14 (20) '2.0'\n-236DB8 Extract OS            00 (0) 'MS-DOS'\n-236DB9 General Purpose Flag  0808 (2056)\n+239147 CENTRAL HEADER #1552  02014B50 (33639248)\n+23914B Created Zip Spec      14 (20) '2.0'\n+23914C Created OS            00 (0) 'MS-DOS'\n+23914D Extract Zip Spec      14 (20) '2.0'\n+23914E Extract OS            00 (0) 'MS-DOS'\n+23914F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236DBB Compression Method    0008 (8) 'Deflated'\n-236DBD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236DC1 CRC                   42BF763C (1119843900)\n-236DC5 Compressed Size       000002E8 (744)\n-236DC9 Uncompressed Size     00000709 (1801)\n-236DCD Filename Length       0041 (65)\n-236DCF Extra Length          0000 (0)\n-236DD1 Comment Length        0000 (0)\n-236DD3 Disk Start            0000 (0)\n-236DD5 Int File Attributes   0000 (0)\n+239151 Compression Method    0008 (8) 'Deflated'\n+239153 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239157 CRC                   39DE609E (970875038)\n+23915B Compressed Size       0000026E (622)\n+23915F Uncompressed Size     00000481 (1153)\n+239163 Filename Length       0039 (57)\n+239165 Extra Length          0000 (0)\n+239167 Comment Length        0000 (0)\n+239169 Disk Start            0000 (0)\n+23916B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236DD7 Ext File Attributes   00000000 (0)\n-236DDB Local Header Offset   0019BB11 (1686289)\n-236DDF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23916D Ext File Attributes   00000000 (0)\n+239171 Local Header Offset   001A297C (1714556)\n+239175 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236DDF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239175: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236E20 CENTRAL HEADER #1553  02014B50 (33639248)\n-236E24 Created Zip Spec      14 (20) '2.0'\n-236E25 Created OS            00 (0) 'MS-DOS'\n-236E26 Extract Zip Spec      14 (20) '2.0'\n-236E27 Extract OS            00 (0) 'MS-DOS'\n-236E28 General Purpose Flag  0808 (2056)\n+2391AE CENTRAL HEADER #1553  02014B50 (33639248)\n+2391B2 Created Zip Spec      14 (20) '2.0'\n+2391B3 Created OS            00 (0) 'MS-DOS'\n+2391B4 Extract Zip Spec      14 (20) '2.0'\n+2391B5 Extract OS            00 (0) 'MS-DOS'\n+2391B6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236E2A Compression Method    0008 (8) 'Deflated'\n-236E2C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236E30 CRC                   9A817459 (2592175193)\n-236E34 Compressed Size       00000473 (1139)\n-236E38 Uncompressed Size     000011CF (4559)\n-236E3C Filename Length       003E (62)\n-236E3E Extra Length          0000 (0)\n-236E40 Comment Length        0000 (0)\n-236E42 Disk Start            0000 (0)\n-236E44 Int File Attributes   0000 (0)\n+2391B8 Compression Method    0008 (8) 'Deflated'\n+2391BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2391BE CRC                   00000000 (0)\n+2391C2 Compressed Size       00000002 (2)\n+2391C6 Uncompressed Size     00000000 (0)\n+2391CA Filename Length       0036 (54)\n+2391CC Extra Length          0000 (0)\n+2391CE Comment Length        0000 (0)\n+2391D0 Disk Start            0000 (0)\n+2391D2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236E46 Ext File Attributes   00000000 (0)\n-236E4A Local Header Offset   0019BE68 (1687144)\n-236E4E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2391D4 Ext File Attributes   00000000 (0)\n+2391D8 Local Header Offset   001A2C51 (1715281)\n+2391DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236E4E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2391DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236E8C CENTRAL HEADER #1554  02014B50 (33639248)\n-236E90 Created Zip Spec      14 (20) '2.0'\n-236E91 Created OS            00 (0) 'MS-DOS'\n-236E92 Extract Zip Spec      14 (20) '2.0'\n-236E93 Extract OS            00 (0) 'MS-DOS'\n-236E94 General Purpose Flag  0808 (2056)\n+239212 CENTRAL HEADER #1554  02014B50 (33639248)\n+239216 Created Zip Spec      14 (20) '2.0'\n+239217 Created OS            00 (0) 'MS-DOS'\n+239218 Extract Zip Spec      14 (20) '2.0'\n+239219 Extract OS            00 (0) 'MS-DOS'\n+23921A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236E96 Compression Method    0008 (8) 'Deflated'\n-236E98 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236E9C CRC                   00000000 (0)\n-236EA0 Compressed Size       00000002 (2)\n-236EA4 Uncompressed Size     00000000 (0)\n-236EA8 Filename Length       002E (46)\n-236EAA Extra Length          0000 (0)\n-236EAC Comment Length        0000 (0)\n-236EAE Disk Start            0000 (0)\n-236EB0 Int File Attributes   0000 (0)\n+23921C Compression Method    0008 (8) 'Deflated'\n+23921E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239222 CRC                   05778916 (91719958)\n+239226 Compressed Size       00000342 (834)\n+23922A Uncompressed Size     000007B5 (1973)\n+23922E Filename Length       004A (74)\n+239230 Extra Length          0000 (0)\n+239232 Comment Length        0000 (0)\n+239234 Disk Start            0000 (0)\n+239236 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236EB2 Ext File Attributes   00000000 (0)\n-236EB6 Local Header Offset   0019C347 (1688391)\n-236EBA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239238 Ext File Attributes   00000000 (0)\n+23923C Local Header Offset   001A2CB7 (1715383)\n+239240 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236EBA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239240: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236EE8 CENTRAL HEADER #1555  02014B50 (33639248)\n-236EEC Created Zip Spec      14 (20) '2.0'\n-236EED Created OS            00 (0) 'MS-DOS'\n-236EEE Extract Zip Spec      14 (20) '2.0'\n-236EEF Extract OS            00 (0) 'MS-DOS'\n-236EF0 General Purpose Flag  0808 (2056)\n+23928A CENTRAL HEADER #1555  02014B50 (33639248)\n+23928E Created Zip Spec      14 (20) '2.0'\n+23928F Created OS            00 (0) 'MS-DOS'\n+239290 Extract Zip Spec      14 (20) '2.0'\n+239291 Extract OS            00 (0) 'MS-DOS'\n+239292 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236EF2 Compression Method    0008 (8) 'Deflated'\n-236EF4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236EF8 CRC                   00000000 (0)\n-236EFC Compressed Size       00000002 (2)\n-236F00 Uncompressed Size     00000000 (0)\n-236F04 Filename Length       0034 (52)\n-236F06 Extra Length          0000 (0)\n-236F08 Comment Length        0000 (0)\n-236F0A Disk Start            0000 (0)\n-236F0C Int File Attributes   0000 (0)\n+239294 Compression Method    0008 (8) 'Deflated'\n+239296 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23929A CRC                   1D3EA7BE (490645438)\n+23929E Compressed Size       0000033B (827)\n+2392A2 Uncompressed Size     00000793 (1939)\n+2392A6 Filename Length       0047 (71)\n+2392A8 Extra Length          0000 (0)\n+2392AA Comment Length        0000 (0)\n+2392AC Disk Start            0000 (0)\n+2392AE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236F0E Ext File Attributes   00000000 (0)\n-236F12 Local Header Offset   0019C3A5 (1688485)\n-236F16 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2392B0 Ext File Attributes   00000000 (0)\n+2392B4 Local Header Offset   001A3071 (1716337)\n+2392B8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236F16: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2392B8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236F4A CENTRAL HEADER #1556  02014B50 (33639248)\n-236F4E Created Zip Spec      14 (20) '2.0'\n-236F4F Created OS            00 (0) 'MS-DOS'\n-236F50 Extract Zip Spec      14 (20) '2.0'\n-236F51 Extract OS            00 (0) 'MS-DOS'\n-236F52 General Purpose Flag  0808 (2056)\n+2392FF CENTRAL HEADER #1556  02014B50 (33639248)\n+239303 Created Zip Spec      14 (20) '2.0'\n+239304 Created OS            00 (0) 'MS-DOS'\n+239305 Extract Zip Spec      14 (20) '2.0'\n+239306 Extract OS            00 (0) 'MS-DOS'\n+239307 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236F54 Compression Method    0008 (8) 'Deflated'\n-236F56 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236F5A CRC                   526506A5 (1382352549)\n-236F5E Compressed Size       00000309 (777)\n-236F62 Uncompressed Size     0000067A (1658)\n-236F66 Filename Length       0047 (71)\n-236F68 Extra Length          0000 (0)\n-236F6A Comment Length        0000 (0)\n-236F6C Disk Start            0000 (0)\n-236F6E Int File Attributes   0000 (0)\n+239309 Compression Method    0008 (8) 'Deflated'\n+23930B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23930F CRC                   F831FECC (4164026060)\n+239313 Compressed Size       00000342 (834)\n+239317 Uncompressed Size     000007B1 (1969)\n+23931B Filename Length       004C (76)\n+23931D Extra Length          0000 (0)\n+23931F Comment Length        0000 (0)\n+239321 Disk Start            0000 (0)\n+239323 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236F70 Ext File Attributes   00000000 (0)\n-236F74 Local Header Offset   0019C409 (1688585)\n-236F78 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239325 Ext File Attributes   00000000 (0)\n+239329 Local Header Offset   001A3421 (1717281)\n+23932D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236F78: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23932D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-236FBF CENTRAL HEADER #1557  02014B50 (33639248)\n-236FC3 Created Zip Spec      14 (20) '2.0'\n-236FC4 Created OS            00 (0) 'MS-DOS'\n-236FC5 Extract Zip Spec      14 (20) '2.0'\n-236FC6 Extract OS            00 (0) 'MS-DOS'\n-236FC7 General Purpose Flag  0808 (2056)\n+239379 CENTRAL HEADER #1557  02014B50 (33639248)\n+23937D Created Zip Spec      14 (20) '2.0'\n+23937E Created OS            00 (0) 'MS-DOS'\n+23937F Extract Zip Spec      14 (20) '2.0'\n+239380 Extract OS            00 (0) 'MS-DOS'\n+239381 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-236FC9 Compression Method    0008 (8) 'Deflated'\n-236FCB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-236FCF CRC                   E4089255 (3825766997)\n-236FD3 Compressed Size       0000030D (781)\n-236FD7 Uncompressed Size     00000679 (1657)\n-236FDB Filename Length       0046 (70)\n-236FDD Extra Length          0000 (0)\n-236FDF Comment Length        0000 (0)\n-236FE1 Disk Start            0000 (0)\n-236FE3 Int File Attributes   0000 (0)\n+239383 Compression Method    0008 (8) 'Deflated'\n+239385 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239389 CRC                   00000000 (0)\n+23938D Compressed Size       00000002 (2)\n+239391 Uncompressed Size     00000000 (0)\n+239395 Filename Length       0033 (51)\n+239397 Extra Length          0000 (0)\n+239399 Comment Length        0000 (0)\n+23939B Disk Start            0000 (0)\n+23939D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-236FE5 Ext File Attributes   00000000 (0)\n-236FE9 Local Header Offset   0019C787 (1689479)\n-236FED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23939F Ext File Attributes   00000000 (0)\n+2393A3 Local Header Offset   001A37DD (1718237)\n+2393A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x236FED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2393A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237033 CENTRAL HEADER #1558  02014B50 (33639248)\n-237037 Created Zip Spec      14 (20) '2.0'\n-237038 Created OS            00 (0) 'MS-DOS'\n-237039 Extract Zip Spec      14 (20) '2.0'\n-23703A Extract OS            00 (0) 'MS-DOS'\n-23703B General Purpose Flag  0808 (2056)\n+2393DA CENTRAL HEADER #1558  02014B50 (33639248)\n+2393DE Created Zip Spec      14 (20) '2.0'\n+2393DF Created OS            00 (0) 'MS-DOS'\n+2393E0 Extract Zip Spec      14 (20) '2.0'\n+2393E1 Extract OS            00 (0) 'MS-DOS'\n+2393E2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23703D Compression Method    0008 (8) 'Deflated'\n-23703F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237043 CRC                   3FBD14BB (1069356219)\n-237047 Compressed Size       0000036D (877)\n-23704B Uncompressed Size     000007A8 (1960)\n-23704F Filename Length       004C (76)\n-237051 Extra Length          0000 (0)\n-237053 Comment Length        0000 (0)\n-237055 Disk Start            0000 (0)\n-237057 Int File Attributes   0000 (0)\n+2393E4 Compression Method    0008 (8) 'Deflated'\n+2393E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2393EA CRC                   B38C8B84 (3012332420)\n+2393EE Compressed Size       0000048F (1167)\n+2393F2 Uncompressed Size     00000F71 (3953)\n+2393F6 Filename Length       0044 (68)\n+2393F8 Extra Length          0000 (0)\n+2393FA Comment Length        0000 (0)\n+2393FC Disk Start            0000 (0)\n+2393FE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237059 Ext File Attributes   00000000 (0)\n-23705D Local Header Offset   0019CB08 (1690376)\n-237061 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239400 Ext File Attributes   00000000 (0)\n+239404 Local Header Offset   001A3840 (1718336)\n+239408 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237061: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239408: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2370AD CENTRAL HEADER #1559  02014B50 (33639248)\n-2370B1 Created Zip Spec      14 (20) '2.0'\n-2370B2 Created OS            00 (0) 'MS-DOS'\n-2370B3 Extract Zip Spec      14 (20) '2.0'\n-2370B4 Extract OS            00 (0) 'MS-DOS'\n-2370B5 General Purpose Flag  0808 (2056)\n+23944C CENTRAL HEADER #1559  02014B50 (33639248)\n+239450 Created Zip Spec      14 (20) '2.0'\n+239451 Created OS            00 (0) 'MS-DOS'\n+239452 Extract Zip Spec      14 (20) '2.0'\n+239453 Extract OS            00 (0) 'MS-DOS'\n+239454 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2370B7 Compression Method    0008 (8) 'Deflated'\n-2370B9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2370BD CRC                   0BA6304B (195440715)\n-2370C1 Compressed Size       0000031A (794)\n-2370C5 Uncompressed Size     000006BF (1727)\n-2370C9 Filename Length       0048 (72)\n-2370CB Extra Length          0000 (0)\n-2370CD Comment Length        0000 (0)\n-2370CF Disk Start            0000 (0)\n-2370D1 Int File Attributes   0000 (0)\n+239456 Compression Method    0008 (8) 'Deflated'\n+239458 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23945C CRC                   00000000 (0)\n+239460 Compressed Size       00000002 (2)\n+239464 Uncompressed Size     00000000 (0)\n+239468 Filename Length       003F (63)\n+23946A Extra Length          0000 (0)\n+23946C Comment Length        0000 (0)\n+23946E Disk Start            0000 (0)\n+239470 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2370D3 Ext File Attributes   00000000 (0)\n-2370D7 Local Header Offset   0019CEEF (1691375)\n-2370DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239472 Ext File Attributes   00000000 (0)\n+239476 Local Header Offset   001A3D41 (1719617)\n+23947A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2370DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23947A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237123 CENTRAL HEADER #1560  02014B50 (33639248)\n-237127 Created Zip Spec      14 (20) '2.0'\n-237128 Created OS            00 (0) 'MS-DOS'\n-237129 Extract Zip Spec      14 (20) '2.0'\n-23712A Extract OS            00 (0) 'MS-DOS'\n-23712B General Purpose Flag  0808 (2056)\n+2394B9 CENTRAL HEADER #1560  02014B50 (33639248)\n+2394BD Created Zip Spec      14 (20) '2.0'\n+2394BE Created OS            00 (0) 'MS-DOS'\n+2394BF Extract Zip Spec      14 (20) '2.0'\n+2394C0 Extract OS            00 (0) 'MS-DOS'\n+2394C1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23712D Compression Method    0008 (8) 'Deflated'\n-23712F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237133 CRC                   6F153BA7 (1863662503)\n-237137 Compressed Size       0000030B (779)\n-23713B Uncompressed Size     000006D6 (1750)\n-23713F Filename Length       004C (76)\n-237141 Extra Length          0000 (0)\n-237143 Comment Length        0000 (0)\n-237145 Disk Start            0000 (0)\n-237147 Int File Attributes   0000 (0)\n+2394C3 Compression Method    0008 (8) 'Deflated'\n+2394C5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2394C9 CRC                   619718E2 (1637292258)\n+2394CD Compressed Size       00000372 (882)\n+2394D1 Uncompressed Size     000008F1 (2289)\n+2394D5 Filename Length       0046 (70)\n+2394D7 Extra Length          0000 (0)\n+2394D9 Comment Length        0000 (0)\n+2394DB Disk Start            0000 (0)\n+2394DD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237149 Ext File Attributes   00000000 (0)\n-23714D Local Header Offset   0019D27F (1692287)\n-237151 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2394DF Ext File Attributes   00000000 (0)\n+2394E3 Local Header Offset   001A3DB0 (1719728)\n+2394E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237151: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2394E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23719D CENTRAL HEADER #1561  02014B50 (33639248)\n-2371A1 Created Zip Spec      14 (20) '2.0'\n-2371A2 Created OS            00 (0) 'MS-DOS'\n-2371A3 Extract Zip Spec      14 (20) '2.0'\n-2371A4 Extract OS            00 (0) 'MS-DOS'\n-2371A5 General Purpose Flag  0808 (2056)\n+23952D CENTRAL HEADER #1561  02014B50 (33639248)\n+239531 Created Zip Spec      14 (20) '2.0'\n+239532 Created OS            00 (0) 'MS-DOS'\n+239533 Extract Zip Spec      14 (20) '2.0'\n+239534 Extract OS            00 (0) 'MS-DOS'\n+239535 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2371A7 Compression Method    0008 (8) 'Deflated'\n-2371A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2371AD CRC                   6E8EF8DF (1854863583)\n-2371B1 Compressed Size       0000032C (812)\n-2371B5 Uncompressed Size     0000070F (1807)\n-2371B9 Filename Length       0048 (72)\n-2371BB Extra Length          0000 (0)\n-2371BD Comment Length        0000 (0)\n-2371BF Disk Start            0000 (0)\n-2371C1 Int File Attributes   0000 (0)\n+239537 Compression Method    0008 (8) 'Deflated'\n+239539 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23953D CRC                   F5CE41B3 (4123935155)\n+239541 Compressed Size       0000004F (79)\n+239545 Uncompressed Size     00000055 (85)\n+239549 Filename Length       004D (77)\n+23954B Extra Length          0000 (0)\n+23954D Comment Length        0000 (0)\n+23954F Disk Start            0000 (0)\n+239551 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2371C3 Ext File Attributes   00000000 (0)\n-2371C7 Local Header Offset   0019D604 (1693188)\n-2371CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239553 Ext File Attributes   00000000 (0)\n+239557 Local Header Offset   001A4196 (1720726)\n+23955B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2371CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23955B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237213 CENTRAL HEADER #1562  02014B50 (33639248)\n-237217 Created Zip Spec      14 (20) '2.0'\n-237218 Created OS            00 (0) 'MS-DOS'\n-237219 Extract Zip Spec      14 (20) '2.0'\n-23721A Extract OS            00 (0) 'MS-DOS'\n-23721B General Purpose Flag  0808 (2056)\n+2395A8 CENTRAL HEADER #1562  02014B50 (33639248)\n+2395AC Created Zip Spec      14 (20) '2.0'\n+2395AD Created OS            00 (0) 'MS-DOS'\n+2395AE Extract Zip Spec      14 (20) '2.0'\n+2395AF Extract OS            00 (0) 'MS-DOS'\n+2395B0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23721D Compression Method    0008 (8) 'Deflated'\n-23721F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237223 CRC                   1A07B667 (436713063)\n-237227 Compressed Size       0000030A (778)\n-23722B Uncompressed Size     0000066E (1646)\n-23722F Filename Length       0047 (71)\n-237231 Extra Length          0000 (0)\n-237233 Comment Length        0000 (0)\n-237235 Disk Start            0000 (0)\n-237237 Int File Attributes   0000 (0)\n+2395B2 Compression Method    0008 (8) 'Deflated'\n+2395B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2395B8 CRC                   00000000 (0)\n+2395BC Compressed Size       00000002 (2)\n+2395C0 Uncompressed Size     00000000 (0)\n+2395C4 Filename Length       0027 (39)\n+2395C6 Extra Length          0000 (0)\n+2395C8 Comment Length        0000 (0)\n+2395CA Disk Start            0000 (0)\n+2395CC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237239 Ext File Attributes   00000000 (0)\n-23723D Local Header Offset   0019D9A6 (1694118)\n-237241 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2395CE Ext File Attributes   00000000 (0)\n+2395D2 Local Header Offset   001A4260 (1720928)\n+2395D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237241: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2395D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237288 CENTRAL HEADER #1563  02014B50 (33639248)\n-23728C Created Zip Spec      14 (20) '2.0'\n-23728D Created OS            00 (0) 'MS-DOS'\n-23728E Extract Zip Spec      14 (20) '2.0'\n-23728F Extract OS            00 (0) 'MS-DOS'\n-237290 General Purpose Flag  0808 (2056)\n+2395FD CENTRAL HEADER #1563  02014B50 (33639248)\n+239601 Created Zip Spec      14 (20) '2.0'\n+239602 Created OS            00 (0) 'MS-DOS'\n+239603 Extract Zip Spec      14 (20) '2.0'\n+239604 Extract OS            00 (0) 'MS-DOS'\n+239605 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237292 Compression Method    0008 (8) 'Deflated'\n-237294 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237298 CRC                   08DC2FC0 (148647872)\n-23729C Compressed Size       0000031C (796)\n-2372A0 Uncompressed Size     00000709 (1801)\n-2372A4 Filename Length       004D (77)\n-2372A6 Extra Length          0000 (0)\n-2372A8 Comment Length        0000 (0)\n-2372AA Disk Start            0000 (0)\n-2372AC Int File Attributes   0000 (0)\n+239607 Compression Method    0008 (8) 'Deflated'\n+239609 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23960D CRC                   7563AE4D (1969466957)\n+239611 Compressed Size       0000043B (1083)\n+239615 Uncompressed Size     00000DD2 (3538)\n+239619 Filename Length       003F (63)\n+23961B Extra Length          0000 (0)\n+23961D Comment Length        0000 (0)\n+23961F Disk Start            0000 (0)\n+239621 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2372AE Ext File Attributes   00000000 (0)\n-2372B2 Local Header Offset   0019DD25 (1695013)\n-2372B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239623 Ext File Attributes   00000000 (0)\n+239627 Local Header Offset   001A42B7 (1721015)\n+23962B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2372B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23962B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237303 CENTRAL HEADER #1564  02014B50 (33639248)\n-237307 Created Zip Spec      14 (20) '2.0'\n-237308 Created OS            00 (0) 'MS-DOS'\n-237309 Extract Zip Spec      14 (20) '2.0'\n-23730A Extract OS            00 (0) 'MS-DOS'\n-23730B General Purpose Flag  0808 (2056)\n+23966A CENTRAL HEADER #1564  02014B50 (33639248)\n+23966E Created Zip Spec      14 (20) '2.0'\n+23966F Created OS            00 (0) 'MS-DOS'\n+239670 Extract Zip Spec      14 (20) '2.0'\n+239671 Extract OS            00 (0) 'MS-DOS'\n+239672 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23730D Compression Method    0008 (8) 'Deflated'\n-23730F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237313 CRC                   816C5FDD (2171363293)\n-237317 Compressed Size       0000031B (795)\n-23731B Uncompressed Size     000006E4 (1764)\n-23731F Filename Length       0049 (73)\n-237321 Extra Length          0000 (0)\n-237323 Comment Length        0000 (0)\n-237325 Disk Start            0000 (0)\n-237327 Int File Attributes   0000 (0)\n+239674 Compression Method    0008 (8) 'Deflated'\n+239676 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23967A CRC                   470A630B (1191863051)\n+23967E Compressed Size       0000039B (923)\n+239682 Uncompressed Size     00000BA4 (2980)\n+239686 Filename Length       0040 (64)\n+239688 Extra Length          0000 (0)\n+23968A Comment Length        0000 (0)\n+23968C Disk Start            0000 (0)\n+23968E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237329 Ext File Attributes   00000000 (0)\n-23732D Local Header Offset   0019E0BC (1695932)\n-237331 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239690 Ext File Attributes   00000000 (0)\n+239694 Local Header Offset   001A475F (1722207)\n+239698 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237331: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239698: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23737A CENTRAL HEADER #1565  02014B50 (33639248)\n-23737E Created Zip Spec      14 (20) '2.0'\n-23737F Created OS            00 (0) 'MS-DOS'\n-237380 Extract Zip Spec      14 (20) '2.0'\n-237381 Extract OS            00 (0) 'MS-DOS'\n-237382 General Purpose Flag  0808 (2056)\n+2396D8 CENTRAL HEADER #1565  02014B50 (33639248)\n+2396DC Created Zip Spec      14 (20) '2.0'\n+2396DD Created OS            00 (0) 'MS-DOS'\n+2396DE Extract Zip Spec      14 (20) '2.0'\n+2396DF Extract OS            00 (0) 'MS-DOS'\n+2396E0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237384 Compression Method    0008 (8) 'Deflated'\n-237386 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23738A CRC                   8DA313D4 (2376274900)\n-23738E Compressed Size       00000316 (790)\n-237392 Uncompressed Size     000006A1 (1697)\n-237396 Filename Length       0045 (69)\n-237398 Extra Length          0000 (0)\n-23739A Comment Length        0000 (0)\n-23739C Disk Start            0000 (0)\n-23739E Int File Attributes   0000 (0)\n+2396E2 Compression Method    0008 (8) 'Deflated'\n+2396E4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2396E8 CRC                   5EE3566D (1591957101)\n+2396EC Compressed Size       000002EC (748)\n+2396F0 Uncompressed Size     00000721 (1825)\n+2396F4 Filename Length       003D (61)\n+2396F6 Extra Length          0000 (0)\n+2396F8 Comment Length        0000 (0)\n+2396FA Disk Start            0000 (0)\n+2396FC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2373A0 Ext File Attributes   00000000 (0)\n-2373A4 Local Header Offset   0019E44E (1696846)\n-2373A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2396FE Ext File Attributes   00000000 (0)\n+239702 Local Header Offset   001A4B68 (1723240)\n+239706 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2373A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239706: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2373ED CENTRAL HEADER #1566  02014B50 (33639248)\n-2373F1 Created Zip Spec      14 (20) '2.0'\n-2373F2 Created OS            00 (0) 'MS-DOS'\n-2373F3 Extract Zip Spec      14 (20) '2.0'\n-2373F4 Extract OS            00 (0) 'MS-DOS'\n-2373F5 General Purpose Flag  0808 (2056)\n+239743 CENTRAL HEADER #1566  02014B50 (33639248)\n+239747 Created Zip Spec      14 (20) '2.0'\n+239748 Created OS            00 (0) 'MS-DOS'\n+239749 Extract Zip Spec      14 (20) '2.0'\n+23974A Extract OS            00 (0) 'MS-DOS'\n+23974B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2373F7 Compression Method    0008 (8) 'Deflated'\n-2373F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2373FD CRC                   73C20F72 (1942097778)\n-237401 Compressed Size       000002ED (749)\n-237405 Uncompressed Size     000005F3 (1523)\n-237409 Filename Length       0043 (67)\n-23740B Extra Length          0000 (0)\n-23740D Comment Length        0000 (0)\n-23740F Disk Start            0000 (0)\n-237411 Int File Attributes   0000 (0)\n+23974D Compression Method    0008 (8) 'Deflated'\n+23974F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239753 CRC                   00000000 (0)\n+239757 Compressed Size       00000002 (2)\n+23975B Uncompressed Size     00000000 (0)\n+23975F Filename Length       0039 (57)\n+239761 Extra Length          0000 (0)\n+239763 Comment Length        0000 (0)\n+239765 Disk Start            0000 (0)\n+239767 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237413 Ext File Attributes   00000000 (0)\n-237417 Local Header Offset   0019E7D7 (1697751)\n-23741B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239769 Ext File Attributes   00000000 (0)\n+23976D Local Header Offset   001A4EBF (1724095)\n+239771 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23741B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239771: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23745E CENTRAL HEADER #1567  02014B50 (33639248)\n-237462 Created Zip Spec      14 (20) '2.0'\n-237463 Created OS            00 (0) 'MS-DOS'\n-237464 Extract Zip Spec      14 (20) '2.0'\n-237465 Extract OS            00 (0) 'MS-DOS'\n-237466 General Purpose Flag  0808 (2056)\n+2397AA CENTRAL HEADER #1567  02014B50 (33639248)\n+2397AE Created Zip Spec      14 (20) '2.0'\n+2397AF Created OS            00 (0) 'MS-DOS'\n+2397B0 Extract Zip Spec      14 (20) '2.0'\n+2397B1 Extract OS            00 (0) 'MS-DOS'\n+2397B2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237468 Compression Method    0008 (8) 'Deflated'\n-23746A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23746E CRC                   51EB89D1 (1374390737)\n-237472 Compressed Size       0000030B (779)\n-237476 Uncompressed Size     00000676 (1654)\n-23747A Filename Length       0048 (72)\n-23747C Extra Length          0000 (0)\n-23747E Comment Length        0000 (0)\n-237480 Disk Start            0000 (0)\n-237482 Int File Attributes   0000 (0)\n+2397B4 Compression Method    0008 (8) 'Deflated'\n+2397B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2397BA CRC                   2D88023E (763888190)\n+2397BE Compressed Size       0000036F (879)\n+2397C2 Uncompressed Size     00000818 (2072)\n+2397C6 Filename Length       0040 (64)\n+2397C8 Extra Length          0000 (0)\n+2397CA Comment Length        0000 (0)\n+2397CC Disk Start            0000 (0)\n+2397CE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237484 Ext File Attributes   00000000 (0)\n-237488 Local Header Offset   0019EB35 (1698613)\n-23748C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2397D0 Ext File Attributes   00000000 (0)\n+2397D4 Local Header Offset   001A4F28 (1724200)\n+2397D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23748C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2397D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2374D4 CENTRAL HEADER #1568  02014B50 (33639248)\n-2374D8 Created Zip Spec      14 (20) '2.0'\n-2374D9 Created OS            00 (0) 'MS-DOS'\n-2374DA Extract Zip Spec      14 (20) '2.0'\n-2374DB Extract OS            00 (0) 'MS-DOS'\n-2374DC General Purpose Flag  0808 (2056)\n+239818 CENTRAL HEADER #1568  02014B50 (33639248)\n+23981C Created Zip Spec      14 (20) '2.0'\n+23981D Created OS            00 (0) 'MS-DOS'\n+23981E Extract Zip Spec      14 (20) '2.0'\n+23981F Extract OS            00 (0) 'MS-DOS'\n+239820 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2374DE Compression Method    0008 (8) 'Deflated'\n-2374E0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2374E4 CRC                   DBD89AB9 (3688405689)\n-2374E8 Compressed Size       000002F2 (754)\n-2374EC Uncompressed Size     00000615 (1557)\n-2374F0 Filename Length       0045 (69)\n-2374F2 Extra Length          0000 (0)\n-2374F4 Comment Length        0000 (0)\n-2374F6 Disk Start            0000 (0)\n-2374F8 Int File Attributes   0000 (0)\n+239822 Compression Method    0008 (8) 'Deflated'\n+239824 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239828 CRC                   FCB2ABC5 (4239567813)\n+23982C Compressed Size       0000004C (76)\n+239830 Uncompressed Size     0000004F (79)\n+239834 Filename Length       0047 (71)\n+239836 Extra Length          0000 (0)\n+239838 Comment Length        0000 (0)\n+23983A Disk Start            0000 (0)\n+23983C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2374FA Ext File Attributes   00000000 (0)\n-2374FE Local Header Offset   0019EEB6 (1699510)\n-237502 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23983E Ext File Attributes   00000000 (0)\n+239842 Local Header Offset   001A5305 (1725189)\n+239846 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237502: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239846: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237547 CENTRAL HEADER #1569  02014B50 (33639248)\n-23754B Created Zip Spec      14 (20) '2.0'\n-23754C Created OS            00 (0) 'MS-DOS'\n-23754D Extract Zip Spec      14 (20) '2.0'\n-23754E Extract OS            00 (0) 'MS-DOS'\n-23754F General Purpose Flag  0808 (2056)\n+23988D CENTRAL HEADER #1569  02014B50 (33639248)\n+239891 Created Zip Spec      14 (20) '2.0'\n+239892 Created OS            00 (0) 'MS-DOS'\n+239893 Extract Zip Spec      14 (20) '2.0'\n+239894 Extract OS            00 (0) 'MS-DOS'\n+239895 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237551 Compression Method    0008 (8) 'Deflated'\n-237553 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237557 CRC                   608B08E5 (1619724517)\n-23755B Compressed Size       000002D5 (725)\n-23755F Uncompressed Size     000005BC (1468)\n-237563 Filename Length       0049 (73)\n-237565 Extra Length          0000 (0)\n-237567 Comment Length        0000 (0)\n-237569 Disk Start            0000 (0)\n-23756B Int File Attributes   0000 (0)\n+239897 Compression Method    0008 (8) 'Deflated'\n+239899 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23989D CRC                   00000000 (0)\n+2398A1 Compressed Size       00000002 (2)\n+2398A5 Uncompressed Size     00000000 (0)\n+2398A9 Filename Length       002B (43)\n+2398AB Extra Length          0000 (0)\n+2398AD Comment Length        0000 (0)\n+2398AF Disk Start            0000 (0)\n+2398B1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23756D Ext File Attributes   00000000 (0)\n-237571 Local Header Offset   0019F21B (1700379)\n-237575 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2398B3 Ext File Attributes   00000000 (0)\n+2398B7 Local Header Offset   001A53C6 (1725382)\n+2398BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237575: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2398BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2375BE CENTRAL HEADER #1570  02014B50 (33639248)\n-2375C2 Created Zip Spec      14 (20) '2.0'\n-2375C3 Created OS            00 (0) 'MS-DOS'\n-2375C4 Extract Zip Spec      14 (20) '2.0'\n-2375C5 Extract OS            00 (0) 'MS-DOS'\n-2375C6 General Purpose Flag  0808 (2056)\n+2398E6 CENTRAL HEADER #1570  02014B50 (33639248)\n+2398EA Created Zip Spec      14 (20) '2.0'\n+2398EB Created OS            00 (0) 'MS-DOS'\n+2398EC Extract Zip Spec      14 (20) '2.0'\n+2398ED Extract OS            00 (0) 'MS-DOS'\n+2398EE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2375C8 Compression Method    0008 (8) 'Deflated'\n-2375CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2375CE CRC                   86844A74 (2256816756)\n-2375D2 Compressed Size       000002FB (763)\n-2375D6 Uncompressed Size     00000649 (1609)\n-2375DA Filename Length       0049 (73)\n-2375DC Extra Length          0000 (0)\n-2375DE Comment Length        0000 (0)\n-2375E0 Disk Start            0000 (0)\n-2375E2 Int File Attributes   0000 (0)\n+2398F0 Compression Method    0008 (8) 'Deflated'\n+2398F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2398F6 CRC                   00000000 (0)\n+2398FA Compressed Size       00000002 (2)\n+2398FE Uncompressed Size     00000000 (0)\n+239902 Filename Length       0033 (51)\n+239904 Extra Length          0000 (0)\n+239906 Comment Length        0000 (0)\n+239908 Disk Start            0000 (0)\n+23990A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2375E4 Ext File Attributes   00000000 (0)\n-2375E8 Local Header Offset   0019F567 (1701223)\n-2375EC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23990C Ext File Attributes   00000000 (0)\n+239910 Local Header Offset   001A5421 (1725473)\n+239914 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2375EC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239914: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237635 CENTRAL HEADER #1571  02014B50 (33639248)\n-237639 Created Zip Spec      14 (20) '2.0'\n-23763A Created OS            00 (0) 'MS-DOS'\n-23763B Extract Zip Spec      14 (20) '2.0'\n-23763C Extract OS            00 (0) 'MS-DOS'\n-23763D General Purpose Flag  0808 (2056)\n+239947 CENTRAL HEADER #1571  02014B50 (33639248)\n+23994B Created Zip Spec      14 (20) '2.0'\n+23994C Created OS            00 (0) 'MS-DOS'\n+23994D Extract Zip Spec      14 (20) '2.0'\n+23994E Extract OS            00 (0) 'MS-DOS'\n+23994F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23763F Compression Method    0008 (8) 'Deflated'\n-237641 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237645 CRC                   1702371E (386021150)\n-237649 Compressed Size       00000359 (857)\n-23764D Uncompressed Size     000007D9 (2009)\n-237651 Filename Length       004C (76)\n-237653 Extra Length          0000 (0)\n-237655 Comment Length        0000 (0)\n-237657 Disk Start            0000 (0)\n-237659 Int File Attributes   0000 (0)\n+239951 Compression Method    0008 (8) 'Deflated'\n+239953 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239957 CRC                   770B2AC5 (1997220549)\n+23995B Compressed Size       0000062A (1578)\n+23995F Uncompressed Size     0000159B (5531)\n+239963 Filename Length       0056 (86)\n+239965 Extra Length          0000 (0)\n+239967 Comment Length        0000 (0)\n+239969 Disk Start            0000 (0)\n+23996B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23765B Ext File Attributes   00000000 (0)\n-23765F Local Header Offset   0019F8D9 (1702105)\n-237663 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23996D Ext File Attributes   00000000 (0)\n+239971 Local Header Offset   001A5484 (1725572)\n+239975 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237663: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239975: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2376AF CENTRAL HEADER #1572  02014B50 (33639248)\n-2376B3 Created Zip Spec      14 (20) '2.0'\n-2376B4 Created OS            00 (0) 'MS-DOS'\n-2376B5 Extract Zip Spec      14 (20) '2.0'\n-2376B6 Extract OS            00 (0) 'MS-DOS'\n-2376B7 General Purpose Flag  0808 (2056)\n+2399CB CENTRAL HEADER #1572  02014B50 (33639248)\n+2399CF Created Zip Spec      14 (20) '2.0'\n+2399D0 Created OS            00 (0) 'MS-DOS'\n+2399D1 Extract Zip Spec      14 (20) '2.0'\n+2399D2 Extract OS            00 (0) 'MS-DOS'\n+2399D3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2376B9 Compression Method    0008 (8) 'Deflated'\n-2376BB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2376BF CRC                   00000000 (0)\n-2376C3 Compressed Size       00000002 (2)\n-2376C7 Uncompressed Size     00000000 (0)\n-2376CB Filename Length       0027 (39)\n-2376CD Extra Length          0000 (0)\n-2376CF Comment Length        0000 (0)\n-2376D1 Disk Start            0000 (0)\n-2376D3 Int File Attributes   0000 (0)\n+2399D5 Compression Method    0008 (8) 'Deflated'\n+2399D7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2399DB CRC                   680E4C03 (1745767427)\n+2399DF Compressed Size       000005C7 (1479)\n+2399E3 Uncompressed Size     00001580 (5504)\n+2399E7 Filename Length       0057 (87)\n+2399E9 Extra Length          0000 (0)\n+2399EB Comment Length        0000 (0)\n+2399ED Disk Start            0000 (0)\n+2399EF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2376D5 Ext File Attributes   00000000 (0)\n-2376D9 Local Header Offset   0019FCAC (1703084)\n-2376DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2399F1 Ext File Attributes   00000000 (0)\n+2399F5 Local Header Offset   001A5B32 (1727282)\n+2399F9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2376DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2399F9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237704 CENTRAL HEADER #1573  02014B50 (33639248)\n-237708 Created Zip Spec      14 (20) '2.0'\n-237709 Created OS            00 (0) 'MS-DOS'\n-23770A Extract Zip Spec      14 (20) '2.0'\n-23770B Extract OS            00 (0) 'MS-DOS'\n-23770C General Purpose Flag  0808 (2056)\n+239A50 CENTRAL HEADER #1573  02014B50 (33639248)\n+239A54 Created Zip Spec      14 (20) '2.0'\n+239A55 Created OS            00 (0) 'MS-DOS'\n+239A56 Extract Zip Spec      14 (20) '2.0'\n+239A57 Extract OS            00 (0) 'MS-DOS'\n+239A58 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23770E Compression Method    0008 (8) 'Deflated'\n-237710 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237714 CRC                   77A7867D (2007467645)\n-237718 Compressed Size       00000336 (822)\n-23771C Uncompressed Size     000007A2 (1954)\n-237720 Filename Length       0046 (70)\n-237722 Extra Length          0000 (0)\n-237724 Comment Length        0000 (0)\n-237726 Disk Start            0000 (0)\n-237728 Int File Attributes   0000 (0)\n+239A5A Compression Method    0008 (8) 'Deflated'\n+239A5C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239A60 CRC                   CECB8E17 (3469446679)\n+239A64 Compressed Size       00000339 (825)\n+239A68 Uncompressed Size     000007B4 (1972)\n+239A6C Filename Length       0058 (88)\n+239A6E Extra Length          0000 (0)\n+239A70 Comment Length        0000 (0)\n+239A72 Disk Start            0000 (0)\n+239A74 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23772A Ext File Attributes   00000000 (0)\n-23772E Local Header Offset   0019FD03 (1703171)\n-237732 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239A76 Ext File Attributes   00000000 (0)\n+239A7A Local Header Offset   001A617E (1728894)\n+239A7E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237732: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239A7E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237778 CENTRAL HEADER #1574  02014B50 (33639248)\n-23777C Created Zip Spec      14 (20) '2.0'\n-23777D Created OS            00 (0) 'MS-DOS'\n-23777E Extract Zip Spec      14 (20) '2.0'\n-23777F Extract OS            00 (0) 'MS-DOS'\n-237780 General Purpose Flag  0808 (2056)\n+239AD6 CENTRAL HEADER #1574  02014B50 (33639248)\n+239ADA Created Zip Spec      14 (20) '2.0'\n+239ADB Created OS            00 (0) 'MS-DOS'\n+239ADC Extract Zip Spec      14 (20) '2.0'\n+239ADD Extract OS            00 (0) 'MS-DOS'\n+239ADE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237782 Compression Method    0008 (8) 'Deflated'\n-237784 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237788 CRC                   5433235C (1412637532)\n-23778C Compressed Size       000003B0 (944)\n-237790 Uncompressed Size     00000901 (2305)\n-237794 Filename Length       0046 (70)\n-237796 Extra Length          0000 (0)\n-237798 Comment Length        0000 (0)\n-23779A Disk Start            0000 (0)\n-23779C Int File Attributes   0000 (0)\n+239AE0 Compression Method    0008 (8) 'Deflated'\n+239AE2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239AE6 CRC                   16AE2BE0 (380513248)\n+239AEA Compressed Size       000005A0 (1440)\n+239AEE Uncompressed Size     0000133A (4922)\n+239AF2 Filename Length       0052 (82)\n+239AF4 Extra Length          0000 (0)\n+239AF6 Comment Length        0000 (0)\n+239AF8 Disk Start            0000 (0)\n+239AFA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23779E Ext File Attributes   00000000 (0)\n-2377A2 Local Header Offset   001A00AD (1704109)\n-2377A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239AFC Ext File Attributes   00000000 (0)\n+239B00 Local Header Offset   001A653D (1729853)\n+239B04 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2377A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239B04: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2377EC CENTRAL HEADER #1575  02014B50 (33639248)\n-2377F0 Created Zip Spec      14 (20) '2.0'\n-2377F1 Created OS            00 (0) 'MS-DOS'\n-2377F2 Extract Zip Spec      14 (20) '2.0'\n-2377F3 Extract OS            00 (0) 'MS-DOS'\n-2377F4 General Purpose Flag  0808 (2056)\n+239B56 CENTRAL HEADER #1575  02014B50 (33639248)\n+239B5A Created Zip Spec      14 (20) '2.0'\n+239B5B Created OS            00 (0) 'MS-DOS'\n+239B5C Extract Zip Spec      14 (20) '2.0'\n+239B5D Extract OS            00 (0) 'MS-DOS'\n+239B5E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2377F6 Compression Method    0008 (8) 'Deflated'\n-2377F8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2377FC CRC                   1A06EC84 (436661380)\n-237800 Compressed Size       000002F4 (756)\n-237804 Uncompressed Size     00000647 (1607)\n-237808 Filename Length       0047 (71)\n-23780A Extra Length          0000 (0)\n-23780C Comment Length        0000 (0)\n-23780E Disk Start            0000 (0)\n-237810 Int File Attributes   0000 (0)\n+239B60 Compression Method    0008 (8) 'Deflated'\n+239B62 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239B66 CRC                   71435F02 (1900240642)\n+239B6A Compressed Size       00000620 (1568)\n+239B6E Uncompressed Size     0000159D (5533)\n+239B72 Filename Length       0053 (83)\n+239B74 Extra Length          0000 (0)\n+239B76 Comment Length        0000 (0)\n+239B78 Disk Start            0000 (0)\n+239B7A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237812 Ext File Attributes   00000000 (0)\n-237816 Local Header Offset   001A04D1 (1705169)\n-23781A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239B7C Ext File Attributes   00000000 (0)\n+239B80 Local Header Offset   001A6B5D (1731421)\n+239B84 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23781A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239B84: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237861 CENTRAL HEADER #1576  02014B50 (33639248)\n-237865 Created Zip Spec      14 (20) '2.0'\n-237866 Created OS            00 (0) 'MS-DOS'\n-237867 Extract Zip Spec      14 (20) '2.0'\n-237868 Extract OS            00 (0) 'MS-DOS'\n-237869 General Purpose Flag  0808 (2056)\n+239BD7 CENTRAL HEADER #1576  02014B50 (33639248)\n+239BDB Created Zip Spec      14 (20) '2.0'\n+239BDC Created OS            00 (0) 'MS-DOS'\n+239BDD Extract Zip Spec      14 (20) '2.0'\n+239BDE Extract OS            00 (0) 'MS-DOS'\n+239BDF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23786B Compression Method    0008 (8) 'Deflated'\n-23786D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237871 CRC                   EBC07089 (3955257481)\n-237875 Compressed Size       000003EE (1006)\n-237879 Uncompressed Size     00000B84 (2948)\n-23787D Filename Length       003B (59)\n-23787F Extra Length          0000 (0)\n-237881 Comment Length        0000 (0)\n-237883 Disk Start            0000 (0)\n-237885 Int File Attributes   0000 (0)\n+239BE1 Compression Method    0008 (8) 'Deflated'\n+239BE3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239BE7 CRC                   A92A8781 (2838136705)\n+239BEB Compressed Size       00000429 (1065)\n+239BEF Uncompressed Size     000009C6 (2502)\n+239BF3 Filename Length       0054 (84)\n+239BF5 Extra Length          0000 (0)\n+239BF7 Comment Length        0000 (0)\n+239BF9 Disk Start            0000 (0)\n+239BFB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237887 Ext File Attributes   00000000 (0)\n-23788B Local Header Offset   001A083A (1706042)\n-23788F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239BFD Ext File Attributes   00000000 (0)\n+239C01 Local Header Offset   001A71FE (1733118)\n+239C05 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23788F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239C05: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2378CA CENTRAL HEADER #1577  02014B50 (33639248)\n-2378CE Created Zip Spec      14 (20) '2.0'\n-2378CF Created OS            00 (0) 'MS-DOS'\n-2378D0 Extract Zip Spec      14 (20) '2.0'\n-2378D1 Extract OS            00 (0) 'MS-DOS'\n-2378D2 General Purpose Flag  0808 (2056)\n+239C59 CENTRAL HEADER #1577  02014B50 (33639248)\n+239C5D Created Zip Spec      14 (20) '2.0'\n+239C5E Created OS            00 (0) 'MS-DOS'\n+239C5F Extract Zip Spec      14 (20) '2.0'\n+239C60 Extract OS            00 (0) 'MS-DOS'\n+239C61 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2378D4 Compression Method    0008 (8) 'Deflated'\n-2378D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2378DA CRC                   BE6D297E (3194825086)\n-2378DE Compressed Size       00000322 (802)\n-2378E2 Uncompressed Size     00000881 (2177)\n-2378E6 Filename Length       003C (60)\n-2378E8 Extra Length          0000 (0)\n-2378EA Comment Length        0000 (0)\n-2378EC Disk Start            0000 (0)\n-2378EE Int File Attributes   0000 (0)\n+239C63 Compression Method    0008 (8) 'Deflated'\n+239C65 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239C69 CRC                   7EEE431C (2129543964)\n+239C6D Compressed Size       0000091A (2330)\n+239C71 Uncompressed Size     00002099 (8345)\n+239C75 Filename Length       0045 (69)\n+239C77 Extra Length          0000 (0)\n+239C79 Comment Length        0000 (0)\n+239C7B Disk Start            0000 (0)\n+239C7D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2378F0 Ext File Attributes   00000000 (0)\n-2378F4 Local Header Offset   001A0C91 (1707153)\n-2378F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239C7F Ext File Attributes   00000000 (0)\n+239C83 Local Header Offset   001A76A9 (1734313)\n+239C87 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2378F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239C87: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237934 CENTRAL HEADER #1578  02014B50 (33639248)\n-237938 Created Zip Spec      14 (20) '2.0'\n-237939 Created OS            00 (0) 'MS-DOS'\n-23793A Extract Zip Spec      14 (20) '2.0'\n-23793B Extract OS            00 (0) 'MS-DOS'\n-23793C General Purpose Flag  0808 (2056)\n+239CCC CENTRAL HEADER #1578  02014B50 (33639248)\n+239CD0 Created Zip Spec      14 (20) '2.0'\n+239CD1 Created OS            00 (0) 'MS-DOS'\n+239CD2 Extract Zip Spec      14 (20) '2.0'\n+239CD3 Extract OS            00 (0) 'MS-DOS'\n+239CD4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23793E Compression Method    0008 (8) 'Deflated'\n-237940 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237944 CRC                   AD8F41D0 (2911846864)\n-237948 Compressed Size       00000318 (792)\n-23794C Uncompressed Size     0000075D (1885)\n-237950 Filename Length       003D (61)\n-237952 Extra Length          0000 (0)\n-237954 Comment Length        0000 (0)\n-237956 Disk Start            0000 (0)\n-237958 Int File Attributes   0000 (0)\n+239CD6 Compression Method    0008 (8) 'Deflated'\n+239CD8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239CDC CRC                   E46DD072 (3832402034)\n+239CE0 Compressed Size       000003E8 (1000)\n+239CE4 Uncompressed Size     00000A55 (2645)\n+239CE8 Filename Length       0050 (80)\n+239CEA Extra Length          0000 (0)\n+239CEC Comment Length        0000 (0)\n+239CEE Disk Start            0000 (0)\n+239CF0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23795A Ext File Attributes   00000000 (0)\n-23795E Local Header Offset   001A101D (1708061)\n-237962 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239CF2 Ext File Attributes   00000000 (0)\n+239CF6 Local Header Offset   001A8036 (1736758)\n+239CFA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237962: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239CFA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23799F CENTRAL HEADER #1579  02014B50 (33639248)\n-2379A3 Created Zip Spec      14 (20) '2.0'\n-2379A4 Created OS            00 (0) 'MS-DOS'\n-2379A5 Extract Zip Spec      14 (20) '2.0'\n-2379A6 Extract OS            00 (0) 'MS-DOS'\n-2379A7 General Purpose Flag  0808 (2056)\n+239D4A CENTRAL HEADER #1579  02014B50 (33639248)\n+239D4E Created Zip Spec      14 (20) '2.0'\n+239D4F Created OS            00 (0) 'MS-DOS'\n+239D50 Extract Zip Spec      14 (20) '2.0'\n+239D51 Extract OS            00 (0) 'MS-DOS'\n+239D52 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2379A9 Compression Method    0008 (8) 'Deflated'\n-2379AB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2379AF CRC                   00000000 (0)\n-2379B3 Compressed Size       00000002 (2)\n-2379B7 Uncompressed Size     00000000 (0)\n-2379BB Filename Length       002D (45)\n-2379BD Extra Length          0000 (0)\n-2379BF Comment Length        0000 (0)\n-2379C1 Disk Start            0000 (0)\n-2379C3 Int File Attributes   0000 (0)\n+239D54 Compression Method    0008 (8) 'Deflated'\n+239D56 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239D5A CRC                   00000000 (0)\n+239D5E Compressed Size       00000002 (2)\n+239D62 Uncompressed Size     00000000 (0)\n+239D66 Filename Length       003B (59)\n+239D68 Extra Length          0000 (0)\n+239D6A Comment Length        0000 (0)\n+239D6C Disk Start            0000 (0)\n+239D6E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2379C5 Ext File Attributes   00000000 (0)\n-2379C9 Local Header Offset   001A13A0 (1708960)\n-2379CD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239D70 Ext File Attributes   00000000 (0)\n+239D74 Local Header Offset   001A849C (1737884)\n+239D78 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2379CD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239D78: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2379FA CENTRAL HEADER #1580  02014B50 (33639248)\n-2379FE Created Zip Spec      14 (20) '2.0'\n-2379FF Created OS            00 (0) 'MS-DOS'\n-237A00 Extract Zip Spec      14 (20) '2.0'\n-237A01 Extract OS            00 (0) 'MS-DOS'\n-237A02 General Purpose Flag  0808 (2056)\n+239DB3 CENTRAL HEADER #1580  02014B50 (33639248)\n+239DB7 Created Zip Spec      14 (20) '2.0'\n+239DB8 Created OS            00 (0) 'MS-DOS'\n+239DB9 Extract Zip Spec      14 (20) '2.0'\n+239DBA Extract OS            00 (0) 'MS-DOS'\n+239DBB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237A04 Compression Method    0008 (8) 'Deflated'\n-237A06 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237A0A CRC                   6029E0CC (1613357260)\n-237A0E Compressed Size       0000040D (1037)\n-237A12 Uncompressed Size     00000D7E (3454)\n-237A16 Filename Length       0047 (71)\n-237A18 Extra Length          0000 (0)\n-237A1A Comment Length        0000 (0)\n-237A1C Disk Start            0000 (0)\n-237A1E Int File Attributes   0000 (0)\n+239DBD Compression Method    0008 (8) 'Deflated'\n+239DBF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239DC3 CRC                   3E2D4260 (1043153504)\n+239DC7 Compressed Size       000010B5 (4277)\n+239DCB Uncompressed Size     00007BD0 (31696)\n+239DCF Filename Length       0048 (72)\n+239DD1 Extra Length          0000 (0)\n+239DD3 Comment Length        0000 (0)\n+239DD5 Disk Start            0000 (0)\n+239DD7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237A20 Ext File Attributes   00000000 (0)\n-237A24 Local Header Offset   001A13FD (1709053)\n-237A28 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239DD9 Ext File Attributes   00000000 (0)\n+239DDD Local Header Offset   001A8507 (1737991)\n+239DE1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237A28: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239DE1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237A6F CENTRAL HEADER #1581  02014B50 (33639248)\n-237A73 Created Zip Spec      14 (20) '2.0'\n-237A74 Created OS            00 (0) 'MS-DOS'\n-237A75 Extract Zip Spec      14 (20) '2.0'\n-237A76 Extract OS            00 (0) 'MS-DOS'\n-237A77 General Purpose Flag  0808 (2056)\n+239E29 CENTRAL HEADER #1581  02014B50 (33639248)\n+239E2D Created Zip Spec      14 (20) '2.0'\n+239E2E Created OS            00 (0) 'MS-DOS'\n+239E2F Extract Zip Spec      14 (20) '2.0'\n+239E30 Extract OS            00 (0) 'MS-DOS'\n+239E31 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237A79 Compression Method    0008 (8) 'Deflated'\n-237A7B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237A7F CRC                   5EB75116 (1589072150)\n-237A83 Compressed Size       000003C1 (961)\n-237A87 Uncompressed Size     00000CEE (3310)\n-237A8B Filename Length       0048 (72)\n-237A8D Extra Length          0000 (0)\n-237A8F Comment Length        0000 (0)\n-237A91 Disk Start            0000 (0)\n-237A93 Int File Attributes   0000 (0)\n+239E33 Compression Method    0008 (8) 'Deflated'\n+239E35 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239E39 CRC                   C5D2D6A4 (3318929060)\n+239E3D Compressed Size       000025B2 (9650)\n+239E41 Uncompressed Size     00018FCD (102349)\n+239E45 Filename Length       004B (75)\n+239E47 Extra Length          0000 (0)\n+239E49 Comment Length        0000 (0)\n+239E4B Disk Start            0000 (0)\n+239E4D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237A95 Ext File Attributes   00000000 (0)\n-237A99 Local Header Offset   001A187F (1710207)\n-237A9D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239E4F Ext File Attributes   00000000 (0)\n+239E53 Local Header Offset   001A9632 (1742386)\n+239E57 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237A9D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239E57: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237AE5 CENTRAL HEADER #1582  02014B50 (33639248)\n-237AE9 Created Zip Spec      14 (20) '2.0'\n-237AEA Created OS            00 (0) 'MS-DOS'\n-237AEB Extract Zip Spec      14 (20) '2.0'\n-237AEC Extract OS            00 (0) 'MS-DOS'\n-237AED General Purpose Flag  0808 (2056)\n+239EA2 CENTRAL HEADER #1582  02014B50 (33639248)\n+239EA6 Created Zip Spec      14 (20) '2.0'\n+239EA7 Created OS            00 (0) 'MS-DOS'\n+239EA8 Extract Zip Spec      14 (20) '2.0'\n+239EA9 Extract OS            00 (0) 'MS-DOS'\n+239EAA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237AEF Compression Method    0008 (8) 'Deflated'\n-237AF1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237AF5 CRC                   2DE55F52 (770006866)\n-237AF9 Compressed Size       0000032F (815)\n-237AFD Uncompressed Size     000007A3 (1955)\n-237B01 Filename Length       0049 (73)\n-237B03 Extra Length          0000 (0)\n-237B05 Comment Length        0000 (0)\n-237B07 Disk Start            0000 (0)\n-237B09 Int File Attributes   0000 (0)\n+239EAC Compression Method    0008 (8) 'Deflated'\n+239EAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239EB2 CRC                   812B2402 (2167088130)\n+239EB6 Compressed Size       0000026F (623)\n+239EBA Uncompressed Size     0000048E (1166)\n+239EBE Filename Length       000E (14)\n+239EC0 Extra Length          0000 (0)\n+239EC2 Comment Length        0000 (0)\n+239EC4 Disk Start            0000 (0)\n+239EC6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237B0B Ext File Attributes   00000000 (0)\n-237B0F Local Header Offset   001A1CB6 (1711286)\n-237B13 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239EC8 Ext File Attributes   00000000 (0)\n+239ECC Local Header Offset   001ABC5D (1752157)\n+239ED0 Filename              'XXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237B13: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239ED0: Filename 'XXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237B5C CENTRAL HEADER #1583  02014B50 (33639248)\n-237B60 Created Zip Spec      14 (20) '2.0'\n-237B61 Created OS            00 (0) 'MS-DOS'\n-237B62 Extract Zip Spec      14 (20) '2.0'\n-237B63 Extract OS            00 (0) 'MS-DOS'\n-237B64 General Purpose Flag  0808 (2056)\n+239EDE CENTRAL HEADER #1583  02014B50 (33639248)\n+239EE2 Created Zip Spec      14 (20) '2.0'\n+239EE3 Created OS            00 (0) 'MS-DOS'\n+239EE4 Extract Zip Spec      14 (20) '2.0'\n+239EE5 Extract OS            00 (0) 'MS-DOS'\n+239EE6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237B66 Compression Method    0008 (8) 'Deflated'\n-237B68 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237B6C CRC                   00000000 (0)\n-237B70 Compressed Size       00000002 (2)\n-237B74 Uncompressed Size     00000000 (0)\n-237B78 Filename Length       0027 (39)\n-237B7A Extra Length          0000 (0)\n-237B7C Comment Length        0000 (0)\n-237B7E Disk Start            0000 (0)\n-237B80 Int File Attributes   0000 (0)\n+239EE8 Compression Method    0008 (8) 'Deflated'\n+239EEA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239EEE CRC                   79E45B46 (2045008710)\n+239EF2 Compressed Size       00000453 (1107)\n+239EF6 Uncompressed Size     00000B1D (2845)\n+239EFA Filename Length       0011 (17)\n+239EFC Extra Length          0000 (0)\n+239EFE Comment Length        0000 (0)\n+239F00 Disk Start            0000 (0)\n+239F02 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237B82 Ext File Attributes   00000000 (0)\n-237B86 Local Header Offset   001A205C (1712220)\n-237B8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239F04 Ext File Attributes   00000000 (0)\n+239F08 Local Header Offset   001ABF08 (1752840)\n+239F0C Filename              'XXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237B8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239F0C: Filename 'XXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237BB1 CENTRAL HEADER #1584  02014B50 (33639248)\n-237BB5 Created Zip Spec      14 (20) '2.0'\n-237BB6 Created OS            00 (0) 'MS-DOS'\n-237BB7 Extract Zip Spec      14 (20) '2.0'\n-237BB8 Extract OS            00 (0) 'MS-DOS'\n-237BB9 General Purpose Flag  0808 (2056)\n+239F1D CENTRAL HEADER #1584  02014B50 (33639248)\n+239F21 Created Zip Spec      14 (20) '2.0'\n+239F22 Created OS            00 (0) 'MS-DOS'\n+239F23 Extract Zip Spec      14 (20) '2.0'\n+239F24 Extract OS            00 (0) 'MS-DOS'\n+239F25 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237BBB Compression Method    0008 (8) 'Deflated'\n-237BBD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237BC1 CRC                   96641300 (2523140864)\n-237BC5 Compressed Size       0000049A (1178)\n-237BC9 Uncompressed Size     00000A4F (2639)\n-237BCD Filename Length       003A (58)\n-237BCF Extra Length          0000 (0)\n-237BD1 Comment Length        0000 (0)\n-237BD3 Disk Start            0000 (0)\n-237BD5 Int File Attributes   0000 (0)\n+239F27 Compression Method    0008 (8) 'Deflated'\n+239F29 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239F2D CRC                   00000000 (0)\n+239F31 Compressed Size       00000002 (2)\n+239F35 Uncompressed Size     00000000 (0)\n+239F39 Filename Length       003D (61)\n+239F3B Extra Length          0000 (0)\n+239F3D Comment Length        0000 (0)\n+239F3F Disk Start            0000 (0)\n+239F41 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237BD7 Ext File Attributes   00000000 (0)\n-237BDB Local Header Offset   001A20B3 (1712307)\n-237BDF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239F43 Ext File Attributes   00000000 (0)\n+239F47 Local Header Offset   001AC39A (1754010)\n+239F4B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237BDF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239F4B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237C19 CENTRAL HEADER #1585  02014B50 (33639248)\n-237C1D Created Zip Spec      14 (20) '2.0'\n-237C1E Created OS            00 (0) 'MS-DOS'\n-237C1F Extract Zip Spec      14 (20) '2.0'\n-237C20 Extract OS            00 (0) 'MS-DOS'\n-237C21 General Purpose Flag  0808 (2056)\n+239F88 CENTRAL HEADER #1585  02014B50 (33639248)\n+239F8C Created Zip Spec      14 (20) '2.0'\n+239F8D Created OS            00 (0) 'MS-DOS'\n+239F8E Extract Zip Spec      14 (20) '2.0'\n+239F8F Extract OS            00 (0) 'MS-DOS'\n+239F90 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237C23 Compression Method    0008 (8) 'Deflated'\n-237C25 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237C29 CRC                   70240B76 (1881410422)\n-237C2D Compressed Size       00000469 (1129)\n-237C31 Uncompressed Size     000011F6 (4598)\n-237C35 Filename Length       003B (59)\n-237C37 Extra Length          0000 (0)\n-237C39 Comment Length        0000 (0)\n-237C3B Disk Start            0000 (0)\n-237C3D Int File Attributes   0000 (0)\n+239F92 Compression Method    0008 (8) 'Deflated'\n+239F94 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+239F98 CRC                   A4C37506 (2764272902)\n+239F9C Compressed Size       000004EE (1262)\n+239FA0 Uncompressed Size     00000EA7 (3751)\n+239FA4 Filename Length       0044 (68)\n+239FA6 Extra Length          0000 (0)\n+239FA8 Comment Length        0000 (0)\n+239FAA Disk Start            0000 (0)\n+239FAC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237C3F Ext File Attributes   00000000 (0)\n-237C43 Local Header Offset   001A25B5 (1713589)\n-237C47 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+239FAE Ext File Attributes   00000000 (0)\n+239FB2 Local Header Offset   001AC407 (1754119)\n+239FB6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237C47: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x239FB6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237C82 CENTRAL HEADER #1586  02014B50 (33639248)\n-237C86 Created Zip Spec      14 (20) '2.0'\n-237C87 Created OS            00 (0) 'MS-DOS'\n-237C88 Extract Zip Spec      14 (20) '2.0'\n-237C89 Extract OS            00 (0) 'MS-DOS'\n-237C8A General Purpose Flag  0808 (2056)\n+239FFA CENTRAL HEADER #1586  02014B50 (33639248)\n+239FFE Created Zip Spec      14 (20) '2.0'\n+239FFF Created OS            00 (0) 'MS-DOS'\n+23A000 Extract Zip Spec      14 (20) '2.0'\n+23A001 Extract OS            00 (0) 'MS-DOS'\n+23A002 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237C8C Compression Method    0008 (8) 'Deflated'\n-237C8E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237C92 CRC                   8E4DF810 (2387474448)\n-237C96 Compressed Size       000003FA (1018)\n-237C9A Uncompressed Size     00000CEA (3306)\n-237C9E Filename Length       003C (60)\n-237CA0 Extra Length          0000 (0)\n-237CA2 Comment Length        0000 (0)\n-237CA4 Disk Start            0000 (0)\n-237CA6 Int File Attributes   0000 (0)\n+23A004 Compression Method    0008 (8) 'Deflated'\n+23A006 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A00A CRC                   A6E93060 (2800300128)\n+23A00E Compressed Size       0000004E (78)\n+23A012 Uncompressed Size     00000053 (83)\n+23A016 Filename Length       004B (75)\n+23A018 Extra Length          0000 (0)\n+23A01A Comment Length        0000 (0)\n+23A01C Disk Start            0000 (0)\n+23A01E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237CA8 Ext File Attributes   00000000 (0)\n-237CAC Local Header Offset   001A2A87 (1714823)\n-237CB0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A020 Ext File Attributes   00000000 (0)\n+23A024 Local Header Offset   001AC967 (1755495)\n+23A028 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237CB0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A028: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237CEC CENTRAL HEADER #1587  02014B50 (33639248)\n-237CF0 Created Zip Spec      14 (20) '2.0'\n-237CF1 Created OS            00 (0) 'MS-DOS'\n-237CF2 Extract Zip Spec      14 (20) '2.0'\n-237CF3 Extract OS            00 (0) 'MS-DOS'\n-237CF4 General Purpose Flag  0808 (2056)\n+23A073 CENTRAL HEADER #1587  02014B50 (33639248)\n+23A077 Created Zip Spec      14 (20) '2.0'\n+23A078 Created OS            00 (0) 'MS-DOS'\n+23A079 Extract Zip Spec      14 (20) '2.0'\n+23A07A Extract OS            00 (0) 'MS-DOS'\n+23A07B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237CF6 Compression Method    0008 (8) 'Deflated'\n-237CF8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237CFC CRC                   BA9B880B (3130755083)\n-237D00 Compressed Size       00000340 (832)\n-237D04 Uncompressed Size     0000079F (1951)\n-237D08 Filename Length       003D (61)\n-237D0A Extra Length          0000 (0)\n-237D0C Comment Length        0000 (0)\n-237D0E Disk Start            0000 (0)\n-237D10 Int File Attributes   0000 (0)\n+23A07D Compression Method    0008 (8) 'Deflated'\n+23A07F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A083 CRC                   00000000 (0)\n+23A087 Compressed Size       00000002 (2)\n+23A08B Uncompressed Size     00000000 (0)\n+23A08F Filename Length       001E (30)\n+23A091 Extra Length          0000 (0)\n+23A093 Comment Length        0000 (0)\n+23A095 Disk Start            0000 (0)\n+23A097 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237D12 Ext File Attributes   00000000 (0)\n-237D16 Local Header Offset   001A2EEB (1715947)\n-237D1A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A099 Ext File Attributes   00000000 (0)\n+23A09D Local Header Offset   001ACA2E (1755694)\n+23A0A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237D1A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A0A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237D57 CENTRAL HEADER #1588  02014B50 (33639248)\n-237D5B Created Zip Spec      14 (20) '2.0'\n-237D5C Created OS            00 (0) 'MS-DOS'\n-237D5D Extract Zip Spec      14 (20) '2.0'\n-237D5E Extract OS            00 (0) 'MS-DOS'\n-237D5F General Purpose Flag  0808 (2056)\n+23A0BF CENTRAL HEADER #1588  02014B50 (33639248)\n+23A0C3 Created Zip Spec      14 (20) '2.0'\n+23A0C4 Created OS            00 (0) 'MS-DOS'\n+23A0C5 Extract Zip Spec      14 (20) '2.0'\n+23A0C6 Extract OS            00 (0) 'MS-DOS'\n+23A0C7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237D61 Compression Method    0008 (8) 'Deflated'\n-237D63 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237D67 CRC                   00000000 (0)\n-237D6B Compressed Size       00000002 (2)\n-237D6F Uncompressed Size     00000000 (0)\n-237D73 Filename Length       0031 (49)\n-237D75 Extra Length          0000 (0)\n-237D77 Comment Length        0000 (0)\n-237D79 Disk Start            0000 (0)\n-237D7B Int File Attributes   0000 (0)\n+23A0C9 Compression Method    0008 (8) 'Deflated'\n+23A0CB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A0CF CRC                   00000000 (0)\n+23A0D3 Compressed Size       00000002 (2)\n+23A0D7 Uncompressed Size     00000000 (0)\n+23A0DB Filename Length       0026 (38)\n+23A0DD Extra Length          0000 (0)\n+23A0DF Comment Length        0000 (0)\n+23A0E1 Disk Start            0000 (0)\n+23A0E3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237D7D Ext File Attributes   00000000 (0)\n-237D81 Local Header Offset   001A3296 (1716886)\n-237D85 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A0E5 Ext File Attributes   00000000 (0)\n+23A0E9 Local Header Offset   001ACA7C (1755772)\n+23A0ED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237D85: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A0ED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237DB6 CENTRAL HEADER #1589  02014B50 (33639248)\n-237DBA Created Zip Spec      14 (20) '2.0'\n-237DBB Created OS            00 (0) 'MS-DOS'\n-237DBC Extract Zip Spec      14 (20) '2.0'\n-237DBD Extract OS            00 (0) 'MS-DOS'\n-237DBE General Purpose Flag  0808 (2056)\n+23A113 CENTRAL HEADER #1589  02014B50 (33639248)\n+23A117 Created Zip Spec      14 (20) '2.0'\n+23A118 Created OS            00 (0) 'MS-DOS'\n+23A119 Extract Zip Spec      14 (20) '2.0'\n+23A11A Extract OS            00 (0) 'MS-DOS'\n+23A11B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237DC0 Compression Method    0008 (8) 'Deflated'\n-237DC2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237DC6 CRC                   8FAE8E58 (2410581592)\n-237DCA Compressed Size       000004B3 (1203)\n-237DCE Uncompressed Size     000012B7 (4791)\n-237DD2 Filename Length       0046 (70)\n-237DD4 Extra Length          0000 (0)\n-237DD6 Comment Length        0000 (0)\n-237DD8 Disk Start            0000 (0)\n-237DDA Int File Attributes   0000 (0)\n+23A11D Compression Method    0008 (8) 'Deflated'\n+23A11F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A123 CRC                   00000000 (0)\n+23A127 Compressed Size       00000002 (2)\n+23A12B Uncompressed Size     00000000 (0)\n+23A12F Filename Length       0030 (48)\n+23A131 Extra Length          0000 (0)\n+23A133 Comment Length        0000 (0)\n+23A135 Disk Start            0000 (0)\n+23A137 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237DDC Ext File Attributes   00000000 (0)\n-237DE0 Local Header Offset   001A32F7 (1716983)\n-237DE4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A139 Ext File Attributes   00000000 (0)\n+23A13D Local Header Offset   001ACAD2 (1755858)\n+23A141 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237DE4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A141: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237E2A CENTRAL HEADER #1590  02014B50 (33639248)\n-237E2E Created Zip Spec      14 (20) '2.0'\n-237E2F Created OS            00 (0) 'MS-DOS'\n-237E30 Extract Zip Spec      14 (20) '2.0'\n-237E31 Extract OS            00 (0) 'MS-DOS'\n-237E32 General Purpose Flag  0808 (2056)\n+23A171 CENTRAL HEADER #1590  02014B50 (33639248)\n+23A175 Created Zip Spec      14 (20) '2.0'\n+23A176 Created OS            00 (0) 'MS-DOS'\n+23A177 Extract Zip Spec      14 (20) '2.0'\n+23A178 Extract OS            00 (0) 'MS-DOS'\n+23A179 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237E34 Compression Method    0008 (8) 'Deflated'\n-237E36 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237E3A CRC                   49D1BF52 (1238482770)\n-237E3E Compressed Size       000003F5 (1013)\n-237E42 Uncompressed Size     00000CDD (3293)\n-237E46 Filename Length       0047 (71)\n-237E48 Extra Length          0000 (0)\n-237E4A Comment Length        0000 (0)\n-237E4C Disk Start            0000 (0)\n-237E4E Int File Attributes   0000 (0)\n+23A17B Compression Method    0008 (8) 'Deflated'\n+23A17D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A181 CRC                   BB1EE9E9 (3139365353)\n+23A185 Compressed Size       00000672 (1650)\n+23A189 Uncompressed Size     00001480 (5248)\n+23A18D Filename Length       0042 (66)\n+23A18F Extra Length          0000 (0)\n+23A191 Comment Length        0000 (0)\n+23A193 Disk Start            0000 (0)\n+23A195 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237E50 Ext File Attributes   00000000 (0)\n-237E54 Local Header Offset   001A381E (1718302)\n-237E58 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A197 Ext File Attributes   00000000 (0)\n+23A19B Local Header Offset   001ACB32 (1755954)\n+23A19F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237E58: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A19F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237E9F CENTRAL HEADER #1591  02014B50 (33639248)\n-237EA3 Created Zip Spec      14 (20) '2.0'\n-237EA4 Created OS            00 (0) 'MS-DOS'\n-237EA5 Extract Zip Spec      14 (20) '2.0'\n-237EA6 Extract OS            00 (0) 'MS-DOS'\n-237EA7 General Purpose Flag  0808 (2056)\n+23A1E1 CENTRAL HEADER #1591  02014B50 (33639248)\n+23A1E5 Created Zip Spec      14 (20) '2.0'\n+23A1E6 Created OS            00 (0) 'MS-DOS'\n+23A1E7 Extract Zip Spec      14 (20) '2.0'\n+23A1E8 Extract OS            00 (0) 'MS-DOS'\n+23A1E9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237EA9 Compression Method    0008 (8) 'Deflated'\n-237EAB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237EAF CRC                   05BCA175 (96248181)\n-237EB3 Compressed Size       00000348 (840)\n-237EB7 Uncompressed Size     00000799 (1945)\n-237EBB Filename Length       0048 (72)\n-237EBD Extra Length          0000 (0)\n-237EBF Comment Length        0000 (0)\n-237EC1 Disk Start            0000 (0)\n-237EC3 Int File Attributes   0000 (0)\n+23A1EB Compression Method    0008 (8) 'Deflated'\n+23A1ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A1F1 CRC                   E1D762AB (3788989099)\n+23A1F5 Compressed Size       000005DE (1502)\n+23A1F9 Uncompressed Size     000010D1 (4305)\n+23A1FD Filename Length       0052 (82)\n+23A1FF Extra Length          0000 (0)\n+23A201 Comment Length        0000 (0)\n+23A203 Disk Start            0000 (0)\n+23A205 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237EC5 Ext File Attributes   00000000 (0)\n-237EC9 Local Header Offset   001A3C88 (1719432)\n-237ECD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A207 Ext File Attributes   00000000 (0)\n+23A20B Local Header Offset   001AD214 (1757716)\n+23A20F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237ECD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A20F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237F15 CENTRAL HEADER #1592  02014B50 (33639248)\n-237F19 Created Zip Spec      14 (20) '2.0'\n-237F1A Created OS            00 (0) 'MS-DOS'\n-237F1B Extract Zip Spec      14 (20) '2.0'\n-237F1C Extract OS            00 (0) 'MS-DOS'\n-237F1D General Purpose Flag  0808 (2056)\n+23A261 CENTRAL HEADER #1592  02014B50 (33639248)\n+23A265 Created Zip Spec      14 (20) '2.0'\n+23A266 Created OS            00 (0) 'MS-DOS'\n+23A267 Extract Zip Spec      14 (20) '2.0'\n+23A268 Extract OS            00 (0) 'MS-DOS'\n+23A269 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237F1F Compression Method    0008 (8) 'Deflated'\n-237F21 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237F25 CRC                   00000000 (0)\n-237F29 Compressed Size       00000002 (2)\n-237F2D Uncompressed Size     00000000 (0)\n-237F31 Filename Length       002D (45)\n-237F33 Extra Length          0000 (0)\n-237F35 Comment Length        0000 (0)\n-237F37 Disk Start            0000 (0)\n-237F39 Int File Attributes   0000 (0)\n+23A26B Compression Method    0008 (8) 'Deflated'\n+23A26D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A271 CRC                   4843AF3D (1212395325)\n+23A275 Compressed Size       000002BA (698)\n+23A279 Uncompressed Size     00000670 (1648)\n+23A27D Filename Length       0059 (89)\n+23A27F Extra Length          0000 (0)\n+23A281 Comment Length        0000 (0)\n+23A283 Disk Start            0000 (0)\n+23A285 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237F3B Ext File Attributes   00000000 (0)\n-237F3F Local Header Offset   001A4046 (1720390)\n-237F43 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A287 Ext File Attributes   00000000 (0)\n+23A28B Local Header Offset   001AD872 (1759346)\n+23A28F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237F43: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A28F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237F70 CENTRAL HEADER #1593  02014B50 (33639248)\n-237F74 Created Zip Spec      14 (20) '2.0'\n-237F75 Created OS            00 (0) 'MS-DOS'\n-237F76 Extract Zip Spec      14 (20) '2.0'\n-237F77 Extract OS            00 (0) 'MS-DOS'\n-237F78 General Purpose Flag  0808 (2056)\n+23A2E8 CENTRAL HEADER #1593  02014B50 (33639248)\n+23A2EC Created Zip Spec      14 (20) '2.0'\n+23A2ED Created OS            00 (0) 'MS-DOS'\n+23A2EE Extract Zip Spec      14 (20) '2.0'\n+23A2EF Extract OS            00 (0) 'MS-DOS'\n+23A2F0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237F7A Compression Method    0008 (8) 'Deflated'\n-237F7C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237F80 CRC                   300B4DD6 (806047190)\n-237F84 Compressed Size       00000679 (1657)\n-237F88 Uncompressed Size     000016B2 (5810)\n-237F8C Filename Length       0045 (69)\n-237F8E Extra Length          0000 (0)\n-237F90 Comment Length        0000 (0)\n-237F92 Disk Start            0000 (0)\n-237F94 Int File Attributes   0000 (0)\n+23A2F2 Compression Method    0008 (8) 'Deflated'\n+23A2F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A2F8 CRC                   00000000 (0)\n+23A2FC Compressed Size       00000002 (2)\n+23A300 Uncompressed Size     00000000 (0)\n+23A304 Filename Length       003D (61)\n+23A306 Extra Length          0000 (0)\n+23A308 Comment Length        0000 (0)\n+23A30A Disk Start            0000 (0)\n+23A30C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-237F96 Ext File Attributes   00000000 (0)\n-237F9A Local Header Offset   001A40A3 (1720483)\n-237F9E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A30E Ext File Attributes   00000000 (0)\n+23A312 Local Header Offset   001ADBB3 (1760179)\n+23A316 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x237F9E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A316: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-237FE3 CENTRAL HEADER #1594  02014B50 (33639248)\n-237FE7 Created Zip Spec      14 (20) '2.0'\n-237FE8 Created OS            00 (0) 'MS-DOS'\n-237FE9 Extract Zip Spec      14 (20) '2.0'\n-237FEA Extract OS            00 (0) 'MS-DOS'\n-237FEB General Purpose Flag  0808 (2056)\n+23A353 CENTRAL HEADER #1594  02014B50 (33639248)\n+23A357 Created Zip Spec      14 (20) '2.0'\n+23A358 Created OS            00 (0) 'MS-DOS'\n+23A359 Extract Zip Spec      14 (20) '2.0'\n+23A35A Extract OS            00 (0) 'MS-DOS'\n+23A35B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-237FED Compression Method    0008 (8) 'Deflated'\n-237FEF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-237FF3 CRC                   F7853FBB (4152704955)\n-237FF7 Compressed Size       000002D0 (720)\n-237FFB Uncompressed Size     000005F7 (1527)\n-237FFF Filename Length       003B (59)\n-238001 Extra Length          0000 (0)\n-238003 Comment Length        0000 (0)\n-238005 Disk Start            0000 (0)\n-238007 Int File Attributes   0000 (0)\n+23A35D Compression Method    0008 (8) 'Deflated'\n+23A35F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A363 CRC                   E98EF8F4 (3918461172)\n+23A367 Compressed Size       0000036D (877)\n+23A36B Uncompressed Size     000008A5 (2213)\n+23A36F Filename Length       0044 (68)\n+23A371 Extra Length          0000 (0)\n+23A373 Comment Length        0000 (0)\n+23A375 Disk Start            0000 (0)\n+23A377 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238009 Ext File Attributes   00000000 (0)\n-23800D Local Header Offset   001A478F (1722255)\n-238011 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A379 Ext File Attributes   00000000 (0)\n+23A37D Local Header Offset   001ADC20 (1760288)\n+23A381 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238011: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A381: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23804C CENTRAL HEADER #1595  02014B50 (33639248)\n-238050 Created Zip Spec      14 (20) '2.0'\n-238051 Created OS            00 (0) 'MS-DOS'\n-238052 Extract Zip Spec      14 (20) '2.0'\n-238053 Extract OS            00 (0) 'MS-DOS'\n-238054 General Purpose Flag  0808 (2056)\n+23A3C5 CENTRAL HEADER #1595  02014B50 (33639248)\n+23A3C9 Created Zip Spec      14 (20) '2.0'\n+23A3CA Created OS            00 (0) 'MS-DOS'\n+23A3CB Extract Zip Spec      14 (20) '2.0'\n+23A3CC Extract OS            00 (0) 'MS-DOS'\n+23A3CD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238056 Compression Method    0008 (8) 'Deflated'\n-238058 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23805C CRC                   E7186373 (3877135219)\n-238060 Compressed Size       000002C1 (705)\n-238064 Uncompressed Size     00000585 (1413)\n-238068 Filename Length       0043 (67)\n-23806A Extra Length          0000 (0)\n-23806C Comment Length        0000 (0)\n-23806E Disk Start            0000 (0)\n-238070 Int File Attributes   0000 (0)\n+23A3CF Compression Method    0008 (8) 'Deflated'\n+23A3D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A3D5 CRC                   78F5F066 (2029383782)\n+23A3D9 Compressed Size       0000004F (79)\n+23A3DD Uncompressed Size     00000053 (83)\n+23A3E1 Filename Length       004B (75)\n+23A3E3 Extra Length          0000 (0)\n+23A3E5 Comment Length        0000 (0)\n+23A3E7 Disk Start            0000 (0)\n+23A3E9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238072 Ext File Attributes   00000000 (0)\n-238076 Local Header Offset   001A4AC8 (1723080)\n-23807A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A3EB Ext File Attributes   00000000 (0)\n+23A3EF Local Header Offset   001ADFFF (1761279)\n+23A3F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23807A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A3F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2380BD CENTRAL HEADER #1596  02014B50 (33639248)\n-2380C1 Created Zip Spec      14 (20) '2.0'\n-2380C2 Created OS            00 (0) 'MS-DOS'\n-2380C3 Extract Zip Spec      14 (20) '2.0'\n-2380C4 Extract OS            00 (0) 'MS-DOS'\n-2380C5 General Purpose Flag  0808 (2056)\n+23A43E CENTRAL HEADER #1596  02014B50 (33639248)\n+23A442 Created Zip Spec      14 (20) '2.0'\n+23A443 Created OS            00 (0) 'MS-DOS'\n+23A444 Extract Zip Spec      14 (20) '2.0'\n+23A445 Extract OS            00 (0) 'MS-DOS'\n+23A446 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2380C7 Compression Method    0008 (8) 'Deflated'\n-2380C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2380CD CRC                   AB66324F (2875601487)\n-2380D1 Compressed Size       00000264 (612)\n-2380D5 Uncompressed Size     00000460 (1120)\n-2380D9 Filename Length       0046 (70)\n-2380DB Extra Length          0000 (0)\n-2380DD Comment Length        0000 (0)\n-2380DF Disk Start            0000 (0)\n-2380E1 Int File Attributes   0000 (0)\n+23A448 Compression Method    0008 (8) 'Deflated'\n+23A44A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A44E CRC                   00000000 (0)\n+23A452 Compressed Size       00000002 (2)\n+23A456 Uncompressed Size     00000000 (0)\n+23A45A Filename Length       002D (45)\n+23A45C Extra Length          0000 (0)\n+23A45E Comment Length        0000 (0)\n+23A460 Disk Start            0000 (0)\n+23A462 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2380E3 Ext File Attributes   00000000 (0)\n-2380E7 Local Header Offset   001A4DFA (1723898)\n-2380EB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A464 Ext File Attributes   00000000 (0)\n+23A468 Local Header Offset   001AE0C7 (1761479)\n+23A46C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2380EB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A46C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238131 CENTRAL HEADER #1597  02014B50 (33639248)\n-238135 Created Zip Spec      14 (20) '2.0'\n-238136 Created OS            00 (0) 'MS-DOS'\n-238137 Extract Zip Spec      14 (20) '2.0'\n-238138 Extract OS            00 (0) 'MS-DOS'\n-238139 General Purpose Flag  0808 (2056)\n+23A499 CENTRAL HEADER #1597  02014B50 (33639248)\n+23A49D Created Zip Spec      14 (20) '2.0'\n+23A49E Created OS            00 (0) 'MS-DOS'\n+23A49F Extract Zip Spec      14 (20) '2.0'\n+23A4A0 Extract OS            00 (0) 'MS-DOS'\n+23A4A1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23813B Compression Method    0008 (8) 'Deflated'\n-23813D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238141 CRC                   A5D7D6FA (2782385914)\n-238145 Compressed Size       000002A7 (679)\n-238149 Uncompressed Size     00000516 (1302)\n-23814D Filename Length       0048 (72)\n-23814F Extra Length          0000 (0)\n-238151 Comment Length        0000 (0)\n-238153 Disk Start            0000 (0)\n-238155 Int File Attributes   0000 (0)\n+23A4A3 Compression Method    0008 (8) 'Deflated'\n+23A4A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A4A9 CRC                   86E4A798 (2263132056)\n+23A4AD Compressed Size       00000C90 (3216)\n+23A4B1 Uncompressed Size     00002F2C (12076)\n+23A4B5 Filename Length       004C (76)\n+23A4B7 Extra Length          0000 (0)\n+23A4B9 Comment Length        0000 (0)\n+23A4BB Disk Start            0000 (0)\n+23A4BD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238157 Ext File Attributes   00000000 (0)\n-23815B Local Header Offset   001A50D2 (1724626)\n-23815F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A4BF Ext File Attributes   00000000 (0)\n+23A4C3 Local Header Offset   001AE124 (1761572)\n+23A4C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23815F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A4C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2381A7 CENTRAL HEADER #1598  02014B50 (33639248)\n-2381AB Created Zip Spec      14 (20) '2.0'\n-2381AC Created OS            00 (0) 'MS-DOS'\n-2381AD Extract Zip Spec      14 (20) '2.0'\n-2381AE Extract OS            00 (0) 'MS-DOS'\n-2381AF General Purpose Flag  0808 (2056)\n+23A513 CENTRAL HEADER #1598  02014B50 (33639248)\n+23A517 Created Zip Spec      14 (20) '2.0'\n+23A518 Created OS            00 (0) 'MS-DOS'\n+23A519 Extract Zip Spec      14 (20) '2.0'\n+23A51A Extract OS            00 (0) 'MS-DOS'\n+23A51B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2381B1 Compression Method    0008 (8) 'Deflated'\n-2381B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2381B7 CRC                   00000000 (0)\n-2381BB Compressed Size       00000002 (2)\n-2381BF Uncompressed Size     00000000 (0)\n-2381C3 Filename Length       0027 (39)\n-2381C5 Extra Length          0000 (0)\n-2381C7 Comment Length        0000 (0)\n-2381C9 Disk Start            0000 (0)\n-2381CB Int File Attributes   0000 (0)\n+23A51D Compression Method    0008 (8) 'Deflated'\n+23A51F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A523 CRC                   4296B4B4 (1117172916)\n+23A527 Compressed Size       00000276 (630)\n+23A52B Uncompressed Size     00000539 (1337)\n+23A52F Filename Length       0053 (83)\n+23A531 Extra Length          0000 (0)\n+23A533 Comment Length        0000 (0)\n+23A535 Disk Start            0000 (0)\n+23A537 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2381CD Ext File Attributes   00000000 (0)\n-2381D1 Local Header Offset   001A53EF (1725423)\n-2381D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A539 Ext File Attributes   00000000 (0)\n+23A53D Local Header Offset   001AEE2E (1764910)\n+23A541 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2381D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A541: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2381FC CENTRAL HEADER #1599  02014B50 (33639248)\n-238200 Created Zip Spec      14 (20) '2.0'\n-238201 Created OS            00 (0) 'MS-DOS'\n-238202 Extract Zip Spec      14 (20) '2.0'\n-238203 Extract OS            00 (0) 'MS-DOS'\n-238204 General Purpose Flag  0808 (2056)\n+23A594 CENTRAL HEADER #1599  02014B50 (33639248)\n+23A598 Created Zip Spec      14 (20) '2.0'\n+23A599 Created OS            00 (0) 'MS-DOS'\n+23A59A Extract Zip Spec      14 (20) '2.0'\n+23A59B Extract OS            00 (0) 'MS-DOS'\n+23A59C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238206 Compression Method    0008 (8) 'Deflated'\n-238208 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23820C CRC                   3E0609F4 (1040583156)\n-238210 Compressed Size       0000049E (1182)\n-238214 Uncompressed Size     00000E94 (3732)\n-238218 Filename Length       003B (59)\n-23821A Extra Length          0000 (0)\n-23821C Comment Length        0000 (0)\n-23821E Disk Start            0000 (0)\n-238220 Int File Attributes   0000 (0)\n+23A59E Compression Method    0008 (8) 'Deflated'\n+23A5A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A5A4 CRC                   00000000 (0)\n+23A5A8 Compressed Size       00000002 (2)\n+23A5AC Uncompressed Size     00000000 (0)\n+23A5B0 Filename Length       003A (58)\n+23A5B2 Extra Length          0000 (0)\n+23A5B4 Comment Length        0000 (0)\n+23A5B6 Disk Start            0000 (0)\n+23A5B8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238222 Ext File Attributes   00000000 (0)\n-238226 Local Header Offset   001A5446 (1725510)\n-23822A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A5BA Ext File Attributes   00000000 (0)\n+23A5BE Local Header Offset   001AF125 (1765669)\n+23A5C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23822A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A5C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238265 CENTRAL HEADER #1600  02014B50 (33639248)\n-238269 Created Zip Spec      14 (20) '2.0'\n-23826A Created OS            00 (0) 'MS-DOS'\n-23826B Extract Zip Spec      14 (20) '2.0'\n-23826C Extract OS            00 (0) 'MS-DOS'\n-23826D General Purpose Flag  0808 (2056)\n+23A5FC CENTRAL HEADER #1600  02014B50 (33639248)\n+23A600 Created Zip Spec      14 (20) '2.0'\n+23A601 Created OS            00 (0) 'MS-DOS'\n+23A602 Extract Zip Spec      14 (20) '2.0'\n+23A603 Extract OS            00 (0) 'MS-DOS'\n+23A604 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23826F Compression Method    0008 (8) 'Deflated'\n-238271 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238275 CRC                   99ADAD26 (2578296102)\n-238279 Compressed Size       00000428 (1064)\n-23827D Uncompressed Size     00000CCF (3279)\n-238281 Filename Length       003C (60)\n-238283 Extra Length          0000 (0)\n-238285 Comment Length        0000 (0)\n-238287 Disk Start            0000 (0)\n-238289 Int File Attributes   0000 (0)\n+23A606 Compression Method    0008 (8) 'Deflated'\n+23A608 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A60C CRC                   91AC24FF (2443977983)\n+23A610 Compressed Size       000003B3 (947)\n+23A614 Uncompressed Size     00000941 (2369)\n+23A618 Filename Length       0041 (65)\n+23A61A Extra Length          0000 (0)\n+23A61C Comment Length        0000 (0)\n+23A61E Disk Start            0000 (0)\n+23A620 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23828B Ext File Attributes   00000000 (0)\n-23828F Local Header Offset   001A594D (1726797)\n-238293 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A622 Ext File Attributes   00000000 (0)\n+23A626 Local Header Offset   001AF18F (1765775)\n+23A62A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238293: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A62A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2382CF CENTRAL HEADER #1601  02014B50 (33639248)\n-2382D3 Created Zip Spec      14 (20) '2.0'\n-2382D4 Created OS            00 (0) 'MS-DOS'\n-2382D5 Extract Zip Spec      14 (20) '2.0'\n-2382D6 Extract OS            00 (0) 'MS-DOS'\n-2382D7 General Purpose Flag  0808 (2056)\n+23A66B CENTRAL HEADER #1601  02014B50 (33639248)\n+23A66F Created Zip Spec      14 (20) '2.0'\n+23A670 Created OS            00 (0) 'MS-DOS'\n+23A671 Extract Zip Spec      14 (20) '2.0'\n+23A672 Extract OS            00 (0) 'MS-DOS'\n+23A673 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2382D9 Compression Method    0008 (8) 'Deflated'\n-2382DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2382DF CRC                   61EF883C (1643087932)\n-2382E3 Compressed Size       000002E9 (745)\n-2382E7 Uncompressed Size     00000719 (1817)\n-2382EB Filename Length       003D (61)\n-2382ED Extra Length          0000 (0)\n-2382EF Comment Length        0000 (0)\n-2382F1 Disk Start            0000 (0)\n-2382F3 Int File Attributes   0000 (0)\n+23A675 Compression Method    0008 (8) 'Deflated'\n+23A677 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A67B CRC                   B107068C (2970027660)\n+23A67F Compressed Size       0000004C (76)\n+23A683 Uncompressed Size     00000050 (80)\n+23A687 Filename Length       0048 (72)\n+23A689 Extra Length          0000 (0)\n+23A68B Comment Length        0000 (0)\n+23A68D Disk Start            0000 (0)\n+23A68F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2382F5 Ext File Attributes   00000000 (0)\n-2382F9 Local Header Offset   001A5DDF (1727967)\n-2382FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A691 Ext File Attributes   00000000 (0)\n+23A695 Local Header Offset   001AF5B1 (1766833)\n+23A699 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2382FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A699: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23833A CENTRAL HEADER #1602  02014B50 (33639248)\n-23833E Created Zip Spec      14 (20) '2.0'\n-23833F Created OS            00 (0) 'MS-DOS'\n-238340 Extract Zip Spec      14 (20) '2.0'\n-238341 Extract OS            00 (0) 'MS-DOS'\n-238342 General Purpose Flag  0808 (2056)\n+23A6E1 CENTRAL HEADER #1602  02014B50 (33639248)\n+23A6E5 Created Zip Spec      14 (20) '2.0'\n+23A6E6 Created OS            00 (0) 'MS-DOS'\n+23A6E7 Extract Zip Spec      14 (20) '2.0'\n+23A6E8 Extract OS            00 (0) 'MS-DOS'\n+23A6E9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238344 Compression Method    0008 (8) 'Deflated'\n-238346 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23834A CRC                   00000000 (0)\n-23834E Compressed Size       00000002 (2)\n-238352 Uncompressed Size     00000000 (0)\n-238356 Filename Length       002D (45)\n-238358 Extra Length          0000 (0)\n-23835A Comment Length        0000 (0)\n-23835C Disk Start            0000 (0)\n-23835E Int File Attributes   0000 (0)\n+23A6EB Compression Method    0008 (8) 'Deflated'\n+23A6ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A6F1 CRC                   00000000 (0)\n+23A6F5 Compressed Size       00000002 (2)\n+23A6F9 Uncompressed Size     00000000 (0)\n+23A6FD Filename Length       002C (44)\n+23A6FF Extra Length          0000 (0)\n+23A701 Comment Length        0000 (0)\n+23A703 Disk Start            0000 (0)\n+23A705 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238360 Ext File Attributes   00000000 (0)\n-238364 Local Header Offset   001A6133 (1728819)\n-238368 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A707 Ext File Attributes   00000000 (0)\n+23A70B Local Header Offset   001AF673 (1767027)\n+23A70F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238368: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A70F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238395 CENTRAL HEADER #1603  02014B50 (33639248)\n-238399 Created Zip Spec      14 (20) '2.0'\n-23839A Created OS            00 (0) 'MS-DOS'\n-23839B Extract Zip Spec      14 (20) '2.0'\n-23839C Extract OS            00 (0) 'MS-DOS'\n-23839D General Purpose Flag  0808 (2056)\n+23A73B CENTRAL HEADER #1603  02014B50 (33639248)\n+23A73F Created Zip Spec      14 (20) '2.0'\n+23A740 Created OS            00 (0) 'MS-DOS'\n+23A741 Extract Zip Spec      14 (20) '2.0'\n+23A742 Extract OS            00 (0) 'MS-DOS'\n+23A743 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23839F Compression Method    0008 (8) 'Deflated'\n-2383A1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2383A5 CRC                   8EE26A20 (2397202976)\n-2383A9 Compressed Size       000004E8 (1256)\n-2383AD Uncompressed Size     0000108D (4237)\n-2383B1 Filename Length       0047 (71)\n-2383B3 Extra Length          0000 (0)\n-2383B5 Comment Length        0000 (0)\n-2383B7 Disk Start            0000 (0)\n-2383B9 Int File Attributes   0000 (0)\n+23A745 Compression Method    0008 (8) 'Deflated'\n+23A747 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A74B CRC                   F13A996B (4047149419)\n+23A74F Compressed Size       000003AA (938)\n+23A753 Uncompressed Size     00000A44 (2628)\n+23A757 Filename Length       004A (74)\n+23A759 Extra Length          0000 (0)\n+23A75B Comment Length        0000 (0)\n+23A75D Disk Start            0000 (0)\n+23A75F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2383BB Ext File Attributes   00000000 (0)\n-2383BF Local Header Offset   001A6190 (1728912)\n-2383C3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A761 Ext File Attributes   00000000 (0)\n+23A765 Local Header Offset   001AF6CF (1767119)\n+23A769 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2383C3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A769: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23840A CENTRAL HEADER #1604  02014B50 (33639248)\n-23840E Created Zip Spec      14 (20) '2.0'\n-23840F Created OS            00 (0) 'MS-DOS'\n-238410 Extract Zip Spec      14 (20) '2.0'\n-238411 Extract OS            00 (0) 'MS-DOS'\n-238412 General Purpose Flag  0808 (2056)\n+23A7B3 CENTRAL HEADER #1604  02014B50 (33639248)\n+23A7B7 Created Zip Spec      14 (20) '2.0'\n+23A7B8 Created OS            00 (0) 'MS-DOS'\n+23A7B9 Extract Zip Spec      14 (20) '2.0'\n+23A7BA Extract OS            00 (0) 'MS-DOS'\n+23A7BB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238414 Compression Method    0008 (8) 'Deflated'\n-238416 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23841A CRC                   D0E3428B (3504554635)\n-23841E Compressed Size       000004A2 (1186)\n-238422 Uncompressed Size     00000F32 (3890)\n-238426 Filename Length       0048 (72)\n-238428 Extra Length          0000 (0)\n-23842A Comment Length        0000 (0)\n-23842C Disk Start            0000 (0)\n-23842E Int File Attributes   0000 (0)\n+23A7BD Compression Method    0008 (8) 'Deflated'\n+23A7BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A7C3 CRC                   2B568850 (727091280)\n+23A7C7 Compressed Size       00000D5E (3422)\n+23A7CB Uncompressed Size     00003698 (13976)\n+23A7CF Filename Length       004A (74)\n+23A7D1 Extra Length          0000 (0)\n+23A7D3 Comment Length        0000 (0)\n+23A7D5 Disk Start            0000 (0)\n+23A7D7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238430 Ext File Attributes   00000000 (0)\n-238434 Local Header Offset   001A66ED (1730285)\n-238438 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A7D9 Ext File Attributes   00000000 (0)\n+23A7DD Local Header Offset   001AFAF1 (1768177)\n+23A7E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238438: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A7E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238480 CENTRAL HEADER #1605  02014B50 (33639248)\n-238484 Created Zip Spec      14 (20) '2.0'\n-238485 Created OS            00 (0) 'MS-DOS'\n-238486 Extract Zip Spec      14 (20) '2.0'\n-238487 Extract OS            00 (0) 'MS-DOS'\n-238488 General Purpose Flag  0808 (2056)\n+23A82B CENTRAL HEADER #1605  02014B50 (33639248)\n+23A82F Created Zip Spec      14 (20) '2.0'\n+23A830 Created OS            00 (0) 'MS-DOS'\n+23A831 Extract Zip Spec      14 (20) '2.0'\n+23A832 Extract OS            00 (0) 'MS-DOS'\n+23A833 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23848A Compression Method    0008 (8) 'Deflated'\n-23848C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238490 CRC                   7E62C783 (2120402819)\n-238494 Compressed Size       00000326 (806)\n-238498 Uncompressed Size     0000079E (1950)\n-23849C Filename Length       0049 (73)\n-23849E Extra Length          0000 (0)\n-2384A0 Comment Length        0000 (0)\n-2384A2 Disk Start            0000 (0)\n-2384A4 Int File Attributes   0000 (0)\n+23A835 Compression Method    0008 (8) 'Deflated'\n+23A837 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A83B CRC                   78482BCF (2017995727)\n+23A83F Compressed Size       00000328 (808)\n+23A843 Uncompressed Size     00000726 (1830)\n+23A847 Filename Length       0051 (81)\n+23A849 Extra Length          0000 (0)\n+23A84B Comment Length        0000 (0)\n+23A84D Disk Start            0000 (0)\n+23A84F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2384A6 Ext File Attributes   00000000 (0)\n-2384AA Local Header Offset   001A6C05 (1731589)\n-2384AE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A851 Ext File Attributes   00000000 (0)\n+23A855 Local Header Offset   001B08C7 (1771719)\n+23A859 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2384AE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A859: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2384F7 CENTRAL HEADER #1606  02014B50 (33639248)\n-2384FB Created Zip Spec      14 (20) '2.0'\n-2384FC Created OS            00 (0) 'MS-DOS'\n-2384FD Extract Zip Spec      14 (20) '2.0'\n-2384FE Extract OS            00 (0) 'MS-DOS'\n-2384FF General Purpose Flag  0808 (2056)\n+23A8AA CENTRAL HEADER #1606  02014B50 (33639248)\n+23A8AE Created Zip Spec      14 (20) '2.0'\n+23A8AF Created OS            00 (0) 'MS-DOS'\n+23A8B0 Extract Zip Spec      14 (20) '2.0'\n+23A8B1 Extract OS            00 (0) 'MS-DOS'\n+23A8B2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238501 Compression Method    0008 (8) 'Deflated'\n-238503 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238507 CRC                   39DE609E (970875038)\n-23850B Compressed Size       0000026E (622)\n-23850F Uncompressed Size     00000481 (1153)\n-238513 Filename Length       0039 (57)\n-238515 Extra Length          0000 (0)\n-238517 Comment Length        0000 (0)\n-238519 Disk Start            0000 (0)\n-23851B Int File Attributes   0000 (0)\n+23A8B4 Compression Method    0008 (8) 'Deflated'\n+23A8B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A8BA CRC                   00000000 (0)\n+23A8BE Compressed Size       00000002 (2)\n+23A8C2 Uncompressed Size     00000000 (0)\n+23A8C6 Filename Length       0039 (57)\n+23A8C8 Extra Length          0000 (0)\n+23A8CA Comment Length        0000 (0)\n+23A8CC Disk Start            0000 (0)\n+23A8CE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23851D Ext File Attributes   00000000 (0)\n-238521 Local Header Offset   001A6FA2 (1732514)\n-238525 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A8D0 Ext File Attributes   00000000 (0)\n+23A8D4 Local Header Offset   001B0C6E (1772654)\n+23A8D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238525: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A8D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23855E CENTRAL HEADER #1607  02014B50 (33639248)\n-238562 Created Zip Spec      14 (20) '2.0'\n-238563 Created OS            00 (0) 'MS-DOS'\n-238564 Extract Zip Spec      14 (20) '2.0'\n-238565 Extract OS            00 (0) 'MS-DOS'\n-238566 General Purpose Flag  0808 (2056)\n+23A911 CENTRAL HEADER #1607  02014B50 (33639248)\n+23A915 Created Zip Spec      14 (20) '2.0'\n+23A916 Created OS            00 (0) 'MS-DOS'\n+23A917 Extract Zip Spec      14 (20) '2.0'\n+23A918 Extract OS            00 (0) 'MS-DOS'\n+23A919 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238568 Compression Method    0008 (8) 'Deflated'\n-23856A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23856E CRC                   00000000 (0)\n-238572 Compressed Size       00000002 (2)\n-238576 Uncompressed Size     00000000 (0)\n-23857A Filename Length       0036 (54)\n-23857C Extra Length          0000 (0)\n-23857E Comment Length        0000 (0)\n-238580 Disk Start            0000 (0)\n-238582 Int File Attributes   0000 (0)\n+23A91B Compression Method    0008 (8) 'Deflated'\n+23A91D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A921 CRC                   F1E099F8 (4058028536)\n+23A925 Compressed Size       0000035E (862)\n+23A929 Uncompressed Size     000007E8 (2024)\n+23A92D Filename Length       0040 (64)\n+23A92F Extra Length          0000 (0)\n+23A931 Comment Length        0000 (0)\n+23A933 Disk Start            0000 (0)\n+23A935 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238584 Ext File Attributes   00000000 (0)\n-238588 Local Header Offset   001A7277 (1733239)\n-23858C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A937 Ext File Attributes   00000000 (0)\n+23A93B Local Header Offset   001B0CD7 (1772759)\n+23A93F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23858C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A93F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2385C2 CENTRAL HEADER #1608  02014B50 (33639248)\n-2385C6 Created Zip Spec      14 (20) '2.0'\n-2385C7 Created OS            00 (0) 'MS-DOS'\n-2385C8 Extract Zip Spec      14 (20) '2.0'\n-2385C9 Extract OS            00 (0) 'MS-DOS'\n-2385CA General Purpose Flag  0808 (2056)\n+23A97F CENTRAL HEADER #1608  02014B50 (33639248)\n+23A983 Created Zip Spec      14 (20) '2.0'\n+23A984 Created OS            00 (0) 'MS-DOS'\n+23A985 Extract Zip Spec      14 (20) '2.0'\n+23A986 Extract OS            00 (0) 'MS-DOS'\n+23A987 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2385CC Compression Method    0008 (8) 'Deflated'\n-2385CE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2385D2 CRC                   FAE713D9 (4209447897)\n-2385D6 Compressed Size       0000033A (826)\n-2385DA Uncompressed Size     0000077E (1918)\n-2385DE Filename Length       004A (74)\n-2385E0 Extra Length          0000 (0)\n-2385E2 Comment Length        0000 (0)\n-2385E4 Disk Start            0000 (0)\n-2385E6 Int File Attributes   0000 (0)\n+23A989 Compression Method    0008 (8) 'Deflated'\n+23A98B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23A98F CRC                   9AAEB621 (2595141153)\n+23A993 Compressed Size       0000004A (74)\n+23A997 Uncompressed Size     0000004F (79)\n+23A99B Filename Length       0047 (71)\n+23A99D Extra Length          0000 (0)\n+23A99F Comment Length        0000 (0)\n+23A9A1 Disk Start            0000 (0)\n+23A9A3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2385E8 Ext File Attributes   00000000 (0)\n-2385EC Local Header Offset   001A72DD (1733341)\n-2385F0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23A9A5 Ext File Attributes   00000000 (0)\n+23A9A9 Local Header Offset   001B10A3 (1773731)\n+23A9AD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2385F0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23A9AD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23863A CENTRAL HEADER #1609  02014B50 (33639248)\n-23863E Created Zip Spec      14 (20) '2.0'\n-23863F Created OS            00 (0) 'MS-DOS'\n-238640 Extract Zip Spec      14 (20) '2.0'\n-238641 Extract OS            00 (0) 'MS-DOS'\n-238642 General Purpose Flag  0808 (2056)\n+23A9F4 CENTRAL HEADER #1609  02014B50 (33639248)\n+23A9F8 Created Zip Spec      14 (20) '2.0'\n+23A9F9 Created OS            00 (0) 'MS-DOS'\n+23A9FA Extract Zip Spec      14 (20) '2.0'\n+23A9FB Extract OS            00 (0) 'MS-DOS'\n+23A9FC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238644 Compression Method    0008 (8) 'Deflated'\n-238646 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23864A CRC                   1D3EA7BE (490645438)\n-23864E Compressed Size       0000033B (827)\n-238652 Uncompressed Size     00000793 (1939)\n-238656 Filename Length       0047 (71)\n-238658 Extra Length          0000 (0)\n-23865A Comment Length        0000 (0)\n-23865C Disk Start            0000 (0)\n-23865E Int File Attributes   0000 (0)\n+23A9FE Compression Method    0008 (8) 'Deflated'\n+23AA00 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23AA04 CRC                   00000000 (0)\n+23AA08 Compressed Size       00000002 (2)\n+23AA0C Uncompressed Size     00000000 (0)\n+23AA10 Filename Length       0025 (37)\n+23AA12 Extra Length          0000 (0)\n+23AA14 Comment Length        0000 (0)\n+23AA16 Disk Start            0000 (0)\n+23AA18 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238660 Ext File Attributes   00000000 (0)\n-238664 Local Header Offset   001A768F (1734287)\n-238668 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23AA1A Ext File Attributes   00000000 (0)\n+23AA1E Local Header Offset   001B1162 (1773922)\n+23AA22 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238668: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23AA22: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2386AF CENTRAL HEADER #1610  02014B50 (33639248)\n-2386B3 Created Zip Spec      14 (20) '2.0'\n-2386B4 Created OS            00 (0) 'MS-DOS'\n-2386B5 Extract Zip Spec      14 (20) '2.0'\n-2386B6 Extract OS            00 (0) 'MS-DOS'\n-2386B7 General Purpose Flag  0808 (2056)\n+23AA47 CENTRAL HEADER #1610  02014B50 (33639248)\n+23AA4B Created Zip Spec      14 (20) '2.0'\n+23AA4C Created OS            00 (0) 'MS-DOS'\n+23AA4D Extract Zip Spec      14 (20) '2.0'\n+23AA4E Extract OS            00 (0) 'MS-DOS'\n+23AA4F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2386B9 Compression Method    0008 (8) 'Deflated'\n-2386BB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2386BF CRC                   585FB751 (1482667857)\n-2386C3 Compressed Size       0000033C (828)\n-2386C7 Uncompressed Size     00000778 (1912)\n-2386CB Filename Length       004C (76)\n-2386CD Extra Length          0000 (0)\n-2386CF Comment Length        0000 (0)\n-2386D1 Disk Start            0000 (0)\n-2386D3 Int File Attributes   0000 (0)\n+23AA51 Compression Method    0008 (8) 'Deflated'\n+23AA53 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23AA57 CRC                   A679ECEF (2793008367)\n+23AA5B Compressed Size       00000859 (2137)\n+23AA5F Uncompressed Size     00001B9C (7068)\n+23AA63 Filename Length       0044 (68)\n+23AA65 Extra Length          0000 (0)\n+23AA67 Comment Length        0000 (0)\n+23AA69 Disk Start            0000 (0)\n+23AA6B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2386D5 Ext File Attributes   00000000 (0)\n-2386D9 Local Header Offset   001A7A3F (1735231)\n-2386DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23AA6D Ext File Attributes   00000000 (0)\n+23AA71 Local Header Offset   001B11B7 (1774007)\n+23AA75 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2386DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23AA75: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238729 CENTRAL HEADER #1611  02014B50 (33639248)\n-23872D Created Zip Spec      14 (20) '2.0'\n-23872E Created OS            00 (0) 'MS-DOS'\n-23872F Extract Zip Spec      14 (20) '2.0'\n-238730 Extract OS            00 (0) 'MS-DOS'\n-238731 General Purpose Flag  0808 (2056)\n+23AAB9 CENTRAL HEADER #1611  02014B50 (33639248)\n+23AABD Created Zip Spec      14 (20) '2.0'\n+23AABE Created OS            00 (0) 'MS-DOS'\n+23AABF Extract Zip Spec      14 (20) '2.0'\n+23AAC0 Extract OS            00 (0) 'MS-DOS'\n+23AAC1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238733 Compression Method    0008 (8) 'Deflated'\n-238735 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238739 CRC                   00000000 (0)\n-23873D Compressed Size       00000002 (2)\n-238741 Uncompressed Size     00000000 (0)\n-238745 Filename Length       0033 (51)\n-238747 Extra Length          0000 (0)\n-238749 Comment Length        0000 (0)\n-23874B Disk Start            0000 (0)\n-23874D Int File Attributes   0000 (0)\n+23AAC3 Compression Method    0008 (8) 'Deflated'\n+23AAC5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23AAC9 CRC                   8FA8BF90 (2410200976)\n+23AACD Compressed Size       0000027B (635)\n+23AAD1 Uncompressed Size     00000554 (1364)\n+23AAD5 Filename Length       004B (75)\n+23AAD7 Extra Length          0000 (0)\n+23AAD9 Comment Length        0000 (0)\n+23AADB Disk Start            0000 (0)\n+23AADD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23874F Ext File Attributes   00000000 (0)\n-238753 Local Header Offset   001A7DF5 (1736181)\n-238757 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23AADF Ext File Attributes   00000000 (0)\n+23AAE3 Local Header Offset   001B1A82 (1776258)\n+23AAE7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238757: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23AAE7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23878A CENTRAL HEADER #1612  02014B50 (33639248)\n-23878E Created Zip Spec      14 (20) '2.0'\n-23878F Created OS            00 (0) 'MS-DOS'\n-238790 Extract Zip Spec      14 (20) '2.0'\n-238791 Extract OS            00 (0) 'MS-DOS'\n-238792 General Purpose Flag  0808 (2056)\n+23AB32 CENTRAL HEADER #1612  02014B50 (33639248)\n+23AB36 Created Zip Spec      14 (20) '2.0'\n+23AB37 Created OS            00 (0) 'MS-DOS'\n+23AB38 Extract Zip Spec      14 (20) '2.0'\n+23AB39 Extract OS            00 (0) 'MS-DOS'\n+23AB3A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238794 Compression Method    0008 (8) 'Deflated'\n-238796 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23879A CRC                   2EE59E00 (786800128)\n-23879E Compressed Size       00000483 (1155)\n-2387A2 Uncompressed Size     00000EFE (3838)\n-2387A6 Filename Length       0044 (68)\n-2387A8 Extra Length          0000 (0)\n-2387AA Comment Length        0000 (0)\n-2387AC Disk Start            0000 (0)\n-2387AE Int File Attributes   0000 (0)\n+23AB3C Compression Method    0008 (8) 'Deflated'\n+23AB3E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23AB42 CRC                   00000000 (0)\n+23AB46 Compressed Size       00000002 (2)\n+23AB4A Uncompressed Size     00000000 (0)\n+23AB4E Filename Length       003A (58)\n+23AB50 Extra Length          0000 (0)\n+23AB52 Comment Length        0000 (0)\n+23AB54 Disk Start            0000 (0)\n+23AB56 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2387B0 Ext File Attributes   00000000 (0)\n-2387B4 Local Header Offset   001A7E58 (1736280)\n-2387B8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23AB58 Ext File Attributes   00000000 (0)\n+23AB5C Local Header Offset   001B1D76 (1777014)\n+23AB60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2387B8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23AB60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2387FC CENTRAL HEADER #1613  02014B50 (33639248)\n-238800 Created Zip Spec      14 (20) '2.0'\n-238801 Created OS            00 (0) 'MS-DOS'\n-238802 Extract Zip Spec      14 (20) '2.0'\n-238803 Extract OS            00 (0) 'MS-DOS'\n-238804 General Purpose Flag  0808 (2056)\n+23AB9A CENTRAL HEADER #1613  02014B50 (33639248)\n+23AB9E Created Zip Spec      14 (20) '2.0'\n+23AB9F Created OS            00 (0) 'MS-DOS'\n+23ABA0 Extract Zip Spec      14 (20) '2.0'\n+23ABA1 Extract OS            00 (0) 'MS-DOS'\n+23ABA2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238806 Compression Method    0008 (8) 'Deflated'\n-238808 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23880C CRC                   00000000 (0)\n-238810 Compressed Size       00000002 (2)\n-238814 Uncompressed Size     00000000 (0)\n-238818 Filename Length       0027 (39)\n-23881A Extra Length          0000 (0)\n-23881C Comment Length        0000 (0)\n-23881E Disk Start            0000 (0)\n-238820 Int File Attributes   0000 (0)\n+23ABA4 Compression Method    0008 (8) 'Deflated'\n+23ABA6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23ABAA CRC                   76B58A01 (1991608833)\n+23ABAE Compressed Size       00000349 (841)\n+23ABB2 Uncompressed Size     000007F6 (2038)\n+23ABB6 Filename Length       0041 (65)\n+23ABB8 Extra Length          0000 (0)\n+23ABBA Comment Length        0000 (0)\n+23ABBC Disk Start            0000 (0)\n+23ABBE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238822 Ext File Attributes   00000000 (0)\n-238826 Local Header Offset   001A834D (1737549)\n-23882A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23ABC0 Ext File Attributes   00000000 (0)\n+23ABC4 Local Header Offset   001B1DE0 (1777120)\n+23ABC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23882A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23ABC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238851 CENTRAL HEADER #1614  02014B50 (33639248)\n-238855 Created Zip Spec      14 (20) '2.0'\n-238856 Created OS            00 (0) 'MS-DOS'\n-238857 Extract Zip Spec      14 (20) '2.0'\n-238858 Extract OS            00 (0) 'MS-DOS'\n-238859 General Purpose Flag  0808 (2056)\n+23AC09 CENTRAL HEADER #1614  02014B50 (33639248)\n+23AC0D Created Zip Spec      14 (20) '2.0'\n+23AC0E Created OS            00 (0) 'MS-DOS'\n+23AC0F Extract Zip Spec      14 (20) '2.0'\n+23AC10 Extract OS            00 (0) 'MS-DOS'\n+23AC11 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23885B Compression Method    0008 (8) 'Deflated'\n-23885D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238861 CRC                   33751F07 (863313671)\n-238865 Compressed Size       00000434 (1076)\n-238869 Uncompressed Size     00000D59 (3417)\n-23886D Filename Length       003F (63)\n-23886F Extra Length          0000 (0)\n-238871 Comment Length        0000 (0)\n-238873 Disk Start            0000 (0)\n-238875 Int File Attributes   0000 (0)\n+23AC13 Compression Method    0008 (8) 'Deflated'\n+23AC15 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23AC19 CRC                   FC77F286 (4235719302)\n+23AC1D Compressed Size       0000004B (75)\n+23AC21 Uncompressed Size     00000050 (80)\n+23AC25 Filename Length       0048 (72)\n+23AC27 Extra Length          0000 (0)\n+23AC29 Comment Length        0000 (0)\n+23AC2B Disk Start            0000 (0)\n+23AC2D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238877 Ext File Attributes   00000000 (0)\n-23887B Local Header Offset   001A83A4 (1737636)\n-23887F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23AC2F Ext File Attributes   00000000 (0)\n+23AC33 Local Header Offset   001B2198 (1778072)\n+23AC37 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23887F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23AC37: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2388BE CENTRAL HEADER #1615  02014B50 (33639248)\n-2388C2 Created Zip Spec      14 (20) '2.0'\n-2388C3 Created OS            00 (0) 'MS-DOS'\n-2388C4 Extract Zip Spec      14 (20) '2.0'\n-2388C5 Extract OS            00 (0) 'MS-DOS'\n-2388C6 General Purpose Flag  0808 (2056)\n+23AC7F CENTRAL HEADER #1615  02014B50 (33639248)\n+23AC83 Created Zip Spec      14 (20) '2.0'\n+23AC84 Created OS            00 (0) 'MS-DOS'\n+23AC85 Extract Zip Spec      14 (20) '2.0'\n+23AC86 Extract OS            00 (0) 'MS-DOS'\n+23AC87 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2388C8 Compression Method    0008 (8) 'Deflated'\n-2388CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2388CE CRC                   B2B54D61 (2998226273)\n-2388D2 Compressed Size       00000392 (914)\n-2388D6 Uncompressed Size     00000B38 (2872)\n-2388DA Filename Length       0040 (64)\n-2388DC Extra Length          0000 (0)\n-2388DE Comment Length        0000 (0)\n-2388E0 Disk Start            0000 (0)\n-2388E2 Int File Attributes   0000 (0)\n+23AC89 Compression Method    0008 (8) 'Deflated'\n+23AC8B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23AC8F CRC                   00000000 (0)\n+23AC93 Compressed Size       00000002 (2)\n+23AC97 Uncompressed Size     00000000 (0)\n+23AC9B Filename Length       002B (43)\n+23AC9D Extra Length          0000 (0)\n+23AC9F Comment Length        0000 (0)\n+23ACA1 Disk Start            0000 (0)\n+23ACA3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2388E4 Ext File Attributes   00000000 (0)\n-2388E8 Local Header Offset   001A8845 (1738821)\n-2388EC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23ACA5 Ext File Attributes   00000000 (0)\n+23ACA9 Local Header Offset   001B2259 (1778265)\n+23ACAD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2388EC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23ACAD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23892C CENTRAL HEADER #1616  02014B50 (33639248)\n-238930 Created Zip Spec      14 (20) '2.0'\n-238931 Created OS            00 (0) 'MS-DOS'\n-238932 Extract Zip Spec      14 (20) '2.0'\n-238933 Extract OS            00 (0) 'MS-DOS'\n-238934 General Purpose Flag  0808 (2056)\n+23ACD8 CENTRAL HEADER #1616  02014B50 (33639248)\n+23ACDC Created Zip Spec      14 (20) '2.0'\n+23ACDD Created OS            00 (0) 'MS-DOS'\n+23ACDE Extract Zip Spec      14 (20) '2.0'\n+23ACDF Extract OS            00 (0) 'MS-DOS'\n+23ACE0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238936 Compression Method    0008 (8) 'Deflated'\n-238938 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23893C CRC                   B5CFC99D (3050293661)\n-238940 Compressed Size       000002E6 (742)\n-238944 Uncompressed Size     000006EC (1772)\n-238948 Filename Length       003D (61)\n-23894A Extra Length          0000 (0)\n-23894C Comment Length        0000 (0)\n-23894E Disk Start            0000 (0)\n-238950 Int File Attributes   0000 (0)\n+23ACE2 Compression Method    0008 (8) 'Deflated'\n+23ACE4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23ACE8 CRC                   B44A5E3E (3024772670)\n+23ACEC Compressed Size       00000809 (2057)\n+23ACF0 Uncompressed Size     00001C54 (7252)\n+23ACF4 Filename Length       0048 (72)\n+23ACF6 Extra Length          0000 (0)\n+23ACF8 Comment Length        0000 (0)\n+23ACFA Disk Start            0000 (0)\n+23ACFC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238952 Ext File Attributes   00000000 (0)\n-238956 Local Header Offset   001A8C45 (1739845)\n-23895A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23ACFE Ext File Attributes   00000000 (0)\n+23AD02 Local Header Offset   001B22B4 (1778356)\n+23AD06 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23895A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23AD06: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238997 CENTRAL HEADER #1617  02014B50 (33639248)\n-23899B Created Zip Spec      14 (20) '2.0'\n-23899C Created OS            00 (0) 'MS-DOS'\n-23899D Extract Zip Spec      14 (20) '2.0'\n-23899E Extract OS            00 (0) 'MS-DOS'\n-23899F General Purpose Flag  0808 (2056)\n+23AD4E CENTRAL HEADER #1617  02014B50 (33639248)\n+23AD52 Created Zip Spec      14 (20) '2.0'\n+23AD53 Created OS            00 (0) 'MS-DOS'\n+23AD54 Extract Zip Spec      14 (20) '2.0'\n+23AD55 Extract OS            00 (0) 'MS-DOS'\n+23AD56 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2389A1 Compression Method    0008 (8) 'Deflated'\n-2389A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2389A7 CRC                   00000000 (0)\n-2389AB Compressed Size       00000002 (2)\n-2389AF Uncompressed Size     00000000 (0)\n-2389B3 Filename Length       002B (43)\n-2389B5 Extra Length          0000 (0)\n-2389B7 Comment Length        0000 (0)\n-2389B9 Disk Start            0000 (0)\n-2389BB Int File Attributes   0000 (0)\n+23AD58 Compression Method    0008 (8) 'Deflated'\n+23AD5A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23AD5E CRC                   2C654259 (744833625)\n+23AD62 Compressed Size       0000028C (652)\n+23AD66 Uncompressed Size     0000057E (1406)\n+23AD6A Filename Length       004F (79)\n+23AD6C Extra Length          0000 (0)\n+23AD6E Comment Length        0000 (0)\n+23AD70 Disk Start            0000 (0)\n+23AD72 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2389BD Ext File Attributes   00000000 (0)\n-2389C1 Local Header Offset   001A8F96 (1740694)\n-2389C5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23AD74 Ext File Attributes   00000000 (0)\n+23AD78 Local Header Offset   001B2B33 (1780531)\n+23AD7C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2389C5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23AD7C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2389F0 CENTRAL HEADER #1618  02014B50 (33639248)\n-2389F4 Created Zip Spec      14 (20) '2.0'\n-2389F5 Created OS            00 (0) 'MS-DOS'\n-2389F6 Extract Zip Spec      14 (20) '2.0'\n-2389F7 Extract OS            00 (0) 'MS-DOS'\n-2389F8 General Purpose Flag  0808 (2056)\n+23ADCB CENTRAL HEADER #1618  02014B50 (33639248)\n+23ADCF Created Zip Spec      14 (20) '2.0'\n+23ADD0 Created OS            00 (0) 'MS-DOS'\n+23ADD1 Extract Zip Spec      14 (20) '2.0'\n+23ADD2 Extract OS            00 (0) 'MS-DOS'\n+23ADD3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2389FA Compression Method    0008 (8) 'Deflated'\n-2389FC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238A00 CRC                   00000000 (0)\n-238A04 Compressed Size       00000002 (2)\n-238A08 Uncompressed Size     00000000 (0)\n-238A0C Filename Length       0033 (51)\n-238A0E Extra Length          0000 (0)\n-238A10 Comment Length        0000 (0)\n-238A12 Disk Start            0000 (0)\n-238A14 Int File Attributes   0000 (0)\n+23ADD5 Compression Method    0008 (8) 'Deflated'\n+23ADD7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23ADDB CRC                   00000000 (0)\n+23ADDF Compressed Size       00000002 (2)\n+23ADE3 Uncompressed Size     00000000 (0)\n+23ADE7 Filename Length       0038 (56)\n+23ADE9 Extra Length          0000 (0)\n+23ADEB Comment Length        0000 (0)\n+23ADED Disk Start            0000 (0)\n+23ADEF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238A16 Ext File Attributes   00000000 (0)\n-238A1A Local Header Offset   001A8FF1 (1740785)\n-238A1E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23ADF1 Ext File Attributes   00000000 (0)\n+23ADF5 Local Header Offset   001B2E3C (1781308)\n+23ADF9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238A1E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23ADF9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238A51 CENTRAL HEADER #1619  02014B50 (33639248)\n-238A55 Created Zip Spec      14 (20) '2.0'\n-238A56 Created OS            00 (0) 'MS-DOS'\n-238A57 Extract Zip Spec      14 (20) '2.0'\n-238A58 Extract OS            00 (0) 'MS-DOS'\n-238A59 General Purpose Flag  0808 (2056)\n+23AE31 CENTRAL HEADER #1619  02014B50 (33639248)\n+23AE35 Created Zip Spec      14 (20) '2.0'\n+23AE36 Created OS            00 (0) 'MS-DOS'\n+23AE37 Extract Zip Spec      14 (20) '2.0'\n+23AE38 Extract OS            00 (0) 'MS-DOS'\n+23AE39 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238A5B Compression Method    0008 (8) 'Deflated'\n-238A5D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238A61 CRC                   F393F7AB (4086560683)\n-238A65 Compressed Size       0000061C (1564)\n-238A69 Uncompressed Size     000014F7 (5367)\n-238A6D Filename Length       0056 (86)\n-238A6F Extra Length          0000 (0)\n-238A71 Comment Length        0000 (0)\n-238A73 Disk Start            0000 (0)\n-238A75 Int File Attributes   0000 (0)\n+23AE3B Compression Method    0008 (8) 'Deflated'\n+23AE3D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23AE41 CRC                   4486615B (1149657435)\n+23AE45 Compressed Size       000003ED (1005)\n+23AE49 Uncompressed Size     00000A8A (2698)\n+23AE4D Filename Length       003F (63)\n+23AE4F Extra Length          0000 (0)\n+23AE51 Comment Length        0000 (0)\n+23AE53 Disk Start            0000 (0)\n+23AE55 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238A77 Ext File Attributes   00000000 (0)\n-238A7B Local Header Offset   001A9054 (1740884)\n-238A7F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23AE57 Ext File Attributes   00000000 (0)\n+23AE5B Local Header Offset   001B2EA4 (1781412)\n+23AE5F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238A7F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23AE5F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238AD5 CENTRAL HEADER #1620  02014B50 (33639248)\n-238AD9 Created Zip Spec      14 (20) '2.0'\n-238ADA Created OS            00 (0) 'MS-DOS'\n-238ADB Extract Zip Spec      14 (20) '2.0'\n-238ADC Extract OS            00 (0) 'MS-DOS'\n-238ADD General Purpose Flag  0808 (2056)\n+23AE9E CENTRAL HEADER #1620  02014B50 (33639248)\n+23AEA2 Created Zip Spec      14 (20) '2.0'\n+23AEA3 Created OS            00 (0) 'MS-DOS'\n+23AEA4 Extract Zip Spec      14 (20) '2.0'\n+23AEA5 Extract OS            00 (0) 'MS-DOS'\n+23AEA6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238ADF Compression Method    0008 (8) 'Deflated'\n-238AE1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238AE5 CRC                   836D6DDB (2204986843)\n-238AE9 Compressed Size       000005BA (1466)\n-238AED Uncompressed Size     000014E0 (5344)\n-238AF1 Filename Length       0057 (87)\n-238AF3 Extra Length          0000 (0)\n-238AF5 Comment Length        0000 (0)\n-238AF7 Disk Start            0000 (0)\n-238AF9 Int File Attributes   0000 (0)\n+23AEA8 Compression Method    0008 (8) 'Deflated'\n+23AEAA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23AEAE CRC                   1E03A4CD (503555277)\n+23AEB2 Compressed Size       0000004A (74)\n+23AEB6 Uncompressed Size     0000004E (78)\n+23AEBA Filename Length       0046 (70)\n+23AEBC Extra Length          0000 (0)\n+23AEBE Comment Length        0000 (0)\n+23AEC0 Disk Start            0000 (0)\n+23AEC2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238AFB Ext File Attributes   00000000 (0)\n-238AFF Local Header Offset   001A96F4 (1742580)\n-238B03 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23AEC4 Ext File Attributes   00000000 (0)\n+23AEC8 Local Header Offset   001B32FE (1782526)\n+23AECC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238B03: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23AECC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238B5A CENTRAL HEADER #1621  02014B50 (33639248)\n-238B5E Created Zip Spec      14 (20) '2.0'\n-238B5F Created OS            00 (0) 'MS-DOS'\n-238B60 Extract Zip Spec      14 (20) '2.0'\n-238B61 Extract OS            00 (0) 'MS-DOS'\n-238B62 General Purpose Flag  0808 (2056)\n+23AF12 CENTRAL HEADER #1621  02014B50 (33639248)\n+23AF16 Created Zip Spec      14 (20) '2.0'\n+23AF17 Created OS            00 (0) 'MS-DOS'\n+23AF18 Extract Zip Spec      14 (20) '2.0'\n+23AF19 Extract OS            00 (0) 'MS-DOS'\n+23AF1A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238B64 Compression Method    0008 (8) 'Deflated'\n-238B66 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238B6A CRC                   B1C72E69 (2982620777)\n-238B6E Compressed Size       00000333 (819)\n-238B72 Uncompressed Size     0000077E (1918)\n-238B76 Filename Length       0058 (88)\n-238B78 Extra Length          0000 (0)\n-238B7A Comment Length        0000 (0)\n-238B7C Disk Start            0000 (0)\n-238B7E Int File Attributes   0000 (0)\n+23AF1C Compression Method    0008 (8) 'Deflated'\n+23AF1E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23AF22 CRC                   00000000 (0)\n+23AF26 Compressed Size       00000002 (2)\n+23AF2A Uncompressed Size     00000000 (0)\n+23AF2E Filename Length       0018 (24)\n+23AF30 Extra Length          0000 (0)\n+23AF32 Comment Length        0000 (0)\n+23AF34 Disk Start            0000 (0)\n+23AF36 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238B80 Ext File Attributes   00000000 (0)\n-238B84 Local Header Offset   001A9D33 (1744179)\n-238B88 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23AF38 Ext File Attributes   00000000 (0)\n+23AF3C Local Header Offset   001B33BC (1782716)\n+23AF40 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238B88: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23AF40: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238BE0 CENTRAL HEADER #1622  02014B50 (33639248)\n-238BE4 Created Zip Spec      14 (20) '2.0'\n-238BE5 Created OS            00 (0) 'MS-DOS'\n-238BE6 Extract Zip Spec      14 (20) '2.0'\n-238BE7 Extract OS            00 (0) 'MS-DOS'\n-238BE8 General Purpose Flag  0808 (2056)\n+23AF58 CENTRAL HEADER #1622  02014B50 (33639248)\n+23AF5C Created Zip Spec      14 (20) '2.0'\n+23AF5D Created OS            00 (0) 'MS-DOS'\n+23AF5E Extract Zip Spec      14 (20) '2.0'\n+23AF5F Extract OS            00 (0) 'MS-DOS'\n+23AF60 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238BEA Compression Method    0008 (8) 'Deflated'\n-238BEC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238BF0 CRC                   78006A1A (2013293082)\n-238BF4 Compressed Size       00000592 (1426)\n-238BF8 Uncompressed Size     000012A8 (4776)\n-238BFC Filename Length       0052 (82)\n-238BFE Extra Length          0000 (0)\n-238C00 Comment Length        0000 (0)\n-238C02 Disk Start            0000 (0)\n-238C04 Int File Attributes   0000 (0)\n+23AF62 Compression Method    0008 (8) 'Deflated'\n+23AF64 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23AF68 CRC                   A0D1D7AD (2698106797)\n+23AF6C Compressed Size       00000210 (528)\n+23AF70 Uncompressed Size     000003A7 (935)\n+23AF74 Filename Length       0022 (34)\n+23AF76 Extra Length          0000 (0)\n+23AF78 Comment Length        0000 (0)\n+23AF7A Disk Start            0000 (0)\n+23AF7C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238C06 Ext File Attributes   00000000 (0)\n-238C0A Local Header Offset   001AA0EC (1745132)\n-238C0E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23AF7E Ext File Attributes   00000000 (0)\n+23AF82 Local Header Offset   001B3404 (1782788)\n+23AF86 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238C0E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23AF86: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238C60 CENTRAL HEADER #1623  02014B50 (33639248)\n-238C64 Created Zip Spec      14 (20) '2.0'\n-238C65 Created OS            00 (0) 'MS-DOS'\n-238C66 Extract Zip Spec      14 (20) '2.0'\n-238C67 Extract OS            00 (0) 'MS-DOS'\n-238C68 General Purpose Flag  0808 (2056)\n+23AFA8 CENTRAL HEADER #1623  02014B50 (33639248)\n+23AFAC Created Zip Spec      14 (20) '2.0'\n+23AFAD Created OS            00 (0) 'MS-DOS'\n+23AFAE Extract Zip Spec      14 (20) '2.0'\n+23AFAF Extract OS            00 (0) 'MS-DOS'\n+23AFB0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238C6A Compression Method    0008 (8) 'Deflated'\n-238C6C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238C70 CRC                   E8DE57DA (3906885594)\n-238C74 Compressed Size       00000616 (1558)\n-238C78 Uncompressed Size     00001501 (5377)\n-238C7C Filename Length       0053 (83)\n-238C7E Extra Length          0000 (0)\n-238C80 Comment Length        0000 (0)\n-238C82 Disk Start            0000 (0)\n-238C84 Int File Attributes   0000 (0)\n+23AFB2 Compression Method    0008 (8) 'Deflated'\n+23AFB4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23AFB8 CRC                   36E8AAE8 (921217768)\n+23AFBC Compressed Size       00000248 (584)\n+23AFC0 Uncompressed Size     0000043E (1086)\n+23AFC4 Filename Length       0029 (41)\n+23AFC6 Extra Length          0000 (0)\n+23AFC8 Comment Length        0000 (0)\n+23AFCA Disk Start            0000 (0)\n+23AFCC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238C86 Ext File Attributes   00000000 (0)\n-238C8A Local Header Offset   001AA6FE (1746686)\n-238C8E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23AFCE Ext File Attributes   00000000 (0)\n+23AFD2 Local Header Offset   001B3664 (1783396)\n+23AFD6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238C8E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23AFD6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238CE1 CENTRAL HEADER #1624  02014B50 (33639248)\n-238CE5 Created Zip Spec      14 (20) '2.0'\n-238CE6 Created OS            00 (0) 'MS-DOS'\n-238CE7 Extract Zip Spec      14 (20) '2.0'\n-238CE8 Extract OS            00 (0) 'MS-DOS'\n-238CE9 General Purpose Flag  0808 (2056)\n+23AFFF CENTRAL HEADER #1624  02014B50 (33639248)\n+23B003 Created Zip Spec      14 (20) '2.0'\n+23B004 Created OS            00 (0) 'MS-DOS'\n+23B005 Extract Zip Spec      14 (20) '2.0'\n+23B006 Extract OS            00 (0) 'MS-DOS'\n+23B007 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238CEB Compression Method    0008 (8) 'Deflated'\n-238CED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238CF1 CRC                   DB97F7FB (3684169723)\n-238CF5 Compressed Size       00000420 (1056)\n-238CF9 Uncompressed Size     00000987 (2439)\n-238CFD Filename Length       0054 (84)\n-238CFF Extra Length          0000 (0)\n-238D01 Comment Length        0000 (0)\n-238D03 Disk Start            0000 (0)\n-238D05 Int File Attributes   0000 (0)\n+23B009 Compression Method    0008 (8) 'Deflated'\n+23B00B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B00F CRC                   00000000 (0)\n+23B013 Compressed Size       00000002 (2)\n+23B017 Uncompressed Size     00000000 (0)\n+23B01B Filename Length       0020 (32)\n+23B01D Extra Length          0000 (0)\n+23B01F Comment Length        0000 (0)\n+23B021 Disk Start            0000 (0)\n+23B023 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238D07 Ext File Attributes   00000000 (0)\n-238D0B Local Header Offset   001AAD95 (1748373)\n-238D0F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B025 Ext File Attributes   00000000 (0)\n+23B029 Local Header Offset   001B3903 (1784067)\n+23B02D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238D0F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B02D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238D63 CENTRAL HEADER #1625  02014B50 (33639248)\n-238D67 Created Zip Spec      14 (20) '2.0'\n-238D68 Created OS            00 (0) 'MS-DOS'\n-238D69 Extract Zip Spec      14 (20) '2.0'\n-238D6A Extract OS            00 (0) 'MS-DOS'\n-238D6B General Purpose Flag  0808 (2056)\n+23B04D CENTRAL HEADER #1625  02014B50 (33639248)\n+23B051 Created Zip Spec      14 (20) '2.0'\n+23B052 Created OS            00 (0) 'MS-DOS'\n+23B053 Extract Zip Spec      14 (20) '2.0'\n+23B054 Extract OS            00 (0) 'MS-DOS'\n+23B055 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238D6D Compression Method    0008 (8) 'Deflated'\n-238D6F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238D73 CRC                   FACFCF03 (4207922947)\n-238D77 Compressed Size       00000909 (2313)\n-238D7B Uncompressed Size     00001FCC (8140)\n-238D7F Filename Length       0045 (69)\n-238D81 Extra Length          0000 (0)\n-238D83 Comment Length        0000 (0)\n-238D85 Disk Start            0000 (0)\n-238D87 Int File Attributes   0000 (0)\n+23B057 Compression Method    0008 (8) 'Deflated'\n+23B059 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B05D CRC                   0C0A434B (201999179)\n+23B061 Compressed Size       00000376 (886)\n+23B065 Uncompressed Size     0000081B (2075)\n+23B069 Filename Length       0039 (57)\n+23B06B Extra Length          0000 (0)\n+23B06D Comment Length        0000 (0)\n+23B06F Disk Start            0000 (0)\n+23B071 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238D89 Ext File Attributes   00000000 (0)\n-238D8D Local Header Offset   001AB237 (1749559)\n-238D91 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B073 Ext File Attributes   00000000 (0)\n+23B077 Local Header Offset   001B3953 (1784147)\n+23B07B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238D91: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B07B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238DD6 CENTRAL HEADER #1626  02014B50 (33639248)\n-238DDA Created Zip Spec      14 (20) '2.0'\n-238DDB Created OS            00 (0) 'MS-DOS'\n-238DDC Extract Zip Spec      14 (20) '2.0'\n-238DDD Extract OS            00 (0) 'MS-DOS'\n-238DDE General Purpose Flag  0808 (2056)\n+23B0B4 CENTRAL HEADER #1626  02014B50 (33639248)\n+23B0B8 Created Zip Spec      14 (20) '2.0'\n+23B0B9 Created OS            00 (0) 'MS-DOS'\n+23B0BA Extract Zip Spec      14 (20) '2.0'\n+23B0BB Extract OS            00 (0) 'MS-DOS'\n+23B0BC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238DE0 Compression Method    0008 (8) 'Deflated'\n-238DE2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238DE6 CRC                   8EB7D7DD (2394413021)\n-238DEA Compressed Size       000003DD (989)\n-238DEE Uncompressed Size     00000A11 (2577)\n-238DF2 Filename Length       0050 (80)\n-238DF4 Extra Length          0000 (0)\n-238DF6 Comment Length        0000 (0)\n-238DF8 Disk Start            0000 (0)\n-238DFA Int File Attributes   0000 (0)\n+23B0BE Compression Method    0008 (8) 'Deflated'\n+23B0C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B0C4 CRC                   7421F96B (1948383595)\n+23B0C8 Compressed Size       000002AF (687)\n+23B0CC Uncompressed Size     00000763 (1891)\n+23B0D0 Filename Length       0027 (39)\n+23B0D2 Extra Length          0000 (0)\n+23B0D4 Comment Length        0000 (0)\n+23B0D6 Disk Start            0000 (0)\n+23B0D8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238DFC Ext File Attributes   00000000 (0)\n-238E00 Local Header Offset   001ABBB3 (1751987)\n-238E04 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B0DA Ext File Attributes   00000000 (0)\n+23B0DE Local Header Offset   001B3D30 (1785136)\n+23B0E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238E04: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B0E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238E54 CENTRAL HEADER #1627  02014B50 (33639248)\n-238E58 Created Zip Spec      14 (20) '2.0'\n-238E59 Created OS            00 (0) 'MS-DOS'\n-238E5A Extract Zip Spec      14 (20) '2.0'\n-238E5B Extract OS            00 (0) 'MS-DOS'\n-238E5C General Purpose Flag  0808 (2056)\n+23B109 CENTRAL HEADER #1627  02014B50 (33639248)\n+23B10D Created Zip Spec      14 (20) '2.0'\n+23B10E Created OS            00 (0) 'MS-DOS'\n+23B10F Extract Zip Spec      14 (20) '2.0'\n+23B110 Extract OS            00 (0) 'MS-DOS'\n+23B111 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238E5E Compression Method    0008 (8) 'Deflated'\n-238E60 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238E64 CRC                   00000000 (0)\n-238E68 Compressed Size       00000002 (2)\n-238E6C Uncompressed Size     00000000 (0)\n-238E70 Filename Length       003B (59)\n-238E72 Extra Length          0000 (0)\n-238E74 Comment Length        0000 (0)\n-238E76 Disk Start            0000 (0)\n-238E78 Int File Attributes   0000 (0)\n+23B113 Compression Method    0008 (8) 'Deflated'\n+23B115 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B119 CRC                   D19F2618 (3516868120)\n+23B11D Compressed Size       0000090B (2315)\n+23B121 Uncompressed Size     00004BE5 (19429)\n+23B125 Filename Length       0021 (33)\n+23B127 Extra Length          0000 (0)\n+23B129 Comment Length        0000 (0)\n+23B12B Disk Start            0000 (0)\n+23B12D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238E7A Ext File Attributes   00000000 (0)\n-238E7E Local Header Offset   001AC00E (1753102)\n-238E82 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B12F Ext File Attributes   00000000 (0)\n+23B133 Local Header Offset   001B4034 (1785908)\n+23B137 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238E82: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B137: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238EBD CENTRAL HEADER #1628  02014B50 (33639248)\n-238EC1 Created Zip Spec      14 (20) '2.0'\n-238EC2 Created OS            00 (0) 'MS-DOS'\n-238EC3 Extract Zip Spec      14 (20) '2.0'\n-238EC4 Extract OS            00 (0) 'MS-DOS'\n-238EC5 General Purpose Flag  0808 (2056)\n+23B158 CENTRAL HEADER #1628  02014B50 (33639248)\n+23B15C Created Zip Spec      14 (20) '2.0'\n+23B15D Created OS            00 (0) 'MS-DOS'\n+23B15E Extract Zip Spec      14 (20) '2.0'\n+23B15F Extract OS            00 (0) 'MS-DOS'\n+23B160 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238EC7 Compression Method    0008 (8) 'Deflated'\n-238EC9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238ECD CRC                   3E2D4260 (1043153504)\n-238ED1 Compressed Size       000010B5 (4277)\n-238ED5 Uncompressed Size     00007BD0 (31696)\n-238ED9 Filename Length       0048 (72)\n-238EDB Extra Length          0000 (0)\n-238EDD Comment Length        0000 (0)\n-238EDF Disk Start            0000 (0)\n-238EE1 Int File Attributes   0000 (0)\n+23B162 Compression Method    0008 (8) 'Deflated'\n+23B164 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B168 CRC                   00000000 (0)\n+23B16C Compressed Size       00000002 (2)\n+23B170 Uncompressed Size     00000000 (0)\n+23B174 Filename Length       0022 (34)\n+23B176 Extra Length          0000 (0)\n+23B178 Comment Length        0000 (0)\n+23B17A Disk Start            0000 (0)\n+23B17C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238EE3 Ext File Attributes   00000000 (0)\n-238EE7 Local Header Offset   001AC079 (1753209)\n-238EEB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B17E Ext File Attributes   00000000 (0)\n+23B182 Local Header Offset   001B498E (1788302)\n+23B186 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238EEB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B186: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238F33 CENTRAL HEADER #1629  02014B50 (33639248)\n-238F37 Created Zip Spec      14 (20) '2.0'\n-238F38 Created OS            00 (0) 'MS-DOS'\n-238F39 Extract Zip Spec      14 (20) '2.0'\n-238F3A Extract OS            00 (0) 'MS-DOS'\n-238F3B General Purpose Flag  0808 (2056)\n+23B1A8 CENTRAL HEADER #1629  02014B50 (33639248)\n+23B1AC Created Zip Spec      14 (20) '2.0'\n+23B1AD Created OS            00 (0) 'MS-DOS'\n+23B1AE Extract Zip Spec      14 (20) '2.0'\n+23B1AF Extract OS            00 (0) 'MS-DOS'\n+23B1B0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238F3D Compression Method    0008 (8) 'Deflated'\n-238F3F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238F43 CRC                   218FA1FC (563061244)\n-238F47 Compressed Size       000025A0 (9632)\n-238F4B Uncompressed Size     00018F15 (102165)\n-238F4F Filename Length       004B (75)\n-238F51 Extra Length          0000 (0)\n-238F53 Comment Length        0000 (0)\n-238F55 Disk Start            0000 (0)\n-238F57 Int File Attributes   0000 (0)\n+23B1B2 Compression Method    0008 (8) 'Deflated'\n+23B1B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B1B8 CRC                   AB4B3845 (2873833541)\n+23B1BC Compressed Size       00000216 (534)\n+23B1C0 Uncompressed Size     000003C1 (961)\n+23B1C4 Filename Length       002F (47)\n+23B1C6 Extra Length          0000 (0)\n+23B1C8 Comment Length        0000 (0)\n+23B1CA Disk Start            0000 (0)\n+23B1CC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238F59 Ext File Attributes   00000000 (0)\n-238F5D Local Header Offset   001AD1A4 (1757604)\n-238F61 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B1CE Ext File Attributes   00000000 (0)\n+23B1D2 Local Header Offset   001B49E0 (1788384)\n+23B1D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238F61: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B1D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238FAC CENTRAL HEADER #1630  02014B50 (33639248)\n-238FB0 Created Zip Spec      14 (20) '2.0'\n-238FB1 Created OS            00 (0) 'MS-DOS'\n-238FB2 Extract Zip Spec      14 (20) '2.0'\n-238FB3 Extract OS            00 (0) 'MS-DOS'\n-238FB4 General Purpose Flag  0808 (2056)\n+23B205 CENTRAL HEADER #1630  02014B50 (33639248)\n+23B209 Created Zip Spec      14 (20) '2.0'\n+23B20A Created OS            00 (0) 'MS-DOS'\n+23B20B Extract Zip Spec      14 (20) '2.0'\n+23B20C Extract OS            00 (0) 'MS-DOS'\n+23B20D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-238FB6 Compression Method    0008 (8) 'Deflated'\n-238FB8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-238FBC CRC                   00000000 (0)\n-238FC0 Compressed Size       00000002 (2)\n-238FC4 Uncompressed Size     00000000 (0)\n-238FC8 Filename Length       001E (30)\n-238FCA Extra Length          0000 (0)\n-238FCC Comment Length        0000 (0)\n-238FCE Disk Start            0000 (0)\n-238FD0 Int File Attributes   0000 (0)\n+23B20F Compression Method    0008 (8) 'Deflated'\n+23B211 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B215 CRC                   F8808D33 (4169174323)\n+23B219 Compressed Size       0000022C (556)\n+23B21D Uncompressed Size     0000040A (1034)\n+23B221 Filename Length       0038 (56)\n+23B223 Extra Length          0000 (0)\n+23B225 Comment Length        0000 (0)\n+23B227 Disk Start            0000 (0)\n+23B229 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-238FD2 Ext File Attributes   00000000 (0)\n-238FD6 Local Header Offset   001AF7BD (1767357)\n-238FDA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B22B Ext File Attributes   00000000 (0)\n+23B22F Local Header Offset   001B4C53 (1789011)\n+23B233 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x238FDA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B233: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-238FF8 CENTRAL HEADER #1631  02014B50 (33639248)\n-238FFC Created Zip Spec      14 (20) '2.0'\n-238FFD Created OS            00 (0) 'MS-DOS'\n-238FFE Extract Zip Spec      14 (20) '2.0'\n-238FFF Extract OS            00 (0) 'MS-DOS'\n-239000 General Purpose Flag  0808 (2056)\n+23B26B CENTRAL HEADER #1631  02014B50 (33639248)\n+23B26F Created Zip Spec      14 (20) '2.0'\n+23B270 Created OS            00 (0) 'MS-DOS'\n+23B271 Extract Zip Spec      14 (20) '2.0'\n+23B272 Extract OS            00 (0) 'MS-DOS'\n+23B273 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239002 Compression Method    0008 (8) 'Deflated'\n-239004 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239008 CRC                   00000000 (0)\n-23900C Compressed Size       00000002 (2)\n-239010 Uncompressed Size     00000000 (0)\n-239014 Filename Length       0026 (38)\n-239016 Extra Length          0000 (0)\n-239018 Comment Length        0000 (0)\n-23901A Disk Start            0000 (0)\n-23901C Int File Attributes   0000 (0)\n+23B275 Compression Method    0008 (8) 'Deflated'\n+23B277 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B27B CRC                   00000000 (0)\n+23B27F Compressed Size       00000002 (2)\n+23B283 Uncompressed Size     00000000 (0)\n+23B287 Filename Length       0020 (32)\n+23B289 Extra Length          0000 (0)\n+23B28B Comment Length        0000 (0)\n+23B28D Disk Start            0000 (0)\n+23B28F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23901E Ext File Attributes   00000000 (0)\n-239022 Local Header Offset   001AF80B (1767435)\n-239026 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B291 Ext File Attributes   00000000 (0)\n+23B295 Local Header Offset   001B4EE5 (1789669)\n+23B299 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239026: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B299: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23904C CENTRAL HEADER #1632  02014B50 (33639248)\n-239050 Created Zip Spec      14 (20) '2.0'\n-239051 Created OS            00 (0) 'MS-DOS'\n-239052 Extract Zip Spec      14 (20) '2.0'\n-239053 Extract OS            00 (0) 'MS-DOS'\n-239054 General Purpose Flag  0808 (2056)\n+23B2B9 CENTRAL HEADER #1632  02014B50 (33639248)\n+23B2BD Created Zip Spec      14 (20) '2.0'\n+23B2BE Created OS            00 (0) 'MS-DOS'\n+23B2BF Extract Zip Spec      14 (20) '2.0'\n+23B2C0 Extract OS            00 (0) 'MS-DOS'\n+23B2C1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239056 Compression Method    0008 (8) 'Deflated'\n-239058 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23905C CRC                   00000000 (0)\n-239060 Compressed Size       00000002 (2)\n-239064 Uncompressed Size     00000000 (0)\n-239068 Filename Length       0030 (48)\n-23906A Extra Length          0000 (0)\n-23906C Comment Length        0000 (0)\n-23906E Disk Start            0000 (0)\n-239070 Int File Attributes   0000 (0)\n+23B2C3 Compression Method    0008 (8) 'Deflated'\n+23B2C5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B2C9 CRC                   75D97425 (1977185317)\n+23B2CD Compressed Size       0000021A (538)\n+23B2D1 Uncompressed Size     000003C7 (967)\n+23B2D5 Filename Length       0032 (50)\n+23B2D7 Extra Length          0000 (0)\n+23B2D9 Comment Length        0000 (0)\n+23B2DB Disk Start            0000 (0)\n+23B2DD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239072 Ext File Attributes   00000000 (0)\n-239076 Local Header Offset   001AF861 (1767521)\n-23907A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B2DF Ext File Attributes   00000000 (0)\n+23B2E3 Local Header Offset   001B4F35 (1789749)\n+23B2E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23907A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B2E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2390AA CENTRAL HEADER #1633  02014B50 (33639248)\n-2390AE Created Zip Spec      14 (20) '2.0'\n-2390AF Created OS            00 (0) 'MS-DOS'\n-2390B0 Extract Zip Spec      14 (20) '2.0'\n-2390B1 Extract OS            00 (0) 'MS-DOS'\n-2390B2 General Purpose Flag  0808 (2056)\n+23B319 CENTRAL HEADER #1633  02014B50 (33639248)\n+23B31D Created Zip Spec      14 (20) '2.0'\n+23B31E Created OS            00 (0) 'MS-DOS'\n+23B31F Extract Zip Spec      14 (20) '2.0'\n+23B320 Extract OS            00 (0) 'MS-DOS'\n+23B321 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2390B4 Compression Method    0008 (8) 'Deflated'\n-2390B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2390BA CRC                   37B6CF89 (934727561)\n-2390BE Compressed Size       00000669 (1641)\n-2390C2 Uncompressed Size     000013FA (5114)\n-2390C6 Filename Length       0042 (66)\n-2390C8 Extra Length          0000 (0)\n-2390CA Comment Length        0000 (0)\n-2390CC Disk Start            0000 (0)\n-2390CE Int File Attributes   0000 (0)\n+23B323 Compression Method    0008 (8) 'Deflated'\n+23B325 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B329 CRC                   00000000 (0)\n+23B32D Compressed Size       00000002 (2)\n+23B331 Uncompressed Size     00000000 (0)\n+23B335 Filename Length       0023 (35)\n+23B337 Extra Length          0000 (0)\n+23B339 Comment Length        0000 (0)\n+23B33B Disk Start            0000 (0)\n+23B33D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2390D0 Ext File Attributes   00000000 (0)\n-2390D4 Local Header Offset   001AF8C1 (1767617)\n-2390D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B33F Ext File Attributes   00000000 (0)\n+23B343 Local Header Offset   001B51AF (1790383)\n+23B347 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2390D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B347: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23911A CENTRAL HEADER #1634  02014B50 (33639248)\n-23911E Created Zip Spec      14 (20) '2.0'\n-23911F Created OS            00 (0) 'MS-DOS'\n-239120 Extract Zip Spec      14 (20) '2.0'\n-239121 Extract OS            00 (0) 'MS-DOS'\n-239122 General Purpose Flag  0808 (2056)\n+23B36A CENTRAL HEADER #1634  02014B50 (33639248)\n+23B36E Created Zip Spec      14 (20) '2.0'\n+23B36F Created OS            00 (0) 'MS-DOS'\n+23B370 Extract Zip Spec      14 (20) '2.0'\n+23B371 Extract OS            00 (0) 'MS-DOS'\n+23B372 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239124 Compression Method    0008 (8) 'Deflated'\n-239126 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23912A CRC                   79761F08 (2037784328)\n-23912E Compressed Size       000005D3 (1491)\n-239132 Uncompressed Size     0000105D (4189)\n-239136 Filename Length       0052 (82)\n-239138 Extra Length          0000 (0)\n-23913A Comment Length        0000 (0)\n-23913C Disk Start            0000 (0)\n-23913E Int File Attributes   0000 (0)\n+23B374 Compression Method    0008 (8) 'Deflated'\n+23B376 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B37A CRC                   1B82D5A6 (461559206)\n+23B37E Compressed Size       0000021D (541)\n+23B382 Uncompressed Size     000003C9 (969)\n+23B386 Filename Length       0033 (51)\n+23B388 Extra Length          0000 (0)\n+23B38A Comment Length        0000 (0)\n+23B38C Disk Start            0000 (0)\n+23B38E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239140 Ext File Attributes   00000000 (0)\n-239144 Local Header Offset   001AFF9A (1769370)\n-239148 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B390 Ext File Attributes   00000000 (0)\n+23B394 Local Header Offset   001B5202 (1790466)\n+23B398 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239148: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B398: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23919A CENTRAL HEADER #1635  02014B50 (33639248)\n-23919E Created Zip Spec      14 (20) '2.0'\n-23919F Created OS            00 (0) 'MS-DOS'\n-2391A0 Extract Zip Spec      14 (20) '2.0'\n-2391A1 Extract OS            00 (0) 'MS-DOS'\n-2391A2 General Purpose Flag  0808 (2056)\n+23B3CB CENTRAL HEADER #1635  02014B50 (33639248)\n+23B3CF Created Zip Spec      14 (20) '2.0'\n+23B3D0 Created OS            00 (0) 'MS-DOS'\n+23B3D1 Extract Zip Spec      14 (20) '2.0'\n+23B3D2 Extract OS            00 (0) 'MS-DOS'\n+23B3D3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2391A4 Compression Method    0008 (8) 'Deflated'\n-2391A6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2391AA CRC                   DDA3D8AF (3718502575)\n-2391AE Compressed Size       000002B1 (689)\n-2391B2 Uncompressed Size     00000649 (1609)\n-2391B6 Filename Length       0059 (89)\n-2391B8 Extra Length          0000 (0)\n-2391BA Comment Length        0000 (0)\n-2391BC Disk Start            0000 (0)\n-2391BE Int File Attributes   0000 (0)\n+23B3D5 Compression Method    0008 (8) 'Deflated'\n+23B3D7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B3DB CRC                   E66C1AF8 (3865844472)\n+23B3DF Compressed Size       0000021F (543)\n+23B3E3 Uncompressed Size     000003CB (971)\n+23B3E7 Filename Length       0034 (52)\n+23B3E9 Extra Length          0000 (0)\n+23B3EB Comment Length        0000 (0)\n+23B3ED Disk Start            0000 (0)\n+23B3EF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2391C0 Ext File Attributes   00000000 (0)\n-2391C4 Local Header Offset   001B05ED (1770989)\n-2391C8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B3F1 Ext File Attributes   00000000 (0)\n+23B3F5 Local Header Offset   001B5480 (1791104)\n+23B3F9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2391C8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B3F9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239221 CENTRAL HEADER #1636  02014B50 (33639248)\n-239225 Created Zip Spec      14 (20) '2.0'\n-239226 Created OS            00 (0) 'MS-DOS'\n-239227 Extract Zip Spec      14 (20) '2.0'\n-239228 Extract OS            00 (0) 'MS-DOS'\n-239229 General Purpose Flag  0808 (2056)\n+23B42D CENTRAL HEADER #1636  02014B50 (33639248)\n+23B431 Created Zip Spec      14 (20) '2.0'\n+23B432 Created OS            00 (0) 'MS-DOS'\n+23B433 Extract Zip Spec      14 (20) '2.0'\n+23B434 Extract OS            00 (0) 'MS-DOS'\n+23B435 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23922B Compression Method    0008 (8) 'Deflated'\n-23922D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239231 CRC                   00000000 (0)\n-239235 Compressed Size       00000002 (2)\n-239239 Uncompressed Size     00000000 (0)\n-23923D Filename Length       002D (45)\n-23923F Extra Length          0000 (0)\n-239241 Comment Length        0000 (0)\n-239243 Disk Start            0000 (0)\n-239245 Int File Attributes   0000 (0)\n+23B437 Compression Method    0008 (8) 'Deflated'\n+23B439 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B43D CRC                   A93FA4B2 (2839520434)\n+23B441 Compressed Size       000002BD (701)\n+23B445 Uncompressed Size     000006AC (1708)\n+23B449 Filename Length       0035 (53)\n+23B44B Extra Length          0000 (0)\n+23B44D Comment Length        0000 (0)\n+23B44F Disk Start            0000 (0)\n+23B451 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239247 Ext File Attributes   00000000 (0)\n-23924B Local Header Offset   001B0925 (1771813)\n-23924F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B453 Ext File Attributes   00000000 (0)\n+23B457 Local Header Offset   001B5701 (1791745)\n+23B45B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23924F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B45B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23927C CENTRAL HEADER #1637  02014B50 (33639248)\n-239280 Created Zip Spec      14 (20) '2.0'\n-239281 Created OS            00 (0) 'MS-DOS'\n-239282 Extract Zip Spec      14 (20) '2.0'\n-239283 Extract OS            00 (0) 'MS-DOS'\n-239284 General Purpose Flag  0808 (2056)\n+23B490 CENTRAL HEADER #1637  02014B50 (33639248)\n+23B494 Created Zip Spec      14 (20) '2.0'\n+23B495 Created OS            00 (0) 'MS-DOS'\n+23B496 Extract Zip Spec      14 (20) '2.0'\n+23B497 Extract OS            00 (0) 'MS-DOS'\n+23B498 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239286 Compression Method    0008 (8) 'Deflated'\n-239288 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23928C CRC                   52ECC716 (1391249174)\n-239290 Compressed Size       00000C7C (3196)\n-239294 Uncompressed Size     00002E2A (11818)\n-239298 Filename Length       004C (76)\n-23929A Extra Length          0000 (0)\n-23929C Comment Length        0000 (0)\n-23929E Disk Start            0000 (0)\n-2392A0 Int File Attributes   0000 (0)\n+23B49A Compression Method    0008 (8) 'Deflated'\n+23B49C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B4A0 CRC                   00000000 (0)\n+23B4A4 Compressed Size       00000002 (2)\n+23B4A8 Uncompressed Size     00000000 (0)\n+23B4AC Filename Length       0020 (32)\n+23B4AE Extra Length          0000 (0)\n+23B4B0 Comment Length        0000 (0)\n+23B4B2 Disk Start            0000 (0)\n+23B4B4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2392A2 Ext File Attributes   00000000 (0)\n-2392A6 Local Header Offset   001B0982 (1771906)\n-2392AA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B4B6 Ext File Attributes   00000000 (0)\n+23B4BA Local Header Offset   001B5A21 (1792545)\n+23B4BE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2392AA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B4BE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2392F6 CENTRAL HEADER #1638  02014B50 (33639248)\n-2392FA Created Zip Spec      14 (20) '2.0'\n-2392FB Created OS            00 (0) 'MS-DOS'\n-2392FC Extract Zip Spec      14 (20) '2.0'\n-2392FD Extract OS            00 (0) 'MS-DOS'\n-2392FE General Purpose Flag  0808 (2056)\n+23B4DE CENTRAL HEADER #1638  02014B50 (33639248)\n+23B4E2 Created Zip Spec      14 (20) '2.0'\n+23B4E3 Created OS            00 (0) 'MS-DOS'\n+23B4E4 Extract Zip Spec      14 (20) '2.0'\n+23B4E5 Extract OS            00 (0) 'MS-DOS'\n+23B4E6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239300 Compression Method    0008 (8) 'Deflated'\n-239302 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239306 CRC                   BB1FB1EA (3139416554)\n-23930A Compressed Size       0000026E (622)\n-23930E Uncompressed Size     0000051A (1306)\n-239312 Filename Length       0053 (83)\n-239314 Extra Length          0000 (0)\n-239316 Comment Length        0000 (0)\n-239318 Disk Start            0000 (0)\n-23931A Int File Attributes   0000 (0)\n+23B4E8 Compression Method    0008 (8) 'Deflated'\n+23B4EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B4EE CRC                   BEC11652 (3200325202)\n+23B4F2 Compressed Size       00000254 (596)\n+23B4F6 Uncompressed Size     000004CE (1230)\n+23B4FA Filename Length       002B (43)\n+23B4FC Extra Length          0000 (0)\n+23B4FE Comment Length        0000 (0)\n+23B500 Disk Start            0000 (0)\n+23B502 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23931C Ext File Attributes   00000000 (0)\n-239320 Local Header Offset   001B1678 (1775224)\n-239324 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B504 Ext File Attributes   00000000 (0)\n+23B508 Local Header Offset   001B5A71 (1792625)\n+23B50C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239324: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B50C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239377 CENTRAL HEADER #1639  02014B50 (33639248)\n-23937B Created Zip Spec      14 (20) '2.0'\n-23937C Created OS            00 (0) 'MS-DOS'\n-23937D Extract Zip Spec      14 (20) '2.0'\n-23937E Extract OS            00 (0) 'MS-DOS'\n-23937F General Purpose Flag  0808 (2056)\n+23B537 CENTRAL HEADER #1639  02014B50 (33639248)\n+23B53B Created Zip Spec      14 (20) '2.0'\n+23B53C Created OS            00 (0) 'MS-DOS'\n+23B53D Extract Zip Spec      14 (20) '2.0'\n+23B53E Extract OS            00 (0) 'MS-DOS'\n+23B53F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239381 Compression Method    0008 (8) 'Deflated'\n-239383 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239387 CRC                   00000000 (0)\n-23938B Compressed Size       00000002 (2)\n-23938F Uncompressed Size     00000000 (0)\n-239393 Filename Length       002C (44)\n-239395 Extra Length          0000 (0)\n-239397 Comment Length        0000 (0)\n-239399 Disk Start            0000 (0)\n-23939B Int File Attributes   0000 (0)\n+23B541 Compression Method    0008 (8) 'Deflated'\n+23B543 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B547 CRC                   E8509F41 (3897597761)\n+23B54B Compressed Size       0000022B (555)\n+23B54F Uncompressed Size     000003ED (1005)\n+23B553 Filename Length       0032 (50)\n+23B555 Extra Length          0000 (0)\n+23B557 Comment Length        0000 (0)\n+23B559 Disk Start            0000 (0)\n+23B55B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23939D Ext File Attributes   00000000 (0)\n-2393A1 Local Header Offset   001B1967 (1775975)\n-2393A5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B55D Ext File Attributes   00000000 (0)\n+23B561 Local Header Offset   001B5D1E (1793310)\n+23B565 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2393A5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B565: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2393D1 CENTRAL HEADER #1640  02014B50 (33639248)\n-2393D5 Created Zip Spec      14 (20) '2.0'\n-2393D6 Created OS            00 (0) 'MS-DOS'\n-2393D7 Extract Zip Spec      14 (20) '2.0'\n-2393D8 Extract OS            00 (0) 'MS-DOS'\n-2393D9 General Purpose Flag  0808 (2056)\n+23B597 CENTRAL HEADER #1640  02014B50 (33639248)\n+23B59B Created Zip Spec      14 (20) '2.0'\n+23B59C Created OS            00 (0) 'MS-DOS'\n+23B59D Extract Zip Spec      14 (20) '2.0'\n+23B59E Extract OS            00 (0) 'MS-DOS'\n+23B59F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2393DB Compression Method    0008 (8) 'Deflated'\n-2393DD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2393E1 CRC                   9FC2FAF4 (2680355572)\n-2393E5 Compressed Size       000003A4 (932)\n-2393E9 Uncompressed Size     00000A03 (2563)\n-2393ED Filename Length       004A (74)\n-2393EF Extra Length          0000 (0)\n-2393F1 Comment Length        0000 (0)\n-2393F3 Disk Start            0000 (0)\n-2393F5 Int File Attributes   0000 (0)\n+23B5A1 Compression Method    0008 (8) 'Deflated'\n+23B5A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B5A7 CRC                   00000000 (0)\n+23B5AB Compressed Size       00000002 (2)\n+23B5AF Uncompressed Size     00000000 (0)\n+23B5B3 Filename Length       001F (31)\n+23B5B5 Extra Length          0000 (0)\n+23B5B7 Comment Length        0000 (0)\n+23B5B9 Disk Start            0000 (0)\n+23B5BB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2393F7 Ext File Attributes   00000000 (0)\n-2393FB Local Header Offset   001B19C3 (1776067)\n-2393FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B5BD Ext File Attributes   00000000 (0)\n+23B5C1 Local Header Offset   001B5FA9 (1793961)\n+23B5C5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2393FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B5C5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239449 CENTRAL HEADER #1641  02014B50 (33639248)\n-23944D Created Zip Spec      14 (20) '2.0'\n-23944E Created OS            00 (0) 'MS-DOS'\n-23944F Extract Zip Spec      14 (20) '2.0'\n-239450 Extract OS            00 (0) 'MS-DOS'\n-239451 General Purpose Flag  0808 (2056)\n+23B5E4 CENTRAL HEADER #1641  02014B50 (33639248)\n+23B5E8 Created Zip Spec      14 (20) '2.0'\n+23B5E9 Created OS            00 (0) 'MS-DOS'\n+23B5EA Extract Zip Spec      14 (20) '2.0'\n+23B5EB Extract OS            00 (0) 'MS-DOS'\n+23B5EC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239453 Compression Method    0008 (8) 'Deflated'\n-239455 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239459 CRC                   E1F2B0D2 (3790778578)\n-23945D Compressed Size       00000D4A (3402)\n-239461 Uncompressed Size     0000352A (13610)\n-239465 Filename Length       004A (74)\n-239467 Extra Length          0000 (0)\n-239469 Comment Length        0000 (0)\n-23946B Disk Start            0000 (0)\n-23946D Int File Attributes   0000 (0)\n+23B5EE Compression Method    0008 (8) 'Deflated'\n+23B5F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B5F4 CRC                   DEFC6FC7 (3741085639)\n+23B5F8 Compressed Size       00000217 (535)\n+23B5FC Uncompressed Size     000003BD (957)\n+23B600 Filename Length       002D (45)\n+23B602 Extra Length          0000 (0)\n+23B604 Comment Length        0000 (0)\n+23B606 Disk Start            0000 (0)\n+23B608 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23946F Ext File Attributes   00000000 (0)\n-239473 Local Header Offset   001B1DDF (1777119)\n-239477 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B60A Ext File Attributes   00000000 (0)\n+23B60E Local Header Offset   001B5FF8 (1794040)\n+23B612 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239477: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B612: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2394C1 CENTRAL HEADER #1642  02014B50 (33639248)\n-2394C5 Created Zip Spec      14 (20) '2.0'\n-2394C6 Created OS            00 (0) 'MS-DOS'\n-2394C7 Extract Zip Spec      14 (20) '2.0'\n-2394C8 Extract OS            00 (0) 'MS-DOS'\n-2394C9 General Purpose Flag  0808 (2056)\n+23B63F CENTRAL HEADER #1642  02014B50 (33639248)\n+23B643 Created Zip Spec      14 (20) '2.0'\n+23B644 Created OS            00 (0) 'MS-DOS'\n+23B645 Extract Zip Spec      14 (20) '2.0'\n+23B646 Extract OS            00 (0) 'MS-DOS'\n+23B647 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2394CB Compression Method    0008 (8) 'Deflated'\n-2394CD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2394D1 CRC                   2422B0CC (606253260)\n-2394D5 Compressed Size       00000322 (802)\n-2394D9 Uncompressed Size     000006FD (1789)\n-2394DD Filename Length       0051 (81)\n-2394DF Extra Length          0000 (0)\n-2394E1 Comment Length        0000 (0)\n-2394E3 Disk Start            0000 (0)\n-2394E5 Int File Attributes   0000 (0)\n+23B649 Compression Method    0008 (8) 'Deflated'\n+23B64B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B64F CRC                   00000000 (0)\n+23B653 Compressed Size       00000002 (2)\n+23B657 Uncompressed Size     00000000 (0)\n+23B65B Filename Length       0024 (36)\n+23B65D Extra Length          0000 (0)\n+23B65F Comment Length        0000 (0)\n+23B661 Disk Start            0000 (0)\n+23B663 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2394E7 Ext File Attributes   00000000 (0)\n-2394EB Local Header Offset   001B2BA1 (1780641)\n-2394EF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B665 Ext File Attributes   00000000 (0)\n+23B669 Local Header Offset   001B626A (1794666)\n+23B66D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2394EF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B66D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239540 CENTRAL HEADER #1643  02014B50 (33639248)\n-239544 Created Zip Spec      14 (20) '2.0'\n-239545 Created OS            00 (0) 'MS-DOS'\n-239546 Extract Zip Spec      14 (20) '2.0'\n-239547 Extract OS            00 (0) 'MS-DOS'\n-239548 General Purpose Flag  0808 (2056)\n+23B691 CENTRAL HEADER #1643  02014B50 (33639248)\n+23B695 Created Zip Spec      14 (20) '2.0'\n+23B696 Created OS            00 (0) 'MS-DOS'\n+23B697 Extract Zip Spec      14 (20) '2.0'\n+23B698 Extract OS            00 (0) 'MS-DOS'\n+23B699 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23954A Compression Method    0008 (8) 'Deflated'\n-23954C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239550 CRC                   00000000 (0)\n-239554 Compressed Size       00000002 (2)\n-239558 Uncompressed Size     00000000 (0)\n-23955C Filename Length       0025 (37)\n-23955E Extra Length          0000 (0)\n-239560 Comment Length        0000 (0)\n-239562 Disk Start            0000 (0)\n-239564 Int File Attributes   0000 (0)\n+23B69B Compression Method    0008 (8) 'Deflated'\n+23B69D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B6A1 CRC                   34B28AB6 (884116150)\n+23B6A5 Compressed Size       0000027C (636)\n+23B6A9 Uncompressed Size     000004E1 (1249)\n+23B6AD Filename Length       0033 (51)\n+23B6AF Extra Length          0000 (0)\n+23B6B1 Comment Length        0000 (0)\n+23B6B3 Disk Start            0000 (0)\n+23B6B5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239566 Ext File Attributes   00000000 (0)\n-23956A Local Header Offset   001B2F42 (1781570)\n-23956E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B6B7 Ext File Attributes   00000000 (0)\n+23B6BB Local Header Offset   001B62BE (1794750)\n+23B6BF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23956E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B6BF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239593 CENTRAL HEADER #1644  02014B50 (33639248)\n-239597 Created Zip Spec      14 (20) '2.0'\n-239598 Created OS            00 (0) 'MS-DOS'\n-239599 Extract Zip Spec      14 (20) '2.0'\n-23959A Extract OS            00 (0) 'MS-DOS'\n-23959B General Purpose Flag  0808 (2056)\n+23B6F2 CENTRAL HEADER #1644  02014B50 (33639248)\n+23B6F6 Created Zip Spec      14 (20) '2.0'\n+23B6F7 Created OS            00 (0) 'MS-DOS'\n+23B6F8 Extract Zip Spec      14 (20) '2.0'\n+23B6F9 Extract OS            00 (0) 'MS-DOS'\n+23B6FA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23959D Compression Method    0008 (8) 'Deflated'\n-23959F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2395A3 CRC                   52CF3DD1 (1389313489)\n-2395A7 Compressed Size       0000084F (2127)\n-2395AB Uncompressed Size     00001AE7 (6887)\n-2395AF Filename Length       0044 (68)\n-2395B1 Extra Length          0000 (0)\n-2395B3 Comment Length        0000 (0)\n-2395B5 Disk Start            0000 (0)\n-2395B7 Int File Attributes   0000 (0)\n+23B6FC Compression Method    0008 (8) 'Deflated'\n+23B6FE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B702 CRC                   00000000 (0)\n+23B706 Compressed Size       00000002 (2)\n+23B70A Uncompressed Size     00000000 (0)\n+23B70E Filename Length       001F (31)\n+23B710 Extra Length          0000 (0)\n+23B712 Comment Length        0000 (0)\n+23B714 Disk Start            0000 (0)\n+23B716 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2395B9 Ext File Attributes   00000000 (0)\n-2395BD Local Header Offset   001B2F97 (1781655)\n-2395C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B718 Ext File Attributes   00000000 (0)\n+23B71C Local Header Offset   001B659B (1795483)\n+23B720 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2395C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B720: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239605 CENTRAL HEADER #1645  02014B50 (33639248)\n-239609 Created Zip Spec      14 (20) '2.0'\n-23960A Created OS            00 (0) 'MS-DOS'\n-23960B Extract Zip Spec      14 (20) '2.0'\n-23960C Extract OS            00 (0) 'MS-DOS'\n-23960D General Purpose Flag  0808 (2056)\n+23B73F CENTRAL HEADER #1645  02014B50 (33639248)\n+23B743 Created Zip Spec      14 (20) '2.0'\n+23B744 Created OS            00 (0) 'MS-DOS'\n+23B745 Extract Zip Spec      14 (20) '2.0'\n+23B746 Extract OS            00 (0) 'MS-DOS'\n+23B747 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23960F Compression Method    0008 (8) 'Deflated'\n-239611 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239615 CRC                   350D1F44 (890052420)\n-239619 Compressed Size       00000275 (629)\n-23961D Uncompressed Size     00000534 (1332)\n-239621 Filename Length       004B (75)\n-239623 Extra Length          0000 (0)\n-239625 Comment Length        0000 (0)\n-239627 Disk Start            0000 (0)\n-239629 Int File Attributes   0000 (0)\n+23B749 Compression Method    0008 (8) 'Deflated'\n+23B74B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B74F CRC                   0CEB317A (216740218)\n+23B753 Compressed Size       0000047E (1150)\n+23B757 Uncompressed Size     00001263 (4707)\n+23B75B Filename Length       002C (44)\n+23B75D Extra Length          0000 (0)\n+23B75F Comment Length        0000 (0)\n+23B761 Disk Start            0000 (0)\n+23B763 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23962B Ext File Attributes   00000000 (0)\n-23962F Local Header Offset   001B3858 (1783896)\n-239633 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B765 Ext File Attributes   00000000 (0)\n+23B769 Local Header Offset   001B65EA (1795562)\n+23B76D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239633: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B76D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23967E CENTRAL HEADER #1646  02014B50 (33639248)\n-239682 Created Zip Spec      14 (20) '2.0'\n-239683 Created OS            00 (0) 'MS-DOS'\n-239684 Extract Zip Spec      14 (20) '2.0'\n-239685 Extract OS            00 (0) 'MS-DOS'\n-239686 General Purpose Flag  0808 (2056)\n+23B799 CENTRAL HEADER #1646  02014B50 (33639248)\n+23B79D Created Zip Spec      14 (20) '2.0'\n+23B79E Created OS            00 (0) 'MS-DOS'\n+23B79F Extract Zip Spec      14 (20) '2.0'\n+23B7A0 Extract OS            00 (0) 'MS-DOS'\n+23B7A1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239688 Compression Method    0008 (8) 'Deflated'\n-23968A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23968E CRC                   00000000 (0)\n-239692 Compressed Size       00000002 (2)\n-239696 Uncompressed Size     00000000 (0)\n-23969A Filename Length       002B (43)\n-23969C Extra Length          0000 (0)\n-23969E Comment Length        0000 (0)\n-2396A0 Disk Start            0000 (0)\n-2396A2 Int File Attributes   0000 (0)\n+23B7A3 Compression Method    0008 (8) 'Deflated'\n+23B7A5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B7A9 CRC                   785E6462 (2019452002)\n+23B7AD Compressed Size       00000236 (566)\n+23B7B1 Uncompressed Size     00000446 (1094)\n+23B7B5 Filename Length       002F (47)\n+23B7B7 Extra Length          0000 (0)\n+23B7B9 Comment Length        0000 (0)\n+23B7BB Disk Start            0000 (0)\n+23B7BD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2396A4 Ext File Attributes   00000000 (0)\n-2396A8 Local Header Offset   001B3B46 (1784646)\n-2396AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B7BF Ext File Attributes   00000000 (0)\n+23B7C3 Local Header Offset   001B6AC2 (1796802)\n+23B7C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2396AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B7C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2396D7 CENTRAL HEADER #1647  02014B50 (33639248)\n-2396DB Created Zip Spec      14 (20) '2.0'\n-2396DC Created OS            00 (0) 'MS-DOS'\n-2396DD Extract Zip Spec      14 (20) '2.0'\n-2396DE Extract OS            00 (0) 'MS-DOS'\n-2396DF General Purpose Flag  0808 (2056)\n+23B7F6 CENTRAL HEADER #1647  02014B50 (33639248)\n+23B7FA Created Zip Spec      14 (20) '2.0'\n+23B7FB Created OS            00 (0) 'MS-DOS'\n+23B7FC Extract Zip Spec      14 (20) '2.0'\n+23B7FD Extract OS            00 (0) 'MS-DOS'\n+23B7FE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2396E1 Compression Method    0008 (8) 'Deflated'\n-2396E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2396E7 CRC                   F0553B98 (4032117656)\n-2396EB Compressed Size       000007FC (2044)\n-2396EF Uncompressed Size     00001B8F (7055)\n-2396F3 Filename Length       0048 (72)\n-2396F5 Extra Length          0000 (0)\n-2396F7 Comment Length        0000 (0)\n-2396F9 Disk Start            0000 (0)\n-2396FB Int File Attributes   0000 (0)\n+23B800 Compression Method    0008 (8) 'Deflated'\n+23B802 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B806 CRC                   12EE7A54 (317618772)\n+23B80A Compressed Size       00000214 (532)\n+23B80E Uncompressed Size     000003B7 (951)\n+23B812 Filename Length       002C (44)\n+23B814 Extra Length          0000 (0)\n+23B816 Comment Length        0000 (0)\n+23B818 Disk Start            0000 (0)\n+23B81A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2396FD Ext File Attributes   00000000 (0)\n-239701 Local Header Offset   001B3BA1 (1784737)\n-239705 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B81C Ext File Attributes   00000000 (0)\n+23B820 Local Header Offset   001B6D55 (1797461)\n+23B824 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239705: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B824: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23974D CENTRAL HEADER #1648  02014B50 (33639248)\n-239751 Created Zip Spec      14 (20) '2.0'\n-239752 Created OS            00 (0) 'MS-DOS'\n-239753 Extract Zip Spec      14 (20) '2.0'\n-239754 Extract OS            00 (0) 'MS-DOS'\n-239755 General Purpose Flag  0808 (2056)\n+23B850 CENTRAL HEADER #1648  02014B50 (33639248)\n+23B854 Created Zip Spec      14 (20) '2.0'\n+23B855 Created OS            00 (0) 'MS-DOS'\n+23B856 Extract Zip Spec      14 (20) '2.0'\n+23B857 Extract OS            00 (0) 'MS-DOS'\n+23B858 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239757 Compression Method    0008 (8) 'Deflated'\n-239759 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23975D CRC                   D59518E0 (3583318240)\n-239761 Compressed Size       00000285 (645)\n-239765 Uncompressed Size     0000055D (1373)\n-239769 Filename Length       004F (79)\n-23976B Extra Length          0000 (0)\n-23976D Comment Length        0000 (0)\n-23976F Disk Start            0000 (0)\n-239771 Int File Attributes   0000 (0)\n+23B85A Compression Method    0008 (8) 'Deflated'\n+23B85C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B860 CRC                   AE09219E (2919834014)\n+23B864 Compressed Size       00000216 (534)\n+23B868 Uncompressed Size     000003B7 (951)\n+23B86C Filename Length       002C (44)\n+23B86E Extra Length          0000 (0)\n+23B870 Comment Length        0000 (0)\n+23B872 Disk Start            0000 (0)\n+23B874 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239773 Ext File Attributes   00000000 (0)\n-239777 Local Header Offset   001B4413 (1786899)\n-23977B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B876 Ext File Attributes   00000000 (0)\n+23B87A Local Header Offset   001B6FC3 (1798083)\n+23B87E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23977B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B87E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2397CA CENTRAL HEADER #1649  02014B50 (33639248)\n-2397CE Created Zip Spec      14 (20) '2.0'\n-2397CF Created OS            00 (0) 'MS-DOS'\n-2397D0 Extract Zip Spec      14 (20) '2.0'\n-2397D1 Extract OS            00 (0) 'MS-DOS'\n-2397D2 General Purpose Flag  0808 (2056)\n+23B8AA CENTRAL HEADER #1649  02014B50 (33639248)\n+23B8AE Created Zip Spec      14 (20) '2.0'\n+23B8AF Created OS            00 (0) 'MS-DOS'\n+23B8B0 Extract Zip Spec      14 (20) '2.0'\n+23B8B1 Extract OS            00 (0) 'MS-DOS'\n+23B8B2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2397D4 Compression Method    0008 (8) 'Deflated'\n-2397D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2397DA CRC                   00000000 (0)\n-2397DE Compressed Size       00000002 (2)\n-2397E2 Uncompressed Size     00000000 (0)\n-2397E6 Filename Length       0018 (24)\n-2397E8 Extra Length          0000 (0)\n-2397EA Comment Length        0000 (0)\n-2397EC Disk Start            0000 (0)\n-2397EE Int File Attributes   0000 (0)\n+23B8B4 Compression Method    0008 (8) 'Deflated'\n+23B8B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B8BA CRC                   C0617C64 (3227614308)\n+23B8BE Compressed Size       00000215 (533)\n+23B8C2 Uncompressed Size     000003B5 (949)\n+23B8C6 Filename Length       002A (42)\n+23B8C8 Extra Length          0000 (0)\n+23B8CA Comment Length        0000 (0)\n+23B8CC Disk Start            0000 (0)\n+23B8CE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2397F0 Ext File Attributes   00000000 (0)\n-2397F4 Local Header Offset   001B4715 (1787669)\n-2397F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+23B8D0 Ext File Attributes   00000000 (0)\n+23B8D4 Local Header Offset   001B7233 (1798707)\n+23B8D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2397F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B8D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239810 CENTRAL HEADER #1650  02014B50 (33639248)\n-239814 Created Zip Spec      14 (20) '2.0'\n-239815 Created OS            00 (0) 'MS-DOS'\n-239816 Extract Zip Spec      14 (20) '2.0'\n-239817 Extract OS            00 (0) 'MS-DOS'\n-239818 General Purpose Flag  0808 (2056)\n+23B902 CENTRAL HEADER #1650  02014B50 (33639248)\n+23B906 Created Zip Spec      14 (20) '2.0'\n+23B907 Created OS            00 (0) 'MS-DOS'\n+23B908 Extract Zip Spec      14 (20) '2.0'\n+23B909 Extract OS            00 (0) 'MS-DOS'\n+23B90A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23981A Compression Method    0008 (8) 'Deflated'\n-23981C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239820 CRC                   A0D1D7AD (2698106797)\n-239824 Compressed Size       00000210 (528)\n-239828 Uncompressed Size     000003A7 (935)\n-23982C Filename Length       0022 (34)\n-23982E Extra Length          0000 (0)\n-239830 Comment Length        0000 (0)\n-239832 Disk Start            0000 (0)\n-239834 Int File Attributes   0000 (0)\n+23B90C Compression Method    0008 (8) 'Deflated'\n+23B90E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B912 CRC                   50E43A38 (1357134392)\n+23B916 Compressed Size       00000236 (566)\n+23B91A Uncompressed Size     00000420 (1056)\n+23B91E Filename Length       002A (42)\n+23B920 Extra Length          0000 (0)\n+23B922 Comment Length        0000 (0)\n+23B924 Disk Start            0000 (0)\n+23B926 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239836 Ext File Attributes   00000000 (0)\n-23983A Local Header Offset   001B475D (1787741)\n-23983E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B928 Ext File Attributes   00000000 (0)\n+23B92C Local Header Offset   001B74A0 (1799328)\n+23B930 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23983E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B930: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239860 CENTRAL HEADER #1651  02014B50 (33639248)\n-239864 Created Zip Spec      14 (20) '2.0'\n-239865 Created OS            00 (0) 'MS-DOS'\n-239866 Extract Zip Spec      14 (20) '2.0'\n-239867 Extract OS            00 (0) 'MS-DOS'\n-239868 General Purpose Flag  0808 (2056)\n+23B95A CENTRAL HEADER #1651  02014B50 (33639248)\n+23B95E Created Zip Spec      14 (20) '2.0'\n+23B95F Created OS            00 (0) 'MS-DOS'\n+23B960 Extract Zip Spec      14 (20) '2.0'\n+23B961 Extract OS            00 (0) 'MS-DOS'\n+23B962 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23986A Compression Method    0008 (8) 'Deflated'\n-23986C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239870 CRC                   36E8AAE8 (921217768)\n-239874 Compressed Size       00000248 (584)\n-239878 Uncompressed Size     0000043E (1086)\n-23987C Filename Length       0029 (41)\n-23987E Extra Length          0000 (0)\n-239880 Comment Length        0000 (0)\n-239882 Disk Start            0000 (0)\n-239884 Int File Attributes   0000 (0)\n+23B964 Compression Method    0008 (8) 'Deflated'\n+23B966 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B96A CRC                   7B632F2C (2070097708)\n+23B96E Compressed Size       00000238 (568)\n+23B972 Uncompressed Size     00000428 (1064)\n+23B976 Filename Length       002B (43)\n+23B978 Extra Length          0000 (0)\n+23B97A Comment Length        0000 (0)\n+23B97C Disk Start            0000 (0)\n+23B97E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239886 Ext File Attributes   00000000 (0)\n-23988A Local Header Offset   001B49BD (1788349)\n-23988E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B980 Ext File Attributes   00000000 (0)\n+23B984 Local Header Offset   001B772E (1799982)\n+23B988 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23988E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B988: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2398B7 CENTRAL HEADER #1652  02014B50 (33639248)\n-2398BB Created Zip Spec      14 (20) '2.0'\n-2398BC Created OS            00 (0) 'MS-DOS'\n-2398BD Extract Zip Spec      14 (20) '2.0'\n-2398BE Extract OS            00 (0) 'MS-DOS'\n-2398BF General Purpose Flag  0808 (2056)\n+23B9B3 CENTRAL HEADER #1652  02014B50 (33639248)\n+23B9B7 Created Zip Spec      14 (20) '2.0'\n+23B9B8 Created OS            00 (0) 'MS-DOS'\n+23B9B9 Extract Zip Spec      14 (20) '2.0'\n+23B9BA Extract OS            00 (0) 'MS-DOS'\n+23B9BB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2398C1 Compression Method    0008 (8) 'Deflated'\n-2398C3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2398C7 CRC                   00000000 (0)\n-2398CB Compressed Size       00000002 (2)\n-2398CF Uncompressed Size     00000000 (0)\n-2398D3 Filename Length       0020 (32)\n-2398D5 Extra Length          0000 (0)\n-2398D7 Comment Length        0000 (0)\n-2398D9 Disk Start            0000 (0)\n-2398DB Int File Attributes   0000 (0)\n+23B9BD Compression Method    0008 (8) 'Deflated'\n+23B9BF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23B9C3 CRC                   885A72D3 (2287629011)\n+23B9C7 Compressed Size       00000248 (584)\n+23B9CB Uncompressed Size     00000481 (1153)\n+23B9CF Filename Length       002C (44)\n+23B9D1 Extra Length          0000 (0)\n+23B9D3 Comment Length        0000 (0)\n+23B9D5 Disk Start            0000 (0)\n+23B9D7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2398DD Ext File Attributes   00000000 (0)\n-2398E1 Local Header Offset   001B4C5C (1789020)\n-2398E5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B9D9 Ext File Attributes   00000000 (0)\n+23B9DD Local Header Offset   001B79BF (1800639)\n+23B9E1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2398E5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23B9E1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239905 CENTRAL HEADER #1653  02014B50 (33639248)\n-239909 Created Zip Spec      14 (20) '2.0'\n-23990A Created OS            00 (0) 'MS-DOS'\n-23990B Extract Zip Spec      14 (20) '2.0'\n-23990C Extract OS            00 (0) 'MS-DOS'\n-23990D General Purpose Flag  0808 (2056)\n+23BA0D CENTRAL HEADER #1653  02014B50 (33639248)\n+23BA11 Created Zip Spec      14 (20) '2.0'\n+23BA12 Created OS            00 (0) 'MS-DOS'\n+23BA13 Extract Zip Spec      14 (20) '2.0'\n+23BA14 Extract OS            00 (0) 'MS-DOS'\n+23BA15 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23990F Compression Method    0008 (8) 'Deflated'\n-239911 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239915 CRC                   94A98A55 (2494138965)\n-239919 Compressed Size       0000036F (879)\n-23991D Uncompressed Size     000007E6 (2022)\n-239921 Filename Length       0039 (57)\n-239923 Extra Length          0000 (0)\n-239925 Comment Length        0000 (0)\n-239927 Disk Start            0000 (0)\n-239929 Int File Attributes   0000 (0)\n+23BA17 Compression Method    0008 (8) 'Deflated'\n+23BA19 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BA1D CRC                   419EAEDE (1100918494)\n+23BA21 Compressed Size       00000217 (535)\n+23BA25 Uncompressed Size     000003B7 (951)\n+23BA29 Filename Length       002C (44)\n+23BA2B Extra Length          0000 (0)\n+23BA2D Comment Length        0000 (0)\n+23BA2F Disk Start            0000 (0)\n+23BA31 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23992B Ext File Attributes   00000000 (0)\n-23992F Local Header Offset   001B4CAC (1789100)\n-239933 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23BA33 Ext File Attributes   00000000 (0)\n+23BA37 Local Header Offset   001B7C61 (1801313)\n+23BA3B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239933: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BA3B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23996C CENTRAL HEADER #1654  02014B50 (33639248)\n-239970 Created Zip Spec      14 (20) '2.0'\n-239971 Created OS            00 (0) 'MS-DOS'\n-239972 Extract Zip Spec      14 (20) '2.0'\n-239973 Extract OS            00 (0) 'MS-DOS'\n-239974 General Purpose Flag  0808 (2056)\n+23BA67 CENTRAL HEADER #1654  02014B50 (33639248)\n+23BA6B Created Zip Spec      14 (20) '2.0'\n+23BA6C Created OS            00 (0) 'MS-DOS'\n+23BA6D Extract Zip Spec      14 (20) '2.0'\n+23BA6E Extract OS            00 (0) 'MS-DOS'\n+23BA6F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239976 Compression Method    0008 (8) 'Deflated'\n-239978 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23997C CRC                   B2D5E5FC (3000362492)\n-239980 Compressed Size       000002A6 (678)\n-239984 Uncompressed Size     00000738 (1848)\n-239988 Filename Length       0027 (39)\n-23998A Extra Length          0000 (0)\n-23998C Comment Length        0000 (0)\n-23998E Disk Start            0000 (0)\n-239990 Int File Attributes   0000 (0)\n+23BA71 Compression Method    0008 (8) 'Deflated'\n+23BA73 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BA77 CRC                   730F08F3 (1930365171)\n+23BA7B Compressed Size       0000024D (589)\n+23BA7F Uncompressed Size     0000047B (1147)\n+23BA83 Filename Length       002D (45)\n+23BA85 Extra Length          0000 (0)\n+23BA87 Comment Length        0000 (0)\n+23BA89 Disk Start            0000 (0)\n+23BA8B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239992 Ext File Attributes   00000000 (0)\n-239996 Local Header Offset   001B5082 (1790082)\n-23999A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23BA8D Ext File Attributes   00000000 (0)\n+23BA91 Local Header Offset   001B7ED2 (1801938)\n+23BA95 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23999A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BA95: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2399C1 CENTRAL HEADER #1655  02014B50 (33639248)\n-2399C5 Created Zip Spec      14 (20) '2.0'\n-2399C6 Created OS            00 (0) 'MS-DOS'\n-2399C7 Extract Zip Spec      14 (20) '2.0'\n-2399C8 Extract OS            00 (0) 'MS-DOS'\n-2399C9 General Purpose Flag  0808 (2056)\n+23BAC2 CENTRAL HEADER #1655  02014B50 (33639248)\n+23BAC6 Created Zip Spec      14 (20) '2.0'\n+23BAC7 Created OS            00 (0) 'MS-DOS'\n+23BAC8 Extract Zip Spec      14 (20) '2.0'\n+23BAC9 Extract OS            00 (0) 'MS-DOS'\n+23BACA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2399CB Compression Method    0008 (8) 'Deflated'\n-2399CD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2399D1 CRC                   D19F2618 (3516868120)\n-2399D5 Compressed Size       0000090B (2315)\n-2399D9 Uncompressed Size     00004BE5 (19429)\n-2399DD Filename Length       0021 (33)\n-2399DF Extra Length          0000 (0)\n-2399E1 Comment Length        0000 (0)\n-2399E3 Disk Start            0000 (0)\n-2399E5 Int File Attributes   0000 (0)\n+23BACC Compression Method    0008 (8) 'Deflated'\n+23BACE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BAD2 CRC                   61ADD6F9 (1638782713)\n+23BAD6 Compressed Size       00000249 (585)\n+23BADA Uncompressed Size     00000498 (1176)\n+23BADE Filename Length       002C (44)\n+23BAE0 Extra Length          0000 (0)\n+23BAE2 Comment Length        0000 (0)\n+23BAE4 Disk Start            0000 (0)\n+23BAE6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2399E7 Ext File Attributes   00000000 (0)\n-2399EB Local Header Offset   001B537D (1790845)\n-2399EF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23BAE8 Ext File Attributes   00000000 (0)\n+23BAEC Local Header Offset   001B817A (1802618)\n+23BAF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2399EF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BAF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239A10 CENTRAL HEADER #1656  02014B50 (33639248)\n-239A14 Created Zip Spec      14 (20) '2.0'\n-239A15 Created OS            00 (0) 'MS-DOS'\n-239A16 Extract Zip Spec      14 (20) '2.0'\n-239A17 Extract OS            00 (0) 'MS-DOS'\n-239A18 General Purpose Flag  0808 (2056)\n+23BB1C CENTRAL HEADER #1656  02014B50 (33639248)\n+23BB20 Created Zip Spec      14 (20) '2.0'\n+23BB21 Created OS            00 (0) 'MS-DOS'\n+23BB22 Extract Zip Spec      14 (20) '2.0'\n+23BB23 Extract OS            00 (0) 'MS-DOS'\n+23BB24 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239A1A Compression Method    0008 (8) 'Deflated'\n-239A1C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239A20 CRC                   00000000 (0)\n-239A24 Compressed Size       00000002 (2)\n-239A28 Uncompressed Size     00000000 (0)\n-239A2C Filename Length       0022 (34)\n-239A2E Extra Length          0000 (0)\n-239A30 Comment Length        0000 (0)\n-239A32 Disk Start            0000 (0)\n-239A34 Int File Attributes   0000 (0)\n+23BB26 Compression Method    0008 (8) 'Deflated'\n+23BB28 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BB2C CRC                   E87449AF (3899935151)\n+23BB30 Compressed Size       00000246 (582)\n+23BB34 Uncompressed Size     00000467 (1127)\n+23BB38 Filename Length       002B (43)\n+23BB3A Extra Length          0000 (0)\n+23BB3C Comment Length        0000 (0)\n+23BB3E Disk Start            0000 (0)\n+23BB40 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239A36 Ext File Attributes   00000000 (0)\n-239A3A Local Header Offset   001B5CD7 (1793239)\n-239A3E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23BB42 Ext File Attributes   00000000 (0)\n+23BB46 Local Header Offset   001B841D (1803293)\n+23BB4A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239A3E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BB4A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239A60 CENTRAL HEADER #1657  02014B50 (33639248)\n-239A64 Created Zip Spec      14 (20) '2.0'\n-239A65 Created OS            00 (0) 'MS-DOS'\n-239A66 Extract Zip Spec      14 (20) '2.0'\n-239A67 Extract OS            00 (0) 'MS-DOS'\n-239A68 General Purpose Flag  0808 (2056)\n+23BB75 CENTRAL HEADER #1657  02014B50 (33639248)\n+23BB79 Created Zip Spec      14 (20) '2.0'\n+23BB7A Created OS            00 (0) 'MS-DOS'\n+23BB7B Extract Zip Spec      14 (20) '2.0'\n+23BB7C Extract OS            00 (0) 'MS-DOS'\n+23BB7D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239A6A Compression Method    0008 (8) 'Deflated'\n-239A6C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239A70 CRC                   AB4B3845 (2873833541)\n-239A74 Compressed Size       00000216 (534)\n-239A78 Uncompressed Size     000003C1 (961)\n-239A7C Filename Length       002F (47)\n-239A7E Extra Length          0000 (0)\n-239A80 Comment Length        0000 (0)\n-239A82 Disk Start            0000 (0)\n-239A84 Int File Attributes   0000 (0)\n+23BB7F Compression Method    0008 (8) 'Deflated'\n+23BB81 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BB85 CRC                   00000000 (0)\n+23BB89 Compressed Size       00000002 (2)\n+23BB8D Uncompressed Size     00000000 (0)\n+23BB91 Filename Length       0020 (32)\n+23BB93 Extra Length          0000 (0)\n+23BB95 Comment Length        0000 (0)\n+23BB97 Disk Start            0000 (0)\n+23BB99 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239A86 Ext File Attributes   00000000 (0)\n-239A8A Local Header Offset   001B5D29 (1793321)\n-239A8E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23BB9B Ext File Attributes   00000000 (0)\n+23BB9F Local Header Offset   001B86BC (1803964)\n+23BBA3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239A8E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BBA3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239ABD CENTRAL HEADER #1658  02014B50 (33639248)\n-239AC1 Created Zip Spec      14 (20) '2.0'\n-239AC2 Created OS            00 (0) 'MS-DOS'\n-239AC3 Extract Zip Spec      14 (20) '2.0'\n-239AC4 Extract OS            00 (0) 'MS-DOS'\n-239AC5 General Purpose Flag  0808 (2056)\n+23BBC3 CENTRAL HEADER #1658  02014B50 (33639248)\n+23BBC7 Created Zip Spec      14 (20) '2.0'\n+23BBC8 Created OS            00 (0) 'MS-DOS'\n+23BBC9 Extract Zip Spec      14 (20) '2.0'\n+23BBCA Extract OS            00 (0) 'MS-DOS'\n+23BBCB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239AC7 Compression Method    0008 (8) 'Deflated'\n-239AC9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239ACD CRC                   5F752BEF (1601514479)\n-239AD1 Compressed Size       00000225 (549)\n-239AD5 Uncompressed Size     000003F1 (1009)\n-239AD9 Filename Length       0038 (56)\n-239ADB Extra Length          0000 (0)\n-239ADD Comment Length        0000 (0)\n-239ADF Disk Start            0000 (0)\n-239AE1 Int File Attributes   0000 (0)\n+23BBCD Compression Method    0008 (8) 'Deflated'\n+23BBCF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BBD3 CRC                   00000000 (0)\n+23BBD7 Compressed Size       00000002 (2)\n+23BBDB Uncompressed Size     00000000 (0)\n+23BBDF Filename Length       0028 (40)\n+23BBE1 Extra Length          0000 (0)\n+23BBE3 Comment Length        0000 (0)\n+23BBE5 Disk Start            0000 (0)\n+23BBE7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239AE3 Ext File Attributes   00000000 (0)\n-239AE7 Local Header Offset   001B5F9C (1793948)\n-239AEB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23BBE9 Ext File Attributes   00000000 (0)\n+23BBED Local Header Offset   001B870C (1804044)\n+23BBF1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239AEB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BBF1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239B23 CENTRAL HEADER #1659  02014B50 (33639248)\n-239B27 Created Zip Spec      14 (20) '2.0'\n-239B28 Created OS            00 (0) 'MS-DOS'\n-239B29 Extract Zip Spec      14 (20) '2.0'\n-239B2A Extract OS            00 (0) 'MS-DOS'\n-239B2B General Purpose Flag  0808 (2056)\n+23BC19 CENTRAL HEADER #1659  02014B50 (33639248)\n+23BC1D Created Zip Spec      14 (20) '2.0'\n+23BC1E Created OS            00 (0) 'MS-DOS'\n+23BC1F Extract Zip Spec      14 (20) '2.0'\n+23BC20 Extract OS            00 (0) 'MS-DOS'\n+23BC21 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239B2D Compression Method    0008 (8) 'Deflated'\n-239B2F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239B33 CRC                   00000000 (0)\n-239B37 Compressed Size       00000002 (2)\n-239B3B Uncompressed Size     00000000 (0)\n-239B3F Filename Length       0020 (32)\n-239B41 Extra Length          0000 (0)\n-239B43 Comment Length        0000 (0)\n-239B45 Disk Start            0000 (0)\n-239B47 Int File Attributes   0000 (0)\n+23BC23 Compression Method    0008 (8) 'Deflated'\n+23BC25 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BC29 CRC                   00000000 (0)\n+23BC2D Compressed Size       00000002 (2)\n+23BC31 Uncompressed Size     00000000 (0)\n+23BC35 Filename Length       0033 (51)\n+23BC37 Extra Length          0000 (0)\n+23BC39 Comment Length        0000 (0)\n+23BC3B Disk Start            0000 (0)\n+23BC3D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239B49 Ext File Attributes   00000000 (0)\n-239B4D Local Header Offset   001B6227 (1794599)\n-239B51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23BC3F Ext File Attributes   00000000 (0)\n+23BC43 Local Header Offset   001B8764 (1804132)\n+23BC47 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239B51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BC47: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239B71 CENTRAL HEADER #1660  02014B50 (33639248)\n-239B75 Created Zip Spec      14 (20) '2.0'\n-239B76 Created OS            00 (0) 'MS-DOS'\n-239B77 Extract Zip Spec      14 (20) '2.0'\n-239B78 Extract OS            00 (0) 'MS-DOS'\n-239B79 General Purpose Flag  0808 (2056)\n+23BC7A CENTRAL HEADER #1660  02014B50 (33639248)\n+23BC7E Created Zip Spec      14 (20) '2.0'\n+23BC7F Created OS            00 (0) 'MS-DOS'\n+23BC80 Extract Zip Spec      14 (20) '2.0'\n+23BC81 Extract OS            00 (0) 'MS-DOS'\n+23BC82 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239B7B Compression Method    0008 (8) 'Deflated'\n-239B7D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239B81 CRC                   75D97425 (1977185317)\n-239B85 Compressed Size       0000021A (538)\n-239B89 Uncompressed Size     000003C7 (967)\n-239B8D Filename Length       0032 (50)\n-239B8F Extra Length          0000 (0)\n-239B91 Comment Length        0000 (0)\n-239B93 Disk Start            0000 (0)\n-239B95 Int File Attributes   0000 (0)\n+23BC84 Compression Method    0008 (8) 'Deflated'\n+23BC86 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BC8A CRC                   8EE85A26 (2397592102)\n+23BC8E Compressed Size       00000422 (1058)\n+23BC92 Uncompressed Size     00000AFD (2813)\n+23BC96 Filename Length       0043 (67)\n+23BC98 Extra Length          0000 (0)\n+23BC9A Comment Length        0000 (0)\n+23BC9C Disk Start            0000 (0)\n+23BC9E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239B97 Ext File Attributes   00000000 (0)\n-239B9B Local Header Offset   001B6277 (1794679)\n-239B9F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23BCA0 Ext File Attributes   00000000 (0)\n+23BCA4 Local Header Offset   001B87C7 (1804231)\n+23BCA8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239B9F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BCA8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239BD1 CENTRAL HEADER #1661  02014B50 (33639248)\n-239BD5 Created Zip Spec      14 (20) '2.0'\n-239BD6 Created OS            00 (0) 'MS-DOS'\n-239BD7 Extract Zip Spec      14 (20) '2.0'\n-239BD8 Extract OS            00 (0) 'MS-DOS'\n-239BD9 General Purpose Flag  0808 (2056)\n+23BCEB CENTRAL HEADER #1661  02014B50 (33639248)\n+23BCEF Created Zip Spec      14 (20) '2.0'\n+23BCF0 Created OS            00 (0) 'MS-DOS'\n+23BCF1 Extract Zip Spec      14 (20) '2.0'\n+23BCF2 Extract OS            00 (0) 'MS-DOS'\n+23BCF3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239BDB Compression Method    0008 (8) 'Deflated'\n-239BDD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239BE1 CRC                   00000000 (0)\n-239BE5 Compressed Size       00000002 (2)\n-239BE9 Uncompressed Size     00000000 (0)\n-239BED Filename Length       0023 (35)\n-239BEF Extra Length          0000 (0)\n-239BF1 Comment Length        0000 (0)\n-239BF3 Disk Start            0000 (0)\n-239BF5 Int File Attributes   0000 (0)\n+23BCF5 Compression Method    0008 (8) 'Deflated'\n+23BCF7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BCFB CRC                   00000000 (0)\n+23BCFF Compressed Size       00000002 (2)\n+23BD03 Uncompressed Size     00000000 (0)\n+23BD07 Filename Length       001C (28)\n+23BD09 Extra Length          0000 (0)\n+23BD0B Comment Length        0000 (0)\n+23BD0D Disk Start            0000 (0)\n+23BD0F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239BF7 Ext File Attributes   00000000 (0)\n-239BFB Local Header Offset   001B64F1 (1795313)\n-239BFF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23BD11 Ext File Attributes   00000000 (0)\n+23BD15 Local Header Offset   001B8C5A (1805402)\n+23BD19 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239BFF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BD19: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239C22 CENTRAL HEADER #1662  02014B50 (33639248)\n-239C26 Created Zip Spec      14 (20) '2.0'\n-239C27 Created OS            00 (0) 'MS-DOS'\n-239C28 Extract Zip Spec      14 (20) '2.0'\n-239C29 Extract OS            00 (0) 'MS-DOS'\n-239C2A General Purpose Flag  0808 (2056)\n+23BD35 CENTRAL HEADER #1662  02014B50 (33639248)\n+23BD39 Created Zip Spec      14 (20) '2.0'\n+23BD3A Created OS            00 (0) 'MS-DOS'\n+23BD3B Extract Zip Spec      14 (20) '2.0'\n+23BD3C Extract OS            00 (0) 'MS-DOS'\n+23BD3D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239C2C Compression Method    0008 (8) 'Deflated'\n-239C2E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239C32 CRC                   1B82D5A6 (461559206)\n-239C36 Compressed Size       0000021D (541)\n-239C3A Uncompressed Size     000003C9 (969)\n-239C3E Filename Length       0033 (51)\n-239C40 Extra Length          0000 (0)\n-239C42 Comment Length        0000 (0)\n-239C44 Disk Start            0000 (0)\n-239C46 Int File Attributes   0000 (0)\n+23BD3F Compression Method    0008 (8) 'Deflated'\n+23BD41 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BD45 CRC                   DC9E9A97 (3701381783)\n+23BD49 Compressed Size       00000213 (531)\n+23BD4D Uncompressed Size     000003B7 (951)\n+23BD51 Filename Length       002A (42)\n+23BD53 Extra Length          0000 (0)\n+23BD55 Comment Length        0000 (0)\n+23BD57 Disk Start            0000 (0)\n+23BD59 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239C48 Ext File Attributes   00000000 (0)\n-239C4C Local Header Offset   001B6544 (1795396)\n-239C50 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23BD5B Ext File Attributes   00000000 (0)\n+23BD5F Local Header Offset   001B8CA6 (1805478)\n+23BD63 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239C50: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BD63: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239C83 CENTRAL HEADER #1663  02014B50 (33639248)\n-239C87 Created Zip Spec      14 (20) '2.0'\n-239C88 Created OS            00 (0) 'MS-DOS'\n-239C89 Extract Zip Spec      14 (20) '2.0'\n-239C8A Extract OS            00 (0) 'MS-DOS'\n-239C8B General Purpose Flag  0808 (2056)\n+23BD8D CENTRAL HEADER #1663  02014B50 (33639248)\n+23BD91 Created Zip Spec      14 (20) '2.0'\n+23BD92 Created OS            00 (0) 'MS-DOS'\n+23BD93 Extract Zip Spec      14 (20) '2.0'\n+23BD94 Extract OS            00 (0) 'MS-DOS'\n+23BD95 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239C8D Compression Method    0008 (8) 'Deflated'\n-239C8F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239C93 CRC                   E66C1AF8 (3865844472)\n-239C97 Compressed Size       0000021F (543)\n-239C9B Uncompressed Size     000003CB (971)\n-239C9F Filename Length       0034 (52)\n-239CA1 Extra Length          0000 (0)\n-239CA3 Comment Length        0000 (0)\n-239CA5 Disk Start            0000 (0)\n-239CA7 Int File Attributes   0000 (0)\n+23BD97 Compression Method    0008 (8) 'Deflated'\n+23BD99 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BD9D CRC                   00000000 (0)\n+23BDA1 Compressed Size       00000002 (2)\n+23BDA5 Uncompressed Size     00000000 (0)\n+23BDA9 Filename Length       001A (26)\n+23BDAB Extra Length          0000 (0)\n+23BDAD Comment Length        0000 (0)\n+23BDAF Disk Start            0000 (0)\n+23BDB1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239CA9 Ext File Attributes   00000000 (0)\n-239CAD Local Header Offset   001B67C2 (1796034)\n-239CB1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23BDB3 Ext File Attributes   00000000 (0)\n+23BDB7 Local Header Offset   001B8F11 (1806097)\n+23BDBB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239CB1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BDBB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239CE5 CENTRAL HEADER #1664  02014B50 (33639248)\n-239CE9 Created Zip Spec      14 (20) '2.0'\n-239CEA Created OS            00 (0) 'MS-DOS'\n-239CEB Extract Zip Spec      14 (20) '2.0'\n-239CEC Extract OS            00 (0) 'MS-DOS'\n-239CED General Purpose Flag  0808 (2056)\n+23BDD5 CENTRAL HEADER #1664  02014B50 (33639248)\n+23BDD9 Created Zip Spec      14 (20) '2.0'\n+23BDDA Created OS            00 (0) 'MS-DOS'\n+23BDDB Extract Zip Spec      14 (20) '2.0'\n+23BDDC Extract OS            00 (0) 'MS-DOS'\n+23BDDD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239CEF Compression Method    0008 (8) 'Deflated'\n-239CF1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239CF5 CRC                   A93FA4B2 (2839520434)\n-239CF9 Compressed Size       000002BD (701)\n-239CFD Uncompressed Size     000006AC (1708)\n-239D01 Filename Length       0035 (53)\n-239D03 Extra Length          0000 (0)\n-239D05 Comment Length        0000 (0)\n-239D07 Disk Start            0000 (0)\n-239D09 Int File Attributes   0000 (0)\n+23BDDF Compression Method    0008 (8) 'Deflated'\n+23BDE1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BDE5 CRC                   D9881C34 (3649575988)\n+23BDE9 Compressed Size       000002DA (730)\n+23BDED Uncompressed Size     0000063F (1599)\n+23BDF1 Filename Length       0026 (38)\n+23BDF3 Extra Length          0000 (0)\n+23BDF5 Comment Length        0000 (0)\n+23BDF7 Disk Start            0000 (0)\n+23BDF9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239D0B Ext File Attributes   00000000 (0)\n-239D0F Local Header Offset   001B6A43 (1796675)\n-239D13 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23BDFB Ext File Attributes   00000000 (0)\n+23BDFF Local Header Offset   001B8F5B (1806171)\n+23BE03 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239D13: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BE03: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239D48 CENTRAL HEADER #1665  02014B50 (33639248)\n-239D4C Created Zip Spec      14 (20) '2.0'\n-239D4D Created OS            00 (0) 'MS-DOS'\n-239D4E Extract Zip Spec      14 (20) '2.0'\n-239D4F Extract OS            00 (0) 'MS-DOS'\n-239D50 General Purpose Flag  0808 (2056)\n+23BE29 CENTRAL HEADER #1665  02014B50 (33639248)\n+23BE2D Created Zip Spec      14 (20) '2.0'\n+23BE2E Created OS            00 (0) 'MS-DOS'\n+23BE2F Extract Zip Spec      14 (20) '2.0'\n+23BE30 Extract OS            00 (0) 'MS-DOS'\n+23BE31 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239D52 Compression Method    0008 (8) 'Deflated'\n-239D54 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239D58 CRC                   00000000 (0)\n-239D5C Compressed Size       00000002 (2)\n-239D60 Uncompressed Size     00000000 (0)\n-239D64 Filename Length       0020 (32)\n-239D66 Extra Length          0000 (0)\n-239D68 Comment Length        0000 (0)\n-239D6A Disk Start            0000 (0)\n-239D6C Int File Attributes   0000 (0)\n+23BE33 Compression Method    0008 (8) 'Deflated'\n+23BE35 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BE39 CRC                   29B723AE (699868078)\n+23BE3D Compressed Size       0000026F (623)\n+23BE41 Uncompressed Size     000004D6 (1238)\n+23BE45 Filename Length       002D (45)\n+23BE47 Extra Length          0000 (0)\n+23BE49 Comment Length        0000 (0)\n+23BE4B Disk Start            0000 (0)\n+23BE4D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239D6E Ext File Attributes   00000000 (0)\n-239D72 Local Header Offset   001B6D63 (1797475)\n-239D76 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23BE4F Ext File Attributes   00000000 (0)\n+23BE53 Local Header Offset   001B9289 (1806985)\n+23BE57 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239D76: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BE57: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239D96 CENTRAL HEADER #1666  02014B50 (33639248)\n-239D9A Created Zip Spec      14 (20) '2.0'\n-239D9B Created OS            00 (0) 'MS-DOS'\n-239D9C Extract Zip Spec      14 (20) '2.0'\n-239D9D Extract OS            00 (0) 'MS-DOS'\n-239D9E General Purpose Flag  0808 (2056)\n+23BE84 CENTRAL HEADER #1666  02014B50 (33639248)\n+23BE88 Created Zip Spec      14 (20) '2.0'\n+23BE89 Created OS            00 (0) 'MS-DOS'\n+23BE8A Extract Zip Spec      14 (20) '2.0'\n+23BE8B Extract OS            00 (0) 'MS-DOS'\n+23BE8C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239DA0 Compression Method    0008 (8) 'Deflated'\n-239DA2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239DA6 CRC                   BEC11652 (3200325202)\n-239DAA Compressed Size       00000254 (596)\n-239DAE Uncompressed Size     000004CE (1230)\n-239DB2 Filename Length       002B (43)\n-239DB4 Extra Length          0000 (0)\n-239DB6 Comment Length        0000 (0)\n-239DB8 Disk Start            0000 (0)\n-239DBA Int File Attributes   0000 (0)\n+23BE8E Compression Method    0008 (8) 'Deflated'\n+23BE90 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BE94 CRC                   00000000 (0)\n+23BE98 Compressed Size       00000002 (2)\n+23BE9C Uncompressed Size     00000000 (0)\n+23BEA0 Filename Length       0016 (22)\n+23BEA2 Extra Length          0000 (0)\n+23BEA4 Comment Length        0000 (0)\n+23BEA6 Disk Start            0000 (0)\n+23BEA8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239DBC Ext File Attributes   00000000 (0)\n-239DC0 Local Header Offset   001B6DB3 (1797555)\n-239DC4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23BEAA Ext File Attributes   00000000 (0)\n+23BEAE Local Header Offset   001B9553 (1807699)\n+23BEB2 Filename              'XXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239DC4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BEB2: Filename 'XXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239DEF CENTRAL HEADER #1667  02014B50 (33639248)\n-239DF3 Created Zip Spec      14 (20) '2.0'\n-239DF4 Created OS            00 (0) 'MS-DOS'\n-239DF5 Extract Zip Spec      14 (20) '2.0'\n-239DF6 Extract OS            00 (0) 'MS-DOS'\n-239DF7 General Purpose Flag  0808 (2056)\n+23BEC8 CENTRAL HEADER #1667  02014B50 (33639248)\n+23BECC Created Zip Spec      14 (20) '2.0'\n+23BECD Created OS            00 (0) 'MS-DOS'\n+23BECE Extract Zip Spec      14 (20) '2.0'\n+23BECF Extract OS            00 (0) 'MS-DOS'\n+23BED0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239DF9 Compression Method    0008 (8) 'Deflated'\n-239DFB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239DFF CRC                   E8509F41 (3897597761)\n-239E03 Compressed Size       0000022B (555)\n-239E07 Uncompressed Size     000003ED (1005)\n-239E0B Filename Length       0032 (50)\n-239E0D Extra Length          0000 (0)\n-239E0F Comment Length        0000 (0)\n-239E11 Disk Start            0000 (0)\n-239E13 Int File Attributes   0000 (0)\n+23BED2 Compression Method    0008 (8) 'Deflated'\n+23BED4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BED8 CRC                   00000000 (0)\n+23BEDC Compressed Size       00000002 (2)\n+23BEE0 Uncompressed Size     00000000 (0)\n+23BEE4 Filename Length       001E (30)\n+23BEE6 Extra Length          0000 (0)\n+23BEE8 Comment Length        0000 (0)\n+23BEEA Disk Start            0000 (0)\n+23BEEC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239E15 Ext File Attributes   00000000 (0)\n-239E19 Local Header Offset   001B7060 (1798240)\n-239E1D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23BEEE Ext File Attributes   00000000 (0)\n+23BEF2 Local Header Offset   001B9599 (1807769)\n+23BEF6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239E1D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BEF6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239E4F CENTRAL HEADER #1668  02014B50 (33639248)\n-239E53 Created Zip Spec      14 (20) '2.0'\n-239E54 Created OS            00 (0) 'MS-DOS'\n-239E55 Extract Zip Spec      14 (20) '2.0'\n-239E56 Extract OS            00 (0) 'MS-DOS'\n-239E57 General Purpose Flag  0808 (2056)\n+23BF14 CENTRAL HEADER #1668  02014B50 (33639248)\n+23BF18 Created Zip Spec      14 (20) '2.0'\n+23BF19 Created OS            00 (0) 'MS-DOS'\n+23BF1A Extract Zip Spec      14 (20) '2.0'\n+23BF1B Extract OS            00 (0) 'MS-DOS'\n+23BF1C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239E59 Compression Method    0008 (8) 'Deflated'\n-239E5B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239E5F CRC                   00000000 (0)\n-239E63 Compressed Size       00000002 (2)\n-239E67 Uncompressed Size     00000000 (0)\n-239E6B Filename Length       001F (31)\n-239E6D Extra Length          0000 (0)\n-239E6F Comment Length        0000 (0)\n-239E71 Disk Start            0000 (0)\n-239E73 Int File Attributes   0000 (0)\n+23BF1E Compression Method    0008 (8) 'Deflated'\n+23BF20 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BF24 CRC                   496AA8AF (1231726767)\n+23BF28 Compressed Size       0000027A (634)\n+23BF2C Uncompressed Size     00000523 (1315)\n+23BF30 Filename Length       002E (46)\n+23BF32 Extra Length          0000 (0)\n+23BF34 Comment Length        0000 (0)\n+23BF36 Disk Start            0000 (0)\n+23BF38 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239E75 Ext File Attributes   00000000 (0)\n-239E79 Local Header Offset   001B72EB (1798891)\n-239E7D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23BF3A Ext File Attributes   00000000 (0)\n+23BF3E Local Header Offset   001B95E7 (1807847)\n+23BF42 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239E7D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BF42: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239E9C CENTRAL HEADER #1669  02014B50 (33639248)\n-239EA0 Created Zip Spec      14 (20) '2.0'\n-239EA1 Created OS            00 (0) 'MS-DOS'\n-239EA2 Extract Zip Spec      14 (20) '2.0'\n-239EA3 Extract OS            00 (0) 'MS-DOS'\n-239EA4 General Purpose Flag  0808 (2056)\n+23BF70 CENTRAL HEADER #1669  02014B50 (33639248)\n+23BF74 Created Zip Spec      14 (20) '2.0'\n+23BF75 Created OS            00 (0) 'MS-DOS'\n+23BF76 Extract Zip Spec      14 (20) '2.0'\n+23BF77 Extract OS            00 (0) 'MS-DOS'\n+23BF78 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239EA6 Compression Method    0008 (8) 'Deflated'\n-239EA8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239EAC CRC                   DEFC6FC7 (3741085639)\n-239EB0 Compressed Size       00000217 (535)\n-239EB4 Uncompressed Size     000003BD (957)\n-239EB8 Filename Length       002D (45)\n-239EBA Extra Length          0000 (0)\n-239EBC Comment Length        0000 (0)\n-239EBE Disk Start            0000 (0)\n-239EC0 Int File Attributes   0000 (0)\n+23BF7A Compression Method    0008 (8) 'Deflated'\n+23BF7C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BF80 CRC                   52213B11 (1377909521)\n+23BF84 Compressed Size       00000295 (661)\n+23BF88 Uncompressed Size     000005A6 (1446)\n+23BF8C Filename Length       0031 (49)\n+23BF8E Extra Length          0000 (0)\n+23BF90 Comment Length        0000 (0)\n+23BF92 Disk Start            0000 (0)\n+23BF94 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239EC2 Ext File Attributes   00000000 (0)\n-239EC6 Local Header Offset   001B733A (1798970)\n-239ECA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23BF96 Ext File Attributes   00000000 (0)\n+23BF9A Local Header Offset   001B98BD (1808573)\n+23BF9E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239ECA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BF9E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239EF7 CENTRAL HEADER #1670  02014B50 (33639248)\n-239EFB Created Zip Spec      14 (20) '2.0'\n-239EFC Created OS            00 (0) 'MS-DOS'\n-239EFD Extract Zip Spec      14 (20) '2.0'\n-239EFE Extract OS            00 (0) 'MS-DOS'\n-239EFF General Purpose Flag  0808 (2056)\n+23BFCF CENTRAL HEADER #1670  02014B50 (33639248)\n+23BFD3 Created Zip Spec      14 (20) '2.0'\n+23BFD4 Created OS            00 (0) 'MS-DOS'\n+23BFD5 Extract Zip Spec      14 (20) '2.0'\n+23BFD6 Extract OS            00 (0) 'MS-DOS'\n+23BFD7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239F01 Compression Method    0008 (8) 'Deflated'\n-239F03 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239F07 CRC                   00000000 (0)\n-239F0B Compressed Size       00000002 (2)\n-239F0F Uncompressed Size     00000000 (0)\n-239F13 Filename Length       0024 (36)\n-239F15 Extra Length          0000 (0)\n-239F17 Comment Length        0000 (0)\n-239F19 Disk Start            0000 (0)\n-239F1B Int File Attributes   0000 (0)\n+23BFD9 Compression Method    0008 (8) 'Deflated'\n+23BFDB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BFDF CRC                   00000000 (0)\n+23BFE3 Compressed Size       00000002 (2)\n+23BFE7 Uncompressed Size     00000000 (0)\n+23BFEB Filename Length       001B (27)\n+23BFED Extra Length          0000 (0)\n+23BFEF Comment Length        0000 (0)\n+23BFF1 Disk Start            0000 (0)\n+23BFF3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239F1D Ext File Attributes   00000000 (0)\n-239F21 Local Header Offset   001B75AC (1799596)\n-239F25 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23BFF5 Ext File Attributes   00000000 (0)\n+23BFF9 Local Header Offset   001B9BB1 (1809329)\n+23BFFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239F25: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23BFFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239F49 CENTRAL HEADER #1671  02014B50 (33639248)\n-239F4D Created Zip Spec      14 (20) '2.0'\n-239F4E Created OS            00 (0) 'MS-DOS'\n-239F4F Extract Zip Spec      14 (20) '2.0'\n-239F50 Extract OS            00 (0) 'MS-DOS'\n-239F51 General Purpose Flag  0808 (2056)\n+23C018 CENTRAL HEADER #1671  02014B50 (33639248)\n+23C01C Created Zip Spec      14 (20) '2.0'\n+23C01D Created OS            00 (0) 'MS-DOS'\n+23C01E Extract Zip Spec      14 (20) '2.0'\n+23C01F Extract OS            00 (0) 'MS-DOS'\n+23C020 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239F53 Compression Method    0008 (8) 'Deflated'\n-239F55 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239F59 CRC                   34B28AB6 (884116150)\n-239F5D Compressed Size       0000027C (636)\n-239F61 Uncompressed Size     000004E1 (1249)\n-239F65 Filename Length       0033 (51)\n-239F67 Extra Length          0000 (0)\n-239F69 Comment Length        0000 (0)\n-239F6B Disk Start            0000 (0)\n-239F6D Int File Attributes   0000 (0)\n+23C022 Compression Method    0008 (8) 'Deflated'\n+23C024 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C028 CRC                   981F5DED (2552192493)\n+23C02C Compressed Size       00000311 (785)\n+23C030 Uncompressed Size     00000841 (2113)\n+23C034 Filename Length       002E (46)\n+23C036 Extra Length          0000 (0)\n+23C038 Comment Length        0000 (0)\n+23C03A Disk Start            0000 (0)\n+23C03C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239F6F Ext File Attributes   00000000 (0)\n-239F73 Local Header Offset   001B7600 (1799680)\n-239F77 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C03E Ext File Attributes   00000000 (0)\n+23C042 Local Header Offset   001B9BFC (1809404)\n+23C046 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239F77: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C046: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239FAA CENTRAL HEADER #1672  02014B50 (33639248)\n-239FAE Created Zip Spec      14 (20) '2.0'\n-239FAF Created OS            00 (0) 'MS-DOS'\n-239FB0 Extract Zip Spec      14 (20) '2.0'\n-239FB1 Extract OS            00 (0) 'MS-DOS'\n-239FB2 General Purpose Flag  0808 (2056)\n+23C074 CENTRAL HEADER #1672  02014B50 (33639248)\n+23C078 Created Zip Spec      14 (20) '2.0'\n+23C079 Created OS            00 (0) 'MS-DOS'\n+23C07A Extract Zip Spec      14 (20) '2.0'\n+23C07B Extract OS            00 (0) 'MS-DOS'\n+23C07C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-239FB4 Compression Method    0008 (8) 'Deflated'\n-239FB6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-239FBA CRC                   00000000 (0)\n-239FBE Compressed Size       00000002 (2)\n-239FC2 Uncompressed Size     00000000 (0)\n-239FC6 Filename Length       001F (31)\n-239FC8 Extra Length          0000 (0)\n-239FCA Comment Length        0000 (0)\n-239FCC Disk Start            0000 (0)\n-239FCE Int File Attributes   0000 (0)\n+23C07E Compression Method    0008 (8) 'Deflated'\n+23C080 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C084 CRC                   D76B4438 (3614131256)\n+23C088 Compressed Size       00000339 (825)\n+23C08C Uncompressed Size     000009FC (2556)\n+23C090 Filename Length       0028 (40)\n+23C092 Extra Length          0000 (0)\n+23C094 Comment Length        0000 (0)\n+23C096 Disk Start            0000 (0)\n+23C098 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-239FD0 Ext File Attributes   00000000 (0)\n-239FD4 Local Header Offset   001B78DD (1800413)\n-239FD8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C09A Ext File Attributes   00000000 (0)\n+23C09E Local Header Offset   001B9F69 (1810281)\n+23C0A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x239FD8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C0A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-239FF7 CENTRAL HEADER #1673  02014B50 (33639248)\n-239FFB Created Zip Spec      14 (20) '2.0'\n-239FFC Created OS            00 (0) 'MS-DOS'\n-239FFD Extract Zip Spec      14 (20) '2.0'\n-239FFE Extract OS            00 (0) 'MS-DOS'\n-239FFF General Purpose Flag  0808 (2056)\n+23C0CA CENTRAL HEADER #1673  02014B50 (33639248)\n+23C0CE Created Zip Spec      14 (20) '2.0'\n+23C0CF Created OS            00 (0) 'MS-DOS'\n+23C0D0 Extract Zip Spec      14 (20) '2.0'\n+23C0D1 Extract OS            00 (0) 'MS-DOS'\n+23C0D2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A001 Compression Method    0008 (8) 'Deflated'\n-23A003 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A007 CRC                   7889994B (2022283595)\n-23A00B Compressed Size       00000477 (1143)\n-23A00F Uncompressed Size     000011F5 (4597)\n-23A013 Filename Length       002C (44)\n-23A015 Extra Length          0000 (0)\n-23A017 Comment Length        0000 (0)\n-23A019 Disk Start            0000 (0)\n-23A01B Int File Attributes   0000 (0)\n+23C0D4 Compression Method    0008 (8) 'Deflated'\n+23C0D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C0DA CRC                   C61A4C11 (3323612177)\n+23C0DE Compressed Size       00000270 (624)\n+23C0E2 Uncompressed Size     000004E1 (1249)\n+23C0E6 Filename Length       002F (47)\n+23C0E8 Extra Length          0000 (0)\n+23C0EA Comment Length        0000 (0)\n+23C0EC Disk Start            0000 (0)\n+23C0EE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A01D Ext File Attributes   00000000 (0)\n-23A021 Local Header Offset   001B792C (1800492)\n-23A025 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C0F0 Ext File Attributes   00000000 (0)\n+23C0F4 Local Header Offset   001BA2F8 (1811192)\n+23C0F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A025: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C0F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A051 CENTRAL HEADER #1674  02014B50 (33639248)\n-23A055 Created Zip Spec      14 (20) '2.0'\n-23A056 Created OS            00 (0) 'MS-DOS'\n-23A057 Extract Zip Spec      14 (20) '2.0'\n-23A058 Extract OS            00 (0) 'MS-DOS'\n-23A059 General Purpose Flag  0808 (2056)\n+23C127 CENTRAL HEADER #1674  02014B50 (33639248)\n+23C12B Created Zip Spec      14 (20) '2.0'\n+23C12C Created OS            00 (0) 'MS-DOS'\n+23C12D Extract Zip Spec      14 (20) '2.0'\n+23C12E Extract OS            00 (0) 'MS-DOS'\n+23C12F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A05B Compression Method    0008 (8) 'Deflated'\n-23A05D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A061 CRC                   785E6462 (2019452002)\n-23A065 Compressed Size       00000236 (566)\n-23A069 Uncompressed Size     00000446 (1094)\n-23A06D Filename Length       002F (47)\n-23A06F Extra Length          0000 (0)\n-23A071 Comment Length        0000 (0)\n-23A073 Disk Start            0000 (0)\n-23A075 Int File Attributes   0000 (0)\n+23C131 Compression Method    0008 (8) 'Deflated'\n+23C133 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C137 CRC                   00000000 (0)\n+23C13B Compressed Size       00000002 (2)\n+23C13F Uncompressed Size     00000000 (0)\n+23C143 Filename Length       0023 (35)\n+23C145 Extra Length          0000 (0)\n+23C147 Comment Length        0000 (0)\n+23C149 Disk Start            0000 (0)\n+23C14B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A077 Ext File Attributes   00000000 (0)\n-23A07B Local Header Offset   001B7DFD (1801725)\n-23A07F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C14D Ext File Attributes   00000000 (0)\n+23C151 Local Header Offset   001BA5C5 (1811909)\n+23C155 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A07F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C155: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A0AE CENTRAL HEADER #1675  02014B50 (33639248)\n-23A0B2 Created Zip Spec      14 (20) '2.0'\n-23A0B3 Created OS            00 (0) 'MS-DOS'\n-23A0B4 Extract Zip Spec      14 (20) '2.0'\n-23A0B5 Extract OS            00 (0) 'MS-DOS'\n-23A0B6 General Purpose Flag  0808 (2056)\n+23C178 CENTRAL HEADER #1675  02014B50 (33639248)\n+23C17C Created Zip Spec      14 (20) '2.0'\n+23C17D Created OS            00 (0) 'MS-DOS'\n+23C17E Extract Zip Spec      14 (20) '2.0'\n+23C17F Extract OS            00 (0) 'MS-DOS'\n+23C180 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A0B8 Compression Method    0008 (8) 'Deflated'\n-23A0BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A0BE CRC                   12EE7A54 (317618772)\n-23A0C2 Compressed Size       00000214 (532)\n-23A0C6 Uncompressed Size     000003B7 (951)\n-23A0CA Filename Length       002C (44)\n-23A0CC Extra Length          0000 (0)\n-23A0CE Comment Length        0000 (0)\n-23A0D0 Disk Start            0000 (0)\n-23A0D2 Int File Attributes   0000 (0)\n+23C182 Compression Method    0008 (8) 'Deflated'\n+23C184 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C188 CRC                   90AFF823 (2427451427)\n+23C18C Compressed Size       0000053B (1339)\n+23C190 Uncompressed Size     000018DF (6367)\n+23C194 Filename Length       0038 (56)\n+23C196 Extra Length          0000 (0)\n+23C198 Comment Length        0000 (0)\n+23C19A Disk Start            0000 (0)\n+23C19C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A0D4 Ext File Attributes   00000000 (0)\n-23A0D8 Local Header Offset   001B8090 (1802384)\n-23A0DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C19E Ext File Attributes   00000000 (0)\n+23C1A2 Local Header Offset   001BA618 (1811992)\n+23C1A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A0DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C1A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A108 CENTRAL HEADER #1676  02014B50 (33639248)\n-23A10C Created Zip Spec      14 (20) '2.0'\n-23A10D Created OS            00 (0) 'MS-DOS'\n-23A10E Extract Zip Spec      14 (20) '2.0'\n-23A10F Extract OS            00 (0) 'MS-DOS'\n-23A110 General Purpose Flag  0808 (2056)\n+23C1DE CENTRAL HEADER #1676  02014B50 (33639248)\n+23C1E2 Created Zip Spec      14 (20) '2.0'\n+23C1E3 Created OS            00 (0) 'MS-DOS'\n+23C1E4 Extract Zip Spec      14 (20) '2.0'\n+23C1E5 Extract OS            00 (0) 'MS-DOS'\n+23C1E6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A112 Compression Method    0008 (8) 'Deflated'\n-23A114 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A118 CRC                   AE09219E (2919834014)\n-23A11C Compressed Size       00000216 (534)\n-23A120 Uncompressed Size     000003B7 (951)\n-23A124 Filename Length       002C (44)\n-23A126 Extra Length          0000 (0)\n-23A128 Comment Length        0000 (0)\n-23A12A Disk Start            0000 (0)\n-23A12C Int File Attributes   0000 (0)\n+23C1E8 Compression Method    0008 (8) 'Deflated'\n+23C1EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C1EE CRC                   85536244 (2236834372)\n+23C1F2 Compressed Size       00000295 (661)\n+23C1F6 Uncompressed Size     00000553 (1363)\n+23C1FA Filename Length       003F (63)\n+23C1FC Extra Length          0000 (0)\n+23C1FE Comment Length        0000 (0)\n+23C200 Disk Start            0000 (0)\n+23C202 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A12E Ext File Attributes   00000000 (0)\n-23A132 Local Header Offset   001B82FE (1803006)\n-23A136 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C204 Ext File Attributes   00000000 (0)\n+23C208 Local Header Offset   001BABB9 (1813433)\n+23C20C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A136: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C20C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A162 CENTRAL HEADER #1677  02014B50 (33639248)\n-23A166 Created Zip Spec      14 (20) '2.0'\n-23A167 Created OS            00 (0) 'MS-DOS'\n-23A168 Extract Zip Spec      14 (20) '2.0'\n-23A169 Extract OS            00 (0) 'MS-DOS'\n-23A16A General Purpose Flag  0808 (2056)\n+23C24B CENTRAL HEADER #1677  02014B50 (33639248)\n+23C24F Created Zip Spec      14 (20) '2.0'\n+23C250 Created OS            00 (0) 'MS-DOS'\n+23C251 Extract Zip Spec      14 (20) '2.0'\n+23C252 Extract OS            00 (0) 'MS-DOS'\n+23C253 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A16C Compression Method    0008 (8) 'Deflated'\n-23A16E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A172 CRC                   C0617C64 (3227614308)\n-23A176 Compressed Size       00000215 (533)\n-23A17A Uncompressed Size     000003B5 (949)\n-23A17E Filename Length       002A (42)\n-23A180 Extra Length          0000 (0)\n-23A182 Comment Length        0000 (0)\n-23A184 Disk Start            0000 (0)\n-23A186 Int File Attributes   0000 (0)\n+23C255 Compression Method    0008 (8) 'Deflated'\n+23C257 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C25B CRC                   98DC2CD5 (2564566229)\n+23C25F Compressed Size       00000553 (1363)\n+23C263 Uncompressed Size     00001C48 (7240)\n+23C267 Filename Length       0038 (56)\n+23C269 Extra Length          0000 (0)\n+23C26B Comment Length        0000 (0)\n+23C26D Disk Start            0000 (0)\n+23C26F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A188 Ext File Attributes   00000000 (0)\n-23A18C Local Header Offset   001B856E (1803630)\n-23A190 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C271 Ext File Attributes   00000000 (0)\n+23C275 Local Header Offset   001BAEBB (1814203)\n+23C279 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A190: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C279: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A1BA CENTRAL HEADER #1678  02014B50 (33639248)\n-23A1BE Created Zip Spec      14 (20) '2.0'\n-23A1BF Created OS            00 (0) 'MS-DOS'\n-23A1C0 Extract Zip Spec      14 (20) '2.0'\n-23A1C1 Extract OS            00 (0) 'MS-DOS'\n-23A1C2 General Purpose Flag  0808 (2056)\n+23C2B1 CENTRAL HEADER #1678  02014B50 (33639248)\n+23C2B5 Created Zip Spec      14 (20) '2.0'\n+23C2B6 Created OS            00 (0) 'MS-DOS'\n+23C2B7 Extract Zip Spec      14 (20) '2.0'\n+23C2B8 Extract OS            00 (0) 'MS-DOS'\n+23C2B9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A1C4 Compression Method    0008 (8) 'Deflated'\n-23A1C6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A1CA CRC                   50E43A38 (1357134392)\n-23A1CE Compressed Size       00000236 (566)\n-23A1D2 Uncompressed Size     00000420 (1056)\n-23A1D6 Filename Length       002A (42)\n-23A1D8 Extra Length          0000 (0)\n-23A1DA Comment Length        0000 (0)\n-23A1DC Disk Start            0000 (0)\n-23A1DE Int File Attributes   0000 (0)\n+23C2BB Compression Method    0008 (8) 'Deflated'\n+23C2BD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C2C1 CRC                   00000000 (0)\n+23C2C5 Compressed Size       00000002 (2)\n+23C2C9 Uncompressed Size     00000000 (0)\n+23C2CD Filename Length       001B (27)\n+23C2CF Extra Length          0000 (0)\n+23C2D1 Comment Length        0000 (0)\n+23C2D3 Disk Start            0000 (0)\n+23C2D5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A1E0 Ext File Attributes   00000000 (0)\n-23A1E4 Local Header Offset   001B87DB (1804251)\n-23A1E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C2D7 Ext File Attributes   00000000 (0)\n+23C2DB Local Header Offset   001BB474 (1815668)\n+23C2DF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A1E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C2DF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A212 CENTRAL HEADER #1679  02014B50 (33639248)\n-23A216 Created Zip Spec      14 (20) '2.0'\n-23A217 Created OS            00 (0) 'MS-DOS'\n-23A218 Extract Zip Spec      14 (20) '2.0'\n-23A219 Extract OS            00 (0) 'MS-DOS'\n-23A21A General Purpose Flag  0808 (2056)\n+23C2FA CENTRAL HEADER #1679  02014B50 (33639248)\n+23C2FE Created Zip Spec      14 (20) '2.0'\n+23C2FF Created OS            00 (0) 'MS-DOS'\n+23C300 Extract Zip Spec      14 (20) '2.0'\n+23C301 Extract OS            00 (0) 'MS-DOS'\n+23C302 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A21C Compression Method    0008 (8) 'Deflated'\n-23A21E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A222 CRC                   7B632F2C (2070097708)\n-23A226 Compressed Size       00000238 (568)\n-23A22A Uncompressed Size     00000428 (1064)\n-23A22E Filename Length       002B (43)\n-23A230 Extra Length          0000 (0)\n-23A232 Comment Length        0000 (0)\n-23A234 Disk Start            0000 (0)\n-23A236 Int File Attributes   0000 (0)\n+23C304 Compression Method    0008 (8) 'Deflated'\n+23C306 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C30A CRC                   B05300B6 (2958229686)\n+23C30E Compressed Size       00000241 (577)\n+23C312 Uncompressed Size     00000443 (1091)\n+23C316 Filename Length       0027 (39)\n+23C318 Extra Length          0000 (0)\n+23C31A Comment Length        0000 (0)\n+23C31C Disk Start            0000 (0)\n+23C31E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A238 Ext File Attributes   00000000 (0)\n-23A23C Local Header Offset   001B8A69 (1804905)\n-23A240 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C320 Ext File Attributes   00000000 (0)\n+23C324 Local Header Offset   001BB4BF (1815743)\n+23C328 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A240: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C328: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A26B CENTRAL HEADER #1680  02014B50 (33639248)\n-23A26F Created Zip Spec      14 (20) '2.0'\n-23A270 Created OS            00 (0) 'MS-DOS'\n-23A271 Extract Zip Spec      14 (20) '2.0'\n-23A272 Extract OS            00 (0) 'MS-DOS'\n-23A273 General Purpose Flag  0808 (2056)\n+23C34F CENTRAL HEADER #1680  02014B50 (33639248)\n+23C353 Created Zip Spec      14 (20) '2.0'\n+23C354 Created OS            00 (0) 'MS-DOS'\n+23C355 Extract Zip Spec      14 (20) '2.0'\n+23C356 Extract OS            00 (0) 'MS-DOS'\n+23C357 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A275 Compression Method    0008 (8) 'Deflated'\n-23A277 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A27B CRC                   885A72D3 (2287629011)\n-23A27F Compressed Size       00000248 (584)\n-23A283 Uncompressed Size     00000481 (1153)\n-23A287 Filename Length       002C (44)\n-23A289 Extra Length          0000 (0)\n-23A28B Comment Length        0000 (0)\n-23A28D Disk Start            0000 (0)\n-23A28F Int File Attributes   0000 (0)\n+23C359 Compression Method    0008 (8) 'Deflated'\n+23C35B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C35F CRC                   4B53EA77 (1263790711)\n+23C363 Compressed Size       000002B8 (696)\n+23C367 Uncompressed Size     000008BC (2236)\n+23C36B Filename Length       002E (46)\n+23C36D Extra Length          0000 (0)\n+23C36F Comment Length        0000 (0)\n+23C371 Disk Start            0000 (0)\n+23C373 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A291 Ext File Attributes   00000000 (0)\n-23A295 Local Header Offset   001B8CFA (1805562)\n-23A299 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C375 Ext File Attributes   00000000 (0)\n+23C379 Local Header Offset   001BB755 (1816405)\n+23C37D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A299: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C37D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A2C5 CENTRAL HEADER #1681  02014B50 (33639248)\n-23A2C9 Created Zip Spec      14 (20) '2.0'\n-23A2CA Created OS            00 (0) 'MS-DOS'\n-23A2CB Extract Zip Spec      14 (20) '2.0'\n-23A2CC Extract OS            00 (0) 'MS-DOS'\n-23A2CD General Purpose Flag  0808 (2056)\n+23C3AB CENTRAL HEADER #1681  02014B50 (33639248)\n+23C3AF Created Zip Spec      14 (20) '2.0'\n+23C3B0 Created OS            00 (0) 'MS-DOS'\n+23C3B1 Extract Zip Spec      14 (20) '2.0'\n+23C3B2 Extract OS            00 (0) 'MS-DOS'\n+23C3B3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A2CF Compression Method    0008 (8) 'Deflated'\n-23A2D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A2D5 CRC                   419EAEDE (1100918494)\n-23A2D9 Compressed Size       00000217 (535)\n-23A2DD Uncompressed Size     000003B7 (951)\n-23A2E1 Filename Length       002C (44)\n-23A2E3 Extra Length          0000 (0)\n-23A2E5 Comment Length        0000 (0)\n-23A2E7 Disk Start            0000 (0)\n-23A2E9 Int File Attributes   0000 (0)\n+23C3B5 Compression Method    0008 (8) 'Deflated'\n+23C3B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C3BB CRC                   F7117BC1 (4145118145)\n+23C3BF Compressed Size       00000212 (530)\n+23C3C3 Uncompressed Size     000003AD (941)\n+23C3C7 Filename Length       0025 (37)\n+23C3C9 Extra Length          0000 (0)\n+23C3CB Comment Length        0000 (0)\n+23C3CD Disk Start            0000 (0)\n+23C3CF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A2EB Ext File Attributes   00000000 (0)\n-23A2EF Local Header Offset   001B8F9C (1806236)\n-23A2F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C3D1 Ext File Attributes   00000000 (0)\n+23C3D5 Local Header Offset   001BBA69 (1817193)\n+23C3D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A2F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C3D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A31F CENTRAL HEADER #1682  02014B50 (33639248)\n-23A323 Created Zip Spec      14 (20) '2.0'\n-23A324 Created OS            00 (0) 'MS-DOS'\n-23A325 Extract Zip Spec      14 (20) '2.0'\n-23A326 Extract OS            00 (0) 'MS-DOS'\n-23A327 General Purpose Flag  0808 (2056)\n+23C3FE CENTRAL HEADER #1682  02014B50 (33639248)\n+23C402 Created Zip Spec      14 (20) '2.0'\n+23C403 Created OS            00 (0) 'MS-DOS'\n+23C404 Extract Zip Spec      14 (20) '2.0'\n+23C405 Extract OS            00 (0) 'MS-DOS'\n+23C406 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A329 Compression Method    0008 (8) 'Deflated'\n-23A32B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A32F CRC                   76D9341F (1993946143)\n-23A333 Compressed Size       00000245 (581)\n-23A337 Uncompressed Size     0000045A (1114)\n-23A33B Filename Length       002D (45)\n-23A33D Extra Length          0000 (0)\n-23A33F Comment Length        0000 (0)\n-23A341 Disk Start            0000 (0)\n-23A343 Int File Attributes   0000 (0)\n+23C408 Compression Method    0008 (8) 'Deflated'\n+23C40A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C40E CRC                   AB71C50D (2876359949)\n+23C412 Compressed Size       00000213 (531)\n+23C416 Uncompressed Size     000003AF (943)\n+23C41A Filename Length       0026 (38)\n+23C41C Extra Length          0000 (0)\n+23C41E Comment Length        0000 (0)\n+23C420 Disk Start            0000 (0)\n+23C422 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A345 Ext File Attributes   00000000 (0)\n-23A349 Local Header Offset   001B920D (1806861)\n-23A34D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C424 Ext File Attributes   00000000 (0)\n+23C428 Local Header Offset   001BBCCE (1817806)\n+23C42C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A34D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C42C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A37A CENTRAL HEADER #1683  02014B50 (33639248)\n-23A37E Created Zip Spec      14 (20) '2.0'\n-23A37F Created OS            00 (0) 'MS-DOS'\n-23A380 Extract Zip Spec      14 (20) '2.0'\n-23A381 Extract OS            00 (0) 'MS-DOS'\n-23A382 General Purpose Flag  0808 (2056)\n+23C452 CENTRAL HEADER #1683  02014B50 (33639248)\n+23C456 Created Zip Spec      14 (20) '2.0'\n+23C457 Created OS            00 (0) 'MS-DOS'\n+23C458 Extract Zip Spec      14 (20) '2.0'\n+23C459 Extract OS            00 (0) 'MS-DOS'\n+23C45A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A384 Compression Method    0008 (8) 'Deflated'\n-23A386 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A38A CRC                   61ADD6F9 (1638782713)\n-23A38E Compressed Size       00000249 (585)\n-23A392 Uncompressed Size     00000498 (1176)\n-23A396 Filename Length       002C (44)\n-23A398 Extra Length          0000 (0)\n-23A39A Comment Length        0000 (0)\n-23A39C Disk Start            0000 (0)\n-23A39E Int File Attributes   0000 (0)\n+23C45C Compression Method    0008 (8) 'Deflated'\n+23C45E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C462 CRC                   738B9E3F (1938529855)\n+23C466 Compressed Size       0000027A (634)\n+23C46A Uncompressed Size     0000054E (1358)\n+23C46E Filename Length       002A (42)\n+23C470 Extra Length          0000 (0)\n+23C472 Comment Length        0000 (0)\n+23C474 Disk Start            0000 (0)\n+23C476 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A3A0 Ext File Attributes   00000000 (0)\n-23A3A4 Local Header Offset   001B94AD (1807533)\n-23A3A8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C478 Ext File Attributes   00000000 (0)\n+23C47C Local Header Offset   001BBF35 (1818421)\n+23C480 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A3A8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C480: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A3D4 CENTRAL HEADER #1684  02014B50 (33639248)\n-23A3D8 Created Zip Spec      14 (20) '2.0'\n-23A3D9 Created OS            00 (0) 'MS-DOS'\n-23A3DA Extract Zip Spec      14 (20) '2.0'\n-23A3DB Extract OS            00 (0) 'MS-DOS'\n-23A3DC General Purpose Flag  0808 (2056)\n+23C4AA CENTRAL HEADER #1684  02014B50 (33639248)\n+23C4AE Created Zip Spec      14 (20) '2.0'\n+23C4AF Created OS            00 (0) 'MS-DOS'\n+23C4B0 Extract Zip Spec      14 (20) '2.0'\n+23C4B1 Extract OS            00 (0) 'MS-DOS'\n+23C4B2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A3DE Compression Method    0008 (8) 'Deflated'\n-23A3E0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A3E4 CRC                   E87449AF (3899935151)\n-23A3E8 Compressed Size       00000246 (582)\n-23A3EC Uncompressed Size     00000467 (1127)\n-23A3F0 Filename Length       002B (43)\n-23A3F2 Extra Length          0000 (0)\n-23A3F4 Comment Length        0000 (0)\n-23A3F6 Disk Start            0000 (0)\n-23A3F8 Int File Attributes   0000 (0)\n+23C4B4 Compression Method    0008 (8) 'Deflated'\n+23C4B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C4BA CRC                   302E4037 (808337463)\n+23C4BE Compressed Size       000002C4 (708)\n+23C4C2 Uncompressed Size     000007E9 (2025)\n+23C4C6 Filename Length       0031 (49)\n+23C4C8 Extra Length          0000 (0)\n+23C4CA Comment Length        0000 (0)\n+23C4CC Disk Start            0000 (0)\n+23C4CE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A3FA Ext File Attributes   00000000 (0)\n-23A3FE Local Header Offset   001B9750 (1808208)\n-23A402 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C4D0 Ext File Attributes   00000000 (0)\n+23C4D4 Local Header Offset   001BC207 (1819143)\n+23C4D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A402: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C4D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A42D CENTRAL HEADER #1685  02014B50 (33639248)\n-23A431 Created Zip Spec      14 (20) '2.0'\n-23A432 Created OS            00 (0) 'MS-DOS'\n-23A433 Extract Zip Spec      14 (20) '2.0'\n-23A434 Extract OS            00 (0) 'MS-DOS'\n-23A435 General Purpose Flag  0808 (2056)\n+23C509 CENTRAL HEADER #1685  02014B50 (33639248)\n+23C50D Created Zip Spec      14 (20) '2.0'\n+23C50E Created OS            00 (0) 'MS-DOS'\n+23C50F Extract Zip Spec      14 (20) '2.0'\n+23C510 Extract OS            00 (0) 'MS-DOS'\n+23C511 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A437 Compression Method    0008 (8) 'Deflated'\n-23A439 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A43D CRC                   00000000 (0)\n-23A441 Compressed Size       00000002 (2)\n-23A445 Uncompressed Size     00000000 (0)\n-23A449 Filename Length       0020 (32)\n-23A44B Extra Length          0000 (0)\n-23A44D Comment Length        0000 (0)\n-23A44F Disk Start            0000 (0)\n-23A451 Int File Attributes   0000 (0)\n+23C513 Compression Method    0008 (8) 'Deflated'\n+23C515 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C519 CRC                   6793ECA6 (1737747622)\n+23C51D Compressed Size       0000021F (543)\n+23C521 Uncompressed Size     000003CF (975)\n+23C525 Filename Length       0026 (38)\n+23C527 Extra Length          0000 (0)\n+23C529 Comment Length        0000 (0)\n+23C52B Disk Start            0000 (0)\n+23C52D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A453 Ext File Attributes   00000000 (0)\n-23A457 Local Header Offset   001B99EF (1808879)\n-23A45B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C52F Ext File Attributes   00000000 (0)\n+23C533 Local Header Offset   001BC52A (1819946)\n+23C537 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A45B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C537: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A47B CENTRAL HEADER #1686  02014B50 (33639248)\n-23A47F Created Zip Spec      14 (20) '2.0'\n-23A480 Created OS            00 (0) 'MS-DOS'\n-23A481 Extract Zip Spec      14 (20) '2.0'\n-23A482 Extract OS            00 (0) 'MS-DOS'\n-23A483 General Purpose Flag  0808 (2056)\n+23C55D CENTRAL HEADER #1686  02014B50 (33639248)\n+23C561 Created Zip Spec      14 (20) '2.0'\n+23C562 Created OS            00 (0) 'MS-DOS'\n+23C563 Extract Zip Spec      14 (20) '2.0'\n+23C564 Extract OS            00 (0) 'MS-DOS'\n+23C565 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A485 Compression Method    0008 (8) 'Deflated'\n-23A487 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A48B CRC                   00000000 (0)\n-23A48F Compressed Size       00000002 (2)\n-23A493 Uncompressed Size     00000000 (0)\n-23A497 Filename Length       0028 (40)\n-23A499 Extra Length          0000 (0)\n-23A49B Comment Length        0000 (0)\n-23A49D Disk Start            0000 (0)\n-23A49F Int File Attributes   0000 (0)\n+23C567 Compression Method    0008 (8) 'Deflated'\n+23C569 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C56D CRC                   39731479 (963843193)\n+23C571 Compressed Size       00000383 (899)\n+23C575 Uncompressed Size     00000CF9 (3321)\n+23C579 Filename Length       002B (43)\n+23C57B Extra Length          0000 (0)\n+23C57D Comment Length        0000 (0)\n+23C57F Disk Start            0000 (0)\n+23C581 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A4A1 Ext File Attributes   00000000 (0)\n-23A4A5 Local Header Offset   001B9A3F (1808959)\n-23A4A9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C583 Ext File Attributes   00000000 (0)\n+23C587 Local Header Offset   001BC79D (1820573)\n+23C58B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A4A9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C58B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A4D1 CENTRAL HEADER #1687  02014B50 (33639248)\n-23A4D5 Created Zip Spec      14 (20) '2.0'\n-23A4D6 Created OS            00 (0) 'MS-DOS'\n-23A4D7 Extract Zip Spec      14 (20) '2.0'\n-23A4D8 Extract OS            00 (0) 'MS-DOS'\n-23A4D9 General Purpose Flag  0808 (2056)\n+23C5B6 CENTRAL HEADER #1687  02014B50 (33639248)\n+23C5BA Created Zip Spec      14 (20) '2.0'\n+23C5BB Created OS            00 (0) 'MS-DOS'\n+23C5BC Extract Zip Spec      14 (20) '2.0'\n+23C5BD Extract OS            00 (0) 'MS-DOS'\n+23C5BE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A4DB Compression Method    0008 (8) 'Deflated'\n-23A4DD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A4E1 CRC                   00000000 (0)\n-23A4E5 Compressed Size       00000002 (2)\n-23A4E9 Uncompressed Size     00000000 (0)\n-23A4ED Filename Length       0033 (51)\n-23A4EF Extra Length          0000 (0)\n-23A4F1 Comment Length        0000 (0)\n-23A4F3 Disk Start            0000 (0)\n-23A4F5 Int File Attributes   0000 (0)\n+23C5C0 Compression Method    0008 (8) 'Deflated'\n+23C5C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C5C6 CRC                   00000000 (0)\n+23C5CA Compressed Size       00000002 (2)\n+23C5CE Uncompressed Size     00000000 (0)\n+23C5D2 Filename Length       0024 (36)\n+23C5D4 Extra Length          0000 (0)\n+23C5D6 Comment Length        0000 (0)\n+23C5D8 Disk Start            0000 (0)\n+23C5DA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A4F7 Ext File Attributes   00000000 (0)\n-23A4FB Local Header Offset   001B9A97 (1809047)\n-23A4FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C5DC Ext File Attributes   00000000 (0)\n+23C5E0 Local Header Offset   001BCB79 (1821561)\n+23C5E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A4FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C5E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A532 CENTRAL HEADER #1688  02014B50 (33639248)\n-23A536 Created Zip Spec      14 (20) '2.0'\n-23A537 Created OS            00 (0) 'MS-DOS'\n-23A538 Extract Zip Spec      14 (20) '2.0'\n-23A539 Extract OS            00 (0) 'MS-DOS'\n-23A53A General Purpose Flag  0808 (2056)\n+23C608 CENTRAL HEADER #1688  02014B50 (33639248)\n+23C60C Created Zip Spec      14 (20) '2.0'\n+23C60D Created OS            00 (0) 'MS-DOS'\n+23C60E Extract Zip Spec      14 (20) '2.0'\n+23C60F Extract OS            00 (0) 'MS-DOS'\n+23C610 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A53C Compression Method    0008 (8) 'Deflated'\n-23A53E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A542 CRC                   CE003164 (3456119140)\n-23A546 Compressed Size       0000041B (1051)\n-23A54A Uncompressed Size     00000AB3 (2739)\n-23A54E Filename Length       0043 (67)\n-23A550 Extra Length          0000 (0)\n-23A552 Comment Length        0000 (0)\n-23A554 Disk Start            0000 (0)\n-23A556 Int File Attributes   0000 (0)\n+23C612 Compression Method    0008 (8) 'Deflated'\n+23C614 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C618 CRC                   4B6F1882 (1265571970)\n+23C61C Compressed Size       00000218 (536)\n+23C620 Uncompressed Size     000003C7 (967)\n+23C624 Filename Length       0032 (50)\n+23C626 Extra Length          0000 (0)\n+23C628 Comment Length        0000 (0)\n+23C62A Disk Start            0000 (0)\n+23C62C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A558 Ext File Attributes   00000000 (0)\n-23A55C Local Header Offset   001B9AFA (1809146)\n-23A560 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C62E Ext File Attributes   00000000 (0)\n+23C632 Local Header Offset   001BCBCD (1821645)\n+23C636 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A560: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C636: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A5A3 CENTRAL HEADER #1689  02014B50 (33639248)\n-23A5A7 Created Zip Spec      14 (20) '2.0'\n-23A5A8 Created OS            00 (0) 'MS-DOS'\n-23A5A9 Extract Zip Spec      14 (20) '2.0'\n-23A5AA Extract OS            00 (0) 'MS-DOS'\n-23A5AB General Purpose Flag  0808 (2056)\n+23C668 CENTRAL HEADER #1689  02014B50 (33639248)\n+23C66C Created Zip Spec      14 (20) '2.0'\n+23C66D Created OS            00 (0) 'MS-DOS'\n+23C66E Extract Zip Spec      14 (20) '2.0'\n+23C66F Extract OS            00 (0) 'MS-DOS'\n+23C670 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A5AD Compression Method    0008 (8) 'Deflated'\n-23A5AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A5B3 CRC                   00000000 (0)\n-23A5B7 Compressed Size       00000002 (2)\n-23A5BB Uncompressed Size     00000000 (0)\n-23A5BF Filename Length       001C (28)\n-23A5C1 Extra Length          0000 (0)\n-23A5C3 Comment Length        0000 (0)\n-23A5C5 Disk Start            0000 (0)\n-23A5C7 Int File Attributes   0000 (0)\n+23C672 Compression Method    0008 (8) 'Deflated'\n+23C674 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C678 CRC                   498B4AB9 (1233865401)\n+23C67C Compressed Size       0000026B (619)\n+23C680 Uncompressed Size     0000048B (1163)\n+23C684 Filename Length       0039 (57)\n+23C686 Extra Length          0000 (0)\n+23C688 Comment Length        0000 (0)\n+23C68A Disk Start            0000 (0)\n+23C68C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A5C9 Ext File Attributes   00000000 (0)\n-23A5CD Local Header Offset   001B9F86 (1810310)\n-23A5D1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C68E Ext File Attributes   00000000 (0)\n+23C692 Local Header Offset   001BCE45 (1822277)\n+23C696 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A5D1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C696: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A5ED CENTRAL HEADER #1690  02014B50 (33639248)\n-23A5F1 Created Zip Spec      14 (20) '2.0'\n-23A5F2 Created OS            00 (0) 'MS-DOS'\n-23A5F3 Extract Zip Spec      14 (20) '2.0'\n-23A5F4 Extract OS            00 (0) 'MS-DOS'\n-23A5F5 General Purpose Flag  0808 (2056)\n+23C6CF CENTRAL HEADER #1690  02014B50 (33639248)\n+23C6D3 Created Zip Spec      14 (20) '2.0'\n+23C6D4 Created OS            00 (0) 'MS-DOS'\n+23C6D5 Extract Zip Spec      14 (20) '2.0'\n+23C6D6 Extract OS            00 (0) 'MS-DOS'\n+23C6D7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A5F7 Compression Method    0008 (8) 'Deflated'\n-23A5F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A5FD CRC                   DC9E9A97 (3701381783)\n-23A601 Compressed Size       00000213 (531)\n-23A605 Uncompressed Size     000003B7 (951)\n-23A609 Filename Length       002A (42)\n-23A60B Extra Length          0000 (0)\n-23A60D Comment Length        0000 (0)\n-23A60F Disk Start            0000 (0)\n-23A611 Int File Attributes   0000 (0)\n+23C6D9 Compression Method    0008 (8) 'Deflated'\n+23C6DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C6DF CRC                   DEB81EEE (3736608494)\n+23C6E3 Compressed Size       000002C8 (712)\n+23C6E7 Uncompressed Size     00000609 (1545)\n+23C6EB Filename Length       0037 (55)\n+23C6ED Extra Length          0000 (0)\n+23C6EF Comment Length        0000 (0)\n+23C6F1 Disk Start            0000 (0)\n+23C6F3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A613 Ext File Attributes   00000000 (0)\n-23A617 Local Header Offset   001B9FD2 (1810386)\n-23A61B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C6F5 Ext File Attributes   00000000 (0)\n+23C6F9 Local Header Offset   001BD117 (1822999)\n+23C6FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A61B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C6FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A645 CENTRAL HEADER #1691  02014B50 (33639248)\n-23A649 Created Zip Spec      14 (20) '2.0'\n-23A64A Created OS            00 (0) 'MS-DOS'\n-23A64B Extract Zip Spec      14 (20) '2.0'\n-23A64C Extract OS            00 (0) 'MS-DOS'\n-23A64D General Purpose Flag  0808 (2056)\n+23C734 CENTRAL HEADER #1691  02014B50 (33639248)\n+23C738 Created Zip Spec      14 (20) '2.0'\n+23C739 Created OS            00 (0) 'MS-DOS'\n+23C73A Extract Zip Spec      14 (20) '2.0'\n+23C73B Extract OS            00 (0) 'MS-DOS'\n+23C73C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A64F Compression Method    0008 (8) 'Deflated'\n-23A651 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A655 CRC                   00000000 (0)\n-23A659 Compressed Size       00000002 (2)\n-23A65D Uncompressed Size     00000000 (0)\n-23A661 Filename Length       001A (26)\n-23A663 Extra Length          0000 (0)\n-23A665 Comment Length        0000 (0)\n-23A667 Disk Start            0000 (0)\n-23A669 Int File Attributes   0000 (0)\n+23C73E Compression Method    0008 (8) 'Deflated'\n+23C740 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C744 CRC                   00000000 (0)\n+23C748 Compressed Size       00000002 (2)\n+23C74C Uncompressed Size     00000000 (0)\n+23C750 Filename Length       0020 (32)\n+23C752 Extra Length          0000 (0)\n+23C754 Comment Length        0000 (0)\n+23C756 Disk Start            0000 (0)\n+23C758 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A66B Ext File Attributes   00000000 (0)\n-23A66F Local Header Offset   001BA23D (1811005)\n-23A673 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C75A Ext File Attributes   00000000 (0)\n+23C75E Local Header Offset   001BD444 (1823812)\n+23C762 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A673: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C762: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A68D CENTRAL HEADER #1692  02014B50 (33639248)\n-23A691 Created Zip Spec      14 (20) '2.0'\n-23A692 Created OS            00 (0) 'MS-DOS'\n-23A693 Extract Zip Spec      14 (20) '2.0'\n-23A694 Extract OS            00 (0) 'MS-DOS'\n-23A695 General Purpose Flag  0808 (2056)\n+23C782 CENTRAL HEADER #1692  02014B50 (33639248)\n+23C786 Created Zip Spec      14 (20) '2.0'\n+23C787 Created OS            00 (0) 'MS-DOS'\n+23C788 Extract Zip Spec      14 (20) '2.0'\n+23C789 Extract OS            00 (0) 'MS-DOS'\n+23C78A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A697 Compression Method    0008 (8) 'Deflated'\n-23A699 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A69D CRC                   D9881C34 (3649575988)\n-23A6A1 Compressed Size       000002DA (730)\n-23A6A5 Uncompressed Size     0000063F (1599)\n-23A6A9 Filename Length       0026 (38)\n-23A6AB Extra Length          0000 (0)\n-23A6AD Comment Length        0000 (0)\n-23A6AF Disk Start            0000 (0)\n-23A6B1 Int File Attributes   0000 (0)\n+23C78C Compression Method    0008 (8) 'Deflated'\n+23C78E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C792 CRC                   2510FA3B (621869627)\n+23C796 Compressed Size       00000218 (536)\n+23C79A Uncompressed Size     000003C1 (961)\n+23C79E Filename Length       002F (47)\n+23C7A0 Extra Length          0000 (0)\n+23C7A2 Comment Length        0000 (0)\n+23C7A4 Disk Start            0000 (0)\n+23C7A6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A6B3 Ext File Attributes   00000000 (0)\n-23A6B7 Local Header Offset   001BA287 (1811079)\n-23A6BB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C7A8 Ext File Attributes   00000000 (0)\n+23C7AC Local Header Offset   001BD494 (1823892)\n+23C7B0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A6BB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C7B0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A6E1 CENTRAL HEADER #1693  02014B50 (33639248)\n-23A6E5 Created Zip Spec      14 (20) '2.0'\n-23A6E6 Created OS            00 (0) 'MS-DOS'\n-23A6E7 Extract Zip Spec      14 (20) '2.0'\n-23A6E8 Extract OS            00 (0) 'MS-DOS'\n-23A6E9 General Purpose Flag  0808 (2056)\n+23C7DF CENTRAL HEADER #1693  02014B50 (33639248)\n+23C7E3 Created Zip Spec      14 (20) '2.0'\n+23C7E4 Created OS            00 (0) 'MS-DOS'\n+23C7E5 Extract Zip Spec      14 (20) '2.0'\n+23C7E6 Extract OS            00 (0) 'MS-DOS'\n+23C7E7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A6EB Compression Method    0008 (8) 'Deflated'\n-23A6ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A6F1 CRC                   29B723AE (699868078)\n-23A6F5 Compressed Size       0000026F (623)\n-23A6F9 Uncompressed Size     000004D6 (1238)\n-23A6FD Filename Length       002D (45)\n-23A6FF Extra Length          0000 (0)\n-23A701 Comment Length        0000 (0)\n-23A703 Disk Start            0000 (0)\n-23A705 Int File Attributes   0000 (0)\n+23C7E9 Compression Method    0008 (8) 'Deflated'\n+23C7EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C7EF CRC                   00000000 (0)\n+23C7F3 Compressed Size       00000002 (2)\n+23C7F7 Uncompressed Size     00000000 (0)\n+23C7FB Filename Length       001F (31)\n+23C7FD Extra Length          0000 (0)\n+23C7FF Comment Length        0000 (0)\n+23C801 Disk Start            0000 (0)\n+23C803 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A707 Ext File Attributes   00000000 (0)\n-23A70B Local Header Offset   001BA5B5 (1811893)\n-23A70F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C805 Ext File Attributes   00000000 (0)\n+23C809 Local Header Offset   001BD709 (1824521)\n+23C80D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A70F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C80D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A73C CENTRAL HEADER #1694  02014B50 (33639248)\n-23A740 Created Zip Spec      14 (20) '2.0'\n-23A741 Created OS            00 (0) 'MS-DOS'\n-23A742 Extract Zip Spec      14 (20) '2.0'\n-23A743 Extract OS            00 (0) 'MS-DOS'\n-23A744 General Purpose Flag  0808 (2056)\n+23C82C CENTRAL HEADER #1694  02014B50 (33639248)\n+23C830 Created Zip Spec      14 (20) '2.0'\n+23C831 Created OS            00 (0) 'MS-DOS'\n+23C832 Extract Zip Spec      14 (20) '2.0'\n+23C833 Extract OS            00 (0) 'MS-DOS'\n+23C834 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A746 Compression Method    0008 (8) 'Deflated'\n-23A748 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A74C CRC                   00000000 (0)\n-23A750 Compressed Size       00000002 (2)\n-23A754 Uncompressed Size     00000000 (0)\n-23A758 Filename Length       0016 (22)\n-23A75A Extra Length          0000 (0)\n-23A75C Comment Length        0000 (0)\n-23A75E Disk Start            0000 (0)\n-23A760 Int File Attributes   0000 (0)\n+23C836 Compression Method    0008 (8) 'Deflated'\n+23C838 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C83C CRC                   14A7D3CC (346543052)\n+23C840 Compressed Size       00000216 (534)\n+23C844 Uncompressed Size     000003BD (957)\n+23C848 Filename Length       002D (45)\n+23C84A Extra Length          0000 (0)\n+23C84C Comment Length        0000 (0)\n+23C84E Disk Start            0000 (0)\n+23C850 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A762 Ext File Attributes   00000000 (0)\n-23A766 Local Header Offset   001BA87F (1812607)\n-23A76A Filename              'XXXXXXXXXXXXXXXXXXXXXX'\n+23C852 Ext File Attributes   00000000 (0)\n+23C856 Local Header Offset   001BD758 (1824600)\n+23C85A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A76A: Filename 'XXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C85A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A780 CENTRAL HEADER #1695  02014B50 (33639248)\n-23A784 Created Zip Spec      14 (20) '2.0'\n-23A785 Created OS            00 (0) 'MS-DOS'\n-23A786 Extract Zip Spec      14 (20) '2.0'\n-23A787 Extract OS            00 (0) 'MS-DOS'\n-23A788 General Purpose Flag  0808 (2056)\n+23C887 CENTRAL HEADER #1695  02014B50 (33639248)\n+23C88B Created Zip Spec      14 (20) '2.0'\n+23C88C Created OS            00 (0) 'MS-DOS'\n+23C88D Extract Zip Spec      14 (20) '2.0'\n+23C88E Extract OS            00 (0) 'MS-DOS'\n+23C88F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A78A Compression Method    0008 (8) 'Deflated'\n-23A78C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A790 CRC                   00000000 (0)\n-23A794 Compressed Size       00000002 (2)\n-23A798 Uncompressed Size     00000000 (0)\n-23A79C Filename Length       001E (30)\n-23A79E Extra Length          0000 (0)\n-23A7A0 Comment Length        0000 (0)\n-23A7A2 Disk Start            0000 (0)\n-23A7A4 Int File Attributes   0000 (0)\n+23C891 Compression Method    0008 (8) 'Deflated'\n+23C893 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C897 CRC                   00000000 (0)\n+23C89B Compressed Size       00000002 (2)\n+23C89F Uncompressed Size     00000000 (0)\n+23C8A3 Filename Length       0022 (34)\n+23C8A5 Extra Length          0000 (0)\n+23C8A7 Comment Length        0000 (0)\n+23C8A9 Disk Start            0000 (0)\n+23C8AB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A7A6 Ext File Attributes   00000000 (0)\n-23A7AA Local Header Offset   001BA8C5 (1812677)\n-23A7AE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C8AD Ext File Attributes   00000000 (0)\n+23C8B1 Local Header Offset   001BD9C9 (1825225)\n+23C8B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A7AE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C8B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A7CC CENTRAL HEADER #1696  02014B50 (33639248)\n-23A7D0 Created Zip Spec      14 (20) '2.0'\n-23A7D1 Created OS            00 (0) 'MS-DOS'\n-23A7D2 Extract Zip Spec      14 (20) '2.0'\n-23A7D3 Extract OS            00 (0) 'MS-DOS'\n-23A7D4 General Purpose Flag  0808 (2056)\n+23C8D7 CENTRAL HEADER #1696  02014B50 (33639248)\n+23C8DB Created Zip Spec      14 (20) '2.0'\n+23C8DC Created OS            00 (0) 'MS-DOS'\n+23C8DD Extract Zip Spec      14 (20) '2.0'\n+23C8DE Extract OS            00 (0) 'MS-DOS'\n+23C8DF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A7D6 Compression Method    0008 (8) 'Deflated'\n-23A7D8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A7DC CRC                   496AA8AF (1231726767)\n-23A7E0 Compressed Size       0000027A (634)\n-23A7E4 Uncompressed Size     00000523 (1315)\n-23A7E8 Filename Length       002E (46)\n-23A7EA Extra Length          0000 (0)\n-23A7EC Comment Length        0000 (0)\n-23A7EE Disk Start            0000 (0)\n-23A7F0 Int File Attributes   0000 (0)\n+23C8E1 Compression Method    0008 (8) 'Deflated'\n+23C8E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C8E7 CRC                   1652AFBA (374517690)\n+23C8EB Compressed Size       0000027F (639)\n+23C8EF Uncompressed Size     00000538 (1336)\n+23C8F3 Filename Length       0034 (52)\n+23C8F5 Extra Length          0000 (0)\n+23C8F7 Comment Length        0000 (0)\n+23C8F9 Disk Start            0000 (0)\n+23C8FB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A7F2 Ext File Attributes   00000000 (0)\n-23A7F6 Local Header Offset   001BA913 (1812755)\n-23A7FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C8FD Ext File Attributes   00000000 (0)\n+23C901 Local Header Offset   001BDA1B (1825307)\n+23C905 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A7FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C905: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A828 CENTRAL HEADER #1697  02014B50 (33639248)\n-23A82C Created Zip Spec      14 (20) '2.0'\n-23A82D Created OS            00 (0) 'MS-DOS'\n-23A82E Extract Zip Spec      14 (20) '2.0'\n-23A82F Extract OS            00 (0) 'MS-DOS'\n-23A830 General Purpose Flag  0808 (2056)\n+23C939 CENTRAL HEADER #1697  02014B50 (33639248)\n+23C93D Created Zip Spec      14 (20) '2.0'\n+23C93E Created OS            00 (0) 'MS-DOS'\n+23C93F Extract Zip Spec      14 (20) '2.0'\n+23C940 Extract OS            00 (0) 'MS-DOS'\n+23C941 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A832 Compression Method    0008 (8) 'Deflated'\n-23A834 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A838 CRC                   52213B11 (1377909521)\n-23A83C Compressed Size       00000295 (661)\n-23A840 Uncompressed Size     000005A6 (1446)\n-23A844 Filename Length       0031 (49)\n-23A846 Extra Length          0000 (0)\n-23A848 Comment Length        0000 (0)\n-23A84A Disk Start            0000 (0)\n-23A84C Int File Attributes   0000 (0)\n+23C943 Compression Method    0008 (8) 'Deflated'\n+23C945 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C949 CRC                   00000000 (0)\n+23C94D Compressed Size       00000002 (2)\n+23C951 Uncompressed Size     00000000 (0)\n+23C955 Filename Length       0025 (37)\n+23C957 Extra Length          0000 (0)\n+23C959 Comment Length        0000 (0)\n+23C95B Disk Start            0000 (0)\n+23C95D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A84E Ext File Attributes   00000000 (0)\n-23A852 Local Header Offset   001BABE9 (1813481)\n-23A856 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C95F Ext File Attributes   00000000 (0)\n+23C963 Local Header Offset   001BDCFC (1826044)\n+23C967 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A856: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C967: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A887 CENTRAL HEADER #1698  02014B50 (33639248)\n-23A88B Created Zip Spec      14 (20) '2.0'\n-23A88C Created OS            00 (0) 'MS-DOS'\n-23A88D Extract Zip Spec      14 (20) '2.0'\n-23A88E Extract OS            00 (0) 'MS-DOS'\n-23A88F General Purpose Flag  0808 (2056)\n+23C98C CENTRAL HEADER #1698  02014B50 (33639248)\n+23C990 Created Zip Spec      14 (20) '2.0'\n+23C991 Created OS            00 (0) 'MS-DOS'\n+23C992 Extract Zip Spec      14 (20) '2.0'\n+23C993 Extract OS            00 (0) 'MS-DOS'\n+23C994 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A891 Compression Method    0008 (8) 'Deflated'\n-23A893 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A897 CRC                   00000000 (0)\n-23A89B Compressed Size       00000002 (2)\n-23A89F Uncompressed Size     00000000 (0)\n-23A8A3 Filename Length       001B (27)\n-23A8A5 Extra Length          0000 (0)\n-23A8A7 Comment Length        0000 (0)\n-23A8A9 Disk Start            0000 (0)\n-23A8AB Int File Attributes   0000 (0)\n+23C996 Compression Method    0008 (8) 'Deflated'\n+23C998 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23C99C CRC                   15451137 (356847927)\n+23C9A0 Compressed Size       00000220 (544)\n+23C9A4 Uncompressed Size     000003DF (991)\n+23C9A8 Filename Length       003E (62)\n+23C9AA Extra Length          0000 (0)\n+23C9AC Comment Length        0000 (0)\n+23C9AE Disk Start            0000 (0)\n+23C9B0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A8AD Ext File Attributes   00000000 (0)\n-23A8B1 Local Header Offset   001BAEDD (1814237)\n-23A8B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23C9B2 Ext File Attributes   00000000 (0)\n+23C9B6 Local Header Offset   001BDD51 (1826129)\n+23C9BA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A8B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23C9BA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A8D0 CENTRAL HEADER #1699  02014B50 (33639248)\n-23A8D4 Created Zip Spec      14 (20) '2.0'\n-23A8D5 Created OS            00 (0) 'MS-DOS'\n-23A8D6 Extract Zip Spec      14 (20) '2.0'\n-23A8D7 Extract OS            00 (0) 'MS-DOS'\n-23A8D8 General Purpose Flag  0808 (2056)\n+23C9F8 CENTRAL HEADER #1699  02014B50 (33639248)\n+23C9FC Created Zip Spec      14 (20) '2.0'\n+23C9FD Created OS            00 (0) 'MS-DOS'\n+23C9FE Extract Zip Spec      14 (20) '2.0'\n+23C9FF Extract OS            00 (0) 'MS-DOS'\n+23CA00 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A8DA Compression Method    0008 (8) 'Deflated'\n-23A8DC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A8E0 CRC                   BB714DA3 (3144764835)\n-23A8E4 Compressed Size       00000309 (777)\n-23A8E8 Uncompressed Size     00000804 (2052)\n-23A8EC Filename Length       002E (46)\n-23A8EE Extra Length          0000 (0)\n-23A8F0 Comment Length        0000 (0)\n-23A8F2 Disk Start            0000 (0)\n-23A8F4 Int File Attributes   0000 (0)\n+23CA02 Compression Method    0008 (8) 'Deflated'\n+23CA04 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23CA08 CRC                   5AF92E3B (1526279739)\n+23CA0C Compressed Size       0000029F (671)\n+23CA10 Uncompressed Size     000005DD (1501)\n+23CA14 Filename Length       0023 (35)\n+23CA16 Extra Length          0000 (0)\n+23CA18 Comment Length        0000 (0)\n+23CA1A Disk Start            0000 (0)\n+23CA1C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A8F6 Ext File Attributes   00000000 (0)\n-23A8FA Local Header Offset   001BAF28 (1814312)\n-23A8FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23CA1E Ext File Attributes   00000000 (0)\n+23CA22 Local Header Offset   001BDFDD (1826781)\n+23CA26 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A8FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CA26: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A92C CENTRAL HEADER #1700  02014B50 (33639248)\n-23A930 Created Zip Spec      14 (20) '2.0'\n-23A931 Created OS            00 (0) 'MS-DOS'\n-23A932 Extract Zip Spec      14 (20) '2.0'\n-23A933 Extract OS            00 (0) 'MS-DOS'\n-23A934 General Purpose Flag  0808 (2056)\n+23CA49 CENTRAL HEADER #1700  02014B50 (33639248)\n+23CA4D Created Zip Spec      14 (20) '2.0'\n+23CA4E Created OS            00 (0) 'MS-DOS'\n+23CA4F Extract Zip Spec      14 (20) '2.0'\n+23CA50 Extract OS            00 (0) 'MS-DOS'\n+23CA51 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A936 Compression Method    0008 (8) 'Deflated'\n-23A938 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A93C CRC                   D76B4438 (3614131256)\n-23A940 Compressed Size       00000339 (825)\n-23A944 Uncompressed Size     000009FC (2556)\n-23A948 Filename Length       0028 (40)\n-23A94A Extra Length          0000 (0)\n-23A94C Comment Length        0000 (0)\n-23A94E Disk Start            0000 (0)\n-23A950 Int File Attributes   0000 (0)\n+23CA53 Compression Method    0008 (8) 'Deflated'\n+23CA55 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23CA59 CRC                   4813D623 (1209259555)\n+23CA5D Compressed Size       000002B3 (691)\n+23CA61 Uncompressed Size     000005DD (1501)\n+23CA65 Filename Length       0021 (33)\n+23CA67 Extra Length          0000 (0)\n+23CA69 Comment Length        0000 (0)\n+23CA6B Disk Start            0000 (0)\n+23CA6D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A952 Ext File Attributes   00000000 (0)\n-23A956 Local Header Offset   001BB28D (1815181)\n-23A95A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23CA6F Ext File Attributes   00000000 (0)\n+23CA73 Local Header Offset   001BE2CD (1827533)\n+23CA77 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A95A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CA77: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A982 CENTRAL HEADER #1701  02014B50 (33639248)\n-23A986 Created Zip Spec      14 (20) '2.0'\n-23A987 Created OS            00 (0) 'MS-DOS'\n-23A988 Extract Zip Spec      14 (20) '2.0'\n-23A989 Extract OS            00 (0) 'MS-DOS'\n-23A98A General Purpose Flag  0808 (2056)\n+23CA98 CENTRAL HEADER #1701  02014B50 (33639248)\n+23CA9C Created Zip Spec      14 (20) '2.0'\n+23CA9D Created OS            00 (0) 'MS-DOS'\n+23CA9E Extract Zip Spec      14 (20) '2.0'\n+23CA9F Extract OS            00 (0) 'MS-DOS'\n+23CAA0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A98C Compression Method    0008 (8) 'Deflated'\n-23A98E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A992 CRC                   C61A4C11 (3323612177)\n-23A996 Compressed Size       00000270 (624)\n-23A99A Uncompressed Size     000004E1 (1249)\n-23A99E Filename Length       002F (47)\n-23A9A0 Extra Length          0000 (0)\n-23A9A2 Comment Length        0000 (0)\n-23A9A4 Disk Start            0000 (0)\n-23A9A6 Int File Attributes   0000 (0)\n+23CAA2 Compression Method    0008 (8) 'Deflated'\n+23CAA4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23CAA8 CRC                   57D1F11D (1473376541)\n+23CAAC Compressed Size       00000437 (1079)\n+23CAB0 Uncompressed Size     000012A9 (4777)\n+23CAB4 Filename Length       0025 (37)\n+23CAB6 Extra Length          0000 (0)\n+23CAB8 Comment Length        0000 (0)\n+23CABA Disk Start            0000 (0)\n+23CABC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23A9A8 Ext File Attributes   00000000 (0)\n-23A9AC Local Header Offset   001BB61C (1816092)\n-23A9B0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23CABE Ext File Attributes   00000000 (0)\n+23CAC2 Local Header Offset   001BE5CF (1828303)\n+23CAC6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23A9B0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CAC6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23A9DF CENTRAL HEADER #1702  02014B50 (33639248)\n-23A9E3 Created Zip Spec      14 (20) '2.0'\n-23A9E4 Created OS            00 (0) 'MS-DOS'\n-23A9E5 Extract Zip Spec      14 (20) '2.0'\n-23A9E6 Extract OS            00 (0) 'MS-DOS'\n-23A9E7 General Purpose Flag  0808 (2056)\n+23CAEB CENTRAL HEADER #1702  02014B50 (33639248)\n+23CAEF Created Zip Spec      14 (20) '2.0'\n+23CAF0 Created OS            00 (0) 'MS-DOS'\n+23CAF1 Extract Zip Spec      14 (20) '2.0'\n+23CAF2 Extract OS            00 (0) 'MS-DOS'\n+23CAF3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23A9E9 Compression Method    0008 (8) 'Deflated'\n-23A9EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23A9EF CRC                   00000000 (0)\n-23A9F3 Compressed Size       00000002 (2)\n-23A9F7 Uncompressed Size     00000000 (0)\n-23A9FB Filename Length       0023 (35)\n-23A9FD Extra Length          0000 (0)\n-23A9FF Comment Length        0000 (0)\n-23AA01 Disk Start            0000 (0)\n-23AA03 Int File Attributes   0000 (0)\n+23CAF5 Compression Method    0008 (8) 'Deflated'\n+23CAF7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23CAFB CRC                   3FF357FC (1072912380)\n+23CAFF Compressed Size       00000361 (865)\n+23CB03 Uncompressed Size     00000981 (2433)\n+23CB07 Filename Length       0022 (34)\n+23CB09 Extra Length          0000 (0)\n+23CB0B Comment Length        0000 (0)\n+23CB0D Disk Start            0000 (0)\n+23CB0F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23AA05 Ext File Attributes   00000000 (0)\n-23AA09 Local Header Offset   001BB8E9 (1816809)\n-23AA0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23CB11 Ext File Attributes   00000000 (0)\n+23CB15 Local Header Offset   001BEA59 (1829465)\n+23CB19 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23AA0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CB19: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23AA30 CENTRAL HEADER #1703  02014B50 (33639248)\n-23AA34 Created Zip Spec      14 (20) '2.0'\n-23AA35 Created OS            00 (0) 'MS-DOS'\n-23AA36 Extract Zip Spec      14 (20) '2.0'\n-23AA37 Extract OS            00 (0) 'MS-DOS'\n-23AA38 General Purpose Flag  0808 (2056)\n+23CB3B CENTRAL HEADER #1703  02014B50 (33639248)\n+23CB3F Created Zip Spec      14 (20) '2.0'\n+23CB40 Created OS            00 (0) 'MS-DOS'\n+23CB41 Extract Zip Spec      14 (20) '2.0'\n+23CB42 Extract OS            00 (0) 'MS-DOS'\n+23CB43 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23AA3A Compression Method    0008 (8) 'Deflated'\n-23AA3C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23AA40 CRC                   1991942D (428971053)\n-23AA44 Compressed Size       00000530 (1328)\n-23AA48 Uncompressed Size     0000184C (6220)\n-23AA4C Filename Length       0038 (56)\n-23AA4E Extra Length          0000 (0)\n-23AA50 Comment Length        0000 (0)\n-23AA52 Disk Start            0000 (0)\n-23AA54 Int File Attributes   0000 (0)\n+23CB45 Compression Method    0008 (8) 'Deflated'\n+23CB47 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23CB4B CRC                   A7B8FF5F (2813919071)\n+23CB4F Compressed Size       000002A0 (672)\n+23CB53 Uncompressed Size     0000060D (1549)\n+23CB57 Filename Length       002A (42)\n+23CB59 Extra Length          0000 (0)\n+23CB5B Comment Length        0000 (0)\n+23CB5D Disk Start            0000 (0)\n+23CB5F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23AA56 Ext File Attributes   00000000 (0)\n-23AA5A Local Header Offset   001BB93C (1816892)\n-23AA5E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23CB61 Ext File Attributes   00000000 (0)\n+23CB65 Local Header Offset   001BEE0A (1830410)\n+23CB69 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23AA5E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CB69: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23AA96 CENTRAL HEADER #1704  02014B50 (33639248)\n-23AA9A Created Zip Spec      14 (20) '2.0'\n-23AA9B Created OS            00 (0) 'MS-DOS'\n-23AA9C Extract Zip Spec      14 (20) '2.0'\n-23AA9D Extract OS            00 (0) 'MS-DOS'\n-23AA9E General Purpose Flag  0808 (2056)\n+23CB93 CENTRAL HEADER #1704  02014B50 (33639248)\n+23CB97 Created Zip Spec      14 (20) '2.0'\n+23CB98 Created OS            00 (0) 'MS-DOS'\n+23CB99 Extract Zip Spec      14 (20) '2.0'\n+23CB9A Extract OS            00 (0) 'MS-DOS'\n+23CB9B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23AAA0 Compression Method    0008 (8) 'Deflated'\n-23AAA2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23AAA6 CRC                   6C394AEE (1815694062)\n-23AAAA Compressed Size       00000289 (649)\n-23AAAE Uncompressed Size     00000530 (1328)\n-23AAB2 Filename Length       003F (63)\n-23AAB4 Extra Length          0000 (0)\n-23AAB6 Comment Length        0000 (0)\n-23AAB8 Disk Start            0000 (0)\n-23AABA Int File Attributes   0000 (0)\n+23CB9D Compression Method    0008 (8) 'Deflated'\n+23CB9F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23CBA3 CRC                   BE8E4754 (3196995412)\n+23CBA7 Compressed Size       000002F4 (756)\n+23CBAB Uncompressed Size     000006DD (1757)\n+23CBAF Filename Length       0023 (35)\n+23CBB1 Extra Length          0000 (0)\n+23CBB3 Comment Length        0000 (0)\n+23CBB5 Disk Start            0000 (0)\n+23CBB7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23AABC Ext File Attributes   00000000 (0)\n-23AAC0 Local Header Offset   001BBED2 (1818322)\n-23AAC4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23CBB9 Ext File Attributes   00000000 (0)\n+23CBBD Local Header Offset   001BF102 (1831170)\n+23CBC1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23AAC4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CBC1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23AB03 CENTRAL HEADER #1705  02014B50 (33639248)\n-23AB07 Created Zip Spec      14 (20) '2.0'\n-23AB08 Created OS            00 (0) 'MS-DOS'\n-23AB09 Extract Zip Spec      14 (20) '2.0'\n-23AB0A Extract OS            00 (0) 'MS-DOS'\n-23AB0B General Purpose Flag  0808 (2056)\n+23CBE4 CENTRAL HEADER #1705  02014B50 (33639248)\n+23CBE8 Created Zip Spec      14 (20) '2.0'\n+23CBE9 Created OS            00 (0) 'MS-DOS'\n+23CBEA Extract Zip Spec      14 (20) '2.0'\n+23CBEB Extract OS            00 (0) 'MS-DOS'\n+23CBEC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23AB0D Compression Method    0008 (8) 'Deflated'\n-23AB0F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23AB13 CRC                   03FD65CD (66938317)\n-23AB17 Compressed Size       00000545 (1349)\n-23AB1B Uncompressed Size     00001B8B (7051)\n-23AB1F Filename Length       0038 (56)\n-23AB21 Extra Length          0000 (0)\n-23AB23 Comment Length        0000 (0)\n-23AB25 Disk Start            0000 (0)\n-23AB27 Int File Attributes   0000 (0)\n+23CBEE Compression Method    0008 (8) 'Deflated'\n+23CBF0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23CBF4 CRC                   F08690D4 (4035350740)\n+23CBF8 Compressed Size       000002E8 (744)\n+23CBFC Uncompressed Size     000007FC (2044)\n+23CC00 Filename Length       0027 (39)\n+23CC02 Extra Length          0000 (0)\n+23CC04 Comment Length        0000 (0)\n+23CC06 Disk Start            0000 (0)\n+23CC08 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23AB29 Ext File Attributes   00000000 (0)\n-23AB2D Local Header Offset   001BC1C8 (1819080)\n-23AB31 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23CC0A Ext File Attributes   00000000 (0)\n+23CC0E Local Header Offset   001BF447 (1832007)\n+23CC12 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23AB31: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CC12: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23AB69 CENTRAL HEADER #1706  02014B50 (33639248)\n-23AB6D Created Zip Spec      14 (20) '2.0'\n-23AB6E Created OS            00 (0) 'MS-DOS'\n-23AB6F Extract Zip Spec      14 (20) '2.0'\n-23AB70 Extract OS            00 (0) 'MS-DOS'\n-23AB71 General Purpose Flag  0808 (2056)\n+23CC39 CENTRAL HEADER #1706  02014B50 (33639248)\n+23CC3D Created Zip Spec      14 (20) '2.0'\n+23CC3E Created OS            00 (0) 'MS-DOS'\n+23CC3F Extract Zip Spec      14 (20) '2.0'\n+23CC40 Extract OS            00 (0) 'MS-DOS'\n+23CC41 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23AB73 Compression Method    0008 (8) 'Deflated'\n-23AB75 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23AB79 CRC                   00000000 (0)\n-23AB7D Compressed Size       00000002 (2)\n-23AB81 Uncompressed Size     00000000 (0)\n-23AB85 Filename Length       001B (27)\n-23AB87 Extra Length          0000 (0)\n-23AB89 Comment Length        0000 (0)\n-23AB8B Disk Start            0000 (0)\n-23AB8D Int File Attributes   0000 (0)\n+23CC43 Compression Method    0008 (8) 'Deflated'\n+23CC45 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23CC49 CRC                   EE092214 (3993575956)\n+23CC4D Compressed Size       00000499 (1177)\n+23CC51 Uncompressed Size     0000136E (4974)\n+23CC55 Filename Length       0021 (33)\n+23CC57 Extra Length          0000 (0)\n+23CC59 Comment Length        0000 (0)\n+23CC5B Disk Start            0000 (0)\n+23CC5D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23AB8F Ext File Attributes   00000000 (0)\n-23AB93 Local Header Offset   001BC773 (1820531)\n-23AB97 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23CC5F Ext File Attributes   00000000 (0)\n+23CC63 Local Header Offset   001BF784 (1832836)\n+23CC67 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23AB97: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CC67: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23ABB2 CENTRAL HEADER #1707  02014B50 (33639248)\n-23ABB6 Created Zip Spec      14 (20) '2.0'\n-23ABB7 Created OS            00 (0) 'MS-DOS'\n-23ABB8 Extract Zip Spec      14 (20) '2.0'\n-23ABB9 Extract OS            00 (0) 'MS-DOS'\n-23ABBA General Purpose Flag  0808 (2056)\n+23CC88 CENTRAL HEADER #1707  02014B50 (33639248)\n+23CC8C Created Zip Spec      14 (20) '2.0'\n+23CC8D Created OS            00 (0) 'MS-DOS'\n+23CC8E Extract Zip Spec      14 (20) '2.0'\n+23CC8F Extract OS            00 (0) 'MS-DOS'\n+23CC90 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23ABBC Compression Method    0008 (8) 'Deflated'\n-23ABBE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23ABC2 CRC                   B05300B6 (2958229686)\n-23ABC6 Compressed Size       00000241 (577)\n-23ABCA Uncompressed Size     00000443 (1091)\n-23ABCE Filename Length       0027 (39)\n-23ABD0 Extra Length          0000 (0)\n-23ABD2 Comment Length        0000 (0)\n-23ABD4 Disk Start            0000 (0)\n-23ABD6 Int File Attributes   0000 (0)\n+23CC92 Compression Method    0008 (8) 'Deflated'\n+23CC94 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23CC98 CRC                   EBE35D6F (3957546351)\n+23CC9C Compressed Size       000009E4 (2532)\n+23CCA0 Uncompressed Size     00002D81 (11649)\n+23CCA4 Filename Length       0025 (37)\n+23CCA6 Extra Length          0000 (0)\n+23CCA8 Comment Length        0000 (0)\n+23CCAA Disk Start            0000 (0)\n+23CCAC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23ABD8 Ext File Attributes   00000000 (0)\n-23ABDC Local Header Offset   001BC7BE (1820606)\n-23ABE0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23CCAE Ext File Attributes   00000000 (0)\n+23CCB2 Local Header Offset   001BFC6C (1834092)\n+23CCB6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23ABE0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CCB6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23AC07 CENTRAL HEADER #1708  02014B50 (33639248)\n-23AC0B Created Zip Spec      14 (20) '2.0'\n-23AC0C Created OS            00 (0) 'MS-DOS'\n-23AC0D Extract Zip Spec      14 (20) '2.0'\n-23AC0E Extract OS            00 (0) 'MS-DOS'\n-23AC0F General Purpose Flag  0808 (2056)\n+23CCDB CENTRAL HEADER #1708  02014B50 (33639248)\n+23CCDF Created Zip Spec      14 (20) '2.0'\n+23CCE0 Created OS            00 (0) 'MS-DOS'\n+23CCE1 Extract Zip Spec      14 (20) '2.0'\n+23CCE2 Extract OS            00 (0) 'MS-DOS'\n+23CCE3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23AC11 Compression Method    0008 (8) 'Deflated'\n-23AC13 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23AC17 CRC                   4B53EA77 (1263790711)\n-23AC1B Compressed Size       000002B8 (696)\n-23AC1F Uncompressed Size     000008BC (2236)\n-23AC23 Filename Length       002E (46)\n-23AC25 Extra Length          0000 (0)\n-23AC27 Comment Length        0000 (0)\n-23AC29 Disk Start            0000 (0)\n-23AC2B Int File Attributes   0000 (0)\n+23CCE5 Compression Method    0008 (8) 'Deflated'\n+23CCE7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23CCEB CRC                   FF29698F (4280904079)\n+23CCEF Compressed Size       00000272 (626)\n+23CCF3 Uncompressed Size     00000659 (1625)\n+23CCF7 Filename Length       0027 (39)\n+23CCF9 Extra Length          0000 (0)\n+23CCFB Comment Length        0000 (0)\n+23CCFD Disk Start            0000 (0)\n+23CCFF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23AC2D Ext File Attributes   00000000 (0)\n-23AC31 Local Header Offset   001BCA54 (1821268)\n-23AC35 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23CD01 Ext File Attributes   00000000 (0)\n+23CD05 Local Header Offset   001C06A3 (1836707)\n+23CD09 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23AC35: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CD09: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23AC63 CENTRAL HEADER #1709  02014B50 (33639248)\n-23AC67 Created Zip Spec      14 (20) '2.0'\n-23AC68 Created OS            00 (0) 'MS-DOS'\n-23AC69 Extract Zip Spec      14 (20) '2.0'\n-23AC6A Extract OS            00 (0) 'MS-DOS'\n-23AC6B General Purpose Flag  0808 (2056)\n+23CD30 CENTRAL HEADER #1709  02014B50 (33639248)\n+23CD34 Created Zip Spec      14 (20) '2.0'\n+23CD35 Created OS            00 (0) 'MS-DOS'\n+23CD36 Extract Zip Spec      14 (20) '2.0'\n+23CD37 Extract OS            00 (0) 'MS-DOS'\n+23CD38 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23AC6D Compression Method    0008 (8) 'Deflated'\n-23AC6F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23AC73 CRC                   F7117BC1 (4145118145)\n-23AC77 Compressed Size       00000212 (530)\n-23AC7B Uncompressed Size     000003AD (941)\n-23AC7F Filename Length       0025 (37)\n-23AC81 Extra Length          0000 (0)\n-23AC83 Comment Length        0000 (0)\n-23AC85 Disk Start            0000 (0)\n-23AC87 Int File Attributes   0000 (0)\n+23CD3A Compression Method    0008 (8) 'Deflated'\n+23CD3C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23CD40 CRC                   B185BD67 (2978332007)\n+23CD44 Compressed Size       00000656 (1622)\n+23CD48 Uncompressed Size     00001D1D (7453)\n+23CD4C Filename Length       0028 (40)\n+23CD4E Extra Length          0000 (0)\n+23CD50 Comment Length        0000 (0)\n+23CD52 Disk Start            0000 (0)\n+23CD54 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23AC89 Ext File Attributes   00000000 (0)\n-23AC8D Local Header Offset   001BCD68 (1822056)\n-23AC91 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23CD56 Ext File Attributes   00000000 (0)\n+23CD5A Local Header Offset   001C096A (1837418)\n+23CD5E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23AC91: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CD5E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23ACB6 CENTRAL HEADER #1710  02014B50 (33639248)\n-23ACBA Created Zip Spec      14 (20) '2.0'\n-23ACBB Created OS            00 (0) 'MS-DOS'\n-23ACBC Extract Zip Spec      14 (20) '2.0'\n-23ACBD Extract OS            00 (0) 'MS-DOS'\n-23ACBE General Purpose Flag  0808 (2056)\n+23CD86 CENTRAL HEADER #1710  02014B50 (33639248)\n+23CD8A Created Zip Spec      14 (20) '2.0'\n+23CD8B Created OS            00 (0) 'MS-DOS'\n+23CD8C Extract Zip Spec      14 (20) '2.0'\n+23CD8D Extract OS            00 (0) 'MS-DOS'\n+23CD8E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23ACC0 Compression Method    0008 (8) 'Deflated'\n-23ACC2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23ACC6 CRC                   AB71C50D (2876359949)\n-23ACCA Compressed Size       00000213 (531)\n-23ACCE Uncompressed Size     000003AF (943)\n-23ACD2 Filename Length       0026 (38)\n-23ACD4 Extra Length          0000 (0)\n-23ACD6 Comment Length        0000 (0)\n-23ACD8 Disk Start            0000 (0)\n-23ACDA Int File Attributes   0000 (0)\n+23CD90 Compression Method    0008 (8) 'Deflated'\n+23CD92 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23CD96 CRC                   00000000 (0)\n+23CD9A Compressed Size       00000002 (2)\n+23CD9E Uncompressed Size     00000000 (0)\n+23CDA2 Filename Length       001E (30)\n+23CDA4 Extra Length          0000 (0)\n+23CDA6 Comment Length        0000 (0)\n+23CDA8 Disk Start            0000 (0)\n+23CDAA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23ACDC Ext File Attributes   00000000 (0)\n-23ACE0 Local Header Offset   001BCFCD (1822669)\n-23ACE4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23CDAC Ext File Attributes   00000000 (0)\n+23CDB0 Local Header Offset   001C1016 (1839126)\n+23CDB4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23ACE4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CDB4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23AD0A CENTRAL HEADER #1711  02014B50 (33639248)\n-23AD0E Created Zip Spec      14 (20) '2.0'\n-23AD0F Created OS            00 (0) 'MS-DOS'\n-23AD10 Extract Zip Spec      14 (20) '2.0'\n-23AD11 Extract OS            00 (0) 'MS-DOS'\n-23AD12 General Purpose Flag  0808 (2056)\n+23CDD2 CENTRAL HEADER #1711  02014B50 (33639248)\n+23CDD6 Created Zip Spec      14 (20) '2.0'\n+23CDD7 Created OS            00 (0) 'MS-DOS'\n+23CDD8 Extract Zip Spec      14 (20) '2.0'\n+23CDD9 Extract OS            00 (0) 'MS-DOS'\n+23CDDA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23AD14 Compression Method    0008 (8) 'Deflated'\n-23AD16 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23AD1A CRC                   738B9E3F (1938529855)\n-23AD1E Compressed Size       0000027A (634)\n-23AD22 Uncompressed Size     0000054E (1358)\n-23AD26 Filename Length       002A (42)\n-23AD28 Extra Length          0000 (0)\n-23AD2A Comment Length        0000 (0)\n-23AD2C Disk Start            0000 (0)\n-23AD2E Int File Attributes   0000 (0)\n+23CDDC Compression Method    0008 (8) 'Deflated'\n+23CDDE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23CDE2 CRC                   54F4EBB3 (1425337267)\n+23CDE6 Compressed Size       00000288 (648)\n+23CDEA Uncompressed Size     00000554 (1364)\n+23CDEE Filename Length       002A (42)\n+23CDF0 Extra Length          0000 (0)\n+23CDF2 Comment Length        0000 (0)\n+23CDF4 Disk Start            0000 (0)\n+23CDF6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23AD30 Ext File Attributes   00000000 (0)\n-23AD34 Local Header Offset   001BD234 (1823284)\n-23AD38 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23CDF8 Ext File Attributes   00000000 (0)\n+23CDFC Local Header Offset   001C1064 (1839204)\n+23CE00 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23AD38: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CE00: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23AD62 CENTRAL HEADER #1712  02014B50 (33639248)\n-23AD66 Created Zip Spec      14 (20) '2.0'\n-23AD67 Created OS            00 (0) 'MS-DOS'\n-23AD68 Extract Zip Spec      14 (20) '2.0'\n-23AD69 Extract OS            00 (0) 'MS-DOS'\n-23AD6A General Purpose Flag  0808 (2056)\n+23CE2A CENTRAL HEADER #1712  02014B50 (33639248)\n+23CE2E Created Zip Spec      14 (20) '2.0'\n+23CE2F Created OS            00 (0) 'MS-DOS'\n+23CE30 Extract Zip Spec      14 (20) '2.0'\n+23CE31 Extract OS            00 (0) 'MS-DOS'\n+23CE32 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23AD6C Compression Method    0008 (8) 'Deflated'\n-23AD6E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23AD72 CRC                   DF216F41 (3743510337)\n-23AD76 Compressed Size       000002BD (701)\n-23AD7A Uncompressed Size     000007B3 (1971)\n-23AD7E Filename Length       0031 (49)\n-23AD80 Extra Length          0000 (0)\n-23AD82 Comment Length        0000 (0)\n-23AD84 Disk Start            0000 (0)\n-23AD86 Int File Attributes   0000 (0)\n+23CE34 Compression Method    0008 (8) 'Deflated'\n+23CE36 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23CE3A CRC                   22C3EE20 (583265824)\n+23CE3E Compressed Size       00000221 (545)\n+23CE42 Uncompressed Size     000003CD (973)\n+23CE46 Filename Length       0036 (54)\n+23CE48 Extra Length          0000 (0)\n+23CE4A Comment Length        0000 (0)\n+23CE4C Disk Start            0000 (0)\n+23CE4E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23AD88 Ext File Attributes   00000000 (0)\n-23AD8C Local Header Offset   001BD506 (1824006)\n-23AD90 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23CE50 Ext File Attributes   00000000 (0)\n+23CE54 Local Header Offset   001C1344 (1839940)\n+23CE58 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23AD90: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CE58: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23ADC1 CENTRAL HEADER #1713  02014B50 (33639248)\n-23ADC5 Created Zip Spec      14 (20) '2.0'\n-23ADC6 Created OS            00 (0) 'MS-DOS'\n-23ADC7 Extract Zip Spec      14 (20) '2.0'\n-23ADC8 Extract OS            00 (0) 'MS-DOS'\n-23ADC9 General Purpose Flag  0808 (2056)\n+23CE8E CENTRAL HEADER #1713  02014B50 (33639248)\n+23CE92 Created Zip Spec      14 (20) '2.0'\n+23CE93 Created OS            00 (0) 'MS-DOS'\n+23CE94 Extract Zip Spec      14 (20) '2.0'\n+23CE95 Extract OS            00 (0) 'MS-DOS'\n+23CE96 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23ADCB Compression Method    0008 (8) 'Deflated'\n-23ADCD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23ADD1 CRC                   7ECEF1EF (2127491567)\n-23ADD5 Compressed Size       00000216 (534)\n-23ADD9 Uncompressed Size     000003B8 (952)\n-23ADDD Filename Length       0026 (38)\n-23ADDF Extra Length          0000 (0)\n-23ADE1 Comment Length        0000 (0)\n-23ADE3 Disk Start            0000 (0)\n-23ADE5 Int File Attributes   0000 (0)\n+23CE98 Compression Method    0008 (8) 'Deflated'\n+23CE9A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23CE9E CRC                   0569C6BD (90818237)\n+23CEA2 Compressed Size       000002FE (766)\n+23CEA6 Uncompressed Size     000006AE (1710)\n+23CEAA Filename Length       002C (44)\n+23CEAC Extra Length          0000 (0)\n+23CEAE Comment Length        0000 (0)\n+23CEB0 Disk Start            0000 (0)\n+23CEB2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23ADE7 Ext File Attributes   00000000 (0)\n-23ADEB Local Header Offset   001BD822 (1824802)\n-23ADEF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23CEB4 Ext File Attributes   00000000 (0)\n+23CEB8 Local Header Offset   001C15C9 (1840585)\n+23CEBC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23ADEF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CEBC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23AE15 CENTRAL HEADER #1714  02014B50 (33639248)\n-23AE19 Created Zip Spec      14 (20) '2.0'\n-23AE1A Created OS            00 (0) 'MS-DOS'\n-23AE1B Extract Zip Spec      14 (20) '2.0'\n-23AE1C Extract OS            00 (0) 'MS-DOS'\n-23AE1D General Purpose Flag  0808 (2056)\n+23CEE8 CENTRAL HEADER #1714  02014B50 (33639248)\n+23CEEC Created Zip Spec      14 (20) '2.0'\n+23CEED Created OS            00 (0) 'MS-DOS'\n+23CEEE Extract Zip Spec      14 (20) '2.0'\n+23CEEF Extract OS            00 (0) 'MS-DOS'\n+23CEF0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23AE1F Compression Method    0008 (8) 'Deflated'\n-23AE21 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23AE25 CRC                   43AA3D45 (1135230277)\n-23AE29 Compressed Size       00000375 (885)\n-23AE2D Uncompressed Size     00000CA7 (3239)\n-23AE31 Filename Length       002B (43)\n-23AE33 Extra Length          0000 (0)\n-23AE35 Comment Length        0000 (0)\n-23AE37 Disk Start            0000 (0)\n-23AE39 Int File Attributes   0000 (0)\n+23CEF2 Compression Method    0008 (8) 'Deflated'\n+23CEF4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23CEF8 CRC                   E0114FF9 (3759230969)\n+23CEFC Compressed Size       0000031A (794)\n+23CF00 Uncompressed Size     000007CF (1999)\n+23CF04 Filename Length       002E (46)\n+23CF06 Extra Length          0000 (0)\n+23CF08 Comment Length        0000 (0)\n+23CF0A Disk Start            0000 (0)\n+23CF0C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23AE3B Ext File Attributes   00000000 (0)\n-23AE3F Local Header Offset   001BDA8C (1825420)\n-23AE43 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23CF0E Ext File Attributes   00000000 (0)\n+23CF12 Local Header Offset   001C1921 (1841441)\n+23CF16 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23AE43: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CF16: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23AE6E CENTRAL HEADER #1715  02014B50 (33639248)\n-23AE72 Created Zip Spec      14 (20) '2.0'\n-23AE73 Created OS            00 (0) 'MS-DOS'\n-23AE74 Extract Zip Spec      14 (20) '2.0'\n-23AE75 Extract OS            00 (0) 'MS-DOS'\n-23AE76 General Purpose Flag  0808 (2056)\n+23CF44 CENTRAL HEADER #1715  02014B50 (33639248)\n+23CF48 Created Zip Spec      14 (20) '2.0'\n+23CF49 Created OS            00 (0) 'MS-DOS'\n+23CF4A Extract Zip Spec      14 (20) '2.0'\n+23CF4B Extract OS            00 (0) 'MS-DOS'\n+23CF4C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23AE78 Compression Method    0008 (8) 'Deflated'\n-23AE7A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23AE7E CRC                   00000000 (0)\n-23AE82 Compressed Size       00000002 (2)\n-23AE86 Uncompressed Size     00000000 (0)\n-23AE8A Filename Length       0024 (36)\n-23AE8C Extra Length          0000 (0)\n-23AE8E Comment Length        0000 (0)\n-23AE90 Disk Start            0000 (0)\n-23AE92 Int File Attributes   0000 (0)\n+23CF4E Compression Method    0008 (8) 'Deflated'\n+23CF50 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23CF54 CRC                   C476DBA7 (3296123815)\n+23CF58 Compressed Size       00000215 (533)\n+23CF5C Uncompressed Size     000003B5 (949)\n+23CF60 Filename Length       0029 (41)\n+23CF62 Extra Length          0000 (0)\n+23CF64 Comment Length        0000 (0)\n+23CF66 Disk Start            0000 (0)\n+23CF68 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23AE94 Ext File Attributes   00000000 (0)\n-23AE98 Local Header Offset   001BDE5A (1826394)\n-23AE9C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23CF6A Ext File Attributes   00000000 (0)\n+23CF6E Local Header Offset   001C1C97 (1842327)\n+23CF72 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23AE9C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CF72: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23AEC0 CENTRAL HEADER #1716  02014B50 (33639248)\n-23AEC4 Created Zip Spec      14 (20) '2.0'\n-23AEC5 Created OS            00 (0) 'MS-DOS'\n-23AEC6 Extract Zip Spec      14 (20) '2.0'\n-23AEC7 Extract OS            00 (0) 'MS-DOS'\n-23AEC8 General Purpose Flag  0808 (2056)\n+23CF9B CENTRAL HEADER #1716  02014B50 (33639248)\n+23CF9F Created Zip Spec      14 (20) '2.0'\n+23CFA0 Created OS            00 (0) 'MS-DOS'\n+23CFA1 Extract Zip Spec      14 (20) '2.0'\n+23CFA2 Extract OS            00 (0) 'MS-DOS'\n+23CFA3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23AECA Compression Method    0008 (8) 'Deflated'\n-23AECC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23AED0 CRC                   4B6F1882 (1265571970)\n-23AED4 Compressed Size       00000218 (536)\n-23AED8 Uncompressed Size     000003C7 (967)\n-23AEDC Filename Length       0032 (50)\n-23AEDE Extra Length          0000 (0)\n-23AEE0 Comment Length        0000 (0)\n-23AEE2 Disk Start            0000 (0)\n-23AEE4 Int File Attributes   0000 (0)\n+23CFA5 Compression Method    0008 (8) 'Deflated'\n+23CFA7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23CFAB CRC                   A69542CD (2794799821)\n+23CFAF Compressed Size       000003CC (972)\n+23CFB3 Uncompressed Size     00000A92 (2706)\n+23CFB7 Filename Length       0029 (41)\n+23CFB9 Extra Length          0000 (0)\n+23CFBB Comment Length        0000 (0)\n+23CFBD Disk Start            0000 (0)\n+23CFBF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23AEE6 Ext File Attributes   00000000 (0)\n-23AEEA Local Header Offset   001BDEAE (1826478)\n-23AEEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23CFC1 Ext File Attributes   00000000 (0)\n+23CFC5 Local Header Offset   001C1F03 (1842947)\n+23CFC9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23AEEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CFC9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23AF20 CENTRAL HEADER #1717  02014B50 (33639248)\n-23AF24 Created Zip Spec      14 (20) '2.0'\n-23AF25 Created OS            00 (0) 'MS-DOS'\n-23AF26 Extract Zip Spec      14 (20) '2.0'\n-23AF27 Extract OS            00 (0) 'MS-DOS'\n-23AF28 General Purpose Flag  0808 (2056)\n+23CFF2 CENTRAL HEADER #1717  02014B50 (33639248)\n+23CFF6 Created Zip Spec      14 (20) '2.0'\n+23CFF7 Created OS            00 (0) 'MS-DOS'\n+23CFF8 Extract Zip Spec      14 (20) '2.0'\n+23CFF9 Extract OS            00 (0) 'MS-DOS'\n+23CFFA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23AF2A Compression Method    0008 (8) 'Deflated'\n-23AF2C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23AF30 CRC                   CE84EC2F (3464817711)\n-23AF34 Compressed Size       00000263 (611)\n-23AF38 Uncompressed Size     00000464 (1124)\n-23AF3C Filename Length       0039 (57)\n-23AF3E Extra Length          0000 (0)\n-23AF40 Comment Length        0000 (0)\n-23AF42 Disk Start            0000 (0)\n-23AF44 Int File Attributes   0000 (0)\n+23CFFC Compression Method    0008 (8) 'Deflated'\n+23CFFE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D002 CRC                   A83F3E21 (2822716961)\n+23D006 Compressed Size       00000271 (625)\n+23D00A Uncompressed Size     000004DA (1242)\n+23D00E Filename Length       0030 (48)\n+23D010 Extra Length          0000 (0)\n+23D012 Comment Length        0000 (0)\n+23D014 Disk Start            0000 (0)\n+23D016 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23AF46 Ext File Attributes   00000000 (0)\n-23AF4A Local Header Offset   001BE126 (1827110)\n-23AF4E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D018 Ext File Attributes   00000000 (0)\n+23D01C Local Header Offset   001C2326 (1844006)\n+23D020 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23AF4E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D020: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23AF87 CENTRAL HEADER #1718  02014B50 (33639248)\n-23AF8B Created Zip Spec      14 (20) '2.0'\n-23AF8C Created OS            00 (0) 'MS-DOS'\n-23AF8D Extract Zip Spec      14 (20) '2.0'\n-23AF8E Extract OS            00 (0) 'MS-DOS'\n-23AF8F General Purpose Flag  0808 (2056)\n+23D050 CENTRAL HEADER #1718  02014B50 (33639248)\n+23D054 Created Zip Spec      14 (20) '2.0'\n+23D055 Created OS            00 (0) 'MS-DOS'\n+23D056 Extract Zip Spec      14 (20) '2.0'\n+23D057 Extract OS            00 (0) 'MS-DOS'\n+23D058 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23AF91 Compression Method    0008 (8) 'Deflated'\n-23AF93 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23AF97 CRC                   EFE6AFC6 (4024872902)\n-23AF9B Compressed Size       000002BF (703)\n-23AF9F Uncompressed Size     000005D1 (1489)\n-23AFA3 Filename Length       0037 (55)\n-23AFA5 Extra Length          0000 (0)\n-23AFA7 Comment Length        0000 (0)\n-23AFA9 Disk Start            0000 (0)\n-23AFAB Int File Attributes   0000 (0)\n+23D05A Compression Method    0008 (8) 'Deflated'\n+23D05C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D060 CRC                   75803CF4 (1971338484)\n+23D064 Compressed Size       000002CE (718)\n+23D068 Uncompressed Size     0000059F (1439)\n+23D06C Filename Length       0030 (48)\n+23D06E Extra Length          0000 (0)\n+23D070 Comment Length        0000 (0)\n+23D072 Disk Start            0000 (0)\n+23D074 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23AFAD Ext File Attributes   00000000 (0)\n-23AFB1 Local Header Offset   001BE3F0 (1827824)\n-23AFB5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D076 Ext File Attributes   00000000 (0)\n+23D07A Local Header Offset   001C25F5 (1844725)\n+23D07E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23AFB5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D07E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23AFEC CENTRAL HEADER #1719  02014B50 (33639248)\n-23AFF0 Created Zip Spec      14 (20) '2.0'\n-23AFF1 Created OS            00 (0) 'MS-DOS'\n-23AFF2 Extract Zip Spec      14 (20) '2.0'\n-23AFF3 Extract OS            00 (0) 'MS-DOS'\n-23AFF4 General Purpose Flag  0808 (2056)\n+23D0AE CENTRAL HEADER #1719  02014B50 (33639248)\n+23D0B2 Created Zip Spec      14 (20) '2.0'\n+23D0B3 Created OS            00 (0) 'MS-DOS'\n+23D0B4 Extract Zip Spec      14 (20) '2.0'\n+23D0B5 Extract OS            00 (0) 'MS-DOS'\n+23D0B6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23AFF6 Compression Method    0008 (8) 'Deflated'\n-23AFF8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23AFFC CRC                   00000000 (0)\n-23B000 Compressed Size       00000002 (2)\n-23B004 Uncompressed Size     00000000 (0)\n-23B008 Filename Length       0020 (32)\n-23B00A Extra Length          0000 (0)\n-23B00C Comment Length        0000 (0)\n-23B00E Disk Start            0000 (0)\n-23B010 Int File Attributes   0000 (0)\n+23D0B8 Compression Method    0008 (8) 'Deflated'\n+23D0BA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D0BE CRC                   00000000 (0)\n+23D0C2 Compressed Size       00000002 (2)\n+23D0C6 Uncompressed Size     00000000 (0)\n+23D0CA Filename Length       002A (42)\n+23D0CC Extra Length          0000 (0)\n+23D0CE Comment Length        0000 (0)\n+23D0D0 Disk Start            0000 (0)\n+23D0D2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B012 Ext File Attributes   00000000 (0)\n-23B016 Local Header Offset   001BE714 (1828628)\n-23B01A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D0D4 Ext File Attributes   00000000 (0)\n+23D0D8 Local Header Offset   001C2921 (1845537)\n+23D0DC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B01A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D0DC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B03A CENTRAL HEADER #1720  02014B50 (33639248)\n-23B03E Created Zip Spec      14 (20) '2.0'\n-23B03F Created OS            00 (0) 'MS-DOS'\n-23B040 Extract Zip Spec      14 (20) '2.0'\n-23B041 Extract OS            00 (0) 'MS-DOS'\n-23B042 General Purpose Flag  0808 (2056)\n+23D106 CENTRAL HEADER #1720  02014B50 (33639248)\n+23D10A Created Zip Spec      14 (20) '2.0'\n+23D10B Created OS            00 (0) 'MS-DOS'\n+23D10C Extract Zip Spec      14 (20) '2.0'\n+23D10D Extract OS            00 (0) 'MS-DOS'\n+23D10E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B044 Compression Method    0008 (8) 'Deflated'\n-23B046 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B04A CRC                   2510FA3B (621869627)\n-23B04E Compressed Size       00000218 (536)\n-23B052 Uncompressed Size     000003C1 (961)\n-23B056 Filename Length       002F (47)\n-23B058 Extra Length          0000 (0)\n-23B05A Comment Length        0000 (0)\n-23B05C Disk Start            0000 (0)\n-23B05E Int File Attributes   0000 (0)\n+23D110 Compression Method    0008 (8) 'Deflated'\n+23D112 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D116 CRC                   823F4C5B (2185186395)\n+23D11A Compressed Size       00000225 (549)\n+23D11E Uncompressed Size     000003EC (1004)\n+23D122 Filename Length       0042 (66)\n+23D124 Extra Length          0000 (0)\n+23D126 Comment Length        0000 (0)\n+23D128 Disk Start            0000 (0)\n+23D12A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B060 Ext File Attributes   00000000 (0)\n-23B064 Local Header Offset   001BE764 (1828708)\n-23B068 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D12C Ext File Attributes   00000000 (0)\n+23D130 Local Header Offset   001C297B (1845627)\n+23D134 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B068: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D134: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B097 CENTRAL HEADER #1721  02014B50 (33639248)\n-23B09B Created Zip Spec      14 (20) '2.0'\n-23B09C Created OS            00 (0) 'MS-DOS'\n-23B09D Extract Zip Spec      14 (20) '2.0'\n-23B09E Extract OS            00 (0) 'MS-DOS'\n-23B09F General Purpose Flag  0808 (2056)\n+23D176 CENTRAL HEADER #1721  02014B50 (33639248)\n+23D17A Created Zip Spec      14 (20) '2.0'\n+23D17B Created OS            00 (0) 'MS-DOS'\n+23D17C Extract Zip Spec      14 (20) '2.0'\n+23D17D Extract OS            00 (0) 'MS-DOS'\n+23D17E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B0A1 Compression Method    0008 (8) 'Deflated'\n-23B0A3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B0A7 CRC                   00000000 (0)\n-23B0AB Compressed Size       00000002 (2)\n-23B0AF Uncompressed Size     00000000 (0)\n-23B0B3 Filename Length       001F (31)\n-23B0B5 Extra Length          0000 (0)\n-23B0B7 Comment Length        0000 (0)\n-23B0B9 Disk Start            0000 (0)\n-23B0BB Int File Attributes   0000 (0)\n+23D180 Compression Method    0008 (8) 'Deflated'\n+23D182 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D186 CRC                   00000000 (0)\n+23D18A Compressed Size       00000002 (2)\n+23D18E Uncompressed Size     00000000 (0)\n+23D192 Filename Length       0025 (37)\n+23D194 Extra Length          0000 (0)\n+23D196 Comment Length        0000 (0)\n+23D198 Disk Start            0000 (0)\n+23D19A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B0BD Ext File Attributes   00000000 (0)\n-23B0C1 Local Header Offset   001BE9D9 (1829337)\n-23B0C5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D19C Ext File Attributes   00000000 (0)\n+23D1A0 Local Header Offset   001C2C10 (1846288)\n+23D1A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B0C5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D1A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B0E4 CENTRAL HEADER #1722  02014B50 (33639248)\n-23B0E8 Created Zip Spec      14 (20) '2.0'\n-23B0E9 Created OS            00 (0) 'MS-DOS'\n-23B0EA Extract Zip Spec      14 (20) '2.0'\n-23B0EB Extract OS            00 (0) 'MS-DOS'\n-23B0EC General Purpose Flag  0808 (2056)\n+23D1C9 CENTRAL HEADER #1722  02014B50 (33639248)\n+23D1CD Created Zip Spec      14 (20) '2.0'\n+23D1CE Created OS            00 (0) 'MS-DOS'\n+23D1CF Extract Zip Spec      14 (20) '2.0'\n+23D1D0 Extract OS            00 (0) 'MS-DOS'\n+23D1D1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B0EE Compression Method    0008 (8) 'Deflated'\n-23B0F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B0F4 CRC                   14A7D3CC (346543052)\n-23B0F8 Compressed Size       00000216 (534)\n-23B0FC Uncompressed Size     000003BD (957)\n-23B100 Filename Length       002D (45)\n-23B102 Extra Length          0000 (0)\n-23B104 Comment Length        0000 (0)\n-23B106 Disk Start            0000 (0)\n-23B108 Int File Attributes   0000 (0)\n+23D1D3 Compression Method    0008 (8) 'Deflated'\n+23D1D5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D1D9 CRC                   6C151306 (1813320454)\n+23D1DD Compressed Size       0000057D (1405)\n+23D1E1 Uncompressed Size     00001493 (5267)\n+23D1E5 Filename Length       0037 (55)\n+23D1E7 Extra Length          0000 (0)\n+23D1E9 Comment Length        0000 (0)\n+23D1EB Disk Start            0000 (0)\n+23D1ED Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B10A Ext File Attributes   00000000 (0)\n-23B10E Local Header Offset   001BEA28 (1829416)\n-23B112 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D1EF Ext File Attributes   00000000 (0)\n+23D1F3 Local Header Offset   001C2C65 (1846373)\n+23D1F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B112: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D1F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B13F CENTRAL HEADER #1723  02014B50 (33639248)\n-23B143 Created Zip Spec      14 (20) '2.0'\n-23B144 Created OS            00 (0) 'MS-DOS'\n-23B145 Extract Zip Spec      14 (20) '2.0'\n-23B146 Extract OS            00 (0) 'MS-DOS'\n-23B147 General Purpose Flag  0808 (2056)\n+23D22E CENTRAL HEADER #1723  02014B50 (33639248)\n+23D232 Created Zip Spec      14 (20) '2.0'\n+23D233 Created OS            00 (0) 'MS-DOS'\n+23D234 Extract Zip Spec      14 (20) '2.0'\n+23D235 Extract OS            00 (0) 'MS-DOS'\n+23D236 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B149 Compression Method    0008 (8) 'Deflated'\n-23B14B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B14F CRC                   00000000 (0)\n-23B153 Compressed Size       00000002 (2)\n-23B157 Uncompressed Size     00000000 (0)\n-23B15B Filename Length       0022 (34)\n-23B15D Extra Length          0000 (0)\n-23B15F Comment Length        0000 (0)\n-23B161 Disk Start            0000 (0)\n-23B163 Int File Attributes   0000 (0)\n+23D238 Compression Method    0008 (8) 'Deflated'\n+23D23A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D23E CRC                   00000000 (0)\n+23D242 Compressed Size       00000002 (2)\n+23D246 Uncompressed Size     00000000 (0)\n+23D24A Filename Length       0024 (36)\n+23D24C Extra Length          0000 (0)\n+23D24E Comment Length        0000 (0)\n+23D250 Disk Start            0000 (0)\n+23D252 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B165 Ext File Attributes   00000000 (0)\n-23B169 Local Header Offset   001BEC99 (1830041)\n-23B16D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D254 Ext File Attributes   00000000 (0)\n+23D258 Local Header Offset   001C3247 (1847879)\n+23D25C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B16D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D25C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B18F CENTRAL HEADER #1724  02014B50 (33639248)\n-23B193 Created Zip Spec      14 (20) '2.0'\n-23B194 Created OS            00 (0) 'MS-DOS'\n-23B195 Extract Zip Spec      14 (20) '2.0'\n-23B196 Extract OS            00 (0) 'MS-DOS'\n-23B197 General Purpose Flag  0808 (2056)\n+23D280 CENTRAL HEADER #1724  02014B50 (33639248)\n+23D284 Created Zip Spec      14 (20) '2.0'\n+23D285 Created OS            00 (0) 'MS-DOS'\n+23D286 Extract Zip Spec      14 (20) '2.0'\n+23D287 Extract OS            00 (0) 'MS-DOS'\n+23D288 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B199 Compression Method    0008 (8) 'Deflated'\n-23B19B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B19F CRC                   1652AFBA (374517690)\n-23B1A3 Compressed Size       0000027F (639)\n-23B1A7 Uncompressed Size     00000538 (1336)\n-23B1AB Filename Length       0034 (52)\n-23B1AD Extra Length          0000 (0)\n-23B1AF Comment Length        0000 (0)\n-23B1B1 Disk Start            0000 (0)\n-23B1B3 Int File Attributes   0000 (0)\n+23D28A Compression Method    0008 (8) 'Deflated'\n+23D28C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D290 CRC                   00000000 (0)\n+23D294 Compressed Size       00000002 (2)\n+23D298 Uncompressed Size     00000000 (0)\n+23D29C Filename Length       002C (44)\n+23D29E Extra Length          0000 (0)\n+23D2A0 Comment Length        0000 (0)\n+23D2A2 Disk Start            0000 (0)\n+23D2A4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B1B5 Ext File Attributes   00000000 (0)\n-23B1B9 Local Header Offset   001BECEB (1830123)\n-23B1BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D2A6 Ext File Attributes   00000000 (0)\n+23D2AA Local Header Offset   001C329B (1847963)\n+23D2AE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B1BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D2AE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B1F1 CENTRAL HEADER #1725  02014B50 (33639248)\n-23B1F5 Created Zip Spec      14 (20) '2.0'\n-23B1F6 Created OS            00 (0) 'MS-DOS'\n-23B1F7 Extract Zip Spec      14 (20) '2.0'\n-23B1F8 Extract OS            00 (0) 'MS-DOS'\n-23B1F9 General Purpose Flag  0808 (2056)\n+23D2DA CENTRAL HEADER #1725  02014B50 (33639248)\n+23D2DE Created Zip Spec      14 (20) '2.0'\n+23D2DF Created OS            00 (0) 'MS-DOS'\n+23D2E0 Extract Zip Spec      14 (20) '2.0'\n+23D2E1 Extract OS            00 (0) 'MS-DOS'\n+23D2E2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B1FB Compression Method    0008 (8) 'Deflated'\n-23B1FD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B201 CRC                   00000000 (0)\n-23B205 Compressed Size       00000002 (2)\n-23B209 Uncompressed Size     00000000 (0)\n-23B20D Filename Length       0025 (37)\n-23B20F Extra Length          0000 (0)\n-23B211 Comment Length        0000 (0)\n-23B213 Disk Start            0000 (0)\n-23B215 Int File Attributes   0000 (0)\n+23D2E4 Compression Method    0008 (8) 'Deflated'\n+23D2E6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D2EA CRC                   CC53D052 (3428044882)\n+23D2EE Compressed Size       00000225 (549)\n+23D2F2 Uncompressed Size     000003D7 (983)\n+23D2F6 Filename Length       003C (60)\n+23D2F8 Extra Length          0000 (0)\n+23D2FA Comment Length        0000 (0)\n+23D2FC Disk Start            0000 (0)\n+23D2FE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B217 Ext File Attributes   00000000 (0)\n-23B21B Local Header Offset   001BEFCC (1830860)\n-23B21F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D300 Ext File Attributes   00000000 (0)\n+23D304 Local Header Offset   001C32F7 (1848055)\n+23D308 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B21F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D308: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B244 CENTRAL HEADER #1726  02014B50 (33639248)\n-23B248 Created Zip Spec      14 (20) '2.0'\n-23B249 Created OS            00 (0) 'MS-DOS'\n-23B24A Extract Zip Spec      14 (20) '2.0'\n-23B24B Extract OS            00 (0) 'MS-DOS'\n-23B24C General Purpose Flag  0808 (2056)\n+23D344 CENTRAL HEADER #1726  02014B50 (33639248)\n+23D348 Created Zip Spec      14 (20) '2.0'\n+23D349 Created OS            00 (0) 'MS-DOS'\n+23D34A Extract Zip Spec      14 (20) '2.0'\n+23D34B Extract OS            00 (0) 'MS-DOS'\n+23D34C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B24E Compression Method    0008 (8) 'Deflated'\n-23B250 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B254 CRC                   15451137 (356847927)\n-23B258 Compressed Size       00000220 (544)\n-23B25C Uncompressed Size     000003DF (991)\n-23B260 Filename Length       003E (62)\n-23B262 Extra Length          0000 (0)\n-23B264 Comment Length        0000 (0)\n-23B266 Disk Start            0000 (0)\n-23B268 Int File Attributes   0000 (0)\n+23D34E Compression Method    0008 (8) 'Deflated'\n+23D350 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D354 CRC                   00000000 (0)\n+23D358 Compressed Size       00000002 (2)\n+23D35C Uncompressed Size     00000000 (0)\n+23D360 Filename Length       0026 (38)\n+23D362 Extra Length          0000 (0)\n+23D364 Comment Length        0000 (0)\n+23D366 Disk Start            0000 (0)\n+23D368 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B26A Ext File Attributes   00000000 (0)\n-23B26E Local Header Offset   001BF021 (1830945)\n-23B272 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D36A Ext File Attributes   00000000 (0)\n+23D36E Local Header Offset   001C3586 (1848710)\n+23D372 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B272: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D372: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B2B0 CENTRAL HEADER #1727  02014B50 (33639248)\n-23B2B4 Created Zip Spec      14 (20) '2.0'\n-23B2B5 Created OS            00 (0) 'MS-DOS'\n-23B2B6 Extract Zip Spec      14 (20) '2.0'\n-23B2B7 Extract OS            00 (0) 'MS-DOS'\n-23B2B8 General Purpose Flag  0808 (2056)\n+23D398 CENTRAL HEADER #1727  02014B50 (33639248)\n+23D39C Created Zip Spec      14 (20) '2.0'\n+23D39D Created OS            00 (0) 'MS-DOS'\n+23D39E Extract Zip Spec      14 (20) '2.0'\n+23D39F Extract OS            00 (0) 'MS-DOS'\n+23D3A0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B2BA Compression Method    0008 (8) 'Deflated'\n-23B2BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B2C0 CRC                   5AF92E3B (1526279739)\n-23B2C4 Compressed Size       0000029F (671)\n-23B2C8 Uncompressed Size     000005DD (1501)\n-23B2CC Filename Length       0023 (35)\n-23B2CE Extra Length          0000 (0)\n-23B2D0 Comment Length        0000 (0)\n-23B2D2 Disk Start            0000 (0)\n-23B2D4 Int File Attributes   0000 (0)\n+23D3A2 Compression Method    0008 (8) 'Deflated'\n+23D3A4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D3A8 CRC                   4A3ABC52 (1245363282)\n+23D3AC Compressed Size       00000225 (549)\n+23D3B0 Uncompressed Size     000003DD (989)\n+23D3B4 Filename Length       003D (61)\n+23D3B6 Extra Length          0000 (0)\n+23D3B8 Comment Length        0000 (0)\n+23D3BA Disk Start            0000 (0)\n+23D3BC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B2D6 Ext File Attributes   00000000 (0)\n-23B2DA Local Header Offset   001BF2AD (1831597)\n-23B2DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D3BE Ext File Attributes   00000000 (0)\n+23D3C2 Local Header Offset   001C35DC (1848796)\n+23D3C6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B2DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D3C6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B301 CENTRAL HEADER #1728  02014B50 (33639248)\n-23B305 Created Zip Spec      14 (20) '2.0'\n-23B306 Created OS            00 (0) 'MS-DOS'\n-23B307 Extract Zip Spec      14 (20) '2.0'\n-23B308 Extract OS            00 (0) 'MS-DOS'\n-23B309 General Purpose Flag  0808 (2056)\n+23D403 CENTRAL HEADER #1728  02014B50 (33639248)\n+23D407 Created Zip Spec      14 (20) '2.0'\n+23D408 Created OS            00 (0) 'MS-DOS'\n+23D409 Extract Zip Spec      14 (20) '2.0'\n+23D40A Extract OS            00 (0) 'MS-DOS'\n+23D40B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B30B Compression Method    0008 (8) 'Deflated'\n-23B30D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B311 CRC                   4813D623 (1209259555)\n-23B315 Compressed Size       000002B3 (691)\n-23B319 Uncompressed Size     000005DD (1501)\n-23B31D Filename Length       0021 (33)\n-23B31F Extra Length          0000 (0)\n-23B321 Comment Length        0000 (0)\n-23B323 Disk Start            0000 (0)\n-23B325 Int File Attributes   0000 (0)\n+23D40D Compression Method    0008 (8) 'Deflated'\n+23D40F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D413 CRC                   00000000 (0)\n+23D417 Compressed Size       00000002 (2)\n+23D41B Uncompressed Size     00000000 (0)\n+23D41F Filename Length       001E (30)\n+23D421 Extra Length          0000 (0)\n+23D423 Comment Length        0000 (0)\n+23D425 Disk Start            0000 (0)\n+23D427 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B327 Ext File Attributes   00000000 (0)\n-23B32B Local Header Offset   001BF59D (1832349)\n-23B32F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D429 Ext File Attributes   00000000 (0)\n+23D42D Local Header Offset   001C386C (1849452)\n+23D431 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B32F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D431: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B350 CENTRAL HEADER #1729  02014B50 (33639248)\n-23B354 Created Zip Spec      14 (20) '2.0'\n-23B355 Created OS            00 (0) 'MS-DOS'\n-23B356 Extract Zip Spec      14 (20) '2.0'\n-23B357 Extract OS            00 (0) 'MS-DOS'\n-23B358 General Purpose Flag  0808 (2056)\n+23D44F CENTRAL HEADER #1729  02014B50 (33639248)\n+23D453 Created Zip Spec      14 (20) '2.0'\n+23D454 Created OS            00 (0) 'MS-DOS'\n+23D455 Extract Zip Spec      14 (20) '2.0'\n+23D456 Extract OS            00 (0) 'MS-DOS'\n+23D457 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B35A Compression Method    0008 (8) 'Deflated'\n-23B35C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B360 CRC                   6425D257 (1680200279)\n-23B364 Compressed Size       0000042D (1069)\n-23B368 Uncompressed Size     000011F5 (4597)\n-23B36C Filename Length       0025 (37)\n-23B36E Extra Length          0000 (0)\n-23B370 Comment Length        0000 (0)\n-23B372 Disk Start            0000 (0)\n-23B374 Int File Attributes   0000 (0)\n+23D459 Compression Method    0008 (8) 'Deflated'\n+23D45B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D45F CRC                   643DA964 (1681762660)\n+23D463 Compressed Size       000003A3 (931)\n+23D467 Uncompressed Size     00000B4F (2895)\n+23D46B Filename Length       002B (43)\n+23D46D Extra Length          0000 (0)\n+23D46F Comment Length        0000 (0)\n+23D471 Disk Start            0000 (0)\n+23D473 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B376 Ext File Attributes   00000000 (0)\n-23B37A Local Header Offset   001BF89F (1833119)\n-23B37E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D475 Ext File Attributes   00000000 (0)\n+23D479 Local Header Offset   001C38BA (1849530)\n+23D47D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B37E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D47D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B3A3 CENTRAL HEADER #1730  02014B50 (33639248)\n-23B3A7 Created Zip Spec      14 (20) '2.0'\n-23B3A8 Created OS            00 (0) 'MS-DOS'\n-23B3A9 Extract Zip Spec      14 (20) '2.0'\n-23B3AA Extract OS            00 (0) 'MS-DOS'\n-23B3AB General Purpose Flag  0808 (2056)\n+23D4A8 CENTRAL HEADER #1730  02014B50 (33639248)\n+23D4AC Created Zip Spec      14 (20) '2.0'\n+23D4AD Created OS            00 (0) 'MS-DOS'\n+23D4AE Extract Zip Spec      14 (20) '2.0'\n+23D4AF Extract OS            00 (0) 'MS-DOS'\n+23D4B0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B3AD Compression Method    0008 (8) 'Deflated'\n-23B3AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B3B3 CRC                   4751F7D9 (1196554201)\n-23B3B7 Compressed Size       0000035A (858)\n-23B3BB Uncompressed Size     00000933 (2355)\n-23B3BF Filename Length       0022 (34)\n-23B3C1 Extra Length          0000 (0)\n-23B3C3 Comment Length        0000 (0)\n-23B3C5 Disk Start            0000 (0)\n-23B3C7 Int File Attributes   0000 (0)\n+23D4B2 Compression Method    0008 (8) 'Deflated'\n+23D4B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D4B8 CRC                   00000000 (0)\n+23D4BC Compressed Size       00000002 (2)\n+23D4C0 Uncompressed Size     00000000 (0)\n+23D4C4 Filename Length       001D (29)\n+23D4C6 Extra Length          0000 (0)\n+23D4C8 Comment Length        0000 (0)\n+23D4CA Disk Start            0000 (0)\n+23D4CC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B3C9 Ext File Attributes   00000000 (0)\n-23B3CD Local Header Offset   001BFD1F (1834271)\n-23B3D1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D4CE Ext File Attributes   00000000 (0)\n+23D4D2 Local Header Offset   001C3CB6 (1850550)\n+23D4D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B3D1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D4D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B3F3 CENTRAL HEADER #1731  02014B50 (33639248)\n-23B3F7 Created Zip Spec      14 (20) '2.0'\n-23B3F8 Created OS            00 (0) 'MS-DOS'\n-23B3F9 Extract Zip Spec      14 (20) '2.0'\n-23B3FA Extract OS            00 (0) 'MS-DOS'\n-23B3FB General Purpose Flag  0808 (2056)\n+23D4F3 CENTRAL HEADER #1731  02014B50 (33639248)\n+23D4F7 Created Zip Spec      14 (20) '2.0'\n+23D4F8 Created OS            00 (0) 'MS-DOS'\n+23D4F9 Extract Zip Spec      14 (20) '2.0'\n+23D4FA Extract OS            00 (0) 'MS-DOS'\n+23D4FB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B3FD Compression Method    0008 (8) 'Deflated'\n-23B3FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B403 CRC                   A7B8FF5F (2813919071)\n-23B407 Compressed Size       000002A0 (672)\n-23B40B Uncompressed Size     0000060D (1549)\n-23B40F Filename Length       002A (42)\n-23B411 Extra Length          0000 (0)\n-23B413 Comment Length        0000 (0)\n-23B415 Disk Start            0000 (0)\n-23B417 Int File Attributes   0000 (0)\n+23D4FD Compression Method    0008 (8) 'Deflated'\n+23D4FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D503 CRC                   1456EFA1 (341241761)\n+23D507 Compressed Size       00000213 (531)\n+23D50B Uncompressed Size     000003BB (955)\n+23D50F Filename Length       002C (44)\n+23D511 Extra Length          0000 (0)\n+23D513 Comment Length        0000 (0)\n+23D515 Disk Start            0000 (0)\n+23D517 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B419 Ext File Attributes   00000000 (0)\n-23B41D Local Header Offset   001C00C9 (1835209)\n-23B421 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D519 Ext File Attributes   00000000 (0)\n+23D51D Local Header Offset   001C3D03 (1850627)\n+23D521 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B421: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D521: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B44B CENTRAL HEADER #1732  02014B50 (33639248)\n-23B44F Created Zip Spec      14 (20) '2.0'\n-23B450 Created OS            00 (0) 'MS-DOS'\n-23B451 Extract Zip Spec      14 (20) '2.0'\n-23B452 Extract OS            00 (0) 'MS-DOS'\n-23B453 General Purpose Flag  0808 (2056)\n+23D54D CENTRAL HEADER #1732  02014B50 (33639248)\n+23D551 Created Zip Spec      14 (20) '2.0'\n+23D552 Created OS            00 (0) 'MS-DOS'\n+23D553 Extract Zip Spec      14 (20) '2.0'\n+23D554 Extract OS            00 (0) 'MS-DOS'\n+23D555 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B455 Compression Method    0008 (8) 'Deflated'\n-23B457 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B45B CRC                   A6915B8B (2794544011)\n-23B45F Compressed Size       000002ED (749)\n-23B463 Uncompressed Size     000006AD (1709)\n-23B467 Filename Length       0023 (35)\n-23B469 Extra Length          0000 (0)\n-23B46B Comment Length        0000 (0)\n-23B46D Disk Start            0000 (0)\n-23B46F Int File Attributes   0000 (0)\n+23D557 Compression Method    0008 (8) 'Deflated'\n+23D559 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D55D CRC                   E92C073F (3911976767)\n+23D561 Compressed Size       00000214 (532)\n+23D565 Uncompressed Size     000003B9 (953)\n+23D569 Filename Length       002B (43)\n+23D56B Extra Length          0000 (0)\n+23D56D Comment Length        0000 (0)\n+23D56F Disk Start            0000 (0)\n+23D571 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B471 Ext File Attributes   00000000 (0)\n-23B475 Local Header Offset   001C03C1 (1835969)\n-23B479 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D573 Ext File Attributes   00000000 (0)\n+23D577 Local Header Offset   001C3F70 (1851248)\n+23D57B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B479: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D57B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B49C CENTRAL HEADER #1733  02014B50 (33639248)\n-23B4A0 Created Zip Spec      14 (20) '2.0'\n-23B4A1 Created OS            00 (0) 'MS-DOS'\n-23B4A2 Extract Zip Spec      14 (20) '2.0'\n-23B4A3 Extract OS            00 (0) 'MS-DOS'\n-23B4A4 General Purpose Flag  0808 (2056)\n+23D5A6 CENTRAL HEADER #1733  02014B50 (33639248)\n+23D5AA Created Zip Spec      14 (20) '2.0'\n+23D5AB Created OS            00 (0) 'MS-DOS'\n+23D5AC Extract Zip Spec      14 (20) '2.0'\n+23D5AD Extract OS            00 (0) 'MS-DOS'\n+23D5AE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B4A6 Compression Method    0008 (8) 'Deflated'\n-23B4A8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B4AC CRC                   F08690D4 (4035350740)\n-23B4B0 Compressed Size       000002E8 (744)\n-23B4B4 Uncompressed Size     000007FC (2044)\n-23B4B8 Filename Length       0027 (39)\n-23B4BA Extra Length          0000 (0)\n-23B4BC Comment Length        0000 (0)\n-23B4BE Disk Start            0000 (0)\n-23B4C0 Int File Attributes   0000 (0)\n+23D5B0 Compression Method    0008 (8) 'Deflated'\n+23D5B2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D5B6 CRC                   00000000 (0)\n+23D5BA Compressed Size       00000002 (2)\n+23D5BE Uncompressed Size     00000000 (0)\n+23D5C2 Filename Length       0031 (49)\n+23D5C4 Extra Length          0000 (0)\n+23D5C6 Comment Length        0000 (0)\n+23D5C8 Disk Start            0000 (0)\n+23D5CA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B4C2 Ext File Attributes   00000000 (0)\n-23B4C6 Local Header Offset   001C06FF (1836799)\n-23B4CA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D5CC Ext File Attributes   00000000 (0)\n+23D5D0 Local Header Offset   001C41DD (1851869)\n+23D5D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B4CA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D5D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B4F1 CENTRAL HEADER #1734  02014B50 (33639248)\n-23B4F5 Created Zip Spec      14 (20) '2.0'\n-23B4F6 Created OS            00 (0) 'MS-DOS'\n-23B4F7 Extract Zip Spec      14 (20) '2.0'\n-23B4F8 Extract OS            00 (0) 'MS-DOS'\n-23B4F9 General Purpose Flag  0808 (2056)\n+23D605 CENTRAL HEADER #1734  02014B50 (33639248)\n+23D609 Created Zip Spec      14 (20) '2.0'\n+23D60A Created OS            00 (0) 'MS-DOS'\n+23D60B Extract Zip Spec      14 (20) '2.0'\n+23D60C Extract OS            00 (0) 'MS-DOS'\n+23D60D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B4FB Compression Method    0008 (8) 'Deflated'\n-23B4FD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B501 CRC                   79872C8E (2038901902)\n-23B505 Compressed Size       0000048F (1167)\n-23B509 Uncompressed Size     000012BE (4798)\n-23B50D Filename Length       0021 (33)\n-23B50F Extra Length          0000 (0)\n-23B511 Comment Length        0000 (0)\n-23B513 Disk Start            0000 (0)\n-23B515 Int File Attributes   0000 (0)\n+23D60F Compression Method    0008 (8) 'Deflated'\n+23D611 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D615 CRC                   7291F3D3 (1922167763)\n+23D619 Compressed Size       000003E2 (994)\n+23D61D Uncompressed Size     000010C7 (4295)\n+23D621 Filename Length       0038 (56)\n+23D623 Extra Length          0000 (0)\n+23D625 Comment Length        0000 (0)\n+23D627 Disk Start            0000 (0)\n+23D629 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B517 Ext File Attributes   00000000 (0)\n-23B51B Local Header Offset   001C0A3C (1837628)\n-23B51F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D62B Ext File Attributes   00000000 (0)\n+23D62F Local Header Offset   001C423E (1851966)\n+23D633 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B51F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D633: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B540 CENTRAL HEADER #1735  02014B50 (33639248)\n-23B544 Created Zip Spec      14 (20) '2.0'\n-23B545 Created OS            00 (0) 'MS-DOS'\n-23B546 Extract Zip Spec      14 (20) '2.0'\n-23B547 Extract OS            00 (0) 'MS-DOS'\n-23B548 General Purpose Flag  0808 (2056)\n+23D66B CENTRAL HEADER #1735  02014B50 (33639248)\n+23D66F Created Zip Spec      14 (20) '2.0'\n+23D670 Created OS            00 (0) 'MS-DOS'\n+23D671 Extract Zip Spec      14 (20) '2.0'\n+23D672 Extract OS            00 (0) 'MS-DOS'\n+23D673 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B54A Compression Method    0008 (8) 'Deflated'\n-23B54C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B550 CRC                   037ECE86 (58642054)\n-23B554 Compressed Size       000009D7 (2519)\n-23B558 Uncompressed Size     00002BF5 (11253)\n-23B55C Filename Length       0025 (37)\n-23B55E Extra Length          0000 (0)\n-23B560 Comment Length        0000 (0)\n-23B562 Disk Start            0000 (0)\n-23B564 Int File Attributes   0000 (0)\n+23D675 Compression Method    0008 (8) 'Deflated'\n+23D677 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23D67B CRC                   3C368062 (1010204770)\n+23D67F Compressed Size       00000045 (69)\n+23D683 Uncompressed Size     00000047 (71)\n+23D687 Filename Length       003F (63)\n+23D689 Extra Length          0000 (0)\n+23D68B Comment Length        0000 (0)\n+23D68D Disk Start            0000 (0)\n+23D68F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B566 Ext File Attributes   00000000 (0)\n-23B56A Local Header Offset   001C0F1A (1838874)\n-23B56E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D691 Ext File Attributes   00000000 (0)\n+23D695 Local Header Offset   001C4686 (1853062)\n+23D699 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B56E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D699: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B593 CENTRAL HEADER #1736  02014B50 (33639248)\n-23B597 Created Zip Spec      14 (20) '2.0'\n-23B598 Created OS            00 (0) 'MS-DOS'\n-23B599 Extract Zip Spec      14 (20) '2.0'\n-23B59A Extract OS            00 (0) 'MS-DOS'\n-23B59B General Purpose Flag  0808 (2056)\n+23D6D8 CENTRAL HEADER #1736  02014B50 (33639248)\n+23D6DC Created Zip Spec      14 (20) '2.0'\n+23D6DD Created OS            00 (0) 'MS-DOS'\n+23D6DE Extract Zip Spec      14 (20) '2.0'\n+23D6DF Extract OS            00 (0) 'MS-DOS'\n+23D6E0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B59D Compression Method    0008 (8) 'Deflated'\n-23B59F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B5A3 CRC                   FF29698F (4280904079)\n-23B5A7 Compressed Size       00000272 (626)\n-23B5AB Uncompressed Size     00000659 (1625)\n-23B5AF Filename Length       0027 (39)\n-23B5B1 Extra Length          0000 (0)\n-23B5B3 Comment Length        0000 (0)\n-23B5B5 Disk Start            0000 (0)\n-23B5B7 Int File Attributes   0000 (0)\n+23D6E2 Compression Method    0008 (8) 'Deflated'\n+23D6E4 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23D6E8 CRC                   00000000 (0)\n+23D6EC Compressed Size       00000002 (2)\n+23D6F0 Uncompressed Size     00000000 (0)\n+23D6F4 Filename Length       0010 (16)\n+23D6F6 Extra Length          0000 (0)\n+23D6F8 Comment Length        0000 (0)\n+23D6FA Disk Start            0000 (0)\n+23D6FC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B5B9 Ext File Attributes   00000000 (0)\n-23B5BD Local Header Offset   001C1944 (1841476)\n-23B5C1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D6FE Ext File Attributes   00000000 (0)\n+23D702 Local Header Offset   001C4738 (1853240)\n+23D706 Filename              'XXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B5C1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D706: Filename 'XXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B5E8 CENTRAL HEADER #1737  02014B50 (33639248)\n-23B5EC Created Zip Spec      14 (20) '2.0'\n-23B5ED Created OS            00 (0) 'MS-DOS'\n-23B5EE Extract Zip Spec      14 (20) '2.0'\n-23B5EF Extract OS            00 (0) 'MS-DOS'\n-23B5F0 General Purpose Flag  0808 (2056)\n+23D716 CENTRAL HEADER #1737  02014B50 (33639248)\n+23D71A Created Zip Spec      14 (20) '2.0'\n+23D71B Created OS            00 (0) 'MS-DOS'\n+23D71C Extract Zip Spec      14 (20) '2.0'\n+23D71D Extract OS            00 (0) 'MS-DOS'\n+23D71E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B5F2 Compression Method    0008 (8) 'Deflated'\n-23B5F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B5F8 CRC                   F6E65C00 (4142291968)\n-23B5FC Compressed Size       0000064A (1610)\n-23B600 Uncompressed Size     00001C4D (7245)\n-23B604 Filename Length       0028 (40)\n-23B606 Extra Length          0000 (0)\n-23B608 Comment Length        0000 (0)\n-23B60A Disk Start            0000 (0)\n-23B60C Int File Attributes   0000 (0)\n+23D720 Compression Method    0008 (8) 'Deflated'\n+23D722 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23D726 CRC                   00000000 (0)\n+23D72A Compressed Size       00000002 (2)\n+23D72E Uncompressed Size     00000000 (0)\n+23D732 Filename Length       0017 (23)\n+23D734 Extra Length          0000 (0)\n+23D736 Comment Length        0000 (0)\n+23D738 Disk Start            0000 (0)\n+23D73A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B60E Ext File Attributes   00000000 (0)\n-23B612 Local Header Offset   001C1C0B (1842187)\n-23B616 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D73C Ext File Attributes   00000000 (0)\n+23D740 Local Header Offset   001C4778 (1853304)\n+23D744 Filename              'XXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B616: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D744: Filename 'XXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B63E CENTRAL HEADER #1738  02014B50 (33639248)\n-23B642 Created Zip Spec      14 (20) '2.0'\n-23B643 Created OS            00 (0) 'MS-DOS'\n-23B644 Extract Zip Spec      14 (20) '2.0'\n-23B645 Extract OS            00 (0) 'MS-DOS'\n-23B646 General Purpose Flag  0808 (2056)\n+23D75B CENTRAL HEADER #1738  02014B50 (33639248)\n+23D75F Created Zip Spec      14 (20) '2.0'\n+23D760 Created OS            00 (0) 'MS-DOS'\n+23D761 Extract Zip Spec      14 (20) '2.0'\n+23D762 Extract OS            00 (0) 'MS-DOS'\n+23D763 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B648 Compression Method    0008 (8) 'Deflated'\n-23B64A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B64E CRC                   00000000 (0)\n-23B652 Compressed Size       00000002 (2)\n-23B656 Uncompressed Size     00000000 (0)\n-23B65A Filename Length       001E (30)\n-23B65C Extra Length          0000 (0)\n-23B65E Comment Length        0000 (0)\n-23B660 Disk Start            0000 (0)\n-23B662 Int File Attributes   0000 (0)\n+23D765 Compression Method    0008 (8) 'Deflated'\n+23D767 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23D76B CRC                   00000000 (0)\n+23D76F Compressed Size       00000002 (2)\n+23D773 Uncompressed Size     00000000 (0)\n+23D777 Filename Length       001F (31)\n+23D779 Extra Length          0000 (0)\n+23D77B Comment Length        0000 (0)\n+23D77D Disk Start            0000 (0)\n+23D77F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B664 Ext File Attributes   00000000 (0)\n-23B668 Local Header Offset   001C22AB (1843883)\n-23B66C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D781 Ext File Attributes   00000000 (0)\n+23D785 Local Header Offset   001C47BF (1853375)\n+23D789 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B66C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D789: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B68A CENTRAL HEADER #1739  02014B50 (33639248)\n-23B68E Created Zip Spec      14 (20) '2.0'\n-23B68F Created OS            00 (0) 'MS-DOS'\n-23B690 Extract Zip Spec      14 (20) '2.0'\n-23B691 Extract OS            00 (0) 'MS-DOS'\n-23B692 General Purpose Flag  0808 (2056)\n+23D7A8 CENTRAL HEADER #1739  02014B50 (33639248)\n+23D7AC Created Zip Spec      14 (20) '2.0'\n+23D7AD Created OS            00 (0) 'MS-DOS'\n+23D7AE Extract Zip Spec      14 (20) '2.0'\n+23D7AF Extract OS            00 (0) 'MS-DOS'\n+23D7B0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B694 Compression Method    0008 (8) 'Deflated'\n-23B696 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B69A CRC                   54F4EBB3 (1425337267)\n-23B69E Compressed Size       00000288 (648)\n-23B6A2 Uncompressed Size     00000554 (1364)\n-23B6A6 Filename Length       002A (42)\n-23B6A8 Extra Length          0000 (0)\n-23B6AA Comment Length        0000 (0)\n-23B6AC Disk Start            0000 (0)\n-23B6AE Int File Attributes   0000 (0)\n+23D7B2 Compression Method    0008 (8) 'Deflated'\n+23D7B4 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23D7B8 CRC                   00000000 (0)\n+23D7BC Compressed Size       00000002 (2)\n+23D7C0 Uncompressed Size     00000000 (0)\n+23D7C4 Filename Length       0024 (36)\n+23D7C6 Extra Length          0000 (0)\n+23D7C8 Comment Length        0000 (0)\n+23D7CA Disk Start            0000 (0)\n+23D7CC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B6B0 Ext File Attributes   00000000 (0)\n-23B6B4 Local Header Offset   001C22F9 (1843961)\n-23B6B8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D7CE Ext File Attributes   00000000 (0)\n+23D7D2 Local Header Offset   001C480E (1853454)\n+23D7D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B6B8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D7D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B6E2 CENTRAL HEADER #1740  02014B50 (33639248)\n-23B6E6 Created Zip Spec      14 (20) '2.0'\n-23B6E7 Created OS            00 (0) 'MS-DOS'\n-23B6E8 Extract Zip Spec      14 (20) '2.0'\n-23B6E9 Extract OS            00 (0) 'MS-DOS'\n-23B6EA General Purpose Flag  0808 (2056)\n+23D7FA CENTRAL HEADER #1740  02014B50 (33639248)\n+23D7FE Created Zip Spec      14 (20) '2.0'\n+23D7FF Created OS            00 (0) 'MS-DOS'\n+23D800 Extract Zip Spec      14 (20) '2.0'\n+23D801 Extract OS            00 (0) 'MS-DOS'\n+23D802 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B6EC Compression Method    0008 (8) 'Deflated'\n-23B6EE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B6F2 CRC                   22C3EE20 (583265824)\n-23B6F6 Compressed Size       00000221 (545)\n-23B6FA Uncompressed Size     000003CD (973)\n-23B6FE Filename Length       0036 (54)\n-23B700 Extra Length          0000 (0)\n-23B702 Comment Length        0000 (0)\n-23B704 Disk Start            0000 (0)\n-23B706 Int File Attributes   0000 (0)\n+23D804 Compression Method    0008 (8) 'Deflated'\n+23D806 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23D80A CRC                   57AE068E (1471022734)\n+23D80E Compressed Size       0000091E (2334)\n+23D812 Uncompressed Size     00001AD7 (6871)\n+23D816 Filename Length       0037 (55)\n+23D818 Extra Length          0000 (0)\n+23D81A Comment Length        0000 (0)\n+23D81C Disk Start            0000 (0)\n+23D81E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B708 Ext File Attributes   00000000 (0)\n-23B70C Local Header Offset   001C25D9 (1844697)\n-23B710 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D820 Ext File Attributes   00000000 (0)\n+23D824 Local Header Offset   001C4862 (1853538)\n+23D828 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B710: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D828: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B746 CENTRAL HEADER #1741  02014B50 (33639248)\n-23B74A Created Zip Spec      14 (20) '2.0'\n-23B74B Created OS            00 (0) 'MS-DOS'\n-23B74C Extract Zip Spec      14 (20) '2.0'\n-23B74D Extract OS            00 (0) 'MS-DOS'\n-23B74E General Purpose Flag  0808 (2056)\n+23D85F CENTRAL HEADER #1741  02014B50 (33639248)\n+23D863 Created Zip Spec      14 (20) '2.0'\n+23D864 Created OS            00 (0) 'MS-DOS'\n+23D865 Extract Zip Spec      14 (20) '2.0'\n+23D866 Extract OS            00 (0) 'MS-DOS'\n+23D867 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B750 Compression Method    0008 (8) 'Deflated'\n-23B752 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B756 CRC                   1E2DFE7D (506330749)\n-23B75A Compressed Size       000002F6 (758)\n-23B75E Uncompressed Size     00000684 (1668)\n-23B762 Filename Length       002C (44)\n-23B764 Extra Length          0000 (0)\n-23B766 Comment Length        0000 (0)\n-23B768 Disk Start            0000 (0)\n-23B76A Int File Attributes   0000 (0)\n+23D869 Compression Method    0008 (8) 'Deflated'\n+23D86B Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23D86F CRC                   00000000 (0)\n+23D873 Compressed Size       00000002 (2)\n+23D877 Uncompressed Size     00000000 (0)\n+23D87B Filename Length       0022 (34)\n+23D87D Extra Length          0000 (0)\n+23D87F Comment Length        0000 (0)\n+23D881 Disk Start            0000 (0)\n+23D883 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B76C Ext File Attributes   00000000 (0)\n-23B770 Local Header Offset   001C285E (1845342)\n-23B774 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D885 Ext File Attributes   00000000 (0)\n+23D889 Local Header Offset   001C51E5 (1855973)\n+23D88D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B774: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D88D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B7A0 CENTRAL HEADER #1742  02014B50 (33639248)\n-23B7A4 Created Zip Spec      14 (20) '2.0'\n-23B7A5 Created OS            00 (0) 'MS-DOS'\n-23B7A6 Extract Zip Spec      14 (20) '2.0'\n-23B7A7 Extract OS            00 (0) 'MS-DOS'\n-23B7A8 General Purpose Flag  0808 (2056)\n+23D8AF CENTRAL HEADER #1742  02014B50 (33639248)\n+23D8B3 Created Zip Spec      14 (20) '2.0'\n+23D8B4 Created OS            00 (0) 'MS-DOS'\n+23D8B5 Extract Zip Spec      14 (20) '2.0'\n+23D8B6 Extract OS            00 (0) 'MS-DOS'\n+23D8B7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B7AA Compression Method    0008 (8) 'Deflated'\n-23B7AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B7B0 CRC                   E0114FF9 (3759230969)\n-23B7B4 Compressed Size       0000031A (794)\n-23B7B8 Uncompressed Size     000007CF (1999)\n-23B7BC Filename Length       002E (46)\n-23B7BE Extra Length          0000 (0)\n-23B7C0 Comment Length        0000 (0)\n-23B7C2 Disk Start            0000 (0)\n-23B7C4 Int File Attributes   0000 (0)\n+23D8B9 Compression Method    0008 (8) 'Deflated'\n+23D8BB Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23D8BF CRC                   00000000 (0)\n+23D8C3 Compressed Size       00000002 (2)\n+23D8C7 Uncompressed Size     00000000 (0)\n+23D8CB Filename Length       0028 (40)\n+23D8CD Extra Length          0000 (0)\n+23D8CF Comment Length        0000 (0)\n+23D8D1 Disk Start            0000 (0)\n+23D8D3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B7C6 Ext File Attributes   00000000 (0)\n-23B7CA Local Header Offset   001C2BAE (1846190)\n-23B7CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D8D5 Ext File Attributes   00000000 (0)\n+23D8D9 Local Header Offset   001C5237 (1856055)\n+23D8DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B7CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D8DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B7FC CENTRAL HEADER #1743  02014B50 (33639248)\n-23B800 Created Zip Spec      14 (20) '2.0'\n-23B801 Created OS            00 (0) 'MS-DOS'\n-23B802 Extract Zip Spec      14 (20) '2.0'\n-23B803 Extract OS            00 (0) 'MS-DOS'\n-23B804 General Purpose Flag  0808 (2056)\n+23D905 CENTRAL HEADER #1743  02014B50 (33639248)\n+23D909 Created Zip Spec      14 (20) '2.0'\n+23D90A Created OS            00 (0) 'MS-DOS'\n+23D90B Extract Zip Spec      14 (20) '2.0'\n+23D90C Extract OS            00 (0) 'MS-DOS'\n+23D90D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B806 Compression Method    0008 (8) 'Deflated'\n-23B808 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B80C CRC                   C476DBA7 (3296123815)\n-23B810 Compressed Size       00000215 (533)\n-23B814 Uncompressed Size     000003B5 (949)\n-23B818 Filename Length       0029 (41)\n-23B81A Extra Length          0000 (0)\n-23B81C Comment Length        0000 (0)\n-23B81E Disk Start            0000 (0)\n-23B820 Int File Attributes   0000 (0)\n+23D90F Compression Method    0008 (8) 'Deflated'\n+23D911 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23D915 CRC                   F75A753A (4149900602)\n+23D919 Compressed Size       0000035F (863)\n+23D91D Uncompressed Size     0000079E (1950)\n+23D921 Filename Length       003B (59)\n+23D923 Extra Length          0000 (0)\n+23D925 Comment Length        0000 (0)\n+23D927 Disk Start            0000 (0)\n+23D929 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B822 Ext File Attributes   00000000 (0)\n-23B826 Local Header Offset   001C2F24 (1847076)\n-23B82A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D92B Ext File Attributes   00000000 (0)\n+23D92F Local Header Offset   001C528F (1856143)\n+23D933 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B82A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D933: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B853 CENTRAL HEADER #1744  02014B50 (33639248)\n-23B857 Created Zip Spec      14 (20) '2.0'\n-23B858 Created OS            00 (0) 'MS-DOS'\n-23B859 Extract Zip Spec      14 (20) '2.0'\n-23B85A Extract OS            00 (0) 'MS-DOS'\n-23B85B General Purpose Flag  0808 (2056)\n+23D96E CENTRAL HEADER #1744  02014B50 (33639248)\n+23D972 Created Zip Spec      14 (20) '2.0'\n+23D973 Created OS            00 (0) 'MS-DOS'\n+23D974 Extract Zip Spec      14 (20) '2.0'\n+23D975 Extract OS            00 (0) 'MS-DOS'\n+23D976 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B85D Compression Method    0008 (8) 'Deflated'\n-23B85F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B863 CRC                   A69542CD (2794799821)\n-23B867 Compressed Size       000003CC (972)\n-23B86B Uncompressed Size     00000A92 (2706)\n-23B86F Filename Length       0029 (41)\n-23B871 Extra Length          0000 (0)\n-23B873 Comment Length        0000 (0)\n-23B875 Disk Start            0000 (0)\n-23B877 Int File Attributes   0000 (0)\n+23D978 Compression Method    0008 (8) 'Deflated'\n+23D97A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23D97E CRC                   4D63953A (1298371898)\n+23D982 Compressed Size       0000036F (879)\n+23D986 Uncompressed Size     0000081B (2075)\n+23D98A Filename Length       003C (60)\n+23D98C Extra Length          0000 (0)\n+23D98E Comment Length        0000 (0)\n+23D990 Disk Start            0000 (0)\n+23D992 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B879 Ext File Attributes   00000000 (0)\n-23B87D Local Header Offset   001C3190 (1847696)\n-23B881 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D994 Ext File Attributes   00000000 (0)\n+23D998 Local Header Offset   001C5657 (1857111)\n+23D99C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B881: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23D99C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B8AA CENTRAL HEADER #1745  02014B50 (33639248)\n-23B8AE Created Zip Spec      14 (20) '2.0'\n-23B8AF Created OS            00 (0) 'MS-DOS'\n-23B8B0 Extract Zip Spec      14 (20) '2.0'\n-23B8B1 Extract OS            00 (0) 'MS-DOS'\n-23B8B2 General Purpose Flag  0808 (2056)\n+23D9D8 CENTRAL HEADER #1745  02014B50 (33639248)\n+23D9DC Created Zip Spec      14 (20) '2.0'\n+23D9DD Created OS            00 (0) 'MS-DOS'\n+23D9DE Extract Zip Spec      14 (20) '2.0'\n+23D9DF Extract OS            00 (0) 'MS-DOS'\n+23D9E0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B8B4 Compression Method    0008 (8) 'Deflated'\n-23B8B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B8BA CRC                   A83F3E21 (2822716961)\n-23B8BE Compressed Size       00000271 (625)\n-23B8C2 Uncompressed Size     000004DA (1242)\n-23B8C6 Filename Length       0030 (48)\n-23B8C8 Extra Length          0000 (0)\n-23B8CA Comment Length        0000 (0)\n-23B8CC Disk Start            0000 (0)\n-23B8CE Int File Attributes   0000 (0)\n+23D9E2 Compression Method    0008 (8) 'Deflated'\n+23D9E4 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23D9E8 CRC                   D08B9F5C (3498811228)\n+23D9EC Compressed Size       00000526 (1318)\n+23D9F0 Uncompressed Size     00000A60 (2656)\n+23D9F4 Filename Length       0037 (55)\n+23D9F6 Extra Length          0000 (0)\n+23D9F8 Comment Length        0000 (0)\n+23D9FA Disk Start            0000 (0)\n+23D9FC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B8D0 Ext File Attributes   00000000 (0)\n-23B8D4 Local Header Offset   001C35B3 (1848755)\n-23B8D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23D9FE Ext File Attributes   00000000 (0)\n+23DA02 Local Header Offset   001C5A30 (1858096)\n+23DA06 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B8D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23DA06: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B908 CENTRAL HEADER #1746  02014B50 (33639248)\n-23B90C Created Zip Spec      14 (20) '2.0'\n-23B90D Created OS            00 (0) 'MS-DOS'\n-23B90E Extract Zip Spec      14 (20) '2.0'\n-23B90F Extract OS            00 (0) 'MS-DOS'\n-23B910 General Purpose Flag  0808 (2056)\n+23DA3D CENTRAL HEADER #1746  02014B50 (33639248)\n+23DA41 Created Zip Spec      14 (20) '2.0'\n+23DA42 Created OS            00 (0) 'MS-DOS'\n+23DA43 Extract Zip Spec      14 (20) '2.0'\n+23DA44 Extract OS            00 (0) 'MS-DOS'\n+23DA45 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B912 Compression Method    0008 (8) 'Deflated'\n-23B914 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B918 CRC                   75803CF4 (1971338484)\n-23B91C Compressed Size       000002CE (718)\n-23B920 Uncompressed Size     0000059F (1439)\n-23B924 Filename Length       0030 (48)\n-23B926 Extra Length          0000 (0)\n-23B928 Comment Length        0000 (0)\n-23B92A Disk Start            0000 (0)\n-23B92C Int File Attributes   0000 (0)\n+23DA47 Compression Method    0008 (8) 'Deflated'\n+23DA49 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23DA4D CRC                   CC968FE2 (3432419298)\n+23DA51 Compressed Size       00000742 (1858)\n+23DA55 Uncompressed Size     00001758 (5976)\n+23DA59 Filename Length       0038 (56)\n+23DA5B Extra Length          0000 (0)\n+23DA5D Comment Length        0000 (0)\n+23DA5F Disk Start            0000 (0)\n+23DA61 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B92E Ext File Attributes   00000000 (0)\n-23B932 Local Header Offset   001C3882 (1849474)\n-23B936 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23DA63 Ext File Attributes   00000000 (0)\n+23DA67 Local Header Offset   001C5FBB (1859515)\n+23DA6B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B936: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23DA6B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B966 CENTRAL HEADER #1747  02014B50 (33639248)\n-23B96A Created Zip Spec      14 (20) '2.0'\n-23B96B Created OS            00 (0) 'MS-DOS'\n-23B96C Extract Zip Spec      14 (20) '2.0'\n-23B96D Extract OS            00 (0) 'MS-DOS'\n-23B96E General Purpose Flag  0808 (2056)\n+23DAA3 CENTRAL HEADER #1747  02014B50 (33639248)\n+23DAA7 Created Zip Spec      14 (20) '2.0'\n+23DAA8 Created OS            00 (0) 'MS-DOS'\n+23DAA9 Extract Zip Spec      14 (20) '2.0'\n+23DAAA Extract OS            00 (0) 'MS-DOS'\n+23DAAB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B970 Compression Method    0008 (8) 'Deflated'\n-23B972 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B976 CRC                   00000000 (0)\n-23B97A Compressed Size       00000002 (2)\n-23B97E Uncompressed Size     00000000 (0)\n-23B982 Filename Length       002A (42)\n-23B984 Extra Length          0000 (0)\n-23B986 Comment Length        0000 (0)\n-23B988 Disk Start            0000 (0)\n-23B98A Int File Attributes   0000 (0)\n+23DAAD Compression Method    0008 (8) 'Deflated'\n+23DAAF Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23DAB3 CRC                   1549C790 (357156752)\n+23DAB7 Compressed Size       00000711 (1809)\n+23DABB Uncompressed Size     000014F8 (5368)\n+23DABF Filename Length       003D (61)\n+23DAC1 Extra Length          0000 (0)\n+23DAC3 Comment Length        0000 (0)\n+23DAC5 Disk Start            0000 (0)\n+23DAC7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B98C Ext File Attributes   00000000 (0)\n-23B990 Local Header Offset   001C3BAE (1850286)\n-23B994 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23DAC9 Ext File Attributes   00000000 (0)\n+23DACD Local Header Offset   001C6763 (1861475)\n+23DAD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B994: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23DAD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23B9BE CENTRAL HEADER #1748  02014B50 (33639248)\n-23B9C2 Created Zip Spec      14 (20) '2.0'\n-23B9C3 Created OS            00 (0) 'MS-DOS'\n-23B9C4 Extract Zip Spec      14 (20) '2.0'\n-23B9C5 Extract OS            00 (0) 'MS-DOS'\n-23B9C6 General Purpose Flag  0808 (2056)\n+23DB0E CENTRAL HEADER #1748  02014B50 (33639248)\n+23DB12 Created Zip Spec      14 (20) '2.0'\n+23DB13 Created OS            00 (0) 'MS-DOS'\n+23DB14 Extract Zip Spec      14 (20) '2.0'\n+23DB15 Extract OS            00 (0) 'MS-DOS'\n+23DB16 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23B9C8 Compression Method    0008 (8) 'Deflated'\n-23B9CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23B9CE CRC                   823F4C5B (2185186395)\n-23B9D2 Compressed Size       00000225 (549)\n-23B9D6 Uncompressed Size     000003EC (1004)\n-23B9DA Filename Length       0042 (66)\n-23B9DC Extra Length          0000 (0)\n-23B9DE Comment Length        0000 (0)\n-23B9E0 Disk Start            0000 (0)\n-23B9E2 Int File Attributes   0000 (0)\n+23DB18 Compression Method    0008 (8) 'Deflated'\n+23DB1A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23DB1E CRC                   764B1E75 (1984634485)\n+23DB22 Compressed Size       000002B8 (696)\n+23DB26 Uncompressed Size     0000054F (1359)\n+23DB2A Filename Length       0035 (53)\n+23DB2C Extra Length          0000 (0)\n+23DB2E Comment Length        0000 (0)\n+23DB30 Disk Start            0000 (0)\n+23DB32 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23B9E4 Ext File Attributes   00000000 (0)\n-23B9E8 Local Header Offset   001C3C08 (1850376)\n-23B9EC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23DB34 Ext File Attributes   00000000 (0)\n+23DB38 Local Header Offset   001C6EDF (1863391)\n+23DB3C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23B9EC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23DB3C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23BA2E CENTRAL HEADER #1749  02014B50 (33639248)\n-23BA32 Created Zip Spec      14 (20) '2.0'\n-23BA33 Created OS            00 (0) 'MS-DOS'\n-23BA34 Extract Zip Spec      14 (20) '2.0'\n-23BA35 Extract OS            00 (0) 'MS-DOS'\n-23BA36 General Purpose Flag  0808 (2056)\n+23DB71 CENTRAL HEADER #1749  02014B50 (33639248)\n+23DB75 Created Zip Spec      14 (20) '2.0'\n+23DB76 Created OS            00 (0) 'MS-DOS'\n+23DB77 Extract Zip Spec      14 (20) '2.0'\n+23DB78 Extract OS            00 (0) 'MS-DOS'\n+23DB79 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23BA38 Compression Method    0008 (8) 'Deflated'\n-23BA3A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23BA3E CRC                   00000000 (0)\n-23BA42 Compressed Size       00000002 (2)\n-23BA46 Uncompressed Size     00000000 (0)\n-23BA4A Filename Length       0025 (37)\n-23BA4C Extra Length          0000 (0)\n-23BA4E Comment Length        0000 (0)\n-23BA50 Disk Start            0000 (0)\n-23BA52 Int File Attributes   0000 (0)\n+23DB7B Compression Method    0008 (8) 'Deflated'\n+23DB7D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23DB81 CRC                   9EFE4E67 (2667466343)\n+23DB85 Compressed Size       000005E5 (1509)\n+23DB89 Uncompressed Size     00000EDF (3807)\n+23DB8D Filename Length       003B (59)\n+23DB8F Extra Length          0000 (0)\n+23DB91 Comment Length        0000 (0)\n+23DB93 Disk Start            0000 (0)\n+23DB95 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23BA54 Ext File Attributes   00000000 (0)\n-23BA58 Local Header Offset   001C3E9D (1851037)\n-23BA5C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23DB97 Ext File Attributes   00000000 (0)\n+23DB9B Local Header Offset   001C71FA (1864186)\n+23DB9F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23BA5C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23DB9F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23BA81 CENTRAL HEADER #1750  02014B50 (33639248)\n-23BA85 Created Zip Spec      14 (20) '2.0'\n-23BA86 Created OS            00 (0) 'MS-DOS'\n-23BA87 Extract Zip Spec      14 (20) '2.0'\n-23BA88 Extract OS            00 (0) 'MS-DOS'\n-23BA89 General Purpose Flag  0808 (2056)\n+23DBDA CENTRAL HEADER #1750  02014B50 (33639248)\n+23DBDE Created Zip Spec      14 (20) '2.0'\n+23DBDF Created OS            00 (0) 'MS-DOS'\n+23DBE0 Extract Zip Spec      14 (20) '2.0'\n+23DBE1 Extract OS            00 (0) 'MS-DOS'\n+23DBE2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23BA8B Compression Method    0008 (8) 'Deflated'\n-23BA8D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23BA91 CRC                   68E206BA (1759643322)\n-23BA95 Compressed Size       00000573 (1395)\n-23BA99 Uncompressed Size     000013F7 (5111)\n-23BA9D Filename Length       0037 (55)\n-23BA9F Extra Length          0000 (0)\n-23BAA1 Comment Length        0000 (0)\n-23BAA3 Disk Start            0000 (0)\n-23BAA5 Int File Attributes   0000 (0)\n+23DBE4 Compression Method    0008 (8) 'Deflated'\n+23DBE6 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23DBEA CRC                   339C3654 (865875540)\n+23DBEE Compressed Size       00000C78 (3192)\n+23DBF2 Uncompressed Size     0000360D (13837)\n+23DBF6 Filename Length       0035 (53)\n+23DBF8 Extra Length          0000 (0)\n+23DBFA Comment Length        0000 (0)\n+23DBFC Disk Start            0000 (0)\n+23DBFE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23BAA7 Ext File Attributes   00000000 (0)\n-23BAAB Local Header Offset   001C3EF2 (1851122)\n-23BAAF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23DC00 Ext File Attributes   00000000 (0)\n+23DC04 Local Header Offset   001C7848 (1865800)\n+23DC08 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23BAAF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23DC08: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23BAE6 CENTRAL HEADER #1751  02014B50 (33639248)\n-23BAEA Created Zip Spec      14 (20) '2.0'\n-23BAEB Created OS            00 (0) 'MS-DOS'\n-23BAEC Extract Zip Spec      14 (20) '2.0'\n-23BAED Extract OS            00 (0) 'MS-DOS'\n-23BAEE General Purpose Flag  0808 (2056)\n+23DC3D CENTRAL HEADER #1751  02014B50 (33639248)\n+23DC41 Created Zip Spec      14 (20) '2.0'\n+23DC42 Created OS            00 (0) 'MS-DOS'\n+23DC43 Extract Zip Spec      14 (20) '2.0'\n+23DC44 Extract OS            00 (0) 'MS-DOS'\n+23DC45 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23BAF0 Compression Method    0008 (8) 'Deflated'\n-23BAF2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23BAF6 CRC                   00000000 (0)\n-23BAFA Compressed Size       00000002 (2)\n-23BAFE Uncompressed Size     00000000 (0)\n-23BB02 Filename Length       0024 (36)\n-23BB04 Extra Length          0000 (0)\n-23BB06 Comment Length        0000 (0)\n-23BB08 Disk Start            0000 (0)\n-23BB0A Int File Attributes   0000 (0)\n+23DC47 Compression Method    0008 (8) 'Deflated'\n+23DC49 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23DC4D CRC                   2E60A6BB (778086075)\n+23DC51 Compressed Size       00000589 (1417)\n+23DC55 Uncompressed Size     00000B99 (2969)\n+23DC59 Filename Length       003C (60)\n+23DC5B Extra Length          0000 (0)\n+23DC5D Comment Length        0000 (0)\n+23DC5F Disk Start            0000 (0)\n+23DC61 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23BB0C Ext File Attributes   00000000 (0)\n-23BB10 Local Header Offset   001C44CA (1852618)\n-23BB14 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23DC63 Ext File Attributes   00000000 (0)\n+23DC67 Local Header Offset   001C8523 (1869091)\n+23DC6B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23BB14: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23DC6B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23BB38 CENTRAL HEADER #1752  02014B50 (33639248)\n-23BB3C Created Zip Spec      14 (20) '2.0'\n-23BB3D Created OS            00 (0) 'MS-DOS'\n-23BB3E Extract Zip Spec      14 (20) '2.0'\n-23BB3F Extract OS            00 (0) 'MS-DOS'\n-23BB40 General Purpose Flag  0808 (2056)\n+23DCA7 CENTRAL HEADER #1752  02014B50 (33639248)\n+23DCAB Created Zip Spec      14 (20) '2.0'\n+23DCAC Created OS            00 (0) 'MS-DOS'\n+23DCAD Extract Zip Spec      14 (20) '2.0'\n+23DCAE Extract OS            00 (0) 'MS-DOS'\n+23DCAF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23BB42 Compression Method    0008 (8) 'Deflated'\n-23BB44 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23BB48 CRC                   00000000 (0)\n-23BB4C Compressed Size       00000002 (2)\n-23BB50 Uncompressed Size     00000000 (0)\n-23BB54 Filename Length       002C (44)\n-23BB56 Extra Length          0000 (0)\n-23BB58 Comment Length        0000 (0)\n-23BB5A Disk Start            0000 (0)\n-23BB5C Int File Attributes   0000 (0)\n+23DCB1 Compression Method    0008 (8) 'Deflated'\n+23DCB3 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23DCB7 CRC                   654FFB26 (1699740454)\n+23DCBB Compressed Size       00000731 (1841)\n+23DCBF Uncompressed Size     000012CA (4810)\n+23DCC3 Filename Length       003E (62)\n+23DCC5 Extra Length          0000 (0)\n+23DCC7 Comment Length        0000 (0)\n+23DCC9 Disk Start            0000 (0)\n+23DCCB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23BB5E Ext File Attributes   00000000 (0)\n-23BB62 Local Header Offset   001C451E (1852702)\n-23BB66 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23DCCD Ext File Attributes   00000000 (0)\n+23DCD1 Local Header Offset   001C8B16 (1870614)\n+23DCD5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23BB66: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23DCD5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23BB92 CENTRAL HEADER #1753  02014B50 (33639248)\n-23BB96 Created Zip Spec      14 (20) '2.0'\n-23BB97 Created OS            00 (0) 'MS-DOS'\n-23BB98 Extract Zip Spec      14 (20) '2.0'\n-23BB99 Extract OS            00 (0) 'MS-DOS'\n-23BB9A General Purpose Flag  0808 (2056)\n+23DD13 CENTRAL HEADER #1753  02014B50 (33639248)\n+23DD17 Created Zip Spec      14 (20) '2.0'\n+23DD18 Created OS            00 (0) 'MS-DOS'\n+23DD19 Extract Zip Spec      14 (20) '2.0'\n+23DD1A Extract OS            00 (0) 'MS-DOS'\n+23DD1B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23BB9C Compression Method    0008 (8) 'Deflated'\n-23BB9E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23BBA2 CRC                   CC53D052 (3428044882)\n-23BBA6 Compressed Size       00000225 (549)\n-23BBAA Uncompressed Size     000003D7 (983)\n-23BBAE Filename Length       003C (60)\n-23BBB0 Extra Length          0000 (0)\n-23BBB2 Comment Length        0000 (0)\n-23BBB4 Disk Start            0000 (0)\n-23BBB6 Int File Attributes   0000 (0)\n+23DD1D Compression Method    0008 (8) 'Deflated'\n+23DD1F Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23DD23 CRC                   1538A07E (356032638)\n+23DD27 Compressed Size       00000922 (2338)\n+23DD2B Uncompressed Size     00001ABD (6845)\n+23DD2F Filename Length       002F (47)\n+23DD31 Extra Length          0000 (0)\n+23DD33 Comment Length        0000 (0)\n+23DD35 Disk Start            0000 (0)\n+23DD37 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23BBB8 Ext File Attributes   00000000 (0)\n-23BBBC Local Header Offset   001C457A (1852794)\n-23BBC0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23DD39 Ext File Attributes   00000000 (0)\n+23DD3D Local Header Offset   001C92B3 (1872563)\n+23DD41 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23BBC0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23DD41: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23BBFC CENTRAL HEADER #1754  02014B50 (33639248)\n-23BC00 Created Zip Spec      14 (20) '2.0'\n-23BC01 Created OS            00 (0) 'MS-DOS'\n-23BC02 Extract Zip Spec      14 (20) '2.0'\n-23BC03 Extract OS            00 (0) 'MS-DOS'\n-23BC04 General Purpose Flag  0808 (2056)\n+23DD70 CENTRAL HEADER #1754  02014B50 (33639248)\n+23DD74 Created Zip Spec      14 (20) '2.0'\n+23DD75 Created OS            00 (0) 'MS-DOS'\n+23DD76 Extract Zip Spec      14 (20) '2.0'\n+23DD77 Extract OS            00 (0) 'MS-DOS'\n+23DD78 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23BC06 Compression Method    0008 (8) 'Deflated'\n-23BC08 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23BC0C CRC                   00000000 (0)\n-23BC10 Compressed Size       00000002 (2)\n-23BC14 Uncompressed Size     00000000 (0)\n-23BC18 Filename Length       0026 (38)\n-23BC1A Extra Length          0000 (0)\n-23BC1C Comment Length        0000 (0)\n-23BC1E Disk Start            0000 (0)\n-23BC20 Int File Attributes   0000 (0)\n+23DD7A Compression Method    0008 (8) 'Deflated'\n+23DD7C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23DD80 CRC                   CA63D3D1 (3395539921)\n+23DD84 Compressed Size       000003DE (990)\n+23DD88 Uncompressed Size     00000A30 (2608)\n+23DD8C Filename Length       0040 (64)\n+23DD8E Extra Length          0000 (0)\n+23DD90 Comment Length        0000 (0)\n+23DD92 Disk Start            0000 (0)\n+23DD94 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23BC22 Ext File Attributes   00000000 (0)\n-23BC26 Local Header Offset   001C4809 (1853449)\n-23BC2A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23DD96 Ext File Attributes   00000000 (0)\n+23DD9A Local Header Offset   001C9C32 (1874994)\n+23DD9E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23BC2A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23DD9E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23BC50 CENTRAL HEADER #1755  02014B50 (33639248)\n-23BC54 Created Zip Spec      14 (20) '2.0'\n-23BC55 Created OS            00 (0) 'MS-DOS'\n-23BC56 Extract Zip Spec      14 (20) '2.0'\n-23BC57 Extract OS            00 (0) 'MS-DOS'\n-23BC58 General Purpose Flag  0808 (2056)\n+23DDDE CENTRAL HEADER #1755  02014B50 (33639248)\n+23DDE2 Created Zip Spec      14 (20) '2.0'\n+23DDE3 Created OS            00 (0) 'MS-DOS'\n+23DDE4 Extract Zip Spec      14 (20) '2.0'\n+23DDE5 Extract OS            00 (0) 'MS-DOS'\n+23DDE6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23BC5A Compression Method    0008 (8) 'Deflated'\n-23BC5C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23BC60 CRC                   4A3ABC52 (1245363282)\n-23BC64 Compressed Size       00000225 (549)\n-23BC68 Uncompressed Size     000003DD (989)\n-23BC6C Filename Length       003D (61)\n-23BC6E Extra Length          0000 (0)\n-23BC70 Comment Length        0000 (0)\n-23BC72 Disk Start            0000 (0)\n-23BC74 Int File Attributes   0000 (0)\n+23DDE8 Compression Method    0008 (8) 'Deflated'\n+23DDEA Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23DDEE CRC                   12627859 (308443225)\n+23DDF2 Compressed Size       0000033C (828)\n+23DDF6 Uncompressed Size     00000705 (1797)\n+23DDFA Filename Length       0039 (57)\n+23DDFC Extra Length          0000 (0)\n+23DDFE Comment Length        0000 (0)\n+23DE00 Disk Start            0000 (0)\n+23DE02 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23BC76 Ext File Attributes   00000000 (0)\n-23BC7A Local Header Offset   001C485F (1853535)\n-23BC7E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23DE04 Ext File Attributes   00000000 (0)\n+23DE08 Local Header Offset   001CA07E (1876094)\n+23DE0C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23BC7E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23DE0C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23BCBB CENTRAL HEADER #1756  02014B50 (33639248)\n-23BCBF Created Zip Spec      14 (20) '2.0'\n-23BCC0 Created OS            00 (0) 'MS-DOS'\n-23BCC1 Extract Zip Spec      14 (20) '2.0'\n-23BCC2 Extract OS            00 (0) 'MS-DOS'\n-23BCC3 General Purpose Flag  0808 (2056)\n+23DE45 CENTRAL HEADER #1756  02014B50 (33639248)\n+23DE49 Created Zip Spec      14 (20) '2.0'\n+23DE4A Created OS            00 (0) 'MS-DOS'\n+23DE4B Extract Zip Spec      14 (20) '2.0'\n+23DE4C Extract OS            00 (0) 'MS-DOS'\n+23DE4D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23BCC5 Compression Method    0008 (8) 'Deflated'\n-23BCC7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23BCCB CRC                   00000000 (0)\n-23BCCF Compressed Size       00000002 (2)\n-23BCD3 Uncompressed Size     00000000 (0)\n-23BCD7 Filename Length       001E (30)\n-23BCD9 Extra Length          0000 (0)\n-23BCDB Comment Length        0000 (0)\n-23BCDD Disk Start            0000 (0)\n-23BCDF Int File Attributes   0000 (0)\n+23DE4F Compression Method    0008 (8) 'Deflated'\n+23DE51 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23DE55 CRC                   69B75EA9 (1773625001)\n+23DE59 Compressed Size       00000612 (1554)\n+23DE5D Uncompressed Size     00000E67 (3687)\n+23DE61 Filename Length       0034 (52)\n+23DE63 Extra Length          0000 (0)\n+23DE65 Comment Length        0000 (0)\n+23DE67 Disk Start            0000 (0)\n+23DE69 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23BCE1 Ext File Attributes   00000000 (0)\n-23BCE5 Local Header Offset   001C4AEF (1854191)\n-23BCE9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23DE6B Ext File Attributes   00000000 (0)\n+23DE6F Local Header Offset   001CA421 (1877025)\n+23DE73 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23BCE9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23DE73: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23BD07 CENTRAL HEADER #1757  02014B50 (33639248)\n-23BD0B Created Zip Spec      14 (20) '2.0'\n-23BD0C Created OS            00 (0) 'MS-DOS'\n-23BD0D Extract Zip Spec      14 (20) '2.0'\n-23BD0E Extract OS            00 (0) 'MS-DOS'\n-23BD0F General Purpose Flag  0808 (2056)\n+23DEA7 CENTRAL HEADER #1757  02014B50 (33639248)\n+23DEAB Created Zip Spec      14 (20) '2.0'\n+23DEAC Created OS            00 (0) 'MS-DOS'\n+23DEAD Extract Zip Spec      14 (20) '2.0'\n+23DEAE Extract OS            00 (0) 'MS-DOS'\n+23DEAF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23BD11 Compression Method    0008 (8) 'Deflated'\n-23BD13 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23BD17 CRC                   ECC626C6 (3972409030)\n-23BD1B Compressed Size       0000039C (924)\n-23BD1F Uncompressed Size     00000B01 (2817)\n-23BD23 Filename Length       002B (43)\n-23BD25 Extra Length          0000 (0)\n-23BD27 Comment Length        0000 (0)\n-23BD29 Disk Start            0000 (0)\n-23BD2B Int File Attributes   0000 (0)\n+23DEB1 Compression Method    0008 (8) 'Deflated'\n+23DEB3 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23DEB7 CRC                   6E56FB5B (1851194203)\n+23DEBB Compressed Size       000005CC (1484)\n+23DEBF Uncompressed Size     00000D09 (3337)\n+23DEC3 Filename Length       0033 (51)\n+23DEC5 Extra Length          0000 (0)\n+23DEC7 Comment Length        0000 (0)\n+23DEC9 Disk Start            0000 (0)\n+23DECB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23BD2D Ext File Attributes   00000000 (0)\n-23BD31 Local Header Offset   001C4B3D (1854269)\n-23BD35 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23DECD Ext File Attributes   00000000 (0)\n+23DED1 Local Header Offset   001CAA95 (1878677)\n+23DED5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23BD35: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23DED5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23BD60 CENTRAL HEADER #1758  02014B50 (33639248)\n-23BD64 Created Zip Spec      14 (20) '2.0'\n-23BD65 Created OS            00 (0) 'MS-DOS'\n-23BD66 Extract Zip Spec      14 (20) '2.0'\n-23BD67 Extract OS            00 (0) 'MS-DOS'\n-23BD68 General Purpose Flag  0808 (2056)\n+23DF08 CENTRAL HEADER #1758  02014B50 (33639248)\n+23DF0C Created Zip Spec      14 (20) '2.0'\n+23DF0D Created OS            00 (0) 'MS-DOS'\n+23DF0E Extract Zip Spec      14 (20) '2.0'\n+23DF0F Extract OS            00 (0) 'MS-DOS'\n+23DF10 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23BD6A Compression Method    0008 (8) 'Deflated'\n-23BD6C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23BD70 CRC                   00000000 (0)\n-23BD74 Compressed Size       00000002 (2)\n-23BD78 Uncompressed Size     00000000 (0)\n-23BD7C Filename Length       001D (29)\n-23BD7E Extra Length          0000 (0)\n-23BD80 Comment Length        0000 (0)\n-23BD82 Disk Start            0000 (0)\n-23BD84 Int File Attributes   0000 (0)\n+23DF12 Compression Method    0008 (8) 'Deflated'\n+23DF14 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23DF18 CRC                   812FC9F0 (2167392752)\n+23DF1C Compressed Size       00000589 (1417)\n+23DF20 Uncompressed Size     00000D20 (3360)\n+23DF24 Filename Length       003C (60)\n+23DF26 Extra Length          0000 (0)\n+23DF28 Comment Length        0000 (0)\n+23DF2A Disk Start            0000 (0)\n+23DF2C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23BD86 Ext File Attributes   00000000 (0)\n-23BD8A Local Header Offset   001C4F32 (1855282)\n-23BD8E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23DF2E Ext File Attributes   00000000 (0)\n+23DF32 Local Header Offset   001CB0C2 (1880258)\n+23DF36 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23BD8E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23DF36: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23BDAB CENTRAL HEADER #1759  02014B50 (33639248)\n-23BDAF Created Zip Spec      14 (20) '2.0'\n-23BDB0 Created OS            00 (0) 'MS-DOS'\n-23BDB1 Extract Zip Spec      14 (20) '2.0'\n-23BDB2 Extract OS            00 (0) 'MS-DOS'\n-23BDB3 General Purpose Flag  0808 (2056)\n+23DF72 CENTRAL HEADER #1759  02014B50 (33639248)\n+23DF76 Created Zip Spec      14 (20) '2.0'\n+23DF77 Created OS            00 (0) 'MS-DOS'\n+23DF78 Extract Zip Spec      14 (20) '2.0'\n+23DF79 Extract OS            00 (0) 'MS-DOS'\n+23DF7A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23BDB5 Compression Method    0008 (8) 'Deflated'\n-23BDB7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23BDBB CRC                   1456EFA1 (341241761)\n-23BDBF Compressed Size       00000213 (531)\n-23BDC3 Uncompressed Size     000003BB (955)\n-23BDC7 Filename Length       002C (44)\n-23BDC9 Extra Length          0000 (0)\n-23BDCB Comment Length        0000 (0)\n-23BDCD Disk Start            0000 (0)\n-23BDCF Int File Attributes   0000 (0)\n+23DF7C Compression Method    0008 (8) 'Deflated'\n+23DF7E Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23DF82 CRC                   52E473B9 (1390703545)\n+23DF86 Compressed Size       000007F9 (2041)\n+23DF8A Uncompressed Size     0000131F (4895)\n+23DF8E Filename Length       003E (62)\n+23DF90 Extra Length          0000 (0)\n+23DF92 Comment Length        0000 (0)\n+23DF94 Disk Start            0000 (0)\n+23DF96 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23BDD1 Ext File Attributes   00000000 (0)\n-23BDD5 Local Header Offset   001C4F7F (1855359)\n-23BDD9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23DF98 Ext File Attributes   00000000 (0)\n+23DF9C Local Header Offset   001CB6B5 (1881781)\n+23DFA0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23BDD9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23DFA0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23BE05 CENTRAL HEADER #1760  02014B50 (33639248)\n-23BE09 Created Zip Spec      14 (20) '2.0'\n-23BE0A Created OS            00 (0) 'MS-DOS'\n-23BE0B Extract Zip Spec      14 (20) '2.0'\n-23BE0C Extract OS            00 (0) 'MS-DOS'\n-23BE0D General Purpose Flag  0808 (2056)\n+23DFDE CENTRAL HEADER #1760  02014B50 (33639248)\n+23DFE2 Created Zip Spec      14 (20) '2.0'\n+23DFE3 Created OS            00 (0) 'MS-DOS'\n+23DFE4 Extract Zip Spec      14 (20) '2.0'\n+23DFE5 Extract OS            00 (0) 'MS-DOS'\n+23DFE6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23BE0F Compression Method    0008 (8) 'Deflated'\n-23BE11 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23BE15 CRC                   E92C073F (3911976767)\n-23BE19 Compressed Size       00000214 (532)\n-23BE1D Uncompressed Size     000003B9 (953)\n-23BE21 Filename Length       002B (43)\n-23BE23 Extra Length          0000 (0)\n-23BE25 Comment Length        0000 (0)\n-23BE27 Disk Start            0000 (0)\n-23BE29 Int File Attributes   0000 (0)\n+23DFE8 Compression Method    0008 (8) 'Deflated'\n+23DFEA Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23DFEE CRC                   DB2E2C1B (3677236251)\n+23DFF2 Compressed Size       00000578 (1400)\n+23DFF6 Uncompressed Size     00000B80 (2944)\n+23DFFA Filename Length       0039 (57)\n+23DFFC Extra Length          0000 (0)\n+23DFFE Comment Length        0000 (0)\n+23E000 Disk Start            0000 (0)\n+23E002 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23BE2B Ext File Attributes   00000000 (0)\n-23BE2F Local Header Offset   001C51EC (1855980)\n-23BE33 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E004 Ext File Attributes   00000000 (0)\n+23E008 Local Header Offset   001CBF1A (1883930)\n+23E00C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23BE33: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E00C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23BE5E CENTRAL HEADER #1761  02014B50 (33639248)\n-23BE62 Created Zip Spec      14 (20) '2.0'\n-23BE63 Created OS            00 (0) 'MS-DOS'\n-23BE64 Extract Zip Spec      14 (20) '2.0'\n-23BE65 Extract OS            00 (0) 'MS-DOS'\n-23BE66 General Purpose Flag  0808 (2056)\n+23E045 CENTRAL HEADER #1761  02014B50 (33639248)\n+23E049 Created Zip Spec      14 (20) '2.0'\n+23E04A Created OS            00 (0) 'MS-DOS'\n+23E04B Extract Zip Spec      14 (20) '2.0'\n+23E04C Extract OS            00 (0) 'MS-DOS'\n+23E04D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23BE68 Compression Method    0008 (8) 'Deflated'\n-23BE6A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23BE6E CRC                   00000000 (0)\n-23BE72 Compressed Size       00000002 (2)\n-23BE76 Uncompressed Size     00000000 (0)\n-23BE7A Filename Length       0010 (16)\n-23BE7C Extra Length          0000 (0)\n-23BE7E Comment Length        0000 (0)\n-23BE80 Disk Start            0000 (0)\n-23BE82 Int File Attributes   0000 (0)\n+23E04F Compression Method    0008 (8) 'Deflated'\n+23E051 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E055 CRC                   4654378B (1179924363)\n+23E059 Compressed Size       00000489 (1161)\n+23E05D Uncompressed Size     0000092E (2350)\n+23E061 Filename Length       0034 (52)\n+23E063 Extra Length          0000 (0)\n+23E065 Comment Length        0000 (0)\n+23E067 Disk Start            0000 (0)\n+23E069 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23BE84 Ext File Attributes   00000000 (0)\n-23BE88 Local Header Offset   001C5459 (1856601)\n-23BE8C Filename              'XXXXXXXXXXXXXXXX'\n+23E06B Ext File Attributes   00000000 (0)\n+23E06F Local Header Offset   001CC4F9 (1885433)\n+23E073 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23BE8C: Filename 'XXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E073: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23BE9C CENTRAL HEADER #1762  02014B50 (33639248)\n-23BEA0 Created Zip Spec      14 (20) '2.0'\n-23BEA1 Created OS            00 (0) 'MS-DOS'\n-23BEA2 Extract Zip Spec      14 (20) '2.0'\n-23BEA3 Extract OS            00 (0) 'MS-DOS'\n-23BEA4 General Purpose Flag  0808 (2056)\n+23E0A7 CENTRAL HEADER #1762  02014B50 (33639248)\n+23E0AB Created Zip Spec      14 (20) '2.0'\n+23E0AC Created OS            00 (0) 'MS-DOS'\n+23E0AD Extract Zip Spec      14 (20) '2.0'\n+23E0AE Extract OS            00 (0) 'MS-DOS'\n+23E0AF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23BEA6 Compression Method    0008 (8) 'Deflated'\n-23BEA8 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23BEAC CRC                   00000000 (0)\n-23BEB0 Compressed Size       00000002 (2)\n-23BEB4 Uncompressed Size     00000000 (0)\n-23BEB8 Filename Length       0017 (23)\n-23BEBA Extra Length          0000 (0)\n-23BEBC Comment Length        0000 (0)\n-23BEBE Disk Start            0000 (0)\n-23BEC0 Int File Attributes   0000 (0)\n+23E0B1 Compression Method    0008 (8) 'Deflated'\n+23E0B3 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E0B7 CRC                   7728EBEC (1999170540)\n+23E0BB Compressed Size       0000078F (1935)\n+23E0BF Uncompressed Size     000017BD (6077)\n+23E0C3 Filename Length       0030 (48)\n+23E0C5 Extra Length          0000 (0)\n+23E0C7 Comment Length        0000 (0)\n+23E0C9 Disk Start            0000 (0)\n+23E0CB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23BEC2 Ext File Attributes   00000000 (0)\n-23BEC6 Local Header Offset   001C5499 (1856665)\n-23BECA Filename              'XXXXXXXXXXXXXXXXXXXXXXX'\n+23E0CD Ext File Attributes   00000000 (0)\n+23E0D1 Local Header Offset   001CC9E4 (1886692)\n+23E0D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23BECA: Filename 'XXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E0D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23BEE1 CENTRAL HEADER #1763  02014B50 (33639248)\n-23BEE5 Created Zip Spec      14 (20) '2.0'\n-23BEE6 Created OS            00 (0) 'MS-DOS'\n-23BEE7 Extract Zip Spec      14 (20) '2.0'\n-23BEE8 Extract OS            00 (0) 'MS-DOS'\n-23BEE9 General Purpose Flag  0808 (2056)\n+23E105 CENTRAL HEADER #1763  02014B50 (33639248)\n+23E109 Created Zip Spec      14 (20) '2.0'\n+23E10A Created OS            00 (0) 'MS-DOS'\n+23E10B Extract Zip Spec      14 (20) '2.0'\n+23E10C Extract OS            00 (0) 'MS-DOS'\n+23E10D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23BEEB Compression Method    0008 (8) 'Deflated'\n-23BEED Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23BEF1 CRC                   00000000 (0)\n-23BEF5 Compressed Size       00000002 (2)\n-23BEF9 Uncompressed Size     00000000 (0)\n-23BEFD Filename Length       001F (31)\n-23BEFF Extra Length          0000 (0)\n-23BF01 Comment Length        0000 (0)\n-23BF03 Disk Start            0000 (0)\n-23BF05 Int File Attributes   0000 (0)\n+23E10F Compression Method    0008 (8) 'Deflated'\n+23E111 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E115 CRC                   60D7241E (1624712222)\n+23E119 Compressed Size       000008EA (2282)\n+23E11D Uncompressed Size     000016A3 (5795)\n+23E121 Filename Length       003D (61)\n+23E123 Extra Length          0000 (0)\n+23E125 Comment Length        0000 (0)\n+23E127 Disk Start            0000 (0)\n+23E129 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23BF07 Ext File Attributes   00000000 (0)\n-23BF0B Local Header Offset   001C54E0 (1856736)\n-23BF0F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E12B Ext File Attributes   00000000 (0)\n+23E12F Local Header Offset   001CD1D1 (1888721)\n+23E133 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23BF0F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E133: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23BF2E CENTRAL HEADER #1764  02014B50 (33639248)\n-23BF32 Created Zip Spec      14 (20) '2.0'\n-23BF33 Created OS            00 (0) 'MS-DOS'\n-23BF34 Extract Zip Spec      14 (20) '2.0'\n-23BF35 Extract OS            00 (0) 'MS-DOS'\n-23BF36 General Purpose Flag  0808 (2056)\n+23E170 CENTRAL HEADER #1764  02014B50 (33639248)\n+23E174 Created Zip Spec      14 (20) '2.0'\n+23E175 Created OS            00 (0) 'MS-DOS'\n+23E176 Extract Zip Spec      14 (20) '2.0'\n+23E177 Extract OS            00 (0) 'MS-DOS'\n+23E178 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23BF38 Compression Method    0008 (8) 'Deflated'\n-23BF3A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23BF3E CRC                   00000000 (0)\n-23BF42 Compressed Size       00000002 (2)\n-23BF46 Uncompressed Size     00000000 (0)\n-23BF4A Filename Length       0024 (36)\n-23BF4C Extra Length          0000 (0)\n-23BF4E Comment Length        0000 (0)\n-23BF50 Disk Start            0000 (0)\n-23BF52 Int File Attributes   0000 (0)\n+23E17A Compression Method    0008 (8) 'Deflated'\n+23E17C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E180 CRC                   00000000 (0)\n+23E184 Compressed Size       00000002 (2)\n+23E188 Uncompressed Size     00000000 (0)\n+23E18C Filename Length       0028 (40)\n+23E18E Extra Length          0000 (0)\n+23E190 Comment Length        0000 (0)\n+23E192 Disk Start            0000 (0)\n+23E194 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23BF54 Ext File Attributes   00000000 (0)\n-23BF58 Local Header Offset   001C552F (1856815)\n-23BF5C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E196 Ext File Attributes   00000000 (0)\n+23E19A Local Header Offset   001CDB26 (1891110)\n+23E19E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23BF5C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E19E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23BF80 CENTRAL HEADER #1765  02014B50 (33639248)\n-23BF84 Created Zip Spec      14 (20) '2.0'\n-23BF85 Created OS            00 (0) 'MS-DOS'\n-23BF86 Extract Zip Spec      14 (20) '2.0'\n-23BF87 Extract OS            00 (0) 'MS-DOS'\n-23BF88 General Purpose Flag  0808 (2056)\n+23E1C6 CENTRAL HEADER #1765  02014B50 (33639248)\n+23E1CA Created Zip Spec      14 (20) '2.0'\n+23E1CB Created OS            00 (0) 'MS-DOS'\n+23E1CC Extract Zip Spec      14 (20) '2.0'\n+23E1CD Extract OS            00 (0) 'MS-DOS'\n+23E1CE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23BF8A Compression Method    0008 (8) 'Deflated'\n-23BF8C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23BF90 CRC                   57AE068E (1471022734)\n-23BF94 Compressed Size       0000091E (2334)\n-23BF98 Uncompressed Size     00001AD7 (6871)\n-23BF9C Filename Length       0037 (55)\n-23BF9E Extra Length          0000 (0)\n-23BFA0 Comment Length        0000 (0)\n-23BFA2 Disk Start            0000 (0)\n-23BFA4 Int File Attributes   0000 (0)\n+23E1D0 Compression Method    0008 (8) 'Deflated'\n+23E1D2 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E1D6 CRC                   350B3EEE (889929454)\n+23E1DA Compressed Size       00000B76 (2934)\n+23E1DE Uncompressed Size     00002E9D (11933)\n+23E1E2 Filename Length       003B (59)\n+23E1E4 Extra Length          0000 (0)\n+23E1E6 Comment Length        0000 (0)\n+23E1E8 Disk Start            0000 (0)\n+23E1EA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23BFA6 Ext File Attributes   00000000 (0)\n-23BFAA Local Header Offset   001C5583 (1856899)\n-23BFAE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E1EC Ext File Attributes   00000000 (0)\n+23E1F0 Local Header Offset   001CDB7E (1891198)\n+23E1F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23BFAE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E1F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23BFE5 CENTRAL HEADER #1766  02014B50 (33639248)\n-23BFE9 Created Zip Spec      14 (20) '2.0'\n-23BFEA Created OS            00 (0) 'MS-DOS'\n-23BFEB Extract Zip Spec      14 (20) '2.0'\n-23BFEC Extract OS            00 (0) 'MS-DOS'\n-23BFED General Purpose Flag  0808 (2056)\n+23E22F CENTRAL HEADER #1766  02014B50 (33639248)\n+23E233 Created Zip Spec      14 (20) '2.0'\n+23E234 Created OS            00 (0) 'MS-DOS'\n+23E235 Extract Zip Spec      14 (20) '2.0'\n+23E236 Extract OS            00 (0) 'MS-DOS'\n+23E237 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23BFEF Compression Method    0008 (8) 'Deflated'\n-23BFF1 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23BFF5 CRC                   00000000 (0)\n-23BFF9 Compressed Size       00000002 (2)\n-23BFFD Uncompressed Size     00000000 (0)\n-23C001 Filename Length       0022 (34)\n-23C003 Extra Length          0000 (0)\n-23C005 Comment Length        0000 (0)\n-23C007 Disk Start            0000 (0)\n-23C009 Int File Attributes   0000 (0)\n+23E239 Compression Method    0008 (8) 'Deflated'\n+23E23B Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E23F CRC                   0C426FFB (205680635)\n+23E243 Compressed Size       00000384 (900)\n+23E247 Uncompressed Size     000008A9 (2217)\n+23E24B Filename Length       003C (60)\n+23E24D Extra Length          0000 (0)\n+23E24F Comment Length        0000 (0)\n+23E251 Disk Start            0000 (0)\n+23E253 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C00B Ext File Attributes   00000000 (0)\n-23C00F Local Header Offset   001C5F06 (1859334)\n-23C013 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E255 Ext File Attributes   00000000 (0)\n+23E259 Local Header Offset   001CE75D (1894237)\n+23E25D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C013: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E25D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C035 CENTRAL HEADER #1767  02014B50 (33639248)\n-23C039 Created Zip Spec      14 (20) '2.0'\n-23C03A Created OS            00 (0) 'MS-DOS'\n-23C03B Extract Zip Spec      14 (20) '2.0'\n-23C03C Extract OS            00 (0) 'MS-DOS'\n-23C03D General Purpose Flag  0808 (2056)\n+23E299 CENTRAL HEADER #1767  02014B50 (33639248)\n+23E29D Created Zip Spec      14 (20) '2.0'\n+23E29E Created OS            00 (0) 'MS-DOS'\n+23E29F Extract Zip Spec      14 (20) '2.0'\n+23E2A0 Extract OS            00 (0) 'MS-DOS'\n+23E2A1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C03F Compression Method    0008 (8) 'Deflated'\n-23C041 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C045 CRC                   00000000 (0)\n-23C049 Compressed Size       00000002 (2)\n-23C04D Uncompressed Size     00000000 (0)\n-23C051 Filename Length       0028 (40)\n-23C053 Extra Length          0000 (0)\n-23C055 Comment Length        0000 (0)\n-23C057 Disk Start            0000 (0)\n-23C059 Int File Attributes   0000 (0)\n+23E2A3 Compression Method    0008 (8) 'Deflated'\n+23E2A5 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E2A9 CRC                   A4C4918F (2764345743)\n+23E2AD Compressed Size       0000035F (863)\n+23E2B1 Uncompressed Size     00000803 (2051)\n+23E2B5 Filename Length       0041 (65)\n+23E2B7 Extra Length          0000 (0)\n+23E2B9 Comment Length        0000 (0)\n+23E2BB Disk Start            0000 (0)\n+23E2BD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C05B Ext File Attributes   00000000 (0)\n-23C05F Local Header Offset   001C5F58 (1859416)\n-23C063 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E2BF Ext File Attributes   00000000 (0)\n+23E2C3 Local Header Offset   001CEB4B (1895243)\n+23E2C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C063: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E2C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C08B CENTRAL HEADER #1768  02014B50 (33639248)\n-23C08F Created Zip Spec      14 (20) '2.0'\n-23C090 Created OS            00 (0) 'MS-DOS'\n-23C091 Extract Zip Spec      14 (20) '2.0'\n-23C092 Extract OS            00 (0) 'MS-DOS'\n-23C093 General Purpose Flag  0808 (2056)\n+23E308 CENTRAL HEADER #1768  02014B50 (33639248)\n+23E30C Created Zip Spec      14 (20) '2.0'\n+23E30D Created OS            00 (0) 'MS-DOS'\n+23E30E Extract Zip Spec      14 (20) '2.0'\n+23E30F Extract OS            00 (0) 'MS-DOS'\n+23E310 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C095 Compression Method    0008 (8) 'Deflated'\n-23C097 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C09B CRC                   F75A753A (4149900602)\n-23C09F Compressed Size       0000035F (863)\n-23C0A3 Uncompressed Size     0000079E (1950)\n-23C0A7 Filename Length       003B (59)\n-23C0A9 Extra Length          0000 (0)\n-23C0AB Comment Length        0000 (0)\n-23C0AD Disk Start            0000 (0)\n-23C0AF Int File Attributes   0000 (0)\n+23E312 Compression Method    0008 (8) 'Deflated'\n+23E314 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E318 CRC                   DD24EE95 (3710185109)\n+23E31C Compressed Size       00000686 (1670)\n+23E320 Uncompressed Size     00001008 (4104)\n+23E324 Filename Length       003E (62)\n+23E326 Extra Length          0000 (0)\n+23E328 Comment Length        0000 (0)\n+23E32A Disk Start            0000 (0)\n+23E32C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C0B1 Ext File Attributes   00000000 (0)\n-23C0B5 Local Header Offset   001C5FB0 (1859504)\n-23C0B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E32E Ext File Attributes   00000000 (0)\n+23E332 Local Header Offset   001CEF19 (1896217)\n+23E336 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C0B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E336: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C0F4 CENTRAL HEADER #1769  02014B50 (33639248)\n-23C0F8 Created Zip Spec      14 (20) '2.0'\n-23C0F9 Created OS            00 (0) 'MS-DOS'\n-23C0FA Extract Zip Spec      14 (20) '2.0'\n-23C0FB Extract OS            00 (0) 'MS-DOS'\n-23C0FC General Purpose Flag  0808 (2056)\n+23E374 CENTRAL HEADER #1769  02014B50 (33639248)\n+23E378 Created Zip Spec      14 (20) '2.0'\n+23E379 Created OS            00 (0) 'MS-DOS'\n+23E37A Extract Zip Spec      14 (20) '2.0'\n+23E37B Extract OS            00 (0) 'MS-DOS'\n+23E37C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C0FE Compression Method    0008 (8) 'Deflated'\n-23C100 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C104 CRC                   4D63953A (1298371898)\n-23C108 Compressed Size       0000036F (879)\n-23C10C Uncompressed Size     0000081B (2075)\n-23C110 Filename Length       003C (60)\n-23C112 Extra Length          0000 (0)\n-23C114 Comment Length        0000 (0)\n-23C116 Disk Start            0000 (0)\n-23C118 Int File Attributes   0000 (0)\n+23E37E Compression Method    0008 (8) 'Deflated'\n+23E380 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E384 CRC                   723EDDAE (1916722606)\n+23E388 Compressed Size       000006E6 (1766)\n+23E38C Uncompressed Size     0000110C (4364)\n+23E390 Filename Length       0037 (55)\n+23E392 Extra Length          0000 (0)\n+23E394 Comment Length        0000 (0)\n+23E396 Disk Start            0000 (0)\n+23E398 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C11A Ext File Attributes   00000000 (0)\n-23C11E Local Header Offset   001C6378 (1860472)\n-23C122 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E39A Ext File Attributes   00000000 (0)\n+23E39E Local Header Offset   001CF60B (1897995)\n+23E3A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C122: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E3A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C15E CENTRAL HEADER #1770  02014B50 (33639248)\n-23C162 Created Zip Spec      14 (20) '2.0'\n-23C163 Created OS            00 (0) 'MS-DOS'\n-23C164 Extract Zip Spec      14 (20) '2.0'\n-23C165 Extract OS            00 (0) 'MS-DOS'\n-23C166 General Purpose Flag  0808 (2056)\n+23E3D9 CENTRAL HEADER #1770  02014B50 (33639248)\n+23E3DD Created Zip Spec      14 (20) '2.0'\n+23E3DE Created OS            00 (0) 'MS-DOS'\n+23E3DF Extract Zip Spec      14 (20) '2.0'\n+23E3E0 Extract OS            00 (0) 'MS-DOS'\n+23E3E1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C168 Compression Method    0008 (8) 'Deflated'\n-23C16A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C16E CRC                   D08B9F5C (3498811228)\n-23C172 Compressed Size       00000526 (1318)\n-23C176 Uncompressed Size     00000A60 (2656)\n-23C17A Filename Length       0037 (55)\n-23C17C Extra Length          0000 (0)\n-23C17E Comment Length        0000 (0)\n-23C180 Disk Start            0000 (0)\n-23C182 Int File Attributes   0000 (0)\n+23E3E3 Compression Method    0008 (8) 'Deflated'\n+23E3E5 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E3E9 CRC                   1BE0DE32 (467721778)\n+23E3ED Compressed Size       00000AEC (2796)\n+23E3F1 Uncompressed Size     00002352 (9042)\n+23E3F5 Filename Length       0037 (55)\n+23E3F7 Extra Length          0000 (0)\n+23E3F9 Comment Length        0000 (0)\n+23E3FB Disk Start            0000 (0)\n+23E3FD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C184 Ext File Attributes   00000000 (0)\n-23C188 Local Header Offset   001C6751 (1861457)\n-23C18C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E3FF Ext File Attributes   00000000 (0)\n+23E403 Local Header Offset   001CFD56 (1899862)\n+23E407 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C18C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E407: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C1C3 CENTRAL HEADER #1771  02014B50 (33639248)\n-23C1C7 Created Zip Spec      14 (20) '2.0'\n-23C1C8 Created OS            00 (0) 'MS-DOS'\n-23C1C9 Extract Zip Spec      14 (20) '2.0'\n-23C1CA Extract OS            00 (0) 'MS-DOS'\n-23C1CB General Purpose Flag  0808 (2056)\n+23E43E CENTRAL HEADER #1771  02014B50 (33639248)\n+23E442 Created Zip Spec      14 (20) '2.0'\n+23E443 Created OS            00 (0) 'MS-DOS'\n+23E444 Extract Zip Spec      14 (20) '2.0'\n+23E445 Extract OS            00 (0) 'MS-DOS'\n+23E446 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C1CD Compression Method    0008 (8) 'Deflated'\n-23C1CF Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C1D3 CRC                   CC968FE2 (3432419298)\n-23C1D7 Compressed Size       00000742 (1858)\n-23C1DB Uncompressed Size     00001758 (5976)\n-23C1DF Filename Length       0038 (56)\n-23C1E1 Extra Length          0000 (0)\n-23C1E3 Comment Length        0000 (0)\n-23C1E5 Disk Start            0000 (0)\n-23C1E7 Int File Attributes   0000 (0)\n+23E448 Compression Method    0008 (8) 'Deflated'\n+23E44A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E44E CRC                   56DBC793 (1457244051)\n+23E452 Compressed Size       00000595 (1429)\n+23E456 Uncompressed Size     00000C79 (3193)\n+23E45A Filename Length       0036 (54)\n+23E45C Extra Length          0000 (0)\n+23E45E Comment Length        0000 (0)\n+23E460 Disk Start            0000 (0)\n+23E462 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C1E9 Ext File Attributes   00000000 (0)\n-23C1ED Local Header Offset   001C6CDC (1862876)\n-23C1F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E464 Ext File Attributes   00000000 (0)\n+23E468 Local Header Offset   001D08A7 (1902759)\n+23E46C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C1F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E46C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C229 CENTRAL HEADER #1772  02014B50 (33639248)\n-23C22D Created Zip Spec      14 (20) '2.0'\n-23C22E Created OS            00 (0) 'MS-DOS'\n-23C22F Extract Zip Spec      14 (20) '2.0'\n-23C230 Extract OS            00 (0) 'MS-DOS'\n-23C231 General Purpose Flag  0808 (2056)\n+23E4A2 CENTRAL HEADER #1772  02014B50 (33639248)\n+23E4A6 Created Zip Spec      14 (20) '2.0'\n+23E4A7 Created OS            00 (0) 'MS-DOS'\n+23E4A8 Extract Zip Spec      14 (20) '2.0'\n+23E4A9 Extract OS            00 (0) 'MS-DOS'\n+23E4AA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C233 Compression Method    0008 (8) 'Deflated'\n-23C235 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C239 CRC                   1549C790 (357156752)\n-23C23D Compressed Size       00000711 (1809)\n-23C241 Uncompressed Size     000014F8 (5368)\n-23C245 Filename Length       003D (61)\n-23C247 Extra Length          0000 (0)\n-23C249 Comment Length        0000 (0)\n-23C24B Disk Start            0000 (0)\n-23C24D Int File Attributes   0000 (0)\n+23E4AC Compression Method    0008 (8) 'Deflated'\n+23E4AE Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E4B2 CRC                   D0079E8D (3490160269)\n+23E4B6 Compressed Size       00000619 (1561)\n+23E4BA Uncompressed Size     00000D8D (3469)\n+23E4BE Filename Length       003B (59)\n+23E4C0 Extra Length          0000 (0)\n+23E4C2 Comment Length        0000 (0)\n+23E4C4 Disk Start            0000 (0)\n+23E4C6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C24F Ext File Attributes   00000000 (0)\n-23C253 Local Header Offset   001C7484 (1864836)\n-23C257 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E4C8 Ext File Attributes   00000000 (0)\n+23E4CC Local Header Offset   001D0EA0 (1904288)\n+23E4D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C257: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E4D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C294 CENTRAL HEADER #1773  02014B50 (33639248)\n-23C298 Created Zip Spec      14 (20) '2.0'\n-23C299 Created OS            00 (0) 'MS-DOS'\n-23C29A Extract Zip Spec      14 (20) '2.0'\n-23C29B Extract OS            00 (0) 'MS-DOS'\n-23C29C General Purpose Flag  0808 (2056)\n+23E50B CENTRAL HEADER #1773  02014B50 (33639248)\n+23E50F Created Zip Spec      14 (20) '2.0'\n+23E510 Created OS            00 (0) 'MS-DOS'\n+23E511 Extract Zip Spec      14 (20) '2.0'\n+23E512 Extract OS            00 (0) 'MS-DOS'\n+23E513 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C29E Compression Method    0008 (8) 'Deflated'\n-23C2A0 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C2A4 CRC                   764B1E75 (1984634485)\n-23C2A8 Compressed Size       000002B8 (696)\n-23C2AC Uncompressed Size     0000054F (1359)\n-23C2B0 Filename Length       0035 (53)\n-23C2B2 Extra Length          0000 (0)\n-23C2B4 Comment Length        0000 (0)\n-23C2B6 Disk Start            0000 (0)\n-23C2B8 Int File Attributes   0000 (0)\n+23E515 Compression Method    0008 (8) 'Deflated'\n+23E517 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E51B CRC                   77DBD9E2 (2010896866)\n+23E51F Compressed Size       00000512 (1298)\n+23E523 Uncompressed Size     00000A68 (2664)\n+23E527 Filename Length       003E (62)\n+23E529 Extra Length          0000 (0)\n+23E52B Comment Length        0000 (0)\n+23E52D Disk Start            0000 (0)\n+23E52F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C2BA Ext File Attributes   00000000 (0)\n-23C2BE Local Header Offset   001C7C00 (1866752)\n-23C2C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E531 Ext File Attributes   00000000 (0)\n+23E535 Local Header Offset   001D1522 (1905954)\n+23E539 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C2C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E539: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C2F7 CENTRAL HEADER #1774  02014B50 (33639248)\n-23C2FB Created Zip Spec      14 (20) '2.0'\n-23C2FC Created OS            00 (0) 'MS-DOS'\n-23C2FD Extract Zip Spec      14 (20) '2.0'\n-23C2FE Extract OS            00 (0) 'MS-DOS'\n-23C2FF General Purpose Flag  0808 (2056)\n+23E577 CENTRAL HEADER #1774  02014B50 (33639248)\n+23E57B Created Zip Spec      14 (20) '2.0'\n+23E57C Created OS            00 (0) 'MS-DOS'\n+23E57D Extract Zip Spec      14 (20) '2.0'\n+23E57E Extract OS            00 (0) 'MS-DOS'\n+23E57F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C301 Compression Method    0008 (8) 'Deflated'\n-23C303 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C307 CRC                   9EFE4E67 (2667466343)\n-23C30B Compressed Size       000005E5 (1509)\n-23C30F Uncompressed Size     00000EDF (3807)\n-23C313 Filename Length       003B (59)\n-23C315 Extra Length          0000 (0)\n-23C317 Comment Length        0000 (0)\n-23C319 Disk Start            0000 (0)\n-23C31B Int File Attributes   0000 (0)\n+23E581 Compression Method    0008 (8) 'Deflated'\n+23E583 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E587 CRC                   C66F6586 (3329189254)\n+23E58B Compressed Size       000004BB (1211)\n+23E58F Uncompressed Size     0000098F (2447)\n+23E593 Filename Length       0036 (54)\n+23E595 Extra Length          0000 (0)\n+23E597 Comment Length        0000 (0)\n+23E599 Disk Start            0000 (0)\n+23E59B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C31D Ext File Attributes   00000000 (0)\n-23C321 Local Header Offset   001C7F1B (1867547)\n-23C325 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E59D Ext File Attributes   00000000 (0)\n+23E5A1 Local Header Offset   001D1AA0 (1907360)\n+23E5A5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C325: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E5A5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C360 CENTRAL HEADER #1775  02014B50 (33639248)\n-23C364 Created Zip Spec      14 (20) '2.0'\n-23C365 Created OS            00 (0) 'MS-DOS'\n-23C366 Extract Zip Spec      14 (20) '2.0'\n-23C367 Extract OS            00 (0) 'MS-DOS'\n-23C368 General Purpose Flag  0808 (2056)\n+23E5DB CENTRAL HEADER #1775  02014B50 (33639248)\n+23E5DF Created Zip Spec      14 (20) '2.0'\n+23E5E0 Created OS            00 (0) 'MS-DOS'\n+23E5E1 Extract Zip Spec      14 (20) '2.0'\n+23E5E2 Extract OS            00 (0) 'MS-DOS'\n+23E5E3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C36A Compression Method    0008 (8) 'Deflated'\n-23C36C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C370 CRC                   339C3654 (865875540)\n-23C374 Compressed Size       00000C78 (3192)\n-23C378 Uncompressed Size     0000360D (13837)\n-23C37C Filename Length       0035 (53)\n-23C37E Extra Length          0000 (0)\n-23C380 Comment Length        0000 (0)\n-23C382 Disk Start            0000 (0)\n-23C384 Int File Attributes   0000 (0)\n+23E5E5 Compression Method    0008 (8) 'Deflated'\n+23E5E7 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E5EB CRC                   CB19F474 (3407475828)\n+23E5EF Compressed Size       000004FC (1276)\n+23E5F3 Uncompressed Size     00000B41 (2881)\n+23E5F7 Filename Length       0034 (52)\n+23E5F9 Extra Length          0000 (0)\n+23E5FB Comment Length        0000 (0)\n+23E5FD Disk Start            0000 (0)\n+23E5FF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C386 Ext File Attributes   00000000 (0)\n-23C38A Local Header Offset   001C8569 (1869161)\n-23C38E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E601 Ext File Attributes   00000000 (0)\n+23E605 Local Header Offset   001D1FBF (1908671)\n+23E609 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C38E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E609: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C3C3 CENTRAL HEADER #1776  02014B50 (33639248)\n-23C3C7 Created Zip Spec      14 (20) '2.0'\n-23C3C8 Created OS            00 (0) 'MS-DOS'\n-23C3C9 Extract Zip Spec      14 (20) '2.0'\n-23C3CA Extract OS            00 (0) 'MS-DOS'\n-23C3CB General Purpose Flag  0808 (2056)\n+23E63D CENTRAL HEADER #1776  02014B50 (33639248)\n+23E641 Created Zip Spec      14 (20) '2.0'\n+23E642 Created OS            00 (0) 'MS-DOS'\n+23E643 Extract Zip Spec      14 (20) '2.0'\n+23E644 Extract OS            00 (0) 'MS-DOS'\n+23E645 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C3CD Compression Method    0008 (8) 'Deflated'\n-23C3CF Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C3D3 CRC                   2E60A6BB (778086075)\n-23C3D7 Compressed Size       00000589 (1417)\n-23C3DB Uncompressed Size     00000B99 (2969)\n-23C3DF Filename Length       003C (60)\n-23C3E1 Extra Length          0000 (0)\n-23C3E3 Comment Length        0000 (0)\n-23C3E5 Disk Start            0000 (0)\n-23C3E7 Int File Attributes   0000 (0)\n+23E647 Compression Method    0008 (8) 'Deflated'\n+23E649 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E64D CRC                   FE2BC051 (4264280145)\n+23E651 Compressed Size       00000BE4 (3044)\n+23E655 Uncompressed Size     00002F6C (12140)\n+23E659 Filename Length       003A (58)\n+23E65B Extra Length          0000 (0)\n+23E65D Comment Length        0000 (0)\n+23E65F Disk Start            0000 (0)\n+23E661 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C3E9 Ext File Attributes   00000000 (0)\n-23C3ED Local Header Offset   001C9244 (1872452)\n-23C3F1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E663 Ext File Attributes   00000000 (0)\n+23E667 Local Header Offset   001D251D (1910045)\n+23E66B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C3F1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E66B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C42D CENTRAL HEADER #1777  02014B50 (33639248)\n-23C431 Created Zip Spec      14 (20) '2.0'\n-23C432 Created OS            00 (0) 'MS-DOS'\n-23C433 Extract Zip Spec      14 (20) '2.0'\n-23C434 Extract OS            00 (0) 'MS-DOS'\n-23C435 General Purpose Flag  0808 (2056)\n+23E6A5 CENTRAL HEADER #1777  02014B50 (33639248)\n+23E6A9 Created Zip Spec      14 (20) '2.0'\n+23E6AA Created OS            00 (0) 'MS-DOS'\n+23E6AB Extract Zip Spec      14 (20) '2.0'\n+23E6AC Extract OS            00 (0) 'MS-DOS'\n+23E6AD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C437 Compression Method    0008 (8) 'Deflated'\n-23C439 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C43D CRC                   654FFB26 (1699740454)\n-23C441 Compressed Size       00000731 (1841)\n-23C445 Uncompressed Size     000012CA (4810)\n-23C449 Filename Length       003E (62)\n-23C44B Extra Length          0000 (0)\n-23C44D Comment Length        0000 (0)\n-23C44F Disk Start            0000 (0)\n-23C451 Int File Attributes   0000 (0)\n+23E6AF Compression Method    0008 (8) 'Deflated'\n+23E6B1 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E6B5 CRC                   28964A03 (680937987)\n+23E6B9 Compressed Size       0000036B (875)\n+23E6BD Uncompressed Size     0000080F (2063)\n+23E6C1 Filename Length       0039 (57)\n+23E6C3 Extra Length          0000 (0)\n+23E6C5 Comment Length        0000 (0)\n+23E6C7 Disk Start            0000 (0)\n+23E6C9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C453 Ext File Attributes   00000000 (0)\n-23C457 Local Header Offset   001C9837 (1873975)\n-23C45B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E6CB Ext File Attributes   00000000 (0)\n+23E6CF Local Header Offset   001D3169 (1913193)\n+23E6D3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C45B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E6D3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C499 CENTRAL HEADER #1778  02014B50 (33639248)\n-23C49D Created Zip Spec      14 (20) '2.0'\n-23C49E Created OS            00 (0) 'MS-DOS'\n-23C49F Extract Zip Spec      14 (20) '2.0'\n-23C4A0 Extract OS            00 (0) 'MS-DOS'\n-23C4A1 General Purpose Flag  0808 (2056)\n+23E70C CENTRAL HEADER #1778  02014B50 (33639248)\n+23E710 Created Zip Spec      14 (20) '2.0'\n+23E711 Created OS            00 (0) 'MS-DOS'\n+23E712 Extract Zip Spec      14 (20) '2.0'\n+23E713 Extract OS            00 (0) 'MS-DOS'\n+23E714 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C4A3 Compression Method    0008 (8) 'Deflated'\n-23C4A5 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C4A9 CRC                   1538A07E (356032638)\n-23C4AD Compressed Size       00000922 (2338)\n-23C4B1 Uncompressed Size     00001ABD (6845)\n-23C4B5 Filename Length       002F (47)\n-23C4B7 Extra Length          0000 (0)\n-23C4B9 Comment Length        0000 (0)\n-23C4BB Disk Start            0000 (0)\n-23C4BD Int File Attributes   0000 (0)\n+23E716 Compression Method    0008 (8) 'Deflated'\n+23E718 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E71C CRC                   8696E439 (2258035769)\n+23E720 Compressed Size       00000361 (865)\n+23E724 Uncompressed Size     000007F5 (2037)\n+23E728 Filename Length       003D (61)\n+23E72A Extra Length          0000 (0)\n+23E72C Comment Length        0000 (0)\n+23E72E Disk Start            0000 (0)\n+23E730 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C4BF Ext File Attributes   00000000 (0)\n-23C4C3 Local Header Offset   001C9FD4 (1875924)\n-23C4C7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E732 Ext File Attributes   00000000 (0)\n+23E736 Local Header Offset   001D353B (1914171)\n+23E73A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C4C7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E73A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C4F6 CENTRAL HEADER #1779  02014B50 (33639248)\n-23C4FA Created Zip Spec      14 (20) '2.0'\n-23C4FB Created OS            00 (0) 'MS-DOS'\n-23C4FC Extract Zip Spec      14 (20) '2.0'\n-23C4FD Extract OS            00 (0) 'MS-DOS'\n-23C4FE General Purpose Flag  0808 (2056)\n+23E777 CENTRAL HEADER #1779  02014B50 (33639248)\n+23E77B Created Zip Spec      14 (20) '2.0'\n+23E77C Created OS            00 (0) 'MS-DOS'\n+23E77D Extract Zip Spec      14 (20) '2.0'\n+23E77E Extract OS            00 (0) 'MS-DOS'\n+23E77F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C500 Compression Method    0008 (8) 'Deflated'\n-23C502 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C506 CRC                   CA63D3D1 (3395539921)\n-23C50A Compressed Size       000003DE (990)\n-23C50E Uncompressed Size     00000A30 (2608)\n-23C512 Filename Length       0040 (64)\n-23C514 Extra Length          0000 (0)\n-23C516 Comment Length        0000 (0)\n-23C518 Disk Start            0000 (0)\n-23C51A Int File Attributes   0000 (0)\n+23E781 Compression Method    0008 (8) 'Deflated'\n+23E783 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E787 CRC                   AC539B8F (2891160463)\n+23E78B Compressed Size       000004EC (1260)\n+23E78F Uncompressed Size     00000A07 (2567)\n+23E793 Filename Length       003C (60)\n+23E795 Extra Length          0000 (0)\n+23E797 Comment Length        0000 (0)\n+23E799 Disk Start            0000 (0)\n+23E79B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C51C Ext File Attributes   00000000 (0)\n-23C520 Local Header Offset   001CA953 (1878355)\n-23C524 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E79D Ext File Attributes   00000000 (0)\n+23E7A1 Local Header Offset   001D3907 (1915143)\n+23E7A5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C524: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E7A5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C564 CENTRAL HEADER #1780  02014B50 (33639248)\n-23C568 Created Zip Spec      14 (20) '2.0'\n-23C569 Created OS            00 (0) 'MS-DOS'\n-23C56A Extract Zip Spec      14 (20) '2.0'\n-23C56B Extract OS            00 (0) 'MS-DOS'\n-23C56C General Purpose Flag  0808 (2056)\n+23E7E1 CENTRAL HEADER #1780  02014B50 (33639248)\n+23E7E5 Created Zip Spec      14 (20) '2.0'\n+23E7E6 Created OS            00 (0) 'MS-DOS'\n+23E7E7 Extract Zip Spec      14 (20) '2.0'\n+23E7E8 Extract OS            00 (0) 'MS-DOS'\n+23E7E9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C56E Compression Method    0008 (8) 'Deflated'\n-23C570 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C574 CRC                   12627859 (308443225)\n-23C578 Compressed Size       0000033C (828)\n-23C57C Uncompressed Size     00000705 (1797)\n-23C580 Filename Length       0039 (57)\n-23C582 Extra Length          0000 (0)\n-23C584 Comment Length        0000 (0)\n-23C586 Disk Start            0000 (0)\n-23C588 Int File Attributes   0000 (0)\n+23E7EB Compression Method    0008 (8) 'Deflated'\n+23E7ED Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E7F1 CRC                   FF195881 (4279851137)\n+23E7F5 Compressed Size       000006FF (1791)\n+23E7F9 Uncompressed Size     00001388 (5000)\n+23E7FD Filename Length       003D (61)\n+23E7FF Extra Length          0000 (0)\n+23E801 Comment Length        0000 (0)\n+23E803 Disk Start            0000 (0)\n+23E805 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C58A Ext File Attributes   00000000 (0)\n-23C58E Local Header Offset   001CAD9F (1879455)\n-23C592 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E807 Ext File Attributes   00000000 (0)\n+23E80B Local Header Offset   001D3E5D (1916509)\n+23E80F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C592: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E80F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C5CB CENTRAL HEADER #1781  02014B50 (33639248)\n-23C5CF Created Zip Spec      14 (20) '2.0'\n-23C5D0 Created OS            00 (0) 'MS-DOS'\n-23C5D1 Extract Zip Spec      14 (20) '2.0'\n-23C5D2 Extract OS            00 (0) 'MS-DOS'\n-23C5D3 General Purpose Flag  0808 (2056)\n+23E84C CENTRAL HEADER #1781  02014B50 (33639248)\n+23E850 Created Zip Spec      14 (20) '2.0'\n+23E851 Created OS            00 (0) 'MS-DOS'\n+23E852 Extract Zip Spec      14 (20) '2.0'\n+23E853 Extract OS            00 (0) 'MS-DOS'\n+23E854 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C5D5 Compression Method    0008 (8) 'Deflated'\n-23C5D7 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C5DB CRC                   69B75EA9 (1773625001)\n-23C5DF Compressed Size       00000612 (1554)\n-23C5E3 Uncompressed Size     00000E67 (3687)\n-23C5E7 Filename Length       0034 (52)\n-23C5E9 Extra Length          0000 (0)\n-23C5EB Comment Length        0000 (0)\n-23C5ED Disk Start            0000 (0)\n-23C5EF Int File Attributes   0000 (0)\n+23E856 Compression Method    0008 (8) 'Deflated'\n+23E858 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E85C CRC                   EF9589B0 (4019554736)\n+23E860 Compressed Size       00000569 (1385)\n+23E864 Uncompressed Size     00000B3F (2879)\n+23E868 Filename Length       003E (62)\n+23E86A Extra Length          0000 (0)\n+23E86C Comment Length        0000 (0)\n+23E86E Disk Start            0000 (0)\n+23E870 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C5F1 Ext File Attributes   00000000 (0)\n-23C5F5 Local Header Offset   001CB142 (1880386)\n-23C5F9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E872 Ext File Attributes   00000000 (0)\n+23E876 Local Header Offset   001D45C7 (1918407)\n+23E87A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C5F9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E87A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C62D CENTRAL HEADER #1782  02014B50 (33639248)\n-23C631 Created Zip Spec      14 (20) '2.0'\n-23C632 Created OS            00 (0) 'MS-DOS'\n-23C633 Extract Zip Spec      14 (20) '2.0'\n-23C634 Extract OS            00 (0) 'MS-DOS'\n-23C635 General Purpose Flag  0808 (2056)\n+23E8B8 CENTRAL HEADER #1782  02014B50 (33639248)\n+23E8BC Created Zip Spec      14 (20) '2.0'\n+23E8BD Created OS            00 (0) 'MS-DOS'\n+23E8BE Extract Zip Spec      14 (20) '2.0'\n+23E8BF Extract OS            00 (0) 'MS-DOS'\n+23E8C0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C637 Compression Method    0008 (8) 'Deflated'\n-23C639 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C63D CRC                   6E56FB5B (1851194203)\n-23C641 Compressed Size       000005CC (1484)\n-23C645 Uncompressed Size     00000D09 (3337)\n-23C649 Filename Length       0033 (51)\n-23C64B Extra Length          0000 (0)\n-23C64D Comment Length        0000 (0)\n-23C64F Disk Start            0000 (0)\n-23C651 Int File Attributes   0000 (0)\n+23E8C2 Compression Method    0008 (8) 'Deflated'\n+23E8C4 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E8C8 CRC                   273E139A (658379674)\n+23E8CC Compressed Size       000006DA (1754)\n+23E8D0 Uncompressed Size     000015B3 (5555)\n+23E8D4 Filename Length       003B (59)\n+23E8D6 Extra Length          0000 (0)\n+23E8D8 Comment Length        0000 (0)\n+23E8DA Disk Start            0000 (0)\n+23E8DC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C653 Ext File Attributes   00000000 (0)\n-23C657 Local Header Offset   001CB7B6 (1882038)\n-23C65B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E8DE Ext File Attributes   00000000 (0)\n+23E8E2 Local Header Offset   001D4B9C (1919900)\n+23E8E6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C65B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E8E6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C68E CENTRAL HEADER #1783  02014B50 (33639248)\n-23C692 Created Zip Spec      14 (20) '2.0'\n-23C693 Created OS            00 (0) 'MS-DOS'\n-23C694 Extract Zip Spec      14 (20) '2.0'\n-23C695 Extract OS            00 (0) 'MS-DOS'\n-23C696 General Purpose Flag  0808 (2056)\n+23E921 CENTRAL HEADER #1783  02014B50 (33639248)\n+23E925 Created Zip Spec      14 (20) '2.0'\n+23E926 Created OS            00 (0) 'MS-DOS'\n+23E927 Extract Zip Spec      14 (20) '2.0'\n+23E928 Extract OS            00 (0) 'MS-DOS'\n+23E929 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C698 Compression Method    0008 (8) 'Deflated'\n-23C69A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C69E CRC                   812FC9F0 (2167392752)\n-23C6A2 Compressed Size       00000589 (1417)\n-23C6A6 Uncompressed Size     00000D20 (3360)\n-23C6AA Filename Length       003C (60)\n-23C6AC Extra Length          0000 (0)\n-23C6AE Comment Length        0000 (0)\n-23C6B0 Disk Start            0000 (0)\n-23C6B2 Int File Attributes   0000 (0)\n+23E92B Compression Method    0008 (8) 'Deflated'\n+23E92D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E931 CRC                   BB4C70B3 (3142348979)\n+23E935 Compressed Size       00000747 (1863)\n+23E939 Uncompressed Size     0000146B (5227)\n+23E93D Filename Length       0038 (56)\n+23E93F Extra Length          0000 (0)\n+23E941 Comment Length        0000 (0)\n+23E943 Disk Start            0000 (0)\n+23E945 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C6B4 Ext File Attributes   00000000 (0)\n-23C6B8 Local Header Offset   001CBDE3 (1883619)\n-23C6BC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E947 Ext File Attributes   00000000 (0)\n+23E94B Local Header Offset   001D52DF (1921759)\n+23E94F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C6BC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E94F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C6F8 CENTRAL HEADER #1784  02014B50 (33639248)\n-23C6FC Created Zip Spec      14 (20) '2.0'\n-23C6FD Created OS            00 (0) 'MS-DOS'\n-23C6FE Extract Zip Spec      14 (20) '2.0'\n-23C6FF Extract OS            00 (0) 'MS-DOS'\n-23C700 General Purpose Flag  0808 (2056)\n+23E987 CENTRAL HEADER #1784  02014B50 (33639248)\n+23E98B Created Zip Spec      14 (20) '2.0'\n+23E98C Created OS            00 (0) 'MS-DOS'\n+23E98D Extract Zip Spec      14 (20) '2.0'\n+23E98E Extract OS            00 (0) 'MS-DOS'\n+23E98F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C702 Compression Method    0008 (8) 'Deflated'\n-23C704 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C708 CRC                   52E473B9 (1390703545)\n-23C70C Compressed Size       000007F9 (2041)\n-23C710 Uncompressed Size     0000131F (4895)\n-23C714 Filename Length       003E (62)\n-23C716 Extra Length          0000 (0)\n-23C718 Comment Length        0000 (0)\n-23C71A Disk Start            0000 (0)\n-23C71C Int File Attributes   0000 (0)\n+23E991 Compression Method    0008 (8) 'Deflated'\n+23E993 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E997 CRC                   165EFEE5 (375324389)\n+23E99B Compressed Size       0000053C (1340)\n+23E99F Uncompressed Size     00000ABA (2746)\n+23E9A3 Filename Length       003A (58)\n+23E9A5 Extra Length          0000 (0)\n+23E9A7 Comment Length        0000 (0)\n+23E9A9 Disk Start            0000 (0)\n+23E9AB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C71E Ext File Attributes   00000000 (0)\n-23C722 Local Header Offset   001CC3D6 (1885142)\n-23C726 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23E9AD Ext File Attributes   00000000 (0)\n+23E9B1 Local Header Offset   001D5A8C (1923724)\n+23E9B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C726: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23E9B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C764 CENTRAL HEADER #1785  02014B50 (33639248)\n-23C768 Created Zip Spec      14 (20) '2.0'\n-23C769 Created OS            00 (0) 'MS-DOS'\n-23C76A Extract Zip Spec      14 (20) '2.0'\n-23C76B Extract OS            00 (0) 'MS-DOS'\n-23C76C General Purpose Flag  0808 (2056)\n+23E9EF CENTRAL HEADER #1785  02014B50 (33639248)\n+23E9F3 Created Zip Spec      14 (20) '2.0'\n+23E9F4 Created OS            00 (0) 'MS-DOS'\n+23E9F5 Extract Zip Spec      14 (20) '2.0'\n+23E9F6 Extract OS            00 (0) 'MS-DOS'\n+23E9F7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C76E Compression Method    0008 (8) 'Deflated'\n-23C770 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C774 CRC                   DB2E2C1B (3677236251)\n-23C778 Compressed Size       00000578 (1400)\n-23C77C Uncompressed Size     00000B80 (2944)\n-23C780 Filename Length       0039 (57)\n-23C782 Extra Length          0000 (0)\n-23C784 Comment Length        0000 (0)\n-23C786 Disk Start            0000 (0)\n-23C788 Int File Attributes   0000 (0)\n+23E9F9 Compression Method    0008 (8) 'Deflated'\n+23E9FB Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23E9FF CRC                   515E6059 (1365139545)\n+23EA03 Compressed Size       000006AE (1710)\n+23EA07 Uncompressed Size     0000106F (4207)\n+23EA0B Filename Length       003A (58)\n+23EA0D Extra Length          0000 (0)\n+23EA0F Comment Length        0000 (0)\n+23EA11 Disk Start            0000 (0)\n+23EA13 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C78A Ext File Attributes   00000000 (0)\n-23C78E Local Header Offset   001CCC3B (1887291)\n-23C792 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23EA15 Ext File Attributes   00000000 (0)\n+23EA19 Local Header Offset   001D6030 (1925168)\n+23EA1D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C792: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23EA1D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C7CB CENTRAL HEADER #1786  02014B50 (33639248)\n-23C7CF Created Zip Spec      14 (20) '2.0'\n-23C7D0 Created OS            00 (0) 'MS-DOS'\n-23C7D1 Extract Zip Spec      14 (20) '2.0'\n-23C7D2 Extract OS            00 (0) 'MS-DOS'\n-23C7D3 General Purpose Flag  0808 (2056)\n+23EA57 CENTRAL HEADER #1786  02014B50 (33639248)\n+23EA5B Created Zip Spec      14 (20) '2.0'\n+23EA5C Created OS            00 (0) 'MS-DOS'\n+23EA5D Extract Zip Spec      14 (20) '2.0'\n+23EA5E Extract OS            00 (0) 'MS-DOS'\n+23EA5F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C7D5 Compression Method    0008 (8) 'Deflated'\n-23C7D7 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C7DB CRC                   4654378B (1179924363)\n-23C7DF Compressed Size       00000489 (1161)\n-23C7E3 Uncompressed Size     0000092E (2350)\n-23C7E7 Filename Length       0034 (52)\n-23C7E9 Extra Length          0000 (0)\n-23C7EB Comment Length        0000 (0)\n-23C7ED Disk Start            0000 (0)\n-23C7EF Int File Attributes   0000 (0)\n+23EA61 Compression Method    0008 (8) 'Deflated'\n+23EA63 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23EA67 CRC                   67A3DA8B (1738791563)\n+23EA6B Compressed Size       00000814 (2068)\n+23EA6F Uncompressed Size     0000174A (5962)\n+23EA73 Filename Length       0036 (54)\n+23EA75 Extra Length          0000 (0)\n+23EA77 Comment Length        0000 (0)\n+23EA79 Disk Start            0000 (0)\n+23EA7B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C7F1 Ext File Attributes   00000000 (0)\n-23C7F5 Local Header Offset   001CD21A (1888794)\n-23C7F9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23EA7D Ext File Attributes   00000000 (0)\n+23EA81 Local Header Offset   001D6746 (1926982)\n+23EA85 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C7F9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23EA85: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C82D CENTRAL HEADER #1787  02014B50 (33639248)\n-23C831 Created Zip Spec      14 (20) '2.0'\n-23C832 Created OS            00 (0) 'MS-DOS'\n-23C833 Extract Zip Spec      14 (20) '2.0'\n-23C834 Extract OS            00 (0) 'MS-DOS'\n-23C835 General Purpose Flag  0808 (2056)\n+23EABB CENTRAL HEADER #1787  02014B50 (33639248)\n+23EABF Created Zip Spec      14 (20) '2.0'\n+23EAC0 Created OS            00 (0) 'MS-DOS'\n+23EAC1 Extract Zip Spec      14 (20) '2.0'\n+23EAC2 Extract OS            00 (0) 'MS-DOS'\n+23EAC3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C837 Compression Method    0008 (8) 'Deflated'\n-23C839 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C83D CRC                   7728EBEC (1999170540)\n-23C841 Compressed Size       0000078F (1935)\n-23C845 Uncompressed Size     000017BD (6077)\n-23C849 Filename Length       0030 (48)\n-23C84B Extra Length          0000 (0)\n-23C84D Comment Length        0000 (0)\n-23C84F Disk Start            0000 (0)\n-23C851 Int File Attributes   0000 (0)\n+23EAC5 Compression Method    0008 (8) 'Deflated'\n+23EAC7 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23EACB CRC                   02D2B2EB (47362795)\n+23EACF Compressed Size       00000B74 (2932)\n+23EAD3 Uncompressed Size     00002CCA (11466)\n+23EAD7 Filename Length       003B (59)\n+23EAD9 Extra Length          0000 (0)\n+23EADB Comment Length        0000 (0)\n+23EADD Disk Start            0000 (0)\n+23EADF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C853 Ext File Attributes   00000000 (0)\n-23C857 Local Header Offset   001CD705 (1890053)\n-23C85B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23EAE1 Ext File Attributes   00000000 (0)\n+23EAE5 Local Header Offset   001D6FBE (1929150)\n+23EAE9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C85B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23EAE9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C88B CENTRAL HEADER #1788  02014B50 (33639248)\n-23C88F Created Zip Spec      14 (20) '2.0'\n-23C890 Created OS            00 (0) 'MS-DOS'\n-23C891 Extract Zip Spec      14 (20) '2.0'\n-23C892 Extract OS            00 (0) 'MS-DOS'\n-23C893 General Purpose Flag  0808 (2056)\n+23EB24 CENTRAL HEADER #1788  02014B50 (33639248)\n+23EB28 Created Zip Spec      14 (20) '2.0'\n+23EB29 Created OS            00 (0) 'MS-DOS'\n+23EB2A Extract Zip Spec      14 (20) '2.0'\n+23EB2B Extract OS            00 (0) 'MS-DOS'\n+23EB2C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C895 Compression Method    0008 (8) 'Deflated'\n-23C897 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C89B CRC                   60D7241E (1624712222)\n-23C89F Compressed Size       000008EA (2282)\n-23C8A3 Uncompressed Size     000016A3 (5795)\n-23C8A7 Filename Length       003D (61)\n-23C8A9 Extra Length          0000 (0)\n-23C8AB Comment Length        0000 (0)\n-23C8AD Disk Start            0000 (0)\n-23C8AF Int File Attributes   0000 (0)\n+23EB2E Compression Method    0008 (8) 'Deflated'\n+23EB30 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23EB34 CRC                   8611C8ED (2249312493)\n+23EB38 Compressed Size       000005AC (1452)\n+23EB3C Uncompressed Size     00000D39 (3385)\n+23EB40 Filename Length       003E (62)\n+23EB42 Extra Length          0000 (0)\n+23EB44 Comment Length        0000 (0)\n+23EB46 Disk Start            0000 (0)\n+23EB48 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C8B1 Ext File Attributes   00000000 (0)\n-23C8B5 Local Header Offset   001CDEF2 (1892082)\n-23C8B9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23EB4A Ext File Attributes   00000000 (0)\n+23EB4E Local Header Offset   001D7B9B (1932187)\n+23EB52 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C8B9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23EB52: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C8F6 CENTRAL HEADER #1789  02014B50 (33639248)\n-23C8FA Created Zip Spec      14 (20) '2.0'\n-23C8FB Created OS            00 (0) 'MS-DOS'\n-23C8FC Extract Zip Spec      14 (20) '2.0'\n-23C8FD Extract OS            00 (0) 'MS-DOS'\n-23C8FE General Purpose Flag  0808 (2056)\n+23EB90 CENTRAL HEADER #1789  02014B50 (33639248)\n+23EB94 Created Zip Spec      14 (20) '2.0'\n+23EB95 Created OS            00 (0) 'MS-DOS'\n+23EB96 Extract Zip Spec      14 (20) '2.0'\n+23EB97 Extract OS            00 (0) 'MS-DOS'\n+23EB98 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C900 Compression Method    0008 (8) 'Deflated'\n-23C902 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C906 CRC                   00000000 (0)\n-23C90A Compressed Size       00000002 (2)\n-23C90E Uncompressed Size     00000000 (0)\n-23C912 Filename Length       0028 (40)\n-23C914 Extra Length          0000 (0)\n-23C916 Comment Length        0000 (0)\n-23C918 Disk Start            0000 (0)\n-23C91A Int File Attributes   0000 (0)\n+23EB9A Compression Method    0008 (8) 'Deflated'\n+23EB9C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23EBA0 CRC                   E0540578 (3763602808)\n+23EBA4 Compressed Size       00000B3D (2877)\n+23EBA8 Uncompressed Size     00002679 (9849)\n+23EBAC Filename Length       0035 (53)\n+23EBAE Extra Length          0000 (0)\n+23EBB0 Comment Length        0000 (0)\n+23EBB2 Disk Start            0000 (0)\n+23EBB4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C91C Ext File Attributes   00000000 (0)\n-23C920 Local Header Offset   001CE847 (1894471)\n-23C924 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23EBB6 Ext File Attributes   00000000 (0)\n+23EBBA Local Header Offset   001D81B3 (1933747)\n+23EBBE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C924: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23EBBE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C94C CENTRAL HEADER #1790  02014B50 (33639248)\n-23C950 Created Zip Spec      14 (20) '2.0'\n-23C951 Created OS            00 (0) 'MS-DOS'\n-23C952 Extract Zip Spec      14 (20) '2.0'\n-23C953 Extract OS            00 (0) 'MS-DOS'\n-23C954 General Purpose Flag  0808 (2056)\n+23EBF3 CENTRAL HEADER #1790  02014B50 (33639248)\n+23EBF7 Created Zip Spec      14 (20) '2.0'\n+23EBF8 Created OS            00 (0) 'MS-DOS'\n+23EBF9 Extract Zip Spec      14 (20) '2.0'\n+23EBFA Extract OS            00 (0) 'MS-DOS'\n+23EBFB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C956 Compression Method    0008 (8) 'Deflated'\n-23C958 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C95C CRC                   350B3EEE (889929454)\n-23C960 Compressed Size       00000B76 (2934)\n-23C964 Uncompressed Size     00002E9D (11933)\n-23C968 Filename Length       003B (59)\n-23C96A Extra Length          0000 (0)\n-23C96C Comment Length        0000 (0)\n-23C96E Disk Start            0000 (0)\n-23C970 Int File Attributes   0000 (0)\n+23EBFD Compression Method    0008 (8) 'Deflated'\n+23EBFF Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23EC03 CRC                   5238B40F (1379447823)\n+23EC07 Compressed Size       000005A9 (1449)\n+23EC0B Uncompressed Size     00000CA6 (3238)\n+23EC0F Filename Length       0038 (56)\n+23EC11 Extra Length          0000 (0)\n+23EC13 Comment Length        0000 (0)\n+23EC15 Disk Start            0000 (0)\n+23EC17 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C972 Ext File Attributes   00000000 (0)\n-23C976 Local Header Offset   001CE89F (1894559)\n-23C97A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23EC19 Ext File Attributes   00000000 (0)\n+23EC1D Local Header Offset   001D8D53 (1936723)\n+23EC21 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C97A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23EC21: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23C9B5 CENTRAL HEADER #1791  02014B50 (33639248)\n-23C9B9 Created Zip Spec      14 (20) '2.0'\n-23C9BA Created OS            00 (0) 'MS-DOS'\n-23C9BB Extract Zip Spec      14 (20) '2.0'\n-23C9BC Extract OS            00 (0) 'MS-DOS'\n-23C9BD General Purpose Flag  0808 (2056)\n+23EC59 CENTRAL HEADER #1791  02014B50 (33639248)\n+23EC5D Created Zip Spec      14 (20) '2.0'\n+23EC5E Created OS            00 (0) 'MS-DOS'\n+23EC5F Extract Zip Spec      14 (20) '2.0'\n+23EC60 Extract OS            00 (0) 'MS-DOS'\n+23EC61 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23C9BF Compression Method    0008 (8) 'Deflated'\n-23C9C1 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23C9C5 CRC                   0C426FFB (205680635)\n-23C9C9 Compressed Size       00000384 (900)\n-23C9CD Uncompressed Size     000008A9 (2217)\n-23C9D1 Filename Length       003C (60)\n-23C9D3 Extra Length          0000 (0)\n-23C9D5 Comment Length        0000 (0)\n-23C9D7 Disk Start            0000 (0)\n-23C9D9 Int File Attributes   0000 (0)\n+23EC63 Compression Method    0008 (8) 'Deflated'\n+23EC65 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23EC69 CRC                   14C32F61 (348335969)\n+23EC6D Compressed Size       00000590 (1424)\n+23EC71 Uncompressed Size     00000D46 (3398)\n+23EC75 Filename Length       003F (63)\n+23EC77 Extra Length          0000 (0)\n+23EC79 Comment Length        0000 (0)\n+23EC7B Disk Start            0000 (0)\n+23EC7D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23C9DB Ext File Attributes   00000000 (0)\n-23C9DF Local Header Offset   001CF47E (1897598)\n-23C9E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23EC7F Ext File Attributes   00000000 (0)\n+23EC83 Local Header Offset   001D9362 (1938274)\n+23EC87 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23C9E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23EC87: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23CA1F CENTRAL HEADER #1792  02014B50 (33639248)\n-23CA23 Created Zip Spec      14 (20) '2.0'\n-23CA24 Created OS            00 (0) 'MS-DOS'\n-23CA25 Extract Zip Spec      14 (20) '2.0'\n-23CA26 Extract OS            00 (0) 'MS-DOS'\n-23CA27 General Purpose Flag  0808 (2056)\n+23ECC6 CENTRAL HEADER #1792  02014B50 (33639248)\n+23ECCA Created Zip Spec      14 (20) '2.0'\n+23ECCB Created OS            00 (0) 'MS-DOS'\n+23ECCC Extract Zip Spec      14 (20) '2.0'\n+23ECCD Extract OS            00 (0) 'MS-DOS'\n+23ECCE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23CA29 Compression Method    0008 (8) 'Deflated'\n-23CA2B Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23CA2F CRC                   A4C4918F (2764345743)\n-23CA33 Compressed Size       0000035F (863)\n-23CA37 Uncompressed Size     00000803 (2051)\n-23CA3B Filename Length       0041 (65)\n-23CA3D Extra Length          0000 (0)\n-23CA3F Comment Length        0000 (0)\n-23CA41 Disk Start            0000 (0)\n-23CA43 Int File Attributes   0000 (0)\n+23ECD0 Compression Method    0008 (8) 'Deflated'\n+23ECD2 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23ECD6 CRC                   B1CE4173 (2983084403)\n+23ECDA Compressed Size       00000647 (1607)\n+23ECDE Uncompressed Size     00000E9E (3742)\n+23ECE2 Filename Length       0035 (53)\n+23ECE4 Extra Length          0000 (0)\n+23ECE6 Comment Length        0000 (0)\n+23ECE8 Disk Start            0000 (0)\n+23ECEA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23CA45 Ext File Attributes   00000000 (0)\n-23CA49 Local Header Offset   001CF86C (1898604)\n-23CA4D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23ECEC Ext File Attributes   00000000 (0)\n+23ECF0 Local Header Offset   001D995F (1939807)\n+23ECF4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23CA4D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23ECF4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23CA8E CENTRAL HEADER #1793  02014B50 (33639248)\n-23CA92 Created Zip Spec      14 (20) '2.0'\n-23CA93 Created OS            00 (0) 'MS-DOS'\n-23CA94 Extract Zip Spec      14 (20) '2.0'\n-23CA95 Extract OS            00 (0) 'MS-DOS'\n-23CA96 General Purpose Flag  0808 (2056)\n+23ED29 CENTRAL HEADER #1793  02014B50 (33639248)\n+23ED2D Created Zip Spec      14 (20) '2.0'\n+23ED2E Created OS            00 (0) 'MS-DOS'\n+23ED2F Extract Zip Spec      14 (20) '2.0'\n+23ED30 Extract OS            00 (0) 'MS-DOS'\n+23ED31 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23CA98 Compression Method    0008 (8) 'Deflated'\n-23CA9A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23CA9E CRC                   DD24EE95 (3710185109)\n-23CAA2 Compressed Size       00000686 (1670)\n-23CAA6 Uncompressed Size     00001008 (4104)\n-23CAAA Filename Length       003E (62)\n-23CAAC Extra Length          0000 (0)\n-23CAAE Comment Length        0000 (0)\n-23CAB0 Disk Start            0000 (0)\n-23CAB2 Int File Attributes   0000 (0)\n+23ED33 Compression Method    0008 (8) 'Deflated'\n+23ED35 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23ED39 CRC                   4FA522A8 (1336222376)\n+23ED3D Compressed Size       00000C19 (3097)\n+23ED41 Uncompressed Size     000049D9 (18905)\n+23ED45 Filename Length       0038 (56)\n+23ED47 Extra Length          0000 (0)\n+23ED49 Comment Length        0000 (0)\n+23ED4B Disk Start            0000 (0)\n+23ED4D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23CAB4 Ext File Attributes   00000000 (0)\n-23CAB8 Local Header Offset   001CFC3A (1899578)\n-23CABC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23ED4F Ext File Attributes   00000000 (0)\n+23ED53 Local Header Offset   001DA009 (1941513)\n+23ED57 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23CABC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23ED57: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23CAFA CENTRAL HEADER #1794  02014B50 (33639248)\n-23CAFE Created Zip Spec      14 (20) '2.0'\n-23CAFF Created OS            00 (0) 'MS-DOS'\n-23CB00 Extract Zip Spec      14 (20) '2.0'\n-23CB01 Extract OS            00 (0) 'MS-DOS'\n-23CB02 General Purpose Flag  0808 (2056)\n+23ED8F CENTRAL HEADER #1794  02014B50 (33639248)\n+23ED93 Created Zip Spec      14 (20) '2.0'\n+23ED94 Created OS            00 (0) 'MS-DOS'\n+23ED95 Extract Zip Spec      14 (20) '2.0'\n+23ED96 Extract OS            00 (0) 'MS-DOS'\n+23ED97 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23CB04 Compression Method    0008 (8) 'Deflated'\n-23CB06 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23CB0A CRC                   723EDDAE (1916722606)\n-23CB0E Compressed Size       000006E6 (1766)\n-23CB12 Uncompressed Size     0000110C (4364)\n-23CB16 Filename Length       0037 (55)\n-23CB18 Extra Length          0000 (0)\n-23CB1A Comment Length        0000 (0)\n-23CB1C Disk Start            0000 (0)\n-23CB1E Int File Attributes   0000 (0)\n+23ED99 Compression Method    0008 (8) 'Deflated'\n+23ED9B Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23ED9F CRC                   6A312F64 (1781608292)\n+23EDA3 Compressed Size       00000346 (838)\n+23EDA7 Uncompressed Size     00000727 (1831)\n+23EDAB Filename Length       003D (61)\n+23EDAD Extra Length          0000 (0)\n+23EDAF Comment Length        0000 (0)\n+23EDB1 Disk Start            0000 (0)\n+23EDB3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23CB20 Ext File Attributes   00000000 (0)\n-23CB24 Local Header Offset   001D032C (1901356)\n-23CB28 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23EDB5 Ext File Attributes   00000000 (0)\n+23EDB9 Local Header Offset   001DAC88 (1944712)\n+23EDBD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23CB28: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23EDBD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23CB5F CENTRAL HEADER #1795  02014B50 (33639248)\n-23CB63 Created Zip Spec      14 (20) '2.0'\n-23CB64 Created OS            00 (0) 'MS-DOS'\n-23CB65 Extract Zip Spec      14 (20) '2.0'\n-23CB66 Extract OS            00 (0) 'MS-DOS'\n-23CB67 General Purpose Flag  0808 (2056)\n+23EDFA CENTRAL HEADER #1795  02014B50 (33639248)\n+23EDFE Created Zip Spec      14 (20) '2.0'\n+23EDFF Created OS            00 (0) 'MS-DOS'\n+23EE00 Extract Zip Spec      14 (20) '2.0'\n+23EE01 Extract OS            00 (0) 'MS-DOS'\n+23EE02 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23CB69 Compression Method    0008 (8) 'Deflated'\n-23CB6B Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23CB6F CRC                   1BE0DE32 (467721778)\n-23CB73 Compressed Size       00000AEC (2796)\n-23CB77 Uncompressed Size     00002352 (9042)\n-23CB7B Filename Length       0037 (55)\n-23CB7D Extra Length          0000 (0)\n-23CB7F Comment Length        0000 (0)\n-23CB81 Disk Start            0000 (0)\n-23CB83 Int File Attributes   0000 (0)\n+23EE04 Compression Method    0008 (8) 'Deflated'\n+23EE06 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23EE0A CRC                   EE87A59D (4001867165)\n+23EE0E Compressed Size       000002CE (718)\n+23EE12 Uncompressed Size     000005C7 (1479)\n+23EE16 Filename Length       003D (61)\n+23EE18 Extra Length          0000 (0)\n+23EE1A Comment Length        0000 (0)\n+23EE1C Disk Start            0000 (0)\n+23EE1E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23CB85 Ext File Attributes   00000000 (0)\n-23CB89 Local Header Offset   001D0A77 (1903223)\n-23CB8D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23EE20 Ext File Attributes   00000000 (0)\n+23EE24 Local Header Offset   001DB039 (1945657)\n+23EE28 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23CB8D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23EE28: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23CBC4 CENTRAL HEADER #1796  02014B50 (33639248)\n-23CBC8 Created Zip Spec      14 (20) '2.0'\n-23CBC9 Created OS            00 (0) 'MS-DOS'\n-23CBCA Extract Zip Spec      14 (20) '2.0'\n-23CBCB Extract OS            00 (0) 'MS-DOS'\n-23CBCC General Purpose Flag  0808 (2056)\n+23EE65 CENTRAL HEADER #1796  02014B50 (33639248)\n+23EE69 Created Zip Spec      14 (20) '2.0'\n+23EE6A Created OS            00 (0) 'MS-DOS'\n+23EE6B Extract Zip Spec      14 (20) '2.0'\n+23EE6C Extract OS            00 (0) 'MS-DOS'\n+23EE6D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23CBCE Compression Method    0008 (8) 'Deflated'\n-23CBD0 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23CBD4 CRC                   56DBC793 (1457244051)\n-23CBD8 Compressed Size       00000595 (1429)\n-23CBDC Uncompressed Size     00000C79 (3193)\n-23CBE0 Filename Length       0036 (54)\n-23CBE2 Extra Length          0000 (0)\n-23CBE4 Comment Length        0000 (0)\n-23CBE6 Disk Start            0000 (0)\n-23CBE8 Int File Attributes   0000 (0)\n+23EE6F Compression Method    0008 (8) 'Deflated'\n+23EE71 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23EE75 CRC                   9EA0D74F (2661341007)\n+23EE79 Compressed Size       0000033D (829)\n+23EE7D Uncompressed Size     000006EF (1775)\n+23EE81 Filename Length       0037 (55)\n+23EE83 Extra Length          0000 (0)\n+23EE85 Comment Length        0000 (0)\n+23EE87 Disk Start            0000 (0)\n+23EE89 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23CBEA Ext File Attributes   00000000 (0)\n-23CBEE Local Header Offset   001D15C8 (1906120)\n-23CBF2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23EE8B Ext File Attributes   00000000 (0)\n+23EE8F Local Header Offset   001DB372 (1946482)\n+23EE93 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23CBF2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23EE93: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23CC28 CENTRAL HEADER #1797  02014B50 (33639248)\n-23CC2C Created Zip Spec      14 (20) '2.0'\n-23CC2D Created OS            00 (0) 'MS-DOS'\n-23CC2E Extract Zip Spec      14 (20) '2.0'\n-23CC2F Extract OS            00 (0) 'MS-DOS'\n-23CC30 General Purpose Flag  0808 (2056)\n+23EECA CENTRAL HEADER #1797  02014B50 (33639248)\n+23EECE Created Zip Spec      14 (20) '2.0'\n+23EECF Created OS            00 (0) 'MS-DOS'\n+23EED0 Extract Zip Spec      14 (20) '2.0'\n+23EED1 Extract OS            00 (0) 'MS-DOS'\n+23EED2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23CC32 Compression Method    0008 (8) 'Deflated'\n-23CC34 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23CC38 CRC                   D0079E8D (3490160269)\n-23CC3C Compressed Size       00000619 (1561)\n-23CC40 Uncompressed Size     00000D8D (3469)\n-23CC44 Filename Length       003B (59)\n-23CC46 Extra Length          0000 (0)\n-23CC48 Comment Length        0000 (0)\n-23CC4A Disk Start            0000 (0)\n-23CC4C Int File Attributes   0000 (0)\n+23EED4 Compression Method    0008 (8) 'Deflated'\n+23EED6 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23EEDA CRC                   4F5E3DED (1331576301)\n+23EEDE Compressed Size       000005A2 (1442)\n+23EEE2 Uncompressed Size     00000C13 (3091)\n+23EEE6 Filename Length       003C (60)\n+23EEE8 Extra Length          0000 (0)\n+23EEEA Comment Length        0000 (0)\n+23EEEC Disk Start            0000 (0)\n+23EEEE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23CC4E Ext File Attributes   00000000 (0)\n-23CC52 Local Header Offset   001D1BC1 (1907649)\n-23CC56 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23EEF0 Ext File Attributes   00000000 (0)\n+23EEF4 Local Header Offset   001DB714 (1947412)\n+23EEF8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23CC56: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23EEF8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23CC91 CENTRAL HEADER #1798  02014B50 (33639248)\n-23CC95 Created Zip Spec      14 (20) '2.0'\n-23CC96 Created OS            00 (0) 'MS-DOS'\n-23CC97 Extract Zip Spec      14 (20) '2.0'\n-23CC98 Extract OS            00 (0) 'MS-DOS'\n-23CC99 General Purpose Flag  0808 (2056)\n+23EF34 CENTRAL HEADER #1798  02014B50 (33639248)\n+23EF38 Created Zip Spec      14 (20) '2.0'\n+23EF39 Created OS            00 (0) 'MS-DOS'\n+23EF3A Extract Zip Spec      14 (20) '2.0'\n+23EF3B Extract OS            00 (0) 'MS-DOS'\n+23EF3C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23CC9B Compression Method    0008 (8) 'Deflated'\n-23CC9D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23CCA1 CRC                   77DBD9E2 (2010896866)\n-23CCA5 Compressed Size       00000512 (1298)\n-23CCA9 Uncompressed Size     00000A68 (2664)\n-23CCAD Filename Length       003E (62)\n-23CCAF Extra Length          0000 (0)\n-23CCB1 Comment Length        0000 (0)\n-23CCB3 Disk Start            0000 (0)\n-23CCB5 Int File Attributes   0000 (0)\n+23EF3E Compression Method    0008 (8) 'Deflated'\n+23EF40 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23EF44 CRC                   9B537823 (2605938723)\n+23EF48 Compressed Size       0000057E (1406)\n+23EF4C Uncompressed Size     00000C42 (3138)\n+23EF50 Filename Length       0036 (54)\n+23EF52 Extra Length          0000 (0)\n+23EF54 Comment Length        0000 (0)\n+23EF56 Disk Start            0000 (0)\n+23EF58 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23CCB7 Ext File Attributes   00000000 (0)\n-23CCBB Local Header Offset   001D2243 (1909315)\n-23CCBF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23EF5A Ext File Attributes   00000000 (0)\n+23EF5E Local Header Offset   001DBD20 (1948960)\n+23EF62 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23CCBF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23EF62: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23CCFD CENTRAL HEADER #1799  02014B50 (33639248)\n-23CD01 Created Zip Spec      14 (20) '2.0'\n-23CD02 Created OS            00 (0) 'MS-DOS'\n-23CD03 Extract Zip Spec      14 (20) '2.0'\n-23CD04 Extract OS            00 (0) 'MS-DOS'\n-23CD05 General Purpose Flag  0808 (2056)\n+23EF98 CENTRAL HEADER #1799  02014B50 (33639248)\n+23EF9C Created Zip Spec      14 (20) '2.0'\n+23EF9D Created OS            00 (0) 'MS-DOS'\n+23EF9E Extract Zip Spec      14 (20) '2.0'\n+23EF9F Extract OS            00 (0) 'MS-DOS'\n+23EFA0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23CD07 Compression Method    0008 (8) 'Deflated'\n-23CD09 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23CD0D CRC                   C66F6586 (3329189254)\n-23CD11 Compressed Size       000004BB (1211)\n-23CD15 Uncompressed Size     0000098F (2447)\n-23CD19 Filename Length       0036 (54)\n-23CD1B Extra Length          0000 (0)\n-23CD1D Comment Length        0000 (0)\n-23CD1F Disk Start            0000 (0)\n-23CD21 Int File Attributes   0000 (0)\n+23EFA2 Compression Method    0008 (8) 'Deflated'\n+23EFA4 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23EFA8 CRC                   FA00D04F (4194357327)\n+23EFAC Compressed Size       00001097 (4247)\n+23EFB0 Uncompressed Size     00006112 (24850)\n+23EFB4 Filename Length       0037 (55)\n+23EFB6 Extra Length          0000 (0)\n+23EFB8 Comment Length        0000 (0)\n+23EFBA Disk Start            0000 (0)\n+23EFBC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23CD23 Ext File Attributes   00000000 (0)\n-23CD27 Local Header Offset   001D27C1 (1910721)\n-23CD2B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23EFBE Ext File Attributes   00000000 (0)\n+23EFC2 Local Header Offset   001DC302 (1950466)\n+23EFC6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23CD2B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23EFC6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23CD61 CENTRAL HEADER #1800  02014B50 (33639248)\n-23CD65 Created Zip Spec      14 (20) '2.0'\n-23CD66 Created OS            00 (0) 'MS-DOS'\n-23CD67 Extract Zip Spec      14 (20) '2.0'\n-23CD68 Extract OS            00 (0) 'MS-DOS'\n-23CD69 General Purpose Flag  0808 (2056)\n+23EFFD CENTRAL HEADER #1800  02014B50 (33639248)\n+23F001 Created Zip Spec      14 (20) '2.0'\n+23F002 Created OS            00 (0) 'MS-DOS'\n+23F003 Extract Zip Spec      14 (20) '2.0'\n+23F004 Extract OS            00 (0) 'MS-DOS'\n+23F005 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23CD6B Compression Method    0008 (8) 'Deflated'\n-23CD6D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23CD71 CRC                   CB19F474 (3407475828)\n-23CD75 Compressed Size       000004FC (1276)\n-23CD79 Uncompressed Size     00000B41 (2881)\n-23CD7D Filename Length       0034 (52)\n-23CD7F Extra Length          0000 (0)\n-23CD81 Comment Length        0000 (0)\n-23CD83 Disk Start            0000 (0)\n-23CD85 Int File Attributes   0000 (0)\n+23F007 Compression Method    0008 (8) 'Deflated'\n+23F009 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F00D CRC                   EA548F41 (3931410241)\n+23F011 Compressed Size       000005A9 (1449)\n+23F015 Uncompressed Size     00000CF9 (3321)\n+23F019 Filename Length       0038 (56)\n+23F01B Extra Length          0000 (0)\n+23F01D Comment Length        0000 (0)\n+23F01F Disk Start            0000 (0)\n+23F021 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23CD87 Ext File Attributes   00000000 (0)\n-23CD8B Local Header Offset   001D2CE0 (1912032)\n-23CD8F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F023 Ext File Attributes   00000000 (0)\n+23F027 Local Header Offset   001DD3FE (1954814)\n+23F02B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23CD8F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F02B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23CDC3 CENTRAL HEADER #1801  02014B50 (33639248)\n-23CDC7 Created Zip Spec      14 (20) '2.0'\n-23CDC8 Created OS            00 (0) 'MS-DOS'\n-23CDC9 Extract Zip Spec      14 (20) '2.0'\n-23CDCA Extract OS            00 (0) 'MS-DOS'\n-23CDCB General Purpose Flag  0808 (2056)\n+23F063 CENTRAL HEADER #1801  02014B50 (33639248)\n+23F067 Created Zip Spec      14 (20) '2.0'\n+23F068 Created OS            00 (0) 'MS-DOS'\n+23F069 Extract Zip Spec      14 (20) '2.0'\n+23F06A Extract OS            00 (0) 'MS-DOS'\n+23F06B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23CDCD Compression Method    0008 (8) 'Deflated'\n-23CDCF Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23CDD3 CRC                   FE2BC051 (4264280145)\n-23CDD7 Compressed Size       00000BE4 (3044)\n-23CDDB Uncompressed Size     00002F6C (12140)\n-23CDDF Filename Length       003A (58)\n-23CDE1 Extra Length          0000 (0)\n-23CDE3 Comment Length        0000 (0)\n-23CDE5 Disk Start            0000 (0)\n-23CDE7 Int File Attributes   0000 (0)\n+23F06D Compression Method    0008 (8) 'Deflated'\n+23F06F Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F073 CRC                   0F4C49C0 (256657856)\n+23F077 Compressed Size       0000059B (1435)\n+23F07B Uncompressed Size     00000BEC (3052)\n+23F07F Filename Length       0039 (57)\n+23F081 Extra Length          0000 (0)\n+23F083 Comment Length        0000 (0)\n+23F085 Disk Start            0000 (0)\n+23F087 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23CDE9 Ext File Attributes   00000000 (0)\n-23CDED Local Header Offset   001D323E (1913406)\n-23CDF1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F089 Ext File Attributes   00000000 (0)\n+23F08D Local Header Offset   001DDA0D (1956365)\n+23F091 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23CDF1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F091: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23CE2B CENTRAL HEADER #1802  02014B50 (33639248)\n-23CE2F Created Zip Spec      14 (20) '2.0'\n-23CE30 Created OS            00 (0) 'MS-DOS'\n-23CE31 Extract Zip Spec      14 (20) '2.0'\n-23CE32 Extract OS            00 (0) 'MS-DOS'\n-23CE33 General Purpose Flag  0808 (2056)\n+23F0CA CENTRAL HEADER #1802  02014B50 (33639248)\n+23F0CE Created Zip Spec      14 (20) '2.0'\n+23F0CF Created OS            00 (0) 'MS-DOS'\n+23F0D0 Extract Zip Spec      14 (20) '2.0'\n+23F0D1 Extract OS            00 (0) 'MS-DOS'\n+23F0D2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23CE35 Compression Method    0008 (8) 'Deflated'\n-23CE37 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23CE3B CRC                   28964A03 (680937987)\n-23CE3F Compressed Size       0000036B (875)\n-23CE43 Uncompressed Size     0000080F (2063)\n-23CE47 Filename Length       0039 (57)\n-23CE49 Extra Length          0000 (0)\n-23CE4B Comment Length        0000 (0)\n-23CE4D Disk Start            0000 (0)\n-23CE4F Int File Attributes   0000 (0)\n+23F0D4 Compression Method    0008 (8) 'Deflated'\n+23F0D6 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F0DA CRC                   D55758DF (3579271391)\n+23F0DE Compressed Size       00000564 (1380)\n+23F0E2 Uncompressed Size     00000B49 (2889)\n+23F0E6 Filename Length       0037 (55)\n+23F0E8 Extra Length          0000 (0)\n+23F0EA Comment Length        0000 (0)\n+23F0EC Disk Start            0000 (0)\n+23F0EE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23CE51 Ext File Attributes   00000000 (0)\n-23CE55 Local Header Offset   001D3E8A (1916554)\n-23CE59 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F0F0 Ext File Attributes   00000000 (0)\n+23F0F4 Local Header Offset   001DE00F (1957903)\n+23F0F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23CE59: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F0F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23CE92 CENTRAL HEADER #1803  02014B50 (33639248)\n-23CE96 Created Zip Spec      14 (20) '2.0'\n-23CE97 Created OS            00 (0) 'MS-DOS'\n-23CE98 Extract Zip Spec      14 (20) '2.0'\n-23CE99 Extract OS            00 (0) 'MS-DOS'\n-23CE9A General Purpose Flag  0808 (2056)\n+23F12F CENTRAL HEADER #1803  02014B50 (33639248)\n+23F133 Created Zip Spec      14 (20) '2.0'\n+23F134 Created OS            00 (0) 'MS-DOS'\n+23F135 Extract Zip Spec      14 (20) '2.0'\n+23F136 Extract OS            00 (0) 'MS-DOS'\n+23F137 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23CE9C Compression Method    0008 (8) 'Deflated'\n-23CE9E Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23CEA2 CRC                   8696E439 (2258035769)\n-23CEA6 Compressed Size       00000361 (865)\n-23CEAA Uncompressed Size     000007F5 (2037)\n-23CEAE Filename Length       003D (61)\n-23CEB0 Extra Length          0000 (0)\n-23CEB2 Comment Length        0000 (0)\n-23CEB4 Disk Start            0000 (0)\n-23CEB6 Int File Attributes   0000 (0)\n+23F139 Compression Method    0008 (8) 'Deflated'\n+23F13B Modification Time     50DD91CB (1356698059) 'Mon Jun 29 18:14:22 2020'\n+23F13F CRC                   00000000 (0)\n+23F143 Compressed Size       00000002 (2)\n+23F147 Uncompressed Size     00000000 (0)\n+23F14B Filename Length       001B (27)\n+23F14D Extra Length          0000 (0)\n+23F14F Comment Length        0000 (0)\n+23F151 Disk Start            0000 (0)\n+23F153 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23CEB8 Ext File Attributes   00000000 (0)\n-23CEBC Local Header Offset   001D425C (1917532)\n-23CEC0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F155 Ext File Attributes   00000000 (0)\n+23F159 Local Header Offset   001DE5D8 (1959384)\n+23F15D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23CEC0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F15D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23CEFD CENTRAL HEADER #1804  02014B50 (33639248)\n-23CF01 Created Zip Spec      14 (20) '2.0'\n-23CF02 Created OS            00 (0) 'MS-DOS'\n-23CF03 Extract Zip Spec      14 (20) '2.0'\n-23CF04 Extract OS            00 (0) 'MS-DOS'\n-23CF05 General Purpose Flag  0808 (2056)\n+23F178 CENTRAL HEADER #1804  02014B50 (33639248)\n+23F17C Created Zip Spec      14 (20) '2.0'\n+23F17D Created OS            00 (0) 'MS-DOS'\n+23F17E Extract Zip Spec      14 (20) '2.0'\n+23F17F Extract OS            00 (0) 'MS-DOS'\n+23F180 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23CF07 Compression Method    0008 (8) 'Deflated'\n-23CF09 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23CF0D CRC                   AC539B8F (2891160463)\n-23CF11 Compressed Size       000004EC (1260)\n-23CF15 Uncompressed Size     00000A07 (2567)\n-23CF19 Filename Length       003C (60)\n-23CF1B Extra Length          0000 (0)\n-23CF1D Comment Length        0000 (0)\n-23CF1F Disk Start            0000 (0)\n-23CF21 Int File Attributes   0000 (0)\n+23F182 Compression Method    0008 (8) 'Deflated'\n+23F184 Modification Time     50DD91CB (1356698059) 'Mon Jun 29 18:14:22 2020'\n+23F188 CRC                   00000000 (0)\n+23F18C Compressed Size       00000002 (2)\n+23F190 Uncompressed Size     00000000 (0)\n+23F194 Filename Length       0028 (40)\n+23F196 Extra Length          0000 (0)\n+23F198 Comment Length        0000 (0)\n+23F19A Disk Start            0000 (0)\n+23F19C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23CF23 Ext File Attributes   00000000 (0)\n-23CF27 Local Header Offset   001D4628 (1918504)\n-23CF2B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F19E Ext File Attributes   00000000 (0)\n+23F1A2 Local Header Offset   001DE623 (1959459)\n+23F1A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23CF2B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F1A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23CF67 CENTRAL HEADER #1805  02014B50 (33639248)\n-23CF6B Created Zip Spec      14 (20) '2.0'\n-23CF6C Created OS            00 (0) 'MS-DOS'\n-23CF6D Extract Zip Spec      14 (20) '2.0'\n-23CF6E Extract OS            00 (0) 'MS-DOS'\n-23CF6F General Purpose Flag  0808 (2056)\n+23F1CE CENTRAL HEADER #1805  02014B50 (33639248)\n+23F1D2 Created Zip Spec      14 (20) '2.0'\n+23F1D3 Created OS            00 (0) 'MS-DOS'\n+23F1D4 Extract Zip Spec      14 (20) '2.0'\n+23F1D5 Extract OS            00 (0) 'MS-DOS'\n+23F1D6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23CF71 Compression Method    0008 (8) 'Deflated'\n-23CF73 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23CF77 CRC                   FF195881 (4279851137)\n-23CF7B Compressed Size       000006FF (1791)\n-23CF7F Uncompressed Size     00001388 (5000)\n-23CF83 Filename Length       003D (61)\n-23CF85 Extra Length          0000 (0)\n-23CF87 Comment Length        0000 (0)\n-23CF89 Disk Start            0000 (0)\n-23CF8B Int File Attributes   0000 (0)\n+23F1D8 Compression Method    0008 (8) 'Deflated'\n+23F1DA Modification Time     50DD91CB (1356698059) 'Mon Jun 29 18:14:22 2020'\n+23F1DE CRC                   37B34B5F (934497119)\n+23F1E2 Compressed Size       0000006B (107)\n+23F1E6 Uncompressed Size     0000006C (108)\n+23F1EA Filename Length       0036 (54)\n+23F1EC Extra Length          0000 (0)\n+23F1EE Comment Length        0000 (0)\n+23F1F0 Disk Start            0000 (0)\n+23F1F2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23CF8D Ext File Attributes   00000000 (0)\n-23CF91 Local Header Offset   001D4B7E (1919870)\n-23CF95 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F1F4 Ext File Attributes   00000000 (0)\n+23F1F8 Local Header Offset   001DE67B (1959547)\n+23F1FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23CF95: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F1FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23CFD2 CENTRAL HEADER #1806  02014B50 (33639248)\n-23CFD6 Created Zip Spec      14 (20) '2.0'\n-23CFD7 Created OS            00 (0) 'MS-DOS'\n-23CFD8 Extract Zip Spec      14 (20) '2.0'\n-23CFD9 Extract OS            00 (0) 'MS-DOS'\n-23CFDA General Purpose Flag  0808 (2056)\n+23F232 CENTRAL HEADER #1806  02014B50 (33639248)\n+23F236 Created Zip Spec      14 (20) '2.0'\n+23F237 Created OS            00 (0) 'MS-DOS'\n+23F238 Extract Zip Spec      14 (20) '2.0'\n+23F239 Extract OS            00 (0) 'MS-DOS'\n+23F23A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23CFDC Compression Method    0008 (8) 'Deflated'\n-23CFDE Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23CFE2 CRC                   EF9589B0 (4019554736)\n-23CFE6 Compressed Size       00000569 (1385)\n-23CFEA Uncompressed Size     00000B3F (2879)\n-23CFEE Filename Length       003E (62)\n-23CFF0 Extra Length          0000 (0)\n-23CFF2 Comment Length        0000 (0)\n-23CFF4 Disk Start            0000 (0)\n-23CFF6 Int File Attributes   0000 (0)\n+23F23C Compression Method    0008 (8) 'Deflated'\n+23F23E Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F242 CRC                   D3EA2D1D (3555339549)\n+23F246 Compressed Size       0000052A (1322)\n+23F24A Uncompressed Size     00000BA9 (2985)\n+23F24E Filename Length       0040 (64)\n+23F250 Extra Length          0000 (0)\n+23F252 Comment Length        0000 (0)\n+23F254 Disk Start            0000 (0)\n+23F256 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23CFF8 Ext File Attributes   00000000 (0)\n-23CFFC Local Header Offset   001D52E8 (1921768)\n-23D000 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F258 Ext File Attributes   00000000 (0)\n+23F25C Local Header Offset   001DE74A (1959754)\n+23F260 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D000: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F260: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D03E CENTRAL HEADER #1807  02014B50 (33639248)\n-23D042 Created Zip Spec      14 (20) '2.0'\n-23D043 Created OS            00 (0) 'MS-DOS'\n-23D044 Extract Zip Spec      14 (20) '2.0'\n-23D045 Extract OS            00 (0) 'MS-DOS'\n-23D046 General Purpose Flag  0808 (2056)\n+23F2A0 CENTRAL HEADER #1807  02014B50 (33639248)\n+23F2A4 Created Zip Spec      14 (20) '2.0'\n+23F2A5 Created OS            00 (0) 'MS-DOS'\n+23F2A6 Extract Zip Spec      14 (20) '2.0'\n+23F2A7 Extract OS            00 (0) 'MS-DOS'\n+23F2A8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D048 Compression Method    0008 (8) 'Deflated'\n-23D04A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D04E CRC                   273E139A (658379674)\n-23D052 Compressed Size       000006DA (1754)\n-23D056 Uncompressed Size     000015B3 (5555)\n-23D05A Filename Length       003B (59)\n-23D05C Extra Length          0000 (0)\n-23D05E Comment Length        0000 (0)\n-23D060 Disk Start            0000 (0)\n-23D062 Int File Attributes   0000 (0)\n+23F2AA Compression Method    0008 (8) 'Deflated'\n+23F2AC Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F2B0 CRC                   3ADD7788 (987592584)\n+23F2B4 Compressed Size       0000034E (846)\n+23F2B8 Uncompressed Size     000007D9 (2009)\n+23F2BC Filename Length       0040 (64)\n+23F2BE Extra Length          0000 (0)\n+23F2C0 Comment Length        0000 (0)\n+23F2C2 Disk Start            0000 (0)\n+23F2C4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D064 Ext File Attributes   00000000 (0)\n-23D068 Local Header Offset   001D58BD (1923261)\n-23D06C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F2C6 Ext File Attributes   00000000 (0)\n+23F2CA Local Header Offset   001DECE2 (1961186)\n+23F2CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D06C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F2CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D0A7 CENTRAL HEADER #1808  02014B50 (33639248)\n-23D0AB Created Zip Spec      14 (20) '2.0'\n-23D0AC Created OS            00 (0) 'MS-DOS'\n-23D0AD Extract Zip Spec      14 (20) '2.0'\n-23D0AE Extract OS            00 (0) 'MS-DOS'\n-23D0AF General Purpose Flag  0808 (2056)\n+23F30E CENTRAL HEADER #1808  02014B50 (33639248)\n+23F312 Created Zip Spec      14 (20) '2.0'\n+23F313 Created OS            00 (0) 'MS-DOS'\n+23F314 Extract Zip Spec      14 (20) '2.0'\n+23F315 Extract OS            00 (0) 'MS-DOS'\n+23F316 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D0B1 Compression Method    0008 (8) 'Deflated'\n-23D0B3 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D0B7 CRC                   BB4C70B3 (3142348979)\n-23D0BB Compressed Size       00000747 (1863)\n-23D0BF Uncompressed Size     0000146B (5227)\n-23D0C3 Filename Length       0038 (56)\n-23D0C5 Extra Length          0000 (0)\n-23D0C7 Comment Length        0000 (0)\n-23D0C9 Disk Start            0000 (0)\n-23D0CB Int File Attributes   0000 (0)\n+23F318 Compression Method    0008 (8) 'Deflated'\n+23F31A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F31E CRC                   B957E47F (3109545087)\n+23F322 Compressed Size       0000035B (859)\n+23F326 Uncompressed Size     00000795 (1941)\n+23F32A Filename Length       003C (60)\n+23F32C Extra Length          0000 (0)\n+23F32E Comment Length        0000 (0)\n+23F330 Disk Start            0000 (0)\n+23F332 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D0CD Ext File Attributes   00000000 (0)\n-23D0D1 Local Header Offset   001D6000 (1925120)\n-23D0D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F334 Ext File Attributes   00000000 (0)\n+23F338 Local Header Offset   001DF09E (1962142)\n+23F33C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D0D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F33C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D10D CENTRAL HEADER #1809  02014B50 (33639248)\n-23D111 Created Zip Spec      14 (20) '2.0'\n-23D112 Created OS            00 (0) 'MS-DOS'\n-23D113 Extract Zip Spec      14 (20) '2.0'\n-23D114 Extract OS            00 (0) 'MS-DOS'\n-23D115 General Purpose Flag  0808 (2056)\n+23F378 CENTRAL HEADER #1809  02014B50 (33639248)\n+23F37C Created Zip Spec      14 (20) '2.0'\n+23F37D Created OS            00 (0) 'MS-DOS'\n+23F37E Extract Zip Spec      14 (20) '2.0'\n+23F37F Extract OS            00 (0) 'MS-DOS'\n+23F380 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D117 Compression Method    0008 (8) 'Deflated'\n-23D119 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D11D CRC                   165EFEE5 (375324389)\n-23D121 Compressed Size       0000053C (1340)\n-23D125 Uncompressed Size     00000ABA (2746)\n-23D129 Filename Length       003A (58)\n-23D12B Extra Length          0000 (0)\n-23D12D Comment Length        0000 (0)\n-23D12F Disk Start            0000 (0)\n-23D131 Int File Attributes   0000 (0)\n+23F382 Compression Method    0008 (8) 'Deflated'\n+23F384 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F388 CRC                   27E32CDA (669199578)\n+23F38C Compressed Size       00000590 (1424)\n+23F390 Uncompressed Size     00000EE5 (3813)\n+23F394 Filename Length       0033 (51)\n+23F396 Extra Length          0000 (0)\n+23F398 Comment Length        0000 (0)\n+23F39A Disk Start            0000 (0)\n+23F39C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D133 Ext File Attributes   00000000 (0)\n-23D137 Local Header Offset   001D67AD (1927085)\n-23D13B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F39E Ext File Attributes   00000000 (0)\n+23F3A2 Local Header Offset   001DF463 (1963107)\n+23F3A6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D13B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F3A6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D175 CENTRAL HEADER #1810  02014B50 (33639248)\n-23D179 Created Zip Spec      14 (20) '2.0'\n-23D17A Created OS            00 (0) 'MS-DOS'\n-23D17B Extract Zip Spec      14 (20) '2.0'\n-23D17C Extract OS            00 (0) 'MS-DOS'\n-23D17D General Purpose Flag  0808 (2056)\n+23F3D9 CENTRAL HEADER #1810  02014B50 (33639248)\n+23F3DD Created Zip Spec      14 (20) '2.0'\n+23F3DE Created OS            00 (0) 'MS-DOS'\n+23F3DF Extract Zip Spec      14 (20) '2.0'\n+23F3E0 Extract OS            00 (0) 'MS-DOS'\n+23F3E1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D17F Compression Method    0008 (8) 'Deflated'\n-23D181 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D185 CRC                   515E6059 (1365139545)\n-23D189 Compressed Size       000006AE (1710)\n-23D18D Uncompressed Size     0000106F (4207)\n-23D191 Filename Length       003A (58)\n-23D193 Extra Length          0000 (0)\n-23D195 Comment Length        0000 (0)\n-23D197 Disk Start            0000 (0)\n-23D199 Int File Attributes   0000 (0)\n+23F3E3 Compression Method    0008 (8) 'Deflated'\n+23F3E5 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F3E9 CRC                   96A3AA02 (2527308290)\n+23F3ED Compressed Size       00000598 (1432)\n+23F3F1 Uncompressed Size     00000D62 (3426)\n+23F3F5 Filename Length       0039 (57)\n+23F3F7 Extra Length          0000 (0)\n+23F3F9 Comment Length        0000 (0)\n+23F3FB Disk Start            0000 (0)\n+23F3FD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D19B Ext File Attributes   00000000 (0)\n-23D19F Local Header Offset   001D6D51 (1928529)\n-23D1A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F3FF Ext File Attributes   00000000 (0)\n+23F403 Local Header Offset   001DFA54 (1964628)\n+23F407 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D1A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F407: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D1DD CENTRAL HEADER #1811  02014B50 (33639248)\n-23D1E1 Created Zip Spec      14 (20) '2.0'\n-23D1E2 Created OS            00 (0) 'MS-DOS'\n-23D1E3 Extract Zip Spec      14 (20) '2.0'\n-23D1E4 Extract OS            00 (0) 'MS-DOS'\n-23D1E5 General Purpose Flag  0808 (2056)\n+23F440 CENTRAL HEADER #1811  02014B50 (33639248)\n+23F444 Created Zip Spec      14 (20) '2.0'\n+23F445 Created OS            00 (0) 'MS-DOS'\n+23F446 Extract Zip Spec      14 (20) '2.0'\n+23F447 Extract OS            00 (0) 'MS-DOS'\n+23F448 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D1E7 Compression Method    0008 (8) 'Deflated'\n-23D1E9 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D1ED CRC                   67A3DA8B (1738791563)\n-23D1F1 Compressed Size       00000814 (2068)\n-23D1F5 Uncompressed Size     0000174A (5962)\n-23D1F9 Filename Length       0036 (54)\n-23D1FB Extra Length          0000 (0)\n-23D1FD Comment Length        0000 (0)\n-23D1FF Disk Start            0000 (0)\n-23D201 Int File Attributes   0000 (0)\n+23F44A Compression Method    0008 (8) 'Deflated'\n+23F44C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F450 CRC                   CA81C016 (3397500950)\n+23F454 Compressed Size       00000887 (2183)\n+23F458 Uncompressed Size     00002307 (8967)\n+23F45C Filename Length       0036 (54)\n+23F45E Extra Length          0000 (0)\n+23F460 Comment Length        0000 (0)\n+23F462 Disk Start            0000 (0)\n+23F464 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D203 Ext File Attributes   00000000 (0)\n-23D207 Local Header Offset   001D7467 (1930343)\n-23D20B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F466 Ext File Attributes   00000000 (0)\n+23F46A Local Header Offset   001E0053 (1966163)\n+23F46E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D20B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F46E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D241 CENTRAL HEADER #1812  02014B50 (33639248)\n-23D245 Created Zip Spec      14 (20) '2.0'\n-23D246 Created OS            00 (0) 'MS-DOS'\n-23D247 Extract Zip Spec      14 (20) '2.0'\n-23D248 Extract OS            00 (0) 'MS-DOS'\n-23D249 General Purpose Flag  0808 (2056)\n+23F4A4 CENTRAL HEADER #1812  02014B50 (33639248)\n+23F4A8 Created Zip Spec      14 (20) '2.0'\n+23F4A9 Created OS            00 (0) 'MS-DOS'\n+23F4AA Extract Zip Spec      14 (20) '2.0'\n+23F4AB Extract OS            00 (0) 'MS-DOS'\n+23F4AC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D24B Compression Method    0008 (8) 'Deflated'\n-23D24D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D251 CRC                   02D2B2EB (47362795)\n-23D255 Compressed Size       00000B74 (2932)\n-23D259 Uncompressed Size     00002CCA (11466)\n-23D25D Filename Length       003B (59)\n-23D25F Extra Length          0000 (0)\n-23D261 Comment Length        0000 (0)\n-23D263 Disk Start            0000 (0)\n-23D265 Int File Attributes   0000 (0)\n+23F4AE Compression Method    0008 (8) 'Deflated'\n+23F4B0 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F4B4 CRC                   06019AC3 (100768451)\n+23F4B8 Compressed Size       0000051C (1308)\n+23F4BC Uncompressed Size     00000A6E (2670)\n+23F4C0 Filename Length       0039 (57)\n+23F4C2 Extra Length          0000 (0)\n+23F4C4 Comment Length        0000 (0)\n+23F4C6 Disk Start            0000 (0)\n+23F4C8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D267 Ext File Attributes   00000000 (0)\n-23D26B Local Header Offset   001D7CDF (1932511)\n-23D26F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F4CA Ext File Attributes   00000000 (0)\n+23F4CE Local Header Offset   001E093E (1968446)\n+23F4D2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D26F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F4D2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D2AA CENTRAL HEADER #1813  02014B50 (33639248)\n-23D2AE Created Zip Spec      14 (20) '2.0'\n-23D2AF Created OS            00 (0) 'MS-DOS'\n-23D2B0 Extract Zip Spec      14 (20) '2.0'\n-23D2B1 Extract OS            00 (0) 'MS-DOS'\n-23D2B2 General Purpose Flag  0808 (2056)\n+23F50B CENTRAL HEADER #1813  02014B50 (33639248)\n+23F50F Created Zip Spec      14 (20) '2.0'\n+23F510 Created OS            00 (0) 'MS-DOS'\n+23F511 Extract Zip Spec      14 (20) '2.0'\n+23F512 Extract OS            00 (0) 'MS-DOS'\n+23F513 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D2B4 Compression Method    0008 (8) 'Deflated'\n-23D2B6 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D2BA CRC                   8611C8ED (2249312493)\n-23D2BE Compressed Size       000005AC (1452)\n-23D2C2 Uncompressed Size     00000D39 (3385)\n-23D2C6 Filename Length       003E (62)\n-23D2C8 Extra Length          0000 (0)\n-23D2CA Comment Length        0000 (0)\n-23D2CC Disk Start            0000 (0)\n-23D2CE Int File Attributes   0000 (0)\n+23F515 Compression Method    0008 (8) 'Deflated'\n+23F517 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F51B CRC                   5603C310 (1443087120)\n+23F51F Compressed Size       00000799 (1945)\n+23F523 Uncompressed Size     00001463 (5219)\n+23F527 Filename Length       0033 (51)\n+23F529 Extra Length          0000 (0)\n+23F52B Comment Length        0000 (0)\n+23F52D Disk Start            0000 (0)\n+23F52F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D2D0 Ext File Attributes   00000000 (0)\n-23D2D4 Local Header Offset   001D88BC (1935548)\n-23D2D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F531 Ext File Attributes   00000000 (0)\n+23F535 Local Header Offset   001E0EC1 (1969857)\n+23F539 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D2D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F539: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D316 CENTRAL HEADER #1814  02014B50 (33639248)\n-23D31A Created Zip Spec      14 (20) '2.0'\n-23D31B Created OS            00 (0) 'MS-DOS'\n-23D31C Extract Zip Spec      14 (20) '2.0'\n-23D31D Extract OS            00 (0) 'MS-DOS'\n-23D31E General Purpose Flag  0808 (2056)\n+23F56C CENTRAL HEADER #1814  02014B50 (33639248)\n+23F570 Created Zip Spec      14 (20) '2.0'\n+23F571 Created OS            00 (0) 'MS-DOS'\n+23F572 Extract Zip Spec      14 (20) '2.0'\n+23F573 Extract OS            00 (0) 'MS-DOS'\n+23F574 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D320 Compression Method    0008 (8) 'Deflated'\n-23D322 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D326 CRC                   E0540578 (3763602808)\n-23D32A Compressed Size       00000B3D (2877)\n-23D32E Uncompressed Size     00002679 (9849)\n-23D332 Filename Length       0035 (53)\n-23D334 Extra Length          0000 (0)\n-23D336 Comment Length        0000 (0)\n-23D338 Disk Start            0000 (0)\n-23D33A Int File Attributes   0000 (0)\n+23F576 Compression Method    0008 (8) 'Deflated'\n+23F578 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F57C CRC                   D1926FA5 (3516034981)\n+23F580 Compressed Size       00000584 (1412)\n+23F584 Uncompressed Size     00000BBB (3003)\n+23F588 Filename Length       003E (62)\n+23F58A Extra Length          0000 (0)\n+23F58C Comment Length        0000 (0)\n+23F58E Disk Start            0000 (0)\n+23F590 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D33C Ext File Attributes   00000000 (0)\n-23D340 Local Header Offset   001D8ED4 (1937108)\n-23D344 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F592 Ext File Attributes   00000000 (0)\n+23F596 Local Header Offset   001E16BB (1971899)\n+23F59A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D344: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F59A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D379 CENTRAL HEADER #1815  02014B50 (33639248)\n-23D37D Created Zip Spec      14 (20) '2.0'\n-23D37E Created OS            00 (0) 'MS-DOS'\n-23D37F Extract Zip Spec      14 (20) '2.0'\n-23D380 Extract OS            00 (0) 'MS-DOS'\n-23D381 General Purpose Flag  0808 (2056)\n+23F5D8 CENTRAL HEADER #1815  02014B50 (33639248)\n+23F5DC Created Zip Spec      14 (20) '2.0'\n+23F5DD Created OS            00 (0) 'MS-DOS'\n+23F5DE Extract Zip Spec      14 (20) '2.0'\n+23F5DF Extract OS            00 (0) 'MS-DOS'\n+23F5E0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D383 Compression Method    0008 (8) 'Deflated'\n-23D385 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D389 CRC                   5238B40F (1379447823)\n-23D38D Compressed Size       000005A9 (1449)\n-23D391 Uncompressed Size     00000CA6 (3238)\n-23D395 Filename Length       0038 (56)\n-23D397 Extra Length          0000 (0)\n-23D399 Comment Length        0000 (0)\n-23D39B Disk Start            0000 (0)\n-23D39D Int File Attributes   0000 (0)\n+23F5E2 Compression Method    0008 (8) 'Deflated'\n+23F5E4 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F5E8 CRC                   61E4315C (1642344796)\n+23F5EC Compressed Size       00001D8C (7564)\n+23F5F0 Uncompressed Size     0000E195 (57749)\n+23F5F4 Filename Length       0038 (56)\n+23F5F6 Extra Length          0000 (0)\n+23F5F8 Comment Length        0000 (0)\n+23F5FA Disk Start            0000 (0)\n+23F5FC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D39F Ext File Attributes   00000000 (0)\n-23D3A3 Local Header Offset   001D9A74 (1940084)\n-23D3A7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F5FE Ext File Attributes   00000000 (0)\n+23F602 Local Header Offset   001E1CAB (1973419)\n+23F606 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D3A7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F606: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D3DF CENTRAL HEADER #1816  02014B50 (33639248)\n-23D3E3 Created Zip Spec      14 (20) '2.0'\n-23D3E4 Created OS            00 (0) 'MS-DOS'\n-23D3E5 Extract Zip Spec      14 (20) '2.0'\n-23D3E6 Extract OS            00 (0) 'MS-DOS'\n-23D3E7 General Purpose Flag  0808 (2056)\n+23F63E CENTRAL HEADER #1816  02014B50 (33639248)\n+23F642 Created Zip Spec      14 (20) '2.0'\n+23F643 Created OS            00 (0) 'MS-DOS'\n+23F644 Extract Zip Spec      14 (20) '2.0'\n+23F645 Extract OS            00 (0) 'MS-DOS'\n+23F646 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D3E9 Compression Method    0008 (8) 'Deflated'\n-23D3EB Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D3EF CRC                   14C32F61 (348335969)\n-23D3F3 Compressed Size       00000590 (1424)\n-23D3F7 Uncompressed Size     00000D46 (3398)\n-23D3FB Filename Length       003F (63)\n-23D3FD Extra Length          0000 (0)\n-23D3FF Comment Length        0000 (0)\n-23D401 Disk Start            0000 (0)\n-23D403 Int File Attributes   0000 (0)\n+23F648 Compression Method    0008 (8) 'Deflated'\n+23F64A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F64E CRC                   968E88D0 (2525923536)\n+23F652 Compressed Size       000005DD (1501)\n+23F656 Uncompressed Size     00000E0E (3598)\n+23F65A Filename Length       003A (58)\n+23F65C Extra Length          0000 (0)\n+23F65E Comment Length        0000 (0)\n+23F660 Disk Start            0000 (0)\n+23F662 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D405 Ext File Attributes   00000000 (0)\n-23D409 Local Header Offset   001DA083 (1941635)\n-23D40D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F664 Ext File Attributes   00000000 (0)\n+23F668 Local Header Offset   001E3A9D (1981085)\n+23F66C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D40D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F66C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D44C CENTRAL HEADER #1817  02014B50 (33639248)\n-23D450 Created Zip Spec      14 (20) '2.0'\n-23D451 Created OS            00 (0) 'MS-DOS'\n-23D452 Extract Zip Spec      14 (20) '2.0'\n-23D453 Extract OS            00 (0) 'MS-DOS'\n-23D454 General Purpose Flag  0808 (2056)\n+23F6A6 CENTRAL HEADER #1817  02014B50 (33639248)\n+23F6AA Created Zip Spec      14 (20) '2.0'\n+23F6AB Created OS            00 (0) 'MS-DOS'\n+23F6AC Extract Zip Spec      14 (20) '2.0'\n+23F6AD Extract OS            00 (0) 'MS-DOS'\n+23F6AE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D456 Compression Method    0008 (8) 'Deflated'\n-23D458 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D45C CRC                   B1CE4173 (2983084403)\n-23D460 Compressed Size       00000647 (1607)\n-23D464 Uncompressed Size     00000E9E (3742)\n-23D468 Filename Length       0035 (53)\n-23D46A Extra Length          0000 (0)\n-23D46C Comment Length        0000 (0)\n-23D46E Disk Start            0000 (0)\n-23D470 Int File Attributes   0000 (0)\n+23F6B0 Compression Method    0008 (8) 'Deflated'\n+23F6B2 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F6B6 CRC                   E14A6B5A (3779750746)\n+23F6BA Compressed Size       00001448 (5192)\n+23F6BE Uncompressed Size     0000694D (26957)\n+23F6C2 Filename Length       0038 (56)\n+23F6C4 Extra Length          0000 (0)\n+23F6C6 Comment Length        0000 (0)\n+23F6C8 Disk Start            0000 (0)\n+23F6CA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D472 Ext File Attributes   00000000 (0)\n-23D476 Local Header Offset   001DA680 (1943168)\n-23D47A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F6CC Ext File Attributes   00000000 (0)\n+23F6D0 Local Header Offset   001E40E2 (1982690)\n+23F6D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D47A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F6D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D4AF CENTRAL HEADER #1818  02014B50 (33639248)\n-23D4B3 Created Zip Spec      14 (20) '2.0'\n-23D4B4 Created OS            00 (0) 'MS-DOS'\n-23D4B5 Extract Zip Spec      14 (20) '2.0'\n-23D4B6 Extract OS            00 (0) 'MS-DOS'\n-23D4B7 General Purpose Flag  0808 (2056)\n+23F70C CENTRAL HEADER #1818  02014B50 (33639248)\n+23F710 Created Zip Spec      14 (20) '2.0'\n+23F711 Created OS            00 (0) 'MS-DOS'\n+23F712 Extract Zip Spec      14 (20) '2.0'\n+23F713 Extract OS            00 (0) 'MS-DOS'\n+23F714 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D4B9 Compression Method    0008 (8) 'Deflated'\n-23D4BB Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D4BF CRC                   4FA522A8 (1336222376)\n-23D4C3 Compressed Size       00000C19 (3097)\n-23D4C7 Uncompressed Size     000049D9 (18905)\n-23D4CB Filename Length       0038 (56)\n-23D4CD Extra Length          0000 (0)\n-23D4CF Comment Length        0000 (0)\n-23D4D1 Disk Start            0000 (0)\n-23D4D3 Int File Attributes   0000 (0)\n+23F716 Compression Method    0008 (8) 'Deflated'\n+23F718 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F71C CRC                   038157DF (58808287)\n+23F720 Compressed Size       00001B38 (6968)\n+23F724 Uncompressed Size     00009F03 (40707)\n+23F728 Filename Length       0035 (53)\n+23F72A Extra Length          0000 (0)\n+23F72C Comment Length        0000 (0)\n+23F72E Disk Start            0000 (0)\n+23F730 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D4D5 Ext File Attributes   00000000 (0)\n-23D4D9 Local Header Offset   001DAD2A (1944874)\n-23D4DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F732 Ext File Attributes   00000000 (0)\n+23F736 Local Header Offset   001E5590 (1987984)\n+23F73A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D4DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F73A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D515 CENTRAL HEADER #1819  02014B50 (33639248)\n-23D519 Created Zip Spec      14 (20) '2.0'\n-23D51A Created OS            00 (0) 'MS-DOS'\n-23D51B Extract Zip Spec      14 (20) '2.0'\n-23D51C Extract OS            00 (0) 'MS-DOS'\n-23D51D General Purpose Flag  0808 (2056)\n+23F76F CENTRAL HEADER #1819  02014B50 (33639248)\n+23F773 Created Zip Spec      14 (20) '2.0'\n+23F774 Created OS            00 (0) 'MS-DOS'\n+23F775 Extract Zip Spec      14 (20) '2.0'\n+23F776 Extract OS            00 (0) 'MS-DOS'\n+23F777 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D51F Compression Method    0008 (8) 'Deflated'\n-23D521 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D525 CRC                   6A312F64 (1781608292)\n-23D529 Compressed Size       00000346 (838)\n-23D52D Uncompressed Size     00000727 (1831)\n-23D531 Filename Length       003D (61)\n-23D533 Extra Length          0000 (0)\n-23D535 Comment Length        0000 (0)\n-23D537 Disk Start            0000 (0)\n-23D539 Int File Attributes   0000 (0)\n+23F779 Compression Method    0008 (8) 'Deflated'\n+23F77B Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F77F CRC                   9A414F54 (2587971412)\n+23F783 Compressed Size       000004FD (1277)\n+23F787 Uncompressed Size     00000A4B (2635)\n+23F78B Filename Length       0044 (68)\n+23F78D Extra Length          0000 (0)\n+23F78F Comment Length        0000 (0)\n+23F791 Disk Start            0000 (0)\n+23F793 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D53B Ext File Attributes   00000000 (0)\n-23D53F Local Header Offset   001DB9A9 (1948073)\n-23D543 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F795 Ext File Attributes   00000000 (0)\n+23F799 Local Header Offset   001E712B (1995051)\n+23F79D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D543: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F79D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D580 CENTRAL HEADER #1820  02014B50 (33639248)\n-23D584 Created Zip Spec      14 (20) '2.0'\n-23D585 Created OS            00 (0) 'MS-DOS'\n-23D586 Extract Zip Spec      14 (20) '2.0'\n-23D587 Extract OS            00 (0) 'MS-DOS'\n-23D588 General Purpose Flag  0808 (2056)\n+23F7E1 CENTRAL HEADER #1820  02014B50 (33639248)\n+23F7E5 Created Zip Spec      14 (20) '2.0'\n+23F7E6 Created OS            00 (0) 'MS-DOS'\n+23F7E7 Extract Zip Spec      14 (20) '2.0'\n+23F7E8 Extract OS            00 (0) 'MS-DOS'\n+23F7E9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D58A Compression Method    0008 (8) 'Deflated'\n-23D58C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D590 CRC                   EE87A59D (4001867165)\n-23D594 Compressed Size       000002CE (718)\n-23D598 Uncompressed Size     000005C7 (1479)\n-23D59C Filename Length       003D (61)\n-23D59E Extra Length          0000 (0)\n-23D5A0 Comment Length        0000 (0)\n-23D5A2 Disk Start            0000 (0)\n-23D5A4 Int File Attributes   0000 (0)\n+23F7EB Compression Method    0008 (8) 'Deflated'\n+23F7ED Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F7F1 CRC                   4BAE3F59 (1269710681)\n+23F7F5 Compressed Size       0000035B (859)\n+23F7F9 Uncompressed Size     00000792 (1938)\n+23F7FD Filename Length       003B (59)\n+23F7FF Extra Length          0000 (0)\n+23F801 Comment Length        0000 (0)\n+23F803 Disk Start            0000 (0)\n+23F805 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D5A6 Ext File Attributes   00000000 (0)\n-23D5AA Local Header Offset   001DBD5A (1949018)\n-23D5AE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F807 Ext File Attributes   00000000 (0)\n+23F80B Local Header Offset   001E769A (1996442)\n+23F80F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D5AE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F80F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D5EB CENTRAL HEADER #1821  02014B50 (33639248)\n-23D5EF Created Zip Spec      14 (20) '2.0'\n-23D5F0 Created OS            00 (0) 'MS-DOS'\n-23D5F1 Extract Zip Spec      14 (20) '2.0'\n-23D5F2 Extract OS            00 (0) 'MS-DOS'\n-23D5F3 General Purpose Flag  0808 (2056)\n+23F84A CENTRAL HEADER #1821  02014B50 (33639248)\n+23F84E Created Zip Spec      14 (20) '2.0'\n+23F84F Created OS            00 (0) 'MS-DOS'\n+23F850 Extract Zip Spec      14 (20) '2.0'\n+23F851 Extract OS            00 (0) 'MS-DOS'\n+23F852 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D5F5 Compression Method    0008 (8) 'Deflated'\n-23D5F7 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D5FB CRC                   9EA0D74F (2661341007)\n-23D5FF Compressed Size       0000033D (829)\n-23D603 Uncompressed Size     000006EF (1775)\n-23D607 Filename Length       0037 (55)\n-23D609 Extra Length          0000 (0)\n-23D60B Comment Length        0000 (0)\n-23D60D Disk Start            0000 (0)\n-23D60F Int File Attributes   0000 (0)\n+23F854 Compression Method    0008 (8) 'Deflated'\n+23F856 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F85A CRC                   DA561E50 (3663076944)\n+23F85E Compressed Size       0000035F (863)\n+23F862 Uncompressed Size     0000070B (1803)\n+23F866 Filename Length       0038 (56)\n+23F868 Extra Length          0000 (0)\n+23F86A Comment Length        0000 (0)\n+23F86C Disk Start            0000 (0)\n+23F86E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D611 Ext File Attributes   00000000 (0)\n-23D615 Local Header Offset   001DC093 (1949843)\n-23D619 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F870 Ext File Attributes   00000000 (0)\n+23F874 Local Header Offset   001E7A5E (1997406)\n+23F878 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D619: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F878: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D650 CENTRAL HEADER #1822  02014B50 (33639248)\n-23D654 Created Zip Spec      14 (20) '2.0'\n-23D655 Created OS            00 (0) 'MS-DOS'\n-23D656 Extract Zip Spec      14 (20) '2.0'\n-23D657 Extract OS            00 (0) 'MS-DOS'\n-23D658 General Purpose Flag  0808 (2056)\n+23F8B0 CENTRAL HEADER #1822  02014B50 (33639248)\n+23F8B4 Created Zip Spec      14 (20) '2.0'\n+23F8B5 Created OS            00 (0) 'MS-DOS'\n+23F8B6 Extract Zip Spec      14 (20) '2.0'\n+23F8B7 Extract OS            00 (0) 'MS-DOS'\n+23F8B8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D65A Compression Method    0008 (8) 'Deflated'\n-23D65C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D660 CRC                   4F5E3DED (1331576301)\n-23D664 Compressed Size       000005A2 (1442)\n-23D668 Uncompressed Size     00000C13 (3091)\n-23D66C Filename Length       003C (60)\n-23D66E Extra Length          0000 (0)\n-23D670 Comment Length        0000 (0)\n-23D672 Disk Start            0000 (0)\n-23D674 Int File Attributes   0000 (0)\n+23F8BA Compression Method    0008 (8) 'Deflated'\n+23F8BC Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F8C0 CRC                   00A2AB95 (10660757)\n+23F8C4 Compressed Size       00000595 (1429)\n+23F8C8 Uncompressed Size     00000C7F (3199)\n+23F8CC Filename Length       003C (60)\n+23F8CE Extra Length          0000 (0)\n+23F8D0 Comment Length        0000 (0)\n+23F8D2 Disk Start            0000 (0)\n+23F8D4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D676 Ext File Attributes   00000000 (0)\n-23D67A Local Header Offset   001DC435 (1950773)\n-23D67E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F8D6 Ext File Attributes   00000000 (0)\n+23F8DA Local Header Offset   001E7E23 (1998371)\n+23F8DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D67E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F8DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D6BA CENTRAL HEADER #1823  02014B50 (33639248)\n-23D6BE Created Zip Spec      14 (20) '2.0'\n-23D6BF Created OS            00 (0) 'MS-DOS'\n-23D6C0 Extract Zip Spec      14 (20) '2.0'\n-23D6C1 Extract OS            00 (0) 'MS-DOS'\n-23D6C2 General Purpose Flag  0808 (2056)\n+23F91A CENTRAL HEADER #1823  02014B50 (33639248)\n+23F91E Created Zip Spec      14 (20) '2.0'\n+23F91F Created OS            00 (0) 'MS-DOS'\n+23F920 Extract Zip Spec      14 (20) '2.0'\n+23F921 Extract OS            00 (0) 'MS-DOS'\n+23F922 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D6C4 Compression Method    0008 (8) 'Deflated'\n-23D6C6 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D6CA CRC                   9B537823 (2605938723)\n-23D6CE Compressed Size       0000057E (1406)\n-23D6D2 Uncompressed Size     00000C42 (3138)\n-23D6D6 Filename Length       0036 (54)\n-23D6D8 Extra Length          0000 (0)\n-23D6DA Comment Length        0000 (0)\n-23D6DC Disk Start            0000 (0)\n-23D6DE Int File Attributes   0000 (0)\n+23F924 Compression Method    0008 (8) 'Deflated'\n+23F926 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F92A CRC                   060EB252 (101626450)\n+23F92E Compressed Size       0000053C (1340)\n+23F932 Uncompressed Size     00000AC0 (2752)\n+23F936 Filename Length       003F (63)\n+23F938 Extra Length          0000 (0)\n+23F93A Comment Length        0000 (0)\n+23F93C Disk Start            0000 (0)\n+23F93E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D6E0 Ext File Attributes   00000000 (0)\n-23D6E4 Local Header Offset   001DCA41 (1952321)\n-23D6E8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F940 Ext File Attributes   00000000 (0)\n+23F944 Local Header Offset   001E8422 (1999906)\n+23F948 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D6E8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F948: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D71E CENTRAL HEADER #1824  02014B50 (33639248)\n-23D722 Created Zip Spec      14 (20) '2.0'\n-23D723 Created OS            00 (0) 'MS-DOS'\n-23D724 Extract Zip Spec      14 (20) '2.0'\n-23D725 Extract OS            00 (0) 'MS-DOS'\n-23D726 General Purpose Flag  0808 (2056)\n+23F987 CENTRAL HEADER #1824  02014B50 (33639248)\n+23F98B Created Zip Spec      14 (20) '2.0'\n+23F98C Created OS            00 (0) 'MS-DOS'\n+23F98D Extract Zip Spec      14 (20) '2.0'\n+23F98E Extract OS            00 (0) 'MS-DOS'\n+23F98F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D728 Compression Method    0008 (8) 'Deflated'\n-23D72A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D72E CRC                   FA00D04F (4194357327)\n-23D732 Compressed Size       00001097 (4247)\n-23D736 Uncompressed Size     00006112 (24850)\n-23D73A Filename Length       0037 (55)\n-23D73C Extra Length          0000 (0)\n-23D73E Comment Length        0000 (0)\n-23D740 Disk Start            0000 (0)\n-23D742 Int File Attributes   0000 (0)\n+23F991 Compression Method    0008 (8) 'Deflated'\n+23F993 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23F997 CRC                   37CC1834 (936122420)\n+23F99B Compressed Size       00000BFC (3068)\n+23F99F Uncompressed Size     000035A9 (13737)\n+23F9A3 Filename Length       003C (60)\n+23F9A5 Extra Length          0000 (0)\n+23F9A7 Comment Length        0000 (0)\n+23F9A9 Disk Start            0000 (0)\n+23F9AB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D744 Ext File Attributes   00000000 (0)\n-23D748 Local Header Offset   001DD023 (1953827)\n-23D74C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23F9AD Ext File Attributes   00000000 (0)\n+23F9B1 Local Header Offset   001E89CB (2001355)\n+23F9B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D74C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23F9B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D783 CENTRAL HEADER #1825  02014B50 (33639248)\n-23D787 Created Zip Spec      14 (20) '2.0'\n-23D788 Created OS            00 (0) 'MS-DOS'\n-23D789 Extract Zip Spec      14 (20) '2.0'\n-23D78A Extract OS            00 (0) 'MS-DOS'\n-23D78B General Purpose Flag  0808 (2056)\n+23F9F1 CENTRAL HEADER #1825  02014B50 (33639248)\n+23F9F5 Created Zip Spec      14 (20) '2.0'\n+23F9F6 Created OS            00 (0) 'MS-DOS'\n+23F9F7 Extract Zip Spec      14 (20) '2.0'\n+23F9F8 Extract OS            00 (0) 'MS-DOS'\n+23F9F9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D78D Compression Method    0008 (8) 'Deflated'\n-23D78F Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D793 CRC                   EA548F41 (3931410241)\n-23D797 Compressed Size       000005A9 (1449)\n-23D79B Uncompressed Size     00000CF9 (3321)\n-23D79F Filename Length       0038 (56)\n-23D7A1 Extra Length          0000 (0)\n-23D7A3 Comment Length        0000 (0)\n-23D7A5 Disk Start            0000 (0)\n-23D7A7 Int File Attributes   0000 (0)\n+23F9FB Compression Method    0008 (8) 'Deflated'\n+23F9FD Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23FA01 CRC                   66243DE3 (1713651171)\n+23FA05 Compressed Size       00000505 (1285)\n+23FA09 Uncompressed Size     00000AB0 (2736)\n+23FA0D Filename Length       0039 (57)\n+23FA0F Extra Length          0000 (0)\n+23FA11 Comment Length        0000 (0)\n+23FA13 Disk Start            0000 (0)\n+23FA15 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D7A9 Ext File Attributes   00000000 (0)\n-23D7AD Local Header Offset   001DE11F (1958175)\n-23D7B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23FA17 Ext File Attributes   00000000 (0)\n+23FA1B Local Header Offset   001E9631 (2004529)\n+23FA1F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D7B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23FA1F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D7E9 CENTRAL HEADER #1826  02014B50 (33639248)\n-23D7ED Created Zip Spec      14 (20) '2.0'\n-23D7EE Created OS            00 (0) 'MS-DOS'\n-23D7EF Extract Zip Spec      14 (20) '2.0'\n-23D7F0 Extract OS            00 (0) 'MS-DOS'\n-23D7F1 General Purpose Flag  0808 (2056)\n+23FA58 CENTRAL HEADER #1826  02014B50 (33639248)\n+23FA5C Created Zip Spec      14 (20) '2.0'\n+23FA5D Created OS            00 (0) 'MS-DOS'\n+23FA5E Extract Zip Spec      14 (20) '2.0'\n+23FA5F Extract OS            00 (0) 'MS-DOS'\n+23FA60 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D7F3 Compression Method    0008 (8) 'Deflated'\n-23D7F5 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D7F9 CRC                   0F4C49C0 (256657856)\n-23D7FD Compressed Size       0000059B (1435)\n-23D801 Uncompressed Size     00000BEC (3052)\n-23D805 Filename Length       0039 (57)\n-23D807 Extra Length          0000 (0)\n-23D809 Comment Length        0000 (0)\n-23D80B Disk Start            0000 (0)\n-23D80D Int File Attributes   0000 (0)\n+23FA62 Compression Method    0008 (8) 'Deflated'\n+23FA64 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23FA68 CRC                   1BFC238A (469509002)\n+23FA6C Compressed Size       000004FC (1276)\n+23FA70 Uncompressed Size     00000A2F (2607)\n+23FA74 Filename Length       003E (62)\n+23FA76 Extra Length          0000 (0)\n+23FA78 Comment Length        0000 (0)\n+23FA7A Disk Start            0000 (0)\n+23FA7C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D80F Ext File Attributes   00000000 (0)\n-23D813 Local Header Offset   001DE72E (1959726)\n-23D817 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23FA7E Ext File Attributes   00000000 (0)\n+23FA82 Local Header Offset   001E9B9D (2005917)\n+23FA86 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D817: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23FA86: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D850 CENTRAL HEADER #1827  02014B50 (33639248)\n-23D854 Created Zip Spec      14 (20) '2.0'\n-23D855 Created OS            00 (0) 'MS-DOS'\n-23D856 Extract Zip Spec      14 (20) '2.0'\n-23D857 Extract OS            00 (0) 'MS-DOS'\n-23D858 General Purpose Flag  0808 (2056)\n+23FAC4 CENTRAL HEADER #1827  02014B50 (33639248)\n+23FAC8 Created Zip Spec      14 (20) '2.0'\n+23FAC9 Created OS            00 (0) 'MS-DOS'\n+23FACA Extract Zip Spec      14 (20) '2.0'\n+23FACB Extract OS            00 (0) 'MS-DOS'\n+23FACC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D85A Compression Method    0008 (8) 'Deflated'\n-23D85C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D860 CRC                   D55758DF (3579271391)\n-23D864 Compressed Size       00000564 (1380)\n-23D868 Uncompressed Size     00000B49 (2889)\n-23D86C Filename Length       0037 (55)\n-23D86E Extra Length          0000 (0)\n-23D870 Comment Length        0000 (0)\n-23D872 Disk Start            0000 (0)\n-23D874 Int File Attributes   0000 (0)\n+23FACE Compression Method    0008 (8) 'Deflated'\n+23FAD0 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23FAD4 CRC                   57F2E114 (1475535124)\n+23FAD8 Compressed Size       000011CF (4559)\n+23FADC Uncompressed Size     00005AB2 (23218)\n+23FAE0 Filename Length       0034 (52)\n+23FAE2 Extra Length          0000 (0)\n+23FAE4 Comment Length        0000 (0)\n+23FAE6 Disk Start            0000 (0)\n+23FAE8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D876 Ext File Attributes   00000000 (0)\n-23D87A Local Header Offset   001DED30 (1961264)\n-23D87E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23FAEA Ext File Attributes   00000000 (0)\n+23FAEE Local Header Offset   001EA105 (2007301)\n+23FAF2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D87E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23FAF2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D8B5 CENTRAL HEADER #1828  02014B50 (33639248)\n-23D8B9 Created Zip Spec      14 (20) '2.0'\n-23D8BA Created OS            00 (0) 'MS-DOS'\n-23D8BB Extract Zip Spec      14 (20) '2.0'\n-23D8BC Extract OS            00 (0) 'MS-DOS'\n-23D8BD General Purpose Flag  0808 (2056)\n+23FB26 CENTRAL HEADER #1828  02014B50 (33639248)\n+23FB2A Created Zip Spec      14 (20) '2.0'\n+23FB2B Created OS            00 (0) 'MS-DOS'\n+23FB2C Extract Zip Spec      14 (20) '2.0'\n+23FB2D Extract OS            00 (0) 'MS-DOS'\n+23FB2E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D8BF Compression Method    0008 (8) 'Deflated'\n-23D8C1 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D8C5 CRC                   D3EA2D1D (3555339549)\n-23D8C9 Compressed Size       0000052A (1322)\n-23D8CD Uncompressed Size     00000BA9 (2985)\n-23D8D1 Filename Length       0040 (64)\n-23D8D3 Extra Length          0000 (0)\n-23D8D5 Comment Length        0000 (0)\n-23D8D7 Disk Start            0000 (0)\n-23D8D9 Int File Attributes   0000 (0)\n+23FB30 Compression Method    0008 (8) 'Deflated'\n+23FB32 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23FB36 CRC                   7366BE52 (1936113234)\n+23FB3A Compressed Size       00001AD2 (6866)\n+23FB3E Uncompressed Size     0000A298 (41624)\n+23FB42 Filename Length       0033 (51)\n+23FB44 Extra Length          0000 (0)\n+23FB46 Comment Length        0000 (0)\n+23FB48 Disk Start            0000 (0)\n+23FB4A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D8DB Ext File Attributes   00000000 (0)\n-23D8DF Local Header Offset   001DF2F9 (1962745)\n-23D8E3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23FB4C Ext File Attributes   00000000 (0)\n+23FB50 Local Header Offset   001EB336 (2011958)\n+23FB54 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D8E3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23FB54: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D923 CENTRAL HEADER #1829  02014B50 (33639248)\n-23D927 Created Zip Spec      14 (20) '2.0'\n-23D928 Created OS            00 (0) 'MS-DOS'\n-23D929 Extract Zip Spec      14 (20) '2.0'\n-23D92A Extract OS            00 (0) 'MS-DOS'\n-23D92B General Purpose Flag  0808 (2056)\n+23FB87 CENTRAL HEADER #1829  02014B50 (33639248)\n+23FB8B Created Zip Spec      14 (20) '2.0'\n+23FB8C Created OS            00 (0) 'MS-DOS'\n+23FB8D Extract Zip Spec      14 (20) '2.0'\n+23FB8E Extract OS            00 (0) 'MS-DOS'\n+23FB8F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D92D Compression Method    0008 (8) 'Deflated'\n-23D92F Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D933 CRC                   3ADD7788 (987592584)\n-23D937 Compressed Size       0000034E (846)\n-23D93B Uncompressed Size     000007D9 (2009)\n-23D93F Filename Length       0040 (64)\n-23D941 Extra Length          0000 (0)\n-23D943 Comment Length        0000 (0)\n-23D945 Disk Start            0000 (0)\n-23D947 Int File Attributes   0000 (0)\n+23FB91 Compression Method    0008 (8) 'Deflated'\n+23FB93 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23FB97 CRC                   44EA1A2E (1156192814)\n+23FB9B Compressed Size       00000362 (866)\n+23FB9F Uncompressed Size     000007A1 (1953)\n+23FBA3 Filename Length       003A (58)\n+23FBA5 Extra Length          0000 (0)\n+23FBA7 Comment Length        0000 (0)\n+23FBA9 Disk Start            0000 (0)\n+23FBAB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D949 Ext File Attributes   00000000 (0)\n-23D94D Local Header Offset   001DF891 (1964177)\n-23D951 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23FBAD Ext File Attributes   00000000 (0)\n+23FBB1 Local Header Offset   001ECE69 (2018921)\n+23FBB5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D951: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23FBB5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D991 CENTRAL HEADER #1830  02014B50 (33639248)\n-23D995 Created Zip Spec      14 (20) '2.0'\n-23D996 Created OS            00 (0) 'MS-DOS'\n-23D997 Extract Zip Spec      14 (20) '2.0'\n-23D998 Extract OS            00 (0) 'MS-DOS'\n-23D999 General Purpose Flag  0808 (2056)\n+23FBEF CENTRAL HEADER #1830  02014B50 (33639248)\n+23FBF3 Created Zip Spec      14 (20) '2.0'\n+23FBF4 Created OS            00 (0) 'MS-DOS'\n+23FBF5 Extract Zip Spec      14 (20) '2.0'\n+23FBF6 Extract OS            00 (0) 'MS-DOS'\n+23FBF7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23D99B Compression Method    0008 (8) 'Deflated'\n-23D99D Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23D9A1 CRC                   B957E47F (3109545087)\n-23D9A5 Compressed Size       0000035B (859)\n-23D9A9 Uncompressed Size     00000795 (1941)\n-23D9AD Filename Length       003C (60)\n-23D9AF Extra Length          0000 (0)\n-23D9B1 Comment Length        0000 (0)\n-23D9B3 Disk Start            0000 (0)\n-23D9B5 Int File Attributes   0000 (0)\n+23FBF9 Compression Method    0008 (8) 'Deflated'\n+23FBFB Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23FBFF CRC                   0EA48277 (245662327)\n+23FC03 Compressed Size       00000365 (869)\n+23FC07 Uncompressed Size     000007B2 (1970)\n+23FC0B Filename Length       0040 (64)\n+23FC0D Extra Length          0000 (0)\n+23FC0F Comment Length        0000 (0)\n+23FC11 Disk Start            0000 (0)\n+23FC13 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23D9B7 Ext File Attributes   00000000 (0)\n-23D9BB Local Header Offset   001DFC4D (1965133)\n-23D9BF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23FC15 Ext File Attributes   00000000 (0)\n+23FC19 Local Header Offset   001ED233 (2019891)\n+23FC1D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23D9BF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23FC1D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23D9FB CENTRAL HEADER #1831  02014B50 (33639248)\n-23D9FF Created Zip Spec      14 (20) '2.0'\n-23DA00 Created OS            00 (0) 'MS-DOS'\n-23DA01 Extract Zip Spec      14 (20) '2.0'\n-23DA02 Extract OS            00 (0) 'MS-DOS'\n-23DA03 General Purpose Flag  0808 (2056)\n+23FC5D CENTRAL HEADER #1831  02014B50 (33639248)\n+23FC61 Created Zip Spec      14 (20) '2.0'\n+23FC62 Created OS            00 (0) 'MS-DOS'\n+23FC63 Extract Zip Spec      14 (20) '2.0'\n+23FC64 Extract OS            00 (0) 'MS-DOS'\n+23FC65 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23DA05 Compression Method    0008 (8) 'Deflated'\n-23DA07 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23DA0B CRC                   27E32CDA (669199578)\n-23DA0F Compressed Size       00000590 (1424)\n-23DA13 Uncompressed Size     00000EE5 (3813)\n-23DA17 Filename Length       0033 (51)\n-23DA19 Extra Length          0000 (0)\n-23DA1B Comment Length        0000 (0)\n-23DA1D Disk Start            0000 (0)\n-23DA1F Int File Attributes   0000 (0)\n+23FC67 Compression Method    0008 (8) 'Deflated'\n+23FC69 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23FC6D CRC                   D18F68BE (3515836606)\n+23FC71 Compressed Size       00000612 (1554)\n+23FC75 Uncompressed Size     00000D2C (3372)\n+23FC79 Filename Length       0036 (54)\n+23FC7B Extra Length          0000 (0)\n+23FC7D Comment Length        0000 (0)\n+23FC7F Disk Start            0000 (0)\n+23FC81 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23DA21 Ext File Attributes   00000000 (0)\n-23DA25 Local Header Offset   001E0012 (1966098)\n-23DA29 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23FC83 Ext File Attributes   00000000 (0)\n+23FC87 Local Header Offset   001ED606 (2020870)\n+23FC8B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23DA29: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23FC8B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23DA5C CENTRAL HEADER #1832  02014B50 (33639248)\n-23DA60 Created Zip Spec      14 (20) '2.0'\n-23DA61 Created OS            00 (0) 'MS-DOS'\n-23DA62 Extract Zip Spec      14 (20) '2.0'\n-23DA63 Extract OS            00 (0) 'MS-DOS'\n-23DA64 General Purpose Flag  0808 (2056)\n+23FCC1 CENTRAL HEADER #1832  02014B50 (33639248)\n+23FCC5 Created Zip Spec      14 (20) '2.0'\n+23FCC6 Created OS            00 (0) 'MS-DOS'\n+23FCC7 Extract Zip Spec      14 (20) '2.0'\n+23FCC8 Extract OS            00 (0) 'MS-DOS'\n+23FCC9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23DA66 Compression Method    0008 (8) 'Deflated'\n-23DA68 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23DA6C CRC                   96A3AA02 (2527308290)\n-23DA70 Compressed Size       00000598 (1432)\n-23DA74 Uncompressed Size     00000D62 (3426)\n-23DA78 Filename Length       0039 (57)\n-23DA7A Extra Length          0000 (0)\n-23DA7C Comment Length        0000 (0)\n-23DA7E Disk Start            0000 (0)\n-23DA80 Int File Attributes   0000 (0)\n+23FCCB Compression Method    0008 (8) 'Deflated'\n+23FCCD Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23FCD1 CRC                   E6FF39F2 (3875486194)\n+23FCD5 Compressed Size       0000026B (619)\n+23FCD9 Uncompressed Size     0000046B (1131)\n+23FCDD Filename Length       003D (61)\n+23FCDF Extra Length          0000 (0)\n+23FCE1 Comment Length        0000 (0)\n+23FCE3 Disk Start            0000 (0)\n+23FCE5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23DA82 Ext File Attributes   00000000 (0)\n-23DA86 Local Header Offset   001E0603 (1967619)\n-23DA8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23FCE7 Ext File Attributes   00000000 (0)\n+23FCEB Local Header Offset   001EDC7C (2022524)\n+23FCEF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23DA8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23FCEF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23DAC3 CENTRAL HEADER #1833  02014B50 (33639248)\n-23DAC7 Created Zip Spec      14 (20) '2.0'\n-23DAC8 Created OS            00 (0) 'MS-DOS'\n-23DAC9 Extract Zip Spec      14 (20) '2.0'\n-23DACA Extract OS            00 (0) 'MS-DOS'\n-23DACB General Purpose Flag  0808 (2056)\n+23FD2C CENTRAL HEADER #1833  02014B50 (33639248)\n+23FD30 Created Zip Spec      14 (20) '2.0'\n+23FD31 Created OS            00 (0) 'MS-DOS'\n+23FD32 Extract Zip Spec      14 (20) '2.0'\n+23FD33 Extract OS            00 (0) 'MS-DOS'\n+23FD34 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23DACD Compression Method    0008 (8) 'Deflated'\n-23DACF Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23DAD3 CRC                   CA81C016 (3397500950)\n-23DAD7 Compressed Size       00000887 (2183)\n-23DADB Uncompressed Size     00002307 (8967)\n-23DADF Filename Length       0036 (54)\n-23DAE1 Extra Length          0000 (0)\n-23DAE3 Comment Length        0000 (0)\n-23DAE5 Disk Start            0000 (0)\n-23DAE7 Int File Attributes   0000 (0)\n+23FD36 Compression Method    0008 (8) 'Deflated'\n+23FD38 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23FD3C CRC                   265DEF91 (643690385)\n+23FD40 Compressed Size       000004A9 (1193)\n+23FD44 Uncompressed Size     0000098C (2444)\n+23FD48 Filename Length       003A (58)\n+23FD4A Extra Length          0000 (0)\n+23FD4C Comment Length        0000 (0)\n+23FD4E Disk Start            0000 (0)\n+23FD50 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23DAE9 Ext File Attributes   00000000 (0)\n-23DAED Local Header Offset   001E0C02 (1969154)\n-23DAF1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23FD52 Ext File Attributes   00000000 (0)\n+23FD56 Local Header Offset   001EDF52 (2023250)\n+23FD5A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23DAF1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23FD5A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23DB27 CENTRAL HEADER #1834  02014B50 (33639248)\n-23DB2B Created Zip Spec      14 (20) '2.0'\n-23DB2C Created OS            00 (0) 'MS-DOS'\n-23DB2D Extract Zip Spec      14 (20) '2.0'\n-23DB2E Extract OS            00 (0) 'MS-DOS'\n-23DB2F General Purpose Flag  0808 (2056)\n+23FD94 CENTRAL HEADER #1834  02014B50 (33639248)\n+23FD98 Created Zip Spec      14 (20) '2.0'\n+23FD99 Created OS            00 (0) 'MS-DOS'\n+23FD9A Extract Zip Spec      14 (20) '2.0'\n+23FD9B Extract OS            00 (0) 'MS-DOS'\n+23FD9C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23DB31 Compression Method    0008 (8) 'Deflated'\n-23DB33 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23DB37 CRC                   06019AC3 (100768451)\n-23DB3B Compressed Size       0000051C (1308)\n-23DB3F Uncompressed Size     00000A6E (2670)\n-23DB43 Filename Length       0039 (57)\n-23DB45 Extra Length          0000 (0)\n-23DB47 Comment Length        0000 (0)\n-23DB49 Disk Start            0000 (0)\n-23DB4B Int File Attributes   0000 (0)\n+23FD9E Compression Method    0008 (8) 'Deflated'\n+23FDA0 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23FDA4 CRC                   E295C65E (3801466462)\n+23FDA8 Compressed Size       0000010F (271)\n+23FDAC Uncompressed Size     0000026A (618)\n+23FDB0 Filename Length       0037 (55)\n+23FDB2 Extra Length          0000 (0)\n+23FDB4 Comment Length        0000 (0)\n+23FDB6 Disk Start            0000 (0)\n+23FDB8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23DB4D Ext File Attributes   00000000 (0)\n-23DB51 Local Header Offset   001E14ED (1971437)\n-23DB55 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23FDBA Ext File Attributes   00000000 (0)\n+23FDBE Local Header Offset   001EE463 (2024547)\n+23FDC2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23DB55: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23FDC2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23DB8E CENTRAL HEADER #1835  02014B50 (33639248)\n-23DB92 Created Zip Spec      14 (20) '2.0'\n-23DB93 Created OS            00 (0) 'MS-DOS'\n-23DB94 Extract Zip Spec      14 (20) '2.0'\n-23DB95 Extract OS            00 (0) 'MS-DOS'\n-23DB96 General Purpose Flag  0808 (2056)\n+23FDF9 CENTRAL HEADER #1835  02014B50 (33639248)\n+23FDFD Created Zip Spec      14 (20) '2.0'\n+23FDFE Created OS            00 (0) 'MS-DOS'\n+23FDFF Extract Zip Spec      14 (20) '2.0'\n+23FE00 Extract OS            00 (0) 'MS-DOS'\n+23FE01 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23DB98 Compression Method    0008 (8) 'Deflated'\n-23DB9A Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23DB9E CRC                   5603C310 (1443087120)\n-23DBA2 Compressed Size       00000799 (1945)\n-23DBA6 Uncompressed Size     00001463 (5219)\n-23DBAA Filename Length       0033 (51)\n-23DBAC Extra Length          0000 (0)\n-23DBAE Comment Length        0000 (0)\n-23DBB0 Disk Start            0000 (0)\n-23DBB2 Int File Attributes   0000 (0)\n+23FE03 Compression Method    0008 (8) 'Deflated'\n+23FE05 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23FE09 CRC                   BDD7BBBA (3185032122)\n+23FE0D Compressed Size       00000651 (1617)\n+23FE11 Uncompressed Size     00000E2C (3628)\n+23FE15 Filename Length       0034 (52)\n+23FE17 Extra Length          0000 (0)\n+23FE19 Comment Length        0000 (0)\n+23FE1B Disk Start            0000 (0)\n+23FE1D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23DBB4 Ext File Attributes   00000000 (0)\n-23DBB8 Local Header Offset   001E1A70 (1972848)\n-23DBBC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23FE1F Ext File Attributes   00000000 (0)\n+23FE23 Local Header Offset   001EE5D7 (2024919)\n+23FE27 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23DBBC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23FE27: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23DBEF CENTRAL HEADER #1836  02014B50 (33639248)\n-23DBF3 Created Zip Spec      14 (20) '2.0'\n-23DBF4 Created OS            00 (0) 'MS-DOS'\n-23DBF5 Extract Zip Spec      14 (20) '2.0'\n-23DBF6 Extract OS            00 (0) 'MS-DOS'\n-23DBF7 General Purpose Flag  0808 (2056)\n+23FE5B CENTRAL HEADER #1836  02014B50 (33639248)\n+23FE5F Created Zip Spec      14 (20) '2.0'\n+23FE60 Created OS            00 (0) 'MS-DOS'\n+23FE61 Extract Zip Spec      14 (20) '2.0'\n+23FE62 Extract OS            00 (0) 'MS-DOS'\n+23FE63 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23DBF9 Compression Method    0008 (8) 'Deflated'\n-23DBFB Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23DBFF CRC                   D1926FA5 (3516034981)\n-23DC03 Compressed Size       00000584 (1412)\n-23DC07 Uncompressed Size     00000BBB (3003)\n-23DC0B Filename Length       003E (62)\n-23DC0D Extra Length          0000 (0)\n-23DC0F Comment Length        0000 (0)\n-23DC11 Disk Start            0000 (0)\n-23DC13 Int File Attributes   0000 (0)\n+23FE65 Compression Method    0008 (8) 'Deflated'\n+23FE67 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23FE6B CRC                   42CFBA07 (1120909831)\n+23FE6F Compressed Size       00002C40 (11328)\n+23FE73 Uncompressed Size     00016026 (90150)\n+23FE77 Filename Length       0034 (52)\n+23FE79 Extra Length          0000 (0)\n+23FE7B Comment Length        0000 (0)\n+23FE7D Disk Start            0000 (0)\n+23FE7F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23DC15 Ext File Attributes   00000000 (0)\n-23DC19 Local Header Offset   001E226A (1974890)\n-23DC1D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23FE81 Ext File Attributes   00000000 (0)\n+23FE85 Local Header Offset   001EEC8A (2026634)\n+23FE89 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23DC1D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23FE89: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23DC5B CENTRAL HEADER #1837  02014B50 (33639248)\n-23DC5F Created Zip Spec      14 (20) '2.0'\n-23DC60 Created OS            00 (0) 'MS-DOS'\n-23DC61 Extract Zip Spec      14 (20) '2.0'\n-23DC62 Extract OS            00 (0) 'MS-DOS'\n-23DC63 General Purpose Flag  0808 (2056)\n+23FEBD CENTRAL HEADER #1837  02014B50 (33639248)\n+23FEC1 Created Zip Spec      14 (20) '2.0'\n+23FEC2 Created OS            00 (0) 'MS-DOS'\n+23FEC3 Extract Zip Spec      14 (20) '2.0'\n+23FEC4 Extract OS            00 (0) 'MS-DOS'\n+23FEC5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23DC65 Compression Method    0008 (8) 'Deflated'\n-23DC67 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23DC6B CRC                   61E4315C (1642344796)\n-23DC6F Compressed Size       00001D8C (7564)\n-23DC73 Uncompressed Size     0000E195 (57749)\n-23DC77 Filename Length       0038 (56)\n-23DC79 Extra Length          0000 (0)\n-23DC7B Comment Length        0000 (0)\n-23DC7D Disk Start            0000 (0)\n-23DC7F Int File Attributes   0000 (0)\n+23FEC7 Compression Method    0008 (8) 'Deflated'\n+23FEC9 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23FECD CRC                   B1D0AB16 (2983242518)\n+23FED1 Compressed Size       000006DC (1756)\n+23FED5 Uncompressed Size     0000137B (4987)\n+23FED9 Filename Length       0038 (56)\n+23FEDB Extra Length          0000 (0)\n+23FEDD Comment Length        0000 (0)\n+23FEDF Disk Start            0000 (0)\n+23FEE1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23DC81 Ext File Attributes   00000000 (0)\n-23DC85 Local Header Offset   001E285A (1976410)\n-23DC89 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23FEE3 Ext File Attributes   00000000 (0)\n+23FEE7 Local Header Offset   001F192C (2038060)\n+23FEEB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23DC89: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23FEEB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23DCC1 CENTRAL HEADER #1838  02014B50 (33639248)\n-23DCC5 Created Zip Spec      14 (20) '2.0'\n-23DCC6 Created OS            00 (0) 'MS-DOS'\n-23DCC7 Extract Zip Spec      14 (20) '2.0'\n-23DCC8 Extract OS            00 (0) 'MS-DOS'\n-23DCC9 General Purpose Flag  0808 (2056)\n+23FF23 CENTRAL HEADER #1838  02014B50 (33639248)\n+23FF27 Created Zip Spec      14 (20) '2.0'\n+23FF28 Created OS            00 (0) 'MS-DOS'\n+23FF29 Extract Zip Spec      14 (20) '2.0'\n+23FF2A Extract OS            00 (0) 'MS-DOS'\n+23FF2B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23DCCB Compression Method    0008 (8) 'Deflated'\n-23DCCD Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23DCD1 CRC                   968E88D0 (2525923536)\n-23DCD5 Compressed Size       000005DD (1501)\n-23DCD9 Uncompressed Size     00000E0E (3598)\n-23DCDD Filename Length       003A (58)\n-23DCDF Extra Length          0000 (0)\n-23DCE1 Comment Length        0000 (0)\n-23DCE3 Disk Start            0000 (0)\n-23DCE5 Int File Attributes   0000 (0)\n+23FF2D Compression Method    0008 (8) 'Deflated'\n+23FF2F Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23FF33 CRC                   D684F652 (3599038034)\n+23FF37 Compressed Size       0000070B (1803)\n+23FF3B Uncompressed Size     0000127F (4735)\n+23FF3F Filename Length       003F (63)\n+23FF41 Extra Length          0000 (0)\n+23FF43 Comment Length        0000 (0)\n+23FF45 Disk Start            0000 (0)\n+23FF47 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23DCE7 Ext File Attributes   00000000 (0)\n-23DCEB Local Header Offset   001E464C (1984076)\n-23DCEF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23FF49 Ext File Attributes   00000000 (0)\n+23FF4D Local Header Offset   001F206E (2039918)\n+23FF51 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23DCEF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23FF51: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23DD29 CENTRAL HEADER #1839  02014B50 (33639248)\n-23DD2D Created Zip Spec      14 (20) '2.0'\n-23DD2E Created OS            00 (0) 'MS-DOS'\n-23DD2F Extract Zip Spec      14 (20) '2.0'\n-23DD30 Extract OS            00 (0) 'MS-DOS'\n-23DD31 General Purpose Flag  0808 (2056)\n+23FF90 CENTRAL HEADER #1839  02014B50 (33639248)\n+23FF94 Created Zip Spec      14 (20) '2.0'\n+23FF95 Created OS            00 (0) 'MS-DOS'\n+23FF96 Extract Zip Spec      14 (20) '2.0'\n+23FF97 Extract OS            00 (0) 'MS-DOS'\n+23FF98 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23DD33 Compression Method    0008 (8) 'Deflated'\n-23DD35 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23DD39 CRC                   E14A6B5A (3779750746)\n-23DD3D Compressed Size       00001448 (5192)\n-23DD41 Uncompressed Size     0000694D (26957)\n-23DD45 Filename Length       0038 (56)\n-23DD47 Extra Length          0000 (0)\n-23DD49 Comment Length        0000 (0)\n-23DD4B Disk Start            0000 (0)\n-23DD4D Int File Attributes   0000 (0)\n+23FF9A Compression Method    0008 (8) 'Deflated'\n+23FF9C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+23FFA0 CRC                   091B09EC (152766956)\n+23FFA4 Compressed Size       000004FF (1279)\n+23FFA8 Uncompressed Size     00000B45 (2885)\n+23FFAC Filename Length       003C (60)\n+23FFAE Extra Length          0000 (0)\n+23FFB0 Comment Length        0000 (0)\n+23FFB2 Disk Start            0000 (0)\n+23FFB4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23DD4F Ext File Attributes   00000000 (0)\n-23DD53 Local Header Offset   001E4C91 (1985681)\n-23DD57 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23FFB6 Ext File Attributes   00000000 (0)\n+23FFBA Local Header Offset   001F27E6 (2041830)\n+23FFBE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23DD57: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23FFBE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23DD8F CENTRAL HEADER #1840  02014B50 (33639248)\n-23DD93 Created Zip Spec      14 (20) '2.0'\n-23DD94 Created OS            00 (0) 'MS-DOS'\n-23DD95 Extract Zip Spec      14 (20) '2.0'\n-23DD96 Extract OS            00 (0) 'MS-DOS'\n-23DD97 General Purpose Flag  0808 (2056)\n+23FFFA CENTRAL HEADER #1840  02014B50 (33639248)\n+23FFFE Created Zip Spec      14 (20) '2.0'\n+23FFFF Created OS            00 (0) 'MS-DOS'\n+240000 Extract Zip Spec      14 (20) '2.0'\n+240001 Extract OS            00 (0) 'MS-DOS'\n+240002 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23DD99 Compression Method    0008 (8) 'Deflated'\n-23DD9B Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23DD9F CRC                   038157DF (58808287)\n-23DDA3 Compressed Size       00001B38 (6968)\n-23DDA7 Uncompressed Size     00009F03 (40707)\n-23DDAB Filename Length       0035 (53)\n-23DDAD Extra Length          0000 (0)\n-23DDAF Comment Length        0000 (0)\n-23DDB1 Disk Start            0000 (0)\n-23DDB3 Int File Attributes   0000 (0)\n+240004 Compression Method    0008 (8) 'Deflated'\n+240006 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+24000A CRC                   17688FAA (392728490)\n+24000E Compressed Size       000004CA (1226)\n+240012 Uncompressed Size     000009A8 (2472)\n+240016 Filename Length       0031 (49)\n+240018 Extra Length          0000 (0)\n+24001A Comment Length        0000 (0)\n+24001C Disk Start            0000 (0)\n+24001E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23DDB5 Ext File Attributes   00000000 (0)\n-23DDB9 Local Header Offset   001E613F (1990975)\n-23DDBD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240020 Ext File Attributes   00000000 (0)\n+240024 Local Header Offset   001F2D4F (2043215)\n+240028 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23DDBD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240028: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23DDF2 CENTRAL HEADER #1841  02014B50 (33639248)\n-23DDF6 Created Zip Spec      14 (20) '2.0'\n-23DDF7 Created OS            00 (0) 'MS-DOS'\n-23DDF8 Extract Zip Spec      14 (20) '2.0'\n-23DDF9 Extract OS            00 (0) 'MS-DOS'\n-23DDFA General Purpose Flag  0808 (2056)\n+240059 CENTRAL HEADER #1841  02014B50 (33639248)\n+24005D Created Zip Spec      14 (20) '2.0'\n+24005E Created OS            00 (0) 'MS-DOS'\n+24005F Extract Zip Spec      14 (20) '2.0'\n+240060 Extract OS            00 (0) 'MS-DOS'\n+240061 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23DDFC Compression Method    0008 (8) 'Deflated'\n-23DDFE Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23DE02 CRC                   9A414F54 (2587971412)\n-23DE06 Compressed Size       000004FD (1277)\n-23DE0A Uncompressed Size     00000A4B (2635)\n-23DE0E Filename Length       0044 (68)\n-23DE10 Extra Length          0000 (0)\n-23DE12 Comment Length        0000 (0)\n-23DE14 Disk Start            0000 (0)\n-23DE16 Int File Attributes   0000 (0)\n+240063 Compression Method    0008 (8) 'Deflated'\n+240065 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+240069 CRC                   0827F1CF (136835535)\n+24006D Compressed Size       000005B4 (1460)\n+240071 Uncompressed Size     00000C8B (3211)\n+240075 Filename Length       0035 (53)\n+240077 Extra Length          0000 (0)\n+240079 Comment Length        0000 (0)\n+24007B Disk Start            0000 (0)\n+24007D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23DE18 Ext File Attributes   00000000 (0)\n-23DE1C Local Header Offset   001E7CDA (1998042)\n-23DE20 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24007F Ext File Attributes   00000000 (0)\n+240083 Local Header Offset   001F3278 (2044536)\n+240087 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23DE20: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240087: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23DE64 CENTRAL HEADER #1842  02014B50 (33639248)\n-23DE68 Created Zip Spec      14 (20) '2.0'\n-23DE69 Created OS            00 (0) 'MS-DOS'\n-23DE6A Extract Zip Spec      14 (20) '2.0'\n-23DE6B Extract OS            00 (0) 'MS-DOS'\n-23DE6C General Purpose Flag  0808 (2056)\n+2400BC CENTRAL HEADER #1842  02014B50 (33639248)\n+2400C0 Created Zip Spec      14 (20) '2.0'\n+2400C1 Created OS            00 (0) 'MS-DOS'\n+2400C2 Extract Zip Spec      14 (20) '2.0'\n+2400C3 Extract OS            00 (0) 'MS-DOS'\n+2400C4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23DE6E Compression Method    0008 (8) 'Deflated'\n-23DE70 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23DE74 CRC                   4BAE3F59 (1269710681)\n-23DE78 Compressed Size       0000035B (859)\n-23DE7C Uncompressed Size     00000792 (1938)\n-23DE80 Filename Length       003B (59)\n-23DE82 Extra Length          0000 (0)\n-23DE84 Comment Length        0000 (0)\n-23DE86 Disk Start            0000 (0)\n-23DE88 Int File Attributes   0000 (0)\n+2400C6 Compression Method    0008 (8) 'Deflated'\n+2400C8 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+2400CC CRC                   430F5283 (1125077635)\n+2400D0 Compressed Size       0000056C (1388)\n+2400D4 Uncompressed Size     00000BD7 (3031)\n+2400D8 Filename Length       003E (62)\n+2400DA Extra Length          0000 (0)\n+2400DC Comment Length        0000 (0)\n+2400DE Disk Start            0000 (0)\n+2400E0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23DE8A Ext File Attributes   00000000 (0)\n-23DE8E Local Header Offset   001E8249 (1999433)\n-23DE92 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2400E2 Ext File Attributes   00000000 (0)\n+2400E6 Local Header Offset   001F388F (2046095)\n+2400EA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23DE92: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2400EA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23DECD CENTRAL HEADER #1843  02014B50 (33639248)\n-23DED1 Created Zip Spec      14 (20) '2.0'\n-23DED2 Created OS            00 (0) 'MS-DOS'\n-23DED3 Extract Zip Spec      14 (20) '2.0'\n-23DED4 Extract OS            00 (0) 'MS-DOS'\n-23DED5 General Purpose Flag  0808 (2056)\n+240128 CENTRAL HEADER #1843  02014B50 (33639248)\n+24012C Created Zip Spec      14 (20) '2.0'\n+24012D Created OS            00 (0) 'MS-DOS'\n+24012E Extract Zip Spec      14 (20) '2.0'\n+24012F Extract OS            00 (0) 'MS-DOS'\n+240130 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23DED7 Compression Method    0008 (8) 'Deflated'\n-23DED9 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23DEDD CRC                   DA561E50 (3663076944)\n-23DEE1 Compressed Size       0000035F (863)\n-23DEE5 Uncompressed Size     0000070B (1803)\n-23DEE9 Filename Length       0038 (56)\n-23DEEB Extra Length          0000 (0)\n-23DEED Comment Length        0000 (0)\n-23DEEF Disk Start            0000 (0)\n-23DEF1 Int File Attributes   0000 (0)\n+240132 Compression Method    0008 (8) 'Deflated'\n+240134 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n+240138 CRC                   A18F9C9F (2710543519)\n+24013C Compressed Size       000007A0 (1952)\n+240140 Uncompressed Size     000025D9 (9689)\n+240144 Filename Length       002F (47)\n+240146 Extra Length          0000 (0)\n+240148 Comment Length        0000 (0)\n+24014A Disk Start            0000 (0)\n+24014C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23DEF3 Ext File Attributes   00000000 (0)\n-23DEF7 Local Header Offset   001E860D (2000397)\n-23DEFB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24014E Ext File Attributes   00000000 (0)\n+240152 Local Header Offset   001F3E67 (2047591)\n+240156 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23DEFB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240156: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23DF33 CENTRAL HEADER #1844  02014B50 (33639248)\n-23DF37 Created Zip Spec      14 (20) '2.0'\n-23DF38 Created OS            00 (0) 'MS-DOS'\n-23DF39 Extract Zip Spec      14 (20) '2.0'\n-23DF3A Extract OS            00 (0) 'MS-DOS'\n-23DF3B General Purpose Flag  0808 (2056)\n+240185 CENTRAL HEADER #1844  02014B50 (33639248)\n+240189 Created Zip Spec      14 (20) '2.0'\n+24018A Created OS            00 (0) 'MS-DOS'\n+24018B Extract Zip Spec      14 (20) '2.0'\n+24018C Extract OS            00 (0) 'MS-DOS'\n+24018D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23DF3D Compression Method    0008 (8) 'Deflated'\n-23DF3F Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23DF43 CRC                   00A2AB95 (10660757)\n-23DF47 Compressed Size       00000595 (1429)\n-23DF4B Uncompressed Size     00000C7F (3199)\n-23DF4F Filename Length       003C (60)\n-23DF51 Extra Length          0000 (0)\n-23DF53 Comment Length        0000 (0)\n-23DF55 Disk Start            0000 (0)\n-23DF57 Int File Attributes   0000 (0)\n+24018F Compression Method    0008 (8) 'Deflated'\n+240191 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240195 CRC                   00000000 (0)\n+240199 Compressed Size       00000002 (2)\n+24019D Uncompressed Size     00000000 (0)\n+2401A1 Filename Length       001A (26)\n+2401A3 Extra Length          0000 (0)\n+2401A5 Comment Length        0000 (0)\n+2401A7 Disk Start            0000 (0)\n+2401A9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23DF59 Ext File Attributes   00000000 (0)\n-23DF5D Local Header Offset   001E89D2 (2001362)\n-23DF61 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2401AB Ext File Attributes   00000000 (0)\n+2401AF Local Header Offset   001F4664 (2049636)\n+2401B3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23DF61: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2401B3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23DF9D CENTRAL HEADER #1845  02014B50 (33639248)\n-23DFA1 Created Zip Spec      14 (20) '2.0'\n-23DFA2 Created OS            00 (0) 'MS-DOS'\n-23DFA3 Extract Zip Spec      14 (20) '2.0'\n-23DFA4 Extract OS            00 (0) 'MS-DOS'\n-23DFA5 General Purpose Flag  0808 (2056)\n+2401CD CENTRAL HEADER #1845  02014B50 (33639248)\n+2401D1 Created Zip Spec      14 (20) '2.0'\n+2401D2 Created OS            00 (0) 'MS-DOS'\n+2401D3 Extract Zip Spec      14 (20) '2.0'\n+2401D4 Extract OS            00 (0) 'MS-DOS'\n+2401D5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23DFA7 Compression Method    0008 (8) 'Deflated'\n-23DFA9 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23DFAD CRC                   060EB252 (101626450)\n-23DFB1 Compressed Size       0000053C (1340)\n-23DFB5 Uncompressed Size     00000AC0 (2752)\n-23DFB9 Filename Length       003F (63)\n-23DFBB Extra Length          0000 (0)\n-23DFBD Comment Length        0000 (0)\n-23DFBF Disk Start            0000 (0)\n-23DFC1 Int File Attributes   0000 (0)\n+2401D7 Compression Method    0008 (8) 'Deflated'\n+2401D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2401DD CRC                   42A6419F (1118192031)\n+2401E1 Compressed Size       00000374 (884)\n+2401E5 Uncompressed Size     00000A8E (2702)\n+2401E9 Filename Length       003A (58)\n+2401EB Extra Length          0000 (0)\n+2401ED Comment Length        0000 (0)\n+2401EF Disk Start            0000 (0)\n+2401F1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23DFC3 Ext File Attributes   00000000 (0)\n-23DFC7 Local Header Offset   001E8FD1 (2002897)\n-23DFCB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2401F3 Ext File Attributes   00000000 (0)\n+2401F7 Local Header Offset   001F46AE (2049710)\n+2401FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23DFCB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2401FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E00A CENTRAL HEADER #1846  02014B50 (33639248)\n-23E00E Created Zip Spec      14 (20) '2.0'\n-23E00F Created OS            00 (0) 'MS-DOS'\n-23E010 Extract Zip Spec      14 (20) '2.0'\n-23E011 Extract OS            00 (0) 'MS-DOS'\n-23E012 General Purpose Flag  0808 (2056)\n+240235 CENTRAL HEADER #1846  02014B50 (33639248)\n+240239 Created Zip Spec      14 (20) '2.0'\n+24023A Created OS            00 (0) 'MS-DOS'\n+24023B Extract Zip Spec      14 (20) '2.0'\n+24023C Extract OS            00 (0) 'MS-DOS'\n+24023D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E014 Compression Method    0008 (8) 'Deflated'\n-23E016 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E01A CRC                   37CC1834 (936122420)\n-23E01E Compressed Size       00000BFC (3068)\n-23E022 Uncompressed Size     000035A9 (13737)\n-23E026 Filename Length       003C (60)\n-23E028 Extra Length          0000 (0)\n-23E02A Comment Length        0000 (0)\n-23E02C Disk Start            0000 (0)\n-23E02E Int File Attributes   0000 (0)\n+24023F Compression Method    0008 (8) 'Deflated'\n+240241 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240245 CRC                   3EF8A330 (1056482096)\n+240249 Compressed Size       0000059B (1435)\n+24024D Uncompressed Size     00001076 (4214)\n+240251 Filename Length       0045 (69)\n+240253 Extra Length          0000 (0)\n+240255 Comment Length        0000 (0)\n+240257 Disk Start            0000 (0)\n+240259 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E030 Ext File Attributes   00000000 (0)\n-23E034 Local Header Offset   001E957A (2004346)\n-23E038 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24025B Ext File Attributes   00000000 (0)\n+24025F Local Header Offset   001F4A8A (2050698)\n+240263 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E038: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240263: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E074 CENTRAL HEADER #1847  02014B50 (33639248)\n-23E078 Created Zip Spec      14 (20) '2.0'\n-23E079 Created OS            00 (0) 'MS-DOS'\n-23E07A Extract Zip Spec      14 (20) '2.0'\n-23E07B Extract OS            00 (0) 'MS-DOS'\n-23E07C General Purpose Flag  0808 (2056)\n+2402A8 CENTRAL HEADER #1847  02014B50 (33639248)\n+2402AC Created Zip Spec      14 (20) '2.0'\n+2402AD Created OS            00 (0) 'MS-DOS'\n+2402AE Extract Zip Spec      14 (20) '2.0'\n+2402AF Extract OS            00 (0) 'MS-DOS'\n+2402B0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E07E Compression Method    0008 (8) 'Deflated'\n-23E080 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E084 CRC                   66243DE3 (1713651171)\n-23E088 Compressed Size       00000505 (1285)\n-23E08C Uncompressed Size     00000AB0 (2736)\n-23E090 Filename Length       0039 (57)\n-23E092 Extra Length          0000 (0)\n-23E094 Comment Length        0000 (0)\n-23E096 Disk Start            0000 (0)\n-23E098 Int File Attributes   0000 (0)\n+2402B2 Compression Method    0008 (8) 'Deflated'\n+2402B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2402B8 CRC                   EEF0F134 (4008767796)\n+2402BC Compressed Size       00000276 (630)\n+2402C0 Uncompressed Size     0000051B (1307)\n+2402C4 Filename Length       0032 (50)\n+2402C6 Extra Length          0000 (0)\n+2402C8 Comment Length        0000 (0)\n+2402CA Disk Start            0000 (0)\n+2402CC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E09A Ext File Attributes   00000000 (0)\n-23E09E Local Header Offset   001EA1E0 (2007520)\n-23E0A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2402CE Ext File Attributes   00000000 (0)\n+2402D2 Local Header Offset   001F5098 (2052248)\n+2402D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E0A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2402D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E0DB CENTRAL HEADER #1848  02014B50 (33639248)\n-23E0DF Created Zip Spec      14 (20) '2.0'\n-23E0E0 Created OS            00 (0) 'MS-DOS'\n-23E0E1 Extract Zip Spec      14 (20) '2.0'\n-23E0E2 Extract OS            00 (0) 'MS-DOS'\n-23E0E3 General Purpose Flag  0808 (2056)\n+240308 CENTRAL HEADER #1848  02014B50 (33639248)\n+24030C Created Zip Spec      14 (20) '2.0'\n+24030D Created OS            00 (0) 'MS-DOS'\n+24030E Extract Zip Spec      14 (20) '2.0'\n+24030F Extract OS            00 (0) 'MS-DOS'\n+240310 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E0E5 Compression Method    0008 (8) 'Deflated'\n-23E0E7 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E0EB CRC                   1BFC238A (469509002)\n-23E0EF Compressed Size       000004FC (1276)\n-23E0F3 Uncompressed Size     00000A2F (2607)\n-23E0F7 Filename Length       003E (62)\n-23E0F9 Extra Length          0000 (0)\n-23E0FB Comment Length        0000 (0)\n-23E0FD Disk Start            0000 (0)\n-23E0FF Int File Attributes   0000 (0)\n+240312 Compression Method    0008 (8) 'Deflated'\n+240314 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240318 CRC                   1D5DF166 (492695910)\n+24031C Compressed Size       00000217 (535)\n+240320 Uncompressed Size     000003AD (941)\n+240324 Filename Length       002E (46)\n+240326 Extra Length          0000 (0)\n+240328 Comment Length        0000 (0)\n+24032A Disk Start            0000 (0)\n+24032C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E101 Ext File Attributes   00000000 (0)\n-23E105 Local Header Offset   001EA74C (2008908)\n-23E109 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24032E Ext File Attributes   00000000 (0)\n+240332 Local Header Offset   001F536E (2052974)\n+240336 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E109: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240336: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E147 CENTRAL HEADER #1849  02014B50 (33639248)\n-23E14B Created Zip Spec      14 (20) '2.0'\n-23E14C Created OS            00 (0) 'MS-DOS'\n-23E14D Extract Zip Spec      14 (20) '2.0'\n-23E14E Extract OS            00 (0) 'MS-DOS'\n-23E14F General Purpose Flag  0808 (2056)\n+240364 CENTRAL HEADER #1849  02014B50 (33639248)\n+240368 Created Zip Spec      14 (20) '2.0'\n+240369 Created OS            00 (0) 'MS-DOS'\n+24036A Extract Zip Spec      14 (20) '2.0'\n+24036B Extract OS            00 (0) 'MS-DOS'\n+24036C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E151 Compression Method    0008 (8) 'Deflated'\n-23E153 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E157 CRC                   57F2E114 (1475535124)\n-23E15B Compressed Size       000011CF (4559)\n-23E15F Uncompressed Size     00005AB2 (23218)\n-23E163 Filename Length       0034 (52)\n-23E165 Extra Length          0000 (0)\n-23E167 Comment Length        0000 (0)\n-23E169 Disk Start            0000 (0)\n-23E16B Int File Attributes   0000 (0)\n+24036E Compression Method    0008 (8) 'Deflated'\n+240370 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240374 CRC                   FAB44FD1 (4206120913)\n+240378 Compressed Size       000002A1 (673)\n+24037C Uncompressed Size     000004FF (1279)\n+240380 Filename Length       0035 (53)\n+240382 Extra Length          0000 (0)\n+240384 Comment Length        0000 (0)\n+240386 Disk Start            0000 (0)\n+240388 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E16D Ext File Attributes   00000000 (0)\n-23E171 Local Header Offset   001EACB4 (2010292)\n-23E175 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24038A Ext File Attributes   00000000 (0)\n+24038E Local Header Offset   001F55E1 (2053601)\n+240392 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E175: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240392: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E1A9 CENTRAL HEADER #1850  02014B50 (33639248)\n-23E1AD Created Zip Spec      14 (20) '2.0'\n-23E1AE Created OS            00 (0) 'MS-DOS'\n-23E1AF Extract Zip Spec      14 (20) '2.0'\n-23E1B0 Extract OS            00 (0) 'MS-DOS'\n-23E1B1 General Purpose Flag  0808 (2056)\n+2403C7 CENTRAL HEADER #1850  02014B50 (33639248)\n+2403CB Created Zip Spec      14 (20) '2.0'\n+2403CC Created OS            00 (0) 'MS-DOS'\n+2403CD Extract Zip Spec      14 (20) '2.0'\n+2403CE Extract OS            00 (0) 'MS-DOS'\n+2403CF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E1B3 Compression Method    0008 (8) 'Deflated'\n-23E1B5 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E1B9 CRC                   7366BE52 (1936113234)\n-23E1BD Compressed Size       00001AD2 (6866)\n-23E1C1 Uncompressed Size     0000A298 (41624)\n-23E1C5 Filename Length       0033 (51)\n-23E1C7 Extra Length          0000 (0)\n-23E1C9 Comment Length        0000 (0)\n-23E1CB Disk Start            0000 (0)\n-23E1CD Int File Attributes   0000 (0)\n+2403D1 Compression Method    0008 (8) 'Deflated'\n+2403D3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2403D7 CRC                   0D3C7289 (222065289)\n+2403DB Compressed Size       000002C3 (707)\n+2403DF Uncompressed Size     0000064D (1613)\n+2403E3 Filename Length       0030 (48)\n+2403E5 Extra Length          0000 (0)\n+2403E7 Comment Length        0000 (0)\n+2403E9 Disk Start            0000 (0)\n+2403EB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E1CF Ext File Attributes   00000000 (0)\n-23E1D3 Local Header Offset   001EBEE5 (2014949)\n-23E1D7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2403ED Ext File Attributes   00000000 (0)\n+2403F1 Local Header Offset   001F58E5 (2054373)\n+2403F5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E1D7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2403F5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E20A CENTRAL HEADER #1851  02014B50 (33639248)\n-23E20E Created Zip Spec      14 (20) '2.0'\n-23E20F Created OS            00 (0) 'MS-DOS'\n-23E210 Extract Zip Spec      14 (20) '2.0'\n-23E211 Extract OS            00 (0) 'MS-DOS'\n-23E212 General Purpose Flag  0808 (2056)\n+240425 CENTRAL HEADER #1851  02014B50 (33639248)\n+240429 Created Zip Spec      14 (20) '2.0'\n+24042A Created OS            00 (0) 'MS-DOS'\n+24042B Extract Zip Spec      14 (20) '2.0'\n+24042C Extract OS            00 (0) 'MS-DOS'\n+24042D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E214 Compression Method    0008 (8) 'Deflated'\n-23E216 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E21A CRC                   44EA1A2E (1156192814)\n-23E21E Compressed Size       00000362 (866)\n-23E222 Uncompressed Size     000007A1 (1953)\n-23E226 Filename Length       003A (58)\n-23E228 Extra Length          0000 (0)\n-23E22A Comment Length        0000 (0)\n-23E22C Disk Start            0000 (0)\n-23E22E Int File Attributes   0000 (0)\n+24042F Compression Method    0008 (8) 'Deflated'\n+240431 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240435 CRC                   9A0F8216 (2584707606)\n+240439 Compressed Size       00000C8C (3212)\n+24043D Uncompressed Size     00003C3D (15421)\n+240441 Filename Length       002B (43)\n+240443 Extra Length          0000 (0)\n+240445 Comment Length        0000 (0)\n+240447 Disk Start            0000 (0)\n+240449 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E230 Ext File Attributes   00000000 (0)\n-23E234 Local Header Offset   001EDA18 (2021912)\n-23E238 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24044B Ext File Attributes   00000000 (0)\n+24044F Local Header Offset   001F5C06 (2055174)\n+240453 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E238: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240453: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E272 CENTRAL HEADER #1852  02014B50 (33639248)\n-23E276 Created Zip Spec      14 (20) '2.0'\n-23E277 Created OS            00 (0) 'MS-DOS'\n-23E278 Extract Zip Spec      14 (20) '2.0'\n-23E279 Extract OS            00 (0) 'MS-DOS'\n-23E27A General Purpose Flag  0808 (2056)\n+24047E CENTRAL HEADER #1852  02014B50 (33639248)\n+240482 Created Zip Spec      14 (20) '2.0'\n+240483 Created OS            00 (0) 'MS-DOS'\n+240484 Extract Zip Spec      14 (20) '2.0'\n+240485 Extract OS            00 (0) 'MS-DOS'\n+240486 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E27C Compression Method    0008 (8) 'Deflated'\n-23E27E Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E282 CRC                   0EA48277 (245662327)\n-23E286 Compressed Size       00000365 (869)\n-23E28A Uncompressed Size     000007B2 (1970)\n-23E28E Filename Length       0040 (64)\n-23E290 Extra Length          0000 (0)\n-23E292 Comment Length        0000 (0)\n-23E294 Disk Start            0000 (0)\n-23E296 Int File Attributes   0000 (0)\n+240488 Compression Method    0008 (8) 'Deflated'\n+24048A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24048E CRC                   5D4E898D (1565428109)\n+240492 Compressed Size       0000027A (634)\n+240496 Uncompressed Size     000004E2 (1250)\n+24049A Filename Length       0033 (51)\n+24049C Extra Length          0000 (0)\n+24049E Comment Length        0000 (0)\n+2404A0 Disk Start            0000 (0)\n+2404A2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E298 Ext File Attributes   00000000 (0)\n-23E29C Local Header Offset   001EDDE2 (2022882)\n-23E2A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2404A4 Ext File Attributes   00000000 (0)\n+2404A8 Local Header Offset   001F68EB (2058475)\n+2404AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E2A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2404AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E2E0 CENTRAL HEADER #1853  02014B50 (33639248)\n-23E2E4 Created Zip Spec      14 (20) '2.0'\n-23E2E5 Created OS            00 (0) 'MS-DOS'\n-23E2E6 Extract Zip Spec      14 (20) '2.0'\n-23E2E7 Extract OS            00 (0) 'MS-DOS'\n-23E2E8 General Purpose Flag  0808 (2056)\n+2404DF CENTRAL HEADER #1853  02014B50 (33639248)\n+2404E3 Created Zip Spec      14 (20) '2.0'\n+2404E4 Created OS            00 (0) 'MS-DOS'\n+2404E5 Extract Zip Spec      14 (20) '2.0'\n+2404E6 Extract OS            00 (0) 'MS-DOS'\n+2404E7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E2EA Compression Method    0008 (8) 'Deflated'\n-23E2EC Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E2F0 CRC                   D18F68BE (3515836606)\n-23E2F4 Compressed Size       00000612 (1554)\n-23E2F8 Uncompressed Size     00000D2C (3372)\n-23E2FC Filename Length       0036 (54)\n-23E2FE Extra Length          0000 (0)\n-23E300 Comment Length        0000 (0)\n-23E302 Disk Start            0000 (0)\n-23E304 Int File Attributes   0000 (0)\n+2404E9 Compression Method    0008 (8) 'Deflated'\n+2404EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2404EF CRC                   2CED0C75 (753732725)\n+2404F3 Compressed Size       0000092D (2349)\n+2404F7 Uncompressed Size     00002B2A (11050)\n+2404FB Filename Length       002E (46)\n+2404FD Extra Length          0000 (0)\n+2404FF Comment Length        0000 (0)\n+240501 Disk Start            0000 (0)\n+240503 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E306 Ext File Attributes   00000000 (0)\n-23E30A Local Header Offset   001EE1B5 (2023861)\n-23E30E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240505 Ext File Attributes   00000000 (0)\n+240509 Local Header Offset   001F6BC6 (2059206)\n+24050D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E30E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24050D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E344 CENTRAL HEADER #1854  02014B50 (33639248)\n-23E348 Created Zip Spec      14 (20) '2.0'\n-23E349 Created OS            00 (0) 'MS-DOS'\n-23E34A Extract Zip Spec      14 (20) '2.0'\n-23E34B Extract OS            00 (0) 'MS-DOS'\n-23E34C General Purpose Flag  0808 (2056)\n+24053B CENTRAL HEADER #1854  02014B50 (33639248)\n+24053F Created Zip Spec      14 (20) '2.0'\n+240540 Created OS            00 (0) 'MS-DOS'\n+240541 Extract Zip Spec      14 (20) '2.0'\n+240542 Extract OS            00 (0) 'MS-DOS'\n+240543 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E34E Compression Method    0008 (8) 'Deflated'\n-23E350 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E354 CRC                   E6FF39F2 (3875486194)\n-23E358 Compressed Size       0000026B (619)\n-23E35C Uncompressed Size     0000046B (1131)\n-23E360 Filename Length       003D (61)\n-23E362 Extra Length          0000 (0)\n-23E364 Comment Length        0000 (0)\n-23E366 Disk Start            0000 (0)\n-23E368 Int File Attributes   0000 (0)\n+240545 Compression Method    0008 (8) 'Deflated'\n+240547 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24054B CRC                   C38A081C (3280603164)\n+24054F Compressed Size       00000432 (1074)\n+240553 Uncompressed Size     00000C70 (3184)\n+240557 Filename Length       0036 (54)\n+240559 Extra Length          0000 (0)\n+24055B Comment Length        0000 (0)\n+24055D Disk Start            0000 (0)\n+24055F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E36A Ext File Attributes   00000000 (0)\n-23E36E Local Header Offset   001EE82B (2025515)\n-23E372 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240561 Ext File Attributes   00000000 (0)\n+240565 Local Header Offset   001F754F (2061647)\n+240569 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E372: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240569: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E3AF CENTRAL HEADER #1855  02014B50 (33639248)\n-23E3B3 Created Zip Spec      14 (20) '2.0'\n-23E3B4 Created OS            00 (0) 'MS-DOS'\n-23E3B5 Extract Zip Spec      14 (20) '2.0'\n-23E3B6 Extract OS            00 (0) 'MS-DOS'\n-23E3B7 General Purpose Flag  0808 (2056)\n+24059F CENTRAL HEADER #1855  02014B50 (33639248)\n+2405A3 Created Zip Spec      14 (20) '2.0'\n+2405A4 Created OS            00 (0) 'MS-DOS'\n+2405A5 Extract Zip Spec      14 (20) '2.0'\n+2405A6 Extract OS            00 (0) 'MS-DOS'\n+2405A7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E3B9 Compression Method    0008 (8) 'Deflated'\n-23E3BB Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E3BF CRC                   265DEF91 (643690385)\n-23E3C3 Compressed Size       000004A9 (1193)\n-23E3C7 Uncompressed Size     0000098C (2444)\n-23E3CB Filename Length       003A (58)\n-23E3CD Extra Length          0000 (0)\n-23E3CF Comment Length        0000 (0)\n-23E3D1 Disk Start            0000 (0)\n-23E3D3 Int File Attributes   0000 (0)\n+2405A9 Compression Method    0008 (8) 'Deflated'\n+2405AB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2405AF CRC                   5D7F96AB (1568642731)\n+2405B3 Compressed Size       0000036A (874)\n+2405B7 Uncompressed Size     00000904 (2308)\n+2405BB Filename Length       0032 (50)\n+2405BD Extra Length          0000 (0)\n+2405BF Comment Length        0000 (0)\n+2405C1 Disk Start            0000 (0)\n+2405C3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E3D5 Ext File Attributes   00000000 (0)\n-23E3D9 Local Header Offset   001EEB01 (2026241)\n-23E3DD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2405C5 Ext File Attributes   00000000 (0)\n+2405C9 Local Header Offset   001F79E5 (2062821)\n+2405CD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E3DD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2405CD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E417 CENTRAL HEADER #1856  02014B50 (33639248)\n-23E41B Created Zip Spec      14 (20) '2.0'\n-23E41C Created OS            00 (0) 'MS-DOS'\n-23E41D Extract Zip Spec      14 (20) '2.0'\n-23E41E Extract OS            00 (0) 'MS-DOS'\n-23E41F General Purpose Flag  0808 (2056)\n+2405FF CENTRAL HEADER #1856  02014B50 (33639248)\n+240603 Created Zip Spec      14 (20) '2.0'\n+240604 Created OS            00 (0) 'MS-DOS'\n+240605 Extract Zip Spec      14 (20) '2.0'\n+240606 Extract OS            00 (0) 'MS-DOS'\n+240607 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E421 Compression Method    0008 (8) 'Deflated'\n-23E423 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E427 CRC                   E295C65E (3801466462)\n-23E42B Compressed Size       0000010F (271)\n-23E42F Uncompressed Size     0000026A (618)\n-23E433 Filename Length       0037 (55)\n-23E435 Extra Length          0000 (0)\n-23E437 Comment Length        0000 (0)\n-23E439 Disk Start            0000 (0)\n-23E43B Int File Attributes   0000 (0)\n+240609 Compression Method    0008 (8) 'Deflated'\n+24060B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24060F CRC                   509BAB75 (1352379253)\n+240613 Compressed Size       000003CF (975)\n+240617 Uncompressed Size     0000083C (2108)\n+24061B Filename Length       002F (47)\n+24061D Extra Length          0000 (0)\n+24061F Comment Length        0000 (0)\n+240621 Disk Start            0000 (0)\n+240623 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E43D Ext File Attributes   00000000 (0)\n-23E441 Local Header Offset   001EF012 (2027538)\n-23E445 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240625 Ext File Attributes   00000000 (0)\n+240629 Local Header Offset   001F7DAF (2063791)\n+24062D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E445: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24062D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E47C CENTRAL HEADER #1857  02014B50 (33639248)\n-23E480 Created Zip Spec      14 (20) '2.0'\n-23E481 Created OS            00 (0) 'MS-DOS'\n-23E482 Extract Zip Spec      14 (20) '2.0'\n-23E483 Extract OS            00 (0) 'MS-DOS'\n-23E484 General Purpose Flag  0808 (2056)\n+24065C CENTRAL HEADER #1857  02014B50 (33639248)\n+240660 Created Zip Spec      14 (20) '2.0'\n+240661 Created OS            00 (0) 'MS-DOS'\n+240662 Extract Zip Spec      14 (20) '2.0'\n+240663 Extract OS            00 (0) 'MS-DOS'\n+240664 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E486 Compression Method    0008 (8) 'Deflated'\n-23E488 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E48C CRC                   BDD7BBBA (3185032122)\n-23E490 Compressed Size       00000651 (1617)\n-23E494 Uncompressed Size     00000E2C (3628)\n-23E498 Filename Length       0034 (52)\n-23E49A Extra Length          0000 (0)\n-23E49C Comment Length        0000 (0)\n-23E49E Disk Start            0000 (0)\n-23E4A0 Int File Attributes   0000 (0)\n+240666 Compression Method    0008 (8) 'Deflated'\n+240668 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24066C CRC                   C02150D4 (3223408852)\n+240670 Compressed Size       0000044D (1101)\n+240674 Uncompressed Size     00000BA1 (2977)\n+240678 Filename Length       0031 (49)\n+24067A Extra Length          0000 (0)\n+24067C Comment Length        0000 (0)\n+24067E Disk Start            0000 (0)\n+240680 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E4A2 Ext File Attributes   00000000 (0)\n-23E4A6 Local Header Offset   001EF186 (2027910)\n-23E4AA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240682 Ext File Attributes   00000000 (0)\n+240686 Local Header Offset   001F81DB (2064859)\n+24068A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E4AA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24068A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E4DE CENTRAL HEADER #1858  02014B50 (33639248)\n-23E4E2 Created Zip Spec      14 (20) '2.0'\n-23E4E3 Created OS            00 (0) 'MS-DOS'\n-23E4E4 Extract Zip Spec      14 (20) '2.0'\n-23E4E5 Extract OS            00 (0) 'MS-DOS'\n-23E4E6 General Purpose Flag  0808 (2056)\n+2406BB CENTRAL HEADER #1858  02014B50 (33639248)\n+2406BF Created Zip Spec      14 (20) '2.0'\n+2406C0 Created OS            00 (0) 'MS-DOS'\n+2406C1 Extract Zip Spec      14 (20) '2.0'\n+2406C2 Extract OS            00 (0) 'MS-DOS'\n+2406C3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E4E8 Compression Method    0008 (8) 'Deflated'\n-23E4EA Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E4EE CRC                   42CFBA07 (1120909831)\n-23E4F2 Compressed Size       00002C40 (11328)\n-23E4F6 Uncompressed Size     00016026 (90150)\n-23E4FA Filename Length       0034 (52)\n-23E4FC Extra Length          0000 (0)\n-23E4FE Comment Length        0000 (0)\n-23E500 Disk Start            0000 (0)\n-23E502 Int File Attributes   0000 (0)\n+2406C5 Compression Method    0008 (8) 'Deflated'\n+2406C7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2406CB CRC                   B34C7492 (3008132242)\n+2406CF Compressed Size       000003C6 (966)\n+2406D3 Uncompressed Size     00000AAE (2734)\n+2406D7 Filename Length       0036 (54)\n+2406D9 Extra Length          0000 (0)\n+2406DB Comment Length        0000 (0)\n+2406DD Disk Start            0000 (0)\n+2406DF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E504 Ext File Attributes   00000000 (0)\n-23E508 Local Header Offset   001EF839 (2029625)\n-23E50C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2406E1 Ext File Attributes   00000000 (0)\n+2406E5 Local Header Offset   001F8687 (2066055)\n+2406E9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E50C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2406E9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E540 CENTRAL HEADER #1859  02014B50 (33639248)\n-23E544 Created Zip Spec      14 (20) '2.0'\n-23E545 Created OS            00 (0) 'MS-DOS'\n-23E546 Extract Zip Spec      14 (20) '2.0'\n-23E547 Extract OS            00 (0) 'MS-DOS'\n-23E548 General Purpose Flag  0808 (2056)\n+24071F CENTRAL HEADER #1859  02014B50 (33639248)\n+240723 Created Zip Spec      14 (20) '2.0'\n+240724 Created OS            00 (0) 'MS-DOS'\n+240725 Extract Zip Spec      14 (20) '2.0'\n+240726 Extract OS            00 (0) 'MS-DOS'\n+240727 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E54A Compression Method    0008 (8) 'Deflated'\n-23E54C Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E550 CRC                   B1D0AB16 (2983242518)\n-23E554 Compressed Size       000006DC (1756)\n-23E558 Uncompressed Size     0000137B (4987)\n-23E55C Filename Length       0038 (56)\n-23E55E Extra Length          0000 (0)\n-23E560 Comment Length        0000 (0)\n-23E562 Disk Start            0000 (0)\n-23E564 Int File Attributes   0000 (0)\n+240729 Compression Method    0008 (8) 'Deflated'\n+24072B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24072F CRC                   00000000 (0)\n+240733 Compressed Size       00000002 (2)\n+240737 Uncompressed Size     00000000 (0)\n+24073B Filename Length       0025 (37)\n+24073D Extra Length          0000 (0)\n+24073F Comment Length        0000 (0)\n+240741 Disk Start            0000 (0)\n+240743 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E566 Ext File Attributes   00000000 (0)\n-23E56A Local Header Offset   001F24DB (2041051)\n-23E56E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240745 Ext File Attributes   00000000 (0)\n+240749 Local Header Offset   001F8AB1 (2067121)\n+24074D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E56E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24074D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E5A6 CENTRAL HEADER #1860  02014B50 (33639248)\n-23E5AA Created Zip Spec      14 (20) '2.0'\n-23E5AB Created OS            00 (0) 'MS-DOS'\n-23E5AC Extract Zip Spec      14 (20) '2.0'\n-23E5AD Extract OS            00 (0) 'MS-DOS'\n-23E5AE General Purpose Flag  0808 (2056)\n+240772 CENTRAL HEADER #1860  02014B50 (33639248)\n+240776 Created Zip Spec      14 (20) '2.0'\n+240777 Created OS            00 (0) 'MS-DOS'\n+240778 Extract Zip Spec      14 (20) '2.0'\n+240779 Extract OS            00 (0) 'MS-DOS'\n+24077A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E5B0 Compression Method    0008 (8) 'Deflated'\n-23E5B2 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E5B6 CRC                   D684F652 (3599038034)\n-23E5BA Compressed Size       0000070B (1803)\n-23E5BE Uncompressed Size     0000127F (4735)\n-23E5C2 Filename Length       003F (63)\n-23E5C4 Extra Length          0000 (0)\n-23E5C6 Comment Length        0000 (0)\n-23E5C8 Disk Start            0000 (0)\n-23E5CA Int File Attributes   0000 (0)\n+24077C Compression Method    0008 (8) 'Deflated'\n+24077E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240782 CRC                   812905CA (2166949322)\n+240786 Compressed Size       000003FC (1020)\n+24078A Uncompressed Size     00000A8E (2702)\n+24078E Filename Length       0041 (65)\n+240790 Extra Length          0000 (0)\n+240792 Comment Length        0000 (0)\n+240794 Disk Start            0000 (0)\n+240796 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E5CC Ext File Attributes   00000000 (0)\n-23E5D0 Local Header Offset   001F2C1D (2042909)\n-23E5D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240798 Ext File Attributes   00000000 (0)\n+24079C Local Header Offset   001F8B06 (2067206)\n+2407A0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E5D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2407A0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E613 CENTRAL HEADER #1861  02014B50 (33639248)\n-23E617 Created Zip Spec      14 (20) '2.0'\n-23E618 Created OS            00 (0) 'MS-DOS'\n-23E619 Extract Zip Spec      14 (20) '2.0'\n-23E61A Extract OS            00 (0) 'MS-DOS'\n-23E61B General Purpose Flag  0808 (2056)\n+2407E1 CENTRAL HEADER #1861  02014B50 (33639248)\n+2407E5 Created Zip Spec      14 (20) '2.0'\n+2407E6 Created OS            00 (0) 'MS-DOS'\n+2407E7 Extract Zip Spec      14 (20) '2.0'\n+2407E8 Extract OS            00 (0) 'MS-DOS'\n+2407E9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E61D Compression Method    0008 (8) 'Deflated'\n-23E61F Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E623 CRC                   091B09EC (152766956)\n-23E627 Compressed Size       000004FF (1279)\n-23E62B Uncompressed Size     00000B45 (2885)\n-23E62F Filename Length       003C (60)\n-23E631 Extra Length          0000 (0)\n-23E633 Comment Length        0000 (0)\n-23E635 Disk Start            0000 (0)\n-23E637 Int File Attributes   0000 (0)\n+2407EB Compression Method    0008 (8) 'Deflated'\n+2407ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2407F1 CRC                   D4CAE0D6 (3570065622)\n+2407F5 Compressed Size       000004D7 (1239)\n+2407F9 Uncompressed Size     00000F80 (3968)\n+2407FD Filename Length       0042 (66)\n+2407FF Extra Length          0000 (0)\n+240801 Comment Length        0000 (0)\n+240803 Disk Start            0000 (0)\n+240805 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E639 Ext File Attributes   00000000 (0)\n-23E63D Local Header Offset   001F3395 (2044821)\n-23E641 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240807 Ext File Attributes   00000000 (0)\n+24080B Local Header Offset   001F8F71 (2068337)\n+24080F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E641: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24080F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E67D CENTRAL HEADER #1862  02014B50 (33639248)\n-23E681 Created Zip Spec      14 (20) '2.0'\n-23E682 Created OS            00 (0) 'MS-DOS'\n-23E683 Extract Zip Spec      14 (20) '2.0'\n-23E684 Extract OS            00 (0) 'MS-DOS'\n-23E685 General Purpose Flag  0808 (2056)\n+240851 CENTRAL HEADER #1862  02014B50 (33639248)\n+240855 Created Zip Spec      14 (20) '2.0'\n+240856 Created OS            00 (0) 'MS-DOS'\n+240857 Extract Zip Spec      14 (20) '2.0'\n+240858 Extract OS            00 (0) 'MS-DOS'\n+240859 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E687 Compression Method    0008 (8) 'Deflated'\n-23E689 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E68D CRC                   17688FAA (392728490)\n-23E691 Compressed Size       000004CA (1226)\n-23E695 Uncompressed Size     000009A8 (2472)\n-23E699 Filename Length       0031 (49)\n-23E69B Extra Length          0000 (0)\n-23E69D Comment Length        0000 (0)\n-23E69F Disk Start            0000 (0)\n-23E6A1 Int File Attributes   0000 (0)\n+24085B Compression Method    0008 (8) 'Deflated'\n+24085D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240861 CRC                   9C44854A (2621736266)\n+240865 Compressed Size       000004A2 (1186)\n+240869 Uncompressed Size     00000D4A (3402)\n+24086D Filename Length       003F (63)\n+24086F Extra Length          0000 (0)\n+240871 Comment Length        0000 (0)\n+240873 Disk Start            0000 (0)\n+240875 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E6A3 Ext File Attributes   00000000 (0)\n-23E6A7 Local Header Offset   001F38FE (2046206)\n-23E6AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240877 Ext File Attributes   00000000 (0)\n+24087B Local Header Offset   001F94B8 (2069688)\n+24087F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E6AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24087F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E6DC CENTRAL HEADER #1863  02014B50 (33639248)\n-23E6E0 Created Zip Spec      14 (20) '2.0'\n-23E6E1 Created OS            00 (0) 'MS-DOS'\n-23E6E2 Extract Zip Spec      14 (20) '2.0'\n-23E6E3 Extract OS            00 (0) 'MS-DOS'\n-23E6E4 General Purpose Flag  0808 (2056)\n+2408BE CENTRAL HEADER #1863  02014B50 (33639248)\n+2408C2 Created Zip Spec      14 (20) '2.0'\n+2408C3 Created OS            00 (0) 'MS-DOS'\n+2408C4 Extract Zip Spec      14 (20) '2.0'\n+2408C5 Extract OS            00 (0) 'MS-DOS'\n+2408C6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E6E6 Compression Method    0008 (8) 'Deflated'\n-23E6E8 Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E6EC CRC                   0827F1CF (136835535)\n-23E6F0 Compressed Size       000005B4 (1460)\n-23E6F4 Uncompressed Size     00000C8B (3211)\n-23E6F8 Filename Length       0035 (53)\n-23E6FA Extra Length          0000 (0)\n-23E6FC Comment Length        0000 (0)\n-23E6FE Disk Start            0000 (0)\n-23E700 Int File Attributes   0000 (0)\n+2408C8 Compression Method    0008 (8) 'Deflated'\n+2408CA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2408CE CRC                   00000000 (0)\n+2408D2 Compressed Size       00000002 (2)\n+2408D6 Uncompressed Size     00000000 (0)\n+2408DA Filename Length       002D (45)\n+2408DC Extra Length          0000 (0)\n+2408DE Comment Length        0000 (0)\n+2408E0 Disk Start            0000 (0)\n+2408E2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E702 Ext File Attributes   00000000 (0)\n-23E706 Local Header Offset   001F3E27 (2047527)\n-23E70A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2408E4 Ext File Attributes   00000000 (0)\n+2408E8 Local Header Offset   001F99C7 (2070983)\n+2408EC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E70A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2408EC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E73F CENTRAL HEADER #1864  02014B50 (33639248)\n-23E743 Created Zip Spec      14 (20) '2.0'\n-23E744 Created OS            00 (0) 'MS-DOS'\n-23E745 Extract Zip Spec      14 (20) '2.0'\n-23E746 Extract OS            00 (0) 'MS-DOS'\n-23E747 General Purpose Flag  0808 (2056)\n+240919 CENTRAL HEADER #1864  02014B50 (33639248)\n+24091D Created Zip Spec      14 (20) '2.0'\n+24091E Created OS            00 (0) 'MS-DOS'\n+24091F Extract Zip Spec      14 (20) '2.0'\n+240920 Extract OS            00 (0) 'MS-DOS'\n+240921 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E749 Compression Method    0008 (8) 'Deflated'\n-23E74B Modification Time     50DD11BD (1356665277) 'Mon Jun 29 02:13:58 2020'\n-23E74F CRC                   430F5283 (1125077635)\n-23E753 Compressed Size       0000056C (1388)\n-23E757 Uncompressed Size     00000BD7 (3031)\n-23E75B Filename Length       003E (62)\n-23E75D Extra Length          0000 (0)\n-23E75F Comment Length        0000 (0)\n-23E761 Disk Start            0000 (0)\n-23E763 Int File Attributes   0000 (0)\n+240923 Compression Method    0008 (8) 'Deflated'\n+240925 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240929 CRC                   F46C8898 (4100753560)\n+24092D Compressed Size       00000320 (800)\n+240931 Uncompressed Size     000006EB (1771)\n+240935 Filename Length       0042 (66)\n+240937 Extra Length          0000 (0)\n+240939 Comment Length        0000 (0)\n+24093B Disk Start            0000 (0)\n+24093D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E765 Ext File Attributes   00000000 (0)\n-23E769 Local Header Offset   001F443E (2049086)\n-23E76D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24093F Ext File Attributes   00000000 (0)\n+240943 Local Header Offset   001F9A24 (2071076)\n+240947 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E76D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240947: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E7AB CENTRAL HEADER #1865  02014B50 (33639248)\n-23E7AF Created Zip Spec      14 (20) '2.0'\n-23E7B0 Created OS            00 (0) 'MS-DOS'\n-23E7B1 Extract Zip Spec      14 (20) '2.0'\n-23E7B2 Extract OS            00 (0) 'MS-DOS'\n-23E7B3 General Purpose Flag  0808 (2056)\n+240989 CENTRAL HEADER #1865  02014B50 (33639248)\n+24098D Created Zip Spec      14 (20) '2.0'\n+24098E Created OS            00 (0) 'MS-DOS'\n+24098F Extract Zip Spec      14 (20) '2.0'\n+240990 Extract OS            00 (0) 'MS-DOS'\n+240991 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E7B5 Compression Method    0008 (8) 'Deflated'\n-23E7B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23E7BB CRC                   00000000 (0)\n-23E7BF Compressed Size       00000002 (2)\n-23E7C3 Uncompressed Size     00000000 (0)\n-23E7C7 Filename Length       001A (26)\n-23E7C9 Extra Length          0000 (0)\n-23E7CB Comment Length        0000 (0)\n-23E7CD Disk Start            0000 (0)\n-23E7CF Int File Attributes   0000 (0)\n+240993 Compression Method    0008 (8) 'Deflated'\n+240995 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240999 CRC                   82A5648F (2191877263)\n+24099D Compressed Size       0000043B (1083)\n+2409A1 Uncompressed Size     00000B13 (2835)\n+2409A5 Filename Length       0047 (71)\n+2409A7 Extra Length          0000 (0)\n+2409A9 Comment Length        0000 (0)\n+2409AB Disk Start            0000 (0)\n+2409AD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E7D1 Ext File Attributes   00000000 (0)\n-23E7D5 Local Header Offset   001F4A16 (2050582)\n-23E7D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2409AF Ext File Attributes   00000000 (0)\n+2409B3 Local Header Offset   001F9DB4 (2071988)\n+2409B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E7D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2409B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E7F3 CENTRAL HEADER #1866  02014B50 (33639248)\n-23E7F7 Created Zip Spec      14 (20) '2.0'\n-23E7F8 Created OS            00 (0) 'MS-DOS'\n-23E7F9 Extract Zip Spec      14 (20) '2.0'\n-23E7FA Extract OS            00 (0) 'MS-DOS'\n-23E7FB General Purpose Flag  0808 (2056)\n+2409FE CENTRAL HEADER #1866  02014B50 (33639248)\n+240A02 Created Zip Spec      14 (20) '2.0'\n+240A03 Created OS            00 (0) 'MS-DOS'\n+240A04 Extract Zip Spec      14 (20) '2.0'\n+240A05 Extract OS            00 (0) 'MS-DOS'\n+240A06 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E7FD Compression Method    0008 (8) 'Deflated'\n-23E7FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23E803 CRC                   CF6AE7CA (3479889866)\n-23E807 Compressed Size       00000369 (873)\n-23E80B Uncompressed Size     00000A57 (2647)\n-23E80F Filename Length       003A (58)\n-23E811 Extra Length          0000 (0)\n-23E813 Comment Length        0000 (0)\n-23E815 Disk Start            0000 (0)\n-23E817 Int File Attributes   0000 (0)\n+240A08 Compression Method    0008 (8) 'Deflated'\n+240A0A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240A0E CRC                   DA27253B (3659998523)\n+240A12 Compressed Size       000003E7 (999)\n+240A16 Uncompressed Size     000009FE (2558)\n+240A1A Filename Length       0044 (68)\n+240A1C Extra Length          0000 (0)\n+240A1E Comment Length        0000 (0)\n+240A20 Disk Start            0000 (0)\n+240A22 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E819 Ext File Attributes   00000000 (0)\n-23E81D Local Header Offset   001F4A60 (2050656)\n-23E821 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240A24 Ext File Attributes   00000000 (0)\n+240A28 Local Header Offset   001FA264 (2073188)\n+240A2C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E821: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240A2C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E85B CENTRAL HEADER #1867  02014B50 (33639248)\n-23E85F Created Zip Spec      14 (20) '2.0'\n-23E860 Created OS            00 (0) 'MS-DOS'\n-23E861 Extract Zip Spec      14 (20) '2.0'\n-23E862 Extract OS            00 (0) 'MS-DOS'\n-23E863 General Purpose Flag  0808 (2056)\n+240A70 CENTRAL HEADER #1867  02014B50 (33639248)\n+240A74 Created Zip Spec      14 (20) '2.0'\n+240A75 Created OS            00 (0) 'MS-DOS'\n+240A76 Extract Zip Spec      14 (20) '2.0'\n+240A77 Extract OS            00 (0) 'MS-DOS'\n+240A78 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E865 Compression Method    0008 (8) 'Deflated'\n-23E867 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23E86B CRC                   462DB2DF (1177400031)\n-23E86F Compressed Size       00000590 (1424)\n-23E873 Uncompressed Size     0000100F (4111)\n-23E877 Filename Length       0045 (69)\n-23E879 Extra Length          0000 (0)\n-23E87B Comment Length        0000 (0)\n-23E87D Disk Start            0000 (0)\n-23E87F Int File Attributes   0000 (0)\n+240A7A Compression Method    0008 (8) 'Deflated'\n+240A7C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240A80 CRC                   3AE3106C (987959404)\n+240A84 Compressed Size       0000039B (923)\n+240A88 Uncompressed Size     000007D5 (2005)\n+240A8C Filename Length       0041 (65)\n+240A8E Extra Length          0000 (0)\n+240A90 Comment Length        0000 (0)\n+240A92 Disk Start            0000 (0)\n+240A94 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E881 Ext File Attributes   00000000 (0)\n-23E885 Local Header Offset   001F4E31 (2051633)\n-23E889 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240A96 Ext File Attributes   00000000 (0)\n+240A9A Local Header Offset   001FA6BD (2074301)\n+240A9E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E889: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240A9E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E8CE CENTRAL HEADER #1868  02014B50 (33639248)\n-23E8D2 Created Zip Spec      14 (20) '2.0'\n-23E8D3 Created OS            00 (0) 'MS-DOS'\n-23E8D4 Extract Zip Spec      14 (20) '2.0'\n-23E8D5 Extract OS            00 (0) 'MS-DOS'\n-23E8D6 General Purpose Flag  0808 (2056)\n+240ADF CENTRAL HEADER #1868  02014B50 (33639248)\n+240AE3 Created Zip Spec      14 (20) '2.0'\n+240AE4 Created OS            00 (0) 'MS-DOS'\n+240AE5 Extract Zip Spec      14 (20) '2.0'\n+240AE6 Extract OS            00 (0) 'MS-DOS'\n+240AE7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E8D8 Compression Method    0008 (8) 'Deflated'\n-23E8DA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23E8DE CRC                   A8E35A99 (2833472153)\n-23E8E2 Compressed Size       00000271 (625)\n-23E8E6 Uncompressed Size     000004F2 (1266)\n-23E8EA Filename Length       0032 (50)\n-23E8EC Extra Length          0000 (0)\n-23E8EE Comment Length        0000 (0)\n-23E8F0 Disk Start            0000 (0)\n-23E8F2 Int File Attributes   0000 (0)\n+240AE9 Compression Method    0008 (8) 'Deflated'\n+240AEB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240AEF CRC                   5241C10C (1380040972)\n+240AF3 Compressed Size       0000049D (1181)\n+240AF7 Uncompressed Size     00000C91 (3217)\n+240AFB Filename Length       0040 (64)\n+240AFD Extra Length          0000 (0)\n+240AFF Comment Length        0000 (0)\n+240B01 Disk Start            0000 (0)\n+240B03 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E8F4 Ext File Attributes   00000000 (0)\n-23E8F8 Local Header Offset   001F5434 (2053172)\n-23E8FC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240B05 Ext File Attributes   00000000 (0)\n+240B09 Local Header Offset   001FAAC7 (2075335)\n+240B0D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E8FC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240B0D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E92E CENTRAL HEADER #1869  02014B50 (33639248)\n-23E932 Created Zip Spec      14 (20) '2.0'\n-23E933 Created OS            00 (0) 'MS-DOS'\n-23E934 Extract Zip Spec      14 (20) '2.0'\n-23E935 Extract OS            00 (0) 'MS-DOS'\n-23E936 General Purpose Flag  0808 (2056)\n+240B4D CENTRAL HEADER #1869  02014B50 (33639248)\n+240B51 Created Zip Spec      14 (20) '2.0'\n+240B52 Created OS            00 (0) 'MS-DOS'\n+240B53 Extract Zip Spec      14 (20) '2.0'\n+240B54 Extract OS            00 (0) 'MS-DOS'\n+240B55 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E938 Compression Method    0008 (8) 'Deflated'\n-23E93A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23E93E CRC                   ECCEFB44 (3972987716)\n-23E942 Compressed Size       00000210 (528)\n-23E946 Uncompressed Size     00000398 (920)\n-23E94A Filename Length       002E (46)\n-23E94C Extra Length          0000 (0)\n-23E94E Comment Length        0000 (0)\n-23E950 Disk Start            0000 (0)\n-23E952 Int File Attributes   0000 (0)\n+240B57 Compression Method    0008 (8) 'Deflated'\n+240B59 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240B5D CRC                   30FBCCB4 (821808308)\n+240B61 Compressed Size       000002D4 (724)\n+240B65 Uncompressed Size     000005CD (1485)\n+240B69 Filename Length       003D (61)\n+240B6B Extra Length          0000 (0)\n+240B6D Comment Length        0000 (0)\n+240B6F Disk Start            0000 (0)\n+240B71 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E954 Ext File Attributes   00000000 (0)\n-23E958 Local Header Offset   001F5705 (2053893)\n-23E95C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240B73 Ext File Attributes   00000000 (0)\n+240B77 Local Header Offset   001FAFD2 (2076626)\n+240B7B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E95C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240B7B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E98A CENTRAL HEADER #1870  02014B50 (33639248)\n-23E98E Created Zip Spec      14 (20) '2.0'\n-23E98F Created OS            00 (0) 'MS-DOS'\n-23E990 Extract Zip Spec      14 (20) '2.0'\n-23E991 Extract OS            00 (0) 'MS-DOS'\n-23E992 General Purpose Flag  0808 (2056)\n+240BB8 CENTRAL HEADER #1870  02014B50 (33639248)\n+240BBC Created Zip Spec      14 (20) '2.0'\n+240BBD Created OS            00 (0) 'MS-DOS'\n+240BBE Extract Zip Spec      14 (20) '2.0'\n+240BBF Extract OS            00 (0) 'MS-DOS'\n+240BC0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E994 Compression Method    0008 (8) 'Deflated'\n-23E996 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23E99A CRC                   7822EF2B (2015555371)\n-23E99E Compressed Size       00000299 (665)\n-23E9A2 Uncompressed Size     000004DC (1244)\n-23E9A6 Filename Length       0035 (53)\n-23E9A8 Extra Length          0000 (0)\n-23E9AA Comment Length        0000 (0)\n-23E9AC Disk Start            0000 (0)\n-23E9AE Int File Attributes   0000 (0)\n+240BC2 Compression Method    0008 (8) 'Deflated'\n+240BC4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240BC8 CRC                   00000000 (0)\n+240BCC Compressed Size       00000002 (2)\n+240BD0 Uncompressed Size     00000000 (0)\n+240BD4 Filename Length       002B (43)\n+240BD6 Extra Length          0000 (0)\n+240BD8 Comment Length        0000 (0)\n+240BDA Disk Start            0000 (0)\n+240BDC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23E9B0 Ext File Attributes   00000000 (0)\n-23E9B4 Local Header Offset   001F5971 (2054513)\n-23E9B8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240BDE Ext File Attributes   00000000 (0)\n+240BE2 Local Header Offset   001FB311 (2077457)\n+240BE6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23E9B8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240BE6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23E9ED CENTRAL HEADER #1871  02014B50 (33639248)\n-23E9F1 Created Zip Spec      14 (20) '2.0'\n-23E9F2 Created OS            00 (0) 'MS-DOS'\n-23E9F3 Extract Zip Spec      14 (20) '2.0'\n-23E9F4 Extract OS            00 (0) 'MS-DOS'\n-23E9F5 General Purpose Flag  0808 (2056)\n+240C11 CENTRAL HEADER #1871  02014B50 (33639248)\n+240C15 Created Zip Spec      14 (20) '2.0'\n+240C16 Created OS            00 (0) 'MS-DOS'\n+240C17 Extract Zip Spec      14 (20) '2.0'\n+240C18 Extract OS            00 (0) 'MS-DOS'\n+240C19 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23E9F7 Compression Method    0008 (8) 'Deflated'\n-23E9F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23E9FD CRC                   5CAAFB07 (1554709255)\n-23EA01 Compressed Size       000002BB (699)\n-23EA05 Uncompressed Size     0000062F (1583)\n-23EA09 Filename Length       0030 (48)\n-23EA0B Extra Length          0000 (0)\n-23EA0D Comment Length        0000 (0)\n-23EA0F Disk Start            0000 (0)\n-23EA11 Int File Attributes   0000 (0)\n+240C1B Compression Method    0008 (8) 'Deflated'\n+240C1D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240C21 CRC                   397FE7C7 (964683719)\n+240C25 Compressed Size       000002AD (685)\n+240C29 Uncompressed Size     00000592 (1426)\n+240C2D Filename Length       0045 (69)\n+240C2F Extra Length          0000 (0)\n+240C31 Comment Length        0000 (0)\n+240C33 Disk Start            0000 (0)\n+240C35 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23EA13 Ext File Attributes   00000000 (0)\n-23EA17 Local Header Offset   001F5C6D (2055277)\n-23EA1B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240C37 Ext File Attributes   00000000 (0)\n+240C3B Local Header Offset   001FB36C (2077548)\n+240C3F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23EA1B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240C3F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23EA4B CENTRAL HEADER #1872  02014B50 (33639248)\n-23EA4F Created Zip Spec      14 (20) '2.0'\n-23EA50 Created OS            00 (0) 'MS-DOS'\n-23EA51 Extract Zip Spec      14 (20) '2.0'\n-23EA52 Extract OS            00 (0) 'MS-DOS'\n-23EA53 General Purpose Flag  0808 (2056)\n+240C84 CENTRAL HEADER #1872  02014B50 (33639248)\n+240C88 Created Zip Spec      14 (20) '2.0'\n+240C89 Created OS            00 (0) 'MS-DOS'\n+240C8A Extract Zip Spec      14 (20) '2.0'\n+240C8B Extract OS            00 (0) 'MS-DOS'\n+240C8C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23EA55 Compression Method    0008 (8) 'Deflated'\n-23EA57 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23EA5B CRC                   4F1688E0 (1326876896)\n-23EA5F Compressed Size       00000C78 (3192)\n-23EA63 Uncompressed Size     00003A7C (14972)\n-23EA67 Filename Length       002B (43)\n-23EA69 Extra Length          0000 (0)\n-23EA6B Comment Length        0000 (0)\n-23EA6D Disk Start            0000 (0)\n-23EA6F Int File Attributes   0000 (0)\n+240C8E Compression Method    0008 (8) 'Deflated'\n+240C90 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240C94 CRC                   6571F019 (1701965849)\n+240C98 Compressed Size       0000042D (1069)\n+240C9C Uncompressed Size     00000CAD (3245)\n+240CA0 Filename Length       0040 (64)\n+240CA2 Extra Length          0000 (0)\n+240CA4 Comment Length        0000 (0)\n+240CA6 Disk Start            0000 (0)\n+240CA8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23EA71 Ext File Attributes   00000000 (0)\n-23EA75 Local Header Offset   001F5F86 (2056070)\n-23EA79 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240CAA Ext File Attributes   00000000 (0)\n+240CAE Local Header Offset   001FB68C (2078348)\n+240CB2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23EA79: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240CB2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23EAA4 CENTRAL HEADER #1873  02014B50 (33639248)\n-23EAA8 Created Zip Spec      14 (20) '2.0'\n-23EAA9 Created OS            00 (0) 'MS-DOS'\n-23EAAA Extract Zip Spec      14 (20) '2.0'\n-23EAAB Extract OS            00 (0) 'MS-DOS'\n-23EAAC General Purpose Flag  0808 (2056)\n+240CF2 CENTRAL HEADER #1873  02014B50 (33639248)\n+240CF6 Created Zip Spec      14 (20) '2.0'\n+240CF7 Created OS            00 (0) 'MS-DOS'\n+240CF8 Extract Zip Spec      14 (20) '2.0'\n+240CF9 Extract OS            00 (0) 'MS-DOS'\n+240CFA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23EAAE Compression Method    0008 (8) 'Deflated'\n-23EAB0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23EAB4 CRC                   F33C5BFA (4080819194)\n-23EAB8 Compressed Size       00000270 (624)\n-23EABC Uncompressed Size     000004BD (1213)\n-23EAC0 Filename Length       0033 (51)\n-23EAC2 Extra Length          0000 (0)\n-23EAC4 Comment Length        0000 (0)\n-23EAC6 Disk Start            0000 (0)\n-23EAC8 Int File Attributes   0000 (0)\n+240CFC Compression Method    0008 (8) 'Deflated'\n+240CFE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240D02 CRC                   7A468FD9 (2051444697)\n+240D06 Compressed Size       00000402 (1026)\n+240D0A Uncompressed Size     00000C2C (3116)\n+240D0E Filename Length       0041 (65)\n+240D10 Extra Length          0000 (0)\n+240D12 Comment Length        0000 (0)\n+240D14 Disk Start            0000 (0)\n+240D16 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23EACA Ext File Attributes   00000000 (0)\n-23EACE Local Header Offset   001F6C57 (2059351)\n-23EAD2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240D18 Ext File Attributes   00000000 (0)\n+240D1C Local Header Offset   001FBB27 (2079527)\n+240D20 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23EAD2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240D20: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23EB05 CENTRAL HEADER #1874  02014B50 (33639248)\n-23EB09 Created Zip Spec      14 (20) '2.0'\n-23EB0A Created OS            00 (0) 'MS-DOS'\n-23EB0B Extract Zip Spec      14 (20) '2.0'\n-23EB0C Extract OS            00 (0) 'MS-DOS'\n-23EB0D General Purpose Flag  0808 (2056)\n+240D61 CENTRAL HEADER #1874  02014B50 (33639248)\n+240D65 Created Zip Spec      14 (20) '2.0'\n+240D66 Created OS            00 (0) 'MS-DOS'\n+240D67 Extract Zip Spec      14 (20) '2.0'\n+240D68 Extract OS            00 (0) 'MS-DOS'\n+240D69 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23EB0F Compression Method    0008 (8) 'Deflated'\n-23EB11 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23EB15 CRC                   B27D0F80 (2994540416)\n-23EB19 Compressed Size       0000091D (2333)\n-23EB1D Uncompressed Size     00002A19 (10777)\n-23EB21 Filename Length       002E (46)\n-23EB23 Extra Length          0000 (0)\n-23EB25 Comment Length        0000 (0)\n-23EB27 Disk Start            0000 (0)\n-23EB29 Int File Attributes   0000 (0)\n+240D6B Compression Method    0008 (8) 'Deflated'\n+240D6D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240D71 CRC                   FDA6691C (4255541532)\n+240D75 Compressed Size       00000658 (1624)\n+240D79 Uncompressed Size     00001578 (5496)\n+240D7D Filename Length       003E (62)\n+240D7F Extra Length          0000 (0)\n+240D81 Comment Length        0000 (0)\n+240D83 Disk Start            0000 (0)\n+240D85 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23EB2B Ext File Attributes   00000000 (0)\n-23EB2F Local Header Offset   001F6F28 (2060072)\n-23EB33 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240D87 Ext File Attributes   00000000 (0)\n+240D8B Local Header Offset   001FBF98 (2080664)\n+240D8F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23EB33: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240D8F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23EB61 CENTRAL HEADER #1875  02014B50 (33639248)\n-23EB65 Created Zip Spec      14 (20) '2.0'\n-23EB66 Created OS            00 (0) 'MS-DOS'\n-23EB67 Extract Zip Spec      14 (20) '2.0'\n-23EB68 Extract OS            00 (0) 'MS-DOS'\n-23EB69 General Purpose Flag  0808 (2056)\n+240DCD CENTRAL HEADER #1875  02014B50 (33639248)\n+240DD1 Created Zip Spec      14 (20) '2.0'\n+240DD2 Created OS            00 (0) 'MS-DOS'\n+240DD3 Extract Zip Spec      14 (20) '2.0'\n+240DD4 Extract OS            00 (0) 'MS-DOS'\n+240DD5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23EB6B Compression Method    0008 (8) 'Deflated'\n-23EB6D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23EB71 CRC                   2A67D5E8 (711448040)\n-23EB75 Compressed Size       00000427 (1063)\n-23EB79 Uncompressed Size     00000C0C (3084)\n-23EB7D Filename Length       0036 (54)\n-23EB7F Extra Length          0000 (0)\n-23EB81 Comment Length        0000 (0)\n-23EB83 Disk Start            0000 (0)\n-23EB85 Int File Attributes   0000 (0)\n+240DD7 Compression Method    0008 (8) 'Deflated'\n+240DD9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240DDD CRC                   00000000 (0)\n+240DE1 Compressed Size       00000002 (2)\n+240DE5 Uncompressed Size     00000000 (0)\n+240DE9 Filename Length       002A (42)\n+240DEB Extra Length          0000 (0)\n+240DED Comment Length        0000 (0)\n+240DEF Disk Start            0000 (0)\n+240DF1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23EB87 Ext File Attributes   00000000 (0)\n-23EB8B Local Header Offset   001F78A1 (2062497)\n-23EB8F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240DF3 Ext File Attributes   00000000 (0)\n+240DF7 Local Header Offset   001FC65C (2082396)\n+240DFB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23EB8F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240DFB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23EBC5 CENTRAL HEADER #1876  02014B50 (33639248)\n-23EBC9 Created Zip Spec      14 (20) '2.0'\n-23EBCA Created OS            00 (0) 'MS-DOS'\n-23EBCB Extract Zip Spec      14 (20) '2.0'\n-23EBCC Extract OS            00 (0) 'MS-DOS'\n-23EBCD General Purpose Flag  0808 (2056)\n+240E25 CENTRAL HEADER #1876  02014B50 (33639248)\n+240E29 Created Zip Spec      14 (20) '2.0'\n+240E2A Created OS            00 (0) 'MS-DOS'\n+240E2B Extract Zip Spec      14 (20) '2.0'\n+240E2C Extract OS            00 (0) 'MS-DOS'\n+240E2D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23EBCF Compression Method    0008 (8) 'Deflated'\n-23EBD1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23EBD5 CRC                   7483DD2E (1954798894)\n-23EBD9 Compressed Size       00000360 (864)\n-23EBDD Uncompressed Size     000008BC (2236)\n-23EBE1 Filename Length       0032 (50)\n-23EBE3 Extra Length          0000 (0)\n-23EBE5 Comment Length        0000 (0)\n-23EBE7 Disk Start            0000 (0)\n-23EBE9 Int File Attributes   0000 (0)\n+240E2F Compression Method    0008 (8) 'Deflated'\n+240E31 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240E35 CRC                   AD8A2A72 (2911513202)\n+240E39 Compressed Size       00000510 (1296)\n+240E3D Uncompressed Size     00000E16 (3606)\n+240E41 Filename Length       0039 (57)\n+240E43 Extra Length          0000 (0)\n+240E45 Comment Length        0000 (0)\n+240E47 Disk Start            0000 (0)\n+240E49 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23EBEB Ext File Attributes   00000000 (0)\n-23EBEF Local Header Offset   001F7D2C (2063660)\n-23EBF3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240E4B Ext File Attributes   00000000 (0)\n+240E4F Local Header Offset   001FC6B6 (2082486)\n+240E53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23EBF3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240E53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23EC25 CENTRAL HEADER #1877  02014B50 (33639248)\n-23EC29 Created Zip Spec      14 (20) '2.0'\n-23EC2A Created OS            00 (0) 'MS-DOS'\n-23EC2B Extract Zip Spec      14 (20) '2.0'\n-23EC2C Extract OS            00 (0) 'MS-DOS'\n-23EC2D General Purpose Flag  0808 (2056)\n+240E8C CENTRAL HEADER #1877  02014B50 (33639248)\n+240E90 Created Zip Spec      14 (20) '2.0'\n+240E91 Created OS            00 (0) 'MS-DOS'\n+240E92 Extract Zip Spec      14 (20) '2.0'\n+240E93 Extract OS            00 (0) 'MS-DOS'\n+240E94 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23EC2F Compression Method    0008 (8) 'Deflated'\n-23EC31 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23EC35 CRC                   6B4F2850 (1800349776)\n-23EC39 Compressed Size       000003C5 (965)\n-23EC3D Uncompressed Size     00000801 (2049)\n-23EC41 Filename Length       002F (47)\n-23EC43 Extra Length          0000 (0)\n-23EC45 Comment Length        0000 (0)\n-23EC47 Disk Start            0000 (0)\n-23EC49 Int File Attributes   0000 (0)\n+240E96 Compression Method    0008 (8) 'Deflated'\n+240E98 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240E9C CRC                   EEF3CE31 (4008955441)\n+240EA0 Compressed Size       0000045E (1118)\n+240EA4 Uncompressed Size     00000D4D (3405)\n+240EA8 Filename Length       0046 (70)\n+240EAA Extra Length          0000 (0)\n+240EAC Comment Length        0000 (0)\n+240EAE Disk Start            0000 (0)\n+240EB0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23EC4B Ext File Attributes   00000000 (0)\n-23EC4F Local Header Offset   001F80EC (2064620)\n-23EC53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240EB2 Ext File Attributes   00000000 (0)\n+240EB6 Local Header Offset   001FCC2D (2083885)\n+240EBA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23EC53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240EBA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23EC82 CENTRAL HEADER #1878  02014B50 (33639248)\n-23EC86 Created Zip Spec      14 (20) '2.0'\n-23EC87 Created OS            00 (0) 'MS-DOS'\n-23EC88 Extract Zip Spec      14 (20) '2.0'\n-23EC89 Extract OS            00 (0) 'MS-DOS'\n-23EC8A General Purpose Flag  0808 (2056)\n+240F00 CENTRAL HEADER #1878  02014B50 (33639248)\n+240F04 Created Zip Spec      14 (20) '2.0'\n+240F05 Created OS            00 (0) 'MS-DOS'\n+240F06 Extract Zip Spec      14 (20) '2.0'\n+240F07 Extract OS            00 (0) 'MS-DOS'\n+240F08 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23EC8C Compression Method    0008 (8) 'Deflated'\n-23EC8E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23EC92 CRC                   065E383D (106838077)\n-23EC96 Compressed Size       00000442 (1090)\n-23EC9A Uncompressed Size     00000B59 (2905)\n-23EC9E Filename Length       0031 (49)\n-23ECA0 Extra Length          0000 (0)\n-23ECA2 Comment Length        0000 (0)\n-23ECA4 Disk Start            0000 (0)\n-23ECA6 Int File Attributes   0000 (0)\n+240F0A Compression Method    0008 (8) 'Deflated'\n+240F0C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240F10 CRC                   00000000 (0)\n+240F14 Compressed Size       00000002 (2)\n+240F18 Uncompressed Size     00000000 (0)\n+240F1C Filename Length       0021 (33)\n+240F1E Extra Length          0000 (0)\n+240F20 Comment Length        0000 (0)\n+240F22 Disk Start            0000 (0)\n+240F24 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23ECA8 Ext File Attributes   00000000 (0)\n-23ECAC Local Header Offset   001F850E (2065678)\n-23ECB0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240F26 Ext File Attributes   00000000 (0)\n+240F2A Local Header Offset   001FD0FF (2085119)\n+240F2E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23ECB0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240F2E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23ECE1 CENTRAL HEADER #1879  02014B50 (33639248)\n-23ECE5 Created Zip Spec      14 (20) '2.0'\n-23ECE6 Created OS            00 (0) 'MS-DOS'\n-23ECE7 Extract Zip Spec      14 (20) '2.0'\n-23ECE8 Extract OS            00 (0) 'MS-DOS'\n-23ECE9 General Purpose Flag  0808 (2056)\n+240F4F CENTRAL HEADER #1879  02014B50 (33639248)\n+240F53 Created Zip Spec      14 (20) '2.0'\n+240F54 Created OS            00 (0) 'MS-DOS'\n+240F55 Extract Zip Spec      14 (20) '2.0'\n+240F56 Extract OS            00 (0) 'MS-DOS'\n+240F57 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23ECEB Compression Method    0008 (8) 'Deflated'\n-23ECED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23ECF1 CRC                   33B4FA9F (867498655)\n-23ECF5 Compressed Size       000003BC (956)\n-23ECF9 Uncompressed Size     00000A57 (2647)\n-23ECFD Filename Length       0036 (54)\n-23ECFF Extra Length          0000 (0)\n-23ED01 Comment Length        0000 (0)\n-23ED03 Disk Start            0000 (0)\n-23ED05 Int File Attributes   0000 (0)\n+240F59 Compression Method    0008 (8) 'Deflated'\n+240F5B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240F5F CRC                   B359713A (3008983354)\n+240F63 Compressed Size       000003DC (988)\n+240F67 Uncompressed Size     00000BB3 (2995)\n+240F6B Filename Length       0034 (52)\n+240F6D Extra Length          0000 (0)\n+240F6F Comment Length        0000 (0)\n+240F71 Disk Start            0000 (0)\n+240F73 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23ED07 Ext File Attributes   00000000 (0)\n-23ED0B Local Header Offset   001F89AF (2066863)\n-23ED0F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240F75 Ext File Attributes   00000000 (0)\n+240F79 Local Header Offset   001FD150 (2085200)\n+240F7D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23ED0F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240F7D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23ED45 CENTRAL HEADER #1880  02014B50 (33639248)\n-23ED49 Created Zip Spec      14 (20) '2.0'\n-23ED4A Created OS            00 (0) 'MS-DOS'\n-23ED4B Extract Zip Spec      14 (20) '2.0'\n-23ED4C Extract OS            00 (0) 'MS-DOS'\n-23ED4D General Purpose Flag  0808 (2056)\n+240FB1 CENTRAL HEADER #1880  02014B50 (33639248)\n+240FB5 Created Zip Spec      14 (20) '2.0'\n+240FB6 Created OS            00 (0) 'MS-DOS'\n+240FB7 Extract Zip Spec      14 (20) '2.0'\n+240FB8 Extract OS            00 (0) 'MS-DOS'\n+240FB9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23ED4F Compression Method    0008 (8) 'Deflated'\n-23ED51 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23ED55 CRC                   00000000 (0)\n-23ED59 Compressed Size       00000002 (2)\n-23ED5D Uncompressed Size     00000000 (0)\n-23ED61 Filename Length       0025 (37)\n-23ED63 Extra Length          0000 (0)\n-23ED65 Comment Length        0000 (0)\n-23ED67 Disk Start            0000 (0)\n-23ED69 Int File Attributes   0000 (0)\n+240FBB Compression Method    0008 (8) 'Deflated'\n+240FBD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+240FC1 CRC                   D1906BB3 (3515902899)\n+240FC5 Compressed Size       0000025D (605)\n+240FC9 Uncompressed Size     0000047E (1150)\n+240FCD Filename Length       003B (59)\n+240FCF Extra Length          0000 (0)\n+240FD1 Comment Length        0000 (0)\n+240FD3 Disk Start            0000 (0)\n+240FD5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23ED6B Ext File Attributes   00000000 (0)\n-23ED6F Local Header Offset   001F8DCF (2067919)\n-23ED73 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+240FD7 Ext File Attributes   00000000 (0)\n+240FDB Local Header Offset   001FD58E (2086286)\n+240FDF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23ED73: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x240FDF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23ED98 CENTRAL HEADER #1881  02014B50 (33639248)\n-23ED9C Created Zip Spec      14 (20) '2.0'\n-23ED9D Created OS            00 (0) 'MS-DOS'\n-23ED9E Extract Zip Spec      14 (20) '2.0'\n-23ED9F Extract OS            00 (0) 'MS-DOS'\n-23EDA0 General Purpose Flag  0808 (2056)\n+24101A CENTRAL HEADER #1881  02014B50 (33639248)\n+24101E Created Zip Spec      14 (20) '2.0'\n+24101F Created OS            00 (0) 'MS-DOS'\n+241020 Extract Zip Spec      14 (20) '2.0'\n+241021 Extract OS            00 (0) 'MS-DOS'\n+241022 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23EDA2 Compression Method    0008 (8) 'Deflated'\n-23EDA4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23EDA8 CRC                   99A066B3 (2577426099)\n-23EDAC Compressed Size       000003F0 (1008)\n-23EDB0 Uncompressed Size     00000A40 (2624)\n-23EDB4 Filename Length       0041 (65)\n-23EDB6 Extra Length          0000 (0)\n-23EDB8 Comment Length        0000 (0)\n-23EDBA Disk Start            0000 (0)\n-23EDBC Int File Attributes   0000 (0)\n+241024 Compression Method    0008 (8) 'Deflated'\n+241026 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24102A CRC                   0375CF6B (58052459)\n+24102E Compressed Size       00000513 (1299)\n+241032 Uncompressed Size     00000E60 (3680)\n+241036 Filename Length       003C (60)\n+241038 Extra Length          0000 (0)\n+24103A Comment Length        0000 (0)\n+24103C Disk Start            0000 (0)\n+24103E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23EDBE Ext File Attributes   00000000 (0)\n-23EDC2 Local Header Offset   001F8E24 (2068004)\n-23EDC6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241040 Ext File Attributes   00000000 (0)\n+241044 Local Header Offset   001FD854 (2086996)\n+241048 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23EDC6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241048: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23EE07 CENTRAL HEADER #1882  02014B50 (33639248)\n-23EE0B Created Zip Spec      14 (20) '2.0'\n-23EE0C Created OS            00 (0) 'MS-DOS'\n-23EE0D Extract Zip Spec      14 (20) '2.0'\n-23EE0E Extract OS            00 (0) 'MS-DOS'\n-23EE0F General Purpose Flag  0808 (2056)\n+241084 CENTRAL HEADER #1882  02014B50 (33639248)\n+241088 Created Zip Spec      14 (20) '2.0'\n+241089 Created OS            00 (0) 'MS-DOS'\n+24108A Extract Zip Spec      14 (20) '2.0'\n+24108B Extract OS            00 (0) 'MS-DOS'\n+24108C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23EE11 Compression Method    0008 (8) 'Deflated'\n-23EE13 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23EE17 CRC                   8FC61B83 (2412125059)\n-23EE1B Compressed Size       000004C9 (1225)\n-23EE1F Uncompressed Size     00000F15 (3861)\n-23EE23 Filename Length       0042 (66)\n-23EE25 Extra Length          0000 (0)\n-23EE27 Comment Length        0000 (0)\n-23EE29 Disk Start            0000 (0)\n-23EE2B Int File Attributes   0000 (0)\n+24108E Compression Method    0008 (8) 'Deflated'\n+241090 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241094 CRC                   00000000 (0)\n+241098 Compressed Size       00000002 (2)\n+24109C Uncompressed Size     00000000 (0)\n+2410A0 Filename Length       002C (44)\n+2410A2 Extra Length          0000 (0)\n+2410A4 Comment Length        0000 (0)\n+2410A6 Disk Start            0000 (0)\n+2410A8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23EE2D Ext File Attributes   00000000 (0)\n-23EE31 Local Header Offset   001F9283 (2069123)\n-23EE35 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2410AA Ext File Attributes   00000000 (0)\n+2410AE Local Header Offset   001FDDD1 (2088401)\n+2410B2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23EE35: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2410B2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23EE77 CENTRAL HEADER #1883  02014B50 (33639248)\n-23EE7B Created Zip Spec      14 (20) '2.0'\n-23EE7C Created OS            00 (0) 'MS-DOS'\n-23EE7D Extract Zip Spec      14 (20) '2.0'\n-23EE7E Extract OS            00 (0) 'MS-DOS'\n-23EE7F General Purpose Flag  0808 (2056)\n+2410DE CENTRAL HEADER #1883  02014B50 (33639248)\n+2410E2 Created Zip Spec      14 (20) '2.0'\n+2410E3 Created OS            00 (0) 'MS-DOS'\n+2410E4 Extract Zip Spec      14 (20) '2.0'\n+2410E5 Extract OS            00 (0) 'MS-DOS'\n+2410E6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23EE81 Compression Method    0008 (8) 'Deflated'\n-23EE83 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23EE87 CRC                   C36126A3 (3277924003)\n-23EE8B Compressed Size       00000499 (1177)\n-23EE8F Uncompressed Size     00000CF2 (3314)\n-23EE93 Filename Length       003F (63)\n-23EE95 Extra Length          0000 (0)\n-23EE97 Comment Length        0000 (0)\n-23EE99 Disk Start            0000 (0)\n-23EE9B Int File Attributes   0000 (0)\n+2410E8 Compression Method    0008 (8) 'Deflated'\n+2410EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2410EE CRC                   D7F68AC0 (3623258816)\n+2410F2 Compressed Size       00000395 (917)\n+2410F6 Uncompressed Size     0000091C (2332)\n+2410FA Filename Length       0052 (82)\n+2410FC Extra Length          0000 (0)\n+2410FE Comment Length        0000 (0)\n+241100 Disk Start            0000 (0)\n+241102 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23EE9D Ext File Attributes   00000000 (0)\n-23EEA1 Local Header Offset   001F97BC (2070460)\n-23EEA5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241104 Ext File Attributes   00000000 (0)\n+241108 Local Header Offset   001FDE2D (2088493)\n+24110C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23EEA5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24110C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23EEE4 CENTRAL HEADER #1884  02014B50 (33639248)\n-23EEE8 Created Zip Spec      14 (20) '2.0'\n-23EEE9 Created OS            00 (0) 'MS-DOS'\n-23EEEA Extract Zip Spec      14 (20) '2.0'\n-23EEEB Extract OS            00 (0) 'MS-DOS'\n-23EEEC General Purpose Flag  0808 (2056)\n+24115E CENTRAL HEADER #1884  02014B50 (33639248)\n+241162 Created Zip Spec      14 (20) '2.0'\n+241163 Created OS            00 (0) 'MS-DOS'\n+241164 Extract Zip Spec      14 (20) '2.0'\n+241165 Extract OS            00 (0) 'MS-DOS'\n+241166 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23EEEE Compression Method    0008 (8) 'Deflated'\n-23EEF0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23EEF4 CRC                   00000000 (0)\n-23EEF8 Compressed Size       00000002 (2)\n-23EEFC Uncompressed Size     00000000 (0)\n-23EF00 Filename Length       002D (45)\n-23EF02 Extra Length          0000 (0)\n-23EF04 Comment Length        0000 (0)\n-23EF06 Disk Start            0000 (0)\n-23EF08 Int File Attributes   0000 (0)\n+241168 Compression Method    0008 (8) 'Deflated'\n+24116A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24116E CRC                   3D7B6838 (1031497784)\n+241172 Compressed Size       0000022F (559)\n+241176 Uncompressed Size     000003ED (1005)\n+24117A Filename Length       0047 (71)\n+24117C Extra Length          0000 (0)\n+24117E Comment Length        0000 (0)\n+241180 Disk Start            0000 (0)\n+241182 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23EF0A Ext File Attributes   00000000 (0)\n-23EF0E Local Header Offset   001F9CC2 (2071746)\n-23EF12 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241184 Ext File Attributes   00000000 (0)\n+241188 Local Header Offset   001FE242 (2089538)\n+24118C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23EF12: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24118C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23EF3F CENTRAL HEADER #1885  02014B50 (33639248)\n-23EF43 Created Zip Spec      14 (20) '2.0'\n-23EF44 Created OS            00 (0) 'MS-DOS'\n-23EF45 Extract Zip Spec      14 (20) '2.0'\n-23EF46 Extract OS            00 (0) 'MS-DOS'\n-23EF47 General Purpose Flag  0808 (2056)\n+2411D3 CENTRAL HEADER #1885  02014B50 (33639248)\n+2411D7 Created Zip Spec      14 (20) '2.0'\n+2411D8 Created OS            00 (0) 'MS-DOS'\n+2411D9 Extract Zip Spec      14 (20) '2.0'\n+2411DA Extract OS            00 (0) 'MS-DOS'\n+2411DB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23EF49 Compression Method    0008 (8) 'Deflated'\n-23EF4B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23EF4F CRC                   C15189CF (3243346383)\n-23EF53 Compressed Size       00000317 (791)\n-23EF57 Uncompressed Size     000006BB (1723)\n-23EF5B Filename Length       0042 (66)\n-23EF5D Extra Length          0000 (0)\n-23EF5F Comment Length        0000 (0)\n-23EF61 Disk Start            0000 (0)\n-23EF63 Int File Attributes   0000 (0)\n+2411DD Compression Method    0008 (8) 'Deflated'\n+2411DF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2411E3 CRC                   475F83BC (1197441980)\n+2411E7 Compressed Size       0000044A (1098)\n+2411EB Uncompressed Size     00000CBA (3258)\n+2411EF Filename Length       004E (78)\n+2411F1 Extra Length          0000 (0)\n+2411F3 Comment Length        0000 (0)\n+2411F5 Disk Start            0000 (0)\n+2411F7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23EF65 Ext File Attributes   00000000 (0)\n-23EF69 Local Header Offset   001F9D1F (2071839)\n-23EF6D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2411F9 Ext File Attributes   00000000 (0)\n+2411FD Local Header Offset   001FE4E6 (2090214)\n+241201 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23EF6D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241201: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23EFAF CENTRAL HEADER #1886  02014B50 (33639248)\n-23EFB3 Created Zip Spec      14 (20) '2.0'\n-23EFB4 Created OS            00 (0) 'MS-DOS'\n-23EFB5 Extract Zip Spec      14 (20) '2.0'\n-23EFB6 Extract OS            00 (0) 'MS-DOS'\n-23EFB7 General Purpose Flag  0808 (2056)\n+24124F CENTRAL HEADER #1886  02014B50 (33639248)\n+241253 Created Zip Spec      14 (20) '2.0'\n+241254 Created OS            00 (0) 'MS-DOS'\n+241255 Extract Zip Spec      14 (20) '2.0'\n+241256 Extract OS            00 (0) 'MS-DOS'\n+241257 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23EFB9 Compression Method    0008 (8) 'Deflated'\n-23EFBB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23EFBF CRC                   48345DF3 (1211391475)\n-23EFC3 Compressed Size       00000433 (1075)\n-23EFC7 Uncompressed Size     00000ACD (2765)\n-23EFCB Filename Length       0047 (71)\n-23EFCD Extra Length          0000 (0)\n-23EFCF Comment Length        0000 (0)\n-23EFD1 Disk Start            0000 (0)\n-23EFD3 Int File Attributes   0000 (0)\n+241259 Compression Method    0008 (8) 'Deflated'\n+24125B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24125F CRC                   97BCAA4D (2545723981)\n+241263 Compressed Size       00000375 (885)\n+241267 Uncompressed Size     0000085B (2139)\n+24126B Filename Length       003C (60)\n+24126D Extra Length          0000 (0)\n+24126F Comment Length        0000 (0)\n+241271 Disk Start            0000 (0)\n+241273 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23EFD5 Ext File Attributes   00000000 (0)\n-23EFD9 Local Header Offset   001FA0A6 (2072742)\n-23EFDD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241275 Ext File Attributes   00000000 (0)\n+241279 Local Header Offset   001FE9AC (2091436)\n+24127D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23EFDD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24127D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F024 CENTRAL HEADER #1887  02014B50 (33639248)\n-23F028 Created Zip Spec      14 (20) '2.0'\n-23F029 Created OS            00 (0) 'MS-DOS'\n-23F02A Extract Zip Spec      14 (20) '2.0'\n-23F02B Extract OS            00 (0) 'MS-DOS'\n-23F02C General Purpose Flag  0808 (2056)\n+2412B9 CENTRAL HEADER #1887  02014B50 (33639248)\n+2412BD Created Zip Spec      14 (20) '2.0'\n+2412BE Created OS            00 (0) 'MS-DOS'\n+2412BF Extract Zip Spec      14 (20) '2.0'\n+2412C0 Extract OS            00 (0) 'MS-DOS'\n+2412C1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F02E Compression Method    0008 (8) 'Deflated'\n-23F030 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F034 CRC                   8C150447 (2350187591)\n-23F038 Compressed Size       000003DB (987)\n-23F03C Uncompressed Size     000009B8 (2488)\n-23F040 Filename Length       0044 (68)\n-23F042 Extra Length          0000 (0)\n-23F044 Comment Length        0000 (0)\n-23F046 Disk Start            0000 (0)\n-23F048 Int File Attributes   0000 (0)\n+2412C3 Compression Method    0008 (8) 'Deflated'\n+2412C5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2412C9 CRC                   A0F529B3 (2700421555)\n+2412CD Compressed Size       00000417 (1047)\n+2412D1 Uncompressed Size     00000CE3 (3299)\n+2412D5 Filename Length       0043 (67)\n+2412D7 Extra Length          0000 (0)\n+2412D9 Comment Length        0000 (0)\n+2412DB Disk Start            0000 (0)\n+2412DD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F04A Ext File Attributes   00000000 (0)\n-23F04E Local Header Offset   001FA54E (2073934)\n-23F052 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2412DF Ext File Attributes   00000000 (0)\n+2412E3 Local Header Offset   001FED8B (2092427)\n+2412E7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F052: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2412E7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F096 CENTRAL HEADER #1888  02014B50 (33639248)\n-23F09A Created Zip Spec      14 (20) '2.0'\n-23F09B Created OS            00 (0) 'MS-DOS'\n-23F09C Extract Zip Spec      14 (20) '2.0'\n-23F09D Extract OS            00 (0) 'MS-DOS'\n-23F09E General Purpose Flag  0808 (2056)\n+24132A CENTRAL HEADER #1888  02014B50 (33639248)\n+24132E Created Zip Spec      14 (20) '2.0'\n+24132F Created OS            00 (0) 'MS-DOS'\n+241330 Extract Zip Spec      14 (20) '2.0'\n+241331 Extract OS            00 (0) 'MS-DOS'\n+241332 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F0A0 Compression Method    0008 (8) 'Deflated'\n-23F0A2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F0A6 CRC                   288B644A (680223818)\n-23F0AA Compressed Size       00000391 (913)\n-23F0AE Uncompressed Size     0000079B (1947)\n-23F0B2 Filename Length       0041 (65)\n-23F0B4 Extra Length          0000 (0)\n-23F0B6 Comment Length        0000 (0)\n-23F0B8 Disk Start            0000 (0)\n-23F0BA Int File Attributes   0000 (0)\n+241334 Compression Method    0008 (8) 'Deflated'\n+241336 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24133A CRC                   0978E7E9 (158918633)\n+24133E Compressed Size       00000433 (1075)\n+241342 Uncompressed Size     00000C93 (3219)\n+241346 Filename Length       004A (74)\n+241348 Extra Length          0000 (0)\n+24134A Comment Length        0000 (0)\n+24134C Disk Start            0000 (0)\n+24134E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F0BC Ext File Attributes   00000000 (0)\n-23F0C0 Local Header Offset   001FA99B (2075035)\n-23F0C4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241350 Ext File Attributes   00000000 (0)\n+241354 Local Header Offset   001FF213 (2093587)\n+241358 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F0C4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241358: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F105 CENTRAL HEADER #1889  02014B50 (33639248)\n-23F109 Created Zip Spec      14 (20) '2.0'\n-23F10A Created OS            00 (0) 'MS-DOS'\n-23F10B Extract Zip Spec      14 (20) '2.0'\n-23F10C Extract OS            00 (0) 'MS-DOS'\n-23F10D General Purpose Flag  0808 (2056)\n+2413A2 CENTRAL HEADER #1889  02014B50 (33639248)\n+2413A6 Created Zip Spec      14 (20) '2.0'\n+2413A7 Created OS            00 (0) 'MS-DOS'\n+2413A8 Extract Zip Spec      14 (20) '2.0'\n+2413A9 Extract OS            00 (0) 'MS-DOS'\n+2413AA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F10F Compression Method    0008 (8) 'Deflated'\n-23F111 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F115 CRC                   A6C8F390 (2798187408)\n-23F119 Compressed Size       00000491 (1169)\n-23F11D Uncompressed Size     00000C41 (3137)\n-23F121 Filename Length       0040 (64)\n-23F123 Extra Length          0000 (0)\n-23F125 Comment Length        0000 (0)\n-23F127 Disk Start            0000 (0)\n-23F129 Int File Attributes   0000 (0)\n+2413AC Compression Method    0008 (8) 'Deflated'\n+2413AE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2413B2 CRC                   0929F211 (153743889)\n+2413B6 Compressed Size       00000338 (824)\n+2413BA Uncompressed Size     000008B7 (2231)\n+2413BE Filename Length       004D (77)\n+2413C0 Extra Length          0000 (0)\n+2413C2 Comment Length        0000 (0)\n+2413C4 Disk Start            0000 (0)\n+2413C6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F12B Ext File Attributes   00000000 (0)\n-23F12F Local Header Offset   001FAD9B (2076059)\n-23F133 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2413C8 Ext File Attributes   00000000 (0)\n+2413CC Local Header Offset   001FF6BE (2094782)\n+2413D0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F133: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2413D0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F173 CENTRAL HEADER #1890  02014B50 (33639248)\n-23F177 Created Zip Spec      14 (20) '2.0'\n-23F178 Created OS            00 (0) 'MS-DOS'\n-23F179 Extract Zip Spec      14 (20) '2.0'\n-23F17A Extract OS            00 (0) 'MS-DOS'\n-23F17B General Purpose Flag  0808 (2056)\n+24141D CENTRAL HEADER #1890  02014B50 (33639248)\n+241421 Created Zip Spec      14 (20) '2.0'\n+241422 Created OS            00 (0) 'MS-DOS'\n+241423 Extract Zip Spec      14 (20) '2.0'\n+241424 Extract OS            00 (0) 'MS-DOS'\n+241425 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F17D Compression Method    0008 (8) 'Deflated'\n-23F17F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F183 CRC                   7350CC44 (1934675012)\n-23F187 Compressed Size       000002CA (714)\n-23F18B Uncompressed Size     000005A3 (1443)\n-23F18F Filename Length       003D (61)\n-23F191 Extra Length          0000 (0)\n-23F193 Comment Length        0000 (0)\n-23F195 Disk Start            0000 (0)\n-23F197 Int File Attributes   0000 (0)\n+241427 Compression Method    0008 (8) 'Deflated'\n+241429 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24142D CRC                   00000000 (0)\n+241431 Compressed Size       00000002 (2)\n+241435 Uncompressed Size     00000000 (0)\n+241439 Filename Length       0029 (41)\n+24143B Extra Length          0000 (0)\n+24143D Comment Length        0000 (0)\n+24143F Disk Start            0000 (0)\n+241441 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F199 Ext File Attributes   00000000 (0)\n-23F19D Local Header Offset   001FB29A (2077338)\n-23F1A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241443 Ext File Attributes   00000000 (0)\n+241447 Local Header Offset   001FFA71 (2095729)\n+24144B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F1A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24144B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F1DE CENTRAL HEADER #1891  02014B50 (33639248)\n-23F1E2 Created Zip Spec      14 (20) '2.0'\n-23F1E3 Created OS            00 (0) 'MS-DOS'\n-23F1E4 Extract Zip Spec      14 (20) '2.0'\n-23F1E5 Extract OS            00 (0) 'MS-DOS'\n-23F1E6 General Purpose Flag  0808 (2056)\n+241474 CENTRAL HEADER #1891  02014B50 (33639248)\n+241478 Created Zip Spec      14 (20) '2.0'\n+241479 Created OS            00 (0) 'MS-DOS'\n+24147A Extract Zip Spec      14 (20) '2.0'\n+24147B Extract OS            00 (0) 'MS-DOS'\n+24147C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F1E8 Compression Method    0008 (8) 'Deflated'\n-23F1EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F1EE CRC                   00000000 (0)\n-23F1F2 Compressed Size       00000002 (2)\n-23F1F6 Uncompressed Size     00000000 (0)\n-23F1FA Filename Length       002B (43)\n-23F1FC Extra Length          0000 (0)\n-23F1FE Comment Length        0000 (0)\n-23F200 Disk Start            0000 (0)\n-23F202 Int File Attributes   0000 (0)\n+24147E Compression Method    0008 (8) 'Deflated'\n+241480 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241484 CRC                   26D63221 (651571745)\n+241488 Compressed Size       000011DD (4573)\n+24148C Uncompressed Size     00005153 (20819)\n+241490 Filename Length       0044 (68)\n+241492 Extra Length          0000 (0)\n+241494 Comment Length        0000 (0)\n+241496 Disk Start            0000 (0)\n+241498 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F204 Ext File Attributes   00000000 (0)\n-23F208 Local Header Offset   001FB5CF (2078159)\n-23F20C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24149A Ext File Attributes   00000000 (0)\n+24149E Local Header Offset   001FFACA (2095818)\n+2414A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F20C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2414A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F237 CENTRAL HEADER #1892  02014B50 (33639248)\n-23F23B Created Zip Spec      14 (20) '2.0'\n-23F23C Created OS            00 (0) 'MS-DOS'\n-23F23D Extract Zip Spec      14 (20) '2.0'\n-23F23E Extract OS            00 (0) 'MS-DOS'\n-23F23F General Purpose Flag  0808 (2056)\n+2414E6 CENTRAL HEADER #1892  02014B50 (33639248)\n+2414EA Created Zip Spec      14 (20) '2.0'\n+2414EB Created OS            00 (0) 'MS-DOS'\n+2414EC Extract Zip Spec      14 (20) '2.0'\n+2414ED Extract OS            00 (0) 'MS-DOS'\n+2414EE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F241 Compression Method    0008 (8) 'Deflated'\n-23F243 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F247 CRC                   53726EBB (1400008379)\n-23F24B Compressed Size       000002A5 (677)\n-23F24F Uncompressed Size     00000567 (1383)\n-23F253 Filename Length       0045 (69)\n-23F255 Extra Length          0000 (0)\n-23F257 Comment Length        0000 (0)\n-23F259 Disk Start            0000 (0)\n-23F25B Int File Attributes   0000 (0)\n+2414F0 Compression Method    0008 (8) 'Deflated'\n+2414F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2414F6 CRC                   16EA47E7 (384452583)\n+2414FA Compressed Size       0000042F (1071)\n+2414FE Uncompressed Size     00000A81 (2689)\n+241502 Filename Length       004B (75)\n+241504 Extra Length          0000 (0)\n+241506 Comment Length        0000 (0)\n+241508 Disk Start            0000 (0)\n+24150A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F25D Ext File Attributes   00000000 (0)\n-23F261 Local Header Offset   001FB62A (2078250)\n-23F265 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24150C Ext File Attributes   00000000 (0)\n+241510 Local Header Offset   00200D19 (2100505)\n+241514 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F265: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241514: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F2AA CENTRAL HEADER #1893  02014B50 (33639248)\n-23F2AE Created Zip Spec      14 (20) '2.0'\n-23F2AF Created OS            00 (0) 'MS-DOS'\n-23F2B0 Extract Zip Spec      14 (20) '2.0'\n-23F2B1 Extract OS            00 (0) 'MS-DOS'\n-23F2B2 General Purpose Flag  0808 (2056)\n+24155F CENTRAL HEADER #1893  02014B50 (33639248)\n+241563 Created Zip Spec      14 (20) '2.0'\n+241564 Created OS            00 (0) 'MS-DOS'\n+241565 Extract Zip Spec      14 (20) '2.0'\n+241566 Extract OS            00 (0) 'MS-DOS'\n+241567 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F2B4 Compression Method    0008 (8) 'Deflated'\n-23F2B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F2BA CRC                   C61A5369 (3323614057)\n-23F2BE Compressed Size       00000423 (1059)\n-23F2C2 Uncompressed Size     00000C49 (3145)\n-23F2C6 Filename Length       0040 (64)\n-23F2C8 Extra Length          0000 (0)\n-23F2CA Comment Length        0000 (0)\n-23F2CC Disk Start            0000 (0)\n-23F2CE Int File Attributes   0000 (0)\n+241569 Compression Method    0008 (8) 'Deflated'\n+24156B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24156F CRC                   82826623 (2189583907)\n+241573 Compressed Size       00000294 (660)\n+241577 Uncompressed Size     0000052A (1322)\n+24157B Filename Length       0037 (55)\n+24157D Extra Length          0000 (0)\n+24157F Comment Length        0000 (0)\n+241581 Disk Start            0000 (0)\n+241583 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F2D0 Ext File Attributes   00000000 (0)\n-23F2D4 Local Header Offset   001FB942 (2079042)\n-23F2D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241585 Ext File Attributes   00000000 (0)\n+241589 Local Header Offset   002011C1 (2101697)\n+24158D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F2D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24158D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F318 CENTRAL HEADER #1894  02014B50 (33639248)\n-23F31C Created Zip Spec      14 (20) '2.0'\n-23F31D Created OS            00 (0) 'MS-DOS'\n-23F31E Extract Zip Spec      14 (20) '2.0'\n-23F31F Extract OS            00 (0) 'MS-DOS'\n-23F320 General Purpose Flag  0808 (2056)\n+2415C4 CENTRAL HEADER #1894  02014B50 (33639248)\n+2415C8 Created Zip Spec      14 (20) '2.0'\n+2415C9 Created OS            00 (0) 'MS-DOS'\n+2415CA Extract Zip Spec      14 (20) '2.0'\n+2415CB Extract OS            00 (0) 'MS-DOS'\n+2415CC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F322 Compression Method    0008 (8) 'Deflated'\n-23F324 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F328 CRC                   4594C88A (1167378570)\n-23F32C Compressed Size       000003FB (1019)\n-23F330 Uncompressed Size     00000BC7 (3015)\n-23F334 Filename Length       0041 (65)\n-23F336 Extra Length          0000 (0)\n-23F338 Comment Length        0000 (0)\n-23F33A Disk Start            0000 (0)\n-23F33C Int File Attributes   0000 (0)\n+2415CE Compression Method    0008 (8) 'Deflated'\n+2415D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2415D4 CRC                   00000000 (0)\n+2415D8 Compressed Size       00000002 (2)\n+2415DC Uncompressed Size     00000000 (0)\n+2415E0 Filename Length       001F (31)\n+2415E2 Extra Length          0000 (0)\n+2415E4 Comment Length        0000 (0)\n+2415E6 Disk Start            0000 (0)\n+2415E8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F33E Ext File Attributes   00000000 (0)\n-23F342 Local Header Offset   001FBDD3 (2080211)\n-23F346 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2415EA Ext File Attributes   00000000 (0)\n+2415EE Local Header Offset   002014BA (2102458)\n+2415F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F346: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2415F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F387 CENTRAL HEADER #1895  02014B50 (33639248)\n-23F38B Created Zip Spec      14 (20) '2.0'\n-23F38C Created OS            00 (0) 'MS-DOS'\n-23F38D Extract Zip Spec      14 (20) '2.0'\n-23F38E Extract OS            00 (0) 'MS-DOS'\n-23F38F General Purpose Flag  0808 (2056)\n+241611 CENTRAL HEADER #1895  02014B50 (33639248)\n+241615 Created Zip Spec      14 (20) '2.0'\n+241616 Created OS            00 (0) 'MS-DOS'\n+241617 Extract Zip Spec      14 (20) '2.0'\n+241618 Extract OS            00 (0) 'MS-DOS'\n+241619 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F391 Compression Method    0008 (8) 'Deflated'\n-23F393 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F397 CRC                   06EFE96C (116386156)\n-23F39B Compressed Size       0000064A (1610)\n-23F39F Uncompressed Size     000014BB (5307)\n-23F3A3 Filename Length       003E (62)\n-23F3A5 Extra Length          0000 (0)\n-23F3A7 Comment Length        0000 (0)\n-23F3A9 Disk Start            0000 (0)\n-23F3AB Int File Attributes   0000 (0)\n+24161B Compression Method    0008 (8) 'Deflated'\n+24161D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241621 CRC                   25BB24C3 (633021635)\n+241625 Compressed Size       00000375 (885)\n+241629 Uncompressed Size     000009A2 (2466)\n+24162D Filename Length       004D (77)\n+24162F Extra Length          0000 (0)\n+241631 Comment Length        0000 (0)\n+241633 Disk Start            0000 (0)\n+241635 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F3AD Ext File Attributes   00000000 (0)\n-23F3B1 Local Header Offset   001FC23D (2081341)\n-23F3B5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241637 Ext File Attributes   00000000 (0)\n+24163B Local Header Offset   00201509 (2102537)\n+24163F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F3B5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24163F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F3F3 CENTRAL HEADER #1896  02014B50 (33639248)\n-23F3F7 Created Zip Spec      14 (20) '2.0'\n-23F3F8 Created OS            00 (0) 'MS-DOS'\n-23F3F9 Extract Zip Spec      14 (20) '2.0'\n-23F3FA Extract OS            00 (0) 'MS-DOS'\n-23F3FB General Purpose Flag  0808 (2056)\n+24168C CENTRAL HEADER #1896  02014B50 (33639248)\n+241690 Created Zip Spec      14 (20) '2.0'\n+241691 Created OS            00 (0) 'MS-DOS'\n+241692 Extract Zip Spec      14 (20) '2.0'\n+241693 Extract OS            00 (0) 'MS-DOS'\n+241694 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F3FD Compression Method    0008 (8) 'Deflated'\n-23F3FF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F403 CRC                   00000000 (0)\n-23F407 Compressed Size       00000002 (2)\n-23F40B Uncompressed Size     00000000 (0)\n-23F40F Filename Length       002A (42)\n-23F411 Extra Length          0000 (0)\n-23F413 Comment Length        0000 (0)\n-23F415 Disk Start            0000 (0)\n-23F417 Int File Attributes   0000 (0)\n+241696 Compression Method    0008 (8) 'Deflated'\n+241698 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24169C CRC                   9322DFB2 (2468536242)\n+2416A0 Compressed Size       00000C99 (3225)\n+2416A4 Uncompressed Size     00003EDE (16094)\n+2416A8 Filename Length       0047 (71)\n+2416AA Extra Length          0000 (0)\n+2416AC Comment Length        0000 (0)\n+2416AE Disk Start            0000 (0)\n+2416B0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F419 Ext File Attributes   00000000 (0)\n-23F41D Local Header Offset   001FC8F3 (2083059)\n-23F421 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2416B2 Ext File Attributes   00000000 (0)\n+2416B6 Local Header Offset   002018F9 (2103545)\n+2416BA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F421: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2416BA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F44B CENTRAL HEADER #1897  02014B50 (33639248)\n-23F44F Created Zip Spec      14 (20) '2.0'\n-23F450 Created OS            00 (0) 'MS-DOS'\n-23F451 Extract Zip Spec      14 (20) '2.0'\n-23F452 Extract OS            00 (0) 'MS-DOS'\n-23F453 General Purpose Flag  0808 (2056)\n+241701 CENTRAL HEADER #1897  02014B50 (33639248)\n+241705 Created Zip Spec      14 (20) '2.0'\n+241706 Created OS            00 (0) 'MS-DOS'\n+241707 Extract Zip Spec      14 (20) '2.0'\n+241708 Extract OS            00 (0) 'MS-DOS'\n+241709 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F455 Compression Method    0008 (8) 'Deflated'\n-23F457 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F45B CRC                   28793399 (679031705)\n-23F45F Compressed Size       00000506 (1286)\n-23F463 Uncompressed Size     00000DA7 (3495)\n-23F467 Filename Length       0039 (57)\n-23F469 Extra Length          0000 (0)\n-23F46B Comment Length        0000 (0)\n-23F46D Disk Start            0000 (0)\n-23F46F Int File Attributes   0000 (0)\n+24170B Compression Method    0008 (8) 'Deflated'\n+24170D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241711 CRC                   EE2E13F4 (3995997172)\n+241715 Compressed Size       00000405 (1029)\n+241719 Uncompressed Size     00000A07 (2567)\n+24171D Filename Length       0045 (69)\n+24171F Extra Length          0000 (0)\n+241721 Comment Length        0000 (0)\n+241723 Disk Start            0000 (0)\n+241725 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F471 Ext File Attributes   00000000 (0)\n-23F475 Local Header Offset   001FC94D (2083149)\n-23F479 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241727 Ext File Attributes   00000000 (0)\n+24172B Local Header Offset   00202607 (2106887)\n+24172F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F479: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24172F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F4B2 CENTRAL HEADER #1898  02014B50 (33639248)\n-23F4B6 Created Zip Spec      14 (20) '2.0'\n-23F4B7 Created OS            00 (0) 'MS-DOS'\n-23F4B8 Extract Zip Spec      14 (20) '2.0'\n-23F4B9 Extract OS            00 (0) 'MS-DOS'\n-23F4BA General Purpose Flag  0808 (2056)\n+241774 CENTRAL HEADER #1898  02014B50 (33639248)\n+241778 Created Zip Spec      14 (20) '2.0'\n+241779 Created OS            00 (0) 'MS-DOS'\n+24177A Extract Zip Spec      14 (20) '2.0'\n+24177B Extract OS            00 (0) 'MS-DOS'\n+24177C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F4BC Compression Method    0008 (8) 'Deflated'\n-23F4BE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F4C2 CRC                   A3334B6D (2738047853)\n-23F4C6 Compressed Size       00000452 (1106)\n-23F4CA Uncompressed Size     00000CE7 (3303)\n-23F4CE Filename Length       0046 (70)\n-23F4D0 Extra Length          0000 (0)\n-23F4D2 Comment Length        0000 (0)\n-23F4D4 Disk Start            0000 (0)\n-23F4D6 Int File Attributes   0000 (0)\n+24177E Compression Method    0008 (8) 'Deflated'\n+241780 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241784 CRC                   9044A5F3 (2420418035)\n+241788 Compressed Size       000004AB (1195)\n+24178C Uncompressed Size     00000D59 (3417)\n+241790 Filename Length       0046 (70)\n+241792 Extra Length          0000 (0)\n+241794 Comment Length        0000 (0)\n+241796 Disk Start            0000 (0)\n+241798 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F4D8 Ext File Attributes   00000000 (0)\n-23F4DC Local Header Offset   001FCEBA (2084538)\n-23F4E0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24179A Ext File Attributes   00000000 (0)\n+24179E Local Header Offset   00202A7F (2108031)\n+2417A2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F4E0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2417A2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F526 CENTRAL HEADER #1899  02014B50 (33639248)\n-23F52A Created Zip Spec      14 (20) '2.0'\n-23F52B Created OS            00 (0) 'MS-DOS'\n-23F52C Extract Zip Spec      14 (20) '2.0'\n-23F52D Extract OS            00 (0) 'MS-DOS'\n-23F52E General Purpose Flag  0808 (2056)\n+2417E8 CENTRAL HEADER #1899  02014B50 (33639248)\n+2417EC Created Zip Spec      14 (20) '2.0'\n+2417ED Created OS            00 (0) 'MS-DOS'\n+2417EE Extract Zip Spec      14 (20) '2.0'\n+2417EF Extract OS            00 (0) 'MS-DOS'\n+2417F0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F530 Compression Method    0008 (8) 'Deflated'\n-23F532 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F536 CRC                   00000000 (0)\n-23F53A Compressed Size       00000002 (2)\n-23F53E Uncompressed Size     00000000 (0)\n-23F542 Filename Length       0021 (33)\n-23F544 Extra Length          0000 (0)\n-23F546 Comment Length        0000 (0)\n-23F548 Disk Start            0000 (0)\n-23F54A Int File Attributes   0000 (0)\n+2417F2 Compression Method    0008 (8) 'Deflated'\n+2417F4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2417F8 CRC                   15CC2E88 (365702792)\n+2417FC Compressed Size       00000305 (773)\n+241800 Uncompressed Size     000007FE (2046)\n+241804 Filename Length       0046 (70)\n+241806 Extra Length          0000 (0)\n+241808 Comment Length        0000 (0)\n+24180A Disk Start            0000 (0)\n+24180C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F54C Ext File Attributes   00000000 (0)\n-23F550 Local Header Offset   001FD380 (2085760)\n-23F554 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24180E Ext File Attributes   00000000 (0)\n+241812 Local Header Offset   00202F9E (2109342)\n+241816 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F554: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241816: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F575 CENTRAL HEADER #1900  02014B50 (33639248)\n-23F579 Created Zip Spec      14 (20) '2.0'\n-23F57A Created OS            00 (0) 'MS-DOS'\n-23F57B Extract Zip Spec      14 (20) '2.0'\n-23F57C Extract OS            00 (0) 'MS-DOS'\n-23F57D General Purpose Flag  0808 (2056)\n+24185C CENTRAL HEADER #1900  02014B50 (33639248)\n+241860 Created Zip Spec      14 (20) '2.0'\n+241861 Created OS            00 (0) 'MS-DOS'\n+241862 Extract Zip Spec      14 (20) '2.0'\n+241863 Extract OS            00 (0) 'MS-DOS'\n+241864 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F57F Compression Method    0008 (8) 'Deflated'\n-23F581 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F585 CRC                   04A20B3B (77728571)\n-23F589 Compressed Size       000003D3 (979)\n-23F58D Uncompressed Size     00000B66 (2918)\n-23F591 Filename Length       0034 (52)\n-23F593 Extra Length          0000 (0)\n-23F595 Comment Length        0000 (0)\n-23F597 Disk Start            0000 (0)\n-23F599 Int File Attributes   0000 (0)\n+241866 Compression Method    0008 (8) 'Deflated'\n+241868 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24186C CRC                   A00D3EBD (2685222589)\n+241870 Compressed Size       000007B4 (1972)\n+241874 Uncompressed Size     00001C52 (7250)\n+241878 Filename Length       0033 (51)\n+24187A Extra Length          0000 (0)\n+24187C Comment Length        0000 (0)\n+24187E Disk Start            0000 (0)\n+241880 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F59B Ext File Attributes   00000000 (0)\n-23F59F Local Header Offset   001FD3D1 (2085841)\n-23F5A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241882 Ext File Attributes   00000000 (0)\n+241886 Local Header Offset   00203317 (2110231)\n+24188A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F5A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24188A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F5D7 CENTRAL HEADER #1901  02014B50 (33639248)\n-23F5DB Created Zip Spec      14 (20) '2.0'\n-23F5DC Created OS            00 (0) 'MS-DOS'\n-23F5DD Extract Zip Spec      14 (20) '2.0'\n-23F5DE Extract OS            00 (0) 'MS-DOS'\n-23F5DF General Purpose Flag  0808 (2056)\n+2418BD CENTRAL HEADER #1901  02014B50 (33639248)\n+2418C1 Created Zip Spec      14 (20) '2.0'\n+2418C2 Created OS            00 (0) 'MS-DOS'\n+2418C3 Extract Zip Spec      14 (20) '2.0'\n+2418C4 Extract OS            00 (0) 'MS-DOS'\n+2418C5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F5E1 Compression Method    0008 (8) 'Deflated'\n-23F5E3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F5E7 CRC                   60C61EB2 (1623596722)\n-23F5EB Compressed Size       00000253 (595)\n-23F5EF Uncompressed Size     00000460 (1120)\n-23F5F3 Filename Length       003B (59)\n-23F5F5 Extra Length          0000 (0)\n-23F5F7 Comment Length        0000 (0)\n-23F5F9 Disk Start            0000 (0)\n-23F5FB Int File Attributes   0000 (0)\n+2418C7 Compression Method    0008 (8) 'Deflated'\n+2418C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2418CD CRC                   69F2CD2A (1777519914)\n+2418D1 Compressed Size       000004F3 (1267)\n+2418D5 Uncompressed Size     0000129C (4764)\n+2418D9 Filename Length       0039 (57)\n+2418DB Extra Length          0000 (0)\n+2418DD Comment Length        0000 (0)\n+2418DF Disk Start            0000 (0)\n+2418E1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F5FD Ext File Attributes   00000000 (0)\n-23F601 Local Header Offset   001FD806 (2086918)\n-23F605 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2418E3 Ext File Attributes   00000000 (0)\n+2418E7 Local Header Offset   00203B2C (2112300)\n+2418EB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F605: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2418EB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F640 CENTRAL HEADER #1902  02014B50 (33639248)\n-23F644 Created Zip Spec      14 (20) '2.0'\n-23F645 Created OS            00 (0) 'MS-DOS'\n-23F646 Extract Zip Spec      14 (20) '2.0'\n-23F647 Extract OS            00 (0) 'MS-DOS'\n-23F648 General Purpose Flag  0808 (2056)\n+241924 CENTRAL HEADER #1902  02014B50 (33639248)\n+241928 Created Zip Spec      14 (20) '2.0'\n+241929 Created OS            00 (0) 'MS-DOS'\n+24192A Extract Zip Spec      14 (20) '2.0'\n+24192B Extract OS            00 (0) 'MS-DOS'\n+24192C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F64A Compression Method    0008 (8) 'Deflated'\n-23F64C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F650 CRC                   5AB1BA26 (1521596966)\n-23F654 Compressed Size       00000507 (1287)\n-23F658 Uncompressed Size     00000E0A (3594)\n-23F65C Filename Length       003C (60)\n-23F65E Extra Length          0000 (0)\n-23F660 Comment Length        0000 (0)\n-23F662 Disk Start            0000 (0)\n-23F664 Int File Attributes   0000 (0)\n+24192E Compression Method    0008 (8) 'Deflated'\n+241930 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241934 CRC                   3A871853 (981932115)\n+241938 Compressed Size       000006B8 (1720)\n+24193C Uncompressed Size     000018D5 (6357)\n+241940 Filename Length       0036 (54)\n+241942 Extra Length          0000 (0)\n+241944 Comment Length        0000 (0)\n+241946 Disk Start            0000 (0)\n+241948 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F666 Ext File Attributes   00000000 (0)\n-23F66A Local Header Offset   001FDAC2 (2087618)\n-23F66E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24194A Ext File Attributes   00000000 (0)\n+24194E Local Header Offset   00204086 (2113670)\n+241952 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F66E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241952: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F6AA CENTRAL HEADER #1903  02014B50 (33639248)\n-23F6AE Created Zip Spec      14 (20) '2.0'\n-23F6AF Created OS            00 (0) 'MS-DOS'\n-23F6B0 Extract Zip Spec      14 (20) '2.0'\n-23F6B1 Extract OS            00 (0) 'MS-DOS'\n-23F6B2 General Purpose Flag  0808 (2056)\n+241988 CENTRAL HEADER #1903  02014B50 (33639248)\n+24198C Created Zip Spec      14 (20) '2.0'\n+24198D Created OS            00 (0) 'MS-DOS'\n+24198E Extract Zip Spec      14 (20) '2.0'\n+24198F Extract OS            00 (0) 'MS-DOS'\n+241990 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F6B4 Compression Method    0008 (8) 'Deflated'\n-23F6B6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F6BA CRC                   00000000 (0)\n-23F6BE Compressed Size       00000002 (2)\n-23F6C2 Uncompressed Size     00000000 (0)\n-23F6C6 Filename Length       002C (44)\n-23F6C8 Extra Length          0000 (0)\n-23F6CA Comment Length        0000 (0)\n-23F6CC Disk Start            0000 (0)\n-23F6CE Int File Attributes   0000 (0)\n+241992 Compression Method    0008 (8) 'Deflated'\n+241994 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241998 CRC                   7BC9467A (2076788346)\n+24199C Compressed Size       00000473 (1139)\n+2419A0 Uncompressed Size     00000CE6 (3302)\n+2419A4 Filename Length       0037 (55)\n+2419A6 Extra Length          0000 (0)\n+2419A8 Comment Length        0000 (0)\n+2419AA Disk Start            0000 (0)\n+2419AC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F6D0 Ext File Attributes   00000000 (0)\n-23F6D4 Local Header Offset   001FE033 (2089011)\n-23F6D8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2419AE Ext File Attributes   00000000 (0)\n+2419B2 Local Header Offset   002047A2 (2115490)\n+2419B6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F6D8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2419B6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F704 CENTRAL HEADER #1904  02014B50 (33639248)\n-23F708 Created Zip Spec      14 (20) '2.0'\n-23F709 Created OS            00 (0) 'MS-DOS'\n-23F70A Extract Zip Spec      14 (20) '2.0'\n-23F70B Extract OS            00 (0) 'MS-DOS'\n-23F70C General Purpose Flag  0808 (2056)\n+2419ED CENTRAL HEADER #1904  02014B50 (33639248)\n+2419F1 Created Zip Spec      14 (20) '2.0'\n+2419F2 Created OS            00 (0) 'MS-DOS'\n+2419F3 Extract Zip Spec      14 (20) '2.0'\n+2419F4 Extract OS            00 (0) 'MS-DOS'\n+2419F5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F70E Compression Method    0008 (8) 'Deflated'\n-23F710 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F714 CRC                   ED364E79 (3979759225)\n-23F718 Compressed Size       0000038B (907)\n-23F71C Uncompressed Size     000008DD (2269)\n-23F720 Filename Length       0052 (82)\n-23F722 Extra Length          0000 (0)\n-23F724 Comment Length        0000 (0)\n-23F726 Disk Start            0000 (0)\n-23F728 Int File Attributes   0000 (0)\n+2419F7 Compression Method    0008 (8) 'Deflated'\n+2419F9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2419FD CRC                   8442F5C1 (2218980801)\n+241A01 Compressed Size       0000028D (653)\n+241A05 Uncompressed Size     000004E8 (1256)\n+241A09 Filename Length       003D (61)\n+241A0B Extra Length          0000 (0)\n+241A0D Comment Length        0000 (0)\n+241A0F Disk Start            0000 (0)\n+241A11 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F72A Ext File Attributes   00000000 (0)\n-23F72E Local Header Offset   001FE08F (2089103)\n-23F732 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241A13 Ext File Attributes   00000000 (0)\n+241A17 Local Header Offset   00204C7A (2116730)\n+241A1B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F732: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241A1B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F784 CENTRAL HEADER #1905  02014B50 (33639248)\n-23F788 Created Zip Spec      14 (20) '2.0'\n-23F789 Created OS            00 (0) 'MS-DOS'\n-23F78A Extract Zip Spec      14 (20) '2.0'\n-23F78B Extract OS            00 (0) 'MS-DOS'\n-23F78C General Purpose Flag  0808 (2056)\n+241A58 CENTRAL HEADER #1905  02014B50 (33639248)\n+241A5C Created Zip Spec      14 (20) '2.0'\n+241A5D Created OS            00 (0) 'MS-DOS'\n+241A5E Extract Zip Spec      14 (20) '2.0'\n+241A5F Extract OS            00 (0) 'MS-DOS'\n+241A60 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F78E Compression Method    0008 (8) 'Deflated'\n-23F790 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F794 CRC                   07379C13 (121084947)\n-23F798 Compressed Size       00000228 (552)\n-23F79C Uncompressed Size     000003D4 (980)\n-23F7A0 Filename Length       0047 (71)\n-23F7A2 Extra Length          0000 (0)\n-23F7A4 Comment Length        0000 (0)\n-23F7A6 Disk Start            0000 (0)\n-23F7A8 Int File Attributes   0000 (0)\n+241A62 Compression Method    0008 (8) 'Deflated'\n+241A64 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241A68 CRC                   1B483D0F (457719055)\n+241A6C Compressed Size       000002C0 (704)\n+241A70 Uncompressed Size     00000667 (1639)\n+241A74 Filename Length       003F (63)\n+241A76 Extra Length          0000 (0)\n+241A78 Comment Length        0000 (0)\n+241A7A Disk Start            0000 (0)\n+241A7C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F7AA Ext File Attributes   00000000 (0)\n-23F7AE Local Header Offset   001FE49A (2090138)\n-23F7B2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241A7E Ext File Attributes   00000000 (0)\n+241A82 Local Header Offset   00204F72 (2117490)\n+241A86 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F7B2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241A86: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F7F9 CENTRAL HEADER #1906  02014B50 (33639248)\n-23F7FD Created Zip Spec      14 (20) '2.0'\n-23F7FE Created OS            00 (0) 'MS-DOS'\n-23F7FF Extract Zip Spec      14 (20) '2.0'\n-23F800 Extract OS            00 (0) 'MS-DOS'\n-23F801 General Purpose Flag  0808 (2056)\n+241AC5 CENTRAL HEADER #1906  02014B50 (33639248)\n+241AC9 Created Zip Spec      14 (20) '2.0'\n+241ACA Created OS            00 (0) 'MS-DOS'\n+241ACB Extract Zip Spec      14 (20) '2.0'\n+241ACC Extract OS            00 (0) 'MS-DOS'\n+241ACD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F803 Compression Method    0008 (8) 'Deflated'\n-23F805 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F809 CRC                   AA1837AB (2853713835)\n-23F80D Compressed Size       00000440 (1088)\n-23F811 Uncompressed Size     00000C62 (3170)\n-23F815 Filename Length       004E (78)\n-23F817 Extra Length          0000 (0)\n-23F819 Comment Length        0000 (0)\n-23F81B Disk Start            0000 (0)\n-23F81D Int File Attributes   0000 (0)\n+241ACF Compression Method    0008 (8) 'Deflated'\n+241AD1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241AD5 CRC                   00000000 (0)\n+241AD9 Compressed Size       00000002 (2)\n+241ADD Uncompressed Size     00000000 (0)\n+241AE1 Filename Length       0025 (37)\n+241AE3 Extra Length          0000 (0)\n+241AE5 Comment Length        0000 (0)\n+241AE7 Disk Start            0000 (0)\n+241AE9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F81F Ext File Attributes   00000000 (0)\n-23F823 Local Header Offset   001FE737 (2090807)\n-23F827 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241AEB Ext File Attributes   00000000 (0)\n+241AEF Local Header Offset   0020529F (2118303)\n+241AF3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F827: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241AF3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F875 CENTRAL HEADER #1907  02014B50 (33639248)\n-23F879 Created Zip Spec      14 (20) '2.0'\n-23F87A Created OS            00 (0) 'MS-DOS'\n-23F87B Extract Zip Spec      14 (20) '2.0'\n-23F87C Extract OS            00 (0) 'MS-DOS'\n-23F87D General Purpose Flag  0808 (2056)\n+241B18 CENTRAL HEADER #1907  02014B50 (33639248)\n+241B1C Created Zip Spec      14 (20) '2.0'\n+241B1D Created OS            00 (0) 'MS-DOS'\n+241B1E Extract Zip Spec      14 (20) '2.0'\n+241B1F Extract OS            00 (0) 'MS-DOS'\n+241B20 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F87F Compression Method    0008 (8) 'Deflated'\n-23F881 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F885 CRC                   C4C68375 (3301344117)\n-23F889 Compressed Size       0000036B (875)\n-23F88D Uncompressed Size     0000081D (2077)\n-23F891 Filename Length       003C (60)\n-23F893 Extra Length          0000 (0)\n-23F895 Comment Length        0000 (0)\n-23F897 Disk Start            0000 (0)\n-23F899 Int File Attributes   0000 (0)\n+241B22 Compression Method    0008 (8) 'Deflated'\n+241B24 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241B28 CRC                   B81EA5D5 (3089016277)\n+241B2C Compressed Size       00000466 (1126)\n+241B30 Uncompressed Size     00000B91 (2961)\n+241B34 Filename Length       0048 (72)\n+241B36 Extra Length          0000 (0)\n+241B38 Comment Length        0000 (0)\n+241B3A Disk Start            0000 (0)\n+241B3C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F89B Ext File Attributes   00000000 (0)\n-23F89F Local Header Offset   001FEBF3 (2092019)\n-23F8A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241B3E Ext File Attributes   00000000 (0)\n+241B42 Local Header Offset   002052F4 (2118388)\n+241B46 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F8A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241B46: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F8DF CENTRAL HEADER #1908  02014B50 (33639248)\n-23F8E3 Created Zip Spec      14 (20) '2.0'\n-23F8E4 Created OS            00 (0) 'MS-DOS'\n-23F8E5 Extract Zip Spec      14 (20) '2.0'\n-23F8E6 Extract OS            00 (0) 'MS-DOS'\n-23F8E7 General Purpose Flag  0808 (2056)\n+241B8E CENTRAL HEADER #1908  02014B50 (33639248)\n+241B92 Created Zip Spec      14 (20) '2.0'\n+241B93 Created OS            00 (0) 'MS-DOS'\n+241B94 Extract Zip Spec      14 (20) '2.0'\n+241B95 Extract OS            00 (0) 'MS-DOS'\n+241B96 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F8E9 Compression Method    0008 (8) 'Deflated'\n-23F8EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F8EF CRC                   F9021EF9 (4177665785)\n-23F8F3 Compressed Size       0000040B (1035)\n-23F8F7 Uncompressed Size     00000C7A (3194)\n-23F8FB Filename Length       0043 (67)\n-23F8FD Extra Length          0000 (0)\n-23F8FF Comment Length        0000 (0)\n-23F901 Disk Start            0000 (0)\n-23F903 Int File Attributes   0000 (0)\n+241B98 Compression Method    0008 (8) 'Deflated'\n+241B9A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241B9E CRC                   EF780E16 (4017622550)\n+241BA2 Compressed Size       000002BD (701)\n+241BA6 Uncompressed Size     00000562 (1378)\n+241BAA Filename Length       0045 (69)\n+241BAC Extra Length          0000 (0)\n+241BAE Comment Length        0000 (0)\n+241BB0 Disk Start            0000 (0)\n+241BB2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F905 Ext File Attributes   00000000 (0)\n-23F909 Local Header Offset   001FEFC8 (2093000)\n-23F90D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241BB4 Ext File Attributes   00000000 (0)\n+241BB8 Local Header Offset   002057D0 (2119632)\n+241BBC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F90D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241BBC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F950 CENTRAL HEADER #1909  02014B50 (33639248)\n-23F954 Created Zip Spec      14 (20) '2.0'\n-23F955 Created OS            00 (0) 'MS-DOS'\n-23F956 Extract Zip Spec      14 (20) '2.0'\n-23F957 Extract OS            00 (0) 'MS-DOS'\n-23F958 General Purpose Flag  0808 (2056)\n+241C01 CENTRAL HEADER #1909  02014B50 (33639248)\n+241C05 Created Zip Spec      14 (20) '2.0'\n+241C06 Created OS            00 (0) 'MS-DOS'\n+241C07 Extract Zip Spec      14 (20) '2.0'\n+241C08 Extract OS            00 (0) 'MS-DOS'\n+241C09 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F95A Compression Method    0008 (8) 'Deflated'\n-23F95C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F960 CRC                   D8F5C90C (3639986444)\n-23F964 Compressed Size       0000042B (1067)\n-23F968 Uncompressed Size     00000C3E (3134)\n-23F96C Filename Length       004A (74)\n-23F96E Extra Length          0000 (0)\n-23F970 Comment Length        0000 (0)\n-23F972 Disk Start            0000 (0)\n-23F974 Int File Attributes   0000 (0)\n+241C0B Compression Method    0008 (8) 'Deflated'\n+241C0D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241C11 CRC                   CC678E8E (3429338766)\n+241C15 Compressed Size       00000391 (913)\n+241C19 Uncompressed Size     000008A3 (2211)\n+241C1D Filename Length       0047 (71)\n+241C1F Extra Length          0000 (0)\n+241C21 Comment Length        0000 (0)\n+241C23 Disk Start            0000 (0)\n+241C25 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F976 Ext File Attributes   00000000 (0)\n-23F97A Local Header Offset   001FF444 (2094148)\n-23F97E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241C27 Ext File Attributes   00000000 (0)\n+241C2B Local Header Offset   00205B00 (2120448)\n+241C2F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F97E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241C2F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23F9C8 CENTRAL HEADER #1910  02014B50 (33639248)\n-23F9CC Created Zip Spec      14 (20) '2.0'\n-23F9CD Created OS            00 (0) 'MS-DOS'\n-23F9CE Extract Zip Spec      14 (20) '2.0'\n-23F9CF Extract OS            00 (0) 'MS-DOS'\n-23F9D0 General Purpose Flag  0808 (2056)\n+241C76 CENTRAL HEADER #1910  02014B50 (33639248)\n+241C7A Created Zip Spec      14 (20) '2.0'\n+241C7B Created OS            00 (0) 'MS-DOS'\n+241C7C Extract Zip Spec      14 (20) '2.0'\n+241C7D Extract OS            00 (0) 'MS-DOS'\n+241C7E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23F9D2 Compression Method    0008 (8) 'Deflated'\n-23F9D4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23F9D8 CRC                   F7E9DD6B (4159298923)\n-23F9DC Compressed Size       0000032F (815)\n-23F9E0 Uncompressed Size     00000871 (2161)\n-23F9E4 Filename Length       004D (77)\n-23F9E6 Extra Length          0000 (0)\n-23F9E8 Comment Length        0000 (0)\n-23F9EA Disk Start            0000 (0)\n-23F9EC Int File Attributes   0000 (0)\n+241C80 Compression Method    0008 (8) 'Deflated'\n+241C82 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241C86 CRC                   5E735CAA (1584618666)\n+241C8A Compressed Size       000004C3 (1219)\n+241C8E Uncompressed Size     00001249 (4681)\n+241C92 Filename Length       004A (74)\n+241C94 Extra Length          0000 (0)\n+241C96 Comment Length        0000 (0)\n+241C98 Disk Start            0000 (0)\n+241C9A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23F9EE Ext File Attributes   00000000 (0)\n-23F9F2 Local Header Offset   001FF8E7 (2095335)\n-23F9F6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241C9C Ext File Attributes   00000000 (0)\n+241CA0 Local Header Offset   00205F06 (2121478)\n+241CA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23F9F6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241CA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23FA43 CENTRAL HEADER #1911  02014B50 (33639248)\n-23FA47 Created Zip Spec      14 (20) '2.0'\n-23FA48 Created OS            00 (0) 'MS-DOS'\n-23FA49 Extract Zip Spec      14 (20) '2.0'\n-23FA4A Extract OS            00 (0) 'MS-DOS'\n-23FA4B General Purpose Flag  0808 (2056)\n+241CEE CENTRAL HEADER #1911  02014B50 (33639248)\n+241CF2 Created Zip Spec      14 (20) '2.0'\n+241CF3 Created OS            00 (0) 'MS-DOS'\n+241CF4 Extract Zip Spec      14 (20) '2.0'\n+241CF5 Extract OS            00 (0) 'MS-DOS'\n+241CF6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23FA4D Compression Method    0008 (8) 'Deflated'\n-23FA4F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23FA53 CRC                   00000000 (0)\n-23FA57 Compressed Size       00000002 (2)\n-23FA5B Uncompressed Size     00000000 (0)\n-23FA5F Filename Length       0029 (41)\n-23FA61 Extra Length          0000 (0)\n-23FA63 Comment Length        0000 (0)\n-23FA65 Disk Start            0000 (0)\n-23FA67 Int File Attributes   0000 (0)\n+241CF8 Compression Method    0008 (8) 'Deflated'\n+241CFA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241CFE CRC                   F08C4805 (4035725317)\n+241D02 Compressed Size       000002C0 (704)\n+241D06 Uncompressed Size     0000056A (1386)\n+241D0A Filename Length       0047 (71)\n+241D0C Extra Length          0000 (0)\n+241D0E Comment Length        0000 (0)\n+241D10 Disk Start            0000 (0)\n+241D12 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23FA69 Ext File Attributes   00000000 (0)\n-23FA6D Local Header Offset   001FFC91 (2096273)\n-23FA71 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241D14 Ext File Attributes   00000000 (0)\n+241D18 Local Header Offset   00206441 (2122817)\n+241D1C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23FA71: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241D1C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23FA9A CENTRAL HEADER #1912  02014B50 (33639248)\n-23FA9E Created Zip Spec      14 (20) '2.0'\n-23FA9F Created OS            00 (0) 'MS-DOS'\n-23FAA0 Extract Zip Spec      14 (20) '2.0'\n-23FAA1 Extract OS            00 (0) 'MS-DOS'\n-23FAA2 General Purpose Flag  0808 (2056)\n+241D63 CENTRAL HEADER #1912  02014B50 (33639248)\n+241D67 Created Zip Spec      14 (20) '2.0'\n+241D68 Created OS            00 (0) 'MS-DOS'\n+241D69 Extract Zip Spec      14 (20) '2.0'\n+241D6A Extract OS            00 (0) 'MS-DOS'\n+241D6B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23FAA4 Compression Method    0008 (8) 'Deflated'\n-23FAA6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23FAAA CRC                   8DD7FA96 (2379741846)\n-23FAAE Compressed Size       000011C6 (4550)\n-23FAB2 Uncompressed Size     00004F7F (20351)\n-23FAB6 Filename Length       0044 (68)\n-23FAB8 Extra Length          0000 (0)\n-23FABA Comment Length        0000 (0)\n-23FABC Disk Start            0000 (0)\n-23FABE Int File Attributes   0000 (0)\n+241D6D Compression Method    0008 (8) 'Deflated'\n+241D6F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241D73 CRC                   EACCF2B1 (3939300017)\n+241D77 Compressed Size       0000030A (778)\n+241D7B Uncompressed Size     00000704 (1796)\n+241D7F Filename Length       004B (75)\n+241D81 Extra Length          0000 (0)\n+241D83 Comment Length        0000 (0)\n+241D85 Disk Start            0000 (0)\n+241D87 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23FAC0 Ext File Attributes   00000000 (0)\n-23FAC4 Local Header Offset   001FFCEA (2096362)\n-23FAC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241D89 Ext File Attributes   00000000 (0)\n+241D8D Local Header Offset   00206776 (2123638)\n+241D91 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23FAC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241D91: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23FB0C CENTRAL HEADER #1913  02014B50 (33639248)\n-23FB10 Created Zip Spec      14 (20) '2.0'\n-23FB11 Created OS            00 (0) 'MS-DOS'\n-23FB12 Extract Zip Spec      14 (20) '2.0'\n-23FB13 Extract OS            00 (0) 'MS-DOS'\n-23FB14 General Purpose Flag  0808 (2056)\n+241DDC CENTRAL HEADER #1913  02014B50 (33639248)\n+241DE0 Created Zip Spec      14 (20) '2.0'\n+241DE1 Created OS            00 (0) 'MS-DOS'\n+241DE2 Extract Zip Spec      14 (20) '2.0'\n+241DE3 Extract OS            00 (0) 'MS-DOS'\n+241DE4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23FB16 Compression Method    0008 (8) 'Deflated'\n-23FB18 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23FB1C CRC                   C31A43AC (3273278380)\n-23FB20 Compressed Size       00000427 (1063)\n-23FB24 Uncompressed Size     00000A43 (2627)\n-23FB28 Filename Length       004B (75)\n-23FB2A Extra Length          0000 (0)\n-23FB2C Comment Length        0000 (0)\n-23FB2E Disk Start            0000 (0)\n-23FB30 Int File Attributes   0000 (0)\n+241DE6 Compression Method    0008 (8) 'Deflated'\n+241DE8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241DEC CRC                   69ADD8AE (1773000878)\n+241DF0 Compressed Size       000002C0 (704)\n+241DF4 Uncompressed Size     00000566 (1382)\n+241DF8 Filename Length       0046 (70)\n+241DFA Extra Length          0000 (0)\n+241DFC Comment Length        0000 (0)\n+241DFE Disk Start            0000 (0)\n+241E00 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23FB32 Ext File Attributes   00000000 (0)\n-23FB36 Local Header Offset   00200F22 (2101026)\n-23FB3A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241E02 Ext File Attributes   00000000 (0)\n+241E06 Local Header Offset   00206AF9 (2124537)\n+241E0A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23FB3A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241E0A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23FB85 CENTRAL HEADER #1914  02014B50 (33639248)\n-23FB89 Created Zip Spec      14 (20) '2.0'\n-23FB8A Created OS            00 (0) 'MS-DOS'\n-23FB8B Extract Zip Spec      14 (20) '2.0'\n-23FB8C Extract OS            00 (0) 'MS-DOS'\n-23FB8D General Purpose Flag  0808 (2056)\n+241E50 CENTRAL HEADER #1914  02014B50 (33639248)\n+241E54 Created Zip Spec      14 (20) '2.0'\n+241E55 Created OS            00 (0) 'MS-DOS'\n+241E56 Extract Zip Spec      14 (20) '2.0'\n+241E57 Extract OS            00 (0) 'MS-DOS'\n+241E58 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23FB8F Compression Method    0008 (8) 'Deflated'\n-23FB91 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23FB95 CRC                   4CCC6F49 (1288466249)\n-23FB99 Compressed Size       0000028B (651)\n-23FB9D Uncompressed Size     00000506 (1286)\n-23FBA1 Filename Length       0037 (55)\n-23FBA3 Extra Length          0000 (0)\n-23FBA5 Comment Length        0000 (0)\n-23FBA7 Disk Start            0000 (0)\n-23FBA9 Int File Attributes   0000 (0)\n+241E5A Compression Method    0008 (8) 'Deflated'\n+241E5C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241E60 CRC                   00000000 (0)\n+241E64 Compressed Size       00000002 (2)\n+241E68 Uncompressed Size     00000000 (0)\n+241E6C Filename Length       0029 (41)\n+241E6E Extra Length          0000 (0)\n+241E70 Comment Length        0000 (0)\n+241E72 Disk Start            0000 (0)\n+241E74 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23FBAB Ext File Attributes   00000000 (0)\n-23FBAF Local Header Offset   002013C2 (2102210)\n-23FBB3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241E76 Ext File Attributes   00000000 (0)\n+241E7A Local Header Offset   00206E2D (2125357)\n+241E7E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23FBB3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241E7E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23FBEA CENTRAL HEADER #1915  02014B50 (33639248)\n-23FBEE Created Zip Spec      14 (20) '2.0'\n-23FBEF Created OS            00 (0) 'MS-DOS'\n-23FBF0 Extract Zip Spec      14 (20) '2.0'\n-23FBF1 Extract OS            00 (0) 'MS-DOS'\n-23FBF2 General Purpose Flag  0808 (2056)\n+241EA7 CENTRAL HEADER #1915  02014B50 (33639248)\n+241EAB Created Zip Spec      14 (20) '2.0'\n+241EAC Created OS            00 (0) 'MS-DOS'\n+241EAD Extract Zip Spec      14 (20) '2.0'\n+241EAE Extract OS            00 (0) 'MS-DOS'\n+241EAF General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23FBF4 Compression Method    0008 (8) 'Deflated'\n-23FBF6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23FBFA CRC                   00000000 (0)\n-23FBFE Compressed Size       00000002 (2)\n-23FC02 Uncompressed Size     00000000 (0)\n-23FC06 Filename Length       001F (31)\n-23FC08 Extra Length          0000 (0)\n-23FC0A Comment Length        0000 (0)\n-23FC0C Disk Start            0000 (0)\n-23FC0E Int File Attributes   0000 (0)\n+241EB1 Compression Method    0008 (8) 'Deflated'\n+241EB3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241EB7 CRC                   2470BA0F (611367439)\n+241EBB Compressed Size       00000408 (1032)\n+241EBF Uncompressed Size     00000B77 (2935)\n+241EC3 Filename Length       0059 (89)\n+241EC5 Extra Length          0000 (0)\n+241EC7 Comment Length        0000 (0)\n+241EC9 Disk Start            0000 (0)\n+241ECB Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23FC10 Ext File Attributes   00000000 (0)\n-23FC14 Local Header Offset   002016B2 (2102962)\n-23FC18 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241ECD Ext File Attributes   00000000 (0)\n+241ED1 Local Header Offset   00206E86 (2125446)\n+241ED5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23FC18: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241ED5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23FC37 CENTRAL HEADER #1916  02014B50 (33639248)\n-23FC3B Created Zip Spec      14 (20) '2.0'\n-23FC3C Created OS            00 (0) 'MS-DOS'\n-23FC3D Extract Zip Spec      14 (20) '2.0'\n-23FC3E Extract OS            00 (0) 'MS-DOS'\n-23FC3F General Purpose Flag  0808 (2056)\n+241F2E CENTRAL HEADER #1916  02014B50 (33639248)\n+241F32 Created Zip Spec      14 (20) '2.0'\n+241F33 Created OS            00 (0) 'MS-DOS'\n+241F34 Extract Zip Spec      14 (20) '2.0'\n+241F35 Extract OS            00 (0) 'MS-DOS'\n+241F36 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23FC41 Compression Method    0008 (8) 'Deflated'\n-23FC43 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23FC47 CRC                   B342E8EC (3007506668)\n-23FC4B Compressed Size       0000036C (876)\n-23FC4F Uncompressed Size     0000096F (2415)\n-23FC53 Filename Length       004D (77)\n-23FC55 Extra Length          0000 (0)\n-23FC57 Comment Length        0000 (0)\n-23FC59 Disk Start            0000 (0)\n-23FC5B Int File Attributes   0000 (0)\n+241F38 Compression Method    0008 (8) 'Deflated'\n+241F3A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241F3E CRC                   F02EA49E (4029588638)\n+241F42 Compressed Size       00000347 (839)\n+241F46 Uncompressed Size     00000730 (1840)\n+241F4A Filename Length       004D (77)\n+241F4C Extra Length          0000 (0)\n+241F4E Comment Length        0000 (0)\n+241F50 Disk Start            0000 (0)\n+241F52 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23FC5D Ext File Attributes   00000000 (0)\n-23FC61 Local Header Offset   00201701 (2103041)\n-23FC65 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241F54 Ext File Attributes   00000000 (0)\n+241F58 Local Header Offset   00207315 (2126613)\n+241F5C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23FC65: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241F5C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23FCB2 CENTRAL HEADER #1917  02014B50 (33639248)\n-23FCB6 Created Zip Spec      14 (20) '2.0'\n-23FCB7 Created OS            00 (0) 'MS-DOS'\n-23FCB8 Extract Zip Spec      14 (20) '2.0'\n-23FCB9 Extract OS            00 (0) 'MS-DOS'\n-23FCBA General Purpose Flag  0808 (2056)\n+241FA9 CENTRAL HEADER #1917  02014B50 (33639248)\n+241FAD Created Zip Spec      14 (20) '2.0'\n+241FAE Created OS            00 (0) 'MS-DOS'\n+241FAF Extract Zip Spec      14 (20) '2.0'\n+241FB0 Extract OS            00 (0) 'MS-DOS'\n+241FB1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23FCBC Compression Method    0008 (8) 'Deflated'\n-23FCBE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23FCC2 CRC                   CAD52129 (3402965289)\n-23FCC6 Compressed Size       00000C83 (3203)\n-23FCCA Uncompressed Size     00003D87 (15751)\n-23FCCE Filename Length       0047 (71)\n-23FCD0 Extra Length          0000 (0)\n-23FCD2 Comment Length        0000 (0)\n-23FCD4 Disk Start            0000 (0)\n-23FCD6 Int File Attributes   0000 (0)\n+241FB3 Compression Method    0008 (8) 'Deflated'\n+241FB5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+241FB9 CRC                   91BA4E47 (2444906055)\n+241FBD Compressed Size       00000346 (838)\n+241FC1 Uncompressed Size     0000072B (1835)\n+241FC5 Filename Length       004C (76)\n+241FC7 Extra Length          0000 (0)\n+241FC9 Comment Length        0000 (0)\n+241FCB Disk Start            0000 (0)\n+241FCD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23FCD8 Ext File Attributes   00000000 (0)\n-23FCDC Local Header Offset   00201AE8 (2104040)\n-23FCE0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+241FCF Ext File Attributes   00000000 (0)\n+241FD3 Local Header Offset   002076D7 (2127575)\n+241FD7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23FCE0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x241FD7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23FD27 CENTRAL HEADER #1918  02014B50 (33639248)\n-23FD2B Created Zip Spec      14 (20) '2.0'\n-23FD2C Created OS            00 (0) 'MS-DOS'\n-23FD2D Extract Zip Spec      14 (20) '2.0'\n-23FD2E Extract OS            00 (0) 'MS-DOS'\n-23FD2F General Purpose Flag  0808 (2056)\n+242023 CENTRAL HEADER #1918  02014B50 (33639248)\n+242027 Created Zip Spec      14 (20) '2.0'\n+242028 Created OS            00 (0) 'MS-DOS'\n+242029 Extract Zip Spec      14 (20) '2.0'\n+24202A Extract OS            00 (0) 'MS-DOS'\n+24202B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23FD31 Compression Method    0008 (8) 'Deflated'\n-23FD33 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23FD37 CRC                   47F26503 (1207067907)\n-23FD3B Compressed Size       000003FA (1018)\n-23FD3F Uncompressed Size     000009C5 (2501)\n-23FD43 Filename Length       0045 (69)\n-23FD45 Extra Length          0000 (0)\n-23FD47 Comment Length        0000 (0)\n-23FD49 Disk Start            0000 (0)\n-23FD4B Int File Attributes   0000 (0)\n+24202D Compression Method    0008 (8) 'Deflated'\n+24202F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242033 CRC                   594A4504 (1498039556)\n+242037 Compressed Size       00000705 (1797)\n+24203B Uncompressed Size     000018FD (6397)\n+24203F Filename Length       0052 (82)\n+242041 Extra Length          0000 (0)\n+242043 Comment Length        0000 (0)\n+242045 Disk Start            0000 (0)\n+242047 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23FD4D Ext File Attributes   00000000 (0)\n-23FD51 Local Header Offset   002027E0 (2107360)\n-23FD55 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242049 Ext File Attributes   00000000 (0)\n+24204D Local Header Offset   00207A97 (2128535)\n+242051 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23FD55: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242051: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23FD9A CENTRAL HEADER #1919  02014B50 (33639248)\n-23FD9E Created Zip Spec      14 (20) '2.0'\n-23FD9F Created OS            00 (0) 'MS-DOS'\n-23FDA0 Extract Zip Spec      14 (20) '2.0'\n-23FDA1 Extract OS            00 (0) 'MS-DOS'\n-23FDA2 General Purpose Flag  0808 (2056)\n+2420A3 CENTRAL HEADER #1919  02014B50 (33639248)\n+2420A7 Created Zip Spec      14 (20) '2.0'\n+2420A8 Created OS            00 (0) 'MS-DOS'\n+2420A9 Extract Zip Spec      14 (20) '2.0'\n+2420AA Extract OS            00 (0) 'MS-DOS'\n+2420AB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23FDA4 Compression Method    0008 (8) 'Deflated'\n-23FDA6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23FDAA CRC                   19F0D91C (435214620)\n-23FDAE Compressed Size       000004A1 (1185)\n-23FDB2 Uncompressed Size     00000D07 (3335)\n-23FDB6 Filename Length       0046 (70)\n-23FDB8 Extra Length          0000 (0)\n-23FDBA Comment Length        0000 (0)\n-23FDBC Disk Start            0000 (0)\n-23FDBE Int File Attributes   0000 (0)\n+2420AD Compression Method    0008 (8) 'Deflated'\n+2420AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2420B3 CRC                   00000000 (0)\n+2420B7 Compressed Size       00000002 (2)\n+2420BB Uncompressed Size     00000000 (0)\n+2420BF Filename Length       0020 (32)\n+2420C1 Extra Length          0000 (0)\n+2420C3 Comment Length        0000 (0)\n+2420C5 Disk Start            0000 (0)\n+2420C7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23FDC0 Ext File Attributes   00000000 (0)\n-23FDC4 Local Header Offset   00202C4D (2108493)\n-23FDC8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2420C9 Ext File Attributes   00000000 (0)\n+2420CD Local Header Offset   0020821C (2130460)\n+2420D1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23FDC8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2420D1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23FE0E CENTRAL HEADER #1920  02014B50 (33639248)\n-23FE12 Created Zip Spec      14 (20) '2.0'\n-23FE13 Created OS            00 (0) 'MS-DOS'\n-23FE14 Extract Zip Spec      14 (20) '2.0'\n-23FE15 Extract OS            00 (0) 'MS-DOS'\n-23FE16 General Purpose Flag  0808 (2056)\n+2420F1 CENTRAL HEADER #1920  02014B50 (33639248)\n+2420F5 Created Zip Spec      14 (20) '2.0'\n+2420F6 Created OS            00 (0) 'MS-DOS'\n+2420F7 Extract Zip Spec      14 (20) '2.0'\n+2420F8 Extract OS            00 (0) 'MS-DOS'\n+2420F9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23FE18 Compression Method    0008 (8) 'Deflated'\n-23FE1A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23FE1E CRC                   7E8AFFB4 (2123038644)\n-23FE22 Compressed Size       000002FC (764)\n-23FE26 Uncompressed Size     000007C3 (1987)\n-23FE2A Filename Length       0046 (70)\n-23FE2C Extra Length          0000 (0)\n-23FE2E Comment Length        0000 (0)\n-23FE30 Disk Start            0000 (0)\n-23FE32 Int File Attributes   0000 (0)\n+2420FB Compression Method    0008 (8) 'Deflated'\n+2420FD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242101 CRC                   FF3DB830 (4282234928)\n+242105 Compressed Size       0000058E (1422)\n+242109 Uncompressed Size     000010CE (4302)\n+24210D Filename Length       004C (76)\n+24210F Extra Length          0000 (0)\n+242111 Comment Length        0000 (0)\n+242113 Disk Start            0000 (0)\n+242115 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23FE34 Ext File Attributes   00000000 (0)\n-23FE38 Local Header Offset   00203162 (2109794)\n-23FE3C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242117 Ext File Attributes   00000000 (0)\n+24211B Local Header Offset   0020826C (2130540)\n+24211F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23FE3C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24211F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23FE82 CENTRAL HEADER #1921  02014B50 (33639248)\n-23FE86 Created Zip Spec      14 (20) '2.0'\n-23FE87 Created OS            00 (0) 'MS-DOS'\n-23FE88 Extract Zip Spec      14 (20) '2.0'\n-23FE89 Extract OS            00 (0) 'MS-DOS'\n-23FE8A General Purpose Flag  0808 (2056)\n+24216B CENTRAL HEADER #1921  02014B50 (33639248)\n+24216F Created Zip Spec      14 (20) '2.0'\n+242170 Created OS            00 (0) 'MS-DOS'\n+242171 Extract Zip Spec      14 (20) '2.0'\n+242172 Extract OS            00 (0) 'MS-DOS'\n+242173 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23FE8C Compression Method    0008 (8) 'Deflated'\n-23FE8E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23FE92 CRC                   BE623F70 (3194109808)\n-23FE96 Compressed Size       000007A0 (1952)\n-23FE9A Uncompressed Size     00001B70 (7024)\n-23FE9E Filename Length       0033 (51)\n-23FEA0 Extra Length          0000 (0)\n-23FEA2 Comment Length        0000 (0)\n-23FEA4 Disk Start            0000 (0)\n-23FEA6 Int File Attributes   0000 (0)\n+242175 Compression Method    0008 (8) 'Deflated'\n+242177 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24217B CRC                   ACE74F1F (2900840223)\n+24217F Compressed Size       00000035 (53)\n+242183 Uncompressed Size     0000003D (61)\n+242187 Filename Length       0046 (70)\n+242189 Extra Length          0000 (0)\n+24218B Comment Length        0000 (0)\n+24218D Disk Start            0000 (0)\n+24218F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23FEA8 Ext File Attributes   00000000 (0)\n-23FEAC Local Header Offset   002034D2 (2110674)\n-23FEB0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242191 Ext File Attributes   00000000 (0)\n+242195 Local Header Offset   00208874 (2132084)\n+242199 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23FEB0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242199: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23FEE3 CENTRAL HEADER #1922  02014B50 (33639248)\n-23FEE7 Created Zip Spec      14 (20) '2.0'\n-23FEE8 Created OS            00 (0) 'MS-DOS'\n-23FEE9 Extract Zip Spec      14 (20) '2.0'\n-23FEEA Extract OS            00 (0) 'MS-DOS'\n-23FEEB General Purpose Flag  0808 (2056)\n+2421DF CENTRAL HEADER #1922  02014B50 (33639248)\n+2421E3 Created Zip Spec      14 (20) '2.0'\n+2421E4 Created OS            00 (0) 'MS-DOS'\n+2421E5 Extract Zip Spec      14 (20) '2.0'\n+2421E6 Extract OS            00 (0) 'MS-DOS'\n+2421E7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23FEED Compression Method    0008 (8) 'Deflated'\n-23FEEF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23FEF3 CRC                   C31D4A4B (3273476683)\n-23FEF7 Compressed Size       000004E7 (1255)\n-23FEFB Uncompressed Size     0000120B (4619)\n-23FEFF Filename Length       0039 (57)\n-23FF01 Extra Length          0000 (0)\n-23FF03 Comment Length        0000 (0)\n-23FF05 Disk Start            0000 (0)\n-23FF07 Int File Attributes   0000 (0)\n+2421E9 Compression Method    0008 (8) 'Deflated'\n+2421EB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2421EF CRC                   00000000 (0)\n+2421F3 Compressed Size       00000002 (2)\n+2421F7 Uncompressed Size     00000000 (0)\n+2421FB Filename Length       0033 (51)\n+2421FD Extra Length          0000 (0)\n+2421FF Comment Length        0000 (0)\n+242201 Disk Start            0000 (0)\n+242203 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23FF09 Ext File Attributes   00000000 (0)\n-23FF0D Local Header Offset   00203CD3 (2112723)\n-23FF11 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242205 Ext File Attributes   00000000 (0)\n+242209 Local Header Offset   0020891D (2132253)\n+24220D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23FF11: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24220D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23FF4A CENTRAL HEADER #1923  02014B50 (33639248)\n-23FF4E Created Zip Spec      14 (20) '2.0'\n-23FF4F Created OS            00 (0) 'MS-DOS'\n-23FF50 Extract Zip Spec      14 (20) '2.0'\n-23FF51 Extract OS            00 (0) 'MS-DOS'\n-23FF52 General Purpose Flag  0808 (2056)\n+242240 CENTRAL HEADER #1923  02014B50 (33639248)\n+242244 Created Zip Spec      14 (20) '2.0'\n+242245 Created OS            00 (0) 'MS-DOS'\n+242246 Extract Zip Spec      14 (20) '2.0'\n+242247 Extract OS            00 (0) 'MS-DOS'\n+242248 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23FF54 Compression Method    0008 (8) 'Deflated'\n-23FF56 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23FF5A CRC                   B4E1FAB5 (3034708661)\n-23FF5E Compressed Size       000006A7 (1703)\n-23FF62 Uncompressed Size     0000180E (6158)\n-23FF66 Filename Length       0036 (54)\n-23FF68 Extra Length          0000 (0)\n-23FF6A Comment Length        0000 (0)\n-23FF6C Disk Start            0000 (0)\n-23FF6E Int File Attributes   0000 (0)\n+24224A Compression Method    0008 (8) 'Deflated'\n+24224C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242250 CRC                   4FF02D0F (1341140239)\n+242254 Compressed Size       000003C8 (968)\n+242258 Uncompressed Size     00000BA1 (2977)\n+24225C Filename Length       003A (58)\n+24225E Extra Length          0000 (0)\n+242260 Comment Length        0000 (0)\n+242262 Disk Start            0000 (0)\n+242264 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23FF70 Ext File Attributes   00000000 (0)\n-23FF74 Local Header Offset   00204221 (2114081)\n-23FF78 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242266 Ext File Attributes   00000000 (0)\n+24226A Local Header Offset   00208980 (2132352)\n+24226E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23FF78: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24226E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-23FFAE CENTRAL HEADER #1924  02014B50 (33639248)\n-23FFB2 Created Zip Spec      14 (20) '2.0'\n-23FFB3 Created OS            00 (0) 'MS-DOS'\n-23FFB4 Extract Zip Spec      14 (20) '2.0'\n-23FFB5 Extract OS            00 (0) 'MS-DOS'\n-23FFB6 General Purpose Flag  0808 (2056)\n+2422A8 CENTRAL HEADER #1924  02014B50 (33639248)\n+2422AC Created Zip Spec      14 (20) '2.0'\n+2422AD Created OS            00 (0) 'MS-DOS'\n+2422AE Extract Zip Spec      14 (20) '2.0'\n+2422AF Extract OS            00 (0) 'MS-DOS'\n+2422B0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-23FFB8 Compression Method    0008 (8) 'Deflated'\n-23FFBA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23FFBE CRC                   5668569D (1449678493)\n-23FFC2 Compressed Size       00000468 (1128)\n-23FFC6 Uncompressed Size     00000C7B (3195)\n-23FFCA Filename Length       0037 (55)\n-23FFCC Extra Length          0000 (0)\n-23FFCE Comment Length        0000 (0)\n-23FFD0 Disk Start            0000 (0)\n-23FFD2 Int File Attributes   0000 (0)\n+2422B2 Compression Method    0008 (8) 'Deflated'\n+2422B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2422B8 CRC                   EC609363 (3965752163)\n+2422BC Compressed Size       00000047 (71)\n+2422C0 Uncompressed Size     00000049 (73)\n+2422C4 Filename Length       0041 (65)\n+2422C6 Extra Length          0000 (0)\n+2422C8 Comment Length        0000 (0)\n+2422CA Disk Start            0000 (0)\n+2422CC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-23FFD4 Ext File Attributes   00000000 (0)\n-23FFD8 Local Header Offset   0020492C (2115884)\n-23FFDC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2422CE Ext File Attributes   00000000 (0)\n+2422D2 Local Header Offset   00208DB0 (2133424)\n+2422D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23FFDC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2422D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240013 CENTRAL HEADER #1925  02014B50 (33639248)\n-240017 Created Zip Spec      14 (20) '2.0'\n-240018 Created OS            00 (0) 'MS-DOS'\n-240019 Extract Zip Spec      14 (20) '2.0'\n-24001A Extract OS            00 (0) 'MS-DOS'\n-24001B General Purpose Flag  0808 (2056)\n+242317 CENTRAL HEADER #1925  02014B50 (33639248)\n+24231B Created Zip Spec      14 (20) '2.0'\n+24231C Created OS            00 (0) 'MS-DOS'\n+24231D Extract Zip Spec      14 (20) '2.0'\n+24231E Extract OS            00 (0) 'MS-DOS'\n+24231F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-24001D Compression Method    0008 (8) 'Deflated'\n-24001F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240023 CRC                   EA525DAF (3931266479)\n-240027 Compressed Size       00000284 (644)\n-24002B Uncompressed Size     000004C1 (1217)\n-24002F Filename Length       003D (61)\n-240031 Extra Length          0000 (0)\n-240033 Comment Length        0000 (0)\n-240035 Disk Start            0000 (0)\n-240037 Int File Attributes   0000 (0)\n+242321 Compression Method    0008 (8) 'Deflated'\n+242323 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242327 CRC                   00000000 (0)\n+24232B Compressed Size       00000002 (2)\n+24232F Uncompressed Size     00000000 (0)\n+242333 Filename Length       002A (42)\n+242335 Extra Length          0000 (0)\n+242337 Comment Length        0000 (0)\n+242339 Disk Start            0000 (0)\n+24233B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240039 Ext File Attributes   00000000 (0)\n-24003D Local Header Offset   00204DF9 (2117113)\n-240041 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24233D Ext File Attributes   00000000 (0)\n+242341 Local Header Offset   00208E66 (2133606)\n+242345 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240041: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242345: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-24007E CENTRAL HEADER #1926  02014B50 (33639248)\n-240082 Created Zip Spec      14 (20) '2.0'\n-240083 Created OS            00 (0) 'MS-DOS'\n-240084 Extract Zip Spec      14 (20) '2.0'\n-240085 Extract OS            00 (0) 'MS-DOS'\n-240086 General Purpose Flag  0808 (2056)\n+24236F CENTRAL HEADER #1926  02014B50 (33639248)\n+242373 Created Zip Spec      14 (20) '2.0'\n+242374 Created OS            00 (0) 'MS-DOS'\n+242375 Extract Zip Spec      14 (20) '2.0'\n+242376 Extract OS            00 (0) 'MS-DOS'\n+242377 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240088 Compression Method    0008 (8) 'Deflated'\n-24008A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-24008E CRC                   6E98A8DB (1855498459)\n-240092 Compressed Size       000002B8 (696)\n-240096 Uncompressed Size     0000063C (1596)\n-24009A Filename Length       003F (63)\n-24009C Extra Length          0000 (0)\n-24009E Comment Length        0000 (0)\n-2400A0 Disk Start            0000 (0)\n-2400A2 Int File Attributes   0000 (0)\n+242379 Compression Method    0008 (8) 'Deflated'\n+24237B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24237F CRC                   4C9B97DB (1285265371)\n+242383 Compressed Size       000007B4 (1972)\n+242387 Uncompressed Size     00001DB7 (7607)\n+24238B Filename Length       0046 (70)\n+24238D Extra Length          0000 (0)\n+24238F Comment Length        0000 (0)\n+242391 Disk Start            0000 (0)\n+242393 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2400A4 Ext File Attributes   00000000 (0)\n-2400A8 Local Header Offset   002050E8 (2117864)\n-2400AC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242395 Ext File Attributes   00000000 (0)\n+242399 Local Header Offset   00208EC0 (2133696)\n+24239D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2400AC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24239D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2400EB CENTRAL HEADER #1927  02014B50 (33639248)\n-2400EF Created Zip Spec      14 (20) '2.0'\n-2400F0 Created OS            00 (0) 'MS-DOS'\n-2400F1 Extract Zip Spec      14 (20) '2.0'\n-2400F2 Extract OS            00 (0) 'MS-DOS'\n-2400F3 General Purpose Flag  0808 (2056)\n+2423E3 CENTRAL HEADER #1927  02014B50 (33639248)\n+2423E7 Created Zip Spec      14 (20) '2.0'\n+2423E8 Created OS            00 (0) 'MS-DOS'\n+2423E9 Extract Zip Spec      14 (20) '2.0'\n+2423EA Extract OS            00 (0) 'MS-DOS'\n+2423EB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2400F5 Compression Method    0008 (8) 'Deflated'\n-2400F7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2400FB CRC                   00000000 (0)\n-2400FF Compressed Size       00000002 (2)\n-240103 Uncompressed Size     00000000 (0)\n-240107 Filename Length       0025 (37)\n-240109 Extra Length          0000 (0)\n-24010B Comment Length        0000 (0)\n-24010D Disk Start            0000 (0)\n-24010F Int File Attributes   0000 (0)\n+2423ED Compression Method    0008 (8) 'Deflated'\n+2423EF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2423F3 CRC                   17A4831B (396657435)\n+2423F7 Compressed Size       000002B9 (697)\n+2423FB Uncompressed Size     0000064B (1611)\n+2423FF Filename Length       004D (77)\n+242401 Extra Length          0000 (0)\n+242403 Comment Length        0000 (0)\n+242405 Disk Start            0000 (0)\n+242407 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240111 Ext File Attributes   00000000 (0)\n-240115 Local Header Offset   0020540D (2118669)\n-240119 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242409 Ext File Attributes   00000000 (0)\n+24240D Local Header Offset   002096E8 (2135784)\n+242411 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240119: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242411: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-24013E CENTRAL HEADER #1928  02014B50 (33639248)\n-240142 Created Zip Spec      14 (20) '2.0'\n-240143 Created OS            00 (0) 'MS-DOS'\n-240144 Extract Zip Spec      14 (20) '2.0'\n-240145 Extract OS            00 (0) 'MS-DOS'\n-240146 General Purpose Flag  0808 (2056)\n+24245E CENTRAL HEADER #1928  02014B50 (33639248)\n+242462 Created Zip Spec      14 (20) '2.0'\n+242463 Created OS            00 (0) 'MS-DOS'\n+242464 Extract Zip Spec      14 (20) '2.0'\n+242465 Extract OS            00 (0) 'MS-DOS'\n+242466 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240148 Compression Method    0008 (8) 'Deflated'\n-24014A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-24014E CRC                   96165FE8 (2518048744)\n-240152 Compressed Size       00000459 (1113)\n-240156 Uncompressed Size     00000B47 (2887)\n-24015A Filename Length       0048 (72)\n-24015C Extra Length          0000 (0)\n-24015E Comment Length        0000 (0)\n-240160 Disk Start            0000 (0)\n-240162 Int File Attributes   0000 (0)\n+242468 Compression Method    0008 (8) 'Deflated'\n+24246A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24246E CRC                   00000000 (0)\n+242472 Compressed Size       00000002 (2)\n+242476 Uncompressed Size     00000000 (0)\n+24247A Filename Length       0040 (64)\n+24247C Extra Length          0000 (0)\n+24247E Comment Length        0000 (0)\n+242480 Disk Start            0000 (0)\n+242482 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240164 Ext File Attributes   00000000 (0)\n-240168 Local Header Offset   00205462 (2118754)\n-24016C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242484 Ext File Attributes   00000000 (0)\n+242488 Local Header Offset   00209A1C (2136604)\n+24248C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x24016C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24248C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2401B4 CENTRAL HEADER #1929  02014B50 (33639248)\n-2401B8 Created Zip Spec      14 (20) '2.0'\n-2401B9 Created OS            00 (0) 'MS-DOS'\n-2401BA Extract Zip Spec      14 (20) '2.0'\n-2401BB Extract OS            00 (0) 'MS-DOS'\n-2401BC General Purpose Flag  0808 (2056)\n+2424CC CENTRAL HEADER #1929  02014B50 (33639248)\n+2424D0 Created Zip Spec      14 (20) '2.0'\n+2424D1 Created OS            00 (0) 'MS-DOS'\n+2424D2 Extract Zip Spec      14 (20) '2.0'\n+2424D3 Extract OS            00 (0) 'MS-DOS'\n+2424D4 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2401BE Compression Method    0008 (8) 'Deflated'\n-2401C0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2401C4 CRC                   BB15446F (3138733167)\n-2401C8 Compressed Size       000002B3 (691)\n-2401CC Uncompressed Size     00000540 (1344)\n-2401D0 Filename Length       0045 (69)\n-2401D2 Extra Length          0000 (0)\n-2401D4 Comment Length        0000 (0)\n-2401D6 Disk Start            0000 (0)\n-2401D8 Int File Attributes   0000 (0)\n+2424D6 Compression Method    0008 (8) 'Deflated'\n+2424D8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2424DC CRC                   1213AD1C (303279388)\n+2424E0 Compressed Size       00000347 (839)\n+2424E4 Uncompressed Size     00000836 (2102)\n+2424E8 Filename Length       0047 (71)\n+2424EA Extra Length          0000 (0)\n+2424EC Comment Length        0000 (0)\n+2424EE Disk Start            0000 (0)\n+2424F0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2401DA Ext File Attributes   00000000 (0)\n-2401DE Local Header Offset   00205931 (2119985)\n-2401E2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2424F2 Ext File Attributes   00000000 (0)\n+2424F6 Local Header Offset   00209A8C (2136716)\n+2424FA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2401E2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2424FA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240227 CENTRAL HEADER #1930  02014B50 (33639248)\n-24022B Created Zip Spec      14 (20) '2.0'\n-24022C Created OS            00 (0) 'MS-DOS'\n-24022D Extract Zip Spec      14 (20) '2.0'\n-24022E Extract OS            00 (0) 'MS-DOS'\n-24022F General Purpose Flag  0808 (2056)\n+242541 CENTRAL HEADER #1930  02014B50 (33639248)\n+242545 Created Zip Spec      14 (20) '2.0'\n+242546 Created OS            00 (0) 'MS-DOS'\n+242547 Extract Zip Spec      14 (20) '2.0'\n+242548 Extract OS            00 (0) 'MS-DOS'\n+242549 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240231 Compression Method    0008 (8) 'Deflated'\n-240233 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240237 CRC                   C656CCE4 (3327577316)\n-24023B Compressed Size       00000388 (904)\n-24023F Uncompressed Size     00000872 (2162)\n-240243 Filename Length       0047 (71)\n-240245 Extra Length          0000 (0)\n-240247 Comment Length        0000 (0)\n-240249 Disk Start            0000 (0)\n-24024B Int File Attributes   0000 (0)\n+24254B Compression Method    0008 (8) 'Deflated'\n+24254D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242551 CRC                   15F7279D (368519069)\n+242555 Compressed Size       00000050 (80)\n+242559 Uncompressed Size     00000056 (86)\n+24255D Filename Length       004E (78)\n+24255F Extra Length          0000 (0)\n+242561 Comment Length        0000 (0)\n+242563 Disk Start            0000 (0)\n+242565 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-24024D Ext File Attributes   00000000 (0)\n-240251 Local Header Offset   00205C57 (2120791)\n-240255 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242567 Ext File Attributes   00000000 (0)\n+24256B Local Header Offset   00209E48 (2137672)\n+24256F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240255: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24256F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-24029C CENTRAL HEADER #1931  02014B50 (33639248)\n-2402A0 Created Zip Spec      14 (20) '2.0'\n-2402A1 Created OS            00 (0) 'MS-DOS'\n-2402A2 Extract Zip Spec      14 (20) '2.0'\n-2402A3 Extract OS            00 (0) 'MS-DOS'\n-2402A4 General Purpose Flag  0808 (2056)\n+2425BD CENTRAL HEADER #1931  02014B50 (33639248)\n+2425C1 Created Zip Spec      14 (20) '2.0'\n+2425C2 Created OS            00 (0) 'MS-DOS'\n+2425C3 Extract Zip Spec      14 (20) '2.0'\n+2425C4 Extract OS            00 (0) 'MS-DOS'\n+2425C5 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2402A6 Compression Method    0008 (8) 'Deflated'\n-2402A8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2402AC CRC                   6100366B (1627403883)\n-2402B0 Compressed Size       000004BA (1210)\n-2402B4 Uncompressed Size     000011E6 (4582)\n-2402B8 Filename Length       004A (74)\n-2402BA Extra Length          0000 (0)\n-2402BC Comment Length        0000 (0)\n-2402BE Disk Start            0000 (0)\n-2402C0 Int File Attributes   0000 (0)\n+2425C7 Compression Method    0008 (8) 'Deflated'\n+2425C9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2425CD CRC                   00000000 (0)\n+2425D1 Compressed Size       00000002 (2)\n+2425D5 Uncompressed Size     00000000 (0)\n+2425D9 Filename Length       0026 (38)\n+2425DB Extra Length          0000 (0)\n+2425DD Comment Length        0000 (0)\n+2425DF Disk Start            0000 (0)\n+2425E1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2402C2 Ext File Attributes   00000000 (0)\n-2402C6 Local Header Offset   00206054 (2121812)\n-2402CA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2425E3 Ext File Attributes   00000000 (0)\n+2425E7 Local Header Offset   00209F14 (2137876)\n+2425EB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2402CA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2425EB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240314 CENTRAL HEADER #1932  02014B50 (33639248)\n-240318 Created Zip Spec      14 (20) '2.0'\n-240319 Created OS            00 (0) 'MS-DOS'\n-24031A Extract Zip Spec      14 (20) '2.0'\n-24031B Extract OS            00 (0) 'MS-DOS'\n-24031C General Purpose Flag  0808 (2056)\n+242611 CENTRAL HEADER #1932  02014B50 (33639248)\n+242615 Created Zip Spec      14 (20) '2.0'\n+242616 Created OS            00 (0) 'MS-DOS'\n+242617 Extract Zip Spec      14 (20) '2.0'\n+242618 Extract OS            00 (0) 'MS-DOS'\n+242619 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-24031E Compression Method    0008 (8) 'Deflated'\n-240320 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240324 CRC                   8939A522 (2302256418)\n-240328 Compressed Size       000002B6 (694)\n-24032C Uncompressed Size     00000548 (1352)\n-240330 Filename Length       0047 (71)\n-240332 Extra Length          0000 (0)\n-240334 Comment Length        0000 (0)\n-240336 Disk Start            0000 (0)\n-240338 Int File Attributes   0000 (0)\n+24261B Compression Method    0008 (8) 'Deflated'\n+24261D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242621 CRC                   7E3D8E6C (2117963372)\n+242625 Compressed Size       0000079C (1948)\n+242629 Uncompressed Size     0000253B (9531)\n+24262D Filename Length       003E (62)\n+24262F Extra Length          0000 (0)\n+242631 Comment Length        0000 (0)\n+242633 Disk Start            0000 (0)\n+242635 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-24033A Ext File Attributes   00000000 (0)\n-24033E Local Header Offset   00206586 (2123142)\n-240342 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242637 Ext File Attributes   00000000 (0)\n+24263B Local Header Offset   00209F6A (2137962)\n+24263F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240342: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24263F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240389 CENTRAL HEADER #1933  02014B50 (33639248)\n-24038D Created Zip Spec      14 (20) '2.0'\n-24038E Created OS            00 (0) 'MS-DOS'\n-24038F Extract Zip Spec      14 (20) '2.0'\n-240390 Extract OS            00 (0) 'MS-DOS'\n-240391 General Purpose Flag  0808 (2056)\n+24267D CENTRAL HEADER #1933  02014B50 (33639248)\n+242681 Created Zip Spec      14 (20) '2.0'\n+242682 Created OS            00 (0) 'MS-DOS'\n+242683 Extract Zip Spec      14 (20) '2.0'\n+242684 Extract OS            00 (0) 'MS-DOS'\n+242685 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240393 Compression Method    0008 (8) 'Deflated'\n-240395 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240399 CRC                   2244431E (574898974)\n-24039D Compressed Size       00000301 (769)\n-2403A1 Uncompressed Size     000006DE (1758)\n-2403A5 Filename Length       004B (75)\n-2403A7 Extra Length          0000 (0)\n-2403A9 Comment Length        0000 (0)\n-2403AB Disk Start            0000 (0)\n-2403AD Int File Attributes   0000 (0)\n+242687 Compression Method    0008 (8) 'Deflated'\n+242689 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24268D CRC                   70A19A06 (1889638918)\n+242691 Compressed Size       00000274 (628)\n+242695 Uncompressed Size     00000517 (1303)\n+242699 Filename Length       0045 (69)\n+24269B Extra Length          0000 (0)\n+24269D Comment Length        0000 (0)\n+24269F Disk Start            0000 (0)\n+2426A1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2403AF Ext File Attributes   00000000 (0)\n-2403B3 Local Header Offset   002068B1 (2123953)\n-2403B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2426A3 Ext File Attributes   00000000 (0)\n+2426A7 Local Header Offset   0020A772 (2140018)\n+2426AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2403B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2426AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240402 CENTRAL HEADER #1934  02014B50 (33639248)\n-240406 Created Zip Spec      14 (20) '2.0'\n-240407 Created OS            00 (0) 'MS-DOS'\n-240408 Extract Zip Spec      14 (20) '2.0'\n-240409 Extract OS            00 (0) 'MS-DOS'\n-24040A General Purpose Flag  0808 (2056)\n+2426F0 CENTRAL HEADER #1934  02014B50 (33639248)\n+2426F4 Created Zip Spec      14 (20) '2.0'\n+2426F5 Created OS            00 (0) 'MS-DOS'\n+2426F6 Extract Zip Spec      14 (20) '2.0'\n+2426F7 Extract OS            00 (0) 'MS-DOS'\n+2426F8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-24040C Compression Method    0008 (8) 'Deflated'\n-24040E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240412 CRC                   6B0A1F36 (1795825462)\n-240416 Compressed Size       000002B6 (694)\n-24041A Uncompressed Size     00000544 (1348)\n-24041E Filename Length       0046 (70)\n-240420 Extra Length          0000 (0)\n-240422 Comment Length        0000 (0)\n-240424 Disk Start            0000 (0)\n-240426 Int File Attributes   0000 (0)\n+2426FA Compression Method    0008 (8) 'Deflated'\n+2426FC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242700 CRC                   00000000 (0)\n+242704 Compressed Size       00000002 (2)\n+242708 Uncompressed Size     00000000 (0)\n+24270C Filename Length       003C (60)\n+24270E Extra Length          0000 (0)\n+242710 Comment Length        0000 (0)\n+242712 Disk Start            0000 (0)\n+242714 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240428 Ext File Attributes   00000000 (0)\n-24042C Local Header Offset   00206C2B (2124843)\n-240430 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242716 Ext File Attributes   00000000 (0)\n+24271A Local Header Offset   0020AA59 (2140761)\n+24271E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240430: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24271E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240476 CENTRAL HEADER #1935  02014B50 (33639248)\n-24047A Created Zip Spec      14 (20) '2.0'\n-24047B Created OS            00 (0) 'MS-DOS'\n-24047C Extract Zip Spec      14 (20) '2.0'\n-24047D Extract OS            00 (0) 'MS-DOS'\n-24047E General Purpose Flag  0808 (2056)\n+24275A CENTRAL HEADER #1935  02014B50 (33639248)\n+24275E Created Zip Spec      14 (20) '2.0'\n+24275F Created OS            00 (0) 'MS-DOS'\n+242760 Extract Zip Spec      14 (20) '2.0'\n+242761 Extract OS            00 (0) 'MS-DOS'\n+242762 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240480 Compression Method    0008 (8) 'Deflated'\n-240482 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240486 CRC                   00000000 (0)\n-24048A Compressed Size       00000002 (2)\n-24048E Uncompressed Size     00000000 (0)\n-240492 Filename Length       0029 (41)\n-240494 Extra Length          0000 (0)\n-240496 Comment Length        0000 (0)\n-240498 Disk Start            0000 (0)\n-24049A Int File Attributes   0000 (0)\n+242764 Compression Method    0008 (8) 'Deflated'\n+242766 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24276A CRC                   26D24E82 (651316866)\n+24276E Compressed Size       00000374 (884)\n+242772 Uncompressed Size     00000911 (2321)\n+242776 Filename Length       0043 (67)\n+242778 Extra Length          0000 (0)\n+24277A Comment Length        0000 (0)\n+24277C Disk Start            0000 (0)\n+24277E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-24049C Ext File Attributes   00000000 (0)\n-2404A0 Local Header Offset   00206F55 (2125653)\n-2404A4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242780 Ext File Attributes   00000000 (0)\n+242784 Local Header Offset   0020AAC5 (2140869)\n+242788 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2404A4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242788: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2404CD CENTRAL HEADER #1936  02014B50 (33639248)\n-2404D1 Created Zip Spec      14 (20) '2.0'\n-2404D2 Created OS            00 (0) 'MS-DOS'\n-2404D3 Extract Zip Spec      14 (20) '2.0'\n-2404D4 Extract OS            00 (0) 'MS-DOS'\n-2404D5 General Purpose Flag  0808 (2056)\n+2427CB CENTRAL HEADER #1936  02014B50 (33639248)\n+2427CF Created Zip Spec      14 (20) '2.0'\n+2427D0 Created OS            00 (0) 'MS-DOS'\n+2427D1 Extract Zip Spec      14 (20) '2.0'\n+2427D2 Extract OS            00 (0) 'MS-DOS'\n+2427D3 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2404D7 Compression Method    0008 (8) 'Deflated'\n-2404D9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2404DD CRC                   F6AB8A5C (4138437212)\n-2404E1 Compressed Size       000003FD (1021)\n-2404E5 Uncompressed Size     00000B30 (2864)\n-2404E9 Filename Length       0059 (89)\n-2404EB Extra Length          0000 (0)\n-2404ED Comment Length        0000 (0)\n-2404EF Disk Start            0000 (0)\n-2404F1 Int File Attributes   0000 (0)\n+2427D5 Compression Method    0008 (8) 'Deflated'\n+2427D7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2427DB CRC                   3794C7CD (932497357)\n+2427DF Compressed Size       0000004C (76)\n+2427E3 Uncompressed Size     00000052 (82)\n+2427E7 Filename Length       004A (74)\n+2427E9 Extra Length          0000 (0)\n+2427EB Comment Length        0000 (0)\n+2427ED Disk Start            0000 (0)\n+2427EF Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2404F3 Ext File Attributes   00000000 (0)\n-2404F7 Local Header Offset   00206FAE (2125742)\n-2404FB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2427F1 Ext File Attributes   00000000 (0)\n+2427F5 Local Header Offset   0020AEAA (2141866)\n+2427F9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2404FB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2427F9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240554 CENTRAL HEADER #1937  02014B50 (33639248)\n-240558 Created Zip Spec      14 (20) '2.0'\n-240559 Created OS            00 (0) 'MS-DOS'\n-24055A Extract Zip Spec      14 (20) '2.0'\n-24055B Extract OS            00 (0) 'MS-DOS'\n-24055C General Purpose Flag  0808 (2056)\n+242843 CENTRAL HEADER #1937  02014B50 (33639248)\n+242847 Created Zip Spec      14 (20) '2.0'\n+242848 Created OS            00 (0) 'MS-DOS'\n+242849 Extract Zip Spec      14 (20) '2.0'\n+24284A Extract OS            00 (0) 'MS-DOS'\n+24284B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-24055E Compression Method    0008 (8) 'Deflated'\n-240560 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240564 CRC                   8ECDA075 (2395840629)\n-240568 Compressed Size       00000340 (832)\n-24056C Uncompressed Size     00000705 (1797)\n-240570 Filename Length       004D (77)\n-240572 Extra Length          0000 (0)\n-240574 Comment Length        0000 (0)\n-240576 Disk Start            0000 (0)\n-240578 Int File Attributes   0000 (0)\n+24284D Compression Method    0008 (8) 'Deflated'\n+24284F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242853 CRC                   00000000 (0)\n+242857 Compressed Size       00000002 (2)\n+24285B Uncompressed Size     00000000 (0)\n+24285F Filename Length       0027 (39)\n+242861 Extra Length          0000 (0)\n+242863 Comment Length        0000 (0)\n+242865 Disk Start            0000 (0)\n+242867 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-24057A Ext File Attributes   00000000 (0)\n-24057E Local Header Offset   00207432 (2126898)\n-240582 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242869 Ext File Attributes   00000000 (0)\n+24286D Local Header Offset   0020AF6E (2142062)\n+242871 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240582: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242871: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2405CF CENTRAL HEADER #1938  02014B50 (33639248)\n-2405D3 Created Zip Spec      14 (20) '2.0'\n-2405D4 Created OS            00 (0) 'MS-DOS'\n-2405D5 Extract Zip Spec      14 (20) '2.0'\n-2405D6 Extract OS            00 (0) 'MS-DOS'\n-2405D7 General Purpose Flag  0808 (2056)\n+242898 CENTRAL HEADER #1938  02014B50 (33639248)\n+24289C Created Zip Spec      14 (20) '2.0'\n+24289D Created OS            00 (0) 'MS-DOS'\n+24289E Extract Zip Spec      14 (20) '2.0'\n+24289F Extract OS            00 (0) 'MS-DOS'\n+2428A0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2405D9 Compression Method    0008 (8) 'Deflated'\n-2405DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2405DF CRC                   C535197D (3308591485)\n-2405E3 Compressed Size       0000033E (830)\n-2405E7 Uncompressed Size     00000700 (1792)\n-2405EB Filename Length       004C (76)\n-2405ED Extra Length          0000 (0)\n-2405EF Comment Length        0000 (0)\n-2405F1 Disk Start            0000 (0)\n-2405F3 Int File Attributes   0000 (0)\n+2428A2 Compression Method    0008 (8) 'Deflated'\n+2428A4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2428A8 CRC                   18469088 (407277704)\n+2428AC Compressed Size       000005DF (1503)\n+2428B0 Uncompressed Size     00001573 (5491)\n+2428B4 Filename Length       0040 (64)\n+2428B6 Extra Length          0000 (0)\n+2428B8 Comment Length        0000 (0)\n+2428BA Disk Start            0000 (0)\n+2428BC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2405F5 Ext File Attributes   00000000 (0)\n-2405F9 Local Header Offset   002077ED (2127853)\n-2405FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2428BE Ext File Attributes   00000000 (0)\n+2428C2 Local Header Offset   0020AFC5 (2142149)\n+2428C6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2405FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2428C6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240649 CENTRAL HEADER #1939  02014B50 (33639248)\n-24064D Created Zip Spec      14 (20) '2.0'\n-24064E Created OS            00 (0) 'MS-DOS'\n-24064F Extract Zip Spec      14 (20) '2.0'\n-240650 Extract OS            00 (0) 'MS-DOS'\n-240651 General Purpose Flag  0808 (2056)\n+242906 CENTRAL HEADER #1939  02014B50 (33639248)\n+24290A Created Zip Spec      14 (20) '2.0'\n+24290B Created OS            00 (0) 'MS-DOS'\n+24290C Extract Zip Spec      14 (20) '2.0'\n+24290D Extract OS            00 (0) 'MS-DOS'\n+24290E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240653 Compression Method    0008 (8) 'Deflated'\n-240655 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240659 CRC                   A895CAB3 (2828389043)\n-24065D Compressed Size       000006F8 (1784)\n-240661 Uncompressed Size     00001870 (6256)\n-240665 Filename Length       0052 (82)\n-240667 Extra Length          0000 (0)\n-240669 Comment Length        0000 (0)\n-24066B Disk Start            0000 (0)\n-24066D Int File Attributes   0000 (0)\n+242910 Compression Method    0008 (8) 'Deflated'\n+242912 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242916 CRC                   E09F9D87 (3768556935)\n+24291A Compressed Size       00000282 (642)\n+24291E Uncompressed Size     00000525 (1317)\n+242922 Filename Length       0047 (71)\n+242924 Extra Length          0000 (0)\n+242926 Comment Length        0000 (0)\n+242928 Disk Start            0000 (0)\n+24292A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-24066F Ext File Attributes   00000000 (0)\n-240673 Local Header Offset   00207BA5 (2128805)\n-240677 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24292C Ext File Attributes   00000000 (0)\n+242930 Local Header Offset   0020B612 (2143762)\n+242934 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240677: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242934: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2406C9 CENTRAL HEADER #1940  02014B50 (33639248)\n-2406CD Created Zip Spec      14 (20) '2.0'\n-2406CE Created OS            00 (0) 'MS-DOS'\n-2406CF Extract Zip Spec      14 (20) '2.0'\n-2406D0 Extract OS            00 (0) 'MS-DOS'\n-2406D1 General Purpose Flag  0808 (2056)\n+24297B CENTRAL HEADER #1940  02014B50 (33639248)\n+24297F Created Zip Spec      14 (20) '2.0'\n+242980 Created OS            00 (0) 'MS-DOS'\n+242981 Extract Zip Spec      14 (20) '2.0'\n+242982 Extract OS            00 (0) 'MS-DOS'\n+242983 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2406D3 Compression Method    0008 (8) 'Deflated'\n-2406D5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2406D9 CRC                   00000000 (0)\n-2406DD Compressed Size       00000002 (2)\n-2406E1 Uncompressed Size     00000000 (0)\n-2406E5 Filename Length       0020 (32)\n-2406E7 Extra Length          0000 (0)\n-2406E9 Comment Length        0000 (0)\n-2406EB Disk Start            0000 (0)\n-2406ED Int File Attributes   0000 (0)\n+242985 Compression Method    0008 (8) 'Deflated'\n+242987 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24298B CRC                   00000000 (0)\n+24298F Compressed Size       00000002 (2)\n+242993 Uncompressed Size     00000000 (0)\n+242997 Filename Length       003D (61)\n+242999 Extra Length          0000 (0)\n+24299B Comment Length        0000 (0)\n+24299D Disk Start            0000 (0)\n+24299F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2406EF Ext File Attributes   00000000 (0)\n-2406F3 Local Header Offset   0020831D (2130717)\n-2406F7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2429A1 Ext File Attributes   00000000 (0)\n+2429A5 Local Header Offset   0020B909 (2144521)\n+2429A9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2406F7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2429A9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240717 CENTRAL HEADER #1941  02014B50 (33639248)\n-24071B Created Zip Spec      14 (20) '2.0'\n-24071C Created OS            00 (0) 'MS-DOS'\n-24071D Extract Zip Spec      14 (20) '2.0'\n-24071E Extract OS            00 (0) 'MS-DOS'\n-24071F General Purpose Flag  0808 (2056)\n+2429E6 CENTRAL HEADER #1941  02014B50 (33639248)\n+2429EA Created Zip Spec      14 (20) '2.0'\n+2429EB Created OS            00 (0) 'MS-DOS'\n+2429EC Extract Zip Spec      14 (20) '2.0'\n+2429ED Extract OS            00 (0) 'MS-DOS'\n+2429EE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240721 Compression Method    0008 (8) 'Deflated'\n-240723 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240727 CRC                   C67BB267 (3329995367)\n-24072B Compressed Size       00000584 (1412)\n-24072F Uncompressed Size     0000106A (4202)\n-240733 Filename Length       004C (76)\n-240735 Extra Length          0000 (0)\n-240737 Comment Length        0000 (0)\n-240739 Disk Start            0000 (0)\n-24073B Int File Attributes   0000 (0)\n+2429F0 Compression Method    0008 (8) 'Deflated'\n+2429F2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2429F6 CRC                   BC035C85 (3154336901)\n+2429FA Compressed Size       00000341 (833)\n+2429FE Uncompressed Size     00000830 (2096)\n+242A02 Filename Length       0044 (68)\n+242A04 Extra Length          0000 (0)\n+242A06 Comment Length        0000 (0)\n+242A08 Disk Start            0000 (0)\n+242A0A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-24073D Ext File Attributes   00000000 (0)\n-240741 Local Header Offset   0020836D (2130797)\n-240745 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242A0C Ext File Attributes   00000000 (0)\n+242A10 Local Header Offset   0020B976 (2144630)\n+242A14 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240745: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242A14: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240791 CENTRAL HEADER #1942  02014B50 (33639248)\n-240795 Created Zip Spec      14 (20) '2.0'\n-240796 Created OS            00 (0) 'MS-DOS'\n-240797 Extract Zip Spec      14 (20) '2.0'\n-240798 Extract OS            00 (0) 'MS-DOS'\n-240799 General Purpose Flag  0808 (2056)\n+242A58 CENTRAL HEADER #1942  02014B50 (33639248)\n+242A5C Created Zip Spec      14 (20) '2.0'\n+242A5D Created OS            00 (0) 'MS-DOS'\n+242A5E Extract Zip Spec      14 (20) '2.0'\n+242A5F Extract OS            00 (0) 'MS-DOS'\n+242A60 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-24079B Compression Method    0008 (8) 'Deflated'\n-24079D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2407A1 CRC                   ACE74F1F (2900840223)\n-2407A5 Compressed Size       00000035 (53)\n-2407A9 Uncompressed Size     0000003D (61)\n-2407AD Filename Length       0046 (70)\n-2407AF Extra Length          0000 (0)\n-2407B1 Comment Length        0000 (0)\n-2407B3 Disk Start            0000 (0)\n-2407B5 Int File Attributes   0000 (0)\n+242A62 Compression Method    0008 (8) 'Deflated'\n+242A64 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242A68 CRC                   B0326E74 (2956095092)\n+242A6C Compressed Size       0000004E (78)\n+242A70 Uncompressed Size     00000053 (83)\n+242A74 Filename Length       004B (75)\n+242A76 Extra Length          0000 (0)\n+242A78 Comment Length        0000 (0)\n+242A7A Disk Start            0000 (0)\n+242A7C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2407B7 Ext File Attributes   00000000 (0)\n-2407BB Local Header Offset   0020896B (2132331)\n-2407BF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242A7E Ext File Attributes   00000000 (0)\n+242A82 Local Header Offset   0020BD29 (2145577)\n+242A86 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2407BF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242A86: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240805 CENTRAL HEADER #1943  02014B50 (33639248)\n-240809 Created Zip Spec      14 (20) '2.0'\n-24080A Created OS            00 (0) 'MS-DOS'\n-24080B Extract Zip Spec      14 (20) '2.0'\n-24080C Extract OS            00 (0) 'MS-DOS'\n-24080D General Purpose Flag  0808 (2056)\n+242AD1 CENTRAL HEADER #1943  02014B50 (33639248)\n+242AD5 Created Zip Spec      14 (20) '2.0'\n+242AD6 Created OS            00 (0) 'MS-DOS'\n+242AD7 Extract Zip Spec      14 (20) '2.0'\n+242AD8 Extract OS            00 (0) 'MS-DOS'\n+242AD9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-24080F Compression Method    0008 (8) 'Deflated'\n-240811 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240815 CRC                   00000000 (0)\n-240819 Compressed Size       00000002 (2)\n-24081D Uncompressed Size     00000000 (0)\n-240821 Filename Length       002A (42)\n-240823 Extra Length          0000 (0)\n-240825 Comment Length        0000 (0)\n-240827 Disk Start            0000 (0)\n-240829 Int File Attributes   0000 (0)\n+242ADB Compression Method    0008 (8) 'Deflated'\n+242ADD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242AE1 CRC                   00000000 (0)\n+242AE5 Compressed Size       00000002 (2)\n+242AE9 Uncompressed Size     00000000 (0)\n+242AED Filename Length       0025 (37)\n+242AEF Extra Length          0000 (0)\n+242AF1 Comment Length        0000 (0)\n+242AF3 Disk Start            0000 (0)\n+242AF5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-24082B Ext File Attributes   00000000 (0)\n-24082F Local Header Offset   00208A14 (2132500)\n-240833 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242AF7 Ext File Attributes   00000000 (0)\n+242AFB Local Header Offset   0020BDF0 (2145776)\n+242AFF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240833: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242AFF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-24085D CENTRAL HEADER #1944  02014B50 (33639248)\n-240861 Created Zip Spec      14 (20) '2.0'\n-240862 Created OS            00 (0) 'MS-DOS'\n-240863 Extract Zip Spec      14 (20) '2.0'\n-240864 Extract OS            00 (0) 'MS-DOS'\n-240865 General Purpose Flag  0808 (2056)\n+242B24 CENTRAL HEADER #1944  02014B50 (33639248)\n+242B28 Created Zip Spec      14 (20) '2.0'\n+242B29 Created OS            00 (0) 'MS-DOS'\n+242B2A Extract Zip Spec      14 (20) '2.0'\n+242B2B Extract OS            00 (0) 'MS-DOS'\n+242B2C General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240867 Compression Method    0008 (8) 'Deflated'\n-240869 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-24086D CRC                   C83DC072 (3359490162)\n-240871 Compressed Size       000007A5 (1957)\n-240875 Uncompressed Size     00001CFB (7419)\n-240879 Filename Length       0046 (70)\n-24087B Extra Length          0000 (0)\n-24087D Comment Length        0000 (0)\n-24087F Disk Start            0000 (0)\n-240881 Int File Attributes   0000 (0)\n+242B2E Compression Method    0008 (8) 'Deflated'\n+242B30 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242B34 CRC                   963A2E3A (2520395322)\n+242B38 Compressed Size       000005C0 (1472)\n+242B3C Uncompressed Size     000016EE (5870)\n+242B40 Filename Length       003C (60)\n+242B42 Extra Length          0000 (0)\n+242B44 Comment Length        0000 (0)\n+242B46 Disk Start            0000 (0)\n+242B48 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240883 Ext File Attributes   00000000 (0)\n-240887 Local Header Offset   00208A6E (2132590)\n-24088B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242B4A Ext File Attributes   00000000 (0)\n+242B4E Local Header Offset   0020BE45 (2145861)\n+242B52 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x24088B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242B52: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2408D1 CENTRAL HEADER #1945  02014B50 (33639248)\n-2408D5 Created Zip Spec      14 (20) '2.0'\n-2408D6 Created OS            00 (0) 'MS-DOS'\n-2408D7 Extract Zip Spec      14 (20) '2.0'\n-2408D8 Extract OS            00 (0) 'MS-DOS'\n-2408D9 General Purpose Flag  0808 (2056)\n+242B8E CENTRAL HEADER #1945  02014B50 (33639248)\n+242B92 Created Zip Spec      14 (20) '2.0'\n+242B93 Created OS            00 (0) 'MS-DOS'\n+242B94 Extract Zip Spec      14 (20) '2.0'\n+242B95 Extract OS            00 (0) 'MS-DOS'\n+242B96 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2408DB Compression Method    0008 (8) 'Deflated'\n-2408DD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2408E1 CRC                   30CD3349 (818754377)\n-2408E5 Compressed Size       000002B1 (689)\n-2408E9 Uncompressed Size     00000623 (1571)\n-2408ED Filename Length       004D (77)\n-2408EF Extra Length          0000 (0)\n-2408F1 Comment Length        0000 (0)\n-2408F3 Disk Start            0000 (0)\n-2408F5 Int File Attributes   0000 (0)\n+242B98 Compression Method    0008 (8) 'Deflated'\n+242B9A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242B9E CRC                   1612BDB3 (370326963)\n+242BA2 Compressed Size       00000295 (661)\n+242BA6 Uncompressed Size     00000870 (2160)\n+242BAA Filename Length       0043 (67)\n+242BAC Extra Length          0000 (0)\n+242BAE Comment Length        0000 (0)\n+242BB0 Disk Start            0000 (0)\n+242BB2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2408F7 Ext File Attributes   00000000 (0)\n-2408FB Local Header Offset   00209287 (2134663)\n-2408FF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242BB4 Ext File Attributes   00000000 (0)\n+242BB8 Local Header Offset   0020C46F (2147439)\n+242BBC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2408FF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242BBC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-24094C CENTRAL HEADER #1946  02014B50 (33639248)\n-240950 Created Zip Spec      14 (20) '2.0'\n-240951 Created OS            00 (0) 'MS-DOS'\n-240952 Extract Zip Spec      14 (20) '2.0'\n-240953 Extract OS            00 (0) 'MS-DOS'\n-240954 General Purpose Flag  0808 (2056)\n+242BFF CENTRAL HEADER #1946  02014B50 (33639248)\n+242C03 Created Zip Spec      14 (20) '2.0'\n+242C04 Created OS            00 (0) 'MS-DOS'\n+242C05 Extract Zip Spec      14 (20) '2.0'\n+242C06 Extract OS            00 (0) 'MS-DOS'\n+242C07 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240956 Compression Method    0008 (8) 'Deflated'\n-240958 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-24095C CRC                   00000000 (0)\n-240960 Compressed Size       00000002 (2)\n-240964 Uncompressed Size     00000000 (0)\n-240968 Filename Length       0026 (38)\n-24096A Extra Length          0000 (0)\n-24096C Comment Length        0000 (0)\n-24096E Disk Start            0000 (0)\n-240970 Int File Attributes   0000 (0)\n+242C09 Compression Method    0008 (8) 'Deflated'\n+242C0B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242C0F CRC                   00000000 (0)\n+242C13 Compressed Size       00000002 (2)\n+242C17 Uncompressed Size     00000000 (0)\n+242C1B Filename Length       003B (59)\n+242C1D Extra Length          0000 (0)\n+242C1F Comment Length        0000 (0)\n+242C21 Disk Start            0000 (0)\n+242C23 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240972 Ext File Attributes   00000000 (0)\n-240976 Local Header Offset   002095B3 (2135475)\n-24097A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242C25 Ext File Attributes   00000000 (0)\n+242C29 Local Header Offset   0020C775 (2148213)\n+242C2D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x24097A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242C2D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2409A0 CENTRAL HEADER #1947  02014B50 (33639248)\n-2409A4 Created Zip Spec      14 (20) '2.0'\n-2409A5 Created OS            00 (0) 'MS-DOS'\n-2409A6 Extract Zip Spec      14 (20) '2.0'\n-2409A7 Extract OS            00 (0) 'MS-DOS'\n-2409A8 General Purpose Flag  0808 (2056)\n+242C68 CENTRAL HEADER #1947  02014B50 (33639248)\n+242C6C Created Zip Spec      14 (20) '2.0'\n+242C6D Created OS            00 (0) 'MS-DOS'\n+242C6E Extract Zip Spec      14 (20) '2.0'\n+242C6F Extract OS            00 (0) 'MS-DOS'\n+242C70 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2409AA Compression Method    0008 (8) 'Deflated'\n-2409AC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2409B0 CRC                   AE94BF94 (2928983956)\n-2409B4 Compressed Size       0000078F (1935)\n-2409B8 Uncompressed Size     00002469 (9321)\n-2409BC Filename Length       003E (62)\n-2409BE Extra Length          0000 (0)\n-2409C0 Comment Length        0000 (0)\n-2409C2 Disk Start            0000 (0)\n-2409C4 Int File Attributes   0000 (0)\n+242C72 Compression Method    0008 (8) 'Deflated'\n+242C74 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242C78 CRC                   5928AB14 (1495837460)\n+242C7C Compressed Size       000003C1 (961)\n+242C80 Uncompressed Size     00000A1C (2588)\n+242C84 Filename Length       0042 (66)\n+242C86 Extra Length          0000 (0)\n+242C88 Comment Length        0000 (0)\n+242C8A Disk Start            0000 (0)\n+242C8C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2409C6 Ext File Attributes   00000000 (0)\n-2409CA Local Header Offset   00209609 (2135561)\n-2409CE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242C8E Ext File Attributes   00000000 (0)\n+242C92 Local Header Offset   0020C7E0 (2148320)\n+242C96 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2409CE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242C96: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240A0C CENTRAL HEADER #1948  02014B50 (33639248)\n-240A10 Created Zip Spec      14 (20) '2.0'\n-240A11 Created OS            00 (0) 'MS-DOS'\n-240A12 Extract Zip Spec      14 (20) '2.0'\n-240A13 Extract OS            00 (0) 'MS-DOS'\n-240A14 General Purpose Flag  0808 (2056)\n+242CD8 CENTRAL HEADER #1948  02014B50 (33639248)\n+242CDC Created Zip Spec      14 (20) '2.0'\n+242CDD Created OS            00 (0) 'MS-DOS'\n+242CDE Extract Zip Spec      14 (20) '2.0'\n+242CDF Extract OS            00 (0) 'MS-DOS'\n+242CE0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240A16 Compression Method    0008 (8) 'Deflated'\n-240A18 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240A1C CRC                   FCE39D55 (4242775381)\n-240A20 Compressed Size       0000026B (619)\n-240A24 Uncompressed Size     000004F5 (1269)\n-240A28 Filename Length       0045 (69)\n-240A2A Extra Length          0000 (0)\n-240A2C Comment Length        0000 (0)\n-240A2E Disk Start            0000 (0)\n-240A30 Int File Attributes   0000 (0)\n+242CE2 Compression Method    0008 (8) 'Deflated'\n+242CE4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242CE8 CRC                   4B310E73 (1261506163)\n+242CEC Compressed Size       0000004C (76)\n+242CF0 Uncompressed Size     00000051 (81)\n+242CF4 Filename Length       0049 (73)\n+242CF6 Extra Length          0000 (0)\n+242CF8 Comment Length        0000 (0)\n+242CFA Disk Start            0000 (0)\n+242CFC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240A32 Ext File Attributes   00000000 (0)\n-240A36 Local Header Offset   00209E04 (2137604)\n-240A3A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242CFE Ext File Attributes   00000000 (0)\n+242D02 Local Header Offset   0020CC11 (2149393)\n+242D06 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240A3A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242D06: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240A7F CENTRAL HEADER #1949  02014B50 (33639248)\n-240A83 Created Zip Spec      14 (20) '2.0'\n-240A84 Created OS            00 (0) 'MS-DOS'\n-240A85 Extract Zip Spec      14 (20) '2.0'\n-240A86 Extract OS            00 (0) 'MS-DOS'\n-240A87 General Purpose Flag  0808 (2056)\n+242D4F CENTRAL HEADER #1949  02014B50 (33639248)\n+242D53 Created Zip Spec      14 (20) '2.0'\n+242D54 Created OS            00 (0) 'MS-DOS'\n+242D55 Extract Zip Spec      14 (20) '2.0'\n+242D56 Extract OS            00 (0) 'MS-DOS'\n+242D57 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240A89 Compression Method    0008 (8) 'Deflated'\n-240A8B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240A8F CRC                   00000000 (0)\n-240A93 Compressed Size       00000002 (2)\n-240A97 Uncompressed Size     00000000 (0)\n-240A9B Filename Length       0027 (39)\n-240A9D Extra Length          0000 (0)\n-240A9F Comment Length        0000 (0)\n-240AA1 Disk Start            0000 (0)\n-240AA3 Int File Attributes   0000 (0)\n+242D59 Compression Method    0008 (8) 'Deflated'\n+242D5B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242D5F CRC                   00000000 (0)\n+242D63 Compressed Size       00000002 (2)\n+242D67 Uncompressed Size     00000000 (0)\n+242D6B Filename Length       0026 (38)\n+242D6D Extra Length          0000 (0)\n+242D6F Comment Length        0000 (0)\n+242D71 Disk Start            0000 (0)\n+242D73 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240AA5 Ext File Attributes   00000000 (0)\n-240AA9 Local Header Offset   0020A0E2 (2138338)\n-240AAD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242D75 Ext File Attributes   00000000 (0)\n+242D79 Local Header Offset   0020CCD4 (2149588)\n+242D7D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240AAD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242D7D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240AD4 CENTRAL HEADER #1950  02014B50 (33639248)\n-240AD8 Created Zip Spec      14 (20) '2.0'\n-240AD9 Created OS            00 (0) 'MS-DOS'\n-240ADA Extract Zip Spec      14 (20) '2.0'\n-240ADB Extract OS            00 (0) 'MS-DOS'\n-240ADC General Purpose Flag  0808 (2056)\n+242DA3 CENTRAL HEADER #1950  02014B50 (33639248)\n+242DA7 Created Zip Spec      14 (20) '2.0'\n+242DA8 Created OS            00 (0) 'MS-DOS'\n+242DA9 Extract Zip Spec      14 (20) '2.0'\n+242DAA Extract OS            00 (0) 'MS-DOS'\n+242DAB General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240ADE Compression Method    0008 (8) 'Deflated'\n-240AE0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240AE4 CRC                   BE116E78 (3188813432)\n-240AE8 Compressed Size       000005D4 (1492)\n-240AEC Uncompressed Size     000014EF (5359)\n-240AF0 Filename Length       0040 (64)\n-240AF2 Extra Length          0000 (0)\n-240AF4 Comment Length        0000 (0)\n-240AF6 Disk Start            0000 (0)\n-240AF8 Int File Attributes   0000 (0)\n+242DAD Compression Method    0008 (8) 'Deflated'\n+242DAF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242DB3 CRC                   2BBAD075 (733663349)\n+242DB7 Compressed Size       00000376 (886)\n+242DBB Uncompressed Size     000008DC (2268)\n+242DBF Filename Length       0044 (68)\n+242DC1 Extra Length          0000 (0)\n+242DC3 Comment Length        0000 (0)\n+242DC5 Disk Start            0000 (0)\n+242DC7 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240AFA Ext File Attributes   00000000 (0)\n-240AFE Local Header Offset   0020A139 (2138425)\n-240B02 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242DC9 Ext File Attributes   00000000 (0)\n+242DCD Local Header Offset   0020CD2A (2149674)\n+242DD1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240B02: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242DD1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240B42 CENTRAL HEADER #1951  02014B50 (33639248)\n-240B46 Created Zip Spec      14 (20) '2.0'\n-240B47 Created OS            00 (0) 'MS-DOS'\n-240B48 Extract Zip Spec      14 (20) '2.0'\n-240B49 Extract OS            00 (0) 'MS-DOS'\n-240B4A General Purpose Flag  0808 (2056)\n+242E15 CENTRAL HEADER #1951  02014B50 (33639248)\n+242E19 Created Zip Spec      14 (20) '2.0'\n+242E1A Created OS            00 (0) 'MS-DOS'\n+242E1B Extract Zip Spec      14 (20) '2.0'\n+242E1C Extract OS            00 (0) 'MS-DOS'\n+242E1D General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240B4C Compression Method    0008 (8) 'Deflated'\n-240B4E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240B52 CRC                   0FE45FE3 (266624995)\n-240B56 Compressed Size       0000027A (634)\n-240B5A Uncompressed Size     00000505 (1285)\n-240B5E Filename Length       0047 (71)\n-240B60 Extra Length          0000 (0)\n-240B62 Comment Length        0000 (0)\n-240B64 Disk Start            0000 (0)\n-240B66 Int File Attributes   0000 (0)\n+242E1F Compression Method    0008 (8) 'Deflated'\n+242E21 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242E25 CRC                   7A7368DC (2054383836)\n+242E29 Compressed Size       0000090B (2315)\n+242E2D Uncompressed Size     0000294D (10573)\n+242E31 Filename Length       003E (62)\n+242E33 Extra Length          0000 (0)\n+242E35 Comment Length        0000 (0)\n+242E37 Disk Start            0000 (0)\n+242E39 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240B68 Ext File Attributes   00000000 (0)\n-240B6C Local Header Offset   0020A77B (2140027)\n-240B70 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242E3B Ext File Attributes   00000000 (0)\n+242E3F Local Header Offset   0020D112 (2150674)\n+242E43 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240B70: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242E43: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240BB7 CENTRAL HEADER #1952  02014B50 (33639248)\n-240BBB Created Zip Spec      14 (20) '2.0'\n-240BBC Created OS            00 (0) 'MS-DOS'\n-240BBD Extract Zip Spec      14 (20) '2.0'\n-240BBE Extract OS            00 (0) 'MS-DOS'\n-240BBF General Purpose Flag  0808 (2056)\n+242E81 CENTRAL HEADER #1952  02014B50 (33639248)\n+242E85 Created Zip Spec      14 (20) '2.0'\n+242E86 Created OS            00 (0) 'MS-DOS'\n+242E87 Extract Zip Spec      14 (20) '2.0'\n+242E88 Extract OS            00 (0) 'MS-DOS'\n+242E89 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240BC1 Compression Method    0008 (8) 'Deflated'\n-240BC3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240BC7 CRC                   00000000 (0)\n-240BCB Compressed Size       00000002 (2)\n-240BCF Uncompressed Size     00000000 (0)\n-240BD3 Filename Length       0025 (37)\n-240BD5 Extra Length          0000 (0)\n-240BD7 Comment Length        0000 (0)\n-240BD9 Disk Start            0000 (0)\n-240BDB Int File Attributes   0000 (0)\n+242E8B Compression Method    0008 (8) 'Deflated'\n+242E8D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242E91 CRC                   46F5866F (1190495855)\n+242E95 Compressed Size       00000281 (641)\n+242E99 Uncompressed Size     00000521 (1313)\n+242E9D Filename Length       0045 (69)\n+242E9F Extra Length          0000 (0)\n+242EA1 Comment Length        0000 (0)\n+242EA3 Disk Start            0000 (0)\n+242EA5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240BDD Ext File Attributes   00000000 (0)\n-240BE1 Local Header Offset   0020AA6A (2140778)\n-240BE5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242EA7 Ext File Attributes   00000000 (0)\n+242EAB Local Header Offset   0020DA89 (2153097)\n+242EAF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240BE5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242EAF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240C0A CENTRAL HEADER #1953  02014B50 (33639248)\n-240C0E Created Zip Spec      14 (20) '2.0'\n-240C0F Created OS            00 (0) 'MS-DOS'\n-240C10 Extract Zip Spec      14 (20) '2.0'\n-240C11 Extract OS            00 (0) 'MS-DOS'\n-240C12 General Purpose Flag  0808 (2056)\n+242EF4 CENTRAL HEADER #1953  02014B50 (33639248)\n+242EF8 Created Zip Spec      14 (20) '2.0'\n+242EF9 Created OS            00 (0) 'MS-DOS'\n+242EFA Extract Zip Spec      14 (20) '2.0'\n+242EFB Extract OS            00 (0) 'MS-DOS'\n+242EFC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240C14 Compression Method    0008 (8) 'Deflated'\n-240C16 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240C1A CRC                   00AA2381 (11150209)\n-240C1E Compressed Size       000005B6 (1462)\n-240C22 Uncompressed Size     0000165C (5724)\n-240C26 Filename Length       003C (60)\n-240C28 Extra Length          0000 (0)\n-240C2A Comment Length        0000 (0)\n-240C2C Disk Start            0000 (0)\n-240C2E Int File Attributes   0000 (0)\n+242EFE Compression Method    0008 (8) 'Deflated'\n+242F00 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242F04 CRC                   00000000 (0)\n+242F08 Compressed Size       00000002 (2)\n+242F0C Uncompressed Size     00000000 (0)\n+242F10 Filename Length       003C (60)\n+242F12 Extra Length          0000 (0)\n+242F14 Comment Length        0000 (0)\n+242F16 Disk Start            0000 (0)\n+242F18 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240C30 Ext File Attributes   00000000 (0)\n-240C34 Local Header Offset   0020AABF (2140863)\n-240C38 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242F1A Ext File Attributes   00000000 (0)\n+242F1E Local Header Offset   0020DD7D (2153853)\n+242F22 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240C38: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242F22: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240C74 CENTRAL HEADER #1954  02014B50 (33639248)\n-240C78 Created Zip Spec      14 (20) '2.0'\n-240C79 Created OS            00 (0) 'MS-DOS'\n-240C7A Extract Zip Spec      14 (20) '2.0'\n-240C7B Extract OS            00 (0) 'MS-DOS'\n-240C7C General Purpose Flag  0808 (2056)\n+242F5E CENTRAL HEADER #1954  02014B50 (33639248)\n+242F62 Created Zip Spec      14 (20) '2.0'\n+242F63 Created OS            00 (0) 'MS-DOS'\n+242F64 Extract Zip Spec      14 (20) '2.0'\n+242F65 Extract OS            00 (0) 'MS-DOS'\n+242F66 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240C7E Compression Method    0008 (8) 'Deflated'\n-240C80 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240C84 CRC                   7E524C52 (2119322706)\n-240C88 Compressed Size       0000028D (653)\n-240C8C Uncompressed Size     0000083E (2110)\n-240C90 Filename Length       0043 (67)\n-240C92 Extra Length          0000 (0)\n-240C94 Comment Length        0000 (0)\n-240C96 Disk Start            0000 (0)\n-240C98 Int File Attributes   0000 (0)\n+242F68 Compression Method    0008 (8) 'Deflated'\n+242F6A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242F6E CRC                   19067571 (419853681)\n+242F72 Compressed Size       0000032A (810)\n+242F76 Uncompressed Size     000007B7 (1975)\n+242F7A Filename Length       0043 (67)\n+242F7C Extra Length          0000 (0)\n+242F7E Comment Length        0000 (0)\n+242F80 Disk Start            0000 (0)\n+242F82 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240C9A Ext File Attributes   00000000 (0)\n-240C9E Local Header Offset   0020B0DF (2142431)\n-240CA2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242F84 Ext File Attributes   00000000 (0)\n+242F88 Local Header Offset   0020DDE9 (2153961)\n+242F8C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240CA2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242F8C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240CE5 CENTRAL HEADER #1955  02014B50 (33639248)\n-240CE9 Created Zip Spec      14 (20) '2.0'\n-240CEA Created OS            00 (0) 'MS-DOS'\n-240CEB Extract Zip Spec      14 (20) '2.0'\n-240CEC Extract OS            00 (0) 'MS-DOS'\n-240CED General Purpose Flag  0808 (2056)\n+242FCF CENTRAL HEADER #1955  02014B50 (33639248)\n+242FD3 Created Zip Spec      14 (20) '2.0'\n+242FD4 Created OS            00 (0) 'MS-DOS'\n+242FD5 Extract Zip Spec      14 (20) '2.0'\n+242FD6 Extract OS            00 (0) 'MS-DOS'\n+242FD7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240CEF Compression Method    0008 (8) 'Deflated'\n-240CF1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240CF5 CRC                   00000000 (0)\n-240CF9 Compressed Size       00000002 (2)\n-240CFD Uncompressed Size     00000000 (0)\n-240D01 Filename Length       0026 (38)\n-240D03 Extra Length          0000 (0)\n-240D05 Comment Length        0000 (0)\n-240D07 Disk Start            0000 (0)\n-240D09 Int File Attributes   0000 (0)\n+242FD9 Compression Method    0008 (8) 'Deflated'\n+242FDB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+242FDF CRC                   B6221A00 (3055688192)\n+242FE3 Compressed Size       0000004D (77)\n+242FE7 Uncompressed Size     00000052 (82)\n+242FEB Filename Length       004A (74)\n+242FED Extra Length          0000 (0)\n+242FEF Comment Length        0000 (0)\n+242FF1 Disk Start            0000 (0)\n+242FF3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240D0B Ext File Attributes   00000000 (0)\n-240D0F Local Header Offset   0020B3DD (2143197)\n-240D13 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+242FF5 Ext File Attributes   00000000 (0)\n+242FF9 Local Header Offset   0020E184 (2154884)\n+242FFD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240D13: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x242FFD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240D39 CENTRAL HEADER #1956  02014B50 (33639248)\n-240D3D Created Zip Spec      14 (20) '2.0'\n-240D3E Created OS            00 (0) 'MS-DOS'\n-240D3F Extract Zip Spec      14 (20) '2.0'\n-240D40 Extract OS            00 (0) 'MS-DOS'\n-240D41 General Purpose Flag  0808 (2056)\n+243047 CENTRAL HEADER #1956  02014B50 (33639248)\n+24304B Created Zip Spec      14 (20) '2.0'\n+24304C Created OS            00 (0) 'MS-DOS'\n+24304D Extract Zip Spec      14 (20) '2.0'\n+24304E Extract OS            00 (0) 'MS-DOS'\n+24304F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240D43 Compression Method    0008 (8) 'Deflated'\n-240D45 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240D49 CRC                   F93596DA (4181038810)\n-240D4D Compressed Size       0000036B (875)\n-240D51 Uncompressed Size     000008A5 (2213)\n-240D55 Filename Length       0044 (68)\n-240D57 Extra Length          0000 (0)\n-240D59 Comment Length        0000 (0)\n-240D5B Disk Start            0000 (0)\n-240D5D Int File Attributes   0000 (0)\n+243051 Compression Method    0008 (8) 'Deflated'\n+243053 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243057 CRC                   00000000 (0)\n+24305B Compressed Size       00000002 (2)\n+24305F Uncompressed Size     00000000 (0)\n+243063 Filename Length       0029 (41)\n+243065 Extra Length          0000 (0)\n+243067 Comment Length        0000 (0)\n+243069 Disk Start            0000 (0)\n+24306B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240D5F Ext File Attributes   00000000 (0)\n-240D63 Local Header Offset   0020B433 (2143283)\n-240D67 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24306D Ext File Attributes   00000000 (0)\n+243071 Local Header Offset   0020E249 (2155081)\n+243075 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240D67: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243075: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240DAB CENTRAL HEADER #1957  02014B50 (33639248)\n-240DAF Created Zip Spec      14 (20) '2.0'\n-240DB0 Created OS            00 (0) 'MS-DOS'\n-240DB1 Extract Zip Spec      14 (20) '2.0'\n-240DB2 Extract OS            00 (0) 'MS-DOS'\n-240DB3 General Purpose Flag  0808 (2056)\n+24309E CENTRAL HEADER #1957  02014B50 (33639248)\n+2430A2 Created Zip Spec      14 (20) '2.0'\n+2430A3 Created OS            00 (0) 'MS-DOS'\n+2430A4 Extract Zip Spec      14 (20) '2.0'\n+2430A5 Extract OS            00 (0) 'MS-DOS'\n+2430A6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240DB5 Compression Method    0008 (8) 'Deflated'\n-240DB7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240DBB CRC                   6BCB8A4E (1808501326)\n-240DBF Compressed Size       000008FC (2300)\n-240DC3 Uncompressed Size     00002868 (10344)\n-240DC7 Filename Length       003E (62)\n-240DC9 Extra Length          0000 (0)\n-240DCB Comment Length        0000 (0)\n-240DCD Disk Start            0000 (0)\n-240DCF Int File Attributes   0000 (0)\n+2430A8 Compression Method    0008 (8) 'Deflated'\n+2430AA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2430AE CRC                   C5E6E015 (3320242197)\n+2430B2 Compressed Size       00000307 (775)\n+2430B6 Uncompressed Size     000006C9 (1737)\n+2430BA Filename Length       003F (63)\n+2430BC Extra Length          0000 (0)\n+2430BE Comment Length        0000 (0)\n+2430C0 Disk Start            0000 (0)\n+2430C2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240DD1 Ext File Attributes   00000000 (0)\n-240DD5 Local Header Offset   0020B810 (2144272)\n-240DD9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2430C4 Ext File Attributes   00000000 (0)\n+2430C8 Local Header Offset   0020E2A2 (2155170)\n+2430CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240DD9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2430CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240E17 CENTRAL HEADER #1958  02014B50 (33639248)\n-240E1B Created Zip Spec      14 (20) '2.0'\n-240E1C Created OS            00 (0) 'MS-DOS'\n-240E1D Extract Zip Spec      14 (20) '2.0'\n-240E1E Extract OS            00 (0) 'MS-DOS'\n-240E1F General Purpose Flag  0808 (2056)\n+24310B CENTRAL HEADER #1958  02014B50 (33639248)\n+24310F Created Zip Spec      14 (20) '2.0'\n+243110 Created OS            00 (0) 'MS-DOS'\n+243111 Extract Zip Spec      14 (20) '2.0'\n+243112 Extract OS            00 (0) 'MS-DOS'\n+243113 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240E21 Compression Method    0008 (8) 'Deflated'\n-240E23 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240E27 CRC                   030A303D (50999357)\n-240E2B Compressed Size       00000278 (632)\n-240E2F Uncompressed Size     00000501 (1281)\n-240E33 Filename Length       0045 (69)\n-240E35 Extra Length          0000 (0)\n-240E37 Comment Length        0000 (0)\n-240E39 Disk Start            0000 (0)\n-240E3B Int File Attributes   0000 (0)\n+243115 Compression Method    0008 (8) 'Deflated'\n+243117 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24311B CRC                   95EACAEA (2515192554)\n+24311F Compressed Size       00000E1E (3614)\n+243123 Uncompressed Size     00005E4E (24142)\n+243127 Filename Length       0044 (68)\n+243129 Extra Length          0000 (0)\n+24312B Comment Length        0000 (0)\n+24312D Disk Start            0000 (0)\n+24312F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240E3D Ext File Attributes   00000000 (0)\n-240E41 Local Header Offset   0020C178 (2146680)\n-240E45 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243131 Ext File Attributes   00000000 (0)\n+243135 Local Header Offset   0020E616 (2156054)\n+243139 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240E45: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243139: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240E8A CENTRAL HEADER #1959  02014B50 (33639248)\n-240E8E Created Zip Spec      14 (20) '2.0'\n-240E8F Created OS            00 (0) 'MS-DOS'\n-240E90 Extract Zip Spec      14 (20) '2.0'\n-240E91 Extract OS            00 (0) 'MS-DOS'\n-240E92 General Purpose Flag  0808 (2056)\n+24317D CENTRAL HEADER #1959  02014B50 (33639248)\n+243181 Created Zip Spec      14 (20) '2.0'\n+243182 Created OS            00 (0) 'MS-DOS'\n+243183 Extract Zip Spec      14 (20) '2.0'\n+243184 Extract OS            00 (0) 'MS-DOS'\n+243185 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240E94 Compression Method    0008 (8) 'Deflated'\n-240E96 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240E9A CRC                   00000000 (0)\n-240E9E Compressed Size       00000002 (2)\n-240EA2 Uncompressed Size     00000000 (0)\n-240EA6 Filename Length       0029 (41)\n-240EA8 Extra Length          0000 (0)\n-240EAA Comment Length        0000 (0)\n-240EAC Disk Start            0000 (0)\n-240EAE Int File Attributes   0000 (0)\n+243187 Compression Method    0008 (8) 'Deflated'\n+243189 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24318D CRC                   880754E1 (2282181857)\n+243191 Compressed Size       00000270 (624)\n+243195 Uncompressed Size     000004F3 (1267)\n+243199 Filename Length       004B (75)\n+24319B Extra Length          0000 (0)\n+24319D Comment Length        0000 (0)\n+24319F Disk Start            0000 (0)\n+2431A1 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240EB0 Ext File Attributes   00000000 (0)\n-240EB4 Local Header Offset   0020C463 (2147427)\n-240EB8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2431A3 Ext File Attributes   00000000 (0)\n+2431A7 Local Header Offset   0020F4A6 (2159782)\n+2431AB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240EB8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2431AB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240EE1 CENTRAL HEADER #1960  02014B50 (33639248)\n-240EE5 Created Zip Spec      14 (20) '2.0'\n-240EE6 Created OS            00 (0) 'MS-DOS'\n-240EE7 Extract Zip Spec      14 (20) '2.0'\n-240EE8 Extract OS            00 (0) 'MS-DOS'\n-240EE9 General Purpose Flag  0808 (2056)\n+2431F6 CENTRAL HEADER #1960  02014B50 (33639248)\n+2431FA Created Zip Spec      14 (20) '2.0'\n+2431FB Created OS            00 (0) 'MS-DOS'\n+2431FC Extract Zip Spec      14 (20) '2.0'\n+2431FD Extract OS            00 (0) 'MS-DOS'\n+2431FE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240EEB Compression Method    0008 (8) 'Deflated'\n-240EED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240EF1 CRC                   AB30D581 (2872104321)\n-240EF5 Compressed Size       000002FE (766)\n-240EF9 Uncompressed Size     00000697 (1687)\n-240EFD Filename Length       003F (63)\n-240EFF Extra Length          0000 (0)\n-240F01 Comment Length        0000 (0)\n-240F03 Disk Start            0000 (0)\n-240F05 Int File Attributes   0000 (0)\n+243200 Compression Method    0008 (8) 'Deflated'\n+243202 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243206 CRC                   3DD6411C (1037451548)\n+24320A Compressed Size       000004A3 (1187)\n+24320E Uncompressed Size     00000CAC (3244)\n+243212 Filename Length       0044 (68)\n+243214 Extra Length          0000 (0)\n+243216 Comment Length        0000 (0)\n+243218 Disk Start            0000 (0)\n+24321A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240F07 Ext File Attributes   00000000 (0)\n-240F0B Local Header Offset   0020C4BC (2147516)\n-240F0F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24321C Ext File Attributes   00000000 (0)\n+243220 Local Header Offset   0020F78F (2160527)\n+243224 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240F0F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243224: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240F4E CENTRAL HEADER #1961  02014B50 (33639248)\n-240F52 Created Zip Spec      14 (20) '2.0'\n-240F53 Created OS            00 (0) 'MS-DOS'\n-240F54 Extract Zip Spec      14 (20) '2.0'\n-240F55 Extract OS            00 (0) 'MS-DOS'\n-240F56 General Purpose Flag  0808 (2056)\n+243268 CENTRAL HEADER #1961  02014B50 (33639248)\n+24326C Created Zip Spec      14 (20) '2.0'\n+24326D Created OS            00 (0) 'MS-DOS'\n+24326E Extract Zip Spec      14 (20) '2.0'\n+24326F Extract OS            00 (0) 'MS-DOS'\n+243270 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240F58 Compression Method    0008 (8) 'Deflated'\n-240F5A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240F5E CRC                   546B40F4 (1416315124)\n-240F62 Compressed Size       00000DFC (3580)\n-240F66 Uncompressed Size     00005C0A (23562)\n-240F6A Filename Length       0044 (68)\n-240F6C Extra Length          0000 (0)\n-240F6E Comment Length        0000 (0)\n-240F70 Disk Start            0000 (0)\n-240F72 Int File Attributes   0000 (0)\n+243272 Compression Method    0008 (8) 'Deflated'\n+243274 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243278 CRC                   00000000 (0)\n+24327C Compressed Size       00000002 (2)\n+243280 Uncompressed Size     00000000 (0)\n+243284 Filename Length       003F (63)\n+243286 Extra Length          0000 (0)\n+243288 Comment Length        0000 (0)\n+24328A Disk Start            0000 (0)\n+24328C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240F74 Ext File Attributes   00000000 (0)\n-240F78 Local Header Offset   0020C827 (2148391)\n-240F7C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24328E Ext File Attributes   00000000 (0)\n+243292 Local Header Offset   0020FCA4 (2161828)\n+243296 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240F7C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243296: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-240FC0 CENTRAL HEADER #1962  02014B50 (33639248)\n-240FC4 Created Zip Spec      14 (20) '2.0'\n-240FC5 Created OS            00 (0) 'MS-DOS'\n-240FC6 Extract Zip Spec      14 (20) '2.0'\n-240FC7 Extract OS            00 (0) 'MS-DOS'\n-240FC8 General Purpose Flag  0808 (2056)\n+2432D5 CENTRAL HEADER #1962  02014B50 (33639248)\n+2432D9 Created Zip Spec      14 (20) '2.0'\n+2432DA Created OS            00 (0) 'MS-DOS'\n+2432DB Extract Zip Spec      14 (20) '2.0'\n+2432DC Extract OS            00 (0) 'MS-DOS'\n+2432DD General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-240FCA Compression Method    0008 (8) 'Deflated'\n-240FCC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-240FD0 CRC                   3F1A06E9 (1058670313)\n-240FD4 Compressed Size       00000267 (615)\n-240FD8 Uncompressed Size     000004D7 (1239)\n-240FDC Filename Length       004B (75)\n-240FDE Extra Length          0000 (0)\n-240FE0 Comment Length        0000 (0)\n-240FE2 Disk Start            0000 (0)\n-240FE4 Int File Attributes   0000 (0)\n+2432DF Compression Method    0008 (8) 'Deflated'\n+2432E1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2432E5 CRC                   9E243A48 (2653174344)\n+2432E9 Compressed Size       00000314 (788)\n+2432ED Uncompressed Size     000006E3 (1763)\n+2432F1 Filename Length       0046 (70)\n+2432F3 Extra Length          0000 (0)\n+2432F5 Comment Length        0000 (0)\n+2432F7 Disk Start            0000 (0)\n+2432F9 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-240FE6 Ext File Attributes   00000000 (0)\n-240FEA Local Header Offset   0020D695 (2152085)\n-240FEE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2432FB Ext File Attributes   00000000 (0)\n+2432FF Local Header Offset   0020FD13 (2161939)\n+243303 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x240FEE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243303: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241039 CENTRAL HEADER #1963  02014B50 (33639248)\n-24103D Created Zip Spec      14 (20) '2.0'\n-24103E Created OS            00 (0) 'MS-DOS'\n-24103F Extract Zip Spec      14 (20) '2.0'\n-241040 Extract OS            00 (0) 'MS-DOS'\n-241041 General Purpose Flag  0808 (2056)\n+243349 CENTRAL HEADER #1963  02014B50 (33639248)\n+24334D Created Zip Spec      14 (20) '2.0'\n+24334E Created OS            00 (0) 'MS-DOS'\n+24334F Extract Zip Spec      14 (20) '2.0'\n+243350 Extract OS            00 (0) 'MS-DOS'\n+243351 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241043 Compression Method    0008 (8) 'Deflated'\n-241045 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241049 CRC                   A5D0004C (2781872204)\n-24104D Compressed Size       00000498 (1176)\n-241051 Uncompressed Size     00000C55 (3157)\n-241055 Filename Length       0044 (68)\n-241057 Extra Length          0000 (0)\n-241059 Comment Length        0000 (0)\n-24105B Disk Start            0000 (0)\n-24105D Int File Attributes   0000 (0)\n+243353 Compression Method    0008 (8) 'Deflated'\n+243355 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243359 CRC                   B914F821 (3105159201)\n+24335D Compressed Size       0000004F (79)\n+243361 Uncompressed Size     00000055 (85)\n+243365 Filename Length       004D (77)\n+243367 Extra Length          0000 (0)\n+243369 Comment Length        0000 (0)\n+24336B Disk Start            0000 (0)\n+24336D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-24105F Ext File Attributes   00000000 (0)\n-241063 Local Header Offset   0020D975 (2152821)\n-241067 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24336F Ext File Attributes   00000000 (0)\n+243373 Local Header Offset   0021009B (2162843)\n+243377 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241067: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243377: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2410AB CENTRAL HEADER #1964  02014B50 (33639248)\n-2410AF Created Zip Spec      14 (20) '2.0'\n-2410B0 Created OS            00 (0) 'MS-DOS'\n-2410B1 Extract Zip Spec      14 (20) '2.0'\n-2410B2 Extract OS            00 (0) 'MS-DOS'\n-2410B3 General Purpose Flag  0808 (2056)\n+2433C4 CENTRAL HEADER #1964  02014B50 (33639248)\n+2433C8 Created Zip Spec      14 (20) '2.0'\n+2433C9 Created OS            00 (0) 'MS-DOS'\n+2433CA Extract Zip Spec      14 (20) '2.0'\n+2433CB Extract OS            00 (0) 'MS-DOS'\n+2433CC General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2410B5 Compression Method    0008 (8) 'Deflated'\n-2410B7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2410BB CRC                   7B0242B7 (2063745719)\n-2410BF Compressed Size       00000053 (83)\n-2410C3 Uncompressed Size     000000C3 (195)\n-2410C7 Filename Length       0041 (65)\n-2410C9 Extra Length          0000 (0)\n-2410CB Comment Length        0000 (0)\n-2410CD Disk Start            0000 (0)\n-2410CF Int File Attributes   0000 (0)\n+2433CE Compression Method    0008 (8) 'Deflated'\n+2433D0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2433D4 CRC                   7B0242B7 (2063745719)\n+2433D8 Compressed Size       00000053 (83)\n+2433DC Uncompressed Size     000000C3 (195)\n+2433E0 Filename Length       0041 (65)\n+2433E2 Extra Length          0000 (0)\n+2433E4 Comment Length        0000 (0)\n+2433E6 Disk Start            0000 (0)\n+2433E8 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2410D1 Ext File Attributes   00000000 (0)\n-2410D5 Local Header Offset   0020DE7F (2154111)\n-2410D9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2433EA Ext File Attributes   00000000 (0)\n+2433EE Local Header Offset   00210165 (2163045)\n+2433F2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2410D9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2433F2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-24111A CENTRAL HEADER #1965  02014B50 (33639248)\n-24111E Created Zip Spec      14 (20) '2.0'\n-24111F Created OS            00 (0) 'MS-DOS'\n-241120 Extract Zip Spec      14 (20) '2.0'\n-241121 Extract OS            00 (0) 'MS-DOS'\n-241122 General Purpose Flag  0808 (2056)\n+243433 CENTRAL HEADER #1965  02014B50 (33639248)\n+243437 Created Zip Spec      14 (20) '2.0'\n+243438 Created OS            00 (0) 'MS-DOS'\n+243439 Extract Zip Spec      14 (20) '2.0'\n+24343A Extract OS            00 (0) 'MS-DOS'\n+24343B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241124 Compression Method    0008 (8) 'Deflated'\n-241126 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-24112A CRC                   23C5150B (600118539)\n-24112E Compressed Size       000000A7 (167)\n-241132 Uncompressed Size     00000256 (598)\n-241136 Filename Length       005F (95)\n-241138 Extra Length          0000 (0)\n-24113A Comment Length        0000 (0)\n-24113C Disk Start            0000 (0)\n-24113E Int File Attributes   0000 (0)\n+24343D Compression Method    0008 (8) 'Deflated'\n+24343F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243443 CRC                   2D373412 (758592530)\n+243447 Compressed Size       000000AC (172)\n+24344B Uncompressed Size     00000258 (600)\n+24344F Filename Length       005F (95)\n+243451 Extra Length          0000 (0)\n+243453 Comment Length        0000 (0)\n+243455 Disk Start            0000 (0)\n+243457 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241140 Ext File Attributes   00000000 (0)\n-241144 Local Header Offset   0020DF41 (2154305)\n-241148 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243459 Ext File Attributes   00000000 (0)\n+24345D Local Header Offset   00210227 (2163239)\n+243461 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241148: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243461: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2411A7 CENTRAL HEADER #1966  02014B50 (33639248)\n-2411AB Created Zip Spec      14 (20) '2.0'\n-2411AC Created OS            00 (0) 'MS-DOS'\n-2411AD Extract Zip Spec      14 (20) '2.0'\n-2411AE Extract OS            00 (0) 'MS-DOS'\n-2411AF General Purpose Flag  0808 (2056)\n+2434C0 CENTRAL HEADER #1966  02014B50 (33639248)\n+2434C4 Created Zip Spec      14 (20) '2.0'\n+2434C5 Created OS            00 (0) 'MS-DOS'\n+2434C6 Extract Zip Spec      14 (20) '2.0'\n+2434C7 Extract OS            00 (0) 'MS-DOS'\n+2434C8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2411B1 Compression Method    0008 (8) 'Deflated'\n-2411B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2411B7 CRC                   4749E288 (1196024456)\n-2411BB Compressed Size       00000063 (99)\n-2411BF Uncompressed Size     000000D6 (214)\n-2411C3 Filename Length       004A (74)\n-2411C5 Extra Length          0000 (0)\n-2411C7 Comment Length        0000 (0)\n-2411C9 Disk Start            0000 (0)\n-2411CB Int File Attributes   0000 (0)\n+2434CA Compression Method    0008 (8) 'Deflated'\n+2434CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2434D0 CRC                   4749E288 (1196024456)\n+2434D4 Compressed Size       00000063 (99)\n+2434D8 Uncompressed Size     000000D6 (214)\n+2434DC Filename Length       004A (74)\n+2434DE Extra Length          0000 (0)\n+2434E0 Comment Length        0000 (0)\n+2434E2 Disk Start            0000 (0)\n+2434E4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2411CD Ext File Attributes   00000000 (0)\n-2411D1 Local Header Offset   0020E075 (2154613)\n-2411D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2434E6 Ext File Attributes   00000000 (0)\n+2434EA Local Header Offset   00210360 (2163552)\n+2434EE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2411D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2434EE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-24121F CENTRAL HEADER #1967  02014B50 (33639248)\n-241223 Created Zip Spec      14 (20) '2.0'\n-241224 Created OS            00 (0) 'MS-DOS'\n-241225 Extract Zip Spec      14 (20) '2.0'\n-241226 Extract OS            00 (0) 'MS-DOS'\n-241227 General Purpose Flag  0808 (2056)\n+243538 CENTRAL HEADER #1967  02014B50 (33639248)\n+24353C Created Zip Spec      14 (20) '2.0'\n+24353D Created OS            00 (0) 'MS-DOS'\n+24353E Extract Zip Spec      14 (20) '2.0'\n+24353F Extract OS            00 (0) 'MS-DOS'\n+243540 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241229 Compression Method    0008 (8) 'Deflated'\n-24122B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-24122F CRC                   9BF7AC90 (2616700048)\n-241233 Compressed Size       0000003E (62)\n-241237 Uncompressed Size     00000045 (69)\n-24123B Filename Length       0042 (66)\n-24123D Extra Length          0000 (0)\n-24123F Comment Length        0000 (0)\n-241241 Disk Start            0000 (0)\n-241243 Int File Attributes   0000 (0)\n+243542 Compression Method    0008 (8) 'Deflated'\n+243544 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243548 CRC                   9BF7AC90 (2616700048)\n+24354C Compressed Size       0000003E (62)\n+243550 Uncompressed Size     00000045 (69)\n+243554 Filename Length       0042 (66)\n+243556 Extra Length          0000 (0)\n+243558 Comment Length        0000 (0)\n+24355A Disk Start            0000 (0)\n+24355C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241245 Ext File Attributes   00000000 (0)\n-241249 Local Header Offset   0020E150 (2154832)\n-24124D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24355E Ext File Attributes   00000000 (0)\n+243562 Local Header Offset   0021043B (2163771)\n+243566 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x24124D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243566: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-24128F CENTRAL HEADER #1968  02014B50 (33639248)\n-241293 Created Zip Spec      14 (20) '2.0'\n-241294 Created OS            00 (0) 'MS-DOS'\n-241295 Extract Zip Spec      14 (20) '2.0'\n-241296 Extract OS            00 (0) 'MS-DOS'\n-241297 General Purpose Flag  0808 (2056)\n+2435A8 CENTRAL HEADER #1968  02014B50 (33639248)\n+2435AC Created Zip Spec      14 (20) '2.0'\n+2435AD Created OS            00 (0) 'MS-DOS'\n+2435AE Extract Zip Spec      14 (20) '2.0'\n+2435AF Extract OS            00 (0) 'MS-DOS'\n+2435B0 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241299 Compression Method    0008 (8) 'Deflated'\n-24129B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-24129F CRC                   51878B1A (1367837466)\n-2412A3 Compressed Size       0000006A (106)\n-2412A7 Uncompressed Size     00000133 (307)\n-2412AB Filename Length       0044 (68)\n-2412AD Extra Length          0000 (0)\n-2412AF Comment Length        0000 (0)\n-2412B1 Disk Start            0000 (0)\n-2412B3 Int File Attributes   0000 (0)\n+2435B2 Compression Method    0008 (8) 'Deflated'\n+2435B4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2435B8 CRC                   51878B1A (1367837466)\n+2435BC Compressed Size       0000006A (106)\n+2435C0 Uncompressed Size     00000133 (307)\n+2435C4 Filename Length       0044 (68)\n+2435C6 Extra Length          0000 (0)\n+2435C8 Comment Length        0000 (0)\n+2435CA Disk Start            0000 (0)\n+2435CC Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2412B5 Ext File Attributes   00000000 (0)\n-2412B9 Local Header Offset   0020E1FE (2155006)\n-2412BD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2435CE Ext File Attributes   00000000 (0)\n+2435D2 Local Header Offset   002104E9 (2163945)\n+2435D6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2412BD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2435D6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241301 CENTRAL HEADER #1969  02014B50 (33639248)\n-241305 Created Zip Spec      14 (20) '2.0'\n-241306 Created OS            00 (0) 'MS-DOS'\n-241307 Extract Zip Spec      14 (20) '2.0'\n-241308 Extract OS            00 (0) 'MS-DOS'\n-241309 General Purpose Flag  0808 (2056)\n+24361A CENTRAL HEADER #1969  02014B50 (33639248)\n+24361E Created Zip Spec      14 (20) '2.0'\n+24361F Created OS            00 (0) 'MS-DOS'\n+243620 Extract Zip Spec      14 (20) '2.0'\n+243621 Extract OS            00 (0) 'MS-DOS'\n+243622 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-24130B Compression Method    0008 (8) 'Deflated'\n-24130D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241311 CRC                   D59F7213 (3583996435)\n-241315 Compressed Size       000000A6 (166)\n-241319 Uncompressed Size     000001E0 (480)\n-24131D Filename Length       0044 (68)\n-24131F Extra Length          0000 (0)\n-241321 Comment Length        0000 (0)\n-241323 Disk Start            0000 (0)\n-241325 Int File Attributes   0000 (0)\n+243624 Compression Method    0008 (8) 'Deflated'\n+243626 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24362A CRC                   38FE5551 (956192081)\n+24362E Compressed Size       000000A6 (166)\n+243632 Uncompressed Size     000001E1 (481)\n+243636 Filename Length       0044 (68)\n+243638 Extra Length          0000 (0)\n+24363A Comment Length        0000 (0)\n+24363C Disk Start            0000 (0)\n+24363E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241327 Ext File Attributes   00000000 (0)\n-24132B Local Header Offset   0020E2DA (2155226)\n-24132F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243640 Ext File Attributes   00000000 (0)\n+243644 Local Header Offset   002105C5 (2164165)\n+243648 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x24132F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243648: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241373 CENTRAL HEADER #1970  02014B50 (33639248)\n-241377 Created Zip Spec      14 (20) '2.0'\n-241378 Created OS            00 (0) 'MS-DOS'\n-241379 Extract Zip Spec      14 (20) '2.0'\n-24137A Extract OS            00 (0) 'MS-DOS'\n-24137B General Purpose Flag  0808 (2056)\n+24368C CENTRAL HEADER #1970  02014B50 (33639248)\n+243690 Created Zip Spec      14 (20) '2.0'\n+243691 Created OS            00 (0) 'MS-DOS'\n+243692 Extract Zip Spec      14 (20) '2.0'\n+243693 Extract OS            00 (0) 'MS-DOS'\n+243694 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-24137D Compression Method    0008 (8) 'Deflated'\n-24137F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241383 CRC                   FD317E52 (4247879250)\n-241387 Compressed Size       0000003A (58)\n-24138B Uncompressed Size     0000003D (61)\n-24138F Filename Length       003F (63)\n-241391 Extra Length          0000 (0)\n-241393 Comment Length        0000 (0)\n-241395 Disk Start            0000 (0)\n-241397 Int File Attributes   0000 (0)\n+243696 Compression Method    0008 (8) 'Deflated'\n+243698 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24369C CRC                   FD317E52 (4247879250)\n+2436A0 Compressed Size       0000003A (58)\n+2436A4 Uncompressed Size     0000003D (61)\n+2436A8 Filename Length       003F (63)\n+2436AA Extra Length          0000 (0)\n+2436AC Comment Length        0000 (0)\n+2436AE Disk Start            0000 (0)\n+2436B0 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241399 Ext File Attributes   00000000 (0)\n-24139D Local Header Offset   0020E3F2 (2155506)\n-2413A1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2436B2 Ext File Attributes   00000000 (0)\n+2436B6 Local Header Offset   002106DD (2164445)\n+2436BA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2413A1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2436BA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2413E0 CENTRAL HEADER #1971  02014B50 (33639248)\n-2413E4 Created Zip Spec      14 (20) '2.0'\n-2413E5 Created OS            00 (0) 'MS-DOS'\n-2413E6 Extract Zip Spec      14 (20) '2.0'\n-2413E7 Extract OS            00 (0) 'MS-DOS'\n-2413E8 General Purpose Flag  0808 (2056)\n+2436F9 CENTRAL HEADER #1971  02014B50 (33639248)\n+2436FD Created Zip Spec      14 (20) '2.0'\n+2436FE Created OS            00 (0) 'MS-DOS'\n+2436FF Extract Zip Spec      14 (20) '2.0'\n+243700 Extract OS            00 (0) 'MS-DOS'\n+243701 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2413EA Compression Method    0008 (8) 'Deflated'\n-2413EC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2413F0 CRC                   C4F26B25 (3304221477)\n-2413F4 Compressed Size       0000006B (107)\n-2413F8 Uncompressed Size     0000012A (298)\n-2413FC Filename Length       0045 (69)\n-2413FE Extra Length          0000 (0)\n-241400 Comment Length        0000 (0)\n-241402 Disk Start            0000 (0)\n-241404 Int File Attributes   0000 (0)\n+243703 Compression Method    0008 (8) 'Deflated'\n+243705 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243709 CRC                   C4F26B25 (3304221477)\n+24370D Compressed Size       0000006B (107)\n+243711 Uncompressed Size     0000012A (298)\n+243715 Filename Length       0045 (69)\n+243717 Extra Length          0000 (0)\n+243719 Comment Length        0000 (0)\n+24371B Disk Start            0000 (0)\n+24371D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241406 Ext File Attributes   00000000 (0)\n-24140A Local Header Offset   0020E499 (2155673)\n-24140E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24371F Ext File Attributes   00000000 (0)\n+243723 Local Header Offset   00210784 (2164612)\n+243727 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x24140E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243727: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241453 CENTRAL HEADER #1972  02014B50 (33639248)\n-241457 Created Zip Spec      14 (20) '2.0'\n-241458 Created OS            00 (0) 'MS-DOS'\n-241459 Extract Zip Spec      14 (20) '2.0'\n-24145A Extract OS            00 (0) 'MS-DOS'\n-24145B General Purpose Flag  0808 (2056)\n+24376C CENTRAL HEADER #1972  02014B50 (33639248)\n+243770 Created Zip Spec      14 (20) '2.0'\n+243771 Created OS            00 (0) 'MS-DOS'\n+243772 Extract Zip Spec      14 (20) '2.0'\n+243773 Extract OS            00 (0) 'MS-DOS'\n+243774 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-24145D Compression Method    0008 (8) 'Deflated'\n-24145F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241463 CRC                   5534192D (1429477677)\n-241467 Compressed Size       000000F6 (246)\n-24146B Uncompressed Size     00000409 (1033)\n-24146F Filename Length       0047 (71)\n-241471 Extra Length          0000 (0)\n-241473 Comment Length        0000 (0)\n-241475 Disk Start            0000 (0)\n-241477 Int File Attributes   0000 (0)\n+243776 Compression Method    0008 (8) 'Deflated'\n+243778 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24377C CRC                   BDA8469E (3181921950)\n+243780 Compressed Size       000000FD (253)\n+243784 Uncompressed Size     0000040C (1036)\n+243788 Filename Length       0047 (71)\n+24378A Extra Length          0000 (0)\n+24378C Comment Length        0000 (0)\n+24378E Disk Start            0000 (0)\n+243790 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241479 Ext File Attributes   00000000 (0)\n-24147D Local Header Offset   0020E577 (2155895)\n-241481 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243792 Ext File Attributes   00000000 (0)\n+243796 Local Header Offset   00210862 (2164834)\n+24379A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241481: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24379A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2414C8 CENTRAL HEADER #1973  02014B50 (33639248)\n-2414CC Created Zip Spec      14 (20) '2.0'\n-2414CD Created OS            00 (0) 'MS-DOS'\n-2414CE Extract Zip Spec      14 (20) '2.0'\n-2414CF Extract OS            00 (0) 'MS-DOS'\n-2414D0 General Purpose Flag  0808 (2056)\n+2437E1 CENTRAL HEADER #1973  02014B50 (33639248)\n+2437E5 Created Zip Spec      14 (20) '2.0'\n+2437E6 Created OS            00 (0) 'MS-DOS'\n+2437E7 Extract Zip Spec      14 (20) '2.0'\n+2437E8 Extract OS            00 (0) 'MS-DOS'\n+2437E9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2414D2 Compression Method    0008 (8) 'Deflated'\n-2414D4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2414D8 CRC                   B02A8DBF (2955578815)\n-2414DC Compressed Size       00000086 (134)\n-2414E0 Uncompressed Size     000001A4 (420)\n-2414E4 Filename Length       003C (60)\n-2414E6 Extra Length          0000 (0)\n-2414E8 Comment Length        0000 (0)\n-2414EA Disk Start            0000 (0)\n-2414EC Int File Attributes   0000 (0)\n+2437EB Compression Method    0008 (8) 'Deflated'\n+2437ED Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2437F1 CRC                   B02A8DBF (2955578815)\n+2437F5 Compressed Size       00000086 (134)\n+2437F9 Uncompressed Size     000001A4 (420)\n+2437FD Filename Length       003C (60)\n+2437FF Extra Length          0000 (0)\n+243801 Comment Length        0000 (0)\n+243803 Disk Start            0000 (0)\n+243805 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2414EE Ext File Attributes   00000000 (0)\n-2414F2 Local Header Offset   0020E6E2 (2156258)\n-2414F6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243807 Ext File Attributes   00000000 (0)\n+24380B Local Header Offset   002109D4 (2165204)\n+24380F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2414F6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24380F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241532 CENTRAL HEADER #1974  02014B50 (33639248)\n-241536 Created Zip Spec      14 (20) '2.0'\n-241537 Created OS            00 (0) 'MS-DOS'\n-241538 Extract Zip Spec      14 (20) '2.0'\n-241539 Extract OS            00 (0) 'MS-DOS'\n-24153A General Purpose Flag  0808 (2056)\n+24384B CENTRAL HEADER #1974  02014B50 (33639248)\n+24384F Created Zip Spec      14 (20) '2.0'\n+243850 Created OS            00 (0) 'MS-DOS'\n+243851 Extract Zip Spec      14 (20) '2.0'\n+243852 Extract OS            00 (0) 'MS-DOS'\n+243853 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-24153C Compression Method    0008 (8) 'Deflated'\n-24153E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241542 CRC                   83B04446 (2209367110)\n-241546 Compressed Size       0000007E (126)\n-24154A Uncompressed Size     00000131 (305)\n-24154E Filename Length       0038 (56)\n-241550 Extra Length          0000 (0)\n-241552 Comment Length        0000 (0)\n-241554 Disk Start            0000 (0)\n-241556 Int File Attributes   0000 (0)\n+243855 Compression Method    0008 (8) 'Deflated'\n+243857 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24385B CRC                   83B04446 (2209367110)\n+24385F Compressed Size       0000007E (126)\n+243863 Uncompressed Size     00000131 (305)\n+243867 Filename Length       0038 (56)\n+243869 Extra Length          0000 (0)\n+24386B Comment Length        0000 (0)\n+24386D Disk Start            0000 (0)\n+24386F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241558 Ext File Attributes   00000000 (0)\n-24155C Local Header Offset   0020E7D2 (2156498)\n-241560 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243871 Ext File Attributes   00000000 (0)\n+243875 Local Header Offset   00210AC4 (2165444)\n+243879 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241560: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243879: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241598 CENTRAL HEADER #1975  02014B50 (33639248)\n-24159C Created Zip Spec      14 (20) '2.0'\n-24159D Created OS            00 (0) 'MS-DOS'\n-24159E Extract Zip Spec      14 (20) '2.0'\n-24159F Extract OS            00 (0) 'MS-DOS'\n-2415A0 General Purpose Flag  0808 (2056)\n+2438B1 CENTRAL HEADER #1975  02014B50 (33639248)\n+2438B5 Created Zip Spec      14 (20) '2.0'\n+2438B6 Created OS            00 (0) 'MS-DOS'\n+2438B7 Extract Zip Spec      14 (20) '2.0'\n+2438B8 Extract OS            00 (0) 'MS-DOS'\n+2438B9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2415A2 Compression Method    0008 (8) 'Deflated'\n-2415A4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2415A8 CRC                   605C157F (1616647551)\n-2415AC Compressed Size       00000067 (103)\n-2415B0 Uncompressed Size     0000014D (333)\n-2415B4 Filename Length       003D (61)\n-2415B6 Extra Length          0000 (0)\n-2415B8 Comment Length        0000 (0)\n-2415BA Disk Start            0000 (0)\n-2415BC Int File Attributes   0000 (0)\n+2438BB Compression Method    0008 (8) 'Deflated'\n+2438BD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2438C1 CRC                   605C157F (1616647551)\n+2438C5 Compressed Size       00000067 (103)\n+2438C9 Uncompressed Size     0000014D (333)\n+2438CD Filename Length       003D (61)\n+2438CF Extra Length          0000 (0)\n+2438D1 Comment Length        0000 (0)\n+2438D3 Disk Start            0000 (0)\n+2438D5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2415BE Ext File Attributes   00000000 (0)\n-2415C2 Local Header Offset   0020E8B6 (2156726)\n-2415C6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2438D7 Ext File Attributes   00000000 (0)\n+2438DB Local Header Offset   00210BA8 (2165672)\n+2438DF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2415C6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2438DF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241603 CENTRAL HEADER #1976  02014B50 (33639248)\n-241607 Created Zip Spec      14 (20) '2.0'\n-241608 Created OS            00 (0) 'MS-DOS'\n-241609 Extract Zip Spec      14 (20) '2.0'\n-24160A Extract OS            00 (0) 'MS-DOS'\n-24160B General Purpose Flag  0808 (2056)\n+24391C CENTRAL HEADER #1976  02014B50 (33639248)\n+243920 Created Zip Spec      14 (20) '2.0'\n+243921 Created OS            00 (0) 'MS-DOS'\n+243922 Extract Zip Spec      14 (20) '2.0'\n+243923 Extract OS            00 (0) 'MS-DOS'\n+243924 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-24160D Compression Method    0008 (8) 'Deflated'\n-24160F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241613 CRC                   E21BFF73 (3793485683)\n-241617 Compressed Size       0000003F (63)\n-24161B Uncompressed Size     00000049 (73)\n-24161F Filename Length       0044 (68)\n-241621 Extra Length          0000 (0)\n-241623 Comment Length        0000 (0)\n-241625 Disk Start            0000 (0)\n-241627 Int File Attributes   0000 (0)\n+243926 Compression Method    0008 (8) 'Deflated'\n+243928 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24392C CRC                   E21BFF73 (3793485683)\n+243930 Compressed Size       0000003F (63)\n+243934 Uncompressed Size     00000049 (73)\n+243938 Filename Length       0044 (68)\n+24393A Extra Length          0000 (0)\n+24393C Comment Length        0000 (0)\n+24393E Disk Start            0000 (0)\n+243940 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241629 Ext File Attributes   00000000 (0)\n-24162D Local Header Offset   0020E988 (2156936)\n-241631 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243942 Ext File Attributes   00000000 (0)\n+243946 Local Header Offset   00210C7A (2165882)\n+24394A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241631: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24394A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241675 CENTRAL HEADER #1977  02014B50 (33639248)\n-241679 Created Zip Spec      14 (20) '2.0'\n-24167A Created OS            00 (0) 'MS-DOS'\n-24167B Extract Zip Spec      14 (20) '2.0'\n-24167C Extract OS            00 (0) 'MS-DOS'\n-24167D General Purpose Flag  0808 (2056)\n+24398E CENTRAL HEADER #1977  02014B50 (33639248)\n+243992 Created Zip Spec      14 (20) '2.0'\n+243993 Created OS            00 (0) 'MS-DOS'\n+243994 Extract Zip Spec      14 (20) '2.0'\n+243995 Extract OS            00 (0) 'MS-DOS'\n+243996 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-24167F Compression Method    0008 (8) 'Deflated'\n-241681 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241685 CRC                   78354721 (2016757537)\n-241689 Compressed Size       0000005F (95)\n-24168D Uncompressed Size     000000F8 (248)\n-241691 Filename Length       0041 (65)\n-241693 Extra Length          0000 (0)\n-241695 Comment Length        0000 (0)\n-241697 Disk Start            0000 (0)\n-241699 Int File Attributes   0000 (0)\n+243998 Compression Method    0008 (8) 'Deflated'\n+24399A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24399E CRC                   78354721 (2016757537)\n+2439A2 Compressed Size       0000005F (95)\n+2439A6 Uncompressed Size     000000F8 (248)\n+2439AA Filename Length       0041 (65)\n+2439AC Extra Length          0000 (0)\n+2439AE Comment Length        0000 (0)\n+2439B0 Disk Start            0000 (0)\n+2439B2 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-24169B Ext File Attributes   00000000 (0)\n-24169F Local Header Offset   0020EA39 (2157113)\n-2416A3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2439B4 Ext File Attributes   00000000 (0)\n+2439B8 Local Header Offset   00210D2B (2166059)\n+2439BC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2416A3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2439BC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2416E4 CENTRAL HEADER #1978  02014B50 (33639248)\n-2416E8 Created Zip Spec      14 (20) '2.0'\n-2416E9 Created OS            00 (0) 'MS-DOS'\n-2416EA Extract Zip Spec      14 (20) '2.0'\n-2416EB Extract OS            00 (0) 'MS-DOS'\n-2416EC General Purpose Flag  0808 (2056)\n+2439FD CENTRAL HEADER #1978  02014B50 (33639248)\n+243A01 Created Zip Spec      14 (20) '2.0'\n+243A02 Created OS            00 (0) 'MS-DOS'\n+243A03 Extract Zip Spec      14 (20) '2.0'\n+243A04 Extract OS            00 (0) 'MS-DOS'\n+243A05 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2416EE Compression Method    0008 (8) 'Deflated'\n-2416F0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2416F4 CRC                   3693E7D5 (915662805)\n-2416F8 Compressed Size       0000004C (76)\n-2416FC Uncompressed Size     0000007D (125)\n-241700 Filename Length       003F (63)\n-241702 Extra Length          0000 (0)\n-241704 Comment Length        0000 (0)\n-241706 Disk Start            0000 (0)\n-241708 Int File Attributes   0000 (0)\n+243A07 Compression Method    0008 (8) 'Deflated'\n+243A09 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243A0D CRC                   3693E7D5 (915662805)\n+243A11 Compressed Size       0000004C (76)\n+243A15 Uncompressed Size     0000007D (125)\n+243A19 Filename Length       003F (63)\n+243A1B Extra Length          0000 (0)\n+243A1D Comment Length        0000 (0)\n+243A1F Disk Start            0000 (0)\n+243A21 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-24170A Ext File Attributes   00000000 (0)\n-24170E Local Header Offset   0020EB07 (2157319)\n-241712 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243A23 Ext File Attributes   00000000 (0)\n+243A27 Local Header Offset   00210DF9 (2166265)\n+243A2B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241712: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243A2B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241751 CENTRAL HEADER #1979  02014B50 (33639248)\n-241755 Created Zip Spec      14 (20) '2.0'\n-241756 Created OS            00 (0) 'MS-DOS'\n-241757 Extract Zip Spec      14 (20) '2.0'\n-241758 Extract OS            00 (0) 'MS-DOS'\n-241759 General Purpose Flag  0808 (2056)\n+243A6A CENTRAL HEADER #1979  02014B50 (33639248)\n+243A6E Created Zip Spec      14 (20) '2.0'\n+243A6F Created OS            00 (0) 'MS-DOS'\n+243A70 Extract Zip Spec      14 (20) '2.0'\n+243A71 Extract OS            00 (0) 'MS-DOS'\n+243A72 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-24175B Compression Method    0008 (8) 'Deflated'\n-24175D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241761 CRC                   F5C1516B (4123087211)\n-241765 Compressed Size       000000CD (205)\n-241769 Uncompressed Size     0000034D (845)\n-24176D Filename Length       0046 (70)\n-24176F Extra Length          0000 (0)\n-241771 Comment Length        0000 (0)\n-241773 Disk Start            0000 (0)\n-241775 Int File Attributes   0000 (0)\n+243A74 Compression Method    0008 (8) 'Deflated'\n+243A76 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243A7A CRC                   97778096 (2541191318)\n+243A7E Compressed Size       000000CD (205)\n+243A82 Uncompressed Size     00000355 (853)\n+243A86 Filename Length       0046 (70)\n+243A88 Extra Length          0000 (0)\n+243A8A Comment Length        0000 (0)\n+243A8C Disk Start            0000 (0)\n+243A8E Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241777 Ext File Attributes   00000000 (0)\n-24177B Local Header Offset   0020EBC0 (2157504)\n-24177F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243A90 Ext File Attributes   00000000 (0)\n+243A94 Local Header Offset   00210EB2 (2166450)\n+243A98 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x24177F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243A98: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2417C5 CENTRAL HEADER #1980  02014B50 (33639248)\n-2417C9 Created Zip Spec      14 (20) '2.0'\n-2417CA Created OS            00 (0) 'MS-DOS'\n-2417CB Extract Zip Spec      14 (20) '2.0'\n-2417CC Extract OS            00 (0) 'MS-DOS'\n-2417CD General Purpose Flag  0808 (2056)\n+243ADE CENTRAL HEADER #1980  02014B50 (33639248)\n+243AE2 Created Zip Spec      14 (20) '2.0'\n+243AE3 Created OS            00 (0) 'MS-DOS'\n+243AE4 Extract Zip Spec      14 (20) '2.0'\n+243AE5 Extract OS            00 (0) 'MS-DOS'\n+243AE6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2417CF Compression Method    0008 (8) 'Deflated'\n-2417D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2417D5 CRC                   80A8E0CE (2158551246)\n-2417D9 Compressed Size       00000045 (69)\n-2417DD Uncompressed Size     00000052 (82)\n-2417E1 Filename Length       0050 (80)\n-2417E3 Extra Length          0000 (0)\n-2417E5 Comment Length        0000 (0)\n-2417E7 Disk Start            0000 (0)\n-2417E9 Int File Attributes   0000 (0)\n+243AE8 Compression Method    0008 (8) 'Deflated'\n+243AEA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243AEE CRC                   80A8E0CE (2158551246)\n+243AF2 Compressed Size       00000045 (69)\n+243AF6 Uncompressed Size     00000052 (82)\n+243AFA Filename Length       0050 (80)\n+243AFC Extra Length          0000 (0)\n+243AFE Comment Length        0000 (0)\n+243B00 Disk Start            0000 (0)\n+243B02 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2417EB Ext File Attributes   00000000 (0)\n-2417EF Local Header Offset   0020ED01 (2157825)\n-2417F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243B04 Ext File Attributes   00000000 (0)\n+243B08 Local Header Offset   00210FF3 (2166771)\n+243B0C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2417F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243B0C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241843 CENTRAL HEADER #1981  02014B50 (33639248)\n-241847 Created Zip Spec      14 (20) '2.0'\n-241848 Created OS            00 (0) 'MS-DOS'\n-241849 Extract Zip Spec      14 (20) '2.0'\n-24184A Extract OS            00 (0) 'MS-DOS'\n-24184B General Purpose Flag  0808 (2056)\n+243B5C CENTRAL HEADER #1981  02014B50 (33639248)\n+243B60 Created Zip Spec      14 (20) '2.0'\n+243B61 Created OS            00 (0) 'MS-DOS'\n+243B62 Extract Zip Spec      14 (20) '2.0'\n+243B63 Extract OS            00 (0) 'MS-DOS'\n+243B64 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-24184D Compression Method    0008 (8) 'Deflated'\n-24184F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241853 CRC                   9B0B664B (2601215563)\n-241857 Compressed Size       0000013D (317)\n-24185B Uncompressed Size     00000489 (1161)\n-24185F Filename Length       0035 (53)\n-241861 Extra Length          0000 (0)\n-241863 Comment Length        0000 (0)\n-241865 Disk Start            0000 (0)\n-241867 Int File Attributes   0000 (0)\n+243B66 Compression Method    0008 (8) 'Deflated'\n+243B68 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243B6C CRC                   0C25920C (203788812)\n+243B70 Compressed Size       00000140 (320)\n+243B74 Uncompressed Size     0000048A (1162)\n+243B78 Filename Length       0035 (53)\n+243B7A Extra Length          0000 (0)\n+243B7C Comment Length        0000 (0)\n+243B7E Disk Start            0000 (0)\n+243B80 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241869 Ext File Attributes   00000000 (0)\n-24186D Local Header Offset   0020EDC4 (2158020)\n-241871 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243B82 Ext File Attributes   00000000 (0)\n+243B86 Local Header Offset   002110B6 (2166966)\n+243B8A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241871: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243B8A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2418A6 CENTRAL HEADER #1982  02014B50 (33639248)\n-2418AA Created Zip Spec      14 (20) '2.0'\n-2418AB Created OS            00 (0) 'MS-DOS'\n-2418AC Extract Zip Spec      14 (20) '2.0'\n-2418AD Extract OS            00 (0) 'MS-DOS'\n-2418AE General Purpose Flag  0808 (2056)\n+243BBF CENTRAL HEADER #1982  02014B50 (33639248)\n+243BC3 Created Zip Spec      14 (20) '2.0'\n+243BC4 Created OS            00 (0) 'MS-DOS'\n+243BC5 Extract Zip Spec      14 (20) '2.0'\n+243BC6 Extract OS            00 (0) 'MS-DOS'\n+243BC7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2418B0 Compression Method    0008 (8) 'Deflated'\n-2418B2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2418B6 CRC                   A8176C28 (2820107304)\n-2418BA Compressed Size       0000012F (303)\n-2418BE Uncompressed Size     0000048F (1167)\n-2418C2 Filename Length       0033 (51)\n-2418C4 Extra Length          0000 (0)\n-2418C6 Comment Length        0000 (0)\n-2418C8 Disk Start            0000 (0)\n-2418CA Int File Attributes   0000 (0)\n+243BC9 Compression Method    0008 (8) 'Deflated'\n+243BCB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243BCF CRC                   ECAE314A (3970838858)\n+243BD3 Compressed Size       0000012F (303)\n+243BD7 Uncompressed Size     00000491 (1169)\n+243BDB Filename Length       0033 (51)\n+243BDD Extra Length          0000 (0)\n+243BDF Comment Length        0000 (0)\n+243BE1 Disk Start            0000 (0)\n+243BE3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2418CC Ext File Attributes   00000000 (0)\n-2418D0 Local Header Offset   0020EF64 (2158436)\n-2418D4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243BE5 Ext File Attributes   00000000 (0)\n+243BE9 Local Header Offset   00211259 (2167385)\n+243BED Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2418D4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243BED: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241907 CENTRAL HEADER #1983  02014B50 (33639248)\n-24190B Created Zip Spec      14 (20) '2.0'\n-24190C Created OS            00 (0) 'MS-DOS'\n-24190D Extract Zip Spec      14 (20) '2.0'\n-24190E Extract OS            00 (0) 'MS-DOS'\n-24190F General Purpose Flag  0808 (2056)\n+243C20 CENTRAL HEADER #1983  02014B50 (33639248)\n+243C24 Created Zip Spec      14 (20) '2.0'\n+243C25 Created OS            00 (0) 'MS-DOS'\n+243C26 Extract Zip Spec      14 (20) '2.0'\n+243C27 Extract OS            00 (0) 'MS-DOS'\n+243C28 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241911 Compression Method    0008 (8) 'Deflated'\n-241913 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241917 CRC                   2F399EBD (792305341)\n-24191B Compressed Size       00000039 (57)\n-24191F Uncompressed Size     00000043 (67)\n-241923 Filename Length       003C (60)\n-241925 Extra Length          0000 (0)\n-241927 Comment Length        0000 (0)\n-241929 Disk Start            0000 (0)\n-24192B Int File Attributes   0000 (0)\n+243C2A Compression Method    0008 (8) 'Deflated'\n+243C2C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243C30 CRC                   2F399EBD (792305341)\n+243C34 Compressed Size       00000039 (57)\n+243C38 Uncompressed Size     00000043 (67)\n+243C3C Filename Length       003C (60)\n+243C3E Extra Length          0000 (0)\n+243C40 Comment Length        0000 (0)\n+243C42 Disk Start            0000 (0)\n+243C44 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-24192D Ext File Attributes   00000000 (0)\n-241931 Local Header Offset   0020F0F4 (2158836)\n-241935 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243C46 Ext File Attributes   00000000 (0)\n+243C4A Local Header Offset   002113E9 (2167785)\n+243C4E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241935: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243C4E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241971 CENTRAL HEADER #1984  02014B50 (33639248)\n-241975 Created Zip Spec      14 (20) '2.0'\n-241976 Created OS            00 (0) 'MS-DOS'\n-241977 Extract Zip Spec      14 (20) '2.0'\n-241978 Extract OS            00 (0) 'MS-DOS'\n-241979 General Purpose Flag  0808 (2056)\n+243C8A CENTRAL HEADER #1984  02014B50 (33639248)\n+243C8E Created Zip Spec      14 (20) '2.0'\n+243C8F Created OS            00 (0) 'MS-DOS'\n+243C90 Extract Zip Spec      14 (20) '2.0'\n+243C91 Extract OS            00 (0) 'MS-DOS'\n+243C92 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-24197B Compression Method    0008 (8) 'Deflated'\n-24197D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241981 CRC                   ED03E48F (3976455311)\n-241985 Compressed Size       0000005E (94)\n-241989 Uncompressed Size     000000BA (186)\n-24198D Filename Length       0039 (57)\n-24198F Extra Length          0000 (0)\n-241991 Comment Length        0000 (0)\n-241993 Disk Start            0000 (0)\n-241995 Int File Attributes   0000 (0)\n+243C94 Compression Method    0008 (8) 'Deflated'\n+243C96 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243C9A CRC                   ED03E48F (3976455311)\n+243C9E Compressed Size       0000005E (94)\n+243CA2 Uncompressed Size     000000BA (186)\n+243CA6 Filename Length       0039 (57)\n+243CA8 Extra Length          0000 (0)\n+243CAA Comment Length        0000 (0)\n+243CAC Disk Start            0000 (0)\n+243CAE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241997 Ext File Attributes   00000000 (0)\n-24199B Local Header Offset   0020F197 (2158999)\n-24199F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243CB0 Ext File Attributes   00000000 (0)\n+243CB4 Local Header Offset   0021148C (2167948)\n+243CB8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x24199F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243CB8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2419D8 CENTRAL HEADER #1985  02014B50 (33639248)\n-2419DC Created Zip Spec      14 (20) '2.0'\n-2419DD Created OS            00 (0) 'MS-DOS'\n-2419DE Extract Zip Spec      14 (20) '2.0'\n-2419DF Extract OS            00 (0) 'MS-DOS'\n-2419E0 General Purpose Flag  0808 (2056)\n+243CF1 CENTRAL HEADER #1985  02014B50 (33639248)\n+243CF5 Created Zip Spec      14 (20) '2.0'\n+243CF6 Created OS            00 (0) 'MS-DOS'\n+243CF7 Extract Zip Spec      14 (20) '2.0'\n+243CF8 Extract OS            00 (0) 'MS-DOS'\n+243CF9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2419E2 Compression Method    0008 (8) 'Deflated'\n-2419E4 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2419E8 CRC                   72D50831 (1926563889)\n-2419EC Compressed Size       000000AC (172)\n-2419F0 Uncompressed Size     0000028C (652)\n-2419F4 Filename Length       003C (60)\n-2419F6 Extra Length          0000 (0)\n-2419F8 Comment Length        0000 (0)\n-2419FA Disk Start            0000 (0)\n-2419FC Int File Attributes   0000 (0)\n+243CFB Compression Method    0008 (8) 'Deflated'\n+243CFD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243D01 CRC                   72D50831 (1926563889)\n+243D05 Compressed Size       000000AC (172)\n+243D09 Uncompressed Size     0000028C (652)\n+243D0D Filename Length       003C (60)\n+243D0F Extra Length          0000 (0)\n+243D11 Comment Length        0000 (0)\n+243D13 Disk Start            0000 (0)\n+243D15 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2419FE Ext File Attributes   00000000 (0)\n-241A02 Local Header Offset   0020F25C (2159196)\n-241A06 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243D17 Ext File Attributes   00000000 (0)\n+243D1B Local Header Offset   00211551 (2168145)\n+243D1F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241A06: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243D1F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241A42 CENTRAL HEADER #1986  02014B50 (33639248)\n-241A46 Created Zip Spec      14 (20) '2.0'\n-241A47 Created OS            00 (0) 'MS-DOS'\n-241A48 Extract Zip Spec      14 (20) '2.0'\n-241A49 Extract OS            00 (0) 'MS-DOS'\n-241A4A General Purpose Flag  0808 (2056)\n+243D5B CENTRAL HEADER #1986  02014B50 (33639248)\n+243D5F Created Zip Spec      14 (20) '2.0'\n+243D60 Created OS            00 (0) 'MS-DOS'\n+243D61 Extract Zip Spec      14 (20) '2.0'\n+243D62 Extract OS            00 (0) 'MS-DOS'\n+243D63 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241A4C Compression Method    0008 (8) 'Deflated'\n-241A4E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241A52 CRC                   388E9B78 (948870008)\n-241A56 Compressed Size       0000008A (138)\n-241A5A Uncompressed Size     00000184 (388)\n-241A5E Filename Length       0040 (64)\n-241A60 Extra Length          0000 (0)\n-241A62 Comment Length        0000 (0)\n-241A64 Disk Start            0000 (0)\n-241A66 Int File Attributes   0000 (0)\n+243D65 Compression Method    0008 (8) 'Deflated'\n+243D67 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243D6B CRC                   388E9B78 (948870008)\n+243D6F Compressed Size       0000008A (138)\n+243D73 Uncompressed Size     00000184 (388)\n+243D77 Filename Length       0040 (64)\n+243D79 Extra Length          0000 (0)\n+243D7B Comment Length        0000 (0)\n+243D7D Disk Start            0000 (0)\n+243D7F Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241A68 Ext File Attributes   00000000 (0)\n-241A6C Local Header Offset   0020F372 (2159474)\n-241A70 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243D81 Ext File Attributes   00000000 (0)\n+243D85 Local Header Offset   00211667 (2168423)\n+243D89 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241A70: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243D89: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241AB0 CENTRAL HEADER #1987  02014B50 (33639248)\n-241AB4 Created Zip Spec      14 (20) '2.0'\n-241AB5 Created OS            00 (0) 'MS-DOS'\n-241AB6 Extract Zip Spec      14 (20) '2.0'\n-241AB7 Extract OS            00 (0) 'MS-DOS'\n-241AB8 General Purpose Flag  0808 (2056)\n+243DC9 CENTRAL HEADER #1987  02014B50 (33639248)\n+243DCD Created Zip Spec      14 (20) '2.0'\n+243DCE Created OS            00 (0) 'MS-DOS'\n+243DCF Extract Zip Spec      14 (20) '2.0'\n+243DD0 Extract OS            00 (0) 'MS-DOS'\n+243DD1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241ABA Compression Method    0008 (8) 'Deflated'\n-241ABC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241AC0 CRC                   6F4CF591 (1867314577)\n-241AC4 Compressed Size       00000097 (151)\n-241AC8 Uncompressed Size     00000278 (632)\n-241ACC Filename Length       003B (59)\n-241ACE Extra Length          0000 (0)\n-241AD0 Comment Length        0000 (0)\n-241AD2 Disk Start            0000 (0)\n-241AD4 Int File Attributes   0000 (0)\n+243DD3 Compression Method    0008 (8) 'Deflated'\n+243DD5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243DD9 CRC                   6F4CF591 (1867314577)\n+243DDD Compressed Size       00000097 (151)\n+243DE1 Uncompressed Size     00000278 (632)\n+243DE5 Filename Length       003B (59)\n+243DE7 Extra Length          0000 (0)\n+243DE9 Comment Length        0000 (0)\n+243DEB Disk Start            0000 (0)\n+243DED Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241AD6 Ext File Attributes   00000000 (0)\n-241ADA Local Header Offset   0020F46A (2159722)\n-241ADE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243DEF Ext File Attributes   00000000 (0)\n+243DF3 Local Header Offset   0021175F (2168671)\n+243DF7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241ADE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243DF7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241B19 CENTRAL HEADER #1988  02014B50 (33639248)\n-241B1D Created Zip Spec      14 (20) '2.0'\n-241B1E Created OS            00 (0) 'MS-DOS'\n-241B1F Extract Zip Spec      14 (20) '2.0'\n-241B20 Extract OS            00 (0) 'MS-DOS'\n-241B21 General Purpose Flag  0808 (2056)\n+243E32 CENTRAL HEADER #1988  02014B50 (33639248)\n+243E36 Created Zip Spec      14 (20) '2.0'\n+243E37 Created OS            00 (0) 'MS-DOS'\n+243E38 Extract Zip Spec      14 (20) '2.0'\n+243E39 Extract OS            00 (0) 'MS-DOS'\n+243E3A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241B23 Compression Method    0008 (8) 'Deflated'\n-241B25 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241B29 CRC                   4D30A945 (1295034693)\n-241B2D Compressed Size       00000086 (134)\n-241B31 Uncompressed Size     000001AF (431)\n-241B35 Filename Length       0042 (66)\n-241B37 Extra Length          0000 (0)\n-241B39 Comment Length        0000 (0)\n-241B3B Disk Start            0000 (0)\n-241B3D Int File Attributes   0000 (0)\n+243E3C Compression Method    0008 (8) 'Deflated'\n+243E3E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243E42 CRC                   4D30A945 (1295034693)\n+243E46 Compressed Size       00000086 (134)\n+243E4A Uncompressed Size     000001AF (431)\n+243E4E Filename Length       0042 (66)\n+243E50 Extra Length          0000 (0)\n+243E52 Comment Length        0000 (0)\n+243E54 Disk Start            0000 (0)\n+243E56 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241B3F Ext File Attributes   00000000 (0)\n-241B43 Local Header Offset   0020F56A (2159978)\n-241B47 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243E58 Ext File Attributes   00000000 (0)\n+243E5C Local Header Offset   0021185F (2168927)\n+243E60 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241B47: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243E60: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241B89 CENTRAL HEADER #1989  02014B50 (33639248)\n-241B8D Created Zip Spec      14 (20) '2.0'\n-241B8E Created OS            00 (0) 'MS-DOS'\n-241B8F Extract Zip Spec      14 (20) '2.0'\n-241B90 Extract OS            00 (0) 'MS-DOS'\n-241B91 General Purpose Flag  0808 (2056)\n+243EA2 CENTRAL HEADER #1989  02014B50 (33639248)\n+243EA6 Created Zip Spec      14 (20) '2.0'\n+243EA7 Created OS            00 (0) 'MS-DOS'\n+243EA8 Extract Zip Spec      14 (20) '2.0'\n+243EA9 Extract OS            00 (0) 'MS-DOS'\n+243EAA General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241B93 Compression Method    0008 (8) 'Deflated'\n-241B95 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241B99 CRC                   B1A9D94F (2980698447)\n-241B9D Compressed Size       00000058 (88)\n-241BA1 Uncompressed Size     000000AB (171)\n-241BA5 Filename Length       0048 (72)\n-241BA7 Extra Length          0000 (0)\n-241BA9 Comment Length        0000 (0)\n-241BAB Disk Start            0000 (0)\n-241BAD Int File Attributes   0000 (0)\n+243EAC Compression Method    0008 (8) 'Deflated'\n+243EAE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243EB2 CRC                   B1A9D94F (2980698447)\n+243EB6 Compressed Size       00000058 (88)\n+243EBA Uncompressed Size     000000AB (171)\n+243EBE Filename Length       0048 (72)\n+243EC0 Extra Length          0000 (0)\n+243EC2 Comment Length        0000 (0)\n+243EC4 Disk Start            0000 (0)\n+243EC6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241BAF Ext File Attributes   00000000 (0)\n-241BB3 Local Header Offset   0020F660 (2160224)\n-241BB7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243EC8 Ext File Attributes   00000000 (0)\n+243ECC Local Header Offset   00211955 (2169173)\n+243ED0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241BB7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243ED0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241BFF CENTRAL HEADER #1990  02014B50 (33639248)\n-241C03 Created Zip Spec      14 (20) '2.0'\n-241C04 Created OS            00 (0) 'MS-DOS'\n-241C05 Extract Zip Spec      14 (20) '2.0'\n-241C06 Extract OS            00 (0) 'MS-DOS'\n-241C07 General Purpose Flag  0808 (2056)\n+243F18 CENTRAL HEADER #1990  02014B50 (33639248)\n+243F1C Created Zip Spec      14 (20) '2.0'\n+243F1D Created OS            00 (0) 'MS-DOS'\n+243F1E Extract Zip Spec      14 (20) '2.0'\n+243F1F Extract OS            00 (0) 'MS-DOS'\n+243F20 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241C09 Compression Method    0008 (8) 'Deflated'\n-241C0B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241C0F CRC                   1CB10FC5 (481365957)\n-241C13 Compressed Size       0000004B (75)\n-241C17 Uncompressed Size     000000AB (171)\n-241C1B Filename Length       003C (60)\n-241C1D Extra Length          0000 (0)\n-241C1F Comment Length        0000 (0)\n-241C21 Disk Start            0000 (0)\n-241C23 Int File Attributes   0000 (0)\n+243F22 Compression Method    0008 (8) 'Deflated'\n+243F24 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243F28 CRC                   1CB10FC5 (481365957)\n+243F2C Compressed Size       0000004B (75)\n+243F30 Uncompressed Size     000000AB (171)\n+243F34 Filename Length       003C (60)\n+243F36 Extra Length          0000 (0)\n+243F38 Comment Length        0000 (0)\n+243F3A Disk Start            0000 (0)\n+243F3C Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241C25 Ext File Attributes   00000000 (0)\n-241C29 Local Header Offset   0020F72E (2160430)\n-241C2D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243F3E Ext File Attributes   00000000 (0)\n+243F42 Local Header Offset   00211A23 (2169379)\n+243F46 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241C2D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243F46: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241C69 CENTRAL HEADER #1991  02014B50 (33639248)\n-241C6D Created Zip Spec      14 (20) '2.0'\n-241C6E Created OS            00 (0) 'MS-DOS'\n-241C6F Extract Zip Spec      14 (20) '2.0'\n-241C70 Extract OS            00 (0) 'MS-DOS'\n-241C71 General Purpose Flag  0808 (2056)\n+243F82 CENTRAL HEADER #1991  02014B50 (33639248)\n+243F86 Created Zip Spec      14 (20) '2.0'\n+243F87 Created OS            00 (0) 'MS-DOS'\n+243F88 Extract Zip Spec      14 (20) '2.0'\n+243F89 Extract OS            00 (0) 'MS-DOS'\n+243F8A General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241C73 Compression Method    0008 (8) 'Deflated'\n-241C75 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241C79 CRC                   8738E283 (2268652163)\n-241C7D Compressed Size       0000002B (43)\n-241C81 Uncompressed Size     00000039 (57)\n-241C85 Filename Length       003F (63)\n-241C87 Extra Length          0000 (0)\n-241C89 Comment Length        0000 (0)\n-241C8B Disk Start            0000 (0)\n-241C8D Int File Attributes   0000 (0)\n+243F8C Compression Method    0008 (8) 'Deflated'\n+243F8E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243F92 CRC                   8738E283 (2268652163)\n+243F96 Compressed Size       0000002B (43)\n+243F9A Uncompressed Size     00000039 (57)\n+243F9E Filename Length       003F (63)\n+243FA0 Extra Length          0000 (0)\n+243FA2 Comment Length        0000 (0)\n+243FA4 Disk Start            0000 (0)\n+243FA6 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241C8F Ext File Attributes   00000000 (0)\n-241C93 Local Header Offset   0020F7E3 (2160611)\n-241C97 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+243FA8 Ext File Attributes   00000000 (0)\n+243FAC Local Header Offset   00211AD8 (2169560)\n+243FB0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241C97: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x243FB0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241CD6 CENTRAL HEADER #1992  02014B50 (33639248)\n-241CDA Created Zip Spec      14 (20) '2.0'\n-241CDB Created OS            00 (0) 'MS-DOS'\n-241CDC Extract Zip Spec      14 (20) '2.0'\n-241CDD Extract OS            00 (0) 'MS-DOS'\n-241CDE General Purpose Flag  0808 (2056)\n+243FEF CENTRAL HEADER #1992  02014B50 (33639248)\n+243FF3 Created Zip Spec      14 (20) '2.0'\n+243FF4 Created OS            00 (0) 'MS-DOS'\n+243FF5 Extract Zip Spec      14 (20) '2.0'\n+243FF6 Extract OS            00 (0) 'MS-DOS'\n+243FF7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241CE0 Compression Method    0008 (8) 'Deflated'\n-241CE2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241CE6 CRC                   02A8F678 (44627576)\n-241CEA Compressed Size       000000CF (207)\n-241CEE Uncompressed Size     000002CA (714)\n-241CF2 Filename Length       0041 (65)\n-241CF4 Extra Length          0000 (0)\n-241CF6 Comment Length        0000 (0)\n-241CF8 Disk Start            0000 (0)\n-241CFA Int File Attributes   0000 (0)\n+243FF9 Compression Method    0008 (8) 'Deflated'\n+243FFB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+243FFF CRC                   D0ECCA57 (3505179223)\n+244003 Compressed Size       000000CF (207)\n+244007 Uncompressed Size     000002CC (716)\n+24400B Filename Length       0041 (65)\n+24400D Extra Length          0000 (0)\n+24400F Comment Length        0000 (0)\n+244011 Disk Start            0000 (0)\n+244013 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241CFC Ext File Attributes   00000000 (0)\n-241D00 Local Header Offset   0020F87B (2160763)\n-241D04 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+244015 Ext File Attributes   00000000 (0)\n+244019 Local Header Offset   00211B70 (2169712)\n+24401D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241D04: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24401D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241D45 CENTRAL HEADER #1993  02014B50 (33639248)\n-241D49 Created Zip Spec      14 (20) '2.0'\n-241D4A Created OS            00 (0) 'MS-DOS'\n-241D4B Extract Zip Spec      14 (20) '2.0'\n-241D4C Extract OS            00 (0) 'MS-DOS'\n-241D4D General Purpose Flag  0808 (2056)\n+24405E CENTRAL HEADER #1993  02014B50 (33639248)\n+244062 Created Zip Spec      14 (20) '2.0'\n+244063 Created OS            00 (0) 'MS-DOS'\n+244064 Extract Zip Spec      14 (20) '2.0'\n+244065 Extract OS            00 (0) 'MS-DOS'\n+244066 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241D4F Compression Method    0008 (8) 'Deflated'\n-241D51 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241D55 CRC                   2EA22547 (782378311)\n-241D59 Compressed Size       00000031 (49)\n-241D5D Uncompressed Size     00000048 (72)\n-241D61 Filename Length       003E (62)\n-241D63 Extra Length          0000 (0)\n-241D65 Comment Length        0000 (0)\n-241D67 Disk Start            0000 (0)\n-241D69 Int File Attributes   0000 (0)\n+244068 Compression Method    0008 (8) 'Deflated'\n+24406A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24406E CRC                   2EA22547 (782378311)\n+244072 Compressed Size       00000031 (49)\n+244076 Uncompressed Size     00000048 (72)\n+24407A Filename Length       003E (62)\n+24407C Extra Length          0000 (0)\n+24407E Comment Length        0000 (0)\n+244080 Disk Start            0000 (0)\n+244082 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241D6B Ext File Attributes   00000000 (0)\n-241D6F Local Header Offset   0020F9B9 (2161081)\n-241D73 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+244084 Ext File Attributes   00000000 (0)\n+244088 Local Header Offset   00211CAE (2170030)\n+24408C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241D73: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24408C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241DB1 CENTRAL HEADER #1994  02014B50 (33639248)\n-241DB5 Created Zip Spec      14 (20) '2.0'\n-241DB6 Created OS            00 (0) 'MS-DOS'\n-241DB7 Extract Zip Spec      14 (20) '2.0'\n-241DB8 Extract OS            00 (0) 'MS-DOS'\n-241DB9 General Purpose Flag  0808 (2056)\n+2440CA CENTRAL HEADER #1994  02014B50 (33639248)\n+2440CE Created Zip Spec      14 (20) '2.0'\n+2440CF Created OS            00 (0) 'MS-DOS'\n+2440D0 Extract Zip Spec      14 (20) '2.0'\n+2440D1 Extract OS            00 (0) 'MS-DOS'\n+2440D2 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241DBB Compression Method    0008 (8) 'Deflated'\n-241DBD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241DC1 CRC                   19FFB665 (436188773)\n-241DC5 Compressed Size       00000073 (115)\n-241DC9 Uncompressed Size     00000144 (324)\n-241DCD Filename Length       003B (59)\n-241DCF Extra Length          0000 (0)\n-241DD1 Comment Length        0000 (0)\n-241DD3 Disk Start            0000 (0)\n-241DD5 Int File Attributes   0000 (0)\n+2440D4 Compression Method    0008 (8) 'Deflated'\n+2440D6 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2440DA CRC                   19FFB665 (436188773)\n+2440DE Compressed Size       00000073 (115)\n+2440E2 Uncompressed Size     00000144 (324)\n+2440E6 Filename Length       003B (59)\n+2440E8 Extra Length          0000 (0)\n+2440EA Comment Length        0000 (0)\n+2440EC Disk Start            0000 (0)\n+2440EE Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241DD7 Ext File Attributes   00000000 (0)\n-241DDB Local Header Offset   0020FA56 (2161238)\n-241DDF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2440F0 Ext File Attributes   00000000 (0)\n+2440F4 Local Header Offset   00211D4B (2170187)\n+2440F8 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241DDF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2440F8: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241E1A CENTRAL HEADER #1995  02014B50 (33639248)\n-241E1E Created Zip Spec      14 (20) '2.0'\n-241E1F Created OS            00 (0) 'MS-DOS'\n-241E20 Extract Zip Spec      14 (20) '2.0'\n-241E21 Extract OS            00 (0) 'MS-DOS'\n-241E22 General Purpose Flag  0808 (2056)\n+244133 CENTRAL HEADER #1995  02014B50 (33639248)\n+244137 Created Zip Spec      14 (20) '2.0'\n+244138 Created OS            00 (0) 'MS-DOS'\n+244139 Extract Zip Spec      14 (20) '2.0'\n+24413A Extract OS            00 (0) 'MS-DOS'\n+24413B General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241E24 Compression Method    0008 (8) 'Deflated'\n-241E26 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241E2A CRC                   1529E756 (355067734)\n-241E2E Compressed Size       0000007A (122)\n-241E32 Uncompressed Size     00000186 (390)\n-241E36 Filename Length       0040 (64)\n-241E38 Extra Length          0000 (0)\n-241E3A Comment Length        0000 (0)\n-241E3C Disk Start            0000 (0)\n-241E3E Int File Attributes   0000 (0)\n+24413D Compression Method    0008 (8) 'Deflated'\n+24413F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+244143 CRC                   77A9D190 (2007617936)\n+244147 Compressed Size       00000081 (129)\n+24414B Uncompressed Size     0000018E (398)\n+24414F Filename Length       0040 (64)\n+244151 Extra Length          0000 (0)\n+244153 Comment Length        0000 (0)\n+244155 Disk Start            0000 (0)\n+244157 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241E40 Ext File Attributes   00000000 (0)\n-241E44 Local Header Offset   0020FB32 (2161458)\n-241E48 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+244159 Ext File Attributes   00000000 (0)\n+24415D Local Header Offset   00211E27 (2170407)\n+244161 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241E48: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x244161: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241E88 CENTRAL HEADER #1996  02014B50 (33639248)\n-241E8C Created Zip Spec      14 (20) '2.0'\n-241E8D Created OS            00 (0) 'MS-DOS'\n-241E8E Extract Zip Spec      14 (20) '2.0'\n-241E8F Extract OS            00 (0) 'MS-DOS'\n-241E90 General Purpose Flag  0808 (2056)\n+2441A1 CENTRAL HEADER #1996  02014B50 (33639248)\n+2441A5 Created Zip Spec      14 (20) '2.0'\n+2441A6 Created OS            00 (0) 'MS-DOS'\n+2441A7 Extract Zip Spec      14 (20) '2.0'\n+2441A8 Extract OS            00 (0) 'MS-DOS'\n+2441A9 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241E92 Compression Method    0008 (8) 'Deflated'\n-241E94 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241E98 CRC                   CB89DDC8 (3414810056)\n-241E9C Compressed Size       00000088 (136)\n-241EA0 Uncompressed Size     000001C5 (453)\n-241EA4 Filename Length       004E (78)\n-241EA6 Extra Length          0000 (0)\n-241EA8 Comment Length        0000 (0)\n-241EAA Disk Start            0000 (0)\n-241EAC Int File Attributes   0000 (0)\n+2441AB Compression Method    0008 (8) 'Deflated'\n+2441AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2441B1 CRC                   E654BF14 (3864313620)\n+2441B5 Compressed Size       0000008A (138)\n+2441B9 Uncompressed Size     000001CB (459)\n+2441BD Filename Length       004E (78)\n+2441BF Extra Length          0000 (0)\n+2441C1 Comment Length        0000 (0)\n+2441C3 Disk Start            0000 (0)\n+2441C5 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241EAE Ext File Attributes   00000000 (0)\n-241EB2 Local Header Offset   0020FC1A (2161690)\n-241EB6 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2441C7 Ext File Attributes   00000000 (0)\n+2441CB Local Header Offset   00211F16 (2170646)\n+2441CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241EB6: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2441CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241F04 CENTRAL HEADER #1997  02014B50 (33639248)\n-241F08 Created Zip Spec      14 (20) '2.0'\n-241F09 Created OS            00 (0) 'MS-DOS'\n-241F0A Extract Zip Spec      14 (20) '2.0'\n-241F0B Extract OS            00 (0) 'MS-DOS'\n-241F0C General Purpose Flag  0808 (2056)\n+24421D CENTRAL HEADER #1997  02014B50 (33639248)\n+244221 Created Zip Spec      14 (20) '2.0'\n+244222 Created OS            00 (0) 'MS-DOS'\n+244223 Extract Zip Spec      14 (20) '2.0'\n+244224 Extract OS            00 (0) 'MS-DOS'\n+244225 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241F0E Compression Method    0008 (8) 'Deflated'\n-241F10 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241F14 CRC                   6AE7C3EE (1793573870)\n-241F18 Compressed Size       00000040 (64)\n-241F1C Uncompressed Size     0000006D (109)\n-241F20 Filename Length       003E (62)\n-241F22 Extra Length          0000 (0)\n-241F24 Comment Length        0000 (0)\n-241F26 Disk Start            0000 (0)\n-241F28 Int File Attributes   0000 (0)\n+244227 Compression Method    0008 (8) 'Deflated'\n+244229 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24422D CRC                   2318E723 (588834595)\n+244231 Compressed Size       00000041 (65)\n+244235 Uncompressed Size     0000006F (111)\n+244239 Filename Length       003E (62)\n+24423B Extra Length          0000 (0)\n+24423D Comment Length        0000 (0)\n+24423F Disk Start            0000 (0)\n+244241 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241F2A Ext File Attributes   00000000 (0)\n-241F2E Local Header Offset   0020FD1E (2161950)\n-241F32 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+244243 Ext File Attributes   00000000 (0)\n+244247 Local Header Offset   0021201C (2170908)\n+24424B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241F32: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24424B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241F70 CENTRAL HEADER #1998  02014B50 (33639248)\n-241F74 Created Zip Spec      14 (20) '2.0'\n-241F75 Created OS            00 (0) 'MS-DOS'\n-241F76 Extract Zip Spec      14 (20) '2.0'\n-241F77 Extract OS            00 (0) 'MS-DOS'\n-241F78 General Purpose Flag  0808 (2056)\n+244289 CENTRAL HEADER #1998  02014B50 (33639248)\n+24428D Created Zip Spec      14 (20) '2.0'\n+24428E Created OS            00 (0) 'MS-DOS'\n+24428F Extract Zip Spec      14 (20) '2.0'\n+244290 Extract OS            00 (0) 'MS-DOS'\n+244291 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241F7A Compression Method    0008 (8) 'Deflated'\n-241F7C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241F80 CRC                   8EA6DB6C (2393299820)\n-241F84 Compressed Size       00000055 (85)\n-241F88 Uncompressed Size     0000005C (92)\n-241F8C Filename Length       0049 (73)\n-241F8E Extra Length          0000 (0)\n-241F90 Comment Length        0000 (0)\n-241F92 Disk Start            0000 (0)\n-241F94 Int File Attributes   0000 (0)\n+244293 Compression Method    0008 (8) 'Deflated'\n+244295 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+244299 CRC                   9A25D8A3 (2586171555)\n+24429D Compressed Size       00000057 (87)\n+2442A1 Uncompressed Size     0000005E (94)\n+2442A5 Filename Length       0049 (73)\n+2442A7 Extra Length          0000 (0)\n+2442A9 Comment Length        0000 (0)\n+2442AB Disk Start            0000 (0)\n+2442AD Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-241F96 Ext File Attributes   00000000 (0)\n-241F9A Local Header Offset   0020FDCA (2162122)\n-241F9E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2442AF Ext File Attributes   00000000 (0)\n+2442B3 Local Header Offset   002120C9 (2171081)\n+2442B7 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x241F9E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2442B7: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-241FE7 CENTRAL HEADER #1999  02014B50 (33639248)\n-241FEB Created Zip Spec      14 (20) '2.0'\n-241FEC Created OS            00 (0) 'MS-DOS'\n-241FED Extract Zip Spec      14 (20) '2.0'\n-241FEE Extract OS            00 (0) 'MS-DOS'\n-241FEF General Purpose Flag  0808 (2056)\n+244300 CENTRAL HEADER #1999  02014B50 (33639248)\n+244304 Created Zip Spec      14 (20) '2.0'\n+244305 Created OS            00 (0) 'MS-DOS'\n+244306 Extract Zip Spec      14 (20) '2.0'\n+244307 Extract OS            00 (0) 'MS-DOS'\n+244308 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-241FF1 Compression Method    0008 (8) 'Deflated'\n-241FF3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-241FF7 CRC                   C4255C66 (3290782822)\n-241FFB Compressed Size       0000004F (79)\n-241FFF Uncompressed Size     00000058 (88)\n-242003 Filename Length       0049 (73)\n-242005 Extra Length          0000 (0)\n-242007 Comment Length        0000 (0)\n-242009 Disk Start            0000 (0)\n-24200B Int File Attributes   0000 (0)\n+24430A Compression Method    0008 (8) 'Deflated'\n+24430C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+244310 CRC                   C4255C66 (3290782822)\n+244314 Compressed Size       0000004F (79)\n+244318 Uncompressed Size     00000058 (88)\n+24431C Filename Length       0049 (73)\n+24431E Extra Length          0000 (0)\n+244320 Comment Length        0000 (0)\n+244322 Disk Start            0000 (0)\n+244324 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-24200D Ext File Attributes   00000000 (0)\n-242011 Local Header Offset   0020FE96 (2162326)\n-242015 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+244326 Ext File Attributes   00000000 (0)\n+24432A Local Header Offset   00212197 (2171287)\n+24432E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x242015: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24432E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-24205E CENTRAL HEADER #2000  02014B50 (33639248)\n-242062 Created Zip Spec      14 (20) '2.0'\n-242063 Created OS            00 (0) 'MS-DOS'\n-242064 Extract Zip Spec      14 (20) '2.0'\n-242065 Extract OS            00 (0) 'MS-DOS'\n-242066 General Purpose Flag  0808 (2056)\n+244377 CENTRAL HEADER #2000  02014B50 (33639248)\n+24437B Created Zip Spec      14 (20) '2.0'\n+24437C Created OS            00 (0) 'MS-DOS'\n+24437D Extract Zip Spec      14 (20) '2.0'\n+24437E Extract OS            00 (0) 'MS-DOS'\n+24437F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-242068 Compression Method    0008 (8) 'Deflated'\n-24206A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-24206E CRC                   8141260E (2168530446)\n-242072 Compressed Size       00000060 (96)\n-242076 Uncompressed Size     00000096 (150)\n-24207A Filename Length       0044 (68)\n-24207C Extra Length          0000 (0)\n-24207E Comment Length        0000 (0)\n-242080 Disk Start            0000 (0)\n-242082 Int File Attributes   0000 (0)\n+244381 Compression Method    0008 (8) 'Deflated'\n+244383 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+244387 CRC                   8141260E (2168530446)\n+24438B Compressed Size       00000060 (96)\n+24438F Uncompressed Size     00000096 (150)\n+244393 Filename Length       0044 (68)\n+244395 Extra Length          0000 (0)\n+244397 Comment Length        0000 (0)\n+244399 Disk Start            0000 (0)\n+24439B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-242084 Ext File Attributes   00000000 (0)\n-242088 Local Header Offset   0020FF5C (2162524)\n-24208C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24439D Ext File Attributes   00000000 (0)\n+2443A1 Local Header Offset   0021225D (2171485)\n+2443A5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x24208C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2443A5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2420D0 CENTRAL HEADER #2001  02014B50 (33639248)\n-2420D4 Created Zip Spec      14 (20) '2.0'\n-2420D5 Created OS            00 (0) 'MS-DOS'\n-2420D6 Extract Zip Spec      14 (20) '2.0'\n-2420D7 Extract OS            00 (0) 'MS-DOS'\n-2420D8 General Purpose Flag  0808 (2056)\n+2443E9 CENTRAL HEADER #2001  02014B50 (33639248)\n+2443ED Created Zip Spec      14 (20) '2.0'\n+2443EE Created OS            00 (0) 'MS-DOS'\n+2443EF Extract Zip Spec      14 (20) '2.0'\n+2443F0 Extract OS            00 (0) 'MS-DOS'\n+2443F1 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2420DA Compression Method    0008 (8) 'Deflated'\n-2420DC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2420E0 CRC                   20C66B35 (549874485)\n-2420E4 Compressed Size       000000A6 (166)\n-2420E8 Uncompressed Size     0000024E (590)\n-2420EC Filename Length       0050 (80)\n-2420EE Extra Length          0000 (0)\n-2420F0 Comment Length        0000 (0)\n-2420F2 Disk Start            0000 (0)\n-2420F4 Int File Attributes   0000 (0)\n+2443F3 Compression Method    0008 (8) 'Deflated'\n+2443F5 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2443F9 CRC                   20C66B35 (549874485)\n+2443FD Compressed Size       000000A6 (166)\n+244401 Uncompressed Size     0000024E (590)\n+244405 Filename Length       0050 (80)\n+244407 Extra Length          0000 (0)\n+244409 Comment Length        0000 (0)\n+24440B Disk Start            0000 (0)\n+24440D Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2420F6 Ext File Attributes   00000000 (0)\n-2420FA Local Header Offset   0021002E (2162734)\n-2420FE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24440F Ext File Attributes   00000000 (0)\n+244413 Local Header Offset   0021232F (2171695)\n+244417 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2420FE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x244417: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-24214E CENTRAL HEADER #2002  02014B50 (33639248)\n-242152 Created Zip Spec      14 (20) '2.0'\n-242153 Created OS            00 (0) 'MS-DOS'\n-242154 Extract Zip Spec      14 (20) '2.0'\n-242155 Extract OS            00 (0) 'MS-DOS'\n-242156 General Purpose Flag  0808 (2056)\n+244467 CENTRAL HEADER #2002  02014B50 (33639248)\n+24446B Created Zip Spec      14 (20) '2.0'\n+24446C Created OS            00 (0) 'MS-DOS'\n+24446D Extract Zip Spec      14 (20) '2.0'\n+24446E Extract OS            00 (0) 'MS-DOS'\n+24446F General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-242158 Compression Method    0008 (8) 'Deflated'\n-24215A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-24215E CRC                   06C4AA00 (113551872)\n-242162 Compressed Size       000000AE (174)\n-242166 Uncompressed Size     00000251 (593)\n-24216A Filename Length       0049 (73)\n-24216C Extra Length          0000 (0)\n-24216E Comment Length        0000 (0)\n-242170 Disk Start            0000 (0)\n-242172 Int File Attributes   0000 (0)\n+244471 Compression Method    0008 (8) 'Deflated'\n+244473 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+244477 CRC                   5A07C547 (1510458695)\n+24447B Compressed Size       000000B3 (179)\n+24447F Uncompressed Size     00000252 (594)\n+244483 Filename Length       0049 (73)\n+244485 Extra Length          0000 (0)\n+244487 Comment Length        0000 (0)\n+244489 Disk Start            0000 (0)\n+24448B Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-242174 Ext File Attributes   00000000 (0)\n-242178 Local Header Offset   00210152 (2163026)\n-24217C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24448D Ext File Attributes   00000000 (0)\n+244491 Local Header Offset   00212453 (2171987)\n+244495 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x24217C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x244495: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2421C5 CENTRAL HEADER #2003  02014B50 (33639248)\n-2421C9 Created Zip Spec      14 (20) '2.0'\n-2421CA Created OS            00 (0) 'MS-DOS'\n-2421CB Extract Zip Spec      14 (20) '2.0'\n-2421CC Extract OS            00 (0) 'MS-DOS'\n-2421CD General Purpose Flag  0808 (2056)\n+2444DE CENTRAL HEADER #2003  02014B50 (33639248)\n+2444E2 Created Zip Spec      14 (20) '2.0'\n+2444E3 Created OS            00 (0) 'MS-DOS'\n+2444E4 Extract Zip Spec      14 (20) '2.0'\n+2444E5 Extract OS            00 (0) 'MS-DOS'\n+2444E6 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2421CF Compression Method    0008 (8) 'Deflated'\n-2421D1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2421D5 CRC                   9BBB9DE9 (2612764137)\n-2421D9 Compressed Size       00000062 (98)\n-2421DD Uncompressed Size     00000114 (276)\n-2421E1 Filename Length       0050 (80)\n-2421E3 Extra Length          0000 (0)\n-2421E5 Comment Length        0000 (0)\n-2421E7 Disk Start            0000 (0)\n-2421E9 Int File Attributes   0000 (0)\n+2444E8 Compression Method    0008 (8) 'Deflated'\n+2444EA Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2444EE CRC                   83E117A1 (2212566945)\n+2444F2 Compressed Size       00000065 (101)\n+2444F6 Uncompressed Size     00000117 (279)\n+2444FA Filename Length       0050 (80)\n+2444FC Extra Length          0000 (0)\n+2444FE Comment Length        0000 (0)\n+244500 Disk Start            0000 (0)\n+244502 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2421EB Ext File Attributes   00000000 (0)\n-2421EF Local Header Offset   00210277 (2163319)\n-2421F3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+244504 Ext File Attributes   00000000 (0)\n+244508 Local Header Offset   0021257D (2172285)\n+24450C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2421F3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24450C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-242243 CENTRAL HEADER #2004  02014B50 (33639248)\n-242247 Created Zip Spec      14 (20) '2.0'\n-242248 Created OS            00 (0) 'MS-DOS'\n-242249 Extract Zip Spec      14 (20) '2.0'\n-24224A Extract OS            00 (0) 'MS-DOS'\n-24224B General Purpose Flag  0808 (2056)\n+24455C CENTRAL HEADER #2004  02014B50 (33639248)\n+244560 Created Zip Spec      14 (20) '2.0'\n+244561 Created OS            00 (0) 'MS-DOS'\n+244562 Extract Zip Spec      14 (20) '2.0'\n+244563 Extract OS            00 (0) 'MS-DOS'\n+244564 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-24224D Compression Method    0008 (8) 'Deflated'\n-24224F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-242253 CRC                   FF8F0A93 (4287564435)\n-242257 Compressed Size       00000053 (83)\n-24225B Uncompressed Size     000000A2 (162)\n-24225F Filename Length       003C (60)\n-242261 Extra Length          0000 (0)\n-242263 Comment Length        0000 (0)\n-242265 Disk Start            0000 (0)\n-242267 Int File Attributes   0000 (0)\n+244566 Compression Method    0008 (8) 'Deflated'\n+244568 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24456C CRC                   D55F5F8C (3579797388)\n+244570 Compressed Size       00000055 (85)\n+244574 Uncompressed Size     000000A3 (163)\n+244578 Filename Length       003C (60)\n+24457A Extra Length          0000 (0)\n+24457C Comment Length        0000 (0)\n+24457E Disk Start            0000 (0)\n+244580 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-242269 Ext File Attributes   00000000 (0)\n-24226D Local Header Offset   00210357 (2163543)\n-242271 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+244582 Ext File Attributes   00000000 (0)\n+244586 Local Header Offset   00212660 (2172512)\n+24458A Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x242271: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24458A: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2422AD CENTRAL HEADER #2005  02014B50 (33639248)\n-2422B1 Created Zip Spec      14 (20) '2.0'\n-2422B2 Created OS            00 (0) 'MS-DOS'\n-2422B3 Extract Zip Spec      14 (20) '2.0'\n-2422B4 Extract OS            00 (0) 'MS-DOS'\n-2422B5 General Purpose Flag  0808 (2056)\n+2445C6 CENTRAL HEADER #2005  02014B50 (33639248)\n+2445CA Created Zip Spec      14 (20) '2.0'\n+2445CB Created OS            00 (0) 'MS-DOS'\n+2445CC Extract Zip Spec      14 (20) '2.0'\n+2445CD Extract OS            00 (0) 'MS-DOS'\n+2445CE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2422B7 Compression Method    0008 (8) 'Deflated'\n-2422B9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2422BD CRC                   F65F4647 (4133439047)\n-2422C1 Compressed Size       000000B8 (184)\n-2422C5 Uncompressed Size     0000027D (637)\n-2422C9 Filename Length       0052 (82)\n-2422CB Extra Length          0000 (0)\n-2422CD Comment Length        0000 (0)\n-2422CF Disk Start            0000 (0)\n-2422D1 Int File Attributes   0000 (0)\n+2445D0 Compression Method    0008 (8) 'Deflated'\n+2445D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2445D6 CRC                   A80508FF (2818902271)\n+2445DA Compressed Size       000000BB (187)\n+2445DE Uncompressed Size     00000283 (643)\n+2445E2 Filename Length       0052 (82)\n+2445E4 Extra Length          0000 (0)\n+2445E6 Comment Length        0000 (0)\n+2445E8 Disk Start            0000 (0)\n+2445EA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2422D3 Ext File Attributes   00000000 (0)\n-2422D7 Local Header Offset   00210414 (2163732)\n-2422DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2445EC Ext File Attributes   00000000 (0)\n+2445F0 Local Header Offset   0021271F (2172703)\n+2445F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2422DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2445F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-24232D CENTRAL HEADER #2006  02014B50 (33639248)\n-242331 Created Zip Spec      14 (20) '2.0'\n-242332 Created OS            00 (0) 'MS-DOS'\n-242333 Extract Zip Spec      14 (20) '2.0'\n-242334 Extract OS            00 (0) 'MS-DOS'\n-242335 General Purpose Flag  0808 (2056)\n+244646 CENTRAL HEADER #2006  02014B50 (33639248)\n+24464A Created Zip Spec      14 (20) '2.0'\n+24464B Created OS            00 (0) 'MS-DOS'\n+24464C Extract Zip Spec      14 (20) '2.0'\n+24464D Extract OS            00 (0) 'MS-DOS'\n+24464E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-242337 Compression Method    0008 (8) 'Deflated'\n-242339 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-24233D CRC                   A52CE8E2 (2771183842)\n-242341 Compressed Size       0000005F (95)\n-242345 Uncompressed Size     000000B1 (177)\n-242349 Filename Length       005B (91)\n-24234B Extra Length          0000 (0)\n-24234D Comment Length        0000 (0)\n-24234F Disk Start            0000 (0)\n-242351 Int File Attributes   0000 (0)\n+244650 Compression Method    0008 (8) 'Deflated'\n+244652 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+244656 CRC                   2D09B871 (755611761)\n+24465A Compressed Size       00000063 (99)\n+24465E Uncompressed Size     000000B2 (178)\n+244662 Filename Length       005B (91)\n+244664 Extra Length          0000 (0)\n+244666 Comment Length        0000 (0)\n+244668 Disk Start            0000 (0)\n+24466A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-242353 Ext File Attributes   00000000 (0)\n-242357 Local Header Offset   0021054C (2164044)\n-24235B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24466C Ext File Attributes   00000000 (0)\n+244670 Local Header Offset   0021285A (2173018)\n+244674 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x24235B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x244674: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2423B6 CENTRAL HEADER #2007  02014B50 (33639248)\n-2423BA Created Zip Spec      14 (20) '2.0'\n-2423BB Created OS            00 (0) 'MS-DOS'\n-2423BC Extract Zip Spec      14 (20) '2.0'\n-2423BD Extract OS            00 (0) 'MS-DOS'\n-2423BE General Purpose Flag  0808 (2056)\n+2446CF CENTRAL HEADER #2007  02014B50 (33639248)\n+2446D3 Created Zip Spec      14 (20) '2.0'\n+2446D4 Created OS            00 (0) 'MS-DOS'\n+2446D5 Extract Zip Spec      14 (20) '2.0'\n+2446D6 Extract OS            00 (0) 'MS-DOS'\n+2446D7 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2423C0 Compression Method    0008 (8) 'Deflated'\n-2423C2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2423C6 CRC                   FDF4851E (4260660510)\n-2423CA Compressed Size       000000AE (174)\n-2423CE Uncompressed Size     00000313 (787)\n-2423D2 Filename Length       0041 (65)\n-2423D4 Extra Length          0000 (0)\n-2423D6 Comment Length        0000 (0)\n-2423D8 Disk Start            0000 (0)\n-2423DA Int File Attributes   0000 (0)\n+2446D9 Compression Method    0008 (8) 'Deflated'\n+2446DB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2446DF CRC                   5208AFC5 (1376300997)\n+2446E3 Compressed Size       000000B0 (176)\n+2446E7 Uncompressed Size     0000031D (797)\n+2446EB Filename Length       0041 (65)\n+2446ED Extra Length          0000 (0)\n+2446EF Comment Length        0000 (0)\n+2446F1 Disk Start            0000 (0)\n+2446F3 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2423DC Ext File Attributes   00000000 (0)\n-2423E0 Local Header Offset   00210634 (2164276)\n-2423E4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2446F5 Ext File Attributes   00000000 (0)\n+2446F9 Local Header Offset   00212946 (2173254)\n+2446FD Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2423E4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2446FD: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-242425 CENTRAL HEADER #2008  02014B50 (33639248)\n-242429 Created Zip Spec      14 (20) '2.0'\n-24242A Created OS            00 (0) 'MS-DOS'\n-24242B Extract Zip Spec      14 (20) '2.0'\n-24242C Extract OS            00 (0) 'MS-DOS'\n-24242D General Purpose Flag  0808 (2056)\n+24473E CENTRAL HEADER #2008  02014B50 (33639248)\n+244742 Created Zip Spec      14 (20) '2.0'\n+244743 Created OS            00 (0) 'MS-DOS'\n+244744 Extract Zip Spec      14 (20) '2.0'\n+244745 Extract OS            00 (0) 'MS-DOS'\n+244746 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-24242F Compression Method    0008 (8) 'Deflated'\n-242431 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-242435 CRC                   558BF598 (1435235736)\n-242439 Compressed Size       000000C6 (198)\n-24243D Uncompressed Size     000003FF (1023)\n-242441 Filename Length       0054 (84)\n-242443 Extra Length          0000 (0)\n-242445 Comment Length        0000 (0)\n-242447 Disk Start            0000 (0)\n-242449 Int File Attributes   0000 (0)\n+244748 Compression Method    0008 (8) 'Deflated'\n+24474A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+24474E CRC                   7A6F7ED2 (2054127314)\n+244752 Compressed Size       000000C9 (201)\n+244756 Uncompressed Size     0000040B (1035)\n+24475A Filename Length       0054 (84)\n+24475C Extra Length          0000 (0)\n+24475E Comment Length        0000 (0)\n+244760 Disk Start            0000 (0)\n+244762 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-24244B Ext File Attributes   00000000 (0)\n-24244F Local Header Offset   00210751 (2164561)\n-242453 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+244764 Ext File Attributes   00000000 (0)\n+244768 Local Header Offset   00212A65 (2173541)\n+24476C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x242453: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x24476C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2424A7 CENTRAL HEADER #2009  02014B50 (33639248)\n-2424AB Created Zip Spec      14 (20) '2.0'\n-2424AC Created OS            00 (0) 'MS-DOS'\n-2424AD Extract Zip Spec      14 (20) '2.0'\n-2424AE Extract OS            00 (0) 'MS-DOS'\n-2424AF General Purpose Flag  0808 (2056)\n+2447C0 CENTRAL HEADER #2009  02014B50 (33639248)\n+2447C4 Created Zip Spec      14 (20) '2.0'\n+2447C5 Created OS            00 (0) 'MS-DOS'\n+2447C6 Extract Zip Spec      14 (20) '2.0'\n+2447C7 Extract OS            00 (0) 'MS-DOS'\n+2447C8 General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2424B1 Compression Method    0008 (8) 'Deflated'\n-2424B3 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2424B7 CRC                   496A27A1 (1231693729)\n-2424BB Compressed Size       000000D3 (211)\n-2424BF Uncompressed Size     000002CC (716)\n-2424C3 Filename Length       0058 (88)\n-2424C5 Extra Length          0000 (0)\n-2424C7 Comment Length        0000 (0)\n-2424C9 Disk Start            0000 (0)\n-2424CB Int File Attributes   0000 (0)\n+2447CA Compression Method    0008 (8) 'Deflated'\n+2447CC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2447D0 CRC                   F21C5285 (4061942405)\n+2447D4 Compressed Size       000000D6 (214)\n+2447D8 Uncompressed Size     000002D5 (725)\n+2447DC Filename Length       0058 (88)\n+2447DE Extra Length          0000 (0)\n+2447E0 Comment Length        0000 (0)\n+2447E2 Disk Start            0000 (0)\n+2447E4 Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2424CD Ext File Attributes   00000000 (0)\n-2424D1 Local Header Offset   00210899 (2164889)\n-2424D5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2447E6 Ext File Attributes   00000000 (0)\n+2447EA Local Header Offset   00212BB0 (2173872)\n+2447EE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2424D5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2447EE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-24252D CENTRAL HEADER #2010  02014B50 (33639248)\n-242531 Created Zip Spec      14 (20) '2.0'\n-242532 Created OS            00 (0) 'MS-DOS'\n-242533 Extract Zip Spec      14 (20) '2.0'\n-242534 Extract OS            00 (0) 'MS-DOS'\n-242535 General Purpose Flag  0808 (2056)\n+244846 CENTRAL HEADER #2010  02014B50 (33639248)\n+24484A Created Zip Spec      14 (20) '2.0'\n+24484B Created OS            00 (0) 'MS-DOS'\n+24484C Extract Zip Spec      14 (20) '2.0'\n+24484D Extract OS            00 (0) 'MS-DOS'\n+24484E General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-242537 Compression Method    0008 (8) 'Deflated'\n-242539 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-24253D CRC                   5B1D6790 (1528653712)\n-242541 Compressed Size       0000006C (108)\n-242545 Uncompressed Size     000000B7 (183)\n-242549 Filename Length       0052 (82)\n-24254B Extra Length          0000 (0)\n-24254D Comment Length        0000 (0)\n-24254F Disk Start            0000 (0)\n-242551 Int File Attributes   0000 (0)\n+244850 Compression Method    0008 (8) 'Deflated'\n+244852 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+244856 CRC                   7F686F44 (2137550660)\n+24485A Compressed Size       0000006F (111)\n+24485E Uncompressed Size     000000B9 (185)\n+244862 Filename Length       0052 (82)\n+244864 Extra Length          0000 (0)\n+244866 Comment Length        0000 (0)\n+244868 Disk Start            0000 (0)\n+24486A Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-242553 Ext File Attributes   00000000 (0)\n-242557 Local Header Offset   002109F2 (2165234)\n-24255B Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+24486C Ext File Attributes   00000000 (0)\n+244870 Local Header Offset   00212D0C (2174220)\n+244874 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x24255B: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x244874: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2425AD CENTRAL HEADER #2011  02014B50 (33639248)\n-2425B1 Created Zip Spec      14 (20) '2.0'\n-2425B2 Created OS            00 (0) 'MS-DOS'\n-2425B3 Extract Zip Spec      14 (20) '2.0'\n-2425B4 Extract OS            00 (0) 'MS-DOS'\n-2425B5 General Purpose Flag  0808 (2056)\n+2448C6 CENTRAL HEADER #2011  02014B50 (33639248)\n+2448CA Created Zip Spec      14 (20) '2.0'\n+2448CB Created OS            00 (0) 'MS-DOS'\n+2448CC Extract Zip Spec      14 (20) '2.0'\n+2448CD Extract OS            00 (0) 'MS-DOS'\n+2448CE General Purpose Flag  0808 (2056)\n        [Bits 1-2]            0 'Normal Compression'\n        [Bit  3]              1 'Streamed'\n        [Bit 11]              1 'Language Encoding'\n-2425B7 Compression Method    0008 (8) 'Deflated'\n-2425B9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2425BD CRC                   89A6CE58 (2309410392)\n-2425C1 Compressed Size       00000053 (83)\n-2425C5 Uncompressed Size     00000161 (353)\n-2425C9 Filename Length       0043 (67)\n-2425CB Extra Length          0000 (0)\n-2425CD Comment Length        0000 (0)\n-2425CF Disk Start            0000 (0)\n-2425D1 Int File Attributes   0000 (0)\n+2448D0 Compression Method    0008 (8) 'Deflated'\n+2448D2 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2448D6 CRC                   299613D2 (697701330)\n+2448DA Compressed Size       0000004F (79)\n+2448DE Uncompressed Size     000000B2 (178)\n+2448E2 Filename Length       0043 (67)\n+2448E4 Extra Length          0000 (0)\n+2448E6 Comment Length        0000 (0)\n+2448E8 Disk Start            0000 (0)\n+2448EA Int File Attributes   0000 (0)\n        [Bit 0]               0 'Binary Data'\n-2425D3 Ext File Attributes   00000000 (0)\n-2425D7 Local Header Offset   00210ADE (2165470)\n-2425DB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2448EC Ext File Attributes   00000000 (0)\n+2448F0 Local Header Offset   00212DFB (2174459)\n+2448F4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2425DB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2448F4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-24261E END CENTRAL HEADER    06054B50 (101010256)\n-242622 Number of this disk   0000 (0)\n-242624 Central Dir Disk no   0000 (0)\n-242626 Entries in this disk  07DB (2011)\n-242628 Total Entries         07DB (2011)\n-24262A Size of Central Dir   00031A7C (203388)\n-24262E Offset to Central Dir 00210BA2 (2165666)\n-242632 Comment Length        0000 (0)\n+244937 END CENTRAL HEADER    06054B50 (101010256)\n+24493B Number of this disk   0000 (0)\n+24493D Central Dir Disk no   0000 (0)\n+24493F Entries in this disk  07DB (2011)\n+244941 Total Entries         07DB (2011)\n+244943 Size of Central Dir   00031A7C (203388)\n+244947 Offset to Central Dir 00212EBB (2174651)\n+24494B Comment Length        0000 (0)\n #\n # Warning Count: 4022\n #\n # Done\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo/pom.xml", "unified_diff": null, "details": [{"source1": "META-INF/maven/org.apache.dubbo/dubbo/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo/pom.xml", "unified_diff": "@@ -279,20 +279,20 @@\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-registry-etcd3</artifactId>\n       <version>${project.version}</version>\n       <scope>compile</scope>\n       <exclusions>\n         <exclusion>\n-          <artifactId>grpc-core</artifactId>\n           <groupId>io.grpc</groupId>\n+          <artifactId>grpc-core</artifactId>\n         </exclusion>\n         <exclusion>\n-          <artifactId>grpc-netty</artifactId>\n           <groupId>io.grpc</groupId>\n+          <artifactId>grpc-netty</artifactId>\n         </exclusion>\n       </exclusions>\n       <optional>true</optional>\n     </dependency>\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-registry-eureka</artifactId>\n@@ -471,20 +471,20 @@\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-configcenter-etcd</artifactId>\n       <version>${project.version}</version>\n       <scope>compile</scope>\n       <exclusions>\n         <exclusion>\n-          <artifactId>grpc-core</artifactId>\n           <groupId>io.grpc</groupId>\n+          <artifactId>grpc-core</artifactId>\n         </exclusion>\n         <exclusion>\n-          <artifactId>grpc-netty</artifactId>\n           <groupId>io.grpc</groupId>\n+          <artifactId>grpc-netty</artifactId>\n         </exclusion>\n       </exclusions>\n       <optional>true</optional>\n     </dependency>\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-compatible</artifactId>\n@@ -529,20 +529,20 @@\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-metadata-report-etcd</artifactId>\n       <version>${project.version}</version>\n       <scope>compile</scope>\n       <exclusions>\n         <exclusion>\n-          <artifactId>grpc-core</artifactId>\n           <groupId>io.grpc</groupId>\n+          <artifactId>grpc-core</artifactId>\n         </exclusion>\n         <exclusion>\n-          <artifactId>grpc-netty</artifactId>\n           <groupId>io.grpc</groupId>\n+          <artifactId>grpc-netty</artifactId>\n         </exclusion>\n       </exclusions>\n       <optional>true</optional>\n     </dependency>\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-metadata-report-nacos</artifactId>\n@@ -882,51 +882,23 @@\n   <profiles>\n     <profile>\n       <id>release</id>\n       <build>\n         <plugins>\n           <plugin>\n             <artifactId>maven-javadoc-plugin</artifactId>\n-            <version>3.2.0</version>\n+            <version>${maven_javadoc_version}</version>\n             <executions>\n               <execution>\n                 <id>attach-javadoc</id>\n                 <goals>\n                   <goal>jar</goal>\n-                  <goal>aggregate</goal>\n                 </goals>\n                 <configuration>\n                   <doclint>none</doclint>\n-                  <additionalDependencies>\n-                    <additionalDependency>\n-                      <groupId>org.apache.logging.log4j</groupId>\n-                      <artifactId>log4j-api</artifactId>\n-                      <version>2.11.1</version>\n-                    </additionalDependency>\n-                    <additionalDependency>\n-                      <groupId>org.apache.logging.log4j</groupId>\n-                      <artifactId>log4j-core</artifactId>\n-                      <version>2.11.1</version>\n-                    </additionalDependency>\n-                  </additionalDependencies>\n-                  <includeDependencySources>true</includeDependencySources>\n-                  <dependencySourceIncludes>\n-                    <dependencySourceInclude>org.apache.dubbo:dubbo-*</dependencySourceInclude>\n-                    <dependencySourceExclude>com.alibaba:hessian-*</dependencySourceExclude>\n-                  </dependencySourceIncludes>\n-                  <show>public</show>\n-                  <charset>UTF-8</charset>\n-                  <encoding>UTF-8</encoding>\n-                  <docencoding>UTF-8</docencoding>\n-                  <links>\n-                    <link>http://docs.oracle.com/javase/7/docs/api</link>\n-                  </links>\n-                  <excludePackageNames>org.apache.dubbo.demo,org.apache.dubbo.demo.*</excludePackageNames>\n-                  <doctitle>Apache Dubbo 2.7.10 API</doctitle>\n-                  <windowtitle>Apache Dubbo 2.7.10 API</windowtitle>\n                 </configuration>\n               </execution>\n             </executions>\n             <configuration>\n               <includeDependencySources>true</includeDependencySources>\n               <dependencySourceIncludes>\n                 <dependencySourceInclude>org.apache.dubbo:dubbo-*</dependencySourceInclude>\n@@ -935,23 +907,23 @@\n               <show>public</show>\n               <charset>UTF-8</charset>\n               <encoding>UTF-8</encoding>\n               <docencoding>UTF-8</docencoding>\n               <links>\n                 <link>http://docs.oracle.com/javase/7/docs/api</link>\n               </links>\n-              <doclint>none</doclint>\n-              <excludePackageNames>org.apache.dubbo.demo,org.apache.dubbo.demo.*</excludePackageNames>\n-              <doctitle>Apache Dubbo 2.7.10 API</doctitle>\n-              <windowtitle>Apache Dubbo 2.7.10 API</windowtitle>\n             </configuration>\n           </plugin>\n         </plugins>\n       </build>\n       <properties>\n-        <os.detected.name>windows</os.detected.name>\n-        <os.detected.classifier>windows-x86_64</os.detected.classifier>\n+        <os.detected.release.version>22.04</os.detected.release.version>\n+        <os.detected.release.like.ubuntu>true</os.detected.release.like.ubuntu>\n+        <os.detected.release>ubuntu</os.detected.release>\n+        <os.detected.name>linux</os.detected.name>\n+        <os.detected.release.like.debian>true</os.detected.release.like.debian>\n+        <os.detected.classifier>linux-x86_64</os.detected.classifier>\n         <os.detected.arch>x86_64</os.detected.arch>\n       </properties>\n     </profile>\n   </profiles>\n </project>\n"}]}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-config-api/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-config-api/pom.xml", "unified_diff": null, "details": [{"source1": "META-INF/maven/org.apache.dubbo/dubbo-config-api/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-config-api/pom.xml", "comments": ["Ordering differences only"], "unified_diff": "@@ -130,16 +130,16 @@\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-registry-eureka</artifactId>\n       <version>${project.parent.version}</version>\n       <scope>test</scope>\n       <exclusions>\n         <exclusion>\n-          <artifactId>guava</artifactId>\n           <groupId>com.google.guava</groupId>\n+          <artifactId>guava</artifactId>\n         </exclusion>\n       </exclusions>\n     </dependency>\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-registry-etcd3</artifactId>\n       <version>${project.parent.version}</version>\n@@ -154,16 +154,16 @@\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-metadata-report-zookeeper</artifactId>\n       <version>${project.parent.version}</version>\n       <scope>test</scope>\n       <exclusions>\n         <exclusion>\n-          <artifactId>guava</artifactId>\n           <groupId>com.google.guava</groupId>\n+          <artifactId>guava</artifactId>\n         </exclusion>\n       </exclusions>\n     </dependency>\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-metadata-report-etcd</artifactId>\n       <version>${project.parent.version}</version>\n@@ -172,16 +172,16 @@\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-metadata-report-nacos</artifactId>\n       <version>${project.parent.version}</version>\n       <scope>test</scope>\n       <exclusions>\n         <exclusion>\n-          <artifactId>guava</artifactId>\n           <groupId>com.google.guava</groupId>\n+          <artifactId>guava</artifactId>\n         </exclusion>\n       </exclusions>\n     </dependency>\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-metadata-report-consul</artifactId>\n       <version>${project.parent.version}</version>\n@@ -202,16 +202,16 @@\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-configcenter-nacos</artifactId>\n       <version>${project.parent.version}</version>\n       <scope>test</scope>\n       <exclusions>\n         <exclusion>\n-          <artifactId>guava</artifactId>\n           <groupId>com.google.guava</groupId>\n+          <artifactId>guava</artifactId>\n         </exclusion>\n       </exclusions>\n     </dependency>\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-configcenter-consul</artifactId>\n       <version>${project.parent.version}</version>\n"}]}, {"source1": "META-INF/compat/dubbo.xsd", "source2": "META-INF/compat/dubbo.xsd", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, Unicode text, UTF-8 text"], "has_internal_linenos": true, "unified_diff": "@@ -1,4983 +1,5086 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n 00000020: 462d 3822 2073 7461 6e64 616c 6f6e 653d  F-8\" standalone=\n-00000030: 226e 6f22 3f3e 0a3c 7873 643a 7363 6865  \"no\"?>.<xsd:sche\n-00000040: 6d61 2078 6d6c 6e73 3a78 7364 3d22 6874  ma xmlns:xsd=\"ht\n-00000050: 7470 3a2f 2f77 7777 2e77 332e 6f72 672f  tp://www.w3.org/\n-00000060: 3230 3031 2f58 4d4c 5363 6865 6d61 220a  2001/XMLSchema\".\n-00000070: 2020 2020 2020 2020 2020 2020 786d 6c6e              xmln\n-00000080: 733a 6265 616e 733d 2268 7474 703a 2f2f  s:beans=\"http://\n-00000090: 7777 772e 7370 7269 6e67 6672 616d 6577  www.springframew\n-000000a0: 6f72 6b2e 6f72 672f 7363 6865 6d61 2f62  ork.org/schema/b\n-000000b0: 6561 6e73 220a 2020 2020 2020 2020 2020  eans\".          \n-000000c0: 2020 786d 6c6e 733a 746f 6f6c 3d22 6874    xmlns:tool=\"ht\n-000000d0: 7470 3a2f 2f77 7777 2e73 7072 696e 6766  tp://www.springf\n-000000e0: 7261 6d65 776f 726b 2e6f 7267 2f73 6368  ramework.org/sch\n-000000f0: 656d 612f 746f 6f6c 220a 2020 2020 2020  ema/tool\".      \n-00000100: 2020 2020 2020 786d 6c6e 733d 2268 7474        xmlns=\"htt\n-00000110: 703a 2f2f 636f 6465 2e61 6c69 6261 6261  p://code.alibaba\n-00000120: 7465 6368 2e63 6f6d 2f73 6368 656d 612f  tech.com/schema/\n-00000130: 6475 6262 6f22 0a20 2020 2020 2020 2020  dubbo\".         \n-00000140: 2020 2074 6172 6765 744e 616d 6573 7061     targetNamespa\n-00000150: 6365 3d22 6874 7470 3a2f 2f63 6f64 652e  ce=\"http://code.\n-00000160: 616c 6962 6162 6174 6563 682e 636f 6d2f  alibabatech.com/\n-00000170: 7363 6865 6d61 2f64 7562 626f 223e 0a0a  schema/dubbo\">..\n-00000180: 2020 2020 3c78 7364 3a69 6d70 6f72 7420      <xsd:import \n-00000190: 6e61 6d65 7370 6163 653d 2268 7474 703a  namespace=\"http:\n-000001a0: 2f2f 7777 772e 7733 2e6f 7267 2f58 4d4c  //www.w3.org/XML\n-000001b0: 2f31 3939 382f 6e61 6d65 7370 6163 6522  /1998/namespace\"\n-000001c0: 2f3e 0a20 2020 203c 7873 643a 696d 706f  />.    <xsd:impo\n-000001d0: 7274 206e 616d 6573 7061 6365 3d22 6874  rt namespace=\"ht\n-000001e0: 7470 3a2f 2f77 7777 2e73 7072 696e 6766  tp://www.springf\n-000001f0: 7261 6d65 776f 726b 2e6f 7267 2f73 6368  ramework.org/sch\n-00000200: 656d 612f 6265 616e 7322 2073 6368 656d  ema/beans\" schem\n-00000210: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000220: 2f2f 7777 772e 7370 7269 6e67 6672 616d  //www.springfram\n-00000230: 6577 6f72 6b2e 6f72 672f 7363 6865 6d61  ework.org/schema\n-00000240: 2f62 6561 6e73 2f73 7072 696e 672d 6265  /beans/spring-be\n-00000250: 616e 732e 7873 6422 2f3e 0a20 2020 203c  ans.xsd\"/>.    <\n-00000260: 7873 643a 696d 706f 7274 206e 616d 6573  xsd:import names\n-00000270: 7061 6365 3d22 6874 7470 3a2f 2f77 7777  pace=\"http://www\n-00000280: 2e73 7072 696e 6766 7261 6d65 776f 726b  .springframework\n-00000290: 2e6f 7267 2f73 6368 656d 612f 746f 6f6c  .org/schema/tool\n-000002a0: 222f 3e0a 0a20 2020 203c 7873 643a 616e  \"/>..    <xsd:an\n-000002b0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-000002c0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-000002d0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-000002e0: 2020 3c21 5b43 4441 5441 5b20 4e61 6d65    <![CDATA[ Name\n-000002f0: 7370 6163 6520 7375 7070 6f72 7420 666f  space support fo\n-00000300: 7220 7468 6520 6475 6262 6f20 7365 7276  r the dubbo serv\n-00000310: 6963 6573 2070 726f 7669 6465 6420 6279  ices provided by\n-00000320: 2064 7562 626f 2066 7261 6d65 776f 726b   dubbo framework\n-00000330: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-00000340: 656e 7461 7469 6f6e 3e0a 2020 2020 3c2f  entation>.    </\n-00000350: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00000360: 0a20 2020 203c 7873 643a 636f 6d70 6c65  .    <xsd:comple\n-00000370: 7854 7970 6520 6e61 6d65 3d22 6162 7374  xType name=\"abst\n-00000380: 7261 6374 4d65 7468 6f64 5479 7065 223e  ractMethodType\">\n-00000390: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n-000003a0: 7472 6962 7574 6520 6e61 6d65 3d22 7469  tribute name=\"ti\n-000003b0: 6d65 6f75 7422 2074 7970 653d 2278 7364  meout\" type=\"xsd\n-000003c0: 3a73 7472 696e 6722 2064 6566 6175 6c74  :string\" default\n-000003d0: 3d22 3022 3e0a 2020 2020 2020 2020 2020  =\"0\">.          \n-000003e0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-000003f0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00000400: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-00000410: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-00000420: 5468 6520 6d65 7468 6f64 2069 6e76 6f6b  The method invok\n-00000430: 6520 7469 6d65 6f75 742e 205d 5d3e 3c2f  e timeout. ]]></\n-00000440: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00000450: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-00000460: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00000470: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-00000480: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00000490: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-000004a0: 206e 616d 653d 2272 6574 7269 6573 2220   name=\"retries\" \n-000004b0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-000004c0: 223e 0a20 2020 2020 2020 2020 2020 203c  \">.            <\n-000004d0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-000004e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000004f0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-00000500: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-00000510: 206d 6574 686f 6420 7265 7472 7920 7469   method retry ti\n-00000520: 6d65 732e 205d 5d3e 3c2f 7873 643a 646f  mes. ]]></xsd:do\n-00000530: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00000540: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00000550: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00000560: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-00000570: 7465 3e0a 2020 2020 2020 2020 3c78 7364  te>.        <xsd\n-00000580: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-00000590: 2266 6169 6c62 6163 6b74 6173 6b73 2220  \"failbacktasks\" \n-000005a0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-000005b0: 223e 0a20 2020 2020 2020 2020 2020 203c  \">.            <\n-000005c0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-000005d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000005e0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-000005f0: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-00000600: 206d 6178 2066 6169 6c62 6163 6b20 7461   max failback ta\n-00000610: 736b 7320 6361 7061 6369 7479 2073 697a  sks capacity siz\n-00000620: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n-00000630: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-00000640: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-00000650: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00000660: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-00000670: 3e0a 2020 2020 2020 2020 3c78 7364 3a61  >.        <xsd:a\n-00000680: 7474 7269 6275 7465 206e 616d 653d 2261  ttribute name=\"a\n-00000690: 6374 6976 6573 2220 7479 7065 3d22 7873  ctives\" type=\"xs\n-000006a0: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-000006b0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-000006c0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-000006d0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-000006e0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-000006f0: 4154 415b 2054 6865 206d 6178 2061 6374  ATA[ The max act\n-00000700: 6976 6520 7265 7175 6573 7473 2e20 5d5d  ive requests. ]]\n-00000710: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-00000720: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00000730: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-00000740: 6f6e 3e0a 2020 2020 2020 2020 3c2f 7873  on>.        </xs\n-00000750: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-00000760: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-00000770: 7574 6520 6e61 6d65 3d22 636f 6e6e 6563  ute name=\"connec\n-00000780: 7469 6f6e 7322 2074 7970 653d 2278 7364  tions\" type=\"xsd\n-00000790: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-000007a0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-000007b0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-000007c0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-000007d0: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-000007e0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000007f0: 215b 4344 4154 415b 2054 6865 2065 7863  ![CDATA[ The exc\n-00000800: 6c75 7369 7665 2063 6f6e 6e65 6374 696f  lusive connectio\n-00000810: 6e73 2e20 6465 6661 756c 7420 7368 6172  ns. default shar\n-00000820: 6520 6f6e 6520 636f 6e6e 6563 7469 6f6e  e one connection\n-00000830: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-00000840: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00000850: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00000860: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00000870: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00000880: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n-00000890: 7472 6962 7574 6520 6e61 6d65 3d22 6c6f  tribute name=\"lo\n-000008a0: 6164 6261 6c61 6e63 6522 2074 7970 653d  adbalance\" type=\n-000008b0: 2278 7364 3a73 7472 696e 6722 3e0a 2020  \"xsd:string\">.  \n-000008c0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-000008d0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-000008e0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-000008f0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-00000900: 5b43 4441 5441 5b20 5468 6520 6d65 7468  [CDATA[ The meth\n-00000910: 6f64 206c 6f61 6420 6261 6c61 6e63 652e  od load balance.\n-00000920: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-00000930: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00000940: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00000950: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-00000960: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00000970: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-00000980: 7269 6275 7465 206e 616d 653d 2261 7379  ribute name=\"asy\n-00000990: 6e63 2220 7479 7065 3d22 7873 643a 7374  nc\" type=\"xsd:st\n-000009a0: 7269 6e67 2220 6465 6661 756c 743d 2266  ring\" default=\"f\n-000009b0: 616c 7365 223e 0a20 2020 2020 2020 2020  alse\">.         \n-000009c0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-000009d0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-000009e0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-000009f0: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n-00000a00: 2054 6865 206d 6574 686f 6420 646f 6573   The method does\n-00000a10: 2061 7379 6e63 2e20 5d5d 3e3c 2f78 7364   async. ]]></xsd\n-00000a20: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-00000a30: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00000a40: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00000a50: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-00000a60: 6962 7574 653e 0a20 2020 2020 2020 203c  ibute>.        <\n-00000a70: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-00000a80: 6d65 3d22 7365 6e74 2220 7479 7065 3d22  me=\"sent\" type=\"\n-00000a90: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-00000aa0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-00000ab0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00000ac0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00000ad0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-00000ae0: 4344 4154 415b 2054 6865 2061 7379 6e63  CDATA[ The async\n-00000af0: 206d 6574 686f 6420 7265 7475 726e 2061   method return a\n-00000b00: 7761 6974 206d 6573 7361 6765 2073 656e  wait message sen\n-00000b10: 7420 5d5d 3e3c 2f78 7364 3a64 6f63 756d  t ]]></xsd:docum\n-00000b20: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00000b30: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00000b40: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00000b50: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00000b60: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n-00000b70: 7472 6962 7574 6520 6e61 6d65 3d22 6d6f  tribute name=\"mo\n-00000b80: 636b 2220 7479 7065 3d22 7873 643a 7374  ck\" type=\"xsd:st\n-00000b90: 7269 6e67 223e 0a20 2020 2020 2020 2020  ring\">.         \n-00000ba0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-00000bb0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00000bc0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-00000bd0: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n-00000be0: 2055 7365 2073 6572 7669 6365 206d 6f63   Use service moc\n-00000bf0: 6b20 696d 706c 656d 656e 7461 7469 6f6e  k implementation\n-00000c00: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-00000c10: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00000c20: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00000c30: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00000c40: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00000c50: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n-00000c60: 7472 6962 7574 6520 6e61 6d65 3d22 6d65  tribute name=\"me\n-00000c70: 7267 6572 2220 7479 7065 3d22 7873 643a  rger\" type=\"xsd:\n-00000c80: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-00000c90: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00000ca0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00000cb0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00000cc0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00000cd0: 415b 2054 6865 206d 756c 7469 2d67 726f  A[ The multi-gro\n-00000ce0: 7570 2072 6573 756c 7420 6d65 7267 6572  up result merger\n-00000cf0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-00000d00: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00000d10: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00000d20: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-00000d30: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00000d40: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-00000d50: 7269 6275 7465 206e 616d 653d 2276 616c  ribute name=\"val\n-00000d60: 6964 6174 696f 6e22 2074 7970 653d 2278  idation\" type=\"x\n-00000d70: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-00000d80: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00000d90: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00000da0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00000db0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00000dc0: 4441 5441 5b20 5573 6520 7365 7276 6963  DATA[ Use servic\n-00000dd0: 6520 6a73 7233 3033 2076 616c 6964 6174  e jsr303 validat\n-00000de0: 696f 6e2c 2074 7275 652f 6661 6c73 652e  ion, true/false.\n-00000df0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-00000e00: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00000e10: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00000e20: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-00000e30: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00000e40: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-00000e50: 7269 6275 7465 206e 616d 653d 2263 6163  ribute name=\"cac\n-00000e60: 6865 2220 7479 7065 3d22 7873 643a 7374  he\" type=\"xsd:st\n-00000e70: 7269 6e67 223e 0a20 2020 2020 2020 2020  ring\">.         \n-00000e80: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-00000e90: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00000ea0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-00000eb0: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n-00000ec0: 2055 7365 2073 6572 7669 6365 2063 6163   Use service cac\n-00000ed0: 6865 2c20 6c72 752f 7468 7265 6164 6c6f  he, lru/threadlo\n-00000ee0: 6361 6c2f 6a63 6163 6865 2e20 5d5d 3e3c  cal/jcache. ]]><\n-00000ef0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-00000f00: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00000f10: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00000f20: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-00000f30: 6174 7472 6962 7574 653e 0a20 2020 203c  attribute>.    <\n-00000f40: 2f78 7364 3a63 6f6d 706c 6578 5479 7065  /xsd:complexType\n-00000f50: 3e0a 0a20 2020 203c 7873 643a 636f 6d70  >..    <xsd:comp\n-00000f60: 6c65 7854 7970 6520 6e61 6d65 3d22 6162  lexType name=\"ab\n-00000f70: 7374 7261 6374 496e 7465 7266 6163 6554  stractInterfaceT\n-00000f80: 7970 6522 3e0a 2020 2020 2020 2020 3c78  ype\">.        <x\n-00000f90: 7364 3a63 6f6d 706c 6578 436f 6e74 656e  sd:complexConten\n-00000fa0: 743e 0a20 2020 2020 2020 2020 2020 203c  t>.            <\n-00000fb0: 7873 643a 6578 7465 6e73 696f 6e20 6261  xsd:extension ba\n-00000fc0: 7365 3d22 6162 7374 7261 6374 4d65 7468  se=\"abstractMeth\n-00000fd0: 6f64 5479 7065 223e 0a20 2020 2020 2020  odType\">.       \n-00000fe0: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n-00000ff0: 7472 6962 7574 6520 6e61 6d65 3d22 6964  tribute name=\"id\n-00001000: 2220 7479 7065 3d22 7873 643a 4944 223e  \" type=\"xsd:ID\">\n-00001010: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00001020: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00001030: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00001040: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00001050: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00001060: 3e3c 215b 4344 4154 415b 2054 6865 2075  ><![CDATA[ The u\n-00001070: 6e69 7175 6520 6964 656e 7469 6669 6572  nique identifier\n-00001080: 2066 6f72 2061 2062 6561 6e2e 205d 5d3e   for a bean. ]]>\n-00001090: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-000010a0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-000010b0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-000010c0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-000010d0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-000010e0: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-000010f0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00001100: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-00001110: 226c 6f63 616c 2220 7479 7065 3d22 7873  \"local\" type=\"xs\n-00001120: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-00001130: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00001140: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00001150: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001160: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-00001170: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-00001180: 4154 415b 2055 7365 2073 6572 7669 6365  ATA[ Use service\n-00001190: 206c 6f63 616c 2069 6d70 6c65 6d65 6e74   local implement\n-000011a0: 6174 696f 6e2e 205d 5d3e 3c2f 7873 643a  ation. ]]></xsd:\n-000011b0: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-000011c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000011d0: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-000011e0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-000011f0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00001200: 6275 7465 3e0a 2020 2020 2020 2020 2020  bute>.          \n-00001210: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-00001220: 6275 7465 206e 616d 653d 2273 7475 6222  bute name=\"stub\"\n-00001230: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-00001240: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-00001250: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00001260: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00001270: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001280: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-00001290: 696f 6e3e 3c21 5b43 4441 5441 5b20 5573  ion><![CDATA[ Us\n-000012a0: 6520 7365 7276 6963 6520 6c6f 6361 6c20  e service local \n-000012b0: 696d 706c 656d 656e 7461 7469 6f6e 2e20  implementation. \n-000012c0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-000012d0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-000012e0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-000012f0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00001300: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-00001310: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-00001320: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00001330: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-00001340: 6d65 3d22 7072 6f78 7922 2074 7970 653d  me=\"proxy\" type=\n-00001350: 2278 7364 3a73 7472 696e 6722 3e0a 2020  \"xsd:string\">.  \n-00001360: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001370: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-00001380: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00001390: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-000013a0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-000013b0: 5b43 4441 5441 5b20 5573 6520 7072 6f78  [CDATA[ Use prox\n-000013c0: 7920 6661 6374 6f72 792e 205d 5d3e 3c2f  y factory. ]]></\n-000013d0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-000013e0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-000013f0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-00001400: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00001410: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00001420: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00001430: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00001440: 7474 7269 6275 7465 206e 616d 653d 2263  ttribute name=\"c\n-00001450: 6c75 7374 6572 2220 7479 7065 3d22 7873  luster\" type=\"xs\n-00001460: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n+00000030: 226e 6f22 3f3e 0d0a 3c78 7364 3a73 6368  \"no\"?>..<xsd:sch\n+00000040: 656d 6120 786d 6c6e 733a 7873 643d 2268  ema xmlns:xsd=\"h\n+00000050: 7474 703a 2f2f 7777 772e 7733 2e6f 7267  ttp://www.w3.org\n+00000060: 2f32 3030 312f 584d 4c53 6368 656d 6122  /2001/XMLSchema\"\n+00000070: 0d0a 2020 2020 2020 2020 2020 2020 786d  ..            xm\n+00000080: 6c6e 733a 6265 616e 733d 2268 7474 703a  lns:beans=\"http:\n+00000090: 2f2f 7777 772e 7370 7269 6e67 6672 616d  //www.springfram\n+000000a0: 6577 6f72 6b2e 6f72 672f 7363 6865 6d61  ework.org/schema\n+000000b0: 2f62 6561 6e73 220d 0a20 2020 2020 2020  /beans\"..       \n+000000c0: 2020 2020 2078 6d6c 6e73 3a74 6f6f 6c3d       xmlns:tool=\n+000000d0: 2268 7474 703a 2f2f 7777 772e 7370 7269  \"http://www.spri\n+000000e0: 6e67 6672 616d 6577 6f72 6b2e 6f72 672f  ngframework.org/\n+000000f0: 7363 6865 6d61 2f74 6f6f 6c22 0d0a 2020  schema/tool\"..  \n+00000100: 2020 2020 2020 2020 2020 786d 6c6e 733d            xmlns=\n+00000110: 2268 7474 703a 2f2f 636f 6465 2e61 6c69  \"http://code.ali\n+00000120: 6261 6261 7465 6368 2e63 6f6d 2f73 6368  babatech.com/sch\n+00000130: 656d 612f 6475 6262 6f22 0d0a 2020 2020  ema/dubbo\"..    \n+00000140: 2020 2020 2020 2020 7461 7267 6574 4e61          targetNa\n+00000150: 6d65 7370 6163 653d 2268 7474 703a 2f2f  mespace=\"http://\n+00000160: 636f 6465 2e61 6c69 6261 6261 7465 6368  code.alibabatech\n+00000170: 2e63 6f6d 2f73 6368 656d 612f 6475 6262  .com/schema/dubb\n+00000180: 6f22 3e0d 0a0d 0a20 2020 203c 7873 643a  o\">....    <xsd:\n+00000190: 696d 706f 7274 206e 616d 6573 7061 6365  import namespace\n+000001a0: 3d22 6874 7470 3a2f 2f77 7777 2e77 332e  =\"http://www.w3.\n+000001b0: 6f72 672f 584d 4c2f 3139 3938 2f6e 616d  org/XML/1998/nam\n+000001c0: 6573 7061 6365 222f 3e0d 0a20 2020 203c  espace\"/>..    <\n+000001d0: 7873 643a 696d 706f 7274 206e 616d 6573  xsd:import names\n+000001e0: 7061 6365 3d22 6874 7470 3a2f 2f77 7777  pace=\"http://www\n+000001f0: 2e73 7072 696e 6766 7261 6d65 776f 726b  .springframework\n+00000200: 2e6f 7267 2f73 6368 656d 612f 6265 616e  .org/schema/bean\n+00000210: 7322 2073 6368 656d 614c 6f63 6174 696f  s\" schemaLocatio\n+00000220: 6e3d 2268 7474 703a 2f2f 7777 772e 7370  n=\"http://www.sp\n+00000230: 7269 6e67 6672 616d 6577 6f72 6b2e 6f72  ringframework.or\n+00000240: 672f 7363 6865 6d61 2f62 6561 6e73 2f73  g/schema/beans/s\n+00000250: 7072 696e 672d 6265 616e 732e 7873 6422  pring-beans.xsd\"\n+00000260: 2f3e 0d0a 2020 2020 3c78 7364 3a69 6d70  />..    <xsd:imp\n+00000270: 6f72 7420 6e61 6d65 7370 6163 653d 2268  ort namespace=\"h\n+00000280: 7474 703a 2f2f 7777 772e 7370 7269 6e67  ttp://www.spring\n+00000290: 6672 616d 6577 6f72 6b2e 6f72 672f 7363  framework.org/sc\n+000002a0: 6865 6d61 2f74 6f6f 6c22 2f3e 0d0a 0d0a  hema/tool\"/>....\n+000002b0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+000002c0: 696f 6e3e 0d0a 2020 2020 2020 2020 3c78  ion>..        <x\n+000002d0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+000002e0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+000002f0: 215b 4344 4154 415b 204e 616d 6573 7061  ![CDATA[ Namespa\n+00000300: 6365 2073 7570 706f 7274 2066 6f72 2074  ce support for t\n+00000310: 6865 2064 7562 626f 2073 6572 7669 6365  he dubbo service\n+00000320: 7320 7072 6f76 6964 6564 2062 7920 6475  s provided by du\n+00000330: 6262 6f20 6672 616d 6577 6f72 6b2e 205d  bbo framework. ]\n+00000340: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+00000350: 6174 696f 6e3e 0d0a 2020 2020 3c2f 7873  ation>..    </xs\n+00000360: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a0d  d:annotation>...\n+00000370: 0a20 2020 203c 7873 643a 636f 6d70 6c65  .    <xsd:comple\n+00000380: 7854 7970 6520 6e61 6d65 3d22 6162 7374  xType name=\"abst\n+00000390: 7261 6374 4d65 7468 6f64 5479 7065 223e  ractMethodType\">\n+000003a0: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+000003b0: 7474 7269 6275 7465 206e 616d 653d 2274  ttribute name=\"t\n+000003c0: 696d 656f 7574 2220 7479 7065 3d22 7873  imeout\" type=\"xs\n+000003d0: 643a 7374 7269 6e67 2220 6465 6661 756c  d:string\" defaul\n+000003e0: 743d 2230 223e 0d0a 2020 2020 2020 2020  t=\"0\">..        \n+000003f0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+00000400: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00000410: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00000420: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00000430: 415b 2054 6865 206d 6574 686f 6420 696e  A[ The method in\n+00000440: 766f 6b65 2074 696d 656f 7574 2e20 5d5d  voke timeout. ]]\n+00000450: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+00000460: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00000470: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+00000480: 696f 6e3e 0d0a 2020 2020 2020 2020 3c2f  ion>..        </\n+00000490: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+000004a0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+000004b0: 7269 6275 7465 206e 616d 653d 2272 6574  ribute name=\"ret\n+000004c0: 7269 6573 2220 7479 7065 3d22 7873 643a  ries\" type=\"xsd:\n+000004d0: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+000004e0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+000004f0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00000500: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00000510: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00000520: 4154 415b 2054 6865 206d 6574 686f 6420  ATA[ The method \n+00000530: 7265 7472 7920 7469 6d65 732e 205d 5d3e  retry times. ]]>\n+00000540: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+00000550: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00000560: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+00000570: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+00000580: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+00000590: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+000005a0: 6962 7574 6520 6e61 6d65 3d22 6661 696c  ibute name=\"fail\n+000005b0: 6261 636b 7461 736b 7322 2074 7970 653d  backtasks\" type=\n+000005c0: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+000005d0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+000005e0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+000005f0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00000600: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00000610: 3c21 5b43 4441 5441 5b20 5468 6520 6d61  <![CDATA[ The ma\n+00000620: 7820 6661 696c 6261 636b 2074 6173 6b73  x failback tasks\n+00000630: 2063 6170 6163 6974 7920 7369 7a65 2e20   capacity size. \n+00000640: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+00000650: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00000660: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00000670: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00000680: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00000690: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+000006a0: 7474 7269 6275 7465 206e 616d 653d 2261  ttribute name=\"a\n+000006b0: 6374 6976 6573 2220 7479 7065 3d22 7873  ctives\" type=\"xs\n+000006c0: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+000006d0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+000006e0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+000006f0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00000700: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00000710: 4344 4154 415b 2054 6865 206d 6178 2061  CDATA[ The max a\n+00000720: 6374 6976 6520 7265 7175 6573 7473 2e20  ctive requests. \n+00000730: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+00000740: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00000750: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00000760: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00000770: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00000780: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+00000790: 7474 7269 6275 7465 206e 616d 653d 2263  ttribute name=\"c\n+000007a0: 6f6e 6e65 6374 696f 6e73 2220 7479 7065  onnections\" type\n+000007b0: 3d22 7873 643a 7374 7269 6e67 223e 0d0a  =\"xsd:string\">..\n+000007c0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000007d0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+000007e0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+000007f0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00000800: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00000810: 2020 2020 2020 203c 215b 4344 4154 415b         <![CDATA[\n+00000820: 2054 6865 2065 7863 6c75 7369 7665 2063   The exclusive c\n+00000830: 6f6e 6e65 6374 696f 6e73 2e20 6465 6661  onnections. defa\n+00000840: 756c 7420 7368 6172 6520 6f6e 6520 636f  ult share one co\n+00000850: 6e6e 6563 7469 6f6e 2e20 5d5d 3e3c 2f78  nnection. ]]></x\n+00000860: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00000870: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00000880: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00000890: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+000008a0: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+000008b0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+000008c0: 7465 206e 616d 653d 226c 6f61 6462 616c  te name=\"loadbal\n+000008d0: 616e 6365 2220 7479 7065 3d22 7873 643a  ance\" type=\"xsd:\n+000008e0: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+000008f0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00000900: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00000910: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00000920: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00000930: 4154 415b 2054 6865 206d 6574 686f 6420  ATA[ The method \n+00000940: 6c6f 6164 2062 616c 616e 6365 2e20 5d5d  load balance. ]]\n+00000950: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+00000960: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00000970: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+00000980: 696f 6e3e 0d0a 2020 2020 2020 2020 3c2f  ion>..        </\n+00000990: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+000009a0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+000009b0: 7269 6275 7465 206e 616d 653d 2261 7379  ribute name=\"asy\n+000009c0: 6e63 2220 7479 7065 3d22 7873 643a 7374  nc\" type=\"xsd:st\n+000009d0: 7269 6e67 2220 6465 6661 756c 743d 2266  ring\" default=\"f\n+000009e0: 616c 7365 223e 0d0a 2020 2020 2020 2020  alse\">..        \n+000009f0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+00000a00: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00000a10: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00000a20: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00000a30: 415b 2054 6865 206d 6574 686f 6420 646f  A[ The method do\n+00000a40: 6573 2061 7379 6e63 2e20 5d5d 3e3c 2f78  es async. ]]></x\n+00000a50: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00000a60: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00000a70: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00000a80: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+00000a90: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+00000aa0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+00000ab0: 7465 206e 616d 653d 2273 656e 7422 2074  te name=\"sent\" t\n+00000ac0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+00000ad0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00000ae0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00000af0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00000b00: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00000b10: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+00000b20: 6520 6173 796e 6320 6d65 7468 6f64 2072  e async method r\n+00000b30: 6574 7572 6e20 6177 6169 7420 6d65 7373  eturn await mess\n+00000b40: 6167 6520 7365 6e74 205d 5d3e 3c2f 7873  age sent ]]></xs\n+00000b50: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00000b60: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+00000b70: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00000b80: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+00000b90: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+00000ba0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+00000bb0: 6520 6e61 6d65 3d22 6d6f 636b 2220 7479  e name=\"mock\" ty\n+00000bc0: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+00000bd0: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+00000be0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00000bf0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00000c00: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00000c10: 6f6e 3e3c 215b 4344 4154 415b 2055 7365  on><![CDATA[ Use\n+00000c20: 2073 6572 7669 6365 206d 6f63 6b20 696d   service mock im\n+00000c30: 706c 656d 656e 7461 7469 6f6e 2e20 5d5d  plementation. ]]\n+00000c40: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+00000c50: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00000c60: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+00000c70: 696f 6e3e 0d0a 2020 2020 2020 2020 3c2f  ion>..        </\n+00000c80: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+00000c90: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+00000ca0: 7269 6275 7465 206e 616d 653d 226d 6572  ribute name=\"mer\n+00000cb0: 6765 7222 2074 7970 653d 2278 7364 3a73  ger\" type=\"xsd:s\n+00000cc0: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+00000cd0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+00000ce0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00000cf0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+00000d00: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+00000d10: 5441 5b20 5468 6520 6d75 6c74 692d 6772  TA[ The multi-gr\n+00000d20: 6f75 7020 7265 7375 6c74 206d 6572 6765  oup result merge\n+00000d30: 7220 5d5d 3e3c 2f78 7364 3a64 6f63 756d  r ]]></xsd:docum\n+00000d40: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00000d50: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00000d60: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00000d70: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00000d80: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+00000d90: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00000da0: 2276 616c 6964 6174 696f 6e22 2074 7970  \"validation\" typ\n+00000db0: 653d 2278 7364 3a73 7472 696e 6722 3e0d  e=\"xsd:string\">.\n+00000dc0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00000dd0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00000de0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00000df0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00000e00: 6e3e 3c21 5b43 4441 5441 5b20 5573 6520  n><![CDATA[ Use \n+00000e10: 7365 7276 6963 6520 6a73 7233 3033 2076  service jsr303 v\n+00000e20: 616c 6964 6174 696f 6e2c 2074 7275 652f  alidation, true/\n+00000e30: 6661 6c73 652e 205d 5d3e 3c2f 7873 643a  false. ]]></xsd:\n+00000e40: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00000e50: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00000e60: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00000e70: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+00000e80: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+00000e90: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+00000ea0: 6e61 6d65 3d22 6361 6368 6522 2074 7970  name=\"cache\" typ\n+00000eb0: 653d 2278 7364 3a73 7472 696e 6722 3e0d  e=\"xsd:string\">.\n+00000ec0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00000ed0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00000ee0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00000ef0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00000f00: 6e3e 3c21 5b43 4441 5441 5b20 5573 6520  n><![CDATA[ Use \n+00000f10: 7365 7276 6963 6520 6361 6368 652c 206c  service cache, l\n+00000f20: 7275 2f74 6872 6561 646c 6f63 616c 2f6a  ru/threadlocal/j\n+00000f30: 6361 6368 652e 205d 5d3e 3c2f 7873 643a  cache. ]]></xsd:\n+00000f40: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00000f50: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00000f60: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00000f70: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+00000f80: 7269 6275 7465 3e0d 0a20 2020 203c 2f78  ribute>..    </x\n+00000f90: 7364 3a63 6f6d 706c 6578 5479 7065 3e0d  sd:complexType>.\n+00000fa0: 0a0d 0a20 2020 203c 7873 643a 636f 6d70  ...    <xsd:comp\n+00000fb0: 6c65 7854 7970 6520 6e61 6d65 3d22 6162  lexType name=\"ab\n+00000fc0: 7374 7261 6374 496e 7465 7266 6163 6554  stractInterfaceT\n+00000fd0: 7970 6522 3e0d 0a20 2020 2020 2020 203c  ype\">..        <\n+00000fe0: 7873 643a 636f 6d70 6c65 7843 6f6e 7465  xsd:complexConte\n+00000ff0: 6e74 3e0d 0a20 2020 2020 2020 2020 2020  nt>..           \n+00001000: 203c 7873 643a 6578 7465 6e73 696f 6e20   <xsd:extension \n+00001010: 6261 7365 3d22 6162 7374 7261 6374 4d65  base=\"abstractMe\n+00001020: 7468 6f64 5479 7065 223e 0d0a 2020 2020  thodType\">..    \n+00001030: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00001040: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00001050: 2269 6422 2074 7970 653d 2278 7364 3a49  \"id\" type=\"xsd:I\n+00001060: 4422 3e0d 0a20 2020 2020 2020 2020 2020  D\">..           \n+00001070: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+00001080: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00001090: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000010a0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+000010b0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+000010c0: 5468 6520 756e 6971 7565 2069 6465 6e74  The unique ident\n+000010d0: 6966 6965 7220 666f 7220 6120 6265 616e  ifier for a bean\n+000010e0: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+000010f0: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00001100: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00001110: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00001120: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00001130: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00001140: 653e 0d0a 2020 2020 2020 2020 2020 2020  e>..            \n+00001150: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+00001160: 7465 206e 616d 653d 226c 6f63 616c 2220  te name=\"local\" \n+00001170: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+00001180: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+00001190: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+000011a0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+000011b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000011c0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+000011d0: 7469 6f6e 3e3c 215b 4344 4154 415b 2055  tion><![CDATA[ U\n+000011e0: 7365 2073 6572 7669 6365 206c 6f63 616c  se service local\n+000011f0: 2069 6d70 6c65 6d65 6e74 6174 696f 6e2e   implementation.\n+00001200: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00001210: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00001220: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+00001230: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00001240: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00001250: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+00001260: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00001270: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+00001280: 6520 6e61 6d65 3d22 7374 7562 2220 7479  e name=\"stub\" ty\n+00001290: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+000012a0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+000012b0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+000012c0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+000012d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000012e0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+000012f0: 6f6e 3e3c 215b 4344 4154 415b 2055 7365  on><![CDATA[ Use\n+00001300: 2073 6572 7669 6365 206c 6f63 616c 2069   service local i\n+00001310: 6d70 6c65 6d65 6e74 6174 696f 6e2e 205d  mplementation. ]\n+00001320: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+00001330: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00001340: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00001350: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00001360: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00001370: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+00001380: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00001390: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+000013a0: 6e61 6d65 3d22 7072 6f78 7922 2074 7970  name=\"proxy\" typ\n+000013b0: 653d 2278 7364 3a73 7472 696e 6722 3e0d  e=\"xsd:string\">.\n+000013c0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000013d0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+000013e0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+000013f0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00001400: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00001410: 6e3e 3c21 5b43 4441 5441 5b20 5573 6520  n><![CDATA[ Use \n+00001420: 7072 6f78 7920 6661 6374 6f72 792e 205d  proxy factory. ]\n+00001430: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+00001440: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00001450: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00001460: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n 00001470: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00001480: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00001490: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000014a0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-000014b0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-000014c0: 4154 415b 2055 7365 2063 6c75 7374 6572  ATA[ Use cluster\n-000014d0: 2073 7472 6174 6567 792e 205d 5d3e 3c2f   strategy. ]]></\n-000014e0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-000014f0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00001500: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-00001510: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00001520: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00001530: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00001540: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00001550: 7474 7269 6275 7465 206e 616d 653d 2266  ttribute name=\"f\n-00001560: 6f72 6b73 2220 7479 7065 3d22 7873 643a  orks\" type=\"xsd:\n-00001570: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-00001580: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00001590: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-000015a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000015b0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-000015c0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-000015d0: 415b 2046 6f72 6b69 6e67 436c 7573 7465  A[ ForkingCluste\n-000015e0: 7220 666f 726b 732e 205d 5d3e 3c2f 7873  r forks. ]]></xs\n-000015f0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00001600: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00001610: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00001620: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00001630: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00001640: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00001650: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-00001660: 7269 6275 7465 206e 616d 653d 2266 696c  ribute name=\"fil\n-00001670: 7465 7222 2074 7970 653d 2278 7364 3a73  ter\" type=\"xsd:s\n-00001680: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-00001690: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000016a0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-000016b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000016c0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-000016d0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-000016e0: 5b20 5468 6520 6669 6c74 6572 2e20 5d5d  [ The filter. ]]\n-000016f0: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-00001700: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00001710: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00001720: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00001730: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00001740: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-00001750: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00001760: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00001770: 3d22 6c69 7374 656e 6572 2220 7479 7065  =\"listener\" type\n-00001780: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-00001790: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000017a0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-000017b0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-000017c0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000017d0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-000017e0: 215b 4344 4154 415b 2054 6865 206c 6973  ![CDATA[ The lis\n-000017f0: 7465 6e65 722e 205d 5d3e 3c2f 7873 643a  tener. ]]></xsd:\n-00001800: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-00001810: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001820: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-00001830: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00001840: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00001850: 6275 7465 3e0a 2020 2020 2020 2020 2020  bute>.          \n-00001860: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-00001870: 6275 7465 206e 616d 653d 226f 776e 6572  bute name=\"owner\n-00001880: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-00001890: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-000018a0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-000018b0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-000018c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000018d0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-000018e0: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-000018f0: 6865 206f 776e 6572 2e20 5d5d 3e3c 2f78  he owner. ]]></x\n-00001900: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00001910: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00001920: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00001930: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00001940: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00001950: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00001960: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n-00001970: 7472 6962 7574 6520 6e61 6d65 3d22 6c61  tribute name=\"la\n-00001980: 7965 7222 2074 7970 653d 2278 7364 3a73  yer\" type=\"xsd:s\n-00001990: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-000019a0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000019b0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-000019c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000019d0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-000019e0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-000019f0: 5b20 6c61 7965 7220 696e 666f 2e20 5d5d  [ layer info. ]]\n-00001a00: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-00001a10: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00001a20: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00001a30: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00001a40: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00001a50: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-00001a60: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00001a70: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00001a80: 3d22 6170 706c 6963 6174 696f 6e22 2074  =\"application\" t\n-00001a90: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-00001aa0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00001ab0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-00001ac0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00001ad0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00001ae0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00001af0: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-00001b00: 7365 7276 6963 6520 6170 706c 6963 6174  service applicat\n-00001b10: 696f 6e2e 205d 5d3e 3c2f 7873 643a 646f  ion. ]]></xsd:do\n-00001b20: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00001b30: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001b40: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-00001b50: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00001b60: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-00001b70: 7465 3e0a 2020 2020 2020 2020 2020 2020  te>.            \n-00001b80: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-00001b90: 7465 206e 616d 653d 226d 6f64 756c 6522  te name=\"module\"\n-00001ba0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-00001bb0: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-00001bc0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00001bd0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00001be0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001bf0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-00001c00: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-00001c10: 6520 7365 7276 6963 6520 6d6f 6475 6c65  e service module\n-00001c20: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-00001c30: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00001c40: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-00001c50: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00001c60: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001c70: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00001c80: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00001c90: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00001ca0: 6e61 6d65 3d22 7265 6769 7374 7279 2220  name=\"registry\" \n-00001cb0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-00001cc0: 223e 0a20 2020 2020 2020 2020 2020 2020  \">.             \n-00001cd0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-00001ce0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00001cf0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001d00: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-00001d10: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-00001d20: 2073 6572 7669 6365 2072 6567 6973 7472   service registr\n-00001d30: 792e 205d 5d3e 3c2f 7873 643a 646f 6375  y. ]]></xsd:docu\n-00001d40: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-00001d50: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00001d60: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00001d70: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00001d80: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-00001d90: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00001da0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00001db0: 206e 616d 653d 226d 6f6e 6974 6f72 2220   name=\"monitor\" \n-00001dc0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-00001dd0: 223e 0a20 2020 2020 2020 2020 2020 2020  \">.             \n-00001de0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-00001df0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00001e00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001e10: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-00001e20: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-00001e30: 2073 6572 7669 6365 206d 6f6e 6974 6f72   service monitor\n-00001e40: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-00001e50: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00001e60: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-00001e70: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00001e80: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001e90: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00001ea0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00001eb0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00001ec0: 6e61 6d65 3d22 6361 6c6c 6261 636b 7322  name=\"callbacks\"\n-00001ed0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-00001ee0: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-00001ef0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00001f00: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00001f10: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001f20: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-00001f30: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-00001f40: 6520 6361 6c6c 6261 636b 2069 6e73 7461  e callback insta\n-00001f50: 6e63 6520 6c69 6d69 7420 7065 6572 2063  nce limit peer c\n-00001f60: 6f6e 6e65 6374 696f 6e2e 5d5d 3e3c 2f78  onnection.]]></x\n-00001f70: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00001f80: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00001f90: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00001fa0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00001fb0: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00001fc0: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00001fd0: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n-00001fe0: 7472 6962 7574 6520 6e61 6d65 3d22 6f6e  tribute name=\"on\n-00001ff0: 636f 6e6e 6563 7422 2074 7970 653d 2278  connect\" type=\"x\n-00002000: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-00002010: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002020: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-00002030: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00002040: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00002050: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00002060: 4441 5441 5b20 5468 6520 7365 7276 6963  DATA[ The servic\n-00002070: 6520 636c 6965 6e74 2063 6f6e 6e65 6374  e client connect\n-00002080: 6564 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ed. ]]></xsd:doc\n-00002090: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-000020a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000020b0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-000020c0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-000020d0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-000020e0: 653e 0a20 2020 2020 2020 2020 2020 2020  e>.             \n-000020f0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00002100: 6520 6e61 6d65 3d22 6f6e 6469 7363 6f6e  e name=\"ondiscon\n-00002110: 6e65 6374 2220 7479 7065 3d22 7873 643a  nect\" type=\"xsd:\n-00002120: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-00002130: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00002140: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00002150: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002160: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00002170: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00002180: 415b 2054 6865 2073 6572 7669 6365 2063  A[ The service c\n-00002190: 6c69 656e 7420 6469 7363 6f6e 6e65 6374  lient disconnect\n-000021a0: 6564 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ed. ]]></xsd:doc\n-000021b0: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-000021c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000021d0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-000021e0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-000021f0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-00002200: 653e 0a20 2020 2020 2020 2020 2020 2020  e>.             \n-00002210: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00002220: 6520 6e61 6d65 3d22 7363 6f70 6522 2074  e name=\"scope\" t\n-00002230: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-00002240: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00002250: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-00002260: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00002270: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00002280: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00002290: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-000022a0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000022b0: 215b 4344 4154 415b 2044 6566 696e 6573  ![CDATA[ Defines\n-000022c0: 2074 6865 2073 6572 7669 6365 2076 6973   the service vis\n-000022d0: 6962 696c 6974 792c 2063 686f 6973 653a  ibility, choise:\n-000022e0: 5b6c 6f63 616c 2072 656d 6f74 655d 2e20  [local remote]. \n-000022f0: 6465 6661 756c 7420 6973 2072 656d 6f74  default is remot\n-00002300: 652c 2077 6869 6368 2063 616e 2062 6520  e, which can be \n-00002310: 696e 766f 6b65 6420 6279 206e 6574 776f  invoked by netwo\n-00002320: 726b e380 8220 205d 5d3e 3c2f 7873 643a  rk...  ]]></xsd:\n-00002330: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n+00001480: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+00001490: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000014a0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+000014b0: 6e61 6d65 3d22 636c 7573 7465 7222 2074  name=\"cluster\" t\n+000014c0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+000014d0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+000014e0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+000014f0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00001500: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001510: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00001520: 696f 6e3e 3c21 5b43 4441 5441 5b20 5573  ion><![CDATA[ Us\n+00001530: 6520 636c 7573 7465 7220 7374 7261 7465  e cluster strate\n+00001540: 6779 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  gy. ]]></xsd:doc\n+00001550: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+00001560: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001570: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00001580: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00001590: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+000015a0: 7574 653e 0d0a 2020 2020 2020 2020 2020  ute>..          \n+000015b0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+000015c0: 6275 7465 206e 616d 653d 2266 6f72 6b73  bute name=\"forks\n+000015d0: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+000015e0: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+000015f0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00001600: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00001610: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001620: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00001630: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+00001640: 2046 6f72 6b69 6e67 436c 7573 7465 7220   ForkingCluster \n+00001650: 666f 726b 732e 205d 5d3e 3c2f 7873 643a  forks. ]]></xsd:\n+00001660: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00001670: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001680: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+00001690: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+000016a0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+000016b0: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+000016c0: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n+000016d0: 7472 6962 7574 6520 6e61 6d65 3d22 6669  tribute name=\"fi\n+000016e0: 6c74 6572 2220 7479 7065 3d22 7873 643a  lter\" type=\"xsd:\n+000016f0: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+00001700: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00001710: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00001720: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001730: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00001740: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00001750: 4154 415b 2054 6865 2066 696c 7465 722e  ATA[ The filter.\n+00001760: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00001770: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00001780: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+00001790: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+000017a0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000017b0: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+000017c0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+000017d0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+000017e0: 6520 6e61 6d65 3d22 6c69 7374 656e 6572  e name=\"listener\n+000017f0: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+00001800: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+00001810: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00001820: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00001830: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001840: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00001850: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+00001860: 2054 6865 206c 6973 7465 6e65 722e 205d   The listener. ]\n+00001870: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+00001880: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00001890: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+000018a0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+000018b0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+000018c0: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+000018d0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000018e0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+000018f0: 6e61 6d65 3d22 6f77 6e65 7222 2074 7970  name=\"owner\" typ\n+00001900: 653d 2278 7364 3a73 7472 696e 6722 3e0d  e=\"xsd:string\">.\n+00001910: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00001920: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+00001930: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00001940: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00001950: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00001960: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n+00001970: 6f77 6e65 722e 205d 5d3e 3c2f 7873 643a  owner. ]]></xsd:\n+00001980: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00001990: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000019a0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+000019b0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+000019c0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+000019d0: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+000019e0: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n+000019f0: 7472 6962 7574 6520 6e61 6d65 3d22 6c61  tribute name=\"la\n+00001a00: 7965 7222 2074 7970 653d 2278 7364 3a73  yer\" type=\"xsd:s\n+00001a10: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+00001a20: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00001a30: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00001a40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001a50: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+00001a60: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+00001a70: 5441 5b20 6c61 7965 7220 696e 666f 2e20  TA[ layer info. \n+00001a80: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+00001a90: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00001aa0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+00001ab0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00001ac0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001ad0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00001ae0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00001af0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+00001b00: 206e 616d 653d 2261 7070 6c69 6361 7469   name=\"applicati\n+00001b10: 6f6e 2220 7479 7065 3d22 7873 643a 7374  on\" type=\"xsd:st\n+00001b20: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+00001b30: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00001b40: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00001b50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001b60: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00001b70: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00001b80: 415b 2054 6865 2073 6572 7669 6365 2061  A[ The service a\n+00001b90: 7070 6c69 6361 7469 6f6e 2e20 5d5d 3e3c  pplication. ]]><\n+00001ba0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00001bb0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00001bc0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+00001bd0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00001be0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00001bf0: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+00001c00: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00001c10: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+00001c20: 653d 226d 6f64 756c 6522 2074 7970 653d  e=\"module\" type=\n+00001c30: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+00001c40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001c50: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00001c60: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00001c70: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00001c80: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00001c90: 3c21 5b43 4441 5441 5b20 5468 6520 7365  <![CDATA[ The se\n+00001ca0: 7276 6963 6520 6d6f 6475 6c65 2e20 5d5d  rvice module. ]]\n+00001cb0: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+00001cc0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00001cd0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00001ce0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00001cf0: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+00001d00: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+00001d10: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001d20: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+00001d30: 616d 653d 2272 6567 6973 7472 7922 2074  ame=\"registry\" t\n+00001d40: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+00001d50: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00001d60: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+00001d70: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00001d80: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001d90: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00001da0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+00001db0: 6520 7365 7276 6963 6520 7265 6769 7374  e service regist\n+00001dc0: 7279 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ry. ]]></xsd:doc\n+00001dd0: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+00001de0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001df0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00001e00: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00001e10: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+00001e20: 7574 653e 0d0a 2020 2020 2020 2020 2020  ute>..          \n+00001e30: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00001e40: 6275 7465 206e 616d 653d 226d 6f6e 6974  bute name=\"monit\n+00001e50: 6f72 2220 7479 7065 3d22 7873 643a 7374  or\" type=\"xsd:st\n+00001e60: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+00001e70: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00001e80: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00001e90: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001ea0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00001eb0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00001ec0: 415b 2054 6865 2073 6572 7669 6365 206d  A[ The service m\n+00001ed0: 6f6e 6974 6f72 2e20 5d5d 3e3c 2f78 7364  onitor. ]]></xsd\n+00001ee0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00001ef0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00001f00: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00001f10: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00001f20: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+00001f30: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+00001f40: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00001f50: 7474 7269 6275 7465 206e 616d 653d 2263  ttribute name=\"c\n+00001f60: 616c 6c62 6163 6b73 2220 7479 7065 3d22  allbacks\" type=\"\n+00001f70: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+00001f80: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001f90: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00001fa0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00001fb0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00001fc0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+00001fd0: 215b 4344 4154 415b 2054 6865 2063 616c  ![CDATA[ The cal\n+00001fe0: 6c62 6163 6b20 696e 7374 616e 6365 206c  lback instance l\n+00001ff0: 696d 6974 2070 6565 7220 636f 6e6e 6563  imit peer connec\n+00002000: 7469 6f6e 2e5d 5d3e 3c2f 7873 643a 646f  tion.]]></xsd:do\n+00002010: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+00002020: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002030: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+00002040: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00002050: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+00002060: 6275 7465 3e0d 0a20 2020 2020 2020 2020  bute>..         \n+00002070: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+00002080: 6962 7574 6520 6e61 6d65 3d22 6f6e 636f  ibute name=\"onco\n+00002090: 6e6e 6563 7422 2074 7970 653d 2278 7364  nnect\" type=\"xsd\n+000020a0: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+000020b0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+000020c0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+000020d0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000020e0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+000020f0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+00002100: 4441 5441 5b20 5468 6520 7365 7276 6963  DATA[ The servic\n+00002110: 6520 636c 6965 6e74 2063 6f6e 6e65 6374  e client connect\n+00002120: 6564 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ed. ]]></xsd:doc\n+00002130: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+00002140: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002150: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00002160: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00002170: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+00002180: 7574 653e 0d0a 2020 2020 2020 2020 2020  ute>..          \n+00002190: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+000021a0: 6275 7465 206e 616d 653d 226f 6e64 6973  bute name=\"ondis\n+000021b0: 636f 6e6e 6563 7422 2074 7970 653d 2278  connect\" type=\"x\n+000021c0: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+000021d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000021e0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+000021f0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00002200: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00002210: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00002220: 5b43 4441 5441 5b20 5468 6520 7365 7276  [CDATA[ The serv\n+00002230: 6963 6520 636c 6965 6e74 2064 6973 636f  ice client disco\n+00002240: 6e6e 6563 7465 642e 205d 5d3e 3c2f 7873  nnected. ]]></xs\n+00002250: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00002260: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00002270: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+00002280: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00002290: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+000022a0: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+000022b0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+000022c0: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+000022d0: 7363 6f70 6522 2074 7970 653d 2278 7364  scope\" type=\"xsd\n+000022e0: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+000022f0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00002300: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00002310: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00002320: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00002330: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n 00002340: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002350: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-00002360: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00002370: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00002380: 6275 7465 3e0a 2020 2020 2020 2020 2020  bute>.          \n-00002390: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-000023a0: 6275 7465 206e 616d 653d 2274 6167 2220  bute name=\"tag\" \n-000023b0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-000023c0: 223e 0a20 2020 2020 2020 2020 2020 2020  \">.             \n-000023d0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-000023e0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-000023f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002400: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-00002410: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00002420: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002430: 3c21 5b43 4441 5441 5b20 4465 6669 6e65  <![CDATA[ Define\n-00002440: 7320 7468 6520 7365 7276 6963 6520 7461  s the service ta\n-00002450: 675d 5d3e 3c2f 7873 643a 646f 6375 6d65  g]]></xsd:docume\n-00002460: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00002470: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-00002480: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00002490: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000024a0: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-000024b0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-000024c0: 643a 6578 7465 6e73 696f 6e3e 0a20 2020  d:extension>.   \n-000024d0: 2020 2020 203c 2f78 7364 3a63 6f6d 706c       </xsd:compl\n-000024e0: 6578 436f 6e74 656e 743e 0a20 2020 203c  exContent>.    <\n-000024f0: 2f78 7364 3a63 6f6d 706c 6578 5479 7065  /xsd:complexType\n-00002500: 3e0a 0a20 2020 203c 7873 643a 636f 6d70  >..    <xsd:comp\n-00002510: 6c65 7854 7970 6520 6e61 6d65 3d22 6162  lexType name=\"ab\n-00002520: 7374 7261 6374 5265 6665 7265 6e63 6554  stractReferenceT\n-00002530: 7970 6522 3e0a 2020 2020 2020 2020 3c78  ype\">.        <x\n-00002540: 7364 3a63 6f6d 706c 6578 436f 6e74 656e  sd:complexConten\n-00002550: 743e 0a20 2020 2020 2020 2020 2020 203c  t>.            <\n-00002560: 7873 643a 6578 7465 6e73 696f 6e20 6261  xsd:extension ba\n-00002570: 7365 3d22 6162 7374 7261 6374 496e 7465  se=\"abstractInte\n-00002580: 7266 6163 6554 7970 6522 3e0a 2020 2020  rfaceType\">.    \n-00002590: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000025a0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-000025b0: 2276 6572 7369 6f6e 2220 7479 7065 3d22  \"version\" type=\"\n-000025c0: 7873 643a 7374 7269 6e67 2220 6465 6661  xsd:string\" defa\n-000025d0: 756c 743d 2230 2e30 2e30 223e 0a20 2020  ult=\"0.0.0\">.   \n-000025e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000025f0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-00002600: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00002610: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00002620: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-00002630: 4344 4154 415b 2054 6865 2073 6572 7669  CDATA[ The servi\n-00002640: 6365 2076 6572 7369 6f6e 2e20 5d5d 3e3c  ce version. ]]><\n-00002650: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-00002660: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00002670: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-00002680: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00002690: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-000026a0: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-000026b0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-000026c0: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-000026d0: 6772 6f75 7022 2074 7970 653d 2278 7364  group\" type=\"xsd\n-000026e0: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-000026f0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00002700: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00002710: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002720: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-00002730: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-00002740: 5441 5b20 5468 6520 7365 7276 6963 6520  TA[ The service \n-00002750: 6772 6f75 702e 205d 5d3e 3c2f 7873 643a  group. ]]></xsd:\n-00002760: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-00002770: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002780: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-00002790: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-000027a0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-000027b0: 6275 7465 3e0a 2020 2020 2020 2020 2020  bute>.          \n-000027c0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-000027d0: 6275 7465 206e 616d 653d 2263 6865 636b  bute name=\"check\n-000027e0: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-000027f0: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-00002800: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-00002810: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00002820: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002830: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-00002840: 7469 6f6e 3e3c 215b 4344 4154 415b 2043  tion><![CDATA[ C\n-00002850: 6865 636b 2064 6570 656e 6465 6e63 7920  heck dependency \n-00002860: 7072 6f76 6964 6572 732e 205d 5d3e 3c2f  providers. ]]></\n-00002870: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00002880: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00002890: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-000028a0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-000028b0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-000028c0: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-000028d0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-000028e0: 7474 7269 6275 7465 206e 616d 653d 2269  ttribute name=\"i\n-000028f0: 6e69 7422 2074 7970 653d 2278 7364 3a73  nit\" type=\"xsd:s\n-00002900: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-00002910: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00002920: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00002930: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002940: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-00002950: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-00002960: 5b20 4561 6765 7220 696e 6974 2072 6566  [ Eager init ref\n-00002970: 6572 656e 6365 2e20 5d5d 3e3c 2f78 7364  erence. ]]></xsd\n-00002980: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-00002990: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000029a0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-000029b0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-000029c0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-000029d0: 6962 7574 653e 0a20 2020 2020 2020 2020  ibute>.         \n-000029e0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-000029f0: 6962 7574 6520 6e61 6d65 3d22 6765 6e65  ibute name=\"gene\n-00002a00: 7269 6322 2074 7970 653d 2278 7364 3a73  ric\" type=\"xsd:s\n-00002a10: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-00002a20: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00002a30: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00002a40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002a50: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-00002a60: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-00002a70: 5b20 4765 6e65 7269 6320 7365 7276 6963  [ Generic servic\n-00002a80: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n-00002a90: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-00002aa0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00002ab0: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00002ac0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00002ad0: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-00002ae0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00002af0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00002b00: 206e 616d 653d 2269 6e6a 766d 2220 7479   name=\"injvm\" ty\n-00002b10: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00002b20: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00002b30: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00002b40: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00002b50: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00002b60: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00002b70: 3e3c 215b 4344 4154 415b 4465 7072 6563  ><![CDATA[Deprec\n-00002b80: 6174 6564 2e20 5265 706c 6163 6520 746f  ated. Replace to\n-00002b90: 2020 7365 7420 7363 6f70 653d 6c6f 6361    set scope=loca\n-00002ba0: 6c20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  l ]]></xsd:docum\n-00002bb0: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00002bc0: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-00002bd0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00002be0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002bf0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00002c00: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00002c10: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00002c20: 6e61 6d65 3d22 7374 6963 6b79 2220 7479  name=\"sticky\" ty\n-00002c30: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00002c40: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00002c50: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00002c60: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00002c70: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00002c80: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00002c90: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00002ca0: 2020 2020 2020 2020 2020 2020 2020 3c21                <!\n-00002cb0: 5b43 4441 5441 5b20 456e 6162 6c65 2f44  [CDATA[ Enable/D\n-00002cc0: 6973 6162 6c65 2063 6c75 7374 6572 2073  isable cluster s\n-00002cd0: 7469 636b 7920 706f 6c69 6379 2e44 6566  ticky policy.Def\n-00002ce0: 6175 6c74 2066 616c 7365 205d 5d3e 3c2f  ault false ]]></\n-00002cf0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00002d00: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00002d10: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-00002d20: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00002d30: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00002d40: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00002d50: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00002d60: 7474 7269 6275 7465 206e 616d 653d 2272  ttribute name=\"r\n-00002d70: 6563 6f6e 6e65 6374 2220 7479 7065 3d22  econnect\" type=\"\n-00002d80: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-00002d90: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002da0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-00002db0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00002dc0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00002dd0: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n+00002350: 2020 2020 2020 2020 2020 3c21 5b43 4441            <![CDA\n+00002360: 5441 5b20 4465 6669 6e65 7320 7468 6520  TA[ Defines the \n+00002370: 7365 7276 6963 6520 7669 7369 6269 6c69  service visibili\n+00002380: 7479 2c20 6368 6f69 7365 3a5b 6c6f 6361  ty, choise:[loca\n+00002390: 6c20 7265 6d6f 7465 5d2e 2064 6566 6175  l remote]. defau\n+000023a0: 6c74 2069 7320 7265 6d6f 7465 2c20 7768  lt is remote, wh\n+000023b0: 6963 6820 6361 6e20 6265 2069 6e76 6f6b  ich can be invok\n+000023c0: 6564 2062 7920 6e65 7477 6f72 6be3 8082  ed by network...\n+000023d0: 2020 5d5d 3e3c 2f78 7364 3a64 6f63 756d    ]]></xsd:docum\n+000023e0: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+000023f0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00002400: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00002410: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00002420: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00002430: 653e 0d0a 2020 2020 2020 2020 2020 2020  e>..            \n+00002440: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+00002450: 7465 206e 616d 653d 2274 6167 2220 7479  te name=\"tag\" ty\n+00002460: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+00002470: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00002480: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00002490: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+000024a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000024b0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+000024c0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+000024d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000024e0: 203c 215b 4344 4154 415b 2044 6566 696e   <![CDATA[ Defin\n+000024f0: 6573 2074 6865 2073 6572 7669 6365 2074  es the service t\n+00002500: 6167 5d5d 3e3c 2f78 7364 3a64 6f63 756d  ag]]></xsd:docum\n+00002510: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00002520: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00002530: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00002540: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00002550: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00002560: 653e 0d0a 2020 2020 2020 2020 2020 2020  e>..            \n+00002570: 3c2f 7873 643a 6578 7465 6e73 696f 6e3e  </xsd:extension>\n+00002580: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+00002590: 636f 6d70 6c65 7843 6f6e 7465 6e74 3e0d  complexContent>.\n+000025a0: 0a20 2020 203c 2f78 7364 3a63 6f6d 706c  .    </xsd:compl\n+000025b0: 6578 5479 7065 3e0d 0a0d 0a20 2020 203c  exType>....    <\n+000025c0: 7873 643a 636f 6d70 6c65 7854 7970 6520  xsd:complexType \n+000025d0: 6e61 6d65 3d22 6162 7374 7261 6374 5265  name=\"abstractRe\n+000025e0: 6665 7265 6e63 6554 7970 6522 3e0d 0a20  ferenceType\">.. \n+000025f0: 2020 2020 2020 203c 7873 643a 636f 6d70         <xsd:comp\n+00002600: 6c65 7843 6f6e 7465 6e74 3e0d 0a20 2020  lexContent>..   \n+00002610: 2020 2020 2020 2020 203c 7873 643a 6578           <xsd:ex\n+00002620: 7465 6e73 696f 6e20 6261 7365 3d22 6162  tension base=\"ab\n+00002630: 7374 7261 6374 496e 7465 7266 6163 6554  stractInterfaceT\n+00002640: 7970 6522 3e0d 0a20 2020 2020 2020 2020  ype\">..         \n+00002650: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+00002660: 6962 7574 6520 6e61 6d65 3d22 7665 7273  ibute name=\"vers\n+00002670: 696f 6e22 2074 7970 653d 2278 7364 3a73  ion\" type=\"xsd:s\n+00002680: 7472 696e 6722 2064 6566 6175 6c74 3d22  tring\" default=\"\n+00002690: 302e 302e 3022 3e0d 0a20 2020 2020 2020  0.0.0\">..       \n+000026a0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+000026b0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+000026c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000026d0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+000026e0: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+000026f0: 5441 5b20 5468 6520 7365 7276 6963 6520  TA[ The service \n+00002700: 7665 7273 696f 6e2e 205d 5d3e 3c2f 7873  version. ]]></xs\n+00002710: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00002720: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00002730: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+00002740: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00002750: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+00002760: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+00002770: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00002780: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+00002790: 6772 6f75 7022 2074 7970 653d 2278 7364  group\" type=\"xsd\n+000027a0: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+000027b0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+000027c0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+000027d0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000027e0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+000027f0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+00002800: 4441 5441 5b20 5468 6520 7365 7276 6963  DATA[ The servic\n+00002810: 6520 6772 6f75 702e 205d 5d3e 3c2f 7873  e group. ]]></xs\n+00002820: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00002830: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00002840: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+00002850: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00002860: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+00002870: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+00002880: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00002890: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+000028a0: 6368 6563 6b22 2074 7970 653d 2278 7364  check\" type=\"xsd\n+000028b0: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+000028c0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+000028d0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+000028e0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000028f0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00002900: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+00002910: 4441 5441 5b20 4368 6563 6b20 6465 7065  DATA[ Check depe\n+00002920: 6e64 656e 6379 2070 726f 7669 6465 7273  ndency providers\n+00002930: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00002940: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00002950: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00002960: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00002970: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00002980: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00002990: 653e 0d0a 2020 2020 2020 2020 2020 2020  e>..            \n+000029a0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+000029b0: 7465 206e 616d 653d 2269 6e69 7422 2074  te name=\"init\" t\n+000029c0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+000029d0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+000029e0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+000029f0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00002a00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002a10: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00002a20: 696f 6e3e 3c21 5b43 4441 5441 5b20 4561  ion><![CDATA[ Ea\n+00002a30: 6765 7220 696e 6974 2072 6566 6572 656e  ger init referen\n+00002a40: 6365 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ce. ]]></xsd:doc\n+00002a50: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+00002a60: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002a70: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00002a80: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00002a90: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+00002aa0: 7574 653e 0d0a 2020 2020 2020 2020 2020  ute>..          \n+00002ab0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00002ac0: 6275 7465 206e 616d 653d 2267 656e 6572  bute name=\"gener\n+00002ad0: 6963 2220 7479 7065 3d22 7873 643a 7374  ic\" type=\"xsd:st\n+00002ae0: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+00002af0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00002b00: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00002b10: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002b20: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00002b30: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00002b40: 415b 2047 656e 6572 6963 2073 6572 7669  A[ Generic servi\n+00002b50: 6365 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ce. ]]></xsd:doc\n+00002b60: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+00002b70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002b80: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00002b90: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00002ba0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+00002bb0: 7574 653e 0d0a 2020 2020 2020 2020 2020  ute>..          \n+00002bc0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00002bd0: 6275 7465 206e 616d 653d 2269 6e6a 766d  bute name=\"injvm\n+00002be0: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+00002bf0: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+00002c00: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00002c10: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00002c20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002c30: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00002c40: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+00002c50: 4465 7072 6563 6174 6564 2e20 5265 706c  Deprecated. Repl\n+00002c60: 6163 6520 746f 2020 7365 7420 7363 6f70  ace to  set scop\n+00002c70: 653d 6c6f 6361 6c20 5d5d 3e3c 2f78 7364  e=local ]]></xsd\n+00002c80: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00002c90: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00002ca0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00002cb0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00002cc0: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+00002cd0: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+00002ce0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00002cf0: 7474 7269 6275 7465 206e 616d 653d 2273  ttribute name=\"s\n+00002d00: 7469 636b 7922 2074 7970 653d 2278 7364  ticky\" type=\"xsd\n+00002d10: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+00002d20: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00002d30: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00002d40: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00002d50: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00002d60: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+00002d70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002d80: 2020 2020 2020 2020 2020 3c21 5b43 4441            <![CDA\n+00002d90: 5441 5b20 456e 6162 6c65 2f44 6973 6162  TA[ Enable/Disab\n+00002da0: 6c65 2063 6c75 7374 6572 2073 7469 636b  le cluster stick\n+00002db0: 7920 706f 6c69 6379 2e44 6566 6175 6c74  y policy.Default\n+00002dc0: 2066 616c 7365 205d 5d3e 3c2f 7873 643a   false ]]></xsd:\n+00002dd0: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n 00002de0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002df0: 2020 2020 2020 2020 2020 3c21 5b43 4441            <![CDA\n-00002e00: 5441 5b20 7265 6d6f 7469 6e67 2072 6563  TA[ remoting rec\n-00002e10: 6f6e 6e65 6374 2074 696d 6572 2e20 6661  onnect timer. fa\n-00002e20: 6c73 6520 7265 7072 6573 656e 7420 636c  lse represent cl\n-00002e30: 6f73 6520 7265 636f 6e6e 6563 742e 2069  ose reconnect. i\n-00002e40: 6e74 6567 6572 2072 6570 7265 7365 6e74  nteger represent\n-00002e50: 2069 6e74 6572 7661 6c28 6d73 2920 2e64   interval(ms) .d\n-00002e60: 6566 6175 6c74 2074 7275 6528 3230 3030  efault true(2000\n-00002e70: 6d73 292e 5d5d 3e3c 2f78 7364 3a64 6f63  ms).]]></xsd:doc\n-00002e80: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00002e90: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002ea0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00002eb0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00002ec0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-00002ed0: 653e 0a20 2020 2020 2020 2020 2020 2020  e>.             \n-00002ee0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00002ef0: 6520 6e61 6d65 3d22 6c61 7a79 2220 7479  e name=\"lazy\" ty\n-00002f00: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00002f10: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00002f20: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00002f30: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00002f40: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00002f50: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00002f60: 3e3c 215b 4344 4154 415b 206c 617a 7920  ><![CDATA[ lazy \n-00002f70: 6372 6561 7465 2063 6f6e 6e65 6374 696f  create connectio\n-00002f80: 6e2e 205d 5d3e 3c2f 7873 643a 646f 6375  n. ]]></xsd:docu\n-00002f90: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-00002fa0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00002fb0: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00002fc0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00002fd0: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-00002fe0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00002ff0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00003000: 206e 616d 653d 2270 726f 7669 6465 642d   name=\"provided-\n-00003010: 6279 2220 7479 7065 3d22 7873 643a 7374  by\" type=\"xsd:st\n-00003020: 7269 6e67 223e 0a20 2020 2020 2020 2020  ring\">.         \n-00003030: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00003040: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00003050: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003060: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-00003070: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00003080: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003090: 2020 2020 3c21 5b43 4441 5441 5b20 6465      <![CDATA[ de\n-000030a0: 636c 6172 6573 2077 6869 6368 2061 7070  clares which app\n-000030b0: 206f 7220 7365 7276 6963 6520 7468 6973   or service this\n-000030c0: 2069 6e74 6572 6661 6365 2062 656c 6f6e   interface belon\n-000030d0: 6773 2074 6f2e 205d 5d3e 3c2f 7873 643a  gs to. ]]></xsd:\n-000030e0: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-000030f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003100: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-00003110: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00003120: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00003130: 6275 7465 3e0a 2020 2020 2020 2020 2020  bute>.          \n-00003140: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-00003150: 6275 7465 206e 616d 653d 2272 6f75 7465  bute name=\"route\n-00003160: 7222 2074 7970 653d 2278 7364 3a73 7472  r\" type=\"xsd:str\n-00003170: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-00003180: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00003190: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-000031a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000031b0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-000031c0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-000031d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000031e0: 2020 203c 215b 4344 4154 415b 2054 6865     <![CDATA[ The\n-000031f0: 2072 6f75 7465 7273 205d 5d3e 3c2f 7873   routers ]]></xs\n-00003200: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00003210: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00003220: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00003230: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00003240: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00003250: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00003260: 2020 2020 3c2f 7873 643a 6578 7465 6e73      </xsd:extens\n-00003270: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-00003280: 7364 3a63 6f6d 706c 6578 436f 6e74 656e  sd:complexConten\n-00003290: 743e 0a20 2020 203c 2f78 7364 3a63 6f6d  t>.    </xsd:com\n-000032a0: 706c 6578 5479 7065 3e0a 0a20 2020 203c  plexType>..    <\n-000032b0: 7873 643a 636f 6d70 6c65 7854 7970 6520  xsd:complexType \n-000032c0: 6e61 6d65 3d22 6162 7374 7261 6374 5365  name=\"abstractSe\n-000032d0: 7276 6963 6554 7970 6522 3e0a 2020 2020  rviceType\">.    \n-000032e0: 2020 2020 3c78 7364 3a63 6f6d 706c 6578      <xsd:complex\n-000032f0: 436f 6e74 656e 743e 0a20 2020 2020 2020  Content>.       \n-00003300: 2020 2020 203c 7873 643a 6578 7465 6e73       <xsd:extens\n-00003310: 696f 6e20 6261 7365 3d22 6162 7374 7261  ion base=\"abstra\n-00003320: 6374 496e 7465 7266 6163 6554 7970 6522  ctInterfaceType\"\n-00003330: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00003340: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00003350: 206e 616d 653d 2272 6567 6973 7465 7222   name=\"register\"\n-00003360: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-00003370: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-00003380: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00003390: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-000033a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000033b0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-000033c0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-000033d0: 6520 7365 7276 6963 6520 6361 6e20 6265  e service can be\n-000033e0: 2072 6567 6973 7465 7220 746f 2072 6567   register to reg\n-000033f0: 6973 7472 792e 205d 5d3e 3c2f 7873 643a  istry. ]]></xsd:\n-00003400: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-00003410: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003420: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-00003430: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00003440: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00003450: 6275 7465 3e0a 2020 2020 2020 2020 2020  bute>.          \n-00003460: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-00003470: 6275 7465 206e 616d 653d 2276 6572 7369  bute name=\"versi\n-00003480: 6f6e 2220 7479 7065 3d22 7873 643a 7374  on\" type=\"xsd:st\n-00003490: 7269 6e67 2220 6465 6661 756c 743d 2230  ring\" default=\"0\n-000034a0: 2e30 2e30 223e 0a20 2020 2020 2020 2020  .0.0\">.         \n-000034b0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-000034c0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-000034d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000034e0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-000034f0: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n-00003500: 2054 6865 2073 6572 7669 6365 2076 6572   The service ver\n-00003510: 7369 6f6e 2e20 5d5d 3e3c 2f78 7364 3a64  sion. ]]></xsd:d\n-00003520: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00003530: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003540: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-00003550: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00003560: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00003570: 7574 653e 0a20 2020 2020 2020 2020 2020  ute>.           \n-00003580: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-00003590: 7574 6520 6e61 6d65 3d22 6772 6f75 7022  ute name=\"group\"\n-000035a0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-000035b0: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-000035c0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-000035d0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-000035e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000035f0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-00003600: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-00003610: 6520 7365 7276 6963 6520 6772 6f75 702e  e service group.\n-00003620: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-00003630: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00003640: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-00003650: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00003660: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00003670: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00003680: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003690: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-000036a0: 616d 653d 2264 6570 7265 6361 7465 6422  ame=\"deprecated\"\n-000036b0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-000036c0: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-000036d0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-000036e0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-000036f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003700: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-00003710: 696f 6e3e 3c21 5b43 4441 5441 5b20 7768  ion><![CDATA[ wh\n-00003720: 6574 6865 7220 7468 6520 7365 7276 6963  ether the servic\n-00003730: 6520 6973 2064 6570 7265 6361 7465 642e  e is deprecated.\n-00003740: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-00003750: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00003760: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-00003770: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00003780: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00003790: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-000037a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000037b0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-000037c0: 616d 653d 2264 656c 6179 2220 7479 7065  ame=\"delay\" type\n-000037d0: 3d22 7873 643a 7374 7269 6e67 2220 6465  =\"xsd:string\" de\n-000037e0: 6661 756c 743d 2230 223e 0a20 2020 2020  fault=\"0\">.     \n-000037f0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00003800: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00003810: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003820: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-00003830: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00003840: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003850: 2020 2020 2020 2020 3c21 5b43 4441 5441          <![CDATA\n-00003860: 5b20 5468 6520 7365 7276 6963 6520 6578  [ The service ex\n-00003870: 706f 7274 2064 656c 6179 206d 696c 6c69  port delay milli\n-00003880: 7365 636f 6e64 2e20 5d5d 3e0a 2020 2020  second. ]]>.    \n-00003890: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000038a0: 2020 2020 3c2f 7873 643a 646f 6375 6d65      </xsd:docume\n-000038b0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-000038c0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-000038d0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-000038e0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000038f0: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n+00002df0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+00002e00: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00002e10: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+00002e20: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+00002e30: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n+00002e40: 7472 6962 7574 6520 6e61 6d65 3d22 7265  tribute name=\"re\n+00002e50: 636f 6e6e 6563 7422 2074 7970 653d 2278  connect\" type=\"x\n+00002e60: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+00002e70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002e80: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+00002e90: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00002ea0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00002eb0: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00002ec0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002ed0: 2020 2020 2020 2020 2020 2020 3c21 5b43              <![C\n+00002ee0: 4441 5441 5b20 7265 6d6f 7469 6e67 2072  DATA[ remoting r\n+00002ef0: 6563 6f6e 6e65 6374 2074 696d 6572 2e20  econnect timer. \n+00002f00: 6661 6c73 6520 7265 7072 6573 656e 7420  false represent \n+00002f10: 636c 6f73 6520 7265 636f 6e6e 6563 742e  close reconnect.\n+00002f20: 2069 6e74 6567 6572 2072 6570 7265 7365   integer represe\n+00002f30: 6e74 2069 6e74 6572 7661 6c28 6d73 2920  nt interval(ms) \n+00002f40: 2e64 6566 6175 6c74 2074 7275 6528 3230  .default true(20\n+00002f50: 3030 6d73 292e 5d5d 3e3c 2f78 7364 3a64  00ms).]]></xsd:d\n+00002f60: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+00002f70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002f80: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+00002f90: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00002fa0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+00002fb0: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+00002fc0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+00002fd0: 7269 6275 7465 206e 616d 653d 226c 617a  ribute name=\"laz\n+00002fe0: 7922 2074 7970 653d 2278 7364 3a73 7472  y\" type=\"xsd:str\n+00002ff0: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+00003000: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00003010: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00003020: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003030: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+00003040: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+00003050: 5b20 6c61 7a79 2063 7265 6174 6520 636f  [ lazy create co\n+00003060: 6e6e 6563 7469 6f6e 2e20 5d5d 3e3c 2f78  nnection. ]]></x\n+00003070: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00003080: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00003090: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+000030a0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+000030b0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+000030c0: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+000030d0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000030e0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+000030f0: 2270 726f 7669 6465 642d 6279 2220 7479  \"provided-by\" ty\n+00003100: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+00003110: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00003120: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00003130: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00003140: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003150: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00003160: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00003170: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003180: 203c 215b 4344 4154 415b 2064 6563 6c61   <![CDATA[ decla\n+00003190: 7265 7320 7768 6963 6820 6170 7020 6f72  res which app or\n+000031a0: 2073 6572 7669 6365 2074 6869 7320 696e   service this in\n+000031b0: 7465 7266 6163 6520 6265 6c6f 6e67 7320  terface belongs \n+000031c0: 746f 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  to. ]]></xsd:doc\n+000031d0: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+000031e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000031f0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00003200: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00003210: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+00003220: 7574 653e 0d0a 2020 2020 2020 2020 2020  ute>..          \n+00003230: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00003240: 6275 7465 206e 616d 653d 2272 6f75 7465  bute name=\"route\n+00003250: 7222 2074 7970 653d 2278 7364 3a73 7472  r\" type=\"xsd:str\n+00003260: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+00003270: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00003280: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00003290: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000032a0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+000032b0: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+000032c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000032d0: 2020 2020 2020 3c21 5b43 4441 5441 5b20        <![CDATA[ \n+000032e0: 5468 6520 726f 7574 6572 7320 5d5d 3e3c  The routers ]]><\n+000032f0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00003300: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00003310: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+00003320: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00003330: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00003340: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+00003350: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00003360: 6578 7465 6e73 696f 6e3e 0d0a 2020 2020  extension>..    \n+00003370: 2020 2020 3c2f 7873 643a 636f 6d70 6c65      </xsd:comple\n+00003380: 7843 6f6e 7465 6e74 3e0d 0a20 2020 203c  xContent>..    <\n+00003390: 2f78 7364 3a63 6f6d 706c 6578 5479 7065  /xsd:complexType\n+000033a0: 3e0d 0a0d 0a20 2020 203c 7873 643a 636f  >....    <xsd:co\n+000033b0: 6d70 6c65 7854 7970 6520 6e61 6d65 3d22  mplexType name=\"\n+000033c0: 6162 7374 7261 6374 5365 7276 6963 6554  abstractServiceT\n+000033d0: 7970 6522 3e0d 0a20 2020 2020 2020 203c  ype\">..        <\n+000033e0: 7873 643a 636f 6d70 6c65 7843 6f6e 7465  xsd:complexConte\n+000033f0: 6e74 3e0d 0a20 2020 2020 2020 2020 2020  nt>..           \n+00003400: 203c 7873 643a 6578 7465 6e73 696f 6e20   <xsd:extension \n+00003410: 6261 7365 3d22 6162 7374 7261 6374 496e  base=\"abstractIn\n+00003420: 7465 7266 6163 6554 7970 6522 3e0d 0a20  terfaceType\">.. \n+00003430: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00003440: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00003450: 6d65 3d22 7265 6769 7374 6572 2220 7479  me=\"register\" ty\n+00003460: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+00003470: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00003480: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00003490: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+000034a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000034b0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+000034c0: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+000034d0: 2073 6572 7669 6365 2063 616e 2062 6520   service can be \n+000034e0: 7265 6769 7374 6572 2074 6f20 7265 6769  register to regi\n+000034f0: 7374 7279 2e20 5d5d 3e3c 2f78 7364 3a64  stry. ]]></xsd:d\n+00003500: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+00003510: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003520: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+00003530: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00003540: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+00003550: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+00003560: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+00003570: 7269 6275 7465 206e 616d 653d 2276 6572  ribute name=\"ver\n+00003580: 7369 6f6e 2220 7479 7065 3d22 7873 643a  sion\" type=\"xsd:\n+00003590: 7374 7269 6e67 2220 6465 6661 756c 743d  string\" default=\n+000035a0: 2230 2e30 2e30 223e 0d0a 2020 2020 2020  \"0.0.0\">..      \n+000035b0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+000035c0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+000035d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000035e0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+000035f0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00003600: 4154 415b 2054 6865 2073 6572 7669 6365  ATA[ The service\n+00003610: 2076 6572 7369 6f6e 2e20 5d5d 3e3c 2f78   version. ]]></x\n+00003620: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00003630: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00003640: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00003650: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00003660: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00003670: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+00003680: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00003690: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+000036a0: 2267 726f 7570 2220 7479 7065 3d22 7873  \"group\" type=\"xs\n+000036b0: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+000036c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000036d0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+000036e0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+000036f0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00003700: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00003710: 4344 4154 415b 2054 6865 2073 6572 7669  CDATA[ The servi\n+00003720: 6365 2067 726f 7570 2e20 5d5d 3e3c 2f78  ce group. ]]></x\n+00003730: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00003740: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00003750: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00003760: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00003770: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00003780: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+00003790: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000037a0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+000037b0: 2264 6570 7265 6361 7465 6422 2074 7970  \"deprecated\" typ\n+000037c0: 653d 2278 7364 3a73 7472 696e 6722 3e0d  e=\"xsd:string\">.\n+000037d0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000037e0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+000037f0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00003800: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00003810: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00003820: 6e3e 3c21 5b43 4441 5441 5b20 7768 6574  n><![CDATA[ whet\n+00003830: 6865 7220 7468 6520 7365 7276 6963 6520  her the service \n+00003840: 6973 2064 6570 7265 6361 7465 642e 205d  is deprecated. ]\n+00003850: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+00003860: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00003870: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00003880: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00003890: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+000038a0: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+000038b0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000038c0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+000038d0: 6e61 6d65 3d22 6465 6c61 7922 2074 7970  name=\"delay\" typ\n+000038e0: 653d 2278 7364 3a73 7472 696e 6722 2064  e=\"xsd:string\" d\n+000038f0: 6566 6175 6c74 3d22 3022 3e0d 0a20 2020  efault=\"0\">..   \n 00003900: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003910: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00003920: 616d 653d 2265 7870 6f72 7422 2074 7970  ame=\"export\" typ\n-00003930: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-00003940: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003950: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-00003960: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00003970: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00003980: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00003990: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-000039a0: 2020 2020 2020 2020 2020 2020 203c 215b               <![\n-000039b0: 4344 4154 415b 2054 6865 2073 6572 7669  CDATA[ The servi\n-000039c0: 6365 2069 7320 6578 706f 7274 2e20 5d5d  ce is export. ]]\n-000039d0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-000039e0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-000039f0: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-00003a00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003a10: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-00003a20: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00003a30: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00003a40: 6275 7465 3e0a 2020 2020 2020 2020 2020  bute>.          \n-00003a50: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-00003a60: 6275 7465 206e 616d 653d 2277 6569 6768  bute name=\"weigh\n-00003a70: 7422 2074 7970 653d 2278 7364 3a73 7472  t\" type=\"xsd:str\n-00003a80: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-00003a90: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00003aa0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n+00003910: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+00003920: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00003930: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00003940: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00003950: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003960: 2020 2020 2020 2020 2020 2020 3c21 5b43              <![C\n+00003970: 4441 5441 5b20 5468 6520 7365 7276 6963  DATA[ The servic\n+00003980: 6520 6578 706f 7274 2064 656c 6179 206d  e export delay m\n+00003990: 696c 6c69 7365 636f 6e64 2e20 5d5d 3e0d  illisecond. ]]>.\n+000039a0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000039b0: 2020 2020 2020 2020 203c 2f78 7364 3a64           </xsd:d\n+000039c0: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+000039d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000039e0: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+000039f0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00003a00: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+00003a10: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+00003a20: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+00003a30: 7269 6275 7465 206e 616d 653d 2265 7870  ribute name=\"exp\n+00003a40: 6f72 7422 2074 7970 653d 2278 7364 3a73  ort\" type=\"xsd:s\n+00003a50: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+00003a60: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00003a70: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00003a80: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003a90: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+00003aa0: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n 00003ab0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003ac0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-00003ad0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00003ae0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003af0: 2020 203c 215b 4344 4154 415b 2054 6865     <![CDATA[ The\n-00003b00: 2073 6572 7669 6365 2077 6569 6768 742e   service weight.\n-00003b10: 205d 5d3e 0a20 2020 2020 2020 2020 2020   ]]>.           \n-00003b20: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-00003b30: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00003b40: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00003b50: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00003b60: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00003b70: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00003b80: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00003b90: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n-00003ba0: 7472 6962 7574 6520 6e61 6d65 3d22 646f  tribute name=\"do\n-00003bb0: 6375 6d65 6e74 2220 7479 7065 3d22 7873  cument\" type=\"xs\n-00003bc0: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-00003bd0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00003be0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00003bf0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003c00: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-00003c10: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00003c20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003c30: 2020 2020 2020 2020 3c21 5b43 4441 5441          <![CDATA\n-00003c40: 5b20 5468 6520 7365 7276 6963 6520 646f  [ The service do\n-00003c50: 6375 6d65 6e74 2e20 5d5d 3e0a 2020 2020  cument. ]]>.    \n-00003c60: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003c70: 2020 2020 3c2f 7873 643a 646f 6375 6d65      </xsd:docume\n-00003c80: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n+00003ac0: 2020 2020 2020 2020 3c21 5b43 4441 5441          <![CDATA\n+00003ad0: 5b20 5468 6520 7365 7276 6963 6520 6973  [ The service is\n+00003ae0: 2065 7870 6f72 742e 205d 5d3e 0d0a 2020   export. ]]>..  \n+00003af0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003b00: 2020 2020 2020 3c2f 7873 643a 646f 6375        </xsd:docu\n+00003b10: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00003b20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003b30: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+00003b40: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00003b50: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00003b60: 7465 3e0d 0a20 2020 2020 2020 2020 2020  te>..           \n+00003b70: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+00003b80: 7574 6520 6e61 6d65 3d22 7765 6967 6874  ute name=\"weight\n+00003b90: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+00003ba0: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+00003bb0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00003bc0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00003bd0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003be0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00003bf0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00003c00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003c10: 2020 2020 203c 215b 4344 4154 415b 2054       <![CDATA[ T\n+00003c20: 6865 2073 6572 7669 6365 2077 6569 6768  he service weigh\n+00003c30: 742e 205d 5d3e 0d0a 2020 2020 2020 2020  t. ]]>..        \n+00003c40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003c50: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+00003c60: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00003c70: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00003c80: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n 00003c90: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-00003ca0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n+00003ca0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n 00003cb0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00003cc0: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00003cd0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003ce0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00003cf0: 616d 653d 2264 796e 616d 6963 2220 7479  ame=\"dynamic\" ty\n-00003d00: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00003d10: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00003d20: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00003d30: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00003d40: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00003d50: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00003d60: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00003d70: 2020 2020 2020 2020 2020 2020 2020 3c21                <!\n-00003d80: 5b43 4441 5441 5b20 7468 6520 7365 7276  [CDATA[ the serv\n-00003d90: 6963 6520 7265 6769 7374 6572 6564 2074  ice registered t\n-00003da0: 6f20 7468 6520 7265 6769 7374 7279 2069  o the registry i\n-00003db0: 7320 6479 6e61 6d69 6328 7472 7565 2920  s dynamic(true) \n-00003dc0: 6f72 2073 7461 7469 6328 6661 6c73 6529  or static(false)\n-00003dd0: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-00003de0: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00003df0: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-00003e00: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00003e10: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003e20: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00003e30: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00003e40: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00003e50: 6e61 6d65 3d22 746f 6b65 6e22 2074 7970  name=\"token\" typ\n-00003e60: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-00003e70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003e80: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-00003e90: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00003ea0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00003eb0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00003ec0: 3c21 5b43 4441 5441 5b20 5468 6520 7365  <![CDATA[ The se\n-00003ed0: 7276 6963 6520 7573 6520 746f 6b65 6e2e  rvice use token.\n-00003ee0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-00003ef0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00003f00: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-00003f10: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n+00003cc0: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00003cd0: 6d65 3d22 646f 6375 6d65 6e74 2220 7479  me=\"document\" ty\n+00003ce0: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+00003cf0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00003d00: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00003d10: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00003d20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003d30: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00003d40: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00003d50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003d60: 203c 215b 4344 4154 415b 2054 6865 2073   <![CDATA[ The s\n+00003d70: 6572 7669 6365 2064 6f63 756d 656e 742e  ervice document.\n+00003d80: 205d 5d3e 0d0a 2020 2020 2020 2020 2020   ]]>..          \n+00003d90: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+00003da0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00003db0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00003dc0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00003dd0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00003de0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00003df0: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00003e00: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00003e10: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00003e20: 3d22 6479 6e61 6d69 6322 2074 7970 653d  =\"dynamic\" type=\n+00003e30: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+00003e40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003e50: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00003e60: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00003e70: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00003e80: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00003e90: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00003ea0: 2020 2020 2020 2020 2020 2020 2020 3c21                <!\n+00003eb0: 5b43 4441 5441 5b20 7468 6520 7365 7276  [CDATA[ the serv\n+00003ec0: 6963 6520 7265 6769 7374 6572 6564 2074  ice registered t\n+00003ed0: 6f20 7468 6520 7265 6769 7374 7279 2069  o the registry i\n+00003ee0: 7320 6479 6e61 6d69 6328 7472 7565 2920  s dynamic(true) \n+00003ef0: 6f72 2073 7461 7469 6328 6661 6c73 6529  or static(false)\n+00003f00: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00003f10: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n 00003f20: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00003f30: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00003f40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003f50: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00003f60: 616d 653d 2261 6363 6573 736c 6f67 2220  ame=\"accesslog\" \n-00003f70: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-00003f80: 223e 0a20 2020 2020 2020 2020 2020 2020  \">.             \n-00003f90: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-00003fa0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00003fb0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003fc0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-00003fd0: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-00003fe0: 2073 6572 7669 6365 2075 7365 2061 6363   service use acc\n-00003ff0: 6573 736c 6f67 2e20 5d5d 3e3c 2f78 7364  esslog. ]]></xsd\n-00004000: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-00004010: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00004020: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00004030: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00004040: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-00004050: 6962 7574 653e 0a20 2020 2020 2020 2020  ibute>.         \n-00004060: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-00004070: 6962 7574 6520 6e61 6d65 3d22 6578 6563  ibute name=\"exec\n-00004080: 7574 6573 2220 7479 7065 3d22 7873 643a  utes\" type=\"xsd:\n-00004090: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-000040a0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-000040b0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n+00003f30: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00003f40: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00003f50: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00003f60: 653e 0d0a 2020 2020 2020 2020 2020 2020  e>..            \n+00003f70: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+00003f80: 7465 206e 616d 653d 2274 6f6b 656e 2220  te name=\"token\" \n+00003f90: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+00003fa0: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+00003fb0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+00003fc0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00003fd0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003fe0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+00003ff0: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+00004000: 6865 2073 6572 7669 6365 2075 7365 2074  he service use t\n+00004010: 6f6b 656e 2e20 5d5d 3e3c 2f78 7364 3a64  oken. ]]></xsd:d\n+00004020: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+00004030: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00004040: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+00004050: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00004060: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+00004070: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+00004080: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+00004090: 7269 6275 7465 206e 616d 653d 2261 6363  ribute name=\"acc\n+000040a0: 6573 736c 6f67 2220 7479 7065 3d22 7873  esslog\" type=\"xs\n+000040b0: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n 000040c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000040d0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-000040e0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-000040f0: 415b 2054 6865 2073 6572 7669 6365 2061  A[ The service a\n-00004100: 6c6c 6f77 2065 7865 6375 7465 2072 6571  llow execute req\n-00004110: 7565 7374 732e 205d 5d3e 3c2f 7873 643a  uests. ]]></xsd:\n-00004120: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-00004130: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00004140: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-00004150: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00004160: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00004170: 6275 7465 3e0a 2020 2020 2020 2020 2020  bute>.          \n-00004180: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-00004190: 6275 7465 206e 616d 653d 2270 726f 746f  bute name=\"proto\n-000041a0: 636f 6c22 2074 7970 653d 2278 7364 3a73  col\" type=\"xsd:s\n-000041b0: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-000041c0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000041d0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-000041e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000041f0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-00004200: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-00004210: 5b20 5468 6520 7365 7276 6963 6520 7072  [ The service pr\n-00004220: 6f74 6f63 6f6c 2e20 5d5d 3e3c 2f78 7364  otocol. ]]></xsd\n-00004230: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-00004240: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00004250: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00004260: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00004270: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-00004280: 6962 7574 653e 0a20 2020 2020 2020 2020  ibute>.         \n-00004290: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-000042a0: 6962 7574 6520 6e61 6d65 3d22 7761 726d  ibute name=\"warm\n-000042b0: 7570 2220 7479 7065 3d22 7873 643a 7374  up\" type=\"xsd:st\n-000042c0: 7269 6e67 223e 0a20 2020 2020 2020 2020  ring\">.         \n-000042d0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-000042e0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-000042f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00004300: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-00004310: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n-00004320: 2054 6865 2077 6172 6d75 7020 7469 6d65   The warmup time\n-00004330: 2069 6e20 4d69 6c6c 6973 6563 6f6e 6473   in Milliseconds\n-00004340: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-00004350: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00004360: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-00004370: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00004380: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00004390: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-000043a0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-000043b0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-000043c0: 6e61 6d65 3d22 7365 7269 616c 697a 6174  name=\"serializat\n-000043d0: 696f 6e22 2074 7970 653d 2278 7364 3a73  ion\" type=\"xsd:s\n-000043e0: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-000043f0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00004400: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n+000040d0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+000040e0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+000040f0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00004100: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00004110: 4344 4154 415b 2054 6865 2073 6572 7669  CDATA[ The servi\n+00004120: 6365 2075 7365 2061 6363 6573 736c 6f67  ce use accesslog\n+00004130: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00004140: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00004150: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00004160: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00004170: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00004180: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00004190: 653e 0d0a 2020 2020 2020 2020 2020 2020  e>..            \n+000041a0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+000041b0: 7465 206e 616d 653d 2265 7865 6375 7465  te name=\"execute\n+000041c0: 7322 2074 7970 653d 2278 7364 3a73 7472  s\" type=\"xsd:str\n+000041d0: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+000041e0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+000041f0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00004200: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00004210: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+00004220: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+00004230: 5b20 5468 6520 7365 7276 6963 6520 616c  [ The service al\n+00004240: 6c6f 7720 6578 6563 7574 6520 7265 7175  low execute requ\n+00004250: 6573 7473 2e20 5d5d 3e3c 2f78 7364 3a64  ests. ]]></xsd:d\n+00004260: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+00004270: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00004280: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+00004290: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+000042a0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+000042b0: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+000042c0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+000042d0: 7269 6275 7465 206e 616d 653d 2270 726f  ribute name=\"pro\n+000042e0: 746f 636f 6c22 2074 7970 653d 2278 7364  tocol\" type=\"xsd\n+000042f0: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+00004300: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00004310: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00004320: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00004330: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00004340: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+00004350: 4441 5441 5b20 5468 6520 7365 7276 6963  DATA[ The servic\n+00004360: 6520 7072 6f74 6f63 6f6c 2e20 5d5d 3e3c  e protocol. ]]><\n+00004370: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00004380: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00004390: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+000043a0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+000043b0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+000043c0: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+000043d0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+000043e0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+000043f0: 653d 2277 6172 6d75 7022 2074 7970 653d  e=\"warmup\" type=\n+00004400: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n 00004410: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00004420: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-00004430: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-00004440: 5b20 5468 6520 7365 7269 616c 697a 6174  [ The serializat\n-00004450: 696f 6e20 7072 6f74 6f63 6f6c 206f 6620  ion protocol of \n-00004460: 7365 7276 6963 652e 205d 5d3e 3c2f 7873  service. ]]></xs\n-00004470: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00004480: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00004490: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-000044a0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-000044b0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-000044c0: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-000044d0: 2020 2020 2020 2020 3c78 7364 3a61 6e79          <xsd:any\n-000044e0: 4174 7472 6962 7574 6520 6e61 6d65 7370  Attribute namesp\n-000044f0: 6163 653d 2223 236f 7468 6572 2220 7072  ace=\"##other\" pr\n-00004500: 6f63 6573 7343 6f6e 7465 6e74 733d 226c  ocessContents=\"l\n-00004510: 6178 222f 3e0a 2020 2020 2020 2020 2020  ax\"/>.          \n-00004520: 2020 3c2f 7873 643a 6578 7465 6e73 696f    </xsd:extensio\n-00004530: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-00004540: 3a63 6f6d 706c 6578 436f 6e74 656e 743e  :complexContent>\n-00004550: 0a20 2020 203c 2f78 7364 3a63 6f6d 706c  .    </xsd:compl\n-00004560: 6578 5479 7065 3e0a 0a20 2020 203c 7873  exType>..    <xs\n-00004570: 643a 636f 6d70 6c65 7854 7970 6520 6e61  d:complexType na\n-00004580: 6d65 3d22 6170 706c 6963 6174 696f 6e54  me=\"applicationT\n-00004590: 7970 6522 3e0a 2020 2020 2020 2020 3c78  ype\">.        <x\n-000045a0: 7364 3a73 6571 7565 6e63 6520 6d69 6e4f  sd:sequence minO\n-000045b0: 6363 7572 733d 2230 2220 6d61 784f 6363  ccurs=\"0\" maxOcc\n-000045c0: 7572 733d 2275 6e62 6f75 6e64 6564 223e  urs=\"unbounded\">\n-000045d0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-000045e0: 643a 656c 656d 656e 7420 7265 663d 2270  d:element ref=\"p\n-000045f0: 6172 616d 6574 6572 2220 6d69 6e4f 6363  arameter\" minOcc\n-00004600: 7572 733d 2230 2220 6d61 784f 6363 7572  urs=\"0\" maxOccur\n-00004610: 733d 2275 6e62 6f75 6e64 6564 222f 3e0a  s=\"unbounded\"/>.\n-00004620: 2020 2020 2020 2020 3c2f 7873 643a 7365          </xsd:se\n-00004630: 7175 656e 6365 3e0a 2020 2020 2020 2020  quence>.        \n-00004640: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00004650: 616d 653d 2269 6422 2074 7970 653d 2278  ame=\"id\" type=\"x\n-00004660: 7364 3a49 4422 3e0a 2020 2020 2020 2020  sd:ID\">.        \n-00004670: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-00004680: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00004690: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-000046a0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-000046b0: 5b20 5468 6520 756e 6971 7565 2069 6465  [ The unique ide\n-000046c0: 6e74 6966 6965 7220 666f 7220 6120 6265  ntifier for a be\n-000046d0: 616e 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  an. ]]></xsd:doc\n-000046e0: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-000046f0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-00004700: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00004710: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-00004720: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-00004730: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-00004740: 6e61 6d65 2220 7479 7065 3d22 7873 643a  name\" type=\"xsd:\n-00004750: 7374 7269 6e67 2220 7573 653d 2272 6571  string\" use=\"req\n-00004760: 7569 7265 6422 3e0a 2020 2020 2020 2020  uired\">.        \n-00004770: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-00004780: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00004790: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-000047a0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-000047b0: 5b20 5468 6520 6170 706c 6963 6174 696f  [ The applicatio\n-000047c0: 6e20 6e61 6d65 2e20 5d5d 3e3c 2f78 7364  n name. ]]></xsd\n-000047d0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-000047e0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-000047f0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00004800: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-00004810: 6962 7574 653e 0a20 2020 2020 2020 203c  ibute>.        <\n-00004820: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-00004830: 6d65 3d22 7665 7273 696f 6e22 2074 7970  me=\"version\" typ\n-00004840: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-00004850: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00004860: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00004870: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00004880: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00004890: 3c21 5b43 4441 5441 5b20 5468 6520 6170  <![CDATA[ The ap\n-000048a0: 706c 6963 6174 696f 6e20 7665 7273 696f  plication versio\n-000048b0: 6e2e 205d 5d3e 3c2f 7873 643a 646f 6375  n. ]]></xsd:docu\n-000048c0: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-000048d0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-000048e0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-000048f0: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-00004900: 3e0a 2020 2020 2020 2020 3c78 7364 3a61  >.        <xsd:a\n-00004910: 7474 7269 6275 7465 206e 616d 653d 226f  ttribute name=\"o\n-00004920: 776e 6572 2220 7479 7065 3d22 7873 643a  wner\" type=\"xsd:\n-00004930: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-00004940: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00004950: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00004960: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00004970: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00004980: 415b 2054 6865 2061 7070 6c69 6361 7469  A[ The applicati\n-00004990: 6f6e 206f 776e 6572 206e 616d 6520 2865  on owner name (e\n-000049a0: 6d61 696c 2070 7265 6669 7829 2e20 5d5d  mail prefix). ]]\n-000049b0: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-000049c0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-000049d0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-000049e0: 6f6e 3e0a 2020 2020 2020 2020 3c2f 7873  on>.        </xs\n-000049f0: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-00004a00: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-00004a10: 7574 6520 6e61 6d65 3d22 6f72 6761 6e69  ute name=\"organi\n-00004a20: 7a61 7469 6f6e 2220 7479 7065 3d22 7873  zation\" type=\"xs\n-00004a30: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-00004a40: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-00004a50: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00004a60: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-00004a70: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-00004a80: 4154 415b 2054 6865 206f 7267 616e 697a  ATA[ The organiz\n-00004a90: 6174 696f 6e20 6e61 6d65 2e20 5d5d 3e3c  ation name. ]]><\n-00004aa0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-00004ab0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00004ac0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00004ad0: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-00004ae0: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-00004af0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00004b00: 6520 6e61 6d65 3d22 6172 6368 6974 6563  e name=\"architec\n-00004b10: 7475 7265 2220 7479 7065 3d22 7873 643a  ture\" type=\"xsd:\n-00004b20: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-00004b30: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00004b40: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00004b50: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00004b60: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00004b70: 415b 2054 6865 2061 7263 6869 7465 6374  A[ The architect\n-00004b80: 7572 652e 205d 5d3e 3c2f 7873 643a 646f  ure. ]]></xsd:do\n-00004b90: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00004ba0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00004bb0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00004bc0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-00004bd0: 7465 3e0a 2020 2020 2020 2020 3c78 7364  te>.        <xsd\n-00004be0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-00004bf0: 2265 6e76 6972 6f6e 6d65 6e74 2220 7479  \"environment\" ty\n-00004c00: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00004c10: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00004c20: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00004c30: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00004c40: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00004c50: 3e3c 215b 4344 4154 415b 2054 6865 2061  ><![CDATA[ The a\n-00004c60: 7070 6c69 6361 7469 6f6e 2065 6e76 6972  pplication envir\n-00004c70: 6f6e 6d65 6e74 2c20 6567 3a20 6465 762f  onment, eg: dev/\n-00004c80: 7465 7374 2f72 756e 205d 5d3e 3c2f 7873  test/run ]]></xs\n-00004c90: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00004ca0: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00004cb0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00004cc0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00004cd0: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00004ce0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00004cf0: 616d 653d 2263 6f6d 7069 6c65 7222 2074  ame=\"compiler\" t\n-00004d00: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-00004d10: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-00004d20: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00004d30: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00004d40: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00004d50: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-00004d60: 6a61 7661 2063 6f64 6520 636f 6d70 696c  java code compil\n-00004d70: 6572 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  er. ]]></xsd:doc\n-00004d80: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00004d90: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-00004da0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00004db0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-00004dc0: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-00004dd0: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-00004de0: 6c6f 6767 6572 2220 7479 7065 3d22 7873  logger\" type=\"xs\n-00004df0: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-00004e00: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-00004e10: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00004e20: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-00004e30: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-00004e40: 4154 415b 2054 6865 2061 7070 6c69 6361  ATA[ The applica\n-00004e50: 7469 6f6e 206c 6f67 6765 722e 205d 5d3e  tion logger. ]]>\n-00004e60: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-00004e70: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00004e80: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-00004e90: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-00004ea0: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-00004eb0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-00004ec0: 7465 206e 616d 653d 2272 6567 6973 7472  te name=\"registr\n-00004ed0: 7922 2074 7970 653d 2278 7364 3a73 7472  y\" type=\"xsd:str\n-00004ee0: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-00004ef0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-00004f00: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00004f10: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-00004f20: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-00004f30: 5468 6520 6170 706c 6963 6174 696f 6e20  The application \n-00004f40: 7265 6769 7374 7279 2e20 5d5d 3e3c 2f78  registry. ]]></x\n-00004f50: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00004f60: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-00004f70: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00004f80: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00004f90: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00004fa0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00004fb0: 6e61 6d65 3d22 6d6f 6e69 746f 7222 2074  name=\"monitor\" t\n-00004fc0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-00004fd0: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-00004fe0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00004ff0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00005000: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00005010: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-00005020: 6170 706c 6963 6174 696f 6e20 6d6f 6e69  application moni\n-00005030: 746f 722e 205d 5d3e 3c2f 7873 643a 646f  tor. ]]></xsd:do\n-00005040: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00005050: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00005060: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00005070: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-00005080: 7465 3e0a 2020 2020 2020 2020 3c78 7364  te>.        <xsd\n-00005090: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-000050a0: 2273 6875 7477 6169 7422 2074 7970 653d  \"shutwait\" type=\n-000050b0: 2278 7364 3a73 7472 696e 6722 203e 0a20  \"xsd:string\" >. \n-000050c0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-000050d0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-000050e0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000050f0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-00005100: 215b 4344 4154 415b 2054 6865 2061 7070  ![CDATA[ The app\n-00005110: 6c69 6361 7469 6f6e 2073 6875 7444 6f77  lication shutDow\n-00005120: 6e2d 7761 6974 2074 696d 652e 205d 5d3e  n-wait time. ]]>\n-00005130: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-00005140: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00005150: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-00005160: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-00005170: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-00005180: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-00005190: 7465 206e 616d 653d 2264 6566 6175 6c74  te name=\"default\n-000051a0: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-000051b0: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-000051c0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-000051d0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-000051e0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-000051f0: 7469 6f6e 3e3c 215b 4344 4154 415b 2049  tion><![CDATA[ I\n-00005200: 7320 6465 6661 756c 742e 205d 5d3e 3c2f  s default. ]]></\n-00005210: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00005220: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-00005230: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00005240: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-00005250: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00005260: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00005270: 206e 616d 653d 226d 6574 6164 6174 612d   name=\"metadata-\n-00005280: 7479 7065 2220 7479 7065 3d22 7873 643a  type\" type=\"xsd:\n-00005290: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-000052a0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-000052b0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-000052c0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-000052d0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-000052e0: 415b 2054 6865 206d 6574 6164 7461 2074  A[ The metadta t\n-000052f0: 7970 653a 206c 6f63 616c 206f 7220 7265  ype: local or re\n-00005300: 6d6f 7465 2e20 5d5d 3e3c 2f78 7364 3a64  mote. ]]></xsd:d\n-00005310: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00005320: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00005330: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00005340: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00005350: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-00005360: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00005370: 3d22 7265 6769 7374 6572 2d63 6f6e 7375  =\"register-consu\n-00005380: 6d65 7222 2074 7970 653d 2278 7364 3a62  mer\" type=\"xsd:b\n-00005390: 6f6f 6c65 616e 223e 0a20 2020 2020 2020  oolean\">.       \n-000053a0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-000053b0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-000053c0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-000053d0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-000053e0: 415b 2052 6567 6973 7465 7220 636f 6e73  A[ Register cons\n-000053f0: 756d 6572 2069 6e73 7461 6e63 6520 6f72  umer instance or\n-00005400: 206e 6f74 2c20 6465 6661 756c 7420 6661   not, default fa\n-00005410: 6c73 652e 205d 5d3e 3c2f 7873 643a 646f  lse. ]]></xsd:do\n-00005420: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00005430: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00005440: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00005450: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-00005460: 7465 3e0a 0a20 2020 203c 2f78 7364 3a63  te>..    </xsd:c\n-00005470: 6f6d 706c 6578 5479 7065 3e0a 0a20 2020  omplexType>..   \n-00005480: 203c 7873 643a 636f 6d70 6c65 7854 7970   <xsd:complexTyp\n-00005490: 6520 6e61 6d65 3d22 6d6f 6475 6c65 5479  e name=\"moduleTy\n-000054a0: 7065 223e 0a20 2020 2020 2020 203c 7873  pe\">.        <xs\n-000054b0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-000054c0: 3d22 6964 2220 7479 7065 3d22 7873 643a  =\"id\" type=\"xsd:\n-000054d0: 4944 223e 0a20 2020 2020 2020 2020 2020  ID\">.           \n-000054e0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-000054f0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00005500: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-00005510: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-00005520: 6865 2075 6e69 7175 6520 6964 656e 7469  he unique identi\n-00005530: 6669 6572 2066 6f72 2061 2062 6561 6e2e  fier for a bean.\n-00005540: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-00005550: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00005560: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00005570: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-00005580: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00005590: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-000055a0: 7269 6275 7465 206e 616d 653d 226e 616d  ribute name=\"nam\n-000055b0: 6522 2074 7970 653d 2278 7364 3a73 7472  e\" type=\"xsd:str\n-000055c0: 696e 6722 2075 7365 3d22 7265 7175 6972  ing\" use=\"requir\n-000055d0: 6564 223e 0a20 2020 2020 2020 2020 2020  ed\">.           \n-000055e0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-000055f0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00005600: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-00005610: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-00005620: 6865 206d 6f64 756c 6520 6e61 6d65 2e20  he module name. \n-00005630: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00005640: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00005650: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00005660: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-00005670: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-00005680: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-00005690: 6962 7574 6520 6e61 6d65 3d22 7665 7273  ibute name=\"vers\n-000056a0: 696f 6e22 2074 7970 653d 2278 7364 3a73  ion\" type=\"xsd:s\n-000056b0: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-000056c0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-000056d0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-000056e0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-000056f0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-00005700: 5b20 5468 6520 6d6f 6475 6c65 2076 6572  [ The module ver\n-00005710: 7369 6f6e 2e20 5d5d 3e3c 2f78 7364 3a64  sion. ]]></xsd:d\n-00005720: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00005730: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00005740: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00005750: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00005760: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-00005770: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00005780: 3d22 6f77 6e65 7222 2074 7970 653d 2278  =\"owner\" type=\"x\n-00005790: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-000057a0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-000057b0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-000057c0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-000057d0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-000057e0: 4441 5441 5b20 5468 6520 6d6f 6475 6c65  DATA[ The module\n-000057f0: 206f 776e 6572 206e 616d 6520 2865 6d61   owner name (ema\n-00005800: 696c 2070 7265 6669 7829 2e20 5d5d 3e3c  il prefix). ]]><\n-00005810: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-00005820: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00005830: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00005840: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-00005850: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-00005860: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00005870: 6520 6e61 6d65 3d22 6f72 6761 6e69 7a61  e name=\"organiza\n-00005880: 7469 6f6e 2220 7479 7065 3d22 7873 643a  tion\" type=\"xsd:\n-00005890: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-000058a0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-000058b0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-000058c0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-000058d0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-000058e0: 415b 2054 6865 206d 6f64 756c 6520 6f72  A[ The module or\n-000058f0: 6761 6e69 7a61 7469 6f6e 2e20 5d5d 3e3c  ganization. ]]><\n-00005900: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-00005910: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00005920: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00005930: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-00005940: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-00005950: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00005960: 6520 6e61 6d65 3d22 7265 6769 7374 7279  e name=\"registry\n-00005970: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-00005980: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-00005990: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-000059a0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-000059b0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-000059c0: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-000059d0: 6865 206d 6f64 756c 6520 7265 6769 7374  he module regist\n-000059e0: 7279 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ry. ]]></xsd:doc\n-000059f0: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00005a00: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-00005a10: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00005a20: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-00005a30: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-00005a40: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-00005a50: 6d6f 6e69 746f 7222 2074 7970 653d 2278  monitor\" type=\"x\n-00005a60: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-00005a70: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00005a80: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00005a90: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00005aa0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00005ab0: 4441 5441 5b20 5468 6520 6d6f 6475 6c65  DATA[ The module\n-00005ac0: 206d 6f6e 6974 6f72 2e20 5d5d 3e3c 2f78   monitor. ]]></x\n-00005ad0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00005ae0: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-00005af0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00005b00: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00005b10: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00005b20: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00005b30: 6e61 6d65 3d22 6465 6661 756c 7422 2074  name=\"default\" t\n-00005b40: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-00005b50: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-00005b60: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00005b70: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00005b80: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00005b90: 6e3e 3c21 5b43 4441 5441 5b20 4973 2064  n><![CDATA[ Is d\n-00005ba0: 6566 6175 6c74 2e20 5d5d 3e3c 2f78 7364  efault. ]]></xsd\n-00005bb0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-00005bc0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00005bd0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00005be0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-00005bf0: 6962 7574 653e 0a20 2020 203c 2f78 7364  ibute>.    </xsd\n-00005c00: 3a63 6f6d 706c 6578 5479 7065 3e0a 0a20  :complexType>.. \n-00005c10: 2020 203c 7873 643a 636f 6d70 6c65 7854     <xsd:complexT\n-00005c20: 7970 6520 6e61 6d65 3d22 7265 6769 7374  ype name=\"regist\n-00005c30: 7279 5479 7065 223e 0a20 2020 2020 2020  ryType\">.       \n-00005c40: 203c 7873 643a 7365 7175 656e 6365 206d   <xsd:sequence m\n-00005c50: 696e 4f63 6375 7273 3d22 3022 206d 6178  inOccurs=\"0\" max\n-00005c60: 4f63 6375 7273 3d22 756e 626f 756e 6465  Occurs=\"unbounde\n-00005c70: 6422 3e0a 2020 2020 2020 2020 2020 2020  d\">.            \n-00005c80: 3c78 7364 3a65 6c65 6d65 6e74 2072 6566  <xsd:element ref\n-00005c90: 3d22 7061 7261 6d65 7465 7222 206d 696e  =\"parameter\" min\n-00005ca0: 4f63 6375 7273 3d22 3022 206d 6178 4f63  Occurs=\"0\" maxOc\n-00005cb0: 6375 7273 3d22 756e 626f 756e 6465 6422  curs=\"unbounded\"\n-00005cc0: 2f3e 0a20 2020 2020 2020 203c 2f78 7364  />.        </xsd\n-00005cd0: 3a73 6571 7565 6e63 653e 0a20 2020 2020  :sequence>.     \n-00005ce0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00005cf0: 6520 6e61 6d65 3d22 6964 2220 7479 7065  e name=\"id\" type\n-00005d00: 3d22 7873 643a 4944 223e 0a20 2020 2020  =\"xsd:ID\">.     \n-00005d10: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-00005d20: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00005d30: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-00005d40: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-00005d50: 4154 415b 2054 6865 2075 6e69 7175 6520  ATA[ The unique \n-00005d60: 6964 656e 7469 6669 6572 2066 6f72 2061  identifier for a\n-00005d70: 2062 6561 6e2e 205d 5d3e 3c2f 7873 643a   bean. ]]></xsd:\n-00005d80: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n+00004420: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00004430: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00004440: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00004450: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00004460: 3c21 5b43 4441 5441 5b20 5468 6520 7761  <![CDATA[ The wa\n+00004470: 726d 7570 2074 696d 6520 696e 204d 696c  rmup time in Mil\n+00004480: 6c69 7365 636f 6e64 732e 205d 5d3e 3c2f  liseconds. ]]></\n+00004490: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+000044a0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000044b0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+000044c0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+000044d0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+000044e0: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+000044f0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00004500: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00004510: 3d22 7365 7269 616c 697a 6174 696f 6e22  =\"serialization\"\n+00004520: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+00004530: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+00004540: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+00004550: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00004560: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00004570: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+00004580: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+00004590: 5468 6520 7365 7269 616c 697a 6174 696f  The serializatio\n+000045a0: 6e20 7072 6f74 6f63 6f6c 206f 6620 7365  n protocol of se\n+000045b0: 7276 6963 652e 205d 5d3e 3c2f 7873 643a  rvice. ]]></xsd:\n+000045c0: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+000045d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000045e0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+000045f0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00004600: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+00004610: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+00004620: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+00004630: 7941 7474 7269 6275 7465 206e 616d 6573  yAttribute names\n+00004640: 7061 6365 3d22 2323 6f74 6865 7222 2070  pace=\"##other\" p\n+00004650: 726f 6365 7373 436f 6e74 656e 7473 3d22  rocessContents=\"\n+00004660: 6c61 7822 2f3e 0d0a 2020 2020 2020 2020  lax\"/>..        \n+00004670: 2020 2020 3c2f 7873 643a 6578 7465 6e73      </xsd:extens\n+00004680: 696f 6e3e 0d0a 2020 2020 2020 2020 3c2f  ion>..        </\n+00004690: 7873 643a 636f 6d70 6c65 7843 6f6e 7465  xsd:complexConte\n+000046a0: 6e74 3e0d 0a20 2020 203c 2f78 7364 3a63  nt>..    </xsd:c\n+000046b0: 6f6d 706c 6578 5479 7065 3e0d 0a0d 0a20  omplexType>.... \n+000046c0: 2020 203c 7873 643a 636f 6d70 6c65 7854     <xsd:complexT\n+000046d0: 7970 6520 6e61 6d65 3d22 6170 706c 6963  ype name=\"applic\n+000046e0: 6174 696f 6e54 7970 6522 3e0d 0a20 2020  ationType\">..   \n+000046f0: 2020 2020 203c 7873 643a 7365 7175 656e       <xsd:sequen\n+00004700: 6365 206d 696e 4f63 6375 7273 3d22 3022  ce minOccurs=\"0\"\n+00004710: 206d 6178 4f63 6375 7273 3d22 756e 626f   maxOccurs=\"unbo\n+00004720: 756e 6465 6422 3e0d 0a20 2020 2020 2020  unded\">..       \n+00004730: 2020 2020 203c 7873 643a 656c 656d 656e       <xsd:elemen\n+00004740: 7420 7265 663d 2270 6172 616d 6574 6572  t ref=\"parameter\n+00004750: 2220 6d69 6e4f 6363 7572 733d 2230 2220  \" minOccurs=\"0\" \n+00004760: 6d61 784f 6363 7572 733d 2275 6e62 6f75  maxOccurs=\"unbou\n+00004770: 6e64 6564 222f 3e0d 0a20 2020 2020 2020  nded\"/>..       \n+00004780: 203c 2f78 7364 3a73 6571 7565 6e63 653e   </xsd:sequence>\n+00004790: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+000047a0: 7474 7269 6275 7465 206e 616d 653d 2269  ttribute name=\"i\n+000047b0: 6422 2074 7970 653d 2278 7364 3a49 4422  d\" type=\"xsd:ID\"\n+000047c0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+000047d0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+000047e0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000047f0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00004800: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+00004810: 6520 756e 6971 7565 2069 6465 6e74 6966  e unique identif\n+00004820: 6965 7220 666f 7220 6120 6265 616e 2e20  ier for a bean. \n+00004830: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+00004840: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00004850: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00004860: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00004870: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00004880: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+00004890: 7474 7269 6275 7465 206e 616d 653d 226e  ttribute name=\"n\n+000048a0: 616d 6522 2074 7970 653d 2278 7364 3a73  ame\" type=\"xsd:s\n+000048b0: 7472 696e 6722 2075 7365 3d22 7265 7175  tring\" use=\"requ\n+000048c0: 6972 6564 223e 0d0a 2020 2020 2020 2020  ired\">..        \n+000048d0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+000048e0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+000048f0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00004900: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00004910: 415b 2054 6865 2061 7070 6c69 6361 7469  A[ The applicati\n+00004920: 6f6e 206e 616d 652e 205d 5d3e 3c2f 7873  on name. ]]></xs\n+00004930: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00004940: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+00004950: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00004960: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+00004970: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+00004980: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+00004990: 6520 6e61 6d65 3d22 7665 7273 696f 6e22  e name=\"version\"\n+000049a0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+000049b0: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+000049c0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+000049d0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+000049e0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+000049f0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+00004a00: 5468 6520 6170 706c 6963 6174 696f 6e20  The application \n+00004a10: 7665 7273 696f 6e2e 205d 5d3e 3c2f 7873  version. ]]></xs\n+00004a20: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00004a30: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+00004a40: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00004a50: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+00004a60: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+00004a70: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+00004a80: 6520 6e61 6d65 3d22 6f77 6e65 7222 2074  e name=\"owner\" t\n+00004a90: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+00004aa0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00004ab0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00004ac0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00004ad0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00004ae0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+00004af0: 6520 6170 706c 6963 6174 696f 6e20 6f77  e application ow\n+00004b00: 6e65 7220 6e61 6d65 2028 656d 6169 6c20  ner name (email \n+00004b10: 7072 6566 6978 292e 205d 5d3e 3c2f 7873  prefix). ]]></xs\n+00004b20: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00004b30: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+00004b40: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00004b50: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+00004b60: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+00004b70: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+00004b80: 6520 6e61 6d65 3d22 6f72 6761 6e69 7a61  e name=\"organiza\n+00004b90: 7469 6f6e 2220 7479 7065 3d22 7873 643a  tion\" type=\"xsd:\n+00004ba0: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+00004bb0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00004bc0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00004bd0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00004be0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00004bf0: 4154 415b 2054 6865 206f 7267 616e 697a  ATA[ The organiz\n+00004c00: 6174 696f 6e20 6e61 6d65 2e20 5d5d 3e3c  ation name. ]]><\n+00004c10: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00004c20: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00004c30: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00004c40: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+00004c50: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+00004c60: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00004c70: 6275 7465 206e 616d 653d 2261 7263 6869  bute name=\"archi\n+00004c80: 7465 6374 7572 6522 2074 7970 653d 2278  tecture\" type=\"x\n+00004c90: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+00004ca0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+00004cb0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00004cc0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00004cd0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00004ce0: 5b43 4441 5441 5b20 5468 6520 6172 6368  [CDATA[ The arch\n+00004cf0: 6974 6563 7475 7265 2e20 5d5d 3e3c 2f78  itecture. ]]></x\n+00004d00: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00004d10: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00004d20: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00004d30: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+00004d40: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+00004d50: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+00004d60: 7465 206e 616d 653d 2265 6e76 6972 6f6e  te name=\"environ\n+00004d70: 6d65 6e74 2220 7479 7065 3d22 7873 643a  ment\" type=\"xsd:\n+00004d80: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+00004d90: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00004da0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00004db0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00004dc0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00004dd0: 4154 415b 2054 6865 2061 7070 6c69 6361  ATA[ The applica\n+00004de0: 7469 6f6e 2065 6e76 6972 6f6e 6d65 6e74  tion environment\n+00004df0: 2c20 6567 3a20 6465 762f 7465 7374 2f72  , eg: dev/test/r\n+00004e00: 756e 205d 5d3e 3c2f 7873 643a 646f 6375  un ]]></xsd:docu\n+00004e10: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00004e20: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00004e30: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00004e40: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00004e50: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+00004e60: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00004e70: 3d22 636f 6d70 696c 6572 2220 7479 7065  =\"compiler\" type\n+00004e80: 3d22 7873 643a 7374 7269 6e67 223e 0d0a  =\"xsd:string\">..\n+00004e90: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00004ea0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00004eb0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00004ec0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00004ed0: 3e3c 215b 4344 4154 415b 2054 6865 206a  ><![CDATA[ The j\n+00004ee0: 6176 6120 636f 6465 2063 6f6d 7069 6c65  ava code compile\n+00004ef0: 722e 205d 5d3e 3c2f 7873 643a 646f 6375  r. ]]></xsd:docu\n+00004f00: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00004f10: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00004f20: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00004f30: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00004f40: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+00004f50: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00004f60: 3d22 6c6f 6767 6572 2220 7479 7065 3d22  =\"logger\" type=\"\n+00004f70: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+00004f80: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00004f90: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00004fa0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00004fb0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+00004fc0: 215b 4344 4154 415b 2054 6865 2061 7070  ![CDATA[ The app\n+00004fd0: 6c69 6361 7469 6f6e 206c 6f67 6765 722e  lication logger.\n+00004fe0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00004ff0: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00005000: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+00005010: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00005020: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+00005030: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+00005040: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+00005050: 7265 6769 7374 7279 2220 7479 7065 3d22  registry\" type=\"\n+00005060: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+00005070: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00005080: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00005090: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000050a0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+000050b0: 215b 4344 4154 415b 2054 6865 2061 7070  ![CDATA[ The app\n+000050c0: 6c69 6361 7469 6f6e 2072 6567 6973 7472  lication registr\n+000050d0: 792e 205d 5d3e 3c2f 7873 643a 646f 6375  y. ]]></xsd:docu\n+000050e0: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+000050f0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00005100: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00005110: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00005120: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+00005130: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00005140: 3d22 6d6f 6e69 746f 7222 2074 7970 653d  =\"monitor\" type=\n+00005150: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+00005160: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00005170: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00005180: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00005190: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+000051a0: 3c21 5b43 4441 5441 5b20 5468 6520 6170  <![CDATA[ The ap\n+000051b0: 706c 6963 6174 696f 6e20 6d6f 6e69 746f  plication monito\n+000051c0: 722e 205d 5d3e 3c2f 7873 643a 646f 6375  r. ]]></xsd:docu\n+000051d0: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+000051e0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+000051f0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00005200: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00005210: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+00005220: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00005230: 3d22 7368 7574 7761 6974 2220 7479 7065  =\"shutwait\" type\n+00005240: 3d22 7873 643a 7374 7269 6e67 2220 3e0d  =\"xsd:string\" >.\n+00005250: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00005260: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00005270: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00005280: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00005290: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n+000052a0: 6170 706c 6963 6174 696f 6e20 7368 7574  application shut\n+000052b0: 446f 776e 2d77 6169 7420 7469 6d65 2e20  Down-wait time. \n+000052c0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+000052d0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+000052e0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+000052f0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00005300: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00005310: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+00005320: 7474 7269 6275 7465 206e 616d 653d 2264  ttribute name=\"d\n+00005330: 6566 6175 6c74 2220 7479 7065 3d22 7873  efault\" type=\"xs\n+00005340: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+00005350: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+00005360: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00005370: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00005380: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00005390: 4344 4154 415b 2049 7320 6465 6661 756c  CDATA[ Is defaul\n+000053a0: 742e 205d 5d3e 3c2f 7873 643a 646f 6375  t. ]]></xsd:docu\n+000053b0: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+000053c0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+000053d0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+000053e0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+000053f0: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+00005400: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00005410: 3d22 6d65 7461 6461 7461 2d74 7970 6522  =\"metadata-type\"\n+00005420: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+00005430: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+00005440: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+00005450: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00005460: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+00005470: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+00005480: 5468 6520 6d65 7461 6474 6120 7479 7065  The metadta type\n+00005490: 3a20 6c6f 6361 6c20 6f72 2072 656d 6f74  : local or remot\n+000054a0: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n+000054b0: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+000054c0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+000054d0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+000054e0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+000054f0: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+00005500: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00005510: 3d22 7265 6769 7374 6572 2d63 6f6e 7375  =\"register-consu\n+00005520: 6d65 7222 2074 7970 653d 2278 7364 3a62  mer\" type=\"xsd:b\n+00005530: 6f6f 6c65 616e 223e 0d0a 2020 2020 2020  oolean\">..      \n+00005540: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00005550: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00005560: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00005570: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00005580: 4154 415b 2052 6567 6973 7465 7220 636f  ATA[ Register co\n+00005590: 6e73 756d 6572 2069 6e73 7461 6e63 6520  nsumer instance \n+000055a0: 6f72 206e 6f74 2c20 6465 6661 756c 7420  or not, default \n+000055b0: 6661 6c73 652e 205d 5d3e 3c2f 7873 643a  false. ]]></xsd:\n+000055c0: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+000055d0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+000055e0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+000055f0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+00005600: 7269 6275 7465 3e0d 0a0d 0a20 2020 203c  ribute>....    <\n+00005610: 2f78 7364 3a63 6f6d 706c 6578 5479 7065  /xsd:complexType\n+00005620: 3e0d 0a0d 0a20 2020 203c 7873 643a 636f  >....    <xsd:co\n+00005630: 6d70 6c65 7854 7970 6520 6e61 6d65 3d22  mplexType name=\"\n+00005640: 6d6f 6475 6c65 5479 7065 223e 0d0a 2020  moduleType\">..  \n+00005650: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00005660: 6275 7465 206e 616d 653d 2269 6422 2074  bute name=\"id\" t\n+00005670: 7970 653d 2278 7364 3a49 4422 3e0d 0a20  ype=\"xsd:ID\">.. \n+00005680: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00005690: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+000056a0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+000056b0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+000056c0: 3c21 5b43 4441 5441 5b20 5468 6520 756e  <![CDATA[ The un\n+000056d0: 6971 7565 2069 6465 6e74 6966 6965 7220  ique identifier \n+000056e0: 666f 7220 6120 6265 616e 2e20 5d5d 3e3c  for a bean. ]]><\n+000056f0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00005700: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00005710: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00005720: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+00005730: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+00005740: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00005750: 6275 7465 206e 616d 653d 226e 616d 6522  bute name=\"name\"\n+00005760: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+00005770: 6722 2075 7365 3d22 7265 7175 6972 6564  g\" use=\"required\n+00005780: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+00005790: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+000057a0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+000057b0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+000057c0: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+000057d0: 6865 206d 6f64 756c 6520 6e61 6d65 2e20  he module name. \n+000057e0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+000057f0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00005800: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00005810: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00005820: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00005830: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+00005840: 7474 7269 6275 7465 206e 616d 653d 2276  ttribute name=\"v\n+00005850: 6572 7369 6f6e 2220 7479 7065 3d22 7873  ersion\" type=\"xs\n+00005860: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+00005870: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+00005880: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00005890: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+000058a0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+000058b0: 4344 4154 415b 2054 6865 206d 6f64 756c  CDATA[ The modul\n+000058c0: 6520 7665 7273 696f 6e2e 205d 5d3e 3c2f  e version. ]]></\n+000058d0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+000058e0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000058f0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+00005900: 3e0d 0a20 2020 2020 2020 203c 2f78 7364  >..        </xsd\n+00005910: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00005920: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+00005930: 7574 6520 6e61 6d65 3d22 6f77 6e65 7222  ute name=\"owner\"\n+00005940: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+00005950: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+00005960: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+00005970: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00005980: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+00005990: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+000059a0: 5468 6520 6d6f 6475 6c65 206f 776e 6572  The module owner\n+000059b0: 206e 616d 6520 2865 6d61 696c 2070 7265   name (email pre\n+000059c0: 6669 7829 2e20 5d5d 3e3c 2f78 7364 3a64  fix). ]]></xsd:d\n+000059d0: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+000059e0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+000059f0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00005a00: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+00005a10: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+00005a20: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+00005a30: 616d 653d 226f 7267 616e 697a 6174 696f  ame=\"organizatio\n+00005a40: 6e22 2074 7970 653d 2278 7364 3a73 7472  n\" type=\"xsd:str\n+00005a50: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+00005a60: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00005a70: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00005a80: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+00005a90: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+00005aa0: 5b20 5468 6520 6d6f 6475 6c65 206f 7267  [ The module org\n+00005ab0: 616e 697a 6174 696f 6e2e 205d 5d3e 3c2f  anization. ]]></\n+00005ac0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00005ad0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00005ae0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+00005af0: 3e0d 0a20 2020 2020 2020 203c 2f78 7364  >..        </xsd\n+00005b00: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00005b10: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+00005b20: 7574 6520 6e61 6d65 3d22 7265 6769 7374  ute name=\"regist\n+00005b30: 7279 2220 7479 7065 3d22 7873 643a 7374  ry\" type=\"xsd:st\n+00005b40: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+00005b50: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+00005b60: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00005b70: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00005b80: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00005b90: 415b 2054 6865 206d 6f64 756c 6520 7265  A[ The module re\n+00005ba0: 6769 7374 7279 2e20 5d5d 3e3c 2f78 7364  gistry. ]]></xsd\n+00005bb0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00005bc0: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n+00005bd0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00005be0: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+00005bf0: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+00005c00: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+00005c10: 206e 616d 653d 226d 6f6e 6974 6f72 2220   name=\"monitor\" \n+00005c20: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+00005c30: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+00005c40: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+00005c50: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00005c60: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+00005c70: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+00005c80: 6865 206d 6f64 756c 6520 6d6f 6e69 746f  he module monito\n+00005c90: 722e 205d 5d3e 3c2f 7873 643a 646f 6375  r. ]]></xsd:docu\n+00005ca0: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00005cb0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00005cc0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00005cd0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00005ce0: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+00005cf0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00005d00: 3d22 6465 6661 756c 7422 2074 7970 653d  =\"default\" type=\n+00005d10: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+00005d20: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00005d30: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00005d40: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00005d50: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00005d60: 3c21 5b43 4441 5441 5b20 4973 2064 6566  <![CDATA[ Is def\n+00005d70: 6175 6c74 2e20 5d5d 3e3c 2f78 7364 3a64  ault. ]]></xsd:d\n+00005d80: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n 00005d90: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00005da0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00005db0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00005dc0: 6275 7465 3e0a 2020 2020 2020 2020 3c78  bute>.        <x\n-00005dd0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-00005de0: 653d 2261 6464 7265 7373 2220 7479 7065  e=\"address\" type\n-00005df0: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-00005e00: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00005e10: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00005e20: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00005e30: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-00005e40: 215b 4344 4154 415b 2054 6865 2072 6567  ![CDATA[ The reg\n-00005e50: 6973 7472 7920 6164 6472 6573 732e 205d  istry address. ]\n-00005e60: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-00005e70: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00005e80: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-00005e90: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-00005ea0: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-00005eb0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-00005ec0: 6275 7465 206e 616d 653d 2270 6f72 7422  bute name=\"port\"\n-00005ed0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-00005ee0: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-00005ef0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+00005da0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00005db0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+00005dc0: 6962 7574 653e 0d0a 2020 2020 3c2f 7873  ibute>..    </xs\n+00005dd0: 643a 636f 6d70 6c65 7854 7970 653e 0d0a  d:complexType>..\n+00005de0: 0d0a 2020 2020 3c78 7364 3a63 6f6d 706c  ..    <xsd:compl\n+00005df0: 6578 5479 7065 206e 616d 653d 2272 6567  exType name=\"reg\n+00005e00: 6973 7472 7954 7970 6522 3e0d 0a20 2020  istryType\">..   \n+00005e10: 2020 2020 203c 7873 643a 7365 7175 656e       <xsd:sequen\n+00005e20: 6365 206d 696e 4f63 6375 7273 3d22 3022  ce minOccurs=\"0\"\n+00005e30: 206d 6178 4f63 6375 7273 3d22 756e 626f   maxOccurs=\"unbo\n+00005e40: 756e 6465 6422 3e0d 0a20 2020 2020 2020  unded\">..       \n+00005e50: 2020 2020 203c 7873 643a 656c 656d 656e       <xsd:elemen\n+00005e60: 7420 7265 663d 2270 6172 616d 6574 6572  t ref=\"parameter\n+00005e70: 2220 6d69 6e4f 6363 7572 733d 2230 2220  \" minOccurs=\"0\" \n+00005e80: 6d61 784f 6363 7572 733d 2275 6e62 6f75  maxOccurs=\"unbou\n+00005e90: 6e64 6564 222f 3e0d 0a20 2020 2020 2020  nded\"/>..       \n+00005ea0: 203c 2f78 7364 3a73 6571 7565 6e63 653e   </xsd:sequence>\n+00005eb0: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+00005ec0: 7474 7269 6275 7465 206e 616d 653d 2269  ttribute name=\"i\n+00005ed0: 6422 2074 7970 653d 2278 7364 3a49 4422  d\" type=\"xsd:ID\"\n+00005ee0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00005ef0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n 00005f00: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n 00005f10: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n 00005f20: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-00005f30: 6520 7265 6769 7374 7279 2064 6566 6175  e registry defau\n-00005f40: 6c74 2070 6f72 742e 205d 5d3e 3c2f 7873  lt port. ]]></xs\n-00005f50: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00005f60: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00005f70: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00005f80: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00005f90: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00005fa0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00005fb0: 616d 653d 2270 726f 746f 636f 6c22 2074  ame=\"protocol\" t\n-00005fc0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-00005fd0: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-00005fe0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00005ff0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00006000: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00006010: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-00006020: 7265 6769 7374 7279 206c 6f6f 6b75 7020  registry lookup \n-00006030: 7072 6f74 6f63 6f6c 2e20 5d5d 3e3c 2f78  protocol. ]]></x\n-00006040: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00006050: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-00006060: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00006070: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00006080: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00006090: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-000060a0: 6e61 6d65 3d22 7573 6572 6e61 6d65 2220  name=\"username\" \n-000060b0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-000060c0: 223e 0a20 2020 2020 2020 2020 2020 203c  \">.            <\n-000060d0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-000060e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000060f0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-00006100: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-00006110: 2072 6567 6973 7472 7920 7573 6572 6e61   registry userna\n-00006120: 6d65 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  me. ]]></xsd:doc\n-00006130: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00006140: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-00006150: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00006160: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-00006170: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-00006180: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-00006190: 7061 7373 776f 7264 2220 7479 7065 3d22  password\" type=\"\n-000061a0: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-000061b0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-000061c0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-000061d0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-000061e0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-000061f0: 4344 4154 415b 2054 6865 2072 6567 6973  CDATA[ The regis\n-00006200: 7472 7920 7061 7373 776f 7264 2e20 5d5d  try password. ]]\n-00006210: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-00006220: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00006230: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-00006240: 6f6e 3e0a 2020 2020 2020 2020 3c2f 7873  on>.        </xs\n-00006250: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-00006260: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-00006270: 7574 6520 6e61 6d65 3d22 7472 616e 7370  ute name=\"transp\n-00006280: 6f72 7422 2074 7970 653d 2278 7364 3a73  ort\" type=\"xsd:s\n-00006290: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-000062a0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-000062b0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-000062c0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-000062d0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-000062e0: 5b20 5468 6520 7072 6f74 6f63 6f6c 2074  [ The protocol t\n-000062f0: 7261 6e73 706f 7274 6572 2074 7970 652e  ransporter type.\n-00006300: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-00006310: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00006320: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00006330: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-00006340: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00006350: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-00006360: 7269 6275 7465 206e 616d 653d 2274 7261  ribute name=\"tra\n-00006370: 6e73 706f 7274 6572 2220 7479 7065 3d22  nsporter\" type=\"\n-00006380: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-00006390: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-000063a0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-000063b0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-000063c0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-000063d0: 4344 4154 415b 2054 6865 2070 726f 746f  CDATA[ The proto\n-000063e0: 636f 6c20 7472 616e 7370 6f72 7465 7220  col transporter \n-000063f0: 7479 7065 2e20 5d5d 3e3c 2f78 7364 3a64  type. ]]></xsd:d\n-00006400: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00006410: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00006420: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00006430: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00006440: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-00006450: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00006460: 3d22 7365 7276 6572 2220 7479 7065 3d22  =\"server\" type=\"\n-00006470: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-00006480: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-00006490: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-000064a0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-000064b0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-000064c0: 4344 4154 415b 2054 6865 2070 726f 746f  CDATA[ The proto\n-000064d0: 636f 6c20 7365 7276 6572 2074 7970 652e  col server type.\n-000064e0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-000064f0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00006500: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00006510: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-00006520: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00006530: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-00006540: 7269 6275 7465 206e 616d 653d 2263 6c69  ribute name=\"cli\n-00006550: 656e 7422 2074 7970 653d 2278 7364 3a73  ent\" type=\"xsd:s\n-00006560: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-00006570: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-00006580: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00006590: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-000065a0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-000065b0: 5b20 5468 6520 7072 6f74 6f63 6f6c 2063  [ The protocol c\n-000065c0: 6c69 656e 7420 7479 7065 2e20 5d5d 3e3c  lient type. ]]><\n-000065d0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-000065e0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-000065f0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00006600: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-00006610: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-00006620: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00006630: 6520 6e61 6d65 3d22 636c 7573 7465 7222  e name=\"cluster\"\n-00006640: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-00006650: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-00006660: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-00006670: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00006680: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-00006690: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-000066a0: 6520 7265 6769 7374 7279 2063 6c75 7374  e registry clust\n-000066b0: 6572 2074 7970 652e 205d 5d3e 3c2f 7873  er type. ]]></xs\n-000066c0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-000066d0: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-000066e0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-000066f0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00006700: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00006710: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00006720: 616d 653d 227a 6f6e 6522 2074 7970 653d  ame=\"zone\" type=\n-00006730: 2278 7364 3a73 7472 696e 6722 3e0a 2020  \"xsd:string\">.  \n-00006740: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00006750: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00006760: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00006770: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-00006780: 5b43 4441 5441 5b20 5468 6520 7265 6769  [CDATA[ The regi\n-00006790: 7374 7279 207a 6f6e 6520 7479 7065 2e20  stry zone type. \n-000067a0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-000067b0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-000067c0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-000067d0: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-000067e0: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-000067f0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-00006800: 6962 7574 6520 6e61 6d65 3d22 666f 726b  ibute name=\"fork\n-00006810: 7322 2074 7970 653d 2278 7364 3a73 7472  s\" type=\"xsd:str\n-00006820: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-00006830: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-00006840: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00006850: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-00006860: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-00006870: 466f 726b 696e 6743 6c75 7374 6572 2066  ForkingCluster f\n-00006880: 6f72 6b73 2e20 5d5d 3e3c 2f78 7364 3a64  orks. ]]></xsd:d\n-00006890: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-000068a0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-000068b0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-000068c0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-000068d0: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-000068e0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-000068f0: 3d22 6772 6f75 7022 2074 7970 653d 2278  =\"group\" type=\"x\n-00006900: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-00006910: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00006920: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00006930: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00006940: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00006950: 4441 5441 5b20 5468 6520 7265 6769 7374  DATA[ The regist\n-00006960: 7279 2067 726f 7570 2e20 5d5d 3e3c 2f78  ry group. ]]></x\n-00006970: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00006980: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-00006990: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-000069a0: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-000069b0: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-000069c0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-000069d0: 6e61 6d65 3d22 7665 7273 696f 6e22 2074  name=\"version\" t\n-000069e0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-000069f0: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-00006a00: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00006a10: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00006a20: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00006a30: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-00006a40: 7265 6769 7374 7279 2076 6572 7369 6f6e  registry version\n-00006a50: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-00006a60: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00006a70: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00006a80: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00006a90: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00006aa0: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n-00006ab0: 7472 6962 7574 6520 6e61 6d65 3d22 7469  tribute name=\"ti\n-00006ac0: 6d65 6f75 7422 2074 7970 653d 2278 7364  meout\" type=\"xsd\n-00006ad0: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-00006ae0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-00006af0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00006b00: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-00006b10: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-00006b20: 5441 5b20 5468 6520 7265 7175 6573 7420  TA[ The request \n-00006b30: 7469 6d65 6f75 742e 205d 5d3e 3c2f 7873  timeout. ]]></xs\n-00006b40: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00006b50: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00006b60: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00006b70: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00006b80: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00006b90: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00006ba0: 616d 653d 2273 6573 7369 6f6e 2220 7479  ame=\"session\" ty\n-00006bb0: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00006bc0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00006bd0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00006be0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00006bf0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00006c00: 3e3c 215b 4344 4154 415b 2054 6865 2073  ><![CDATA[ The s\n-00006c10: 6573 7369 6f6e 2074 696d 656f 7574 2e20  ession timeout. \n-00006c20: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00006c30: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00006c40: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00006c50: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-00006c60: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-00006c70: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-00006c80: 6962 7574 6520 6e61 6d65 3d22 6669 6c65  ibute name=\"file\n-00006c90: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-00006ca0: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-00006cb0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-00006cc0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00006cd0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-00006ce0: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-00006cf0: 6865 2072 6567 6973 7472 7920 6164 6464  he registry addd\n-00006d00: 7265 7373 2066 696c 6520 7374 6f72 652e  ress file store.\n-00006d10: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-00006d20: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00006d30: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00006d40: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-00006d50: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00006d60: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-00006d70: 7269 6275 7465 206e 616d 653d 2277 6169  ribute name=\"wai\n-00006d80: 7422 2074 7970 653d 2278 7364 3a73 7472  t\" type=\"xsd:str\n-00006d90: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-00006da0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-00006db0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00006dc0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-00006dd0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-00006de0: 5468 6520 7761 6974 2074 696d 6520 666f  The wait time fo\n-00006df0: 7220 7368 7574 646f 776e 2e20 5d5d 3e3c  r shutdown. ]]><\n-00006e00: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-00006e10: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00006e20: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00006e30: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-00006e40: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-00006e50: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00006e60: 6520 6e61 6d65 3d22 6368 6563 6b22 2074  e name=\"check\" t\n-00006e70: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-00006e80: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-00006e90: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00006ea0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00006eb0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00006ec0: 6e3e 3c21 5b43 4441 5441 5b20 4368 6563  n><![CDATA[ Chec\n-00006ed0: 6b20 7265 6769 7374 7279 2073 7461 7475  k registry statu\n-00006ee0: 7320 6f6e 2073 7472 6174 7570 2e20 5d5d  s on stratup. ]]\n-00006ef0: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-00006f00: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00006f10: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-00006f20: 6f6e 3e0a 2020 2020 2020 2020 3c2f 7873  on>.        </xs\n-00006f30: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-00006f40: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-00006f50: 7574 6520 6e61 6d65 3d22 6479 6e61 6d69  ute name=\"dynami\n-00006f60: 6322 2074 7970 653d 2278 7364 3a73 7472  c\" type=\"xsd:str\n-00006f70: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-00006f80: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-00006f90: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00006fa0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-00006fb0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00006fc0: 2020 2020 2020 2020 2020 203c 215b 4344             <![CD\n-00006fd0: 4154 415b 2074 6865 2073 6572 7669 6365  ATA[ the service\n-00006fe0: 2072 6567 6973 7465 7265 6420 746f 2074   registered to t\n-00006ff0: 6869 7320 7265 6769 7374 7279 2069 7320  his registry is \n-00007000: 6479 6e61 6d69 6328 7472 7565 2920 6f72  dynamic(true) or\n-00007010: 2073 7461 7469 6328 6661 6c73 6529 2e20   static(false). \n-00007020: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00007030: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00007040: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00007050: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-00007060: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-00007070: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-00007080: 6962 7574 6520 6e61 6d65 3d22 7265 6769  ibute name=\"regi\n-00007090: 7374 6572 2220 7479 7065 3d22 7873 643a  ster\" type=\"xsd:\n-000070a0: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-000070b0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-000070c0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-000070d0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-000070e0: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-000070f0: 2020 2020 2020 2020 2020 2020 2020 3c21                <!\n-00007100: 5b43 4441 5441 5b20 7265 6769 7374 6572  [CDATA[ register\n-00007110: 2073 6572 7669 6365 2074 6f20 7468 6973   service to this\n-00007120: 2072 6567 6973 7472 7928 7472 7565 2920   registry(true) \n-00007130: 6f72 206e 6f74 2866 616c 7365 292e 205d  or not(false). ]\n-00007140: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-00007150: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00007160: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-00007170: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-00007180: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-00007190: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-000071a0: 6275 7465 206e 616d 653d 2273 7562 7363  bute name=\"subsc\n-000071b0: 7269 6265 2220 7479 7065 3d22 7873 643a  ribe\" type=\"xsd:\n-000071c0: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-000071d0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-000071e0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-000071f0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00007200: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00007210: 2020 2020 2020 2020 2020 2020 2020 3c21                <!\n-00007220: 5b43 4441 5441 5b20 7375 6273 6372 6962  [CDATA[ subscrib\n-00007230: 6520 7365 7276 6963 6520 746f 2074 6869  e service to thi\n-00007240: 7320 7265 6769 7374 7279 2874 7275 6529  s registry(true)\n-00007250: 206f 7220 6e6f 7428 6661 6c73 6529 2e20   or not(false). \n-00007260: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00007270: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00007280: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00007290: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-000072a0: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-000072b0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-000072c0: 6962 7574 6520 6e61 6d65 3d22 6465 6661  ibute name=\"defa\n-000072d0: 756c 7422 2074 7970 653d 2278 7364 3a73  ult\" type=\"xsd:s\n-000072e0: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-000072f0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-00007300: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00007310: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-00007320: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-00007330: 5b20 4973 2064 6566 6175 6c74 2e20 5d5d  [ Is default. ]]\n-00007340: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-00007350: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00007360: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-00007370: 6f6e 3e0a 2020 2020 2020 2020 3c2f 7873  on>.        </xs\n-00007380: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-00007390: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-000073a0: 7574 6520 6e61 6d65 3d22 7369 6d70 6c69  ute name=\"simpli\n-000073b0: 6669 6564 2220 7479 7065 3d22 7873 643a  fied\" type=\"xsd:\n-000073c0: 626f 6f6c 6561 6e22 3e0a 2020 2020 2020  boolean\">.      \n-000073d0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-000073e0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-000073f0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-00007400: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-00007410: 5441 5b20 4973 2073 696d 706c 652e 205d  TA[ Is simple. ]\n-00007420: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-00007430: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00007440: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-00007450: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-00007460: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-00007470: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-00007480: 6275 7465 206e 616d 653d 2265 7874 7261  bute name=\"extra\n-00007490: 2d6b 6579 7322 2074 7970 653d 2278 7364  -keys\" type=\"xsd\n-000074a0: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-000074b0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-000074c0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-000074d0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-000074e0: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-000074f0: 5441 5b20 4578 7472 6120 5061 7261 6d65  TA[ Extra Parame\n-00007500: 7465 7220 4b65 7973 2e20 5d5d 3e3c 2f78  ter Keys. ]]></x\n-00007510: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00007520: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-00007530: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00007540: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00007550: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00007560: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00007570: 6e61 6d65 3d22 7573 652d 6173 2d63 6f6e  name=\"use-as-con\n-00007580: 6669 672d 6365 6e74 6572 2220 7479 7065  fig-center\" type\n-00007590: 3d22 7873 643a 626f 6f6c 6561 6e22 3e0a  =\"xsd:boolean\">.\n-000075a0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000075b0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-000075c0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-000075d0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-000075e0: 3c21 5b43 4441 5441 5b20 776f 726b 2061  <![CDATA[ work a\n-000075f0: 7320 636f 6e66 6967 2063 656e 7465 7220  s config center \n-00007600: 6f72 206e 6f74 2e20 5d5d 3e3c 2f78 7364  or not. ]]></xsd\n-00007610: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-00007620: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00007630: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00007640: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-00007650: 6962 7574 653e 0a20 2020 2020 2020 203c  ibute>.        <\n-00007660: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-00007670: 6d65 3d22 7573 652d 6173 2d6d 6574 6164  me=\"use-as-metad\n-00007680: 6174 612d 6365 6e74 6572 2220 7479 7065  ata-center\" type\n-00007690: 3d22 7873 643a 626f 6f6c 6561 6e22 3e0a  =\"xsd:boolean\">.\n-000076a0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000076b0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-000076c0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-000076d0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-000076e0: 3c21 5b43 4441 5441 5b20 776f 726b 2061  <![CDATA[ work a\n-000076f0: 7320 6d65 7461 6461 7461 2063 656e 7465  s metadata cente\n-00007700: 7220 6f72 206e 6f74 2e20 5d5d 3e3c 2f78  r or not. ]]></x\n-00007710: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00007720: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-00007730: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00007740: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00007750: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00007760: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00007770: 6e61 6d65 3d22 6163 6365 7074 7322 2074  name=\"accepts\" t\n-00007780: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-00007790: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-000077a0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-000077b0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000077c0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-000077d0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-000077e0: 2020 2020 2020 203c 215b 4344 4154 415b         <![CDATA[\n-000077f0: 206c 6973 7420 6f66 2072 7063 2070 726f   list of rpc pro\n-00007800: 746f 636f 6c73 2061 6363 6570 7465 6420  tocols accepted \n-00007810: 6279 2074 6869 7320 7265 6769 7374 7279  by this registry\n-00007820: 2c20 7365 7061 7261 7465 6420 7769 7468  , separated with\n-00007830: 2022 2c22 2e20 5d5d 3e3c 2f78 7364 3a64   \",\". ]]></xsd:d\n-00007840: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00007850: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00007860: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00007870: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00007880: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-00007890: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-000078a0: 3d22 7072 6566 6572 7265 6422 2074 7970  =\"preferred\" typ\n-000078b0: 653d 2278 7364 3a62 6f6f 6c65 616e 223e  e=\"xsd:boolean\">\n-000078c0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-000078d0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-000078e0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-000078f0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00007900: 3e3c 215b 4344 4154 415b 2049 7320 7468  ><![CDATA[ Is th\n-00007910: 6973 2072 6567 6973 7472 7920 7468 6520  is registry the \n-00007920: 7072 6566 6572 7265 6420 6f6e 652e 205d  preferred one. ]\n-00007930: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-00007940: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00007950: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-00007960: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-00007970: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-00007980: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-00007990: 6275 7465 206e 616d 653d 2277 6569 6768  bute name=\"weigh\n-000079a0: 7422 2074 7970 653d 2278 7364 3a69 6e74  t\" type=\"xsd:int\n-000079b0: 6567 6572 223e 0a20 2020 2020 2020 2020  eger\">.         \n-000079c0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-000079d0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-000079e0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-000079f0: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n-00007a00: 2077 6569 6768 7420 6f66 2072 6567 6973   weight of regis\n-00007a10: 7472 792e 205d 5d3e 3c2f 7873 643a 646f  try. ]]></xsd:do\n-00007a20: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00007a30: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00007a40: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00007a50: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-00007a60: 7465 3e0a 2020 2020 3c2f 7873 643a 636f  te>.    </xsd:co\n-00007a70: 6d70 6c65 7854 7970 653e 0a0a 2020 2020  mplexType>..    \n-00007a80: 3c78 7364 3a63 6f6d 706c 6578 5479 7065  <xsd:complexType\n-00007a90: 206e 616d 653d 226d 6574 6164 6174 6152   name=\"metadataR\n-00007aa0: 6570 6f72 7454 7970 6522 3e0a 2020 2020  eportType\">.    \n-00007ab0: 2020 2020 3c78 7364 3a73 6571 7565 6e63      <xsd:sequenc\n-00007ac0: 6520 6d69 6e4f 6363 7572 733d 2230 2220  e minOccurs=\"0\" \n-00007ad0: 6d61 784f 6363 7572 733d 2275 6e62 6f75  maxOccurs=\"unbou\n-00007ae0: 6e64 6564 223e 0a20 2020 2020 2020 2020  nded\">.         \n-00007af0: 2020 203c 7873 643a 656c 656d 656e 7420     <xsd:element \n-00007b00: 7265 663d 2270 6172 616d 6574 6572 2220  ref=\"parameter\" \n-00007b10: 6d69 6e4f 6363 7572 733d 2230 2220 6d61  minOccurs=\"0\" ma\n-00007b20: 784f 6363 7572 733d 2275 6e62 6f75 6e64  xOccurs=\"unbound\n-00007b30: 6564 222f 3e0a 2020 2020 2020 2020 3c2f  ed\"/>.        </\n-00007b40: 7873 643a 7365 7175 656e 6365 3e0a 2020  xsd:sequence>.  \n-00007b50: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-00007b60: 6275 7465 206e 616d 653d 2269 6422 2074  bute name=\"id\" t\n-00007b70: 7970 653d 2278 7364 3a49 4422 3e0a 2020  ype=\"xsd:ID\">.  \n-00007b80: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00007b90: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00007ba0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00007bb0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-00007bc0: 5b43 4441 5441 5b20 5468 6520 756e 6971  [CDATA[ The uniq\n-00007bd0: 7565 2069 6465 6e74 6966 6965 7220 666f  ue identifier fo\n-00007be0: 7220 6120 6265 616e 2e20 5d5d 3e3c 2f78  r a bean. ]]></x\n-00007bf0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00007c00: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-00007c10: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00007c20: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00007c30: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00007c40: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00007c50: 6e61 6d65 3d22 6164 6472 6573 7322 2074  name=\"address\" t\n-00007c60: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-00007c70: 2075 7365 3d22 6f70 7469 6f6e 616c 223e   use=\"optional\">\n-00007c80: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00007c90: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00007ca0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00007cb0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00007cc0: 3e3c 215b 4344 4154 415b 2054 6865 206d  ><![CDATA[ The m\n-00007cd0: 6574 6164 6174 6152 6570 6f72 7420 6164  etadataReport ad\n-00007ce0: 6472 6573 732e 205d 5d3e 3c2f 7873 643a  dress. ]]></xsd:\n-00007cf0: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-00007d00: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00007d10: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00007d20: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00007d30: 6275 7465 3e0a 2020 2020 2020 2020 3c78  bute>.        <x\n-00007d40: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-00007d50: 653d 2275 7365 726e 616d 6522 2074 7970  e=\"username\" typ\n-00007d60: 653d 2278 7364 3a73 7472 696e 6722 2075  e=\"xsd:string\" u\n-00007d70: 7365 3d22 6f70 7469 6f6e 616c 223e 0a20  se=\"optional\">. \n-00007d80: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00007d90: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00007da0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00007db0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-00007dc0: 215b 4344 4154 415b 2054 6865 206d 6574  ![CDATA[ The met\n-00007dd0: 6164 6174 6152 6570 6f72 7420 7573 6572  adataReport user\n-00007de0: 6e61 6d65 2e20 5d5d 3e3c 2f78 7364 3a64  name. ]]></xsd:d\n-00007df0: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00007e00: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00007e10: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00007e20: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00007e30: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-00007e40: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00007e50: 3d22 7061 7373 776f 7264 2220 7479 7065  =\"password\" type\n-00007e60: 3d22 7873 643a 7374 7269 6e67 2220 7573  =\"xsd:string\" us\n-00007e70: 653d 226f 7074 696f 6e61 6c22 3e0a 2020  e=\"optional\">.  \n-00007e80: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00007e90: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00007ea0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00007eb0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-00007ec0: 5b43 4441 5441 5b20 5468 6520 6d65 7461  [CDATA[ The meta\n-00007ed0: 6461 7461 5265 706f 7274 2070 6173 7377  dataReport passw\n-00007ee0: 6f72 642e 205d 5d3e 3c2f 7873 643a 646f  ord. ]]></xsd:do\n-00007ef0: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00007f00: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00007f10: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00007f20: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-00007f30: 7465 3e0a 2020 2020 2020 2020 3c78 7364  te>.        <xsd\n-00007f40: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-00007f50: 2274 696d 656f 7574 2220 7479 7065 3d22  \"timeout\" type=\"\n-00007f60: 7873 643a 7374 7269 6e67 2220 7573 653d  xsd:string\" use=\n-00007f70: 226f 7074 696f 6e61 6c22 3e0a 2020 2020  \"optional\">.    \n-00007f80: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00007f90: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00007fa0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00007fb0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00007fc0: 4441 5441 5b20 5468 6520 7265 7175 6573  DATA[ The reques\n-00007fd0: 7420 7469 6d65 6f75 742e 205d 5d3e 3c2f  t timeout. ]]></\n-00007fe0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00007ff0: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-00008000: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00008010: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-00008020: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00008030: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00008040: 206e 616d 653d 2267 726f 7570 2220 7479   name=\"group\" ty\n-00008050: 7065 3d22 7873 643a 7374 7269 6e67 2220  pe=\"xsd:string\" \n-00008060: 7573 653d 226f 7074 696f 6e61 6c22 3e0a  use=\"optional\">.\n-00008070: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00008080: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00008090: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-000080a0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-000080b0: 3c21 5b43 4441 5441 5b20 5468 6520 6772  <![CDATA[ The gr\n-000080c0: 6f75 7020 6f66 206d 6574 6164 6174 612d  oup of metadata-\n-000080d0: 7265 706f 7274 2e20 5d5d 3e3c 2f78 7364  report. ]]></xsd\n-000080e0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-000080f0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00008100: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00008110: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-00008120: 6962 7574 653e 0a0a 2020 2020 2020 2020  ibute>..        \n-00008130: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00008140: 616d 653d 2272 6574 7279 2d74 696d 6573  ame=\"retry-times\n-00008150: 2220 7479 7065 3d22 7873 643a 696e 7465  \" type=\"xsd:inte\n-00008160: 6765 7222 2075 7365 3d22 6f70 7469 6f6e  ger\" use=\"option\n-00008170: 616c 223e 0a20 2020 2020 2020 2020 2020  al\">.           \n-00008180: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-00008190: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-000081a0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-000081b0: 7469 6f6e 3e3c 215b 4344 4154 415b 2069  tion><![CDATA[ i\n-000081c0: 6620 6661 696c 2c20 7265 7472 7920 7469  f fail, retry ti\n-000081d0: 6d65 732e 205d 5d3e 3c2f 7873 643a 646f  mes. ]]></xsd:do\n-000081e0: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-000081f0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00008200: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00008210: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-00008220: 7465 3e0a 2020 2020 2020 2020 3c78 7364  te>.        <xsd\n-00008230: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-00008240: 2272 6574 7279 2d70 6572 696f 6422 2074  \"retry-period\" t\n-00008250: 7970 653d 2278 7364 3a69 6e74 6567 6572  ype=\"xsd:integer\n-00008260: 2220 7573 653d 226f 7074 696f 6e61 6c22  \" use=\"optional\"\n-00008270: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-00008280: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00008290: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000082a0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-000082b0: 6e3e 3c21 5b43 4441 5441 5b20 6966 2066  n><![CDATA[ if f\n-000082c0: 6169 6c2c 2072 6574 7279 2070 6572 696f  ail, retry perio\n-000082d0: 642e 205d 5d3e 3c2f 7873 643a 646f 6375  d. ]]></xsd:docu\n-000082e0: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-000082f0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-00008300: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00008310: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-00008320: 3e0a 2020 2020 2020 2020 3c78 7364 3a61  >.        <xsd:a\n-00008330: 7474 7269 6275 7465 206e 616d 653d 2263  ttribute name=\"c\n-00008340: 7963 6c65 2d72 6570 6f72 7422 2074 7970  ycle-report\" typ\n-00008350: 653d 2278 7364 3a62 6f6f 6c65 616e 2220  e=\"xsd:boolean\" \n-00008360: 7573 653d 226f 7074 696f 6e61 6c22 3e0a  use=\"optional\">.\n-00008370: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00008380: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00008390: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-000083a0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-000083b0: 3c21 5b43 4441 5441 5b20 7265 706f 7274  <![CDATA[ report\n-000083c0: 2063 7963 6c65 6c79 2e20 5d5d 3e3c 2f78   cyclely. ]]></x\n-000083d0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-000083e0: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-000083f0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00008400: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00008410: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00008420: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00008430: 6e61 6d65 3d22 7379 6e63 2d72 6570 6f72  name=\"sync-repor\n-00008440: 7422 2074 7970 653d 2278 7364 3a62 6f6f  t\" type=\"xsd:boo\n-00008450: 6c65 616e 2220 7573 653d 226f 7074 696f  lean\" use=\"optio\n-00008460: 6e61 6c22 3e0a 2020 2020 2020 2020 2020  nal\">.          \n-00008470: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-00008480: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00008490: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-000084a0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-000084b0: 5379 6e63 206f 7220 4173 796e 6320 7265  Sync or Async re\n-000084c0: 706f 7274 2e20 5d5d 3e3c 2f78 7364 3a64  port. ]]></xsd:d\n-000084d0: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-000084e0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-000084f0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00008500: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00008510: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-00008520: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00008530: 3d22 636c 7573 7465 7222 2074 7970 653d  =\"cluster\" type=\n-00008540: 2278 7364 3a62 6f6f 6c65 616e 2220 7573  \"xsd:boolean\" us\n-00008550: 653d 226f 7074 696f 6e61 6c22 3e0a 2020  e=\"optional\">.  \n-00008560: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00008570: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00008580: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00008590: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-000085a0: 5b43 4441 5441 5b20 4e65 6564 2063 6c75  [CDATA[ Need clu\n-000085b0: 7374 6572 2073 7570 706f 7274 2c20 6465  ster support, de\n-000085c0: 6661 756c 7420 6661 6c73 652e 205d 5d3e  fault false. ]]>\n-000085d0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-000085e0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-000085f0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-00008600: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-00008610: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-00008620: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-00008630: 7465 206e 616d 653d 2272 6567 6973 7472  te name=\"registr\n-00008640: 7922 2074 7970 653d 2278 7364 3a73 7472  y\" type=\"xsd:str\n-00008650: 696e 6722 2075 7365 3d22 6f70 7469 6f6e  ing\" use=\"option\n-00008660: 616c 223e 0a20 2020 2020 2020 2020 2020  al\">.           \n-00008670: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-00008680: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00008690: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-000086a0: 7469 6f6e 3e3c 215b 4344 4154 415b 2072  tion><![CDATA[ r\n-000086b0: 6567 6973 7472 7920 636f 6e66 6967 2069  egistry config i\n-000086c0: 642e 205d 5d3e 3c2f 7873 643a 646f 6375  d. ]]></xsd:docu\n-000086d0: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-000086e0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-000086f0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00008700: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-00008710: 3e0a 2020 2020 3c2f 7873 643a 636f 6d70  >.    </xsd:comp\n-00008720: 6c65 7854 7970 653e 0a0a 2020 2020 3c78  lexType>..    <x\n-00008730: 7364 3a63 6f6d 706c 6578 5479 7065 206e  sd:complexType n\n-00008740: 616d 653d 2263 6f6e 6669 6743 656e 7465  ame=\"configCente\n-00008750: 7254 7970 6522 3e0a 2020 2020 2020 2020  rType\">.        \n-00008760: 3c78 7364 3a73 6571 7565 6e63 6520 6d69  <xsd:sequence mi\n-00008770: 6e4f 6363 7572 733d 2230 2220 6d61 784f  nOccurs=\"0\" maxO\n-00008780: 6363 7572 733d 2275 6e62 6f75 6e64 6564  ccurs=\"unbounded\n-00008790: 223e 0a20 2020 2020 2020 2020 2020 203c  \">.            <\n-000087a0: 7873 643a 656c 656d 656e 7420 7265 663d  xsd:element ref=\n-000087b0: 2270 6172 616d 6574 6572 2220 6d69 6e4f  \"parameter\" minO\n-000087c0: 6363 7572 733d 2230 2220 6d61 784f 6363  ccurs=\"0\" maxOcc\n-000087d0: 7572 733d 2275 6e62 6f75 6e64 6564 222f  urs=\"unbounded\"/\n-000087e0: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-000087f0: 7365 7175 656e 6365 3e0a 2020 2020 2020  sequence>.      \n-00008800: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00008810: 206e 616d 653d 2270 726f 746f 636f 6c22   name=\"protocol\"\n-00008820: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-00008830: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-00008840: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-00008850: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00008860: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-00008870: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-00008880: 6520 636f 6e66 6967 2063 656e 7465 7220  e config center \n-00008890: 7072 6f74 6f63 6f6c 2e20 5d5d 3e3c 2f78  protocol. ]]></x\n-000088a0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-000088b0: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-000088c0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-000088d0: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-000088e0: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-000088f0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00008900: 6e61 6d65 3d22 6164 6472 6573 7322 2074  name=\"address\" t\n-00008910: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-00008920: 2075 7365 3d22 6f70 7469 6f6e 616c 223e   use=\"optional\">\n-00008930: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00008940: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00008950: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00008960: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00008970: 3e3c 215b 4344 4154 415b 2054 6865 2063  ><![CDATA[ The c\n-00008980: 6f6e 6669 6720 6365 6e74 6572 2061 6464  onfig center add\n-00008990: 7265 7373 2e20 5d5d 3e3c 2f78 7364 3a64  ress. ]]></xsd:d\n-000089a0: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-000089b0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-000089c0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-000089d0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-000089e0: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-000089f0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00008a00: 3d22 636c 7573 7465 7222 2074 7970 653d  =\"cluster\" type=\n-00008a10: 2278 7364 3a73 7472 696e 6722 2075 7365  \"xsd:string\" use\n-00008a20: 3d22 6f70 7469 6f6e 616c 223e 0a20 2020  =\"optional\">.   \n-00008a30: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-00008a40: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00008a50: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00008a60: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-00008a70: 4344 4154 415b 2054 6865 2063 6f6e 6669  CDATA[ The confi\n-00008a80: 6720 6365 6e74 6572 2063 6c75 7374 6572  g center cluster\n-00008a90: 2c20 6974 2773 2072 6561 6c20 6d65 616e  , it's real mean\n-00008aa0: 696e 6720 6d61 7920 7665 7279 206f 6e20  ing may very on \n-00008ab0: 6469 6666 6572 656e 7420 436f 6e66 6967  different Config\n-00008ac0: 2043 656e 7465 7220 7072 6f64 7563 7473   Center products\n-00008ad0: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-00008ae0: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00008af0: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00008b00: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00008b10: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00008b20: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n-00008b30: 7472 6962 7574 6520 6e61 6d65 3d22 6e61  tribute name=\"na\n-00008b40: 6d65 7370 6163 6522 2074 7970 653d 2278  mespace\" type=\"x\n-00008b50: 7364 3a73 7472 696e 6722 2075 7365 3d22  sd:string\" use=\"\n-00008b60: 6f70 7469 6f6e 616c 223e 0a20 2020 2020  optional\">.     \n-00008b70: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-00008b80: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00008b90: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-00008ba0: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00008bb0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00008bc0: 3c21 5b43 4441 5441 5b20 5468 6520 6e61  <![CDATA[ The na\n-00008bd0: 6d65 7370 6163 6520 6f66 2074 6865 2063  mespace of the c\n-00008be0: 6f6e 6669 6720 6365 6e74 6572 2c20 6765  onfig center, ge\n-00008bf0: 6e65 7261 6c6c 7920 6974 2773 2075 7365  nerally it's use\n-00008c00: 6420 666f 7220 6d75 6c74 692d 7465 6e61  d for multi-tena\n-00008c10: 6e74 2c20 6275 7420 6974 2773 2072 6561  nt, but it's rea\n-00008c20: 6c20 6d65 616e 696e 6720 6465 7065 6e64  l meaning depend\n-00008c30: 7320 6f6e 2074 6865 2061 6374 7561 6c20  s on the actual \n-00008c40: 436f 6e66 6967 2043 656e 7465 7220 796f  Config Center yo\n-00008c50: 7520 7573 652e 205d 5d3e 3c2f 7873 643a  u use. ]]></xsd:\n-00008c60: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-00008c70: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00008c80: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00008c90: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00008ca0: 6275 7465 3e0a 2020 2020 2020 2020 3c78  bute>.        <x\n-00008cb0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-00008cc0: 653d 2267 726f 7570 2220 7479 7065 3d22  e=\"group\" type=\"\n-00008cd0: 7873 643a 7374 7269 6e67 2220 7573 653d  xsd:string\" use=\n-00008ce0: 226f 7074 696f 6e61 6c22 3e0a 2020 2020  \"optional\">.    \n-00008cf0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00008d00: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00008d10: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00008d20: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00008d30: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00008d40: 203c 215b 4344 4154 415b 2054 6865 2067   <![CDATA[ The g\n-00008d50: 726f 7570 206f 6620 7468 6520 636f 6e66  roup of the conf\n-00008d60: 6967 2063 656e 7465 722c 2067 656e 6572  ig center, gener\n-00008d70: 616c 6c79 2069 7427 7320 7573 6564 2074  ally it's used t\n-00008d80: 6f20 6964 656e 7469 6679 2061 6e20 6973  o identify an is\n-00008d90: 6f6c 6174 6564 2073 7061 6365 2066 6f72  olated space for\n-00008da0: 2061 2062 6174 6368 206f 6620 636f 6e66   a batch of conf\n-00008db0: 6967 2069 7465 6d73 2c20 6275 7420 6974  ig items, but it\n-00008dc0: 2773 2072 6561 6c20 6d65 616e 696e 6720  's real meaning \n-00008dd0: 6465 7065 6e64 7320 6f6e 2074 6865 2061  depends on the a\n-00008de0: 6374 7561 6c20 436f 6e66 6967 2043 656e  ctual Config Cen\n-00008df0: 7465 7220 796f 7520 7573 652e 2e20 5d5d  ter you use.. ]]\n-00008e00: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-00008e10: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00008e20: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-00008e30: 6f6e 3e0a 2020 2020 2020 2020 3c2f 7873  on>.        </xs\n-00008e40: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-00008e50: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-00008e60: 7574 6520 6e61 6d65 3d22 636f 6e66 6967  ute name=\"config\n-00008e70: 2d66 696c 6522 2074 7970 653d 2278 7364  -file\" type=\"xsd\n-00008e80: 3a73 7472 696e 6722 2075 7365 3d22 6f70  :string\" use=\"op\n-00008e90: 7469 6f6e 616c 223e 0a20 2020 2020 2020  tional\">.       \n-00008ea0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00008eb0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00008ec0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00008ed0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00008ee0: 415b 2054 6865 206b 6579 2075 7365 6420  A[ The key used \n-00008ef0: 746f 2067 6574 2074 6865 2063 6f6e 6669  to get the confi\n-00008f00: 6773 2061 7420 7374 6172 7475 702e 205d  gs at startup. ]\n-00008f10: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-00008f20: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00008f30: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-00008f40: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-00008f50: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-00008f60: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-00008f70: 6275 7465 206e 616d 653d 2261 7070 2d63  bute name=\"app-c\n-00008f80: 6f6e 6669 672d 6669 6c65 2220 7479 7065  onfig-file\" type\n-00008f90: 3d22 7873 643a 7374 7269 6e67 2220 7573  =\"xsd:string\" us\n-00008fa0: 653d 226f 7074 696f 6e61 6c22 3e0a 2020  e=\"optional\">.  \n-00008fb0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00008fc0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00008fd0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00008fe0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-00008ff0: 5b43 4441 5441 5b20 5468 6520 6b65 7920  [CDATA[ The key \n-00009000: 7573 6564 2074 6f20 6765 7420 7468 6520  used to get the \n-00009010: 636f 6e66 6967 7320 6174 2073 7461 7274  configs at start\n-00009020: 7570 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  up. ]]></xsd:doc\n-00009030: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00009040: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-00009050: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00009060: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-00009070: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-00009080: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-00009090: 7573 6572 6e61 6d65 2220 7479 7065 3d22  username\" type=\"\n-000090a0: 7873 643a 7374 7269 6e67 2220 7573 653d  xsd:string\" use=\n-000090b0: 226f 7074 696f 6e61 6c22 3e0a 2020 2020  \"optional\">.    \n-000090c0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-000090d0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-000090e0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-000090f0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00009100: 4441 5441 5b20 5468 6520 7573 6572 6e61  DATA[ The userna\n-00009110: 6d65 2066 6f72 2041 5554 482e 205d 5d3e  me for AUTH. ]]>\n-00009120: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-00009130: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00009140: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-00009150: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-00009160: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-00009170: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-00009180: 7465 206e 616d 653d 2270 6173 7377 6f72  te name=\"passwor\n-00009190: 6422 2074 7970 653d 2278 7364 3a73 7472  d\" type=\"xsd:str\n-000091a0: 696e 6722 2075 7365 3d22 6f70 7469 6f6e  ing\" use=\"option\n-000091b0: 616c 223e 0a20 2020 2020 2020 2020 2020  al\">.           \n-000091c0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-000091d0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-000091e0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-000091f0: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-00009200: 6865 2070 6173 7377 6f72 6420 666f 7220  he password for \n-00009210: 4155 5448 2e20 5d5d 3e3c 2f78 7364 3a64  AUTH. ]]></xsd:d\n-00009220: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00009230: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00009240: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00009250: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00009260: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-00009270: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00009280: 3d22 7469 6d65 6f75 7422 2074 7970 653d  =\"timeout\" type=\n-00009290: 2278 7364 3a73 7472 696e 6722 2075 7365  \"xsd:string\" use\n-000092a0: 3d22 6f70 7469 6f6e 616c 223e 0a20 2020  =\"optional\">.   \n-000092b0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-000092c0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-000092d0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-000092e0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-000092f0: 4344 4154 415b 2054 6865 2072 6571 7565  CDATA[ The reque\n-00009300: 7374 2074 696d 656f 7574 2e20 5d5d 3e3c  st timeout. ]]><\n-00009310: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-00009320: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00009330: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00009340: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-00009350: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-00009360: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00009370: 6520 6e61 6d65 3d22 6869 6768 6573 742d  e name=\"highest-\n-00009380: 7072 696f 7269 7479 2220 7479 7065 3d22  priority\" type=\"\n-00009390: 7873 643a 626f 6f6c 6561 6e22 2075 7365  xsd:boolean\" use\n-000093a0: 3d22 6f70 7469 6f6e 616c 223e 0a20 2020  =\"optional\">.   \n-000093b0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-000093c0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-000093d0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-000093e0: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-000093f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00009400: 2020 3c21 5b43 4441 5441 5b20 5768 6574    <![CDATA[ Whet\n-00009410: 6865 7220 7468 6520 636f 6e66 6967 7320  her the configs \n-00009420: 6672 6f6d 2063 6f6e 6669 6720 6365 6e74  from config cent\n-00009430: 6572 2068 6173 2074 6865 2068 6967 6865  er has the highe\n-00009440: 7374 2070 7269 6f72 6974 792e 205d 5d3e  st priority. ]]>\n-00009450: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-00009460: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00009470: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-00009480: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-00009490: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-000094a0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-000094b0: 7465 206e 616d 653d 2269 6e63 6c75 6465  te name=\"include\n-000094c0: 2d73 7072 696e 672d 656e 7622 2074 7970  -spring-env\" typ\n-000094d0: 653d 2278 7364 3a62 6f6f 6c65 616e 2220  e=\"xsd:boolean\" \n-000094e0: 7573 653d 226f 7074 696f 6e61 6c22 3e0a  use=\"optional\">.\n-000094f0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00009500: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00009510: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00009520: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00009530: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00009540: 2020 2020 203c 215b 4344 4154 415b 204c       <![CDATA[ L\n-00009550: 6f61 6420 7468 6520 636f 6e66 6967 2069  oad the config i\n-00009560: 7465 6d73 2062 7920 4475 6262 6f20 6974  tems by Dubbo it\n-00009570: 7365 6c66 206f 7220 5370 7269 6e67 2e20  self or Spring. \n-00009580: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00009590: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-000095a0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-000095b0: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-000095c0: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-000095d0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-000095e0: 6962 7574 6520 6e61 6d65 3d22 6368 6563  ibute name=\"chec\n-000095f0: 6b22 2074 7970 653d 2278 7364 3a62 6f6f  k\" type=\"xsd:boo\n-00009600: 6c65 616e 2220 7573 653d 226f 7074 696f  lean\" use=\"optio\n-00009610: 6e61 6c22 3e0a 2020 2020 2020 2020 2020  nal\">.          \n-00009620: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-00009630: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00009640: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-00009650: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00009660: 2020 2020 2020 2020 2020 203c 215b 4344             <![CD\n-00009670: 4154 415b 2054 6865 2070 6f6c 6963 7920  ATA[ The policy \n-00009680: 746f 2061 7070 6c79 2077 6865 6e20 636f  to apply when co\n-00009690: 6e6e 6563 7469 6e67 2074 6f20 636f 6e66  nnecting to conf\n-000096a0: 6967 2063 656e 7465 7220 6661 696c 732e  ig center fails.\n-000096b0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-000096c0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-000096d0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-000096e0: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-000096f0: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00009700: 2020 2020 3c2f 7873 643a 636f 6d70 6c65      </xsd:comple\n-00009710: 7854 7970 653e 0a0a 2020 2020 3c78 7364  xType>..    <xsd\n-00009720: 3a63 6f6d 706c 6578 5479 7065 206e 616d  :complexType nam\n-00009730: 653d 226d 6f6e 6974 6f72 5479 7065 223e  e=\"monitorType\">\n-00009740: 0a20 2020 2020 2020 203c 7873 643a 7365  .        <xsd:se\n-00009750: 7175 656e 6365 206d 696e 4f63 6375 7273  quence minOccurs\n-00009760: 3d22 3022 206d 6178 4f63 6375 7273 3d22  =\"0\" maxOccurs=\"\n-00009770: 756e 626f 756e 6465 6422 3e0a 2020 2020  unbounded\">.    \n-00009780: 2020 2020 2020 2020 3c78 7364 3a65 6c65          <xsd:ele\n-00009790: 6d65 6e74 2072 6566 3d22 7061 7261 6d65  ment ref=\"parame\n-000097a0: 7465 7222 206d 696e 4f63 6375 7273 3d22  ter\" minOccurs=\"\n-000097b0: 3022 206d 6178 4f63 6375 7273 3d22 756e  0\" maxOccurs=\"un\n-000097c0: 626f 756e 6465 6422 2f3e 0a20 2020 2020  bounded\"/>.     \n-000097d0: 2020 203c 2f78 7364 3a73 6571 7565 6e63     </xsd:sequenc\n-000097e0: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-000097f0: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-00009800: 6164 6472 6573 7322 2074 7970 653d 2278  address\" type=\"x\n-00009810: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-00009820: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00009830: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00009840: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00009850: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00009860: 4441 5441 5b20 5468 6520 6d6f 6e69 746f  DATA[ The monito\n-00009870: 7220 6164 6472 6573 732e 205d 5d3e 3c2f  r address. ]]></\n-00009880: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00009890: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-000098a0: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-000098b0: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-000098c0: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-000098d0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-000098e0: 206e 616d 653d 2270 726f 746f 636f 6c22   name=\"protocol\"\n-000098f0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-00009900: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-00009910: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-00009920: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00009930: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-00009940: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-00009950: 6520 6d6f 6e69 746f 7220 7072 6f74 6f63  e monitor protoc\n-00009960: 6f6c 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ol. ]]></xsd:doc\n-00009970: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00009980: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-00009990: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-000099a0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-000099b0: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-000099c0: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-000099d0: 7573 6572 6e61 6d65 2220 7479 7065 3d22  username\" type=\"\n-000099e0: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-000099f0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-00009a00: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00009a10: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00009a20: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-00009a30: 4344 4154 415b 2054 6865 206d 6f6e 6974  CDATA[ The monit\n-00009a40: 6f72 2075 7365 726e 616d 652e 205d 5d3e  or username. ]]>\n-00009a50: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-00009a60: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00009a70: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-00009a80: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-00009a90: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-00009aa0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-00009ab0: 7465 206e 616d 653d 2270 6173 7377 6f72  te name=\"passwor\n-00009ac0: 6422 2074 7970 653d 2278 7364 3a73 7472  d\" type=\"xsd:str\n-00009ad0: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-00009ae0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-00009af0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00009b00: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-00009b10: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-00009b20: 5468 6520 6d6f 6e69 746f 7220 7061 7373  The monitor pass\n-00009b30: 776f 7264 2e20 5d5d 3e3c 2f78 7364 3a64  word. ]]></xsd:d\n-00009b40: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00009b50: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00009b60: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00009b70: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00009b80: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-00009b90: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00009ba0: 3d22 6772 6f75 7022 2074 7970 653d 2278  =\"group\" type=\"x\n-00009bb0: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-00009bc0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00009bd0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00009be0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00009bf0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00009c00: 4441 5441 5b20 5468 6520 6d6f 6e69 746f  DATA[ The monito\n-00009c10: 7220 6772 6f75 702e 205d 5d3e 3c2f 7873  r group. ]]></xs\n-00009c20: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00009c30: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00009c40: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00009c50: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00009c60: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00009c70: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00009c80: 616d 653d 2276 6572 7369 6f6e 2220 7479  ame=\"version\" ty\n-00009c90: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00009ca0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00009cb0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00009cc0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00009cd0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00009ce0: 3e3c 215b 4344 4154 415b 2054 6865 206d  ><![CDATA[ The m\n-00009cf0: 6f6e 6974 6f72 2076 6572 7369 6f6e 2e20  onitor version. \n-00009d00: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00009d10: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00009d20: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00009d30: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-00009d40: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-00009d50: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-00009d60: 6962 7574 6520 6e61 6d65 3d22 696e 7465  ibute name=\"inte\n-00009d70: 7276 616c 2220 7479 7065 3d22 7873 643a  rval\" type=\"xsd:\n-00009d80: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-00009d90: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00009da0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00009db0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00009dc0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00009dd0: 415b 2054 6865 206d 6f6e 6974 6f72 2069  A[ The monitor i\n-00009de0: 6e74 6572 7661 6c2e 205d 5d3e 3c2f 7873  nterval. ]]></xs\n-00009df0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00009e00: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00009e10: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00009e20: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00009e30: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00009e40: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00009e50: 616d 653d 2264 6566 6175 6c74 2220 7479  ame=\"default\" ty\n-00009e60: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00009e70: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00009e80: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00009e90: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00009ea0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00009eb0: 3e3c 215b 4344 4154 415b 2049 7320 6465  ><![CDATA[ Is de\n-00009ec0: 6661 756c 742e 205d 5d3e 3c2f 7873 643a  fault. ]]></xsd:\n-00009ed0: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-00009ee0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00009ef0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00009f00: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00009f10: 6275 7465 3e0a 2020 2020 3c2f 7873 643a  bute>.    </xsd:\n-00009f20: 636f 6d70 6c65 7854 7970 653e 0a0a 2020  complexType>..  \n-00009f30: 2020 3c78 7364 3a63 6f6d 706c 6578 5479    <xsd:complexTy\n-00009f40: 7065 206e 616d 653d 2270 6172 616d 6574  pe name=\"paramet\n-00009f50: 6572 5479 7065 223e 0a20 2020 2020 2020  erType\">.       \n-00009f60: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00009f70: 6e61 6d65 3d22 6b65 7922 2074 7970 653d  name=\"key\" type=\n-00009f80: 2278 7364 3a73 7472 696e 6722 2075 7365  \"xsd:string\" use\n-00009f90: 3d22 7265 7175 6972 6564 223e 0a20 2020  =\"required\">.   \n-00009fa0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-00009fb0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00009fc0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00009fd0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-00009fe0: 4344 4154 415b 2054 6865 2070 6172 616d  CDATA[ The param\n-00009ff0: 6574 6572 206b 6579 2e20 5d5d 3e3c 2f78  eter key. ]]></x\n-0000a000: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-0000a010: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-0000a020: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000a030: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-0000a040: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-0000a050: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-0000a060: 6e61 6d65 3d22 7661 6c75 6522 2074 7970  name=\"value\" typ\n-0000a070: 653d 2278 7364 3a73 7472 696e 6722 2075  e=\"xsd:string\" u\n-0000a080: 7365 3d22 7265 7175 6972 6564 223e 0a20  se=\"required\">. \n-0000a090: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000a0a0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000a0b0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000a0c0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-0000a0d0: 215b 4344 4154 415b 2054 6865 2070 6172  ![CDATA[ The par\n-0000a0e0: 616d 6574 6572 2076 616c 7565 2e20 5d5d  ameter value. ]]\n-0000a0f0: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-0000a100: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000a110: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-0000a120: 6f6e 3e0a 2020 2020 2020 2020 3c2f 7873  on>.        </xs\n-0000a130: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-0000a140: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-0000a150: 7574 6520 6e61 6d65 3d22 6869 6465 2220  ute name=\"hide\" \n-0000a160: 7479 7065 3d22 7873 643a 626f 6f6c 6561  type=\"xsd:boolea\n-0000a170: 6e22 3e0a 2020 2020 2020 2020 2020 2020  n\">.            \n-0000a180: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-0000a190: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000a1a0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-0000a1b0: 696f 6e3e 3c21 5b43 4441 5441 5b20 4869  ion><![CDATA[ Hi\n-0000a1c0: 6465 2070 6172 616d 6574 6572 2e20 5d5d  de parameter. ]]\n-0000a1d0: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-0000a1e0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000a1f0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-0000a200: 6f6e 3e0a 2020 2020 2020 2020 3c2f 7873  on>.        </xs\n-0000a210: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-0000a220: 203c 2f78 7364 3a63 6f6d 706c 6578 5479   </xsd:complexTy\n-0000a230: 7065 3e0a 0a20 2020 203c 7873 643a 636f  pe>..    <xsd:co\n-0000a240: 6d70 6c65 7854 7970 6520 6e61 6d65 3d22  mplexType name=\"\n-0000a250: 6d65 7472 6963 7354 7970 6522 3e0a 2020  metricsType\">.  \n-0000a260: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-0000a270: 6275 7465 206e 616d 653d 2270 6f72 7422  bute name=\"port\"\n-0000a280: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-0000a290: 6722 2075 7365 3d22 7265 7175 6972 6564  g\" use=\"required\n-0000a2a0: 223e 0a20 2020 2020 2020 2020 2020 203c  \">.            <\n-0000a2b0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000a2c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000a2d0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-0000a2e0: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-0000a2f0: 206d 6574 7269 6373 2073 6572 7669 6365   metrics service\n-0000a300: 2070 6f72 742e 205d 5d3e 3c2f 7873 643a   port. ]]></xsd:\n-0000a310: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-0000a320: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000a330: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000a340: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-0000a350: 6275 7465 3e0a 2020 2020 2020 2020 3c78  bute>.        <x\n-0000a360: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-0000a370: 653d 2270 726f 746f 636f 6c22 2074 7970  e=\"protocol\" typ\n-0000a380: 653d 2278 7364 3a73 7472 696e 6722 2075  e=\"xsd:string\" u\n-0000a390: 7365 3d22 7265 7175 6972 6564 223e 0a20  se=\"required\">. \n-0000a3a0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000a3b0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000a3c0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000a3d0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-0000a3e0: 215b 4344 4154 415b 2054 6865 206d 6574  ![CDATA[ The met\n-0000a3f0: 7269 6373 2073 6572 7669 6365 2070 726f  rics service pro\n-0000a400: 746f 636f 6c2e 205d 5d3e 3c2f 7873 643a  tocol. ]]></xsd:\n-0000a410: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-0000a420: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000a430: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000a440: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-0000a450: 6275 7465 3e0a 2020 2020 3c2f 7873 643a  bute>.    </xsd:\n-0000a460: 636f 6d70 6c65 7854 7970 653e 0a0a 2020  complexType>..  \n-0000a470: 2020 3c78 7364 3a63 6f6d 706c 6578 5479    <xsd:complexTy\n-0000a480: 7065 206e 616d 653d 226d 6574 686f 6454  pe name=\"methodT\n-0000a490: 7970 6522 3e0a 2020 2020 2020 2020 3c78  ype\">.        <x\n-0000a4a0: 7364 3a63 6f6d 706c 6578 436f 6e74 656e  sd:complexConten\n-0000a4b0: 743e 0a20 2020 2020 2020 2020 2020 203c  t>.            <\n-0000a4c0: 7873 643a 6578 7465 6e73 696f 6e20 6261  xsd:extension ba\n-0000a4d0: 7365 3d22 6162 7374 7261 6374 4d65 7468  se=\"abstractMeth\n-0000a4e0: 6f64 5479 7065 223e 0a20 2020 2020 2020  odType\">.       \n-0000a4f0: 2020 2020 2020 2020 203c 7873 643a 6368           <xsd:ch\n-0000a500: 6f69 6365 206d 696e 4f63 6375 7273 3d22  oice minOccurs=\"\n-0000a510: 3022 206d 6178 4f63 6375 7273 3d22 756e  0\" maxOccurs=\"un\n-0000a520: 626f 756e 6465 6422 3e0a 2020 2020 2020  bounded\">.      \n-0000a530: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000a540: 7364 3a65 6c65 6d65 6e74 2072 6566 3d22  sd:element ref=\"\n-0000a550: 6172 6775 6d65 6e74 2220 6d69 6e4f 6363  argument\" minOcc\n-0000a560: 7572 733d 2230 2220 6d61 784f 6363 7572  urs=\"0\" maxOccur\n-0000a570: 733d 2275 6e62 6f75 6e64 6564 222f 3e0a  s=\"unbounded\"/>.\n-0000a580: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000a590: 2020 2020 3c78 7364 3a65 6c65 6d65 6e74      <xsd:element\n-0000a5a0: 2072 6566 3d22 7061 7261 6d65 7465 7222   ref=\"parameter\"\n-0000a5b0: 206d 696e 4f63 6375 7273 3d22 3022 206d   minOccurs=\"0\" m\n-0000a5c0: 6178 4f63 6375 7273 3d22 756e 626f 756e  axOccurs=\"unboun\n-0000a5d0: 6465 6422 2f3e 0a20 2020 2020 2020 2020  ded\"/>.         \n-0000a5e0: 2020 2020 2020 203c 2f78 7364 3a63 686f         </xsd:cho\n-0000a5f0: 6963 653e 0a20 2020 2020 2020 2020 2020  ice>.           \n-0000a600: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-0000a610: 7574 6520 6e61 6d65 3d22 6e61 6d65 2220  ute name=\"name\" \n-0000a620: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-0000a630: 2220 7573 653d 2272 6571 7569 7265 6422  \" use=\"required\"\n-0000a640: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000a650: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-0000a660: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000a670: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000a680: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000a690: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-0000a6a0: 6d65 7468 6f64 206e 616d 6520 286d 6574  method name (met\n-0000a6b0: 686f 642e 746f 5374 7269 6e67 2829 292e  hod.toString()).\n-0000a6c0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-0000a6d0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-0000a6e0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-0000a6f0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000a700: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000a710: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-0000a720: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000a730: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-0000a740: 616d 653d 2265 7865 6375 7465 7322 2074  ame=\"executes\" t\n-0000a750: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-0000a760: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000a770: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-0000a780: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000a790: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000a7a0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000a7b0: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-0000a7c0: 6d61 7820 6163 7469 7665 2072 6571 7565  max active reque\n-0000a7d0: 7374 732e 205d 5d3e 3c2f 7873 643a 646f  sts. ]]></xsd:do\n-0000a7e0: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-0000a7f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000a800: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-0000a810: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000a820: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-0000a830: 7465 3e0a 2020 2020 2020 2020 2020 2020  te>.            \n-0000a840: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-0000a850: 7465 206e 616d 653d 2273 7461 7422 2074  te name=\"stat\" t\n-0000a860: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-0000a870: 2064 6566 6175 6c74 3d22 2d31 223e 0a20   default=\"-1\">. \n-0000a880: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000a890: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-0000a8a0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000a8b0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000a8c0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-0000a8d0: 215b 4344 4154 415b 2054 6865 206d 6574  ![CDATA[ The met\n-0000a8e0: 686f 6420 7061 7261 6d65 7465 7220 696e  hod parameter in\n-0000a8f0: 6465 7820 666f 7220 7374 6174 6973 7469  dex for statisti\n-0000a900: 6373 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  cs. ]]></xsd:doc\n-0000a910: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-0000a920: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000a930: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-0000a940: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000a950: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-0000a960: 653e 0a20 2020 2020 2020 2020 2020 2020  e>.             \n-0000a970: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-0000a980: 6520 6e61 6d65 3d22 7265 7472 7922 2074  e name=\"retry\" t\n-0000a990: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-0000a9a0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000a9b0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-0000a9c0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000a9d0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000a9e0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000a9f0: 6e3e 3c21 5b43 4441 5441 5b20 4465 7072  n><![CDATA[ Depr\n-0000aa00: 6563 6174 6564 2e20 5265 706c 6163 6520  ecated. Replace \n-0000aa10: 746f 2072 6574 7269 6573 2e20 5d5d 3e3c  to retries. ]]><\n-0000aa20: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-0000aa30: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000aa40: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-0000aa50: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000aa60: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-0000aa70: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-0000aa80: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000aa90: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-0000aaa0: 7265 6c69 6162 6c65 2220 7479 7065 3d22  reliable\" type=\"\n-0000aab0: 7873 643a 7374 7269 6e67 2220 6465 6661  xsd:string\" defa\n-0000aac0: 756c 743d 2266 616c 7365 223e 0a20 2020  ult=\"false\">.   \n-0000aad0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000aae0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-0000aaf0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000ab00: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-0000ab10: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-0000ab20: 4344 4154 415b 2044 6570 7265 6361 7465  CDATA[ Deprecate\n-0000ab30: 642e 2052 6570 6c61 6365 2074 6f20 6e61  d. Replace to na\n-0000ab40: 706f 6c69 2070 726f 746f 636f 6c2e 205d  poli protocol. ]\n-0000ab50: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-0000ab60: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000ab70: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000ab80: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000ab90: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-0000aba0: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-0000abb0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000abc0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-0000abd0: 653d 2264 6570 7265 6361 7465 6422 2074  e=\"deprecated\" t\n-0000abe0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-0000abf0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000ac00: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-0000ac10: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000ac20: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000ac30: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000ac40: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-0000ac50: 6d65 7468 6f64 2064 6570 7265 6361 7465  method deprecate\n-0000ac60: 642e 205d 5d3e 3c2f 7873 643a 646f 6375  d. ]]></xsd:docu\n-0000ac70: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-0000ac80: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000ac90: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-0000aca0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000acb0: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-0000acc0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000acd0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-0000ace0: 206e 616d 653d 2273 7469 636b 7922 2074   name=\"sticky\" t\n-0000acf0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-0000ad00: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000ad10: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-0000ad20: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000ad30: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000ad40: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000ad50: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000ad60: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000ad70: 215b 4344 4154 415b 2045 6e61 626c 652f  ![CDATA[ Enable/\n-0000ad80: 4469 7361 626c 6520 636c 7573 7465 7220  Disable cluster \n-0000ad90: 7374 6963 6b79 2070 6f6c 6963 792e 4465  sticky policy.De\n-0000ada0: 6661 756c 7420 6661 6c73 6520 5d5d 3e3c  fault false ]]><\n-0000adb0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-0000adc0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000add0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-0000ade0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000adf0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-0000ae00: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-0000ae10: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000ae20: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-0000ae30: 7265 7475 726e 2220 7479 7065 3d22 7873  return\" type=\"xs\n-0000ae40: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-0000ae50: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000ae60: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000ae70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000ae80: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-0000ae90: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-0000aea0: 4154 415b 204d 6574 686f 6420 7265 7375  ATA[ Method resu\n-0000aeb0: 6c74 2069 7320 7265 7475 726e 2e20 6465  lt is return. de\n-0000aec0: 6661 756c 7420 6973 2074 7275 652e 5d5d  fault is true.]]\n-0000aed0: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-0000aee0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000aef0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-0000af00: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000af10: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-0000af20: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-0000af30: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-0000af40: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-0000af50: 3d22 6f6e 696e 766f 6b65 2220 7479 7065  =\"oninvoke\" type\n-0000af60: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-0000af70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000af80: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-0000af90: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000afa0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000afb0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-0000afc0: 215b 4344 4154 415b 204d 6574 686f 6420  ![CDATA[ Method \n-0000afd0: 696e 766f 6b65 2074 7269 6767 6572 2e5d  invoke trigger.]\n-0000afe0: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-0000aff0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000b000: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000b010: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000b020: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-0000b030: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-0000b040: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000b050: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-0000b060: 653d 226f 6e72 6574 7572 6e22 2074 7970  e=\"onreturn\" typ\n-0000b070: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n+00005f30: 6520 756e 6971 7565 2069 6465 6e74 6966  e unique identif\n+00005f40: 6965 7220 666f 7220 6120 6265 616e 2e20  ier for a bean. \n+00005f50: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+00005f60: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00005f70: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00005f80: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00005f90: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00005fa0: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+00005fb0: 7474 7269 6275 7465 206e 616d 653d 2261  ttribute name=\"a\n+00005fc0: 6464 7265 7373 2220 7479 7065 3d22 7873  ddress\" type=\"xs\n+00005fd0: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+00005fe0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+00005ff0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00006000: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00006010: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00006020: 4344 4154 415b 2054 6865 2072 6567 6973  CDATA[ The regis\n+00006030: 7472 7920 6164 6472 6573 732e 205d 5d3e  try address. ]]>\n+00006040: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+00006050: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00006060: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+00006070: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+00006080: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+00006090: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+000060a0: 6962 7574 6520 6e61 6d65 3d22 706f 7274  ibute name=\"port\n+000060b0: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+000060c0: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+000060d0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+000060e0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000060f0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00006100: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+00006110: 2054 6865 2072 6567 6973 7472 7920 6465   The registry de\n+00006120: 6661 756c 7420 706f 7274 2e20 5d5d 3e3c  fault port. ]]><\n+00006130: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00006140: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00006150: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00006160: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+00006170: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+00006180: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00006190: 6275 7465 206e 616d 653d 2270 726f 746f  bute name=\"proto\n+000061a0: 636f 6c22 2074 7970 653d 2278 7364 3a73  col\" type=\"xsd:s\n+000061b0: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+000061c0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+000061d0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+000061e0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+000061f0: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+00006200: 5441 5b20 5468 6520 7265 6769 7374 7279  TA[ The registry\n+00006210: 206c 6f6f 6b75 7020 7072 6f74 6f63 6f6c   lookup protocol\n+00006220: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00006230: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00006240: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00006250: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00006260: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00006270: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+00006280: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00006290: 2275 7365 726e 616d 6522 2074 7970 653d  \"username\" type=\n+000062a0: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+000062b0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+000062c0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+000062d0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+000062e0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+000062f0: 3c21 5b43 4441 5441 5b20 5468 6520 7265  <![CDATA[ The re\n+00006300: 6769 7374 7279 2075 7365 726e 616d 652e  gistry username.\n+00006310: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00006320: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00006330: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+00006340: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00006350: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+00006360: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+00006370: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+00006380: 7061 7373 776f 7264 2220 7479 7065 3d22  password\" type=\"\n+00006390: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+000063a0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+000063b0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+000063c0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000063d0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+000063e0: 215b 4344 4154 415b 2054 6865 2072 6567  ![CDATA[ The reg\n+000063f0: 6973 7472 7920 7061 7373 776f 7264 2e20  istry password. \n+00006400: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+00006410: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00006420: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00006430: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00006440: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00006450: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+00006460: 7474 7269 6275 7465 206e 616d 653d 2274  ttribute name=\"t\n+00006470: 7261 6e73 706f 7274 2220 7479 7065 3d22  ransport\" type=\"\n+00006480: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+00006490: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+000064a0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+000064b0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000064c0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+000064d0: 215b 4344 4154 415b 2054 6865 2070 726f  ![CDATA[ The pro\n+000064e0: 746f 636f 6c20 7472 616e 7370 6f72 7465  tocol transporte\n+000064f0: 7220 7479 7065 2e20 5d5d 3e3c 2f78 7364  r type. ]]></xsd\n+00006500: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00006510: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n+00006520: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00006530: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+00006540: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+00006550: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+00006560: 206e 616d 653d 2274 7261 6e73 706f 7274   name=\"transport\n+00006570: 6572 2220 7479 7065 3d22 7873 643a 7374  er\" type=\"xsd:st\n+00006580: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+00006590: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+000065a0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+000065b0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+000065c0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+000065d0: 415b 2054 6865 2070 726f 746f 636f 6c20  A[ The protocol \n+000065e0: 7472 616e 7370 6f72 7465 7220 7479 7065  transporter type\n+000065f0: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00006600: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00006610: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00006620: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00006630: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00006640: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+00006650: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00006660: 2273 6572 7665 7222 2074 7970 653d 2278  \"server\" type=\"x\n+00006670: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+00006680: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+00006690: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+000066a0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+000066b0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+000066c0: 5b43 4441 5441 5b20 5468 6520 7072 6f74  [CDATA[ The prot\n+000066d0: 6f63 6f6c 2073 6572 7665 7220 7479 7065  ocol server type\n+000066e0: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+000066f0: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00006700: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00006710: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00006720: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00006730: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+00006740: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00006750: 2263 6c69 656e 7422 2074 7970 653d 2278  \"client\" type=\"x\n+00006760: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+00006770: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+00006780: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00006790: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+000067a0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+000067b0: 5b43 4441 5441 5b20 5468 6520 7072 6f74  [CDATA[ The prot\n+000067c0: 6f63 6f6c 2063 6c69 656e 7420 7479 7065  ocol client type\n+000067d0: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+000067e0: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+000067f0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00006800: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00006810: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00006820: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+00006830: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00006840: 2263 6c75 7374 6572 2220 7479 7065 3d22  \"cluster\" type=\"\n+00006850: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+00006860: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00006870: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00006880: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00006890: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+000068a0: 215b 4344 4154 415b 2054 6865 2072 6567  ![CDATA[ The reg\n+000068b0: 6973 7472 7920 636c 7573 7465 7220 7479  istry cluster ty\n+000068c0: 7065 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  pe. ]]></xsd:doc\n+000068d0: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+000068e0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+000068f0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00006900: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+00006910: 7574 653e 0d0a 2020 2020 2020 2020 3c78  ute>..        <x\n+00006920: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+00006930: 653d 227a 6f6e 6522 2074 7970 653d 2278  e=\"zone\" type=\"x\n+00006940: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+00006950: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+00006960: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00006970: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00006980: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00006990: 5b43 4441 5441 5b20 5468 6520 7265 6769  [CDATA[ The regi\n+000069a0: 7374 7279 207a 6f6e 6520 7479 7065 2e20  stry zone type. \n+000069b0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+000069c0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+000069d0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+000069e0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+000069f0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00006a00: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+00006a10: 7474 7269 6275 7465 206e 616d 653d 2266  ttribute name=\"f\n+00006a20: 6f72 6b73 2220 7479 7065 3d22 7873 643a  orks\" type=\"xsd:\n+00006a30: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+00006a40: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00006a50: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00006a60: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00006a70: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00006a80: 4154 415b 2046 6f72 6b69 6e67 436c 7573  ATA[ ForkingClus\n+00006a90: 7465 7220 666f 726b 732e 205d 5d3e 3c2f  ter forks. ]]></\n+00006aa0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00006ab0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00006ac0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+00006ad0: 3e0d 0a20 2020 2020 2020 203c 2f78 7364  >..        </xsd\n+00006ae0: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00006af0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+00006b00: 7574 6520 6e61 6d65 3d22 6772 6f75 7022  ute name=\"group\"\n+00006b10: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+00006b20: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+00006b30: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+00006b40: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00006b50: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+00006b60: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+00006b70: 5468 6520 7265 6769 7374 7279 2067 726f  The registry gro\n+00006b80: 7570 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  up. ]]></xsd:doc\n+00006b90: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+00006ba0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+00006bb0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00006bc0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+00006bd0: 7574 653e 0d0a 2020 2020 2020 2020 3c78  ute>..        <x\n+00006be0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+00006bf0: 653d 2276 6572 7369 6f6e 2220 7479 7065  e=\"version\" type\n+00006c00: 3d22 7873 643a 7374 7269 6e67 223e 0d0a  =\"xsd:string\">..\n+00006c10: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00006c20: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00006c30: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00006c40: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00006c50: 3e3c 215b 4344 4154 415b 2054 6865 2072  ><![CDATA[ The r\n+00006c60: 6567 6973 7472 7920 7665 7273 696f 6e2e  egistry version.\n+00006c70: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00006c80: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00006c90: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+00006ca0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00006cb0: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+00006cc0: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+00006cd0: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+00006ce0: 7469 6d65 6f75 7422 2074 7970 653d 2278  timeout\" type=\"x\n+00006cf0: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+00006d00: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+00006d10: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00006d20: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00006d30: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00006d40: 5b43 4441 5441 5b20 5468 6520 7265 7175  [CDATA[ The requ\n+00006d50: 6573 7420 7469 6d65 6f75 742e 205d 5d3e  est timeout. ]]>\n+00006d60: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+00006d70: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00006d80: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+00006d90: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+00006da0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+00006db0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+00006dc0: 6962 7574 6520 6e61 6d65 3d22 7365 7373  ibute name=\"sess\n+00006dd0: 696f 6e22 2074 7970 653d 2278 7364 3a73  ion\" type=\"xsd:s\n+00006de0: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+00006df0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+00006e00: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00006e10: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+00006e20: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+00006e30: 5441 5b20 5468 6520 7365 7373 696f 6e20  TA[ The session \n+00006e40: 7469 6d65 6f75 742e 205d 5d3e 3c2f 7873  timeout. ]]></xs\n+00006e50: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00006e60: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+00006e70: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00006e80: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+00006e90: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+00006ea0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+00006eb0: 6520 6e61 6d65 3d22 6669 6c65 2220 7479  e name=\"file\" ty\n+00006ec0: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+00006ed0: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+00006ee0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00006ef0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00006f00: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00006f10: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+00006f20: 2072 6567 6973 7472 7920 6164 6464 7265   registry adddre\n+00006f30: 7373 2066 696c 6520 7374 6f72 652e 205d  ss file store. ]\n+00006f40: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+00006f50: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00006f60: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+00006f70: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+00006f80: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+00006f90: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n+00006fa0: 7472 6962 7574 6520 6e61 6d65 3d22 7761  tribute name=\"wa\n+00006fb0: 6974 2220 7479 7065 3d22 7873 643a 7374  it\" type=\"xsd:st\n+00006fc0: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+00006fd0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+00006fe0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00006ff0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00007000: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00007010: 415b 2054 6865 2077 6169 7420 7469 6d65  A[ The wait time\n+00007020: 2066 6f72 2073 6875 7464 6f77 6e2e 205d   for shutdown. ]\n+00007030: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+00007040: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00007050: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+00007060: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+00007070: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+00007080: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n+00007090: 7472 6962 7574 6520 6e61 6d65 3d22 6368  tribute name=\"ch\n+000070a0: 6563 6b22 2074 7970 653d 2278 7364 3a73  eck\" type=\"xsd:s\n+000070b0: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+000070c0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+000070d0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+000070e0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+000070f0: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+00007100: 5441 5b20 4368 6563 6b20 7265 6769 7374  TA[ Check regist\n+00007110: 7279 2073 7461 7475 7320 6f6e 2073 7472  ry status on str\n+00007120: 6174 7570 2e20 5d5d 3e3c 2f78 7364 3a64  atup. ]]></xsd:d\n+00007130: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+00007140: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00007150: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00007160: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+00007170: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+00007180: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+00007190: 616d 653d 2264 796e 616d 6963 2220 7479  ame=\"dynamic\" ty\n+000071a0: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+000071b0: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+000071c0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+000071d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000071e0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+000071f0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00007200: 2020 2020 2020 2020 203c 215b 4344 4154           <![CDAT\n+00007210: 415b 2074 6865 2073 6572 7669 6365 2072  A[ the service r\n+00007220: 6567 6973 7465 7265 6420 746f 2074 6869  egistered to thi\n+00007230: 7320 7265 6769 7374 7279 2069 7320 6479  s registry is dy\n+00007240: 6e61 6d69 6328 7472 7565 2920 6f72 2073  namic(true) or s\n+00007250: 7461 7469 6328 6661 6c73 6529 2e20 5d5d  tatic(false). ]]\n+00007260: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+00007270: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00007280: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+00007290: 696f 6e3e 0d0a 2020 2020 2020 2020 3c2f  ion>..        </\n+000072a0: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+000072b0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+000072c0: 7269 6275 7465 206e 616d 653d 2272 6567  ribute name=\"reg\n+000072d0: 6973 7465 7222 2074 7970 653d 2278 7364  ister\" type=\"xsd\n+000072e0: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+000072f0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+00007300: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00007310: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00007320: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+00007330: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00007340: 2020 3c21 5b43 4441 5441 5b20 7265 6769    <![CDATA[ regi\n+00007350: 7374 6572 2073 6572 7669 6365 2074 6f20  ster service to \n+00007360: 7468 6973 2072 6567 6973 7472 7928 7472  this registry(tr\n+00007370: 7565 2920 6f72 206e 6f74 2866 616c 7365  ue) or not(false\n+00007380: 292e 205d 5d3e 3c2f 7873 643a 646f 6375  ). ]]></xsd:docu\n+00007390: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+000073a0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+000073b0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+000073c0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+000073d0: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+000073e0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+000073f0: 3d22 7375 6273 6372 6962 6522 2074 7970  =\"subscribe\" typ\n+00007400: 653d 2278 7364 3a73 7472 696e 6722 3e0d  e=\"xsd:string\">.\n+00007410: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00007420: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00007430: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00007440: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00007450: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00007460: 2020 2020 2020 2020 3c21 5b43 4441 5441          <![CDATA\n+00007470: 5b20 7375 6273 6372 6962 6520 7365 7276  [ subscribe serv\n+00007480: 6963 6520 746f 2074 6869 7320 7265 6769  ice to this regi\n+00007490: 7374 7279 2874 7275 6529 206f 7220 6e6f  stry(true) or no\n+000074a0: 7428 6661 6c73 6529 2e20 5d5d 3e3c 2f78  t(false). ]]></x\n+000074b0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+000074c0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+000074d0: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+000074e0: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+000074f0: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+00007500: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+00007510: 7465 206e 616d 653d 2264 6566 6175 6c74  te name=\"default\n+00007520: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+00007530: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+00007540: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00007550: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00007560: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00007570: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+00007580: 2049 7320 6465 6661 756c 742e 205d 5d3e   Is default. ]]>\n+00007590: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+000075a0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+000075b0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+000075c0: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+000075d0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+000075e0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+000075f0: 6962 7574 6520 6e61 6d65 3d22 7369 6d70  ibute name=\"simp\n+00007600: 6c69 6669 6564 2220 7479 7065 3d22 7873  lified\" type=\"xs\n+00007610: 643a 626f 6f6c 6561 6e22 3e0d 0a20 2020  d:boolean\">..   \n+00007620: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+00007630: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00007640: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00007650: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00007660: 5b43 4441 5441 5b20 4973 2073 696d 706c  [CDATA[ Is simpl\n+00007670: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n+00007680: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00007690: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+000076a0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+000076b0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+000076c0: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+000076d0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+000076e0: 3d22 6578 7472 612d 6b65 7973 2220 7479  =\"extra-keys\" ty\n+000076f0: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+00007700: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+00007710: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00007720: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00007730: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00007740: 6f6e 3e3c 215b 4344 4154 415b 2045 7874  on><![CDATA[ Ext\n+00007750: 7261 2050 6172 616d 6574 6572 204b 6579  ra Parameter Key\n+00007760: 732e 205d 5d3e 3c2f 7873 643a 646f 6375  s. ]]></xsd:docu\n+00007770: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00007780: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00007790: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+000077a0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+000077b0: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+000077c0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+000077d0: 3d22 7573 652d 6173 2d63 6f6e 6669 672d  =\"use-as-config-\n+000077e0: 6365 6e74 6572 2220 7479 7065 3d22 7873  center\" type=\"xs\n+000077f0: 643a 626f 6f6c 6561 6e22 3e0d 0a20 2020  d:boolean\">..   \n+00007800: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+00007810: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00007820: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00007830: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00007840: 5b43 4441 5441 5b20 776f 726b 2061 7320  [CDATA[ work as \n+00007850: 636f 6e66 6967 2063 656e 7465 7220 6f72  config center or\n+00007860: 206e 6f74 2e20 5d5d 3e3c 2f78 7364 3a64   not. ]]></xsd:d\n+00007870: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+00007880: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00007890: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+000078a0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+000078b0: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+000078c0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+000078d0: 616d 653d 2275 7365 2d61 732d 6d65 7461  ame=\"use-as-meta\n+000078e0: 6461 7461 2d63 656e 7465 7222 2074 7970  data-center\" typ\n+000078f0: 653d 2278 7364 3a62 6f6f 6c65 616e 223e  e=\"xsd:boolean\">\n+00007900: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+00007910: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00007920: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00007930: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00007940: 6f6e 3e3c 215b 4344 4154 415b 2077 6f72  on><![CDATA[ wor\n+00007950: 6b20 6173 206d 6574 6164 6174 6120 6365  k as metadata ce\n+00007960: 6e74 6572 206f 7220 6e6f 742e 205d 5d3e  nter or not. ]]>\n+00007970: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+00007980: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00007990: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+000079a0: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+000079b0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+000079c0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+000079d0: 6962 7574 6520 6e61 6d65 3d22 6163 6365  ibute name=\"acce\n+000079e0: 7074 7322 2074 7970 653d 2278 7364 3a73  pts\" type=\"xsd:s\n+000079f0: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+00007a00: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+00007a10: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00007a20: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+00007a30: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00007a40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00007a50: 3c21 5b43 4441 5441 5b20 6c69 7374 206f  <![CDATA[ list o\n+00007a60: 6620 7270 6320 7072 6f74 6f63 6f6c 7320  f rpc protocols \n+00007a70: 6163 6365 7074 6564 2062 7920 7468 6973  accepted by this\n+00007a80: 2072 6567 6973 7472 792c 2073 6570 6172   registry, separ\n+00007a90: 6174 6564 2077 6974 6820 222c 222e 205d  ated with \",\". ]\n+00007aa0: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+00007ab0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00007ac0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+00007ad0: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+00007ae0: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+00007af0: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n+00007b00: 7472 6962 7574 6520 6e61 6d65 3d22 7072  tribute name=\"pr\n+00007b10: 6566 6572 7265 6422 2074 7970 653d 2278  eferred\" type=\"x\n+00007b20: 7364 3a62 6f6f 6c65 616e 223e 0d0a 2020  sd:boolean\">..  \n+00007b30: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00007b40: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00007b50: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00007b60: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+00007b70: 215b 4344 4154 415b 2049 7320 7468 6973  ![CDATA[ Is this\n+00007b80: 2072 6567 6973 7472 7920 7468 6520 7072   registry the pr\n+00007b90: 6566 6572 7265 6420 6f6e 652e 205d 5d3e  eferred one. ]]>\n+00007ba0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+00007bb0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00007bc0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+00007bd0: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+00007be0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+00007bf0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+00007c00: 6962 7574 6520 6e61 6d65 3d22 7765 6967  ibute name=\"weig\n+00007c10: 6874 2220 7479 7065 3d22 7873 643a 696e  ht\" type=\"xsd:in\n+00007c20: 7465 6765 7222 3e0d 0a20 2020 2020 2020  teger\">..       \n+00007c30: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+00007c40: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00007c50: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+00007c60: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+00007c70: 5441 5b20 7765 6967 6874 206f 6620 7265  TA[ weight of re\n+00007c80: 6769 7374 7279 2e20 5d5d 3e3c 2f78 7364  gistry. ]]></xsd\n+00007c90: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00007ca0: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n+00007cb0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00007cc0: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+00007cd0: 7472 6962 7574 653e 0d0a 2020 2020 3c2f  tribute>..    </\n+00007ce0: 7873 643a 636f 6d70 6c65 7854 7970 653e  xsd:complexType>\n+00007cf0: 0d0a 0d0a 2020 2020 3c78 7364 3a63 6f6d  ....    <xsd:com\n+00007d00: 706c 6578 5479 7065 206e 616d 653d 226d  plexType name=\"m\n+00007d10: 6574 6164 6174 6152 6570 6f72 7454 7970  etadataReportTyp\n+00007d20: 6522 3e0d 0a20 2020 2020 2020 203c 7873  e\">..        <xs\n+00007d30: 643a 7365 7175 656e 6365 206d 696e 4f63  d:sequence minOc\n+00007d40: 6375 7273 3d22 3022 206d 6178 4f63 6375  curs=\"0\" maxOccu\n+00007d50: 7273 3d22 756e 626f 756e 6465 6422 3e0d  rs=\"unbounded\">.\n+00007d60: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00007d70: 643a 656c 656d 656e 7420 7265 663d 2270  d:element ref=\"p\n+00007d80: 6172 616d 6574 6572 2220 6d69 6e4f 6363  arameter\" minOcc\n+00007d90: 7572 733d 2230 2220 6d61 784f 6363 7572  urs=\"0\" maxOccur\n+00007da0: 733d 2275 6e62 6f75 6e64 6564 222f 3e0d  s=\"unbounded\"/>.\n+00007db0: 0a20 2020 2020 2020 203c 2f78 7364 3a73  .        </xsd:s\n+00007dc0: 6571 7565 6e63 653e 0d0a 2020 2020 2020  equence>..      \n+00007dd0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+00007de0: 206e 616d 653d 2269 6422 2074 7970 653d   name=\"id\" type=\n+00007df0: 2278 7364 3a49 4422 3e0d 0a20 2020 2020  \"xsd:ID\">..     \n+00007e00: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+00007e10: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00007e20: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00007e30: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+00007e40: 4441 5441 5b20 5468 6520 756e 6971 7565  DATA[ The unique\n+00007e50: 2069 6465 6e74 6966 6965 7220 666f 7220   identifier for \n+00007e60: 6120 6265 616e 2e20 5d5d 3e3c 2f78 7364  a bean. ]]></xsd\n+00007e70: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00007e80: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n+00007e90: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00007ea0: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+00007eb0: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+00007ec0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+00007ed0: 206e 616d 653d 2261 6464 7265 7373 2220   name=\"address\" \n+00007ee0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+00007ef0: 2220 7573 653d 226f 7074 696f 6e61 6c22  \" use=\"optional\"\n+00007f00: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00007f10: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00007f20: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00007f30: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00007f40: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+00007f50: 6520 6d65 7461 6461 7461 5265 706f 7274  e metadataReport\n+00007f60: 2061 6464 7265 7373 2e20 5d5d 3e3c 2f78   address. ]]></x\n+00007f70: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00007f80: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00007f90: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00007fa0: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+00007fb0: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+00007fc0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+00007fd0: 7465 206e 616d 653d 2275 7365 726e 616d  te name=\"usernam\n+00007fe0: 6522 2074 7970 653d 2278 7364 3a73 7472  e\" type=\"xsd:str\n+00007ff0: 696e 6722 2075 7365 3d22 6f70 7469 6f6e  ing\" use=\"option\n+00008000: 616c 223e 0d0a 2020 2020 2020 2020 2020  al\">..          \n+00008010: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00008020: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00008030: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00008040: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+00008050: 2054 6865 206d 6574 6164 6174 6152 6570   The metadataRep\n+00008060: 6f72 7420 7573 6572 6e61 6d65 2e20 5d5d  ort username. ]]\n+00008070: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+00008080: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00008090: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+000080a0: 696f 6e3e 0d0a 2020 2020 2020 2020 3c2f  ion>..        </\n+000080b0: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+000080c0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+000080d0: 7269 6275 7465 206e 616d 653d 2270 6173  ribute name=\"pas\n+000080e0: 7377 6f72 6422 2074 7970 653d 2278 7364  sword\" type=\"xsd\n+000080f0: 3a73 7472 696e 6722 2075 7365 3d22 6f70  :string\" use=\"op\n+00008100: 7469 6f6e 616c 223e 0d0a 2020 2020 2020  tional\">..      \n+00008110: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00008120: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00008130: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00008140: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00008150: 4154 415b 2054 6865 206d 6574 6164 6174  ATA[ The metadat\n+00008160: 6152 6570 6f72 7420 7061 7373 776f 7264  aReport password\n+00008170: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00008180: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00008190: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+000081a0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+000081b0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+000081c0: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+000081d0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+000081e0: 2274 696d 656f 7574 2220 7479 7065 3d22  \"timeout\" type=\"\n+000081f0: 7873 643a 7374 7269 6e67 2220 7573 653d  xsd:string\" use=\n+00008200: 226f 7074 696f 6e61 6c22 3e0d 0a20 2020  \"optional\">..   \n+00008210: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+00008220: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00008230: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00008240: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00008250: 5b43 4441 5441 5b20 5468 6520 7265 7175  [CDATA[ The requ\n+00008260: 6573 7420 7469 6d65 6f75 742e 205d 5d3e  est timeout. ]]>\n+00008270: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+00008280: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00008290: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+000082a0: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+000082b0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+000082c0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+000082d0: 6962 7574 6520 6e61 6d65 3d22 6772 6f75  ibute name=\"grou\n+000082e0: 7022 2074 7970 653d 2278 7364 3a73 7472  p\" type=\"xsd:str\n+000082f0: 696e 6722 2075 7365 3d22 6f70 7469 6f6e  ing\" use=\"option\n+00008300: 616c 223e 0d0a 2020 2020 2020 2020 2020  al\">..          \n+00008310: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00008320: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00008330: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00008340: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+00008350: 2054 6865 2067 726f 7570 206f 6620 6d65   The group of me\n+00008360: 7461 6461 7461 2d72 6570 6f72 742e 205d  tadata-report. ]\n+00008370: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+00008380: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00008390: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+000083a0: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+000083b0: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+000083c0: 0a0d 0a20 2020 2020 2020 203c 7873 643a  ...        <xsd:\n+000083d0: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+000083e0: 7265 7472 792d 7469 6d65 7322 2074 7970  retry-times\" typ\n+000083f0: 653d 2278 7364 3a69 6e74 6567 6572 2220  e=\"xsd:integer\" \n+00008400: 7573 653d 226f 7074 696f 6e61 6c22 3e0d  use=\"optional\">.\n+00008410: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00008420: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00008430: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00008440: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00008450: 6e3e 3c21 5b43 4441 5441 5b20 6966 2066  n><![CDATA[ if f\n+00008460: 6169 6c2c 2072 6574 7279 2074 696d 6573  ail, retry times\n+00008470: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00008480: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00008490: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+000084a0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+000084b0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+000084c0: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+000084d0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+000084e0: 2272 6574 7279 2d70 6572 696f 6422 2074  \"retry-period\" t\n+000084f0: 7970 653d 2278 7364 3a69 6e74 6567 6572  ype=\"xsd:integer\n+00008500: 2220 7573 653d 226f 7074 696f 6e61 6c22  \" use=\"optional\"\n+00008510: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00008520: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00008530: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00008540: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00008550: 696f 6e3e 3c21 5b43 4441 5441 5b20 6966  ion><![CDATA[ if\n+00008560: 2066 6169 6c2c 2072 6574 7279 2070 6572   fail, retry per\n+00008570: 696f 642e 205d 5d3e 3c2f 7873 643a 646f  iod. ]]></xsd:do\n+00008580: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+00008590: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+000085a0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+000085b0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+000085c0: 6275 7465 3e0d 0a20 2020 2020 2020 203c  bute>..        <\n+000085d0: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+000085e0: 6d65 3d22 6379 636c 652d 7265 706f 7274  me=\"cycle-report\n+000085f0: 2220 7479 7065 3d22 7873 643a 626f 6f6c  \" type=\"xsd:bool\n+00008600: 6561 6e22 2075 7365 3d22 6f70 7469 6f6e  ean\" use=\"option\n+00008610: 616c 223e 0d0a 2020 2020 2020 2020 2020  al\">..          \n+00008620: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00008630: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00008640: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00008650: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+00008660: 2072 6570 6f72 7420 6379 636c 656c 792e   report cyclely.\n+00008670: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00008680: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00008690: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+000086a0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+000086b0: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+000086c0: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+000086d0: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+000086e0: 7379 6e63 2d72 6570 6f72 7422 2074 7970  sync-report\" typ\n+000086f0: 653d 2278 7364 3a62 6f6f 6c65 616e 2220  e=\"xsd:boolean\" \n+00008700: 7573 653d 226f 7074 696f 6e61 6c22 3e0d  use=\"optional\">.\n+00008710: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00008720: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00008730: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00008740: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00008750: 6e3e 3c21 5b43 4441 5441 5b20 5379 6e63  n><![CDATA[ Sync\n+00008760: 206f 7220 4173 796e 6320 7265 706f 7274   or Async report\n+00008770: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00008780: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00008790: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+000087a0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+000087b0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+000087c0: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+000087d0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+000087e0: 2263 6c75 7374 6572 2220 7479 7065 3d22  \"cluster\" type=\"\n+000087f0: 7873 643a 626f 6f6c 6561 6e22 2075 7365  xsd:boolean\" use\n+00008800: 3d22 6f70 7469 6f6e 616c 223e 0d0a 2020  =\"optional\">..  \n+00008810: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00008820: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00008830: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00008840: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+00008850: 215b 4344 4154 415b 204e 6565 6420 636c  ![CDATA[ Need cl\n+00008860: 7573 7465 7220 7375 7070 6f72 742c 2064  uster support, d\n+00008870: 6566 6175 6c74 2066 616c 7365 2e20 5d5d  efault false. ]]\n+00008880: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+00008890: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+000088a0: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+000088b0: 696f 6e3e 0d0a 2020 2020 2020 2020 3c2f  ion>..        </\n+000088c0: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+000088d0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+000088e0: 7269 6275 7465 206e 616d 653d 2272 6567  ribute name=\"reg\n+000088f0: 6973 7472 7922 2074 7970 653d 2278 7364  istry\" type=\"xsd\n+00008900: 3a73 7472 696e 6722 2075 7365 3d22 6f70  :string\" use=\"op\n+00008910: 7469 6f6e 616c 223e 0d0a 2020 2020 2020  tional\">..      \n+00008920: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00008930: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00008940: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00008950: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00008960: 4154 415b 2072 6567 6973 7472 7920 636f  ATA[ registry co\n+00008970: 6e66 6967 2069 642e 205d 5d3e 3c2f 7873  nfig id. ]]></xs\n+00008980: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00008990: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+000089a0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+000089b0: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+000089c0: 7474 7269 6275 7465 3e0d 0a20 2020 203c  ttribute>..    <\n+000089d0: 2f78 7364 3a63 6f6d 706c 6578 5479 7065  /xsd:complexType\n+000089e0: 3e0d 0a0d 0a20 2020 203c 7873 643a 636f  >....    <xsd:co\n+000089f0: 6d70 6c65 7854 7970 6520 6e61 6d65 3d22  mplexType name=\"\n+00008a00: 636f 6e66 6967 4365 6e74 6572 5479 7065  configCenterType\n+00008a10: 223e 0d0a 2020 2020 2020 2020 3c78 7364  \">..        <xsd\n+00008a20: 3a73 6571 7565 6e63 6520 6d69 6e4f 6363  :sequence minOcc\n+00008a30: 7572 733d 2230 2220 6d61 784f 6363 7572  urs=\"0\" maxOccur\n+00008a40: 733d 2275 6e62 6f75 6e64 6564 223e 0d0a  s=\"unbounded\">..\n+00008a50: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00008a60: 3a65 6c65 6d65 6e74 2072 6566 3d22 7061  :element ref=\"pa\n+00008a70: 7261 6d65 7465 7222 206d 696e 4f63 6375  rameter\" minOccu\n+00008a80: 7273 3d22 3022 206d 6178 4f63 6375 7273  rs=\"0\" maxOccurs\n+00008a90: 3d22 756e 626f 756e 6465 6422 2f3e 0d0a  =\"unbounded\"/>..\n+00008aa0: 2020 2020 2020 2020 3c2f 7873 643a 7365          </xsd:se\n+00008ab0: 7175 656e 6365 3e0d 0a20 2020 2020 2020  quence>..       \n+00008ac0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+00008ad0: 6e61 6d65 3d22 7072 6f74 6f63 6f6c 2220  name=\"protocol\" \n+00008ae0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+00008af0: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+00008b00: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+00008b10: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00008b20: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+00008b30: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+00008b40: 6865 2063 6f6e 6669 6720 6365 6e74 6572  he config center\n+00008b50: 2070 726f 746f 636f 6c2e 205d 5d3e 3c2f   protocol. ]]></\n+00008b60: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00008b70: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00008b80: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+00008b90: 3e0d 0a20 2020 2020 2020 203c 2f78 7364  >..        </xsd\n+00008ba0: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00008bb0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+00008bc0: 7574 6520 6e61 6d65 3d22 6164 6472 6573  ute name=\"addres\n+00008bd0: 7322 2074 7970 653d 2278 7364 3a73 7472  s\" type=\"xsd:str\n+00008be0: 696e 6722 2075 7365 3d22 6f70 7469 6f6e  ing\" use=\"option\n+00008bf0: 616c 223e 0d0a 2020 2020 2020 2020 2020  al\">..          \n+00008c00: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00008c10: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00008c20: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00008c30: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+00008c40: 2054 6865 2063 6f6e 6669 6720 6365 6e74   The config cent\n+00008c50: 6572 2061 6464 7265 7373 2e20 5d5d 3e3c  er address. ]]><\n+00008c60: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00008c70: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00008c80: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00008c90: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+00008ca0: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+00008cb0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00008cc0: 6275 7465 206e 616d 653d 2263 6c75 7374  bute name=\"clust\n+00008cd0: 6572 2220 7479 7065 3d22 7873 643a 7374  er\" type=\"xsd:st\n+00008ce0: 7269 6e67 2220 7573 653d 226f 7074 696f  ring\" use=\"optio\n+00008cf0: 6e61 6c22 3e0d 0a20 2020 2020 2020 2020  nal\">..         \n+00008d00: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00008d10: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00008d20: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+00008d30: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+00008d40: 5b20 5468 6520 636f 6e66 6967 2063 656e  [ The config cen\n+00008d50: 7465 7220 636c 7573 7465 722c 2069 7427  ter cluster, it'\n+00008d60: 7320 7265 616c 206d 6561 6e69 6e67 206d  s real meaning m\n+00008d70: 6179 2076 6572 7920 6f6e 2064 6966 6665  ay very on diffe\n+00008d80: 7265 6e74 2043 6f6e 6669 6720 4365 6e74  rent Config Cent\n+00008d90: 6572 2070 726f 6475 6374 732e 205d 5d3e  er products. ]]>\n+00008da0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+00008db0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00008dc0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+00008dd0: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+00008de0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+00008df0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+00008e00: 6962 7574 6520 6e61 6d65 3d22 6e61 6d65  ibute name=\"name\n+00008e10: 7370 6163 6522 2074 7970 653d 2278 7364  space\" type=\"xsd\n+00008e20: 3a73 7472 696e 6722 2075 7365 3d22 6f70  :string\" use=\"op\n+00008e30: 7469 6f6e 616c 223e 0d0a 2020 2020 2020  tional\">..      \n+00008e40: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00008e50: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00008e60: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00008e70: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+00008e80: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00008e90: 203c 215b 4344 4154 415b 2054 6865 206e   <![CDATA[ The n\n+00008ea0: 616d 6573 7061 6365 206f 6620 7468 6520  amespace of the \n+00008eb0: 636f 6e66 6967 2063 656e 7465 722c 2067  config center, g\n+00008ec0: 656e 6572 616c 6c79 2069 7427 7320 7573  enerally it's us\n+00008ed0: 6564 2066 6f72 206d 756c 7469 2d74 656e  ed for multi-ten\n+00008ee0: 616e 742c 2062 7574 2069 7427 7320 7265  ant, but it's re\n+00008ef0: 616c 206d 6561 6e69 6e67 2064 6570 656e  al meaning depen\n+00008f00: 6473 206f 6e20 7468 6520 6163 7475 616c  ds on the actual\n+00008f10: 2043 6f6e 6669 6720 4365 6e74 6572 2079   Config Center y\n+00008f20: 6f75 2075 7365 2e20 5d5d 3e3c 2f78 7364  ou use. ]]></xsd\n+00008f30: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00008f40: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n+00008f50: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00008f60: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+00008f70: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+00008f80: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+00008f90: 206e 616d 653d 2267 726f 7570 2220 7479   name=\"group\" ty\n+00008fa0: 7065 3d22 7873 643a 7374 7269 6e67 2220  pe=\"xsd:string\" \n+00008fb0: 7573 653d 226f 7074 696f 6e61 6c22 3e0d  use=\"optional\">.\n+00008fc0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00008fd0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00008fe0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00008ff0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00009000: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00009010: 2020 2020 2020 2020 3c21 5b43 4441 5441          <![CDATA\n+00009020: 5b20 5468 6520 6772 6f75 7020 6f66 2074  [ The group of t\n+00009030: 6865 2063 6f6e 6669 6720 6365 6e74 6572  he config center\n+00009040: 2c20 6765 6e65 7261 6c6c 7920 6974 2773  , generally it's\n+00009050: 2075 7365 6420 746f 2069 6465 6e74 6966   used to identif\n+00009060: 7920 616e 2069 736f 6c61 7465 6420 7370  y an isolated sp\n+00009070: 6163 6520 666f 7220 6120 6261 7463 6820  ace for a batch \n+00009080: 6f66 2063 6f6e 6669 6720 6974 656d 732c  of config items,\n+00009090: 2062 7574 2069 7427 7320 7265 616c 206d   but it's real m\n+000090a0: 6561 6e69 6e67 2064 6570 656e 6473 206f  eaning depends o\n+000090b0: 6e20 7468 6520 6163 7475 616c 2043 6f6e  n the actual Con\n+000090c0: 6669 6720 4365 6e74 6572 2079 6f75 2075  fig Center you u\n+000090d0: 7365 2e2e 205d 5d3e 3c2f 7873 643a 646f  se.. ]]></xsd:do\n+000090e0: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+000090f0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00009100: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00009110: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+00009120: 6275 7465 3e0d 0a20 2020 2020 2020 203c  bute>..        <\n+00009130: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00009140: 6d65 3d22 636f 6e66 6967 2d66 696c 6522  me=\"config-file\"\n+00009150: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+00009160: 6722 2075 7365 3d22 6f70 7469 6f6e 616c  g\" use=\"optional\n+00009170: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+00009180: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+00009190: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+000091a0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+000091b0: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+000091c0: 6865 206b 6579 2075 7365 6420 746f 2067  he key used to g\n+000091d0: 6574 2074 6865 2063 6f6e 6669 6773 2061  et the configs a\n+000091e0: 7420 7374 6172 7475 702e 205d 5d3e 3c2f  t startup. ]]></\n+000091f0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00009200: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00009210: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+00009220: 3e0d 0a20 2020 2020 2020 203c 2f78 7364  >..        </xsd\n+00009230: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00009240: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+00009250: 7574 6520 6e61 6d65 3d22 6170 702d 636f  ute name=\"app-co\n+00009260: 6e66 6967 2d66 696c 6522 2074 7970 653d  nfig-file\" type=\n+00009270: 2278 7364 3a73 7472 696e 6722 2075 7365  \"xsd:string\" use\n+00009280: 3d22 6f70 7469 6f6e 616c 223e 0d0a 2020  =\"optional\">..  \n+00009290: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+000092a0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+000092b0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000092c0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+000092d0: 215b 4344 4154 415b 2054 6865 206b 6579  ![CDATA[ The key\n+000092e0: 2075 7365 6420 746f 2067 6574 2074 6865   used to get the\n+000092f0: 2063 6f6e 6669 6773 2061 7420 7374 6172   configs at star\n+00009300: 7475 702e 205d 5d3e 3c2f 7873 643a 646f  tup. ]]></xsd:do\n+00009310: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+00009320: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00009330: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00009340: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+00009350: 6275 7465 3e0d 0a20 2020 2020 2020 203c  bute>..        <\n+00009360: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00009370: 6d65 3d22 7573 6572 6e61 6d65 2220 7479  me=\"username\" ty\n+00009380: 7065 3d22 7873 643a 7374 7269 6e67 2220  pe=\"xsd:string\" \n+00009390: 7573 653d 226f 7074 696f 6e61 6c22 3e0d  use=\"optional\">.\n+000093a0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+000093b0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+000093c0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+000093d0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+000093e0: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n+000093f0: 7573 6572 6e61 6d65 2066 6f72 2041 5554  username for AUT\n+00009400: 482e 205d 5d3e 3c2f 7873 643a 646f 6375  H. ]]></xsd:docu\n+00009410: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00009420: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00009430: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00009440: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00009450: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+00009460: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00009470: 3d22 7061 7373 776f 7264 2220 7479 7065  =\"password\" type\n+00009480: 3d22 7873 643a 7374 7269 6e67 2220 7573  =\"xsd:string\" us\n+00009490: 653d 226f 7074 696f 6e61 6c22 3e0d 0a20  e=\"optional\">.. \n+000094a0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+000094b0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+000094c0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+000094d0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+000094e0: 3c21 5b43 4441 5441 5b20 5468 6520 7061  <![CDATA[ The pa\n+000094f0: 7373 776f 7264 2066 6f72 2041 5554 482e  ssword for AUTH.\n+00009500: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00009510: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00009520: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+00009530: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00009540: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+00009550: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+00009560: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+00009570: 7469 6d65 6f75 7422 2074 7970 653d 2278  timeout\" type=\"x\n+00009580: 7364 3a73 7472 696e 6722 2075 7365 3d22  sd:string\" use=\"\n+00009590: 6f70 7469 6f6e 616c 223e 0d0a 2020 2020  optional\">..    \n+000095a0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+000095b0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+000095c0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+000095d0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+000095e0: 4344 4154 415b 2054 6865 2072 6571 7565  CDATA[ The reque\n+000095f0: 7374 2074 696d 656f 7574 2e20 5d5d 3e3c  st timeout. ]]><\n+00009600: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00009610: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00009620: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00009630: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+00009640: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+00009650: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00009660: 6275 7465 206e 616d 653d 2268 6967 6865  bute name=\"highe\n+00009670: 7374 2d70 7269 6f72 6974 7922 2074 7970  st-priority\" typ\n+00009680: 653d 2278 7364 3a62 6f6f 6c65 616e 2220  e=\"xsd:boolean\" \n+00009690: 7573 653d 226f 7074 696f 6e61 6c22 3e0d  use=\"optional\">.\n+000096a0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+000096b0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+000096c0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+000096d0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+000096e0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000096f0: 2020 2020 2020 2020 3c21 5b43 4441 5441          <![CDATA\n+00009700: 5b20 5768 6574 6865 7220 7468 6520 636f  [ Whether the co\n+00009710: 6e66 6967 7320 6672 6f6d 2063 6f6e 6669  nfigs from confi\n+00009720: 6720 6365 6e74 6572 2068 6173 2074 6865  g center has the\n+00009730: 2068 6967 6865 7374 2070 7269 6f72 6974   highest priorit\n+00009740: 792e 205d 5d3e 3c2f 7873 643a 646f 6375  y. ]]></xsd:docu\n+00009750: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00009760: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00009770: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00009780: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00009790: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+000097a0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+000097b0: 3d22 696e 636c 7564 652d 7370 7269 6e67  =\"include-spring\n+000097c0: 2d65 6e76 2220 7479 7065 3d22 7873 643a  -env\" type=\"xsd:\n+000097d0: 626f 6f6c 6561 6e22 2075 7365 3d22 6f70  boolean\" use=\"op\n+000097e0: 7469 6f6e 616c 223e 0d0a 2020 2020 2020  tional\">..      \n+000097f0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00009800: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00009810: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00009820: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+00009830: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00009840: 203c 215b 4344 4154 415b 204c 6f61 6420   <![CDATA[ Load \n+00009850: 7468 6520 636f 6e66 6967 2069 7465 6d73  the config items\n+00009860: 2062 7920 4475 6262 6f20 6974 7365 6c66   by Dubbo itself\n+00009870: 206f 7220 5370 7269 6e67 2e20 5d5d 3e3c   or Spring. ]]><\n+00009880: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00009890: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+000098a0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+000098b0: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+000098c0: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+000098d0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+000098e0: 6275 7465 206e 616d 653d 2263 6865 636b  bute name=\"check\n+000098f0: 2220 7479 7065 3d22 7873 643a 626f 6f6c  \" type=\"xsd:bool\n+00009900: 6561 6e22 2075 7365 3d22 6f70 7469 6f6e  ean\" use=\"option\n+00009910: 616c 223e 0d0a 2020 2020 2020 2020 2020  al\">..          \n+00009920: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00009930: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00009940: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00009950: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00009960: 2020 2020 2020 2020 2020 2020 203c 215b               <![\n+00009970: 4344 4154 415b 2054 6865 2070 6f6c 6963  CDATA[ The polic\n+00009980: 7920 746f 2061 7070 6c79 2077 6865 6e20  y to apply when \n+00009990: 636f 6e6e 6563 7469 6e67 2074 6f20 636f  connecting to co\n+000099a0: 6e66 6967 2063 656e 7465 7220 6661 696c  nfig center fail\n+000099b0: 732e 205d 5d3e 3c2f 7873 643a 646f 6375  s. ]]></xsd:docu\n+000099c0: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+000099d0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+000099e0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+000099f0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00009a00: 7465 3e0d 0a20 2020 203c 2f78 7364 3a63  te>..    </xsd:c\n+00009a10: 6f6d 706c 6578 5479 7065 3e0d 0a0d 0a20  omplexType>.... \n+00009a20: 2020 203c 7873 643a 636f 6d70 6c65 7854     <xsd:complexT\n+00009a30: 7970 6520 6e61 6d65 3d22 6d6f 6e69 746f  ype name=\"monito\n+00009a40: 7254 7970 6522 3e0d 0a20 2020 2020 2020  rType\">..       \n+00009a50: 203c 7873 643a 7365 7175 656e 6365 206d   <xsd:sequence m\n+00009a60: 696e 4f63 6375 7273 3d22 3022 206d 6178  inOccurs=\"0\" max\n+00009a70: 4f63 6375 7273 3d22 756e 626f 756e 6465  Occurs=\"unbounde\n+00009a80: 6422 3e0d 0a20 2020 2020 2020 2020 2020  d\">..           \n+00009a90: 203c 7873 643a 656c 656d 656e 7420 7265   <xsd:element re\n+00009aa0: 663d 2270 6172 616d 6574 6572 2220 6d69  f=\"parameter\" mi\n+00009ab0: 6e4f 6363 7572 733d 2230 2220 6d61 784f  nOccurs=\"0\" maxO\n+00009ac0: 6363 7572 733d 2275 6e62 6f75 6e64 6564  ccurs=\"unbounded\n+00009ad0: 222f 3e0d 0a20 2020 2020 2020 203c 2f78  \"/>..        </x\n+00009ae0: 7364 3a73 6571 7565 6e63 653e 0d0a 2020  sd:sequence>..  \n+00009af0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00009b00: 6275 7465 206e 616d 653d 2261 6464 7265  bute name=\"addre\n+00009b10: 7373 2220 7479 7065 3d22 7873 643a 7374  ss\" type=\"xsd:st\n+00009b20: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+00009b30: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+00009b40: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00009b50: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00009b60: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00009b70: 415b 2054 6865 206d 6f6e 6974 6f72 2061  A[ The monitor a\n+00009b80: 6464 7265 7373 2e20 5d5d 3e3c 2f78 7364  ddress. ]]></xsd\n+00009b90: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00009ba0: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n+00009bb0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00009bc0: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+00009bd0: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+00009be0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+00009bf0: 206e 616d 653d 2270 726f 746f 636f 6c22   name=\"protocol\"\n+00009c00: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+00009c10: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+00009c20: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+00009c30: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00009c40: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+00009c50: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+00009c60: 5468 6520 6d6f 6e69 746f 7220 7072 6f74  The monitor prot\n+00009c70: 6f63 6f6c 2e20 5d5d 3e3c 2f78 7364 3a64  ocol. ]]></xsd:d\n+00009c80: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+00009c90: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00009ca0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00009cb0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+00009cc0: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+00009cd0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+00009ce0: 616d 653d 2275 7365 726e 616d 6522 2074  ame=\"username\" t\n+00009cf0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+00009d00: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00009d10: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00009d20: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00009d30: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00009d40: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+00009d50: 6520 6d6f 6e69 746f 7220 7573 6572 6e61  e monitor userna\n+00009d60: 6d65 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  me. ]]></xsd:doc\n+00009d70: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+00009d80: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+00009d90: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00009da0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+00009db0: 7574 653e 0d0a 2020 2020 2020 2020 3c78  ute>..        <x\n+00009dc0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+00009dd0: 653d 2270 6173 7377 6f72 6422 2074 7970  e=\"password\" typ\n+00009de0: 653d 2278 7364 3a73 7472 696e 6722 3e0d  e=\"xsd:string\">.\n+00009df0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00009e00: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00009e10: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00009e20: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00009e30: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n+00009e40: 6d6f 6e69 746f 7220 7061 7373 776f 7264  monitor password\n+00009e50: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00009e60: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00009e70: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00009e80: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00009e90: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00009ea0: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+00009eb0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00009ec0: 2267 726f 7570 2220 7479 7065 3d22 7873  \"group\" type=\"xs\n+00009ed0: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+00009ee0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+00009ef0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00009f00: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00009f10: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00009f20: 4344 4154 415b 2054 6865 206d 6f6e 6974  CDATA[ The monit\n+00009f30: 6f72 2067 726f 7570 2e20 5d5d 3e3c 2f78  or group. ]]></x\n+00009f40: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00009f50: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00009f60: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00009f70: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+00009f80: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+00009f90: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+00009fa0: 7465 206e 616d 653d 2276 6572 7369 6f6e  te name=\"version\n+00009fb0: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+00009fc0: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+00009fd0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00009fe0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00009ff0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+0000a000: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+0000a010: 2054 6865 206d 6f6e 6974 6f72 2076 6572   The monitor ver\n+0000a020: 7369 6f6e 2e20 5d5d 3e3c 2f78 7364 3a64  sion. ]]></xsd:d\n+0000a030: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+0000a040: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+0000a050: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+0000a060: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+0000a070: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+0000a080: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+0000a090: 616d 653d 2269 6e74 6572 7661 6c22 2074  ame=\"interval\" t\n+0000a0a0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+0000a0b0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+0000a0c0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000a0d0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000a0e0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+0000a0f0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+0000a100: 6520 6d6f 6e69 746f 7220 696e 7465 7276  e monitor interv\n+0000a110: 616c 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  al. ]]></xsd:doc\n+0000a120: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+0000a130: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+0000a140: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000a150: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+0000a160: 7574 653e 0d0a 2020 2020 2020 2020 3c78  ute>..        <x\n+0000a170: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+0000a180: 653d 2264 6566 6175 6c74 2220 7479 7065  e=\"default\" type\n+0000a190: 3d22 7873 643a 7374 7269 6e67 223e 0d0a  =\"xsd:string\">..\n+0000a1a0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000a1b0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+0000a1c0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+0000a1d0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+0000a1e0: 3e3c 215b 4344 4154 415b 2049 7320 6465  ><![CDATA[ Is de\n+0000a1f0: 6661 756c 742e 205d 5d3e 3c2f 7873 643a  fault. ]]></xsd:\n+0000a200: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+0000a210: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+0000a220: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+0000a230: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+0000a240: 7269 6275 7465 3e0d 0a20 2020 203c 2f78  ribute>..    </x\n+0000a250: 7364 3a63 6f6d 706c 6578 5479 7065 3e0d  sd:complexType>.\n+0000a260: 0a0d 0a20 2020 203c 7873 643a 636f 6d70  ...    <xsd:comp\n+0000a270: 6c65 7854 7970 6520 6e61 6d65 3d22 7061  lexType name=\"pa\n+0000a280: 7261 6d65 7465 7254 7970 6522 3e0d 0a20  rameterType\">.. \n+0000a290: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+0000a2a0: 6962 7574 6520 6e61 6d65 3d22 6b65 7922  ibute name=\"key\"\n+0000a2b0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+0000a2c0: 6722 2075 7365 3d22 7265 7175 6972 6564  g\" use=\"required\n+0000a2d0: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+0000a2e0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+0000a2f0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000a300: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+0000a310: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+0000a320: 6865 2070 6172 616d 6574 6572 206b 6579  he parameter key\n+0000a330: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+0000a340: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+0000a350: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+0000a360: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000a370: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+0000a380: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+0000a390: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+0000a3a0: 2276 616c 7565 2220 7479 7065 3d22 7873  \"value\" type=\"xs\n+0000a3b0: 643a 7374 7269 6e67 2220 7573 653d 2272  d:string\" use=\"r\n+0000a3c0: 6571 7569 7265 6422 3e0d 0a20 2020 2020  equired\">..     \n+0000a3d0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+0000a3e0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000a3f0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+0000a400: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+0000a410: 4441 5441 5b20 5468 6520 7061 7261 6d65  DATA[ The parame\n+0000a420: 7465 7220 7661 6c75 652e 205d 5d3e 3c2f  ter value. ]]></\n+0000a430: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+0000a440: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000a450: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+0000a460: 3e0d 0a20 2020 2020 2020 203c 2f78 7364  >..        </xsd\n+0000a470: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+0000a480: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+0000a490: 7574 6520 6e61 6d65 3d22 6869 6465 2220  ute name=\"hide\" \n+0000a4a0: 7479 7065 3d22 7873 643a 626f 6f6c 6561  type=\"xsd:boolea\n+0000a4b0: 6e22 3e0d 0a20 2020 2020 2020 2020 2020  n\">..           \n+0000a4c0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+0000a4d0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000a4e0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+0000a4f0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+0000a500: 4869 6465 2070 6172 616d 6574 6572 2e20  Hide parameter. \n+0000a510: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+0000a520: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000a530: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+0000a540: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000a550: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+0000a560: 0d0a 2020 2020 3c2f 7873 643a 636f 6d70  ..    </xsd:comp\n+0000a570: 6c65 7854 7970 653e 0d0a 0d0a 2020 2020  lexType>....    \n+0000a580: 3c78 7364 3a63 6f6d 706c 6578 5479 7065  <xsd:complexType\n+0000a590: 206e 616d 653d 226d 6574 7269 6373 5479   name=\"metricsTy\n+0000a5a0: 7065 223e 0d0a 2020 2020 2020 2020 3c78  pe\">..        <x\n+0000a5b0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+0000a5c0: 653d 2270 6f72 7422 2074 7970 653d 2278  e=\"port\" type=\"x\n+0000a5d0: 7364 3a73 7472 696e 6722 2075 7365 3d22  sd:string\" use=\"\n+0000a5e0: 7265 7175 6972 6564 223e 0d0a 2020 2020  required\">..    \n+0000a5f0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+0000a600: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000a610: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+0000a620: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+0000a630: 4344 4154 415b 2054 6865 206d 6574 7269  CDATA[ The metri\n+0000a640: 6373 2073 6572 7669 6365 2070 6f72 742e  cs service port.\n+0000a650: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+0000a660: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+0000a670: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+0000a680: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000a690: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+0000a6a0: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+0000a6b0: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+0000a6c0: 7072 6f74 6f63 6f6c 2220 7479 7065 3d22  protocol\" type=\"\n+0000a6d0: 7873 643a 7374 7269 6e67 2220 7573 653d  xsd:string\" use=\n+0000a6e0: 2272 6571 7569 7265 6422 3e0d 0a20 2020  \"required\">..   \n+0000a6f0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+0000a700: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000a710: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000a720: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+0000a730: 5b43 4441 5441 5b20 5468 6520 6d65 7472  [CDATA[ The metr\n+0000a740: 6963 7320 7365 7276 6963 6520 7072 6f74  ics service prot\n+0000a750: 6f63 6f6c 2e20 5d5d 3e3c 2f78 7364 3a64  ocol. ]]></xsd:d\n+0000a760: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+0000a770: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+0000a780: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+0000a790: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+0000a7a0: 6962 7574 653e 0d0a 2020 2020 3c2f 7873  ibute>..    </xs\n+0000a7b0: 643a 636f 6d70 6c65 7854 7970 653e 0d0a  d:complexType>..\n+0000a7c0: 0d0a 2020 2020 3c78 7364 3a63 6f6d 706c  ..    <xsd:compl\n+0000a7d0: 6578 5479 7065 206e 616d 653d 226d 6574  exType name=\"met\n+0000a7e0: 686f 6454 7970 6522 3e0d 0a20 2020 2020  hodType\">..     \n+0000a7f0: 2020 203c 7873 643a 636f 6d70 6c65 7843     <xsd:complexC\n+0000a800: 6f6e 7465 6e74 3e0d 0a20 2020 2020 2020  ontent>..       \n+0000a810: 2020 2020 203c 7873 643a 6578 7465 6e73       <xsd:extens\n+0000a820: 696f 6e20 6261 7365 3d22 6162 7374 7261  ion base=\"abstra\n+0000a830: 6374 4d65 7468 6f64 5479 7065 223e 0d0a  ctMethodType\">..\n+0000a840: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000a850: 3c78 7364 3a63 686f 6963 6520 6d69 6e4f  <xsd:choice minO\n+0000a860: 6363 7572 733d 2230 2220 6d61 784f 6363  ccurs=\"0\" maxOcc\n+0000a870: 7572 733d 2275 6e62 6f75 6e64 6564 223e  urs=\"unbounded\">\n+0000a880: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000a890: 2020 2020 2020 3c78 7364 3a65 6c65 6d65        <xsd:eleme\n+0000a8a0: 6e74 2072 6566 3d22 6172 6775 6d65 6e74  nt ref=\"argument\n+0000a8b0: 2220 6d69 6e4f 6363 7572 733d 2230 2220  \" minOccurs=\"0\" \n+0000a8c0: 6d61 784f 6363 7572 733d 2275 6e62 6f75  maxOccurs=\"unbou\n+0000a8d0: 6e64 6564 222f 3e0d 0a20 2020 2020 2020  nded\"/>..       \n+0000a8e0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000a8f0: 643a 656c 656d 656e 7420 7265 663d 2270  d:element ref=\"p\n+0000a900: 6172 616d 6574 6572 2220 6d69 6e4f 6363  arameter\" minOcc\n+0000a910: 7572 733d 2230 2220 6d61 784f 6363 7572  urs=\"0\" maxOccur\n+0000a920: 733d 2275 6e62 6f75 6e64 6564 222f 3e0d  s=\"unbounded\"/>.\n+0000a930: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000a940: 203c 2f78 7364 3a63 686f 6963 653e 0d0a   </xsd:choice>..\n+0000a950: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000a960: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+0000a970: 616d 653d 226e 616d 6522 2074 7970 653d  ame=\"name\" type=\n+0000a980: 2278 7364 3a73 7472 696e 6722 2075 7365  \"xsd:string\" use\n+0000a990: 3d22 7265 7175 6972 6564 223e 0d0a 2020  =\"required\">..  \n+0000a9a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000a9b0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+0000a9c0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000a9d0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000a9e0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+0000a9f0: 215b 4344 4154 415b 2054 6865 206d 6574  ![CDATA[ The met\n+0000aa00: 686f 6420 6e61 6d65 2028 6d65 7468 6f64  hod name (method\n+0000aa10: 2e74 6f53 7472 696e 6728 2929 2e20 5d5d  .toString()). ]]\n+0000aa20: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+0000aa30: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000aa40: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+0000aa50: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+0000aa60: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+0000aa70: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+0000aa80: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000aa90: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+0000aaa0: 616d 653d 2265 7865 6375 7465 7322 2074  ame=\"executes\" t\n+0000aab0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+0000aac0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000aad0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+0000aae0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000aaf0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000ab00: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+0000ab10: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+0000ab20: 6520 6d61 7820 6163 7469 7665 2072 6571  e max active req\n+0000ab30: 7565 7374 732e 205d 5d3e 3c2f 7873 643a  uests. ]]></xsd:\n+0000ab40: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+0000ab50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000ab60: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+0000ab70: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000ab80: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+0000ab90: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+0000aba0: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n+0000abb0: 7472 6962 7574 6520 6e61 6d65 3d22 7374  tribute name=\"st\n+0000abc0: 6174 2220 7479 7065 3d22 7873 643a 7374  at\" type=\"xsd:st\n+0000abd0: 7269 6e67 2220 6465 6661 756c 743d 222d  ring\" default=\"-\n+0000abe0: 3122 3e0d 0a20 2020 2020 2020 2020 2020  1\">..           \n+0000abf0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+0000ac00: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000ac10: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000ac20: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+0000ac30: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+0000ac40: 5468 6520 6d65 7468 6f64 2070 6172 616d  The method param\n+0000ac50: 6574 6572 2069 6e64 6578 2066 6f72 2073  eter index for s\n+0000ac60: 7461 7469 7374 6963 732e 205d 5d3e 3c2f  tatistics. ]]></\n+0000ac70: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+0000ac80: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000ac90: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+0000aca0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000acb0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+0000acc0: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+0000acd0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000ace0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+0000acf0: 3d22 7265 7472 7922 2074 7970 653d 2278  =\"retry\" type=\"x\n+0000ad00: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+0000ad10: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000ad20: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+0000ad30: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000ad40: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000ad50: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+0000ad60: 5b43 4441 5441 5b20 4465 7072 6563 6174  [CDATA[ Deprecat\n+0000ad70: 6564 2e20 5265 706c 6163 6520 746f 2072  ed. Replace to r\n+0000ad80: 6574 7269 6573 2e20 5d5d 3e3c 2f78 7364  etries. ]]></xsd\n+0000ad90: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+0000ada0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000adb0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+0000adc0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000add0: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+0000ade0: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+0000adf0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+0000ae00: 7474 7269 6275 7465 206e 616d 653d 2272  ttribute name=\"r\n+0000ae10: 656c 6961 626c 6522 2074 7970 653d 2278  eliable\" type=\"x\n+0000ae20: 7364 3a73 7472 696e 6722 2064 6566 6175  sd:string\" defau\n+0000ae30: 6c74 3d22 6661 6c73 6522 3e0d 0a20 2020  lt=\"false\">..   \n+0000ae40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000ae50: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+0000ae60: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000ae70: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000ae80: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+0000ae90: 5b43 4441 5441 5b20 4465 7072 6563 6174  [CDATA[ Deprecat\n+0000aea0: 6564 2e20 5265 706c 6163 6520 746f 206e  ed. Replace to n\n+0000aeb0: 6170 6f6c 6920 7072 6f74 6f63 6f6c 2e20  apoli protocol. \n+0000aec0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+0000aed0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000aee0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+0000aef0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+0000af00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000af10: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+0000af20: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000af30: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+0000af40: 206e 616d 653d 2264 6570 7265 6361 7465   name=\"deprecate\n+0000af50: 6422 2074 7970 653d 2278 7364 3a73 7472  d\" type=\"xsd:str\n+0000af60: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+0000af70: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000af80: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000af90: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000afa0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+0000afb0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+0000afc0: 5b20 5468 6520 6d65 7468 6f64 2064 6570  [ The method dep\n+0000afd0: 7265 6361 7465 642e 205d 5d3e 3c2f 7873  recated. ]]></xs\n+0000afe0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000aff0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000b000: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+0000b010: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000b020: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+0000b030: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+0000b040: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000b050: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+0000b060: 7374 6963 6b79 2220 7479 7065 3d22 7873  sticky\" type=\"xs\n+0000b070: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n 0000b080: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b090: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-0000b0a0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000b0b0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-0000b0c0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000b0d0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000b0e0: 2020 2020 2020 2020 2020 2020 203c 215b               <![\n-0000b0f0: 4344 4154 415b 204d 6574 686f 6420 7265  CDATA[ Method re\n-0000b100: 7475 726e 2074 7269 6767 6572 2e20 7265  turn trigger. re\n-0000b110: 7475 726e 2061 7474 7269 6275 7465 206d  turn attribute m\n-0000b120: 7573 7420 6265 2074 7275 652e 5d5d 3e3c  ust be true.]]><\n-0000b130: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-0000b140: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000b150: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-0000b160: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000b170: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-0000b180: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-0000b190: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000b1a0: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-0000b1b0: 6f6e 7468 726f 7722 2074 7970 653d 2278  onthrow\" type=\"x\n-0000b1c0: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-0000b1d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b1e0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+0000b090: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+0000b0a0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000b0b0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+0000b0c0: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+0000b0d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b0e0: 2020 2020 2020 2020 2020 203c 215b 4344             <![CD\n+0000b0f0: 4154 415b 2045 6e61 626c 652f 4469 7361  ATA[ Enable/Disa\n+0000b100: 626c 6520 636c 7573 7465 7220 7374 6963  ble cluster stic\n+0000b110: 6b79 2070 6f6c 6963 792e 4465 6661 756c  ky policy.Defaul\n+0000b120: 7420 6661 6c73 6520 5d5d 3e3c 2f78 7364  t false ]]></xsd\n+0000b130: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+0000b140: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000b150: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+0000b160: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000b170: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+0000b180: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+0000b190: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+0000b1a0: 7474 7269 6275 7465 206e 616d 653d 2272  ttribute name=\"r\n+0000b1b0: 6574 7572 6e22 2074 7970 653d 2278 7364  eturn\" type=\"xsd\n+0000b1c0: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+0000b1d0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000b1e0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n 0000b1f0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n 0000b200: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-0000b210: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-0000b220: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b230: 2020 2020 2020 2020 203c 215b 4344 4154           <![CDAT\n-0000b240: 415b 204d 6574 686f 6420 6f6e 2065 7272  A[ Method on err\n-0000b250: 6f72 2074 7269 6767 6572 2e72 6574 7572  or trigger.retur\n-0000b260: 6e20 6174 7472 6962 7574 6520 6d75 7374  n attribute must\n-0000b270: 2062 6520 7472 7565 2e5d 5d3e 3c2f 7873   be true.]]></xs\n-0000b280: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000b290: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000b2a0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-0000b2b0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000b2c0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-0000b2d0: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-0000b2e0: 2020 2020 3c2f 7873 643a 6578 7465 6e73      </xsd:extens\n-0000b2f0: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-0000b300: 7364 3a63 6f6d 706c 6578 436f 6e74 656e  sd:complexConten\n-0000b310: 743e 0a20 2020 203c 2f78 7364 3a63 6f6d  t>.    </xsd:com\n-0000b320: 706c 6578 5479 7065 3e0a 0a20 2020 203c  plexType>..    <\n-0000b330: 7873 643a 636f 6d70 6c65 7854 7970 6520  xsd:complexType \n-0000b340: 6e61 6d65 3d22 6172 6775 6d65 6e74 5479  name=\"argumentTy\n-0000b350: 7065 223e 0a20 2020 2020 2020 203c 7873  pe\">.        <xs\n-0000b360: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-0000b370: 3d22 696e 6465 7822 2074 7970 653d 2278  =\"index\" type=\"x\n-0000b380: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-0000b390: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-0000b3a0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000b3b0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-0000b3c0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-0000b3d0: 4441 5441 5b20 5468 6520 6172 6775 6d65  DATA[ The argume\n-0000b3e0: 6e74 2069 6e64 6578 2e20 5d5d 3e3c 2f78  nt index. ]]></x\n-0000b3f0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-0000b400: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-0000b410: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000b420: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-0000b430: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-0000b440: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-0000b450: 6e61 6d65 3d22 7479 7065 2220 7479 7065  name=\"type\" type\n-0000b460: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-0000b470: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000b480: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000b490: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000b4a0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-0000b4b0: 215b 4344 4154 415b 2054 6865 2061 7267  ![CDATA[ The arg\n-0000b4c0: 756d 656e 7420 7479 7065 2e20 5d5d 3e3c  ument type. ]]><\n-0000b4d0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-0000b4e0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000b4f0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-0000b500: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-0000b510: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-0000b520: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-0000b530: 6520 6e61 6d65 3d22 6361 6c6c 6261 636b  e name=\"callback\n-0000b540: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-0000b550: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-0000b560: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-0000b570: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000b580: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-0000b590: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-0000b5a0: 6865 2061 7267 756d 656e 7420 6973 2063  he argument is c\n-0000b5b0: 616c 6c62 6163 6b2e 205d 5d3e 3c2f 7873  allback. ]]></xs\n-0000b5c0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000b5d0: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-0000b5e0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000b5f0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-0000b600: 7269 6275 7465 3e0a 2020 2020 3c2f 7873  ribute>.    </xs\n-0000b610: 643a 636f 6d70 6c65 7854 7970 653e 0a0a  d:complexType>..\n-0000b620: 2020 2020 3c78 7364 3a63 6f6d 706c 6578      <xsd:complex\n-0000b630: 5479 7065 206e 616d 653d 2263 6f6e 7375  Type name=\"consu\n-0000b640: 6d65 7254 7970 6522 3e0a 2020 2020 2020  merType\">.      \n-0000b650: 2020 3c78 7364 3a63 6f6d 706c 6578 436f    <xsd:complexCo\n-0000b660: 6e74 656e 743e 0a20 2020 2020 2020 2020  ntent>.         \n-0000b670: 2020 203c 7873 643a 6578 7465 6e73 696f     <xsd:extensio\n-0000b680: 6e20 6261 7365 3d22 6162 7374 7261 6374  n base=\"abstract\n-0000b690: 5265 6665 7265 6e63 6554 7970 6522 3e0a  ReferenceType\">.\n-0000b6a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b6b0: 3c78 7364 3a73 6571 7565 6e63 6520 6d69  <xsd:sequence mi\n-0000b6c0: 6e4f 6363 7572 733d 2230 2220 6d61 784f  nOccurs=\"0\" maxO\n-0000b6d0: 6363 7572 733d 2275 6e62 6f75 6e64 6564  ccurs=\"unbounded\n-0000b6e0: 223e 0a20 2020 2020 2020 2020 2020 2020  \">.             \n-0000b6f0: 2020 2020 2020 203c 7873 643a 656c 656d         <xsd:elem\n-0000b700: 656e 7420 7265 663d 2272 6566 6572 656e  ent ref=\"referen\n-0000b710: 6365 2220 6d69 6e4f 6363 7572 733d 2230  ce\" minOccurs=\"0\n-0000b720: 2220 6d61 784f 6363 7572 733d 2275 6e62  \" maxOccurs=\"unb\n-0000b730: 6f75 6e64 6564 222f 3e0a 2020 2020 2020  ounded\"/>.      \n-0000b740: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000b750: 7364 3a65 6c65 6d65 6e74 2072 6566 3d22  sd:element ref=\"\n-0000b760: 7061 7261 6d65 7465 7222 206d 696e 4f63  parameter\" minOc\n-0000b770: 6375 7273 3d22 3022 206d 6178 4f63 6375  curs=\"0\" maxOccu\n-0000b780: 7273 3d22 756e 626f 756e 6465 6422 2f3e  rs=\"unbounded\"/>\n-0000b790: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000b7a0: 203c 2f78 7364 3a73 6571 7565 6e63 653e   </xsd:sequence>\n-0000b7b0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000b7c0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-0000b7d0: 6e61 6d65 3d22 6465 6661 756c 7422 2074  name=\"default\" t\n-0000b7e0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-0000b7f0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000b800: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-0000b810: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000b820: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000b830: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000b840: 6e3e 3c21 5b43 4441 5441 5b20 4973 2064  n><![CDATA[ Is d\n-0000b850: 6566 6175 6c74 2e20 5d5d 3e3c 2f78 7364  efault. ]]></xsd\n-0000b860: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-0000b870: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b880: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-0000b890: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000b8a0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-0000b8b0: 6962 7574 653e 0a20 2020 2020 2020 2020  ibute>.         \n+0000b210: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+0000b220: 4441 5441 5b20 4d65 7468 6f64 2072 6573  DATA[ Method res\n+0000b230: 756c 7420 6973 2072 6574 7572 6e2e 2064  ult is return. d\n+0000b240: 6566 6175 6c74 2069 7320 7472 7565 2e5d  efault is true.]\n+0000b250: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+0000b260: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000b270: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+0000b280: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+0000b290: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000b2a0: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+0000b2b0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000b2c0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+0000b2d0: 6e61 6d65 3d22 6f6e 696e 766f 6b65 2220  name=\"oninvoke\" \n+0000b2e0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+0000b2f0: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+0000b300: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+0000b310: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000b320: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b330: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+0000b340: 7469 6f6e 3e3c 215b 4344 4154 415b 204d  tion><![CDATA[ M\n+0000b350: 6574 686f 6420 696e 766f 6b65 2074 7269  ethod invoke tri\n+0000b360: 6767 6572 2e5d 5d3e 3c2f 7873 643a 646f  gger.]]></xsd:do\n+0000b370: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+0000b380: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b390: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+0000b3a0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000b3b0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+0000b3c0: 6275 7465 3e0d 0a20 2020 2020 2020 2020  bute>..         \n+0000b3d0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+0000b3e0: 6962 7574 6520 6e61 6d65 3d22 6f6e 7265  ibute name=\"onre\n+0000b3f0: 7475 726e 2220 7479 7065 3d22 7873 643a  turn\" type=\"xsd:\n+0000b400: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+0000b410: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+0000b420: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+0000b430: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b440: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+0000b450: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+0000b460: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b470: 2020 2020 2020 2020 203c 215b 4344 4154           <![CDAT\n+0000b480: 415b 204d 6574 686f 6420 7265 7475 726e  A[ Method return\n+0000b490: 2074 7269 6767 6572 2e20 7265 7475 726e   trigger. return\n+0000b4a0: 2061 7474 7269 6275 7465 206d 7573 7420   attribute must \n+0000b4b0: 6265 2074 7275 652e 5d5d 3e3c 2f78 7364  be true.]]></xsd\n+0000b4c0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+0000b4d0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000b4e0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+0000b4f0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000b500: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+0000b510: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+0000b520: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+0000b530: 7474 7269 6275 7465 206e 616d 653d 226f  ttribute name=\"o\n+0000b540: 6e74 6872 6f77 2220 7479 7065 3d22 7873  nthrow\" type=\"xs\n+0000b550: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+0000b560: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b570: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+0000b580: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000b590: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+0000b5a0: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+0000b5b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b5c0: 2020 2020 2020 2020 2020 203c 215b 4344             <![CD\n+0000b5d0: 4154 415b 204d 6574 686f 6420 6f6e 2065  ATA[ Method on e\n+0000b5e0: 7272 6f72 2074 7269 6767 6572 2e72 6574  rror trigger.ret\n+0000b5f0: 7572 6e20 6174 7472 6962 7574 6520 6d75  urn attribute mu\n+0000b600: 7374 2062 6520 7472 7565 2e5d 5d3e 3c2f  st be true.]]></\n+0000b610: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+0000b620: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000b630: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+0000b640: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000b650: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+0000b660: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+0000b670: 2020 2020 2020 2020 203c 2f78 7364 3a65           </xsd:e\n+0000b680: 7874 656e 7369 6f6e 3e0d 0a20 2020 2020  xtension>..     \n+0000b690: 2020 203c 2f78 7364 3a63 6f6d 706c 6578     </xsd:complex\n+0000b6a0: 436f 6e74 656e 743e 0d0a 2020 2020 3c2f  Content>..    </\n+0000b6b0: 7873 643a 636f 6d70 6c65 7854 7970 653e  xsd:complexType>\n+0000b6c0: 0d0a 0d0a 2020 2020 3c78 7364 3a63 6f6d  ....    <xsd:com\n+0000b6d0: 706c 6578 5479 7065 206e 616d 653d 2261  plexType name=\"a\n+0000b6e0: 7267 756d 656e 7454 7970 6522 3e0d 0a20  rgumentType\">.. \n+0000b6f0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+0000b700: 6962 7574 6520 6e61 6d65 3d22 696e 6465  ibute name=\"inde\n+0000b710: 7822 2074 7970 653d 2278 7364 3a73 7472  x\" type=\"xsd:str\n+0000b720: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+0000b730: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+0000b740: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000b750: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+0000b760: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+0000b770: 5b20 5468 6520 6172 6775 6d65 6e74 2069  [ The argument i\n+0000b780: 6e64 6578 2e20 5d5d 3e3c 2f78 7364 3a64  ndex. ]]></xsd:d\n+0000b790: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+0000b7a0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+0000b7b0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+0000b7c0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+0000b7d0: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+0000b7e0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+0000b7f0: 616d 653d 2274 7970 6522 2074 7970 653d  ame=\"type\" type=\n+0000b800: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+0000b810: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000b820: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000b830: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000b840: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000b850: 3c21 5b43 4441 5441 5b20 5468 6520 6172  <![CDATA[ The ar\n+0000b860: 6775 6d65 6e74 2074 7970 652e 205d 5d3e  gument type. ]]>\n+0000b870: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+0000b880: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000b890: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+0000b8a0: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+0000b8b0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n 0000b8c0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-0000b8d0: 6962 7574 6520 6e61 6d65 3d22 636c 6965  ibute name=\"clie\n-0000b8e0: 6e74 2220 7479 7065 3d22 7873 643a 7374  nt\" type=\"xsd:st\n-0000b8f0: 7269 6e67 223e 0a20 2020 2020 2020 2020  ring\">.         \n-0000b900: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000b910: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000b920: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b930: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-0000b940: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n-0000b950: 2054 7261 6e73 706f 7274 6572 206c 6179   Transporter lay\n-0000b960: 6572 2066 7261 6d65 776f 726b 3a20 6e65  er framework: ne\n-0000b970: 7474 7920 6d69 6e61 2e2e 2e2e 205d 5d3e  tty mina.... ]]>\n-0000b980: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-0000b990: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000b9a0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-0000b9b0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000b9c0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000b9d0: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-0000b9e0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000b9f0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-0000ba00: 2274 6872 6561 6470 6f6f 6c22 2074 7970  \"threadpool\" typ\n-0000ba10: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-0000ba20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000ba30: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-0000ba40: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000ba50: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-0000ba60: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000ba70: 3c21 5b43 4441 5441 5b20 436f 6e73 756d  <![CDATA[ Consum\n-0000ba80: 6572 2074 6872 6561 6470 6f6f 6c3a 2063  er threadpool: c\n-0000ba90: 6163 6865 642c 2066 6978 6564 2c20 6c69  ached, fixed, li\n-0000baa0: 6d69 7465 642c 2065 6167 6572 5d5d 3e3c  mited, eager]]><\n-0000bab0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-0000bac0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000bad0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-0000bae0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000baf0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-0000bb00: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-0000bb10: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000bb20: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-0000bb30: 636f 7265 7468 7265 6164 7322 2074 7970  corethreads\" typ\n-0000bb40: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-0000bb50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000bb60: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-0000bb70: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000bb80: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-0000bb90: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000bba0: 3c21 5b43 4441 5441 5b20 5468 6520 7468  <![CDATA[ The th\n-0000bbb0: 7265 6164 2070 6f6f 6c20 636f 7265 2074  read pool core t\n-0000bbc0: 6872 6561 6473 2073 697a 652e 205d 5d3e  hreads size. ]]>\n-0000bbd0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-0000bbe0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000bbf0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-0000bc00: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000bc10: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000bc20: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-0000bc30: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000bc40: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-0000bc50: 2274 6872 6561 6473 2220 7479 7065 3d22  \"threads\" type=\"\n-0000bc60: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-0000bc70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000bc80: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-0000bc90: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000bca0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-0000bcb0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-0000bcc0: 4344 4154 415b 2054 6865 2074 6872 6561  CDATA[ The threa\n-0000bcd0: 6420 706f 6f6c 2073 697a 652e 205d 5d3e  d pool size. ]]>\n-0000bce0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-0000bcf0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000bd00: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-0000bd10: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000bd20: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000bd30: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-0000bd40: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000bd50: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-0000bd60: 2271 7565 7565 7322 2074 7970 653d 2278  \"queues\" type=\"x\n-0000bd70: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-0000bd80: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000bd90: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-0000bda0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000bdb0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-0000bdc0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-0000bdd0: 4441 5441 5b20 5468 6520 7468 7265 6164  DATA[ The thread\n-0000bde0: 2070 6f6f 6c20 7175 6575 6520 7369 7a65   pool queue size\n-0000bdf0: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-0000be00: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-0000be10: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-0000be20: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000be30: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000be40: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-0000be50: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000be60: 203c 7873 643a 616e 7941 7474 7269 6275   <xsd:anyAttribu\n-0000be70: 7465 206e 616d 6573 7061 6365 3d22 2323  te namespace=\"##\n-0000be80: 6f74 6865 7222 2070 726f 6365 7373 436f  other\" processCo\n-0000be90: 6e74 656e 7473 3d22 6c61 7822 2f3e 0a20  ntents=\"lax\"/>. \n-0000bea0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000beb0: 3a65 7874 656e 7369 6f6e 3e0a 2020 2020  :extension>.    \n-0000bec0: 2020 2020 3c2f 7873 643a 636f 6d70 6c65      </xsd:comple\n-0000bed0: 7843 6f6e 7465 6e74 3e0a 2020 2020 3c2f  xContent>.    </\n-0000bee0: 7873 643a 636f 6d70 6c65 7854 7970 653e  xsd:complexType>\n-0000bef0: 0a0a 2020 2020 3c78 7364 3a63 6f6d 706c  ..    <xsd:compl\n-0000bf00: 6578 5479 7065 206e 616d 653d 2272 6566  exType name=\"ref\n-0000bf10: 6572 656e 6365 5479 7065 223e 0a20 2020  erenceType\">.   \n-0000bf20: 2020 2020 203c 7873 643a 636f 6d70 6c65       <xsd:comple\n-0000bf30: 7843 6f6e 7465 6e74 3e0a 2020 2020 2020  xContent>.      \n-0000bf40: 2020 2020 2020 3c78 7364 3a65 7874 656e        <xsd:exten\n-0000bf50: 7369 6f6e 2062 6173 653d 2261 6273 7472  sion base=\"abstr\n-0000bf60: 6163 7452 6566 6572 656e 6365 5479 7065  actReferenceType\n-0000bf70: 223e 0a20 2020 2020 2020 2020 2020 2020  \">.             \n-0000bf80: 2020 203c 7873 643a 6368 6f69 6365 206d     <xsd:choice m\n-0000bf90: 696e 4f63 6375 7273 3d22 3022 206d 6178  inOccurs=\"0\" max\n-0000bfa0: 4f63 6375 7273 3d22 756e 626f 756e 6465  Occurs=\"unbounde\n-0000bfb0: 6422 3e0a 2020 2020 2020 2020 2020 2020  d\">.            \n-0000bfc0: 2020 2020 2020 2020 3c78 7364 3a65 6c65          <xsd:ele\n-0000bfd0: 6d65 6e74 2072 6566 3d22 6d65 7468 6f64  ment ref=\"method\n-0000bfe0: 2220 6d69 6e4f 6363 7572 733d 2230 2220  \" minOccurs=\"0\" \n-0000bff0: 6d61 784f 6363 7572 733d 2275 6e62 6f75  maxOccurs=\"unbou\n-0000c000: 6e64 6564 222f 3e0a 2020 2020 2020 2020  nded\"/>.        \n-0000c010: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000c020: 3a65 6c65 6d65 6e74 2072 6566 3d22 7061  :element ref=\"pa\n-0000c030: 7261 6d65 7465 7222 206d 696e 4f63 6375  rameter\" minOccu\n-0000c040: 7273 3d22 3022 206d 6178 4f63 6375 7273  rs=\"0\" maxOccurs\n-0000c050: 3d22 756e 626f 756e 6465 6422 2f3e 0a20  =\"unbounded\"/>. \n-0000c060: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000c070: 2f78 7364 3a63 686f 6963 653e 0a20 2020  /xsd:choice>.   \n-0000c080: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-0000c090: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-0000c0a0: 3d22 696e 7465 7266 6163 6522 2074 7970  =\"interface\" typ\n-0000c0b0: 653d 2278 7364 3a74 6f6b 656e 2220 7573  e=\"xsd:token\" us\n-0000c0c0: 653d 2272 6571 7569 7265 6422 3e0a 2020  e=\"required\">.  \n-0000c0d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c0e0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-0000c0f0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000c100: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000c110: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-0000c120: 5b43 4441 5441 5b20 5468 6520 7365 7276  [CDATA[ The serv\n-0000c130: 6963 6520 696e 7465 7266 6163 6520 636c  ice interface cl\n-0000c140: 6173 7320 6e61 6d65 2e20 5d5d 3e3c 2f78  ass name. ]]></x\n-0000c150: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-0000c160: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000c170: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-0000c180: 7070 696e 666f 3e0a 2020 2020 2020 2020  ppinfo>.        \n-0000c190: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c1a0: 2020 2020 3c74 6f6f 6c3a 616e 6e6f 7461      <tool:annota\n-0000c1b0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000c1c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c1d0: 2020 2020 2020 3c74 6f6f 6c3a 6578 7065        <tool:expe\n-0000c1e0: 6374 6564 2d74 7970 6520 7479 7065 3d22  cted-type type=\"\n-0000c1f0: 6a61 7661 2e6c 616e 672e 436c 6173 7322  java.lang.Class\"\n-0000c200: 2f3e 0a20 2020 2020 2020 2020 2020 2020  />.             \n-0000c210: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000c220: 2f74 6f6f 6c3a 616e 6e6f 7461 7469 6f6e  /tool:annotation\n-0000c230: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000c240: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-0000c250: 6170 7069 6e66 6f3e 0a20 2020 2020 2020  appinfo>.       \n-0000c260: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-0000c270: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000c280: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000c290: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-0000c2a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c2b0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-0000c2c0: 616d 653d 2275 726c 2220 7479 7065 3d22  ame=\"url\" type=\"\n-0000c2d0: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-0000c2e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c2f0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-0000c300: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000c310: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-0000c320: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-0000c330: 4344 4154 415b 2050 726f 7669 6465 7220  CDATA[ Provider \n-0000c340: 6c69 7374 2075 726c 2e20 5d5d 3e3c 2f78  list url. ]]></x\n-0000c350: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-0000c360: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000c370: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-0000c380: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000c390: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-0000c3a0: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-0000c3b0: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n-0000c3c0: 7472 6962 7574 6520 6e61 6d65 3d22 636c  tribute name=\"cl\n-0000c3d0: 6965 6e74 2220 7479 7065 3d22 7873 643a  ient\" type=\"xsd:\n-0000c3e0: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-0000c3f0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-0000c400: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-0000c410: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c420: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-0000c430: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-0000c440: 415b 2050 726f 746f 636f 6c20 7472 616e  A[ Protocol tran\n-0000c450: 7370 6f72 7420 636c 6965 6e74 2074 7970  sport client typ\n-0000c460: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n-0000c470: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-0000c480: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000c490: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-0000c4a0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000c4b0: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-0000c4c0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000c4d0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-0000c4e0: 206e 616d 653d 2263 6f6e 7375 6d65 7222   name=\"consumer\"\n-0000c4f0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-0000c500: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-0000c510: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-0000c520: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000c530: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c540: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-0000c550: 696f 6e3e 3c21 5b43 4441 5441 5b20 4465  ion><![CDATA[ De\n-0000c560: 7072 6563 6174 6564 2e20 5265 706c 6163  precated. Replac\n-0000c570: 6520 746f 2072 6566 6572 656e 6365 2d64  e to reference-d\n-0000c580: 6566 6175 6c74 2e20 5d5d 3e3c 2f78 7364  efault. ]]></xsd\n-0000c590: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n+0000b8d0: 6962 7574 6520 6e61 6d65 3d22 6361 6c6c  ibute name=\"call\n+0000b8e0: 6261 636b 2220 7479 7065 3d22 7873 643a  back\" type=\"xsd:\n+0000b8f0: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+0000b900: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+0000b910: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000b920: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+0000b930: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+0000b940: 4154 415b 2054 6865 2061 7267 756d 656e  ATA[ The argumen\n+0000b950: 7420 6973 2063 616c 6c62 6163 6b2e 205d  t is callback. ]\n+0000b960: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+0000b970: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000b980: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+0000b990: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+0000b9a0: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+0000b9b0: 0a20 2020 203c 2f78 7364 3a63 6f6d 706c  .    </xsd:compl\n+0000b9c0: 6578 5479 7065 3e0d 0a0d 0a20 2020 203c  exType>....    <\n+0000b9d0: 7873 643a 636f 6d70 6c65 7854 7970 6520  xsd:complexType \n+0000b9e0: 6e61 6d65 3d22 636f 6e73 756d 6572 5479  name=\"consumerTy\n+0000b9f0: 7065 223e 0d0a 2020 2020 2020 2020 3c78  pe\">..        <x\n+0000ba00: 7364 3a63 6f6d 706c 6578 436f 6e74 656e  sd:complexConten\n+0000ba10: 743e 0d0a 2020 2020 2020 2020 2020 2020  t>..            \n+0000ba20: 3c78 7364 3a65 7874 656e 7369 6f6e 2062  <xsd:extension b\n+0000ba30: 6173 653d 2261 6273 7472 6163 7452 6566  ase=\"abstractRef\n+0000ba40: 6572 656e 6365 5479 7065 223e 0d0a 2020  erenceType\">..  \n+0000ba50: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+0000ba60: 7364 3a73 6571 7565 6e63 6520 6d69 6e4f  sd:sequence minO\n+0000ba70: 6363 7572 733d 2230 2220 6d61 784f 6363  ccurs=\"0\" maxOcc\n+0000ba80: 7572 733d 2275 6e62 6f75 6e64 6564 223e  urs=\"unbounded\">\n+0000ba90: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000baa0: 2020 2020 2020 3c78 7364 3a65 6c65 6d65        <xsd:eleme\n+0000bab0: 6e74 2072 6566 3d22 7265 6665 7265 6e63  nt ref=\"referenc\n+0000bac0: 6522 206d 696e 4f63 6375 7273 3d22 3022  e\" minOccurs=\"0\"\n+0000bad0: 206d 6178 4f63 6375 7273 3d22 756e 626f   maxOccurs=\"unbo\n+0000bae0: 756e 6465 6422 2f3e 0d0a 2020 2020 2020  unded\"/>..      \n+0000baf0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+0000bb00: 7364 3a65 6c65 6d65 6e74 2072 6566 3d22  sd:element ref=\"\n+0000bb10: 7061 7261 6d65 7465 7222 206d 696e 4f63  parameter\" minOc\n+0000bb20: 6375 7273 3d22 3022 206d 6178 4f63 6375  curs=\"0\" maxOccu\n+0000bb30: 7273 3d22 756e 626f 756e 6465 6422 2f3e  rs=\"unbounded\"/>\n+0000bb40: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000bb50: 2020 3c2f 7873 643a 7365 7175 656e 6365    </xsd:sequence\n+0000bb60: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000bb70: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+0000bb80: 6520 6e61 6d65 3d22 6465 6661 756c 7422  e name=\"default\"\n+0000bb90: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+0000bba0: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+0000bbb0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+0000bbc0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000bbd0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000bbe0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+0000bbf0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+0000bc00: 4973 2064 6566 6175 6c74 2e20 5d5d 3e3c  Is default. ]]><\n+0000bc10: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+0000bc20: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000bc30: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+0000bc40: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000bc50: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+0000bc60: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+0000bc70: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+0000bc80: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+0000bc90: 653d 2263 6c69 656e 7422 2074 7970 653d  e=\"client\" type=\n+0000bca0: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+0000bcb0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000bcc0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+0000bcd0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000bce0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000bcf0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000bd00: 3c21 5b43 4441 5441 5b20 5472 616e 7370  <![CDATA[ Transp\n+0000bd10: 6f72 7465 7220 6c61 7965 7220 6672 616d  orter layer fram\n+0000bd20: 6577 6f72 6b3a 206e 6574 7479 206d 696e  ework: netty min\n+0000bd30: 612e 2e2e 2e20 5d5d 3e3c 2f78 7364 3a64  a.... ]]></xsd:d\n+0000bd40: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+0000bd50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000bd60: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+0000bd70: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000bd80: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+0000bd90: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+0000bda0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+0000bdb0: 7269 6275 7465 206e 616d 653d 2274 6872  ribute name=\"thr\n+0000bdc0: 6561 6470 6f6f 6c22 2074 7970 653d 2278  eadpool\" type=\"x\n+0000bdd0: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+0000bde0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000bdf0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+0000be00: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000be10: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000be20: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+0000be30: 5b43 4441 5441 5b20 436f 6e73 756d 6572  [CDATA[ Consumer\n+0000be40: 2074 6872 6561 6470 6f6f 6c3a 2063 6163   threadpool: cac\n+0000be50: 6865 642c 2066 6978 6564 2c20 6c69 6d69  hed, fixed, limi\n+0000be60: 7465 642c 2065 6167 6572 5d5d 3e3c 2f78  ted, eager]]></x\n+0000be70: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+0000be80: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000be90: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+0000bea0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000beb0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+0000bec0: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+0000bed0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000bee0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+0000bef0: 2263 6f72 6574 6872 6561 6473 2220 7479  \"corethreads\" ty\n+0000bf00: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+0000bf10: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000bf20: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+0000bf30: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000bf40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000bf50: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+0000bf60: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+0000bf70: 2074 6872 6561 6420 706f 6f6c 2063 6f72   thread pool cor\n+0000bf80: 6520 7468 7265 6164 7320 7369 7a65 2e20  e threads size. \n+0000bf90: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+0000bfa0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000bfb0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+0000bfc0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+0000bfd0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000bfe0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+0000bff0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000c000: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+0000c010: 206e 616d 653d 2274 6872 6561 6473 2220   name=\"threads\" \n+0000c020: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+0000c030: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+0000c040: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+0000c050: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000c060: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c070: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+0000c080: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+0000c090: 6865 2074 6872 6561 6420 706f 6f6c 2073  he thread pool s\n+0000c0a0: 697a 652e 205d 5d3e 3c2f 7873 643a 646f  ize. ]]></xsd:do\n+0000c0b0: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+0000c0c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c0d0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+0000c0e0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000c0f0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+0000c100: 6275 7465 3e0d 0a20 2020 2020 2020 2020  bute>..         \n+0000c110: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+0000c120: 6962 7574 6520 6e61 6d65 3d22 7175 6575  ibute name=\"queu\n+0000c130: 6573 2220 7479 7065 3d22 7873 643a 7374  es\" type=\"xsd:st\n+0000c140: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+0000c150: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000c160: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+0000c170: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c180: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+0000c190: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+0000c1a0: 415b 2054 6865 2074 6872 6561 6420 706f  A[ The thread po\n+0000c1b0: 6f6c 2071 7565 7565 2073 697a 652e 205d  ol queue size. ]\n+0000c1c0: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+0000c1d0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000c1e0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+0000c1f0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+0000c200: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000c210: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+0000c220: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000c230: 203c 7873 643a 616e 7941 7474 7269 6275   <xsd:anyAttribu\n+0000c240: 7465 206e 616d 6573 7061 6365 3d22 2323  te namespace=\"##\n+0000c250: 6f74 6865 7222 2070 726f 6365 7373 436f  other\" processCo\n+0000c260: 6e74 656e 7473 3d22 6c61 7822 2f3e 0d0a  ntents=\"lax\"/>..\n+0000c270: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+0000c280: 643a 6578 7465 6e73 696f 6e3e 0d0a 2020  d:extension>..  \n+0000c290: 2020 2020 2020 3c2f 7873 643a 636f 6d70        </xsd:comp\n+0000c2a0: 6c65 7843 6f6e 7465 6e74 3e0d 0a20 2020  lexContent>..   \n+0000c2b0: 203c 2f78 7364 3a63 6f6d 706c 6578 5479   </xsd:complexTy\n+0000c2c0: 7065 3e0d 0a0d 0a20 2020 203c 7873 643a  pe>....    <xsd:\n+0000c2d0: 636f 6d70 6c65 7854 7970 6520 6e61 6d65  complexType name\n+0000c2e0: 3d22 7265 6665 7265 6e63 6554 7970 6522  =\"referenceType\"\n+0000c2f0: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+0000c300: 636f 6d70 6c65 7843 6f6e 7465 6e74 3e0d  complexContent>.\n+0000c310: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+0000c320: 643a 6578 7465 6e73 696f 6e20 6261 7365  d:extension base\n+0000c330: 3d22 6162 7374 7261 6374 5265 6665 7265  =\"abstractRefere\n+0000c340: 6e63 6554 7970 6522 3e0d 0a20 2020 2020  nceType\">..     \n+0000c350: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000c360: 6368 6f69 6365 206d 696e 4f63 6375 7273  choice minOccurs\n+0000c370: 3d22 3022 206d 6178 4f63 6375 7273 3d22  =\"0\" maxOccurs=\"\n+0000c380: 756e 626f 756e 6465 6422 3e0d 0a20 2020  unbounded\">..   \n+0000c390: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c3a0: 203c 7873 643a 656c 656d 656e 7420 7265   <xsd:element re\n+0000c3b0: 663d 226d 6574 686f 6422 206d 696e 4f63  f=\"method\" minOc\n+0000c3c0: 6375 7273 3d22 3022 206d 6178 4f63 6375  curs=\"0\" maxOccu\n+0000c3d0: 7273 3d22 756e 626f 756e 6465 6422 2f3e  rs=\"unbounded\"/>\n+0000c3e0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000c3f0: 2020 2020 2020 3c78 7364 3a65 6c65 6d65        <xsd:eleme\n+0000c400: 6e74 2072 6566 3d22 7061 7261 6d65 7465  nt ref=\"paramete\n+0000c410: 7222 206d 696e 4f63 6375 7273 3d22 3022  r\" minOccurs=\"0\"\n+0000c420: 206d 6178 4f63 6375 7273 3d22 756e 626f   maxOccurs=\"unbo\n+0000c430: 756e 6465 6422 2f3e 0d0a 2020 2020 2020  unded\"/>..      \n+0000c440: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+0000c450: 6368 6f69 6365 3e0d 0a20 2020 2020 2020  choice>..       \n+0000c460: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n+0000c470: 7472 6962 7574 6520 6e61 6d65 3d22 696e  tribute name=\"in\n+0000c480: 7465 7266 6163 6522 2074 7970 653d 2278  terface\" type=\"x\n+0000c490: 7364 3a74 6f6b 656e 2220 7573 653d 2272  sd:token\" use=\"r\n+0000c4a0: 6571 7569 7265 6422 3e0d 0a20 2020 2020  equired\">..     \n+0000c4b0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000c4c0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000c4d0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000c4e0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+0000c4f0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+0000c500: 4441 5441 5b20 5468 6520 7365 7276 6963  DATA[ The servic\n+0000c510: 6520 696e 7465 7266 6163 6520 636c 6173  e interface clas\n+0000c520: 7320 6e61 6d65 2e20 5d5d 3e3c 2f78 7364  s name. ]]></xsd\n+0000c530: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+0000c540: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000c550: 2020 2020 2020 2020 203c 7873 643a 6170           <xsd:ap\n+0000c560: 7069 6e66 6f3e 0d0a 2020 2020 2020 2020  pinfo>..        \n+0000c570: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c580: 2020 2020 3c74 6f6f 6c3a 616e 6e6f 7461      <tool:annota\n+0000c590: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n 0000c5a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c5b0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-0000c5c0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000c5d0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-0000c5e0: 6962 7574 653e 0a20 2020 2020 2020 2020  ibute>.         \n-0000c5f0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-0000c600: 6962 7574 6520 6e61 6d65 3d22 7072 6f74  ibute name=\"prot\n-0000c610: 6f63 6f6c 2220 7479 7065 3d22 7873 643a  ocol\" type=\"xsd:\n-0000c620: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-0000c630: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-0000c640: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-0000c650: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c660: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-0000c670: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-0000c680: 415b 2054 6865 2073 6572 7669 6365 2070  A[ The service p\n-0000c690: 726f 746f 636f 6c2e 205d 5d3e 3c2f 7873  rotocol. ]]></xs\n-0000c6a0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000c6b0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000c6c0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-0000c6d0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000c6e0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-0000c6f0: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-0000c700: 2020 2020 2020 2020 3c78 7364 3a61 6e79          <xsd:any\n-0000c710: 4174 7472 6962 7574 6520 6e61 6d65 7370  Attribute namesp\n-0000c720: 6163 653d 2223 236f 7468 6572 2220 7072  ace=\"##other\" pr\n-0000c730: 6f63 6573 7343 6f6e 7465 6e74 733d 226c  ocessContents=\"l\n-0000c740: 6178 222f 3e0a 2020 2020 2020 2020 2020  ax\"/>.          \n-0000c750: 2020 3c2f 7873 643a 6578 7465 6e73 696f    </xsd:extensio\n-0000c760: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-0000c770: 3a63 6f6d 706c 6578 436f 6e74 656e 743e  :complexContent>\n-0000c780: 0a20 2020 203c 2f78 7364 3a63 6f6d 706c  .    </xsd:compl\n-0000c790: 6578 5479 7065 3e0a 0a20 2020 203c 7873  exType>..    <xs\n-0000c7a0: 643a 636f 6d70 6c65 7854 7970 6520 6e61  d:complexType na\n-0000c7b0: 6d65 3d22 7072 6f74 6f63 6f6c 5479 7065  me=\"protocolType\n-0000c7c0: 223e 0a20 2020 2020 2020 203c 7873 643a  \">.        <xsd:\n-0000c7d0: 7365 7175 656e 6365 206d 696e 4f63 6375  sequence minOccu\n-0000c7e0: 7273 3d22 3022 206d 6178 4f63 6375 7273  rs=\"0\" maxOccurs\n-0000c7f0: 3d22 756e 626f 756e 6465 6422 3e0a 2020  =\"unbounded\">.  \n-0000c800: 2020 2020 2020 2020 2020 3c78 7364 3a65            <xsd:e\n-0000c810: 6c65 6d65 6e74 2072 6566 3d22 7061 7261  lement ref=\"para\n-0000c820: 6d65 7465 7222 206d 696e 4f63 6375 7273  meter\" minOccurs\n-0000c830: 3d22 3022 206d 6178 4f63 6375 7273 3d22  =\"0\" maxOccurs=\"\n-0000c840: 756e 626f 756e 6465 6422 2f3e 0a20 2020  unbounded\"/>.   \n-0000c850: 2020 2020 203c 2f78 7364 3a73 6571 7565       </xsd:seque\n-0000c860: 6e63 653e 0a20 2020 2020 2020 203c 7873  nce>.        <xs\n-0000c870: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-0000c880: 3d22 6964 2220 7479 7065 3d22 7873 643a  =\"id\" type=\"xsd:\n-0000c890: 4944 223e 0a20 2020 2020 2020 2020 2020  ID\">.           \n-0000c8a0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-0000c8b0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000c8c0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-0000c8d0: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-0000c8e0: 6865 2075 6e69 7175 6520 6964 656e 7469  he unique identi\n-0000c8f0: 6669 6572 2066 6f72 2061 2062 6561 6e2e  fier for a bean.\n-0000c900: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-0000c910: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-0000c920: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-0000c930: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-0000c940: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-0000c950: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-0000c960: 7269 6275 7465 206e 616d 653d 226e 616d  ribute name=\"nam\n-0000c970: 6522 2074 7970 653d 2278 7364 3a73 7472  e\" type=\"xsd:str\n-0000c980: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-0000c990: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-0000c9a0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000c9b0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-0000c9c0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-0000c9d0: 5468 6520 7072 6f74 6f63 6f6c 206e 616d  The protocol nam\n-0000c9e0: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n-0000c9f0: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-0000ca00: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-0000ca10: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000ca20: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-0000ca30: 3e0a 2020 2020 2020 2020 3c78 7364 3a61  >.        <xsd:a\n-0000ca40: 7474 7269 6275 7465 206e 616d 653d 2268  ttribute name=\"h\n-0000ca50: 6f73 7422 2074 7970 653d 2278 7364 3a73  ost\" type=\"xsd:s\n-0000ca60: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-0000ca70: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-0000ca80: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000ca90: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-0000caa0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-0000cab0: 5b20 5468 6520 7365 7276 6963 6520 686f  [ The service ho\n-0000cac0: 7374 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  st. ]]></xsd:doc\n-0000cad0: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-0000cae0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-0000caf0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000cb00: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-0000cb10: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-0000cb20: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-0000cb30: 706f 7274 2220 7479 7065 3d22 7873 643a  port\" type=\"xsd:\n-0000cb40: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-0000cb50: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-0000cb60: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000cb70: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-0000cb80: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-0000cb90: 415b 2054 6865 2073 6572 7669 6365 2070  A[ The service p\n-0000cba0: 6f72 742e 205d 5d3e 3c2f 7873 643a 646f  ort. ]]></xsd:do\n-0000cbb0: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-0000cbc0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-0000cbd0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000cbe0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-0000cbf0: 7465 3e0a 2020 2020 2020 2020 3c78 7364  te>.        <xsd\n-0000cc00: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-0000cc10: 2274 6872 6561 6470 6f6f 6c22 2074 7970  \"threadpool\" typ\n-0000cc20: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-0000cc30: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000cc40: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000cc50: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-0000cc60: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000cc70: 3c21 5b43 4441 5441 5b20 5468 6520 7468  <![CDATA[ The th\n-0000cc80: 7265 6164 2070 6f6f 6c20 7479 7065 2e20  read pool type. \n-0000cc90: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-0000cca0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000ccb0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-0000ccc0: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-0000ccd0: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-0000cce0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-0000ccf0: 6962 7574 6520 6e61 6d65 3d22 7468 7265  ibute name=\"thre\n-0000cd00: 6164 6e61 6d65 2220 7479 7065 3d22 7873  adname\" type=\"xs\n-0000cd10: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-0000cd20: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-0000cd30: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000cd40: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-0000cd50: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-0000cd60: 4154 415b 2054 6865 2074 6872 6561 6420  ATA[ The thread \n-0000cd70: 706f 6f6c 206e 616d 652e 205d 5d3e 3c2f  pool name. ]]></\n-0000cd80: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000cd90: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-0000cda0: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-0000cdb0: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-0000cdc0: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-0000cdd0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-0000cde0: 206e 616d 653d 2274 6872 6561 6473 2220   name=\"threads\" \n-0000cdf0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-0000ce00: 223e 0a20 2020 2020 2020 2020 2020 203c  \">.            <\n-0000ce10: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000ce20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000ce30: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-0000ce40: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-0000ce50: 2074 6872 6561 6420 706f 6f6c 2073 697a   thread pool siz\n-0000ce60: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n-0000ce70: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-0000ce80: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-0000ce90: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000cea0: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-0000ceb0: 3e0a 2020 2020 2020 2020 3c78 7364 3a61  >.        <xsd:a\n-0000cec0: 7474 7269 6275 7465 206e 616d 653d 2263  ttribute name=\"c\n-0000ced0: 6f72 6574 6872 6561 6473 2220 7479 7065  orethreads\" type\n-0000cee0: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-0000cef0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000cf00: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000cf10: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000cf20: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-0000cf30: 215b 4344 4154 415b 2054 6865 2074 6872  ![CDATA[ The thr\n-0000cf40: 6561 6420 706f 6f6c 2063 6f72 6520 7468  ead pool core th\n-0000cf50: 7265 6164 7320 7369 7a65 2e20 5d5d 3e3c  reads size. ]]><\n-0000cf60: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-0000cf70: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000cf80: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-0000cf90: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-0000cfa0: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-0000cfb0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-0000cfc0: 6520 6e61 6d65 3d22 696f 7468 7265 6164  e name=\"iothread\n-0000cfd0: 7322 2074 7970 653d 2278 7364 3a73 7472  s\" type=\"xsd:str\n-0000cfe0: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-0000cff0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-0000d000: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000d010: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-0000d020: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-0000d030: 5468 6520 494f 2074 6872 6561 6420 706f  The IO thread po\n-0000d040: 6f6c 2073 697a 652e 205d 5d3e 3c2f 7873  ol size. ]]></xs\n-0000d050: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000d060: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-0000d070: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000d080: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-0000d090: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-0000d0a0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-0000d0b0: 616d 653d 2261 6c69 7665 2220 7479 7065  ame=\"alive\" type\n-0000d0c0: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-0000d0d0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000d0e0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000d0f0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000d100: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-0000d110: 215b 4344 4154 415b 2054 6865 2074 6872  ![CDATA[ The thr\n-0000d120: 6561 6420 706f 6f6c 206b 6565 7041 6c69  ead pool keepAli\n-0000d130: 7665 5469 6d65 2e20 5d5d 3e3c 2f78 7364  veTime. ]]></xsd\n-0000d140: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-0000d150: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-0000d160: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-0000d170: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-0000d180: 6962 7574 653e 0a20 2020 2020 2020 203c  ibute>.        <\n-0000d190: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-0000d1a0: 6d65 3d22 7175 6575 6573 2220 7479 7065  me=\"queues\" type\n-0000d1b0: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-0000d1c0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000d1d0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000d1e0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000d1f0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-0000d200: 215b 4344 4154 415b 2054 6865 2074 6872  ![CDATA[ The thr\n-0000d210: 6561 6420 706f 6f6c 2071 7565 7565 2073  ead pool queue s\n-0000d220: 697a 652e 205d 5d3e 3c2f 7873 643a 646f  ize. ]]></xsd:do\n-0000d230: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-0000d240: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-0000d250: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000d260: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-0000d270: 7465 3e0a 2020 2020 2020 2020 3c78 7364  te>.        <xsd\n-0000d280: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-0000d290: 2261 6363 6570 7473 2220 7479 7065 3d22  \"accepts\" type=\"\n-0000d2a0: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-0000d2b0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-0000d2c0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000d2d0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-0000d2e0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-0000d2f0: 4344 4154 415b 2054 6865 2061 6363 6570  CDATA[ The accep\n-0000d300: 7420 636f 6e6e 6563 7469 6f6e 2073 697a  t connection siz\n-0000d310: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n-0000d320: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-0000d330: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-0000d340: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000d350: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-0000d360: 3e0a 2020 2020 2020 2020 3c78 7364 3a61  >.        <xsd:a\n-0000d370: 7474 7269 6275 7465 206e 616d 653d 2263  ttribute name=\"c\n-0000d380: 6f64 6563 2220 7479 7065 3d22 7873 643a  odec\" type=\"xsd:\n-0000d390: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-0000d3a0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-0000d3b0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000d3c0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-0000d3d0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-0000d3e0: 415b 2054 6865 2070 726f 746f 636f 6c20  A[ The protocol \n-0000d3f0: 636f 6465 632e 205d 5d3e 3c2f 7873 643a  codec. ]]></xsd:\n-0000d400: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-0000d410: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000d420: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000d430: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-0000d440: 6275 7465 3e0a 2020 2020 2020 2020 3c78  bute>.        <x\n-0000d450: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-0000d460: 653d 2273 6572 6961 6c69 7a61 7469 6f6e  e=\"serialization\n-0000d470: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-0000d480: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-0000d490: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-0000d4a0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000d4b0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-0000d4c0: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-0000d4d0: 6865 2070 726f 746f 636f 6c20 7365 7269  he protocol seri\n-0000d4e0: 616c 697a 6174 696f 6e2e 205d 5d3e 3c2f  alization. ]]></\n-0000d4f0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000d500: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-0000d510: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-0000d520: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-0000d530: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-0000d540: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-0000d550: 206e 616d 653d 226b 6565 7061 6c69 7665   name=\"keepalive\n-0000d560: 2220 7479 7065 3d22 7873 643a 626f 6f6c  \" type=\"xsd:bool\n-0000d570: 6561 6e22 3e0a 2020 2020 2020 2020 2020  ean\">.          \n-0000d580: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-0000d590: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000d5a0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-0000d5b0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-0000d5c0: 5468 6520 7072 6f74 6f63 6f6c 206b 6565  The protocol kee\n-0000d5d0: 7041 6c69 7665 2e20 5d5d 3e3c 2f78 7364  pAlive. ]]></xsd\n-0000d5e0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-0000d5f0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-0000d600: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-0000d610: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-0000d620: 6962 7574 653e 0a20 2020 2020 2020 203c  ibute>.        <\n-0000d630: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-0000d640: 6d65 3d22 6f70 7469 6d69 7a65 7222 2074  me=\"optimizer\" t\n-0000d650: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-0000d660: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-0000d670: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000d680: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000d690: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000d6a0: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-0000d6b0: 7365 7269 616c 697a 6174 696f 6e20 6f70  serialization op\n-0000d6c0: 7469 6d69 7a65 722e 205d 5d3e 3c2f 7873  timizer. ]]></xs\n-0000d6d0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000d6e0: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-0000d6f0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000d700: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-0000d710: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-0000d720: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-0000d730: 616d 653d 2265 7874 656e 7369 6f6e 2220  ame=\"extension\" \n-0000d740: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-0000d750: 223e 0a20 2020 2020 2020 2020 2020 203c  \">.            <\n-0000d760: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000d770: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000d780: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-0000d790: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-0000d7a0: 2065 7874 656e 7369 6f6e 2066 6f72 2070   extension for p\n-0000d7b0: 726f 746f 636f 6c2e 205d 5d3e 3c2f 7873  rotocol. ]]></xs\n-0000d7c0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000d7d0: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-0000d7e0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000d7f0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-0000d800: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-0000d810: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-0000d820: 616d 653d 2263 6861 7273 6574 2220 7479  ame=\"charset\" ty\n-0000d830: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-0000d840: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-0000d850: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-0000d860: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000d870: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-0000d880: 3e3c 215b 4344 4154 415b 2054 6865 2070  ><![CDATA[ The p\n-0000d890: 726f 746f 636f 6c20 6368 6172 7365 742e  rotocol charset.\n-0000d8a0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-0000d8b0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-0000d8c0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-0000d8d0: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-0000d8e0: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-0000d8f0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-0000d900: 7269 6275 7465 206e 616d 653d 2270 6179  ribute name=\"pay\n-0000d910: 6c6f 6164 2220 7479 7065 3d22 7873 643a  load\" type=\"xsd:\n-0000d920: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-0000d930: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-0000d940: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000d950: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-0000d960: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-0000d970: 415b 2054 6865 206d 6178 2070 6179 6c6f  A[ The max paylo\n-0000d980: 6164 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ad. ]]></xsd:doc\n-0000d990: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-0000d9a0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-0000d9b0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000d9c0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-0000d9d0: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-0000d9e0: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-0000d9f0: 6275 6666 6572 2220 7479 7065 3d22 7873  buffer\" type=\"xs\n-0000da00: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-0000da10: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-0000da20: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000da30: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-0000da40: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-0000da50: 4154 415b 2054 6865 2062 7566 6665 7220  ATA[ The buffer \n-0000da60: 7369 7a65 2e20 5d5d 3e3c 2f78 7364 3a64  size. ]]></xsd:d\n-0000da70: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-0000da80: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-0000da90: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000daa0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-0000dab0: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-0000dac0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-0000dad0: 3d22 6865 6172 7462 6561 7422 2074 7970  =\"heartbeat\" typ\n-0000dae0: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-0000daf0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000db00: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000db10: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000c5b0: 2020 2020 2020 203c 746f 6f6c 3a65 7870         <tool:exp\n+0000c5c0: 6563 7465 642d 7479 7065 2074 7970 653d  ected-type type=\n+0000c5d0: 226a 6176 612e 6c61 6e67 2e43 6c61 7373  \"java.lang.Class\n+0000c5e0: 222f 3e0d 0a20 2020 2020 2020 2020 2020  \"/>..           \n+0000c5f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c600: 203c 2f74 6f6f 6c3a 616e 6e6f 7461 7469   </tool:annotati\n+0000c610: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000c620: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+0000c630: 7364 3a61 7070 696e 666f 3e0d 0a20 2020  sd:appinfo>..   \n+0000c640: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c650: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+0000c660: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000c670: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+0000c680: 7574 653e 0d0a 2020 2020 2020 2020 2020  ute>..          \n+0000c690: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+0000c6a0: 6275 7465 206e 616d 653d 2275 726c 2220  bute name=\"url\" \n+0000c6b0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+0000c6c0: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+0000c6d0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+0000c6e0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000c6f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c700: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+0000c710: 7469 6f6e 3e3c 215b 4344 4154 415b 2050  tion><![CDATA[ P\n+0000c720: 726f 7669 6465 7220 6c69 7374 2075 726c  rovider list url\n+0000c730: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+0000c740: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+0000c750: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000c760: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+0000c770: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000c780: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+0000c790: 653e 0d0a 2020 2020 2020 2020 2020 2020  e>..            \n+0000c7a0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+0000c7b0: 7465 206e 616d 653d 2263 6c69 656e 7422  te name=\"client\"\n+0000c7c0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+0000c7d0: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+0000c7e0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+0000c7f0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000c800: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c810: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+0000c820: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+0000c830: 5072 6f74 6f63 6f6c 2074 7261 6e73 706f  Protocol transpo\n+0000c840: 7274 2063 6c69 656e 7420 7479 7065 2e20  rt client type. \n+0000c850: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+0000c860: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000c870: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+0000c880: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+0000c890: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c8a0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+0000c8b0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000c8c0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+0000c8d0: 206e 616d 653d 2263 6f6e 7375 6d65 7222   name=\"consumer\"\n+0000c8e0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+0000c8f0: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+0000c900: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+0000c910: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000c920: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c930: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+0000c940: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+0000c950: 4465 7072 6563 6174 6564 2e20 5265 706c  Deprecated. Repl\n+0000c960: 6163 6520 746f 2072 6566 6572 656e 6365  ace to reference\n+0000c970: 2d64 6566 6175 6c74 2e20 5d5d 3e3c 2f78  -default. ]]></x\n+0000c980: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+0000c990: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000c9a0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+0000c9b0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000c9c0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+0000c9d0: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+0000c9e0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000c9f0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+0000ca00: 2270 726f 746f 636f 6c22 2074 7970 653d  \"protocol\" type=\n+0000ca10: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+0000ca20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000ca30: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+0000ca40: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000ca50: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000ca60: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000ca70: 3c21 5b43 4441 5441 5b20 5468 6520 7365  <![CDATA[ The se\n+0000ca80: 7276 6963 6520 7072 6f74 6f63 6f6c 2e20  rvice protocol. \n+0000ca90: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+0000caa0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000cab0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+0000cac0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+0000cad0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000cae0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+0000caf0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000cb00: 2020 3c78 7364 3a61 6e79 4174 7472 6962    <xsd:anyAttrib\n+0000cb10: 7574 6520 6e61 6d65 7370 6163 653d 2223  ute namespace=\"#\n+0000cb20: 236f 7468 6572 2220 7072 6f63 6573 7343  #other\" processC\n+0000cb30: 6f6e 7465 6e74 733d 226c 6178 222f 3e0d  ontents=\"lax\"/>.\n+0000cb40: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n+0000cb50: 7364 3a65 7874 656e 7369 6f6e 3e0d 0a20  sd:extension>.. \n+0000cb60: 2020 2020 2020 203c 2f78 7364 3a63 6f6d         </xsd:com\n+0000cb70: 706c 6578 436f 6e74 656e 743e 0d0a 2020  plexContent>..  \n+0000cb80: 2020 3c2f 7873 643a 636f 6d70 6c65 7854    </xsd:complexT\n+0000cb90: 7970 653e 0d0a 0d0a 2020 2020 3c78 7364  ype>....    <xsd\n+0000cba0: 3a63 6f6d 706c 6578 5479 7065 206e 616d  :complexType nam\n+0000cbb0: 653d 2270 726f 746f 636f 6c54 7970 6522  e=\"protocolType\"\n+0000cbc0: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+0000cbd0: 7365 7175 656e 6365 206d 696e 4f63 6375  sequence minOccu\n+0000cbe0: 7273 3d22 3022 206d 6178 4f63 6375 7273  rs=\"0\" maxOccurs\n+0000cbf0: 3d22 756e 626f 756e 6465 6422 3e0d 0a20  =\"unbounded\">.. \n+0000cc00: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000cc10: 656c 656d 656e 7420 7265 663d 2270 6172  element ref=\"par\n+0000cc20: 616d 6574 6572 2220 6d69 6e4f 6363 7572  ameter\" minOccur\n+0000cc30: 733d 2230 2220 6d61 784f 6363 7572 733d  s=\"0\" maxOccurs=\n+0000cc40: 2275 6e62 6f75 6e64 6564 222f 3e0d 0a20  \"unbounded\"/>.. \n+0000cc50: 2020 2020 2020 203c 2f78 7364 3a73 6571         </xsd:seq\n+0000cc60: 7565 6e63 653e 0d0a 2020 2020 2020 2020  uence>..        \n+0000cc70: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+0000cc80: 616d 653d 2269 6422 2074 7970 653d 2278  ame=\"id\" type=\"x\n+0000cc90: 7364 3a49 4422 3e0d 0a20 2020 2020 2020  sd:ID\">..       \n+0000cca0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+0000ccb0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000ccc0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+0000ccd0: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+0000cce0: 5441 5b20 5468 6520 756e 6971 7565 2069  TA[ The unique i\n+0000ccf0: 6465 6e74 6966 6965 7220 666f 7220 6120  dentifier for a \n+0000cd00: 6265 616e 2e20 5d5d 3e3c 2f78 7364 3a64  bean. ]]></xsd:d\n+0000cd10: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+0000cd20: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+0000cd30: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+0000cd40: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+0000cd50: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+0000cd60: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+0000cd70: 616d 653d 226e 616d 6522 2074 7970 653d  ame=\"name\" type=\n+0000cd80: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+0000cd90: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000cda0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000cdb0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000cdc0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000cdd0: 3c21 5b43 4441 5441 5b20 5468 6520 7072  <![CDATA[ The pr\n+0000cde0: 6f74 6f63 6f6c 206e 616d 652e 205d 5d3e  otocol name. ]]>\n+0000cdf0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+0000ce00: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000ce10: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+0000ce20: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+0000ce30: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+0000ce40: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+0000ce50: 6962 7574 6520 6e61 6d65 3d22 686f 7374  ibute name=\"host\n+0000ce60: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+0000ce70: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+0000ce80: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+0000ce90: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000cea0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+0000ceb0: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+0000cec0: 2054 6865 2073 6572 7669 6365 2068 6f73   The service hos\n+0000ced0: 742e 205d 5d3e 3c2f 7873 643a 646f 6375  t. ]]></xsd:docu\n+0000cee0: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+0000cef0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+0000cf00: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000cf10: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+0000cf20: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+0000cf30: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+0000cf40: 3d22 706f 7274 2220 7479 7065 3d22 7873  =\"port\" type=\"xs\n+0000cf50: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+0000cf60: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+0000cf70: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000cf80: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+0000cf90: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+0000cfa0: 4344 4154 415b 2054 6865 2073 6572 7669  CDATA[ The servi\n+0000cfb0: 6365 2070 6f72 742e 205d 5d3e 3c2f 7873  ce port. ]]></xs\n+0000cfc0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000cfd0: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+0000cfe0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000cff0: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+0000d000: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+0000d010: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+0000d020: 6520 6e61 6d65 3d22 7468 7265 6164 706f  e name=\"threadpo\n+0000d030: 6f6c 2220 7479 7065 3d22 7873 643a 7374  ol\" type=\"xsd:st\n+0000d040: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+0000d050: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+0000d060: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000d070: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+0000d080: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+0000d090: 415b 2054 6865 2074 6872 6561 6420 706f  A[ The thread po\n+0000d0a0: 6f6c 2074 7970 652e 205d 5d3e 3c2f 7873  ol type. ]]></xs\n+0000d0b0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000d0c0: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+0000d0d0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000d0e0: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+0000d0f0: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+0000d100: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+0000d110: 6520 6e61 6d65 3d22 7468 7265 6164 6e61  e name=\"threadna\n+0000d120: 6d65 2220 7479 7065 3d22 7873 643a 7374  me\" type=\"xsd:st\n+0000d130: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+0000d140: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+0000d150: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000d160: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+0000d170: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+0000d180: 415b 2054 6865 2074 6872 6561 6420 706f  A[ The thread po\n+0000d190: 6f6c 206e 616d 652e 205d 5d3e 3c2f 7873  ol name. ]]></xs\n+0000d1a0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000d1b0: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+0000d1c0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000d1d0: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+0000d1e0: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+0000d1f0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+0000d200: 6520 6e61 6d65 3d22 7468 7265 6164 7322  e name=\"threads\"\n+0000d210: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+0000d220: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+0000d230: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+0000d240: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000d250: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+0000d260: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+0000d270: 5468 6520 7468 7265 6164 2070 6f6f 6c20  The thread pool \n+0000d280: 7369 7a65 2e20 5d5d 3e3c 2f78 7364 3a64  size. ]]></xsd:d\n+0000d290: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+0000d2a0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+0000d2b0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+0000d2c0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+0000d2d0: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+0000d2e0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+0000d2f0: 616d 653d 2263 6f72 6574 6872 6561 6473  ame=\"corethreads\n+0000d300: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+0000d310: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+0000d320: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+0000d330: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000d340: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+0000d350: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+0000d360: 2054 6865 2074 6872 6561 6420 706f 6f6c   The thread pool\n+0000d370: 2063 6f72 6520 7468 7265 6164 7320 7369   core threads si\n+0000d380: 7a65 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ze. ]]></xsd:doc\n+0000d390: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+0000d3a0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+0000d3b0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000d3c0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+0000d3d0: 7574 653e 0d0a 2020 2020 2020 2020 3c78  ute>..        <x\n+0000d3e0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+0000d3f0: 653d 2269 6f74 6872 6561 6473 2220 7479  e=\"iothreads\" ty\n+0000d400: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+0000d410: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+0000d420: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+0000d430: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000d440: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+0000d450: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+0000d460: 2049 4f20 7468 7265 6164 2070 6f6f 6c20   IO thread pool \n+0000d470: 7369 7a65 2e20 5d5d 3e3c 2f78 7364 3a64  size. ]]></xsd:d\n+0000d480: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+0000d490: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+0000d4a0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+0000d4b0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+0000d4c0: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+0000d4d0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+0000d4e0: 616d 653d 2261 6c69 7665 2220 7479 7065  ame=\"alive\" type\n+0000d4f0: 3d22 7873 643a 7374 7269 6e67 223e 0d0a  =\"xsd:string\">..\n+0000d500: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000d510: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+0000d520: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+0000d530: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+0000d540: 3e3c 215b 4344 4154 415b 2054 6865 2074  ><![CDATA[ The t\n+0000d550: 6872 6561 6420 706f 6f6c 206b 6565 7041  hread pool keepA\n+0000d560: 6c69 7665 5469 6d65 2e20 5d5d 3e3c 2f78  liveTime. ]]></x\n+0000d570: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+0000d580: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+0000d590: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+0000d5a0: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+0000d5b0: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+0000d5c0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+0000d5d0: 7465 206e 616d 653d 2271 7565 7565 7322  te name=\"queues\"\n+0000d5e0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+0000d5f0: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+0000d600: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+0000d610: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000d620: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+0000d630: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+0000d640: 5468 6520 7468 7265 6164 2070 6f6f 6c20  The thread pool \n+0000d650: 7175 6575 6520 7369 7a65 2e20 5d5d 3e3c  queue size. ]]><\n+0000d660: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+0000d670: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000d680: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+0000d690: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+0000d6a0: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+0000d6b0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+0000d6c0: 6275 7465 206e 616d 653d 2261 6363 6570  bute name=\"accep\n+0000d6d0: 7473 2220 7479 7065 3d22 7873 643a 7374  ts\" type=\"xsd:st\n+0000d6e0: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+0000d6f0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+0000d700: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000d710: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+0000d720: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+0000d730: 415b 2054 6865 2061 6363 6570 7420 636f  A[ The accept co\n+0000d740: 6e6e 6563 7469 6f6e 2073 697a 652e 205d  nnection size. ]\n+0000d750: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+0000d760: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000d770: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+0000d780: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+0000d790: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+0000d7a0: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n+0000d7b0: 7472 6962 7574 6520 6e61 6d65 3d22 636f  tribute name=\"co\n+0000d7c0: 6465 6322 2074 7970 653d 2278 7364 3a73  dec\" type=\"xsd:s\n+0000d7d0: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+0000d7e0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+0000d7f0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000d800: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+0000d810: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+0000d820: 5441 5b20 5468 6520 7072 6f74 6f63 6f6c  TA[ The protocol\n+0000d830: 2063 6f64 6563 2e20 5d5d 3e3c 2f78 7364   codec. ]]></xsd\n+0000d840: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+0000d850: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n+0000d860: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+0000d870: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+0000d880: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+0000d890: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+0000d8a0: 206e 616d 653d 2273 6572 6961 6c69 7a61   name=\"serializa\n+0000d8b0: 7469 6f6e 2220 7479 7065 3d22 7873 643a  tion\" type=\"xsd:\n+0000d8c0: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+0000d8d0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+0000d8e0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000d8f0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+0000d900: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+0000d910: 4154 415b 2054 6865 2070 726f 746f 636f  ATA[ The protoco\n+0000d920: 6c20 7365 7269 616c 697a 6174 696f 6e2e  l serialization.\n+0000d930: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+0000d940: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+0000d950: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+0000d960: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000d970: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+0000d980: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+0000d990: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+0000d9a0: 6b65 6570 616c 6976 6522 2074 7970 653d  keepalive\" type=\n+0000d9b0: 2278 7364 3a62 6f6f 6c65 616e 223e 0d0a  \"xsd:boolean\">..\n+0000d9c0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000d9d0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+0000d9e0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+0000d9f0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+0000da00: 3e3c 215b 4344 4154 415b 2054 6865 2070  ><![CDATA[ The p\n+0000da10: 726f 746f 636f 6c20 6b65 6570 416c 6976  rotocol keepAliv\n+0000da20: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n+0000da30: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+0000da40: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+0000da50: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000da60: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+0000da70: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+0000da80: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+0000da90: 3d22 6f70 7469 6d69 7a65 7222 2074 7970  =\"optimizer\" typ\n+0000daa0: 653d 2278 7364 3a73 7472 696e 6722 3e0d  e=\"xsd:string\">.\n+0000dab0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+0000dac0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+0000dad0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000dae0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+0000daf0: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n+0000db00: 7365 7269 616c 697a 6174 696f 6e20 6f70  serialization op\n+0000db10: 7469 6d69 7a65 722e 205d 5d3e 3c2f 7873  timizer. ]]></xs\n 0000db20: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000db30: 3c21 5b43 4441 5441 5b20 5468 6520 6865  <![CDATA[ The he\n-0000db40: 6172 7462 6561 7420 696e 7465 7276 616c  artbeat interval\n-0000db50: 2e28 6d73 2920 5d5d 3e3c 2f78 7364 3a64  .(ms) ]]></xsd:d\n-0000db60: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-0000db70: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-0000db80: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000db90: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-0000dba0: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-0000dbb0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-0000dbc0: 3d22 6163 6365 7373 6c6f 6722 2074 7970  =\"accesslog\" typ\n-0000dbd0: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-0000dbe0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000dbf0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000dc00: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-0000dc10: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000dc20: 3c21 5b43 4441 5441 5b20 5468 6520 7072  <![CDATA[ The pr\n-0000dc30: 6f74 6f63 6f6c 2075 7365 2061 6363 6573  otocol use acces\n-0000dc40: 736c 6f67 2e20 5d5d 3e3c 2f78 7364 3a64  slog. ]]></xsd:d\n-0000dc50: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-0000dc60: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-0000dc70: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000dc80: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-0000dc90: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-0000dca0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-0000dcb0: 3d22 7465 6c6e 6574 2220 7479 7065 3d22  =\"telnet\" type=\"\n-0000dcc0: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-0000dcd0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-0000dce0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000dcf0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-0000dd00: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-0000dd10: 4344 4154 415b 2054 6865 2070 726f 746f  CDATA[ The proto\n-0000dd20: 636f 6c20 7573 6520 7465 6c6e 6574 2063  col use telnet c\n-0000dd30: 6f6d 6d61 6e64 732e 205d 5d3e 3c2f 7873  ommands. ]]></xs\n-0000dd40: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000dd50: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-0000dd60: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000dd70: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-0000dd80: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-0000dd90: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-0000dda0: 616d 653d 2270 726f 6d70 7422 2074 7970  ame=\"prompt\" typ\n-0000ddb0: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-0000ddc0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000ddd0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000dde0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-0000ddf0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000de00: 3c21 5b43 4441 5441 5b20 5468 6520 7072  <![CDATA[ The pr\n-0000de10: 6f74 6f63 6f6c 2074 656c 6e65 7420 7072  otocol telnet pr\n-0000de20: 6f6d 7074 2e20 5d5d 3e3c 2f78 7364 3a64  ompt. ]]></xsd:d\n-0000de30: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-0000de40: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-0000de50: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000de60: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-0000de70: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-0000de80: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-0000de90: 3d22 7374 6174 7573 2220 7479 7065 3d22  =\"status\" type=\"\n-0000dea0: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-0000deb0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-0000dec0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000ded0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-0000dee0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-0000def0: 4344 4154 415b 2054 6865 2070 726f 746f  CDATA[ The proto\n-0000df00: 636f 6c20 6368 6563 6b20 7374 6174 7573  col check status\n-0000df10: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-0000df20: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-0000df30: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-0000df40: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000df50: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-0000df60: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n-0000df70: 7472 6962 7574 6520 6e61 6d65 3d22 7472  tribute name=\"tr\n-0000df80: 616e 7370 6f72 7465 7222 2074 7970 653d  ansporter\" type=\n-0000df90: 2278 7364 3a73 7472 696e 6722 3e0a 2020  \"xsd:string\">.  \n-0000dfa0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-0000dfb0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000dfc0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000dfd0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-0000dfe0: 5b43 4441 5441 5b20 5468 6520 7072 6f74  [CDATA[ The prot\n-0000dff0: 6f63 6f6c 2074 7261 6e73 706f 7274 6572  ocol transporter\n-0000e000: 2074 7970 652e 205d 5d3e 3c2f 7873 643a   type. ]]></xsd:\n-0000e010: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-0000e020: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000e030: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000e040: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-0000e050: 6275 7465 3e0a 2020 2020 2020 2020 3c78  bute>.        <x\n-0000e060: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-0000e070: 653d 2265 7863 6861 6e67 6572 2220 7479  e=\"exchanger\" ty\n-0000e080: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-0000e090: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-0000e0a0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-0000e0b0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000e0c0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-0000e0d0: 3e3c 215b 4344 4154 415b 2054 6865 2070  ><![CDATA[ The p\n-0000e0e0: 726f 746f 636f 6c20 6578 6368 616e 6765  rotocol exchange\n-0000e0f0: 7220 7479 7065 2e20 5d5d 3e3c 2f78 7364  r type. ]]></xsd\n-0000e100: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-0000e110: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-0000e120: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-0000e130: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-0000e140: 6962 7574 653e 0a20 2020 2020 2020 203c  ibute>.        <\n-0000e150: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-0000e160: 6d65 3d22 6469 7370 6174 6865 7222 2074  me=\"dispather\" t\n-0000e170: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-0000e180: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-0000e190: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000e1a0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000e1b0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000e1c0: 6e3e 3c21 5b43 4441 5441 5b20 4465 7072  n><![CDATA[ Depr\n-0000e1d0: 6563 6174 6564 2e20 7265 706c 6163 6520  ecated. replace \n-0000e1e0: 746f 2022 6469 7370 6174 6368 6572 222e  to \"dispatcher\".\n-0000e1f0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-0000e200: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-0000e210: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-0000e220: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-0000e230: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-0000e240: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-0000e250: 7269 6275 7465 206e 616d 653d 2264 6973  ribute name=\"dis\n-0000e260: 7061 7463 6865 7222 2074 7970 653d 2278  patcher\" type=\"x\n-0000e270: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-0000e280: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-0000e290: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000e2a0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-0000e2b0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-0000e2c0: 4441 5441 5b20 5468 6520 7072 6f74 6f63  DATA[ The protoc\n-0000e2d0: 6f6c 2064 6973 7061 7463 6865 7220 7479  ol dispatcher ty\n-0000e2e0: 7065 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  pe. ]]></xsd:doc\n-0000e2f0: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-0000e300: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-0000e310: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000e320: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-0000e330: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-0000e340: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-0000e350: 6e65 7477 6f72 6b65 7222 2074 7970 653d  networker\" type=\n-0000e360: 2278 7364 3a73 7472 696e 6722 3e0a 2020  \"xsd:string\">.  \n-0000e370: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-0000e380: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000e390: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000e3a0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-0000e3b0: 5b43 4441 5441 5b20 5468 6520 7072 6f74  [CDATA[ The prot\n-0000e3c0: 6f63 6f6c 2022 6e65 7477 6f72 6b65 7222  ocol \"networker\"\n-0000e3d0: 2074 7970 652e 205d 5d3e 3c2f 7873 643a   type. ]]></xsd:\n-0000e3e0: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-0000e3f0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000e400: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000e410: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-0000e420: 6275 7465 3e0a 2020 2020 2020 2020 3c78  bute>.        <x\n-0000e430: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-0000e440: 653d 2273 6572 7665 7222 2074 7970 653d  e=\"server\" type=\n-0000e450: 2278 7364 3a73 7472 696e 6722 3e0a 2020  \"xsd:string\">.  \n-0000e460: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-0000e470: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000e480: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000e490: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-0000e4a0: 5b43 4441 5441 5b20 5468 6520 7072 6f74  [CDATA[ The prot\n-0000e4b0: 6f63 6f6c 2073 6572 7665 7220 7479 7065  ocol server type\n-0000e4c0: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-0000e4d0: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-0000e4e0: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-0000e4f0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000e500: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-0000e510: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n-0000e520: 7472 6962 7574 6520 6e61 6d65 3d22 636c  tribute name=\"cl\n-0000e530: 6965 6e74 2220 7479 7065 3d22 7873 643a  ient\" type=\"xsd:\n-0000e540: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-0000e550: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-0000e560: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000e570: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-0000e580: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-0000e590: 415b 2054 6865 2070 726f 746f 636f 6c20  A[ The protocol \n-0000e5a0: 636c 6965 6e74 2074 7970 652e 205d 5d3e  client type. ]]>\n-0000e5b0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-0000e5c0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000e5d0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-0000e5e0: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-0000e5f0: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-0000e600: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-0000e610: 7465 206e 616d 653d 2270 6174 6822 2074  te name=\"path\" t\n-0000e620: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-0000e630: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-0000e640: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000e650: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000e660: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000e670: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000e680: 2020 2020 2020 203c 215b 4344 4154 415b         <![CDATA[\n-0000e690: 2054 6865 2070 726f 746f 636f 6c20 636f   The protocol co\n-0000e6a0: 6e74 6578 7420 7061 7468 2e20 7265 706c  ntext path. repl\n-0000e6b0: 6163 6520 746f 2022 636f 6e74 6578 7470  ace to \"contextp\n-0000e6c0: 6174 6822 2e20 5d5d 3e3c 2f78 7364 3a64  ath\". ]]></xsd:d\n-0000e6d0: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-0000e6e0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-0000e6f0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000e700: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-0000e710: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-0000e720: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-0000e730: 3d22 636f 6e74 6578 7470 6174 6822 2074  =\"contextpath\" t\n-0000e740: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-0000e750: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-0000e760: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000e770: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000e780: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000e790: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-0000e7a0: 7072 6f74 6f63 6f6c 2063 6f6e 7465 7874  protocol context\n-0000e7b0: 2070 6174 682e 205d 5d3e 3c2f 7873 643a   path. ]]></xsd:\n-0000e7c0: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-0000e7d0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000e7e0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000e7f0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-0000e800: 6275 7465 3e0a 2020 2020 2020 2020 3c78  bute>.        <x\n-0000e810: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-0000e820: 653d 2272 6567 6973 7465 7222 2074 7970  e=\"register\" typ\n-0000e830: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-0000e840: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000e850: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000e860: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-0000e870: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000e880: 3c21 5b43 4441 5441 5b20 5468 6520 7072  <![CDATA[ The pr\n-0000e890: 6f74 6f63 6f6c 2063 616e 2062 6520 7265  otocol can be re\n-0000e8a0: 6769 7374 6572 2074 6f20 7265 6769 7374  gister to regist\n-0000e8b0: 7279 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ry. ]]></xsd:doc\n-0000e8c0: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-0000e8d0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-0000e8e0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000e8f0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-0000e900: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-0000e910: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-0000e920: 6465 6661 756c 7422 2074 7970 653d 2278  default\" type=\"x\n-0000e930: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-0000e940: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-0000e950: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000e960: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-0000e970: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-0000e980: 4441 5441 5b20 4973 2064 6566 6175 6c74  DATA[ Is default\n-0000e990: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-0000e9a0: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-0000e9b0: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-0000e9c0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000e9d0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-0000e9e0: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n-0000e9f0: 7472 6962 7574 6520 6e61 6d65 3d22 7373  tribute name=\"ss\n-0000ea00: 6c2d 656e 6162 6c65 6422 2074 7970 653d  l-enabled\" type=\n-0000ea10: 2278 7364 3a62 6f6f 6c65 616e 223e 0a20  \"xsd:boolean\">. \n-0000ea20: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000ea30: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000ea40: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000ea50: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-0000ea60: 215b 4344 4154 415b 2049 7320 5353 4c20  ![CDATA[ Is SSL \n-0000ea70: 656e 6162 6c65 642e 205d 5d3e 3c2f 7873  enabled. ]]></xs\n-0000ea80: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000ea90: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-0000eaa0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000eab0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-0000eac0: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-0000ead0: 3c78 7364 3a61 6e79 4174 7472 6962 7574  <xsd:anyAttribut\n-0000eae0: 6520 6e61 6d65 7370 6163 653d 2223 236f  e namespace=\"##o\n-0000eaf0: 7468 6572 2220 7072 6f63 6573 7343 6f6e  ther\" processCon\n-0000eb00: 7465 6e74 733d 226c 6178 222f 3e0a 2020  tents=\"lax\"/>.  \n-0000eb10: 2020 3c2f 7873 643a 636f 6d70 6c65 7854    </xsd:complexT\n-0000eb20: 7970 653e 0a0a 2020 2020 3c78 7364 3a63  ype>..    <xsd:c\n-0000eb30: 6f6d 706c 6578 5479 7065 206e 616d 653d  omplexType name=\n-0000eb40: 2270 726f 7669 6465 7254 7970 6522 3e0a  \"providerType\">.\n-0000eb50: 2020 2020 2020 2020 3c78 7364 3a63 6f6d          <xsd:com\n-0000eb60: 706c 6578 436f 6e74 656e 743e 0a20 2020  plexContent>.   \n-0000eb70: 2020 2020 2020 2020 203c 7873 643a 6578           <xsd:ex\n-0000eb80: 7465 6e73 696f 6e20 6261 7365 3d22 6162  tension base=\"ab\n-0000eb90: 7374 7261 6374 5365 7276 6963 6554 7970  stractServiceTyp\n-0000eba0: 6522 3e0a 2020 2020 2020 2020 2020 2020  e\">.            \n-0000ebb0: 2020 2020 3c78 7364 3a63 686f 6963 6520      <xsd:choice \n-0000ebc0: 6d69 6e4f 6363 7572 733d 2230 2220 6d61  minOccurs=\"0\" ma\n-0000ebd0: 784f 6363 7572 733d 2275 6e62 6f75 6e64  xOccurs=\"unbound\n-0000ebe0: 6564 223e 0a20 2020 2020 2020 2020 2020  ed\">.           \n-0000ebf0: 2020 2020 2020 2020 203c 7873 643a 656c           <xsd:el\n-0000ec00: 656d 656e 7420 7265 663d 2273 6572 7669  ement ref=\"servi\n-0000ec10: 6365 2220 6d69 6e4f 6363 7572 733d 2230  ce\" minOccurs=\"0\n-0000ec20: 2220 6d61 784f 6363 7572 733d 2275 6e62  \" maxOccurs=\"unb\n-0000ec30: 6f75 6e64 6564 222f 3e0a 2020 2020 2020  ounded\"/>.      \n-0000ec40: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000ec50: 7364 3a65 6c65 6d65 6e74 2072 6566 3d22  sd:element ref=\"\n-0000ec60: 7061 7261 6d65 7465 7222 206d 696e 4f63  parameter\" minOc\n-0000ec70: 6375 7273 3d22 3022 206d 6178 4f63 6375  curs=\"0\" maxOccu\n-0000ec80: 7273 3d22 756e 626f 756e 6465 6422 2f3e  rs=\"unbounded\"/>\n-0000ec90: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000eca0: 203c 2f78 7364 3a63 686f 6963 653e 0a20   </xsd:choice>. \n-0000ecb0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000ecc0: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-0000ecd0: 6d65 3d22 686f 7374 2220 7479 7065 3d22  me=\"host\" type=\"\n-0000ece0: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-0000ecf0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000ed00: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-0000ed10: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000ed20: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-0000ed30: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-0000ed40: 4344 4154 415b 2054 6865 2073 6572 7669  CDATA[ The servi\n-0000ed50: 6365 2068 6f73 742e 205d 5d3e 3c2f 7873  ce host. ]]></xs\n-0000ed60: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000ed70: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000ed80: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-0000ed90: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000eda0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-0000edb0: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-0000edc0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-0000edd0: 7269 6275 7465 206e 616d 653d 2270 6f72  ribute name=\"por\n-0000ede0: 7422 2074 7970 653d 2278 7364 3a73 7472  t\" type=\"xsd:str\n-0000edf0: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-0000ee00: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-0000ee10: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000ee20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000ee30: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-0000ee40: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-0000ee50: 5468 6520 7365 7276 6963 6520 706f 7274  The service port\n-0000ee60: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-0000ee70: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-0000ee80: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-0000ee90: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000eea0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000eeb0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-0000eec0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000eed0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-0000eee0: 6e61 6d65 3d22 7468 7265 6164 706f 6f6c  name=\"threadpool\n-0000eef0: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-0000ef00: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-0000ef10: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-0000ef20: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000ef30: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000ef40: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-0000ef50: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-0000ef60: 6865 2074 6872 6561 6420 706f 6f6c 2074  he thread pool t\n-0000ef70: 7970 652e 205d 5d3e 3c2f 7873 643a 646f  ype. ]]></xsd:do\n-0000ef80: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-0000ef90: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000efa0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-0000efb0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000efc0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-0000efd0: 7465 3e0a 2020 2020 2020 2020 2020 2020  te>.            \n-0000efe0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-0000eff0: 7465 206e 616d 653d 2274 6872 6561 646e  te name=\"threadn\n-0000f000: 616d 6522 2074 7970 653d 2278 7364 3a73  ame\" type=\"xsd:s\n-0000f010: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-0000f020: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000f030: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000f040: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f050: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-0000f060: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-0000f070: 5b20 5468 6520 7468 7265 6164 2070 6f6f  [ The thread poo\n-0000f080: 6c20 6e61 6d65 2e20 5d5d 3e3c 2f78 7364  l name. ]]></xsd\n-0000f090: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-0000f0a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f0b0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-0000f0c0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000f0d0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-0000f0e0: 6962 7574 653e 0a20 2020 2020 2020 2020  ibute>.         \n-0000f0f0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-0000f100: 6962 7574 6520 6e61 6d65 3d22 7468 7265  ibute name=\"thre\n-0000f110: 6164 7322 2074 7970 653d 2278 7364 3a73  ads\" type=\"xsd:s\n-0000f120: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-0000f130: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000f140: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000f150: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f160: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-0000f170: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-0000f180: 5b20 5468 6520 7468 7265 6164 2070 6f6f  [ The thread poo\n-0000f190: 6c20 7369 7a65 2e20 5d5d 3e3c 2f78 7364  l size. ]]></xsd\n-0000f1a0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-0000f1b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f1c0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-0000f1d0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000f1e0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-0000f1f0: 6962 7574 653e 0a20 2020 2020 2020 2020  ibute>.         \n-0000f200: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-0000f210: 6962 7574 6520 6e61 6d65 3d22 696f 7468  ibute name=\"ioth\n-0000f220: 7265 6164 7322 2074 7970 653d 2278 7364  reads\" type=\"xsd\n-0000f230: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-0000f240: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000f250: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000f260: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f270: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-0000f280: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-0000f290: 5441 5b20 5468 6520 494f 2074 6872 6561  TA[ The IO threa\n-0000f2a0: 6420 706f 6f6c 2073 697a 652e 205d 5d3e  d pool size. ]]>\n-0000f2b0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-0000f2c0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000f2d0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-0000f2e0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000f2f0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000f300: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-0000f310: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000f320: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-0000f330: 2261 6c69 7665 2220 7479 7065 3d22 7873  \"alive\" type=\"xs\n-0000f340: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-0000f350: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000f360: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n+0000db30: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+0000db40: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000db50: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+0000db60: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+0000db70: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+0000db80: 6520 6e61 6d65 3d22 6578 7465 6e73 696f  e name=\"extensio\n+0000db90: 6e22 2074 7970 653d 2278 7364 3a73 7472  n\" type=\"xsd:str\n+0000dba0: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+0000dbb0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+0000dbc0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000dbd0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+0000dbe0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+0000dbf0: 5b20 5468 6520 6578 7465 6e73 696f 6e20  [ The extension \n+0000dc00: 666f 7220 7072 6f74 6f63 6f6c 2e20 5d5d  for protocol. ]]\n+0000dc10: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+0000dc20: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000dc30: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+0000dc40: 696f 6e3e 0d0a 2020 2020 2020 2020 3c2f  ion>..        </\n+0000dc50: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+0000dc60: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+0000dc70: 7269 6275 7465 206e 616d 653d 2263 6861  ribute name=\"cha\n+0000dc80: 7273 6574 2220 7479 7065 3d22 7873 643a  rset\" type=\"xsd:\n+0000dc90: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+0000dca0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+0000dcb0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000dcc0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+0000dcd0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+0000dce0: 4154 415b 2054 6865 2070 726f 746f 636f  ATA[ The protoco\n+0000dcf0: 6c20 6368 6172 7365 742e 205d 5d3e 3c2f  l charset. ]]></\n+0000dd00: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+0000dd10: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000dd20: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+0000dd30: 3e0d 0a20 2020 2020 2020 203c 2f78 7364  >..        </xsd\n+0000dd40: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+0000dd50: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+0000dd60: 7574 6520 6e61 6d65 3d22 7061 796c 6f61  ute name=\"payloa\n+0000dd70: 6422 2074 7970 653d 2278 7364 3a73 7472  d\" type=\"xsd:str\n+0000dd80: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+0000dd90: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+0000dda0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000ddb0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+0000ddc0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+0000ddd0: 5b20 5468 6520 6d61 7820 7061 796c 6f61  [ The max payloa\n+0000dde0: 642e 205d 5d3e 3c2f 7873 643a 646f 6375  d. ]]></xsd:docu\n+0000ddf0: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+0000de00: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+0000de10: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000de20: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+0000de30: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+0000de40: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+0000de50: 3d22 6275 6666 6572 2220 7479 7065 3d22  =\"buffer\" type=\"\n+0000de60: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+0000de70: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+0000de80: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000de90: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000dea0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+0000deb0: 215b 4344 4154 415b 2054 6865 2062 7566  ![CDATA[ The buf\n+0000dec0: 6665 7220 7369 7a65 2e20 5d5d 3e3c 2f78  fer size. ]]></x\n+0000ded0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+0000dee0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+0000def0: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+0000df00: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+0000df10: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+0000df20: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+0000df30: 7465 206e 616d 653d 2268 6561 7274 6265  te name=\"heartbe\n+0000df40: 6174 2220 7479 7065 3d22 7873 643a 7374  at\" type=\"xsd:st\n+0000df50: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+0000df60: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+0000df70: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000df80: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+0000df90: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+0000dfa0: 415b 2054 6865 2068 6561 7274 6265 6174  A[ The heartbeat\n+0000dfb0: 2069 6e74 6572 7661 6c2e 286d 7329 205d   interval.(ms) ]\n+0000dfc0: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+0000dfd0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000dfe0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+0000dff0: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+0000e000: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+0000e010: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n+0000e020: 7472 6962 7574 6520 6e61 6d65 3d22 6163  tribute name=\"ac\n+0000e030: 6365 7373 6c6f 6722 2074 7970 653d 2278  cesslog\" type=\"x\n+0000e040: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+0000e050: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+0000e060: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000e070: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000e080: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+0000e090: 5b43 4441 5441 5b20 5468 6520 7072 6f74  [CDATA[ The prot\n+0000e0a0: 6f63 6f6c 2075 7365 2061 6363 6573 736c  ocol use accessl\n+0000e0b0: 6f67 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  og. ]]></xsd:doc\n+0000e0c0: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+0000e0d0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+0000e0e0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000e0f0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+0000e100: 7574 653e 0d0a 2020 2020 2020 2020 3c78  ute>..        <x\n+0000e110: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+0000e120: 653d 2274 656c 6e65 7422 2074 7970 653d  e=\"telnet\" type=\n+0000e130: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+0000e140: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000e150: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000e160: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000e170: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000e180: 3c21 5b43 4441 5441 5b20 5468 6520 7072  <![CDATA[ The pr\n+0000e190: 6f74 6f63 6f6c 2075 7365 2074 656c 6e65  otocol use telne\n+0000e1a0: 7420 636f 6d6d 616e 6473 2e20 5d5d 3e3c  t commands. ]]><\n+0000e1b0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+0000e1c0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000e1d0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+0000e1e0: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+0000e1f0: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+0000e200: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+0000e210: 6275 7465 206e 616d 653d 2270 726f 6d70  bute name=\"promp\n+0000e220: 7422 2074 7970 653d 2278 7364 3a73 7472  t\" type=\"xsd:str\n+0000e230: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+0000e240: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+0000e250: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000e260: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+0000e270: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+0000e280: 5b20 5468 6520 7072 6f74 6f63 6f6c 2074  [ The protocol t\n+0000e290: 656c 6e65 7420 7072 6f6d 7074 2e20 5d5d  elnet prompt. ]]\n+0000e2a0: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+0000e2b0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000e2c0: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+0000e2d0: 696f 6e3e 0d0a 2020 2020 2020 2020 3c2f  ion>..        </\n+0000e2e0: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+0000e2f0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+0000e300: 7269 6275 7465 206e 616d 653d 2273 7461  ribute name=\"sta\n+0000e310: 7475 7322 2074 7970 653d 2278 7364 3a73  tus\" type=\"xsd:s\n+0000e320: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+0000e330: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+0000e340: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000e350: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+0000e360: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+0000e370: 5441 5b20 5468 6520 7072 6f74 6f63 6f6c  TA[ The protocol\n+0000e380: 2063 6865 636b 2073 7461 7475 732e 205d   check status. ]\n+0000e390: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+0000e3a0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000e3b0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+0000e3c0: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+0000e3d0: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+0000e3e0: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n+0000e3f0: 7472 6962 7574 6520 6e61 6d65 3d22 7472  tribute name=\"tr\n+0000e400: 616e 7370 6f72 7465 7222 2074 7970 653d  ansporter\" type=\n+0000e410: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+0000e420: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000e430: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000e440: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000e450: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000e460: 3c21 5b43 4441 5441 5b20 5468 6520 7072  <![CDATA[ The pr\n+0000e470: 6f74 6f63 6f6c 2074 7261 6e73 706f 7274  otocol transport\n+0000e480: 6572 2074 7970 652e 205d 5d3e 3c2f 7873  er type. ]]></xs\n+0000e490: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000e4a0: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+0000e4b0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000e4c0: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+0000e4d0: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+0000e4e0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+0000e4f0: 6520 6e61 6d65 3d22 6578 6368 616e 6765  e name=\"exchange\n+0000e500: 7222 2074 7970 653d 2278 7364 3a73 7472  r\" type=\"xsd:str\n+0000e510: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+0000e520: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+0000e530: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000e540: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+0000e550: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+0000e560: 5b20 5468 6520 7072 6f74 6f63 6f6c 2065  [ The protocol e\n+0000e570: 7863 6861 6e67 6572 2074 7970 652e 205d  xchanger type. ]\n+0000e580: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+0000e590: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000e5a0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+0000e5b0: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+0000e5c0: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+0000e5d0: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n+0000e5e0: 7472 6962 7574 6520 6e61 6d65 3d22 6469  tribute name=\"di\n+0000e5f0: 7370 6174 6865 7222 2074 7970 653d 2278  spather\" type=\"x\n+0000e600: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+0000e610: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+0000e620: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000e630: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000e640: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+0000e650: 5b43 4441 5441 5b20 4465 7072 6563 6174  [CDATA[ Deprecat\n+0000e660: 6564 2e20 7265 706c 6163 6520 746f 2022  ed. replace to \"\n+0000e670: 6469 7370 6174 6368 6572 222e 205d 5d3e  dispatcher\". ]]>\n+0000e680: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+0000e690: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000e6a0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+0000e6b0: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+0000e6c0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+0000e6d0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+0000e6e0: 6962 7574 6520 6e61 6d65 3d22 6469 7370  ibute name=\"disp\n+0000e6f0: 6174 6368 6572 2220 7479 7065 3d22 7873  atcher\" type=\"xs\n+0000e700: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+0000e710: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+0000e720: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000e730: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+0000e740: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+0000e750: 4344 4154 415b 2054 6865 2070 726f 746f  CDATA[ The proto\n+0000e760: 636f 6c20 6469 7370 6174 6368 6572 2074  col dispatcher t\n+0000e770: 7970 652e 205d 5d3e 3c2f 7873 643a 646f  ype. ]]></xsd:do\n+0000e780: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+0000e790: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+0000e7a0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000e7b0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+0000e7c0: 6275 7465 3e0d 0a20 2020 2020 2020 203c  bute>..        <\n+0000e7d0: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+0000e7e0: 6d65 3d22 6e65 7477 6f72 6b65 7222 2074  me=\"networker\" t\n+0000e7f0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+0000e800: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+0000e810: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000e820: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000e830: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+0000e840: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+0000e850: 6520 7072 6f74 6f63 6f6c 2022 6e65 7477  e protocol \"netw\n+0000e860: 6f72 6b65 7222 2074 7970 652e 205d 5d3e  orker\" type. ]]>\n+0000e870: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+0000e880: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000e890: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+0000e8a0: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+0000e8b0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+0000e8c0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+0000e8d0: 6962 7574 6520 6e61 6d65 3d22 7365 7276  ibute name=\"serv\n+0000e8e0: 6572 2220 7479 7065 3d22 7873 643a 7374  er\" type=\"xsd:st\n+0000e8f0: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+0000e900: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+0000e910: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000e920: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+0000e930: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+0000e940: 415b 2054 6865 2070 726f 746f 636f 6c20  A[ The protocol \n+0000e950: 7365 7276 6572 2074 7970 652e 205d 5d3e  server type. ]]>\n+0000e960: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+0000e970: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000e980: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+0000e990: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+0000e9a0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+0000e9b0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+0000e9c0: 6962 7574 6520 6e61 6d65 3d22 636c 6965  ibute name=\"clie\n+0000e9d0: 6e74 2220 7479 7065 3d22 7873 643a 7374  nt\" type=\"xsd:st\n+0000e9e0: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+0000e9f0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+0000ea00: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000ea10: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+0000ea20: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+0000ea30: 415b 2054 6865 2070 726f 746f 636f 6c20  A[ The protocol \n+0000ea40: 636c 6965 6e74 2074 7970 652e 205d 5d3e  client type. ]]>\n+0000ea50: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+0000ea60: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000ea70: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+0000ea80: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+0000ea90: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+0000eaa0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+0000eab0: 6962 7574 6520 6e61 6d65 3d22 7061 7468  ibute name=\"path\n+0000eac0: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+0000ead0: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+0000eae0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+0000eaf0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000eb00: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+0000eb10: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000eb20: 2020 2020 2020 2020 2020 2020 203c 215b               <![\n+0000eb30: 4344 4154 415b 2054 6865 2070 726f 746f  CDATA[ The proto\n+0000eb40: 636f 6c20 636f 6e74 6578 7420 7061 7468  col context path\n+0000eb50: 2e20 7265 706c 6163 6520 746f 2022 636f  . replace to \"co\n+0000eb60: 6e74 6578 7470 6174 6822 2e20 5d5d 3e3c  ntextpath\". ]]><\n+0000eb70: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+0000eb80: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000eb90: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+0000eba0: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+0000ebb0: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+0000ebc0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+0000ebd0: 6275 7465 206e 616d 653d 2263 6f6e 7465  bute name=\"conte\n+0000ebe0: 7874 7061 7468 2220 7479 7065 3d22 7873  xtpath\" type=\"xs\n+0000ebf0: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+0000ec00: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+0000ec10: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000ec20: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+0000ec30: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+0000ec40: 4344 4154 415b 2054 6865 2070 726f 746f  CDATA[ The proto\n+0000ec50: 636f 6c20 636f 6e74 6578 7420 7061 7468  col context path\n+0000ec60: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+0000ec70: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+0000ec80: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+0000ec90: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000eca0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+0000ecb0: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+0000ecc0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+0000ecd0: 2272 6567 6973 7465 7222 2074 7970 653d  \"register\" type=\n+0000ece0: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+0000ecf0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000ed00: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000ed10: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000ed20: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000ed30: 3c21 5b43 4441 5441 5b20 5468 6520 7072  <![CDATA[ The pr\n+0000ed40: 6f74 6f63 6f6c 2063 616e 2062 6520 7265  otocol can be re\n+0000ed50: 6769 7374 6572 2074 6f20 7265 6769 7374  gister to regist\n+0000ed60: 7279 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ry. ]]></xsd:doc\n+0000ed70: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+0000ed80: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+0000ed90: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000eda0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+0000edb0: 7574 653e 0d0a 2020 2020 2020 2020 3c78  ute>..        <x\n+0000edc0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+0000edd0: 653d 2264 6566 6175 6c74 2220 7479 7065  e=\"default\" type\n+0000ede0: 3d22 7873 643a 7374 7269 6e67 223e 0d0a  =\"xsd:string\">..\n+0000edf0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000ee00: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+0000ee10: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+0000ee20: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+0000ee30: 3e3c 215b 4344 4154 415b 2049 7320 6465  ><![CDATA[ Is de\n+0000ee40: 6661 756c 742e 205d 5d3e 3c2f 7873 643a  fault. ]]></xsd:\n+0000ee50: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+0000ee60: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+0000ee70: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+0000ee80: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+0000ee90: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+0000eea0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+0000eeb0: 6e61 6d65 3d22 7373 6c2d 656e 6162 6c65  name=\"ssl-enable\n+0000eec0: 6422 2074 7970 653d 2278 7364 3a62 6f6f  d\" type=\"xsd:boo\n+0000eed0: 6c65 616e 223e 0d0a 2020 2020 2020 2020  lean\">..        \n+0000eee0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+0000eef0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000ef00: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+0000ef10: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+0000ef20: 415b 2049 7320 5353 4c20 656e 6162 6c65  A[ Is SSL enable\n+0000ef30: 642e 205d 5d3e 3c2f 7873 643a 646f 6375  d. ]]></xsd:docu\n+0000ef40: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+0000ef50: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+0000ef60: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000ef70: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+0000ef80: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+0000ef90: 643a 616e 7941 7474 7269 6275 7465 206e  d:anyAttribute n\n+0000efa0: 616d 6573 7061 6365 3d22 2323 6f74 6865  amespace=\"##othe\n+0000efb0: 7222 2070 726f 6365 7373 436f 6e74 656e  r\" processConten\n+0000efc0: 7473 3d22 6c61 7822 2f3e 0d0a 2020 2020  ts=\"lax\"/>..    \n+0000efd0: 3c2f 7873 643a 636f 6d70 6c65 7854 7970  </xsd:complexTyp\n+0000efe0: 653e 0d0a 0d0a 2020 2020 3c78 7364 3a63  e>....    <xsd:c\n+0000eff0: 6f6d 706c 6578 5479 7065 206e 616d 653d  omplexType name=\n+0000f000: 2270 726f 7669 6465 7254 7970 6522 3e0d  \"providerType\">.\n+0000f010: 0a20 2020 2020 2020 203c 7873 643a 636f  .        <xsd:co\n+0000f020: 6d70 6c65 7843 6f6e 7465 6e74 3e0d 0a20  mplexContent>.. \n+0000f030: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000f040: 6578 7465 6e73 696f 6e20 6261 7365 3d22  extension base=\"\n+0000f050: 6162 7374 7261 6374 5365 7276 6963 6554  abstractServiceT\n+0000f060: 7970 6522 3e0d 0a20 2020 2020 2020 2020  ype\">..         \n+0000f070: 2020 2020 2020 203c 7873 643a 6368 6f69         <xsd:choi\n+0000f080: 6365 206d 696e 4f63 6375 7273 3d22 3022  ce minOccurs=\"0\"\n+0000f090: 206d 6178 4f63 6375 7273 3d22 756e 626f   maxOccurs=\"unbo\n+0000f0a0: 756e 6465 6422 3e0d 0a20 2020 2020 2020  unded\">..       \n+0000f0b0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000f0c0: 643a 656c 656d 656e 7420 7265 663d 2273  d:element ref=\"s\n+0000f0d0: 6572 7669 6365 2220 6d69 6e4f 6363 7572  ervice\" minOccur\n+0000f0e0: 733d 2230 2220 6d61 784f 6363 7572 733d  s=\"0\" maxOccurs=\n+0000f0f0: 2275 6e62 6f75 6e64 6564 222f 3e0d 0a20  \"unbounded\"/>.. \n+0000f100: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000f110: 2020 203c 7873 643a 656c 656d 656e 7420     <xsd:element \n+0000f120: 7265 663d 2270 6172 616d 6574 6572 2220  ref=\"parameter\" \n+0000f130: 6d69 6e4f 6363 7572 733d 2230 2220 6d61  minOccurs=\"0\" ma\n+0000f140: 784f 6363 7572 733d 2275 6e62 6f75 6e64  xOccurs=\"unbound\n+0000f150: 6564 222f 3e0d 0a20 2020 2020 2020 2020  ed\"/>..         \n+0000f160: 2020 2020 2020 203c 2f78 7364 3a63 686f         </xsd:cho\n+0000f170: 6963 653e 0d0a 2020 2020 2020 2020 2020  ice>..          \n+0000f180: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+0000f190: 6275 7465 206e 616d 653d 2268 6f73 7422  bute name=\"host\"\n+0000f1a0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+0000f1b0: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+0000f1c0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+0000f1d0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000f1e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000f1f0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+0000f200: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+0000f210: 5468 6520 7365 7276 6963 6520 686f 7374  The service host\n+0000f220: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+0000f230: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+0000f240: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000f250: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+0000f260: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000f270: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+0000f280: 653e 0d0a 2020 2020 2020 2020 2020 2020  e>..            \n+0000f290: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+0000f2a0: 7465 206e 616d 653d 2270 6f72 7422 2074  te name=\"port\" t\n+0000f2b0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+0000f2c0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000f2d0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+0000f2e0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000f2f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000f300: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+0000f310: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+0000f320: 6520 7365 7276 6963 6520 706f 7274 2e20  e service port. \n+0000f330: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+0000f340: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000f350: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+0000f360: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n 0000f370: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f380: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-0000f390: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-0000f3a0: 4154 415b 2054 6865 2074 6872 6561 6420  ATA[ The thread \n-0000f3b0: 706f 6f6c 206b 6565 7041 6c69 7665 5469  pool keepAliveTi\n-0000f3c0: 6d65 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  me. ]]></xsd:doc\n-0000f3d0: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-0000f3e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f3f0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-0000f400: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000f410: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-0000f420: 653e 0a20 2020 2020 2020 2020 2020 2020  e>.             \n-0000f430: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-0000f440: 6520 6e61 6d65 3d22 7175 6575 6573 2220  e name=\"queues\" \n-0000f450: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-0000f460: 223e 0a20 2020 2020 2020 2020 2020 2020  \">.             \n-0000f470: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-0000f480: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000f490: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f4a0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-0000f4b0: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-0000f4c0: 2074 6872 6561 6420 706f 6f6c 2071 7565   thread pool que\n-0000f4d0: 7565 2073 697a 652e 205d 5d3e 3c2f 7873  ue size. ]]></xs\n-0000f4e0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000f4f0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000f500: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-0000f510: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000f520: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-0000f530: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-0000f540: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-0000f550: 7269 6275 7465 206e 616d 653d 2261 6363  ribute name=\"acc\n-0000f560: 6570 7473 2220 7479 7065 3d22 7873 643a  epts\" type=\"xsd:\n-0000f570: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-0000f580: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-0000f590: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n+0000f380: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+0000f390: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000f3a0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+0000f3b0: 206e 616d 653d 2274 6872 6561 6470 6f6f   name=\"threadpoo\n+0000f3c0: 6c22 2074 7970 653d 2278 7364 3a73 7472  l\" type=\"xsd:str\n+0000f3d0: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+0000f3e0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000f3f0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000f400: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000f410: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+0000f420: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+0000f430: 5b20 5468 6520 7468 7265 6164 2070 6f6f  [ The thread poo\n+0000f440: 6c20 7479 7065 2e20 5d5d 3e3c 2f78 7364  l type. ]]></xsd\n+0000f450: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+0000f460: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000f470: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+0000f480: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000f490: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+0000f4a0: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+0000f4b0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+0000f4c0: 7474 7269 6275 7465 206e 616d 653d 2274  ttribute name=\"t\n+0000f4d0: 6872 6561 646e 616d 6522 2074 7970 653d  hreadname\" type=\n+0000f4e0: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+0000f4f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000f500: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+0000f510: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000f520: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000f530: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000f540: 3c21 5b43 4441 5441 5b20 5468 6520 7468  <![CDATA[ The th\n+0000f550: 7265 6164 2070 6f6f 6c20 6e61 6d65 2e20  read pool name. \n+0000f560: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+0000f570: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000f580: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+0000f590: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n 0000f5a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f5b0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-0000f5c0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-0000f5d0: 415b 2054 6865 2061 6363 6570 7420 636f  A[ The accept co\n-0000f5e0: 6e6e 6563 7469 6f6e 2073 697a 652e 205d  nnection size. ]\n-0000f5f0: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-0000f600: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000f610: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000f620: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000f630: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-0000f640: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-0000f650: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000f660: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-0000f670: 653d 2263 6f64 6563 2220 7479 7065 3d22  e=\"codec\" type=\"\n-0000f680: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n+0000f5b0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+0000f5c0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000f5d0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+0000f5e0: 206e 616d 653d 2274 6872 6561 6473 2220   name=\"threads\" \n+0000f5f0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+0000f600: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+0000f610: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+0000f620: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000f630: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000f640: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+0000f650: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+0000f660: 6865 2074 6872 6561 6420 706f 6f6c 2073  he thread pool s\n+0000f670: 697a 652e 205d 5d3e 3c2f 7873 643a 646f  ize. ]]></xsd:do\n+0000f680: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n 0000f690: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f6a0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-0000f6b0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000f6c0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-0000f6d0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-0000f6e0: 4344 4154 415b 2054 6865 2070 726f 746f  CDATA[ The proto\n-0000f6f0: 636f 6c20 636f 6465 632e 205d 5d3e 3c2f  col codec. ]]></\n-0000f700: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000f710: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000f720: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-0000f730: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000f740: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-0000f750: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-0000f760: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-0000f770: 7474 7269 6275 7465 206e 616d 653d 2263  ttribute name=\"c\n-0000f780: 6861 7273 6574 2220 7479 7065 3d22 7873  harset\" type=\"xs\n-0000f790: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-0000f7a0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000f7b0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000f7c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f7d0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-0000f7e0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-0000f7f0: 4154 415b 2054 6865 2070 726f 746f 636f  ATA[ The protoco\n-0000f800: 6c20 6368 6172 7365 742e 205d 5d3e 3c2f  l charset. ]]></\n-0000f810: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000f820: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000f830: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-0000f840: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000f850: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-0000f860: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-0000f870: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-0000f880: 7474 7269 6275 7465 206e 616d 653d 2270  ttribute name=\"p\n-0000f890: 6179 6c6f 6164 2220 7479 7065 3d22 7873  ayload\" type=\"xs\n-0000f8a0: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-0000f8b0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000f8c0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000f8d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f8e0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-0000f8f0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-0000f900: 4154 415b 2054 6865 206d 6178 2070 6179  ATA[ The max pay\n-0000f910: 6c6f 6164 2e20 5d5d 3e3c 2f78 7364 3a64  load. ]]></xsd:d\n-0000f920: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-0000f930: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f940: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-0000f950: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000f960: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-0000f970: 7574 653e 0a20 2020 2020 2020 2020 2020  ute>.           \n-0000f980: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-0000f990: 7574 6520 6e61 6d65 3d22 6275 6666 6572  ute name=\"buffer\n-0000f9a0: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-0000f9b0: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-0000f9c0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-0000f9d0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n+0000f6a0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+0000f6b0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000f6c0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+0000f6d0: 6275 7465 3e0d 0a20 2020 2020 2020 2020  bute>..         \n+0000f6e0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+0000f6f0: 6962 7574 6520 6e61 6d65 3d22 696f 7468  ibute name=\"ioth\n+0000f700: 7265 6164 7322 2074 7970 653d 2278 7364  reads\" type=\"xsd\n+0000f710: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+0000f720: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000f730: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000f740: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000f750: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+0000f760: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+0000f770: 4441 5441 5b20 5468 6520 494f 2074 6872  DATA[ The IO thr\n+0000f780: 6561 6420 706f 6f6c 2073 697a 652e 205d  ead pool size. ]\n+0000f790: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+0000f7a0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000f7b0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+0000f7c0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+0000f7d0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000f7e0: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+0000f7f0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000f800: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+0000f810: 6e61 6d65 3d22 616c 6976 6522 2074 7970  name=\"alive\" typ\n+0000f820: 653d 2278 7364 3a73 7472 696e 6722 3e0d  e=\"xsd:string\">.\n+0000f830: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000f840: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+0000f850: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000f860: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000f870: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+0000f880: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n+0000f890: 7468 7265 6164 2070 6f6f 6c20 6b65 6570  thread pool keep\n+0000f8a0: 416c 6976 6554 696d 652e 205d 5d3e 3c2f  AliveTime. ]]></\n+0000f8b0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+0000f8c0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000f8d0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+0000f8e0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000f8f0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+0000f900: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+0000f910: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000f920: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+0000f930: 3d22 7175 6575 6573 2220 7479 7065 3d22  =\"queues\" type=\"\n+0000f940: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+0000f950: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000f960: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+0000f970: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000f980: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000f990: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+0000f9a0: 215b 4344 4154 415b 2054 6865 2074 6872  ![CDATA[ The thr\n+0000f9b0: 6561 6420 706f 6f6c 2071 7565 7565 2073  ead pool queue s\n+0000f9c0: 697a 652e 205d 5d3e 3c2f 7873 643a 646f  ize. ]]></xsd:do\n+0000f9d0: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n 0000f9e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f9f0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-0000fa00: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-0000fa10: 6865 2062 7566 6665 7220 7369 7a65 2e20  he buffer size. \n-0000fa20: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-0000fa30: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000fa40: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-0000fa50: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-0000fa60: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-0000fa70: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-0000fa80: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000fa90: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-0000faa0: 6d65 3d22 7472 616e 7370 6f72 7465 7222  me=\"transporter\"\n-0000fab0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-0000fac0: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-0000fad0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-0000fae0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000faf0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000fb00: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-0000fb10: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-0000fb20: 6520 7072 6f74 6f63 6f6c 2074 7261 6e73  e protocol trans\n-0000fb30: 706f 7274 6572 2074 7970 652e 205d 5d3e  porter type. ]]>\n-0000fb40: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-0000fb50: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000fb60: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-0000fb70: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000fb80: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000fb90: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-0000fba0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000fbb0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-0000fbc0: 2265 7863 6861 6e67 6572 2220 7479 7065  \"exchanger\" type\n-0000fbd0: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-0000fbe0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000fbf0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-0000fc00: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000fc10: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000fc20: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-0000fc30: 215b 4344 4154 415b 2054 6865 2070 726f  ![CDATA[ The pro\n-0000fc40: 746f 636f 6c20 6578 6368 616e 6765 7220  tocol exchanger \n-0000fc50: 7479 7065 2e20 5d5d 3e3c 2f78 7364 3a64  type. ]]></xsd:d\n-0000fc60: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-0000fc70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000fc80: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-0000fc90: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000fca0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-0000fcb0: 7574 653e 0a20 2020 2020 2020 2020 2020  ute>.           \n-0000fcc0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-0000fcd0: 7574 6520 6e61 6d65 3d22 6469 7370 6174  ute name=\"dispat\n-0000fce0: 6865 7222 2074 7970 653d 2278 7364 3a73  her\" type=\"xsd:s\n-0000fcf0: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-0000fd00: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000fd10: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n+0000f9f0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+0000fa00: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000fa10: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+0000fa20: 6275 7465 3e0d 0a20 2020 2020 2020 2020  bute>..         \n+0000fa30: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+0000fa40: 6962 7574 6520 6e61 6d65 3d22 6163 6365  ibute name=\"acce\n+0000fa50: 7074 7322 2074 7970 653d 2278 7364 3a73  pts\" type=\"xsd:s\n+0000fa60: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+0000fa70: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000fa80: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+0000fa90: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000faa0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+0000fab0: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+0000fac0: 5441 5b20 5468 6520 6163 6365 7074 2063  TA[ The accept c\n+0000fad0: 6f6e 6e65 6374 696f 6e20 7369 7a65 2e20  onnection size. \n+0000fae0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+0000faf0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000fb00: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+0000fb10: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+0000fb20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000fb30: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+0000fb40: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000fb50: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+0000fb60: 206e 616d 653d 2263 6f64 6563 2220 7479   name=\"codec\" ty\n+0000fb70: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+0000fb80: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000fb90: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+0000fba0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000fbb0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000fbc0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+0000fbd0: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+0000fbe0: 2070 726f 746f 636f 6c20 636f 6465 632e   protocol codec.\n+0000fbf0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+0000fc00: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+0000fc10: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+0000fc20: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000fc30: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000fc40: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+0000fc50: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000fc60: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+0000fc70: 6520 6e61 6d65 3d22 6368 6172 7365 7422  e name=\"charset\"\n+0000fc80: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+0000fc90: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+0000fca0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+0000fcb0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000fcc0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000fcd0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+0000fce0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+0000fcf0: 5468 6520 7072 6f74 6f63 6f6c 2063 6861  The protocol cha\n+0000fd00: 7273 6574 2e20 5d5d 3e3c 2f78 7364 3a64  rset. ]]></xsd:d\n+0000fd10: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n 0000fd20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000fd30: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-0000fd40: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-0000fd50: 5b20 4465 7072 6563 6174 6564 2e20 7265  [ Deprecated. re\n-0000fd60: 706c 6163 6520 746f 2022 6469 7370 6174  place to \"dispat\n-0000fd70: 6368 6572 222e 205d 5d3e 3c2f 7873 643a  cher\". ]]></xsd:\n-0000fd80: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-0000fd90: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000fda0: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-0000fdb0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000fdc0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-0000fdd0: 6275 7465 3e0a 2020 2020 2020 2020 2020  bute>.          \n-0000fde0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-0000fdf0: 6275 7465 206e 616d 653d 2264 6973 7061  bute name=\"dispa\n-0000fe00: 7463 6865 7222 2074 7970 653d 2278 7364  tcher\" type=\"xsd\n-0000fe10: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-0000fe20: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000fe30: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000fe40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000fe50: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-0000fe60: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-0000fe70: 5441 5b20 5468 6520 7072 6f74 6f63 6f6c  TA[ The protocol\n-0000fe80: 2064 6973 7061 7463 6865 7220 7479 7065   dispatcher type\n-0000fe90: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-0000fea0: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-0000feb0: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-0000fec0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000fed0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000fee0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-0000fef0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000ff00: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-0000ff10: 6e61 6d65 3d22 6e65 7477 6f72 6b65 7222  name=\"networker\"\n-0000ff20: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-0000ff30: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-0000ff40: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-0000ff50: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000ff60: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000ff70: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-0000ff80: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-0000ff90: 6520 7072 6f74 6f63 6f6c 2022 6e65 7477  e protocol \"netw\n-0000ffa0: 6f72 6b65 7222 2074 7970 652e 205d 5d3e  orker\" type. ]]>\n-0000ffb0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-0000ffc0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000ffd0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-0000ffe0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000fff0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00010000: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-00010010: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00010020: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-00010030: 2273 6572 7665 7222 2074 7970 653d 2278  \"server\" type=\"x\n-00010040: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-00010050: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010060: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-00010070: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00010080: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00010090: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-000100a0: 4441 5441 5b20 5468 6520 7072 6f74 6f63  DATA[ The protoc\n-000100b0: 6f6c 2073 6572 7665 7220 7479 7065 2e20  ol server type. \n-000100c0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-000100d0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-000100e0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-000100f0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00010100: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-00010110: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-00010120: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00010130: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-00010140: 6d65 3d22 636c 6965 6e74 2220 7479 7065  me=\"client\" type\n-00010150: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-00010160: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010170: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-00010180: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00010190: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000101a0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-000101b0: 215b 4344 4154 415b 2054 6865 2070 726f  ![CDATA[ The pro\n-000101c0: 746f 636f 6c20 636c 6965 6e74 2074 7970  tocol client typ\n-000101d0: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n-000101e0: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-000101f0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00010200: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00010210: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00010220: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-00010230: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00010240: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00010250: 206e 616d 653d 2274 656c 6e65 7422 2074   name=\"telnet\" t\n-00010260: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-00010270: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00010280: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-00010290: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-000102a0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000102b0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-000102c0: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-000102d0: 7072 6f74 6f63 6f6c 2075 7365 2074 656c  protocol use tel\n-000102e0: 6e65 7420 636f 6d6d 616e 6473 2e20 5d5d  net commands. ]]\n-000102f0: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-00010300: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00010310: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00010320: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00010330: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00010340: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-00010350: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00010360: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00010370: 3d22 7072 6f6d 7074 2220 7479 7065 3d22  =\"prompt\" type=\"\n-00010380: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-00010390: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000103a0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-000103b0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-000103c0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-000103d0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-000103e0: 4344 4154 415b 2054 6865 2070 726f 746f  CDATA[ The proto\n-000103f0: 636f 6c20 7465 6c6e 6574 2070 726f 6d70  col telnet promp\n-00010400: 742e 205d 5d3e 3c2f 7873 643a 646f 6375  t. ]]></xsd:docu\n-00010410: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-00010420: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00010430: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00010440: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00010450: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-00010460: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00010470: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00010480: 206e 616d 653d 2273 7461 7475 7322 2074   name=\"status\" t\n-00010490: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-000104a0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-000104b0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-000104c0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-000104d0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000104e0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-000104f0: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-00010500: 7072 6f74 6f63 6f6c 2063 6865 636b 2073  protocol check s\n-00010510: 7461 7475 732e 205d 5d3e 3c2f 7873 643a  tatus. ]]></xsd:\n-00010520: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-00010530: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010540: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-00010550: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00010560: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00010570: 6275 7465 3e0a 2020 2020 2020 2020 2020  bute>.          \n-00010580: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-00010590: 6275 7465 206e 616d 653d 2270 6174 6822  bute name=\"path\"\n-000105a0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-000105b0: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-000105c0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-000105d0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-000105e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000105f0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-00010600: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00010610: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010620: 203c 215b 4344 4154 415b 2054 6865 2070   <![CDATA[ The p\n-00010630: 726f 746f 636f 6c20 636f 6e74 6578 7420  rotocol context \n-00010640: 7061 7468 2e20 7265 706c 6163 6520 746f  path. replace to\n-00010650: 2022 636f 6e74 6578 7470 6174 6822 2e20   \"contextpath\". \n-00010660: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00010670: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00010680: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00010690: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-000106a0: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-000106b0: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-000106c0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000106d0: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-000106e0: 6d65 3d22 636f 6e74 6578 7470 6174 6822  me=\"contextpath\"\n-000106f0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-00010700: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-00010710: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00010720: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00010730: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010740: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-00010750: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-00010760: 6520 7072 6f74 6f63 6f6c 2063 6f6e 7465  e protocol conte\n-00010770: 7874 2070 6174 682e 205d 5d3e 3c2f 7873  xt path. ]]></xs\n-00010780: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00010790: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-000107a0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-000107b0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-000107c0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-000107d0: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-000107e0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-000107f0: 7269 6275 7465 206e 616d 653d 2277 6169  ribute name=\"wai\n-00010800: 7422 2074 7970 653d 2278 7364 3a73 7472  t\" type=\"xsd:str\n-00010810: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-00010820: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00010830: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00010840: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010850: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-00010860: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-00010870: 5468 6520 7072 6f76 6964 6572 2073 6875  The provider shu\n-00010880: 7464 6f77 6e20 7761 6974 2074 696d 652e  tdown wait time.\n-00010890: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-000108a0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-000108b0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-000108c0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-000108d0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000108e0: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-000108f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010900: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00010910: 616d 653d 2264 6566 6175 6c74 2220 7479  ame=\"default\" ty\n-00010920: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00010930: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00010940: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00010950: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00010960: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00010970: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00010980: 3e3c 215b 4344 4154 415b 2049 7320 6465  ><![CDATA[ Is de\n-00010990: 6661 756c 742e 205d 5d3e 3c2f 7873 643a  fault. ]]></xsd:\n-000109a0: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-000109b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000109c0: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-000109d0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-000109e0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-000109f0: 6275 7465 3e0a 2020 2020 2020 2020 2020  bute>.          \n-00010a00: 2020 2020 2020 3c78 7364 3a61 6e79 4174        <xsd:anyAt\n-00010a10: 7472 6962 7574 6520 6e61 6d65 7370 6163  tribute namespac\n-00010a20: 653d 2223 236f 7468 6572 2220 7072 6f63  e=\"##other\" proc\n-00010a30: 6573 7343 6f6e 7465 6e74 733d 226c 6178  essContents=\"lax\n-00010a40: 222f 3e0a 2020 2020 2020 2020 2020 2020  \"/>.            \n-00010a50: 3c2f 7873 643a 6578 7465 6e73 696f 6e3e  </xsd:extension>\n-00010a60: 0a20 2020 2020 2020 203c 2f78 7364 3a63  .        </xsd:c\n-00010a70: 6f6d 706c 6578 436f 6e74 656e 743e 0a20  omplexContent>. \n-00010a80: 2020 203c 2f78 7364 3a63 6f6d 706c 6578     </xsd:complex\n-00010a90: 5479 7065 3e0a 0a20 2020 203c 7873 643a  Type>..    <xsd:\n-00010aa0: 636f 6d70 6c65 7854 7970 6520 6e61 6d65  complexType name\n-00010ab0: 3d22 7365 7276 6963 6554 7970 6522 3e0a  =\"serviceType\">.\n-00010ac0: 2020 2020 2020 2020 3c78 7364 3a63 6f6d          <xsd:com\n-00010ad0: 706c 6578 436f 6e74 656e 743e 0a20 2020  plexContent>.   \n-00010ae0: 2020 2020 2020 2020 203c 7873 643a 6578           <xsd:ex\n-00010af0: 7465 6e73 696f 6e20 6261 7365 3d22 6162  tension base=\"ab\n-00010b00: 7374 7261 6374 5365 7276 6963 6554 7970  stractServiceTyp\n-00010b10: 6522 3e0a 2020 2020 2020 2020 2020 2020  e\">.            \n-00010b20: 2020 2020 3c78 7364 3a63 686f 6963 6520      <xsd:choice \n-00010b30: 6d69 6e4f 6363 7572 733d 2230 2220 6d61  minOccurs=\"0\" ma\n-00010b40: 784f 6363 7572 733d 2275 6e62 6f75 6e64  xOccurs=\"unbound\n-00010b50: 6564 223e 0a20 2020 2020 2020 2020 2020  ed\">.           \n-00010b60: 2020 2020 2020 2020 203c 7873 643a 656c           <xsd:el\n-00010b70: 656d 656e 7420 7265 663d 226d 6574 686f  ement ref=\"metho\n-00010b80: 6422 206d 696e 4f63 6375 7273 3d22 3022  d\" minOccurs=\"0\"\n-00010b90: 206d 6178 4f63 6375 7273 3d22 756e 626f   maxOccurs=\"unbo\n-00010ba0: 756e 6465 6422 2f3e 0a20 2020 2020 2020  unded\"/>.       \n-00010bb0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00010bc0: 643a 656c 656d 656e 7420 7265 663d 2270  d:element ref=\"p\n-00010bd0: 6172 616d 6574 6572 2220 6d69 6e4f 6363  arameter\" minOcc\n-00010be0: 7572 733d 2230 2220 6d61 784f 6363 7572  urs=\"0\" maxOccur\n-00010bf0: 733d 2275 6e62 6f75 6e64 6564 222f 3e0a  s=\"unbounded\"/>.\n-00010c00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010c10: 2020 2020 3c78 7364 3a65 6c65 6d65 6e74      <xsd:element\n-00010c20: 2072 6566 3d22 6265 616e 733a 7072 6f70   ref=\"beans:prop\n-00010c30: 6572 7479 2220 6d69 6e4f 6363 7572 733d  erty\" minOccurs=\n-00010c40: 2230 2220 6d61 784f 6363 7572 733d 2275  \"0\" maxOccurs=\"u\n-00010c50: 6e62 6f75 6e64 6564 222f 3e0a 2020 2020  nbounded\"/>.    \n-00010c60: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00010c70: 643a 6368 6f69 6365 3e0a 2020 2020 2020  d:choice>.      \n-00010c80: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00010c90: 7474 7269 6275 7465 206e 616d 653d 2269  ttribute name=\"i\n-00010ca0: 6e74 6572 6661 6365 2220 7479 7065 3d22  nterface\" type=\"\n-00010cb0: 7873 643a 746f 6b65 6e22 2075 7365 3d22  xsd:token\" use=\"\n-00010cc0: 7265 7175 6972 6564 223e 0a20 2020 2020  required\">.     \n-00010cd0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00010ce0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00010cf0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010d00: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-00010d10: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00010d20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010d30: 2020 2020 2020 2020 3c21 5b43 4441 5441          <![CDATA\n-00010d40: 5b20 4465 6669 6e65 7320 7468 6520 696e  [ Defines the in\n-00010d50: 7465 7266 6163 6520 746f 2061 6476 6572  terface to adver\n-00010d60: 7469 7365 2066 6f72 2074 6869 7320 7365  tise for this se\n-00010d70: 7276 6963 6520 696e 2074 6865 2073 6572  rvice in the ser\n-00010d80: 7669 6365 2072 6567 6973 7472 792e 205d  vice registry. ]\n-00010d90: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-00010da0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00010db0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00010dc0: 7873 643a 6170 7069 6e66 6f3e 0a20 2020  xsd:appinfo>.   \n-00010dd0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010de0: 2020 2020 2020 2020 203c 746f 6f6c 3a61           <tool:a\n-00010df0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00010e00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010e10: 2020 2020 2020 2020 2020 203c 746f 6f6c             <tool\n-00010e20: 3a65 7870 6563 7465 642d 7479 7065 2074  :expected-type t\n-00010e30: 7970 653d 226a 6176 612e 6c61 6e67 2e43  ype=\"java.lang.C\n-00010e40: 6c61 7373 222f 3e0a 2020 2020 2020 2020  lass\"/>.        \n-00010e50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010e60: 2020 2020 3c2f 746f 6f6c 3a61 6e6e 6f74      </tool:annot\n-00010e70: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00010e80: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00010e90: 2f78 7364 3a61 7070 696e 666f 3e0a 2020  /xsd:appinfo>.  \n-00010ea0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010eb0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-00010ec0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00010ed0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00010ee0: 7574 653e 0a20 2020 2020 2020 2020 2020  ute>.           \n-00010ef0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-00010f00: 7574 6520 6e61 6d65 3d22 7265 6622 2074  ute name=\"ref\" t\n-00010f10: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-00010f20: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00010f30: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-00010f40: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00010f50: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00010f60: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00010f70: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00010f80: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00010f90: 215b 4344 4154 415b 2054 6865 2073 6572  ![CDATA[ The ser\n-00010fa0: 7669 6365 2069 6d70 6c65 6d65 6e74 6174  vice implementat\n-00010fb0: 696f 6e20 696e 7374 616e 6365 2062 6561  ion instance bea\n-00010fc0: 6e20 6964 2e20 5d5d 3e3c 2f78 7364 3a64  n id. ]]></xsd:d\n-00010fd0: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00010fe0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010ff0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-00011000: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00011010: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00011020: 7574 653e 0a20 2020 2020 2020 2020 2020  ute>.           \n-00011030: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-00011040: 7574 6520 6e61 6d65 3d22 636c 6173 7322  ute name=\"class\"\n-00011050: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-00011060: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-00011070: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00011080: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00011090: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000110a0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-000110b0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-000110c0: 6520 7365 7276 6963 6520 696d 706c 656d  e service implem\n-000110d0: 656e 7461 7469 6f6e 2063 6c61 7373 206e  entation class n\n-000110e0: 616d 652e 205d 5d3e 3c2f 7873 643a 646f  ame. ]]></xsd:do\n-000110f0: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00011100: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00011110: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-00011120: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00011130: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-00011140: 7465 3e0a 2020 2020 2020 2020 2020 2020  te>.            \n-00011150: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-00011160: 7465 206e 616d 653d 2270 6174 6822 2074  te name=\"path\" t\n-00011170: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-00011180: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00011190: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-000111a0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-000111b0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000111c0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-000111d0: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-000111e0: 7365 7276 6963 6520 7061 7468 2e20 5d5d  service path. ]]\n-000111f0: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-00011200: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00011210: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00011220: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00011230: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00011240: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-00011250: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00011260: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00011270: 3d22 7072 6f76 6964 6572 2220 7479 7065  =\"provider\" type\n-00011280: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-00011290: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000112a0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-000112b0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-000112c0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000112d0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-000112e0: 215b 4344 4154 415b 2044 6570 7265 6361  ![CDATA[ Depreca\n-000112f0: 7465 642e 2052 6570 6c61 6365 2074 6f20  ted. Replace to \n-00011300: 7072 6f74 6f63 6f6c 2e20 5d5d 3e3c 2f78  protocol. ]]></x\n-00011310: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00011320: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00011330: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00011340: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00011350: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00011360: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00011370: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n-00011380: 7472 6962 7574 6520 6e61 6d65 3d22 6765  tribute name=\"ge\n-00011390: 6e65 7269 6322 2074 7970 653d 2278 7364  neric\" type=\"xsd\n-000113a0: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-000113b0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-000113c0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-000113d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000113e0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-000113f0: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-00011400: 5441 5b20 4765 6e65 7269 6320 7365 7276  TA[ Generic serv\n-00011410: 6963 652e 205d 5d3e 3c2f 7873 643a 646f  ice. ]]></xsd:do\n-00011420: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00011430: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00011440: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-00011450: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00011460: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-00011470: 7465 3e0a 2020 2020 2020 2020 2020 2020  te>.            \n-00011480: 2020 2020 3c78 7364 3a61 6e79 4174 7472      <xsd:anyAttr\n-00011490: 6962 7574 6520 6e61 6d65 7370 6163 653d  ibute namespace=\n-000114a0: 2223 236f 7468 6572 2220 7072 6f63 6573  \"##other\" proces\n-000114b0: 7343 6f6e 7465 6e74 733d 226c 6178 222f  sContents=\"lax\"/\n-000114c0: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-000114d0: 7873 643a 6578 7465 6e73 696f 6e3e 0a20  xsd:extension>. \n-000114e0: 2020 2020 2020 203c 2f78 7364 3a63 6f6d         </xsd:com\n-000114f0: 706c 6578 436f 6e74 656e 743e 0a20 2020  plexContent>.   \n-00011500: 203c 2f78 7364 3a63 6f6d 706c 6578 5479   </xsd:complexTy\n-00011510: 7065 3e0a 0a20 2020 203c 7873 643a 636f  pe>..    <xsd:co\n-00011520: 6d70 6c65 7854 7970 6520 6e61 6d65 3d22  mplexType name=\"\n-00011530: 7373 6c54 7970 6522 3e0a 2020 2020 2020  sslType\">.      \n-00011540: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00011550: 206e 616d 653d 2269 6422 2074 7970 653d   name=\"id\" type=\n-00011560: 2278 7364 3a49 4422 3e0a 2020 2020 2020  \"xsd:ID\">.      \n-00011570: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-00011580: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00011590: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-000115a0: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-000115b0: 5441 5b20 5468 6520 756e 6971 7565 2069  TA[ The unique i\n-000115c0: 6465 6e74 6966 6965 7220 666f 7220 6120  dentifier for a \n-000115d0: 6265 616e 2e20 5d5d 3e3c 2f78 7364 3a64  bean. ]]></xsd:d\n-000115e0: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-000115f0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00011600: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00011610: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00011620: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-00011630: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00011640: 3d22 7365 7276 6572 2d6b 6579 2d63 6572  =\"server-key-cer\n-00011650: 742d 6368 6169 6e2d 7061 7468 2220 7479  t-chain-path\" ty\n-00011660: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00011670: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00011680: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00011690: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-000116a0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-000116b0: 3e3c 215b 4344 4154 415b 2054 6865 2073  ><![CDATA[ The s\n-000116c0: 6572 7665 7220 6365 7274 2e20 5d5d 3e3c  erver cert. ]]><\n-000116d0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-000116e0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-000116f0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00011700: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-00011710: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-00011720: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00011730: 6520 6e61 6d65 3d22 7365 7276 6572 2d70  e name=\"server-p\n-00011740: 7269 7661 7465 2d6b 6579 2d70 6174 6822  rivate-key-path\"\n-00011750: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-00011760: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-00011770: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-00011780: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00011790: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-000117a0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-000117b0: 6520 7365 7276 6572 206b 6579 2e20 5d5d  e server key. ]]\n-000117c0: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-000117d0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-000117e0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-000117f0: 6f6e 3e0a 2020 2020 2020 2020 3c2f 7873  on>.        </xs\n-00011800: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-00011810: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-00011820: 7574 6520 6e61 6d65 3d22 7365 7276 6572  ute name=\"server\n-00011830: 2d6b 6579 2d70 6173 7377 6f72 6422 2074  -key-password\" t\n-00011840: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-00011850: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-00011860: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00011870: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00011880: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00011890: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-000118a0: 7365 7276 6572 206b 6579 2e20 5d5d 3e3c  server key. ]]><\n-000118b0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-000118c0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-000118d0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-000118e0: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-000118f0: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-00011900: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00011910: 6520 6e61 6d65 3d22 7365 7276 6572 2d74  e name=\"server-t\n-00011920: 7275 7374 2d63 6572 742d 636f 6c6c 6563  rust-cert-collec\n-00011930: 7469 6f6e 2d70 6174 6822 2074 7970 653d  tion-path\" type=\n-00011940: 2278 7364 3a73 7472 696e 6722 3e0a 2020  \"xsd:string\">.  \n-00011950: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00011960: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00011970: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00011980: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-00011990: 5b43 4441 5441 5b20 5468 6520 7472 7573  [CDATA[ The trus\n-000119a0: 7465 6420 7365 7276 6572 2063 6572 742e  ted server cert.\n-000119b0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-000119c0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-000119d0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-000119e0: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-000119f0: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00011a00: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-00011a10: 7269 6275 7465 206e 616d 653d 2263 6c69  ribute name=\"cli\n-00011a20: 656e 742d 6b65 792d 6365 7274 2d63 6861  ent-key-cert-cha\n-00011a30: 696e 2d70 6174 6822 2074 7970 653d 2278  in-path\" type=\"x\n-00011a40: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-00011a50: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00011a60: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00011a70: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00011a80: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00011a90: 4441 5441 5b20 5468 6520 636c 6965 6e74  DATA[ The client\n-00011aa0: 2063 6572 742e 205d 5d3e 3c2f 7873 643a   cert. ]]></xsd:\n-00011ab0: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-00011ac0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00011ad0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00011ae0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00011af0: 6275 7465 3e0a 2020 2020 2020 2020 3c78  bute>.        <x\n-00011b00: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-00011b10: 653d 2263 6c69 656e 742d 7072 6976 6174  e=\"client-privat\n-00011b20: 652d 6b65 792d 7061 7468 2220 7479 7065  e-key-path\" type\n-00011b30: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-00011b40: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00011b50: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00011b60: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00011b70: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-00011b80: 215b 4344 4154 415b 2054 6865 2063 6c69  ![CDATA[ The cli\n-00011b90: 656e 7420 6b65 792e 205d 5d3e 3c2f 7873  ent key. ]]></xs\n-00011ba0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00011bb0: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00011bc0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00011bd0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00011be0: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00011bf0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00011c00: 616d 653d 2263 6c69 656e 742d 6b65 792d  ame=\"client-key-\n-00011c10: 7061 7373 776f 7264 2220 7479 7065 3d22  password\" type=\"\n-00011c20: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-00011c30: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-00011c40: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00011c50: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00011c60: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-00011c70: 4344 4154 415b 2054 6865 2063 6c69 656e  CDATA[ The clien\n-00011c80: 7420 6b65 7920 7077 642e 205d 5d3e 3c2f  t key pwd. ]]></\n-00011c90: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00011ca0: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-00011cb0: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00011cc0: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-00011cd0: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00011ce0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00011cf0: 206e 616d 653d 2263 6c69 656e 742d 7472   name=\"client-tr\n-00011d00: 7573 742d 6365 7274 2d63 6f6c 6c65 6374  ust-cert-collect\n-00011d10: 696f 6e2d 7061 7468 2220 7479 7065 3d22  ion-path\" type=\"\n-00011d20: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-00011d30: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-00011d40: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00011d50: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00011d60: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-00011d70: 4344 4154 415b 2054 6865 2074 7275 7374  CDATA[ The trust\n-00011d80: 6564 2063 6c69 656e 7420 6365 7274 2e20  ed client cert. \n-00011d90: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00011da0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00011db0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00011dc0: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-00011dd0: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-00011de0: 2020 203c 2f78 7364 3a63 6f6d 706c 6578     </xsd:complex\n-00011df0: 5479 7065 3e0a 0a20 2020 203c 7873 643a  Type>..    <xsd:\n-00011e00: 656c 656d 656e 7420 6e61 6d65 3d22 7373  element name=\"ss\n-00011e10: 6c22 2074 7970 653d 2273 736c 5479 7065  l\" type=\"sslType\n-00011e20: 223e 0a20 2020 2020 2020 203c 7873 643a  \">.        <xsd:\n-00011e30: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00011e40: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-00011e50: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-00011e60: 4154 415b 2054 6865 2073 736c 2063 6f6e  ATA[ The ssl con\n-00011e70: 6669 6720 5d5d 3e3c 2f78 7364 3a64 6f63  fig ]]></xsd:doc\n-00011e80: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00011e90: 2020 2020 2020 2020 3c78 7364 3a61 7070          <xsd:app\n-00011ea0: 696e 666f 3e0a 2020 2020 2020 2020 2020  info>.          \n-00011eb0: 2020 2020 2020 3c74 6f6f 6c3a 616e 6e6f        <tool:anno\n-00011ec0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00011ed0: 2020 2020 2020 2020 2020 2020 3c74 6f6f              <too\n-00011ee0: 6c3a 6578 706f 7274 7320 7479 7065 3d22  l:exports type=\"\n-00011ef0: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n-00011f00: 2e63 6f6e 6669 672e 5373 6c43 6f6e 6669  .config.SslConfi\n-00011f10: 6722 2f3e 0a20 2020 2020 2020 2020 2020  g\"/>.           \n-00011f20: 2020 2020 203c 2f74 6f6f 6c3a 616e 6e6f       </tool:anno\n-00011f30: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00011f40: 2020 2020 3c2f 7873 643a 6170 7069 6e66      </xsd:appinf\n-00011f50: 6f3e 0a20 2020 2020 2020 203c 2f78 7364  o>.        </xsd\n-00011f60: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00011f70: 203c 2f78 7364 3a65 6c65 6d65 6e74 3e0a   </xsd:element>.\n-00011f80: 0a20 2020 203c 7873 643a 656c 656d 656e  .    <xsd:elemen\n-00011f90: 7420 6e61 6d65 3d22 6170 706c 6963 6174  t name=\"applicat\n-00011fa0: 696f 6e22 2074 7970 653d 2261 7070 6c69  ion\" type=\"appli\n-00011fb0: 6361 7469 6f6e 5479 7065 223e 0a20 2020  cationType\">.   \n-00011fc0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00011fd0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00011fe0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-00011ff0: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-00012000: 6865 2061 7070 6c69 6361 7469 6f6e 2063  he application c\n-00012010: 6f6e 6669 6720 5d5d 3e3c 2f78 7364 3a64  onfig ]]></xsd:d\n-00012020: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00012030: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00012040: 7070 696e 666f 3e0a 2020 2020 2020 2020  ppinfo>.        \n-00012050: 2020 2020 2020 2020 3c74 6f6f 6c3a 616e          <tool:an\n-00012060: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00012070: 2020 2020 2020 2020 2020 2020 2020 3c74                <t\n-00012080: 6f6f 6c3a 6578 706f 7274 7320 7479 7065  ool:exports type\n-00012090: 3d22 6f72 672e 6170 6163 6865 2e64 7562  =\"org.apache.dub\n-000120a0: 626f 2e63 6f6e 6669 672e 4170 706c 6963  bo.config.Applic\n-000120b0: 6174 696f 6e43 6f6e 6669 6722 2f3e 0a20  ationConfig\"/>. \n-000120c0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000120d0: 2f74 6f6f 6c3a 616e 6e6f 7461 7469 6f6e  /tool:annotation\n-000120e0: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-000120f0: 7873 643a 6170 7069 6e66 6f3e 0a20 2020  xsd:appinfo>.   \n-00012100: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00012110: 6174 696f 6e3e 0a20 2020 203c 2f78 7364  ation>.    </xsd\n-00012120: 3a65 6c65 6d65 6e74 3e0a 0a20 2020 203c  :element>..    <\n-00012130: 7873 643a 656c 656d 656e 7420 6e61 6d65  xsd:element name\n-00012140: 3d22 6d6f 6475 6c65 2220 7479 7065 3d22  =\"module\" type=\"\n-00012150: 6d6f 6475 6c65 5479 7065 223e 0a20 2020  moduleType\">.   \n-00012160: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00012170: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00012180: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-00012190: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-000121a0: 6865 206d 6f64 756c 6520 636f 6e66 6967  he module config\n-000121b0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-000121c0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-000121d0: 2020 2020 203c 7873 643a 6170 7069 6e66       <xsd:appinf\n-000121e0: 6f3e 0a20 2020 2020 2020 2020 2020 2020  o>.             \n-000121f0: 2020 203c 746f 6f6c 3a61 6e6e 6f74 6174     <tool:annotat\n-00012200: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00012210: 2020 2020 2020 2020 203c 746f 6f6c 3a65           <tool:e\n-00012220: 7870 6f72 7473 2074 7970 653d 226f 7267  xports type=\"org\n-00012230: 2e61 7061 6368 652e 6475 6262 6f2e 636f  .apache.dubbo.co\n-00012240: 6e66 6967 2e4d 6f64 756c 6543 6f6e 6669  nfig.ModuleConfi\n-00012250: 6722 2f3e 0a20 2020 2020 2020 2020 2020  g\"/>.           \n-00012260: 2020 2020 203c 2f74 6f6f 6c3a 616e 6e6f       </tool:anno\n-00012270: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00012280: 2020 2020 3c2f 7873 643a 6170 7069 6e66      </xsd:appinf\n-00012290: 6f3e 0a20 2020 2020 2020 203c 2f78 7364  o>.        </xsd\n-000122a0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-000122b0: 203c 2f78 7364 3a65 6c65 6d65 6e74 3e0a   </xsd:element>.\n-000122c0: 0a20 2020 203c 7873 643a 656c 656d 656e  .    <xsd:elemen\n-000122d0: 7420 6e61 6d65 3d22 7265 6769 7374 7279  t name=\"registry\n-000122e0: 2220 7479 7065 3d22 7265 6769 7374 7279  \" type=\"registry\n-000122f0: 5479 7065 223e 0a20 2020 2020 2020 203c  Type\">.        <\n-00012300: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00012310: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00012320: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-00012330: 215b 4344 4154 415b 2054 6865 2072 6567  ![CDATA[ The reg\n-00012340: 6973 7472 7920 636f 6e66 6967 205d 5d3e  istry config ]]>\n-00012350: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-00012360: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00012370: 203c 7873 643a 6170 7069 6e66 6f3e 0a20   <xsd:appinfo>. \n-00012380: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00012390: 746f 6f6c 3a61 6e6e 6f74 6174 696f 6e3e  tool:annotation>\n-000123a0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-000123b0: 2020 2020 203c 746f 6f6c 3a65 7870 6f72       <tool:expor\n-000123c0: 7473 2074 7970 653d 226f 7267 2e61 7061  ts type=\"org.apa\n-000123d0: 6368 652e 6475 6262 6f2e 636f 6e66 6967  che.dubbo.config\n-000123e0: 2e52 6567 6973 7472 7943 6f6e 6669 6722  .RegistryConfig\"\n-000123f0: 2f3e 0a20 2020 2020 2020 2020 2020 2020  />.             \n-00012400: 2020 203c 2f74 6f6f 6c3a 616e 6e6f 7461     </tool:annota\n-00012410: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00012420: 2020 3c2f 7873 643a 6170 7069 6e66 6f3e    </xsd:appinfo>\n-00012430: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-00012440: 6e6e 6f74 6174 696f 6e3e 0a20 2020 203c  nnotation>.    <\n-00012450: 2f78 7364 3a65 6c65 6d65 6e74 3e0a 0a20  /xsd:element>.. \n-00012460: 2020 203c 7873 643a 656c 656d 656e 7420     <xsd:element \n-00012470: 6e61 6d65 3d22 6d65 7461 6461 7461 2d72  name=\"metadata-r\n-00012480: 6570 6f72 7422 2074 7970 653d 226d 6574  eport\" type=\"met\n-00012490: 6164 6174 6152 6570 6f72 7454 7970 6522  adataReportType\"\n-000124a0: 3e0a 2020 2020 2020 2020 3c78 7364 3a61  >.        <xsd:a\n-000124b0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-000124c0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-000124d0: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-000124e0: 5441 5b20 5468 6520 6d65 7461 6461 7461  TA[ The metadata\n-000124f0: 5265 706f 7274 2063 6f6e 6669 6720 5d5d  Report config ]]\n-00012500: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-00012510: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00012520: 2020 3c78 7364 3a61 7070 696e 666f 3e0a    <xsd:appinfo>.\n-00012530: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00012540: 3c74 6f6f 6c3a 616e 6e6f 7461 7469 6f6e  <tool:annotation\n-00012550: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00012560: 2020 2020 2020 3c74 6f6f 6c3a 6578 706f        <tool:expo\n-00012570: 7274 7320 7479 7065 3d22 6f72 672e 6170  rts type=\"org.ap\n-00012580: 6163 6865 2e64 7562 626f 2e63 6f6e 6669  ache.dubbo.confi\n-00012590: 672e 4d65 7461 6461 7461 5265 706f 7274  g.MetadataReport\n-000125a0: 436f 6e66 6967 222f 3e0a 2020 2020 2020  Config\"/>.      \n-000125b0: 2020 2020 2020 2020 2020 3c2f 746f 6f6c            </tool\n-000125c0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-000125d0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-000125e0: 7070 696e 666f 3e0a 2020 2020 2020 2020  ppinfo>.        \n-000125f0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00012600: 3e0a 2020 2020 3c2f 7873 643a 656c 656d  >.    </xsd:elem\n-00012610: 656e 743e 0a0a 2020 2020 3c78 7364 3a65  ent>..    <xsd:e\n-00012620: 6c65 6d65 6e74 206e 616d 653d 2263 6f6e  lement name=\"con\n-00012630: 6669 672d 6365 6e74 6572 2220 7479 7065  fig-center\" type\n-00012640: 3d22 636f 6e66 6967 4365 6e74 6572 5479  =\"configCenterTy\n-00012650: 7065 223e 0a20 2020 2020 2020 203c 7873  pe\">.        <xs\n-00012660: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00012670: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00012680: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-00012690: 4344 4154 415b 2054 6865 2063 6f6e 6669  CDATA[ The confi\n-000126a0: 6720 6365 6e74 6572 2063 6f6e 6669 6720  g center config \n-000126b0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-000126c0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-000126d0: 2020 2020 3c78 7364 3a61 7070 696e 666f      <xsd:appinfo\n-000126e0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-000126f0: 2020 3c74 6f6f 6c3a 616e 6e6f 7461 7469    <tool:annotati\n-00012700: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00012710: 2020 2020 2020 2020 3c74 6f6f 6c3a 6578          <tool:ex\n-00012720: 706f 7274 7320 7479 7065 3d22 6f72 672e  ports type=\"org.\n-00012730: 6170 6163 6865 2e64 7562 626f 2e63 6f6e  apache.dubbo.con\n-00012740: 6669 672e 436f 6e66 6967 4365 6e74 6572  fig.ConfigCenter\n-00012750: 436f 6e66 6967 222f 3e0a 2020 2020 2020  Config\"/>.      \n-00012760: 2020 2020 2020 2020 2020 3c2f 746f 6f6c            </tool\n-00012770: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00012780: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00012790: 7070 696e 666f 3e0a 2020 2020 2020 2020  ppinfo>.        \n-000127a0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-000127b0: 3e0a 2020 2020 3c2f 7873 643a 656c 656d  >.    </xsd:elem\n-000127c0: 656e 743e 0a0a 2020 2020 3c78 7364 3a65  ent>..    <xsd:e\n-000127d0: 6c65 6d65 6e74 206e 616d 653d 226d 6f6e  lement name=\"mon\n-000127e0: 6974 6f72 2220 7479 7065 3d22 6d6f 6e69  itor\" type=\"moni\n-000127f0: 746f 7254 7970 6522 3e0a 2020 2020 2020  torType\">.      \n-00012800: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-00012810: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-00012820: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00012830: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-00012840: 6c6f 6773 7461 7420 6d6f 6e69 746f 7220  logstat monitor \n-00012850: 636f 6e66 6967 205d 5d3e 3c2f 7873 643a  config ]]></xsd:\n-00012860: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-00012870: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00012880: 6170 7069 6e66 6f3e 0a20 2020 2020 2020  appinfo>.       \n-00012890: 2020 2020 2020 2020 203c 746f 6f6c 3a61           <tool:a\n-000128a0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-000128b0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000128c0: 746f 6f6c 3a65 7870 6f72 7473 2074 7970  tool:exports typ\n-000128d0: 653d 226f 7267 2e61 7061 6368 652e 6475  e=\"org.apache.du\n-000128e0: 6262 6f2e 636f 6e66 6967 2e4d 6f6e 6974  bbo.config.Monit\n-000128f0: 6f72 436f 6e66 6967 222f 3e0a 2020 2020  orConfig\"/>.    \n-00012900: 2020 2020 2020 2020 2020 2020 3c2f 746f              </to\n-00012910: 6f6c 3a61 6e6e 6f74 6174 696f 6e3e 0a20  ol:annotation>. \n-00012920: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00012930: 3a61 7070 696e 666f 3e0a 2020 2020 2020  :appinfo>.      \n-00012940: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-00012950: 6f6e 3e0a 2020 2020 3c2f 7873 643a 656c  on>.    </xsd:el\n-00012960: 656d 656e 743e 0a0a 2020 2020 3c78 7364  ement>..    <xsd\n-00012970: 3a65 6c65 6d65 6e74 206e 616d 653d 2270  :element name=\"p\n-00012980: 726f 7669 6465 7222 2074 7970 653d 2270  rovider\" type=\"p\n-00012990: 726f 7669 6465 7254 7970 6522 3e0a 2020  roviderType\">.  \n-000129a0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-000129b0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-000129c0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-000129d0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-000129e0: 4578 706f 7274 2073 6572 7669 6365 2064  Export service d\n-000129f0: 6566 6175 6c74 2063 6f6e 6669 6720 5d5d  efault config ]]\n-00012a00: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-00012a10: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00012a20: 2020 3c78 7364 3a61 7070 696e 666f 3e0a    <xsd:appinfo>.\n-00012a30: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00012a40: 3c74 6f6f 6c3a 616e 6e6f 7461 7469 6f6e  <tool:annotation\n-00012a50: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00012a60: 2020 2020 2020 3c74 6f6f 6c3a 6578 706f        <tool:expo\n-00012a70: 7274 7320 7479 7065 3d22 6f72 672e 6170  rts type=\"org.ap\n-00012a80: 6163 6865 2e64 7562 626f 2e63 6f6e 6669  ache.dubbo.confi\n-00012a90: 672e 5072 6f76 6964 6572 436f 6e66 6967  g.ProviderConfig\n-00012aa0: 222f 3e0a 2020 2020 2020 2020 2020 2020  \"/>.            \n-00012ab0: 2020 2020 3c2f 746f 6f6c 3a61 6e6e 6f74      </tool:annot\n-00012ac0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00012ad0: 2020 203c 2f78 7364 3a61 7070 696e 666f     </xsd:appinfo\n-00012ae0: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-00012af0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00012b00: 3c2f 7873 643a 656c 656d 656e 743e 0a0a  </xsd:element>..\n-00012b10: 2020 2020 3c78 7364 3a65 6c65 6d65 6e74      <xsd:element\n-00012b20: 206e 616d 653d 2263 6f6e 7375 6d65 7222   name=\"consumer\"\n-00012b30: 2074 7970 653d 2263 6f6e 7375 6d65 7254   type=\"consumerT\n-00012b40: 7970 6522 3e0a 2020 2020 2020 2020 3c78  ype\">.        <x\n-00012b50: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00012b60: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00012b70: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-00012b80: 5b43 4441 5441 5b20 5365 7276 6963 6520  [CDATA[ Service \n-00012b90: 7265 6665 7265 6e63 6520 6465 6661 756c  reference defaul\n-00012ba0: 7420 636f 6e66 6967 205d 5d3e 3c2f 7873  t config ]]></xs\n-00012bb0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00012bc0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00012bd0: 643a 6170 7069 6e66 6f3e 0a20 2020 2020  d:appinfo>.     \n-00012be0: 2020 2020 2020 2020 2020 203c 746f 6f6c             <tool\n-00012bf0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00012c00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00012c10: 203c 746f 6f6c 3a65 7870 6f72 7473 2074   <tool:exports t\n-00012c20: 7970 653d 226f 7267 2e61 7061 6368 652e  ype=\"org.apache.\n-00012c30: 6475 6262 6f2e 636f 6e66 6967 2e43 6f6e  dubbo.config.Con\n-00012c40: 7375 6d65 7243 6f6e 6669 6722 2f3e 0a20  sumerConfig\"/>. \n-00012c50: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00012c60: 2f74 6f6f 6c3a 616e 6e6f 7461 7469 6f6e  /tool:annotation\n-00012c70: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-00012c80: 7873 643a 6170 7069 6e66 6f3e 0a20 2020  xsd:appinfo>.   \n-00012c90: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00012ca0: 6174 696f 6e3e 0a20 2020 203c 2f78 7364  ation>.    </xsd\n-00012cb0: 3a65 6c65 6d65 6e74 3e0a 0a20 2020 203c  :element>..    <\n-00012cc0: 7873 643a 656c 656d 656e 7420 6e61 6d65  xsd:element name\n-00012cd0: 3d22 7072 6f74 6f63 6f6c 2220 7479 7065  =\"protocol\" type\n-00012ce0: 3d22 7072 6f74 6f63 6f6c 5479 7065 223e  =\"protocolType\">\n-00012cf0: 0a20 2020 2020 2020 203c 7873 643a 616e  .        <xsd:an\n-00012d00: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00012d10: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00012d20: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00012d30: 415b 2053 6572 7669 6365 2070 726f 7669  A[ Service provi\n-00012d40: 6465 7220 636f 6e66 6967 205d 5d3e 3c2f  der config ]]></\n-00012d50: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00012d60: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-00012d70: 7873 643a 6170 7069 6e66 6f3e 0a20 2020  xsd:appinfo>.   \n-00012d80: 2020 2020 2020 2020 2020 2020 203c 746f               <to\n-00012d90: 6f6c 3a61 6e6e 6f74 6174 696f 6e3e 0a20  ol:annotation>. \n-00012da0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00012db0: 2020 203c 746f 6f6c 3a65 7870 6f72 7473     <tool:exports\n-00012dc0: 2074 7970 653d 226f 7267 2e61 7061 6368   type=\"org.apach\n-00012dd0: 652e 6475 6262 6f2e 636f 6e66 6967 2e50  e.dubbo.config.P\n-00012de0: 726f 746f 636f 6c43 6f6e 6669 6722 2f3e  rotocolConfig\"/>\n-00012df0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00012e00: 203c 2f74 6f6f 6c3a 616e 6e6f 7461 7469   </tool:annotati\n-00012e10: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00012e20: 3c2f 7873 643a 6170 7069 6e66 6f3e 0a20  </xsd:appinfo>. \n-00012e30: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-00012e40: 6f74 6174 696f 6e3e 0a20 2020 203c 2f78  otation>.    </x\n-00012e50: 7364 3a65 6c65 6d65 6e74 3e0a 0a20 2020  sd:element>..   \n-00012e60: 203c 7873 643a 656c 656d 656e 7420 6e61   <xsd:element na\n-00012e70: 6d65 3d22 7365 7276 6963 6522 2074 7970  me=\"service\" typ\n-00012e80: 653d 2273 6572 7669 6365 5479 7065 223e  e=\"serviceType\">\n-00012e90: 0a20 2020 2020 2020 203c 7873 643a 616e  .        <xsd:an\n-00012ea0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00012eb0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00012ec0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00012ed0: 415b 2045 7870 6f72 7420 7365 7276 6963  A[ Export servic\n-00012ee0: 6520 636f 6e66 6967 205d 5d3e 3c2f 7873  e config ]]></xs\n-00012ef0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00012f00: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00012f10: 643a 6170 7069 6e66 6f3e 0a20 2020 2020  d:appinfo>.     \n-00012f20: 2020 2020 2020 2020 2020 203c 746f 6f6c             <tool\n-00012f30: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00012f40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00012f50: 203c 746f 6f6c 3a65 7870 6f72 7473 2074   <tool:exports t\n-00012f60: 7970 653d 226f 7267 2e61 7061 6368 652e  ype=\"org.apache.\n-00012f70: 6475 6262 6f2e 636f 6e66 6967 2e53 6572  dubbo.config.Ser\n-00012f80: 7669 6365 436f 6e66 6967 4261 7365 222f  viceConfigBase\"/\n-00012f90: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00012fa0: 2020 3c2f 746f 6f6c 3a61 6e6e 6f74 6174    </tool:annotat\n-00012fb0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00012fc0: 203c 2f78 7364 3a61 7070 696e 666f 3e0a   </xsd:appinfo>.\n-00012fd0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-00012fe0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 3c2f  notation>.    </\n-00012ff0: 7873 643a 656c 656d 656e 743e 0a0a 2020  xsd:element>..  \n-00013000: 2020 3c78 7364 3a65 6c65 6d65 6e74 206e    <xsd:element n\n-00013010: 616d 653d 2272 6566 6572 656e 6365 2220  ame=\"reference\" \n-00013020: 7479 7065 3d22 7265 6665 7265 6e63 6554  type=\"referenceT\n-00013030: 7970 6522 3e0a 2020 2020 2020 2020 3c78  ype\">.        <x\n-00013040: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00013050: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00013060: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-00013070: 5b43 4441 5441 5b20 5265 6665 7265 6e63  [CDATA[ Referenc\n-00013080: 6520 7365 7276 6963 6520 636f 6e66 6967  e service config\n-00013090: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-000130a0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-000130b0: 2020 2020 203c 7873 643a 6170 7069 6e66       <xsd:appinf\n-000130c0: 6f3e 0a20 2020 2020 2020 2020 2020 2020  o>.             \n-000130d0: 2020 203c 746f 6f6c 3a61 6e6e 6f74 6174     <tool:annotat\n-000130e0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-000130f0: 2020 2020 2020 2020 203c 746f 6f6c 3a65           <tool:e\n-00013100: 7870 6f72 7473 2074 7970 653d 226f 7267  xports type=\"org\n-00013110: 2e61 7061 6368 652e 6475 6262 6f2e 636f  .apache.dubbo.co\n-00013120: 6e66 6967 2e52 6566 6572 656e 6365 436f  nfig.ReferenceCo\n-00013130: 6e66 6967 4261 7365 222f 3e0a 2020 2020  nfigBase\"/>.    \n-00013140: 2020 2020 2020 2020 2020 2020 3c2f 746f              </to\n-00013150: 6f6c 3a61 6e6e 6f74 6174 696f 6e3e 0a20  ol:annotation>. \n-00013160: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00013170: 3a61 7070 696e 666f 3e0a 2020 2020 2020  :appinfo>.      \n-00013180: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-00013190: 6f6e 3e0a 2020 2020 3c2f 7873 643a 656c  on>.    </xsd:el\n-000131a0: 656d 656e 743e 0a0a 2020 2020 3c78 7364  ement>..    <xsd\n-000131b0: 3a65 6c65 6d65 6e74 206e 616d 653d 226d  :element name=\"m\n-000131c0: 6574 686f 6422 2074 7970 653d 226d 6574  ethod\" type=\"met\n-000131d0: 686f 6454 7970 6522 3e0a 2020 2020 2020  hodType\">.      \n-000131e0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-000131f0: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-00013200: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00013210: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-00013220: 7365 7276 6963 6520 6d65 7468 6f64 2063  service method c\n-00013230: 6f6e 6669 6720 5d5d 3e3c 2f78 7364 3a64  onfig ]]></xsd:d\n-00013240: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00013250: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00013260: 7070 696e 666f 3e0a 2020 2020 2020 2020  ppinfo>.        \n-00013270: 2020 2020 2020 2020 3c74 6f6f 6c3a 616e          <tool:an\n-00013280: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00013290: 2020 2020 2020 2020 2020 2020 2020 3c74                <t\n-000132a0: 6f6f 6c3a 6578 706f 7274 7320 7479 7065  ool:exports type\n-000132b0: 3d22 6f72 672e 6170 6163 6865 2e64 7562  =\"org.apache.dub\n-000132c0: 626f 2e63 6f6e 6669 672e 4d65 7468 6f64  bo.config.Method\n-000132d0: 436f 6e66 6967 222f 3e0a 2020 2020 2020  Config\"/>.      \n-000132e0: 2020 2020 2020 2020 2020 3c2f 746f 6f6c            </tool\n-000132f0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00013300: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00013310: 7070 696e 666f 3e0a 2020 2020 2020 2020  ppinfo>.        \n-00013320: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00013330: 3e0a 2020 2020 3c2f 7873 643a 656c 656d  >.    </xsd:elem\n-00013340: 656e 743e 0a0a 2020 2020 3c78 7364 3a65  ent>..    <xsd:e\n-00013350: 6c65 6d65 6e74 206e 616d 653d 2261 7267  lement name=\"arg\n-00013360: 756d 656e 7422 2074 7970 653d 2261 7267  ument\" type=\"arg\n-00013370: 756d 656e 7454 7970 6522 3e0a 2020 2020  umentType\">.    \n-00013380: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-00013390: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-000133a0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-000133b0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-000133c0: 6520 7365 7276 6963 6520 6172 6775 6d65  e service argume\n-000133d0: 6e74 2063 6f6e 6669 6720 5d5d 3e3c 2f78  nt config ]]></x\n-000133e0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-000133f0: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-00013400: 7364 3a61 7070 696e 666f 3e0a 2020 2020  sd:appinfo>.    \n-00013410: 2020 2020 2020 2020 2020 2020 3c74 6f6f              <too\n-00013420: 6c3a 616e 6e6f 7461 7469 6f6e 3e0a 2020  l:annotation>.  \n-00013430: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00013440: 2020 3c74 6f6f 6c3a 6578 706f 7274 7320    <tool:exports \n-00013450: 7479 7065 3d22 6f72 672e 6170 6163 6865  type=\"org.apache\n-00013460: 2e64 7562 626f 2e63 6f6e 6669 672e 4172  .dubbo.config.Ar\n-00013470: 6775 6d65 6e74 436f 6e66 6967 222f 3e0a  gumentConfig\"/>.\n-00013480: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00013490: 3c2f 746f 6f6c 3a61 6e6e 6f74 6174 696f  </tool:annotatio\n-000134a0: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-000134b0: 2f78 7364 3a61 7070 696e 666f 3e0a 2020  /xsd:appinfo>.  \n-000134c0: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-000134d0: 7461 7469 6f6e 3e0a 2020 2020 3c2f 7873  tation>.    </xs\n-000134e0: 643a 656c 656d 656e 743e 0a0a 2020 2020  d:element>..    \n-000134f0: 3c78 7364 3a65 6c65 6d65 6e74 206e 616d  <xsd:element nam\n-00013500: 653d 2270 6172 616d 6574 6572 2220 7479  e=\"parameter\" ty\n-00013510: 7065 3d22 7061 7261 6d65 7465 7254 7970  pe=\"parameterTyp\n-00013520: 6522 3e0a 2020 2020 2020 2020 3c78 7364  e\">.        <xsd\n-00013530: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00013540: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00013550: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00013560: 4441 5441 5b20 5468 6520 7365 7276 6963  DATA[ The servic\n-00013570: 6520 7572 6c20 7061 7261 6d65 7465 7220  e url parameter \n-00013580: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00013590: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-000135a0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-000135b0: 3e0a 2020 2020 3c2f 7873 643a 656c 656d  >.    </xsd:elem\n-000135c0: 656e 743e 0a0a 2020 2020 3c78 7364 3a65  ent>..    <xsd:e\n-000135d0: 6c65 6d65 6e74 206e 616d 653d 226d 6574  lement name=\"met\n-000135e0: 7269 6373 2220 7479 7065 3d22 6d65 7472  rics\" type=\"metr\n-000135f0: 6963 7354 7970 6522 3e0a 2020 2020 2020  icsType\">.      \n-00013600: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-00013610: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-00013620: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00013630: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-00013640: 6d65 7472 6963 7320 7365 7276 6963 6520  metrics service \n-00013650: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00013660: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00013670: 2020 2020 3c78 7364 3a61 7070 696e 666f      <xsd:appinfo\n-00013680: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00013690: 2020 3c74 6f6f 6c3a 616e 6e6f 7461 7469    <tool:annotati\n-000136a0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-000136b0: 2020 2020 2020 2020 3c74 6f6f 6c3a 6578          <tool:ex\n-000136c0: 706f 7274 7320 7479 7065 3d22 6f72 672e  ports type=\"org.\n-000136d0: 6170 6163 6865 2e64 7562 626f 2e63 6f6e  apache.dubbo.con\n-000136e0: 6669 672e 4d65 7472 6963 7343 6f6e 6669  fig.MetricsConfi\n-000136f0: 6722 2f3e 0a20 2020 2020 2020 2020 2020  g\"/>.           \n-00013700: 2020 2020 203c 2f74 6f6f 6c3a 616e 6e6f       </tool:anno\n-00013710: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00013720: 2020 2020 3c2f 7873 643a 6170 7069 6e66      </xsd:appinf\n-00013730: 6f3e 0a20 2020 2020 2020 203c 2f78 7364  o>.        </xsd\n-00013740: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00013750: 203c 2f78 7364 3a65 6c65 6d65 6e74 3e0a   </xsd:element>.\n-00013760: 0a3c 2f78 7364 3a73 6368 656d 613e 0a    .</xsd:schema>.\n+0000fd30: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+0000fd40: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000fd50: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+0000fd60: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+0000fd70: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+0000fd80: 7269 6275 7465 206e 616d 653d 2270 6179  ribute name=\"pay\n+0000fd90: 6c6f 6164 2220 7479 7065 3d22 7873 643a  load\" type=\"xsd:\n+0000fda0: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+0000fdb0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+0000fdc0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+0000fdd0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000fde0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+0000fdf0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+0000fe00: 4154 415b 2054 6865 206d 6178 2070 6179  ATA[ The max pay\n+0000fe10: 6c6f 6164 2e20 5d5d 3e3c 2f78 7364 3a64  load. ]]></xsd:d\n+0000fe20: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+0000fe30: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000fe40: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+0000fe50: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000fe60: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+0000fe70: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+0000fe80: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+0000fe90: 7269 6275 7465 206e 616d 653d 2262 7566  ribute name=\"buf\n+0000fea0: 6665 7222 2074 7970 653d 2278 7364 3a73  fer\" type=\"xsd:s\n+0000feb0: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+0000fec0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000fed0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+0000fee0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000fef0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+0000ff00: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+0000ff10: 5441 5b20 5468 6520 6275 6666 6572 2073  TA[ The buffer s\n+0000ff20: 697a 652e 205d 5d3e 3c2f 7873 643a 646f  ize. ]]></xsd:do\n+0000ff30: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+0000ff40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000ff50: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+0000ff60: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000ff70: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+0000ff80: 6275 7465 3e0d 0a20 2020 2020 2020 2020  bute>..         \n+0000ff90: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+0000ffa0: 6962 7574 6520 6e61 6d65 3d22 7472 616e  ibute name=\"tran\n+0000ffb0: 7370 6f72 7465 7222 2074 7970 653d 2278  sporter\" type=\"x\n+0000ffc0: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+0000ffd0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000ffe0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+0000fff0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00010000: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00010010: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00010020: 5b43 4441 5441 5b20 5468 6520 7072 6f74  [CDATA[ The prot\n+00010030: 6f63 6f6c 2074 7261 6e73 706f 7274 6572  ocol transporter\n+00010040: 2074 7970 652e 205d 5d3e 3c2f 7873 643a   type. ]]></xsd:\n+00010050: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00010060: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010070: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+00010080: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00010090: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+000100a0: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+000100b0: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n+000100c0: 7472 6962 7574 6520 6e61 6d65 3d22 6578  tribute name=\"ex\n+000100d0: 6368 616e 6765 7222 2074 7970 653d 2278  changer\" type=\"x\n+000100e0: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+000100f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010100: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+00010110: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00010120: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00010130: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00010140: 5b43 4441 5441 5b20 5468 6520 7072 6f74  [CDATA[ The prot\n+00010150: 6f63 6f6c 2065 7863 6861 6e67 6572 2074  ocol exchanger t\n+00010160: 7970 652e 205d 5d3e 3c2f 7873 643a 646f  ype. ]]></xsd:do\n+00010170: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+00010180: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010190: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+000101a0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+000101b0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+000101c0: 6275 7465 3e0d 0a20 2020 2020 2020 2020  bute>..         \n+000101d0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+000101e0: 6962 7574 6520 6e61 6d65 3d22 6469 7370  ibute name=\"disp\n+000101f0: 6174 6865 7222 2074 7970 653d 2278 7364  ather\" type=\"xsd\n+00010200: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+00010210: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00010220: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00010230: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00010240: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00010250: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+00010260: 4441 5441 5b20 4465 7072 6563 6174 6564  DATA[ Deprecated\n+00010270: 2e20 7265 706c 6163 6520 746f 2022 6469  . replace to \"di\n+00010280: 7370 6174 6368 6572 222e 205d 5d3e 3c2f  spatcher\". ]]></\n+00010290: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+000102a0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000102b0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+000102c0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+000102d0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+000102e0: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+000102f0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00010300: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00010310: 3d22 6469 7370 6174 6368 6572 2220 7479  =\"dispatcher\" ty\n+00010320: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+00010330: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00010340: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00010350: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00010360: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010370: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00010380: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+00010390: 2070 726f 746f 636f 6c20 6469 7370 6174   protocol dispat\n+000103a0: 6368 6572 2074 7970 652e 205d 5d3e 3c2f  cher type. ]]></\n+000103b0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+000103c0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000103d0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+000103e0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+000103f0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00010400: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00010410: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00010420: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00010430: 3d22 6e65 7477 6f72 6b65 7222 2074 7970  =\"networker\" typ\n+00010440: 653d 2278 7364 3a73 7472 696e 6722 3e0d  e=\"xsd:string\">.\n+00010450: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00010460: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+00010470: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00010480: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00010490: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+000104a0: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n+000104b0: 7072 6f74 6f63 6f6c 2022 6e65 7477 6f72  protocol \"networ\n+000104c0: 6b65 7222 2074 7970 652e 205d 5d3e 3c2f  ker\" type. ]]></\n+000104d0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+000104e0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000104f0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00010500: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00010510: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00010520: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00010530: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00010540: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00010550: 3d22 7365 7276 6572 2220 7479 7065 3d22  =\"server\" type=\"\n+00010560: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+00010570: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010580: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00010590: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000105a0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000105b0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+000105c0: 215b 4344 4154 415b 2054 6865 2070 726f  ![CDATA[ The pro\n+000105d0: 746f 636f 6c20 7365 7276 6572 2074 7970  tocol server typ\n+000105e0: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n+000105f0: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00010600: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010610: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+00010620: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00010630: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00010640: 7465 3e0d 0a20 2020 2020 2020 2020 2020  te>..           \n+00010650: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+00010660: 7574 6520 6e61 6d65 3d22 636c 6965 6e74  ute name=\"client\n+00010670: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+00010680: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+00010690: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+000106a0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+000106b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000106c0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+000106d0: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+000106e0: 2054 6865 2070 726f 746f 636f 6c20 636c   The protocol cl\n+000106f0: 6965 6e74 2074 7970 652e 205d 5d3e 3c2f  ient type. ]]></\n+00010700: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00010710: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00010720: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00010730: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00010740: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00010750: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00010760: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00010770: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00010780: 3d22 7465 6c6e 6574 2220 7479 7065 3d22  =\"telnet\" type=\"\n+00010790: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+000107a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000107b0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+000107c0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000107d0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000107e0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+000107f0: 215b 4344 4154 415b 2054 6865 2070 726f  ![CDATA[ The pro\n+00010800: 746f 636f 6c20 7573 6520 7465 6c6e 6574  tocol use telnet\n+00010810: 2063 6f6d 6d61 6e64 732e 205d 5d3e 3c2f   commands. ]]></\n+00010820: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00010830: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00010840: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00010850: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00010860: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00010870: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00010880: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00010890: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+000108a0: 3d22 7072 6f6d 7074 2220 7479 7065 3d22  =\"prompt\" type=\"\n+000108b0: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+000108c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000108d0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+000108e0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000108f0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00010900: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+00010910: 215b 4344 4154 415b 2054 6865 2070 726f  ![CDATA[ The pro\n+00010920: 746f 636f 6c20 7465 6c6e 6574 2070 726f  tocol telnet pro\n+00010930: 6d70 742e 205d 5d3e 3c2f 7873 643a 646f  mpt. ]]></xsd:do\n+00010940: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+00010950: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010960: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+00010970: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00010980: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+00010990: 6275 7465 3e0d 0a20 2020 2020 2020 2020  bute>..         \n+000109a0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+000109b0: 6962 7574 6520 6e61 6d65 3d22 7374 6174  ibute name=\"stat\n+000109c0: 7573 2220 7479 7065 3d22 7873 643a 7374  us\" type=\"xsd:st\n+000109d0: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+000109e0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000109f0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00010a00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010a10: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00010a20: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00010a30: 415b 2054 6865 2070 726f 746f 636f 6c20  A[ The protocol \n+00010a40: 6368 6563 6b20 7374 6174 7573 2e20 5d5d  check status. ]]\n+00010a50: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+00010a60: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00010a70: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00010a80: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00010a90: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+00010aa0: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+00010ab0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010ac0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+00010ad0: 616d 653d 2270 6174 6822 2074 7970 653d  ame=\"path\" type=\n+00010ae0: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+00010af0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010b00: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00010b10: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00010b20: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00010b30: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00010b40: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00010b50: 2020 2020 2020 2020 2020 2020 2020 3c21                <!\n+00010b60: 5b43 4441 5441 5b20 5468 6520 7072 6f74  [CDATA[ The prot\n+00010b70: 6f63 6f6c 2063 6f6e 7465 7874 2070 6174  ocol context pat\n+00010b80: 682e 2072 6570 6c61 6365 2074 6f20 2263  h. replace to \"c\n+00010b90: 6f6e 7465 7874 7061 7468 222e 205d 5d3e  ontextpath\". ]]>\n+00010ba0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+00010bb0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00010bc0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00010bd0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00010be0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+00010bf0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+00010c00: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00010c10: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00010c20: 6d65 3d22 636f 6e74 6578 7470 6174 6822  me=\"contextpath\"\n+00010c30: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+00010c40: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+00010c50: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+00010c60: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00010c70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010c80: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+00010c90: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+00010ca0: 5468 6520 7072 6f74 6f63 6f6c 2063 6f6e  The protocol con\n+00010cb0: 7465 7874 2070 6174 682e 205d 5d3e 3c2f  text path. ]]></\n+00010cc0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00010cd0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00010ce0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00010cf0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00010d00: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00010d10: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00010d20: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00010d30: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00010d40: 3d22 7761 6974 2220 7479 7065 3d22 7873  =\"wait\" type=\"xs\n+00010d50: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+00010d60: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010d70: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+00010d80: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00010d90: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00010da0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00010db0: 4344 4154 415b 2054 6865 2070 726f 7669  CDATA[ The provi\n+00010dc0: 6465 7220 7368 7574 646f 776e 2077 6169  der shutdown wai\n+00010dd0: 7420 7469 6d65 2e20 5d5d 3e3c 2f78 7364  t time. ]]></xsd\n+00010de0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00010df0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00010e00: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00010e10: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00010e20: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+00010e30: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+00010e40: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00010e50: 7474 7269 6275 7465 206e 616d 653d 2264  ttribute name=\"d\n+00010e60: 6566 6175 6c74 2220 7479 7065 3d22 7873  efault\" type=\"xs\n+00010e70: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+00010e80: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010e90: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+00010ea0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00010eb0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00010ec0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00010ed0: 4344 4154 415b 2049 7320 6465 6661 756c  CDATA[ Is defaul\n+00010ee0: 742e 205d 5d3e 3c2f 7873 643a 646f 6375  t. ]]></xsd:docu\n+00010ef0: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00010f00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010f10: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+00010f20: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00010f30: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00010f40: 7465 3e0d 0a20 2020 2020 2020 2020 2020  te>..           \n+00010f50: 2020 2020 203c 7873 643a 616e 7941 7474       <xsd:anyAtt\n+00010f60: 7269 6275 7465 206e 616d 6573 7061 6365  ribute namespace\n+00010f70: 3d22 2323 6f74 6865 7222 2070 726f 6365  =\"##other\" proce\n+00010f80: 7373 436f 6e74 656e 7473 3d22 6c61 7822  ssContents=\"lax\"\n+00010f90: 2f3e 0d0a 2020 2020 2020 2020 2020 2020  />..            \n+00010fa0: 3c2f 7873 643a 6578 7465 6e73 696f 6e3e  </xsd:extension>\n+00010fb0: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+00010fc0: 636f 6d70 6c65 7843 6f6e 7465 6e74 3e0d  complexContent>.\n+00010fd0: 0a20 2020 203c 2f78 7364 3a63 6f6d 706c  .    </xsd:compl\n+00010fe0: 6578 5479 7065 3e0d 0a0d 0a20 2020 203c  exType>....    <\n+00010ff0: 7873 643a 636f 6d70 6c65 7854 7970 6520  xsd:complexType \n+00011000: 6e61 6d65 3d22 7365 7276 6963 6554 7970  name=\"serviceTyp\n+00011010: 6522 3e0d 0a20 2020 2020 2020 203c 7873  e\">..        <xs\n+00011020: 643a 636f 6d70 6c65 7843 6f6e 7465 6e74  d:complexContent\n+00011030: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00011040: 7873 643a 6578 7465 6e73 696f 6e20 6261  xsd:extension ba\n+00011050: 7365 3d22 6162 7374 7261 6374 5365 7276  se=\"abstractServ\n+00011060: 6963 6554 7970 6522 3e0d 0a20 2020 2020  iceType\">..     \n+00011070: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00011080: 6368 6f69 6365 206d 696e 4f63 6375 7273  choice minOccurs\n+00011090: 3d22 3022 206d 6178 4f63 6375 7273 3d22  =\"0\" maxOccurs=\"\n+000110a0: 756e 626f 756e 6465 6422 3e0d 0a20 2020  unbounded\">..   \n+000110b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000110c0: 203c 7873 643a 656c 656d 656e 7420 7265   <xsd:element re\n+000110d0: 663d 226d 6574 686f 6422 206d 696e 4f63  f=\"method\" minOc\n+000110e0: 6375 7273 3d22 3022 206d 6178 4f63 6375  curs=\"0\" maxOccu\n+000110f0: 7273 3d22 756e 626f 756e 6465 6422 2f3e  rs=\"unbounded\"/>\n+00011100: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00011110: 2020 2020 2020 3c78 7364 3a65 6c65 6d65        <xsd:eleme\n+00011120: 6e74 2072 6566 3d22 7061 7261 6d65 7465  nt ref=\"paramete\n+00011130: 7222 206d 696e 4f63 6375 7273 3d22 3022  r\" minOccurs=\"0\"\n+00011140: 206d 6178 4f63 6375 7273 3d22 756e 626f   maxOccurs=\"unbo\n+00011150: 756e 6465 6422 2f3e 0d0a 2020 2020 2020  unded\"/>..      \n+00011160: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00011170: 7364 3a65 6c65 6d65 6e74 2072 6566 3d22  sd:element ref=\"\n+00011180: 6265 616e 733a 7072 6f70 6572 7479 2220  beans:property\" \n+00011190: 6d69 6e4f 6363 7572 733d 2230 2220 6d61  minOccurs=\"0\" ma\n+000111a0: 784f 6363 7572 733d 2275 6e62 6f75 6e64  xOccurs=\"unbound\n+000111b0: 6564 222f 3e0d 0a20 2020 2020 2020 2020  ed\"/>..         \n+000111c0: 2020 2020 2020 203c 2f78 7364 3a63 686f         </xsd:cho\n+000111d0: 6963 653e 0d0a 2020 2020 2020 2020 2020  ice>..          \n+000111e0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+000111f0: 6275 7465 206e 616d 653d 2269 6e74 6572  bute name=\"inter\n+00011200: 6661 6365 2220 7479 7065 3d22 7873 643a  face\" type=\"xsd:\n+00011210: 746f 6b65 6e22 2075 7365 3d22 7265 7175  token\" use=\"requ\n+00011220: 6972 6564 223e 0d0a 2020 2020 2020 2020  ired\">..        \n+00011230: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00011240: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00011250: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00011260: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00011270: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00011280: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00011290: 2020 2020 2020 203c 215b 4344 4154 415b         <![CDATA[\n+000112a0: 2044 6566 696e 6573 2074 6865 2069 6e74   Defines the int\n+000112b0: 6572 6661 6365 2074 6f20 6164 7665 7274  erface to advert\n+000112c0: 6973 6520 666f 7220 7468 6973 2073 6572  ise for this ser\n+000112d0: 7669 6365 2069 6e20 7468 6520 7365 7276  vice in the serv\n+000112e0: 6963 6520 7265 6769 7374 7279 2e20 5d5d  ice registry. ]]\n+000112f0: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+00011300: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00011310: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00011320: 7873 643a 6170 7069 6e66 6f3e 0d0a 2020  xsd:appinfo>..  \n+00011330: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00011340: 2020 2020 2020 2020 2020 3c74 6f6f 6c3a            <tool:\n+00011350: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00011360: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00011370: 2020 2020 2020 2020 2020 2020 203c 746f               <to\n+00011380: 6f6c 3a65 7870 6563 7465 642d 7479 7065  ol:expected-type\n+00011390: 2074 7970 653d 226a 6176 612e 6c61 6e67   type=\"java.lang\n+000113a0: 2e43 6c61 7373 222f 3e0d 0a20 2020 2020  .Class\"/>..     \n+000113b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000113c0: 2020 2020 2020 203c 2f74 6f6f 6c3a 616e         </tool:an\n+000113d0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+000113e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000113f0: 2020 203c 2f78 7364 3a61 7070 696e 666f     </xsd:appinfo\n+00011400: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00011410: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00011420: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00011430: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00011440: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+00011450: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00011460: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00011470: 2272 6566 2220 7479 7065 3d22 7873 643a  \"ref\" type=\"xsd:\n+00011480: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+00011490: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+000114a0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+000114b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000114c0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+000114d0: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+000114e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000114f0: 2020 2020 2020 2020 203c 215b 4344 4154           <![CDAT\n+00011500: 415b 2054 6865 2073 6572 7669 6365 2069  A[ The service i\n+00011510: 6d70 6c65 6d65 6e74 6174 696f 6e20 696e  mplementation in\n+00011520: 7374 616e 6365 2062 6561 6e20 6964 2e20  stance bean id. \n+00011530: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+00011540: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00011550: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+00011560: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00011570: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00011580: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00011590: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+000115a0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+000115b0: 206e 616d 653d 2263 6c61 7373 2220 7479   name=\"class\" ty\n+000115c0: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+000115d0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+000115e0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+000115f0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00011600: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00011610: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00011620: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+00011630: 2073 6572 7669 6365 2069 6d70 6c65 6d65   service impleme\n+00011640: 6e74 6174 696f 6e20 636c 6173 7320 6e61  ntation class na\n+00011650: 6d65 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  me. ]]></xsd:doc\n+00011660: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+00011670: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00011680: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00011690: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000116a0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+000116b0: 7574 653e 0d0a 2020 2020 2020 2020 2020  ute>..          \n+000116c0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+000116d0: 6275 7465 206e 616d 653d 2270 6174 6822  bute name=\"path\"\n+000116e0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+000116f0: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+00011700: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+00011710: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00011720: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00011730: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+00011740: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+00011750: 5468 6520 7365 7276 6963 6520 7061 7468  The service path\n+00011760: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00011770: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00011780: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00011790: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+000117a0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+000117b0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+000117c0: 653e 0d0a 2020 2020 2020 2020 2020 2020  e>..            \n+000117d0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+000117e0: 7465 206e 616d 653d 2270 726f 7669 6465  te name=\"provide\n+000117f0: 7222 2074 7970 653d 2278 7364 3a73 7472  r\" type=\"xsd:str\n+00011800: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+00011810: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00011820: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00011830: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00011840: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+00011850: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+00011860: 5b20 4465 7072 6563 6174 6564 2e20 5265  [ Deprecated. Re\n+00011870: 706c 6163 6520 746f 2070 726f 746f 636f  place to protoco\n+00011880: 6c2e 205d 5d3e 3c2f 7873 643a 646f 6375  l. ]]></xsd:docu\n+00011890: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+000118a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000118b0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+000118c0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+000118d0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+000118e0: 7465 3e0d 0a20 2020 2020 2020 2020 2020  te>..           \n+000118f0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+00011900: 7574 6520 6e61 6d65 3d22 6765 6e65 7269  ute name=\"generi\n+00011910: 6322 2074 7970 653d 2278 7364 3a73 7472  c\" type=\"xsd:str\n+00011920: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+00011930: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00011940: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00011950: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00011960: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+00011970: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+00011980: 5b20 4765 6e65 7269 6320 7365 7276 6963  [ Generic servic\n+00011990: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n+000119a0: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+000119b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000119c0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+000119d0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+000119e0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+000119f0: 7465 3e0d 0a20 2020 2020 2020 2020 2020  te>..           \n+00011a00: 2020 2020 203c 7873 643a 616e 7941 7474       <xsd:anyAtt\n+00011a10: 7269 6275 7465 206e 616d 6573 7061 6365  ribute namespace\n+00011a20: 3d22 2323 6f74 6865 7222 2070 726f 6365  =\"##other\" proce\n+00011a30: 7373 436f 6e74 656e 7473 3d22 6c61 7822  ssContents=\"lax\"\n+00011a40: 2f3e 0d0a 2020 2020 2020 2020 2020 2020  />..            \n+00011a50: 3c2f 7873 643a 6578 7465 6e73 696f 6e3e  </xsd:extension>\n+00011a60: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+00011a70: 636f 6d70 6c65 7843 6f6e 7465 6e74 3e0d  complexContent>.\n+00011a80: 0a20 2020 203c 2f78 7364 3a63 6f6d 706c  .    </xsd:compl\n+00011a90: 6578 5479 7065 3e0d 0a0d 0a20 2020 203c  exType>....    <\n+00011aa0: 7873 643a 636f 6d70 6c65 7854 7970 6520  xsd:complexType \n+00011ab0: 6e61 6d65 3d22 7373 6c54 7970 6522 3e0d  name=\"sslType\">.\n+00011ac0: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n+00011ad0: 7472 6962 7574 6520 6e61 6d65 3d22 6964  tribute name=\"id\n+00011ae0: 2220 7479 7065 3d22 7873 643a 4944 223e  \" type=\"xsd:ID\">\n+00011af0: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+00011b00: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00011b10: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00011b20: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00011b30: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+00011b40: 2075 6e69 7175 6520 6964 656e 7469 6669   unique identifi\n+00011b50: 6572 2066 6f72 2061 2062 6561 6e2e 205d  er for a bean. ]\n+00011b60: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+00011b70: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00011b80: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+00011b90: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+00011ba0: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+00011bb0: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n+00011bc0: 7472 6962 7574 6520 6e61 6d65 3d22 7365  tribute name=\"se\n+00011bd0: 7276 6572 2d6b 6579 2d63 6572 742d 6368  rver-key-cert-ch\n+00011be0: 6169 6e2d 7061 7468 2220 7479 7065 3d22  ain-path\" type=\"\n+00011bf0: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+00011c00: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00011c10: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00011c20: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00011c30: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+00011c40: 215b 4344 4154 415b 2054 6865 2073 6572  ![CDATA[ The ser\n+00011c50: 7665 7220 6365 7274 2e20 5d5d 3e3c 2f78  ver cert. ]]></x\n+00011c60: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00011c70: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00011c80: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00011c90: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+00011ca0: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+00011cb0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+00011cc0: 7465 206e 616d 653d 2273 6572 7665 722d  te name=\"server-\n+00011cd0: 7072 6976 6174 652d 6b65 792d 7061 7468  private-key-path\n+00011ce0: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+00011cf0: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+00011d00: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00011d10: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00011d20: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00011d30: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+00011d40: 2054 6865 2073 6572 7665 7220 6b65 792e   The server key.\n+00011d50: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00011d60: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00011d70: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+00011d80: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00011d90: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+00011da0: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+00011db0: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+00011dc0: 7365 7276 6572 2d6b 6579 2d70 6173 7377  server-key-passw\n+00011dd0: 6f72 6422 2074 7970 653d 2278 7364 3a73  ord\" type=\"xsd:s\n+00011de0: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+00011df0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+00011e00: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00011e10: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+00011e20: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+00011e30: 5441 5b20 5468 6520 7365 7276 6572 206b  TA[ The server k\n+00011e40: 6579 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ey. ]]></xsd:doc\n+00011e50: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+00011e60: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+00011e70: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00011e80: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+00011e90: 7574 653e 0d0a 2020 2020 2020 2020 3c78  ute>..        <x\n+00011ea0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+00011eb0: 653d 2273 6572 7665 722d 7472 7573 742d  e=\"server-trust-\n+00011ec0: 6365 7274 2d63 6f6c 6c65 6374 696f 6e2d  cert-collection-\n+00011ed0: 7061 7468 2220 7479 7065 3d22 7873 643a  path\" type=\"xsd:\n+00011ee0: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+00011ef0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00011f00: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00011f10: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00011f20: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00011f30: 4154 415b 2054 6865 2074 7275 7374 6564  ATA[ The trusted\n+00011f40: 2073 6572 7665 7220 6365 7274 2e20 5d5d   server cert. ]]\n+00011f50: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+00011f60: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00011f70: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+00011f80: 696f 6e3e 0d0a 2020 2020 2020 2020 3c2f  ion>..        </\n+00011f90: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+00011fa0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+00011fb0: 7269 6275 7465 206e 616d 653d 2263 6c69  ribute name=\"cli\n+00011fc0: 656e 742d 6b65 792d 6365 7274 2d63 6861  ent-key-cert-cha\n+00011fd0: 696e 2d70 6174 6822 2074 7970 653d 2278  in-path\" type=\"x\n+00011fe0: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+00011ff0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+00012000: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00012010: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00012020: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00012030: 5b43 4441 5441 5b20 5468 6520 636c 6965  [CDATA[ The clie\n+00012040: 6e74 2063 6572 742e 205d 5d3e 3c2f 7873  nt cert. ]]></xs\n+00012050: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00012060: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+00012070: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00012080: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+00012090: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+000120a0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+000120b0: 6520 6e61 6d65 3d22 636c 6965 6e74 2d70  e name=\"client-p\n+000120c0: 7269 7661 7465 2d6b 6579 2d70 6174 6822  rivate-key-path\"\n+000120d0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+000120e0: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+000120f0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+00012100: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00012110: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+00012120: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+00012130: 5468 6520 636c 6965 6e74 206b 6579 2e20  The client key. \n+00012140: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+00012150: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00012160: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00012170: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00012180: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00012190: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+000121a0: 7474 7269 6275 7465 206e 616d 653d 2263  ttribute name=\"c\n+000121b0: 6c69 656e 742d 6b65 792d 7061 7373 776f  lient-key-passwo\n+000121c0: 7264 2220 7479 7065 3d22 7873 643a 7374  rd\" type=\"xsd:st\n+000121d0: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+000121e0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+000121f0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00012200: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00012210: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00012220: 415b 2054 6865 2063 6c69 656e 7420 6b65  A[ The client ke\n+00012230: 7920 7077 642e 205d 5d3e 3c2f 7873 643a  y pwd. ]]></xsd:\n+00012240: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00012250: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00012260: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00012270: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+00012280: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+00012290: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+000122a0: 6e61 6d65 3d22 636c 6965 6e74 2d74 7275  name=\"client-tru\n+000122b0: 7374 2d63 6572 742d 636f 6c6c 6563 7469  st-cert-collecti\n+000122c0: 6f6e 2d70 6174 6822 2074 7970 653d 2278  on-path\" type=\"x\n+000122d0: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+000122e0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+000122f0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00012300: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00012310: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00012320: 5b43 4441 5441 5b20 5468 6520 7472 7573  [CDATA[ The trus\n+00012330: 7465 6420 636c 6965 6e74 2063 6572 742e  ted client cert.\n+00012340: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00012350: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00012360: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+00012370: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00012380: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+00012390: 3e0d 0a20 2020 203c 2f78 7364 3a63 6f6d  >..    </xsd:com\n+000123a0: 706c 6578 5479 7065 3e0d 0a0d 0a20 2020  plexType>....   \n+000123b0: 203c 7873 643a 656c 656d 656e 7420 6e61   <xsd:element na\n+000123c0: 6d65 3d22 7373 6c22 2074 7970 653d 2273  me=\"ssl\" type=\"s\n+000123d0: 736c 5479 7065 223e 0d0a 2020 2020 2020  slType\">..      \n+000123e0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+000123f0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00012400: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00012410: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+00012420: 2073 736c 2063 6f6e 6669 6720 5d5d 3e3c   ssl config ]]><\n+00012430: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00012440: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00012450: 203c 7873 643a 6170 7069 6e66 6f3e 0d0a   <xsd:appinfo>..\n+00012460: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00012470: 3c74 6f6f 6c3a 616e 6e6f 7461 7469 6f6e  <tool:annotation\n+00012480: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00012490: 2020 2020 2020 203c 746f 6f6c 3a65 7870         <tool:exp\n+000124a0: 6f72 7473 2074 7970 653d 226f 7267 2e61  orts type=\"org.a\n+000124b0: 7061 6368 652e 6475 6262 6f2e 636f 6e66  pache.dubbo.conf\n+000124c0: 6967 2e53 736c 436f 6e66 6967 222f 3e0d  ig.SslConfig\"/>.\n+000124d0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000124e0: 203c 2f74 6f6f 6c3a 616e 6e6f 7461 7469   </tool:annotati\n+000124f0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00012500: 203c 2f78 7364 3a61 7070 696e 666f 3e0d   </xsd:appinfo>.\n+00012510: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+00012520: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00012530: 3c2f 7873 643a 656c 656d 656e 743e 0d0a  </xsd:element>..\n+00012540: 0d0a 2020 2020 3c78 7364 3a65 6c65 6d65  ..    <xsd:eleme\n+00012550: 6e74 206e 616d 653d 2261 7070 6c69 6361  nt name=\"applica\n+00012560: 7469 6f6e 2220 7479 7065 3d22 6170 706c  tion\" type=\"appl\n+00012570: 6963 6174 696f 6e54 7970 6522 3e0d 0a20  icationType\">.. \n+00012580: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+00012590: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+000125a0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+000125b0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+000125c0: 5b20 5468 6520 6170 706c 6963 6174 696f  [ The applicatio\n+000125d0: 6e20 636f 6e66 6967 205d 5d3e 3c2f 7873  n config ]]></xs\n+000125e0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+000125f0: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+00012600: 7364 3a61 7070 696e 666f 3e0d 0a20 2020  sd:appinfo>..   \n+00012610: 2020 2020 2020 2020 2020 2020 203c 746f               <to\n+00012620: 6f6c 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  ol:annotation>..\n+00012630: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00012640: 2020 2020 3c74 6f6f 6c3a 6578 706f 7274      <tool:export\n+00012650: 7320 7479 7065 3d22 6f72 672e 6170 6163  s type=\"org.apac\n+00012660: 6865 2e64 7562 626f 2e63 6f6e 6669 672e  he.dubbo.config.\n+00012670: 4170 706c 6963 6174 696f 6e43 6f6e 6669  ApplicationConfi\n+00012680: 6722 2f3e 0d0a 2020 2020 2020 2020 2020  g\"/>..          \n+00012690: 2020 2020 2020 3c2f 746f 6f6c 3a61 6e6e        </tool:ann\n+000126a0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+000126b0: 2020 2020 2020 3c2f 7873 643a 6170 7069        </xsd:appi\n+000126c0: 6e66 6f3e 0d0a 2020 2020 2020 2020 3c2f  nfo>..        </\n+000126d0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+000126e0: 0a20 2020 203c 2f78 7364 3a65 6c65 6d65  .    </xsd:eleme\n+000126f0: 6e74 3e0d 0a0d 0a20 2020 203c 7873 643a  nt>....    <xsd:\n+00012700: 656c 656d 656e 7420 6e61 6d65 3d22 6d6f  element name=\"mo\n+00012710: 6475 6c65 2220 7479 7065 3d22 6d6f 6475  dule\" type=\"modu\n+00012720: 6c65 5479 7065 223e 0d0a 2020 2020 2020  leType\">..      \n+00012730: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00012740: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00012750: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00012760: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+00012770: 206d 6f64 756c 6520 636f 6e66 6967 205d   module config ]\n+00012780: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+00012790: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+000127a0: 2020 2020 3c78 7364 3a61 7070 696e 666f      <xsd:appinfo\n+000127b0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+000127c0: 2020 203c 746f 6f6c 3a61 6e6e 6f74 6174     <tool:annotat\n+000127d0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+000127e0: 2020 2020 2020 2020 2020 3c74 6f6f 6c3a            <tool:\n+000127f0: 6578 706f 7274 7320 7479 7065 3d22 6f72  exports type=\"or\n+00012800: 672e 6170 6163 6865 2e64 7562 626f 2e63  g.apache.dubbo.c\n+00012810: 6f6e 6669 672e 4d6f 6475 6c65 436f 6e66  onfig.ModuleConf\n+00012820: 6967 222f 3e0d 0a20 2020 2020 2020 2020  ig\"/>..         \n+00012830: 2020 2020 2020 203c 2f74 6f6f 6c3a 616e         </tool:an\n+00012840: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00012850: 2020 2020 2020 203c 2f78 7364 3a61 7070         </xsd:app\n+00012860: 696e 666f 3e0d 0a20 2020 2020 2020 203c  info>..        <\n+00012870: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00012880: 0d0a 2020 2020 3c2f 7873 643a 656c 656d  ..    </xsd:elem\n+00012890: 656e 743e 0d0a 0d0a 2020 2020 3c78 7364  ent>....    <xsd\n+000128a0: 3a65 6c65 6d65 6e74 206e 616d 653d 2272  :element name=\"r\n+000128b0: 6567 6973 7472 7922 2074 7970 653d 2272  egistry\" type=\"r\n+000128c0: 6567 6973 7472 7954 7970 6522 3e0d 0a20  egistryType\">.. \n+000128d0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+000128e0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+000128f0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+00012900: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+00012910: 5b20 5468 6520 7265 6769 7374 7279 2063  [ The registry c\n+00012920: 6f6e 6669 6720 5d5d 3e3c 2f78 7364 3a64  onfig ]]></xsd:d\n+00012930: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+00012940: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00012950: 6170 7069 6e66 6f3e 0d0a 2020 2020 2020  appinfo>..      \n+00012960: 2020 2020 2020 2020 2020 3c74 6f6f 6c3a            <tool:\n+00012970: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00012980: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00012990: 203c 746f 6f6c 3a65 7870 6f72 7473 2074   <tool:exports t\n+000129a0: 7970 653d 226f 7267 2e61 7061 6368 652e  ype=\"org.apache.\n+000129b0: 6475 6262 6f2e 636f 6e66 6967 2e52 6567  dubbo.config.Reg\n+000129c0: 6973 7472 7943 6f6e 6669 6722 2f3e 0d0a  istryConfig\"/>..\n+000129d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000129e0: 3c2f 746f 6f6c 3a61 6e6e 6f74 6174 696f  </tool:annotatio\n+000129f0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00012a00: 3c2f 7873 643a 6170 7069 6e66 6f3e 0d0a  </xsd:appinfo>..\n+00012a10: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00012a20: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 203c  notation>..    <\n+00012a30: 2f78 7364 3a65 6c65 6d65 6e74 3e0d 0a0d  /xsd:element>...\n+00012a40: 0a20 2020 203c 7873 643a 656c 656d 656e  .    <xsd:elemen\n+00012a50: 7420 6e61 6d65 3d22 6d65 7461 6461 7461  t name=\"metadata\n+00012a60: 2d72 6570 6f72 7422 2074 7970 653d 226d  -report\" type=\"m\n+00012a70: 6574 6164 6174 6152 6570 6f72 7454 7970  etadataReportTyp\n+00012a80: 6522 3e0d 0a20 2020 2020 2020 203c 7873  e\">..        <xs\n+00012a90: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00012aa0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00012ab0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00012ac0: 5b43 4441 5441 5b20 5468 6520 6d65 7461  [CDATA[ The meta\n+00012ad0: 6461 7461 5265 706f 7274 2063 6f6e 6669  dataReport confi\n+00012ae0: 6720 5d5d 3e3c 2f78 7364 3a64 6f63 756d  g ]]></xsd:docum\n+00012af0: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00012b00: 2020 2020 2020 203c 7873 643a 6170 7069         <xsd:appi\n+00012b10: 6e66 6f3e 0d0a 2020 2020 2020 2020 2020  nfo>..          \n+00012b20: 2020 2020 2020 3c74 6f6f 6c3a 616e 6e6f        <tool:anno\n+00012b30: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00012b40: 2020 2020 2020 2020 2020 2020 203c 746f               <to\n+00012b50: 6f6c 3a65 7870 6f72 7473 2074 7970 653d  ol:exports type=\n+00012b60: 226f 7267 2e61 7061 6368 652e 6475 6262  \"org.apache.dubb\n+00012b70: 6f2e 636f 6e66 6967 2e4d 6574 6164 6174  o.config.Metadat\n+00012b80: 6152 6570 6f72 7443 6f6e 6669 6722 2f3e  aReportConfig\"/>\n+00012b90: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00012ba0: 2020 3c2f 746f 6f6c 3a61 6e6e 6f74 6174    </tool:annotat\n+00012bb0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00012bc0: 2020 3c2f 7873 643a 6170 7069 6e66 6f3e    </xsd:appinfo>\n+00012bd0: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+00012be0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00012bf0: 203c 2f78 7364 3a65 6c65 6d65 6e74 3e0d   </xsd:element>.\n+00012c00: 0a0d 0a20 2020 203c 7873 643a 656c 656d  ...    <xsd:elem\n+00012c10: 656e 7420 6e61 6d65 3d22 636f 6e66 6967  ent name=\"config\n+00012c20: 2d63 656e 7465 7222 2074 7970 653d 2263  -center\" type=\"c\n+00012c30: 6f6e 6669 6743 656e 7465 7254 7970 6522  onfigCenterType\"\n+00012c40: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+00012c50: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00012c60: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00012c70: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+00012c80: 4441 5441 5b20 5468 6520 636f 6e66 6967  DATA[ The config\n+00012c90: 2063 656e 7465 7220 636f 6e66 6967 205d   center config ]\n+00012ca0: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+00012cb0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00012cc0: 2020 2020 3c78 7364 3a61 7070 696e 666f      <xsd:appinfo\n+00012cd0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00012ce0: 2020 203c 746f 6f6c 3a61 6e6e 6f74 6174     <tool:annotat\n+00012cf0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00012d00: 2020 2020 2020 2020 2020 3c74 6f6f 6c3a            <tool:\n+00012d10: 6578 706f 7274 7320 7479 7065 3d22 6f72  exports type=\"or\n+00012d20: 672e 6170 6163 6865 2e64 7562 626f 2e63  g.apache.dubbo.c\n+00012d30: 6f6e 6669 672e 436f 6e66 6967 4365 6e74  onfig.ConfigCent\n+00012d40: 6572 436f 6e66 6967 222f 3e0d 0a20 2020  erConfig\"/>..   \n+00012d50: 2020 2020 2020 2020 2020 2020 203c 2f74               </t\n+00012d60: 6f6f 6c3a 616e 6e6f 7461 7469 6f6e 3e0d  ool:annotation>.\n+00012d70: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n+00012d80: 7364 3a61 7070 696e 666f 3e0d 0a20 2020  sd:appinfo>..   \n+00012d90: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00012da0: 6174 696f 6e3e 0d0a 2020 2020 3c2f 7873  ation>..    </xs\n+00012db0: 643a 656c 656d 656e 743e 0d0a 0d0a 2020  d:element>....  \n+00012dc0: 2020 3c78 7364 3a65 6c65 6d65 6e74 206e    <xsd:element n\n+00012dd0: 616d 653d 226d 6f6e 6974 6f72 2220 7479  ame=\"monitor\" ty\n+00012de0: 7065 3d22 6d6f 6e69 746f 7254 7970 6522  pe=\"monitorType\"\n+00012df0: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+00012e00: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00012e10: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00012e20: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+00012e30: 4441 5441 5b20 5468 6520 6c6f 6773 7461  DATA[ The logsta\n+00012e40: 7420 6d6f 6e69 746f 7220 636f 6e66 6967  t monitor config\n+00012e50: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00012e60: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00012e70: 2020 2020 2020 3c78 7364 3a61 7070 696e        <xsd:appin\n+00012e80: 666f 3e0d 0a20 2020 2020 2020 2020 2020  fo>..           \n+00012e90: 2020 2020 203c 746f 6f6c 3a61 6e6e 6f74       <tool:annot\n+00012ea0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00012eb0: 2020 2020 2020 2020 2020 2020 3c74 6f6f              <too\n+00012ec0: 6c3a 6578 706f 7274 7320 7479 7065 3d22  l:exports type=\"\n+00012ed0: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+00012ee0: 2e63 6f6e 6669 672e 4d6f 6e69 746f 7243  .config.MonitorC\n+00012ef0: 6f6e 6669 6722 2f3e 0d0a 2020 2020 2020  onfig\"/>..      \n+00012f00: 2020 2020 2020 2020 2020 3c2f 746f 6f6c            </tool\n+00012f10: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00012f20: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00012f30: 6170 7069 6e66 6f3e 0d0a 2020 2020 2020  appinfo>..      \n+00012f40: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+00012f50: 6f6e 3e0d 0a20 2020 203c 2f78 7364 3a65  on>..    </xsd:e\n+00012f60: 6c65 6d65 6e74 3e0d 0a0d 0a20 2020 203c  lement>....    <\n+00012f70: 7873 643a 656c 656d 656e 7420 6e61 6d65  xsd:element name\n+00012f80: 3d22 7072 6f76 6964 6572 2220 7479 7065  =\"provider\" type\n+00012f90: 3d22 7072 6f76 6964 6572 5479 7065 223e  =\"providerType\">\n+00012fa0: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+00012fb0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00012fc0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00012fd0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00012fe0: 4154 415b 2045 7870 6f72 7420 7365 7276  ATA[ Export serv\n+00012ff0: 6963 6520 6465 6661 756c 7420 636f 6e66  ice default conf\n+00013000: 6967 205d 5d3e 3c2f 7873 643a 646f 6375  ig ]]></xsd:docu\n+00013010: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00013020: 2020 2020 2020 2020 3c78 7364 3a61 7070          <xsd:app\n+00013030: 696e 666f 3e0d 0a20 2020 2020 2020 2020  info>..         \n+00013040: 2020 2020 2020 203c 746f 6f6c 3a61 6e6e         <tool:ann\n+00013050: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00013060: 2020 2020 2020 2020 2020 2020 2020 3c74                <t\n+00013070: 6f6f 6c3a 6578 706f 7274 7320 7479 7065  ool:exports type\n+00013080: 3d22 6f72 672e 6170 6163 6865 2e64 7562  =\"org.apache.dub\n+00013090: 626f 2e63 6f6e 6669 672e 5072 6f76 6964  bo.config.Provid\n+000130a0: 6572 436f 6e66 6967 222f 3e0d 0a20 2020  erConfig\"/>..   \n+000130b0: 2020 2020 2020 2020 2020 2020 203c 2f74               </t\n+000130c0: 6f6f 6c3a 616e 6e6f 7461 7469 6f6e 3e0d  ool:annotation>.\n+000130d0: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n+000130e0: 7364 3a61 7070 696e 666f 3e0d 0a20 2020  sd:appinfo>..   \n+000130f0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00013100: 6174 696f 6e3e 0d0a 2020 2020 3c2f 7873  ation>..    </xs\n+00013110: 643a 656c 656d 656e 743e 0d0a 0d0a 2020  d:element>....  \n+00013120: 2020 3c78 7364 3a65 6c65 6d65 6e74 206e    <xsd:element n\n+00013130: 616d 653d 2263 6f6e 7375 6d65 7222 2074  ame=\"consumer\" t\n+00013140: 7970 653d 2263 6f6e 7375 6d65 7254 7970  ype=\"consumerTyp\n+00013150: 6522 3e0d 0a20 2020 2020 2020 203c 7873  e\">..        <xs\n+00013160: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00013170: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00013180: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00013190: 5b43 4441 5441 5b20 5365 7276 6963 6520  [CDATA[ Service \n+000131a0: 7265 6665 7265 6e63 6520 6465 6661 756c  reference defaul\n+000131b0: 7420 636f 6e66 6967 205d 5d3e 3c2f 7873  t config ]]></xs\n+000131c0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+000131d0: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+000131e0: 7364 3a61 7070 696e 666f 3e0d 0a20 2020  sd:appinfo>..   \n+000131f0: 2020 2020 2020 2020 2020 2020 203c 746f               <to\n+00013200: 6f6c 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  ol:annotation>..\n+00013210: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00013220: 2020 2020 3c74 6f6f 6c3a 6578 706f 7274      <tool:export\n+00013230: 7320 7479 7065 3d22 6f72 672e 6170 6163  s type=\"org.apac\n+00013240: 6865 2e64 7562 626f 2e63 6f6e 6669 672e  he.dubbo.config.\n+00013250: 436f 6e73 756d 6572 436f 6e66 6967 222f  ConsumerConfig\"/\n+00013260: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00013270: 2020 203c 2f74 6f6f 6c3a 616e 6e6f 7461     </tool:annota\n+00013280: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00013290: 2020 203c 2f78 7364 3a61 7070 696e 666f     </xsd:appinfo\n+000132a0: 3e0d 0a20 2020 2020 2020 203c 2f78 7364  >..        </xsd\n+000132b0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+000132c0: 2020 3c2f 7873 643a 656c 656d 656e 743e    </xsd:element>\n+000132d0: 0d0a 0d0a 2020 2020 3c78 7364 3a65 6c65  ....    <xsd:ele\n+000132e0: 6d65 6e74 206e 616d 653d 2270 726f 746f  ment name=\"proto\n+000132f0: 636f 6c22 2074 7970 653d 2270 726f 746f  col\" type=\"proto\n+00013300: 636f 6c54 7970 6522 3e0d 0a20 2020 2020  colType\">..     \n+00013310: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00013320: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00013330: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00013340: 696f 6e3e 3c21 5b43 4441 5441 5b20 5365  ion><![CDATA[ Se\n+00013350: 7276 6963 6520 7072 6f76 6964 6572 2063  rvice provider c\n+00013360: 6f6e 6669 6720 5d5d 3e3c 2f78 7364 3a64  onfig ]]></xsd:d\n+00013370: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+00013380: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00013390: 6170 7069 6e66 6f3e 0d0a 2020 2020 2020  appinfo>..      \n+000133a0: 2020 2020 2020 2020 2020 3c74 6f6f 6c3a            <tool:\n+000133b0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+000133c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000133d0: 203c 746f 6f6c 3a65 7870 6f72 7473 2074   <tool:exports t\n+000133e0: 7970 653d 226f 7267 2e61 7061 6368 652e  ype=\"org.apache.\n+000133f0: 6475 6262 6f2e 636f 6e66 6967 2e50 726f  dubbo.config.Pro\n+00013400: 746f 636f 6c43 6f6e 6669 6722 2f3e 0d0a  tocolConfig\"/>..\n+00013410: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00013420: 3c2f 746f 6f6c 3a61 6e6e 6f74 6174 696f  </tool:annotatio\n+00013430: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00013440: 3c2f 7873 643a 6170 7069 6e66 6f3e 0d0a  </xsd:appinfo>..\n+00013450: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00013460: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 203c  notation>..    <\n+00013470: 2f78 7364 3a65 6c65 6d65 6e74 3e0d 0a0d  /xsd:element>...\n+00013480: 0a20 2020 203c 7873 643a 656c 656d 656e  .    <xsd:elemen\n+00013490: 7420 6e61 6d65 3d22 7365 7276 6963 6522  t name=\"service\"\n+000134a0: 2074 7970 653d 2273 6572 7669 6365 5479   type=\"serviceTy\n+000134b0: 7065 223e 0d0a 2020 2020 2020 2020 3c78  pe\">..        <x\n+000134c0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+000134d0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000134e0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+000134f0: 215b 4344 4154 415b 2045 7870 6f72 7420  ![CDATA[ Export \n+00013500: 7365 7276 6963 6520 636f 6e66 6967 205d  service config ]\n+00013510: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+00013520: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00013530: 2020 2020 3c78 7364 3a61 7070 696e 666f      <xsd:appinfo\n+00013540: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00013550: 2020 203c 746f 6f6c 3a61 6e6e 6f74 6174     <tool:annotat\n+00013560: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00013570: 2020 2020 2020 2020 2020 3c74 6f6f 6c3a            <tool:\n+00013580: 6578 706f 7274 7320 7479 7065 3d22 6f72  exports type=\"or\n+00013590: 672e 6170 6163 6865 2e64 7562 626f 2e63  g.apache.dubbo.c\n+000135a0: 6f6e 6669 672e 5365 7276 6963 6543 6f6e  onfig.ServiceCon\n+000135b0: 6669 6742 6173 6522 2f3e 0d0a 2020 2020  figBase\"/>..    \n+000135c0: 2020 2020 2020 2020 2020 2020 3c2f 746f              </to\n+000135d0: 6f6c 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  ol:annotation>..\n+000135e0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+000135f0: 643a 6170 7069 6e66 6f3e 0d0a 2020 2020  d:appinfo>..    \n+00013600: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+00013610: 7469 6f6e 3e0d 0a20 2020 203c 2f78 7364  tion>..    </xsd\n+00013620: 3a65 6c65 6d65 6e74 3e0d 0a0d 0a20 2020  :element>....   \n+00013630: 203c 7873 643a 656c 656d 656e 7420 6e61   <xsd:element na\n+00013640: 6d65 3d22 7265 6665 7265 6e63 6522 2074  me=\"reference\" t\n+00013650: 7970 653d 2272 6566 6572 656e 6365 5479  ype=\"referenceTy\n+00013660: 7065 223e 0d0a 2020 2020 2020 2020 3c78  pe\">..        <x\n+00013670: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00013680: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00013690: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+000136a0: 215b 4344 4154 415b 2052 6566 6572 656e  ![CDATA[ Referen\n+000136b0: 6365 2073 6572 7669 6365 2063 6f6e 6669  ce service confi\n+000136c0: 6720 5d5d 3e3c 2f78 7364 3a64 6f63 756d  g ]]></xsd:docum\n+000136d0: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+000136e0: 2020 2020 2020 203c 7873 643a 6170 7069         <xsd:appi\n+000136f0: 6e66 6f3e 0d0a 2020 2020 2020 2020 2020  nfo>..          \n+00013700: 2020 2020 2020 3c74 6f6f 6c3a 616e 6e6f        <tool:anno\n+00013710: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00013720: 2020 2020 2020 2020 2020 2020 203c 746f               <to\n+00013730: 6f6c 3a65 7870 6f72 7473 2074 7970 653d  ol:exports type=\n+00013740: 226f 7267 2e61 7061 6368 652e 6475 6262  \"org.apache.dubb\n+00013750: 6f2e 636f 6e66 6967 2e52 6566 6572 656e  o.config.Referen\n+00013760: 6365 436f 6e66 6967 4261 7365 222f 3e0d  ceConfigBase\"/>.\n+00013770: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00013780: 203c 2f74 6f6f 6c3a 616e 6e6f 7461 7469   </tool:annotati\n+00013790: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+000137a0: 203c 2f78 7364 3a61 7070 696e 666f 3e0d   </xsd:appinfo>.\n+000137b0: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+000137c0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+000137d0: 3c2f 7873 643a 656c 656d 656e 743e 0d0a  </xsd:element>..\n+000137e0: 0d0a 2020 2020 3c78 7364 3a65 6c65 6d65  ..    <xsd:eleme\n+000137f0: 6e74 206e 616d 653d 226d 6574 686f 6422  nt name=\"method\"\n+00013800: 2074 7970 653d 226d 6574 686f 6454 7970   type=\"methodTyp\n+00013810: 6522 3e0d 0a20 2020 2020 2020 203c 7873  e\">..        <xs\n+00013820: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00013830: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00013840: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00013850: 5b43 4441 5441 5b20 5468 6520 7365 7276  [CDATA[ The serv\n+00013860: 6963 6520 6d65 7468 6f64 2063 6f6e 6669  ice method confi\n+00013870: 6720 5d5d 3e3c 2f78 7364 3a64 6f63 756d  g ]]></xsd:docum\n+00013880: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00013890: 2020 2020 2020 203c 7873 643a 6170 7069         <xsd:appi\n+000138a0: 6e66 6f3e 0d0a 2020 2020 2020 2020 2020  nfo>..          \n+000138b0: 2020 2020 2020 3c74 6f6f 6c3a 616e 6e6f        <tool:anno\n+000138c0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+000138d0: 2020 2020 2020 2020 2020 2020 203c 746f               <to\n+000138e0: 6f6c 3a65 7870 6f72 7473 2074 7970 653d  ol:exports type=\n+000138f0: 226f 7267 2e61 7061 6368 652e 6475 6262  \"org.apache.dubb\n+00013900: 6f2e 636f 6e66 6967 2e4d 6574 686f 6443  o.config.MethodC\n+00013910: 6f6e 6669 6722 2f3e 0d0a 2020 2020 2020  onfig\"/>..      \n+00013920: 2020 2020 2020 2020 2020 3c2f 746f 6f6c            </tool\n+00013930: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00013940: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00013950: 6170 7069 6e66 6f3e 0d0a 2020 2020 2020  appinfo>..      \n+00013960: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+00013970: 6f6e 3e0d 0a20 2020 203c 2f78 7364 3a65  on>..    </xsd:e\n+00013980: 6c65 6d65 6e74 3e0d 0a0d 0a20 2020 203c  lement>....    <\n+00013990: 7873 643a 656c 656d 656e 7420 6e61 6d65  xsd:element name\n+000139a0: 3d22 6172 6775 6d65 6e74 2220 7479 7065  =\"argument\" type\n+000139b0: 3d22 6172 6775 6d65 6e74 5479 7065 223e  =\"argumentType\">\n+000139c0: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+000139d0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+000139e0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+000139f0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00013a00: 4154 415b 2054 6865 2073 6572 7669 6365  ATA[ The service\n+00013a10: 2061 7267 756d 656e 7420 636f 6e66 6967   argument config\n+00013a20: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00013a30: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00013a40: 2020 2020 2020 3c78 7364 3a61 7070 696e        <xsd:appin\n+00013a50: 666f 3e0d 0a20 2020 2020 2020 2020 2020  fo>..           \n+00013a60: 2020 2020 203c 746f 6f6c 3a61 6e6e 6f74       <tool:annot\n+00013a70: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00013a80: 2020 2020 2020 2020 2020 2020 3c74 6f6f              <too\n+00013a90: 6c3a 6578 706f 7274 7320 7479 7065 3d22  l:exports type=\"\n+00013aa0: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+00013ab0: 2e63 6f6e 6669 672e 4172 6775 6d65 6e74  .config.Argument\n+00013ac0: 436f 6e66 6967 222f 3e0d 0a20 2020 2020  Config\"/>..     \n+00013ad0: 2020 2020 2020 2020 2020 203c 2f74 6f6f             </too\n+00013ae0: 6c3a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  l:annotation>.. \n+00013af0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00013b00: 3a61 7070 696e 666f 3e0d 0a20 2020 2020  :appinfo>..     \n+00013b10: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+00013b20: 696f 6e3e 0d0a 2020 2020 3c2f 7873 643a  ion>..    </xsd:\n+00013b30: 656c 656d 656e 743e 0d0a 0d0a 2020 2020  element>....    \n+00013b40: 3c78 7364 3a65 6c65 6d65 6e74 206e 616d  <xsd:element nam\n+00013b50: 653d 2270 6172 616d 6574 6572 2220 7479  e=\"parameter\" ty\n+00013b60: 7065 3d22 7061 7261 6d65 7465 7254 7970  pe=\"parameterTyp\n+00013b70: 6522 3e0d 0a20 2020 2020 2020 203c 7873  e\">..        <xs\n+00013b80: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00013b90: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00013ba0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00013bb0: 5b43 4441 5441 5b20 5468 6520 7365 7276  [CDATA[ The serv\n+00013bc0: 6963 6520 7572 6c20 7061 7261 6d65 7465  ice url paramete\n+00013bd0: 7220 5d5d 3e3c 2f78 7364 3a64 6f63 756d  r ]]></xsd:docum\n+00013be0: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00013bf0: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+00013c00: 696f 6e3e 0d0a 2020 2020 3c2f 7873 643a  ion>..    </xsd:\n+00013c10: 656c 656d 656e 743e 0d0a 0d0a 2020 2020  element>....    \n+00013c20: 3c78 7364 3a65 6c65 6d65 6e74 206e 616d  <xsd:element nam\n+00013c30: 653d 226d 6574 7269 6373 2220 7479 7065  e=\"metrics\" type\n+00013c40: 3d22 6d65 7472 6963 7354 7970 6522 3e0d  =\"metricsType\">.\n+00013c50: 0a20 2020 2020 2020 203c 7873 643a 616e  .        <xsd:an\n+00013c60: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00013c70: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+00013c80: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+00013c90: 5441 5b20 5468 6520 6d65 7472 6963 7320  TA[ The metrics \n+00013ca0: 7365 7276 6963 6520 5d5d 3e3c 2f78 7364  service ]]></xsd\n+00013cb0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00013cc0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00013cd0: 643a 6170 7069 6e66 6f3e 0d0a 2020 2020  d:appinfo>..    \n+00013ce0: 2020 2020 2020 2020 2020 2020 3c74 6f6f              <too\n+00013cf0: 6c3a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  l:annotation>.. \n+00013d00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00013d10: 2020 203c 746f 6f6c 3a65 7870 6f72 7473     <tool:exports\n+00013d20: 2074 7970 653d 226f 7267 2e61 7061 6368   type=\"org.apach\n+00013d30: 652e 6475 6262 6f2e 636f 6e66 6967 2e4d  e.dubbo.config.M\n+00013d40: 6574 7269 6373 436f 6e66 6967 222f 3e0d  etricsConfig\"/>.\n+00013d50: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00013d60: 203c 2f74 6f6f 6c3a 616e 6e6f 7461 7469   </tool:annotati\n+00013d70: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00013d80: 203c 2f78 7364 3a61 7070 696e 666f 3e0d   </xsd:appinfo>.\n+00013d90: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+00013da0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00013db0: 3c2f 7873 643a 656c 656d 656e 743e 0d0a  </xsd:element>..\n+00013dc0: 0d0a 3c2f 7873 643a 7363 6865 6d61 3e0d  ..</xsd:schema>.\n+00013dd0: 0a                                       .\n"}, {"source1": "META-INF/dubbo.xsd", "source2": "META-INF/dubbo.xsd", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, Unicode text, UTF-8 text"], "has_internal_linenos": true, "unified_diff": "@@ -1,5086 +1,5191 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n 00000020: 462d 3822 2073 7461 6e64 616c 6f6e 653d  F-8\" standalone=\n-00000030: 226e 6f22 3f3e 0a3c 7873 643a 7363 6865  \"no\"?>.<xsd:sche\n-00000040: 6d61 2078 6d6c 6e73 3a78 7364 3d22 6874  ma xmlns:xsd=\"ht\n-00000050: 7470 3a2f 2f77 7777 2e77 332e 6f72 672f  tp://www.w3.org/\n-00000060: 3230 3031 2f58 4d4c 5363 6865 6d61 220a  2001/XMLSchema\".\n-00000070: 2020 2020 2020 2020 2020 2020 786d 6c6e              xmln\n-00000080: 733a 6265 616e 733d 2268 7474 703a 2f2f  s:beans=\"http://\n-00000090: 7777 772e 7370 7269 6e67 6672 616d 6577  www.springframew\n-000000a0: 6f72 6b2e 6f72 672f 7363 6865 6d61 2f62  ork.org/schema/b\n-000000b0: 6561 6e73 220a 2020 2020 2020 2020 2020  eans\".          \n-000000c0: 2020 786d 6c6e 733a 746f 6f6c 3d22 6874    xmlns:tool=\"ht\n-000000d0: 7470 3a2f 2f77 7777 2e73 7072 696e 6766  tp://www.springf\n-000000e0: 7261 6d65 776f 726b 2e6f 7267 2f73 6368  ramework.org/sch\n-000000f0: 656d 612f 746f 6f6c 220a 2020 2020 2020  ema/tool\".      \n-00000100: 2020 2020 2020 786d 6c6e 733d 2268 7474        xmlns=\"htt\n-00000110: 703a 2f2f 6475 6262 6f2e 6170 6163 6865  p://dubbo.apache\n-00000120: 2e6f 7267 2f73 6368 656d 612f 6475 6262  .org/schema/dubb\n-00000130: 6f22 0a20 2020 2020 2020 2020 2020 2074  o\".            t\n-00000140: 6172 6765 744e 616d 6573 7061 6365 3d22  argetNamespace=\"\n-00000150: 6874 7470 3a2f 2f64 7562 626f 2e61 7061  http://dubbo.apa\n-00000160: 6368 652e 6f72 672f 7363 6865 6d61 2f64  che.org/schema/d\n-00000170: 7562 626f 223e 0a0a 2020 2020 3c78 7364  ubbo\">..    <xsd\n-00000180: 3a69 6d70 6f72 7420 6e61 6d65 7370 6163  :import namespac\n-00000190: 653d 2268 7474 703a 2f2f 7777 772e 7733  e=\"http://www.w3\n-000001a0: 2e6f 7267 2f58 4d4c 2f31 3939 382f 6e61  .org/XML/1998/na\n-000001b0: 6d65 7370 6163 6522 2f3e 0a20 2020 203c  mespace\"/>.    <\n-000001c0: 7873 643a 696d 706f 7274 206e 616d 6573  xsd:import names\n-000001d0: 7061 6365 3d22 6874 7470 3a2f 2f77 7777  pace=\"http://www\n-000001e0: 2e73 7072 696e 6766 7261 6d65 776f 726b  .springframework\n-000001f0: 2e6f 7267 2f73 6368 656d 612f 6265 616e  .org/schema/bean\n-00000200: 7322 0a20 2020 2020 2020 2020 2020 2020  s\".             \n-00000210: 2020 2073 6368 656d 614c 6f63 6174 696f     schemaLocatio\n-00000220: 6e3d 2268 7474 703a 2f2f 7777 772e 7370  n=\"http://www.sp\n-00000230: 7269 6e67 6672 616d 6577 6f72 6b2e 6f72  ringframework.or\n-00000240: 672f 7363 6865 6d61 2f62 6561 6e73 2f73  g/schema/beans/s\n-00000250: 7072 696e 672d 6265 616e 732e 7873 6422  pring-beans.xsd\"\n-00000260: 2f3e 0a20 2020 203c 7873 643a 696d 706f  />.    <xsd:impo\n-00000270: 7274 206e 616d 6573 7061 6365 3d22 6874  rt namespace=\"ht\n-00000280: 7470 3a2f 2f77 7777 2e73 7072 696e 6766  tp://www.springf\n-00000290: 7261 6d65 776f 726b 2e6f 7267 2f73 6368  ramework.org/sch\n-000002a0: 656d 612f 746f 6f6c 222f 3e0a 0a20 2020  ema/tool\"/>..   \n-000002b0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-000002c0: 3e0a 2020 2020 2020 2020 3c78 7364 3a64  >.        <xsd:d\n-000002d0: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-000002e0: 2020 2020 2020 2020 2020 3c21 5b43 4441            <![CDA\n-000002f0: 5441 5b20 4e61 6d65 7370 6163 6520 7375  TA[ Namespace su\n-00000300: 7070 6f72 7420 666f 7220 7468 6520 6475  pport for the du\n-00000310: 6262 6f20 7365 7276 6963 6573 2070 726f  bbo services pro\n-00000320: 7669 6465 6420 6279 2064 7562 626f 2066  vided by dubbo f\n-00000330: 7261 6d65 776f 726b 2e20 5d5d 3e3c 2f78  ramework. ]]></x\n-00000340: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00000350: 3e0a 2020 2020 3c2f 7873 643a 616e 6e6f  >.    </xsd:anno\n-00000360: 7461 7469 6f6e 3e0a 0a20 2020 203c 7873  tation>..    <xs\n-00000370: 643a 636f 6d70 6c65 7854 7970 6520 6e61  d:complexType na\n-00000380: 6d65 3d22 6162 7374 7261 6374 4d65 7468  me=\"abstractMeth\n-00000390: 6f64 5479 7065 223e 0a20 2020 2020 2020  odType\">.       \n-000003a0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-000003b0: 6e61 6d65 3d22 7469 6d65 6f75 7422 2074  name=\"timeout\" t\n-000003c0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-000003d0: 2064 6566 6175 6c74 3d22 3022 3e0a 2020   default=\"0\">.  \n-000003e0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-000003f0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00000400: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00000410: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-00000420: 5b43 4441 5441 5b20 5468 6520 6d65 7468  [CDATA[ The meth\n-00000430: 6f64 2069 6e76 6f6b 6520 7469 6d65 6f75  od invoke timeou\n-00000440: 742e 205d 5d3e 3c2f 7873 643a 646f 6375  t. ]]></xsd:docu\n-00000450: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-00000460: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-00000470: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00000480: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-00000490: 3e0a 2020 2020 2020 2020 3c78 7364 3a61  >.        <xsd:a\n-000004a0: 7474 7269 6275 7465 206e 616d 653d 2272  ttribute name=\"r\n-000004b0: 6574 7269 6573 2220 7479 7065 3d22 7873  etries\" type=\"xs\n-000004c0: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-000004d0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-000004e0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-000004f0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-00000500: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-00000510: 4154 415b 2054 6865 206d 6574 686f 6420  ATA[ The method \n-00000520: 7265 7472 7920 7469 6d65 732e 205d 5d3e  retry times. ]]>\n-00000530: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-00000540: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00000550: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-00000560: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-00000570: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-00000580: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-00000590: 7465 206e 616d 653d 2266 6169 6c62 6163  te name=\"failbac\n-000005a0: 6b74 6173 6b73 2220 7479 7065 3d22 7873  ktasks\" type=\"xs\n-000005b0: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-000005c0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-000005d0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-000005e0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-000005f0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-00000600: 4154 415b 2054 6865 206d 6178 2066 6169  ATA[ The max fai\n-00000610: 6c62 6163 6b20 7461 736b 7320 6361 7061  lback tasks capa\n-00000620: 6369 7479 2073 697a 652e 205d 5d3e 3c2f  city size. ]]></\n-00000630: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00000640: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-00000650: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00000660: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-00000670: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00000680: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00000690: 206e 616d 653d 2261 6374 6976 6573 2220   name=\"actives\" \n-000006a0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-000006b0: 223e 0a20 2020 2020 2020 2020 2020 203c  \">.            <\n-000006c0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-000006d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000006e0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-000006f0: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-00000700: 206d 6178 2061 6374 6976 6520 7265 7175   max active requ\n-00000710: 6573 7473 2e20 5d5d 3e3c 2f78 7364 3a64  ests. ]]></xsd:d\n-00000720: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00000730: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00000740: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00000750: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00000760: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-00000770: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00000780: 3d22 636f 6e6e 6563 7469 6f6e 7322 2074  =\"connections\" t\n-00000790: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-000007a0: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-000007b0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-000007c0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000007d0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-000007e0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-000007f0: 2020 2020 2020 203c 215b 4344 4154 415b         <![CDATA[\n-00000800: 2054 6865 2065 7863 6c75 7369 7665 2063   The exclusive c\n-00000810: 6f6e 6e65 6374 696f 6e73 2e20 6465 6661  onnections. defa\n-00000820: 756c 7420 7368 6172 6520 6f6e 6520 636f  ult share one co\n-00000830: 6e6e 6563 7469 6f6e 2e20 5d5d 3e3c 2f78  nnection. ]]></x\n-00000840: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00000850: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-00000860: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00000870: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00000880: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00000890: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-000008a0: 6e61 6d65 3d22 6c6f 6164 6261 6c61 6e63  name=\"loadbalanc\n-000008b0: 6522 2074 7970 653d 2278 7364 3a73 7472  e\" type=\"xsd:str\n-000008c0: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-000008d0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-000008e0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-000008f0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-00000900: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-00000910: 5468 6520 6d65 7468 6f64 206c 6f61 6420  The method load \n-00000920: 6261 6c61 6e63 652e 205d 5d3e 3c2f 7873  balance. ]]></xs\n-00000930: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00000940: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00000950: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00000960: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00000970: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00000980: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00000990: 616d 653d 2261 7379 6e63 2220 7479 7065  ame=\"async\" type\n-000009a0: 3d22 7873 643a 7374 7269 6e67 2220 6465  =\"xsd:string\" de\n-000009b0: 6661 756c 743d 2266 616c 7365 223e 0a20  fault=\"false\">. \n-000009c0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-000009d0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-000009e0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000009f0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-00000a00: 215b 4344 4154 415b 2054 6865 206d 6574  ![CDATA[ The met\n-00000a10: 686f 6420 646f 6573 2061 7379 6e63 2e20  hod does async. \n-00000a20: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00000a30: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00000a40: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00000a50: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-00000a60: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-00000a70: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-00000a80: 6962 7574 6520 6e61 6d65 3d22 7365 6e74  ibute name=\"sent\n-00000a90: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-00000aa0: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-00000ab0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-00000ac0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00000ad0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-00000ae0: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-00000af0: 6865 2061 7379 6e63 206d 6574 686f 6420  he async method \n-00000b00: 7265 7475 726e 2061 7761 6974 206d 6573  return await mes\n-00000b10: 7361 6765 2073 656e 7420 5d5d 3e3c 2f78  sage sent ]]></x\n-00000b20: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00000b30: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-00000b40: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00000b50: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00000b60: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00000b70: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00000b80: 6e61 6d65 3d22 6d6f 636b 2220 7479 7065  name=\"mock\" type\n-00000b90: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-00000ba0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00000bb0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00000bc0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00000bd0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-00000be0: 215b 4344 4154 415b 2055 7365 2073 6572  ![CDATA[ Use ser\n-00000bf0: 7669 6365 206d 6f63 6b20 696d 706c 656d  vice mock implem\n-00000c00: 656e 7461 7469 6f6e 2e20 5d5d 3e3c 2f78  entation. ]]></x\n-00000c10: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00000c20: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-00000c30: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00000c40: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00000c50: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00000c60: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00000c70: 6e61 6d65 3d22 6d65 7267 6572 2220 7479  name=\"merger\" ty\n-00000c80: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00000c90: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00000ca0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00000cb0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00000cc0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00000cd0: 3e3c 215b 4344 4154 415b 2054 6865 206d  ><![CDATA[ The m\n-00000ce0: 756c 7469 2d67 726f 7570 2072 6573 756c  ulti-group resul\n-00000cf0: 7420 6d65 7267 6572 205d 5d3e 3c2f 7873  t merger ]]></xs\n-00000d00: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00000d10: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00000d20: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00000d30: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00000d40: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00000d50: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00000d60: 616d 653d 2276 616c 6964 6174 696f 6e22  ame=\"validation\"\n-00000d70: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-00000d80: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-00000d90: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-00000da0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00000db0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-00000dc0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5573  ion><![CDATA[ Us\n-00000dd0: 6520 7365 7276 6963 6520 6a73 7233 3033  e service jsr303\n-00000de0: 2076 616c 6964 6174 696f 6e2c 2074 7275   validation, tru\n-00000df0: 652f 6661 6c73 652e 205d 5d3e 3c2f 7873  e/false. ]]></xs\n-00000e00: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00000e10: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00000e20: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00000e30: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00000e40: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00000e50: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00000e60: 616d 653d 2263 6163 6865 2220 7479 7065  ame=\"cache\" type\n-00000e70: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-00000e80: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00000e90: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00000ea0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00000eb0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-00000ec0: 215b 4344 4154 415b 2055 7365 2073 6572  ![CDATA[ Use ser\n-00000ed0: 7669 6365 2063 6163 6865 2c20 6c72 752f  vice cache, lru/\n-00000ee0: 7468 7265 6164 6c6f 6361 6c2f 6a63 6163  threadlocal/jcac\n-00000ef0: 6865 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  he. ]]></xsd:doc\n-00000f00: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00000f10: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-00000f20: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00000f30: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-00000f40: 653e 0a20 2020 203c 2f78 7364 3a63 6f6d  e>.    </xsd:com\n-00000f50: 706c 6578 5479 7065 3e0a 0a20 2020 203c  plexType>..    <\n-00000f60: 7873 643a 636f 6d70 6c65 7854 7970 6520  xsd:complexType \n-00000f70: 6e61 6d65 3d22 6162 7374 7261 6374 496e  name=\"abstractIn\n-00000f80: 7465 7266 6163 6554 7970 6522 3e0a 2020  terfaceType\">.  \n-00000f90: 2020 2020 2020 3c78 7364 3a63 6f6d 706c        <xsd:compl\n-00000fa0: 6578 436f 6e74 656e 743e 0a20 2020 2020  exContent>.     \n-00000fb0: 2020 2020 2020 203c 7873 643a 6578 7465         <xsd:exte\n-00000fc0: 6e73 696f 6e20 6261 7365 3d22 6162 7374  nsion base=\"abst\n-00000fd0: 7261 6374 4d65 7468 6f64 5479 7065 223e  ractMethodType\">\n-00000fe0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00000ff0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00001000: 6e61 6d65 3d22 6964 2220 7479 7065 3d22  name=\"id\" type=\"\n-00001010: 7873 643a 4944 223e 0a20 2020 2020 2020  xsd:ID\">.       \n-00001020: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00001030: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00001040: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001050: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00001060: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00001070: 415b 2054 6865 2075 6e69 7175 6520 6964  A[ The unique id\n-00001080: 656e 7469 6669 6572 2066 6f72 2061 2062  entifier for a b\n-00001090: 6561 6e2e 205d 5d3e 3c2f 7873 643a 646f  ean. ]]></xsd:do\n-000010a0: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-000010b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000010c0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-000010d0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-000010e0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-000010f0: 7465 3e0a 2020 2020 2020 2020 2020 2020  te>.            \n-00001100: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-00001110: 7465 206e 616d 653d 226c 6f63 616c 2220  te name=\"local\" \n-00001120: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-00001130: 223e 0a20 2020 2020 2020 2020 2020 2020  \">.             \n-00001140: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-00001150: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00001160: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001170: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-00001180: 6f6e 3e3c 215b 4344 4154 415b 2055 7365  on><![CDATA[ Use\n-00001190: 2073 6572 7669 6365 206c 6f63 616c 2069   service local i\n-000011a0: 6d70 6c65 6d65 6e74 6174 696f 6e2e 205d  mplementation. ]\n-000011b0: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-000011c0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-000011d0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-000011e0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-000011f0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-00001200: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-00001210: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00001220: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-00001230: 653d 2273 7475 6222 2074 7970 653d 2278  e=\"stub\" type=\"x\n-00001240: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-00001250: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001260: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-00001270: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00001280: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00001290: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-000012a0: 4441 5441 5b20 5573 6520 7365 7276 6963  DATA[ Use servic\n-000012b0: 6520 6c6f 6361 6c20 696d 706c 656d 656e  e local implemen\n-000012c0: 7461 7469 6f6e 2e20 5d5d 3e3c 2f78 7364  tation. ]]></xsd\n-000012d0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-000012e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000012f0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00001300: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00001310: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-00001320: 6962 7574 653e 0a20 2020 2020 2020 2020  ibute>.         \n-00001330: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-00001340: 6962 7574 6520 6e61 6d65 3d22 7072 6f78  ibute name=\"prox\n-00001350: 7922 2074 7970 653d 2278 7364 3a73 7472  y\" type=\"xsd:str\n-00001360: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-00001370: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00001380: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00001390: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000013a0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-000013b0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-000013c0: 5573 6520 7072 6f78 7920 6661 6374 6f72  Use proxy factor\n-000013d0: 792e 205d 5d3e 3c2f 7873 643a 646f 6375  y. ]]></xsd:docu\n-000013e0: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-000013f0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00001400: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00001410: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00001420: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-00001430: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00001440: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00001450: 206e 616d 653d 2263 6c75 7374 6572 2220   name=\"cluster\" \n-00001460: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-00001470: 223e 0a20 2020 2020 2020 2020 2020 2020  \">.             \n-00001480: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-00001490: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-000014a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000014b0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-000014c0: 6f6e 3e3c 215b 4344 4154 415b 2055 7365  on><![CDATA[ Use\n-000014d0: 2063 6c75 7374 6572 2073 7472 6174 6567   cluster strateg\n-000014e0: 792e 205d 5d3e 3c2f 7873 643a 646f 6375  y. ]]></xsd:docu\n-000014f0: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-00001500: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00001510: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00001520: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00001530: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-00001540: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00001550: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00001560: 206e 616d 653d 2266 6f72 6b73 2220 7479   name=\"forks\" ty\n-00001570: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00001580: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00001590: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-000015a0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-000015b0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-000015c0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-000015d0: 3e3c 215b 4344 4154 415b 2046 6f72 6b69  ><![CDATA[ Forki\n-000015e0: 6e67 436c 7573 7465 7220 666f 726b 732e  ngCluster forks.\n-000015f0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-00001600: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00001610: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-00001620: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00001630: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00001640: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00001650: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001660: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00001670: 616d 653d 2266 696c 7465 7222 2074 7970  ame=\"filter\" typ\n-00001680: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-00001690: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000016a0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-000016b0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-000016c0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-000016d0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-000016e0: 3c21 5b43 4441 5441 5b20 5468 6520 6669  <![CDATA[ The fi\n-000016f0: 6c74 6572 2e20 5d5d 3e3c 2f78 7364 3a64  lter. ]]></xsd:d\n-00001700: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00001710: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001720: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-00001730: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00001740: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00001750: 7574 653e 0a20 2020 2020 2020 2020 2020  ute>.           \n-00001760: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-00001770: 7574 6520 6e61 6d65 3d22 6c69 7374 656e  ute name=\"listen\n-00001780: 6572 2220 7479 7065 3d22 7873 643a 7374  er\" type=\"xsd:st\n-00001790: 7269 6e67 223e 0a20 2020 2020 2020 2020  ring\">.         \n-000017a0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-000017b0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-000017c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000017d0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-000017e0: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n-000017f0: 2054 6865 206c 6973 7465 6e65 722e 205d   The listener. ]\n-00001800: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-00001810: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00001820: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00001830: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00001840: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-00001850: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-00001860: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00001870: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-00001880: 653d 226f 776e 6572 2220 7479 7065 3d22  e=\"owner\" type=\"\n-00001890: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-000018a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000018b0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-000018c0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-000018d0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-000018e0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-000018f0: 4344 4154 415b 2054 6865 206f 776e 6572  CDATA[ The owner\n-00001900: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-00001910: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00001920: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-00001930: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n+00000030: 226e 6f22 3f3e 0d0a 3c78 7364 3a73 6368  \"no\"?>..<xsd:sch\n+00000040: 656d 6120 786d 6c6e 733a 7873 643d 2268  ema xmlns:xsd=\"h\n+00000050: 7474 703a 2f2f 7777 772e 7733 2e6f 7267  ttp://www.w3.org\n+00000060: 2f32 3030 312f 584d 4c53 6368 656d 6122  /2001/XMLSchema\"\n+00000070: 0d0a 2020 2020 2020 2020 2020 2020 786d  ..            xm\n+00000080: 6c6e 733a 6265 616e 733d 2268 7474 703a  lns:beans=\"http:\n+00000090: 2f2f 7777 772e 7370 7269 6e67 6672 616d  //www.springfram\n+000000a0: 6577 6f72 6b2e 6f72 672f 7363 6865 6d61  ework.org/schema\n+000000b0: 2f62 6561 6e73 220d 0a20 2020 2020 2020  /beans\"..       \n+000000c0: 2020 2020 2078 6d6c 6e73 3a74 6f6f 6c3d       xmlns:tool=\n+000000d0: 2268 7474 703a 2f2f 7777 772e 7370 7269  \"http://www.spri\n+000000e0: 6e67 6672 616d 6577 6f72 6b2e 6f72 672f  ngframework.org/\n+000000f0: 7363 6865 6d61 2f74 6f6f 6c22 0d0a 2020  schema/tool\"..  \n+00000100: 2020 2020 2020 2020 2020 786d 6c6e 733d            xmlns=\n+00000110: 2268 7474 703a 2f2f 6475 6262 6f2e 6170  \"http://dubbo.ap\n+00000120: 6163 6865 2e6f 7267 2f73 6368 656d 612f  ache.org/schema/\n+00000130: 6475 6262 6f22 0d0a 2020 2020 2020 2020  dubbo\"..        \n+00000140: 2020 2020 7461 7267 6574 4e61 6d65 7370      targetNamesp\n+00000150: 6163 653d 2268 7474 703a 2f2f 6475 6262  ace=\"http://dubb\n+00000160: 6f2e 6170 6163 6865 2e6f 7267 2f73 6368  o.apache.org/sch\n+00000170: 656d 612f 6475 6262 6f22 3e0d 0a0d 0a20  ema/dubbo\">.... \n+00000180: 2020 203c 7873 643a 696d 706f 7274 206e     <xsd:import n\n+00000190: 616d 6573 7061 6365 3d22 6874 7470 3a2f  amespace=\"http:/\n+000001a0: 2f77 7777 2e77 332e 6f72 672f 584d 4c2f  /www.w3.org/XML/\n+000001b0: 3139 3938 2f6e 616d 6573 7061 6365 222f  1998/namespace\"/\n+000001c0: 3e0d 0a20 2020 203c 7873 643a 696d 706f  >..    <xsd:impo\n+000001d0: 7274 206e 616d 6573 7061 6365 3d22 6874  rt namespace=\"ht\n+000001e0: 7470 3a2f 2f77 7777 2e73 7072 696e 6766  tp://www.springf\n+000001f0: 7261 6d65 776f 726b 2e6f 7267 2f73 6368  ramework.org/sch\n+00000200: 656d 612f 6265 616e 7322 0d0a 2020 2020  ema/beans\"..    \n+00000210: 2020 2020 2020 2020 2020 2020 7363 6865              sche\n+00000220: 6d61 4c6f 6361 7469 6f6e 3d22 6874 7470  maLocation=\"http\n+00000230: 3a2f 2f77 7777 2e73 7072 696e 6766 7261  ://www.springfra\n+00000240: 6d65 776f 726b 2e6f 7267 2f73 6368 656d  mework.org/schem\n+00000250: 612f 6265 616e 732f 7370 7269 6e67 2d62  a/beans/spring-b\n+00000260: 6561 6e73 2e78 7364 222f 3e0d 0a20 2020  eans.xsd\"/>..   \n+00000270: 203c 7873 643a 696d 706f 7274 206e 616d   <xsd:import nam\n+00000280: 6573 7061 6365 3d22 6874 7470 3a2f 2f77  espace=\"http://w\n+00000290: 7777 2e73 7072 696e 6766 7261 6d65 776f  ww.springframewo\n+000002a0: 726b 2e6f 7267 2f73 6368 656d 612f 746f  rk.org/schema/to\n+000002b0: 6f6c 222f 3e0d 0a0d 0a20 2020 203c 7873  ol\"/>....    <xs\n+000002c0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+000002d0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+000002e0: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+000002f0: 2020 2020 2020 2020 3c21 5b43 4441 5441          <![CDATA\n+00000300: 5b20 4e61 6d65 7370 6163 6520 7375 7070  [ Namespace supp\n+00000310: 6f72 7420 666f 7220 7468 6520 6475 6262  ort for the dubb\n+00000320: 6f20 7365 7276 6963 6573 2070 726f 7669  o services provi\n+00000330: 6465 6420 6279 2064 7562 626f 2066 7261  ded by dubbo fra\n+00000340: 6d65 776f 726b 2e20 5d5d 3e3c 2f78 7364  mework. ]]></xsd\n+00000350: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00000360: 0a20 2020 203c 2f78 7364 3a61 6e6e 6f74  .    </xsd:annot\n+00000370: 6174 696f 6e3e 0d0a 0d0a 2020 2020 3c78  ation>....    <x\n+00000380: 7364 3a63 6f6d 706c 6578 5479 7065 206e  sd:complexType n\n+00000390: 616d 653d 2261 6273 7472 6163 744d 6574  ame=\"abstractMet\n+000003a0: 686f 6454 7970 6522 3e0d 0a20 2020 2020  hodType\">..     \n+000003b0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+000003c0: 6520 6e61 6d65 3d22 7469 6d65 6f75 7422  e name=\"timeout\"\n+000003d0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+000003e0: 6722 2064 6566 6175 6c74 3d22 3022 3e0d  g\" default=\"0\">.\n+000003f0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00000400: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00000410: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00000420: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00000430: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n+00000440: 6d65 7468 6f64 2069 6e76 6f6b 6520 7469  method invoke ti\n+00000450: 6d65 6f75 742e 205d 5d3e 3c2f 7873 643a  meout. ]]></xsd:\n+00000460: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00000470: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00000480: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00000490: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+000004a0: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+000004b0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+000004c0: 6e61 6d65 3d22 7265 7472 6965 7322 2074  name=\"retries\" t\n+000004d0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+000004e0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+000004f0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00000500: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00000510: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00000520: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+00000530: 6520 6d65 7468 6f64 2072 6574 7279 2074  e method retry t\n+00000540: 696d 6573 2e20 5d5d 3e3c 2f78 7364 3a64  imes. ]]></xsd:d\n+00000550: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+00000560: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00000570: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00000580: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+00000590: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+000005a0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+000005b0: 616d 653d 2266 6169 6c62 6163 6b74 6173  ame=\"failbacktas\n+000005c0: 6b73 2220 7479 7065 3d22 7873 643a 7374  ks\" type=\"xsd:st\n+000005d0: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+000005e0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+000005f0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00000600: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00000610: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00000620: 415b 2054 6865 206d 6178 2066 6169 6c62  A[ The max failb\n+00000630: 6163 6b20 7461 736b 7320 6361 7061 6369  ack tasks capaci\n+00000640: 7479 2073 697a 652e 205d 5d3e 3c2f 7873  ty size. ]]></xs\n+00000650: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00000660: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+00000670: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00000680: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+00000690: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+000006a0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+000006b0: 6520 6e61 6d65 3d22 6163 7469 7665 7322  e name=\"actives\"\n+000006c0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+000006d0: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+000006e0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+000006f0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00000700: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+00000710: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+00000720: 5468 6520 6d61 7820 6163 7469 7665 2072  The max active r\n+00000730: 6571 7565 7374 732e 205d 5d3e 3c2f 7873  equests. ]]></xs\n+00000740: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00000750: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+00000760: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00000770: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+00000780: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+00000790: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+000007a0: 6520 6e61 6d65 3d22 636f 6e6e 6563 7469  e name=\"connecti\n+000007b0: 6f6e 7322 2074 7970 653d 2278 7364 3a73  ons\" type=\"xsd:s\n+000007c0: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+000007d0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+000007e0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+000007f0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+00000800: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00000810: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00000820: 3c21 5b43 4441 5441 5b20 5468 6520 6578  <![CDATA[ The ex\n+00000830: 636c 7573 6976 6520 636f 6e6e 6563 7469  clusive connecti\n+00000840: 6f6e 732e 2064 6566 6175 6c74 2073 6861  ons. default sha\n+00000850: 7265 206f 6e65 2063 6f6e 6e65 6374 696f  re one connectio\n+00000860: 6e2e 205d 5d3e 3c2f 7873 643a 646f 6375  n. ]]></xsd:docu\n+00000870: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00000880: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00000890: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+000008a0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+000008b0: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+000008c0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+000008d0: 3d22 6c6f 6164 6261 6c61 6e63 6522 2074  =\"loadbalance\" t\n+000008e0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+000008f0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00000900: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00000910: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00000920: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00000930: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+00000940: 6520 6d65 7468 6f64 206c 6f61 6420 6261  e method load ba\n+00000950: 6c61 6e63 652e 205d 5d3e 3c2f 7873 643a  lance. ]]></xsd:\n+00000960: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00000970: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00000980: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00000990: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+000009a0: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+000009b0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+000009c0: 6e61 6d65 3d22 6173 796e 6322 2074 7970  name=\"async\" typ\n+000009d0: 653d 2278 7364 3a73 7472 696e 6722 2064  e=\"xsd:string\" d\n+000009e0: 6566 6175 6c74 3d22 6661 6c73 6522 3e0d  efault=\"false\">.\n+000009f0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00000a00: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00000a10: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00000a20: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00000a30: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n+00000a40: 6d65 7468 6f64 2064 6f65 7320 6173 796e  method does asyn\n+00000a50: 632e 205d 5d3e 3c2f 7873 643a 646f 6375  c. ]]></xsd:docu\n+00000a60: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00000a70: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00000a80: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00000a90: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00000aa0: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+00000ab0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00000ac0: 3d22 7365 6e74 2220 7479 7065 3d22 7873  =\"sent\" type=\"xs\n+00000ad0: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+00000ae0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+00000af0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00000b00: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00000b10: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00000b20: 4344 4154 415b 2054 6865 2061 7379 6e63  CDATA[ The async\n+00000b30: 206d 6574 686f 6420 7265 7475 726e 2061   method return a\n+00000b40: 7761 6974 206d 6573 7361 6765 2073 656e  wait message sen\n+00000b50: 7420 5d5d 3e3c 2f78 7364 3a64 6f63 756d  t ]]></xsd:docum\n+00000b60: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00000b70: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00000b80: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00000b90: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00000ba0: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+00000bb0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00000bc0: 226d 6f63 6b22 2074 7970 653d 2278 7364  \"mock\" type=\"xsd\n+00000bd0: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+00000be0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+00000bf0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00000c00: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00000c10: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+00000c20: 4441 5441 5b20 5573 6520 7365 7276 6963  DATA[ Use servic\n+00000c30: 6520 6d6f 636b 2069 6d70 6c65 6d65 6e74  e mock implement\n+00000c40: 6174 696f 6e2e 205d 5d3e 3c2f 7873 643a  ation. ]]></xsd:\n+00000c50: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00000c60: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00000c70: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00000c80: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+00000c90: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+00000ca0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+00000cb0: 6e61 6d65 3d22 6d65 7267 6572 2220 7479  name=\"merger\" ty\n+00000cc0: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+00000cd0: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+00000ce0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00000cf0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00000d00: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00000d10: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+00000d20: 206d 756c 7469 2d67 726f 7570 2072 6573   multi-group res\n+00000d30: 756c 7420 6d65 7267 6572 205d 5d3e 3c2f  ult merger ]]></\n+00000d40: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00000d50: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00000d60: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+00000d70: 3e0d 0a20 2020 2020 2020 203c 2f78 7364  >..        </xsd\n+00000d80: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00000d90: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+00000da0: 7574 6520 6e61 6d65 3d22 7661 6c69 6461  ute name=\"valida\n+00000db0: 7469 6f6e 2220 7479 7065 3d22 7873 643a  tion\" type=\"xsd:\n+00000dc0: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+00000dd0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00000de0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00000df0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00000e00: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00000e10: 4154 415b 2055 7365 2073 6572 7669 6365  ATA[ Use service\n+00000e20: 206a 7372 3330 3320 7661 6c69 6461 7469   jsr303 validati\n+00000e30: 6f6e 2c20 7472 7565 2f66 616c 7365 2e20  on, true/false. \n+00000e40: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+00000e50: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00000e60: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00000e70: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00000e80: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00000e90: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+00000ea0: 7474 7269 6275 7465 206e 616d 653d 2263  ttribute name=\"c\n+00000eb0: 6163 6865 2220 7479 7065 3d22 7873 643a  ache\" type=\"xsd:\n+00000ec0: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+00000ed0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00000ee0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00000ef0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00000f00: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00000f10: 4154 415b 2055 7365 2073 6572 7669 6365  ATA[ Use service\n+00000f20: 2063 6163 6865 2c20 6c72 752f 7468 7265   cache, lru/thre\n+00000f30: 6164 6c6f 6361 6c2f 6a63 6163 6865 2e20  adlocal/jcache. \n+00000f40: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+00000f50: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00000f60: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00000f70: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00000f80: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00000f90: 0d0a 2020 2020 3c2f 7873 643a 636f 6d70  ..    </xsd:comp\n+00000fa0: 6c65 7854 7970 653e 0d0a 0d0a 2020 2020  lexType>....    \n+00000fb0: 3c78 7364 3a63 6f6d 706c 6578 5479 7065  <xsd:complexType\n+00000fc0: 206e 616d 653d 2261 6273 7472 6163 7449   name=\"abstractI\n+00000fd0: 6e74 6572 6661 6365 5479 7065 223e 0d0a  nterfaceType\">..\n+00000fe0: 2020 2020 2020 2020 3c78 7364 3a63 6f6d          <xsd:com\n+00000ff0: 706c 6578 436f 6e74 656e 743e 0d0a 2020  plexContent>..  \n+00001000: 2020 2020 2020 2020 2020 3c78 7364 3a65            <xsd:e\n+00001010: 7874 656e 7369 6f6e 2062 6173 653d 2261  xtension base=\"a\n+00001020: 6273 7472 6163 744d 6574 686f 6454 7970  bstractMethodTyp\n+00001030: 6522 3e0d 0a20 2020 2020 2020 2020 2020  e\">..           \n+00001040: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+00001050: 7574 6520 6e61 6d65 3d22 6964 2220 7479  ute name=\"id\" ty\n+00001060: 7065 3d22 7873 643a 4944 223e 0d0a 2020  pe=\"xsd:ID\">..  \n+00001070: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001080: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00001090: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000010a0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000010b0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+000010c0: 215b 4344 4154 415b 2054 6865 2075 6e69  ![CDATA[ The uni\n+000010d0: 7175 6520 6964 656e 7469 6669 6572 2066  que identifier f\n+000010e0: 6f72 2061 2062 6561 6e2e 205d 5d3e 3c2f  or a bean. ]]></\n+000010f0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00001100: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00001110: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00001120: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00001130: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00001140: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00001150: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00001160: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00001170: 3d22 6c6f 6361 6c22 2074 7970 653d 2278  =\"local\" type=\"x\n+00001180: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+00001190: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000011a0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+000011b0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+000011c0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+000011d0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+000011e0: 5b43 4441 5441 5b20 5573 6520 7365 7276  [CDATA[ Use serv\n+000011f0: 6963 6520 6c6f 6361 6c20 696d 706c 656d  ice local implem\n+00001200: 656e 7461 7469 6f6e 2e20 5d5d 3e3c 2f78  entation. ]]></x\n+00001210: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00001220: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00001230: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00001240: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00001250: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00001260: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+00001270: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00001280: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00001290: 2273 7475 6222 2074 7970 653d 2278 7364  \"stub\" type=\"xsd\n+000012a0: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+000012b0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+000012c0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+000012d0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000012e0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+000012f0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+00001300: 4441 5441 5b20 5573 6520 7365 7276 6963  DATA[ Use servic\n+00001310: 6520 6c6f 6361 6c20 696d 706c 656d 656e  e local implemen\n+00001320: 7461 7469 6f6e 2e20 5d5d 3e3c 2f78 7364  tation. ]]></xsd\n+00001330: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00001340: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00001350: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00001360: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00001370: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+00001380: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+00001390: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+000013a0: 7474 7269 6275 7465 206e 616d 653d 2270  ttribute name=\"p\n+000013b0: 726f 7879 2220 7479 7065 3d22 7873 643a  roxy\" type=\"xsd:\n+000013c0: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+000013d0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+000013e0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+000013f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001400: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00001410: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00001420: 4154 415b 2055 7365 2070 726f 7879 2066  ATA[ Use proxy f\n+00001430: 6163 746f 7279 2e20 5d5d 3e3c 2f78 7364  actory. ]]></xsd\n+00001440: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00001450: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00001460: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00001470: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00001480: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+00001490: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+000014a0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+000014b0: 7474 7269 6275 7465 206e 616d 653d 2263  ttribute name=\"c\n+000014c0: 6c75 7374 6572 2220 7479 7065 3d22 7873  luster\" type=\"xs\n+000014d0: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+000014e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000014f0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+00001500: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00001510: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00001520: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00001530: 4344 4154 415b 2055 7365 2063 6c75 7374  CDATA[ Use clust\n+00001540: 6572 2073 7472 6174 6567 792e 205d 5d3e  er strategy. ]]>\n+00001550: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+00001560: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00001570: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00001580: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00001590: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+000015a0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+000015b0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+000015c0: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+000015d0: 6d65 3d22 666f 726b 7322 2074 7970 653d  me=\"forks\" type=\n+000015e0: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+000015f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001600: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00001610: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00001620: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00001630: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00001640: 3c21 5b43 4441 5441 5b20 466f 726b 696e  <![CDATA[ Forkin\n+00001650: 6743 6c75 7374 6572 2066 6f72 6b73 2e20  gCluster forks. \n+00001660: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+00001670: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00001680: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+00001690: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+000016a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000016b0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+000016c0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+000016d0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+000016e0: 206e 616d 653d 2266 696c 7465 7222 2074   name=\"filter\" t\n+000016f0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+00001700: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00001710: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+00001720: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00001730: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001740: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00001750: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+00001760: 6520 6669 6c74 6572 2e20 5d5d 3e3c 2f78  e filter. ]]></x\n+00001770: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00001780: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00001790: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+000017a0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+000017b0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+000017c0: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+000017d0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000017e0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+000017f0: 226c 6973 7465 6e65 7222 2074 7970 653d  \"listener\" type=\n+00001800: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+00001810: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001820: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00001830: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00001840: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00001850: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00001860: 3c21 5b43 4441 5441 5b20 5468 6520 6c69  <![CDATA[ The li\n+00001870: 7374 656e 6572 2e20 5d5d 3e3c 2f78 7364  stener. ]]></xsd\n+00001880: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00001890: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000018a0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+000018b0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+000018c0: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+000018d0: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+000018e0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+000018f0: 7474 7269 6275 7465 206e 616d 653d 226f  ttribute name=\"o\n+00001900: 776e 6572 2220 7479 7065 3d22 7873 643a  wner\" type=\"xsd:\n+00001910: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+00001920: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00001930: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n 00001940: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001950: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00001960: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00001970: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00001980: 6e61 6d65 3d22 6c61 7965 7222 2074 7970  name=\"layer\" typ\n-00001990: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-000019a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000019b0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-000019c0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-000019d0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-000019e0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-000019f0: 3c21 5b43 4441 5441 5b20 6c61 7965 7220  <![CDATA[ layer \n-00001a00: 696e 666f 2e20 5d5d 3e3c 2f78 7364 3a64  info. ]]></xsd:d\n-00001a10: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00001a20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001a30: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-00001a40: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00001a50: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00001a60: 7574 653e 0a20 2020 2020 2020 2020 2020  ute>.           \n-00001a70: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-00001a80: 7574 6520 6e61 6d65 3d22 6170 706c 6963  ute name=\"applic\n-00001a90: 6174 696f 6e22 2074 7970 653d 2278 7364  ation\" type=\"xsd\n-00001aa0: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-00001ab0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00001ac0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00001ad0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001ae0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-00001af0: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-00001b00: 5441 5b20 5468 6520 7365 7276 6963 6520  TA[ The service \n-00001b10: 6170 706c 6963 6174 696f 6e2e 205d 5d3e  application. ]]>\n-00001b20: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-00001b30: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00001b40: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00001b50: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00001b60: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00001b70: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-00001b80: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00001b90: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-00001ba0: 226d 6f64 756c 6522 2074 7970 653d 2278  \"module\" type=\"x\n-00001bb0: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n+00001950: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00001960: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00001970: 4154 415b 2054 6865 206f 776e 6572 2e20  ATA[ The owner. \n+00001980: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+00001990: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+000019a0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+000019b0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+000019c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000019d0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+000019e0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+000019f0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+00001a00: 206e 616d 653d 226c 6179 6572 2220 7479   name=\"layer\" ty\n+00001a10: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+00001a20: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00001a30: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00001a40: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00001a50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001a60: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00001a70: 6f6e 3e3c 215b 4344 4154 415b 206c 6179  on><![CDATA[ lay\n+00001a80: 6572 2069 6e66 6f2e 205d 5d3e 3c2f 7873  er info. ]]></xs\n+00001a90: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00001aa0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00001ab0: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+00001ac0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00001ad0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+00001ae0: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+00001af0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00001b00: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+00001b10: 6170 706c 6963 6174 696f 6e22 2074 7970  application\" typ\n+00001b20: 653d 2278 7364 3a73 7472 696e 6722 3e0d  e=\"xsd:string\">.\n+00001b30: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00001b40: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+00001b50: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00001b60: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00001b70: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00001b80: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n+00001b90: 7365 7276 6963 6520 6170 706c 6963 6174  service applicat\n+00001ba0: 696f 6e2e 205d 5d3e 3c2f 7873 643a 646f  ion. ]]></xsd:do\n+00001bb0: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n 00001bc0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001bd0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-00001be0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00001bf0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00001c00: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00001c10: 4441 5441 5b20 5468 6520 7365 7276 6963  DATA[ The servic\n-00001c20: 6520 6d6f 6475 6c65 2e20 5d5d 3e3c 2f78  e module. ]]></x\n-00001c30: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00001c40: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00001c50: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00001c60: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00001c70: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00001c80: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00001c90: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n-00001ca0: 7472 6962 7574 6520 6e61 6d65 3d22 7265  tribute name=\"re\n-00001cb0: 6769 7374 7279 2220 7479 7065 3d22 7873  gistry\" type=\"xs\n-00001cc0: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-00001cd0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00001ce0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00001cf0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001d00: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-00001d10: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-00001d20: 4154 415b 2054 6865 2073 6572 7669 6365  ATA[ The service\n-00001d30: 2072 6567 6973 7472 792e 205d 5d3e 3c2f   registry. ]]></\n-00001d40: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00001d50: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00001d60: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-00001d70: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00001d80: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00001d90: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00001da0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00001db0: 7474 7269 6275 7465 206e 616d 653d 226d  ttribute name=\"m\n-00001dc0: 6f6e 6974 6f72 2220 7479 7065 3d22 7873  onitor\" type=\"xs\n-00001dd0: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-00001de0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00001df0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00001e00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001e10: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-00001e20: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-00001e30: 4154 415b 2054 6865 2073 6572 7669 6365  ATA[ The service\n-00001e40: 206d 6f6e 6974 6f72 2e20 5d5d 3e3c 2f78   monitor. ]]></x\n-00001e50: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00001e60: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00001e70: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00001e80: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00001e90: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00001ea0: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00001eb0: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n-00001ec0: 7472 6962 7574 6520 6e61 6d65 3d22 6361  tribute name=\"ca\n-00001ed0: 6c6c 6261 636b 7322 2074 7970 653d 2278  llbacks\" type=\"x\n-00001ee0: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-00001ef0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001f00: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-00001f10: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00001f20: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00001f30: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00001f40: 4441 5441 5b20 5468 6520 6361 6c6c 6261  DATA[ The callba\n-00001f50: 636b 2069 6e73 7461 6e63 6520 6c69 6d69  ck instance limi\n-00001f60: 7420 7065 6572 2063 6f6e 6e65 6374 696f  t peer connectio\n-00001f70: 6e2e 5d5d 3e3c 2f78 7364 3a64 6f63 756d  n.]]></xsd:docum\n-00001f80: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00001f90: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-00001fa0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n+00001bd0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+00001be0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00001bf0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+00001c00: 6275 7465 3e0d 0a20 2020 2020 2020 2020  bute>..         \n+00001c10: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+00001c20: 6962 7574 6520 6e61 6d65 3d22 6d6f 6475  ibute name=\"modu\n+00001c30: 6c65 2220 7479 7065 3d22 7873 643a 7374  le\" type=\"xsd:st\n+00001c40: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+00001c50: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00001c60: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00001c70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001c80: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00001c90: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00001ca0: 415b 2054 6865 2073 6572 7669 6365 206d  A[ The service m\n+00001cb0: 6f64 756c 652e 205d 5d3e 3c2f 7873 643a  odule. ]]></xsd:\n+00001cc0: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00001cd0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001ce0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+00001cf0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00001d00: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+00001d10: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+00001d20: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n+00001d30: 7472 6962 7574 6520 6e61 6d65 3d22 7265  tribute name=\"re\n+00001d40: 6769 7374 7279 2220 7479 7065 3d22 7873  gistry\" type=\"xs\n+00001d50: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+00001d60: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00001d70: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+00001d80: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00001d90: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00001da0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00001db0: 4344 4154 415b 2054 6865 2073 6572 7669  CDATA[ The servi\n+00001dc0: 6365 2072 6567 6973 7472 792e 205d 5d3e  ce registry. ]]>\n+00001dd0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+00001de0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00001df0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00001e00: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00001e10: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+00001e20: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+00001e30: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00001e40: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00001e50: 6d65 3d22 6d6f 6e69 746f 7222 2074 7970  me=\"monitor\" typ\n+00001e60: 653d 2278 7364 3a73 7472 696e 6722 3e0d  e=\"xsd:string\">.\n+00001e70: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00001e80: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+00001e90: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00001ea0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00001eb0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00001ec0: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n+00001ed0: 7365 7276 6963 6520 6d6f 6e69 746f 722e  service monitor.\n+00001ee0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00001ef0: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00001f00: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+00001f10: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00001f20: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00001f30: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+00001f40: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00001f50: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+00001f60: 6520 6e61 6d65 3d22 6361 6c6c 6261 636b  e name=\"callback\n+00001f70: 7322 2074 7970 653d 2278 7364 3a73 7472  s\" type=\"xsd:str\n+00001f80: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+00001f90: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00001fa0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n 00001fb0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00001fc0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00001fd0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00001fe0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00001ff0: 6e61 6d65 3d22 6f6e 636f 6e6e 6563 7422  name=\"onconnect\"\n-00002000: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-00002010: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-00002020: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00002030: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00002040: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002050: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-00002060: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-00002070: 6520 7365 7276 6963 6520 636c 6965 6e74  e service client\n-00002080: 2063 6f6e 6e65 6374 6564 2e20 5d5d 3e3c   connected. ]]><\n-00002090: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-000020a0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-000020b0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-000020c0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-000020d0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-000020e0: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-000020f0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00002100: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-00002110: 6f6e 6469 7363 6f6e 6e65 6374 2220 7479  ondisconnect\" ty\n-00002120: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00002130: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00002140: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00002150: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00002160: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00002170: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00002180: 3e3c 215b 4344 4154 415b 2054 6865 2073  ><![CDATA[ The s\n-00002190: 6572 7669 6365 2063 6c69 656e 7420 6469  ervice client di\n-000021a0: 7363 6f6e 6e65 6374 6564 2e20 5d5d 3e3c  sconnected. ]]><\n-000021b0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-000021c0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-000021d0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-000021e0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-000021f0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00002200: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-00002210: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00002220: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-00002230: 7363 6f70 6522 2074 7970 653d 2278 7364  scope\" type=\"xsd\n-00002240: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-00002250: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00002260: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00002270: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002280: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-00002290: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-000022a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000022b0: 2020 2020 2020 203c 215b 4344 4154 415b         <![CDATA[\n-000022c0: 2044 6566 696e 6573 2074 6865 2073 6572   Defines the ser\n-000022d0: 7669 6365 2076 6973 6962 696c 6974 792c  vice visibility,\n-000022e0: 2063 686f 6973 653a 5b6c 6f63 616c 2072   choise:[local r\n-000022f0: 656d 6f74 655d 2e20 6465 6661 756c 7420  emote]. default \n-00002300: 6973 2072 656d 6f74 652c 2077 6869 6368  is remote, which\n-00002310: 2063 616e 2062 6520 696e 766f 6b65 6420   can be invoked \n-00002320: 6279 206e 6574 776f 726b e380 8220 205d  by network...  ]\n-00002330: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-00002340: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00002350: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00002360: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00002370: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-00002380: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-00002390: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-000023a0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-000023b0: 653d 2274 6167 2220 7479 7065 3d22 7873  e=\"tag\" type=\"xs\n-000023c0: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-000023d0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000023e0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-000023f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002400: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-00002410: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00002420: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002430: 2020 2020 2020 2020 3c21 5b43 4441 5441          <![CDATA\n-00002440: 5b20 4465 6669 6e65 7320 7468 6520 7365  [ Defines the se\n-00002450: 7276 6963 6520 7461 675d 5d3e 3c2f 7873  rvice tag]]></xs\n-00002460: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00002470: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00002480: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00002490: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-000024a0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-000024b0: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-000024c0: 2020 2020 3c2f 7873 643a 6578 7465 6e73      </xsd:extens\n-000024d0: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-000024e0: 7364 3a63 6f6d 706c 6578 436f 6e74 656e  sd:complexConten\n-000024f0: 743e 0a20 2020 203c 2f78 7364 3a63 6f6d  t>.    </xsd:com\n-00002500: 706c 6578 5479 7065 3e0a 0a20 2020 203c  plexType>..    <\n-00002510: 7873 643a 636f 6d70 6c65 7854 7970 6520  xsd:complexType \n-00002520: 6e61 6d65 3d22 6162 7374 7261 6374 5265  name=\"abstractRe\n-00002530: 6665 7265 6e63 6554 7970 6522 3e0a 2020  ferenceType\">.  \n-00002540: 2020 2020 2020 3c78 7364 3a63 6f6d 706c        <xsd:compl\n-00002550: 6578 436f 6e74 656e 743e 0a20 2020 2020  exContent>.     \n-00002560: 2020 2020 2020 203c 7873 643a 6578 7465         <xsd:exte\n-00002570: 6e73 696f 6e20 6261 7365 3d22 6162 7374  nsion base=\"abst\n-00002580: 7261 6374 496e 7465 7266 6163 6554 7970  ractInterfaceTyp\n-00002590: 6522 3e0a 2020 2020 2020 2020 2020 2020  e\">.            \n-000025a0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-000025b0: 7465 206e 616d 653d 2276 6572 7369 6f6e  te name=\"version\n-000025c0: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-000025d0: 6e67 2220 6465 6661 756c 743d 2230 2e30  ng\" default=\"0.0\n-000025e0: 2e30 223e 0a20 2020 2020 2020 2020 2020  .0\">.           \n-000025f0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-00002600: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00002610: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002620: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-00002630: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-00002640: 6865 2073 6572 7669 6365 2076 6572 7369  he service versi\n-00002650: 6f6e 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  on. ]]></xsd:doc\n-00002660: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00002670: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002680: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00002690: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-000026a0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-000026b0: 653e 0a20 2020 2020 2020 2020 2020 2020  e>.             \n-000026c0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-000026d0: 6520 6e61 6d65 3d22 6772 6f75 7022 2074  e name=\"group\" t\n-000026e0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-000026f0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00002700: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-00002710: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00002720: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00002730: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00002740: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-00002750: 7365 7276 6963 6520 6772 6f75 702e 205d  service group. ]\n-00002760: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-00002770: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00002780: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00002790: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-000027a0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-000027b0: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-000027c0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-000027d0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-000027e0: 653d 2263 6865 636b 2220 7479 7065 3d22  e=\"check\" type=\"\n-000027f0: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-00002800: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002810: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-00002820: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00002830: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00002840: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-00002850: 4344 4154 415b 2043 6865 636b 2064 6570  CDATA[ Check dep\n-00002860: 656e 6465 6e63 7920 7072 6f76 6964 6572  endency provider\n-00002870: 732e 205d 5d3e 3c2f 7873 643a 646f 6375  s. ]]></xsd:docu\n-00002880: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-00002890: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000028a0: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-000028b0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-000028c0: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-000028d0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-000028e0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-000028f0: 206e 616d 653d 2269 6e69 7422 2074 7970   name=\"init\" typ\n-00002900: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-00002910: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002920: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-00002930: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00002940: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00002950: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00002960: 3c21 5b43 4441 5441 5b20 4561 6765 7220  <![CDATA[ Eager \n-00002970: 696e 6974 2072 6566 6572 656e 6365 2e20  init reference. \n-00002980: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00002990: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-000029a0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-000029b0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-000029c0: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-000029d0: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-000029e0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000029f0: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-00002a00: 6d65 3d22 6765 6e65 7269 6322 2074 7970  me=\"generic\" typ\n-00002a10: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-00002a20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002a30: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-00002a40: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00002a50: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00002a60: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00002a70: 3c21 5b43 4441 5441 5b20 4765 6e65 7269  <![CDATA[ Generi\n-00002a80: 6320 7365 7276 6963 652e 205d 5d3e 3c2f  c service. ]]></\n-00002a90: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00002aa0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00002ab0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-00002ac0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00002ad0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00002ae0: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00002af0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00002b00: 7474 7269 6275 7465 206e 616d 653d 2269  ttribute name=\"i\n-00002b10: 6e6a 766d 2220 7479 7065 3d22 7873 643a  njvm\" type=\"xsd:\n-00002b20: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-00002b30: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00002b40: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00002b50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002b60: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00002b70: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00002b80: 415b 4465 7072 6563 6174 6564 2e20 5265  A[Deprecated. Re\n-00002b90: 706c 6163 6520 746f 2020 7365 7420 7363  place to  set sc\n-00002ba0: 6f70 653d 6c6f 6361 6c20 5d5d 3e3c 2f78  ope=local ]]></x\n-00002bb0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00002bc0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00002bd0: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00002be0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00002bf0: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00002c00: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00002c10: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n-00002c20: 7472 6962 7574 6520 6e61 6d65 3d22 7374  tribute name=\"st\n-00002c30: 6963 6b79 2220 7479 7065 3d22 7873 643a  icky\" type=\"xsd:\n-00002c40: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-00002c50: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00002c60: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00002c70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002c80: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00002c90: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00002ca0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002cb0: 2020 2020 2020 3c21 5b43 4441 5441 5b20        <![CDATA[ \n-00002cc0: 456e 6162 6c65 2f44 6973 6162 6c65 2063  Enable/Disable c\n-00002cd0: 6c75 7374 6572 2073 7469 636b 7920 706f  luster sticky po\n-00002ce0: 6c69 6379 2e44 6566 6175 6c74 2066 616c  licy.Default fal\n-00002cf0: 7365 205d 5d3e 3c2f 7873 643a 646f 6375  se ]]></xsd:docu\n-00002d00: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-00002d10: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00002d20: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00002d30: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00002d40: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-00002d50: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00002d60: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00002d70: 206e 616d 653d 2272 6563 6f6e 6e65 6374   name=\"reconnect\n-00002d80: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-00002d90: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-00002da0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-00002db0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00002dc0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002dd0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-00002de0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00002df0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002e00: 2020 3c21 5b43 4441 5441 5b20 7265 6d6f    <![CDATA[ remo\n-00002e10: 7469 6e67 2072 6563 6f6e 6e65 6374 2074  ting reconnect t\n-00002e20: 696d 6572 2e20 6661 6c73 6520 7265 7072  imer. false repr\n-00002e30: 6573 656e 7420 636c 6f73 6520 7265 636f  esent close reco\n-00002e40: 6e6e 6563 742e 2069 6e74 6567 6572 2072  nnect. integer r\n-00002e50: 6570 7265 7365 6e74 2069 6e74 6572 7661  epresent interva\n-00002e60: 6c28 6d73 2920 2e64 6566 6175 6c74 2074  l(ms) .default t\n-00002e70: 7275 6528 3230 3030 6d73 292e 5d5d 3e3c  rue(2000ms).]]><\n-00002e80: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-00002e90: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00002ea0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-00002eb0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00002ec0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00002ed0: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-00002ee0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00002ef0: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-00002f00: 6c61 7a79 2220 7479 7065 3d22 7873 643a  lazy\" type=\"xsd:\n-00002f10: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-00002f20: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00002f30: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00002f40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00002f50: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00002f60: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00002f70: 415b 206c 617a 7920 6372 6561 7465 2063  A[ lazy create c\n-00002f80: 6f6e 6e65 6374 696f 6e2e 205d 5d3e 3c2f  onnection. ]]></\n-00002f90: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00002fa0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00002fb0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-00002fc0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00002fd0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00002fe0: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00002ff0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00003000: 7474 7269 6275 7465 206e 616d 653d 2270  ttribute name=\"p\n-00003010: 726f 7669 6465 642d 6279 2220 7479 7065  rovided-by\" type\n-00003020: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-00003030: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003040: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-00003050: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00003060: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00003070: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-00003080: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003090: 2020 2020 2020 2020 2020 2020 3c21 5b43              <![C\n-000030a0: 4441 5441 5b20 6465 636c 6172 6573 2077  DATA[ declares w\n-000030b0: 6869 6368 2061 7070 206f 7220 7365 7276  hich app or serv\n-000030c0: 6963 6520 7468 6973 2069 6e74 6572 6661  ice this interfa\n-000030d0: 6365 2062 656c 6f6e 6773 2074 6f2e 205d  ce belongs to. ]\n-000030e0: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-000030f0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00003100: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00003110: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00003120: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-00003130: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-00003140: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00003150: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-00003160: 653d 2272 6f75 7465 7222 2074 7970 653d  e=\"router\" type=\n-00003170: 2278 7364 3a73 7472 696e 6722 3e0a 2020  \"xsd:string\">.  \n-00003180: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003190: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-000031a0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-000031b0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-000031c0: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-000031d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000031e0: 2020 2020 2020 2020 2020 203c 215b 4344             <![CD\n-000031f0: 4154 415b 2054 6865 2072 6f75 7465 7273  ATA[ The routers\n-00003200: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-00003210: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00003220: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-00003230: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00003240: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00003250: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00003260: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00003270: 643a 6578 7465 6e73 696f 6e3e 0a20 2020  d:extension>.   \n-00003280: 2020 2020 203c 2f78 7364 3a63 6f6d 706c       </xsd:compl\n-00003290: 6578 436f 6e74 656e 743e 0a20 2020 203c  exContent>.    <\n-000032a0: 2f78 7364 3a63 6f6d 706c 6578 5479 7065  /xsd:complexType\n-000032b0: 3e0a 0a20 2020 203c 7873 643a 636f 6d70  >..    <xsd:comp\n-000032c0: 6c65 7854 7970 6520 6e61 6d65 3d22 6162  lexType name=\"ab\n-000032d0: 7374 7261 6374 5365 7276 6963 6554 7970  stractServiceTyp\n-000032e0: 6522 3e0a 2020 2020 2020 2020 3c78 7364  e\">.        <xsd\n-000032f0: 3a63 6f6d 706c 6578 436f 6e74 656e 743e  :complexContent>\n-00003300: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00003310: 643a 6578 7465 6e73 696f 6e20 6261 7365  d:extension base\n-00003320: 3d22 6162 7374 7261 6374 496e 7465 7266  =\"abstractInterf\n-00003330: 6163 6554 7970 6522 3e0a 2020 2020 2020  aceType\">.      \n-00003340: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00003350: 7474 7269 6275 7465 206e 616d 653d 2272  ttribute name=\"r\n-00003360: 6567 6973 7465 7222 2074 7970 653d 2278  egister\" type=\"x\n-00003370: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-00003380: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003390: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-000033a0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-000033b0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-000033c0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-000033d0: 4441 5441 5b20 5468 6520 7365 7276 6963  DATA[ The servic\n-000033e0: 6520 6361 6e20 6265 2072 6567 6973 7465  e can be registe\n-000033f0: 7220 746f 2072 6567 6973 7472 792e 205d  r to registry. ]\n-00003400: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-00003410: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00003420: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00003430: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00003440: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-00003450: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-00003460: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00003470: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-00003480: 653d 2276 6572 7369 6f6e 2220 7479 7065  e=\"version\" type\n-00003490: 3d22 7873 643a 7374 7269 6e67 2220 6465  =\"xsd:string\" de\n-000034a0: 6661 756c 743d 2230 2e30 2e30 223e 0a20  fault=\"0.0.0\">. \n-000034b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000034c0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-000034d0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-000034e0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000034f0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-00003500: 215b 4344 4154 415b 2054 6865 2073 6572  ![CDATA[ The ser\n-00003510: 7669 6365 2076 6572 7369 6f6e 2e20 5d5d  vice version. ]]\n-00003520: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-00003530: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00003540: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00003550: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00003560: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00003570: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-00003580: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00003590: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-000035a0: 3d22 6772 6f75 7022 2074 7970 653d 2278  =\"group\" type=\"x\n-000035b0: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-000035c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000035d0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-000035e0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-000035f0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00003600: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00003610: 4441 5441 5b20 5468 6520 7365 7276 6963  DATA[ The servic\n-00003620: 6520 6772 6f75 702e 205d 5d3e 3c2f 7873  e group. ]]></xs\n-00003630: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00003640: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00003650: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00003660: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00003670: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00003680: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00003690: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-000036a0: 7269 6275 7465 206e 616d 653d 2264 6570  ribute name=\"dep\n-000036b0: 7265 6361 7465 6422 2074 7970 653d 2278  recated\" type=\"x\n-000036c0: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-000036d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000036e0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-000036f0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00003700: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00003710: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00003720: 4441 5441 5b20 7768 6574 6865 7220 7468  DATA[ whether th\n-00003730: 6520 7365 7276 6963 6520 6973 2064 6570  e service is dep\n-00003740: 7265 6361 7465 642e 205d 5d3e 3c2f 7873  recated. ]]></xs\n-00003750: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00003760: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00003770: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00003780: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00003790: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-000037a0: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-000037b0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-000037c0: 7269 6275 7465 206e 616d 653d 2264 656c  ribute name=\"del\n-000037d0: 6179 2220 7479 7065 3d22 7873 643a 7374  ay\" type=\"xsd:st\n-000037e0: 7269 6e67 2220 6465 6661 756c 743d 2230  ring\" default=\"0\n-000037f0: 223e 0a20 2020 2020 2020 2020 2020 2020  \">.             \n-00003800: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-00003810: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00003820: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003830: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-00003840: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00003850: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003860: 3c21 5b43 4441 5441 5b20 5468 6520 7365  <![CDATA[ The se\n-00003870: 7276 6963 6520 6578 706f 7274 2064 656c  rvice export del\n-00003880: 6179 206d 696c 6c69 7365 636f 6e64 2e20  ay millisecond. \n-00003890: 5d5d 3e0a 2020 2020 2020 2020 2020 2020  ]]>.            \n-000038a0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-000038b0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-000038c0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-000038d0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-000038e0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-000038f0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00003900: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00003910: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-00003920: 7269 6275 7465 206e 616d 653d 2265 7870  ribute name=\"exp\n-00003930: 6f72 7422 2074 7970 653d 2278 7364 3a73  ort\" type=\"xsd:s\n-00003940: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-00003950: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00003960: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00003970: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003980: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-00003990: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-000039a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000039b0: 2020 2020 203c 215b 4344 4154 415b 2054       <![CDATA[ T\n-000039c0: 6865 2073 6572 7669 6365 2069 7320 6578  he service is ex\n-000039d0: 706f 7274 2e20 5d5d 3e0a 2020 2020 2020  port. ]]>.      \n-000039e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000039f0: 2020 3c2f 7873 643a 646f 6375 6d65 6e74    </xsd:document\n-00003a00: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00003a10: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00003a20: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00003a30: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-00003a40: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-00003a50: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00003a60: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-00003a70: 653d 2277 6569 6768 7422 2074 7970 653d  e=\"weight\" type=\n-00003a80: 2278 7364 3a73 7472 696e 6722 3e0a 2020  \"xsd:string\">.  \n+00001fc0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+00001fd0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+00001fe0: 5b20 5468 6520 6361 6c6c 6261 636b 2069  [ The callback i\n+00001ff0: 6e73 7461 6e63 6520 6c69 6d69 7420 7065  nstance limit pe\n+00002000: 6572 2063 6f6e 6e65 6374 696f 6e2e 5d5d  er connection.]]\n+00002010: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+00002020: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00002030: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00002040: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00002050: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+00002060: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+00002070: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002080: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+00002090: 616d 653d 226f 6e63 6f6e 6e65 6374 2220  ame=\"onconnect\" \n+000020a0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+000020b0: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+000020c0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+000020d0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+000020e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000020f0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+00002100: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+00002110: 6865 2073 6572 7669 6365 2063 6c69 656e  he service clien\n+00002120: 7420 636f 6e6e 6563 7465 642e 205d 5d3e  t connected. ]]>\n+00002130: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+00002140: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00002150: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00002160: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00002170: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+00002180: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+00002190: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+000021a0: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+000021b0: 6d65 3d22 6f6e 6469 7363 6f6e 6e65 6374  me=\"ondisconnect\n+000021c0: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+000021d0: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+000021e0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+000021f0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00002200: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002210: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00002220: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+00002230: 2054 6865 2073 6572 7669 6365 2063 6c69   The service cli\n+00002240: 656e 7420 6469 7363 6f6e 6e65 6374 6564  ent disconnected\n+00002250: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00002260: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00002270: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00002280: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00002290: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+000022a0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+000022b0: 653e 0d0a 2020 2020 2020 2020 2020 2020  e>..            \n+000022c0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+000022d0: 7465 206e 616d 653d 2273 636f 7065 2220  te name=\"scope\" \n+000022e0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+000022f0: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+00002300: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+00002310: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00002320: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002330: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+00002340: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00002350: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002360: 2020 203c 215b 4344 4154 415b 2044 6566     <![CDATA[ Def\n+00002370: 696e 6573 2074 6865 2073 6572 7669 6365  ines the service\n+00002380: 2076 6973 6962 696c 6974 792c 2063 686f   visibility, cho\n+00002390: 6973 653a 5b6c 6f63 616c 2072 656d 6f74  ise:[local remot\n+000023a0: 655d 2e20 6465 6661 756c 7420 6973 2072  e]. default is r\n+000023b0: 656d 6f74 652c 2077 6869 6368 2063 616e  emote, which can\n+000023c0: 2062 6520 696e 766f 6b65 6420 6279 206e   be invoked by n\n+000023d0: 6574 776f 726b e380 8220 205d 5d3e 3c2f  etwork...  ]]></\n+000023e0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+000023f0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00002400: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00002410: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00002420: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00002430: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00002440: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00002450: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00002460: 3d22 7461 6722 2074 7970 653d 2278 7364  =\"tag\" type=\"xsd\n+00002470: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+00002480: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00002490: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+000024a0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000024b0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+000024c0: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+000024d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000024e0: 2020 2020 2020 2020 2020 3c21 5b43 4441            <![CDA\n+000024f0: 5441 5b20 4465 6669 6e65 7320 7468 6520  TA[ Defines the \n+00002500: 7365 7276 6963 6520 7461 675d 5d3e 3c2f  service tag]]></\n+00002510: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00002520: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00002530: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00002540: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00002550: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00002560: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00002570: 2020 2020 2020 2020 203c 2f78 7364 3a65           </xsd:e\n+00002580: 7874 656e 7369 6f6e 3e0d 0a20 2020 2020  xtension>..     \n+00002590: 2020 203c 2f78 7364 3a63 6f6d 706c 6578     </xsd:complex\n+000025a0: 436f 6e74 656e 743e 0d0a 2020 2020 3c2f  Content>..    </\n+000025b0: 7873 643a 636f 6d70 6c65 7854 7970 653e  xsd:complexType>\n+000025c0: 0d0a 0d0a 2020 2020 3c78 7364 3a63 6f6d  ....    <xsd:com\n+000025d0: 706c 6578 5479 7065 206e 616d 653d 2261  plexType name=\"a\n+000025e0: 6273 7472 6163 7452 6566 6572 656e 6365  bstractReference\n+000025f0: 5479 7065 223e 0d0a 2020 2020 2020 2020  Type\">..        \n+00002600: 3c78 7364 3a63 6f6d 706c 6578 436f 6e74  <xsd:complexCont\n+00002610: 656e 743e 0d0a 2020 2020 2020 2020 2020  ent>..          \n+00002620: 2020 3c78 7364 3a65 7874 656e 7369 6f6e    <xsd:extension\n+00002630: 2062 6173 653d 2261 6273 7472 6163 7449   base=\"abstractI\n+00002640: 6e74 6572 6661 6365 5479 7065 223e 0d0a  nterfaceType\">..\n+00002650: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002660: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+00002670: 616d 653d 2276 6572 7369 6f6e 2220 7479  ame=\"version\" ty\n+00002680: 7065 3d22 7873 643a 7374 7269 6e67 2220  pe=\"xsd:string\" \n+00002690: 6465 6661 756c 743d 2230 2e30 2e30 223e  default=\"0.0.0\">\n+000026a0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+000026b0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+000026c0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+000026d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000026e0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+000026f0: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+00002700: 2073 6572 7669 6365 2076 6572 7369 6f6e   service version\n+00002710: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00002720: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00002730: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00002740: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00002750: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00002760: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00002770: 653e 0d0a 2020 2020 2020 2020 2020 2020  e>..            \n+00002780: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+00002790: 7465 206e 616d 653d 2267 726f 7570 2220  te name=\"group\" \n+000027a0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+000027b0: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+000027c0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+000027d0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+000027e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000027f0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+00002800: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+00002810: 6865 2073 6572 7669 6365 2067 726f 7570  he service group\n+00002820: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00002830: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00002840: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00002850: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00002860: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00002870: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00002880: 653e 0d0a 2020 2020 2020 2020 2020 2020  e>..            \n+00002890: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+000028a0: 7465 206e 616d 653d 2263 6865 636b 2220  te name=\"check\" \n+000028b0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+000028c0: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+000028d0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+000028e0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+000028f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002900: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+00002910: 7469 6f6e 3e3c 215b 4344 4154 415b 2043  tion><![CDATA[ C\n+00002920: 6865 636b 2064 6570 656e 6465 6e63 7920  heck dependency \n+00002930: 7072 6f76 6964 6572 732e 205d 5d3e 3c2f  providers. ]]></\n+00002940: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00002950: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00002960: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00002970: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00002980: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00002990: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+000029a0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+000029b0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+000029c0: 3d22 696e 6974 2220 7479 7065 3d22 7873  =\"init\" type=\"xs\n+000029d0: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+000029e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000029f0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+00002a00: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00002a10: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00002a20: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00002a30: 4344 4154 415b 2045 6167 6572 2069 6e69  CDATA[ Eager ini\n+00002a40: 7420 7265 6665 7265 6e63 652e 205d 5d3e  t reference. ]]>\n+00002a50: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+00002a60: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00002a70: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00002a80: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00002a90: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+00002aa0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+00002ab0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00002ac0: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00002ad0: 6d65 3d22 6765 6e65 7269 6322 2074 7970  me=\"generic\" typ\n+00002ae0: 653d 2278 7364 3a73 7472 696e 6722 3e0d  e=\"xsd:string\">.\n+00002af0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00002b00: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+00002b10: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00002b20: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00002b30: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00002b40: 6e3e 3c21 5b43 4441 5441 5b20 4765 6e65  n><![CDATA[ Gene\n+00002b50: 7269 6320 7365 7276 6963 652e 205d 5d3e  ric service. ]]>\n+00002b60: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+00002b70: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00002b80: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00002b90: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00002ba0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+00002bb0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+00002bc0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00002bd0: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00002be0: 6d65 3d22 696e 6a76 6d22 2074 7970 653d  me=\"injvm\" type=\n+00002bf0: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+00002c00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002c10: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00002c20: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00002c30: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00002c40: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00002c50: 3c21 5b43 4441 5441 5b44 6570 7265 6361  <![CDATA[Depreca\n+00002c60: 7465 642e 2052 6570 6c61 6365 2074 6f20  ted. Replace to \n+00002c70: 2073 6574 2073 636f 7065 3d6c 6f63 616c   set scope=local\n+00002c80: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00002c90: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00002ca0: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+00002cb0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00002cc0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00002cd0: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+00002ce0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00002cf0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+00002d00: 6520 6e61 6d65 3d22 7374 6963 6b79 2220  e name=\"sticky\" \n+00002d10: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+00002d20: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+00002d30: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+00002d40: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00002d50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002d60: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+00002d70: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00002d80: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002d90: 2020 203c 215b 4344 4154 415b 2045 6e61     <![CDATA[ Ena\n+00002da0: 626c 652f 4469 7361 626c 6520 636c 7573  ble/Disable clus\n+00002db0: 7465 7220 7374 6963 6b79 2070 6f6c 6963  ter sticky polic\n+00002dc0: 792e 4465 6661 756c 7420 6661 6c73 6520  y.Default false \n+00002dd0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+00002de0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00002df0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+00002e00: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00002e10: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002e20: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00002e30: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00002e40: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+00002e50: 206e 616d 653d 2272 6563 6f6e 6e65 6374   name=\"reconnect\n+00002e60: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+00002e70: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+00002e80: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00002e90: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00002ea0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002eb0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00002ec0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00002ed0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00002ee0: 2020 2020 203c 215b 4344 4154 415b 2072       <![CDATA[ r\n+00002ef0: 656d 6f74 696e 6720 7265 636f 6e6e 6563  emoting reconnec\n+00002f00: 7420 7469 6d65 722e 2066 616c 7365 2072  t timer. false r\n+00002f10: 6570 7265 7365 6e74 2063 6c6f 7365 2072  epresent close r\n+00002f20: 6563 6f6e 6e65 6374 2e20 696e 7465 6765  econnect. intege\n+00002f30: 7220 7265 7072 6573 656e 7420 696e 7465  r represent inte\n+00002f40: 7276 616c 286d 7329 202e 6465 6661 756c  rval(ms) .defaul\n+00002f50: 7420 7472 7565 2832 3030 306d 7329 2e5d  t true(2000ms).]\n+00002f60: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+00002f70: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00002f80: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00002f90: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00002fa0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00002fb0: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+00002fc0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00002fd0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+00002fe0: 6e61 6d65 3d22 6c61 7a79 2220 7479 7065  name=\"lazy\" type\n+00002ff0: 3d22 7873 643a 7374 7269 6e67 223e 0d0a  =\"xsd:string\">..\n+00003000: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003010: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+00003020: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00003030: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00003040: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00003050: 3e3c 215b 4344 4154 415b 206c 617a 7920  ><![CDATA[ lazy \n+00003060: 6372 6561 7465 2063 6f6e 6e65 6374 696f  create connectio\n+00003070: 6e2e 205d 5d3e 3c2f 7873 643a 646f 6375  n. ]]></xsd:docu\n+00003080: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00003090: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000030a0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+000030b0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+000030c0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+000030d0: 7465 3e0d 0a20 2020 2020 2020 2020 2020  te>..           \n+000030e0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+000030f0: 7574 6520 6e61 6d65 3d22 7072 6f76 6964  ute name=\"provid\n+00003100: 6564 2d62 7922 2074 7970 653d 2278 7364  ed-by\" type=\"xsd\n+00003110: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+00003120: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00003130: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00003140: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00003150: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00003160: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+00003170: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003180: 2020 2020 2020 2020 2020 3c21 5b43 4441            <![CDA\n+00003190: 5441 5b20 6465 636c 6172 6573 2077 6869  TA[ declares whi\n+000031a0: 6368 2061 7070 206f 7220 7365 7276 6963  ch app or servic\n+000031b0: 6520 7468 6973 2069 6e74 6572 6661 6365  e this interface\n+000031c0: 2062 656c 6f6e 6773 2074 6f2e 205d 5d3e   belongs to. ]]>\n+000031d0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+000031e0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+000031f0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00003200: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00003210: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+00003220: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+00003230: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00003240: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00003250: 6d65 3d22 726f 7574 6572 2220 7479 7065  me=\"router\" type\n+00003260: 3d22 7873 643a 7374 7269 6e67 223e 0d0a  =\"xsd:string\">..\n+00003270: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003280: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+00003290: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+000032a0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+000032b0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+000032c0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+000032d0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+000032e0: 215b 4344 4154 415b 2054 6865 2072 6f75  ![CDATA[ The rou\n+000032f0: 7465 7273 205d 5d3e 3c2f 7873 643a 646f  ters ]]></xsd:do\n+00003300: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+00003310: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003320: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+00003330: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00003340: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+00003350: 6275 7465 3e0d 0a20 2020 2020 2020 2020  bute>..         \n+00003360: 2020 203c 2f78 7364 3a65 7874 656e 7369     </xsd:extensi\n+00003370: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+00003380: 7364 3a63 6f6d 706c 6578 436f 6e74 656e  sd:complexConten\n+00003390: 743e 0d0a 2020 2020 3c2f 7873 643a 636f  t>..    </xsd:co\n+000033a0: 6d70 6c65 7854 7970 653e 0d0a 0d0a 2020  mplexType>....  \n+000033b0: 2020 3c78 7364 3a63 6f6d 706c 6578 5479    <xsd:complexTy\n+000033c0: 7065 206e 616d 653d 2261 6273 7472 6163  pe name=\"abstrac\n+000033d0: 7453 6572 7669 6365 5479 7065 223e 0d0a  tServiceType\">..\n+000033e0: 2020 2020 2020 2020 3c78 7364 3a63 6f6d          <xsd:com\n+000033f0: 706c 6578 436f 6e74 656e 743e 0d0a 2020  plexContent>..  \n+00003400: 2020 2020 2020 2020 2020 3c78 7364 3a65            <xsd:e\n+00003410: 7874 656e 7369 6f6e 2062 6173 653d 2261  xtension base=\"a\n+00003420: 6273 7472 6163 7449 6e74 6572 6661 6365  bstractInterface\n+00003430: 5479 7065 223e 0d0a 2020 2020 2020 2020  Type\">..        \n+00003440: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+00003450: 7269 6275 7465 206e 616d 653d 2272 6567  ribute name=\"reg\n+00003460: 6973 7465 7222 2074 7970 653d 2278 7364  ister\" type=\"xsd\n+00003470: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+00003480: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00003490: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+000034a0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000034b0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+000034c0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+000034d0: 4441 5441 5b20 5468 6520 7365 7276 6963  DATA[ The servic\n+000034e0: 6520 6361 6e20 6265 2072 6567 6973 7465  e can be registe\n+000034f0: 7220 746f 2072 6567 6973 7472 792e 205d  r to registry. ]\n+00003500: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+00003510: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00003520: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00003530: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00003540: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00003550: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+00003560: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00003570: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+00003580: 6e61 6d65 3d22 7665 7273 696f 6e22 2074  name=\"version\" t\n+00003590: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+000035a0: 2064 6566 6175 6c74 3d22 302e 302e 3022   default=\"0.0.0\"\n+000035b0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+000035c0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+000035d0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+000035e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000035f0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00003600: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+00003610: 6520 7365 7276 6963 6520 7665 7273 696f  e service versio\n+00003620: 6e2e 205d 5d3e 3c2f 7873 643a 646f 6375  n. ]]></xsd:docu\n+00003630: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00003640: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003650: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+00003660: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00003670: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00003680: 7465 3e0d 0a20 2020 2020 2020 2020 2020  te>..           \n+00003690: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+000036a0: 7574 6520 6e61 6d65 3d22 6772 6f75 7022  ute name=\"group\"\n+000036b0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+000036c0: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+000036d0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+000036e0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+000036f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003700: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+00003710: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+00003720: 5468 6520 7365 7276 6963 6520 6772 6f75  The service grou\n+00003730: 702e 205d 5d3e 3c2f 7873 643a 646f 6375  p. ]]></xsd:docu\n+00003740: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00003750: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003760: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+00003770: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00003780: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00003790: 7465 3e0d 0a20 2020 2020 2020 2020 2020  te>..           \n+000037a0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+000037b0: 7574 6520 6e61 6d65 3d22 6465 7072 6563  ute name=\"deprec\n+000037c0: 6174 6564 2220 7479 7065 3d22 7873 643a  ated\" type=\"xsd:\n+000037d0: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+000037e0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+000037f0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00003800: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003810: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00003820: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00003830: 4154 415b 2077 6865 7468 6572 2074 6865  ATA[ whether the\n+00003840: 2073 6572 7669 6365 2069 7320 6465 7072   service is depr\n+00003850: 6563 6174 6564 2e20 5d5d 3e3c 2f78 7364  ecated. ]]></xsd\n+00003860: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00003870: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00003880: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00003890: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+000038a0: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+000038b0: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+000038c0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+000038d0: 7474 7269 6275 7465 206e 616d 653d 2264  ttribute name=\"d\n+000038e0: 656c 6179 2220 7479 7065 3d22 7873 643a  elay\" type=\"xsd:\n+000038f0: 7374 7269 6e67 2220 6465 6661 756c 743d  string\" default=\n+00003900: 2230 223e 0d0a 2020 2020 2020 2020 2020  \"0\">..          \n+00003910: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00003920: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00003930: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003940: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00003950: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00003960: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003970: 2020 2020 203c 215b 4344 4154 415b 2054       <![CDATA[ T\n+00003980: 6865 2073 6572 7669 6365 2065 7870 6f72  he service expor\n+00003990: 7420 6465 6c61 7920 6d69 6c6c 6973 6563  t delay millisec\n+000039a0: 6f6e 642e 205d 5d3e 0d0a 2020 2020 2020  ond. ]]>..      \n+000039b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000039c0: 2020 3c2f 7873 643a 646f 6375 6d65 6e74    </xsd:document\n+000039d0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+000039e0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+000039f0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00003a00: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00003a10: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+00003a20: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00003a30: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+00003a40: 6e61 6d65 3d22 6578 706f 7274 2220 7479  name=\"export\" ty\n+00003a50: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+00003a60: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00003a70: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00003a80: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n 00003a90: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003aa0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-00003ab0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00003ac0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00003ad0: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-00003ae0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003af0: 2020 2020 2020 2020 2020 203c 215b 4344             <![CD\n-00003b00: 4154 415b 2054 6865 2073 6572 7669 6365  ATA[ The service\n-00003b10: 2077 6569 6768 742e 205d 5d3e 0a20 2020   weight. ]]>.   \n-00003b20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003b30: 2020 2020 203c 2f78 7364 3a64 6f63 756d       </xsd:docum\n-00003b40: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00003b50: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-00003b60: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00003b70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003b80: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00003b90: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00003ba0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00003bb0: 6e61 6d65 3d22 646f 6375 6d65 6e74 2220  name=\"document\" \n-00003bc0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-00003bd0: 223e 0a20 2020 2020 2020 2020 2020 2020  \">.             \n-00003be0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-00003bf0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00003c00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003c10: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-00003c20: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00003c30: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003c40: 3c21 5b43 4441 5441 5b20 5468 6520 7365  <![CDATA[ The se\n-00003c50: 7276 6963 6520 646f 6375 6d65 6e74 2e20  rvice document. \n-00003c60: 5d5d 3e0a 2020 2020 2020 2020 2020 2020  ]]>.            \n-00003c70: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00003c80: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00003c90: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00003ca0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00003cb0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00003cc0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00003cd0: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00003ce0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-00003cf0: 7269 6275 7465 206e 616d 653d 2264 796e  ribute name=\"dyn\n-00003d00: 616d 6963 2220 7479 7065 3d22 7873 643a  amic\" type=\"xsd:\n-00003d10: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-00003d20: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00003d30: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00003d40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003d50: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00003d60: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00003d70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003d80: 2020 2020 2020 3c21 5b43 4441 5441 5b20        <![CDATA[ \n-00003d90: 7468 6520 7365 7276 6963 6520 7265 6769  the service regi\n-00003da0: 7374 6572 6564 2074 6f20 7468 6520 7265  stered to the re\n-00003db0: 6769 7374 7279 2069 7320 6479 6e61 6d69  gistry is dynami\n-00003dc0: 6328 7472 7565 2920 6f72 2073 7461 7469  c(true) or stati\n-00003dd0: 6328 6661 6c73 6529 2e20 5d5d 3e3c 2f78  c(false). ]]></x\n-00003de0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00003df0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00003e00: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00003e10: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00003e20: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00003e30: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00003e40: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n-00003e50: 7472 6962 7574 6520 6e61 6d65 3d22 746f  tribute name=\"to\n-00003e60: 6b65 6e22 2074 7970 653d 2278 7364 3a73  ken\" type=\"xsd:s\n-00003e70: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-00003e80: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00003e90: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n+00003aa0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00003ab0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00003ac0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003ad0: 203c 215b 4344 4154 415b 2054 6865 2073   <![CDATA[ The s\n+00003ae0: 6572 7669 6365 2069 7320 6578 706f 7274  ervice is export\n+00003af0: 2e20 5d5d 3e0d 0a20 2020 2020 2020 2020  . ]]>..         \n+00003b00: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00003b10: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00003b20: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00003b30: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+00003b40: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00003b50: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00003b60: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+00003b70: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00003b80: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+00003b90: 653d 2277 6569 6768 7422 2074 7970 653d  e=\"weight\" type=\n+00003ba0: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+00003bb0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003bc0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00003bd0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00003be0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00003bf0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00003c00: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00003c10: 2020 2020 2020 2020 2020 2020 2020 3c21                <!\n+00003c20: 5b43 4441 5441 5b20 5468 6520 7365 7276  [CDATA[ The serv\n+00003c30: 6963 6520 7765 6967 6874 2e20 5d5d 3e0d  ice weight. ]]>.\n+00003c40: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00003c50: 2020 2020 2020 2020 203c 2f78 7364 3a64           </xsd:d\n+00003c60: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+00003c70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003c80: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+00003c90: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00003ca0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+00003cb0: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+00003cc0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+00003cd0: 7269 6275 7465 206e 616d 653d 2264 6f63  ribute name=\"doc\n+00003ce0: 756d 656e 7422 2074 7970 653d 2278 7364  ument\" type=\"xsd\n+00003cf0: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+00003d00: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00003d10: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00003d20: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00003d30: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00003d40: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+00003d50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003d60: 2020 2020 2020 2020 2020 3c21 5b43 4441            <![CDA\n+00003d70: 5441 5b20 5468 6520 7365 7276 6963 6520  TA[ The service \n+00003d80: 646f 6375 6d65 6e74 2e20 5d5d 3e0d 0a20  document. ]]>.. \n+00003d90: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003da0: 2020 2020 2020 203c 2f78 7364 3a64 6f63         </xsd:doc\n+00003db0: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+00003dc0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003dd0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00003de0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00003df0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+00003e00: 7574 653e 0d0a 2020 2020 2020 2020 2020  ute>..          \n+00003e10: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00003e20: 6275 7465 206e 616d 653d 2264 796e 616d  bute name=\"dynam\n+00003e30: 6963 2220 7479 7065 3d22 7873 643a 7374  ic\" type=\"xsd:st\n+00003e40: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+00003e50: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00003e60: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00003e70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00003e80: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00003e90: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n 00003ea0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003eb0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-00003ec0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-00003ed0: 5b20 5468 6520 7365 7276 6963 6520 7573  [ The service us\n-00003ee0: 6520 746f 6b65 6e2e 205d 5d3e 3c2f 7873  e token. ]]></xs\n-00003ef0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00003f00: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00003f10: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00003f20: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00003f30: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00003f40: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00003f50: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-00003f60: 7269 6275 7465 206e 616d 653d 2261 6363  ribute name=\"acc\n-00003f70: 6573 736c 6f67 2220 7479 7065 3d22 7873  esslog\" type=\"xs\n-00003f80: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-00003f90: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00003fa0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n+00003eb0: 2020 2020 2020 203c 215b 4344 4154 415b         <![CDATA[\n+00003ec0: 2074 6865 2073 6572 7669 6365 2072 6567   the service reg\n+00003ed0: 6973 7465 7265 6420 746f 2074 6865 2072  istered to the r\n+00003ee0: 6567 6973 7472 7920 6973 2064 796e 616d  egistry is dynam\n+00003ef0: 6963 2874 7275 6529 206f 7220 7374 6174  ic(true) or stat\n+00003f00: 6963 2866 616c 7365 292e 205d 5d3e 3c2f  ic(false). ]]></\n+00003f10: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00003f20: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00003f30: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00003f40: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00003f50: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00003f60: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00003f70: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00003f80: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00003f90: 3d22 746f 6b65 6e22 2074 7970 653d 2278  =\"token\" type=\"x\n+00003fa0: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n 00003fb0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00003fc0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-00003fd0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-00003fe0: 4154 415b 2054 6865 2073 6572 7669 6365  ATA[ The service\n-00003ff0: 2075 7365 2061 6363 6573 736c 6f67 2e20   use accesslog. \n-00004000: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00004010: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00004020: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00004030: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00004040: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-00004050: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n+00003fc0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+00003fd0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00003fe0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00003ff0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00004000: 5b43 4441 5441 5b20 5468 6520 7365 7276  [CDATA[ The serv\n+00004010: 6963 6520 7573 6520 746f 6b65 6e2e 205d  ice use token. ]\n+00004020: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+00004030: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00004040: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00004050: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n 00004060: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00004070: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-00004080: 6d65 3d22 6578 6563 7574 6573 2220 7479  me=\"executes\" ty\n-00004090: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-000040a0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-000040b0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-000040c0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-000040d0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-000040e0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-000040f0: 3e3c 215b 4344 4154 415b 2054 6865 2073  ><![CDATA[ The s\n-00004100: 6572 7669 6365 2061 6c6c 6f77 2065 7865  ervice allow exe\n-00004110: 6375 7465 2072 6571 7565 7374 732e 205d  cute requests. ]\n-00004120: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-00004130: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00004140: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00004150: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00004160: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-00004170: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-00004180: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00004190: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-000041a0: 653d 2270 726f 746f 636f 6c22 2074 7970  e=\"protocol\" typ\n-000041b0: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-000041c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000041d0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-000041e0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-000041f0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00004200: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00004210: 3c21 5b43 4441 5441 5b20 5468 6520 7365  <![CDATA[ The se\n-00004220: 7276 6963 6520 7072 6f74 6f63 6f6c 2e20  rvice protocol. \n-00004230: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00004240: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00004250: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00004260: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00004270: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-00004280: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-00004290: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000042a0: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-000042b0: 6d65 3d22 7761 726d 7570 2220 7479 7065  me=\"warmup\" type\n-000042c0: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-000042d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000042e0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-000042f0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00004300: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00004310: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-00004320: 215b 4344 4154 415b 2054 6865 2077 6172  ![CDATA[ The war\n-00004330: 6d75 7020 7469 6d65 2069 6e20 4d69 6c6c  mup time in Mill\n-00004340: 6973 6563 6f6e 6473 2e20 5d5d 3e3c 2f78  iseconds. ]]></x\n-00004350: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00004360: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00004370: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00004380: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00004390: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-000043a0: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-000043b0: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n-000043c0: 7472 6962 7574 6520 6e61 6d65 3d22 7365  tribute name=\"se\n-000043d0: 7269 616c 697a 6174 696f 6e22 2074 7970  rialization\" typ\n-000043e0: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-000043f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00004400: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-00004410: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00004420: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00004430: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00004440: 3c21 5b43 4441 5441 5b20 5468 6520 7365  <![CDATA[ The se\n-00004450: 7269 616c 697a 6174 696f 6e20 7072 6f74  rialization prot\n-00004460: 6f63 6f6c 206f 6620 7365 7276 6963 652e  ocol of service.\n-00004470: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-00004480: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00004490: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-000044a0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-000044b0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000044c0: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-000044d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000044e0: 3c78 7364 3a61 6e79 4174 7472 6962 7574  <xsd:anyAttribut\n-000044f0: 6520 6e61 6d65 7370 6163 653d 2223 236f  e namespace=\"##o\n-00004500: 7468 6572 2220 7072 6f63 6573 7343 6f6e  ther\" processCon\n-00004510: 7465 6e74 733d 226c 6178 222f 3e0a 2020  tents=\"lax\"/>.  \n-00004520: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00004530: 6578 7465 6e73 696f 6e3e 0a20 2020 2020  extension>.     \n-00004540: 2020 203c 2f78 7364 3a63 6f6d 706c 6578     </xsd:complex\n-00004550: 436f 6e74 656e 743e 0a20 2020 203c 2f78  Content>.    </x\n-00004560: 7364 3a63 6f6d 706c 6578 5479 7065 3e0a  sd:complexType>.\n-00004570: 0a20 2020 203c 7873 643a 636f 6d70 6c65  .    <xsd:comple\n-00004580: 7854 7970 6520 6e61 6d65 3d22 6170 706c  xType name=\"appl\n-00004590: 6963 6174 696f 6e54 7970 6522 3e0a 2020  icationType\">.  \n-000045a0: 2020 2020 2020 3c78 7364 3a73 6571 7565        <xsd:seque\n-000045b0: 6e63 6520 6d69 6e4f 6363 7572 733d 2230  nce minOccurs=\"0\n-000045c0: 2220 6d61 784f 6363 7572 733d 2275 6e62  \" maxOccurs=\"unb\n-000045d0: 6f75 6e64 6564 223e 0a20 2020 2020 2020  ounded\">.       \n-000045e0: 2020 2020 203c 7873 643a 656c 656d 656e       <xsd:elemen\n-000045f0: 7420 7265 663d 2270 6172 616d 6574 6572  t ref=\"parameter\n-00004600: 2220 6d69 6e4f 6363 7572 733d 2230 2220  \" minOccurs=\"0\" \n-00004610: 6d61 784f 6363 7572 733d 2275 6e62 6f75  maxOccurs=\"unbou\n-00004620: 6e64 6564 222f 3e0a 2020 2020 2020 2020  nded\"/>.        \n-00004630: 3c2f 7873 643a 7365 7175 656e 6365 3e0a  </xsd:sequence>.\n-00004640: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-00004650: 7269 6275 7465 206e 616d 653d 2269 6422  ribute name=\"id\"\n-00004660: 2074 7970 653d 2278 7364 3a49 4422 3e0a   type=\"xsd:ID\">.\n-00004670: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00004680: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00004690: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-000046a0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-000046b0: 3c21 5b43 4441 5441 5b20 5468 6520 756e  <![CDATA[ The un\n-000046c0: 6971 7565 2069 6465 6e74 6966 6965 7220  ique identifier \n-000046d0: 666f 7220 6120 6265 616e 2e20 5d5d 3e3c  for a bean. ]]><\n-000046e0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-000046f0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00004700: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00004710: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-00004720: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-00004730: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00004740: 6520 6e61 6d65 3d22 6e61 6d65 2220 7479  e name=\"name\" ty\n-00004750: 7065 3d22 7873 643a 7374 7269 6e67 2220  pe=\"xsd:string\" \n-00004760: 7573 653d 2272 6571 7569 7265 6422 3e0a  use=\"required\">.\n-00004770: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00004780: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00004790: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-000047a0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-000047b0: 3c21 5b43 4441 5441 5b20 5468 6520 6170  <![CDATA[ The ap\n-000047c0: 706c 6963 6174 696f 6e20 6e61 6d65 2e20  plication name. \n-000047d0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-000047e0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-000047f0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00004800: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-00004810: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-00004820: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-00004830: 6962 7574 6520 6e61 6d65 3d22 7665 7273  ibute name=\"vers\n-00004840: 696f 6e22 2074 7970 653d 2278 7364 3a73  ion\" type=\"xsd:s\n-00004850: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-00004860: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-00004870: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00004880: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-00004890: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-000048a0: 5b20 5468 6520 6170 706c 6963 6174 696f  [ The applicatio\n-000048b0: 6e20 7665 7273 696f 6e2e 205d 5d3e 3c2f  n version. ]]></\n-000048c0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-000048d0: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-000048e0: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-000048f0: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-00004900: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00004910: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00004920: 206e 616d 653d 226f 776e 6572 2220 7479   name=\"owner\" ty\n-00004930: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00004940: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00004950: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00004960: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00004970: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00004980: 3e3c 215b 4344 4154 415b 2054 6865 2061  ><![CDATA[ The a\n-00004990: 7070 6c69 6361 7469 6f6e 206f 776e 6572  pplication owner\n-000049a0: 206e 616d 6520 2865 6d61 696c 2070 7265   name (email pre\n-000049b0: 6669 7829 2e20 5d5d 3e3c 2f78 7364 3a64  fix). ]]></xsd:d\n-000049c0: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-000049d0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-000049e0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-000049f0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00004a00: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-00004a10: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00004a20: 3d22 6f72 6761 6e69 7a61 7469 6f6e 2220  =\"organization\" \n-00004a30: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-00004a40: 223e 0a20 2020 2020 2020 2020 2020 203c  \">.            <\n-00004a50: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00004a60: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00004a70: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-00004a80: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-00004a90: 206f 7267 616e 697a 6174 696f 6e20 6e61   organization na\n-00004aa0: 6d65 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  me. ]]></xsd:doc\n-00004ab0: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00004ac0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-00004ad0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00004ae0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-00004af0: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-00004b00: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-00004b10: 6172 6368 6974 6563 7475 7265 2220 7479  architecture\" ty\n-00004b20: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00004b30: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00004b40: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00004b50: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00004b60: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00004b70: 3e3c 215b 4344 4154 415b 2054 6865 2061  ><![CDATA[ The a\n-00004b80: 7263 6869 7465 6374 7572 652e 205d 5d3e  rchitecture. ]]>\n-00004b90: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-00004ba0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00004bb0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-00004bc0: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-00004bd0: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-00004be0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-00004bf0: 7465 206e 616d 653d 2265 6e76 6972 6f6e  te name=\"environ\n-00004c00: 6d65 6e74 2220 7479 7065 3d22 7873 643a  ment\" type=\"xsd:\n-00004c10: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-00004c20: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00004c30: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00004c40: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00004c50: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00004c60: 415b 2054 6865 2061 7070 6c69 6361 7469  A[ The applicati\n-00004c70: 6f6e 2065 6e76 6972 6f6e 6d65 6e74 2c20  on environment, \n-00004c80: 6567 3a20 6465 762f 7465 7374 2f72 756e  eg: dev/test/run\n-00004c90: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-00004ca0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00004cb0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00004cc0: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-00004cd0: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00004ce0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-00004cf0: 7269 6275 7465 206e 616d 653d 2263 6f6d  ribute name=\"com\n-00004d00: 7069 6c65 7222 2074 7970 653d 2278 7364  piler\" type=\"xsd\n-00004d10: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-00004d20: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-00004d30: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00004d40: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-00004d50: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-00004d60: 5441 5b20 5468 6520 6a61 7661 2063 6f64  TA[ The java cod\n-00004d70: 6520 636f 6d70 696c 6572 2e20 5d5d 3e3c  e compiler. ]]><\n-00004d80: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-00004d90: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00004da0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00004db0: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-00004dc0: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-00004dd0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00004de0: 6520 6e61 6d65 3d22 6c6f 6767 6572 2220  e name=\"logger\" \n-00004df0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-00004e00: 223e 0a20 2020 2020 2020 2020 2020 203c  \">.            <\n-00004e10: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00004e20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00004e30: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-00004e40: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-00004e50: 2061 7070 6c69 6361 7469 6f6e 206c 6f67   application log\n-00004e60: 6765 722e 205d 5d3e 3c2f 7873 643a 646f  ger. ]]></xsd:do\n-00004e70: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00004e80: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00004e90: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00004ea0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-00004eb0: 7465 3e0a 2020 2020 2020 2020 3c78 7364  te>.        <xsd\n-00004ec0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-00004ed0: 2272 6567 6973 7472 7922 2074 7970 653d  \"registry\" type=\n-00004ee0: 2278 7364 3a73 7472 696e 6722 3e0a 2020  \"xsd:string\">.  \n-00004ef0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00004f00: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00004f10: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00004f20: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-00004f30: 5b43 4441 5441 5b20 5468 6520 6170 706c  [CDATA[ The appl\n-00004f40: 6963 6174 696f 6e20 7265 6769 7374 7279  ication registry\n-00004f50: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-00004f60: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00004f70: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00004f80: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00004f90: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00004fa0: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n-00004fb0: 7472 6962 7574 6520 6e61 6d65 3d22 6d6f  tribute name=\"mo\n-00004fc0: 6e69 746f 7222 2074 7970 653d 2278 7364  nitor\" type=\"xsd\n-00004fd0: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-00004fe0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-00004ff0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00005000: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-00005010: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-00005020: 5441 5b20 5468 6520 6170 706c 6963 6174  TA[ The applicat\n-00005030: 696f 6e20 6d6f 6e69 746f 722e 205d 5d3e  ion monitor. ]]>\n-00005040: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-00005050: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00005060: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-00005070: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-00005080: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-00005090: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-000050a0: 7465 206e 616d 653d 2264 6566 6175 6c74  te name=\"default\n-000050b0: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-000050c0: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-000050d0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-000050e0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-000050f0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-00005100: 7469 6f6e 3e3c 215b 4344 4154 415b 2049  tion><![CDATA[ I\n-00005110: 7320 6465 6661 756c 742e 205d 5d3e 3c2f  s default. ]]></\n-00005120: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00005130: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-00005140: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00005150: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-00005160: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00005170: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00005180: 206e 616d 653d 226d 6574 6164 6174 612d   name=\"metadata-\n-00005190: 7479 7065 2220 7479 7065 3d22 7873 643a  type\" type=\"xsd:\n-000051a0: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-000051b0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-000051c0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-000051d0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-000051e0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-000051f0: 415b 2054 6865 206d 6574 6164 7461 2074  A[ The metadta t\n-00005200: 7970 653a 206c 6f63 616c 206f 7220 7265  ype: local or re\n-00005210: 6d6f 7465 2e20 5d5d 3e3c 2f78 7364 3a64  mote. ]]></xsd:d\n-00005220: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00005230: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00005240: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00005250: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00005260: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-00005270: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00005280: 3d22 7265 6769 7374 6572 2d63 6f6e 7375  =\"register-consu\n-00005290: 6d65 7222 2074 7970 653d 2278 7364 3a62  mer\" type=\"xsd:b\n-000052a0: 6f6f 6c65 616e 223e 0a20 2020 2020 2020  oolean\">.       \n-000052b0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-000052c0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-000052d0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-000052e0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-000052f0: 415b 2052 6567 6973 7465 7220 636f 6e73  A[ Register cons\n-00005300: 756d 6572 2069 6e73 7461 6e63 6520 6f72  umer instance or\n-00005310: 206e 6f74 2c20 6465 6661 756c 7420 6661   not, default fa\n-00005320: 6c73 652e 205d 5d3e 3c2f 7873 643a 646f  lse. ]]></xsd:do\n-00005330: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00005340: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00005350: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00005360: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-00005370: 7465 3e0a 2020 2020 3c2f 7873 643a 636f  te>.    </xsd:co\n-00005380: 6d70 6c65 7854 7970 653e 0a0a 2020 2020  mplexType>..    \n-00005390: 3c78 7364 3a63 6f6d 706c 6578 5479 7065  <xsd:complexType\n-000053a0: 206e 616d 653d 226d 6f64 756c 6554 7970   name=\"moduleTyp\n-000053b0: 6522 3e0a 2020 2020 2020 2020 3c78 7364  e\">.        <xsd\n-000053c0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-000053d0: 2269 6422 2074 7970 653d 2278 7364 3a49  \"id\" type=\"xsd:I\n-000053e0: 4422 3e0a 2020 2020 2020 2020 2020 2020  D\">.            \n-000053f0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-00005400: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00005410: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-00005420: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-00005430: 6520 756e 6971 7565 2069 6465 6e74 6966  e unique identif\n-00005440: 6965 7220 666f 7220 6120 6265 616e 2e20  ier for a bean. \n-00005450: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00005460: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00005470: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00005480: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-00005490: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-000054a0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-000054b0: 6962 7574 6520 6e61 6d65 3d22 6e61 6d65  ibute name=\"name\n-000054c0: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-000054d0: 6e67 2220 7573 653d 2272 6571 7569 7265  ng\" use=\"require\n-000054e0: 6422 3e0a 2020 2020 2020 2020 2020 2020  d\">.            \n-000054f0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-00005500: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00005510: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-00005520: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-00005530: 6520 6d6f 6475 6c65 206e 616d 652e 205d  e module name. ]\n-00005540: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-00005550: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00005560: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-00005570: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-00005580: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-00005590: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-000055a0: 6275 7465 206e 616d 653d 2276 6572 7369  bute name=\"versi\n-000055b0: 6f6e 2220 7479 7065 3d22 7873 643a 7374  on\" type=\"xsd:st\n-000055c0: 7269 6e67 223e 0a20 2020 2020 2020 2020  ring\">.         \n-000055d0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-000055e0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-000055f0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-00005600: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n-00005610: 2054 6865 206d 6f64 756c 6520 7665 7273   The module vers\n-00005620: 696f 6e2e 205d 5d3e 3c2f 7873 643a 646f  ion. ]]></xsd:do\n-00005630: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00005640: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00005650: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00005660: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-00005670: 7465 3e0a 2020 2020 2020 2020 3c78 7364  te>.        <xsd\n-00005680: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-00005690: 226f 776e 6572 2220 7479 7065 3d22 7873  \"owner\" type=\"xs\n-000056a0: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-000056b0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-000056c0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-000056d0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-000056e0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-000056f0: 4154 415b 2054 6865 206d 6f64 756c 6520  ATA[ The module \n-00005700: 6f77 6e65 7220 6e61 6d65 2028 656d 6169  owner name (emai\n-00005710: 6c20 7072 6566 6978 292e 205d 5d3e 3c2f  l prefix). ]]></\n-00005720: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00005730: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-00005740: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00005750: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-00005760: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00005770: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00005780: 206e 616d 653d 226f 7267 616e 697a 6174   name=\"organizat\n-00005790: 696f 6e22 2074 7970 653d 2278 7364 3a73  ion\" type=\"xsd:s\n-000057a0: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-000057b0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-000057c0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-000057d0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-000057e0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-000057f0: 5b20 5468 6520 6d6f 6475 6c65 206f 7267  [ The module org\n-00005800: 616e 697a 6174 696f 6e2e 205d 5d3e 3c2f  anization. ]]></\n-00005810: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00005820: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-00005830: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00005840: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-00005850: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00005860: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00005870: 206e 616d 653d 2272 6567 6973 7472 7922   name=\"registry\"\n-00005880: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-00005890: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-000058a0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-000058b0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-000058c0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-000058d0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-000058e0: 6520 6d6f 6475 6c65 2072 6567 6973 7472  e module registr\n-000058f0: 792e 205d 5d3e 3c2f 7873 643a 646f 6375  y. ]]></xsd:docu\n-00005900: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-00005910: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-00005920: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00005930: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-00005940: 3e0a 2020 2020 2020 2020 3c78 7364 3a61  >.        <xsd:a\n-00005950: 7474 7269 6275 7465 206e 616d 653d 226d  ttribute name=\"m\n-00005960: 6f6e 6974 6f72 2220 7479 7065 3d22 7873  onitor\" type=\"xs\n-00005970: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-00005980: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-00005990: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-000059a0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-000059b0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-000059c0: 4154 415b 2054 6865 206d 6f64 756c 6520  ATA[ The module \n-000059d0: 6d6f 6e69 746f 722e 205d 5d3e 3c2f 7873  monitor. ]]></xs\n-000059e0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-000059f0: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00005a00: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00005a10: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00005a20: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00005a30: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00005a40: 616d 653d 2264 6566 6175 6c74 2220 7479  ame=\"default\" ty\n-00005a50: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00005a60: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00005a70: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00005a80: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00005a90: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00005aa0: 3e3c 215b 4344 4154 415b 2049 7320 6465  ><![CDATA[ Is de\n-00005ab0: 6661 756c 742e 205d 5d3e 3c2f 7873 643a  fault. ]]></xsd:\n-00005ac0: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-00005ad0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00005ae0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00005af0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00005b00: 6275 7465 3e0a 2020 2020 3c2f 7873 643a  bute>.    </xsd:\n-00005b10: 636f 6d70 6c65 7854 7970 653e 0a0a 2020  complexType>..  \n-00005b20: 2020 3c78 7364 3a63 6f6d 706c 6578 5479    <xsd:complexTy\n-00005b30: 7065 206e 616d 653d 2272 6567 6973 7472  pe name=\"registr\n-00005b40: 7954 7970 6522 3e0a 2020 2020 2020 2020  yType\">.        \n-00005b50: 3c78 7364 3a73 6571 7565 6e63 6520 6d69  <xsd:sequence mi\n-00005b60: 6e4f 6363 7572 733d 2230 2220 6d61 784f  nOccurs=\"0\" maxO\n-00005b70: 6363 7572 733d 2275 6e62 6f75 6e64 6564  ccurs=\"unbounded\n-00005b80: 223e 0a20 2020 2020 2020 2020 2020 203c  \">.            <\n-00005b90: 7873 643a 656c 656d 656e 7420 7265 663d  xsd:element ref=\n-00005ba0: 2270 6172 616d 6574 6572 2220 6d69 6e4f  \"parameter\" minO\n-00005bb0: 6363 7572 733d 2230 2220 6d61 784f 6363  ccurs=\"0\" maxOcc\n-00005bc0: 7572 733d 2275 6e62 6f75 6e64 6564 222f  urs=\"unbounded\"/\n-00005bd0: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-00005be0: 7365 7175 656e 6365 3e0a 2020 2020 2020  sequence>.      \n-00005bf0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00005c00: 206e 616d 653d 2269 6422 2074 7970 653d   name=\"id\" type=\n-00005c10: 2278 7364 3a49 4422 3e0a 2020 2020 2020  \"xsd:ID\">.      \n-00005c20: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-00005c30: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00005c40: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-00005c50: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-00005c60: 5441 5b20 5468 6520 756e 6971 7565 2069  TA[ The unique i\n-00005c70: 6465 6e74 6966 6965 7220 666f 7220 6120  dentifier for a \n-00005c80: 6265 616e 2e20 5d5d 3e3c 2f78 7364 3a64  bean. ]]></xsd:d\n-00005c90: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00005ca0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00005cb0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00005cc0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00005cd0: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-00005ce0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00005cf0: 3d22 6164 6472 6573 7322 2074 7970 653d  =\"address\" type=\n-00005d00: 2278 7364 3a73 7472 696e 6722 3e0a 2020  \"xsd:string\">.  \n-00005d10: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00005d20: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00005d30: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00005d40: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-00005d50: 5b43 4441 5441 5b20 5468 6520 7265 6769  [CDATA[ The regi\n-00005d60: 7374 7279 2061 6464 7265 7373 2e20 5d5d  stry address. ]]\n-00005d70: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-00005d80: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00005d90: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-00005da0: 6f6e 3e0a 2020 2020 2020 2020 3c2f 7873  on>.        </xs\n-00005db0: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-00005dc0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-00005dd0: 7574 6520 6e61 6d65 3d22 706f 7274 2220  ute name=\"port\" \n-00005de0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-00005df0: 223e 0a20 2020 2020 2020 2020 2020 203c  \">.            <\n-00005e00: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00005e10: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00005e20: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-00005e30: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-00005e40: 2072 6567 6973 7472 7920 6465 6661 756c   registry defaul\n-00005e50: 7420 706f 7274 2e20 5d5d 3e3c 2f78 7364  t port. ]]></xsd\n-00005e60: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-00005e70: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00005e80: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00005e90: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-00005ea0: 6962 7574 653e 0a20 2020 2020 2020 203c  ibute>.        <\n-00005eb0: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-00005ec0: 6d65 3d22 7072 6f74 6f63 6f6c 2220 7479  me=\"protocol\" ty\n-00005ed0: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00005ee0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00005ef0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00005f00: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00005f10: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00005f20: 3e3c 215b 4344 4154 415b 2054 6865 2072  ><![CDATA[ The r\n-00005f30: 6567 6973 7472 7920 6c6f 6f6b 7570 2070  egistry lookup p\n-00005f40: 726f 746f 636f 6c2e 205d 5d3e 3c2f 7873  rotocol. ]]></xs\n-00005f50: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00005f60: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00005f70: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n+00004070: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+00004080: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00004090: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+000040a0: 6e61 6d65 3d22 6163 6365 7373 6c6f 6722  name=\"accesslog\"\n+000040b0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+000040c0: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+000040d0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+000040e0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+000040f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00004100: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+00004110: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+00004120: 5468 6520 7365 7276 6963 6520 7573 6520  The service use \n+00004130: 6163 6365 7373 6c6f 672e 205d 5d3e 3c2f  accesslog. ]]></\n+00004140: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00004150: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00004160: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00004170: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00004180: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00004190: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+000041a0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+000041b0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+000041c0: 3d22 6578 6563 7574 6573 2220 7479 7065  =\"executes\" type\n+000041d0: 3d22 7873 643a 7374 7269 6e67 223e 0d0a  =\"xsd:string\">..\n+000041e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000041f0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+00004200: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00004210: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00004220: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00004230: 3e3c 215b 4344 4154 415b 2054 6865 2073  ><![CDATA[ The s\n+00004240: 6572 7669 6365 2061 6c6c 6f77 2065 7865  ervice allow exe\n+00004250: 6375 7465 2072 6571 7565 7374 732e 205d  cute requests. ]\n+00004260: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+00004270: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00004280: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00004290: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+000042a0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+000042b0: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+000042c0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000042d0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+000042e0: 6e61 6d65 3d22 7072 6f74 6f63 6f6c 2220  name=\"protocol\" \n+000042f0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+00004300: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+00004310: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+00004320: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00004330: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00004340: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+00004350: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+00004360: 6865 2073 6572 7669 6365 2070 726f 746f  he service proto\n+00004370: 636f 6c2e 205d 5d3e 3c2f 7873 643a 646f  col. ]]></xsd:do\n+00004380: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+00004390: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000043a0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+000043b0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+000043c0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+000043d0: 6275 7465 3e0d 0a20 2020 2020 2020 2020  bute>..         \n+000043e0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+000043f0: 6962 7574 6520 6e61 6d65 3d22 7761 726d  ibute name=\"warm\n+00004400: 7570 2220 7479 7065 3d22 7873 643a 7374  up\" type=\"xsd:st\n+00004410: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+00004420: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00004430: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00004440: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00004450: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00004460: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00004470: 415b 2054 6865 2077 6172 6d75 7020 7469  A[ The warmup ti\n+00004480: 6d65 2069 6e20 4d69 6c6c 6973 6563 6f6e  me in Millisecon\n+00004490: 6473 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ds. ]]></xsd:doc\n+000044a0: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+000044b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000044c0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+000044d0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000044e0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+000044f0: 7574 653e 0d0a 2020 2020 2020 2020 2020  ute>..          \n+00004500: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00004510: 6275 7465 206e 616d 653d 2273 6572 6961  bute name=\"seria\n+00004520: 6c69 7a61 7469 6f6e 2220 7479 7065 3d22  lization\" type=\"\n+00004530: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+00004540: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00004550: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00004560: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00004570: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00004580: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+00004590: 215b 4344 4154 415b 2054 6865 2073 6572  ![CDATA[ The ser\n+000045a0: 6961 6c69 7a61 7469 6f6e 2070 726f 746f  ialization proto\n+000045b0: 636f 6c20 6f66 2073 6572 7669 6365 2e20  col of service. \n+000045c0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+000045d0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+000045e0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+000045f0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00004600: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00004610: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00004620: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00004630: 2020 3c78 7364 3a61 6e79 4174 7472 6962    <xsd:anyAttrib\n+00004640: 7574 6520 6e61 6d65 7370 6163 653d 2223  ute namespace=\"#\n+00004650: 236f 7468 6572 2220 7072 6f63 6573 7343  #other\" processC\n+00004660: 6f6e 7465 6e74 733d 226c 6178 222f 3e0d  ontents=\"lax\"/>.\n+00004670: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n+00004680: 7364 3a65 7874 656e 7369 6f6e 3e0d 0a20  sd:extension>.. \n+00004690: 2020 2020 2020 203c 2f78 7364 3a63 6f6d         </xsd:com\n+000046a0: 706c 6578 436f 6e74 656e 743e 0d0a 2020  plexContent>..  \n+000046b0: 2020 3c2f 7873 643a 636f 6d70 6c65 7854    </xsd:complexT\n+000046c0: 7970 653e 0d0a 0d0a 2020 2020 3c78 7364  ype>....    <xsd\n+000046d0: 3a63 6f6d 706c 6578 5479 7065 206e 616d  :complexType nam\n+000046e0: 653d 2261 7070 6c69 6361 7469 6f6e 5479  e=\"applicationTy\n+000046f0: 7065 223e 0d0a 2020 2020 2020 2020 3c78  pe\">..        <x\n+00004700: 7364 3a73 6571 7565 6e63 6520 6d69 6e4f  sd:sequence minO\n+00004710: 6363 7572 733d 2230 2220 6d61 784f 6363  ccurs=\"0\" maxOcc\n+00004720: 7572 733d 2275 6e62 6f75 6e64 6564 223e  urs=\"unbounded\">\n+00004730: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+00004740: 7364 3a65 6c65 6d65 6e74 2072 6566 3d22  sd:element ref=\"\n+00004750: 7061 7261 6d65 7465 7222 206d 696e 4f63  parameter\" minOc\n+00004760: 6375 7273 3d22 3022 206d 6178 4f63 6375  curs=\"0\" maxOccu\n+00004770: 7273 3d22 756e 626f 756e 6465 6422 2f3e  rs=\"unbounded\"/>\n+00004780: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+00004790: 7365 7175 656e 6365 3e0d 0a20 2020 2020  sequence>..     \n+000047a0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+000047b0: 6520 6e61 6d65 3d22 6964 2220 7479 7065  e name=\"id\" type\n+000047c0: 3d22 7873 643a 4944 223e 0d0a 2020 2020  =\"xsd:ID\">..    \n+000047d0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+000047e0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+000047f0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00004800: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00004810: 4344 4154 415b 2054 6865 2075 6e69 7175  CDATA[ The uniqu\n+00004820: 6520 6964 656e 7469 6669 6572 2066 6f72  e identifier for\n+00004830: 2061 2062 6561 6e2e 205d 5d3e 3c2f 7873   a bean. ]]></xs\n+00004840: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00004850: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+00004860: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00004870: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+00004880: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+00004890: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+000048a0: 6520 6e61 6d65 3d22 6e61 6d65 2220 7479  e name=\"name\" ty\n+000048b0: 7065 3d22 7873 643a 7374 7269 6e67 2220  pe=\"xsd:string\" \n+000048c0: 7573 653d 2272 6571 7569 7265 6422 3e0d  use=\"required\">.\n+000048d0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+000048e0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+000048f0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00004900: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00004910: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n+00004920: 6170 706c 6963 6174 696f 6e20 6e61 6d65  application name\n+00004930: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00004940: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00004950: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00004960: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00004970: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00004980: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+00004990: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+000049a0: 2276 6572 7369 6f6e 2220 7479 7065 3d22  \"version\" type=\"\n+000049b0: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+000049c0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+000049d0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+000049e0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000049f0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+00004a00: 215b 4344 4154 415b 2054 6865 2061 7070  ![CDATA[ The app\n+00004a10: 6c69 6361 7469 6f6e 2076 6572 7369 6f6e  lication version\n+00004a20: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00004a30: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00004a40: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00004a50: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00004a60: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00004a70: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+00004a80: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00004a90: 226f 776e 6572 2220 7479 7065 3d22 7873  \"owner\" type=\"xs\n+00004aa0: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+00004ab0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+00004ac0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00004ad0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00004ae0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00004af0: 4344 4154 415b 2054 6865 2061 7070 6c69  CDATA[ The appli\n+00004b00: 6361 7469 6f6e 206f 776e 6572 206e 616d  cation owner nam\n+00004b10: 6520 2865 6d61 696c 2070 7265 6669 7829  e (email prefix)\n+00004b20: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00004b30: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00004b40: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00004b50: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00004b60: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00004b70: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+00004b80: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00004b90: 226f 7267 616e 697a 6174 696f 6e22 2074  \"organization\" t\n+00004ba0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+00004bb0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00004bc0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00004bd0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00004be0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00004bf0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+00004c00: 6520 6f72 6761 6e69 7a61 7469 6f6e 206e  e organization n\n+00004c10: 616d 652e 205d 5d3e 3c2f 7873 643a 646f  ame. ]]></xsd:do\n+00004c20: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+00004c30: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00004c40: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00004c50: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+00004c60: 6275 7465 3e0d 0a20 2020 2020 2020 203c  bute>..        <\n+00004c70: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00004c80: 6d65 3d22 6172 6368 6974 6563 7475 7265  me=\"architecture\n+00004c90: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+00004ca0: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+00004cb0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00004cc0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00004cd0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00004ce0: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+00004cf0: 2054 6865 2061 7263 6869 7465 6374 7572   The architectur\n+00004d00: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n+00004d10: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00004d20: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00004d30: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00004d40: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00004d50: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+00004d60: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00004d70: 3d22 656e 7669 726f 6e6d 656e 7422 2074  =\"environment\" t\n+00004d80: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+00004d90: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00004da0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00004db0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00004dc0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00004dd0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+00004de0: 6520 6170 706c 6963 6174 696f 6e20 656e  e application en\n+00004df0: 7669 726f 6e6d 656e 742c 2065 673a 2064  vironment, eg: d\n+00004e00: 6576 2f74 6573 742f 7275 6e20 5d5d 3e3c  ev/test/run ]]><\n+00004e10: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00004e20: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00004e30: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00004e40: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+00004e50: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+00004e60: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00004e70: 6275 7465 206e 616d 653d 2263 6f6d 7069  bute name=\"compi\n+00004e80: 6c65 7222 2074 7970 653d 2278 7364 3a73  ler\" type=\"xsd:s\n+00004e90: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+00004ea0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+00004eb0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00004ec0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+00004ed0: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+00004ee0: 5441 5b20 5468 6520 6a61 7661 2063 6f64  TA[ The java cod\n+00004ef0: 6520 636f 6d70 696c 6572 2e20 5d5d 3e3c  e compiler. ]]><\n+00004f00: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00004f10: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00004f20: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00004f30: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+00004f40: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+00004f50: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00004f60: 6275 7465 206e 616d 653d 226c 6f67 6765  bute name=\"logge\n+00004f70: 7222 2074 7970 653d 2278 7364 3a73 7472  r\" type=\"xsd:str\n+00004f80: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+00004f90: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00004fa0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00004fb0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+00004fc0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+00004fd0: 5b20 5468 6520 6170 706c 6963 6174 696f  [ The applicatio\n+00004fe0: 6e20 6c6f 6767 6572 2e20 5d5d 3e3c 2f78  n logger. ]]></x\n+00004ff0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00005000: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00005010: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00005020: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+00005030: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+00005040: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+00005050: 7465 206e 616d 653d 2272 6567 6973 7472  te name=\"registr\n+00005060: 7922 2074 7970 653d 2278 7364 3a73 7472  y\" type=\"xsd:str\n+00005070: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+00005080: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00005090: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+000050a0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+000050b0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+000050c0: 5b20 5468 6520 6170 706c 6963 6174 696f  [ The applicatio\n+000050d0: 6e20 7265 6769 7374 7279 2e20 5d5d 3e3c  n registry. ]]><\n+000050e0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+000050f0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00005100: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00005110: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+00005120: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+00005130: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00005140: 6275 7465 206e 616d 653d 226d 6f6e 6974  bute name=\"monit\n+00005150: 6f72 2220 7479 7065 3d22 7873 643a 7374  or\" type=\"xsd:st\n+00005160: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+00005170: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+00005180: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00005190: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+000051a0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+000051b0: 415b 2054 6865 2061 7070 6c69 6361 7469  A[ The applicati\n+000051c0: 6f6e 206d 6f6e 6974 6f72 2e20 5d5d 3e3c  on monitor. ]]><\n+000051d0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+000051e0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+000051f0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00005200: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+00005210: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+00005220: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00005230: 6275 7465 206e 616d 653d 2264 6566 6175  bute name=\"defau\n+00005240: 6c74 2220 7479 7065 3d22 7873 643a 7374  lt\" type=\"xsd:st\n+00005250: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+00005260: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+00005270: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00005280: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00005290: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+000052a0: 415b 2049 7320 6465 6661 756c 742e 205d  A[ Is default. ]\n+000052b0: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+000052c0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+000052d0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+000052e0: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+000052f0: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+00005300: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n+00005310: 7472 6962 7574 6520 6e61 6d65 3d22 6d65  tribute name=\"me\n+00005320: 7461 6461 7461 2d74 7970 6522 2074 7970  tadata-type\" typ\n+00005330: 653d 2278 7364 3a73 7472 696e 6722 3e0d  e=\"xsd:string\">.\n+00005340: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00005350: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00005360: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00005370: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00005380: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n+00005390: 6d65 7461 6474 6120 7479 7065 3a20 6c6f  metadta type: lo\n+000053a0: 6361 6c20 6f72 2072 656d 6f74 652e 205d  cal or remote. ]\n+000053b0: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+000053c0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+000053d0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+000053e0: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+000053f0: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+00005400: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n+00005410: 7472 6962 7574 6520 6e61 6d65 3d22 7265  tribute name=\"re\n+00005420: 6769 7374 6572 2d63 6f6e 7375 6d65 7222  gister-consumer\"\n+00005430: 2074 7970 653d 2278 7364 3a62 6f6f 6c65   type=\"xsd:boole\n+00005440: 616e 223e 0d0a 2020 2020 2020 2020 2020  an\">..          \n+00005450: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00005460: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00005470: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00005480: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+00005490: 2052 6567 6973 7465 7220 636f 6e73 756d   Register consum\n+000054a0: 6572 2069 6e73 7461 6e63 6520 6f72 206e  er instance or n\n+000054b0: 6f74 2c20 6465 6661 756c 7420 6661 6c73  ot, default fals\n+000054c0: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n+000054d0: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+000054e0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+000054f0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00005500: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00005510: 7465 3e0d 0a20 2020 203c 2f78 7364 3a63  te>..    </xsd:c\n+00005520: 6f6d 706c 6578 5479 7065 3e0d 0a0d 0a20  omplexType>.... \n+00005530: 2020 203c 7873 643a 636f 6d70 6c65 7854     <xsd:complexT\n+00005540: 7970 6520 6e61 6d65 3d22 6d6f 6475 6c65  ype name=\"module\n+00005550: 5479 7065 223e 0d0a 2020 2020 2020 2020  Type\">..        \n+00005560: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+00005570: 616d 653d 2269 6422 2074 7970 653d 2278  ame=\"id\" type=\"x\n+00005580: 7364 3a49 4422 3e0d 0a20 2020 2020 2020  sd:ID\">..       \n+00005590: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+000055a0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+000055b0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+000055c0: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+000055d0: 5441 5b20 5468 6520 756e 6971 7565 2069  TA[ The unique i\n+000055e0: 6465 6e74 6966 6965 7220 666f 7220 6120  dentifier for a \n+000055f0: 6265 616e 2e20 5d5d 3e3c 2f78 7364 3a64  bean. ]]></xsd:d\n+00005600: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+00005610: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00005620: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00005630: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+00005640: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+00005650: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+00005660: 616d 653d 226e 616d 6522 2074 7970 653d  ame=\"name\" type=\n+00005670: 2278 7364 3a73 7472 696e 6722 2075 7365  \"xsd:string\" use\n+00005680: 3d22 7265 7175 6972 6564 223e 0d0a 2020  =\"required\">..  \n+00005690: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+000056a0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+000056b0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000056c0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+000056d0: 215b 4344 4154 415b 2054 6865 206d 6f64  ![CDATA[ The mod\n+000056e0: 756c 6520 6e61 6d65 2e20 5d5d 3e3c 2f78  ule name. ]]></x\n+000056f0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00005700: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00005710: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00005720: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+00005730: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+00005740: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+00005750: 7465 206e 616d 653d 2276 6572 7369 6f6e  te name=\"version\n+00005760: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+00005770: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+00005780: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00005790: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000057a0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+000057b0: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+000057c0: 2054 6865 206d 6f64 756c 6520 7665 7273   The module vers\n+000057d0: 696f 6e2e 205d 5d3e 3c2f 7873 643a 646f  ion. ]]></xsd:do\n+000057e0: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+000057f0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00005800: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00005810: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+00005820: 6275 7465 3e0d 0a20 2020 2020 2020 203c  bute>..        <\n+00005830: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00005840: 6d65 3d22 6f77 6e65 7222 2074 7970 653d  me=\"owner\" type=\n+00005850: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+00005860: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00005870: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00005880: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00005890: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+000058a0: 3c21 5b43 4441 5441 5b20 5468 6520 6d6f  <![CDATA[ The mo\n+000058b0: 6475 6c65 206f 776e 6572 206e 616d 6520  dule owner name \n+000058c0: 2865 6d61 696c 2070 7265 6669 7829 2e20  (email prefix). \n+000058d0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+000058e0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+000058f0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00005900: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00005910: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00005920: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+00005930: 7474 7269 6275 7465 206e 616d 653d 226f  ttribute name=\"o\n+00005940: 7267 616e 697a 6174 696f 6e22 2074 7970  rganization\" typ\n+00005950: 653d 2278 7364 3a73 7472 696e 6722 3e0d  e=\"xsd:string\">.\n+00005960: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00005970: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00005980: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00005990: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+000059a0: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n+000059b0: 6d6f 6475 6c65 206f 7267 616e 697a 6174  module organizat\n+000059c0: 696f 6e2e 205d 5d3e 3c2f 7873 643a 646f  ion. ]]></xsd:do\n+000059d0: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+000059e0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+000059f0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00005a00: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+00005a10: 6275 7465 3e0d 0a20 2020 2020 2020 203c  bute>..        <\n+00005a20: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00005a30: 6d65 3d22 7265 6769 7374 7279 2220 7479  me=\"registry\" ty\n+00005a40: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+00005a50: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+00005a60: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00005a70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00005a80: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00005a90: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+00005aa0: 206d 6f64 756c 6520 7265 6769 7374 7279   module registry\n+00005ab0: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00005ac0: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00005ad0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00005ae0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00005af0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00005b00: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+00005b10: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00005b20: 226d 6f6e 6974 6f72 2220 7479 7065 3d22  \"monitor\" type=\"\n+00005b30: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+00005b40: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00005b50: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00005b60: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00005b70: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+00005b80: 215b 4344 4154 415b 2054 6865 206d 6f64  ![CDATA[ The mod\n+00005b90: 756c 6520 6d6f 6e69 746f 722e 205d 5d3e  ule monitor. ]]>\n+00005ba0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+00005bb0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00005bc0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+00005bd0: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+00005be0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+00005bf0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+00005c00: 6962 7574 6520 6e61 6d65 3d22 6465 6661  ibute name=\"defa\n+00005c10: 756c 7422 2074 7970 653d 2278 7364 3a73  ult\" type=\"xsd:s\n+00005c20: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+00005c30: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+00005c40: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00005c50: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+00005c60: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+00005c70: 5441 5b20 4973 2064 6566 6175 6c74 2e20  TA[ Is default. \n+00005c80: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+00005c90: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00005ca0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00005cb0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00005cc0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00005cd0: 0d0a 2020 2020 3c2f 7873 643a 636f 6d70  ..    </xsd:comp\n+00005ce0: 6c65 7854 7970 653e 0d0a 0d0a 2020 2020  lexType>....    \n+00005cf0: 3c78 7364 3a63 6f6d 706c 6578 5479 7065  <xsd:complexType\n+00005d00: 206e 616d 653d 2272 6567 6973 7472 7954   name=\"registryT\n+00005d10: 7970 6522 3e0d 0a20 2020 2020 2020 203c  ype\">..        <\n+00005d20: 7873 643a 7365 7175 656e 6365 206d 696e  xsd:sequence min\n+00005d30: 4f63 6375 7273 3d22 3022 206d 6178 4f63  Occurs=\"0\" maxOc\n+00005d40: 6375 7273 3d22 756e 626f 756e 6465 6422  curs=\"unbounded\"\n+00005d50: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00005d60: 7873 643a 656c 656d 656e 7420 7265 663d  xsd:element ref=\n+00005d70: 2270 6172 616d 6574 6572 2220 6d69 6e4f  \"parameter\" minO\n+00005d80: 6363 7572 733d 2230 2220 6d61 784f 6363  ccurs=\"0\" maxOcc\n+00005d90: 7572 733d 2275 6e62 6f75 6e64 6564 222f  urs=\"unbounded\"/\n+00005da0: 3e0d 0a20 2020 2020 2020 203c 2f78 7364  >..        </xsd\n+00005db0: 3a73 6571 7565 6e63 653e 0d0a 2020 2020  :sequence>..    \n+00005dc0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+00005dd0: 7465 206e 616d 653d 2269 6422 2074 7970  te name=\"id\" typ\n+00005de0: 653d 2278 7364 3a49 4422 3e0d 0a20 2020  e=\"xsd:ID\">..   \n+00005df0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+00005e00: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00005e10: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00005e20: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00005e30: 5b43 4441 5441 5b20 5468 6520 756e 6971  [CDATA[ The uniq\n+00005e40: 7565 2069 6465 6e74 6966 6965 7220 666f  ue identifier fo\n+00005e50: 7220 6120 6265 616e 2e20 5d5d 3e3c 2f78  r a bean. ]]></x\n+00005e60: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00005e70: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00005e80: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00005e90: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+00005ea0: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+00005eb0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+00005ec0: 7465 206e 616d 653d 2261 6464 7265 7373  te name=\"address\n+00005ed0: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+00005ee0: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+00005ef0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00005f00: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00005f10: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00005f20: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+00005f30: 2054 6865 2072 6567 6973 7472 7920 6164   The registry ad\n+00005f40: 6472 6573 732e 205d 5d3e 3c2f 7873 643a  dress. ]]></xsd:\n+00005f50: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00005f60: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00005f70: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n 00005f80: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00005f90: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00005fa0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00005fb0: 616d 653d 2275 7365 726e 616d 6522 2074  ame=\"username\" t\n-00005fc0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-00005fd0: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-00005fe0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00005ff0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00006000: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00006010: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-00006020: 7265 6769 7374 7279 2075 7365 726e 616d  registry usernam\n-00006030: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n-00006040: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-00006050: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-00006060: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00006070: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-00006080: 3e0a 2020 2020 2020 2020 3c78 7364 3a61  >.        <xsd:a\n-00006090: 7474 7269 6275 7465 206e 616d 653d 2270  ttribute name=\"p\n-000060a0: 6173 7377 6f72 6422 2074 7970 653d 2278  assword\" type=\"x\n-000060b0: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-000060c0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-000060d0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-000060e0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-000060f0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00006100: 4441 5441 5b20 5468 6520 7265 6769 7374  DATA[ The regist\n-00006110: 7279 2070 6173 7377 6f72 642e 205d 5d3e  ry password. ]]>\n-00006120: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-00006130: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00006140: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-00006150: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-00006160: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-00006170: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-00006180: 7465 206e 616d 653d 2274 7261 6e73 706f  te name=\"transpo\n-00006190: 7274 2220 7479 7065 3d22 7873 643a 7374  rt\" type=\"xsd:st\n-000061a0: 7269 6e67 223e 0a20 2020 2020 2020 2020  ring\">.         \n-000061b0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-000061c0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-000061d0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-000061e0: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n-000061f0: 2054 6865 2070 726f 746f 636f 6c20 7472   The protocol tr\n-00006200: 616e 7370 6f72 7465 7220 7479 7065 2e20  ansporter type. \n-00006210: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00006220: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00006230: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00006240: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-00006250: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-00006260: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-00006270: 6962 7574 6520 6e61 6d65 3d22 7472 616e  ibute name=\"tran\n-00006280: 7370 6f72 7465 7222 2074 7970 653d 2278  sporter\" type=\"x\n-00006290: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-000062a0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-000062b0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-000062c0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-000062d0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-000062e0: 4441 5441 5b20 5468 6520 7072 6f74 6f63  DATA[ The protoc\n-000062f0: 6f6c 2074 7261 6e73 706f 7274 6572 2074  ol transporter t\n-00006300: 7970 652e 205d 5d3e 3c2f 7873 643a 646f  ype. ]]></xsd:do\n-00006310: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00006320: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00006330: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00006340: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-00006350: 7465 3e0a 2020 2020 2020 2020 3c78 7364  te>.        <xsd\n-00006360: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-00006370: 2273 6572 7665 7222 2074 7970 653d 2278  \"server\" type=\"x\n-00006380: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-00006390: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-000063a0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-000063b0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-000063c0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-000063d0: 4441 5441 5b20 5468 6520 7072 6f74 6f63  DATA[ The protoc\n-000063e0: 6f6c 2073 6572 7665 7220 7479 7065 2e20  ol server type. \n-000063f0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00006400: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00006410: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00006420: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-00006430: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-00006440: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-00006450: 6962 7574 6520 6e61 6d65 3d22 636c 6965  ibute name=\"clie\n-00006460: 6e74 2220 7479 7065 3d22 7873 643a 7374  nt\" type=\"xsd:st\n-00006470: 7269 6e67 223e 0a20 2020 2020 2020 2020  ring\">.         \n-00006480: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-00006490: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-000064a0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-000064b0: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n-000064c0: 2054 6865 2070 726f 746f 636f 6c20 636c   The protocol cl\n-000064d0: 6965 6e74 2074 7970 652e 205d 5d3e 3c2f  ient type. ]]></\n-000064e0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-000064f0: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-00006500: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00006510: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-00006520: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00006530: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00006540: 206e 616d 653d 2263 6c75 7374 6572 2220   name=\"cluster\" \n-00006550: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-00006560: 223e 0a20 2020 2020 2020 2020 2020 203c  \">.            <\n-00006570: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00006580: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00006590: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-000065a0: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-000065b0: 2072 6567 6973 7472 7920 636c 7573 7465   registry cluste\n-000065c0: 7220 7479 7065 2e20 5d5d 3e3c 2f78 7364  r type. ]]></xsd\n-000065d0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-000065e0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-000065f0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00006600: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-00006610: 6962 7574 653e 0a20 2020 2020 2020 203c  ibute>.        <\n-00006620: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-00006630: 6d65 3d22 7a6f 6e65 2220 7479 7065 3d22  me=\"zone\" type=\"\n-00006640: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-00006650: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-00006660: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00006670: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00006680: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-00006690: 4344 4154 415b 2054 6865 2072 6567 6973  CDATA[ The regis\n-000066a0: 7472 7920 7a6f 6e65 2074 7970 652e 205d  try zone type. ]\n-000066b0: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-000066c0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-000066d0: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-000066e0: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-000066f0: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-00006700: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-00006710: 6275 7465 206e 616d 653d 2266 6f72 6b73  bute name=\"forks\n-00006720: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-00006730: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-00006740: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-00006750: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00006760: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-00006770: 7469 6f6e 3e3c 215b 4344 4154 415b 2046  tion><![CDATA[ F\n-00006780: 6f72 6b69 6e67 436c 7573 7465 7220 666f  orkingCluster fo\n-00006790: 726b 732e 205d 5d3e 3c2f 7873 643a 646f  rks. ]]></xsd:do\n-000067a0: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-000067b0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-000067c0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-000067d0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-000067e0: 7465 3e0a 2020 2020 2020 2020 3c78 7364  te>.        <xsd\n-000067f0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-00006800: 2267 726f 7570 2220 7479 7065 3d22 7873  \"group\" type=\"xs\n-00006810: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-00006820: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-00006830: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00006840: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-00006850: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-00006860: 4154 415b 2054 6865 2072 6567 6973 7472  ATA[ The registr\n-00006870: 7920 6772 6f75 702e 205d 5d3e 3c2f 7873  y group. ]]></xs\n-00006880: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00006890: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-000068a0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-000068b0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-000068c0: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-000068d0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-000068e0: 616d 653d 2276 6572 7369 6f6e 2220 7479  ame=\"version\" ty\n-000068f0: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00006900: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00006910: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00006920: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00006930: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00006940: 3e3c 215b 4344 4154 415b 2054 6865 2072  ><![CDATA[ The r\n-00006950: 6567 6973 7472 7920 7665 7273 696f 6e2e  egistry version.\n-00006960: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-00006970: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00006980: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00006990: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-000069a0: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-000069b0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-000069c0: 7269 6275 7465 206e 616d 653d 2274 696d  ribute name=\"tim\n-000069d0: 656f 7574 2220 7479 7065 3d22 7873 643a  eout\" type=\"xsd:\n-000069e0: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-000069f0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00006a00: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00006a10: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00006a20: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00006a30: 415b 2054 6865 2072 6571 7565 7374 2074  A[ The request t\n-00006a40: 696d 656f 7574 2e20 5d5d 3e3c 2f78 7364  imeout. ]]></xsd\n-00006a50: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-00006a60: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00006a70: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00006a80: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-00006a90: 6962 7574 653e 0a20 2020 2020 2020 203c  ibute>.        <\n-00006aa0: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-00006ab0: 6d65 3d22 7365 7373 696f 6e22 2074 7970  me=\"session\" typ\n-00006ac0: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-00006ad0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00006ae0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00006af0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00006b00: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00006b10: 3c21 5b43 4441 5441 5b20 5468 6520 7365  <![CDATA[ The se\n-00006b20: 7373 696f 6e20 7469 6d65 6f75 742e 205d  ssion timeout. ]\n-00006b30: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-00006b40: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00006b50: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-00006b60: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-00006b70: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-00006b80: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-00006b90: 6275 7465 206e 616d 653d 2266 696c 6522  bute name=\"file\"\n-00006ba0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-00006bb0: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-00006bc0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-00006bd0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00006be0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-00006bf0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-00006c00: 6520 7265 6769 7374 7279 2061 6464 6472  e registry adddr\n-00006c10: 6573 7320 6669 6c65 2073 746f 7265 2e20  ess file store. \n-00006c20: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00006c30: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00006c40: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00006c50: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-00006c60: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-00006c70: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-00006c80: 6962 7574 6520 6e61 6d65 3d22 7761 6974  ibute name=\"wait\n-00006c90: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-00006ca0: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-00006cb0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-00006cc0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00006cd0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-00006ce0: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-00006cf0: 6865 2077 6169 7420 7469 6d65 2066 6f72  he wait time for\n-00006d00: 2073 6875 7464 6f77 6e2e 205d 5d3e 3c2f   shutdown. ]]></\n-00006d10: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00006d20: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-00006d30: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00006d40: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-00006d50: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00006d60: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00006d70: 206e 616d 653d 2263 6865 636b 2220 7479   name=\"check\" ty\n-00006d80: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00006d90: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00006da0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00006db0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00006dc0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00006dd0: 3e3c 215b 4344 4154 415b 2043 6865 636b  ><![CDATA[ Check\n-00006de0: 2072 6567 6973 7472 7920 7374 6174 7573   registry status\n-00006df0: 206f 6e20 7374 7261 7475 702e 205d 5d3e   on stratup. ]]>\n-00006e00: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-00006e10: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00006e20: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-00006e30: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-00006e40: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-00006e50: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-00006e60: 7465 206e 616d 653d 2264 796e 616d 6963  te name=\"dynamic\n-00006e70: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-00006e80: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-00006e90: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-00006ea0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00006eb0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-00006ec0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00006ed0: 2020 2020 2020 2020 2020 3c21 5b43 4441            <![CDA\n-00006ee0: 5441 5b20 7468 6520 7365 7276 6963 6520  TA[ the service \n-00006ef0: 7265 6769 7374 6572 6564 2074 6f20 7468  registered to th\n-00006f00: 6973 2072 6567 6973 7472 7920 6973 2064  is registry is d\n-00006f10: 796e 616d 6963 2874 7275 6529 206f 7220  ynamic(true) or \n-00006f20: 7374 6174 6963 2866 616c 7365 292e 205d  static(false). ]\n-00006f30: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-00006f40: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00006f50: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-00006f60: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-00006f70: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-00006f80: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-00006f90: 6275 7465 206e 616d 653d 2272 6567 6973  bute name=\"regis\n-00006fa0: 7465 7222 2074 7970 653d 2278 7364 3a73  ter\" type=\"xsd:s\n-00006fb0: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-00006fc0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-00006fd0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00006fe0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-00006ff0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00007000: 2020 2020 2020 2020 2020 2020 203c 215b               <![\n-00007010: 4344 4154 415b 2072 6567 6973 7465 7220  CDATA[ register \n-00007020: 7365 7276 6963 6520 746f 2074 6869 7320  service to this \n-00007030: 7265 6769 7374 7279 2874 7275 6529 206f  registry(true) o\n-00007040: 7220 6e6f 7428 6661 6c73 6529 2e20 5d5d  r not(false). ]]\n-00007050: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-00007060: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00007070: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-00007080: 6f6e 3e0a 2020 2020 2020 2020 3c2f 7873  on>.        </xs\n-00007090: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-000070a0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-000070b0: 7574 6520 6e61 6d65 3d22 7375 6273 6372  ute name=\"subscr\n-000070c0: 6962 6522 2074 7970 653d 2278 7364 3a73  ibe\" type=\"xsd:s\n-000070d0: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-000070e0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-000070f0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00007100: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-00007110: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00007120: 2020 2020 2020 2020 2020 2020 203c 215b               <![\n-00007130: 4344 4154 415b 2073 7562 7363 7269 6265  CDATA[ subscribe\n-00007140: 2073 6572 7669 6365 2074 6f20 7468 6973   service to this\n-00007150: 2072 6567 6973 7472 7928 7472 7565 2920   registry(true) \n-00007160: 6f72 206e 6f74 2866 616c 7365 292e 205d  or not(false). ]\n-00007170: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-00007180: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00007190: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-000071a0: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-000071b0: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-000071c0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-000071d0: 6275 7465 206e 616d 653d 2264 6566 6175  bute name=\"defau\n-000071e0: 6c74 2220 7479 7065 3d22 7873 643a 7374  lt\" type=\"xsd:st\n-000071f0: 7269 6e67 223e 0a20 2020 2020 2020 2020  ring\">.         \n-00007200: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-00007210: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00007220: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-00007230: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n-00007240: 2049 7320 6465 6661 756c 742e 205d 5d3e   Is default. ]]>\n-00007250: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-00007260: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00007270: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-00007280: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-00007290: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-000072a0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-000072b0: 7465 206e 616d 653d 2273 696d 706c 6966  te name=\"simplif\n-000072c0: 6965 6422 2074 7970 653d 2278 7364 3a62  ied\" type=\"xsd:b\n-000072d0: 6f6f 6c65 616e 223e 0a20 2020 2020 2020  oolean\">.       \n-000072e0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-000072f0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00007300: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00007310: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00007320: 415b 2049 7320 7369 6d70 6c65 2e20 5d5d  A[ Is simple. ]]\n-00007330: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-00007340: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00007350: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-00007360: 6f6e 3e0a 2020 2020 2020 2020 3c2f 7873  on>.        </xs\n-00007370: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-00007380: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-00007390: 7574 6520 6e61 6d65 3d22 6578 7472 612d  ute name=\"extra-\n-000073a0: 6b65 7973 2220 7479 7065 3d22 7873 643a  keys\" type=\"xsd:\n-000073b0: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-000073c0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-000073d0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-000073e0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-000073f0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00007400: 415b 2045 7874 7261 2050 6172 616d 6574  A[ Extra Paramet\n-00007410: 6572 204b 6579 732e 205d 5d3e 3c2f 7873  er Keys. ]]></xs\n-00007420: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00007430: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00007440: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00007450: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00007460: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00007470: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00007480: 616d 653d 2275 7365 2d61 732d 636f 6e66  ame=\"use-as-conf\n-00007490: 6967 2d63 656e 7465 7222 2074 7970 653d  ig-center\" type=\n-000074a0: 2278 7364 3a62 6f6f 6c65 616e 223e 0a20  \"xsd:boolean\">. \n-000074b0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-000074c0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-000074d0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000074e0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-000074f0: 215b 4344 4154 415b 2077 6f72 6b20 6173  ![CDATA[ work as\n-00007500: 2063 6f6e 6669 6720 6365 6e74 6572 206f   config center o\n-00007510: 7220 6e6f 742e 205d 5d3e 3c2f 7873 643a  r not. ]]></xsd:\n-00007520: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-00007530: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00007540: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00007550: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00007560: 6275 7465 3e0a 2020 2020 2020 2020 3c78  bute>.        <x\n-00007570: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-00007580: 653d 2275 7365 2d61 732d 6d65 7461 6461  e=\"use-as-metada\n-00007590: 7461 2d63 656e 7465 7222 2074 7970 653d  ta-center\" type=\n-000075a0: 2278 7364 3a62 6f6f 6c65 616e 223e 0a20  \"xsd:boolean\">. \n-000075b0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-000075c0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-000075d0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000075e0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-000075f0: 215b 4344 4154 415b 2077 6f72 6b20 6173  ![CDATA[ work as\n-00007600: 206d 6574 6164 6174 6120 6365 6e74 6572   metadata center\n-00007610: 206f 7220 6e6f 742e 205d 5d3e 3c2f 7873   or not. ]]></xs\n-00007620: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00007630: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00007640: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00007650: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00007660: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00007670: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00007680: 616d 653d 2261 6363 6570 7473 2220 7479  ame=\"accepts\" ty\n-00007690: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-000076a0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-000076b0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-000076c0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-000076d0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-000076e0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-000076f0: 2020 2020 2020 3c21 5b43 4441 5441 5b20        <![CDATA[ \n-00007700: 6c69 7374 206f 6620 7270 6320 7072 6f74  list of rpc prot\n-00007710: 6f63 6f6c 7320 6163 6365 7074 6564 2062  ocols accepted b\n-00007720: 7920 7468 6973 2072 6567 6973 7472 792c  y this registry,\n-00007730: 2073 6570 6172 6174 6564 2077 6974 6820   separated with \n-00007740: 222c 222e 205d 5d3e 3c2f 7873 643a 646f  \",\". ]]></xsd:do\n-00007750: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00007760: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00007770: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00007780: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-00007790: 7465 3e0a 2020 2020 2020 2020 3c78 7364  te>.        <xsd\n-000077a0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-000077b0: 2270 7265 6665 7272 6564 2220 7479 7065  \"preferred\" type\n-000077c0: 3d22 7873 643a 626f 6f6c 6561 6e22 3e0a  =\"xsd:boolean\">.\n-000077d0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000077e0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-000077f0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00007800: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00007810: 3c21 5b43 4441 5441 5b20 4973 2074 6869  <![CDATA[ Is thi\n-00007820: 7320 7265 6769 7374 7279 2074 6865 2070  s registry the p\n-00007830: 7265 6665 7272 6564 206f 6e65 2e20 5d5d  referred one. ]]\n-00007840: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-00007850: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00007860: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-00007870: 6f6e 3e0a 2020 2020 2020 2020 3c2f 7873  on>.        </xs\n-00007880: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-00007890: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-000078a0: 7574 6520 6e61 6d65 3d22 7765 6967 6874  ute name=\"weight\n-000078b0: 2220 7479 7065 3d22 7873 643a 696e 7465  \" type=\"xsd:inte\n-000078c0: 6765 7222 3e0a 2020 2020 2020 2020 2020  ger\">.          \n-000078d0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-000078e0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-000078f0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-00007900: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-00007910: 7765 6967 6874 206f 6620 7265 6769 7374  weight of regist\n-00007920: 7279 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ry. ]]></xsd:doc\n-00007930: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00007940: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-00007950: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00007960: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-00007970: 653e 0a20 2020 203c 2f78 7364 3a63 6f6d  e>.    </xsd:com\n-00007980: 706c 6578 5479 7065 3e0a 0a20 2020 203c  plexType>..    <\n-00007990: 7873 643a 636f 6d70 6c65 7854 7970 6520  xsd:complexType \n-000079a0: 6e61 6d65 3d22 6d65 7461 6461 7461 5265  name=\"metadataRe\n-000079b0: 706f 7274 5479 7065 223e 0a20 2020 2020  portType\">.     \n-000079c0: 2020 203c 7873 643a 7365 7175 656e 6365     <xsd:sequence\n-000079d0: 206d 696e 4f63 6375 7273 3d22 3022 206d   minOccurs=\"0\" m\n-000079e0: 6178 4f63 6375 7273 3d22 756e 626f 756e  axOccurs=\"unboun\n-000079f0: 6465 6422 3e0a 2020 2020 2020 2020 2020  ded\">.          \n-00007a00: 2020 3c78 7364 3a65 6c65 6d65 6e74 2072    <xsd:element r\n-00007a10: 6566 3d22 7061 7261 6d65 7465 7222 206d  ef=\"parameter\" m\n-00007a20: 696e 4f63 6375 7273 3d22 3022 206d 6178  inOccurs=\"0\" max\n-00007a30: 4f63 6375 7273 3d22 756e 626f 756e 6465  Occurs=\"unbounde\n-00007a40: 6422 2f3e 0a20 2020 2020 2020 203c 2f78  d\"/>.        </x\n-00007a50: 7364 3a73 6571 7565 6e63 653e 0a20 2020  sd:sequence>.   \n-00007a60: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-00007a70: 7574 6520 6e61 6d65 3d22 6964 2220 7479  ute name=\"id\" ty\n-00007a80: 7065 3d22 7873 643a 4944 223e 0a20 2020  pe=\"xsd:ID\">.   \n-00007a90: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-00007aa0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00007ab0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00007ac0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-00007ad0: 4344 4154 415b 2054 6865 2075 6e69 7175  CDATA[ The uniqu\n-00007ae0: 6520 6964 656e 7469 6669 6572 2066 6f72  e identifier for\n-00007af0: 2061 2062 6561 6e2e 205d 5d3e 3c2f 7873   a bean. ]]></xs\n-00007b00: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00007b10: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00007b20: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00007b30: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00007b40: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00007b50: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00007b60: 616d 653d 2261 6464 7265 7373 2220 7479  ame=\"address\" ty\n-00007b70: 7065 3d22 7873 643a 7374 7269 6e67 2220  pe=\"xsd:string\" \n-00007b80: 7573 653d 226f 7074 696f 6e61 6c22 3e0a  use=\"optional\">.\n-00007b90: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00007ba0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00007bb0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00007bc0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00007bd0: 3c21 5b43 4441 5441 5b20 5468 6520 6d65  <![CDATA[ The me\n-00007be0: 7461 6461 7461 5265 706f 7274 2061 6464  tadataReport add\n-00007bf0: 7265 7373 2e20 5d5d 3e3c 2f78 7364 3a64  ress. ]]></xsd:d\n-00007c00: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00007c10: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00007c20: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00007c30: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00007c40: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-00007c50: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00007c60: 3d22 7573 6572 6e61 6d65 2220 7479 7065  =\"username\" type\n-00007c70: 3d22 7873 643a 7374 7269 6e67 2220 7573  =\"xsd:string\" us\n-00007c80: 653d 226f 7074 696f 6e61 6c22 3e0a 2020  e=\"optional\">.  \n-00007c90: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00007ca0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00007cb0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00007cc0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-00007cd0: 5b43 4441 5441 5b20 5468 6520 6d65 7461  [CDATA[ The meta\n-00007ce0: 6461 7461 5265 706f 7274 2075 7365 726e  dataReport usern\n-00007cf0: 616d 652e 205d 5d3e 3c2f 7873 643a 646f  ame. ]]></xsd:do\n-00007d00: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00007d10: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00007d20: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00007d30: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-00007d40: 7465 3e0a 2020 2020 2020 2020 3c78 7364  te>.        <xsd\n-00007d50: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-00007d60: 2270 6173 7377 6f72 6422 2074 7970 653d  \"password\" type=\n-00007d70: 2278 7364 3a73 7472 696e 6722 2075 7365  \"xsd:string\" use\n-00007d80: 3d22 6f70 7469 6f6e 616c 223e 0a20 2020  =\"optional\">.   \n-00007d90: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-00007da0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00007db0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00007dc0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-00007dd0: 4344 4154 415b 2054 6865 206d 6574 6164  CDATA[ The metad\n-00007de0: 6174 6152 6570 6f72 7420 7061 7373 776f  ataReport passwo\n-00007df0: 7264 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  rd. ]]></xsd:doc\n-00007e00: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00007e10: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-00007e20: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00007e30: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-00007e40: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-00007e50: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-00007e60: 7469 6d65 6f75 7422 2074 7970 653d 2278  timeout\" type=\"x\n-00007e70: 7364 3a73 7472 696e 6722 2075 7365 3d22  sd:string\" use=\"\n-00007e80: 6f70 7469 6f6e 616c 223e 0a20 2020 2020  optional\">.     \n-00007e90: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-00007ea0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00007eb0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-00007ec0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-00007ed0: 4154 415b 2054 6865 2072 6571 7565 7374  ATA[ The request\n-00007ee0: 2074 696d 656f 7574 2e20 5d5d 3e3c 2f78   timeout. ]]></x\n-00007ef0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00007f00: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-00007f10: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00007f20: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00007f30: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-00007f40: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00007f50: 6e61 6d65 3d22 6772 6f75 7022 2074 7970  name=\"group\" typ\n-00007f60: 653d 2278 7364 3a73 7472 696e 6722 2075  e=\"xsd:string\" u\n-00007f70: 7365 3d22 6f70 7469 6f6e 616c 223e 0a20  se=\"optional\">. \n-00007f80: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00007f90: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00007fa0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00007fb0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-00007fc0: 215b 4344 4154 415b 2054 6865 2067 726f  ![CDATA[ The gro\n-00007fd0: 7570 206f 6620 6d65 7461 6461 7461 2d72  up of metadata-r\n-00007fe0: 6570 6f72 742e 205d 5d3e 3c2f 7873 643a  eport. ]]></xsd:\n-00007ff0: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-00008000: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00008010: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00008020: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00008030: 6275 7465 3e0a 0a20 2020 2020 2020 203c  bute>..        <\n-00008040: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-00008050: 6d65 3d22 7265 7472 792d 7469 6d65 7322  me=\"retry-times\"\n-00008060: 2074 7970 653d 2278 7364 3a69 6e74 6567   type=\"xsd:integ\n-00008070: 6572 2220 7573 653d 226f 7074 696f 6e61  er\" use=\"optiona\n-00008080: 6c22 3e0a 2020 2020 2020 2020 2020 2020  l\">.            \n-00008090: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-000080a0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-000080b0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-000080c0: 696f 6e3e 3c21 5b43 4441 5441 5b20 6966  ion><![CDATA[ if\n-000080d0: 2066 6169 6c2c 2072 6574 7279 2074 696d   fail, retry tim\n-000080e0: 6573 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  es. ]]></xsd:doc\n-000080f0: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00008100: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-00008110: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00008120: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-00008130: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-00008140: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-00008150: 7265 7472 792d 7065 7269 6f64 2220 7479  retry-period\" ty\n-00008160: 7065 3d22 7873 643a 696e 7465 6765 7222  pe=\"xsd:integer\"\n-00008170: 2075 7365 3d22 6f70 7469 6f6e 616c 223e   use=\"optional\">\n-00008180: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00008190: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-000081a0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-000081b0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-000081c0: 3e3c 215b 4344 4154 415b 2069 6620 6661  ><![CDATA[ if fa\n-000081d0: 696c 2c20 7265 7472 7920 7065 7269 6f64  il, retry period\n-000081e0: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-000081f0: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00008200: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00008210: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00008220: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00008230: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n-00008240: 7472 6962 7574 6520 6e61 6d65 3d22 6379  tribute name=\"cy\n-00008250: 636c 652d 7265 706f 7274 2220 7479 7065  cle-report\" type\n-00008260: 3d22 7873 643a 626f 6f6c 6561 6e22 2075  =\"xsd:boolean\" u\n-00008270: 7365 3d22 6f70 7469 6f6e 616c 223e 0a20  se=\"optional\">. \n-00008280: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00008290: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-000082a0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000082b0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-000082c0: 215b 4344 4154 415b 2072 6570 6f72 7420  ![CDATA[ report \n-000082d0: 6379 636c 656c 792e 205d 5d3e 3c2f 7873  cyclely. ]]></xs\n-000082e0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-000082f0: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00008300: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00008310: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00008320: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00008330: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00008340: 616d 653d 2273 796e 632d 7265 706f 7274  ame=\"sync-report\n-00008350: 2220 7479 7065 3d22 7873 643a 626f 6f6c  \" type=\"xsd:bool\n-00008360: 6561 6e22 2075 7365 3d22 6f70 7469 6f6e  ean\" use=\"option\n-00008370: 616c 223e 0a20 2020 2020 2020 2020 2020  al\">.           \n-00008380: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-00008390: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-000083a0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-000083b0: 7469 6f6e 3e3c 215b 4344 4154 415b 2053  tion><![CDATA[ S\n-000083c0: 796e 6320 6f72 2041 7379 6e63 2072 6570  ync or Async rep\n-000083d0: 6f72 742e 205d 5d3e 3c2f 7873 643a 646f  ort. ]]></xsd:do\n-000083e0: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-000083f0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00008400: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00008410: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-00008420: 7465 3e0a 2020 2020 2020 2020 3c78 7364  te>.        <xsd\n-00008430: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-00008440: 2263 6c75 7374 6572 2220 7479 7065 3d22  \"cluster\" type=\"\n-00008450: 7873 643a 626f 6f6c 6561 6e22 2075 7365  xsd:boolean\" use\n-00008460: 3d22 6f70 7469 6f6e 616c 223e 0a20 2020  =\"optional\">.   \n-00008470: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-00008480: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00008490: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-000084a0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-000084b0: 4344 4154 415b 204e 6565 6420 636c 7573  CDATA[ Need clus\n-000084c0: 7465 7220 7375 7070 6f72 742c 2064 6566  ter support, def\n-000084d0: 6175 6c74 2066 616c 7365 2e20 5d5d 3e3c  ault false. ]]><\n-000084e0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-000084f0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00008500: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00008510: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-00008520: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-00008530: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00008540: 6520 6e61 6d65 3d22 7265 6769 7374 7279  e name=\"registry\n-00008550: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-00008560: 6e67 2220 7573 653d 226f 7074 696f 6e61  ng\" use=\"optiona\n-00008570: 6c22 3e0a 2020 2020 2020 2020 2020 2020  l\">.            \n-00008580: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-00008590: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-000085a0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-000085b0: 696f 6e3e 3c21 5b43 4441 5441 5b20 7265  ion><![CDATA[ re\n-000085c0: 6769 7374 7279 2063 6f6e 6669 6720 6964  gistry config id\n-000085d0: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-000085e0: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-000085f0: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00008600: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00008610: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00008620: 0a20 2020 203c 2f78 7364 3a63 6f6d 706c  .    </xsd:compl\n-00008630: 6578 5479 7065 3e0a 0a20 2020 203c 7873  exType>..    <xs\n-00008640: 643a 636f 6d70 6c65 7854 7970 6520 6e61  d:complexType na\n-00008650: 6d65 3d22 636f 6e66 6967 4365 6e74 6572  me=\"configCenter\n-00008660: 5479 7065 223e 0a20 2020 2020 2020 203c  Type\">.        <\n-00008670: 7873 643a 7365 7175 656e 6365 206d 696e  xsd:sequence min\n-00008680: 4f63 6375 7273 3d22 3022 206d 6178 4f63  Occurs=\"0\" maxOc\n-00008690: 6375 7273 3d22 756e 626f 756e 6465 6422  curs=\"unbounded\"\n-000086a0: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-000086b0: 7364 3a65 6c65 6d65 6e74 2072 6566 3d22  sd:element ref=\"\n-000086c0: 7061 7261 6d65 7465 7222 206d 696e 4f63  parameter\" minOc\n-000086d0: 6375 7273 3d22 3022 206d 6178 4f63 6375  curs=\"0\" maxOccu\n-000086e0: 7273 3d22 756e 626f 756e 6465 6422 2f3e  rs=\"unbounded\"/>\n-000086f0: 0a20 2020 2020 2020 203c 2f78 7364 3a73  .        </xsd:s\n-00008700: 6571 7565 6e63 653e 0a20 2020 2020 2020  equence>.       \n-00008710: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00008720: 6e61 6d65 3d22 7072 6f74 6f63 6f6c 2220  name=\"protocol\" \n-00008730: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-00008740: 223e 0a20 2020 2020 2020 2020 2020 203c  \">.            <\n-00008750: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00008760: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00008770: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-00008780: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-00008790: 2063 6f6e 6669 6720 6365 6e74 6572 2070   config center p\n-000087a0: 726f 746f 636f 6c2e 205d 5d3e 3c2f 7873  rotocol. ]]></xs\n-000087b0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-000087c0: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-000087d0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-000087e0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-000087f0: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00008800: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00008810: 616d 653d 2261 6464 7265 7373 2220 7479  ame=\"address\" ty\n-00008820: 7065 3d22 7873 643a 7374 7269 6e67 2220  pe=\"xsd:string\" \n-00008830: 7573 653d 226f 7074 696f 6e61 6c22 3e0a  use=\"optional\">.\n-00008840: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00008850: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00008860: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00008870: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00008880: 3c21 5b43 4441 5441 5b20 5468 6520 636f  <![CDATA[ The co\n-00008890: 6e66 6967 2063 656e 7465 7220 6164 6472  nfig center addr\n-000088a0: 6573 732e 205d 5d3e 3c2f 7873 643a 646f  ess. ]]></xsd:do\n-000088b0: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-000088c0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-000088d0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-000088e0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-000088f0: 7465 3e0a 2020 2020 2020 2020 3c78 7364  te>.        <xsd\n-00008900: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-00008910: 2263 6c75 7374 6572 2220 7479 7065 3d22  \"cluster\" type=\"\n-00008920: 7873 643a 7374 7269 6e67 2220 7573 653d  xsd:string\" use=\n-00008930: 226f 7074 696f 6e61 6c22 3e0a 2020 2020  \"optional\">.    \n-00008940: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00008950: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00008960: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00008970: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00008980: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00008990: 203c 215b 4344 4154 415b 2054 6865 2063   <![CDATA[ The c\n-000089a0: 6f6e 6669 6720 6365 6e74 6572 2063 6c75  onfig center clu\n-000089b0: 7374 6572 2c20 6974 2773 2072 6561 6c20  ster, it's real \n-000089c0: 6d65 616e 696e 6720 6d61 7920 7665 7279  meaning may very\n-000089d0: 206f 6e20 6469 6666 6572 656e 7420 436f   on different Co\n-000089e0: 6e66 6967 2043 656e 7465 7220 7072 6f64  nfig Center prod\n-000089f0: 7563 7473 2e20 5d5d 3e3c 2f78 7364 3a64  ucts. ]]></xsd:d\n-00008a00: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00008a10: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00008a20: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00008a30: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00008a40: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-00008a50: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00008a60: 3d22 6e61 6d65 7370 6163 6522 2074 7970  =\"namespace\" typ\n-00008a70: 653d 2278 7364 3a73 7472 696e 6722 2075  e=\"xsd:string\" u\n-00008a80: 7365 3d22 6f70 7469 6f6e 616c 223e 0a20  se=\"optional\">. \n-00008a90: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00008aa0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00008ab0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00008ac0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-00008ad0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00008ae0: 2020 2020 3c21 5b43 4441 5441 5b20 5468      <![CDATA[ Th\n-00008af0: 6520 6e61 6d65 7370 6163 6520 6f66 2074  e namespace of t\n-00008b00: 6865 2063 6f6e 6669 6720 6365 6e74 6572  he config center\n-00008b10: 2c20 6765 6e65 7261 6c6c 7920 6974 2773  , generally it's\n-00008b20: 2075 7365 6420 666f 7220 6d75 6c74 692d   used for multi-\n-00008b30: 7465 6e61 6e74 2c20 6275 7420 6974 2773  tenant, but it's\n-00008b40: 2072 6561 6c20 6d65 616e 696e 6720 6465   real meaning de\n-00008b50: 7065 6e64 7320 6f6e 2074 6865 2061 6374  pends on the act\n-00008b60: 7561 6c20 436f 6e66 6967 2043 656e 7465  ual Config Cente\n-00008b70: 7220 796f 7520 7573 652e 205d 5d3e 3c2f  r you use. ]]></\n-00008b80: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00008b90: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-00008ba0: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00008bb0: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-00008bc0: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00008bd0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-00008be0: 206e 616d 653d 2267 726f 7570 2220 7479   name=\"group\" ty\n-00008bf0: 7065 3d22 7873 643a 7374 7269 6e67 2220  pe=\"xsd:string\" \n-00008c00: 7573 653d 226f 7074 696f 6e61 6c22 3e0a  use=\"optional\">.\n-00008c10: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00008c20: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00008c30: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00008c40: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00008c50: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00008c60: 2020 2020 203c 215b 4344 4154 415b 2054       <![CDATA[ T\n-00008c70: 6865 2067 726f 7570 206f 6620 7468 6520  he group of the \n-00008c80: 636f 6e66 6967 2063 656e 7465 722c 2067  config center, g\n-00008c90: 656e 6572 616c 6c79 2069 7427 7320 7573  enerally it's us\n-00008ca0: 6564 2074 6f20 6964 656e 7469 6679 2061  ed to identify a\n-00008cb0: 6e20 6973 6f6c 6174 6564 2073 7061 6365  n isolated space\n-00008cc0: 2066 6f72 2061 2062 6174 6368 206f 6620   for a batch of \n-00008cd0: 636f 6e66 6967 2069 7465 6d73 2c20 6275  config items, bu\n-00008ce0: 7420 6974 2773 2072 6561 6c20 6d65 616e  t it's real mean\n-00008cf0: 696e 6720 6465 7065 6e64 7320 6f6e 2074  ing depends on t\n-00008d00: 6865 2061 6374 7561 6c20 436f 6e66 6967  he actual Config\n-00008d10: 2043 656e 7465 7220 796f 7520 7573 652e   Center you use.\n-00008d20: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-00008d30: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00008d40: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00008d50: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-00008d60: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00008d70: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-00008d80: 7269 6275 7465 206e 616d 653d 2263 6f6e  ribute name=\"con\n-00008d90: 6669 672d 6669 6c65 2220 7479 7065 3d22  fig-file\" type=\"\n-00008da0: 7873 643a 7374 7269 6e67 2220 7573 653d  xsd:string\" use=\n-00008db0: 226f 7074 696f 6e61 6c22 3e0a 2020 2020  \"optional\">.    \n-00008dc0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00008dd0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00008de0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00008df0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00008e00: 4441 5441 5b20 5468 6520 6b65 7920 7573  DATA[ The key us\n-00008e10: 6564 2074 6f20 6765 7420 7468 6520 636f  ed to get the co\n-00008e20: 6e66 6967 7320 6174 2073 7461 7274 7570  nfigs at startup\n-00008e30: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-00008e40: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00008e50: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00008e60: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00008e70: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00008e80: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n-00008e90: 7472 6962 7574 6520 6e61 6d65 3d22 6170  tribute name=\"ap\n-00008ea0: 702d 636f 6e66 6967 2d66 696c 6522 2074  p-config-file\" t\n-00008eb0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-00008ec0: 2075 7365 3d22 6f70 7469 6f6e 616c 223e   use=\"optional\">\n-00008ed0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00008ee0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00008ef0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00008f00: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00008f10: 3e3c 215b 4344 4154 415b 2054 6865 206b  ><![CDATA[ The k\n-00008f20: 6579 2075 7365 6420 746f 2067 6574 2074  ey used to get t\n-00008f30: 6865 2063 6f6e 6669 6773 2061 7420 7374  he configs at st\n-00008f40: 6172 7475 702e 205d 5d3e 3c2f 7873 643a  artup. ]]></xsd:\n-00008f50: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-00008f60: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00008f70: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00008f80: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00008f90: 6275 7465 3e0a 2020 2020 2020 2020 3c78  bute>.        <x\n-00008fa0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-00008fb0: 653d 2275 7365 726e 616d 6522 2074 7970  e=\"username\" typ\n-00008fc0: 653d 2278 7364 3a73 7472 696e 6722 2075  e=\"xsd:string\" u\n-00008fd0: 7365 3d22 6f70 7469 6f6e 616c 223e 0a20  se=\"optional\">. \n-00008fe0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00008ff0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00009000: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00009010: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-00009020: 215b 4344 4154 415b 2054 6865 2075 7365  ![CDATA[ The use\n-00009030: 726e 616d 6520 666f 7220 4155 5448 2e20  rname for AUTH. \n-00009040: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00009050: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00009060: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00009070: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-00009080: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-00009090: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-000090a0: 6962 7574 6520 6e61 6d65 3d22 7061 7373  ibute name=\"pass\n-000090b0: 776f 7264 2220 7479 7065 3d22 7873 643a  word\" type=\"xsd:\n-000090c0: 7374 7269 6e67 2220 7573 653d 226f 7074  string\" use=\"opt\n-000090d0: 696f 6e61 6c22 3e0a 2020 2020 2020 2020  ional\">.        \n-000090e0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-000090f0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00009100: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-00009110: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-00009120: 5b20 5468 6520 7061 7373 776f 7264 2066  [ The password f\n-00009130: 6f72 2041 5554 482e 205d 5d3e 3c2f 7873  or AUTH. ]]></xs\n-00009140: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00009150: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00009160: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00009170: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00009180: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00009190: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-000091a0: 616d 653d 2274 696d 656f 7574 2220 7479  ame=\"timeout\" ty\n-000091b0: 7065 3d22 7873 643a 7374 7269 6e67 2220  pe=\"xsd:string\" \n-000091c0: 7573 653d 226f 7074 696f 6e61 6c22 3e0a  use=\"optional\">.\n-000091d0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000091e0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-000091f0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00009200: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00009210: 3c21 5b43 4441 5441 5b20 5468 6520 7265  <![CDATA[ The re\n-00009220: 7175 6573 7420 7469 6d65 6f75 742e 205d  quest timeout. ]\n-00009230: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-00009240: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00009250: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-00009260: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-00009270: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-00009280: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-00009290: 6275 7465 206e 616d 653d 2268 6967 6865  bute name=\"highe\n-000092a0: 7374 2d70 7269 6f72 6974 7922 2074 7970  st-priority\" typ\n-000092b0: 653d 2278 7364 3a62 6f6f 6c65 616e 2220  e=\"xsd:boolean\" \n-000092c0: 7573 653d 226f 7074 696f 6e61 6c22 3e0a  use=\"optional\">.\n-000092d0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000092e0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-000092f0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00009300: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00009310: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00009320: 2020 2020 203c 215b 4344 4154 415b 2057       <![CDATA[ W\n-00009330: 6865 7468 6572 2074 6865 2063 6f6e 6669  hether the confi\n-00009340: 6773 2066 726f 6d20 636f 6e66 6967 2063  gs from config c\n-00009350: 656e 7465 7220 6861 7320 7468 6520 6869  enter has the hi\n-00009360: 6768 6573 7420 7072 696f 7269 7479 2e20  ghest priority. \n-00009370: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00009380: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00009390: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-000093a0: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-000093b0: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-000093c0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-000093d0: 6962 7574 6520 6e61 6d65 3d22 696e 636c  ibute name=\"incl\n-000093e0: 7564 652d 7370 7269 6e67 2d65 6e76 2220  ude-spring-env\" \n-000093f0: 7479 7065 3d22 7873 643a 626f 6f6c 6561  type=\"xsd:boolea\n-00009400: 6e22 2075 7365 3d22 6f70 7469 6f6e 616c  n\" use=\"optional\n-00009410: 223e 0a20 2020 2020 2020 2020 2020 203c  \">.            <\n-00009420: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00009430: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00009440: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-00009450: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00009460: 2020 2020 2020 2020 3c21 5b43 4441 5441          <![CDATA\n-00009470: 5b20 4c6f 6164 2074 6865 2063 6f6e 6669  [ Load the confi\n-00009480: 6720 6974 656d 7320 6279 2044 7562 626f  g items by Dubbo\n-00009490: 2069 7473 656c 6620 6f72 2053 7072 696e   itself or Sprin\n-000094a0: 672e 205d 5d3e 3c2f 7873 643a 646f 6375  g. ]]></xsd:docu\n-000094b0: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-000094c0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-000094d0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-000094e0: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-000094f0: 3e0a 2020 2020 2020 2020 3c78 7364 3a61  >.        <xsd:a\n-00009500: 7474 7269 6275 7465 206e 616d 653d 2263  ttribute name=\"c\n-00009510: 6865 636b 2220 7479 7065 3d22 7873 643a  heck\" type=\"xsd:\n-00009520: 626f 6f6c 6561 6e22 2075 7365 3d22 6f70  boolean\" use=\"op\n-00009530: 7469 6f6e 616c 223e 0a20 2020 2020 2020  tional\">.       \n-00009540: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00009550: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00009560: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00009570: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00009580: 2020 2020 2020 2020 2020 2020 2020 3c21                <!\n-00009590: 5b43 4441 5441 5b20 5468 6520 706f 6c69  [CDATA[ The poli\n-000095a0: 6379 2074 6f20 6170 706c 7920 7768 656e  cy to apply when\n-000095b0: 2063 6f6e 6e65 6374 696e 6720 746f 2063   connecting to c\n-000095c0: 6f6e 6669 6720 6365 6e74 6572 2066 6169  onfig center fai\n-000095d0: 6c73 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ls. ]]></xsd:doc\n-000095e0: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-000095f0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-00009600: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00009610: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-00009620: 653e 0a20 2020 203c 2f78 7364 3a63 6f6d  e>.    </xsd:com\n-00009630: 706c 6578 5479 7065 3e0a 0a20 2020 203c  plexType>..    <\n-00009640: 7873 643a 636f 6d70 6c65 7854 7970 6520  xsd:complexType \n-00009650: 6e61 6d65 3d22 6d6f 6e69 746f 7254 7970  name=\"monitorTyp\n-00009660: 6522 3e0a 2020 2020 2020 2020 3c78 7364  e\">.        <xsd\n-00009670: 3a73 6571 7565 6e63 6520 6d69 6e4f 6363  :sequence minOcc\n-00009680: 7572 733d 2230 2220 6d61 784f 6363 7572  urs=\"0\" maxOccur\n-00009690: 733d 2275 6e62 6f75 6e64 6564 223e 0a20  s=\"unbounded\">. \n-000096a0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-000096b0: 656c 656d 656e 7420 7265 663d 2270 6172  element ref=\"par\n-000096c0: 616d 6574 6572 2220 6d69 6e4f 6363 7572  ameter\" minOccur\n-000096d0: 733d 2230 2220 6d61 784f 6363 7572 733d  s=\"0\" maxOccurs=\n-000096e0: 2275 6e62 6f75 6e64 6564 222f 3e0a 2020  \"unbounded\"/>.  \n-000096f0: 2020 2020 2020 3c2f 7873 643a 7365 7175        </xsd:sequ\n-00009700: 656e 6365 3e0a 2020 2020 2020 2020 3c78  ence>.        <x\n-00009710: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-00009720: 653d 2261 6464 7265 7373 2220 7479 7065  e=\"address\" type\n-00009730: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-00009740: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00009750: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00009760: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00009770: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-00009780: 215b 4344 4154 415b 2054 6865 206d 6f6e  ![CDATA[ The mon\n-00009790: 6974 6f72 2061 6464 7265 7373 2e20 5d5d  itor address. ]]\n-000097a0: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-000097b0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-000097c0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-000097d0: 6f6e 3e0a 2020 2020 2020 2020 3c2f 7873  on>.        </xs\n-000097e0: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n+00005f90: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+00005fa0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+00005fb0: 6e61 6d65 3d22 706f 7274 2220 7479 7065  name=\"port\" type\n+00005fc0: 3d22 7873 643a 7374 7269 6e67 223e 0d0a  =\"xsd:string\">..\n+00005fd0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00005fe0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00005ff0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00006000: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00006010: 3e3c 215b 4344 4154 415b 2054 6865 2072  ><![CDATA[ The r\n+00006020: 6567 6973 7472 7920 6465 6661 756c 7420  egistry default \n+00006030: 706f 7274 2e20 5d5d 3e3c 2f78 7364 3a64  port. ]]></xsd:d\n+00006040: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+00006050: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00006060: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00006070: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+00006080: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+00006090: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+000060a0: 616d 653d 2270 726f 746f 636f 6c22 2074  ame=\"protocol\" t\n+000060b0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+000060c0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+000060d0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+000060e0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000060f0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00006100: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+00006110: 6520 7265 6769 7374 7279 206c 6f6f 6b75  e registry looku\n+00006120: 7020 7072 6f74 6f63 6f6c 2e20 5d5d 3e3c  p protocol. ]]><\n+00006130: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00006140: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00006150: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00006160: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+00006170: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+00006180: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00006190: 6275 7465 206e 616d 653d 2275 7365 726e  bute name=\"usern\n+000061a0: 616d 6522 2074 7970 653d 2278 7364 3a73  ame\" type=\"xsd:s\n+000061b0: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+000061c0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+000061d0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+000061e0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+000061f0: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+00006200: 5441 5b20 5468 6520 7265 6769 7374 7279  TA[ The registry\n+00006210: 2075 7365 726e 616d 652e 205d 5d3e 3c2f   username. ]]></\n+00006220: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00006230: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00006240: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+00006250: 3e0d 0a20 2020 2020 2020 203c 2f78 7364  >..        </xsd\n+00006260: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00006270: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+00006280: 7574 6520 6e61 6d65 3d22 7061 7373 776f  ute name=\"passwo\n+00006290: 7264 2220 7479 7065 3d22 7873 643a 7374  rd\" type=\"xsd:st\n+000062a0: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+000062b0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+000062c0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+000062d0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+000062e0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+000062f0: 415b 2054 6865 2072 6567 6973 7472 7920  A[ The registry \n+00006300: 7061 7373 776f 7264 2e20 5d5d 3e3c 2f78  password. ]]></x\n+00006310: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00006320: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00006330: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00006340: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+00006350: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+00006360: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+00006370: 7465 206e 616d 653d 2274 7261 6e73 706f  te name=\"transpo\n+00006380: 7274 2220 7479 7065 3d22 7873 643a 7374  rt\" type=\"xsd:st\n+00006390: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+000063a0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+000063b0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+000063c0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+000063d0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+000063e0: 415b 2054 6865 2070 726f 746f 636f 6c20  A[ The protocol \n+000063f0: 7472 616e 7370 6f72 7465 7220 7479 7065  transporter type\n+00006400: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00006410: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00006420: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00006430: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00006440: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00006450: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+00006460: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00006470: 2274 7261 6e73 706f 7274 6572 2220 7479  \"transporter\" ty\n+00006480: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+00006490: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+000064a0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+000064b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000064c0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+000064d0: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+000064e0: 2070 726f 746f 636f 6c20 7472 616e 7370   protocol transp\n+000064f0: 6f72 7465 7220 7479 7065 2e20 5d5d 3e3c  orter type. ]]><\n+00006500: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00006510: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00006520: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00006530: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+00006540: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+00006550: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00006560: 6275 7465 206e 616d 653d 2273 6572 7665  bute name=\"serve\n+00006570: 7222 2074 7970 653d 2278 7364 3a73 7472  r\" type=\"xsd:str\n+00006580: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+00006590: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+000065a0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+000065b0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+000065c0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+000065d0: 5b20 5468 6520 7072 6f74 6f63 6f6c 2073  [ The protocol s\n+000065e0: 6572 7665 7220 7479 7065 2e20 5d5d 3e3c  erver type. ]]><\n+000065f0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00006600: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00006610: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00006620: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+00006630: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+00006640: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00006650: 6275 7465 206e 616d 653d 2263 6c69 656e  bute name=\"clien\n+00006660: 7422 2074 7970 653d 2278 7364 3a73 7472  t\" type=\"xsd:str\n+00006670: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+00006680: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00006690: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+000066a0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+000066b0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+000066c0: 5b20 5468 6520 7072 6f74 6f63 6f6c 2063  [ The protocol c\n+000066d0: 6c69 656e 7420 7479 7065 2e20 5d5d 3e3c  lient type. ]]><\n+000066e0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+000066f0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00006700: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00006710: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+00006720: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+00006730: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00006740: 6275 7465 206e 616d 653d 2263 6c75 7374  bute name=\"clust\n+00006750: 6572 2220 7479 7065 3d22 7873 643a 7374  er\" type=\"xsd:st\n+00006760: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+00006770: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+00006780: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00006790: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+000067a0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+000067b0: 415b 2054 6865 2072 6567 6973 7472 7920  A[ The registry \n+000067c0: 636c 7573 7465 7220 7479 7065 2e20 5d5d  cluster type. ]]\n+000067d0: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+000067e0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+000067f0: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+00006800: 696f 6e3e 0d0a 2020 2020 2020 2020 3c2f  ion>..        </\n+00006810: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+00006820: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+00006830: 7269 6275 7465 206e 616d 653d 227a 6f6e  ribute name=\"zon\n+00006840: 6522 2074 7970 653d 2278 7364 3a73 7472  e\" type=\"xsd:str\n+00006850: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+00006860: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00006870: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00006880: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+00006890: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+000068a0: 5b20 5468 6520 7265 6769 7374 7279 207a  [ The registry z\n+000068b0: 6f6e 6520 7479 7065 2e20 5d5d 3e3c 2f78  one type. ]]></x\n+000068c0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+000068d0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+000068e0: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+000068f0: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+00006900: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+00006910: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+00006920: 7465 206e 616d 653d 2266 6f72 6b73 2220  te name=\"forks\" \n+00006930: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+00006940: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+00006950: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+00006960: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00006970: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+00006980: 7469 6f6e 3e3c 215b 4344 4154 415b 2046  tion><![CDATA[ F\n+00006990: 6f72 6b69 6e67 436c 7573 7465 7220 666f  orkingCluster fo\n+000069a0: 726b 732e 205d 5d3e 3c2f 7873 643a 646f  rks. ]]></xsd:do\n+000069b0: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+000069c0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+000069d0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+000069e0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+000069f0: 6275 7465 3e0d 0a20 2020 2020 2020 203c  bute>..        <\n+00006a00: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00006a10: 6d65 3d22 6772 6f75 7022 2074 7970 653d  me=\"group\" type=\n+00006a20: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+00006a30: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00006a40: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00006a50: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00006a60: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00006a70: 3c21 5b43 4441 5441 5b20 5468 6520 7265  <![CDATA[ The re\n+00006a80: 6769 7374 7279 2067 726f 7570 2e20 5d5d  gistry group. ]]\n+00006a90: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+00006aa0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00006ab0: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+00006ac0: 696f 6e3e 0d0a 2020 2020 2020 2020 3c2f  ion>..        </\n+00006ad0: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+00006ae0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+00006af0: 7269 6275 7465 206e 616d 653d 2276 6572  ribute name=\"ver\n+00006b00: 7369 6f6e 2220 7479 7065 3d22 7873 643a  sion\" type=\"xsd:\n+00006b10: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+00006b20: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00006b30: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00006b40: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00006b50: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00006b60: 4154 415b 2054 6865 2072 6567 6973 7472  ATA[ The registr\n+00006b70: 7920 7665 7273 696f 6e2e 205d 5d3e 3c2f  y version. ]]></\n+00006b80: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00006b90: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00006ba0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+00006bb0: 3e0d 0a20 2020 2020 2020 203c 2f78 7364  >..        </xsd\n+00006bc0: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00006bd0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+00006be0: 7574 6520 6e61 6d65 3d22 7469 6d65 6f75  ute name=\"timeou\n+00006bf0: 7422 2074 7970 653d 2278 7364 3a73 7472  t\" type=\"xsd:str\n+00006c00: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+00006c10: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00006c20: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00006c30: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+00006c40: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+00006c50: 5b20 5468 6520 7265 7175 6573 7420 7469  [ The request ti\n+00006c60: 6d65 6f75 742e 205d 5d3e 3c2f 7873 643a  meout. ]]></xsd:\n+00006c70: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00006c80: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00006c90: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00006ca0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+00006cb0: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+00006cc0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+00006cd0: 6e61 6d65 3d22 7365 7373 696f 6e22 2074  name=\"session\" t\n+00006ce0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+00006cf0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00006d00: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00006d10: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00006d20: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00006d30: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+00006d40: 6520 7365 7373 696f 6e20 7469 6d65 6f75  e session timeou\n+00006d50: 742e 205d 5d3e 3c2f 7873 643a 646f 6375  t. ]]></xsd:docu\n+00006d60: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00006d70: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00006d80: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00006d90: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00006da0: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+00006db0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00006dc0: 3d22 6669 6c65 2220 7479 7065 3d22 7873  =\"file\" type=\"xs\n+00006dd0: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+00006de0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+00006df0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00006e00: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00006e10: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00006e20: 4344 4154 415b 2054 6865 2072 6567 6973  CDATA[ The regis\n+00006e30: 7472 7920 6164 6464 7265 7373 2066 696c  try adddress fil\n+00006e40: 6520 7374 6f72 652e 205d 5d3e 3c2f 7873  e store. ]]></xs\n+00006e50: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00006e60: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+00006e70: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00006e80: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+00006e90: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+00006ea0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+00006eb0: 6520 6e61 6d65 3d22 7761 6974 2220 7479  e name=\"wait\" ty\n+00006ec0: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+00006ed0: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+00006ee0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00006ef0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00006f00: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00006f10: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+00006f20: 2077 6169 7420 7469 6d65 2066 6f72 2073   wait time for s\n+00006f30: 6875 7464 6f77 6e2e 205d 5d3e 3c2f 7873  hutdown. ]]></xs\n+00006f40: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00006f50: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+00006f60: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00006f70: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+00006f80: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+00006f90: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+00006fa0: 6520 6e61 6d65 3d22 6368 6563 6b22 2074  e name=\"check\" t\n+00006fb0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+00006fc0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00006fd0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00006fe0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00006ff0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00007000: 696f 6e3e 3c21 5b43 4441 5441 5b20 4368  ion><![CDATA[ Ch\n+00007010: 6563 6b20 7265 6769 7374 7279 2073 7461  eck registry sta\n+00007020: 7475 7320 6f6e 2073 7472 6174 7570 2e20  tus on stratup. \n+00007030: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+00007040: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00007050: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00007060: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00007070: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00007080: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+00007090: 7474 7269 6275 7465 206e 616d 653d 2264  ttribute name=\"d\n+000070a0: 796e 616d 6963 2220 7479 7065 3d22 7873  ynamic\" type=\"xs\n+000070b0: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+000070c0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+000070d0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+000070e0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+000070f0: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+00007100: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00007110: 2020 203c 215b 4344 4154 415b 2074 6865     <![CDATA[ the\n+00007120: 2073 6572 7669 6365 2072 6567 6973 7465   service registe\n+00007130: 7265 6420 746f 2074 6869 7320 7265 6769  red to this regi\n+00007140: 7374 7279 2069 7320 6479 6e61 6d69 6328  stry is dynamic(\n+00007150: 7472 7565 2920 6f72 2073 7461 7469 6328  true) or static(\n+00007160: 6661 6c73 6529 2e20 5d5d 3e3c 2f78 7364  false). ]]></xsd\n+00007170: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00007180: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n+00007190: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+000071a0: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+000071b0: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+000071c0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+000071d0: 206e 616d 653d 2272 6567 6973 7465 7222   name=\"register\"\n+000071e0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+000071f0: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+00007200: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+00007210: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00007220: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+00007230: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00007240: 2020 2020 2020 2020 2020 2020 3c21 5b43              <![C\n+00007250: 4441 5441 5b20 7265 6769 7374 6572 2073  DATA[ register s\n+00007260: 6572 7669 6365 2074 6f20 7468 6973 2072  ervice to this r\n+00007270: 6567 6973 7472 7928 7472 7565 2920 6f72  egistry(true) or\n+00007280: 206e 6f74 2866 616c 7365 292e 205d 5d3e   not(false). ]]>\n+00007290: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+000072a0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+000072b0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+000072c0: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+000072d0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+000072e0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+000072f0: 6962 7574 6520 6e61 6d65 3d22 7375 6273  ibute name=\"subs\n+00007300: 6372 6962 6522 2074 7970 653d 2278 7364  cribe\" type=\"xsd\n+00007310: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+00007320: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+00007330: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00007340: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00007350: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+00007360: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00007370: 2020 3c21 5b43 4441 5441 5b20 7375 6273    <![CDATA[ subs\n+00007380: 6372 6962 6520 7365 7276 6963 6520 746f  cribe service to\n+00007390: 2074 6869 7320 7265 6769 7374 7279 2874   this registry(t\n+000073a0: 7275 6529 206f 7220 6e6f 7428 6661 6c73  rue) or not(fals\n+000073b0: 6529 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  e). ]]></xsd:doc\n+000073c0: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+000073d0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+000073e0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+000073f0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+00007400: 7574 653e 0d0a 2020 2020 2020 2020 3c78  ute>..        <x\n+00007410: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+00007420: 653d 2264 6566 6175 6c74 2220 7479 7065  e=\"default\" type\n+00007430: 3d22 7873 643a 7374 7269 6e67 223e 0d0a  =\"xsd:string\">..\n+00007440: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00007450: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00007460: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00007470: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00007480: 3e3c 215b 4344 4154 415b 2049 7320 6465  ><![CDATA[ Is de\n+00007490: 6661 756c 742e 205d 5d3e 3c2f 7873 643a  fault. ]]></xsd:\n+000074a0: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+000074b0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+000074c0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+000074d0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+000074e0: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+000074f0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+00007500: 6e61 6d65 3d22 7369 6d70 6c69 6669 6564  name=\"simplified\n+00007510: 2220 7479 7065 3d22 7873 643a 626f 6f6c  \" type=\"xsd:bool\n+00007520: 6561 6e22 3e0d 0a20 2020 2020 2020 2020  ean\">..         \n+00007530: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00007540: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00007550: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+00007560: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+00007570: 5b20 4973 2073 696d 706c 652e 205d 5d3e  [ Is simple. ]]>\n+00007580: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+00007590: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+000075a0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+000075b0: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+000075c0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+000075d0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+000075e0: 6962 7574 6520 6e61 6d65 3d22 6578 7472  ibute name=\"extr\n+000075f0: 612d 6b65 7973 2220 7479 7065 3d22 7873  a-keys\" type=\"xs\n+00007600: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+00007610: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+00007620: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00007630: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00007640: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00007650: 4344 4154 415b 2045 7874 7261 2050 6172  CDATA[ Extra Par\n+00007660: 616d 6574 6572 204b 6579 732e 205d 5d3e  ameter Keys. ]]>\n+00007670: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+00007680: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00007690: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+000076a0: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+000076b0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+000076c0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+000076d0: 6962 7574 6520 6e61 6d65 3d22 7573 652d  ibute name=\"use-\n+000076e0: 6173 2d63 6f6e 6669 672d 6365 6e74 6572  as-config-center\n+000076f0: 2220 7479 7065 3d22 7873 643a 626f 6f6c  \" type=\"xsd:bool\n+00007700: 6561 6e22 3e0d 0a20 2020 2020 2020 2020  ean\">..         \n+00007710: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00007720: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00007730: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+00007740: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+00007750: 5b20 776f 726b 2061 7320 636f 6e66 6967  [ work as config\n+00007760: 2063 656e 7465 7220 6f72 206e 6f74 2e20   center or not. \n+00007770: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+00007780: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00007790: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+000077a0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+000077b0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+000077c0: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+000077d0: 7474 7269 6275 7465 206e 616d 653d 2275  ttribute name=\"u\n+000077e0: 7365 2d61 732d 6d65 7461 6461 7461 2d63  se-as-metadata-c\n+000077f0: 656e 7465 7222 2074 7970 653d 2278 7364  enter\" type=\"xsd\n+00007800: 3a62 6f6f 6c65 616e 223e 0d0a 2020 2020  :boolean\">..    \n+00007810: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+00007820: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00007830: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00007840: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00007850: 4344 4154 415b 2077 6f72 6b20 6173 206d  CDATA[ work as m\n+00007860: 6574 6164 6174 6120 6365 6e74 6572 206f  etadata center o\n+00007870: 7220 6e6f 742e 205d 5d3e 3c2f 7873 643a  r not. ]]></xsd:\n+00007880: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00007890: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+000078a0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+000078b0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+000078c0: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+000078d0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+000078e0: 6e61 6d65 3d22 6163 6365 7074 7322 2074  name=\"accepts\" t\n+000078f0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+00007900: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00007910: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00007920: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00007930: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00007940: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00007950: 2020 2020 2020 2020 2020 3c21 5b43 4441            <![CDA\n+00007960: 5441 5b20 6c69 7374 206f 6620 7270 6320  TA[ list of rpc \n+00007970: 7072 6f74 6f63 6f6c 7320 6163 6365 7074  protocols accept\n+00007980: 6564 2062 7920 7468 6973 2072 6567 6973  ed by this regis\n+00007990: 7472 792c 2073 6570 6172 6174 6564 2077  try, separated w\n+000079a0: 6974 6820 222c 222e 205d 5d3e 3c2f 7873  ith \",\". ]]></xs\n+000079b0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+000079c0: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+000079d0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+000079e0: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+000079f0: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+00007a00: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+00007a10: 6520 6e61 6d65 3d22 7072 6566 6572 7265  e name=\"preferre\n+00007a20: 6422 2074 7970 653d 2278 7364 3a62 6f6f  d\" type=\"xsd:boo\n+00007a30: 6c65 616e 223e 0d0a 2020 2020 2020 2020  lean\">..        \n+00007a40: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+00007a50: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00007a60: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00007a70: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00007a80: 415b 2049 7320 7468 6973 2072 6567 6973  A[ Is this regis\n+00007a90: 7472 7920 7468 6520 7072 6566 6572 7265  try the preferre\n+00007aa0: 6420 6f6e 652e 205d 5d3e 3c2f 7873 643a  d one. ]]></xsd:\n+00007ab0: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00007ac0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00007ad0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00007ae0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+00007af0: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+00007b00: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+00007b10: 6e61 6d65 3d22 7765 6967 6874 2220 7479  name=\"weight\" ty\n+00007b20: 7065 3d22 7873 643a 696e 7465 6765 7222  pe=\"xsd:integer\"\n+00007b30: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00007b40: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00007b50: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00007b60: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00007b70: 696f 6e3e 3c21 5b43 4441 5441 5b20 7765  ion><![CDATA[ we\n+00007b80: 6967 6874 206f 6620 7265 6769 7374 7279  ight of registry\n+00007b90: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00007ba0: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00007bb0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00007bc0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00007bd0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00007be0: 653e 0d0a 2020 2020 3c2f 7873 643a 636f  e>..    </xsd:co\n+00007bf0: 6d70 6c65 7854 7970 653e 0d0a 0d0a 2020  mplexType>....  \n+00007c00: 2020 3c78 7364 3a63 6f6d 706c 6578 5479    <xsd:complexTy\n+00007c10: 7065 206e 616d 653d 226d 6574 6164 6174  pe name=\"metadat\n+00007c20: 6152 6570 6f72 7454 7970 6522 3e0d 0a20  aReportType\">.. \n+00007c30: 2020 2020 2020 203c 7873 643a 7365 7175         <xsd:sequ\n+00007c40: 656e 6365 206d 696e 4f63 6375 7273 3d22  ence minOccurs=\"\n+00007c50: 3022 206d 6178 4f63 6375 7273 3d22 756e  0\" maxOccurs=\"un\n+00007c60: 626f 756e 6465 6422 3e0d 0a20 2020 2020  bounded\">..     \n+00007c70: 2020 2020 2020 203c 7873 643a 656c 656d         <xsd:elem\n+00007c80: 656e 7420 7265 663d 2270 6172 616d 6574  ent ref=\"paramet\n+00007c90: 6572 2220 6d69 6e4f 6363 7572 733d 2230  er\" minOccurs=\"0\n+00007ca0: 2220 6d61 784f 6363 7572 733d 2275 6e62  \" maxOccurs=\"unb\n+00007cb0: 6f75 6e64 6564 222f 3e0d 0a20 2020 2020  ounded\"/>..     \n+00007cc0: 2020 203c 2f78 7364 3a73 6571 7565 6e63     </xsd:sequenc\n+00007cd0: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+00007ce0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00007cf0: 2269 6422 2074 7970 653d 2278 7364 3a49  \"id\" type=\"xsd:I\n+00007d00: 4422 3e0d 0a20 2020 2020 2020 2020 2020  D\">..           \n+00007d10: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+00007d20: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00007d30: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+00007d40: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+00007d50: 5468 6520 756e 6971 7565 2069 6465 6e74  The unique ident\n+00007d60: 6966 6965 7220 666f 7220 6120 6265 616e  ifier for a bean\n+00007d70: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00007d80: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00007d90: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00007da0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00007db0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00007dc0: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+00007dd0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00007de0: 2261 6464 7265 7373 2220 7479 7065 3d22  \"address\" type=\"\n+00007df0: 7873 643a 7374 7269 6e67 2220 7573 653d  xsd:string\" use=\n+00007e00: 226f 7074 696f 6e61 6c22 3e0d 0a20 2020  \"optional\">..   \n+00007e10: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+00007e20: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00007e30: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00007e40: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00007e50: 5b43 4441 5441 5b20 5468 6520 6d65 7461  [CDATA[ The meta\n+00007e60: 6461 7461 5265 706f 7274 2061 6464 7265  dataReport addre\n+00007e70: 7373 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ss. ]]></xsd:doc\n+00007e80: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+00007e90: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+00007ea0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00007eb0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+00007ec0: 7574 653e 0d0a 2020 2020 2020 2020 3c78  ute>..        <x\n+00007ed0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+00007ee0: 653d 2275 7365 726e 616d 6522 2074 7970  e=\"username\" typ\n+00007ef0: 653d 2278 7364 3a73 7472 696e 6722 2075  e=\"xsd:string\" u\n+00007f00: 7365 3d22 6f70 7469 6f6e 616c 223e 0d0a  se=\"optional\">..\n+00007f10: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00007f20: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00007f30: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00007f40: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00007f50: 3e3c 215b 4344 4154 415b 2054 6865 206d  ><![CDATA[ The m\n+00007f60: 6574 6164 6174 6152 6570 6f72 7420 7573  etadataReport us\n+00007f70: 6572 6e61 6d65 2e20 5d5d 3e3c 2f78 7364  ername. ]]></xsd\n+00007f80: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00007f90: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n+00007fa0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00007fb0: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+00007fc0: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+00007fd0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+00007fe0: 206e 616d 653d 2270 6173 7377 6f72 6422   name=\"password\"\n+00007ff0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+00008000: 6722 2075 7365 3d22 6f70 7469 6f6e 616c  g\" use=\"optional\n+00008010: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+00008020: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+00008030: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00008040: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+00008050: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+00008060: 6865 206d 6574 6164 6174 6152 6570 6f72  he metadataRepor\n+00008070: 7420 7061 7373 776f 7264 2e20 5d5d 3e3c  t password. ]]><\n+00008080: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00008090: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+000080a0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+000080b0: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+000080c0: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+000080d0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+000080e0: 6275 7465 206e 616d 653d 2274 696d 656f  bute name=\"timeo\n+000080f0: 7574 2220 7479 7065 3d22 7873 643a 7374  ut\" type=\"xsd:st\n+00008100: 7269 6e67 2220 7573 653d 226f 7074 696f  ring\" use=\"optio\n+00008110: 6e61 6c22 3e0d 0a20 2020 2020 2020 2020  nal\">..         \n+00008120: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00008130: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00008140: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+00008150: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+00008160: 5b20 5468 6520 7265 7175 6573 7420 7469  [ The request ti\n+00008170: 6d65 6f75 742e 205d 5d3e 3c2f 7873 643a  meout. ]]></xsd:\n+00008180: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00008190: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+000081a0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+000081b0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+000081c0: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+000081d0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+000081e0: 6e61 6d65 3d22 6772 6f75 7022 2074 7970  name=\"group\" typ\n+000081f0: 653d 2278 7364 3a73 7472 696e 6722 2075  e=\"xsd:string\" u\n+00008200: 7365 3d22 6f70 7469 6f6e 616c 223e 0d0a  se=\"optional\">..\n+00008210: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00008220: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00008230: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00008240: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00008250: 3e3c 215b 4344 4154 415b 2054 6865 2067  ><![CDATA[ The g\n+00008260: 726f 7570 206f 6620 6d65 7461 6461 7461  roup of metadata\n+00008270: 2d72 6570 6f72 742e 205d 5d3e 3c2f 7873  -report. ]]></xs\n+00008280: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00008290: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+000082a0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+000082b0: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+000082c0: 7474 7269 6275 7465 3e0d 0a0d 0a20 2020  ttribute>....   \n+000082d0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+000082e0: 7574 6520 6e61 6d65 3d22 7265 7472 792d  ute name=\"retry-\n+000082f0: 7469 6d65 7322 2074 7970 653d 2278 7364  times\" type=\"xsd\n+00008300: 3a69 6e74 6567 6572 2220 7573 653d 226f  :integer\" use=\"o\n+00008310: 7074 696f 6e61 6c22 3e0d 0a20 2020 2020  ptional\">..     \n+00008320: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+00008330: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00008340: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00008350: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+00008360: 4441 5441 5b20 6966 2066 6169 6c2c 2072  DATA[ if fail, r\n+00008370: 6574 7279 2074 696d 6573 2e20 5d5d 3e3c  etry times. ]]><\n+00008380: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00008390: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+000083a0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+000083b0: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+000083c0: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+000083d0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+000083e0: 6275 7465 206e 616d 653d 2272 6574 7279  bute name=\"retry\n+000083f0: 2d70 6572 696f 6422 2074 7970 653d 2278  -period\" type=\"x\n+00008400: 7364 3a69 6e74 6567 6572 2220 7573 653d  sd:integer\" use=\n+00008410: 226f 7074 696f 6e61 6c22 3e0d 0a20 2020  \"optional\">..   \n+00008420: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+00008430: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00008440: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00008450: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00008460: 5b43 4441 5441 5b20 6966 2066 6169 6c2c  [CDATA[ if fail,\n+00008470: 2072 6574 7279 2070 6572 696f 642e 205d   retry period. ]\n+00008480: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+00008490: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+000084a0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+000084b0: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+000084c0: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+000084d0: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n+000084e0: 7472 6962 7574 6520 6e61 6d65 3d22 6379  tribute name=\"cy\n+000084f0: 636c 652d 7265 706f 7274 2220 7479 7065  cle-report\" type\n+00008500: 3d22 7873 643a 626f 6f6c 6561 6e22 2075  =\"xsd:boolean\" u\n+00008510: 7365 3d22 6f70 7469 6f6e 616c 223e 0d0a  se=\"optional\">..\n+00008520: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00008530: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00008540: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00008550: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00008560: 3e3c 215b 4344 4154 415b 2072 6570 6f72  ><![CDATA[ repor\n+00008570: 7420 6379 636c 656c 792e 205d 5d3e 3c2f  t cyclely. ]]></\n+00008580: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00008590: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000085a0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+000085b0: 3e0d 0a20 2020 2020 2020 203c 2f78 7364  >..        </xsd\n+000085c0: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+000085d0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+000085e0: 7574 6520 6e61 6d65 3d22 7379 6e63 2d72  ute name=\"sync-r\n+000085f0: 6570 6f72 7422 2074 7970 653d 2278 7364  eport\" type=\"xsd\n+00008600: 3a62 6f6f 6c65 616e 2220 7573 653d 226f  :boolean\" use=\"o\n+00008610: 7074 696f 6e61 6c22 3e0d 0a20 2020 2020  ptional\">..     \n+00008620: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+00008630: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00008640: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00008650: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+00008660: 4441 5441 5b20 5379 6e63 206f 7220 4173  DATA[ Sync or As\n+00008670: 796e 6320 7265 706f 7274 2e20 5d5d 3e3c  ync report. ]]><\n+00008680: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00008690: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+000086a0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+000086b0: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+000086c0: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+000086d0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+000086e0: 6275 7465 206e 616d 653d 2263 6c75 7374  bute name=\"clust\n+000086f0: 6572 2220 7479 7065 3d22 7873 643a 626f  er\" type=\"xsd:bo\n+00008700: 6f6c 6561 6e22 2075 7365 3d22 6f70 7469  olean\" use=\"opti\n+00008710: 6f6e 616c 223e 0d0a 2020 2020 2020 2020  onal\">..        \n+00008720: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+00008730: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00008740: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00008750: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00008760: 415b 204e 6565 6420 636c 7573 7465 7220  A[ Need cluster \n+00008770: 7375 7070 6f72 742c 2064 6566 6175 6c74  support, default\n+00008780: 2066 616c 7365 2e20 5d5d 3e3c 2f78 7364   false. ]]></xsd\n+00008790: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+000087a0: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n+000087b0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+000087c0: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+000087d0: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+000087e0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+000087f0: 206e 616d 653d 2272 6567 6973 7472 7922   name=\"registry\"\n+00008800: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+00008810: 6722 2075 7365 3d22 6f70 7469 6f6e 616c  g\" use=\"optional\n+00008820: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+00008830: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+00008840: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00008850: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+00008860: 7469 6f6e 3e3c 215b 4344 4154 415b 2072  tion><![CDATA[ r\n+00008870: 6567 6973 7472 7920 636f 6e66 6967 2069  egistry config i\n+00008880: 642e 205d 5d3e 3c2f 7873 643a 646f 6375  d. ]]></xsd:docu\n+00008890: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+000088a0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+000088b0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+000088c0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+000088d0: 7465 3e0d 0a20 2020 203c 2f78 7364 3a63  te>..    </xsd:c\n+000088e0: 6f6d 706c 6578 5479 7065 3e0d 0a0d 0a20  omplexType>.... \n+000088f0: 2020 203c 7873 643a 636f 6d70 6c65 7854     <xsd:complexT\n+00008900: 7970 6520 6e61 6d65 3d22 636f 6e66 6967  ype name=\"config\n+00008910: 4365 6e74 6572 5479 7065 223e 0d0a 2020  CenterType\">..  \n+00008920: 2020 2020 2020 3c78 7364 3a73 6571 7565        <xsd:seque\n+00008930: 6e63 6520 6d69 6e4f 6363 7572 733d 2230  nce minOccurs=\"0\n+00008940: 2220 6d61 784f 6363 7572 733d 2275 6e62  \" maxOccurs=\"unb\n+00008950: 6f75 6e64 6564 223e 0d0a 2020 2020 2020  ounded\">..      \n+00008960: 2020 2020 2020 3c78 7364 3a65 6c65 6d65        <xsd:eleme\n+00008970: 6e74 2072 6566 3d22 7061 7261 6d65 7465  nt ref=\"paramete\n+00008980: 7222 206d 696e 4f63 6375 7273 3d22 3022  r\" minOccurs=\"0\"\n+00008990: 206d 6178 4f63 6375 7273 3d22 756e 626f   maxOccurs=\"unbo\n+000089a0: 756e 6465 6422 2f3e 0d0a 2020 2020 2020  unded\"/>..      \n+000089b0: 2020 3c2f 7873 643a 7365 7175 656e 6365    </xsd:sequence\n+000089c0: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+000089d0: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+000089e0: 7072 6f74 6f63 6f6c 2220 7479 7065 3d22  protocol\" type=\"\n+000089f0: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+00008a00: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00008a10: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00008a20: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00008a30: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+00008a40: 215b 4344 4154 415b 2054 6865 2063 6f6e  ![CDATA[ The con\n+00008a50: 6669 6720 6365 6e74 6572 2070 726f 746f  fig center proto\n+00008a60: 636f 6c2e 205d 5d3e 3c2f 7873 643a 646f  col. ]]></xsd:do\n+00008a70: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+00008a80: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00008a90: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00008aa0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+00008ab0: 6275 7465 3e0d 0a20 2020 2020 2020 203c  bute>..        <\n+00008ac0: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00008ad0: 6d65 3d22 6164 6472 6573 7322 2074 7970  me=\"address\" typ\n+00008ae0: 653d 2278 7364 3a73 7472 696e 6722 2075  e=\"xsd:string\" u\n+00008af0: 7365 3d22 6f70 7469 6f6e 616c 223e 0d0a  se=\"optional\">..\n+00008b00: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00008b10: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00008b20: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00008b30: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00008b40: 3e3c 215b 4344 4154 415b 2054 6865 2063  ><![CDATA[ The c\n+00008b50: 6f6e 6669 6720 6365 6e74 6572 2061 6464  onfig center add\n+00008b60: 7265 7373 2e20 5d5d 3e3c 2f78 7364 3a64  ress. ]]></xsd:d\n+00008b70: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+00008b80: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00008b90: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00008ba0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+00008bb0: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+00008bc0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+00008bd0: 616d 653d 2263 6c75 7374 6572 2220 7479  ame=\"cluster\" ty\n+00008be0: 7065 3d22 7873 643a 7374 7269 6e67 2220  pe=\"xsd:string\" \n+00008bf0: 7573 653d 226f 7074 696f 6e61 6c22 3e0d  use=\"optional\">.\n+00008c00: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00008c10: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00008c20: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00008c30: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00008c40: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00008c50: 2020 2020 2020 2020 3c21 5b43 4441 5441          <![CDATA\n+00008c60: 5b20 5468 6520 636f 6e66 6967 2063 656e  [ The config cen\n+00008c70: 7465 7220 636c 7573 7465 722c 2069 7427  ter cluster, it'\n+00008c80: 7320 7265 616c 206d 6561 6e69 6e67 206d  s real meaning m\n+00008c90: 6179 2076 6572 7920 6f6e 2064 6966 6665  ay very on diffe\n+00008ca0: 7265 6e74 2043 6f6e 6669 6720 4365 6e74  rent Config Cent\n+00008cb0: 6572 2070 726f 6475 6374 732e 205d 5d3e  er products. ]]>\n+00008cc0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+00008cd0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00008ce0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+00008cf0: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+00008d00: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+00008d10: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+00008d20: 6962 7574 6520 6e61 6d65 3d22 6e61 6d65  ibute name=\"name\n+00008d30: 7370 6163 6522 2074 7970 653d 2278 7364  space\" type=\"xsd\n+00008d40: 3a73 7472 696e 6722 2075 7365 3d22 6f70  :string\" use=\"op\n+00008d50: 7469 6f6e 616c 223e 0d0a 2020 2020 2020  tional\">..      \n+00008d60: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00008d70: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00008d80: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00008d90: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+00008da0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00008db0: 203c 215b 4344 4154 415b 2054 6865 206e   <![CDATA[ The n\n+00008dc0: 616d 6573 7061 6365 206f 6620 7468 6520  amespace of the \n+00008dd0: 636f 6e66 6967 2063 656e 7465 722c 2067  config center, g\n+00008de0: 656e 6572 616c 6c79 2069 7427 7320 7573  enerally it's us\n+00008df0: 6564 2066 6f72 206d 756c 7469 2d74 656e  ed for multi-ten\n+00008e00: 616e 742c 2062 7574 2069 7427 7320 7265  ant, but it's re\n+00008e10: 616c 206d 6561 6e69 6e67 2064 6570 656e  al meaning depen\n+00008e20: 6473 206f 6e20 7468 6520 6163 7475 616c  ds on the actual\n+00008e30: 2043 6f6e 6669 6720 4365 6e74 6572 2079   Config Center y\n+00008e40: 6f75 2075 7365 2e20 5d5d 3e3c 2f78 7364  ou use. ]]></xsd\n+00008e50: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00008e60: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n+00008e70: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00008e80: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+00008e90: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+00008ea0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+00008eb0: 206e 616d 653d 2267 726f 7570 2220 7479   name=\"group\" ty\n+00008ec0: 7065 3d22 7873 643a 7374 7269 6e67 2220  pe=\"xsd:string\" \n+00008ed0: 7573 653d 226f 7074 696f 6e61 6c22 3e0d  use=\"optional\">.\n+00008ee0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00008ef0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00008f00: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00008f10: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00008f20: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00008f30: 2020 2020 2020 2020 3c21 5b43 4441 5441          <![CDATA\n+00008f40: 5b20 5468 6520 6772 6f75 7020 6f66 2074  [ The group of t\n+00008f50: 6865 2063 6f6e 6669 6720 6365 6e74 6572  he config center\n+00008f60: 2c20 6765 6e65 7261 6c6c 7920 6974 2773  , generally it's\n+00008f70: 2075 7365 6420 746f 2069 6465 6e74 6966   used to identif\n+00008f80: 7920 616e 2069 736f 6c61 7465 6420 7370  y an isolated sp\n+00008f90: 6163 6520 666f 7220 6120 6261 7463 6820  ace for a batch \n+00008fa0: 6f66 2063 6f6e 6669 6720 6974 656d 732c  of config items,\n+00008fb0: 2062 7574 2069 7427 7320 7265 616c 206d   but it's real m\n+00008fc0: 6561 6e69 6e67 2064 6570 656e 6473 206f  eaning depends o\n+00008fd0: 6e20 7468 6520 6163 7475 616c 2043 6f6e  n the actual Con\n+00008fe0: 6669 6720 4365 6e74 6572 2079 6f75 2075  fig Center you u\n+00008ff0: 7365 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  se. ]]></xsd:doc\n+00009000: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+00009010: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+00009020: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00009030: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+00009040: 7574 653e 0d0a 2020 2020 2020 2020 3c78  ute>..        <x\n+00009050: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+00009060: 653d 2263 6f6e 6669 672d 6669 6c65 2220  e=\"config-file\" \n+00009070: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+00009080: 2220 7573 653d 226f 7074 696f 6e61 6c22  \" use=\"optional\"\n+00009090: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+000090a0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+000090b0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000090c0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+000090d0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+000090e0: 6520 6b65 7920 7573 6564 2074 6f20 6765  e key used to ge\n+000090f0: 7420 7468 6520 636f 6e66 6967 7320 6174  t the configs at\n+00009100: 2073 7461 7274 7570 2e20 5d5d 3e3c 2f78   startup. ]]></x\n+00009110: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00009120: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00009130: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+00009140: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+00009150: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+00009160: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+00009170: 7465 206e 616d 653d 2261 7070 2d63 6f6e  te name=\"app-con\n+00009180: 6669 672d 6669 6c65 2220 7479 7065 3d22  fig-file\" type=\"\n+00009190: 7873 643a 7374 7269 6e67 2220 7573 653d  xsd:string\" use=\n+000091a0: 226f 7074 696f 6e61 6c22 3e0d 0a20 2020  \"optional\">..   \n+000091b0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+000091c0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+000091d0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+000091e0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+000091f0: 5b43 4441 5441 5b20 5468 6520 6b65 7920  [CDATA[ The key \n+00009200: 7573 6564 2074 6f20 6765 7420 7468 6520  used to get the \n+00009210: 636f 6e66 6967 7320 6174 2073 7461 7274  configs at start\n+00009220: 7570 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  up. ]]></xsd:doc\n+00009230: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+00009240: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+00009250: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00009260: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+00009270: 7574 653e 0d0a 2020 2020 2020 2020 3c78  ute>..        <x\n+00009280: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+00009290: 653d 2275 7365 726e 616d 6522 2074 7970  e=\"username\" typ\n+000092a0: 653d 2278 7364 3a73 7472 696e 6722 2075  e=\"xsd:string\" u\n+000092b0: 7365 3d22 6f70 7469 6f6e 616c 223e 0d0a  se=\"optional\">..\n+000092c0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000092d0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+000092e0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+000092f0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00009300: 3e3c 215b 4344 4154 415b 2054 6865 2075  ><![CDATA[ The u\n+00009310: 7365 726e 616d 6520 666f 7220 4155 5448  sername for AUTH\n+00009320: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00009330: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00009340: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00009350: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00009360: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00009370: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+00009380: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00009390: 2270 6173 7377 6f72 6422 2074 7970 653d  \"password\" type=\n+000093a0: 2278 7364 3a73 7472 696e 6722 2075 7365  \"xsd:string\" use\n+000093b0: 3d22 6f70 7469 6f6e 616c 223e 0d0a 2020  =\"optional\">..  \n+000093c0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+000093d0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+000093e0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000093f0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+00009400: 215b 4344 4154 415b 2054 6865 2070 6173  ![CDATA[ The pas\n+00009410: 7377 6f72 6420 666f 7220 4155 5448 2e20  sword for AUTH. \n+00009420: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+00009430: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00009440: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00009450: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00009460: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00009470: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+00009480: 7474 7269 6275 7465 206e 616d 653d 2274  ttribute name=\"t\n+00009490: 696d 656f 7574 2220 7479 7065 3d22 7873  imeout\" type=\"xs\n+000094a0: 643a 7374 7269 6e67 2220 7573 653d 226f  d:string\" use=\"o\n+000094b0: 7074 696f 6e61 6c22 3e0d 0a20 2020 2020  ptional\">..     \n+000094c0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+000094d0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+000094e0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+000094f0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+00009500: 4441 5441 5b20 5468 6520 7265 7175 6573  DATA[ The reques\n+00009510: 7420 7469 6d65 6f75 742e 205d 5d3e 3c2f  t timeout. ]]></\n+00009520: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00009530: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00009540: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+00009550: 3e0d 0a20 2020 2020 2020 203c 2f78 7364  >..        </xsd\n+00009560: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00009570: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+00009580: 7574 6520 6e61 6d65 3d22 6869 6768 6573  ute name=\"highes\n+00009590: 742d 7072 696f 7269 7479 2220 7479 7065  t-priority\" type\n+000095a0: 3d22 7873 643a 626f 6f6c 6561 6e22 2075  =\"xsd:boolean\" u\n+000095b0: 7365 3d22 6f70 7469 6f6e 616c 223e 0d0a  se=\"optional\">..\n+000095c0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000095d0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+000095e0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+000095f0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00009600: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00009610: 2020 2020 2020 203c 215b 4344 4154 415b         <![CDATA[\n+00009620: 2057 6865 7468 6572 2074 6865 2063 6f6e   Whether the con\n+00009630: 6669 6773 2066 726f 6d20 636f 6e66 6967  figs from config\n+00009640: 2063 656e 7465 7220 6861 7320 7468 6520   center has the \n+00009650: 6869 6768 6573 7420 7072 696f 7269 7479  highest priority\n+00009660: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+00009670: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00009680: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00009690: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+000096a0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+000096b0: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+000096c0: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+000096d0: 2269 6e63 6c75 6465 2d73 7072 696e 672d  \"include-spring-\n+000096e0: 656e 7622 2074 7970 653d 2278 7364 3a62  env\" type=\"xsd:b\n+000096f0: 6f6f 6c65 616e 2220 7573 653d 226f 7074  oolean\" use=\"opt\n+00009700: 696f 6e61 6c22 3e0d 0a20 2020 2020 2020  ional\">..       \n+00009710: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+00009720: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00009730: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+00009740: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00009750: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00009760: 3c21 5b43 4441 5441 5b20 4c6f 6164 2074  <![CDATA[ Load t\n+00009770: 6865 2063 6f6e 6669 6720 6974 656d 7320  he config items \n+00009780: 6279 2044 7562 626f 2069 7473 656c 6620  by Dubbo itself \n+00009790: 6f72 2053 7072 696e 672e 205d 5d3e 3c2f  or Spring. ]]></\n+000097a0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+000097b0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000097c0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+000097d0: 3e0d 0a20 2020 2020 2020 203c 2f78 7364  >..        </xsd\n+000097e0: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n 000097f0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-00009800: 7574 6520 6e61 6d65 3d22 7072 6f74 6f63  ute name=\"protoc\n-00009810: 6f6c 2220 7479 7065 3d22 7873 643a 7374  ol\" type=\"xsd:st\n-00009820: 7269 6e67 223e 0a20 2020 2020 2020 2020  ring\">.         \n-00009830: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-00009840: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00009850: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-00009860: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n-00009870: 2054 6865 206d 6f6e 6974 6f72 2070 726f   The monitor pro\n-00009880: 746f 636f 6c2e 205d 5d3e 3c2f 7873 643a  tocol. ]]></xsd:\n-00009890: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-000098a0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-000098b0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-000098c0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-000098d0: 6275 7465 3e0a 2020 2020 2020 2020 3c78  bute>.        <x\n-000098e0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-000098f0: 653d 2275 7365 726e 616d 6522 2074 7970  e=\"username\" typ\n-00009900: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-00009910: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00009920: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00009930: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00009940: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00009950: 3c21 5b43 4441 5441 5b20 5468 6520 6d6f  <![CDATA[ The mo\n-00009960: 6e69 746f 7220 7573 6572 6e61 6d65 2e20  nitor username. \n-00009970: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00009980: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00009990: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-000099a0: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-000099b0: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-000099c0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-000099d0: 6962 7574 6520 6e61 6d65 3d22 7061 7373  ibute name=\"pass\n-000099e0: 776f 7264 2220 7479 7065 3d22 7873 643a  word\" type=\"xsd:\n-000099f0: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-00009a00: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00009a10: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00009a20: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00009a30: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00009a40: 415b 2054 6865 206d 6f6e 6974 6f72 2070  A[ The monitor p\n-00009a50: 6173 7377 6f72 642e 205d 5d3e 3c2f 7873  assword. ]]></xs\n-00009a60: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00009a70: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00009a80: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00009a90: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00009aa0: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00009ab0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00009ac0: 616d 653d 2267 726f 7570 2220 7479 7065  ame=\"group\" type\n-00009ad0: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-00009ae0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00009af0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00009b00: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00009b10: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-00009b20: 215b 4344 4154 415b 2054 6865 206d 6f6e  ![CDATA[ The mon\n-00009b30: 6974 6f72 2067 726f 7570 2e20 5d5d 3e3c  itor group. ]]><\n-00009b40: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-00009b50: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00009b60: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00009b70: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-00009b80: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-00009b90: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00009ba0: 6520 6e61 6d65 3d22 7665 7273 696f 6e22  e name=\"version\"\n-00009bb0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-00009bc0: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-00009bd0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-00009be0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00009bf0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-00009c00: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-00009c10: 6520 6d6f 6e69 746f 7220 7665 7273 696f  e monitor versio\n-00009c20: 6e2e 205d 5d3e 3c2f 7873 643a 646f 6375  n. ]]></xsd:docu\n-00009c30: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-00009c40: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-00009c50: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00009c60: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-00009c70: 3e0a 2020 2020 2020 2020 3c78 7364 3a61  >.        <xsd:a\n-00009c80: 7474 7269 6275 7465 206e 616d 653d 2269  ttribute name=\"i\n-00009c90: 6e74 6572 7661 6c22 2074 7970 653d 2278  nterval\" type=\"x\n-00009ca0: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-00009cb0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00009cc0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00009cd0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00009ce0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00009cf0: 4441 5441 5b20 5468 6520 6d6f 6e69 746f  DATA[ The monito\n-00009d00: 7220 696e 7465 7276 616c 2e20 5d5d 3e3c  r interval. ]]><\n-00009d10: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-00009d20: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00009d30: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00009d40: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-00009d50: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-00009d60: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00009d70: 6520 6e61 6d65 3d22 6465 6661 756c 7422  e name=\"default\"\n-00009d80: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-00009d90: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-00009da0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-00009db0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00009dc0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-00009dd0: 696f 6e3e 3c21 5b43 4441 5441 5b20 4973  ion><![CDATA[ Is\n-00009de0: 2064 6566 6175 6c74 2e20 5d5d 3e3c 2f78   default. ]]></x\n-00009df0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00009e00: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-00009e10: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00009e20: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-00009e30: 7472 6962 7574 653e 0a20 2020 203c 2f78  tribute>.    </x\n-00009e40: 7364 3a63 6f6d 706c 6578 5479 7065 3e0a  sd:complexType>.\n-00009e50: 0a20 2020 203c 7873 643a 636f 6d70 6c65  .    <xsd:comple\n-00009e60: 7854 7970 6520 6e61 6d65 3d22 7061 7261  xType name=\"para\n-00009e70: 6d65 7465 7254 7970 6522 3e0a 2020 2020  meterType\">.    \n-00009e80: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-00009e90: 7465 206e 616d 653d 226b 6579 2220 7479  te name=\"key\" ty\n-00009ea0: 7065 3d22 7873 643a 7374 7269 6e67 2220  pe=\"xsd:string\" \n-00009eb0: 7573 653d 2272 6571 7569 7265 6422 3e0a  use=\"required\">.\n-00009ec0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00009ed0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00009ee0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-00009ef0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00009f00: 3c21 5b43 4441 5441 5b20 5468 6520 7061  <![CDATA[ The pa\n-00009f10: 7261 6d65 7465 7220 6b65 792e 205d 5d3e  rameter key. ]]>\n-00009f20: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-00009f30: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00009f40: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-00009f50: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-00009f60: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-00009f70: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-00009f80: 7465 206e 616d 653d 2276 616c 7565 2220  te name=\"value\" \n-00009f90: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-00009fa0: 2220 7573 653d 2272 6571 7569 7265 6422  \" use=\"required\"\n-00009fb0: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-00009fc0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00009fd0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00009fe0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00009ff0: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-0000a000: 7061 7261 6d65 7465 7220 7661 6c75 652e  parameter value.\n-0000a010: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-0000a020: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-0000a030: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-0000a040: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-0000a050: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-0000a060: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-0000a070: 7269 6275 7465 206e 616d 653d 2268 6964  ribute name=\"hid\n-0000a080: 6522 2074 7970 653d 2278 7364 3a62 6f6f  e\" type=\"xsd:boo\n-0000a090: 6c65 616e 223e 0a20 2020 2020 2020 2020  lean\">.         \n-0000a0a0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-0000a0b0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000a0c0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-0000a0d0: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n-0000a0e0: 2048 6964 6520 7061 7261 6d65 7465 722e   Hide parameter.\n-0000a0f0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-0000a100: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-0000a110: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-0000a120: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-0000a130: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-0000a140: 2020 2020 3c2f 7873 643a 636f 6d70 6c65      </xsd:comple\n-0000a150: 7854 7970 653e 0a0a 2020 2020 3c78 7364  xType>..    <xsd\n-0000a160: 3a63 6f6d 706c 6578 5479 7065 206e 616d  :complexType nam\n-0000a170: 653d 226d 6574 7269 6373 5479 7065 223e  e=\"metricsType\">\n-0000a180: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n-0000a190: 7472 6962 7574 6520 6e61 6d65 3d22 706f  tribute name=\"po\n-0000a1a0: 7274 2220 7479 7065 3d22 7873 643a 7374  rt\" type=\"xsd:st\n-0000a1b0: 7269 6e67 2220 7573 653d 2272 6571 7569  ring\" use=\"requi\n-0000a1c0: 7265 6422 3e0a 2020 2020 2020 2020 2020  red\">.          \n-0000a1d0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-0000a1e0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000a1f0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-0000a200: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-0000a210: 5468 6520 6d65 7472 6963 7320 7365 7276  The metrics serv\n-0000a220: 6963 6520 706f 7274 2e20 5d5d 3e3c 2f78  ice port. ]]></x\n-0000a230: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-0000a240: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-0000a250: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000a260: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-0000a270: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-0000a280: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-0000a290: 6e61 6d65 3d22 7072 6f74 6f63 6f6c 2220  name=\"protocol\" \n-0000a2a0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-0000a2b0: 2220 7573 653d 2272 6571 7569 7265 6422  \" use=\"required\"\n-0000a2c0: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-0000a2d0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000a2e0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000a2f0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000a300: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-0000a310: 6d65 7472 6963 7320 7365 7276 6963 6520  metrics service \n-0000a320: 7072 6f74 6f63 6f6c 2e20 5d5d 3e3c 2f78  protocol. ]]></x\n-0000a330: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-0000a340: 3e0a 2020 2020 2020 2020 2020 2020 3c2f  >.            </\n-0000a350: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000a360: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-0000a370: 7472 6962 7574 653e 0a20 2020 203c 2f78  tribute>.    </x\n-0000a380: 7364 3a63 6f6d 706c 6578 5479 7065 3e0a  sd:complexType>.\n-0000a390: 0a20 2020 203c 7873 643a 636f 6d70 6c65  .    <xsd:comple\n-0000a3a0: 7854 7970 6520 6e61 6d65 3d22 6d65 7468  xType name=\"meth\n-0000a3b0: 6f64 5479 7065 223e 0a20 2020 2020 2020  odType\">.       \n-0000a3c0: 203c 7873 643a 636f 6d70 6c65 7843 6f6e   <xsd:complexCon\n-0000a3d0: 7465 6e74 3e0a 2020 2020 2020 2020 2020  tent>.          \n-0000a3e0: 2020 3c78 7364 3a65 7874 656e 7369 6f6e    <xsd:extension\n-0000a3f0: 2062 6173 653d 2261 6273 7472 6163 744d   base=\"abstractM\n-0000a400: 6574 686f 6454 7970 6522 3e0a 2020 2020  ethodType\">.    \n-0000a410: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000a420: 3a63 686f 6963 6520 6d69 6e4f 6363 7572  :choice minOccur\n-0000a430: 733d 2230 2220 6d61 784f 6363 7572 733d  s=\"0\" maxOccurs=\n-0000a440: 2275 6e62 6f75 6e64 6564 223e 0a20 2020  \"unbounded\">.   \n-0000a450: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000a460: 203c 7873 643a 656c 656d 656e 7420 7265   <xsd:element re\n-0000a470: 663d 2261 7267 756d 656e 7422 206d 696e  f=\"argument\" min\n-0000a480: 4f63 6375 7273 3d22 3022 206d 6178 4f63  Occurs=\"0\" maxOc\n-0000a490: 6375 7273 3d22 756e 626f 756e 6465 6422  curs=\"unbounded\"\n-0000a4a0: 2f3e 0a20 2020 2020 2020 2020 2020 2020  />.             \n-0000a4b0: 2020 2020 2020 203c 7873 643a 656c 656d         <xsd:elem\n-0000a4c0: 656e 7420 7265 663d 2270 6172 616d 6574  ent ref=\"paramet\n-0000a4d0: 6572 2220 6d69 6e4f 6363 7572 733d 2230  er\" minOccurs=\"0\n-0000a4e0: 2220 6d61 784f 6363 7572 733d 2275 6e62  \" maxOccurs=\"unb\n-0000a4f0: 6f75 6e64 6564 222f 3e0a 2020 2020 2020  ounded\"/>.      \n-0000a500: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-0000a510: 6368 6f69 6365 3e0a 2020 2020 2020 2020  choice>.        \n-0000a520: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-0000a530: 7269 6275 7465 206e 616d 653d 226e 616d  ribute name=\"nam\n-0000a540: 6522 2074 7970 653d 2278 7364 3a73 7472  e\" type=\"xsd:str\n-0000a550: 696e 6722 2075 7365 3d22 7265 7175 6972  ing\" use=\"requir\n-0000a560: 6564 223e 0a20 2020 2020 2020 2020 2020  ed\">.           \n-0000a570: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-0000a580: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000a590: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000a5a0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-0000a5b0: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-0000a5c0: 6865 206d 6574 686f 6420 6e61 6d65 2028  he method name (\n-0000a5d0: 6d65 7468 6f64 2e74 6f53 7472 696e 6728  method.toString(\n-0000a5e0: 2929 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  )). ]]></xsd:doc\n-0000a5f0: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-0000a600: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000a610: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-0000a620: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000a630: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-0000a640: 653e 0a20 2020 2020 2020 2020 2020 2020  e>.             \n-0000a650: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-0000a660: 6520 6e61 6d65 3d22 6578 6563 7574 6573  e name=\"executes\n-0000a670: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-0000a680: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-0000a690: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-0000a6a0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000a6b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000a6c0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-0000a6d0: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-0000a6e0: 6865 206d 6178 2061 6374 6976 6520 7265  he max active re\n-0000a6f0: 7175 6573 7473 2e20 5d5d 3e3c 2f78 7364  quests. ]]></xsd\n-0000a700: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-0000a710: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000a720: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-0000a730: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000a740: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-0000a750: 6962 7574 653e 0a20 2020 2020 2020 2020  ibute>.         \n-0000a760: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-0000a770: 6962 7574 6520 6e61 6d65 3d22 7374 6174  ibute name=\"stat\n-0000a780: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-0000a790: 6e67 2220 6465 6661 756c 743d 222d 3122  ng\" default=\"-1\"\n-0000a7a0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000a7b0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-0000a7c0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000a7d0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000a7e0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000a7f0: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-0000a800: 6d65 7468 6f64 2070 6172 616d 6574 6572  method parameter\n-0000a810: 2069 6e64 6578 2066 6f72 2073 7461 7469   index for stati\n-0000a820: 7374 6963 732e 205d 5d3e 3c2f 7873 643a  stics. ]]></xsd:\n-0000a830: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-0000a840: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000a850: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-0000a860: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000a870: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-0000a880: 6275 7465 3e0a 2020 2020 2020 2020 2020  bute>.          \n-0000a890: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-0000a8a0: 6275 7465 206e 616d 653d 2272 6574 7279  bute name=\"retry\n-0000a8b0: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-0000a8c0: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-0000a8d0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-0000a8e0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000a8f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000a900: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-0000a910: 7469 6f6e 3e3c 215b 4344 4154 415b 2044  tion><![CDATA[ D\n-0000a920: 6570 7265 6361 7465 642e 2052 6570 6c61  eprecated. Repla\n-0000a930: 6365 2074 6f20 7265 7472 6965 732e 205d  ce to retries. ]\n-0000a940: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-0000a950: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000a960: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000a970: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n+00009800: 7574 6520 6e61 6d65 3d22 6368 6563 6b22  ute name=\"check\"\n+00009810: 2074 7970 653d 2278 7364 3a62 6f6f 6c65   type=\"xsd:boole\n+00009820: 616e 2220 7573 653d 226f 7074 696f 6e61  an\" use=\"optiona\n+00009830: 6c22 3e0d 0a20 2020 2020 2020 2020 2020  l\">..           \n+00009840: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+00009850: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00009860: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+00009870: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00009880: 2020 2020 2020 2020 2020 2020 3c21 5b43              <![C\n+00009890: 4441 5441 5b20 5468 6520 706f 6c69 6379  DATA[ The policy\n+000098a0: 2074 6f20 6170 706c 7920 7768 656e 2063   to apply when c\n+000098b0: 6f6e 6e65 6374 696e 6720 746f 2063 6f6e  onnecting to con\n+000098c0: 6669 6720 6365 6e74 6572 2066 6169 6c73  fig center fails\n+000098d0: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+000098e0: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+000098f0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00009900: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00009910: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+00009920: 653e 0d0a 2020 2020 3c2f 7873 643a 636f  e>..    </xsd:co\n+00009930: 6d70 6c65 7854 7970 653e 0d0a 0d0a 2020  mplexType>....  \n+00009940: 2020 3c78 7364 3a63 6f6d 706c 6578 5479    <xsd:complexTy\n+00009950: 7065 206e 616d 653d 226d 6f6e 6974 6f72  pe name=\"monitor\n+00009960: 5479 7065 223e 0d0a 2020 2020 2020 2020  Type\">..        \n+00009970: 3c78 7364 3a73 6571 7565 6e63 6520 6d69  <xsd:sequence mi\n+00009980: 6e4f 6363 7572 733d 2230 2220 6d61 784f  nOccurs=\"0\" maxO\n+00009990: 6363 7572 733d 2275 6e62 6f75 6e64 6564  ccurs=\"unbounded\n+000099a0: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+000099b0: 3c78 7364 3a65 6c65 6d65 6e74 2072 6566  <xsd:element ref\n+000099c0: 3d22 7061 7261 6d65 7465 7222 206d 696e  =\"parameter\" min\n+000099d0: 4f63 6375 7273 3d22 3022 206d 6178 4f63  Occurs=\"0\" maxOc\n+000099e0: 6375 7273 3d22 756e 626f 756e 6465 6422  curs=\"unbounded\"\n+000099f0: 2f3e 0d0a 2020 2020 2020 2020 3c2f 7873  />..        </xs\n+00009a00: 643a 7365 7175 656e 6365 3e0d 0a20 2020  d:sequence>..   \n+00009a10: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+00009a20: 7574 6520 6e61 6d65 3d22 6164 6472 6573  ute name=\"addres\n+00009a30: 7322 2074 7970 653d 2278 7364 3a73 7472  s\" type=\"xsd:str\n+00009a40: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+00009a50: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00009a60: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00009a70: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+00009a80: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+00009a90: 5b20 5468 6520 6d6f 6e69 746f 7220 6164  [ The monitor ad\n+00009aa0: 6472 6573 732e 205d 5d3e 3c2f 7873 643a  dress. ]]></xsd:\n+00009ab0: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00009ac0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00009ad0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00009ae0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+00009af0: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+00009b00: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+00009b10: 6e61 6d65 3d22 7072 6f74 6f63 6f6c 2220  name=\"protocol\" \n+00009b20: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+00009b30: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+00009b40: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+00009b50: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00009b60: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+00009b70: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+00009b80: 6865 206d 6f6e 6974 6f72 2070 726f 746f  he monitor proto\n+00009b90: 636f 6c2e 205d 5d3e 3c2f 7873 643a 646f  col. ]]></xsd:do\n+00009ba0: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+00009bb0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00009bc0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00009bd0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+00009be0: 6275 7465 3e0d 0a20 2020 2020 2020 203c  bute>..        <\n+00009bf0: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00009c00: 6d65 3d22 7573 6572 6e61 6d65 2220 7479  me=\"username\" ty\n+00009c10: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+00009c20: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+00009c30: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00009c40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00009c50: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00009c60: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+00009c70: 206d 6f6e 6974 6f72 2075 7365 726e 616d   monitor usernam\n+00009c80: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n+00009c90: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00009ca0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00009cb0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00009cc0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00009cd0: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+00009ce0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00009cf0: 3d22 7061 7373 776f 7264 2220 7479 7065  =\"password\" type\n+00009d00: 3d22 7873 643a 7374 7269 6e67 223e 0d0a  =\"xsd:string\">..\n+00009d10: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00009d20: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00009d30: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00009d40: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00009d50: 3e3c 215b 4344 4154 415b 2054 6865 206d  ><![CDATA[ The m\n+00009d60: 6f6e 6974 6f72 2070 6173 7377 6f72 642e  onitor password.\n+00009d70: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00009d80: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00009d90: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+00009da0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00009db0: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+00009dc0: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+00009dd0: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+00009de0: 6772 6f75 7022 2074 7970 653d 2278 7364  group\" type=\"xsd\n+00009df0: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+00009e00: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+00009e10: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00009e20: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00009e30: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+00009e40: 4441 5441 5b20 5468 6520 6d6f 6e69 746f  DATA[ The monito\n+00009e50: 7220 6772 6f75 702e 205d 5d3e 3c2f 7873  r group. ]]></xs\n+00009e60: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00009e70: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+00009e80: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00009e90: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+00009ea0: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+00009eb0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+00009ec0: 6520 6e61 6d65 3d22 7665 7273 696f 6e22  e name=\"version\"\n+00009ed0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+00009ee0: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+00009ef0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+00009f00: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00009f10: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+00009f20: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+00009f30: 5468 6520 6d6f 6e69 746f 7220 7665 7273  The monitor vers\n+00009f40: 696f 6e2e 205d 5d3e 3c2f 7873 643a 646f  ion. ]]></xsd:do\n+00009f50: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+00009f60: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00009f70: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00009f80: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+00009f90: 6275 7465 3e0d 0a20 2020 2020 2020 203c  bute>..        <\n+00009fa0: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00009fb0: 6d65 3d22 696e 7465 7276 616c 2220 7479  me=\"interval\" ty\n+00009fc0: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+00009fd0: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+00009fe0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00009ff0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000a000: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+0000a010: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+0000a020: 206d 6f6e 6974 6f72 2069 6e74 6572 7661   monitor interva\n+0000a030: 6c2e 205d 5d3e 3c2f 7873 643a 646f 6375  l. ]]></xsd:docu\n+0000a040: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+0000a050: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+0000a060: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000a070: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+0000a080: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+0000a090: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+0000a0a0: 3d22 6465 6661 756c 7422 2074 7970 653d  =\"default\" type=\n+0000a0b0: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+0000a0c0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000a0d0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000a0e0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000a0f0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000a100: 3c21 5b43 4441 5441 5b20 4973 2064 6566  <![CDATA[ Is def\n+0000a110: 6175 6c74 2e20 5d5d 3e3c 2f78 7364 3a64  ault. ]]></xsd:d\n+0000a120: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+0000a130: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+0000a140: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+0000a150: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+0000a160: 6962 7574 653e 0d0a 2020 2020 3c2f 7873  ibute>..    </xs\n+0000a170: 643a 636f 6d70 6c65 7854 7970 653e 0d0a  d:complexType>..\n+0000a180: 0d0a 2020 2020 3c78 7364 3a63 6f6d 706c  ..    <xsd:compl\n+0000a190: 6578 5479 7065 206e 616d 653d 2270 6172  exType name=\"par\n+0000a1a0: 616d 6574 6572 5479 7065 223e 0d0a 2020  ameterType\">..  \n+0000a1b0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+0000a1c0: 6275 7465 206e 616d 653d 226b 6579 2220  bute name=\"key\" \n+0000a1d0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+0000a1e0: 2220 7573 653d 2272 6571 7569 7265 6422  \" use=\"required\"\n+0000a1f0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+0000a200: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000a210: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000a220: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+0000a230: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+0000a240: 6520 7061 7261 6d65 7465 7220 6b65 792e  e parameter key.\n+0000a250: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+0000a260: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+0000a270: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+0000a280: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000a290: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+0000a2a0: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+0000a2b0: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+0000a2c0: 7661 6c75 6522 2074 7970 653d 2278 7364  value\" type=\"xsd\n+0000a2d0: 3a73 7472 696e 6722 2075 7365 3d22 7265  :string\" use=\"re\n+0000a2e0: 7175 6972 6564 223e 0d0a 2020 2020 2020  quired\">..      \n+0000a2f0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+0000a300: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000a310: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+0000a320: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+0000a330: 4154 415b 2054 6865 2070 6172 616d 6574  ATA[ The paramet\n+0000a340: 6572 2076 616c 7565 2e20 5d5d 3e3c 2f78  er value. ]]></x\n+0000a350: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+0000a360: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+0000a370: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+0000a380: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+0000a390: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+0000a3a0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+0000a3b0: 7465 206e 616d 653d 2268 6964 6522 2074  te name=\"hide\" t\n+0000a3c0: 7970 653d 2278 7364 3a62 6f6f 6c65 616e  ype=\"xsd:boolean\n+0000a3d0: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+0000a3e0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+0000a3f0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000a400: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+0000a410: 7469 6f6e 3e3c 215b 4344 4154 415b 2048  tion><![CDATA[ H\n+0000a420: 6964 6520 7061 7261 6d65 7465 722e 205d  ide parameter. ]\n+0000a430: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+0000a440: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000a450: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+0000a460: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+0000a470: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+0000a480: 0a20 2020 203c 2f78 7364 3a63 6f6d 706c  .    </xsd:compl\n+0000a490: 6578 5479 7065 3e0d 0a0d 0a20 2020 203c  exType>....    <\n+0000a4a0: 7873 643a 636f 6d70 6c65 7854 7970 6520  xsd:complexType \n+0000a4b0: 6e61 6d65 3d22 6d65 7472 6963 7354 7970  name=\"metricsTyp\n+0000a4c0: 6522 3e0d 0a20 2020 2020 2020 203c 7873  e\">..        <xs\n+0000a4d0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+0000a4e0: 3d22 706f 7274 2220 7479 7065 3d22 7873  =\"port\" type=\"xs\n+0000a4f0: 643a 7374 7269 6e67 2220 7573 653d 2272  d:string\" use=\"r\n+0000a500: 6571 7569 7265 6422 3e0d 0a20 2020 2020  equired\">..     \n+0000a510: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+0000a520: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000a530: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+0000a540: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+0000a550: 4441 5441 5b20 5468 6520 6d65 7472 6963  DATA[ The metric\n+0000a560: 7320 7365 7276 6963 6520 706f 7274 2e20  s service port. \n+0000a570: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+0000a580: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000a590: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+0000a5a0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000a5b0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+0000a5c0: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+0000a5d0: 7474 7269 6275 7465 206e 616d 653d 2270  ttribute name=\"p\n+0000a5e0: 726f 746f 636f 6c22 2074 7970 653d 2278  rotocol\" type=\"x\n+0000a5f0: 7364 3a73 7472 696e 6722 2075 7365 3d22  sd:string\" use=\"\n+0000a600: 7265 7175 6972 6564 223e 0d0a 2020 2020  required\">..    \n+0000a610: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+0000a620: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000a630: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+0000a640: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+0000a650: 4344 4154 415b 2054 6865 206d 6574 7269  CDATA[ The metri\n+0000a660: 6373 2073 6572 7669 6365 2070 726f 746f  cs service proto\n+0000a670: 636f 6c2e 205d 5d3e 3c2f 7873 643a 646f  col. ]]></xsd:do\n+0000a680: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+0000a690: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+0000a6a0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000a6b0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+0000a6c0: 6275 7465 3e0d 0a20 2020 203c 2f78 7364  bute>..    </xsd\n+0000a6d0: 3a63 6f6d 706c 6578 5479 7065 3e0d 0a0d  :complexType>...\n+0000a6e0: 0a20 2020 203c 7873 643a 636f 6d70 6c65  .    <xsd:comple\n+0000a6f0: 7854 7970 6520 6e61 6d65 3d22 6d65 7468  xType name=\"meth\n+0000a700: 6f64 5479 7065 223e 0d0a 2020 2020 2020  odType\">..      \n+0000a710: 2020 3c78 7364 3a63 6f6d 706c 6578 436f    <xsd:complexCo\n+0000a720: 6e74 656e 743e 0d0a 2020 2020 2020 2020  ntent>..        \n+0000a730: 2020 2020 3c78 7364 3a65 7874 656e 7369      <xsd:extensi\n+0000a740: 6f6e 2062 6173 653d 2261 6273 7472 6163  on base=\"abstrac\n+0000a750: 744d 6574 686f 6454 7970 6522 3e0d 0a20  tMethodType\">.. \n+0000a760: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000a770: 7873 643a 6368 6f69 6365 206d 696e 4f63  xsd:choice minOc\n+0000a780: 6375 7273 3d22 3022 206d 6178 4f63 6375  curs=\"0\" maxOccu\n+0000a790: 7273 3d22 756e 626f 756e 6465 6422 3e0d  rs=\"unbounded\">.\n+0000a7a0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000a7b0: 2020 2020 203c 7873 643a 656c 656d 656e       <xsd:elemen\n+0000a7c0: 7420 7265 663d 2261 7267 756d 656e 7422  t ref=\"argument\"\n+0000a7d0: 206d 696e 4f63 6375 7273 3d22 3022 206d   minOccurs=\"0\" m\n+0000a7e0: 6178 4f63 6375 7273 3d22 756e 626f 756e  axOccurs=\"unboun\n+0000a7f0: 6465 6422 2f3e 0d0a 2020 2020 2020 2020  ded\"/>..        \n+0000a800: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000a810: 3a65 6c65 6d65 6e74 2072 6566 3d22 7061  :element ref=\"pa\n+0000a820: 7261 6d65 7465 7222 206d 696e 4f63 6375  rameter\" minOccu\n+0000a830: 7273 3d22 3022 206d 6178 4f63 6375 7273  rs=\"0\" maxOccurs\n+0000a840: 3d22 756e 626f 756e 6465 6422 2f3e 0d0a  =\"unbounded\"/>..\n+0000a850: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000a860: 3c2f 7873 643a 6368 6f69 6365 3e0d 0a20  </xsd:choice>.. \n+0000a870: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000a880: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+0000a890: 6d65 3d22 6e61 6d65 2220 7479 7065 3d22  me=\"name\" type=\"\n+0000a8a0: 7873 643a 7374 7269 6e67 2220 7573 653d  xsd:string\" use=\n+0000a8b0: 2272 6571 7569 7265 6422 3e0d 0a20 2020  \"required\">..   \n+0000a8c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000a8d0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+0000a8e0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000a8f0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000a900: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+0000a910: 5b43 4441 5441 5b20 5468 6520 6d65 7468  [CDATA[ The meth\n+0000a920: 6f64 206e 616d 6520 286d 6574 686f 642e  od name (method.\n+0000a930: 746f 5374 7269 6e67 2829 292e 205d 5d3e  toString()). ]]>\n+0000a940: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+0000a950: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000a960: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+0000a970: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n 0000a980: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-0000a990: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-0000a9a0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000a9b0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-0000a9c0: 653d 2272 656c 6961 626c 6522 2074 7970  e=\"reliable\" typ\n-0000a9d0: 653d 2278 7364 3a73 7472 696e 6722 2064  e=\"xsd:string\" d\n-0000a9e0: 6566 6175 6c74 3d22 6661 6c73 6522 3e0a  efault=\"false\">.\n-0000a9f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000aa00: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-0000aa10: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000aa20: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-0000aa30: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000aa40: 3c21 5b43 4441 5441 5b20 4465 7072 6563  <![CDATA[ Deprec\n-0000aa50: 6174 6564 2e20 5265 706c 6163 6520 746f  ated. Replace to\n-0000aa60: 206e 6170 6f6c 6920 7072 6f74 6f63 6f6c   napoli protocol\n-0000aa70: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-0000aa80: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-0000aa90: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-0000aaa0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000aab0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000aac0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-0000aad0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000aae0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-0000aaf0: 6e61 6d65 3d22 6465 7072 6563 6174 6564  name=\"deprecated\n-0000ab00: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-0000ab10: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-0000ab20: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-0000ab30: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000ab40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000ab50: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-0000ab60: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-0000ab70: 6865 206d 6574 686f 6420 6465 7072 6563  he method deprec\n-0000ab80: 6174 6564 2e20 5d5d 3e3c 2f78 7364 3a64  ated. ]]></xsd:d\n-0000ab90: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-0000aba0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000abb0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-0000abc0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000abd0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-0000abe0: 7574 653e 0a20 2020 2020 2020 2020 2020  ute>.           \n-0000abf0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-0000ac00: 7574 6520 6e61 6d65 3d22 7374 6963 6b79  ute name=\"sticky\n-0000ac10: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-0000ac20: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-0000ac30: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-0000ac40: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000ac50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000ac60: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-0000ac70: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000ac80: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000ac90: 2020 3c21 5b43 4441 5441 5b20 456e 6162    <![CDATA[ Enab\n-0000aca0: 6c65 2f44 6973 6162 6c65 2063 6c75 7374  le/Disable clust\n-0000acb0: 6572 2073 7469 636b 7920 706f 6c69 6379  er sticky policy\n-0000acc0: 2e44 6566 6175 6c74 2066 616c 7365 205d  .Default false ]\n-0000acd0: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-0000ace0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000acf0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000ad00: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000ad10: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-0000ad20: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-0000ad30: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000ad40: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-0000ad50: 653d 2272 6574 7572 6e22 2074 7970 653d  e=\"return\" type=\n-0000ad60: 2278 7364 3a73 7472 696e 6722 3e0a 2020  \"xsd:string\">.  \n-0000ad70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000ad80: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-0000ad90: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000ada0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000adb0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-0000adc0: 5b43 4441 5441 5b20 4d65 7468 6f64 2072  [CDATA[ Method r\n-0000add0: 6573 756c 7420 6973 2072 6574 7572 6e2e  esult is return.\n-0000ade0: 2064 6566 6175 6c74 2069 7320 7472 7565   default is true\n-0000adf0: 2e5d 5d3e 3c2f 7873 643a 646f 6375 6d65  .]]></xsd:docume\n-0000ae00: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-0000ae10: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-0000ae20: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000ae30: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000ae40: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-0000ae50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000ae60: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-0000ae70: 616d 653d 226f 6e69 6e76 6f6b 6522 2074  ame=\"oninvoke\" t\n-0000ae80: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-0000ae90: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000aea0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-0000aeb0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000aec0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000aed0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000aee0: 6e3e 3c21 5b43 4441 5441 5b20 4d65 7468  n><![CDATA[ Meth\n-0000aef0: 6f64 2069 6e76 6f6b 6520 7472 6967 6765  od invoke trigge\n-0000af00: 722e 5d5d 3e3c 2f78 7364 3a64 6f63 756d  r.]]></xsd:docum\n-0000af10: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-0000af20: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-0000af30: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000af40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000af50: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-0000af60: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000af70: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-0000af80: 6e61 6d65 3d22 6f6e 7265 7475 726e 2220  name=\"onreturn\" \n-0000af90: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-0000afa0: 223e 0a20 2020 2020 2020 2020 2020 2020  \">.             \n-0000afb0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-0000afc0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000afd0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000afe0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-0000aff0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000b000: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b010: 3c21 5b43 4441 5441 5b20 4d65 7468 6f64  <![CDATA[ Method\n-0000b020: 2072 6574 7572 6e20 7472 6967 6765 722e   return trigger.\n-0000b030: 2072 6574 7572 6e20 6174 7472 6962 7574   return attribut\n-0000b040: 6520 6d75 7374 2062 6520 7472 7565 2e5d  e must be true.]\n-0000b050: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-0000b060: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000b070: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000b080: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000b090: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-0000b0a0: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-0000b0b0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000b0c0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-0000b0d0: 653d 226f 6e74 6872 6f77 2220 7479 7065  e=\"onthrow\" type\n-0000b0e0: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-0000b0f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b100: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-0000b110: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000b120: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000b130: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-0000b140: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b150: 2020 2020 2020 2020 2020 2020 3c21 5b43              <![C\n-0000b160: 4441 5441 5b20 4d65 7468 6f64 206f 6e20  DATA[ Method on \n-0000b170: 6572 726f 7220 7472 6967 6765 722e 7265  error trigger.re\n-0000b180: 7475 726e 2061 7474 7269 6275 7465 206d  turn attribute m\n-0000b190: 7573 7420 6265 2074 7275 652e 5d5d 3e3c  ust be true.]]><\n-0000b1a0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-0000b1b0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000b1c0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-0000b1d0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000b1e0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-0000b1f0: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-0000b200: 2020 2020 2020 203c 2f78 7364 3a65 7874         </xsd:ext\n-0000b210: 656e 7369 6f6e 3e0a 2020 2020 2020 2020  ension>.        \n-0000b220: 3c2f 7873 643a 636f 6d70 6c65 7843 6f6e  </xsd:complexCon\n-0000b230: 7465 6e74 3e0a 2020 2020 3c2f 7873 643a  tent>.    </xsd:\n-0000b240: 636f 6d70 6c65 7854 7970 653e 0a0a 2020  complexType>..  \n-0000b250: 2020 3c78 7364 3a63 6f6d 706c 6578 5479    <xsd:complexTy\n-0000b260: 7065 206e 616d 653d 2261 7267 756d 656e  pe name=\"argumen\n-0000b270: 7454 7970 6522 3e0a 2020 2020 2020 2020  tType\">.        \n-0000b280: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-0000b290: 616d 653d 2269 6e64 6578 2220 7479 7065  ame=\"index\" type\n-0000b2a0: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-0000b2b0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000b2c0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000b2d0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000b2e0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-0000b2f0: 215b 4344 4154 415b 2054 6865 2061 7267  ![CDATA[ The arg\n-0000b300: 756d 656e 7420 696e 6465 782e 205d 5d3e  ument index. ]]>\n-0000b310: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-0000b320: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000b330: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-0000b340: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-0000b350: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-0000b360: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-0000b370: 7465 206e 616d 653d 2274 7970 6522 2074  te name=\"type\" t\n-0000b380: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n-0000b390: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-0000b3a0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000b3b0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000b3c0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000b3d0: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n-0000b3e0: 6172 6775 6d65 6e74 2074 7970 652e 205d  argument type. ]\n-0000b3f0: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-0000b400: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000b410: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-0000b420: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-0000b430: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-0000b440: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-0000b450: 6275 7465 206e 616d 653d 2263 616c 6c62  bute name=\"callb\n-0000b460: 6163 6b22 2074 7970 653d 2278 7364 3a73  ack\" type=\"xsd:s\n-0000b470: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-0000b480: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-0000b490: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000b4a0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-0000b4b0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-0000b4c0: 5b20 5468 6520 6172 6775 6d65 6e74 2069  [ The argument i\n-0000b4d0: 7320 6361 6c6c 6261 636b 2e20 5d5d 3e3c  s callback. ]]><\n-0000b4e0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-0000b4f0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000b500: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-0000b510: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-0000b520: 6174 7472 6962 7574 653e 0a20 2020 203c  attribute>.    <\n-0000b530: 2f78 7364 3a63 6f6d 706c 6578 5479 7065  /xsd:complexType\n-0000b540: 3e0a 0a20 2020 203c 7873 643a 636f 6d70  >..    <xsd:comp\n-0000b550: 6c65 7854 7970 6520 6e61 6d65 3d22 636f  lexType name=\"co\n-0000b560: 6e73 756d 6572 5479 7065 223e 0a20 2020  nsumerType\">.   \n-0000b570: 2020 2020 203c 7873 643a 636f 6d70 6c65       <xsd:comple\n-0000b580: 7843 6f6e 7465 6e74 3e0a 2020 2020 2020  xContent>.      \n-0000b590: 2020 2020 2020 3c78 7364 3a65 7874 656e        <xsd:exten\n-0000b5a0: 7369 6f6e 2062 6173 653d 2261 6273 7472  sion base=\"abstr\n-0000b5b0: 6163 7452 6566 6572 656e 6365 5479 7065  actReferenceType\n-0000b5c0: 223e 0a20 2020 2020 2020 2020 2020 2020  \">.             \n-0000b5d0: 2020 203c 7873 643a 7365 7175 656e 6365     <xsd:sequence\n-0000b5e0: 206d 696e 4f63 6375 7273 3d22 3022 206d   minOccurs=\"0\" m\n-0000b5f0: 6178 4f63 6375 7273 3d22 756e 626f 756e  axOccurs=\"unboun\n-0000b600: 6465 6422 3e0a 2020 2020 2020 2020 2020  ded\">.          \n-0000b610: 2020 2020 2020 2020 2020 3c78 7364 3a65            <xsd:e\n-0000b620: 6c65 6d65 6e74 2072 6566 3d22 7265 6665  lement ref=\"refe\n-0000b630: 7265 6e63 6522 206d 696e 4f63 6375 7273  rence\" minOccurs\n-0000b640: 3d22 3022 206d 6178 4f63 6375 7273 3d22  =\"0\" maxOccurs=\"\n-0000b650: 756e 626f 756e 6465 6422 2f3e 0a20 2020  unbounded\"/>.   \n-0000b660: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b670: 203c 7873 643a 656c 656d 656e 7420 7265   <xsd:element re\n-0000b680: 663d 2270 6172 616d 6574 6572 2220 6d69  f=\"parameter\" mi\n-0000b690: 6e4f 6363 7572 733d 2230 2220 6d61 784f  nOccurs=\"0\" maxO\n-0000b6a0: 6363 7572 733d 2275 6e62 6f75 6e64 6564  ccurs=\"unbounded\n-0000b6b0: 222f 3e0a 2020 2020 2020 2020 2020 2020  \"/>.            \n-0000b6c0: 2020 2020 3c2f 7873 643a 7365 7175 656e      </xsd:sequen\n-0000b6d0: 6365 3e0a 2020 2020 2020 2020 2020 2020  ce>.            \n-0000b6e0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-0000b6f0: 7465 206e 616d 653d 2264 6566 6175 6c74  te name=\"default\n-0000b700: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-0000b710: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-0000b720: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-0000b730: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000b740: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b750: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-0000b760: 7469 6f6e 3e3c 215b 4344 4154 415b 2049  tion><![CDATA[ I\n-0000b770: 7320 6465 6661 756c 742e 205d 5d3e 3c2f  s default. ]]></\n-0000b780: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000b790: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000b7a0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-0000b7b0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000b7c0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-0000b7d0: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-0000b7e0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-0000b7f0: 7474 7269 6275 7465 206e 616d 653d 2263  ttribute name=\"c\n-0000b800: 6c69 656e 7422 2074 7970 653d 2278 7364  lient\" type=\"xsd\n-0000b810: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-0000b820: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000b830: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000b840: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b850: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-0000b860: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-0000b870: 5441 5b20 5472 616e 7370 6f72 7465 7220  TA[ Transporter \n-0000b880: 6c61 7965 7220 6672 616d 6577 6f72 6b3a  layer framework:\n-0000b890: 206e 6574 7479 206d 696e 612e 2e2e 2e20   netty mina.... \n-0000b8a0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-0000b8b0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000b8c0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-0000b8d0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-0000b8e0: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-0000b8f0: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-0000b900: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000b910: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-0000b920: 6d65 3d22 7468 7265 6164 706f 6f6c 2220  me=\"threadpool\" \n-0000b930: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-0000b940: 223e 0a20 2020 2020 2020 2020 2020 2020  \">.             \n-0000b950: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-0000b960: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000b970: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b980: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-0000b990: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000b9a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000b9b0: 3c21 5b43 4441 5441 5b20 436f 6e73 756d  <![CDATA[ Consum\n-0000b9c0: 6572 2074 6872 6561 6470 6f6f 6c3a 2063  er threadpool: c\n-0000b9d0: 6163 6865 642c 2066 6978 6564 2c20 6c69  ached, fixed, li\n-0000b9e0: 6d69 7465 642c 2065 6167 6572 5d5d 3e3c  mited, eager]]><\n-0000b9f0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-0000ba00: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000ba10: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-0000ba20: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000ba30: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-0000ba40: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-0000ba50: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000ba60: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-0000ba70: 636f 7265 7468 7265 6164 7322 2074 7970  corethreads\" typ\n-0000ba80: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-0000ba90: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000baa0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-0000bab0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000bac0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-0000bad0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000bae0: 3c21 5b43 4441 5441 5b20 5468 6520 7468  <![CDATA[ The th\n-0000baf0: 7265 6164 2070 6f6f 6c20 636f 7265 2074  read pool core t\n-0000bb00: 6872 6561 6473 2073 697a 652e 205d 5d3e  hreads size. ]]>\n-0000bb10: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-0000bb20: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000bb30: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-0000bb40: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000bb50: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000bb60: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-0000bb70: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000bb80: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-0000bb90: 2274 6872 6561 6473 2220 7479 7065 3d22  \"threads\" type=\"\n-0000bba0: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-0000bbb0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000bbc0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-0000bbd0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000bbe0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-0000bbf0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-0000bc00: 4344 4154 415b 2054 6865 2074 6872 6561  CDATA[ The threa\n-0000bc10: 6420 706f 6f6c 2073 697a 652e 205d 5d3e  d pool size. ]]>\n-0000bc20: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-0000bc30: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000bc40: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-0000bc50: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000bc60: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000bc70: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-0000bc80: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000bc90: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-0000bca0: 2271 7565 7565 7322 2074 7970 653d 2278  \"queues\" type=\"x\n-0000bcb0: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-0000bcc0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000bcd0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-0000bce0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000bcf0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-0000bd00: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-0000bd10: 4441 5441 5b20 5468 6520 7468 7265 6164  DATA[ The thread\n-0000bd20: 2070 6f6f 6c20 7175 6575 6520 7369 7a65   pool queue size\n-0000bd30: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-0000bd40: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-0000bd50: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-0000bd60: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000bd70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000bd80: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-0000bd90: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000bda0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-0000bdb0: 6e61 6d65 3d22 7368 6172 6563 6f6e 6e65  name=\"shareconne\n-0000bdc0: 6374 696f 6e73 2220 7479 7065 3d22 7873  ctions\" type=\"xs\n-0000bdd0: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-0000bde0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000bdf0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000be00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000be10: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-0000be20: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-0000be30: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000be40: 2020 2020 2020 2020 3c21 5b43 4441 5441          <![CDATA\n-0000be50: 5b20 5468 6520 6465 6661 756c 7420 7368  [ The default sh\n-0000be60: 6172 6520 636f 6e6e 6563 7469 6f6e 732e  are connections.\n-0000be70: 2064 6566 6175 6c74 2073 6861 7265 206f   default share o\n-0000be80: 6e65 2063 6f6e 6e65 6374 696f 6e2e 205d  ne connection. ]\n-0000be90: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-0000bea0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000beb0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000bec0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000bed0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-0000bee0: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-0000bef0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000bf00: 7364 3a61 6e79 4174 7472 6962 7574 6520  sd:anyAttribute \n-0000bf10: 6e61 6d65 7370 6163 653d 2223 236f 7468  namespace=\"##oth\n-0000bf20: 6572 2220 7072 6f63 6573 7343 6f6e 7465  er\" processConte\n-0000bf30: 6e74 733d 226c 6178 222f 3e0a 2020 2020  nts=\"lax\"/>.    \n-0000bf40: 2020 2020 2020 2020 3c2f 7873 643a 6578          </xsd:ex\n-0000bf50: 7465 6e73 696f 6e3e 0a20 2020 2020 2020  tension>.       \n-0000bf60: 203c 2f78 7364 3a63 6f6d 706c 6578 436f   </xsd:complexCo\n-0000bf70: 6e74 656e 743e 0a20 2020 203c 2f78 7364  ntent>.    </xsd\n-0000bf80: 3a63 6f6d 706c 6578 5479 7065 3e0a 0a20  :complexType>.. \n-0000bf90: 2020 203c 7873 643a 636f 6d70 6c65 7854     <xsd:complexT\n-0000bfa0: 7970 6520 6e61 6d65 3d22 7265 6665 7265  ype name=\"refere\n-0000bfb0: 6e63 6554 7970 6522 3e0a 2020 2020 2020  nceType\">.      \n-0000bfc0: 2020 3c78 7364 3a63 6f6d 706c 6578 436f    <xsd:complexCo\n-0000bfd0: 6e74 656e 743e 0a20 2020 2020 2020 2020  ntent>.         \n-0000bfe0: 2020 203c 7873 643a 6578 7465 6e73 696f     <xsd:extensio\n-0000bff0: 6e20 6261 7365 3d22 6162 7374 7261 6374  n base=\"abstract\n-0000c000: 5265 6665 7265 6e63 6554 7970 6522 3e0a  ReferenceType\">.\n-0000c010: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c020: 3c78 7364 3a63 686f 6963 6520 6d69 6e4f  <xsd:choice minO\n-0000c030: 6363 7572 733d 2230 2220 6d61 784f 6363  ccurs=\"0\" maxOcc\n-0000c040: 7572 733d 2275 6e62 6f75 6e64 6564 223e  urs=\"unbounded\">\n-0000c050: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000c060: 2020 2020 203c 7873 643a 656c 656d 656e       <xsd:elemen\n-0000c070: 7420 7265 663d 226d 6574 686f 6422 206d  t ref=\"method\" m\n-0000c080: 696e 4f63 6375 7273 3d22 3022 206d 6178  inOccurs=\"0\" max\n-0000c090: 4f63 6375 7273 3d22 756e 626f 756e 6465  Occurs=\"unbounde\n-0000c0a0: 6422 2f3e 0a20 2020 2020 2020 2020 2020  d\"/>.           \n-0000c0b0: 2020 2020 2020 2020 203c 7873 643a 656c           <xsd:el\n-0000c0c0: 656d 656e 7420 7265 663d 2270 6172 616d  ement ref=\"param\n-0000c0d0: 6574 6572 2220 6d69 6e4f 6363 7572 733d  eter\" minOccurs=\n-0000c0e0: 2230 2220 6d61 784f 6363 7572 733d 2275  \"0\" maxOccurs=\"u\n-0000c0f0: 6e62 6f75 6e64 6564 222f 3e0a 2020 2020  nbounded\"/>.    \n-0000c100: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-0000c110: 643a 6368 6f69 6365 3e0a 2020 2020 2020  d:choice>.      \n-0000c120: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-0000c130: 7474 7269 6275 7465 206e 616d 653d 2269  ttribute name=\"i\n-0000c140: 6e74 6572 6661 6365 2220 7479 7065 3d22  nterface\" type=\"\n-0000c150: 7873 643a 746f 6b65 6e22 2075 7365 3d22  xsd:token\" use=\"\n-0000c160: 7265 7175 6972 6564 223e 0a20 2020 2020  required\">.     \n-0000c170: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000c180: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000c190: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c1a0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-0000c1b0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-0000c1c0: 4154 415b 2054 6865 2073 6572 7669 6365  ATA[ The service\n-0000c1d0: 2069 6e74 6572 6661 6365 2063 6c61 7373   interface class\n-0000c1e0: 206e 616d 652e 205d 5d3e 3c2f 7873 643a   name. ]]></xsd:\n-0000c1f0: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n+0000a990: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+0000a9a0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000a9b0: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+0000a9c0: 6d65 3d22 6578 6563 7574 6573 2220 7479  me=\"executes\" ty\n+0000a9d0: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+0000a9e0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000a9f0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+0000aa00: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000aa10: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000aa20: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+0000aa30: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+0000aa40: 206d 6178 2061 6374 6976 6520 7265 7175   max active requ\n+0000aa50: 6573 7473 2e20 5d5d 3e3c 2f78 7364 3a64  ests. ]]></xsd:d\n+0000aa60: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+0000aa70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000aa80: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+0000aa90: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000aaa0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+0000aab0: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+0000aac0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+0000aad0: 7269 6275 7465 206e 616d 653d 2273 7461  ribute name=\"sta\n+0000aae0: 7422 2074 7970 653d 2278 7364 3a73 7472  t\" type=\"xsd:str\n+0000aaf0: 696e 6722 2064 6566 6175 6c74 3d22 2d31  ing\" default=\"-1\n+0000ab00: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+0000ab10: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+0000ab20: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000ab30: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000ab40: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+0000ab50: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+0000ab60: 6865 206d 6574 686f 6420 7061 7261 6d65  he method parame\n+0000ab70: 7465 7220 696e 6465 7820 666f 7220 7374  ter index for st\n+0000ab80: 6174 6973 7469 6373 2e20 5d5d 3e3c 2f78  atistics. ]]></x\n+0000ab90: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+0000aba0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000abb0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+0000abc0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000abd0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+0000abe0: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+0000abf0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000ac00: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+0000ac10: 2272 6574 7279 2220 7479 7065 3d22 7873  \"retry\" type=\"xs\n+0000ac20: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+0000ac30: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000ac40: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+0000ac50: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000ac60: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+0000ac70: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+0000ac80: 4344 4154 415b 2044 6570 7265 6361 7465  CDATA[ Deprecate\n+0000ac90: 642e 2052 6570 6c61 6365 2074 6f20 7265  d. Replace to re\n+0000aca0: 7472 6965 732e 205d 5d3e 3c2f 7873 643a  tries. ]]></xsd:\n+0000acb0: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+0000acc0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000acd0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+0000ace0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000acf0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+0000ad00: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+0000ad10: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n+0000ad20: 7472 6962 7574 6520 6e61 6d65 3d22 7265  tribute name=\"re\n+0000ad30: 6c69 6162 6c65 2220 7479 7065 3d22 7873  liable\" type=\"xs\n+0000ad40: 643a 7374 7269 6e67 2220 6465 6661 756c  d:string\" defaul\n+0000ad50: 743d 2266 616c 7365 223e 0d0a 2020 2020  t=\"false\">..    \n+0000ad60: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000ad70: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+0000ad80: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000ad90: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+0000ada0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+0000adb0: 4344 4154 415b 2044 6570 7265 6361 7465  CDATA[ Deprecate\n+0000adc0: 642e 2052 6570 6c61 6365 2074 6f20 6e61  d. Replace to na\n+0000add0: 706f 6c69 2070 726f 746f 636f 6c2e 205d  poli protocol. ]\n+0000ade0: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+0000adf0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000ae00: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+0000ae10: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+0000ae20: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000ae30: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+0000ae40: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000ae50: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+0000ae60: 6e61 6d65 3d22 6465 7072 6563 6174 6564  name=\"deprecated\n+0000ae70: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+0000ae80: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+0000ae90: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+0000aea0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000aeb0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000aec0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+0000aed0: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+0000aee0: 2054 6865 206d 6574 686f 6420 6465 7072   The method depr\n+0000aef0: 6563 6174 6564 2e20 5d5d 3e3c 2f78 7364  ecated. ]]></xsd\n+0000af00: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+0000af10: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000af20: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+0000af30: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000af40: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+0000af50: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+0000af60: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+0000af70: 7474 7269 6275 7465 206e 616d 653d 2273  ttribute name=\"s\n+0000af80: 7469 636b 7922 2074 7970 653d 2278 7364  ticky\" type=\"xsd\n+0000af90: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+0000afa0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000afb0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000afc0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000afd0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+0000afe0: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+0000aff0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b000: 2020 2020 2020 2020 2020 3c21 5b43 4441            <![CDA\n+0000b010: 5441 5b20 456e 6162 6c65 2f44 6973 6162  TA[ Enable/Disab\n+0000b020: 6c65 2063 6c75 7374 6572 2073 7469 636b  le cluster stick\n+0000b030: 7920 706f 6c69 6379 2e44 6566 6175 6c74  y policy.Default\n+0000b040: 2066 616c 7365 205d 5d3e 3c2f 7873 643a   false ]]></xsd:\n+0000b050: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+0000b060: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b070: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+0000b080: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000b090: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+0000b0a0: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+0000b0b0: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n+0000b0c0: 7472 6962 7574 6520 6e61 6d65 3d22 7265  tribute name=\"re\n+0000b0d0: 7475 726e 2220 7479 7065 3d22 7873 643a  turn\" type=\"xsd:\n+0000b0e0: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+0000b0f0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+0000b100: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+0000b110: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b120: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+0000b130: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+0000b140: 4154 415b 204d 6574 686f 6420 7265 7375  ATA[ Method resu\n+0000b150: 6c74 2069 7320 7265 7475 726e 2e20 6465  lt is return. de\n+0000b160: 6661 756c 7420 6973 2074 7275 652e 5d5d  fault is true.]]\n+0000b170: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+0000b180: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000b190: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+0000b1a0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+0000b1b0: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+0000b1c0: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+0000b1d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b1e0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+0000b1f0: 616d 653d 226f 6e69 6e76 6f6b 6522 2074  ame=\"oninvoke\" t\n+0000b200: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+0000b210: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000b220: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+0000b230: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000b240: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b250: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+0000b260: 696f 6e3e 3c21 5b43 4441 5441 5b20 4d65  ion><![CDATA[ Me\n+0000b270: 7468 6f64 2069 6e76 6f6b 6520 7472 6967  thod invoke trig\n+0000b280: 6765 722e 5d5d 3e3c 2f78 7364 3a64 6f63  ger.]]></xsd:doc\n+0000b290: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+0000b2a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b2b0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+0000b2c0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000b2d0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+0000b2e0: 7574 653e 0d0a 2020 2020 2020 2020 2020  ute>..          \n+0000b2f0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+0000b300: 6275 7465 206e 616d 653d 226f 6e72 6574  bute name=\"onret\n+0000b310: 7572 6e22 2074 7970 653d 2278 7364 3a73  urn\" type=\"xsd:s\n+0000b320: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+0000b330: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000b340: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+0000b350: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b360: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+0000b370: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+0000b380: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b390: 2020 2020 2020 2020 3c21 5b43 4441 5441          <![CDATA\n+0000b3a0: 5b20 4d65 7468 6f64 2072 6574 7572 6e20  [ Method return \n+0000b3b0: 7472 6967 6765 722e 2072 6574 7572 6e20  trigger. return \n+0000b3c0: 6174 7472 6962 7574 6520 6d75 7374 2062  attribute must b\n+0000b3d0: 6520 7472 7565 2e5d 5d3e 3c2f 7873 643a  e true.]]></xsd:\n+0000b3e0: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+0000b3f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b400: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+0000b410: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000b420: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+0000b430: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+0000b440: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n+0000b450: 7472 6962 7574 6520 6e61 6d65 3d22 6f6e  tribute name=\"on\n+0000b460: 7468 726f 7722 2074 7970 653d 2278 7364  throw\" type=\"xsd\n+0000b470: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+0000b480: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000b490: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000b4a0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000b4b0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+0000b4c0: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+0000b4d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000b4e0: 2020 2020 2020 2020 2020 3c21 5b43 4441            <![CDA\n+0000b4f0: 5441 5b20 4d65 7468 6f64 206f 6e20 6572  TA[ Method on er\n+0000b500: 726f 7220 7472 6967 6765 722e 7265 7475  ror trigger.retu\n+0000b510: 726e 2061 7474 7269 6275 7465 206d 7573  rn attribute mus\n+0000b520: 7420 6265 2074 7275 652e 5d5d 3e3c 2f78  t be true.]]></x\n+0000b530: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+0000b540: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000b550: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+0000b560: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000b570: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+0000b580: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+0000b590: 2020 2020 2020 2020 3c2f 7873 643a 6578          </xsd:ex\n+0000b5a0: 7465 6e73 696f 6e3e 0d0a 2020 2020 2020  tension>..      \n+0000b5b0: 2020 3c2f 7873 643a 636f 6d70 6c65 7843    </xsd:complexC\n+0000b5c0: 6f6e 7465 6e74 3e0d 0a20 2020 203c 2f78  ontent>..    </x\n+0000b5d0: 7364 3a63 6f6d 706c 6578 5479 7065 3e0d  sd:complexType>.\n+0000b5e0: 0a0d 0a20 2020 203c 7873 643a 636f 6d70  ...    <xsd:comp\n+0000b5f0: 6c65 7854 7970 6520 6e61 6d65 3d22 6172  lexType name=\"ar\n+0000b600: 6775 6d65 6e74 5479 7065 223e 0d0a 2020  gumentType\">..  \n+0000b610: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+0000b620: 6275 7465 206e 616d 653d 2269 6e64 6578  bute name=\"index\n+0000b630: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+0000b640: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+0000b650: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+0000b660: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000b670: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+0000b680: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+0000b690: 2054 6865 2061 7267 756d 656e 7420 696e   The argument in\n+0000b6a0: 6465 782e 205d 5d3e 3c2f 7873 643a 646f  dex. ]]></xsd:do\n+0000b6b0: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+0000b6c0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+0000b6d0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000b6e0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+0000b6f0: 6275 7465 3e0d 0a20 2020 2020 2020 203c  bute>..        <\n+0000b700: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+0000b710: 6d65 3d22 7479 7065 2220 7479 7065 3d22  me=\"type\" type=\"\n+0000b720: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+0000b730: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+0000b740: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000b750: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000b760: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+0000b770: 215b 4344 4154 415b 2054 6865 2061 7267  ![CDATA[ The arg\n+0000b780: 756d 656e 7420 7479 7065 2e20 5d5d 3e3c  ument type. ]]><\n+0000b790: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+0000b7a0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000b7b0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+0000b7c0: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+0000b7d0: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+0000b7e0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+0000b7f0: 6275 7465 206e 616d 653d 2263 616c 6c62  bute name=\"callb\n+0000b800: 6163 6b22 2074 7970 653d 2278 7364 3a73  ack\" type=\"xsd:s\n+0000b810: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+0000b820: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+0000b830: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000b840: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+0000b850: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+0000b860: 5441 5b20 5468 6520 6172 6775 6d65 6e74  TA[ The argument\n+0000b870: 2069 7320 6361 6c6c 6261 636b 2e20 5d5d   is callback. ]]\n+0000b880: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+0000b890: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000b8a0: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+0000b8b0: 696f 6e3e 0d0a 2020 2020 2020 2020 3c2f  ion>..        </\n+0000b8c0: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+0000b8d0: 2020 2020 3c2f 7873 643a 636f 6d70 6c65      </xsd:comple\n+0000b8e0: 7854 7970 653e 0d0a 0d0a 2020 2020 3c78  xType>....    <x\n+0000b8f0: 7364 3a63 6f6d 706c 6578 5479 7065 206e  sd:complexType n\n+0000b900: 616d 653d 2263 6f6e 7375 6d65 7254 7970  ame=\"consumerTyp\n+0000b910: 6522 3e0d 0a20 2020 2020 2020 203c 7873  e\">..        <xs\n+0000b920: 643a 636f 6d70 6c65 7843 6f6e 7465 6e74  d:complexContent\n+0000b930: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+0000b940: 7873 643a 6578 7465 6e73 696f 6e20 6261  xsd:extension ba\n+0000b950: 7365 3d22 6162 7374 7261 6374 5265 6665  se=\"abstractRefe\n+0000b960: 7265 6e63 6554 7970 6522 3e0d 0a20 2020  renceType\">..   \n+0000b970: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000b980: 643a 7365 7175 656e 6365 206d 696e 4f63  d:sequence minOc\n+0000b990: 6375 7273 3d22 3022 206d 6178 4f63 6375  curs=\"0\" maxOccu\n+0000b9a0: 7273 3d22 756e 626f 756e 6465 6422 3e0d  rs=\"unbounded\">.\n+0000b9b0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000b9c0: 2020 2020 203c 7873 643a 656c 656d 656e       <xsd:elemen\n+0000b9d0: 7420 7265 663d 2272 6566 6572 656e 6365  t ref=\"reference\n+0000b9e0: 2220 6d69 6e4f 6363 7572 733d 2230 2220  \" minOccurs=\"0\" \n+0000b9f0: 6d61 784f 6363 7572 733d 2275 6e62 6f75  maxOccurs=\"unbou\n+0000ba00: 6e64 6564 222f 3e0d 0a20 2020 2020 2020  nded\"/>..       \n+0000ba10: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000ba20: 643a 656c 656d 656e 7420 7265 663d 2270  d:element ref=\"p\n+0000ba30: 6172 616d 6574 6572 2220 6d69 6e4f 6363  arameter\" minOcc\n+0000ba40: 7572 733d 2230 2220 6d61 784f 6363 7572  urs=\"0\" maxOccur\n+0000ba50: 733d 2275 6e62 6f75 6e64 6564 222f 3e0d  s=\"unbounded\"/>.\n+0000ba60: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000ba70: 203c 2f78 7364 3a73 6571 7565 6e63 653e   </xsd:sequence>\n+0000ba80: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000ba90: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+0000baa0: 206e 616d 653d 2264 6566 6175 6c74 2220   name=\"default\" \n+0000bab0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+0000bac0: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+0000bad0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+0000bae0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000baf0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000bb00: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+0000bb10: 7469 6f6e 3e3c 215b 4344 4154 415b 2049  tion><![CDATA[ I\n+0000bb20: 7320 6465 6661 756c 742e 205d 5d3e 3c2f  s default. ]]></\n+0000bb30: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+0000bb40: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000bb50: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+0000bb60: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000bb70: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+0000bb80: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+0000bb90: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000bba0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+0000bbb0: 3d22 636c 6965 6e74 2220 7479 7065 3d22  =\"client\" type=\"\n+0000bbc0: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+0000bbd0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000bbe0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+0000bbf0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000bc00: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000bc10: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+0000bc20: 215b 4344 4154 415b 2054 7261 6e73 706f  ![CDATA[ Transpo\n+0000bc30: 7274 6572 206c 6179 6572 2066 7261 6d65  rter layer frame\n+0000bc40: 776f 726b 3a20 6e65 7474 7920 6d69 6e61  work: netty mina\n+0000bc50: 2e2e 2e2e 205d 5d3e 3c2f 7873 643a 646f  .... ]]></xsd:do\n+0000bc60: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+0000bc70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000bc80: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+0000bc90: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000bca0: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+0000bcb0: 6275 7465 3e0d 0a20 2020 2020 2020 2020  bute>..         \n+0000bcc0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+0000bcd0: 6962 7574 6520 6e61 6d65 3d22 7468 7265  ibute name=\"thre\n+0000bce0: 6164 706f 6f6c 2220 7479 7065 3d22 7873  adpool\" type=\"xs\n+0000bcf0: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+0000bd00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000bd10: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+0000bd20: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000bd30: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+0000bd40: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+0000bd50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000bd60: 2020 2020 2020 2020 2020 203c 215b 4344             <![CD\n+0000bd70: 4154 415b 2043 6f6e 7375 6d65 7220 7468  ATA[ Consumer th\n+0000bd80: 7265 6164 706f 6f6c 3a20 6361 6368 6564  readpool: cached\n+0000bd90: 2c20 6669 7865 642c 206c 696d 6974 6564  , fixed, limited\n+0000bda0: 2c20 6561 6765 725d 5d3e 3c2f 7873 643a  , eager]]></xsd:\n+0000bdb0: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+0000bdc0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000bdd0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+0000bde0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000bdf0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+0000be00: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+0000be10: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n+0000be20: 7472 6962 7574 6520 6e61 6d65 3d22 636f  tribute name=\"co\n+0000be30: 7265 7468 7265 6164 7322 2074 7970 653d  rethreads\" type=\n+0000be40: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+0000be50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000be60: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+0000be70: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000be80: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000be90: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000bea0: 3c21 5b43 4441 5441 5b20 5468 6520 7468  <![CDATA[ The th\n+0000beb0: 7265 6164 2070 6f6f 6c20 636f 7265 2074  read pool core t\n+0000bec0: 6872 6561 6473 2073 697a 652e 205d 5d3e  hreads size. ]]>\n+0000bed0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+0000bee0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000bef0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+0000bf00: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000bf10: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+0000bf20: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+0000bf30: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000bf40: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+0000bf50: 6d65 3d22 7468 7265 6164 7322 2074 7970  me=\"threads\" typ\n+0000bf60: 653d 2278 7364 3a73 7472 696e 6722 3e0d  e=\"xsd:string\">.\n+0000bf70: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000bf80: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+0000bf90: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000bfa0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000bfb0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+0000bfc0: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n+0000bfd0: 7468 7265 6164 2070 6f6f 6c20 7369 7a65  thread pool size\n+0000bfe0: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+0000bff0: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+0000c000: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000c010: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+0000c020: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000c030: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+0000c040: 653e 0d0a 2020 2020 2020 2020 2020 2020  e>..            \n+0000c050: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+0000c060: 7465 206e 616d 653d 2271 7565 7565 7322  te name=\"queues\"\n+0000c070: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+0000c080: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+0000c090: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+0000c0a0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000c0b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c0c0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+0000c0d0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+0000c0e0: 5468 6520 7468 7265 6164 2070 6f6f 6c20  The thread pool \n+0000c0f0: 7175 6575 6520 7369 7a65 2e20 5d5d 3e3c  queue size. ]]><\n+0000c100: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+0000c110: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000c120: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+0000c130: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000c140: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+0000c150: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+0000c160: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+0000c170: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+0000c180: 653d 2273 6861 7265 636f 6e6e 6563 7469  e=\"shareconnecti\n+0000c190: 6f6e 7322 2074 7970 653d 2278 7364 3a73  ons\" type=\"xsd:s\n+0000c1a0: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+0000c1b0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000c1c0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+0000c1d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c1e0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+0000c1f0: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n 0000c200: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c210: 2020 2020 2020 203c 7873 643a 6170 7069         <xsd:appi\n-0000c220: 6e66 6f3e 0a20 2020 2020 2020 2020 2020  nfo>.           \n-0000c230: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c240: 203c 746f 6f6c 3a61 6e6e 6f74 6174 696f   <tool:annotatio\n-0000c250: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000c260: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c270: 2020 203c 746f 6f6c 3a65 7870 6563 7465     <tool:expecte\n-0000c280: 642d 7479 7065 2074 7970 653d 226a 6176  d-type type=\"jav\n-0000c290: 612e 6c61 6e67 2e43 6c61 7373 222f 3e0a  a.lang.Class\"/>.\n-0000c2a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c2b0: 2020 2020 2020 2020 2020 2020 3c2f 746f              </to\n-0000c2c0: 6f6c 3a61 6e6e 6f74 6174 696f 6e3e 0a20  ol:annotation>. \n-0000c2d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c2e0: 2020 2020 2020 203c 2f78 7364 3a61 7070         </xsd:app\n-0000c2f0: 696e 666f 3e0a 2020 2020 2020 2020 2020  info>.          \n-0000c300: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-0000c310: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000c320: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-0000c330: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-0000c340: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-0000c350: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-0000c360: 3d22 7572 6c22 2074 7970 653d 2278 7364  =\"url\" type=\"xsd\n-0000c370: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-0000c380: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000c390: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000c3a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c3b0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-0000c3c0: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-0000c3d0: 5441 5b20 5072 6f76 6964 6572 206c 6973  TA[ Provider lis\n-0000c3e0: 7420 7572 6c2e 205d 5d3e 3c2f 7873 643a  t url. ]]></xsd:\n-0000c3f0: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-0000c400: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c410: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-0000c420: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000c430: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-0000c440: 6275 7465 3e0a 2020 2020 2020 2020 2020  bute>.          \n-0000c450: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-0000c460: 6275 7465 206e 616d 653d 2263 6c69 656e  bute name=\"clien\n-0000c470: 7422 2074 7970 653d 2278 7364 3a73 7472  t\" type=\"xsd:str\n-0000c480: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-0000c490: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-0000c4a0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000c4b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c4c0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-0000c4d0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-0000c4e0: 5072 6f74 6f63 6f6c 2074 7261 6e73 706f  Protocol transpo\n-0000c4f0: 7274 2063 6c69 656e 7420 7479 7065 2e20  rt client type. \n-0000c500: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-0000c510: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000c520: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-0000c530: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-0000c540: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-0000c550: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-0000c560: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000c570: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-0000c580: 6d65 3d22 636f 6e73 756d 6572 2220 7479  me=\"consumer\" ty\n-0000c590: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-0000c5a0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000c5b0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-0000c5c0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000c5d0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000c5e0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-0000c5f0: 3e3c 215b 4344 4154 415b 2044 6570 7265  ><![CDATA[ Depre\n-0000c600: 6361 7465 642e 2052 6570 6c61 6365 2074  cated. Replace t\n-0000c610: 6f20 7265 6665 7265 6e63 652d 6465 6661  o reference-defa\n-0000c620: 756c 742e 205d 5d3e 3c2f 7873 643a 646f  ult. ]]></xsd:do\n-0000c630: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n+0000c210: 2020 2020 2020 2020 3c21 5b43 4441 5441          <![CDATA\n+0000c220: 5b20 5468 6520 6465 6661 756c 7420 7368  [ The default sh\n+0000c230: 6172 6520 636f 6e6e 6563 7469 6f6e 732e  are connections.\n+0000c240: 2064 6566 6175 6c74 2073 6861 7265 206f   default share o\n+0000c250: 6e65 2063 6f6e 6e65 6374 696f 6e2e 205d  ne connection. ]\n+0000c260: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+0000c270: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000c280: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+0000c290: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+0000c2a0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000c2b0: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+0000c2c0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000c2d0: 203c 7873 643a 616e 7941 7474 7269 6275   <xsd:anyAttribu\n+0000c2e0: 7465 206e 616d 6573 7061 6365 3d22 2323  te namespace=\"##\n+0000c2f0: 6f74 6865 7222 2070 726f 6365 7373 436f  other\" processCo\n+0000c300: 6e74 656e 7473 3d22 6c61 7822 2f3e 0d0a  ntents=\"lax\"/>..\n+0000c310: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+0000c320: 643a 6578 7465 6e73 696f 6e3e 0d0a 2020  d:extension>..  \n+0000c330: 2020 2020 2020 3c2f 7873 643a 636f 6d70        </xsd:comp\n+0000c340: 6c65 7843 6f6e 7465 6e74 3e0d 0a20 2020  lexContent>..   \n+0000c350: 203c 2f78 7364 3a63 6f6d 706c 6578 5479   </xsd:complexTy\n+0000c360: 7065 3e0d 0a0d 0a20 2020 203c 7873 643a  pe>....    <xsd:\n+0000c370: 636f 6d70 6c65 7854 7970 6520 6e61 6d65  complexType name\n+0000c380: 3d22 7265 6665 7265 6e63 6554 7970 6522  =\"referenceType\"\n+0000c390: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+0000c3a0: 636f 6d70 6c65 7843 6f6e 7465 6e74 3e0d  complexContent>.\n+0000c3b0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+0000c3c0: 643a 6578 7465 6e73 696f 6e20 6261 7365  d:extension base\n+0000c3d0: 3d22 6162 7374 7261 6374 5265 6665 7265  =\"abstractRefere\n+0000c3e0: 6e63 6554 7970 6522 3e0d 0a20 2020 2020  nceType\">..     \n+0000c3f0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000c400: 6368 6f69 6365 206d 696e 4f63 6375 7273  choice minOccurs\n+0000c410: 3d22 3022 206d 6178 4f63 6375 7273 3d22  =\"0\" maxOccurs=\"\n+0000c420: 756e 626f 756e 6465 6422 3e0d 0a20 2020  unbounded\">..   \n+0000c430: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c440: 203c 7873 643a 656c 656d 656e 7420 7265   <xsd:element re\n+0000c450: 663d 226d 6574 686f 6422 206d 696e 4f63  f=\"method\" minOc\n+0000c460: 6375 7273 3d22 3022 206d 6178 4f63 6375  curs=\"0\" maxOccu\n+0000c470: 7273 3d22 756e 626f 756e 6465 6422 2f3e  rs=\"unbounded\"/>\n+0000c480: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000c490: 2020 2020 2020 3c78 7364 3a65 6c65 6d65        <xsd:eleme\n+0000c4a0: 6e74 2072 6566 3d22 7061 7261 6d65 7465  nt ref=\"paramete\n+0000c4b0: 7222 206d 696e 4f63 6375 7273 3d22 3022  r\" minOccurs=\"0\"\n+0000c4c0: 206d 6178 4f63 6375 7273 3d22 756e 626f   maxOccurs=\"unbo\n+0000c4d0: 756e 6465 6422 2f3e 0d0a 2020 2020 2020  unded\"/>..      \n+0000c4e0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+0000c4f0: 6368 6f69 6365 3e0d 0a20 2020 2020 2020  choice>..       \n+0000c500: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n+0000c510: 7472 6962 7574 6520 6e61 6d65 3d22 696e  tribute name=\"in\n+0000c520: 7465 7266 6163 6522 2074 7970 653d 2278  terface\" type=\"x\n+0000c530: 7364 3a74 6f6b 656e 2220 7573 653d 2272  sd:token\" use=\"r\n+0000c540: 6571 7569 7265 6422 3e0d 0a20 2020 2020  equired\">..     \n+0000c550: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000c560: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000c570: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000c580: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+0000c590: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+0000c5a0: 4441 5441 5b20 5468 6520 7365 7276 6963  DATA[ The servic\n+0000c5b0: 6520 696e 7465 7266 6163 6520 636c 6173  e interface clas\n+0000c5c0: 7320 6e61 6d65 2e20 5d5d 3e3c 2f78 7364  s name. ]]></xsd\n+0000c5d0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+0000c5e0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000c5f0: 2020 2020 2020 2020 203c 7873 643a 6170           <xsd:ap\n+0000c600: 7069 6e66 6f3e 0d0a 2020 2020 2020 2020  pinfo>..        \n+0000c610: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c620: 2020 2020 3c74 6f6f 6c3a 616e 6e6f 7461      <tool:annota\n+0000c630: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n 0000c640: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c650: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-0000c660: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000c670: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-0000c680: 7465 3e0a 2020 2020 2020 2020 2020 2020  te>.            \n-0000c690: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-0000c6a0: 7465 206e 616d 653d 2270 726f 746f 636f  te name=\"protoco\n-0000c6b0: 6c22 2074 7970 653d 2278 7364 3a73 7472  l\" type=\"xsd:str\n-0000c6c0: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-0000c6d0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-0000c6e0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000c6f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c700: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-0000c710: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-0000c720: 5468 6520 7365 7276 6963 6520 7072 6f74  The service prot\n-0000c730: 6f63 6f6c 2e20 5d5d 3e3c 2f78 7364 3a64  ocol. ]]></xsd:d\n-0000c740: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-0000c750: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c760: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-0000c770: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000c780: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-0000c790: 7574 653e 0a20 2020 2020 2020 2020 2020  ute>.           \n-0000c7a0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-0000c7b0: 7574 6520 6e61 6d65 3d22 7365 7276 6963  ute name=\"servic\n-0000c7c0: 6573 2220 7479 7065 3d22 7873 643a 7374  es\" type=\"xsd:st\n-0000c7d0: 7269 6e67 223e 0a20 2020 2020 2020 2020  ring\">.         \n-0000c7e0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000c7f0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000c800: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c810: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-0000c820: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000c830: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c840: 2020 2020 3c21 5b43 4441 5441 5b20 5468      <![CDATA[ Th\n-0000c850: 6520 7365 7276 6963 6520 6e61 6d65 7320  e service names \n-0000c860: 7468 6174 2074 6865 2044 7562 626f 2069  that the Dubbo i\n-0000c870: 6e74 6572 6661 6365 2073 7562 7363 7269  nterface subscri\n-0000c880: 6265 642e 0a20 2020 2020 2020 2020 2020  bed..           \n-0000c890: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c8a0: 2049 6620 6974 2069 7320 6120 6d75 6c74   If it is a mult\n-0000c8b0: 6970 6c65 2d76 616c 7565 732c 2074 6865  iple-values, the\n-0000c8c0: 2063 6f6e 7465 6e74 2077 696c 6c20 6265   content will be\n-0000c8d0: 2061 2063 6f6d 6d61 2d64 656c 696d 6974   a comma-delimit\n-0000c8e0: 6564 2053 7472 696e 672e 205d 5d3e 0a20  ed String. ]]>. \n-0000c8f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c900: 2020 2020 2020 203c 2f78 7364 3a64 6f63         </xsd:doc\n-0000c910: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-0000c920: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000c930: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-0000c940: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000c950: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-0000c960: 653e 0a20 2020 2020 2020 2020 2020 2020  e>.             \n-0000c970: 2020 203c 7873 643a 616e 7941 7474 7269     <xsd:anyAttri\n-0000c980: 6275 7465 206e 616d 6573 7061 6365 3d22  bute namespace=\"\n-0000c990: 2323 6f74 6865 7222 2070 726f 6365 7373  ##other\" process\n-0000c9a0: 436f 6e74 656e 7473 3d22 6c61 7822 2f3e  Contents=\"lax\"/>\n-0000c9b0: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-0000c9c0: 7364 3a65 7874 656e 7369 6f6e 3e0a 2020  sd:extension>.  \n-0000c9d0: 2020 2020 2020 3c2f 7873 643a 636f 6d70        </xsd:comp\n-0000c9e0: 6c65 7843 6f6e 7465 6e74 3e0a 2020 2020  lexContent>.    \n-0000c9f0: 3c2f 7873 643a 636f 6d70 6c65 7854 7970  </xsd:complexTyp\n-0000ca00: 653e 0a0a 2020 2020 3c78 7364 3a63 6f6d  e>..    <xsd:com\n-0000ca10: 706c 6578 5479 7065 206e 616d 653d 2270  plexType name=\"p\n-0000ca20: 726f 746f 636f 6c54 7970 6522 3e0a 2020  rotocolType\">.  \n-0000ca30: 2020 2020 2020 3c78 7364 3a73 6571 7565        <xsd:seque\n-0000ca40: 6e63 6520 6d69 6e4f 6363 7572 733d 2230  nce minOccurs=\"0\n-0000ca50: 2220 6d61 784f 6363 7572 733d 2275 6e62  \" maxOccurs=\"unb\n-0000ca60: 6f75 6e64 6564 223e 0a20 2020 2020 2020  ounded\">.       \n-0000ca70: 2020 2020 203c 7873 643a 656c 656d 656e       <xsd:elemen\n-0000ca80: 7420 7265 663d 2270 6172 616d 6574 6572  t ref=\"parameter\n-0000ca90: 2220 6d69 6e4f 6363 7572 733d 2230 2220  \" minOccurs=\"0\" \n-0000caa0: 6d61 784f 6363 7572 733d 2275 6e62 6f75  maxOccurs=\"unbou\n-0000cab0: 6e64 6564 222f 3e0a 2020 2020 2020 2020  nded\"/>.        \n-0000cac0: 3c2f 7873 643a 7365 7175 656e 6365 3e0a  </xsd:sequence>.\n-0000cad0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-0000cae0: 7269 6275 7465 206e 616d 653d 2269 6422  ribute name=\"id\"\n-0000caf0: 2074 7970 653d 2278 7364 3a49 4422 3e0a   type=\"xsd:ID\">.\n-0000cb00: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000cb10: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000cb20: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-0000cb30: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000cb40: 3c21 5b43 4441 5441 5b20 5468 6520 756e  <![CDATA[ The un\n-0000cb50: 6971 7565 2069 6465 6e74 6966 6965 7220  ique identifier \n-0000cb60: 666f 7220 6120 6265 616e 2e20 5d5d 3e3c  for a bean. ]]><\n-0000cb70: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-0000cb80: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000cb90: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-0000cba0: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-0000cbb0: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-0000cbc0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-0000cbd0: 6520 6e61 6d65 3d22 6e61 6d65 2220 7479  e name=\"name\" ty\n-0000cbe0: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-0000cbf0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-0000cc00: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-0000cc10: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000cc20: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-0000cc30: 3e3c 215b 4344 4154 415b 2054 6865 2070  ><![CDATA[ The p\n-0000cc40: 726f 746f 636f 6c20 6e61 6d65 2e20 5d5d  rotocol name. ]]\n-0000cc50: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-0000cc60: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000cc70: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-0000cc80: 6f6e 3e0a 2020 2020 2020 2020 3c2f 7873  on>.        </xs\n-0000cc90: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-0000cca0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-0000ccb0: 7574 6520 6e61 6d65 3d22 686f 7374 2220  ute name=\"host\" \n-0000ccc0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-0000ccd0: 223e 0a20 2020 2020 2020 2020 2020 203c  \">.            <\n-0000cce0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-0000ccf0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000cd00: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-0000cd10: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-0000cd20: 2073 6572 7669 6365 2068 6f73 742e 205d   service host. ]\n-0000cd30: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-0000cd40: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000cd50: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-0000cd60: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-0000cd70: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-0000cd80: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-0000cd90: 6275 7465 206e 616d 653d 2270 6f72 7422  bute name=\"port\"\n-0000cda0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-0000cdb0: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-0000cdc0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-0000cdd0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000cde0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-0000cdf0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-0000ce00: 6520 7365 7276 6963 6520 706f 7274 2e20  e service port. \n-0000ce10: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-0000ce20: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000ce30: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-0000ce40: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-0000ce50: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-0000ce60: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-0000ce70: 6962 7574 6520 6e61 6d65 3d22 7468 7265  ibute name=\"thre\n-0000ce80: 6164 706f 6f6c 2220 7479 7065 3d22 7873  adpool\" type=\"xs\n-0000ce90: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-0000cea0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-0000ceb0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000cec0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-0000ced0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-0000cee0: 4154 415b 2054 6865 2074 6872 6561 6420  ATA[ The thread \n-0000cef0: 706f 6f6c 2074 7970 652e 205d 5d3e 3c2f  pool type. ]]></\n-0000cf00: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000cf10: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-0000cf20: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-0000cf30: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-0000cf40: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-0000cf50: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-0000cf60: 206e 616d 653d 2274 6872 6561 646e 616d   name=\"threadnam\n-0000cf70: 6522 2074 7970 653d 2278 7364 3a73 7472  e\" type=\"xsd:str\n-0000cf80: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-0000cf90: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-0000cfa0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000cfb0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-0000cfc0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-0000cfd0: 5468 6520 7468 7265 6164 2070 6f6f 6c20  The thread pool \n-0000cfe0: 6e61 6d65 2e20 5d5d 3e3c 2f78 7364 3a64  name. ]]></xsd:d\n-0000cff0: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-0000d000: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-0000d010: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000d020: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-0000d030: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-0000d040: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-0000d050: 3d22 7468 7265 6164 7322 2074 7970 653d  =\"threads\" type=\n-0000d060: 2278 7364 3a73 7472 696e 6722 3e0a 2020  \"xsd:string\">.  \n-0000d070: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-0000d080: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000d090: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000d0a0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-0000d0b0: 5b43 4441 5441 5b20 5468 6520 7468 7265  [CDATA[ The thre\n-0000d0c0: 6164 2070 6f6f 6c20 7369 7a65 2e20 5d5d  ad pool size. ]]\n-0000d0d0: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-0000d0e0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000d0f0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-0000d100: 6f6e 3e0a 2020 2020 2020 2020 3c2f 7873  on>.        </xs\n-0000d110: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-0000d120: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-0000d130: 7574 6520 6e61 6d65 3d22 636f 7265 7468  ute name=\"coreth\n-0000d140: 7265 6164 7322 2074 7970 653d 2278 7364  reads\" type=\"xsd\n-0000d150: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-0000d160: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-0000d170: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000d180: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-0000d190: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-0000d1a0: 5441 5b20 5468 6520 7468 7265 6164 2070  TA[ The thread p\n-0000d1b0: 6f6f 6c20 636f 7265 2074 6872 6561 6473  ool core threads\n-0000d1c0: 2073 697a 652e 205d 5d3e 3c2f 7873 643a   size. ]]></xsd:\n-0000d1d0: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-0000d1e0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000d1f0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000d200: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-0000d210: 6275 7465 3e0a 2020 2020 2020 2020 3c78  bute>.        <x\n-0000d220: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-0000d230: 653d 2269 6f74 6872 6561 6473 2220 7479  e=\"iothreads\" ty\n-0000d240: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-0000d250: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-0000d260: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-0000d270: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000d280: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-0000d290: 3e3c 215b 4344 4154 415b 2054 6865 2049  ><![CDATA[ The I\n-0000d2a0: 4f20 7468 7265 6164 2070 6f6f 6c20 7369  O thread pool si\n-0000d2b0: 7a65 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ze. ]]></xsd:doc\n-0000d2c0: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-0000d2d0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-0000d2e0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000d2f0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-0000d300: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-0000d310: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-0000d320: 616c 6976 6522 2074 7970 653d 2278 7364  alive\" type=\"xsd\n-0000d330: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-0000d340: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-0000d350: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000d360: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-0000d370: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-0000d380: 5441 5b20 5468 6520 7468 7265 6164 2070  TA[ The thread p\n-0000d390: 6f6f 6c20 6b65 6570 416c 6976 6554 696d  ool keepAliveTim\n-0000d3a0: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n-0000d3b0: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-0000d3c0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-0000d3d0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000d3e0: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-0000d3f0: 3e0a 2020 2020 2020 2020 3c78 7364 3a61  >.        <xsd:a\n-0000d400: 7474 7269 6275 7465 206e 616d 653d 2271  ttribute name=\"q\n-0000d410: 7565 7565 7322 2074 7970 653d 2278 7364  ueues\" type=\"xsd\n-0000d420: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-0000d430: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-0000d440: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000d450: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-0000d460: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-0000d470: 5441 5b20 5468 6520 7468 7265 6164 2070  TA[ The thread p\n-0000d480: 6f6f 6c20 7175 6575 6520 7369 7a65 2e20  ool queue size. \n-0000d490: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-0000d4a0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000d4b0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-0000d4c0: 7469 6f6e 3e0a 2020 2020 2020 2020 3c2f  tion>.        </\n-0000d4d0: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-0000d4e0: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-0000d4f0: 6962 7574 6520 6e61 6d65 3d22 6163 6365  ibute name=\"acce\n-0000d500: 7074 7322 2074 7970 653d 2278 7364 3a73  pts\" type=\"xsd:s\n-0000d510: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-0000d520: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-0000d530: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000d540: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-0000d550: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-0000d560: 5b20 5468 6520 6163 6365 7074 2063 6f6e  [ The accept con\n-0000d570: 6e65 6374 696f 6e20 7369 7a65 2e20 5d5d  nection size. ]]\n-0000d580: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-0000d590: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000d5a0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-0000d5b0: 6f6e 3e0a 2020 2020 2020 2020 3c2f 7873  on>.        </xs\n-0000d5c0: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-0000d5d0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-0000d5e0: 7574 6520 6e61 6d65 3d22 636f 6465 6322  ute name=\"codec\"\n-0000d5f0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-0000d600: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-0000d610: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-0000d620: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000d630: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-0000d640: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-0000d650: 6520 7072 6f74 6f63 6f6c 2063 6f64 6563  e protocol codec\n-0000d660: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-0000d670: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-0000d680: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-0000d690: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000d6a0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-0000d6b0: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n-0000d6c0: 7472 6962 7574 6520 6e61 6d65 3d22 7365  tribute name=\"se\n-0000d6d0: 7269 616c 697a 6174 696f 6e22 2074 7970  rialization\" typ\n-0000d6e0: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-0000d6f0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000d700: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000d710: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-0000d720: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000d730: 3c21 5b43 4441 5441 5b20 5468 6520 7072  <![CDATA[ The pr\n-0000d740: 6f74 6f63 6f6c 2073 6572 6961 6c69 7a61  otocol serializa\n-0000d750: 7469 6f6e 2e20 5d5d 3e3c 2f78 7364 3a64  tion. ]]></xsd:d\n-0000d760: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-0000d770: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-0000d780: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-0000d790: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-0000d7a0: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-0000d7b0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-0000d7c0: 3d22 6b65 6570 616c 6976 6522 2074 7970  =\"keepalive\" typ\n-0000d7d0: 653d 2278 7364 3a62 6f6f 6c65 616e 223e  e=\"xsd:boolean\">\n-0000d7e0: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-0000d7f0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-0000d800: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000d810: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-0000d820: 3e3c 215b 4344 4154 415b 2054 6865 2070  ><![CDATA[ The p\n-0000d830: 726f 746f 636f 6c20 6b65 6570 416c 6976  rotocol keepAliv\n-0000d840: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n-0000d850: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-0000d860: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-0000d870: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000d880: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-0000d890: 3e0a 2020 2020 2020 2020 3c78 7364 3a61  >.        <xsd:a\n-0000d8a0: 7474 7269 6275 7465 206e 616d 653d 226f  ttribute name=\"o\n-0000d8b0: 7074 696d 697a 6572 2220 7479 7065 3d22  ptimizer\" type=\"\n-0000d8c0: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-0000d8d0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-0000d8e0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000d8f0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-0000d900: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-0000d910: 4344 4154 415b 2054 6865 2073 6572 6961  CDATA[ The seria\n-0000d920: 6c69 7a61 7469 6f6e 206f 7074 696d 697a  lization optimiz\n-0000d930: 6572 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  er. ]]></xsd:doc\n-0000d940: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-0000d950: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-0000d960: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000d970: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-0000d980: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-0000d990: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-0000d9a0: 6578 7465 6e73 696f 6e22 2074 7970 653d  extension\" type=\n-0000d9b0: 2278 7364 3a73 7472 696e 6722 3e0a 2020  \"xsd:string\">.  \n-0000d9c0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-0000d9d0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000d9e0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000d9f0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-0000da00: 5b43 4441 5441 5b20 5468 6520 6578 7465  [CDATA[ The exte\n-0000da10: 6e73 696f 6e20 666f 7220 7072 6f74 6f63  nsion for protoc\n-0000da20: 6f6c 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ol. ]]></xsd:doc\n-0000da30: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-0000da40: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-0000da50: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000da60: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-0000da70: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-0000da80: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-0000da90: 6368 6172 7365 7422 2074 7970 653d 2278  charset\" type=\"x\n-0000daa0: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-0000dab0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-0000dac0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000dad0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-0000dae0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-0000daf0: 4441 5441 5b20 5468 6520 7072 6f74 6f63  DATA[ The protoc\n-0000db00: 6f6c 2063 6861 7273 6574 2e20 5d5d 3e3c  ol charset. ]]><\n-0000db10: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-0000db20: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000db30: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-0000db40: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-0000db50: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-0000db60: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-0000db70: 6520 6e61 6d65 3d22 7061 796c 6f61 6422  e name=\"payload\"\n-0000db80: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-0000db90: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-0000dba0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-0000dbb0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000dbc0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-0000dbd0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-0000dbe0: 6520 6d61 7820 7061 796c 6f61 642e 205d  e max payload. ]\n-0000dbf0: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-0000dc00: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000dc10: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-0000dc20: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-0000dc30: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-0000dc40: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-0000dc50: 6275 7465 206e 616d 653d 2262 7566 6665  bute name=\"buffe\n-0000dc60: 7222 2074 7970 653d 2278 7364 3a73 7472  r\" type=\"xsd:str\n-0000dc70: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-0000dc80: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-0000dc90: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000dca0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-0000dcb0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-0000dcc0: 5468 6520 6275 6666 6572 2073 697a 652e  The buffer size.\n-0000dcd0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-0000dce0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-0000dcf0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-0000dd00: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-0000dd10: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-0000dd20: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-0000dd30: 7269 6275 7465 206e 616d 653d 2268 6561  ribute name=\"hea\n-0000dd40: 7274 6265 6174 2220 7479 7065 3d22 7873  rtbeat\" type=\"xs\n-0000dd50: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-0000dd60: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-0000dd70: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000dd80: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-0000dd90: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-0000dda0: 4154 415b 2054 6865 2068 6561 7274 6265  ATA[ The heartbe\n-0000ddb0: 6174 2069 6e74 6572 7661 6c2e 286d 7329  at interval.(ms)\n-0000ddc0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-0000ddd0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-0000dde0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-0000ddf0: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-0000de00: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-0000de10: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-0000de20: 7269 6275 7465 206e 616d 653d 2261 6363  ribute name=\"acc\n-0000de30: 6573 736c 6f67 2220 7479 7065 3d22 7873  esslog\" type=\"xs\n-0000de40: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-0000de50: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-0000de60: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000de70: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-0000de80: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-0000de90: 4154 415b 2054 6865 2070 726f 746f 636f  ATA[ The protoco\n-0000dea0: 6c20 7573 6520 6163 6365 7373 6c6f 672e  l use accesslog.\n-0000deb0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-0000dec0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-0000ded0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-0000dee0: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-0000def0: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-0000df00: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-0000df10: 7269 6275 7465 206e 616d 653d 2274 656c  ribute name=\"tel\n-0000df20: 6e65 7422 2074 7970 653d 2278 7364 3a73  net\" type=\"xsd:s\n-0000df30: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-0000df40: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-0000df50: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000df60: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-0000df70: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-0000df80: 5b20 5468 6520 7072 6f74 6f63 6f6c 2075  [ The protocol u\n-0000df90: 7365 2074 656c 6e65 7420 636f 6d6d 616e  se telnet comman\n-0000dfa0: 6473 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ds. ]]></xsd:doc\n-0000dfb0: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-0000dfc0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-0000dfd0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000dfe0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-0000dff0: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-0000e000: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-0000e010: 7072 6f6d 7074 2220 7479 7065 3d22 7873  prompt\" type=\"xs\n-0000e020: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-0000e030: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-0000e040: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000e050: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-0000e060: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-0000e070: 4154 415b 2054 6865 2070 726f 746f 636f  ATA[ The protoco\n-0000e080: 6c20 7465 6c6e 6574 2070 726f 6d70 742e  l telnet prompt.\n-0000e090: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-0000e0a0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-0000e0b0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-0000e0c0: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-0000e0d0: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-0000e0e0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-0000e0f0: 7269 6275 7465 206e 616d 653d 2273 7461  ribute name=\"sta\n-0000e100: 7475 7322 2074 7970 653d 2278 7364 3a73  tus\" type=\"xsd:s\n-0000e110: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-0000e120: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-0000e130: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000e140: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-0000e150: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-0000e160: 5b20 5468 6520 7072 6f74 6f63 6f6c 2063  [ The protocol c\n-0000e170: 6865 636b 2073 7461 7475 732e 205d 5d3e  heck status. ]]>\n-0000e180: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-0000e190: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000e1a0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-0000e1b0: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-0000e1c0: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-0000e1d0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-0000e1e0: 7465 206e 616d 653d 2274 7261 6e73 706f  te name=\"transpo\n-0000e1f0: 7274 6572 2220 7479 7065 3d22 7873 643a  rter\" type=\"xsd:\n-0000e200: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-0000e210: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-0000e220: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000e230: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-0000e240: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-0000e250: 415b 2054 6865 2070 726f 746f 636f 6c20  A[ The protocol \n-0000e260: 7472 616e 7370 6f72 7465 7220 7479 7065  transporter type\n-0000e270: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-0000e280: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-0000e290: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-0000e2a0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000e2b0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-0000e2c0: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n-0000e2d0: 7472 6962 7574 6520 6e61 6d65 3d22 6578  tribute name=\"ex\n-0000e2e0: 6368 616e 6765 7222 2074 7970 653d 2278  changer\" type=\"x\n-0000e2f0: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-0000e300: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-0000e310: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000e320: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-0000e330: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-0000e340: 4441 5441 5b20 5468 6520 7072 6f74 6f63  DATA[ The protoc\n-0000e350: 6f6c 2065 7863 6861 6e67 6572 2074 7970  ol exchanger typ\n-0000e360: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n-0000e370: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-0000e380: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-0000e390: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000e3a0: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-0000e3b0: 3e0a 2020 2020 2020 2020 3c78 7364 3a61  >.        <xsd:a\n-0000e3c0: 7474 7269 6275 7465 206e 616d 653d 2264  ttribute name=\"d\n-0000e3d0: 6973 7061 7468 6572 2220 7479 7065 3d22  ispather\" type=\"\n-0000e3e0: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-0000e3f0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-0000e400: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000e410: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-0000e420: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-0000e430: 4344 4154 415b 2044 6570 7265 6361 7465  CDATA[ Deprecate\n-0000e440: 642e 2072 6570 6c61 6365 2074 6f20 2264  d. replace to \"d\n-0000e450: 6973 7061 7463 6865 7222 2e20 5d5d 3e3c  ispatcher\". ]]><\n-0000e460: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-0000e470: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000e480: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-0000e490: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-0000e4a0: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-0000e4b0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-0000e4c0: 6520 6e61 6d65 3d22 6469 7370 6174 6368  e name=\"dispatch\n-0000e4d0: 6572 2220 7479 7065 3d22 7873 643a 7374  er\" type=\"xsd:st\n-0000e4e0: 7269 6e67 223e 0a20 2020 2020 2020 2020  ring\">.         \n-0000e4f0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-0000e500: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000e510: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-0000e520: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n-0000e530: 2054 6865 2070 726f 746f 636f 6c20 6469   The protocol di\n-0000e540: 7370 6174 6368 6572 2074 7970 652e 205d  spatcher type. ]\n-0000e550: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-0000e560: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000e570: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-0000e580: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-0000e590: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-0000e5a0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-0000e5b0: 6275 7465 206e 616d 653d 226e 6574 776f  bute name=\"netwo\n-0000e5c0: 726b 6572 2220 7479 7065 3d22 7873 643a  rker\" type=\"xsd:\n-0000e5d0: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-0000e5e0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-0000e5f0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000e600: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-0000e610: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-0000e620: 415b 2054 6865 2070 726f 746f 636f 6c20  A[ The protocol \n-0000e630: 226e 6574 776f 726b 6572 2220 7479 7065  \"networker\" type\n-0000e640: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-0000e650: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-0000e660: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-0000e670: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000e680: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-0000e690: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n-0000e6a0: 7472 6962 7574 6520 6e61 6d65 3d22 7365  tribute name=\"se\n-0000e6b0: 7276 6572 2220 7479 7065 3d22 7873 643a  rver\" type=\"xsd:\n-0000e6c0: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-0000e6d0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-0000e6e0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000e6f0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-0000e700: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-0000e710: 415b 2054 6865 2070 726f 746f 636f 6c20  A[ The protocol \n-0000e720: 7365 7276 6572 2074 7970 652e 205d 5d3e  server type. ]]>\n-0000e730: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-0000e740: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000e750: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-0000e760: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-0000e770: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-0000e780: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-0000e790: 7465 206e 616d 653d 2263 6c69 656e 7422  te name=\"client\"\n-0000e7a0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-0000e7b0: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-0000e7c0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-0000e7d0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000e7e0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-0000e7f0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-0000e800: 6520 7072 6f74 6f63 6f6c 2063 6c69 656e  e protocol clien\n-0000e810: 7420 7479 7065 2e20 5d5d 3e3c 2f78 7364  t type. ]]></xsd\n-0000e820: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-0000e830: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-0000e840: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-0000e850: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-0000e860: 6962 7574 653e 0a20 2020 2020 2020 203c  ibute>.        <\n-0000e870: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-0000e880: 6d65 3d22 7061 7468 2220 7479 7065 3d22  me=\"path\" type=\"\n-0000e890: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-0000e8a0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-0000e8b0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000e8c0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-0000e8d0: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-0000e8e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000e8f0: 2020 3c21 5b43 4441 5441 5b20 5468 6520    <![CDATA[ The \n-0000e900: 7072 6f74 6f63 6f6c 2063 6f6e 7465 7874  protocol context\n-0000e910: 2070 6174 682e 2072 6570 6c61 6365 2074   path. replace t\n-0000e920: 6f20 2263 6f6e 7465 7874 7061 7468 222e  o \"contextpath\".\n-0000e930: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-0000e940: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-0000e950: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-0000e960: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-0000e970: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-0000e980: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-0000e990: 7269 6275 7465 206e 616d 653d 2263 6f6e  ribute name=\"con\n-0000e9a0: 7465 7874 7061 7468 2220 7479 7065 3d22  textpath\" type=\"\n-0000e9b0: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-0000e9c0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-0000e9d0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000e9e0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-0000e9f0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-0000ea00: 4344 4154 415b 2054 6865 2070 726f 746f  CDATA[ The proto\n-0000ea10: 636f 6c20 636f 6e74 6578 7420 7061 7468  col context path\n-0000ea20: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-0000ea30: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-0000ea40: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-0000ea50: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000ea60: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-0000ea70: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n-0000ea80: 7472 6962 7574 6520 6e61 6d65 3d22 7265  tribute name=\"re\n-0000ea90: 6769 7374 6572 2220 7479 7065 3d22 7873  gister\" type=\"xs\n-0000eaa0: 643a 7374 7269 6e67 223e 0a20 2020 2020  d:string\">.     \n-0000eab0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-0000eac0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000ead0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n-0000eae0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n-0000eaf0: 4154 415b 2054 6865 2070 726f 746f 636f  ATA[ The protoco\n-0000eb00: 6c20 6361 6e20 6265 2072 6567 6973 7465  l can be registe\n-0000eb10: 7220 746f 2072 6567 6973 7472 792e 205d  r to registry. ]\n-0000eb20: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-0000eb30: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000eb40: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n-0000eb50: 696f 6e3e 0a20 2020 2020 2020 203c 2f78  ion>.        </x\n-0000eb60: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-0000eb70: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n-0000eb80: 6275 7465 206e 616d 653d 2264 6566 6175  bute name=\"defau\n-0000eb90: 6c74 2220 7479 7065 3d22 7873 643a 7374  lt\" type=\"xsd:st\n-0000eba0: 7269 6e67 223e 0a20 2020 2020 2020 2020  ring\">.         \n-0000ebb0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-0000ebc0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000ebd0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-0000ebe0: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n-0000ebf0: 2049 7320 6465 6661 756c 742e 205d 5d3e   Is default. ]]>\n-0000ec00: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-0000ec10: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000ec20: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-0000ec30: 6e3e 0a20 2020 2020 2020 203c 2f78 7364  n>.        </xsd\n-0000ec40: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-0000ec50: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-0000ec60: 7465 206e 616d 653d 2273 736c 2d65 6e61  te name=\"ssl-ena\n-0000ec70: 626c 6564 2220 7479 7065 3d22 7873 643a  bled\" type=\"xsd:\n-0000ec80: 626f 6f6c 6561 6e22 3e0a 2020 2020 2020  boolean\">.      \n-0000ec90: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-0000eca0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000ecb0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-0000ecc0: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-0000ecd0: 5441 5b20 4973 2053 534c 2065 6e61 626c  TA[ Is SSL enabl\n-0000ece0: 6564 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ed. ]]></xsd:doc\n-0000ecf0: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-0000ed00: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-0000ed10: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000ed20: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-0000ed30: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-0000ed40: 616e 7941 7474 7269 6275 7465 206e 616d  anyAttribute nam\n-0000ed50: 6573 7061 6365 3d22 2323 6f74 6865 7222  espace=\"##other\"\n-0000ed60: 2070 726f 6365 7373 436f 6e74 656e 7473   processContents\n-0000ed70: 3d22 6c61 7822 2f3e 0a20 2020 203c 2f78  =\"lax\"/>.    </x\n-0000ed80: 7364 3a63 6f6d 706c 6578 5479 7065 3e0a  sd:complexType>.\n-0000ed90: 0a20 2020 203c 7873 643a 636f 6d70 6c65  .    <xsd:comple\n-0000eda0: 7854 7970 6520 6e61 6d65 3d22 7072 6f76  xType name=\"prov\n-0000edb0: 6964 6572 5479 7065 223e 0a20 2020 2020  iderType\">.     \n-0000edc0: 2020 203c 7873 643a 636f 6d70 6c65 7843     <xsd:complexC\n-0000edd0: 6f6e 7465 6e74 3e0a 2020 2020 2020 2020  ontent>.        \n-0000ede0: 2020 2020 3c78 7364 3a65 7874 656e 7369      <xsd:extensi\n-0000edf0: 6f6e 2062 6173 653d 2261 6273 7472 6163  on base=\"abstrac\n-0000ee00: 7453 6572 7669 6365 5479 7065 223e 0a20  tServiceType\">. \n-0000ee10: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000ee20: 7873 643a 6368 6f69 6365 206d 696e 4f63  xsd:choice minOc\n-0000ee30: 6375 7273 3d22 3022 206d 6178 4f63 6375  curs=\"0\" maxOccu\n-0000ee40: 7273 3d22 756e 626f 756e 6465 6422 3e0a  rs=\"unbounded\">.\n-0000ee50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000ee60: 2020 2020 3c78 7364 3a65 6c65 6d65 6e74      <xsd:element\n-0000ee70: 2072 6566 3d22 7365 7276 6963 6522 206d   ref=\"service\" m\n-0000ee80: 696e 4f63 6375 7273 3d22 3022 206d 6178  inOccurs=\"0\" max\n-0000ee90: 4f63 6375 7273 3d22 756e 626f 756e 6465  Occurs=\"unbounde\n-0000eea0: 6422 2f3e 0a20 2020 2020 2020 2020 2020  d\"/>.           \n-0000eeb0: 2020 2020 2020 2020 203c 7873 643a 656c           <xsd:el\n-0000eec0: 656d 656e 7420 7265 663d 2270 6172 616d  ement ref=\"param\n-0000eed0: 6574 6572 2220 6d69 6e4f 6363 7572 733d  eter\" minOccurs=\n-0000eee0: 2230 2220 6d61 784f 6363 7572 733d 2275  \"0\" maxOccurs=\"u\n-0000eef0: 6e62 6f75 6e64 6564 222f 3e0a 2020 2020  nbounded\"/>.    \n-0000ef00: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-0000ef10: 643a 6368 6f69 6365 3e0a 2020 2020 2020  d:choice>.      \n-0000ef20: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-0000ef30: 7474 7269 6275 7465 206e 616d 653d 2268  ttribute name=\"h\n-0000ef40: 6f73 7422 2074 7970 653d 2278 7364 3a73  ost\" type=\"xsd:s\n-0000ef50: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-0000ef60: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000ef70: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000ef80: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000ef90: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-0000efa0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-0000efb0: 5b20 5468 6520 7365 7276 6963 6520 686f  [ The service ho\n-0000efc0: 7374 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  st. ]]></xsd:doc\n-0000efd0: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-0000efe0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000eff0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-0000f000: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000f010: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-0000f020: 653e 0a20 2020 2020 2020 2020 2020 2020  e>.             \n-0000f030: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-0000f040: 6520 6e61 6d65 3d22 706f 7274 2220 7479  e name=\"port\" ty\n-0000f050: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-0000f060: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000f070: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-0000f080: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000f090: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000f0a0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-0000f0b0: 3e3c 215b 4344 4154 415b 2054 6865 2073  ><![CDATA[ The s\n-0000f0c0: 6572 7669 6365 2070 6f72 742e 205d 5d3e  ervice port. ]]>\n-0000f0d0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-0000f0e0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000f0f0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-0000f100: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000f110: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000f120: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-0000f130: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000f140: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-0000f150: 2274 6872 6561 6470 6f6f 6c22 2074 7970  \"threadpool\" typ\n-0000f160: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-0000f170: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f180: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-0000f190: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000f1a0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000c650: 2020 2020 2020 203c 746f 6f6c 3a65 7870         <tool:exp\n+0000c660: 6563 7465 642d 7479 7065 2074 7970 653d  ected-type type=\n+0000c670: 226a 6176 612e 6c61 6e67 2e43 6c61 7373  \"java.lang.Class\n+0000c680: 222f 3e0d 0a20 2020 2020 2020 2020 2020  \"/>..           \n+0000c690: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c6a0: 203c 2f74 6f6f 6c3a 616e 6e6f 7461 7469   </tool:annotati\n+0000c6b0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000c6c0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+0000c6d0: 7364 3a61 7070 696e 666f 3e0d 0a20 2020  sd:appinfo>..   \n+0000c6e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c6f0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+0000c700: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000c710: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+0000c720: 7574 653e 0d0a 2020 2020 2020 2020 2020  ute>..          \n+0000c730: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+0000c740: 6275 7465 206e 616d 653d 2275 726c 2220  bute name=\"url\" \n+0000c750: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+0000c760: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+0000c770: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+0000c780: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000c790: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c7a0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+0000c7b0: 7469 6f6e 3e3c 215b 4344 4154 415b 2050  tion><![CDATA[ P\n+0000c7c0: 726f 7669 6465 7220 6c69 7374 2075 726c  rovider list url\n+0000c7d0: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+0000c7e0: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+0000c7f0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000c800: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+0000c810: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000c820: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+0000c830: 653e 0d0a 2020 2020 2020 2020 2020 2020  e>..            \n+0000c840: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+0000c850: 7465 206e 616d 653d 2263 6c69 656e 7422  te name=\"client\"\n+0000c860: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+0000c870: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+0000c880: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+0000c890: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000c8a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c8b0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+0000c8c0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+0000c8d0: 5072 6f74 6f63 6f6c 2074 7261 6e73 706f  Protocol transpo\n+0000c8e0: 7274 2063 6c69 656e 7420 7479 7065 2e20  rt client type. \n+0000c8f0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+0000c900: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000c910: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+0000c920: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+0000c930: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c940: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+0000c950: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000c960: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+0000c970: 206e 616d 653d 2263 6f6e 7375 6d65 7222   name=\"consumer\"\n+0000c980: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+0000c990: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+0000c9a0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+0000c9b0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000c9c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000c9d0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+0000c9e0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+0000c9f0: 4465 7072 6563 6174 6564 2e20 5265 706c  Deprecated. Repl\n+0000ca00: 6163 6520 746f 2072 6566 6572 656e 6365  ace to reference\n+0000ca10: 2d64 6566 6175 6c74 2e20 5d5d 3e3c 2f78  -default. ]]></x\n+0000ca20: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+0000ca30: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000ca40: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+0000ca50: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000ca60: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+0000ca70: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+0000ca80: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000ca90: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+0000caa0: 2270 726f 746f 636f 6c22 2074 7970 653d  \"protocol\" type=\n+0000cab0: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+0000cac0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000cad0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+0000cae0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000caf0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000cb00: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000cb10: 3c21 5b43 4441 5441 5b20 5468 6520 7365  <![CDATA[ The se\n+0000cb20: 7276 6963 6520 7072 6f74 6f63 6f6c 2e20  rvice protocol. \n+0000cb30: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+0000cb40: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000cb50: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+0000cb60: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+0000cb70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000cb80: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+0000cb90: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000cba0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+0000cbb0: 206e 616d 653d 2273 6572 7669 6365 7322   name=\"services\"\n+0000cbc0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+0000cbd0: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+0000cbe0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+0000cbf0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000cc00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000cc10: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+0000cc20: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000cc30: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000cc40: 2020 2020 3c21 5b43 4441 5441 5b20 5468      <![CDATA[ Th\n+0000cc50: 6520 7365 7276 6963 6520 6e61 6d65 7320  e service names \n+0000cc60: 7468 6174 2074 6865 2044 7562 626f 2069  that the Dubbo i\n+0000cc70: 6e74 6572 6661 6365 2073 7562 7363 7269  nterface subscri\n+0000cc80: 6265 642e 0d0a 2020 2020 2020 2020 2020  bed...          \n+0000cc90: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000cca0: 2020 4966 2069 7420 6973 2061 206d 756c    If it is a mul\n+0000ccb0: 7469 706c 652d 7661 6c75 6573 2c20 7468  tiple-values, th\n+0000ccc0: 6520 636f 6e74 656e 7420 7769 6c6c 2062  e content will b\n+0000ccd0: 6520 6120 636f 6d6d 612d 6465 6c69 6d69  e a comma-delimi\n+0000cce0: 7465 6420 5374 7269 6e67 2e20 5d5d 3e0d  ted String. ]]>.\n+0000ccf0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000cd00: 2020 2020 2020 2020 203c 2f78 7364 3a64           </xsd:d\n+0000cd10: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+0000cd20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000cd30: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+0000cd40: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000cd50: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+0000cd60: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+0000cd70: 2020 2020 2020 2020 3c78 7364 3a61 6e79          <xsd:any\n+0000cd80: 4174 7472 6962 7574 6520 6e61 6d65 7370  Attribute namesp\n+0000cd90: 6163 653d 2223 236f 7468 6572 2220 7072  ace=\"##other\" pr\n+0000cda0: 6f63 6573 7343 6f6e 7465 6e74 733d 226c  ocessContents=\"l\n+0000cdb0: 6178 222f 3e0d 0a20 2020 2020 2020 2020  ax\"/>..         \n+0000cdc0: 2020 203c 2f78 7364 3a65 7874 656e 7369     </xsd:extensi\n+0000cdd0: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+0000cde0: 7364 3a63 6f6d 706c 6578 436f 6e74 656e  sd:complexConten\n+0000cdf0: 743e 0d0a 2020 2020 3c2f 7873 643a 636f  t>..    </xsd:co\n+0000ce00: 6d70 6c65 7854 7970 653e 0d0a 0d0a 2020  mplexType>....  \n+0000ce10: 2020 3c78 7364 3a63 6f6d 706c 6578 5479    <xsd:complexTy\n+0000ce20: 7065 206e 616d 653d 2270 726f 746f 636f  pe name=\"protoco\n+0000ce30: 6c54 7970 6522 3e0d 0a20 2020 2020 2020  lType\">..       \n+0000ce40: 203c 7873 643a 7365 7175 656e 6365 206d   <xsd:sequence m\n+0000ce50: 696e 4f63 6375 7273 3d22 3022 206d 6178  inOccurs=\"0\" max\n+0000ce60: 4f63 6375 7273 3d22 756e 626f 756e 6465  Occurs=\"unbounde\n+0000ce70: 6422 3e0d 0a20 2020 2020 2020 2020 2020  d\">..           \n+0000ce80: 203c 7873 643a 656c 656d 656e 7420 7265   <xsd:element re\n+0000ce90: 663d 2270 6172 616d 6574 6572 2220 6d69  f=\"parameter\" mi\n+0000cea0: 6e4f 6363 7572 733d 2230 2220 6d61 784f  nOccurs=\"0\" maxO\n+0000ceb0: 6363 7572 733d 2275 6e62 6f75 6e64 6564  ccurs=\"unbounded\n+0000cec0: 222f 3e0d 0a20 2020 2020 2020 203c 2f78  \"/>..        </x\n+0000ced0: 7364 3a73 6571 7565 6e63 653e 0d0a 2020  sd:sequence>..  \n+0000cee0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+0000cef0: 6275 7465 206e 616d 653d 2269 6422 2074  bute name=\"id\" t\n+0000cf00: 7970 653d 2278 7364 3a49 4422 3e0d 0a20  ype=\"xsd:ID\">.. \n+0000cf10: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000cf20: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000cf30: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000cf40: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000cf50: 3c21 5b43 4441 5441 5b20 5468 6520 756e  <![CDATA[ The un\n+0000cf60: 6971 7565 2069 6465 6e74 6966 6965 7220  ique identifier \n+0000cf70: 666f 7220 6120 6265 616e 2e20 5d5d 3e3c  for a bean. ]]><\n+0000cf80: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+0000cf90: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000cfa0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+0000cfb0: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+0000cfc0: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+0000cfd0: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+0000cfe0: 6275 7465 206e 616d 653d 226e 616d 6522  bute name=\"name\"\n+0000cff0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+0000d000: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+0000d010: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+0000d020: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000d030: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+0000d040: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+0000d050: 5468 6520 7072 6f74 6f63 6f6c 206e 616d  The protocol nam\n+0000d060: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n+0000d070: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+0000d080: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+0000d090: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000d0a0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+0000d0b0: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+0000d0c0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+0000d0d0: 3d22 686f 7374 2220 7479 7065 3d22 7873  =\"host\" type=\"xs\n+0000d0e0: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+0000d0f0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+0000d100: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000d110: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+0000d120: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+0000d130: 4344 4154 415b 2054 6865 2073 6572 7669  CDATA[ The servi\n+0000d140: 6365 2068 6f73 742e 205d 5d3e 3c2f 7873  ce host. ]]></xs\n+0000d150: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000d160: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+0000d170: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000d180: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+0000d190: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+0000d1a0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+0000d1b0: 6520 6e61 6d65 3d22 706f 7274 2220 7479  e name=\"port\" ty\n+0000d1c0: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+0000d1d0: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+0000d1e0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+0000d1f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000d200: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+0000d210: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+0000d220: 2073 6572 7669 6365 2070 6f72 742e 205d   service port. ]\n+0000d230: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+0000d240: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000d250: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+0000d260: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+0000d270: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+0000d280: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n+0000d290: 7472 6962 7574 6520 6e61 6d65 3d22 7468  tribute name=\"th\n+0000d2a0: 7265 6164 706f 6f6c 2220 7479 7065 3d22  readpool\" type=\"\n+0000d2b0: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+0000d2c0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+0000d2d0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000d2e0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000d2f0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+0000d300: 215b 4344 4154 415b 2054 6865 2074 6872  ![CDATA[ The thr\n+0000d310: 6561 6420 706f 6f6c 2074 7970 652e 205d  ead pool type. ]\n+0000d320: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+0000d330: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000d340: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+0000d350: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+0000d360: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+0000d370: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n+0000d380: 7472 6962 7574 6520 6e61 6d65 3d22 7468  tribute name=\"th\n+0000d390: 7265 6164 6e61 6d65 2220 7479 7065 3d22  readname\" type=\"\n+0000d3a0: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+0000d3b0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+0000d3c0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000d3d0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000d3e0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+0000d3f0: 215b 4344 4154 415b 2054 6865 2074 6872  ![CDATA[ The thr\n+0000d400: 6561 6420 706f 6f6c 206e 616d 652e 205d  ead pool name. ]\n+0000d410: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+0000d420: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000d430: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+0000d440: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+0000d450: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+0000d460: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n+0000d470: 7472 6962 7574 6520 6e61 6d65 3d22 7468  tribute name=\"th\n+0000d480: 7265 6164 7322 2074 7970 653d 2278 7364  reads\" type=\"xsd\n+0000d490: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+0000d4a0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+0000d4b0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000d4c0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+0000d4d0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+0000d4e0: 4441 5441 5b20 5468 6520 7468 7265 6164  DATA[ The thread\n+0000d4f0: 2070 6f6f 6c20 7369 7a65 2e20 5d5d 3e3c   pool size. ]]><\n+0000d500: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+0000d510: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000d520: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+0000d530: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+0000d540: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+0000d550: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+0000d560: 6275 7465 206e 616d 653d 2263 6f72 6574  bute name=\"coret\n+0000d570: 6872 6561 6473 2220 7479 7065 3d22 7873  hreads\" type=\"xs\n+0000d580: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+0000d590: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+0000d5a0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000d5b0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+0000d5c0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+0000d5d0: 4344 4154 415b 2054 6865 2074 6872 6561  CDATA[ The threa\n+0000d5e0: 6420 706f 6f6c 2063 6f72 6520 7468 7265  d pool core thre\n+0000d5f0: 6164 7320 7369 7a65 2e20 5d5d 3e3c 2f78  ads size. ]]></x\n+0000d600: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+0000d610: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+0000d620: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+0000d630: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+0000d640: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+0000d650: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+0000d660: 7465 206e 616d 653d 2269 6f74 6872 6561  te name=\"iothrea\n+0000d670: 6473 2220 7479 7065 3d22 7873 643a 7374  ds\" type=\"xsd:st\n+0000d680: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+0000d690: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+0000d6a0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000d6b0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+0000d6c0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+0000d6d0: 415b 2054 6865 2049 4f20 7468 7265 6164  A[ The IO thread\n+0000d6e0: 2070 6f6f 6c20 7369 7a65 2e20 5d5d 3e3c   pool size. ]]><\n+0000d6f0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+0000d700: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000d710: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+0000d720: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+0000d730: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+0000d740: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+0000d750: 6275 7465 206e 616d 653d 2261 6c69 7665  bute name=\"alive\n+0000d760: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+0000d770: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+0000d780: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+0000d790: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000d7a0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+0000d7b0: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+0000d7c0: 2054 6865 2074 6872 6561 6420 706f 6f6c   The thread pool\n+0000d7d0: 206b 6565 7041 6c69 7665 5469 6d65 2e20   keepAliveTime. \n+0000d7e0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+0000d7f0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000d800: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+0000d810: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000d820: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+0000d830: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+0000d840: 7474 7269 6275 7465 206e 616d 653d 2271  ttribute name=\"q\n+0000d850: 7565 7565 7322 2074 7970 653d 2278 7364  ueues\" type=\"xsd\n+0000d860: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+0000d870: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+0000d880: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000d890: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+0000d8a0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+0000d8b0: 4441 5441 5b20 5468 6520 7468 7265 6164  DATA[ The thread\n+0000d8c0: 2070 6f6f 6c20 7175 6575 6520 7369 7a65   pool queue size\n+0000d8d0: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+0000d8e0: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+0000d8f0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+0000d900: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000d910: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+0000d920: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+0000d930: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+0000d940: 2261 6363 6570 7473 2220 7479 7065 3d22  \"accepts\" type=\"\n+0000d950: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+0000d960: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+0000d970: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000d980: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000d990: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+0000d9a0: 215b 4344 4154 415b 2054 6865 2061 6363  ![CDATA[ The acc\n+0000d9b0: 6570 7420 636f 6e6e 6563 7469 6f6e 2073  ept connection s\n+0000d9c0: 697a 652e 205d 5d3e 3c2f 7873 643a 646f  ize. ]]></xsd:do\n+0000d9d0: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+0000d9e0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+0000d9f0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000da00: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+0000da10: 6275 7465 3e0d 0a20 2020 2020 2020 203c  bute>..        <\n+0000da20: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+0000da30: 6d65 3d22 636f 6465 6322 2074 7970 653d  me=\"codec\" type=\n+0000da40: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+0000da50: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000da60: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000da70: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000da80: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000da90: 3c21 5b43 4441 5441 5b20 5468 6520 7072  <![CDATA[ The pr\n+0000daa0: 6f74 6f63 6f6c 2063 6f64 6563 2e20 5d5d  otocol codec. ]]\n+0000dab0: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+0000dac0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000dad0: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+0000dae0: 696f 6e3e 0d0a 2020 2020 2020 2020 3c2f  ion>..        </\n+0000daf0: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+0000db00: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+0000db10: 7269 6275 7465 206e 616d 653d 2273 6572  ribute name=\"ser\n+0000db20: 6961 6c69 7a61 7469 6f6e 2220 7479 7065  ialization\" type\n+0000db30: 3d22 7873 643a 7374 7269 6e67 223e 0d0a  =\"xsd:string\">..\n+0000db40: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000db50: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+0000db60: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+0000db70: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+0000db80: 3e3c 215b 4344 4154 415b 2054 6865 2070  ><![CDATA[ The p\n+0000db90: 726f 746f 636f 6c20 7365 7269 616c 697a  rotocol serializ\n+0000dba0: 6174 696f 6e2e 205d 5d3e 3c2f 7873 643a  ation. ]]></xsd:\n+0000dbb0: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+0000dbc0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+0000dbd0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+0000dbe0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+0000dbf0: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+0000dc00: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+0000dc10: 6e61 6d65 3d22 6b65 6570 616c 6976 6522  name=\"keepalive\"\n+0000dc20: 2074 7970 653d 2278 7364 3a62 6f6f 6c65   type=\"xsd:boole\n+0000dc30: 616e 223e 0d0a 2020 2020 2020 2020 2020  an\">..          \n+0000dc40: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+0000dc50: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000dc60: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+0000dc70: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+0000dc80: 2054 6865 2070 726f 746f 636f 6c20 6b65   The protocol ke\n+0000dc90: 6570 416c 6976 652e 205d 5d3e 3c2f 7873  epAlive. ]]></xs\n+0000dca0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000dcb0: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+0000dcc0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000dcd0: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+0000dce0: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+0000dcf0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+0000dd00: 6520 6e61 6d65 3d22 6f70 7469 6d69 7a65  e name=\"optimize\n+0000dd10: 7222 2074 7970 653d 2278 7364 3a73 7472  r\" type=\"xsd:str\n+0000dd20: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+0000dd30: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+0000dd40: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000dd50: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+0000dd60: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+0000dd70: 5b20 5468 6520 7365 7269 616c 697a 6174  [ The serializat\n+0000dd80: 696f 6e20 6f70 7469 6d69 7a65 722e 205d  ion optimizer. ]\n+0000dd90: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+0000dda0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000ddb0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+0000ddc0: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+0000ddd0: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+0000dde0: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n+0000ddf0: 7472 6962 7574 6520 6e61 6d65 3d22 6578  tribute name=\"ex\n+0000de00: 7465 6e73 696f 6e22 2074 7970 653d 2278  tension\" type=\"x\n+0000de10: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+0000de20: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+0000de30: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000de40: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000de50: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+0000de60: 5b43 4441 5441 5b20 5468 6520 6578 7465  [CDATA[ The exte\n+0000de70: 6e73 696f 6e20 666f 7220 7072 6f74 6f63  nsion for protoc\n+0000de80: 6f6c 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ol. ]]></xsd:doc\n+0000de90: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+0000dea0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+0000deb0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000dec0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+0000ded0: 7574 653e 0d0a 2020 2020 2020 2020 3c78  ute>..        <x\n+0000dee0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+0000def0: 653d 2263 6861 7273 6574 2220 7479 7065  e=\"charset\" type\n+0000df00: 3d22 7873 643a 7374 7269 6e67 223e 0d0a  =\"xsd:string\">..\n+0000df10: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000df20: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+0000df30: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+0000df40: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+0000df50: 3e3c 215b 4344 4154 415b 2054 6865 2070  ><![CDATA[ The p\n+0000df60: 726f 746f 636f 6c20 6368 6172 7365 742e  rotocol charset.\n+0000df70: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+0000df80: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+0000df90: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+0000dfa0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000dfb0: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+0000dfc0: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+0000dfd0: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+0000dfe0: 7061 796c 6f61 6422 2074 7970 653d 2278  payload\" type=\"x\n+0000dff0: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+0000e000: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+0000e010: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000e020: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000e030: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+0000e040: 5b43 4441 5441 5b20 5468 6520 6d61 7820  [CDATA[ The max \n+0000e050: 7061 796c 6f61 642e 205d 5d3e 3c2f 7873  payload. ]]></xs\n+0000e060: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000e070: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+0000e080: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000e090: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+0000e0a0: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+0000e0b0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+0000e0c0: 6520 6e61 6d65 3d22 6275 6666 6572 2220  e name=\"buffer\" \n+0000e0d0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+0000e0e0: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+0000e0f0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+0000e100: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+0000e110: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+0000e120: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+0000e130: 6865 2062 7566 6665 7220 7369 7a65 2e20  he buffer size. \n+0000e140: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+0000e150: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+0000e160: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+0000e170: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000e180: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+0000e190: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+0000e1a0: 7474 7269 6275 7465 206e 616d 653d 2268  ttribute name=\"h\n+0000e1b0: 6561 7274 6265 6174 2220 7479 7065 3d22  eartbeat\" type=\"\n+0000e1c0: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+0000e1d0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+0000e1e0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000e1f0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000e200: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+0000e210: 215b 4344 4154 415b 2054 6865 2068 6561  ![CDATA[ The hea\n+0000e220: 7274 6265 6174 2069 6e74 6572 7661 6c2e  rtbeat interval.\n+0000e230: 286d 7329 205d 5d3e 3c2f 7873 643a 646f  (ms) ]]></xsd:do\n+0000e240: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+0000e250: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+0000e260: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000e270: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+0000e280: 6275 7465 3e0d 0a20 2020 2020 2020 203c  bute>..        <\n+0000e290: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+0000e2a0: 6d65 3d22 6163 6365 7373 6c6f 6722 2074  me=\"accesslog\" t\n+0000e2b0: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+0000e2c0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+0000e2d0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000e2e0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000e2f0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+0000e300: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+0000e310: 6520 7072 6f74 6f63 6f6c 2075 7365 2061  e protocol use a\n+0000e320: 6363 6573 736c 6f67 2e20 5d5d 3e3c 2f78  ccesslog. ]]></x\n+0000e330: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+0000e340: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+0000e350: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+0000e360: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+0000e370: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+0000e380: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+0000e390: 7465 206e 616d 653d 2274 656c 6e65 7422  te name=\"telnet\"\n+0000e3a0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+0000e3b0: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+0000e3c0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+0000e3d0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000e3e0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+0000e3f0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+0000e400: 5468 6520 7072 6f74 6f63 6f6c 2075 7365  The protocol use\n+0000e410: 2074 656c 6e65 7420 636f 6d6d 616e 6473   telnet commands\n+0000e420: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+0000e430: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+0000e440: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+0000e450: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000e460: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+0000e470: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+0000e480: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+0000e490: 2270 726f 6d70 7422 2074 7970 653d 2278  \"prompt\" type=\"x\n+0000e4a0: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+0000e4b0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+0000e4c0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000e4d0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000e4e0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+0000e4f0: 5b43 4441 5441 5b20 5468 6520 7072 6f74  [CDATA[ The prot\n+0000e500: 6f63 6f6c 2074 656c 6e65 7420 7072 6f6d  ocol telnet prom\n+0000e510: 7074 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  pt. ]]></xsd:doc\n+0000e520: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+0000e530: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+0000e540: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000e550: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+0000e560: 7574 653e 0d0a 2020 2020 2020 2020 3c78  ute>..        <x\n+0000e570: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+0000e580: 653d 2273 7461 7475 7322 2074 7970 653d  e=\"status\" type=\n+0000e590: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+0000e5a0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000e5b0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000e5c0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000e5d0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000e5e0: 3c21 5b43 4441 5441 5b20 5468 6520 7072  <![CDATA[ The pr\n+0000e5f0: 6f74 6f63 6f6c 2063 6865 636b 2073 7461  otocol check sta\n+0000e600: 7475 732e 205d 5d3e 3c2f 7873 643a 646f  tus. ]]></xsd:do\n+0000e610: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+0000e620: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+0000e630: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000e640: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+0000e650: 6275 7465 3e0d 0a20 2020 2020 2020 203c  bute>..        <\n+0000e660: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+0000e670: 6d65 3d22 7472 616e 7370 6f72 7465 7222  me=\"transporter\"\n+0000e680: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+0000e690: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+0000e6a0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+0000e6b0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000e6c0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+0000e6d0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+0000e6e0: 5468 6520 7072 6f74 6f63 6f6c 2074 7261  The protocol tra\n+0000e6f0: 6e73 706f 7274 6572 2074 7970 652e 205d  nsporter type. ]\n+0000e700: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+0000e710: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000e720: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+0000e730: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+0000e740: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+0000e750: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n+0000e760: 7472 6962 7574 6520 6e61 6d65 3d22 6578  tribute name=\"ex\n+0000e770: 6368 616e 6765 7222 2074 7970 653d 2278  changer\" type=\"x\n+0000e780: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+0000e790: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+0000e7a0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000e7b0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000e7c0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+0000e7d0: 5b43 4441 5441 5b20 5468 6520 7072 6f74  [CDATA[ The prot\n+0000e7e0: 6f63 6f6c 2065 7863 6861 6e67 6572 2074  ocol exchanger t\n+0000e7f0: 7970 652e 205d 5d3e 3c2f 7873 643a 646f  ype. ]]></xsd:do\n+0000e800: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+0000e810: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+0000e820: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000e830: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+0000e840: 6275 7465 3e0d 0a20 2020 2020 2020 203c  bute>..        <\n+0000e850: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+0000e860: 6d65 3d22 6469 7370 6174 6865 7222 2074  me=\"dispather\" t\n+0000e870: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+0000e880: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+0000e890: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000e8a0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000e8b0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+0000e8c0: 696f 6e3e 3c21 5b43 4441 5441 5b20 4465  ion><![CDATA[ De\n+0000e8d0: 7072 6563 6174 6564 2e20 7265 706c 6163  precated. replac\n+0000e8e0: 6520 746f 2022 6469 7370 6174 6368 6572  e to \"dispatcher\n+0000e8f0: 222e 205d 5d3e 3c2f 7873 643a 646f 6375  \". ]]></xsd:docu\n+0000e900: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+0000e910: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+0000e920: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000e930: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+0000e940: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+0000e950: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+0000e960: 3d22 6469 7370 6174 6368 6572 2220 7479  =\"dispatcher\" ty\n+0000e970: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+0000e980: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+0000e990: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+0000e9a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000e9b0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+0000e9c0: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+0000e9d0: 2070 726f 746f 636f 6c20 6469 7370 6174   protocol dispat\n+0000e9e0: 6368 6572 2074 7970 652e 205d 5d3e 3c2f  cher type. ]]></\n+0000e9f0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+0000ea00: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000ea10: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+0000ea20: 3e0d 0a20 2020 2020 2020 203c 2f78 7364  >..        </xsd\n+0000ea30: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+0000ea40: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+0000ea50: 7574 6520 6e61 6d65 3d22 6e65 7477 6f72  ute name=\"networ\n+0000ea60: 6b65 7222 2074 7970 653d 2278 7364 3a73  ker\" type=\"xsd:s\n+0000ea70: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+0000ea80: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+0000ea90: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000eaa0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+0000eab0: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+0000eac0: 5441 5b20 5468 6520 7072 6f74 6f63 6f6c  TA[ The protocol\n+0000ead0: 2022 6e65 7477 6f72 6b65 7222 2074 7970   \"networker\" typ\n+0000eae0: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n+0000eaf0: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+0000eb00: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+0000eb10: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000eb20: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+0000eb30: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+0000eb40: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+0000eb50: 3d22 7365 7276 6572 2220 7479 7065 3d22  =\"server\" type=\"\n+0000eb60: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+0000eb70: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+0000eb80: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000eb90: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000eba0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+0000ebb0: 215b 4344 4154 415b 2054 6865 2070 726f  ![CDATA[ The pro\n+0000ebc0: 746f 636f 6c20 7365 7276 6572 2074 7970  tocol server typ\n+0000ebd0: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n+0000ebe0: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+0000ebf0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+0000ec00: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000ec10: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+0000ec20: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+0000ec30: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+0000ec40: 3d22 636c 6965 6e74 2220 7479 7065 3d22  =\"client\" type=\"\n+0000ec50: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+0000ec60: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+0000ec70: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000ec80: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000ec90: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+0000eca0: 215b 4344 4154 415b 2054 6865 2070 726f  ![CDATA[ The pro\n+0000ecb0: 746f 636f 6c20 636c 6965 6e74 2074 7970  tocol client typ\n+0000ecc0: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n+0000ecd0: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+0000ece0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+0000ecf0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000ed00: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+0000ed10: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+0000ed20: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+0000ed30: 3d22 7061 7468 2220 7479 7065 3d22 7873  =\"path\" type=\"xs\n+0000ed40: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+0000ed50: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+0000ed60: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000ed70: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+0000ed80: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+0000ed90: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000eda0: 2020 203c 215b 4344 4154 415b 2054 6865     <![CDATA[ The\n+0000edb0: 2070 726f 746f 636f 6c20 636f 6e74 6578   protocol contex\n+0000edc0: 7420 7061 7468 2e20 7265 706c 6163 6520  t path. replace \n+0000edd0: 746f 2022 636f 6e74 6578 7470 6174 6822  to \"contextpath\"\n+0000ede0: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n+0000edf0: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+0000ee00: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+0000ee10: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000ee20: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n+0000ee30: 653e 0d0a 2020 2020 2020 2020 3c78 7364  e>..        <xsd\n+0000ee40: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+0000ee50: 2263 6f6e 7465 7874 7061 7468 2220 7479  \"contextpath\" ty\n+0000ee60: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+0000ee70: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+0000ee80: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+0000ee90: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000eea0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+0000eeb0: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+0000eec0: 2070 726f 746f 636f 6c20 636f 6e74 6578   protocol contex\n+0000eed0: 7420 7061 7468 2e20 5d5d 3e3c 2f78 7364  t path. ]]></xsd\n+0000eee0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+0000eef0: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n+0000ef00: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+0000ef10: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+0000ef20: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+0000ef30: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+0000ef40: 206e 616d 653d 2272 6567 6973 7465 7222   name=\"register\"\n+0000ef50: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+0000ef60: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+0000ef70: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+0000ef80: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000ef90: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+0000efa0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+0000efb0: 5468 6520 7072 6f74 6f63 6f6c 2063 616e  The protocol can\n+0000efc0: 2062 6520 7265 6769 7374 6572 2074 6f20   be register to \n+0000efd0: 7265 6769 7374 7279 2e20 5d5d 3e3c 2f78  registry. ]]></x\n+0000efe0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+0000eff0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+0000f000: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+0000f010: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+0000f020: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+0000f030: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+0000f040: 7465 206e 616d 653d 2264 6566 6175 6c74  te name=\"default\n+0000f050: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n+0000f060: 6e67 223e 0d0a 2020 2020 2020 2020 2020  ng\">..          \n+0000f070: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+0000f080: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000f090: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+0000f0a0: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+0000f0b0: 2049 7320 6465 6661 756c 742e 205d 5d3e   Is default. ]]>\n+0000f0c0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+0000f0d0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000f0e0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+0000f0f0: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+0000f100: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+0000f110: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+0000f120: 6962 7574 6520 6e61 6d65 3d22 7373 6c2d  ibute name=\"ssl-\n+0000f130: 656e 6162 6c65 6422 2074 7970 653d 2278  enabled\" type=\"x\n+0000f140: 7364 3a62 6f6f 6c65 616e 223e 0d0a 2020  sd:boolean\">..  \n+0000f150: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+0000f160: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000f170: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000f180: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+0000f190: 215b 4344 4154 415b 2049 7320 5353 4c20  ![CDATA[ Is SSL \n+0000f1a0: 656e 6162 6c65 642e 205d 5d3e 3c2f 7873  enabled. ]]></xs\n 0000f1b0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000f1c0: 3c21 5b43 4441 5441 5b20 5468 6520 7468  <![CDATA[ The th\n-0000f1d0: 7265 6164 2070 6f6f 6c20 7479 7065 2e20  read pool type. \n-0000f1e0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-0000f1f0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000f200: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-0000f210: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-0000f220: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-0000f230: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-0000f240: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000f250: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-0000f260: 6d65 3d22 7468 7265 6164 6e61 6d65 2220  me=\"threadname\" \n-0000f270: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-0000f280: 223e 0a20 2020 2020 2020 2020 2020 2020  \">.             \n-0000f290: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-0000f2a0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000f2b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f2c0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-0000f2d0: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-0000f2e0: 2074 6872 6561 6420 706f 6f6c 206e 616d   thread pool nam\n-0000f2f0: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n-0000f300: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-0000f310: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000f320: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-0000f330: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000f340: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-0000f350: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000f360: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-0000f370: 206e 616d 653d 2274 6872 6561 6473 2220   name=\"threads\" \n-0000f380: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-0000f390: 223e 0a20 2020 2020 2020 2020 2020 2020  \">.             \n-0000f3a0: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-0000f3b0: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000f3c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f3d0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-0000f3e0: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-0000f3f0: 2074 6872 6561 6420 706f 6f6c 2073 697a   thread pool siz\n-0000f400: 652e 205d 5d3e 3c2f 7873 643a 646f 6375  e. ]]></xsd:docu\n-0000f410: 6d65 6e74 6174 696f 6e3e 0a20 2020 2020  mentation>.     \n-0000f420: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000f430: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-0000f440: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-0000f450: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n-0000f460: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000f470: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n-0000f480: 206e 616d 653d 2269 6f74 6872 6561 6473   name=\"iothreads\n-0000f490: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-0000f4a0: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-0000f4b0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-0000f4c0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-0000f4d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f4e0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-0000f4f0: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-0000f500: 6865 2049 4f20 7468 7265 6164 2070 6f6f  he IO thread poo\n-0000f510: 6c20 7369 7a65 2e20 5d5d 3e3c 2f78 7364  l size. ]]></xsd\n-0000f520: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-0000f530: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f540: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-0000f550: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000f560: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-0000f570: 6962 7574 653e 0a20 2020 2020 2020 2020  ibute>.         \n-0000f580: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-0000f590: 6962 7574 6520 6e61 6d65 3d22 616c 6976  ibute name=\"aliv\n-0000f5a0: 6522 2074 7970 653d 2278 7364 3a73 7472  e\" type=\"xsd:str\n-0000f5b0: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-0000f5c0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-0000f5d0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000f5e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f5f0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-0000f600: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-0000f610: 5468 6520 7468 7265 6164 2070 6f6f 6c20  The thread pool \n-0000f620: 6b65 6570 416c 6976 6554 696d 652e 205d  keepAliveTime. ]\n-0000f630: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-0000f640: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-0000f650: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-0000f660: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000f670: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-0000f680: 7364 3a61 7474 7269 6275 7465 3e0a 2020  sd:attribute>.  \n-0000f690: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000f6a0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-0000f6b0: 653d 2271 7565 7565 7322 2074 7970 653d  e=\"queues\" type=\n-0000f6c0: 2278 7364 3a73 7472 696e 6722 3e0a 2020  \"xsd:string\">.  \n-0000f6d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f6e0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-0000f6f0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000f700: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-0000f710: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-0000f720: 5b43 4441 5441 5b20 5468 6520 7468 7265  [CDATA[ The thre\n-0000f730: 6164 2070 6f6f 6c20 7175 6575 6520 7369  ad pool queue si\n-0000f740: 7a65 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ze. ]]></xsd:doc\n-0000f750: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-0000f760: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f770: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-0000f780: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000f790: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-0000f7a0: 653e 0a20 2020 2020 2020 2020 2020 2020  e>.             \n-0000f7b0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-0000f7c0: 6520 6e61 6d65 3d22 6163 6365 7074 7322  e name=\"accepts\"\n-0000f7d0: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n-0000f7e0: 6722 3e0a 2020 2020 2020 2020 2020 2020  g\">.            \n-0000f7f0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-0000f800: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000f810: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f820: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n-0000f830: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n-0000f840: 6520 6163 6365 7074 2063 6f6e 6e65 6374  e accept connect\n-0000f850: 696f 6e20 7369 7a65 2e20 5d5d 3e3c 2f78  ion size. ]]></x\n-0000f860: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-0000f870: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-0000f880: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-0000f890: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000f8a0: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n-0000f8b0: 7472 6962 7574 653e 0a20 2020 2020 2020  tribute>.       \n-0000f8c0: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n-0000f8d0: 7472 6962 7574 6520 6e61 6d65 3d22 636f  tribute name=\"co\n-0000f8e0: 6465 6322 2074 7970 653d 2278 7364 3a73  dec\" type=\"xsd:s\n-0000f8f0: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-0000f900: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000f910: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-0000f920: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f930: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-0000f940: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-0000f950: 5b20 5468 6520 7072 6f74 6f63 6f6c 2063  [ The protocol c\n-0000f960: 6f64 6563 2e20 5d5d 3e3c 2f78 7364 3a64  odec. ]]></xsd:d\n-0000f970: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-0000f980: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000f990: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-0000f9a0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000f9b0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-0000f9c0: 7574 653e 0a20 2020 2020 2020 2020 2020  ute>.           \n-0000f9d0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-0000f9e0: 7574 6520 6e61 6d65 3d22 6368 6172 7365  ute name=\"charse\n-0000f9f0: 7422 2074 7970 653d 2278 7364 3a73 7472  t\" type=\"xsd:str\n-0000fa00: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-0000fa10: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-0000fa20: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000fa30: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000fa40: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-0000fa50: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-0000fa60: 5468 6520 7072 6f74 6f63 6f6c 2063 6861  The protocol cha\n-0000fa70: 7273 6574 2e20 5d5d 3e3c 2f78 7364 3a64  rset. ]]></xsd:d\n-0000fa80: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-0000fa90: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000faa0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-0000fab0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000fac0: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-0000fad0: 7574 653e 0a20 2020 2020 2020 2020 2020  ute>.           \n-0000fae0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-0000faf0: 7574 6520 6e61 6d65 3d22 7061 796c 6f61  ute name=\"payloa\n-0000fb00: 6422 2074 7970 653d 2278 7364 3a73 7472  d\" type=\"xsd:str\n-0000fb10: 696e 6722 3e0a 2020 2020 2020 2020 2020  ing\">.          \n-0000fb20: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-0000fb30: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-0000fb40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000fb50: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-0000fb60: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-0000fb70: 5468 6520 6d61 7820 7061 796c 6f61 642e  The max payload.\n-0000fb80: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-0000fb90: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-0000fba0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-0000fbb0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000fbc0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000fbd0: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-0000fbe0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000fbf0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-0000fc00: 616d 653d 2262 7566 6665 7222 2074 7970  ame=\"buffer\" typ\n-0000fc10: 653d 2278 7364 3a73 7472 696e 6722 3e0a  e=\"xsd:string\">.\n-0000fc20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000fc30: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-0000fc40: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-0000fc50: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-0000fc60: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-0000fc70: 3c21 5b43 4441 5441 5b20 5468 6520 6275  <![CDATA[ The bu\n-0000fc80: 6666 6572 2073 697a 652e 205d 5d3e 3c2f  ffer size. ]]></\n-0000fc90: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-0000fca0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-0000fcb0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-0000fcc0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-0000fcd0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-0000fce0: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-0000fcf0: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-0000fd00: 7474 7269 6275 7465 206e 616d 653d 2274  ttribute name=\"t\n-0000fd10: 7261 6e73 706f 7274 6572 2220 7479 7065  ransporter\" type\n-0000fd20: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-0000fd30: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000fd40: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-0000fd50: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-0000fd60: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-0000fd70: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-0000fd80: 215b 4344 4154 415b 2054 6865 2070 726f  ![CDATA[ The pro\n-0000fd90: 746f 636f 6c20 7472 616e 7370 6f72 7465  tocol transporte\n-0000fda0: 7220 7479 7065 2e20 5d5d 3e3c 2f78 7364  r type. ]]></xsd\n-0000fdb0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-0000fdc0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000fdd0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-0000fde0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-0000fdf0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-0000fe00: 6962 7574 653e 0a20 2020 2020 2020 2020  ibute>.         \n-0000fe10: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-0000fe20: 6962 7574 6520 6e61 6d65 3d22 6578 6368  ibute name=\"exch\n-0000fe30: 616e 6765 7222 2074 7970 653d 2278 7364  anger\" type=\"xsd\n-0000fe40: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-0000fe50: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-0000fe60: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000fe70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000fe80: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-0000fe90: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-0000fea0: 5441 5b20 5468 6520 7072 6f74 6f63 6f6c  TA[ The protocol\n-0000feb0: 2065 7863 6861 6e67 6572 2074 7970 652e   exchanger type.\n-0000fec0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-0000fed0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-0000fee0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-0000fef0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-0000ff00: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-0000ff10: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-0000ff20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000ff30: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-0000ff40: 616d 653d 2264 6973 7061 7468 6572 2220  ame=\"dispather\" \n-0000ff50: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n-0000ff60: 223e 0a20 2020 2020 2020 2020 2020 2020  \">.             \n-0000ff70: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n-0000ff80: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-0000ff90: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-0000ffa0: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-0000ffb0: 6f6e 3e3c 215b 4344 4154 415b 2044 6570  on><![CDATA[ Dep\n-0000ffc0: 7265 6361 7465 642e 2072 6570 6c61 6365  recated. replace\n-0000ffd0: 2074 6f20 2264 6973 7061 7463 6865 7222   to \"dispatcher\"\n-0000ffe0: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-0000fff0: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00010000: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-00010010: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n+0000f1c0: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+0000f1d0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000f1e0: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+0000f1f0: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+0000f200: 2020 203c 7873 643a 616e 7941 7474 7269     <xsd:anyAttri\n+0000f210: 6275 7465 206e 616d 6573 7061 6365 3d22  bute namespace=\"\n+0000f220: 2323 6f74 6865 7222 2070 726f 6365 7373  ##other\" process\n+0000f230: 436f 6e74 656e 7473 3d22 6c61 7822 2f3e  Contents=\"lax\"/>\n+0000f240: 0d0a 2020 2020 3c2f 7873 643a 636f 6d70  ..    </xsd:comp\n+0000f250: 6c65 7854 7970 653e 0d0a 0d0a 2020 2020  lexType>....    \n+0000f260: 3c78 7364 3a63 6f6d 706c 6578 5479 7065  <xsd:complexType\n+0000f270: 206e 616d 653d 2270 726f 7669 6465 7254   name=\"providerT\n+0000f280: 7970 6522 3e0d 0a20 2020 2020 2020 203c  ype\">..        <\n+0000f290: 7873 643a 636f 6d70 6c65 7843 6f6e 7465  xsd:complexConte\n+0000f2a0: 6e74 3e0d 0a20 2020 2020 2020 2020 2020  nt>..           \n+0000f2b0: 203c 7873 643a 6578 7465 6e73 696f 6e20   <xsd:extension \n+0000f2c0: 6261 7365 3d22 6162 7374 7261 6374 5365  base=\"abstractSe\n+0000f2d0: 7276 6963 6554 7970 6522 3e0d 0a20 2020  rviceType\">..   \n+0000f2e0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000f2f0: 643a 6368 6f69 6365 206d 696e 4f63 6375  d:choice minOccu\n+0000f300: 7273 3d22 3022 206d 6178 4f63 6375 7273  rs=\"0\" maxOccurs\n+0000f310: 3d22 756e 626f 756e 6465 6422 3e0d 0a20  =\"unbounded\">.. \n+0000f320: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000f330: 2020 203c 7873 643a 656c 656d 656e 7420     <xsd:element \n+0000f340: 7265 663d 2273 6572 7669 6365 2220 6d69  ref=\"service\" mi\n+0000f350: 6e4f 6363 7572 733d 2230 2220 6d61 784f  nOccurs=\"0\" maxO\n+0000f360: 6363 7572 733d 2275 6e62 6f75 6e64 6564  ccurs=\"unbounded\n+0000f370: 222f 3e0d 0a20 2020 2020 2020 2020 2020  \"/>..           \n+0000f380: 2020 2020 2020 2020 203c 7873 643a 656c           <xsd:el\n+0000f390: 656d 656e 7420 7265 663d 2270 6172 616d  ement ref=\"param\n+0000f3a0: 6574 6572 2220 6d69 6e4f 6363 7572 733d  eter\" minOccurs=\n+0000f3b0: 2230 2220 6d61 784f 6363 7572 733d 2275  \"0\" maxOccurs=\"u\n+0000f3c0: 6e62 6f75 6e64 6564 222f 3e0d 0a20 2020  nbounded\"/>..   \n+0000f3d0: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+0000f3e0: 7364 3a63 686f 6963 653e 0d0a 2020 2020  sd:choice>..    \n+0000f3f0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000f400: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+0000f410: 2268 6f73 7422 2074 7970 653d 2278 7364  \"host\" type=\"xsd\n+0000f420: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+0000f430: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000f440: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000f450: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000f460: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+0000f470: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+0000f480: 4441 5441 5b20 5468 6520 7365 7276 6963  DATA[ The servic\n+0000f490: 6520 686f 7374 2e20 5d5d 3e3c 2f78 7364  e host. ]]></xsd\n+0000f4a0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+0000f4b0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000f4c0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+0000f4d0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+0000f4e0: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+0000f4f0: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+0000f500: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+0000f510: 7474 7269 6275 7465 206e 616d 653d 2270  ttribute name=\"p\n+0000f520: 6f72 7422 2074 7970 653d 2278 7364 3a73  ort\" type=\"xsd:s\n+0000f530: 7472 696e 6722 3e0d 0a20 2020 2020 2020  tring\">..       \n+0000f540: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000f550: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+0000f560: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000f570: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+0000f580: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+0000f590: 5441 5b20 5468 6520 7365 7276 6963 6520  TA[ The service \n+0000f5a0: 706f 7274 2e20 5d5d 3e3c 2f78 7364 3a64  port. ]]></xsd:d\n+0000f5b0: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+0000f5c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000f5d0: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+0000f5e0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000f5f0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+0000f600: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+0000f610: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+0000f620: 7269 6275 7465 206e 616d 653d 2274 6872  ribute name=\"thr\n+0000f630: 6561 6470 6f6f 6c22 2074 7970 653d 2278  eadpool\" type=\"x\n+0000f640: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+0000f650: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000f660: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+0000f670: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000f680: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000f690: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+0000f6a0: 5b43 4441 5441 5b20 5468 6520 7468 7265  [CDATA[ The thre\n+0000f6b0: 6164 2070 6f6f 6c20 7479 7065 2e20 5d5d  ad pool type. ]]\n+0000f6c0: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+0000f6d0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000f6e0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+0000f6f0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+0000f700: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+0000f710: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+0000f720: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000f730: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+0000f740: 616d 653d 2274 6872 6561 646e 616d 6522  ame=\"threadname\"\n+0000f750: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+0000f760: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+0000f770: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+0000f780: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000f790: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000f7a0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+0000f7b0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+0000f7c0: 5468 6520 7468 7265 6164 2070 6f6f 6c20  The thread pool \n+0000f7d0: 6e61 6d65 2e20 5d5d 3e3c 2f78 7364 3a64  name. ]]></xsd:d\n+0000f7e0: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+0000f7f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000f800: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+0000f810: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000f820: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+0000f830: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+0000f840: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+0000f850: 7269 6275 7465 206e 616d 653d 2274 6872  ribute name=\"thr\n+0000f860: 6561 6473 2220 7479 7065 3d22 7873 643a  eads\" type=\"xsd:\n+0000f870: 7374 7269 6e67 223e 0d0a 2020 2020 2020  string\">..      \n+0000f880: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+0000f890: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+0000f8a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000f8b0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+0000f8c0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+0000f8d0: 4154 415b 2054 6865 2074 6872 6561 6420  ATA[ The thread \n+0000f8e0: 706f 6f6c 2073 697a 652e 205d 5d3e 3c2f  pool size. ]]></\n+0000f8f0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+0000f900: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000f910: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+0000f920: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000f930: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+0000f940: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+0000f950: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000f960: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+0000f970: 3d22 696f 7468 7265 6164 7322 2074 7970  =\"iothreads\" typ\n+0000f980: 653d 2278 7364 3a73 7472 696e 6722 3e0d  e=\"xsd:string\">.\n+0000f990: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000f9a0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+0000f9b0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000f9c0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000f9d0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+0000f9e0: 6e3e 3c21 5b43 4441 5441 5b20 5468 6520  n><![CDATA[ The \n+0000f9f0: 494f 2074 6872 6561 6420 706f 6f6c 2073  IO thread pool s\n+0000fa00: 697a 652e 205d 5d3e 3c2f 7873 643a 646f  ize. ]]></xsd:do\n+0000fa10: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+0000fa20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000fa30: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+0000fa40: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000fa50: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+0000fa60: 6275 7465 3e0d 0a20 2020 2020 2020 2020  bute>..         \n+0000fa70: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+0000fa80: 6962 7574 6520 6e61 6d65 3d22 616c 6976  ibute name=\"aliv\n+0000fa90: 6522 2074 7970 653d 2278 7364 3a73 7472  e\" type=\"xsd:str\n+0000faa0: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+0000fab0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+0000fac0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+0000fad0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000fae0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+0000faf0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+0000fb00: 5b20 5468 6520 7468 7265 6164 2070 6f6f  [ The thread poo\n+0000fb10: 6c20 6b65 6570 416c 6976 6554 696d 652e  l keepAliveTime.\n+0000fb20: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+0000fb30: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+0000fb40: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+0000fb50: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000fb60: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000fb70: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+0000fb80: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+0000fb90: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+0000fba0: 6520 6e61 6d65 3d22 7175 6575 6573 2220  e name=\"queues\" \n+0000fbb0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+0000fbc0: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+0000fbd0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+0000fbe0: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+0000fbf0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000fc00: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+0000fc10: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+0000fc20: 6865 2074 6872 6561 6420 706f 6f6c 2071  he thread pool q\n+0000fc30: 7565 7565 2073 697a 652e 205d 5d3e 3c2f  ueue size. ]]></\n+0000fc40: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+0000fc50: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+0000fc60: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+0000fc70: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+0000fc80: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+0000fc90: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+0000fca0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000fcb0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+0000fcc0: 3d22 6163 6365 7074 7322 2074 7970 653d  =\"accepts\" type=\n+0000fcd0: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+0000fce0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000fcf0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+0000fd00: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000fd10: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+0000fd20: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+0000fd30: 3c21 5b43 4441 5441 5b20 5468 6520 6163  <![CDATA[ The ac\n+0000fd40: 6365 7074 2063 6f6e 6e65 6374 696f 6e20  cept connection \n+0000fd50: 7369 7a65 2e20 5d5d 3e3c 2f78 7364 3a64  size. ]]></xsd:d\n+0000fd60: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+0000fd70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000fd80: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+0000fd90: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+0000fda0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+0000fdb0: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+0000fdc0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+0000fdd0: 7269 6275 7465 206e 616d 653d 2263 6f64  ribute name=\"cod\n+0000fde0: 6563 2220 7479 7065 3d22 7873 643a 7374  ec\" type=\"xsd:st\n+0000fdf0: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+0000fe00: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+0000fe10: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+0000fe20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000fe30: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+0000fe40: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+0000fe50: 415b 2054 6865 2070 726f 746f 636f 6c20  A[ The protocol \n+0000fe60: 636f 6465 632e 205d 5d3e 3c2f 7873 643a  codec. ]]></xsd:\n+0000fe70: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+0000fe80: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+0000fe90: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+0000fea0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+0000feb0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+0000fec0: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+0000fed0: 2020 2020 2020 2020 203c 7873 643a 6174           <xsd:at\n+0000fee0: 7472 6962 7574 6520 6e61 6d65 3d22 6368  tribute name=\"ch\n+0000fef0: 6172 7365 7422 2074 7970 653d 2278 7364  arset\" type=\"xsd\n+0000ff00: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+0000ff10: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+0000ff20: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+0000ff30: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+0000ff40: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+0000ff50: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+0000ff60: 4441 5441 5b20 5468 6520 7072 6f74 6f63  DATA[ The protoc\n+0000ff70: 6f6c 2063 6861 7273 6574 2e20 5d5d 3e3c  ol charset. ]]><\n+0000ff80: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+0000ff90: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+0000ffa0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+0000ffb0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+0000ffc0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+0000ffd0: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+0000ffe0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+0000fff0: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+00010000: 653d 2270 6179 6c6f 6164 2220 7479 7065  e=\"payload\" type\n+00010010: 3d22 7873 643a 7374 7269 6e67 223e 0d0a  =\"xsd:string\">..\n 00010020: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010030: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00010040: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00010050: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00010060: 6e61 6d65 3d22 6469 7370 6174 6368 6572  name=\"dispatcher\n-00010070: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-00010080: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-00010090: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-000100a0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-000100b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000100c0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-000100d0: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-000100e0: 6865 2070 726f 746f 636f 6c20 6469 7370  he protocol disp\n-000100f0: 6174 6368 6572 2074 7970 652e 205d 5d3e  atcher type. ]]>\n-00010100: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-00010110: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00010120: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00010130: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00010140: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00010150: 3a61 7474 7269 6275 7465 3e0a 2020 2020  :attribute>.    \n-00010160: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00010170: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n-00010180: 226e 6574 776f 726b 6572 2220 7479 7065  \"networker\" type\n-00010190: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-000101a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000101b0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-000101c0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-000101d0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000101e0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-000101f0: 215b 4344 4154 415b 2054 6865 2070 726f  ![CDATA[ The pro\n-00010200: 746f 636f 6c20 226e 6574 776f 726b 6572  tocol \"networker\n-00010210: 2220 7479 7065 2e20 5d5d 3e3c 2f78 7364  \" type. ]]></xsd\n-00010220: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-00010230: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010240: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00010250: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00010260: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-00010270: 6962 7574 653e 0a20 2020 2020 2020 2020  ibute>.         \n-00010280: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n-00010290: 6962 7574 6520 6e61 6d65 3d22 7365 7276  ibute name=\"serv\n-000102a0: 6572 2220 7479 7065 3d22 7873 643a 7374  er\" type=\"xsd:st\n-000102b0: 7269 6e67 223e 0a20 2020 2020 2020 2020  ring\">.         \n-000102c0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-000102d0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-000102e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000102f0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-00010300: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n-00010310: 2054 6865 2070 726f 746f 636f 6c20 7365   The protocol se\n-00010320: 7276 6572 2074 7970 652e 205d 5d3e 3c2f  rver type. ]]></\n-00010330: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00010340: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00010350: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-00010360: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00010370: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00010380: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00010390: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-000103a0: 7474 7269 6275 7465 206e 616d 653d 2263  ttribute name=\"c\n-000103b0: 6c69 656e 7422 2074 7970 653d 2278 7364  lient\" type=\"xsd\n-000103c0: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-000103d0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-000103e0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-000103f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010400: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-00010410: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-00010420: 5441 5b20 5468 6520 7072 6f74 6f63 6f6c  TA[ The protocol\n-00010430: 2063 6c69 656e 7420 7479 7065 2e20 5d5d   client type. ]]\n-00010440: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-00010450: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00010460: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00010470: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00010480: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00010490: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-000104a0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-000104b0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-000104c0: 3d22 7465 6c6e 6574 2220 7479 7065 3d22  =\"telnet\" type=\"\n-000104d0: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-000104e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000104f0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-00010500: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00010510: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00010520: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-00010530: 4344 4154 415b 2054 6865 2070 726f 746f  CDATA[ The proto\n-00010540: 636f 6c20 7573 6520 7465 6c6e 6574 2063  col use telnet c\n-00010550: 6f6d 6d61 6e64 732e 205d 5d3e 3c2f 7873  ommands. ]]></xs\n-00010560: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00010570: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00010580: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00010590: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-000105a0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-000105b0: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-000105c0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-000105d0: 7269 6275 7465 206e 616d 653d 2270 726f  ribute name=\"pro\n-000105e0: 6d70 7422 2074 7970 653d 2278 7364 3a73  mpt\" type=\"xsd:s\n-000105f0: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-00010600: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00010610: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00010620: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010630: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-00010640: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-00010650: 5b20 5468 6520 7072 6f74 6f63 6f6c 2074  [ The protocol t\n-00010660: 656c 6e65 7420 7072 6f6d 7074 2e20 5d5d  elnet prompt. ]]\n-00010670: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n-00010680: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00010690: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-000106a0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-000106b0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-000106c0: 643a 6174 7472 6962 7574 653e 0a20 2020  d:attribute>.   \n-000106d0: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n-000106e0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-000106f0: 3d22 7374 6174 7573 2220 7479 7065 3d22  =\"status\" type=\"\n-00010700: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-00010710: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010720: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-00010730: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00010740: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00010750: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-00010760: 4344 4154 415b 2054 6865 2070 726f 746f  CDATA[ The proto\n-00010770: 636f 6c20 6368 6563 6b20 7374 6174 7573  col check status\n-00010780: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-00010790: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-000107a0: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-000107b0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-000107c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000107d0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-000107e0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-000107f0: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n-00010800: 6e61 6d65 3d22 7061 7468 2220 7479 7065  name=\"path\" type\n-00010810: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-00010820: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010830: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-00010840: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00010850: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00010860: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-00010870: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010880: 2020 2020 2020 2020 2020 2020 3c21 5b43              <![C\n-00010890: 4441 5441 5b20 5468 6520 7072 6f74 6f63  DATA[ The protoc\n-000108a0: 6f6c 2063 6f6e 7465 7874 2070 6174 682e  ol context path.\n-000108b0: 2072 6570 6c61 6365 2074 6f20 2263 6f6e   replace to \"con\n-000108c0: 7465 7874 7061 7468 222e 205d 5d3e 3c2f  textpath\". ]]></\n-000108d0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-000108e0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-000108f0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-00010900: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00010910: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n-00010920: 7474 7269 6275 7465 3e0a 2020 2020 2020  ttribute>.      \n-00010930: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00010940: 7474 7269 6275 7465 206e 616d 653d 2263  ttribute name=\"c\n-00010950: 6f6e 7465 7874 7061 7468 2220 7479 7065  ontextpath\" type\n-00010960: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-00010970: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010980: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-00010990: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-000109a0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-000109b0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-000109c0: 215b 4344 4154 415b 2054 6865 2070 726f  ![CDATA[ The pro\n-000109d0: 746f 636f 6c20 636f 6e74 6578 7420 7061  tocol context pa\n-000109e0: 7468 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  th. ]]></xsd:doc\n-000109f0: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00010a00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010a10: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00010a20: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00010a30: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-00010a40: 653e 0a20 2020 2020 2020 2020 2020 2020  e>.             \n-00010a50: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00010a60: 6520 6e61 6d65 3d22 7761 6974 2220 7479  e name=\"wait\" ty\n-00010a70: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n-00010a80: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00010a90: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00010aa0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00010ab0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00010ac0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00010ad0: 3e3c 215b 4344 4154 415b 2054 6865 2070  ><![CDATA[ The p\n-00010ae0: 726f 7669 6465 7220 7368 7574 646f 776e  rovider shutdown\n-00010af0: 2077 6169 7420 7469 6d65 2e20 5d5d 3e3c   wait time. ]]><\n-00010b00: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-00010b10: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00010b20: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-00010b30: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00010b40: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00010b50: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-00010b60: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00010b70: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-00010b80: 6465 6661 756c 7422 2074 7970 653d 2278  default\" type=\"x\n-00010b90: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-00010ba0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010bb0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-00010bc0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00010bd0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00010be0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00010bf0: 4441 5441 5b20 4973 2064 6566 6175 6c74  DATA[ Is default\n-00010c00: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-00010c10: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00010c20: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-00010c30: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00010c40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010c50: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00010c60: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00010c70: 203c 7873 643a 616e 7941 7474 7269 6275   <xsd:anyAttribu\n-00010c80: 7465 206e 616d 6573 7061 6365 3d22 2323  te namespace=\"##\n-00010c90: 6f74 6865 7222 2070 726f 6365 7373 436f  other\" processCo\n-00010ca0: 6e74 656e 7473 3d22 6c61 7822 2f3e 0a20  ntents=\"lax\"/>. \n-00010cb0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00010cc0: 3a65 7874 656e 7369 6f6e 3e0a 2020 2020  :extension>.    \n-00010cd0: 2020 2020 3c2f 7873 643a 636f 6d70 6c65      </xsd:comple\n-00010ce0: 7843 6f6e 7465 6e74 3e0a 2020 2020 3c2f  xContent>.    </\n-00010cf0: 7873 643a 636f 6d70 6c65 7854 7970 653e  xsd:complexType>\n-00010d00: 0a0a 2020 2020 3c78 7364 3a63 6f6d 706c  ..    <xsd:compl\n-00010d10: 6578 5479 7065 206e 616d 653d 2273 6572  exType name=\"ser\n-00010d20: 7669 6365 5479 7065 223e 0a20 2020 2020  viceType\">.     \n-00010d30: 2020 203c 7873 643a 636f 6d70 6c65 7843     <xsd:complexC\n-00010d40: 6f6e 7465 6e74 3e0a 2020 2020 2020 2020  ontent>.        \n-00010d50: 2020 2020 3c78 7364 3a65 7874 656e 7369      <xsd:extensi\n-00010d60: 6f6e 2062 6173 653d 2261 6273 7472 6163  on base=\"abstrac\n-00010d70: 7453 6572 7669 6365 5479 7065 223e 0a20  tServiceType\">. \n-00010d80: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00010d90: 7873 643a 6368 6f69 6365 206d 696e 4f63  xsd:choice minOc\n-00010da0: 6375 7273 3d22 3022 206d 6178 4f63 6375  curs=\"0\" maxOccu\n-00010db0: 7273 3d22 756e 626f 756e 6465 6422 3e0a  rs=\"unbounded\">.\n+00010030: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+00010040: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00010050: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00010060: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00010070: 3e3c 215b 4344 4154 415b 2054 6865 206d  ><![CDATA[ The m\n+00010080: 6178 2070 6179 6c6f 6164 2e20 5d5d 3e3c  ax payload. ]]><\n+00010090: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+000100a0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+000100b0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+000100c0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+000100d0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+000100e0: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+000100f0: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00010100: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+00010110: 653d 2262 7566 6665 7222 2074 7970 653d  e=\"buffer\" type=\n+00010120: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+00010130: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010140: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+00010150: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00010160: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00010170: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00010180: 3c21 5b43 4441 5441 5b20 5468 6520 6275  <![CDATA[ The bu\n+00010190: 6666 6572 2073 697a 652e 205d 5d3e 3c2f  ffer size. ]]></\n+000101a0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+000101b0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000101c0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+000101d0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+000101e0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+000101f0: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00010200: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00010210: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00010220: 3d22 7472 616e 7370 6f72 7465 7222 2074  =\"transporter\" t\n+00010230: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+00010240: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00010250: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+00010260: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00010270: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010280: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00010290: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+000102a0: 6520 7072 6f74 6f63 6f6c 2074 7261 6e73  e protocol trans\n+000102b0: 706f 7274 6572 2074 7970 652e 205d 5d3e  porter type. ]]>\n+000102c0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+000102d0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+000102e0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+000102f0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00010300: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+00010310: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+00010320: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00010330: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00010340: 6d65 3d22 6578 6368 616e 6765 7222 2074  me=\"exchanger\" t\n+00010350: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+00010360: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00010370: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+00010380: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00010390: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000103a0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+000103b0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+000103c0: 6520 7072 6f74 6f63 6f6c 2065 7863 6861  e protocol excha\n+000103d0: 6e67 6572 2074 7970 652e 205d 5d3e 3c2f  nger type. ]]></\n+000103e0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+000103f0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00010400: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00010410: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00010420: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00010430: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00010440: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00010450: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00010460: 3d22 6469 7370 6174 6865 7222 2074 7970  =\"dispather\" typ\n+00010470: 653d 2278 7364 3a73 7472 696e 6722 3e0d  e=\"xsd:string\">.\n+00010480: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00010490: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+000104a0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+000104b0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+000104c0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+000104d0: 6e3e 3c21 5b43 4441 5441 5b20 4465 7072  n><![CDATA[ Depr\n+000104e0: 6563 6174 6564 2e20 7265 706c 6163 6520  ecated. replace \n+000104f0: 746f 2022 6469 7370 6174 6368 6572 222e  to \"dispatcher\".\n+00010500: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00010510: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00010520: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+00010530: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00010540: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00010550: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+00010560: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00010570: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+00010580: 6520 6e61 6d65 3d22 6469 7370 6174 6368  e name=\"dispatch\n+00010590: 6572 2220 7479 7065 3d22 7873 643a 7374  er\" type=\"xsd:st\n+000105a0: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+000105b0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000105c0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+000105d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000105e0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+000105f0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00010600: 415b 2054 6865 2070 726f 746f 636f 6c20  A[ The protocol \n+00010610: 6469 7370 6174 6368 6572 2074 7970 652e  dispatcher type.\n+00010620: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00010630: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00010640: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+00010650: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00010660: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00010670: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+00010680: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00010690: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+000106a0: 6520 6e61 6d65 3d22 6e65 7477 6f72 6b65  e name=\"networke\n+000106b0: 7222 2074 7970 653d 2278 7364 3a73 7472  r\" type=\"xsd:str\n+000106c0: 696e 6722 3e0d 0a20 2020 2020 2020 2020  ing\">..         \n+000106d0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+000106e0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+000106f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010700: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n+00010710: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n+00010720: 5b20 5468 6520 7072 6f74 6f63 6f6c 2022  [ The protocol \"\n+00010730: 6e65 7477 6f72 6b65 7222 2074 7970 652e  networker\" type.\n+00010740: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00010750: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00010760: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+00010770: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00010780: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00010790: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+000107a0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+000107b0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+000107c0: 6520 6e61 6d65 3d22 7365 7276 6572 2220  e name=\"server\" \n+000107d0: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+000107e0: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+000107f0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+00010800: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00010810: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010820: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+00010830: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+00010840: 6865 2070 726f 746f 636f 6c20 7365 7276  he protocol serv\n+00010850: 6572 2074 7970 652e 205d 5d3e 3c2f 7873  er type. ]]></xs\n+00010860: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00010870: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00010880: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+00010890: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+000108a0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+000108b0: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+000108c0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+000108d0: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+000108e0: 636c 6965 6e74 2220 7479 7065 3d22 7873  client\" type=\"xs\n+000108f0: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+00010900: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010910: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+00010920: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00010930: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00010940: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00010950: 4344 4154 415b 2054 6865 2070 726f 746f  CDATA[ The proto\n+00010960: 636f 6c20 636c 6965 6e74 2074 7970 652e  col client type.\n+00010970: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00010980: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00010990: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+000109a0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+000109b0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000109c0: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+000109d0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+000109e0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+000109f0: 6520 6e61 6d65 3d22 7465 6c6e 6574 2220  e name=\"telnet\" \n+00010a00: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+00010a10: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+00010a20: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+00010a30: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00010a40: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010a50: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+00010a60: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+00010a70: 6865 2070 726f 746f 636f 6c20 7573 6520  he protocol use \n+00010a80: 7465 6c6e 6574 2063 6f6d 6d61 6e64 732e  telnet commands.\n+00010a90: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00010aa0: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00010ab0: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+00010ac0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00010ad0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00010ae0: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+00010af0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00010b00: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+00010b10: 6520 6e61 6d65 3d22 7072 6f6d 7074 2220  e name=\"prompt\" \n+00010b20: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+00010b30: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+00010b40: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+00010b50: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00010b60: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010b70: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+00010b80: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+00010b90: 6865 2070 726f 746f 636f 6c20 7465 6c6e  he protocol teln\n+00010ba0: 6574 2070 726f 6d70 742e 205d 5d3e 3c2f  et prompt. ]]></\n+00010bb0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+00010bc0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00010bd0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00010be0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00010bf0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00010c00: 3a61 7474 7269 6275 7465 3e0d 0a20 2020  :attribute>..   \n+00010c10: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00010c20: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00010c30: 3d22 7374 6174 7573 2220 7479 7065 3d22  =\"status\" type=\"\n+00010c40: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+00010c50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010c60: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00010c70: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00010c80: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00010c90: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+00010ca0: 215b 4344 4154 415b 2054 6865 2070 726f  ![CDATA[ The pro\n+00010cb0: 746f 636f 6c20 6368 6563 6b20 7374 6174  tocol check stat\n+00010cc0: 7573 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  us. ]]></xsd:doc\n+00010cd0: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+00010ce0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010cf0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00010d00: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00010d10: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+00010d20: 7574 653e 0d0a 2020 2020 2020 2020 2020  ute>..          \n+00010d30: 2020 2020 2020 3c78 7364 3a61 7474 7269        <xsd:attri\n+00010d40: 6275 7465 206e 616d 653d 2270 6174 6822  bute name=\"path\"\n+00010d50: 2074 7970 653d 2278 7364 3a73 7472 696e   type=\"xsd:strin\n+00010d60: 6722 3e0d 0a20 2020 2020 2020 2020 2020  g\">..           \n+00010d70: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n+00010d80: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00010d90: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010da0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+00010db0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n 00010dc0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010dd0: 2020 2020 3c78 7364 3a65 6c65 6d65 6e74      <xsd:element\n-00010de0: 2072 6566 3d22 6d65 7468 6f64 2220 6d69   ref=\"method\" mi\n-00010df0: 6e4f 6363 7572 733d 2230 2220 6d61 784f  nOccurs=\"0\" maxO\n-00010e00: 6363 7572 733d 2275 6e62 6f75 6e64 6564  ccurs=\"unbounded\n-00010e10: 222f 3e0a 2020 2020 2020 2020 2020 2020  \"/>.            \n-00010e20: 2020 2020 2020 2020 3c78 7364 3a65 6c65          <xsd:ele\n-00010e30: 6d65 6e74 2072 6566 3d22 7061 7261 6d65  ment ref=\"parame\n-00010e40: 7465 7222 206d 696e 4f63 6375 7273 3d22  ter\" minOccurs=\"\n-00010e50: 3022 206d 6178 4f63 6375 7273 3d22 756e  0\" maxOccurs=\"un\n-00010e60: 626f 756e 6465 6422 2f3e 0a20 2020 2020  bounded\"/>.     \n-00010e70: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00010e80: 7873 643a 656c 656d 656e 7420 7265 663d  xsd:element ref=\n-00010e90: 2262 6561 6e73 3a70 726f 7065 7274 7922  \"beans:property\"\n-00010ea0: 206d 696e 4f63 6375 7273 3d22 3022 206d   minOccurs=\"0\" m\n-00010eb0: 6178 4f63 6375 7273 3d22 756e 626f 756e  axOccurs=\"unboun\n-00010ec0: 6465 6422 2f3e 0a20 2020 2020 2020 2020  ded\"/>.         \n-00010ed0: 2020 2020 2020 203c 2f78 7364 3a63 686f         </xsd:cho\n-00010ee0: 6963 653e 0a20 2020 2020 2020 2020 2020  ice>.           \n-00010ef0: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n-00010f00: 7574 6520 6e61 6d65 3d22 696e 7465 7266  ute name=\"interf\n-00010f10: 6163 6522 2074 7970 653d 2278 7364 3a74  ace\" type=\"xsd:t\n-00010f20: 6f6b 656e 2220 7573 653d 2272 6571 7569  oken\" use=\"requi\n-00010f30: 7265 6422 3e0a 2020 2020 2020 2020 2020  red\">.          \n-00010f40: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00010f50: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00010f60: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010f70: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-00010f80: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00010f90: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00010fa0: 2020 203c 215b 4344 4154 415b 2044 6566     <![CDATA[ Def\n-00010fb0: 696e 6573 2074 6865 2069 6e74 6572 6661  ines the interfa\n-00010fc0: 6365 2074 6f20 6164 7665 7274 6973 6520  ce to advertise \n-00010fd0: 666f 7220 7468 6973 2073 6572 7669 6365  for this service\n-00010fe0: 2069 6e20 7468 6520 7365 7276 6963 6520   in the service \n-00010ff0: 7265 6769 7374 7279 2e20 5d5d 3e3c 2f78  registry. ]]></x\n-00011000: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00011010: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00011020: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00011030: 7070 696e 666f 3e0a 2020 2020 2020 2020  ppinfo>.        \n-00011040: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00011050: 2020 2020 3c74 6f6f 6c3a 616e 6e6f 7461      <tool:annota\n-00011060: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00011070: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00011080: 2020 2020 2020 3c74 6f6f 6c3a 6578 7065        <tool:expe\n-00011090: 6374 6564 2d74 7970 6520 7479 7065 3d22  cted-type type=\"\n-000110a0: 6a61 7661 2e6c 616e 672e 436c 6173 7322  java.lang.Class\"\n-000110b0: 2f3e 0a20 2020 2020 2020 2020 2020 2020  />.             \n-000110c0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000110d0: 2f74 6f6f 6c3a 616e 6e6f 7461 7469 6f6e  /tool:annotation\n-000110e0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-000110f0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00011100: 6170 7069 6e66 6f3e 0a20 2020 2020 2020  appinfo>.       \n-00011110: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-00011120: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00011130: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00011140: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00011150: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00011160: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00011170: 616d 653d 2272 6566 2220 7479 7065 3d22  ame=\"ref\" type=\"\n-00011180: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-00011190: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000111a0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-000111b0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-000111c0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-000111d0: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-000111e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000111f0: 2020 2020 2020 2020 2020 3c21 5b43 4441            <![CDA\n-00011200: 5441 5b20 5468 6520 7365 7276 6963 6520  TA[ The service \n-00011210: 696d 706c 656d 656e 7461 7469 6f6e 2069  implementation i\n-00011220: 6e73 7461 6e63 6520 6265 616e 2069 642e  nstance bean id.\n-00011230: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-00011240: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00011250: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n-00011260: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00011270: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00011280: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00011290: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000112a0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-000112b0: 616d 653d 2263 6c61 7373 2220 7479 7065  ame=\"class\" type\n-000112c0: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-000112d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000112e0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-000112f0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00011300: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00011310: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-00011320: 215b 4344 4154 415b 2054 6865 2073 6572  ![CDATA[ The ser\n-00011330: 7669 6365 2069 6d70 6c65 6d65 6e74 6174  vice implementat\n-00011340: 696f 6e20 636c 6173 7320 6e61 6d65 2e20  ion class name. \n-00011350: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00011360: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00011370: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-00011380: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00011390: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-000113a0: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-000113b0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000113c0: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n-000113d0: 6d65 3d22 7061 7468 2220 7479 7065 3d22  me=\"path\" type=\"\n-000113e0: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-000113f0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00011400: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-00011410: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00011420: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00011430: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-00011440: 4344 4154 415b 2054 6865 2073 6572 7669  CDATA[ The servi\n-00011450: 6365 2070 6174 682e 205d 5d3e 3c2f 7873  ce path. ]]></xs\n-00011460: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00011470: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00011480: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00011490: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-000114a0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-000114b0: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-000114c0: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-000114d0: 7269 6275 7465 206e 616d 653d 2270 726f  ribute name=\"pro\n-000114e0: 7669 6465 7222 2074 7970 653d 2278 7364  vider\" type=\"xsd\n-000114f0: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-00011500: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n-00011510: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00011520: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00011530: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-00011540: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-00011550: 5441 5b20 4465 7072 6563 6174 6564 2e20  TA[ Deprecated. \n-00011560: 5265 706c 6163 6520 746f 2070 726f 746f  Replace to proto\n-00011570: 636f 6c2e 205d 5d3e 3c2f 7873 643a 646f  col. ]]></xsd:do\n-00011580: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00011590: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000115a0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n-000115b0: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-000115c0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n-000115d0: 7465 3e0a 2020 2020 2020 2020 2020 2020  te>.            \n-000115e0: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n-000115f0: 7465 206e 616d 653d 2267 656e 6572 6963  te name=\"generic\n-00011600: 2220 7479 7065 3d22 7873 643a 7374 7269  \" type=\"xsd:stri\n-00011610: 6e67 223e 0a20 2020 2020 2020 2020 2020  ng\">.           \n-00011620: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-00011630: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00011640: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00011650: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-00011660: 7469 6f6e 3e3c 215b 4344 4154 415b 2047  tion><![CDATA[ G\n-00011670: 656e 6572 6963 2073 6572 7669 6365 2e20  eneric service. \n-00011680: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n-00011690: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-000116a0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-000116b0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-000116c0: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-000116d0: 7873 643a 6174 7472 6962 7574 653e 0a20  xsd:attribute>. \n-000116e0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000116f0: 7873 643a 616e 7941 7474 7269 6275 7465  xsd:anyAttribute\n-00011700: 206e 616d 6573 7061 6365 3d22 2323 6f74   namespace=\"##ot\n-00011710: 6865 7222 2070 726f 6365 7373 436f 6e74  her\" processCont\n-00011720: 656e 7473 3d22 6c61 7822 2f3e 0a20 2020  ents=\"lax\"/>.   \n-00011730: 2020 2020 2020 2020 203c 2f78 7364 3a65           </xsd:e\n-00011740: 7874 656e 7369 6f6e 3e0a 2020 2020 2020  xtension>.      \n-00011750: 2020 3c2f 7873 643a 636f 6d70 6c65 7843    </xsd:complexC\n-00011760: 6f6e 7465 6e74 3e0a 2020 2020 3c2f 7873  ontent>.    </xs\n-00011770: 643a 636f 6d70 6c65 7854 7970 653e 0a0a  d:complexType>..\n-00011780: 2020 2020 3c78 7364 3a63 6f6d 706c 6578      <xsd:complex\n-00011790: 5479 7065 206e 616d 653d 2273 736c 5479  Type name=\"sslTy\n-000117a0: 7065 223e 0a20 2020 2020 2020 203c 7873  pe\">.        <xs\n-000117b0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-000117c0: 3d22 6964 2220 7479 7065 3d22 7873 643a  =\"id\" type=\"xsd:\n-000117d0: 4944 223e 0a20 2020 2020 2020 2020 2020  ID\">.           \n-000117e0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-000117f0: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00011800: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n-00011810: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n-00011820: 6865 2075 6e69 7175 6520 6964 656e 7469  he unique identi\n-00011830: 6669 6572 2066 6f72 2061 2062 6561 6e2e  fier for a bean.\n-00011840: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-00011850: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00011860: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n-00011870: 6174 696f 6e3e 0a20 2020 2020 2020 203c  ation>.        <\n-00011880: 2f78 7364 3a61 7474 7269 6275 7465 3e0a  /xsd:attribute>.\n-00011890: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n-000118a0: 7269 6275 7465 206e 616d 653d 2273 6572  ribute name=\"ser\n-000118b0: 7665 722d 6b65 792d 6365 7274 2d63 6861  ver-key-cert-cha\n-000118c0: 696e 2d70 6174 6822 2074 7970 653d 2278  in-path\" type=\"x\n-000118d0: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-000118e0: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-000118f0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00011900: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00011910: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00011920: 4441 5441 5b20 5468 6520 7365 7276 6572  DATA[ The server\n-00011930: 2063 6572 742e 205d 5d3e 3c2f 7873 643a   cert. ]]></xsd:\n-00011940: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-00011950: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00011960: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00011970: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00011980: 6275 7465 3e0a 2020 2020 2020 2020 3c78  bute>.        <x\n-00011990: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-000119a0: 653d 2273 6572 7665 722d 7072 6976 6174  e=\"server-privat\n-000119b0: 652d 6b65 792d 7061 7468 2220 7479 7065  e-key-path\" type\n-000119c0: 3d22 7873 643a 7374 7269 6e67 223e 0a20  =\"xsd:string\">. \n-000119d0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-000119e0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-000119f0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n-00011a00: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n-00011a10: 215b 4344 4154 415b 2054 6865 2073 6572  ![CDATA[ The ser\n-00011a20: 7665 7220 6b65 792e 205d 5d3e 3c2f 7873  ver key. ]]></xs\n-00011a30: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00011a40: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00011a50: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00011a60: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n-00011a70: 7269 6275 7465 3e0a 2020 2020 2020 2020  ribute>.        \n-00011a80: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00011a90: 616d 653d 2273 6572 7665 722d 6b65 792d  ame=\"server-key-\n-00011aa0: 7061 7373 776f 7264 2220 7479 7065 3d22  password\" type=\"\n-00011ab0: 7873 643a 7374 7269 6e67 223e 0a20 2020  xsd:string\">.   \n-00011ac0: 2020 2020 2020 2020 203c 7873 643a 616e           <xsd:an\n-00011ad0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00011ae0: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00011af0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-00011b00: 4344 4154 415b 2054 6865 2073 6572 7665  CDATA[ The serve\n-00011b10: 7220 6b65 792e 205d 5d3e 3c2f 7873 643a  r key. ]]></xsd:\n-00011b20: 646f 6375 6d65 6e74 6174 696f 6e3e 0a20  documentation>. \n-00011b30: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00011b40: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-00011b50: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n-00011b60: 6275 7465 3e0a 2020 2020 2020 2020 3c78  bute>.        <x\n-00011b70: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n-00011b80: 653d 2273 6572 7665 722d 7472 7573 742d  e=\"server-trust-\n-00011b90: 6365 7274 2d63 6f6c 6c65 6374 696f 6e2d  cert-collection-\n-00011ba0: 7061 7468 2220 7479 7065 3d22 7873 643a  path\" type=\"xsd:\n-00011bb0: 7374 7269 6e67 223e 0a20 2020 2020 2020  string\">.       \n-00011bc0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n-00011bd0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00011be0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00011bf0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00011c00: 415b 2054 6865 2074 7275 7374 6564 2073  A[ The trusted s\n-00011c10: 6572 7665 7220 6365 7274 2e20 5d5d 3e3c  erver cert. ]]><\n-00011c20: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-00011c30: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00011c40: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n-00011c50: 3e0a 2020 2020 2020 2020 3c2f 7873 643a  >.        </xsd:\n-00011c60: 6174 7472 6962 7574 653e 0a20 2020 2020  attribute>.     \n-00011c70: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n-00011c80: 6520 6e61 6d65 3d22 636c 6965 6e74 2d6b  e name=\"client-k\n-00011c90: 6579 2d63 6572 742d 6368 6169 6e2d 7061  ey-cert-chain-pa\n-00011ca0: 7468 2220 7479 7065 3d22 7873 643a 7374  th\" type=\"xsd:st\n-00011cb0: 7269 6e67 223e 0a20 2020 2020 2020 2020  ring\">.         \n-00011cc0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-00011cd0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00011ce0: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n-00011cf0: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n-00011d00: 2054 6865 2063 6c69 656e 7420 6365 7274   The client cert\n-00011d10: 2e20 5d5d 3e3c 2f78 7364 3a64 6f63 756d  . ]]></xsd:docum\n-00011d20: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00011d30: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00011d40: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00011d50: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n-00011d60: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n-00011d70: 7472 6962 7574 6520 6e61 6d65 3d22 636c  tribute name=\"cl\n-00011d80: 6965 6e74 2d70 7269 7661 7465 2d6b 6579  ient-private-key\n-00011d90: 2d70 6174 6822 2074 7970 653d 2278 7364  -path\" type=\"xsd\n-00011da0: 3a73 7472 696e 6722 3e0a 2020 2020 2020  :string\">.      \n-00011db0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-00011dc0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00011dd0: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-00011de0: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-00011df0: 5441 5b20 5468 6520 636c 6965 6e74 206b  TA[ The client k\n-00011e00: 6579 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ey. ]]></xsd:doc\n-00011e10: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00011e20: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-00011e30: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00011e40: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-00011e50: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-00011e60: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-00011e70: 636c 6965 6e74 2d6b 6579 2d70 6173 7377  client-key-passw\n-00011e80: 6f72 6422 2074 7970 653d 2278 7364 3a73  ord\" type=\"xsd:s\n-00011e90: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-00011ea0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-00011eb0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00011ec0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-00011ed0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-00011ee0: 5b20 5468 6520 636c 6965 6e74 206b 6579  [ The client key\n-00011ef0: 2070 7764 2e20 5d5d 3e3c 2f78 7364 3a64   pwd. ]]></xsd:d\n-00011f00: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00011f10: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n-00011f20: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-00011f30: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n-00011f40: 7574 653e 0a20 2020 2020 2020 203c 7873  ute>.        <xs\n-00011f50: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n-00011f60: 3d22 636c 6965 6e74 2d74 7275 7374 2d63  =\"client-trust-c\n-00011f70: 6572 742d 636f 6c6c 6563 7469 6f6e 2d70  ert-collection-p\n-00011f80: 6174 6822 2074 7970 653d 2278 7364 3a73  ath\" type=\"xsd:s\n-00011f90: 7472 696e 6722 3e0a 2020 2020 2020 2020  tring\">.        \n-00011fa0: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-00011fb0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00011fc0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-00011fd0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-00011fe0: 5b20 5468 6520 7472 7573 7465 6420 636c  [ The trusted cl\n-00011ff0: 6965 6e74 2063 6572 742e 205d 5d3e 3c2f  ient cert. ]]></\n-00012000: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00012010: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-00012020: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00012030: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-00012040: 7474 7269 6275 7465 3e0a 2020 2020 3c2f  ttribute>.    </\n-00012050: 7873 643a 636f 6d70 6c65 7854 7970 653e  xsd:complexType>\n-00012060: 0a0a 2020 2020 3c78 7364 3a65 6c65 6d65  ..    <xsd:eleme\n-00012070: 6e74 206e 616d 653d 2273 736c 2220 7479  nt name=\"ssl\" ty\n-00012080: 7065 3d22 7373 6c54 7970 6522 3e0a 2020  pe=\"sslType\">.  \n-00012090: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-000120a0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-000120b0: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-000120c0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-000120d0: 5468 6520 7373 6c20 636f 6e66 6967 205d  The ssl config ]\n-000120e0: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-000120f0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00012100: 2020 203c 7873 643a 6170 7069 6e66 6f3e     <xsd:appinfo>\n-00012110: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00012120: 203c 746f 6f6c 3a61 6e6e 6f74 6174 696f   <tool:annotatio\n-00012130: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00012140: 2020 2020 2020 203c 746f 6f6c 3a65 7870         <tool:exp\n-00012150: 6f72 7473 2074 7970 653d 226f 7267 2e61  orts type=\"org.a\n-00012160: 7061 6368 652e 6475 6262 6f2e 636f 6e66  pache.dubbo.conf\n-00012170: 6967 2e53 736c 436f 6e66 6967 222f 3e0a  ig.SslConfig\"/>.\n-00012180: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00012190: 3c2f 746f 6f6c 3a61 6e6e 6f74 6174 696f  </tool:annotatio\n-000121a0: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-000121b0: 2f78 7364 3a61 7070 696e 666f 3e0a 2020  /xsd:appinfo>.  \n-000121c0: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-000121d0: 7461 7469 6f6e 3e0a 2020 2020 3c2f 7873  tation>.    </xs\n-000121e0: 643a 656c 656d 656e 743e 0a0a 2020 2020  d:element>..    \n-000121f0: 3c78 7364 3a63 6f6d 706c 6578 5479 7065  <xsd:complexType\n-00012200: 206e 616d 653d 2261 6e6e 6f74 6174 696f   name=\"annotatio\n-00012210: 6e54 7970 6522 3e0a 2020 2020 2020 2020  nType\">.        \n-00012220: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n-00012230: 616d 653d 2269 6422 2074 7970 653d 2278  ame=\"id\" type=\"x\n-00012240: 7364 3a49 4422 3e0a 2020 2020 2020 2020  sd:ID\">.        \n-00012250: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n-00012260: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00012270: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-00012280: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-00012290: 5b20 5468 6520 756e 6971 7565 2069 6465  [ The unique ide\n-000122a0: 6e74 6966 6965 7220 666f 7220 6120 6265  ntifier for a be\n-000122b0: 616e 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  an. ]]></xsd:doc\n-000122c0: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-000122d0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-000122e0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-000122f0: 2020 3c2f 7873 643a 6174 7472 6962 7574    </xsd:attribut\n-00012300: 653e 0a20 2020 2020 2020 203c 7873 643a  e>.        <xsd:\n-00012310: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n-00012320: 7061 636b 6167 6522 2074 7970 653d 2278  package\" type=\"x\n-00012330: 7364 3a73 7472 696e 6722 3e0a 2020 2020  sd:string\">.    \n-00012340: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00012350: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00012360: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n-00012370: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n-00012380: 4441 5441 5b20 5468 6520 7363 616e 2070  DATA[ The scan p\n-00012390: 6163 6b61 6765 2e20 5d5d 3e3c 2f78 7364  ackage. ]]></xsd\n-000123a0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0a  :documentation>.\n-000123b0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n-000123c0: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-000123d0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n-000123e0: 6962 7574 653e 0a20 2020 203c 2f78 7364  ibute>.    </xsd\n-000123f0: 3a63 6f6d 706c 6578 5479 7065 3e0a 0a20  :complexType>.. \n-00012400: 2020 203c 7873 643a 656c 656d 656e 7420     <xsd:element \n-00012410: 6e61 6d65 3d22 616e 6e6f 7461 7469 6f6e  name=\"annotation\n-00012420: 2220 7479 7065 3d22 616e 6e6f 7461 7469  \" type=\"annotati\n-00012430: 6f6e 5479 7065 223e 0a20 2020 2020 2020  onType\">.       \n-00012440: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-00012450: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-00012460: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00012470: 3e3c 215b 4344 4154 415b 2054 6865 2061  ><![CDATA[ The a\n-00012480: 6e6e 6f74 6174 696f 6e20 636f 6e66 6967  nnotation config\n-00012490: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-000124a0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-000124b0: 2020 2020 203c 7873 643a 6170 7069 6e66       <xsd:appinf\n-000124c0: 6f3e 0a20 2020 2020 2020 2020 2020 2020  o>.             \n-000124d0: 2020 203c 746f 6f6c 3a61 6e6e 6f74 6174     <tool:annotat\n-000124e0: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-000124f0: 2020 2020 2020 2020 203c 746f 6f6c 3a65           <tool:e\n-00012500: 7870 6f72 7473 2074 7970 653d 226f 7267  xports type=\"org\n-00012510: 2e61 7061 6368 652e 6475 6262 6f2e 636f  .apache.dubbo.co\n-00012520: 6e66 6967 2e53 6572 7669 6365 436f 6e66  nfig.ServiceConf\n-00012530: 6967 222f 3e0a 2020 2020 2020 2020 2020  ig\"/>.          \n-00012540: 2020 2020 2020 2020 2020 3c74 6f6f 6c3a            <tool:\n-00012550: 6578 706f 7274 7320 7479 7065 3d22 6f72  exports type=\"or\n-00012560: 672e 6170 6163 6865 2e64 7562 626f 2e63  g.apache.dubbo.c\n-00012570: 6f6e 6669 672e 5265 6665 7265 6e63 6543  onfig.ReferenceC\n-00012580: 6f6e 6669 6722 2f3e 0a20 2020 2020 2020  onfig\"/>.       \n-00012590: 2020 2020 2020 2020 203c 2f74 6f6f 6c3a           </tool:\n-000125a0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-000125b0: 2020 2020 2020 2020 3c2f 7873 643a 6170          </xsd:ap\n-000125c0: 7069 6e66 6f3e 0a20 2020 2020 2020 203c  pinfo>.        <\n-000125d0: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-000125e0: 0a20 2020 203c 2f78 7364 3a65 6c65 6d65  .    </xsd:eleme\n-000125f0: 6e74 3e0a 0a20 2020 203c 7873 643a 656c  nt>..    <xsd:el\n-00012600: 656d 656e 7420 6e61 6d65 3d22 6170 706c  ement name=\"appl\n-00012610: 6963 6174 696f 6e22 2074 7970 653d 2261  ication\" type=\"a\n-00012620: 7070 6c69 6361 7469 6f6e 5479 7065 223e  pplicationType\">\n-00012630: 0a20 2020 2020 2020 203c 7873 643a 616e  .        <xsd:an\n-00012640: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00012650: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00012660: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00012670: 415b 2054 6865 2061 7070 6c69 6361 7469  A[ The applicati\n-00012680: 6f6e 2063 6f6e 6669 6720 5d5d 3e3c 2f78  on config ]]></x\n-00012690: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-000126a0: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-000126b0: 7364 3a61 7070 696e 666f 3e0a 2020 2020  sd:appinfo>.    \n-000126c0: 2020 2020 2020 2020 2020 2020 3c74 6f6f              <too\n-000126d0: 6c3a 616e 6e6f 7461 7469 6f6e 3e0a 2020  l:annotation>.  \n-000126e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-000126f0: 2020 3c74 6f6f 6c3a 6578 706f 7274 7320    <tool:exports \n-00012700: 7479 7065 3d22 6f72 672e 6170 6163 6865  type=\"org.apache\n-00012710: 2e64 7562 626f 2e63 6f6e 6669 672e 4170  .dubbo.config.Ap\n-00012720: 706c 6963 6174 696f 6e43 6f6e 6669 6722  plicationConfig\"\n-00012730: 2f3e 0a20 2020 2020 2020 2020 2020 2020  />.             \n-00012740: 2020 203c 2f74 6f6f 6c3a 616e 6e6f 7461     </tool:annota\n-00012750: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00012760: 2020 3c2f 7873 643a 6170 7069 6e66 6f3e    </xsd:appinfo>\n-00012770: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-00012780: 6e6e 6f74 6174 696f 6e3e 0a20 2020 203c  nnotation>.    <\n-00012790: 2f78 7364 3a65 6c65 6d65 6e74 3e0a 0a20  /xsd:element>.. \n-000127a0: 2020 203c 7873 643a 656c 656d 656e 7420     <xsd:element \n-000127b0: 6e61 6d65 3d22 6d6f 6475 6c65 2220 7479  name=\"module\" ty\n-000127c0: 7065 3d22 6d6f 6475 6c65 5479 7065 223e  pe=\"moduleType\">\n-000127d0: 0a20 2020 2020 2020 203c 7873 643a 616e  .        <xsd:an\n-000127e0: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-000127f0: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n-00012800: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n-00012810: 415b 2054 6865 206d 6f64 756c 6520 636f  A[ The module co\n-00012820: 6e66 6967 205d 5d3e 3c2f 7873 643a 646f  nfig ]]></xsd:do\n-00012830: 6375 6d65 6e74 6174 696f 6e3e 0a20 2020  cumentation>.   \n-00012840: 2020 2020 2020 2020 203c 7873 643a 6170           <xsd:ap\n-00012850: 7069 6e66 6f3e 0a20 2020 2020 2020 2020  pinfo>.         \n-00012860: 2020 2020 2020 203c 746f 6f6c 3a61 6e6e         <tool:ann\n-00012870: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00012880: 2020 2020 2020 2020 2020 2020 203c 746f               <to\n-00012890: 6f6c 3a65 7870 6f72 7473 2074 7970 653d  ol:exports type=\n-000128a0: 226f 7267 2e61 7061 6368 652e 6475 6262  \"org.apache.dubb\n-000128b0: 6f2e 636f 6e66 6967 2e4d 6f64 756c 6543  o.config.ModuleC\n-000128c0: 6f6e 6669 6722 2f3e 0a20 2020 2020 2020  onfig\"/>.       \n-000128d0: 2020 2020 2020 2020 203c 2f74 6f6f 6c3a           </tool:\n-000128e0: 616e 6e6f 7461 7469 6f6e 3e0a 2020 2020  annotation>.    \n-000128f0: 2020 2020 2020 2020 3c2f 7873 643a 6170          </xsd:ap\n-00012900: 7069 6e66 6f3e 0a20 2020 2020 2020 203c  pinfo>.        <\n-00012910: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n-00012920: 0a20 2020 203c 2f78 7364 3a65 6c65 6d65  .    </xsd:eleme\n-00012930: 6e74 3e0a 0a20 2020 203c 7873 643a 656c  nt>..    <xsd:el\n-00012940: 656d 656e 7420 6e61 6d65 3d22 7265 6769  ement name=\"regi\n-00012950: 7374 7279 2220 7479 7065 3d22 7265 6769  stry\" type=\"regi\n-00012960: 7374 7279 5479 7065 223e 0a20 2020 2020  stryType\">.     \n-00012970: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n-00012980: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00012990: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n-000129a0: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n-000129b0: 2072 6567 6973 7472 7920 636f 6e66 6967   registry config\n-000129c0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-000129d0: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-000129e0: 2020 2020 203c 7873 643a 6170 7069 6e66       <xsd:appinf\n-000129f0: 6f3e 0a20 2020 2020 2020 2020 2020 2020  o>.             \n-00012a00: 2020 203c 746f 6f6c 3a61 6e6e 6f74 6174     <tool:annotat\n-00012a10: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00012a20: 2020 2020 2020 2020 203c 746f 6f6c 3a65           <tool:e\n-00012a30: 7870 6f72 7473 2074 7970 653d 226f 7267  xports type=\"org\n-00012a40: 2e61 7061 6368 652e 6475 6262 6f2e 636f  .apache.dubbo.co\n-00012a50: 6e66 6967 2e52 6567 6973 7472 7943 6f6e  nfig.RegistryCon\n-00012a60: 6669 6722 2f3e 0a20 2020 2020 2020 2020  fig\"/>.         \n-00012a70: 2020 2020 2020 203c 2f74 6f6f 6c3a 616e         </tool:an\n-00012a80: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00012a90: 2020 2020 2020 3c2f 7873 643a 6170 7069        </xsd:appi\n-00012aa0: 6e66 6f3e 0a20 2020 2020 2020 203c 2f78  nfo>.        </x\n-00012ab0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00012ac0: 2020 203c 2f78 7364 3a65 6c65 6d65 6e74     </xsd:element\n-00012ad0: 3e0a 0a20 2020 203c 7873 643a 656c 656d  >..    <xsd:elem\n-00012ae0: 656e 7420 6e61 6d65 3d22 6d65 7461 6461  ent name=\"metada\n-00012af0: 7461 2d72 6570 6f72 7422 2074 7970 653d  ta-report\" type=\n-00012b00: 226d 6574 6164 6174 6152 6570 6f72 7454  \"metadataReportT\n-00012b10: 7970 6522 3e0a 2020 2020 2020 2020 3c78  ype\">.        <x\n-00012b20: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00012b30: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00012b40: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-00012b50: 5b43 4441 5441 5b20 5468 6520 6d65 7461  [CDATA[ The meta\n-00012b60: 6461 7461 5265 706f 7274 2063 6f6e 6669  dataReport confi\n-00012b70: 6720 5d5d 3e3c 2f78 7364 3a64 6f63 756d  g ]]></xsd:docum\n-00012b80: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00012b90: 2020 2020 2020 3c78 7364 3a61 7070 696e        <xsd:appin\n-00012ba0: 666f 3e0a 2020 2020 2020 2020 2020 2020  fo>.            \n-00012bb0: 2020 2020 3c74 6f6f 6c3a 616e 6e6f 7461      <tool:annota\n-00012bc0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00012bd0: 2020 2020 2020 2020 2020 3c74 6f6f 6c3a            <tool:\n-00012be0: 6578 706f 7274 7320 7479 7065 3d22 6f72  exports type=\"or\n-00012bf0: 672e 6170 6163 6865 2e64 7562 626f 2e63  g.apache.dubbo.c\n-00012c00: 6f6e 6669 672e 4d65 7461 6461 7461 5265  onfig.MetadataRe\n-00012c10: 706f 7274 436f 6e66 6967 222f 3e0a 2020  portConfig\"/>.  \n-00012c20: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-00012c30: 746f 6f6c 3a61 6e6e 6f74 6174 696f 6e3e  tool:annotation>\n-00012c40: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00012c50: 7364 3a61 7070 696e 666f 3e0a 2020 2020  sd:appinfo>.    \n-00012c60: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00012c70: 7469 6f6e 3e0a 2020 2020 3c2f 7873 643a  tion>.    </xsd:\n-00012c80: 656c 656d 656e 743e 0a0a 2020 2020 3c78  element>..    <x\n-00012c90: 7364 3a65 6c65 6d65 6e74 206e 616d 653d  sd:element name=\n-00012ca0: 2263 6f6e 6669 672d 6365 6e74 6572 2220  \"config-center\" \n-00012cb0: 7479 7065 3d22 636f 6e66 6967 4365 6e74  type=\"configCent\n-00012cc0: 6572 5479 7065 223e 0a20 2020 2020 2020  erType\">.       \n-00012cd0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n-00012ce0: 3e0a 2020 2020 2020 2020 2020 2020 3c78  >.            <x\n-00012cf0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n-00012d00: 3e3c 215b 4344 4154 415b 2054 6865 2063  ><![CDATA[ The c\n-00012d10: 6f6e 6669 6720 6365 6e74 6572 2063 6f6e  onfig center con\n-00012d20: 6669 6720 5d5d 3e3c 2f78 7364 3a64 6f63  fig ]]></xsd:doc\n-00012d30: 756d 656e 7461 7469 6f6e 3e0a 2020 2020  umentation>.    \n-00012d40: 2020 2020 2020 2020 3c78 7364 3a61 7070          <xsd:app\n-00012d50: 696e 666f 3e0a 2020 2020 2020 2020 2020  info>.          \n-00012d60: 2020 2020 2020 3c74 6f6f 6c3a 616e 6e6f        <tool:anno\n-00012d70: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00012d80: 2020 2020 2020 2020 2020 2020 3c74 6f6f              <too\n-00012d90: 6c3a 6578 706f 7274 7320 7479 7065 3d22  l:exports type=\"\n-00012da0: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n-00012db0: 2e63 6f6e 6669 672e 436f 6e66 6967 4365  .config.ConfigCe\n-00012dc0: 6e74 6572 436f 6e66 6967 222f 3e0a 2020  nterConfig\"/>.  \n-00012dd0: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n-00012de0: 746f 6f6c 3a61 6e6e 6f74 6174 696f 6e3e  tool:annotation>\n-00012df0: 0a20 2020 2020 2020 2020 2020 203c 2f78  .            </x\n-00012e00: 7364 3a61 7070 696e 666f 3e0a 2020 2020  sd:appinfo>.    \n-00012e10: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n-00012e20: 7469 6f6e 3e0a 2020 2020 3c2f 7873 643a  tion>.    </xsd:\n-00012e30: 656c 656d 656e 743e 0a0a 2020 2020 3c78  element>..    <x\n-00012e40: 7364 3a65 6c65 6d65 6e74 206e 616d 653d  sd:element name=\n-00012e50: 226d 6f6e 6974 6f72 2220 7479 7065 3d22  \"monitor\" type=\"\n-00012e60: 6d6f 6e69 746f 7254 7970 6522 3e0a 2020  monitorType\">.  \n-00012e70: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n-00012e80: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-00012e90: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n-00012ea0: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n-00012eb0: 5468 6520 6c6f 6773 7461 7420 6d6f 6e69  The logstat moni\n-00012ec0: 746f 7220 636f 6e66 6967 205d 5d3e 3c2f  tor config ]]></\n-00012ed0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-00012ee0: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-00012ef0: 7873 643a 6170 7069 6e66 6f3e 0a20 2020  xsd:appinfo>.   \n-00012f00: 2020 2020 2020 2020 2020 2020 203c 746f               <to\n-00012f10: 6f6c 3a61 6e6e 6f74 6174 696f 6e3e 0a20  ol:annotation>. \n-00012f20: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00012f30: 2020 203c 746f 6f6c 3a65 7870 6f72 7473     <tool:exports\n-00012f40: 2074 7970 653d 226f 7267 2e61 7061 6368   type=\"org.apach\n-00012f50: 652e 6475 6262 6f2e 636f 6e66 6967 2e4d  e.dubbo.config.M\n-00012f60: 6f6e 6974 6f72 436f 6e66 6967 222f 3e0a  onitorConfig\"/>.\n-00012f70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00012f80: 3c2f 746f 6f6c 3a61 6e6e 6f74 6174 696f  </tool:annotatio\n-00012f90: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-00012fa0: 2f78 7364 3a61 7070 696e 666f 3e0a 2020  /xsd:appinfo>.  \n-00012fb0: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n-00012fc0: 7461 7469 6f6e 3e0a 2020 2020 3c2f 7873  tation>.    </xs\n-00012fd0: 643a 656c 656d 656e 743e 0a0a 2020 2020  d:element>..    \n-00012fe0: 3c78 7364 3a65 6c65 6d65 6e74 206e 616d  <xsd:element nam\n-00012ff0: 653d 2270 726f 7669 6465 7222 2074 7970  e=\"provider\" typ\n-00013000: 653d 2270 726f 7669 6465 7254 7970 6522  e=\"providerType\"\n-00013010: 3e0a 2020 2020 2020 2020 3c78 7364 3a61  >.        <xsd:a\n-00013020: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00013030: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n-00013040: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n-00013050: 5441 5b20 4578 706f 7274 2073 6572 7669  TA[ Export servi\n-00013060: 6365 2064 6566 6175 6c74 2063 6f6e 6669  ce default confi\n-00013070: 6720 5d5d 3e3c 2f78 7364 3a64 6f63 756d  g ]]></xsd:docum\n-00013080: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-00013090: 2020 2020 2020 3c78 7364 3a61 7070 696e        <xsd:appin\n-000130a0: 666f 3e0a 2020 2020 2020 2020 2020 2020  fo>.            \n-000130b0: 2020 2020 3c74 6f6f 6c3a 616e 6e6f 7461      <tool:annota\n-000130c0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-000130d0: 2020 2020 2020 2020 2020 3c74 6f6f 6c3a            <tool:\n-000130e0: 6578 706f 7274 7320 7479 7065 3d22 6f72  exports type=\"or\n-000130f0: 672e 6170 6163 6865 2e64 7562 626f 2e63  g.apache.dubbo.c\n-00013100: 6f6e 6669 672e 5072 6f76 6964 6572 436f  onfig.ProviderCo\n-00013110: 6e66 6967 222f 3e0a 2020 2020 2020 2020  nfig\"/>.        \n-00013120: 2020 2020 2020 2020 3c2f 746f 6f6c 3a61          </tool:a\n-00013130: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-00013140: 2020 2020 2020 203c 2f78 7364 3a61 7070         </xsd:app\n-00013150: 696e 666f 3e0a 2020 2020 2020 2020 3c2f  info>.        </\n-00013160: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00013170: 2020 2020 3c2f 7873 643a 656c 656d 656e      </xsd:elemen\n-00013180: 743e 0a0a 2020 2020 3c78 7364 3a65 6c65  t>..    <xsd:ele\n-00013190: 6d65 6e74 206e 616d 653d 2263 6f6e 7375  ment name=\"consu\n-000131a0: 6d65 7222 2074 7970 653d 2263 6f6e 7375  mer\" type=\"consu\n-000131b0: 6d65 7254 7970 6522 3e0a 2020 2020 2020  merType\">.      \n-000131c0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n-000131d0: 6e3e 0a20 2020 2020 2020 2020 2020 203c  n>.            <\n-000131e0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n-000131f0: 6e3e 3c21 5b43 4441 5441 5b20 5365 7276  n><![CDATA[ Serv\n-00013200: 6963 6520 7265 6665 7265 6e63 6520 6465  ice reference de\n-00013210: 6661 756c 7420 636f 6e66 6967 205d 5d3e  fault config ]]>\n-00013220: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-00013230: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00013240: 203c 7873 643a 6170 7069 6e66 6f3e 0a20   <xsd:appinfo>. \n-00013250: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-00013260: 746f 6f6c 3a61 6e6e 6f74 6174 696f 6e3e  tool:annotation>\n-00013270: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00013280: 2020 2020 203c 746f 6f6c 3a65 7870 6f72       <tool:expor\n-00013290: 7473 2074 7970 653d 226f 7267 2e61 7061  ts type=\"org.apa\n-000132a0: 6368 652e 6475 6262 6f2e 636f 6e66 6967  che.dubbo.config\n-000132b0: 2e43 6f6e 7375 6d65 7243 6f6e 6669 6722  .ConsumerConfig\"\n-000132c0: 2f3e 0a20 2020 2020 2020 2020 2020 2020  />.             \n-000132d0: 2020 203c 2f74 6f6f 6c3a 616e 6e6f 7461     </tool:annota\n-000132e0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-000132f0: 2020 3c2f 7873 643a 6170 7069 6e66 6f3e    </xsd:appinfo>\n-00013300: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n-00013310: 6e6e 6f74 6174 696f 6e3e 0a20 2020 203c  nnotation>.    <\n-00013320: 2f78 7364 3a65 6c65 6d65 6e74 3e0a 0a20  /xsd:element>.. \n-00013330: 2020 203c 7873 643a 656c 656d 656e 7420     <xsd:element \n-00013340: 6e61 6d65 3d22 7072 6f74 6f63 6f6c 2220  name=\"protocol\" \n-00013350: 7479 7065 3d22 7072 6f74 6f63 6f6c 5479  type=\"protocolTy\n-00013360: 7065 223e 0a20 2020 2020 2020 203c 7873  pe\">.        <xs\n-00013370: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00013380: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00013390: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-000133a0: 4344 4154 415b 2053 6572 7669 6365 2070  CDATA[ Service p\n-000133b0: 726f 7669 6465 7220 636f 6e66 6967 205d  rovider config ]\n-000133c0: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n-000133d0: 6174 696f 6e3e 0a20 2020 2020 2020 2020  ation>.         \n-000133e0: 2020 203c 7873 643a 6170 7069 6e66 6f3e     <xsd:appinfo>\n-000133f0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00013400: 203c 746f 6f6c 3a61 6e6e 6f74 6174 696f   <tool:annotatio\n-00013410: 6e3e 0a20 2020 2020 2020 2020 2020 2020  n>.             \n-00013420: 2020 2020 2020 203c 746f 6f6c 3a65 7870         <tool:exp\n-00013430: 6f72 7473 2074 7970 653d 226f 7267 2e61  orts type=\"org.a\n-00013440: 7061 6368 652e 6475 6262 6f2e 636f 6e66  pache.dubbo.conf\n-00013450: 6967 2e50 726f 746f 636f 6c43 6f6e 6669  ig.ProtocolConfi\n-00013460: 6722 2f3e 0a20 2020 2020 2020 2020 2020  g\"/>.           \n-00013470: 2020 2020 203c 2f74 6f6f 6c3a 616e 6e6f       </tool:anno\n-00013480: 7461 7469 6f6e 3e0a 2020 2020 2020 2020  tation>.        \n-00013490: 2020 2020 3c2f 7873 643a 6170 7069 6e66      </xsd:appinf\n-000134a0: 6f3e 0a20 2020 2020 2020 203c 2f78 7364  o>.        </xsd\n-000134b0: 3a61 6e6e 6f74 6174 696f 6e3e 0a20 2020  :annotation>.   \n-000134c0: 203c 2f78 7364 3a65 6c65 6d65 6e74 3e0a   </xsd:element>.\n-000134d0: 0a20 2020 203c 7873 643a 656c 656d 656e  .    <xsd:elemen\n-000134e0: 7420 6e61 6d65 3d22 7365 7276 6963 6522  t name=\"service\"\n-000134f0: 2074 7970 653d 2273 6572 7669 6365 5479   type=\"serviceTy\n-00013500: 7065 223e 0a20 2020 2020 2020 203c 7873  pe\">.        <xs\n-00013510: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00013520: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n-00013530: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n-00013540: 4344 4154 415b 2045 7870 6f72 7420 7365  CDATA[ Export se\n-00013550: 7276 6963 6520 636f 6e66 6967 205d 5d3e  rvice config ]]>\n-00013560: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n-00013570: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00013580: 203c 7873 643a 6170 7069 6e66 6f3e 0a20   <xsd:appinfo>. \n-00013590: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n-000135a0: 746f 6f6c 3a61 6e6e 6f74 6174 696f 6e3e  tool:annotation>\n-000135b0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-000135c0: 2020 2020 203c 746f 6f6c 3a65 7870 6f72       <tool:expor\n-000135d0: 7473 2074 7970 653d 226f 7267 2e61 7061  ts type=\"org.apa\n-000135e0: 6368 652e 6475 6262 6f2e 636f 6e66 6967  che.dubbo.config\n-000135f0: 2e53 6572 7669 6365 436f 6e66 6967 222f  .ServiceConfig\"/\n-00013600: 3e0a 2020 2020 2020 2020 2020 2020 2020  >.              \n-00013610: 2020 3c2f 746f 6f6c 3a61 6e6e 6f74 6174    </tool:annotat\n-00013620: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00013630: 203c 2f78 7364 3a61 7070 696e 666f 3e0a   </xsd:appinfo>.\n-00013640: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n-00013650: 6e6f 7461 7469 6f6e 3e0a 2020 2020 3c2f  notation>.    </\n-00013660: 7873 643a 656c 656d 656e 743e 0a0a 2020  xsd:element>..  \n-00013670: 2020 3c78 7364 3a65 6c65 6d65 6e74 206e    <xsd:element n\n-00013680: 616d 653d 2272 6566 6572 656e 6365 2220  ame=\"reference\" \n-00013690: 7479 7065 3d22 7265 6665 7265 6e63 6554  type=\"referenceT\n-000136a0: 7970 6522 3e0a 2020 2020 2020 2020 3c78  ype\">.        <x\n-000136b0: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-000136c0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-000136d0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-000136e0: 5b43 4441 5441 5b20 5265 6665 7265 6e63  [CDATA[ Referenc\n-000136f0: 6520 7365 7276 6963 6520 636f 6e66 6967  e service config\n-00013700: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n-00013710: 6e74 6174 696f 6e3e 0a20 2020 2020 2020  ntation>.       \n-00013720: 2020 2020 203c 7873 643a 6170 7069 6e66       <xsd:appinf\n-00013730: 6f3e 0a20 2020 2020 2020 2020 2020 2020  o>.             \n-00013740: 2020 203c 746f 6f6c 3a61 6e6e 6f74 6174     <tool:annotat\n-00013750: 696f 6e3e 0a20 2020 2020 2020 2020 2020  ion>.           \n-00013760: 2020 2020 2020 2020 203c 746f 6f6c 3a65           <tool:e\n-00013770: 7870 6f72 7473 2074 7970 653d 226f 7267  xports type=\"org\n-00013780: 2e61 7061 6368 652e 6475 6262 6f2e 636f  .apache.dubbo.co\n-00013790: 6e66 6967 2e52 6566 6572 656e 6365 436f  nfig.ReferenceCo\n-000137a0: 6e66 6967 222f 3e0a 2020 2020 2020 2020  nfig\"/>.        \n-000137b0: 2020 2020 2020 2020 3c2f 746f 6f6c 3a61          </tool:a\n-000137c0: 6e6e 6f74 6174 696f 6e3e 0a20 2020 2020  nnotation>.     \n-000137d0: 2020 2020 2020 203c 2f78 7364 3a61 7070         </xsd:app\n-000137e0: 696e 666f 3e0a 2020 2020 2020 2020 3c2f  info>.        </\n-000137f0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0a  xsd:annotation>.\n-00013800: 2020 2020 3c2f 7873 643a 656c 656d 656e      </xsd:elemen\n-00013810: 743e 0a0a 2020 2020 3c78 7364 3a65 6c65  t>..    <xsd:ele\n-00013820: 6d65 6e74 206e 616d 653d 226d 6574 686f  ment name=\"metho\n-00013830: 6422 2074 7970 653d 226d 6574 686f 6454  d\" type=\"methodT\n-00013840: 7970 6522 3e0a 2020 2020 2020 2020 3c78  ype\">.        <x\n-00013850: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00013860: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00013870: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-00013880: 5b43 4441 5441 5b20 5468 6520 7365 7276  [CDATA[ The serv\n-00013890: 6963 6520 6d65 7468 6f64 2063 6f6e 6669  ice method confi\n-000138a0: 6720 5d5d 3e3c 2f78 7364 3a64 6f63 756d  g ]]></xsd:docum\n-000138b0: 656e 7461 7469 6f6e 3e0a 2020 2020 2020  entation>.      \n-000138c0: 2020 2020 2020 3c78 7364 3a61 7070 696e        <xsd:appin\n-000138d0: 666f 3e0a 2020 2020 2020 2020 2020 2020  fo>.            \n-000138e0: 2020 2020 3c74 6f6f 6c3a 616e 6e6f 7461      <tool:annota\n-000138f0: 7469 6f6e 3e0a 2020 2020 2020 2020 2020  tion>.          \n-00013900: 2020 2020 2020 2020 2020 3c74 6f6f 6c3a            <tool:\n-00013910: 6578 706f 7274 7320 7479 7065 3d22 6f72  exports type=\"or\n-00013920: 672e 6170 6163 6865 2e64 7562 626f 2e63  g.apache.dubbo.c\n-00013930: 6f6e 6669 672e 4d65 7468 6f64 436f 6e66  onfig.MethodConf\n-00013940: 6967 222f 3e0a 2020 2020 2020 2020 2020  ig\"/>.          \n-00013950: 2020 2020 2020 3c2f 746f 6f6c 3a61 6e6e        </tool:ann\n-00013960: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00013970: 2020 2020 203c 2f78 7364 3a61 7070 696e       </xsd:appin\n-00013980: 666f 3e0a 2020 2020 2020 2020 3c2f 7873  fo>.        </xs\n-00013990: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-000139a0: 2020 3c2f 7873 643a 656c 656d 656e 743e    </xsd:element>\n-000139b0: 0a0a 2020 2020 3c78 7364 3a65 6c65 6d65  ..    <xsd:eleme\n-000139c0: 6e74 206e 616d 653d 2261 7267 756d 656e  nt name=\"argumen\n-000139d0: 7422 2074 7970 653d 2261 7267 756d 656e  t\" type=\"argumen\n-000139e0: 7454 7970 6522 3e0a 2020 2020 2020 2020  tType\">.        \n-000139f0: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n-00013a00: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n-00013a10: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n-00013a20: 3c21 5b43 4441 5441 5b20 5468 6520 7365  <![CDATA[ The se\n-00013a30: 7276 6963 6520 6172 6775 6d65 6e74 2063  rvice argument c\n-00013a40: 6f6e 6669 6720 5d5d 3e3c 2f78 7364 3a64  onfig ]]></xsd:d\n-00013a50: 6f63 756d 656e 7461 7469 6f6e 3e0a 2020  ocumentation>.  \n-00013a60: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n-00013a70: 7070 696e 666f 3e0a 2020 2020 2020 2020  ppinfo>.        \n-00013a80: 2020 2020 2020 2020 3c74 6f6f 6c3a 616e          <tool:an\n-00013a90: 6e6f 7461 7469 6f6e 3e0a 2020 2020 2020  notation>.      \n-00013aa0: 2020 2020 2020 2020 2020 2020 2020 3c74                <t\n-00013ab0: 6f6f 6c3a 6578 706f 7274 7320 7479 7065  ool:exports type\n-00013ac0: 3d22 6f72 672e 6170 6163 6865 2e64 7562  =\"org.apache.dub\n-00013ad0: 626f 2e63 6f6e 6669 672e 4172 6775 6d65  bo.config.Argume\n-00013ae0: 6e74 436f 6e66 6967 222f 3e0a 2020 2020  ntConfig\"/>.    \n-00013af0: 2020 2020 2020 2020 2020 2020 3c2f 746f              </to\n-00013b00: 6f6c 3a61 6e6e 6f74 6174 696f 6e3e 0a20  ol:annotation>. \n-00013b10: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n-00013b20: 3a61 7070 696e 666f 3e0a 2020 2020 2020  :appinfo>.      \n-00013b30: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n-00013b40: 6f6e 3e0a 2020 2020 3c2f 7873 643a 656c  on>.    </xsd:el\n-00013b50: 656d 656e 743e 0a0a 2020 2020 3c78 7364  ement>..    <xsd\n-00013b60: 3a65 6c65 6d65 6e74 206e 616d 653d 2270  :element name=\"p\n-00013b70: 6172 616d 6574 6572 2220 7479 7065 3d22  arameter\" type=\"\n-00013b80: 7061 7261 6d65 7465 7254 7970 6522 3e0a  parameterType\">.\n-00013b90: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n-00013ba0: 6f74 6174 696f 6e3e 0a20 2020 2020 2020  otation>.       \n-00013bb0: 2020 2020 203c 7873 643a 646f 6375 6d65       <xsd:docume\n-00013bc0: 6e74 6174 696f 6e3e 3c21 5b43 4441 5441  ntation><![CDATA\n-00013bd0: 5b20 5468 6520 7365 7276 6963 6520 7572  [ The service ur\n-00013be0: 6c20 7061 7261 6d65 7465 7220 5d5d 3e3c  l parameter ]]><\n-00013bf0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-00013c00: 6f6e 3e0a 2020 2020 2020 2020 3c2f 7873  on>.        </xs\n-00013c10: 643a 616e 6e6f 7461 7469 6f6e 3e0a 2020  d:annotation>.  \n-00013c20: 2020 3c2f 7873 643a 656c 656d 656e 743e    </xsd:element>\n-00013c30: 0a0a 2020 2020 3c78 7364 3a65 6c65 6d65  ..    <xsd:eleme\n-00013c40: 6e74 206e 616d 653d 226d 6574 7269 6373  nt name=\"metrics\n-00013c50: 2220 7479 7065 3d22 6d65 7472 6963 7354  \" type=\"metricsT\n-00013c60: 7970 6522 3e0a 2020 2020 2020 2020 3c78  ype\">.        <x\n-00013c70: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0a20  sd:annotation>. \n-00013c80: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n-00013c90: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n-00013ca0: 5b43 4441 5441 5b20 5468 6520 6d65 7472  [CDATA[ The metr\n-00013cb0: 6963 7320 7365 7276 6963 6520 5d5d 3e3c  ics service ]]><\n-00013cc0: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n-00013cd0: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00013ce0: 3c78 7364 3a61 7070 696e 666f 3e0a 2020  <xsd:appinfo>.  \n-00013cf0: 2020 2020 2020 2020 2020 2020 2020 3c74                <t\n-00013d00: 6f6f 6c3a 616e 6e6f 7461 7469 6f6e 3e0a  ool:annotation>.\n-00013d10: 2020 2020 2020 2020 2020 2020 2020 2020                  \n-00013d20: 2020 2020 3c74 6f6f 6c3a 6578 706f 7274      <tool:export\n-00013d30: 7320 7479 7065 3d22 6f72 672e 6170 6163  s type=\"org.apac\n-00013d40: 6865 2e64 7562 626f 2e63 6f6e 6669 672e  he.dubbo.config.\n-00013d50: 4d65 7472 6963 7343 6f6e 6669 6722 2f3e  MetricsConfig\"/>\n-00013d60: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n-00013d70: 203c 2f74 6f6f 6c3a 616e 6e6f 7461 7469   </tool:annotati\n-00013d80: 6f6e 3e0a 2020 2020 2020 2020 2020 2020  on>.            \n-00013d90: 3c2f 7873 643a 6170 7069 6e66 6f3e 0a20  </xsd:appinfo>. \n-00013da0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n-00013db0: 6f74 6174 696f 6e3e 0a20 2020 203c 2f78  otation>.    </x\n-00013dc0: 7364 3a65 6c65 6d65 6e74 3e0a 0a3c 2f78  sd:element>..</x\n-00013dd0: 7364 3a73 6368 656d 613e 0a              sd:schema>.\n+00010dd0: 2020 2020 3c21 5b43 4441 5441 5b20 5468      <![CDATA[ Th\n+00010de0: 6520 7072 6f74 6f63 6f6c 2063 6f6e 7465  e protocol conte\n+00010df0: 7874 2070 6174 682e 2072 6570 6c61 6365  xt path. replace\n+00010e00: 2074 6f20 2263 6f6e 7465 7874 7061 7468   to \"contextpath\n+00010e10: 222e 205d 5d3e 3c2f 7873 643a 646f 6375  \". ]]></xsd:docu\n+00010e20: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+00010e30: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00010e40: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+00010e50: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00010e60: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+00010e70: 7465 3e0d 0a20 2020 2020 2020 2020 2020  te>..           \n+00010e80: 2020 2020 203c 7873 643a 6174 7472 6962       <xsd:attrib\n+00010e90: 7574 6520 6e61 6d65 3d22 636f 6e74 6578  ute name=\"contex\n+00010ea0: 7470 6174 6822 2074 7970 653d 2278 7364  tpath\" type=\"xsd\n+00010eb0: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+00010ec0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00010ed0: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00010ee0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00010ef0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00010f00: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+00010f10: 4441 5441 5b20 5468 6520 7072 6f74 6f63  DATA[ The protoc\n+00010f20: 6f6c 2063 6f6e 7465 7874 2070 6174 682e  ol context path.\n+00010f30: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00010f40: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00010f50: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+00010f60: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00010f70: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00010f80: 203c 2f78 7364 3a61 7474 7269 6275 7465   </xsd:attribute\n+00010f90: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00010fa0: 2020 203c 7873 643a 6174 7472 6962 7574     <xsd:attribut\n+00010fb0: 6520 6e61 6d65 3d22 7761 6974 2220 7479  e name=\"wait\" ty\n+00010fc0: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+00010fd0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00010fe0: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00010ff0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00011000: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00011010: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00011020: 6f6e 3e3c 215b 4344 4154 415b 2054 6865  on><![CDATA[ The\n+00011030: 2070 726f 7669 6465 7220 7368 7574 646f   provider shutdo\n+00011040: 776e 2077 6169 7420 7469 6d65 2e20 5d5d  wn wait time. ]]\n+00011050: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+00011060: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00011070: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00011080: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00011090: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+000110a0: 7873 643a 6174 7472 6962 7574 653e 0d0a  xsd:attribute>..\n+000110b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000110c0: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+000110d0: 616d 653d 2264 6566 6175 6c74 2220 7479  ame=\"default\" ty\n+000110e0: 7065 3d22 7873 643a 7374 7269 6e67 223e  pe=\"xsd:string\">\n+000110f0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00011100: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00011110: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00011120: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00011130: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00011140: 6f6e 3e3c 215b 4344 4154 415b 2049 7320  on><![CDATA[ Is \n+00011150: 6465 6661 756c 742e 205d 5d3e 3c2f 7873  default. ]]></xs\n+00011160: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00011170: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00011180: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+00011190: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+000111a0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+000111b0: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+000111c0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+000111d0: 616e 7941 7474 7269 6275 7465 206e 616d  anyAttribute nam\n+000111e0: 6573 7061 6365 3d22 2323 6f74 6865 7222  espace=\"##other\"\n+000111f0: 2070 726f 6365 7373 436f 6e74 656e 7473   processContents\n+00011200: 3d22 6c61 7822 2f3e 0d0a 2020 2020 2020  =\"lax\"/>..      \n+00011210: 2020 2020 2020 3c2f 7873 643a 6578 7465        </xsd:exte\n+00011220: 6e73 696f 6e3e 0d0a 2020 2020 2020 2020  nsion>..        \n+00011230: 3c2f 7873 643a 636f 6d70 6c65 7843 6f6e  </xsd:complexCon\n+00011240: 7465 6e74 3e0d 0a20 2020 203c 2f78 7364  tent>..    </xsd\n+00011250: 3a63 6f6d 706c 6578 5479 7065 3e0d 0a0d  :complexType>...\n+00011260: 0a20 2020 203c 7873 643a 636f 6d70 6c65  .    <xsd:comple\n+00011270: 7854 7970 6520 6e61 6d65 3d22 7365 7276  xType name=\"serv\n+00011280: 6963 6554 7970 6522 3e0d 0a20 2020 2020  iceType\">..     \n+00011290: 2020 203c 7873 643a 636f 6d70 6c65 7843     <xsd:complexC\n+000112a0: 6f6e 7465 6e74 3e0d 0a20 2020 2020 2020  ontent>..       \n+000112b0: 2020 2020 203c 7873 643a 6578 7465 6e73       <xsd:extens\n+000112c0: 696f 6e20 6261 7365 3d22 6162 7374 7261  ion base=\"abstra\n+000112d0: 6374 5365 7276 6963 6554 7970 6522 3e0d  ctServiceType\">.\n+000112e0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000112f0: 203c 7873 643a 6368 6f69 6365 206d 696e   <xsd:choice min\n+00011300: 4f63 6375 7273 3d22 3022 206d 6178 4f63  Occurs=\"0\" maxOc\n+00011310: 6375 7273 3d22 756e 626f 756e 6465 6422  curs=\"unbounded\"\n+00011320: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00011330: 2020 2020 2020 203c 7873 643a 656c 656d         <xsd:elem\n+00011340: 656e 7420 7265 663d 226d 6574 686f 6422  ent ref=\"method\"\n+00011350: 206d 696e 4f63 6375 7273 3d22 3022 206d   minOccurs=\"0\" m\n+00011360: 6178 4f63 6375 7273 3d22 756e 626f 756e  axOccurs=\"unboun\n+00011370: 6465 6422 2f3e 0d0a 2020 2020 2020 2020  ded\"/>..        \n+00011380: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00011390: 3a65 6c65 6d65 6e74 2072 6566 3d22 7061  :element ref=\"pa\n+000113a0: 7261 6d65 7465 7222 206d 696e 4f63 6375  rameter\" minOccu\n+000113b0: 7273 3d22 3022 206d 6178 4f63 6375 7273  rs=\"0\" maxOccurs\n+000113c0: 3d22 756e 626f 756e 6465 6422 2f3e 0d0a  =\"unbounded\"/>..\n+000113d0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000113e0: 2020 2020 3c78 7364 3a65 6c65 6d65 6e74      <xsd:element\n+000113f0: 2072 6566 3d22 6265 616e 733a 7072 6f70   ref=\"beans:prop\n+00011400: 6572 7479 2220 6d69 6e4f 6363 7572 733d  erty\" minOccurs=\n+00011410: 2230 2220 6d61 784f 6363 7572 733d 2275  \"0\" maxOccurs=\"u\n+00011420: 6e62 6f75 6e64 6564 222f 3e0d 0a20 2020  nbounded\"/>..   \n+00011430: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+00011440: 7364 3a63 686f 6963 653e 0d0a 2020 2020  sd:choice>..    \n+00011450: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00011460: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00011470: 2269 6e74 6572 6661 6365 2220 7479 7065  \"interface\" type\n+00011480: 3d22 7873 643a 746f 6b65 6e22 2075 7365  =\"xsd:token\" use\n+00011490: 3d22 7265 7175 6972 6564 223e 0d0a 2020  =\"required\">..  \n+000114a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000114b0: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+000114c0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000114d0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+000114e0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+000114f0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00011500: 2020 2020 2020 2020 2020 2020 203c 215b               <![\n+00011510: 4344 4154 415b 2044 6566 696e 6573 2074  CDATA[ Defines t\n+00011520: 6865 2069 6e74 6572 6661 6365 2074 6f20  he interface to \n+00011530: 6164 7665 7274 6973 6520 666f 7220 7468  advertise for th\n+00011540: 6973 2073 6572 7669 6365 2069 6e20 7468  is service in th\n+00011550: 6520 7365 7276 6963 6520 7265 6769 7374  e service regist\n+00011560: 7279 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  ry. ]]></xsd:doc\n+00011570: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+00011580: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00011590: 2020 2020 203c 7873 643a 6170 7069 6e66       <xsd:appinf\n+000115a0: 6f3e 0d0a 2020 2020 2020 2020 2020 2020  o>..            \n+000115b0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000115c0: 3c74 6f6f 6c3a 616e 6e6f 7461 7469 6f6e  <tool:annotation\n+000115d0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+000115e0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000115f0: 2020 203c 746f 6f6c 3a65 7870 6563 7465     <tool:expecte\n+00011600: 642d 7479 7065 2074 7970 653d 226a 6176  d-type type=\"jav\n+00011610: 612e 6c61 6e67 2e43 6c61 7373 222f 3e0d  a.lang.Class\"/>.\n+00011620: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00011630: 2020 2020 2020 2020 2020 2020 203c 2f74               </t\n+00011640: 6f6f 6c3a 616e 6e6f 7461 7469 6f6e 3e0d  ool:annotation>.\n+00011650: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00011660: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+00011670: 7070 696e 666f 3e0d 0a20 2020 2020 2020  ppinfo>..       \n+00011680: 2020 2020 2020 2020 2020 2020 203c 2f78               </x\n+00011690: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+000116a0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000116b0: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+000116c0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+000116d0: 2020 3c78 7364 3a61 7474 7269 6275 7465    <xsd:attribute\n+000116e0: 206e 616d 653d 2272 6566 2220 7479 7065   name=\"ref\" type\n+000116f0: 3d22 7873 643a 7374 7269 6e67 223e 0d0a  =\"xsd:string\">..\n+00011700: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00011710: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+00011720: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00011730: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00011740: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00011750: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00011760: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00011770: 215b 4344 4154 415b 2054 6865 2073 6572  ![CDATA[ The ser\n+00011780: 7669 6365 2069 6d70 6c65 6d65 6e74 6174  vice implementat\n+00011790: 696f 6e20 696e 7374 616e 6365 2062 6561  ion instance bea\n+000117a0: 6e20 6964 2e20 5d5d 3e3c 2f78 7364 3a64  n id. ]]></xsd:d\n+000117b0: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+000117c0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000117d0: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+000117e0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+000117f0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+00011800: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+00011810: 2020 2020 2020 2020 3c78 7364 3a61 7474          <xsd:att\n+00011820: 7269 6275 7465 206e 616d 653d 2263 6c61  ribute name=\"cla\n+00011830: 7373 2220 7479 7065 3d22 7873 643a 7374  ss\" type=\"xsd:st\n+00011840: 7269 6e67 223e 0d0a 2020 2020 2020 2020  ring\">..        \n+00011850: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00011860: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00011870: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00011880: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00011890: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+000118a0: 415b 2054 6865 2073 6572 7669 6365 2069  A[ The service i\n+000118b0: 6d70 6c65 6d65 6e74 6174 696f 6e20 636c  mplementation cl\n+000118c0: 6173 7320 6e61 6d65 2e20 5d5d 3e3c 2f78  ass name. ]]></x\n+000118d0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+000118e0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+000118f0: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00011900: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00011910: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00011920: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+00011930: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00011940: 3a61 7474 7269 6275 7465 206e 616d 653d  :attribute name=\n+00011950: 2270 6174 6822 2074 7970 653d 2278 7364  \"path\" type=\"xsd\n+00011960: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+00011970: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00011980: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00011990: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000119a0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+000119b0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+000119c0: 4441 5441 5b20 5468 6520 7365 7276 6963  DATA[ The servic\n+000119d0: 6520 7061 7468 2e20 5d5d 3e3c 2f78 7364  e path. ]]></xsd\n+000119e0: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+000119f0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00011a00: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00011a10: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00011a20: 2020 2020 2020 2020 3c2f 7873 643a 6174          </xsd:at\n+00011a30: 7472 6962 7574 653e 0d0a 2020 2020 2020  tribute>..      \n+00011a40: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00011a50: 7474 7269 6275 7465 206e 616d 653d 2270  ttribute name=\"p\n+00011a60: 726f 7669 6465 7222 2074 7970 653d 2278  rovider\" type=\"x\n+00011a70: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+00011a80: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00011a90: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+00011aa0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00011ab0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00011ac0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00011ad0: 5b43 4441 5441 5b20 4465 7072 6563 6174  [CDATA[ Deprecat\n+00011ae0: 6564 2e20 5265 706c 6163 6520 746f 2070  ed. Replace to p\n+00011af0: 726f 746f 636f 6c2e 205d 5d3e 3c2f 7873  rotocol. ]]></xs\n+00011b00: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00011b10: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00011b20: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+00011b30: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00011b40: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+00011b50: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+00011b60: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00011b70: 6174 7472 6962 7574 6520 6e61 6d65 3d22  attribute name=\"\n+00011b80: 6765 6e65 7269 6322 2074 7970 653d 2278  generic\" type=\"x\n+00011b90: 7364 3a73 7472 696e 6722 3e0d 0a20 2020  sd:string\">..   \n+00011ba0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00011bb0: 203c 7873 643a 616e 6e6f 7461 7469 6f6e   <xsd:annotation\n+00011bc0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00011bd0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00011be0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00011bf0: 5b43 4441 5441 5b20 4765 6e65 7269 6320  [CDATA[ Generic \n+00011c00: 7365 7276 6963 652e 205d 5d3e 3c2f 7873  service. ]]></xs\n+00011c10: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00011c20: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00011c30: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+00011c40: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00011c50: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+00011c60: 7474 7269 6275 7465 3e0d 0a20 2020 2020  ttribute>..     \n+00011c70: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00011c80: 616e 7941 7474 7269 6275 7465 206e 616d  anyAttribute nam\n+00011c90: 6573 7061 6365 3d22 2323 6f74 6865 7222  espace=\"##other\"\n+00011ca0: 2070 726f 6365 7373 436f 6e74 656e 7473   processContents\n+00011cb0: 3d22 6c61 7822 2f3e 0d0a 2020 2020 2020  =\"lax\"/>..      \n+00011cc0: 2020 2020 2020 3c2f 7873 643a 6578 7465        </xsd:exte\n+00011cd0: 6e73 696f 6e3e 0d0a 2020 2020 2020 2020  nsion>..        \n+00011ce0: 3c2f 7873 643a 636f 6d70 6c65 7843 6f6e  </xsd:complexCon\n+00011cf0: 7465 6e74 3e0d 0a20 2020 203c 2f78 7364  tent>..    </xsd\n+00011d00: 3a63 6f6d 706c 6578 5479 7065 3e0d 0a0d  :complexType>...\n+00011d10: 0a20 2020 203c 7873 643a 636f 6d70 6c65  .    <xsd:comple\n+00011d20: 7854 7970 6520 6e61 6d65 3d22 7373 6c54  xType name=\"sslT\n+00011d30: 7970 6522 3e0d 0a20 2020 2020 2020 203c  ype\">..        <\n+00011d40: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00011d50: 6d65 3d22 6964 2220 7479 7065 3d22 7873  me=\"id\" type=\"xs\n+00011d60: 643a 4944 223e 0d0a 2020 2020 2020 2020  d:ID\">..        \n+00011d70: 2020 2020 3c78 7364 3a61 6e6e 6f74 6174      <xsd:annotat\n+00011d80: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+00011d90: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00011da0: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00011db0: 415b 2054 6865 2075 6e69 7175 6520 6964  A[ The unique id\n+00011dc0: 656e 7469 6669 6572 2066 6f72 2061 2062  entifier for a b\n+00011dd0: 6561 6e2e 205d 5d3e 3c2f 7873 643a 646f  ean. ]]></xsd:do\n+00011de0: 6375 6d65 6e74 6174 696f 6e3e 0d0a 2020  cumentation>..  \n+00011df0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00011e00: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00011e10: 2020 2020 203c 2f78 7364 3a61 7474 7269       </xsd:attri\n+00011e20: 6275 7465 3e0d 0a20 2020 2020 2020 203c  bute>..        <\n+00011e30: 7873 643a 6174 7472 6962 7574 6520 6e61  xsd:attribute na\n+00011e40: 6d65 3d22 7365 7276 6572 2d6b 6579 2d63  me=\"server-key-c\n+00011e50: 6572 742d 6368 6169 6e2d 7061 7468 2220  ert-chain-path\" \n+00011e60: 7479 7065 3d22 7873 643a 7374 7269 6e67  type=\"xsd:string\n+00011e70: 223e 0d0a 2020 2020 2020 2020 2020 2020  \">..            \n+00011e80: 3c78 7364 3a61 6e6e 6f74 6174 696f 6e3e  <xsd:annotation>\n+00011e90: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00011ea0: 2020 3c78 7364 3a64 6f63 756d 656e 7461    <xsd:documenta\n+00011eb0: 7469 6f6e 3e3c 215b 4344 4154 415b 2054  tion><![CDATA[ T\n+00011ec0: 6865 2073 6572 7665 7220 6365 7274 2e20  he server cert. \n+00011ed0: 5d5d 3e3c 2f78 7364 3a64 6f63 756d 656e  ]]></xsd:documen\n+00011ee0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00011ef0: 2020 2020 203c 2f78 7364 3a61 6e6e 6f74       </xsd:annot\n+00011f00: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00011f10: 3c2f 7873 643a 6174 7472 6962 7574 653e  </xsd:attribute>\n+00011f20: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+00011f30: 7474 7269 6275 7465 206e 616d 653d 2273  ttribute name=\"s\n+00011f40: 6572 7665 722d 7072 6976 6174 652d 6b65  erver-private-ke\n+00011f50: 792d 7061 7468 2220 7479 7065 3d22 7873  y-path\" type=\"xs\n+00011f60: 643a 7374 7269 6e67 223e 0d0a 2020 2020  d:string\">..    \n+00011f70: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+00011f80: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00011f90: 2020 2020 2020 2020 2020 3c78 7364 3a64            <xsd:d\n+00011fa0: 6f63 756d 656e 7461 7469 6f6e 3e3c 215b  ocumentation><![\n+00011fb0: 4344 4154 415b 2054 6865 2073 6572 7665  CDATA[ The serve\n+00011fc0: 7220 6b65 792e 205d 5d3e 3c2f 7873 643a  r key. ]]></xsd:\n+00011fd0: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00011fe0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+00011ff0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00012000: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+00012010: 7269 6275 7465 3e0d 0a20 2020 2020 2020  ribute>..       \n+00012020: 203c 7873 643a 6174 7472 6962 7574 6520   <xsd:attribute \n+00012030: 6e61 6d65 3d22 7365 7276 6572 2d6b 6579  name=\"server-key\n+00012040: 2d70 6173 7377 6f72 6422 2074 7970 653d  -password\" type=\n+00012050: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+00012060: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00012070: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00012080: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00012090: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+000120a0: 3c21 5b43 4441 5441 5b20 5468 6520 7365  <![CDATA[ The se\n+000120b0: 7276 6572 206b 6579 2e20 5d5d 3e3c 2f78  rver key. ]]></x\n+000120c0: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+000120d0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+000120e0: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+000120f0: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+00012100: 6174 7472 6962 7574 653e 0d0a 2020 2020  attribute>..    \n+00012110: 2020 2020 3c78 7364 3a61 7474 7269 6275      <xsd:attribu\n+00012120: 7465 206e 616d 653d 2273 6572 7665 722d  te name=\"server-\n+00012130: 7472 7573 742d 6365 7274 2d63 6f6c 6c65  trust-cert-colle\n+00012140: 6374 696f 6e2d 7061 7468 2220 7479 7065  ction-path\" type\n+00012150: 3d22 7873 643a 7374 7269 6e67 223e 0d0a  =\"xsd:string\">..\n+00012160: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00012170: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00012180: 2020 2020 2020 2020 2020 2020 2020 3c78                <x\n+00012190: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+000121a0: 3e3c 215b 4344 4154 415b 2054 6865 2074  ><![CDATA[ The t\n+000121b0: 7275 7374 6564 2073 6572 7665 7220 6365  rusted server ce\n+000121c0: 7274 2e20 5d5d 3e3c 2f78 7364 3a64 6f63  rt. ]]></xsd:doc\n+000121d0: 756d 656e 7461 7469 6f6e 3e0d 0a20 2020  umentation>..   \n+000121e0: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+000121f0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00012200: 2020 2020 3c2f 7873 643a 6174 7472 6962      </xsd:attrib\n+00012210: 7574 653e 0d0a 2020 2020 2020 2020 3c78  ute>..        <x\n+00012220: 7364 3a61 7474 7269 6275 7465 206e 616d  sd:attribute nam\n+00012230: 653d 2263 6c69 656e 742d 6b65 792d 6365  e=\"client-key-ce\n+00012240: 7274 2d63 6861 696e 2d70 6174 6822 2074  rt-chain-path\" t\n+00012250: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+00012260: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00012270: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00012280: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00012290: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+000122a0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+000122b0: 6520 636c 6965 6e74 2063 6572 742e 205d  e client cert. ]\n+000122c0: 5d3e 3c2f 7873 643a 646f 6375 6d65 6e74  ]></xsd:document\n+000122d0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+000122e0: 2020 2020 3c2f 7873 643a 616e 6e6f 7461      </xsd:annota\n+000122f0: 7469 6f6e 3e0d 0a20 2020 2020 2020 203c  tion>..        <\n+00012300: 2f78 7364 3a61 7474 7269 6275 7465 3e0d  /xsd:attribute>.\n+00012310: 0a20 2020 2020 2020 203c 7873 643a 6174  .        <xsd:at\n+00012320: 7472 6962 7574 6520 6e61 6d65 3d22 636c  tribute name=\"cl\n+00012330: 6965 6e74 2d70 7269 7661 7465 2d6b 6579  ient-private-key\n+00012340: 2d70 6174 6822 2074 7970 653d 2278 7364  -path\" type=\"xsd\n+00012350: 3a73 7472 696e 6722 3e0d 0a20 2020 2020  :string\">..     \n+00012360: 2020 2020 2020 203c 7873 643a 616e 6e6f         <xsd:anno\n+00012370: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00012380: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00012390: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+000123a0: 4441 5441 5b20 5468 6520 636c 6965 6e74  DATA[ The client\n+000123b0: 206b 6579 2e20 5d5d 3e3c 2f78 7364 3a64   key. ]]></xsd:d\n+000123c0: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+000123d0: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+000123e0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+000123f0: 2020 2020 2020 3c2f 7873 643a 6174 7472        </xsd:attr\n+00012400: 6962 7574 653e 0d0a 2020 2020 2020 2020  ibute>..        \n+00012410: 3c78 7364 3a61 7474 7269 6275 7465 206e  <xsd:attribute n\n+00012420: 616d 653d 2263 6c69 656e 742d 6b65 792d  ame=\"client-key-\n+00012430: 7061 7373 776f 7264 2220 7479 7065 3d22  password\" type=\"\n+00012440: 7873 643a 7374 7269 6e67 223e 0d0a 2020  xsd:string\">..  \n+00012450: 2020 2020 2020 2020 2020 3c78 7364 3a61            <xsd:a\n+00012460: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00012470: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00012480: 3a64 6f63 756d 656e 7461 7469 6f6e 3e3c  :documentation><\n+00012490: 215b 4344 4154 415b 2054 6865 2063 6c69  ![CDATA[ The cli\n+000124a0: 656e 7420 6b65 7920 7077 642e 205d 5d3e  ent key pwd. ]]>\n+000124b0: 3c2f 7873 643a 646f 6375 6d65 6e74 6174  </xsd:documentat\n+000124c0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+000124d0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+000124e0: 6f6e 3e0d 0a20 2020 2020 2020 203c 2f78  on>..        </x\n+000124f0: 7364 3a61 7474 7269 6275 7465 3e0d 0a20  sd:attribute>.. \n+00012500: 2020 2020 2020 203c 7873 643a 6174 7472         <xsd:attr\n+00012510: 6962 7574 6520 6e61 6d65 3d22 636c 6965  ibute name=\"clie\n+00012520: 6e74 2d74 7275 7374 2d63 6572 742d 636f  nt-trust-cert-co\n+00012530: 6c6c 6563 7469 6f6e 2d70 6174 6822 2074  llection-path\" t\n+00012540: 7970 653d 2278 7364 3a73 7472 696e 6722  ype=\"xsd:string\"\n+00012550: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00012560: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00012570: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00012580: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00012590: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+000125a0: 6520 7472 7573 7465 6420 636c 6965 6e74  e trusted client\n+000125b0: 2063 6572 742e 205d 5d3e 3c2f 7873 643a   cert. ]]></xsd:\n+000125c0: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+000125d0: 2020 2020 2020 2020 2020 2020 3c2f 7873              </xs\n+000125e0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+000125f0: 2020 2020 2020 203c 2f78 7364 3a61 7474         </xsd:att\n+00012600: 7269 6275 7465 3e0d 0a20 2020 203c 2f78  ribute>..    </x\n+00012610: 7364 3a63 6f6d 706c 6578 5479 7065 3e0d  sd:complexType>.\n+00012620: 0a0d 0a20 2020 203c 7873 643a 656c 656d  ...    <xsd:elem\n+00012630: 656e 7420 6e61 6d65 3d22 7373 6c22 2074  ent name=\"ssl\" t\n+00012640: 7970 653d 2273 736c 5479 7065 223e 0d0a  ype=\"sslType\">..\n+00012650: 2020 2020 2020 2020 3c78 7364 3a61 6e6e          <xsd:ann\n+00012660: 6f74 6174 696f 6e3e 0d0a 2020 2020 2020  otation>..      \n+00012670: 2020 2020 2020 3c78 7364 3a64 6f63 756d        <xsd:docum\n+00012680: 656e 7461 7469 6f6e 3e3c 215b 4344 4154  entation><![CDAT\n+00012690: 415b 2054 6865 2073 736c 2063 6f6e 6669  A[ The ssl confi\n+000126a0: 6720 5d5d 3e3c 2f78 7364 3a64 6f63 756d  g ]]></xsd:docum\n+000126b0: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+000126c0: 2020 2020 2020 203c 7873 643a 6170 7069         <xsd:appi\n+000126d0: 6e66 6f3e 0d0a 2020 2020 2020 2020 2020  nfo>..          \n+000126e0: 2020 2020 2020 3c74 6f6f 6c3a 616e 6e6f        <tool:anno\n+000126f0: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00012700: 2020 2020 2020 2020 2020 2020 203c 746f               <to\n+00012710: 6f6c 3a65 7870 6f72 7473 2074 7970 653d  ol:exports type=\n+00012720: 226f 7267 2e61 7061 6368 652e 6475 6262  \"org.apache.dubb\n+00012730: 6f2e 636f 6e66 6967 2e53 736c 436f 6e66  o.config.SslConf\n+00012740: 6967 222f 3e0d 0a20 2020 2020 2020 2020  ig\"/>..         \n+00012750: 2020 2020 2020 203c 2f74 6f6f 6c3a 616e         </tool:an\n+00012760: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00012770: 2020 2020 2020 203c 2f78 7364 3a61 7070         </xsd:app\n+00012780: 696e 666f 3e0d 0a20 2020 2020 2020 203c  info>..        <\n+00012790: 2f78 7364 3a61 6e6e 6f74 6174 696f 6e3e  /xsd:annotation>\n+000127a0: 0d0a 2020 2020 3c2f 7873 643a 656c 656d  ..    </xsd:elem\n+000127b0: 656e 743e 0d0a 0d0a 2020 2020 3c78 7364  ent>....    <xsd\n+000127c0: 3a63 6f6d 706c 6578 5479 7065 206e 616d  :complexType nam\n+000127d0: 653d 2261 6e6e 6f74 6174 696f 6e54 7970  e=\"annotationTyp\n+000127e0: 6522 3e0d 0a20 2020 2020 2020 203c 7873  e\">..        <xs\n+000127f0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+00012800: 3d22 6964 2220 7479 7065 3d22 7873 643a  =\"id\" type=\"xsd:\n+00012810: 4944 223e 0d0a 2020 2020 2020 2020 2020  ID\">..          \n+00012820: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00012830: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00012840: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00012850: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+00012860: 2054 6865 2075 6e69 7175 6520 6964 656e   The unique iden\n+00012870: 7469 6669 6572 2066 6f72 2061 2062 6561  tifier for a bea\n+00012880: 6e2e 205d 5d3e 3c2f 7873 643a 646f 6375  n. ]]></xsd:docu\n+00012890: 6d65 6e74 6174 696f 6e3e 0d0a 2020 2020  mentation>..    \n+000128a0: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+000128b0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+000128c0: 2020 203c 2f78 7364 3a61 7474 7269 6275     </xsd:attribu\n+000128d0: 7465 3e0d 0a20 2020 2020 2020 203c 7873  te>..        <xs\n+000128e0: 643a 6174 7472 6962 7574 6520 6e61 6d65  d:attribute name\n+000128f0: 3d22 7061 636b 6167 6522 2074 7970 653d  =\"package\" type=\n+00012900: 2278 7364 3a73 7472 696e 6722 3e0d 0a20  \"xsd:string\">.. \n+00012910: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00012920: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00012930: 2020 2020 2020 2020 2020 2020 203c 7873               <xs\n+00012940: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00012950: 3c21 5b43 4441 5441 5b20 5468 6520 7363  <![CDATA[ The sc\n+00012960: 616e 2070 6163 6b61 6765 2e20 5d5d 3e3c  an package. ]]><\n+00012970: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00012980: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00012990: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+000129a0: 6e3e 0d0a 2020 2020 2020 2020 3c2f 7873  n>..        </xs\n+000129b0: 643a 6174 7472 6962 7574 653e 0d0a 2020  d:attribute>..  \n+000129c0: 2020 3c2f 7873 643a 636f 6d70 6c65 7854    </xsd:complexT\n+000129d0: 7970 653e 0d0a 0d0a 2020 2020 3c78 7364  ype>....    <xsd\n+000129e0: 3a65 6c65 6d65 6e74 206e 616d 653d 2261  :element name=\"a\n+000129f0: 6e6e 6f74 6174 696f 6e22 2074 7970 653d  nnotation\" type=\n+00012a00: 2261 6e6e 6f74 6174 696f 6e54 7970 6522  \"annotationType\"\n+00012a10: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+00012a20: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00012a30: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+00012a40: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+00012a50: 4441 5441 5b20 5468 6520 616e 6e6f 7461  DATA[ The annota\n+00012a60: 7469 6f6e 2063 6f6e 6669 6720 5d5d 3e3c  tion config ]]><\n+00012a70: 2f78 7364 3a64 6f63 756d 656e 7461 7469  /xsd:documentati\n+00012a80: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00012a90: 203c 7873 643a 6170 7069 6e66 6f3e 0d0a   <xsd:appinfo>..\n+00012aa0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00012ab0: 3c74 6f6f 6c3a 616e 6e6f 7461 7469 6f6e  <tool:annotation\n+00012ac0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n+00012ad0: 2020 2020 2020 203c 746f 6f6c 3a65 7870         <tool:exp\n+00012ae0: 6f72 7473 2074 7970 653d 226f 7267 2e61  orts type=\"org.a\n+00012af0: 7061 6368 652e 6475 6262 6f2e 636f 6e66  pache.dubbo.conf\n+00012b00: 6967 2e53 6572 7669 6365 436f 6e66 6967  ig.ServiceConfig\n+00012b10: 222f 3e0d 0a20 2020 2020 2020 2020 2020  \"/>..           \n+00012b20: 2020 2020 2020 2020 203c 746f 6f6c 3a65           <tool:e\n+00012b30: 7870 6f72 7473 2074 7970 653d 226f 7267  xports type=\"org\n+00012b40: 2e61 7061 6368 652e 6475 6262 6f2e 636f  .apache.dubbo.co\n+00012b50: 6e66 6967 2e52 6566 6572 656e 6365 436f  nfig.ReferenceCo\n+00012b60: 6e66 6967 222f 3e0d 0a20 2020 2020 2020  nfig\"/>..       \n+00012b70: 2020 2020 2020 2020 203c 2f74 6f6f 6c3a           </tool:\n+00012b80: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00012b90: 2020 2020 2020 2020 203c 2f78 7364 3a61           </xsd:a\n+00012ba0: 7070 696e 666f 3e0d 0a20 2020 2020 2020  ppinfo>..       \n+00012bb0: 203c 2f78 7364 3a61 6e6e 6f74 6174 696f   </xsd:annotatio\n+00012bc0: 6e3e 0d0a 2020 2020 3c2f 7873 643a 656c  n>..    </xsd:el\n+00012bd0: 656d 656e 743e 0d0a 0d0a 2020 2020 3c78  ement>....    <x\n+00012be0: 7364 3a65 6c65 6d65 6e74 206e 616d 653d  sd:element name=\n+00012bf0: 2261 7070 6c69 6361 7469 6f6e 2220 7479  \"application\" ty\n+00012c00: 7065 3d22 6170 706c 6963 6174 696f 6e54  pe=\"applicationT\n+00012c10: 7970 6522 3e0d 0a20 2020 2020 2020 203c  ype\">..        <\n+00012c20: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00012c30: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00012c40: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00012c50: 3c21 5b43 4441 5441 5b20 5468 6520 6170  <![CDATA[ The ap\n+00012c60: 706c 6963 6174 696f 6e20 636f 6e66 6967  plication config\n+00012c70: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00012c80: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00012c90: 2020 2020 2020 3c78 7364 3a61 7070 696e        <xsd:appin\n+00012ca0: 666f 3e0d 0a20 2020 2020 2020 2020 2020  fo>..           \n+00012cb0: 2020 2020 203c 746f 6f6c 3a61 6e6e 6f74       <tool:annot\n+00012cc0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00012cd0: 2020 2020 2020 2020 2020 2020 3c74 6f6f              <too\n+00012ce0: 6c3a 6578 706f 7274 7320 7479 7065 3d22  l:exports type=\"\n+00012cf0: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+00012d00: 2e63 6f6e 6669 672e 4170 706c 6963 6174  .config.Applicat\n+00012d10: 696f 6e43 6f6e 6669 6722 2f3e 0d0a 2020  ionConfig\"/>..  \n+00012d20: 2020 2020 2020 2020 2020 2020 2020 3c2f                </\n+00012d30: 746f 6f6c 3a61 6e6e 6f74 6174 696f 6e3e  tool:annotation>\n+00012d40: 0d0a 2020 2020 2020 2020 2020 2020 3c2f  ..            </\n+00012d50: 7873 643a 6170 7069 6e66 6f3e 0d0a 2020  xsd:appinfo>..  \n+00012d60: 2020 2020 2020 3c2f 7873 643a 616e 6e6f        </xsd:anno\n+00012d70: 7461 7469 6f6e 3e0d 0a20 2020 203c 2f78  tation>..    </x\n+00012d80: 7364 3a65 6c65 6d65 6e74 3e0d 0a0d 0a20  sd:element>.... \n+00012d90: 2020 203c 7873 643a 656c 656d 656e 7420     <xsd:element \n+00012da0: 6e61 6d65 3d22 6d6f 6475 6c65 2220 7479  name=\"module\" ty\n+00012db0: 7065 3d22 6d6f 6475 6c65 5479 7065 223e  pe=\"moduleType\">\n+00012dc0: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+00012dd0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00012de0: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00012df0: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00012e00: 4154 415b 2054 6865 206d 6f64 756c 6520  ATA[ The module \n+00012e10: 636f 6e66 6967 205d 5d3e 3c2f 7873 643a  config ]]></xsd:\n+00012e20: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00012e30: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00012e40: 3a61 7070 696e 666f 3e0d 0a20 2020 2020  :appinfo>..     \n+00012e50: 2020 2020 2020 2020 2020 203c 746f 6f6c             <tool\n+00012e60: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00012e70: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00012e80: 2020 3c74 6f6f 6c3a 6578 706f 7274 7320    <tool:exports \n+00012e90: 7479 7065 3d22 6f72 672e 6170 6163 6865  type=\"org.apache\n+00012ea0: 2e64 7562 626f 2e63 6f6e 6669 672e 4d6f  .dubbo.config.Mo\n+00012eb0: 6475 6c65 436f 6e66 6967 222f 3e0d 0a20  duleConfig\"/>.. \n+00012ec0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+00012ed0: 2f74 6f6f 6c3a 616e 6e6f 7461 7469 6f6e  /tool:annotation\n+00012ee0: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+00012ef0: 2f78 7364 3a61 7070 696e 666f 3e0d 0a20  /xsd:appinfo>.. \n+00012f00: 2020 2020 2020 203c 2f78 7364 3a61 6e6e         </xsd:ann\n+00012f10: 6f74 6174 696f 6e3e 0d0a 2020 2020 3c2f  otation>..    </\n+00012f20: 7873 643a 656c 656d 656e 743e 0d0a 0d0a  xsd:element>....\n+00012f30: 2020 2020 3c78 7364 3a65 6c65 6d65 6e74      <xsd:element\n+00012f40: 206e 616d 653d 2272 6567 6973 7472 7922   name=\"registry\"\n+00012f50: 2074 7970 653d 2272 6567 6973 7472 7954   type=\"registryT\n+00012f60: 7970 6522 3e0d 0a20 2020 2020 2020 203c  ype\">..        <\n+00012f70: 7873 643a 616e 6e6f 7461 7469 6f6e 3e0d  xsd:annotation>.\n+00012f80: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00012f90: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00012fa0: 3c21 5b43 4441 5441 5b20 5468 6520 7265  <![CDATA[ The re\n+00012fb0: 6769 7374 7279 2063 6f6e 6669 6720 5d5d  gistry config ]]\n+00012fc0: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+00012fd0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00012fe0: 2020 203c 7873 643a 6170 7069 6e66 6f3e     <xsd:appinfo>\n+00012ff0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00013000: 2020 3c74 6f6f 6c3a 616e 6e6f 7461 7469    <tool:annotati\n+00013010: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00013020: 2020 2020 2020 2020 203c 746f 6f6c 3a65           <tool:e\n+00013030: 7870 6f72 7473 2074 7970 653d 226f 7267  xports type=\"org\n+00013040: 2e61 7061 6368 652e 6475 6262 6f2e 636f  .apache.dubbo.co\n+00013050: 6e66 6967 2e52 6567 6973 7472 7943 6f6e  nfig.RegistryCon\n+00013060: 6669 6722 2f3e 0d0a 2020 2020 2020 2020  fig\"/>..        \n+00013070: 2020 2020 2020 2020 3c2f 746f 6f6c 3a61          </tool:a\n+00013080: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00013090: 2020 2020 2020 2020 3c2f 7873 643a 6170          </xsd:ap\n+000130a0: 7069 6e66 6f3e 0d0a 2020 2020 2020 2020  pinfo>..        \n+000130b0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+000130c0: 3e0d 0a20 2020 203c 2f78 7364 3a65 6c65  >..    </xsd:ele\n+000130d0: 6d65 6e74 3e0d 0a0d 0a20 2020 203c 7873  ment>....    <xs\n+000130e0: 643a 656c 656d 656e 7420 6e61 6d65 3d22  d:element name=\"\n+000130f0: 6d65 7461 6461 7461 2d72 6570 6f72 7422  metadata-report\"\n+00013100: 2074 7970 653d 226d 6574 6164 6174 6152   type=\"metadataR\n+00013110: 6570 6f72 7454 7970 6522 3e0d 0a20 2020  eportType\">..   \n+00013120: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+00013130: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00013140: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+00013150: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+00013160: 5468 6520 6d65 7461 6461 7461 5265 706f  The metadataRepo\n+00013170: 7274 2063 6f6e 6669 6720 5d5d 3e3c 2f78  rt config ]]></x\n+00013180: 7364 3a64 6f63 756d 656e 7461 7469 6f6e  sd:documentation\n+00013190: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n+000131a0: 7873 643a 6170 7069 6e66 6f3e 0d0a 2020  xsd:appinfo>..  \n+000131b0: 2020 2020 2020 2020 2020 2020 2020 3c74                <t\n+000131c0: 6f6f 6c3a 616e 6e6f 7461 7469 6f6e 3e0d  ool:annotation>.\n+000131d0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000131e0: 2020 2020 203c 746f 6f6c 3a65 7870 6f72       <tool:expor\n+000131f0: 7473 2074 7970 653d 226f 7267 2e61 7061  ts type=\"org.apa\n+00013200: 6368 652e 6475 6262 6f2e 636f 6e66 6967  che.dubbo.config\n+00013210: 2e4d 6574 6164 6174 6152 6570 6f72 7443  .MetadataReportC\n+00013220: 6f6e 6669 6722 2f3e 0d0a 2020 2020 2020  onfig\"/>..      \n+00013230: 2020 2020 2020 2020 2020 3c2f 746f 6f6c            </tool\n+00013240: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00013250: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00013260: 6170 7069 6e66 6f3e 0d0a 2020 2020 2020  appinfo>..      \n+00013270: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+00013280: 6f6e 3e0d 0a20 2020 203c 2f78 7364 3a65  on>..    </xsd:e\n+00013290: 6c65 6d65 6e74 3e0d 0a0d 0a20 2020 203c  lement>....    <\n+000132a0: 7873 643a 656c 656d 656e 7420 6e61 6d65  xsd:element name\n+000132b0: 3d22 636f 6e66 6967 2d63 656e 7465 7222  =\"config-center\"\n+000132c0: 2074 7970 653d 2263 6f6e 6669 6743 656e   type=\"configCen\n+000132d0: 7465 7254 7970 6522 3e0d 0a20 2020 2020  terType\">..     \n+000132e0: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+000132f0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00013300: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+00013310: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+00013320: 6520 636f 6e66 6967 2063 656e 7465 7220  e config center \n+00013330: 636f 6e66 6967 205d 5d3e 3c2f 7873 643a  config ]]></xsd:\n+00013340: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00013350: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00013360: 3a61 7070 696e 666f 3e0d 0a20 2020 2020  :appinfo>..     \n+00013370: 2020 2020 2020 2020 2020 203c 746f 6f6c             <tool\n+00013380: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00013390: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000133a0: 2020 3c74 6f6f 6c3a 6578 706f 7274 7320    <tool:exports \n+000133b0: 7479 7065 3d22 6f72 672e 6170 6163 6865  type=\"org.apache\n+000133c0: 2e64 7562 626f 2e63 6f6e 6669 672e 436f  .dubbo.config.Co\n+000133d0: 6e66 6967 4365 6e74 6572 436f 6e66 6967  nfigCenterConfig\n+000133e0: 222f 3e0d 0a20 2020 2020 2020 2020 2020  \"/>..           \n+000133f0: 2020 2020 203c 2f74 6f6f 6c3a 616e 6e6f       </tool:anno\n+00013400: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00013410: 2020 2020 203c 2f78 7364 3a61 7070 696e       </xsd:appin\n+00013420: 666f 3e0d 0a20 2020 2020 2020 203c 2f78  fo>..        </x\n+00013430: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+00013440: 2020 2020 3c2f 7873 643a 656c 656d 656e      </xsd:elemen\n+00013450: 743e 0d0a 0d0a 2020 2020 3c78 7364 3a65  t>....    <xsd:e\n+00013460: 6c65 6d65 6e74 206e 616d 653d 226d 6f6e  lement name=\"mon\n+00013470: 6974 6f72 2220 7479 7065 3d22 6d6f 6e69  itor\" type=\"moni\n+00013480: 746f 7254 7970 6522 3e0d 0a20 2020 2020  torType\">..     \n+00013490: 2020 203c 7873 643a 616e 6e6f 7461 7469     <xsd:annotati\n+000134a0: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+000134b0: 203c 7873 643a 646f 6375 6d65 6e74 6174   <xsd:documentat\n+000134c0: 696f 6e3e 3c21 5b43 4441 5441 5b20 5468  ion><![CDATA[ Th\n+000134d0: 6520 6c6f 6773 7461 7420 6d6f 6e69 746f  e logstat monito\n+000134e0: 7220 636f 6e66 6967 205d 5d3e 3c2f 7873  r config ]]></xs\n+000134f0: 643a 646f 6375 6d65 6e74 6174 696f 6e3e  d:documentation>\n+00013500: 0d0a 2020 2020 2020 2020 2020 2020 3c78  ..            <x\n+00013510: 7364 3a61 7070 696e 666f 3e0d 0a20 2020  sd:appinfo>..   \n+00013520: 2020 2020 2020 2020 2020 2020 203c 746f               <to\n+00013530: 6f6c 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  ol:annotation>..\n+00013540: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00013550: 2020 2020 3c74 6f6f 6c3a 6578 706f 7274      <tool:export\n+00013560: 7320 7479 7065 3d22 6f72 672e 6170 6163  s type=\"org.apac\n+00013570: 6865 2e64 7562 626f 2e63 6f6e 6669 672e  he.dubbo.config.\n+00013580: 4d6f 6e69 746f 7243 6f6e 6669 6722 2f3e  MonitorConfig\"/>\n+00013590: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+000135a0: 2020 3c2f 746f 6f6c 3a61 6e6e 6f74 6174    </tool:annotat\n+000135b0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n+000135c0: 2020 3c2f 7873 643a 6170 7069 6e66 6f3e    </xsd:appinfo>\n+000135d0: 0d0a 2020 2020 2020 2020 3c2f 7873 643a  ..        </xsd:\n+000135e0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+000135f0: 203c 2f78 7364 3a65 6c65 6d65 6e74 3e0d   </xsd:element>.\n+00013600: 0a0d 0a20 2020 203c 7873 643a 656c 656d  ...    <xsd:elem\n+00013610: 656e 7420 6e61 6d65 3d22 7072 6f76 6964  ent name=\"provid\n+00013620: 6572 2220 7479 7065 3d22 7072 6f76 6964  er\" type=\"provid\n+00013630: 6572 5479 7065 223e 0d0a 2020 2020 2020  erType\">..      \n+00013640: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00013650: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00013660: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00013670: 6f6e 3e3c 215b 4344 4154 415b 2045 7870  on><![CDATA[ Exp\n+00013680: 6f72 7420 7365 7276 6963 6520 6465 6661  ort service defa\n+00013690: 756c 7420 636f 6e66 6967 205d 5d3e 3c2f  ult config ]]></\n+000136a0: 7873 643a 646f 6375 6d65 6e74 6174 696f  xsd:documentatio\n+000136b0: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+000136c0: 3c78 7364 3a61 7070 696e 666f 3e0d 0a20  <xsd:appinfo>.. \n+000136d0: 2020 2020 2020 2020 2020 2020 2020 203c                 <\n+000136e0: 746f 6f6c 3a61 6e6e 6f74 6174 696f 6e3e  tool:annotation>\n+000136f0: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00013700: 2020 2020 2020 3c74 6f6f 6c3a 6578 706f        <tool:expo\n+00013710: 7274 7320 7479 7065 3d22 6f72 672e 6170  rts type=\"org.ap\n+00013720: 6163 6865 2e64 7562 626f 2e63 6f6e 6669  ache.dubbo.confi\n+00013730: 672e 5072 6f76 6964 6572 436f 6e66 6967  g.ProviderConfig\n+00013740: 222f 3e0d 0a20 2020 2020 2020 2020 2020  \"/>..           \n+00013750: 2020 2020 203c 2f74 6f6f 6c3a 616e 6e6f       </tool:anno\n+00013760: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00013770: 2020 2020 203c 2f78 7364 3a61 7070 696e       </xsd:appin\n+00013780: 666f 3e0d 0a20 2020 2020 2020 203c 2f78  fo>..        </x\n+00013790: 7364 3a61 6e6e 6f74 6174 696f 6e3e 0d0a  sd:annotation>..\n+000137a0: 2020 2020 3c2f 7873 643a 656c 656d 656e      </xsd:elemen\n+000137b0: 743e 0d0a 0d0a 2020 2020 3c78 7364 3a65  t>....    <xsd:e\n+000137c0: 6c65 6d65 6e74 206e 616d 653d 2263 6f6e  lement name=\"con\n+000137d0: 7375 6d65 7222 2074 7970 653d 2263 6f6e  sumer\" type=\"con\n+000137e0: 7375 6d65 7254 7970 6522 3e0d 0a20 2020  sumerType\">..   \n+000137f0: 2020 2020 203c 7873 643a 616e 6e6f 7461       <xsd:annota\n+00013800: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00013810: 2020 203c 7873 643a 646f 6375 6d65 6e74     <xsd:document\n+00013820: 6174 696f 6e3e 3c21 5b43 4441 5441 5b20  ation><![CDATA[ \n+00013830: 5365 7276 6963 6520 7265 6665 7265 6e63  Service referenc\n+00013840: 6520 6465 6661 756c 7420 636f 6e66 6967  e default config\n+00013850: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+00013860: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+00013870: 2020 2020 2020 3c78 7364 3a61 7070 696e        <xsd:appin\n+00013880: 666f 3e0d 0a20 2020 2020 2020 2020 2020  fo>..           \n+00013890: 2020 2020 203c 746f 6f6c 3a61 6e6e 6f74       <tool:annot\n+000138a0: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+000138b0: 2020 2020 2020 2020 2020 2020 3c74 6f6f              <too\n+000138c0: 6c3a 6578 706f 7274 7320 7479 7065 3d22  l:exports type=\"\n+000138d0: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+000138e0: 2e63 6f6e 6669 672e 436f 6e73 756d 6572  .config.Consumer\n+000138f0: 436f 6e66 6967 222f 3e0d 0a20 2020 2020  Config\"/>..     \n+00013900: 2020 2020 2020 2020 2020 203c 2f74 6f6f             </too\n+00013910: 6c3a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  l:annotation>.. \n+00013920: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00013930: 3a61 7070 696e 666f 3e0d 0a20 2020 2020  :appinfo>..     \n+00013940: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+00013950: 696f 6e3e 0d0a 2020 2020 3c2f 7873 643a  ion>..    </xsd:\n+00013960: 656c 656d 656e 743e 0d0a 0d0a 2020 2020  element>....    \n+00013970: 3c78 7364 3a65 6c65 6d65 6e74 206e 616d  <xsd:element nam\n+00013980: 653d 2270 726f 746f 636f 6c22 2074 7970  e=\"protocol\" typ\n+00013990: 653d 2270 726f 746f 636f 6c54 7970 6522  e=\"protocolType\"\n+000139a0: 3e0d 0a20 2020 2020 2020 203c 7873 643a  >..        <xsd:\n+000139b0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+000139c0: 2020 2020 2020 2020 203c 7873 643a 646f           <xsd:do\n+000139d0: 6375 6d65 6e74 6174 696f 6e3e 3c21 5b43  cumentation><![C\n+000139e0: 4441 5441 5b20 5365 7276 6963 6520 7072  DATA[ Service pr\n+000139f0: 6f76 6964 6572 2063 6f6e 6669 6720 5d5d  ovider config ]]\n+00013a00: 3e3c 2f78 7364 3a64 6f63 756d 656e 7461  ></xsd:documenta\n+00013a10: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n+00013a20: 2020 203c 7873 643a 6170 7069 6e66 6f3e     <xsd:appinfo>\n+00013a30: 0d0a 2020 2020 2020 2020 2020 2020 2020  ..              \n+00013a40: 2020 3c74 6f6f 6c3a 616e 6e6f 7461 7469    <tool:annotati\n+00013a50: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00013a60: 2020 2020 2020 2020 203c 746f 6f6c 3a65           <tool:e\n+00013a70: 7870 6f72 7473 2074 7970 653d 226f 7267  xports type=\"org\n+00013a80: 2e61 7061 6368 652e 6475 6262 6f2e 636f  .apache.dubbo.co\n+00013a90: 6e66 6967 2e50 726f 746f 636f 6c43 6f6e  nfig.ProtocolCon\n+00013aa0: 6669 6722 2f3e 0d0a 2020 2020 2020 2020  fig\"/>..        \n+00013ab0: 2020 2020 2020 2020 3c2f 746f 6f6c 3a61          </tool:a\n+00013ac0: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00013ad0: 2020 2020 2020 2020 3c2f 7873 643a 6170          </xsd:ap\n+00013ae0: 7069 6e66 6f3e 0d0a 2020 2020 2020 2020  pinfo>..        \n+00013af0: 3c2f 7873 643a 616e 6e6f 7461 7469 6f6e  </xsd:annotation\n+00013b00: 3e0d 0a20 2020 203c 2f78 7364 3a65 6c65  >..    </xsd:ele\n+00013b10: 6d65 6e74 3e0d 0a0d 0a20 2020 203c 7873  ment>....    <xs\n+00013b20: 643a 656c 656d 656e 7420 6e61 6d65 3d22  d:element name=\"\n+00013b30: 7365 7276 6963 6522 2074 7970 653d 2273  service\" type=\"s\n+00013b40: 6572 7669 6365 5479 7065 223e 0d0a 2020  erviceType\">..  \n+00013b50: 2020 2020 2020 3c78 7364 3a61 6e6e 6f74        <xsd:annot\n+00013b60: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00013b70: 2020 2020 3c78 7364 3a64 6f63 756d 656e      <xsd:documen\n+00013b80: 7461 7469 6f6e 3e3c 215b 4344 4154 415b  tation><![CDATA[\n+00013b90: 2045 7870 6f72 7420 7365 7276 6963 6520   Export service \n+00013ba0: 636f 6e66 6967 205d 5d3e 3c2f 7873 643a  config ]]></xsd:\n+00013bb0: 646f 6375 6d65 6e74 6174 696f 6e3e 0d0a  documentation>..\n+00013bc0: 2020 2020 2020 2020 2020 2020 3c78 7364              <xsd\n+00013bd0: 3a61 7070 696e 666f 3e0d 0a20 2020 2020  :appinfo>..     \n+00013be0: 2020 2020 2020 2020 2020 203c 746f 6f6c             <tool\n+00013bf0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00013c00: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00013c10: 2020 3c74 6f6f 6c3a 6578 706f 7274 7320    <tool:exports \n+00013c20: 7479 7065 3d22 6f72 672e 6170 6163 6865  type=\"org.apache\n+00013c30: 2e64 7562 626f 2e63 6f6e 6669 672e 5365  .dubbo.config.Se\n+00013c40: 7276 6963 6543 6f6e 6669 6722 2f3e 0d0a  rviceConfig\"/>..\n+00013c50: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00013c60: 3c2f 746f 6f6c 3a61 6e6e 6f74 6174 696f  </tool:annotatio\n+00013c70: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00013c80: 3c2f 7873 643a 6170 7069 6e66 6f3e 0d0a  </xsd:appinfo>..\n+00013c90: 2020 2020 2020 2020 3c2f 7873 643a 616e          </xsd:an\n+00013ca0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 203c  notation>..    <\n+00013cb0: 2f78 7364 3a65 6c65 6d65 6e74 3e0d 0a0d  /xsd:element>...\n+00013cc0: 0a20 2020 203c 7873 643a 656c 656d 656e  .    <xsd:elemen\n+00013cd0: 7420 6e61 6d65 3d22 7265 6665 7265 6e63  t name=\"referenc\n+00013ce0: 6522 2074 7970 653d 2272 6566 6572 656e  e\" type=\"referen\n+00013cf0: 6365 5479 7065 223e 0d0a 2020 2020 2020  ceType\">..      \n+00013d00: 2020 3c78 7364 3a61 6e6e 6f74 6174 696f    <xsd:annotatio\n+00013d10: 6e3e 0d0a 2020 2020 2020 2020 2020 2020  n>..            \n+00013d20: 3c78 7364 3a64 6f63 756d 656e 7461 7469  <xsd:documentati\n+00013d30: 6f6e 3e3c 215b 4344 4154 415b 2052 6566  on><![CDATA[ Ref\n+00013d40: 6572 656e 6365 2073 6572 7669 6365 2063  erence service c\n+00013d50: 6f6e 6669 6720 5d5d 3e3c 2f78 7364 3a64  onfig ]]></xsd:d\n+00013d60: 6f63 756d 656e 7461 7469 6f6e 3e0d 0a20  ocumentation>.. \n+00013d70: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00013d80: 6170 7069 6e66 6f3e 0d0a 2020 2020 2020  appinfo>..      \n+00013d90: 2020 2020 2020 2020 2020 3c74 6f6f 6c3a            <tool:\n+00013da0: 616e 6e6f 7461 7469 6f6e 3e0d 0a20 2020  annotation>..   \n+00013db0: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+00013dc0: 203c 746f 6f6c 3a65 7870 6f72 7473 2074   <tool:exports t\n+00013dd0: 7970 653d 226f 7267 2e61 7061 6368 652e  ype=\"org.apache.\n+00013de0: 6475 6262 6f2e 636f 6e66 6967 2e52 6566  dubbo.config.Ref\n+00013df0: 6572 656e 6365 436f 6e66 6967 222f 3e0d  erenceConfig\"/>.\n+00013e00: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+00013e10: 203c 2f74 6f6f 6c3a 616e 6e6f 7461 7469   </tool:annotati\n+00013e20: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00013e30: 203c 2f78 7364 3a61 7070 696e 666f 3e0d   </xsd:appinfo>.\n+00013e40: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+00013e50: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00013e60: 3c2f 7873 643a 656c 656d 656e 743e 0d0a  </xsd:element>..\n+00013e70: 0d0a 2020 2020 3c78 7364 3a65 6c65 6d65  ..    <xsd:eleme\n+00013e80: 6e74 206e 616d 653d 226d 6574 686f 6422  nt name=\"method\"\n+00013e90: 2074 7970 653d 226d 6574 686f 6454 7970   type=\"methodTyp\n+00013ea0: 6522 3e0d 0a20 2020 2020 2020 203c 7873  e\">..        <xs\n+00013eb0: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00013ec0: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00013ed0: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00013ee0: 5b43 4441 5441 5b20 5468 6520 7365 7276  [CDATA[ The serv\n+00013ef0: 6963 6520 6d65 7468 6f64 2063 6f6e 6669  ice method confi\n+00013f00: 6720 5d5d 3e3c 2f78 7364 3a64 6f63 756d  g ]]></xsd:docum\n+00013f10: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00013f20: 2020 2020 2020 203c 7873 643a 6170 7069         <xsd:appi\n+00013f30: 6e66 6f3e 0d0a 2020 2020 2020 2020 2020  nfo>..          \n+00013f40: 2020 2020 2020 3c74 6f6f 6c3a 616e 6e6f        <tool:anno\n+00013f50: 7461 7469 6f6e 3e0d 0a20 2020 2020 2020  tation>..       \n+00013f60: 2020 2020 2020 2020 2020 2020 203c 746f               <to\n+00013f70: 6f6c 3a65 7870 6f72 7473 2074 7970 653d  ol:exports type=\n+00013f80: 226f 7267 2e61 7061 6368 652e 6475 6262  \"org.apache.dubb\n+00013f90: 6f2e 636f 6e66 6967 2e4d 6574 686f 6443  o.config.MethodC\n+00013fa0: 6f6e 6669 6722 2f3e 0d0a 2020 2020 2020  onfig\"/>..      \n+00013fb0: 2020 2020 2020 2020 2020 3c2f 746f 6f6c            </tool\n+00013fc0: 3a61 6e6e 6f74 6174 696f 6e3e 0d0a 2020  :annotation>..  \n+00013fd0: 2020 2020 2020 2020 2020 3c2f 7873 643a            </xsd:\n+00013fe0: 6170 7069 6e66 6f3e 0d0a 2020 2020 2020  appinfo>..      \n+00013ff0: 2020 3c2f 7873 643a 616e 6e6f 7461 7469    </xsd:annotati\n+00014000: 6f6e 3e0d 0a20 2020 203c 2f78 7364 3a65  on>..    </xsd:e\n+00014010: 6c65 6d65 6e74 3e0d 0a0d 0a20 2020 203c  lement>....    <\n+00014020: 7873 643a 656c 656d 656e 7420 6e61 6d65  xsd:element name\n+00014030: 3d22 6172 6775 6d65 6e74 2220 7479 7065  =\"argument\" type\n+00014040: 3d22 6172 6775 6d65 6e74 5479 7065 223e  =\"argumentType\">\n+00014050: 0d0a 2020 2020 2020 2020 3c78 7364 3a61  ..        <xsd:a\n+00014060: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00014070: 2020 2020 2020 2020 3c78 7364 3a64 6f63          <xsd:doc\n+00014080: 756d 656e 7461 7469 6f6e 3e3c 215b 4344  umentation><![CD\n+00014090: 4154 415b 2054 6865 2073 6572 7669 6365  ATA[ The service\n+000140a0: 2061 7267 756d 656e 7420 636f 6e66 6967   argument config\n+000140b0: 205d 5d3e 3c2f 7873 643a 646f 6375 6d65   ]]></xsd:docume\n+000140c0: 6e74 6174 696f 6e3e 0d0a 2020 2020 2020  ntation>..      \n+000140d0: 2020 2020 2020 3c78 7364 3a61 7070 696e        <xsd:appin\n+000140e0: 666f 3e0d 0a20 2020 2020 2020 2020 2020  fo>..           \n+000140f0: 2020 2020 203c 746f 6f6c 3a61 6e6e 6f74       <tool:annot\n+00014100: 6174 696f 6e3e 0d0a 2020 2020 2020 2020  ation>..        \n+00014110: 2020 2020 2020 2020 2020 2020 3c74 6f6f              <too\n+00014120: 6c3a 6578 706f 7274 7320 7479 7065 3d22  l:exports type=\"\n+00014130: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+00014140: 2e63 6f6e 6669 672e 4172 6775 6d65 6e74  .config.Argument\n+00014150: 436f 6e66 6967 222f 3e0d 0a20 2020 2020  Config\"/>..     \n+00014160: 2020 2020 2020 2020 2020 203c 2f74 6f6f             </too\n+00014170: 6c3a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  l:annotation>.. \n+00014180: 2020 2020 2020 2020 2020 203c 2f78 7364             </xsd\n+00014190: 3a61 7070 696e 666f 3e0d 0a20 2020 2020  :appinfo>..     \n+000141a0: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+000141b0: 696f 6e3e 0d0a 2020 2020 3c2f 7873 643a  ion>..    </xsd:\n+000141c0: 656c 656d 656e 743e 0d0a 0d0a 2020 2020  element>....    \n+000141d0: 3c78 7364 3a65 6c65 6d65 6e74 206e 616d  <xsd:element nam\n+000141e0: 653d 2270 6172 616d 6574 6572 2220 7479  e=\"parameter\" ty\n+000141f0: 7065 3d22 7061 7261 6d65 7465 7254 7970  pe=\"parameterTyp\n+00014200: 6522 3e0d 0a20 2020 2020 2020 203c 7873  e\">..        <xs\n+00014210: 643a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  d:annotation>.. \n+00014220: 2020 2020 2020 2020 2020 203c 7873 643a             <xsd:\n+00014230: 646f 6375 6d65 6e74 6174 696f 6e3e 3c21  documentation><!\n+00014240: 5b43 4441 5441 5b20 5468 6520 7365 7276  [CDATA[ The serv\n+00014250: 6963 6520 7572 6c20 7061 7261 6d65 7465  ice url paramete\n+00014260: 7220 5d5d 3e3c 2f78 7364 3a64 6f63 756d  r ]]></xsd:docum\n+00014270: 656e 7461 7469 6f6e 3e0d 0a20 2020 2020  entation>..     \n+00014280: 2020 203c 2f78 7364 3a61 6e6e 6f74 6174     </xsd:annotat\n+00014290: 696f 6e3e 0d0a 2020 2020 3c2f 7873 643a  ion>..    </xsd:\n+000142a0: 656c 656d 656e 743e 0d0a 0d0a 2020 2020  element>....    \n+000142b0: 3c78 7364 3a65 6c65 6d65 6e74 206e 616d  <xsd:element nam\n+000142c0: 653d 226d 6574 7269 6373 2220 7479 7065  e=\"metrics\" type\n+000142d0: 3d22 6d65 7472 6963 7354 7970 6522 3e0d  =\"metricsType\">.\n+000142e0: 0a20 2020 2020 2020 203c 7873 643a 616e  .        <xsd:an\n+000142f0: 6e6f 7461 7469 6f6e 3e0d 0a20 2020 2020  notation>..     \n+00014300: 2020 2020 2020 203c 7873 643a 646f 6375         <xsd:docu\n+00014310: 6d65 6e74 6174 696f 6e3e 3c21 5b43 4441  mentation><![CDA\n+00014320: 5441 5b20 5468 6520 6d65 7472 6963 7320  TA[ The metrics \n+00014330: 7365 7276 6963 6520 5d5d 3e3c 2f78 7364  service ]]></xsd\n+00014340: 3a64 6f63 756d 656e 7461 7469 6f6e 3e0d  :documentation>.\n+00014350: 0a20 2020 2020 2020 2020 2020 203c 7873  .            <xs\n+00014360: 643a 6170 7069 6e66 6f3e 0d0a 2020 2020  d:appinfo>..    \n+00014370: 2020 2020 2020 2020 2020 2020 3c74 6f6f              <too\n+00014380: 6c3a 616e 6e6f 7461 7469 6f6e 3e0d 0a20  l:annotation>.. \n+00014390: 2020 2020 2020 2020 2020 2020 2020 2020                  \n+000143a0: 2020 203c 746f 6f6c 3a65 7870 6f72 7473     <tool:exports\n+000143b0: 2074 7970 653d 226f 7267 2e61 7061 6368   type=\"org.apach\n+000143c0: 652e 6475 6262 6f2e 636f 6e66 6967 2e4d  e.dubbo.config.M\n+000143d0: 6574 7269 6373 436f 6e66 6967 222f 3e0d  etricsConfig\"/>.\n+000143e0: 0a20 2020 2020 2020 2020 2020 2020 2020  .               \n+000143f0: 203c 2f74 6f6f 6c3a 616e 6e6f 7461 7469   </tool:annotati\n+00014400: 6f6e 3e0d 0a20 2020 2020 2020 2020 2020  on>..           \n+00014410: 203c 2f78 7364 3a61 7070 696e 666f 3e0d   </xsd:appinfo>.\n+00014420: 0a20 2020 2020 2020 203c 2f78 7364 3a61  .        </xsd:a\n+00014430: 6e6e 6f74 6174 696f 6e3e 0d0a 2020 2020  nnotation>..    \n+00014440: 3c2f 7873 643a 656c 656d 656e 743e 0d0a  </xsd:element>..\n+00014450: 0d0a 3c2f 7873 643a 7363 6865 6d61 3e0d  ..</xsd:schema>.\n+00014460: 0a                                       .\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-config-spring/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-config-spring/pom.xml", "unified_diff": null, "details": [{"source1": "META-INF/maven/org.apache.dubbo/dubbo-config-spring/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-config-spring/pom.xml", "comments": ["Ordering differences only"], "unified_diff": "@@ -150,16 +150,16 @@\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-metadata-report-zookeeper</artifactId>\n       <version>${project.parent.version}</version>\n       <scope>test</scope>\n       <exclusions>\n         <exclusion>\n-          <artifactId>guava</artifactId>\n           <groupId>com.google.guava</groupId>\n+          <artifactId>guava</artifactId>\n         </exclusion>\n       </exclusions>\n     </dependency>\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-registry-nacos</artifactId>\n       <version>${project.parent.version}</version>\n"}]}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-cluster/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-cluster/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,164 +1,160 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d70 6172 656e 743c 2f61 7274 6966  bo-parent</artif\n-000004a0: 6163 7449 643e 0d0a 2020 2020 3c76 6572  actId>..    <ver\n-000004b0: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n-000004c0: 7369 6f6e 3e0d 0a20 203c 2f70 6172 656e  sion>..  </paren\n-000004d0: 743e 0d0a 2020 3c67 726f 7570 4964 3e6f  t>..  <groupId>o\n-000004e0: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-000004f0: 2f67 726f 7570 4964 3e0d 0a20 203c 6172  /groupId>..  <ar\n-00000500: 7469 6661 6374 4964 3e64 7562 626f 2d63  tifactId>dubbo-c\n-00000510: 6c75 7374 6572 3c2f 6172 7469 6661 6374  luster</artifact\n-00000520: 4964 3e0d 0a20 203c 7665 7273 696f 6e3e  Id>..  <version>\n-00000530: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n-00000540: 0d0a 2020 3c6e 616d 653e 247b 7072 6f6a  ..  <name>${proj\n-00000550: 6563 742e 6172 7469 6661 6374 4964 7d3c  ect.artifactId}<\n-00000560: 2f6e 616d 653e 0d0a 2020 3c64 6573 6372  /name>..  <descr\n-00000570: 6970 7469 6f6e 3e54 6865 2063 6c75 7374  iption>The clust\n-00000580: 6572 206d 6f64 756c 6520 6f66 2064 7562  er module of dub\n-00000590: 626f 2070 726f 6a65 6374 3c2f 6465 7363  bo project</desc\n-000005a0: 7269 7074 696f 6e3e 0d0a 2020 3c6c 6963  ription>..  <lic\n-000005b0: 656e 7365 733e 0d0a 2020 2020 3c6c 6963  enses>..    <lic\n-000005c0: 656e 7365 3e0d 0a20 2020 2020 203c 6e61  ense>..      <na\n-000005d0: 6d65 3e41 7061 6368 6520 4c69 6365 6e73  me>Apache Licens\n-000005e0: 652c 2056 6572 7369 6f6e 2032 2e30 3c2f  e, Version 2.0</\n-000005f0: 6e61 6d65 3e0d 0a20 2020 2020 203c 7572  name>..      <ur\n-00000600: 6c3e 6874 7470 3a2f 2f77 7777 2e61 7061  l>http://www.apa\n-00000610: 6368 652e 6f72 672f 6c69 6365 6e73 6573  che.org/licenses\n-00000620: 2f4c 4943 454e 5345 2d32 2e30 3c2f 7572  /LICENSE-2.0</ur\n-00000630: 6c3e 0d0a 2020 2020 2020 3c64 6973 7472  l>..      <distr\n-00000640: 6962 7574 696f 6e3e 7265 706f 3c2f 6469  ibution>repo</di\n-00000650: 7374 7269 6275 7469 6f6e 3e0d 0a20 2020  stribution>..   \n-00000660: 203c 2f6c 6963 656e 7365 3e0d 0a20 203c   </license>..  <\n-00000670: 2f6c 6963 656e 7365 733e 0d0a 2020 3c70  /licenses>..  <p\n-00000680: 726f 7065 7274 6965 733e 0d0a 2020 2020  roperties>..    \n-00000690: 3c73 6b69 705f 6d61 7665 6e5f 6465 706c  <skip_maven_depl\n-000006a0: 6f79 3e66 616c 7365 3c2f 736b 6970 5f6d  oy>false</skip_m\n-000006b0: 6176 656e 5f64 6570 6c6f 793e 0d0a 2020  aven_deploy>..  \n-000006c0: 3c2f 7072 6f70 6572 7469 6573 3e0d 0a20  </properties>.. \n-000006d0: 203c 6465 7065 6e64 656e 6369 6573 3e0d   <dependencies>.\n-000006e0: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-000006f0: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-00000700: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n-00000710: 626f 3c2f 6772 6f75 7049 643e 0d0a 2020  bo</groupId>..  \n-00000720: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-00000730: 6475 6262 6f2d 7270 632d 6170 693c 2f61  dubbo-rpc-api</a\n-00000740: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-00000750: 2020 3c76 6572 7369 6f6e 3e24 7b70 726f    <version>${pro\n-00000760: 6a65 6374 2e70 6172 656e 742e 7665 7273  ject.parent.vers\n-00000770: 696f 6e7d 3c2f 7665 7273 696f 6e3e 0d0a  ion}</version>..\n-00000780: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n-00000790: 3e0d 0a20 2020 203c 6465 7065 6e64 656e  >..    <dependen\n-000007a0: 6379 3e0d 0a20 2020 2020 203c 6772 6f75  cy>..      <grou\n-000007b0: 7049 643e 6f72 672e 7961 6d6c 3c2f 6772  pId>org.yaml</gr\n-000007c0: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-000007d0: 7274 6966 6163 7449 643e 736e 616b 6579  rtifactId>snakey\n-000007e0: 616d 6c3c 2f61 7274 6966 6163 7449 643e  aml</artifactId>\n-000007f0: 0d0a 2020 2020 3c2f 6465 7065 6e64 656e  ..    </dependen\n-00000800: 6379 3e0d 0a20 2020 203c 6465 7065 6e64  cy>..    <depend\n-00000810: 656e 6379 3e0d 0a20 2020 2020 203c 6772  ency>..      <gr\n-00000820: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n-00000830: 2e63 7572 6174 6f72 3c2f 6772 6f75 7049  .curator</groupI\n-00000840: 643e 0d0a 2020 2020 2020 3c61 7274 6966  d>..      <artif\n-00000850: 6163 7449 643e 6375 7261 746f 722d 6672  actId>curator-fr\n-00000860: 616d 6577 6f72 6b3c 2f61 7274 6966 6163  amework</artifac\n-00000870: 7449 643e 0d0a 2020 2020 2020 3c73 636f  tId>..      <sco\n-00000880: 7065 3e74 6573 743c 2f73 636f 7065 3e0d  pe>test</scope>.\n-00000890: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-000008a0: 793e 0d0a 2020 2020 3c64 6570 656e 6465  y>..    <depende\n-000008b0: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-000008c0: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n-000008d0: 7a6f 6f6b 6565 7065 723c 2f67 726f 7570  zookeeper</group\n-000008e0: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-000008f0: 6661 6374 4964 3e7a 6f6f 6b65 6570 6572  factId>zookeeper\n-00000900: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000910: 2020 2020 203c 7363 6f70 653e 7465 7374       <scope>test\n-00000920: 3c2f 7363 6f70 653e 0d0a 2020 2020 3c2f  </scope>..    </\n-00000930: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000940: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-00000950: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n-00000960: 672e 6170 6163 6865 2e64 7562 626f 3c2f  g.apache.dubbo</\n-00000970: 6772 6f75 7049 643e 0d0a 2020 2020 2020  groupId>..      \n-00000980: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n-00000990: 6f2d 7365 7269 616c 697a 6174 696f 6e2d  o-serialization-\n-000009a0: 6865 7373 6961 6e32 3c2f 6172 7469 6661  hessian2</artifa\n-000009b0: 6374 4964 3e0d 0a20 2020 2020 203c 7665  ctId>..      <ve\n-000009c0: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n-000009d0: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n-000009e0: 2f76 6572 7369 6f6e 3e0d 0a20 2020 2020  /version>..     \n-000009f0: 203c 7363 6f70 653e 7465 7374 3c2f 7363   <scope>test</sc\n-00000a00: 6f70 653e 0d0a 2020 2020 3c2f 6465 7065  ope>..    </depe\n-00000a10: 6e64 656e 6379 3e0d 0a20 203c 2f64 6570  ndency>..  </dep\n-00000a20: 656e 6465 6e63 6965 733e 0d0a 3c2f 7072  endencies>..</pr\n-00000a30: 6f6a 6563 743e 0d0a                      oject>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d70 6172  factId>dubbo-par\n+00000480: 656e 743c 2f61 7274 6966 6163 7449 643e  ent</artifactId>\n+00000490: 0a20 2020 203c 7665 7273 696f 6e3e 322e  .    <version>2.\n+000004a0: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+000004b0: 203c 2f70 6172 656e 743e 0a20 203c 6772   </parent>.  <gr\n+000004c0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000004d0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+000004e0: 0a20 203c 6172 7469 6661 6374 4964 3e64  .  <artifactId>d\n+000004f0: 7562 626f 2d63 6c75 7374 6572 3c2f 6172  ubbo-cluster</ar\n+00000500: 7469 6661 6374 4964 3e0a 2020 3c76 6572  tifactId>.  <ver\n+00000510: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n+00000520: 7369 6f6e 3e0a 2020 3c6e 616d 653e 247b  sion>.  <name>${\n+00000530: 7072 6f6a 6563 742e 6172 7469 6661 6374  project.artifact\n+00000540: 4964 7d3c 2f6e 616d 653e 0a20 203c 6465  Id}</name>.  <de\n+00000550: 7363 7269 7074 696f 6e3e 5468 6520 636c  scription>The cl\n+00000560: 7573 7465 7220 6d6f 6475 6c65 206f 6620  uster module of \n+00000570: 6475 6262 6f20 7072 6f6a 6563 743c 2f64  dubbo project</d\n+00000580: 6573 6372 6970 7469 6f6e 3e0a 2020 3c6c  escription>.  <l\n+00000590: 6963 656e 7365 733e 0a20 2020 203c 6c69  icenses>.    <li\n+000005a0: 6365 6e73 653e 0a20 2020 2020 203c 6e61  cense>.      <na\n+000005b0: 6d65 3e41 7061 6368 6520 4c69 6365 6e73  me>Apache Licens\n+000005c0: 652c 2056 6572 7369 6f6e 2032 2e30 3c2f  e, Version 2.0</\n+000005d0: 6e61 6d65 3e0a 2020 2020 2020 3c75 726c  name>.      <url\n+000005e0: 3e68 7474 703a 2f2f 7777 772e 6170 6163  >http://www.apac\n+000005f0: 6865 2e6f 7267 2f6c 6963 656e 7365 732f  he.org/licenses/\n+00000600: 4c49 4345 4e53 452d 322e 303c 2f75 726c  LICENSE-2.0</url\n+00000610: 3e0a 2020 2020 2020 3c64 6973 7472 6962  >.      <distrib\n+00000620: 7574 696f 6e3e 7265 706f 3c2f 6469 7374  ution>repo</dist\n+00000630: 7269 6275 7469 6f6e 3e0a 2020 2020 3c2f  ribution>.    </\n+00000640: 6c69 6365 6e73 653e 0a20 203c 2f6c 6963  license>.  </lic\n+00000650: 656e 7365 733e 0a20 203c 7072 6f70 6572  enses>.  <proper\n+00000660: 7469 6573 3e0a 2020 2020 3c73 6b69 705f  ties>.    <skip_\n+00000670: 6d61 7665 6e5f 6465 706c 6f79 3e66 616c  maven_deploy>fal\n+00000680: 7365 3c2f 736b 6970 5f6d 6176 656e 5f64  se</skip_maven_d\n+00000690: 6570 6c6f 793e 0a20 203c 2f70 726f 7065  eploy>.  </prope\n+000006a0: 7274 6965 733e 0a20 203c 6465 7065 6e64  rties>.  <depend\n+000006b0: 656e 6369 6573 3e0a 2020 2020 3c64 6570  encies>.    <dep\n+000006c0: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+000006d0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000006e0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000006f0: 643e 0a20 2020 2020 203c 6172 7469 6661  d>.      <artifa\n+00000700: 6374 4964 3e64 7562 626f 2d72 7063 2d61  ctId>dubbo-rpc-a\n+00000710: 7069 3c2f 6172 7469 6661 6374 4964 3e0a  pi</artifactId>.\n+00000720: 2020 2020 2020 3c76 6572 7369 6f6e 3e24        <version>$\n+00000730: 7b70 726f 6a65 6374 2e70 6172 656e 742e  {project.parent.\n+00000740: 7665 7273 696f 6e7d 3c2f 7665 7273 696f  version}</versio\n+00000750: 6e3e 0a20 2020 203c 2f64 6570 656e 6465  n>.    </depende\n+00000760: 6e63 793e 0a20 2020 203c 6465 7065 6e64  ncy>.    <depend\n+00000770: 656e 6379 3e0a 2020 2020 2020 3c67 726f  ency>.      <gro\n+00000780: 7570 4964 3e6f 7267 2e79 616d 6c3c 2f67  upId>org.yaml</g\n+00000790: 726f 7570 4964 3e0a 2020 2020 2020 3c61  roupId>.      <a\n+000007a0: 7274 6966 6163 7449 643e 736e 616b 6579  rtifactId>snakey\n+000007b0: 616d 6c3c 2f61 7274 6966 6163 7449 643e  aml</artifactId>\n+000007c0: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+000007d0: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+000007e0: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+000007f0: 4964 3e6f 7267 2e61 7061 6368 652e 6375  Id>org.apache.cu\n+00000800: 7261 746f 723c 2f67 726f 7570 4964 3e0a  rator</groupId>.\n+00000810: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n+00000820: 643e 6375 7261 746f 722d 6672 616d 6577  d>curator-framew\n+00000830: 6f72 6b3c 2f61 7274 6966 6163 7449 643e  ork</artifactId>\n+00000840: 0a20 2020 2020 203c 7363 6f70 653e 7465  .      <scope>te\n+00000850: 7374 3c2f 7363 6f70 653e 0a20 2020 203c  st</scope>.    <\n+00000860: 2f64 6570 656e 6465 6e63 793e 0a20 2020  /dependency>.   \n+00000870: 203c 6465 7065 6e64 656e 6379 3e0a 2020   <dependency>.  \n+00000880: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n+00000890: 2e61 7061 6368 652e 7a6f 6f6b 6565 7065  .apache.zookeepe\n+000008a0: 723c 2f67 726f 7570 4964 3e0a 2020 2020  r</groupId>.    \n+000008b0: 2020 3c61 7274 6966 6163 7449 643e 7a6f    <artifactId>zo\n+000008c0: 6f6b 6565 7065 723c 2f61 7274 6966 6163  okeeper</artifac\n+000008d0: 7449 643e 0a20 2020 2020 203c 7363 6f70  tId>.      <scop\n+000008e0: 653e 7465 7374 3c2f 7363 6f70 653e 0a20  e>test</scope>. \n+000008f0: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+00000900: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+00000910: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+00000920: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n+00000930: 6f3c 2f67 726f 7570 4964 3e0a 2020 2020  o</groupId>.    \n+00000940: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000950: 6262 6f2d 7365 7269 616c 697a 6174 696f  bbo-serializatio\n+00000960: 6e2d 6865 7373 6961 6e32 3c2f 6172 7469  n-hessian2</arti\n+00000970: 6661 6374 4964 3e0a 2020 2020 2020 3c76  factId>.      <v\n+00000980: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n+00000990: 2e70 6172 656e 742e 7665 7273 696f 6e7d  .parent.version}\n+000009a0: 3c2f 7665 7273 696f 6e3e 0a20 2020 2020  </version>.     \n+000009b0: 203c 7363 6f70 653e 7465 7374 3c2f 7363   <scope>test</sc\n+000009c0: 6f70 653e 0a20 2020 203c 2f64 6570 656e  ope>.    </depen\n+000009d0: 6465 6e63 793e 0a20 203c 2f64 6570 656e  dency>.  </depen\n+000009e0: 6465 6e63 6965 733e 0a3c 2f70 726f 6a65  dencies>.</proje\n+000009f0: 6374 3e0a                                ct>.\n"}, {"source1": "security/serialize.blockedlist", "source2": "security/serialize.blockedlist", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,167 +1,167 @@\n-#\n-#\n-#   Licensed to the Apache Software Foundation (ASF) under one or more\n-#   contributor license agreements.  See the NOTICE file distributed with\n-#   this work for additional information regarding copyright ownership.\n-#   The ASF licenses this file to You under the Apache License, Version 2.0\n-#   (the \"License\"); you may not use this file except in compliance with\n-#   the License.  You may obtain a copy of the License at\n-#\n-#       http://www.apache.org/licenses/LICENSE-2.0\n-#\n-#   Unless required by applicable law or agreed to in writing, software\n-#   distributed under the License is distributed on an \"AS IS\" BASIS,\n-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n-#   See the License for the specific language governing permissions and\n-#   limitations under the License.\n-#\n-#\n-aj.org.objectweb.asm.\n-br.com.anteros.\n-ch.qos.logback.\n-clojure.core$constantly\n-clojure.main$eval_opt\n-com.alibaba.citrus.springext.support.parser.abstractnamedproxybeandefinitionparser$proxytargetfactory\n-com.alibaba.citrus.springext.util.springextutil.abstractproxy\n-com.alibaba.druid.pool.druiddatasource\n-com.alibaba.druid.stat.jdbcdatasourcestat\n-com.alibaba.fastjson.annotation\n-com.alipay.custrelation.service.model.redress.pair\n-com.caucho.\n-com.ibatis.\n-com.mchange\n-com.mysql.cj.jdbc.admin.\n-com.mysql.cj.jdbc.mysqlconnectionpooldatasource\n-com.mysql.cj.jdbc.mysqldatasource\n-com.mysql.cj.jdbc.mysqlxadatasource\n-com.mysql.cj.log.\n-com.p6spy.engine.\n-com.rometools.rome.feed.impl.equalsbean\n-com.rometools.rome.feed.impl.tostringbean\n-com.sun.\n-com.taobao.eagleeye.wrapper\n-com.zaxxer.hikari.\n-flex.messaging.util.concurrent.\n-java.awt.i\n-java.awt.p\n-java.beans.expression\n-java.io.closeable\n-java.io.serializable\n-java.lang.autocloseable\n-java.lang.class\n-java.lang.cloneable\n-java.lang.iterable\n-java.lang.object\n-java.lang.readable\n-java.lang.runnable\n-java.lang.thread\n-java.lang.unixprocess\n-java.net.inetaddress\n-java.net.socket\n-java.net.url\n-java.rmi\n-java.security.signedobject\n-java.util.collection\n-java.util.eventlistener\n-java.util.jar.\n-java.util.logging.\n-java.util.prefs.\n-java.util.serviceloader$lazyiterator\n-javassist.\n-javax.activation.\n-javax.imageio.imageio$containsfilter\n-javax.imageio.spi.serviceregistry\n-javax.management.\n-javax.naming.\n-javax.net.\n-javax.print.\n-javax.script.\n-javax.sound.\n-javax.swing.j\n-javax.tools.\n-javax.xml\n-jdk.internal.\n-jodd.db.connection.\n-junit.\n-net.bytebuddy.dynamic.loading.bytearrayclassloader\n-net.sf.cglib.\n-net.sf.ehcache.hibernate.\n-net.sf.ehcache.transaction.manager.\n-oracle.jdbc.\n-oracle.jms.aq\n-oracle.net\n-org.aoju.bus.proxy.provider.\n-org.apache.activemq.activemqconnectionfactory\n-org.apache.activemq.activemqxaconnectionfactory\n-org.apache.activemq.jms.pool.\n-org.apache.activemq.pool.\n-org.apache.activemq.spring.\n-org.apache.aries.transaction.\n-org.apache.axis2.jaxws.spi.handler.\n-org.apache.axis2.transport.jms.\n-org.apache.bcel\n-org.apache.carbondata.core.scan.expression.expressionresult\n-org.apache.catalina.\n-org.apache.cocoon.\n-org.apache.commons.beanutils\n-org.apache.commons.collections.comparators.\n-org.apache.commons.collections.functors\n-org.apache.commons.collections.functors.\n-org.apache.commons.collections.transformer\n-org.apache.commons.collections4.comparators\n-org.apache.commons.collections4.functors\n-org.apache.commons.collections4.transformer\n-org.apache.commons.configuration\n-org.apache.commons.dbcp\n-org.apache.commons.fileupload\n-org.apache.commons.jelly.\n-org.apache.commons.logging.\n-org.apache.commons.proxy.\n-org.apache.cxf.jaxrs.provider.\n-org.apache.hadoop.shaded.com.zaxxer.hikari.\n-org.apache.http.auth.\n-org.apache.http.conn.\n-org.apache.http.cookie.\n-org.apache.http.impl.\n-org.apache.ibatis.datasource\n-org.apache.ibatis.executor.\n-org.apache.ibatis.javassist.\n-org.apache.ibatis.ognl.\n-org.apache.ibatis.parsing.\n-org.apache.ibatis.reflection.\n-org.apache.ibatis.scripting.\n-org.apache.ignite.cache.jta.\n-org.apache.log4j.\n-org.apache.logging.\n-org.apache.myfaces.context.servlet\n-org.apache.openjpa.ee.\n-org.apache.shiro.jndi.\n-org.apache.shiro.realm.\n-org.apache.tomcat\n-org.apache.wicket.util\n-org.apache.xalan\n-org.apache.xbean.\n-org.apache.xpath.xpathcontext\n-org.codehaus.groovy.runtime\n-org.codehaus.jackson.\n-org.eclipse.jetty.\n-org.geotools.filter.constantexpression\n-org.h2.jdbcx.\n-org.h2.server.\n-org.hibernate\n-org.javasimon.\n-org.jaxen.\n-org.jboss\n-org.jdom.\n-org.jdom2.transform.\n-org.logicalcobwebs.\n-org.mortbay.jetty.\n-org.mozilla.javascript\n-org.objectweb.asm.\n-org.osjava.sj.\n-org.python.core\n-org.quartz.\n-org.slf4j.\n-org.springframework.\n-org.yaml.snakeyaml.tokens.directivetoken\n+#\r\n+#\r\n+#   Licensed to the Apache Software Foundation (ASF) under one or more\r\n+#   contributor license agreements.  See the NOTICE file distributed with\r\n+#   this work for additional information regarding copyright ownership.\r\n+#   The ASF licenses this file to You under the Apache License, Version 2.0\r\n+#   (the \"License\"); you may not use this file except in compliance with\r\n+#   the License.  You may obtain a copy of the License at\r\n+#\r\n+#       http://www.apache.org/licenses/LICENSE-2.0\r\n+#\r\n+#   Unless required by applicable law or agreed to in writing, software\r\n+#   distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+#   See the License for the specific language governing permissions and\r\n+#   limitations under the License.\r\n+#\r\n+#\r\n+aj.org.objectweb.asm.\r\n+br.com.anteros.\r\n+ch.qos.logback.\r\n+clojure.core$constantly\r\n+clojure.main$eval_opt\r\n+com.alibaba.citrus.springext.support.parser.abstractnamedproxybeandefinitionparser$proxytargetfactory\r\n+com.alibaba.citrus.springext.util.springextutil.abstractproxy\r\n+com.alibaba.druid.pool.druiddatasource\r\n+com.alibaba.druid.stat.jdbcdatasourcestat\r\n+com.alibaba.fastjson.annotation\r\n+com.alipay.custrelation.service.model.redress.pair\r\n+com.caucho.\r\n+com.ibatis.\r\n+com.mchange\r\n+com.mysql.cj.jdbc.admin.\r\n+com.mysql.cj.jdbc.mysqlconnectionpooldatasource\r\n+com.mysql.cj.jdbc.mysqldatasource\r\n+com.mysql.cj.jdbc.mysqlxadatasource\r\n+com.mysql.cj.log.\r\n+com.p6spy.engine.\r\n+com.rometools.rome.feed.impl.equalsbean\r\n+com.rometools.rome.feed.impl.tostringbean\r\n+com.sun.\r\n+com.taobao.eagleeye.wrapper\r\n+com.zaxxer.hikari.\r\n+flex.messaging.util.concurrent.\r\n+java.awt.i\r\n+java.awt.p\r\n+java.beans.expression\r\n+java.io.closeable\r\n+java.io.serializable\r\n+java.lang.autocloseable\r\n+java.lang.class\r\n+java.lang.cloneable\r\n+java.lang.iterable\r\n+java.lang.object\r\n+java.lang.readable\r\n+java.lang.runnable\r\n+java.lang.thread\r\n+java.lang.unixprocess\r\n+java.net.inetaddress\r\n+java.net.socket\r\n+java.net.url\r\n+java.rmi\r\n+java.security.signedobject\r\n+java.util.collection\r\n+java.util.eventlistener\r\n+java.util.jar.\r\n+java.util.logging.\r\n+java.util.prefs.\r\n+java.util.serviceloader$lazyiterator\r\n+javassist.\r\n+javax.activation.\r\n+javax.imageio.imageio$containsfilter\r\n+javax.imageio.spi.serviceregistry\r\n+javax.management.\r\n+javax.naming.\r\n+javax.net.\r\n+javax.print.\r\n+javax.script.\r\n+javax.sound.\r\n+javax.swing.j\r\n+javax.tools.\r\n+javax.xml\r\n+jdk.internal.\r\n+jodd.db.connection.\r\n+junit.\r\n+net.bytebuddy.dynamic.loading.bytearrayclassloader\r\n+net.sf.cglib.\r\n+net.sf.ehcache.hibernate.\r\n+net.sf.ehcache.transaction.manager.\r\n+oracle.jdbc.\r\n+oracle.jms.aq\r\n+oracle.net\r\n+org.aoju.bus.proxy.provider.\r\n+org.apache.activemq.activemqconnectionfactory\r\n+org.apache.activemq.activemqxaconnectionfactory\r\n+org.apache.activemq.jms.pool.\r\n+org.apache.activemq.pool.\r\n+org.apache.activemq.spring.\r\n+org.apache.aries.transaction.\r\n+org.apache.axis2.jaxws.spi.handler.\r\n+org.apache.axis2.transport.jms.\r\n+org.apache.bcel\r\n+org.apache.carbondata.core.scan.expression.expressionresult\r\n+org.apache.catalina.\r\n+org.apache.cocoon.\r\n+org.apache.commons.beanutils\r\n+org.apache.commons.collections.comparators.\r\n+org.apache.commons.collections.functors\r\n+org.apache.commons.collections.functors.\r\n+org.apache.commons.collections.transformer\r\n+org.apache.commons.collections4.comparators\r\n+org.apache.commons.collections4.functors\r\n+org.apache.commons.collections4.transformer\r\n+org.apache.commons.configuration\r\n+org.apache.commons.dbcp\r\n+org.apache.commons.fileupload\r\n+org.apache.commons.jelly.\r\n+org.apache.commons.logging.\r\n+org.apache.commons.proxy.\r\n+org.apache.cxf.jaxrs.provider.\r\n+org.apache.hadoop.shaded.com.zaxxer.hikari.\r\n+org.apache.http.auth.\r\n+org.apache.http.conn.\r\n+org.apache.http.cookie.\r\n+org.apache.http.impl.\r\n+org.apache.ibatis.datasource\r\n+org.apache.ibatis.executor.\r\n+org.apache.ibatis.javassist.\r\n+org.apache.ibatis.ognl.\r\n+org.apache.ibatis.parsing.\r\n+org.apache.ibatis.reflection.\r\n+org.apache.ibatis.scripting.\r\n+org.apache.ignite.cache.jta.\r\n+org.apache.log4j.\r\n+org.apache.logging.\r\n+org.apache.myfaces.context.servlet\r\n+org.apache.openjpa.ee.\r\n+org.apache.shiro.jndi.\r\n+org.apache.shiro.realm.\r\n+org.apache.tomcat\r\n+org.apache.wicket.util\r\n+org.apache.xalan\r\n+org.apache.xbean.\r\n+org.apache.xpath.xpathcontext\r\n+org.codehaus.groovy.runtime\r\n+org.codehaus.jackson.\r\n+org.eclipse.jetty.\r\n+org.geotools.filter.constantexpression\r\n+org.h2.jdbcx.\r\n+org.h2.server.\r\n+org.hibernate\r\n+org.javasimon.\r\n+org.jaxen.\r\n+org.jboss\r\n+org.jdom.\r\n+org.jdom2.transform.\r\n+org.logicalcobwebs.\r\n+org.mortbay.jetty.\r\n+org.mozilla.javascript\r\n+org.objectweb.asm.\r\n+org.osjava.sj.\r\n+org.python.core\r\n+org.quartz.\r\n+org.slf4j.\r\n+org.springframework.\r\n+org.yaml.snakeyaml.tokens.directivetoken\r\n sun.rmi.server.unicastref\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-common/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-common/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,187 +1,181 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d70 6172 656e 743c 2f61 7274 6966  bo-parent</artif\n-000004a0: 6163 7449 643e 0d0a 2020 2020 3c76 6572  actId>..    <ver\n-000004b0: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n-000004c0: 7369 6f6e 3e0d 0a20 203c 2f70 6172 656e  sion>..  </paren\n-000004d0: 743e 0d0a 2020 3c67 726f 7570 4964 3e6f  t>..  <groupId>o\n-000004e0: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-000004f0: 2f67 726f 7570 4964 3e0d 0a20 203c 6172  /groupId>..  <ar\n-00000500: 7469 6661 6374 4964 3e64 7562 626f 2d63  tifactId>dubbo-c\n-00000510: 6f6d 6d6f 6e3c 2f61 7274 6966 6163 7449  ommon</artifactI\n-00000520: 643e 0d0a 2020 3c76 6572 7369 6f6e 3e32  d>..  <version>2\n-00000530: 2e37 2e31 303c 2f76 6572 7369 6f6e 3e0d  .7.10</version>.\n-00000540: 0a20 203c 6e61 6d65 3e24 7b70 726f 6a65  .  <name>${proje\n-00000550: 6374 2e61 7274 6966 6163 7449 647d 3c2f  ct.artifactId}</\n-00000560: 6e61 6d65 3e0d 0a20 203c 6465 7363 7269  name>..  <descri\n-00000570: 7074 696f 6e3e 5468 6520 636f 6d6d 6f6e  ption>The common\n-00000580: 206d 6f64 756c 6520 6f66 2064 7562 626f   module of dubbo\n-00000590: 2070 726f 6a65 6374 3c2f 6465 7363 7269   project</descri\n-000005a0: 7074 696f 6e3e 0d0a 2020 3c6c 6963 656e  ption>..  <licen\n-000005b0: 7365 733e 0d0a 2020 2020 3c6c 6963 656e  ses>..    <licen\n-000005c0: 7365 3e0d 0a20 2020 2020 203c 6e61 6d65  se>..      <name\n-000005d0: 3e41 7061 6368 6520 4c69 6365 6e73 652c  >Apache License,\n-000005e0: 2056 6572 7369 6f6e 2032 2e30 3c2f 6e61   Version 2.0</na\n-000005f0: 6d65 3e0d 0a20 2020 2020 203c 7572 6c3e  me>..      <url>\n-00000600: 6874 7470 3a2f 2f77 7777 2e61 7061 6368  http://www.apach\n-00000610: 652e 6f72 672f 6c69 6365 6e73 6573 2f4c  e.org/licenses/L\n-00000620: 4943 454e 5345 2d32 2e30 3c2f 7572 6c3e  ICENSE-2.0</url>\n-00000630: 0d0a 2020 2020 2020 3c64 6973 7472 6962  ..      <distrib\n-00000640: 7574 696f 6e3e 7265 706f 3c2f 6469 7374  ution>repo</dist\n-00000650: 7269 6275 7469 6f6e 3e0d 0a20 2020 203c  ribution>..    <\n-00000660: 2f6c 6963 656e 7365 3e0d 0a20 203c 2f6c  /license>..  </l\n-00000670: 6963 656e 7365 733e 0d0a 2020 3c70 726f  icenses>..  <pro\n-00000680: 7065 7274 6965 733e 0d0a 2020 2020 3c73  perties>..    <s\n-00000690: 6b69 705f 6d61 7665 6e5f 6465 706c 6f79  kip_maven_deploy\n-000006a0: 3e66 616c 7365 3c2f 736b 6970 5f6d 6176  >false</skip_mav\n-000006b0: 656e 5f64 6570 6c6f 793e 0d0a 2020 3c2f  en_deploy>..  </\n-000006c0: 7072 6f70 6572 7469 6573 3e0d 0a20 203c  properties>..  <\n-000006d0: 6465 7065 6e64 656e 6369 6573 3e0d 0a20  dependencies>.. \n-000006e0: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-000006f0: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000700: 6f72 672e 736c 6634 6a3c 2f67 726f 7570  org.slf4j</group\n-00000710: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-00000720: 6661 6374 4964 3e73 6c66 346a 2d61 7069  factId>slf4j-api\n-00000730: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000740: 2020 2020 203c 7363 6f70 653e 7072 6f76       <scope>prov\n-00000750: 6964 6564 3c2f 7363 6f70 653e 0d0a 2020  ided</scope>..  \n-00000760: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-00000770: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-00000780: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-00000790: 643e 636f 6d6d 6f6e 732d 6c6f 6767 696e  d>commons-loggin\n-000007a0: 673c 2f67 726f 7570 4964 3e0d 0a20 2020  g</groupId>..   \n-000007b0: 2020 203c 6172 7469 6661 6374 4964 3e63     <artifactId>c\n-000007c0: 6f6d 6d6f 6e73 2d6c 6f67 6769 6e67 3c2f  ommons-logging</\n-000007d0: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-000007e0: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-000007f0: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n-00000800: 0d0a 2020 2020 2020 3c67 726f 7570 4964  ..      <groupId\n-00000810: 3e6c 6f67 346a 3c2f 6772 6f75 7049 643e  >log4j</groupId>\n-00000820: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-00000830: 7449 643e 6c6f 6734 6a3c 2f61 7274 6966  tId>log4j</artif\n-00000840: 6163 7449 643e 0d0a 2020 2020 3c2f 6465  actId>..    </de\n-00000850: 7065 6e64 656e 6379 3e0d 0a20 2020 203c  pendency>..    <\n-00000860: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000870: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n-00000880: 6170 6163 6865 2e6c 6f67 6769 6e67 2e6c  apache.logging.l\n-00000890: 6f67 346a 3c2f 6772 6f75 7049 643e 0d0a  og4j</groupId>..\n-000008a0: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n-000008b0: 643e 6c6f 6734 6a2d 6170 693c 2f61 7274  d>log4j-api</art\n-000008c0: 6966 6163 7449 643e 0d0a 2020 2020 2020  ifactId>..      \n-000008d0: 3c73 636f 7065 3e70 726f 7669 6465 643c  <scope>provided<\n-000008e0: 2f73 636f 7065 3e0d 0a20 2020 203c 2f64  /scope>..    </d\n-000008f0: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000900: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-00000910: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n-00000920: 2e61 7061 6368 652e 6c6f 6767 696e 672e  .apache.logging.\n-00000930: 6c6f 6734 6a3c 2f67 726f 7570 4964 3e0d  log4j</groupId>.\n-00000940: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-00000950: 4964 3e6c 6f67 346a 2d63 6f72 653c 2f61  Id>log4j-core</a\n-00000960: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-00000970: 2020 3c73 636f 7065 3e70 726f 7669 6465    <scope>provide\n-00000980: 643c 2f73 636f 7065 3e0d 0a20 2020 203c  d</scope>..    <\n-00000990: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-000009a0: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-000009b0: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n-000009c0: 7267 2e6a 6176 6173 7369 7374 3c2f 6772  rg.javassist</gr\n-000009d0: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-000009e0: 7274 6966 6163 7449 643e 6a61 7661 7373  rtifactId>javass\n-000009f0: 6973 743c 2f61 7274 6966 6163 7449 643e  ist</artifactId>\n-00000a00: 0d0a 2020 2020 3c2f 6465 7065 6e64 656e  ..    </dependen\n-00000a10: 6379 3e0d 0a20 2020 203c 6465 7065 6e64  cy>..    <depend\n-00000a20: 656e 6379 3e0d 0a20 2020 2020 203c 6772  ency>..      <gr\n-00000a30: 6f75 7049 643e 636f 6d2e 616c 6962 6162  oupId>com.alibab\n-00000a40: 613c 2f67 726f 7570 4964 3e0d 0a20 2020  a</groupId>..   \n-00000a50: 2020 203c 6172 7469 6661 6374 4964 3e66     <artifactId>f\n-00000a60: 6173 746a 736f 6e3c 2f61 7274 6966 6163  astjson</artifac\n-00000a70: 7449 643e 0d0a 2020 2020 3c2f 6465 7065  tId>..    </depe\n-00000a80: 6e64 656e 6379 3e0d 0a20 2020 203c 6465  ndency>..    <de\n-00000a90: 7065 6e64 656e 6379 3e0d 0a20 2020 2020  pendency>..     \n-00000aa0: 203c 6772 6f75 7049 643e 636f 6d6d 6f6e   <groupId>common\n-00000ab0: 732d 696f 3c2f 6772 6f75 7049 643e 0d0a  s-io</groupId>..\n-00000ac0: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n-00000ad0: 643e 636f 6d6d 6f6e 732d 696f 3c2f 6172  d>commons-io</ar\n-00000ae0: 7469 6661 6374 4964 3e0d 0a20 2020 203c  tifactId>..    <\n-00000af0: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-00000b00: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-00000b10: 2020 2020 2020 3c67 726f 7570 4964 3e6a        <groupId>j\n-00000b20: 6176 6178 2e61 6e6e 6f74 6174 696f 6e3c  avax.annotation<\n-00000b30: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-00000b40: 203c 6172 7469 6661 6374 4964 3e6a 6176   <artifactId>jav\n-00000b50: 6178 2e61 6e6e 6f74 6174 696f 6e2d 6170  ax.annotation-ap\n-00000b60: 693c 2f61 7274 6966 6163 7449 643e 0d0a  i</artifactId>..\n-00000b70: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n-00000b80: 3e0d 0a20 203c 2f64 6570 656e 6465 6e63  >..  </dependenc\n-00000b90: 6965 733e 0d0a 3c2f 7072 6f6a 6563 743e  ies>..</project>\n-00000ba0: 0d0a                                     ..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d70 6172  factId>dubbo-par\n+00000480: 656e 743c 2f61 7274 6966 6163 7449 643e  ent</artifactId>\n+00000490: 0a20 2020 203c 7665 7273 696f 6e3e 322e  .    <version>2.\n+000004a0: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+000004b0: 203c 2f70 6172 656e 743e 0a20 203c 6772   </parent>.  <gr\n+000004c0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000004d0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+000004e0: 0a20 203c 6172 7469 6661 6374 4964 3e64  .  <artifactId>d\n+000004f0: 7562 626f 2d63 6f6d 6d6f 6e3c 2f61 7274  ubbo-common</art\n+00000500: 6966 6163 7449 643e 0a20 203c 7665 7273  ifactId>.  <vers\n+00000510: 696f 6e3e 322e 372e 3130 3c2f 7665 7273  ion>2.7.10</vers\n+00000520: 696f 6e3e 0a20 203c 6e61 6d65 3e24 7b70  ion>.  <name>${p\n+00000530: 726f 6a65 6374 2e61 7274 6966 6163 7449  roject.artifactI\n+00000540: 647d 3c2f 6e61 6d65 3e0a 2020 3c64 6573  d}</name>.  <des\n+00000550: 6372 6970 7469 6f6e 3e54 6865 2063 6f6d  cription>The com\n+00000560: 6d6f 6e20 6d6f 6475 6c65 206f 6620 6475  mon module of du\n+00000570: 6262 6f20 7072 6f6a 6563 743c 2f64 6573  bbo project</des\n+00000580: 6372 6970 7469 6f6e 3e0a 2020 3c6c 6963  cription>.  <lic\n+00000590: 656e 7365 733e 0a20 2020 203c 6c69 6365  enses>.    <lice\n+000005a0: 6e73 653e 0a20 2020 2020 203c 6e61 6d65  nse>.      <name\n+000005b0: 3e41 7061 6368 6520 4c69 6365 6e73 652c  >Apache License,\n+000005c0: 2056 6572 7369 6f6e 2032 2e30 3c2f 6e61   Version 2.0</na\n+000005d0: 6d65 3e0a 2020 2020 2020 3c75 726c 3e68  me>.      <url>h\n+000005e0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000005f0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+00000600: 4345 4e53 452d 322e 303c 2f75 726c 3e0a  CENSE-2.0</url>.\n+00000610: 2020 2020 2020 3c64 6973 7472 6962 7574        <distribut\n+00000620: 696f 6e3e 7265 706f 3c2f 6469 7374 7269  ion>repo</distri\n+00000630: 6275 7469 6f6e 3e0a 2020 2020 3c2f 6c69  bution>.    </li\n+00000640: 6365 6e73 653e 0a20 203c 2f6c 6963 656e  cense>.  </licen\n+00000650: 7365 733e 0a20 203c 7072 6f70 6572 7469  ses>.  <properti\n+00000660: 6573 3e0a 2020 2020 3c73 6b69 705f 6d61  es>.    <skip_ma\n+00000670: 7665 6e5f 6465 706c 6f79 3e66 616c 7365  ven_deploy>false\n+00000680: 3c2f 736b 6970 5f6d 6176 656e 5f64 6570  </skip_maven_dep\n+00000690: 6c6f 793e 0a20 203c 2f70 726f 7065 7274  loy>.  </propert\n+000006a0: 6965 733e 0a20 203c 6465 7065 6e64 656e  ies>.  <dependen\n+000006b0: 6369 6573 3e0a 2020 2020 3c64 6570 656e  cies>.    <depen\n+000006c0: 6465 6e63 793e 0a20 2020 2020 203c 6772  dency>.      <gr\n+000006d0: 6f75 7049 643e 6f72 672e 736c 6634 6a3c  oupId>org.slf4j<\n+000006e0: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+000006f0: 3c61 7274 6966 6163 7449 643e 736c 6634  <artifactId>slf4\n+00000700: 6a2d 6170 693c 2f61 7274 6966 6163 7449  j-api</artifactI\n+00000710: 643e 0a20 2020 2020 203c 7363 6f70 653e  d>.      <scope>\n+00000720: 7072 6f76 6964 6564 3c2f 7363 6f70 653e  provided</scope>\n+00000730: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+00000740: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+00000750: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+00000760: 4964 3e63 6f6d 6d6f 6e73 2d6c 6f67 6769  Id>commons-loggi\n+00000770: 6e67 3c2f 6772 6f75 7049 643e 0a20 2020  ng</groupId>.   \n+00000780: 2020 203c 6172 7469 6661 6374 4964 3e63     <artifactId>c\n+00000790: 6f6d 6d6f 6e73 2d6c 6f67 6769 6e67 3c2f  ommons-logging</\n+000007a0: 6172 7469 6661 6374 4964 3e0a 2020 2020  artifactId>.    \n+000007b0: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+000007c0: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+000007d0: 2020 2020 203c 6772 6f75 7049 643e 6c6f       <groupId>lo\n+000007e0: 6734 6a3c 2f67 726f 7570 4964 3e0a 2020  g4j</groupId>.  \n+000007f0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+00000800: 6c6f 6734 6a3c 2f61 7274 6966 6163 7449  log4j</artifactI\n+00000810: 643e 0a20 2020 203c 2f64 6570 656e 6465  d>.    </depende\n+00000820: 6e63 793e 0a20 2020 203c 6465 7065 6e64  ncy>.    <depend\n+00000830: 656e 6379 3e0a 2020 2020 2020 3c67 726f  ency>.      <gro\n+00000840: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n+00000850: 6c6f 6767 696e 672e 6c6f 6734 6a3c 2f67  logging.log4j</g\n+00000860: 726f 7570 4964 3e0a 2020 2020 2020 3c61  roupId>.      <a\n+00000870: 7274 6966 6163 7449 643e 6c6f 6734 6a2d  rtifactId>log4j-\n+00000880: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n+00000890: 0a20 2020 2020 203c 7363 6f70 653e 7072  .      <scope>pr\n+000008a0: 6f76 6964 6564 3c2f 7363 6f70 653e 0a20  ovided</scope>. \n+000008b0: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+000008c0: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+000008d0: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+000008e0: 3e6f 7267 2e61 7061 6368 652e 6c6f 6767  >org.apache.logg\n+000008f0: 696e 672e 6c6f 6734 6a3c 2f67 726f 7570  ing.log4j</group\n+00000900: 4964 3e0a 2020 2020 2020 3c61 7274 6966  Id>.      <artif\n+00000910: 6163 7449 643e 6c6f 6734 6a2d 636f 7265  actId>log4j-core\n+00000920: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000930: 2020 2020 3c73 636f 7065 3e70 726f 7669      <scope>provi\n+00000940: 6465 643c 2f73 636f 7065 3e0a 2020 2020  ded</scope>.    \n+00000950: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+00000960: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+00000970: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n+00000980: 672e 6a61 7661 7373 6973 743c 2f67 726f  g.javassist</gro\n+00000990: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+000009a0: 6966 6163 7449 643e 6a61 7661 7373 6973  ifactId>javassis\n+000009b0: 743c 2f61 7274 6966 6163 7449 643e 0a20  t</artifactId>. \n+000009c0: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+000009d0: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+000009e0: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+000009f0: 3e63 6f6d 2e61 6c69 6261 6261 3c2f 6772  >com.alibaba</gr\n+00000a00: 6f75 7049 643e 0a20 2020 2020 203c 6172  oupId>.      <ar\n+00000a10: 7469 6661 6374 4964 3e66 6173 746a 736f  tifactId>fastjso\n+00000a20: 6e3c 2f61 7274 6966 6163 7449 643e 0a20  n</artifactId>. \n+00000a30: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+00000a40: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+00000a50: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+00000a60: 3e63 6f6d 6d6f 6e73 2d69 6f3c 2f67 726f  >commons-io</gro\n+00000a70: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000a80: 6966 6163 7449 643e 636f 6d6d 6f6e 732d  ifactId>commons-\n+00000a90: 696f 3c2f 6172 7469 6661 6374 4964 3e0a  io</artifactId>.\n+00000aa0: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000ab0: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000ac0: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+00000ad0: 643e 6a61 7661 782e 616e 6e6f 7461 7469  d>javax.annotati\n+00000ae0: 6f6e 3c2f 6772 6f75 7049 643e 0a20 2020  on</groupId>.   \n+00000af0: 2020 203c 6172 7469 6661 6374 4964 3e6a     <artifactId>j\n+00000b00: 6176 6178 2e61 6e6e 6f74 6174 696f 6e2d  avax.annotation-\n+00000b10: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n+00000b20: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+00000b30: 793e 0a20 203c 2f64 6570 656e 6465 6e63  y>.  </dependenc\n+00000b40: 6965 733e 0a3c 2f70 726f 6a65 6374 3e0a  ies>.</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-filter-cache/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-filter-cache/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,143 +1,140 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d66 696c 7465 723c 2f61 7274 6966  bo-filter</artif\n-000004a0: 6163 7449 643e 0d0a 2020 2020 3c76 6572  actId>..    <ver\n-000004b0: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n-000004c0: 7369 6f6e 3e0d 0a20 203c 2f70 6172 656e  sion>..  </paren\n-000004d0: 743e 0d0a 2020 3c67 726f 7570 4964 3e6f  t>..  <groupId>o\n-000004e0: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-000004f0: 2f67 726f 7570 4964 3e0d 0a20 203c 6172  /groupId>..  <ar\n-00000500: 7469 6661 6374 4964 3e64 7562 626f 2d66  tifactId>dubbo-f\n-00000510: 696c 7465 722d 6361 6368 653c 2f61 7274  ilter-cache</art\n-00000520: 6966 6163 7449 643e 0d0a 2020 3c76 6572  ifactId>..  <ver\n-00000530: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n-00000540: 7369 6f6e 3e0d 0a20 203c 6e61 6d65 3e24  sion>..  <name>$\n-00000550: 7b70 726f 6a65 6374 2e61 7274 6966 6163  {project.artifac\n-00000560: 7449 647d 3c2f 6e61 6d65 3e0d 0a20 203c  tId}</name>..  <\n-00000570: 6465 7363 7269 7074 696f 6e3e 5468 6520  description>The \n-00000580: 6361 6368 6520 6d6f 6475 6c65 206f 6620  cache module of \n-00000590: 6475 6262 6f20 7072 6f6a 6563 743c 2f64  dubbo project</d\n-000005a0: 6573 6372 6970 7469 6f6e 3e0d 0a20 203c  escription>..  <\n-000005b0: 6c69 6365 6e73 6573 3e0d 0a20 2020 203c  licenses>..    <\n-000005c0: 6c69 6365 6e73 653e 0d0a 2020 2020 2020  license>..      \n-000005d0: 3c6e 616d 653e 4170 6163 6865 204c 6963  <name>Apache Lic\n-000005e0: 656e 7365 2c20 5665 7273 696f 6e20 322e  ense, Version 2.\n-000005f0: 303c 2f6e 616d 653e 0d0a 2020 2020 2020  0</name>..      \n-00000600: 3c75 726c 3e68 7474 703a 2f2f 7777 772e  <url>http://www.\n-00000610: 6170 6163 6865 2e6f 7267 2f6c 6963 656e  apache.org/licen\n-00000620: 7365 732f 4c49 4345 4e53 452d 322e 303c  ses/LICENSE-2.0<\n-00000630: 2f75 726c 3e0d 0a20 2020 2020 203c 6469  /url>..      <di\n-00000640: 7374 7269 6275 7469 6f6e 3e72 6570 6f3c  stribution>repo<\n-00000650: 2f64 6973 7472 6962 7574 696f 6e3e 0d0a  /distribution>..\n-00000660: 2020 2020 3c2f 6c69 6365 6e73 653e 0d0a      </license>..\n-00000670: 2020 3c2f 6c69 6365 6e73 6573 3e0d 0a20    </licenses>.. \n-00000680: 203c 7072 6f70 6572 7469 6573 3e0d 0a20   <properties>.. \n-00000690: 2020 203c 736b 6970 5f6d 6176 656e 5f64     <skip_maven_d\n-000006a0: 6570 6c6f 793e 6661 6c73 653c 2f73 6b69  eploy>false</ski\n-000006b0: 705f 6d61 7665 6e5f 6465 706c 6f79 3e0d  p_maven_deploy>.\n-000006c0: 0a20 203c 2f70 726f 7065 7274 6965 733e  .  </properties>\n-000006d0: 0d0a 2020 3c64 6570 656e 6465 6e63 6965  ..  <dependencie\n-000006e0: 733e 0d0a 2020 2020 3c64 6570 656e 6465  s>..    <depende\n-000006f0: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-00000700: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n-00000710: 6475 6262 6f3c 2f67 726f 7570 4964 3e0d  dubbo</groupId>.\n-00000720: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-00000730: 4964 3e64 7562 626f 2d72 7063 2d61 7069  Id>dubbo-rpc-api\n-00000740: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000750: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n-00000760: 7072 6f6a 6563 742e 7061 7265 6e74 2e76  project.parent.v\n-00000770: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n-00000780: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-00000790: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-000007a0: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-000007b0: 726f 7570 4964 3e6a 6176 6178 2e63 6163  roupId>javax.cac\n-000007c0: 6865 3c2f 6772 6f75 7049 643e 0d0a 2020  he</groupId>..  \n-000007d0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-000007e0: 6361 6368 652d 6170 693c 2f61 7274 6966  cache-api</artif\n-000007f0: 6163 7449 643e 0d0a 2020 2020 3c2f 6465  actId>..    </de\n-00000800: 7065 6e64 656e 6379 3e0d 0a20 2020 203c  pendency>..    <\n-00000810: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000820: 2020 203c 6772 6f75 7049 643e 636f 6d2e     <groupId>com.\n-00000830: 6861 7a65 6c63 6173 743c 2f67 726f 7570  hazelcast</group\n-00000840: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-00000850: 6661 6374 4964 3e68 617a 656c 6361 7374  factId>hazelcast\n-00000860: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000870: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n-00000880: 6861 7a65 6c63 6173 745f 7665 7273 696f  hazelcast_versio\n-00000890: 6e7d 3c2f 7665 7273 696f 6e3e 0d0a 2020  n}</version>..  \n-000008a0: 2020 2020 3c73 636f 7065 3e74 6573 743c      <scope>test<\n-000008b0: 2f73 636f 7065 3e0d 0a20 2020 203c 2f64  /scope>..    </d\n-000008c0: 6570 656e 6465 6e63 793e 0d0a 2020 3c2f  ependency>..  </\n-000008d0: 6465 7065 6e64 656e 6369 6573 3e0d 0a3c  dependencies>..<\n-000008e0: 2f70 726f 6a65 6374 3e0d 0a              /project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d66 696c  factId>dubbo-fil\n+00000480: 7465 723c 2f61 7274 6966 6163 7449 643e  ter</artifactId>\n+00000490: 0a20 2020 203c 7665 7273 696f 6e3e 322e  .    <version>2.\n+000004a0: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+000004b0: 203c 2f70 6172 656e 743e 0a20 203c 6772   </parent>.  <gr\n+000004c0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000004d0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+000004e0: 0a20 203c 6172 7469 6661 6374 4964 3e64  .  <artifactId>d\n+000004f0: 7562 626f 2d66 696c 7465 722d 6361 6368  ubbo-filter-cach\n+00000500: 653c 2f61 7274 6966 6163 7449 643e 0a20  e</artifactId>. \n+00000510: 203c 7665 7273 696f 6e3e 322e 372e 3130   <version>2.7.10\n+00000520: 3c2f 7665 7273 696f 6e3e 0a20 203c 6e61  </version>.  <na\n+00000530: 6d65 3e24 7b70 726f 6a65 6374 2e61 7274  me>${project.art\n+00000540: 6966 6163 7449 647d 3c2f 6e61 6d65 3e0a  ifactId}</name>.\n+00000550: 2020 3c64 6573 6372 6970 7469 6f6e 3e54    <description>T\n+00000560: 6865 2063 6163 6865 206d 6f64 756c 6520  he cache module \n+00000570: 6f66 2064 7562 626f 2070 726f 6a65 6374  of dubbo project\n+00000580: 3c2f 6465 7363 7269 7074 696f 6e3e 0a20  </description>. \n+00000590: 203c 6c69 6365 6e73 6573 3e0a 2020 2020   <licenses>.    \n+000005a0: 3c6c 6963 656e 7365 3e0a 2020 2020 2020  <license>.      \n+000005b0: 3c6e 616d 653e 4170 6163 6865 204c 6963  <name>Apache Lic\n+000005c0: 656e 7365 2c20 5665 7273 696f 6e20 322e  ense, Version 2.\n+000005d0: 303c 2f6e 616d 653e 0a20 2020 2020 203c  0</name>.      <\n+000005e0: 7572 6c3e 6874 7470 3a2f 2f77 7777 2e61  url>http://www.a\n+000005f0: 7061 6368 652e 6f72 672f 6c69 6365 6e73  pache.org/licens\n+00000600: 6573 2f4c 4943 454e 5345 2d32 2e30 3c2f  es/LICENSE-2.0</\n+00000610: 7572 6c3e 0a20 2020 2020 203c 6469 7374  url>.      <dist\n+00000620: 7269 6275 7469 6f6e 3e72 6570 6f3c 2f64  ribution>repo</d\n+00000630: 6973 7472 6962 7574 696f 6e3e 0a20 2020  istribution>.   \n+00000640: 203c 2f6c 6963 656e 7365 3e0a 2020 3c2f   </license>.  </\n+00000650: 6c69 6365 6e73 6573 3e0a 2020 3c70 726f  licenses>.  <pro\n+00000660: 7065 7274 6965 733e 0a20 2020 203c 736b  perties>.    <sk\n+00000670: 6970 5f6d 6176 656e 5f64 6570 6c6f 793e  ip_maven_deploy>\n+00000680: 6661 6c73 653c 2f73 6b69 705f 6d61 7665  false</skip_mave\n+00000690: 6e5f 6465 706c 6f79 3e0a 2020 3c2f 7072  n_deploy>.  </pr\n+000006a0: 6f70 6572 7469 6573 3e0a 2020 3c64 6570  operties>.  <dep\n+000006b0: 656e 6465 6e63 6965 733e 0a20 2020 203c  endencies>.    <\n+000006c0: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+000006d0: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+000006e0: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n+000006f0: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000700: 6966 6163 7449 643e 6475 6262 6f2d 7270  ifactId>dubbo-rp\n+00000710: 632d 6170 693c 2f61 7274 6966 6163 7449  c-api</artifactI\n+00000720: 643e 0a20 2020 2020 203c 7665 7273 696f  d>.      <versio\n+00000730: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n+00000740: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n+00000750: 7369 6f6e 3e0a 2020 2020 3c2f 6465 7065  sion>.    </depe\n+00000760: 6e64 656e 6379 3e0a 2020 2020 3c64 6570  ndency>.    <dep\n+00000770: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+00000780: 6772 6f75 7049 643e 6a61 7661 782e 6361  groupId>javax.ca\n+00000790: 6368 653c 2f67 726f 7570 4964 3e0a 2020  che</groupId>.  \n+000007a0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+000007b0: 6361 6368 652d 6170 693c 2f61 7274 6966  cache-api</artif\n+000007c0: 6163 7449 643e 0a20 2020 203c 2f64 6570  actId>.    </dep\n+000007d0: 656e 6465 6e63 793e 0a20 2020 203c 6465  endency>.    <de\n+000007e0: 7065 6e64 656e 6379 3e0a 2020 2020 2020  pendency>.      \n+000007f0: 3c67 726f 7570 4964 3e63 6f6d 2e68 617a  <groupId>com.haz\n+00000800: 656c 6361 7374 3c2f 6772 6f75 7049 643e  elcast</groupId>\n+00000810: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+00000820: 4964 3e68 617a 656c 6361 7374 3c2f 6172  Id>hazelcast</ar\n+00000830: 7469 6661 6374 4964 3e0a 2020 2020 2020  tifactId>.      \n+00000840: 3c76 6572 7369 6f6e 3e24 7b68 617a 656c  <version>${hazel\n+00000850: 6361 7374 5f76 6572 7369 6f6e 7d3c 2f76  cast_version}</v\n+00000860: 6572 7369 6f6e 3e0a 2020 2020 2020 3c73  ersion>.      <s\n+00000870: 636f 7065 3e74 6573 743c 2f73 636f 7065  cope>test</scope\n+00000880: 3e0a 2020 2020 3c2f 6465 7065 6e64 656e  >.    </dependen\n+00000890: 6379 3e0a 2020 3c2f 6465 7065 6e64 656e  cy>.  </dependen\n+000008a0: 6369 6573 3e0a 3c2f 7072 6f6a 6563 743e  cies>.</project>\n+000008b0: 0a                                       .\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-filter-validation/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-filter-validation/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,194 +1,189 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d66 696c 7465 723c 2f61 7274 6966  bo-filter</artif\n-000004a0: 6163 7449 643e 0d0a 2020 2020 3c76 6572  actId>..    <ver\n-000004b0: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n-000004c0: 7369 6f6e 3e0d 0a20 203c 2f70 6172 656e  sion>..  </paren\n-000004d0: 743e 0d0a 2020 3c67 726f 7570 4964 3e6f  t>..  <groupId>o\n-000004e0: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-000004f0: 2f67 726f 7570 4964 3e0d 0a20 203c 6172  /groupId>..  <ar\n-00000500: 7469 6661 6374 4964 3e64 7562 626f 2d66  tifactId>dubbo-f\n-00000510: 696c 7465 722d 7661 6c69 6461 7469 6f6e  ilter-validation\n-00000520: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000530: 203c 7665 7273 696f 6e3e 322e 372e 3130   <version>2.7.10\n-00000540: 3c2f 7665 7273 696f 6e3e 0d0a 2020 3c6e  </version>..  <n\n-00000550: 616d 653e 247b 7072 6f6a 6563 742e 6172  ame>${project.ar\n-00000560: 7469 6661 6374 4964 7d3c 2f6e 616d 653e  tifactId}</name>\n-00000570: 0d0a 2020 3c64 6573 6372 6970 7469 6f6e  ..  <description\n-00000580: 3e54 6865 2076 616c 6964 6174 696f 6e20  >The validation \n-00000590: 6d6f 6475 6c65 206f 6620 6475 6262 6f20  module of dubbo \n-000005a0: 7072 6f6a 6563 743c 2f64 6573 6372 6970  project</descrip\n-000005b0: 7469 6f6e 3e0d 0a20 203c 6c69 6365 6e73  tion>..  <licens\n-000005c0: 6573 3e0d 0a20 2020 203c 6c69 6365 6e73  es>..    <licens\n-000005d0: 653e 0d0a 2020 2020 2020 3c6e 616d 653e  e>..      <name>\n-000005e0: 4170 6163 6865 204c 6963 656e 7365 2c20  Apache License, \n-000005f0: 5665 7273 696f 6e20 322e 303c 2f6e 616d  Version 2.0</nam\n-00000600: 653e 0d0a 2020 2020 2020 3c75 726c 3e68  e>..      <url>h\n-00000610: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n-00000620: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n-00000630: 4345 4e53 452d 322e 303c 2f75 726c 3e0d  CENSE-2.0</url>.\n-00000640: 0a20 2020 2020 203c 6469 7374 7269 6275  .      <distribu\n-00000650: 7469 6f6e 3e72 6570 6f3c 2f64 6973 7472  tion>repo</distr\n-00000660: 6962 7574 696f 6e3e 0d0a 2020 2020 3c2f  ibution>..    </\n-00000670: 6c69 6365 6e73 653e 0d0a 2020 3c2f 6c69  license>..  </li\n-00000680: 6365 6e73 6573 3e0d 0a20 203c 7072 6f70  censes>..  <prop\n-00000690: 6572 7469 6573 3e0d 0a20 2020 203c 736b  erties>..    <sk\n-000006a0: 6970 5f6d 6176 656e 5f64 6570 6c6f 793e  ip_maven_deploy>\n-000006b0: 6661 6c73 653c 2f73 6b69 705f 6d61 7665  false</skip_mave\n-000006c0: 6e5f 6465 706c 6f79 3e0d 0a20 203c 2f70  n_deploy>..  </p\n-000006d0: 726f 7065 7274 6965 733e 0d0a 2020 3c64  roperties>..  <d\n-000006e0: 6570 656e 6465 6e63 6965 733e 0d0a 2020  ependencies>..  \n-000006f0: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-00000700: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n-00000710: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000720: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-00000730: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000740: 626f 2d72 7063 2d61 7069 3c2f 6172 7469  bo-rpc-api</arti\n-00000750: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-00000760: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n-00000770: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n-00000780: 7d3c 2f76 6572 7369 6f6e 3e0d 0a20 2020  }</version>..   \n-00000790: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-000007a0: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n-000007b0: 0d0a 2020 2020 2020 3c67 726f 7570 4964  ..      <groupId\n-000007c0: 3e6a 6176 6178 2e76 616c 6964 6174 696f  >javax.validatio\n-000007d0: 6e3c 2f67 726f 7570 4964 3e0d 0a20 2020  n</groupId>..   \n-000007e0: 2020 203c 6172 7469 6661 6374 4964 3e76     <artifactId>v\n-000007f0: 616c 6964 6174 696f 6e2d 6170 693c 2f61  alidation-api</a\n-00000800: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-00000810: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-00000820: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-00000830: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000840: 6f72 672e 6869 6265 726e 6174 653c 2f67  org.hibernate</g\n-00000850: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-00000860: 6172 7469 6661 6374 4964 3e68 6962 6572  artifactId>hiber\n-00000870: 6e61 7465 2d76 616c 6964 6174 6f72 3c2f  nate-validator</\n-00000880: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-00000890: 2020 203c 7665 7273 696f 6e3e 247b 6869     <version>${hi\n-000008a0: 6265 726e 6174 655f 7661 6c69 6461 746f  bernate_validato\n-000008b0: 725f 7665 7273 696f 6e7d 3c2f 7665 7273  r_version}</vers\n-000008c0: 696f 6e3e 0d0a 2020 2020 2020 3c73 636f  ion>..      <sco\n-000008d0: 7065 3e74 6573 743c 2f73 636f 7065 3e0d  pe>test</scope>.\n-000008e0: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-000008f0: 793e 0d0a 2020 2020 3c64 6570 656e 6465  y>..    <depende\n-00000900: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-00000910: 7570 4964 3e6a 6176 6178 2e65 6c3c 2f67  upId>javax.el</g\n-00000920: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-00000930: 6172 7469 6661 6374 4964 3e6a 6176 6178  artifactId>javax\n-00000940: 2e65 6c2d 6170 693c 2f61 7274 6966 6163  .el-api</artifac\n-00000950: 7449 643e 0d0a 2020 2020 2020 3c76 6572  tId>..      <ver\n-00000960: 7369 6f6e 3e24 7b65 6c5f 6170 695f 7665  sion>${el_api_ve\n-00000970: 7273 696f 6e7d 3c2f 7665 7273 696f 6e3e  rsion}</version>\n-00000980: 0d0a 2020 2020 2020 3c73 636f 7065 3e74  ..      <scope>t\n-00000990: 6573 743c 2f73 636f 7065 3e0d 0a20 2020  est</scope>..   \n-000009a0: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-000009b0: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n-000009c0: 0d0a 2020 2020 2020 3c67 726f 7570 4964  ..      <groupId\n-000009d0: 3e6a 6176 6178 2e78 6d6c 2e62 696e 643c  >javax.xml.bind<\n-000009e0: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-000009f0: 203c 6172 7469 6661 6374 4964 3e6a 6178   <artifactId>jax\n-00000a00: 622d 6170 693c 2f61 7274 6966 6163 7449  b-api</artifactI\n-00000a10: 643e 0d0a 2020 2020 2020 3c76 6572 7369  d>..      <versi\n-00000a20: 6f6e 3e24 7b6a 6178 625f 6170 695f 7665  on>${jaxb_api_ve\n-00000a30: 7273 696f 6e7d 3c2f 7665 7273 696f 6e3e  rsion}</version>\n-00000a40: 0d0a 2020 2020 2020 3c73 636f 7065 3e74  ..      <scope>t\n-00000a50: 6573 743c 2f73 636f 7065 3e0d 0a20 2020  est</scope>..   \n-00000a60: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-00000a70: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n-00000a80: 0d0a 2020 2020 2020 3c67 726f 7570 4964  ..      <groupId\n-00000a90: 3e63 6f6d 2e73 756e 2e78 6d6c 2e62 696e  >com.sun.xml.bin\n-00000aa0: 643c 2f67 726f 7570 4964 3e0d 0a20 2020  d</groupId>..   \n-00000ab0: 2020 203c 6172 7469 6661 6374 4964 3e6a     <artifactId>j\n-00000ac0: 6178 622d 696d 706c 3c2f 6172 7469 6661  axb-impl</artifa\n-00000ad0: 6374 4964 3e0d 0a20 2020 2020 203c 7665  ctId>..      <ve\n-00000ae0: 7273 696f 6e3e 247b 6a61 7862 5f61 7069  rsion>${jaxb_api\n-00000af0: 5f76 6572 7369 6f6e 7d3c 2f76 6572 7369  _version}</versi\n-00000b00: 6f6e 3e0d 0a20 2020 2020 203c 7363 6f70  on>..      <scop\n-00000b10: 653e 7465 7374 3c2f 7363 6f70 653e 0d0a  e>test</scope>..\n-00000b20: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n-00000b30: 3e0d 0a20 2020 203c 6465 7065 6e64 656e  >..    <dependen\n-00000b40: 6379 3e0d 0a20 2020 2020 203c 6772 6f75  cy>..      <grou\n-00000b50: 7049 643e 636f 6d2e 7375 6e2e 786d 6c2e  pId>com.sun.xml.\n-00000b60: 6269 6e64 3c2f 6772 6f75 7049 643e 0d0a  bind</groupId>..\n-00000b70: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n-00000b80: 643e 6a61 7862 2d63 6f72 653c 2f61 7274  d>jaxb-core</art\n-00000b90: 6966 6163 7449 643e 0d0a 2020 2020 2020  ifactId>..      \n-00000ba0: 3c76 6572 7369 6f6e 3e24 7b6a 6178 625f  <version>${jaxb_\n-00000bb0: 6170 695f 7665 7273 696f 6e7d 3c2f 7665  api_version}</ve\n-00000bc0: 7273 696f 6e3e 0d0a 2020 2020 2020 3c73  rsion>..      <s\n-00000bd0: 636f 7065 3e74 6573 743c 2f73 636f 7065  cope>test</scope\n-00000be0: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-00000bf0: 6e63 793e 0d0a 2020 3c2f 6465 7065 6e64  ncy>..  </depend\n-00000c00: 656e 6369 6573 3e0d 0a3c 2f70 726f 6a65  encies>..</proje\n-00000c10: 6374 3e0d 0a                             ct>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d66 696c  factId>dubbo-fil\n+00000480: 7465 723c 2f61 7274 6966 6163 7449 643e  ter</artifactId>\n+00000490: 0a20 2020 203c 7665 7273 696f 6e3e 322e  .    <version>2.\n+000004a0: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+000004b0: 203c 2f70 6172 656e 743e 0a20 203c 6772   </parent>.  <gr\n+000004c0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000004d0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+000004e0: 0a20 203c 6172 7469 6661 6374 4964 3e64  .  <artifactId>d\n+000004f0: 7562 626f 2d66 696c 7465 722d 7661 6c69  ubbo-filter-vali\n+00000500: 6461 7469 6f6e 3c2f 6172 7469 6661 6374  dation</artifact\n+00000510: 4964 3e0a 2020 3c76 6572 7369 6f6e 3e32  Id>.  <version>2\n+00000520: 2e37 2e31 303c 2f76 6572 7369 6f6e 3e0a  .7.10</version>.\n+00000530: 2020 3c6e 616d 653e 247b 7072 6f6a 6563    <name>${projec\n+00000540: 742e 6172 7469 6661 6374 4964 7d3c 2f6e  t.artifactId}</n\n+00000550: 616d 653e 0a20 203c 6465 7363 7269 7074  ame>.  <descript\n+00000560: 696f 6e3e 5468 6520 7661 6c69 6461 7469  ion>The validati\n+00000570: 6f6e 206d 6f64 756c 6520 6f66 2064 7562  on module of dub\n+00000580: 626f 2070 726f 6a65 6374 3c2f 6465 7363  bo project</desc\n+00000590: 7269 7074 696f 6e3e 0a20 203c 6c69 6365  ription>.  <lice\n+000005a0: 6e73 6573 3e0a 2020 2020 3c6c 6963 656e  nses>.    <licen\n+000005b0: 7365 3e0a 2020 2020 2020 3c6e 616d 653e  se>.      <name>\n+000005c0: 4170 6163 6865 204c 6963 656e 7365 2c20  Apache License, \n+000005d0: 5665 7273 696f 6e20 322e 303c 2f6e 616d  Version 2.0</nam\n+000005e0: 653e 0a20 2020 2020 203c 7572 6c3e 6874  e>.      <url>ht\n+000005f0: 7470 3a2f 2f77 7777 2e61 7061 6368 652e  tp://www.apache.\n+00000600: 6f72 672f 6c69 6365 6e73 6573 2f4c 4943  org/licenses/LIC\n+00000610: 454e 5345 2d32 2e30 3c2f 7572 6c3e 0a20  ENSE-2.0</url>. \n+00000620: 2020 2020 203c 6469 7374 7269 6275 7469       <distributi\n+00000630: 6f6e 3e72 6570 6f3c 2f64 6973 7472 6962  on>repo</distrib\n+00000640: 7574 696f 6e3e 0a20 2020 203c 2f6c 6963  ution>.    </lic\n+00000650: 656e 7365 3e0a 2020 3c2f 6c69 6365 6e73  ense>.  </licens\n+00000660: 6573 3e0a 2020 3c70 726f 7065 7274 6965  es>.  <propertie\n+00000670: 733e 0a20 2020 203c 736b 6970 5f6d 6176  s>.    <skip_mav\n+00000680: 656e 5f64 6570 6c6f 793e 6661 6c73 653c  en_deploy>false<\n+00000690: 2f73 6b69 705f 6d61 7665 6e5f 6465 706c  /skip_maven_depl\n+000006a0: 6f79 3e0a 2020 3c2f 7072 6f70 6572 7469  oy>.  </properti\n+000006b0: 6573 3e0a 2020 3c64 6570 656e 6465 6e63  es>.  <dependenc\n+000006c0: 6965 733e 0a20 2020 203c 6465 7065 6e64  ies>.    <depend\n+000006d0: 656e 6379 3e0a 2020 2020 2020 3c67 726f  ency>.      <gro\n+000006e0: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n+000006f0: 6475 6262 6f3c 2f67 726f 7570 4964 3e0a  dubbo</groupId>.\n+00000700: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n+00000710: 643e 6475 6262 6f2d 7270 632d 6170 693c  d>dubbo-rpc-api<\n+00000720: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+00000730: 2020 203c 7665 7273 696f 6e3e 247b 7072     <version>${pr\n+00000740: 6f6a 6563 742e 7061 7265 6e74 2e76 6572  oject.parent.ver\n+00000750: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a  sion}</version>.\n+00000760: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000770: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000780: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+00000790: 643e 6a61 7661 782e 7661 6c69 6461 7469  d>javax.validati\n+000007a0: 6f6e 3c2f 6772 6f75 7049 643e 0a20 2020  on</groupId>.   \n+000007b0: 2020 203c 6172 7469 6661 6374 4964 3e76     <artifactId>v\n+000007c0: 616c 6964 6174 696f 6e2d 6170 693c 2f61  alidation-api</a\n+000007d0: 7274 6966 6163 7449 643e 0a20 2020 203c  rtifactId>.    <\n+000007e0: 2f64 6570 656e 6465 6e63 793e 0a20 2020  /dependency>.   \n+000007f0: 203c 6465 7065 6e64 656e 6379 3e0a 2020   <dependency>.  \n+00000800: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n+00000810: 2e68 6962 6572 6e61 7465 3c2f 6772 6f75  .hibernate</grou\n+00000820: 7049 643e 0a20 2020 2020 203c 6172 7469  pId>.      <arti\n+00000830: 6661 6374 4964 3e68 6962 6572 6e61 7465  factId>hibernate\n+00000840: 2d76 616c 6964 6174 6f72 3c2f 6172 7469  -validator</arti\n+00000850: 6661 6374 4964 3e0a 2020 2020 2020 3c76  factId>.      <v\n+00000860: 6572 7369 6f6e 3e24 7b68 6962 6572 6e61  ersion>${hiberna\n+00000870: 7465 5f76 616c 6964 6174 6f72 5f76 6572  te_validator_ver\n+00000880: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a  sion}</version>.\n+00000890: 2020 2020 2020 3c73 636f 7065 3e74 6573        <scope>tes\n+000008a0: 743c 2f73 636f 7065 3e0a 2020 2020 3c2f  t</scope>.    </\n+000008b0: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+000008c0: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+000008d0: 2020 203c 6772 6f75 7049 643e 6a61 7661     <groupId>java\n+000008e0: 782e 656c 3c2f 6772 6f75 7049 643e 0a20  x.el</groupId>. \n+000008f0: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n+00000900: 3e6a 6176 6178 2e65 6c2d 6170 693c 2f61  >javax.el-api</a\n+00000910: 7274 6966 6163 7449 643e 0a20 2020 2020  rtifactId>.     \n+00000920: 203c 7665 7273 696f 6e3e 247b 656c 5f61   <version>${el_a\n+00000930: 7069 5f76 6572 7369 6f6e 7d3c 2f76 6572  pi_version}</ver\n+00000940: 7369 6f6e 3e0a 2020 2020 2020 3c73 636f  sion>.      <sco\n+00000950: 7065 3e74 6573 743c 2f73 636f 7065 3e0a  pe>test</scope>.\n+00000960: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000970: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000980: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+00000990: 643e 6a61 7661 782e 786d 6c2e 6269 6e64  d>javax.xml.bind\n+000009a0: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+000009b0: 203c 6172 7469 6661 6374 4964 3e6a 6178   <artifactId>jax\n+000009c0: 622d 6170 693c 2f61 7274 6966 6163 7449  b-api</artifactI\n+000009d0: 643e 0a20 2020 2020 203c 7665 7273 696f  d>.      <versio\n+000009e0: 6e3e 247b 6a61 7862 5f61 7069 5f76 6572  n>${jaxb_api_ver\n+000009f0: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a  sion}</version>.\n+00000a00: 2020 2020 2020 3c73 636f 7065 3e74 6573        <scope>tes\n+00000a10: 743c 2f73 636f 7065 3e0a 2020 2020 3c2f  t</scope>.    </\n+00000a20: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000a30: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+00000a40: 2020 203c 6772 6f75 7049 643e 636f 6d2e     <groupId>com.\n+00000a50: 7375 6e2e 786d 6c2e 6269 6e64 3c2f 6772  sun.xml.bind</gr\n+00000a60: 6f75 7049 643e 0a20 2020 2020 203c 6172  oupId>.      <ar\n+00000a70: 7469 6661 6374 4964 3e6a 6178 622d 696d  tifactId>jaxb-im\n+00000a80: 706c 3c2f 6172 7469 6661 6374 4964 3e0a  pl</artifactId>.\n+00000a90: 2020 2020 2020 3c76 6572 7369 6f6e 3e24        <version>$\n+00000aa0: 7b6a 6178 625f 6170 695f 7665 7273 696f  {jaxb_api_versio\n+00000ab0: 6e7d 3c2f 7665 7273 696f 6e3e 0a20 2020  n}</version>.   \n+00000ac0: 2020 203c 7363 6f70 653e 7465 7374 3c2f     <scope>test</\n+00000ad0: 7363 6f70 653e 0a20 2020 203c 2f64 6570  scope>.    </dep\n+00000ae0: 656e 6465 6e63 793e 0a20 2020 203c 6465  endency>.    <de\n+00000af0: 7065 6e64 656e 6379 3e0a 2020 2020 2020  pendency>.      \n+00000b00: 3c67 726f 7570 4964 3e63 6f6d 2e73 756e  <groupId>com.sun\n+00000b10: 2e78 6d6c 2e62 696e 643c 2f67 726f 7570  .xml.bind</group\n+00000b20: 4964 3e0a 2020 2020 2020 3c61 7274 6966  Id>.      <artif\n+00000b30: 6163 7449 643e 6a61 7862 2d63 6f72 653c  actId>jaxb-core<\n+00000b40: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+00000b50: 2020 203c 7665 7273 696f 6e3e 247b 6a61     <version>${ja\n+00000b60: 7862 5f61 7069 5f76 6572 7369 6f6e 7d3c  xb_api_version}<\n+00000b70: 2f76 6572 7369 6f6e 3e0a 2020 2020 2020  /version>.      \n+00000b80: 3c73 636f 7065 3e74 6573 743c 2f73 636f  <scope>test</sco\n+00000b90: 7065 3e0a 2020 2020 3c2f 6465 7065 6e64  pe>.    </depend\n+00000ba0: 656e 6379 3e0a 2020 3c2f 6465 7065 6e64  ency>.  </depend\n+00000bb0: 656e 6369 6573 3e0a 3c2f 7072 6f6a 6563  encies>.</projec\n+00000bc0: 743e 0a                                  t>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-remoting-api/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-remoting-api/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,150 +1,146 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 656d 6f74 696e 673c 2f61 7274  bo-remoting</art\n-000004a0: 6966 6163 7449 643e 0d0a 2020 2020 3c76  ifactId>..    <v\n-000004b0: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-000004c0: 6572 7369 6f6e 3e0d 0a20 203c 2f70 6172  ersion>..  </par\n-000004d0: 656e 743e 0d0a 2020 3c67 726f 7570 4964  ent>..  <groupId\n-000004e0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000004f0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 203c  o</groupId>..  <\n-00000500: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000510: 2d72 656d 6f74 696e 672d 6170 693c 2f61  -remoting-api</a\n-00000520: 7274 6966 6163 7449 643e 0d0a 2020 3c76  rtifactId>..  <v\n-00000530: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-00000540: 6572 7369 6f6e 3e0d 0a20 203c 6e61 6d65  ersion>..  <name\n-00000550: 3e24 7b70 726f 6a65 6374 2e61 7274 6966  >${project.artif\n-00000560: 6163 7449 647d 3c2f 6e61 6d65 3e0d 0a20  actId}</name>.. \n-00000570: 203c 6465 7363 7269 7074 696f 6e3e 5468   <description>Th\n-00000580: 6520 7265 6d6f 7469 6e67 206d 6f64 756c  e remoting modul\n-00000590: 6520 6f66 2064 7562 626f 2070 726f 6a65  e of dubbo proje\n-000005a0: 6374 3c2f 6465 7363 7269 7074 696f 6e3e  ct</description>\n-000005b0: 0d0a 2020 3c6c 6963 656e 7365 733e 0d0a  ..  <licenses>..\n-000005c0: 2020 2020 3c6c 6963 656e 7365 3e0d 0a20      <license>.. \n-000005d0: 2020 2020 203c 6e61 6d65 3e41 7061 6368       <name>Apach\n-000005e0: 6520 4c69 6365 6e73 652c 2056 6572 7369  e License, Versi\n-000005f0: 6f6e 2032 2e30 3c2f 6e61 6d65 3e0d 0a20  on 2.0</name>.. \n-00000600: 2020 2020 203c 7572 6c3e 6874 7470 3a2f       <url>http:/\n-00000610: 2f77 7777 2e61 7061 6368 652e 6f72 672f  /www.apache.org/\n-00000620: 6c69 6365 6e73 6573 2f4c 4943 454e 5345  licenses/LICENSE\n-00000630: 2d32 2e30 3c2f 7572 6c3e 0d0a 2020 2020  -2.0</url>..    \n-00000640: 2020 3c64 6973 7472 6962 7574 696f 6e3e    <distribution>\n-00000650: 7265 706f 3c2f 6469 7374 7269 6275 7469  repo</distributi\n-00000660: 6f6e 3e0d 0a20 2020 203c 2f6c 6963 656e  on>..    </licen\n-00000670: 7365 3e0d 0a20 203c 2f6c 6963 656e 7365  se>..  </license\n-00000680: 733e 0d0a 2020 3c70 726f 7065 7274 6965  s>..  <propertie\n-00000690: 733e 0d0a 2020 2020 3c73 6b69 705f 6d61  s>..    <skip_ma\n-000006a0: 7665 6e5f 6465 706c 6f79 3e66 616c 7365  ven_deploy>false\n-000006b0: 3c2f 736b 6970 5f6d 6176 656e 5f64 6570  </skip_maven_dep\n-000006c0: 6c6f 793e 0d0a 2020 3c2f 7072 6f70 6572  loy>..  </proper\n-000006d0: 7469 6573 3e0d 0a20 203c 6465 7065 6e64  ties>..  <depend\n-000006e0: 656e 6369 6573 3e0d 0a20 2020 203c 6465  encies>..    <de\n-000006f0: 7065 6e64 656e 6379 3e0d 0a20 2020 2020  pendency>..     \n-00000700: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n-00000710: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n-00000720: 7049 643e 0d0a 2020 2020 2020 3c61 7274  pId>..      <art\n-00000730: 6966 6163 7449 643e 6475 6262 6f2d 636f  ifactId>dubbo-co\n-00000740: 6d6d 6f6e 3c2f 6172 7469 6661 6374 4964  mmon</artifactId\n-00000750: 3e0d 0a20 2020 2020 203c 7665 7273 696f  >..      <versio\n-00000760: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n-00000770: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n-00000780: 7369 6f6e 3e0d 0a20 2020 203c 2f64 6570  sion>..    </dep\n-00000790: 656e 6465 6e63 793e 0d0a 2020 2020 3c64  endency>..    <d\n-000007a0: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-000007b0: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n-000007c0: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n-000007d0: 7570 4964 3e0d 0a20 2020 2020 203c 6172  upId>..      <ar\n-000007e0: 7469 6661 6374 4964 3e64 7562 626f 2d73  tifactId>dubbo-s\n-000007f0: 6572 6961 6c69 7a61 7469 6f6e 2d61 7069  erialization-api\n-00000800: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000810: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n-00000820: 7072 6f6a 6563 742e 7061 7265 6e74 2e76  project.parent.v\n-00000830: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n-00000840: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-00000850: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-00000860: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-00000870: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n-00000880: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n-00000890: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-000008a0: 6374 4964 3e64 7562 626f 2d73 6572 6961  ctId>dubbo-seria\n-000008b0: 6c69 7a61 7469 6f6e 2d68 6573 7369 616e  lization-hessian\n-000008c0: 323c 2f61 7274 6966 6163 7449 643e 0d0a  2</artifactId>..\n-000008d0: 2020 2020 2020 3c76 6572 7369 6f6e 3e24        <version>$\n-000008e0: 7b70 726f 6a65 6374 2e70 6172 656e 742e  {project.parent.\n-000008f0: 7665 7273 696f 6e7d 3c2f 7665 7273 696f  version}</versio\n-00000900: 6e3e 0d0a 2020 2020 2020 3c73 636f 7065  n>..      <scope\n-00000910: 3e74 6573 743c 2f73 636f 7065 3e0d 0a20  >test</scope>.. \n-00000920: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n-00000930: 0d0a 2020 3c2f 6465 7065 6e64 656e 6369  ..  </dependenci\n-00000940: 6573 3e0d 0a3c 2f70 726f 6a65 6374 3e0d  es>..</project>.\n-00000950: 0a                                       .\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 656d  factId>dubbo-rem\n+00000480: 6f74 696e 673c 2f61 7274 6966 6163 7449  oting</artifactI\n+00000490: 643e 0a20 2020 203c 7665 7273 696f 6e3e  d>.    <version>\n+000004a0: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+000004b0: 0a20 203c 2f70 6172 656e 743e 0a20 203c  .  </parent>.  <\n+000004c0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000004d0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000004e0: 643e 0a20 203c 6172 7469 6661 6374 4964  d>.  <artifactId\n+000004f0: 3e64 7562 626f 2d72 656d 6f74 696e 672d  >dubbo-remoting-\n+00000500: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n+00000510: 0a20 203c 7665 7273 696f 6e3e 322e 372e  .  <version>2.7.\n+00000520: 3130 3c2f 7665 7273 696f 6e3e 0a20 203c  10</version>.  <\n+00000530: 6e61 6d65 3e24 7b70 726f 6a65 6374 2e61  name>${project.a\n+00000540: 7274 6966 6163 7449 647d 3c2f 6e61 6d65  rtifactId}</name\n+00000550: 3e0a 2020 3c64 6573 6372 6970 7469 6f6e  >.  <description\n+00000560: 3e54 6865 2072 656d 6f74 696e 6720 6d6f  >The remoting mo\n+00000570: 6475 6c65 206f 6620 6475 6262 6f20 7072  dule of dubbo pr\n+00000580: 6f6a 6563 743c 2f64 6573 6372 6970 7469  oject</descripti\n+00000590: 6f6e 3e0a 2020 3c6c 6963 656e 7365 733e  on>.  <licenses>\n+000005a0: 0a20 2020 203c 6c69 6365 6e73 653e 0a20  .    <license>. \n+000005b0: 2020 2020 203c 6e61 6d65 3e41 7061 6368       <name>Apach\n+000005c0: 6520 4c69 6365 6e73 652c 2056 6572 7369  e License, Versi\n+000005d0: 6f6e 2032 2e30 3c2f 6e61 6d65 3e0a 2020  on 2.0</name>.  \n+000005e0: 2020 2020 3c75 726c 3e68 7474 703a 2f2f      <url>http://\n+000005f0: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n+00000600: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n+00000610: 322e 303c 2f75 726c 3e0a 2020 2020 2020  2.0</url>.      \n+00000620: 3c64 6973 7472 6962 7574 696f 6e3e 7265  <distribution>re\n+00000630: 706f 3c2f 6469 7374 7269 6275 7469 6f6e  po</distribution\n+00000640: 3e0a 2020 2020 3c2f 6c69 6365 6e73 653e  >.    </license>\n+00000650: 0a20 203c 2f6c 6963 656e 7365 733e 0a20  .  </licenses>. \n+00000660: 203c 7072 6f70 6572 7469 6573 3e0a 2020   <properties>.  \n+00000670: 2020 3c73 6b69 705f 6d61 7665 6e5f 6465    <skip_maven_de\n+00000680: 706c 6f79 3e66 616c 7365 3c2f 736b 6970  ploy>false</skip\n+00000690: 5f6d 6176 656e 5f64 6570 6c6f 793e 0a20  _maven_deploy>. \n+000006a0: 203c 2f70 726f 7065 7274 6965 733e 0a20   </properties>. \n+000006b0: 203c 6465 7065 6e64 656e 6369 6573 3e0a   <dependencies>.\n+000006c0: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+000006d0: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+000006e0: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+000006f0: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+00000700: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+00000710: 626f 2d63 6f6d 6d6f 6e3c 2f61 7274 6966  bo-common</artif\n+00000720: 6163 7449 643e 0a20 2020 2020 203c 7665  actId>.      <ve\n+00000730: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n+00000740: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n+00000750: 2f76 6572 7369 6f6e 3e0a 2020 2020 3c2f  /version>.    </\n+00000760: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000770: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+00000780: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000790: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+000007a0: 6f75 7049 643e 0a20 2020 2020 203c 6172  oupId>.      <ar\n+000007b0: 7469 6661 6374 4964 3e64 7562 626f 2d73  tifactId>dubbo-s\n+000007c0: 6572 6961 6c69 7a61 7469 6f6e 2d61 7069  erialization-api\n+000007d0: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+000007e0: 2020 2020 3c76 6572 7369 6f6e 3e24 7b70      <version>${p\n+000007f0: 726f 6a65 6374 2e70 6172 656e 742e 7665  roject.parent.ve\n+00000800: 7273 696f 6e7d 3c2f 7665 7273 696f 6e3e  rsion}</version>\n+00000810: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+00000820: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+00000830: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+00000840: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+00000850: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000860: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+00000870: 6475 6262 6f2d 7365 7269 616c 697a 6174  dubbo-serializat\n+00000880: 696f 6e2d 6865 7373 6961 6e32 3c2f 6172  ion-hessian2</ar\n+00000890: 7469 6661 6374 4964 3e0a 2020 2020 2020  tifactId>.      \n+000008a0: 3c76 6572 7369 6f6e 3e24 7b70 726f 6a65  <version>${proje\n+000008b0: 6374 2e70 6172 656e 742e 7665 7273 696f  ct.parent.versio\n+000008c0: 6e7d 3c2f 7665 7273 696f 6e3e 0a20 2020  n}</version>.   \n+000008d0: 2020 203c 7363 6f70 653e 7465 7374 3c2f     <scope>test</\n+000008e0: 7363 6f70 653e 0a20 2020 203c 2f64 6570  scope>.    </dep\n+000008f0: 656e 6465 6e63 793e 0a20 203c 2f64 6570  endency>.  </dep\n+00000900: 656e 6465 6e63 6965 733e 0a3c 2f70 726f  endencies>.</pro\n+00000910: 6a65 6374 3e0a                           ject>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-remoting-netty/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-remoting-netty/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,146 +1,142 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a2d 2d3e 0d0a 3c70 726f  ense...-->..<pro\n-00000350: 6a65 6374 2078 7369 3a73 6368 656d 614c  ject xsi:schemaL\n-00000360: 6f63 6174 696f 6e3d 2268 7474 703a 2f2f  ocation=\"http://\n-00000370: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-00000380: 2f50 4f4d 2f34 2e30 2e30 2068 7474 7073  /POM/4.0.0 https\n-00000390: 3a2f 2f6d 6176 656e 2e61 7061 6368 652e  ://maven.apache.\n-000003a0: 6f72 672f 7873 642f 6d61 7665 6e2d 342e  org/xsd/maven-4.\n-000003b0: 302e 302e 7873 6422 2078 6d6c 6e73 3d22  0.0.xsd\" xmlns=\"\n-000003c0: 6874 7470 3a2f 2f6d 6176 656e 2e61 7061  http://maven.apa\n-000003d0: 6368 652e 6f72 672f 504f 4d2f 342e 302e  che.org/POM/4.0.\n-000003e0: 3022 0d0a 2020 2020 786d 6c6e 733a 7873  0\"..    xmlns:xs\n-000003f0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n-00000400: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n-00000410: 656d 612d 696e 7374 616e 6365 223e 0d0a  ema-instance\">..\n-00000420: 2020 3c6d 6f64 656c 5665 7273 696f 6e3e    <modelVersion>\n-00000430: 342e 302e 303c 2f6d 6f64 656c 5665 7273  4.0.0</modelVers\n-00000440: 696f 6e3e 0d0a 2020 3c70 6172 656e 743e  ion>..  <parent>\n-00000450: 0d0a 2020 2020 3c67 726f 7570 4964 3e6f  ..    <groupId>o\n-00000460: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000470: 2f67 726f 7570 4964 3e0d 0a20 2020 203c  /groupId>..    <\n-00000480: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000490: 2d72 656d 6f74 696e 673c 2f61 7274 6966  -remoting</artif\n-000004a0: 6163 7449 643e 0d0a 2020 2020 3c76 6572  actId>..    <ver\n-000004b0: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n-000004c0: 7369 6f6e 3e0d 0a20 203c 2f70 6172 656e  sion>..  </paren\n-000004d0: 743e 0d0a 2020 3c67 726f 7570 4964 3e6f  t>..  <groupId>o\n-000004e0: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-000004f0: 2f67 726f 7570 4964 3e0d 0a20 203c 6172  /groupId>..  <ar\n-00000500: 7469 6661 6374 4964 3e64 7562 626f 2d72  tifactId>dubbo-r\n-00000510: 656d 6f74 696e 672d 6e65 7474 793c 2f61  emoting-netty</a\n-00000520: 7274 6966 6163 7449 643e 0d0a 2020 3c76  rtifactId>..  <v\n-00000530: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-00000540: 6572 7369 6f6e 3e0d 0a20 203c 6e61 6d65  ersion>..  <name\n-00000550: 3e24 7b70 726f 6a65 6374 2e61 7274 6966  >${project.artif\n-00000560: 6163 7449 647d 3c2f 6e61 6d65 3e0d 0a20  actId}</name>.. \n-00000570: 203c 6465 7363 7269 7074 696f 6e3e 5468   <description>Th\n-00000580: 6520 6e65 7474 7920 7265 6d6f 7469 6e67  e netty remoting\n-00000590: 206d 6f64 756c 6520 6f66 2064 7562 626f   module of dubbo\n-000005a0: 2070 726f 6a65 6374 3c2f 6465 7363 7269   project</descri\n-000005b0: 7074 696f 6e3e 0d0a 2020 3c6c 6963 656e  ption>..  <licen\n-000005c0: 7365 733e 0d0a 2020 2020 3c6c 6963 656e  ses>..    <licen\n-000005d0: 7365 3e0d 0a20 2020 2020 203c 6e61 6d65  se>..      <name\n-000005e0: 3e41 7061 6368 6520 4c69 6365 6e73 652c  >Apache License,\n-000005f0: 2056 6572 7369 6f6e 2032 2e30 3c2f 6e61   Version 2.0</na\n-00000600: 6d65 3e0d 0a20 2020 2020 203c 7572 6c3e  me>..      <url>\n-00000610: 6874 7470 3a2f 2f77 7777 2e61 7061 6368  http://www.apach\n-00000620: 652e 6f72 672f 6c69 6365 6e73 6573 2f4c  e.org/licenses/L\n-00000630: 4943 454e 5345 2d32 2e30 3c2f 7572 6c3e  ICENSE-2.0</url>\n-00000640: 0d0a 2020 2020 2020 3c64 6973 7472 6962  ..      <distrib\n-00000650: 7574 696f 6e3e 7265 706f 3c2f 6469 7374  ution>repo</dist\n-00000660: 7269 6275 7469 6f6e 3e0d 0a20 2020 203c  ribution>..    <\n-00000670: 2f6c 6963 656e 7365 3e0d 0a20 203c 2f6c  /license>..  </l\n-00000680: 6963 656e 7365 733e 0d0a 2020 3c70 726f  icenses>..  <pro\n-00000690: 7065 7274 6965 733e 0d0a 2020 2020 3c73  perties>..    <s\n-000006a0: 6b69 705f 6d61 7665 6e5f 6465 706c 6f79  kip_maven_deploy\n-000006b0: 3e66 616c 7365 3c2f 736b 6970 5f6d 6176  >false</skip_mav\n-000006c0: 656e 5f64 6570 6c6f 793e 0d0a 2020 3c2f  en_deploy>..  </\n-000006d0: 7072 6f70 6572 7469 6573 3e0d 0a20 203c  properties>..  <\n-000006e0: 6465 7065 6e64 656e 6369 6573 3e0d 0a20  dependencies>.. \n-000006f0: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-00000700: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000710: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n-00000720: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-00000730: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n-00000740: 6262 6f2d 7265 6d6f 7469 6e67 2d61 7069  bbo-remoting-api\n-00000750: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000760: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n-00000770: 7072 6f6a 6563 742e 7061 7265 6e74 2e76  project.parent.v\n-00000780: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n-00000790: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-000007a0: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-000007b0: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-000007c0: 726f 7570 4964 3e6f 7267 2e6a 626f 7373  roupId>org.jboss\n-000007d0: 2e6e 6574 7479 3c2f 6772 6f75 7049 643e  .netty</groupId>\n-000007e0: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-000007f0: 7449 643e 6e65 7474 793c 2f61 7274 6966  tId>netty</artif\n-00000800: 6163 7449 643e 0d0a 2020 2020 3c2f 6465  actId>..    </de\n-00000810: 7065 6e64 656e 6379 3e0d 0a20 2020 203c  pendency>..    <\n-00000820: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000830: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n-00000840: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-00000850: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-00000860: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n-00000870: 7365 7269 616c 697a 6174 696f 6e2d 6865  serialization-he\n-00000880: 7373 6961 6e32 3c2f 6172 7469 6661 6374  ssian2</artifact\n-00000890: 4964 3e0d 0a20 2020 2020 203c 7665 7273  Id>..      <vers\n-000008a0: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n-000008b0: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n-000008c0: 6572 7369 6f6e 3e0d 0a20 2020 2020 203c  ersion>..      <\n-000008d0: 7363 6f70 653e 7465 7374 3c2f 7363 6f70  scope>test</scop\n-000008e0: 653e 0d0a 2020 2020 3c2f 6465 7065 6e64  e>..    </depend\n-000008f0: 656e 6379 3e0d 0a20 203c 2f64 6570 656e  ency>..  </depen\n-00000900: 6465 6e63 6965 733e 0d0a 3c2f 7072 6f6a  dencies>..</proj\n-00000910: 6563 743e 0d0a                           ect>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a2d 2d3e 0a3c 7072 6f6a  cense..-->.<proj\n+00000340: 6563 7420 7873 693a 7363 6865 6d61 4c6f  ect xsi:schemaLo\n+00000350: 6361 7469 6f6e 3d22 6874 7470 3a2f 2f6d  cation=\"http://m\n+00000360: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+00000370: 504f 4d2f 342e 302e 3020 6874 7470 733a  POM/4.0.0 https:\n+00000380: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n+00000390: 7267 2f78 7364 2f6d 6176 656e 2d34 2e30  rg/xsd/maven-4.0\n+000003a0: 2e30 2e78 7364 2220 786d 6c6e 733d 2268  .0.xsd\" xmlns=\"h\n+000003b0: 7474 703a 2f2f 6d61 7665 6e2e 6170 6163  ttp://maven.apac\n+000003c0: 6865 2e6f 7267 2f50 4f4d 2f34 2e30 2e30  he.org/POM/4.0.0\n+000003d0: 220a 2020 2020 786d 6c6e 733a 7873 693d  \".    xmlns:xsi=\n+000003e0: 2268 7474 703a 2f2f 7777 772e 7733 2e6f  \"http://www.w3.o\n+000003f0: 7267 2f32 3030 312f 584d 4c53 6368 656d  rg/2001/XMLSchem\n+00000400: 612d 696e 7374 616e 6365 223e 0a20 203c  a-instance\">.  <\n+00000410: 6d6f 6465 6c56 6572 7369 6f6e 3e34 2e30  modelVersion>4.0\n+00000420: 2e30 3c2f 6d6f 6465 6c56 6572 7369 6f6e  .0</modelVersion\n+00000430: 3e0a 2020 3c70 6172 656e 743e 0a20 2020  >.  <parent>.   \n+00000440: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000450: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000460: 7049 643e 0a20 2020 203c 6172 7469 6661  pId>.    <artifa\n+00000470: 6374 4964 3e64 7562 626f 2d72 656d 6f74  ctId>dubbo-remot\n+00000480: 696e 673c 2f61 7274 6966 6163 7449 643e  ing</artifactId>\n+00000490: 0a20 2020 203c 7665 7273 696f 6e3e 322e  .    <version>2.\n+000004a0: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+000004b0: 203c 2f70 6172 656e 743e 0a20 203c 6772   </parent>.  <gr\n+000004c0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000004d0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+000004e0: 0a20 203c 6172 7469 6661 6374 4964 3e64  .  <artifactId>d\n+000004f0: 7562 626f 2d72 656d 6f74 696e 672d 6e65  ubbo-remoting-ne\n+00000500: 7474 793c 2f61 7274 6966 6163 7449 643e  tty</artifactId>\n+00000510: 0a20 203c 7665 7273 696f 6e3e 322e 372e  .  <version>2.7.\n+00000520: 3130 3c2f 7665 7273 696f 6e3e 0a20 203c  10</version>.  <\n+00000530: 6e61 6d65 3e24 7b70 726f 6a65 6374 2e61  name>${project.a\n+00000540: 7274 6966 6163 7449 647d 3c2f 6e61 6d65  rtifactId}</name\n+00000550: 3e0a 2020 3c64 6573 6372 6970 7469 6f6e  >.  <description\n+00000560: 3e54 6865 206e 6574 7479 2072 656d 6f74  >The netty remot\n+00000570: 696e 6720 6d6f 6475 6c65 206f 6620 6475  ing module of du\n+00000580: 6262 6f20 7072 6f6a 6563 743c 2f64 6573  bbo project</des\n+00000590: 6372 6970 7469 6f6e 3e0a 2020 3c6c 6963  cription>.  <lic\n+000005a0: 656e 7365 733e 0a20 2020 203c 6c69 6365  enses>.    <lice\n+000005b0: 6e73 653e 0a20 2020 2020 203c 6e61 6d65  nse>.      <name\n+000005c0: 3e41 7061 6368 6520 4c69 6365 6e73 652c  >Apache License,\n+000005d0: 2056 6572 7369 6f6e 2032 2e30 3c2f 6e61   Version 2.0</na\n+000005e0: 6d65 3e0a 2020 2020 2020 3c75 726c 3e68  me>.      <url>h\n+000005f0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+00000600: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+00000610: 4345 4e53 452d 322e 303c 2f75 726c 3e0a  CENSE-2.0</url>.\n+00000620: 2020 2020 2020 3c64 6973 7472 6962 7574        <distribut\n+00000630: 696f 6e3e 7265 706f 3c2f 6469 7374 7269  ion>repo</distri\n+00000640: 6275 7469 6f6e 3e0a 2020 2020 3c2f 6c69  bution>.    </li\n+00000650: 6365 6e73 653e 0a20 203c 2f6c 6963 656e  cense>.  </licen\n+00000660: 7365 733e 0a20 203c 7072 6f70 6572 7469  ses>.  <properti\n+00000670: 6573 3e0a 2020 2020 3c73 6b69 705f 6d61  es>.    <skip_ma\n+00000680: 7665 6e5f 6465 706c 6f79 3e66 616c 7365  ven_deploy>false\n+00000690: 3c2f 736b 6970 5f6d 6176 656e 5f64 6570  </skip_maven_dep\n+000006a0: 6c6f 793e 0a20 203c 2f70 726f 7065 7274  loy>.  </propert\n+000006b0: 6965 733e 0a20 203c 6465 7065 6e64 656e  ies>.  <dependen\n+000006c0: 6369 6573 3e0a 2020 2020 3c64 6570 656e  cies>.    <depen\n+000006d0: 6465 6e63 793e 0a20 2020 2020 203c 6772  dency>.      <gr\n+000006e0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000006f0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+00000700: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+00000710: 4964 3e64 7562 626f 2d72 656d 6f74 696e  Id>dubbo-remotin\n+00000720: 672d 6170 693c 2f61 7274 6966 6163 7449  g-api</artifactI\n+00000730: 643e 0a20 2020 2020 203c 7665 7273 696f  d>.      <versio\n+00000740: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n+00000750: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n+00000760: 7369 6f6e 3e0a 2020 2020 3c2f 6465 7065  sion>.    </depe\n+00000770: 6e64 656e 6379 3e0a 2020 2020 3c64 6570  ndency>.    <dep\n+00000780: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+00000790: 6772 6f75 7049 643e 6f72 672e 6a62 6f73  groupId>org.jbos\n+000007a0: 732e 6e65 7474 793c 2f67 726f 7570 4964  s.netty</groupId\n+000007b0: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+000007c0: 7449 643e 6e65 7474 793c 2f61 7274 6966  tId>netty</artif\n+000007d0: 6163 7449 643e 0a20 2020 203c 2f64 6570  actId>.    </dep\n+000007e0: 656e 6465 6e63 793e 0a20 2020 203c 6465  endency>.    <de\n+000007f0: 7065 6e64 656e 6379 3e0a 2020 2020 2020  pendency>.      \n+00000800: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n+00000810: 6368 652e 6475 6262 6f3c 2f67 726f 7570  che.dubbo</group\n+00000820: 4964 3e0a 2020 2020 2020 3c61 7274 6966  Id>.      <artif\n+00000830: 6163 7449 643e 6475 6262 6f2d 7365 7269  actId>dubbo-seri\n+00000840: 616c 697a 6174 696f 6e2d 6865 7373 6961  alization-hessia\n+00000850: 6e32 3c2f 6172 7469 6661 6374 4964 3e0a  n2</artifactId>.\n+00000860: 2020 2020 2020 3c76 6572 7369 6f6e 3e24        <version>$\n+00000870: 7b70 726f 6a65 6374 2e70 6172 656e 742e  {project.parent.\n+00000880: 7665 7273 696f 6e7d 3c2f 7665 7273 696f  version}</versio\n+00000890: 6e3e 0a20 2020 2020 203c 7363 6f70 653e  n>.      <scope>\n+000008a0: 7465 7374 3c2f 7363 6f70 653e 0a20 2020  test</scope>.   \n+000008b0: 203c 2f64 6570 656e 6465 6e63 793e 0a20   </dependency>. \n+000008c0: 203c 2f64 6570 656e 6465 6e63 6965 733e   </dependencies>\n+000008d0: 0a3c 2f70 726f 6a65 6374 3e0a            .</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-remoting-netty4/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-remoting-netty4/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,150 +1,147 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 656d 6f74 696e 673c 2f61 7274  bo-remoting</art\n-000004a0: 6966 6163 7449 643e 0d0a 2020 2020 3c76  ifactId>..    <v\n-000004b0: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-000004c0: 6572 7369 6f6e 3e0d 0a20 203c 2f70 6172  ersion>..  </par\n-000004d0: 656e 743e 0d0a 2020 3c67 726f 7570 4964  ent>..  <groupId\n-000004e0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000004f0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 203c  o</groupId>..  <\n-00000500: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000510: 2d72 656d 6f74 696e 672d 6e65 7474 7934  -remoting-netty4\n-00000520: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000530: 203c 7665 7273 696f 6e3e 322e 372e 3130   <version>2.7.10\n-00000540: 3c2f 7665 7273 696f 6e3e 0d0a 2020 3c6e  </version>..  <n\n-00000550: 616d 653e 247b 7072 6f6a 6563 742e 6172  ame>${project.ar\n-00000560: 7469 6661 6374 4964 7d3c 2f6e 616d 653e  tifactId}</name>\n-00000570: 0d0a 2020 3c64 6573 6372 6970 7469 6f6e  ..  <description\n-00000580: 3e54 6865 206e 6574 7479 3420 7265 6d6f  >The netty4 remo\n-00000590: 7469 6e67 206d 6f64 756c 6520 6f66 2064  ting module of d\n-000005a0: 7562 626f 2070 726f 6a65 6374 3c2f 6465  ubbo project</de\n-000005b0: 7363 7269 7074 696f 6e3e 0d0a 2020 3c6c  scription>..  <l\n-000005c0: 6963 656e 7365 733e 0d0a 2020 2020 3c6c  icenses>..    <l\n-000005d0: 6963 656e 7365 3e0d 0a20 2020 2020 203c  icense>..      <\n-000005e0: 6e61 6d65 3e41 7061 6368 6520 4c69 6365  name>Apache Lice\n-000005f0: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n-00000600: 3c2f 6e61 6d65 3e0d 0a20 2020 2020 203c  </name>..      <\n-00000610: 7572 6c3e 6874 7470 3a2f 2f77 7777 2e61  url>http://www.a\n-00000620: 7061 6368 652e 6f72 672f 6c69 6365 6e73  pache.org/licens\n-00000630: 6573 2f4c 4943 454e 5345 2d32 2e30 3c2f  es/LICENSE-2.0</\n-00000640: 7572 6c3e 0d0a 2020 2020 2020 3c64 6973  url>..      <dis\n-00000650: 7472 6962 7574 696f 6e3e 7265 706f 3c2f  tribution>repo</\n-00000660: 6469 7374 7269 6275 7469 6f6e 3e0d 0a20  distribution>.. \n-00000670: 2020 203c 2f6c 6963 656e 7365 3e0d 0a20     </license>.. \n-00000680: 203c 2f6c 6963 656e 7365 733e 0d0a 2020   </licenses>..  \n-00000690: 3c70 726f 7065 7274 6965 733e 0d0a 2020  <properties>..  \n-000006a0: 2020 3c73 6b69 705f 6d61 7665 6e5f 6465    <skip_maven_de\n-000006b0: 706c 6f79 3e66 616c 7365 3c2f 736b 6970  ploy>false</skip\n-000006c0: 5f6d 6176 656e 5f64 6570 6c6f 793e 0d0a  _maven_deploy>..\n-000006d0: 2020 2020 3c70 726f 6a65 6374 2e62 7569      <project.bui\n-000006e0: 6c64 2e73 6f75 7263 6545 6e63 6f64 696e  ld.sourceEncodin\n-000006f0: 673e 5554 462d 383c 2f70 726f 6a65 6374  g>UTF-8</project\n-00000700: 2e62 7569 6c64 2e73 6f75 7263 6545 6e63  .build.sourceEnc\n-00000710: 6f64 696e 673e 0d0a 2020 3c2f 7072 6f70  oding>..  </prop\n-00000720: 6572 7469 6573 3e0d 0a20 203c 6465 7065  erties>..  <depe\n-00000730: 6e64 656e 6369 6573 3e0d 0a20 2020 203c  ndencies>..    <\n-00000740: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000750: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n-00000760: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-00000770: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-00000780: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n-00000790: 7265 6d6f 7469 6e67 2d61 7069 3c2f 6172  remoting-api</ar\n-000007a0: 7469 6661 6374 4964 3e0d 0a20 2020 2020  tifactId>..     \n-000007b0: 203c 7665 7273 696f 6e3e 247b 7072 6f6a   <version>${proj\n-000007c0: 6563 742e 7061 7265 6e74 2e76 6572 7369  ect.parent.versi\n-000007d0: 6f6e 7d3c 2f76 6572 7369 6f6e 3e0d 0a20  on}</version>.. \n-000007e0: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n-000007f0: 0d0a 2020 2020 3c64 6570 656e 6465 6e63  ..    <dependenc\n-00000800: 793e 0d0a 2020 2020 2020 3c67 726f 7570  y>..      <group\n-00000810: 4964 3e69 6f2e 6e65 7474 793c 2f67 726f  Id>io.netty</gro\n-00000820: 7570 4964 3e0d 0a20 2020 2020 203c 6172  upId>..      <ar\n-00000830: 7469 6661 6374 4964 3e6e 6574 7479 2d61  tifactId>netty-a\n-00000840: 6c6c 3c2f 6172 7469 6661 6374 4964 3e0d  ll</artifactId>.\n-00000850: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-00000860: 793e 0d0a 2020 2020 3c64 6570 656e 6465  y>..    <depende\n-00000870: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-00000880: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n-00000890: 6475 6262 6f3c 2f67 726f 7570 4964 3e0d  dubbo</groupId>.\n-000008a0: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-000008b0: 4964 3e64 7562 626f 2d73 6572 6961 6c69  Id>dubbo-seriali\n-000008c0: 7a61 7469 6f6e 2d68 6573 7369 616e 323c  zation-hessian2<\n-000008d0: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-000008e0: 2020 2020 3c76 6572 7369 6f6e 3e24 7b70      <version>${p\n-000008f0: 726f 6a65 6374 2e70 6172 656e 742e 7665  roject.parent.ve\n-00000900: 7273 696f 6e7d 3c2f 7665 7273 696f 6e3e  rsion}</version>\n-00000910: 0d0a 2020 2020 2020 3c73 636f 7065 3e74  ..      <scope>t\n-00000920: 6573 743c 2f73 636f 7065 3e0d 0a20 2020  est</scope>..   \n-00000930: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-00000940: 2020 3c2f 6465 7065 6e64 656e 6369 6573    </dependencies\n-00000950: 3e0d 0a3c 2f70 726f 6a65 6374 3e0d 0a    >..</project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 656d  factId>dubbo-rem\n+00000480: 6f74 696e 673c 2f61 7274 6966 6163 7449  oting</artifactI\n+00000490: 643e 0a20 2020 203c 7665 7273 696f 6e3e  d>.    <version>\n+000004a0: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+000004b0: 0a20 203c 2f70 6172 656e 743e 0a20 203c  .  </parent>.  <\n+000004c0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000004d0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000004e0: 643e 0a20 203c 6172 7469 6661 6374 4964  d>.  <artifactId\n+000004f0: 3e64 7562 626f 2d72 656d 6f74 696e 672d  >dubbo-remoting-\n+00000500: 6e65 7474 7934 3c2f 6172 7469 6661 6374  netty4</artifact\n+00000510: 4964 3e0a 2020 3c76 6572 7369 6f6e 3e32  Id>.  <version>2\n+00000520: 2e37 2e31 303c 2f76 6572 7369 6f6e 3e0a  .7.10</version>.\n+00000530: 2020 3c6e 616d 653e 247b 7072 6f6a 6563    <name>${projec\n+00000540: 742e 6172 7469 6661 6374 4964 7d3c 2f6e  t.artifactId}</n\n+00000550: 616d 653e 0a20 203c 6465 7363 7269 7074  ame>.  <descript\n+00000560: 696f 6e3e 5468 6520 6e65 7474 7934 2072  ion>The netty4 r\n+00000570: 656d 6f74 696e 6720 6d6f 6475 6c65 206f  emoting module o\n+00000580: 6620 6475 6262 6f20 7072 6f6a 6563 743c  f dubbo project<\n+00000590: 2f64 6573 6372 6970 7469 6f6e 3e0a 2020  /description>.  \n+000005a0: 3c6c 6963 656e 7365 733e 0a20 2020 203c  <licenses>.    <\n+000005b0: 6c69 6365 6e73 653e 0a20 2020 2020 203c  license>.      <\n+000005c0: 6e61 6d65 3e41 7061 6368 6520 4c69 6365  name>Apache Lice\n+000005d0: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+000005e0: 3c2f 6e61 6d65 3e0a 2020 2020 2020 3c75  </name>.      <u\n+000005f0: 726c 3e68 7474 703a 2f2f 7777 772e 6170  rl>http://www.ap\n+00000600: 6163 6865 2e6f 7267 2f6c 6963 656e 7365  ache.org/license\n+00000610: 732f 4c49 4345 4e53 452d 322e 303c 2f75  s/LICENSE-2.0</u\n+00000620: 726c 3e0a 2020 2020 2020 3c64 6973 7472  rl>.      <distr\n+00000630: 6962 7574 696f 6e3e 7265 706f 3c2f 6469  ibution>repo</di\n+00000640: 7374 7269 6275 7469 6f6e 3e0a 2020 2020  stribution>.    \n+00000650: 3c2f 6c69 6365 6e73 653e 0a20 203c 2f6c  </license>.  </l\n+00000660: 6963 656e 7365 733e 0a20 203c 7072 6f70  icenses>.  <prop\n+00000670: 6572 7469 6573 3e0a 2020 2020 3c73 6b69  erties>.    <ski\n+00000680: 705f 6d61 7665 6e5f 6465 706c 6f79 3e66  p_maven_deploy>f\n+00000690: 616c 7365 3c2f 736b 6970 5f6d 6176 656e  alse</skip_maven\n+000006a0: 5f64 6570 6c6f 793e 0a20 2020 203c 7072  _deploy>.    <pr\n+000006b0: 6f6a 6563 742e 6275 696c 642e 736f 7572  oject.build.sour\n+000006c0: 6365 456e 636f 6469 6e67 3e55 5446 2d38  ceEncoding>UTF-8\n+000006d0: 3c2f 7072 6f6a 6563 742e 6275 696c 642e  </project.build.\n+000006e0: 736f 7572 6365 456e 636f 6469 6e67 3e0a  sourceEncoding>.\n+000006f0: 2020 3c2f 7072 6f70 6572 7469 6573 3e0a    </properties>.\n+00000700: 2020 3c64 6570 656e 6465 6e63 6965 733e    <dependencies>\n+00000710: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+00000720: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+00000730: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n+00000740: 6f3c 2f67 726f 7570 4964 3e0a 2020 2020  o</groupId>.    \n+00000750: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000760: 6262 6f2d 7265 6d6f 7469 6e67 2d61 7069  bbo-remoting-api\n+00000770: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000780: 2020 2020 3c76 6572 7369 6f6e 3e24 7b70      <version>${p\n+00000790: 726f 6a65 6374 2e70 6172 656e 742e 7665  roject.parent.ve\n+000007a0: 7273 696f 6e7d 3c2f 7665 7273 696f 6e3e  rsion}</version>\n+000007b0: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+000007c0: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+000007d0: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+000007e0: 4964 3e69 6f2e 6e65 7474 793c 2f67 726f  Id>io.netty</gro\n+000007f0: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000800: 6966 6163 7449 643e 6e65 7474 792d 616c  ifactId>netty-al\n+00000810: 6c3c 2f61 7274 6966 6163 7449 643e 0a20  l</artifactId>. \n+00000820: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+00000830: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+00000840: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+00000850: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n+00000860: 6f3c 2f67 726f 7570 4964 3e0a 2020 2020  o</groupId>.    \n+00000870: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000880: 6262 6f2d 7365 7269 616c 697a 6174 696f  bbo-serializatio\n+00000890: 6e2d 6865 7373 6961 6e32 3c2f 6172 7469  n-hessian2</arti\n+000008a0: 6661 6374 4964 3e0a 2020 2020 2020 3c76  factId>.      <v\n+000008b0: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n+000008c0: 2e70 6172 656e 742e 7665 7273 696f 6e7d  .parent.version}\n+000008d0: 3c2f 7665 7273 696f 6e3e 0a20 2020 2020  </version>.     \n+000008e0: 203c 7363 6f70 653e 7465 7374 3c2f 7363   <scope>test</sc\n+000008f0: 6f70 653e 0a20 2020 203c 2f64 6570 656e  ope>.    </depen\n+00000900: 6465 6e63 793e 0a20 203c 2f64 6570 656e  dency>.  </depen\n+00000910: 6465 6e63 6965 733e 0a3c 2f70 726f 6a65  dencies>.</proje\n+00000920: 6374 3e0a                                ct>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-remoting-etcd3/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-remoting-etcd3/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,231 +1,225 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 7e20 4c69 6365 6e73 6564 2074 6f20 7468  ~ Licensed to th\n-00000040: 6520 4170 6163 6865 2053 6f66 7477 6172  e Apache Softwar\n-00000050: 6520 466f 756e 6461 7469 6f6e 2028 4153  e Foundation (AS\n-00000060: 4629 2075 6e64 6572 206f 6e65 206f 7220  F) under one or \n-00000070: 6d6f 7265 0d0a 2020 7e20 636f 6e74 7269  more..  ~ contri\n-00000080: 6275 746f 7220 6c69 6365 6e73 6520 6167  butor license ag\n-00000090: 7265 656d 656e 7473 2e20 2053 6565 2074  reements.  See t\n-000000a0: 6865 204e 4f54 4943 4520 6669 6c65 2064  he NOTICE file d\n-000000b0: 6973 7472 6962 7574 6564 2077 6974 680d  istributed with.\n-000000c0: 0a20 207e 2074 6869 7320 776f 726b 2066  .  ~ this work f\n-000000d0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n-000000e0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n-000000f0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n-00000100: 6e65 7273 6869 702e 0d0a 2020 7e20 5468  nership...  ~ Th\n-00000110: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000120: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000130: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000140: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000150: 6e20 322e 300d 0a20 207e 2028 7468 6520  n 2.0..  ~ (the \n-00000160: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n-00000170: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n-00000180: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n-00000190: 636f 6d70 6c69 616e 6365 2077 6974 680d  compliance with.\n-000001a0: 0a20 207e 2074 6865 204c 6963 656e 7365  .  ~ the License\n-000001b0: 2e20 2059 6f75 206d 6179 206f 6274 6169  .  You may obtai\n-000001c0: 6e20 6120 636f 7079 206f 6620 7468 6520  n a copy of the \n-000001d0: 4c69 6365 6e73 6520 6174 0d0a 2020 7e0d  License at..  ~.\n-000001e0: 0a20 207e 2020 2020 2068 7474 703a 2f2f  .  ~     http://\n-000001f0: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n-00000200: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n-00000210: 322e 300d 0a20 207e 0d0a 2020 7e20 556e  2.0..  ~..  ~ Un\n-00000220: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n-00000230: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n-00000240: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n-00000250: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n-00000260: 650d 0a20 207e 2064 6973 7472 6962 7574  e..  ~ distribut\n-00000270: 6564 2075 6e64 6572 2074 6865 204c 6963  ed under the Lic\n-00000280: 656e 7365 2069 7320 6469 7374 7269 6275  ense is distribu\n-00000290: 7465 6420 6f6e 2061 6e20 2241 5320 4953  ted on an \"AS IS\n-000002a0: 2220 4241 5349 532c 0d0a 2020 7e20 5749  \" BASIS,..  ~ WI\n-000002b0: 5448 4f55 5420 5741 5252 414e 5449 4553  THOUT WARRANTIES\n-000002c0: 204f 5220 434f 4e44 4954 494f 4e53 204f   OR CONDITIONS O\n-000002d0: 4620 414e 5920 4b49 4e44 2c20 6569 7468  F ANY KIND, eith\n-000002e0: 6572 2065 7870 7265 7373 206f 7220 696d  er express or im\n-000002f0: 706c 6965 642e 0d0a 2020 7e20 5365 6520  plied...  ~ See \n-00000300: 7468 6520 4c69 6365 6e73 6520 666f 7220  the License for \n-00000310: 7468 6520 7370 6563 6966 6963 206c 616e  the specific lan\n-00000320: 6775 6167 6520 676f 7665 726e 696e 6720  guage governing \n-00000330: 7065 726d 6973 7369 6f6e 7320 616e 640d  permissions and.\n-00000340: 0a20 207e 206c 696d 6974 6174 696f 6e73  .  ~ limitations\n-00000350: 2075 6e64 6572 2074 6865 204c 6963 656e   under the Licen\n-00000360: 7365 2e0d 0a20 202d 2d3e 0d0a 3c70 726f  se...  -->..<pro\n-00000370: 6a65 6374 2078 7369 3a73 6368 656d 614c  ject xsi:schemaL\n-00000380: 6f63 6174 696f 6e3d 2268 7474 703a 2f2f  ocation=\"http://\n-00000390: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003a0: 2f50 4f4d 2f34 2e30 2e30 2068 7474 7073  /POM/4.0.0 https\n-000003b0: 3a2f 2f6d 6176 656e 2e61 7061 6368 652e  ://maven.apache.\n-000003c0: 6f72 672f 7873 642f 6d61 7665 6e2d 342e  org/xsd/maven-4.\n-000003d0: 302e 302e 7873 6422 2078 6d6c 6e73 3d22  0.0.xsd\" xmlns=\"\n-000003e0: 6874 7470 3a2f 2f6d 6176 656e 2e61 7061  http://maven.apa\n-000003f0: 6368 652e 6f72 672f 504f 4d2f 342e 302e  che.org/POM/4.0.\n-00000400: 3022 0d0a 2020 2020 786d 6c6e 733a 7873  0\"..    xmlns:xs\n-00000410: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n-00000420: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n-00000430: 656d 612d 696e 7374 616e 6365 223e 0d0a  ema-instance\">..\n-00000440: 2020 3c6d 6f64 656c 5665 7273 696f 6e3e    <modelVersion>\n-00000450: 342e 302e 303c 2f6d 6f64 656c 5665 7273  4.0.0</modelVers\n-00000460: 696f 6e3e 0d0a 2020 3c70 6172 656e 743e  ion>..  <parent>\n-00000470: 0d0a 2020 2020 3c67 726f 7570 4964 3e6f  ..    <groupId>o\n-00000480: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000490: 2f67 726f 7570 4964 3e0d 0a20 2020 203c  /groupId>..    <\n-000004a0: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-000004b0: 2d72 656d 6f74 696e 673c 2f61 7274 6966  -remoting</artif\n-000004c0: 6163 7449 643e 0d0a 2020 2020 3c76 6572  actId>..    <ver\n-000004d0: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n-000004e0: 7369 6f6e 3e0d 0a20 203c 2f70 6172 656e  sion>..  </paren\n-000004f0: 743e 0d0a 2020 3c67 726f 7570 4964 3e6f  t>..  <groupId>o\n-00000500: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000510: 2f67 726f 7570 4964 3e0d 0a20 203c 6172  /groupId>..  <ar\n-00000520: 7469 6661 6374 4964 3e64 7562 626f 2d72  tifactId>dubbo-r\n-00000530: 656d 6f74 696e 672d 6574 6364 333c 2f61  emoting-etcd3</a\n-00000540: 7274 6966 6163 7449 643e 0d0a 2020 3c76  rtifactId>..  <v\n-00000550: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-00000560: 6572 7369 6f6e 3e0d 0a20 203c 6e61 6d65  ersion>..  <name\n-00000570: 3e24 7b70 726f 6a65 6374 2e61 7274 6966  >${project.artif\n-00000580: 6163 7449 647d 3c2f 6e61 6d65 3e0d 0a20  actId}</name>.. \n-00000590: 203c 6465 7363 7269 7074 696f 6e3e 5468   <description>Th\n-000005a0: 6520 6574 6364 3320 7265 6d6f 7469 6e67  e etcd3 remoting\n-000005b0: 206d 6f64 756c 6520 6f66 2044 7562 626f   module of Dubbo\n-000005c0: 2070 726f 6a65 6374 3c2f 6465 7363 7269   project</descri\n-000005d0: 7074 696f 6e3e 0d0a 2020 3c6c 6963 656e  ption>..  <licen\n-000005e0: 7365 733e 0d0a 2020 2020 3c6c 6963 656e  ses>..    <licen\n-000005f0: 7365 3e0d 0a20 2020 2020 203c 6e61 6d65  se>..      <name\n-00000600: 3e41 7061 6368 6520 4c69 6365 6e73 652c  >Apache License,\n-00000610: 2056 6572 7369 6f6e 2032 2e30 3c2f 6e61   Version 2.0</na\n-00000620: 6d65 3e0d 0a20 2020 2020 203c 7572 6c3e  me>..      <url>\n-00000630: 6874 7470 3a2f 2f77 7777 2e61 7061 6368  http://www.apach\n-00000640: 652e 6f72 672f 6c69 6365 6e73 6573 2f4c  e.org/licenses/L\n-00000650: 4943 454e 5345 2d32 2e30 3c2f 7572 6c3e  ICENSE-2.0</url>\n-00000660: 0d0a 2020 2020 2020 3c64 6973 7472 6962  ..      <distrib\n-00000670: 7574 696f 6e3e 7265 706f 3c2f 6469 7374  ution>repo</dist\n-00000680: 7269 6275 7469 6f6e 3e0d 0a20 2020 203c  ribution>..    <\n-00000690: 2f6c 6963 656e 7365 3e0d 0a20 203c 2f6c  /license>..  </l\n-000006a0: 6963 656e 7365 733e 0d0a 2020 3c70 726f  icenses>..  <pro\n-000006b0: 7065 7274 6965 733e 0d0a 2020 2020 3c73  perties>..    <s\n-000006c0: 6b69 7049 6e74 6567 7261 7469 6f6e 5465  kipIntegrationTe\n-000006d0: 7374 733e 7472 7565 3c2f 736b 6970 496e  sts>true</skipIn\n-000006e0: 7465 6772 6174 696f 6e54 6573 7473 3e0d  tegrationTests>.\n-000006f0: 0a20 2020 203c 736b 6970 5f6d 6176 656e  .    <skip_maven\n-00000700: 5f64 6570 6c6f 793e 6661 6c73 653c 2f73  _deploy>false</s\n-00000710: 6b69 705f 6d61 7665 6e5f 6465 706c 6f79  kip_maven_deploy\n-00000720: 3e0d 0a20 2020 203c 6173 7365 7274 6a2e  >..    <assertj.\n-00000730: 7665 7273 696f 6e3e 332e 3133 2e32 3c2f  version>3.13.2</\n-00000740: 6173 7365 7274 6a2e 7665 7273 696f 6e3e  assertj.version>\n-00000750: 0d0a 2020 3c2f 7072 6f70 6572 7469 6573  ..  </properties\n-00000760: 3e0d 0a20 203c 6465 7065 6e64 656e 6369  >..  <dependenci\n-00000770: 6573 3e0d 0a20 2020 203c 6465 7065 6e64  es>..    <depend\n-00000780: 656e 6379 3e0d 0a20 2020 2020 203c 6772  ency>..      <gr\n-00000790: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n-000007a0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n-000007b0: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-000007c0: 7449 643e 6475 6262 6f2d 7265 6d6f 7469  tId>dubbo-remoti\n-000007d0: 6e67 2d61 7069 3c2f 6172 7469 6661 6374  ng-api</artifact\n-000007e0: 4964 3e0d 0a20 2020 2020 203c 7665 7273  Id>..      <vers\n-000007f0: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n-00000800: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n-00000810: 6572 7369 6f6e 3e0d 0a20 2020 203c 2f64  ersion>..    </d\n-00000820: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000830: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-00000840: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n-00000850: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-00000860: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-00000870: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000880: 2d63 6f6d 6d6f 6e3c 2f61 7274 6966 6163  -common</artifac\n-00000890: 7449 643e 0d0a 2020 2020 2020 3c76 6572  tId>..      <ver\n-000008a0: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n-000008b0: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n-000008c0: 7665 7273 696f 6e3e 0d0a 2020 2020 3c2f  version>..    </\n-000008d0: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-000008e0: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-000008f0: 2020 2020 203c 6772 6f75 7049 643e 696f       <groupId>io\n-00000900: 2e65 7463 643c 2f67 726f 7570 4964 3e0d  .etcd</groupId>.\n-00000910: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-00000920: 4964 3e6a 6574 6364 2d63 6f72 653c 2f61  Id>jetcd-core</a\n-00000930: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-00000940: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-00000950: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-00000960: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000970: 696f 2e67 7270 633c 2f67 726f 7570 4964  io.grpc</groupId\n-00000980: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-00000990: 6374 4964 3e67 7270 632d 636f 7265 3c2f  ctId>grpc-core</\n-000009a0: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-000009b0: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-000009c0: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n-000009d0: 0d0a 2020 2020 2020 3c67 726f 7570 4964  ..      <groupId\n-000009e0: 3e69 6f2e 6772 7063 3c2f 6772 6f75 7049  >io.grpc</groupI\n-000009f0: 643e 0d0a 2020 2020 2020 3c61 7274 6966  d>..      <artif\n-00000a00: 6163 7449 643e 6772 7063 2d6e 6574 7479  actId>grpc-netty\n-00000a10: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000a20: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n-00000a30: 0d0a 2020 2020 3c64 6570 656e 6465 6e63  ..    <dependenc\n-00000a40: 793e 0d0a 2020 2020 2020 3c67 726f 7570  y>..      <group\n-00000a50: 4964 3e69 6f2e 6772 7063 3c2f 6772 6f75  Id>io.grpc</grou\n-00000a60: 7049 643e 0d0a 2020 2020 2020 3c61 7274  pId>..      <art\n-00000a70: 6966 6163 7449 643e 6772 7063 2d70 726f  ifactId>grpc-pro\n-00000a80: 746f 6275 663c 2f61 7274 6966 6163 7449  tobuf</artifactI\n-00000a90: 643e 0d0a 2020 2020 3c2f 6465 7065 6e64  d>..    </depend\n-00000aa0: 656e 6379 3e0d 0a20 2020 203c 6465 7065  ency>..    <depe\n-00000ab0: 6e64 656e 6379 3e0d 0a20 2020 2020 203c  ndency>..      <\n-00000ac0: 6772 6f75 7049 643e 696f 2e67 7270 633c  groupId>io.grpc<\n-00000ad0: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-00000ae0: 203c 6172 7469 6661 6374 4964 3e67 7270   <artifactId>grp\n-00000af0: 632d 7374 7562 3c2f 6172 7469 6661 6374  c-stub</artifact\n-00000b00: 4964 3e0d 0a20 2020 203c 2f64 6570 656e  Id>..    </depen\n-00000b10: 6465 6e63 793e 0d0a 2020 2020 3c64 6570  dency>..    <dep\n-00000b20: 656e 6465 6e63 793e 0d0a 2020 2020 2020  endency>..      \n-00000b30: 3c67 726f 7570 4964 3e69 6f2e 6772 7063  <groupId>io.grpc\n-00000b40: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-00000b50: 2020 3c61 7274 6966 6163 7449 643e 6772    <artifactId>gr\n-00000b60: 7063 2d67 7270 636c 623c 2f61 7274 6966  pc-grpclb</artif\n-00000b70: 6163 7449 643e 0d0a 2020 2020 3c2f 6465  actId>..    </de\n-00000b80: 7065 6e64 656e 6379 3e0d 0a20 2020 203c  pendency>..    <\n-00000b90: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000ba0: 2020 203c 6772 6f75 7049 643e 696f 2e65     <groupId>io.e\n-00000bb0: 7463 643c 2f67 726f 7570 4964 3e0d 0a20  tcd</groupId>.. \n-00000bc0: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n-00000bd0: 3e6a 6574 6364 2d6c 6175 6e63 6865 723c  >jetcd-launcher<\n-00000be0: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-00000bf0: 2020 2020 3c73 636f 7065 3e74 6573 743c      <scope>test<\n-00000c00: 2f73 636f 7065 3e0d 0a20 2020 203c 2f64  /scope>..    </d\n-00000c10: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000c20: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-00000c30: 2020 2020 3c67 726f 7570 4964 3e69 6f2e      <groupId>io.\n-00000c40: 6e65 7474 793c 2f67 726f 7570 4964 3e0d  netty</groupId>.\n-00000c50: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-00000c60: 4964 3e6e 6574 7479 2d61 6c6c 3c2f 6172  Id>netty-all</ar\n-00000c70: 7469 6661 6374 4964 3e0d 0a20 2020 203c  tifactId>..    <\n-00000c80: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-00000c90: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-00000ca0: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n-00000cb0: 7267 2e61 7373 6572 746a 3c2f 6772 6f75  rg.assertj</grou\n-00000cc0: 7049 643e 0d0a 2020 2020 2020 3c61 7274  pId>..      <art\n-00000cd0: 6966 6163 7449 643e 6173 7365 7274 6a2d  ifactId>assertj-\n-00000ce0: 636f 7265 3c2f 6172 7469 6661 6374 4964  core</artifactId\n-00000cf0: 3e0d 0a20 2020 2020 203c 7665 7273 696f  >..      <versio\n-00000d00: 6e3e 247b 6173 7365 7274 6a2e 7665 7273  n>${assertj.vers\n-00000d10: 696f 6e7d 3c2f 7665 7273 696f 6e3e 0d0a  ion}</version>..\n-00000d20: 2020 2020 2020 3c73 636f 7065 3e74 6573        <scope>tes\n-00000d30: 743c 2f73 636f 7065 3e0d 0a20 2020 203c  t</scope>..    <\n-00000d40: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-00000d50: 3c2f 6465 7065 6e64 656e 6369 6573 3e0d  </dependencies>.\n-00000d60: 0a20 203c 6275 696c 643e 0d0a 2020 2020  .  <build>..    \n-00000d70: 3c70 6c75 6769 6e73 3e0d 0a20 2020 2020  <plugins>..     \n-00000d80: 203c 706c 7567 696e 3e0d 0a20 2020 2020   <plugin>..     \n-00000d90: 2020 203c 6172 7469 6661 6374 4964 3e6d     <artifactId>m\n-00000da0: 6176 656e 2d73 7572 6566 6972 652d 706c  aven-surefire-pl\n-00000db0: 7567 696e 3c2f 6172 7469 6661 6374 4964  ugin</artifactId\n-00000dc0: 3e0d 0a20 2020 2020 2020 203c 636f 6e66  >..        <conf\n-00000dd0: 6967 7572 6174 696f 6e3e 0d0a 2020 2020  iguration>..    \n-00000de0: 2020 2020 2020 3c73 6b69 7054 6573 7473        <skipTests\n-00000df0: 3e24 7b73 6b69 7049 6e74 6567 7261 7469  >${skipIntegrati\n-00000e00: 6f6e 5465 7374 737d 3c2f 736b 6970 5465  onTests}</skipTe\n-00000e10: 7374 733e 0d0a 2020 2020 2020 2020 3c2f  sts>..        </\n-00000e20: 636f 6e66 6967 7572 6174 696f 6e3e 0d0a  configuration>..\n-00000e30: 2020 2020 2020 3c2f 706c 7567 696e 3e0d        </plugin>.\n-00000e40: 0a20 2020 203c 2f70 6c75 6769 6e73 3e0d  .    </plugins>.\n-00000e50: 0a20 203c 2f62 7569 6c64 3e0d 0a3c 2f70  .  </build>..</p\n-00000e60: 726f 6a65 6374 3e0d 0a                   roject>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 7e20  F-8\"?>.<!--.  ~ \n+00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n+00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n+00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n+00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n+00000070: 7265 0a20 207e 2063 6f6e 7472 6962 7574  re.  ~ contribut\n+00000080: 6f72 206c 6963 656e 7365 2061 6772 6565  or license agree\n+00000090: 6d65 6e74 732e 2020 5365 6520 7468 6520  ments.  See the \n+000000a0: 4e4f 5449 4345 2066 696c 6520 6469 7374  NOTICE file dist\n+000000b0: 7269 6275 7465 6420 7769 7468 0a20 207e  ributed with.  ~\n+000000c0: 2074 6869 7320 776f 726b 2066 6f72 2061   this work for a\n+000000d0: 6464 6974 696f 6e61 6c20 696e 666f 726d  dditional inform\n+000000e0: 6174 696f 6e20 7265 6761 7264 696e 6720  ation regarding \n+000000f0: 636f 7079 7269 6768 7420 6f77 6e65 7273  copyright owners\n+00000100: 6869 702e 0a20 207e 2054 6865 2041 5346  hip..  ~ The ASF\n+00000110: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000120: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000130: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000140: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000150: 0a20 207e 2028 7468 6520 224c 6963 656e  .  ~ (the \"Licen\n+00000160: 7365 2229 3b20 796f 7520 6d61 7920 6e6f  se\"); you may no\n+00000170: 7420 7573 6520 7468 6973 2066 696c 6520  t use this file \n+00000180: 6578 6365 7074 2069 6e20 636f 6d70 6c69  except in compli\n+00000190: 616e 6365 2077 6974 680a 2020 7e20 7468  ance with.  ~ th\n+000001a0: 6520 4c69 6365 6e73 652e 2020 596f 7520  e License.  You \n+000001b0: 6d61 7920 6f62 7461 696e 2061 2063 6f70  may obtain a cop\n+000001c0: 7920 6f66 2074 6865 204c 6963 656e 7365  y of the License\n+000001d0: 2061 740a 2020 7e0a 2020 7e20 2020 2020   at.  ~.  ~     \n+000001e0: 6874 7470 3a2f 2f77 7777 2e61 7061 6368  http://www.apach\n+000001f0: 652e 6f72 672f 6c69 6365 6e73 6573 2f4c  e.org/licenses/L\n+00000200: 4943 454e 5345 2d32 2e30 0a20 207e 0a20  ICENSE-2.0.  ~. \n+00000210: 207e 2055 6e6c 6573 7320 7265 7175 6972   ~ Unless requir\n+00000220: 6564 2062 7920 6170 706c 6963 6162 6c65  ed by applicable\n+00000230: 206c 6177 206f 7220 6167 7265 6564 2074   law or agreed t\n+00000240: 6f20 696e 2077 7269 7469 6e67 2c20 736f  o in writing, so\n+00000250: 6674 7761 7265 0a20 207e 2064 6973 7472  ftware.  ~ distr\n+00000260: 6962 7574 6564 2075 6e64 6572 2074 6865  ibuted under the\n+00000270: 204c 6963 656e 7365 2069 7320 6469 7374   License is dist\n+00000280: 7269 6275 7465 6420 6f6e 2061 6e20 2241  ributed on an \"A\n+00000290: 5320 4953 2220 4241 5349 532c 0a20 207e  S IS\" BASIS,.  ~\n+000002a0: 2057 4954 484f 5554 2057 4152 5241 4e54   WITHOUT WARRANT\n+000002b0: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n+000002c0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n+000002d0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n+000002e0: 2069 6d70 6c69 6564 2e0a 2020 7e20 5365   implied..  ~ Se\n+000002f0: 6520 7468 6520 4c69 6365 6e73 6520 666f  e the License fo\n+00000300: 7220 7468 6520 7370 6563 6966 6963 206c  r the specific l\n+00000310: 616e 6775 6167 6520 676f 7665 726e 696e  anguage governin\n+00000320: 6720 7065 726d 6973 7369 6f6e 7320 616e  g permissions an\n+00000330: 640a 2020 7e20 6c69 6d69 7461 7469 6f6e  d.  ~ limitation\n+00000340: 7320 756e 6465 7220 7468 6520 4c69 6365  s under the Lice\n+00000350: 6e73 652e 0a20 202d 2d3e 0a3c 7072 6f6a  nse..  -->.<proj\n+00000360: 6563 7420 7873 693a 7363 6865 6d61 4c6f  ect xsi:schemaLo\n+00000370: 6361 7469 6f6e 3d22 6874 7470 3a2f 2f6d  cation=\"http://m\n+00000380: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+00000390: 504f 4d2f 342e 302e 3020 6874 7470 733a  POM/4.0.0 https:\n+000003a0: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n+000003b0: 7267 2f78 7364 2f6d 6176 656e 2d34 2e30  rg/xsd/maven-4.0\n+000003c0: 2e30 2e78 7364 2220 786d 6c6e 733d 2268  .0.xsd\" xmlns=\"h\n+000003d0: 7474 703a 2f2f 6d61 7665 6e2e 6170 6163  ttp://maven.apac\n+000003e0: 6865 2e6f 7267 2f50 4f4d 2f34 2e30 2e30  he.org/POM/4.0.0\n+000003f0: 220a 2020 2020 786d 6c6e 733a 7873 693d  \".    xmlns:xsi=\n+00000400: 2268 7474 703a 2f2f 7777 772e 7733 2e6f  \"http://www.w3.o\n+00000410: 7267 2f32 3030 312f 584d 4c53 6368 656d  rg/2001/XMLSchem\n+00000420: 612d 696e 7374 616e 6365 223e 0a20 203c  a-instance\">.  <\n+00000430: 6d6f 6465 6c56 6572 7369 6f6e 3e34 2e30  modelVersion>4.0\n+00000440: 2e30 3c2f 6d6f 6465 6c56 6572 7369 6f6e  .0</modelVersion\n+00000450: 3e0a 2020 3c70 6172 656e 743e 0a20 2020  >.  <parent>.   \n+00000460: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000470: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000480: 7049 643e 0a20 2020 203c 6172 7469 6661  pId>.    <artifa\n+00000490: 6374 4964 3e64 7562 626f 2d72 656d 6f74  ctId>dubbo-remot\n+000004a0: 696e 673c 2f61 7274 6966 6163 7449 643e  ing</artifactId>\n+000004b0: 0a20 2020 203c 7665 7273 696f 6e3e 322e  .    <version>2.\n+000004c0: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+000004d0: 203c 2f70 6172 656e 743e 0a20 203c 6772   </parent>.  <gr\n+000004e0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000004f0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+00000500: 0a20 203c 6172 7469 6661 6374 4964 3e64  .  <artifactId>d\n+00000510: 7562 626f 2d72 656d 6f74 696e 672d 6574  ubbo-remoting-et\n+00000520: 6364 333c 2f61 7274 6966 6163 7449 643e  cd3</artifactId>\n+00000530: 0a20 203c 7665 7273 696f 6e3e 322e 372e  .  <version>2.7.\n+00000540: 3130 3c2f 7665 7273 696f 6e3e 0a20 203c  10</version>.  <\n+00000550: 6e61 6d65 3e24 7b70 726f 6a65 6374 2e61  name>${project.a\n+00000560: 7274 6966 6163 7449 647d 3c2f 6e61 6d65  rtifactId}</name\n+00000570: 3e0a 2020 3c64 6573 6372 6970 7469 6f6e  >.  <description\n+00000580: 3e54 6865 2065 7463 6433 2072 656d 6f74  >The etcd3 remot\n+00000590: 696e 6720 6d6f 6475 6c65 206f 6620 4475  ing module of Du\n+000005a0: 6262 6f20 7072 6f6a 6563 743c 2f64 6573  bbo project</des\n+000005b0: 6372 6970 7469 6f6e 3e0a 2020 3c6c 6963  cription>.  <lic\n+000005c0: 656e 7365 733e 0a20 2020 203c 6c69 6365  enses>.    <lice\n+000005d0: 6e73 653e 0a20 2020 2020 203c 6e61 6d65  nse>.      <name\n+000005e0: 3e41 7061 6368 6520 4c69 6365 6e73 652c  >Apache License,\n+000005f0: 2056 6572 7369 6f6e 2032 2e30 3c2f 6e61   Version 2.0</na\n+00000600: 6d65 3e0a 2020 2020 2020 3c75 726c 3e68  me>.      <url>h\n+00000610: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+00000620: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+00000630: 4345 4e53 452d 322e 303c 2f75 726c 3e0a  CENSE-2.0</url>.\n+00000640: 2020 2020 2020 3c64 6973 7472 6962 7574        <distribut\n+00000650: 696f 6e3e 7265 706f 3c2f 6469 7374 7269  ion>repo</distri\n+00000660: 6275 7469 6f6e 3e0a 2020 2020 3c2f 6c69  bution>.    </li\n+00000670: 6365 6e73 653e 0a20 203c 2f6c 6963 656e  cense>.  </licen\n+00000680: 7365 733e 0a20 203c 7072 6f70 6572 7469  ses>.  <properti\n+00000690: 6573 3e0a 2020 2020 3c73 6b69 7049 6e74  es>.    <skipInt\n+000006a0: 6567 7261 7469 6f6e 5465 7374 733e 7472  egrationTests>tr\n+000006b0: 7565 3c2f 736b 6970 496e 7465 6772 6174  ue</skipIntegrat\n+000006c0: 696f 6e54 6573 7473 3e0a 2020 2020 3c73  ionTests>.    <s\n+000006d0: 6b69 705f 6d61 7665 6e5f 6465 706c 6f79  kip_maven_deploy\n+000006e0: 3e66 616c 7365 3c2f 736b 6970 5f6d 6176  >false</skip_mav\n+000006f0: 656e 5f64 6570 6c6f 793e 0a20 2020 203c  en_deploy>.    <\n+00000700: 6173 7365 7274 6a2e 7665 7273 696f 6e3e  assertj.version>\n+00000710: 332e 3133 2e32 3c2f 6173 7365 7274 6a2e  3.13.2</assertj.\n+00000720: 7665 7273 696f 6e3e 0a20 203c 2f70 726f  version>.  </pro\n+00000730: 7065 7274 6965 733e 0a20 203c 6465 7065  perties>.  <depe\n+00000740: 6e64 656e 6369 6573 3e0a 2020 2020 3c64  ndencies>.    <d\n+00000750: 6570 656e 6465 6e63 793e 0a20 2020 2020  ependency>.     \n+00000760: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000770: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000780: 7049 643e 0a20 2020 2020 203c 6172 7469  pId>.      <arti\n+00000790: 6661 6374 4964 3e64 7562 626f 2d72 656d  factId>dubbo-rem\n+000007a0: 6f74 696e 672d 6170 693c 2f61 7274 6966  oting-api</artif\n+000007b0: 6163 7449 643e 0a20 2020 2020 203c 7665  actId>.      <ve\n+000007c0: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n+000007d0: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n+000007e0: 2f76 6572 7369 6f6e 3e0a 2020 2020 3c2f  /version>.    </\n+000007f0: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000800: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+00000810: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000820: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000830: 6f75 7049 643e 0a20 2020 2020 203c 6172  oupId>.      <ar\n+00000840: 7469 6661 6374 4964 3e64 7562 626f 2d63  tifactId>dubbo-c\n+00000850: 6f6d 6d6f 6e3c 2f61 7274 6966 6163 7449  ommon</artifactI\n+00000860: 643e 0a20 2020 2020 203c 7665 7273 696f  d>.      <versio\n+00000870: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n+00000880: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n+00000890: 7369 6f6e 3e0a 2020 2020 3c2f 6465 7065  sion>.    </depe\n+000008a0: 6e64 656e 6379 3e0a 2020 2020 3c64 6570  ndency>.    <dep\n+000008b0: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+000008c0: 6772 6f75 7049 643e 696f 2e65 7463 643c  groupId>io.etcd<\n+000008d0: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+000008e0: 3c61 7274 6966 6163 7449 643e 6a65 7463  <artifactId>jetc\n+000008f0: 642d 636f 7265 3c2f 6172 7469 6661 6374  d-core</artifact\n+00000900: 4964 3e0a 2020 2020 3c2f 6465 7065 6e64  Id>.    </depend\n+00000910: 656e 6379 3e0a 2020 2020 3c64 6570 656e  ency>.    <depen\n+00000920: 6465 6e63 793e 0a20 2020 2020 203c 6772  dency>.      <gr\n+00000930: 6f75 7049 643e 696f 2e67 7270 633c 2f67  oupId>io.grpc</g\n+00000940: 726f 7570 4964 3e0a 2020 2020 2020 3c61  roupId>.      <a\n+00000950: 7274 6966 6163 7449 643e 6772 7063 2d63  rtifactId>grpc-c\n+00000960: 6f72 653c 2f61 7274 6966 6163 7449 643e  ore</artifactId>\n+00000970: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+00000980: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+00000990: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+000009a0: 4964 3e69 6f2e 6772 7063 3c2f 6772 6f75  Id>io.grpc</grou\n+000009b0: 7049 643e 0a20 2020 2020 203c 6172 7469  pId>.      <arti\n+000009c0: 6661 6374 4964 3e67 7270 632d 6e65 7474  factId>grpc-nett\n+000009d0: 793c 2f61 7274 6966 6163 7449 643e 0a20  y</artifactId>. \n+000009e0: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+000009f0: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+00000a00: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+00000a10: 3e69 6f2e 6772 7063 3c2f 6772 6f75 7049  >io.grpc</groupI\n+00000a20: 643e 0a20 2020 2020 203c 6172 7469 6661  d>.      <artifa\n+00000a30: 6374 4964 3e67 7270 632d 7072 6f74 6f62  ctId>grpc-protob\n+00000a40: 7566 3c2f 6172 7469 6661 6374 4964 3e0a  uf</artifactId>.\n+00000a50: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000a60: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000a70: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+00000a80: 643e 696f 2e67 7270 633c 2f67 726f 7570  d>io.grpc</group\n+00000a90: 4964 3e0a 2020 2020 2020 3c61 7274 6966  Id>.      <artif\n+00000aa0: 6163 7449 643e 6772 7063 2d73 7475 623c  actId>grpc-stub<\n+00000ab0: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+00000ac0: 203c 2f64 6570 656e 6465 6e63 793e 0a20   </dependency>. \n+00000ad0: 2020 203c 6465 7065 6e64 656e 6379 3e0a     <dependency>.\n+00000ae0: 2020 2020 2020 3c67 726f 7570 4964 3e69        <groupId>i\n+00000af0: 6f2e 6772 7063 3c2f 6772 6f75 7049 643e  o.grpc</groupId>\n+00000b00: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+00000b10: 4964 3e67 7270 632d 6772 7063 6c62 3c2f  Id>grpc-grpclb</\n+00000b20: 6172 7469 6661 6374 4964 3e0a 2020 2020  artifactId>.    \n+00000b30: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+00000b40: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+00000b50: 2020 2020 203c 6772 6f75 7049 643e 696f       <groupId>io\n+00000b60: 2e65 7463 643c 2f67 726f 7570 4964 3e0a  .etcd</groupId>.\n+00000b70: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n+00000b80: 643e 6a65 7463 642d 6c61 756e 6368 6572  d>jetcd-launcher\n+00000b90: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000ba0: 2020 2020 3c73 636f 7065 3e74 6573 743c      <scope>test<\n+00000bb0: 2f73 636f 7065 3e0a 2020 2020 3c2f 6465  /scope>.    </de\n+00000bc0: 7065 6e64 656e 6379 3e0a 2020 2020 3c64  pendency>.    <d\n+00000bd0: 6570 656e 6465 6e63 793e 0a20 2020 2020  ependency>.     \n+00000be0: 203c 6772 6f75 7049 643e 696f 2e6e 6574   <groupId>io.net\n+00000bf0: 7479 3c2f 6772 6f75 7049 643e 0a20 2020  ty</groupId>.   \n+00000c00: 2020 203c 6172 7469 6661 6374 4964 3e6e     <artifactId>n\n+00000c10: 6574 7479 2d61 6c6c 3c2f 6172 7469 6661  etty-all</artifa\n+00000c20: 6374 4964 3e0a 2020 2020 3c2f 6465 7065  ctId>.    </depe\n+00000c30: 6e64 656e 6379 3e0a 2020 2020 3c64 6570  ndency>.    <dep\n+00000c40: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+00000c50: 6772 6f75 7049 643e 6f72 672e 6173 7365  groupId>org.asse\n+00000c60: 7274 6a3c 2f67 726f 7570 4964 3e0a 2020  rtj</groupId>.  \n+00000c70: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+00000c80: 6173 7365 7274 6a2d 636f 7265 3c2f 6172  assertj-core</ar\n+00000c90: 7469 6661 6374 4964 3e0a 2020 2020 2020  tifactId>.      \n+00000ca0: 3c76 6572 7369 6f6e 3e24 7b61 7373 6572  <version>${asser\n+00000cb0: 746a 2e76 6572 7369 6f6e 7d3c 2f76 6572  tj.version}</ver\n+00000cc0: 7369 6f6e 3e0a 2020 2020 2020 3c73 636f  sion>.      <sco\n+00000cd0: 7065 3e74 6573 743c 2f73 636f 7065 3e0a  pe>test</scope>.\n+00000ce0: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000cf0: 3e0a 2020 3c2f 6465 7065 6e64 656e 6369  >.  </dependenci\n+00000d00: 6573 3e0a 2020 3c62 7569 6c64 3e0a 2020  es>.  <build>.  \n+00000d10: 2020 3c70 6c75 6769 6e73 3e0a 2020 2020    <plugins>.    \n+00000d20: 2020 3c70 6c75 6769 6e3e 0a20 2020 2020    <plugin>.     \n+00000d30: 2020 203c 6172 7469 6661 6374 4964 3e6d     <artifactId>m\n+00000d40: 6176 656e 2d73 7572 6566 6972 652d 706c  aven-surefire-pl\n+00000d50: 7567 696e 3c2f 6172 7469 6661 6374 4964  ugin</artifactId\n+00000d60: 3e0a 2020 2020 2020 2020 3c63 6f6e 6669  >.        <confi\n+00000d70: 6775 7261 7469 6f6e 3e0a 2020 2020 2020  guration>.      \n+00000d80: 2020 2020 3c73 6b69 7054 6573 7473 3e24      <skipTests>$\n+00000d90: 7b73 6b69 7049 6e74 6567 7261 7469 6f6e  {skipIntegration\n+00000da0: 5465 7374 737d 3c2f 736b 6970 5465 7374  Tests}</skipTest\n+00000db0: 733e 0a20 2020 2020 2020 203c 2f63 6f6e  s>.        </con\n+00000dc0: 6669 6775 7261 7469 6f6e 3e0a 2020 2020  figuration>.    \n+00000dd0: 2020 3c2f 706c 7567 696e 3e0a 2020 2020    </plugin>.    \n+00000de0: 3c2f 706c 7567 696e 733e 0a20 203c 2f62  </plugins>.  </b\n+00000df0: 7569 6c64 3e0a 3c2f 7072 6f6a 6563 743e  uild>.</project>\n+00000e00: 0a                                       .\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-remoting-mina/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-remoting-mina/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,153 +1,149 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 656d 6f74 696e 673c 2f61 7274  bo-remoting</art\n-000004a0: 6966 6163 7449 643e 0d0a 2020 2020 3c76  ifactId>..    <v\n-000004b0: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-000004c0: 6572 7369 6f6e 3e0d 0a20 203c 2f70 6172  ersion>..  </par\n-000004d0: 656e 743e 0d0a 2020 3c67 726f 7570 4964  ent>..  <groupId\n-000004e0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000004f0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 203c  o</groupId>..  <\n-00000500: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000510: 2d72 656d 6f74 696e 672d 6d69 6e61 3c2f  -remoting-mina</\n-00000520: 6172 7469 6661 6374 4964 3e0d 0a20 203c  artifactId>..  <\n-00000530: 7665 7273 696f 6e3e 322e 372e 3130 3c2f  version>2.7.10</\n-00000540: 7665 7273 696f 6e3e 0d0a 2020 3c6e 616d  version>..  <nam\n-00000550: 653e 247b 7072 6f6a 6563 742e 6172 7469  e>${project.arti\n-00000560: 6661 6374 4964 7d3c 2f6e 616d 653e 0d0a  factId}</name>..\n-00000570: 2020 3c64 6573 6372 6970 7469 6f6e 3e54    <description>T\n-00000580: 6865 206d 696e 6120 7265 6d6f 7469 6e67  he mina remoting\n-00000590: 206d 6f64 756c 6520 6f66 2064 7562 626f   module of dubbo\n-000005a0: 2070 726f 6a65 6374 3c2f 6465 7363 7269   project</descri\n-000005b0: 7074 696f 6e3e 0d0a 2020 3c6c 6963 656e  ption>..  <licen\n-000005c0: 7365 733e 0d0a 2020 2020 3c6c 6963 656e  ses>..    <licen\n-000005d0: 7365 3e0d 0a20 2020 2020 203c 6e61 6d65  se>..      <name\n-000005e0: 3e41 7061 6368 6520 4c69 6365 6e73 652c  >Apache License,\n-000005f0: 2056 6572 7369 6f6e 2032 2e30 3c2f 6e61   Version 2.0</na\n-00000600: 6d65 3e0d 0a20 2020 2020 203c 7572 6c3e  me>..      <url>\n-00000610: 6874 7470 3a2f 2f77 7777 2e61 7061 6368  http://www.apach\n-00000620: 652e 6f72 672f 6c69 6365 6e73 6573 2f4c  e.org/licenses/L\n-00000630: 4943 454e 5345 2d32 2e30 3c2f 7572 6c3e  ICENSE-2.0</url>\n-00000640: 0d0a 2020 2020 2020 3c64 6973 7472 6962  ..      <distrib\n-00000650: 7574 696f 6e3e 7265 706f 3c2f 6469 7374  ution>repo</dist\n-00000660: 7269 6275 7469 6f6e 3e0d 0a20 2020 203c  ribution>..    <\n-00000670: 2f6c 6963 656e 7365 3e0d 0a20 203c 2f6c  /license>..  </l\n-00000680: 6963 656e 7365 733e 0d0a 2020 3c70 726f  icenses>..  <pro\n-00000690: 7065 7274 6965 733e 0d0a 2020 2020 3c73  perties>..    <s\n-000006a0: 6b69 705f 6d61 7665 6e5f 6465 706c 6f79  kip_maven_deploy\n-000006b0: 3e66 616c 7365 3c2f 736b 6970 5f6d 6176  >false</skip_mav\n-000006c0: 656e 5f64 6570 6c6f 793e 0d0a 2020 3c2f  en_deploy>..  </\n-000006d0: 7072 6f70 6572 7469 6573 3e0d 0a20 203c  properties>..  <\n-000006e0: 6465 7065 6e64 656e 6369 6573 3e0d 0a20  dependencies>.. \n-000006f0: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-00000700: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000710: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n-00000720: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-00000730: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n-00000740: 6262 6f2d 7265 6d6f 7469 6e67 2d61 7069  bbo-remoting-api\n-00000750: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000760: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n-00000770: 7072 6f6a 6563 742e 7061 7265 6e74 2e76  project.parent.v\n-00000780: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n-00000790: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-000007a0: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-000007b0: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-000007c0: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n-000007d0: 652e 6d69 6e61 3c2f 6772 6f75 7049 643e  e.mina</groupId>\n-000007e0: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-000007f0: 7449 643e 6d69 6e61 2d63 6f72 653c 2f61  tId>mina-core</a\n-00000800: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-00000810: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-00000820: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-00000830: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000840: 6f72 672e 736c 6634 6a3c 2f67 726f 7570  org.slf4j</group\n-00000850: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-00000860: 6661 6374 4964 3e73 6c66 346a 2d61 7069  factId>slf4j-api\n-00000870: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000880: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n-00000890: 0d0a 2020 2020 3c64 6570 656e 6465 6e63  ..    <dependenc\n-000008a0: 793e 0d0a 2020 2020 2020 3c67 726f 7570  y>..      <group\n-000008b0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n-000008c0: 6262 6f3c 2f67 726f 7570 4964 3e0d 0a20  bbo</groupId>.. \n-000008d0: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n-000008e0: 3e64 7562 626f 2d73 6572 6961 6c69 7a61  >dubbo-serializa\n-000008f0: 7469 6f6e 2d68 6573 7369 616e 323c 2f61  tion-hessian2</a\n-00000900: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-00000910: 2020 3c76 6572 7369 6f6e 3e24 7b70 726f    <version>${pro\n-00000920: 6a65 6374 2e70 6172 656e 742e 7665 7273  ject.parent.vers\n-00000930: 696f 6e7d 3c2f 7665 7273 696f 6e3e 0d0a  ion}</version>..\n-00000940: 2020 2020 2020 3c73 636f 7065 3e74 6573        <scope>tes\n-00000950: 743c 2f73 636f 7065 3e0d 0a20 2020 203c  t</scope>..    <\n-00000960: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-00000970: 3c2f 6465 7065 6e64 656e 6369 6573 3e0d  </dependencies>.\n-00000980: 0a3c 2f70 726f 6a65 6374 3e0d 0a         .</project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 656d  factId>dubbo-rem\n+00000480: 6f74 696e 673c 2f61 7274 6966 6163 7449  oting</artifactI\n+00000490: 643e 0a20 2020 203c 7665 7273 696f 6e3e  d>.    <version>\n+000004a0: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+000004b0: 0a20 203c 2f70 6172 656e 743e 0a20 203c  .  </parent>.  <\n+000004c0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000004d0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000004e0: 643e 0a20 203c 6172 7469 6661 6374 4964  d>.  <artifactId\n+000004f0: 3e64 7562 626f 2d72 656d 6f74 696e 672d  >dubbo-remoting-\n+00000500: 6d69 6e61 3c2f 6172 7469 6661 6374 4964  mina</artifactId\n+00000510: 3e0a 2020 3c76 6572 7369 6f6e 3e32 2e37  >.  <version>2.7\n+00000520: 2e31 303c 2f76 6572 7369 6f6e 3e0a 2020  .10</version>.  \n+00000530: 3c6e 616d 653e 247b 7072 6f6a 6563 742e  <name>${project.\n+00000540: 6172 7469 6661 6374 4964 7d3c 2f6e 616d  artifactId}</nam\n+00000550: 653e 0a20 203c 6465 7363 7269 7074 696f  e>.  <descriptio\n+00000560: 6e3e 5468 6520 6d69 6e61 2072 656d 6f74  n>The mina remot\n+00000570: 696e 6720 6d6f 6475 6c65 206f 6620 6475  ing module of du\n+00000580: 6262 6f20 7072 6f6a 6563 743c 2f64 6573  bbo project</des\n+00000590: 6372 6970 7469 6f6e 3e0a 2020 3c6c 6963  cription>.  <lic\n+000005a0: 656e 7365 733e 0a20 2020 203c 6c69 6365  enses>.    <lice\n+000005b0: 6e73 653e 0a20 2020 2020 203c 6e61 6d65  nse>.      <name\n+000005c0: 3e41 7061 6368 6520 4c69 6365 6e73 652c  >Apache License,\n+000005d0: 2056 6572 7369 6f6e 2032 2e30 3c2f 6e61   Version 2.0</na\n+000005e0: 6d65 3e0a 2020 2020 2020 3c75 726c 3e68  me>.      <url>h\n+000005f0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+00000600: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+00000610: 4345 4e53 452d 322e 303c 2f75 726c 3e0a  CENSE-2.0</url>.\n+00000620: 2020 2020 2020 3c64 6973 7472 6962 7574        <distribut\n+00000630: 696f 6e3e 7265 706f 3c2f 6469 7374 7269  ion>repo</distri\n+00000640: 6275 7469 6f6e 3e0a 2020 2020 3c2f 6c69  bution>.    </li\n+00000650: 6365 6e73 653e 0a20 203c 2f6c 6963 656e  cense>.  </licen\n+00000660: 7365 733e 0a20 203c 7072 6f70 6572 7469  ses>.  <properti\n+00000670: 6573 3e0a 2020 2020 3c73 6b69 705f 6d61  es>.    <skip_ma\n+00000680: 7665 6e5f 6465 706c 6f79 3e66 616c 7365  ven_deploy>false\n+00000690: 3c2f 736b 6970 5f6d 6176 656e 5f64 6570  </skip_maven_dep\n+000006a0: 6c6f 793e 0a20 203c 2f70 726f 7065 7274  loy>.  </propert\n+000006b0: 6965 733e 0a20 203c 6465 7065 6e64 656e  ies>.  <dependen\n+000006c0: 6369 6573 3e0a 2020 2020 3c64 6570 656e  cies>.    <depen\n+000006d0: 6465 6e63 793e 0a20 2020 2020 203c 6772  dency>.      <gr\n+000006e0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000006f0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+00000700: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+00000710: 4964 3e64 7562 626f 2d72 656d 6f74 696e  Id>dubbo-remotin\n+00000720: 672d 6170 693c 2f61 7274 6966 6163 7449  g-api</artifactI\n+00000730: 643e 0a20 2020 2020 203c 7665 7273 696f  d>.      <versio\n+00000740: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n+00000750: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n+00000760: 7369 6f6e 3e0a 2020 2020 3c2f 6465 7065  sion>.    </depe\n+00000770: 6e64 656e 6379 3e0a 2020 2020 3c64 6570  ndency>.    <dep\n+00000780: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+00000790: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000007a0: 6865 2e6d 696e 613c 2f67 726f 7570 4964  he.mina</groupId\n+000007b0: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+000007c0: 7449 643e 6d69 6e61 2d63 6f72 653c 2f61  tId>mina-core</a\n+000007d0: 7274 6966 6163 7449 643e 0a20 2020 203c  rtifactId>.    <\n+000007e0: 2f64 6570 656e 6465 6e63 793e 0a20 2020  /dependency>.   \n+000007f0: 203c 6465 7065 6e64 656e 6379 3e0a 2020   <dependency>.  \n+00000800: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n+00000810: 2e73 6c66 346a 3c2f 6772 6f75 7049 643e  .slf4j</groupId>\n+00000820: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+00000830: 4964 3e73 6c66 346a 2d61 7069 3c2f 6172  Id>slf4j-api</ar\n+00000840: 7469 6661 6374 4964 3e0a 2020 2020 3c2f  tifactId>.    </\n+00000850: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000860: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+00000870: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000880: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000890: 6f75 7049 643e 0a20 2020 2020 203c 6172  oupId>.      <ar\n+000008a0: 7469 6661 6374 4964 3e64 7562 626f 2d73  tifactId>dubbo-s\n+000008b0: 6572 6961 6c69 7a61 7469 6f6e 2d68 6573  erialization-hes\n+000008c0: 7369 616e 323c 2f61 7274 6966 6163 7449  sian2</artifactI\n+000008d0: 643e 0a20 2020 2020 203c 7665 7273 696f  d>.      <versio\n+000008e0: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n+000008f0: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n+00000900: 7369 6f6e 3e0a 2020 2020 2020 3c73 636f  sion>.      <sco\n+00000910: 7065 3e74 6573 743c 2f73 636f 7065 3e0a  pe>test</scope>.\n+00000920: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000930: 3e0a 2020 3c2f 6465 7065 6e64 656e 6369  >.  </dependenci\n+00000940: 6573 3e0a 3c2f 7072 6f6a 6563 743e 0a    es>.</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-remoting-grizzly/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-remoting-grizzly/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,133 +1,130 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 656d 6f74 696e 673c 2f61 7274  bo-remoting</art\n-000004a0: 6966 6163 7449 643e 0d0a 2020 2020 3c76  ifactId>..    <v\n-000004b0: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-000004c0: 6572 7369 6f6e 3e0d 0a20 203c 2f70 6172  ersion>..  </par\n-000004d0: 656e 743e 0d0a 2020 3c67 726f 7570 4964  ent>..  <groupId\n-000004e0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000004f0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 203c  o</groupId>..  <\n-00000500: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000510: 2d72 656d 6f74 696e 672d 6772 697a 7a6c  -remoting-grizzl\n-00000520: 793c 2f61 7274 6966 6163 7449 643e 0d0a  y</artifactId>..\n-00000530: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n-00000540: 303c 2f76 6572 7369 6f6e 3e0d 0a20 203c  0</version>..  <\n-00000550: 6e61 6d65 3e24 7b70 726f 6a65 6374 2e61  name>${project.a\n-00000560: 7274 6966 6163 7449 647d 3c2f 6e61 6d65  rtifactId}</name\n-00000570: 3e0d 0a20 203c 6465 7363 7269 7074 696f  >..  <descriptio\n-00000580: 6e3e 5468 6520 6772 697a 7a6c 7920 7265  n>The grizzly re\n-00000590: 6d6f 7469 6e67 206d 6f64 756c 6520 6f66  moting module of\n-000005a0: 2064 7562 626f 2070 726f 6a65 6374 3c2f   dubbo project</\n-000005b0: 6465 7363 7269 7074 696f 6e3e 0d0a 2020  description>..  \n-000005c0: 3c6c 6963 656e 7365 733e 0d0a 2020 2020  <licenses>..    \n-000005d0: 3c6c 6963 656e 7365 3e0d 0a20 2020 2020  <license>..     \n-000005e0: 203c 6e61 6d65 3e41 7061 6368 6520 4c69   <name>Apache Li\n-000005f0: 6365 6e73 652c 2056 6572 7369 6f6e 2032  cense, Version 2\n-00000600: 2e30 3c2f 6e61 6d65 3e0d 0a20 2020 2020  .0</name>..     \n-00000610: 203c 7572 6c3e 6874 7470 3a2f 2f77 7777   <url>http://www\n-00000620: 2e61 7061 6368 652e 6f72 672f 6c69 6365  .apache.org/lice\n-00000630: 6e73 6573 2f4c 4943 454e 5345 2d32 2e30  nses/LICENSE-2.0\n-00000640: 3c2f 7572 6c3e 0d0a 2020 2020 2020 3c64  </url>..      <d\n-00000650: 6973 7472 6962 7574 696f 6e3e 7265 706f  istribution>repo\n-00000660: 3c2f 6469 7374 7269 6275 7469 6f6e 3e0d  </distribution>.\n-00000670: 0a20 2020 203c 2f6c 6963 656e 7365 3e0d  .    </license>.\n-00000680: 0a20 203c 2f6c 6963 656e 7365 733e 0d0a  .  </licenses>..\n-00000690: 2020 3c70 726f 7065 7274 6965 733e 0d0a    <properties>..\n-000006a0: 2020 2020 3c73 6b69 705f 6d61 7665 6e5f      <skip_maven_\n-000006b0: 6465 706c 6f79 3e66 616c 7365 3c2f 736b  deploy>false</sk\n-000006c0: 6970 5f6d 6176 656e 5f64 6570 6c6f 793e  ip_maven_deploy>\n-000006d0: 0d0a 2020 3c2f 7072 6f70 6572 7469 6573  ..  </properties\n-000006e0: 3e0d 0a20 203c 6465 7065 6e64 656e 6369  >..  <dependenci\n-000006f0: 6573 3e0d 0a20 2020 203c 6465 7065 6e64  es>..    <depend\n-00000700: 656e 6379 3e0d 0a20 2020 2020 203c 6772  ency>..      <gr\n-00000710: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n-00000720: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n-00000730: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-00000740: 7449 643e 6475 6262 6f2d 7265 6d6f 7469  tId>dubbo-remoti\n-00000750: 6e67 2d61 7069 3c2f 6172 7469 6661 6374  ng-api</artifact\n-00000760: 4964 3e0d 0a20 2020 2020 203c 7665 7273  Id>..      <vers\n-00000770: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n-00000780: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n-00000790: 6572 7369 6f6e 3e0d 0a20 2020 203c 2f64  ersion>..    </d\n-000007a0: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-000007b0: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-000007c0: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n-000007d0: 2e67 6c61 7373 6669 7368 2e67 7269 7a7a  .glassfish.grizz\n-000007e0: 6c79 3c2f 6772 6f75 7049 643e 0d0a 2020  ly</groupId>..  \n-000007f0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-00000800: 6772 697a 7a6c 792d 636f 7265 3c2f 6172  grizzly-core</ar\n-00000810: 7469 6661 6374 4964 3e0d 0a20 2020 203c  tifactId>..    <\n-00000820: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-00000830: 3c2f 6465 7065 6e64 656e 6369 6573 3e0d  </dependencies>.\n-00000840: 0a3c 2f70 726f 6a65 6374 3e0d 0a         .</project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 656d  factId>dubbo-rem\n+00000480: 6f74 696e 673c 2f61 7274 6966 6163 7449  oting</artifactI\n+00000490: 643e 0a20 2020 203c 7665 7273 696f 6e3e  d>.    <version>\n+000004a0: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+000004b0: 0a20 203c 2f70 6172 656e 743e 0a20 203c  .  </parent>.  <\n+000004c0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000004d0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000004e0: 643e 0a20 203c 6172 7469 6661 6374 4964  d>.  <artifactId\n+000004f0: 3e64 7562 626f 2d72 656d 6f74 696e 672d  >dubbo-remoting-\n+00000500: 6772 697a 7a6c 793c 2f61 7274 6966 6163  grizzly</artifac\n+00000510: 7449 643e 0a20 203c 7665 7273 696f 6e3e  tId>.  <version>\n+00000520: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+00000530: 0a20 203c 6e61 6d65 3e24 7b70 726f 6a65  .  <name>${proje\n+00000540: 6374 2e61 7274 6966 6163 7449 647d 3c2f  ct.artifactId}</\n+00000550: 6e61 6d65 3e0a 2020 3c64 6573 6372 6970  name>.  <descrip\n+00000560: 7469 6f6e 3e54 6865 2067 7269 7a7a 6c79  tion>The grizzly\n+00000570: 2072 656d 6f74 696e 6720 6d6f 6475 6c65   remoting module\n+00000580: 206f 6620 6475 6262 6f20 7072 6f6a 6563   of dubbo projec\n+00000590: 743c 2f64 6573 6372 6970 7469 6f6e 3e0a  t</description>.\n+000005a0: 2020 3c6c 6963 656e 7365 733e 0a20 2020    <licenses>.   \n+000005b0: 203c 6c69 6365 6e73 653e 0a20 2020 2020   <license>.     \n+000005c0: 203c 6e61 6d65 3e41 7061 6368 6520 4c69   <name>Apache Li\n+000005d0: 6365 6e73 652c 2056 6572 7369 6f6e 2032  cense, Version 2\n+000005e0: 2e30 3c2f 6e61 6d65 3e0a 2020 2020 2020  .0</name>.      \n+000005f0: 3c75 726c 3e68 7474 703a 2f2f 7777 772e  <url>http://www.\n+00000600: 6170 6163 6865 2e6f 7267 2f6c 6963 656e  apache.org/licen\n+00000610: 7365 732f 4c49 4345 4e53 452d 322e 303c  ses/LICENSE-2.0<\n+00000620: 2f75 726c 3e0a 2020 2020 2020 3c64 6973  /url>.      <dis\n+00000630: 7472 6962 7574 696f 6e3e 7265 706f 3c2f  tribution>repo</\n+00000640: 6469 7374 7269 6275 7469 6f6e 3e0a 2020  distribution>.  \n+00000650: 2020 3c2f 6c69 6365 6e73 653e 0a20 203c    </license>.  <\n+00000660: 2f6c 6963 656e 7365 733e 0a20 203c 7072  /licenses>.  <pr\n+00000670: 6f70 6572 7469 6573 3e0a 2020 2020 3c73  operties>.    <s\n+00000680: 6b69 705f 6d61 7665 6e5f 6465 706c 6f79  kip_maven_deploy\n+00000690: 3e66 616c 7365 3c2f 736b 6970 5f6d 6176  >false</skip_mav\n+000006a0: 656e 5f64 6570 6c6f 793e 0a20 203c 2f70  en_deploy>.  </p\n+000006b0: 726f 7065 7274 6965 733e 0a20 203c 6465  roperties>.  <de\n+000006c0: 7065 6e64 656e 6369 6573 3e0a 2020 2020  pendencies>.    \n+000006d0: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+000006e0: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+000006f0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000700: 6f75 7049 643e 0a20 2020 2020 203c 6172  oupId>.      <ar\n+00000710: 7469 6661 6374 4964 3e64 7562 626f 2d72  tifactId>dubbo-r\n+00000720: 656d 6f74 696e 672d 6170 693c 2f61 7274  emoting-api</art\n+00000730: 6966 6163 7449 643e 0a20 2020 2020 203c  ifactId>.      <\n+00000740: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n+00000750: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n+00000760: 7d3c 2f76 6572 7369 6f6e 3e0a 2020 2020  }</version>.    \n+00000770: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+00000780: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+00000790: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n+000007a0: 672e 676c 6173 7366 6973 682e 6772 697a  g.glassfish.griz\n+000007b0: 7a6c 793c 2f67 726f 7570 4964 3e0a 2020  zly</groupId>.  \n+000007c0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+000007d0: 6772 697a 7a6c 792d 636f 7265 3c2f 6172  grizzly-core</ar\n+000007e0: 7469 6661 6374 4964 3e0a 2020 2020 3c2f  tifactId>.    </\n+000007f0: 6465 7065 6e64 656e 6379 3e0a 2020 3c2f  dependency>.  </\n+00000800: 6465 7065 6e64 656e 6369 6573 3e0a 3c2f  dependencies>.</\n+00000810: 7072 6f6a 6563 743e 0a                   project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-remoting-p2p/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-remoting-p2p/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,138 +1,135 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 656d 6f74 696e 673c 2f61 7274  bo-remoting</art\n-000004a0: 6966 6163 7449 643e 0d0a 2020 2020 3c76  ifactId>..    <v\n-000004b0: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-000004c0: 6572 7369 6f6e 3e0d 0a20 203c 2f70 6172  ersion>..  </par\n-000004d0: 656e 743e 0d0a 2020 3c67 726f 7570 4964  ent>..  <groupId\n-000004e0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000004f0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 203c  o</groupId>..  <\n-00000500: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000510: 2d72 656d 6f74 696e 672d 7032 703c 2f61  -remoting-p2p</a\n-00000520: 7274 6966 6163 7449 643e 0d0a 2020 3c76  rtifactId>..  <v\n-00000530: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-00000540: 6572 7369 6f6e 3e0d 0a20 203c 6e61 6d65  ersion>..  <name\n-00000550: 3e24 7b70 726f 6a65 6374 2e61 7274 6966  >${project.artif\n-00000560: 6163 7449 647d 3c2f 6e61 6d65 3e0d 0a20  actId}</name>.. \n-00000570: 203c 6465 7363 7269 7074 696f 6e3e 5468   <description>Th\n-00000580: 6520 7032 7020 7265 6d6f 7469 6e67 206d  e p2p remoting m\n-00000590: 6f64 756c 6520 6f66 2064 7562 626f 2070  odule of dubbo p\n-000005a0: 726f 6a65 6374 3c2f 6465 7363 7269 7074  roject</descript\n-000005b0: 696f 6e3e 0d0a 2020 3c6c 6963 656e 7365  ion>..  <license\n-000005c0: 733e 0d0a 2020 2020 3c6c 6963 656e 7365  s>..    <license\n-000005d0: 3e0d 0a20 2020 2020 203c 6e61 6d65 3e41  >..      <name>A\n-000005e0: 7061 6368 6520 4c69 6365 6e73 652c 2056  pache License, V\n-000005f0: 6572 7369 6f6e 2032 2e30 3c2f 6e61 6d65  ersion 2.0</name\n-00000600: 3e0d 0a20 2020 2020 203c 7572 6c3e 6874  >..      <url>ht\n-00000610: 7470 3a2f 2f77 7777 2e61 7061 6368 652e  tp://www.apache.\n-00000620: 6f72 672f 6c69 6365 6e73 6573 2f4c 4943  org/licenses/LIC\n-00000630: 454e 5345 2d32 2e30 3c2f 7572 6c3e 0d0a  ENSE-2.0</url>..\n-00000640: 2020 2020 2020 3c64 6973 7472 6962 7574        <distribut\n-00000650: 696f 6e3e 7265 706f 3c2f 6469 7374 7269  ion>repo</distri\n-00000660: 6275 7469 6f6e 3e0d 0a20 2020 203c 2f6c  bution>..    </l\n-00000670: 6963 656e 7365 3e0d 0a20 203c 2f6c 6963  icense>..  </lic\n-00000680: 656e 7365 733e 0d0a 2020 3c70 726f 7065  enses>..  <prope\n-00000690: 7274 6965 733e 0d0a 2020 2020 3c73 6b69  rties>..    <ski\n-000006a0: 705f 6d61 7665 6e5f 6465 706c 6f79 3e66  p_maven_deploy>f\n-000006b0: 616c 7365 3c2f 736b 6970 5f6d 6176 656e  alse</skip_maven\n-000006c0: 5f64 6570 6c6f 793e 0d0a 2020 3c2f 7072  _deploy>..  </pr\n-000006d0: 6f70 6572 7469 6573 3e0d 0a20 203c 6465  operties>..  <de\n-000006e0: 7065 6e64 656e 6369 6573 3e0d 0a20 2020  pendencies>..   \n-000006f0: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-00000700: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n-00000710: 672e 6170 6163 6865 2e64 7562 626f 3c2f  g.apache.dubbo</\n-00000720: 6772 6f75 7049 643e 0d0a 2020 2020 2020  groupId>..      \n-00000730: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n-00000740: 6f2d 7265 6d6f 7469 6e67 2d61 7069 3c2f  o-remoting-api</\n-00000750: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-00000760: 2020 203c 7665 7273 696f 6e3e 247b 7072     <version>${pr\n-00000770: 6f6a 6563 742e 7061 7265 6e74 2e76 6572  oject.parent.ver\n-00000780: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0d  sion}</version>.\n-00000790: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-000007a0: 793e 0d0a 2020 2020 3c64 6570 656e 6465  y>..    <depende\n-000007b0: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-000007c0: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n-000007d0: 6475 6262 6f3c 2f67 726f 7570 4964 3e0d  dubbo</groupId>.\n-000007e0: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-000007f0: 4964 3e64 7562 626f 2d72 656d 6f74 696e  Id>dubbo-remotin\n-00000800: 672d 6e65 7474 7934 3c2f 6172 7469 6661  g-netty4</artifa\n-00000810: 6374 4964 3e0d 0a20 2020 2020 203c 7665  ctId>..      <ve\n-00000820: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n-00000830: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n-00000840: 2f76 6572 7369 6f6e 3e0d 0a20 2020 2020  /version>..     \n-00000850: 203c 7363 6f70 653e 7465 7374 3c2f 7363   <scope>test</sc\n-00000860: 6f70 653e 0d0a 2020 2020 3c2f 6465 7065  ope>..    </depe\n-00000870: 6e64 656e 6379 3e0d 0a20 203c 2f64 6570  ndency>..  </dep\n-00000880: 656e 6465 6e63 6965 733e 0d0a 3c2f 7072  endencies>..</pr\n-00000890: 6f6a 6563 743e 0d0a                      oject>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 656d  factId>dubbo-rem\n+00000480: 6f74 696e 673c 2f61 7274 6966 6163 7449  oting</artifactI\n+00000490: 643e 0a20 2020 203c 7665 7273 696f 6e3e  d>.    <version>\n+000004a0: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+000004b0: 0a20 203c 2f70 6172 656e 743e 0a20 203c  .  </parent>.  <\n+000004c0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000004d0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000004e0: 643e 0a20 203c 6172 7469 6661 6374 4964  d>.  <artifactId\n+000004f0: 3e64 7562 626f 2d72 656d 6f74 696e 672d  >dubbo-remoting-\n+00000500: 7032 703c 2f61 7274 6966 6163 7449 643e  p2p</artifactId>\n+00000510: 0a20 203c 7665 7273 696f 6e3e 322e 372e  .  <version>2.7.\n+00000520: 3130 3c2f 7665 7273 696f 6e3e 0a20 203c  10</version>.  <\n+00000530: 6e61 6d65 3e24 7b70 726f 6a65 6374 2e61  name>${project.a\n+00000540: 7274 6966 6163 7449 647d 3c2f 6e61 6d65  rtifactId}</name\n+00000550: 3e0a 2020 3c64 6573 6372 6970 7469 6f6e  >.  <description\n+00000560: 3e54 6865 2070 3270 2072 656d 6f74 696e  >The p2p remotin\n+00000570: 6720 6d6f 6475 6c65 206f 6620 6475 6262  g module of dubb\n+00000580: 6f20 7072 6f6a 6563 743c 2f64 6573 6372  o project</descr\n+00000590: 6970 7469 6f6e 3e0a 2020 3c6c 6963 656e  iption>.  <licen\n+000005a0: 7365 733e 0a20 2020 203c 6c69 6365 6e73  ses>.    <licens\n+000005b0: 653e 0a20 2020 2020 203c 6e61 6d65 3e41  e>.      <name>A\n+000005c0: 7061 6368 6520 4c69 6365 6e73 652c 2056  pache License, V\n+000005d0: 6572 7369 6f6e 2032 2e30 3c2f 6e61 6d65  ersion 2.0</name\n+000005e0: 3e0a 2020 2020 2020 3c75 726c 3e68 7474  >.      <url>htt\n+000005f0: 703a 2f2f 7777 772e 6170 6163 6865 2e6f  p://www.apache.o\n+00000600: 7267 2f6c 6963 656e 7365 732f 4c49 4345  rg/licenses/LICE\n+00000610: 4e53 452d 322e 303c 2f75 726c 3e0a 2020  NSE-2.0</url>.  \n+00000620: 2020 2020 3c64 6973 7472 6962 7574 696f      <distributio\n+00000630: 6e3e 7265 706f 3c2f 6469 7374 7269 6275  n>repo</distribu\n+00000640: 7469 6f6e 3e0a 2020 2020 3c2f 6c69 6365  tion>.    </lice\n+00000650: 6e73 653e 0a20 203c 2f6c 6963 656e 7365  nse>.  </license\n+00000660: 733e 0a20 203c 7072 6f70 6572 7469 6573  s>.  <properties\n+00000670: 3e0a 2020 2020 3c73 6b69 705f 6d61 7665  >.    <skip_mave\n+00000680: 6e5f 6465 706c 6f79 3e66 616c 7365 3c2f  n_deploy>false</\n+00000690: 736b 6970 5f6d 6176 656e 5f64 6570 6c6f  skip_maven_deplo\n+000006a0: 793e 0a20 203c 2f70 726f 7065 7274 6965  y>.  </propertie\n+000006b0: 733e 0a20 203c 6465 7065 6e64 656e 6369  s>.  <dependenci\n+000006c0: 6573 3e0a 2020 2020 3c64 6570 656e 6465  es>.    <depende\n+000006d0: 6e63 793e 0a20 2020 2020 203c 6772 6f75  ncy>.      <grou\n+000006e0: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n+000006f0: 7562 626f 3c2f 6772 6f75 7049 643e 0a20  ubbo</groupId>. \n+00000700: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n+00000710: 3e64 7562 626f 2d72 656d 6f74 696e 672d  >dubbo-remoting-\n+00000720: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n+00000730: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n+00000740: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n+00000750: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n+00000760: 6f6e 3e0a 2020 2020 3c2f 6465 7065 6e64  on>.    </depend\n+00000770: 656e 6379 3e0a 2020 2020 3c64 6570 656e  ency>.    <depen\n+00000780: 6465 6e63 793e 0a20 2020 2020 203c 6772  dency>.      <gr\n+00000790: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000007a0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+000007b0: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+000007c0: 4964 3e64 7562 626f 2d72 656d 6f74 696e  Id>dubbo-remotin\n+000007d0: 672d 6e65 7474 7934 3c2f 6172 7469 6661  g-netty4</artifa\n+000007e0: 6374 4964 3e0a 2020 2020 2020 3c76 6572  ctId>.      <ver\n+000007f0: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n+00000800: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n+00000810: 7665 7273 696f 6e3e 0a20 2020 2020 203c  version>.      <\n+00000820: 7363 6f70 653e 7465 7374 3c2f 7363 6f70  scope>test</scop\n+00000830: 653e 0a20 2020 203c 2f64 6570 656e 6465  e>.    </depende\n+00000840: 6e63 793e 0a20 203c 2f64 6570 656e 6465  ncy>.  </depende\n+00000850: 6e63 6965 733e 0a3c 2f70 726f 6a65 6374  ncies>.</project\n+00000860: 3e0a                                     >.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-remoting-http/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-remoting-http/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,172 +1,168 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 656d 6f74 696e 673c 2f61 7274  bo-remoting</art\n-000004a0: 6966 6163 7449 643e 0d0a 2020 2020 3c76  ifactId>..    <v\n-000004b0: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-000004c0: 6572 7369 6f6e 3e0d 0a20 203c 2f70 6172  ersion>..  </par\n-000004d0: 656e 743e 0d0a 2020 3c67 726f 7570 4964  ent>..  <groupId\n-000004e0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000004f0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 203c  o</groupId>..  <\n-00000500: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000510: 2d72 656d 6f74 696e 672d 6874 7470 3c2f  -remoting-http</\n-00000520: 6172 7469 6661 6374 4964 3e0d 0a20 203c  artifactId>..  <\n-00000530: 7665 7273 696f 6e3e 322e 372e 3130 3c2f  version>2.7.10</\n-00000540: 7665 7273 696f 6e3e 0d0a 2020 3c6e 616d  version>..  <nam\n-00000550: 653e 247b 7072 6f6a 6563 742e 6172 7469  e>${project.arti\n-00000560: 6661 6374 4964 7d3c 2f6e 616d 653e 0d0a  factId}</name>..\n-00000570: 2020 3c64 6573 6372 6970 7469 6f6e 3e54    <description>T\n-00000580: 6865 2068 7474 7020 7265 6d6f 7469 6e67  he http remoting\n-00000590: 206d 6f64 756c 6520 6f66 2064 7562 626f   module of dubbo\n-000005a0: 2070 726f 6a65 6374 3c2f 6465 7363 7269   project</descri\n-000005b0: 7074 696f 6e3e 0d0a 2020 3c6c 6963 656e  ption>..  <licen\n-000005c0: 7365 733e 0d0a 2020 2020 3c6c 6963 656e  ses>..    <licen\n-000005d0: 7365 3e0d 0a20 2020 2020 203c 6e61 6d65  se>..      <name\n-000005e0: 3e41 7061 6368 6520 4c69 6365 6e73 652c  >Apache License,\n-000005f0: 2056 6572 7369 6f6e 2032 2e30 3c2f 6e61   Version 2.0</na\n-00000600: 6d65 3e0d 0a20 2020 2020 203c 7572 6c3e  me>..      <url>\n-00000610: 6874 7470 3a2f 2f77 7777 2e61 7061 6368  http://www.apach\n-00000620: 652e 6f72 672f 6c69 6365 6e73 6573 2f4c  e.org/licenses/L\n-00000630: 4943 454e 5345 2d32 2e30 3c2f 7572 6c3e  ICENSE-2.0</url>\n-00000640: 0d0a 2020 2020 2020 3c64 6973 7472 6962  ..      <distrib\n-00000650: 7574 696f 6e3e 7265 706f 3c2f 6469 7374  ution>repo</dist\n-00000660: 7269 6275 7469 6f6e 3e0d 0a20 2020 203c  ribution>..    <\n-00000670: 2f6c 6963 656e 7365 3e0d 0a20 203c 2f6c  /license>..  </l\n-00000680: 6963 656e 7365 733e 0d0a 2020 3c70 726f  icenses>..  <pro\n-00000690: 7065 7274 6965 733e 0d0a 2020 2020 3c73  perties>..    <s\n-000006a0: 6b69 705f 6d61 7665 6e5f 6465 706c 6f79  kip_maven_deploy\n-000006b0: 3e66 616c 7365 3c2f 736b 6970 5f6d 6176  >false</skip_mav\n-000006c0: 656e 5f64 6570 6c6f 793e 0d0a 2020 3c2f  en_deploy>..  </\n-000006d0: 7072 6f70 6572 7469 6573 3e0d 0a20 203c  properties>..  <\n-000006e0: 6465 7065 6e64 656e 6369 6573 3e0d 0a20  dependencies>.. \n-000006f0: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-00000700: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000710: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n-00000720: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-00000730: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n-00000740: 6262 6f2d 636f 6d6d 6f6e 3c2f 6172 7469  bbo-common</arti\n-00000750: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-00000760: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n-00000770: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n-00000780: 7d3c 2f76 6572 7369 6f6e 3e0d 0a20 2020  }</version>..   \n-00000790: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-000007a0: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n-000007b0: 0d0a 2020 2020 2020 3c67 726f 7570 4964  ..      <groupId\n-000007c0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000007d0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-000007e0: 2020 203c 6172 7469 6661 6374 4964 3e64     <artifactId>d\n-000007f0: 7562 626f 2d72 656d 6f74 696e 672d 6170  ubbo-remoting-ap\n-00000800: 693c 2f61 7274 6966 6163 7449 643e 0d0a  i</artifactId>..\n-00000810: 2020 2020 2020 3c76 6572 7369 6f6e 3e24        <version>$\n-00000820: 7b70 726f 6a65 6374 2e70 6172 656e 742e  {project.parent.\n-00000830: 7665 7273 696f 6e7d 3c2f 7665 7273 696f  version}</versio\n-00000840: 6e3e 0d0a 2020 2020 3c2f 6465 7065 6e64  n>..    </depend\n-00000850: 656e 6379 3e0d 0a20 2020 203c 6465 7065  ency>..    <depe\n-00000860: 6e64 656e 6379 3e0d 0a20 2020 2020 203c  ndency>..      <\n-00000870: 6772 6f75 7049 643e 6f72 672e 6563 6c69  groupId>org.ecli\n-00000880: 7073 652e 6a65 7474 793c 2f67 726f 7570  pse.jetty</group\n-00000890: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-000008a0: 6661 6374 4964 3e6a 6574 7479 2d73 6572  factId>jetty-ser\n-000008b0: 7665 723c 2f61 7274 6966 6163 7449 643e  ver</artifactId>\n-000008c0: 0d0a 2020 2020 3c2f 6465 7065 6e64 656e  ..    </dependen\n-000008d0: 6379 3e0d 0a20 2020 203c 6465 7065 6e64  cy>..    <depend\n-000008e0: 656e 6379 3e0d 0a20 2020 2020 203c 6772  ency>..      <gr\n-000008f0: 6f75 7049 643e 6f72 672e 6563 6c69 7073  oupId>org.eclips\n-00000900: 652e 6a65 7474 793c 2f67 726f 7570 4964  e.jetty</groupId\n-00000910: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-00000920: 6374 4964 3e6a 6574 7479 2d73 6572 766c  ctId>jetty-servl\n-00000930: 6574 3c2f 6172 7469 6661 6374 4964 3e0d  et</artifactId>.\n-00000940: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-00000950: 793e 0d0a 2020 2020 3c64 6570 656e 6465  y>..    <depende\n-00000960: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-00000970: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n-00000980: 746f 6d63 6174 2e65 6d62 6564 3c2f 6772  tomcat.embed</gr\n-00000990: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-000009a0: 7274 6966 6163 7449 643e 746f 6d63 6174  rtifactId>tomcat\n-000009b0: 2d65 6d62 6564 2d63 6f72 653c 2f61 7274  -embed-core</art\n-000009c0: 6966 6163 7449 643e 0d0a 2020 2020 3c2f  ifactId>..    </\n-000009d0: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-000009e0: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-000009f0: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n-00000a00: 672e 6170 6163 6865 2e68 7474 7063 6f6d  g.apache.httpcom\n-00000a10: 706f 6e65 6e74 733c 2f67 726f 7570 4964  ponents</groupId\n-00000a20: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-00000a30: 6374 4964 3e66 6c75 656e 742d 6863 3c2f  ctId>fluent-hc</\n-00000a40: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-00000a50: 2020 203c 7665 7273 696f 6e3e 342e 352e     <version>4.5.\n-00000a60: 353c 2f76 6572 7369 6f6e 3e0d 0a20 2020  5</version>..   \n-00000a70: 2020 203c 7363 6f70 653e 7465 7374 3c2f     <scope>test</\n-00000a80: 7363 6f70 653e 0d0a 2020 2020 3c2f 6465  scope>..    </de\n-00000a90: 7065 6e64 656e 6379 3e0d 0a20 203c 2f64  pendency>..  </d\n-00000aa0: 6570 656e 6465 6e63 6965 733e 0d0a 3c2f  ependencies>..</\n-00000ab0: 7072 6f6a 6563 743e 0d0a                 project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 656d  factId>dubbo-rem\n+00000480: 6f74 696e 673c 2f61 7274 6966 6163 7449  oting</artifactI\n+00000490: 643e 0a20 2020 203c 7665 7273 696f 6e3e  d>.    <version>\n+000004a0: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+000004b0: 0a20 203c 2f70 6172 656e 743e 0a20 203c  .  </parent>.  <\n+000004c0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000004d0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000004e0: 643e 0a20 203c 6172 7469 6661 6374 4964  d>.  <artifactId\n+000004f0: 3e64 7562 626f 2d72 656d 6f74 696e 672d  >dubbo-remoting-\n+00000500: 6874 7470 3c2f 6172 7469 6661 6374 4964  http</artifactId\n+00000510: 3e0a 2020 3c76 6572 7369 6f6e 3e32 2e37  >.  <version>2.7\n+00000520: 2e31 303c 2f76 6572 7369 6f6e 3e0a 2020  .10</version>.  \n+00000530: 3c6e 616d 653e 247b 7072 6f6a 6563 742e  <name>${project.\n+00000540: 6172 7469 6661 6374 4964 7d3c 2f6e 616d  artifactId}</nam\n+00000550: 653e 0a20 203c 6465 7363 7269 7074 696f  e>.  <descriptio\n+00000560: 6e3e 5468 6520 6874 7470 2072 656d 6f74  n>The http remot\n+00000570: 696e 6720 6d6f 6475 6c65 206f 6620 6475  ing module of du\n+00000580: 6262 6f20 7072 6f6a 6563 743c 2f64 6573  bbo project</des\n+00000590: 6372 6970 7469 6f6e 3e0a 2020 3c6c 6963  cription>.  <lic\n+000005a0: 656e 7365 733e 0a20 2020 203c 6c69 6365  enses>.    <lice\n+000005b0: 6e73 653e 0a20 2020 2020 203c 6e61 6d65  nse>.      <name\n+000005c0: 3e41 7061 6368 6520 4c69 6365 6e73 652c  >Apache License,\n+000005d0: 2056 6572 7369 6f6e 2032 2e30 3c2f 6e61   Version 2.0</na\n+000005e0: 6d65 3e0a 2020 2020 2020 3c75 726c 3e68  me>.      <url>h\n+000005f0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+00000600: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+00000610: 4345 4e53 452d 322e 303c 2f75 726c 3e0a  CENSE-2.0</url>.\n+00000620: 2020 2020 2020 3c64 6973 7472 6962 7574        <distribut\n+00000630: 696f 6e3e 7265 706f 3c2f 6469 7374 7269  ion>repo</distri\n+00000640: 6275 7469 6f6e 3e0a 2020 2020 3c2f 6c69  bution>.    </li\n+00000650: 6365 6e73 653e 0a20 203c 2f6c 6963 656e  cense>.  </licen\n+00000660: 7365 733e 0a20 203c 7072 6f70 6572 7469  ses>.  <properti\n+00000670: 6573 3e0a 2020 2020 3c73 6b69 705f 6d61  es>.    <skip_ma\n+00000680: 7665 6e5f 6465 706c 6f79 3e66 616c 7365  ven_deploy>false\n+00000690: 3c2f 736b 6970 5f6d 6176 656e 5f64 6570  </skip_maven_dep\n+000006a0: 6c6f 793e 0a20 203c 2f70 726f 7065 7274  loy>.  </propert\n+000006b0: 6965 733e 0a20 203c 6465 7065 6e64 656e  ies>.  <dependen\n+000006c0: 6369 6573 3e0a 2020 2020 3c64 6570 656e  cies>.    <depen\n+000006d0: 6465 6e63 793e 0a20 2020 2020 203c 6772  dency>.      <gr\n+000006e0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000006f0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+00000700: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+00000710: 4964 3e64 7562 626f 2d63 6f6d 6d6f 6e3c  Id>dubbo-common<\n+00000720: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+00000730: 2020 203c 7665 7273 696f 6e3e 247b 7072     <version>${pr\n+00000740: 6f6a 6563 742e 7061 7265 6e74 2e76 6572  oject.parent.ver\n+00000750: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a  sion}</version>.\n+00000760: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000770: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000780: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+00000790: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n+000007a0: 626f 3c2f 6772 6f75 7049 643e 0a20 2020  bo</groupId>.   \n+000007b0: 2020 203c 6172 7469 6661 6374 4964 3e64     <artifactId>d\n+000007c0: 7562 626f 2d72 656d 6f74 696e 672d 6170  ubbo-remoting-ap\n+000007d0: 693c 2f61 7274 6966 6163 7449 643e 0a20  i</artifactId>. \n+000007e0: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n+000007f0: 7072 6f6a 6563 742e 7061 7265 6e74 2e76  project.parent.v\n+00000800: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n+00000810: 3e0a 2020 2020 3c2f 6465 7065 6e64 656e  >.    </dependen\n+00000820: 6379 3e0a 2020 2020 3c64 6570 656e 6465  cy>.    <depende\n+00000830: 6e63 793e 0a20 2020 2020 203c 6772 6f75  ncy>.      <grou\n+00000840: 7049 643e 6f72 672e 6563 6c69 7073 652e  pId>org.eclipse.\n+00000850: 6a65 7474 793c 2f67 726f 7570 4964 3e0a  jetty</groupId>.\n+00000860: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n+00000870: 643e 6a65 7474 792d 7365 7276 6572 3c2f  d>jetty-server</\n+00000880: 6172 7469 6661 6374 4964 3e0a 2020 2020  artifactId>.    \n+00000890: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+000008a0: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+000008b0: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n+000008c0: 672e 6563 6c69 7073 652e 6a65 7474 793c  g.eclipse.jetty<\n+000008d0: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+000008e0: 3c61 7274 6966 6163 7449 643e 6a65 7474  <artifactId>jett\n+000008f0: 792d 7365 7276 6c65 743c 2f61 7274 6966  y-servlet</artif\n+00000900: 6163 7449 643e 0a20 2020 203c 2f64 6570  actId>.    </dep\n+00000910: 656e 6465 6e63 793e 0a20 2020 203c 6465  endency>.    <de\n+00000920: 7065 6e64 656e 6379 3e0a 2020 2020 2020  pendency>.      \n+00000930: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n+00000940: 6368 652e 746f 6d63 6174 2e65 6d62 6564  che.tomcat.embed\n+00000950: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+00000960: 203c 6172 7469 6661 6374 4964 3e74 6f6d   <artifactId>tom\n+00000970: 6361 742d 656d 6265 642d 636f 7265 3c2f  cat-embed-core</\n+00000980: 6172 7469 6661 6374 4964 3e0a 2020 2020  artifactId>.    \n+00000990: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+000009a0: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+000009b0: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n+000009c0: 672e 6170 6163 6865 2e68 7474 7063 6f6d  g.apache.httpcom\n+000009d0: 706f 6e65 6e74 733c 2f67 726f 7570 4964  ponents</groupId\n+000009e0: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+000009f0: 7449 643e 666c 7565 6e74 2d68 633c 2f61  tId>fluent-hc</a\n+00000a00: 7274 6966 6163 7449 643e 0a20 2020 2020  rtifactId>.     \n+00000a10: 203c 7665 7273 696f 6e3e 342e 352e 353c   <version>4.5.5<\n+00000a20: 2f76 6572 7369 6f6e 3e0a 2020 2020 2020  /version>.      \n+00000a30: 3c73 636f 7065 3e74 6573 743c 2f73 636f  <scope>test</sco\n+00000a40: 7065 3e0a 2020 2020 3c2f 6465 7065 6e64  pe>.    </depend\n+00000a50: 656e 6379 3e0a 2020 3c2f 6465 7065 6e64  ency>.  </depend\n+00000a60: 656e 6369 6573 3e0a 3c2f 7072 6f6a 6563  encies>.</projec\n+00000a70: 743e 0a                                  t>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-rpc-api/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-rpc-api/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,155 +1,152 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 7063 3c2f 6172 7469 6661 6374  bo-rpc</artifact\n-000004a0: 4964 3e0d 0a20 2020 203c 7665 7273 696f  Id>..    <versio\n-000004b0: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n-000004c0: 6e3e 0d0a 2020 3c2f 7061 7265 6e74 3e0d  n>..  </parent>.\n-000004d0: 0a20 203c 6772 6f75 7049 643e 6f72 672e  .  <groupId>org.\n-000004e0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-000004f0: 6f75 7049 643e 0d0a 2020 3c61 7274 6966  oupId>..  <artif\n-00000500: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n-00000510: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n-00000520: 0d0a 2020 3c76 6572 7369 6f6e 3e32 2e37  ..  <version>2.7\n-00000530: 2e31 303c 2f76 6572 7369 6f6e 3e0d 0a20  .10</version>.. \n-00000540: 203c 6e61 6d65 3e24 7b70 726f 6a65 6374   <name>${project\n-00000550: 2e61 7274 6966 6163 7449 647d 3c2f 6e61  .artifactId}</na\n-00000560: 6d65 3e0d 0a20 203c 6465 7363 7269 7074  me>..  <descript\n-00000570: 696f 6e3e 5468 6520 7270 6320 6d6f 6475  ion>The rpc modu\n-00000580: 6c65 206f 6620 6475 6262 6f20 7072 6f6a  le of dubbo proj\n-00000590: 6563 743c 2f64 6573 6372 6970 7469 6f6e  ect</description\n-000005a0: 3e0d 0a20 203c 6c69 6365 6e73 6573 3e0d  >..  <licenses>.\n-000005b0: 0a20 2020 203c 6c69 6365 6e73 653e 0d0a  .    <license>..\n-000005c0: 2020 2020 2020 3c6e 616d 653e 4170 6163        <name>Apac\n-000005d0: 6865 204c 6963 656e 7365 2c20 5665 7273  he License, Vers\n-000005e0: 696f 6e20 322e 303c 2f6e 616d 653e 0d0a  ion 2.0</name>..\n-000005f0: 2020 2020 2020 3c75 726c 3e68 7474 703a        <url>http:\n-00000600: 2f2f 7777 772e 6170 6163 6865 2e6f 7267  //www.apache.org\n-00000610: 2f6c 6963 656e 7365 732f 4c49 4345 4e53  /licenses/LICENS\n-00000620: 452d 322e 303c 2f75 726c 3e0d 0a20 2020  E-2.0</url>..   \n-00000630: 2020 203c 6469 7374 7269 6275 7469 6f6e     <distribution\n-00000640: 3e72 6570 6f3c 2f64 6973 7472 6962 7574  >repo</distribut\n-00000650: 696f 6e3e 0d0a 2020 2020 3c2f 6c69 6365  ion>..    </lice\n-00000660: 6e73 653e 0d0a 2020 3c2f 6c69 6365 6e73  nse>..  </licens\n-00000670: 6573 3e0d 0a20 203c 7072 6f70 6572 7469  es>..  <properti\n-00000680: 6573 3e0d 0a20 2020 203c 736b 6970 5f6d  es>..    <skip_m\n-00000690: 6176 656e 5f64 6570 6c6f 793e 6661 6c73  aven_deploy>fals\n-000006a0: 653c 2f73 6b69 705f 6d61 7665 6e5f 6465  e</skip_maven_de\n-000006b0: 706c 6f79 3e0d 0a20 203c 2f70 726f 7065  ploy>..  </prope\n-000006c0: 7274 6965 733e 0d0a 2020 3c64 6570 656e  rties>..  <depen\n-000006d0: 6465 6e63 6965 733e 0d0a 2020 2020 3c64  dencies>..    <d\n-000006e0: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-000006f0: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n-00000700: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n-00000710: 7570 4964 3e0d 0a20 2020 2020 203c 6172  upId>..      <ar\n-00000720: 7469 6661 6374 4964 3e64 7562 626f 2d63  tifactId>dubbo-c\n-00000730: 6f6d 6d6f 6e3c 2f61 7274 6966 6163 7449  ommon</artifactI\n-00000740: 643e 0d0a 2020 2020 2020 3c76 6572 7369  d>..      <versi\n-00000750: 6f6e 3e24 7b70 726f 6a65 6374 2e70 6172  on>${project.par\n-00000760: 656e 742e 7665 7273 696f 6e7d 3c2f 7665  ent.version}</ve\n-00000770: 7273 696f 6e3e 0d0a 2020 2020 3c2f 6465  rsion>..    </de\n-00000780: 7065 6e64 656e 6379 3e0d 0a20 2020 203c  pendency>..    <\n-00000790: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-000007a0: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n-000007b0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-000007c0: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-000007d0: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n-000007e0: 7365 7269 616c 697a 6174 696f 6e2d 6170  serialization-ap\n-000007f0: 693c 2f61 7274 6966 6163 7449 643e 0d0a  i</artifactId>..\n-00000800: 2020 2020 2020 3c76 6572 7369 6f6e 3e24        <version>$\n-00000810: 7b70 726f 6a65 6374 2e70 6172 656e 742e  {project.parent.\n-00000820: 7665 7273 696f 6e7d 3c2f 7665 7273 696f  version}</versio\n-00000830: 6e3e 0d0a 2020 2020 3c2f 6465 7065 6e64  n>..    </depend\n-00000840: 656e 6379 3e0d 0a20 2020 203c 6465 7065  ency>..    <depe\n-00000850: 6e64 656e 6379 3e0d 0a20 2020 2020 203c  ndency>..      <\n-00000860: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n-00000870: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n-00000880: 643e 0d0a 2020 2020 2020 3c61 7274 6966  d>..      <artif\n-00000890: 6163 7449 643e 6475 6262 6f2d 7265 6d6f  actId>dubbo-remo\n-000008a0: 7469 6e67 2d61 7069 3c2f 6172 7469 6661  ting-api</artifa\n-000008b0: 6374 4964 3e0d 0a20 2020 2020 203c 7665  ctId>..      <ve\n-000008c0: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n-000008d0: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n-000008e0: 2f76 6572 7369 6f6e 3e0d 0a20 2020 203c  /version>..    <\n-000008f0: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-00000900: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-00000910: 2020 2020 2020 3c67 726f 7570 4964 3e63        <groupId>c\n-00000920: 6f6d 2e61 6c69 6261 6261 3c2f 6772 6f75  om.alibaba</grou\n-00000930: 7049 643e 0d0a 2020 2020 2020 3c61 7274  pId>..      <art\n-00000940: 6966 6163 7449 643e 6865 7373 6961 6e2d  ifactId>hessian-\n-00000950: 6c69 7465 3c2f 6172 7469 6661 6374 4964  lite</artifactId\n-00000960: 3e0d 0a20 2020 2020 203c 7363 6f70 653e  >..      <scope>\n-00000970: 7465 7374 3c2f 7363 6f70 653e 0d0a 2020  test</scope>..  \n-00000980: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-00000990: 0a20 203c 2f64 6570 656e 6465 6e63 6965  .  </dependencie\n-000009a0: 733e 0d0a 3c2f 7072 6f6a 6563 743e 0d0a  s>..</project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 7063  factId>dubbo-rpc\n+00000480: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000490: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n+000004a0: 303c 2f76 6572 7369 6f6e 3e0a 2020 3c2f  0</version>.  </\n+000004b0: 7061 7265 6e74 3e0a 2020 3c67 726f 7570  parent>.  <group\n+000004c0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+000004d0: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+000004e0: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+000004f0: 6f2d 7270 632d 6170 693c 2f61 7274 6966  o-rpc-api</artif\n+00000500: 6163 7449 643e 0a20 203c 7665 7273 696f  actId>.  <versio\n+00000510: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n+00000520: 6e3e 0a20 203c 6e61 6d65 3e24 7b70 726f  n>.  <name>${pro\n+00000530: 6a65 6374 2e61 7274 6966 6163 7449 647d  ject.artifactId}\n+00000540: 3c2f 6e61 6d65 3e0a 2020 3c64 6573 6372  </name>.  <descr\n+00000550: 6970 7469 6f6e 3e54 6865 2072 7063 206d  iption>The rpc m\n+00000560: 6f64 756c 6520 6f66 2064 7562 626f 2070  odule of dubbo p\n+00000570: 726f 6a65 6374 3c2f 6465 7363 7269 7074  roject</descript\n+00000580: 696f 6e3e 0a20 203c 6c69 6365 6e73 6573  ion>.  <licenses\n+00000590: 3e0a 2020 2020 3c6c 6963 656e 7365 3e0a  >.    <license>.\n+000005a0: 2020 2020 2020 3c6e 616d 653e 4170 6163        <name>Apac\n+000005b0: 6865 204c 6963 656e 7365 2c20 5665 7273  he License, Vers\n+000005c0: 696f 6e20 322e 303c 2f6e 616d 653e 0a20  ion 2.0</name>. \n+000005d0: 2020 2020 203c 7572 6c3e 6874 7470 3a2f       <url>http:/\n+000005e0: 2f77 7777 2e61 7061 6368 652e 6f72 672f  /www.apache.org/\n+000005f0: 6c69 6365 6e73 6573 2f4c 4943 454e 5345  licenses/LICENSE\n+00000600: 2d32 2e30 3c2f 7572 6c3e 0a20 2020 2020  -2.0</url>.     \n+00000610: 203c 6469 7374 7269 6275 7469 6f6e 3e72   <distribution>r\n+00000620: 6570 6f3c 2f64 6973 7472 6962 7574 696f  epo</distributio\n+00000630: 6e3e 0a20 2020 203c 2f6c 6963 656e 7365  n>.    </license\n+00000640: 3e0a 2020 3c2f 6c69 6365 6e73 6573 3e0a  >.  </licenses>.\n+00000650: 2020 3c70 726f 7065 7274 6965 733e 0a20    <properties>. \n+00000660: 2020 203c 736b 6970 5f6d 6176 656e 5f64     <skip_maven_d\n+00000670: 6570 6c6f 793e 6661 6c73 653c 2f73 6b69  eploy>false</ski\n+00000680: 705f 6d61 7665 6e5f 6465 706c 6f79 3e0a  p_maven_deploy>.\n+00000690: 2020 3c2f 7072 6f70 6572 7469 6573 3e0a    </properties>.\n+000006a0: 2020 3c64 6570 656e 6465 6e63 6965 733e    <dependencies>\n+000006b0: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+000006c0: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+000006d0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n+000006e0: 6f3c 2f67 726f 7570 4964 3e0a 2020 2020  o</groupId>.    \n+000006f0: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000700: 6262 6f2d 636f 6d6d 6f6e 3c2f 6172 7469  bbo-common</arti\n+00000710: 6661 6374 4964 3e0a 2020 2020 2020 3c76  factId>.      <v\n+00000720: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n+00000730: 2e70 6172 656e 742e 7665 7273 696f 6e7d  .parent.version}\n+00000740: 3c2f 7665 7273 696f 6e3e 0a20 2020 203c  </version>.    <\n+00000750: 2f64 6570 656e 6465 6e63 793e 0a20 2020  /dependency>.   \n+00000760: 203c 6465 7065 6e64 656e 6379 3e0a 2020   <dependency>.  \n+00000770: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n+00000780: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n+00000790: 726f 7570 4964 3e0a 2020 2020 2020 3c61  roupId>.      <a\n+000007a0: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n+000007b0: 7365 7269 616c 697a 6174 696f 6e2d 6170  serialization-ap\n+000007c0: 693c 2f61 7274 6966 6163 7449 643e 0a20  i</artifactId>. \n+000007d0: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n+000007e0: 7072 6f6a 6563 742e 7061 7265 6e74 2e76  project.parent.v\n+000007f0: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n+00000800: 3e0a 2020 2020 3c2f 6465 7065 6e64 656e  >.    </dependen\n+00000810: 6379 3e0a 2020 2020 3c64 6570 656e 6465  cy>.    <depende\n+00000820: 6e63 793e 0a20 2020 2020 203c 6772 6f75  ncy>.      <grou\n+00000830: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n+00000840: 7562 626f 3c2f 6772 6f75 7049 643e 0a20  ubbo</groupId>. \n+00000850: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n+00000860: 3e64 7562 626f 2d72 656d 6f74 696e 672d  >dubbo-remoting-\n+00000870: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n+00000880: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n+00000890: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n+000008a0: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n+000008b0: 6f6e 3e0a 2020 2020 3c2f 6465 7065 6e64  on>.    </depend\n+000008c0: 656e 6379 3e0a 2020 2020 3c64 6570 656e  ency>.    <depen\n+000008d0: 6465 6e63 793e 0a20 2020 2020 203c 6772  dency>.      <gr\n+000008e0: 6f75 7049 643e 636f 6d2e 616c 6962 6162  oupId>com.alibab\n+000008f0: 613c 2f67 726f 7570 4964 3e0a 2020 2020  a</groupId>.    \n+00000900: 2020 3c61 7274 6966 6163 7449 643e 6865    <artifactId>he\n+00000910: 7373 6961 6e2d 6c69 7465 3c2f 6172 7469  ssian-lite</arti\n+00000920: 6661 6374 4964 3e0a 2020 2020 2020 3c73  factId>.      <s\n+00000930: 636f 7065 3e74 6573 743c 2f73 636f 7065  cope>test</scope\n+00000940: 3e0a 2020 2020 3c2f 6465 7065 6e64 656e  >.    </dependen\n+00000950: 6379 3e0a 2020 3c2f 6465 7065 6e64 656e  cy>.  </dependen\n+00000960: 6369 6573 3e0a 3c2f 7072 6f6a 6563 743e  cies>.</project>\n+00000970: 0a                                       .\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-rpc-dubbo/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-rpc-dubbo/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,252 +1,245 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 7063 3c2f 6172 7469 6661 6374  bo-rpc</artifact\n-000004a0: 4964 3e0d 0a20 2020 203c 7665 7273 696f  Id>..    <versio\n-000004b0: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n-000004c0: 6e3e 0d0a 2020 3c2f 7061 7265 6e74 3e0d  n>..  </parent>.\n-000004d0: 0a20 203c 6772 6f75 7049 643e 6f72 672e  .  <groupId>org.\n-000004e0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-000004f0: 6f75 7049 643e 0d0a 2020 3c61 7274 6966  oupId>..  <artif\n-00000500: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n-00000510: 6475 6262 6f3c 2f61 7274 6966 6163 7449  dubbo</artifactI\n-00000520: 643e 0d0a 2020 3c76 6572 7369 6f6e 3e32  d>..  <version>2\n-00000530: 2e37 2e31 303c 2f76 6572 7369 6f6e 3e0d  .7.10</version>.\n-00000540: 0a20 203c 6e61 6d65 3e24 7b70 726f 6a65  .  <name>${proje\n-00000550: 6374 2e61 7274 6966 6163 7449 647d 3c2f  ct.artifactId}</\n-00000560: 6e61 6d65 3e0d 0a20 203c 6465 7363 7269  name>..  <descri\n-00000570: 7074 696f 6e3e 5468 6520 6465 6661 756c  ption>The defaul\n-00000580: 7420 7270 6320 6d6f 6475 6c65 206f 6620  t rpc module of \n-00000590: 6475 6262 6f20 7072 6f6a 6563 743c 2f64  dubbo project</d\n-000005a0: 6573 6372 6970 7469 6f6e 3e0d 0a20 203c  escription>..  <\n-000005b0: 6c69 6365 6e73 6573 3e0d 0a20 2020 203c  licenses>..    <\n-000005c0: 6c69 6365 6e73 653e 0d0a 2020 2020 2020  license>..      \n-000005d0: 3c6e 616d 653e 4170 6163 6865 204c 6963  <name>Apache Lic\n-000005e0: 656e 7365 2c20 5665 7273 696f 6e20 322e  ense, Version 2.\n-000005f0: 303c 2f6e 616d 653e 0d0a 2020 2020 2020  0</name>..      \n-00000600: 3c75 726c 3e68 7474 703a 2f2f 7777 772e  <url>http://www.\n-00000610: 6170 6163 6865 2e6f 7267 2f6c 6963 656e  apache.org/licen\n-00000620: 7365 732f 4c49 4345 4e53 452d 322e 303c  ses/LICENSE-2.0<\n-00000630: 2f75 726c 3e0d 0a20 2020 2020 203c 6469  /url>..      <di\n-00000640: 7374 7269 6275 7469 6f6e 3e72 6570 6f3c  stribution>repo<\n-00000650: 2f64 6973 7472 6962 7574 696f 6e3e 0d0a  /distribution>..\n-00000660: 2020 2020 3c2f 6c69 6365 6e73 653e 0d0a      </license>..\n-00000670: 2020 3c2f 6c69 6365 6e73 6573 3e0d 0a20    </licenses>.. \n-00000680: 203c 7072 6f70 6572 7469 6573 3e0d 0a20   <properties>.. \n-00000690: 2020 203c 736b 6970 5f6d 6176 656e 5f64     <skip_maven_d\n-000006a0: 6570 6c6f 793e 6661 6c73 653c 2f73 6b69  eploy>false</ski\n-000006b0: 705f 6d61 7665 6e5f 6465 706c 6f79 3e0d  p_maven_deploy>.\n-000006c0: 0a20 203c 2f70 726f 7065 7274 6965 733e  .  </properties>\n-000006d0: 0d0a 2020 3c64 6570 656e 6465 6e63 6965  ..  <dependencie\n-000006e0: 733e 0d0a 2020 2020 3c64 6570 656e 6465  s>..    <depende\n-000006f0: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-00000700: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n-00000710: 6475 6262 6f3c 2f67 726f 7570 4964 3e0d  dubbo</groupId>.\n-00000720: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-00000730: 4964 3e64 7562 626f 2d72 7063 2d61 7069  Id>dubbo-rpc-api\n-00000740: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000750: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n-00000760: 7072 6f6a 6563 742e 7061 7265 6e74 2e76  project.parent.v\n-00000770: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n-00000780: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-00000790: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-000007a0: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-000007b0: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n-000007c0: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n-000007d0: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-000007e0: 6374 4964 3e64 7562 626f 2d72 656d 6f74  ctId>dubbo-remot\n-000007f0: 696e 672d 6170 693c 2f61 7274 6966 6163  ing-api</artifac\n-00000800: 7449 643e 0d0a 2020 2020 2020 3c76 6572  tId>..      <ver\n-00000810: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n-00000820: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n-00000830: 7665 7273 696f 6e3e 0d0a 2020 2020 3c2f  version>..    </\n-00000840: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000850: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-00000860: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n-00000870: 672e 6170 6163 6865 2e64 7562 626f 3c2f  g.apache.dubbo</\n-00000880: 6772 6f75 7049 643e 0d0a 2020 2020 2020  groupId>..      \n-00000890: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n-000008a0: 6f2d 636c 7573 7465 723c 2f61 7274 6966  o-cluster</artif\n-000008b0: 6163 7449 643e 0d0a 2020 2020 2020 3c76  actId>..      <v\n-000008c0: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n-000008d0: 2e70 6172 656e 742e 7665 7273 696f 6e7d  .parent.version}\n-000008e0: 3c2f 7665 7273 696f 6e3e 0d0a 2020 2020  </version>..    \n-000008f0: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-00000900: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-00000910: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000920: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n-00000930: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-00000940: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n-00000950: 6262 6f2d 7265 6d6f 7469 6e67 2d6e 6574  bbo-remoting-net\n-00000960: 7479 343c 2f61 7274 6966 6163 7449 643e  ty4</artifactId>\n-00000970: 0d0a 2020 2020 2020 3c76 6572 7369 6f6e  ..      <version\n-00000980: 3e24 7b70 726f 6a65 6374 2e70 6172 656e  >${project.paren\n-00000990: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n-000009a0: 696f 6e3e 0d0a 2020 2020 2020 3c73 636f  ion>..      <sco\n-000009b0: 7065 3e74 6573 743c 2f73 636f 7065 3e0d  pe>test</scope>.\n-000009c0: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-000009d0: 793e 0d0a 2020 2020 3c64 6570 656e 6465  y>..    <depende\n-000009e0: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-000009f0: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n-00000a00: 6475 6262 6f3c 2f67 726f 7570 4964 3e0d  dubbo</groupId>.\n-00000a10: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-00000a20: 4964 3e64 7562 626f 2d72 656d 6f74 696e  Id>dubbo-remotin\n-00000a30: 672d 6d69 6e61 3c2f 6172 7469 6661 6374  g-mina</artifact\n-00000a40: 4964 3e0d 0a20 2020 2020 203c 7665 7273  Id>..      <vers\n-00000a50: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n-00000a60: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n-00000a70: 6572 7369 6f6e 3e0d 0a20 2020 2020 203c  ersion>..      <\n-00000a80: 7363 6f70 653e 7465 7374 3c2f 7363 6f70  scope>test</scop\n-00000a90: 653e 0d0a 2020 2020 3c2f 6465 7065 6e64  e>..    </depend\n-00000aa0: 656e 6379 3e0d 0a20 2020 203c 6465 7065  ency>..    <depe\n-00000ab0: 6e64 656e 6379 3e0d 0a20 2020 2020 203c  ndency>..      <\n-00000ac0: 6772 6f75 7049 643e 696f 2e6e 6574 7479  groupId>io.netty\n-00000ad0: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-00000ae0: 2020 3c61 7274 6966 6163 7449 643e 6e65    <artifactId>ne\n-00000af0: 7474 792d 616c 6c3c 2f61 7274 6966 6163  tty-all</artifac\n-00000b00: 7449 643e 0d0a 2020 2020 2020 3c73 636f  tId>..      <sco\n-00000b10: 7065 3e74 6573 743c 2f73 636f 7065 3e0d  pe>test</scope>.\n-00000b20: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-00000b30: 793e 0d0a 2020 2020 3c64 6570 656e 6465  y>..    <depende\n-00000b40: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-00000b50: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n-00000b60: 6475 6262 6f3c 2f67 726f 7570 4964 3e0d  dubbo</groupId>.\n-00000b70: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-00000b80: 4964 3e64 7562 626f 2d73 6572 6961 6c69  Id>dubbo-seriali\n-00000b90: 7a61 7469 6f6e 2d68 6573 7369 616e 323c  zation-hessian2<\n-00000ba0: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-00000bb0: 2020 2020 3c76 6572 7369 6f6e 3e24 7b70      <version>${p\n-00000bc0: 726f 6a65 6374 2e70 6172 656e 742e 7665  roject.parent.ve\n-00000bd0: 7273 696f 6e7d 3c2f 7665 7273 696f 6e3e  rsion}</version>\n-00000be0: 0d0a 2020 2020 2020 3c73 636f 7065 3e74  ..      <scope>t\n-00000bf0: 6573 743c 2f73 636f 7065 3e0d 0a20 2020  est</scope>..   \n-00000c00: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-00000c10: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n-00000c20: 0d0a 2020 2020 2020 3c67 726f 7570 4964  ..      <groupId\n-00000c30: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000c40: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000c50: 2020 203c 6172 7469 6661 6374 4964 3e64     <artifactId>d\n-00000c60: 7562 626f 2d73 6572 6961 6c69 7a61 7469  ubbo-serializati\n-00000c70: 6f6e 2d6a 646b 3c2f 6172 7469 6661 6374  on-jdk</artifact\n-00000c80: 4964 3e0d 0a20 2020 2020 203c 7665 7273  Id>..      <vers\n-00000c90: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n-00000ca0: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n-00000cb0: 6572 7369 6f6e 3e0d 0a20 2020 2020 203c  ersion>..      <\n-00000cc0: 7363 6f70 653e 7465 7374 3c2f 7363 6f70  scope>test</scop\n-00000cd0: 653e 0d0a 2020 2020 3c2f 6465 7065 6e64  e>..    </depend\n-00000ce0: 656e 6379 3e0d 0a20 2020 203c 6465 7065  ency>..    <depe\n-00000cf0: 6e64 656e 6379 3e0d 0a20 2020 2020 203c  ndency>..      <\n-00000d00: 6772 6f75 7049 643e 6a61 7661 782e 7661  groupId>javax.va\n-00000d10: 6c69 6461 7469 6f6e 3c2f 6772 6f75 7049  lidation</groupI\n-00000d20: 643e 0d0a 2020 2020 2020 3c61 7274 6966  d>..      <artif\n-00000d30: 6163 7449 643e 7661 6c69 6461 7469 6f6e  actId>validation\n-00000d40: 2d61 7069 3c2f 6172 7469 6661 6374 4964  -api</artifactId\n-00000d50: 3e0d 0a20 2020 2020 203c 7363 6f70 653e  >..      <scope>\n-00000d60: 7465 7374 3c2f 7363 6f70 653e 0d0a 2020  test</scope>..  \n-00000d70: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-00000d80: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-00000d90: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-00000da0: 643e 6f72 672e 6869 6265 726e 6174 653c  d>org.hibernate<\n-00000db0: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-00000dc0: 203c 6172 7469 6661 6374 4964 3e68 6962   <artifactId>hib\n-00000dd0: 6572 6e61 7465 2d76 616c 6964 6174 6f72  ernate-validator\n-00000de0: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000df0: 2020 2020 203c 7363 6f70 653e 7465 7374       <scope>test\n-00000e00: 3c2f 7363 6f70 653e 0d0a 2020 2020 3c2f  </scope>..    </\n-00000e10: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000e20: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-00000e30: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n-00000e40: 672e 676c 6173 7366 6973 683c 2f67 726f  g.glassfish</gro\n-00000e50: 7570 4964 3e0d 0a20 2020 2020 203c 6172  upId>..      <ar\n-00000e60: 7469 6661 6374 4964 3e6a 6176 6178 2e65  tifactId>javax.e\n-00000e70: 6c3c 2f61 7274 6966 6163 7449 643e 0d0a  l</artifactId>..\n-00000e80: 2020 2020 2020 3c73 636f 7065 3e74 6573        <scope>tes\n-00000e90: 743c 2f73 636f 7065 3e0d 0a20 2020 203c  t</scope>..    <\n-00000ea0: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-00000eb0: 3c2f 6465 7065 6e64 656e 6369 6573 3e0d  </dependencies>.\n-00000ec0: 0a20 203c 6275 696c 643e 0d0a 2020 2020  .  <build>..    \n-00000ed0: 3c70 6c75 6769 6e73 3e0d 0a20 2020 2020  <plugins>..     \n-00000ee0: 203c 706c 7567 696e 3e0d 0a20 2020 2020   <plugin>..     \n-00000ef0: 2020 203c 6172 7469 6661 6374 4964 3e6d     <artifactId>m\n-00000f00: 6176 656e 2d73 7572 6566 6972 652d 706c  aven-surefire-pl\n-00000f10: 7567 696e 3c2f 6172 7469 6661 6374 4964  ugin</artifactId\n-00000f20: 3e0d 0a20 2020 2020 2020 203c 636f 6e66  >..        <conf\n-00000f30: 6967 7572 6174 696f 6e3e 0d0a 2020 2020  iguration>..    \n-00000f40: 2020 2020 2020 3c72 756e 4f72 6465 723e        <runOrder>\n-00000f50: 616c 7068 6162 6574 6963 616c 3c2f 7275  alphabetical</ru\n-00000f60: 6e4f 7264 6572 3e0d 0a20 2020 2020 2020  nOrder>..       \n-00000f70: 203c 2f63 6f6e 6669 6775 7261 7469 6f6e   </configuration\n-00000f80: 3e0d 0a20 2020 2020 203c 2f70 6c75 6769  >..      </plugi\n-00000f90: 6e3e 0d0a 2020 2020 3c2f 706c 7567 696e  n>..    </plugin\n-00000fa0: 733e 0d0a 2020 3c2f 6275 696c 643e 0d0a  s>..  </build>..\n-00000fb0: 3c2f 7072 6f6a 6563 743e 0d0a            </project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 7063  factId>dubbo-rpc\n+00000480: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000490: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n+000004a0: 303c 2f76 6572 7369 6f6e 3e0a 2020 3c2f  0</version>.  </\n+000004b0: 7061 7265 6e74 3e0a 2020 3c67 726f 7570  parent>.  <group\n+000004c0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+000004d0: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+000004e0: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+000004f0: 6f2d 7270 632d 6475 6262 6f3c 2f61 7274  o-rpc-dubbo</art\n+00000500: 6966 6163 7449 643e 0a20 203c 7665 7273  ifactId>.  <vers\n+00000510: 696f 6e3e 322e 372e 3130 3c2f 7665 7273  ion>2.7.10</vers\n+00000520: 696f 6e3e 0a20 203c 6e61 6d65 3e24 7b70  ion>.  <name>${p\n+00000530: 726f 6a65 6374 2e61 7274 6966 6163 7449  roject.artifactI\n+00000540: 647d 3c2f 6e61 6d65 3e0a 2020 3c64 6573  d}</name>.  <des\n+00000550: 6372 6970 7469 6f6e 3e54 6865 2064 6566  cription>The def\n+00000560: 6175 6c74 2072 7063 206d 6f64 756c 6520  ault rpc module \n+00000570: 6f66 2064 7562 626f 2070 726f 6a65 6374  of dubbo project\n+00000580: 3c2f 6465 7363 7269 7074 696f 6e3e 0a20  </description>. \n+00000590: 203c 6c69 6365 6e73 6573 3e0a 2020 2020   <licenses>.    \n+000005a0: 3c6c 6963 656e 7365 3e0a 2020 2020 2020  <license>.      \n+000005b0: 3c6e 616d 653e 4170 6163 6865 204c 6963  <name>Apache Lic\n+000005c0: 656e 7365 2c20 5665 7273 696f 6e20 322e  ense, Version 2.\n+000005d0: 303c 2f6e 616d 653e 0a20 2020 2020 203c  0</name>.      <\n+000005e0: 7572 6c3e 6874 7470 3a2f 2f77 7777 2e61  url>http://www.a\n+000005f0: 7061 6368 652e 6f72 672f 6c69 6365 6e73  pache.org/licens\n+00000600: 6573 2f4c 4943 454e 5345 2d32 2e30 3c2f  es/LICENSE-2.0</\n+00000610: 7572 6c3e 0a20 2020 2020 203c 6469 7374  url>.      <dist\n+00000620: 7269 6275 7469 6f6e 3e72 6570 6f3c 2f64  ribution>repo</d\n+00000630: 6973 7472 6962 7574 696f 6e3e 0a20 2020  istribution>.   \n+00000640: 203c 2f6c 6963 656e 7365 3e0a 2020 3c2f   </license>.  </\n+00000650: 6c69 6365 6e73 6573 3e0a 2020 3c70 726f  licenses>.  <pro\n+00000660: 7065 7274 6965 733e 0a20 2020 203c 736b  perties>.    <sk\n+00000670: 6970 5f6d 6176 656e 5f64 6570 6c6f 793e  ip_maven_deploy>\n+00000680: 6661 6c73 653c 2f73 6b69 705f 6d61 7665  false</skip_mave\n+00000690: 6e5f 6465 706c 6f79 3e0a 2020 3c2f 7072  n_deploy>.  </pr\n+000006a0: 6f70 6572 7469 6573 3e0a 2020 3c64 6570  operties>.  <dep\n+000006b0: 656e 6465 6e63 6965 733e 0a20 2020 203c  endencies>.    <\n+000006c0: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+000006d0: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+000006e0: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n+000006f0: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000700: 6966 6163 7449 643e 6475 6262 6f2d 7270  ifactId>dubbo-rp\n+00000710: 632d 6170 693c 2f61 7274 6966 6163 7449  c-api</artifactI\n+00000720: 643e 0a20 2020 2020 203c 7665 7273 696f  d>.      <versio\n+00000730: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n+00000740: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n+00000750: 7369 6f6e 3e0a 2020 2020 3c2f 6465 7065  sion>.    </depe\n+00000760: 6e64 656e 6379 3e0a 2020 2020 3c64 6570  ndency>.    <dep\n+00000770: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+00000780: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+00000790: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000007a0: 643e 0a20 2020 2020 203c 6172 7469 6661  d>.      <artifa\n+000007b0: 6374 4964 3e64 7562 626f 2d72 656d 6f74  ctId>dubbo-remot\n+000007c0: 696e 672d 6170 693c 2f61 7274 6966 6163  ing-api</artifac\n+000007d0: 7449 643e 0a20 2020 2020 203c 7665 7273  tId>.      <vers\n+000007e0: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n+000007f0: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n+00000800: 6572 7369 6f6e 3e0a 2020 2020 3c2f 6465  ersion>.    </de\n+00000810: 7065 6e64 656e 6379 3e0a 2020 2020 3c64  pendency>.    <d\n+00000820: 6570 656e 6465 6e63 793e 0a20 2020 2020  ependency>.     \n+00000830: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000840: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000850: 7049 643e 0a20 2020 2020 203c 6172 7469  pId>.      <arti\n+00000860: 6661 6374 4964 3e64 7562 626f 2d63 6c75  factId>dubbo-clu\n+00000870: 7374 6572 3c2f 6172 7469 6661 6374 4964  ster</artifactId\n+00000880: 3e0a 2020 2020 2020 3c76 6572 7369 6f6e  >.      <version\n+00000890: 3e24 7b70 726f 6a65 6374 2e70 6172 656e  >${project.paren\n+000008a0: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n+000008b0: 696f 6e3e 0a20 2020 203c 2f64 6570 656e  ion>.    </depen\n+000008c0: 6465 6e63 793e 0a20 2020 203c 6465 7065  dency>.    <depe\n+000008d0: 6e64 656e 6379 3e0a 2020 2020 2020 3c67  ndency>.      <g\n+000008e0: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n+000008f0: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n+00000900: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+00000910: 7449 643e 6475 6262 6f2d 7265 6d6f 7469  tId>dubbo-remoti\n+00000920: 6e67 2d6e 6574 7479 343c 2f61 7274 6966  ng-netty4</artif\n+00000930: 6163 7449 643e 0a20 2020 2020 203c 7665  actId>.      <ve\n+00000940: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n+00000950: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n+00000960: 2f76 6572 7369 6f6e 3e0a 2020 2020 2020  /version>.      \n+00000970: 3c73 636f 7065 3e74 6573 743c 2f73 636f  <scope>test</sco\n+00000980: 7065 3e0a 2020 2020 3c2f 6465 7065 6e64  pe>.    </depend\n+00000990: 656e 6379 3e0a 2020 2020 3c64 6570 656e  ency>.    <depen\n+000009a0: 6465 6e63 793e 0a20 2020 2020 203c 6772  dency>.      <gr\n+000009b0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000009c0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+000009d0: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+000009e0: 4964 3e64 7562 626f 2d72 656d 6f74 696e  Id>dubbo-remotin\n+000009f0: 672d 6d69 6e61 3c2f 6172 7469 6661 6374  g-mina</artifact\n+00000a00: 4964 3e0a 2020 2020 2020 3c76 6572 7369  Id>.      <versi\n+00000a10: 6f6e 3e24 7b70 726f 6a65 6374 2e70 6172  on>${project.par\n+00000a20: 656e 742e 7665 7273 696f 6e7d 3c2f 7665  ent.version}</ve\n+00000a30: 7273 696f 6e3e 0a20 2020 2020 203c 7363  rsion>.      <sc\n+00000a40: 6f70 653e 7465 7374 3c2f 7363 6f70 653e  ope>test</scope>\n+00000a50: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+00000a60: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+00000a70: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+00000a80: 4964 3e69 6f2e 6e65 7474 793c 2f67 726f  Id>io.netty</gro\n+00000a90: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000aa0: 6966 6163 7449 643e 6e65 7474 792d 616c  ifactId>netty-al\n+00000ab0: 6c3c 2f61 7274 6966 6163 7449 643e 0a20  l</artifactId>. \n+00000ac0: 2020 2020 203c 7363 6f70 653e 7465 7374       <scope>test\n+00000ad0: 3c2f 7363 6f70 653e 0a20 2020 203c 2f64  </scope>.    </d\n+00000ae0: 6570 656e 6465 6e63 793e 0a20 2020 203c  ependency>.    <\n+00000af0: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000b00: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+00000b10: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n+00000b20: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000b30: 6966 6163 7449 643e 6475 6262 6f2d 7365  ifactId>dubbo-se\n+00000b40: 7269 616c 697a 6174 696f 6e2d 6865 7373  rialization-hess\n+00000b50: 6961 6e32 3c2f 6172 7469 6661 6374 4964  ian2</artifactId\n+00000b60: 3e0a 2020 2020 2020 3c76 6572 7369 6f6e  >.      <version\n+00000b70: 3e24 7b70 726f 6a65 6374 2e70 6172 656e  >${project.paren\n+00000b80: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n+00000b90: 696f 6e3e 0a20 2020 2020 203c 7363 6f70  ion>.      <scop\n+00000ba0: 653e 7465 7374 3c2f 7363 6f70 653e 0a20  e>test</scope>. \n+00000bb0: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+00000bc0: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+00000bd0: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+00000be0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n+00000bf0: 6f3c 2f67 726f 7570 4964 3e0a 2020 2020  o</groupId>.    \n+00000c00: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000c10: 6262 6f2d 7365 7269 616c 697a 6174 696f  bbo-serializatio\n+00000c20: 6e2d 6a64 6b3c 2f61 7274 6966 6163 7449  n-jdk</artifactI\n+00000c30: 643e 0a20 2020 2020 203c 7665 7273 696f  d>.      <versio\n+00000c40: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n+00000c50: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n+00000c60: 7369 6f6e 3e0a 2020 2020 2020 3c73 636f  sion>.      <sco\n+00000c70: 7065 3e74 6573 743c 2f73 636f 7065 3e0a  pe>test</scope>.\n+00000c80: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000c90: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000ca0: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+00000cb0: 643e 6a61 7661 782e 7661 6c69 6461 7469  d>javax.validati\n+00000cc0: 6f6e 3c2f 6772 6f75 7049 643e 0a20 2020  on</groupId>.   \n+00000cd0: 2020 203c 6172 7469 6661 6374 4964 3e76     <artifactId>v\n+00000ce0: 616c 6964 6174 696f 6e2d 6170 693c 2f61  alidation-api</a\n+00000cf0: 7274 6966 6163 7449 643e 0a20 2020 2020  rtifactId>.     \n+00000d00: 203c 7363 6f70 653e 7465 7374 3c2f 7363   <scope>test</sc\n+00000d10: 6f70 653e 0a20 2020 203c 2f64 6570 656e  ope>.    </depen\n+00000d20: 6465 6e63 793e 0a20 2020 203c 6465 7065  dency>.    <depe\n+00000d30: 6e64 656e 6379 3e0a 2020 2020 2020 3c67  ndency>.      <g\n+00000d40: 726f 7570 4964 3e6f 7267 2e68 6962 6572  roupId>org.hiber\n+00000d50: 6e61 7465 3c2f 6772 6f75 7049 643e 0a20  nate</groupId>. \n+00000d60: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n+00000d70: 3e68 6962 6572 6e61 7465 2d76 616c 6964  >hibernate-valid\n+00000d80: 6174 6f72 3c2f 6172 7469 6661 6374 4964  ator</artifactId\n+00000d90: 3e0a 2020 2020 2020 3c73 636f 7065 3e74  >.      <scope>t\n+00000da0: 6573 743c 2f73 636f 7065 3e0a 2020 2020  est</scope>.    \n+00000db0: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+00000dc0: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+00000dd0: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n+00000de0: 672e 676c 6173 7366 6973 683c 2f67 726f  g.glassfish</gro\n+00000df0: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000e00: 6966 6163 7449 643e 6a61 7661 782e 656c  ifactId>javax.el\n+00000e10: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000e20: 2020 2020 3c73 636f 7065 3e74 6573 743c      <scope>test<\n+00000e30: 2f73 636f 7065 3e0a 2020 2020 3c2f 6465  /scope>.    </de\n+00000e40: 7065 6e64 656e 6379 3e0a 2020 3c2f 6465  pendency>.  </de\n+00000e50: 7065 6e64 656e 6369 6573 3e0a 2020 3c62  pendencies>.  <b\n+00000e60: 7569 6c64 3e0a 2020 2020 3c70 6c75 6769  uild>.    <plugi\n+00000e70: 6e73 3e0a 2020 2020 2020 3c70 6c75 6769  ns>.      <plugi\n+00000e80: 6e3e 0a20 2020 2020 2020 203c 6172 7469  n>.        <arti\n+00000e90: 6661 6374 4964 3e6d 6176 656e 2d73 7572  factId>maven-sur\n+00000ea0: 6566 6972 652d 706c 7567 696e 3c2f 6172  efire-plugin</ar\n+00000eb0: 7469 6661 6374 4964 3e0a 2020 2020 2020  tifactId>.      \n+00000ec0: 2020 3c63 6f6e 6669 6775 7261 7469 6f6e    <configuration\n+00000ed0: 3e0a 2020 2020 2020 2020 2020 3c72 756e  >.          <run\n+00000ee0: 4f72 6465 723e 616c 7068 6162 6574 6963  Order>alphabetic\n+00000ef0: 616c 3c2f 7275 6e4f 7264 6572 3e0a 2020  al</runOrder>.  \n+00000f00: 2020 2020 2020 3c2f 636f 6e66 6967 7572        </configur\n+00000f10: 6174 696f 6e3e 0a20 2020 2020 203c 2f70  ation>.      </p\n+00000f20: 6c75 6769 6e3e 0a20 2020 203c 2f70 6c75  lugin>.    </plu\n+00000f30: 6769 6e73 3e0a 2020 3c2f 6275 696c 643e  gins>.  </build>\n+00000f40: 0a3c 2f70 726f 6a65 6374 3e0a            .</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-rpc-injvm/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-rpc-injvm/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,124 +1,121 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 7063 3c2f 6172 7469 6661 6374  bo-rpc</artifact\n-000004a0: 4964 3e0d 0a20 2020 203c 7665 7273 696f  Id>..    <versio\n-000004b0: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n-000004c0: 6e3e 0d0a 2020 3c2f 7061 7265 6e74 3e0d  n>..  </parent>.\n-000004d0: 0a20 203c 6772 6f75 7049 643e 6f72 672e  .  <groupId>org.\n-000004e0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-000004f0: 6f75 7049 643e 0d0a 2020 3c61 7274 6966  oupId>..  <artif\n-00000500: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n-00000510: 696e 6a76 6d3c 2f61 7274 6966 6163 7449  injvm</artifactI\n-00000520: 643e 0d0a 2020 3c76 6572 7369 6f6e 3e32  d>..  <version>2\n-00000530: 2e37 2e31 303c 2f76 6572 7369 6f6e 3e0d  .7.10</version>.\n-00000540: 0a20 203c 6e61 6d65 3e24 7b70 726f 6a65  .  <name>${proje\n-00000550: 6374 2e61 7274 6966 6163 7449 647d 3c2f  ct.artifactId}</\n-00000560: 6e61 6d65 3e0d 0a20 203c 6465 7363 7269  name>..  <descri\n-00000570: 7074 696f 6e3e 5468 6520 696e 6a76 6d20  ption>The injvm \n-00000580: 7270 6320 6d6f 6475 6c65 206f 6620 6475  rpc module of du\n-00000590: 6262 6f20 7072 6f6a 6563 743c 2f64 6573  bbo project</des\n-000005a0: 6372 6970 7469 6f6e 3e0d 0a20 203c 6c69  cription>..  <li\n-000005b0: 6365 6e73 6573 3e0d 0a20 2020 203c 6c69  censes>..    <li\n-000005c0: 6365 6e73 653e 0d0a 2020 2020 2020 3c6e  cense>..      <n\n-000005d0: 616d 653e 4170 6163 6865 204c 6963 656e  ame>Apache Licen\n-000005e0: 7365 2c20 5665 7273 696f 6e20 322e 303c  se, Version 2.0<\n-000005f0: 2f6e 616d 653e 0d0a 2020 2020 2020 3c75  /name>..      <u\n-00000600: 726c 3e68 7474 703a 2f2f 7777 772e 6170  rl>http://www.ap\n-00000610: 6163 6865 2e6f 7267 2f6c 6963 656e 7365  ache.org/license\n-00000620: 732f 4c49 4345 4e53 452d 322e 303c 2f75  s/LICENSE-2.0</u\n-00000630: 726c 3e0d 0a20 2020 2020 203c 6469 7374  rl>..      <dist\n-00000640: 7269 6275 7469 6f6e 3e72 6570 6f3c 2f64  ribution>repo</d\n-00000650: 6973 7472 6962 7574 696f 6e3e 0d0a 2020  istribution>..  \n-00000660: 2020 3c2f 6c69 6365 6e73 653e 0d0a 2020    </license>..  \n-00000670: 3c2f 6c69 6365 6e73 6573 3e0d 0a20 203c  </licenses>..  <\n-00000680: 7072 6f70 6572 7469 6573 3e0d 0a20 2020  properties>..   \n-00000690: 203c 736b 6970 5f6d 6176 656e 5f64 6570   <skip_maven_dep\n-000006a0: 6c6f 793e 6661 6c73 653c 2f73 6b69 705f  loy>false</skip_\n-000006b0: 6d61 7665 6e5f 6465 706c 6f79 3e0d 0a20  maven_deploy>.. \n-000006c0: 203c 2f70 726f 7065 7274 6965 733e 0d0a   </properties>..\n-000006d0: 2020 3c64 6570 656e 6465 6e63 6965 733e    <dependencies>\n-000006e0: 0d0a 2020 2020 3c64 6570 656e 6465 6e63  ..    <dependenc\n-000006f0: 793e 0d0a 2020 2020 2020 3c67 726f 7570  y>..      <group\n-00000700: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n-00000710: 6262 6f3c 2f67 726f 7570 4964 3e0d 0a20  bbo</groupId>.. \n-00000720: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n-00000730: 3e64 7562 626f 2d72 7063 2d61 7069 3c2f  >dubbo-rpc-api</\n-00000740: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-00000750: 2020 203c 7665 7273 696f 6e3e 247b 7072     <version>${pr\n-00000760: 6f6a 6563 742e 7061 7265 6e74 2e76 6572  oject.parent.ver\n-00000770: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0d  sion}</version>.\n-00000780: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-00000790: 793e 0d0a 2020 3c2f 6465 7065 6e64 656e  y>..  </dependen\n-000007a0: 6369 6573 3e0d 0a3c 2f70 726f 6a65 6374  cies>..</project\n-000007b0: 3e0d 0a                                  >..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 7063  factId>dubbo-rpc\n+00000480: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000490: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n+000004a0: 303c 2f76 6572 7369 6f6e 3e0a 2020 3c2f  0</version>.  </\n+000004b0: 7061 7265 6e74 3e0a 2020 3c67 726f 7570  parent>.  <group\n+000004c0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+000004d0: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+000004e0: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+000004f0: 6f2d 7270 632d 696e 6a76 6d3c 2f61 7274  o-rpc-injvm</art\n+00000500: 6966 6163 7449 643e 0a20 203c 7665 7273  ifactId>.  <vers\n+00000510: 696f 6e3e 322e 372e 3130 3c2f 7665 7273  ion>2.7.10</vers\n+00000520: 696f 6e3e 0a20 203c 6e61 6d65 3e24 7b70  ion>.  <name>${p\n+00000530: 726f 6a65 6374 2e61 7274 6966 6163 7449  roject.artifactI\n+00000540: 647d 3c2f 6e61 6d65 3e0a 2020 3c64 6573  d}</name>.  <des\n+00000550: 6372 6970 7469 6f6e 3e54 6865 2069 6e6a  cription>The inj\n+00000560: 766d 2072 7063 206d 6f64 756c 6520 6f66  vm rpc module of\n+00000570: 2064 7562 626f 2070 726f 6a65 6374 3c2f   dubbo project</\n+00000580: 6465 7363 7269 7074 696f 6e3e 0a20 203c  description>.  <\n+00000590: 6c69 6365 6e73 6573 3e0a 2020 2020 3c6c  licenses>.    <l\n+000005a0: 6963 656e 7365 3e0a 2020 2020 2020 3c6e  icense>.      <n\n+000005b0: 616d 653e 4170 6163 6865 204c 6963 656e  ame>Apache Licen\n+000005c0: 7365 2c20 5665 7273 696f 6e20 322e 303c  se, Version 2.0<\n+000005d0: 2f6e 616d 653e 0a20 2020 2020 203c 7572  /name>.      <ur\n+000005e0: 6c3e 6874 7470 3a2f 2f77 7777 2e61 7061  l>http://www.apa\n+000005f0: 6368 652e 6f72 672f 6c69 6365 6e73 6573  che.org/licenses\n+00000600: 2f4c 4943 454e 5345 2d32 2e30 3c2f 7572  /LICENSE-2.0</ur\n+00000610: 6c3e 0a20 2020 2020 203c 6469 7374 7269  l>.      <distri\n+00000620: 6275 7469 6f6e 3e72 6570 6f3c 2f64 6973  bution>repo</dis\n+00000630: 7472 6962 7574 696f 6e3e 0a20 2020 203c  tribution>.    <\n+00000640: 2f6c 6963 656e 7365 3e0a 2020 3c2f 6c69  /license>.  </li\n+00000650: 6365 6e73 6573 3e0a 2020 3c70 726f 7065  censes>.  <prope\n+00000660: 7274 6965 733e 0a20 2020 203c 736b 6970  rties>.    <skip\n+00000670: 5f6d 6176 656e 5f64 6570 6c6f 793e 6661  _maven_deploy>fa\n+00000680: 6c73 653c 2f73 6b69 705f 6d61 7665 6e5f  lse</skip_maven_\n+00000690: 6465 706c 6f79 3e0a 2020 3c2f 7072 6f70  deploy>.  </prop\n+000006a0: 6572 7469 6573 3e0a 2020 3c64 6570 656e  erties>.  <depen\n+000006b0: 6465 6e63 6965 733e 0a20 2020 203c 6465  dencies>.    <de\n+000006c0: 7065 6e64 656e 6379 3e0a 2020 2020 2020  pendency>.      \n+000006d0: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n+000006e0: 6368 652e 6475 6262 6f3c 2f67 726f 7570  che.dubbo</group\n+000006f0: 4964 3e0a 2020 2020 2020 3c61 7274 6966  Id>.      <artif\n+00000700: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n+00000710: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n+00000720: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n+00000730: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n+00000740: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n+00000750: 6f6e 3e0a 2020 2020 3c2f 6465 7065 6e64  on>.    </depend\n+00000760: 656e 6379 3e0a 2020 3c2f 6465 7065 6e64  ency>.  </depend\n+00000770: 656e 6369 6573 3e0a 3c2f 7072 6f6a 6563  encies>.</projec\n+00000780: 743e 0a                                  t>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-rpc-http/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-rpc-http/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,157 +1,153 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 7063 3c2f 6172 7469 6661 6374  bo-rpc</artifact\n-000004a0: 4964 3e0d 0a20 2020 203c 7665 7273 696f  Id>..    <versio\n-000004b0: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n-000004c0: 6e3e 0d0a 2020 3c2f 7061 7265 6e74 3e0d  n>..  </parent>.\n-000004d0: 0a20 203c 6772 6f75 7049 643e 6f72 672e  .  <groupId>org.\n-000004e0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-000004f0: 6f75 7049 643e 0d0a 2020 3c61 7274 6966  oupId>..  <artif\n-00000500: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n-00000510: 6874 7470 3c2f 6172 7469 6661 6374 4964  http</artifactId\n-00000520: 3e0d 0a20 203c 7665 7273 696f 6e3e 322e  >..  <version>2.\n-00000530: 372e 3130 3c2f 7665 7273 696f 6e3e 0d0a  7.10</version>..\n-00000540: 2020 3c64 6573 6372 6970 7469 6f6e 3e54    <description>T\n-00000550: 6865 204a 534f 4e2d 5250 4320 6d6f 6475  he JSON-RPC modu\n-00000560: 6c65 206f 6620 6475 6262 6f20 7072 6f6a  le of dubbo proj\n-00000570: 6563 743c 2f64 6573 6372 6970 7469 6f6e  ect</description\n-00000580: 3e0d 0a20 203c 6c69 6365 6e73 6573 3e0d  >..  <licenses>.\n-00000590: 0a20 2020 203c 6c69 6365 6e73 653e 0d0a  .    <license>..\n-000005a0: 2020 2020 2020 3c6e 616d 653e 4170 6163        <name>Apac\n-000005b0: 6865 204c 6963 656e 7365 2c20 5665 7273  he License, Vers\n-000005c0: 696f 6e20 322e 303c 2f6e 616d 653e 0d0a  ion 2.0</name>..\n-000005d0: 2020 2020 2020 3c75 726c 3e68 7474 703a        <url>http:\n-000005e0: 2f2f 7777 772e 6170 6163 6865 2e6f 7267  //www.apache.org\n-000005f0: 2f6c 6963 656e 7365 732f 4c49 4345 4e53  /licenses/LICENS\n-00000600: 452d 322e 303c 2f75 726c 3e0d 0a20 2020  E-2.0</url>..   \n-00000610: 2020 203c 6469 7374 7269 6275 7469 6f6e     <distribution\n-00000620: 3e72 6570 6f3c 2f64 6973 7472 6962 7574  >repo</distribut\n-00000630: 696f 6e3e 0d0a 2020 2020 3c2f 6c69 6365  ion>..    </lice\n-00000640: 6e73 653e 0d0a 2020 3c2f 6c69 6365 6e73  nse>..  </licens\n-00000650: 6573 3e0d 0a20 203c 7072 6f70 6572 7469  es>..  <properti\n-00000660: 6573 3e0d 0a20 2020 203c 736b 6970 5f6d  es>..    <skip_m\n-00000670: 6176 656e 5f64 6570 6c6f 793e 6661 6c73  aven_deploy>fals\n-00000680: 653c 2f73 6b69 705f 6d61 7665 6e5f 6465  e</skip_maven_de\n-00000690: 706c 6f79 3e0d 0a20 203c 2f70 726f 7065  ploy>..  </prope\n-000006a0: 7274 6965 733e 0d0a 2020 3c64 6570 656e  rties>..  <depen\n-000006b0: 6465 6e63 6965 733e 0d0a 2020 2020 3c64  dencies>..    <d\n-000006c0: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-000006d0: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n-000006e0: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n-000006f0: 7570 4964 3e0d 0a20 2020 2020 203c 6172  upId>..      <ar\n-00000700: 7469 6661 6374 4964 3e64 7562 626f 2d72  tifactId>dubbo-r\n-00000710: 7063 2d61 7069 3c2f 6172 7469 6661 6374  pc-api</artifact\n-00000720: 4964 3e0d 0a20 2020 2020 203c 7665 7273  Id>..      <vers\n-00000730: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n-00000740: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n-00000750: 6572 7369 6f6e 3e0d 0a20 2020 203c 2f64  ersion>..    </d\n-00000760: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000770: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-00000780: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n-00000790: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-000007a0: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-000007b0: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-000007c0: 2d72 656d 6f74 696e 672d 6874 7470 3c2f  -remoting-http</\n-000007d0: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-000007e0: 2020 203c 7665 7273 696f 6e3e 247b 7072     <version>${pr\n-000007f0: 6f6a 6563 742e 7061 7265 6e74 2e76 6572  oject.parent.ver\n-00000800: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0d  sion}</version>.\n-00000810: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-00000820: 793e 0d0a 2020 2020 3c64 6570 656e 6465  y>..    <depende\n-00000830: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-00000840: 7570 4964 3e6f 7267 2e73 7072 696e 6766  upId>org.springf\n-00000850: 7261 6d65 776f 726b 3c2f 6772 6f75 7049  ramework</groupI\n-00000860: 643e 0d0a 2020 2020 2020 3c61 7274 6966  d>..      <artif\n-00000870: 6163 7449 643e 7370 7269 6e67 2d63 6f6e  actId>spring-con\n-00000880: 7465 7874 3c2f 6172 7469 6661 6374 4964  text</artifactId\n-00000890: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-000008a0: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-000008b0: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-000008c0: 726f 7570 4964 3e63 6f6d 2e67 6974 6875  roupId>com.githu\n-000008d0: 622e 6272 6961 6e64 696c 6c65 792e 6a73  b.briandilley.js\n-000008e0: 6f6e 7270 6334 6a3c 2f67 726f 7570 4964  onrpc4j</groupId\n-000008f0: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-00000900: 6374 4964 3e6a 736f 6e72 7063 346a 3c2f  ctId>jsonrpc4j</\n-00000910: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-00000920: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-00000930: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n-00000940: 0d0a 2020 2020 2020 3c67 726f 7570 4964  ..      <groupId\n-00000950: 3e6a 6176 6178 2e70 6f72 746c 6574 3c2f  >javax.portlet</\n-00000960: 6772 6f75 7049 643e 0d0a 2020 2020 2020  groupId>..      \n-00000970: 3c61 7274 6966 6163 7449 643e 706f 7274  <artifactId>port\n-00000980: 6c65 742d 6170 693c 2f61 7274 6966 6163  let-api</artifac\n-00000990: 7449 643e 0d0a 2020 2020 3c2f 6465 7065  tId>..    </depe\n-000009a0: 6e64 656e 6379 3e0d 0a20 203c 2f64 6570  ndency>..  </dep\n-000009b0: 656e 6465 6e63 6965 733e 0d0a 3c2f 7072  endencies>..</pr\n-000009c0: 6f6a 6563 743e 0d0a                      oject>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 7063  factId>dubbo-rpc\n+00000480: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000490: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n+000004a0: 303c 2f76 6572 7369 6f6e 3e0a 2020 3c2f  0</version>.  </\n+000004b0: 7061 7265 6e74 3e0a 2020 3c67 726f 7570  parent>.  <group\n+000004c0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+000004d0: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+000004e0: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+000004f0: 6f2d 7270 632d 6874 7470 3c2f 6172 7469  o-rpc-http</arti\n+00000500: 6661 6374 4964 3e0a 2020 3c76 6572 7369  factId>.  <versi\n+00000510: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n+00000520: 6f6e 3e0a 2020 3c64 6573 6372 6970 7469  on>.  <descripti\n+00000530: 6f6e 3e54 6865 204a 534f 4e2d 5250 4320  on>The JSON-RPC \n+00000540: 6d6f 6475 6c65 206f 6620 6475 6262 6f20  module of dubbo \n+00000550: 7072 6f6a 6563 743c 2f64 6573 6372 6970  project</descrip\n+00000560: 7469 6f6e 3e0a 2020 3c6c 6963 656e 7365  tion>.  <license\n+00000570: 733e 0a20 2020 203c 6c69 6365 6e73 653e  s>.    <license>\n+00000580: 0a20 2020 2020 203c 6e61 6d65 3e41 7061  .      <name>Apa\n+00000590: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+000005a0: 7369 6f6e 2032 2e30 3c2f 6e61 6d65 3e0a  sion 2.0</name>.\n+000005b0: 2020 2020 2020 3c75 726c 3e68 7474 703a        <url>http:\n+000005c0: 2f2f 7777 772e 6170 6163 6865 2e6f 7267  //www.apache.org\n+000005d0: 2f6c 6963 656e 7365 732f 4c49 4345 4e53  /licenses/LICENS\n+000005e0: 452d 322e 303c 2f75 726c 3e0a 2020 2020  E-2.0</url>.    \n+000005f0: 2020 3c64 6973 7472 6962 7574 696f 6e3e    <distribution>\n+00000600: 7265 706f 3c2f 6469 7374 7269 6275 7469  repo</distributi\n+00000610: 6f6e 3e0a 2020 2020 3c2f 6c69 6365 6e73  on>.    </licens\n+00000620: 653e 0a20 203c 2f6c 6963 656e 7365 733e  e>.  </licenses>\n+00000630: 0a20 203c 7072 6f70 6572 7469 6573 3e0a  .  <properties>.\n+00000640: 2020 2020 3c73 6b69 705f 6d61 7665 6e5f      <skip_maven_\n+00000650: 6465 706c 6f79 3e66 616c 7365 3c2f 736b  deploy>false</sk\n+00000660: 6970 5f6d 6176 656e 5f64 6570 6c6f 793e  ip_maven_deploy>\n+00000670: 0a20 203c 2f70 726f 7065 7274 6965 733e  .  </properties>\n+00000680: 0a20 203c 6465 7065 6e64 656e 6369 6573  .  <dependencies\n+00000690: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+000006a0: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+000006b0: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n+000006c0: 626f 3c2f 6772 6f75 7049 643e 0a20 2020  bo</groupId>.   \n+000006d0: 2020 203c 6172 7469 6661 6374 4964 3e64     <artifactId>d\n+000006e0: 7562 626f 2d72 7063 2d61 7069 3c2f 6172  ubbo-rpc-api</ar\n+000006f0: 7469 6661 6374 4964 3e0a 2020 2020 2020  tifactId>.      \n+00000700: 3c76 6572 7369 6f6e 3e24 7b70 726f 6a65  <version>${proje\n+00000710: 6374 2e70 6172 656e 742e 7665 7273 696f  ct.parent.versio\n+00000720: 6e7d 3c2f 7665 7273 696f 6e3e 0a20 2020  n}</version>.   \n+00000730: 203c 2f64 6570 656e 6465 6e63 793e 0a20   </dependency>. \n+00000740: 2020 203c 6465 7065 6e64 656e 6379 3e0a     <dependency>.\n+00000750: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n+00000760: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n+00000770: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+00000780: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+00000790: 6f2d 7265 6d6f 7469 6e67 2d68 7474 703c  o-remoting-http<\n+000007a0: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+000007b0: 2020 203c 7665 7273 696f 6e3e 247b 7072     <version>${pr\n+000007c0: 6f6a 6563 742e 7061 7265 6e74 2e76 6572  oject.parent.ver\n+000007d0: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a  sion}</version>.\n+000007e0: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+000007f0: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000800: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+00000810: 643e 6f72 672e 7370 7269 6e67 6672 616d  d>org.springfram\n+00000820: 6577 6f72 6b3c 2f67 726f 7570 4964 3e0a  ework</groupId>.\n+00000830: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n+00000840: 643e 7370 7269 6e67 2d63 6f6e 7465 7874  d>spring-context\n+00000850: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000860: 2020 3c2f 6465 7065 6e64 656e 6379 3e0a    </dependency>.\n+00000870: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+00000880: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+00000890: 636f 6d2e 6769 7468 7562 2e62 7269 616e  com.github.brian\n+000008a0: 6469 6c6c 6579 2e6a 736f 6e72 7063 346a  dilley.jsonrpc4j\n+000008b0: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+000008c0: 203c 6172 7469 6661 6374 4964 3e6a 736f   <artifactId>jso\n+000008d0: 6e72 7063 346a 3c2f 6172 7469 6661 6374  nrpc4j</artifact\n+000008e0: 4964 3e0a 2020 2020 3c2f 6465 7065 6e64  Id>.    </depend\n+000008f0: 656e 6379 3e0a 2020 2020 3c64 6570 656e  ency>.    <depen\n+00000900: 6465 6e63 793e 0a20 2020 2020 203c 6772  dency>.      <gr\n+00000910: 6f75 7049 643e 6a61 7661 782e 706f 7274  oupId>javax.port\n+00000920: 6c65 743c 2f67 726f 7570 4964 3e0a 2020  let</groupId>.  \n+00000930: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+00000940: 706f 7274 6c65 742d 6170 693c 2f61 7274  portlet-api</art\n+00000950: 6966 6163 7449 643e 0a20 2020 203c 2f64  ifactId>.    </d\n+00000960: 6570 656e 6465 6e63 793e 0a20 203c 2f64  ependency>.  </d\n+00000970: 6570 656e 6465 6e63 6965 733e 0a3c 2f70  ependencies>.</p\n+00000980: 726f 6a65 6374 3e0a                      roject>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-rpc-rmi/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-rpc-rmi/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,132 +1,128 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 7063 3c2f 6172 7469 6661 6374  bo-rpc</artifact\n-000004a0: 4964 3e0d 0a20 2020 203c 7665 7273 696f  Id>..    <versio\n-000004b0: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n-000004c0: 6e3e 0d0a 2020 3c2f 7061 7265 6e74 3e0d  n>..  </parent>.\n-000004d0: 0a20 203c 6772 6f75 7049 643e 6f72 672e  .  <groupId>org.\n-000004e0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-000004f0: 6f75 7049 643e 0d0a 2020 3c61 7274 6966  oupId>..  <artif\n-00000500: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n-00000510: 726d 693c 2f61 7274 6966 6163 7449 643e  rmi</artifactId>\n-00000520: 0d0a 2020 3c76 6572 7369 6f6e 3e32 2e37  ..  <version>2.7\n-00000530: 2e31 303c 2f76 6572 7369 6f6e 3e0d 0a20  .10</version>.. \n-00000540: 203c 6e61 6d65 3e24 7b70 726f 6a65 6374   <name>${project\n-00000550: 2e61 7274 6966 6163 7449 647d 3c2f 6e61  .artifactId}</na\n-00000560: 6d65 3e0d 0a20 203c 6465 7363 7269 7074  me>..  <descript\n-00000570: 696f 6e3e 5468 6520 726d 6920 7270 6320  ion>The rmi rpc \n-00000580: 6d6f 6475 6c65 206f 6620 6475 6262 6f20  module of dubbo \n-00000590: 7072 6f6a 6563 743c 2f64 6573 6372 6970  project</descrip\n-000005a0: 7469 6f6e 3e0d 0a20 203c 6c69 6365 6e73  tion>..  <licens\n-000005b0: 6573 3e0d 0a20 2020 203c 6c69 6365 6e73  es>..    <licens\n-000005c0: 653e 0d0a 2020 2020 2020 3c6e 616d 653e  e>..      <name>\n-000005d0: 4170 6163 6865 204c 6963 656e 7365 2c20  Apache License, \n-000005e0: 5665 7273 696f 6e20 322e 303c 2f6e 616d  Version 2.0</nam\n-000005f0: 653e 0d0a 2020 2020 2020 3c75 726c 3e68  e>..      <url>h\n-00000600: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n-00000610: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n-00000620: 4345 4e53 452d 322e 303c 2f75 726c 3e0d  CENSE-2.0</url>.\n-00000630: 0a20 2020 2020 203c 6469 7374 7269 6275  .      <distribu\n-00000640: 7469 6f6e 3e72 6570 6f3c 2f64 6973 7472  tion>repo</distr\n-00000650: 6962 7574 696f 6e3e 0d0a 2020 2020 3c2f  ibution>..    </\n-00000660: 6c69 6365 6e73 653e 0d0a 2020 3c2f 6c69  license>..  </li\n-00000670: 6365 6e73 6573 3e0d 0a20 203c 7072 6f70  censes>..  <prop\n-00000680: 6572 7469 6573 3e0d 0a20 2020 203c 736b  erties>..    <sk\n-00000690: 6970 5f6d 6176 656e 5f64 6570 6c6f 793e  ip_maven_deploy>\n-000006a0: 6661 6c73 653c 2f73 6b69 705f 6d61 7665  false</skip_mave\n-000006b0: 6e5f 6465 706c 6f79 3e0d 0a20 203c 2f70  n_deploy>..  </p\n-000006c0: 726f 7065 7274 6965 733e 0d0a 2020 3c64  roperties>..  <d\n-000006d0: 6570 656e 6465 6e63 6965 733e 0d0a 2020  ependencies>..  \n-000006e0: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-000006f0: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n-00000700: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000710: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-00000720: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000730: 626f 2d72 7063 2d61 7069 3c2f 6172 7469  bo-rpc-api</arti\n-00000740: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-00000750: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n-00000760: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n-00000770: 7d3c 2f76 6572 7369 6f6e 3e0d 0a20 2020  }</version>..   \n-00000780: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-00000790: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n-000007a0: 0d0a 2020 2020 2020 3c67 726f 7570 4964  ..      <groupId\n-000007b0: 3e6f 7267 2e73 7072 696e 6766 7261 6d65  >org.springframe\n-000007c0: 776f 726b 3c2f 6772 6f75 7049 643e 0d0a  work</groupId>..\n-000007d0: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n-000007e0: 643e 7370 7269 6e67 2d63 6f6e 7465 7874  d>spring-context\n-000007f0: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000800: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n-00000810: 0d0a 2020 3c2f 6465 7065 6e64 656e 6369  ..  </dependenci\n-00000820: 6573 3e0d 0a3c 2f70 726f 6a65 6374 3e0d  es>..</project>.\n-00000830: 0a                                       .\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 7063  factId>dubbo-rpc\n+00000480: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000490: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n+000004a0: 303c 2f76 6572 7369 6f6e 3e0a 2020 3c2f  0</version>.  </\n+000004b0: 7061 7265 6e74 3e0a 2020 3c67 726f 7570  parent>.  <group\n+000004c0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+000004d0: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+000004e0: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+000004f0: 6f2d 7270 632d 726d 693c 2f61 7274 6966  o-rpc-rmi</artif\n+00000500: 6163 7449 643e 0a20 203c 7665 7273 696f  actId>.  <versio\n+00000510: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n+00000520: 6e3e 0a20 203c 6e61 6d65 3e24 7b70 726f  n>.  <name>${pro\n+00000530: 6a65 6374 2e61 7274 6966 6163 7449 647d  ject.artifactId}\n+00000540: 3c2f 6e61 6d65 3e0a 2020 3c64 6573 6372  </name>.  <descr\n+00000550: 6970 7469 6f6e 3e54 6865 2072 6d69 2072  iption>The rmi r\n+00000560: 7063 206d 6f64 756c 6520 6f66 2064 7562  pc module of dub\n+00000570: 626f 2070 726f 6a65 6374 3c2f 6465 7363  bo project</desc\n+00000580: 7269 7074 696f 6e3e 0a20 203c 6c69 6365  ription>.  <lice\n+00000590: 6e73 6573 3e0a 2020 2020 3c6c 6963 656e  nses>.    <licen\n+000005a0: 7365 3e0a 2020 2020 2020 3c6e 616d 653e  se>.      <name>\n+000005b0: 4170 6163 6865 204c 6963 656e 7365 2c20  Apache License, \n+000005c0: 5665 7273 696f 6e20 322e 303c 2f6e 616d  Version 2.0</nam\n+000005d0: 653e 0a20 2020 2020 203c 7572 6c3e 6874  e>.      <url>ht\n+000005e0: 7470 3a2f 2f77 7777 2e61 7061 6368 652e  tp://www.apache.\n+000005f0: 6f72 672f 6c69 6365 6e73 6573 2f4c 4943  org/licenses/LIC\n+00000600: 454e 5345 2d32 2e30 3c2f 7572 6c3e 0a20  ENSE-2.0</url>. \n+00000610: 2020 2020 203c 6469 7374 7269 6275 7469       <distributi\n+00000620: 6f6e 3e72 6570 6f3c 2f64 6973 7472 6962  on>repo</distrib\n+00000630: 7574 696f 6e3e 0a20 2020 203c 2f6c 6963  ution>.    </lic\n+00000640: 656e 7365 3e0a 2020 3c2f 6c69 6365 6e73  ense>.  </licens\n+00000650: 6573 3e0a 2020 3c70 726f 7065 7274 6965  es>.  <propertie\n+00000660: 733e 0a20 2020 203c 736b 6970 5f6d 6176  s>.    <skip_mav\n+00000670: 656e 5f64 6570 6c6f 793e 6661 6c73 653c  en_deploy>false<\n+00000680: 2f73 6b69 705f 6d61 7665 6e5f 6465 706c  /skip_maven_depl\n+00000690: 6f79 3e0a 2020 3c2f 7072 6f70 6572 7469  oy>.  </properti\n+000006a0: 6573 3e0a 2020 3c64 6570 656e 6465 6e63  es>.  <dependenc\n+000006b0: 6965 733e 0a20 2020 203c 6465 7065 6e64  ies>.    <depend\n+000006c0: 656e 6379 3e0a 2020 2020 2020 3c67 726f  ency>.      <gro\n+000006d0: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n+000006e0: 6475 6262 6f3c 2f67 726f 7570 4964 3e0a  dubbo</groupId>.\n+000006f0: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n+00000700: 643e 6475 6262 6f2d 7270 632d 6170 693c  d>dubbo-rpc-api<\n+00000710: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+00000720: 2020 203c 7665 7273 696f 6e3e 247b 7072     <version>${pr\n+00000730: 6f6a 6563 742e 7061 7265 6e74 2e76 6572  oject.parent.ver\n+00000740: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a  sion}</version>.\n+00000750: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000760: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000770: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+00000780: 643e 6f72 672e 7370 7269 6e67 6672 616d  d>org.springfram\n+00000790: 6577 6f72 6b3c 2f67 726f 7570 4964 3e0a  ework</groupId>.\n+000007a0: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n+000007b0: 643e 7370 7269 6e67 2d63 6f6e 7465 7874  d>spring-context\n+000007c0: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+000007d0: 2020 3c2f 6465 7065 6e64 656e 6379 3e0a    </dependency>.\n+000007e0: 2020 3c2f 6465 7065 6e64 656e 6369 6573    </dependencies\n+000007f0: 3e0a 3c2f 7072 6f6a 6563 743e 0a         >.</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-rpc-hessian/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-rpc-hessian/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,174 +1,169 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 7063 3c2f 6172 7469 6661 6374  bo-rpc</artifact\n-000004a0: 4964 3e0d 0a20 2020 203c 7665 7273 696f  Id>..    <versio\n-000004b0: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n-000004c0: 6e3e 0d0a 2020 3c2f 7061 7265 6e74 3e0d  n>..  </parent>.\n-000004d0: 0a20 203c 6772 6f75 7049 643e 6f72 672e  .  <groupId>org.\n-000004e0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-000004f0: 6f75 7049 643e 0d0a 2020 3c61 7274 6966  oupId>..  <artif\n-00000500: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n-00000510: 6865 7373 6961 6e3c 2f61 7274 6966 6163  hessian</artifac\n-00000520: 7449 643e 0d0a 2020 3c76 6572 7369 6f6e  tId>..  <version\n-00000530: 3e32 2e37 2e31 303c 2f76 6572 7369 6f6e  >2.7.10</version\n-00000540: 3e0d 0a20 203c 6e61 6d65 3e24 7b70 726f  >..  <name>${pro\n-00000550: 6a65 6374 2e61 7274 6966 6163 7449 647d  ject.artifactId}\n-00000560: 3c2f 6e61 6d65 3e0d 0a20 203c 6465 7363  </name>..  <desc\n-00000570: 7269 7074 696f 6e3e 5468 6520 6865 7373  ription>The hess\n-00000580: 6961 6e20 7270 6320 6d6f 6475 6c65 206f  ian rpc module o\n-00000590: 6620 6475 6262 6f20 7072 6f6a 6563 743c  f dubbo project<\n-000005a0: 2f64 6573 6372 6970 7469 6f6e 3e0d 0a20  /description>.. \n-000005b0: 203c 6c69 6365 6e73 6573 3e0d 0a20 2020   <licenses>..   \n-000005c0: 203c 6c69 6365 6e73 653e 0d0a 2020 2020   <license>..    \n-000005d0: 2020 3c6e 616d 653e 4170 6163 6865 204c    <name>Apache L\n-000005e0: 6963 656e 7365 2c20 5665 7273 696f 6e20  icense, Version \n-000005f0: 322e 303c 2f6e 616d 653e 0d0a 2020 2020  2.0</name>..    \n-00000600: 2020 3c75 726c 3e68 7474 703a 2f2f 7777    <url>http://ww\n-00000610: 772e 6170 6163 6865 2e6f 7267 2f6c 6963  w.apache.org/lic\n-00000620: 656e 7365 732f 4c49 4345 4e53 452d 322e  enses/LICENSE-2.\n-00000630: 303c 2f75 726c 3e0d 0a20 2020 2020 203c  0</url>..      <\n-00000640: 6469 7374 7269 6275 7469 6f6e 3e72 6570  distribution>rep\n-00000650: 6f3c 2f64 6973 7472 6962 7574 696f 6e3e  o</distribution>\n-00000660: 0d0a 2020 2020 3c2f 6c69 6365 6e73 653e  ..    </license>\n-00000670: 0d0a 2020 3c2f 6c69 6365 6e73 6573 3e0d  ..  </licenses>.\n-00000680: 0a20 203c 7072 6f70 6572 7469 6573 3e0d  .  <properties>.\n-00000690: 0a20 2020 203c 736b 6970 5f6d 6176 656e  .    <skip_maven\n-000006a0: 5f64 6570 6c6f 793e 6661 6c73 653c 2f73  _deploy>false</s\n-000006b0: 6b69 705f 6d61 7665 6e5f 6465 706c 6f79  kip_maven_deploy\n-000006c0: 3e0d 0a20 203c 2f70 726f 7065 7274 6965  >..  </propertie\n-000006d0: 733e 0d0a 2020 3c64 6570 656e 6465 6e63  s>..  <dependenc\n-000006e0: 6965 733e 0d0a 2020 2020 3c64 6570 656e  ies>..    <depen\n-000006f0: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-00000700: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n-00000710: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n-00000720: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-00000730: 6374 4964 3e64 7562 626f 2d72 7063 2d61  ctId>dubbo-rpc-a\n-00000740: 7069 3c2f 6172 7469 6661 6374 4964 3e0d  pi</artifactId>.\n-00000750: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n-00000760: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n-00000770: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n-00000780: 6f6e 3e0d 0a20 2020 203c 2f64 6570 656e  on>..    </depen\n-00000790: 6465 6e63 793e 0d0a 2020 2020 3c64 6570  dency>..    <dep\n-000007a0: 656e 6465 6e63 793e 0d0a 2020 2020 2020  endency>..      \n-000007b0: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n-000007c0: 6368 652e 6475 6262 6f3c 2f67 726f 7570  che.dubbo</group\n-000007d0: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-000007e0: 6661 6374 4964 3e64 7562 626f 2d72 656d  factId>dubbo-rem\n-000007f0: 6f74 696e 672d 6874 7470 3c2f 6172 7469  oting-http</arti\n-00000800: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-00000810: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n-00000820: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n-00000830: 7d3c 2f76 6572 7369 6f6e 3e0d 0a20 2020  }</version>..   \n-00000840: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-00000850: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n-00000860: 0d0a 2020 2020 2020 3c67 726f 7570 4964  ..      <groupId\n-00000870: 3e63 6f6d 2e63 6175 6368 6f3c 2f67 726f  >com.caucho</gro\n-00000880: 7570 4964 3e0d 0a20 2020 2020 203c 6172  upId>..      <ar\n-00000890: 7469 6661 6374 4964 3e68 6573 7369 616e  tifactId>hessian\n-000008a0: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-000008b0: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n-000008c0: 0d0a 2020 2020 3c64 6570 656e 6465 6e63  ..    <dependenc\n-000008d0: 793e 0d0a 2020 2020 2020 3c67 726f 7570  y>..      <group\n-000008e0: 4964 3e6f 7267 2e61 7061 6368 652e 6874  Id>org.apache.ht\n-000008f0: 7470 636f 6d70 6f6e 656e 7473 3c2f 6772  tpcomponents</gr\n-00000900: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-00000910: 7274 6966 6163 7449 643e 6874 7470 636c  rtifactId>httpcl\n-00000920: 6965 6e74 3c2f 6172 7469 6661 6374 4964  ient</artifactId\n-00000930: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-00000940: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-00000950: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-00000960: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n-00000970: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n-00000980: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-00000990: 6374 4964 3e64 7562 626f 2d73 6572 6961  ctId>dubbo-seria\n-000009a0: 6c69 7a61 7469 6f6e 2d6a 646b 3c2f 6172  lization-jdk</ar\n-000009b0: 7469 6661 6374 4964 3e0d 0a20 2020 2020  tifactId>..     \n-000009c0: 203c 7665 7273 696f 6e3e 247b 7072 6f6a   <version>${proj\n-000009d0: 6563 742e 7061 7265 6e74 2e76 6572 7369  ect.parent.versi\n-000009e0: 6f6e 7d3c 2f76 6572 7369 6f6e 3e0d 0a20  on}</version>.. \n-000009f0: 2020 2020 203c 7363 6f70 653e 7465 7374       <scope>test\n-00000a00: 3c2f 7363 6f70 653e 0d0a 2020 2020 3c2f  </scope>..    </\n-00000a10: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000a20: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-00000a30: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n-00000a40: 672e 7370 7269 6e67 6672 616d 6577 6f72  g.springframewor\n-00000a50: 6b3c 2f67 726f 7570 4964 3e0d 0a20 2020  k</groupId>..   \n-00000a60: 2020 203c 6172 7469 6661 6374 4964 3e73     <artifactId>s\n-00000a70: 7072 696e 672d 7465 7374 3c2f 6172 7469  pring-test</arti\n-00000a80: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-00000a90: 7363 6f70 653e 7465 7374 3c2f 7363 6f70  scope>test</scop\n-00000aa0: 653e 0d0a 2020 2020 3c2f 6465 7065 6e64  e>..    </depend\n-00000ab0: 656e 6379 3e0d 0a20 203c 2f64 6570 656e  ency>..  </depen\n-00000ac0: 6465 6e63 6965 733e 0d0a 3c2f 7072 6f6a  dencies>..</proj\n-00000ad0: 6563 743e 0d0a                           ect>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 7063  factId>dubbo-rpc\n+00000480: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000490: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n+000004a0: 303c 2f76 6572 7369 6f6e 3e0a 2020 3c2f  0</version>.  </\n+000004b0: 7061 7265 6e74 3e0a 2020 3c67 726f 7570  parent>.  <group\n+000004c0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+000004d0: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+000004e0: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+000004f0: 6f2d 7270 632d 6865 7373 6961 6e3c 2f61  o-rpc-hessian</a\n+00000500: 7274 6966 6163 7449 643e 0a20 203c 7665  rtifactId>.  <ve\n+00000510: 7273 696f 6e3e 322e 372e 3130 3c2f 7665  rsion>2.7.10</ve\n+00000520: 7273 696f 6e3e 0a20 203c 6e61 6d65 3e24  rsion>.  <name>$\n+00000530: 7b70 726f 6a65 6374 2e61 7274 6966 6163  {project.artifac\n+00000540: 7449 647d 3c2f 6e61 6d65 3e0a 2020 3c64  tId}</name>.  <d\n+00000550: 6573 6372 6970 7469 6f6e 3e54 6865 2068  escription>The h\n+00000560: 6573 7369 616e 2072 7063 206d 6f64 756c  essian rpc modul\n+00000570: 6520 6f66 2064 7562 626f 2070 726f 6a65  e of dubbo proje\n+00000580: 6374 3c2f 6465 7363 7269 7074 696f 6e3e  ct</description>\n+00000590: 0a20 203c 6c69 6365 6e73 6573 3e0a 2020  .  <licenses>.  \n+000005a0: 2020 3c6c 6963 656e 7365 3e0a 2020 2020    <license>.    \n+000005b0: 2020 3c6e 616d 653e 4170 6163 6865 204c    <name>Apache L\n+000005c0: 6963 656e 7365 2c20 5665 7273 696f 6e20  icense, Version \n+000005d0: 322e 303c 2f6e 616d 653e 0a20 2020 2020  2.0</name>.     \n+000005e0: 203c 7572 6c3e 6874 7470 3a2f 2f77 7777   <url>http://www\n+000005f0: 2e61 7061 6368 652e 6f72 672f 6c69 6365  .apache.org/lice\n+00000600: 6e73 6573 2f4c 4943 454e 5345 2d32 2e30  nses/LICENSE-2.0\n+00000610: 3c2f 7572 6c3e 0a20 2020 2020 203c 6469  </url>.      <di\n+00000620: 7374 7269 6275 7469 6f6e 3e72 6570 6f3c  stribution>repo<\n+00000630: 2f64 6973 7472 6962 7574 696f 6e3e 0a20  /distribution>. \n+00000640: 2020 203c 2f6c 6963 656e 7365 3e0a 2020     </license>.  \n+00000650: 3c2f 6c69 6365 6e73 6573 3e0a 2020 3c70  </licenses>.  <p\n+00000660: 726f 7065 7274 6965 733e 0a20 2020 203c  roperties>.    <\n+00000670: 736b 6970 5f6d 6176 656e 5f64 6570 6c6f  skip_maven_deplo\n+00000680: 793e 6661 6c73 653c 2f73 6b69 705f 6d61  y>false</skip_ma\n+00000690: 7665 6e5f 6465 706c 6f79 3e0a 2020 3c2f  ven_deploy>.  </\n+000006a0: 7072 6f70 6572 7469 6573 3e0a 2020 3c64  properties>.  <d\n+000006b0: 6570 656e 6465 6e63 6965 733e 0a20 2020  ependencies>.   \n+000006c0: 203c 6465 7065 6e64 656e 6379 3e0a 2020   <dependency>.  \n+000006d0: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n+000006e0: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n+000006f0: 726f 7570 4964 3e0a 2020 2020 2020 3c61  roupId>.      <a\n+00000700: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n+00000710: 7270 632d 6170 693c 2f61 7274 6966 6163  rpc-api</artifac\n+00000720: 7449 643e 0a20 2020 2020 203c 7665 7273  tId>.      <vers\n+00000730: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n+00000740: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n+00000750: 6572 7369 6f6e 3e0a 2020 2020 3c2f 6465  ersion>.    </de\n+00000760: 7065 6e64 656e 6379 3e0a 2020 2020 3c64  pendency>.    <d\n+00000770: 6570 656e 6465 6e63 793e 0a20 2020 2020  ependency>.     \n+00000780: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000790: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+000007a0: 7049 643e 0a20 2020 2020 203c 6172 7469  pId>.      <arti\n+000007b0: 6661 6374 4964 3e64 7562 626f 2d72 656d  factId>dubbo-rem\n+000007c0: 6f74 696e 672d 6874 7470 3c2f 6172 7469  oting-http</arti\n+000007d0: 6661 6374 4964 3e0a 2020 2020 2020 3c76  factId>.      <v\n+000007e0: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n+000007f0: 2e70 6172 656e 742e 7665 7273 696f 6e7d  .parent.version}\n+00000800: 3c2f 7665 7273 696f 6e3e 0a20 2020 203c  </version>.    <\n+00000810: 2f64 6570 656e 6465 6e63 793e 0a20 2020  /dependency>.   \n+00000820: 203c 6465 7065 6e64 656e 6379 3e0a 2020   <dependency>.  \n+00000830: 2020 2020 3c67 726f 7570 4964 3e63 6f6d      <groupId>com\n+00000840: 2e63 6175 6368 6f3c 2f67 726f 7570 4964  .caucho</groupId\n+00000850: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+00000860: 7449 643e 6865 7373 6961 6e3c 2f61 7274  tId>hessian</art\n+00000870: 6966 6163 7449 643e 0a20 2020 203c 2f64  ifactId>.    </d\n+00000880: 6570 656e 6465 6e63 793e 0a20 2020 203c  ependency>.    <\n+00000890: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+000008a0: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+000008b0: 7061 6368 652e 6874 7470 636f 6d70 6f6e  pache.httpcompon\n+000008c0: 656e 7473 3c2f 6772 6f75 7049 643e 0a20  ents</groupId>. \n+000008d0: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n+000008e0: 3e68 7474 7063 6c69 656e 743c 2f61 7274  >httpclient</art\n+000008f0: 6966 6163 7449 643e 0a20 2020 203c 2f64  ifactId>.    </d\n+00000900: 6570 656e 6465 6e63 793e 0a20 2020 203c  ependency>.    <\n+00000910: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000920: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+00000930: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n+00000940: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000950: 6966 6163 7449 643e 6475 6262 6f2d 7365  ifactId>dubbo-se\n+00000960: 7269 616c 697a 6174 696f 6e2d 6a64 6b3c  rialization-jdk<\n+00000970: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+00000980: 2020 203c 7665 7273 696f 6e3e 247b 7072     <version>${pr\n+00000990: 6f6a 6563 742e 7061 7265 6e74 2e76 6572  oject.parent.ver\n+000009a0: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a  sion}</version>.\n+000009b0: 2020 2020 2020 3c73 636f 7065 3e74 6573        <scope>tes\n+000009c0: 743c 2f73 636f 7065 3e0a 2020 2020 3c2f  t</scope>.    </\n+000009d0: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+000009e0: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+000009f0: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000a00: 7370 7269 6e67 6672 616d 6577 6f72 6b3c  springframework<\n+00000a10: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+00000a20: 3c61 7274 6966 6163 7449 643e 7370 7269  <artifactId>spri\n+00000a30: 6e67 2d74 6573 743c 2f61 7274 6966 6163  ng-test</artifac\n+00000a40: 7449 643e 0a20 2020 2020 203c 7363 6f70  tId>.      <scop\n+00000a50: 653e 7465 7374 3c2f 7363 6f70 653e 0a20  e>test</scope>. \n+00000a60: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+00000a70: 0a20 203c 2f64 6570 656e 6465 6e63 6965  .  </dependencie\n+00000a80: 733e 0a3c 2f70 726f 6a65 6374 3e0a       s>.</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-rpc-webservice/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-rpc-webservice/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,200 +1,194 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 7063 3c2f 6172 7469 6661 6374  bo-rpc</artifact\n-000004a0: 4964 3e0d 0a20 2020 203c 7665 7273 696f  Id>..    <versio\n-000004b0: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n-000004c0: 6e3e 0d0a 2020 3c2f 7061 7265 6e74 3e0d  n>..  </parent>.\n-000004d0: 0a20 203c 6772 6f75 7049 643e 6f72 672e  .  <groupId>org.\n-000004e0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-000004f0: 6f75 7049 643e 0d0a 2020 3c61 7274 6966  oupId>..  <artif\n-00000500: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n-00000510: 7765 6273 6572 7669 6365 3c2f 6172 7469  webservice</arti\n-00000520: 6661 6374 4964 3e0d 0a20 203c 7665 7273  factId>..  <vers\n-00000530: 696f 6e3e 322e 372e 3130 3c2f 7665 7273  ion>2.7.10</vers\n-00000540: 696f 6e3e 0d0a 2020 3c6e 616d 653e 247b  ion>..  <name>${\n-00000550: 7072 6f6a 6563 742e 6172 7469 6661 6374  project.artifact\n-00000560: 4964 7d3c 2f6e 616d 653e 0d0a 2020 3c64  Id}</name>..  <d\n-00000570: 6573 6372 6970 7469 6f6e 3e54 6865 2077  escription>The w\n-00000580: 6562 7365 7276 6963 6520 7270 6320 6d6f  ebservice rpc mo\n-00000590: 6475 6c65 206f 6620 6475 6262 6f20 7072  dule of dubbo pr\n-000005a0: 6f6a 6563 743c 2f64 6573 6372 6970 7469  oject</descripti\n-000005b0: 6f6e 3e0d 0a20 203c 6c69 6365 6e73 6573  on>..  <licenses\n-000005c0: 3e0d 0a20 2020 203c 6c69 6365 6e73 653e  >..    <license>\n-000005d0: 0d0a 2020 2020 2020 3c6e 616d 653e 4170  ..      <name>Ap\n-000005e0: 6163 6865 204c 6963 656e 7365 2c20 5665  ache License, Ve\n-000005f0: 7273 696f 6e20 322e 303c 2f6e 616d 653e  rsion 2.0</name>\n-00000600: 0d0a 2020 2020 2020 3c75 726c 3e68 7474  ..      <url>htt\n-00000610: 703a 2f2f 7777 772e 6170 6163 6865 2e6f  p://www.apache.o\n-00000620: 7267 2f6c 6963 656e 7365 732f 4c49 4345  rg/licenses/LICE\n-00000630: 4e53 452d 322e 303c 2f75 726c 3e0d 0a20  NSE-2.0</url>.. \n-00000640: 2020 2020 203c 6469 7374 7269 6275 7469       <distributi\n-00000650: 6f6e 3e72 6570 6f3c 2f64 6973 7472 6962  on>repo</distrib\n-00000660: 7574 696f 6e3e 0d0a 2020 2020 3c2f 6c69  ution>..    </li\n-00000670: 6365 6e73 653e 0d0a 2020 3c2f 6c69 6365  cense>..  </lice\n-00000680: 6e73 6573 3e0d 0a20 203c 7072 6f70 6572  nses>..  <proper\n-00000690: 7469 6573 3e0d 0a20 2020 203c 736b 6970  ties>..    <skip\n-000006a0: 5f6d 6176 656e 5f64 6570 6c6f 793e 6661  _maven_deploy>fa\n-000006b0: 6c73 653c 2f73 6b69 705f 6d61 7665 6e5f  lse</skip_maven_\n-000006c0: 6465 706c 6f79 3e0d 0a20 203c 2f70 726f  deploy>..  </pro\n-000006d0: 7065 7274 6965 733e 0d0a 2020 3c64 6570  perties>..  <dep\n-000006e0: 656e 6465 6e63 6965 733e 0d0a 2020 2020  endencies>..    \n-000006f0: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-00000700: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n-00000710: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-00000720: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-00000730: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000740: 2d72 7063 2d61 7069 3c2f 6172 7469 6661  -rpc-api</artifa\n-00000750: 6374 4964 3e0d 0a20 2020 2020 203c 7665  ctId>..      <ve\n-00000760: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n-00000770: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n-00000780: 2f76 6572 7369 6f6e 3e0d 0a20 2020 203c  /version>..    <\n-00000790: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-000007a0: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-000007b0: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n-000007c0: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-000007d0: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-000007e0: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-000007f0: 626f 2d72 656d 6f74 696e 672d 6874 7470  bo-remoting-http\n-00000800: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000810: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n-00000820: 7072 6f6a 6563 742e 7061 7265 6e74 2e76  project.parent.v\n-00000830: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n-00000840: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-00000850: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-00000860: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-00000870: 726f 7570 4964 3e6a 6176 6178 2e78 6d6c  roupId>javax.xml\n-00000880: 2e62 696e 643c 2f67 726f 7570 4964 3e0d  .bind</groupId>.\n-00000890: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-000008a0: 4964 3e6a 6178 622d 6170 693c 2f61 7274  Id>jaxb-api</art\n-000008b0: 6966 6163 7449 643e 0d0a 2020 2020 3c2f  ifactId>..    </\n-000008c0: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-000008d0: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-000008e0: 2020 2020 203c 6772 6f75 7049 643e 636f       <groupId>co\n-000008f0: 6d2e 7375 6e2e 786d 6c2e 6269 6e64 3c2f  m.sun.xml.bind</\n-00000900: 6772 6f75 7049 643e 0d0a 2020 2020 2020  groupId>..      \n-00000910: 3c61 7274 6966 6163 7449 643e 6a61 7862  <artifactId>jaxb\n-00000920: 2d69 6d70 6c3c 2f61 7274 6966 6163 7449  -impl</artifactI\n-00000930: 643e 0d0a 2020 2020 3c2f 6465 7065 6e64  d>..    </depend\n-00000940: 656e 6379 3e0d 0a20 2020 203c 6465 7065  ency>..    <depe\n-00000950: 6e64 656e 6379 3e0d 0a20 2020 2020 203c  ndency>..      <\n-00000960: 6772 6f75 7049 643e 636f 6d2e 7375 6e2e  groupId>com.sun.\n-00000970: 786d 6c2e 6269 6e64 3c2f 6772 6f75 7049  xml.bind</groupI\n-00000980: 643e 0d0a 2020 2020 2020 3c61 7274 6966  d>..      <artif\n-00000990: 6163 7449 643e 6a61 7862 2d63 6f72 653c  actId>jaxb-core<\n-000009a0: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-000009b0: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-000009c0: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-000009d0: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-000009e0: 643e 6a61 7661 782e 6163 7469 7661 7469  d>javax.activati\n-000009f0: 6f6e 3c2f 6772 6f75 7049 643e 0d0a 2020  on</groupId>..  \n-00000a00: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-00000a10: 6a61 7661 782e 6163 7469 7661 7469 6f6e  javax.activation\n-00000a20: 2d61 7069 3c2f 6172 7469 6661 6374 4964  -api</artifactId\n-00000a30: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-00000a40: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-00000a50: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-00000a60: 726f 7570 4964 3e63 6f6d 2e73 756e 2e61  roupId>com.sun.a\n-00000a70: 6374 6976 6174 696f 6e3c 2f67 726f 7570  ctivation</group\n-00000a80: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-00000a90: 6661 6374 4964 3e6a 6176 6178 2e61 6374  factId>javax.act\n-00000aa0: 6976 6174 696f 6e3c 2f61 7274 6966 6163  ivation</artifac\n-00000ab0: 7449 643e 0d0a 2020 2020 3c2f 6465 7065  tId>..    </depe\n-00000ac0: 6e64 656e 6379 3e0d 0a20 2020 203c 6465  ndency>..    <de\n-00000ad0: 7065 6e64 656e 6379 3e0d 0a20 2020 2020  pendency>..     \n-00000ae0: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n-00000af0: 6163 6865 2e63 7866 3c2f 6772 6f75 7049  ache.cxf</groupI\n-00000b00: 643e 0d0a 2020 2020 2020 3c61 7274 6966  d>..      <artif\n-00000b10: 6163 7449 643e 6378 662d 7274 2d66 726f  actId>cxf-rt-fro\n-00000b20: 6e74 656e 642d 7369 6d70 6c65 3c2f 6172  ntend-simple</ar\n-00000b30: 7469 6661 6374 4964 3e0d 0a20 2020 203c  tifactId>..    <\n-00000b40: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-00000b50: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-00000b60: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n-00000b70: 7267 2e61 7061 6368 652e 6378 663c 2f67  rg.apache.cxf</g\n-00000b80: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-00000b90: 6172 7469 6661 6374 4964 3e63 7866 2d72  artifactId>cxf-r\n-00000ba0: 742d 7472 616e 7370 6f72 7473 2d68 7474  t-transports-htt\n-00000bb0: 703c 2f61 7274 6966 6163 7449 643e 0d0a  p</artifactId>..\n-00000bc0: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n-00000bd0: 3e0d 0a20 2020 203c 6465 7065 6e64 656e  >..    <dependen\n-00000be0: 6379 3e0d 0a20 2020 2020 203c 6772 6f75  cy>..      <grou\n-00000bf0: 7049 643e 6f72 672e 7370 7269 6e67 6672  pId>org.springfr\n-00000c00: 616d 6577 6f72 6b3c 2f67 726f 7570 4964  amework</groupId\n-00000c10: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-00000c20: 6374 4964 3e73 7072 696e 672d 636f 6e74  ctId>spring-cont\n-00000c30: 6578 743c 2f61 7274 6966 6163 7449 643e  ext</artifactId>\n-00000c40: 0d0a 2020 2020 3c2f 6465 7065 6e64 656e  ..    </dependen\n-00000c50: 6379 3e0d 0a20 203c 2f64 6570 656e 6465  cy>..  </depende\n-00000c60: 6e63 6965 733e 0d0a 3c2f 7072 6f6a 6563  ncies>..</projec\n-00000c70: 743e 0d0a                                t>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 7063  factId>dubbo-rpc\n+00000480: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000490: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n+000004a0: 303c 2f76 6572 7369 6f6e 3e0a 2020 3c2f  0</version>.  </\n+000004b0: 7061 7265 6e74 3e0a 2020 3c67 726f 7570  parent>.  <group\n+000004c0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+000004d0: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+000004e0: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+000004f0: 6f2d 7270 632d 7765 6273 6572 7669 6365  o-rpc-webservice\n+00000500: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000510: 3c76 6572 7369 6f6e 3e32 2e37 2e31 303c  <version>2.7.10<\n+00000520: 2f76 6572 7369 6f6e 3e0a 2020 3c6e 616d  /version>.  <nam\n+00000530: 653e 247b 7072 6f6a 6563 742e 6172 7469  e>${project.arti\n+00000540: 6661 6374 4964 7d3c 2f6e 616d 653e 0a20  factId}</name>. \n+00000550: 203c 6465 7363 7269 7074 696f 6e3e 5468   <description>Th\n+00000560: 6520 7765 6273 6572 7669 6365 2072 7063  e webservice rpc\n+00000570: 206d 6f64 756c 6520 6f66 2064 7562 626f   module of dubbo\n+00000580: 2070 726f 6a65 6374 3c2f 6465 7363 7269   project</descri\n+00000590: 7074 696f 6e3e 0a20 203c 6c69 6365 6e73  ption>.  <licens\n+000005a0: 6573 3e0a 2020 2020 3c6c 6963 656e 7365  es>.    <license\n+000005b0: 3e0a 2020 2020 2020 3c6e 616d 653e 4170  >.      <name>Ap\n+000005c0: 6163 6865 204c 6963 656e 7365 2c20 5665  ache License, Ve\n+000005d0: 7273 696f 6e20 322e 303c 2f6e 616d 653e  rsion 2.0</name>\n+000005e0: 0a20 2020 2020 203c 7572 6c3e 6874 7470  .      <url>http\n+000005f0: 3a2f 2f77 7777 2e61 7061 6368 652e 6f72  ://www.apache.or\n+00000600: 672f 6c69 6365 6e73 6573 2f4c 4943 454e  g/licenses/LICEN\n+00000610: 5345 2d32 2e30 3c2f 7572 6c3e 0a20 2020  SE-2.0</url>.   \n+00000620: 2020 203c 6469 7374 7269 6275 7469 6f6e     <distribution\n+00000630: 3e72 6570 6f3c 2f64 6973 7472 6962 7574  >repo</distribut\n+00000640: 696f 6e3e 0a20 2020 203c 2f6c 6963 656e  ion>.    </licen\n+00000650: 7365 3e0a 2020 3c2f 6c69 6365 6e73 6573  se>.  </licenses\n+00000660: 3e0a 2020 3c70 726f 7065 7274 6965 733e  >.  <properties>\n+00000670: 0a20 2020 203c 736b 6970 5f6d 6176 656e  .    <skip_maven\n+00000680: 5f64 6570 6c6f 793e 6661 6c73 653c 2f73  _deploy>false</s\n+00000690: 6b69 705f 6d61 7665 6e5f 6465 706c 6f79  kip_maven_deploy\n+000006a0: 3e0a 2020 3c2f 7072 6f70 6572 7469 6573  >.  </properties\n+000006b0: 3e0a 2020 3c64 6570 656e 6465 6e63 6965  >.  <dependencie\n+000006c0: 733e 0a20 2020 203c 6465 7065 6e64 656e  s>.    <dependen\n+000006d0: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+000006e0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+000006f0: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000700: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+00000710: 6475 6262 6f2d 7270 632d 6170 693c 2f61  dubbo-rpc-api</a\n+00000720: 7274 6966 6163 7449 643e 0a20 2020 2020  rtifactId>.     \n+00000730: 203c 7665 7273 696f 6e3e 247b 7072 6f6a   <version>${proj\n+00000740: 6563 742e 7061 7265 6e74 2e76 6572 7369  ect.parent.versi\n+00000750: 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a 2020  on}</version>.  \n+00000760: 2020 3c2f 6465 7065 6e64 656e 6379 3e0a    </dependency>.\n+00000770: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+00000780: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+00000790: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+000007a0: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+000007b0: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+000007c0: 626f 2d72 656d 6f74 696e 672d 6874 7470  bo-remoting-http\n+000007d0: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+000007e0: 2020 2020 3c76 6572 7369 6f6e 3e24 7b70      <version>${p\n+000007f0: 726f 6a65 6374 2e70 6172 656e 742e 7665  roject.parent.ve\n+00000800: 7273 696f 6e7d 3c2f 7665 7273 696f 6e3e  rsion}</version>\n+00000810: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+00000820: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+00000830: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+00000840: 4964 3e6a 6176 6178 2e78 6d6c 2e62 696e  Id>javax.xml.bin\n+00000850: 643c 2f67 726f 7570 4964 3e0a 2020 2020  d</groupId>.    \n+00000860: 2020 3c61 7274 6966 6163 7449 643e 6a61    <artifactId>ja\n+00000870: 7862 2d61 7069 3c2f 6172 7469 6661 6374  xb-api</artifact\n+00000880: 4964 3e0a 2020 2020 3c2f 6465 7065 6e64  Id>.    </depend\n+00000890: 656e 6379 3e0a 2020 2020 3c64 6570 656e  ency>.    <depen\n+000008a0: 6465 6e63 793e 0a20 2020 2020 203c 6772  dency>.      <gr\n+000008b0: 6f75 7049 643e 636f 6d2e 7375 6e2e 786d  oupId>com.sun.xm\n+000008c0: 6c2e 6269 6e64 3c2f 6772 6f75 7049 643e  l.bind</groupId>\n+000008d0: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+000008e0: 4964 3e6a 6178 622d 696d 706c 3c2f 6172  Id>jaxb-impl</ar\n+000008f0: 7469 6661 6374 4964 3e0a 2020 2020 3c2f  tifactId>.    </\n+00000900: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000910: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+00000920: 2020 203c 6772 6f75 7049 643e 636f 6d2e     <groupId>com.\n+00000930: 7375 6e2e 786d 6c2e 6269 6e64 3c2f 6772  sun.xml.bind</gr\n+00000940: 6f75 7049 643e 0a20 2020 2020 203c 6172  oupId>.      <ar\n+00000950: 7469 6661 6374 4964 3e6a 6178 622d 636f  tifactId>jaxb-co\n+00000960: 7265 3c2f 6172 7469 6661 6374 4964 3e0a  re</artifactId>.\n+00000970: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000980: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000990: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+000009a0: 643e 6a61 7661 782e 6163 7469 7661 7469  d>javax.activati\n+000009b0: 6f6e 3c2f 6772 6f75 7049 643e 0a20 2020  on</groupId>.   \n+000009c0: 2020 203c 6172 7469 6661 6374 4964 3e6a     <artifactId>j\n+000009d0: 6176 6178 2e61 6374 6976 6174 696f 6e2d  avax.activation-\n+000009e0: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n+000009f0: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+00000a00: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+00000a10: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+00000a20: 4964 3e63 6f6d 2e73 756e 2e61 6374 6976  Id>com.sun.activ\n+00000a30: 6174 696f 6e3c 2f67 726f 7570 4964 3e0a  ation</groupId>.\n+00000a40: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n+00000a50: 643e 6a61 7661 782e 6163 7469 7661 7469  d>javax.activati\n+00000a60: 6f6e 3c2f 6172 7469 6661 6374 4964 3e0a  on</artifactId>.\n+00000a70: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000a80: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000a90: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+00000aa0: 643e 6f72 672e 6170 6163 6865 2e63 7866  d>org.apache.cxf\n+00000ab0: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+00000ac0: 203c 6172 7469 6661 6374 4964 3e63 7866   <artifactId>cxf\n+00000ad0: 2d72 742d 6672 6f6e 7465 6e64 2d73 696d  -rt-frontend-sim\n+00000ae0: 706c 653c 2f61 7274 6966 6163 7449 643e  ple</artifactId>\n+00000af0: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+00000b00: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+00000b10: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+00000b20: 4964 3e6f 7267 2e61 7061 6368 652e 6378  Id>org.apache.cx\n+00000b30: 663c 2f67 726f 7570 4964 3e0a 2020 2020  f</groupId>.    \n+00000b40: 2020 3c61 7274 6966 6163 7449 643e 6378    <artifactId>cx\n+00000b50: 662d 7274 2d74 7261 6e73 706f 7274 732d  f-rt-transports-\n+00000b60: 6874 7470 3c2f 6172 7469 6661 6374 4964  http</artifactId\n+00000b70: 3e0a 2020 2020 3c2f 6465 7065 6e64 656e  >.    </dependen\n+00000b80: 6379 3e0a 2020 2020 3c64 6570 656e 6465  cy>.    <depende\n+00000b90: 6e63 793e 0a20 2020 2020 203c 6772 6f75  ncy>.      <grou\n+00000ba0: 7049 643e 6f72 672e 7370 7269 6e67 6672  pId>org.springfr\n+00000bb0: 616d 6577 6f72 6b3c 2f67 726f 7570 4964  amework</groupId\n+00000bc0: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+00000bd0: 7449 643e 7370 7269 6e67 2d63 6f6e 7465  tId>spring-conte\n+00000be0: 7874 3c2f 6172 7469 6661 6374 4964 3e0a  xt</artifactId>.\n+00000bf0: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000c00: 3e0a 2020 3c2f 6465 7065 6e64 656e 6369  >.  </dependenci\n+00000c10: 6573 3e0a 3c2f 7072 6f6a 6563 743e 0a    es>.</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-rpc-thrift/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-rpc-thrift/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,201 +1,195 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 7063 3c2f 6172 7469 6661 6374  bo-rpc</artifact\n-000004a0: 4964 3e0d 0a20 2020 203c 7665 7273 696f  Id>..    <versio\n-000004b0: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n-000004c0: 6e3e 0d0a 2020 3c2f 7061 7265 6e74 3e0d  n>..  </parent>.\n-000004d0: 0a20 203c 6772 6f75 7049 643e 6f72 672e  .  <groupId>org.\n-000004e0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-000004f0: 6f75 7049 643e 0d0a 2020 3c61 7274 6966  oupId>..  <artif\n-00000500: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n-00000510: 7468 7269 6674 3c2f 6172 7469 6661 6374  thrift</artifact\n-00000520: 4964 3e0d 0a20 203c 7665 7273 696f 6e3e  Id>..  <version>\n-00000530: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n-00000540: 0d0a 2020 3c6e 616d 653e 247b 7072 6f6a  ..  <name>${proj\n-00000550: 6563 742e 6172 7469 6661 6374 4964 7d3c  ect.artifactId}<\n-00000560: 2f6e 616d 653e 0d0a 2020 3c64 6573 6372  /name>..  <descr\n-00000570: 6970 7469 6f6e 3e54 6865 2074 6872 6966  iption>The thrif\n-00000580: 7420 7270 6320 6d6f 6475 6c65 206f 6620  t rpc module of \n-00000590: 6475 6262 6f20 7072 6f6a 6563 743c 2f64  dubbo project</d\n-000005a0: 6573 6372 6970 7469 6f6e 3e0d 0a20 203c  escription>..  <\n-000005b0: 6c69 6365 6e73 6573 3e0d 0a20 2020 203c  licenses>..    <\n-000005c0: 6c69 6365 6e73 653e 0d0a 2020 2020 2020  license>..      \n-000005d0: 3c6e 616d 653e 4170 6163 6865 204c 6963  <name>Apache Lic\n-000005e0: 656e 7365 2c20 5665 7273 696f 6e20 322e  ense, Version 2.\n-000005f0: 303c 2f6e 616d 653e 0d0a 2020 2020 2020  0</name>..      \n-00000600: 3c75 726c 3e68 7474 703a 2f2f 7777 772e  <url>http://www.\n-00000610: 6170 6163 6865 2e6f 7267 2f6c 6963 656e  apache.org/licen\n-00000620: 7365 732f 4c49 4345 4e53 452d 322e 303c  ses/LICENSE-2.0<\n-00000630: 2f75 726c 3e0d 0a20 2020 2020 203c 6469  /url>..      <di\n-00000640: 7374 7269 6275 7469 6f6e 3e72 6570 6f3c  stribution>repo<\n-00000650: 2f64 6973 7472 6962 7574 696f 6e3e 0d0a  /distribution>..\n-00000660: 2020 2020 3c2f 6c69 6365 6e73 653e 0d0a      </license>..\n-00000670: 2020 3c2f 6c69 6365 6e73 6573 3e0d 0a20    </licenses>.. \n-00000680: 203c 7072 6f70 6572 7469 6573 3e0d 0a20   <properties>.. \n-00000690: 2020 203c 736b 6970 5f6d 6176 656e 5f64     <skip_maven_d\n-000006a0: 6570 6c6f 793e 6661 6c73 653c 2f73 6b69  eploy>false</ski\n-000006b0: 705f 6d61 7665 6e5f 6465 706c 6f79 3e0d  p_maven_deploy>.\n-000006c0: 0a20 203c 2f70 726f 7065 7274 6965 733e  .  </properties>\n-000006d0: 0d0a 2020 3c64 6570 656e 6465 6e63 6965  ..  <dependencie\n-000006e0: 733e 0d0a 2020 2020 3c64 6570 656e 6465  s>..    <depende\n-000006f0: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-00000700: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n-00000710: 6475 6262 6f3c 2f67 726f 7570 4964 3e0d  dubbo</groupId>.\n-00000720: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-00000730: 4964 3e64 7562 626f 2d72 7063 2d61 7069  Id>dubbo-rpc-api\n-00000740: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000750: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n-00000760: 7072 6f6a 6563 742e 7061 7265 6e74 2e76  project.parent.v\n-00000770: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n-00000780: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-00000790: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-000007a0: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-000007b0: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n-000007c0: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n-000007d0: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-000007e0: 6374 4964 3e64 7562 626f 2d72 7063 2d64  ctId>dubbo-rpc-d\n-000007f0: 7562 626f 3c2f 6172 7469 6661 6374 4964  ubbo</artifactId\n-00000800: 3e0d 0a20 2020 2020 203c 7665 7273 696f  >..      <versio\n-00000810: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n-00000820: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n-00000830: 7369 6f6e 3e0d 0a20 2020 203c 2f64 6570  sion>..    </dep\n-00000840: 656e 6465 6e63 793e 0d0a 2020 2020 3c64  endency>..    <d\n-00000850: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000860: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n-00000870: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n-00000880: 7570 4964 3e0d 0a20 2020 2020 203c 6172  upId>..      <ar\n-00000890: 7469 6661 6374 4964 3e64 7562 626f 2d72  tifactId>dubbo-r\n-000008a0: 656d 6f74 696e 672d 6170 693c 2f61 7274  emoting-api</art\n-000008b0: 6966 6163 7449 643e 0d0a 2020 2020 2020  ifactId>..      \n-000008c0: 3c76 6572 7369 6f6e 3e24 7b70 726f 6a65  <version>${proje\n-000008d0: 6374 2e70 6172 656e 742e 7665 7273 696f  ct.parent.versio\n-000008e0: 6e7d 3c2f 7665 7273 696f 6e3e 0d0a 2020  n}</version>..  \n-000008f0: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-00000900: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-00000910: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-00000920: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n-00000930: 626f 3c2f 6772 6f75 7049 643e 0d0a 2020  bo</groupId>..  \n-00000940: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-00000950: 6475 6262 6f2d 7265 6d6f 7469 6e67 2d6e  dubbo-remoting-n\n-00000960: 6574 7479 343c 2f61 7274 6966 6163 7449  etty4</artifactI\n-00000970: 643e 0d0a 2020 2020 2020 3c76 6572 7369  d>..      <versi\n-00000980: 6f6e 3e24 7b70 726f 6a65 6374 2e70 6172  on>${project.par\n-00000990: 656e 742e 7665 7273 696f 6e7d 3c2f 7665  ent.version}</ve\n-000009a0: 7273 696f 6e3e 0d0a 2020 2020 3c2f 6465  rsion>..    </de\n-000009b0: 7065 6e64 656e 6379 3e0d 0a20 2020 203c  pendency>..    <\n-000009c0: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-000009d0: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n-000009e0: 6170 6163 6865 2e74 6872 6966 743c 2f67  apache.thrift</g\n-000009f0: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-00000a00: 6172 7469 6661 6374 4964 3e6c 6962 7468  artifactId>libth\n-00000a10: 7269 6674 3c2f 6172 7469 6661 6374 4964  rift</artifactId\n-00000a20: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-00000a30: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-00000a40: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-00000a50: 726f 7570 4964 3e6f 7267 2e73 7072 696e  roupId>org.sprin\n-00000a60: 6766 7261 6d65 776f 726b 3c2f 6772 6f75  gframework</grou\n-00000a70: 7049 643e 0d0a 2020 2020 2020 3c61 7274  pId>..      <art\n-00000a80: 6966 6163 7449 643e 7370 7269 6e67 2d63  ifactId>spring-c\n-00000a90: 6f6e 7465 7874 3c2f 6172 7469 6661 6374  ontext</artifact\n-00000aa0: 4964 3e0d 0a20 2020 203c 2f64 6570 656e  Id>..    </depen\n-00000ab0: 6465 6e63 793e 0d0a 2020 2020 3c64 6570  dency>..    <dep\n-00000ac0: 656e 6465 6e63 793e 0d0a 2020 2020 2020  endency>..      \n-00000ad0: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n-00000ae0: 6368 652e 6475 6262 6f3c 2f67 726f 7570  che.dubbo</group\n-00000af0: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-00000b00: 6661 6374 4964 3e64 7562 626f 2d63 6f6e  factId>dubbo-con\n-00000b10: 6669 672d 7370 7269 6e67 3c2f 6172 7469  fig-spring</arti\n-00000b20: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-00000b30: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n-00000b40: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n-00000b50: 7d3c 2f76 6572 7369 6f6e 3e0d 0a20 2020  }</version>..   \n-00000b60: 2020 203c 7363 6f70 653e 7465 7374 3c2f     <scope>test</\n-00000b70: 7363 6f70 653e 0d0a 2020 2020 3c2f 6465  scope>..    </de\n-00000b80: 7065 6e64 656e 6379 3e0d 0a20 2020 203c  pendency>..    <\n-00000b90: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000ba0: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n-00000bb0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-00000bc0: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-00000bd0: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n-00000be0: 7265 6769 7374 7279 2d6d 756c 7469 6361  registry-multica\n-00000bf0: 7374 3c2f 6172 7469 6661 6374 4964 3e0d  st</artifactId>.\n-00000c00: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n-00000c10: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n-00000c20: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n-00000c30: 6f6e 3e0d 0a20 2020 2020 203c 7363 6f70  on>..      <scop\n-00000c40: 653e 7465 7374 3c2f 7363 6f70 653e 0d0a  e>test</scope>..\n-00000c50: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n-00000c60: 3e0d 0a20 203c 2f64 6570 656e 6465 6e63  >..  </dependenc\n-00000c70: 6965 733e 0d0a 3c2f 7072 6f6a 6563 743e  ies>..</project>\n-00000c80: 0d0a                                     ..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 7063  factId>dubbo-rpc\n+00000480: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000490: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n+000004a0: 303c 2f76 6572 7369 6f6e 3e0a 2020 3c2f  0</version>.  </\n+000004b0: 7061 7265 6e74 3e0a 2020 3c67 726f 7570  parent>.  <group\n+000004c0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+000004d0: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+000004e0: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+000004f0: 6f2d 7270 632d 7468 7269 6674 3c2f 6172  o-rpc-thrift</ar\n+00000500: 7469 6661 6374 4964 3e0a 2020 3c76 6572  tifactId>.  <ver\n+00000510: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n+00000520: 7369 6f6e 3e0a 2020 3c6e 616d 653e 247b  sion>.  <name>${\n+00000530: 7072 6f6a 6563 742e 6172 7469 6661 6374  project.artifact\n+00000540: 4964 7d3c 2f6e 616d 653e 0a20 203c 6465  Id}</name>.  <de\n+00000550: 7363 7269 7074 696f 6e3e 5468 6520 7468  scription>The th\n+00000560: 7269 6674 2072 7063 206d 6f64 756c 6520  rift rpc module \n+00000570: 6f66 2064 7562 626f 2070 726f 6a65 6374  of dubbo project\n+00000580: 3c2f 6465 7363 7269 7074 696f 6e3e 0a20  </description>. \n+00000590: 203c 6c69 6365 6e73 6573 3e0a 2020 2020   <licenses>.    \n+000005a0: 3c6c 6963 656e 7365 3e0a 2020 2020 2020  <license>.      \n+000005b0: 3c6e 616d 653e 4170 6163 6865 204c 6963  <name>Apache Lic\n+000005c0: 656e 7365 2c20 5665 7273 696f 6e20 322e  ense, Version 2.\n+000005d0: 303c 2f6e 616d 653e 0a20 2020 2020 203c  0</name>.      <\n+000005e0: 7572 6c3e 6874 7470 3a2f 2f77 7777 2e61  url>http://www.a\n+000005f0: 7061 6368 652e 6f72 672f 6c69 6365 6e73  pache.org/licens\n+00000600: 6573 2f4c 4943 454e 5345 2d32 2e30 3c2f  es/LICENSE-2.0</\n+00000610: 7572 6c3e 0a20 2020 2020 203c 6469 7374  url>.      <dist\n+00000620: 7269 6275 7469 6f6e 3e72 6570 6f3c 2f64  ribution>repo</d\n+00000630: 6973 7472 6962 7574 696f 6e3e 0a20 2020  istribution>.   \n+00000640: 203c 2f6c 6963 656e 7365 3e0a 2020 3c2f   </license>.  </\n+00000650: 6c69 6365 6e73 6573 3e0a 2020 3c70 726f  licenses>.  <pro\n+00000660: 7065 7274 6965 733e 0a20 2020 203c 736b  perties>.    <sk\n+00000670: 6970 5f6d 6176 656e 5f64 6570 6c6f 793e  ip_maven_deploy>\n+00000680: 6661 6c73 653c 2f73 6b69 705f 6d61 7665  false</skip_mave\n+00000690: 6e5f 6465 706c 6f79 3e0a 2020 3c2f 7072  n_deploy>.  </pr\n+000006a0: 6f70 6572 7469 6573 3e0a 2020 3c64 6570  operties>.  <dep\n+000006b0: 656e 6465 6e63 6965 733e 0a20 2020 203c  endencies>.    <\n+000006c0: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+000006d0: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+000006e0: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n+000006f0: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000700: 6966 6163 7449 643e 6475 6262 6f2d 7270  ifactId>dubbo-rp\n+00000710: 632d 6170 693c 2f61 7274 6966 6163 7449  c-api</artifactI\n+00000720: 643e 0a20 2020 2020 203c 7665 7273 696f  d>.      <versio\n+00000730: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n+00000740: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n+00000750: 7369 6f6e 3e0a 2020 2020 3c2f 6465 7065  sion>.    </depe\n+00000760: 6e64 656e 6379 3e0a 2020 2020 3c64 6570  ndency>.    <dep\n+00000770: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+00000780: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+00000790: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000007a0: 643e 0a20 2020 2020 203c 6172 7469 6661  d>.      <artifa\n+000007b0: 6374 4964 3e64 7562 626f 2d72 7063 2d64  ctId>dubbo-rpc-d\n+000007c0: 7562 626f 3c2f 6172 7469 6661 6374 4964  ubbo</artifactId\n+000007d0: 3e0a 2020 2020 2020 3c76 6572 7369 6f6e  >.      <version\n+000007e0: 3e24 7b70 726f 6a65 6374 2e70 6172 656e  >${project.paren\n+000007f0: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n+00000800: 696f 6e3e 0a20 2020 203c 2f64 6570 656e  ion>.    </depen\n+00000810: 6465 6e63 793e 0a20 2020 203c 6465 7065  dency>.    <depe\n+00000820: 6e64 656e 6379 3e0a 2020 2020 2020 3c67  ndency>.      <g\n+00000830: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n+00000840: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n+00000850: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+00000860: 7449 643e 6475 6262 6f2d 7265 6d6f 7469  tId>dubbo-remoti\n+00000870: 6e67 2d61 7069 3c2f 6172 7469 6661 6374  ng-api</artifact\n+00000880: 4964 3e0a 2020 2020 2020 3c76 6572 7369  Id>.      <versi\n+00000890: 6f6e 3e24 7b70 726f 6a65 6374 2e70 6172  on>${project.par\n+000008a0: 656e 742e 7665 7273 696f 6e7d 3c2f 7665  ent.version}</ve\n+000008b0: 7273 696f 6e3e 0a20 2020 203c 2f64 6570  rsion>.    </dep\n+000008c0: 656e 6465 6e63 793e 0a20 2020 203c 6465  endency>.    <de\n+000008d0: 7065 6e64 656e 6379 3e0a 2020 2020 2020  pendency>.      \n+000008e0: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n+000008f0: 6368 652e 6475 6262 6f3c 2f67 726f 7570  che.dubbo</group\n+00000900: 4964 3e0a 2020 2020 2020 3c61 7274 6966  Id>.      <artif\n+00000910: 6163 7449 643e 6475 6262 6f2d 7265 6d6f  actId>dubbo-remo\n+00000920: 7469 6e67 2d6e 6574 7479 343c 2f61 7274  ting-netty4</art\n+00000930: 6966 6163 7449 643e 0a20 2020 2020 203c  ifactId>.      <\n+00000940: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n+00000950: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n+00000960: 7d3c 2f76 6572 7369 6f6e 3e0a 2020 2020  }</version>.    \n+00000970: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+00000980: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+00000990: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n+000009a0: 672e 6170 6163 6865 2e74 6872 6966 743c  g.apache.thrift<\n+000009b0: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+000009c0: 3c61 7274 6966 6163 7449 643e 6c69 6274  <artifactId>libt\n+000009d0: 6872 6966 743c 2f61 7274 6966 6163 7449  hrift</artifactI\n+000009e0: 643e 0a20 2020 203c 2f64 6570 656e 6465  d>.    </depende\n+000009f0: 6e63 793e 0a20 2020 203c 6465 7065 6e64  ncy>.    <depend\n+00000a00: 656e 6379 3e0a 2020 2020 2020 3c67 726f  ency>.      <gro\n+00000a10: 7570 4964 3e6f 7267 2e73 7072 696e 6766  upId>org.springf\n+00000a20: 7261 6d65 776f 726b 3c2f 6772 6f75 7049  ramework</groupI\n+00000a30: 643e 0a20 2020 2020 203c 6172 7469 6661  d>.      <artifa\n+00000a40: 6374 4964 3e73 7072 696e 672d 636f 6e74  ctId>spring-cont\n+00000a50: 6578 743c 2f61 7274 6966 6163 7449 643e  ext</artifactId>\n+00000a60: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+00000a70: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+00000a80: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+00000a90: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+00000aa0: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000ab0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+00000ac0: 6475 6262 6f2d 636f 6e66 6967 2d73 7072  dubbo-config-spr\n+00000ad0: 696e 673c 2f61 7274 6966 6163 7449 643e  ing</artifactId>\n+00000ae0: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n+00000af0: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n+00000b00: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n+00000b10: 6f6e 3e0a 2020 2020 2020 3c73 636f 7065  on>.      <scope\n+00000b20: 3e74 6573 743c 2f73 636f 7065 3e0a 2020  >test</scope>.  \n+00000b30: 2020 3c2f 6465 7065 6e64 656e 6379 3e0a    </dependency>.\n+00000b40: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+00000b50: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+00000b60: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+00000b70: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+00000b80: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+00000b90: 626f 2d72 6567 6973 7472 792d 6d75 6c74  bo-registry-mult\n+00000ba0: 6963 6173 743c 2f61 7274 6966 6163 7449  icast</artifactI\n+00000bb0: 643e 0a20 2020 2020 203c 7665 7273 696f  d>.      <versio\n+00000bc0: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n+00000bd0: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n+00000be0: 7369 6f6e 3e0a 2020 2020 2020 3c73 636f  sion>.      <sco\n+00000bf0: 7065 3e74 6573 743c 2f73 636f 7065 3e0a  pe>test</scope>.\n+00000c00: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000c10: 3e0a 2020 3c2f 6465 7065 6e64 656e 6369  >.  </dependenci\n+00000c20: 6573 3e0a 3c2f 7072 6f6a 6563 743e 0a    es>.</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-rpc-native-thrift/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-rpc-native-thrift/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,144 +1,141 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 7063 3c2f 6172 7469 6661 6374  bo-rpc</artifact\n-000004a0: 4964 3e0d 0a20 2020 203c 7665 7273 696f  Id>..    <versio\n-000004b0: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n-000004c0: 6e3e 0d0a 2020 3c2f 7061 7265 6e74 3e0d  n>..  </parent>.\n-000004d0: 0a20 203c 6772 6f75 7049 643e 6f72 672e  .  <groupId>org.\n-000004e0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-000004f0: 6f75 7049 643e 0d0a 2020 3c61 7274 6966  oupId>..  <artif\n-00000500: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n-00000510: 6e61 7469 7665 2d74 6872 6966 743c 2f61  native-thrift</a\n-00000520: 7274 6966 6163 7449 643e 0d0a 2020 3c76  rtifactId>..  <v\n-00000530: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-00000540: 6572 7369 6f6e 3e0d 0a20 203c 6e61 6d65  ersion>..  <name\n-00000550: 3e24 7b70 726f 6a65 6374 2e61 7274 6966  >${project.artif\n-00000560: 6163 7449 647d 3c2f 6e61 6d65 3e0d 0a20  actId}</name>.. \n-00000570: 203c 6465 7363 7269 7074 696f 6e3e 5468   <description>Th\n-00000580: 6520 7468 7269 6674 2072 7063 206d 6f64  e thrift rpc mod\n-00000590: 756c 6520 6f66 2064 7562 626f 2070 726f  ule of dubbo pro\n-000005a0: 6a65 6374 3c2f 6465 7363 7269 7074 696f  ject</descriptio\n-000005b0: 6e3e 0d0a 2020 3c6c 6963 656e 7365 733e  n>..  <licenses>\n-000005c0: 0d0a 2020 2020 3c6c 6963 656e 7365 3e0d  ..    <license>.\n-000005d0: 0a20 2020 2020 203c 6e61 6d65 3e41 7061  .      <name>Apa\n-000005e0: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n-000005f0: 7369 6f6e 2032 2e30 3c2f 6e61 6d65 3e0d  sion 2.0</name>.\n-00000600: 0a20 2020 2020 203c 7572 6c3e 6874 7470  .      <url>http\n-00000610: 3a2f 2f77 7777 2e61 7061 6368 652e 6f72  ://www.apache.or\n-00000620: 672f 6c69 6365 6e73 6573 2f4c 4943 454e  g/licenses/LICEN\n-00000630: 5345 2d32 2e30 3c2f 7572 6c3e 0d0a 2020  SE-2.0</url>..  \n-00000640: 2020 2020 3c64 6973 7472 6962 7574 696f      <distributio\n-00000650: 6e3e 7265 706f 3c2f 6469 7374 7269 6275  n>repo</distribu\n-00000660: 7469 6f6e 3e0d 0a20 2020 203c 2f6c 6963  tion>..    </lic\n-00000670: 656e 7365 3e0d 0a20 203c 2f6c 6963 656e  ense>..  </licen\n-00000680: 7365 733e 0d0a 2020 3c70 726f 7065 7274  ses>..  <propert\n-00000690: 6965 733e 0d0a 2020 2020 3c73 6b69 705f  ies>..    <skip_\n-000006a0: 6d61 7665 6e5f 6465 706c 6f79 3e66 616c  maven_deploy>fal\n-000006b0: 7365 3c2f 736b 6970 5f6d 6176 656e 5f64  se</skip_maven_d\n-000006c0: 6570 6c6f 793e 0d0a 2020 3c2f 7072 6f70  eploy>..  </prop\n-000006d0: 6572 7469 6573 3e0d 0a20 203c 6465 7065  erties>..  <depe\n-000006e0: 6e64 656e 6369 6573 3e0d 0a20 2020 203c  ndencies>..    <\n-000006f0: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000700: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n-00000710: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-00000720: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-00000730: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n-00000740: 7270 632d 6170 693c 2f61 7274 6966 6163  rpc-api</artifac\n-00000750: 7449 643e 0d0a 2020 2020 2020 3c76 6572  tId>..      <ver\n-00000760: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n-00000770: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n-00000780: 7665 7273 696f 6e3e 0d0a 2020 2020 3c2f  version>..    </\n-00000790: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-000007a0: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-000007b0: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n-000007c0: 672e 6170 6163 6865 2e74 6872 6966 743c  g.apache.thrift<\n-000007d0: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-000007e0: 203c 6172 7469 6661 6374 4964 3e6c 6962   <artifactId>lib\n-000007f0: 7468 7269 6674 3c2f 6172 7469 6661 6374  thrift</artifact\n-00000800: 4964 3e0d 0a20 2020 203c 2f64 6570 656e  Id>..    </depen\n-00000810: 6465 6e63 793e 0d0a 2020 2020 3c64 6570  dency>..    <dep\n-00000820: 656e 6465 6e63 793e 0d0a 2020 2020 2020  endency>..      \n-00000830: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n-00000840: 6368 652e 6475 6262 6f3c 2f67 726f 7570  che.dubbo</group\n-00000850: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-00000860: 6661 6374 4964 3e64 7562 626f 2d73 6572  factId>dubbo-ser\n-00000870: 6961 6c69 7a61 7469 6f6e 2d6a 646b 3c2f  ialization-jdk</\n-00000880: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-00000890: 2020 203c 7665 7273 696f 6e3e 247b 7265     <version>${re\n-000008a0: 7669 7369 6f6e 7d3c 2f76 6572 7369 6f6e  vision}</version\n-000008b0: 3e0d 0a20 2020 2020 203c 7363 6f70 653e  >..      <scope>\n-000008c0: 7465 7374 3c2f 7363 6f70 653e 0d0a 2020  test</scope>..  \n-000008d0: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-000008e0: 0a20 203c 2f64 6570 656e 6465 6e63 6965  .  </dependencie\n-000008f0: 733e 0d0a 3c2f 7072 6f6a 6563 743e 0d0a  s>..</project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 7063  factId>dubbo-rpc\n+00000480: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000490: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n+000004a0: 303c 2f76 6572 7369 6f6e 3e0a 2020 3c2f  0</version>.  </\n+000004b0: 7061 7265 6e74 3e0a 2020 3c67 726f 7570  parent>.  <group\n+000004c0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+000004d0: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+000004e0: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+000004f0: 6f2d 7270 632d 6e61 7469 7665 2d74 6872  o-rpc-native-thr\n+00000500: 6966 743c 2f61 7274 6966 6163 7449 643e  ift</artifactId>\n+00000510: 0a20 203c 7665 7273 696f 6e3e 322e 372e  .  <version>2.7.\n+00000520: 3130 3c2f 7665 7273 696f 6e3e 0a20 203c  10</version>.  <\n+00000530: 6e61 6d65 3e24 7b70 726f 6a65 6374 2e61  name>${project.a\n+00000540: 7274 6966 6163 7449 647d 3c2f 6e61 6d65  rtifactId}</name\n+00000550: 3e0a 2020 3c64 6573 6372 6970 7469 6f6e  >.  <description\n+00000560: 3e54 6865 2074 6872 6966 7420 7270 6320  >The thrift rpc \n+00000570: 6d6f 6475 6c65 206f 6620 6475 6262 6f20  module of dubbo \n+00000580: 7072 6f6a 6563 743c 2f64 6573 6372 6970  project</descrip\n+00000590: 7469 6f6e 3e0a 2020 3c6c 6963 656e 7365  tion>.  <license\n+000005a0: 733e 0a20 2020 203c 6c69 6365 6e73 653e  s>.    <license>\n+000005b0: 0a20 2020 2020 203c 6e61 6d65 3e41 7061  .      <name>Apa\n+000005c0: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+000005d0: 7369 6f6e 2032 2e30 3c2f 6e61 6d65 3e0a  sion 2.0</name>.\n+000005e0: 2020 2020 2020 3c75 726c 3e68 7474 703a        <url>http:\n+000005f0: 2f2f 7777 772e 6170 6163 6865 2e6f 7267  //www.apache.org\n+00000600: 2f6c 6963 656e 7365 732f 4c49 4345 4e53  /licenses/LICENS\n+00000610: 452d 322e 303c 2f75 726c 3e0a 2020 2020  E-2.0</url>.    \n+00000620: 2020 3c64 6973 7472 6962 7574 696f 6e3e    <distribution>\n+00000630: 7265 706f 3c2f 6469 7374 7269 6275 7469  repo</distributi\n+00000640: 6f6e 3e0a 2020 2020 3c2f 6c69 6365 6e73  on>.    </licens\n+00000650: 653e 0a20 203c 2f6c 6963 656e 7365 733e  e>.  </licenses>\n+00000660: 0a20 203c 7072 6f70 6572 7469 6573 3e0a  .  <properties>.\n+00000670: 2020 2020 3c73 6b69 705f 6d61 7665 6e5f      <skip_maven_\n+00000680: 6465 706c 6f79 3e66 616c 7365 3c2f 736b  deploy>false</sk\n+00000690: 6970 5f6d 6176 656e 5f64 6570 6c6f 793e  ip_maven_deploy>\n+000006a0: 0a20 203c 2f70 726f 7065 7274 6965 733e  .  </properties>\n+000006b0: 0a20 203c 6465 7065 6e64 656e 6369 6573  .  <dependencies\n+000006c0: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+000006d0: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+000006e0: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n+000006f0: 626f 3c2f 6772 6f75 7049 643e 0a20 2020  bo</groupId>.   \n+00000700: 2020 203c 6172 7469 6661 6374 4964 3e64     <artifactId>d\n+00000710: 7562 626f 2d72 7063 2d61 7069 3c2f 6172  ubbo-rpc-api</ar\n+00000720: 7469 6661 6374 4964 3e0a 2020 2020 2020  tifactId>.      \n+00000730: 3c76 6572 7369 6f6e 3e24 7b70 726f 6a65  <version>${proje\n+00000740: 6374 2e70 6172 656e 742e 7665 7273 696f  ct.parent.versio\n+00000750: 6e7d 3c2f 7665 7273 696f 6e3e 0a20 2020  n}</version>.   \n+00000760: 203c 2f64 6570 656e 6465 6e63 793e 0a20   </dependency>. \n+00000770: 2020 203c 6465 7065 6e64 656e 6379 3e0a     <dependency>.\n+00000780: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n+00000790: 7267 2e61 7061 6368 652e 7468 7269 6674  rg.apache.thrift\n+000007a0: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+000007b0: 203c 6172 7469 6661 6374 4964 3e6c 6962   <artifactId>lib\n+000007c0: 7468 7269 6674 3c2f 6172 7469 6661 6374  thrift</artifact\n+000007d0: 4964 3e0a 2020 2020 3c2f 6465 7065 6e64  Id>.    </depend\n+000007e0: 656e 6379 3e0a 2020 2020 3c64 6570 656e  ency>.    <depen\n+000007f0: 6465 6e63 793e 0a20 2020 2020 203c 6772  dency>.      <gr\n+00000800: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+00000810: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+00000820: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+00000830: 4964 3e64 7562 626f 2d73 6572 6961 6c69  Id>dubbo-seriali\n+00000840: 7a61 7469 6f6e 2d6a 646b 3c2f 6172 7469  zation-jdk</arti\n+00000850: 6661 6374 4964 3e0a 2020 2020 2020 3c76  factId>.      <v\n+00000860: 6572 7369 6f6e 3e24 7b72 6576 6973 696f  ersion>${revisio\n+00000870: 6e7d 3c2f 7665 7273 696f 6e3e 0a20 2020  n}</version>.   \n+00000880: 2020 203c 7363 6f70 653e 7465 7374 3c2f     <scope>test</\n+00000890: 7363 6f70 653e 0a20 2020 203c 2f64 6570  scope>.    </dep\n+000008a0: 656e 6465 6e63 793e 0a20 203c 2f64 6570  endency>.  </dep\n+000008b0: 656e 6465 6e63 6965 733e 0a3c 2f70 726f  endencies>.</pro\n+000008c0: 6a65 6374 3e0a                           ject>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-rpc-memcached/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-rpc-memcached/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,132 +1,129 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 7063 3c2f 6172 7469 6661 6374  bo-rpc</artifact\n-000004a0: 4964 3e0d 0a20 2020 203c 7665 7273 696f  Id>..    <versio\n-000004b0: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n-000004c0: 6e3e 0d0a 2020 3c2f 7061 7265 6e74 3e0d  n>..  </parent>.\n-000004d0: 0a20 203c 6772 6f75 7049 643e 6f72 672e  .  <groupId>org.\n-000004e0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-000004f0: 6f75 7049 643e 0d0a 2020 3c61 7274 6966  oupId>..  <artif\n-00000500: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n-00000510: 6d65 6d63 6163 6865 643c 2f61 7274 6966  memcached</artif\n-00000520: 6163 7449 643e 0d0a 2020 3c76 6572 7369  actId>..  <versi\n-00000530: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n-00000540: 6f6e 3e0d 0a20 203c 6e61 6d65 3e24 7b70  on>..  <name>${p\n-00000550: 726f 6a65 6374 2e61 7274 6966 6163 7449  roject.artifactI\n-00000560: 647d 3c2f 6e61 6d65 3e0d 0a20 203c 6465  d}</name>..  <de\n-00000570: 7363 7269 7074 696f 6e3e 5468 6520 6d65  scription>The me\n-00000580: 6d63 6163 6865 6420 7270 6320 6d6f 6475  mcached rpc modu\n-00000590: 6c65 206f 6620 6475 6262 6f20 7072 6f6a  le of dubbo proj\n-000005a0: 6563 743c 2f64 6573 6372 6970 7469 6f6e  ect</description\n-000005b0: 3e0d 0a20 203c 6c69 6365 6e73 6573 3e0d  >..  <licenses>.\n-000005c0: 0a20 2020 203c 6c69 6365 6e73 653e 0d0a  .    <license>..\n-000005d0: 2020 2020 2020 3c6e 616d 653e 4170 6163        <name>Apac\n-000005e0: 6865 204c 6963 656e 7365 2c20 5665 7273  he License, Vers\n-000005f0: 696f 6e20 322e 303c 2f6e 616d 653e 0d0a  ion 2.0</name>..\n-00000600: 2020 2020 2020 3c75 726c 3e68 7474 703a        <url>http:\n-00000610: 2f2f 7777 772e 6170 6163 6865 2e6f 7267  //www.apache.org\n-00000620: 2f6c 6963 656e 7365 732f 4c49 4345 4e53  /licenses/LICENS\n-00000630: 452d 322e 303c 2f75 726c 3e0d 0a20 2020  E-2.0</url>..   \n-00000640: 2020 203c 6469 7374 7269 6275 7469 6f6e     <distribution\n-00000650: 3e72 6570 6f3c 2f64 6973 7472 6962 7574  >repo</distribut\n-00000660: 696f 6e3e 0d0a 2020 2020 3c2f 6c69 6365  ion>..    </lice\n-00000670: 6e73 653e 0d0a 2020 3c2f 6c69 6365 6e73  nse>..  </licens\n-00000680: 6573 3e0d 0a20 203c 7072 6f70 6572 7469  es>..  <properti\n-00000690: 6573 3e0d 0a20 2020 203c 736b 6970 5f6d  es>..    <skip_m\n-000006a0: 6176 656e 5f64 6570 6c6f 793e 6661 6c73  aven_deploy>fals\n-000006b0: 653c 2f73 6b69 705f 6d61 7665 6e5f 6465  e</skip_maven_de\n-000006c0: 706c 6f79 3e0d 0a20 203c 2f70 726f 7065  ploy>..  </prope\n-000006d0: 7274 6965 733e 0d0a 2020 3c64 6570 656e  rties>..  <depen\n-000006e0: 6465 6e63 6965 733e 0d0a 2020 2020 3c64  dencies>..    <d\n-000006f0: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000700: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n-00000710: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n-00000720: 7570 4964 3e0d 0a20 2020 2020 203c 6172  upId>..      <ar\n-00000730: 7469 6661 6374 4964 3e64 7562 626f 2d72  tifactId>dubbo-r\n-00000740: 7063 2d61 7069 3c2f 6172 7469 6661 6374  pc-api</artifact\n-00000750: 4964 3e0d 0a20 2020 2020 203c 7665 7273  Id>..      <vers\n-00000760: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n-00000770: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n-00000780: 6572 7369 6f6e 3e0d 0a20 2020 203c 2f64  ersion>..    </d\n-00000790: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-000007a0: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-000007b0: 2020 2020 3c67 726f 7570 4964 3e63 6f6d      <groupId>com\n-000007c0: 2e67 6f6f 676c 6563 6f64 652e 786d 656d  .googlecode.xmem\n-000007d0: 6361 6368 6564 3c2f 6772 6f75 7049 643e  cached</groupId>\n-000007e0: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-000007f0: 7449 643e 786d 656d 6361 6368 6564 3c2f  tId>xmemcached</\n-00000800: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-00000810: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-00000820: 2020 3c2f 6465 7065 6e64 656e 6369 6573    </dependencies\n-00000830: 3e0d 0a3c 2f70 726f 6a65 6374 3e0d 0a    >..</project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 7063  factId>dubbo-rpc\n+00000480: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000490: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n+000004a0: 303c 2f76 6572 7369 6f6e 3e0a 2020 3c2f  0</version>.  </\n+000004b0: 7061 7265 6e74 3e0a 2020 3c67 726f 7570  parent>.  <group\n+000004c0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+000004d0: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+000004e0: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+000004f0: 6f2d 7270 632d 6d65 6d63 6163 6865 643c  o-rpc-memcached<\n+00000500: 2f61 7274 6966 6163 7449 643e 0a20 203c  /artifactId>.  <\n+00000510: 7665 7273 696f 6e3e 322e 372e 3130 3c2f  version>2.7.10</\n+00000520: 7665 7273 696f 6e3e 0a20 203c 6e61 6d65  version>.  <name\n+00000530: 3e24 7b70 726f 6a65 6374 2e61 7274 6966  >${project.artif\n+00000540: 6163 7449 647d 3c2f 6e61 6d65 3e0a 2020  actId}</name>.  \n+00000550: 3c64 6573 6372 6970 7469 6f6e 3e54 6865  <description>The\n+00000560: 206d 656d 6361 6368 6564 2072 7063 206d   memcached rpc m\n+00000570: 6f64 756c 6520 6f66 2064 7562 626f 2070  odule of dubbo p\n+00000580: 726f 6a65 6374 3c2f 6465 7363 7269 7074  roject</descript\n+00000590: 696f 6e3e 0a20 203c 6c69 6365 6e73 6573  ion>.  <licenses\n+000005a0: 3e0a 2020 2020 3c6c 6963 656e 7365 3e0a  >.    <license>.\n+000005b0: 2020 2020 2020 3c6e 616d 653e 4170 6163        <name>Apac\n+000005c0: 6865 204c 6963 656e 7365 2c20 5665 7273  he License, Vers\n+000005d0: 696f 6e20 322e 303c 2f6e 616d 653e 0a20  ion 2.0</name>. \n+000005e0: 2020 2020 203c 7572 6c3e 6874 7470 3a2f       <url>http:/\n+000005f0: 2f77 7777 2e61 7061 6368 652e 6f72 672f  /www.apache.org/\n+00000600: 6c69 6365 6e73 6573 2f4c 4943 454e 5345  licenses/LICENSE\n+00000610: 2d32 2e30 3c2f 7572 6c3e 0a20 2020 2020  -2.0</url>.     \n+00000620: 203c 6469 7374 7269 6275 7469 6f6e 3e72   <distribution>r\n+00000630: 6570 6f3c 2f64 6973 7472 6962 7574 696f  epo</distributio\n+00000640: 6e3e 0a20 2020 203c 2f6c 6963 656e 7365  n>.    </license\n+00000650: 3e0a 2020 3c2f 6c69 6365 6e73 6573 3e0a  >.  </licenses>.\n+00000660: 2020 3c70 726f 7065 7274 6965 733e 0a20    <properties>. \n+00000670: 2020 203c 736b 6970 5f6d 6176 656e 5f64     <skip_maven_d\n+00000680: 6570 6c6f 793e 6661 6c73 653c 2f73 6b69  eploy>false</ski\n+00000690: 705f 6d61 7665 6e5f 6465 706c 6f79 3e0a  p_maven_deploy>.\n+000006a0: 2020 3c2f 7072 6f70 6572 7469 6573 3e0a    </properties>.\n+000006b0: 2020 3c64 6570 656e 6465 6e63 6965 733e    <dependencies>\n+000006c0: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+000006d0: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+000006e0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n+000006f0: 6f3c 2f67 726f 7570 4964 3e0a 2020 2020  o</groupId>.    \n+00000700: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000710: 6262 6f2d 7270 632d 6170 693c 2f61 7274  bbo-rpc-api</art\n+00000720: 6966 6163 7449 643e 0a20 2020 2020 203c  ifactId>.      <\n+00000730: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n+00000740: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n+00000750: 7d3c 2f76 6572 7369 6f6e 3e0a 2020 2020  }</version>.    \n+00000760: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+00000770: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+00000780: 2020 2020 203c 6772 6f75 7049 643e 636f       <groupId>co\n+00000790: 6d2e 676f 6f67 6c65 636f 6465 2e78 6d65  m.googlecode.xme\n+000007a0: 6d63 6163 6865 643c 2f67 726f 7570 4964  mcached</groupId\n+000007b0: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+000007c0: 7449 643e 786d 656d 6361 6368 6564 3c2f  tId>xmemcached</\n+000007d0: 6172 7469 6661 6374 4964 3e0a 2020 2020  artifactId>.    \n+000007e0: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+000007f0: 3c2f 6465 7065 6e64 656e 6369 6573 3e0a  </dependencies>.\n+00000800: 3c2f 7072 6f6a 6563 743e 0a              </project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-rpc-redis/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-rpc-redis/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,164 +1,159 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 7063 3c2f 6172 7469 6661 6374  bo-rpc</artifact\n-000004a0: 4964 3e0d 0a20 2020 203c 7665 7273 696f  Id>..    <versio\n-000004b0: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n-000004c0: 6e3e 0d0a 2020 3c2f 7061 7265 6e74 3e0d  n>..  </parent>.\n-000004d0: 0a20 203c 6772 6f75 7049 643e 6f72 672e  .  <groupId>org.\n-000004e0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-000004f0: 6f75 7049 643e 0d0a 2020 3c61 7274 6966  oupId>..  <artif\n-00000500: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n-00000510: 7265 6469 733c 2f61 7274 6966 6163 7449  redis</artifactI\n-00000520: 643e 0d0a 2020 3c76 6572 7369 6f6e 3e32  d>..  <version>2\n-00000530: 2e37 2e31 303c 2f76 6572 7369 6f6e 3e0d  .7.10</version>.\n-00000540: 0a20 203c 6e61 6d65 3e24 7b70 726f 6a65  .  <name>${proje\n-00000550: 6374 2e61 7274 6966 6163 7449 647d 3c2f  ct.artifactId}</\n-00000560: 6e61 6d65 3e0d 0a20 203c 6465 7363 7269  name>..  <descri\n-00000570: 7074 696f 6e3e 5468 6520 7265 6469 7320  ption>The redis \n-00000580: 7270 6320 6d6f 6475 6c65 206f 6620 6475  rpc module of du\n-00000590: 6262 6f20 7072 6f6a 6563 743c 2f64 6573  bbo project</des\n-000005a0: 6372 6970 7469 6f6e 3e0d 0a20 203c 6c69  cription>..  <li\n-000005b0: 6365 6e73 6573 3e0d 0a20 2020 203c 6c69  censes>..    <li\n-000005c0: 6365 6e73 653e 0d0a 2020 2020 2020 3c6e  cense>..      <n\n-000005d0: 616d 653e 4170 6163 6865 204c 6963 656e  ame>Apache Licen\n-000005e0: 7365 2c20 5665 7273 696f 6e20 322e 303c  se, Version 2.0<\n-000005f0: 2f6e 616d 653e 0d0a 2020 2020 2020 3c75  /name>..      <u\n-00000600: 726c 3e68 7474 703a 2f2f 7777 772e 6170  rl>http://www.ap\n-00000610: 6163 6865 2e6f 7267 2f6c 6963 656e 7365  ache.org/license\n-00000620: 732f 4c49 4345 4e53 452d 322e 303c 2f75  s/LICENSE-2.0</u\n-00000630: 726c 3e0d 0a20 2020 2020 203c 6469 7374  rl>..      <dist\n-00000640: 7269 6275 7469 6f6e 3e72 6570 6f3c 2f64  ribution>repo</d\n-00000650: 6973 7472 6962 7574 696f 6e3e 0d0a 2020  istribution>..  \n-00000660: 2020 3c2f 6c69 6365 6e73 653e 0d0a 2020    </license>..  \n-00000670: 3c2f 6c69 6365 6e73 6573 3e0d 0a20 203c  </licenses>..  <\n-00000680: 7072 6f70 6572 7469 6573 3e0d 0a20 2020  properties>..   \n-00000690: 203c 736b 6970 5f6d 6176 656e 5f64 6570   <skip_maven_dep\n-000006a0: 6c6f 793e 6661 6c73 653c 2f73 6b69 705f  loy>false</skip_\n-000006b0: 6d61 7665 6e5f 6465 706c 6f79 3e0d 0a20  maven_deploy>.. \n-000006c0: 203c 2f70 726f 7065 7274 6965 733e 0d0a   </properties>..\n-000006d0: 2020 3c64 6570 656e 6465 6e63 6965 733e    <dependencies>\n-000006e0: 0d0a 2020 2020 3c64 6570 656e 6465 6e63  ..    <dependenc\n-000006f0: 793e 0d0a 2020 2020 2020 3c67 726f 7570  y>..      <group\n-00000700: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n-00000710: 6262 6f3c 2f67 726f 7570 4964 3e0d 0a20  bbo</groupId>.. \n-00000720: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n-00000730: 3e64 7562 626f 2d72 7063 2d61 7069 3c2f  >dubbo-rpc-api</\n-00000740: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-00000750: 2020 203c 7665 7273 696f 6e3e 247b 7072     <version>${pr\n-00000760: 6f6a 6563 742e 7061 7265 6e74 2e76 6572  oject.parent.ver\n-00000770: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0d  sion}</version>.\n-00000780: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-00000790: 793e 0d0a 2020 2020 3c64 6570 656e 6465  y>..    <depende\n-000007a0: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-000007b0: 7570 4964 3e72 6564 6973 2e63 6c69 656e  upId>redis.clien\n-000007c0: 7473 3c2f 6772 6f75 7049 643e 0d0a 2020  ts</groupId>..  \n-000007d0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-000007e0: 6a65 6469 733c 2f61 7274 6966 6163 7449  jedis</artifactI\n-000007f0: 643e 0d0a 2020 2020 3c2f 6465 7065 6e64  d>..    </depend\n-00000800: 656e 6379 3e0d 0a20 2020 203c 6465 7065  ency>..    <depe\n-00000810: 6e64 656e 6379 3e0d 0a20 2020 2020 203c  ndency>..      <\n-00000820: 6772 6f75 7049 643e 636f 6d2e 6769 7468  groupId>com.gith\n-00000830: 7562 2e6b 7374 7972 633c 2f67 726f 7570  ub.kstyrc</group\n-00000840: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-00000850: 6661 6374 4964 3e65 6d62 6564 6465 642d  factId>embedded-\n-00000860: 7265 6469 733c 2f61 7274 6966 6163 7449  redis</artifactI\n-00000870: 643e 0d0a 2020 2020 2020 3c73 636f 7065  d>..      <scope\n-00000880: 3e74 6573 743c 2f73 636f 7065 3e0d 0a20  >test</scope>.. \n-00000890: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n-000008a0: 0d0a 2020 2020 3c64 6570 656e 6465 6e63  ..    <dependenc\n-000008b0: 793e 0d0a 2020 2020 2020 3c67 726f 7570  y>..      <group\n-000008c0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n-000008d0: 6262 6f3c 2f67 726f 7570 4964 3e0d 0a20  bbo</groupId>.. \n-000008e0: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n-000008f0: 3e64 7562 626f 2d73 6572 6961 6c69 7a61  >dubbo-serializa\n-00000900: 7469 6f6e 2d6a 646b 3c2f 6172 7469 6661  tion-jdk</artifa\n-00000910: 6374 4964 3e0d 0a20 2020 2020 203c 7665  ctId>..      <ve\n-00000920: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n-00000930: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n-00000940: 2f76 6572 7369 6f6e 3e0d 0a20 2020 2020  /version>..     \n-00000950: 203c 7363 6f70 653e 7465 7374 3c2f 7363   <scope>test</sc\n-00000960: 6f70 653e 0d0a 2020 2020 3c2f 6465 7065  ope>..    </depe\n-00000970: 6e64 656e 6379 3e0d 0a20 2020 203c 6465  ndency>..    <de\n-00000980: 7065 6e64 656e 6379 3e0d 0a20 2020 2020  pendency>..     \n-00000990: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n-000009a0: 6163 6865 2e63 6f6d 6d6f 6e73 3c2f 6772  ache.commons</gr\n-000009b0: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-000009c0: 7274 6966 6163 7449 643e 636f 6d6d 6f6e  rtifactId>common\n-000009d0: 732d 6c61 6e67 333c 2f61 7274 6966 6163  s-lang3</artifac\n-000009e0: 7449 643e 0d0a 2020 2020 2020 3c73 636f  tId>..      <sco\n-000009f0: 7065 3e74 6573 743c 2f73 636f 7065 3e0d  pe>test</scope>.\n-00000a00: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-00000a10: 793e 0d0a 2020 3c2f 6465 7065 6e64 656e  y>..  </dependen\n-00000a20: 6369 6573 3e0d 0a3c 2f70 726f 6a65 6374  cies>..</project\n-00000a30: 3e0d 0a                                  >..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 7063  factId>dubbo-rpc\n+00000480: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000490: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n+000004a0: 303c 2f76 6572 7369 6f6e 3e0a 2020 3c2f  0</version>.  </\n+000004b0: 7061 7265 6e74 3e0a 2020 3c67 726f 7570  parent>.  <group\n+000004c0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+000004d0: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+000004e0: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+000004f0: 6f2d 7270 632d 7265 6469 733c 2f61 7274  o-rpc-redis</art\n+00000500: 6966 6163 7449 643e 0a20 203c 7665 7273  ifactId>.  <vers\n+00000510: 696f 6e3e 322e 372e 3130 3c2f 7665 7273  ion>2.7.10</vers\n+00000520: 696f 6e3e 0a20 203c 6e61 6d65 3e24 7b70  ion>.  <name>${p\n+00000530: 726f 6a65 6374 2e61 7274 6966 6163 7449  roject.artifactI\n+00000540: 647d 3c2f 6e61 6d65 3e0a 2020 3c64 6573  d}</name>.  <des\n+00000550: 6372 6970 7469 6f6e 3e54 6865 2072 6564  cription>The red\n+00000560: 6973 2072 7063 206d 6f64 756c 6520 6f66  is rpc module of\n+00000570: 2064 7562 626f 2070 726f 6a65 6374 3c2f   dubbo project</\n+00000580: 6465 7363 7269 7074 696f 6e3e 0a20 203c  description>.  <\n+00000590: 6c69 6365 6e73 6573 3e0a 2020 2020 3c6c  licenses>.    <l\n+000005a0: 6963 656e 7365 3e0a 2020 2020 2020 3c6e  icense>.      <n\n+000005b0: 616d 653e 4170 6163 6865 204c 6963 656e  ame>Apache Licen\n+000005c0: 7365 2c20 5665 7273 696f 6e20 322e 303c  se, Version 2.0<\n+000005d0: 2f6e 616d 653e 0a20 2020 2020 203c 7572  /name>.      <ur\n+000005e0: 6c3e 6874 7470 3a2f 2f77 7777 2e61 7061  l>http://www.apa\n+000005f0: 6368 652e 6f72 672f 6c69 6365 6e73 6573  che.org/licenses\n+00000600: 2f4c 4943 454e 5345 2d32 2e30 3c2f 7572  /LICENSE-2.0</ur\n+00000610: 6c3e 0a20 2020 2020 203c 6469 7374 7269  l>.      <distri\n+00000620: 6275 7469 6f6e 3e72 6570 6f3c 2f64 6973  bution>repo</dis\n+00000630: 7472 6962 7574 696f 6e3e 0a20 2020 203c  tribution>.    <\n+00000640: 2f6c 6963 656e 7365 3e0a 2020 3c2f 6c69  /license>.  </li\n+00000650: 6365 6e73 6573 3e0a 2020 3c70 726f 7065  censes>.  <prope\n+00000660: 7274 6965 733e 0a20 2020 203c 736b 6970  rties>.    <skip\n+00000670: 5f6d 6176 656e 5f64 6570 6c6f 793e 6661  _maven_deploy>fa\n+00000680: 6c73 653c 2f73 6b69 705f 6d61 7665 6e5f  lse</skip_maven_\n+00000690: 6465 706c 6f79 3e0a 2020 3c2f 7072 6f70  deploy>.  </prop\n+000006a0: 6572 7469 6573 3e0a 2020 3c64 6570 656e  erties>.  <depen\n+000006b0: 6465 6e63 6965 733e 0a20 2020 203c 6465  dencies>.    <de\n+000006c0: 7065 6e64 656e 6379 3e0a 2020 2020 2020  pendency>.      \n+000006d0: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n+000006e0: 6368 652e 6475 6262 6f3c 2f67 726f 7570  che.dubbo</group\n+000006f0: 4964 3e0a 2020 2020 2020 3c61 7274 6966  Id>.      <artif\n+00000700: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n+00000710: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n+00000720: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n+00000730: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n+00000740: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n+00000750: 6f6e 3e0a 2020 2020 3c2f 6465 7065 6e64  on>.    </depend\n+00000760: 656e 6379 3e0a 2020 2020 3c64 6570 656e  ency>.    <depen\n+00000770: 6465 6e63 793e 0a20 2020 2020 203c 6772  dency>.      <gr\n+00000780: 6f75 7049 643e 7265 6469 732e 636c 6965  oupId>redis.clie\n+00000790: 6e74 733c 2f67 726f 7570 4964 3e0a 2020  nts</groupId>.  \n+000007a0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+000007b0: 6a65 6469 733c 2f61 7274 6966 6163 7449  jedis</artifactI\n+000007c0: 643e 0a20 2020 203c 2f64 6570 656e 6465  d>.    </depende\n+000007d0: 6e63 793e 0a20 2020 203c 6465 7065 6e64  ncy>.    <depend\n+000007e0: 656e 6379 3e0a 2020 2020 2020 3c67 726f  ency>.      <gro\n+000007f0: 7570 4964 3e63 6f6d 2e67 6974 6875 622e  upId>com.github.\n+00000800: 6b73 7479 7263 3c2f 6772 6f75 7049 643e  kstyrc</groupId>\n+00000810: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+00000820: 4964 3e65 6d62 6564 6465 642d 7265 6469  Id>embedded-redi\n+00000830: 733c 2f61 7274 6966 6163 7449 643e 0a20  s</artifactId>. \n+00000840: 2020 2020 203c 7363 6f70 653e 7465 7374       <scope>test\n+00000850: 3c2f 7363 6f70 653e 0a20 2020 203c 2f64  </scope>.    </d\n+00000860: 6570 656e 6465 6e63 793e 0a20 2020 203c  ependency>.    <\n+00000870: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000880: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+00000890: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n+000008a0: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+000008b0: 6966 6163 7449 643e 6475 6262 6f2d 7365  ifactId>dubbo-se\n+000008c0: 7269 616c 697a 6174 696f 6e2d 6a64 6b3c  rialization-jdk<\n+000008d0: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+000008e0: 2020 203c 7665 7273 696f 6e3e 247b 7072     <version>${pr\n+000008f0: 6f6a 6563 742e 7061 7265 6e74 2e76 6572  oject.parent.ver\n+00000900: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a  sion}</version>.\n+00000910: 2020 2020 2020 3c73 636f 7065 3e74 6573        <scope>tes\n+00000920: 743c 2f73 636f 7065 3e0a 2020 2020 3c2f  t</scope>.    </\n+00000930: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000940: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+00000950: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000960: 6170 6163 6865 2e63 6f6d 6d6f 6e73 3c2f  apache.commons</\n+00000970: 6772 6f75 7049 643e 0a20 2020 2020 203c  groupId>.      <\n+00000980: 6172 7469 6661 6374 4964 3e63 6f6d 6d6f  artifactId>commo\n+00000990: 6e73 2d6c 616e 6733 3c2f 6172 7469 6661  ns-lang3</artifa\n+000009a0: 6374 4964 3e0a 2020 2020 2020 3c73 636f  ctId>.      <sco\n+000009b0: 7065 3e74 6573 743c 2f73 636f 7065 3e0a  pe>test</scope>.\n+000009c0: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+000009d0: 3e0a 2020 3c2f 6465 7065 6e64 656e 6369  >.  </dependenci\n+000009e0: 6573 3e0a 3c2f 7072 6f6a 6563 743e 0a    es>.</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-rpc-rest/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-rpc-rest/pom.xml", "unified_diff": null, "details": [{"source1": "META-INF/maven/org.apache.dubbo/dubbo-rpc-rest/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-rpc-rest/pom.xml", "comments": ["Ordering differences only"], "unified_diff": "@@ -81,26 +81,26 @@\n       <artifactId>netty-all</artifactId>\n     </dependency>\n     <dependency>\n       <groupId>io.swagger</groupId>\n       <artifactId>swagger-annotations</artifactId>\n       <exclusions>\n         <exclusion>\n-          <artifactId>jsr311-api</artifactId>\n           <groupId>javax.ws.rs</groupId>\n+          <artifactId>jsr311-api</artifactId>\n         </exclusion>\n       </exclusions>\n     </dependency>\n     <dependency>\n       <groupId>io.swagger</groupId>\n       <artifactId>swagger-jaxrs</artifactId>\n       <exclusions>\n         <exclusion>\n-          <artifactId>jsr311-api</artifactId>\n           <groupId>javax.ws.rs</groupId>\n+          <artifactId>jsr311-api</artifactId>\n         </exclusion>\n       </exclusions>\n     </dependency>\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-serialization-jdk</artifactId>\n       <version>${project.parent.version}</version>\n"}]}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-rpc-xml/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-rpc-xml/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,179 +1,174 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 7063 3c2f 6172 7469 6661 6374  bo-rpc</artifact\n-000004a0: 4964 3e0d 0a20 2020 203c 7665 7273 696f  Id>..    <versio\n-000004b0: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n-000004c0: 6e3e 0d0a 2020 3c2f 7061 7265 6e74 3e0d  n>..  </parent>.\n-000004d0: 0a20 203c 6772 6f75 7049 643e 6f72 672e  .  <groupId>org.\n-000004e0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-000004f0: 6f75 7049 643e 0d0a 2020 3c61 7274 6966  oupId>..  <artif\n-00000500: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n-00000510: 786d 6c3c 2f61 7274 6966 6163 7449 643e  xml</artifactId>\n-00000520: 0d0a 2020 3c76 6572 7369 6f6e 3e32 2e37  ..  <version>2.7\n-00000530: 2e31 303c 2f76 6572 7369 6f6e 3e0d 0a20  .10</version>.. \n-00000540: 203c 6e61 6d65 3e24 7b70 726f 6a65 6374   <name>${project\n-00000550: 2e61 7274 6966 6163 7449 647d 3c2f 6e61  .artifactId}</na\n-00000560: 6d65 3e0d 0a20 203c 6465 7363 7269 7074  me>..  <descript\n-00000570: 696f 6e3e 5468 6520 786d 6c20 7270 6320  ion>The xml rpc \n-00000580: 6d6f 6475 6c65 206f 6620 6475 6262 6f20  module of dubbo \n-00000590: 7072 6f6a 6563 743c 2f64 6573 6372 6970  project</descrip\n-000005a0: 7469 6f6e 3e0d 0a20 203c 7572 6c3e 6874  tion>..  <url>ht\n-000005b0: 7470 733a 2f2f 6769 7468 7562 2e63 6f6d  tps://github.com\n-000005c0: 2f61 7061 6368 652f 6475 6262 6f3c 2f75  /apache/dubbo</u\n-000005d0: 726c 3e0d 0a20 203c 6c69 6365 6e73 6573  rl>..  <licenses\n-000005e0: 3e0d 0a20 2020 203c 6c69 6365 6e73 653e  >..    <license>\n-000005f0: 0d0a 2020 2020 2020 3c6e 616d 653e 4170  ..      <name>Ap\n-00000600: 6163 6865 204c 6963 656e 7365 2c20 5665  ache License, Ve\n-00000610: 7273 696f 6e20 322e 303c 2f6e 616d 653e  rsion 2.0</name>\n-00000620: 0d0a 2020 2020 2020 3c75 726c 3e68 7474  ..      <url>htt\n-00000630: 703a 2f2f 7777 772e 6170 6163 6865 2e6f  p://www.apache.o\n-00000640: 7267 2f6c 6963 656e 7365 732f 4c49 4345  rg/licenses/LICE\n-00000650: 4e53 452d 322e 303c 2f75 726c 3e0d 0a20  NSE-2.0</url>.. \n-00000660: 2020 2020 203c 6469 7374 7269 6275 7469       <distributi\n-00000670: 6f6e 3e72 6570 6f3c 2f64 6973 7472 6962  on>repo</distrib\n-00000680: 7574 696f 6e3e 0d0a 2020 2020 3c2f 6c69  ution>..    </li\n-00000690: 6365 6e73 653e 0d0a 2020 3c2f 6c69 6365  cense>..  </lice\n-000006a0: 6e73 6573 3e0d 0a20 203c 7072 6f70 6572  nses>..  <proper\n-000006b0: 7469 6573 3e0d 0a20 2020 203c 736b 6970  ties>..    <skip\n-000006c0: 5f6d 6176 656e 5f64 6570 6c6f 793e 6661  _maven_deploy>fa\n-000006d0: 6c73 653c 2f73 6b69 705f 6d61 7665 6e5f  lse</skip_maven_\n-000006e0: 6465 706c 6f79 3e0d 0a20 2020 203c 7072  deploy>..    <pr\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 7063  factId>dubbo-rpc\n+00000480: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000490: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n+000004a0: 303c 2f76 6572 7369 6f6e 3e0a 2020 3c2f  0</version>.  </\n+000004b0: 7061 7265 6e74 3e0a 2020 3c67 726f 7570  parent>.  <group\n+000004c0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+000004d0: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+000004e0: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+000004f0: 6f2d 7270 632d 786d 6c3c 2f61 7274 6966  o-rpc-xml</artif\n+00000500: 6163 7449 643e 0a20 203c 7665 7273 696f  actId>.  <versio\n+00000510: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n+00000520: 6e3e 0a20 203c 6e61 6d65 3e24 7b70 726f  n>.  <name>${pro\n+00000530: 6a65 6374 2e61 7274 6966 6163 7449 647d  ject.artifactId}\n+00000540: 3c2f 6e61 6d65 3e0a 2020 3c64 6573 6372  </name>.  <descr\n+00000550: 6970 7469 6f6e 3e54 6865 2078 6d6c 2072  iption>The xml r\n+00000560: 7063 206d 6f64 756c 6520 6f66 2064 7562  pc module of dub\n+00000570: 626f 2070 726f 6a65 6374 3c2f 6465 7363  bo project</desc\n+00000580: 7269 7074 696f 6e3e 0a20 203c 7572 6c3e  ription>.  <url>\n+00000590: 6874 7470 733a 2f2f 6769 7468 7562 2e63  https://github.c\n+000005a0: 6f6d 2f61 7061 6368 652f 6475 6262 6f3c  om/apache/dubbo<\n+000005b0: 2f75 726c 3e0a 2020 3c6c 6963 656e 7365  /url>.  <license\n+000005c0: 733e 0a20 2020 203c 6c69 6365 6e73 653e  s>.    <license>\n+000005d0: 0a20 2020 2020 203c 6e61 6d65 3e41 7061  .      <name>Apa\n+000005e0: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+000005f0: 7369 6f6e 2032 2e30 3c2f 6e61 6d65 3e0a  sion 2.0</name>.\n+00000600: 2020 2020 2020 3c75 726c 3e68 7474 703a        <url>http:\n+00000610: 2f2f 7777 772e 6170 6163 6865 2e6f 7267  //www.apache.org\n+00000620: 2f6c 6963 656e 7365 732f 4c49 4345 4e53  /licenses/LICENS\n+00000630: 452d 322e 303c 2f75 726c 3e0a 2020 2020  E-2.0</url>.    \n+00000640: 2020 3c64 6973 7472 6962 7574 696f 6e3e    <distribution>\n+00000650: 7265 706f 3c2f 6469 7374 7269 6275 7469  repo</distributi\n+00000660: 6f6e 3e0a 2020 2020 3c2f 6c69 6365 6e73  on>.    </licens\n+00000670: 653e 0a20 203c 2f6c 6963 656e 7365 733e  e>.  </licenses>\n+00000680: 0a20 203c 7072 6f70 6572 7469 6573 3e0a  .  <properties>.\n+00000690: 2020 2020 3c73 6b69 705f 6d61 7665 6e5f      <skip_maven_\n+000006a0: 6465 706c 6f79 3e66 616c 7365 3c2f 736b  deploy>false</sk\n+000006b0: 6970 5f6d 6176 656e 5f64 6570 6c6f 793e  ip_maven_deploy>\n+000006c0: 0a20 2020 203c 7072 6f6a 6563 742e 7265  .    <project.re\n+000006d0: 706f 7274 696e 672e 6f75 7470 7574 456e  porting.outputEn\n+000006e0: 636f 6469 6e67 3e55 5446 2d38 3c2f 7072  coding>UTF-8</pr\n 000006f0: 6f6a 6563 742e 7265 706f 7274 696e 672e  oject.reporting.\n-00000700: 6f75 7470 7574 456e 636f 6469 6e67 3e55  outputEncoding>U\n-00000710: 5446 2d38 3c2f 7072 6f6a 6563 742e 7265  TF-8</project.re\n-00000720: 706f 7274 696e 672e 6f75 7470 7574 456e  porting.outputEn\n-00000730: 636f 6469 6e67 3e0d 0a20 2020 203c 786d  coding>..    <xm\n-00000740: 6c72 7063 5f76 6572 7369 6f6e 3e33 2e31  lrpc_version>3.1\n-00000750: 2e33 3c2f 786d 6c72 7063 5f76 6572 7369  .3</xmlrpc_versi\n-00000760: 6f6e 3e0d 0a20 2020 203c 7072 6f6a 6563  on>..    <projec\n-00000770: 742e 6275 696c 642e 736f 7572 6365 456e  t.build.sourceEn\n-00000780: 636f 6469 6e67 3e55 5446 2d38 3c2f 7072  coding>UTF-8</pr\n-00000790: 6f6a 6563 742e 6275 696c 642e 736f 7572  oject.build.sour\n-000007a0: 6365 456e 636f 6469 6e67 3e0d 0a20 2020  ceEncoding>..   \n-000007b0: 203c 6d61 7665 6e2e 636f 6d70 696c 6572   <maven.compiler\n-000007c0: 2e73 6f75 7263 653e 312e 383c 2f6d 6176  .source>1.8</mav\n-000007d0: 656e 2e63 6f6d 7069 6c65 722e 736f 7572  en.compiler.sour\n-000007e0: 6365 3e0d 0a20 2020 203c 6d61 7665 6e2e  ce>..    <maven.\n-000007f0: 636f 6d70 696c 6572 2e74 6172 6765 743e  compiler.target>\n-00000800: 312e 383c 2f6d 6176 656e 2e63 6f6d 7069  1.8</maven.compi\n-00000810: 6c65 722e 7461 7267 6574 3e0d 0a20 203c  ler.target>..  <\n-00000820: 2f70 726f 7065 7274 6965 733e 0d0a 2020  /properties>..  \n-00000830: 3c64 6570 656e 6465 6e63 6965 733e 0d0a  <dependencies>..\n-00000840: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n-00000850: 0d0a 2020 2020 2020 3c67 726f 7570 4964  ..      <groupId\n-00000860: 3e6f 7267 2e61 7061 6368 652e 786d 6c72  >org.apache.xmlr\n-00000870: 7063 3c2f 6772 6f75 7049 643e 0d0a 2020  pc</groupId>..  \n-00000880: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-00000890: 786d 6c72 7063 2d73 6572 7665 723c 2f61  xmlrpc-server</a\n-000008a0: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-000008b0: 2020 3c76 6572 7369 6f6e 3e24 7b78 6d6c    <version>${xml\n-000008c0: 7270 635f 7665 7273 696f 6e7d 3c2f 7665  rpc_version}</ve\n-000008d0: 7273 696f 6e3e 0d0a 2020 2020 3c2f 6465  rsion>..    </de\n-000008e0: 7065 6e64 656e 6379 3e0d 0a20 2020 203c  pendency>..    <\n-000008f0: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000900: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n-00000910: 6170 6163 6865 2e78 6d6c 7270 633c 2f67  apache.xmlrpc</g\n-00000920: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-00000930: 6172 7469 6661 6374 4964 3e78 6d6c 7270  artifactId>xmlrp\n-00000940: 632d 636c 6965 6e74 3c2f 6172 7469 6661  c-client</artifa\n-00000950: 6374 4964 3e0d 0a20 2020 2020 203c 7665  ctId>..      <ve\n-00000960: 7273 696f 6e3e 247b 786d 6c72 7063 5f76  rsion>${xmlrpc_v\n-00000970: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n-00000980: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-00000990: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-000009a0: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-000009b0: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n-000009c0: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n-000009d0: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-000009e0: 6374 4964 3e64 7562 626f 2d72 656d 6f74  ctId>dubbo-remot\n-000009f0: 696e 672d 6874 7470 3c2f 6172 7469 6661  ing-http</artifa\n-00000a00: 6374 4964 3e0d 0a20 2020 2020 203c 7665  ctId>..      <ve\n-00000a10: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n-00000a20: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n-00000a30: 2f76 6572 7369 6f6e 3e0d 0a20 2020 203c  /version>..    <\n-00000a40: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-00000a50: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-00000a60: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n-00000a70: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000a80: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-00000a90: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000aa0: 626f 2d63 6f6d 7061 7469 626c 653c 2f61  bo-compatible</a\n-00000ab0: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-00000ac0: 2020 3c76 6572 7369 6f6e 3e24 7b70 726f    <version>${pro\n-00000ad0: 6a65 6374 2e70 6172 656e 742e 7665 7273  ject.parent.vers\n-00000ae0: 696f 6e7d 3c2f 7665 7273 696f 6e3e 0d0a  ion}</version>..\n-00000af0: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n-00000b00: 3e0d 0a20 203c 2f64 6570 656e 6465 6e63  >..  </dependenc\n-00000b10: 6965 733e 0d0a 3c2f 7072 6f6a 6563 743e  ies>..</project>\n-00000b20: 0d0a                                     ..\n+00000700: 6f75 7470 7574 456e 636f 6469 6e67 3e0a  outputEncoding>.\n+00000710: 2020 2020 3c78 6d6c 7270 635f 7665 7273      <xmlrpc_vers\n+00000720: 696f 6e3e 332e 312e 333c 2f78 6d6c 7270  ion>3.1.3</xmlrp\n+00000730: 635f 7665 7273 696f 6e3e 0a20 2020 203c  c_version>.    <\n+00000740: 7072 6f6a 6563 742e 6275 696c 642e 736f  project.build.so\n+00000750: 7572 6365 456e 636f 6469 6e67 3e55 5446  urceEncoding>UTF\n+00000760: 2d38 3c2f 7072 6f6a 6563 742e 6275 696c  -8</project.buil\n+00000770: 642e 736f 7572 6365 456e 636f 6469 6e67  d.sourceEncoding\n+00000780: 3e0a 2020 2020 3c6d 6176 656e 2e63 6f6d  >.    <maven.com\n+00000790: 7069 6c65 722e 736f 7572 6365 3e31 2e38  piler.source>1.8\n+000007a0: 3c2f 6d61 7665 6e2e 636f 6d70 696c 6572  </maven.compiler\n+000007b0: 2e73 6f75 7263 653e 0a20 2020 203c 6d61  .source>.    <ma\n+000007c0: 7665 6e2e 636f 6d70 696c 6572 2e74 6172  ven.compiler.tar\n+000007d0: 6765 743e 312e 383c 2f6d 6176 656e 2e63  get>1.8</maven.c\n+000007e0: 6f6d 7069 6c65 722e 7461 7267 6574 3e0a  ompiler.target>.\n+000007f0: 2020 3c2f 7072 6f70 6572 7469 6573 3e0a    </properties>.\n+00000800: 2020 3c64 6570 656e 6465 6e63 6965 733e    <dependencies>\n+00000810: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+00000820: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+00000830: 3e6f 7267 2e61 7061 6368 652e 786d 6c72  >org.apache.xmlr\n+00000840: 7063 3c2f 6772 6f75 7049 643e 0a20 2020  pc</groupId>.   \n+00000850: 2020 203c 6172 7469 6661 6374 4964 3e78     <artifactId>x\n+00000860: 6d6c 7270 632d 7365 7276 6572 3c2f 6172  mlrpc-server</ar\n+00000870: 7469 6661 6374 4964 3e0a 2020 2020 2020  tifactId>.      \n+00000880: 3c76 6572 7369 6f6e 3e24 7b78 6d6c 7270  <version>${xmlrp\n+00000890: 635f 7665 7273 696f 6e7d 3c2f 7665 7273  c_version}</vers\n+000008a0: 696f 6e3e 0a20 2020 203c 2f64 6570 656e  ion>.    </depen\n+000008b0: 6465 6e63 793e 0a20 2020 203c 6465 7065  dency>.    <depe\n+000008c0: 6e64 656e 6379 3e0a 2020 2020 2020 3c67  ndency>.      <g\n+000008d0: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n+000008e0: 652e 786d 6c72 7063 3c2f 6772 6f75 7049  e.xmlrpc</groupI\n+000008f0: 643e 0a20 2020 2020 203c 6172 7469 6661  d>.      <artifa\n+00000900: 6374 4964 3e78 6d6c 7270 632d 636c 6965  ctId>xmlrpc-clie\n+00000910: 6e74 3c2f 6172 7469 6661 6374 4964 3e0a  nt</artifactId>.\n+00000920: 2020 2020 2020 3c76 6572 7369 6f6e 3e24        <version>$\n+00000930: 7b78 6d6c 7270 635f 7665 7273 696f 6e7d  {xmlrpc_version}\n+00000940: 3c2f 7665 7273 696f 6e3e 0a20 2020 203c  </version>.    <\n+00000950: 2f64 6570 656e 6465 6e63 793e 0a20 2020  /dependency>.   \n+00000960: 203c 6465 7065 6e64 656e 6379 3e0a 2020   <dependency>.  \n+00000970: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n+00000980: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n+00000990: 726f 7570 4964 3e0a 2020 2020 2020 3c61  roupId>.      <a\n+000009a0: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n+000009b0: 7265 6d6f 7469 6e67 2d68 7474 703c 2f61  remoting-http</a\n+000009c0: 7274 6966 6163 7449 643e 0a20 2020 2020  rtifactId>.     \n+000009d0: 203c 7665 7273 696f 6e3e 247b 7072 6f6a   <version>${proj\n+000009e0: 6563 742e 7061 7265 6e74 2e76 6572 7369  ect.parent.versi\n+000009f0: 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a 2020  on}</version>.  \n+00000a00: 2020 3c2f 6465 7065 6e64 656e 6379 3e0a    </dependency>.\n+00000a10: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+00000a20: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+00000a30: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+00000a40: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+00000a50: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+00000a60: 626f 2d63 6f6d 7061 7469 626c 653c 2f61  bo-compatible</a\n+00000a70: 7274 6966 6163 7449 643e 0a20 2020 2020  rtifactId>.     \n+00000a80: 203c 7665 7273 696f 6e3e 247b 7072 6f6a   <version>${proj\n+00000a90: 6563 742e 7061 7265 6e74 2e76 6572 7369  ect.parent.versi\n+00000aa0: 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a 2020  on}</version>.  \n+00000ab0: 2020 3c2f 6465 7065 6e64 656e 6379 3e0a    </dependency>.\n+00000ac0: 2020 3c2f 6465 7065 6e64 656e 6369 6573    </dependencies\n+00000ad0: 3e0a 3c2f 7072 6f6a 6563 743e 0a         >.</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-rpc-grpc/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,173 +1,168 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 7063 3c2f 6172 7469 6661 6374  bo-rpc</artifact\n-000004a0: 4964 3e0d 0a20 2020 203c 7665 7273 696f  Id>..    <versio\n-000004b0: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n-000004c0: 6e3e 0d0a 2020 3c2f 7061 7265 6e74 3e0d  n>..  </parent>.\n-000004d0: 0a20 203c 6772 6f75 7049 643e 6f72 672e  .  <groupId>org.\n-000004e0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-000004f0: 6f75 7049 643e 0d0a 2020 3c61 7274 6966  oupId>..  <artif\n-00000500: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n-00000510: 6772 7063 3c2f 6172 7469 6661 6374 4964  grpc</artifactId\n-00000520: 3e0d 0a20 203c 7665 7273 696f 6e3e 322e  >..  <version>2.\n-00000530: 372e 3130 3c2f 7665 7273 696f 6e3e 0d0a  7.10</version>..\n-00000540: 2020 3c6e 616d 653e 247b 7072 6f6a 6563    <name>${projec\n-00000550: 742e 6172 7469 6661 6374 4964 7d3c 2f6e  t.artifactId}</n\n-00000560: 616d 653e 0d0a 2020 3c64 6573 6372 6970  ame>..  <descrip\n-00000570: 7469 6f6e 3e54 6865 2067 5250 4320 696e  tion>The gRPC in\n-00000580: 7465 6772 6174 696f 6e20 6d6f 6475 6c65  tegration module\n-00000590: 3c2f 6465 7363 7269 7074 696f 6e3e 0d0a  </description>..\n-000005a0: 2020 3c6c 6963 656e 7365 733e 0d0a 2020    <licenses>..  \n-000005b0: 2020 3c6c 6963 656e 7365 3e0d 0a20 2020    <license>..   \n-000005c0: 2020 203c 6e61 6d65 3e41 7061 6368 6520     <name>Apache \n-000005d0: 4c69 6365 6e73 652c 2056 6572 7369 6f6e  License, Version\n-000005e0: 2032 2e30 3c2f 6e61 6d65 3e0d 0a20 2020   2.0</name>..   \n-000005f0: 2020 203c 7572 6c3e 6874 7470 3a2f 2f77     <url>http://w\n-00000600: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-00000610: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000620: 2e30 3c2f 7572 6c3e 0d0a 2020 2020 2020  .0</url>..      \n-00000630: 3c64 6973 7472 6962 7574 696f 6e3e 7265  <distribution>re\n-00000640: 706f 3c2f 6469 7374 7269 6275 7469 6f6e  po</distribution\n-00000650: 3e0d 0a20 2020 203c 2f6c 6963 656e 7365  >..    </license\n-00000660: 3e0d 0a20 203c 2f6c 6963 656e 7365 733e  >..  </licenses>\n-00000670: 0d0a 2020 3c70 726f 7065 7274 6965 733e  ..  <properties>\n-00000680: 0d0a 2020 2020 3c73 6b69 705f 6d61 7665  ..    <skip_mave\n-00000690: 6e5f 6465 706c 6f79 3e66 616c 7365 3c2f  n_deploy>false</\n-000006a0: 736b 6970 5f6d 6176 656e 5f64 6570 6c6f  skip_maven_deplo\n-000006b0: 793e 0d0a 2020 3c2f 7072 6f70 6572 7469  y>..  </properti\n-000006c0: 6573 3e0d 0a20 203c 6465 7065 6e64 656e  es>..  <dependen\n-000006d0: 6369 6573 3e0d 0a20 2020 203c 6465 7065  cies>..    <depe\n-000006e0: 6e64 656e 6379 3e0d 0a20 2020 2020 203c  ndency>..      <\n-000006f0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n-00000700: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n-00000710: 643e 0d0a 2020 2020 2020 3c61 7274 6966  d>..      <artif\n-00000720: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n-00000730: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n-00000740: 0d0a 2020 2020 2020 3c76 6572 7369 6f6e  ..      <version\n-00000750: 3e24 7b70 726f 6a65 6374 2e70 6172 656e  >${project.paren\n-00000760: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n-00000770: 696f 6e3e 0d0a 2020 2020 3c2f 6465 7065  ion>..    </depe\n-00000780: 6e64 656e 6379 3e0d 0a20 2020 203c 6465  ndency>..    <de\n-00000790: 7065 6e64 656e 6379 3e0d 0a20 2020 2020  pendency>..     \n-000007a0: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n-000007b0: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n-000007c0: 7049 643e 0d0a 2020 2020 2020 3c61 7274  pId>..      <art\n-000007d0: 6966 6163 7449 643e 6475 6262 6f2d 7265  ifactId>dubbo-re\n-000007e0: 6d6f 7469 6e67 2d68 7474 703c 2f61 7274  moting-http</art\n-000007f0: 6966 6163 7449 643e 0d0a 2020 2020 2020  ifactId>..      \n-00000800: 3c76 6572 7369 6f6e 3e24 7b70 726f 6a65  <version>${proje\n-00000810: 6374 2e70 6172 656e 742e 7665 7273 696f  ct.parent.versio\n-00000820: 6e7d 3c2f 7665 7273 696f 6e3e 0d0a 2020  n}</version>..  \n-00000830: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-00000840: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-00000850: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-00000860: 643e 696f 2e67 7270 633c 2f67 726f 7570  d>io.grpc</group\n-00000870: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-00000880: 6661 6374 4964 3e67 7270 632d 6e65 7474  factId>grpc-nett\n-00000890: 793c 2f61 7274 6966 6163 7449 643e 0d0a  y</artifactId>..\n-000008a0: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n-000008b0: 3e0d 0a20 2020 203c 6465 7065 6e64 656e  >..    <dependen\n-000008c0: 6379 3e0d 0a20 2020 2020 203c 6772 6f75  cy>..      <grou\n-000008d0: 7049 643e 696f 2e67 7270 633c 2f67 726f  pId>io.grpc</gro\n-000008e0: 7570 4964 3e0d 0a20 2020 2020 203c 6172  upId>..      <ar\n-000008f0: 7469 6661 6374 4964 3e67 7270 632d 7072  tifactId>grpc-pr\n-00000900: 6f74 6f62 7566 3c2f 6172 7469 6661 6374  otobuf</artifact\n-00000910: 4964 3e0d 0a20 2020 203c 2f64 6570 656e  Id>..    </depen\n-00000920: 6465 6e63 793e 0d0a 2020 2020 3c64 6570  dency>..    <dep\n-00000930: 656e 6465 6e63 793e 0d0a 2020 2020 2020  endency>..      \n-00000940: 3c67 726f 7570 4964 3e69 6f2e 6772 7063  <groupId>io.grpc\n-00000950: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-00000960: 2020 3c61 7274 6966 6163 7449 643e 6772    <artifactId>gr\n-00000970: 7063 2d73 7475 623c 2f61 7274 6966 6163  pc-stub</artifac\n-00000980: 7449 643e 0d0a 2020 2020 3c2f 6465 7065  tId>..    </depe\n-00000990: 6e64 656e 6379 3e0d 0a20 2020 203c 6465  ndency>..    <de\n-000009a0: 7065 6e64 656e 6379 3e0d 0a20 2020 2020  pendency>..     \n-000009b0: 203c 6772 6f75 7049 643e 696f 2e67 7270   <groupId>io.grp\n-000009c0: 633c 2f67 726f 7570 4964 3e0d 0a20 2020  c</groupId>..   \n-000009d0: 2020 203c 6172 7469 6661 6374 4964 3e67     <artifactId>g\n-000009e0: 7270 632d 636f 7265 3c2f 6172 7469 6661  rpc-core</artifa\n-000009f0: 6374 4964 3e0d 0a20 2020 203c 2f64 6570  ctId>..    </dep\n-00000a00: 656e 6465 6e63 793e 0d0a 2020 2020 3c64  endency>..    <d\n-00000a10: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000a20: 2020 3c67 726f 7570 4964 3e6f 7267 2e73    <groupId>org.s\n-00000a30: 7072 696e 6766 7261 6d65 776f 726b 3c2f  pringframework</\n-00000a40: 6772 6f75 7049 643e 0d0a 2020 2020 2020  groupId>..      \n-00000a50: 3c61 7274 6966 6163 7449 643e 7370 7269  <artifactId>spri\n-00000a60: 6e67 2d74 6573 743c 2f61 7274 6966 6163  ng-test</artifac\n-00000a70: 7449 643e 0d0a 2020 2020 2020 3c73 636f  tId>..      <sco\n-00000a80: 7065 3e74 6573 743c 2f73 636f 7065 3e0d  pe>test</scope>.\n-00000a90: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-00000aa0: 793e 0d0a 2020 3c2f 6465 7065 6e64 656e  y>..  </dependen\n-00000ab0: 6369 6573 3e0d 0a3c 2f70 726f 6a65 6374  cies>..</project\n-00000ac0: 3e0d 0a                                  >..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 7063  factId>dubbo-rpc\n+00000480: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000490: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n+000004a0: 303c 2f76 6572 7369 6f6e 3e0a 2020 3c2f  0</version>.  </\n+000004b0: 7061 7265 6e74 3e0a 2020 3c67 726f 7570  parent>.  <group\n+000004c0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+000004d0: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+000004e0: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+000004f0: 6f2d 7270 632d 6772 7063 3c2f 6172 7469  o-rpc-grpc</arti\n+00000500: 6661 6374 4964 3e0a 2020 3c76 6572 7369  factId>.  <versi\n+00000510: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n+00000520: 6f6e 3e0a 2020 3c6e 616d 653e 247b 7072  on>.  <name>${pr\n+00000530: 6f6a 6563 742e 6172 7469 6661 6374 4964  oject.artifactId\n+00000540: 7d3c 2f6e 616d 653e 0a20 203c 6465 7363  }</name>.  <desc\n+00000550: 7269 7074 696f 6e3e 5468 6520 6752 5043  ription>The gRPC\n+00000560: 2069 6e74 6567 7261 7469 6f6e 206d 6f64   integration mod\n+00000570: 756c 653c 2f64 6573 6372 6970 7469 6f6e  ule</description\n+00000580: 3e0a 2020 3c6c 6963 656e 7365 733e 0a20  >.  <licenses>. \n+00000590: 2020 203c 6c69 6365 6e73 653e 0a20 2020     <license>.   \n+000005a0: 2020 203c 6e61 6d65 3e41 7061 6368 6520     <name>Apache \n+000005b0: 4c69 6365 6e73 652c 2056 6572 7369 6f6e  License, Version\n+000005c0: 2032 2e30 3c2f 6e61 6d65 3e0a 2020 2020   2.0</name>.    \n+000005d0: 2020 3c75 726c 3e68 7474 703a 2f2f 7777    <url>http://ww\n+000005e0: 772e 6170 6163 6865 2e6f 7267 2f6c 6963  w.apache.org/lic\n+000005f0: 656e 7365 732f 4c49 4345 4e53 452d 322e  enses/LICENSE-2.\n+00000600: 303c 2f75 726c 3e0a 2020 2020 2020 3c64  0</url>.      <d\n+00000610: 6973 7472 6962 7574 696f 6e3e 7265 706f  istribution>repo\n+00000620: 3c2f 6469 7374 7269 6275 7469 6f6e 3e0a  </distribution>.\n+00000630: 2020 2020 3c2f 6c69 6365 6e73 653e 0a20      </license>. \n+00000640: 203c 2f6c 6963 656e 7365 733e 0a20 203c   </licenses>.  <\n+00000650: 7072 6f70 6572 7469 6573 3e0a 2020 2020  properties>.    \n+00000660: 3c73 6b69 705f 6d61 7665 6e5f 6465 706c  <skip_maven_depl\n+00000670: 6f79 3e66 616c 7365 3c2f 736b 6970 5f6d  oy>false</skip_m\n+00000680: 6176 656e 5f64 6570 6c6f 793e 0a20 203c  aven_deploy>.  <\n+00000690: 2f70 726f 7065 7274 6965 733e 0a20 203c  /properties>.  <\n+000006a0: 6465 7065 6e64 656e 6369 6573 3e0a 2020  dependencies>.  \n+000006b0: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+000006c0: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n+000006d0: 672e 6170 6163 6865 2e64 7562 626f 3c2f  g.apache.dubbo</\n+000006e0: 6772 6f75 7049 643e 0a20 2020 2020 203c  groupId>.      <\n+000006f0: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n+00000700: 2d72 7063 2d61 7069 3c2f 6172 7469 6661  -rpc-api</artifa\n+00000710: 6374 4964 3e0a 2020 2020 2020 3c76 6572  ctId>.      <ver\n+00000720: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n+00000730: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n+00000740: 7665 7273 696f 6e3e 0a20 2020 203c 2f64  version>.    </d\n+00000750: 6570 656e 6465 6e63 793e 0a20 2020 203c  ependency>.    <\n+00000760: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000770: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+00000780: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n+00000790: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+000007a0: 6966 6163 7449 643e 6475 6262 6f2d 7265  ifactId>dubbo-re\n+000007b0: 6d6f 7469 6e67 2d68 7474 703c 2f61 7274  moting-http</art\n+000007c0: 6966 6163 7449 643e 0a20 2020 2020 203c  ifactId>.      <\n+000007d0: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n+000007e0: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n+000007f0: 7d3c 2f76 6572 7369 6f6e 3e0a 2020 2020  }</version>.    \n+00000800: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+00000810: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+00000820: 2020 2020 203c 6772 6f75 7049 643e 696f       <groupId>io\n+00000830: 2e67 7270 633c 2f67 726f 7570 4964 3e0a  .grpc</groupId>.\n+00000840: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n+00000850: 643e 6772 7063 2d6e 6574 7479 3c2f 6172  d>grpc-netty</ar\n+00000860: 7469 6661 6374 4964 3e0a 2020 2020 3c2f  tifactId>.    </\n+00000870: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000880: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+00000890: 2020 203c 6772 6f75 7049 643e 696f 2e67     <groupId>io.g\n+000008a0: 7270 633c 2f67 726f 7570 4964 3e0a 2020  rpc</groupId>.  \n+000008b0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+000008c0: 6772 7063 2d70 726f 746f 6275 663c 2f61  grpc-protobuf</a\n+000008d0: 7274 6966 6163 7449 643e 0a20 2020 203c  rtifactId>.    <\n+000008e0: 2f64 6570 656e 6465 6e63 793e 0a20 2020  /dependency>.   \n+000008f0: 203c 6465 7065 6e64 656e 6379 3e0a 2020   <dependency>.  \n+00000900: 2020 2020 3c67 726f 7570 4964 3e69 6f2e      <groupId>io.\n+00000910: 6772 7063 3c2f 6772 6f75 7049 643e 0a20  grpc</groupId>. \n+00000920: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n+00000930: 3e67 7270 632d 7374 7562 3c2f 6172 7469  >grpc-stub</arti\n+00000940: 6661 6374 4964 3e0a 2020 2020 3c2f 6465  factId>.    </de\n+00000950: 7065 6e64 656e 6379 3e0a 2020 2020 3c64  pendency>.    <d\n+00000960: 6570 656e 6465 6e63 793e 0a20 2020 2020  ependency>.     \n+00000970: 203c 6772 6f75 7049 643e 696f 2e67 7270   <groupId>io.grp\n+00000980: 633c 2f67 726f 7570 4964 3e0a 2020 2020  c</groupId>.    \n+00000990: 2020 3c61 7274 6966 6163 7449 643e 6772    <artifactId>gr\n+000009a0: 7063 2d63 6f72 653c 2f61 7274 6966 6163  pc-core</artifac\n+000009b0: 7449 643e 0a20 2020 203c 2f64 6570 656e  tId>.    </depen\n+000009c0: 6465 6e63 793e 0a20 2020 203c 6465 7065  dency>.    <depe\n+000009d0: 6e64 656e 6379 3e0a 2020 2020 2020 3c67  ndency>.      <g\n+000009e0: 726f 7570 4964 3e6f 7267 2e73 7072 696e  roupId>org.sprin\n+000009f0: 6766 7261 6d65 776f 726b 3c2f 6772 6f75  gframework</grou\n+00000a00: 7049 643e 0a20 2020 2020 203c 6172 7469  pId>.      <arti\n+00000a10: 6661 6374 4964 3e73 7072 696e 672d 7465  factId>spring-te\n+00000a20: 7374 3c2f 6172 7469 6661 6374 4964 3e0a  st</artifactId>.\n+00000a30: 2020 2020 2020 3c73 636f 7065 3e74 6573        <scope>tes\n+00000a40: 743c 2f73 636f 7065 3e0a 2020 2020 3c2f  t</scope>.    </\n+00000a50: 6465 7065 6e64 656e 6379 3e0a 2020 3c2f  dependency>.  </\n+00000a60: 6465 7065 6e64 656e 6369 6573 3e0a 3c2f  dependencies>.</\n+00000a70: 7072 6f6a 6563 743e 0a                   project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-registry-api/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-registry-api/pom.xml", "unified_diff": null, "details": [{"source1": "META-INF/maven/org.apache.dubbo/dubbo-registry-api/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-registry-api/pom.xml", "comments": ["Ordering differences only"], "unified_diff": "@@ -50,20 +50,20 @@\n     </dependency>\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-container-api</artifactId>\n       <version>${project.parent.version}</version>\n       <exclusions>\n         <exclusion>\n-          <artifactId>jetty-server</artifactId>\n           <groupId>org.eclipse.jetty</groupId>\n+          <artifactId>jetty-server</artifactId>\n         </exclusion>\n         <exclusion>\n-          <artifactId>jetty-servlet</artifactId>\n           <groupId>org.eclipse.jetty</groupId>\n+          <artifactId>jetty-servlet</artifactId>\n         </exclusion>\n       </exclusions>\n     </dependency>\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-metadata-api</artifactId>\n       <version>${project.parent.version}</version>\n"}]}, {"source1": "META-INF/assembly/bin/dump.sh", "source2": "META-INF/assembly/bin/dump.sh", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,108 +1,108 @@\n-#!/bin/bash\n-\n-# Licensed to the Apache Software Foundation (ASF) under one or more\n-# contributor license agreements.  See the NOTICE file distributed with\n-# this work for additional information regarding copyright ownership.\n-# The ASF licenses this file to You under the Apache License, Version 2.0\n-# (the \"License\"); you may not use this file except in compliance with\n-# the License.  You may obtain a copy of the License at\n-#\n-#     http://www.apache.org/licenses/LICENSE-2.0\n-#\n-# Unless required by applicable law or agreed to in writing, software\n-# distributed under the License is distributed on an \"AS IS\" BASIS,\n-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n-# See the License for the specific language governing permissions and\n-# limitations under the License.\n-\n-cd `dirname $0`\n-BIN_DIR=`pwd`\n-cd ..\n-DEPLOY_DIR=`pwd`\n-CONF_DIR=$DEPLOY_DIR/conf\n-\n-SERVER_NAME=`sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\\r'`\n-LOGS_FILE=`sed '/dubbo.log4j.file/!d;s/.*=//' conf/dubbo.properties | tr -d '\\r'`\n-\n-if [ -z \"$SERVER_NAME\" ]; then\n-\tSERVER_NAME=`hostname`\n-fi\n-\n-PIDS=`ps -ef | grep java | grep -v grep | grep \"$CONF_DIR\" |awk '{print $2}'`\n-if [ -z \"$PIDS\" ]; then\n-    echo \"ERROR: The $SERVER_NAME does not started!\"\n-    exit 1\n-fi\n-\n-LOGS_DIR=\"\"\n-if [ -n \"$LOGS_FILE\" ]; then\n-\tLOGS_DIR=`dirname $LOGS_FILE`\n-else\n-\tLOGS_DIR=$DEPLOY_DIR/logs\n-fi\n-if [ ! -d $LOGS_DIR ]; then\n-\tmkdir $LOGS_DIR\n-fi\n-DUMP_DIR=$LOGS_DIR/dump\n-if [ ! -d $DUMP_DIR ]; then\n-\tmkdir $DUMP_DIR\n-fi\n-DUMP_DATE=`date +%Y%m%d%H%M%S`\n-DATE_DIR=$DUMP_DIR/$DUMP_DATE\n-if [ ! -d $DATE_DIR ]; then\n-\tmkdir $DATE_DIR\n-fi\n-\n-echo -e \"Dumping the $SERVER_NAME ...\\c\"\n-for PID in $PIDS ; do\n-\tjstack $PID > $DATE_DIR/jstack-$PID.dump 2>&1\n-\techo -e \".\\c\"\n-\tjinfo $PID > $DATE_DIR/jinfo-$PID.dump 2>&1\n-\techo -e \".\\c\"\n-\tjstat -gcutil $PID > $DATE_DIR/jstat-gcutil-$PID.dump 2>&1\n-\techo -e \".\\c\"\n-\tjstat -gccapacity $PID > $DATE_DIR/jstat-gccapacity-$PID.dump 2>&1\n-\techo -e \".\\c\"\n-\tjmap $PID > $DATE_DIR/jmap-$PID.dump 2>&1\n-\techo -e \".\\c\"\n-\tjmap -heap $PID > $DATE_DIR/jmap-heap-$PID.dump 2>&1\n-\techo -e \".\\c\"\n-\tjmap -histo $PID > $DATE_DIR/jmap-histo-$PID.dump 2>&1\n-\techo -e \".\\c\"\n-\tif [ -r /usr/sbin/lsof ]; then\n-\t/usr/sbin/lsof -p $PID > $DATE_DIR/lsof-$PID.dump\n-\techo -e \".\\c\"\n-\tfi\n-done\n-\n-if [ -r /bin/netstat ]; then\n-/bin/netstat -an > $DATE_DIR/netstat.dump 2>&1\n-echo -e \".\\c\"\n-fi\n-if [ -r /usr/bin/iostat ]; then\n-/usr/bin/iostat > $DATE_DIR/iostat.dump 2>&1\n-echo -e \".\\c\"\n-fi\n-if [ -r /usr/bin/mpstat ]; then\n-/usr/bin/mpstat > $DATE_DIR/mpstat.dump 2>&1\n-echo -e \".\\c\"\n-fi\n-if [ -r /usr/bin/vmstat ]; then\n-/usr/bin/vmstat > $DATE_DIR/vmstat.dump 2>&1\n-echo -e \".\\c\"\n-fi\n-if [ -r /usr/bin/free ]; then\n-/usr/bin/free -t > $DATE_DIR/free.dump 2>&1\n-echo -e \".\\c\"\n-fi\n-if [ -r /usr/bin/sar ]; then\n-/usr/bin/sar > $DATE_DIR/sar.dump 2>&1\n-echo -e \".\\c\"\n-fi\n-if [ -r /usr/bin/uptime ]; then\n-/usr/bin/uptime > $DATE_DIR/uptime.dump 2>&1\n-echo -e \".\\c\"\n-fi\n-\n-echo \"OK!\"\n-echo \"DUMP: $DATE_DIR\"\n+#!/bin/bash\r\n+\r\n+# Licensed to the Apache Software Foundation (ASF) under one or more\r\n+# contributor license agreements.  See the NOTICE file distributed with\r\n+# this work for additional information regarding copyright ownership.\r\n+# The ASF licenses this file to You under the Apache License, Version 2.0\r\n+# (the \"License\"); you may not use this file except in compliance with\r\n+# the License.  You may obtain a copy of the License at\r\n+#\r\n+#     http://www.apache.org/licenses/LICENSE-2.0\r\n+#\r\n+# Unless required by applicable law or agreed to in writing, software\r\n+# distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+# See the License for the specific language governing permissions and\r\n+# limitations under the License.\r\n+\r\n+cd `dirname $0`\r\n+BIN_DIR=`pwd`\r\n+cd ..\r\n+DEPLOY_DIR=`pwd`\r\n+CONF_DIR=$DEPLOY_DIR/conf\r\n+\r\n+SERVER_NAME=`sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\\r'`\r\n+LOGS_FILE=`sed '/dubbo.log4j.file/!d;s/.*=//' conf/dubbo.properties | tr -d '\\r'`\r\n+\r\n+if [ -z \"$SERVER_NAME\" ]; then\r\n+\tSERVER_NAME=`hostname`\r\n+fi\r\n+\r\n+PIDS=`ps -ef | grep java | grep -v grep | grep \"$CONF_DIR\" |awk '{print $2}'`\r\n+if [ -z \"$PIDS\" ]; then\r\n+    echo \"ERROR: The $SERVER_NAME does not started!\"\r\n+    exit 1\r\n+fi\r\n+\r\n+LOGS_DIR=\"\"\r\n+if [ -n \"$LOGS_FILE\" ]; then\r\n+\tLOGS_DIR=`dirname $LOGS_FILE`\r\n+else\r\n+\tLOGS_DIR=$DEPLOY_DIR/logs\r\n+fi\r\n+if [ ! -d $LOGS_DIR ]; then\r\n+\tmkdir $LOGS_DIR\r\n+fi\r\n+DUMP_DIR=$LOGS_DIR/dump\r\n+if [ ! -d $DUMP_DIR ]; then\r\n+\tmkdir $DUMP_DIR\r\n+fi\r\n+DUMP_DATE=`date +%Y%m%d%H%M%S`\r\n+DATE_DIR=$DUMP_DIR/$DUMP_DATE\r\n+if [ ! -d $DATE_DIR ]; then\r\n+\tmkdir $DATE_DIR\r\n+fi\r\n+\r\n+echo -e \"Dumping the $SERVER_NAME ...\\c\"\r\n+for PID in $PIDS ; do\r\n+\tjstack $PID > $DATE_DIR/jstack-$PID.dump 2>&1\r\n+\techo -e \".\\c\"\r\n+\tjinfo $PID > $DATE_DIR/jinfo-$PID.dump 2>&1\r\n+\techo -e \".\\c\"\r\n+\tjstat -gcutil $PID > $DATE_DIR/jstat-gcutil-$PID.dump 2>&1\r\n+\techo -e \".\\c\"\r\n+\tjstat -gccapacity $PID > $DATE_DIR/jstat-gccapacity-$PID.dump 2>&1\r\n+\techo -e \".\\c\"\r\n+\tjmap $PID > $DATE_DIR/jmap-$PID.dump 2>&1\r\n+\techo -e \".\\c\"\r\n+\tjmap -heap $PID > $DATE_DIR/jmap-heap-$PID.dump 2>&1\r\n+\techo -e \".\\c\"\r\n+\tjmap -histo $PID > $DATE_DIR/jmap-histo-$PID.dump 2>&1\r\n+\techo -e \".\\c\"\r\n+\tif [ -r /usr/sbin/lsof ]; then\r\n+\t/usr/sbin/lsof -p $PID > $DATE_DIR/lsof-$PID.dump\r\n+\techo -e \".\\c\"\r\n+\tfi\r\n+done\r\n+\r\n+if [ -r /bin/netstat ]; then\r\n+/bin/netstat -an > $DATE_DIR/netstat.dump 2>&1\r\n+echo -e \".\\c\"\r\n+fi\r\n+if [ -r /usr/bin/iostat ]; then\r\n+/usr/bin/iostat > $DATE_DIR/iostat.dump 2>&1\r\n+echo -e \".\\c\"\r\n+fi\r\n+if [ -r /usr/bin/mpstat ]; then\r\n+/usr/bin/mpstat > $DATE_DIR/mpstat.dump 2>&1\r\n+echo -e \".\\c\"\r\n+fi\r\n+if [ -r /usr/bin/vmstat ]; then\r\n+/usr/bin/vmstat > $DATE_DIR/vmstat.dump 2>&1\r\n+echo -e \".\\c\"\r\n+fi\r\n+if [ -r /usr/bin/free ]; then\r\n+/usr/bin/free -t > $DATE_DIR/free.dump 2>&1\r\n+echo -e \".\\c\"\r\n+fi\r\n+if [ -r /usr/bin/sar ]; then\r\n+/usr/bin/sar > $DATE_DIR/sar.dump 2>&1\r\n+echo -e \".\\c\"\r\n+fi\r\n+if [ -r /usr/bin/uptime ]; then\r\n+/usr/bin/uptime > $DATE_DIR/uptime.dump 2>&1\r\n+echo -e \".\\c\"\r\n+fi\r\n+\r\n+echo \"OK!\"\r\n+echo \"DUMP: $DATE_DIR\"\r\n"}, {"source1": "META-INF/assembly/bin/restart.sh", "source2": "META-INF/assembly/bin/restart.sh", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,20 +1,20 @@\n-#!/bin/bash\n-\n-# Licensed to the Apache Software Foundation (ASF) under one or more\n-# contributor license agreements.  See the NOTICE file distributed with\n-# this work for additional information regarding copyright ownership.\n-# The ASF licenses this file to You under the Apache License, Version 2.0\n-# (the \"License\"); you may not use this file except in compliance with\n-# the License.  You may obtain a copy of the License at\n-#\n-#     http://www.apache.org/licenses/LICENSE-2.0\n-#\n-# Unless required by applicable law or agreed to in writing, software\n-# distributed under the License is distributed on an \"AS IS\" BASIS,\n-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n-# See the License for the specific language governing permissions and\n-# limitations under the License.\n-\n-cd `dirname $0`\n-./stop.sh\n-./start.sh\n+#!/bin/bash\r\n+\r\n+# Licensed to the Apache Software Foundation (ASF) under one or more\r\n+# contributor license agreements.  See the NOTICE file distributed with\r\n+# this work for additional information regarding copyright ownership.\r\n+# The ASF licenses this file to You under the Apache License, Version 2.0\r\n+# (the \"License\"); you may not use this file except in compliance with\r\n+# the License.  You may obtain a copy of the License at\r\n+#\r\n+#     http://www.apache.org/licenses/LICENSE-2.0\r\n+#\r\n+# Unless required by applicable law or agreed to in writing, software\r\n+# distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+# See the License for the specific language governing permissions and\r\n+# limitations under the License.\r\n+\r\n+cd `dirname $0`\r\n+./stop.sh\r\n+./start.sh\r\n"}, {"source1": "META-INF/assembly/bin/server.sh", "source2": "META-INF/assembly/bin/server.sh", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,40 +1,40 @@\n-#!/bin/bash\n-\n-# Licensed to the Apache Software Foundation (ASF) under one or more\n-# contributor license agreements.  See the NOTICE file distributed with\n-# this work for additional information regarding copyright ownership.\n-# The ASF licenses this file to You under the Apache License, Version 2.0\n-# (the \"License\"); you may not use this file except in compliance with\n-# the License.  You may obtain a copy of the License at\n-#\n-#     http://www.apache.org/licenses/LICENSE-2.0\n-#\n-# Unless required by applicable law or agreed to in writing, software\n-# distributed under the License is distributed on an \"AS IS\" BASIS,\n-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n-# See the License for the specific language governing permissions and\n-# limitations under the License.\n-\n-cd `dirname $0`\n-if [ \"$1\" = \"start\" ]; then\n-\t./start.sh\n-else\n-\tif [ \"$1\" = \"stop\" ]; then\n-\t\t./stop.sh\n-\telse\n-\t\tif [ \"$1\" = \"debug\" ]; then\n-\t\t\t./start.sh debug\n-\t\telse\n-\t\t\tif [ \"$1\" = \"restart\" ]; then\n-\t\t\t\t./restart.sh\n-\t\t\telse\n-\t\t\t\tif [ \"$1\" = \"dump\" ]; then\n-\t\t\t\t\t./dump.sh\n-\t\t\t\telse\n-\t\t\t\t\techo \"ERROR: Please input argument: start or stop or debug or restart or dump\"\n-\t\t\t\t    exit 1\n-\t\t\t\tfi\n-\t\t\tfi\n-\t\tfi\n-\tfi\n-fi\n+#!/bin/bash\r\n+\r\n+# Licensed to the Apache Software Foundation (ASF) under one or more\r\n+# contributor license agreements.  See the NOTICE file distributed with\r\n+# this work for additional information regarding copyright ownership.\r\n+# The ASF licenses this file to You under the Apache License, Version 2.0\r\n+# (the \"License\"); you may not use this file except in compliance with\r\n+# the License.  You may obtain a copy of the License at\r\n+#\r\n+#     http://www.apache.org/licenses/LICENSE-2.0\r\n+#\r\n+# Unless required by applicable law or agreed to in writing, software\r\n+# distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+# See the License for the specific language governing permissions and\r\n+# limitations under the License.\r\n+\r\n+cd `dirname $0`\r\n+if [ \"$1\" = \"start\" ]; then\r\n+\t./start.sh\r\n+else\r\n+\tif [ \"$1\" = \"stop\" ]; then\r\n+\t\t./stop.sh\r\n+\telse\r\n+\t\tif [ \"$1\" = \"debug\" ]; then\r\n+\t\t\t./start.sh debug\r\n+\t\telse\r\n+\t\t\tif [ \"$1\" = \"restart\" ]; then\r\n+\t\t\t\t./restart.sh\r\n+\t\t\telse\r\n+\t\t\t\tif [ \"$1\" = \"dump\" ]; then\r\n+\t\t\t\t\t./dump.sh\r\n+\t\t\t\telse\r\n+\t\t\t\t\techo \"ERROR: Please input argument: start or stop or debug or restart or dump\"\r\n+\t\t\t\t    exit 1\r\n+\t\t\t\tfi\r\n+\t\t\tfi\r\n+\t\tfi\r\n+\tfi\r\n+fi\r\n"}, {"source1": "META-INF/assembly/bin/start.sh", "source2": "META-INF/assembly/bin/start.sh", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,132 +1,132 @@\n-#!/bin/bash\n-\n-# Licensed to the Apache Software Foundation (ASF) under one or more\n-# contributor license agreements.  See the NOTICE file distributed with\n-# this work for additional information regarding copyright ownership.\n-# The ASF licenses this file to You under the Apache License, Version 2.0\n-# (the \"License\"); you may not use this file except in compliance with\n-# the License.  You may obtain a copy of the License at\n-#\n-#     http://www.apache.org/licenses/LICENSE-2.0\n-#\n-# Unless required by applicable law or agreed to in writing, software\n-# distributed under the License is distributed on an \"AS IS\" BASIS,\n-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n-# See the License for the specific language governing permissions and\n-# limitations under the License.\n-\n-cd `dirname $0`\n-BIN_DIR=`pwd`\n-cd ..\n-DEPLOY_DIR=`pwd`\n-CONF_DIR=$DEPLOY_DIR/conf\n-\n-SERVER_NAME=`sed '/^dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\\r'`\n-SERVER_PROTOCOL=`sed '/^dubbo.protocol.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\\r'`\n-SERVER_HOST=`sed '/^dubbo.protocol.host/!d;s/.*=//' conf/dubbo.properties | tr -d '\\r'`\n-SERVER_PORT=`sed '/^dubbo.protocol.port/!d;s/.*=//' conf/dubbo.properties | tr -d '\\r'`\n-LOGS_FILE=`sed '/^dubbo.log4j.file/!d;s/.*=//' conf/dubbo.properties | tr -d '\\r'`\n-VM_ARGS_PERM_SIZE='PermSize'\n-VM_ARGS_METASPACE_SIZE='MetaspaceSize'\n-JAVA_8_VERSION=\"180\"\n-\n-if [ -z \"$SERVER_HOST\" ]; then\n-    SERVER_HOST='127.0.0.1'\n-fi\n-\n-if [ -z \"$SERVER_NAME\" ]; then\n-    SERVER_NAME=`hostname`\n-fi\n-\n-PIDS=`ps -ef | grep java | grep -v grep | grep \"$CONF_DIR\" |awk '{print $2}'`\n-if [ -n \"$PIDS\" ]; then\n-    echo \"ERROR: The $SERVER_NAME already started!\"\n-    echo \"PID: $PIDS\"\n-    exit 1\n-fi\n-\n-if [ -n \"$SERVER_PORT\" ]; then\n-    SERVER_PORT_COUNT=`netstat -tln | grep $SERVER_PORT | wc -l`\n-    if [ $SERVER_PORT_COUNT -gt 0 ]; then\n-        echo \"ERROR: The $SERVER_NAME port $SERVER_PORT already used!\"\n-        exit 1\n-    fi\n-fi\n-\n-LOGS_DIR=\"\"\n-if [ -n \"$LOGS_FILE\" ]; then\n-    LOGS_DIR=`dirname $LOGS_FILE`\n-else\n-    LOGS_DIR=$DEPLOY_DIR/logs\n-fi\n-if [ ! -d $LOGS_DIR ]; then\n-    mkdir $LOGS_DIR\n-fi\n-STDOUT_FILE=$LOGS_DIR/stdout.log\n-\n-LIB_DIR=$DEPLOY_DIR/lib\n-LIB_JARS=`ls $LIB_DIR|grep .jar|awk '{print \"'$LIB_DIR'/\"$0}'|tr \"\\n\" \":\"`\n-\n-JAVA_OPTS=\" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true \"\n-JAVA_DEBUG_OPTS=\"\"\n-if [ \"$1\" = \"debug\" ]; then\n-    JAVA_DEBUG_OPTS=\" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n \"\n-fi\n-JAVA_JMX_OPTS=\"\"\n-if [ \"$1\" = \"jmx\" ]; then\n-    JAVA_JMX_OPTS=\" -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false \"\n-fi\n-JAVA_MEM_OPTS=\"\"\n-# set jvm args by different java version\n-JAVA_VERSION=`java -fullversion 2>&1 | awk -F[\\\"\\.] '{print $2$3$4}' |awk -F\"_\" '{print $1}'`\n-echo $JAVA_VERSION\n-VM_ARGS=${VM_ARGS_PERM_SIZE}\n-# if you use dubbo in java 9\n-TEMP_VERSION=$(echo ${JAVA_VERSION} | grep \"+\")\n-if [[ \"$TEMP_VERSION\" != \"\" ]]; then\n-        JAVA_VERSION=$(echo ${JAVA_VERSION} | awk -F\"+\" '{print $1}')\n-fi\n-# compare java version\n-if [ \"${JAVA_VERSION}\" -ge ${JAVA_8_VERSION} ]; then\n-    VM_ARGS=${VM_ARGS_METASPACE_SIZE}\n-fi\n-\n-# MaxInlineLevel=15 is the default since JDK 14 and can be removed once older JDKs are no longer supported\n-BITS=`java -version 2>&1 | grep -i 64-bit`\n-JAVA_MEM_OPTS=\" -server -Xmx2g -Xms2g -Xmn256m -XX:${VM_ARGS}=128m -Xss512k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 \"\n-\n-if [ -n \"$BITS\" ]; then\n-    JAVA_MAJOR_VERSION=${JAVA_VERSION%%[.|-]*}\n-    JAVA_MINOR_VERSION=$(echo $JAVA_VERSION | awk -F\\. '{ print $2 }')\n-    if [ $JAVA_MAJOR_VERSION -ge 9 ] || ([ $JAVA_MAJOR_VERSION -ge 1 ] && [ $JAVA_MINOR_VERSION -ge 8 ]); then\n-      JAVA_MEM_OPTS=\" -server -Xmx2g -Xms2g -Xmn256m -XX:${VM_ARGS}=128m -Xss512k -XX:LargePageSizeInBytes=128m -XX:+DisableExplicitGC -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:SurvivorRatio=8 -XX:G1ReservePercent=15 \"\n-    fi\n-else\n-    JAVA_MEM_OPTS=\" -server -Xms1g -Xmx1g -XX:${VM_ARGS}=128m -XX:SurvivorRatio=2 -XX:+UseParallelGC \"\n-fi\n-\n-echo -e \"Starting the $SERVER_NAME ...\\c\"\n-nohup java $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS -classpath $CONF_DIR:$LIB_JARS org.apache.dubbo.container.Main > $STDOUT_FILE 2>&1 &\n-\n-COUNT=0\n-while [ $COUNT -lt 1 ]; do    \n-    echo -e \".\\c\"\n-    sleep 1 \n-    if [ -n \"$SERVER_PORT\" ]; then\n-        if [ \"$SERVER_PROTOCOL\" == \"dubbo\" ]; then\n-    \t    COUNT=`(sleep 1; echo -e '\\n'; sleep 1; echo status; sleep 1)| telnet $SERVER_HOST $SERVER_PORT | grep -c OK`\n-        else\n-            COUNT=`netstat -an | grep $SERVER_PORT | wc -l`\n-        fi\n-    else\n-    \tCOUNT=`ps -ef | grep java | grep -v grep | grep \"$DEPLOY_DIR\" | awk '{print $2}' | wc -l`\n-    fi\n-    if [ $COUNT -gt 0 ]; then\n-        break\n-    fi\n-done\n-\n-echo \"OK!\"\n-PIDS=`ps -ef | grep java | grep -v grep | grep \"$DEPLOY_DIR\" | awk '{print $2}'`\n-echo \"PID: $PIDS\"\n-echo \"STDOUT: $STDOUT_FILE\"\n+#!/bin/bash\r\n+\r\n+# Licensed to the Apache Software Foundation (ASF) under one or more\r\n+# contributor license agreements.  See the NOTICE file distributed with\r\n+# this work for additional information regarding copyright ownership.\r\n+# The ASF licenses this file to You under the Apache License, Version 2.0\r\n+# (the \"License\"); you may not use this file except in compliance with\r\n+# the License.  You may obtain a copy of the License at\r\n+#\r\n+#     http://www.apache.org/licenses/LICENSE-2.0\r\n+#\r\n+# Unless required by applicable law or agreed to in writing, software\r\n+# distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+# See the License for the specific language governing permissions and\r\n+# limitations under the License.\r\n+\r\n+cd `dirname $0`\r\n+BIN_DIR=`pwd`\r\n+cd ..\r\n+DEPLOY_DIR=`pwd`\r\n+CONF_DIR=$DEPLOY_DIR/conf\r\n+\r\n+SERVER_NAME=`sed '/^dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\\r'`\r\n+SERVER_PROTOCOL=`sed '/^dubbo.protocol.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\\r'`\r\n+SERVER_HOST=`sed '/^dubbo.protocol.host/!d;s/.*=//' conf/dubbo.properties | tr -d '\\r'`\r\n+SERVER_PORT=`sed '/^dubbo.protocol.port/!d;s/.*=//' conf/dubbo.properties | tr -d '\\r'`\r\n+LOGS_FILE=`sed '/^dubbo.log4j.file/!d;s/.*=//' conf/dubbo.properties | tr -d '\\r'`\r\n+VM_ARGS_PERM_SIZE='PermSize'\r\n+VM_ARGS_METASPACE_SIZE='MetaspaceSize'\r\n+JAVA_8_VERSION=\"180\"\r\n+\r\n+if [ -z \"$SERVER_HOST\" ]; then\r\n+    SERVER_HOST='127.0.0.1'\r\n+fi\r\n+\r\n+if [ -z \"$SERVER_NAME\" ]; then\r\n+    SERVER_NAME=`hostname`\r\n+fi\r\n+\r\n+PIDS=`ps -ef | grep java | grep -v grep | grep \"$CONF_DIR\" |awk '{print $2}'`\r\n+if [ -n \"$PIDS\" ]; then\r\n+    echo \"ERROR: The $SERVER_NAME already started!\"\r\n+    echo \"PID: $PIDS\"\r\n+    exit 1\r\n+fi\r\n+\r\n+if [ -n \"$SERVER_PORT\" ]; then\r\n+    SERVER_PORT_COUNT=`netstat -tln | grep $SERVER_PORT | wc -l`\r\n+    if [ $SERVER_PORT_COUNT -gt 0 ]; then\r\n+        echo \"ERROR: The $SERVER_NAME port $SERVER_PORT already used!\"\r\n+        exit 1\r\n+    fi\r\n+fi\r\n+\r\n+LOGS_DIR=\"\"\r\n+if [ -n \"$LOGS_FILE\" ]; then\r\n+    LOGS_DIR=`dirname $LOGS_FILE`\r\n+else\r\n+    LOGS_DIR=$DEPLOY_DIR/logs\r\n+fi\r\n+if [ ! -d $LOGS_DIR ]; then\r\n+    mkdir $LOGS_DIR\r\n+fi\r\n+STDOUT_FILE=$LOGS_DIR/stdout.log\r\n+\r\n+LIB_DIR=$DEPLOY_DIR/lib\r\n+LIB_JARS=`ls $LIB_DIR|grep .jar|awk '{print \"'$LIB_DIR'/\"$0}'|tr \"\\n\" \":\"`\r\n+\r\n+JAVA_OPTS=\" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true \"\r\n+JAVA_DEBUG_OPTS=\"\"\r\n+if [ \"$1\" = \"debug\" ]; then\r\n+    JAVA_DEBUG_OPTS=\" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n \"\r\n+fi\r\n+JAVA_JMX_OPTS=\"\"\r\n+if [ \"$1\" = \"jmx\" ]; then\r\n+    JAVA_JMX_OPTS=\" -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false \"\r\n+fi\r\n+JAVA_MEM_OPTS=\"\"\r\n+# set jvm args by different java version\r\n+JAVA_VERSION=`java -fullversion 2>&1 | awk -F[\\\"\\.] '{print $2$3$4}' |awk -F\"_\" '{print $1}'`\r\n+echo $JAVA_VERSION\r\n+VM_ARGS=${VM_ARGS_PERM_SIZE}\r\n+# if you use dubbo in java 9\r\n+TEMP_VERSION=$(echo ${JAVA_VERSION} | grep \"+\")\r\n+if [[ \"$TEMP_VERSION\" != \"\" ]]; then\r\n+        JAVA_VERSION=$(echo ${JAVA_VERSION} | awk -F\"+\" '{print $1}')\r\n+fi\r\n+# compare java version\r\n+if [ \"${JAVA_VERSION}\" -ge ${JAVA_8_VERSION} ]; then\r\n+    VM_ARGS=${VM_ARGS_METASPACE_SIZE}\r\n+fi\r\n+\r\n+# MaxInlineLevel=15 is the default since JDK 14 and can be removed once older JDKs are no longer supported\r\n+BITS=`java -version 2>&1 | grep -i 64-bit`\r\n+JAVA_MEM_OPTS=\" -server -Xmx2g -Xms2g -Xmn256m -XX:${VM_ARGS}=128m -Xss512k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 \"\r\n+\r\n+if [ -n \"$BITS\" ]; then\r\n+    JAVA_MAJOR_VERSION=${JAVA_VERSION%%[.|-]*}\r\n+    JAVA_MINOR_VERSION=$(echo $JAVA_VERSION | awk -F\\. '{ print $2 }')\r\n+    if [ $JAVA_MAJOR_VERSION -ge 9 ] || ([ $JAVA_MAJOR_VERSION -ge 1 ] && [ $JAVA_MINOR_VERSION -ge 8 ]); then\r\n+      JAVA_MEM_OPTS=\" -server -Xmx2g -Xms2g -Xmn256m -XX:${VM_ARGS}=128m -Xss512k -XX:LargePageSizeInBytes=128m -XX:+DisableExplicitGC -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:SurvivorRatio=8 -XX:G1ReservePercent=15 \"\r\n+    fi\r\n+else\r\n+    JAVA_MEM_OPTS=\" -server -Xms1g -Xmx1g -XX:${VM_ARGS}=128m -XX:SurvivorRatio=2 -XX:+UseParallelGC \"\r\n+fi\r\n+\r\n+echo -e \"Starting the $SERVER_NAME ...\\c\"\r\n+nohup java $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS -classpath $CONF_DIR:$LIB_JARS org.apache.dubbo.container.Main > $STDOUT_FILE 2>&1 &\r\n+\r\n+COUNT=0\r\n+while [ $COUNT -lt 1 ]; do    \r\n+    echo -e \".\\c\"\r\n+    sleep 1 \r\n+    if [ -n \"$SERVER_PORT\" ]; then\r\n+        if [ \"$SERVER_PROTOCOL\" == \"dubbo\" ]; then\r\n+    \t    COUNT=`(sleep 1; echo -e '\\n'; sleep 1; echo status; sleep 1)| telnet $SERVER_HOST $SERVER_PORT | grep -c OK`\r\n+        else\r\n+            COUNT=`netstat -an | grep $SERVER_PORT | wc -l`\r\n+        fi\r\n+    else\r\n+    \tCOUNT=`ps -ef | grep java | grep -v grep | grep \"$DEPLOY_DIR\" | awk '{print $2}' | wc -l`\r\n+    fi\r\n+    if [ $COUNT -gt 0 ]; then\r\n+        break\r\n+    fi\r\n+done\r\n+\r\n+echo \"OK!\"\r\n+PIDS=`ps -ef | grep java | grep -v grep | grep \"$DEPLOY_DIR\" | awk '{print $2}'`\r\n+echo \"PID: $PIDS\"\r\n+echo \"STDOUT: $STDOUT_FILE\"\r\n"}, {"source1": "META-INF/assembly/bin/stop.sh", "source2": "META-INF/assembly/bin/stop.sh", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,60 +1,60 @@\n-#!/bin/bash\n-\n-# Licensed to the Apache Software Foundation (ASF) under one or more\n-# contributor license agreements.  See the NOTICE file distributed with\n-# this work for additional information regarding copyright ownership.\n-# The ASF licenses this file to You under the Apache License, Version 2.0\n-# (the \"License\"); you may not use this file except in compliance with\n-# the License.  You may obtain a copy of the License at\n-#\n-#     http://www.apache.org/licenses/LICENSE-2.0\n-#\n-# Unless required by applicable law or agreed to in writing, software\n-# distributed under the License is distributed on an \"AS IS\" BASIS,\n-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n-# See the License for the specific language governing permissions and\n-# limitations under the License.\n-\n-cd `dirname $0`\n-BIN_DIR=`pwd`\n-cd ..\n-DEPLOY_DIR=`pwd`\n-CONF_DIR=$DEPLOY_DIR/conf\n-\n-SERVER_NAME=`sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\\r'`\n-\n-if [ -z \"$SERVER_NAME\" ]; then\n-    SERVER_NAME=`hostname`\n-fi\n-\n-PIDS=`ps -ef | grep java | grep -v grep | grep \"$CONF_DIR\" |awk '{print $2}'`\n-if [ -z \"$PIDS\" ]; then\n-    echo \"ERROR: The $SERVER_NAME does not started!\"\n-    exit 1\n-fi\n-\n-if [ \"$1\" != \"skip\" ]; then\n-    $BIN_DIR/dump.sh\n-fi\n-\n-echo -e \"Stopping the $SERVER_NAME ...\\c\"\n-for PID in $PIDS ; do\n-    kill $PID > /dev/null 2>&1\n-done\n-\n-COUNT=0\n-while [ $COUNT -lt 1 ]; do    \n-    echo -e \".\\c\"\n-    sleep 1\n-    COUNT=1\n-    for PID in $PIDS ; do\n-        PID_EXIST=`ps -f -p $PID | grep java`\n-        if [ -n \"$PID_EXIST\" ]; then\n-            COUNT=0\n-            break\n-        fi\n-    done\n-done\n-\n-echo \"OK!\"\n-echo \"PID: $PIDS\"\n+#!/bin/bash\r\n+\r\n+# Licensed to the Apache Software Foundation (ASF) under one or more\r\n+# contributor license agreements.  See the NOTICE file distributed with\r\n+# this work for additional information regarding copyright ownership.\r\n+# The ASF licenses this file to You under the Apache License, Version 2.0\r\n+# (the \"License\"); you may not use this file except in compliance with\r\n+# the License.  You may obtain a copy of the License at\r\n+#\r\n+#     http://www.apache.org/licenses/LICENSE-2.0\r\n+#\r\n+# Unless required by applicable law or agreed to in writing, software\r\n+# distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+# See the License for the specific language governing permissions and\r\n+# limitations under the License.\r\n+\r\n+cd `dirname $0`\r\n+BIN_DIR=`pwd`\r\n+cd ..\r\n+DEPLOY_DIR=`pwd`\r\n+CONF_DIR=$DEPLOY_DIR/conf\r\n+\r\n+SERVER_NAME=`sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\\r'`\r\n+\r\n+if [ -z \"$SERVER_NAME\" ]; then\r\n+    SERVER_NAME=`hostname`\r\n+fi\r\n+\r\n+PIDS=`ps -ef | grep java | grep -v grep | grep \"$CONF_DIR\" |awk '{print $2}'`\r\n+if [ -z \"$PIDS\" ]; then\r\n+    echo \"ERROR: The $SERVER_NAME does not started!\"\r\n+    exit 1\r\n+fi\r\n+\r\n+if [ \"$1\" != \"skip\" ]; then\r\n+    $BIN_DIR/dump.sh\r\n+fi\r\n+\r\n+echo -e \"Stopping the $SERVER_NAME ...\\c\"\r\n+for PID in $PIDS ; do\r\n+    kill $PID > /dev/null 2>&1\r\n+done\r\n+\r\n+COUNT=0\r\n+while [ $COUNT -lt 1 ]; do    \r\n+    echo -e \".\\c\"\r\n+    sleep 1\r\n+    COUNT=1\r\n+    for PID in $PIDS ; do\r\n+        PID_EXIST=`ps -f -p $PID | grep java`\r\n+        if [ -n \"$PID_EXIST\" ]; then\r\n+            COUNT=0\r\n+            break\r\n+        fi\r\n+    done\r\n+done\r\n+\r\n+echo \"OK!\"\r\n+echo \"PID: $PIDS\"\r\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-container-api/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-container-api/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,150 +1,146 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d63 6f6e 7461 696e 6572 3c2f 6172  bo-container</ar\n-000004a0: 7469 6661 6374 4964 3e0d 0a20 2020 203c  tifactId>..    <\n-000004b0: 7665 7273 696f 6e3e 322e 372e 3130 3c2f  version>2.7.10</\n-000004c0: 7665 7273 696f 6e3e 0d0a 2020 3c2f 7061  version>..  </pa\n-000004d0: 7265 6e74 3e0d 0a20 203c 6772 6f75 7049  rent>..  <groupI\n-000004e0: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n-000004f0: 626f 3c2f 6772 6f75 7049 643e 0d0a 2020  bo</groupId>..  \n-00000500: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n-00000510: 6f2d 636f 6e74 6169 6e65 722d 6170 693c  o-container-api<\n-00000520: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-00000530: 3c76 6572 7369 6f6e 3e32 2e37 2e31 303c  <version>2.7.10<\n-00000540: 2f76 6572 7369 6f6e 3e0d 0a20 203c 6e61  /version>..  <na\n-00000550: 6d65 3e24 7b70 726f 6a65 6374 2e61 7274  me>${project.art\n-00000560: 6966 6163 7449 647d 3c2f 6e61 6d65 3e0d  ifactId}</name>.\n-00000570: 0a20 203c 6465 7363 7269 7074 696f 6e3e  .  <description>\n-00000580: 5468 6520 636f 6e74 6169 6e65 7220 6d6f  The container mo\n-00000590: 6475 6c65 206f 6620 6475 6262 6f20 7072  dule of dubbo pr\n-000005a0: 6f6a 6563 743c 2f64 6573 6372 6970 7469  oject</descripti\n-000005b0: 6f6e 3e0d 0a20 203c 6c69 6365 6e73 6573  on>..  <licenses\n-000005c0: 3e0d 0a20 2020 203c 6c69 6365 6e73 653e  >..    <license>\n-000005d0: 0d0a 2020 2020 2020 3c6e 616d 653e 4170  ..      <name>Ap\n-000005e0: 6163 6865 204c 6963 656e 7365 2c20 5665  ache License, Ve\n-000005f0: 7273 696f 6e20 322e 303c 2f6e 616d 653e  rsion 2.0</name>\n-00000600: 0d0a 2020 2020 2020 3c75 726c 3e68 7474  ..      <url>htt\n-00000610: 703a 2f2f 7777 772e 6170 6163 6865 2e6f  p://www.apache.o\n-00000620: 7267 2f6c 6963 656e 7365 732f 4c49 4345  rg/licenses/LICE\n-00000630: 4e53 452d 322e 303c 2f75 726c 3e0d 0a20  NSE-2.0</url>.. \n-00000640: 2020 2020 203c 6469 7374 7269 6275 7469       <distributi\n-00000650: 6f6e 3e72 6570 6f3c 2f64 6973 7472 6962  on>repo</distrib\n-00000660: 7574 696f 6e3e 0d0a 2020 2020 3c2f 6c69  ution>..    </li\n-00000670: 6365 6e73 653e 0d0a 2020 3c2f 6c69 6365  cense>..  </lice\n-00000680: 6e73 6573 3e0d 0a20 203c 7072 6f70 6572  nses>..  <proper\n-00000690: 7469 6573 3e0d 0a20 2020 203c 736b 6970  ties>..    <skip\n-000006a0: 5f6d 6176 656e 5f64 6570 6c6f 793e 6661  _maven_deploy>fa\n-000006b0: 6c73 653c 2f73 6b69 705f 6d61 7665 6e5f  lse</skip_maven_\n-000006c0: 6465 706c 6f79 3e0d 0a20 203c 2f70 726f  deploy>..  </pro\n-000006d0: 7065 7274 6965 733e 0d0a 2020 3c64 6570  perties>..  <dep\n-000006e0: 656e 6465 6e63 6965 733e 0d0a 2020 2020  endencies>..    \n-000006f0: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-00000700: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n-00000710: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-00000720: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-00000730: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000740: 2d63 6f6d 6d6f 6e3c 2f61 7274 6966 6163  -common</artifac\n-00000750: 7449 643e 0d0a 2020 2020 2020 3c76 6572  tId>..      <ver\n-00000760: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n-00000770: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n-00000780: 7665 7273 696f 6e3e 0d0a 2020 2020 3c2f  version>..    </\n-00000790: 6465 7065 6e64 656e 6379 3e0d 0a20 203c  dependency>..  <\n-000007a0: 2f64 6570 656e 6465 6e63 6965 733e 0d0a  /dependencies>..\n-000007b0: 2020 3c62 7569 6c64 3e0d 0a20 2020 203c    <build>..    <\n-000007c0: 706c 7567 696e 733e 0d0a 2020 2020 2020  plugins>..      \n-000007d0: 3c70 6c75 6769 6e3e 0d0a 2020 2020 2020  <plugin>..      \n-000007e0: 2020 3c61 7274 6966 6163 7449 643e 6d61    <artifactId>ma\n-000007f0: 7665 6e2d 6a61 722d 706c 7567 696e 3c2f  ven-jar-plugin</\n-00000800: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-00000810: 2020 2020 203c 636f 6e66 6967 7572 6174       <configurat\n-00000820: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n-00000830: 3c61 7263 6869 7665 3e0d 0a20 2020 2020  <archive>..     \n-00000840: 2020 2020 2020 203c 6164 644d 6176 656e         <addMaven\n-00000850: 4465 7363 7269 7074 6f72 3e74 7275 653c  Descriptor>true<\n-00000860: 2f61 6464 4d61 7665 6e44 6573 6372 6970  /addMavenDescrip\n-00000870: 746f 723e 0d0a 2020 2020 2020 2020 2020  tor>..          \n-00000880: 2020 3c6d 616e 6966 6573 743e 0d0a 2020    <manifest>..  \n-00000890: 2020 2020 2020 2020 2020 2020 3c6d 6169              <mai\n-000008a0: 6e43 6c61 7373 3e6f 7267 2e61 7061 6368  nClass>org.apach\n-000008b0: 652e 6475 6262 6f2e 636f 6e74 6169 6e65  e.dubbo.containe\n-000008c0: 722e 4d61 696e 3c2f 6d61 696e 436c 6173  r.Main</mainClas\n-000008d0: 733e 0d0a 2020 2020 2020 2020 2020 2020  s>..            \n-000008e0: 3c2f 6d61 6e69 6665 7374 3e0d 0a20 2020  </manifest>..   \n-000008f0: 2020 2020 2020 203c 2f61 7263 6869 7665         </archive\n-00000900: 3e0d 0a20 2020 2020 2020 203c 2f63 6f6e  >..        </con\n-00000910: 6669 6775 7261 7469 6f6e 3e0d 0a20 2020  figuration>..   \n-00000920: 2020 203c 2f70 6c75 6769 6e3e 0d0a 2020     </plugin>..  \n-00000930: 2020 3c2f 706c 7567 696e 733e 0d0a 2020    </plugins>..  \n-00000940: 3c2f 6275 696c 643e 0d0a 3c2f 7072 6f6a  </build>..</proj\n-00000950: 6563 743e 0d0a                           ect>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d63 6f6e  factId>dubbo-con\n+00000480: 7461 696e 6572 3c2f 6172 7469 6661 6374  tainer</artifact\n+00000490: 4964 3e0a 2020 2020 3c76 6572 7369 6f6e  Id>.    <version\n+000004a0: 3e32 2e37 2e31 303c 2f76 6572 7369 6f6e  >2.7.10</version\n+000004b0: 3e0a 2020 3c2f 7061 7265 6e74 3e0a 2020  >.  </parent>.  \n+000004c0: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n+000004d0: 6368 652e 6475 6262 6f3c 2f67 726f 7570  che.dubbo</group\n+000004e0: 4964 3e0a 2020 3c61 7274 6966 6163 7449  Id>.  <artifactI\n+000004f0: 643e 6475 6262 6f2d 636f 6e74 6169 6e65  d>dubbo-containe\n+00000500: 722d 6170 693c 2f61 7274 6966 6163 7449  r-api</artifactI\n+00000510: 643e 0a20 203c 7665 7273 696f 6e3e 322e  d>.  <version>2.\n+00000520: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+00000530: 203c 6e61 6d65 3e24 7b70 726f 6a65 6374   <name>${project\n+00000540: 2e61 7274 6966 6163 7449 647d 3c2f 6e61  .artifactId}</na\n+00000550: 6d65 3e0a 2020 3c64 6573 6372 6970 7469  me>.  <descripti\n+00000560: 6f6e 3e54 6865 2063 6f6e 7461 696e 6572  on>The container\n+00000570: 206d 6f64 756c 6520 6f66 2064 7562 626f   module of dubbo\n+00000580: 2070 726f 6a65 6374 3c2f 6465 7363 7269   project</descri\n+00000590: 7074 696f 6e3e 0a20 203c 6c69 6365 6e73  ption>.  <licens\n+000005a0: 6573 3e0a 2020 2020 3c6c 6963 656e 7365  es>.    <license\n+000005b0: 3e0a 2020 2020 2020 3c6e 616d 653e 4170  >.      <name>Ap\n+000005c0: 6163 6865 204c 6963 656e 7365 2c20 5665  ache License, Ve\n+000005d0: 7273 696f 6e20 322e 303c 2f6e 616d 653e  rsion 2.0</name>\n+000005e0: 0a20 2020 2020 203c 7572 6c3e 6874 7470  .      <url>http\n+000005f0: 3a2f 2f77 7777 2e61 7061 6368 652e 6f72  ://www.apache.or\n+00000600: 672f 6c69 6365 6e73 6573 2f4c 4943 454e  g/licenses/LICEN\n+00000610: 5345 2d32 2e30 3c2f 7572 6c3e 0a20 2020  SE-2.0</url>.   \n+00000620: 2020 203c 6469 7374 7269 6275 7469 6f6e     <distribution\n+00000630: 3e72 6570 6f3c 2f64 6973 7472 6962 7574  >repo</distribut\n+00000640: 696f 6e3e 0a20 2020 203c 2f6c 6963 656e  ion>.    </licen\n+00000650: 7365 3e0a 2020 3c2f 6c69 6365 6e73 6573  se>.  </licenses\n+00000660: 3e0a 2020 3c70 726f 7065 7274 6965 733e  >.  <properties>\n+00000670: 0a20 2020 203c 736b 6970 5f6d 6176 656e  .    <skip_maven\n+00000680: 5f64 6570 6c6f 793e 6661 6c73 653c 2f73  _deploy>false</s\n+00000690: 6b69 705f 6d61 7665 6e5f 6465 706c 6f79  kip_maven_deploy\n+000006a0: 3e0a 2020 3c2f 7072 6f70 6572 7469 6573  >.  </properties\n+000006b0: 3e0a 2020 3c64 6570 656e 6465 6e63 6965  >.  <dependencie\n+000006c0: 733e 0a20 2020 203c 6465 7065 6e64 656e  s>.    <dependen\n+000006d0: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+000006e0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+000006f0: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000700: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+00000710: 6475 6262 6f2d 636f 6d6d 6f6e 3c2f 6172  dubbo-common</ar\n+00000720: 7469 6661 6374 4964 3e0a 2020 2020 2020  tifactId>.      \n+00000730: 3c76 6572 7369 6f6e 3e24 7b70 726f 6a65  <version>${proje\n+00000740: 6374 2e70 6172 656e 742e 7665 7273 696f  ct.parent.versio\n+00000750: 6e7d 3c2f 7665 7273 696f 6e3e 0a20 2020  n}</version>.   \n+00000760: 203c 2f64 6570 656e 6465 6e63 793e 0a20   </dependency>. \n+00000770: 203c 2f64 6570 656e 6465 6e63 6965 733e   </dependencies>\n+00000780: 0a20 203c 6275 696c 643e 0a20 2020 203c  .  <build>.    <\n+00000790: 706c 7567 696e 733e 0a20 2020 2020 203c  plugins>.      <\n+000007a0: 706c 7567 696e 3e0a 2020 2020 2020 2020  plugin>.        \n+000007b0: 3c61 7274 6966 6163 7449 643e 6d61 7665  <artifactId>mave\n+000007c0: 6e2d 6a61 722d 706c 7567 696e 3c2f 6172  n-jar-plugin</ar\n+000007d0: 7469 6661 6374 4964 3e0a 2020 2020 2020  tifactId>.      \n+000007e0: 2020 3c63 6f6e 6669 6775 7261 7469 6f6e    <configuration\n+000007f0: 3e0a 2020 2020 2020 2020 2020 3c61 7263  >.          <arc\n+00000800: 6869 7665 3e0a 2020 2020 2020 2020 2020  hive>.          \n+00000810: 2020 3c61 6464 4d61 7665 6e44 6573 6372    <addMavenDescr\n+00000820: 6970 746f 723e 7472 7565 3c2f 6164 644d  iptor>true</addM\n+00000830: 6176 656e 4465 7363 7269 7074 6f72 3e0a  avenDescriptor>.\n+00000840: 2020 2020 2020 2020 2020 2020 3c6d 616e              <man\n+00000850: 6966 6573 743e 0a20 2020 2020 2020 2020  ifest>.         \n+00000860: 2020 2020 203c 6d61 696e 436c 6173 733e       <mainClass>\n+00000870: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+00000880: 2e63 6f6e 7461 696e 6572 2e4d 6169 6e3c  .container.Main<\n+00000890: 2f6d 6169 6e43 6c61 7373 3e0a 2020 2020  /mainClass>.    \n+000008a0: 2020 2020 2020 2020 3c2f 6d61 6e69 6665          </manife\n+000008b0: 7374 3e0a 2020 2020 2020 2020 2020 3c2f  st>.          </\n+000008c0: 6172 6368 6976 653e 0a20 2020 2020 2020  archive>.       \n+000008d0: 203c 2f63 6f6e 6669 6775 7261 7469 6f6e   </configuration\n+000008e0: 3e0a 2020 2020 2020 3c2f 706c 7567 696e  >.      </plugin\n+000008f0: 3e0a 2020 2020 3c2f 706c 7567 696e 733e  >.    </plugins>\n+00000900: 0a20 203c 2f62 7569 6c64 3e0a 3c2f 7072  .  </build>.</pr\n+00000910: 6f6a 6563 743e 0a                        oject>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-registry-default/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-registry-default/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,188 +1,183 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 6567 6973 7472 793c 2f61 7274  bo-registry</art\n-000004a0: 6966 6163 7449 643e 0d0a 2020 2020 3c76  ifactId>..    <v\n-000004b0: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-000004c0: 6572 7369 6f6e 3e0d 0a20 203c 2f70 6172  ersion>..  </par\n-000004d0: 656e 743e 0d0a 2020 3c67 726f 7570 4964  ent>..  <groupId\n-000004e0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000004f0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 203c  o</groupId>..  <\n-00000500: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000510: 2d72 6567 6973 7472 792d 6465 6661 756c  -registry-defaul\n-00000520: 743c 2f61 7274 6966 6163 7449 643e 0d0a  t</artifactId>..\n-00000530: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n-00000540: 303c 2f76 6572 7369 6f6e 3e0d 0a20 203c  0</version>..  <\n-00000550: 6e61 6d65 3e24 7b70 726f 6a65 6374 2e61  name>${project.a\n-00000560: 7274 6966 6163 7449 647d 3c2f 6e61 6d65  rtifactId}</name\n-00000570: 3e0d 0a20 203c 6465 7363 7269 7074 696f  >..  <descriptio\n-00000580: 6e3e 5468 6520 6465 6661 756c 7420 7265  n>The default re\n-00000590: 6769 7374 7279 206d 6f64 756c 6520 6f66  gistry module of\n-000005a0: 2064 7562 626f 2070 726f 6a65 6374 3c2f   dubbo project</\n-000005b0: 6465 7363 7269 7074 696f 6e3e 0d0a 2020  description>..  \n-000005c0: 3c6c 6963 656e 7365 733e 0d0a 2020 2020  <licenses>..    \n-000005d0: 3c6c 6963 656e 7365 3e0d 0a20 2020 2020  <license>..     \n-000005e0: 203c 6e61 6d65 3e41 7061 6368 6520 4c69   <name>Apache Li\n-000005f0: 6365 6e73 652c 2056 6572 7369 6f6e 2032  cense, Version 2\n-00000600: 2e30 3c2f 6e61 6d65 3e0d 0a20 2020 2020  .0</name>..     \n-00000610: 203c 7572 6c3e 6874 7470 3a2f 2f77 7777   <url>http://www\n-00000620: 2e61 7061 6368 652e 6f72 672f 6c69 6365  .apache.org/lice\n-00000630: 6e73 6573 2f4c 4943 454e 5345 2d32 2e30  nses/LICENSE-2.0\n-00000640: 3c2f 7572 6c3e 0d0a 2020 2020 2020 3c64  </url>..      <d\n-00000650: 6973 7472 6962 7574 696f 6e3e 7265 706f  istribution>repo\n-00000660: 3c2f 6469 7374 7269 6275 7469 6f6e 3e0d  </distribution>.\n-00000670: 0a20 2020 203c 2f6c 6963 656e 7365 3e0d  .    </license>.\n-00000680: 0a20 203c 2f6c 6963 656e 7365 733e 0d0a  .  </licenses>..\n-00000690: 2020 3c70 726f 7065 7274 6965 733e 0d0a    <properties>..\n-000006a0: 2020 2020 3c73 6b69 705f 6d61 7665 6e5f      <skip_maven_\n-000006b0: 6465 706c 6f79 3e66 616c 7365 3c2f 736b  deploy>false</sk\n-000006c0: 6970 5f6d 6176 656e 5f64 6570 6c6f 793e  ip_maven_deploy>\n-000006d0: 0d0a 2020 3c2f 7072 6f70 6572 7469 6573  ..  </properties\n-000006e0: 3e0d 0a20 203c 6465 7065 6e64 656e 6369  >..  <dependenci\n-000006f0: 6573 3e0d 0a20 2020 203c 6465 7065 6e64  es>..    <depend\n-00000700: 656e 6379 3e0d 0a20 2020 2020 203c 6772  ency>..      <gr\n-00000710: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n-00000720: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n-00000730: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-00000740: 7449 643e 6475 6262 6f2d 7265 6769 7374  tId>dubbo-regist\n-00000750: 7279 2d61 7069 3c2f 6172 7469 6661 6374  ry-api</artifact\n-00000760: 4964 3e0d 0a20 2020 2020 203c 7665 7273  Id>..      <vers\n-00000770: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n-00000780: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n-00000790: 6572 7369 6f6e 3e0d 0a20 2020 203c 2f64  ersion>..    </d\n-000007a0: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-000007b0: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-000007c0: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n-000007d0: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-000007e0: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-000007f0: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000800: 2d72 7063 2d64 7562 626f 3c2f 6172 7469  -rpc-dubbo</arti\n-00000810: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-00000820: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n-00000830: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n-00000840: 7d3c 2f76 6572 7369 6f6e 3e0d 0a20 2020  }</version>..   \n-00000850: 2020 203c 7363 6f70 653e 7465 7374 3c2f     <scope>test</\n-00000860: 7363 6f70 653e 0d0a 2020 2020 3c2f 6465  scope>..    </de\n-00000870: 7065 6e64 656e 6379 3e0d 0a20 2020 203c  pendency>..    <\n-00000880: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000890: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n-000008a0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-000008b0: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-000008c0: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n-000008d0: 7270 632d 696e 6a76 6d3c 2f61 7274 6966  rpc-injvm</artif\n-000008e0: 6163 7449 643e 0d0a 2020 2020 2020 3c76  actId>..      <v\n-000008f0: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n-00000900: 2e70 6172 656e 742e 7665 7273 696f 6e7d  .parent.version}\n-00000910: 3c2f 7665 7273 696f 6e3e 0d0a 2020 2020  </version>..    \n-00000920: 2020 3c73 636f 7065 3e74 6573 743c 2f73    <scope>test</s\n-00000930: 636f 7065 3e0d 0a20 2020 203c 2f64 6570  cope>..    </dep\n-00000940: 656e 6465 6e63 793e 0d0a 2020 2020 3c64  endency>..    <d\n-00000950: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000960: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n-00000970: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n-00000980: 7570 4964 3e0d 0a20 2020 2020 203c 6172  upId>..      <ar\n-00000990: 7469 6661 6374 4964 3e64 7562 626f 2d72  tifactId>dubbo-r\n-000009a0: 656d 6f74 696e 672d 6e65 7474 7934 3c2f  emoting-netty4</\n-000009b0: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-000009c0: 2020 203c 7665 7273 696f 6e3e 247b 7072     <version>${pr\n-000009d0: 6f6a 6563 742e 7061 7265 6e74 2e76 6572  oject.parent.ver\n-000009e0: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0d  sion}</version>.\n-000009f0: 0a20 2020 2020 203c 7363 6f70 653e 7465  .      <scope>te\n-00000a00: 7374 3c2f 7363 6f70 653e 0d0a 2020 2020  st</scope>..    \n-00000a10: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-00000a20: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-00000a30: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000a40: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n-00000a50: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-00000a60: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n-00000a70: 6262 6f2d 7365 7269 616c 697a 6174 696f  bbo-serializatio\n-00000a80: 6e2d 6865 7373 6961 6e32 3c2f 6172 7469  n-hessian2</arti\n-00000a90: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-00000aa0: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n-00000ab0: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n-00000ac0: 7d3c 2f76 6572 7369 6f6e 3e0d 0a20 2020  }</version>..   \n-00000ad0: 2020 203c 7363 6f70 653e 7465 7374 3c2f     <scope>test</\n-00000ae0: 7363 6f70 653e 0d0a 2020 2020 3c2f 6465  scope>..    </de\n-00000af0: 7065 6e64 656e 6379 3e0d 0a20 2020 203c  pendency>..    <\n-00000b00: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000b10: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n-00000b20: 6170 6163 6865 2e63 6f6d 6d6f 6e73 3c2f  apache.commons</\n-00000b30: 6772 6f75 7049 643e 0d0a 2020 2020 2020  groupId>..      \n-00000b40: 3c61 7274 6966 6163 7449 643e 636f 6d6d  <artifactId>comm\n-00000b50: 6f6e 732d 6c61 6e67 333c 2f61 7274 6966  ons-lang3</artif\n-00000b60: 6163 7449 643e 0d0a 2020 2020 2020 3c73  actId>..      <s\n-00000b70: 636f 7065 3e74 6573 743c 2f73 636f 7065  cope>test</scope\n-00000b80: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-00000b90: 6e63 793e 0d0a 2020 3c2f 6465 7065 6e64  ncy>..  </depend\n-00000ba0: 656e 6369 6573 3e0d 0a3c 2f70 726f 6a65  encies>..</proje\n-00000bb0: 6374 3e0d 0a                             ct>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 6567  factId>dubbo-reg\n+00000480: 6973 7472 793c 2f61 7274 6966 6163 7449  istry</artifactI\n+00000490: 643e 0a20 2020 203c 7665 7273 696f 6e3e  d>.    <version>\n+000004a0: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+000004b0: 0a20 203c 2f70 6172 656e 743e 0a20 203c  .  </parent>.  <\n+000004c0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000004d0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000004e0: 643e 0a20 203c 6172 7469 6661 6374 4964  d>.  <artifactId\n+000004f0: 3e64 7562 626f 2d72 6567 6973 7472 792d  >dubbo-registry-\n+00000500: 6465 6661 756c 743c 2f61 7274 6966 6163  default</artifac\n+00000510: 7449 643e 0a20 203c 7665 7273 696f 6e3e  tId>.  <version>\n+00000520: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+00000530: 0a20 203c 6e61 6d65 3e24 7b70 726f 6a65  .  <name>${proje\n+00000540: 6374 2e61 7274 6966 6163 7449 647d 3c2f  ct.artifactId}</\n+00000550: 6e61 6d65 3e0a 2020 3c64 6573 6372 6970  name>.  <descrip\n+00000560: 7469 6f6e 3e54 6865 2064 6566 6175 6c74  tion>The default\n+00000570: 2072 6567 6973 7472 7920 6d6f 6475 6c65   registry module\n+00000580: 206f 6620 6475 6262 6f20 7072 6f6a 6563   of dubbo projec\n+00000590: 743c 2f64 6573 6372 6970 7469 6f6e 3e0a  t</description>.\n+000005a0: 2020 3c6c 6963 656e 7365 733e 0a20 2020    <licenses>.   \n+000005b0: 203c 6c69 6365 6e73 653e 0a20 2020 2020   <license>.     \n+000005c0: 203c 6e61 6d65 3e41 7061 6368 6520 4c69   <name>Apache Li\n+000005d0: 6365 6e73 652c 2056 6572 7369 6f6e 2032  cense, Version 2\n+000005e0: 2e30 3c2f 6e61 6d65 3e0a 2020 2020 2020  .0</name>.      \n+000005f0: 3c75 726c 3e68 7474 703a 2f2f 7777 772e  <url>http://www.\n+00000600: 6170 6163 6865 2e6f 7267 2f6c 6963 656e  apache.org/licen\n+00000610: 7365 732f 4c49 4345 4e53 452d 322e 303c  ses/LICENSE-2.0<\n+00000620: 2f75 726c 3e0a 2020 2020 2020 3c64 6973  /url>.      <dis\n+00000630: 7472 6962 7574 696f 6e3e 7265 706f 3c2f  tribution>repo</\n+00000640: 6469 7374 7269 6275 7469 6f6e 3e0a 2020  distribution>.  \n+00000650: 2020 3c2f 6c69 6365 6e73 653e 0a20 203c    </license>.  <\n+00000660: 2f6c 6963 656e 7365 733e 0a20 203c 7072  /licenses>.  <pr\n+00000670: 6f70 6572 7469 6573 3e0a 2020 2020 3c73  operties>.    <s\n+00000680: 6b69 705f 6d61 7665 6e5f 6465 706c 6f79  kip_maven_deploy\n+00000690: 3e66 616c 7365 3c2f 736b 6970 5f6d 6176  >false</skip_mav\n+000006a0: 656e 5f64 6570 6c6f 793e 0a20 203c 2f70  en_deploy>.  </p\n+000006b0: 726f 7065 7274 6965 733e 0a20 203c 6465  roperties>.  <de\n+000006c0: 7065 6e64 656e 6369 6573 3e0a 2020 2020  pendencies>.    \n+000006d0: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+000006e0: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+000006f0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000700: 6f75 7049 643e 0a20 2020 2020 203c 6172  oupId>.      <ar\n+00000710: 7469 6661 6374 4964 3e64 7562 626f 2d72  tifactId>dubbo-r\n+00000720: 6567 6973 7472 792d 6170 693c 2f61 7274  egistry-api</art\n+00000730: 6966 6163 7449 643e 0a20 2020 2020 203c  ifactId>.      <\n+00000740: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n+00000750: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n+00000760: 7d3c 2f76 6572 7369 6f6e 3e0a 2020 2020  }</version>.    \n+00000770: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+00000780: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+00000790: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n+000007a0: 672e 6170 6163 6865 2e64 7562 626f 3c2f  g.apache.dubbo</\n+000007b0: 6772 6f75 7049 643e 0a20 2020 2020 203c  groupId>.      <\n+000007c0: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n+000007d0: 2d72 7063 2d64 7562 626f 3c2f 6172 7469  -rpc-dubbo</arti\n+000007e0: 6661 6374 4964 3e0a 2020 2020 2020 3c76  factId>.      <v\n+000007f0: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n+00000800: 2e70 6172 656e 742e 7665 7273 696f 6e7d  .parent.version}\n+00000810: 3c2f 7665 7273 696f 6e3e 0a20 2020 2020  </version>.     \n+00000820: 203c 7363 6f70 653e 7465 7374 3c2f 7363   <scope>test</sc\n+00000830: 6f70 653e 0a20 2020 203c 2f64 6570 656e  ope>.    </depen\n+00000840: 6465 6e63 793e 0a20 2020 203c 6465 7065  dency>.    <depe\n+00000850: 6e64 656e 6379 3e0a 2020 2020 2020 3c67  ndency>.      <g\n+00000860: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n+00000870: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n+00000880: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+00000890: 7449 643e 6475 6262 6f2d 7270 632d 696e  tId>dubbo-rpc-in\n+000008a0: 6a76 6d3c 2f61 7274 6966 6163 7449 643e  jvm</artifactId>\n+000008b0: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n+000008c0: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n+000008d0: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n+000008e0: 6f6e 3e0a 2020 2020 2020 3c73 636f 7065  on>.      <scope\n+000008f0: 3e74 6573 743c 2f73 636f 7065 3e0a 2020  >test</scope>.  \n+00000900: 2020 3c2f 6465 7065 6e64 656e 6379 3e0a    </dependency>.\n+00000910: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+00000920: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+00000930: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+00000940: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+00000950: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+00000960: 626f 2d72 656d 6f74 696e 672d 6e65 7474  bo-remoting-nett\n+00000970: 7934 3c2f 6172 7469 6661 6374 4964 3e0a  y4</artifactId>.\n+00000980: 2020 2020 2020 3c76 6572 7369 6f6e 3e24        <version>$\n+00000990: 7b70 726f 6a65 6374 2e70 6172 656e 742e  {project.parent.\n+000009a0: 7665 7273 696f 6e7d 3c2f 7665 7273 696f  version}</versio\n+000009b0: 6e3e 0a20 2020 2020 203c 7363 6f70 653e  n>.      <scope>\n+000009c0: 7465 7374 3c2f 7363 6f70 653e 0a20 2020  test</scope>.   \n+000009d0: 203c 2f64 6570 656e 6465 6e63 793e 0a20   </dependency>. \n+000009e0: 2020 203c 6465 7065 6e64 656e 6379 3e0a     <dependency>.\n+000009f0: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n+00000a00: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n+00000a10: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+00000a20: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+00000a30: 6f2d 7365 7269 616c 697a 6174 696f 6e2d  o-serialization-\n+00000a40: 6865 7373 6961 6e32 3c2f 6172 7469 6661  hessian2</artifa\n+00000a50: 6374 4964 3e0a 2020 2020 2020 3c76 6572  ctId>.      <ver\n+00000a60: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n+00000a70: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n+00000a80: 7665 7273 696f 6e3e 0a20 2020 2020 203c  version>.      <\n+00000a90: 7363 6f70 653e 7465 7374 3c2f 7363 6f70  scope>test</scop\n+00000aa0: 653e 0a20 2020 203c 2f64 6570 656e 6465  e>.    </depende\n+00000ab0: 6e63 793e 0a20 2020 203c 6465 7065 6e64  ncy>.    <depend\n+00000ac0: 656e 6379 3e0a 2020 2020 2020 3c67 726f  ency>.      <gro\n+00000ad0: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n+00000ae0: 636f 6d6d 6f6e 733c 2f67 726f 7570 4964  commons</groupId\n+00000af0: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+00000b00: 7449 643e 636f 6d6d 6f6e 732d 6c61 6e67  tId>commons-lang\n+00000b10: 333c 2f61 7274 6966 6163 7449 643e 0a20  3</artifactId>. \n+00000b20: 2020 2020 203c 7363 6f70 653e 7465 7374       <scope>test\n+00000b30: 3c2f 7363 6f70 653e 0a20 2020 203c 2f64  </scope>.    </d\n+00000b40: 6570 656e 6465 6e63 793e 0a20 203c 2f64  ependency>.  </d\n+00000b50: 6570 656e 6465 6e63 6965 733e 0a3c 2f70  ependencies>.</p\n+00000b60: 726f 6a65 6374 3e0a                      roject>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-registry-multicast/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-registry-multicast/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,125 +1,122 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 6567 6973 7472 793c 2f61 7274  bo-registry</art\n-000004a0: 6966 6163 7449 643e 0d0a 2020 2020 3c76  ifactId>..    <v\n-000004b0: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-000004c0: 6572 7369 6f6e 3e0d 0a20 203c 2f70 6172  ersion>..  </par\n-000004d0: 656e 743e 0d0a 2020 3c67 726f 7570 4964  ent>..  <groupId\n-000004e0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000004f0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 203c  o</groupId>..  <\n-00000500: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000510: 2d72 6567 6973 7472 792d 6d75 6c74 6963  -registry-multic\n-00000520: 6173 743c 2f61 7274 6966 6163 7449 643e  ast</artifactId>\n-00000530: 0d0a 2020 3c76 6572 7369 6f6e 3e32 2e37  ..  <version>2.7\n-00000540: 2e31 303c 2f76 6572 7369 6f6e 3e0d 0a20  .10</version>.. \n-00000550: 203c 6e61 6d65 3e24 7b70 726f 6a65 6374   <name>${project\n-00000560: 2e61 7274 6966 6163 7449 647d 3c2f 6e61  .artifactId}</na\n-00000570: 6d65 3e0d 0a20 203c 6465 7363 7269 7074  me>..  <descript\n-00000580: 696f 6e3e 5468 6520 6d75 6c74 6963 6173  ion>The multicas\n-00000590: 7420 7265 6769 7374 7279 206d 6f64 756c  t registry modul\n-000005a0: 6520 6f66 2064 7562 626f 2070 726f 6a65  e of dubbo proje\n-000005b0: 6374 3c2f 6465 7363 7269 7074 696f 6e3e  ct</description>\n-000005c0: 0d0a 2020 3c6c 6963 656e 7365 733e 0d0a  ..  <licenses>..\n-000005d0: 2020 2020 3c6c 6963 656e 7365 3e0d 0a20      <license>.. \n-000005e0: 2020 2020 203c 6e61 6d65 3e41 7061 6368       <name>Apach\n-000005f0: 6520 4c69 6365 6e73 652c 2056 6572 7369  e License, Versi\n-00000600: 6f6e 2032 2e30 3c2f 6e61 6d65 3e0d 0a20  on 2.0</name>.. \n-00000610: 2020 2020 203c 7572 6c3e 6874 7470 3a2f       <url>http:/\n-00000620: 2f77 7777 2e61 7061 6368 652e 6f72 672f  /www.apache.org/\n-00000630: 6c69 6365 6e73 6573 2f4c 4943 454e 5345  licenses/LICENSE\n-00000640: 2d32 2e30 3c2f 7572 6c3e 0d0a 2020 2020  -2.0</url>..    \n-00000650: 2020 3c64 6973 7472 6962 7574 696f 6e3e    <distribution>\n-00000660: 7265 706f 3c2f 6469 7374 7269 6275 7469  repo</distributi\n-00000670: 6f6e 3e0d 0a20 2020 203c 2f6c 6963 656e  on>..    </licen\n-00000680: 7365 3e0d 0a20 203c 2f6c 6963 656e 7365  se>..  </license\n-00000690: 733e 0d0a 2020 3c70 726f 7065 7274 6965  s>..  <propertie\n-000006a0: 733e 0d0a 2020 2020 3c73 6b69 705f 6d61  s>..    <skip_ma\n-000006b0: 7665 6e5f 6465 706c 6f79 3e66 616c 7365  ven_deploy>false\n-000006c0: 3c2f 736b 6970 5f6d 6176 656e 5f64 6570  </skip_maven_dep\n-000006d0: 6c6f 793e 0d0a 2020 3c2f 7072 6f70 6572  loy>..  </proper\n-000006e0: 7469 6573 3e0d 0a20 203c 6465 7065 6e64  ties>..  <depend\n-000006f0: 656e 6369 6573 3e0d 0a20 2020 203c 6465  encies>..    <de\n-00000700: 7065 6e64 656e 6379 3e0d 0a20 2020 2020  pendency>..     \n-00000710: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n-00000720: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n-00000730: 7049 643e 0d0a 2020 2020 2020 3c61 7274  pId>..      <art\n-00000740: 6966 6163 7449 643e 6475 6262 6f2d 7265  ifactId>dubbo-re\n-00000750: 6769 7374 7279 2d61 7069 3c2f 6172 7469  gistry-api</arti\n-00000760: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-00000770: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n-00000780: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n-00000790: 7d3c 2f76 6572 7369 6f6e 3e0d 0a20 2020  }</version>..   \n-000007a0: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-000007b0: 2020 3c2f 6465 7065 6e64 656e 6369 6573    </dependencies\n-000007c0: 3e0d 0a3c 2f70 726f 6a65 6374 3e0d 0a    >..</project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 6567  factId>dubbo-reg\n+00000480: 6973 7472 793c 2f61 7274 6966 6163 7449  istry</artifactI\n+00000490: 643e 0a20 2020 203c 7665 7273 696f 6e3e  d>.    <version>\n+000004a0: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+000004b0: 0a20 203c 2f70 6172 656e 743e 0a20 203c  .  </parent>.  <\n+000004c0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000004d0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000004e0: 643e 0a20 203c 6172 7469 6661 6374 4964  d>.  <artifactId\n+000004f0: 3e64 7562 626f 2d72 6567 6973 7472 792d  >dubbo-registry-\n+00000500: 6d75 6c74 6963 6173 743c 2f61 7274 6966  multicast</artif\n+00000510: 6163 7449 643e 0a20 203c 7665 7273 696f  actId>.  <versio\n+00000520: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n+00000530: 6e3e 0a20 203c 6e61 6d65 3e24 7b70 726f  n>.  <name>${pro\n+00000540: 6a65 6374 2e61 7274 6966 6163 7449 647d  ject.artifactId}\n+00000550: 3c2f 6e61 6d65 3e0a 2020 3c64 6573 6372  </name>.  <descr\n+00000560: 6970 7469 6f6e 3e54 6865 206d 756c 7469  iption>The multi\n+00000570: 6361 7374 2072 6567 6973 7472 7920 6d6f  cast registry mo\n+00000580: 6475 6c65 206f 6620 6475 6262 6f20 7072  dule of dubbo pr\n+00000590: 6f6a 6563 743c 2f64 6573 6372 6970 7469  oject</descripti\n+000005a0: 6f6e 3e0a 2020 3c6c 6963 656e 7365 733e  on>.  <licenses>\n+000005b0: 0a20 2020 203c 6c69 6365 6e73 653e 0a20  .    <license>. \n+000005c0: 2020 2020 203c 6e61 6d65 3e41 7061 6368       <name>Apach\n+000005d0: 6520 4c69 6365 6e73 652c 2056 6572 7369  e License, Versi\n+000005e0: 6f6e 2032 2e30 3c2f 6e61 6d65 3e0a 2020  on 2.0</name>.  \n+000005f0: 2020 2020 3c75 726c 3e68 7474 703a 2f2f      <url>http://\n+00000600: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n+00000610: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n+00000620: 322e 303c 2f75 726c 3e0a 2020 2020 2020  2.0</url>.      \n+00000630: 3c64 6973 7472 6962 7574 696f 6e3e 7265  <distribution>re\n+00000640: 706f 3c2f 6469 7374 7269 6275 7469 6f6e  po</distribution\n+00000650: 3e0a 2020 2020 3c2f 6c69 6365 6e73 653e  >.    </license>\n+00000660: 0a20 203c 2f6c 6963 656e 7365 733e 0a20  .  </licenses>. \n+00000670: 203c 7072 6f70 6572 7469 6573 3e0a 2020   <properties>.  \n+00000680: 2020 3c73 6b69 705f 6d61 7665 6e5f 6465    <skip_maven_de\n+00000690: 706c 6f79 3e66 616c 7365 3c2f 736b 6970  ploy>false</skip\n+000006a0: 5f6d 6176 656e 5f64 6570 6c6f 793e 0a20  _maven_deploy>. \n+000006b0: 203c 2f70 726f 7065 7274 6965 733e 0a20   </properties>. \n+000006c0: 203c 6465 7065 6e64 656e 6369 6573 3e0a   <dependencies>.\n+000006d0: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+000006e0: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+000006f0: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+00000700: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+00000710: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+00000720: 626f 2d72 6567 6973 7472 792d 6170 693c  bo-registry-api<\n+00000730: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+00000740: 2020 203c 7665 7273 696f 6e3e 247b 7072     <version>${pr\n+00000750: 6f6a 6563 742e 7061 7265 6e74 2e76 6572  oject.parent.ver\n+00000760: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a  sion}</version>.\n+00000770: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000780: 3e0a 2020 3c2f 6465 7065 6e64 656e 6369  >.  </dependenci\n+00000790: 6573 3e0a 3c2f 7072 6f6a 6563 743e 0a    es>.</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-registry-zookeeper/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,155 +1,151 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 6567 6973 7472 793c 2f61 7274  bo-registry</art\n-000004a0: 6966 6163 7449 643e 0d0a 2020 2020 3c76  ifactId>..    <v\n-000004b0: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-000004c0: 6572 7369 6f6e 3e0d 0a20 203c 2f70 6172  ersion>..  </par\n-000004d0: 656e 743e 0d0a 2020 3c67 726f 7570 4964  ent>..  <groupId\n-000004e0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000004f0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 203c  o</groupId>..  <\n-00000500: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000510: 2d72 6567 6973 7472 792d 7a6f 6f6b 6565  -registry-zookee\n-00000520: 7065 723c 2f61 7274 6966 6163 7449 643e  per</artifactId>\n-00000530: 0d0a 2020 3c76 6572 7369 6f6e 3e32 2e37  ..  <version>2.7\n-00000540: 2e31 303c 2f76 6572 7369 6f6e 3e0d 0a20  .10</version>.. \n-00000550: 203c 6e61 6d65 3e24 7b70 726f 6a65 6374   <name>${project\n-00000560: 2e61 7274 6966 6163 7449 647d 3c2f 6e61  .artifactId}</na\n-00000570: 6d65 3e0d 0a20 203c 6465 7363 7269 7074  me>..  <descript\n-00000580: 696f 6e3e 5468 6520 7a6f 6f6b 6565 7065  ion>The zookeepe\n-00000590: 7220 7265 6769 7374 7279 206d 6f64 756c  r registry modul\n-000005a0: 6520 6f66 2064 7562 626f 2070 726f 6a65  e of dubbo proje\n-000005b0: 6374 3c2f 6465 7363 7269 7074 696f 6e3e  ct</description>\n-000005c0: 0d0a 2020 3c6c 6963 656e 7365 733e 0d0a  ..  <licenses>..\n-000005d0: 2020 2020 3c6c 6963 656e 7365 3e0d 0a20      <license>.. \n-000005e0: 2020 2020 203c 6e61 6d65 3e41 7061 6368       <name>Apach\n-000005f0: 6520 4c69 6365 6e73 652c 2056 6572 7369  e License, Versi\n-00000600: 6f6e 2032 2e30 3c2f 6e61 6d65 3e0d 0a20  on 2.0</name>.. \n-00000610: 2020 2020 203c 7572 6c3e 6874 7470 3a2f       <url>http:/\n-00000620: 2f77 7777 2e61 7061 6368 652e 6f72 672f  /www.apache.org/\n-00000630: 6c69 6365 6e73 6573 2f4c 4943 454e 5345  licenses/LICENSE\n-00000640: 2d32 2e30 3c2f 7572 6c3e 0d0a 2020 2020  -2.0</url>..    \n-00000650: 2020 3c64 6973 7472 6962 7574 696f 6e3e    <distribution>\n-00000660: 7265 706f 3c2f 6469 7374 7269 6275 7469  repo</distributi\n-00000670: 6f6e 3e0d 0a20 2020 203c 2f6c 6963 656e  on>..    </licen\n-00000680: 7365 3e0d 0a20 203c 2f6c 6963 656e 7365  se>..  </license\n-00000690: 733e 0d0a 2020 3c70 726f 7065 7274 6965  s>..  <propertie\n-000006a0: 733e 0d0a 2020 2020 3c73 6b69 705f 6d61  s>..    <skip_ma\n-000006b0: 7665 6e5f 6465 706c 6f79 3e66 616c 7365  ven_deploy>false\n-000006c0: 3c2f 736b 6970 5f6d 6176 656e 5f64 6570  </skip_maven_dep\n-000006d0: 6c6f 793e 0d0a 2020 3c2f 7072 6f70 6572  loy>..  </proper\n-000006e0: 7469 6573 3e0d 0a20 203c 6465 7065 6e64  ties>..  <depend\n-000006f0: 656e 6369 6573 3e0d 0a20 2020 203c 6465  encies>..    <de\n-00000700: 7065 6e64 656e 6379 3e0d 0a20 2020 2020  pendency>..     \n-00000710: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n-00000720: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n-00000730: 7049 643e 0d0a 2020 2020 2020 3c61 7274  pId>..      <art\n-00000740: 6966 6163 7449 643e 6475 6262 6f2d 7265  ifactId>dubbo-re\n-00000750: 6769 7374 7279 2d61 7069 3c2f 6172 7469  gistry-api</arti\n-00000760: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-00000770: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n-00000780: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n-00000790: 7d3c 2f76 6572 7369 6f6e 3e0d 0a20 2020  }</version>..   \n-000007a0: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-000007b0: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n-000007c0: 0d0a 2020 2020 2020 3c67 726f 7570 4964  ..      <groupId\n-000007d0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000007e0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-000007f0: 2020 203c 6172 7469 6661 6374 4964 3e64     <artifactId>d\n-00000800: 7562 626f 2d72 656d 6f74 696e 672d 7a6f  ubbo-remoting-zo\n-00000810: 6f6b 6565 7065 723c 2f61 7274 6966 6163  okeeper</artifac\n-00000820: 7449 643e 0d0a 2020 2020 2020 3c76 6572  tId>..      <ver\n-00000830: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n-00000840: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n-00000850: 7665 7273 696f 6e3e 0d0a 2020 2020 3c2f  version>..    </\n-00000860: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000870: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-00000880: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n-00000890: 672e 6170 6163 6865 2e63 7572 6174 6f72  g.apache.curator\n-000008a0: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-000008b0: 2020 3c61 7274 6966 6163 7449 643e 6375    <artifactId>cu\n-000008c0: 7261 746f 722d 782d 6469 7363 6f76 6572  rator-x-discover\n-000008d0: 793c 2f61 7274 6966 6163 7449 643e 0d0a  y</artifactId>..\n-000008e0: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n-000008f0: 3e0d 0a20 2020 203c 6465 7065 6e64 656e  >..    <dependen\n-00000900: 6379 3e0d 0a20 2020 2020 203c 6772 6f75  cy>..      <grou\n-00000910: 7049 643e 6f72 672e 6170 6163 6865 2e63  pId>org.apache.c\n-00000920: 7572 6174 6f72 3c2f 6772 6f75 7049 643e  urator</groupId>\n-00000930: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-00000940: 7449 643e 6375 7261 746f 722d 7465 7374  tId>curator-test\n-00000950: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000960: 2020 2020 203c 7363 6f70 653e 7465 7374       <scope>test\n-00000970: 3c2f 7363 6f70 653e 0d0a 2020 2020 3c2f  </scope>..    </\n-00000980: 6465 7065 6e64 656e 6379 3e0d 0a20 203c  dependency>..  <\n-00000990: 2f64 6570 656e 6465 6e63 6965 733e 0d0a  /dependencies>..\n-000009a0: 3c2f 7072 6f6a 6563 743e 0d0a            </project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 6567  factId>dubbo-reg\n+00000480: 6973 7472 793c 2f61 7274 6966 6163 7449  istry</artifactI\n+00000490: 643e 0a20 2020 203c 7665 7273 696f 6e3e  d>.    <version>\n+000004a0: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+000004b0: 0a20 203c 2f70 6172 656e 743e 0a20 203c  .  </parent>.  <\n+000004c0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000004d0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000004e0: 643e 0a20 203c 6172 7469 6661 6374 4964  d>.  <artifactId\n+000004f0: 3e64 7562 626f 2d72 6567 6973 7472 792d  >dubbo-registry-\n+00000500: 7a6f 6f6b 6565 7065 723c 2f61 7274 6966  zookeeper</artif\n+00000510: 6163 7449 643e 0a20 203c 7665 7273 696f  actId>.  <versio\n+00000520: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n+00000530: 6e3e 0a20 203c 6e61 6d65 3e24 7b70 726f  n>.  <name>${pro\n+00000540: 6a65 6374 2e61 7274 6966 6163 7449 647d  ject.artifactId}\n+00000550: 3c2f 6e61 6d65 3e0a 2020 3c64 6573 6372  </name>.  <descr\n+00000560: 6970 7469 6f6e 3e54 6865 207a 6f6f 6b65  iption>The zooke\n+00000570: 6570 6572 2072 6567 6973 7472 7920 6d6f  eper registry mo\n+00000580: 6475 6c65 206f 6620 6475 6262 6f20 7072  dule of dubbo pr\n+00000590: 6f6a 6563 743c 2f64 6573 6372 6970 7469  oject</descripti\n+000005a0: 6f6e 3e0a 2020 3c6c 6963 656e 7365 733e  on>.  <licenses>\n+000005b0: 0a20 2020 203c 6c69 6365 6e73 653e 0a20  .    <license>. \n+000005c0: 2020 2020 203c 6e61 6d65 3e41 7061 6368       <name>Apach\n+000005d0: 6520 4c69 6365 6e73 652c 2056 6572 7369  e License, Versi\n+000005e0: 6f6e 2032 2e30 3c2f 6e61 6d65 3e0a 2020  on 2.0</name>.  \n+000005f0: 2020 2020 3c75 726c 3e68 7474 703a 2f2f      <url>http://\n+00000600: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n+00000610: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n+00000620: 322e 303c 2f75 726c 3e0a 2020 2020 2020  2.0</url>.      \n+00000630: 3c64 6973 7472 6962 7574 696f 6e3e 7265  <distribution>re\n+00000640: 706f 3c2f 6469 7374 7269 6275 7469 6f6e  po</distribution\n+00000650: 3e0a 2020 2020 3c2f 6c69 6365 6e73 653e  >.    </license>\n+00000660: 0a20 203c 2f6c 6963 656e 7365 733e 0a20  .  </licenses>. \n+00000670: 203c 7072 6f70 6572 7469 6573 3e0a 2020   <properties>.  \n+00000680: 2020 3c73 6b69 705f 6d61 7665 6e5f 6465    <skip_maven_de\n+00000690: 706c 6f79 3e66 616c 7365 3c2f 736b 6970  ploy>false</skip\n+000006a0: 5f6d 6176 656e 5f64 6570 6c6f 793e 0a20  _maven_deploy>. \n+000006b0: 203c 2f70 726f 7065 7274 6965 733e 0a20   </properties>. \n+000006c0: 203c 6465 7065 6e64 656e 6369 6573 3e0a   <dependencies>.\n+000006d0: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+000006e0: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+000006f0: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+00000700: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+00000710: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+00000720: 626f 2d72 6567 6973 7472 792d 6170 693c  bo-registry-api<\n+00000730: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+00000740: 2020 203c 7665 7273 696f 6e3e 247b 7072     <version>${pr\n+00000750: 6f6a 6563 742e 7061 7265 6e74 2e76 6572  oject.parent.ver\n+00000760: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a  sion}</version>.\n+00000770: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000780: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000790: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+000007a0: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n+000007b0: 626f 3c2f 6772 6f75 7049 643e 0a20 2020  bo</groupId>.   \n+000007c0: 2020 203c 6172 7469 6661 6374 4964 3e64     <artifactId>d\n+000007d0: 7562 626f 2d72 656d 6f74 696e 672d 7a6f  ubbo-remoting-zo\n+000007e0: 6f6b 6565 7065 723c 2f61 7274 6966 6163  okeeper</artifac\n+000007f0: 7449 643e 0a20 2020 2020 203c 7665 7273  tId>.      <vers\n+00000800: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n+00000810: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n+00000820: 6572 7369 6f6e 3e0a 2020 2020 3c2f 6465  ersion>.    </de\n+00000830: 7065 6e64 656e 6379 3e0a 2020 2020 3c64  pendency>.    <d\n+00000840: 6570 656e 6465 6e63 793e 0a20 2020 2020  ependency>.     \n+00000850: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000860: 6163 6865 2e63 7572 6174 6f72 3c2f 6772  ache.curator</gr\n+00000870: 6f75 7049 643e 0a20 2020 2020 203c 6172  oupId>.      <ar\n+00000880: 7469 6661 6374 4964 3e63 7572 6174 6f72  tifactId>curator\n+00000890: 2d78 2d64 6973 636f 7665 7279 3c2f 6172  -x-discovery</ar\n+000008a0: 7469 6661 6374 4964 3e0a 2020 2020 3c2f  tifactId>.    </\n+000008b0: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+000008c0: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+000008d0: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+000008e0: 6170 6163 6865 2e63 7572 6174 6f72 3c2f  apache.curator</\n+000008f0: 6772 6f75 7049 643e 0a20 2020 2020 203c  groupId>.      <\n+00000900: 6172 7469 6661 6374 4964 3e63 7572 6174  artifactId>curat\n+00000910: 6f72 2d74 6573 743c 2f61 7274 6966 6163  or-test</artifac\n+00000920: 7449 643e 0a20 2020 2020 203c 7363 6f70  tId>.      <scop\n+00000930: 653e 7465 7374 3c2f 7363 6f70 653e 0a20  e>test</scope>. \n+00000940: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+00000950: 0a20 203c 2f64 6570 656e 6465 6e63 6965  .  </dependencie\n+00000960: 733e 0a3c 2f70 726f 6a65 6374 3e0a       s>.</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-remoting-zookeeper/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-remoting-zookeeper/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,162 +1,158 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a2d 2d3e 0d0a 3c70 726f  ense...-->..<pro\n-00000350: 6a65 6374 2078 7369 3a73 6368 656d 614c  ject xsi:schemaL\n-00000360: 6f63 6174 696f 6e3d 2268 7474 703a 2f2f  ocation=\"http://\n-00000370: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-00000380: 2f50 4f4d 2f34 2e30 2e30 2068 7474 7073  /POM/4.0.0 https\n-00000390: 3a2f 2f6d 6176 656e 2e61 7061 6368 652e  ://maven.apache.\n-000003a0: 6f72 672f 7873 642f 6d61 7665 6e2d 342e  org/xsd/maven-4.\n-000003b0: 302e 302e 7873 6422 2078 6d6c 6e73 3d22  0.0.xsd\" xmlns=\"\n-000003c0: 6874 7470 3a2f 2f6d 6176 656e 2e61 7061  http://maven.apa\n-000003d0: 6368 652e 6f72 672f 504f 4d2f 342e 302e  che.org/POM/4.0.\n-000003e0: 3022 0d0a 2020 2020 786d 6c6e 733a 7873  0\"..    xmlns:xs\n-000003f0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n-00000400: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n-00000410: 656d 612d 696e 7374 616e 6365 223e 0d0a  ema-instance\">..\n-00000420: 2020 3c6d 6f64 656c 5665 7273 696f 6e3e    <modelVersion>\n-00000430: 342e 302e 303c 2f6d 6f64 656c 5665 7273  4.0.0</modelVers\n-00000440: 696f 6e3e 0d0a 2020 3c70 6172 656e 743e  ion>..  <parent>\n-00000450: 0d0a 2020 2020 3c67 726f 7570 4964 3e6f  ..    <groupId>o\n-00000460: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000470: 2f67 726f 7570 4964 3e0d 0a20 2020 203c  /groupId>..    <\n-00000480: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000490: 2d72 656d 6f74 696e 673c 2f61 7274 6966  -remoting</artif\n-000004a0: 6163 7449 643e 0d0a 2020 2020 3c76 6572  actId>..    <ver\n-000004b0: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n-000004c0: 7369 6f6e 3e0d 0a20 203c 2f70 6172 656e  sion>..  </paren\n-000004d0: 743e 0d0a 2020 3c67 726f 7570 4964 3e6f  t>..  <groupId>o\n-000004e0: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-000004f0: 2f67 726f 7570 4964 3e0d 0a20 203c 6172  /groupId>..  <ar\n-00000500: 7469 6661 6374 4964 3e64 7562 626f 2d72  tifactId>dubbo-r\n-00000510: 656d 6f74 696e 672d 7a6f 6f6b 6565 7065  emoting-zookeepe\n-00000520: 723c 2f61 7274 6966 6163 7449 643e 0d0a  r</artifactId>..\n-00000530: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n-00000540: 303c 2f76 6572 7369 6f6e 3e0d 0a20 203c  0</version>..  <\n-00000550: 6e61 6d65 3e24 7b70 726f 6a65 6374 2e61  name>${project.a\n-00000560: 7274 6966 6163 7449 647d 3c2f 6e61 6d65  rtifactId}</name\n-00000570: 3e0d 0a20 203c 6465 7363 7269 7074 696f  >..  <descriptio\n-00000580: 6e3e 5468 6520 7a6f 6f6b 6565 7065 7220  n>The zookeeper \n-00000590: 7265 6d6f 7469 6e67 206d 6f64 756c 6520  remoting module \n-000005a0: 6f66 2064 7562 626f 2070 726f 6a65 6374  of dubbo project\n-000005b0: 3c2f 6465 7363 7269 7074 696f 6e3e 0d0a  </description>..\n-000005c0: 2020 3c6c 6963 656e 7365 733e 0d0a 2020    <licenses>..  \n-000005d0: 2020 3c6c 6963 656e 7365 3e0d 0a20 2020    <license>..   \n-000005e0: 2020 203c 6e61 6d65 3e41 7061 6368 6520     <name>Apache \n-000005f0: 4c69 6365 6e73 652c 2056 6572 7369 6f6e  License, Version\n-00000600: 2032 2e30 3c2f 6e61 6d65 3e0d 0a20 2020   2.0</name>..   \n-00000610: 2020 203c 7572 6c3e 6874 7470 3a2f 2f77     <url>http://w\n-00000620: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-00000630: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000640: 2e30 3c2f 7572 6c3e 0d0a 2020 2020 2020  .0</url>..      \n-00000650: 3c64 6973 7472 6962 7574 696f 6e3e 7265  <distribution>re\n-00000660: 706f 3c2f 6469 7374 7269 6275 7469 6f6e  po</distribution\n-00000670: 3e0d 0a20 2020 203c 2f6c 6963 656e 7365  >..    </license\n-00000680: 3e0d 0a20 203c 2f6c 6963 656e 7365 733e  >..  </licenses>\n-00000690: 0d0a 2020 3c70 726f 7065 7274 6965 733e  ..  <properties>\n-000006a0: 0d0a 2020 2020 3c73 6b69 705f 6d61 7665  ..    <skip_mave\n-000006b0: 6e5f 6465 706c 6f79 3e66 616c 7365 3c2f  n_deploy>false</\n-000006c0: 736b 6970 5f6d 6176 656e 5f64 6570 6c6f  skip_maven_deplo\n-000006d0: 793e 0d0a 2020 3c2f 7072 6f70 6572 7469  y>..  </properti\n-000006e0: 6573 3e0d 0a20 203c 6465 7065 6e64 656e  es>..  <dependen\n-000006f0: 6369 6573 3e0d 0a20 2020 203c 6465 7065  cies>..    <depe\n-00000700: 6e64 656e 6379 3e0d 0a20 2020 2020 203c  ndency>..      <\n-00000710: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n-00000720: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n-00000730: 643e 0d0a 2020 2020 2020 3c61 7274 6966  d>..      <artif\n-00000740: 6163 7449 643e 6475 6262 6f2d 7265 6d6f  actId>dubbo-remo\n-00000750: 7469 6e67 2d61 7069 3c2f 6172 7469 6661  ting-api</artifa\n-00000760: 6374 4964 3e0d 0a20 2020 2020 203c 7665  ctId>..      <ve\n-00000770: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n-00000780: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n-00000790: 2f76 6572 7369 6f6e 3e0d 0a20 2020 203c  /version>..    <\n-000007a0: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-000007b0: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-000007c0: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n-000007d0: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-000007e0: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-000007f0: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000800: 626f 2d63 6f6d 6d6f 6e3c 2f61 7274 6966  bo-common</artif\n-00000810: 6163 7449 643e 0d0a 2020 2020 2020 3c76  actId>..      <v\n-00000820: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n-00000830: 2e70 6172 656e 742e 7665 7273 696f 6e7d  .parent.version}\n-00000840: 3c2f 7665 7273 696f 6e3e 0d0a 2020 2020  </version>..    \n-00000850: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-00000860: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-00000870: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000880: 6f72 672e 6170 6163 6865 2e63 7572 6174  org.apache.curat\n-00000890: 6f72 3c2f 6772 6f75 7049 643e 0d0a 2020  or</groupId>..  \n-000008a0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-000008b0: 6375 7261 746f 722d 7265 6369 7065 733c  curator-recipes<\n-000008c0: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-000008d0: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-000008e0: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-000008f0: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-00000900: 643e 6f72 672e 6170 6163 6865 2e7a 6f6f  d>org.apache.zoo\n-00000910: 6b65 6570 6572 3c2f 6772 6f75 7049 643e  keeper</groupId>\n-00000920: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-00000930: 7449 643e 7a6f 6f6b 6565 7065 723c 2f61  tId>zookeeper</a\n-00000940: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-00000950: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-00000960: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-00000970: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000980: 6f72 672e 6170 6163 6865 2e63 7572 6174  org.apache.curat\n-00000990: 6f72 3c2f 6772 6f75 7049 643e 0d0a 2020  or</groupId>..  \n-000009a0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-000009b0: 6375 7261 746f 722d 7465 7374 3c2f 6172  curator-test</ar\n-000009c0: 7469 6661 6374 4964 3e0d 0a20 2020 2020  tifactId>..     \n-000009d0: 203c 7363 6f70 653e 7465 7374 3c2f 7363   <scope>test</sc\n-000009e0: 6f70 653e 0d0a 2020 2020 3c2f 6465 7065  ope>..    </depe\n-000009f0: 6e64 656e 6379 3e0d 0a20 203c 2f64 6570  ndency>..  </dep\n-00000a00: 656e 6465 6e63 6965 733e 0d0a 3c2f 7072  endencies>..</pr\n-00000a10: 6f6a 6563 743e 0d0a                      oject>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a2d 2d3e 0a3c 7072 6f6a  cense..-->.<proj\n+00000340: 6563 7420 7873 693a 7363 6865 6d61 4c6f  ect xsi:schemaLo\n+00000350: 6361 7469 6f6e 3d22 6874 7470 3a2f 2f6d  cation=\"http://m\n+00000360: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+00000370: 504f 4d2f 342e 302e 3020 6874 7470 733a  POM/4.0.0 https:\n+00000380: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n+00000390: 7267 2f78 7364 2f6d 6176 656e 2d34 2e30  rg/xsd/maven-4.0\n+000003a0: 2e30 2e78 7364 2220 786d 6c6e 733d 2268  .0.xsd\" xmlns=\"h\n+000003b0: 7474 703a 2f2f 6d61 7665 6e2e 6170 6163  ttp://maven.apac\n+000003c0: 6865 2e6f 7267 2f50 4f4d 2f34 2e30 2e30  he.org/POM/4.0.0\n+000003d0: 220a 2020 2020 786d 6c6e 733a 7873 693d  \".    xmlns:xsi=\n+000003e0: 2268 7474 703a 2f2f 7777 772e 7733 2e6f  \"http://www.w3.o\n+000003f0: 7267 2f32 3030 312f 584d 4c53 6368 656d  rg/2001/XMLSchem\n+00000400: 612d 696e 7374 616e 6365 223e 0a20 203c  a-instance\">.  <\n+00000410: 6d6f 6465 6c56 6572 7369 6f6e 3e34 2e30  modelVersion>4.0\n+00000420: 2e30 3c2f 6d6f 6465 6c56 6572 7369 6f6e  .0</modelVersion\n+00000430: 3e0a 2020 3c70 6172 656e 743e 0a20 2020  >.  <parent>.   \n+00000440: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000450: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000460: 7049 643e 0a20 2020 203c 6172 7469 6661  pId>.    <artifa\n+00000470: 6374 4964 3e64 7562 626f 2d72 656d 6f74  ctId>dubbo-remot\n+00000480: 696e 673c 2f61 7274 6966 6163 7449 643e  ing</artifactId>\n+00000490: 0a20 2020 203c 7665 7273 696f 6e3e 322e  .    <version>2.\n+000004a0: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+000004b0: 203c 2f70 6172 656e 743e 0a20 203c 6772   </parent>.  <gr\n+000004c0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000004d0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+000004e0: 0a20 203c 6172 7469 6661 6374 4964 3e64  .  <artifactId>d\n+000004f0: 7562 626f 2d72 656d 6f74 696e 672d 7a6f  ubbo-remoting-zo\n+00000500: 6f6b 6565 7065 723c 2f61 7274 6966 6163  okeeper</artifac\n+00000510: 7449 643e 0a20 203c 7665 7273 696f 6e3e  tId>.  <version>\n+00000520: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+00000530: 0a20 203c 6e61 6d65 3e24 7b70 726f 6a65  .  <name>${proje\n+00000540: 6374 2e61 7274 6966 6163 7449 647d 3c2f  ct.artifactId}</\n+00000550: 6e61 6d65 3e0a 2020 3c64 6573 6372 6970  name>.  <descrip\n+00000560: 7469 6f6e 3e54 6865 207a 6f6f 6b65 6570  tion>The zookeep\n+00000570: 6572 2072 656d 6f74 696e 6720 6d6f 6475  er remoting modu\n+00000580: 6c65 206f 6620 6475 6262 6f20 7072 6f6a  le of dubbo proj\n+00000590: 6563 743c 2f64 6573 6372 6970 7469 6f6e  ect</description\n+000005a0: 3e0a 2020 3c6c 6963 656e 7365 733e 0a20  >.  <licenses>. \n+000005b0: 2020 203c 6c69 6365 6e73 653e 0a20 2020     <license>.   \n+000005c0: 2020 203c 6e61 6d65 3e41 7061 6368 6520     <name>Apache \n+000005d0: 4c69 6365 6e73 652c 2056 6572 7369 6f6e  License, Version\n+000005e0: 2032 2e30 3c2f 6e61 6d65 3e0a 2020 2020   2.0</name>.    \n+000005f0: 2020 3c75 726c 3e68 7474 703a 2f2f 7777    <url>http://ww\n+00000600: 772e 6170 6163 6865 2e6f 7267 2f6c 6963  w.apache.org/lic\n+00000610: 656e 7365 732f 4c49 4345 4e53 452d 322e  enses/LICENSE-2.\n+00000620: 303c 2f75 726c 3e0a 2020 2020 2020 3c64  0</url>.      <d\n+00000630: 6973 7472 6962 7574 696f 6e3e 7265 706f  istribution>repo\n+00000640: 3c2f 6469 7374 7269 6275 7469 6f6e 3e0a  </distribution>.\n+00000650: 2020 2020 3c2f 6c69 6365 6e73 653e 0a20      </license>. \n+00000660: 203c 2f6c 6963 656e 7365 733e 0a20 203c   </licenses>.  <\n+00000670: 7072 6f70 6572 7469 6573 3e0a 2020 2020  properties>.    \n+00000680: 3c73 6b69 705f 6d61 7665 6e5f 6465 706c  <skip_maven_depl\n+00000690: 6f79 3e66 616c 7365 3c2f 736b 6970 5f6d  oy>false</skip_m\n+000006a0: 6176 656e 5f64 6570 6c6f 793e 0a20 203c  aven_deploy>.  <\n+000006b0: 2f70 726f 7065 7274 6965 733e 0a20 203c  /properties>.  <\n+000006c0: 6465 7065 6e64 656e 6369 6573 3e0a 2020  dependencies>.  \n+000006d0: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+000006e0: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n+000006f0: 672e 6170 6163 6865 2e64 7562 626f 3c2f  g.apache.dubbo</\n+00000700: 6772 6f75 7049 643e 0a20 2020 2020 203c  groupId>.      <\n+00000710: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n+00000720: 2d72 656d 6f74 696e 672d 6170 693c 2f61  -remoting-api</a\n+00000730: 7274 6966 6163 7449 643e 0a20 2020 2020  rtifactId>.     \n+00000740: 203c 7665 7273 696f 6e3e 247b 7072 6f6a   <version>${proj\n+00000750: 6563 742e 7061 7265 6e74 2e76 6572 7369  ect.parent.versi\n+00000760: 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a 2020  on}</version>.  \n+00000770: 2020 3c2f 6465 7065 6e64 656e 6379 3e0a    </dependency>.\n+00000780: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+00000790: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+000007a0: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+000007b0: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+000007c0: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+000007d0: 626f 2d63 6f6d 6d6f 6e3c 2f61 7274 6966  bo-common</artif\n+000007e0: 6163 7449 643e 0a20 2020 2020 203c 7665  actId>.      <ve\n+000007f0: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n+00000800: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n+00000810: 2f76 6572 7369 6f6e 3e0a 2020 2020 3c2f  /version>.    </\n+00000820: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000830: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+00000840: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000850: 6170 6163 6865 2e63 7572 6174 6f72 3c2f  apache.curator</\n+00000860: 6772 6f75 7049 643e 0a20 2020 2020 203c  groupId>.      <\n+00000870: 6172 7469 6661 6374 4964 3e63 7572 6174  artifactId>curat\n+00000880: 6f72 2d72 6563 6970 6573 3c2f 6172 7469  or-recipes</arti\n+00000890: 6661 6374 4964 3e0a 2020 2020 3c2f 6465  factId>.    </de\n+000008a0: 7065 6e64 656e 6379 3e0a 2020 2020 3c64  pendency>.    <d\n+000008b0: 6570 656e 6465 6e63 793e 0a20 2020 2020  ependency>.     \n+000008c0: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+000008d0: 6163 6865 2e7a 6f6f 6b65 6570 6572 3c2f  ache.zookeeper</\n+000008e0: 6772 6f75 7049 643e 0a20 2020 2020 203c  groupId>.      <\n+000008f0: 6172 7469 6661 6374 4964 3e7a 6f6f 6b65  artifactId>zooke\n+00000900: 6570 6572 3c2f 6172 7469 6661 6374 4964  eper</artifactId\n+00000910: 3e0a 2020 2020 3c2f 6465 7065 6e64 656e  >.    </dependen\n+00000920: 6379 3e0a 2020 2020 3c64 6570 656e 6465  cy>.    <depende\n+00000930: 6e63 793e 0a20 2020 2020 203c 6772 6f75  ncy>.      <grou\n+00000940: 7049 643e 6f72 672e 6170 6163 6865 2e63  pId>org.apache.c\n+00000950: 7572 6174 6f72 3c2f 6772 6f75 7049 643e  urator</groupId>\n+00000960: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+00000970: 4964 3e63 7572 6174 6f72 2d74 6573 743c  Id>curator-test<\n+00000980: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+00000990: 2020 203c 7363 6f70 653e 7465 7374 3c2f     <scope>test</\n+000009a0: 7363 6f70 653e 0a20 2020 203c 2f64 6570  scope>.    </dep\n+000009b0: 656e 6465 6e63 793e 0a20 203c 2f64 6570  endency>.  </dep\n+000009c0: 656e 6465 6e63 6965 733e 0a3c 2f70 726f  endencies>.</pro\n+000009d0: 6a65 6374 3e0a                           ject>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-registry-redis/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-registry-redis/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,163 +1,159 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 6567 6973 7472 793c 2f61 7274  bo-registry</art\n-000004a0: 6966 6163 7449 643e 0d0a 2020 2020 3c76  ifactId>..    <v\n-000004b0: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-000004c0: 6572 7369 6f6e 3e0d 0a20 203c 2f70 6172  ersion>..  </par\n-000004d0: 656e 743e 0d0a 2020 3c67 726f 7570 4964  ent>..  <groupId\n-000004e0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000004f0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 203c  o</groupId>..  <\n-00000500: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000510: 2d72 6567 6973 7472 792d 7265 6469 733c  -registry-redis<\n-00000520: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-00000530: 3c76 6572 7369 6f6e 3e32 2e37 2e31 303c  <version>2.7.10<\n-00000540: 2f76 6572 7369 6f6e 3e0d 0a20 203c 6e61  /version>..  <na\n-00000550: 6d65 3e24 7b70 726f 6a65 6374 2e61 7274  me>${project.art\n-00000560: 6966 6163 7449 647d 3c2f 6e61 6d65 3e0d  ifactId}</name>.\n-00000570: 0a20 203c 6465 7363 7269 7074 696f 6e3e  .  <description>\n-00000580: 5468 6520 7265 6469 7320 7265 6769 7374  The redis regist\n-00000590: 7279 206d 6f64 756c 6520 6f66 2064 7562  ry module of dub\n-000005a0: 626f 2070 726f 6a65 6374 3c2f 6465 7363  bo project</desc\n-000005b0: 7269 7074 696f 6e3e 0d0a 2020 3c6c 6963  ription>..  <lic\n-000005c0: 656e 7365 733e 0d0a 2020 2020 3c6c 6963  enses>..    <lic\n-000005d0: 656e 7365 3e0d 0a20 2020 2020 203c 6e61  ense>..      <na\n-000005e0: 6d65 3e41 7061 6368 6520 4c69 6365 6e73  me>Apache Licens\n-000005f0: 652c 2056 6572 7369 6f6e 2032 2e30 3c2f  e, Version 2.0</\n-00000600: 6e61 6d65 3e0d 0a20 2020 2020 203c 7572  name>..      <ur\n-00000610: 6c3e 6874 7470 3a2f 2f77 7777 2e61 7061  l>http://www.apa\n-00000620: 6368 652e 6f72 672f 6c69 6365 6e73 6573  che.org/licenses\n-00000630: 2f4c 4943 454e 5345 2d32 2e30 3c2f 7572  /LICENSE-2.0</ur\n-00000640: 6c3e 0d0a 2020 2020 2020 3c64 6973 7472  l>..      <distr\n-00000650: 6962 7574 696f 6e3e 7265 706f 3c2f 6469  ibution>repo</di\n-00000660: 7374 7269 6275 7469 6f6e 3e0d 0a20 2020  stribution>..   \n-00000670: 203c 2f6c 6963 656e 7365 3e0d 0a20 203c   </license>..  <\n-00000680: 2f6c 6963 656e 7365 733e 0d0a 2020 3c70  /licenses>..  <p\n-00000690: 726f 7065 7274 6965 733e 0d0a 2020 2020  roperties>..    \n-000006a0: 3c73 6b69 705f 6d61 7665 6e5f 6465 706c  <skip_maven_depl\n-000006b0: 6f79 3e66 616c 7365 3c2f 736b 6970 5f6d  oy>false</skip_m\n-000006c0: 6176 656e 5f64 6570 6c6f 793e 0d0a 2020  aven_deploy>..  \n-000006d0: 3c2f 7072 6f70 6572 7469 6573 3e0d 0a20  </properties>.. \n-000006e0: 203c 6465 7065 6e64 656e 6369 6573 3e0d   <dependencies>.\n-000006f0: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-00000700: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-00000710: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n-00000720: 626f 3c2f 6772 6f75 7049 643e 0d0a 2020  bo</groupId>..  \n-00000730: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-00000740: 6475 6262 6f2d 7265 6769 7374 7279 2d61  dubbo-registry-a\n-00000750: 7069 3c2f 6172 7469 6661 6374 4964 3e0d  pi</artifactId>.\n-00000760: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n-00000770: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n-00000780: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n-00000790: 6f6e 3e0d 0a20 2020 203c 2f64 6570 656e  on>..    </depen\n-000007a0: 6465 6e63 793e 0d0a 2020 2020 3c64 6570  dency>..    <dep\n-000007b0: 656e 6465 6e63 793e 0d0a 2020 2020 2020  endency>..      \n-000007c0: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n-000007d0: 6368 652e 6475 6262 6f3c 2f67 726f 7570  che.dubbo</group\n-000007e0: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-000007f0: 6661 6374 4964 3e64 7562 626f 2d72 656d  factId>dubbo-rem\n-00000800: 6f74 696e 672d 7265 6469 733c 2f61 7274  oting-redis</art\n-00000810: 6966 6163 7449 643e 0d0a 2020 2020 2020  ifactId>..      \n-00000820: 3c76 6572 7369 6f6e 3e24 7b70 726f 6a65  <version>${proje\n-00000830: 6374 2e70 6172 656e 742e 7665 7273 696f  ct.parent.versio\n-00000840: 6e7d 3c2f 7665 7273 696f 6e3e 0d0a 2020  n}</version>..  \n-00000850: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-00000860: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-00000870: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-00000880: 643e 7265 6469 732e 636c 6965 6e74 733c  d>redis.clients<\n-00000890: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-000008a0: 203c 6172 7469 6661 6374 4964 3e6a 6564   <artifactId>jed\n-000008b0: 6973 3c2f 6172 7469 6661 6374 4964 3e0d  is</artifactId>.\n-000008c0: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-000008d0: 793e 0d0a 2020 2020 3c64 6570 656e 6465  y>..    <depende\n-000008e0: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-000008f0: 7570 4964 3e63 6f6d 2e67 6974 6875 622e  upId>com.github.\n-00000900: 6b73 7479 7263 3c2f 6772 6f75 7049 643e  kstyrc</groupId>\n-00000910: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-00000920: 7449 643e 656d 6265 6464 6564 2d72 6564  tId>embedded-red\n-00000930: 6973 3c2f 6172 7469 6661 6374 4964 3e0d  is</artifactId>.\n-00000940: 0a20 2020 2020 203c 7363 6f70 653e 7465  .      <scope>te\n-00000950: 7374 3c2f 7363 6f70 653e 0d0a 2020 2020  st</scope>..    \n-00000960: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-00000970: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-00000980: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000990: 6f72 672e 6170 6163 6865 2e63 6f6d 6d6f  org.apache.commo\n-000009a0: 6e73 3c2f 6772 6f75 7049 643e 0d0a 2020  ns</groupId>..  \n-000009b0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-000009c0: 636f 6d6d 6f6e 732d 6c61 6e67 333c 2f61  commons-lang3</a\n-000009d0: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-000009e0: 2020 3c73 636f 7065 3e74 6573 743c 2f73    <scope>test</s\n-000009f0: 636f 7065 3e0d 0a20 2020 203c 2f64 6570  cope>..    </dep\n-00000a00: 656e 6465 6e63 793e 0d0a 2020 3c2f 6465  endency>..  </de\n-00000a10: 7065 6e64 656e 6369 6573 3e0d 0a3c 2f70  pendencies>..</p\n-00000a20: 726f 6a65 6374 3e0d 0a                   roject>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 6567  factId>dubbo-reg\n+00000480: 6973 7472 793c 2f61 7274 6966 6163 7449  istry</artifactI\n+00000490: 643e 0a20 2020 203c 7665 7273 696f 6e3e  d>.    <version>\n+000004a0: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+000004b0: 0a20 203c 2f70 6172 656e 743e 0a20 203c  .  </parent>.  <\n+000004c0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000004d0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000004e0: 643e 0a20 203c 6172 7469 6661 6374 4964  d>.  <artifactId\n+000004f0: 3e64 7562 626f 2d72 6567 6973 7472 792d  >dubbo-registry-\n+00000500: 7265 6469 733c 2f61 7274 6966 6163 7449  redis</artifactI\n+00000510: 643e 0a20 203c 7665 7273 696f 6e3e 322e  d>.  <version>2.\n+00000520: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+00000530: 203c 6e61 6d65 3e24 7b70 726f 6a65 6374   <name>${project\n+00000540: 2e61 7274 6966 6163 7449 647d 3c2f 6e61  .artifactId}</na\n+00000550: 6d65 3e0a 2020 3c64 6573 6372 6970 7469  me>.  <descripti\n+00000560: 6f6e 3e54 6865 2072 6564 6973 2072 6567  on>The redis reg\n+00000570: 6973 7472 7920 6d6f 6475 6c65 206f 6620  istry module of \n+00000580: 6475 6262 6f20 7072 6f6a 6563 743c 2f64  dubbo project</d\n+00000590: 6573 6372 6970 7469 6f6e 3e0a 2020 3c6c  escription>.  <l\n+000005a0: 6963 656e 7365 733e 0a20 2020 203c 6c69  icenses>.    <li\n+000005b0: 6365 6e73 653e 0a20 2020 2020 203c 6e61  cense>.      <na\n+000005c0: 6d65 3e41 7061 6368 6520 4c69 6365 6e73  me>Apache Licens\n+000005d0: 652c 2056 6572 7369 6f6e 2032 2e30 3c2f  e, Version 2.0</\n+000005e0: 6e61 6d65 3e0a 2020 2020 2020 3c75 726c  name>.      <url\n+000005f0: 3e68 7474 703a 2f2f 7777 772e 6170 6163  >http://www.apac\n+00000600: 6865 2e6f 7267 2f6c 6963 656e 7365 732f  he.org/licenses/\n+00000610: 4c49 4345 4e53 452d 322e 303c 2f75 726c  LICENSE-2.0</url\n+00000620: 3e0a 2020 2020 2020 3c64 6973 7472 6962  >.      <distrib\n+00000630: 7574 696f 6e3e 7265 706f 3c2f 6469 7374  ution>repo</dist\n+00000640: 7269 6275 7469 6f6e 3e0a 2020 2020 3c2f  ribution>.    </\n+00000650: 6c69 6365 6e73 653e 0a20 203c 2f6c 6963  license>.  </lic\n+00000660: 656e 7365 733e 0a20 203c 7072 6f70 6572  enses>.  <proper\n+00000670: 7469 6573 3e0a 2020 2020 3c73 6b69 705f  ties>.    <skip_\n+00000680: 6d61 7665 6e5f 6465 706c 6f79 3e66 616c  maven_deploy>fal\n+00000690: 7365 3c2f 736b 6970 5f6d 6176 656e 5f64  se</skip_maven_d\n+000006a0: 6570 6c6f 793e 0a20 203c 2f70 726f 7065  eploy>.  </prope\n+000006b0: 7274 6965 733e 0a20 203c 6465 7065 6e64  rties>.  <depend\n+000006c0: 656e 6369 6573 3e0a 2020 2020 3c64 6570  encies>.    <dep\n+000006d0: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+000006e0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000006f0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+00000700: 643e 0a20 2020 2020 203c 6172 7469 6661  d>.      <artifa\n+00000710: 6374 4964 3e64 7562 626f 2d72 6567 6973  ctId>dubbo-regis\n+00000720: 7472 792d 6170 693c 2f61 7274 6966 6163  try-api</artifac\n+00000730: 7449 643e 0a20 2020 2020 203c 7665 7273  tId>.      <vers\n+00000740: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n+00000750: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n+00000760: 6572 7369 6f6e 3e0a 2020 2020 3c2f 6465  ersion>.    </de\n+00000770: 7065 6e64 656e 6379 3e0a 2020 2020 3c64  pendency>.    <d\n+00000780: 6570 656e 6465 6e63 793e 0a20 2020 2020  ependency>.     \n+00000790: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+000007a0: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+000007b0: 7049 643e 0a20 2020 2020 203c 6172 7469  pId>.      <arti\n+000007c0: 6661 6374 4964 3e64 7562 626f 2d72 656d  factId>dubbo-rem\n+000007d0: 6f74 696e 672d 7265 6469 733c 2f61 7274  oting-redis</art\n+000007e0: 6966 6163 7449 643e 0a20 2020 2020 203c  ifactId>.      <\n+000007f0: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n+00000800: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n+00000810: 7d3c 2f76 6572 7369 6f6e 3e0a 2020 2020  }</version>.    \n+00000820: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+00000830: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+00000840: 2020 2020 203c 6772 6f75 7049 643e 7265       <groupId>re\n+00000850: 6469 732e 636c 6965 6e74 733c 2f67 726f  dis.clients</gro\n+00000860: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000870: 6966 6163 7449 643e 6a65 6469 733c 2f61  ifactId>jedis</a\n+00000880: 7274 6966 6163 7449 643e 0a20 2020 203c  rtifactId>.    <\n+00000890: 2f64 6570 656e 6465 6e63 793e 0a20 2020  /dependency>.   \n+000008a0: 203c 6465 7065 6e64 656e 6379 3e0a 2020   <dependency>.  \n+000008b0: 2020 2020 3c67 726f 7570 4964 3e63 6f6d      <groupId>com\n+000008c0: 2e67 6974 6875 622e 6b73 7479 7263 3c2f  .github.kstyrc</\n+000008d0: 6772 6f75 7049 643e 0a20 2020 2020 203c  groupId>.      <\n+000008e0: 6172 7469 6661 6374 4964 3e65 6d62 6564  artifactId>embed\n+000008f0: 6465 642d 7265 6469 733c 2f61 7274 6966  ded-redis</artif\n+00000900: 6163 7449 643e 0a20 2020 2020 203c 7363  actId>.      <sc\n+00000910: 6f70 653e 7465 7374 3c2f 7363 6f70 653e  ope>test</scope>\n+00000920: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+00000930: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+00000940: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+00000950: 4964 3e6f 7267 2e61 7061 6368 652e 636f  Id>org.apache.co\n+00000960: 6d6d 6f6e 733c 2f67 726f 7570 4964 3e0a  mmons</groupId>.\n+00000970: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n+00000980: 643e 636f 6d6d 6f6e 732d 6c61 6e67 333c  d>commons-lang3<\n+00000990: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+000009a0: 2020 203c 7363 6f70 653e 7465 7374 3c2f     <scope>test</\n+000009b0: 7363 6f70 653e 0a20 2020 203c 2f64 6570  scope>.    </dep\n+000009c0: 656e 6465 6e63 793e 0a20 203c 2f64 6570  endency>.  </dep\n+000009d0: 656e 6465 6e63 6965 733e 0a3c 2f70 726f  endencies>.</pro\n+000009e0: 6a65 6374 3e0a                           ject>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-registry-consul/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-registry-consul/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,154 +1,150 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 7e20 4c69 6365 6e73 6564 2074 6f20 7468  ~ Licensed to th\n-00000040: 6520 4170 6163 6865 2053 6f66 7477 6172  e Apache Softwar\n-00000050: 6520 466f 756e 6461 7469 6f6e 2028 4153  e Foundation (AS\n-00000060: 4629 2075 6e64 6572 206f 6e65 206f 7220  F) under one or \n-00000070: 6d6f 7265 0d0a 2020 7e20 636f 6e74 7269  more..  ~ contri\n-00000080: 6275 746f 7220 6c69 6365 6e73 6520 6167  butor license ag\n-00000090: 7265 656d 656e 7473 2e20 2053 6565 2074  reements.  See t\n-000000a0: 6865 204e 4f54 4943 4520 6669 6c65 2064  he NOTICE file d\n-000000b0: 6973 7472 6962 7574 6564 2077 6974 680d  istributed with.\n-000000c0: 0a20 207e 2074 6869 7320 776f 726b 2066  .  ~ this work f\n-000000d0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n-000000e0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n-000000f0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n-00000100: 6e65 7273 6869 702e 0d0a 2020 7e20 5468  nership...  ~ Th\n-00000110: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000120: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000130: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000140: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000150: 6e20 322e 300d 0a20 207e 2028 7468 6520  n 2.0..  ~ (the \n-00000160: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n-00000170: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n-00000180: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n-00000190: 636f 6d70 6c69 616e 6365 2077 6974 680d  compliance with.\n-000001a0: 0a20 207e 2074 6865 204c 6963 656e 7365  .  ~ the License\n-000001b0: 2e20 2059 6f75 206d 6179 206f 6274 6169  .  You may obtai\n-000001c0: 6e20 6120 636f 7079 206f 6620 7468 6520  n a copy of the \n-000001d0: 4c69 6365 6e73 6520 6174 0d0a 2020 7e0d  License at..  ~.\n-000001e0: 0a20 207e 2020 2020 2068 7474 703a 2f2f  .  ~     http://\n-000001f0: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n-00000200: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n-00000210: 322e 300d 0a20 207e 0d0a 2020 7e20 556e  2.0..  ~..  ~ Un\n-00000220: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n-00000230: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n-00000240: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n-00000250: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n-00000260: 650d 0a20 207e 2064 6973 7472 6962 7574  e..  ~ distribut\n-00000270: 6564 2075 6e64 6572 2074 6865 204c 6963  ed under the Lic\n-00000280: 656e 7365 2069 7320 6469 7374 7269 6275  ense is distribu\n-00000290: 7465 6420 6f6e 2061 6e20 2241 5320 4953  ted on an \"AS IS\n-000002a0: 2220 4241 5349 532c 0d0a 2020 7e20 5749  \" BASIS,..  ~ WI\n-000002b0: 5448 4f55 5420 5741 5252 414e 5449 4553  THOUT WARRANTIES\n-000002c0: 204f 5220 434f 4e44 4954 494f 4e53 204f   OR CONDITIONS O\n-000002d0: 4620 414e 5920 4b49 4e44 2c20 6569 7468  F ANY KIND, eith\n-000002e0: 6572 2065 7870 7265 7373 206f 7220 696d  er express or im\n-000002f0: 706c 6965 642e 0d0a 2020 7e20 5365 6520  plied...  ~ See \n-00000300: 7468 6520 4c69 6365 6e73 6520 666f 7220  the License for \n-00000310: 7468 6520 7370 6563 6966 6963 206c 616e  the specific lan\n-00000320: 6775 6167 6520 676f 7665 726e 696e 6720  guage governing \n-00000330: 7065 726d 6973 7369 6f6e 7320 616e 640d  permissions and.\n-00000340: 0a20 207e 206c 696d 6974 6174 696f 6e73  .  ~ limitations\n-00000350: 2075 6e64 6572 2074 6865 204c 6963 656e   under the Licen\n-00000360: 7365 2e0d 0a20 202d 2d3e 0d0a 3c70 726f  se...  -->..<pro\n-00000370: 6a65 6374 2078 7369 3a73 6368 656d 614c  ject xsi:schemaL\n-00000380: 6f63 6174 696f 6e3d 2268 7474 703a 2f2f  ocation=\"http://\n-00000390: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003a0: 2f50 4f4d 2f34 2e30 2e30 2068 7474 7073  /POM/4.0.0 https\n-000003b0: 3a2f 2f6d 6176 656e 2e61 7061 6368 652e  ://maven.apache.\n-000003c0: 6f72 672f 7873 642f 6d61 7665 6e2d 342e  org/xsd/maven-4.\n-000003d0: 302e 302e 7873 6422 2078 6d6c 6e73 3d22  0.0.xsd\" xmlns=\"\n-000003e0: 6874 7470 3a2f 2f6d 6176 656e 2e61 7061  http://maven.apa\n-000003f0: 6368 652e 6f72 672f 504f 4d2f 342e 302e  che.org/POM/4.0.\n-00000400: 3022 0d0a 2020 2020 786d 6c6e 733a 7873  0\"..    xmlns:xs\n-00000410: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n-00000420: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n-00000430: 656d 612d 696e 7374 616e 6365 223e 0d0a  ema-instance\">..\n-00000440: 2020 3c6d 6f64 656c 5665 7273 696f 6e3e    <modelVersion>\n-00000450: 342e 302e 303c 2f6d 6f64 656c 5665 7273  4.0.0</modelVers\n-00000460: 696f 6e3e 0d0a 2020 3c70 6172 656e 743e  ion>..  <parent>\n-00000470: 0d0a 2020 2020 3c67 726f 7570 4964 3e6f  ..    <groupId>o\n-00000480: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000490: 2f67 726f 7570 4964 3e0d 0a20 2020 203c  /groupId>..    <\n-000004a0: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-000004b0: 2d72 6567 6973 7472 793c 2f61 7274 6966  -registry</artif\n-000004c0: 6163 7449 643e 0d0a 2020 2020 3c76 6572  actId>..    <ver\n-000004d0: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n-000004e0: 7369 6f6e 3e0d 0a20 203c 2f70 6172 656e  sion>..  </paren\n-000004f0: 743e 0d0a 2020 3c67 726f 7570 4964 3e6f  t>..  <groupId>o\n-00000500: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000510: 2f67 726f 7570 4964 3e0d 0a20 203c 6172  /groupId>..  <ar\n-00000520: 7469 6661 6374 4964 3e64 7562 626f 2d72  tifactId>dubbo-r\n-00000530: 6567 6973 7472 792d 636f 6e73 756c 3c2f  egistry-consul</\n-00000540: 6172 7469 6661 6374 4964 3e0d 0a20 203c  artifactId>..  <\n-00000550: 7665 7273 696f 6e3e 322e 372e 3130 3c2f  version>2.7.10</\n-00000560: 7665 7273 696f 6e3e 0d0a 2020 3c6c 6963  version>..  <lic\n-00000570: 656e 7365 733e 0d0a 2020 2020 3c6c 6963  enses>..    <lic\n-00000580: 656e 7365 3e0d 0a20 2020 2020 203c 6e61  ense>..      <na\n-00000590: 6d65 3e41 7061 6368 6520 4c69 6365 6e73  me>Apache Licens\n-000005a0: 652c 2056 6572 7369 6f6e 2032 2e30 3c2f  e, Version 2.0</\n-000005b0: 6e61 6d65 3e0d 0a20 2020 2020 203c 7572  name>..      <ur\n-000005c0: 6c3e 6874 7470 3a2f 2f77 7777 2e61 7061  l>http://www.apa\n-000005d0: 6368 652e 6f72 672f 6c69 6365 6e73 6573  che.org/licenses\n-000005e0: 2f4c 4943 454e 5345 2d32 2e30 3c2f 7572  /LICENSE-2.0</ur\n-000005f0: 6c3e 0d0a 2020 2020 2020 3c64 6973 7472  l>..      <distr\n-00000600: 6962 7574 696f 6e3e 7265 706f 3c2f 6469  ibution>repo</di\n-00000610: 7374 7269 6275 7469 6f6e 3e0d 0a20 2020  stribution>..   \n-00000620: 203c 2f6c 6963 656e 7365 3e0d 0a20 203c   </license>..  <\n-00000630: 2f6c 6963 656e 7365 733e 0d0a 2020 3c70  /licenses>..  <p\n-00000640: 726f 7065 7274 6965 733e 0d0a 2020 2020  roperties>..    \n-00000650: 3c73 6b69 7049 6e74 6567 7261 7469 6f6e  <skipIntegration\n-00000660: 5465 7374 733e 7472 7565 3c2f 736b 6970  Tests>true</skip\n-00000670: 496e 7465 6772 6174 696f 6e54 6573 7473  IntegrationTests\n-00000680: 3e0d 0a20 203c 2f70 726f 7065 7274 6965  >..  </propertie\n-00000690: 733e 0d0a 2020 3c64 6570 656e 6465 6e63  s>..  <dependenc\n-000006a0: 6965 733e 0d0a 2020 2020 3c64 6570 656e  ies>..    <depen\n-000006b0: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-000006c0: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n-000006d0: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n-000006e0: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-000006f0: 6374 4964 3e64 7562 626f 2d72 6567 6973  ctId>dubbo-regis\n-00000700: 7472 792d 6170 693c 2f61 7274 6966 6163  try-api</artifac\n-00000710: 7449 643e 0d0a 2020 2020 2020 3c76 6572  tId>..      <ver\n-00000720: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n-00000730: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n-00000740: 7665 7273 696f 6e3e 0d0a 2020 2020 3c2f  version>..    </\n-00000750: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000760: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-00000770: 2020 2020 203c 6772 6f75 7049 643e 636f       <groupId>co\n-00000780: 6d2e 6563 7769 642e 636f 6e73 756c 3c2f  m.ecwid.consul</\n-00000790: 6772 6f75 7049 643e 0d0a 2020 2020 2020  groupId>..      \n-000007a0: 3c61 7274 6966 6163 7449 643e 636f 6e73  <artifactId>cons\n-000007b0: 756c 2d61 7069 3c2f 6172 7469 6661 6374  ul-api</artifact\n-000007c0: 4964 3e0d 0a20 2020 203c 2f64 6570 656e  Id>..    </depen\n-000007d0: 6465 6e63 793e 0d0a 2020 2020 3c64 6570  dency>..    <dep\n-000007e0: 656e 6465 6e63 793e 0d0a 2020 2020 2020  endency>..      \n-000007f0: 3c67 726f 7570 4964 3e63 6f6d 2e70 737a  <groupId>com.psz\n-00000800: 796d 637a 796b 2e63 6f6e 7375 6c3c 2f67  ymczyk.consul</g\n-00000810: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-00000820: 6172 7469 6661 6374 4964 3e65 6d62 6564  artifactId>embed\n-00000830: 6465 642d 636f 6e73 756c 3c2f 6172 7469  ded-consul</arti\n-00000840: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-00000850: 7363 6f70 653e 7465 7374 3c2f 7363 6f70  scope>test</scop\n-00000860: 653e 0d0a 2020 2020 3c2f 6465 7065 6e64  e>..    </depend\n-00000870: 656e 6379 3e0d 0a20 203c 2f64 6570 656e  ency>..  </depen\n-00000880: 6465 6e63 6965 733e 0d0a 2020 3c62 7569  dencies>..  <bui\n-00000890: 6c64 3e0d 0a20 2020 203c 706c 7567 696e  ld>..    <plugin\n-000008a0: 733e 0d0a 2020 2020 2020 3c70 6c75 6769  s>..      <plugi\n-000008b0: 6e3e 0d0a 2020 2020 2020 2020 3c61 7274  n>..        <art\n-000008c0: 6966 6163 7449 643e 6d61 7665 6e2d 7375  ifactId>maven-su\n-000008d0: 7265 6669 7265 2d70 6c75 6769 6e3c 2f61  refire-plugin</a\n-000008e0: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-000008f0: 2020 2020 3c63 6f6e 6669 6775 7261 7469      <configurati\n-00000900: 6f6e 3e0d 0a20 2020 2020 2020 2020 203c  on>..          <\n-00000910: 736b 6970 5465 7374 733e 247b 736b 6970  skipTests>${skip\n-00000920: 496e 7465 6772 6174 696f 6e54 6573 7473  IntegrationTests\n-00000930: 7d3c 2f73 6b69 7054 6573 7473 3e0d 0a20  }</skipTests>.. \n-00000940: 2020 2020 2020 203c 2f63 6f6e 6669 6775         </configu\n-00000950: 7261 7469 6f6e 3e0d 0a20 2020 2020 203c  ration>..      <\n-00000960: 2f70 6c75 6769 6e3e 0d0a 2020 2020 3c2f  /plugin>..    </\n-00000970: 706c 7567 696e 733e 0d0a 2020 3c2f 6275  plugins>..  </bu\n-00000980: 696c 643e 0d0a 3c2f 7072 6f6a 6563 743e  ild>..</project>\n-00000990: 0d0a                                     ..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 7e20  F-8\"?>.<!--.  ~ \n+00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n+00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n+00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n+00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n+00000070: 7265 0a20 207e 2063 6f6e 7472 6962 7574  re.  ~ contribut\n+00000080: 6f72 206c 6963 656e 7365 2061 6772 6565  or license agree\n+00000090: 6d65 6e74 732e 2020 5365 6520 7468 6520  ments.  See the \n+000000a0: 4e4f 5449 4345 2066 696c 6520 6469 7374  NOTICE file dist\n+000000b0: 7269 6275 7465 6420 7769 7468 0a20 207e  ributed with.  ~\n+000000c0: 2074 6869 7320 776f 726b 2066 6f72 2061   this work for a\n+000000d0: 6464 6974 696f 6e61 6c20 696e 666f 726d  dditional inform\n+000000e0: 6174 696f 6e20 7265 6761 7264 696e 6720  ation regarding \n+000000f0: 636f 7079 7269 6768 7420 6f77 6e65 7273  copyright owners\n+00000100: 6869 702e 0a20 207e 2054 6865 2041 5346  hip..  ~ The ASF\n+00000110: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000120: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000130: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000140: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000150: 0a20 207e 2028 7468 6520 224c 6963 656e  .  ~ (the \"Licen\n+00000160: 7365 2229 3b20 796f 7520 6d61 7920 6e6f  se\"); you may no\n+00000170: 7420 7573 6520 7468 6973 2066 696c 6520  t use this file \n+00000180: 6578 6365 7074 2069 6e20 636f 6d70 6c69  except in compli\n+00000190: 616e 6365 2077 6974 680a 2020 7e20 7468  ance with.  ~ th\n+000001a0: 6520 4c69 6365 6e73 652e 2020 596f 7520  e License.  You \n+000001b0: 6d61 7920 6f62 7461 696e 2061 2063 6f70  may obtain a cop\n+000001c0: 7920 6f66 2074 6865 204c 6963 656e 7365  y of the License\n+000001d0: 2061 740a 2020 7e0a 2020 7e20 2020 2020   at.  ~.  ~     \n+000001e0: 6874 7470 3a2f 2f77 7777 2e61 7061 6368  http://www.apach\n+000001f0: 652e 6f72 672f 6c69 6365 6e73 6573 2f4c  e.org/licenses/L\n+00000200: 4943 454e 5345 2d32 2e30 0a20 207e 0a20  ICENSE-2.0.  ~. \n+00000210: 207e 2055 6e6c 6573 7320 7265 7175 6972   ~ Unless requir\n+00000220: 6564 2062 7920 6170 706c 6963 6162 6c65  ed by applicable\n+00000230: 206c 6177 206f 7220 6167 7265 6564 2074   law or agreed t\n+00000240: 6f20 696e 2077 7269 7469 6e67 2c20 736f  o in writing, so\n+00000250: 6674 7761 7265 0a20 207e 2064 6973 7472  ftware.  ~ distr\n+00000260: 6962 7574 6564 2075 6e64 6572 2074 6865  ibuted under the\n+00000270: 204c 6963 656e 7365 2069 7320 6469 7374   License is dist\n+00000280: 7269 6275 7465 6420 6f6e 2061 6e20 2241  ributed on an \"A\n+00000290: 5320 4953 2220 4241 5349 532c 0a20 207e  S IS\" BASIS,.  ~\n+000002a0: 2057 4954 484f 5554 2057 4152 5241 4e54   WITHOUT WARRANT\n+000002b0: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n+000002c0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n+000002d0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n+000002e0: 2069 6d70 6c69 6564 2e0a 2020 7e20 5365   implied..  ~ Se\n+000002f0: 6520 7468 6520 4c69 6365 6e73 6520 666f  e the License fo\n+00000300: 7220 7468 6520 7370 6563 6966 6963 206c  r the specific l\n+00000310: 616e 6775 6167 6520 676f 7665 726e 696e  anguage governin\n+00000320: 6720 7065 726d 6973 7369 6f6e 7320 616e  g permissions an\n+00000330: 640a 2020 7e20 6c69 6d69 7461 7469 6f6e  d.  ~ limitation\n+00000340: 7320 756e 6465 7220 7468 6520 4c69 6365  s under the Lice\n+00000350: 6e73 652e 0a20 202d 2d3e 0a3c 7072 6f6a  nse..  -->.<proj\n+00000360: 6563 7420 7873 693a 7363 6865 6d61 4c6f  ect xsi:schemaLo\n+00000370: 6361 7469 6f6e 3d22 6874 7470 3a2f 2f6d  cation=\"http://m\n+00000380: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+00000390: 504f 4d2f 342e 302e 3020 6874 7470 733a  POM/4.0.0 https:\n+000003a0: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n+000003b0: 7267 2f78 7364 2f6d 6176 656e 2d34 2e30  rg/xsd/maven-4.0\n+000003c0: 2e30 2e78 7364 2220 786d 6c6e 733d 2268  .0.xsd\" xmlns=\"h\n+000003d0: 7474 703a 2f2f 6d61 7665 6e2e 6170 6163  ttp://maven.apac\n+000003e0: 6865 2e6f 7267 2f50 4f4d 2f34 2e30 2e30  he.org/POM/4.0.0\n+000003f0: 220a 2020 2020 786d 6c6e 733a 7873 693d  \".    xmlns:xsi=\n+00000400: 2268 7474 703a 2f2f 7777 772e 7733 2e6f  \"http://www.w3.o\n+00000410: 7267 2f32 3030 312f 584d 4c53 6368 656d  rg/2001/XMLSchem\n+00000420: 612d 696e 7374 616e 6365 223e 0a20 203c  a-instance\">.  <\n+00000430: 6d6f 6465 6c56 6572 7369 6f6e 3e34 2e30  modelVersion>4.0\n+00000440: 2e30 3c2f 6d6f 6465 6c56 6572 7369 6f6e  .0</modelVersion\n+00000450: 3e0a 2020 3c70 6172 656e 743e 0a20 2020  >.  <parent>.   \n+00000460: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000470: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000480: 7049 643e 0a20 2020 203c 6172 7469 6661  pId>.    <artifa\n+00000490: 6374 4964 3e64 7562 626f 2d72 6567 6973  ctId>dubbo-regis\n+000004a0: 7472 793c 2f61 7274 6966 6163 7449 643e  try</artifactId>\n+000004b0: 0a20 2020 203c 7665 7273 696f 6e3e 322e  .    <version>2.\n+000004c0: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+000004d0: 203c 2f70 6172 656e 743e 0a20 203c 6772   </parent>.  <gr\n+000004e0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000004f0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+00000500: 0a20 203c 6172 7469 6661 6374 4964 3e64  .  <artifactId>d\n+00000510: 7562 626f 2d72 6567 6973 7472 792d 636f  ubbo-registry-co\n+00000520: 6e73 756c 3c2f 6172 7469 6661 6374 4964  nsul</artifactId\n+00000530: 3e0a 2020 3c76 6572 7369 6f6e 3e32 2e37  >.  <version>2.7\n+00000540: 2e31 303c 2f76 6572 7369 6f6e 3e0a 2020  .10</version>.  \n+00000550: 3c6c 6963 656e 7365 733e 0a20 2020 203c  <licenses>.    <\n+00000560: 6c69 6365 6e73 653e 0a20 2020 2020 203c  license>.      <\n+00000570: 6e61 6d65 3e41 7061 6368 6520 4c69 6365  name>Apache Lice\n+00000580: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000590: 3c2f 6e61 6d65 3e0a 2020 2020 2020 3c75  </name>.      <u\n+000005a0: 726c 3e68 7474 703a 2f2f 7777 772e 6170  rl>http://www.ap\n+000005b0: 6163 6865 2e6f 7267 2f6c 6963 656e 7365  ache.org/license\n+000005c0: 732f 4c49 4345 4e53 452d 322e 303c 2f75  s/LICENSE-2.0</u\n+000005d0: 726c 3e0a 2020 2020 2020 3c64 6973 7472  rl>.      <distr\n+000005e0: 6962 7574 696f 6e3e 7265 706f 3c2f 6469  ibution>repo</di\n+000005f0: 7374 7269 6275 7469 6f6e 3e0a 2020 2020  stribution>.    \n+00000600: 3c2f 6c69 6365 6e73 653e 0a20 203c 2f6c  </license>.  </l\n+00000610: 6963 656e 7365 733e 0a20 203c 7072 6f70  icenses>.  <prop\n+00000620: 6572 7469 6573 3e0a 2020 2020 3c73 6b69  erties>.    <ski\n+00000630: 7049 6e74 6567 7261 7469 6f6e 5465 7374  pIntegrationTest\n+00000640: 733e 7472 7565 3c2f 736b 6970 496e 7465  s>true</skipInte\n+00000650: 6772 6174 696f 6e54 6573 7473 3e0a 2020  grationTests>.  \n+00000660: 3c2f 7072 6f70 6572 7469 6573 3e0a 2020  </properties>.  \n+00000670: 3c64 6570 656e 6465 6e63 6965 733e 0a20  <dependencies>. \n+00000680: 2020 203c 6465 7065 6e64 656e 6379 3e0a     <dependency>.\n+00000690: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n+000006a0: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n+000006b0: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+000006c0: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+000006d0: 6f2d 7265 6769 7374 7279 2d61 7069 3c2f  o-registry-api</\n+000006e0: 6172 7469 6661 6374 4964 3e0a 2020 2020  artifactId>.    \n+000006f0: 2020 3c76 6572 7369 6f6e 3e24 7b70 726f    <version>${pro\n+00000700: 6a65 6374 2e70 6172 656e 742e 7665 7273  ject.parent.vers\n+00000710: 696f 6e7d 3c2f 7665 7273 696f 6e3e 0a20  ion}</version>. \n+00000720: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+00000730: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+00000740: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+00000750: 3e63 6f6d 2e65 6377 6964 2e63 6f6e 7375  >com.ecwid.consu\n+00000760: 6c3c 2f67 726f 7570 4964 3e0a 2020 2020  l</groupId>.    \n+00000770: 2020 3c61 7274 6966 6163 7449 643e 636f    <artifactId>co\n+00000780: 6e73 756c 2d61 7069 3c2f 6172 7469 6661  nsul-api</artifa\n+00000790: 6374 4964 3e0a 2020 2020 3c2f 6465 7065  ctId>.    </depe\n+000007a0: 6e64 656e 6379 3e0a 2020 2020 3c64 6570  ndency>.    <dep\n+000007b0: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+000007c0: 6772 6f75 7049 643e 636f 6d2e 7073 7a79  groupId>com.pszy\n+000007d0: 6d63 7a79 6b2e 636f 6e73 756c 3c2f 6772  mczyk.consul</gr\n+000007e0: 6f75 7049 643e 0a20 2020 2020 203c 6172  oupId>.      <ar\n+000007f0: 7469 6661 6374 4964 3e65 6d62 6564 6465  tifactId>embedde\n+00000800: 642d 636f 6e73 756c 3c2f 6172 7469 6661  d-consul</artifa\n+00000810: 6374 4964 3e0a 2020 2020 2020 3c73 636f  ctId>.      <sco\n+00000820: 7065 3e74 6573 743c 2f73 636f 7065 3e0a  pe>test</scope>.\n+00000830: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000840: 3e0a 2020 3c2f 6465 7065 6e64 656e 6369  >.  </dependenci\n+00000850: 6573 3e0a 2020 3c62 7569 6c64 3e0a 2020  es>.  <build>.  \n+00000860: 2020 3c70 6c75 6769 6e73 3e0a 2020 2020    <plugins>.    \n+00000870: 2020 3c70 6c75 6769 6e3e 0a20 2020 2020    <plugin>.     \n+00000880: 2020 203c 6172 7469 6661 6374 4964 3e6d     <artifactId>m\n+00000890: 6176 656e 2d73 7572 6566 6972 652d 706c  aven-surefire-pl\n+000008a0: 7567 696e 3c2f 6172 7469 6661 6374 4964  ugin</artifactId\n+000008b0: 3e0a 2020 2020 2020 2020 3c63 6f6e 6669  >.        <confi\n+000008c0: 6775 7261 7469 6f6e 3e0a 2020 2020 2020  guration>.      \n+000008d0: 2020 2020 3c73 6b69 7054 6573 7473 3e24      <skipTests>$\n+000008e0: 7b73 6b69 7049 6e74 6567 7261 7469 6f6e  {skipIntegration\n+000008f0: 5465 7374 737d 3c2f 736b 6970 5465 7374  Tests}</skipTest\n+00000900: 733e 0a20 2020 2020 2020 203c 2f63 6f6e  s>.        </con\n+00000910: 6669 6775 7261 7469 6f6e 3e0a 2020 2020  figuration>.    \n+00000920: 2020 3c2f 706c 7567 696e 3e0a 2020 2020    </plugin>.    \n+00000930: 3c2f 706c 7567 696e 733e 0a20 203c 2f62  </plugins>.  </b\n+00000940: 7569 6c64 3e0a 3c2f 7072 6f6a 6563 743e  uild>.</project>\n+00000950: 0a                                       .\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-registry-etcd3/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-registry-etcd3/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,144 +1,141 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 7e20 4c69 6365 6e73 6564 2074 6f20 7468  ~ Licensed to th\n-00000040: 6520 4170 6163 6865 2053 6f66 7477 6172  e Apache Softwar\n-00000050: 6520 466f 756e 6461 7469 6f6e 2028 4153  e Foundation (AS\n-00000060: 4629 2075 6e64 6572 206f 6e65 206f 7220  F) under one or \n-00000070: 6d6f 7265 0d0a 2020 7e20 636f 6e74 7269  more..  ~ contri\n-00000080: 6275 746f 7220 6c69 6365 6e73 6520 6167  butor license ag\n-00000090: 7265 656d 656e 7473 2e20 2053 6565 2074  reements.  See t\n-000000a0: 6865 204e 4f54 4943 4520 6669 6c65 2064  he NOTICE file d\n-000000b0: 6973 7472 6962 7574 6564 2077 6974 680d  istributed with.\n-000000c0: 0a20 207e 2074 6869 7320 776f 726b 2066  .  ~ this work f\n-000000d0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n-000000e0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n-000000f0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n-00000100: 6e65 7273 6869 702e 0d0a 2020 7e20 5468  nership...  ~ Th\n-00000110: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000120: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000130: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000140: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000150: 6e20 322e 300d 0a20 207e 2028 7468 6520  n 2.0..  ~ (the \n-00000160: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n-00000170: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n-00000180: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n-00000190: 636f 6d70 6c69 616e 6365 2077 6974 680d  compliance with.\n-000001a0: 0a20 207e 2074 6865 204c 6963 656e 7365  .  ~ the License\n-000001b0: 2e20 2059 6f75 206d 6179 206f 6274 6169  .  You may obtai\n-000001c0: 6e20 6120 636f 7079 206f 6620 7468 6520  n a copy of the \n-000001d0: 4c69 6365 6e73 6520 6174 0d0a 2020 7e0d  License at..  ~.\n-000001e0: 0a20 207e 2020 2020 2068 7474 703a 2f2f  .  ~     http://\n-000001f0: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n-00000200: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n-00000210: 322e 300d 0a20 207e 0d0a 2020 7e20 556e  2.0..  ~..  ~ Un\n-00000220: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n-00000230: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n-00000240: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n-00000250: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n-00000260: 650d 0a20 207e 2064 6973 7472 6962 7574  e..  ~ distribut\n-00000270: 6564 2075 6e64 6572 2074 6865 204c 6963  ed under the Lic\n-00000280: 656e 7365 2069 7320 6469 7374 7269 6275  ense is distribu\n-00000290: 7465 6420 6f6e 2061 6e20 2241 5320 4953  ted on an \"AS IS\n-000002a0: 2220 4241 5349 532c 0d0a 2020 7e20 5749  \" BASIS,..  ~ WI\n-000002b0: 5448 4f55 5420 5741 5252 414e 5449 4553  THOUT WARRANTIES\n-000002c0: 204f 5220 434f 4e44 4954 494f 4e53 204f   OR CONDITIONS O\n-000002d0: 4620 414e 5920 4b49 4e44 2c20 6569 7468  F ANY KIND, eith\n-000002e0: 6572 2065 7870 7265 7373 206f 7220 696d  er express or im\n-000002f0: 706c 6965 642e 0d0a 2020 7e20 5365 6520  plied...  ~ See \n-00000300: 7468 6520 4c69 6365 6e73 6520 666f 7220  the License for \n-00000310: 7468 6520 7370 6563 6966 6963 206c 616e  the specific lan\n-00000320: 6775 6167 6520 676f 7665 726e 696e 6720  guage governing \n-00000330: 7065 726d 6973 7369 6f6e 7320 616e 640d  permissions and.\n-00000340: 0a20 207e 206c 696d 6974 6174 696f 6e73  .  ~ limitations\n-00000350: 2075 6e64 6572 2074 6865 204c 6963 656e   under the Licen\n-00000360: 7365 2e0d 0a20 202d 2d3e 0d0a 3c70 726f  se...  -->..<pro\n-00000370: 6a65 6374 2078 7369 3a73 6368 656d 614c  ject xsi:schemaL\n-00000380: 6f63 6174 696f 6e3d 2268 7474 703a 2f2f  ocation=\"http://\n-00000390: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003a0: 2f50 4f4d 2f34 2e30 2e30 2068 7474 7073  /POM/4.0.0 https\n-000003b0: 3a2f 2f6d 6176 656e 2e61 7061 6368 652e  ://maven.apache.\n-000003c0: 6f72 672f 7873 642f 6d61 7665 6e2d 342e  org/xsd/maven-4.\n-000003d0: 302e 302e 7873 6422 2078 6d6c 6e73 3d22  0.0.xsd\" xmlns=\"\n-000003e0: 6874 7470 3a2f 2f6d 6176 656e 2e61 7061  http://maven.apa\n-000003f0: 6368 652e 6f72 672f 504f 4d2f 342e 302e  che.org/POM/4.0.\n-00000400: 3022 0d0a 2020 2020 786d 6c6e 733a 7873  0\"..    xmlns:xs\n-00000410: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n-00000420: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n-00000430: 656d 612d 696e 7374 616e 6365 223e 0d0a  ema-instance\">..\n-00000440: 2020 3c6d 6f64 656c 5665 7273 696f 6e3e    <modelVersion>\n-00000450: 342e 302e 303c 2f6d 6f64 656c 5665 7273  4.0.0</modelVers\n-00000460: 696f 6e3e 0d0a 2020 3c70 6172 656e 743e  ion>..  <parent>\n-00000470: 0d0a 2020 2020 3c67 726f 7570 4964 3e6f  ..    <groupId>o\n-00000480: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000490: 2f67 726f 7570 4964 3e0d 0a20 2020 203c  /groupId>..    <\n-000004a0: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-000004b0: 2d72 6567 6973 7472 793c 2f61 7274 6966  -registry</artif\n-000004c0: 6163 7449 643e 0d0a 2020 2020 3c76 6572  actId>..    <ver\n-000004d0: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n-000004e0: 7369 6f6e 3e0d 0a20 203c 2f70 6172 656e  sion>..  </paren\n-000004f0: 743e 0d0a 2020 3c67 726f 7570 4964 3e6f  t>..  <groupId>o\n-00000500: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000510: 2f67 726f 7570 4964 3e0d 0a20 203c 6172  /groupId>..  <ar\n-00000520: 7469 6661 6374 4964 3e64 7562 626f 2d72  tifactId>dubbo-r\n-00000530: 6567 6973 7472 792d 6574 6364 333c 2f61  egistry-etcd3</a\n-00000540: 7274 6966 6163 7449 643e 0d0a 2020 3c76  rtifactId>..  <v\n-00000550: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-00000560: 6572 7369 6f6e 3e0d 0a20 203c 6e61 6d65  ersion>..  <name\n-00000570: 3e24 7b70 726f 6a65 6374 2e61 7274 6966  >${project.artif\n-00000580: 6163 7449 647d 3c2f 6e61 6d65 3e0d 0a20  actId}</name>.. \n-00000590: 203c 6465 7363 7269 7074 696f 6e3e 5468   <description>Th\n-000005a0: 6520 6574 6364 3320 7265 6769 7374 7279  e etcd3 registry\n-000005b0: 206d 6f64 756c 6520 6f66 2044 7562 626f   module of Dubbo\n-000005c0: 2070 726f 6a65 6374 3c2f 6465 7363 7269   project</descri\n-000005d0: 7074 696f 6e3e 0d0a 2020 3c6c 6963 656e  ption>..  <licen\n-000005e0: 7365 733e 0d0a 2020 2020 3c6c 6963 656e  ses>..    <licen\n-000005f0: 7365 3e0d 0a20 2020 2020 203c 6e61 6d65  se>..      <name\n-00000600: 3e41 7061 6368 6520 4c69 6365 6e73 652c  >Apache License,\n-00000610: 2056 6572 7369 6f6e 2032 2e30 3c2f 6e61   Version 2.0</na\n-00000620: 6d65 3e0d 0a20 2020 2020 203c 7572 6c3e  me>..      <url>\n-00000630: 6874 7470 3a2f 2f77 7777 2e61 7061 6368  http://www.apach\n-00000640: 652e 6f72 672f 6c69 6365 6e73 6573 2f4c  e.org/licenses/L\n-00000650: 4943 454e 5345 2d32 2e30 3c2f 7572 6c3e  ICENSE-2.0</url>\n-00000660: 0d0a 2020 2020 2020 3c64 6973 7472 6962  ..      <distrib\n-00000670: 7574 696f 6e3e 7265 706f 3c2f 6469 7374  ution>repo</dist\n-00000680: 7269 6275 7469 6f6e 3e0d 0a20 2020 203c  ribution>..    <\n-00000690: 2f6c 6963 656e 7365 3e0d 0a20 203c 2f6c  /license>..  </l\n-000006a0: 6963 656e 7365 733e 0d0a 2020 3c64 6570  icenses>..  <dep\n-000006b0: 656e 6465 6e63 6965 733e 0d0a 2020 2020  endencies>..    \n-000006c0: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-000006d0: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n-000006e0: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-000006f0: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-00000700: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000710: 2d72 6567 6973 7472 792d 6170 693c 2f61  -registry-api</a\n-00000720: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-00000730: 2020 3c76 6572 7369 6f6e 3e24 7b70 726f    <version>${pro\n-00000740: 6a65 6374 2e70 6172 656e 742e 7665 7273  ject.parent.vers\n-00000750: 696f 6e7d 3c2f 7665 7273 696f 6e3e 0d0a  ion}</version>..\n-00000760: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n-00000770: 3e0d 0a20 2020 203c 6465 7065 6e64 656e  >..    <dependen\n-00000780: 6379 3e0d 0a20 2020 2020 203c 6772 6f75  cy>..      <grou\n-00000790: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n-000007a0: 7562 626f 3c2f 6772 6f75 7049 643e 0d0a  ubbo</groupId>..\n-000007b0: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n-000007c0: 643e 6475 6262 6f2d 636f 6d6d 6f6e 3c2f  d>dubbo-common</\n-000007d0: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-000007e0: 2020 203c 7665 7273 696f 6e3e 247b 7072     <version>${pr\n-000007f0: 6f6a 6563 742e 7061 7265 6e74 2e76 6572  oject.parent.ver\n-00000800: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0d  sion}</version>.\n-00000810: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-00000820: 793e 0d0a 2020 2020 3c64 6570 656e 6465  y>..    <depende\n-00000830: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-00000840: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n-00000850: 6475 6262 6f3c 2f67 726f 7570 4964 3e0d  dubbo</groupId>.\n-00000860: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-00000870: 4964 3e64 7562 626f 2d72 656d 6f74 696e  Id>dubbo-remotin\n-00000880: 672d 6574 6364 333c 2f61 7274 6966 6163  g-etcd3</artifac\n-00000890: 7449 643e 0d0a 2020 2020 2020 3c76 6572  tId>..      <ver\n-000008a0: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n-000008b0: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n-000008c0: 7665 7273 696f 6e3e 0d0a 2020 2020 3c2f  version>..    </\n-000008d0: 6465 7065 6e64 656e 6379 3e0d 0a20 203c  dependency>..  <\n-000008e0: 2f64 6570 656e 6465 6e63 6965 733e 0d0a  /dependencies>..\n-000008f0: 3c2f 7072 6f6a 6563 743e 0d0a            </project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 7e20  F-8\"?>.<!--.  ~ \n+00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n+00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n+00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n+00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n+00000070: 7265 0a20 207e 2063 6f6e 7472 6962 7574  re.  ~ contribut\n+00000080: 6f72 206c 6963 656e 7365 2061 6772 6565  or license agree\n+00000090: 6d65 6e74 732e 2020 5365 6520 7468 6520  ments.  See the \n+000000a0: 4e4f 5449 4345 2066 696c 6520 6469 7374  NOTICE file dist\n+000000b0: 7269 6275 7465 6420 7769 7468 0a20 207e  ributed with.  ~\n+000000c0: 2074 6869 7320 776f 726b 2066 6f72 2061   this work for a\n+000000d0: 6464 6974 696f 6e61 6c20 696e 666f 726d  dditional inform\n+000000e0: 6174 696f 6e20 7265 6761 7264 696e 6720  ation regarding \n+000000f0: 636f 7079 7269 6768 7420 6f77 6e65 7273  copyright owners\n+00000100: 6869 702e 0a20 207e 2054 6865 2041 5346  hip..  ~ The ASF\n+00000110: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000120: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000130: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000140: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000150: 0a20 207e 2028 7468 6520 224c 6963 656e  .  ~ (the \"Licen\n+00000160: 7365 2229 3b20 796f 7520 6d61 7920 6e6f  se\"); you may no\n+00000170: 7420 7573 6520 7468 6973 2066 696c 6520  t use this file \n+00000180: 6578 6365 7074 2069 6e20 636f 6d70 6c69  except in compli\n+00000190: 616e 6365 2077 6974 680a 2020 7e20 7468  ance with.  ~ th\n+000001a0: 6520 4c69 6365 6e73 652e 2020 596f 7520  e License.  You \n+000001b0: 6d61 7920 6f62 7461 696e 2061 2063 6f70  may obtain a cop\n+000001c0: 7920 6f66 2074 6865 204c 6963 656e 7365  y of the License\n+000001d0: 2061 740a 2020 7e0a 2020 7e20 2020 2020   at.  ~.  ~     \n+000001e0: 6874 7470 3a2f 2f77 7777 2e61 7061 6368  http://www.apach\n+000001f0: 652e 6f72 672f 6c69 6365 6e73 6573 2f4c  e.org/licenses/L\n+00000200: 4943 454e 5345 2d32 2e30 0a20 207e 0a20  ICENSE-2.0.  ~. \n+00000210: 207e 2055 6e6c 6573 7320 7265 7175 6972   ~ Unless requir\n+00000220: 6564 2062 7920 6170 706c 6963 6162 6c65  ed by applicable\n+00000230: 206c 6177 206f 7220 6167 7265 6564 2074   law or agreed t\n+00000240: 6f20 696e 2077 7269 7469 6e67 2c20 736f  o in writing, so\n+00000250: 6674 7761 7265 0a20 207e 2064 6973 7472  ftware.  ~ distr\n+00000260: 6962 7574 6564 2075 6e64 6572 2074 6865  ibuted under the\n+00000270: 204c 6963 656e 7365 2069 7320 6469 7374   License is dist\n+00000280: 7269 6275 7465 6420 6f6e 2061 6e20 2241  ributed on an \"A\n+00000290: 5320 4953 2220 4241 5349 532c 0a20 207e  S IS\" BASIS,.  ~\n+000002a0: 2057 4954 484f 5554 2057 4152 5241 4e54   WITHOUT WARRANT\n+000002b0: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n+000002c0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n+000002d0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n+000002e0: 2069 6d70 6c69 6564 2e0a 2020 7e20 5365   implied..  ~ Se\n+000002f0: 6520 7468 6520 4c69 6365 6e73 6520 666f  e the License fo\n+00000300: 7220 7468 6520 7370 6563 6966 6963 206c  r the specific l\n+00000310: 616e 6775 6167 6520 676f 7665 726e 696e  anguage governin\n+00000320: 6720 7065 726d 6973 7369 6f6e 7320 616e  g permissions an\n+00000330: 640a 2020 7e20 6c69 6d69 7461 7469 6f6e  d.  ~ limitation\n+00000340: 7320 756e 6465 7220 7468 6520 4c69 6365  s under the Lice\n+00000350: 6e73 652e 0a20 202d 2d3e 0a3c 7072 6f6a  nse..  -->.<proj\n+00000360: 6563 7420 7873 693a 7363 6865 6d61 4c6f  ect xsi:schemaLo\n+00000370: 6361 7469 6f6e 3d22 6874 7470 3a2f 2f6d  cation=\"http://m\n+00000380: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+00000390: 504f 4d2f 342e 302e 3020 6874 7470 733a  POM/4.0.0 https:\n+000003a0: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n+000003b0: 7267 2f78 7364 2f6d 6176 656e 2d34 2e30  rg/xsd/maven-4.0\n+000003c0: 2e30 2e78 7364 2220 786d 6c6e 733d 2268  .0.xsd\" xmlns=\"h\n+000003d0: 7474 703a 2f2f 6d61 7665 6e2e 6170 6163  ttp://maven.apac\n+000003e0: 6865 2e6f 7267 2f50 4f4d 2f34 2e30 2e30  he.org/POM/4.0.0\n+000003f0: 220a 2020 2020 786d 6c6e 733a 7873 693d  \".    xmlns:xsi=\n+00000400: 2268 7474 703a 2f2f 7777 772e 7733 2e6f  \"http://www.w3.o\n+00000410: 7267 2f32 3030 312f 584d 4c53 6368 656d  rg/2001/XMLSchem\n+00000420: 612d 696e 7374 616e 6365 223e 0a20 203c  a-instance\">.  <\n+00000430: 6d6f 6465 6c56 6572 7369 6f6e 3e34 2e30  modelVersion>4.0\n+00000440: 2e30 3c2f 6d6f 6465 6c56 6572 7369 6f6e  .0</modelVersion\n+00000450: 3e0a 2020 3c70 6172 656e 743e 0a20 2020  >.  <parent>.   \n+00000460: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000470: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000480: 7049 643e 0a20 2020 203c 6172 7469 6661  pId>.    <artifa\n+00000490: 6374 4964 3e64 7562 626f 2d72 6567 6973  ctId>dubbo-regis\n+000004a0: 7472 793c 2f61 7274 6966 6163 7449 643e  try</artifactId>\n+000004b0: 0a20 2020 203c 7665 7273 696f 6e3e 322e  .    <version>2.\n+000004c0: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+000004d0: 203c 2f70 6172 656e 743e 0a20 203c 6772   </parent>.  <gr\n+000004e0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000004f0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+00000500: 0a20 203c 6172 7469 6661 6374 4964 3e64  .  <artifactId>d\n+00000510: 7562 626f 2d72 6567 6973 7472 792d 6574  ubbo-registry-et\n+00000520: 6364 333c 2f61 7274 6966 6163 7449 643e  cd3</artifactId>\n+00000530: 0a20 203c 7665 7273 696f 6e3e 322e 372e  .  <version>2.7.\n+00000540: 3130 3c2f 7665 7273 696f 6e3e 0a20 203c  10</version>.  <\n+00000550: 6e61 6d65 3e24 7b70 726f 6a65 6374 2e61  name>${project.a\n+00000560: 7274 6966 6163 7449 647d 3c2f 6e61 6d65  rtifactId}</name\n+00000570: 3e0a 2020 3c64 6573 6372 6970 7469 6f6e  >.  <description\n+00000580: 3e54 6865 2065 7463 6433 2072 6567 6973  >The etcd3 regis\n+00000590: 7472 7920 6d6f 6475 6c65 206f 6620 4475  try module of Du\n+000005a0: 6262 6f20 7072 6f6a 6563 743c 2f64 6573  bbo project</des\n+000005b0: 6372 6970 7469 6f6e 3e0a 2020 3c6c 6963  cription>.  <lic\n+000005c0: 656e 7365 733e 0a20 2020 203c 6c69 6365  enses>.    <lice\n+000005d0: 6e73 653e 0a20 2020 2020 203c 6e61 6d65  nse>.      <name\n+000005e0: 3e41 7061 6368 6520 4c69 6365 6e73 652c  >Apache License,\n+000005f0: 2056 6572 7369 6f6e 2032 2e30 3c2f 6e61   Version 2.0</na\n+00000600: 6d65 3e0a 2020 2020 2020 3c75 726c 3e68  me>.      <url>h\n+00000610: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+00000620: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+00000630: 4345 4e53 452d 322e 303c 2f75 726c 3e0a  CENSE-2.0</url>.\n+00000640: 2020 2020 2020 3c64 6973 7472 6962 7574        <distribut\n+00000650: 696f 6e3e 7265 706f 3c2f 6469 7374 7269  ion>repo</distri\n+00000660: 6275 7469 6f6e 3e0a 2020 2020 3c2f 6c69  bution>.    </li\n+00000670: 6365 6e73 653e 0a20 203c 2f6c 6963 656e  cense>.  </licen\n+00000680: 7365 733e 0a20 203c 6465 7065 6e64 656e  ses>.  <dependen\n+00000690: 6369 6573 3e0a 2020 2020 3c64 6570 656e  cies>.    <depen\n+000006a0: 6465 6e63 793e 0a20 2020 2020 203c 6772  dency>.      <gr\n+000006b0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000006c0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+000006d0: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+000006e0: 4964 3e64 7562 626f 2d72 6567 6973 7472  Id>dubbo-registr\n+000006f0: 792d 6170 693c 2f61 7274 6966 6163 7449  y-api</artifactI\n+00000700: 643e 0a20 2020 2020 203c 7665 7273 696f  d>.      <versio\n+00000710: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n+00000720: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n+00000730: 7369 6f6e 3e0a 2020 2020 3c2f 6465 7065  sion>.    </depe\n+00000740: 6e64 656e 6379 3e0a 2020 2020 3c64 6570  ndency>.    <dep\n+00000750: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+00000760: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+00000770: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+00000780: 643e 0a20 2020 2020 203c 6172 7469 6661  d>.      <artifa\n+00000790: 6374 4964 3e64 7562 626f 2d63 6f6d 6d6f  ctId>dubbo-commo\n+000007a0: 6e3c 2f61 7274 6966 6163 7449 643e 0a20  n</artifactId>. \n+000007b0: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n+000007c0: 7072 6f6a 6563 742e 7061 7265 6e74 2e76  project.parent.v\n+000007d0: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n+000007e0: 3e0a 2020 2020 3c2f 6465 7065 6e64 656e  >.    </dependen\n+000007f0: 6379 3e0a 2020 2020 3c64 6570 656e 6465  cy>.    <depende\n+00000800: 6e63 793e 0a20 2020 2020 203c 6772 6f75  ncy>.      <grou\n+00000810: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n+00000820: 7562 626f 3c2f 6772 6f75 7049 643e 0a20  ubbo</groupId>. \n+00000830: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n+00000840: 3e64 7562 626f 2d72 656d 6f74 696e 672d  >dubbo-remoting-\n+00000850: 6574 6364 333c 2f61 7274 6966 6163 7449  etcd3</artifactI\n+00000860: 643e 0a20 2020 2020 203c 7665 7273 696f  d>.      <versio\n+00000870: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n+00000880: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n+00000890: 7369 6f6e 3e0a 2020 2020 3c2f 6465 7065  sion>.    </depe\n+000008a0: 6e64 656e 6379 3e0a 2020 3c2f 6465 7065  ndency>.  </depe\n+000008b0: 6e64 656e 6369 6573 3e0a 3c2f 7072 6f6a  ndencies>.</proj\n+000008c0: 6563 743e 0a                             ect>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-registry-eureka/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-registry-eureka/pom.xml", "unified_diff": null, "details": [{"source1": "META-INF/maven/org.apache.dubbo/dubbo-registry-eureka/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-registry-eureka/pom.xml", "comments": ["Ordering differences only"], "unified_diff": "@@ -41,16 +41,16 @@\n       <version>${project.parent.version}</version>\n     </dependency>\n     <dependency>\n       <groupId>com.netflix.eureka</groupId>\n       <artifactId>eureka-client</artifactId>\n       <exclusions>\n         <exclusion>\n-          <artifactId>jsr311-api</artifactId>\n           <groupId>javax.ws.rs</groupId>\n+          <artifactId>jsr311-api</artifactId>\n         </exclusion>\n       </exclusions>\n     </dependency>\n     <dependency>\n       <groupId>javax.inject</groupId>\n       <artifactId>javax.inject</artifactId>\n       <version>1</version>\n"}]}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-registry-nacos/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-registry-nacos/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,196 +1,191 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 6567 6973 7472 793c 2f61 7274  bo-registry</art\n-000004a0: 6966 6163 7449 643e 0d0a 2020 2020 3c76  ifactId>..    <v\n-000004b0: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-000004c0: 6572 7369 6f6e 3e0d 0a20 203c 2f70 6172  ersion>..  </par\n-000004d0: 656e 743e 0d0a 2020 3c67 726f 7570 4964  ent>..  <groupId\n-000004e0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000004f0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 203c  o</groupId>..  <\n-00000500: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000510: 2d72 6567 6973 7472 792d 6e61 636f 733c  -registry-nacos<\n-00000520: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-00000530: 3c76 6572 7369 6f6e 3e32 2e37 2e31 303c  <version>2.7.10<\n-00000540: 2f76 6572 7369 6f6e 3e0d 0a20 203c 6e61  /version>..  <na\n-00000550: 6d65 3e24 7b70 726f 6a65 6374 2e61 7274  me>${project.art\n-00000560: 6966 6163 7449 647d 3c2f 6e61 6d65 3e0d  ifactId}</name>.\n-00000570: 0a20 203c 6465 7363 7269 7074 696f 6e3e  .  <description>\n-00000580: 5468 6520 4e61 636f 7320 7265 6769 7374  The Nacos regist\n-00000590: 7279 206d 6f64 756c 6520 6f66 2044 7562  ry module of Dub\n-000005a0: 626f 2070 726f 6a65 6374 3c2f 6465 7363  bo project</desc\n-000005b0: 7269 7074 696f 6e3e 0d0a 2020 3c6c 6963  ription>..  <lic\n-000005c0: 656e 7365 733e 0d0a 2020 2020 3c6c 6963  enses>..    <lic\n-000005d0: 656e 7365 3e0d 0a20 2020 2020 203c 6e61  ense>..      <na\n-000005e0: 6d65 3e41 7061 6368 6520 4c69 6365 6e73  me>Apache Licens\n-000005f0: 652c 2056 6572 7369 6f6e 2032 2e30 3c2f  e, Version 2.0</\n-00000600: 6e61 6d65 3e0d 0a20 2020 2020 203c 7572  name>..      <ur\n-00000610: 6c3e 6874 7470 3a2f 2f77 7777 2e61 7061  l>http://www.apa\n-00000620: 6368 652e 6f72 672f 6c69 6365 6e73 6573  che.org/licenses\n-00000630: 2f4c 4943 454e 5345 2d32 2e30 3c2f 7572  /LICENSE-2.0</ur\n-00000640: 6c3e 0d0a 2020 2020 2020 3c64 6973 7472  l>..      <distr\n-00000650: 6962 7574 696f 6e3e 7265 706f 3c2f 6469  ibution>repo</di\n-00000660: 7374 7269 6275 7469 6f6e 3e0d 0a20 2020  stribution>..   \n-00000670: 203c 2f6c 6963 656e 7365 3e0d 0a20 203c   </license>..  <\n-00000680: 2f6c 6963 656e 7365 733e 0d0a 2020 3c64  /licenses>..  <d\n-00000690: 6570 656e 6465 6e63 6965 733e 0d0a 2020  ependencies>..  \n-000006a0: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-000006b0: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n-000006c0: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-000006d0: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-000006e0: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-000006f0: 626f 2d72 6567 6973 7472 792d 6170 693c  bo-registry-api<\n-00000700: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-00000710: 2020 2020 3c76 6572 7369 6f6e 3e24 7b70      <version>${p\n-00000720: 726f 6a65 6374 2e76 6572 7369 6f6e 7d3c  roject.version}<\n-00000730: 2f76 6572 7369 6f6e 3e0d 0a20 2020 203c  /version>..    <\n-00000740: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-00000750: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-00000760: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n-00000770: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000780: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-00000790: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-000007a0: 626f 2d63 6f6d 6d6f 6e3c 2f61 7274 6966  bo-common</artif\n-000007b0: 6163 7449 643e 0d0a 2020 2020 2020 3c76  actId>..      <v\n-000007c0: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n-000007d0: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n-000007e0: 6f6e 3e0d 0a20 2020 203c 2f64 6570 656e  on>..    </depen\n-000007f0: 6465 6e63 793e 0d0a 2020 2020 3c64 6570  dency>..    <dep\n-00000800: 656e 6465 6e63 793e 0d0a 2020 2020 2020  endency>..      \n-00000810: 3c67 726f 7570 4964 3e63 6f6d 2e61 6c69  <groupId>com.ali\n-00000820: 6261 6261 2e6e 6163 6f73 3c2f 6772 6f75  baba.nacos</grou\n-00000830: 7049 643e 0d0a 2020 2020 2020 3c61 7274  pId>..      <art\n-00000840: 6966 6163 7449 643e 6e61 636f 732d 636c  ifactId>nacos-cl\n-00000850: 6965 6e74 3c2f 6172 7469 6661 6374 4964  ient</artifactId\n-00000860: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-00000870: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-00000880: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-00000890: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n-000008a0: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n-000008b0: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-000008c0: 6374 4964 3e64 7562 626f 2d73 6572 6961  ctId>dubbo-seria\n-000008d0: 6c69 7a61 7469 6f6e 2d68 6573 7369 616e  lization-hessian\n-000008e0: 323c 2f61 7274 6966 6163 7449 643e 0d0a  2</artifactId>..\n-000008f0: 2020 2020 2020 3c76 6572 7369 6f6e 3e24        <version>$\n-00000900: 7b70 726f 6a65 6374 2e76 6572 7369 6f6e  {project.version\n-00000910: 7d3c 2f76 6572 7369 6f6e 3e0d 0a20 2020  }</version>..   \n-00000920: 2020 203c 7363 6f70 653e 7465 7374 3c2f     <scope>test</\n-00000930: 7363 6f70 653e 0d0a 2020 2020 3c2f 6465  scope>..    </de\n-00000940: 7065 6e64 656e 6379 3e0d 0a20 2020 203c  pendency>..    <\n-00000950: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000960: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n-00000970: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-00000980: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-00000990: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n-000009a0: 7270 632d 6475 6262 6f3c 2f61 7274 6966  rpc-dubbo</artif\n-000009b0: 6163 7449 643e 0d0a 2020 2020 2020 3c76  actId>..      <v\n-000009c0: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n-000009d0: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n-000009e0: 6f6e 3e0d 0a20 2020 2020 203c 7363 6f70  on>..      <scop\n-000009f0: 653e 7465 7374 3c2f 7363 6f70 653e 0d0a  e>test</scope>..\n-00000a00: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n-00000a10: 3e0d 0a20 2020 203c 6465 7065 6e64 656e  >..    <dependen\n-00000a20: 6379 3e0d 0a20 2020 2020 203c 6772 6f75  cy>..      <grou\n-00000a30: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n-00000a40: 7562 626f 3c2f 6772 6f75 7049 643e 0d0a  ubbo</groupId>..\n-00000a50: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n-00000a60: 643e 6475 6262 6f2d 7265 6d6f 7469 6e67  d>dubbo-remoting\n-00000a70: 2d6e 6574 7479 343c 2f61 7274 6966 6163  -netty4</artifac\n-00000a80: 7449 643e 0d0a 2020 2020 2020 3c76 6572  tId>..      <ver\n-00000a90: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e76  sion>${project.v\n-00000aa0: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n-00000ab0: 3e0d 0a20 2020 2020 203c 7363 6f70 653e  >..      <scope>\n-00000ac0: 7465 7374 3c2f 7363 6f70 653e 0d0a 2020  test</scope>..  \n-00000ad0: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-00000ae0: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-00000af0: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-00000b00: 643e 6368 2e71 6f73 2e6c 6f67 6261 636b  d>ch.qos.logback\n-00000b10: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-00000b20: 2020 3c61 7274 6966 6163 7449 643e 6c6f    <artifactId>lo\n-00000b30: 6762 6163 6b2d 636c 6173 7369 633c 2f61  gback-classic</a\n-00000b40: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-00000b50: 2020 3c73 636f 7065 3e74 6573 743c 2f73    <scope>test</s\n-00000b60: 636f 7065 3e0d 0a20 2020 203c 2f64 6570  cope>..    </dep\n-00000b70: 656e 6465 6e63 793e 0d0a 2020 2020 3c64  endency>..    <d\n-00000b80: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000b90: 2020 3c67 726f 7570 4964 3e6f 7267 2e73    <groupId>org.s\n-00000ba0: 7072 696e 6766 7261 6d65 776f 726b 3c2f  pringframework</\n-00000bb0: 6772 6f75 7049 643e 0d0a 2020 2020 2020  groupId>..      \n-00000bc0: 3c61 7274 6966 6163 7449 643e 7370 7269  <artifactId>spri\n-00000bd0: 6e67 2d74 6573 743c 2f61 7274 6966 6163  ng-test</artifac\n-00000be0: 7449 643e 0d0a 2020 2020 2020 3c73 636f  tId>..      <sco\n-00000bf0: 7065 3e74 6573 743c 2f73 636f 7065 3e0d  pe>test</scope>.\n-00000c00: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-00000c10: 793e 0d0a 2020 3c2f 6465 7065 6e64 656e  y>..  </dependen\n-00000c20: 6369 6573 3e0d 0a3c 2f70 726f 6a65 6374  cies>..</project\n-00000c30: 3e0d 0a                                  >..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 6567  factId>dubbo-reg\n+00000480: 6973 7472 793c 2f61 7274 6966 6163 7449  istry</artifactI\n+00000490: 643e 0a20 2020 203c 7665 7273 696f 6e3e  d>.    <version>\n+000004a0: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+000004b0: 0a20 203c 2f70 6172 656e 743e 0a20 203c  .  </parent>.  <\n+000004c0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000004d0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000004e0: 643e 0a20 203c 6172 7469 6661 6374 4964  d>.  <artifactId\n+000004f0: 3e64 7562 626f 2d72 6567 6973 7472 792d  >dubbo-registry-\n+00000500: 6e61 636f 733c 2f61 7274 6966 6163 7449  nacos</artifactI\n+00000510: 643e 0a20 203c 7665 7273 696f 6e3e 322e  d>.  <version>2.\n+00000520: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+00000530: 203c 6e61 6d65 3e24 7b70 726f 6a65 6374   <name>${project\n+00000540: 2e61 7274 6966 6163 7449 647d 3c2f 6e61  .artifactId}</na\n+00000550: 6d65 3e0a 2020 3c64 6573 6372 6970 7469  me>.  <descripti\n+00000560: 6f6e 3e54 6865 204e 6163 6f73 2072 6567  on>The Nacos reg\n+00000570: 6973 7472 7920 6d6f 6475 6c65 206f 6620  istry module of \n+00000580: 4475 6262 6f20 7072 6f6a 6563 743c 2f64  Dubbo project</d\n+00000590: 6573 6372 6970 7469 6f6e 3e0a 2020 3c6c  escription>.  <l\n+000005a0: 6963 656e 7365 733e 0a20 2020 203c 6c69  icenses>.    <li\n+000005b0: 6365 6e73 653e 0a20 2020 2020 203c 6e61  cense>.      <na\n+000005c0: 6d65 3e41 7061 6368 6520 4c69 6365 6e73  me>Apache Licens\n+000005d0: 652c 2056 6572 7369 6f6e 2032 2e30 3c2f  e, Version 2.0</\n+000005e0: 6e61 6d65 3e0a 2020 2020 2020 3c75 726c  name>.      <url\n+000005f0: 3e68 7474 703a 2f2f 7777 772e 6170 6163  >http://www.apac\n+00000600: 6865 2e6f 7267 2f6c 6963 656e 7365 732f  he.org/licenses/\n+00000610: 4c49 4345 4e53 452d 322e 303c 2f75 726c  LICENSE-2.0</url\n+00000620: 3e0a 2020 2020 2020 3c64 6973 7472 6962  >.      <distrib\n+00000630: 7574 696f 6e3e 7265 706f 3c2f 6469 7374  ution>repo</dist\n+00000640: 7269 6275 7469 6f6e 3e0a 2020 2020 3c2f  ribution>.    </\n+00000650: 6c69 6365 6e73 653e 0a20 203c 2f6c 6963  license>.  </lic\n+00000660: 656e 7365 733e 0a20 203c 6465 7065 6e64  enses>.  <depend\n+00000670: 656e 6369 6573 3e0a 2020 2020 3c64 6570  encies>.    <dep\n+00000680: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+00000690: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000006a0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000006b0: 643e 0a20 2020 2020 203c 6172 7469 6661  d>.      <artifa\n+000006c0: 6374 4964 3e64 7562 626f 2d72 6567 6973  ctId>dubbo-regis\n+000006d0: 7472 792d 6170 693c 2f61 7274 6966 6163  try-api</artifac\n+000006e0: 7449 643e 0a20 2020 2020 203c 7665 7273  tId>.      <vers\n+000006f0: 696f 6e3e 247b 7072 6f6a 6563 742e 7665  ion>${project.ve\n+00000700: 7273 696f 6e7d 3c2f 7665 7273 696f 6e3e  rsion}</version>\n+00000710: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+00000720: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+00000730: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+00000740: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+00000750: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000760: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+00000770: 6475 6262 6f2d 636f 6d6d 6f6e 3c2f 6172  dubbo-common</ar\n+00000780: 7469 6661 6374 4964 3e0a 2020 2020 2020  tifactId>.      \n+00000790: 3c76 6572 7369 6f6e 3e24 7b70 726f 6a65  <version>${proje\n+000007a0: 6374 2e76 6572 7369 6f6e 7d3c 2f76 6572  ct.version}</ver\n+000007b0: 7369 6f6e 3e0a 2020 2020 3c2f 6465 7065  sion>.    </depe\n+000007c0: 6e64 656e 6379 3e0a 2020 2020 3c64 6570  ndency>.    <dep\n+000007d0: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+000007e0: 6772 6f75 7049 643e 636f 6d2e 616c 6962  groupId>com.alib\n+000007f0: 6162 612e 6e61 636f 733c 2f67 726f 7570  aba.nacos</group\n+00000800: 4964 3e0a 2020 2020 2020 3c61 7274 6966  Id>.      <artif\n+00000810: 6163 7449 643e 6e61 636f 732d 636c 6965  actId>nacos-clie\n+00000820: 6e74 3c2f 6172 7469 6661 6374 4964 3e0a  nt</artifactId>.\n+00000830: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000840: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000850: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+00000860: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n+00000870: 626f 3c2f 6772 6f75 7049 643e 0a20 2020  bo</groupId>.   \n+00000880: 2020 203c 6172 7469 6661 6374 4964 3e64     <artifactId>d\n+00000890: 7562 626f 2d73 6572 6961 6c69 7a61 7469  ubbo-serializati\n+000008a0: 6f6e 2d68 6573 7369 616e 323c 2f61 7274  on-hessian2</art\n+000008b0: 6966 6163 7449 643e 0a20 2020 2020 203c  ifactId>.      <\n+000008c0: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n+000008d0: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n+000008e0: 696f 6e3e 0a20 2020 2020 203c 7363 6f70  ion>.      <scop\n+000008f0: 653e 7465 7374 3c2f 7363 6f70 653e 0a20  e>test</scope>. \n+00000900: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+00000910: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+00000920: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+00000930: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n+00000940: 6f3c 2f67 726f 7570 4964 3e0a 2020 2020  o</groupId>.    \n+00000950: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000960: 6262 6f2d 7270 632d 6475 6262 6f3c 2f61  bbo-rpc-dubbo</a\n+00000970: 7274 6966 6163 7449 643e 0a20 2020 2020  rtifactId>.     \n+00000980: 203c 7665 7273 696f 6e3e 247b 7072 6f6a   <version>${proj\n+00000990: 6563 742e 7665 7273 696f 6e7d 3c2f 7665  ect.version}</ve\n+000009a0: 7273 696f 6e3e 0a20 2020 2020 203c 7363  rsion>.      <sc\n+000009b0: 6f70 653e 7465 7374 3c2f 7363 6f70 653e  ope>test</scope>\n+000009c0: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+000009d0: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+000009e0: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+000009f0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+00000a00: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000a10: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+00000a20: 6475 6262 6f2d 7265 6d6f 7469 6e67 2d6e  dubbo-remoting-n\n+00000a30: 6574 7479 343c 2f61 7274 6966 6163 7449  etty4</artifactI\n+00000a40: 643e 0a20 2020 2020 203c 7665 7273 696f  d>.      <versio\n+00000a50: 6e3e 247b 7072 6f6a 6563 742e 7665 7273  n>${project.vers\n+00000a60: 696f 6e7d 3c2f 7665 7273 696f 6e3e 0a20  ion}</version>. \n+00000a70: 2020 2020 203c 7363 6f70 653e 7465 7374       <scope>test\n+00000a80: 3c2f 7363 6f70 653e 0a20 2020 203c 2f64  </scope>.    </d\n+00000a90: 6570 656e 6465 6e63 793e 0a20 2020 203c  ependency>.    <\n+00000aa0: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000ab0: 2020 3c67 726f 7570 4964 3e63 682e 716f    <groupId>ch.qo\n+00000ac0: 732e 6c6f 6762 6163 6b3c 2f67 726f 7570  s.logback</group\n+00000ad0: 4964 3e0a 2020 2020 2020 3c61 7274 6966  Id>.      <artif\n+00000ae0: 6163 7449 643e 6c6f 6762 6163 6b2d 636c  actId>logback-cl\n+00000af0: 6173 7369 633c 2f61 7274 6966 6163 7449  assic</artifactI\n+00000b00: 643e 0a20 2020 2020 203c 7363 6f70 653e  d>.      <scope>\n+00000b10: 7465 7374 3c2f 7363 6f70 653e 0a20 2020  test</scope>.   \n+00000b20: 203c 2f64 6570 656e 6465 6e63 793e 0a20   </dependency>. \n+00000b30: 2020 203c 6465 7065 6e64 656e 6379 3e0a     <dependency>.\n+00000b40: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n+00000b50: 7267 2e73 7072 696e 6766 7261 6d65 776f  rg.springframewo\n+00000b60: 726b 3c2f 6772 6f75 7049 643e 0a20 2020  rk</groupId>.   \n+00000b70: 2020 203c 6172 7469 6661 6374 4964 3e73     <artifactId>s\n+00000b80: 7072 696e 672d 7465 7374 3c2f 6172 7469  pring-test</arti\n+00000b90: 6661 6374 4964 3e0a 2020 2020 2020 3c73  factId>.      <s\n+00000ba0: 636f 7065 3e74 6573 743c 2f73 636f 7065  cope>test</scope\n+00000bb0: 3e0a 2020 2020 3c2f 6465 7065 6e64 656e  >.    </dependen\n+00000bc0: 6379 3e0a 2020 3c2f 6465 7065 6e64 656e  cy>.  </dependen\n+00000bd0: 6369 6573 3e0a 3c2f 7072 6f6a 6563 743e  cies>.</project>\n+00000be0: 0a                                       .\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/pom.xml", "unified_diff": null, "details": [{"source1": "META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-registry-sofa/pom.xml", "comments": ["Ordering differences only"], "unified_diff": "@@ -52,16 +52,16 @@\n       <optional>true</optional>\n     </dependency>\n     <dependency>\n       <groupId>com.alipay.sofa</groupId>\n       <artifactId>registry-client-all</artifactId>\n       <exclusions>\n         <exclusion>\n-          <artifactId>sofa-common-tools</artifactId>\n           <groupId>com.alipay.sofa</groupId>\n+          <artifactId>sofa-common-tools</artifactId>\n         </exclusion>\n       </exclusions>\n     </dependency>\n     <dependency>\n       <groupId>org.apache.dubbo</groupId>\n       <artifactId>dubbo-rpc-dubbo</artifactId>\n       <version>${project.version}</version>\n@@ -86,28 +86,28 @@\n     </dependency>\n     <dependency>\n       <groupId>com.alipay.sofa</groupId>\n       <artifactId>registry-test</artifactId>\n       <scope>test</scope>\n       <exclusions>\n         <exclusion>\n-          <artifactId>log4j-over-slf4j</artifactId>\n           <groupId>org.slf4j</groupId>\n+          <artifactId>log4j-over-slf4j</artifactId>\n         </exclusion>\n         <exclusion>\n-          <artifactId>log4j-jcl</artifactId>\n           <groupId>org.apache.logging.log4j</groupId>\n+          <artifactId>log4j-jcl</artifactId>\n         </exclusion>\n         <exclusion>\n-          <artifactId>log4j-core</artifactId>\n           <groupId>org.apache.logging.log4j</groupId>\n+          <artifactId>log4j-core</artifactId>\n         </exclusion>\n         <exclusion>\n-          <artifactId>log4j-api</artifactId>\n           <groupId>org.apache.logging.log4j</groupId>\n+          <artifactId>log4j-api</artifactId>\n         </exclusion>\n       </exclusions>\n     </dependency>\n     <dependency>\n       <groupId>org.jboss.resteasy</groupId>\n       <artifactId>resteasy-jaxrs</artifactId>\n       <scope>test</scope>\n"}]}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-registry-multiple/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-registry-multiple/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,181 +1,176 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d72 6567 6973 7472 793c 2f61 7274  bo-registry</art\n-000004a0: 6966 6163 7449 643e 0d0a 2020 2020 3c76  ifactId>..    <v\n-000004b0: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-000004c0: 6572 7369 6f6e 3e0d 0a20 203c 2f70 6172  ersion>..  </par\n-000004d0: 656e 743e 0d0a 2020 3c67 726f 7570 4964  ent>..  <groupId\n-000004e0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000004f0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 203c  o</groupId>..  <\n-00000500: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000510: 2d72 6567 6973 7472 792d 6d75 6c74 6970  -registry-multip\n-00000520: 6c65 3c2f 6172 7469 6661 6374 4964 3e0d  le</artifactId>.\n-00000530: 0a20 203c 7665 7273 696f 6e3e 322e 372e  .  <version>2.7.\n-00000540: 3130 3c2f 7665 7273 696f 6e3e 0d0a 2020  10</version>..  \n-00000550: 3c6e 616d 653e 247b 7072 6f6a 6563 742e  <name>${project.\n-00000560: 6172 7469 6661 6374 4964 7d3c 2f6e 616d  artifactId}</nam\n-00000570: 653e 0d0a 2020 3c64 6573 6372 6970 7469  e>..  <descripti\n-00000580: 6f6e 3e54 6865 206d 756c 7469 706c 6520  on>The multiple \n-00000590: 7265 6769 7374 7279 206d 6f64 756c 6520  registry module \n-000005a0: 6f66 2064 7562 626f 2070 726f 6a65 6374  of dubbo project\n-000005b0: 3c2f 6465 7363 7269 7074 696f 6e3e 0d0a  </description>..\n-000005c0: 2020 3c6c 6963 656e 7365 733e 0d0a 2020    <licenses>..  \n-000005d0: 2020 3c6c 6963 656e 7365 3e0d 0a20 2020    <license>..   \n-000005e0: 2020 203c 6e61 6d65 3e41 7061 6368 6520     <name>Apache \n-000005f0: 4c69 6365 6e73 652c 2056 6572 7369 6f6e  License, Version\n-00000600: 2032 2e30 3c2f 6e61 6d65 3e0d 0a20 2020   2.0</name>..   \n-00000610: 2020 203c 7572 6c3e 6874 7470 3a2f 2f77     <url>http://w\n-00000620: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-00000630: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000640: 2e30 3c2f 7572 6c3e 0d0a 2020 2020 2020  .0</url>..      \n-00000650: 3c64 6973 7472 6962 7574 696f 6e3e 7265  <distribution>re\n-00000660: 706f 3c2f 6469 7374 7269 6275 7469 6f6e  po</distribution\n-00000670: 3e0d 0a20 2020 203c 2f6c 6963 656e 7365  >..    </license\n-00000680: 3e0d 0a20 203c 2f6c 6963 656e 7365 733e  >..  </licenses>\n-00000690: 0d0a 2020 3c70 726f 7065 7274 6965 733e  ..  <properties>\n-000006a0: 0d0a 2020 2020 3c73 6b69 705f 6d61 7665  ..    <skip_mave\n-000006b0: 6e5f 6465 706c 6f79 3e66 616c 7365 3c2f  n_deploy>false</\n-000006c0: 736b 6970 5f6d 6176 656e 5f64 6570 6c6f  skip_maven_deplo\n-000006d0: 793e 0d0a 2020 3c2f 7072 6f70 6572 7469  y>..  </properti\n-000006e0: 6573 3e0d 0a20 203c 6465 7065 6e64 656e  es>..  <dependen\n-000006f0: 6369 6573 3e0d 0a20 2020 203c 6465 7065  cies>..    <depe\n-00000700: 6e64 656e 6379 3e0d 0a20 2020 2020 203c  ndency>..      <\n-00000710: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n-00000720: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n-00000730: 643e 0d0a 2020 2020 2020 3c61 7274 6966  d>..      <artif\n-00000740: 6163 7449 643e 6475 6262 6f2d 7265 6769  actId>dubbo-regi\n-00000750: 7374 7279 2d61 7069 3c2f 6172 7469 6661  stry-api</artifa\n-00000760: 6374 4964 3e0d 0a20 2020 2020 203c 7665  ctId>..      <ve\n-00000770: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n-00000780: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n-00000790: 2f76 6572 7369 6f6e 3e0d 0a20 2020 203c  /version>..    <\n-000007a0: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-000007b0: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-000007c0: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n-000007d0: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-000007e0: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-000007f0: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000800: 626f 2d72 6567 6973 7472 792d 7a6f 6f6b  bo-registry-zook\n-00000810: 6565 7065 723c 2f61 7274 6966 6163 7449  eeper</artifactI\n-00000820: 643e 0d0a 2020 2020 2020 3c76 6572 7369  d>..      <versi\n-00000830: 6f6e 3e24 7b70 726f 6a65 6374 2e70 6172  on>${project.par\n-00000840: 656e 742e 7665 7273 696f 6e7d 3c2f 7665  ent.version}</ve\n-00000850: 7273 696f 6e3e 0d0a 2020 2020 2020 3c73  rsion>..      <s\n-00000860: 636f 7065 3e74 6573 743c 2f73 636f 7065  cope>test</scope\n-00000870: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-00000880: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-00000890: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-000008a0: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n-000008b0: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n-000008c0: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-000008d0: 6374 4964 3e64 7562 626f 2d72 6567 6973  ctId>dubbo-regis\n-000008e0: 7472 792d 7265 6469 733c 2f61 7274 6966  try-redis</artif\n-000008f0: 6163 7449 643e 0d0a 2020 2020 2020 3c76  actId>..      <v\n-00000900: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n-00000910: 2e70 6172 656e 742e 7665 7273 696f 6e7d  .parent.version}\n-00000920: 3c2f 7665 7273 696f 6e3e 0d0a 2020 2020  </version>..    \n-00000930: 2020 3c73 636f 7065 3e74 6573 743c 2f73    <scope>test</s\n-00000940: 636f 7065 3e0d 0a20 2020 203c 2f64 6570  cope>..    </dep\n-00000950: 656e 6465 6e63 793e 0d0a 2020 2020 3c64  endency>..    <d\n-00000960: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000970: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n-00000980: 7061 6368 652e 6375 7261 746f 723c 2f67  pache.curator</g\n-00000990: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-000009a0: 6172 7469 6661 6374 4964 3e63 7572 6174  artifactId>curat\n-000009b0: 6f72 2d74 6573 743c 2f61 7274 6966 6163  or-test</artifac\n-000009c0: 7449 643e 0d0a 2020 2020 2020 3c73 636f  tId>..      <sco\n-000009d0: 7065 3e74 6573 743c 2f73 636f 7065 3e0d  pe>test</scope>.\n-000009e0: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-000009f0: 793e 0d0a 2020 2020 3c64 6570 656e 6465  y>..    <depende\n-00000a00: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-00000a10: 7570 4964 3e63 6f6d 2e67 6974 6875 622e  upId>com.github.\n-00000a20: 6b73 7479 7263 3c2f 6772 6f75 7049 643e  kstyrc</groupId>\n-00000a30: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-00000a40: 7449 643e 656d 6265 6464 6564 2d72 6564  tId>embedded-red\n-00000a50: 6973 3c2f 6172 7469 6661 6374 4964 3e0d  is</artifactId>.\n-00000a60: 0a20 2020 2020 203c 7363 6f70 653e 7465  .      <scope>te\n-00000a70: 7374 3c2f 7363 6f70 653e 0d0a 2020 2020  st</scope>..    \n-00000a80: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-00000a90: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-00000aa0: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000ab0: 6f72 672e 6170 6163 6865 2e63 6f6d 6d6f  org.apache.commo\n-00000ac0: 6e73 3c2f 6772 6f75 7049 643e 0d0a 2020  ns</groupId>..  \n-00000ad0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-00000ae0: 636f 6d6d 6f6e 732d 6c61 6e67 333c 2f61  commons-lang3</a\n-00000af0: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-00000b00: 2020 3c73 636f 7065 3e74 6573 743c 2f73    <scope>test</s\n-00000b10: 636f 7065 3e0d 0a20 2020 203c 2f64 6570  cope>..    </dep\n-00000b20: 656e 6465 6e63 793e 0d0a 2020 3c2f 6465  endency>..  </de\n-00000b30: 7065 6e64 656e 6369 6573 3e0d 0a3c 2f70  pendencies>..</p\n-00000b40: 726f 6a65 6374 3e0d 0a                   roject>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d72 6567  factId>dubbo-reg\n+00000480: 6973 7472 793c 2f61 7274 6966 6163 7449  istry</artifactI\n+00000490: 643e 0a20 2020 203c 7665 7273 696f 6e3e  d>.    <version>\n+000004a0: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+000004b0: 0a20 203c 2f70 6172 656e 743e 0a20 203c  .  </parent>.  <\n+000004c0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000004d0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000004e0: 643e 0a20 203c 6172 7469 6661 6374 4964  d>.  <artifactId\n+000004f0: 3e64 7562 626f 2d72 6567 6973 7472 792d  >dubbo-registry-\n+00000500: 6d75 6c74 6970 6c65 3c2f 6172 7469 6661  multiple</artifa\n+00000510: 6374 4964 3e0a 2020 3c76 6572 7369 6f6e  ctId>.  <version\n+00000520: 3e32 2e37 2e31 303c 2f76 6572 7369 6f6e  >2.7.10</version\n+00000530: 3e0a 2020 3c6e 616d 653e 247b 7072 6f6a  >.  <name>${proj\n+00000540: 6563 742e 6172 7469 6661 6374 4964 7d3c  ect.artifactId}<\n+00000550: 2f6e 616d 653e 0a20 203c 6465 7363 7269  /name>.  <descri\n+00000560: 7074 696f 6e3e 5468 6520 6d75 6c74 6970  ption>The multip\n+00000570: 6c65 2072 6567 6973 7472 7920 6d6f 6475  le registry modu\n+00000580: 6c65 206f 6620 6475 6262 6f20 7072 6f6a  le of dubbo proj\n+00000590: 6563 743c 2f64 6573 6372 6970 7469 6f6e  ect</description\n+000005a0: 3e0a 2020 3c6c 6963 656e 7365 733e 0a20  >.  <licenses>. \n+000005b0: 2020 203c 6c69 6365 6e73 653e 0a20 2020     <license>.   \n+000005c0: 2020 203c 6e61 6d65 3e41 7061 6368 6520     <name>Apache \n+000005d0: 4c69 6365 6e73 652c 2056 6572 7369 6f6e  License, Version\n+000005e0: 2032 2e30 3c2f 6e61 6d65 3e0a 2020 2020   2.0</name>.    \n+000005f0: 2020 3c75 726c 3e68 7474 703a 2f2f 7777    <url>http://ww\n+00000600: 772e 6170 6163 6865 2e6f 7267 2f6c 6963  w.apache.org/lic\n+00000610: 656e 7365 732f 4c49 4345 4e53 452d 322e  enses/LICENSE-2.\n+00000620: 303c 2f75 726c 3e0a 2020 2020 2020 3c64  0</url>.      <d\n+00000630: 6973 7472 6962 7574 696f 6e3e 7265 706f  istribution>repo\n+00000640: 3c2f 6469 7374 7269 6275 7469 6f6e 3e0a  </distribution>.\n+00000650: 2020 2020 3c2f 6c69 6365 6e73 653e 0a20      </license>. \n+00000660: 203c 2f6c 6963 656e 7365 733e 0a20 203c   </licenses>.  <\n+00000670: 7072 6f70 6572 7469 6573 3e0a 2020 2020  properties>.    \n+00000680: 3c73 6b69 705f 6d61 7665 6e5f 6465 706c  <skip_maven_depl\n+00000690: 6f79 3e66 616c 7365 3c2f 736b 6970 5f6d  oy>false</skip_m\n+000006a0: 6176 656e 5f64 6570 6c6f 793e 0a20 203c  aven_deploy>.  <\n+000006b0: 2f70 726f 7065 7274 6965 733e 0a20 203c  /properties>.  <\n+000006c0: 6465 7065 6e64 656e 6369 6573 3e0a 2020  dependencies>.  \n+000006d0: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+000006e0: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n+000006f0: 672e 6170 6163 6865 2e64 7562 626f 3c2f  g.apache.dubbo</\n+00000700: 6772 6f75 7049 643e 0a20 2020 2020 203c  groupId>.      <\n+00000710: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n+00000720: 2d72 6567 6973 7472 792d 6170 693c 2f61  -registry-api</a\n+00000730: 7274 6966 6163 7449 643e 0a20 2020 2020  rtifactId>.     \n+00000740: 203c 7665 7273 696f 6e3e 247b 7072 6f6a   <version>${proj\n+00000750: 6563 742e 7061 7265 6e74 2e76 6572 7369  ect.parent.versi\n+00000760: 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a 2020  on}</version>.  \n+00000770: 2020 3c2f 6465 7065 6e64 656e 6379 3e0a    </dependency>.\n+00000780: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+00000790: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+000007a0: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+000007b0: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+000007c0: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+000007d0: 626f 2d72 6567 6973 7472 792d 7a6f 6f6b  bo-registry-zook\n+000007e0: 6565 7065 723c 2f61 7274 6966 6163 7449  eeper</artifactI\n+000007f0: 643e 0a20 2020 2020 203c 7665 7273 696f  d>.      <versio\n+00000800: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n+00000810: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n+00000820: 7369 6f6e 3e0a 2020 2020 2020 3c73 636f  sion>.      <sco\n+00000830: 7065 3e74 6573 743c 2f73 636f 7065 3e0a  pe>test</scope>.\n+00000840: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000850: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000860: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+00000870: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n+00000880: 626f 3c2f 6772 6f75 7049 643e 0a20 2020  bo</groupId>.   \n+00000890: 2020 203c 6172 7469 6661 6374 4964 3e64     <artifactId>d\n+000008a0: 7562 626f 2d72 6567 6973 7472 792d 7265  ubbo-registry-re\n+000008b0: 6469 733c 2f61 7274 6966 6163 7449 643e  dis</artifactId>\n+000008c0: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n+000008d0: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n+000008e0: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n+000008f0: 6f6e 3e0a 2020 2020 2020 3c73 636f 7065  on>.      <scope\n+00000900: 3e74 6573 743c 2f73 636f 7065 3e0a 2020  >test</scope>.  \n+00000910: 2020 3c2f 6465 7065 6e64 656e 6379 3e0a    </dependency>.\n+00000920: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+00000930: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+00000940: 6f72 672e 6170 6163 6865 2e63 7572 6174  org.apache.curat\n+00000950: 6f72 3c2f 6772 6f75 7049 643e 0a20 2020  or</groupId>.   \n+00000960: 2020 203c 6172 7469 6661 6374 4964 3e63     <artifactId>c\n+00000970: 7572 6174 6f72 2d74 6573 743c 2f61 7274  urator-test</art\n+00000980: 6966 6163 7449 643e 0a20 2020 2020 203c  ifactId>.      <\n+00000990: 7363 6f70 653e 7465 7374 3c2f 7363 6f70  scope>test</scop\n+000009a0: 653e 0a20 2020 203c 2f64 6570 656e 6465  e>.    </depende\n+000009b0: 6e63 793e 0a20 2020 203c 6465 7065 6e64  ncy>.    <depend\n+000009c0: 656e 6379 3e0a 2020 2020 2020 3c67 726f  ency>.      <gro\n+000009d0: 7570 4964 3e63 6f6d 2e67 6974 6875 622e  upId>com.github.\n+000009e0: 6b73 7479 7263 3c2f 6772 6f75 7049 643e  kstyrc</groupId>\n+000009f0: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+00000a00: 4964 3e65 6d62 6564 6465 642d 7265 6469  Id>embedded-redi\n+00000a10: 733c 2f61 7274 6966 6163 7449 643e 0a20  s</artifactId>. \n+00000a20: 2020 2020 203c 7363 6f70 653e 7465 7374       <scope>test\n+00000a30: 3c2f 7363 6f70 653e 0a20 2020 203c 2f64  </scope>.    </d\n+00000a40: 6570 656e 6465 6e63 793e 0a20 2020 203c  ependency>.    <\n+00000a50: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000a60: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+00000a70: 7061 6368 652e 636f 6d6d 6f6e 733c 2f67  pache.commons</g\n+00000a80: 726f 7570 4964 3e0a 2020 2020 2020 3c61  roupId>.      <a\n+00000a90: 7274 6966 6163 7449 643e 636f 6d6d 6f6e  rtifactId>common\n+00000aa0: 732d 6c61 6e67 333c 2f61 7274 6966 6163  s-lang3</artifac\n+00000ab0: 7449 643e 0a20 2020 2020 203c 7363 6f70  tId>.      <scop\n+00000ac0: 653e 7465 7374 3c2f 7363 6f70 653e 0a20  e>test</scope>. \n+00000ad0: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+00000ae0: 0a20 203c 2f64 6570 656e 6465 6e63 6965  .  </dependencie\n+00000af0: 733e 0a3c 2f70 726f 6a65 6374 3e0a       s>.</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-monitor-api/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-monitor-api/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,151 +1,147 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a2d 2d3e 0d0a 3c70 726f  ense...-->..<pro\n-00000350: 6a65 6374 2078 7369 3a73 6368 656d 614c  ject xsi:schemaL\n-00000360: 6f63 6174 696f 6e3d 2268 7474 703a 2f2f  ocation=\"http://\n-00000370: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-00000380: 2f50 4f4d 2f34 2e30 2e30 2068 7474 7073  /POM/4.0.0 https\n-00000390: 3a2f 2f6d 6176 656e 2e61 7061 6368 652e  ://maven.apache.\n-000003a0: 6f72 672f 7873 642f 6d61 7665 6e2d 342e  org/xsd/maven-4.\n-000003b0: 302e 302e 7873 6422 2078 6d6c 6e73 3d22  0.0.xsd\" xmlns=\"\n-000003c0: 6874 7470 3a2f 2f6d 6176 656e 2e61 7061  http://maven.apa\n-000003d0: 6368 652e 6f72 672f 504f 4d2f 342e 302e  che.org/POM/4.0.\n-000003e0: 3022 0d0a 2020 2020 786d 6c6e 733a 7873  0\"..    xmlns:xs\n-000003f0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n-00000400: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n-00000410: 656d 612d 696e 7374 616e 6365 223e 0d0a  ema-instance\">..\n-00000420: 2020 3c6d 6f64 656c 5665 7273 696f 6e3e    <modelVersion>\n-00000430: 342e 302e 303c 2f6d 6f64 656c 5665 7273  4.0.0</modelVers\n-00000440: 696f 6e3e 0d0a 2020 3c70 6172 656e 743e  ion>..  <parent>\n-00000450: 0d0a 2020 2020 3c67 726f 7570 4964 3e6f  ..    <groupId>o\n-00000460: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000470: 2f67 726f 7570 4964 3e0d 0a20 2020 203c  /groupId>..    <\n-00000480: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000490: 2d6d 6f6e 6974 6f72 3c2f 6172 7469 6661  -monitor</artifa\n-000004a0: 6374 4964 3e0d 0a20 2020 203c 7665 7273  ctId>..    <vers\n-000004b0: 696f 6e3e 322e 372e 3130 3c2f 7665 7273  ion>2.7.10</vers\n-000004c0: 696f 6e3e 0d0a 2020 3c2f 7061 7265 6e74  ion>..  </parent\n-000004d0: 3e0d 0a20 203c 6772 6f75 7049 643e 6f72  >..  <groupId>or\n-000004e0: 672e 6170 6163 6865 2e64 7562 626f 3c2f  g.apache.dubbo</\n-000004f0: 6772 6f75 7049 643e 0d0a 2020 3c61 7274  groupId>..  <art\n-00000500: 6966 6163 7449 643e 6475 6262 6f2d 6d6f  ifactId>dubbo-mo\n-00000510: 6e69 746f 722d 6170 693c 2f61 7274 6966  nitor-api</artif\n-00000520: 6163 7449 643e 0d0a 2020 3c76 6572 7369  actId>..  <versi\n-00000530: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n-00000540: 6f6e 3e0d 0a20 203c 6e61 6d65 3e24 7b70  on>..  <name>${p\n-00000550: 726f 6a65 6374 2e61 7274 6966 6163 7449  roject.artifactI\n-00000560: 647d 3c2f 6e61 6d65 3e0d 0a20 203c 6465  d}</name>..  <de\n-00000570: 7363 7269 7074 696f 6e3e 5468 6520 6d6f  scription>The mo\n-00000580: 6e69 746f 7220 6d6f 6475 6c65 206f 6620  nitor module of \n-00000590: 6475 6262 6f20 7072 6f6a 6563 743c 2f64  dubbo project</d\n-000005a0: 6573 6372 6970 7469 6f6e 3e0d 0a20 203c  escription>..  <\n-000005b0: 6c69 6365 6e73 6573 3e0d 0a20 2020 203c  licenses>..    <\n-000005c0: 6c69 6365 6e73 653e 0d0a 2020 2020 2020  license>..      \n-000005d0: 3c6e 616d 653e 4170 6163 6865 204c 6963  <name>Apache Lic\n-000005e0: 656e 7365 2c20 5665 7273 696f 6e20 322e  ense, Version 2.\n-000005f0: 303c 2f6e 616d 653e 0d0a 2020 2020 2020  0</name>..      \n-00000600: 3c75 726c 3e68 7474 703a 2f2f 7777 772e  <url>http://www.\n-00000610: 6170 6163 6865 2e6f 7267 2f6c 6963 656e  apache.org/licen\n-00000620: 7365 732f 4c49 4345 4e53 452d 322e 303c  ses/LICENSE-2.0<\n-00000630: 2f75 726c 3e0d 0a20 2020 2020 203c 6469  /url>..      <di\n-00000640: 7374 7269 6275 7469 6f6e 3e72 6570 6f3c  stribution>repo<\n-00000650: 2f64 6973 7472 6962 7574 696f 6e3e 0d0a  /distribution>..\n-00000660: 2020 2020 3c2f 6c69 6365 6e73 653e 0d0a      </license>..\n-00000670: 2020 3c2f 6c69 6365 6e73 6573 3e0d 0a20    </licenses>.. \n-00000680: 203c 7072 6f70 6572 7469 6573 3e0d 0a20   <properties>.. \n-00000690: 2020 203c 736b 6970 5f6d 6176 656e 5f64     <skip_maven_d\n-000006a0: 6570 6c6f 793e 6661 6c73 653c 2f73 6b69  eploy>false</ski\n-000006b0: 705f 6d61 7665 6e5f 6465 706c 6f79 3e0d  p_maven_deploy>.\n-000006c0: 0a20 203c 2f70 726f 7065 7274 6965 733e  .  </properties>\n-000006d0: 0d0a 2020 3c64 6570 656e 6465 6e63 6965  ..  <dependencie\n-000006e0: 733e 0d0a 2020 2020 3c64 6570 656e 6465  s>..    <depende\n-000006f0: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-00000700: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n-00000710: 6475 6262 6f3c 2f67 726f 7570 4964 3e0d  dubbo</groupId>.\n-00000720: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-00000730: 4964 3e64 7562 626f 2d72 7063 2d61 7069  Id>dubbo-rpc-api\n-00000740: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000750: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n-00000760: 7072 6f6a 6563 742e 7061 7265 6e74 2e76  project.parent.v\n-00000770: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n-00000780: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-00000790: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-000007a0: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-000007b0: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n-000007c0: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n-000007d0: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-000007e0: 6374 4964 3e64 7562 626f 2d72 656d 6f74  ctId>dubbo-remot\n-000007f0: 696e 672d 6e65 7474 7934 3c2f 6172 7469  ing-netty4</arti\n-00000800: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-00000810: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n-00000820: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n-00000830: 7d3c 2f76 6572 7369 6f6e 3e0d 0a20 2020  }</version>..   \n-00000840: 2020 203c 7363 6f70 653e 7465 7374 3c2f     <scope>test</\n-00000850: 7363 6f70 653e 0d0a 2020 2020 3c2f 6465  scope>..    </de\n-00000860: 7065 6e64 656e 6379 3e0d 0a20 2020 203c  pendency>..    <\n-00000870: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000880: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n-00000890: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-000008a0: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-000008b0: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n-000008c0: 7365 7269 616c 697a 6174 696f 6e2d 6865  serialization-he\n-000008d0: 7373 6961 6e32 3c2f 6172 7469 6661 6374  ssian2</artifact\n-000008e0: 4964 3e0d 0a20 2020 2020 203c 7665 7273  Id>..      <vers\n-000008f0: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n-00000900: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n-00000910: 6572 7369 6f6e 3e0d 0a20 2020 2020 203c  ersion>..      <\n-00000920: 7363 6f70 653e 7465 7374 3c2f 7363 6f70  scope>test</scop\n-00000930: 653e 0d0a 2020 2020 3c2f 6465 7065 6e64  e>..    </depend\n-00000940: 656e 6379 3e0d 0a20 203c 2f64 6570 656e  ency>..  </depen\n-00000950: 6465 6e63 6965 733e 0d0a 3c2f 7072 6f6a  dencies>..</proj\n-00000960: 6563 743e 0d0a                           ect>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a2d 2d3e 0a3c 7072 6f6a  cense..-->.<proj\n+00000340: 6563 7420 7873 693a 7363 6865 6d61 4c6f  ect xsi:schemaLo\n+00000350: 6361 7469 6f6e 3d22 6874 7470 3a2f 2f6d  cation=\"http://m\n+00000360: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+00000370: 504f 4d2f 342e 302e 3020 6874 7470 733a  POM/4.0.0 https:\n+00000380: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n+00000390: 7267 2f78 7364 2f6d 6176 656e 2d34 2e30  rg/xsd/maven-4.0\n+000003a0: 2e30 2e78 7364 2220 786d 6c6e 733d 2268  .0.xsd\" xmlns=\"h\n+000003b0: 7474 703a 2f2f 6d61 7665 6e2e 6170 6163  ttp://maven.apac\n+000003c0: 6865 2e6f 7267 2f50 4f4d 2f34 2e30 2e30  he.org/POM/4.0.0\n+000003d0: 220a 2020 2020 786d 6c6e 733a 7873 693d  \".    xmlns:xsi=\n+000003e0: 2268 7474 703a 2f2f 7777 772e 7733 2e6f  \"http://www.w3.o\n+000003f0: 7267 2f32 3030 312f 584d 4c53 6368 656d  rg/2001/XMLSchem\n+00000400: 612d 696e 7374 616e 6365 223e 0a20 203c  a-instance\">.  <\n+00000410: 6d6f 6465 6c56 6572 7369 6f6e 3e34 2e30  modelVersion>4.0\n+00000420: 2e30 3c2f 6d6f 6465 6c56 6572 7369 6f6e  .0</modelVersion\n+00000430: 3e0a 2020 3c70 6172 656e 743e 0a20 2020  >.  <parent>.   \n+00000440: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000450: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000460: 7049 643e 0a20 2020 203c 6172 7469 6661  pId>.    <artifa\n+00000470: 6374 4964 3e64 7562 626f 2d6d 6f6e 6974  ctId>dubbo-monit\n+00000480: 6f72 3c2f 6172 7469 6661 6374 4964 3e0a  or</artifactId>.\n+00000490: 2020 2020 3c76 6572 7369 6f6e 3e32 2e37      <version>2.7\n+000004a0: 2e31 303c 2f76 6572 7369 6f6e 3e0a 2020  .10</version>.  \n+000004b0: 3c2f 7061 7265 6e74 3e0a 2020 3c67 726f  </parent>.  <gro\n+000004c0: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n+000004d0: 6475 6262 6f3c 2f67 726f 7570 4964 3e0a  dubbo</groupId>.\n+000004e0: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+000004f0: 6262 6f2d 6d6f 6e69 746f 722d 6170 693c  bbo-monitor-api<\n+00000500: 2f61 7274 6966 6163 7449 643e 0a20 203c  /artifactId>.  <\n+00000510: 7665 7273 696f 6e3e 322e 372e 3130 3c2f  version>2.7.10</\n+00000520: 7665 7273 696f 6e3e 0a20 203c 6e61 6d65  version>.  <name\n+00000530: 3e24 7b70 726f 6a65 6374 2e61 7274 6966  >${project.artif\n+00000540: 6163 7449 647d 3c2f 6e61 6d65 3e0a 2020  actId}</name>.  \n+00000550: 3c64 6573 6372 6970 7469 6f6e 3e54 6865  <description>The\n+00000560: 206d 6f6e 6974 6f72 206d 6f64 756c 6520   monitor module \n+00000570: 6f66 2064 7562 626f 2070 726f 6a65 6374  of dubbo project\n+00000580: 3c2f 6465 7363 7269 7074 696f 6e3e 0a20  </description>. \n+00000590: 203c 6c69 6365 6e73 6573 3e0a 2020 2020   <licenses>.    \n+000005a0: 3c6c 6963 656e 7365 3e0a 2020 2020 2020  <license>.      \n+000005b0: 3c6e 616d 653e 4170 6163 6865 204c 6963  <name>Apache Lic\n+000005c0: 656e 7365 2c20 5665 7273 696f 6e20 322e  ense, Version 2.\n+000005d0: 303c 2f6e 616d 653e 0a20 2020 2020 203c  0</name>.      <\n+000005e0: 7572 6c3e 6874 7470 3a2f 2f77 7777 2e61  url>http://www.a\n+000005f0: 7061 6368 652e 6f72 672f 6c69 6365 6e73  pache.org/licens\n+00000600: 6573 2f4c 4943 454e 5345 2d32 2e30 3c2f  es/LICENSE-2.0</\n+00000610: 7572 6c3e 0a20 2020 2020 203c 6469 7374  url>.      <dist\n+00000620: 7269 6275 7469 6f6e 3e72 6570 6f3c 2f64  ribution>repo</d\n+00000630: 6973 7472 6962 7574 696f 6e3e 0a20 2020  istribution>.   \n+00000640: 203c 2f6c 6963 656e 7365 3e0a 2020 3c2f   </license>.  </\n+00000650: 6c69 6365 6e73 6573 3e0a 2020 3c70 726f  licenses>.  <pro\n+00000660: 7065 7274 6965 733e 0a20 2020 203c 736b  perties>.    <sk\n+00000670: 6970 5f6d 6176 656e 5f64 6570 6c6f 793e  ip_maven_deploy>\n+00000680: 6661 6c73 653c 2f73 6b69 705f 6d61 7665  false</skip_mave\n+00000690: 6e5f 6465 706c 6f79 3e0a 2020 3c2f 7072  n_deploy>.  </pr\n+000006a0: 6f70 6572 7469 6573 3e0a 2020 3c64 6570  operties>.  <dep\n+000006b0: 656e 6465 6e63 6965 733e 0a20 2020 203c  endencies>.    <\n+000006c0: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+000006d0: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+000006e0: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n+000006f0: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000700: 6966 6163 7449 643e 6475 6262 6f2d 7270  ifactId>dubbo-rp\n+00000710: 632d 6170 693c 2f61 7274 6966 6163 7449  c-api</artifactI\n+00000720: 643e 0a20 2020 2020 203c 7665 7273 696f  d>.      <versio\n+00000730: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n+00000740: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n+00000750: 7369 6f6e 3e0a 2020 2020 3c2f 6465 7065  sion>.    </depe\n+00000760: 6e64 656e 6379 3e0a 2020 2020 3c64 6570  ndency>.    <dep\n+00000770: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+00000780: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+00000790: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000007a0: 643e 0a20 2020 2020 203c 6172 7469 6661  d>.      <artifa\n+000007b0: 6374 4964 3e64 7562 626f 2d72 656d 6f74  ctId>dubbo-remot\n+000007c0: 696e 672d 6e65 7474 7934 3c2f 6172 7469  ing-netty4</arti\n+000007d0: 6661 6374 4964 3e0a 2020 2020 2020 3c76  factId>.      <v\n+000007e0: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n+000007f0: 2e70 6172 656e 742e 7665 7273 696f 6e7d  .parent.version}\n+00000800: 3c2f 7665 7273 696f 6e3e 0a20 2020 2020  </version>.     \n+00000810: 203c 7363 6f70 653e 7465 7374 3c2f 7363   <scope>test</sc\n+00000820: 6f70 653e 0a20 2020 203c 2f64 6570 656e  ope>.    </depen\n+00000830: 6465 6e63 793e 0a20 2020 203c 6465 7065  dency>.    <depe\n+00000840: 6e64 656e 6379 3e0a 2020 2020 2020 3c67  ndency>.      <g\n+00000850: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n+00000860: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n+00000870: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+00000880: 7449 643e 6475 6262 6f2d 7365 7269 616c  tId>dubbo-serial\n+00000890: 697a 6174 696f 6e2d 6865 7373 6961 6e32  ization-hessian2\n+000008a0: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+000008b0: 2020 2020 3c76 6572 7369 6f6e 3e24 7b70      <version>${p\n+000008c0: 726f 6a65 6374 2e70 6172 656e 742e 7665  roject.parent.ve\n+000008d0: 7273 696f 6e7d 3c2f 7665 7273 696f 6e3e  rsion}</version>\n+000008e0: 0a20 2020 2020 203c 7363 6f70 653e 7465  .      <scope>te\n+000008f0: 7374 3c2f 7363 6f70 653e 0a20 2020 203c  st</scope>.    <\n+00000900: 2f64 6570 656e 6465 6e63 793e 0a20 203c  /dependency>.  <\n+00000910: 2f64 6570 656e 6465 6e63 6965 733e 0a3c  /dependencies>.<\n+00000920: 2f70 726f 6a65 6374 3e0a                 /project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-monitor-default/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-monitor-default/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,199 +1,194 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d6d 6f6e 6974 6f72 3c2f 6172 7469  bo-monitor</arti\n-000004a0: 6661 6374 4964 3e0d 0a20 2020 203c 7665  factId>..    <ve\n-000004b0: 7273 696f 6e3e 322e 372e 3130 3c2f 7665  rsion>2.7.10</ve\n-000004c0: 7273 696f 6e3e 0d0a 2020 3c2f 7061 7265  rsion>..  </pare\n-000004d0: 6e74 3e0d 0a20 203c 6772 6f75 7049 643e  nt>..  <groupId>\n-000004e0: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n-000004f0: 3c2f 6772 6f75 7049 643e 0d0a 2020 3c61  </groupId>..  <a\n-00000500: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n-00000510: 6d6f 6e69 746f 722d 6465 6661 756c 743c  monitor-default<\n-00000520: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-00000530: 3c76 6572 7369 6f6e 3e32 2e37 2e31 303c  <version>2.7.10<\n-00000540: 2f76 6572 7369 6f6e 3e0d 0a20 203c 6e61  /version>..  <na\n-00000550: 6d65 3e24 7b70 726f 6a65 6374 2e61 7274  me>${project.art\n-00000560: 6966 6163 7449 647d 3c2f 6e61 6d65 3e0d  ifactId}</name>.\n-00000570: 0a20 203c 6465 7363 7269 7074 696f 6e3e  .  <description>\n-00000580: 5468 6520 6465 6661 756c 7420 6d6f 6e69  The default moni\n-00000590: 746f 7220 6d6f 6475 6c65 206f 6620 6475  tor module of du\n-000005a0: 6262 6f20 7072 6f6a 6563 743c 2f64 6573  bbo project</des\n-000005b0: 6372 6970 7469 6f6e 3e0d 0a20 203c 6c69  cription>..  <li\n-000005c0: 6365 6e73 6573 3e0d 0a20 2020 203c 6c69  censes>..    <li\n-000005d0: 6365 6e73 653e 0d0a 2020 2020 2020 3c6e  cense>..      <n\n-000005e0: 616d 653e 4170 6163 6865 204c 6963 656e  ame>Apache Licen\n-000005f0: 7365 2c20 5665 7273 696f 6e20 322e 303c  se, Version 2.0<\n-00000600: 2f6e 616d 653e 0d0a 2020 2020 2020 3c75  /name>..      <u\n-00000610: 726c 3e68 7474 703a 2f2f 7777 772e 6170  rl>http://www.ap\n-00000620: 6163 6865 2e6f 7267 2f6c 6963 656e 7365  ache.org/license\n-00000630: 732f 4c49 4345 4e53 452d 322e 303c 2f75  s/LICENSE-2.0</u\n-00000640: 726c 3e0d 0a20 2020 2020 203c 6469 7374  rl>..      <dist\n-00000650: 7269 6275 7469 6f6e 3e72 6570 6f3c 2f64  ribution>repo</d\n-00000660: 6973 7472 6962 7574 696f 6e3e 0d0a 2020  istribution>..  \n-00000670: 2020 3c2f 6c69 6365 6e73 653e 0d0a 2020    </license>..  \n-00000680: 3c2f 6c69 6365 6e73 6573 3e0d 0a20 203c  </licenses>..  <\n-00000690: 7072 6f70 6572 7469 6573 3e0d 0a20 2020  properties>..   \n-000006a0: 203c 736b 6970 5f6d 6176 656e 5f64 6570   <skip_maven_dep\n-000006b0: 6c6f 793e 6661 6c73 653c 2f73 6b69 705f  loy>false</skip_\n-000006c0: 6d61 7665 6e5f 6465 706c 6f79 3e0d 0a20  maven_deploy>.. \n-000006d0: 203c 2f70 726f 7065 7274 6965 733e 0d0a   </properties>..\n-000006e0: 2020 3c64 6570 656e 6465 6e63 6965 733e    <dependencies>\n-000006f0: 0d0a 2020 2020 3c64 6570 656e 6465 6e63  ..    <dependenc\n-00000700: 793e 0d0a 2020 2020 2020 3c67 726f 7570  y>..      <group\n-00000710: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n-00000720: 6262 6f3c 2f67 726f 7570 4964 3e0d 0a20  bbo</groupId>.. \n-00000730: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n-00000740: 3e64 7562 626f 2d6d 6f6e 6974 6f72 2d61  >dubbo-monitor-a\n-00000750: 7069 3c2f 6172 7469 6661 6374 4964 3e0d  pi</artifactId>.\n-00000760: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n-00000770: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n-00000780: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n-00000790: 6f6e 3e0d 0a20 2020 203c 2f64 6570 656e  on>..    </depen\n-000007a0: 6465 6e63 793e 0d0a 2020 2020 3c64 6570  dency>..    <dep\n-000007b0: 656e 6465 6e63 793e 0d0a 2020 2020 2020  endency>..      \n-000007c0: 3c67 726f 7570 4964 3e63 6f6d 2e61 6c69  <groupId>com.ali\n-000007d0: 6261 6261 2e6d 6964 646c 6577 6172 653c  baba.middleware<\n-000007e0: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-000007f0: 203c 6172 7469 6661 6374 4964 3e6d 6574   <artifactId>met\n-00000800: 7269 6373 2d63 6f72 652d 6170 693c 2f61  rics-core-api</a\n-00000810: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-00000820: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-00000830: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-00000840: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000850: 636f 6d2e 616c 6962 6162 612e 6d69 6464  com.alibaba.midd\n-00000860: 6c65 7761 7265 3c2f 6772 6f75 7049 643e  leware</groupId>\n-00000870: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-00000880: 7449 643e 6d65 7472 6963 732d 636f 7265  tId>metrics-core\n-00000890: 2d69 6d70 6c3c 2f61 7274 6966 6163 7449  -impl</artifactI\n-000008a0: 643e 0d0a 2020 2020 3c2f 6465 7065 6e64  d>..    </depend\n-000008b0: 656e 6379 3e0d 0a20 2020 203c 6465 7065  ency>..    <depe\n-000008c0: 6e64 656e 6379 3e0d 0a20 2020 2020 203c  ndency>..      <\n-000008d0: 6772 6f75 7049 643e 636f 6d2e 616c 6962  groupId>com.alib\n-000008e0: 6162 612e 6d69 6464 6c65 7761 7265 3c2f  aba.middleware</\n-000008f0: 6772 6f75 7049 643e 0d0a 2020 2020 2020  groupId>..      \n-00000900: 3c61 7274 6966 6163 7449 643e 6d65 7472  <artifactId>metr\n-00000910: 6963 732d 636f 6d6d 6f6e 3c2f 6172 7469  ics-common</arti\n-00000920: 6661 6374 4964 3e0d 0a20 2020 203c 2f64  factId>..    </d\n-00000930: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000940: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-00000950: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n-00000960: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-00000970: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-00000980: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000990: 2d72 7063 2d64 7562 626f 3c2f 6172 7469  -rpc-dubbo</arti\n-000009a0: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-000009b0: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n-000009c0: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n-000009d0: 7d3c 2f76 6572 7369 6f6e 3e0d 0a20 2020  }</version>..   \n-000009e0: 2020 203c 7363 6f70 653e 7465 7374 3c2f     <scope>test</\n-000009f0: 7363 6f70 653e 0d0a 2020 2020 3c2f 6465  scope>..    </de\n-00000a00: 7065 6e64 656e 6379 3e0d 0a20 2020 203c  pendency>..    <\n-00000a10: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000a20: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n-00000a30: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-00000a40: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-00000a50: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n-00000a60: 7265 6d6f 7469 6e67 2d6e 6574 7479 343c  remoting-netty4<\n-00000a70: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-00000a80: 2020 2020 3c76 6572 7369 6f6e 3e24 7b70      <version>${p\n-00000a90: 726f 6a65 6374 2e70 6172 656e 742e 7665  roject.parent.ve\n-00000aa0: 7273 696f 6e7d 3c2f 7665 7273 696f 6e3e  rsion}</version>\n-00000ab0: 0d0a 2020 2020 2020 3c73 636f 7065 3e74  ..      <scope>t\n-00000ac0: 6573 743c 2f73 636f 7065 3e0d 0a20 2020  est</scope>..   \n-00000ad0: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-00000ae0: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n-00000af0: 0d0a 2020 2020 2020 3c67 726f 7570 4964  ..      <groupId\n-00000b00: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000b10: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000b20: 2020 203c 6172 7469 6661 6374 4964 3e64     <artifactId>d\n-00000b30: 7562 626f 2d73 6572 6961 6c69 7a61 7469  ubbo-serializati\n-00000b40: 6f6e 2d68 6573 7369 616e 323c 2f61 7274  on-hessian2</art\n-00000b50: 6966 6163 7449 643e 0d0a 2020 2020 2020  ifactId>..      \n-00000b60: 3c76 6572 7369 6f6e 3e24 7b70 726f 6a65  <version>${proje\n-00000b70: 6374 2e70 6172 656e 742e 7665 7273 696f  ct.parent.versio\n-00000b80: 6e7d 3c2f 7665 7273 696f 6e3e 0d0a 2020  n}</version>..  \n-00000b90: 2020 2020 3c73 636f 7065 3e74 6573 743c      <scope>test<\n-00000ba0: 2f73 636f 7065 3e0d 0a20 2020 203c 2f64  /scope>..    </d\n-00000bb0: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000bc0: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-00000bd0: 2020 2020 3c67 726f 7570 4964 3e63 6f6d      <groupId>com\n-00000be0: 2e67 6f6f 676c 652e 636f 6465 2e67 736f  .google.code.gso\n-00000bf0: 6e3c 2f67 726f 7570 4964 3e0d 0a20 2020  n</groupId>..   \n-00000c00: 2020 203c 6172 7469 6661 6374 4964 3e67     <artifactId>g\n-00000c10: 736f 6e3c 2f61 7274 6966 6163 7449 643e  son</artifactId>\n-00000c20: 0d0a 2020 2020 2020 3c73 636f 7065 3e74  ..      <scope>t\n-00000c30: 6573 743c 2f73 636f 7065 3e0d 0a20 2020  est</scope>..   \n-00000c40: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-00000c50: 2020 3c2f 6465 7065 6e64 656e 6369 6573    </dependencies\n-00000c60: 3e0d 0a3c 2f70 726f 6a65 6374 3e0d 0a    >..</project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d6d 6f6e  factId>dubbo-mon\n+00000480: 6974 6f72 3c2f 6172 7469 6661 6374 4964  itor</artifactId\n+00000490: 3e0a 2020 2020 3c76 6572 7369 6f6e 3e32  >.    <version>2\n+000004a0: 2e37 2e31 303c 2f76 6572 7369 6f6e 3e0a  .7.10</version>.\n+000004b0: 2020 3c2f 7061 7265 6e74 3e0a 2020 3c67    </parent>.  <g\n+000004c0: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n+000004d0: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n+000004e0: 3e0a 2020 3c61 7274 6966 6163 7449 643e  >.  <artifactId>\n+000004f0: 6475 6262 6f2d 6d6f 6e69 746f 722d 6465  dubbo-monitor-de\n+00000500: 6661 756c 743c 2f61 7274 6966 6163 7449  fault</artifactI\n+00000510: 643e 0a20 203c 7665 7273 696f 6e3e 322e  d>.  <version>2.\n+00000520: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+00000530: 203c 6e61 6d65 3e24 7b70 726f 6a65 6374   <name>${project\n+00000540: 2e61 7274 6966 6163 7449 647d 3c2f 6e61  .artifactId}</na\n+00000550: 6d65 3e0a 2020 3c64 6573 6372 6970 7469  me>.  <descripti\n+00000560: 6f6e 3e54 6865 2064 6566 6175 6c74 206d  on>The default m\n+00000570: 6f6e 6974 6f72 206d 6f64 756c 6520 6f66  onitor module of\n+00000580: 2064 7562 626f 2070 726f 6a65 6374 3c2f   dubbo project</\n+00000590: 6465 7363 7269 7074 696f 6e3e 0a20 203c  description>.  <\n+000005a0: 6c69 6365 6e73 6573 3e0a 2020 2020 3c6c  licenses>.    <l\n+000005b0: 6963 656e 7365 3e0a 2020 2020 2020 3c6e  icense>.      <n\n+000005c0: 616d 653e 4170 6163 6865 204c 6963 656e  ame>Apache Licen\n+000005d0: 7365 2c20 5665 7273 696f 6e20 322e 303c  se, Version 2.0<\n+000005e0: 2f6e 616d 653e 0a20 2020 2020 203c 7572  /name>.      <ur\n+000005f0: 6c3e 6874 7470 3a2f 2f77 7777 2e61 7061  l>http://www.apa\n+00000600: 6368 652e 6f72 672f 6c69 6365 6e73 6573  che.org/licenses\n+00000610: 2f4c 4943 454e 5345 2d32 2e30 3c2f 7572  /LICENSE-2.0</ur\n+00000620: 6c3e 0a20 2020 2020 203c 6469 7374 7269  l>.      <distri\n+00000630: 6275 7469 6f6e 3e72 6570 6f3c 2f64 6973  bution>repo</dis\n+00000640: 7472 6962 7574 696f 6e3e 0a20 2020 203c  tribution>.    <\n+00000650: 2f6c 6963 656e 7365 3e0a 2020 3c2f 6c69  /license>.  </li\n+00000660: 6365 6e73 6573 3e0a 2020 3c70 726f 7065  censes>.  <prope\n+00000670: 7274 6965 733e 0a20 2020 203c 736b 6970  rties>.    <skip\n+00000680: 5f6d 6176 656e 5f64 6570 6c6f 793e 6661  _maven_deploy>fa\n+00000690: 6c73 653c 2f73 6b69 705f 6d61 7665 6e5f  lse</skip_maven_\n+000006a0: 6465 706c 6f79 3e0a 2020 3c2f 7072 6f70  deploy>.  </prop\n+000006b0: 6572 7469 6573 3e0a 2020 3c64 6570 656e  erties>.  <depen\n+000006c0: 6465 6e63 6965 733e 0a20 2020 203c 6465  dencies>.    <de\n+000006d0: 7065 6e64 656e 6379 3e0a 2020 2020 2020  pendency>.      \n+000006e0: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n+000006f0: 6368 652e 6475 6262 6f3c 2f67 726f 7570  che.dubbo</group\n+00000700: 4964 3e0a 2020 2020 2020 3c61 7274 6966  Id>.      <artif\n+00000710: 6163 7449 643e 6475 6262 6f2d 6d6f 6e69  actId>dubbo-moni\n+00000720: 746f 722d 6170 693c 2f61 7274 6966 6163  tor-api</artifac\n+00000730: 7449 643e 0a20 2020 2020 203c 7665 7273  tId>.      <vers\n+00000740: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n+00000750: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n+00000760: 6572 7369 6f6e 3e0a 2020 2020 3c2f 6465  ersion>.    </de\n+00000770: 7065 6e64 656e 6379 3e0a 2020 2020 3c64  pendency>.    <d\n+00000780: 6570 656e 6465 6e63 793e 0a20 2020 2020  ependency>.     \n+00000790: 203c 6772 6f75 7049 643e 636f 6d2e 616c   <groupId>com.al\n+000007a0: 6962 6162 612e 6d69 6464 6c65 7761 7265  ibaba.middleware\n+000007b0: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+000007c0: 203c 6172 7469 6661 6374 4964 3e6d 6574   <artifactId>met\n+000007d0: 7269 6373 2d63 6f72 652d 6170 693c 2f61  rics-core-api</a\n+000007e0: 7274 6966 6163 7449 643e 0a20 2020 203c  rtifactId>.    <\n+000007f0: 2f64 6570 656e 6465 6e63 793e 0a20 2020  /dependency>.   \n+00000800: 203c 6465 7065 6e64 656e 6379 3e0a 2020   <dependency>.  \n+00000810: 2020 2020 3c67 726f 7570 4964 3e63 6f6d      <groupId>com\n+00000820: 2e61 6c69 6261 6261 2e6d 6964 646c 6577  .alibaba.middlew\n+00000830: 6172 653c 2f67 726f 7570 4964 3e0a 2020  are</groupId>.  \n+00000840: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+00000850: 6d65 7472 6963 732d 636f 7265 2d69 6d70  metrics-core-imp\n+00000860: 6c3c 2f61 7274 6966 6163 7449 643e 0a20  l</artifactId>. \n+00000870: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+00000880: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+00000890: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+000008a0: 3e63 6f6d 2e61 6c69 6261 6261 2e6d 6964  >com.alibaba.mid\n+000008b0: 646c 6577 6172 653c 2f67 726f 7570 4964  dleware</groupId\n+000008c0: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+000008d0: 7449 643e 6d65 7472 6963 732d 636f 6d6d  tId>metrics-comm\n+000008e0: 6f6e 3c2f 6172 7469 6661 6374 4964 3e0a  on</artifactId>.\n+000008f0: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000900: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000910: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+00000920: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n+00000930: 626f 3c2f 6772 6f75 7049 643e 0a20 2020  bo</groupId>.   \n+00000940: 2020 203c 6172 7469 6661 6374 4964 3e64     <artifactId>d\n+00000950: 7562 626f 2d72 7063 2d64 7562 626f 3c2f  ubbo-rpc-dubbo</\n+00000960: 6172 7469 6661 6374 4964 3e0a 2020 2020  artifactId>.    \n+00000970: 2020 3c76 6572 7369 6f6e 3e24 7b70 726f    <version>${pro\n+00000980: 6a65 6374 2e70 6172 656e 742e 7665 7273  ject.parent.vers\n+00000990: 696f 6e7d 3c2f 7665 7273 696f 6e3e 0a20  ion}</version>. \n+000009a0: 2020 2020 203c 7363 6f70 653e 7465 7374       <scope>test\n+000009b0: 3c2f 7363 6f70 653e 0a20 2020 203c 2f64  </scope>.    </d\n+000009c0: 6570 656e 6465 6e63 793e 0a20 2020 203c  ependency>.    <\n+000009d0: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+000009e0: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+000009f0: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n+00000a00: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000a10: 6966 6163 7449 643e 6475 6262 6f2d 7265  ifactId>dubbo-re\n+00000a20: 6d6f 7469 6e67 2d6e 6574 7479 343c 2f61  moting-netty4</a\n+00000a30: 7274 6966 6163 7449 643e 0a20 2020 2020  rtifactId>.     \n+00000a40: 203c 7665 7273 696f 6e3e 247b 7072 6f6a   <version>${proj\n+00000a50: 6563 742e 7061 7265 6e74 2e76 6572 7369  ect.parent.versi\n+00000a60: 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a 2020  on}</version>.  \n+00000a70: 2020 2020 3c73 636f 7065 3e74 6573 743c      <scope>test<\n+00000a80: 2f73 636f 7065 3e0a 2020 2020 3c2f 6465  /scope>.    </de\n+00000a90: 7065 6e64 656e 6379 3e0a 2020 2020 3c64  pendency>.    <d\n+00000aa0: 6570 656e 6465 6e63 793e 0a20 2020 2020  ependency>.     \n+00000ab0: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000ac0: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000ad0: 7049 643e 0a20 2020 2020 203c 6172 7469  pId>.      <arti\n+00000ae0: 6661 6374 4964 3e64 7562 626f 2d73 6572  factId>dubbo-ser\n+00000af0: 6961 6c69 7a61 7469 6f6e 2d68 6573 7369  ialization-hessi\n+00000b00: 616e 323c 2f61 7274 6966 6163 7449 643e  an2</artifactId>\n+00000b10: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n+00000b20: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n+00000b30: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n+00000b40: 6f6e 3e0a 2020 2020 2020 3c73 636f 7065  on>.      <scope\n+00000b50: 3e74 6573 743c 2f73 636f 7065 3e0a 2020  >test</scope>.  \n+00000b60: 2020 3c2f 6465 7065 6e64 656e 6379 3e0a    </dependency>.\n+00000b70: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+00000b80: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+00000b90: 636f 6d2e 676f 6f67 6c65 2e63 6f64 652e  com.google.code.\n+00000ba0: 6773 6f6e 3c2f 6772 6f75 7049 643e 0a20  gson</groupId>. \n+00000bb0: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n+00000bc0: 3e67 736f 6e3c 2f61 7274 6966 6163 7449  >gson</artifactI\n+00000bd0: 643e 0a20 2020 2020 203c 7363 6f70 653e  d>.      <scope>\n+00000be0: 7465 7374 3c2f 7363 6f70 653e 0a20 2020  test</scope>.   \n+00000bf0: 203c 2f64 6570 656e 6465 6e63 793e 0a20   </dependency>. \n+00000c00: 203c 2f64 6570 656e 6465 6e63 6965 733e   </dependencies>\n+00000c10: 0a3c 2f70 726f 6a65 6374 3e0a            .</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-container-spring/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-container-spring/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,133 +1,130 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d63 6f6e 7461 696e 6572 3c2f 6172  bo-container</ar\n-000004a0: 7469 6661 6374 4964 3e0d 0a20 2020 203c  tifactId>..    <\n-000004b0: 7665 7273 696f 6e3e 322e 372e 3130 3c2f  version>2.7.10</\n-000004c0: 7665 7273 696f 6e3e 0d0a 2020 3c2f 7061  version>..  </pa\n-000004d0: 7265 6e74 3e0d 0a20 203c 6772 6f75 7049  rent>..  <groupI\n-000004e0: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n-000004f0: 626f 3c2f 6772 6f75 7049 643e 0d0a 2020  bo</groupId>..  \n-00000500: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n-00000510: 6f2d 636f 6e74 6169 6e65 722d 7370 7269  o-container-spri\n-00000520: 6e67 3c2f 6172 7469 6661 6374 4964 3e0d  ng</artifactId>.\n-00000530: 0a20 203c 7665 7273 696f 6e3e 322e 372e  .  <version>2.7.\n-00000540: 3130 3c2f 7665 7273 696f 6e3e 0d0a 2020  10</version>..  \n-00000550: 3c6e 616d 653e 247b 7072 6f6a 6563 742e  <name>${project.\n-00000560: 6172 7469 6661 6374 4964 7d3c 2f6e 616d  artifactId}</nam\n-00000570: 653e 0d0a 2020 3c64 6573 6372 6970 7469  e>..  <descripti\n-00000580: 6f6e 3e54 6865 2073 7072 696e 6720 636f  on>The spring co\n-00000590: 6e74 6169 6e65 7220 6d6f 6475 6c65 206f  ntainer module o\n-000005a0: 6620 6475 6262 6f20 7072 6f6a 6563 743c  f dubbo project<\n-000005b0: 2f64 6573 6372 6970 7469 6f6e 3e0d 0a20  /description>.. \n-000005c0: 203c 6c69 6365 6e73 6573 3e0d 0a20 2020   <licenses>..   \n-000005d0: 203c 6c69 6365 6e73 653e 0d0a 2020 2020   <license>..    \n-000005e0: 2020 3c6e 616d 653e 4170 6163 6865 204c    <name>Apache L\n-000005f0: 6963 656e 7365 2c20 5665 7273 696f 6e20  icense, Version \n-00000600: 322e 303c 2f6e 616d 653e 0d0a 2020 2020  2.0</name>..    \n-00000610: 2020 3c75 726c 3e68 7474 703a 2f2f 7777    <url>http://ww\n-00000620: 772e 6170 6163 6865 2e6f 7267 2f6c 6963  w.apache.org/lic\n-00000630: 656e 7365 732f 4c49 4345 4e53 452d 322e  enses/LICENSE-2.\n-00000640: 303c 2f75 726c 3e0d 0a20 2020 2020 203c  0</url>..      <\n-00000650: 6469 7374 7269 6275 7469 6f6e 3e72 6570  distribution>rep\n-00000660: 6f3c 2f64 6973 7472 6962 7574 696f 6e3e  o</distribution>\n-00000670: 0d0a 2020 2020 3c2f 6c69 6365 6e73 653e  ..    </license>\n-00000680: 0d0a 2020 3c2f 6c69 6365 6e73 6573 3e0d  ..  </licenses>.\n-00000690: 0a20 203c 7072 6f70 6572 7469 6573 3e0d  .  <properties>.\n-000006a0: 0a20 2020 203c 736b 6970 5f6d 6176 656e  .    <skip_maven\n-000006b0: 5f64 6570 6c6f 793e 6661 6c73 653c 2f73  _deploy>false</s\n-000006c0: 6b69 705f 6d61 7665 6e5f 6465 706c 6f79  kip_maven_deploy\n-000006d0: 3e0d 0a20 203c 2f70 726f 7065 7274 6965  >..  </propertie\n-000006e0: 733e 0d0a 2020 3c64 6570 656e 6465 6e63  s>..  <dependenc\n-000006f0: 6965 733e 0d0a 2020 2020 3c64 6570 656e  ies>..    <depen\n-00000700: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-00000710: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n-00000720: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n-00000730: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-00000740: 6374 4964 3e64 7562 626f 2d63 6f6e 7461  ctId>dubbo-conta\n-00000750: 696e 6572 2d61 7069 3c2f 6172 7469 6661  iner-api</artifa\n-00000760: 6374 4964 3e0d 0a20 2020 2020 203c 7665  ctId>..      <ve\n-00000770: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n-00000780: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n-00000790: 2f76 6572 7369 6f6e 3e0d 0a20 2020 203c  /version>..    <\n-000007a0: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-000007b0: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-000007c0: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n-000007d0: 7267 2e73 7072 696e 6766 7261 6d65 776f  rg.springframewo\n-000007e0: 726b 3c2f 6772 6f75 7049 643e 0d0a 2020  rk</groupId>..  \n-000007f0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-00000800: 7370 7269 6e67 2d63 6f6e 7465 7874 3c2f  spring-context</\n-00000810: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-00000820: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-00000830: 2020 3c2f 6465 7065 6e64 656e 6369 6573    </dependencies\n-00000840: 3e0d 0a3c 2f70 726f 6a65 6374 3e0d 0a    >..</project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d63 6f6e  factId>dubbo-con\n+00000480: 7461 696e 6572 3c2f 6172 7469 6661 6374  tainer</artifact\n+00000490: 4964 3e0a 2020 2020 3c76 6572 7369 6f6e  Id>.    <version\n+000004a0: 3e32 2e37 2e31 303c 2f76 6572 7369 6f6e  >2.7.10</version\n+000004b0: 3e0a 2020 3c2f 7061 7265 6e74 3e0a 2020  >.  </parent>.  \n+000004c0: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n+000004d0: 6368 652e 6475 6262 6f3c 2f67 726f 7570  che.dubbo</group\n+000004e0: 4964 3e0a 2020 3c61 7274 6966 6163 7449  Id>.  <artifactI\n+000004f0: 643e 6475 6262 6f2d 636f 6e74 6169 6e65  d>dubbo-containe\n+00000500: 722d 7370 7269 6e67 3c2f 6172 7469 6661  r-spring</artifa\n+00000510: 6374 4964 3e0a 2020 3c76 6572 7369 6f6e  ctId>.  <version\n+00000520: 3e32 2e37 2e31 303c 2f76 6572 7369 6f6e  >2.7.10</version\n+00000530: 3e0a 2020 3c6e 616d 653e 247b 7072 6f6a  >.  <name>${proj\n+00000540: 6563 742e 6172 7469 6661 6374 4964 7d3c  ect.artifactId}<\n+00000550: 2f6e 616d 653e 0a20 203c 6465 7363 7269  /name>.  <descri\n+00000560: 7074 696f 6e3e 5468 6520 7370 7269 6e67  ption>The spring\n+00000570: 2063 6f6e 7461 696e 6572 206d 6f64 756c   container modul\n+00000580: 6520 6f66 2064 7562 626f 2070 726f 6a65  e of dubbo proje\n+00000590: 6374 3c2f 6465 7363 7269 7074 696f 6e3e  ct</description>\n+000005a0: 0a20 203c 6c69 6365 6e73 6573 3e0a 2020  .  <licenses>.  \n+000005b0: 2020 3c6c 6963 656e 7365 3e0a 2020 2020    <license>.    \n+000005c0: 2020 3c6e 616d 653e 4170 6163 6865 204c    <name>Apache L\n+000005d0: 6963 656e 7365 2c20 5665 7273 696f 6e20  icense, Version \n+000005e0: 322e 303c 2f6e 616d 653e 0a20 2020 2020  2.0</name>.     \n+000005f0: 203c 7572 6c3e 6874 7470 3a2f 2f77 7777   <url>http://www\n+00000600: 2e61 7061 6368 652e 6f72 672f 6c69 6365  .apache.org/lice\n+00000610: 6e73 6573 2f4c 4943 454e 5345 2d32 2e30  nses/LICENSE-2.0\n+00000620: 3c2f 7572 6c3e 0a20 2020 2020 203c 6469  </url>.      <di\n+00000630: 7374 7269 6275 7469 6f6e 3e72 6570 6f3c  stribution>repo<\n+00000640: 2f64 6973 7472 6962 7574 696f 6e3e 0a20  /distribution>. \n+00000650: 2020 203c 2f6c 6963 656e 7365 3e0a 2020     </license>.  \n+00000660: 3c2f 6c69 6365 6e73 6573 3e0a 2020 3c70  </licenses>.  <p\n+00000670: 726f 7065 7274 6965 733e 0a20 2020 203c  roperties>.    <\n+00000680: 736b 6970 5f6d 6176 656e 5f64 6570 6c6f  skip_maven_deplo\n+00000690: 793e 6661 6c73 653c 2f73 6b69 705f 6d61  y>false</skip_ma\n+000006a0: 7665 6e5f 6465 706c 6f79 3e0a 2020 3c2f  ven_deploy>.  </\n+000006b0: 7072 6f70 6572 7469 6573 3e0a 2020 3c64  properties>.  <d\n+000006c0: 6570 656e 6465 6e63 6965 733e 0a20 2020  ependencies>.   \n+000006d0: 203c 6465 7065 6e64 656e 6379 3e0a 2020   <dependency>.  \n+000006e0: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n+000006f0: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n+00000700: 726f 7570 4964 3e0a 2020 2020 2020 3c61  roupId>.      <a\n+00000710: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n+00000720: 636f 6e74 6169 6e65 722d 6170 693c 2f61  container-api</a\n+00000730: 7274 6966 6163 7449 643e 0a20 2020 2020  rtifactId>.     \n+00000740: 203c 7665 7273 696f 6e3e 247b 7072 6f6a   <version>${proj\n+00000750: 6563 742e 7061 7265 6e74 2e76 6572 7369  ect.parent.versi\n+00000760: 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a 2020  on}</version>.  \n+00000770: 2020 3c2f 6465 7065 6e64 656e 6379 3e0a    </dependency>.\n+00000780: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+00000790: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+000007a0: 6f72 672e 7370 7269 6e67 6672 616d 6577  org.springframew\n+000007b0: 6f72 6b3c 2f67 726f 7570 4964 3e0a 2020  ork</groupId>.  \n+000007c0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+000007d0: 7370 7269 6e67 2d63 6f6e 7465 7874 3c2f  spring-context</\n+000007e0: 6172 7469 6661 6374 4964 3e0a 2020 2020  artifactId>.    \n+000007f0: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+00000800: 3c2f 6465 7065 6e64 656e 6369 6573 3e0a  </dependencies>.\n+00000810: 3c2f 7072 6f6a 6563 743e 0a              </project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-container-log4j/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-container-log4j/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,125 +1,122 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d63 6f6e 7461 696e 6572 3c2f 6172  bo-container</ar\n-000004a0: 7469 6661 6374 4964 3e0d 0a20 2020 203c  tifactId>..    <\n-000004b0: 7665 7273 696f 6e3e 322e 372e 3130 3c2f  version>2.7.10</\n-000004c0: 7665 7273 696f 6e3e 0d0a 2020 3c2f 7061  version>..  </pa\n-000004d0: 7265 6e74 3e0d 0a20 203c 6772 6f75 7049  rent>..  <groupI\n-000004e0: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n-000004f0: 626f 3c2f 6772 6f75 7049 643e 0d0a 2020  bo</groupId>..  \n-00000500: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n-00000510: 6f2d 636f 6e74 6169 6e65 722d 6c6f 6734  o-container-log4\n-00000520: 6a3c 2f61 7274 6966 6163 7449 643e 0d0a  j</artifactId>..\n-00000530: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n-00000540: 303c 2f76 6572 7369 6f6e 3e0d 0a20 203c  0</version>..  <\n-00000550: 6e61 6d65 3e24 7b70 726f 6a65 6374 2e61  name>${project.a\n-00000560: 7274 6966 6163 7449 647d 3c2f 6e61 6d65  rtifactId}</name\n-00000570: 3e0d 0a20 203c 6465 7363 7269 7074 696f  >..  <descriptio\n-00000580: 6e3e 5468 6520 6c6f 6734 6a20 636f 6e74  n>The log4j cont\n-00000590: 6169 6e65 7220 6d6f 6475 6c65 206f 6620  ainer module of \n-000005a0: 6475 6262 6f20 7072 6f6a 6563 743c 2f64  dubbo project</d\n-000005b0: 6573 6372 6970 7469 6f6e 3e0d 0a20 203c  escription>..  <\n-000005c0: 6c69 6365 6e73 6573 3e0d 0a20 2020 203c  licenses>..    <\n-000005d0: 6c69 6365 6e73 653e 0d0a 2020 2020 2020  license>..      \n-000005e0: 3c6e 616d 653e 4170 6163 6865 204c 6963  <name>Apache Lic\n-000005f0: 656e 7365 2c20 5665 7273 696f 6e20 322e  ense, Version 2.\n-00000600: 303c 2f6e 616d 653e 0d0a 2020 2020 2020  0</name>..      \n-00000610: 3c75 726c 3e68 7474 703a 2f2f 7777 772e  <url>http://www.\n-00000620: 6170 6163 6865 2e6f 7267 2f6c 6963 656e  apache.org/licen\n-00000630: 7365 732f 4c49 4345 4e53 452d 322e 303c  ses/LICENSE-2.0<\n-00000640: 2f75 726c 3e0d 0a20 2020 2020 203c 6469  /url>..      <di\n-00000650: 7374 7269 6275 7469 6f6e 3e72 6570 6f3c  stribution>repo<\n-00000660: 2f64 6973 7472 6962 7574 696f 6e3e 0d0a  /distribution>..\n-00000670: 2020 2020 3c2f 6c69 6365 6e73 653e 0d0a      </license>..\n-00000680: 2020 3c2f 6c69 6365 6e73 6573 3e0d 0a20    </licenses>.. \n-00000690: 203c 7072 6f70 6572 7469 6573 3e0d 0a20   <properties>.. \n-000006a0: 2020 203c 736b 6970 5f6d 6176 656e 5f64     <skip_maven_d\n-000006b0: 6570 6c6f 793e 6661 6c73 653c 2f73 6b69  eploy>false</ski\n-000006c0: 705f 6d61 7665 6e5f 6465 706c 6f79 3e0d  p_maven_deploy>.\n-000006d0: 0a20 203c 2f70 726f 7065 7274 6965 733e  .  </properties>\n-000006e0: 0d0a 2020 3c64 6570 656e 6465 6e63 6965  ..  <dependencie\n-000006f0: 733e 0d0a 2020 2020 3c64 6570 656e 6465  s>..    <depende\n-00000700: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-00000710: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n-00000720: 6475 6262 6f3c 2f67 726f 7570 4964 3e0d  dubbo</groupId>.\n-00000730: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-00000740: 4964 3e64 7562 626f 2d63 6f6e 7461 696e  Id>dubbo-contain\n-00000750: 6572 2d61 7069 3c2f 6172 7469 6661 6374  er-api</artifact\n-00000760: 4964 3e0d 0a20 2020 2020 203c 7665 7273  Id>..      <vers\n-00000770: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n-00000780: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n-00000790: 6572 7369 6f6e 3e0d 0a20 2020 203c 2f64  ersion>..    </d\n-000007a0: 6570 656e 6465 6e63 793e 0d0a 2020 3c2f  ependency>..  </\n-000007b0: 6465 7065 6e64 656e 6369 6573 3e0d 0a3c  dependencies>..<\n-000007c0: 2f70 726f 6a65 6374 3e0d 0a              /project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d63 6f6e  factId>dubbo-con\n+00000480: 7461 696e 6572 3c2f 6172 7469 6661 6374  tainer</artifact\n+00000490: 4964 3e0a 2020 2020 3c76 6572 7369 6f6e  Id>.    <version\n+000004a0: 3e32 2e37 2e31 303c 2f76 6572 7369 6f6e  >2.7.10</version\n+000004b0: 3e0a 2020 3c2f 7061 7265 6e74 3e0a 2020  >.  </parent>.  \n+000004c0: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n+000004d0: 6368 652e 6475 6262 6f3c 2f67 726f 7570  che.dubbo</group\n+000004e0: 4964 3e0a 2020 3c61 7274 6966 6163 7449  Id>.  <artifactI\n+000004f0: 643e 6475 6262 6f2d 636f 6e74 6169 6e65  d>dubbo-containe\n+00000500: 722d 6c6f 6734 6a3c 2f61 7274 6966 6163  r-log4j</artifac\n+00000510: 7449 643e 0a20 203c 7665 7273 696f 6e3e  tId>.  <version>\n+00000520: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+00000530: 0a20 203c 6e61 6d65 3e24 7b70 726f 6a65  .  <name>${proje\n+00000540: 6374 2e61 7274 6966 6163 7449 647d 3c2f  ct.artifactId}</\n+00000550: 6e61 6d65 3e0a 2020 3c64 6573 6372 6970  name>.  <descrip\n+00000560: 7469 6f6e 3e54 6865 206c 6f67 346a 2063  tion>The log4j c\n+00000570: 6f6e 7461 696e 6572 206d 6f64 756c 6520  ontainer module \n+00000580: 6f66 2064 7562 626f 2070 726f 6a65 6374  of dubbo project\n+00000590: 3c2f 6465 7363 7269 7074 696f 6e3e 0a20  </description>. \n+000005a0: 203c 6c69 6365 6e73 6573 3e0a 2020 2020   <licenses>.    \n+000005b0: 3c6c 6963 656e 7365 3e0a 2020 2020 2020  <license>.      \n+000005c0: 3c6e 616d 653e 4170 6163 6865 204c 6963  <name>Apache Lic\n+000005d0: 656e 7365 2c20 5665 7273 696f 6e20 322e  ense, Version 2.\n+000005e0: 303c 2f6e 616d 653e 0a20 2020 2020 203c  0</name>.      <\n+000005f0: 7572 6c3e 6874 7470 3a2f 2f77 7777 2e61  url>http://www.a\n+00000600: 7061 6368 652e 6f72 672f 6c69 6365 6e73  pache.org/licens\n+00000610: 6573 2f4c 4943 454e 5345 2d32 2e30 3c2f  es/LICENSE-2.0</\n+00000620: 7572 6c3e 0a20 2020 2020 203c 6469 7374  url>.      <dist\n+00000630: 7269 6275 7469 6f6e 3e72 6570 6f3c 2f64  ribution>repo</d\n+00000640: 6973 7472 6962 7574 696f 6e3e 0a20 2020  istribution>.   \n+00000650: 203c 2f6c 6963 656e 7365 3e0a 2020 3c2f   </license>.  </\n+00000660: 6c69 6365 6e73 6573 3e0a 2020 3c70 726f  licenses>.  <pro\n+00000670: 7065 7274 6965 733e 0a20 2020 203c 736b  perties>.    <sk\n+00000680: 6970 5f6d 6176 656e 5f64 6570 6c6f 793e  ip_maven_deploy>\n+00000690: 6661 6c73 653c 2f73 6b69 705f 6d61 7665  false</skip_mave\n+000006a0: 6e5f 6465 706c 6f79 3e0a 2020 3c2f 7072  n_deploy>.  </pr\n+000006b0: 6f70 6572 7469 6573 3e0a 2020 3c64 6570  operties>.  <dep\n+000006c0: 656e 6465 6e63 6965 733e 0a20 2020 203c  endencies>.    <\n+000006d0: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+000006e0: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+000006f0: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n+00000700: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000710: 6966 6163 7449 643e 6475 6262 6f2d 636f  ifactId>dubbo-co\n+00000720: 6e74 6169 6e65 722d 6170 693c 2f61 7274  ntainer-api</art\n+00000730: 6966 6163 7449 643e 0a20 2020 2020 203c  ifactId>.      <\n+00000740: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n+00000750: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n+00000760: 7d3c 2f76 6572 7369 6f6e 3e0a 2020 2020  }</version>.    \n+00000770: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+00000780: 3c2f 6465 7065 6e64 656e 6369 6573 3e0a  </dependencies>.\n+00000790: 3c2f 7072 6f6a 6563 743e 0a              </project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-container-logback/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-container-logback/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,133 +1,130 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d63 6f6e 7461 696e 6572 3c2f 6172  bo-container</ar\n-000004a0: 7469 6661 6374 4964 3e0d 0a20 2020 203c  tifactId>..    <\n-000004b0: 7665 7273 696f 6e3e 322e 372e 3130 3c2f  version>2.7.10</\n-000004c0: 7665 7273 696f 6e3e 0d0a 2020 3c2f 7061  version>..  </pa\n-000004d0: 7265 6e74 3e0d 0a20 203c 6772 6f75 7049  rent>..  <groupI\n-000004e0: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n-000004f0: 626f 3c2f 6772 6f75 7049 643e 0d0a 2020  bo</groupId>..  \n-00000500: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n-00000510: 6f2d 636f 6e74 6169 6e65 722d 6c6f 6762  o-container-logb\n-00000520: 6163 6b3c 2f61 7274 6966 6163 7449 643e  ack</artifactId>\n-00000530: 0d0a 2020 3c76 6572 7369 6f6e 3e32 2e37  ..  <version>2.7\n-00000540: 2e31 303c 2f76 6572 7369 6f6e 3e0d 0a20  .10</version>.. \n-00000550: 203c 6e61 6d65 3e24 7b70 726f 6a65 6374   <name>${project\n-00000560: 2e61 7274 6966 6163 7449 647d 3c2f 6e61  .artifactId}</na\n-00000570: 6d65 3e0d 0a20 203c 6465 7363 7269 7074  me>..  <descript\n-00000580: 696f 6e3e 5468 6520 6c6f 6762 6163 6b20  ion>The logback \n-00000590: 636f 6e74 6169 6e65 7220 6d6f 6475 6c65  container module\n-000005a0: 206f 6620 6475 6262 6f20 7072 6f6a 6563   of dubbo projec\n-000005b0: 743c 2f64 6573 6372 6970 7469 6f6e 3e0d  t</description>.\n-000005c0: 0a20 203c 6c69 6365 6e73 6573 3e0d 0a20  .  <licenses>.. \n-000005d0: 2020 203c 6c69 6365 6e73 653e 0d0a 2020     <license>..  \n-000005e0: 2020 2020 3c6e 616d 653e 4170 6163 6865      <name>Apache\n-000005f0: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000600: 6e20 322e 303c 2f6e 616d 653e 0d0a 2020  n 2.0</name>..  \n-00000610: 2020 2020 3c75 726c 3e68 7474 703a 2f2f      <url>http://\n-00000620: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n-00000630: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n-00000640: 322e 303c 2f75 726c 3e0d 0a20 2020 2020  2.0</url>..     \n-00000650: 203c 6469 7374 7269 6275 7469 6f6e 3e72   <distribution>r\n-00000660: 6570 6f3c 2f64 6973 7472 6962 7574 696f  epo</distributio\n-00000670: 6e3e 0d0a 2020 2020 3c2f 6c69 6365 6e73  n>..    </licens\n-00000680: 653e 0d0a 2020 3c2f 6c69 6365 6e73 6573  e>..  </licenses\n-00000690: 3e0d 0a20 203c 7072 6f70 6572 7469 6573  >..  <properties\n-000006a0: 3e0d 0a20 2020 203c 736b 6970 5f6d 6176  >..    <skip_mav\n-000006b0: 656e 5f64 6570 6c6f 793e 6661 6c73 653c  en_deploy>false<\n-000006c0: 2f73 6b69 705f 6d61 7665 6e5f 6465 706c  /skip_maven_depl\n-000006d0: 6f79 3e0d 0a20 203c 2f70 726f 7065 7274  oy>..  </propert\n-000006e0: 6965 733e 0d0a 2020 3c64 6570 656e 6465  ies>..  <depende\n-000006f0: 6e63 6965 733e 0d0a 2020 2020 3c64 6570  ncies>..    <dep\n-00000700: 656e 6465 6e63 793e 0d0a 2020 2020 2020  endency>..      \n-00000710: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n-00000720: 6368 652e 6475 6262 6f3c 2f67 726f 7570  che.dubbo</group\n-00000730: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-00000740: 6661 6374 4964 3e64 7562 626f 2d63 6f6e  factId>dubbo-con\n-00000750: 7461 696e 6572 2d61 7069 3c2f 6172 7469  tainer-api</arti\n-00000760: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-00000770: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n-00000780: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n-00000790: 7d3c 2f76 6572 7369 6f6e 3e0d 0a20 2020  }</version>..   \n-000007a0: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-000007b0: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n-000007c0: 0d0a 2020 2020 2020 3c67 726f 7570 4964  ..      <groupId\n-000007d0: 3e63 682e 716f 732e 6c6f 6762 6163 6b3c  >ch.qos.logback<\n-000007e0: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-000007f0: 203c 6172 7469 6661 6374 4964 3e6c 6f67   <artifactId>log\n-00000800: 6261 636b 2d63 6c61 7373 6963 3c2f 6172  back-classic</ar\n-00000810: 7469 6661 6374 4964 3e0d 0a20 2020 203c  tifactId>..    <\n-00000820: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-00000830: 3c2f 6465 7065 6e64 656e 6369 6573 3e0d  </dependencies>.\n-00000840: 0a3c 2f70 726f 6a65 6374 3e0d 0a         .</project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d63 6f6e  factId>dubbo-con\n+00000480: 7461 696e 6572 3c2f 6172 7469 6661 6374  tainer</artifact\n+00000490: 4964 3e0a 2020 2020 3c76 6572 7369 6f6e  Id>.    <version\n+000004a0: 3e32 2e37 2e31 303c 2f76 6572 7369 6f6e  >2.7.10</version\n+000004b0: 3e0a 2020 3c2f 7061 7265 6e74 3e0a 2020  >.  </parent>.  \n+000004c0: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n+000004d0: 6368 652e 6475 6262 6f3c 2f67 726f 7570  che.dubbo</group\n+000004e0: 4964 3e0a 2020 3c61 7274 6966 6163 7449  Id>.  <artifactI\n+000004f0: 643e 6475 6262 6f2d 636f 6e74 6169 6e65  d>dubbo-containe\n+00000500: 722d 6c6f 6762 6163 6b3c 2f61 7274 6966  r-logback</artif\n+00000510: 6163 7449 643e 0a20 203c 7665 7273 696f  actId>.  <versio\n+00000520: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n+00000530: 6e3e 0a20 203c 6e61 6d65 3e24 7b70 726f  n>.  <name>${pro\n+00000540: 6a65 6374 2e61 7274 6966 6163 7449 647d  ject.artifactId}\n+00000550: 3c2f 6e61 6d65 3e0a 2020 3c64 6573 6372  </name>.  <descr\n+00000560: 6970 7469 6f6e 3e54 6865 206c 6f67 6261  iption>The logba\n+00000570: 636b 2063 6f6e 7461 696e 6572 206d 6f64  ck container mod\n+00000580: 756c 6520 6f66 2064 7562 626f 2070 726f  ule of dubbo pro\n+00000590: 6a65 6374 3c2f 6465 7363 7269 7074 696f  ject</descriptio\n+000005a0: 6e3e 0a20 203c 6c69 6365 6e73 6573 3e0a  n>.  <licenses>.\n+000005b0: 2020 2020 3c6c 6963 656e 7365 3e0a 2020      <license>.  \n+000005c0: 2020 2020 3c6e 616d 653e 4170 6163 6865      <name>Apache\n+000005d0: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n+000005e0: 6e20 322e 303c 2f6e 616d 653e 0a20 2020  n 2.0</name>.   \n+000005f0: 2020 203c 7572 6c3e 6874 7470 3a2f 2f77     <url>http://w\n+00000600: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n+00000610: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n+00000620: 2e30 3c2f 7572 6c3e 0a20 2020 2020 203c  .0</url>.      <\n+00000630: 6469 7374 7269 6275 7469 6f6e 3e72 6570  distribution>rep\n+00000640: 6f3c 2f64 6973 7472 6962 7574 696f 6e3e  o</distribution>\n+00000650: 0a20 2020 203c 2f6c 6963 656e 7365 3e0a  .    </license>.\n+00000660: 2020 3c2f 6c69 6365 6e73 6573 3e0a 2020    </licenses>.  \n+00000670: 3c70 726f 7065 7274 6965 733e 0a20 2020  <properties>.   \n+00000680: 203c 736b 6970 5f6d 6176 656e 5f64 6570   <skip_maven_dep\n+00000690: 6c6f 793e 6661 6c73 653c 2f73 6b69 705f  loy>false</skip_\n+000006a0: 6d61 7665 6e5f 6465 706c 6f79 3e0a 2020  maven_deploy>.  \n+000006b0: 3c2f 7072 6f70 6572 7469 6573 3e0a 2020  </properties>.  \n+000006c0: 3c64 6570 656e 6465 6e63 6965 733e 0a20  <dependencies>. \n+000006d0: 2020 203c 6465 7065 6e64 656e 6379 3e0a     <dependency>.\n+000006e0: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n+000006f0: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n+00000700: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+00000710: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+00000720: 6f2d 636f 6e74 6169 6e65 722d 6170 693c  o-container-api<\n+00000730: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+00000740: 2020 203c 7665 7273 696f 6e3e 247b 7072     <version>${pr\n+00000750: 6f6a 6563 742e 7061 7265 6e74 2e76 6572  oject.parent.ver\n+00000760: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a  sion}</version>.\n+00000770: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000780: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000790: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+000007a0: 643e 6368 2e71 6f73 2e6c 6f67 6261 636b  d>ch.qos.logback\n+000007b0: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+000007c0: 203c 6172 7469 6661 6374 4964 3e6c 6f67   <artifactId>log\n+000007d0: 6261 636b 2d63 6c61 7373 6963 3c2f 6172  back-classic</ar\n+000007e0: 7469 6661 6374 4964 3e0a 2020 2020 3c2f  tifactId>.    </\n+000007f0: 6465 7065 6e64 656e 6379 3e0a 2020 3c2f  dependency>.  </\n+00000800: 6465 7065 6e64 656e 6369 6573 3e0a 3c2f  dependencies>.</\n+00000810: 7072 6f6a 6563 743e 0a                   project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-qos/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-qos/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,185 +1,180 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d70 6c75 6769 6e3c 2f61 7274 6966  bo-plugin</artif\n-000004a0: 6163 7449 643e 0d0a 2020 2020 3c76 6572  actId>..    <ver\n-000004b0: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n-000004c0: 7369 6f6e 3e0d 0a20 203c 2f70 6172 656e  sion>..  </paren\n-000004d0: 743e 0d0a 2020 3c67 726f 7570 4964 3e6f  t>..  <groupId>o\n-000004e0: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-000004f0: 2f67 726f 7570 4964 3e0d 0a20 203c 6172  /groupId>..  <ar\n-00000500: 7469 6661 6374 4964 3e64 7562 626f 2d71  tifactId>dubbo-q\n-00000510: 6f73 3c2f 6172 7469 6661 6374 4964 3e0d  os</artifactId>.\n-00000520: 0a20 203c 7665 7273 696f 6e3e 322e 372e  .  <version>2.7.\n-00000530: 3130 3c2f 7665 7273 696f 6e3e 0d0a 2020  10</version>..  \n-00000540: 3c6e 616d 653e 6475 6262 6f2d 716f 733c  <name>dubbo-qos<\n-00000550: 2f6e 616d 653e 0d0a 2020 3c6c 6963 656e  /name>..  <licen\n-00000560: 7365 733e 0d0a 2020 2020 3c6c 6963 656e  ses>..    <licen\n-00000570: 7365 3e0d 0a20 2020 2020 203c 6e61 6d65  se>..      <name\n-00000580: 3e41 7061 6368 6520 4c69 6365 6e73 652c  >Apache License,\n-00000590: 2056 6572 7369 6f6e 2032 2e30 3c2f 6e61   Version 2.0</na\n-000005a0: 6d65 3e0d 0a20 2020 2020 203c 7572 6c3e  me>..      <url>\n-000005b0: 6874 7470 3a2f 2f77 7777 2e61 7061 6368  http://www.apach\n-000005c0: 652e 6f72 672f 6c69 6365 6e73 6573 2f4c  e.org/licenses/L\n-000005d0: 4943 454e 5345 2d32 2e30 3c2f 7572 6c3e  ICENSE-2.0</url>\n-000005e0: 0d0a 2020 2020 2020 3c64 6973 7472 6962  ..      <distrib\n-000005f0: 7574 696f 6e3e 7265 706f 3c2f 6469 7374  ution>repo</dist\n-00000600: 7269 6275 7469 6f6e 3e0d 0a20 2020 203c  ribution>..    <\n-00000610: 2f6c 6963 656e 7365 3e0d 0a20 203c 2f6c  /license>..  </l\n-00000620: 6963 656e 7365 733e 0d0a 2020 3c70 726f  icenses>..  <pro\n-00000630: 7065 7274 6965 733e 0d0a 2020 2020 3c73  perties>..    <s\n-00000640: 6b69 705f 6d61 7665 6e5f 6465 706c 6f79  kip_maven_deploy\n-00000650: 3e66 616c 7365 3c2f 736b 6970 5f6d 6176  >false</skip_mav\n-00000660: 656e 5f64 6570 6c6f 793e 0d0a 2020 2020  en_deploy>..    \n-00000670: 3c70 726f 6a65 6374 2e62 7569 6c64 2e73  <project.build.s\n-00000680: 6f75 7263 6545 6e63 6f64 696e 673e 5554  ourceEncoding>UT\n-00000690: 462d 383c 2f70 726f 6a65 6374 2e62 7569  F-8</project.bui\n-000006a0: 6c64 2e73 6f75 7263 6545 6e63 6f64 696e  ld.sourceEncodin\n-000006b0: 673e 0d0a 2020 3c2f 7072 6f70 6572 7469  g>..  </properti\n-000006c0: 6573 3e0d 0a20 203c 6465 7065 6e64 656e  es>..  <dependen\n-000006d0: 6369 6573 3e0d 0a20 2020 203c 6465 7065  cies>..    <depe\n-000006e0: 6e64 656e 6379 3e0d 0a20 2020 2020 203c  ndency>..      <\n-000006f0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n-00000700: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n-00000710: 643e 0d0a 2020 2020 2020 3c61 7274 6966  d>..      <artif\n-00000720: 6163 7449 643e 6475 6262 6f2d 636f 6d6d  actId>dubbo-comm\n-00000730: 6f6e 3c2f 6172 7469 6661 6374 4964 3e0d  on</artifactId>.\n-00000740: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n-00000750: 247b 7072 6f6a 6563 742e 7665 7273 696f  ${project.versio\n-00000760: 6e7d 3c2f 7665 7273 696f 6e3e 0d0a 2020  n}</version>..  \n-00000770: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-00000780: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-00000790: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-000007a0: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n-000007b0: 626f 3c2f 6772 6f75 7049 643e 0d0a 2020  bo</groupId>..  \n-000007c0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-000007d0: 6475 6262 6f2d 7265 6769 7374 7279 2d61  dubbo-registry-a\n-000007e0: 7069 3c2f 6172 7469 6661 6374 4964 3e0d  pi</artifactId>.\n-000007f0: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n-00000800: 247b 7072 6f6a 6563 742e 7665 7273 696f  ${project.versio\n-00000810: 6e7d 3c2f 7665 7273 696f 6e3e 0d0a 2020  n}</version>..  \n-00000820: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-00000830: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-00000840: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-00000850: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n-00000860: 626f 3c2f 6772 6f75 7049 643e 0d0a 2020  bo</groupId>..  \n-00000870: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-00000880: 6475 6262 6f2d 636f 6e66 6967 2d61 7069  dubbo-config-api\n-00000890: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-000008a0: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n-000008b0: 7072 6f6a 6563 742e 7665 7273 696f 6e7d  project.version}\n-000008c0: 3c2f 7665 7273 696f 6e3e 0d0a 2020 2020  </version>..    \n-000008d0: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-000008e0: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-000008f0: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000900: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n-00000910: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-00000920: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n-00000930: 6262 6f2d 7270 632d 6475 6262 6f3c 2f61  bbo-rpc-dubbo</a\n-00000940: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-00000950: 2020 3c76 6572 7369 6f6e 3e24 7b70 726f    <version>${pro\n-00000960: 6a65 6374 2e76 6572 7369 6f6e 7d3c 2f76  ject.version}</v\n-00000970: 6572 7369 6f6e 3e0d 0a20 2020 203c 2f64  ersion>..    </d\n-00000980: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000990: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-000009a0: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n-000009b0: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-000009c0: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-000009d0: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-000009e0: 2d72 656d 6f74 696e 672d 6e65 7474 7934  -remoting-netty4\n-000009f0: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000a00: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n-00000a10: 7072 6f6a 6563 742e 7665 7273 696f 6e7d  project.version}\n-00000a20: 3c2f 7665 7273 696f 6e3e 0d0a 2020 2020  </version>..    \n-00000a30: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-00000a40: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-00000a50: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000a60: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n-00000a70: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-00000a80: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n-00000a90: 6262 6f2d 7365 7269 616c 697a 6174 696f  bbo-serializatio\n-00000aa0: 6e2d 6865 7373 6961 6e32 3c2f 6172 7469  n-hessian2</arti\n-00000ab0: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-00000ac0: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n-00000ad0: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n-00000ae0: 696f 6e3e 0d0a 2020 2020 3c2f 6465 7065  ion>..    </depe\n-00000af0: 6e64 656e 6379 3e0d 0a20 2020 203c 6465  ndency>..    <de\n-00000b00: 7065 6e64 656e 6379 3e0d 0a20 2020 2020  pendency>..     \n-00000b10: 203c 6772 6f75 7049 643e 696f 2e6e 6574   <groupId>io.net\n-00000b20: 7479 3c2f 6772 6f75 7049 643e 0d0a 2020  ty</groupId>..  \n-00000b30: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-00000b40: 6e65 7474 792d 616c 6c3c 2f61 7274 6966  netty-all</artif\n-00000b50: 6163 7449 643e 0d0a 2020 2020 3c2f 6465  actId>..    </de\n-00000b60: 7065 6e64 656e 6379 3e0d 0a20 203c 2f64  pendency>..  </d\n-00000b70: 6570 656e 6465 6e63 6965 733e 0d0a 3c2f  ependencies>..</\n-00000b80: 7072 6f6a 6563 743e 0d0a                 project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d70 6c75  factId>dubbo-plu\n+00000480: 6769 6e3c 2f61 7274 6966 6163 7449 643e  gin</artifactId>\n+00000490: 0a20 2020 203c 7665 7273 696f 6e3e 322e  .    <version>2.\n+000004a0: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+000004b0: 203c 2f70 6172 656e 743e 0a20 203c 6772   </parent>.  <gr\n+000004c0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000004d0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+000004e0: 0a20 203c 6172 7469 6661 6374 4964 3e64  .  <artifactId>d\n+000004f0: 7562 626f 2d71 6f73 3c2f 6172 7469 6661  ubbo-qos</artifa\n+00000500: 6374 4964 3e0a 2020 3c76 6572 7369 6f6e  ctId>.  <version\n+00000510: 3e32 2e37 2e31 303c 2f76 6572 7369 6f6e  >2.7.10</version\n+00000520: 3e0a 2020 3c6e 616d 653e 6475 6262 6f2d  >.  <name>dubbo-\n+00000530: 716f 733c 2f6e 616d 653e 0a20 203c 6c69  qos</name>.  <li\n+00000540: 6365 6e73 6573 3e0a 2020 2020 3c6c 6963  censes>.    <lic\n+00000550: 656e 7365 3e0a 2020 2020 2020 3c6e 616d  ense>.      <nam\n+00000560: 653e 4170 6163 6865 204c 6963 656e 7365  e>Apache License\n+00000570: 2c20 5665 7273 696f 6e20 322e 303c 2f6e  , Version 2.0</n\n+00000580: 616d 653e 0a20 2020 2020 203c 7572 6c3e  ame>.      <url>\n+00000590: 6874 7470 3a2f 2f77 7777 2e61 7061 6368  http://www.apach\n+000005a0: 652e 6f72 672f 6c69 6365 6e73 6573 2f4c  e.org/licenses/L\n+000005b0: 4943 454e 5345 2d32 2e30 3c2f 7572 6c3e  ICENSE-2.0</url>\n+000005c0: 0a20 2020 2020 203c 6469 7374 7269 6275  .      <distribu\n+000005d0: 7469 6f6e 3e72 6570 6f3c 2f64 6973 7472  tion>repo</distr\n+000005e0: 6962 7574 696f 6e3e 0a20 2020 203c 2f6c  ibution>.    </l\n+000005f0: 6963 656e 7365 3e0a 2020 3c2f 6c69 6365  icense>.  </lice\n+00000600: 6e73 6573 3e0a 2020 3c70 726f 7065 7274  nses>.  <propert\n+00000610: 6965 733e 0a20 2020 203c 736b 6970 5f6d  ies>.    <skip_m\n+00000620: 6176 656e 5f64 6570 6c6f 793e 6661 6c73  aven_deploy>fals\n+00000630: 653c 2f73 6b69 705f 6d61 7665 6e5f 6465  e</skip_maven_de\n+00000640: 706c 6f79 3e0a 2020 2020 3c70 726f 6a65  ploy>.    <proje\n+00000650: 6374 2e62 7569 6c64 2e73 6f75 7263 6545  ct.build.sourceE\n+00000660: 6e63 6f64 696e 673e 5554 462d 383c 2f70  ncoding>UTF-8</p\n+00000670: 726f 6a65 6374 2e62 7569 6c64 2e73 6f75  roject.build.sou\n+00000680: 7263 6545 6e63 6f64 696e 673e 0a20 203c  rceEncoding>.  <\n+00000690: 2f70 726f 7065 7274 6965 733e 0a20 203c  /properties>.  <\n+000006a0: 6465 7065 6e64 656e 6369 6573 3e0a 2020  dependencies>.  \n+000006b0: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+000006c0: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n+000006d0: 672e 6170 6163 6865 2e64 7562 626f 3c2f  g.apache.dubbo</\n+000006e0: 6772 6f75 7049 643e 0a20 2020 2020 203c  groupId>.      <\n+000006f0: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n+00000700: 2d63 6f6d 6d6f 6e3c 2f61 7274 6966 6163  -common</artifac\n+00000710: 7449 643e 0a20 2020 2020 203c 7665 7273  tId>.      <vers\n+00000720: 696f 6e3e 247b 7072 6f6a 6563 742e 7665  ion>${project.ve\n+00000730: 7273 696f 6e7d 3c2f 7665 7273 696f 6e3e  rsion}</version>\n+00000740: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+00000750: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+00000760: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+00000770: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+00000780: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000790: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+000007a0: 6475 6262 6f2d 7265 6769 7374 7279 2d61  dubbo-registry-a\n+000007b0: 7069 3c2f 6172 7469 6661 6374 4964 3e0a  pi</artifactId>.\n+000007c0: 2020 2020 2020 3c76 6572 7369 6f6e 3e24        <version>$\n+000007d0: 7b70 726f 6a65 6374 2e76 6572 7369 6f6e  {project.version\n+000007e0: 7d3c 2f76 6572 7369 6f6e 3e0a 2020 2020  }</version>.    \n+000007f0: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+00000800: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+00000810: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n+00000820: 672e 6170 6163 6865 2e64 7562 626f 3c2f  g.apache.dubbo</\n+00000830: 6772 6f75 7049 643e 0a20 2020 2020 203c  groupId>.      <\n+00000840: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n+00000850: 2d63 6f6e 6669 672d 6170 693c 2f61 7274  -config-api</art\n+00000860: 6966 6163 7449 643e 0a20 2020 2020 203c  ifactId>.      <\n+00000870: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n+00000880: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n+00000890: 696f 6e3e 0a20 2020 203c 2f64 6570 656e  ion>.    </depen\n+000008a0: 6465 6e63 793e 0a20 2020 203c 6465 7065  dency>.    <depe\n+000008b0: 6e64 656e 6379 3e0a 2020 2020 2020 3c67  ndency>.      <g\n+000008c0: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n+000008d0: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n+000008e0: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+000008f0: 7449 643e 6475 6262 6f2d 7270 632d 6475  tId>dubbo-rpc-du\n+00000900: 6262 6f3c 2f61 7274 6966 6163 7449 643e  bbo</artifactId>\n+00000910: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n+00000920: 247b 7072 6f6a 6563 742e 7665 7273 696f  ${project.versio\n+00000930: 6e7d 3c2f 7665 7273 696f 6e3e 0a20 2020  n}</version>.   \n+00000940: 203c 2f64 6570 656e 6465 6e63 793e 0a20   </dependency>. \n+00000950: 2020 203c 6465 7065 6e64 656e 6379 3e0a     <dependency>.\n+00000960: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n+00000970: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n+00000980: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+00000990: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+000009a0: 6f2d 7265 6d6f 7469 6e67 2d6e 6574 7479  o-remoting-netty\n+000009b0: 343c 2f61 7274 6966 6163 7449 643e 0a20  4</artifactId>. \n+000009c0: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n+000009d0: 7072 6f6a 6563 742e 7665 7273 696f 6e7d  project.version}\n+000009e0: 3c2f 7665 7273 696f 6e3e 0a20 2020 203c  </version>.    <\n+000009f0: 2f64 6570 656e 6465 6e63 793e 0a20 2020  /dependency>.   \n+00000a00: 203c 6465 7065 6e64 656e 6379 3e0a 2020   <dependency>.  \n+00000a10: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n+00000a20: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n+00000a30: 726f 7570 4964 3e0a 2020 2020 2020 3c61  roupId>.      <a\n+00000a40: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n+00000a50: 7365 7269 616c 697a 6174 696f 6e2d 6865  serialization-he\n+00000a60: 7373 6961 6e32 3c2f 6172 7469 6661 6374  ssian2</artifact\n+00000a70: 4964 3e0a 2020 2020 2020 3c76 6572 7369  Id>.      <versi\n+00000a80: 6f6e 3e24 7b70 726f 6a65 6374 2e76 6572  on>${project.ver\n+00000a90: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a  sion}</version>.\n+00000aa0: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000ab0: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000ac0: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+00000ad0: 643e 696f 2e6e 6574 7479 3c2f 6772 6f75  d>io.netty</grou\n+00000ae0: 7049 643e 0a20 2020 2020 203c 6172 7469  pId>.      <arti\n+00000af0: 6661 6374 4964 3e6e 6574 7479 2d61 6c6c  factId>netty-all\n+00000b00: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000b10: 2020 3c2f 6465 7065 6e64 656e 6379 3e0a    </dependency>.\n+00000b20: 2020 3c2f 6465 7065 6e64 656e 6369 6573    </dependencies\n+00000b30: 3e0a 3c2f 7072 6f6a 6563 743e 0a         >.</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-serialization-api/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-serialization-api/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,124 +1,121 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 4c69  F-8\"?>..<!--..Li\n-00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n-00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n-00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n-00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n-00000070: 0d0a 636f 6e74 7269 6275 746f 7220 6c69  ..contributor li\n-00000080: 6365 6e73 6520 6167 7265 656d 656e 7473  cense agreements\n-00000090: 2e20 2053 6565 2074 6865 204e 4f54 4943  .  See the NOTIC\n-000000a0: 4520 6669 6c65 2064 6973 7472 6962 7574  E file distribut\n-000000b0: 6564 2077 6974 680d 0a74 6869 7320 776f  ed with..this wo\n-000000c0: 726b 2066 6f72 2061 6464 6974 696f 6e61  rk for additiona\n-000000d0: 6c20 696e 666f 726d 6174 696f 6e20 7265  l information re\n-000000e0: 6761 7264 696e 6720 636f 7079 7269 6768  garding copyrigh\n-000000f0: 7420 6f77 6e65 7273 6869 702e 0d0a 5468  t ownership...Th\n-00000100: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000110: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000120: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000130: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000140: 6e20 322e 300d 0a28 7468 6520 224c 6963  n 2.0..(the \"Lic\n-00000150: 656e 7365 2229 3b20 796f 7520 6d61 7920  ense\"); you may \n-00000160: 6e6f 7420 7573 6520 7468 6973 2066 696c  not use this fil\n-00000170: 6520 6578 6365 7074 2069 6e20 636f 6d70  e except in comp\n-00000180: 6c69 616e 6365 2077 6974 680d 0a74 6865  liance with..the\n-00000190: 204c 6963 656e 7365 2e20 2059 6f75 206d   License.  You m\n-000001a0: 6179 206f 6274 6169 6e20 6120 636f 7079  ay obtain a copy\n-000001b0: 206f 6620 7468 6520 4c69 6365 6e73 6520   of the License \n-000001c0: 6174 0d0a 0d0a 2020 2020 2068 7474 703a  at....     http:\n-000001d0: 2f2f 7777 772e 6170 6163 6865 2e6f 7267  //www.apache.org\n-000001e0: 2f6c 6963 656e 7365 732f 4c49 4345 4e53  /licenses/LICENS\n-000001f0: 452d 322e 300d 0a0d 0a55 6e6c 6573 7320  E-2.0....Unless \n-00000200: 7265 7175 6972 6564 2062 7920 6170 706c  required by appl\n-00000210: 6963 6162 6c65 206c 6177 206f 7220 6167  icable law or ag\n-00000220: 7265 6564 2074 6f20 696e 2077 7269 7469  reed to in writi\n-00000230: 6e67 2c20 736f 6674 7761 7265 0d0a 6469  ng, software..di\n-00000240: 7374 7269 6275 7465 6420 756e 6465 7220  stributed under \n-00000250: 7468 6520 4c69 6365 6e73 6520 6973 2064  the License is d\n-00000260: 6973 7472 6962 7574 6564 206f 6e20 616e  istributed on an\n-00000270: 2022 4153 2049 5322 2042 4153 4953 2c0d   \"AS IS\" BASIS,.\n-00000280: 0a57 4954 484f 5554 2057 4152 5241 4e54  .WITHOUT WARRANT\n-00000290: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n-000002a0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n-000002b0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n-000002c0: 2069 6d70 6c69 6564 2e0d 0a53 6565 2074   implied...See t\n-000002d0: 6865 204c 6963 656e 7365 2066 6f72 2074  he License for t\n-000002e0: 6865 2073 7065 6369 6669 6320 6c61 6e67  he specific lang\n-000002f0: 7561 6765 2067 6f76 6572 6e69 6e67 2070  uage governing p\n-00000300: 6572 6d69 7373 696f 6e73 2061 6e64 0d0a  ermissions and..\n-00000310: 6c69 6d69 7461 7469 6f6e 7320 756e 6465  limitations unde\n-00000320: 7220 7468 6520 4c69 6365 6e73 652e 0d0a  r the License...\n-00000330: 2d2d 3e0d 0a3c 7072 6f6a 6563 7420 7873  -->..<project xs\n-00000340: 693a 7363 6865 6d61 4c6f 6361 7469 6f6e  i:schemaLocation\n-00000350: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-00000360: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-00000370: 302e 3020 6874 7470 733a 2f2f 6d61 7665  0.0 https://mave\n-00000380: 6e2e 6170 6163 6865 2e6f 7267 2f78 7364  n.apache.org/xsd\n-00000390: 2f6d 6176 656e 2d34 2e30 2e30 2e78 7364  /maven-4.0.0.xsd\n-000003a0: 2220 786d 6c6e 733d 2268 7474 703a 2f2f  \" xmlns=\"http://\n-000003b0: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003c0: 2f50 4f4d 2f34 2e30 2e30 220d 0a20 2020  /POM/4.0.0\"..   \n-000003d0: 2078 6d6c 6e73 3a78 7369 3d22 6874 7470   xmlns:xsi=\"http\n-000003e0: 3a2f 2f77 7777 2e77 332e 6f72 672f 3230  ://www.w3.org/20\n-000003f0: 3031 2f58 4d4c 5363 6865 6d61 2d69 6e73  01/XMLSchema-ins\n-00000400: 7461 6e63 6522 3e0d 0a20 203c 6d6f 6465  tance\">..  <mode\n-00000410: 6c56 6572 7369 6f6e 3e34 2e30 2e30 3c2f  lVersion>4.0.0</\n-00000420: 6d6f 6465 6c56 6572 7369 6f6e 3e0d 0a20  modelVersion>.. \n-00000430: 203c 7061 7265 6e74 3e0d 0a20 2020 203c   <parent>..    <\n-00000440: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n-00000450: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n-00000460: 643e 0d0a 2020 2020 3c61 7274 6966 6163  d>..    <artifac\n-00000470: 7449 643e 6475 6262 6f2d 7365 7269 616c  tId>dubbo-serial\n-00000480: 697a 6174 696f 6e3c 2f61 7274 6966 6163  ization</artifac\n-00000490: 7449 643e 0d0a 2020 2020 3c76 6572 7369  tId>..    <versi\n-000004a0: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n-000004b0: 6f6e 3e0d 0a20 203c 2f70 6172 656e 743e  on>..  </parent>\n-000004c0: 0d0a 2020 3c67 726f 7570 4964 3e6f 7267  ..  <groupId>org\n-000004d0: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-000004e0: 726f 7570 4964 3e0d 0a20 203c 6172 7469  roupId>..  <arti\n-000004f0: 6661 6374 4964 3e64 7562 626f 2d73 6572  factId>dubbo-ser\n-00000500: 6961 6c69 7a61 7469 6f6e 2d61 7069 3c2f  ialization-api</\n-00000510: 6172 7469 6661 6374 4964 3e0d 0a20 203c  artifactId>..  <\n-00000520: 7665 7273 696f 6e3e 322e 372e 3130 3c2f  version>2.7.10</\n-00000530: 7665 7273 696f 6e3e 0d0a 2020 3c6e 616d  version>..  <nam\n-00000540: 653e 247b 7072 6f6a 6563 742e 6172 7469  e>${project.arti\n-00000550: 6661 6374 4964 7d3c 2f6e 616d 653e 0d0a  factId}</name>..\n-00000560: 2020 3c64 6573 6372 6970 7469 6f6e 3e54    <description>T\n-00000570: 6865 2073 6572 6961 6c69 7a61 7469 6f6e  he serialization\n-00000580: 2069 6e74 6572 6661 6365 206d 6f64 756c   interface modul\n-00000590: 6520 6f66 2064 7562 626f 2070 726f 6a65  e of dubbo proje\n-000005a0: 6374 3c2f 6465 7363 7269 7074 696f 6e3e  ct</description>\n-000005b0: 0d0a 2020 3c6c 6963 656e 7365 733e 0d0a  ..  <licenses>..\n-000005c0: 2020 2020 3c6c 6963 656e 7365 3e0d 0a20      <license>.. \n-000005d0: 2020 2020 203c 6e61 6d65 3e41 7061 6368       <name>Apach\n-000005e0: 6520 4c69 6365 6e73 652c 2056 6572 7369  e License, Versi\n-000005f0: 6f6e 2032 2e30 3c2f 6e61 6d65 3e0d 0a20  on 2.0</name>.. \n-00000600: 2020 2020 203c 7572 6c3e 6874 7470 3a2f       <url>http:/\n-00000610: 2f77 7777 2e61 7061 6368 652e 6f72 672f  /www.apache.org/\n-00000620: 6c69 6365 6e73 6573 2f4c 4943 454e 5345  licenses/LICENSE\n-00000630: 2d32 2e30 3c2f 7572 6c3e 0d0a 2020 2020  -2.0</url>..    \n-00000640: 2020 3c64 6973 7472 6962 7574 696f 6e3e    <distribution>\n-00000650: 7265 706f 3c2f 6469 7374 7269 6275 7469  repo</distributi\n-00000660: 6f6e 3e0d 0a20 2020 203c 2f6c 6963 656e  on>..    </licen\n-00000670: 7365 3e0d 0a20 203c 2f6c 6963 656e 7365  se>..  </license\n-00000680: 733e 0d0a 2020 3c70 726f 7065 7274 6965  s>..  <propertie\n-00000690: 733e 0d0a 2020 2020 3c73 6b69 705f 6d61  s>..    <skip_ma\n-000006a0: 7665 6e5f 6465 706c 6f79 3e66 616c 7365  ven_deploy>false\n-000006b0: 3c2f 736b 6970 5f6d 6176 656e 5f64 6570  </skip_maven_dep\n-000006c0: 6c6f 793e 0d0a 2020 3c2f 7072 6f70 6572  loy>..  </proper\n-000006d0: 7469 6573 3e0d 0a20 203c 6465 7065 6e64  ties>..  <depend\n-000006e0: 656e 6369 6573 3e0d 0a20 2020 203c 6465  encies>..    <de\n-000006f0: 7065 6e64 656e 6379 3e0d 0a20 2020 2020  pendency>..     \n-00000700: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n-00000710: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n-00000720: 7049 643e 0d0a 2020 2020 2020 3c61 7274  pId>..      <art\n-00000730: 6966 6163 7449 643e 6475 6262 6f2d 636f  ifactId>dubbo-co\n-00000740: 6d6d 6f6e 3c2f 6172 7469 6661 6374 4964  mmon</artifactId\n-00000750: 3e0d 0a20 2020 2020 203c 7665 7273 696f  >..      <versio\n-00000760: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n-00000770: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n-00000780: 7369 6f6e 3e0d 0a20 2020 203c 2f64 6570  sion>..    </dep\n-00000790: 656e 6465 6e63 793e 0d0a 2020 3c2f 6465  endency>..  </de\n-000007a0: 7065 6e64 656e 6369 6573 3e0d 0a3c 2f70  pendencies>..</p\n-000007b0: 726f 6a65 6374 3e0d 0a                   roject>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 4c69 6365  F-8\"?>.<!--.Lice\n+00000030: 6e73 6564 2074 6f20 7468 6520 4170 6163  nsed to the Apac\n+00000040: 6865 2053 6f66 7477 6172 6520 466f 756e  he Software Foun\n+00000050: 6461 7469 6f6e 2028 4153 4629 2075 6e64  dation (ASF) und\n+00000060: 6572 206f 6e65 206f 7220 6d6f 7265 0a63  er one or more.c\n+00000070: 6f6e 7472 6962 7574 6f72 206c 6963 656e  ontributor licen\n+00000080: 7365 2061 6772 6565 6d65 6e74 732e 2020  se agreements.  \n+00000090: 5365 6520 7468 6520 4e4f 5449 4345 2066  See the NOTICE f\n+000000a0: 696c 6520 6469 7374 7269 6275 7465 6420  ile distributed \n+000000b0: 7769 7468 0a74 6869 7320 776f 726b 2066  with.this work f\n+000000c0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n+000000d0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n+000000e0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n+000000f0: 6e65 7273 6869 702e 0a54 6865 2041 5346  nership..The ASF\n+00000100: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000110: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000120: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000130: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000140: 0a28 7468 6520 224c 6963 656e 7365 2229  .(the \"License\")\n+00000150: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n+00000160: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n+00000170: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n+00000180: 2077 6974 680a 7468 6520 4c69 6365 6e73   with.the Licens\n+00000190: 652e 2020 596f 7520 6d61 7920 6f62 7461  e.  You may obta\n+000001a0: 696e 2061 2063 6f70 7920 6f66 2074 6865  in a copy of the\n+000001b0: 204c 6963 656e 7365 2061 740a 0a20 2020   License at..   \n+000001c0: 2020 6874 7470 3a2f 2f77 7777 2e61 7061    http://www.apa\n+000001d0: 6368 652e 6f72 672f 6c69 6365 6e73 6573  che.org/licenses\n+000001e0: 2f4c 4943 454e 5345 2d32 2e30 0a0a 556e  /LICENSE-2.0..Un\n+000001f0: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n+00000200: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n+00000210: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n+00000220: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n+00000230: 650a 6469 7374 7269 6275 7465 6420 756e  e.distributed un\n+00000240: 6465 7220 7468 6520 4c69 6365 6e73 6520  der the License \n+00000250: 6973 2064 6973 7472 6962 7574 6564 206f  is distributed o\n+00000260: 6e20 616e 2022 4153 2049 5322 2042 4153  n an \"AS IS\" BAS\n+00000270: 4953 2c0a 5749 5448 4f55 5420 5741 5252  IS,.WITHOUT WARR\n+00000280: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n+00000290: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n+000002a0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n+000002b0: 206f 7220 696d 706c 6965 642e 0a53 6565   or implied..See\n+000002c0: 2074 6865 204c 6963 656e 7365 2066 6f72   the License for\n+000002d0: 2074 6865 2073 7065 6369 6669 6320 6c61   the specific la\n+000002e0: 6e67 7561 6765 2067 6f76 6572 6e69 6e67  nguage governing\n+000002f0: 2070 6572 6d69 7373 696f 6e73 2061 6e64   permissions and\n+00000300: 0a6c 696d 6974 6174 696f 6e73 2075 6e64  .limitations und\n+00000310: 6572 2074 6865 204c 6963 656e 7365 2e0a  er the License..\n+00000320: 2d2d 3e0a 3c70 726f 6a65 6374 2078 7369  -->.<project xsi\n+00000330: 3a73 6368 656d 614c 6f63 6174 696f 6e3d  :schemaLocation=\n+00000340: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+00000350: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+00000360: 2e30 2068 7474 7073 3a2f 2f6d 6176 656e  .0 https://maven\n+00000370: 2e61 7061 6368 652e 6f72 672f 7873 642f  .apache.org/xsd/\n+00000380: 6d61 7665 6e2d 342e 302e 302e 7873 6422  maven-4.0.0.xsd\"\n+00000390: 2078 6d6c 6e73 3d22 6874 7470 3a2f 2f6d   xmlns=\"http://m\n+000003a0: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+000003b0: 504f 4d2f 342e 302e 3022 0a20 2020 2078  POM/4.0.0\".    x\n+000003c0: 6d6c 6e73 3a78 7369 3d22 6874 7470 3a2f  mlns:xsi=\"http:/\n+000003d0: 2f77 7777 2e77 332e 6f72 672f 3230 3031  /www.w3.org/2001\n+000003e0: 2f58 4d4c 5363 6865 6d61 2d69 6e73 7461  /XMLSchema-insta\n+000003f0: 6e63 6522 3e0a 2020 3c6d 6f64 656c 5665  nce\">.  <modelVe\n+00000400: 7273 696f 6e3e 342e 302e 303c 2f6d 6f64  rsion>4.0.0</mod\n+00000410: 656c 5665 7273 696f 6e3e 0a20 203c 7061  elVersion>.  <pa\n+00000420: 7265 6e74 3e0a 2020 2020 3c67 726f 7570  rent>.    <group\n+00000430: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+00000440: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000450: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000460: 6262 6f2d 7365 7269 616c 697a 6174 696f  bbo-serializatio\n+00000470: 6e3c 2f61 7274 6966 6163 7449 643e 0a20  n</artifactId>. \n+00000480: 2020 203c 7665 7273 696f 6e3e 322e 372e     <version>2.7.\n+00000490: 3130 3c2f 7665 7273 696f 6e3e 0a20 203c  10</version>.  <\n+000004a0: 2f70 6172 656e 743e 0a20 203c 6772 6f75  /parent>.  <grou\n+000004b0: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n+000004c0: 7562 626f 3c2f 6772 6f75 7049 643e 0a20  ubbo</groupId>. \n+000004d0: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+000004e0: 626f 2d73 6572 6961 6c69 7a61 7469 6f6e  bo-serialization\n+000004f0: 2d61 7069 3c2f 6172 7469 6661 6374 4964  -api</artifactId\n+00000500: 3e0a 2020 3c76 6572 7369 6f6e 3e32 2e37  >.  <version>2.7\n+00000510: 2e31 303c 2f76 6572 7369 6f6e 3e0a 2020  .10</version>.  \n+00000520: 3c6e 616d 653e 247b 7072 6f6a 6563 742e  <name>${project.\n+00000530: 6172 7469 6661 6374 4964 7d3c 2f6e 616d  artifactId}</nam\n+00000540: 653e 0a20 203c 6465 7363 7269 7074 696f  e>.  <descriptio\n+00000550: 6e3e 5468 6520 7365 7269 616c 697a 6174  n>The serializat\n+00000560: 696f 6e20 696e 7465 7266 6163 6520 6d6f  ion interface mo\n+00000570: 6475 6c65 206f 6620 6475 6262 6f20 7072  dule of dubbo pr\n+00000580: 6f6a 6563 743c 2f64 6573 6372 6970 7469  oject</descripti\n+00000590: 6f6e 3e0a 2020 3c6c 6963 656e 7365 733e  on>.  <licenses>\n+000005a0: 0a20 2020 203c 6c69 6365 6e73 653e 0a20  .    <license>. \n+000005b0: 2020 2020 203c 6e61 6d65 3e41 7061 6368       <name>Apach\n+000005c0: 6520 4c69 6365 6e73 652c 2056 6572 7369  e License, Versi\n+000005d0: 6f6e 2032 2e30 3c2f 6e61 6d65 3e0a 2020  on 2.0</name>.  \n+000005e0: 2020 2020 3c75 726c 3e68 7474 703a 2f2f      <url>http://\n+000005f0: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n+00000600: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n+00000610: 322e 303c 2f75 726c 3e0a 2020 2020 2020  2.0</url>.      \n+00000620: 3c64 6973 7472 6962 7574 696f 6e3e 7265  <distribution>re\n+00000630: 706f 3c2f 6469 7374 7269 6275 7469 6f6e  po</distribution\n+00000640: 3e0a 2020 2020 3c2f 6c69 6365 6e73 653e  >.    </license>\n+00000650: 0a20 203c 2f6c 6963 656e 7365 733e 0a20  .  </licenses>. \n+00000660: 203c 7072 6f70 6572 7469 6573 3e0a 2020   <properties>.  \n+00000670: 2020 3c73 6b69 705f 6d61 7665 6e5f 6465    <skip_maven_de\n+00000680: 706c 6f79 3e66 616c 7365 3c2f 736b 6970  ploy>false</skip\n+00000690: 5f6d 6176 656e 5f64 6570 6c6f 793e 0a20  _maven_deploy>. \n+000006a0: 203c 2f70 726f 7065 7274 6965 733e 0a20   </properties>. \n+000006b0: 203c 6465 7065 6e64 656e 6369 6573 3e0a   <dependencies>.\n+000006c0: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+000006d0: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+000006e0: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+000006f0: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+00000700: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+00000710: 626f 2d63 6f6d 6d6f 6e3c 2f61 7274 6966  bo-common</artif\n+00000720: 6163 7449 643e 0a20 2020 2020 203c 7665  actId>.      <ve\n+00000730: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n+00000740: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n+00000750: 2f76 6572 7369 6f6e 3e0a 2020 2020 3c2f  /version>.    </\n+00000760: 6465 7065 6e64 656e 6379 3e0a 2020 3c2f  dependency>.  </\n+00000770: 6465 7065 6e64 656e 6369 6573 3e0a 3c2f  dependencies>.</\n+00000780: 7072 6f6a 6563 743e 0a                   project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-serialization-fastjson/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-serialization-fastjson/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,132 +1,129 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 4c69  F-8\"?>..<!--..Li\n-00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n-00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n-00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n-00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n-00000070: 0d0a 636f 6e74 7269 6275 746f 7220 6c69  ..contributor li\n-00000080: 6365 6e73 6520 6167 7265 656d 656e 7473  cense agreements\n-00000090: 2e20 2053 6565 2074 6865 204e 4f54 4943  .  See the NOTIC\n-000000a0: 4520 6669 6c65 2064 6973 7472 6962 7574  E file distribut\n-000000b0: 6564 2077 6974 680d 0a74 6869 7320 776f  ed with..this wo\n-000000c0: 726b 2066 6f72 2061 6464 6974 696f 6e61  rk for additiona\n-000000d0: 6c20 696e 666f 726d 6174 696f 6e20 7265  l information re\n-000000e0: 6761 7264 696e 6720 636f 7079 7269 6768  garding copyrigh\n-000000f0: 7420 6f77 6e65 7273 6869 702e 0d0a 5468  t ownership...Th\n-00000100: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000110: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000120: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000130: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000140: 6e20 322e 300d 0a28 7468 6520 224c 6963  n 2.0..(the \"Lic\n-00000150: 656e 7365 2229 3b20 796f 7520 6d61 7920  ense\"); you may \n-00000160: 6e6f 7420 7573 6520 7468 6973 2066 696c  not use this fil\n-00000170: 6520 6578 6365 7074 2069 6e20 636f 6d70  e except in comp\n-00000180: 6c69 616e 6365 2077 6974 680d 0a74 6865  liance with..the\n-00000190: 204c 6963 656e 7365 2e20 2059 6f75 206d   License.  You m\n-000001a0: 6179 206f 6274 6169 6e20 6120 636f 7079  ay obtain a copy\n-000001b0: 206f 6620 7468 6520 4c69 6365 6e73 6520   of the License \n-000001c0: 6174 0d0a 0d0a 2020 2020 2068 7474 703a  at....     http:\n-000001d0: 2f2f 7777 772e 6170 6163 6865 2e6f 7267  //www.apache.org\n-000001e0: 2f6c 6963 656e 7365 732f 4c49 4345 4e53  /licenses/LICENS\n-000001f0: 452d 322e 300d 0a0d 0a55 6e6c 6573 7320  E-2.0....Unless \n-00000200: 7265 7175 6972 6564 2062 7920 6170 706c  required by appl\n-00000210: 6963 6162 6c65 206c 6177 206f 7220 6167  icable law or ag\n-00000220: 7265 6564 2074 6f20 696e 2077 7269 7469  reed to in writi\n-00000230: 6e67 2c20 736f 6674 7761 7265 0d0a 6469  ng, software..di\n-00000240: 7374 7269 6275 7465 6420 756e 6465 7220  stributed under \n-00000250: 7468 6520 4c69 6365 6e73 6520 6973 2064  the License is d\n-00000260: 6973 7472 6962 7574 6564 206f 6e20 616e  istributed on an\n-00000270: 2022 4153 2049 5322 2042 4153 4953 2c0d   \"AS IS\" BASIS,.\n-00000280: 0a57 4954 484f 5554 2057 4152 5241 4e54  .WITHOUT WARRANT\n-00000290: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n-000002a0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n-000002b0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n-000002c0: 2069 6d70 6c69 6564 2e0d 0a53 6565 2074   implied...See t\n-000002d0: 6865 204c 6963 656e 7365 2066 6f72 2074  he License for t\n-000002e0: 6865 2073 7065 6369 6669 6320 6c61 6e67  he specific lang\n-000002f0: 7561 6765 2067 6f76 6572 6e69 6e67 2070  uage governing p\n-00000300: 6572 6d69 7373 696f 6e73 2061 6e64 0d0a  ermissions and..\n-00000310: 6c69 6d69 7461 7469 6f6e 7320 756e 6465  limitations unde\n-00000320: 7220 7468 6520 4c69 6365 6e73 652e 0d0a  r the License...\n-00000330: 2d2d 3e0d 0a3c 7072 6f6a 6563 7420 7873  -->..<project xs\n-00000340: 693a 7363 6865 6d61 4c6f 6361 7469 6f6e  i:schemaLocation\n-00000350: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-00000360: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-00000370: 302e 3020 6874 7470 733a 2f2f 6d61 7665  0.0 https://mave\n-00000380: 6e2e 6170 6163 6865 2e6f 7267 2f78 7364  n.apache.org/xsd\n-00000390: 2f6d 6176 656e 2d34 2e30 2e30 2e78 7364  /maven-4.0.0.xsd\n-000003a0: 2220 786d 6c6e 733d 2268 7474 703a 2f2f  \" xmlns=\"http://\n-000003b0: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003c0: 2f50 4f4d 2f34 2e30 2e30 220d 0a20 2020  /POM/4.0.0\"..   \n-000003d0: 2078 6d6c 6e73 3a78 7369 3d22 6874 7470   xmlns:xsi=\"http\n-000003e0: 3a2f 2f77 7777 2e77 332e 6f72 672f 3230  ://www.w3.org/20\n-000003f0: 3031 2f58 4d4c 5363 6865 6d61 2d69 6e73  01/XMLSchema-ins\n-00000400: 7461 6e63 6522 3e0d 0a20 203c 6d6f 6465  tance\">..  <mode\n-00000410: 6c56 6572 7369 6f6e 3e34 2e30 2e30 3c2f  lVersion>4.0.0</\n-00000420: 6d6f 6465 6c56 6572 7369 6f6e 3e0d 0a20  modelVersion>.. \n-00000430: 203c 7061 7265 6e74 3e0d 0a20 2020 203c   <parent>..    <\n-00000440: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n-00000450: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n-00000460: 643e 0d0a 2020 2020 3c61 7274 6966 6163  d>..    <artifac\n-00000470: 7449 643e 6475 6262 6f2d 7365 7269 616c  tId>dubbo-serial\n-00000480: 697a 6174 696f 6e3c 2f61 7274 6966 6163  ization</artifac\n-00000490: 7449 643e 0d0a 2020 2020 3c76 6572 7369  tId>..    <versi\n-000004a0: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n-000004b0: 6f6e 3e0d 0a20 203c 2f70 6172 656e 743e  on>..  </parent>\n-000004c0: 0d0a 2020 3c67 726f 7570 4964 3e6f 7267  ..  <groupId>org\n-000004d0: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-000004e0: 726f 7570 4964 3e0d 0a20 203c 6172 7469  roupId>..  <arti\n-000004f0: 6661 6374 4964 3e64 7562 626f 2d73 6572  factId>dubbo-ser\n-00000500: 6961 6c69 7a61 7469 6f6e 2d66 6173 746a  ialization-fastj\n-00000510: 736f 6e3c 2f61 7274 6966 6163 7449 643e  son</artifactId>\n-00000520: 0d0a 2020 3c76 6572 7369 6f6e 3e32 2e37  ..  <version>2.7\n-00000530: 2e31 303c 2f76 6572 7369 6f6e 3e0d 0a20  .10</version>.. \n-00000540: 203c 6e61 6d65 3e24 7b70 726f 6a65 6374   <name>${project\n-00000550: 2e61 7274 6966 6163 7449 647d 3c2f 6e61  .artifactId}</na\n-00000560: 6d65 3e0d 0a20 203c 6465 7363 7269 7074  me>..  <descript\n-00000570: 696f 6e3e 5468 6520 6661 7374 6a73 6f6e  ion>The fastjson\n-00000580: 2073 6572 6961 6c69 7a61 7469 6f6e 206d   serialization m\n-00000590: 6f64 756c 6520 6f66 2064 7562 626f 2070  odule of dubbo p\n-000005a0: 726f 6a65 6374 3c2f 6465 7363 7269 7074  roject</descript\n-000005b0: 696f 6e3e 0d0a 2020 3c6c 6963 656e 7365  ion>..  <license\n-000005c0: 733e 0d0a 2020 2020 3c6c 6963 656e 7365  s>..    <license\n-000005d0: 3e0d 0a20 2020 2020 203c 6e61 6d65 3e41  >..      <name>A\n-000005e0: 7061 6368 6520 4c69 6365 6e73 652c 2056  pache License, V\n-000005f0: 6572 7369 6f6e 2032 2e30 3c2f 6e61 6d65  ersion 2.0</name\n-00000600: 3e0d 0a20 2020 2020 203c 7572 6c3e 6874  >..      <url>ht\n-00000610: 7470 3a2f 2f77 7777 2e61 7061 6368 652e  tp://www.apache.\n-00000620: 6f72 672f 6c69 6365 6e73 6573 2f4c 4943  org/licenses/LIC\n-00000630: 454e 5345 2d32 2e30 3c2f 7572 6c3e 0d0a  ENSE-2.0</url>..\n-00000640: 2020 2020 2020 3c64 6973 7472 6962 7574        <distribut\n-00000650: 696f 6e3e 7265 706f 3c2f 6469 7374 7269  ion>repo</distri\n-00000660: 6275 7469 6f6e 3e0d 0a20 2020 203c 2f6c  bution>..    </l\n-00000670: 6963 656e 7365 3e0d 0a20 203c 2f6c 6963  icense>..  </lic\n-00000680: 656e 7365 733e 0d0a 2020 3c70 726f 7065  enses>..  <prope\n-00000690: 7274 6965 733e 0d0a 2020 2020 3c73 6b69  rties>..    <ski\n-000006a0: 705f 6d61 7665 6e5f 6465 706c 6f79 3e66  p_maven_deploy>f\n-000006b0: 616c 7365 3c2f 736b 6970 5f6d 6176 656e  alse</skip_maven\n-000006c0: 5f64 6570 6c6f 793e 0d0a 2020 3c2f 7072  _deploy>..  </pr\n-000006d0: 6f70 6572 7469 6573 3e0d 0a20 203c 6465  operties>..  <de\n-000006e0: 7065 6e64 656e 6369 6573 3e0d 0a20 2020  pendencies>..   \n-000006f0: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-00000700: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n-00000710: 672e 6170 6163 6865 2e64 7562 626f 3c2f  g.apache.dubbo</\n-00000720: 6772 6f75 7049 643e 0d0a 2020 2020 2020  groupId>..      \n-00000730: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n-00000740: 6f2d 7365 7269 616c 697a 6174 696f 6e2d  o-serialization-\n-00000750: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n-00000760: 0d0a 2020 2020 2020 3c76 6572 7369 6f6e  ..      <version\n-00000770: 3e24 7b70 726f 6a65 6374 2e70 6172 656e  >${project.paren\n-00000780: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n-00000790: 696f 6e3e 0d0a 2020 2020 3c2f 6465 7065  ion>..    </depe\n-000007a0: 6e64 656e 6379 3e0d 0a20 2020 203c 6465  ndency>..    <de\n-000007b0: 7065 6e64 656e 6379 3e0d 0a20 2020 2020  pendency>..     \n-000007c0: 203c 6772 6f75 7049 643e 636f 6d2e 616c   <groupId>com.al\n-000007d0: 6962 6162 613c 2f67 726f 7570 4964 3e0d  ibaba</groupId>.\n-000007e0: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-000007f0: 4964 3e66 6173 746a 736f 6e3c 2f61 7274  Id>fastjson</art\n-00000800: 6966 6163 7449 643e 0d0a 2020 2020 3c2f  ifactId>..    </\n-00000810: 6465 7065 6e64 656e 6379 3e0d 0a20 203c  dependency>..  <\n-00000820: 2f64 6570 656e 6465 6e63 6965 733e 0d0a  /dependencies>..\n-00000830: 3c2f 7072 6f6a 6563 743e 0d0a            </project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 4c69 6365  F-8\"?>.<!--.Lice\n+00000030: 6e73 6564 2074 6f20 7468 6520 4170 6163  nsed to the Apac\n+00000040: 6865 2053 6f66 7477 6172 6520 466f 756e  he Software Foun\n+00000050: 6461 7469 6f6e 2028 4153 4629 2075 6e64  dation (ASF) und\n+00000060: 6572 206f 6e65 206f 7220 6d6f 7265 0a63  er one or more.c\n+00000070: 6f6e 7472 6962 7574 6f72 206c 6963 656e  ontributor licen\n+00000080: 7365 2061 6772 6565 6d65 6e74 732e 2020  se agreements.  \n+00000090: 5365 6520 7468 6520 4e4f 5449 4345 2066  See the NOTICE f\n+000000a0: 696c 6520 6469 7374 7269 6275 7465 6420  ile distributed \n+000000b0: 7769 7468 0a74 6869 7320 776f 726b 2066  with.this work f\n+000000c0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n+000000d0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n+000000e0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n+000000f0: 6e65 7273 6869 702e 0a54 6865 2041 5346  nership..The ASF\n+00000100: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000110: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000120: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000130: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000140: 0a28 7468 6520 224c 6963 656e 7365 2229  .(the \"License\")\n+00000150: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n+00000160: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n+00000170: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n+00000180: 2077 6974 680a 7468 6520 4c69 6365 6e73   with.the Licens\n+00000190: 652e 2020 596f 7520 6d61 7920 6f62 7461  e.  You may obta\n+000001a0: 696e 2061 2063 6f70 7920 6f66 2074 6865  in a copy of the\n+000001b0: 204c 6963 656e 7365 2061 740a 0a20 2020   License at..   \n+000001c0: 2020 6874 7470 3a2f 2f77 7777 2e61 7061    http://www.apa\n+000001d0: 6368 652e 6f72 672f 6c69 6365 6e73 6573  che.org/licenses\n+000001e0: 2f4c 4943 454e 5345 2d32 2e30 0a0a 556e  /LICENSE-2.0..Un\n+000001f0: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n+00000200: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n+00000210: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n+00000220: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n+00000230: 650a 6469 7374 7269 6275 7465 6420 756e  e.distributed un\n+00000240: 6465 7220 7468 6520 4c69 6365 6e73 6520  der the License \n+00000250: 6973 2064 6973 7472 6962 7574 6564 206f  is distributed o\n+00000260: 6e20 616e 2022 4153 2049 5322 2042 4153  n an \"AS IS\" BAS\n+00000270: 4953 2c0a 5749 5448 4f55 5420 5741 5252  IS,.WITHOUT WARR\n+00000280: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n+00000290: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n+000002a0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n+000002b0: 206f 7220 696d 706c 6965 642e 0a53 6565   or implied..See\n+000002c0: 2074 6865 204c 6963 656e 7365 2066 6f72   the License for\n+000002d0: 2074 6865 2073 7065 6369 6669 6320 6c61   the specific la\n+000002e0: 6e67 7561 6765 2067 6f76 6572 6e69 6e67  nguage governing\n+000002f0: 2070 6572 6d69 7373 696f 6e73 2061 6e64   permissions and\n+00000300: 0a6c 696d 6974 6174 696f 6e73 2075 6e64  .limitations und\n+00000310: 6572 2074 6865 204c 6963 656e 7365 2e0a  er the License..\n+00000320: 2d2d 3e0a 3c70 726f 6a65 6374 2078 7369  -->.<project xsi\n+00000330: 3a73 6368 656d 614c 6f63 6174 696f 6e3d  :schemaLocation=\n+00000340: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+00000350: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+00000360: 2e30 2068 7474 7073 3a2f 2f6d 6176 656e  .0 https://maven\n+00000370: 2e61 7061 6368 652e 6f72 672f 7873 642f  .apache.org/xsd/\n+00000380: 6d61 7665 6e2d 342e 302e 302e 7873 6422  maven-4.0.0.xsd\"\n+00000390: 2078 6d6c 6e73 3d22 6874 7470 3a2f 2f6d   xmlns=\"http://m\n+000003a0: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+000003b0: 504f 4d2f 342e 302e 3022 0a20 2020 2078  POM/4.0.0\".    x\n+000003c0: 6d6c 6e73 3a78 7369 3d22 6874 7470 3a2f  mlns:xsi=\"http:/\n+000003d0: 2f77 7777 2e77 332e 6f72 672f 3230 3031  /www.w3.org/2001\n+000003e0: 2f58 4d4c 5363 6865 6d61 2d69 6e73 7461  /XMLSchema-insta\n+000003f0: 6e63 6522 3e0a 2020 3c6d 6f64 656c 5665  nce\">.  <modelVe\n+00000400: 7273 696f 6e3e 342e 302e 303c 2f6d 6f64  rsion>4.0.0</mod\n+00000410: 656c 5665 7273 696f 6e3e 0a20 203c 7061  elVersion>.  <pa\n+00000420: 7265 6e74 3e0a 2020 2020 3c67 726f 7570  rent>.    <group\n+00000430: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+00000440: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000450: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000460: 6262 6f2d 7365 7269 616c 697a 6174 696f  bbo-serializatio\n+00000470: 6e3c 2f61 7274 6966 6163 7449 643e 0a20  n</artifactId>. \n+00000480: 2020 203c 7665 7273 696f 6e3e 322e 372e     <version>2.7.\n+00000490: 3130 3c2f 7665 7273 696f 6e3e 0a20 203c  10</version>.  <\n+000004a0: 2f70 6172 656e 743e 0a20 203c 6772 6f75  /parent>.  <grou\n+000004b0: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n+000004c0: 7562 626f 3c2f 6772 6f75 7049 643e 0a20  ubbo</groupId>. \n+000004d0: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+000004e0: 626f 2d73 6572 6961 6c69 7a61 7469 6f6e  bo-serialization\n+000004f0: 2d66 6173 746a 736f 6e3c 2f61 7274 6966  -fastjson</artif\n+00000500: 6163 7449 643e 0a20 203c 7665 7273 696f  actId>.  <versio\n+00000510: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n+00000520: 6e3e 0a20 203c 6e61 6d65 3e24 7b70 726f  n>.  <name>${pro\n+00000530: 6a65 6374 2e61 7274 6966 6163 7449 647d  ject.artifactId}\n+00000540: 3c2f 6e61 6d65 3e0a 2020 3c64 6573 6372  </name>.  <descr\n+00000550: 6970 7469 6f6e 3e54 6865 2066 6173 746a  iption>The fastj\n+00000560: 736f 6e20 7365 7269 616c 697a 6174 696f  son serializatio\n+00000570: 6e20 6d6f 6475 6c65 206f 6620 6475 6262  n module of dubb\n+00000580: 6f20 7072 6f6a 6563 743c 2f64 6573 6372  o project</descr\n+00000590: 6970 7469 6f6e 3e0a 2020 3c6c 6963 656e  iption>.  <licen\n+000005a0: 7365 733e 0a20 2020 203c 6c69 6365 6e73  ses>.    <licens\n+000005b0: 653e 0a20 2020 2020 203c 6e61 6d65 3e41  e>.      <name>A\n+000005c0: 7061 6368 6520 4c69 6365 6e73 652c 2056  pache License, V\n+000005d0: 6572 7369 6f6e 2032 2e30 3c2f 6e61 6d65  ersion 2.0</name\n+000005e0: 3e0a 2020 2020 2020 3c75 726c 3e68 7474  >.      <url>htt\n+000005f0: 703a 2f2f 7777 772e 6170 6163 6865 2e6f  p://www.apache.o\n+00000600: 7267 2f6c 6963 656e 7365 732f 4c49 4345  rg/licenses/LICE\n+00000610: 4e53 452d 322e 303c 2f75 726c 3e0a 2020  NSE-2.0</url>.  \n+00000620: 2020 2020 3c64 6973 7472 6962 7574 696f      <distributio\n+00000630: 6e3e 7265 706f 3c2f 6469 7374 7269 6275  n>repo</distribu\n+00000640: 7469 6f6e 3e0a 2020 2020 3c2f 6c69 6365  tion>.    </lice\n+00000650: 6e73 653e 0a20 203c 2f6c 6963 656e 7365  nse>.  </license\n+00000660: 733e 0a20 203c 7072 6f70 6572 7469 6573  s>.  <properties\n+00000670: 3e0a 2020 2020 3c73 6b69 705f 6d61 7665  >.    <skip_mave\n+00000680: 6e5f 6465 706c 6f79 3e66 616c 7365 3c2f  n_deploy>false</\n+00000690: 736b 6970 5f6d 6176 656e 5f64 6570 6c6f  skip_maven_deplo\n+000006a0: 793e 0a20 203c 2f70 726f 7065 7274 6965  y>.  </propertie\n+000006b0: 733e 0a20 203c 6465 7065 6e64 656e 6369  s>.  <dependenci\n+000006c0: 6573 3e0a 2020 2020 3c64 6570 656e 6465  es>.    <depende\n+000006d0: 6e63 793e 0a20 2020 2020 203c 6772 6f75  ncy>.      <grou\n+000006e0: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n+000006f0: 7562 626f 3c2f 6772 6f75 7049 643e 0a20  ubbo</groupId>. \n+00000700: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n+00000710: 3e64 7562 626f 2d73 6572 6961 6c69 7a61  >dubbo-serializa\n+00000720: 7469 6f6e 2d61 7069 3c2f 6172 7469 6661  tion-api</artifa\n+00000730: 6374 4964 3e0a 2020 2020 2020 3c76 6572  ctId>.      <ver\n+00000740: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n+00000750: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n+00000760: 7665 7273 696f 6e3e 0a20 2020 203c 2f64  version>.    </d\n+00000770: 6570 656e 6465 6e63 793e 0a20 2020 203c  ependency>.    <\n+00000780: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000790: 2020 3c67 726f 7570 4964 3e63 6f6d 2e61    <groupId>com.a\n+000007a0: 6c69 6261 6261 3c2f 6772 6f75 7049 643e  libaba</groupId>\n+000007b0: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+000007c0: 4964 3e66 6173 746a 736f 6e3c 2f61 7274  Id>fastjson</art\n+000007d0: 6966 6163 7449 643e 0a20 2020 203c 2f64  ifactId>.    </d\n+000007e0: 6570 656e 6465 6e63 793e 0a20 203c 2f64  ependency>.  </d\n+000007f0: 6570 656e 6465 6e63 6965 733e 0a3c 2f70  ependencies>.</p\n+00000800: 726f 6a65 6374 3e0a                      roject>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-serialization-fst/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-serialization-fst/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,133 +1,130 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d73 6572 6961 6c69 7a61 7469 6f6e  bo-serialization\n-000004a0: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-000004b0: 2020 203c 7665 7273 696f 6e3e 322e 372e     <version>2.7.\n-000004c0: 3130 3c2f 7665 7273 696f 6e3e 0d0a 2020  10</version>..  \n-000004d0: 3c2f 7061 7265 6e74 3e0d 0a20 203c 6772  </parent>..  <gr\n-000004e0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n-000004f0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n-00000500: 0d0a 2020 3c61 7274 6966 6163 7449 643e  ..  <artifactId>\n-00000510: 6475 6262 6f2d 7365 7269 616c 697a 6174  dubbo-serializat\n-00000520: 696f 6e2d 6673 743c 2f61 7274 6966 6163  ion-fst</artifac\n-00000530: 7449 643e 0d0a 2020 3c76 6572 7369 6f6e  tId>..  <version\n-00000540: 3e32 2e37 2e31 303c 2f76 6572 7369 6f6e  >2.7.10</version\n-00000550: 3e0d 0a20 203c 6e61 6d65 3e24 7b70 726f  >..  <name>${pro\n-00000560: 6a65 6374 2e61 7274 6966 6163 7449 647d  ject.artifactId}\n-00000570: 3c2f 6e61 6d65 3e0d 0a20 203c 6465 7363  </name>..  <desc\n-00000580: 7269 7074 696f 6e3e 5468 6520 6673 7420  ription>The fst \n-00000590: 7365 7269 616c 697a 6174 696f 6e20 6d6f  serialization mo\n-000005a0: 6475 6c65 206f 6620 6475 6262 6f20 7072  dule of dubbo pr\n-000005b0: 6f6a 6563 743c 2f64 6573 6372 6970 7469  oject</descripti\n-000005c0: 6f6e 3e0d 0a20 203c 6c69 6365 6e73 6573  on>..  <licenses\n-000005d0: 3e0d 0a20 2020 203c 6c69 6365 6e73 653e  >..    <license>\n-000005e0: 0d0a 2020 2020 2020 3c6e 616d 653e 4170  ..      <name>Ap\n-000005f0: 6163 6865 204c 6963 656e 7365 2c20 5665  ache License, Ve\n-00000600: 7273 696f 6e20 322e 303c 2f6e 616d 653e  rsion 2.0</name>\n-00000610: 0d0a 2020 2020 2020 3c75 726c 3e68 7474  ..      <url>htt\n-00000620: 703a 2f2f 7777 772e 6170 6163 6865 2e6f  p://www.apache.o\n-00000630: 7267 2f6c 6963 656e 7365 732f 4c49 4345  rg/licenses/LICE\n-00000640: 4e53 452d 322e 303c 2f75 726c 3e0d 0a20  NSE-2.0</url>.. \n-00000650: 2020 2020 203c 6469 7374 7269 6275 7469       <distributi\n-00000660: 6f6e 3e72 6570 6f3c 2f64 6973 7472 6962  on>repo</distrib\n-00000670: 7574 696f 6e3e 0d0a 2020 2020 3c2f 6c69  ution>..    </li\n-00000680: 6365 6e73 653e 0d0a 2020 3c2f 6c69 6365  cense>..  </lice\n-00000690: 6e73 6573 3e0d 0a20 203c 7072 6f70 6572  nses>..  <proper\n-000006a0: 7469 6573 3e0d 0a20 2020 203c 736b 6970  ties>..    <skip\n-000006b0: 5f6d 6176 656e 5f64 6570 6c6f 793e 6661  _maven_deploy>fa\n-000006c0: 6c73 653c 2f73 6b69 705f 6d61 7665 6e5f  lse</skip_maven_\n-000006d0: 6465 706c 6f79 3e0d 0a20 203c 2f70 726f  deploy>..  </pro\n-000006e0: 7065 7274 6965 733e 0d0a 2020 3c64 6570  perties>..  <dep\n-000006f0: 656e 6465 6e63 6965 733e 0d0a 2020 2020  endencies>..    \n-00000700: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-00000710: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n-00000720: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-00000730: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-00000740: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000750: 2d73 6572 6961 6c69 7a61 7469 6f6e 2d61  -serialization-a\n-00000760: 7069 3c2f 6172 7469 6661 6374 4964 3e0d  pi</artifactId>.\n-00000770: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n-00000780: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n-00000790: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n-000007a0: 6f6e 3e0d 0a20 2020 203c 2f64 6570 656e  on>..    </depen\n-000007b0: 6465 6e63 793e 0d0a 2020 2020 3c64 6570  dency>..    <dep\n-000007c0: 656e 6465 6e63 793e 0d0a 2020 2020 2020  endency>..      \n-000007d0: 3c67 726f 7570 4964 3e64 652e 7275 6564  <groupId>de.rued\n-000007e0: 6967 6572 6d6f 656c 6c65 723c 2f67 726f  igermoeller</gro\n-000007f0: 7570 4964 3e0d 0a20 2020 2020 203c 6172  upId>..      <ar\n-00000800: 7469 6661 6374 4964 3e66 7374 3c2f 6172  tifactId>fst</ar\n-00000810: 7469 6661 6374 4964 3e0d 0a20 2020 203c  tifactId>..    <\n-00000820: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-00000830: 3c2f 6465 7065 6e64 656e 6369 6573 3e0d  </dependencies>.\n-00000840: 0a3c 2f70 726f 6a65 6374 3e0d 0a         .</project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d73 6572  factId>dubbo-ser\n+00000480: 6961 6c69 7a61 7469 6f6e 3c2f 6172 7469  ialization</arti\n+00000490: 6661 6374 4964 3e0a 2020 2020 3c76 6572  factId>.    <ver\n+000004a0: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n+000004b0: 7369 6f6e 3e0a 2020 3c2f 7061 7265 6e74  sion>.  </parent\n+000004c0: 3e0a 2020 3c67 726f 7570 4964 3e6f 7267  >.  <groupId>org\n+000004d0: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n+000004e0: 726f 7570 4964 3e0a 2020 3c61 7274 6966  roupId>.  <artif\n+000004f0: 6163 7449 643e 6475 6262 6f2d 7365 7269  actId>dubbo-seri\n+00000500: 616c 697a 6174 696f 6e2d 6673 743c 2f61  alization-fst</a\n+00000510: 7274 6966 6163 7449 643e 0a20 203c 7665  rtifactId>.  <ve\n+00000520: 7273 696f 6e3e 322e 372e 3130 3c2f 7665  rsion>2.7.10</ve\n+00000530: 7273 696f 6e3e 0a20 203c 6e61 6d65 3e24  rsion>.  <name>$\n+00000540: 7b70 726f 6a65 6374 2e61 7274 6966 6163  {project.artifac\n+00000550: 7449 647d 3c2f 6e61 6d65 3e0a 2020 3c64  tId}</name>.  <d\n+00000560: 6573 6372 6970 7469 6f6e 3e54 6865 2066  escription>The f\n+00000570: 7374 2073 6572 6961 6c69 7a61 7469 6f6e  st serialization\n+00000580: 206d 6f64 756c 6520 6f66 2064 7562 626f   module of dubbo\n+00000590: 2070 726f 6a65 6374 3c2f 6465 7363 7269   project</descri\n+000005a0: 7074 696f 6e3e 0a20 203c 6c69 6365 6e73  ption>.  <licens\n+000005b0: 6573 3e0a 2020 2020 3c6c 6963 656e 7365  es>.    <license\n+000005c0: 3e0a 2020 2020 2020 3c6e 616d 653e 4170  >.      <name>Ap\n+000005d0: 6163 6865 204c 6963 656e 7365 2c20 5665  ache License, Ve\n+000005e0: 7273 696f 6e20 322e 303c 2f6e 616d 653e  rsion 2.0</name>\n+000005f0: 0a20 2020 2020 203c 7572 6c3e 6874 7470  .      <url>http\n+00000600: 3a2f 2f77 7777 2e61 7061 6368 652e 6f72  ://www.apache.or\n+00000610: 672f 6c69 6365 6e73 6573 2f4c 4943 454e  g/licenses/LICEN\n+00000620: 5345 2d32 2e30 3c2f 7572 6c3e 0a20 2020  SE-2.0</url>.   \n+00000630: 2020 203c 6469 7374 7269 6275 7469 6f6e     <distribution\n+00000640: 3e72 6570 6f3c 2f64 6973 7472 6962 7574  >repo</distribut\n+00000650: 696f 6e3e 0a20 2020 203c 2f6c 6963 656e  ion>.    </licen\n+00000660: 7365 3e0a 2020 3c2f 6c69 6365 6e73 6573  se>.  </licenses\n+00000670: 3e0a 2020 3c70 726f 7065 7274 6965 733e  >.  <properties>\n+00000680: 0a20 2020 203c 736b 6970 5f6d 6176 656e  .    <skip_maven\n+00000690: 5f64 6570 6c6f 793e 6661 6c73 653c 2f73  _deploy>false</s\n+000006a0: 6b69 705f 6d61 7665 6e5f 6465 706c 6f79  kip_maven_deploy\n+000006b0: 3e0a 2020 3c2f 7072 6f70 6572 7469 6573  >.  </properties\n+000006c0: 3e0a 2020 3c64 6570 656e 6465 6e63 6965  >.  <dependencie\n+000006d0: 733e 0a20 2020 203c 6465 7065 6e64 656e  s>.    <dependen\n+000006e0: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+000006f0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+00000700: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000710: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+00000720: 6475 6262 6f2d 7365 7269 616c 697a 6174  dubbo-serializat\n+00000730: 696f 6e2d 6170 693c 2f61 7274 6966 6163  ion-api</artifac\n+00000740: 7449 643e 0a20 2020 2020 203c 7665 7273  tId>.      <vers\n+00000750: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n+00000760: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n+00000770: 6572 7369 6f6e 3e0a 2020 2020 3c2f 6465  ersion>.    </de\n+00000780: 7065 6e64 656e 6379 3e0a 2020 2020 3c64  pendency>.    <d\n+00000790: 6570 656e 6465 6e63 793e 0a20 2020 2020  ependency>.     \n+000007a0: 203c 6772 6f75 7049 643e 6465 2e72 7565   <groupId>de.rue\n+000007b0: 6469 6765 726d 6f65 6c6c 6572 3c2f 6772  digermoeller</gr\n+000007c0: 6f75 7049 643e 0a20 2020 2020 203c 6172  oupId>.      <ar\n+000007d0: 7469 6661 6374 4964 3e66 7374 3c2f 6172  tifactId>fst</ar\n+000007e0: 7469 6661 6374 4964 3e0a 2020 2020 3c2f  tifactId>.    </\n+000007f0: 6465 7065 6e64 656e 6379 3e0a 2020 3c2f  dependency>.  </\n+00000800: 6465 7065 6e64 656e 6369 6573 3e0a 3c2f  dependencies>.</\n+00000810: 7072 6f6a 6563 743e 0a                   project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-serialization-hessian2/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-serialization-hessian2/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,132 +1,129 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 4c69  F-8\"?>..<!--..Li\n-00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n-00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n-00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n-00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n-00000070: 0d0a 636f 6e74 7269 6275 746f 7220 6c69  ..contributor li\n-00000080: 6365 6e73 6520 6167 7265 656d 656e 7473  cense agreements\n-00000090: 2e20 2053 6565 2074 6865 204e 4f54 4943  .  See the NOTIC\n-000000a0: 4520 6669 6c65 2064 6973 7472 6962 7574  E file distribut\n-000000b0: 6564 2077 6974 680d 0a74 6869 7320 776f  ed with..this wo\n-000000c0: 726b 2066 6f72 2061 6464 6974 696f 6e61  rk for additiona\n-000000d0: 6c20 696e 666f 726d 6174 696f 6e20 7265  l information re\n-000000e0: 6761 7264 696e 6720 636f 7079 7269 6768  garding copyrigh\n-000000f0: 7420 6f77 6e65 7273 6869 702e 0d0a 5468  t ownership...Th\n-00000100: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000110: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000120: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000130: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000140: 6e20 322e 300d 0a28 7468 6520 224c 6963  n 2.0..(the \"Lic\n-00000150: 656e 7365 2229 3b20 796f 7520 6d61 7920  ense\"); you may \n-00000160: 6e6f 7420 7573 6520 7468 6973 2066 696c  not use this fil\n-00000170: 6520 6578 6365 7074 2069 6e20 636f 6d70  e except in comp\n-00000180: 6c69 616e 6365 2077 6974 680d 0a74 6865  liance with..the\n-00000190: 204c 6963 656e 7365 2e20 2059 6f75 206d   License.  You m\n-000001a0: 6179 206f 6274 6169 6e20 6120 636f 7079  ay obtain a copy\n-000001b0: 206f 6620 7468 6520 4c69 6365 6e73 6520   of the License \n-000001c0: 6174 0d0a 0d0a 2020 2020 2068 7474 703a  at....     http:\n-000001d0: 2f2f 7777 772e 6170 6163 6865 2e6f 7267  //www.apache.org\n-000001e0: 2f6c 6963 656e 7365 732f 4c49 4345 4e53  /licenses/LICENS\n-000001f0: 452d 322e 300d 0a0d 0a55 6e6c 6573 7320  E-2.0....Unless \n-00000200: 7265 7175 6972 6564 2062 7920 6170 706c  required by appl\n-00000210: 6963 6162 6c65 206c 6177 206f 7220 6167  icable law or ag\n-00000220: 7265 6564 2074 6f20 696e 2077 7269 7469  reed to in writi\n-00000230: 6e67 2c20 736f 6674 7761 7265 0d0a 6469  ng, software..di\n-00000240: 7374 7269 6275 7465 6420 756e 6465 7220  stributed under \n-00000250: 7468 6520 4c69 6365 6e73 6520 6973 2064  the License is d\n-00000260: 6973 7472 6962 7574 6564 206f 6e20 616e  istributed on an\n-00000270: 2022 4153 2049 5322 2042 4153 4953 2c0d   \"AS IS\" BASIS,.\n-00000280: 0a57 4954 484f 5554 2057 4152 5241 4e54  .WITHOUT WARRANT\n-00000290: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n-000002a0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n-000002b0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n-000002c0: 2069 6d70 6c69 6564 2e0d 0a53 6565 2074   implied...See t\n-000002d0: 6865 204c 6963 656e 7365 2066 6f72 2074  he License for t\n-000002e0: 6865 2073 7065 6369 6669 6320 6c61 6e67  he specific lang\n-000002f0: 7561 6765 2067 6f76 6572 6e69 6e67 2070  uage governing p\n-00000300: 6572 6d69 7373 696f 6e73 2061 6e64 0d0a  ermissions and..\n-00000310: 6c69 6d69 7461 7469 6f6e 7320 756e 6465  limitations unde\n-00000320: 7220 7468 6520 4c69 6365 6e73 652e 0d0a  r the License...\n-00000330: 2d2d 3e0d 0a3c 7072 6f6a 6563 7420 7873  -->..<project xs\n-00000340: 693a 7363 6865 6d61 4c6f 6361 7469 6f6e  i:schemaLocation\n-00000350: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-00000360: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-00000370: 302e 3020 6874 7470 733a 2f2f 6d61 7665  0.0 https://mave\n-00000380: 6e2e 6170 6163 6865 2e6f 7267 2f78 7364  n.apache.org/xsd\n-00000390: 2f6d 6176 656e 2d34 2e30 2e30 2e78 7364  /maven-4.0.0.xsd\n-000003a0: 2220 786d 6c6e 733d 2268 7474 703a 2f2f  \" xmlns=\"http://\n-000003b0: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003c0: 2f50 4f4d 2f34 2e30 2e30 220d 0a20 2020  /POM/4.0.0\"..   \n-000003d0: 2078 6d6c 6e73 3a78 7369 3d22 6874 7470   xmlns:xsi=\"http\n-000003e0: 3a2f 2f77 7777 2e77 332e 6f72 672f 3230  ://www.w3.org/20\n-000003f0: 3031 2f58 4d4c 5363 6865 6d61 2d69 6e73  01/XMLSchema-ins\n-00000400: 7461 6e63 6522 3e0d 0a20 203c 6d6f 6465  tance\">..  <mode\n-00000410: 6c56 6572 7369 6f6e 3e34 2e30 2e30 3c2f  lVersion>4.0.0</\n-00000420: 6d6f 6465 6c56 6572 7369 6f6e 3e0d 0a20  modelVersion>.. \n-00000430: 203c 7061 7265 6e74 3e0d 0a20 2020 203c   <parent>..    <\n-00000440: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n-00000450: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n-00000460: 643e 0d0a 2020 2020 3c61 7274 6966 6163  d>..    <artifac\n-00000470: 7449 643e 6475 6262 6f2d 7365 7269 616c  tId>dubbo-serial\n-00000480: 697a 6174 696f 6e3c 2f61 7274 6966 6163  ization</artifac\n-00000490: 7449 643e 0d0a 2020 2020 3c76 6572 7369  tId>..    <versi\n-000004a0: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n-000004b0: 6f6e 3e0d 0a20 203c 2f70 6172 656e 743e  on>..  </parent>\n-000004c0: 0d0a 2020 3c67 726f 7570 4964 3e6f 7267  ..  <groupId>org\n-000004d0: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-000004e0: 726f 7570 4964 3e0d 0a20 203c 6172 7469  roupId>..  <arti\n-000004f0: 6661 6374 4964 3e64 7562 626f 2d73 6572  factId>dubbo-ser\n-00000500: 6961 6c69 7a61 7469 6f6e 2d68 6573 7369  ialization-hessi\n-00000510: 616e 323c 2f61 7274 6966 6163 7449 643e  an2</artifactId>\n-00000520: 0d0a 2020 3c76 6572 7369 6f6e 3e32 2e37  ..  <version>2.7\n-00000530: 2e31 303c 2f76 6572 7369 6f6e 3e0d 0a20  .10</version>.. \n-00000540: 203c 6e61 6d65 3e24 7b70 726f 6a65 6374   <name>${project\n-00000550: 2e61 7274 6966 6163 7449 647d 3c2f 6e61  .artifactId}</na\n-00000560: 6d65 3e0d 0a20 203c 6465 7363 7269 7074  me>..  <descript\n-00000570: 696f 6e3e 5468 6520 6865 7373 6961 6e32  ion>The hessian2\n-00000580: 2073 6572 6961 6c69 7a61 7469 6f6e 206d   serialization m\n-00000590: 6f64 756c 6520 6f66 2064 7562 626f 2070  odule of dubbo p\n-000005a0: 726f 6a65 6374 3c2f 6465 7363 7269 7074  roject</descript\n-000005b0: 696f 6e3e 0d0a 2020 3c6c 6963 656e 7365  ion>..  <license\n-000005c0: 733e 0d0a 2020 2020 3c6c 6963 656e 7365  s>..    <license\n-000005d0: 3e0d 0a20 2020 2020 203c 6e61 6d65 3e41  >..      <name>A\n-000005e0: 7061 6368 6520 4c69 6365 6e73 652c 2056  pache License, V\n-000005f0: 6572 7369 6f6e 2032 2e30 3c2f 6e61 6d65  ersion 2.0</name\n-00000600: 3e0d 0a20 2020 2020 203c 7572 6c3e 6874  >..      <url>ht\n-00000610: 7470 3a2f 2f77 7777 2e61 7061 6368 652e  tp://www.apache.\n-00000620: 6f72 672f 6c69 6365 6e73 6573 2f4c 4943  org/licenses/LIC\n-00000630: 454e 5345 2d32 2e30 3c2f 7572 6c3e 0d0a  ENSE-2.0</url>..\n-00000640: 2020 2020 2020 3c64 6973 7472 6962 7574        <distribut\n-00000650: 696f 6e3e 7265 706f 3c2f 6469 7374 7269  ion>repo</distri\n-00000660: 6275 7469 6f6e 3e0d 0a20 2020 203c 2f6c  bution>..    </l\n-00000670: 6963 656e 7365 3e0d 0a20 203c 2f6c 6963  icense>..  </lic\n-00000680: 656e 7365 733e 0d0a 2020 3c70 726f 7065  enses>..  <prope\n-00000690: 7274 6965 733e 0d0a 2020 2020 3c73 6b69  rties>..    <ski\n-000006a0: 705f 6d61 7665 6e5f 6465 706c 6f79 3e66  p_maven_deploy>f\n-000006b0: 616c 7365 3c2f 736b 6970 5f6d 6176 656e  alse</skip_maven\n-000006c0: 5f64 6570 6c6f 793e 0d0a 2020 3c2f 7072  _deploy>..  </pr\n-000006d0: 6f70 6572 7469 6573 3e0d 0a20 203c 6465  operties>..  <de\n-000006e0: 7065 6e64 656e 6369 6573 3e0d 0a20 2020  pendencies>..   \n-000006f0: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-00000700: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n-00000710: 672e 6170 6163 6865 2e64 7562 626f 3c2f  g.apache.dubbo</\n-00000720: 6772 6f75 7049 643e 0d0a 2020 2020 2020  groupId>..      \n-00000730: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n-00000740: 6f2d 7365 7269 616c 697a 6174 696f 6e2d  o-serialization-\n-00000750: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n-00000760: 0d0a 2020 2020 2020 3c76 6572 7369 6f6e  ..      <version\n-00000770: 3e24 7b70 726f 6a65 6374 2e70 6172 656e  >${project.paren\n-00000780: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n-00000790: 696f 6e3e 0d0a 2020 2020 3c2f 6465 7065  ion>..    </depe\n-000007a0: 6e64 656e 6379 3e0d 0a20 2020 203c 6465  ndency>..    <de\n-000007b0: 7065 6e64 656e 6379 3e0d 0a20 2020 2020  pendency>..     \n-000007c0: 203c 6772 6f75 7049 643e 636f 6d2e 616c   <groupId>com.al\n-000007d0: 6962 6162 613c 2f67 726f 7570 4964 3e0d  ibaba</groupId>.\n-000007e0: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-000007f0: 4964 3e68 6573 7369 616e 2d6c 6974 653c  Id>hessian-lite<\n-00000800: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-00000810: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-00000820: 0a20 203c 2f64 6570 656e 6465 6e63 6965  .  </dependencie\n-00000830: 733e 0d0a 3c2f 7072 6f6a 6563 743e 0d0a  s>..</project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 4c69 6365  F-8\"?>.<!--.Lice\n+00000030: 6e73 6564 2074 6f20 7468 6520 4170 6163  nsed to the Apac\n+00000040: 6865 2053 6f66 7477 6172 6520 466f 756e  he Software Foun\n+00000050: 6461 7469 6f6e 2028 4153 4629 2075 6e64  dation (ASF) und\n+00000060: 6572 206f 6e65 206f 7220 6d6f 7265 0a63  er one or more.c\n+00000070: 6f6e 7472 6962 7574 6f72 206c 6963 656e  ontributor licen\n+00000080: 7365 2061 6772 6565 6d65 6e74 732e 2020  se agreements.  \n+00000090: 5365 6520 7468 6520 4e4f 5449 4345 2066  See the NOTICE f\n+000000a0: 696c 6520 6469 7374 7269 6275 7465 6420  ile distributed \n+000000b0: 7769 7468 0a74 6869 7320 776f 726b 2066  with.this work f\n+000000c0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n+000000d0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n+000000e0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n+000000f0: 6e65 7273 6869 702e 0a54 6865 2041 5346  nership..The ASF\n+00000100: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000110: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000120: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000130: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000140: 0a28 7468 6520 224c 6963 656e 7365 2229  .(the \"License\")\n+00000150: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n+00000160: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n+00000170: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n+00000180: 2077 6974 680a 7468 6520 4c69 6365 6e73   with.the Licens\n+00000190: 652e 2020 596f 7520 6d61 7920 6f62 7461  e.  You may obta\n+000001a0: 696e 2061 2063 6f70 7920 6f66 2074 6865  in a copy of the\n+000001b0: 204c 6963 656e 7365 2061 740a 0a20 2020   License at..   \n+000001c0: 2020 6874 7470 3a2f 2f77 7777 2e61 7061    http://www.apa\n+000001d0: 6368 652e 6f72 672f 6c69 6365 6e73 6573  che.org/licenses\n+000001e0: 2f4c 4943 454e 5345 2d32 2e30 0a0a 556e  /LICENSE-2.0..Un\n+000001f0: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n+00000200: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n+00000210: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n+00000220: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n+00000230: 650a 6469 7374 7269 6275 7465 6420 756e  e.distributed un\n+00000240: 6465 7220 7468 6520 4c69 6365 6e73 6520  der the License \n+00000250: 6973 2064 6973 7472 6962 7574 6564 206f  is distributed o\n+00000260: 6e20 616e 2022 4153 2049 5322 2042 4153  n an \"AS IS\" BAS\n+00000270: 4953 2c0a 5749 5448 4f55 5420 5741 5252  IS,.WITHOUT WARR\n+00000280: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n+00000290: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n+000002a0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n+000002b0: 206f 7220 696d 706c 6965 642e 0a53 6565   or implied..See\n+000002c0: 2074 6865 204c 6963 656e 7365 2066 6f72   the License for\n+000002d0: 2074 6865 2073 7065 6369 6669 6320 6c61   the specific la\n+000002e0: 6e67 7561 6765 2067 6f76 6572 6e69 6e67  nguage governing\n+000002f0: 2070 6572 6d69 7373 696f 6e73 2061 6e64   permissions and\n+00000300: 0a6c 696d 6974 6174 696f 6e73 2075 6e64  .limitations und\n+00000310: 6572 2074 6865 204c 6963 656e 7365 2e0a  er the License..\n+00000320: 2d2d 3e0a 3c70 726f 6a65 6374 2078 7369  -->.<project xsi\n+00000330: 3a73 6368 656d 614c 6f63 6174 696f 6e3d  :schemaLocation=\n+00000340: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+00000350: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+00000360: 2e30 2068 7474 7073 3a2f 2f6d 6176 656e  .0 https://maven\n+00000370: 2e61 7061 6368 652e 6f72 672f 7873 642f  .apache.org/xsd/\n+00000380: 6d61 7665 6e2d 342e 302e 302e 7873 6422  maven-4.0.0.xsd\"\n+00000390: 2078 6d6c 6e73 3d22 6874 7470 3a2f 2f6d   xmlns=\"http://m\n+000003a0: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+000003b0: 504f 4d2f 342e 302e 3022 0a20 2020 2078  POM/4.0.0\".    x\n+000003c0: 6d6c 6e73 3a78 7369 3d22 6874 7470 3a2f  mlns:xsi=\"http:/\n+000003d0: 2f77 7777 2e77 332e 6f72 672f 3230 3031  /www.w3.org/2001\n+000003e0: 2f58 4d4c 5363 6865 6d61 2d69 6e73 7461  /XMLSchema-insta\n+000003f0: 6e63 6522 3e0a 2020 3c6d 6f64 656c 5665  nce\">.  <modelVe\n+00000400: 7273 696f 6e3e 342e 302e 303c 2f6d 6f64  rsion>4.0.0</mod\n+00000410: 656c 5665 7273 696f 6e3e 0a20 203c 7061  elVersion>.  <pa\n+00000420: 7265 6e74 3e0a 2020 2020 3c67 726f 7570  rent>.    <group\n+00000430: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+00000440: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000450: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000460: 6262 6f2d 7365 7269 616c 697a 6174 696f  bbo-serializatio\n+00000470: 6e3c 2f61 7274 6966 6163 7449 643e 0a20  n</artifactId>. \n+00000480: 2020 203c 7665 7273 696f 6e3e 322e 372e     <version>2.7.\n+00000490: 3130 3c2f 7665 7273 696f 6e3e 0a20 203c  10</version>.  <\n+000004a0: 2f70 6172 656e 743e 0a20 203c 6772 6f75  /parent>.  <grou\n+000004b0: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n+000004c0: 7562 626f 3c2f 6772 6f75 7049 643e 0a20  ubbo</groupId>. \n+000004d0: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+000004e0: 626f 2d73 6572 6961 6c69 7a61 7469 6f6e  bo-serialization\n+000004f0: 2d68 6573 7369 616e 323c 2f61 7274 6966  -hessian2</artif\n+00000500: 6163 7449 643e 0a20 203c 7665 7273 696f  actId>.  <versio\n+00000510: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n+00000520: 6e3e 0a20 203c 6e61 6d65 3e24 7b70 726f  n>.  <name>${pro\n+00000530: 6a65 6374 2e61 7274 6966 6163 7449 647d  ject.artifactId}\n+00000540: 3c2f 6e61 6d65 3e0a 2020 3c64 6573 6372  </name>.  <descr\n+00000550: 6970 7469 6f6e 3e54 6865 2068 6573 7369  iption>The hessi\n+00000560: 616e 3220 7365 7269 616c 697a 6174 696f  an2 serializatio\n+00000570: 6e20 6d6f 6475 6c65 206f 6620 6475 6262  n module of dubb\n+00000580: 6f20 7072 6f6a 6563 743c 2f64 6573 6372  o project</descr\n+00000590: 6970 7469 6f6e 3e0a 2020 3c6c 6963 656e  iption>.  <licen\n+000005a0: 7365 733e 0a20 2020 203c 6c69 6365 6e73  ses>.    <licens\n+000005b0: 653e 0a20 2020 2020 203c 6e61 6d65 3e41  e>.      <name>A\n+000005c0: 7061 6368 6520 4c69 6365 6e73 652c 2056  pache License, V\n+000005d0: 6572 7369 6f6e 2032 2e30 3c2f 6e61 6d65  ersion 2.0</name\n+000005e0: 3e0a 2020 2020 2020 3c75 726c 3e68 7474  >.      <url>htt\n+000005f0: 703a 2f2f 7777 772e 6170 6163 6865 2e6f  p://www.apache.o\n+00000600: 7267 2f6c 6963 656e 7365 732f 4c49 4345  rg/licenses/LICE\n+00000610: 4e53 452d 322e 303c 2f75 726c 3e0a 2020  NSE-2.0</url>.  \n+00000620: 2020 2020 3c64 6973 7472 6962 7574 696f      <distributio\n+00000630: 6e3e 7265 706f 3c2f 6469 7374 7269 6275  n>repo</distribu\n+00000640: 7469 6f6e 3e0a 2020 2020 3c2f 6c69 6365  tion>.    </lice\n+00000650: 6e73 653e 0a20 203c 2f6c 6963 656e 7365  nse>.  </license\n+00000660: 733e 0a20 203c 7072 6f70 6572 7469 6573  s>.  <properties\n+00000670: 3e0a 2020 2020 3c73 6b69 705f 6d61 7665  >.    <skip_mave\n+00000680: 6e5f 6465 706c 6f79 3e66 616c 7365 3c2f  n_deploy>false</\n+00000690: 736b 6970 5f6d 6176 656e 5f64 6570 6c6f  skip_maven_deplo\n+000006a0: 793e 0a20 203c 2f70 726f 7065 7274 6965  y>.  </propertie\n+000006b0: 733e 0a20 203c 6465 7065 6e64 656e 6369  s>.  <dependenci\n+000006c0: 6573 3e0a 2020 2020 3c64 6570 656e 6465  es>.    <depende\n+000006d0: 6e63 793e 0a20 2020 2020 203c 6772 6f75  ncy>.      <grou\n+000006e0: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n+000006f0: 7562 626f 3c2f 6772 6f75 7049 643e 0a20  ubbo</groupId>. \n+00000700: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n+00000710: 3e64 7562 626f 2d73 6572 6961 6c69 7a61  >dubbo-serializa\n+00000720: 7469 6f6e 2d61 7069 3c2f 6172 7469 6661  tion-api</artifa\n+00000730: 6374 4964 3e0a 2020 2020 2020 3c76 6572  ctId>.      <ver\n+00000740: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n+00000750: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n+00000760: 7665 7273 696f 6e3e 0a20 2020 203c 2f64  version>.    </d\n+00000770: 6570 656e 6465 6e63 793e 0a20 2020 203c  ependency>.    <\n+00000780: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000790: 2020 3c67 726f 7570 4964 3e63 6f6d 2e61    <groupId>com.a\n+000007a0: 6c69 6261 6261 3c2f 6772 6f75 7049 643e  libaba</groupId>\n+000007b0: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+000007c0: 4964 3e68 6573 7369 616e 2d6c 6974 653c  Id>hessian-lite<\n+000007d0: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+000007e0: 203c 2f64 6570 656e 6465 6e63 793e 0a20   </dependency>. \n+000007f0: 203c 2f64 6570 656e 6465 6e63 6965 733e   </dependencies>\n+00000800: 0a3c 2f70 726f 6a65 6374 3e0a            .</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-serialization-native-hession/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-serialization-native-hession/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,128 +1,125 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 4c69  F-8\"?>..<!--..Li\n-00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n-00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n-00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n-00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n-00000070: 0d0a 636f 6e74 7269 6275 746f 7220 6c69  ..contributor li\n-00000080: 6365 6e73 6520 6167 7265 656d 656e 7473  cense agreements\n-00000090: 2e20 2053 6565 2074 6865 204e 4f54 4943  .  See the NOTIC\n-000000a0: 4520 6669 6c65 2064 6973 7472 6962 7574  E file distribut\n-000000b0: 6564 2077 6974 680d 0a74 6869 7320 776f  ed with..this wo\n-000000c0: 726b 2066 6f72 2061 6464 6974 696f 6e61  rk for additiona\n-000000d0: 6c20 696e 666f 726d 6174 696f 6e20 7265  l information re\n-000000e0: 6761 7264 696e 6720 636f 7079 7269 6768  garding copyrigh\n-000000f0: 7420 6f77 6e65 7273 6869 702e 0d0a 5468  t ownership...Th\n-00000100: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000110: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000120: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000130: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000140: 6e20 322e 300d 0a28 7468 6520 224c 6963  n 2.0..(the \"Lic\n-00000150: 656e 7365 2229 3b20 796f 7520 6d61 7920  ense\"); you may \n-00000160: 6e6f 7420 7573 6520 7468 6973 2066 696c  not use this fil\n-00000170: 6520 6578 6365 7074 2069 6e20 636f 6d70  e except in comp\n-00000180: 6c69 616e 6365 2077 6974 680d 0a74 6865  liance with..the\n-00000190: 204c 6963 656e 7365 2e20 2059 6f75 206d   License.  You m\n-000001a0: 6179 206f 6274 6169 6e20 6120 636f 7079  ay obtain a copy\n-000001b0: 206f 6620 7468 6520 4c69 6365 6e73 6520   of the License \n-000001c0: 6174 0d0a 0d0a 2020 2020 2068 7474 703a  at....     http:\n-000001d0: 2f2f 7777 772e 6170 6163 6865 2e6f 7267  //www.apache.org\n-000001e0: 2f6c 6963 656e 7365 732f 4c49 4345 4e53  /licenses/LICENS\n-000001f0: 452d 322e 300d 0a0d 0a55 6e6c 6573 7320  E-2.0....Unless \n-00000200: 7265 7175 6972 6564 2062 7920 6170 706c  required by appl\n-00000210: 6963 6162 6c65 206c 6177 206f 7220 6167  icable law or ag\n-00000220: 7265 6564 2074 6f20 696e 2077 7269 7469  reed to in writi\n-00000230: 6e67 2c20 736f 6674 7761 7265 0d0a 6469  ng, software..di\n-00000240: 7374 7269 6275 7465 6420 756e 6465 7220  stributed under \n-00000250: 7468 6520 4c69 6365 6e73 6520 6973 2064  the License is d\n-00000260: 6973 7472 6962 7574 6564 206f 6e20 616e  istributed on an\n-00000270: 2022 4153 2049 5322 2042 4153 4953 2c0d   \"AS IS\" BASIS,.\n-00000280: 0a57 4954 484f 5554 2057 4152 5241 4e54  .WITHOUT WARRANT\n-00000290: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n-000002a0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n-000002b0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n-000002c0: 2069 6d70 6c69 6564 2e0d 0a53 6565 2074   implied...See t\n-000002d0: 6865 204c 6963 656e 7365 2066 6f72 2074  he License for t\n-000002e0: 6865 2073 7065 6369 6669 6320 6c61 6e67  he specific lang\n-000002f0: 7561 6765 2067 6f76 6572 6e69 6e67 2070  uage governing p\n-00000300: 6572 6d69 7373 696f 6e73 2061 6e64 0d0a  ermissions and..\n-00000310: 6c69 6d69 7461 7469 6f6e 7320 756e 6465  limitations unde\n-00000320: 7220 7468 6520 4c69 6365 6e73 652e 0d0a  r the License...\n-00000330: 2d2d 3e0d 0a3c 7072 6f6a 6563 7420 7873  -->..<project xs\n-00000340: 693a 7363 6865 6d61 4c6f 6361 7469 6f6e  i:schemaLocation\n-00000350: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-00000360: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-00000370: 302e 3020 6874 7470 733a 2f2f 6d61 7665  0.0 https://mave\n-00000380: 6e2e 6170 6163 6865 2e6f 7267 2f78 7364  n.apache.org/xsd\n-00000390: 2f6d 6176 656e 2d34 2e30 2e30 2e78 7364  /maven-4.0.0.xsd\n-000003a0: 2220 786d 6c6e 733d 2268 7474 703a 2f2f  \" xmlns=\"http://\n-000003b0: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003c0: 2f50 4f4d 2f34 2e30 2e30 220d 0a20 2020  /POM/4.0.0\"..   \n-000003d0: 2078 6d6c 6e73 3a78 7369 3d22 6874 7470   xmlns:xsi=\"http\n-000003e0: 3a2f 2f77 7777 2e77 332e 6f72 672f 3230  ://www.w3.org/20\n-000003f0: 3031 2f58 4d4c 5363 6865 6d61 2d69 6e73  01/XMLSchema-ins\n-00000400: 7461 6e63 6522 3e0d 0a20 203c 6d6f 6465  tance\">..  <mode\n-00000410: 6c56 6572 7369 6f6e 3e34 2e30 2e30 3c2f  lVersion>4.0.0</\n-00000420: 6d6f 6465 6c56 6572 7369 6f6e 3e0d 0a20  modelVersion>.. \n-00000430: 203c 7061 7265 6e74 3e0d 0a20 2020 203c   <parent>..    <\n-00000440: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n-00000450: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n-00000460: 643e 0d0a 2020 2020 3c61 7274 6966 6163  d>..    <artifac\n-00000470: 7449 643e 6475 6262 6f2d 7365 7269 616c  tId>dubbo-serial\n-00000480: 697a 6174 696f 6e3c 2f61 7274 6966 6163  ization</artifac\n-00000490: 7449 643e 0d0a 2020 2020 3c76 6572 7369  tId>..    <versi\n-000004a0: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n-000004b0: 6f6e 3e0d 0a20 203c 2f70 6172 656e 743e  on>..  </parent>\n-000004c0: 0d0a 2020 3c67 726f 7570 4964 3e6f 7267  ..  <groupId>org\n-000004d0: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-000004e0: 726f 7570 4964 3e0d 0a20 203c 6172 7469  roupId>..  <arti\n-000004f0: 6661 6374 4964 3e64 7562 626f 2d73 6572  factId>dubbo-ser\n-00000500: 6961 6c69 7a61 7469 6f6e 2d6e 6174 6976  ialization-nativ\n-00000510: 652d 6865 7373 696f 6e3c 2f61 7274 6966  e-hession</artif\n-00000520: 6163 7449 643e 0d0a 2020 3c76 6572 7369  actId>..  <versi\n-00000530: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n-00000540: 6f6e 3e0d 0a20 203c 6e61 6d65 3e24 7b70  on>..  <name>${p\n-00000550: 726f 6a65 6374 2e61 7274 6966 6163 7449  roject.artifactI\n-00000560: 647d 3c2f 6e61 6d65 3e0d 0a20 203c 6465  d}</name>..  <de\n-00000570: 7363 7269 7074 696f 6e3e 5468 6520 6e61  scription>The na\n-00000580: 7469 7665 2d68 6573 7369 6f6e 2073 6572  tive-hession ser\n-00000590: 6961 6c69 7a61 7469 6f6e 206d 6f64 756c  ialization modul\n-000005a0: 6520 6f66 2064 7562 626f 2070 726f 6a65  e of dubbo proje\n-000005b0: 6374 3c2f 6465 7363 7269 7074 696f 6e3e  ct</description>\n-000005c0: 0d0a 2020 3c6c 6963 656e 7365 733e 0d0a  ..  <licenses>..\n-000005d0: 2020 2020 3c6c 6963 656e 7365 3e0d 0a20      <license>.. \n-000005e0: 2020 2020 203c 6e61 6d65 3e41 7061 6368       <name>Apach\n-000005f0: 6520 4c69 6365 6e73 652c 2056 6572 7369  e License, Versi\n-00000600: 6f6e 2032 2e30 3c2f 6e61 6d65 3e0d 0a20  on 2.0</name>.. \n-00000610: 2020 2020 203c 7572 6c3e 6874 7470 3a2f       <url>http:/\n-00000620: 2f77 7777 2e61 7061 6368 652e 6f72 672f  /www.apache.org/\n-00000630: 6c69 6365 6e73 6573 2f4c 4943 454e 5345  licenses/LICENSE\n-00000640: 2d32 2e30 3c2f 7572 6c3e 0d0a 2020 2020  -2.0</url>..    \n-00000650: 2020 3c64 6973 7472 6962 7574 696f 6e3e    <distribution>\n-00000660: 7265 706f 3c2f 6469 7374 7269 6275 7469  repo</distributi\n-00000670: 6f6e 3e0d 0a20 2020 203c 2f6c 6963 656e  on>..    </licen\n-00000680: 7365 3e0d 0a20 203c 2f6c 6963 656e 7365  se>..  </license\n-00000690: 733e 0d0a 2020 3c64 6570 656e 6465 6e63  s>..  <dependenc\n-000006a0: 6965 733e 0d0a 2020 2020 3c64 6570 656e  ies>..    <depen\n-000006b0: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-000006c0: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n-000006d0: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n-000006e0: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-000006f0: 6374 4964 3e64 7562 626f 2d73 6572 6961  ctId>dubbo-seria\n-00000700: 6c69 7a61 7469 6f6e 2d61 7069 3c2f 6172  lization-api</ar\n-00000710: 7469 6661 6374 4964 3e0d 0a20 2020 2020  tifactId>..     \n-00000720: 203c 7665 7273 696f 6e3e 247b 7072 6f6a   <version>${proj\n-00000730: 6563 742e 7061 7265 6e74 2e76 6572 7369  ect.parent.versi\n-00000740: 6f6e 7d3c 2f76 6572 7369 6f6e 3e0d 0a20  on}</version>.. \n-00000750: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n-00000760: 0d0a 2020 2020 3c64 6570 656e 6465 6e63  ..    <dependenc\n-00000770: 793e 0d0a 2020 2020 2020 3c67 726f 7570  y>..      <group\n-00000780: 4964 3e63 6f6d 2e63 6175 6368 6f3c 2f67  Id>com.caucho</g\n-00000790: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-000007a0: 6172 7469 6661 6374 4964 3e68 6573 7369  artifactId>hessi\n-000007b0: 616e 3c2f 6172 7469 6661 6374 4964 3e0d  an</artifactId>.\n-000007c0: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-000007d0: 793e 0d0a 2020 3c2f 6465 7065 6e64 656e  y>..  </dependen\n-000007e0: 6369 6573 3e0d 0a3c 2f70 726f 6a65 6374  cies>..</project\n-000007f0: 3e0d 0a                                  >..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 4c69 6365  F-8\"?>.<!--.Lice\n+00000030: 6e73 6564 2074 6f20 7468 6520 4170 6163  nsed to the Apac\n+00000040: 6865 2053 6f66 7477 6172 6520 466f 756e  he Software Foun\n+00000050: 6461 7469 6f6e 2028 4153 4629 2075 6e64  dation (ASF) und\n+00000060: 6572 206f 6e65 206f 7220 6d6f 7265 0a63  er one or more.c\n+00000070: 6f6e 7472 6962 7574 6f72 206c 6963 656e  ontributor licen\n+00000080: 7365 2061 6772 6565 6d65 6e74 732e 2020  se agreements.  \n+00000090: 5365 6520 7468 6520 4e4f 5449 4345 2066  See the NOTICE f\n+000000a0: 696c 6520 6469 7374 7269 6275 7465 6420  ile distributed \n+000000b0: 7769 7468 0a74 6869 7320 776f 726b 2066  with.this work f\n+000000c0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n+000000d0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n+000000e0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n+000000f0: 6e65 7273 6869 702e 0a54 6865 2041 5346  nership..The ASF\n+00000100: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000110: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000120: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000130: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000140: 0a28 7468 6520 224c 6963 656e 7365 2229  .(the \"License\")\n+00000150: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n+00000160: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n+00000170: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n+00000180: 2077 6974 680a 7468 6520 4c69 6365 6e73   with.the Licens\n+00000190: 652e 2020 596f 7520 6d61 7920 6f62 7461  e.  You may obta\n+000001a0: 696e 2061 2063 6f70 7920 6f66 2074 6865  in a copy of the\n+000001b0: 204c 6963 656e 7365 2061 740a 0a20 2020   License at..   \n+000001c0: 2020 6874 7470 3a2f 2f77 7777 2e61 7061    http://www.apa\n+000001d0: 6368 652e 6f72 672f 6c69 6365 6e73 6573  che.org/licenses\n+000001e0: 2f4c 4943 454e 5345 2d32 2e30 0a0a 556e  /LICENSE-2.0..Un\n+000001f0: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n+00000200: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n+00000210: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n+00000220: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n+00000230: 650a 6469 7374 7269 6275 7465 6420 756e  e.distributed un\n+00000240: 6465 7220 7468 6520 4c69 6365 6e73 6520  der the License \n+00000250: 6973 2064 6973 7472 6962 7574 6564 206f  is distributed o\n+00000260: 6e20 616e 2022 4153 2049 5322 2042 4153  n an \"AS IS\" BAS\n+00000270: 4953 2c0a 5749 5448 4f55 5420 5741 5252  IS,.WITHOUT WARR\n+00000280: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n+00000290: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n+000002a0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n+000002b0: 206f 7220 696d 706c 6965 642e 0a53 6565   or implied..See\n+000002c0: 2074 6865 204c 6963 656e 7365 2066 6f72   the License for\n+000002d0: 2074 6865 2073 7065 6369 6669 6320 6c61   the specific la\n+000002e0: 6e67 7561 6765 2067 6f76 6572 6e69 6e67  nguage governing\n+000002f0: 2070 6572 6d69 7373 696f 6e73 2061 6e64   permissions and\n+00000300: 0a6c 696d 6974 6174 696f 6e73 2075 6e64  .limitations und\n+00000310: 6572 2074 6865 204c 6963 656e 7365 2e0a  er the License..\n+00000320: 2d2d 3e0a 3c70 726f 6a65 6374 2078 7369  -->.<project xsi\n+00000330: 3a73 6368 656d 614c 6f63 6174 696f 6e3d  :schemaLocation=\n+00000340: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+00000350: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+00000360: 2e30 2068 7474 7073 3a2f 2f6d 6176 656e  .0 https://maven\n+00000370: 2e61 7061 6368 652e 6f72 672f 7873 642f  .apache.org/xsd/\n+00000380: 6d61 7665 6e2d 342e 302e 302e 7873 6422  maven-4.0.0.xsd\"\n+00000390: 2078 6d6c 6e73 3d22 6874 7470 3a2f 2f6d   xmlns=\"http://m\n+000003a0: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+000003b0: 504f 4d2f 342e 302e 3022 0a20 2020 2078  POM/4.0.0\".    x\n+000003c0: 6d6c 6e73 3a78 7369 3d22 6874 7470 3a2f  mlns:xsi=\"http:/\n+000003d0: 2f77 7777 2e77 332e 6f72 672f 3230 3031  /www.w3.org/2001\n+000003e0: 2f58 4d4c 5363 6865 6d61 2d69 6e73 7461  /XMLSchema-insta\n+000003f0: 6e63 6522 3e0a 2020 3c6d 6f64 656c 5665  nce\">.  <modelVe\n+00000400: 7273 696f 6e3e 342e 302e 303c 2f6d 6f64  rsion>4.0.0</mod\n+00000410: 656c 5665 7273 696f 6e3e 0a20 203c 7061  elVersion>.  <pa\n+00000420: 7265 6e74 3e0a 2020 2020 3c67 726f 7570  rent>.    <group\n+00000430: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+00000440: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000450: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000460: 6262 6f2d 7365 7269 616c 697a 6174 696f  bbo-serializatio\n+00000470: 6e3c 2f61 7274 6966 6163 7449 643e 0a20  n</artifactId>. \n+00000480: 2020 203c 7665 7273 696f 6e3e 322e 372e     <version>2.7.\n+00000490: 3130 3c2f 7665 7273 696f 6e3e 0a20 203c  10</version>.  <\n+000004a0: 2f70 6172 656e 743e 0a20 203c 6772 6f75  /parent>.  <grou\n+000004b0: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n+000004c0: 7562 626f 3c2f 6772 6f75 7049 643e 0a20  ubbo</groupId>. \n+000004d0: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+000004e0: 626f 2d73 6572 6961 6c69 7a61 7469 6f6e  bo-serialization\n+000004f0: 2d6e 6174 6976 652d 6865 7373 696f 6e3c  -native-hession<\n+00000500: 2f61 7274 6966 6163 7449 643e 0a20 203c  /artifactId>.  <\n+00000510: 7665 7273 696f 6e3e 322e 372e 3130 3c2f  version>2.7.10</\n+00000520: 7665 7273 696f 6e3e 0a20 203c 6e61 6d65  version>.  <name\n+00000530: 3e24 7b70 726f 6a65 6374 2e61 7274 6966  >${project.artif\n+00000540: 6163 7449 647d 3c2f 6e61 6d65 3e0a 2020  actId}</name>.  \n+00000550: 3c64 6573 6372 6970 7469 6f6e 3e54 6865  <description>The\n+00000560: 206e 6174 6976 652d 6865 7373 696f 6e20   native-hession \n+00000570: 7365 7269 616c 697a 6174 696f 6e20 6d6f  serialization mo\n+00000580: 6475 6c65 206f 6620 6475 6262 6f20 7072  dule of dubbo pr\n+00000590: 6f6a 6563 743c 2f64 6573 6372 6970 7469  oject</descripti\n+000005a0: 6f6e 3e0a 2020 3c6c 6963 656e 7365 733e  on>.  <licenses>\n+000005b0: 0a20 2020 203c 6c69 6365 6e73 653e 0a20  .    <license>. \n+000005c0: 2020 2020 203c 6e61 6d65 3e41 7061 6368       <name>Apach\n+000005d0: 6520 4c69 6365 6e73 652c 2056 6572 7369  e License, Versi\n+000005e0: 6f6e 2032 2e30 3c2f 6e61 6d65 3e0a 2020  on 2.0</name>.  \n+000005f0: 2020 2020 3c75 726c 3e68 7474 703a 2f2f      <url>http://\n+00000600: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n+00000610: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n+00000620: 322e 303c 2f75 726c 3e0a 2020 2020 2020  2.0</url>.      \n+00000630: 3c64 6973 7472 6962 7574 696f 6e3e 7265  <distribution>re\n+00000640: 706f 3c2f 6469 7374 7269 6275 7469 6f6e  po</distribution\n+00000650: 3e0a 2020 2020 3c2f 6c69 6365 6e73 653e  >.    </license>\n+00000660: 0a20 203c 2f6c 6963 656e 7365 733e 0a20  .  </licenses>. \n+00000670: 203c 6465 7065 6e64 656e 6369 6573 3e0a   <dependencies>.\n+00000680: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+00000690: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+000006a0: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+000006b0: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+000006c0: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+000006d0: 626f 2d73 6572 6961 6c69 7a61 7469 6f6e  bo-serialization\n+000006e0: 2d61 7069 3c2f 6172 7469 6661 6374 4964  -api</artifactId\n+000006f0: 3e0a 2020 2020 2020 3c76 6572 7369 6f6e  >.      <version\n+00000700: 3e24 7b70 726f 6a65 6374 2e70 6172 656e  >${project.paren\n+00000710: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n+00000720: 696f 6e3e 0a20 2020 203c 2f64 6570 656e  ion>.    </depen\n+00000730: 6465 6e63 793e 0a20 2020 203c 6465 7065  dency>.    <depe\n+00000740: 6e64 656e 6379 3e0a 2020 2020 2020 3c67  ndency>.      <g\n+00000750: 726f 7570 4964 3e63 6f6d 2e63 6175 6368  roupId>com.cauch\n+00000760: 6f3c 2f67 726f 7570 4964 3e0a 2020 2020  o</groupId>.    \n+00000770: 2020 3c61 7274 6966 6163 7449 643e 6865    <artifactId>he\n+00000780: 7373 6961 6e3c 2f61 7274 6966 6163 7449  ssian</artifactI\n+00000790: 643e 0a20 2020 203c 2f64 6570 656e 6465  d>.    </depende\n+000007a0: 6e63 793e 0a20 203c 2f64 6570 656e 6465  ncy>.  </depende\n+000007b0: 6e63 6965 733e 0a3c 2f70 726f 6a65 6374  ncies>.</project\n+000007c0: 3e0a                                     >.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-serialization-jdk/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-serialization-jdk/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,132 +1,129 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 4c69  F-8\"?>..<!--..Li\n-00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n-00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n-00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n-00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n-00000070: 0d0a 636f 6e74 7269 6275 746f 7220 6c69  ..contributor li\n-00000080: 6365 6e73 6520 6167 7265 656d 656e 7473  cense agreements\n-00000090: 2e20 2053 6565 2074 6865 204e 4f54 4943  .  See the NOTIC\n-000000a0: 4520 6669 6c65 2064 6973 7472 6962 7574  E file distribut\n-000000b0: 6564 2077 6974 680d 0a74 6869 7320 776f  ed with..this wo\n-000000c0: 726b 2066 6f72 2061 6464 6974 696f 6e61  rk for additiona\n-000000d0: 6c20 696e 666f 726d 6174 696f 6e20 7265  l information re\n-000000e0: 6761 7264 696e 6720 636f 7079 7269 6768  garding copyrigh\n-000000f0: 7420 6f77 6e65 7273 6869 702e 0d0a 5468  t ownership...Th\n-00000100: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000110: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000120: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000130: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000140: 6e20 322e 300d 0a28 7468 6520 224c 6963  n 2.0..(the \"Lic\n-00000150: 656e 7365 2229 3b20 796f 7520 6d61 7920  ense\"); you may \n-00000160: 6e6f 7420 7573 6520 7468 6973 2066 696c  not use this fil\n-00000170: 6520 6578 6365 7074 2069 6e20 636f 6d70  e except in comp\n-00000180: 6c69 616e 6365 2077 6974 680d 0a74 6865  liance with..the\n-00000190: 204c 6963 656e 7365 2e20 2059 6f75 206d   License.  You m\n-000001a0: 6179 206f 6274 6169 6e20 6120 636f 7079  ay obtain a copy\n-000001b0: 206f 6620 7468 6520 4c69 6365 6e73 6520   of the License \n-000001c0: 6174 0d0a 0d0a 2020 2020 2068 7474 703a  at....     http:\n-000001d0: 2f2f 7777 772e 6170 6163 6865 2e6f 7267  //www.apache.org\n-000001e0: 2f6c 6963 656e 7365 732f 4c49 4345 4e53  /licenses/LICENS\n-000001f0: 452d 322e 300d 0a0d 0a55 6e6c 6573 7320  E-2.0....Unless \n-00000200: 7265 7175 6972 6564 2062 7920 6170 706c  required by appl\n-00000210: 6963 6162 6c65 206c 6177 206f 7220 6167  icable law or ag\n-00000220: 7265 6564 2074 6f20 696e 2077 7269 7469  reed to in writi\n-00000230: 6e67 2c20 736f 6674 7761 7265 0d0a 6469  ng, software..di\n-00000240: 7374 7269 6275 7465 6420 756e 6465 7220  stributed under \n-00000250: 7468 6520 4c69 6365 6e73 6520 6973 2064  the License is d\n-00000260: 6973 7472 6962 7574 6564 206f 6e20 616e  istributed on an\n-00000270: 2022 4153 2049 5322 2042 4153 4953 2c0d   \"AS IS\" BASIS,.\n-00000280: 0a57 4954 484f 5554 2057 4152 5241 4e54  .WITHOUT WARRANT\n-00000290: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n-000002a0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n-000002b0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n-000002c0: 2069 6d70 6c69 6564 2e0d 0a53 6565 2074   implied...See t\n-000002d0: 6865 204c 6963 656e 7365 2066 6f72 2074  he License for t\n-000002e0: 6865 2073 7065 6369 6669 6320 6c61 6e67  he specific lang\n-000002f0: 7561 6765 2067 6f76 6572 6e69 6e67 2070  uage governing p\n-00000300: 6572 6d69 7373 696f 6e73 2061 6e64 0d0a  ermissions and..\n-00000310: 6c69 6d69 7461 7469 6f6e 7320 756e 6465  limitations unde\n-00000320: 7220 7468 6520 4c69 6365 6e73 652e 0d0a  r the License...\n-00000330: 2d2d 3e0d 0a3c 7072 6f6a 6563 7420 7873  -->..<project xs\n-00000340: 693a 7363 6865 6d61 4c6f 6361 7469 6f6e  i:schemaLocation\n-00000350: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-00000360: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-00000370: 302e 3020 6874 7470 733a 2f2f 6d61 7665  0.0 https://mave\n-00000380: 6e2e 6170 6163 6865 2e6f 7267 2f78 7364  n.apache.org/xsd\n-00000390: 2f6d 6176 656e 2d34 2e30 2e30 2e78 7364  /maven-4.0.0.xsd\n-000003a0: 2220 786d 6c6e 733d 2268 7474 703a 2f2f  \" xmlns=\"http://\n-000003b0: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003c0: 2f50 4f4d 2f34 2e30 2e30 220d 0a20 2020  /POM/4.0.0\"..   \n-000003d0: 2078 6d6c 6e73 3a78 7369 3d22 6874 7470   xmlns:xsi=\"http\n-000003e0: 3a2f 2f77 7777 2e77 332e 6f72 672f 3230  ://www.w3.org/20\n-000003f0: 3031 2f58 4d4c 5363 6865 6d61 2d69 6e73  01/XMLSchema-ins\n-00000400: 7461 6e63 6522 3e0d 0a20 203c 6d6f 6465  tance\">..  <mode\n-00000410: 6c56 6572 7369 6f6e 3e34 2e30 2e30 3c2f  lVersion>4.0.0</\n-00000420: 6d6f 6465 6c56 6572 7369 6f6e 3e0d 0a20  modelVersion>.. \n-00000430: 203c 7061 7265 6e74 3e0d 0a20 2020 203c   <parent>..    <\n-00000440: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n-00000450: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n-00000460: 643e 0d0a 2020 2020 3c61 7274 6966 6163  d>..    <artifac\n-00000470: 7449 643e 6475 6262 6f2d 7365 7269 616c  tId>dubbo-serial\n-00000480: 697a 6174 696f 6e3c 2f61 7274 6966 6163  ization</artifac\n-00000490: 7449 643e 0d0a 2020 2020 3c76 6572 7369  tId>..    <versi\n-000004a0: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n-000004b0: 6f6e 3e0d 0a20 203c 2f70 6172 656e 743e  on>..  </parent>\n-000004c0: 0d0a 2020 3c67 726f 7570 4964 3e6f 7267  ..  <groupId>org\n-000004d0: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-000004e0: 726f 7570 4964 3e0d 0a20 203c 6172 7469  roupId>..  <arti\n-000004f0: 6661 6374 4964 3e64 7562 626f 2d73 6572  factId>dubbo-ser\n-00000500: 6961 6c69 7a61 7469 6f6e 2d6a 646b 3c2f  ialization-jdk</\n-00000510: 6172 7469 6661 6374 4964 3e0d 0a20 203c  artifactId>..  <\n-00000520: 7665 7273 696f 6e3e 322e 372e 3130 3c2f  version>2.7.10</\n-00000530: 7665 7273 696f 6e3e 0d0a 2020 3c6e 616d  version>..  <nam\n-00000540: 653e 247b 7072 6f6a 6563 742e 6172 7469  e>${project.arti\n-00000550: 6661 6374 4964 7d3c 2f6e 616d 653e 0d0a  factId}</name>..\n-00000560: 2020 3c64 6573 6372 6970 7469 6f6e 3e54    <description>T\n-00000570: 6865 206a 646b 2073 6572 6961 6c69 7a61  he jdk serializa\n-00000580: 7469 6f6e 206d 6f64 756c 6520 6f66 2064  tion module of d\n-00000590: 7562 626f 2070 726f 6a65 6374 3c2f 6465  ubbo project</de\n-000005a0: 7363 7269 7074 696f 6e3e 0d0a 2020 3c6c  scription>..  <l\n-000005b0: 6963 656e 7365 733e 0d0a 2020 2020 3c6c  icenses>..    <l\n-000005c0: 6963 656e 7365 3e0d 0a20 2020 2020 203c  icense>..      <\n-000005d0: 6e61 6d65 3e41 7061 6368 6520 4c69 6365  name>Apache Lice\n-000005e0: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n-000005f0: 3c2f 6e61 6d65 3e0d 0a20 2020 2020 203c  </name>..      <\n-00000600: 7572 6c3e 6874 7470 3a2f 2f77 7777 2e61  url>http://www.a\n-00000610: 7061 6368 652e 6f72 672f 6c69 6365 6e73  pache.org/licens\n-00000620: 6573 2f4c 4943 454e 5345 2d32 2e30 3c2f  es/LICENSE-2.0</\n-00000630: 7572 6c3e 0d0a 2020 2020 2020 3c64 6973  url>..      <dis\n-00000640: 7472 6962 7574 696f 6e3e 7265 706f 3c2f  tribution>repo</\n-00000650: 6469 7374 7269 6275 7469 6f6e 3e0d 0a20  distribution>.. \n-00000660: 2020 203c 2f6c 6963 656e 7365 3e0d 0a20     </license>.. \n-00000670: 203c 2f6c 6963 656e 7365 733e 0d0a 2020   </licenses>..  \n-00000680: 3c70 726f 7065 7274 6965 733e 0d0a 2020  <properties>..  \n-00000690: 2020 3c73 6b69 705f 6d61 7665 6e5f 6465    <skip_maven_de\n-000006a0: 706c 6f79 3e66 616c 7365 3c2f 736b 6970  ploy>false</skip\n-000006b0: 5f6d 6176 656e 5f64 6570 6c6f 793e 0d0a  _maven_deploy>..\n-000006c0: 2020 3c2f 7072 6f70 6572 7469 6573 3e0d    </properties>.\n-000006d0: 0a20 203c 6465 7065 6e64 656e 6369 6573  .  <dependencies\n-000006e0: 3e0d 0a20 2020 203c 6465 7065 6e64 656e  >..    <dependen\n-000006f0: 6379 3e0d 0a20 2020 2020 203c 6772 6f75  cy>..      <grou\n-00000700: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n-00000710: 7562 626f 3c2f 6772 6f75 7049 643e 0d0a  ubbo</groupId>..\n-00000720: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n-00000730: 643e 6475 6262 6f2d 7365 7269 616c 697a  d>dubbo-serializ\n-00000740: 6174 696f 6e2d 6170 693c 2f61 7274 6966  ation-api</artif\n-00000750: 6163 7449 643e 0d0a 2020 2020 2020 3c76  actId>..      <v\n-00000760: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n-00000770: 2e70 6172 656e 742e 7665 7273 696f 6e7d  .parent.version}\n-00000780: 3c2f 7665 7273 696f 6e3e 0d0a 2020 2020  </version>..    \n-00000790: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-000007a0: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-000007b0: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-000007c0: 636f 6d2e 616c 6962 6162 613c 2f67 726f  com.alibaba</gro\n-000007d0: 7570 4964 3e0d 0a20 2020 2020 203c 6172  upId>..      <ar\n-000007e0: 7469 6661 6374 4964 3e68 6573 7369 616e  tifactId>hessian\n-000007f0: 2d6c 6974 653c 2f61 7274 6966 6163 7449  -lite</artifactI\n-00000800: 643e 0d0a 2020 2020 3c2f 6465 7065 6e64  d>..    </depend\n-00000810: 656e 6379 3e0d 0a20 203c 2f64 6570 656e  ency>..  </depen\n-00000820: 6465 6e63 6965 733e 0d0a 3c2f 7072 6f6a  dencies>..</proj\n-00000830: 6563 743e 0d0a                           ect>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 4c69 6365  F-8\"?>.<!--.Lice\n+00000030: 6e73 6564 2074 6f20 7468 6520 4170 6163  nsed to the Apac\n+00000040: 6865 2053 6f66 7477 6172 6520 466f 756e  he Software Foun\n+00000050: 6461 7469 6f6e 2028 4153 4629 2075 6e64  dation (ASF) und\n+00000060: 6572 206f 6e65 206f 7220 6d6f 7265 0a63  er one or more.c\n+00000070: 6f6e 7472 6962 7574 6f72 206c 6963 656e  ontributor licen\n+00000080: 7365 2061 6772 6565 6d65 6e74 732e 2020  se agreements.  \n+00000090: 5365 6520 7468 6520 4e4f 5449 4345 2066  See the NOTICE f\n+000000a0: 696c 6520 6469 7374 7269 6275 7465 6420  ile distributed \n+000000b0: 7769 7468 0a74 6869 7320 776f 726b 2066  with.this work f\n+000000c0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n+000000d0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n+000000e0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n+000000f0: 6e65 7273 6869 702e 0a54 6865 2041 5346  nership..The ASF\n+00000100: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000110: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000120: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000130: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000140: 0a28 7468 6520 224c 6963 656e 7365 2229  .(the \"License\")\n+00000150: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n+00000160: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n+00000170: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n+00000180: 2077 6974 680a 7468 6520 4c69 6365 6e73   with.the Licens\n+00000190: 652e 2020 596f 7520 6d61 7920 6f62 7461  e.  You may obta\n+000001a0: 696e 2061 2063 6f70 7920 6f66 2074 6865  in a copy of the\n+000001b0: 204c 6963 656e 7365 2061 740a 0a20 2020   License at..   \n+000001c0: 2020 6874 7470 3a2f 2f77 7777 2e61 7061    http://www.apa\n+000001d0: 6368 652e 6f72 672f 6c69 6365 6e73 6573  che.org/licenses\n+000001e0: 2f4c 4943 454e 5345 2d32 2e30 0a0a 556e  /LICENSE-2.0..Un\n+000001f0: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n+00000200: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n+00000210: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n+00000220: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n+00000230: 650a 6469 7374 7269 6275 7465 6420 756e  e.distributed un\n+00000240: 6465 7220 7468 6520 4c69 6365 6e73 6520  der the License \n+00000250: 6973 2064 6973 7472 6962 7574 6564 206f  is distributed o\n+00000260: 6e20 616e 2022 4153 2049 5322 2042 4153  n an \"AS IS\" BAS\n+00000270: 4953 2c0a 5749 5448 4f55 5420 5741 5252  IS,.WITHOUT WARR\n+00000280: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n+00000290: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n+000002a0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n+000002b0: 206f 7220 696d 706c 6965 642e 0a53 6565   or implied..See\n+000002c0: 2074 6865 204c 6963 656e 7365 2066 6f72   the License for\n+000002d0: 2074 6865 2073 7065 6369 6669 6320 6c61   the specific la\n+000002e0: 6e67 7561 6765 2067 6f76 6572 6e69 6e67  nguage governing\n+000002f0: 2070 6572 6d69 7373 696f 6e73 2061 6e64   permissions and\n+00000300: 0a6c 696d 6974 6174 696f 6e73 2075 6e64  .limitations und\n+00000310: 6572 2074 6865 204c 6963 656e 7365 2e0a  er the License..\n+00000320: 2d2d 3e0a 3c70 726f 6a65 6374 2078 7369  -->.<project xsi\n+00000330: 3a73 6368 656d 614c 6f63 6174 696f 6e3d  :schemaLocation=\n+00000340: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+00000350: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+00000360: 2e30 2068 7474 7073 3a2f 2f6d 6176 656e  .0 https://maven\n+00000370: 2e61 7061 6368 652e 6f72 672f 7873 642f  .apache.org/xsd/\n+00000380: 6d61 7665 6e2d 342e 302e 302e 7873 6422  maven-4.0.0.xsd\"\n+00000390: 2078 6d6c 6e73 3d22 6874 7470 3a2f 2f6d   xmlns=\"http://m\n+000003a0: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+000003b0: 504f 4d2f 342e 302e 3022 0a20 2020 2078  POM/4.0.0\".    x\n+000003c0: 6d6c 6e73 3a78 7369 3d22 6874 7470 3a2f  mlns:xsi=\"http:/\n+000003d0: 2f77 7777 2e77 332e 6f72 672f 3230 3031  /www.w3.org/2001\n+000003e0: 2f58 4d4c 5363 6865 6d61 2d69 6e73 7461  /XMLSchema-insta\n+000003f0: 6e63 6522 3e0a 2020 3c6d 6f64 656c 5665  nce\">.  <modelVe\n+00000400: 7273 696f 6e3e 342e 302e 303c 2f6d 6f64  rsion>4.0.0</mod\n+00000410: 656c 5665 7273 696f 6e3e 0a20 203c 7061  elVersion>.  <pa\n+00000420: 7265 6e74 3e0a 2020 2020 3c67 726f 7570  rent>.    <group\n+00000430: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+00000440: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000450: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000460: 6262 6f2d 7365 7269 616c 697a 6174 696f  bbo-serializatio\n+00000470: 6e3c 2f61 7274 6966 6163 7449 643e 0a20  n</artifactId>. \n+00000480: 2020 203c 7665 7273 696f 6e3e 322e 372e     <version>2.7.\n+00000490: 3130 3c2f 7665 7273 696f 6e3e 0a20 203c  10</version>.  <\n+000004a0: 2f70 6172 656e 743e 0a20 203c 6772 6f75  /parent>.  <grou\n+000004b0: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n+000004c0: 7562 626f 3c2f 6772 6f75 7049 643e 0a20  ubbo</groupId>. \n+000004d0: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+000004e0: 626f 2d73 6572 6961 6c69 7a61 7469 6f6e  bo-serialization\n+000004f0: 2d6a 646b 3c2f 6172 7469 6661 6374 4964  -jdk</artifactId\n+00000500: 3e0a 2020 3c76 6572 7369 6f6e 3e32 2e37  >.  <version>2.7\n+00000510: 2e31 303c 2f76 6572 7369 6f6e 3e0a 2020  .10</version>.  \n+00000520: 3c6e 616d 653e 247b 7072 6f6a 6563 742e  <name>${project.\n+00000530: 6172 7469 6661 6374 4964 7d3c 2f6e 616d  artifactId}</nam\n+00000540: 653e 0a20 203c 6465 7363 7269 7074 696f  e>.  <descriptio\n+00000550: 6e3e 5468 6520 6a64 6b20 7365 7269 616c  n>The jdk serial\n+00000560: 697a 6174 696f 6e20 6d6f 6475 6c65 206f  ization module o\n+00000570: 6620 6475 6262 6f20 7072 6f6a 6563 743c  f dubbo project<\n+00000580: 2f64 6573 6372 6970 7469 6f6e 3e0a 2020  /description>.  \n+00000590: 3c6c 6963 656e 7365 733e 0a20 2020 203c  <licenses>.    <\n+000005a0: 6c69 6365 6e73 653e 0a20 2020 2020 203c  license>.      <\n+000005b0: 6e61 6d65 3e41 7061 6368 6520 4c69 6365  name>Apache Lice\n+000005c0: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+000005d0: 3c2f 6e61 6d65 3e0a 2020 2020 2020 3c75  </name>.      <u\n+000005e0: 726c 3e68 7474 703a 2f2f 7777 772e 6170  rl>http://www.ap\n+000005f0: 6163 6865 2e6f 7267 2f6c 6963 656e 7365  ache.org/license\n+00000600: 732f 4c49 4345 4e53 452d 322e 303c 2f75  s/LICENSE-2.0</u\n+00000610: 726c 3e0a 2020 2020 2020 3c64 6973 7472  rl>.      <distr\n+00000620: 6962 7574 696f 6e3e 7265 706f 3c2f 6469  ibution>repo</di\n+00000630: 7374 7269 6275 7469 6f6e 3e0a 2020 2020  stribution>.    \n+00000640: 3c2f 6c69 6365 6e73 653e 0a20 203c 2f6c  </license>.  </l\n+00000650: 6963 656e 7365 733e 0a20 203c 7072 6f70  icenses>.  <prop\n+00000660: 6572 7469 6573 3e0a 2020 2020 3c73 6b69  erties>.    <ski\n+00000670: 705f 6d61 7665 6e5f 6465 706c 6f79 3e66  p_maven_deploy>f\n+00000680: 616c 7365 3c2f 736b 6970 5f6d 6176 656e  alse</skip_maven\n+00000690: 5f64 6570 6c6f 793e 0a20 203c 2f70 726f  _deploy>.  </pro\n+000006a0: 7065 7274 6965 733e 0a20 203c 6465 7065  perties>.  <depe\n+000006b0: 6e64 656e 6369 6573 3e0a 2020 2020 3c64  ndencies>.    <d\n+000006c0: 6570 656e 6465 6e63 793e 0a20 2020 2020  ependency>.     \n+000006d0: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+000006e0: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+000006f0: 7049 643e 0a20 2020 2020 203c 6172 7469  pId>.      <arti\n+00000700: 6661 6374 4964 3e64 7562 626f 2d73 6572  factId>dubbo-ser\n+00000710: 6961 6c69 7a61 7469 6f6e 2d61 7069 3c2f  ialization-api</\n+00000720: 6172 7469 6661 6374 4964 3e0a 2020 2020  artifactId>.    \n+00000730: 2020 3c76 6572 7369 6f6e 3e24 7b70 726f    <version>${pro\n+00000740: 6a65 6374 2e70 6172 656e 742e 7665 7273  ject.parent.vers\n+00000750: 696f 6e7d 3c2f 7665 7273 696f 6e3e 0a20  ion}</version>. \n+00000760: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+00000770: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+00000780: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+00000790: 3e63 6f6d 2e61 6c69 6261 6261 3c2f 6772  >com.alibaba</gr\n+000007a0: 6f75 7049 643e 0a20 2020 2020 203c 6172  oupId>.      <ar\n+000007b0: 7469 6661 6374 4964 3e68 6573 7369 616e  tifactId>hessian\n+000007c0: 2d6c 6974 653c 2f61 7274 6966 6163 7449  -lite</artifactI\n+000007d0: 643e 0a20 2020 203c 2f64 6570 656e 6465  d>.    </depende\n+000007e0: 6e63 793e 0a20 203c 2f64 6570 656e 6465  ncy>.  </depende\n+000007f0: 6e63 6965 733e 0a3c 2f70 726f 6a65 6374  ncies>.</project\n+00000800: 3e0a                                     >.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-serialization-kryo/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,140 +1,136 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 4c69  F-8\"?>..<!--..Li\n-00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n-00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n-00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n-00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n-00000070: 0d0a 636f 6e74 7269 6275 746f 7220 6c69  ..contributor li\n-00000080: 6365 6e73 6520 6167 7265 656d 656e 7473  cense agreements\n-00000090: 2e20 2053 6565 2074 6865 204e 4f54 4943  .  See the NOTIC\n-000000a0: 4520 6669 6c65 2064 6973 7472 6962 7574  E file distribut\n-000000b0: 6564 2077 6974 680d 0a74 6869 7320 776f  ed with..this wo\n-000000c0: 726b 2066 6f72 2061 6464 6974 696f 6e61  rk for additiona\n-000000d0: 6c20 696e 666f 726d 6174 696f 6e20 7265  l information re\n-000000e0: 6761 7264 696e 6720 636f 7079 7269 6768  garding copyrigh\n-000000f0: 7420 6f77 6e65 7273 6869 702e 0d0a 5468  t ownership...Th\n-00000100: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000110: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000120: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000130: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000140: 6e20 322e 300d 0a28 7468 6520 224c 6963  n 2.0..(the \"Lic\n-00000150: 656e 7365 2229 3b20 796f 7520 6d61 7920  ense\"); you may \n-00000160: 6e6f 7420 7573 6520 7468 6973 2066 696c  not use this fil\n-00000170: 6520 6578 6365 7074 2069 6e20 636f 6d70  e except in comp\n-00000180: 6c69 616e 6365 2077 6974 680d 0a74 6865  liance with..the\n-00000190: 204c 6963 656e 7365 2e20 2059 6f75 206d   License.  You m\n-000001a0: 6179 206f 6274 6169 6e20 6120 636f 7079  ay obtain a copy\n-000001b0: 206f 6620 7468 6520 4c69 6365 6e73 6520   of the License \n-000001c0: 6174 0d0a 0d0a 2020 2020 2068 7474 703a  at....     http:\n-000001d0: 2f2f 7777 772e 6170 6163 6865 2e6f 7267  //www.apache.org\n-000001e0: 2f6c 6963 656e 7365 732f 4c49 4345 4e53  /licenses/LICENS\n-000001f0: 452d 322e 300d 0a0d 0a55 6e6c 6573 7320  E-2.0....Unless \n-00000200: 7265 7175 6972 6564 2062 7920 6170 706c  required by appl\n-00000210: 6963 6162 6c65 206c 6177 206f 7220 6167  icable law or ag\n-00000220: 7265 6564 2074 6f20 696e 2077 7269 7469  reed to in writi\n-00000230: 6e67 2c20 736f 6674 7761 7265 0d0a 6469  ng, software..di\n-00000240: 7374 7269 6275 7465 6420 756e 6465 7220  stributed under \n-00000250: 7468 6520 4c69 6365 6e73 6520 6973 2064  the License is d\n-00000260: 6973 7472 6962 7574 6564 206f 6e20 616e  istributed on an\n-00000270: 2022 4153 2049 5322 2042 4153 4953 2c0d   \"AS IS\" BASIS,.\n-00000280: 0a57 4954 484f 5554 2057 4152 5241 4e54  .WITHOUT WARRANT\n-00000290: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n-000002a0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n-000002b0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n-000002c0: 2069 6d70 6c69 6564 2e0d 0a53 6565 2074   implied...See t\n-000002d0: 6865 204c 6963 656e 7365 2066 6f72 2074  he License for t\n-000002e0: 6865 2073 7065 6369 6669 6320 6c61 6e67  he specific lang\n-000002f0: 7561 6765 2067 6f76 6572 6e69 6e67 2070  uage governing p\n-00000300: 6572 6d69 7373 696f 6e73 2061 6e64 0d0a  ermissions and..\n-00000310: 6c69 6d69 7461 7469 6f6e 7320 756e 6465  limitations unde\n-00000320: 7220 7468 6520 4c69 6365 6e73 652e 0d0a  r the License...\n-00000330: 2d2d 3e0d 0a3c 7072 6f6a 6563 7420 7873  -->..<project xs\n-00000340: 693a 7363 6865 6d61 4c6f 6361 7469 6f6e  i:schemaLocation\n-00000350: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-00000360: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-00000370: 302e 3020 6874 7470 733a 2f2f 6d61 7665  0.0 https://mave\n-00000380: 6e2e 6170 6163 6865 2e6f 7267 2f78 7364  n.apache.org/xsd\n-00000390: 2f6d 6176 656e 2d34 2e30 2e30 2e78 7364  /maven-4.0.0.xsd\n-000003a0: 2220 786d 6c6e 733d 2268 7474 703a 2f2f  \" xmlns=\"http://\n-000003b0: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003c0: 2f50 4f4d 2f34 2e30 2e30 220d 0a20 2020  /POM/4.0.0\"..   \n-000003d0: 2078 6d6c 6e73 3a78 7369 3d22 6874 7470   xmlns:xsi=\"http\n-000003e0: 3a2f 2f77 7777 2e77 332e 6f72 672f 3230  ://www.w3.org/20\n-000003f0: 3031 2f58 4d4c 5363 6865 6d61 2d69 6e73  01/XMLSchema-ins\n-00000400: 7461 6e63 6522 3e0d 0a20 203c 6d6f 6465  tance\">..  <mode\n-00000410: 6c56 6572 7369 6f6e 3e34 2e30 2e30 3c2f  lVersion>4.0.0</\n-00000420: 6d6f 6465 6c56 6572 7369 6f6e 3e0d 0a20  modelVersion>.. \n-00000430: 203c 7061 7265 6e74 3e0d 0a20 2020 203c   <parent>..    <\n-00000440: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n-00000450: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n-00000460: 643e 0d0a 2020 2020 3c61 7274 6966 6163  d>..    <artifac\n-00000470: 7449 643e 6475 6262 6f2d 7365 7269 616c  tId>dubbo-serial\n-00000480: 697a 6174 696f 6e3c 2f61 7274 6966 6163  ization</artifac\n-00000490: 7449 643e 0d0a 2020 2020 3c76 6572 7369  tId>..    <versi\n-000004a0: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n-000004b0: 6f6e 3e0d 0a20 203c 2f70 6172 656e 743e  on>..  </parent>\n-000004c0: 0d0a 2020 3c67 726f 7570 4964 3e6f 7267  ..  <groupId>org\n-000004d0: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-000004e0: 726f 7570 4964 3e0d 0a20 203c 6172 7469  roupId>..  <arti\n-000004f0: 6661 6374 4964 3e64 7562 626f 2d73 6572  factId>dubbo-ser\n-00000500: 6961 6c69 7a61 7469 6f6e 2d6b 7279 6f3c  ialization-kryo<\n-00000510: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-00000520: 3c76 6572 7369 6f6e 3e32 2e37 2e31 303c  <version>2.7.10<\n-00000530: 2f76 6572 7369 6f6e 3e0d 0a20 203c 6e61  /version>..  <na\n-00000540: 6d65 3e24 7b70 726f 6a65 6374 2e61 7274  me>${project.art\n-00000550: 6966 6163 7449 647d 3c2f 6e61 6d65 3e0d  ifactId}</name>.\n-00000560: 0a20 203c 6465 7363 7269 7074 696f 6e3e  .  <description>\n-00000570: 5468 6520 6b72 796f 2073 6572 6961 6c69  The kryo seriali\n-00000580: 7a61 7469 6f6e 206d 6f64 756c 6520 6f66  zation module of\n-00000590: 2064 7562 626f 2070 726f 6a65 6374 3c2f   dubbo project</\n-000005a0: 6465 7363 7269 7074 696f 6e3e 0d0a 2020  description>..  \n-000005b0: 3c6c 6963 656e 7365 733e 0d0a 2020 2020  <licenses>..    \n-000005c0: 3c6c 6963 656e 7365 3e0d 0a20 2020 2020  <license>..     \n-000005d0: 203c 6e61 6d65 3e41 7061 6368 6520 4c69   <name>Apache Li\n-000005e0: 6365 6e73 652c 2056 6572 7369 6f6e 2032  cense, Version 2\n-000005f0: 2e30 3c2f 6e61 6d65 3e0d 0a20 2020 2020  .0</name>..     \n-00000600: 203c 7572 6c3e 6874 7470 3a2f 2f77 7777   <url>http://www\n-00000610: 2e61 7061 6368 652e 6f72 672f 6c69 6365  .apache.org/lice\n-00000620: 6e73 6573 2f4c 4943 454e 5345 2d32 2e30  nses/LICENSE-2.0\n-00000630: 3c2f 7572 6c3e 0d0a 2020 2020 2020 3c64  </url>..      <d\n-00000640: 6973 7472 6962 7574 696f 6e3e 7265 706f  istribution>repo\n-00000650: 3c2f 6469 7374 7269 6275 7469 6f6e 3e0d  </distribution>.\n-00000660: 0a20 2020 203c 2f6c 6963 656e 7365 3e0d  .    </license>.\n-00000670: 0a20 203c 2f6c 6963 656e 7365 733e 0d0a  .  </licenses>..\n-00000680: 2020 3c70 726f 7065 7274 6965 733e 0d0a    <properties>..\n-00000690: 2020 2020 3c73 6b69 705f 6d61 7665 6e5f      <skip_maven_\n-000006a0: 6465 706c 6f79 3e66 616c 7365 3c2f 736b  deploy>false</sk\n-000006b0: 6970 5f6d 6176 656e 5f64 6570 6c6f 793e  ip_maven_deploy>\n-000006c0: 0d0a 2020 3c2f 7072 6f70 6572 7469 6573  ..  </properties\n-000006d0: 3e0d 0a20 203c 6465 7065 6e64 656e 6369  >..  <dependenci\n-000006e0: 6573 3e0d 0a20 2020 203c 6465 7065 6e64  es>..    <depend\n-000006f0: 656e 6379 3e0d 0a20 2020 2020 203c 6772  ency>..      <gr\n-00000700: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n-00000710: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n-00000720: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-00000730: 7449 643e 6475 6262 6f2d 7365 7269 616c  tId>dubbo-serial\n-00000740: 697a 6174 696f 6e2d 6170 693c 2f61 7274  ization-api</art\n-00000750: 6966 6163 7449 643e 0d0a 2020 2020 2020  ifactId>..      \n-00000760: 3c76 6572 7369 6f6e 3e24 7b70 726f 6a65  <version>${proje\n-00000770: 6374 2e70 6172 656e 742e 7665 7273 696f  ct.parent.versio\n-00000780: 6e7d 3c2f 7665 7273 696f 6e3e 0d0a 2020  n}</version>..  \n-00000790: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-000007a0: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-000007b0: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-000007c0: 643e 636f 6d2e 6573 6f74 6572 6963 736f  d>com.esotericso\n-000007d0: 6674 7761 7265 3c2f 6772 6f75 7049 643e  ftware</groupId>\n-000007e0: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-000007f0: 7449 643e 6b72 796f 3c2f 6172 7469 6661  tId>kryo</artifa\n-00000800: 6374 4964 3e0d 0a20 2020 203c 2f64 6570  ctId>..    </dep\n-00000810: 656e 6465 6e63 793e 0d0a 2020 2020 3c64  endency>..    <d\n-00000820: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000830: 2020 3c67 726f 7570 4964 3e64 652e 6a61    <groupId>de.ja\n-00000840: 7661 6b61 6666 6565 3c2f 6772 6f75 7049  vakaffee</groupI\n-00000850: 643e 0d0a 2020 2020 2020 3c61 7274 6966  d>..      <artif\n-00000860: 6163 7449 643e 6b72 796f 2d73 6572 6961  actId>kryo-seria\n-00000870: 6c69 7a65 7273 3c2f 6172 7469 6661 6374  lizers</artifact\n-00000880: 4964 3e0d 0a20 2020 203c 2f64 6570 656e  Id>..    </depen\n-00000890: 6465 6e63 793e 0d0a 2020 3c2f 6465 7065  dency>..  </depe\n-000008a0: 6e64 656e 6369 6573 3e0d 0a3c 2f70 726f  ndencies>..</pro\n-000008b0: 6a65 6374 3e0d 0a                        ject>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 4c69 6365  F-8\"?>.<!--.Lice\n+00000030: 6e73 6564 2074 6f20 7468 6520 4170 6163  nsed to the Apac\n+00000040: 6865 2053 6f66 7477 6172 6520 466f 756e  he Software Foun\n+00000050: 6461 7469 6f6e 2028 4153 4629 2075 6e64  dation (ASF) und\n+00000060: 6572 206f 6e65 206f 7220 6d6f 7265 0a63  er one or more.c\n+00000070: 6f6e 7472 6962 7574 6f72 206c 6963 656e  ontributor licen\n+00000080: 7365 2061 6772 6565 6d65 6e74 732e 2020  se agreements.  \n+00000090: 5365 6520 7468 6520 4e4f 5449 4345 2066  See the NOTICE f\n+000000a0: 696c 6520 6469 7374 7269 6275 7465 6420  ile distributed \n+000000b0: 7769 7468 0a74 6869 7320 776f 726b 2066  with.this work f\n+000000c0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n+000000d0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n+000000e0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n+000000f0: 6e65 7273 6869 702e 0a54 6865 2041 5346  nership..The ASF\n+00000100: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000110: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000120: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000130: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000140: 0a28 7468 6520 224c 6963 656e 7365 2229  .(the \"License\")\n+00000150: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n+00000160: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n+00000170: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n+00000180: 2077 6974 680a 7468 6520 4c69 6365 6e73   with.the Licens\n+00000190: 652e 2020 596f 7520 6d61 7920 6f62 7461  e.  You may obta\n+000001a0: 696e 2061 2063 6f70 7920 6f66 2074 6865  in a copy of the\n+000001b0: 204c 6963 656e 7365 2061 740a 0a20 2020   License at..   \n+000001c0: 2020 6874 7470 3a2f 2f77 7777 2e61 7061    http://www.apa\n+000001d0: 6368 652e 6f72 672f 6c69 6365 6e73 6573  che.org/licenses\n+000001e0: 2f4c 4943 454e 5345 2d32 2e30 0a0a 556e  /LICENSE-2.0..Un\n+000001f0: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n+00000200: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n+00000210: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n+00000220: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n+00000230: 650a 6469 7374 7269 6275 7465 6420 756e  e.distributed un\n+00000240: 6465 7220 7468 6520 4c69 6365 6e73 6520  der the License \n+00000250: 6973 2064 6973 7472 6962 7574 6564 206f  is distributed o\n+00000260: 6e20 616e 2022 4153 2049 5322 2042 4153  n an \"AS IS\" BAS\n+00000270: 4953 2c0a 5749 5448 4f55 5420 5741 5252  IS,.WITHOUT WARR\n+00000280: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n+00000290: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n+000002a0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n+000002b0: 206f 7220 696d 706c 6965 642e 0a53 6565   or implied..See\n+000002c0: 2074 6865 204c 6963 656e 7365 2066 6f72   the License for\n+000002d0: 2074 6865 2073 7065 6369 6669 6320 6c61   the specific la\n+000002e0: 6e67 7561 6765 2067 6f76 6572 6e69 6e67  nguage governing\n+000002f0: 2070 6572 6d69 7373 696f 6e73 2061 6e64   permissions and\n+00000300: 0a6c 696d 6974 6174 696f 6e73 2075 6e64  .limitations und\n+00000310: 6572 2074 6865 204c 6963 656e 7365 2e0a  er the License..\n+00000320: 2d2d 3e0a 3c70 726f 6a65 6374 2078 7369  -->.<project xsi\n+00000330: 3a73 6368 656d 614c 6f63 6174 696f 6e3d  :schemaLocation=\n+00000340: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+00000350: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+00000360: 2e30 2068 7474 7073 3a2f 2f6d 6176 656e  .0 https://maven\n+00000370: 2e61 7061 6368 652e 6f72 672f 7873 642f  .apache.org/xsd/\n+00000380: 6d61 7665 6e2d 342e 302e 302e 7873 6422  maven-4.0.0.xsd\"\n+00000390: 2078 6d6c 6e73 3d22 6874 7470 3a2f 2f6d   xmlns=\"http://m\n+000003a0: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+000003b0: 504f 4d2f 342e 302e 3022 0a20 2020 2078  POM/4.0.0\".    x\n+000003c0: 6d6c 6e73 3a78 7369 3d22 6874 7470 3a2f  mlns:xsi=\"http:/\n+000003d0: 2f77 7777 2e77 332e 6f72 672f 3230 3031  /www.w3.org/2001\n+000003e0: 2f58 4d4c 5363 6865 6d61 2d69 6e73 7461  /XMLSchema-insta\n+000003f0: 6e63 6522 3e0a 2020 3c6d 6f64 656c 5665  nce\">.  <modelVe\n+00000400: 7273 696f 6e3e 342e 302e 303c 2f6d 6f64  rsion>4.0.0</mod\n+00000410: 656c 5665 7273 696f 6e3e 0a20 203c 7061  elVersion>.  <pa\n+00000420: 7265 6e74 3e0a 2020 2020 3c67 726f 7570  rent>.    <group\n+00000430: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+00000440: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000450: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000460: 6262 6f2d 7365 7269 616c 697a 6174 696f  bbo-serializatio\n+00000470: 6e3c 2f61 7274 6966 6163 7449 643e 0a20  n</artifactId>. \n+00000480: 2020 203c 7665 7273 696f 6e3e 322e 372e     <version>2.7.\n+00000490: 3130 3c2f 7665 7273 696f 6e3e 0a20 203c  10</version>.  <\n+000004a0: 2f70 6172 656e 743e 0a20 203c 6772 6f75  /parent>.  <grou\n+000004b0: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n+000004c0: 7562 626f 3c2f 6772 6f75 7049 643e 0a20  ubbo</groupId>. \n+000004d0: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+000004e0: 626f 2d73 6572 6961 6c69 7a61 7469 6f6e  bo-serialization\n+000004f0: 2d6b 7279 6f3c 2f61 7274 6966 6163 7449  -kryo</artifactI\n+00000500: 643e 0a20 203c 7665 7273 696f 6e3e 322e  d>.  <version>2.\n+00000510: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+00000520: 203c 6e61 6d65 3e24 7b70 726f 6a65 6374   <name>${project\n+00000530: 2e61 7274 6966 6163 7449 647d 3c2f 6e61  .artifactId}</na\n+00000540: 6d65 3e0a 2020 3c64 6573 6372 6970 7469  me>.  <descripti\n+00000550: 6f6e 3e54 6865 206b 7279 6f20 7365 7269  on>The kryo seri\n+00000560: 616c 697a 6174 696f 6e20 6d6f 6475 6c65  alization module\n+00000570: 206f 6620 6475 6262 6f20 7072 6f6a 6563   of dubbo projec\n+00000580: 743c 2f64 6573 6372 6970 7469 6f6e 3e0a  t</description>.\n+00000590: 2020 3c6c 6963 656e 7365 733e 0a20 2020    <licenses>.   \n+000005a0: 203c 6c69 6365 6e73 653e 0a20 2020 2020   <license>.     \n+000005b0: 203c 6e61 6d65 3e41 7061 6368 6520 4c69   <name>Apache Li\n+000005c0: 6365 6e73 652c 2056 6572 7369 6f6e 2032  cense, Version 2\n+000005d0: 2e30 3c2f 6e61 6d65 3e0a 2020 2020 2020  .0</name>.      \n+000005e0: 3c75 726c 3e68 7474 703a 2f2f 7777 772e  <url>http://www.\n+000005f0: 6170 6163 6865 2e6f 7267 2f6c 6963 656e  apache.org/licen\n+00000600: 7365 732f 4c49 4345 4e53 452d 322e 303c  ses/LICENSE-2.0<\n+00000610: 2f75 726c 3e0a 2020 2020 2020 3c64 6973  /url>.      <dis\n+00000620: 7472 6962 7574 696f 6e3e 7265 706f 3c2f  tribution>repo</\n+00000630: 6469 7374 7269 6275 7469 6f6e 3e0a 2020  distribution>.  \n+00000640: 2020 3c2f 6c69 6365 6e73 653e 0a20 203c    </license>.  <\n+00000650: 2f6c 6963 656e 7365 733e 0a20 203c 7072  /licenses>.  <pr\n+00000660: 6f70 6572 7469 6573 3e0a 2020 2020 3c73  operties>.    <s\n+00000670: 6b69 705f 6d61 7665 6e5f 6465 706c 6f79  kip_maven_deploy\n+00000680: 3e66 616c 7365 3c2f 736b 6970 5f6d 6176  >false</skip_mav\n+00000690: 656e 5f64 6570 6c6f 793e 0a20 203c 2f70  en_deploy>.  </p\n+000006a0: 726f 7065 7274 6965 733e 0a20 203c 6465  roperties>.  <de\n+000006b0: 7065 6e64 656e 6369 6573 3e0a 2020 2020  pendencies>.    \n+000006c0: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+000006d0: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+000006e0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+000006f0: 6f75 7049 643e 0a20 2020 2020 203c 6172  oupId>.      <ar\n+00000700: 7469 6661 6374 4964 3e64 7562 626f 2d73  tifactId>dubbo-s\n+00000710: 6572 6961 6c69 7a61 7469 6f6e 2d61 7069  erialization-api\n+00000720: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000730: 2020 2020 3c76 6572 7369 6f6e 3e24 7b70      <version>${p\n+00000740: 726f 6a65 6374 2e70 6172 656e 742e 7665  roject.parent.ve\n+00000750: 7273 696f 6e7d 3c2f 7665 7273 696f 6e3e  rsion}</version>\n+00000760: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+00000770: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+00000780: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+00000790: 4964 3e63 6f6d 2e65 736f 7465 7269 6373  Id>com.esoterics\n+000007a0: 6f66 7477 6172 653c 2f67 726f 7570 4964  oftware</groupId\n+000007b0: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+000007c0: 7449 643e 6b72 796f 3c2f 6172 7469 6661  tId>kryo</artifa\n+000007d0: 6374 4964 3e0a 2020 2020 3c2f 6465 7065  ctId>.    </depe\n+000007e0: 6e64 656e 6379 3e0a 2020 2020 3c64 6570  ndency>.    <dep\n+000007f0: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+00000800: 6772 6f75 7049 643e 6465 2e6a 6176 616b  groupId>de.javak\n+00000810: 6166 6665 653c 2f67 726f 7570 4964 3e0a  affee</groupId>.\n+00000820: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n+00000830: 643e 6b72 796f 2d73 6572 6961 6c69 7a65  d>kryo-serialize\n+00000840: 7273 3c2f 6172 7469 6661 6374 4964 3e0a  rs</artifactId>.\n+00000850: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000860: 3e0a 2020 3c2f 6465 7065 6e64 656e 6369  >.  </dependenci\n+00000870: 6573 3e0a 3c2f 7072 6f6a 6563 743e 0a    es>.</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-serialization-avro/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-serialization-avro/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,133 +1,130 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d73 6572 6961 6c69 7a61 7469 6f6e  bo-serialization\n-000004a0: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-000004b0: 2020 203c 7665 7273 696f 6e3e 322e 372e     <version>2.7.\n-000004c0: 3130 3c2f 7665 7273 696f 6e3e 0d0a 2020  10</version>..  \n-000004d0: 3c2f 7061 7265 6e74 3e0d 0a20 203c 6772  </parent>..  <gr\n-000004e0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n-000004f0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n-00000500: 0d0a 2020 3c61 7274 6966 6163 7449 643e  ..  <artifactId>\n-00000510: 6475 6262 6f2d 7365 7269 616c 697a 6174  dubbo-serializat\n-00000520: 696f 6e2d 6176 726f 3c2f 6172 7469 6661  ion-avro</artifa\n-00000530: 6374 4964 3e0d 0a20 203c 7665 7273 696f  ctId>..  <versio\n-00000540: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n-00000550: 6e3e 0d0a 2020 3c6e 616d 653e 247b 7072  n>..  <name>${pr\n-00000560: 6f6a 6563 742e 6172 7469 6661 6374 4964  oject.artifactId\n-00000570: 7d3c 2f6e 616d 653e 0d0a 2020 3c64 6573  }</name>..  <des\n-00000580: 6372 6970 7469 6f6e 3e54 6865 2061 7672  cription>The avr\n-00000590: 6f20 7365 7269 616c 697a 6174 696f 6e20  o serialization \n-000005a0: 6d6f 6475 6c65 206f 6620 6475 6262 6f20  module of dubbo \n-000005b0: 7072 6f6a 6563 743c 2f64 6573 6372 6970  project</descrip\n-000005c0: 7469 6f6e 3e0d 0a20 203c 6c69 6365 6e73  tion>..  <licens\n-000005d0: 6573 3e0d 0a20 2020 203c 6c69 6365 6e73  es>..    <licens\n-000005e0: 653e 0d0a 2020 2020 2020 3c6e 616d 653e  e>..      <name>\n-000005f0: 4170 6163 6865 204c 6963 656e 7365 2c20  Apache License, \n-00000600: 5665 7273 696f 6e20 322e 303c 2f6e 616d  Version 2.0</nam\n-00000610: 653e 0d0a 2020 2020 2020 3c75 726c 3e68  e>..      <url>h\n-00000620: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n-00000630: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n-00000640: 4345 4e53 452d 322e 303c 2f75 726c 3e0d  CENSE-2.0</url>.\n-00000650: 0a20 2020 2020 203c 6469 7374 7269 6275  .      <distribu\n-00000660: 7469 6f6e 3e72 6570 6f3c 2f64 6973 7472  tion>repo</distr\n-00000670: 6962 7574 696f 6e3e 0d0a 2020 2020 3c2f  ibution>..    </\n-00000680: 6c69 6365 6e73 653e 0d0a 2020 3c2f 6c69  license>..  </li\n-00000690: 6365 6e73 6573 3e0d 0a20 203c 7072 6f70  censes>..  <prop\n-000006a0: 6572 7469 6573 3e0d 0a20 2020 203c 736b  erties>..    <sk\n-000006b0: 6970 5f6d 6176 656e 5f64 6570 6c6f 793e  ip_maven_deploy>\n-000006c0: 6661 6c73 653c 2f73 6b69 705f 6d61 7665  false</skip_mave\n-000006d0: 6e5f 6465 706c 6f79 3e0d 0a20 203c 2f70  n_deploy>..  </p\n-000006e0: 726f 7065 7274 6965 733e 0d0a 2020 3c64  roperties>..  <d\n-000006f0: 6570 656e 6465 6e63 6965 733e 0d0a 2020  ependencies>..  \n-00000700: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-00000710: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n-00000720: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000730: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-00000740: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000750: 626f 2d73 6572 6961 6c69 7a61 7469 6f6e  bo-serialization\n-00000760: 2d61 7069 3c2f 6172 7469 6661 6374 4964  -api</artifactId\n-00000770: 3e0d 0a20 2020 2020 203c 7665 7273 696f  >..      <versio\n-00000780: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n-00000790: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n-000007a0: 7369 6f6e 3e0d 0a20 2020 203c 2f64 6570  sion>..    </dep\n-000007b0: 656e 6465 6e63 793e 0d0a 2020 2020 3c64  endency>..    <d\n-000007c0: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-000007d0: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n-000007e0: 7061 6368 652e 6176 726f 3c2f 6772 6f75  pache.avro</grou\n-000007f0: 7049 643e 0d0a 2020 2020 2020 3c61 7274  pId>..      <art\n-00000800: 6966 6163 7449 643e 6176 726f 3c2f 6172  ifactId>avro</ar\n-00000810: 7469 6661 6374 4964 3e0d 0a20 2020 203c  tifactId>..    <\n-00000820: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-00000830: 3c2f 6465 7065 6e64 656e 6369 6573 3e0d  </dependencies>.\n-00000840: 0a3c 2f70 726f 6a65 6374 3e0d 0a         .</project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d73 6572  factId>dubbo-ser\n+00000480: 6961 6c69 7a61 7469 6f6e 3c2f 6172 7469  ialization</arti\n+00000490: 6661 6374 4964 3e0a 2020 2020 3c76 6572  factId>.    <ver\n+000004a0: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n+000004b0: 7369 6f6e 3e0a 2020 3c2f 7061 7265 6e74  sion>.  </parent\n+000004c0: 3e0a 2020 3c67 726f 7570 4964 3e6f 7267  >.  <groupId>org\n+000004d0: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n+000004e0: 726f 7570 4964 3e0a 2020 3c61 7274 6966  roupId>.  <artif\n+000004f0: 6163 7449 643e 6475 6262 6f2d 7365 7269  actId>dubbo-seri\n+00000500: 616c 697a 6174 696f 6e2d 6176 726f 3c2f  alization-avro</\n+00000510: 6172 7469 6661 6374 4964 3e0a 2020 3c76  artifactId>.  <v\n+00000520: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n+00000530: 6572 7369 6f6e 3e0a 2020 3c6e 616d 653e  ersion>.  <name>\n+00000540: 247b 7072 6f6a 6563 742e 6172 7469 6661  ${project.artifa\n+00000550: 6374 4964 7d3c 2f6e 616d 653e 0a20 203c  ctId}</name>.  <\n+00000560: 6465 7363 7269 7074 696f 6e3e 5468 6520  description>The \n+00000570: 6176 726f 2073 6572 6961 6c69 7a61 7469  avro serializati\n+00000580: 6f6e 206d 6f64 756c 6520 6f66 2064 7562  on module of dub\n+00000590: 626f 2070 726f 6a65 6374 3c2f 6465 7363  bo project</desc\n+000005a0: 7269 7074 696f 6e3e 0a20 203c 6c69 6365  ription>.  <lice\n+000005b0: 6e73 6573 3e0a 2020 2020 3c6c 6963 656e  nses>.    <licen\n+000005c0: 7365 3e0a 2020 2020 2020 3c6e 616d 653e  se>.      <name>\n+000005d0: 4170 6163 6865 204c 6963 656e 7365 2c20  Apache License, \n+000005e0: 5665 7273 696f 6e20 322e 303c 2f6e 616d  Version 2.0</nam\n+000005f0: 653e 0a20 2020 2020 203c 7572 6c3e 6874  e>.      <url>ht\n+00000600: 7470 3a2f 2f77 7777 2e61 7061 6368 652e  tp://www.apache.\n+00000610: 6f72 672f 6c69 6365 6e73 6573 2f4c 4943  org/licenses/LIC\n+00000620: 454e 5345 2d32 2e30 3c2f 7572 6c3e 0a20  ENSE-2.0</url>. \n+00000630: 2020 2020 203c 6469 7374 7269 6275 7469       <distributi\n+00000640: 6f6e 3e72 6570 6f3c 2f64 6973 7472 6962  on>repo</distrib\n+00000650: 7574 696f 6e3e 0a20 2020 203c 2f6c 6963  ution>.    </lic\n+00000660: 656e 7365 3e0a 2020 3c2f 6c69 6365 6e73  ense>.  </licens\n+00000670: 6573 3e0a 2020 3c70 726f 7065 7274 6965  es>.  <propertie\n+00000680: 733e 0a20 2020 203c 736b 6970 5f6d 6176  s>.    <skip_mav\n+00000690: 656e 5f64 6570 6c6f 793e 6661 6c73 653c  en_deploy>false<\n+000006a0: 2f73 6b69 705f 6d61 7665 6e5f 6465 706c  /skip_maven_depl\n+000006b0: 6f79 3e0a 2020 3c2f 7072 6f70 6572 7469  oy>.  </properti\n+000006c0: 6573 3e0a 2020 3c64 6570 656e 6465 6e63  es>.  <dependenc\n+000006d0: 6965 733e 0a20 2020 203c 6465 7065 6e64  ies>.    <depend\n+000006e0: 656e 6379 3e0a 2020 2020 2020 3c67 726f  ency>.      <gro\n+000006f0: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n+00000700: 6475 6262 6f3c 2f67 726f 7570 4964 3e0a  dubbo</groupId>.\n+00000710: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n+00000720: 643e 6475 6262 6f2d 7365 7269 616c 697a  d>dubbo-serializ\n+00000730: 6174 696f 6e2d 6170 693c 2f61 7274 6966  ation-api</artif\n+00000740: 6163 7449 643e 0a20 2020 2020 203c 7665  actId>.      <ve\n+00000750: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n+00000760: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n+00000770: 2f76 6572 7369 6f6e 3e0a 2020 2020 3c2f  /version>.    </\n+00000780: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000790: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+000007a0: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+000007b0: 6170 6163 6865 2e61 7672 6f3c 2f67 726f  apache.avro</gro\n+000007c0: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+000007d0: 6966 6163 7449 643e 6176 726f 3c2f 6172  ifactId>avro</ar\n+000007e0: 7469 6661 6374 4964 3e0a 2020 2020 3c2f  tifactId>.    </\n+000007f0: 6465 7065 6e64 656e 6379 3e0a 2020 3c2f  dependency>.  </\n+00000800: 6465 7065 6e64 656e 6369 6573 3e0a 3c2f  dependencies>.</\n+00000810: 7072 6f6a 6563 743e 0a                   project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-serialization-protostuff/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-serialization-protostuff/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,147 +1,144 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 4c69  F-8\"?>..<!--..Li\n-00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n-00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n-00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n-00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n-00000070: 0d0a 636f 6e74 7269 6275 746f 7220 6c69  ..contributor li\n-00000080: 6365 6e73 6520 6167 7265 656d 656e 7473  cense agreements\n-00000090: 2e20 2053 6565 2074 6865 204e 4f54 4943  .  See the NOTIC\n-000000a0: 4520 6669 6c65 2064 6973 7472 6962 7574  E file distribut\n-000000b0: 6564 2077 6974 680d 0a74 6869 7320 776f  ed with..this wo\n-000000c0: 726b 2066 6f72 2061 6464 6974 696f 6e61  rk for additiona\n-000000d0: 6c20 696e 666f 726d 6174 696f 6e20 7265  l information re\n-000000e0: 6761 7264 696e 6720 636f 7079 7269 6768  garding copyrigh\n-000000f0: 7420 6f77 6e65 7273 6869 702e 0d0a 5468  t ownership...Th\n-00000100: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000110: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000120: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000130: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000140: 6e20 322e 300d 0a28 7468 6520 224c 6963  n 2.0..(the \"Lic\n-00000150: 656e 7365 2229 3b20 796f 7520 6d61 7920  ense\"); you may \n-00000160: 6e6f 7420 7573 6520 7468 6973 2066 696c  not use this fil\n-00000170: 6520 6578 6365 7074 2069 6e20 636f 6d70  e except in comp\n-00000180: 6c69 616e 6365 2077 6974 680d 0a74 6865  liance with..the\n-00000190: 204c 6963 656e 7365 2e20 2059 6f75 206d   License.  You m\n-000001a0: 6179 206f 6274 6169 6e20 6120 636f 7079  ay obtain a copy\n-000001b0: 206f 6620 7468 6520 4c69 6365 6e73 6520   of the License \n-000001c0: 6174 0d0a 0d0a 2020 2020 2068 7474 703a  at....     http:\n-000001d0: 2f2f 7777 772e 6170 6163 6865 2e6f 7267  //www.apache.org\n-000001e0: 2f6c 6963 656e 7365 732f 4c49 4345 4e53  /licenses/LICENS\n-000001f0: 452d 322e 300d 0a0d 0a55 6e6c 6573 7320  E-2.0....Unless \n-00000200: 7265 7175 6972 6564 2062 7920 6170 706c  required by appl\n-00000210: 6963 6162 6c65 206c 6177 206f 7220 6167  icable law or ag\n-00000220: 7265 6564 2074 6f20 696e 2077 7269 7469  reed to in writi\n-00000230: 6e67 2c20 736f 6674 7761 7265 0d0a 6469  ng, software..di\n-00000240: 7374 7269 6275 7465 6420 756e 6465 7220  stributed under \n-00000250: 7468 6520 4c69 6365 6e73 6520 6973 2064  the License is d\n-00000260: 6973 7472 6962 7574 6564 206f 6e20 616e  istributed on an\n-00000270: 2022 4153 2049 5322 2042 4153 4953 2c0d   \"AS IS\" BASIS,.\n-00000280: 0a57 4954 484f 5554 2057 4152 5241 4e54  .WITHOUT WARRANT\n-00000290: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n-000002a0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n-000002b0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n-000002c0: 2069 6d70 6c69 6564 2e0d 0a53 6565 2074   implied...See t\n-000002d0: 6865 204c 6963 656e 7365 2066 6f72 2074  he License for t\n-000002e0: 6865 2073 7065 6369 6669 6320 6c61 6e67  he specific lang\n-000002f0: 7561 6765 2067 6f76 6572 6e69 6e67 2070  uage governing p\n-00000300: 6572 6d69 7373 696f 6e73 2061 6e64 0d0a  ermissions and..\n-00000310: 6c69 6d69 7461 7469 6f6e 7320 756e 6465  limitations unde\n-00000320: 7220 7468 6520 4c69 6365 6e73 652e 0d0a  r the License...\n-00000330: 2d2d 3e0d 0a3c 7072 6f6a 6563 7420 7873  -->..<project xs\n-00000340: 693a 7363 6865 6d61 4c6f 6361 7469 6f6e  i:schemaLocation\n-00000350: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-00000360: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-00000370: 302e 3020 6874 7470 733a 2f2f 6d61 7665  0.0 https://mave\n-00000380: 6e2e 6170 6163 6865 2e6f 7267 2f78 7364  n.apache.org/xsd\n-00000390: 2f6d 6176 656e 2d34 2e30 2e30 2e78 7364  /maven-4.0.0.xsd\n-000003a0: 2220 786d 6c6e 733d 2268 7474 703a 2f2f  \" xmlns=\"http://\n-000003b0: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003c0: 2f50 4f4d 2f34 2e30 2e30 220d 0a20 2020  /POM/4.0.0\"..   \n-000003d0: 2078 6d6c 6e73 3a78 7369 3d22 6874 7470   xmlns:xsi=\"http\n-000003e0: 3a2f 2f77 7777 2e77 332e 6f72 672f 3230  ://www.w3.org/20\n-000003f0: 3031 2f58 4d4c 5363 6865 6d61 2d69 6e73  01/XMLSchema-ins\n-00000400: 7461 6e63 6522 3e0d 0a20 203c 6d6f 6465  tance\">..  <mode\n-00000410: 6c56 6572 7369 6f6e 3e34 2e30 2e30 3c2f  lVersion>4.0.0</\n-00000420: 6d6f 6465 6c56 6572 7369 6f6e 3e0d 0a20  modelVersion>.. \n-00000430: 203c 7061 7265 6e74 3e0d 0a20 2020 203c   <parent>..    <\n-00000440: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n-00000450: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n-00000460: 643e 0d0a 2020 2020 3c61 7274 6966 6163  d>..    <artifac\n-00000470: 7449 643e 6475 6262 6f2d 7365 7269 616c  tId>dubbo-serial\n-00000480: 697a 6174 696f 6e3c 2f61 7274 6966 6163  ization</artifac\n-00000490: 7449 643e 0d0a 2020 2020 3c76 6572 7369  tId>..    <versi\n-000004a0: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n-000004b0: 6f6e 3e0d 0a20 203c 2f70 6172 656e 743e  on>..  </parent>\n-000004c0: 0d0a 2020 3c67 726f 7570 4964 3e6f 7267  ..  <groupId>org\n-000004d0: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-000004e0: 726f 7570 4964 3e0d 0a20 203c 6172 7469  roupId>..  <arti\n-000004f0: 6661 6374 4964 3e64 7562 626f 2d73 6572  factId>dubbo-ser\n-00000500: 6961 6c69 7a61 7469 6f6e 2d70 726f 746f  ialization-proto\n-00000510: 7374 7566 663c 2f61 7274 6966 6163 7449  stuff</artifactI\n-00000520: 643e 0d0a 2020 3c76 6572 7369 6f6e 3e32  d>..  <version>2\n-00000530: 2e37 2e31 303c 2f76 6572 7369 6f6e 3e0d  .7.10</version>.\n-00000540: 0a20 203c 6e61 6d65 3e24 7b70 726f 6a65  .  <name>${proje\n-00000550: 6374 2e61 7274 6966 6163 7449 647d 3c2f  ct.artifactId}</\n-00000560: 6e61 6d65 3e0d 0a20 203c 6465 7363 7269  name>..  <descri\n-00000570: 7074 696f 6e3e 5468 6520 7072 6f74 6f73  ption>The protos\n-00000580: 7475 6666 2073 6572 6961 6c69 7a61 7469  tuff serializati\n-00000590: 6f6e 206d 6f64 756c 6520 6f66 2064 7562  on module of dub\n-000005a0: 626f 2070 726f 6a65 6374 3c2f 6465 7363  bo project</desc\n-000005b0: 7269 7074 696f 6e3e 0d0a 2020 3c6c 6963  ription>..  <lic\n-000005c0: 656e 7365 733e 0d0a 2020 2020 3c6c 6963  enses>..    <lic\n-000005d0: 656e 7365 3e0d 0a20 2020 2020 203c 6e61  ense>..      <na\n-000005e0: 6d65 3e41 7061 6368 6520 4c69 6365 6e73  me>Apache Licens\n-000005f0: 652c 2056 6572 7369 6f6e 2032 2e30 3c2f  e, Version 2.0</\n-00000600: 6e61 6d65 3e0d 0a20 2020 2020 203c 7572  name>..      <ur\n-00000610: 6c3e 6874 7470 3a2f 2f77 7777 2e61 7061  l>http://www.apa\n-00000620: 6368 652e 6f72 672f 6c69 6365 6e73 6573  che.org/licenses\n-00000630: 2f4c 4943 454e 5345 2d32 2e30 3c2f 7572  /LICENSE-2.0</ur\n-00000640: 6c3e 0d0a 2020 2020 2020 3c64 6973 7472  l>..      <distr\n-00000650: 6962 7574 696f 6e3e 7265 706f 3c2f 6469  ibution>repo</di\n-00000660: 7374 7269 6275 7469 6f6e 3e0d 0a20 2020  stribution>..   \n-00000670: 203c 2f6c 6963 656e 7365 3e0d 0a20 203c   </license>..  <\n-00000680: 2f6c 6963 656e 7365 733e 0d0a 2020 3c70  /licenses>..  <p\n-00000690: 726f 7065 7274 6965 733e 0d0a 2020 2020  roperties>..    \n-000006a0: 3c70 726f 746f 7374 7566 662e 7665 7273  <protostuff.vers\n-000006b0: 696f 6e3e 312e 352e 393c 2f70 726f 746f  ion>1.5.9</proto\n-000006c0: 7374 7566 662e 7665 7273 696f 6e3e 0d0a  stuff.version>..\n-000006d0: 2020 3c2f 7072 6f70 6572 7469 6573 3e0d    </properties>.\n-000006e0: 0a20 203c 6465 7065 6e64 656e 6369 6573  .  <dependencies\n-000006f0: 3e0d 0a20 2020 203c 6465 7065 6e64 656e  >..    <dependen\n-00000700: 6379 3e0d 0a20 2020 2020 203c 6772 6f75  cy>..      <grou\n-00000710: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n-00000720: 7562 626f 3c2f 6772 6f75 7049 643e 0d0a  ubbo</groupId>..\n-00000730: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n-00000740: 643e 6475 6262 6f2d 7365 7269 616c 697a  d>dubbo-serializ\n-00000750: 6174 696f 6e2d 6170 693c 2f61 7274 6966  ation-api</artif\n-00000760: 6163 7449 643e 0d0a 2020 2020 2020 3c76  actId>..      <v\n-00000770: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n-00000780: 2e70 6172 656e 742e 7665 7273 696f 6e7d  .parent.version}\n-00000790: 3c2f 7665 7273 696f 6e3e 0d0a 2020 2020  </version>..    \n-000007a0: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-000007b0: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-000007c0: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-000007d0: 696f 2e70 726f 746f 7374 7566 663c 2f67  io.protostuff</g\n-000007e0: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-000007f0: 6172 7469 6661 6374 4964 3e70 726f 746f  artifactId>proto\n-00000800: 7374 7566 662d 636f 7265 3c2f 6172 7469  stuff-core</arti\n-00000810: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-00000820: 7665 7273 696f 6e3e 247b 7072 6f74 6f73  version>${protos\n-00000830: 7475 6666 2e76 6572 7369 6f6e 7d3c 2f76  tuff.version}</v\n-00000840: 6572 7369 6f6e 3e0d 0a20 2020 203c 2f64  ersion>..    </d\n-00000850: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000860: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-00000870: 2020 2020 3c67 726f 7570 4964 3e69 6f2e      <groupId>io.\n-00000880: 7072 6f74 6f73 7475 6666 3c2f 6772 6f75  protostuff</grou\n-00000890: 7049 643e 0d0a 2020 2020 2020 3c61 7274  pId>..      <art\n-000008a0: 6966 6163 7449 643e 7072 6f74 6f73 7475  ifactId>protostu\n-000008b0: 6666 2d72 756e 7469 6d65 3c2f 6172 7469  ff-runtime</arti\n-000008c0: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-000008d0: 7665 7273 696f 6e3e 247b 7072 6f74 6f73  version>${protos\n-000008e0: 7475 6666 2e76 6572 7369 6f6e 7d3c 2f76  tuff.version}</v\n-000008f0: 6572 7369 6f6e 3e0d 0a20 2020 203c 2f64  ersion>..    </d\n-00000900: 6570 656e 6465 6e63 793e 0d0a 2020 3c2f  ependency>..  </\n-00000910: 6465 7065 6e64 656e 6369 6573 3e0d 0a3c  dependencies>..<\n-00000920: 2f70 726f 6a65 6374 3e0d 0a              /project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 4c69 6365  F-8\"?>.<!--.Lice\n+00000030: 6e73 6564 2074 6f20 7468 6520 4170 6163  nsed to the Apac\n+00000040: 6865 2053 6f66 7477 6172 6520 466f 756e  he Software Foun\n+00000050: 6461 7469 6f6e 2028 4153 4629 2075 6e64  dation (ASF) und\n+00000060: 6572 206f 6e65 206f 7220 6d6f 7265 0a63  er one or more.c\n+00000070: 6f6e 7472 6962 7574 6f72 206c 6963 656e  ontributor licen\n+00000080: 7365 2061 6772 6565 6d65 6e74 732e 2020  se agreements.  \n+00000090: 5365 6520 7468 6520 4e4f 5449 4345 2066  See the NOTICE f\n+000000a0: 696c 6520 6469 7374 7269 6275 7465 6420  ile distributed \n+000000b0: 7769 7468 0a74 6869 7320 776f 726b 2066  with.this work f\n+000000c0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n+000000d0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n+000000e0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n+000000f0: 6e65 7273 6869 702e 0a54 6865 2041 5346  nership..The ASF\n+00000100: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000110: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000120: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000130: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000140: 0a28 7468 6520 224c 6963 656e 7365 2229  .(the \"License\")\n+00000150: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n+00000160: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n+00000170: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n+00000180: 2077 6974 680a 7468 6520 4c69 6365 6e73   with.the Licens\n+00000190: 652e 2020 596f 7520 6d61 7920 6f62 7461  e.  You may obta\n+000001a0: 696e 2061 2063 6f70 7920 6f66 2074 6865  in a copy of the\n+000001b0: 204c 6963 656e 7365 2061 740a 0a20 2020   License at..   \n+000001c0: 2020 6874 7470 3a2f 2f77 7777 2e61 7061    http://www.apa\n+000001d0: 6368 652e 6f72 672f 6c69 6365 6e73 6573  che.org/licenses\n+000001e0: 2f4c 4943 454e 5345 2d32 2e30 0a0a 556e  /LICENSE-2.0..Un\n+000001f0: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n+00000200: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n+00000210: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n+00000220: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n+00000230: 650a 6469 7374 7269 6275 7465 6420 756e  e.distributed un\n+00000240: 6465 7220 7468 6520 4c69 6365 6e73 6520  der the License \n+00000250: 6973 2064 6973 7472 6962 7574 6564 206f  is distributed o\n+00000260: 6e20 616e 2022 4153 2049 5322 2042 4153  n an \"AS IS\" BAS\n+00000270: 4953 2c0a 5749 5448 4f55 5420 5741 5252  IS,.WITHOUT WARR\n+00000280: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n+00000290: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n+000002a0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n+000002b0: 206f 7220 696d 706c 6965 642e 0a53 6565   or implied..See\n+000002c0: 2074 6865 204c 6963 656e 7365 2066 6f72   the License for\n+000002d0: 2074 6865 2073 7065 6369 6669 6320 6c61   the specific la\n+000002e0: 6e67 7561 6765 2067 6f76 6572 6e69 6e67  nguage governing\n+000002f0: 2070 6572 6d69 7373 696f 6e73 2061 6e64   permissions and\n+00000300: 0a6c 696d 6974 6174 696f 6e73 2075 6e64  .limitations und\n+00000310: 6572 2074 6865 204c 6963 656e 7365 2e0a  er the License..\n+00000320: 2d2d 3e0a 3c70 726f 6a65 6374 2078 7369  -->.<project xsi\n+00000330: 3a73 6368 656d 614c 6f63 6174 696f 6e3d  :schemaLocation=\n+00000340: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+00000350: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+00000360: 2e30 2068 7474 7073 3a2f 2f6d 6176 656e  .0 https://maven\n+00000370: 2e61 7061 6368 652e 6f72 672f 7873 642f  .apache.org/xsd/\n+00000380: 6d61 7665 6e2d 342e 302e 302e 7873 6422  maven-4.0.0.xsd\"\n+00000390: 2078 6d6c 6e73 3d22 6874 7470 3a2f 2f6d   xmlns=\"http://m\n+000003a0: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+000003b0: 504f 4d2f 342e 302e 3022 0a20 2020 2078  POM/4.0.0\".    x\n+000003c0: 6d6c 6e73 3a78 7369 3d22 6874 7470 3a2f  mlns:xsi=\"http:/\n+000003d0: 2f77 7777 2e77 332e 6f72 672f 3230 3031  /www.w3.org/2001\n+000003e0: 2f58 4d4c 5363 6865 6d61 2d69 6e73 7461  /XMLSchema-insta\n+000003f0: 6e63 6522 3e0a 2020 3c6d 6f64 656c 5665  nce\">.  <modelVe\n+00000400: 7273 696f 6e3e 342e 302e 303c 2f6d 6f64  rsion>4.0.0</mod\n+00000410: 656c 5665 7273 696f 6e3e 0a20 203c 7061  elVersion>.  <pa\n+00000420: 7265 6e74 3e0a 2020 2020 3c67 726f 7570  rent>.    <group\n+00000430: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+00000440: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000450: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000460: 6262 6f2d 7365 7269 616c 697a 6174 696f  bbo-serializatio\n+00000470: 6e3c 2f61 7274 6966 6163 7449 643e 0a20  n</artifactId>. \n+00000480: 2020 203c 7665 7273 696f 6e3e 322e 372e     <version>2.7.\n+00000490: 3130 3c2f 7665 7273 696f 6e3e 0a20 203c  10</version>.  <\n+000004a0: 2f70 6172 656e 743e 0a20 203c 6772 6f75  /parent>.  <grou\n+000004b0: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n+000004c0: 7562 626f 3c2f 6772 6f75 7049 643e 0a20  ubbo</groupId>. \n+000004d0: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+000004e0: 626f 2d73 6572 6961 6c69 7a61 7469 6f6e  bo-serialization\n+000004f0: 2d70 726f 746f 7374 7566 663c 2f61 7274  -protostuff</art\n+00000500: 6966 6163 7449 643e 0a20 203c 7665 7273  ifactId>.  <vers\n+00000510: 696f 6e3e 322e 372e 3130 3c2f 7665 7273  ion>2.7.10</vers\n+00000520: 696f 6e3e 0a20 203c 6e61 6d65 3e24 7b70  ion>.  <name>${p\n+00000530: 726f 6a65 6374 2e61 7274 6966 6163 7449  roject.artifactI\n+00000540: 647d 3c2f 6e61 6d65 3e0a 2020 3c64 6573  d}</name>.  <des\n+00000550: 6372 6970 7469 6f6e 3e54 6865 2070 726f  cription>The pro\n+00000560: 746f 7374 7566 6620 7365 7269 616c 697a  tostuff serializ\n+00000570: 6174 696f 6e20 6d6f 6475 6c65 206f 6620  ation module of \n+00000580: 6475 6262 6f20 7072 6f6a 6563 743c 2f64  dubbo project</d\n+00000590: 6573 6372 6970 7469 6f6e 3e0a 2020 3c6c  escription>.  <l\n+000005a0: 6963 656e 7365 733e 0a20 2020 203c 6c69  icenses>.    <li\n+000005b0: 6365 6e73 653e 0a20 2020 2020 203c 6e61  cense>.      <na\n+000005c0: 6d65 3e41 7061 6368 6520 4c69 6365 6e73  me>Apache Licens\n+000005d0: 652c 2056 6572 7369 6f6e 2032 2e30 3c2f  e, Version 2.0</\n+000005e0: 6e61 6d65 3e0a 2020 2020 2020 3c75 726c  name>.      <url\n+000005f0: 3e68 7474 703a 2f2f 7777 772e 6170 6163  >http://www.apac\n+00000600: 6865 2e6f 7267 2f6c 6963 656e 7365 732f  he.org/licenses/\n+00000610: 4c49 4345 4e53 452d 322e 303c 2f75 726c  LICENSE-2.0</url\n+00000620: 3e0a 2020 2020 2020 3c64 6973 7472 6962  >.      <distrib\n+00000630: 7574 696f 6e3e 7265 706f 3c2f 6469 7374  ution>repo</dist\n+00000640: 7269 6275 7469 6f6e 3e0a 2020 2020 3c2f  ribution>.    </\n+00000650: 6c69 6365 6e73 653e 0a20 203c 2f6c 6963  license>.  </lic\n+00000660: 656e 7365 733e 0a20 203c 7072 6f70 6572  enses>.  <proper\n+00000670: 7469 6573 3e0a 2020 2020 3c70 726f 746f  ties>.    <proto\n+00000680: 7374 7566 662e 7665 7273 696f 6e3e 312e  stuff.version>1.\n+00000690: 352e 393c 2f70 726f 746f 7374 7566 662e  5.9</protostuff.\n+000006a0: 7665 7273 696f 6e3e 0a20 203c 2f70 726f  version>.  </pro\n+000006b0: 7065 7274 6965 733e 0a20 203c 6465 7065  perties>.  <depe\n+000006c0: 6e64 656e 6369 6573 3e0a 2020 2020 3c64  ndencies>.    <d\n+000006d0: 6570 656e 6465 6e63 793e 0a20 2020 2020  ependency>.     \n+000006e0: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+000006f0: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000700: 7049 643e 0a20 2020 2020 203c 6172 7469  pId>.      <arti\n+00000710: 6661 6374 4964 3e64 7562 626f 2d73 6572  factId>dubbo-ser\n+00000720: 6961 6c69 7a61 7469 6f6e 2d61 7069 3c2f  ialization-api</\n+00000730: 6172 7469 6661 6374 4964 3e0a 2020 2020  artifactId>.    \n+00000740: 2020 3c76 6572 7369 6f6e 3e24 7b70 726f    <version>${pro\n+00000750: 6a65 6374 2e70 6172 656e 742e 7665 7273  ject.parent.vers\n+00000760: 696f 6e7d 3c2f 7665 7273 696f 6e3e 0a20  ion}</version>. \n+00000770: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+00000780: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+00000790: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+000007a0: 3e69 6f2e 7072 6f74 6f73 7475 6666 3c2f  >io.protostuff</\n+000007b0: 6772 6f75 7049 643e 0a20 2020 2020 203c  groupId>.      <\n+000007c0: 6172 7469 6661 6374 4964 3e70 726f 746f  artifactId>proto\n+000007d0: 7374 7566 662d 636f 7265 3c2f 6172 7469  stuff-core</arti\n+000007e0: 6661 6374 4964 3e0a 2020 2020 2020 3c76  factId>.      <v\n+000007f0: 6572 7369 6f6e 3e24 7b70 726f 746f 7374  ersion>${protost\n+00000800: 7566 662e 7665 7273 696f 6e7d 3c2f 7665  uff.version}</ve\n+00000810: 7273 696f 6e3e 0a20 2020 203c 2f64 6570  rsion>.    </dep\n+00000820: 656e 6465 6e63 793e 0a20 2020 203c 6465  endency>.    <de\n+00000830: 7065 6e64 656e 6379 3e0a 2020 2020 2020  pendency>.      \n+00000840: 3c67 726f 7570 4964 3e69 6f2e 7072 6f74  <groupId>io.prot\n+00000850: 6f73 7475 6666 3c2f 6772 6f75 7049 643e  ostuff</groupId>\n+00000860: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+00000870: 4964 3e70 726f 746f 7374 7566 662d 7275  Id>protostuff-ru\n+00000880: 6e74 696d 653c 2f61 7274 6966 6163 7449  ntime</artifactI\n+00000890: 643e 0a20 2020 2020 203c 7665 7273 696f  d>.      <versio\n+000008a0: 6e3e 247b 7072 6f74 6f73 7475 6666 2e76  n>${protostuff.v\n+000008b0: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n+000008c0: 3e0a 2020 2020 3c2f 6465 7065 6e64 656e  >.    </dependen\n+000008d0: 6379 3e0a 2020 3c2f 6465 7065 6e64 656e  cy>.  </dependen\n+000008e0: 6369 6573 3e0a 3c2f 7072 6f6a 6563 743e  cies>.</project>\n+000008f0: 0a                                       .\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-serialization-gson/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-serialization-gson/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,133 +1,130 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 4c69  F-8\"?>..<!--..Li\n-00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n-00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n-00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n-00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n-00000070: 0d0a 2020 636f 6e74 7269 6275 746f 7220  ..  contributor \n-00000080: 6c69 6365 6e73 6520 6167 7265 656d 656e  license agreemen\n-00000090: 7473 2e20 2053 6565 2074 6865 204e 4f54  ts.  See the NOT\n-000000a0: 4943 4520 6669 6c65 2064 6973 7472 6962  ICE file distrib\n-000000b0: 7574 6564 2077 6974 680d 0a20 2074 6869  uted with..  thi\n-000000c0: 7320 776f 726b 2066 6f72 2061 6464 6974  s work for addit\n-000000d0: 696f 6e61 6c20 696e 666f 726d 6174 696f  ional informatio\n-000000e0: 6e20 7265 6761 7264 696e 6720 636f 7079  n regarding copy\n-000000f0: 7269 6768 7420 6f77 6e65 7273 6869 702e  right ownership.\n-00000100: 0d0a 2020 5468 6520 4153 4620 6c69 6365  ..  The ASF lice\n-00000110: 6e73 6573 2074 6869 7320 6669 6c65 2074  nses this file t\n-00000120: 6f20 596f 7520 756e 6465 7220 7468 6520  o You under the \n-00000130: 4170 6163 6865 204c 6963 656e 7365 2c20  Apache License, \n-00000140: 5665 7273 696f 6e20 322e 300d 0a20 2028  Version 2.0..  (\n-00000150: 7468 6520 224c 6963 656e 7365 2229 3b20  the \"License\"); \n-00000160: 796f 7520 6d61 7920 6e6f 7420 7573 6520  you may not use \n-00000170: 7468 6973 2066 696c 6520 6578 6365 7074  this file except\n-00000180: 2069 6e20 636f 6d70 6c69 616e 6365 2077   in compliance w\n-00000190: 6974 680d 0a20 2074 6865 204c 6963 656e  ith..  the Licen\n-000001a0: 7365 2e20 2059 6f75 206d 6179 206f 6274  se.  You may obt\n-000001b0: 6169 6e20 6120 636f 7079 206f 6620 7468  ain a copy of th\n-000001c0: 6520 4c69 6365 6e73 6520 6174 0d0a 0d0a  e License at....\n-000001d0: 2020 2020 2020 6874 7470 3a2f 2f77 7777        http://www\n-000001e0: 2e61 7061 6368 652e 6f72 672f 6c69 6365  .apache.org/lice\n-000001f0: 6e73 6573 2f4c 4943 454e 5345 2d32 2e30  nses/LICENSE-2.0\n-00000200: 0d0a 0d0a 2020 556e 6c65 7373 2072 6571  ....  Unless req\n-00000210: 7569 7265 6420 6279 2061 7070 6c69 6361  uired by applica\n-00000220: 626c 6520 6c61 7720 6f72 2061 6772 6565  ble law or agree\n-00000230: 6420 746f 2069 6e20 7772 6974 696e 672c  d to in writing,\n-00000240: 2073 6f66 7477 6172 650d 0a20 2064 6973   software..  dis\n-00000250: 7472 6962 7574 6564 2075 6e64 6572 2074  tributed under t\n-00000260: 6865 204c 6963 656e 7365 2069 7320 6469  he License is di\n-00000270: 7374 7269 6275 7465 6420 6f6e 2061 6e20  stributed on an \n-00000280: 2241 5320 4953 2220 4241 5349 532c 0d0a  \"AS IS\" BASIS,..\n-00000290: 2020 5749 5448 4f55 5420 5741 5252 414e    WITHOUT WARRAN\n-000002a0: 5449 4553 204f 5220 434f 4e44 4954 494f  TIES OR CONDITIO\n-000002b0: 4e53 204f 4620 414e 5920 4b49 4e44 2c20  NS OF ANY KIND, \n-000002c0: 6569 7468 6572 2065 7870 7265 7373 206f  either express o\n-000002d0: 7220 696d 706c 6965 642e 0d0a 2020 5365  r implied...  Se\n-000002e0: 6520 7468 6520 4c69 6365 6e73 6520 666f  e the License fo\n-000002f0: 7220 7468 6520 7370 6563 6966 6963 206c  r the specific l\n-00000300: 616e 6775 6167 6520 676f 7665 726e 696e  anguage governin\n-00000310: 6720 7065 726d 6973 7369 6f6e 7320 616e  g permissions an\n-00000320: 640d 0a20 206c 696d 6974 6174 696f 6e73  d..  limitations\n-00000330: 2075 6e64 6572 2074 6865 204c 6963 656e   under the Licen\n-00000340: 7365 2e0d 0a20 202d 2d3e 0d0a 3c70 726f  se...  -->..<pro\n-00000350: 6a65 6374 2078 7369 3a73 6368 656d 614c  ject xsi:schemaL\n-00000360: 6f63 6174 696f 6e3d 2268 7474 703a 2f2f  ocation=\"http://\n-00000370: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-00000380: 2f50 4f4d 2f34 2e30 2e30 2068 7474 7073  /POM/4.0.0 https\n-00000390: 3a2f 2f6d 6176 656e 2e61 7061 6368 652e  ://maven.apache.\n-000003a0: 6f72 672f 7873 642f 6d61 7665 6e2d 342e  org/xsd/maven-4.\n-000003b0: 302e 302e 7873 6422 2078 6d6c 6e73 3d22  0.0.xsd\" xmlns=\"\n-000003c0: 6874 7470 3a2f 2f6d 6176 656e 2e61 7061  http://maven.apa\n-000003d0: 6368 652e 6f72 672f 504f 4d2f 342e 302e  che.org/POM/4.0.\n-000003e0: 3022 0d0a 2020 2020 786d 6c6e 733a 7873  0\"..    xmlns:xs\n-000003f0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n-00000400: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n-00000410: 656d 612d 696e 7374 616e 6365 223e 0d0a  ema-instance\">..\n-00000420: 2020 3c6d 6f64 656c 5665 7273 696f 6e3e    <modelVersion>\n-00000430: 342e 302e 303c 2f6d 6f64 656c 5665 7273  4.0.0</modelVers\n-00000440: 696f 6e3e 0d0a 2020 3c70 6172 656e 743e  ion>..  <parent>\n-00000450: 0d0a 2020 2020 3c67 726f 7570 4964 3e6f  ..    <groupId>o\n-00000460: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000470: 2f67 726f 7570 4964 3e0d 0a20 2020 203c  /groupId>..    <\n-00000480: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000490: 2d73 6572 6961 6c69 7a61 7469 6f6e 3c2f  -serialization</\n-000004a0: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-000004b0: 203c 7665 7273 696f 6e3e 322e 372e 3130   <version>2.7.10\n-000004c0: 3c2f 7665 7273 696f 6e3e 0d0a 2020 3c2f  </version>..  </\n-000004d0: 7061 7265 6e74 3e0d 0a20 203c 6772 6f75  parent>..  <grou\n-000004e0: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n-000004f0: 7562 626f 3c2f 6772 6f75 7049 643e 0d0a  ubbo</groupId>..\n-00000500: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n-00000510: 6262 6f2d 7365 7269 616c 697a 6174 696f  bbo-serializatio\n-00000520: 6e2d 6773 6f6e 3c2f 6172 7469 6661 6374  n-gson</artifact\n-00000530: 4964 3e0d 0a20 203c 7665 7273 696f 6e3e  Id>..  <version>\n-00000540: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n-00000550: 0d0a 2020 3c6e 616d 653e 247b 7072 6f6a  ..  <name>${proj\n-00000560: 6563 742e 6172 7469 6661 6374 4964 7d3c  ect.artifactId}<\n-00000570: 2f6e 616d 653e 0d0a 2020 3c64 6573 6372  /name>..  <descr\n-00000580: 6970 7469 6f6e 3e54 6865 2047 534f 4e20  iption>The GSON \n-00000590: 7365 7269 616c 697a 6174 696f 6e20 696d  serialization im\n-000005a0: 706c 656d 656e 7420 666f 7220 6475 6262  plement for dubb\n-000005b0: 6f3c 2f64 6573 6372 6970 7469 6f6e 3e0d  o</description>.\n-000005c0: 0a20 203c 6c69 6365 6e73 6573 3e0d 0a20  .  <licenses>.. \n-000005d0: 2020 203c 6c69 6365 6e73 653e 0d0a 2020     <license>..  \n-000005e0: 2020 2020 3c6e 616d 653e 4170 6163 6865      <name>Apache\n-000005f0: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000600: 6e20 322e 303c 2f6e 616d 653e 0d0a 2020  n 2.0</name>..  \n-00000610: 2020 2020 3c75 726c 3e68 7474 703a 2f2f      <url>http://\n-00000620: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n-00000630: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n-00000640: 322e 303c 2f75 726c 3e0d 0a20 2020 2020  2.0</url>..     \n-00000650: 203c 6469 7374 7269 6275 7469 6f6e 3e72   <distribution>r\n-00000660: 6570 6f3c 2f64 6973 7472 6962 7574 696f  epo</distributio\n-00000670: 6e3e 0d0a 2020 2020 3c2f 6c69 6365 6e73  n>..    </licens\n-00000680: 653e 0d0a 2020 3c2f 6c69 6365 6e73 6573  e>..  </licenses\n-00000690: 3e0d 0a20 203c 7072 6f70 6572 7469 6573  >..  <properties\n-000006a0: 3e0d 0a20 2020 203c 736b 6970 5f6d 6176  >..    <skip_mav\n-000006b0: 656e 5f64 6570 6c6f 793e 6661 6c73 653c  en_deploy>false<\n-000006c0: 2f73 6b69 705f 6d61 7665 6e5f 6465 706c  /skip_maven_depl\n-000006d0: 6f79 3e0d 0a20 203c 2f70 726f 7065 7274  oy>..  </propert\n-000006e0: 6965 733e 0d0a 2020 3c64 6570 656e 6465  ies>..  <depende\n-000006f0: 6e63 6965 733e 0d0a 2020 2020 3c64 6570  ncies>..    <dep\n-00000700: 656e 6465 6e63 793e 0d0a 2020 2020 2020  endency>..      \n-00000710: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n-00000720: 6368 652e 6475 6262 6f3c 2f67 726f 7570  che.dubbo</group\n-00000730: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-00000740: 6661 6374 4964 3e64 7562 626f 2d73 6572  factId>dubbo-ser\n-00000750: 6961 6c69 7a61 7469 6f6e 2d61 7069 3c2f  ialization-api</\n-00000760: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-00000770: 2020 203c 7665 7273 696f 6e3e 247b 7072     <version>${pr\n-00000780: 6f6a 6563 742e 7061 7265 6e74 2e76 6572  oject.parent.ver\n-00000790: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0d  sion}</version>.\n-000007a0: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n-000007b0: 793e 0d0a 2020 2020 3c64 6570 656e 6465  y>..    <depende\n-000007c0: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-000007d0: 7570 4964 3e63 6f6d 2e67 6f6f 676c 652e  upId>com.google.\n-000007e0: 636f 6465 2e67 736f 6e3c 2f67 726f 7570  code.gson</group\n-000007f0: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-00000800: 6661 6374 4964 3e67 736f 6e3c 2f61 7274  factId>gson</art\n-00000810: 6966 6163 7449 643e 0d0a 2020 2020 3c2f  ifactId>..    </\n-00000820: 6465 7065 6e64 656e 6379 3e0d 0a20 203c  dependency>..  <\n-00000830: 2f64 6570 656e 6465 6e63 6965 733e 0d0a  /dependencies>..\n-00000840: 3c2f 7072 6f6a 6563 743e 0d0a            </project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 4c69 6365  F-8\"?>.<!--.Lice\n+00000030: 6e73 6564 2074 6f20 7468 6520 4170 6163  nsed to the Apac\n+00000040: 6865 2053 6f66 7477 6172 6520 466f 756e  he Software Foun\n+00000050: 6461 7469 6f6e 2028 4153 4629 2075 6e64  dation (ASF) und\n+00000060: 6572 206f 6e65 206f 7220 6d6f 7265 0a20  er one or more. \n+00000070: 2063 6f6e 7472 6962 7574 6f72 206c 6963   contributor lic\n+00000080: 656e 7365 2061 6772 6565 6d65 6e74 732e  ense agreements.\n+00000090: 2020 5365 6520 7468 6520 4e4f 5449 4345    See the NOTICE\n+000000a0: 2066 696c 6520 6469 7374 7269 6275 7465   file distribute\n+000000b0: 6420 7769 7468 0a20 2074 6869 7320 776f  d with.  this wo\n+000000c0: 726b 2066 6f72 2061 6464 6974 696f 6e61  rk for additiona\n+000000d0: 6c20 696e 666f 726d 6174 696f 6e20 7265  l information re\n+000000e0: 6761 7264 696e 6720 636f 7079 7269 6768  garding copyrigh\n+000000f0: 7420 6f77 6e65 7273 6869 702e 0a20 2054  t ownership..  T\n+00000100: 6865 2041 5346 206c 6963 656e 7365 7320  he ASF licenses \n+00000110: 7468 6973 2066 696c 6520 746f 2059 6f75  this file to You\n+00000120: 2075 6e64 6572 2074 6865 2041 7061 6368   under the Apach\n+00000130: 6520 4c69 6365 6e73 652c 2056 6572 7369  e License, Versi\n+00000140: 6f6e 2032 2e30 0a20 2028 7468 6520 224c  on 2.0.  (the \"L\n+00000150: 6963 656e 7365 2229 3b20 796f 7520 6d61  icense\"); you ma\n+00000160: 7920 6e6f 7420 7573 6520 7468 6973 2066  y not use this f\n+00000170: 696c 6520 6578 6365 7074 2069 6e20 636f  ile except in co\n+00000180: 6d70 6c69 616e 6365 2077 6974 680a 2020  mpliance with.  \n+00000190: 7468 6520 4c69 6365 6e73 652e 2020 596f  the License.  Yo\n+000001a0: 7520 6d61 7920 6f62 7461 696e 2061 2063  u may obtain a c\n+000001b0: 6f70 7920 6f66 2074 6865 204c 6963 656e  opy of the Licen\n+000001c0: 7365 2061 740a 0a20 2020 2020 2068 7474  se at..      htt\n+000001d0: 703a 2f2f 7777 772e 6170 6163 6865 2e6f  p://www.apache.o\n+000001e0: 7267 2f6c 6963 656e 7365 732f 4c49 4345  rg/licenses/LICE\n+000001f0: 4e53 452d 322e 300a 0a20 2055 6e6c 6573  NSE-2.0..  Unles\n+00000200: 7320 7265 7175 6972 6564 2062 7920 6170  s required by ap\n+00000210: 706c 6963 6162 6c65 206c 6177 206f 7220  plicable law or \n+00000220: 6167 7265 6564 2074 6f20 696e 2077 7269  agreed to in wri\n+00000230: 7469 6e67 2c20 736f 6674 7761 7265 0a20  ting, software. \n+00000240: 2064 6973 7472 6962 7574 6564 2075 6e64   distributed und\n+00000250: 6572 2074 6865 204c 6963 656e 7365 2069  er the License i\n+00000260: 7320 6469 7374 7269 6275 7465 6420 6f6e  s distributed on\n+00000270: 2061 6e20 2241 5320 4953 2220 4241 5349   an \"AS IS\" BASI\n+00000280: 532c 0a20 2057 4954 484f 5554 2057 4152  S,.  WITHOUT WAR\n+00000290: 5241 4e54 4945 5320 4f52 2043 4f4e 4449  RANTIES OR CONDI\n+000002a0: 5449 4f4e 5320 4f46 2041 4e59 204b 494e  TIONS OF ANY KIN\n+000002b0: 442c 2065 6974 6865 7220 6578 7072 6573  D, either expres\n+000002c0: 7320 6f72 2069 6d70 6c69 6564 2e0a 2020  s or implied..  \n+000002d0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n+000002e0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n+000002f0: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n+00000300: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n+00000310: 616e 640a 2020 6c69 6d69 7461 7469 6f6e  and.  limitation\n+00000320: 7320 756e 6465 7220 7468 6520 4c69 6365  s under the Lice\n+00000330: 6e73 652e 0a20 202d 2d3e 0a3c 7072 6f6a  nse..  -->.<proj\n+00000340: 6563 7420 7873 693a 7363 6865 6d61 4c6f  ect xsi:schemaLo\n+00000350: 6361 7469 6f6e 3d22 6874 7470 3a2f 2f6d  cation=\"http://m\n+00000360: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+00000370: 504f 4d2f 342e 302e 3020 6874 7470 733a  POM/4.0.0 https:\n+00000380: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n+00000390: 7267 2f78 7364 2f6d 6176 656e 2d34 2e30  rg/xsd/maven-4.0\n+000003a0: 2e30 2e78 7364 2220 786d 6c6e 733d 2268  .0.xsd\" xmlns=\"h\n+000003b0: 7474 703a 2f2f 6d61 7665 6e2e 6170 6163  ttp://maven.apac\n+000003c0: 6865 2e6f 7267 2f50 4f4d 2f34 2e30 2e30  he.org/POM/4.0.0\n+000003d0: 220a 2020 2020 786d 6c6e 733a 7873 693d  \".    xmlns:xsi=\n+000003e0: 2268 7474 703a 2f2f 7777 772e 7733 2e6f  \"http://www.w3.o\n+000003f0: 7267 2f32 3030 312f 584d 4c53 6368 656d  rg/2001/XMLSchem\n+00000400: 612d 696e 7374 616e 6365 223e 0a20 203c  a-instance\">.  <\n+00000410: 6d6f 6465 6c56 6572 7369 6f6e 3e34 2e30  modelVersion>4.0\n+00000420: 2e30 3c2f 6d6f 6465 6c56 6572 7369 6f6e  .0</modelVersion\n+00000430: 3e0a 2020 3c70 6172 656e 743e 0a20 2020  >.  <parent>.   \n+00000440: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000450: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000460: 7049 643e 0a20 2020 203c 6172 7469 6661  pId>.    <artifa\n+00000470: 6374 4964 3e64 7562 626f 2d73 6572 6961  ctId>dubbo-seria\n+00000480: 6c69 7a61 7469 6f6e 3c2f 6172 7469 6661  lization</artifa\n+00000490: 6374 4964 3e0a 2020 2020 3c76 6572 7369  ctId>.    <versi\n+000004a0: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n+000004b0: 6f6e 3e0a 2020 3c2f 7061 7265 6e74 3e0a  on>.  </parent>.\n+000004c0: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+000004d0: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n+000004e0: 7570 4964 3e0a 2020 3c61 7274 6966 6163  upId>.  <artifac\n+000004f0: 7449 643e 6475 6262 6f2d 7365 7269 616c  tId>dubbo-serial\n+00000500: 697a 6174 696f 6e2d 6773 6f6e 3c2f 6172  ization-gson</ar\n+00000510: 7469 6661 6374 4964 3e0a 2020 3c76 6572  tifactId>.  <ver\n+00000520: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n+00000530: 7369 6f6e 3e0a 2020 3c6e 616d 653e 247b  sion>.  <name>${\n+00000540: 7072 6f6a 6563 742e 6172 7469 6661 6374  project.artifact\n+00000550: 4964 7d3c 2f6e 616d 653e 0a20 203c 6465  Id}</name>.  <de\n+00000560: 7363 7269 7074 696f 6e3e 5468 6520 4753  scription>The GS\n+00000570: 4f4e 2073 6572 6961 6c69 7a61 7469 6f6e  ON serialization\n+00000580: 2069 6d70 6c65 6d65 6e74 2066 6f72 2064   implement for d\n+00000590: 7562 626f 3c2f 6465 7363 7269 7074 696f  ubbo</descriptio\n+000005a0: 6e3e 0a20 203c 6c69 6365 6e73 6573 3e0a  n>.  <licenses>.\n+000005b0: 2020 2020 3c6c 6963 656e 7365 3e0a 2020      <license>.  \n+000005c0: 2020 2020 3c6e 616d 653e 4170 6163 6865      <name>Apache\n+000005d0: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n+000005e0: 6e20 322e 303c 2f6e 616d 653e 0a20 2020  n 2.0</name>.   \n+000005f0: 2020 203c 7572 6c3e 6874 7470 3a2f 2f77     <url>http://w\n+00000600: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n+00000610: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n+00000620: 2e30 3c2f 7572 6c3e 0a20 2020 2020 203c  .0</url>.      <\n+00000630: 6469 7374 7269 6275 7469 6f6e 3e72 6570  distribution>rep\n+00000640: 6f3c 2f64 6973 7472 6962 7574 696f 6e3e  o</distribution>\n+00000650: 0a20 2020 203c 2f6c 6963 656e 7365 3e0a  .    </license>.\n+00000660: 2020 3c2f 6c69 6365 6e73 6573 3e0a 2020    </licenses>.  \n+00000670: 3c70 726f 7065 7274 6965 733e 0a20 2020  <properties>.   \n+00000680: 203c 736b 6970 5f6d 6176 656e 5f64 6570   <skip_maven_dep\n+00000690: 6c6f 793e 6661 6c73 653c 2f73 6b69 705f  loy>false</skip_\n+000006a0: 6d61 7665 6e5f 6465 706c 6f79 3e0a 2020  maven_deploy>.  \n+000006b0: 3c2f 7072 6f70 6572 7469 6573 3e0a 2020  </properties>.  \n+000006c0: 3c64 6570 656e 6465 6e63 6965 733e 0a20  <dependencies>. \n+000006d0: 2020 203c 6465 7065 6e64 656e 6379 3e0a     <dependency>.\n+000006e0: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n+000006f0: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n+00000700: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+00000710: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+00000720: 6f2d 7365 7269 616c 697a 6174 696f 6e2d  o-serialization-\n+00000730: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n+00000740: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n+00000750: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n+00000760: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n+00000770: 6f6e 3e0a 2020 2020 3c2f 6465 7065 6e64  on>.    </depend\n+00000780: 656e 6379 3e0a 2020 2020 3c64 6570 656e  ency>.    <depen\n+00000790: 6465 6e63 793e 0a20 2020 2020 203c 6772  dency>.      <gr\n+000007a0: 6f75 7049 643e 636f 6d2e 676f 6f67 6c65  oupId>com.google\n+000007b0: 2e63 6f64 652e 6773 6f6e 3c2f 6772 6f75  .code.gson</grou\n+000007c0: 7049 643e 0a20 2020 2020 203c 6172 7469  pId>.      <arti\n+000007d0: 6661 6374 4964 3e67 736f 6e3c 2f61 7274  factId>gson</art\n+000007e0: 6966 6163 7449 643e 0a20 2020 203c 2f64  ifactId>.    </d\n+000007f0: 6570 656e 6465 6e63 793e 0a20 203c 2f64  ependency>.  </d\n+00000800: 6570 656e 6465 6e63 6965 733e 0a3c 2f70  ependencies>.</p\n+00000810: 726f 6a65 6374 3e0a                      roject>.\n"}, {"source1": "MapValue.proto", "source2": "MapValue.proto", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,27 +1,27 @@\n-// Licensed to the Apache Software Foundation (ASF) under one or more\n-// contributor license agreements.  See the NOTICE file distributed with\n-// this work for additional information regarding copyright ownership.\n-// The ASF licenses this file to You under the Apache License, Version 2.0\n-// (the \"License\"); you may not use this file except in compliance with\n-// the License.  You may obtain a copy of the License at\n-//\n-//     http://www.apache.org/licenses/LICENSE-2.0\n-//\n-// Unless required by applicable law or agreed to in writing, software\n-// distributed under the License is distributed on an \"AS IS\" BASIS,\n-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n-// See the License for the specific language governing permissions and\n-// limitations under the License.\n-\n-// Messages used for transporting debug information between server and client.\n-\n-syntax = \"proto3\";\n-\n-package org.apache.dubbo.common.serialize.protobuf.support.wrapper;\n-\n-option java_package = \"org.apache.dubbo.common.serialize.protobuf.support.wrapper\";\n-option java_multiple_files = false;\n-\n-message Map{\n-    map<string,string> attachments = 1;\n+// Licensed to the Apache Software Foundation (ASF) under one or more\r\n+// contributor license agreements.  See the NOTICE file distributed with\r\n+// this work for additional information regarding copyright ownership.\r\n+// The ASF licenses this file to You under the Apache License, Version 2.0\r\n+// (the \"License\"); you may not use this file except in compliance with\r\n+// the License.  You may obtain a copy of the License at\r\n+//\r\n+//     http://www.apache.org/licenses/LICENSE-2.0\r\n+//\r\n+// Unless required by applicable law or agreed to in writing, software\r\n+// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+// See the License for the specific language governing permissions and\r\n+// limitations under the License.\r\n+\r\n+// Messages used for transporting debug information between server and client.\r\n+\r\n+syntax = \"proto3\";\r\n+\r\n+package org.apache.dubbo.common.serialize.protobuf.support.wrapper;\r\n+\r\n+option java_package = \"org.apache.dubbo.common.serialize.protobuf.support.wrapper\";\r\n+option java_multiple_files = false;\r\n+\r\n+message Map{\r\n+    map<string,string> attachments = 1;\r\n }\n"}, {"source1": "ThrowablePB.proto", "source2": "ThrowablePB.proto", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,64 +1,64 @@\n-// Licensed to the Apache Software Foundation (ASF) under one or more\n-// contributor license agreements.  See the NOTICE file distributed with\n-// this work for additional information regarding copyright ownership.\n-// The ASF licenses this file to You under the Apache License, Version 2.0\n-// (the \"License\"); you may not use this file except in compliance with\n-// the License.  You may obtain a copy of the License at\n-//\n-//     http://www.apache.org/licenses/LICENSE-2.0\n-//\n-// Unless required by applicable law or agreed to in writing, software\n-// distributed under the License is distributed on an \"AS IS\" BASIS,\n-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n-// See the License for the specific language governing permissions and\n-// limitations under the License.\n-\n-// Messages used for transporting debug information between server and client.\n-\n-syntax = \"proto3\";\n-\n-package org.apache.dubbo.common.serialize.protobuf.support.wrapper;\n-\n-option java_package = \"org.apache.dubbo.common.serialize.protobuf.support.wrapper\";\n-option java_multiple_files = false;\n-\n-// An element in a stack trace, based on the Java type of the same name.\n-//\n-// See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StackTraceElement.html\n-message StackTraceElementProto {\n-    // The fully qualified name of the class containing the execution point\n-    // represented by the stack trace element.\n-    string class_name = 1;\n-\n-    // The name of the method containing the execution point represented by the\n-    // stack trace element\n-    string method_name = 2;\n-\n-    // The name of the file containing the execution point represented by the\n-    // stack trace element, or null if this information is unavailable.\n-    string file_name = 3;\n-\n-    // The line number of the source line containing the execution point represented\n-    // by this stack trace element, or a negative number if this information is\n-    // unavailable.\n-    int32 line_number = 4;\n-}\n-\n-// An exception that was thrown by some code, based on the Java type of the same name.\n-//\n-// See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html\n-message ThrowableProto {\n-    // The name of the class of the exception that was actually thrown. Downstream readers\n-    // of this message may or may not have the actual class available to initialize, so\n-    // this is just used to prefix the message of a generic exception type.\n-    string original_class_name = 1;\n-\n-    // The message of this throwable. Not filled if there is no message.\n-    string original_message = 2;\n-\n-    // The stack trace of this Throwable.\n-    repeated StackTraceElementProto stack_trace = 3;\n-\n-    // The cause of this Throwable. Not filled if there is no cause.\n-    ThrowableProto cause = 4;\n-}\n+// Licensed to the Apache Software Foundation (ASF) under one or more\r\n+// contributor license agreements.  See the NOTICE file distributed with\r\n+// this work for additional information regarding copyright ownership.\r\n+// The ASF licenses this file to You under the Apache License, Version 2.0\r\n+// (the \"License\"); you may not use this file except in compliance with\r\n+// the License.  You may obtain a copy of the License at\r\n+//\r\n+//     http://www.apache.org/licenses/LICENSE-2.0\r\n+//\r\n+// Unless required by applicable law or agreed to in writing, software\r\n+// distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+// See the License for the specific language governing permissions and\r\n+// limitations under the License.\r\n+\r\n+// Messages used for transporting debug information between server and client.\r\n+\r\n+syntax = \"proto3\";\r\n+\r\n+package org.apache.dubbo.common.serialize.protobuf.support.wrapper;\r\n+\r\n+option java_package = \"org.apache.dubbo.common.serialize.protobuf.support.wrapper\";\r\n+option java_multiple_files = false;\r\n+\r\n+// An element in a stack trace, based on the Java type of the same name.\r\n+//\r\n+// See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StackTraceElement.html\r\n+message StackTraceElementProto {\r\n+    // The fully qualified name of the class containing the execution point\r\n+    // represented by the stack trace element.\r\n+    string class_name = 1;\r\n+\r\n+    // The name of the method containing the execution point represented by the\r\n+    // stack trace element\r\n+    string method_name = 2;\r\n+\r\n+    // The name of the file containing the execution point represented by the\r\n+    // stack trace element, or null if this information is unavailable.\r\n+    string file_name = 3;\r\n+\r\n+    // The line number of the source line containing the execution point represented\r\n+    // by this stack trace element, or a negative number if this information is\r\n+    // unavailable.\r\n+    int32 line_number = 4;\r\n+}\r\n+\r\n+// An exception that was thrown by some code, based on the Java type of the same name.\r\n+//\r\n+// See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html\r\n+message ThrowableProto {\r\n+    // The name of the class of the exception that was actually thrown. Downstream readers\r\n+    // of this message may or may not have the actual class available to initialize, so\r\n+    // this is just used to prefix the message of a generic exception type.\r\n+    string original_class_name = 1;\r\n+\r\n+    // The message of this throwable. Not filled if there is no message.\r\n+    string original_message = 2;\r\n+\r\n+    // The stack trace of this Throwable.\r\n+    repeated StackTraceElementProto stack_trace = 3;\r\n+\r\n+    // The cause of this Throwable. Not filled if there is no cause.\r\n+    ThrowableProto cause = 4;\r\n+}\r\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-serialization-protobuf/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,241 +1,235 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 4c69  F-8\"?>..<!--..Li\n-00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n-00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n-00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n-00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n-00000070: 0d0a 636f 6e74 7269 6275 746f 7220 6c69  ..contributor li\n-00000080: 6365 6e73 6520 6167 7265 656d 656e 7473  cense agreements\n-00000090: 2e20 2053 6565 2074 6865 204e 4f54 4943  .  See the NOTIC\n-000000a0: 4520 6669 6c65 2064 6973 7472 6962 7574  E file distribut\n-000000b0: 6564 2077 6974 680d 0a74 6869 7320 776f  ed with..this wo\n-000000c0: 726b 2066 6f72 2061 6464 6974 696f 6e61  rk for additiona\n-000000d0: 6c20 696e 666f 726d 6174 696f 6e20 7265  l information re\n-000000e0: 6761 7264 696e 6720 636f 7079 7269 6768  garding copyrigh\n-000000f0: 7420 6f77 6e65 7273 6869 702e 0d0a 5468  t ownership...Th\n-00000100: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000110: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000120: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000130: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000140: 6e20 322e 300d 0a28 7468 6520 224c 6963  n 2.0..(the \"Lic\n-00000150: 656e 7365 2229 3b20 796f 7520 6d61 7920  ense\"); you may \n-00000160: 6e6f 7420 7573 6520 7468 6973 2066 696c  not use this fil\n-00000170: 6520 6578 6365 7074 2069 6e20 636f 6d70  e except in comp\n-00000180: 6c69 616e 6365 2077 6974 680d 0a74 6865  liance with..the\n-00000190: 204c 6963 656e 7365 2e20 2059 6f75 206d   License.  You m\n-000001a0: 6179 206f 6274 6169 6e20 6120 636f 7079  ay obtain a copy\n-000001b0: 206f 6620 7468 6520 4c69 6365 6e73 6520   of the License \n-000001c0: 6174 0d0a 0d0a 2020 2020 2068 7474 703a  at....     http:\n-000001d0: 2f2f 7777 772e 6170 6163 6865 2e6f 7267  //www.apache.org\n-000001e0: 2f6c 6963 656e 7365 732f 4c49 4345 4e53  /licenses/LICENS\n-000001f0: 452d 322e 300d 0a0d 0a55 6e6c 6573 7320  E-2.0....Unless \n-00000200: 7265 7175 6972 6564 2062 7920 6170 706c  required by appl\n-00000210: 6963 6162 6c65 206c 6177 206f 7220 6167  icable law or ag\n-00000220: 7265 6564 2074 6f20 696e 2077 7269 7469  reed to in writi\n-00000230: 6e67 2c20 736f 6674 7761 7265 0d0a 6469  ng, software..di\n-00000240: 7374 7269 6275 7465 6420 756e 6465 7220  stributed under \n-00000250: 7468 6520 4c69 6365 6e73 6520 6973 2064  the License is d\n-00000260: 6973 7472 6962 7574 6564 206f 6e20 616e  istributed on an\n-00000270: 2022 4153 2049 5322 2042 4153 4953 2c0d   \"AS IS\" BASIS,.\n-00000280: 0a57 4954 484f 5554 2057 4152 5241 4e54  .WITHOUT WARRANT\n-00000290: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n-000002a0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n-000002b0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n-000002c0: 2069 6d70 6c69 6564 2e0d 0a53 6565 2074   implied...See t\n-000002d0: 6865 204c 6963 656e 7365 2066 6f72 2074  he License for t\n-000002e0: 6865 2073 7065 6369 6669 6320 6c61 6e67  he specific lang\n-000002f0: 7561 6765 2067 6f76 6572 6e69 6e67 2070  uage governing p\n-00000300: 6572 6d69 7373 696f 6e73 2061 6e64 0d0a  ermissions and..\n-00000310: 6c69 6d69 7461 7469 6f6e 7320 756e 6465  limitations unde\n-00000320: 7220 7468 6520 4c69 6365 6e73 652e 0d0a  r the License...\n-00000330: 2d2d 3e0d 0a3c 7072 6f6a 6563 7420 7873  -->..<project xs\n-00000340: 693a 7363 6865 6d61 4c6f 6361 7469 6f6e  i:schemaLocation\n-00000350: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-00000360: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-00000370: 302e 3020 6874 7470 733a 2f2f 6d61 7665  0.0 https://mave\n-00000380: 6e2e 6170 6163 6865 2e6f 7267 2f78 7364  n.apache.org/xsd\n-00000390: 2f6d 6176 656e 2d34 2e30 2e30 2e78 7364  /maven-4.0.0.xsd\n-000003a0: 2220 786d 6c6e 733d 2268 7474 703a 2f2f  \" xmlns=\"http://\n-000003b0: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003c0: 2f50 4f4d 2f34 2e30 2e30 220d 0a20 2020  /POM/4.0.0\"..   \n-000003d0: 2078 6d6c 6e73 3a78 7369 3d22 6874 7470   xmlns:xsi=\"http\n-000003e0: 3a2f 2f77 7777 2e77 332e 6f72 672f 3230  ://www.w3.org/20\n-000003f0: 3031 2f58 4d4c 5363 6865 6d61 2d69 6e73  01/XMLSchema-ins\n-00000400: 7461 6e63 6522 3e0d 0a20 203c 6d6f 6465  tance\">..  <mode\n-00000410: 6c56 6572 7369 6f6e 3e34 2e30 2e30 3c2f  lVersion>4.0.0</\n-00000420: 6d6f 6465 6c56 6572 7369 6f6e 3e0d 0a20  modelVersion>.. \n-00000430: 203c 7061 7265 6e74 3e0d 0a20 2020 203c   <parent>..    <\n-00000440: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n-00000450: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n-00000460: 643e 0d0a 2020 2020 3c61 7274 6966 6163  d>..    <artifac\n-00000470: 7449 643e 6475 6262 6f2d 7365 7269 616c  tId>dubbo-serial\n-00000480: 697a 6174 696f 6e3c 2f61 7274 6966 6163  ization</artifac\n-00000490: 7449 643e 0d0a 2020 2020 3c76 6572 7369  tId>..    <versi\n-000004a0: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n-000004b0: 6f6e 3e0d 0a20 203c 2f70 6172 656e 743e  on>..  </parent>\n-000004c0: 0d0a 2020 3c67 726f 7570 4964 3e6f 7267  ..  <groupId>org\n-000004d0: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-000004e0: 726f 7570 4964 3e0d 0a20 203c 6172 7469  roupId>..  <arti\n-000004f0: 6661 6374 4964 3e64 7562 626f 2d73 6572  factId>dubbo-ser\n-00000500: 6961 6c69 7a61 7469 6f6e 2d70 726f 746f  ialization-proto\n-00000510: 6275 663c 2f61 7274 6966 6163 7449 643e  buf</artifactId>\n-00000520: 0d0a 2020 3c76 6572 7369 6f6e 3e32 2e37  ..  <version>2.7\n-00000530: 2e31 303c 2f76 6572 7369 6f6e 3e0d 0a20  .10</version>.. \n-00000540: 203c 6e61 6d65 3e24 7b70 726f 6a65 6374   <name>${project\n-00000550: 2e61 7274 6966 6163 7449 647d 3c2f 6e61  .artifactId}</na\n-00000560: 6d65 3e0d 0a20 203c 6465 7363 7269 7074  me>..  <descript\n-00000570: 696f 6e3e 5468 6520 7072 6f74 6f62 7566  ion>The protobuf\n-00000580: 2073 6572 6961 6c69 7a61 7469 6f6e 206d   serialization m\n-00000590: 6f64 756c 6520 6f66 2064 7562 626f 2070  odule of dubbo p\n-000005a0: 726f 6a65 6374 3c2f 6465 7363 7269 7074  roject</descript\n-000005b0: 696f 6e3e 0d0a 2020 3c6c 6963 656e 7365  ion>..  <license\n-000005c0: 733e 0d0a 2020 2020 3c6c 6963 656e 7365  s>..    <license\n-000005d0: 3e0d 0a20 2020 2020 203c 6e61 6d65 3e41  >..      <name>A\n-000005e0: 7061 6368 6520 4c69 6365 6e73 652c 2056  pache License, V\n-000005f0: 6572 7369 6f6e 2032 2e30 3c2f 6e61 6d65  ersion 2.0</name\n-00000600: 3e0d 0a20 2020 2020 203c 7572 6c3e 6874  >..      <url>ht\n-00000610: 7470 3a2f 2f77 7777 2e61 7061 6368 652e  tp://www.apache.\n-00000620: 6f72 672f 6c69 6365 6e73 6573 2f4c 4943  org/licenses/LIC\n-00000630: 454e 5345 2d32 2e30 3c2f 7572 6c3e 0d0a  ENSE-2.0</url>..\n-00000640: 2020 2020 2020 3c64 6973 7472 6962 7574        <distribut\n-00000650: 696f 6e3e 7265 706f 3c2f 6469 7374 7269  ion>repo</distri\n-00000660: 6275 7469 6f6e 3e0d 0a20 2020 203c 2f6c  bution>..    </l\n-00000670: 6963 656e 7365 3e0d 0a20 203c 2f6c 6963  icense>..  </lic\n-00000680: 656e 7365 733e 0d0a 2020 3c70 726f 7065  enses>..  <prope\n-00000690: 7274 6965 733e 0d0a 2020 2020 3c73 6b69  rties>..    <ski\n-000006a0: 705f 6d61 7665 6e5f 6465 706c 6f79 3e66  p_maven_deploy>f\n-000006b0: 616c 7365 3c2f 736b 6970 5f6d 6176 656e  alse</skip_maven\n-000006c0: 5f64 6570 6c6f 793e 0d0a 2020 2020 3c64  _deploy>..    <d\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 4c69 6365  F-8\"?>.<!--.Lice\n+00000030: 6e73 6564 2074 6f20 7468 6520 4170 6163  nsed to the Apac\n+00000040: 6865 2053 6f66 7477 6172 6520 466f 756e  he Software Foun\n+00000050: 6461 7469 6f6e 2028 4153 4629 2075 6e64  dation (ASF) und\n+00000060: 6572 206f 6e65 206f 7220 6d6f 7265 0a63  er one or more.c\n+00000070: 6f6e 7472 6962 7574 6f72 206c 6963 656e  ontributor licen\n+00000080: 7365 2061 6772 6565 6d65 6e74 732e 2020  se agreements.  \n+00000090: 5365 6520 7468 6520 4e4f 5449 4345 2066  See the NOTICE f\n+000000a0: 696c 6520 6469 7374 7269 6275 7465 6420  ile distributed \n+000000b0: 7769 7468 0a74 6869 7320 776f 726b 2066  with.this work f\n+000000c0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n+000000d0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n+000000e0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n+000000f0: 6e65 7273 6869 702e 0a54 6865 2041 5346  nership..The ASF\n+00000100: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000110: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000120: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000130: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000140: 0a28 7468 6520 224c 6963 656e 7365 2229  .(the \"License\")\n+00000150: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n+00000160: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n+00000170: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n+00000180: 2077 6974 680a 7468 6520 4c69 6365 6e73   with.the Licens\n+00000190: 652e 2020 596f 7520 6d61 7920 6f62 7461  e.  You may obta\n+000001a0: 696e 2061 2063 6f70 7920 6f66 2074 6865  in a copy of the\n+000001b0: 204c 6963 656e 7365 2061 740a 0a20 2020   License at..   \n+000001c0: 2020 6874 7470 3a2f 2f77 7777 2e61 7061    http://www.apa\n+000001d0: 6368 652e 6f72 672f 6c69 6365 6e73 6573  che.org/licenses\n+000001e0: 2f4c 4943 454e 5345 2d32 2e30 0a0a 556e  /LICENSE-2.0..Un\n+000001f0: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n+00000200: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n+00000210: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n+00000220: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n+00000230: 650a 6469 7374 7269 6275 7465 6420 756e  e.distributed un\n+00000240: 6465 7220 7468 6520 4c69 6365 6e73 6520  der the License \n+00000250: 6973 2064 6973 7472 6962 7574 6564 206f  is distributed o\n+00000260: 6e20 616e 2022 4153 2049 5322 2042 4153  n an \"AS IS\" BAS\n+00000270: 4953 2c0a 5749 5448 4f55 5420 5741 5252  IS,.WITHOUT WARR\n+00000280: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n+00000290: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n+000002a0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n+000002b0: 206f 7220 696d 706c 6965 642e 0a53 6565   or implied..See\n+000002c0: 2074 6865 204c 6963 656e 7365 2066 6f72   the License for\n+000002d0: 2074 6865 2073 7065 6369 6669 6320 6c61   the specific la\n+000002e0: 6e67 7561 6765 2067 6f76 6572 6e69 6e67  nguage governing\n+000002f0: 2070 6572 6d69 7373 696f 6e73 2061 6e64   permissions and\n+00000300: 0a6c 696d 6974 6174 696f 6e73 2075 6e64  .limitations und\n+00000310: 6572 2074 6865 204c 6963 656e 7365 2e0a  er the License..\n+00000320: 2d2d 3e0a 3c70 726f 6a65 6374 2078 7369  -->.<project xsi\n+00000330: 3a73 6368 656d 614c 6f63 6174 696f 6e3d  :schemaLocation=\n+00000340: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+00000350: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+00000360: 2e30 2068 7474 7073 3a2f 2f6d 6176 656e  .0 https://maven\n+00000370: 2e61 7061 6368 652e 6f72 672f 7873 642f  .apache.org/xsd/\n+00000380: 6d61 7665 6e2d 342e 302e 302e 7873 6422  maven-4.0.0.xsd\"\n+00000390: 2078 6d6c 6e73 3d22 6874 7470 3a2f 2f6d   xmlns=\"http://m\n+000003a0: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+000003b0: 504f 4d2f 342e 302e 3022 0a20 2020 2078  POM/4.0.0\".    x\n+000003c0: 6d6c 6e73 3a78 7369 3d22 6874 7470 3a2f  mlns:xsi=\"http:/\n+000003d0: 2f77 7777 2e77 332e 6f72 672f 3230 3031  /www.w3.org/2001\n+000003e0: 2f58 4d4c 5363 6865 6d61 2d69 6e73 7461  /XMLSchema-insta\n+000003f0: 6e63 6522 3e0a 2020 3c6d 6f64 656c 5665  nce\">.  <modelVe\n+00000400: 7273 696f 6e3e 342e 302e 303c 2f6d 6f64  rsion>4.0.0</mod\n+00000410: 656c 5665 7273 696f 6e3e 0a20 203c 7061  elVersion>.  <pa\n+00000420: 7265 6e74 3e0a 2020 2020 3c67 726f 7570  rent>.    <group\n+00000430: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+00000440: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000450: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000460: 6262 6f2d 7365 7269 616c 697a 6174 696f  bbo-serializatio\n+00000470: 6e3c 2f61 7274 6966 6163 7449 643e 0a20  n</artifactId>. \n+00000480: 2020 203c 7665 7273 696f 6e3e 322e 372e     <version>2.7.\n+00000490: 3130 3c2f 7665 7273 696f 6e3e 0a20 203c  10</version>.  <\n+000004a0: 2f70 6172 656e 743e 0a20 203c 6772 6f75  /parent>.  <grou\n+000004b0: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n+000004c0: 7562 626f 3c2f 6772 6f75 7049 643e 0a20  ubbo</groupId>. \n+000004d0: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+000004e0: 626f 2d73 6572 6961 6c69 7a61 7469 6f6e  bo-serialization\n+000004f0: 2d70 726f 746f 6275 663c 2f61 7274 6966  -protobuf</artif\n+00000500: 6163 7449 643e 0a20 203c 7665 7273 696f  actId>.  <versio\n+00000510: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n+00000520: 6e3e 0a20 203c 6e61 6d65 3e24 7b70 726f  n>.  <name>${pro\n+00000530: 6a65 6374 2e61 7274 6966 6163 7449 647d  ject.artifactId}\n+00000540: 3c2f 6e61 6d65 3e0a 2020 3c64 6573 6372  </name>.  <descr\n+00000550: 6970 7469 6f6e 3e54 6865 2070 726f 746f  iption>The proto\n+00000560: 6275 6620 7365 7269 616c 697a 6174 696f  buf serializatio\n+00000570: 6e20 6d6f 6475 6c65 206f 6620 6475 6262  n module of dubb\n+00000580: 6f20 7072 6f6a 6563 743c 2f64 6573 6372  o project</descr\n+00000590: 6970 7469 6f6e 3e0a 2020 3c6c 6963 656e  iption>.  <licen\n+000005a0: 7365 733e 0a20 2020 203c 6c69 6365 6e73  ses>.    <licens\n+000005b0: 653e 0a20 2020 2020 203c 6e61 6d65 3e41  e>.      <name>A\n+000005c0: 7061 6368 6520 4c69 6365 6e73 652c 2056  pache License, V\n+000005d0: 6572 7369 6f6e 2032 2e30 3c2f 6e61 6d65  ersion 2.0</name\n+000005e0: 3e0a 2020 2020 2020 3c75 726c 3e68 7474  >.      <url>htt\n+000005f0: 703a 2f2f 7777 772e 6170 6163 6865 2e6f  p://www.apache.o\n+00000600: 7267 2f6c 6963 656e 7365 732f 4c49 4345  rg/licenses/LICE\n+00000610: 4e53 452d 322e 303c 2f75 726c 3e0a 2020  NSE-2.0</url>.  \n+00000620: 2020 2020 3c64 6973 7472 6962 7574 696f      <distributio\n+00000630: 6e3e 7265 706f 3c2f 6469 7374 7269 6275  n>repo</distribu\n+00000640: 7469 6f6e 3e0a 2020 2020 3c2f 6c69 6365  tion>.    </lice\n+00000650: 6e73 653e 0a20 203c 2f6c 6963 656e 7365  nse>.  </license\n+00000660: 733e 0a20 203c 7072 6f70 6572 7469 6573  s>.  <properties\n+00000670: 3e0a 2020 2020 3c73 6b69 705f 6d61 7665  >.    <skip_mave\n+00000680: 6e5f 6465 706c 6f79 3e66 616c 7365 3c2f  n_deploy>false</\n+00000690: 736b 6970 5f6d 6176 656e 5f64 6570 6c6f  skip_maven_deplo\n+000006a0: 793e 0a20 2020 203c 6475 6262 6f2e 636f  y>.    <dubbo.co\n+000006b0: 6d70 696c 6572 2e76 6572 7369 6f6e 3e30  mpiler.version>0\n+000006c0: 2e30 2e31 2d53 4e41 5053 484f 543c 2f64  .0.1-SNAPSHOT</d\n 000006d0: 7562 626f 2e63 6f6d 7069 6c65 722e 7665  ubbo.compiler.ve\n-000006e0: 7273 696f 6e3e 302e 302e 312d 534e 4150  rsion>0.0.1-SNAP\n-000006f0: 5348 4f54 3c2f 6475 6262 6f2e 636f 6d70  SHOT</dubbo.comp\n-00000700: 696c 6572 2e76 6572 7369 6f6e 3e0d 0a20  iler.version>.. \n-00000710: 203c 2f70 726f 7065 7274 6965 733e 0d0a   </properties>..\n-00000720: 2020 3c64 6570 656e 6465 6e63 6965 733e    <dependencies>\n-00000730: 0d0a 2020 2020 3c64 6570 656e 6465 6e63  ..    <dependenc\n-00000740: 793e 0d0a 2020 2020 2020 3c67 726f 7570  y>..      <group\n-00000750: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n-00000760: 6262 6f3c 2f67 726f 7570 4964 3e0d 0a20  bbo</groupId>.. \n-00000770: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n-00000780: 3e64 7562 626f 2d73 6572 6961 6c69 7a61  >dubbo-serializa\n-00000790: 7469 6f6e 2d61 7069 3c2f 6172 7469 6661  tion-api</artifa\n-000007a0: 6374 4964 3e0d 0a20 2020 2020 203c 7665  ctId>..      <ve\n-000007b0: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n-000007c0: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n-000007d0: 2f76 6572 7369 6f6e 3e0d 0a20 2020 203c  /version>..    <\n-000007e0: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-000007f0: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-00000800: 2020 2020 2020 3c67 726f 7570 4964 3e63        <groupId>c\n-00000810: 6f6d 2e67 6f6f 676c 652e 7072 6f74 6f62  om.google.protob\n-00000820: 7566 3c2f 6772 6f75 7049 643e 0d0a 2020  uf</groupId>..  \n-00000830: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-00000840: 7072 6f74 6f62 7566 2d6a 6176 613c 2f61  protobuf-java</a\n-00000850: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-00000860: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-00000870: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-00000880: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000890: 636f 6d2e 676f 6f67 6c65 2e70 726f 746f  com.google.proto\n-000008a0: 6275 663c 2f67 726f 7570 4964 3e0d 0a20  buf</groupId>.. \n-000008b0: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n-000008c0: 3e70 726f 746f 6275 662d 6a61 7661 2d75  >protobuf-java-u\n-000008d0: 7469 6c3c 2f61 7274 6966 6163 7449 643e  til</artifactId>\n-000008e0: 0d0a 2020 2020 3c2f 6465 7065 6e64 656e  ..    </dependen\n-000008f0: 6379 3e0d 0a20 203c 2f64 6570 656e 6465  cy>..  </depende\n-00000900: 6e63 6965 733e 0d0a 2020 3c62 7569 6c64  ncies>..  <build\n-00000910: 3e0d 0a20 2020 203c 6578 7465 6e73 696f  >..    <extensio\n-00000920: 6e73 3e0d 0a20 2020 2020 203c 6578 7465  ns>..      <exte\n-00000930: 6e73 696f 6e3e 0d0a 2020 2020 2020 2020  nsion>..        \n-00000940: 3c67 726f 7570 4964 3e6b 722e 6d6f 7464  <groupId>kr.motd\n-00000950: 2e6d 6176 656e 3c2f 6772 6f75 7049 643e  .maven</groupId>\n-00000960: 0d0a 2020 2020 2020 2020 3c61 7274 6966  ..        <artif\n-00000970: 6163 7449 643e 6f73 2d6d 6176 656e 2d70  actId>os-maven-p\n-00000980: 6c75 6769 6e3c 2f61 7274 6966 6163 7449  lugin</artifactI\n-00000990: 643e 0d0a 2020 2020 2020 2020 3c76 6572  d>..        <ver\n-000009a0: 7369 6f6e 3e31 2e36 2e31 3c2f 7665 7273  sion>1.6.1</vers\n-000009b0: 696f 6e3e 0d0a 2020 2020 2020 3c2f 6578  ion>..      </ex\n-000009c0: 7465 6e73 696f 6e3e 0d0a 2020 2020 3c2f  tension>..    </\n-000009d0: 6578 7465 6e73 696f 6e73 3e0d 0a20 2020  extensions>..   \n-000009e0: 203c 706c 7567 696e 733e 0d0a 2020 2020   <plugins>..    \n-000009f0: 2020 3c70 6c75 6769 6e3e 0d0a 2020 2020    <plugin>..    \n-00000a00: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n-00000a10: 2e78 6f6c 7374 6963 652e 6d61 7665 6e2e  .xolstice.maven.\n-00000a20: 706c 7567 696e 733c 2f67 726f 7570 4964  plugins</groupId\n-00000a30: 3e0d 0a20 2020 2020 2020 203c 6172 7469  >..        <arti\n-00000a40: 6661 6374 4964 3e70 726f 746f 6275 662d  factId>protobuf-\n-00000a50: 6d61 7665 6e2d 706c 7567 696e 3c2f 6172  maven-plugin</ar\n-00000a60: 7469 6661 6374 4964 3e0d 0a20 2020 2020  tifactId>..     \n-00000a70: 2020 203c 7665 7273 696f 6e3e 302e 352e     <version>0.5.\n-00000a80: 313c 2f76 6572 7369 6f6e 3e0d 0a20 2020  1</version>..   \n-00000a90: 2020 2020 203c 6578 7465 6e73 696f 6e73       <extensions\n-00000aa0: 3e74 7275 653c 2f65 7874 656e 7369 6f6e  >true</extension\n-00000ab0: 733e 0d0a 2020 2020 2020 2020 3c65 7865  s>..        <exe\n-00000ac0: 6375 7469 6f6e 733e 0d0a 2020 2020 2020  cutions>..      \n-00000ad0: 2020 2020 3c65 7865 6375 7469 6f6e 3e0d      <execution>.\n-00000ae0: 0a20 2020 2020 2020 2020 2020 203c 676f  .            <go\n-00000af0: 616c 733e 0d0a 2020 2020 2020 2020 2020  als>..          \n-00000b00: 2020 2020 3c67 6f61 6c3e 636f 6d70 696c      <goal>compil\n-00000b10: 653c 2f67 6f61 6c3e 0d0a 2020 2020 2020  e</goal>..      \n-00000b20: 2020 2020 2020 2020 3c67 6f61 6c3e 7465          <goal>te\n-00000b30: 7374 2d63 6f6d 7069 6c65 3c2f 676f 616c  st-compile</goal\n-00000b40: 3e0d 0a20 2020 2020 2020 2020 2020 203c  >..            <\n-00000b50: 2f67 6f61 6c73 3e0d 0a20 2020 2020 2020  /goals>..       \n-00000b60: 2020 203c 2f65 7865 6375 7469 6f6e 3e0d     </execution>.\n-00000b70: 0a20 2020 2020 2020 203c 2f65 7865 6375  .        </execu\n-00000b80: 7469 6f6e 733e 0d0a 2020 2020 2020 2020  tions>..        \n-00000b90: 3c63 6f6e 6669 6775 7261 7469 6f6e 3e0d  <configuration>.\n-00000ba0: 0a20 2020 2020 2020 2020 203c 7072 6f74  .          <prot\n-00000bb0: 6f63 4172 7469 6661 6374 3e63 6f6d 2e67  ocArtifact>com.g\n-00000bc0: 6f6f 676c 652e 7072 6f74 6f62 7566 3a70  oogle.protobuf:p\n-00000bd0: 726f 746f 633a 332e 372e 313a 6578 653a  rotoc:3.7.1:exe:\n-00000be0: 247b 6f73 2e64 6574 6563 7465 642e 636c  ${os.detected.cl\n-00000bf0: 6173 7369 6669 6572 7d3c 2f70 726f 746f  assifier}</proto\n-00000c00: 6341 7274 6966 6163 743e 0d0a 2020 2020  cArtifact>..    \n-00000c10: 2020 2020 2020 3c6f 7574 7075 7444 6972        <outputDir\n-00000c20: 6563 746f 7279 3e62 7569 6c64 2f67 656e  ectory>build/gen\n-00000c30: 6572 6174 6564 2f73 6f75 7263 652f 7072  erated/source/pr\n-00000c40: 6f74 6f2f 6d61 696e 2f6a 6176 613c 2f6f  oto/main/java</o\n-00000c50: 7574 7075 7444 6972 6563 746f 7279 3e0d  utputDirectory>.\n-00000c60: 0a20 2020 2020 2020 2020 203c 636c 6561  .          <clea\n-00000c70: 724f 7574 7075 7444 6972 6563 746f 7279  rOutputDirectory\n-00000c80: 3e66 616c 7365 3c2f 636c 6561 724f 7574  >false</clearOut\n-00000c90: 7075 7444 6972 6563 746f 7279 3e0d 0a20  putDirectory>.. \n-00000ca0: 2020 2020 2020 203c 2f63 6f6e 6669 6775         </configu\n-00000cb0: 7261 7469 6f6e 3e0d 0a20 2020 2020 203c  ration>..      <\n-00000cc0: 2f70 6c75 6769 6e3e 0d0a 2020 2020 2020  /plugin>..      \n-00000cd0: 3c70 6c75 6769 6e3e 0d0a 2020 2020 2020  <plugin>..      \n-00000ce0: 2020 3c67 726f 7570 4964 3e6f 7267 2e63    <groupId>org.c\n-00000cf0: 6f64 6568 6175 732e 6d6f 6a6f 3c2f 6772  odehaus.mojo</gr\n-00000d00: 6f75 7049 643e 0d0a 2020 2020 2020 2020  oupId>..        \n-00000d10: 3c61 7274 6966 6163 7449 643e 6275 696c  <artifactId>buil\n-00000d20: 642d 6865 6c70 6572 2d6d 6176 656e 2d70  d-helper-maven-p\n-00000d30: 6c75 6769 6e3c 2f61 7274 6966 6163 7449  lugin</artifactI\n-00000d40: 643e 0d0a 2020 2020 2020 2020 3c65 7865  d>..        <exe\n-00000d50: 6375 7469 6f6e 733e 0d0a 2020 2020 2020  cutions>..      \n-00000d60: 2020 2020 3c65 7865 6375 7469 6f6e 3e0d      <execution>.\n-00000d70: 0a20 2020 2020 2020 2020 2020 203c 7068  .            <ph\n-00000d80: 6173 653e 6765 6e65 7261 7465 2d73 6f75  ase>generate-sou\n-00000d90: 7263 6573 3c2f 7068 6173 653e 0d0a 2020  rces</phase>..  \n-00000da0: 2020 2020 2020 2020 2020 3c67 6f61 6c73            <goals\n-00000db0: 3e0d 0a20 2020 2020 2020 2020 2020 2020  >..             \n-00000dc0: 203c 676f 616c 3e61 6464 2d73 6f75 7263   <goal>add-sourc\n-00000dd0: 653c 2f67 6f61 6c3e 0d0a 2020 2020 2020  e</goal>..      \n-00000de0: 2020 2020 2020 3c2f 676f 616c 733e 0d0a        </goals>..\n-00000df0: 2020 2020 2020 2020 2020 2020 3c63 6f6e              <con\n-00000e00: 6669 6775 7261 7469 6f6e 3e0d 0a20 2020  figuration>..   \n-00000e10: 2020 2020 2020 2020 2020 203c 736f 7572             <sour\n-00000e20: 6365 733e 0d0a 2020 2020 2020 2020 2020  ces>..          \n-00000e30: 2020 2020 2020 3c73 6f75 7263 653e 6275        <source>bu\n-00000e40: 696c 642f 6765 6e65 7261 7465 642f 736f  ild/generated/so\n-00000e50: 7572 6365 2f70 726f 746f 2f6d 6169 6e2f  urce/proto/main/\n-00000e60: 6a61 7661 3c2f 736f 7572 6365 3e0d 0a20  java</source>.. \n-00000e70: 2020 2020 2020 2020 2020 2020 203c 2f73               </s\n-00000e80: 6f75 7263 6573 3e0d 0a20 2020 2020 2020  ources>..       \n-00000e90: 2020 2020 203c 2f63 6f6e 6669 6775 7261       </configura\n-00000ea0: 7469 6f6e 3e0d 0a20 2020 2020 2020 2020  tion>..         \n-00000eb0: 203c 2f65 7865 6375 7469 6f6e 3e0d 0a20   </execution>.. \n-00000ec0: 2020 2020 2020 203c 2f65 7865 6375 7469         </executi\n-00000ed0: 6f6e 733e 0d0a 2020 2020 2020 3c2f 706c  ons>..      </pl\n-00000ee0: 7567 696e 3e0d 0a20 2020 203c 2f70 6c75  ugin>..    </plu\n-00000ef0: 6769 6e73 3e0d 0a20 203c 2f62 7569 6c64  gins>..  </build\n-00000f00: 3e0d 0a3c 2f70 726f 6a65 6374 3e0d 0a    >..</project>..\n+000006e0: 7273 696f 6e3e 0a20 203c 2f70 726f 7065  rsion>.  </prope\n+000006f0: 7274 6965 733e 0a20 203c 6465 7065 6e64  rties>.  <depend\n+00000700: 656e 6369 6573 3e0a 2020 2020 3c64 6570  encies>.    <dep\n+00000710: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+00000720: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+00000730: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+00000740: 643e 0a20 2020 2020 203c 6172 7469 6661  d>.      <artifa\n+00000750: 6374 4964 3e64 7562 626f 2d73 6572 6961  ctId>dubbo-seria\n+00000760: 6c69 7a61 7469 6f6e 2d61 7069 3c2f 6172  lization-api</ar\n+00000770: 7469 6661 6374 4964 3e0a 2020 2020 2020  tifactId>.      \n+00000780: 3c76 6572 7369 6f6e 3e24 7b70 726f 6a65  <version>${proje\n+00000790: 6374 2e70 6172 656e 742e 7665 7273 696f  ct.parent.versio\n+000007a0: 6e7d 3c2f 7665 7273 696f 6e3e 0a20 2020  n}</version>.   \n+000007b0: 203c 2f64 6570 656e 6465 6e63 793e 0a20   </dependency>. \n+000007c0: 2020 203c 6465 7065 6e64 656e 6379 3e0a     <dependency>.\n+000007d0: 2020 2020 2020 3c67 726f 7570 4964 3e63        <groupId>c\n+000007e0: 6f6d 2e67 6f6f 676c 652e 7072 6f74 6f62  om.google.protob\n+000007f0: 7566 3c2f 6772 6f75 7049 643e 0a20 2020  uf</groupId>.   \n+00000800: 2020 203c 6172 7469 6661 6374 4964 3e70     <artifactId>p\n+00000810: 726f 746f 6275 662d 6a61 7661 3c2f 6172  rotobuf-java</ar\n+00000820: 7469 6661 6374 4964 3e0a 2020 2020 3c2f  tifactId>.    </\n+00000830: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000840: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+00000850: 2020 203c 6772 6f75 7049 643e 636f 6d2e     <groupId>com.\n+00000860: 676f 6f67 6c65 2e70 726f 746f 6275 663c  google.protobuf<\n+00000870: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+00000880: 3c61 7274 6966 6163 7449 643e 7072 6f74  <artifactId>prot\n+00000890: 6f62 7566 2d6a 6176 612d 7574 696c 3c2f  obuf-java-util</\n+000008a0: 6172 7469 6661 6374 4964 3e0a 2020 2020  artifactId>.    \n+000008b0: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+000008c0: 3c2f 6465 7065 6e64 656e 6369 6573 3e0a  </dependencies>.\n+000008d0: 2020 3c62 7569 6c64 3e0a 2020 2020 3c65    <build>.    <e\n+000008e0: 7874 656e 7369 6f6e 733e 0a20 2020 2020  xtensions>.     \n+000008f0: 203c 6578 7465 6e73 696f 6e3e 0a20 2020   <extension>.   \n+00000900: 2020 2020 203c 6772 6f75 7049 643e 6b72       <groupId>kr\n+00000910: 2e6d 6f74 642e 6d61 7665 6e3c 2f67 726f  .motd.maven</gro\n+00000920: 7570 4964 3e0a 2020 2020 2020 2020 3c61  upId>.        <a\n+00000930: 7274 6966 6163 7449 643e 6f73 2d6d 6176  rtifactId>os-mav\n+00000940: 656e 2d70 6c75 6769 6e3c 2f61 7274 6966  en-plugin</artif\n+00000950: 6163 7449 643e 0a20 2020 2020 2020 203c  actId>.        <\n+00000960: 7665 7273 696f 6e3e 312e 362e 313c 2f76  version>1.6.1</v\n+00000970: 6572 7369 6f6e 3e0a 2020 2020 2020 3c2f  ersion>.      </\n+00000980: 6578 7465 6e73 696f 6e3e 0a20 2020 203c  extension>.    <\n+00000990: 2f65 7874 656e 7369 6f6e 733e 0a20 2020  /extensions>.   \n+000009a0: 203c 706c 7567 696e 733e 0a20 2020 2020   <plugins>.     \n+000009b0: 203c 706c 7567 696e 3e0a 2020 2020 2020   <plugin>.      \n+000009c0: 2020 3c67 726f 7570 4964 3e6f 7267 2e78    <groupId>org.x\n+000009d0: 6f6c 7374 6963 652e 6d61 7665 6e2e 706c  olstice.maven.pl\n+000009e0: 7567 696e 733c 2f67 726f 7570 4964 3e0a  ugins</groupId>.\n+000009f0: 2020 2020 2020 2020 3c61 7274 6966 6163          <artifac\n+00000a00: 7449 643e 7072 6f74 6f62 7566 2d6d 6176  tId>protobuf-mav\n+00000a10: 656e 2d70 6c75 6769 6e3c 2f61 7274 6966  en-plugin</artif\n+00000a20: 6163 7449 643e 0a20 2020 2020 2020 203c  actId>.        <\n+00000a30: 7665 7273 696f 6e3e 302e 352e 313c 2f76  version>0.5.1</v\n+00000a40: 6572 7369 6f6e 3e0a 2020 2020 2020 2020  ersion>.        \n+00000a50: 3c65 7874 656e 7369 6f6e 733e 7472 7565  <extensions>true\n+00000a60: 3c2f 6578 7465 6e73 696f 6e73 3e0a 2020  </extensions>.  \n+00000a70: 2020 2020 2020 3c65 7865 6375 7469 6f6e        <execution\n+00000a80: 733e 0a20 2020 2020 2020 2020 203c 6578  s>.          <ex\n+00000a90: 6563 7574 696f 6e3e 0a20 2020 2020 2020  ecution>.       \n+00000aa0: 2020 2020 203c 676f 616c 733e 0a20 2020       <goals>.   \n+00000ab0: 2020 2020 2020 2020 2020 203c 676f 616c             <goal\n+00000ac0: 3e63 6f6d 7069 6c65 3c2f 676f 616c 3e0a  >compile</goal>.\n+00000ad0: 2020 2020 2020 2020 2020 2020 2020 3c67                <g\n+00000ae0: 6f61 6c3e 7465 7374 2d63 6f6d 7069 6c65  oal>test-compile\n+00000af0: 3c2f 676f 616c 3e0a 2020 2020 2020 2020  </goal>.        \n+00000b00: 2020 2020 3c2f 676f 616c 733e 0a20 2020      </goals>.   \n+00000b10: 2020 2020 2020 203c 2f65 7865 6375 7469         </executi\n+00000b20: 6f6e 3e0a 2020 2020 2020 2020 3c2f 6578  on>.        </ex\n+00000b30: 6563 7574 696f 6e73 3e0a 2020 2020 2020  ecutions>.      \n+00000b40: 2020 3c63 6f6e 6669 6775 7261 7469 6f6e    <configuration\n+00000b50: 3e0a 2020 2020 2020 2020 2020 3c70 726f  >.          <pro\n+00000b60: 746f 6341 7274 6966 6163 743e 636f 6d2e  tocArtifact>com.\n+00000b70: 676f 6f67 6c65 2e70 726f 746f 6275 663a  google.protobuf:\n+00000b80: 7072 6f74 6f63 3a33 2e37 2e31 3a65 7865  protoc:3.7.1:exe\n+00000b90: 3a24 7b6f 732e 6465 7465 6374 6564 2e63  :${os.detected.c\n+00000ba0: 6c61 7373 6966 6965 727d 3c2f 7072 6f74  lassifier}</prot\n+00000bb0: 6f63 4172 7469 6661 6374 3e0a 2020 2020  ocArtifact>.    \n+00000bc0: 2020 2020 2020 3c6f 7574 7075 7444 6972        <outputDir\n+00000bd0: 6563 746f 7279 3e62 7569 6c64 2f67 656e  ectory>build/gen\n+00000be0: 6572 6174 6564 2f73 6f75 7263 652f 7072  erated/source/pr\n+00000bf0: 6f74 6f2f 6d61 696e 2f6a 6176 613c 2f6f  oto/main/java</o\n+00000c00: 7574 7075 7444 6972 6563 746f 7279 3e0a  utputDirectory>.\n+00000c10: 2020 2020 2020 2020 2020 3c63 6c65 6172            <clear\n+00000c20: 4f75 7470 7574 4469 7265 6374 6f72 793e  OutputDirectory>\n+00000c30: 6661 6c73 653c 2f63 6c65 6172 4f75 7470  false</clearOutp\n+00000c40: 7574 4469 7265 6374 6f72 793e 0a20 2020  utDirectory>.   \n+00000c50: 2020 2020 203c 2f63 6f6e 6669 6775 7261       </configura\n+00000c60: 7469 6f6e 3e0a 2020 2020 2020 3c2f 706c  tion>.      </pl\n+00000c70: 7567 696e 3e0a 2020 2020 2020 3c70 6c75  ugin>.      <plu\n+00000c80: 6769 6e3e 0a20 2020 2020 2020 203c 6772  gin>.        <gr\n+00000c90: 6f75 7049 643e 6f72 672e 636f 6465 6861  oupId>org.codeha\n+00000ca0: 7573 2e6d 6f6a 6f3c 2f67 726f 7570 4964  us.mojo</groupId\n+00000cb0: 3e0a 2020 2020 2020 2020 3c61 7274 6966  >.        <artif\n+00000cc0: 6163 7449 643e 6275 696c 642d 6865 6c70  actId>build-help\n+00000cd0: 6572 2d6d 6176 656e 2d70 6c75 6769 6e3c  er-maven-plugin<\n+00000ce0: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+00000cf0: 2020 2020 203c 6578 6563 7574 696f 6e73       <executions\n+00000d00: 3e0a 2020 2020 2020 2020 2020 3c65 7865  >.          <exe\n+00000d10: 6375 7469 6f6e 3e0a 2020 2020 2020 2020  cution>.        \n+00000d20: 2020 2020 3c70 6861 7365 3e67 656e 6572      <phase>gener\n+00000d30: 6174 652d 736f 7572 6365 733c 2f70 6861  ate-sources</pha\n+00000d40: 7365 3e0a 2020 2020 2020 2020 2020 2020  se>.            \n+00000d50: 3c67 6f61 6c73 3e0a 2020 2020 2020 2020  <goals>.        \n+00000d60: 2020 2020 2020 3c67 6f61 6c3e 6164 642d        <goal>add-\n+00000d70: 736f 7572 6365 3c2f 676f 616c 3e0a 2020  source</goal>.  \n+00000d80: 2020 2020 2020 2020 2020 3c2f 676f 616c            </goal\n+00000d90: 733e 0a20 2020 2020 2020 2020 2020 203c  s>.            <\n+00000da0: 636f 6e66 6967 7572 6174 696f 6e3e 0a20  configuration>. \n+00000db0: 2020 2020 2020 2020 2020 2020 203c 736f               <so\n+00000dc0: 7572 6365 733e 0a20 2020 2020 2020 2020  urces>.         \n+00000dd0: 2020 2020 2020 203c 736f 7572 6365 3e62         <source>b\n+00000de0: 7569 6c64 2f67 656e 6572 6174 6564 2f73  uild/generated/s\n+00000df0: 6f75 7263 652f 7072 6f74 6f2f 6d61 696e  ource/proto/main\n+00000e00: 2f6a 6176 613c 2f73 6f75 7263 653e 0a20  /java</source>. \n+00000e10: 2020 2020 2020 2020 2020 2020 203c 2f73               </s\n+00000e20: 6f75 7263 6573 3e0a 2020 2020 2020 2020  ources>.        \n+00000e30: 2020 2020 3c2f 636f 6e66 6967 7572 6174      </configurat\n+00000e40: 696f 6e3e 0a20 2020 2020 2020 2020 203c  ion>.          <\n+00000e50: 2f65 7865 6375 7469 6f6e 3e0a 2020 2020  /execution>.    \n+00000e60: 2020 2020 3c2f 6578 6563 7574 696f 6e73      </executions\n+00000e70: 3e0a 2020 2020 2020 3c2f 706c 7567 696e  >.      </plugin\n+00000e80: 3e0a 2020 2020 3c2f 706c 7567 696e 733e  >.    </plugins>\n+00000e90: 0a20 203c 2f62 7569 6c64 3e0a 3c2f 7072  .  </build>.</pr\n+00000ea0: 6f6a 6563 743e 0a                        oject>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-configcenter-zookeeper/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-configcenter-zookeeper/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,142 +1,139 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d63 6f6e 6669 6763 656e 7465 723c  bo-configcenter<\n-000004a0: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-000004b0: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n-000004c0: 303c 2f76 6572 7369 6f6e 3e0d 0a20 203c  0</version>..  <\n-000004d0: 2f70 6172 656e 743e 0d0a 2020 3c67 726f  /parent>..  <gro\n-000004e0: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n-000004f0: 6475 6262 6f3c 2f67 726f 7570 4964 3e0d  dubbo</groupId>.\n-00000500: 0a20 203c 6172 7469 6661 6374 4964 3e64  .  <artifactId>d\n-00000510: 7562 626f 2d63 6f6e 6669 6763 656e 7465  ubbo-configcente\n-00000520: 722d 7a6f 6f6b 6565 7065 723c 2f61 7274  r-zookeeper</art\n-00000530: 6966 6163 7449 643e 0d0a 2020 3c76 6572  ifactId>..  <ver\n-00000540: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n-00000550: 7369 6f6e 3e0d 0a20 203c 6e61 6d65 3e24  sion>..  <name>$\n-00000560: 7b70 726f 6a65 6374 2e61 7274 6966 6163  {project.artifac\n-00000570: 7449 647d 3c2f 6e61 6d65 3e0d 0a20 203c  tId}</name>..  <\n-00000580: 6465 7363 7269 7074 696f 6e3e 5468 6520  description>The \n-00000590: 7a6f 6f6b 6565 7065 7220 696d 706c 656d  zookeeper implem\n-000005a0: 656e 7461 7469 6f6e 206f 6620 7468 6520  entation of the \n-000005b0: 636f 6e66 6967 2d63 656e 7465 7220 6170  config-center ap\n-000005c0: 693c 2f64 6573 6372 6970 7469 6f6e 3e0d  i</description>.\n-000005d0: 0a20 203c 6c69 6365 6e73 6573 3e0d 0a20  .  <licenses>.. \n-000005e0: 2020 203c 6c69 6365 6e73 653e 0d0a 2020     <license>..  \n-000005f0: 2020 2020 3c6e 616d 653e 4170 6163 6865      <name>Apache\n-00000600: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000610: 6e20 322e 303c 2f6e 616d 653e 0d0a 2020  n 2.0</name>..  \n-00000620: 2020 2020 3c75 726c 3e68 7474 703a 2f2f      <url>http://\n-00000630: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n-00000640: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n-00000650: 322e 303c 2f75 726c 3e0d 0a20 2020 2020  2.0</url>..     \n-00000660: 203c 6469 7374 7269 6275 7469 6f6e 3e72   <distribution>r\n-00000670: 6570 6f3c 2f64 6973 7472 6962 7574 696f  epo</distributio\n-00000680: 6e3e 0d0a 2020 2020 3c2f 6c69 6365 6e73  n>..    </licens\n-00000690: 653e 0d0a 2020 3c2f 6c69 6365 6e73 6573  e>..  </licenses\n-000006a0: 3e0d 0a20 203c 6465 7065 6e64 656e 6369  >..  <dependenci\n-000006b0: 6573 3e0d 0a20 2020 203c 6465 7065 6e64  es>..    <depend\n-000006c0: 656e 6379 3e0d 0a20 2020 2020 203c 6772  ency>..      <gr\n-000006d0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n-000006e0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n-000006f0: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-00000700: 7449 643e 6475 6262 6f2d 636f 6d6d 6f6e  tId>dubbo-common\n-00000710: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000720: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n-00000730: 7072 6f6a 6563 742e 7061 7265 6e74 2e76  project.parent.v\n-00000740: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n-00000750: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-00000760: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-00000770: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-00000780: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n-00000790: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n-000007a0: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-000007b0: 6374 4964 3e64 7562 626f 2d72 656d 6f74  ctId>dubbo-remot\n-000007c0: 696e 672d 7a6f 6f6b 6565 7065 723c 2f61  ing-zookeeper</a\n-000007d0: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-000007e0: 2020 3c76 6572 7369 6f6e 3e24 7b70 726f    <version>${pro\n-000007f0: 6a65 6374 2e70 6172 656e 742e 7665 7273  ject.parent.vers\n-00000800: 696f 6e7d 3c2f 7665 7273 696f 6e3e 0d0a  ion}</version>..\n-00000810: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n-00000820: 3e0d 0a20 2020 203c 6465 7065 6e64 656e  >..    <dependen\n-00000830: 6379 3e0d 0a20 2020 2020 203c 6772 6f75  cy>..      <grou\n-00000840: 7049 643e 6f72 672e 6170 6163 6865 2e63  pId>org.apache.c\n-00000850: 7572 6174 6f72 3c2f 6772 6f75 7049 643e  urator</groupId>\n-00000860: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-00000870: 7449 643e 6375 7261 746f 722d 7465 7374  tId>curator-test\n-00000880: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000890: 2020 2020 203c 7363 6f70 653e 7465 7374       <scope>test\n-000008a0: 3c2f 7363 6f70 653e 0d0a 2020 2020 3c2f  </scope>..    </\n-000008b0: 6465 7065 6e64 656e 6379 3e0d 0a20 203c  dependency>..  <\n-000008c0: 2f64 6570 656e 6465 6e63 6965 733e 0d0a  /dependencies>..\n-000008d0: 3c2f 7072 6f6a 6563 743e 0d0a            </project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d63 6f6e  factId>dubbo-con\n+00000480: 6669 6763 656e 7465 723c 2f61 7274 6966  figcenter</artif\n+00000490: 6163 7449 643e 0a20 2020 203c 7665 7273  actId>.    <vers\n+000004a0: 696f 6e3e 322e 372e 3130 3c2f 7665 7273  ion>2.7.10</vers\n+000004b0: 696f 6e3e 0a20 203c 2f70 6172 656e 743e  ion>.  </parent>\n+000004c0: 0a20 203c 6772 6f75 7049 643e 6f72 672e  .  <groupId>org.\n+000004d0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+000004e0: 6f75 7049 643e 0a20 203c 6172 7469 6661  oupId>.  <artifa\n+000004f0: 6374 4964 3e64 7562 626f 2d63 6f6e 6669  ctId>dubbo-confi\n+00000500: 6763 656e 7465 722d 7a6f 6f6b 6565 7065  gcenter-zookeepe\n+00000510: 723c 2f61 7274 6966 6163 7449 643e 0a20  r</artifactId>. \n+00000520: 203c 7665 7273 696f 6e3e 322e 372e 3130   <version>2.7.10\n+00000530: 3c2f 7665 7273 696f 6e3e 0a20 203c 6e61  </version>.  <na\n+00000540: 6d65 3e24 7b70 726f 6a65 6374 2e61 7274  me>${project.art\n+00000550: 6966 6163 7449 647d 3c2f 6e61 6d65 3e0a  ifactId}</name>.\n+00000560: 2020 3c64 6573 6372 6970 7469 6f6e 3e54    <description>T\n+00000570: 6865 207a 6f6f 6b65 6570 6572 2069 6d70  he zookeeper imp\n+00000580: 6c65 6d65 6e74 6174 696f 6e20 6f66 2074  lementation of t\n+00000590: 6865 2063 6f6e 6669 672d 6365 6e74 6572  he config-center\n+000005a0: 2061 7069 3c2f 6465 7363 7269 7074 696f   api</descriptio\n+000005b0: 6e3e 0a20 203c 6c69 6365 6e73 6573 3e0a  n>.  <licenses>.\n+000005c0: 2020 2020 3c6c 6963 656e 7365 3e0a 2020      <license>.  \n+000005d0: 2020 2020 3c6e 616d 653e 4170 6163 6865      <name>Apache\n+000005e0: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n+000005f0: 6e20 322e 303c 2f6e 616d 653e 0a20 2020  n 2.0</name>.   \n+00000600: 2020 203c 7572 6c3e 6874 7470 3a2f 2f77     <url>http://w\n+00000610: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n+00000620: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n+00000630: 2e30 3c2f 7572 6c3e 0a20 2020 2020 203c  .0</url>.      <\n+00000640: 6469 7374 7269 6275 7469 6f6e 3e72 6570  distribution>rep\n+00000650: 6f3c 2f64 6973 7472 6962 7574 696f 6e3e  o</distribution>\n+00000660: 0a20 2020 203c 2f6c 6963 656e 7365 3e0a  .    </license>.\n+00000670: 2020 3c2f 6c69 6365 6e73 6573 3e0a 2020    </licenses>.  \n+00000680: 3c64 6570 656e 6465 6e63 6965 733e 0a20  <dependencies>. \n+00000690: 2020 203c 6465 7065 6e64 656e 6379 3e0a     <dependency>.\n+000006a0: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n+000006b0: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n+000006c0: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+000006d0: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+000006e0: 6f2d 636f 6d6d 6f6e 3c2f 6172 7469 6661  o-common</artifa\n+000006f0: 6374 4964 3e0a 2020 2020 2020 3c76 6572  ctId>.      <ver\n+00000700: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n+00000710: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n+00000720: 7665 7273 696f 6e3e 0a20 2020 203c 2f64  version>.    </d\n+00000730: 6570 656e 6465 6e63 793e 0a20 2020 203c  ependency>.    <\n+00000740: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000750: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+00000760: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n+00000770: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000780: 6966 6163 7449 643e 6475 6262 6f2d 7265  ifactId>dubbo-re\n+00000790: 6d6f 7469 6e67 2d7a 6f6f 6b65 6570 6572  moting-zookeeper\n+000007a0: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+000007b0: 2020 2020 3c76 6572 7369 6f6e 3e24 7b70      <version>${p\n+000007c0: 726f 6a65 6374 2e70 6172 656e 742e 7665  roject.parent.ve\n+000007d0: 7273 696f 6e7d 3c2f 7665 7273 696f 6e3e  rsion}</version>\n+000007e0: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+000007f0: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+00000800: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+00000810: 4964 3e6f 7267 2e61 7061 6368 652e 6375  Id>org.apache.cu\n+00000820: 7261 746f 723c 2f67 726f 7570 4964 3e0a  rator</groupId>.\n+00000830: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n+00000840: 643e 6375 7261 746f 722d 7465 7374 3c2f  d>curator-test</\n+00000850: 6172 7469 6661 6374 4964 3e0a 2020 2020  artifactId>.    \n+00000860: 2020 3c73 636f 7065 3e74 6573 743c 2f73    <scope>test</s\n+00000870: 636f 7065 3e0a 2020 2020 3c2f 6465 7065  cope>.    </depe\n+00000880: 6e64 656e 6379 3e0a 2020 3c2f 6465 7065  ndency>.  </depe\n+00000890: 6e64 656e 6369 6573 3e0a 3c2f 7072 6f6a  ndencies>.</proj\n+000008a0: 6563 743e 0a                             ect>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-configcenter-apollo/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-configcenter-apollo/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,152 +1,149 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d63 6f6e 6669 6763 656e 7465 723c  bo-configcenter<\n-000004a0: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-000004b0: 2020 3c76 6572 7369 6f6e 3e32 2e37 2e31    <version>2.7.1\n-000004c0: 303c 2f76 6572 7369 6f6e 3e0d 0a20 203c  0</version>..  <\n-000004d0: 2f70 6172 656e 743e 0d0a 2020 3c67 726f  /parent>..  <gro\n-000004e0: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n-000004f0: 6475 6262 6f3c 2f67 726f 7570 4964 3e0d  dubbo</groupId>.\n-00000500: 0a20 203c 6172 7469 6661 6374 4964 3e64  .  <artifactId>d\n-00000510: 7562 626f 2d63 6f6e 6669 6763 656e 7465  ubbo-configcente\n-00000520: 722d 6170 6f6c 6c6f 3c2f 6172 7469 6661  r-apollo</artifa\n-00000530: 6374 4964 3e0d 0a20 203c 7665 7273 696f  ctId>..  <versio\n-00000540: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n-00000550: 6e3e 0d0a 2020 3c6e 616d 653e 247b 7072  n>..  <name>${pr\n-00000560: 6f6a 6563 742e 6172 7469 6661 6374 4964  oject.artifactId\n-00000570: 7d3c 2f6e 616d 653e 0d0a 2020 3c64 6573  }</name>..  <des\n-00000580: 6372 6970 7469 6f6e 3e54 6865 2041 706f  cription>The Apo\n-00000590: 6c6c 6f20 696d 706c 656d 656e 7461 7469  llo implementati\n-000005a0: 6f6e 206f 6620 7468 6520 636f 6e66 6967  on of the config\n-000005b0: 6365 6e74 6572 2061 7069 3c2f 6465 7363  center api</desc\n-000005c0: 7269 7074 696f 6e3e 0d0a 2020 3c6c 6963  ription>..  <lic\n-000005d0: 656e 7365 733e 0d0a 2020 2020 3c6c 6963  enses>..    <lic\n-000005e0: 656e 7365 3e0d 0a20 2020 2020 203c 6e61  ense>..      <na\n-000005f0: 6d65 3e41 7061 6368 6520 4c69 6365 6e73  me>Apache Licens\n-00000600: 652c 2056 6572 7369 6f6e 2032 2e30 3c2f  e, Version 2.0</\n-00000610: 6e61 6d65 3e0d 0a20 2020 2020 203c 7572  name>..      <ur\n-00000620: 6c3e 6874 7470 3a2f 2f77 7777 2e61 7061  l>http://www.apa\n-00000630: 6368 652e 6f72 672f 6c69 6365 6e73 6573  che.org/licenses\n-00000640: 2f4c 4943 454e 5345 2d32 2e30 3c2f 7572  /LICENSE-2.0</ur\n-00000650: 6c3e 0d0a 2020 2020 2020 3c64 6973 7472  l>..      <distr\n-00000660: 6962 7574 696f 6e3e 7265 706f 3c2f 6469  ibution>repo</di\n-00000670: 7374 7269 6275 7469 6f6e 3e0d 0a20 2020  stribution>..   \n-00000680: 203c 2f6c 6963 656e 7365 3e0d 0a20 203c   </license>..  <\n-00000690: 2f6c 6963 656e 7365 733e 0d0a 2020 3c70  /licenses>..  <p\n-000006a0: 726f 7065 7274 6965 733e 0d0a 2020 2020  roperties>..    \n-000006b0: 3c73 6b69 705f 6d61 7665 6e5f 6465 706c  <skip_maven_depl\n-000006c0: 6f79 3e66 616c 7365 3c2f 736b 6970 5f6d  oy>false</skip_m\n-000006d0: 6176 656e 5f64 6570 6c6f 793e 0d0a 2020  aven_deploy>..  \n-000006e0: 2020 3c61 706f 6c6c 6f5f 6d6f 636b 5f73    <apollo_mock_s\n-000006f0: 6572 7665 725f 7665 7273 696f 6e3e 312e  erver_version>1.\n-00000700: 312e 313c 2f61 706f 6c6c 6f5f 6d6f 636b  1.1</apollo_mock\n-00000710: 5f73 6572 7665 725f 7665 7273 696f 6e3e  _server_version>\n-00000720: 0d0a 2020 3c2f 7072 6f70 6572 7469 6573  ..  </properties\n-00000730: 3e0d 0a20 203c 6465 7065 6e64 656e 6369  >..  <dependenci\n-00000740: 6573 3e0d 0a20 2020 203c 6465 7065 6e64  es>..    <depend\n-00000750: 656e 6379 3e0d 0a20 2020 2020 203c 6772  ency>..      <gr\n-00000760: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n-00000770: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n-00000780: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-00000790: 7449 643e 6475 6262 6f2d 636f 6d6d 6f6e  tId>dubbo-common\n-000007a0: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-000007b0: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n-000007c0: 7072 6f6a 6563 742e 7061 7265 6e74 2e76  project.parent.v\n-000007d0: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n-000007e0: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-000007f0: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-00000800: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-00000810: 726f 7570 4964 3e63 6f6d 2e63 7472 6970  roupId>com.ctrip\n-00000820: 2e66 7261 6d65 776f 726b 2e61 706f 6c6c  .framework.apoll\n-00000830: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000840: 2020 203c 6172 7469 6661 6374 4964 3e61     <artifactId>a\n-00000850: 706f 6c6c 6f2d 636c 6965 6e74 3c2f 6172  pollo-client</ar\n-00000860: 7469 6661 6374 4964 3e0d 0a20 2020 203c  tifactId>..    <\n-00000870: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-00000880: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-00000890: 2020 2020 2020 3c67 726f 7570 4964 3e63        <groupId>c\n-000008a0: 6f6d 2e63 7472 6970 2e66 7261 6d65 776f  om.ctrip.framewo\n-000008b0: 726b 2e61 706f 6c6c 6f3c 2f67 726f 7570  rk.apollo</group\n-000008c0: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-000008d0: 6661 6374 4964 3e61 706f 6c6c 6f2d 6d6f  factId>apollo-mo\n-000008e0: 636b 7365 7276 6572 3c2f 6172 7469 6661  ckserver</artifa\n-000008f0: 6374 4964 3e0d 0a20 2020 2020 203c 7665  ctId>..      <ve\n-00000900: 7273 696f 6e3e 247b 6170 6f6c 6c6f 5f6d  rsion>${apollo_m\n-00000910: 6f63 6b5f 7365 7276 6572 5f76 6572 7369  ock_server_versi\n-00000920: 6f6e 7d3c 2f76 6572 7369 6f6e 3e0d 0a20  on}</version>.. \n-00000930: 2020 2020 203c 7363 6f70 653e 7465 7374       <scope>test\n-00000940: 3c2f 7363 6f70 653e 0d0a 2020 2020 3c2f  </scope>..    </\n-00000950: 6465 7065 6e64 656e 6379 3e0d 0a20 203c  dependency>..  <\n-00000960: 2f64 6570 656e 6465 6e63 6965 733e 0d0a  /dependencies>..\n-00000970: 3c2f 7072 6f6a 6563 743e 0d0a            </project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d63 6f6e  factId>dubbo-con\n+00000480: 6669 6763 656e 7465 723c 2f61 7274 6966  figcenter</artif\n+00000490: 6163 7449 643e 0a20 2020 203c 7665 7273  actId>.    <vers\n+000004a0: 696f 6e3e 322e 372e 3130 3c2f 7665 7273  ion>2.7.10</vers\n+000004b0: 696f 6e3e 0a20 203c 2f70 6172 656e 743e  ion>.  </parent>\n+000004c0: 0a20 203c 6772 6f75 7049 643e 6f72 672e  .  <groupId>org.\n+000004d0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+000004e0: 6f75 7049 643e 0a20 203c 6172 7469 6661  oupId>.  <artifa\n+000004f0: 6374 4964 3e64 7562 626f 2d63 6f6e 6669  ctId>dubbo-confi\n+00000500: 6763 656e 7465 722d 6170 6f6c 6c6f 3c2f  gcenter-apollo</\n+00000510: 6172 7469 6661 6374 4964 3e0a 2020 3c76  artifactId>.  <v\n+00000520: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n+00000530: 6572 7369 6f6e 3e0a 2020 3c6e 616d 653e  ersion>.  <name>\n+00000540: 247b 7072 6f6a 6563 742e 6172 7469 6661  ${project.artifa\n+00000550: 6374 4964 7d3c 2f6e 616d 653e 0a20 203c  ctId}</name>.  <\n+00000560: 6465 7363 7269 7074 696f 6e3e 5468 6520  description>The \n+00000570: 4170 6f6c 6c6f 2069 6d70 6c65 6d65 6e74  Apollo implement\n+00000580: 6174 696f 6e20 6f66 2074 6865 2063 6f6e  ation of the con\n+00000590: 6669 6763 656e 7465 7220 6170 693c 2f64  figcenter api</d\n+000005a0: 6573 6372 6970 7469 6f6e 3e0a 2020 3c6c  escription>.  <l\n+000005b0: 6963 656e 7365 733e 0a20 2020 203c 6c69  icenses>.    <li\n+000005c0: 6365 6e73 653e 0a20 2020 2020 203c 6e61  cense>.      <na\n+000005d0: 6d65 3e41 7061 6368 6520 4c69 6365 6e73  me>Apache Licens\n+000005e0: 652c 2056 6572 7369 6f6e 2032 2e30 3c2f  e, Version 2.0</\n+000005f0: 6e61 6d65 3e0a 2020 2020 2020 3c75 726c  name>.      <url\n+00000600: 3e68 7474 703a 2f2f 7777 772e 6170 6163  >http://www.apac\n+00000610: 6865 2e6f 7267 2f6c 6963 656e 7365 732f  he.org/licenses/\n+00000620: 4c49 4345 4e53 452d 322e 303c 2f75 726c  LICENSE-2.0</url\n+00000630: 3e0a 2020 2020 2020 3c64 6973 7472 6962  >.      <distrib\n+00000640: 7574 696f 6e3e 7265 706f 3c2f 6469 7374  ution>repo</dist\n+00000650: 7269 6275 7469 6f6e 3e0a 2020 2020 3c2f  ribution>.    </\n+00000660: 6c69 6365 6e73 653e 0a20 203c 2f6c 6963  license>.  </lic\n+00000670: 656e 7365 733e 0a20 203c 7072 6f70 6572  enses>.  <proper\n+00000680: 7469 6573 3e0a 2020 2020 3c73 6b69 705f  ties>.    <skip_\n+00000690: 6d61 7665 6e5f 6465 706c 6f79 3e66 616c  maven_deploy>fal\n+000006a0: 7365 3c2f 736b 6970 5f6d 6176 656e 5f64  se</skip_maven_d\n+000006b0: 6570 6c6f 793e 0a20 2020 203c 6170 6f6c  eploy>.    <apol\n+000006c0: 6c6f 5f6d 6f63 6b5f 7365 7276 6572 5f76  lo_mock_server_v\n+000006d0: 6572 7369 6f6e 3e31 2e31 2e31 3c2f 6170  ersion>1.1.1</ap\n+000006e0: 6f6c 6c6f 5f6d 6f63 6b5f 7365 7276 6572  ollo_mock_server\n+000006f0: 5f76 6572 7369 6f6e 3e0a 2020 3c2f 7072  _version>.  </pr\n+00000700: 6f70 6572 7469 6573 3e0a 2020 3c64 6570  operties>.  <dep\n+00000710: 656e 6465 6e63 6965 733e 0a20 2020 203c  endencies>.    <\n+00000720: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000730: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+00000740: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n+00000750: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000760: 6966 6163 7449 643e 6475 6262 6f2d 636f  ifactId>dubbo-co\n+00000770: 6d6d 6f6e 3c2f 6172 7469 6661 6374 4964  mmon</artifactId\n+00000780: 3e0a 2020 2020 2020 3c76 6572 7369 6f6e  >.      <version\n+00000790: 3e24 7b70 726f 6a65 6374 2e70 6172 656e  >${project.paren\n+000007a0: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n+000007b0: 696f 6e3e 0a20 2020 203c 2f64 6570 656e  ion>.    </depen\n+000007c0: 6465 6e63 793e 0a20 2020 203c 6465 7065  dency>.    <depe\n+000007d0: 6e64 656e 6379 3e0a 2020 2020 2020 3c67  ndency>.      <g\n+000007e0: 726f 7570 4964 3e63 6f6d 2e63 7472 6970  roupId>com.ctrip\n+000007f0: 2e66 7261 6d65 776f 726b 2e61 706f 6c6c  .framework.apoll\n+00000800: 6f3c 2f67 726f 7570 4964 3e0a 2020 2020  o</groupId>.    \n+00000810: 2020 3c61 7274 6966 6163 7449 643e 6170    <artifactId>ap\n+00000820: 6f6c 6c6f 2d63 6c69 656e 743c 2f61 7274  ollo-client</art\n+00000830: 6966 6163 7449 643e 0a20 2020 203c 2f64  ifactId>.    </d\n+00000840: 6570 656e 6465 6e63 793e 0a20 2020 203c  ependency>.    <\n+00000850: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000860: 2020 3c67 726f 7570 4964 3e63 6f6d 2e63    <groupId>com.c\n+00000870: 7472 6970 2e66 7261 6d65 776f 726b 2e61  trip.framework.a\n+00000880: 706f 6c6c 6f3c 2f67 726f 7570 4964 3e0a  pollo</groupId>.\n+00000890: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n+000008a0: 643e 6170 6f6c 6c6f 2d6d 6f63 6b73 6572  d>apollo-mockser\n+000008b0: 7665 723c 2f61 7274 6966 6163 7449 643e  ver</artifactId>\n+000008c0: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n+000008d0: 247b 6170 6f6c 6c6f 5f6d 6f63 6b5f 7365  ${apollo_mock_se\n+000008e0: 7276 6572 5f76 6572 7369 6f6e 7d3c 2f76  rver_version}</v\n+000008f0: 6572 7369 6f6e 3e0a 2020 2020 2020 3c73  ersion>.      <s\n+00000900: 636f 7065 3e74 6573 743c 2f73 636f 7065  cope>test</scope\n+00000910: 3e0a 2020 2020 3c2f 6465 7065 6e64 656e  >.    </dependen\n+00000920: 6379 3e0a 2020 3c2f 6465 7065 6e64 656e  cy>.  </dependen\n+00000930: 6369 6573 3e0a 3c2f 7072 6f6a 6563 743e  cies>.</project>\n+00000940: 0a                                       .\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-configcenter-nacos/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-configcenter-nacos/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,130 +1,127 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 7e20 4c69 6365 6e73 6564 2074 6f20 7468  ~ Licensed to th\n-00000040: 6520 4170 6163 6865 2053 6f66 7477 6172  e Apache Softwar\n-00000050: 6520 466f 756e 6461 7469 6f6e 2028 4153  e Foundation (AS\n-00000060: 4629 2075 6e64 6572 206f 6e65 206f 7220  F) under one or \n-00000070: 6d6f 7265 0d0a 2020 7e20 636f 6e74 7269  more..  ~ contri\n-00000080: 6275 746f 7220 6c69 6365 6e73 6520 6167  butor license ag\n-00000090: 7265 656d 656e 7473 2e20 2053 6565 2074  reements.  See t\n-000000a0: 6865 204e 4f54 4943 4520 6669 6c65 2064  he NOTICE file d\n-000000b0: 6973 7472 6962 7574 6564 2077 6974 680d  istributed with.\n-000000c0: 0a20 207e 2074 6869 7320 776f 726b 2066  .  ~ this work f\n-000000d0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n-000000e0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n-000000f0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n-00000100: 6e65 7273 6869 702e 0d0a 2020 7e20 5468  nership...  ~ Th\n-00000110: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000120: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000130: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000140: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000150: 6e20 322e 300d 0a20 207e 2028 7468 6520  n 2.0..  ~ (the \n-00000160: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n-00000170: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n-00000180: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n-00000190: 636f 6d70 6c69 616e 6365 2077 6974 680d  compliance with.\n-000001a0: 0a20 207e 2074 6865 204c 6963 656e 7365  .  ~ the License\n-000001b0: 2e20 2059 6f75 206d 6179 206f 6274 6169  .  You may obtai\n-000001c0: 6e20 6120 636f 7079 206f 6620 7468 6520  n a copy of the \n-000001d0: 4c69 6365 6e73 6520 6174 0d0a 2020 7e0d  License at..  ~.\n-000001e0: 0a20 207e 2020 2020 2068 7474 703a 2f2f  .  ~     http://\n-000001f0: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n-00000200: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n-00000210: 322e 300d 0a20 207e 0d0a 2020 7e20 556e  2.0..  ~..  ~ Un\n-00000220: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n-00000230: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n-00000240: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n-00000250: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n-00000260: 650d 0a20 207e 2064 6973 7472 6962 7574  e..  ~ distribut\n-00000270: 6564 2075 6e64 6572 2074 6865 204c 6963  ed under the Lic\n-00000280: 656e 7365 2069 7320 6469 7374 7269 6275  ense is distribu\n-00000290: 7465 6420 6f6e 2061 6e20 2241 5320 4953  ted on an \"AS IS\n-000002a0: 2220 4241 5349 532c 0d0a 2020 7e20 5749  \" BASIS,..  ~ WI\n-000002b0: 5448 4f55 5420 5741 5252 414e 5449 4553  THOUT WARRANTIES\n-000002c0: 204f 5220 434f 4e44 4954 494f 4e53 204f   OR CONDITIONS O\n-000002d0: 4620 414e 5920 4b49 4e44 2c20 6569 7468  F ANY KIND, eith\n-000002e0: 6572 2065 7870 7265 7373 206f 7220 696d  er express or im\n-000002f0: 706c 6965 642e 0d0a 2020 7e20 5365 6520  plied...  ~ See \n-00000300: 7468 6520 4c69 6365 6e73 6520 666f 7220  the License for \n-00000310: 7468 6520 7370 6563 6966 6963 206c 616e  the specific lan\n-00000320: 6775 6167 6520 676f 7665 726e 696e 6720  guage governing \n-00000330: 7065 726d 6973 7369 6f6e 7320 616e 640d  permissions and.\n-00000340: 0a20 207e 206c 696d 6974 6174 696f 6e73  .  ~ limitations\n-00000350: 2075 6e64 6572 2074 6865 204c 6963 656e   under the Licen\n-00000360: 7365 2e0d 0a20 202d 2d3e 0d0a 3c70 726f  se...  -->..<pro\n-00000370: 6a65 6374 2078 7369 3a73 6368 656d 614c  ject xsi:schemaL\n-00000380: 6f63 6174 696f 6e3d 2268 7474 703a 2f2f  ocation=\"http://\n-00000390: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003a0: 2f50 4f4d 2f34 2e30 2e30 2068 7474 7073  /POM/4.0.0 https\n-000003b0: 3a2f 2f6d 6176 656e 2e61 7061 6368 652e  ://maven.apache.\n-000003c0: 6f72 672f 7873 642f 6d61 7665 6e2d 342e  org/xsd/maven-4.\n-000003d0: 302e 302e 7873 6422 2078 6d6c 6e73 3d22  0.0.xsd\" xmlns=\"\n-000003e0: 6874 7470 3a2f 2f6d 6176 656e 2e61 7061  http://maven.apa\n-000003f0: 6368 652e 6f72 672f 504f 4d2f 342e 302e  che.org/POM/4.0.\n-00000400: 3022 0d0a 2020 2020 786d 6c6e 733a 7873  0\"..    xmlns:xs\n-00000410: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n-00000420: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n-00000430: 656d 612d 696e 7374 616e 6365 223e 0d0a  ema-instance\">..\n-00000440: 2020 3c6d 6f64 656c 5665 7273 696f 6e3e    <modelVersion>\n-00000450: 342e 302e 303c 2f6d 6f64 656c 5665 7273  4.0.0</modelVers\n-00000460: 696f 6e3e 0d0a 2020 3c70 6172 656e 743e  ion>..  <parent>\n-00000470: 0d0a 2020 2020 3c67 726f 7570 4964 3e6f  ..    <groupId>o\n-00000480: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000490: 2f67 726f 7570 4964 3e0d 0a20 2020 203c  /groupId>..    <\n-000004a0: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-000004b0: 2d63 6f6e 6669 6763 656e 7465 723c 2f61  -configcenter</a\n-000004c0: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-000004d0: 3c76 6572 7369 6f6e 3e32 2e37 2e31 303c  <version>2.7.10<\n-000004e0: 2f76 6572 7369 6f6e 3e0d 0a20 203c 2f70  /version>..  </p\n-000004f0: 6172 656e 743e 0d0a 2020 3c67 726f 7570  arent>..  <group\n-00000500: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n-00000510: 6262 6f3c 2f67 726f 7570 4964 3e0d 0a20  bbo</groupId>.. \n-00000520: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000530: 626f 2d63 6f6e 6669 6763 656e 7465 722d  bo-configcenter-\n-00000540: 6e61 636f 733c 2f61 7274 6966 6163 7449  nacos</artifactI\n-00000550: 643e 0d0a 2020 3c76 6572 7369 6f6e 3e32  d>..  <version>2\n-00000560: 2e37 2e31 303c 2f76 6572 7369 6f6e 3e0d  .7.10</version>.\n-00000570: 0a20 203c 6e61 6d65 3e24 7b70 726f 6a65  .  <name>${proje\n-00000580: 6374 2e61 7274 6966 6163 7449 647d 3c2f  ct.artifactId}</\n-00000590: 6e61 6d65 3e0d 0a20 203c 6465 7363 7269  name>..  <descri\n-000005a0: 7074 696f 6e3e 5468 6520 6e61 636f 7320  ption>The nacos \n-000005b0: 696d 706c 656d 656e 7461 7469 6f6e 206f  implementation o\n-000005c0: 6620 7468 6520 636f 6e66 6967 2d63 656e  f the config-cen\n-000005d0: 7465 7220 6170 693c 2f64 6573 6372 6970  ter api</descrip\n-000005e0: 7469 6f6e 3e0d 0a20 203c 6c69 6365 6e73  tion>..  <licens\n-000005f0: 6573 3e0d 0a20 2020 203c 6c69 6365 6e73  es>..    <licens\n-00000600: 653e 0d0a 2020 2020 2020 3c6e 616d 653e  e>..      <name>\n-00000610: 4170 6163 6865 204c 6963 656e 7365 2c20  Apache License, \n-00000620: 5665 7273 696f 6e20 322e 303c 2f6e 616d  Version 2.0</nam\n-00000630: 653e 0d0a 2020 2020 2020 3c75 726c 3e68  e>..      <url>h\n-00000640: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n-00000650: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n-00000660: 4345 4e53 452d 322e 303c 2f75 726c 3e0d  CENSE-2.0</url>.\n-00000670: 0a20 2020 2020 203c 6469 7374 7269 6275  .      <distribu\n-00000680: 7469 6f6e 3e72 6570 6f3c 2f64 6973 7472  tion>repo</distr\n-00000690: 6962 7574 696f 6e3e 0d0a 2020 2020 3c2f  ibution>..    </\n-000006a0: 6c69 6365 6e73 653e 0d0a 2020 3c2f 6c69  license>..  </li\n-000006b0: 6365 6e73 6573 3e0d 0a20 203c 6465 7065  censes>..  <depe\n-000006c0: 6e64 656e 6369 6573 3e0d 0a20 2020 203c  ndencies>..    <\n-000006d0: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-000006e0: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n-000006f0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-00000700: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-00000710: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n-00000720: 636f 6d6d 6f6e 3c2f 6172 7469 6661 6374  common</artifact\n-00000730: 4964 3e0d 0a20 2020 2020 203c 7665 7273  Id>..      <vers\n-00000740: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n-00000750: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n-00000760: 6572 7369 6f6e 3e0d 0a20 2020 203c 2f64  ersion>..    </d\n-00000770: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000780: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-00000790: 2020 2020 3c67 726f 7570 4964 3e63 6f6d      <groupId>com\n-000007a0: 2e61 6c69 6261 6261 2e6e 6163 6f73 3c2f  .alibaba.nacos</\n-000007b0: 6772 6f75 7049 643e 0d0a 2020 2020 2020  groupId>..      \n-000007c0: 3c61 7274 6966 6163 7449 643e 6e61 636f  <artifactId>naco\n-000007d0: 732d 636c 6965 6e74 3c2f 6172 7469 6661  s-client</artifa\n-000007e0: 6374 4964 3e0d 0a20 2020 203c 2f64 6570  ctId>..    </dep\n-000007f0: 656e 6465 6e63 793e 0d0a 2020 3c2f 6465  endency>..  </de\n-00000800: 7065 6e64 656e 6369 6573 3e0d 0a3c 2f70  pendencies>..</p\n-00000810: 726f 6a65 6374 3e0d 0a                   roject>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 7e20  F-8\"?>.<!--.  ~ \n+00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n+00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n+00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n+00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n+00000070: 7265 0a20 207e 2063 6f6e 7472 6962 7574  re.  ~ contribut\n+00000080: 6f72 206c 6963 656e 7365 2061 6772 6565  or license agree\n+00000090: 6d65 6e74 732e 2020 5365 6520 7468 6520  ments.  See the \n+000000a0: 4e4f 5449 4345 2066 696c 6520 6469 7374  NOTICE file dist\n+000000b0: 7269 6275 7465 6420 7769 7468 0a20 207e  ributed with.  ~\n+000000c0: 2074 6869 7320 776f 726b 2066 6f72 2061   this work for a\n+000000d0: 6464 6974 696f 6e61 6c20 696e 666f 726d  dditional inform\n+000000e0: 6174 696f 6e20 7265 6761 7264 696e 6720  ation regarding \n+000000f0: 636f 7079 7269 6768 7420 6f77 6e65 7273  copyright owners\n+00000100: 6869 702e 0a20 207e 2054 6865 2041 5346  hip..  ~ The ASF\n+00000110: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000120: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000130: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000140: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000150: 0a20 207e 2028 7468 6520 224c 6963 656e  .  ~ (the \"Licen\n+00000160: 7365 2229 3b20 796f 7520 6d61 7920 6e6f  se\"); you may no\n+00000170: 7420 7573 6520 7468 6973 2066 696c 6520  t use this file \n+00000180: 6578 6365 7074 2069 6e20 636f 6d70 6c69  except in compli\n+00000190: 616e 6365 2077 6974 680a 2020 7e20 7468  ance with.  ~ th\n+000001a0: 6520 4c69 6365 6e73 652e 2020 596f 7520  e License.  You \n+000001b0: 6d61 7920 6f62 7461 696e 2061 2063 6f70  may obtain a cop\n+000001c0: 7920 6f66 2074 6865 204c 6963 656e 7365  y of the License\n+000001d0: 2061 740a 2020 7e0a 2020 7e20 2020 2020   at.  ~.  ~     \n+000001e0: 6874 7470 3a2f 2f77 7777 2e61 7061 6368  http://www.apach\n+000001f0: 652e 6f72 672f 6c69 6365 6e73 6573 2f4c  e.org/licenses/L\n+00000200: 4943 454e 5345 2d32 2e30 0a20 207e 0a20  ICENSE-2.0.  ~. \n+00000210: 207e 2055 6e6c 6573 7320 7265 7175 6972   ~ Unless requir\n+00000220: 6564 2062 7920 6170 706c 6963 6162 6c65  ed by applicable\n+00000230: 206c 6177 206f 7220 6167 7265 6564 2074   law or agreed t\n+00000240: 6f20 696e 2077 7269 7469 6e67 2c20 736f  o in writing, so\n+00000250: 6674 7761 7265 0a20 207e 2064 6973 7472  ftware.  ~ distr\n+00000260: 6962 7574 6564 2075 6e64 6572 2074 6865  ibuted under the\n+00000270: 204c 6963 656e 7365 2069 7320 6469 7374   License is dist\n+00000280: 7269 6275 7465 6420 6f6e 2061 6e20 2241  ributed on an \"A\n+00000290: 5320 4953 2220 4241 5349 532c 0a20 207e  S IS\" BASIS,.  ~\n+000002a0: 2057 4954 484f 5554 2057 4152 5241 4e54   WITHOUT WARRANT\n+000002b0: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n+000002c0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n+000002d0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n+000002e0: 2069 6d70 6c69 6564 2e0a 2020 7e20 5365   implied..  ~ Se\n+000002f0: 6520 7468 6520 4c69 6365 6e73 6520 666f  e the License fo\n+00000300: 7220 7468 6520 7370 6563 6966 6963 206c  r the specific l\n+00000310: 616e 6775 6167 6520 676f 7665 726e 696e  anguage governin\n+00000320: 6720 7065 726d 6973 7369 6f6e 7320 616e  g permissions an\n+00000330: 640a 2020 7e20 6c69 6d69 7461 7469 6f6e  d.  ~ limitation\n+00000340: 7320 756e 6465 7220 7468 6520 4c69 6365  s under the Lice\n+00000350: 6e73 652e 0a20 202d 2d3e 0a3c 7072 6f6a  nse..  -->.<proj\n+00000360: 6563 7420 7873 693a 7363 6865 6d61 4c6f  ect xsi:schemaLo\n+00000370: 6361 7469 6f6e 3d22 6874 7470 3a2f 2f6d  cation=\"http://m\n+00000380: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+00000390: 504f 4d2f 342e 302e 3020 6874 7470 733a  POM/4.0.0 https:\n+000003a0: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n+000003b0: 7267 2f78 7364 2f6d 6176 656e 2d34 2e30  rg/xsd/maven-4.0\n+000003c0: 2e30 2e78 7364 2220 786d 6c6e 733d 2268  .0.xsd\" xmlns=\"h\n+000003d0: 7474 703a 2f2f 6d61 7665 6e2e 6170 6163  ttp://maven.apac\n+000003e0: 6865 2e6f 7267 2f50 4f4d 2f34 2e30 2e30  he.org/POM/4.0.0\n+000003f0: 220a 2020 2020 786d 6c6e 733a 7873 693d  \".    xmlns:xsi=\n+00000400: 2268 7474 703a 2f2f 7777 772e 7733 2e6f  \"http://www.w3.o\n+00000410: 7267 2f32 3030 312f 584d 4c53 6368 656d  rg/2001/XMLSchem\n+00000420: 612d 696e 7374 616e 6365 223e 0a20 203c  a-instance\">.  <\n+00000430: 6d6f 6465 6c56 6572 7369 6f6e 3e34 2e30  modelVersion>4.0\n+00000440: 2e30 3c2f 6d6f 6465 6c56 6572 7369 6f6e  .0</modelVersion\n+00000450: 3e0a 2020 3c70 6172 656e 743e 0a20 2020  >.  <parent>.   \n+00000460: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000470: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000480: 7049 643e 0a20 2020 203c 6172 7469 6661  pId>.    <artifa\n+00000490: 6374 4964 3e64 7562 626f 2d63 6f6e 6669  ctId>dubbo-confi\n+000004a0: 6763 656e 7465 723c 2f61 7274 6966 6163  gcenter</artifac\n+000004b0: 7449 643e 0a20 2020 203c 7665 7273 696f  tId>.    <versio\n+000004c0: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n+000004d0: 6e3e 0a20 203c 2f70 6172 656e 743e 0a20  n>.  </parent>. \n+000004e0: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+000004f0: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000500: 7049 643e 0a20 203c 6172 7469 6661 6374  pId>.  <artifact\n+00000510: 4964 3e64 7562 626f 2d63 6f6e 6669 6763  Id>dubbo-configc\n+00000520: 656e 7465 722d 6e61 636f 733c 2f61 7274  enter-nacos</art\n+00000530: 6966 6163 7449 643e 0a20 203c 7665 7273  ifactId>.  <vers\n+00000540: 696f 6e3e 322e 372e 3130 3c2f 7665 7273  ion>2.7.10</vers\n+00000550: 696f 6e3e 0a20 203c 6e61 6d65 3e24 7b70  ion>.  <name>${p\n+00000560: 726f 6a65 6374 2e61 7274 6966 6163 7449  roject.artifactI\n+00000570: 647d 3c2f 6e61 6d65 3e0a 2020 3c64 6573  d}</name>.  <des\n+00000580: 6372 6970 7469 6f6e 3e54 6865 206e 6163  cription>The nac\n+00000590: 6f73 2069 6d70 6c65 6d65 6e74 6174 696f  os implementatio\n+000005a0: 6e20 6f66 2074 6865 2063 6f6e 6669 672d  n of the config-\n+000005b0: 6365 6e74 6572 2061 7069 3c2f 6465 7363  center api</desc\n+000005c0: 7269 7074 696f 6e3e 0a20 203c 6c69 6365  ription>.  <lice\n+000005d0: 6e73 6573 3e0a 2020 2020 3c6c 6963 656e  nses>.    <licen\n+000005e0: 7365 3e0a 2020 2020 2020 3c6e 616d 653e  se>.      <name>\n+000005f0: 4170 6163 6865 204c 6963 656e 7365 2c20  Apache License, \n+00000600: 5665 7273 696f 6e20 322e 303c 2f6e 616d  Version 2.0</nam\n+00000610: 653e 0a20 2020 2020 203c 7572 6c3e 6874  e>.      <url>ht\n+00000620: 7470 3a2f 2f77 7777 2e61 7061 6368 652e  tp://www.apache.\n+00000630: 6f72 672f 6c69 6365 6e73 6573 2f4c 4943  org/licenses/LIC\n+00000640: 454e 5345 2d32 2e30 3c2f 7572 6c3e 0a20  ENSE-2.0</url>. \n+00000650: 2020 2020 203c 6469 7374 7269 6275 7469       <distributi\n+00000660: 6f6e 3e72 6570 6f3c 2f64 6973 7472 6962  on>repo</distrib\n+00000670: 7574 696f 6e3e 0a20 2020 203c 2f6c 6963  ution>.    </lic\n+00000680: 656e 7365 3e0a 2020 3c2f 6c69 6365 6e73  ense>.  </licens\n+00000690: 6573 3e0a 2020 3c64 6570 656e 6465 6e63  es>.  <dependenc\n+000006a0: 6965 733e 0a20 2020 203c 6465 7065 6e64  ies>.    <depend\n+000006b0: 656e 6379 3e0a 2020 2020 2020 3c67 726f  ency>.      <gro\n+000006c0: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n+000006d0: 6475 6262 6f3c 2f67 726f 7570 4964 3e0a  dubbo</groupId>.\n+000006e0: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n+000006f0: 643e 6475 6262 6f2d 636f 6d6d 6f6e 3c2f  d>dubbo-common</\n+00000700: 6172 7469 6661 6374 4964 3e0a 2020 2020  artifactId>.    \n+00000710: 2020 3c76 6572 7369 6f6e 3e24 7b70 726f    <version>${pro\n+00000720: 6a65 6374 2e70 6172 656e 742e 7665 7273  ject.parent.vers\n+00000730: 696f 6e7d 3c2f 7665 7273 696f 6e3e 0a20  ion}</version>. \n+00000740: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+00000750: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+00000760: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+00000770: 3e63 6f6d 2e61 6c69 6261 6261 2e6e 6163  >com.alibaba.nac\n+00000780: 6f73 3c2f 6772 6f75 7049 643e 0a20 2020  os</groupId>.   \n+00000790: 2020 203c 6172 7469 6661 6374 4964 3e6e     <artifactId>n\n+000007a0: 6163 6f73 2d63 6c69 656e 743c 2f61 7274  acos-client</art\n+000007b0: 6966 6163 7449 643e 0a20 2020 203c 2f64  ifactId>.    </d\n+000007c0: 6570 656e 6465 6e63 793e 0a20 203c 2f64  ependency>.  </d\n+000007d0: 6570 656e 6465 6e63 6965 733e 0a3c 2f70  ependencies>.</p\n+000007e0: 726f 6a65 6374 3e0a                      roject>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-configcenter-consul/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-configcenter-consul/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,131 +1,128 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 7e20 4c69 6365 6e73 6564 2074 6f20 7468  ~ Licensed to th\n-00000040: 6520 4170 6163 6865 2053 6f66 7477 6172  e Apache Softwar\n-00000050: 6520 466f 756e 6461 7469 6f6e 2028 4153  e Foundation (AS\n-00000060: 4629 2075 6e64 6572 206f 6e65 206f 7220  F) under one or \n-00000070: 6d6f 7265 0d0a 2020 7e20 636f 6e74 7269  more..  ~ contri\n-00000080: 6275 746f 7220 6c69 6365 6e73 6520 6167  butor license ag\n-00000090: 7265 656d 656e 7473 2e20 2053 6565 2074  reements.  See t\n-000000a0: 6865 204e 4f54 4943 4520 6669 6c65 2064  he NOTICE file d\n-000000b0: 6973 7472 6962 7574 6564 2077 6974 680d  istributed with.\n-000000c0: 0a20 207e 2074 6869 7320 776f 726b 2066  .  ~ this work f\n-000000d0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n-000000e0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n-000000f0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n-00000100: 6e65 7273 6869 702e 0d0a 2020 7e20 5468  nership...  ~ Th\n-00000110: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000120: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000130: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000140: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000150: 6e20 322e 300d 0a20 207e 2028 7468 6520  n 2.0..  ~ (the \n-00000160: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n-00000170: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n-00000180: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n-00000190: 636f 6d70 6c69 616e 6365 2077 6974 680d  compliance with.\n-000001a0: 0a20 207e 2074 6865 204c 6963 656e 7365  .  ~ the License\n-000001b0: 2e20 2059 6f75 206d 6179 206f 6274 6169  .  You may obtai\n-000001c0: 6e20 6120 636f 7079 206f 6620 7468 6520  n a copy of the \n-000001d0: 4c69 6365 6e73 6520 6174 0d0a 2020 7e0d  License at..  ~.\n-000001e0: 0a20 207e 2020 2020 2068 7474 703a 2f2f  .  ~     http://\n-000001f0: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n-00000200: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n-00000210: 322e 300d 0a20 207e 0d0a 2020 7e20 556e  2.0..  ~..  ~ Un\n-00000220: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n-00000230: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n-00000240: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n-00000250: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n-00000260: 650d 0a20 207e 2064 6973 7472 6962 7574  e..  ~ distribut\n-00000270: 6564 2075 6e64 6572 2074 6865 204c 6963  ed under the Lic\n-00000280: 656e 7365 2069 7320 6469 7374 7269 6275  ense is distribu\n-00000290: 7465 6420 6f6e 2061 6e20 2241 5320 4953  ted on an \"AS IS\n-000002a0: 2220 4241 5349 532c 0d0a 2020 7e20 5749  \" BASIS,..  ~ WI\n-000002b0: 5448 4f55 5420 5741 5252 414e 5449 4553  THOUT WARRANTIES\n-000002c0: 204f 5220 434f 4e44 4954 494f 4e53 204f   OR CONDITIONS O\n-000002d0: 4620 414e 5920 4b49 4e44 2c20 6569 7468  F ANY KIND, eith\n-000002e0: 6572 2065 7870 7265 7373 206f 7220 696d  er express or im\n-000002f0: 706c 6965 642e 0d0a 2020 7e20 5365 6520  plied...  ~ See \n-00000300: 7468 6520 4c69 6365 6e73 6520 666f 7220  the License for \n-00000310: 7468 6520 7370 6563 6966 6963 206c 616e  the specific lan\n-00000320: 6775 6167 6520 676f 7665 726e 696e 6720  guage governing \n-00000330: 7065 726d 6973 7369 6f6e 7320 616e 640d  permissions and.\n-00000340: 0a20 207e 206c 696d 6974 6174 696f 6e73  .  ~ limitations\n-00000350: 2075 6e64 6572 2074 6865 204c 6963 656e   under the Licen\n-00000360: 7365 2e0d 0a20 202d 2d3e 0d0a 3c70 726f  se...  -->..<pro\n-00000370: 6a65 6374 2078 7369 3a73 6368 656d 614c  ject xsi:schemaL\n-00000380: 6f63 6174 696f 6e3d 2268 7474 703a 2f2f  ocation=\"http://\n-00000390: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003a0: 2f50 4f4d 2f34 2e30 2e30 2068 7474 7073  /POM/4.0.0 https\n-000003b0: 3a2f 2f6d 6176 656e 2e61 7061 6368 652e  ://maven.apache.\n-000003c0: 6f72 672f 7873 642f 6d61 7665 6e2d 342e  org/xsd/maven-4.\n-000003d0: 302e 302e 7873 6422 2078 6d6c 6e73 3d22  0.0.xsd\" xmlns=\"\n-000003e0: 6874 7470 3a2f 2f6d 6176 656e 2e61 7061  http://maven.apa\n-000003f0: 6368 652e 6f72 672f 504f 4d2f 342e 302e  che.org/POM/4.0.\n-00000400: 3022 0d0a 2020 2020 786d 6c6e 733a 7873  0\"..    xmlns:xs\n-00000410: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n-00000420: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n-00000430: 656d 612d 696e 7374 616e 6365 223e 0d0a  ema-instance\">..\n-00000440: 2020 3c6d 6f64 656c 5665 7273 696f 6e3e    <modelVersion>\n-00000450: 342e 302e 303c 2f6d 6f64 656c 5665 7273  4.0.0</modelVers\n-00000460: 696f 6e3e 0d0a 2020 3c70 6172 656e 743e  ion>..  <parent>\n-00000470: 0d0a 2020 2020 3c67 726f 7570 4964 3e6f  ..    <groupId>o\n-00000480: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000490: 2f67 726f 7570 4964 3e0d 0a20 2020 203c  /groupId>..    <\n-000004a0: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-000004b0: 2d63 6f6e 6669 6763 656e 7465 723c 2f61  -configcenter</a\n-000004c0: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-000004d0: 3c76 6572 7369 6f6e 3e32 2e37 2e31 303c  <version>2.7.10<\n-000004e0: 2f76 6572 7369 6f6e 3e0d 0a20 203c 2f70  /version>..  </p\n-000004f0: 6172 656e 743e 0d0a 2020 3c67 726f 7570  arent>..  <group\n-00000500: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n-00000510: 6262 6f3c 2f67 726f 7570 4964 3e0d 0a20  bbo</groupId>.. \n-00000520: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000530: 626f 2d63 6f6e 6669 6763 656e 7465 722d  bo-configcenter-\n-00000540: 636f 6e73 756c 3c2f 6172 7469 6661 6374  consul</artifact\n-00000550: 4964 3e0d 0a20 203c 7665 7273 696f 6e3e  Id>..  <version>\n-00000560: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n-00000570: 0d0a 2020 3c6c 6963 656e 7365 733e 0d0a  ..  <licenses>..\n-00000580: 2020 2020 3c6c 6963 656e 7365 3e0d 0a20      <license>.. \n-00000590: 2020 2020 203c 6e61 6d65 3e41 7061 6368       <name>Apach\n-000005a0: 6520 4c69 6365 6e73 652c 2056 6572 7369  e License, Versi\n-000005b0: 6f6e 2032 2e30 3c2f 6e61 6d65 3e0d 0a20  on 2.0</name>.. \n-000005c0: 2020 2020 203c 7572 6c3e 6874 7470 3a2f       <url>http:/\n-000005d0: 2f77 7777 2e61 7061 6368 652e 6f72 672f  /www.apache.org/\n-000005e0: 6c69 6365 6e73 6573 2f4c 4943 454e 5345  licenses/LICENSE\n-000005f0: 2d32 2e30 3c2f 7572 6c3e 0d0a 2020 2020  -2.0</url>..    \n-00000600: 2020 3c64 6973 7472 6962 7574 696f 6e3e    <distribution>\n-00000610: 7265 706f 3c2f 6469 7374 7269 6275 7469  repo</distributi\n-00000620: 6f6e 3e0d 0a20 2020 203c 2f6c 6963 656e  on>..    </licen\n-00000630: 7365 3e0d 0a20 203c 2f6c 6963 656e 7365  se>..  </license\n-00000640: 733e 0d0a 2020 3c64 6570 656e 6465 6e63  s>..  <dependenc\n-00000650: 6965 733e 0d0a 2020 2020 3c64 6570 656e  ies>..    <depen\n-00000660: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-00000670: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n-00000680: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n-00000690: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-000006a0: 6374 4964 3e64 7562 626f 2d63 6f6d 6d6f  ctId>dubbo-commo\n-000006b0: 6e3c 2f61 7274 6966 6163 7449 643e 0d0a  n</artifactId>..\n-000006c0: 2020 2020 2020 3c76 6572 7369 6f6e 3e24        <version>$\n-000006d0: 7b70 726f 6a65 6374 2e70 6172 656e 742e  {project.parent.\n-000006e0: 7665 7273 696f 6e7d 3c2f 7665 7273 696f  version}</versio\n-000006f0: 6e3e 0d0a 2020 2020 3c2f 6465 7065 6e64  n>..    </depend\n-00000700: 656e 6379 3e0d 0a20 2020 203c 6465 7065  ency>..    <depe\n-00000710: 6e64 656e 6379 3e0d 0a20 2020 2020 203c  ndency>..      <\n-00000720: 6772 6f75 7049 643e 636f 6d2e 6f72 6269  groupId>com.orbi\n-00000730: 747a 2e63 6f6e 7375 6c3c 2f67 726f 7570  tz.consul</group\n-00000740: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-00000750: 6661 6374 4964 3e63 6f6e 7375 6c2d 636c  factId>consul-cl\n-00000760: 6965 6e74 3c2f 6172 7469 6661 6374 4964  ient</artifactId\n-00000770: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-00000780: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-00000790: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-000007a0: 726f 7570 4964 3e63 6f6d 2e70 737a 796d  roupId>com.pszym\n-000007b0: 637a 796b 2e63 6f6e 7375 6c3c 2f67 726f  czyk.consul</gro\n-000007c0: 7570 4964 3e0d 0a20 2020 2020 203c 6172  upId>..      <ar\n-000007d0: 7469 6661 6374 4964 3e65 6d62 6564 6465  tifactId>embedde\n-000007e0: 642d 636f 6e73 756c 3c2f 6172 7469 6661  d-consul</artifa\n-000007f0: 6374 4964 3e0d 0a20 2020 203c 2f64 6570  ctId>..    </dep\n-00000800: 656e 6465 6e63 793e 0d0a 2020 3c2f 6465  endency>..  </de\n-00000810: 7065 6e64 656e 6369 6573 3e0d 0a3c 2f70  pendencies>..</p\n-00000820: 726f 6a65 6374 3e0d 0a                   roject>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 7e20  F-8\"?>.<!--.  ~ \n+00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n+00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n+00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n+00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n+00000070: 7265 0a20 207e 2063 6f6e 7472 6962 7574  re.  ~ contribut\n+00000080: 6f72 206c 6963 656e 7365 2061 6772 6565  or license agree\n+00000090: 6d65 6e74 732e 2020 5365 6520 7468 6520  ments.  See the \n+000000a0: 4e4f 5449 4345 2066 696c 6520 6469 7374  NOTICE file dist\n+000000b0: 7269 6275 7465 6420 7769 7468 0a20 207e  ributed with.  ~\n+000000c0: 2074 6869 7320 776f 726b 2066 6f72 2061   this work for a\n+000000d0: 6464 6974 696f 6e61 6c20 696e 666f 726d  dditional inform\n+000000e0: 6174 696f 6e20 7265 6761 7264 696e 6720  ation regarding \n+000000f0: 636f 7079 7269 6768 7420 6f77 6e65 7273  copyright owners\n+00000100: 6869 702e 0a20 207e 2054 6865 2041 5346  hip..  ~ The ASF\n+00000110: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000120: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000130: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000140: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000150: 0a20 207e 2028 7468 6520 224c 6963 656e  .  ~ (the \"Licen\n+00000160: 7365 2229 3b20 796f 7520 6d61 7920 6e6f  se\"); you may no\n+00000170: 7420 7573 6520 7468 6973 2066 696c 6520  t use this file \n+00000180: 6578 6365 7074 2069 6e20 636f 6d70 6c69  except in compli\n+00000190: 616e 6365 2077 6974 680a 2020 7e20 7468  ance with.  ~ th\n+000001a0: 6520 4c69 6365 6e73 652e 2020 596f 7520  e License.  You \n+000001b0: 6d61 7920 6f62 7461 696e 2061 2063 6f70  may obtain a cop\n+000001c0: 7920 6f66 2074 6865 204c 6963 656e 7365  y of the License\n+000001d0: 2061 740a 2020 7e0a 2020 7e20 2020 2020   at.  ~.  ~     \n+000001e0: 6874 7470 3a2f 2f77 7777 2e61 7061 6368  http://www.apach\n+000001f0: 652e 6f72 672f 6c69 6365 6e73 6573 2f4c  e.org/licenses/L\n+00000200: 4943 454e 5345 2d32 2e30 0a20 207e 0a20  ICENSE-2.0.  ~. \n+00000210: 207e 2055 6e6c 6573 7320 7265 7175 6972   ~ Unless requir\n+00000220: 6564 2062 7920 6170 706c 6963 6162 6c65  ed by applicable\n+00000230: 206c 6177 206f 7220 6167 7265 6564 2074   law or agreed t\n+00000240: 6f20 696e 2077 7269 7469 6e67 2c20 736f  o in writing, so\n+00000250: 6674 7761 7265 0a20 207e 2064 6973 7472  ftware.  ~ distr\n+00000260: 6962 7574 6564 2075 6e64 6572 2074 6865  ibuted under the\n+00000270: 204c 6963 656e 7365 2069 7320 6469 7374   License is dist\n+00000280: 7269 6275 7465 6420 6f6e 2061 6e20 2241  ributed on an \"A\n+00000290: 5320 4953 2220 4241 5349 532c 0a20 207e  S IS\" BASIS,.  ~\n+000002a0: 2057 4954 484f 5554 2057 4152 5241 4e54   WITHOUT WARRANT\n+000002b0: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n+000002c0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n+000002d0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n+000002e0: 2069 6d70 6c69 6564 2e0a 2020 7e20 5365   implied..  ~ Se\n+000002f0: 6520 7468 6520 4c69 6365 6e73 6520 666f  e the License fo\n+00000300: 7220 7468 6520 7370 6563 6966 6963 206c  r the specific l\n+00000310: 616e 6775 6167 6520 676f 7665 726e 696e  anguage governin\n+00000320: 6720 7065 726d 6973 7369 6f6e 7320 616e  g permissions an\n+00000330: 640a 2020 7e20 6c69 6d69 7461 7469 6f6e  d.  ~ limitation\n+00000340: 7320 756e 6465 7220 7468 6520 4c69 6365  s under the Lice\n+00000350: 6e73 652e 0a20 202d 2d3e 0a3c 7072 6f6a  nse..  -->.<proj\n+00000360: 6563 7420 7873 693a 7363 6865 6d61 4c6f  ect xsi:schemaLo\n+00000370: 6361 7469 6f6e 3d22 6874 7470 3a2f 2f6d  cation=\"http://m\n+00000380: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+00000390: 504f 4d2f 342e 302e 3020 6874 7470 733a  POM/4.0.0 https:\n+000003a0: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n+000003b0: 7267 2f78 7364 2f6d 6176 656e 2d34 2e30  rg/xsd/maven-4.0\n+000003c0: 2e30 2e78 7364 2220 786d 6c6e 733d 2268  .0.xsd\" xmlns=\"h\n+000003d0: 7474 703a 2f2f 6d61 7665 6e2e 6170 6163  ttp://maven.apac\n+000003e0: 6865 2e6f 7267 2f50 4f4d 2f34 2e30 2e30  he.org/POM/4.0.0\n+000003f0: 220a 2020 2020 786d 6c6e 733a 7873 693d  \".    xmlns:xsi=\n+00000400: 2268 7474 703a 2f2f 7777 772e 7733 2e6f  \"http://www.w3.o\n+00000410: 7267 2f32 3030 312f 584d 4c53 6368 656d  rg/2001/XMLSchem\n+00000420: 612d 696e 7374 616e 6365 223e 0a20 203c  a-instance\">.  <\n+00000430: 6d6f 6465 6c56 6572 7369 6f6e 3e34 2e30  modelVersion>4.0\n+00000440: 2e30 3c2f 6d6f 6465 6c56 6572 7369 6f6e  .0</modelVersion\n+00000450: 3e0a 2020 3c70 6172 656e 743e 0a20 2020  >.  <parent>.   \n+00000460: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000470: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000480: 7049 643e 0a20 2020 203c 6172 7469 6661  pId>.    <artifa\n+00000490: 6374 4964 3e64 7562 626f 2d63 6f6e 6669  ctId>dubbo-confi\n+000004a0: 6763 656e 7465 723c 2f61 7274 6966 6163  gcenter</artifac\n+000004b0: 7449 643e 0a20 2020 203c 7665 7273 696f  tId>.    <versio\n+000004c0: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n+000004d0: 6e3e 0a20 203c 2f70 6172 656e 743e 0a20  n>.  </parent>. \n+000004e0: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+000004f0: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000500: 7049 643e 0a20 203c 6172 7469 6661 6374  pId>.  <artifact\n+00000510: 4964 3e64 7562 626f 2d63 6f6e 6669 6763  Id>dubbo-configc\n+00000520: 656e 7465 722d 636f 6e73 756c 3c2f 6172  enter-consul</ar\n+00000530: 7469 6661 6374 4964 3e0a 2020 3c76 6572  tifactId>.  <ver\n+00000540: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n+00000550: 7369 6f6e 3e0a 2020 3c6c 6963 656e 7365  sion>.  <license\n+00000560: 733e 0a20 2020 203c 6c69 6365 6e73 653e  s>.    <license>\n+00000570: 0a20 2020 2020 203c 6e61 6d65 3e41 7061  .      <name>Apa\n+00000580: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000590: 7369 6f6e 2032 2e30 3c2f 6e61 6d65 3e0a  sion 2.0</name>.\n+000005a0: 2020 2020 2020 3c75 726c 3e68 7474 703a        <url>http:\n+000005b0: 2f2f 7777 772e 6170 6163 6865 2e6f 7267  //www.apache.org\n+000005c0: 2f6c 6963 656e 7365 732f 4c49 4345 4e53  /licenses/LICENS\n+000005d0: 452d 322e 303c 2f75 726c 3e0a 2020 2020  E-2.0</url>.    \n+000005e0: 2020 3c64 6973 7472 6962 7574 696f 6e3e    <distribution>\n+000005f0: 7265 706f 3c2f 6469 7374 7269 6275 7469  repo</distributi\n+00000600: 6f6e 3e0a 2020 2020 3c2f 6c69 6365 6e73  on>.    </licens\n+00000610: 653e 0a20 203c 2f6c 6963 656e 7365 733e  e>.  </licenses>\n+00000620: 0a20 203c 6465 7065 6e64 656e 6369 6573  .  <dependencies\n+00000630: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000640: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+00000650: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n+00000660: 626f 3c2f 6772 6f75 7049 643e 0a20 2020  bo</groupId>.   \n+00000670: 2020 203c 6172 7469 6661 6374 4964 3e64     <artifactId>d\n+00000680: 7562 626f 2d63 6f6d 6d6f 6e3c 2f61 7274  ubbo-common</art\n+00000690: 6966 6163 7449 643e 0a20 2020 2020 203c  ifactId>.      <\n+000006a0: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n+000006b0: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n+000006c0: 7d3c 2f76 6572 7369 6f6e 3e0a 2020 2020  }</version>.    \n+000006d0: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+000006e0: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+000006f0: 2020 2020 203c 6772 6f75 7049 643e 636f       <groupId>co\n+00000700: 6d2e 6f72 6269 747a 2e63 6f6e 7375 6c3c  m.orbitz.consul<\n+00000710: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+00000720: 3c61 7274 6966 6163 7449 643e 636f 6e73  <artifactId>cons\n+00000730: 756c 2d63 6c69 656e 743c 2f61 7274 6966  ul-client</artif\n+00000740: 6163 7449 643e 0a20 2020 203c 2f64 6570  actId>.    </dep\n+00000750: 656e 6465 6e63 793e 0a20 2020 203c 6465  endency>.    <de\n+00000760: 7065 6e64 656e 6379 3e0a 2020 2020 2020  pendency>.      \n+00000770: 3c67 726f 7570 4964 3e63 6f6d 2e70 737a  <groupId>com.psz\n+00000780: 796d 637a 796b 2e63 6f6e 7375 6c3c 2f67  ymczyk.consul</g\n+00000790: 726f 7570 4964 3e0a 2020 2020 2020 3c61  roupId>.      <a\n+000007a0: 7274 6966 6163 7449 643e 656d 6265 6464  rtifactId>embedd\n+000007b0: 6564 2d63 6f6e 7375 6c3c 2f61 7274 6966  ed-consul</artif\n+000007c0: 6163 7449 643e 0a20 2020 203c 2f64 6570  actId>.    </dep\n+000007d0: 656e 6465 6e63 793e 0a20 203c 2f64 6570  endency>.  </dep\n+000007e0: 656e 6465 6e63 6965 733e 0a3c 2f70 726f  endencies>.</pro\n+000007f0: 6a65 6374 3e0a                           ject>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,174 +1,169 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 7e20 4c69 6365 6e73 6564 2074 6f20 7468  ~ Licensed to th\n-00000040: 6520 4170 6163 6865 2053 6f66 7477 6172  e Apache Softwar\n-00000050: 6520 466f 756e 6461 7469 6f6e 2028 4153  e Foundation (AS\n-00000060: 4629 2075 6e64 6572 206f 6e65 206f 7220  F) under one or \n-00000070: 6d6f 7265 0d0a 2020 7e20 636f 6e74 7269  more..  ~ contri\n-00000080: 6275 746f 7220 6c69 6365 6e73 6520 6167  butor license ag\n-00000090: 7265 656d 656e 7473 2e20 2053 6565 2074  reements.  See t\n-000000a0: 6865 204e 4f54 4943 4520 6669 6c65 2064  he NOTICE file d\n-000000b0: 6973 7472 6962 7574 6564 2077 6974 680d  istributed with.\n-000000c0: 0a20 207e 2074 6869 7320 776f 726b 2066  .  ~ this work f\n-000000d0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n-000000e0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n-000000f0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n-00000100: 6e65 7273 6869 702e 0d0a 2020 7e20 5468  nership...  ~ Th\n-00000110: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000120: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000130: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000140: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000150: 6e20 322e 300d 0a20 207e 2028 7468 6520  n 2.0..  ~ (the \n-00000160: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n-00000170: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n-00000180: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n-00000190: 636f 6d70 6c69 616e 6365 2077 6974 680d  compliance with.\n-000001a0: 0a20 207e 2074 6865 204c 6963 656e 7365  .  ~ the License\n-000001b0: 2e20 2059 6f75 206d 6179 206f 6274 6169  .  You may obtai\n-000001c0: 6e20 6120 636f 7079 206f 6620 7468 6520  n a copy of the \n-000001d0: 4c69 6365 6e73 6520 6174 0d0a 2020 7e0d  License at..  ~.\n-000001e0: 0a20 207e 2020 2020 2068 7474 703a 2f2f  .  ~     http://\n-000001f0: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n-00000200: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n-00000210: 322e 300d 0a20 207e 0d0a 2020 7e20 556e  2.0..  ~..  ~ Un\n-00000220: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n-00000230: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n-00000240: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n-00000250: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n-00000260: 650d 0a20 207e 2064 6973 7472 6962 7574  e..  ~ distribut\n-00000270: 6564 2075 6e64 6572 2074 6865 204c 6963  ed under the Lic\n-00000280: 656e 7365 2069 7320 6469 7374 7269 6275  ense is distribu\n-00000290: 7465 6420 6f6e 2061 6e20 2241 5320 4953  ted on an \"AS IS\n-000002a0: 2220 4241 5349 532c 0d0a 2020 7e20 5749  \" BASIS,..  ~ WI\n-000002b0: 5448 4f55 5420 5741 5252 414e 5449 4553  THOUT WARRANTIES\n-000002c0: 204f 5220 434f 4e44 4954 494f 4e53 204f   OR CONDITIONS O\n-000002d0: 4620 414e 5920 4b49 4e44 2c20 6569 7468  F ANY KIND, eith\n-000002e0: 6572 2065 7870 7265 7373 206f 7220 696d  er express or im\n-000002f0: 706c 6965 642e 0d0a 2020 7e20 5365 6520  plied...  ~ See \n-00000300: 7468 6520 4c69 6365 6e73 6520 666f 7220  the License for \n-00000310: 7468 6520 7370 6563 6966 6963 206c 616e  the specific lan\n-00000320: 6775 6167 6520 676f 7665 726e 696e 6720  guage governing \n-00000330: 7065 726d 6973 7369 6f6e 7320 616e 640d  permissions and.\n-00000340: 0a20 207e 206c 696d 6974 6174 696f 6e73  .  ~ limitations\n-00000350: 2075 6e64 6572 2074 6865 204c 6963 656e   under the Licen\n-00000360: 7365 2e0d 0a20 202d 2d3e 0d0a 3c70 726f  se...  -->..<pro\n-00000370: 6a65 6374 2078 7369 3a73 6368 656d 614c  ject xsi:schemaL\n-00000380: 6f63 6174 696f 6e3d 2268 7474 703a 2f2f  ocation=\"http://\n-00000390: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003a0: 2f50 4f4d 2f34 2e30 2e30 2068 7474 7073  /POM/4.0.0 https\n-000003b0: 3a2f 2f6d 6176 656e 2e61 7061 6368 652e  ://maven.apache.\n-000003c0: 6f72 672f 7873 642f 6d61 7665 6e2d 342e  org/xsd/maven-4.\n-000003d0: 302e 302e 7873 6422 2078 6d6c 6e73 3d22  0.0.xsd\" xmlns=\"\n-000003e0: 6874 7470 3a2f 2f6d 6176 656e 2e61 7061  http://maven.apa\n-000003f0: 6368 652e 6f72 672f 504f 4d2f 342e 302e  che.org/POM/4.0.\n-00000400: 3022 0d0a 2020 2020 786d 6c6e 733a 7873  0\"..    xmlns:xs\n-00000410: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n-00000420: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n-00000430: 656d 612d 696e 7374 616e 6365 223e 0d0a  ema-instance\">..\n-00000440: 2020 3c6d 6f64 656c 5665 7273 696f 6e3e    <modelVersion>\n-00000450: 342e 302e 303c 2f6d 6f64 656c 5665 7273  4.0.0</modelVers\n-00000460: 696f 6e3e 0d0a 2020 3c70 6172 656e 743e  ion>..  <parent>\n-00000470: 0d0a 2020 2020 3c67 726f 7570 4964 3e6f  ..    <groupId>o\n-00000480: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000490: 2f67 726f 7570 4964 3e0d 0a20 2020 203c  /groupId>..    <\n-000004a0: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-000004b0: 2d63 6f6e 6669 6763 656e 7465 723c 2f61  -configcenter</a\n-000004c0: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-000004d0: 3c76 6572 7369 6f6e 3e32 2e37 2e31 303c  <version>2.7.10<\n-000004e0: 2f76 6572 7369 6f6e 3e0d 0a20 203c 2f70  /version>..  </p\n-000004f0: 6172 656e 743e 0d0a 2020 3c67 726f 7570  arent>..  <group\n-00000500: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n-00000510: 6262 6f3c 2f67 726f 7570 4964 3e0d 0a20  bbo</groupId>.. \n-00000520: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000530: 626f 2d63 6f6e 6669 6763 656e 7465 722d  bo-configcenter-\n-00000540: 6574 6364 3c2f 6172 7469 6661 6374 4964  etcd</artifactId\n-00000550: 3e0d 0a20 203c 7665 7273 696f 6e3e 322e  >..  <version>2.\n-00000560: 372e 3130 3c2f 7665 7273 696f 6e3e 0d0a  7.10</version>..\n-00000570: 2020 3c6e 616d 653e 247b 7072 6f6a 6563    <name>${projec\n-00000580: 742e 6172 7469 6661 6374 4964 7d3c 2f6e  t.artifactId}</n\n-00000590: 616d 653e 0d0a 2020 3c64 6573 6372 6970  ame>..  <descrip\n-000005a0: 7469 6f6e 3e54 6865 2065 7463 6420 696d  tion>The etcd im\n-000005b0: 706c 656d 656e 7461 7469 6f6e 206f 6620  plementation of \n-000005c0: 7468 6520 636f 6e66 6967 2d63 656e 7465  the config-cente\n-000005d0: 7220 6170 693c 2f64 6573 6372 6970 7469  r api</descripti\n-000005e0: 6f6e 3e0d 0a20 203c 6c69 6365 6e73 6573  on>..  <licenses\n-000005f0: 3e0d 0a20 2020 203c 6c69 6365 6e73 653e  >..    <license>\n-00000600: 0d0a 2020 2020 2020 3c6e 616d 653e 4170  ..      <name>Ap\n-00000610: 6163 6865 204c 6963 656e 7365 2c20 5665  ache License, Ve\n-00000620: 7273 696f 6e20 322e 303c 2f6e 616d 653e  rsion 2.0</name>\n-00000630: 0d0a 2020 2020 2020 3c75 726c 3e68 7474  ..      <url>htt\n-00000640: 703a 2f2f 7777 772e 6170 6163 6865 2e6f  p://www.apache.o\n-00000650: 7267 2f6c 6963 656e 7365 732f 4c49 4345  rg/licenses/LICE\n-00000660: 4e53 452d 322e 303c 2f75 726c 3e0d 0a20  NSE-2.0</url>.. \n-00000670: 2020 2020 203c 6469 7374 7269 6275 7469       <distributi\n-00000680: 6f6e 3e72 6570 6f3c 2f64 6973 7472 6962  on>repo</distrib\n-00000690: 7574 696f 6e3e 0d0a 2020 2020 3c2f 6c69  ution>..    </li\n-000006a0: 6365 6e73 653e 0d0a 2020 3c2f 6c69 6365  cense>..  </lice\n-000006b0: 6e73 6573 3e0d 0a20 203c 7072 6f70 6572  nses>..  <proper\n-000006c0: 7469 6573 3e0d 0a20 2020 203c 736b 6970  ties>..    <skip\n-000006d0: 496e 7465 6772 6174 696f 6e54 6573 7473  IntegrationTests\n-000006e0: 3e74 7275 653c 2f73 6b69 7049 6e74 6567  >true</skipInteg\n-000006f0: 7261 7469 6f6e 5465 7374 733e 0d0a 2020  rationTests>..  \n-00000700: 3c2f 7072 6f70 6572 7469 6573 3e0d 0a20  </properties>.. \n-00000710: 203c 6465 7065 6e64 656e 6369 6573 3e0d   <dependencies>.\n-00000720: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-00000730: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-00000740: 643e 696f 2e65 7463 643c 2f67 726f 7570  d>io.etcd</group\n-00000750: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-00000760: 6661 6374 4964 3e6a 6574 6364 2d6c 6175  factId>jetcd-lau\n-00000770: 6e63 6865 723c 2f61 7274 6966 6163 7449  ncher</artifactI\n-00000780: 643e 0d0a 2020 2020 2020 3c73 636f 7065  d>..      <scope\n-00000790: 3e74 6573 743c 2f73 636f 7065 3e0d 0a20  >test</scope>.. \n-000007a0: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n-000007b0: 0d0a 2020 2020 3c64 6570 656e 6465 6e63  ..    <dependenc\n-000007c0: 793e 0d0a 2020 2020 2020 3c67 726f 7570  y>..      <group\n-000007d0: 4964 3e6f 7267 2e74 6573 7463 6f6e 7461  Id>org.testconta\n-000007e0: 696e 6572 733c 2f67 726f 7570 4964 3e0d  iners</groupId>.\n-000007f0: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-00000800: 4964 3e74 6573 7463 6f6e 7461 696e 6572  Id>testcontainer\n-00000810: 733c 2f61 7274 6966 6163 7449 643e 0d0a  s</artifactId>..\n-00000820: 2020 2020 2020 3c73 636f 7065 3e74 6573        <scope>tes\n-00000830: 743c 2f73 636f 7065 3e0d 0a20 2020 203c  t</scope>..    <\n-00000840: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-00000850: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-00000860: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n-00000870: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000880: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-00000890: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-000008a0: 626f 2d63 6f6d 6d6f 6e3c 2f61 7274 6966  bo-common</artif\n-000008b0: 6163 7449 643e 0d0a 2020 2020 2020 3c76  actId>..      <v\n-000008c0: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n-000008d0: 2e70 6172 656e 742e 7665 7273 696f 6e7d  .parent.version}\n-000008e0: 3c2f 7665 7273 696f 6e3e 0d0a 2020 2020  </version>..    \n-000008f0: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-00000900: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-00000910: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000920: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n-00000930: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-00000940: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n-00000950: 6262 6f2d 7265 6d6f 7469 6e67 2d65 7463  bbo-remoting-etc\n-00000960: 6433 3c2f 6172 7469 6661 6374 4964 3e0d  d3</artifactId>.\n-00000970: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n-00000980: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n-00000990: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n-000009a0: 6f6e 3e0d 0a20 2020 203c 2f64 6570 656e  on>..    </depen\n-000009b0: 6465 6e63 793e 0d0a 2020 3c2f 6465 7065  dency>..  </depe\n-000009c0: 6e64 656e 6369 6573 3e0d 0a20 203c 6275  ndencies>..  <bu\n-000009d0: 696c 643e 0d0a 2020 2020 3c70 6c75 6769  ild>..    <plugi\n-000009e0: 6e73 3e0d 0a20 2020 2020 203c 706c 7567  ns>..      <plug\n-000009f0: 696e 3e0d 0a20 2020 2020 2020 203c 6172  in>..        <ar\n-00000a00: 7469 6661 6374 4964 3e6d 6176 656e 2d73  tifactId>maven-s\n-00000a10: 7572 6566 6972 652d 706c 7567 696e 3c2f  urefire-plugin</\n-00000a20: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-00000a30: 2020 2020 203c 636f 6e66 6967 7572 6174       <configurat\n-00000a40: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n-00000a50: 3c73 6b69 7054 6573 7473 3e24 7b73 6b69  <skipTests>${ski\n-00000a60: 7049 6e74 6567 7261 7469 6f6e 5465 7374  pIntegrationTest\n-00000a70: 737d 3c2f 736b 6970 5465 7374 733e 0d0a  s}</skipTests>..\n-00000a80: 2020 2020 2020 2020 3c2f 636f 6e66 6967          </config\n-00000a90: 7572 6174 696f 6e3e 0d0a 2020 2020 2020  uration>..      \n-00000aa0: 3c2f 706c 7567 696e 3e0d 0a20 2020 203c  </plugin>..    <\n-00000ab0: 2f70 6c75 6769 6e73 3e0d 0a20 203c 2f62  /plugins>..  </b\n-00000ac0: 7569 6c64 3e0d 0a3c 2f70 726f 6a65 6374  uild>..</project\n-00000ad0: 3e0d 0a                                  >..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 7e20  F-8\"?>.<!--.  ~ \n+00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n+00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n+00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n+00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n+00000070: 7265 0a20 207e 2063 6f6e 7472 6962 7574  re.  ~ contribut\n+00000080: 6f72 206c 6963 656e 7365 2061 6772 6565  or license agree\n+00000090: 6d65 6e74 732e 2020 5365 6520 7468 6520  ments.  See the \n+000000a0: 4e4f 5449 4345 2066 696c 6520 6469 7374  NOTICE file dist\n+000000b0: 7269 6275 7465 6420 7769 7468 0a20 207e  ributed with.  ~\n+000000c0: 2074 6869 7320 776f 726b 2066 6f72 2061   this work for a\n+000000d0: 6464 6974 696f 6e61 6c20 696e 666f 726d  dditional inform\n+000000e0: 6174 696f 6e20 7265 6761 7264 696e 6720  ation regarding \n+000000f0: 636f 7079 7269 6768 7420 6f77 6e65 7273  copyright owners\n+00000100: 6869 702e 0a20 207e 2054 6865 2041 5346  hip..  ~ The ASF\n+00000110: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000120: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000130: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000140: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000150: 0a20 207e 2028 7468 6520 224c 6963 656e  .  ~ (the \"Licen\n+00000160: 7365 2229 3b20 796f 7520 6d61 7920 6e6f  se\"); you may no\n+00000170: 7420 7573 6520 7468 6973 2066 696c 6520  t use this file \n+00000180: 6578 6365 7074 2069 6e20 636f 6d70 6c69  except in compli\n+00000190: 616e 6365 2077 6974 680a 2020 7e20 7468  ance with.  ~ th\n+000001a0: 6520 4c69 6365 6e73 652e 2020 596f 7520  e License.  You \n+000001b0: 6d61 7920 6f62 7461 696e 2061 2063 6f70  may obtain a cop\n+000001c0: 7920 6f66 2074 6865 204c 6963 656e 7365  y of the License\n+000001d0: 2061 740a 2020 7e0a 2020 7e20 2020 2020   at.  ~.  ~     \n+000001e0: 6874 7470 3a2f 2f77 7777 2e61 7061 6368  http://www.apach\n+000001f0: 652e 6f72 672f 6c69 6365 6e73 6573 2f4c  e.org/licenses/L\n+00000200: 4943 454e 5345 2d32 2e30 0a20 207e 0a20  ICENSE-2.0.  ~. \n+00000210: 207e 2055 6e6c 6573 7320 7265 7175 6972   ~ Unless requir\n+00000220: 6564 2062 7920 6170 706c 6963 6162 6c65  ed by applicable\n+00000230: 206c 6177 206f 7220 6167 7265 6564 2074   law or agreed t\n+00000240: 6f20 696e 2077 7269 7469 6e67 2c20 736f  o in writing, so\n+00000250: 6674 7761 7265 0a20 207e 2064 6973 7472  ftware.  ~ distr\n+00000260: 6962 7574 6564 2075 6e64 6572 2074 6865  ibuted under the\n+00000270: 204c 6963 656e 7365 2069 7320 6469 7374   License is dist\n+00000280: 7269 6275 7465 6420 6f6e 2061 6e20 2241  ributed on an \"A\n+00000290: 5320 4953 2220 4241 5349 532c 0a20 207e  S IS\" BASIS,.  ~\n+000002a0: 2057 4954 484f 5554 2057 4152 5241 4e54   WITHOUT WARRANT\n+000002b0: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n+000002c0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n+000002d0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n+000002e0: 2069 6d70 6c69 6564 2e0a 2020 7e20 5365   implied..  ~ Se\n+000002f0: 6520 7468 6520 4c69 6365 6e73 6520 666f  e the License fo\n+00000300: 7220 7468 6520 7370 6563 6966 6963 206c  r the specific l\n+00000310: 616e 6775 6167 6520 676f 7665 726e 696e  anguage governin\n+00000320: 6720 7065 726d 6973 7369 6f6e 7320 616e  g permissions an\n+00000330: 640a 2020 7e20 6c69 6d69 7461 7469 6f6e  d.  ~ limitation\n+00000340: 7320 756e 6465 7220 7468 6520 4c69 6365  s under the Lice\n+00000350: 6e73 652e 0a20 202d 2d3e 0a3c 7072 6f6a  nse..  -->.<proj\n+00000360: 6563 7420 7873 693a 7363 6865 6d61 4c6f  ect xsi:schemaLo\n+00000370: 6361 7469 6f6e 3d22 6874 7470 3a2f 2f6d  cation=\"http://m\n+00000380: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+00000390: 504f 4d2f 342e 302e 3020 6874 7470 733a  POM/4.0.0 https:\n+000003a0: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n+000003b0: 7267 2f78 7364 2f6d 6176 656e 2d34 2e30  rg/xsd/maven-4.0\n+000003c0: 2e30 2e78 7364 2220 786d 6c6e 733d 2268  .0.xsd\" xmlns=\"h\n+000003d0: 7474 703a 2f2f 6d61 7665 6e2e 6170 6163  ttp://maven.apac\n+000003e0: 6865 2e6f 7267 2f50 4f4d 2f34 2e30 2e30  he.org/POM/4.0.0\n+000003f0: 220a 2020 2020 786d 6c6e 733a 7873 693d  \".    xmlns:xsi=\n+00000400: 2268 7474 703a 2f2f 7777 772e 7733 2e6f  \"http://www.w3.o\n+00000410: 7267 2f32 3030 312f 584d 4c53 6368 656d  rg/2001/XMLSchem\n+00000420: 612d 696e 7374 616e 6365 223e 0a20 203c  a-instance\">.  <\n+00000430: 6d6f 6465 6c56 6572 7369 6f6e 3e34 2e30  modelVersion>4.0\n+00000440: 2e30 3c2f 6d6f 6465 6c56 6572 7369 6f6e  .0</modelVersion\n+00000450: 3e0a 2020 3c70 6172 656e 743e 0a20 2020  >.  <parent>.   \n+00000460: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000470: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000480: 7049 643e 0a20 2020 203c 6172 7469 6661  pId>.    <artifa\n+00000490: 6374 4964 3e64 7562 626f 2d63 6f6e 6669  ctId>dubbo-confi\n+000004a0: 6763 656e 7465 723c 2f61 7274 6966 6163  gcenter</artifac\n+000004b0: 7449 643e 0a20 2020 203c 7665 7273 696f  tId>.    <versio\n+000004c0: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n+000004d0: 6e3e 0a20 203c 2f70 6172 656e 743e 0a20  n>.  </parent>. \n+000004e0: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+000004f0: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000500: 7049 643e 0a20 203c 6172 7469 6661 6374  pId>.  <artifact\n+00000510: 4964 3e64 7562 626f 2d63 6f6e 6669 6763  Id>dubbo-configc\n+00000520: 656e 7465 722d 6574 6364 3c2f 6172 7469  enter-etcd</arti\n+00000530: 6661 6374 4964 3e0a 2020 3c76 6572 7369  factId>.  <versi\n+00000540: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n+00000550: 6f6e 3e0a 2020 3c6e 616d 653e 247b 7072  on>.  <name>${pr\n+00000560: 6f6a 6563 742e 6172 7469 6661 6374 4964  oject.artifactId\n+00000570: 7d3c 2f6e 616d 653e 0a20 203c 6465 7363  }</name>.  <desc\n+00000580: 7269 7074 696f 6e3e 5468 6520 6574 6364  ription>The etcd\n+00000590: 2069 6d70 6c65 6d65 6e74 6174 696f 6e20   implementation \n+000005a0: 6f66 2074 6865 2063 6f6e 6669 672d 6365  of the config-ce\n+000005b0: 6e74 6572 2061 7069 3c2f 6465 7363 7269  nter api</descri\n+000005c0: 7074 696f 6e3e 0a20 203c 6c69 6365 6e73  ption>.  <licens\n+000005d0: 6573 3e0a 2020 2020 3c6c 6963 656e 7365  es>.    <license\n+000005e0: 3e0a 2020 2020 2020 3c6e 616d 653e 4170  >.      <name>Ap\n+000005f0: 6163 6865 204c 6963 656e 7365 2c20 5665  ache License, Ve\n+00000600: 7273 696f 6e20 322e 303c 2f6e 616d 653e  rsion 2.0</name>\n+00000610: 0a20 2020 2020 203c 7572 6c3e 6874 7470  .      <url>http\n+00000620: 3a2f 2f77 7777 2e61 7061 6368 652e 6f72  ://www.apache.or\n+00000630: 672f 6c69 6365 6e73 6573 2f4c 4943 454e  g/licenses/LICEN\n+00000640: 5345 2d32 2e30 3c2f 7572 6c3e 0a20 2020  SE-2.0</url>.   \n+00000650: 2020 203c 6469 7374 7269 6275 7469 6f6e     <distribution\n+00000660: 3e72 6570 6f3c 2f64 6973 7472 6962 7574  >repo</distribut\n+00000670: 696f 6e3e 0a20 2020 203c 2f6c 6963 656e  ion>.    </licen\n+00000680: 7365 3e0a 2020 3c2f 6c69 6365 6e73 6573  se>.  </licenses\n+00000690: 3e0a 2020 3c70 726f 7065 7274 6965 733e  >.  <properties>\n+000006a0: 0a20 2020 203c 736b 6970 496e 7465 6772  .    <skipIntegr\n+000006b0: 6174 696f 6e54 6573 7473 3e74 7275 653c  ationTests>true<\n+000006c0: 2f73 6b69 7049 6e74 6567 7261 7469 6f6e  /skipIntegration\n+000006d0: 5465 7374 733e 0a20 203c 2f70 726f 7065  Tests>.  </prope\n+000006e0: 7274 6965 733e 0a20 203c 6465 7065 6e64  rties>.  <depend\n+000006f0: 656e 6369 6573 3e0a 2020 2020 3c64 6570  encies>.    <dep\n+00000700: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+00000710: 6772 6f75 7049 643e 696f 2e65 7463 643c  groupId>io.etcd<\n+00000720: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+00000730: 3c61 7274 6966 6163 7449 643e 6a65 7463  <artifactId>jetc\n+00000740: 642d 6c61 756e 6368 6572 3c2f 6172 7469  d-launcher</arti\n+00000750: 6661 6374 4964 3e0a 2020 2020 2020 3c73  factId>.      <s\n+00000760: 636f 7065 3e74 6573 743c 2f73 636f 7065  cope>test</scope\n+00000770: 3e0a 2020 2020 3c2f 6465 7065 6e64 656e  >.    </dependen\n+00000780: 6379 3e0a 2020 2020 3c64 6570 656e 6465  cy>.    <depende\n+00000790: 6e63 793e 0a20 2020 2020 203c 6772 6f75  ncy>.      <grou\n+000007a0: 7049 643e 6f72 672e 7465 7374 636f 6e74  pId>org.testcont\n+000007b0: 6169 6e65 7273 3c2f 6772 6f75 7049 643e  ainers</groupId>\n+000007c0: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+000007d0: 4964 3e74 6573 7463 6f6e 7461 696e 6572  Id>testcontainer\n+000007e0: 733c 2f61 7274 6966 6163 7449 643e 0a20  s</artifactId>. \n+000007f0: 2020 2020 203c 7363 6f70 653e 7465 7374       <scope>test\n+00000800: 3c2f 7363 6f70 653e 0a20 2020 203c 2f64  </scope>.    </d\n+00000810: 6570 656e 6465 6e63 793e 0a20 2020 203c  ependency>.    <\n+00000820: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000830: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+00000840: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n+00000850: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000860: 6966 6163 7449 643e 6475 6262 6f2d 636f  ifactId>dubbo-co\n+00000870: 6d6d 6f6e 3c2f 6172 7469 6661 6374 4964  mmon</artifactId\n+00000880: 3e0a 2020 2020 2020 3c76 6572 7369 6f6e  >.      <version\n+00000890: 3e24 7b70 726f 6a65 6374 2e70 6172 656e  >${project.paren\n+000008a0: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n+000008b0: 696f 6e3e 0a20 2020 203c 2f64 6570 656e  ion>.    </depen\n+000008c0: 6465 6e63 793e 0a20 2020 203c 6465 7065  dency>.    <depe\n+000008d0: 6e64 656e 6379 3e0a 2020 2020 2020 3c67  ndency>.      <g\n+000008e0: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n+000008f0: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n+00000900: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+00000910: 7449 643e 6475 6262 6f2d 7265 6d6f 7469  tId>dubbo-remoti\n+00000920: 6e67 2d65 7463 6433 3c2f 6172 7469 6661  ng-etcd3</artifa\n+00000930: 6374 4964 3e0a 2020 2020 2020 3c76 6572  ctId>.      <ver\n+00000940: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n+00000950: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n+00000960: 7665 7273 696f 6e3e 0a20 2020 203c 2f64  version>.    </d\n+00000970: 6570 656e 6465 6e63 793e 0a20 203c 2f64  ependency>.  </d\n+00000980: 6570 656e 6465 6e63 6965 733e 0a20 203c  ependencies>.  <\n+00000990: 6275 696c 643e 0a20 2020 203c 706c 7567  build>.    <plug\n+000009a0: 696e 733e 0a20 2020 2020 203c 706c 7567  ins>.      <plug\n+000009b0: 696e 3e0a 2020 2020 2020 2020 3c61 7274  in>.        <art\n+000009c0: 6966 6163 7449 643e 6d61 7665 6e2d 7375  ifactId>maven-su\n+000009d0: 7265 6669 7265 2d70 6c75 6769 6e3c 2f61  refire-plugin</a\n+000009e0: 7274 6966 6163 7449 643e 0a20 2020 2020  rtifactId>.     \n+000009f0: 2020 203c 636f 6e66 6967 7572 6174 696f     <configuratio\n+00000a00: 6e3e 0a20 2020 2020 2020 2020 203c 736b  n>.          <sk\n+00000a10: 6970 5465 7374 733e 247b 736b 6970 496e  ipTests>${skipIn\n+00000a20: 7465 6772 6174 696f 6e54 6573 7473 7d3c  tegrationTests}<\n+00000a30: 2f73 6b69 7054 6573 7473 3e0a 2020 2020  /skipTests>.    \n+00000a40: 2020 2020 3c2f 636f 6e66 6967 7572 6174      </configurat\n+00000a50: 696f 6e3e 0a20 2020 2020 203c 2f70 6c75  ion>.      </plu\n+00000a60: 6769 6e3e 0a20 2020 203c 2f70 6c75 6769  gin>.    </plugi\n+00000a70: 6e73 3e0a 2020 3c2f 6275 696c 643e 0a3c  ns>.  </build>.<\n+00000a80: 2f70 726f 6a65 6374 3e0a                 /project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-compatible/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-compatible/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,276 +1,269 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d70 6172 656e 743c 2f61 7274 6966  bo-parent</artif\n-000004a0: 6163 7449 643e 0d0a 2020 2020 3c76 6572  actId>..    <ver\n-000004b0: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n-000004c0: 7369 6f6e 3e0d 0a20 203c 2f70 6172 656e  sion>..  </paren\n-000004d0: 743e 0d0a 2020 3c67 726f 7570 4964 3e6f  t>..  <groupId>o\n-000004e0: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-000004f0: 2f67 726f 7570 4964 3e0d 0a20 203c 6172  /groupId>..  <ar\n-00000500: 7469 6661 6374 4964 3e64 7562 626f 2d63  tifactId>dubbo-c\n-00000510: 6f6d 7061 7469 626c 653c 2f61 7274 6966  ompatible</artif\n-00000520: 6163 7449 643e 0d0a 2020 3c76 6572 7369  actId>..  <versi\n-00000530: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n-00000540: 6f6e 3e0d 0a20 203c 6e61 6d65 3e24 7b70  on>..  <name>${p\n-00000550: 726f 6a65 6374 2e61 7274 6966 6163 7449  roject.artifactI\n-00000560: 647d 3c2f 6e61 6d65 3e0d 0a20 203c 6465  d}</name>..  <de\n-00000570: 7363 7269 7074 696f 6e3e 5468 6520 636f  scription>The co\n-00000580: 6d70 6174 6962 6c65 206d 6f64 756c 6520  mpatible module \n-00000590: 6f66 2064 7562 626f 2070 726f 6a65 6374  of dubbo project\n-000005a0: 3c2f 6465 7363 7269 7074 696f 6e3e 0d0a  </description>..\n-000005b0: 2020 3c6c 6963 656e 7365 733e 0d0a 2020    <licenses>..  \n-000005c0: 2020 3c6c 6963 656e 7365 3e0d 0a20 2020    <license>..   \n-000005d0: 2020 203c 6e61 6d65 3e41 7061 6368 6520     <name>Apache \n-000005e0: 4c69 6365 6e73 652c 2056 6572 7369 6f6e  License, Version\n-000005f0: 2032 2e30 3c2f 6e61 6d65 3e0d 0a20 2020   2.0</name>..   \n-00000600: 2020 203c 7572 6c3e 6874 7470 3a2f 2f77     <url>http://w\n-00000610: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-00000620: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000630: 2e30 3c2f 7572 6c3e 0d0a 2020 2020 2020  .0</url>..      \n-00000640: 3c64 6973 7472 6962 7574 696f 6e3e 7265  <distribution>re\n-00000650: 706f 3c2f 6469 7374 7269 6275 7469 6f6e  po</distribution\n-00000660: 3e0d 0a20 2020 203c 2f6c 6963 656e 7365  >..    </license\n-00000670: 3e0d 0a20 203c 2f6c 6963 656e 7365 733e  >..  </licenses>\n-00000680: 0d0a 2020 3c64 6570 656e 6465 6e63 6965  ..  <dependencie\n-00000690: 733e 0d0a 2020 2020 3c64 6570 656e 6465  s>..    <depende\n-000006a0: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-000006b0: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n-000006c0: 6475 6262 6f3c 2f67 726f 7570 4964 3e0d  dubbo</groupId>.\n-000006d0: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-000006e0: 4964 3e64 7562 626f 2d66 696c 7465 722d  Id>dubbo-filter-\n-000006f0: 6361 6368 653c 2f61 7274 6966 6163 7449  cache</artifactI\n-00000700: 643e 0d0a 2020 2020 2020 3c76 6572 7369  d>..      <versi\n-00000710: 6f6e 3e24 7b70 726f 6a65 6374 2e70 6172  on>${project.par\n-00000720: 656e 742e 7665 7273 696f 6e7d 3c2f 7665  ent.version}</ve\n-00000730: 7273 696f 6e3e 0d0a 2020 2020 3c2f 6465  rsion>..    </de\n-00000740: 7065 6e64 656e 6379 3e0d 0a20 2020 203c  pendency>..    <\n-00000750: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000760: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n-00000770: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-00000780: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-00000790: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n-000007a0: 636f 6e66 6967 2d73 7072 696e 673c 2f61  config-spring</a\n-000007b0: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-000007c0: 2020 3c76 6572 7369 6f6e 3e24 7b70 726f    <version>${pro\n-000007d0: 6a65 6374 2e70 6172 656e 742e 7665 7273  ject.parent.vers\n-000007e0: 696f 6e7d 3c2f 7665 7273 696f 6e3e 0d0a  ion}</version>..\n-000007f0: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n-00000800: 3e0d 0a20 2020 203c 6465 7065 6e64 656e  >..    <dependen\n-00000810: 6379 3e0d 0a20 2020 2020 203c 6772 6f75  cy>..      <grou\n-00000820: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n-00000830: 7562 626f 3c2f 6772 6f75 7049 643e 0d0a  ubbo</groupId>..\n-00000840: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n-00000850: 643e 6475 6262 6f2d 716f 733c 2f61 7274  d>dubbo-qos</art\n-00000860: 6966 6163 7449 643e 0d0a 2020 2020 2020  ifactId>..      \n-00000870: 3c76 6572 7369 6f6e 3e24 7b70 726f 6a65  <version>${proje\n-00000880: 6374 2e70 6172 656e 742e 7665 7273 696f  ct.parent.versio\n-00000890: 6e7d 3c2f 7665 7273 696f 6e3e 0d0a 2020  n}</version>..  \n-000008a0: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-000008b0: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-000008c0: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-000008d0: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n-000008e0: 626f 3c2f 6772 6f75 7049 643e 0d0a 2020  bo</groupId>..  \n-000008f0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-00000900: 6475 6262 6f2d 7265 6d6f 7469 6e67 2d68  dubbo-remoting-h\n-00000910: 7474 703c 2f61 7274 6966 6163 7449 643e  ttp</artifactId>\n-00000920: 0d0a 2020 2020 2020 3c76 6572 7369 6f6e  ..      <version\n-00000930: 3e24 7b70 726f 6a65 6374 2e70 6172 656e  >${project.paren\n-00000940: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n-00000950: 696f 6e3e 0d0a 2020 2020 3c2f 6465 7065  ion>..    </depe\n-00000960: 6e64 656e 6379 3e0d 0a20 2020 203c 6465  ndency>..    <de\n-00000970: 7065 6e64 656e 6379 3e0d 0a20 2020 2020  pendency>..     \n-00000980: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n-00000990: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n-000009a0: 7049 643e 0d0a 2020 2020 2020 3c61 7274  pId>..      <art\n-000009b0: 6966 6163 7449 643e 6475 6262 6f2d 7265  ifactId>dubbo-re\n-000009c0: 6d6f 7469 6e67 2d70 3270 3c2f 6172 7469  moting-p2p</arti\n-000009d0: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-000009e0: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n-000009f0: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n-00000a00: 7d3c 2f76 6572 7369 6f6e 3e0d 0a20 2020  }</version>..   \n-00000a10: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-00000a20: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n-00000a30: 0d0a 2020 2020 2020 3c67 726f 7570 4964  ..      <groupId\n-00000a40: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000a50: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000a60: 2020 203c 6172 7469 6661 6374 4964 3e64     <artifactId>d\n-00000a70: 7562 626f 2d72 656d 6f74 696e 672d 7a6f  ubbo-remoting-zo\n-00000a80: 6f6b 6565 7065 723c 2f61 7274 6966 6163  okeeper</artifac\n-00000a90: 7449 643e 0d0a 2020 2020 2020 3c76 6572  tId>..      <ver\n-00000aa0: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n-00000ab0: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n-00000ac0: 7665 7273 696f 6e3e 0d0a 2020 2020 3c2f  version>..    </\n-00000ad0: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000ae0: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-00000af0: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n-00000b00: 672e 6170 6163 6865 2e64 7562 626f 3c2f  g.apache.dubbo</\n-00000b10: 6772 6f75 7049 643e 0d0a 2020 2020 2020  groupId>..      \n-00000b20: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n-00000b30: 6f2d 7270 632d 7265 7374 3c2f 6172 7469  o-rpc-rest</arti\n-00000b40: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-00000b50: 7665 7273 696f 6e3e 247b 7072 6f6a 6563  version>${projec\n-00000b60: 742e 7061 7265 6e74 2e76 6572 7369 6f6e  t.parent.version\n-00000b70: 7d3c 2f76 6572 7369 6f6e 3e0d 0a20 2020  }</version>..   \n-00000b80: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-00000b90: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n-00000ba0: 0d0a 2020 2020 2020 3c67 726f 7570 4964  ..      <groupId\n-00000bb0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000bc0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000bd0: 2020 203c 6172 7469 6661 6374 4964 3e64     <artifactId>d\n-00000be0: 7562 626f 2d72 7063 2d74 6872 6966 743c  ubbo-rpc-thrift<\n-00000bf0: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-00000c00: 2020 2020 3c76 6572 7369 6f6e 3e24 7b70      <version>${p\n-00000c10: 726f 6a65 6374 2e70 6172 656e 742e 7665  roject.parent.ve\n-00000c20: 7273 696f 6e7d 3c2f 7665 7273 696f 6e3e  rsion}</version>\n-00000c30: 0d0a 2020 2020 3c2f 6465 7065 6e64 656e  ..    </dependen\n-00000c40: 6379 3e0d 0a20 2020 203c 6465 7065 6e64  cy>..    <depend\n-00000c50: 656e 6379 3e0d 0a20 2020 2020 203c 6772  ency>..      <gr\n-00000c60: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n-00000c70: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n-00000c80: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-00000c90: 7449 643e 6475 6262 6f2d 7365 7269 616c  tId>dubbo-serial\n-00000ca0: 697a 6174 696f 6e2d 6865 7373 6961 6e32  ization-hessian2\n-00000cb0: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000cc0: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n-00000cd0: 7072 6f6a 6563 742e 7061 7265 6e74 2e76  project.parent.v\n-00000ce0: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n-00000cf0: 3e0d 0a20 2020 2020 203c 7363 6f70 653e  >..      <scope>\n-00000d00: 7465 7374 3c2f 7363 6f70 653e 0d0a 2020  test</scope>..  \n-00000d10: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-00000d20: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-00000d30: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-00000d40: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n-00000d50: 626f 3c2f 6772 6f75 7049 643e 0d0a 2020  bo</groupId>..  \n-00000d60: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-00000d70: 6475 6262 6f2d 7265 6769 7374 7279 2d6d  dubbo-registry-m\n-00000d80: 756c 7469 6361 7374 3c2f 6172 7469 6661  ulticast</artifa\n-00000d90: 6374 4964 3e0d 0a20 2020 2020 203c 7665  ctId>..      <ve\n-00000da0: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n-00000db0: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n-00000dc0: 2f76 6572 7369 6f6e 3e0d 0a20 2020 2020  /version>..     \n-00000dd0: 203c 7363 6f70 653e 7465 7374 3c2f 7363   <scope>test</sc\n-00000de0: 6f70 653e 0d0a 2020 2020 3c2f 6465 7065  ope>..    </depe\n-00000df0: 6e64 656e 6379 3e0d 0a20 2020 203c 6465  ndency>..    <de\n-00000e00: 7065 6e64 656e 6379 3e0d 0a20 2020 2020  pendency>..     \n-00000e10: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n-00000e20: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n-00000e30: 7049 643e 0d0a 2020 2020 2020 3c61 7274  pId>..      <art\n-00000e40: 6966 6163 7449 643e 6475 6262 6f2d 7265  ifactId>dubbo-re\n-00000e50: 6769 7374 7279 2d7a 6f6f 6b65 6570 6572  gistry-zookeeper\n-00000e60: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000e70: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n-00000e80: 7072 6f6a 6563 742e 7061 7265 6e74 2e76  project.parent.v\n-00000e90: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n-00000ea0: 3e0d 0a20 2020 2020 203c 7363 6f70 653e  >..      <scope>\n-00000eb0: 7465 7374 3c2f 7363 6f70 653e 0d0a 2020  test</scope>..  \n-00000ec0: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-00000ed0: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-00000ee0: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-00000ef0: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n-00000f00: 626f 3c2f 6772 6f75 7049 643e 0d0a 2020  bo</groupId>..  \n-00000f10: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-00000f20: 6475 6262 6f2d 636f 6e66 6967 6365 6e74  dubbo-configcent\n-00000f30: 6572 2d7a 6f6f 6b65 6570 6572 3c2f 6172  er-zookeeper</ar\n-00000f40: 7469 6661 6374 4964 3e0d 0a20 2020 2020  tifactId>..     \n-00000f50: 203c 7665 7273 696f 6e3e 247b 7072 6f6a   <version>${proj\n-00000f60: 6563 742e 7061 7265 6e74 2e76 6572 7369  ect.parent.versi\n-00000f70: 6f6e 7d3c 2f76 6572 7369 6f6e 3e0d 0a20  on}</version>.. \n-00000f80: 2020 2020 203c 7363 6f70 653e 7465 7374       <scope>test\n-00000f90: 3c2f 7363 6f70 653e 0d0a 2020 2020 3c2f  </scope>..    </\n-00000fa0: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000fb0: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-00000fc0: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n-00000fd0: 672e 6170 6163 6865 2e64 7562 626f 3c2f  g.apache.dubbo</\n-00000fe0: 6772 6f75 7049 643e 0d0a 2020 2020 2020  groupId>..      \n-00000ff0: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n-00001000: 6f2d 6d65 7461 6461 7461 2d72 6570 6f72  o-metadata-repor\n-00001010: 742d 7a6f 6f6b 6565 7065 723c 2f61 7274  t-zookeeper</art\n-00001020: 6966 6163 7449 643e 0d0a 2020 2020 2020  ifactId>..      \n-00001030: 3c76 6572 7369 6f6e 3e24 7b70 726f 6a65  <version>${proje\n-00001040: 6374 2e70 6172 656e 742e 7665 7273 696f  ct.parent.versio\n-00001050: 6e7d 3c2f 7665 7273 696f 6e3e 0d0a 2020  n}</version>..  \n-00001060: 2020 2020 3c73 636f 7065 3e74 6573 743c      <scope>test<\n-00001070: 2f73 636f 7065 3e0d 0a20 2020 203c 2f64  /scope>..    </d\n-00001080: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00001090: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-000010a0: 2020 2020 3c67 726f 7570 4964 3e63 6f6d      <groupId>com\n-000010b0: 2e61 6c69 6261 6261 3c2f 6772 6f75 7049  .alibaba</groupI\n-000010c0: 643e 0d0a 2020 2020 2020 3c61 7274 6966  d>..      <artif\n-000010d0: 6163 7449 643e 6661 7374 6a73 6f6e 3c2f  actId>fastjson</\n-000010e0: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-000010f0: 2020 203c 7363 6f70 653e 7465 7374 3c2f     <scope>test</\n-00001100: 7363 6f70 653e 0d0a 2020 2020 3c2f 6465  scope>..    </de\n-00001110: 7065 6e64 656e 6379 3e0d 0a20 203c 2f64  pendency>..  </d\n-00001120: 6570 656e 6465 6e63 6965 733e 0d0a 3c2f  ependencies>..</\n-00001130: 7072 6f6a 6563 743e 0d0a                 project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d70 6172  factId>dubbo-par\n+00000480: 656e 743c 2f61 7274 6966 6163 7449 643e  ent</artifactId>\n+00000490: 0a20 2020 203c 7665 7273 696f 6e3e 322e  .    <version>2.\n+000004a0: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+000004b0: 203c 2f70 6172 656e 743e 0a20 203c 6772   </parent>.  <gr\n+000004c0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000004d0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+000004e0: 0a20 203c 6172 7469 6661 6374 4964 3e64  .  <artifactId>d\n+000004f0: 7562 626f 2d63 6f6d 7061 7469 626c 653c  ubbo-compatible<\n+00000500: 2f61 7274 6966 6163 7449 643e 0a20 203c  /artifactId>.  <\n+00000510: 7665 7273 696f 6e3e 322e 372e 3130 3c2f  version>2.7.10</\n+00000520: 7665 7273 696f 6e3e 0a20 203c 6e61 6d65  version>.  <name\n+00000530: 3e24 7b70 726f 6a65 6374 2e61 7274 6966  >${project.artif\n+00000540: 6163 7449 647d 3c2f 6e61 6d65 3e0a 2020  actId}</name>.  \n+00000550: 3c64 6573 6372 6970 7469 6f6e 3e54 6865  <description>The\n+00000560: 2063 6f6d 7061 7469 626c 6520 6d6f 6475   compatible modu\n+00000570: 6c65 206f 6620 6475 6262 6f20 7072 6f6a  le of dubbo proj\n+00000580: 6563 743c 2f64 6573 6372 6970 7469 6f6e  ect</description\n+00000590: 3e0a 2020 3c6c 6963 656e 7365 733e 0a20  >.  <licenses>. \n+000005a0: 2020 203c 6c69 6365 6e73 653e 0a20 2020     <license>.   \n+000005b0: 2020 203c 6e61 6d65 3e41 7061 6368 6520     <name>Apache \n+000005c0: 4c69 6365 6e73 652c 2056 6572 7369 6f6e  License, Version\n+000005d0: 2032 2e30 3c2f 6e61 6d65 3e0a 2020 2020   2.0</name>.    \n+000005e0: 2020 3c75 726c 3e68 7474 703a 2f2f 7777    <url>http://ww\n+000005f0: 772e 6170 6163 6865 2e6f 7267 2f6c 6963  w.apache.org/lic\n+00000600: 656e 7365 732f 4c49 4345 4e53 452d 322e  enses/LICENSE-2.\n+00000610: 303c 2f75 726c 3e0a 2020 2020 2020 3c64  0</url>.      <d\n+00000620: 6973 7472 6962 7574 696f 6e3e 7265 706f  istribution>repo\n+00000630: 3c2f 6469 7374 7269 6275 7469 6f6e 3e0a  </distribution>.\n+00000640: 2020 2020 3c2f 6c69 6365 6e73 653e 0a20      </license>. \n+00000650: 203c 2f6c 6963 656e 7365 733e 0a20 203c   </licenses>.  <\n+00000660: 6465 7065 6e64 656e 6369 6573 3e0a 2020  dependencies>.  \n+00000670: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+00000680: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n+00000690: 672e 6170 6163 6865 2e64 7562 626f 3c2f  g.apache.dubbo</\n+000006a0: 6772 6f75 7049 643e 0a20 2020 2020 203c  groupId>.      <\n+000006b0: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n+000006c0: 2d66 696c 7465 722d 6361 6368 653c 2f61  -filter-cache</a\n+000006d0: 7274 6966 6163 7449 643e 0a20 2020 2020  rtifactId>.     \n+000006e0: 203c 7665 7273 696f 6e3e 247b 7072 6f6a   <version>${proj\n+000006f0: 6563 742e 7061 7265 6e74 2e76 6572 7369  ect.parent.versi\n+00000700: 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a 2020  on}</version>.  \n+00000710: 2020 3c2f 6465 7065 6e64 656e 6379 3e0a    </dependency>.\n+00000720: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+00000730: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+00000740: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+00000750: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+00000760: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+00000770: 626f 2d63 6f6e 6669 672d 7370 7269 6e67  bo-config-spring\n+00000780: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000790: 2020 2020 3c76 6572 7369 6f6e 3e24 7b70      <version>${p\n+000007a0: 726f 6a65 6374 2e70 6172 656e 742e 7665  roject.parent.ve\n+000007b0: 7273 696f 6e7d 3c2f 7665 7273 696f 6e3e  rsion}</version>\n+000007c0: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+000007d0: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+000007e0: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+000007f0: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+00000800: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000810: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+00000820: 6475 6262 6f2d 716f 733c 2f61 7274 6966  dubbo-qos</artif\n+00000830: 6163 7449 643e 0a20 2020 2020 203c 7665  actId>.      <ve\n+00000840: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n+00000850: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n+00000860: 2f76 6572 7369 6f6e 3e0a 2020 2020 3c2f  /version>.    </\n+00000870: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000880: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+00000890: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+000008a0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+000008b0: 6f75 7049 643e 0a20 2020 2020 203c 6172  oupId>.      <ar\n+000008c0: 7469 6661 6374 4964 3e64 7562 626f 2d72  tifactId>dubbo-r\n+000008d0: 656d 6f74 696e 672d 6874 7470 3c2f 6172  emoting-http</ar\n+000008e0: 7469 6661 6374 4964 3e0a 2020 2020 2020  tifactId>.      \n+000008f0: 3c76 6572 7369 6f6e 3e24 7b70 726f 6a65  <version>${proje\n+00000900: 6374 2e70 6172 656e 742e 7665 7273 696f  ct.parent.versio\n+00000910: 6e7d 3c2f 7665 7273 696f 6e3e 0a20 2020  n}</version>.   \n+00000920: 203c 2f64 6570 656e 6465 6e63 793e 0a20   </dependency>. \n+00000930: 2020 203c 6465 7065 6e64 656e 6379 3e0a     <dependency>.\n+00000940: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n+00000950: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n+00000960: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+00000970: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+00000980: 6f2d 7265 6d6f 7469 6e67 2d70 3270 3c2f  o-remoting-p2p</\n+00000990: 6172 7469 6661 6374 4964 3e0a 2020 2020  artifactId>.    \n+000009a0: 2020 3c76 6572 7369 6f6e 3e24 7b70 726f    <version>${pro\n+000009b0: 6a65 6374 2e70 6172 656e 742e 7665 7273  ject.parent.vers\n+000009c0: 696f 6e7d 3c2f 7665 7273 696f 6e3e 0a20  ion}</version>. \n+000009d0: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+000009e0: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+000009f0: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+00000a00: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n+00000a10: 6f3c 2f67 726f 7570 4964 3e0a 2020 2020  o</groupId>.    \n+00000a20: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000a30: 6262 6f2d 7265 6d6f 7469 6e67 2d7a 6f6f  bbo-remoting-zoo\n+00000a40: 6b65 6570 6572 3c2f 6172 7469 6661 6374  keeper</artifact\n+00000a50: 4964 3e0a 2020 2020 2020 3c76 6572 7369  Id>.      <versi\n+00000a60: 6f6e 3e24 7b70 726f 6a65 6374 2e70 6172  on>${project.par\n+00000a70: 656e 742e 7665 7273 696f 6e7d 3c2f 7665  ent.version}</ve\n+00000a80: 7273 696f 6e3e 0a20 2020 203c 2f64 6570  rsion>.    </dep\n+00000a90: 656e 6465 6e63 793e 0a20 2020 203c 6465  endency>.    <de\n+00000aa0: 7065 6e64 656e 6379 3e0a 2020 2020 2020  pendency>.      \n+00000ab0: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n+00000ac0: 6368 652e 6475 6262 6f3c 2f67 726f 7570  che.dubbo</group\n+00000ad0: 4964 3e0a 2020 2020 2020 3c61 7274 6966  Id>.      <artif\n+00000ae0: 6163 7449 643e 6475 6262 6f2d 7270 632d  actId>dubbo-rpc-\n+00000af0: 7265 7374 3c2f 6172 7469 6661 6374 4964  rest</artifactId\n+00000b00: 3e0a 2020 2020 2020 3c76 6572 7369 6f6e  >.      <version\n+00000b10: 3e24 7b70 726f 6a65 6374 2e70 6172 656e  >${project.paren\n+00000b20: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n+00000b30: 696f 6e3e 0a20 2020 203c 2f64 6570 656e  ion>.    </depen\n+00000b40: 6465 6e63 793e 0a20 2020 203c 6465 7065  dency>.    <depe\n+00000b50: 6e64 656e 6379 3e0a 2020 2020 2020 3c67  ndency>.      <g\n+00000b60: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n+00000b70: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n+00000b80: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+00000b90: 7449 643e 6475 6262 6f2d 7270 632d 7468  tId>dubbo-rpc-th\n+00000ba0: 7269 6674 3c2f 6172 7469 6661 6374 4964  rift</artifactId\n+00000bb0: 3e0a 2020 2020 2020 3c76 6572 7369 6f6e  >.      <version\n+00000bc0: 3e24 7b70 726f 6a65 6374 2e70 6172 656e  >${project.paren\n+00000bd0: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n+00000be0: 696f 6e3e 0a20 2020 203c 2f64 6570 656e  ion>.    </depen\n+00000bf0: 6465 6e63 793e 0a20 2020 203c 6465 7065  dency>.    <depe\n+00000c00: 6e64 656e 6379 3e0a 2020 2020 2020 3c67  ndency>.      <g\n+00000c10: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n+00000c20: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n+00000c30: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+00000c40: 7449 643e 6475 6262 6f2d 7365 7269 616c  tId>dubbo-serial\n+00000c50: 697a 6174 696f 6e2d 6865 7373 6961 6e32  ization-hessian2\n+00000c60: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000c70: 2020 2020 3c76 6572 7369 6f6e 3e24 7b70      <version>${p\n+00000c80: 726f 6a65 6374 2e70 6172 656e 742e 7665  roject.parent.ve\n+00000c90: 7273 696f 6e7d 3c2f 7665 7273 696f 6e3e  rsion}</version>\n+00000ca0: 0a20 2020 2020 203c 7363 6f70 653e 7465  .      <scope>te\n+00000cb0: 7374 3c2f 7363 6f70 653e 0a20 2020 203c  st</scope>.    <\n+00000cc0: 2f64 6570 656e 6465 6e63 793e 0a20 2020  /dependency>.   \n+00000cd0: 203c 6465 7065 6e64 656e 6379 3e0a 2020   <dependency>.  \n+00000ce0: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n+00000cf0: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n+00000d00: 726f 7570 4964 3e0a 2020 2020 2020 3c61  roupId>.      <a\n+00000d10: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n+00000d20: 7265 6769 7374 7279 2d6d 756c 7469 6361  registry-multica\n+00000d30: 7374 3c2f 6172 7469 6661 6374 4964 3e0a  st</artifactId>.\n+00000d40: 2020 2020 2020 3c76 6572 7369 6f6e 3e24        <version>$\n+00000d50: 7b70 726f 6a65 6374 2e70 6172 656e 742e  {project.parent.\n+00000d60: 7665 7273 696f 6e7d 3c2f 7665 7273 696f  version}</versio\n+00000d70: 6e3e 0a20 2020 2020 203c 7363 6f70 653e  n>.      <scope>\n+00000d80: 7465 7374 3c2f 7363 6f70 653e 0a20 2020  test</scope>.   \n+00000d90: 203c 2f64 6570 656e 6465 6e63 793e 0a20   </dependency>. \n+00000da0: 2020 203c 6465 7065 6e64 656e 6379 3e0a     <dependency>.\n+00000db0: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n+00000dc0: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n+00000dd0: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+00000de0: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n+00000df0: 6f2d 7265 6769 7374 7279 2d7a 6f6f 6b65  o-registry-zooke\n+00000e00: 6570 6572 3c2f 6172 7469 6661 6374 4964  eper</artifactId\n+00000e10: 3e0a 2020 2020 2020 3c76 6572 7369 6f6e  >.      <version\n+00000e20: 3e24 7b70 726f 6a65 6374 2e70 6172 656e  >${project.paren\n+00000e30: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n+00000e40: 696f 6e3e 0a20 2020 2020 203c 7363 6f70  ion>.      <scop\n+00000e50: 653e 7465 7374 3c2f 7363 6f70 653e 0a20  e>test</scope>. \n+00000e60: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n+00000e70: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+00000e80: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+00000e90: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n+00000ea0: 6f3c 2f67 726f 7570 4964 3e0a 2020 2020  o</groupId>.    \n+00000eb0: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000ec0: 6262 6f2d 636f 6e66 6967 6365 6e74 6572  bbo-configcenter\n+00000ed0: 2d7a 6f6f 6b65 6570 6572 3c2f 6172 7469  -zookeeper</arti\n+00000ee0: 6661 6374 4964 3e0a 2020 2020 2020 3c76  factId>.      <v\n+00000ef0: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n+00000f00: 2e70 6172 656e 742e 7665 7273 696f 6e7d  .parent.version}\n+00000f10: 3c2f 7665 7273 696f 6e3e 0a20 2020 2020  </version>.     \n+00000f20: 203c 7363 6f70 653e 7465 7374 3c2f 7363   <scope>test</sc\n+00000f30: 6f70 653e 0a20 2020 203c 2f64 6570 656e  ope>.    </depen\n+00000f40: 6465 6e63 793e 0a20 2020 203c 6465 7065  dency>.    <depe\n+00000f50: 6e64 656e 6379 3e0a 2020 2020 2020 3c67  ndency>.      <g\n+00000f60: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n+00000f70: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n+00000f80: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+00000f90: 7449 643e 6475 6262 6f2d 6d65 7461 6461  tId>dubbo-metada\n+00000fa0: 7461 2d72 6570 6f72 742d 7a6f 6f6b 6565  ta-report-zookee\n+00000fb0: 7065 723c 2f61 7274 6966 6163 7449 643e  per</artifactId>\n+00000fc0: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n+00000fd0: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n+00000fe0: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n+00000ff0: 6f6e 3e0a 2020 2020 2020 3c73 636f 7065  on>.      <scope\n+00001000: 3e74 6573 743c 2f73 636f 7065 3e0a 2020  >test</scope>.  \n+00001010: 2020 3c2f 6465 7065 6e64 656e 6379 3e0a    </dependency>.\n+00001020: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+00001030: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+00001040: 636f 6d2e 616c 6962 6162 613c 2f67 726f  com.alibaba</gro\n+00001050: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00001060: 6966 6163 7449 643e 6661 7374 6a73 6f6e  ifactId>fastjson\n+00001070: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00001080: 2020 2020 3c73 636f 7065 3e74 6573 743c      <scope>test<\n+00001090: 2f73 636f 7065 3e0a 2020 2020 3c2f 6465  /scope>.    </de\n+000010a0: 7065 6e64 656e 6379 3e0a 2020 3c2f 6465  pendency>.  </de\n+000010b0: 7065 6e64 656e 6369 6573 3e0a 3c2f 7072  pendencies>.</pr\n+000010c0: 6f6a 6563 743e 0a                        oject>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-metadata-api/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-metadata-api/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,192 +1,187 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d6d 6574 6164 6174 613c 2f61 7274  bo-metadata</art\n-000004a0: 6966 6163 7449 643e 0d0a 2020 2020 3c76  ifactId>..    <v\n-000004b0: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-000004c0: 6572 7369 6f6e 3e0d 0a20 203c 2f70 6172  ersion>..  </par\n-000004d0: 656e 743e 0d0a 2020 3c67 726f 7570 4964  ent>..  <groupId\n-000004e0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000004f0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 203c  o</groupId>..  <\n-00000500: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000510: 2d6d 6574 6164 6174 612d 6170 693c 2f61  -metadata-api</a\n-00000520: 7274 6966 6163 7449 643e 0d0a 2020 3c76  rtifactId>..  <v\n-00000530: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-00000540: 6572 7369 6f6e 3e0d 0a20 203c 6e61 6d65  ersion>..  <name\n-00000550: 3e64 7562 626f 2d6d 6574 6164 6174 612d  >dubbo-metadata-\n-00000560: 6170 693c 2f6e 616d 653e 0d0a 2020 3c64  api</name>..  <d\n-00000570: 6573 6372 6970 7469 6f6e 3e54 6865 206d  escription>The m\n-00000580: 6574 6164 6174 6120 6d6f 6475 6c65 206f  etadata module o\n-00000590: 6620 4475 6262 6f20 7072 6f6a 6563 743c  f Dubbo project<\n-000005a0: 2f64 6573 6372 6970 7469 6f6e 3e0d 0a20  /description>.. \n-000005b0: 203c 6c69 6365 6e73 6573 3e0d 0a20 2020   <licenses>..   \n-000005c0: 203c 6c69 6365 6e73 653e 0d0a 2020 2020   <license>..    \n-000005d0: 2020 3c6e 616d 653e 4170 6163 6865 204c    <name>Apache L\n-000005e0: 6963 656e 7365 2c20 5665 7273 696f 6e20  icense, Version \n-000005f0: 322e 303c 2f6e 616d 653e 0d0a 2020 2020  2.0</name>..    \n-00000600: 2020 3c75 726c 3e68 7474 703a 2f2f 7777    <url>http://ww\n-00000610: 772e 6170 6163 6865 2e6f 7267 2f6c 6963  w.apache.org/lic\n-00000620: 656e 7365 732f 4c49 4345 4e53 452d 322e  enses/LICENSE-2.\n-00000630: 303c 2f75 726c 3e0d 0a20 2020 2020 203c  0</url>..      <\n-00000640: 6469 7374 7269 6275 7469 6f6e 3e72 6570  distribution>rep\n-00000650: 6f3c 2f64 6973 7472 6962 7574 696f 6e3e  o</distribution>\n-00000660: 0d0a 2020 2020 3c2f 6c69 6365 6e73 653e  ..    </license>\n-00000670: 0d0a 2020 3c2f 6c69 6365 6e73 6573 3e0d  ..  </licenses>.\n-00000680: 0a20 203c 6465 7065 6e64 656e 6369 6573  .  <dependencies\n-00000690: 3e0d 0a20 2020 203c 6465 7065 6e64 656e  >..    <dependen\n-000006a0: 6379 3e0d 0a20 2020 2020 203c 6772 6f75  cy>..      <grou\n-000006b0: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n-000006c0: 7562 626f 3c2f 6772 6f75 7049 643e 0d0a  ubbo</groupId>..\n-000006d0: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n-000006e0: 643e 6475 6262 6f2d 7270 632d 6170 693c  d>dubbo-rpc-api<\n-000006f0: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-00000700: 2020 2020 3c76 6572 7369 6f6e 3e24 7b70      <version>${p\n-00000710: 726f 6a65 6374 2e70 6172 656e 742e 7665  roject.parent.ve\n-00000720: 7273 696f 6e7d 3c2f 7665 7273 696f 6e3e  rsion}</version>\n-00000730: 0d0a 2020 2020 2020 3c6f 7074 696f 6e61  ..      <optiona\n-00000740: 6c3e 7472 7565 3c2f 6f70 7469 6f6e 616c  l>true</optional\n-00000750: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-00000760: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-00000770: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-00000780: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n-00000790: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n-000007a0: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-000007b0: 6374 4964 3e64 7562 626f 2d63 6c75 7374  ctId>dubbo-clust\n-000007c0: 6572 3c2f 6172 7469 6661 6374 4964 3e0d  er</artifactId>.\n-000007d0: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n-000007e0: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n-000007f0: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n-00000800: 6f6e 3e0d 0a20 2020 203c 2f64 6570 656e  on>..    </depen\n-00000810: 6465 6e63 793e 0d0a 2020 2020 3c64 6570  dency>..    <dep\n-00000820: 656e 6465 6e63 793e 0d0a 2020 2020 2020  endency>..      \n-00000830: 3c67 726f 7570 4964 3e63 6f6d 2e67 6f6f  <groupId>com.goo\n-00000840: 676c 652e 636f 6465 2e67 736f 6e3c 2f67  gle.code.gson</g\n-00000850: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-00000860: 6172 7469 6661 6374 4964 3e67 736f 6e3c  artifactId>gson<\n-00000870: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-00000880: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-00000890: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-000008a0: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-000008b0: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n-000008c0: 626f 3c2f 6772 6f75 7049 643e 0d0a 2020  bo</groupId>..  \n-000008d0: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-000008e0: 6475 6262 6f2d 636f 6e66 6967 6365 6e74  dubbo-configcent\n-000008f0: 6572 2d7a 6f6f 6b65 6570 6572 3c2f 6172  er-zookeeper</ar\n-00000900: 7469 6661 6374 4964 3e0d 0a20 2020 2020  tifactId>..     \n-00000910: 203c 7665 7273 696f 6e3e 247b 7072 6f6a   <version>${proj\n-00000920: 6563 742e 7061 7265 6e74 2e76 6572 7369  ect.parent.versi\n-00000930: 6f6e 7d3c 2f76 6572 7369 6f6e 3e0d 0a20  on}</version>.. \n-00000940: 2020 2020 203c 7363 6f70 653e 7465 7374       <scope>test\n-00000950: 3c2f 7363 6f70 653e 0d0a 2020 2020 3c2f  </scope>..    </\n-00000960: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000970: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-00000980: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n-00000990: 672e 6170 6163 6865 2e63 7572 6174 6f72  g.apache.curator\n-000009a0: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-000009b0: 2020 3c61 7274 6966 6163 7449 643e 6375    <artifactId>cu\n-000009c0: 7261 746f 722d 7465 7374 3c2f 6172 7469  rator-test</arti\n-000009d0: 6661 6374 4964 3e0d 0a20 2020 2020 203c  factId>..      <\n-000009e0: 7363 6f70 653e 7465 7374 3c2f 7363 6f70  scope>test</scop\n-000009f0: 653e 0d0a 2020 2020 3c2f 6465 7065 6e64  e>..    </depend\n-00000a00: 656e 6379 3e0d 0a20 2020 203c 6465 7065  ency>..    <depe\n-00000a10: 6e64 656e 6379 3e0d 0a20 2020 2020 203c  ndency>..      <\n-00000a20: 6772 6f75 7049 643e 6a61 7661 782e 7773  groupId>javax.ws\n-00000a30: 2e72 733c 2f67 726f 7570 4964 3e0d 0a20  .rs</groupId>.. \n-00000a40: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n-00000a50: 3e6a 6176 6178 2e77 732e 7273 2d61 7069  >javax.ws.rs-api\n-00000a60: 3c2f 6172 7469 6661 6374 4964 3e0d 0a20  </artifactId>.. \n-00000a70: 2020 2020 203c 7363 6f70 653e 7465 7374       <scope>test\n-00000a80: 3c2f 7363 6f70 653e 0d0a 2020 2020 3c2f  </scope>..    </\n-00000a90: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000aa0: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-00000ab0: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n-00000ac0: 672e 7370 7269 6e67 6672 616d 6577 6f72  g.springframewor\n-00000ad0: 6b3c 2f67 726f 7570 4964 3e0d 0a20 2020  k</groupId>..   \n-00000ae0: 2020 203c 6172 7469 6661 6374 4964 3e73     <artifactId>s\n-00000af0: 7072 696e 672d 7765 623c 2f61 7274 6966  pring-web</artif\n-00000b00: 6163 7449 643e 0d0a 2020 2020 2020 3c73  actId>..      <s\n-00000b10: 636f 7065 3e74 6573 743c 2f73 636f 7065  cope>test</scope\n-00000b20: 3e0d 0a20 2020 203c 2f64 6570 656e 6465  >..    </depende\n-00000b30: 6e63 793e 0d0a 2020 2020 3c64 6570 656e  ncy>..    <depen\n-00000b40: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-00000b50: 726f 7570 4964 3e6f 7267 2e73 7072 696e  roupId>org.sprin\n-00000b60: 6766 7261 6d65 776f 726b 3c2f 6772 6f75  gframework</grou\n-00000b70: 7049 643e 0d0a 2020 2020 2020 3c61 7274  pId>..      <art\n-00000b80: 6966 6163 7449 643e 7370 7269 6e67 2d63  ifactId>spring-c\n-00000b90: 6f6e 7465 7874 3c2f 6172 7469 6661 6374  ontext</artifact\n-00000ba0: 4964 3e0d 0a20 2020 2020 203c 7363 6f70  Id>..      <scop\n-00000bb0: 653e 7465 7374 3c2f 7363 6f70 653e 0d0a  e>test</scope>..\n-00000bc0: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n-00000bd0: 3e0d 0a20 203c 2f64 6570 656e 6465 6e63  >..  </dependenc\n-00000be0: 6965 733e 0d0a 3c2f 7072 6f6a 6563 743e  ies>..</project>\n-00000bf0: 0d0a                                     ..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d6d 6574  factId>dubbo-met\n+00000480: 6164 6174 613c 2f61 7274 6966 6163 7449  adata</artifactI\n+00000490: 643e 0a20 2020 203c 7665 7273 696f 6e3e  d>.    <version>\n+000004a0: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+000004b0: 0a20 203c 2f70 6172 656e 743e 0a20 203c  .  </parent>.  <\n+000004c0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000004d0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000004e0: 643e 0a20 203c 6172 7469 6661 6374 4964  d>.  <artifactId\n+000004f0: 3e64 7562 626f 2d6d 6574 6164 6174 612d  >dubbo-metadata-\n+00000500: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n+00000510: 0a20 203c 7665 7273 696f 6e3e 322e 372e  .  <version>2.7.\n+00000520: 3130 3c2f 7665 7273 696f 6e3e 0a20 203c  10</version>.  <\n+00000530: 6e61 6d65 3e64 7562 626f 2d6d 6574 6164  name>dubbo-metad\n+00000540: 6174 612d 6170 693c 2f6e 616d 653e 0a20  ata-api</name>. \n+00000550: 203c 6465 7363 7269 7074 696f 6e3e 5468   <description>Th\n+00000560: 6520 6d65 7461 6461 7461 206d 6f64 756c  e metadata modul\n+00000570: 6520 6f66 2044 7562 626f 2070 726f 6a65  e of Dubbo proje\n+00000580: 6374 3c2f 6465 7363 7269 7074 696f 6e3e  ct</description>\n+00000590: 0a20 203c 6c69 6365 6e73 6573 3e0a 2020  .  <licenses>.  \n+000005a0: 2020 3c6c 6963 656e 7365 3e0a 2020 2020    <license>.    \n+000005b0: 2020 3c6e 616d 653e 4170 6163 6865 204c    <name>Apache L\n+000005c0: 6963 656e 7365 2c20 5665 7273 696f 6e20  icense, Version \n+000005d0: 322e 303c 2f6e 616d 653e 0a20 2020 2020  2.0</name>.     \n+000005e0: 203c 7572 6c3e 6874 7470 3a2f 2f77 7777   <url>http://www\n+000005f0: 2e61 7061 6368 652e 6f72 672f 6c69 6365  .apache.org/lice\n+00000600: 6e73 6573 2f4c 4943 454e 5345 2d32 2e30  nses/LICENSE-2.0\n+00000610: 3c2f 7572 6c3e 0a20 2020 2020 203c 6469  </url>.      <di\n+00000620: 7374 7269 6275 7469 6f6e 3e72 6570 6f3c  stribution>repo<\n+00000630: 2f64 6973 7472 6962 7574 696f 6e3e 0a20  /distribution>. \n+00000640: 2020 203c 2f6c 6963 656e 7365 3e0a 2020     </license>.  \n+00000650: 3c2f 6c69 6365 6e73 6573 3e0a 2020 3c64  </licenses>.  <d\n+00000660: 6570 656e 6465 6e63 6965 733e 0a20 2020  ependencies>.   \n+00000670: 203c 6465 7065 6e64 656e 6379 3e0a 2020   <dependency>.  \n+00000680: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n+00000690: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n+000006a0: 726f 7570 4964 3e0a 2020 2020 2020 3c61  roupId>.      <a\n+000006b0: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n+000006c0: 7270 632d 6170 693c 2f61 7274 6966 6163  rpc-api</artifac\n+000006d0: 7449 643e 0a20 2020 2020 203c 7665 7273  tId>.      <vers\n+000006e0: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n+000006f0: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n+00000700: 6572 7369 6f6e 3e0a 2020 2020 2020 3c6f  ersion>.      <o\n+00000710: 7074 696f 6e61 6c3e 7472 7565 3c2f 6f70  ptional>true</op\n+00000720: 7469 6f6e 616c 3e0a 2020 2020 3c2f 6465  tional>.    </de\n+00000730: 7065 6e64 656e 6379 3e0a 2020 2020 3c64  pendency>.    <d\n+00000740: 6570 656e 6465 6e63 793e 0a20 2020 2020  ependency>.     \n+00000750: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000760: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000770: 7049 643e 0a20 2020 2020 203c 6172 7469  pId>.      <arti\n+00000780: 6661 6374 4964 3e64 7562 626f 2d63 6c75  factId>dubbo-clu\n+00000790: 7374 6572 3c2f 6172 7469 6661 6374 4964  ster</artifactId\n+000007a0: 3e0a 2020 2020 2020 3c76 6572 7369 6f6e  >.      <version\n+000007b0: 3e24 7b70 726f 6a65 6374 2e70 6172 656e  >${project.paren\n+000007c0: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n+000007d0: 696f 6e3e 0a20 2020 203c 2f64 6570 656e  ion>.    </depen\n+000007e0: 6465 6e63 793e 0a20 2020 203c 6465 7065  dency>.    <depe\n+000007f0: 6e64 656e 6379 3e0a 2020 2020 2020 3c67  ndency>.      <g\n+00000800: 726f 7570 4964 3e63 6f6d 2e67 6f6f 676c  roupId>com.googl\n+00000810: 652e 636f 6465 2e67 736f 6e3c 2f67 726f  e.code.gson</gro\n+00000820: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000830: 6966 6163 7449 643e 6773 6f6e 3c2f 6172  ifactId>gson</ar\n+00000840: 7469 6661 6374 4964 3e0a 2020 2020 3c2f  tifactId>.    </\n+00000850: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000860: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+00000870: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000880: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000890: 6f75 7049 643e 0a20 2020 2020 203c 6172  oupId>.      <ar\n+000008a0: 7469 6661 6374 4964 3e64 7562 626f 2d63  tifactId>dubbo-c\n+000008b0: 6f6e 6669 6763 656e 7465 722d 7a6f 6f6b  onfigcenter-zook\n+000008c0: 6565 7065 723c 2f61 7274 6966 6163 7449  eeper</artifactI\n+000008d0: 643e 0a20 2020 2020 203c 7665 7273 696f  d>.      <versio\n+000008e0: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n+000008f0: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n+00000900: 7369 6f6e 3e0a 2020 2020 2020 3c73 636f  sion>.      <sco\n+00000910: 7065 3e74 6573 743c 2f73 636f 7065 3e0a  pe>test</scope>.\n+00000920: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+00000930: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000940: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+00000950: 643e 6f72 672e 6170 6163 6865 2e63 7572  d>org.apache.cur\n+00000960: 6174 6f72 3c2f 6772 6f75 7049 643e 0a20  ator</groupId>. \n+00000970: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n+00000980: 3e63 7572 6174 6f72 2d74 6573 743c 2f61  >curator-test</a\n+00000990: 7274 6966 6163 7449 643e 0a20 2020 2020  rtifactId>.     \n+000009a0: 203c 7363 6f70 653e 7465 7374 3c2f 7363   <scope>test</sc\n+000009b0: 6f70 653e 0a20 2020 203c 2f64 6570 656e  ope>.    </depen\n+000009c0: 6465 6e63 793e 0a20 2020 203c 6465 7065  dency>.    <depe\n+000009d0: 6e64 656e 6379 3e0a 2020 2020 2020 3c67  ndency>.      <g\n+000009e0: 726f 7570 4964 3e6a 6176 6178 2e77 732e  roupId>javax.ws.\n+000009f0: 7273 3c2f 6772 6f75 7049 643e 0a20 2020  rs</groupId>.   \n+00000a00: 2020 203c 6172 7469 6661 6374 4964 3e6a     <artifactId>j\n+00000a10: 6176 6178 2e77 732e 7273 2d61 7069 3c2f  avax.ws.rs-api</\n+00000a20: 6172 7469 6661 6374 4964 3e0a 2020 2020  artifactId>.    \n+00000a30: 2020 3c73 636f 7065 3e74 6573 743c 2f73    <scope>test</s\n+00000a40: 636f 7065 3e0a 2020 2020 3c2f 6465 7065  cope>.    </depe\n+00000a50: 6e64 656e 6379 3e0a 2020 2020 3c64 6570  ndency>.    <dep\n+00000a60: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+00000a70: 6772 6f75 7049 643e 6f72 672e 7370 7269  groupId>org.spri\n+00000a80: 6e67 6672 616d 6577 6f72 6b3c 2f67 726f  ngframework</gro\n+00000a90: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000aa0: 6966 6163 7449 643e 7370 7269 6e67 2d77  ifactId>spring-w\n+00000ab0: 6562 3c2f 6172 7469 6661 6374 4964 3e0a  eb</artifactId>.\n+00000ac0: 2020 2020 2020 3c73 636f 7065 3e74 6573        <scope>tes\n+00000ad0: 743c 2f73 636f 7065 3e0a 2020 2020 3c2f  t</scope>.    </\n+00000ae0: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000af0: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+00000b00: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000b10: 7370 7269 6e67 6672 616d 6577 6f72 6b3c  springframework<\n+00000b20: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+00000b30: 3c61 7274 6966 6163 7449 643e 7370 7269  <artifactId>spri\n+00000b40: 6e67 2d63 6f6e 7465 7874 3c2f 6172 7469  ng-context</arti\n+00000b50: 6661 6374 4964 3e0a 2020 2020 2020 3c73  factId>.      <s\n+00000b60: 636f 7065 3e74 6573 743c 2f73 636f 7065  cope>test</scope\n+00000b70: 3e0a 2020 2020 3c2f 6465 7065 6e64 656e  >.    </dependen\n+00000b80: 6379 3e0a 2020 3c2f 6465 7065 6e64 656e  cy>.  </dependen\n+00000b90: 6369 6573 3e0a 3c2f 7072 6f6a 6563 743e  cies>.</project>\n+00000ba0: 0a                                       .\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-metadata-report-zookeeper/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-metadata-report-zookeeper/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,135 +1,132 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d6d 6574 6164 6174 613c 2f61 7274  bo-metadata</art\n-000004a0: 6966 6163 7449 643e 0d0a 2020 2020 3c76  ifactId>..    <v\n-000004b0: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-000004c0: 6572 7369 6f6e 3e0d 0a20 203c 2f70 6172  ersion>..  </par\n-000004d0: 656e 743e 0d0a 2020 3c67 726f 7570 4964  ent>..  <groupId\n-000004e0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000004f0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 203c  o</groupId>..  <\n-00000500: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000510: 2d6d 6574 6164 6174 612d 7265 706f 7274  -metadata-report\n-00000520: 2d7a 6f6f 6b65 6570 6572 3c2f 6172 7469  -zookeeper</arti\n-00000530: 6661 6374 4964 3e0d 0a20 203c 7665 7273  factId>..  <vers\n-00000540: 696f 6e3e 322e 372e 3130 3c2f 7665 7273  ion>2.7.10</vers\n-00000550: 696f 6e3e 0d0a 2020 3c6c 6963 656e 7365  ion>..  <license\n-00000560: 733e 0d0a 2020 2020 3c6c 6963 656e 7365  s>..    <license\n-00000570: 3e0d 0a20 2020 2020 203c 6e61 6d65 3e41  >..      <name>A\n-00000580: 7061 6368 6520 4c69 6365 6e73 652c 2056  pache License, V\n-00000590: 6572 7369 6f6e 2032 2e30 3c2f 6e61 6d65  ersion 2.0</name\n-000005a0: 3e0d 0a20 2020 2020 203c 7572 6c3e 6874  >..      <url>ht\n-000005b0: 7470 3a2f 2f77 7777 2e61 7061 6368 652e  tp://www.apache.\n-000005c0: 6f72 672f 6c69 6365 6e73 6573 2f4c 4943  org/licenses/LIC\n-000005d0: 454e 5345 2d32 2e30 3c2f 7572 6c3e 0d0a  ENSE-2.0</url>..\n-000005e0: 2020 2020 2020 3c64 6973 7472 6962 7574        <distribut\n-000005f0: 696f 6e3e 7265 706f 3c2f 6469 7374 7269  ion>repo</distri\n-00000600: 6275 7469 6f6e 3e0d 0a20 2020 203c 2f6c  bution>..    </l\n-00000610: 6963 656e 7365 3e0d 0a20 203c 2f6c 6963  icense>..  </lic\n-00000620: 656e 7365 733e 0d0a 2020 3c64 6570 656e  enses>..  <depen\n-00000630: 6465 6e63 6965 733e 0d0a 2020 2020 3c64  dencies>..    <d\n-00000640: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000650: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n-00000660: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n-00000670: 7570 4964 3e0d 0a20 2020 2020 203c 6172  upId>..      <ar\n-00000680: 7469 6661 6374 4964 3e64 7562 626f 2d6d  tifactId>dubbo-m\n-00000690: 6574 6164 6174 612d 6170 693c 2f61 7274  etadata-api</art\n-000006a0: 6966 6163 7449 643e 0d0a 2020 2020 2020  ifactId>..      \n-000006b0: 3c76 6572 7369 6f6e 3e24 7b70 726f 6a65  <version>${proje\n-000006c0: 6374 2e70 6172 656e 742e 7665 7273 696f  ct.parent.versio\n-000006d0: 6e7d 3c2f 7665 7273 696f 6e3e 0d0a 2020  n}</version>..  \n-000006e0: 2020 3c2f 6465 7065 6e64 656e 6379 3e0d    </dependency>.\n-000006f0: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-00000700: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-00000710: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n-00000720: 626f 3c2f 6772 6f75 7049 643e 0d0a 2020  bo</groupId>..  \n-00000730: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n-00000740: 6475 6262 6f2d 636f 6e66 6967 6365 6e74  dubbo-configcent\n-00000750: 6572 2d7a 6f6f 6b65 6570 6572 3c2f 6172  er-zookeeper</ar\n-00000760: 7469 6661 6374 4964 3e0d 0a20 2020 2020  tifactId>..     \n-00000770: 203c 7665 7273 696f 6e3e 247b 7072 6f6a   <version>${proj\n-00000780: 6563 742e 7061 7265 6e74 2e76 6572 7369  ect.parent.versi\n-00000790: 6f6e 7d3c 2f76 6572 7369 6f6e 3e0d 0a20  on}</version>.. \n-000007a0: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n-000007b0: 0d0a 2020 2020 3c64 6570 656e 6465 6e63  ..    <dependenc\n-000007c0: 793e 0d0a 2020 2020 2020 3c67 726f 7570  y>..      <group\n-000007d0: 4964 3e6f 7267 2e61 7061 6368 652e 6375  Id>org.apache.cu\n-000007e0: 7261 746f 723c 2f67 726f 7570 4964 3e0d  rator</groupId>.\n-000007f0: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-00000800: 4964 3e63 7572 6174 6f72 2d74 6573 743c  Id>curator-test<\n-00000810: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-00000820: 2020 2020 3c73 636f 7065 3e74 6573 743c      <scope>test<\n-00000830: 2f73 636f 7065 3e0d 0a20 2020 203c 2f64  /scope>..    </d\n-00000840: 6570 656e 6465 6e63 793e 0d0a 2020 3c2f  ependency>..  </\n-00000850: 6465 7065 6e64 656e 6369 6573 3e0d 0a3c  dependencies>..<\n-00000860: 2f70 726f 6a65 6374 3e0d 0a              /project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d6d 6574  factId>dubbo-met\n+00000480: 6164 6174 613c 2f61 7274 6966 6163 7449  adata</artifactI\n+00000490: 643e 0a20 2020 203c 7665 7273 696f 6e3e  d>.    <version>\n+000004a0: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+000004b0: 0a20 203c 2f70 6172 656e 743e 0a20 203c  .  </parent>.  <\n+000004c0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000004d0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000004e0: 643e 0a20 203c 6172 7469 6661 6374 4964  d>.  <artifactId\n+000004f0: 3e64 7562 626f 2d6d 6574 6164 6174 612d  >dubbo-metadata-\n+00000500: 7265 706f 7274 2d7a 6f6f 6b65 6570 6572  report-zookeeper\n+00000510: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+00000520: 3c76 6572 7369 6f6e 3e32 2e37 2e31 303c  <version>2.7.10<\n+00000530: 2f76 6572 7369 6f6e 3e0a 2020 3c6c 6963  /version>.  <lic\n+00000540: 656e 7365 733e 0a20 2020 203c 6c69 6365  enses>.    <lice\n+00000550: 6e73 653e 0a20 2020 2020 203c 6e61 6d65  nse>.      <name\n+00000560: 3e41 7061 6368 6520 4c69 6365 6e73 652c  >Apache License,\n+00000570: 2056 6572 7369 6f6e 2032 2e30 3c2f 6e61   Version 2.0</na\n+00000580: 6d65 3e0a 2020 2020 2020 3c75 726c 3e68  me>.      <url>h\n+00000590: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000005a0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000005b0: 4345 4e53 452d 322e 303c 2f75 726c 3e0a  CENSE-2.0</url>.\n+000005c0: 2020 2020 2020 3c64 6973 7472 6962 7574        <distribut\n+000005d0: 696f 6e3e 7265 706f 3c2f 6469 7374 7269  ion>repo</distri\n+000005e0: 6275 7469 6f6e 3e0a 2020 2020 3c2f 6c69  bution>.    </li\n+000005f0: 6365 6e73 653e 0a20 203c 2f6c 6963 656e  cense>.  </licen\n+00000600: 7365 733e 0a20 203c 6465 7065 6e64 656e  ses>.  <dependen\n+00000610: 6369 6573 3e0a 2020 2020 3c64 6570 656e  cies>.    <depen\n+00000620: 6465 6e63 793e 0a20 2020 2020 203c 6772  dency>.      <gr\n+00000630: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+00000640: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+00000650: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+00000660: 4964 3e64 7562 626f 2d6d 6574 6164 6174  Id>dubbo-metadat\n+00000670: 612d 6170 693c 2f61 7274 6966 6163 7449  a-api</artifactI\n+00000680: 643e 0a20 2020 2020 203c 7665 7273 696f  d>.      <versio\n+00000690: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n+000006a0: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n+000006b0: 7369 6f6e 3e0a 2020 2020 3c2f 6465 7065  sion>.    </depe\n+000006c0: 6e64 656e 6379 3e0a 2020 2020 3c64 6570  ndency>.    <dep\n+000006d0: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+000006e0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000006f0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+00000700: 643e 0a20 2020 2020 203c 6172 7469 6661  d>.      <artifa\n+00000710: 6374 4964 3e64 7562 626f 2d63 6f6e 6669  ctId>dubbo-confi\n+00000720: 6763 656e 7465 722d 7a6f 6f6b 6565 7065  gcenter-zookeepe\n+00000730: 723c 2f61 7274 6966 6163 7449 643e 0a20  r</artifactId>. \n+00000740: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n+00000750: 7072 6f6a 6563 742e 7061 7265 6e74 2e76  project.parent.v\n+00000760: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n+00000770: 3e0a 2020 2020 3c2f 6465 7065 6e64 656e  >.    </dependen\n+00000780: 6379 3e0a 2020 2020 3c64 6570 656e 6465  cy>.    <depende\n+00000790: 6e63 793e 0a20 2020 2020 203c 6772 6f75  ncy>.      <grou\n+000007a0: 7049 643e 6f72 672e 6170 6163 6865 2e63  pId>org.apache.c\n+000007b0: 7572 6174 6f72 3c2f 6772 6f75 7049 643e  urator</groupId>\n+000007c0: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+000007d0: 4964 3e63 7572 6174 6f72 2d74 6573 743c  Id>curator-test<\n+000007e0: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+000007f0: 2020 203c 7363 6f70 653e 7465 7374 3c2f     <scope>test</\n+00000800: 7363 6f70 653e 0a20 2020 203c 2f64 6570  scope>.    </dep\n+00000810: 656e 6465 6e63 793e 0a20 203c 2f64 6570  endency>.  </dep\n+00000820: 656e 6465 6e63 6965 733e 0a3c 2f70 726f  endencies>.</pro\n+00000830: 6a65 6374 3e0a                           ject>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-metadata-report-redis/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-metadata-report-redis/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,149 +1,146 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 202d 2d3e 0d0a 3c70  ense...  -->..<p\n-00000350: 726f 6a65 6374 2078 7369 3a73 6368 656d  roject xsi:schem\n-00000360: 614c 6f63 6174 696f 6e3d 2268 7474 703a  aLocation=\"http:\n-00000370: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n-00000380: 7267 2f50 4f4d 2f34 2e30 2e30 2068 7474  rg/POM/4.0.0 htt\n-00000390: 7073 3a2f 2f6d 6176 656e 2e61 7061 6368  ps://maven.apach\n-000003a0: 652e 6f72 672f 7873 642f 6d61 7665 6e2d  e.org/xsd/maven-\n-000003b0: 342e 302e 302e 7873 6422 2078 6d6c 6e73  4.0.0.xsd\" xmlns\n-000003c0: 3d22 6874 7470 3a2f 2f6d 6176 656e 2e61  =\"http://maven.a\n-000003d0: 7061 6368 652e 6f72 672f 504f 4d2f 342e  pache.org/POM/4.\n-000003e0: 302e 3022 0d0a 2020 2020 786d 6c6e 733a  0.0\"..    xmlns:\n-000003f0: 7873 693d 2268 7474 703a 2f2f 7777 772e  xsi=\"http://www.\n-00000400: 7733 2e6f 7267 2f32 3030 312f 584d 4c53  w3.org/2001/XMLS\n-00000410: 6368 656d 612d 696e 7374 616e 6365 223e  chema-instance\">\n-00000420: 0d0a 2020 3c6d 6f64 656c 5665 7273 696f  ..  <modelVersio\n-00000430: 6e3e 342e 302e 303c 2f6d 6f64 656c 5665  n>4.0.0</modelVe\n-00000440: 7273 696f 6e3e 0d0a 2020 3c70 6172 656e  rsion>..  <paren\n-00000450: 743e 0d0a 2020 2020 3c67 726f 7570 4964  t>..    <groupId\n-00000460: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-00000470: 6f3c 2f67 726f 7570 4964 3e0d 0a20 2020  o</groupId>..   \n-00000480: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000490: 626f 2d6d 6574 6164 6174 613c 2f61 7274  bo-metadata</art\n-000004a0: 6966 6163 7449 643e 0d0a 2020 2020 3c76  ifactId>..    <v\n-000004b0: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n-000004c0: 6572 7369 6f6e 3e0d 0a20 203c 2f70 6172  ersion>..  </par\n-000004d0: 656e 743e 0d0a 2020 3c67 726f 7570 4964  ent>..  <groupId\n-000004e0: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n-000004f0: 6f3c 2f67 726f 7570 4964 3e0d 0a20 203c  o</groupId>..  <\n-00000500: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000510: 2d6d 6574 6164 6174 612d 7265 706f 7274  -metadata-report\n-00000520: 2d72 6564 6973 3c2f 6172 7469 6661 6374  -redis</artifact\n-00000530: 4964 3e0d 0a20 203c 7665 7273 696f 6e3e  Id>..  <version>\n-00000540: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n-00000550: 0d0a 2020 3c6c 6963 656e 7365 733e 0d0a  ..  <licenses>..\n-00000560: 2020 2020 3c6c 6963 656e 7365 3e0d 0a20      <license>.. \n-00000570: 2020 2020 203c 6e61 6d65 3e41 7061 6368       <name>Apach\n-00000580: 6520 4c69 6365 6e73 652c 2056 6572 7369  e License, Versi\n-00000590: 6f6e 2032 2e30 3c2f 6e61 6d65 3e0d 0a20  on 2.0</name>.. \n-000005a0: 2020 2020 203c 7572 6c3e 6874 7470 3a2f       <url>http:/\n-000005b0: 2f77 7777 2e61 7061 6368 652e 6f72 672f  /www.apache.org/\n-000005c0: 6c69 6365 6e73 6573 2f4c 4943 454e 5345  licenses/LICENSE\n-000005d0: 2d32 2e30 3c2f 7572 6c3e 0d0a 2020 2020  -2.0</url>..    \n-000005e0: 2020 3c64 6973 7472 6962 7574 696f 6e3e    <distribution>\n-000005f0: 7265 706f 3c2f 6469 7374 7269 6275 7469  repo</distributi\n-00000600: 6f6e 3e0d 0a20 2020 203c 2f6c 6963 656e  on>..    </licen\n-00000610: 7365 3e0d 0a20 203c 2f6c 6963 656e 7365  se>..  </license\n-00000620: 733e 0d0a 2020 3c64 6570 656e 6465 6e63  s>..  <dependenc\n-00000630: 6965 733e 0d0a 2020 2020 3c64 6570 656e  ies>..    <depen\n-00000640: 6465 6e63 793e 0d0a 2020 2020 2020 3c67  dency>..      <g\n-00000650: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n-00000660: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n-00000670: 3e0d 0a20 2020 2020 203c 6172 7469 6661  >..      <artifa\n-00000680: 6374 4964 3e64 7562 626f 2d6d 6574 6164  ctId>dubbo-metad\n-00000690: 6174 612d 6170 693c 2f61 7274 6966 6163  ata-api</artifac\n-000006a0: 7449 643e 0d0a 2020 2020 2020 3c76 6572  tId>..      <ver\n-000006b0: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n-000006c0: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n-000006d0: 7665 7273 696f 6e3e 0d0a 2020 2020 3c2f  version>..    </\n-000006e0: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-000006f0: 203c 6465 7065 6e64 656e 6379 3e0d 0a20   <dependency>.. \n-00000700: 2020 2020 203c 6772 6f75 7049 643e 7265       <groupId>re\n-00000710: 6469 732e 636c 6965 6e74 733c 2f67 726f  dis.clients</gro\n-00000720: 7570 4964 3e0d 0a20 2020 2020 203c 6172  upId>..      <ar\n-00000730: 7469 6661 6374 4964 3e6a 6564 6973 3c2f  tifactId>jedis</\n-00000740: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-00000750: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-00000760: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n-00000770: 0d0a 2020 2020 2020 3c67 726f 7570 4964  ..      <groupId\n-00000780: 3e6f 7267 2e61 7061 6368 652e 6375 7261  >org.apache.cura\n-00000790: 746f 723c 2f67 726f 7570 4964 3e0d 0a20  tor</groupId>.. \n-000007a0: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n-000007b0: 3e63 7572 6174 6f72 2d74 6573 743c 2f61  >curator-test</a\n-000007c0: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-000007d0: 2020 3c73 636f 7065 3e74 6573 743c 2f73    <scope>test</s\n-000007e0: 636f 7065 3e0d 0a20 2020 203c 2f64 6570  cope>..    </dep\n-000007f0: 656e 6465 6e63 793e 0d0a 2020 2020 3c64  endency>..    <d\n-00000800: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000810: 2020 3c67 726f 7570 4964 3e63 6f6d 2e67    <groupId>com.g\n-00000820: 6974 6875 622e 6b73 7479 7263 3c2f 6772  ithub.kstyrc</gr\n-00000830: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-00000840: 7274 6966 6163 7449 643e 656d 6265 6464  rtifactId>embedd\n-00000850: 6564 2d72 6564 6973 3c2f 6172 7469 6661  ed-redis</artifa\n-00000860: 6374 4964 3e0d 0a20 2020 2020 203c 7363  ctId>..      <sc\n-00000870: 6f70 653e 7465 7374 3c2f 7363 6f70 653e  ope>test</scope>\n-00000880: 0d0a 2020 2020 3c2f 6465 7065 6e64 656e  ..    </dependen\n-00000890: 6379 3e0d 0a20 2020 203c 6465 7065 6e64  cy>..    <depend\n-000008a0: 656e 6379 3e0d 0a20 2020 2020 203c 6772  ency>..      <gr\n-000008b0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n-000008c0: 2e63 6f6d 6d6f 6e73 3c2f 6772 6f75 7049  .commons</groupI\n-000008d0: 643e 0d0a 2020 2020 2020 3c61 7274 6966  d>..      <artif\n-000008e0: 6163 7449 643e 636f 6d6d 6f6e 732d 6c61  actId>commons-la\n-000008f0: 6e67 333c 2f61 7274 6966 6163 7449 643e  ng3</artifactId>\n-00000900: 0d0a 2020 2020 2020 3c73 636f 7065 3e74  ..      <scope>t\n-00000910: 6573 743c 2f73 636f 7065 3e0d 0a20 2020  est</scope>..   \n-00000920: 203c 2f64 6570 656e 6465 6e63 793e 0d0a   </dependency>..\n-00000930: 2020 3c2f 6465 7065 6e64 656e 6369 6573    </dependencies\n-00000940: 3e0d 0a3c 2f70 726f 6a65 6374 3e0d 0a    >..</project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 202d 2d3e 0a3c 7072  cense..  -->.<pr\n+00000340: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n+00000350: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n+00000360: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n+00000370: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n+00000380: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n+00000390: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n+000003a0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n+000003b0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n+000003c0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n+000003d0: 2e30 220a 2020 2020 786d 6c6e 733a 7873  .0\".    xmlns:xs\n+000003e0: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n+000003f0: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n+00000400: 656d 612d 696e 7374 616e 6365 223e 0a20  ema-instance\">. \n+00000410: 203c 6d6f 6465 6c56 6572 7369 6f6e 3e34   <modelVersion>4\n+00000420: 2e30 2e30 3c2f 6d6f 6465 6c56 6572 7369  .0.0</modelVersi\n+00000430: 6f6e 3e0a 2020 3c70 6172 656e 743e 0a20  on>.  <parent>. \n+00000440: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n+00000450: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n+00000460: 6f75 7049 643e 0a20 2020 203c 6172 7469  oupId>.    <arti\n+00000470: 6661 6374 4964 3e64 7562 626f 2d6d 6574  factId>dubbo-met\n+00000480: 6164 6174 613c 2f61 7274 6966 6163 7449  adata</artifactI\n+00000490: 643e 0a20 2020 203c 7665 7273 696f 6e3e  d>.    <version>\n+000004a0: 322e 372e 3130 3c2f 7665 7273 696f 6e3e  2.7.10</version>\n+000004b0: 0a20 203c 2f70 6172 656e 743e 0a20 203c  .  </parent>.  <\n+000004c0: 6772 6f75 7049 643e 6f72 672e 6170 6163  groupId>org.apac\n+000004d0: 6865 2e64 7562 626f 3c2f 6772 6f75 7049  he.dubbo</groupI\n+000004e0: 643e 0a20 203c 6172 7469 6661 6374 4964  d>.  <artifactId\n+000004f0: 3e64 7562 626f 2d6d 6574 6164 6174 612d  >dubbo-metadata-\n+00000500: 7265 706f 7274 2d72 6564 6973 3c2f 6172  report-redis</ar\n+00000510: 7469 6661 6374 4964 3e0a 2020 3c76 6572  tifactId>.  <ver\n+00000520: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n+00000530: 7369 6f6e 3e0a 2020 3c6c 6963 656e 7365  sion>.  <license\n+00000540: 733e 0a20 2020 203c 6c69 6365 6e73 653e  s>.    <license>\n+00000550: 0a20 2020 2020 203c 6e61 6d65 3e41 7061  .      <name>Apa\n+00000560: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000570: 7369 6f6e 2032 2e30 3c2f 6e61 6d65 3e0a  sion 2.0</name>.\n+00000580: 2020 2020 2020 3c75 726c 3e68 7474 703a        <url>http:\n+00000590: 2f2f 7777 772e 6170 6163 6865 2e6f 7267  //www.apache.org\n+000005a0: 2f6c 6963 656e 7365 732f 4c49 4345 4e53  /licenses/LICENS\n+000005b0: 452d 322e 303c 2f75 726c 3e0a 2020 2020  E-2.0</url>.    \n+000005c0: 2020 3c64 6973 7472 6962 7574 696f 6e3e    <distribution>\n+000005d0: 7265 706f 3c2f 6469 7374 7269 6275 7469  repo</distributi\n+000005e0: 6f6e 3e0a 2020 2020 3c2f 6c69 6365 6e73  on>.    </licens\n+000005f0: 653e 0a20 203c 2f6c 6963 656e 7365 733e  e>.  </licenses>\n+00000600: 0a20 203c 6465 7065 6e64 656e 6369 6573  .  <dependencies\n+00000610: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+00000620: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+00000630: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n+00000640: 626f 3c2f 6772 6f75 7049 643e 0a20 2020  bo</groupId>.   \n+00000650: 2020 203c 6172 7469 6661 6374 4964 3e64     <artifactId>d\n+00000660: 7562 626f 2d6d 6574 6164 6174 612d 6170  ubbo-metadata-ap\n+00000670: 693c 2f61 7274 6966 6163 7449 643e 0a20  i</artifactId>. \n+00000680: 2020 2020 203c 7665 7273 696f 6e3e 247b       <version>${\n+00000690: 7072 6f6a 6563 742e 7061 7265 6e74 2e76  project.parent.v\n+000006a0: 6572 7369 6f6e 7d3c 2f76 6572 7369 6f6e  ersion}</version\n+000006b0: 3e0a 2020 2020 3c2f 6465 7065 6e64 656e  >.    </dependen\n+000006c0: 6379 3e0a 2020 2020 3c64 6570 656e 6465  cy>.    <depende\n+000006d0: 6e63 793e 0a20 2020 2020 203c 6772 6f75  ncy>.      <grou\n+000006e0: 7049 643e 7265 6469 732e 636c 6965 6e74  pId>redis.client\n+000006f0: 733c 2f67 726f 7570 4964 3e0a 2020 2020  s</groupId>.    \n+00000700: 2020 3c61 7274 6966 6163 7449 643e 6a65    <artifactId>je\n+00000710: 6469 733c 2f61 7274 6966 6163 7449 643e  dis</artifactId>\n+00000720: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+00000730: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+00000740: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+00000750: 4964 3e6f 7267 2e61 7061 6368 652e 6375  Id>org.apache.cu\n+00000760: 7261 746f 723c 2f67 726f 7570 4964 3e0a  rator</groupId>.\n+00000770: 2020 2020 2020 3c61 7274 6966 6163 7449        <artifactI\n+00000780: 643e 6375 7261 746f 722d 7465 7374 3c2f  d>curator-test</\n+00000790: 6172 7469 6661 6374 4964 3e0a 2020 2020  artifactId>.    \n+000007a0: 2020 3c73 636f 7065 3e74 6573 743c 2f73    <scope>test</s\n+000007b0: 636f 7065 3e0a 2020 2020 3c2f 6465 7065  cope>.    </depe\n+000007c0: 6e64 656e 6379 3e0a 2020 2020 3c64 6570  ndency>.    <dep\n+000007d0: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+000007e0: 6772 6f75 7049 643e 636f 6d2e 6769 7468  groupId>com.gith\n+000007f0: 7562 2e6b 7374 7972 633c 2f67 726f 7570  ub.kstyrc</group\n+00000800: 4964 3e0a 2020 2020 2020 3c61 7274 6966  Id>.      <artif\n+00000810: 6163 7449 643e 656d 6265 6464 6564 2d72  actId>embedded-r\n+00000820: 6564 6973 3c2f 6172 7469 6661 6374 4964  edis</artifactId\n+00000830: 3e0a 2020 2020 2020 3c73 636f 7065 3e74  >.      <scope>t\n+00000840: 6573 743c 2f73 636f 7065 3e0a 2020 2020  est</scope>.    \n+00000850: 3c2f 6465 7065 6e64 656e 6379 3e0a 2020  </dependency>.  \n+00000860: 2020 3c64 6570 656e 6465 6e63 793e 0a20    <dependency>. \n+00000870: 2020 2020 203c 6772 6f75 7049 643e 6f72       <groupId>or\n+00000880: 672e 6170 6163 6865 2e63 6f6d 6d6f 6e73  g.apache.commons\n+00000890: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+000008a0: 203c 6172 7469 6661 6374 4964 3e63 6f6d   <artifactId>com\n+000008b0: 6d6f 6e73 2d6c 616e 6733 3c2f 6172 7469  mons-lang3</arti\n+000008c0: 6661 6374 4964 3e0a 2020 2020 2020 3c73  factId>.      <s\n+000008d0: 636f 7065 3e74 6573 743c 2f73 636f 7065  cope>test</scope\n+000008e0: 3e0a 2020 2020 3c2f 6465 7065 6e64 656e  >.    </dependen\n+000008f0: 6379 3e0a 2020 3c2f 6465 7065 6e64 656e  cy>.  </dependen\n+00000900: 6369 6573 3e0a 3c2f 7072 6f6a 6563 743e  cies>.</project>\n+00000910: 0a                                       .\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-metadata-report-consul/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-metadata-report-consul/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,135 +1,131 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 7e20 4c69 6365 6e73 6564 2074 6f20 7468  ~ Licensed to th\n-00000040: 6520 4170 6163 6865 2053 6f66 7477 6172  e Apache Softwar\n-00000050: 6520 466f 756e 6461 7469 6f6e 2028 4153  e Foundation (AS\n-00000060: 4629 2075 6e64 6572 206f 6e65 206f 7220  F) under one or \n-00000070: 6d6f 7265 0d0a 2020 7e20 636f 6e74 7269  more..  ~ contri\n-00000080: 6275 746f 7220 6c69 6365 6e73 6520 6167  butor license ag\n-00000090: 7265 656d 656e 7473 2e20 2053 6565 2074  reements.  See t\n-000000a0: 6865 204e 4f54 4943 4520 6669 6c65 2064  he NOTICE file d\n-000000b0: 6973 7472 6962 7574 6564 2077 6974 680d  istributed with.\n-000000c0: 0a20 207e 2074 6869 7320 776f 726b 2066  .  ~ this work f\n-000000d0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n-000000e0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n-000000f0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n-00000100: 6e65 7273 6869 702e 0d0a 2020 7e20 5468  nership...  ~ Th\n-00000110: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000120: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000130: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000140: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000150: 6e20 322e 300d 0a20 207e 2028 7468 6520  n 2.0..  ~ (the \n-00000160: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n-00000170: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n-00000180: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n-00000190: 636f 6d70 6c69 616e 6365 2077 6974 680d  compliance with.\n-000001a0: 0a20 207e 2074 6865 204c 6963 656e 7365  .  ~ the License\n-000001b0: 2e20 2059 6f75 206d 6179 206f 6274 6169  .  You may obtai\n-000001c0: 6e20 6120 636f 7079 206f 6620 7468 6520  n a copy of the \n-000001d0: 4c69 6365 6e73 6520 6174 0d0a 2020 7e0d  License at..  ~.\n-000001e0: 0a20 207e 2020 2020 2068 7474 703a 2f2f  .  ~     http://\n-000001f0: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n-00000200: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n-00000210: 322e 300d 0a20 207e 0d0a 2020 7e20 556e  2.0..  ~..  ~ Un\n-00000220: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n-00000230: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n-00000240: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n-00000250: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n-00000260: 650d 0a20 207e 2064 6973 7472 6962 7574  e..  ~ distribut\n-00000270: 6564 2075 6e64 6572 2074 6865 204c 6963  ed under the Lic\n-00000280: 656e 7365 2069 7320 6469 7374 7269 6275  ense is distribu\n-00000290: 7465 6420 6f6e 2061 6e20 2241 5320 4953  ted on an \"AS IS\n-000002a0: 2220 4241 5349 532c 0d0a 2020 7e20 5749  \" BASIS,..  ~ WI\n-000002b0: 5448 4f55 5420 5741 5252 414e 5449 4553  THOUT WARRANTIES\n-000002c0: 204f 5220 434f 4e44 4954 494f 4e53 204f   OR CONDITIONS O\n-000002d0: 4620 414e 5920 4b49 4e44 2c20 6569 7468  F ANY KIND, eith\n-000002e0: 6572 2065 7870 7265 7373 206f 7220 696d  er express or im\n-000002f0: 706c 6965 642e 0d0a 2020 7e20 5365 6520  plied...  ~ See \n-00000300: 7468 6520 4c69 6365 6e73 6520 666f 7220  the License for \n-00000310: 7468 6520 7370 6563 6966 6963 206c 616e  the specific lan\n-00000320: 6775 6167 6520 676f 7665 726e 696e 6720  guage governing \n-00000330: 7065 726d 6973 7369 6f6e 7320 616e 640d  permissions and.\n-00000340: 0a20 207e 206c 696d 6974 6174 696f 6e73  .  ~ limitations\n-00000350: 2075 6e64 6572 2074 6865 204c 6963 656e   under the Licen\n-00000360: 7365 2e0d 0a20 202d 2d3e 0d0a 3c70 726f  se...  -->..<pro\n-00000370: 6a65 6374 2078 7369 3a73 6368 656d 614c  ject xsi:schemaL\n-00000380: 6f63 6174 696f 6e3d 2268 7474 703a 2f2f  ocation=\"http://\n-00000390: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003a0: 2f50 4f4d 2f34 2e30 2e30 2068 7474 7073  /POM/4.0.0 https\n-000003b0: 3a2f 2f6d 6176 656e 2e61 7061 6368 652e  ://maven.apache.\n-000003c0: 6f72 672f 7873 642f 6d61 7665 6e2d 342e  org/xsd/maven-4.\n-000003d0: 302e 302e 7873 6422 2078 6d6c 6e73 3d22  0.0.xsd\" xmlns=\"\n-000003e0: 6874 7470 3a2f 2f6d 6176 656e 2e61 7061  http://maven.apa\n-000003f0: 6368 652e 6f72 672f 504f 4d2f 342e 302e  che.org/POM/4.0.\n-00000400: 3022 0d0a 2020 2020 786d 6c6e 733a 7873  0\"..    xmlns:xs\n-00000410: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n-00000420: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n-00000430: 656d 612d 696e 7374 616e 6365 223e 0d0a  ema-instance\">..\n-00000440: 2020 3c6d 6f64 656c 5665 7273 696f 6e3e    <modelVersion>\n-00000450: 342e 302e 303c 2f6d 6f64 656c 5665 7273  4.0.0</modelVers\n-00000460: 696f 6e3e 0d0a 2020 3c70 6172 656e 743e  ion>..  <parent>\n-00000470: 0d0a 2020 2020 3c67 726f 7570 4964 3e6f  ..    <groupId>o\n-00000480: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000490: 2f67 726f 7570 4964 3e0d 0a20 2020 203c  /groupId>..    <\n-000004a0: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-000004b0: 2d6d 6574 6164 6174 613c 2f61 7274 6966  -metadata</artif\n-000004c0: 6163 7449 643e 0d0a 2020 2020 3c76 6572  actId>..    <ver\n-000004d0: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n-000004e0: 7369 6f6e 3e0d 0a20 203c 2f70 6172 656e  sion>..  </paren\n-000004f0: 743e 0d0a 2020 3c67 726f 7570 4964 3e6f  t>..  <groupId>o\n-00000500: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000510: 2f67 726f 7570 4964 3e0d 0a20 203c 6172  /groupId>..  <ar\n-00000520: 7469 6661 6374 4964 3e64 7562 626f 2d6d  tifactId>dubbo-m\n-00000530: 6574 6164 6174 612d 7265 706f 7274 2d63  etadata-report-c\n-00000540: 6f6e 7375 6c3c 2f61 7274 6966 6163 7449  onsul</artifactI\n-00000550: 643e 0d0a 2020 3c76 6572 7369 6f6e 3e32  d>..  <version>2\n-00000560: 2e37 2e31 303c 2f76 6572 7369 6f6e 3e0d  .7.10</version>.\n-00000570: 0a20 203c 6c69 6365 6e73 6573 3e0d 0a20  .  <licenses>.. \n-00000580: 2020 203c 6c69 6365 6e73 653e 0d0a 2020     <license>..  \n-00000590: 2020 2020 3c6e 616d 653e 4170 6163 6865      <name>Apache\n-000005a0: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-000005b0: 6e20 322e 303c 2f6e 616d 653e 0d0a 2020  n 2.0</name>..  \n-000005c0: 2020 2020 3c75 726c 3e68 7474 703a 2f2f      <url>http://\n-000005d0: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n-000005e0: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n-000005f0: 322e 303c 2f75 726c 3e0d 0a20 2020 2020  2.0</url>..     \n-00000600: 203c 6469 7374 7269 6275 7469 6f6e 3e72   <distribution>r\n-00000610: 6570 6f3c 2f64 6973 7472 6962 7574 696f  epo</distributio\n-00000620: 6e3e 0d0a 2020 2020 3c2f 6c69 6365 6e73  n>..    </licens\n-00000630: 653e 0d0a 2020 3c2f 6c69 6365 6e73 6573  e>..  </licenses\n-00000640: 3e0d 0a20 203c 6465 7065 6e64 656e 6369  >..  <dependenci\n-00000650: 6573 3e0d 0a20 2020 203c 6465 7065 6e64  es>..    <depend\n-00000660: 656e 6379 3e0d 0a20 2020 2020 203c 6772  ency>..      <gr\n-00000670: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n-00000680: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n-00000690: 0d0a 2020 2020 2020 3c61 7274 6966 6163  ..      <artifac\n-000006a0: 7449 643e 6475 6262 6f2d 6d65 7461 6461  tId>dubbo-metada\n-000006b0: 7461 2d61 7069 3c2f 6172 7469 6661 6374  ta-api</artifact\n-000006c0: 4964 3e0d 0a20 2020 2020 203c 7665 7273  Id>..      <vers\n-000006d0: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n-000006e0: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n-000006f0: 6572 7369 6f6e 3e0d 0a20 2020 203c 2f64  ersion>..    </d\n-00000700: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-00000710: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-00000720: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n-00000730: 2e61 7061 6368 652e 6475 6262 6f3c 2f67  .apache.dubbo</g\n-00000740: 726f 7570 4964 3e0d 0a20 2020 2020 203c  roupId>..      <\n-00000750: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-00000760: 2d63 6f6e 6669 6763 656e 7465 722d 636f  -configcenter-co\n-00000770: 6e73 756c 3c2f 6172 7469 6661 6374 4964  nsul</artifactId\n-00000780: 3e0d 0a20 2020 2020 203c 7665 7273 696f  >..      <versio\n-00000790: 6e3e 247b 7072 6f6a 6563 742e 7061 7265  n>${project.pare\n-000007a0: 6e74 2e76 6572 7369 6f6e 7d3c 2f76 6572  nt.version}</ver\n-000007b0: 7369 6f6e 3e0d 0a20 2020 203c 2f64 6570  sion>..    </dep\n-000007c0: 656e 6465 6e63 793e 0d0a 2020 2020 3c64  endency>..    <d\n-000007d0: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-000007e0: 2020 3c67 726f 7570 4964 3e63 6f6d 2e65    <groupId>com.e\n-000007f0: 6377 6964 2e63 6f6e 7375 6c3c 2f67 726f  cwid.consul</gro\n-00000800: 7570 4964 3e0d 0a20 2020 2020 203c 6172  upId>..      <ar\n-00000810: 7469 6661 6374 4964 3e63 6f6e 7375 6c2d  tifactId>consul-\n-00000820: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n-00000830: 0d0a 2020 2020 3c2f 6465 7065 6e64 656e  ..    </dependen\n-00000840: 6379 3e0d 0a20 203c 2f64 6570 656e 6465  cy>..  </depende\n-00000850: 6e63 6965 733e 0d0a 3c2f 7072 6f6a 6563  ncies>..</projec\n-00000860: 743e 0d0a                                t>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 7e20  F-8\"?>.<!--.  ~ \n+00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n+00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n+00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n+00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n+00000070: 7265 0a20 207e 2063 6f6e 7472 6962 7574  re.  ~ contribut\n+00000080: 6f72 206c 6963 656e 7365 2061 6772 6565  or license agree\n+00000090: 6d65 6e74 732e 2020 5365 6520 7468 6520  ments.  See the \n+000000a0: 4e4f 5449 4345 2066 696c 6520 6469 7374  NOTICE file dist\n+000000b0: 7269 6275 7465 6420 7769 7468 0a20 207e  ributed with.  ~\n+000000c0: 2074 6869 7320 776f 726b 2066 6f72 2061   this work for a\n+000000d0: 6464 6974 696f 6e61 6c20 696e 666f 726d  dditional inform\n+000000e0: 6174 696f 6e20 7265 6761 7264 696e 6720  ation regarding \n+000000f0: 636f 7079 7269 6768 7420 6f77 6e65 7273  copyright owners\n+00000100: 6869 702e 0a20 207e 2054 6865 2041 5346  hip..  ~ The ASF\n+00000110: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000120: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000130: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000140: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000150: 0a20 207e 2028 7468 6520 224c 6963 656e  .  ~ (the \"Licen\n+00000160: 7365 2229 3b20 796f 7520 6d61 7920 6e6f  se\"); you may no\n+00000170: 7420 7573 6520 7468 6973 2066 696c 6520  t use this file \n+00000180: 6578 6365 7074 2069 6e20 636f 6d70 6c69  except in compli\n+00000190: 616e 6365 2077 6974 680a 2020 7e20 7468  ance with.  ~ th\n+000001a0: 6520 4c69 6365 6e73 652e 2020 596f 7520  e License.  You \n+000001b0: 6d61 7920 6f62 7461 696e 2061 2063 6f70  may obtain a cop\n+000001c0: 7920 6f66 2074 6865 204c 6963 656e 7365  y of the License\n+000001d0: 2061 740a 2020 7e0a 2020 7e20 2020 2020   at.  ~.  ~     \n+000001e0: 6874 7470 3a2f 2f77 7777 2e61 7061 6368  http://www.apach\n+000001f0: 652e 6f72 672f 6c69 6365 6e73 6573 2f4c  e.org/licenses/L\n+00000200: 4943 454e 5345 2d32 2e30 0a20 207e 0a20  ICENSE-2.0.  ~. \n+00000210: 207e 2055 6e6c 6573 7320 7265 7175 6972   ~ Unless requir\n+00000220: 6564 2062 7920 6170 706c 6963 6162 6c65  ed by applicable\n+00000230: 206c 6177 206f 7220 6167 7265 6564 2074   law or agreed t\n+00000240: 6f20 696e 2077 7269 7469 6e67 2c20 736f  o in writing, so\n+00000250: 6674 7761 7265 0a20 207e 2064 6973 7472  ftware.  ~ distr\n+00000260: 6962 7574 6564 2075 6e64 6572 2074 6865  ibuted under the\n+00000270: 204c 6963 656e 7365 2069 7320 6469 7374   License is dist\n+00000280: 7269 6275 7465 6420 6f6e 2061 6e20 2241  ributed on an \"A\n+00000290: 5320 4953 2220 4241 5349 532c 0a20 207e  S IS\" BASIS,.  ~\n+000002a0: 2057 4954 484f 5554 2057 4152 5241 4e54   WITHOUT WARRANT\n+000002b0: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n+000002c0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n+000002d0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n+000002e0: 2069 6d70 6c69 6564 2e0a 2020 7e20 5365   implied..  ~ Se\n+000002f0: 6520 7468 6520 4c69 6365 6e73 6520 666f  e the License fo\n+00000300: 7220 7468 6520 7370 6563 6966 6963 206c  r the specific l\n+00000310: 616e 6775 6167 6520 676f 7665 726e 696e  anguage governin\n+00000320: 6720 7065 726d 6973 7369 6f6e 7320 616e  g permissions an\n+00000330: 640a 2020 7e20 6c69 6d69 7461 7469 6f6e  d.  ~ limitation\n+00000340: 7320 756e 6465 7220 7468 6520 4c69 6365  s under the Lice\n+00000350: 6e73 652e 0a20 202d 2d3e 0a3c 7072 6f6a  nse..  -->.<proj\n+00000360: 6563 7420 7873 693a 7363 6865 6d61 4c6f  ect xsi:schemaLo\n+00000370: 6361 7469 6f6e 3d22 6874 7470 3a2f 2f6d  cation=\"http://m\n+00000380: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+00000390: 504f 4d2f 342e 302e 3020 6874 7470 733a  POM/4.0.0 https:\n+000003a0: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n+000003b0: 7267 2f78 7364 2f6d 6176 656e 2d34 2e30  rg/xsd/maven-4.0\n+000003c0: 2e30 2e78 7364 2220 786d 6c6e 733d 2268  .0.xsd\" xmlns=\"h\n+000003d0: 7474 703a 2f2f 6d61 7665 6e2e 6170 6163  ttp://maven.apac\n+000003e0: 6865 2e6f 7267 2f50 4f4d 2f34 2e30 2e30  he.org/POM/4.0.0\n+000003f0: 220a 2020 2020 786d 6c6e 733a 7873 693d  \".    xmlns:xsi=\n+00000400: 2268 7474 703a 2f2f 7777 772e 7733 2e6f  \"http://www.w3.o\n+00000410: 7267 2f32 3030 312f 584d 4c53 6368 656d  rg/2001/XMLSchem\n+00000420: 612d 696e 7374 616e 6365 223e 0a20 203c  a-instance\">.  <\n+00000430: 6d6f 6465 6c56 6572 7369 6f6e 3e34 2e30  modelVersion>4.0\n+00000440: 2e30 3c2f 6d6f 6465 6c56 6572 7369 6f6e  .0</modelVersion\n+00000450: 3e0a 2020 3c70 6172 656e 743e 0a20 2020  >.  <parent>.   \n+00000460: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000470: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000480: 7049 643e 0a20 2020 203c 6172 7469 6661  pId>.    <artifa\n+00000490: 6374 4964 3e64 7562 626f 2d6d 6574 6164  ctId>dubbo-metad\n+000004a0: 6174 613c 2f61 7274 6966 6163 7449 643e  ata</artifactId>\n+000004b0: 0a20 2020 203c 7665 7273 696f 6e3e 322e  .    <version>2.\n+000004c0: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+000004d0: 203c 2f70 6172 656e 743e 0a20 203c 6772   </parent>.  <gr\n+000004e0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000004f0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+00000500: 0a20 203c 6172 7469 6661 6374 4964 3e64  .  <artifactId>d\n+00000510: 7562 626f 2d6d 6574 6164 6174 612d 7265  ubbo-metadata-re\n+00000520: 706f 7274 2d63 6f6e 7375 6c3c 2f61 7274  port-consul</art\n+00000530: 6966 6163 7449 643e 0a20 203c 7665 7273  ifactId>.  <vers\n+00000540: 696f 6e3e 322e 372e 3130 3c2f 7665 7273  ion>2.7.10</vers\n+00000550: 696f 6e3e 0a20 203c 6c69 6365 6e73 6573  ion>.  <licenses\n+00000560: 3e0a 2020 2020 3c6c 6963 656e 7365 3e0a  >.    <license>.\n+00000570: 2020 2020 2020 3c6e 616d 653e 4170 6163        <name>Apac\n+00000580: 6865 204c 6963 656e 7365 2c20 5665 7273  he License, Vers\n+00000590: 696f 6e20 322e 303c 2f6e 616d 653e 0a20  ion 2.0</name>. \n+000005a0: 2020 2020 203c 7572 6c3e 6874 7470 3a2f       <url>http:/\n+000005b0: 2f77 7777 2e61 7061 6368 652e 6f72 672f  /www.apache.org/\n+000005c0: 6c69 6365 6e73 6573 2f4c 4943 454e 5345  licenses/LICENSE\n+000005d0: 2d32 2e30 3c2f 7572 6c3e 0a20 2020 2020  -2.0</url>.     \n+000005e0: 203c 6469 7374 7269 6275 7469 6f6e 3e72   <distribution>r\n+000005f0: 6570 6f3c 2f64 6973 7472 6962 7574 696f  epo</distributio\n+00000600: 6e3e 0a20 2020 203c 2f6c 6963 656e 7365  n>.    </license\n+00000610: 3e0a 2020 3c2f 6c69 6365 6e73 6573 3e0a  >.  </licenses>.\n+00000620: 2020 3c64 6570 656e 6465 6e63 6965 733e    <dependencies>\n+00000630: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n+00000640: 3e0a 2020 2020 2020 3c67 726f 7570 4964  >.      <groupId\n+00000650: 3e6f 7267 2e61 7061 6368 652e 6475 6262  >org.apache.dubb\n+00000660: 6f3c 2f67 726f 7570 4964 3e0a 2020 2020  o</groupId>.    \n+00000670: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n+00000680: 6262 6f2d 6d65 7461 6461 7461 2d61 7069  bbo-metadata-api\n+00000690: 3c2f 6172 7469 6661 6374 4964 3e0a 2020  </artifactId>.  \n+000006a0: 2020 2020 3c76 6572 7369 6f6e 3e24 7b70      <version>${p\n+000006b0: 726f 6a65 6374 2e70 6172 656e 742e 7665  roject.parent.ve\n+000006c0: 7273 696f 6e7d 3c2f 7665 7273 696f 6e3e  rsion}</version>\n+000006d0: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+000006e0: 793e 0a20 2020 203c 6465 7065 6e64 656e  y>.    <dependen\n+000006f0: 6379 3e0a 2020 2020 2020 3c67 726f 7570  cy>.      <group\n+00000700: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n+00000710: 6262 6f3c 2f67 726f 7570 4964 3e0a 2020  bbo</groupId>.  \n+00000720: 2020 2020 3c61 7274 6966 6163 7449 643e      <artifactId>\n+00000730: 6475 6262 6f2d 636f 6e66 6967 6365 6e74  dubbo-configcent\n+00000740: 6572 2d63 6f6e 7375 6c3c 2f61 7274 6966  er-consul</artif\n+00000750: 6163 7449 643e 0a20 2020 2020 203c 7665  actId>.      <ve\n+00000760: 7273 696f 6e3e 247b 7072 6f6a 6563 742e  rsion>${project.\n+00000770: 7061 7265 6e74 2e76 6572 7369 6f6e 7d3c  parent.version}<\n+00000780: 2f76 6572 7369 6f6e 3e0a 2020 2020 3c2f  /version>.    </\n+00000790: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+000007a0: 3c64 6570 656e 6465 6e63 793e 0a20 2020  <dependency>.   \n+000007b0: 2020 203c 6772 6f75 7049 643e 636f 6d2e     <groupId>com.\n+000007c0: 6563 7769 642e 636f 6e73 756c 3c2f 6772  ecwid.consul</gr\n+000007d0: 6f75 7049 643e 0a20 2020 2020 203c 6172  oupId>.      <ar\n+000007e0: 7469 6661 6374 4964 3e63 6f6e 7375 6c2d  tifactId>consul-\n+000007f0: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n+00000800: 0a20 2020 203c 2f64 6570 656e 6465 6e63  .    </dependenc\n+00000810: 793e 0a20 203c 2f64 6570 656e 6465 6e63  y>.  </dependenc\n+00000820: 6965 733e 0a3c 2f70 726f 6a65 6374 3e0a  ies>.</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-metadata-report-etcd/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-metadata-report-etcd/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,167 +1,162 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 7e20 4c69 6365 6e73 6564 2074 6f20 7468  ~ Licensed to th\n-00000040: 6520 4170 6163 6865 2053 6f66 7477 6172  e Apache Softwar\n-00000050: 6520 466f 756e 6461 7469 6f6e 2028 4153  e Foundation (AS\n-00000060: 4629 2075 6e64 6572 206f 6e65 206f 7220  F) under one or \n-00000070: 6d6f 7265 0d0a 2020 7e20 636f 6e74 7269  more..  ~ contri\n-00000080: 6275 746f 7220 6c69 6365 6e73 6520 6167  butor license ag\n-00000090: 7265 656d 656e 7473 2e20 2053 6565 2074  reements.  See t\n-000000a0: 6865 204e 4f54 4943 4520 6669 6c65 2064  he NOTICE file d\n-000000b0: 6973 7472 6962 7574 6564 2077 6974 680d  istributed with.\n-000000c0: 0a20 207e 2074 6869 7320 776f 726b 2066  .  ~ this work f\n-000000d0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n-000000e0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n-000000f0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n-00000100: 6e65 7273 6869 702e 0d0a 2020 7e20 5468  nership...  ~ Th\n-00000110: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000120: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000130: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000140: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000150: 6e20 322e 300d 0a20 207e 2028 7468 6520  n 2.0..  ~ (the \n-00000160: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n-00000170: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n-00000180: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n-00000190: 636f 6d70 6c69 616e 6365 2077 6974 680d  compliance with.\n-000001a0: 0a20 207e 2074 6865 204c 6963 656e 7365  .  ~ the License\n-000001b0: 2e20 2059 6f75 206d 6179 206f 6274 6169  .  You may obtai\n-000001c0: 6e20 6120 636f 7079 206f 6620 7468 6520  n a copy of the \n-000001d0: 4c69 6365 6e73 6520 6174 0d0a 2020 7e0d  License at..  ~.\n-000001e0: 0a20 207e 2020 2020 2068 7474 703a 2f2f  .  ~     http://\n-000001f0: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n-00000200: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n-00000210: 322e 300d 0a20 207e 0d0a 2020 7e20 556e  2.0..  ~..  ~ Un\n-00000220: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n-00000230: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n-00000240: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n-00000250: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n-00000260: 650d 0a20 207e 2064 6973 7472 6962 7574  e..  ~ distribut\n-00000270: 6564 2075 6e64 6572 2074 6865 204c 6963  ed under the Lic\n-00000280: 656e 7365 2069 7320 6469 7374 7269 6275  ense is distribu\n-00000290: 7465 6420 6f6e 2061 6e20 2241 5320 4953  ted on an \"AS IS\n-000002a0: 2220 4241 5349 532c 0d0a 2020 7e20 5749  \" BASIS,..  ~ WI\n-000002b0: 5448 4f55 5420 5741 5252 414e 5449 4553  THOUT WARRANTIES\n-000002c0: 204f 5220 434f 4e44 4954 494f 4e53 204f   OR CONDITIONS O\n-000002d0: 4620 414e 5920 4b49 4e44 2c20 6569 7468  F ANY KIND, eith\n-000002e0: 6572 2065 7870 7265 7373 206f 7220 696d  er express or im\n-000002f0: 706c 6965 642e 0d0a 2020 7e20 5365 6520  plied...  ~ See \n-00000300: 7468 6520 4c69 6365 6e73 6520 666f 7220  the License for \n-00000310: 7468 6520 7370 6563 6966 6963 206c 616e  the specific lan\n-00000320: 6775 6167 6520 676f 7665 726e 696e 6720  guage governing \n-00000330: 7065 726d 6973 7369 6f6e 7320 616e 640d  permissions and.\n-00000340: 0a20 207e 206c 696d 6974 6174 696f 6e73  .  ~ limitations\n-00000350: 2075 6e64 6572 2074 6865 204c 6963 656e   under the Licen\n-00000360: 7365 2e0d 0a20 202d 2d3e 0d0a 3c70 726f  se...  -->..<pro\n-00000370: 6a65 6374 2078 7369 3a73 6368 656d 614c  ject xsi:schemaL\n-00000380: 6f63 6174 696f 6e3d 2268 7474 703a 2f2f  ocation=\"http://\n-00000390: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003a0: 2f50 4f4d 2f34 2e30 2e30 2068 7474 7073  /POM/4.0.0 https\n-000003b0: 3a2f 2f6d 6176 656e 2e61 7061 6368 652e  ://maven.apache.\n-000003c0: 6f72 672f 7873 642f 6d61 7665 6e2d 342e  org/xsd/maven-4.\n-000003d0: 302e 302e 7873 6422 2078 6d6c 6e73 3d22  0.0.xsd\" xmlns=\"\n-000003e0: 6874 7470 3a2f 2f6d 6176 656e 2e61 7061  http://maven.apa\n-000003f0: 6368 652e 6f72 672f 504f 4d2f 342e 302e  che.org/POM/4.0.\n-00000400: 3022 0d0a 2020 2020 786d 6c6e 733a 7873  0\"..    xmlns:xs\n-00000410: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n-00000420: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n-00000430: 656d 612d 696e 7374 616e 6365 223e 0d0a  ema-instance\">..\n-00000440: 2020 3c6d 6f64 656c 5665 7273 696f 6e3e    <modelVersion>\n-00000450: 342e 302e 303c 2f6d 6f64 656c 5665 7273  4.0.0</modelVers\n-00000460: 696f 6e3e 0d0a 2020 3c70 6172 656e 743e  ion>..  <parent>\n-00000470: 0d0a 2020 2020 3c67 726f 7570 4964 3e6f  ..    <groupId>o\n-00000480: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000490: 2f67 726f 7570 4964 3e0d 0a20 2020 203c  /groupId>..    <\n-000004a0: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-000004b0: 2d6d 6574 6164 6174 613c 2f61 7274 6966  -metadata</artif\n-000004c0: 6163 7449 643e 0d0a 2020 2020 3c76 6572  actId>..    <ver\n-000004d0: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n-000004e0: 7369 6f6e 3e0d 0a20 203c 2f70 6172 656e  sion>..  </paren\n-000004f0: 743e 0d0a 2020 3c67 726f 7570 4964 3e6f  t>..  <groupId>o\n-00000500: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000510: 2f67 726f 7570 4964 3e0d 0a20 203c 6172  /groupId>..  <ar\n-00000520: 7469 6661 6374 4964 3e64 7562 626f 2d6d  tifactId>dubbo-m\n-00000530: 6574 6164 6174 612d 7265 706f 7274 2d65  etadata-report-e\n-00000540: 7463 643c 2f61 7274 6966 6163 7449 643e  tcd</artifactId>\n-00000550: 0d0a 2020 3c76 6572 7369 6f6e 3e32 2e37  ..  <version>2.7\n-00000560: 2e31 303c 2f76 6572 7369 6f6e 3e0d 0a20  .10</version>.. \n-00000570: 203c 6c69 6365 6e73 6573 3e0d 0a20 2020   <licenses>..   \n-00000580: 203c 6c69 6365 6e73 653e 0d0a 2020 2020   <license>..    \n-00000590: 2020 3c6e 616d 653e 4170 6163 6865 204c    <name>Apache L\n-000005a0: 6963 656e 7365 2c20 5665 7273 696f 6e20  icense, Version \n-000005b0: 322e 303c 2f6e 616d 653e 0d0a 2020 2020  2.0</name>..    \n-000005c0: 2020 3c75 726c 3e68 7474 703a 2f2f 7777    <url>http://ww\n-000005d0: 772e 6170 6163 6865 2e6f 7267 2f6c 6963  w.apache.org/lic\n-000005e0: 656e 7365 732f 4c49 4345 4e53 452d 322e  enses/LICENSE-2.\n-000005f0: 303c 2f75 726c 3e0d 0a20 2020 2020 203c  0</url>..      <\n-00000600: 6469 7374 7269 6275 7469 6f6e 3e72 6570  distribution>rep\n-00000610: 6f3c 2f64 6973 7472 6962 7574 696f 6e3e  o</distribution>\n-00000620: 0d0a 2020 2020 3c2f 6c69 6365 6e73 653e  ..    </license>\n-00000630: 0d0a 2020 3c2f 6c69 6365 6e73 6573 3e0d  ..  </licenses>.\n-00000640: 0a20 203c 7072 6f70 6572 7469 6573 3e0d  .  <properties>.\n-00000650: 0a20 2020 203c 736b 6970 496e 7465 6772  .    <skipIntegr\n-00000660: 6174 696f 6e54 6573 7473 3e74 7275 653c  ationTests>true<\n-00000670: 2f73 6b69 7049 6e74 6567 7261 7469 6f6e  /skipIntegration\n-00000680: 5465 7374 733e 0d0a 2020 3c2f 7072 6f70  Tests>..  </prop\n-00000690: 6572 7469 6573 3e0d 0a20 203c 6465 7065  erties>..  <depe\n-000006a0: 6e64 656e 6369 6573 3e0d 0a20 2020 203c  ndencies>..    <\n-000006b0: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-000006c0: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n-000006d0: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-000006e0: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-000006f0: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n-00000700: 6d65 7461 6461 7461 2d61 7069 3c2f 6172  metadata-api</ar\n-00000710: 7469 6661 6374 4964 3e0d 0a20 2020 2020  tifactId>..     \n-00000720: 203c 7665 7273 696f 6e3e 247b 7072 6f6a   <version>${proj\n-00000730: 6563 742e 7061 7265 6e74 2e76 6572 7369  ect.parent.versi\n-00000740: 6f6e 7d3c 2f76 6572 7369 6f6e 3e0d 0a20  on}</version>.. \n-00000750: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n-00000760: 0d0a 2020 2020 3c64 6570 656e 6465 6e63  ..    <dependenc\n-00000770: 793e 0d0a 2020 2020 2020 3c67 726f 7570  y>..      <group\n-00000780: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n-00000790: 6262 6f3c 2f67 726f 7570 4964 3e0d 0a20  bbo</groupId>.. \n-000007a0: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n-000007b0: 3e64 7562 626f 2d72 656d 6f74 696e 672d  >dubbo-remoting-\n-000007c0: 6574 6364 333c 2f61 7274 6966 6163 7449  etcd3</artifactI\n-000007d0: 643e 0d0a 2020 2020 2020 3c76 6572 7369  d>..      <versi\n-000007e0: 6f6e 3e24 7b70 726f 6a65 6374 2e70 6172  on>${project.par\n-000007f0: 656e 742e 7665 7273 696f 6e7d 3c2f 7665  ent.version}</ve\n-00000800: 7273 696f 6e3e 0d0a 2020 2020 3c2f 6465  rsion>..    </de\n-00000810: 7065 6e64 656e 6379 3e0d 0a20 2020 203c  pendency>..    <\n-00000820: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000830: 2020 203c 6772 6f75 7049 643e 696f 2e65     <groupId>io.e\n-00000840: 7463 643c 2f67 726f 7570 4964 3e0d 0a20  tcd</groupId>.. \n-00000850: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n-00000860: 3e6a 6574 6364 2d6c 6175 6e63 6865 723c  >jetcd-launcher<\n-00000870: 2f61 7274 6966 6163 7449 643e 0d0a 2020  /artifactId>..  \n-00000880: 2020 2020 3c73 636f 7065 3e74 6573 743c      <scope>test<\n-00000890: 2f73 636f 7065 3e0d 0a20 2020 203c 2f64  /scope>..    </d\n-000008a0: 6570 656e 6465 6e63 793e 0d0a 2020 2020  ependency>..    \n-000008b0: 3c64 6570 656e 6465 6e63 793e 0d0a 2020  <dependency>..  \n-000008c0: 2020 2020 3c67 726f 7570 4964 3e6f 7267      <groupId>org\n-000008d0: 2e74 6573 7463 6f6e 7461 696e 6572 733c  .testcontainers<\n-000008e0: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-000008f0: 203c 6172 7469 6661 6374 4964 3e74 6573   <artifactId>tes\n-00000900: 7463 6f6e 7461 696e 6572 733c 2f61 7274  tcontainers</art\n-00000910: 6966 6163 7449 643e 0d0a 2020 2020 2020  ifactId>..      \n-00000920: 3c73 636f 7065 3e74 6573 743c 2f73 636f  <scope>test</sco\n-00000930: 7065 3e0d 0a20 2020 203c 2f64 6570 656e  pe>..    </depen\n-00000940: 6465 6e63 793e 0d0a 2020 3c2f 6465 7065  dency>..  </depe\n-00000950: 6e64 656e 6369 6573 3e0d 0a20 203c 6275  ndencies>..  <bu\n-00000960: 696c 643e 0d0a 2020 2020 3c70 6c75 6769  ild>..    <plugi\n-00000970: 6e73 3e0d 0a20 2020 2020 203c 706c 7567  ns>..      <plug\n-00000980: 696e 3e0d 0a20 2020 2020 2020 203c 6172  in>..        <ar\n-00000990: 7469 6661 6374 4964 3e6d 6176 656e 2d73  tifactId>maven-s\n-000009a0: 7572 6566 6972 652d 706c 7567 696e 3c2f  urefire-plugin</\n-000009b0: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-000009c0: 2020 2020 203c 636f 6e66 6967 7572 6174       <configurat\n-000009d0: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n-000009e0: 3c73 6b69 7054 6573 7473 3e24 7b73 6b69  <skipTests>${ski\n-000009f0: 7049 6e74 6567 7261 7469 6f6e 5465 7374  pIntegrationTest\n-00000a00: 737d 3c2f 736b 6970 5465 7374 733e 0d0a  s}</skipTests>..\n-00000a10: 2020 2020 2020 2020 3c2f 636f 6e66 6967          </config\n-00000a20: 7572 6174 696f 6e3e 0d0a 2020 2020 2020  uration>..      \n-00000a30: 3c2f 706c 7567 696e 3e0d 0a20 2020 203c  </plugin>..    <\n-00000a40: 2f70 6c75 6769 6e73 3e0d 0a20 203c 2f62  /plugins>..  </b\n-00000a50: 7569 6c64 3e0d 0a3c 2f70 726f 6a65 6374  uild>..</project\n-00000a60: 3e0d 0a                                  >..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 7e20  F-8\"?>.<!--.  ~ \n+00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n+00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n+00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n+00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n+00000070: 7265 0a20 207e 2063 6f6e 7472 6962 7574  re.  ~ contribut\n+00000080: 6f72 206c 6963 656e 7365 2061 6772 6565  or license agree\n+00000090: 6d65 6e74 732e 2020 5365 6520 7468 6520  ments.  See the \n+000000a0: 4e4f 5449 4345 2066 696c 6520 6469 7374  NOTICE file dist\n+000000b0: 7269 6275 7465 6420 7769 7468 0a20 207e  ributed with.  ~\n+000000c0: 2074 6869 7320 776f 726b 2066 6f72 2061   this work for a\n+000000d0: 6464 6974 696f 6e61 6c20 696e 666f 726d  dditional inform\n+000000e0: 6174 696f 6e20 7265 6761 7264 696e 6720  ation regarding \n+000000f0: 636f 7079 7269 6768 7420 6f77 6e65 7273  copyright owners\n+00000100: 6869 702e 0a20 207e 2054 6865 2041 5346  hip..  ~ The ASF\n+00000110: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000120: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000130: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000140: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000150: 0a20 207e 2028 7468 6520 224c 6963 656e  .  ~ (the \"Licen\n+00000160: 7365 2229 3b20 796f 7520 6d61 7920 6e6f  se\"); you may no\n+00000170: 7420 7573 6520 7468 6973 2066 696c 6520  t use this file \n+00000180: 6578 6365 7074 2069 6e20 636f 6d70 6c69  except in compli\n+00000190: 616e 6365 2077 6974 680a 2020 7e20 7468  ance with.  ~ th\n+000001a0: 6520 4c69 6365 6e73 652e 2020 596f 7520  e License.  You \n+000001b0: 6d61 7920 6f62 7461 696e 2061 2063 6f70  may obtain a cop\n+000001c0: 7920 6f66 2074 6865 204c 6963 656e 7365  y of the License\n+000001d0: 2061 740a 2020 7e0a 2020 7e20 2020 2020   at.  ~.  ~     \n+000001e0: 6874 7470 3a2f 2f77 7777 2e61 7061 6368  http://www.apach\n+000001f0: 652e 6f72 672f 6c69 6365 6e73 6573 2f4c  e.org/licenses/L\n+00000200: 4943 454e 5345 2d32 2e30 0a20 207e 0a20  ICENSE-2.0.  ~. \n+00000210: 207e 2055 6e6c 6573 7320 7265 7175 6972   ~ Unless requir\n+00000220: 6564 2062 7920 6170 706c 6963 6162 6c65  ed by applicable\n+00000230: 206c 6177 206f 7220 6167 7265 6564 2074   law or agreed t\n+00000240: 6f20 696e 2077 7269 7469 6e67 2c20 736f  o in writing, so\n+00000250: 6674 7761 7265 0a20 207e 2064 6973 7472  ftware.  ~ distr\n+00000260: 6962 7574 6564 2075 6e64 6572 2074 6865  ibuted under the\n+00000270: 204c 6963 656e 7365 2069 7320 6469 7374   License is dist\n+00000280: 7269 6275 7465 6420 6f6e 2061 6e20 2241  ributed on an \"A\n+00000290: 5320 4953 2220 4241 5349 532c 0a20 207e  S IS\" BASIS,.  ~\n+000002a0: 2057 4954 484f 5554 2057 4152 5241 4e54   WITHOUT WARRANT\n+000002b0: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n+000002c0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n+000002d0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n+000002e0: 2069 6d70 6c69 6564 2e0a 2020 7e20 5365   implied..  ~ Se\n+000002f0: 6520 7468 6520 4c69 6365 6e73 6520 666f  e the License fo\n+00000300: 7220 7468 6520 7370 6563 6966 6963 206c  r the specific l\n+00000310: 616e 6775 6167 6520 676f 7665 726e 696e  anguage governin\n+00000320: 6720 7065 726d 6973 7369 6f6e 7320 616e  g permissions an\n+00000330: 640a 2020 7e20 6c69 6d69 7461 7469 6f6e  d.  ~ limitation\n+00000340: 7320 756e 6465 7220 7468 6520 4c69 6365  s under the Lice\n+00000350: 6e73 652e 0a20 202d 2d3e 0a3c 7072 6f6a  nse..  -->.<proj\n+00000360: 6563 7420 7873 693a 7363 6865 6d61 4c6f  ect xsi:schemaLo\n+00000370: 6361 7469 6f6e 3d22 6874 7470 3a2f 2f6d  cation=\"http://m\n+00000380: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+00000390: 504f 4d2f 342e 302e 3020 6874 7470 733a  POM/4.0.0 https:\n+000003a0: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n+000003b0: 7267 2f78 7364 2f6d 6176 656e 2d34 2e30  rg/xsd/maven-4.0\n+000003c0: 2e30 2e78 7364 2220 786d 6c6e 733d 2268  .0.xsd\" xmlns=\"h\n+000003d0: 7474 703a 2f2f 6d61 7665 6e2e 6170 6163  ttp://maven.apac\n+000003e0: 6865 2e6f 7267 2f50 4f4d 2f34 2e30 2e30  he.org/POM/4.0.0\n+000003f0: 220a 2020 2020 786d 6c6e 733a 7873 693d  \".    xmlns:xsi=\n+00000400: 2268 7474 703a 2f2f 7777 772e 7733 2e6f  \"http://www.w3.o\n+00000410: 7267 2f32 3030 312f 584d 4c53 6368 656d  rg/2001/XMLSchem\n+00000420: 612d 696e 7374 616e 6365 223e 0a20 203c  a-instance\">.  <\n+00000430: 6d6f 6465 6c56 6572 7369 6f6e 3e34 2e30  modelVersion>4.0\n+00000440: 2e30 3c2f 6d6f 6465 6c56 6572 7369 6f6e  .0</modelVersion\n+00000450: 3e0a 2020 3c70 6172 656e 743e 0a20 2020  >.  <parent>.   \n+00000460: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000470: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000480: 7049 643e 0a20 2020 203c 6172 7469 6661  pId>.    <artifa\n+00000490: 6374 4964 3e64 7562 626f 2d6d 6574 6164  ctId>dubbo-metad\n+000004a0: 6174 613c 2f61 7274 6966 6163 7449 643e  ata</artifactId>\n+000004b0: 0a20 2020 203c 7665 7273 696f 6e3e 322e  .    <version>2.\n+000004c0: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+000004d0: 203c 2f70 6172 656e 743e 0a20 203c 6772   </parent>.  <gr\n+000004e0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000004f0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+00000500: 0a20 203c 6172 7469 6661 6374 4964 3e64  .  <artifactId>d\n+00000510: 7562 626f 2d6d 6574 6164 6174 612d 7265  ubbo-metadata-re\n+00000520: 706f 7274 2d65 7463 643c 2f61 7274 6966  port-etcd</artif\n+00000530: 6163 7449 643e 0a20 203c 7665 7273 696f  actId>.  <versio\n+00000540: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n+00000550: 6e3e 0a20 203c 6c69 6365 6e73 6573 3e0a  n>.  <licenses>.\n+00000560: 2020 2020 3c6c 6963 656e 7365 3e0a 2020      <license>.  \n+00000570: 2020 2020 3c6e 616d 653e 4170 6163 6865      <name>Apache\n+00000580: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n+00000590: 6e20 322e 303c 2f6e 616d 653e 0a20 2020  n 2.0</name>.   \n+000005a0: 2020 203c 7572 6c3e 6874 7470 3a2f 2f77     <url>http://w\n+000005b0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n+000005c0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n+000005d0: 2e30 3c2f 7572 6c3e 0a20 2020 2020 203c  .0</url>.      <\n+000005e0: 6469 7374 7269 6275 7469 6f6e 3e72 6570  distribution>rep\n+000005f0: 6f3c 2f64 6973 7472 6962 7574 696f 6e3e  o</distribution>\n+00000600: 0a20 2020 203c 2f6c 6963 656e 7365 3e0a  .    </license>.\n+00000610: 2020 3c2f 6c69 6365 6e73 6573 3e0a 2020    </licenses>.  \n+00000620: 3c70 726f 7065 7274 6965 733e 0a20 2020  <properties>.   \n+00000630: 203c 736b 6970 496e 7465 6772 6174 696f   <skipIntegratio\n+00000640: 6e54 6573 7473 3e74 7275 653c 2f73 6b69  nTests>true</ski\n+00000650: 7049 6e74 6567 7261 7469 6f6e 5465 7374  pIntegrationTest\n+00000660: 733e 0a20 203c 2f70 726f 7065 7274 6965  s>.  </propertie\n+00000670: 733e 0a20 203c 6465 7065 6e64 656e 6369  s>.  <dependenci\n+00000680: 6573 3e0a 2020 2020 3c64 6570 656e 6465  es>.    <depende\n+00000690: 6e63 793e 0a20 2020 2020 203c 6772 6f75  ncy>.      <grou\n+000006a0: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n+000006b0: 7562 626f 3c2f 6772 6f75 7049 643e 0a20  ubbo</groupId>. \n+000006c0: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n+000006d0: 3e64 7562 626f 2d6d 6574 6164 6174 612d  >dubbo-metadata-\n+000006e0: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n+000006f0: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n+00000700: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n+00000710: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n+00000720: 6f6e 3e0a 2020 2020 3c2f 6465 7065 6e64  on>.    </depend\n+00000730: 656e 6379 3e0a 2020 2020 3c64 6570 656e  ency>.    <depen\n+00000740: 6465 6e63 793e 0a20 2020 2020 203c 6772  dency>.      <gr\n+00000750: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+00000760: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+00000770: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+00000780: 4964 3e64 7562 626f 2d72 656d 6f74 696e  Id>dubbo-remotin\n+00000790: 672d 6574 6364 333c 2f61 7274 6966 6163  g-etcd3</artifac\n+000007a0: 7449 643e 0a20 2020 2020 203c 7665 7273  tId>.      <vers\n+000007b0: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n+000007c0: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n+000007d0: 6572 7369 6f6e 3e0a 2020 2020 3c2f 6465  ersion>.    </de\n+000007e0: 7065 6e64 656e 6379 3e0a 2020 2020 3c64  pendency>.    <d\n+000007f0: 6570 656e 6465 6e63 793e 0a20 2020 2020  ependency>.     \n+00000800: 203c 6772 6f75 7049 643e 696f 2e65 7463   <groupId>io.etc\n+00000810: 643c 2f67 726f 7570 4964 3e0a 2020 2020  d</groupId>.    \n+00000820: 2020 3c61 7274 6966 6163 7449 643e 6a65    <artifactId>je\n+00000830: 7463 642d 6c61 756e 6368 6572 3c2f 6172  tcd-launcher</ar\n+00000840: 7469 6661 6374 4964 3e0a 2020 2020 2020  tifactId>.      \n+00000850: 3c73 636f 7065 3e74 6573 743c 2f73 636f  <scope>test</sco\n+00000860: 7065 3e0a 2020 2020 3c2f 6465 7065 6e64  pe>.    </depend\n+00000870: 656e 6379 3e0a 2020 2020 3c64 6570 656e  ency>.    <depen\n+00000880: 6465 6e63 793e 0a20 2020 2020 203c 6772  dency>.      <gr\n+00000890: 6f75 7049 643e 6f72 672e 7465 7374 636f  oupId>org.testco\n+000008a0: 6e74 6169 6e65 7273 3c2f 6772 6f75 7049  ntainers</groupI\n+000008b0: 643e 0a20 2020 2020 203c 6172 7469 6661  d>.      <artifa\n+000008c0: 6374 4964 3e74 6573 7463 6f6e 7461 696e  ctId>testcontain\n+000008d0: 6572 733c 2f61 7274 6966 6163 7449 643e  ers</artifactId>\n+000008e0: 0a20 2020 2020 203c 7363 6f70 653e 7465  .      <scope>te\n+000008f0: 7374 3c2f 7363 6f70 653e 0a20 2020 203c  st</scope>.    <\n+00000900: 2f64 6570 656e 6465 6e63 793e 0a20 203c  /dependency>.  <\n+00000910: 2f64 6570 656e 6465 6e63 6965 733e 0a20  /dependencies>. \n+00000920: 203c 6275 696c 643e 0a20 2020 203c 706c   <build>.    <pl\n+00000930: 7567 696e 733e 0a20 2020 2020 203c 706c  ugins>.      <pl\n+00000940: 7567 696e 3e0a 2020 2020 2020 2020 3c61  ugin>.        <a\n+00000950: 7274 6966 6163 7449 643e 6d61 7665 6e2d  rtifactId>maven-\n+00000960: 7375 7265 6669 7265 2d70 6c75 6769 6e3c  surefire-plugin<\n+00000970: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+00000980: 2020 2020 203c 636f 6e66 6967 7572 6174       <configurat\n+00000990: 696f 6e3e 0a20 2020 2020 2020 2020 203c  ion>.          <\n+000009a0: 736b 6970 5465 7374 733e 247b 736b 6970  skipTests>${skip\n+000009b0: 496e 7465 6772 6174 696f 6e54 6573 7473  IntegrationTests\n+000009c0: 7d3c 2f73 6b69 7054 6573 7473 3e0a 2020  }</skipTests>.  \n+000009d0: 2020 2020 2020 3c2f 636f 6e66 6967 7572        </configur\n+000009e0: 6174 696f 6e3e 0a20 2020 2020 203c 2f70  ation>.      </p\n+000009f0: 6c75 6769 6e3e 0a20 2020 203c 2f70 6c75  lugin>.    </plu\n+00000a00: 6769 6e73 3e0a 2020 3c2f 6275 696c 643e  gins>.  </build>\n+00000a10: 0a3c 2f70 726f 6a65 6374 3e0a            .</project>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-metadata-report-nacos/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-metadata-report-nacos/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,127 +1,124 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 7e20 4c69 6365 6e73 6564 2074 6f20 7468  ~ Licensed to th\n-00000040: 6520 4170 6163 6865 2053 6f66 7477 6172  e Apache Softwar\n-00000050: 6520 466f 756e 6461 7469 6f6e 2028 4153  e Foundation (AS\n-00000060: 4629 2075 6e64 6572 206f 6e65 206f 7220  F) under one or \n-00000070: 6d6f 7265 0d0a 2020 7e20 636f 6e74 7269  more..  ~ contri\n-00000080: 6275 746f 7220 6c69 6365 6e73 6520 6167  butor license ag\n-00000090: 7265 656d 656e 7473 2e20 2053 6565 2074  reements.  See t\n-000000a0: 6865 204e 4f54 4943 4520 6669 6c65 2064  he NOTICE file d\n-000000b0: 6973 7472 6962 7574 6564 2077 6974 680d  istributed with.\n-000000c0: 0a20 207e 2074 6869 7320 776f 726b 2066  .  ~ this work f\n-000000d0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n-000000e0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n-000000f0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n-00000100: 6e65 7273 6869 702e 0d0a 2020 7e20 5468  nership...  ~ Th\n-00000110: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000120: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000130: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000140: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000150: 6e20 322e 300d 0a20 207e 2028 7468 6520  n 2.0..  ~ (the \n-00000160: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n-00000170: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n-00000180: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n-00000190: 636f 6d70 6c69 616e 6365 2077 6974 680d  compliance with.\n-000001a0: 0a20 207e 2074 6865 204c 6963 656e 7365  .  ~ the License\n-000001b0: 2e20 2059 6f75 206d 6179 206f 6274 6169  .  You may obtai\n-000001c0: 6e20 6120 636f 7079 206f 6620 7468 6520  n a copy of the \n-000001d0: 4c69 6365 6e73 6520 6174 0d0a 2020 7e0d  License at..  ~.\n-000001e0: 0a20 207e 2020 2020 2068 7474 703a 2f2f  .  ~     http://\n-000001f0: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n-00000200: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n-00000210: 322e 300d 0a20 207e 0d0a 2020 7e20 556e  2.0..  ~..  ~ Un\n-00000220: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n-00000230: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n-00000240: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n-00000250: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n-00000260: 650d 0a20 207e 2064 6973 7472 6962 7574  e..  ~ distribut\n-00000270: 6564 2075 6e64 6572 2074 6865 204c 6963  ed under the Lic\n-00000280: 656e 7365 2069 7320 6469 7374 7269 6275  ense is distribu\n-00000290: 7465 6420 6f6e 2061 6e20 2241 5320 4953  ted on an \"AS IS\n-000002a0: 2220 4241 5349 532c 0d0a 2020 7e20 5749  \" BASIS,..  ~ WI\n-000002b0: 5448 4f55 5420 5741 5252 414e 5449 4553  THOUT WARRANTIES\n-000002c0: 204f 5220 434f 4e44 4954 494f 4e53 204f   OR CONDITIONS O\n-000002d0: 4620 414e 5920 4b49 4e44 2c20 6569 7468  F ANY KIND, eith\n-000002e0: 6572 2065 7870 7265 7373 206f 7220 696d  er express or im\n-000002f0: 706c 6965 642e 0d0a 2020 7e20 5365 6520  plied...  ~ See \n-00000300: 7468 6520 4c69 6365 6e73 6520 666f 7220  the License for \n-00000310: 7468 6520 7370 6563 6966 6963 206c 616e  the specific lan\n-00000320: 6775 6167 6520 676f 7665 726e 696e 6720  guage governing \n-00000330: 7065 726d 6973 7369 6f6e 7320 616e 640d  permissions and.\n-00000340: 0a20 207e 206c 696d 6974 6174 696f 6e73  .  ~ limitations\n-00000350: 2075 6e64 6572 2074 6865 204c 6963 656e   under the Licen\n-00000360: 7365 2e0d 0a20 202d 2d3e 0d0a 3c70 726f  se...  -->..<pro\n-00000370: 6a65 6374 2078 7369 3a73 6368 656d 614c  ject xsi:schemaL\n-00000380: 6f63 6174 696f 6e3d 2268 7474 703a 2f2f  ocation=\"http://\n-00000390: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003a0: 2f50 4f4d 2f34 2e30 2e30 2068 7474 7073  /POM/4.0.0 https\n-000003b0: 3a2f 2f6d 6176 656e 2e61 7061 6368 652e  ://maven.apache.\n-000003c0: 6f72 672f 7873 642f 6d61 7665 6e2d 342e  org/xsd/maven-4.\n-000003d0: 302e 302e 7873 6422 2078 6d6c 6e73 3d22  0.0.xsd\" xmlns=\"\n-000003e0: 6874 7470 3a2f 2f6d 6176 656e 2e61 7061  http://maven.apa\n-000003f0: 6368 652e 6f72 672f 504f 4d2f 342e 302e  che.org/POM/4.0.\n-00000400: 3022 0d0a 2020 2020 786d 6c6e 733a 7873  0\"..    xmlns:xs\n-00000410: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n-00000420: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n-00000430: 656d 612d 696e 7374 616e 6365 223e 0d0a  ema-instance\">..\n-00000440: 2020 3c6d 6f64 656c 5665 7273 696f 6e3e    <modelVersion>\n-00000450: 342e 302e 303c 2f6d 6f64 656c 5665 7273  4.0.0</modelVers\n-00000460: 696f 6e3e 0d0a 2020 3c70 6172 656e 743e  ion>..  <parent>\n-00000470: 0d0a 2020 2020 3c67 726f 7570 4964 3e6f  ..    <groupId>o\n-00000480: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000490: 2f67 726f 7570 4964 3e0d 0a20 2020 203c  /groupId>..    <\n-000004a0: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-000004b0: 2d6d 6574 6164 6174 613c 2f61 7274 6966  -metadata</artif\n-000004c0: 6163 7449 643e 0d0a 2020 2020 3c76 6572  actId>..    <ver\n-000004d0: 7369 6f6e 3e32 2e37 2e31 303c 2f76 6572  sion>2.7.10</ver\n-000004e0: 7369 6f6e 3e0d 0a20 203c 2f70 6172 656e  sion>..  </paren\n-000004f0: 743e 0d0a 2020 3c67 726f 7570 4964 3e6f  t>..  <groupId>o\n-00000500: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000510: 2f67 726f 7570 4964 3e0d 0a20 203c 6172  /groupId>..  <ar\n-00000520: 7469 6661 6374 4964 3e64 7562 626f 2d6d  tifactId>dubbo-m\n-00000530: 6574 6164 6174 612d 7265 706f 7274 2d6e  etadata-report-n\n-00000540: 6163 6f73 3c2f 6172 7469 6661 6374 4964  acos</artifactId\n-00000550: 3e0d 0a20 203c 7665 7273 696f 6e3e 322e  >..  <version>2.\n-00000560: 372e 3130 3c2f 7665 7273 696f 6e3e 0d0a  7.10</version>..\n-00000570: 2020 3c6c 6963 656e 7365 733e 0d0a 2020    <licenses>..  \n-00000580: 2020 3c6c 6963 656e 7365 3e0d 0a20 2020    <license>..   \n-00000590: 2020 203c 6e61 6d65 3e41 7061 6368 6520     <name>Apache \n-000005a0: 4c69 6365 6e73 652c 2056 6572 7369 6f6e  License, Version\n-000005b0: 2032 2e30 3c2f 6e61 6d65 3e0d 0a20 2020   2.0</name>..   \n-000005c0: 2020 203c 7572 6c3e 6874 7470 3a2f 2f77     <url>http://w\n-000005d0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000005e0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-000005f0: 2e30 3c2f 7572 6c3e 0d0a 2020 2020 2020  .0</url>..      \n-00000600: 3c64 6973 7472 6962 7574 696f 6e3e 7265  <distribution>re\n-00000610: 706f 3c2f 6469 7374 7269 6275 7469 6f6e  po</distribution\n-00000620: 3e0d 0a20 2020 203c 2f6c 6963 656e 7365  >..    </license\n-00000630: 3e0d 0a20 203c 2f6c 6963 656e 7365 733e  >..  </licenses>\n-00000640: 0d0a 2020 3c64 6570 656e 6465 6e63 6965  ..  <dependencie\n-00000650: 733e 0d0a 2020 2020 3c64 6570 656e 6465  s>..    <depende\n-00000660: 6e63 793e 0d0a 2020 2020 2020 3c67 726f  ncy>..      <gro\n-00000670: 7570 4964 3e6f 7267 2e61 7061 6368 652e  upId>org.apache.\n-00000680: 6475 6262 6f3c 2f67 726f 7570 4964 3e0d  dubbo</groupId>.\n-00000690: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-000006a0: 4964 3e64 7562 626f 2d6d 6574 6164 6174  Id>dubbo-metadat\n-000006b0: 612d 6170 693c 2f61 7274 6966 6163 7449  a-api</artifactI\n-000006c0: 643e 0d0a 2020 2020 2020 3c76 6572 7369  d>..      <versi\n-000006d0: 6f6e 3e24 7b70 726f 6a65 6374 2e70 6172  on>${project.par\n-000006e0: 656e 742e 7665 7273 696f 6e7d 3c2f 7665  ent.version}</ve\n-000006f0: 7273 696f 6e3e 0d0a 2020 2020 3c2f 6465  rsion>..    </de\n-00000700: 7065 6e64 656e 6379 3e0d 0a20 2020 203c  pendency>..    <\n-00000710: 6465 7065 6e64 656e 6379 3e0d 0a20 2020  dependency>..   \n-00000720: 2020 203c 6772 6f75 7049 643e 6f72 672e     <groupId>org.\n-00000730: 6170 6163 6865 2e64 7562 626f 3c2f 6772  apache.dubbo</gr\n-00000740: 6f75 7049 643e 0d0a 2020 2020 2020 3c61  oupId>..      <a\n-00000750: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n-00000760: 636f 6e66 6967 6365 6e74 6572 2d6e 6163  configcenter-nac\n-00000770: 6f73 3c2f 6172 7469 6661 6374 4964 3e0d  os</artifactId>.\n-00000780: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n-00000790: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n-000007a0: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n-000007b0: 6f6e 3e0d 0a20 2020 203c 2f64 6570 656e  on>..    </depen\n-000007c0: 6465 6e63 793e 0d0a 2020 3c2f 6465 7065  dency>..  </depe\n-000007d0: 6e64 656e 6369 6573 3e0d 0a3c 2f70 726f  ndencies>..</pro\n-000007e0: 6a65 6374 3e0d 0a                        ject>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 7e20  F-8\"?>.<!--.  ~ \n+00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n+00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n+00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n+00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n+00000070: 7265 0a20 207e 2063 6f6e 7472 6962 7574  re.  ~ contribut\n+00000080: 6f72 206c 6963 656e 7365 2061 6772 6565  or license agree\n+00000090: 6d65 6e74 732e 2020 5365 6520 7468 6520  ments.  See the \n+000000a0: 4e4f 5449 4345 2066 696c 6520 6469 7374  NOTICE file dist\n+000000b0: 7269 6275 7465 6420 7769 7468 0a20 207e  ributed with.  ~\n+000000c0: 2074 6869 7320 776f 726b 2066 6f72 2061   this work for a\n+000000d0: 6464 6974 696f 6e61 6c20 696e 666f 726d  dditional inform\n+000000e0: 6174 696f 6e20 7265 6761 7264 696e 6720  ation regarding \n+000000f0: 636f 7079 7269 6768 7420 6f77 6e65 7273  copyright owners\n+00000100: 6869 702e 0a20 207e 2054 6865 2041 5346  hip..  ~ The ASF\n+00000110: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000120: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000130: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000140: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000150: 0a20 207e 2028 7468 6520 224c 6963 656e  .  ~ (the \"Licen\n+00000160: 7365 2229 3b20 796f 7520 6d61 7920 6e6f  se\"); you may no\n+00000170: 7420 7573 6520 7468 6973 2066 696c 6520  t use this file \n+00000180: 6578 6365 7074 2069 6e20 636f 6d70 6c69  except in compli\n+00000190: 616e 6365 2077 6974 680a 2020 7e20 7468  ance with.  ~ th\n+000001a0: 6520 4c69 6365 6e73 652e 2020 596f 7520  e License.  You \n+000001b0: 6d61 7920 6f62 7461 696e 2061 2063 6f70  may obtain a cop\n+000001c0: 7920 6f66 2074 6865 204c 6963 656e 7365  y of the License\n+000001d0: 2061 740a 2020 7e0a 2020 7e20 2020 2020   at.  ~.  ~     \n+000001e0: 6874 7470 3a2f 2f77 7777 2e61 7061 6368  http://www.apach\n+000001f0: 652e 6f72 672f 6c69 6365 6e73 6573 2f4c  e.org/licenses/L\n+00000200: 4943 454e 5345 2d32 2e30 0a20 207e 0a20  ICENSE-2.0.  ~. \n+00000210: 207e 2055 6e6c 6573 7320 7265 7175 6972   ~ Unless requir\n+00000220: 6564 2062 7920 6170 706c 6963 6162 6c65  ed by applicable\n+00000230: 206c 6177 206f 7220 6167 7265 6564 2074   law or agreed t\n+00000240: 6f20 696e 2077 7269 7469 6e67 2c20 736f  o in writing, so\n+00000250: 6674 7761 7265 0a20 207e 2064 6973 7472  ftware.  ~ distr\n+00000260: 6962 7574 6564 2075 6e64 6572 2074 6865  ibuted under the\n+00000270: 204c 6963 656e 7365 2069 7320 6469 7374   License is dist\n+00000280: 7269 6275 7465 6420 6f6e 2061 6e20 2241  ributed on an \"A\n+00000290: 5320 4953 2220 4241 5349 532c 0a20 207e  S IS\" BASIS,.  ~\n+000002a0: 2057 4954 484f 5554 2057 4152 5241 4e54   WITHOUT WARRANT\n+000002b0: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n+000002c0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n+000002d0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n+000002e0: 2069 6d70 6c69 6564 2e0a 2020 7e20 5365   implied..  ~ Se\n+000002f0: 6520 7468 6520 4c69 6365 6e73 6520 666f  e the License fo\n+00000300: 7220 7468 6520 7370 6563 6966 6963 206c  r the specific l\n+00000310: 616e 6775 6167 6520 676f 7665 726e 696e  anguage governin\n+00000320: 6720 7065 726d 6973 7369 6f6e 7320 616e  g permissions an\n+00000330: 640a 2020 7e20 6c69 6d69 7461 7469 6f6e  d.  ~ limitation\n+00000340: 7320 756e 6465 7220 7468 6520 4c69 6365  s under the Lice\n+00000350: 6e73 652e 0a20 202d 2d3e 0a3c 7072 6f6a  nse..  -->.<proj\n+00000360: 6563 7420 7873 693a 7363 6865 6d61 4c6f  ect xsi:schemaLo\n+00000370: 6361 7469 6f6e 3d22 6874 7470 3a2f 2f6d  cation=\"http://m\n+00000380: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+00000390: 504f 4d2f 342e 302e 3020 6874 7470 733a  POM/4.0.0 https:\n+000003a0: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n+000003b0: 7267 2f78 7364 2f6d 6176 656e 2d34 2e30  rg/xsd/maven-4.0\n+000003c0: 2e30 2e78 7364 2220 786d 6c6e 733d 2268  .0.xsd\" xmlns=\"h\n+000003d0: 7474 703a 2f2f 6d61 7665 6e2e 6170 6163  ttp://maven.apac\n+000003e0: 6865 2e6f 7267 2f50 4f4d 2f34 2e30 2e30  he.org/POM/4.0.0\n+000003f0: 220a 2020 2020 786d 6c6e 733a 7873 693d  \".    xmlns:xsi=\n+00000400: 2268 7474 703a 2f2f 7777 772e 7733 2e6f  \"http://www.w3.o\n+00000410: 7267 2f32 3030 312f 584d 4c53 6368 656d  rg/2001/XMLSchem\n+00000420: 612d 696e 7374 616e 6365 223e 0a20 203c  a-instance\">.  <\n+00000430: 6d6f 6465 6c56 6572 7369 6f6e 3e34 2e30  modelVersion>4.0\n+00000440: 2e30 3c2f 6d6f 6465 6c56 6572 7369 6f6e  .0</modelVersion\n+00000450: 3e0a 2020 3c70 6172 656e 743e 0a20 2020  >.  <parent>.   \n+00000460: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000470: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000480: 7049 643e 0a20 2020 203c 6172 7469 6661  pId>.    <artifa\n+00000490: 6374 4964 3e64 7562 626f 2d6d 6574 6164  ctId>dubbo-metad\n+000004a0: 6174 613c 2f61 7274 6966 6163 7449 643e  ata</artifactId>\n+000004b0: 0a20 2020 203c 7665 7273 696f 6e3e 322e  .    <version>2.\n+000004c0: 372e 3130 3c2f 7665 7273 696f 6e3e 0a20  7.10</version>. \n+000004d0: 203c 2f70 6172 656e 743e 0a20 203c 6772   </parent>.  <gr\n+000004e0: 6f75 7049 643e 6f72 672e 6170 6163 6865  oupId>org.apache\n+000004f0: 2e64 7562 626f 3c2f 6772 6f75 7049 643e  .dubbo</groupId>\n+00000500: 0a20 203c 6172 7469 6661 6374 4964 3e64  .  <artifactId>d\n+00000510: 7562 626f 2d6d 6574 6164 6174 612d 7265  ubbo-metadata-re\n+00000520: 706f 7274 2d6e 6163 6f73 3c2f 6172 7469  port-nacos</arti\n+00000530: 6661 6374 4964 3e0a 2020 3c76 6572 7369  factId>.  <versi\n+00000540: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n+00000550: 6f6e 3e0a 2020 3c6c 6963 656e 7365 733e  on>.  <licenses>\n+00000560: 0a20 2020 203c 6c69 6365 6e73 653e 0a20  .    <license>. \n+00000570: 2020 2020 203c 6e61 6d65 3e41 7061 6368       <name>Apach\n+00000580: 6520 4c69 6365 6e73 652c 2056 6572 7369  e License, Versi\n+00000590: 6f6e 2032 2e30 3c2f 6e61 6d65 3e0a 2020  on 2.0</name>.  \n+000005a0: 2020 2020 3c75 726c 3e68 7474 703a 2f2f      <url>http://\n+000005b0: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n+000005c0: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n+000005d0: 322e 303c 2f75 726c 3e0a 2020 2020 2020  2.0</url>.      \n+000005e0: 3c64 6973 7472 6962 7574 696f 6e3e 7265  <distribution>re\n+000005f0: 706f 3c2f 6469 7374 7269 6275 7469 6f6e  po</distribution\n+00000600: 3e0a 2020 2020 3c2f 6c69 6365 6e73 653e  >.    </license>\n+00000610: 0a20 203c 2f6c 6963 656e 7365 733e 0a20  .  </licenses>. \n+00000620: 203c 6465 7065 6e64 656e 6369 6573 3e0a   <dependencies>.\n+00000630: 2020 2020 3c64 6570 656e 6465 6e63 793e      <dependency>\n+00000640: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n+00000650: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n+00000660: 3c2f 6772 6f75 7049 643e 0a20 2020 2020  </groupId>.     \n+00000670: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n+00000680: 626f 2d6d 6574 6164 6174 612d 6170 693c  bo-metadata-api<\n+00000690: 2f61 7274 6966 6163 7449 643e 0a20 2020  /artifactId>.   \n+000006a0: 2020 203c 7665 7273 696f 6e3e 247b 7072     <version>${pr\n+000006b0: 6f6a 6563 742e 7061 7265 6e74 2e76 6572  oject.parent.ver\n+000006c0: 7369 6f6e 7d3c 2f76 6572 7369 6f6e 3e0a  sion}</version>.\n+000006d0: 2020 2020 3c2f 6465 7065 6e64 656e 6379      </dependency\n+000006e0: 3e0a 2020 2020 3c64 6570 656e 6465 6e63  >.    <dependenc\n+000006f0: 793e 0a20 2020 2020 203c 6772 6f75 7049  y>.      <groupI\n+00000700: 643e 6f72 672e 6170 6163 6865 2e64 7562  d>org.apache.dub\n+00000710: 626f 3c2f 6772 6f75 7049 643e 0a20 2020  bo</groupId>.   \n+00000720: 2020 203c 6172 7469 6661 6374 4964 3e64     <artifactId>d\n+00000730: 7562 626f 2d63 6f6e 6669 6763 656e 7465  ubbo-configcente\n+00000740: 722d 6e61 636f 733c 2f61 7274 6966 6163  r-nacos</artifac\n+00000750: 7449 643e 0a20 2020 2020 203c 7665 7273  tId>.      <vers\n+00000760: 696f 6e3e 247b 7072 6f6a 6563 742e 7061  ion>${project.pa\n+00000770: 7265 6e74 2e76 6572 7369 6f6e 7d3c 2f76  rent.version}</v\n+00000780: 6572 7369 6f6e 3e0a 2020 2020 3c2f 6465  ersion>.    </de\n+00000790: 7065 6e64 656e 6379 3e0a 2020 3c2f 6465  pendency>.  </de\n+000007a0: 7065 6e64 656e 6369 6573 3e0a 3c2f 7072  pendencies>.</pr\n+000007b0: 6f6a 6563 743e 0a                        oject>.\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-metadata-report-failover/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,113 +1,111 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n-00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n-00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n-00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n-00000070: 7265 0d0a 2020 636f 6e74 7269 6275 746f  re..  contributo\n-00000080: 7220 6c69 6365 6e73 6520 6167 7265 656d  r license agreem\n-00000090: 656e 7473 2e20 2053 6565 2074 6865 204e  ents.  See the N\n-000000a0: 4f54 4943 4520 6669 6c65 2064 6973 7472  OTICE file distr\n-000000b0: 6962 7574 6564 2077 6974 680d 0a20 2074  ibuted with..  t\n-000000c0: 6869 7320 776f 726b 2066 6f72 2061 6464  his work for add\n-000000d0: 6974 696f 6e61 6c20 696e 666f 726d 6174  itional informat\n-000000e0: 696f 6e20 7265 6761 7264 696e 6720 636f  ion regarding co\n-000000f0: 7079 7269 6768 7420 6f77 6e65 7273 6869  pyright ownershi\n-00000100: 702e 0d0a 2020 5468 6520 4153 4620 6c69  p...  The ASF li\n-00000110: 6365 6e73 6573 2074 6869 7320 6669 6c65  censes this file\n-00000120: 2074 6f20 596f 7520 756e 6465 7220 7468   to You under th\n-00000130: 6520 4170 6163 6865 204c 6963 656e 7365  e Apache License\n-00000140: 2c20 5665 7273 696f 6e20 322e 300d 0a20  , Version 2.0.. \n-00000150: 2028 7468 6520 224c 6963 656e 7365 2229   (the \"License\")\n-00000160: 3b20 796f 7520 6d61 7920 6e6f 7420 7573  ; you may not us\n-00000170: 6520 7468 6973 2066 696c 6520 6578 6365  e this file exce\n-00000180: 7074 2069 6e20 636f 6d70 6c69 616e 6365  pt in compliance\n-00000190: 2077 6974 680d 0a20 2074 6865 204c 6963   with..  the Lic\n-000001a0: 656e 7365 2e20 2059 6f75 206d 6179 206f  ense.  You may o\n-000001b0: 6274 6169 6e20 6120 636f 7079 206f 6620  btain a copy of \n-000001c0: 7468 6520 4c69 6365 6e73 6520 6174 0d0a  the License at..\n-000001d0: 0d0a 2020 2020 2020 6874 7470 3a2f 2f77  ..      http://w\n-000001e0: 7777 2e61 7061 6368 652e 6f72 672f 6c69  ww.apache.org/li\n-000001f0: 6365 6e73 6573 2f4c 4943 454e 5345 2d32  censes/LICENSE-2\n-00000200: 2e30 0d0a 0d0a 2020 556e 6c65 7373 2072  .0....  Unless r\n-00000210: 6571 7569 7265 6420 6279 2061 7070 6c69  equired by appli\n-00000220: 6361 626c 6520 6c61 7720 6f72 2061 6772  cable law or agr\n-00000230: 6565 6420 746f 2069 6e20 7772 6974 696e  eed to in writin\n-00000240: 672c 2073 6f66 7477 6172 650d 0a20 2064  g, software..  d\n-00000250: 6973 7472 6962 7574 6564 2075 6e64 6572  istributed under\n-00000260: 2074 6865 204c 6963 656e 7365 2069 7320   the License is \n-00000270: 6469 7374 7269 6275 7465 6420 6f6e 2061  distributed on a\n-00000280: 6e20 2241 5320 4953 2220 4241 5349 532c  n \"AS IS\" BASIS,\n-00000290: 0d0a 2020 5749 5448 4f55 5420 5741 5252  ..  WITHOUT WARR\n-000002a0: 414e 5449 4553 204f 5220 434f 4e44 4954  ANTIES OR CONDIT\n-000002b0: 494f 4e53 204f 4620 414e 5920 4b49 4e44  IONS OF ANY KIND\n-000002c0: 2c20 6569 7468 6572 2065 7870 7265 7373  , either express\n-000002d0: 206f 7220 696d 706c 6965 642e 0d0a 2020   or implied...  \n-000002e0: 5365 6520 7468 6520 4c69 6365 6e73 6520  See the License \n-000002f0: 666f 7220 7468 6520 7370 6563 6966 6963  for the specific\n-00000300: 206c 616e 6775 6167 6520 676f 7665 726e   language govern\n-00000310: 696e 6720 7065 726d 6973 7369 6f6e 7320  ing permissions \n-00000320: 616e 640d 0a20 206c 696d 6974 6174 696f  and..  limitatio\n-00000330: 6e73 2075 6e64 6572 2074 6865 204c 6963  ns under the Lic\n-00000340: 656e 7365 2e0d 0a20 2d2d 3e0d 0a3c 7072  ense... -->..<pr\n-00000350: 6f6a 6563 7420 7873 693a 7363 6865 6d61  oject xsi:schema\n-00000360: 4c6f 6361 7469 6f6e 3d22 6874 7470 3a2f  Location=\"http:/\n-00000370: 2f6d 6176 656e 2e61 7061 6368 652e 6f72  /maven.apache.or\n-00000380: 672f 504f 4d2f 342e 302e 3020 6874 7470  g/POM/4.0.0 http\n-00000390: 733a 2f2f 6d61 7665 6e2e 6170 6163 6865  s://maven.apache\n-000003a0: 2e6f 7267 2f78 7364 2f6d 6176 656e 2d34  .org/xsd/maven-4\n-000003b0: 2e30 2e30 2e78 7364 2220 786d 6c6e 733d  .0.0.xsd\" xmlns=\n-000003c0: 2268 7474 703a 2f2f 6d61 7665 6e2e 6170  \"http://maven.ap\n-000003d0: 6163 6865 2e6f 7267 2f50 4f4d 2f34 2e30  ache.org/POM/4.0\n-000003e0: 2e30 220d 0a20 2020 2078 6d6c 6e73 3a78  .0\"..    xmlns:x\n-000003f0: 7369 3d22 6874 7470 3a2f 2f77 7777 2e77  si=\"http://www.w\n-00000400: 332e 6f72 672f 3230 3031 2f58 4d4c 5363  3.org/2001/XMLSc\n-00000410: 6865 6d61 2d69 6e73 7461 6e63 6522 3e0d  hema-instance\">.\n-00000420: 0a20 203c 6d6f 6465 6c56 6572 7369 6f6e  .  <modelVersion\n-00000430: 3e34 2e30 2e30 3c2f 6d6f 6465 6c56 6572  >4.0.0</modelVer\n-00000440: 7369 6f6e 3e0d 0a20 203c 7061 7265 6e74  sion>..  <parent\n-00000450: 3e0d 0a20 2020 203c 6772 6f75 7049 643e  >..    <groupId>\n-00000460: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n-00000470: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-00000480: 3c61 7274 6966 6163 7449 643e 6475 6262  <artifactId>dubb\n-00000490: 6f2d 6d65 7461 6461 7461 3c2f 6172 7469  o-metadata</arti\n-000004a0: 6661 6374 4964 3e0d 0a20 2020 203c 7665  factId>..    <ve\n-000004b0: 7273 696f 6e3e 322e 372e 3130 3c2f 7665  rsion>2.7.10</ve\n-000004c0: 7273 696f 6e3e 0d0a 2020 3c2f 7061 7265  rsion>..  </pare\n-000004d0: 6e74 3e0d 0a20 203c 6772 6f75 7049 643e  nt>..  <groupId>\n-000004e0: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n-000004f0: 3c2f 6772 6f75 7049 643e 0d0a 2020 3c61  </groupId>..  <a\n-00000500: 7274 6966 6163 7449 643e 6475 6262 6f2d  rtifactId>dubbo-\n-00000510: 6d65 7461 6461 7461 2d72 6570 6f72 742d  metadata-report-\n-00000520: 6661 696c 6f76 6572 3c2f 6172 7469 6661  failover</artifa\n-00000530: 6374 4964 3e0d 0a20 203c 7665 7273 696f  ctId>..  <versio\n-00000540: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n-00000550: 6e3e 0d0a 2020 3c6c 6963 656e 7365 733e  n>..  <licenses>\n-00000560: 0d0a 2020 2020 3c6c 6963 656e 7365 3e0d  ..    <license>.\n-00000570: 0a20 2020 2020 203c 6e61 6d65 3e41 7061  .      <name>Apa\n-00000580: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n-00000590: 7369 6f6e 2032 2e30 3c2f 6e61 6d65 3e0d  sion 2.0</name>.\n-000005a0: 0a20 2020 2020 203c 7572 6c3e 6874 7470  .      <url>http\n-000005b0: 3a2f 2f77 7777 2e61 7061 6368 652e 6f72  ://www.apache.or\n-000005c0: 672f 6c69 6365 6e73 6573 2f4c 4943 454e  g/licenses/LICEN\n-000005d0: 5345 2d32 2e30 3c2f 7572 6c3e 0d0a 2020  SE-2.0</url>..  \n-000005e0: 2020 2020 3c64 6973 7472 6962 7574 696f      <distributio\n-000005f0: 6e3e 7265 706f 3c2f 6469 7374 7269 6275  n>repo</distribu\n-00000600: 7469 6f6e 3e0d 0a20 2020 203c 2f6c 6963  tion>..    </lic\n-00000610: 656e 7365 3e0d 0a20 203c 2f6c 6963 656e  ense>..  </licen\n-00000620: 7365 733e 0d0a 2020 3c64 6570 656e 6465  ses>..  <depende\n-00000630: 6e63 6965 733e 0d0a 2020 2020 3c64 6570  ncies>..    <dep\n-00000640: 656e 6465 6e63 793e 0d0a 2020 2020 2020  endency>..      \n-00000650: 3c67 726f 7570 4964 3e6f 7267 2e61 7061  <groupId>org.apa\n-00000660: 6368 652e 6475 6262 6f3c 2f67 726f 7570  che.dubbo</group\n-00000670: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-00000680: 6661 6374 4964 3e64 7562 626f 2d6d 6574  factId>dubbo-met\n-00000690: 6164 6174 612d 6170 693c 2f61 7274 6966  adata-api</artif\n-000006a0: 6163 7449 643e 0d0a 2020 2020 2020 3c76  actId>..      <v\n-000006b0: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n-000006c0: 2e70 6172 656e 742e 7665 7273 696f 6e7d  .parent.version}\n-000006d0: 3c2f 7665 7273 696f 6e3e 0d0a 2020 2020  </version>..    \n-000006e0: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-000006f0: 203c 2f64 6570 656e 6465 6e63 6965 733e   </dependencies>\n-00000700: 0d0a 3c2f 7072 6f6a 6563 743e 0d0a       ..</project>..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 4c69  F-8\"?>.<!--.  Li\n+00000030: 6365 6e73 6564 2074 6f20 7468 6520 4170  censed to the Ap\n+00000040: 6163 6865 2053 6f66 7477 6172 6520 466f  ache Software Fo\n+00000050: 756e 6461 7469 6f6e 2028 4153 4629 2075  undation (ASF) u\n+00000060: 6e64 6572 206f 6e65 206f 7220 6d6f 7265  nder one or more\n+00000070: 0a20 2063 6f6e 7472 6962 7574 6f72 206c  .  contributor l\n+00000080: 6963 656e 7365 2061 6772 6565 6d65 6e74  icense agreement\n+00000090: 732e 2020 5365 6520 7468 6520 4e4f 5449  s.  See the NOTI\n+000000a0: 4345 2066 696c 6520 6469 7374 7269 6275  CE file distribu\n+000000b0: 7465 6420 7769 7468 0a20 2074 6869 7320  ted with.  this \n+000000c0: 776f 726b 2066 6f72 2061 6464 6974 696f  work for additio\n+000000d0: 6e61 6c20 696e 666f 726d 6174 696f 6e20  nal information \n+000000e0: 7265 6761 7264 696e 6720 636f 7079 7269  regarding copyri\n+000000f0: 6768 7420 6f77 6e65 7273 6869 702e 0a20  ght ownership.. \n+00000100: 2054 6865 2041 5346 206c 6963 656e 7365   The ASF license\n+00000110: 7320 7468 6973 2066 696c 6520 746f 2059  s this file to Y\n+00000120: 6f75 2075 6e64 6572 2074 6865 2041 7061  ou under the Apa\n+00000130: 6368 6520 4c69 6365 6e73 652c 2056 6572  che License, Ver\n+00000140: 7369 6f6e 2032 2e30 0a20 2028 7468 6520  sion 2.0.  (the \n+00000150: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n+00000160: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n+00000170: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n+00000180: 636f 6d70 6c69 616e 6365 2077 6974 680a  compliance with.\n+00000190: 2020 7468 6520 4c69 6365 6e73 652e 2020    the License.  \n+000001a0: 596f 7520 6d61 7920 6f62 7461 696e 2061  You may obtain a\n+000001b0: 2063 6f70 7920 6f66 2074 6865 204c 6963   copy of the Lic\n+000001c0: 656e 7365 2061 740a 0a20 2020 2020 2068  ense at..      h\n+000001d0: 7474 703a 2f2f 7777 772e 6170 6163 6865  ttp://www.apache\n+000001e0: 2e6f 7267 2f6c 6963 656e 7365 732f 4c49  .org/licenses/LI\n+000001f0: 4345 4e53 452d 322e 300a 0a20 2055 6e6c  CENSE-2.0..  Unl\n+00000200: 6573 7320 7265 7175 6972 6564 2062 7920  ess required by \n+00000210: 6170 706c 6963 6162 6c65 206c 6177 206f  applicable law o\n+00000220: 7220 6167 7265 6564 2074 6f20 696e 2077  r agreed to in w\n+00000230: 7269 7469 6e67 2c20 736f 6674 7761 7265  riting, software\n+00000240: 0a20 2064 6973 7472 6962 7574 6564 2075  .  distributed u\n+00000250: 6e64 6572 2074 6865 204c 6963 656e 7365  nder the License\n+00000260: 2069 7320 6469 7374 7269 6275 7465 6420   is distributed \n+00000270: 6f6e 2061 6e20 2241 5320 4953 2220 4241  on an \"AS IS\" BA\n+00000280: 5349 532c 0a20 2057 4954 484f 5554 2057  SIS,.  WITHOUT W\n+00000290: 4152 5241 4e54 4945 5320 4f52 2043 4f4e  ARRANTIES OR CON\n+000002a0: 4449 5449 4f4e 5320 4f46 2041 4e59 204b  DITIONS OF ANY K\n+000002b0: 494e 442c 2065 6974 6865 7220 6578 7072  IND, either expr\n+000002c0: 6573 7320 6f72 2069 6d70 6c69 6564 2e0a  ess or implied..\n+000002d0: 2020 5365 6520 7468 6520 4c69 6365 6e73    See the Licens\n+000002e0: 6520 666f 7220 7468 6520 7370 6563 6966  e for the specif\n+000002f0: 6963 206c 616e 6775 6167 6520 676f 7665  ic language gove\n+00000300: 726e 696e 6720 7065 726d 6973 7369 6f6e  rning permission\n+00000310: 7320 616e 640a 2020 6c69 6d69 7461 7469  s and.  limitati\n+00000320: 6f6e 7320 756e 6465 7220 7468 6520 4c69  ons under the Li\n+00000330: 6365 6e73 652e 0a20 2d2d 3e0a 3c70 726f  cense.. -->.<pro\n+00000340: 6a65 6374 2078 7369 3a73 6368 656d 614c  ject xsi:schemaL\n+00000350: 6f63 6174 696f 6e3d 2268 7474 703a 2f2f  ocation=\"http://\n+00000360: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n+00000370: 2f50 4f4d 2f34 2e30 2e30 2068 7474 7073  /POM/4.0.0 https\n+00000380: 3a2f 2f6d 6176 656e 2e61 7061 6368 652e  ://maven.apache.\n+00000390: 6f72 672f 7873 642f 6d61 7665 6e2d 342e  org/xsd/maven-4.\n+000003a0: 302e 302e 7873 6422 2078 6d6c 6e73 3d22  0.0.xsd\" xmlns=\"\n+000003b0: 6874 7470 3a2f 2f6d 6176 656e 2e61 7061  http://maven.apa\n+000003c0: 6368 652e 6f72 672f 504f 4d2f 342e 302e  che.org/POM/4.0.\n+000003d0: 3022 0a20 2020 2078 6d6c 6e73 3a78 7369  0\".    xmlns:xsi\n+000003e0: 3d22 6874 7470 3a2f 2f77 7777 2e77 332e  =\"http://www.w3.\n+000003f0: 6f72 672f 3230 3031 2f58 4d4c 5363 6865  org/2001/XMLSche\n+00000400: 6d61 2d69 6e73 7461 6e63 6522 3e0a 2020  ma-instance\">.  \n+00000410: 3c6d 6f64 656c 5665 7273 696f 6e3e 342e  <modelVersion>4.\n+00000420: 302e 303c 2f6d 6f64 656c 5665 7273 696f  0.0</modelVersio\n+00000430: 6e3e 0a20 203c 7061 7265 6e74 3e0a 2020  n>.  <parent>.  \n+00000440: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+00000450: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n+00000460: 7570 4964 3e0a 2020 2020 3c61 7274 6966  upId>.    <artif\n+00000470: 6163 7449 643e 6475 6262 6f2d 6d65 7461  actId>dubbo-meta\n+00000480: 6461 7461 3c2f 6172 7469 6661 6374 4964  data</artifactId\n+00000490: 3e0a 2020 2020 3c76 6572 7369 6f6e 3e32  >.    <version>2\n+000004a0: 2e37 2e31 303c 2f76 6572 7369 6f6e 3e0a  .7.10</version>.\n+000004b0: 2020 3c2f 7061 7265 6e74 3e0a 2020 3c67    </parent>.  <g\n+000004c0: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n+000004d0: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n+000004e0: 3e0a 2020 3c61 7274 6966 6163 7449 643e  >.  <artifactId>\n+000004f0: 6475 6262 6f2d 6d65 7461 6461 7461 2d72  dubbo-metadata-r\n+00000500: 6570 6f72 742d 6661 696c 6f76 6572 3c2f  eport-failover</\n+00000510: 6172 7469 6661 6374 4964 3e0a 2020 3c76  artifactId>.  <v\n+00000520: 6572 7369 6f6e 3e32 2e37 2e31 303c 2f76  ersion>2.7.10</v\n+00000530: 6572 7369 6f6e 3e0a 2020 3c6c 6963 656e  ersion>.  <licen\n+00000540: 7365 733e 0a20 2020 203c 6c69 6365 6e73  ses>.    <licens\n+00000550: 653e 0a20 2020 2020 203c 6e61 6d65 3e41  e>.      <name>A\n+00000560: 7061 6368 6520 4c69 6365 6e73 652c 2056  pache License, V\n+00000570: 6572 7369 6f6e 2032 2e30 3c2f 6e61 6d65  ersion 2.0</name\n+00000580: 3e0a 2020 2020 2020 3c75 726c 3e68 7474  >.      <url>htt\n+00000590: 703a 2f2f 7777 772e 6170 6163 6865 2e6f  p://www.apache.o\n+000005a0: 7267 2f6c 6963 656e 7365 732f 4c49 4345  rg/licenses/LICE\n+000005b0: 4e53 452d 322e 303c 2f75 726c 3e0a 2020  NSE-2.0</url>.  \n+000005c0: 2020 2020 3c64 6973 7472 6962 7574 696f      <distributio\n+000005d0: 6e3e 7265 706f 3c2f 6469 7374 7269 6275  n>repo</distribu\n+000005e0: 7469 6f6e 3e0a 2020 2020 3c2f 6c69 6365  tion>.    </lice\n+000005f0: 6e73 653e 0a20 203c 2f6c 6963 656e 7365  nse>.  </license\n+00000600: 733e 0a20 203c 6465 7065 6e64 656e 6369  s>.  <dependenci\n+00000610: 6573 3e0a 2020 2020 3c64 6570 656e 6465  es>.    <depende\n+00000620: 6e63 793e 0a20 2020 2020 203c 6772 6f75  ncy>.      <grou\n+00000630: 7049 643e 6f72 672e 6170 6163 6865 2e64  pId>org.apache.d\n+00000640: 7562 626f 3c2f 6772 6f75 7049 643e 0a20  ubbo</groupId>. \n+00000650: 2020 2020 203c 6172 7469 6661 6374 4964       <artifactId\n+00000660: 3e64 7562 626f 2d6d 6574 6164 6174 612d  >dubbo-metadata-\n+00000670: 6170 693c 2f61 7274 6966 6163 7449 643e  api</artifactId>\n+00000680: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n+00000690: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n+000006a0: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n+000006b0: 6f6e 3e0a 2020 2020 3c2f 6465 7065 6e64  on>.    </depend\n+000006c0: 656e 6379 3e0a 2020 3c2f 6465 7065 6e64  ency>.  </depend\n+000006d0: 656e 6369 6573 3e0a 3c2f 7072 6f6a 6563  encies>.</projec\n+000006e0: 743e 0a                                  t>.\n"}, {"source1": "org/apache/dubbo/config/ConfigInitializer.java", "source2": "org/apache/dubbo/config/ConfigInitializer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,36 +1,36 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-/**\n- * Dynamically add some parameters / check config\n- */\n-\n-@SPI\n-public interface ConfigInitializer {\n-\n-    default void initReferConfig(ReferenceConfig referenceConfig) {\n-\n-    }\n-\n-    default void initServiceConfig(ServiceConfig serviceConfig) {\n-\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+/**\r\n+ * Dynamically add some parameters / check config\r\n+ */\r\n+\r\n+@SPI\r\n+public interface ConfigInitializer {\r\n+\r\n+    default void initReferConfig(ReferenceConfig referenceConfig) {\r\n+\r\n+    }\r\n+\r\n+    default void initServiceConfig(ServiceConfig serviceConfig) {\r\n+\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/ConfigPostProcessor.java", "source2": "org/apache/dubbo/config/ConfigPostProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,35 +1,35 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-/**\n- * 2019/12/30\n- */\n-\n-@SPI\n-public interface ConfigPostProcessor {\n-\n-    default void postProcessReferConfig(ReferenceConfig referenceConfig) {\n-\n-    }\n-\n-    default void postProcessServiceConfig(ServiceConfig serviceConfig) {\n-\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+/**\r\n+ * 2019/12/30\r\n+ */\r\n+\r\n+@SPI\r\n+public interface ConfigPostProcessor {\r\n+\r\n+    default void postProcessReferConfig(ReferenceConfig referenceConfig) {\r\n+\r\n+    }\r\n+\r\n+    default void postProcessServiceConfig(ServiceConfig serviceConfig) {\r\n+\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/DubboShutdownHook.java", "source2": "org/apache/dubbo/config/DubboShutdownHook.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,149 +1,149 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.lang.ShutdownHookCallbacks;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.config.event.DubboServiceDestroyedEvent;\n-import org.apache.dubbo.config.event.DubboShutdownHookRegisteredEvent;\n-import org.apache.dubbo.config.event.DubboShutdownHookUnregisteredEvent;\n-import org.apache.dubbo.event.Event;\n-import org.apache.dubbo.event.EventDispatcher;\n-import org.apache.dubbo.registry.support.AbstractRegistryFactory;\n-import org.apache.dubbo.rpc.Protocol;\n-\n-import java.util.concurrent.atomic.AtomicBoolean;\n-\n-/**\n- * The shutdown hook thread to do the clean up stuff.\n- * This is a singleton in order to ensure there is only one shutdown hook registered.\n- * Because {@link ApplicationShutdownHooks} use {@link java.util.IdentityHashMap}\n- * to store the shutdown hooks.\n- */\n-public class DubboShutdownHook extends Thread {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(DubboShutdownHook.class);\n-\n-    private static final DubboShutdownHook DUBBO_SHUTDOWN_HOOK = new DubboShutdownHook(\"DubboShutdownHook\");\n-\n-    private final ShutdownHookCallbacks callbacks = ShutdownHookCallbacks.INSTANCE;\n-\n-    /**\n-     * Has it already been registered or not?\n-     */\n-    private final AtomicBoolean registered = new AtomicBoolean(false);\n-\n-    /**\n-     * Has it already been destroyed or not?\n-     */\n-    private static final AtomicBoolean destroyed = new AtomicBoolean(false);\n-\n-    private final EventDispatcher eventDispatcher = EventDispatcher.getDefaultExtension();\n-\n-    private DubboShutdownHook(String name) {\n-        super(name);\n-    }\n-\n-    public static DubboShutdownHook getDubboShutdownHook() {\n-        return DUBBO_SHUTDOWN_HOOK;\n-    }\n-\n-    @Override\n-    public void run() {\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"Run shutdown hook now.\");\n-        }\n-\n-        callback();\n-        doDestroy();\n-    }\n-\n-    /**\n-     * For testing purpose\n-     */\n-    void clear() {\n-        callbacks.clear();\n-    }\n-\n-    private void callback() {\n-        callbacks.callback();\n-    }\n-\n-    /**\n-     * Register the ShutdownHook\n-     */\n-    public void register() {\n-        if (registered.compareAndSet(false, true)) {\n-            DubboShutdownHook dubboShutdownHook = getDubboShutdownHook();\n-            Runtime.getRuntime().addShutdownHook(dubboShutdownHook);\n-            dispatch(new DubboShutdownHookRegisteredEvent(dubboShutdownHook));\n-        }\n-    }\n-\n-    /**\n-     * Unregister the ShutdownHook\n-     */\n-    public void unregister() {\n-        if (registered.compareAndSet(true, false)) {\n-            DubboShutdownHook dubboShutdownHook = getDubboShutdownHook();\n-            Runtime.getRuntime().removeShutdownHook(dubboShutdownHook);\n-            dispatch(new DubboShutdownHookUnregisteredEvent(dubboShutdownHook));\n-        }\n-    }\n-\n-    /**\n-     * Destroy all the resources, including registries and protocols.\n-     */\n-    public void doDestroy() {\n-        // dispatch the DubboDestroyedEvent @since 2.7.5\n-        dispatch(new DubboServiceDestroyedEvent(this));\n-    }\n-\n-    private void dispatch(Event event) {\n-        eventDispatcher.dispatch(event);\n-    }\n-\n-    public boolean getRegistered() {\n-        return registered.get();\n-    }\n-\n-    public static void destroyAll() {\n-        if (destroyed.compareAndSet(false, true)) {\n-            AbstractRegistryFactory.destroyAll();\n-            destroyProtocols();\n-        }\n-    }\n-\n-    /**\n-     * Destroy all the protocols.\n-     */\n-    public static void destroyProtocols() {\n-        ExtensionLoader<Protocol> loader = ExtensionLoader.getExtensionLoader(Protocol.class);\n-        for (String protocolName : loader.getLoadedExtensions()) {\n-            try {\n-                Protocol protocol = loader.getLoadedExtension(protocolName);\n-                if (protocol != null) {\n-                    protocol.destroy();\n-                }\n-            } catch (Throwable t) {\n-                logger.warn(t.getMessage(), t);\n-            }\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.lang.ShutdownHookCallbacks;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.config.event.DubboServiceDestroyedEvent;\r\n+import org.apache.dubbo.config.event.DubboShutdownHookRegisteredEvent;\r\n+import org.apache.dubbo.config.event.DubboShutdownHookUnregisteredEvent;\r\n+import org.apache.dubbo.event.Event;\r\n+import org.apache.dubbo.event.EventDispatcher;\r\n+import org.apache.dubbo.registry.support.AbstractRegistryFactory;\r\n+import org.apache.dubbo.rpc.Protocol;\r\n+\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+\r\n+/**\r\n+ * The shutdown hook thread to do the clean up stuff.\r\n+ * This is a singleton in order to ensure there is only one shutdown hook registered.\r\n+ * Because {@link ApplicationShutdownHooks} use {@link java.util.IdentityHashMap}\r\n+ * to store the shutdown hooks.\r\n+ */\r\n+public class DubboShutdownHook extends Thread {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(DubboShutdownHook.class);\r\n+\r\n+    private static final DubboShutdownHook DUBBO_SHUTDOWN_HOOK = new DubboShutdownHook(\"DubboShutdownHook\");\r\n+\r\n+    private final ShutdownHookCallbacks callbacks = ShutdownHookCallbacks.INSTANCE;\r\n+\r\n+    /**\r\n+     * Has it already been registered or not?\r\n+     */\r\n+    private final AtomicBoolean registered = new AtomicBoolean(false);\r\n+\r\n+    /**\r\n+     * Has it already been destroyed or not?\r\n+     */\r\n+    private static final AtomicBoolean destroyed = new AtomicBoolean(false);\r\n+\r\n+    private final EventDispatcher eventDispatcher = EventDispatcher.getDefaultExtension();\r\n+\r\n+    private DubboShutdownHook(String name) {\r\n+        super(name);\r\n+    }\r\n+\r\n+    public static DubboShutdownHook getDubboShutdownHook() {\r\n+        return DUBBO_SHUTDOWN_HOOK;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void run() {\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"Run shutdown hook now.\");\r\n+        }\r\n+\r\n+        callback();\r\n+        doDestroy();\r\n+    }\r\n+\r\n+    /**\r\n+     * For testing purpose\r\n+     */\r\n+    void clear() {\r\n+        callbacks.clear();\r\n+    }\r\n+\r\n+    private void callback() {\r\n+        callbacks.callback();\r\n+    }\r\n+\r\n+    /**\r\n+     * Register the ShutdownHook\r\n+     */\r\n+    public void register() {\r\n+        if (registered.compareAndSet(false, true)) {\r\n+            DubboShutdownHook dubboShutdownHook = getDubboShutdownHook();\r\n+            Runtime.getRuntime().addShutdownHook(dubboShutdownHook);\r\n+            dispatch(new DubboShutdownHookRegisteredEvent(dubboShutdownHook));\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Unregister the ShutdownHook\r\n+     */\r\n+    public void unregister() {\r\n+        if (registered.compareAndSet(true, false)) {\r\n+            DubboShutdownHook dubboShutdownHook = getDubboShutdownHook();\r\n+            Runtime.getRuntime().removeShutdownHook(dubboShutdownHook);\r\n+            dispatch(new DubboShutdownHookUnregisteredEvent(dubboShutdownHook));\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Destroy all the resources, including registries and protocols.\r\n+     */\r\n+    public void doDestroy() {\r\n+        // dispatch the DubboDestroyedEvent @since 2.7.5\r\n+        dispatch(new DubboServiceDestroyedEvent(this));\r\n+    }\r\n+\r\n+    private void dispatch(Event event) {\r\n+        eventDispatcher.dispatch(event);\r\n+    }\r\n+\r\n+    public boolean getRegistered() {\r\n+        return registered.get();\r\n+    }\r\n+\r\n+    public static void destroyAll() {\r\n+        if (destroyed.compareAndSet(false, true)) {\r\n+            AbstractRegistryFactory.destroyAll();\r\n+            destroyProtocols();\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Destroy all the protocols.\r\n+     */\r\n+    public static void destroyProtocols() {\r\n+        ExtensionLoader<Protocol> loader = ExtensionLoader.getExtensionLoader(Protocol.class);\r\n+        for (String protocolName : loader.getLoadedExtensions()) {\r\n+            try {\r\n+                Protocol protocol = loader.getLoadedExtension(protocolName);\r\n+                if (protocol != null) {\r\n+                    protocol.destroy();\r\n+                }\r\n+            } catch (Throwable t) {\r\n+                logger.warn(t.getMessage(), t);\r\n+            }\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/ReferenceConfig.java", "source2": "org/apache/dubbo/config/ReferenceConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,554 +1,554 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.Version;\n-import org.apache.dubbo.common.bytecode.Wrapper;\n-import org.apache.dubbo.common.constants.RegistryConstants;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.ConfigUtils;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.common.utils.UrlUtils;\n-import org.apache.dubbo.config.annotation.Reference;\n-import org.apache.dubbo.config.bootstrap.DubboBootstrap;\n-import org.apache.dubbo.config.event.ReferenceConfigDestroyedEvent;\n-import org.apache.dubbo.config.event.ReferenceConfigInitializedEvent;\n-import org.apache.dubbo.config.support.Parameter;\n-import org.apache.dubbo.config.utils.ConfigValidationUtils;\n-import org.apache.dubbo.event.Event;\n-import org.apache.dubbo.event.EventDispatcher;\n-import org.apache.dubbo.registry.client.metadata.MetadataUtils;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Protocol;\n-import org.apache.dubbo.rpc.ProxyFactory;\n-import org.apache.dubbo.rpc.cluster.Cluster;\n-import org.apache.dubbo.rpc.cluster.directory.StaticDirectory;\n-import org.apache.dubbo.rpc.cluster.support.ClusterUtils;\n-import org.apache.dubbo.rpc.cluster.support.registry.ZoneAwareCluster;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.AsyncMethodInfo;\n-import org.apache.dubbo.rpc.model.ConsumerModel;\n-import org.apache.dubbo.rpc.model.ServiceDescriptor;\n-import org.apache.dubbo.rpc.model.ServiceRepository;\n-import org.apache.dubbo.rpc.protocol.injvm.InjvmProtocol;\n-import org.apache.dubbo.rpc.service.GenericService;\n-import org.apache.dubbo.rpc.support.ProtocolUtils;\n-\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.HashMap;\n-import java.util.HashSet;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;\n-import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SEPARATOR;\n-import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SEPARATOR_CHAR;\n-import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.LOCALHOST_VALUE;\n-import static org.apache.dubbo.common.constants.CommonConstants.METADATA_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.METHODS_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.MONITOR_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROXY_CLASS_REF;\n-import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE;\n-import static org.apache.dubbo.common.constants.CommonConstants.REVISION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.SEMICOLON_SPLIT_PATTERN;\n-import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.SUBSCRIBED_SERVICE_NAMES_KEY;\n-import static org.apache.dubbo.common.utils.NetUtils.isInvalidLocalHost;\n-import static org.apache.dubbo.common.utils.StringUtils.splitToSet;\n-import static org.apache.dubbo.config.Constants.DUBBO_IP_TO_REGISTRY;\n-import static org.apache.dubbo.registry.Constants.CONSUMER_PROTOCOL;\n-import static org.apache.dubbo.registry.Constants.REGISTER_IP_KEY;\n-import static org.apache.dubbo.rpc.Constants.LOCAL_PROTOCOL;\n-import static org.apache.dubbo.rpc.cluster.Constants.REFER_KEY;\n-\n-/**\n- * Please avoid using this class for any new application,\n- * use {@link ReferenceConfigBase} instead.\n- */\n-public class ReferenceConfig<T> extends ReferenceConfigBase<T> {\n-\n-    public static final Logger logger = LoggerFactory.getLogger(ReferenceConfig.class);\n-\n-    /**\n-     * The {@link Protocol} implementation with adaptive functionality,it will be different in different scenarios.\n-     * A particular {@link Protocol} implementation is determined by the protocol attribute in the {@link URL}.\n-     * For example:\n-     *\n-     * <li>when the url is registry://224.5.6.7:1234/org.apache.dubbo.registry.RegistryService?application=dubbo-sample,\n-     * then the protocol is <b>RegistryProtocol</b></li>\n-     *\n-     * <li>when the url is dubbo://224.5.6.7:1234/org.apache.dubbo.config.api.DemoService?application=dubbo-sample, then\n-     * the protocol is <b>DubboProtocol</b></li>\n-     * <p>\n-     * Actually\uff0cwhen the {@link ExtensionLoader} init the {@link Protocol} instants,it will automatically wraps two\n-     * layers, and eventually will get a <b>ProtocolFilterWrapper</b> or <b>ProtocolListenerWrapper</b>\n-     */\n-    private static final Protocol REF_PROTOCOL = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();\n-\n-    /**\n-     * The {@link Cluster}'s implementation with adaptive functionality, and actually it will get a {@link Cluster}'s\n-     * specific implementation who is wrapped with <b>MockClusterInvoker</b>\n-     */\n-    private static final Cluster CLUSTER = ExtensionLoader.getExtensionLoader(Cluster.class).getAdaptiveExtension();\n-\n-    /**\n-     * A {@link ProxyFactory} implementation that will generate a reference service's proxy,the JavassistProxyFactory is\n-     * its default implementation\n-     */\n-    private static final ProxyFactory PROXY_FACTORY = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();\n-\n-    /**\n-     * The interface proxy reference\n-     */\n-    private transient volatile T ref;\n-\n-    /**\n-     * The invoker of the reference service\n-     */\n-    private transient volatile Invoker<?> invoker;\n-\n-    /**\n-     * The flag whether the ReferenceConfig has been initialized\n-     */\n-    private transient volatile boolean initialized;\n-\n-    /**\n-     * whether this ReferenceConfig has been destroyed\n-     */\n-    private transient volatile boolean destroyed;\n-\n-    private final ServiceRepository repository;\n-\n-    private DubboBootstrap bootstrap;\n-\n-    /**\n-     * The service names that the Dubbo interface subscribed.\n-     *\n-     * @since 2.7.8\n-     */\n-    private String services;\n-\n-    public ReferenceConfig() {\n-        super();\n-        this.repository = ApplicationModel.getServiceRepository();\n-    }\n-\n-    public ReferenceConfig(Reference reference) {\n-        super(reference);\n-        this.repository = ApplicationModel.getServiceRepository();\n-    }\n-\n-    /**\n-     * Get a string presenting the service names that the Dubbo interface subscribed.\n-     * If it is a multiple-values, the content will be a comma-delimited String.\n-     *\n-     * @return non-null\n-     * @see RegistryConstants#SUBSCRIBED_SERVICE_NAMES_KEY\n-     * @since 2.7.8\n-     */\n-    @Deprecated\n-    @Parameter(key = SUBSCRIBED_SERVICE_NAMES_KEY)\n-    public String getServices() {\n-        return services;\n-    }\n-\n-    /**\n-     * It's an alias method for {@link #getServices()}, but the more convenient.\n-     *\n-     * @return the String {@link List} presenting the Dubbo interface subscribed\n-     * @since 2.7.8\n-     */\n-    @Deprecated\n-    @Parameter(excluded = true)\n-    public Set<String> getSubscribedServices() {\n-        return splitToSet(getServices(), COMMA_SEPARATOR_CHAR);\n-    }\n-\n-    /**\n-     * Set the service names that the Dubbo interface subscribed.\n-     *\n-     * @param services If it is a multiple-values, the content will be a comma-delimited String.\n-     * @since 2.7.8\n-     */\n-    public void setServices(String services) {\n-        this.services = services;\n-    }\n-\n-    public synchronized T get() {\n-        if (destroyed) {\n-            throw new IllegalStateException(\"The invoker of ReferenceConfig(\" + url + \") has already destroyed!\");\n-        }\n-        if (ref == null) {\n-            init();\n-        }\n-        return ref;\n-    }\n-\n-    public synchronized void destroy() {\n-        if (ref == null) {\n-            return;\n-        }\n-        if (destroyed) {\n-            return;\n-        }\n-        destroyed = true;\n-        try {\n-            invoker.destroy();\n-        } catch (Throwable t) {\n-            logger.warn(\"Unexpected error occurred when destroy invoker of ReferenceConfig(\" + url + \").\", t);\n-        }\n-        invoker = null;\n-        ref = null;\n-\n-        // dispatch a ReferenceConfigDestroyedEvent since 2.7.4\n-        dispatch(new ReferenceConfigDestroyedEvent(this));\n-    }\n-\n-    public synchronized void init() {\n-        if (initialized) {\n-            return;\n-        }\n-\n-\n-        if (bootstrap == null) {\n-            bootstrap = DubboBootstrap.getInstance();\n-            bootstrap.initialize();\n-        }\n-\n-        checkAndUpdateSubConfigs();\n-\n-        checkStubAndLocal(interfaceClass);\n-        ConfigValidationUtils.checkMock(interfaceClass, this);\n-\n-        Map<String, String> map = new HashMap<String, String>();\n-        map.put(SIDE_KEY, CONSUMER_SIDE);\n-\n-        ReferenceConfigBase.appendRuntimeParameters(map);\n-        if (!ProtocolUtils.isGeneric(generic)) {\n-            String revision = Version.getVersion(interfaceClass, version);\n-            if (revision != null && revision.length() > 0) {\n-                map.put(REVISION_KEY, revision);\n-            }\n-\n-            String[] methods = Wrapper.getWrapper(interfaceClass).getMethodNames();\n-            if (methods.length == 0) {\n-                logger.warn(\"No method found in service interface \" + interfaceClass.getName());\n-                map.put(METHODS_KEY, ANY_VALUE);\n-            } else {\n-                map.put(METHODS_KEY, StringUtils.join(new HashSet<String>(Arrays.asList(methods)), COMMA_SEPARATOR));\n-            }\n-        }\n-        map.put(INTERFACE_KEY, interfaceName);\n-        AbstractConfig.appendParameters(map, getMetrics());\n-        AbstractConfig.appendParameters(map, getApplication());\n-        AbstractConfig.appendParameters(map, getModule());\n-        // remove 'default.' prefix for configs from ConsumerConfig\n-        // appendParameters(map, consumer, Constants.DEFAULT_KEY);\n-        AbstractConfig.appendParameters(map, consumer);\n-        AbstractConfig.appendParameters(map, this);\n-        MetadataReportConfig metadataReportConfig = getMetadataReportConfig();\n-        if (metadataReportConfig != null && metadataReportConfig.isValid()) {\n-            map.putIfAbsent(METADATA_KEY, REMOTE_METADATA_STORAGE_TYPE);\n-        }\n-        Map<String, AsyncMethodInfo> attributes = null;\n-        if (CollectionUtils.isNotEmpty(getMethods())) {\n-            attributes = new HashMap<>();\n-            for (MethodConfig methodConfig : getMethods()) {\n-                AbstractConfig.appendParameters(map, methodConfig, methodConfig.getName());\n-                String retryKey = methodConfig.getName() + \".retry\";\n-                if (map.containsKey(retryKey)) {\n-                    String retryValue = map.remove(retryKey);\n-                    if (\"false\".equals(retryValue)) {\n-                        map.put(methodConfig.getName() + \".retries\", \"0\");\n-                    }\n-                }\n-                AsyncMethodInfo asyncMethodInfo = AbstractConfig.convertMethodConfig2AsyncInfo(methodConfig);\n-                if (asyncMethodInfo != null) {\n-//                    consumerModel.getMethodModel(methodConfig.getName()).addAttribute(ASYNC_KEY, asyncMethodInfo);\n-                    attributes.put(methodConfig.getName(), asyncMethodInfo);\n-                }\n-            }\n-        }\n-\n-        String hostToRegistry = ConfigUtils.getSystemProperty(DUBBO_IP_TO_REGISTRY);\n-        if (StringUtils.isEmpty(hostToRegistry)) {\n-            hostToRegistry = NetUtils.getLocalHost();\n-        } else if (isInvalidLocalHost(hostToRegistry)) {\n-            throw new IllegalArgumentException(\n-                    \"Specified invalid registry ip from property:\" + DUBBO_IP_TO_REGISTRY + \", value:\" + hostToRegistry);\n-        }\n-        map.put(REGISTER_IP_KEY, hostToRegistry);\n-\n-        serviceMetadata.getAttachments().putAll(map);\n-\n-        ref = createProxy(map);\n-\n-        serviceMetadata.setTarget(ref);\n-        serviceMetadata.addAttribute(PROXY_CLASS_REF, ref);\n-        ConsumerModel consumerModel = repository.lookupReferredService(serviceMetadata.getServiceKey());\n-        consumerModel.setProxyObject(ref);\n-        consumerModel.init(attributes);\n-\n-        initialized = true;\n-\n-        checkInvokerAvailable();\n-\n-        // dispatch a ReferenceConfigInitializedEvent since 2.7.4\n-        dispatch(new ReferenceConfigInitializedEvent(this, invoker));\n-    }\n-\n-    @SuppressWarnings({\"unchecked\", \"rawtypes\", \"deprecation\"})\n-    private T createProxy(Map<String, String> map) {\n-        if (shouldJvmRefer(map)) {\n-            URL url = new URL(LOCAL_PROTOCOL, LOCALHOST_VALUE, 0, interfaceClass.getName()).addParameters(map);\n-            invoker = REF_PROTOCOL.refer(interfaceClass, url);\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"Using injvm service \" + interfaceClass.getName());\n-            }\n-        } else {\n-            urls.clear();\n-            if (url != null && url.length() > 0) { // user specified URL, could be peer-to-peer address, or register center's address.\n-                String[] us = SEMICOLON_SPLIT_PATTERN.split(url);\n-                if (us != null && us.length > 0) {\n-                    for (String u : us) {\n-                        URL url = URL.valueOf(u);\n-                        if (StringUtils.isEmpty(url.getPath())) {\n-                            url = url.setPath(interfaceName);\n-                        }\n-                        if (UrlUtils.isRegistry(url)) {\n-                            urls.add(url.addParameterAndEncoded(REFER_KEY, StringUtils.toQueryString(map)));\n-                        } else {\n-                            urls.add(ClusterUtils.mergeUrl(url, map));\n-                        }\n-                    }\n-                }\n-            } else { // assemble URL from register center's configuration\n-                // if protocols not injvm checkRegistry\n-                if (!LOCAL_PROTOCOL.equalsIgnoreCase(getProtocol())) {\n-                    checkRegistry();\n-                    List<URL> us = ConfigValidationUtils.loadRegistries(this, false);\n-                    if (CollectionUtils.isNotEmpty(us)) {\n-                        for (URL u : us) {\n-                            URL monitorUrl = ConfigValidationUtils.loadMonitor(this, u);\n-                            if (monitorUrl != null) {\n-                                map.put(MONITOR_KEY, URL.encode(monitorUrl.toFullString()));\n-                            }\n-                            urls.add(u.addParameterAndEncoded(REFER_KEY, StringUtils.toQueryString(map)));\n-                        }\n-                    }\n-                    if (urls.isEmpty()) {\n-                        throw new IllegalStateException(\n-                                \"No such any registry to reference \" + interfaceName + \" on the consumer \" + NetUtils.getLocalHost() +\n-                                        \" use dubbo version \" + Version.getVersion() +\n-                                        \", please config <dubbo:registry address=\\\"...\\\" /> to your spring config.\");\n-                    }\n-                }\n-            }\n-\n-            if (urls.size() == 1) {\n-                invoker = REF_PROTOCOL.refer(interfaceClass, urls.get(0));\n-            } else {\n-                List<Invoker<?>> invokers = new ArrayList<Invoker<?>>();\n-                URL registryURL = null;\n-                for (URL url : urls) {\n-                    Invoker<?> referInvoker = REF_PROTOCOL.refer(interfaceClass, url);\n-                    if (shouldCheck()) {\n-                        if (referInvoker.isAvailable()) {\n-                            invokers.add(referInvoker);\n-                        } else {\n-                            referInvoker.destroy();\n-                        }\n-                    } else {\n-                        invokers.add(referInvoker);\n-                    }\n-\n-                    if (UrlUtils.isRegistry(url)) {\n-                        registryURL = url; // use last registry url\n-                    }\n-                }\n-\n-                if (shouldCheck() && invokers.size() == 0) {\n-                    throw new IllegalStateException(\"Failed to check the status of the service \"\n-                            + interfaceName\n-                            + \". No provider available for the service \"\n-                            + (group == null ? \"\" : group + \"/\")\n-                            + interfaceName +\n-                            (version == null ? \"\" : \":\" + version)\n-                            + \" from the multi registry cluster\"\n-                            + \" use dubbo version \" + Version.getVersion());\n-                }\n-\n-                if (registryURL != null) { // registry url is available\n-                    // for multi-subscription scenario, use 'zone-aware' policy by default\n-                    String cluster = registryURL.getParameter(CLUSTER_KEY, ZoneAwareCluster.NAME);\n-                    // The invoker wrap sequence would be: ZoneAwareClusterInvoker(StaticDirectory) -> FailoverClusterInvoker(RegistryDirectory, routing happens here) -> Invoker\n-                    invoker = Cluster.getCluster(cluster, false).join(new StaticDirectory(registryURL, invokers));\n-                } else { // not a registry url, must be direct invoke.\n-                    String cluster = CollectionUtils.isNotEmpty(invokers)\n-                            ?\n-                            (invokers.get(0).getUrl() != null ? invokers.get(0).getUrl().getParameter(CLUSTER_KEY, ZoneAwareCluster.NAME) :\n-                                    Cluster.DEFAULT)\n-                            : Cluster.DEFAULT;\n-                    invoker = Cluster.getCluster(cluster).join(new StaticDirectory(invokers));\n-                }\n-            }\n-        }\n-\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"Refer dubbo service \" + interfaceClass.getName() + \" from url \" + invoker.getUrl());\n-        }\n-\n-        URL consumerURL = new URL(CONSUMER_PROTOCOL, map.remove(REGISTER_IP_KEY), 0, map.get(INTERFACE_KEY), map);\n-        MetadataUtils.publishServiceDefinition(consumerURL);\n-\n-        // create service proxy\n-        return (T) PROXY_FACTORY.getProxy(invoker, ProtocolUtils.isGeneric(generic));\n-    }\n-\n-    private void checkInvokerAvailable() throws IllegalStateException {\n-        if (shouldCheck() && !invoker.isAvailable()) {\n-            invoker.destroy();\n-            throw new IllegalStateException(\"Failed to check the status of the service \"\n-                    + interfaceName\n-                    + \". No provider available for the service \"\n-                    + (group == null ? \"\" : group + \"/\")\n-                    + interfaceName +\n-                    (version == null ? \"\" : \":\" + version)\n-                    + \" from the url \"\n-                    + invoker.getUrl()\n-                    + \" to the consumer \"\n-                    + NetUtils.getLocalHost() + \" use dubbo version \" + Version.getVersion());\n-        }\n-    }\n-\n-    /**\n-     * This method should be called right after the creation of this class's instance, before any property in other config modules is used.\n-     * Check each config modules are created properly and override their properties if necessary.\n-     */\n-    public void checkAndUpdateSubConfigs() {\n-        if (StringUtils.isEmpty(interfaceName)) {\n-            throw new IllegalStateException(\"<dubbo:reference interface=\\\"\\\" /> interface not allow null!\");\n-        }\n-        completeCompoundConfigs(consumer);\n-        // get consumer's global configuration\n-        checkDefault();\n-\n-        // init some null configuration.\n-        List<ConfigInitializer> configInitializers = ExtensionLoader.getExtensionLoader(ConfigInitializer.class)\n-                .getActivateExtension(URL.valueOf(\"configInitializer://\"), (String[]) null);\n-        configInitializers.forEach(e -> e.initReferConfig(this));\n-\n-        this.refresh();\n-        if (getGeneric() == null && getConsumer() != null) {\n-            setGeneric(getConsumer().getGeneric());\n-        }\n-        if (ProtocolUtils.isGeneric(generic)) {\n-            interfaceClass = GenericService.class;\n-        } else {\n-            try {\n-                interfaceClass = Class.forName(interfaceName, true, Thread.currentThread()\n-                        .getContextClassLoader());\n-            } catch (ClassNotFoundException e) {\n-                throw new IllegalStateException(e.getMessage(), e);\n-            }\n-            checkInterfaceAndMethods(interfaceClass, getMethods());\n-        }\n-\n-        initServiceMetadata(consumer);\n-        serviceMetadata.setServiceType(getActualInterface());\n-        // TODO, uncomment this line once service key is unified\n-        serviceMetadata.setServiceKey(URL.buildKey(interfaceName, group, version));\n-\n-        ServiceRepository repository = ApplicationModel.getServiceRepository();\n-        ServiceDescriptor serviceDescriptor = repository.registerService(interfaceClass);\n-        repository.registerConsumer(\n-                serviceMetadata.getServiceKey(),\n-                serviceDescriptor,\n-                this,\n-                null,\n-                serviceMetadata);\n-\n-        resolveFile();\n-        ConfigValidationUtils.validateReferenceConfig(this);\n-        postProcessConfig();\n-    }\n-\n-\n-    /**\n-     * Figure out should refer the service in the same JVM from configurations. The default behavior is true\n-     * 1. if injvm is specified, then use it\n-     * 2. then if a url is specified, then assume it's a remote call\n-     * 3. otherwise, check scope parameter\n-     * 4. if scope is not specified but the target service is provided in the same JVM, then prefer to make the local\n-     * call, which is the default behavior\n-     */\n-    protected boolean shouldJvmRefer(Map<String, String> map) {\n-        URL tmpUrl = new URL(\"temp\", \"localhost\", 0, map);\n-        boolean isJvmRefer;\n-        if (isInjvm() == null) {\n-            // if a url is specified, don't do local reference\n-            if (url != null && url.length() > 0) {\n-                isJvmRefer = false;\n-            } else {\n-                // by default, reference local service if there is\n-                isJvmRefer = InjvmProtocol.getInjvmProtocol().isInjvmRefer(tmpUrl);\n-            }\n-        } else {\n-            isJvmRefer = isInjvm();\n-        }\n-        return isJvmRefer;\n-    }\n-\n-    /**\n-     * Dispatch an {@link Event event}\n-     *\n-     * @param event an {@link Event event}\n-     * @since 2.7.5\n-     */\n-    protected void dispatch(Event event) {\n-        EventDispatcher.getDefaultExtension().dispatch(event);\n-    }\n-\n-    public DubboBootstrap getBootstrap() {\n-        return bootstrap;\n-    }\n-\n-    public void setBootstrap(DubboBootstrap bootstrap) {\n-        this.bootstrap = bootstrap;\n-    }\n-\n-    private void postProcessConfig() {\n-        List<ConfigPostProcessor> configPostProcessors = ExtensionLoader.getExtensionLoader(ConfigPostProcessor.class)\n-                .getActivateExtension(URL.valueOf(\"configPostProcessor://\"), (String[]) null);\n-        configPostProcessors.forEach(component -> component.postProcessReferConfig(this));\n-    }\n-\n-    // just for test\n-    Invoker<?> getInvoker() {\n-        return invoker;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.Version;\r\n+import org.apache.dubbo.common.bytecode.Wrapper;\r\n+import org.apache.dubbo.common.constants.RegistryConstants;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.ConfigUtils;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.common.utils.UrlUtils;\r\n+import org.apache.dubbo.config.annotation.Reference;\r\n+import org.apache.dubbo.config.bootstrap.DubboBootstrap;\r\n+import org.apache.dubbo.config.event.ReferenceConfigDestroyedEvent;\r\n+import org.apache.dubbo.config.event.ReferenceConfigInitializedEvent;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+import org.apache.dubbo.config.utils.ConfigValidationUtils;\r\n+import org.apache.dubbo.event.Event;\r\n+import org.apache.dubbo.event.EventDispatcher;\r\n+import org.apache.dubbo.registry.client.metadata.MetadataUtils;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Protocol;\r\n+import org.apache.dubbo.rpc.ProxyFactory;\r\n+import org.apache.dubbo.rpc.cluster.Cluster;\r\n+import org.apache.dubbo.rpc.cluster.directory.StaticDirectory;\r\n+import org.apache.dubbo.rpc.cluster.support.ClusterUtils;\r\n+import org.apache.dubbo.rpc.cluster.support.registry.ZoneAwareCluster;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.AsyncMethodInfo;\r\n+import org.apache.dubbo.rpc.model.ConsumerModel;\r\n+import org.apache.dubbo.rpc.model.ServiceDescriptor;\r\n+import org.apache.dubbo.rpc.model.ServiceRepository;\r\n+import org.apache.dubbo.rpc.protocol.injvm.InjvmProtocol;\r\n+import org.apache.dubbo.rpc.service.GenericService;\r\n+import org.apache.dubbo.rpc.support.ProtocolUtils;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.HashMap;\r\n+import java.util.HashSet;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SEPARATOR;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SEPARATOR_CHAR;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.LOCALHOST_VALUE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.METADATA_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.METHODS_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.MONITOR_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROXY_CLASS_REF;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REVISION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SEMICOLON_SPLIT_PATTERN;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.SUBSCRIBED_SERVICE_NAMES_KEY;\r\n+import static org.apache.dubbo.common.utils.NetUtils.isInvalidLocalHost;\r\n+import static org.apache.dubbo.common.utils.StringUtils.splitToSet;\r\n+import static org.apache.dubbo.config.Constants.DUBBO_IP_TO_REGISTRY;\r\n+import static org.apache.dubbo.registry.Constants.CONSUMER_PROTOCOL;\r\n+import static org.apache.dubbo.registry.Constants.REGISTER_IP_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.LOCAL_PROTOCOL;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.REFER_KEY;\r\n+\r\n+/**\r\n+ * Please avoid using this class for any new application,\r\n+ * use {@link ReferenceConfigBase} instead.\r\n+ */\r\n+public class ReferenceConfig<T> extends ReferenceConfigBase<T> {\r\n+\r\n+    public static final Logger logger = LoggerFactory.getLogger(ReferenceConfig.class);\r\n+\r\n+    /**\r\n+     * The {@link Protocol} implementation with adaptive functionality,it will be different in different scenarios.\r\n+     * A particular {@link Protocol} implementation is determined by the protocol attribute in the {@link URL}.\r\n+     * For example:\r\n+     *\r\n+     * <li>when the url is registry://224.5.6.7:1234/org.apache.dubbo.registry.RegistryService?application=dubbo-sample,\r\n+     * then the protocol is <b>RegistryProtocol</b></li>\r\n+     *\r\n+     * <li>when the url is dubbo://224.5.6.7:1234/org.apache.dubbo.config.api.DemoService?application=dubbo-sample, then\r\n+     * the protocol is <b>DubboProtocol</b></li>\r\n+     * <p>\r\n+     * Actually\uff0cwhen the {@link ExtensionLoader} init the {@link Protocol} instants,it will automatically wraps two\r\n+     * layers, and eventually will get a <b>ProtocolFilterWrapper</b> or <b>ProtocolListenerWrapper</b>\r\n+     */\r\n+    private static final Protocol REF_PROTOCOL = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();\r\n+\r\n+    /**\r\n+     * The {@link Cluster}'s implementation with adaptive functionality, and actually it will get a {@link Cluster}'s\r\n+     * specific implementation who is wrapped with <b>MockClusterInvoker</b>\r\n+     */\r\n+    private static final Cluster CLUSTER = ExtensionLoader.getExtensionLoader(Cluster.class).getAdaptiveExtension();\r\n+\r\n+    /**\r\n+     * A {@link ProxyFactory} implementation that will generate a reference service's proxy,the JavassistProxyFactory is\r\n+     * its default implementation\r\n+     */\r\n+    private static final ProxyFactory PROXY_FACTORY = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();\r\n+\r\n+    /**\r\n+     * The interface proxy reference\r\n+     */\r\n+    private transient volatile T ref;\r\n+\r\n+    /**\r\n+     * The invoker of the reference service\r\n+     */\r\n+    private transient volatile Invoker<?> invoker;\r\n+\r\n+    /**\r\n+     * The flag whether the ReferenceConfig has been initialized\r\n+     */\r\n+    private transient volatile boolean initialized;\r\n+\r\n+    /**\r\n+     * whether this ReferenceConfig has been destroyed\r\n+     */\r\n+    private transient volatile boolean destroyed;\r\n+\r\n+    private final ServiceRepository repository;\r\n+\r\n+    private DubboBootstrap bootstrap;\r\n+\r\n+    /**\r\n+     * The service names that the Dubbo interface subscribed.\r\n+     *\r\n+     * @since 2.7.8\r\n+     */\r\n+    private String services;\r\n+\r\n+    public ReferenceConfig() {\r\n+        super();\r\n+        this.repository = ApplicationModel.getServiceRepository();\r\n+    }\r\n+\r\n+    public ReferenceConfig(Reference reference) {\r\n+        super(reference);\r\n+        this.repository = ApplicationModel.getServiceRepository();\r\n+    }\r\n+\r\n+    /**\r\n+     * Get a string presenting the service names that the Dubbo interface subscribed.\r\n+     * If it is a multiple-values, the content will be a comma-delimited String.\r\n+     *\r\n+     * @return non-null\r\n+     * @see RegistryConstants#SUBSCRIBED_SERVICE_NAMES_KEY\r\n+     * @since 2.7.8\r\n+     */\r\n+    @Deprecated\r\n+    @Parameter(key = SUBSCRIBED_SERVICE_NAMES_KEY)\r\n+    public String getServices() {\r\n+        return services;\r\n+    }\r\n+\r\n+    /**\r\n+     * It's an alias method for {@link #getServices()}, but the more convenient.\r\n+     *\r\n+     * @return the String {@link List} presenting the Dubbo interface subscribed\r\n+     * @since 2.7.8\r\n+     */\r\n+    @Deprecated\r\n+    @Parameter(excluded = true)\r\n+    public Set<String> getSubscribedServices() {\r\n+        return splitToSet(getServices(), COMMA_SEPARATOR_CHAR);\r\n+    }\r\n+\r\n+    /**\r\n+     * Set the service names that the Dubbo interface subscribed.\r\n+     *\r\n+     * @param services If it is a multiple-values, the content will be a comma-delimited String.\r\n+     * @since 2.7.8\r\n+     */\r\n+    public void setServices(String services) {\r\n+        this.services = services;\r\n+    }\r\n+\r\n+    public synchronized T get() {\r\n+        if (destroyed) {\r\n+            throw new IllegalStateException(\"The invoker of ReferenceConfig(\" + url + \") has already destroyed!\");\r\n+        }\r\n+        if (ref == null) {\r\n+            init();\r\n+        }\r\n+        return ref;\r\n+    }\r\n+\r\n+    public synchronized void destroy() {\r\n+        if (ref == null) {\r\n+            return;\r\n+        }\r\n+        if (destroyed) {\r\n+            return;\r\n+        }\r\n+        destroyed = true;\r\n+        try {\r\n+            invoker.destroy();\r\n+        } catch (Throwable t) {\r\n+            logger.warn(\"Unexpected error occurred when destroy invoker of ReferenceConfig(\" + url + \").\", t);\r\n+        }\r\n+        invoker = null;\r\n+        ref = null;\r\n+\r\n+        // dispatch a ReferenceConfigDestroyedEvent since 2.7.4\r\n+        dispatch(new ReferenceConfigDestroyedEvent(this));\r\n+    }\r\n+\r\n+    public synchronized void init() {\r\n+        if (initialized) {\r\n+            return;\r\n+        }\r\n+\r\n+\r\n+        if (bootstrap == null) {\r\n+            bootstrap = DubboBootstrap.getInstance();\r\n+            bootstrap.initialize();\r\n+        }\r\n+\r\n+        checkAndUpdateSubConfigs();\r\n+\r\n+        checkStubAndLocal(interfaceClass);\r\n+        ConfigValidationUtils.checkMock(interfaceClass, this);\r\n+\r\n+        Map<String, String> map = new HashMap<String, String>();\r\n+        map.put(SIDE_KEY, CONSUMER_SIDE);\r\n+\r\n+        ReferenceConfigBase.appendRuntimeParameters(map);\r\n+        if (!ProtocolUtils.isGeneric(generic)) {\r\n+            String revision = Version.getVersion(interfaceClass, version);\r\n+            if (revision != null && revision.length() > 0) {\r\n+                map.put(REVISION_KEY, revision);\r\n+            }\r\n+\r\n+            String[] methods = Wrapper.getWrapper(interfaceClass).getMethodNames();\r\n+            if (methods.length == 0) {\r\n+                logger.warn(\"No method found in service interface \" + interfaceClass.getName());\r\n+                map.put(METHODS_KEY, ANY_VALUE);\r\n+            } else {\r\n+                map.put(METHODS_KEY, StringUtils.join(new HashSet<String>(Arrays.asList(methods)), COMMA_SEPARATOR));\r\n+            }\r\n+        }\r\n+        map.put(INTERFACE_KEY, interfaceName);\r\n+        AbstractConfig.appendParameters(map, getMetrics());\r\n+        AbstractConfig.appendParameters(map, getApplication());\r\n+        AbstractConfig.appendParameters(map, getModule());\r\n+        // remove 'default.' prefix for configs from ConsumerConfig\r\n+        // appendParameters(map, consumer, Constants.DEFAULT_KEY);\r\n+        AbstractConfig.appendParameters(map, consumer);\r\n+        AbstractConfig.appendParameters(map, this);\r\n+        MetadataReportConfig metadataReportConfig = getMetadataReportConfig();\r\n+        if (metadataReportConfig != null && metadataReportConfig.isValid()) {\r\n+            map.putIfAbsent(METADATA_KEY, REMOTE_METADATA_STORAGE_TYPE);\r\n+        }\r\n+        Map<String, AsyncMethodInfo> attributes = null;\r\n+        if (CollectionUtils.isNotEmpty(getMethods())) {\r\n+            attributes = new HashMap<>();\r\n+            for (MethodConfig methodConfig : getMethods()) {\r\n+                AbstractConfig.appendParameters(map, methodConfig, methodConfig.getName());\r\n+                String retryKey = methodConfig.getName() + \".retry\";\r\n+                if (map.containsKey(retryKey)) {\r\n+                    String retryValue = map.remove(retryKey);\r\n+                    if (\"false\".equals(retryValue)) {\r\n+                        map.put(methodConfig.getName() + \".retries\", \"0\");\r\n+                    }\r\n+                }\r\n+                AsyncMethodInfo asyncMethodInfo = AbstractConfig.convertMethodConfig2AsyncInfo(methodConfig);\r\n+                if (asyncMethodInfo != null) {\r\n+//                    consumerModel.getMethodModel(methodConfig.getName()).addAttribute(ASYNC_KEY, asyncMethodInfo);\r\n+                    attributes.put(methodConfig.getName(), asyncMethodInfo);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        String hostToRegistry = ConfigUtils.getSystemProperty(DUBBO_IP_TO_REGISTRY);\r\n+        if (StringUtils.isEmpty(hostToRegistry)) {\r\n+            hostToRegistry = NetUtils.getLocalHost();\r\n+        } else if (isInvalidLocalHost(hostToRegistry)) {\r\n+            throw new IllegalArgumentException(\r\n+                    \"Specified invalid registry ip from property:\" + DUBBO_IP_TO_REGISTRY + \", value:\" + hostToRegistry);\r\n+        }\r\n+        map.put(REGISTER_IP_KEY, hostToRegistry);\r\n+\r\n+        serviceMetadata.getAttachments().putAll(map);\r\n+\r\n+        ref = createProxy(map);\r\n+\r\n+        serviceMetadata.setTarget(ref);\r\n+        serviceMetadata.addAttribute(PROXY_CLASS_REF, ref);\r\n+        ConsumerModel consumerModel = repository.lookupReferredService(serviceMetadata.getServiceKey());\r\n+        consumerModel.setProxyObject(ref);\r\n+        consumerModel.init(attributes);\r\n+\r\n+        initialized = true;\r\n+\r\n+        checkInvokerAvailable();\r\n+\r\n+        // dispatch a ReferenceConfigInitializedEvent since 2.7.4\r\n+        dispatch(new ReferenceConfigInitializedEvent(this, invoker));\r\n+    }\r\n+\r\n+    @SuppressWarnings({\"unchecked\", \"rawtypes\", \"deprecation\"})\r\n+    private T createProxy(Map<String, String> map) {\r\n+        if (shouldJvmRefer(map)) {\r\n+            URL url = new URL(LOCAL_PROTOCOL, LOCALHOST_VALUE, 0, interfaceClass.getName()).addParameters(map);\r\n+            invoker = REF_PROTOCOL.refer(interfaceClass, url);\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"Using injvm service \" + interfaceClass.getName());\r\n+            }\r\n+        } else {\r\n+            urls.clear();\r\n+            if (url != null && url.length() > 0) { // user specified URL, could be peer-to-peer address, or register center's address.\r\n+                String[] us = SEMICOLON_SPLIT_PATTERN.split(url);\r\n+                if (us != null && us.length > 0) {\r\n+                    for (String u : us) {\r\n+                        URL url = URL.valueOf(u);\r\n+                        if (StringUtils.isEmpty(url.getPath())) {\r\n+                            url = url.setPath(interfaceName);\r\n+                        }\r\n+                        if (UrlUtils.isRegistry(url)) {\r\n+                            urls.add(url.addParameterAndEncoded(REFER_KEY, StringUtils.toQueryString(map)));\r\n+                        } else {\r\n+                            urls.add(ClusterUtils.mergeUrl(url, map));\r\n+                        }\r\n+                    }\r\n+                }\r\n+            } else { // assemble URL from register center's configuration\r\n+                // if protocols not injvm checkRegistry\r\n+                if (!LOCAL_PROTOCOL.equalsIgnoreCase(getProtocol())) {\r\n+                    checkRegistry();\r\n+                    List<URL> us = ConfigValidationUtils.loadRegistries(this, false);\r\n+                    if (CollectionUtils.isNotEmpty(us)) {\r\n+                        for (URL u : us) {\r\n+                            URL monitorUrl = ConfigValidationUtils.loadMonitor(this, u);\r\n+                            if (monitorUrl != null) {\r\n+                                map.put(MONITOR_KEY, URL.encode(monitorUrl.toFullString()));\r\n+                            }\r\n+                            urls.add(u.addParameterAndEncoded(REFER_KEY, StringUtils.toQueryString(map)));\r\n+                        }\r\n+                    }\r\n+                    if (urls.isEmpty()) {\r\n+                        throw new IllegalStateException(\r\n+                                \"No such any registry to reference \" + interfaceName + \" on the consumer \" + NetUtils.getLocalHost() +\r\n+                                        \" use dubbo version \" + Version.getVersion() +\r\n+                                        \", please config <dubbo:registry address=\\\"...\\\" /> to your spring config.\");\r\n+                    }\r\n+                }\r\n+            }\r\n+\r\n+            if (urls.size() == 1) {\r\n+                invoker = REF_PROTOCOL.refer(interfaceClass, urls.get(0));\r\n+            } else {\r\n+                List<Invoker<?>> invokers = new ArrayList<Invoker<?>>();\r\n+                URL registryURL = null;\r\n+                for (URL url : urls) {\r\n+                    Invoker<?> referInvoker = REF_PROTOCOL.refer(interfaceClass, url);\r\n+                    if (shouldCheck()) {\r\n+                        if (referInvoker.isAvailable()) {\r\n+                            invokers.add(referInvoker);\r\n+                        } else {\r\n+                            referInvoker.destroy();\r\n+                        }\r\n+                    } else {\r\n+                        invokers.add(referInvoker);\r\n+                    }\r\n+\r\n+                    if (UrlUtils.isRegistry(url)) {\r\n+                        registryURL = url; // use last registry url\r\n+                    }\r\n+                }\r\n+\r\n+                if (shouldCheck() && invokers.size() == 0) {\r\n+                    throw new IllegalStateException(\"Failed to check the status of the service \"\r\n+                            + interfaceName\r\n+                            + \". No provider available for the service \"\r\n+                            + (group == null ? \"\" : group + \"/\")\r\n+                            + interfaceName +\r\n+                            (version == null ? \"\" : \":\" + version)\r\n+                            + \" from the multi registry cluster\"\r\n+                            + \" use dubbo version \" + Version.getVersion());\r\n+                }\r\n+\r\n+                if (registryURL != null) { // registry url is available\r\n+                    // for multi-subscription scenario, use 'zone-aware' policy by default\r\n+                    String cluster = registryURL.getParameter(CLUSTER_KEY, ZoneAwareCluster.NAME);\r\n+                    // The invoker wrap sequence would be: ZoneAwareClusterInvoker(StaticDirectory) -> FailoverClusterInvoker(RegistryDirectory, routing happens here) -> Invoker\r\n+                    invoker = Cluster.getCluster(cluster, false).join(new StaticDirectory(registryURL, invokers));\r\n+                } else { // not a registry url, must be direct invoke.\r\n+                    String cluster = CollectionUtils.isNotEmpty(invokers)\r\n+                            ?\r\n+                            (invokers.get(0).getUrl() != null ? invokers.get(0).getUrl().getParameter(CLUSTER_KEY, ZoneAwareCluster.NAME) :\r\n+                                    Cluster.DEFAULT)\r\n+                            : Cluster.DEFAULT;\r\n+                    invoker = Cluster.getCluster(cluster).join(new StaticDirectory(invokers));\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"Refer dubbo service \" + interfaceClass.getName() + \" from url \" + invoker.getUrl());\r\n+        }\r\n+\r\n+        URL consumerURL = new URL(CONSUMER_PROTOCOL, map.remove(REGISTER_IP_KEY), 0, map.get(INTERFACE_KEY), map);\r\n+        MetadataUtils.publishServiceDefinition(consumerURL);\r\n+\r\n+        // create service proxy\r\n+        return (T) PROXY_FACTORY.getProxy(invoker, ProtocolUtils.isGeneric(generic));\r\n+    }\r\n+\r\n+    private void checkInvokerAvailable() throws IllegalStateException {\r\n+        if (shouldCheck() && !invoker.isAvailable()) {\r\n+            invoker.destroy();\r\n+            throw new IllegalStateException(\"Failed to check the status of the service \"\r\n+                    + interfaceName\r\n+                    + \". No provider available for the service \"\r\n+                    + (group == null ? \"\" : group + \"/\")\r\n+                    + interfaceName +\r\n+                    (version == null ? \"\" : \":\" + version)\r\n+                    + \" from the url \"\r\n+                    + invoker.getUrl()\r\n+                    + \" to the consumer \"\r\n+                    + NetUtils.getLocalHost() + \" use dubbo version \" + Version.getVersion());\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * This method should be called right after the creation of this class's instance, before any property in other config modules is used.\r\n+     * Check each config modules are created properly and override their properties if necessary.\r\n+     */\r\n+    public void checkAndUpdateSubConfigs() {\r\n+        if (StringUtils.isEmpty(interfaceName)) {\r\n+            throw new IllegalStateException(\"<dubbo:reference interface=\\\"\\\" /> interface not allow null!\");\r\n+        }\r\n+        completeCompoundConfigs(consumer);\r\n+        // get consumer's global configuration\r\n+        checkDefault();\r\n+\r\n+        // init some null configuration.\r\n+        List<ConfigInitializer> configInitializers = ExtensionLoader.getExtensionLoader(ConfigInitializer.class)\r\n+                .getActivateExtension(URL.valueOf(\"configInitializer://\"), (String[]) null);\r\n+        configInitializers.forEach(e -> e.initReferConfig(this));\r\n+\r\n+        this.refresh();\r\n+        if (getGeneric() == null && getConsumer() != null) {\r\n+            setGeneric(getConsumer().getGeneric());\r\n+        }\r\n+        if (ProtocolUtils.isGeneric(generic)) {\r\n+            interfaceClass = GenericService.class;\r\n+        } else {\r\n+            try {\r\n+                interfaceClass = Class.forName(interfaceName, true, Thread.currentThread()\r\n+                        .getContextClassLoader());\r\n+            } catch (ClassNotFoundException e) {\r\n+                throw new IllegalStateException(e.getMessage(), e);\r\n+            }\r\n+            checkInterfaceAndMethods(interfaceClass, getMethods());\r\n+        }\r\n+\r\n+        initServiceMetadata(consumer);\r\n+        serviceMetadata.setServiceType(getActualInterface());\r\n+        // TODO, uncomment this line once service key is unified\r\n+        serviceMetadata.setServiceKey(URL.buildKey(interfaceName, group, version));\r\n+\r\n+        ServiceRepository repository = ApplicationModel.getServiceRepository();\r\n+        ServiceDescriptor serviceDescriptor = repository.registerService(interfaceClass);\r\n+        repository.registerConsumer(\r\n+                serviceMetadata.getServiceKey(),\r\n+                serviceDescriptor,\r\n+                this,\r\n+                null,\r\n+                serviceMetadata);\r\n+\r\n+        resolveFile();\r\n+        ConfigValidationUtils.validateReferenceConfig(this);\r\n+        postProcessConfig();\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Figure out should refer the service in the same JVM from configurations. The default behavior is true\r\n+     * 1. if injvm is specified, then use it\r\n+     * 2. then if a url is specified, then assume it's a remote call\r\n+     * 3. otherwise, check scope parameter\r\n+     * 4. if scope is not specified but the target service is provided in the same JVM, then prefer to make the local\r\n+     * call, which is the default behavior\r\n+     */\r\n+    protected boolean shouldJvmRefer(Map<String, String> map) {\r\n+        URL tmpUrl = new URL(\"temp\", \"localhost\", 0, map);\r\n+        boolean isJvmRefer;\r\n+        if (isInjvm() == null) {\r\n+            // if a url is specified, don't do local reference\r\n+            if (url != null && url.length() > 0) {\r\n+                isJvmRefer = false;\r\n+            } else {\r\n+                // by default, reference local service if there is\r\n+                isJvmRefer = InjvmProtocol.getInjvmProtocol().isInjvmRefer(tmpUrl);\r\n+            }\r\n+        } else {\r\n+            isJvmRefer = isInjvm();\r\n+        }\r\n+        return isJvmRefer;\r\n+    }\r\n+\r\n+    /**\r\n+     * Dispatch an {@link Event event}\r\n+     *\r\n+     * @param event an {@link Event event}\r\n+     * @since 2.7.5\r\n+     */\r\n+    protected void dispatch(Event event) {\r\n+        EventDispatcher.getDefaultExtension().dispatch(event);\r\n+    }\r\n+\r\n+    public DubboBootstrap getBootstrap() {\r\n+        return bootstrap;\r\n+    }\r\n+\r\n+    public void setBootstrap(DubboBootstrap bootstrap) {\r\n+        this.bootstrap = bootstrap;\r\n+    }\r\n+\r\n+    private void postProcessConfig() {\r\n+        List<ConfigPostProcessor> configPostProcessors = ExtensionLoader.getExtensionLoader(ConfigPostProcessor.class)\r\n+                .getActivateExtension(URL.valueOf(\"configPostProcessor://\"), (String[]) null);\r\n+        configPostProcessors.forEach(component -> component.postProcessReferConfig(this));\r\n+    }\r\n+\r\n+    // just for test\r\n+    Invoker<?> getInvoker() {\r\n+        return invoker;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/ServiceConfig.java", "source2": "org/apache/dubbo/config/ServiceConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,727 +1,727 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.URLBuilder;\n-import org.apache.dubbo.common.Version;\n-import org.apache.dubbo.common.bytecode.Wrapper;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ClassUtils;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.ConfigUtils;\n-import org.apache.dubbo.common.utils.NamedThreadFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.annotation.Service;\n-import org.apache.dubbo.config.bootstrap.DubboBootstrap;\n-import org.apache.dubbo.config.event.ServiceConfigExportedEvent;\n-import org.apache.dubbo.config.event.ServiceConfigUnexportedEvent;\n-import org.apache.dubbo.config.invoker.DelegateProviderMetaDataInvoker;\n-import org.apache.dubbo.config.support.Parameter;\n-import org.apache.dubbo.config.utils.ConfigValidationUtils;\n-import org.apache.dubbo.event.Event;\n-import org.apache.dubbo.event.EventDispatcher;\n-import org.apache.dubbo.metadata.ServiceNameMapping;\n-import org.apache.dubbo.registry.client.metadata.MetadataUtils;\n-import org.apache.dubbo.rpc.Exporter;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Protocol;\n-import org.apache.dubbo.rpc.ProxyFactory;\n-import org.apache.dubbo.rpc.cluster.ConfiguratorFactory;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.ServiceDescriptor;\n-import org.apache.dubbo.rpc.model.ServiceRepository;\n-import org.apache.dubbo.rpc.service.GenericService;\n-import org.apache.dubbo.rpc.support.ProtocolUtils;\n-\n-import java.lang.reflect.Method;\n-import java.net.InetAddress;\n-import java.net.InetSocketAddress;\n-import java.net.Socket;\n-import java.net.SocketAddress;\n-import java.net.UnknownHostException;\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.HashMap;\n-import java.util.HashSet;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.UUID;\n-import java.util.concurrent.Executors;\n-import java.util.concurrent.ScheduledExecutorService;\n-import java.util.concurrent.TimeUnit;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_IP_TO_BIND;\n-import static org.apache.dubbo.common.constants.CommonConstants.LOCALHOST_VALUE;\n-import static org.apache.dubbo.common.constants.CommonConstants.MAPPING_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.METADATA_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.METHODS_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.MONITOR_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;\n-import static org.apache.dubbo.common.constants.CommonConstants.REGISTER_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE;\n-import static org.apache.dubbo.common.constants.CommonConstants.REVISION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.DYNAMIC_KEY;\n-import static org.apache.dubbo.common.utils.NetUtils.getAvailablePort;\n-import static org.apache.dubbo.common.utils.NetUtils.getLocalHost;\n-import static org.apache.dubbo.common.utils.NetUtils.isInvalidLocalHost;\n-import static org.apache.dubbo.common.utils.NetUtils.isInvalidPort;\n-import static org.apache.dubbo.config.Constants.DUBBO_IP_TO_REGISTRY;\n-import static org.apache.dubbo.config.Constants.DUBBO_PORT_TO_BIND;\n-import static org.apache.dubbo.config.Constants.DUBBO_PORT_TO_REGISTRY;\n-import static org.apache.dubbo.config.Constants.MULTICAST;\n-import static org.apache.dubbo.config.Constants.SCOPE_NONE;\n-import static org.apache.dubbo.remoting.Constants.BIND_IP_KEY;\n-import static org.apache.dubbo.remoting.Constants.BIND_PORT_KEY;\n-import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;\n-import static org.apache.dubbo.rpc.Constants.LOCAL_PROTOCOL;\n-import static org.apache.dubbo.rpc.Constants.PROXY_KEY;\n-import static org.apache.dubbo.rpc.Constants.SCOPE_KEY;\n-import static org.apache.dubbo.rpc.Constants.SCOPE_LOCAL;\n-import static org.apache.dubbo.rpc.Constants.SCOPE_REMOTE;\n-import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\n-import static org.apache.dubbo.rpc.cluster.Constants.EXPORT_KEY;\n-\n-public class ServiceConfig<T> extends ServiceConfigBase<T> {\n-\n-    public static final Logger logger = LoggerFactory.getLogger(ServiceConfig.class);\n-\n-    /**\n-     * A random port cache, the different protocols who has no port specified have different random port\n-     */\n-    private static final Map<String, Integer> RANDOM_PORT_MAP = new HashMap<String, Integer>();\n-\n-    /**\n-     * A delayed exposure service timer\n-     */\n-    private static final ScheduledExecutorService DELAY_EXPORT_EXECUTOR = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory(\"DubboServiceDelayExporter\", true));\n-\n-    private static final Protocol PROTOCOL = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();\n-\n-    /**\n-     * A {@link ProxyFactory} implementation that will generate a exported service proxy,the JavassistProxyFactory is its\n-     * default implementation\n-     */\n-    private static final ProxyFactory PROXY_FACTORY = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();\n-\n-    /**\n-     * Whether the provider has been exported\n-     */\n-    private transient volatile boolean exported;\n-\n-    /**\n-     * The flag whether a service has unexported ,if the method unexported is invoked, the value is true\n-     */\n-    private transient volatile boolean unexported;\n-\n-    private DubboBootstrap bootstrap;\n-\n-    /**\n-     * The exported services\n-     */\n-    private final List<Exporter<?>> exporters = new ArrayList<Exporter<?>>();\n-\n-    public ServiceConfig() {\n-    }\n-\n-    public ServiceConfig(Service service) {\n-        super(service);\n-    }\n-\n-    @Parameter(excluded = true)\n-    public boolean isExported() {\n-        return exported;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public boolean isUnexported() {\n-        return unexported;\n-    }\n-\n-    public void unexport() {\n-        if (!exported) {\n-            return;\n-        }\n-        if (unexported) {\n-            return;\n-        }\n-        if (!exporters.isEmpty()) {\n-            for (Exporter<?> exporter : exporters) {\n-                try {\n-                    exporter.unexport();\n-                } catch (Throwable t) {\n-                    logger.warn(\"Unexpected error occurred when unexport \" + exporter, t);\n-                }\n-            }\n-            exporters.clear();\n-        }\n-        unexported = true;\n-\n-        // dispatch a ServiceConfigUnExportedEvent since 2.7.4\n-        dispatch(new ServiceConfigUnexportedEvent(this));\n-    }\n-\n-    public synchronized void export() {\n-        if (bootstrap == null) {\n-            bootstrap = DubboBootstrap.getInstance();\n-            bootstrap.initialize();\n-        }\n-\n-        checkAndUpdateSubConfigs();\n-\n-        initServiceMetadata(provider);\n-        serviceMetadata.setServiceType(getInterfaceClass());\n-        serviceMetadata.setTarget(getRef());\n-        serviceMetadata.generateServiceKey();\n-\n-        if (!shouldExport()) {\n-            return;\n-        }\n-\n-        if (shouldDelay()) {\n-            DELAY_EXPORT_EXECUTOR.schedule(this::doExport, getDelay(), TimeUnit.MILLISECONDS);\n-        } else {\n-            doExport();\n-        }\n-\n-        exported();\n-    }\n-\n-    public void exported() {\n-        List<URL> exportedURLs = this.getExportedUrls();\n-        exportedURLs.forEach(url -> {\n-            Map<String, String> parameters = getApplication().getParameters();\n-            ServiceNameMapping.getExtension(parameters != null ? parameters.get(MAPPING_KEY) : null).map(url);\n-        });\n-        // dispatch a ServiceConfigExportedEvent since 2.7.4\n-        dispatch(new ServiceConfigExportedEvent(this));\n-    }\n-\n-    private void checkAndUpdateSubConfigs() {\n-        // Use default configs defined explicitly with global scope\n-        completeCompoundConfigs();\n-        checkDefault();\n-        checkProtocol();\n-        // init some null configuration.\n-        List<ConfigInitializer> configInitializers = ExtensionLoader.getExtensionLoader(ConfigInitializer.class)\n-                .getActivateExtension(URL.valueOf(\"configInitializer://\"), (String[]) null);\n-        configInitializers.forEach(e -> e.initServiceConfig(this));\n-\n-        // if protocol is not injvm checkRegistry\n-        if (!isOnlyInJvm()) {\n-            checkRegistry();\n-        }\n-        this.refresh();\n-\n-        if (StringUtils.isEmpty(interfaceName)) {\n-            throw new IllegalStateException(\"<dubbo:service interface=\\\"\\\" /> interface not allow null!\");\n-        }\n-\n-        if (ref instanceof GenericService) {\n-            interfaceClass = GenericService.class;\n-            if (StringUtils.isEmpty(generic)) {\n-                generic = Boolean.TRUE.toString();\n-            }\n-        } else {\n-            try {\n-                interfaceClass = Class.forName(interfaceName, true, Thread.currentThread()\n-                        .getContextClassLoader());\n-            } catch (ClassNotFoundException e) {\n-                throw new IllegalStateException(e.getMessage(), e);\n-            }\n-            checkInterfaceAndMethods(interfaceClass, getMethods());\n-            checkRef();\n-            generic = Boolean.FALSE.toString();\n-        }\n-        if (local != null) {\n-            if (\"true\".equals(local)) {\n-                local = interfaceName + \"Local\";\n-            }\n-            Class<?> localClass;\n-            try {\n-                localClass = ClassUtils.forNameWithThreadContextClassLoader(local);\n-            } catch (ClassNotFoundException e) {\n-                throw new IllegalStateException(e.getMessage(), e);\n-            }\n-            if (!interfaceClass.isAssignableFrom(localClass)) {\n-                throw new IllegalStateException(\"The local implementation class \" + localClass.getName() + \" not implement interface \" + interfaceName);\n-            }\n-        }\n-        if (stub != null) {\n-            if (\"true\".equals(stub)) {\n-                stub = interfaceName + \"Stub\";\n-            }\n-            Class<?> stubClass;\n-            try {\n-                stubClass = ClassUtils.forNameWithThreadContextClassLoader(stub);\n-            } catch (ClassNotFoundException e) {\n-                throw new IllegalStateException(e.getMessage(), e);\n-            }\n-            if (!interfaceClass.isAssignableFrom(stubClass)) {\n-                throw new IllegalStateException(\"The stub implementation class \" + stubClass.getName() + \" not implement interface \" + interfaceName);\n-            }\n-        }\n-        checkStubAndLocal(interfaceClass);\n-        ConfigValidationUtils.checkMock(interfaceClass, this);\n-        ConfigValidationUtils.validateServiceConfig(this);\n-        postProcessConfig();\n-    }\n-\n-\n-    protected synchronized void doExport() {\n-        if (unexported) {\n-            throw new IllegalStateException(\"The service \" + interfaceClass.getName() + \" has already unexported!\");\n-        }\n-        if (exported) {\n-            return;\n-        }\n-        exported = true;\n-\n-        if (StringUtils.isEmpty(path)) {\n-            path = interfaceName;\n-        }\n-        doExportUrls();\n-        bootstrap.setReady(true);\n-    }\n-\n-    @SuppressWarnings({\"unchecked\", \"rawtypes\"})\n-    private void doExportUrls() {\n-        ServiceRepository repository = ApplicationModel.getServiceRepository();\n-        ServiceDescriptor serviceDescriptor = repository.registerService(getInterfaceClass());\n-        repository.registerProvider(\n-                getUniqueServiceName(),\n-                ref,\n-                serviceDescriptor,\n-                this,\n-                serviceMetadata\n-        );\n-\n-        List<URL> registryURLs = ConfigValidationUtils.loadRegistries(this, true);\n-\n-        for (ProtocolConfig protocolConfig : protocols) {\n-            String pathKey = URL.buildKey(getContextPath(protocolConfig)\n-                    .map(p -> p + \"/\" + path)\n-                    .orElse(path), group, version);\n-            // In case user specified path, register service one more time to map it to path.\n-            repository.registerService(pathKey, interfaceClass);\n-            doExportUrlsFor1Protocol(protocolConfig, registryURLs);\n-        }\n-    }\n-\n-    private void doExportUrlsFor1Protocol(ProtocolConfig protocolConfig, List<URL> registryURLs) {\n-        String name = protocolConfig.getName();\n-        if (StringUtils.isEmpty(name)) {\n-            name = DUBBO;\n-        }\n-\n-        Map<String, String> map = new HashMap<String, String>();\n-        map.put(SIDE_KEY, PROVIDER_SIDE);\n-\n-        ServiceConfig.appendRuntimeParameters(map);\n-        AbstractConfig.appendParameters(map, getMetrics());\n-        AbstractConfig.appendParameters(map, getApplication());\n-        AbstractConfig.appendParameters(map, getModule());\n-        // remove 'default.' prefix for configs from ProviderConfig\n-        // appendParameters(map, provider, Constants.DEFAULT_KEY);\n-        AbstractConfig.appendParameters(map, provider);\n-        AbstractConfig.appendParameters(map, protocolConfig);\n-        AbstractConfig.appendParameters(map, this);\n-        MetadataReportConfig metadataReportConfig = getMetadataReportConfig();\n-        if (metadataReportConfig != null && metadataReportConfig.isValid()) {\n-            map.putIfAbsent(METADATA_KEY, REMOTE_METADATA_STORAGE_TYPE);\n-        }\n-        if (CollectionUtils.isNotEmpty(getMethods())) {\n-            for (MethodConfig method : getMethods()) {\n-                AbstractConfig.appendParameters(map, method, method.getName());\n-                String retryKey = method.getName() + \".retry\";\n-                if (map.containsKey(retryKey)) {\n-                    String retryValue = map.remove(retryKey);\n-                    if (\"false\".equals(retryValue)) {\n-                        map.put(method.getName() + \".retries\", \"0\");\n-                    }\n-                }\n-                List<ArgumentConfig> arguments = method.getArguments();\n-                if (CollectionUtils.isNotEmpty(arguments)) {\n-                    for (ArgumentConfig argument : arguments) {\n-                        // convert argument type\n-                        if (argument.getType() != null && argument.getType().length() > 0) {\n-                            Method[] methods = interfaceClass.getMethods();\n-                            // visit all methods\n-                            if (methods.length > 0) {\n-                                for (int i = 0; i < methods.length; i++) {\n-                                    String methodName = methods[i].getName();\n-                                    // target the method, and get its signature\n-                                    if (methodName.equals(method.getName())) {\n-                                        Class<?>[] argtypes = methods[i].getParameterTypes();\n-                                        // one callback in the method\n-                                        if (argument.getIndex() != -1) {\n-                                            if (argtypes[argument.getIndex()].getName().equals(argument.getType())) {\n-                                                AbstractConfig.appendParameters(map, argument, method.getName() + \".\" + argument.getIndex());\n-                                            } else {\n-                                                throw new IllegalArgumentException(\"Argument config error : the index attribute and type attribute not match :index :\" + argument.getIndex() + \", type:\" + argument.getType());\n-                                            }\n-                                        } else {\n-                                            // multiple callbacks in the method\n-                                            for (int j = 0; j < argtypes.length; j++) {\n-                                                Class<?> argclazz = argtypes[j];\n-                                                if (argclazz.getName().equals(argument.getType())) {\n-                                                    AbstractConfig.appendParameters(map, argument, method.getName() + \".\" + j);\n-                                                    if (argument.getIndex() != -1 && argument.getIndex() != j) {\n-                                                        throw new IllegalArgumentException(\"Argument config error : the index attribute and type attribute not match :index :\" + argument.getIndex() + \", type:\" + argument.getType());\n-                                                    }\n-                                                }\n-                                            }\n-                                        }\n-                                    }\n-                                }\n-                            }\n-                        } else if (argument.getIndex() != -1) {\n-                            AbstractConfig.appendParameters(map, argument, method.getName() + \".\" + argument.getIndex());\n-                        } else {\n-                            throw new IllegalArgumentException(\"Argument config must set index or type attribute.eg: <dubbo:argument index='0' .../> or <dubbo:argument type=xxx .../>\");\n-                        }\n-\n-                    }\n-                }\n-            } // end of methods for\n-        }\n-\n-        if (ProtocolUtils.isGeneric(generic)) {\n-            map.put(GENERIC_KEY, generic);\n-            map.put(METHODS_KEY, ANY_VALUE);\n-        } else {\n-            String revision = Version.getVersion(interfaceClass, version);\n-            if (revision != null && revision.length() > 0) {\n-                map.put(REVISION_KEY, revision);\n-            }\n-\n-            String[] methods = Wrapper.getWrapper(interfaceClass).getMethodNames();\n-            if (methods.length == 0) {\n-                logger.warn(\"No method found in service interface \" + interfaceClass.getName());\n-                map.put(METHODS_KEY, ANY_VALUE);\n-            } else {\n-                map.put(METHODS_KEY, StringUtils.join(new HashSet<String>(Arrays.asList(methods)), \",\"));\n-            }\n-        }\n-\n-        /**\n-         * Here the token value configured by the provider is used to assign the value to ServiceConfig#token\n-         */\n-        if (ConfigUtils.isEmpty(token) && provider != null) {\n-            token = provider.getToken();\n-        }\n-\n-        if (!ConfigUtils.isEmpty(token)) {\n-            if (ConfigUtils.isDefault(token)) {\n-                map.put(TOKEN_KEY, UUID.randomUUID().toString());\n-            } else {\n-                map.put(TOKEN_KEY, token);\n-            }\n-        }\n-        //init serviceMetadata attachments\n-        serviceMetadata.getAttachments().putAll(map);\n-\n-        // export service\n-        String host = findConfigedHosts(protocolConfig, registryURLs, map);\n-        Integer port = findConfigedPorts(protocolConfig, name, map);\n-        URL url = new URL(name, host, port, getContextPath(protocolConfig).map(p -> p + \"/\" + path).orElse(path), map);\n-\n-        // You can customize Configurator to append extra parameters\n-        if (ExtensionLoader.getExtensionLoader(ConfiguratorFactory.class)\n-                .hasExtension(url.getProtocol())) {\n-            url = ExtensionLoader.getExtensionLoader(ConfiguratorFactory.class)\n-                    .getExtension(url.getProtocol()).getConfigurator(url).configure(url);\n-        }\n-\n-        String scope = url.getParameter(SCOPE_KEY);\n-        // don't export when none is configured\n-        if (!SCOPE_NONE.equalsIgnoreCase(scope)) {\n-\n-            // export to local if the config is not remote (export to remote only when config is remote)\n-            if (!SCOPE_REMOTE.equalsIgnoreCase(scope)) {\n-                exportLocal(url);\n-            }\n-            // export to remote if the config is not local (export to local only when config is local)\n-            if (!SCOPE_LOCAL.equalsIgnoreCase(scope)) {\n-                if (CollectionUtils.isNotEmpty(registryURLs)) {\n-                    for (URL registryURL : registryURLs) {\n-                        //if protocol is only injvm ,not register\n-                        if (LOCAL_PROTOCOL.equalsIgnoreCase(url.getProtocol())) {\n-                            continue;\n-                        }\n-                        url = url.addParameterIfAbsent(DYNAMIC_KEY, registryURL.getParameter(DYNAMIC_KEY));\n-                        URL monitorUrl = ConfigValidationUtils.loadMonitor(this, registryURL);\n-                        if (monitorUrl != null) {\n-                            url = url.addParameterAndEncoded(MONITOR_KEY, monitorUrl.toFullString());\n-                        }\n-                        if (logger.isInfoEnabled()) {\n-                            if (url.getParameter(REGISTER_KEY, true)) {\n-                                logger.info(\"Register dubbo service \" + interfaceClass.getName() + \" url \" + url + \" to registry \" + registryURL);\n-                            } else {\n-                                logger.info(\"Export dubbo service \" + interfaceClass.getName() + \" to url \" + url);\n-                            }\n-                        }\n-\n-                        // For providers, this is used to enable custom proxy to generate invoker\n-                        String proxy = url.getParameter(PROXY_KEY);\n-                        if (StringUtils.isNotEmpty(proxy)) {\n-                            registryURL = registryURL.addParameter(PROXY_KEY, proxy);\n-                        }\n-\n-                        Invoker<?> invoker = PROXY_FACTORY.getInvoker(ref, (Class) interfaceClass, registryURL.addParameterAndEncoded(EXPORT_KEY, url.toFullString()));\n-                        DelegateProviderMetaDataInvoker wrapperInvoker = new DelegateProviderMetaDataInvoker(invoker, this);\n-\n-                        Exporter<?> exporter = PROTOCOL.export(wrapperInvoker);\n-                        exporters.add(exporter);\n-                    }\n-                } else {\n-                    if (logger.isInfoEnabled()) {\n-                        logger.info(\"Export dubbo service \" + interfaceClass.getName() + \" to url \" + url);\n-                    }\n-                    Invoker<?> invoker = PROXY_FACTORY.getInvoker(ref, (Class) interfaceClass, url);\n-                    DelegateProviderMetaDataInvoker wrapperInvoker = new DelegateProviderMetaDataInvoker(invoker, this);\n-\n-                    Exporter<?> exporter = PROTOCOL.export(wrapperInvoker);\n-                    exporters.add(exporter);\n-                }\n-\n-                MetadataUtils.publishServiceDefinition(url);\n-            }\n-        }\n-        this.urls.add(url);\n-    }\n-\n-    @SuppressWarnings({\"unchecked\", \"rawtypes\"})\n-    /**\n-     * always export injvm\n-     */\n-    private void exportLocal(URL url) {\n-        URL local = URLBuilder.from(url)\n-                .setProtocol(LOCAL_PROTOCOL)\n-                .setHost(LOCALHOST_VALUE)\n-                .setPort(0)\n-                .build();\n-        Exporter<?> exporter = PROTOCOL.export(\n-                PROXY_FACTORY.getInvoker(ref, (Class) interfaceClass, local));\n-        exporters.add(exporter);\n-        logger.info(\"Export dubbo service \" + interfaceClass.getName() + \" to local registry url : \" + local);\n-    }\n-\n-    /**\n-     * Determine if it is injvm\n-     *\n-     * @return\n-     */\n-    private boolean isOnlyInJvm() {\n-        return getProtocols().size() == 1\n-                && LOCAL_PROTOCOL.equalsIgnoreCase(getProtocols().get(0).getName());\n-    }\n-\n-\n-    /**\n-     * Register & bind IP address for service provider, can be configured separately.\n-     * Configuration priority: environment variables -> java system properties -> host property in config file ->\n-     * /etc/hosts -> default network address -> first available network address\n-     *\n-     * @param protocolConfig\n-     * @param registryURLs\n-     * @param map\n-     * @return\n-     */\n-    private String findConfigedHosts(ProtocolConfig protocolConfig,\n-                                     List<URL> registryURLs,\n-                                     Map<String, String> map) {\n-        boolean anyhost = false;\n-\n-        String hostToBind = getValueFromConfig(protocolConfig, DUBBO_IP_TO_BIND);\n-        if (hostToBind != null && hostToBind.length() > 0 && isInvalidLocalHost(hostToBind)) {\n-            throw new IllegalArgumentException(\"Specified invalid bind ip from property:\" + DUBBO_IP_TO_BIND + \", value:\" + hostToBind);\n-        }\n-\n-        // if bind ip is not found in environment, keep looking up\n-        if (StringUtils.isEmpty(hostToBind)) {\n-            hostToBind = protocolConfig.getHost();\n-            if (provider != null && StringUtils.isEmpty(hostToBind)) {\n-                hostToBind = provider.getHost();\n-            }\n-            if (isInvalidLocalHost(hostToBind)) {\n-                anyhost = true;\n-                try {\n-                    logger.info(\"No valid ip found from environment, try to find valid host from DNS.\");\n-                    hostToBind = InetAddress.getLocalHost().getHostAddress();\n-                } catch (UnknownHostException e) {\n-                    logger.warn(e.getMessage(), e);\n-                }\n-                if (isInvalidLocalHost(hostToBind)) {\n-                    if (CollectionUtils.isNotEmpty(registryURLs)) {\n-                        for (URL registryURL : registryURLs) {\n-                            if (MULTICAST.equalsIgnoreCase(registryURL.getParameter(\"registry\"))) {\n-                                // skip multicast registry since we cannot connect to it via Socket\n-                                continue;\n-                            }\n-                            try (Socket socket = new Socket()) {\n-                                SocketAddress addr = new InetSocketAddress(registryURL.getHost(), registryURL.getPort());\n-                                socket.connect(addr, 1000);\n-                                hostToBind = socket.getLocalAddress().getHostAddress();\n-                                break;\n-                            } catch (Exception e) {\n-                                logger.warn(e.getMessage(), e);\n-                            }\n-                        }\n-                    }\n-                    if (isInvalidLocalHost(hostToBind)) {\n-                        hostToBind = getLocalHost();\n-                    }\n-                }\n-            }\n-        }\n-\n-        map.put(BIND_IP_KEY, hostToBind);\n-\n-        // registry ip is not used for bind ip by default\n-        String hostToRegistry = getValueFromConfig(protocolConfig, DUBBO_IP_TO_REGISTRY);\n-        if (hostToRegistry != null && hostToRegistry.length() > 0 && isInvalidLocalHost(hostToRegistry)) {\n-            throw new IllegalArgumentException(\"Specified invalid registry ip from property:\" + DUBBO_IP_TO_REGISTRY + \", value:\" + hostToRegistry);\n-        } else if (StringUtils.isEmpty(hostToRegistry)) {\n-            // bind ip is used as registry ip by default\n-            hostToRegistry = hostToBind;\n-        }\n-\n-        map.put(ANYHOST_KEY, String.valueOf(anyhost));\n-\n-        return hostToRegistry;\n-    }\n-\n-\n-    /**\n-     * Register port and bind port for the provider, can be configured separately\n-     * Configuration priority: environment variable -> java system properties -> port property in protocol config file\n-     * -> protocol default port\n-     *\n-     * @param protocolConfig\n-     * @param name\n-     * @return\n-     */\n-    private Integer findConfigedPorts(ProtocolConfig protocolConfig,\n-                                      String name,\n-                                      Map<String, String> map) {\n-        Integer portToBind = null;\n-\n-        // parse bind port from environment\n-        String port = getValueFromConfig(protocolConfig, DUBBO_PORT_TO_BIND);\n-        portToBind = parsePort(port);\n-\n-        // if there's no bind port found from environment, keep looking up.\n-        if (portToBind == null) {\n-            portToBind = protocolConfig.getPort();\n-            if (provider != null && (portToBind == null || portToBind == 0)) {\n-                portToBind = provider.getPort();\n-            }\n-            final int defaultPort = ExtensionLoader.getExtensionLoader(Protocol.class).getExtension(name).getDefaultPort();\n-            if (portToBind == null || portToBind == 0) {\n-                portToBind = defaultPort;\n-            }\n-            if (portToBind <= 0) {\n-                portToBind = getRandomPort(name);\n-                if (portToBind == null || portToBind < 0) {\n-                    portToBind = getAvailablePort(defaultPort);\n-                    putRandomPort(name, portToBind);\n-                }\n-            }\n-        }\n-\n-        // save bind port, used as url's key later\n-        map.put(BIND_PORT_KEY, String.valueOf(portToBind));\n-\n-        // registry port, not used as bind port by default\n-        String portToRegistryStr = getValueFromConfig(protocolConfig, DUBBO_PORT_TO_REGISTRY);\n-        Integer portToRegistry = parsePort(portToRegistryStr);\n-        if (portToRegistry == null) {\n-            portToRegistry = portToBind;\n-        }\n-\n-        return portToRegistry;\n-    }\n-\n-    private Integer parsePort(String configPort) {\n-        Integer port = null;\n-        if (configPort != null && configPort.length() > 0) {\n-            try {\n-                Integer intPort = Integer.parseInt(configPort);\n-                if (isInvalidPort(intPort)) {\n-                    throw new IllegalArgumentException(\"Specified invalid port from env value:\" + configPort);\n-                }\n-                port = intPort;\n-            } catch (Exception e) {\n-                throw new IllegalArgumentException(\"Specified invalid port from env value:\" + configPort);\n-            }\n-        }\n-        return port;\n-    }\n-\n-    private String getValueFromConfig(ProtocolConfig protocolConfig, String key) {\n-        String protocolPrefix = protocolConfig.getName().toUpperCase() + \"_\";\n-        String value = ConfigUtils.getSystemProperty(protocolPrefix + key);\n-        if (StringUtils.isEmpty(value)) {\n-            value = ConfigUtils.getSystemProperty(key);\n-        }\n-        return value;\n-    }\n-\n-    private Integer getRandomPort(String protocol) {\n-        protocol = protocol.toLowerCase();\n-        return RANDOM_PORT_MAP.getOrDefault(protocol, Integer.MIN_VALUE);\n-    }\n-\n-    private void putRandomPort(String protocol, Integer port) {\n-        protocol = protocol.toLowerCase();\n-        if (!RANDOM_PORT_MAP.containsKey(protocol)) {\n-            RANDOM_PORT_MAP.put(protocol, port);\n-            logger.warn(\"Use random available port(\" + port + \") for protocol \" + protocol);\n-        }\n-    }\n-\n-    private void postProcessConfig() {\n-        List<ConfigPostProcessor> configPostProcessors = ExtensionLoader.getExtensionLoader(ConfigPostProcessor.class)\n-                .getActivateExtension(URL.valueOf(\"configPostProcessor://\"), (String[]) null);\n-        configPostProcessors.forEach(component -> component.postProcessServiceConfig(this));\n-    }\n-\n-    /**\n-     * Dispatch an {@link Event event}\n-     *\n-     * @param event an {@link Event event}\n-     * @since 2.7.5\n-     */\n-    private void dispatch(Event event) {\n-        EventDispatcher.getDefaultExtension().dispatch(event);\n-    }\n-\n-    public DubboBootstrap getBootstrap() {\n-        return bootstrap;\n-    }\n-\n-    public void setBootstrap(DubboBootstrap bootstrap) {\n-        this.bootstrap = bootstrap;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.URLBuilder;\r\n+import org.apache.dubbo.common.Version;\r\n+import org.apache.dubbo.common.bytecode.Wrapper;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ClassUtils;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.ConfigUtils;\r\n+import org.apache.dubbo.common.utils.NamedThreadFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.annotation.Service;\r\n+import org.apache.dubbo.config.bootstrap.DubboBootstrap;\r\n+import org.apache.dubbo.config.event.ServiceConfigExportedEvent;\r\n+import org.apache.dubbo.config.event.ServiceConfigUnexportedEvent;\r\n+import org.apache.dubbo.config.invoker.DelegateProviderMetaDataInvoker;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+import org.apache.dubbo.config.utils.ConfigValidationUtils;\r\n+import org.apache.dubbo.event.Event;\r\n+import org.apache.dubbo.event.EventDispatcher;\r\n+import org.apache.dubbo.metadata.ServiceNameMapping;\r\n+import org.apache.dubbo.registry.client.metadata.MetadataUtils;\r\n+import org.apache.dubbo.rpc.Exporter;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Protocol;\r\n+import org.apache.dubbo.rpc.ProxyFactory;\r\n+import org.apache.dubbo.rpc.cluster.ConfiguratorFactory;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.ServiceDescriptor;\r\n+import org.apache.dubbo.rpc.model.ServiceRepository;\r\n+import org.apache.dubbo.rpc.service.GenericService;\r\n+import org.apache.dubbo.rpc.support.ProtocolUtils;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.net.InetAddress;\r\n+import java.net.InetSocketAddress;\r\n+import java.net.Socket;\r\n+import java.net.SocketAddress;\r\n+import java.net.UnknownHostException;\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.HashMap;\r\n+import java.util.HashSet;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.UUID;\r\n+import java.util.concurrent.Executors;\r\n+import java.util.concurrent.ScheduledExecutorService;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_IP_TO_BIND;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.LOCALHOST_VALUE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.MAPPING_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.METADATA_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.METHODS_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.MONITOR_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REGISTER_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REVISION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.DYNAMIC_KEY;\r\n+import static org.apache.dubbo.common.utils.NetUtils.getAvailablePort;\r\n+import static org.apache.dubbo.common.utils.NetUtils.getLocalHost;\r\n+import static org.apache.dubbo.common.utils.NetUtils.isInvalidLocalHost;\r\n+import static org.apache.dubbo.common.utils.NetUtils.isInvalidPort;\r\n+import static org.apache.dubbo.config.Constants.DUBBO_IP_TO_REGISTRY;\r\n+import static org.apache.dubbo.config.Constants.DUBBO_PORT_TO_BIND;\r\n+import static org.apache.dubbo.config.Constants.DUBBO_PORT_TO_REGISTRY;\r\n+import static org.apache.dubbo.config.Constants.MULTICAST;\r\n+import static org.apache.dubbo.config.Constants.SCOPE_NONE;\r\n+import static org.apache.dubbo.remoting.Constants.BIND_IP_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.BIND_PORT_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.LOCAL_PROTOCOL;\r\n+import static org.apache.dubbo.rpc.Constants.PROXY_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.SCOPE_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.SCOPE_LOCAL;\r\n+import static org.apache.dubbo.rpc.Constants.SCOPE_REMOTE;\r\n+import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.EXPORT_KEY;\r\n+\r\n+public class ServiceConfig<T> extends ServiceConfigBase<T> {\r\n+\r\n+    public static final Logger logger = LoggerFactory.getLogger(ServiceConfig.class);\r\n+\r\n+    /**\r\n+     * A random port cache, the different protocols who has no port specified have different random port\r\n+     */\r\n+    private static final Map<String, Integer> RANDOM_PORT_MAP = new HashMap<String, Integer>();\r\n+\r\n+    /**\r\n+     * A delayed exposure service timer\r\n+     */\r\n+    private static final ScheduledExecutorService DELAY_EXPORT_EXECUTOR = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory(\"DubboServiceDelayExporter\", true));\r\n+\r\n+    private static final Protocol PROTOCOL = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();\r\n+\r\n+    /**\r\n+     * A {@link ProxyFactory} implementation that will generate a exported service proxy,the JavassistProxyFactory is its\r\n+     * default implementation\r\n+     */\r\n+    private static final ProxyFactory PROXY_FACTORY = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();\r\n+\r\n+    /**\r\n+     * Whether the provider has been exported\r\n+     */\r\n+    private transient volatile boolean exported;\r\n+\r\n+    /**\r\n+     * The flag whether a service has unexported ,if the method unexported is invoked, the value is true\r\n+     */\r\n+    private transient volatile boolean unexported;\r\n+\r\n+    private DubboBootstrap bootstrap;\r\n+\r\n+    /**\r\n+     * The exported services\r\n+     */\r\n+    private final List<Exporter<?>> exporters = new ArrayList<Exporter<?>>();\r\n+\r\n+    public ServiceConfig() {\r\n+    }\r\n+\r\n+    public ServiceConfig(Service service) {\r\n+        super(service);\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public boolean isExported() {\r\n+        return exported;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public boolean isUnexported() {\r\n+        return unexported;\r\n+    }\r\n+\r\n+    public void unexport() {\r\n+        if (!exported) {\r\n+            return;\r\n+        }\r\n+        if (unexported) {\r\n+            return;\r\n+        }\r\n+        if (!exporters.isEmpty()) {\r\n+            for (Exporter<?> exporter : exporters) {\r\n+                try {\r\n+                    exporter.unexport();\r\n+                } catch (Throwable t) {\r\n+                    logger.warn(\"Unexpected error occurred when unexport \" + exporter, t);\r\n+                }\r\n+            }\r\n+            exporters.clear();\r\n+        }\r\n+        unexported = true;\r\n+\r\n+        // dispatch a ServiceConfigUnExportedEvent since 2.7.4\r\n+        dispatch(new ServiceConfigUnexportedEvent(this));\r\n+    }\r\n+\r\n+    public synchronized void export() {\r\n+        if (bootstrap == null) {\r\n+            bootstrap = DubboBootstrap.getInstance();\r\n+            bootstrap.initialize();\r\n+        }\r\n+\r\n+        checkAndUpdateSubConfigs();\r\n+\r\n+        initServiceMetadata(provider);\r\n+        serviceMetadata.setServiceType(getInterfaceClass());\r\n+        serviceMetadata.setTarget(getRef());\r\n+        serviceMetadata.generateServiceKey();\r\n+\r\n+        if (!shouldExport()) {\r\n+            return;\r\n+        }\r\n+\r\n+        if (shouldDelay()) {\r\n+            DELAY_EXPORT_EXECUTOR.schedule(this::doExport, getDelay(), TimeUnit.MILLISECONDS);\r\n+        } else {\r\n+            doExport();\r\n+        }\r\n+\r\n+        exported();\r\n+    }\r\n+\r\n+    public void exported() {\r\n+        List<URL> exportedURLs = this.getExportedUrls();\r\n+        exportedURLs.forEach(url -> {\r\n+            Map<String, String> parameters = getApplication().getParameters();\r\n+            ServiceNameMapping.getExtension(parameters != null ? parameters.get(MAPPING_KEY) : null).map(url);\r\n+        });\r\n+        // dispatch a ServiceConfigExportedEvent since 2.7.4\r\n+        dispatch(new ServiceConfigExportedEvent(this));\r\n+    }\r\n+\r\n+    private void checkAndUpdateSubConfigs() {\r\n+        // Use default configs defined explicitly with global scope\r\n+        completeCompoundConfigs();\r\n+        checkDefault();\r\n+        checkProtocol();\r\n+        // init some null configuration.\r\n+        List<ConfigInitializer> configInitializers = ExtensionLoader.getExtensionLoader(ConfigInitializer.class)\r\n+                .getActivateExtension(URL.valueOf(\"configInitializer://\"), (String[]) null);\r\n+        configInitializers.forEach(e -> e.initServiceConfig(this));\r\n+\r\n+        // if protocol is not injvm checkRegistry\r\n+        if (!isOnlyInJvm()) {\r\n+            checkRegistry();\r\n+        }\r\n+        this.refresh();\r\n+\r\n+        if (StringUtils.isEmpty(interfaceName)) {\r\n+            throw new IllegalStateException(\"<dubbo:service interface=\\\"\\\" /> interface not allow null!\");\r\n+        }\r\n+\r\n+        if (ref instanceof GenericService) {\r\n+            interfaceClass = GenericService.class;\r\n+            if (StringUtils.isEmpty(generic)) {\r\n+                generic = Boolean.TRUE.toString();\r\n+            }\r\n+        } else {\r\n+            try {\r\n+                interfaceClass = Class.forName(interfaceName, true, Thread.currentThread()\r\n+                        .getContextClassLoader());\r\n+            } catch (ClassNotFoundException e) {\r\n+                throw new IllegalStateException(e.getMessage(), e);\r\n+            }\r\n+            checkInterfaceAndMethods(interfaceClass, getMethods());\r\n+            checkRef();\r\n+            generic = Boolean.FALSE.toString();\r\n+        }\r\n+        if (local != null) {\r\n+            if (\"true\".equals(local)) {\r\n+                local = interfaceName + \"Local\";\r\n+            }\r\n+            Class<?> localClass;\r\n+            try {\r\n+                localClass = ClassUtils.forNameWithThreadContextClassLoader(local);\r\n+            } catch (ClassNotFoundException e) {\r\n+                throw new IllegalStateException(e.getMessage(), e);\r\n+            }\r\n+            if (!interfaceClass.isAssignableFrom(localClass)) {\r\n+                throw new IllegalStateException(\"The local implementation class \" + localClass.getName() + \" not implement interface \" + interfaceName);\r\n+            }\r\n+        }\r\n+        if (stub != null) {\r\n+            if (\"true\".equals(stub)) {\r\n+                stub = interfaceName + \"Stub\";\r\n+            }\r\n+            Class<?> stubClass;\r\n+            try {\r\n+                stubClass = ClassUtils.forNameWithThreadContextClassLoader(stub);\r\n+            } catch (ClassNotFoundException e) {\r\n+                throw new IllegalStateException(e.getMessage(), e);\r\n+            }\r\n+            if (!interfaceClass.isAssignableFrom(stubClass)) {\r\n+                throw new IllegalStateException(\"The stub implementation class \" + stubClass.getName() + \" not implement interface \" + interfaceName);\r\n+            }\r\n+        }\r\n+        checkStubAndLocal(interfaceClass);\r\n+        ConfigValidationUtils.checkMock(interfaceClass, this);\r\n+        ConfigValidationUtils.validateServiceConfig(this);\r\n+        postProcessConfig();\r\n+    }\r\n+\r\n+\r\n+    protected synchronized void doExport() {\r\n+        if (unexported) {\r\n+            throw new IllegalStateException(\"The service \" + interfaceClass.getName() + \" has already unexported!\");\r\n+        }\r\n+        if (exported) {\r\n+            return;\r\n+        }\r\n+        exported = true;\r\n+\r\n+        if (StringUtils.isEmpty(path)) {\r\n+            path = interfaceName;\r\n+        }\r\n+        doExportUrls();\r\n+        bootstrap.setReady(true);\r\n+    }\r\n+\r\n+    @SuppressWarnings({\"unchecked\", \"rawtypes\"})\r\n+    private void doExportUrls() {\r\n+        ServiceRepository repository = ApplicationModel.getServiceRepository();\r\n+        ServiceDescriptor serviceDescriptor = repository.registerService(getInterfaceClass());\r\n+        repository.registerProvider(\r\n+                getUniqueServiceName(),\r\n+                ref,\r\n+                serviceDescriptor,\r\n+                this,\r\n+                serviceMetadata\r\n+        );\r\n+\r\n+        List<URL> registryURLs = ConfigValidationUtils.loadRegistries(this, true);\r\n+\r\n+        for (ProtocolConfig protocolConfig : protocols) {\r\n+            String pathKey = URL.buildKey(getContextPath(protocolConfig)\r\n+                    .map(p -> p + \"/\" + path)\r\n+                    .orElse(path), group, version);\r\n+            // In case user specified path, register service one more time to map it to path.\r\n+            repository.registerService(pathKey, interfaceClass);\r\n+            doExportUrlsFor1Protocol(protocolConfig, registryURLs);\r\n+        }\r\n+    }\r\n+\r\n+    private void doExportUrlsFor1Protocol(ProtocolConfig protocolConfig, List<URL> registryURLs) {\r\n+        String name = protocolConfig.getName();\r\n+        if (StringUtils.isEmpty(name)) {\r\n+            name = DUBBO;\r\n+        }\r\n+\r\n+        Map<String, String> map = new HashMap<String, String>();\r\n+        map.put(SIDE_KEY, PROVIDER_SIDE);\r\n+\r\n+        ServiceConfig.appendRuntimeParameters(map);\r\n+        AbstractConfig.appendParameters(map, getMetrics());\r\n+        AbstractConfig.appendParameters(map, getApplication());\r\n+        AbstractConfig.appendParameters(map, getModule());\r\n+        // remove 'default.' prefix for configs from ProviderConfig\r\n+        // appendParameters(map, provider, Constants.DEFAULT_KEY);\r\n+        AbstractConfig.appendParameters(map, provider);\r\n+        AbstractConfig.appendParameters(map, protocolConfig);\r\n+        AbstractConfig.appendParameters(map, this);\r\n+        MetadataReportConfig metadataReportConfig = getMetadataReportConfig();\r\n+        if (metadataReportConfig != null && metadataReportConfig.isValid()) {\r\n+            map.putIfAbsent(METADATA_KEY, REMOTE_METADATA_STORAGE_TYPE);\r\n+        }\r\n+        if (CollectionUtils.isNotEmpty(getMethods())) {\r\n+            for (MethodConfig method : getMethods()) {\r\n+                AbstractConfig.appendParameters(map, method, method.getName());\r\n+                String retryKey = method.getName() + \".retry\";\r\n+                if (map.containsKey(retryKey)) {\r\n+                    String retryValue = map.remove(retryKey);\r\n+                    if (\"false\".equals(retryValue)) {\r\n+                        map.put(method.getName() + \".retries\", \"0\");\r\n+                    }\r\n+                }\r\n+                List<ArgumentConfig> arguments = method.getArguments();\r\n+                if (CollectionUtils.isNotEmpty(arguments)) {\r\n+                    for (ArgumentConfig argument : arguments) {\r\n+                        // convert argument type\r\n+                        if (argument.getType() != null && argument.getType().length() > 0) {\r\n+                            Method[] methods = interfaceClass.getMethods();\r\n+                            // visit all methods\r\n+                            if (methods.length > 0) {\r\n+                                for (int i = 0; i < methods.length; i++) {\r\n+                                    String methodName = methods[i].getName();\r\n+                                    // target the method, and get its signature\r\n+                                    if (methodName.equals(method.getName())) {\r\n+                                        Class<?>[] argtypes = methods[i].getParameterTypes();\r\n+                                        // one callback in the method\r\n+                                        if (argument.getIndex() != -1) {\r\n+                                            if (argtypes[argument.getIndex()].getName().equals(argument.getType())) {\r\n+                                                AbstractConfig.appendParameters(map, argument, method.getName() + \".\" + argument.getIndex());\r\n+                                            } else {\r\n+                                                throw new IllegalArgumentException(\"Argument config error : the index attribute and type attribute not match :index :\" + argument.getIndex() + \", type:\" + argument.getType());\r\n+                                            }\r\n+                                        } else {\r\n+                                            // multiple callbacks in the method\r\n+                                            for (int j = 0; j < argtypes.length; j++) {\r\n+                                                Class<?> argclazz = argtypes[j];\r\n+                                                if (argclazz.getName().equals(argument.getType())) {\r\n+                                                    AbstractConfig.appendParameters(map, argument, method.getName() + \".\" + j);\r\n+                                                    if (argument.getIndex() != -1 && argument.getIndex() != j) {\r\n+                                                        throw new IllegalArgumentException(\"Argument config error : the index attribute and type attribute not match :index :\" + argument.getIndex() + \", type:\" + argument.getType());\r\n+                                                    }\r\n+                                                }\r\n+                                            }\r\n+                                        }\r\n+                                    }\r\n+                                }\r\n+                            }\r\n+                        } else if (argument.getIndex() != -1) {\r\n+                            AbstractConfig.appendParameters(map, argument, method.getName() + \".\" + argument.getIndex());\r\n+                        } else {\r\n+                            throw new IllegalArgumentException(\"Argument config must set index or type attribute.eg: <dubbo:argument index='0' .../> or <dubbo:argument type=xxx .../>\");\r\n+                        }\r\n+\r\n+                    }\r\n+                }\r\n+            } // end of methods for\r\n+        }\r\n+\r\n+        if (ProtocolUtils.isGeneric(generic)) {\r\n+            map.put(GENERIC_KEY, generic);\r\n+            map.put(METHODS_KEY, ANY_VALUE);\r\n+        } else {\r\n+            String revision = Version.getVersion(interfaceClass, version);\r\n+            if (revision != null && revision.length() > 0) {\r\n+                map.put(REVISION_KEY, revision);\r\n+            }\r\n+\r\n+            String[] methods = Wrapper.getWrapper(interfaceClass).getMethodNames();\r\n+            if (methods.length == 0) {\r\n+                logger.warn(\"No method found in service interface \" + interfaceClass.getName());\r\n+                map.put(METHODS_KEY, ANY_VALUE);\r\n+            } else {\r\n+                map.put(METHODS_KEY, StringUtils.join(new HashSet<String>(Arrays.asList(methods)), \",\"));\r\n+            }\r\n+        }\r\n+\r\n+        /**\r\n+         * Here the token value configured by the provider is used to assign the value to ServiceConfig#token\r\n+         */\r\n+        if (ConfigUtils.isEmpty(token) && provider != null) {\r\n+            token = provider.getToken();\r\n+        }\r\n+\r\n+        if (!ConfigUtils.isEmpty(token)) {\r\n+            if (ConfigUtils.isDefault(token)) {\r\n+                map.put(TOKEN_KEY, UUID.randomUUID().toString());\r\n+            } else {\r\n+                map.put(TOKEN_KEY, token);\r\n+            }\r\n+        }\r\n+        //init serviceMetadata attachments\r\n+        serviceMetadata.getAttachments().putAll(map);\r\n+\r\n+        // export service\r\n+        String host = findConfigedHosts(protocolConfig, registryURLs, map);\r\n+        Integer port = findConfigedPorts(protocolConfig, name, map);\r\n+        URL url = new URL(name, host, port, getContextPath(protocolConfig).map(p -> p + \"/\" + path).orElse(path), map);\r\n+\r\n+        // You can customize Configurator to append extra parameters\r\n+        if (ExtensionLoader.getExtensionLoader(ConfiguratorFactory.class)\r\n+                .hasExtension(url.getProtocol())) {\r\n+            url = ExtensionLoader.getExtensionLoader(ConfiguratorFactory.class)\r\n+                    .getExtension(url.getProtocol()).getConfigurator(url).configure(url);\r\n+        }\r\n+\r\n+        String scope = url.getParameter(SCOPE_KEY);\r\n+        // don't export when none is configured\r\n+        if (!SCOPE_NONE.equalsIgnoreCase(scope)) {\r\n+\r\n+            // export to local if the config is not remote (export to remote only when config is remote)\r\n+            if (!SCOPE_REMOTE.equalsIgnoreCase(scope)) {\r\n+                exportLocal(url);\r\n+            }\r\n+            // export to remote if the config is not local (export to local only when config is local)\r\n+            if (!SCOPE_LOCAL.equalsIgnoreCase(scope)) {\r\n+                if (CollectionUtils.isNotEmpty(registryURLs)) {\r\n+                    for (URL registryURL : registryURLs) {\r\n+                        //if protocol is only injvm ,not register\r\n+                        if (LOCAL_PROTOCOL.equalsIgnoreCase(url.getProtocol())) {\r\n+                            continue;\r\n+                        }\r\n+                        url = url.addParameterIfAbsent(DYNAMIC_KEY, registryURL.getParameter(DYNAMIC_KEY));\r\n+                        URL monitorUrl = ConfigValidationUtils.loadMonitor(this, registryURL);\r\n+                        if (monitorUrl != null) {\r\n+                            url = url.addParameterAndEncoded(MONITOR_KEY, monitorUrl.toFullString());\r\n+                        }\r\n+                        if (logger.isInfoEnabled()) {\r\n+                            if (url.getParameter(REGISTER_KEY, true)) {\r\n+                                logger.info(\"Register dubbo service \" + interfaceClass.getName() + \" url \" + url + \" to registry \" + registryURL);\r\n+                            } else {\r\n+                                logger.info(\"Export dubbo service \" + interfaceClass.getName() + \" to url \" + url);\r\n+                            }\r\n+                        }\r\n+\r\n+                        // For providers, this is used to enable custom proxy to generate invoker\r\n+                        String proxy = url.getParameter(PROXY_KEY);\r\n+                        if (StringUtils.isNotEmpty(proxy)) {\r\n+                            registryURL = registryURL.addParameter(PROXY_KEY, proxy);\r\n+                        }\r\n+\r\n+                        Invoker<?> invoker = PROXY_FACTORY.getInvoker(ref, (Class) interfaceClass, registryURL.addParameterAndEncoded(EXPORT_KEY, url.toFullString()));\r\n+                        DelegateProviderMetaDataInvoker wrapperInvoker = new DelegateProviderMetaDataInvoker(invoker, this);\r\n+\r\n+                        Exporter<?> exporter = PROTOCOL.export(wrapperInvoker);\r\n+                        exporters.add(exporter);\r\n+                    }\r\n+                } else {\r\n+                    if (logger.isInfoEnabled()) {\r\n+                        logger.info(\"Export dubbo service \" + interfaceClass.getName() + \" to url \" + url);\r\n+                    }\r\n+                    Invoker<?> invoker = PROXY_FACTORY.getInvoker(ref, (Class) interfaceClass, url);\r\n+                    DelegateProviderMetaDataInvoker wrapperInvoker = new DelegateProviderMetaDataInvoker(invoker, this);\r\n+\r\n+                    Exporter<?> exporter = PROTOCOL.export(wrapperInvoker);\r\n+                    exporters.add(exporter);\r\n+                }\r\n+\r\n+                MetadataUtils.publishServiceDefinition(url);\r\n+            }\r\n+        }\r\n+        this.urls.add(url);\r\n+    }\r\n+\r\n+    @SuppressWarnings({\"unchecked\", \"rawtypes\"})\r\n+    /**\r\n+     * always export injvm\r\n+     */\r\n+    private void exportLocal(URL url) {\r\n+        URL local = URLBuilder.from(url)\r\n+                .setProtocol(LOCAL_PROTOCOL)\r\n+                .setHost(LOCALHOST_VALUE)\r\n+                .setPort(0)\r\n+                .build();\r\n+        Exporter<?> exporter = PROTOCOL.export(\r\n+                PROXY_FACTORY.getInvoker(ref, (Class) interfaceClass, local));\r\n+        exporters.add(exporter);\r\n+        logger.info(\"Export dubbo service \" + interfaceClass.getName() + \" to local registry url : \" + local);\r\n+    }\r\n+\r\n+    /**\r\n+     * Determine if it is injvm\r\n+     *\r\n+     * @return\r\n+     */\r\n+    private boolean isOnlyInJvm() {\r\n+        return getProtocols().size() == 1\r\n+                && LOCAL_PROTOCOL.equalsIgnoreCase(getProtocols().get(0).getName());\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Register & bind IP address for service provider, can be configured separately.\r\n+     * Configuration priority: environment variables -> java system properties -> host property in config file ->\r\n+     * /etc/hosts -> default network address -> first available network address\r\n+     *\r\n+     * @param protocolConfig\r\n+     * @param registryURLs\r\n+     * @param map\r\n+     * @return\r\n+     */\r\n+    private String findConfigedHosts(ProtocolConfig protocolConfig,\r\n+                                     List<URL> registryURLs,\r\n+                                     Map<String, String> map) {\r\n+        boolean anyhost = false;\r\n+\r\n+        String hostToBind = getValueFromConfig(protocolConfig, DUBBO_IP_TO_BIND);\r\n+        if (hostToBind != null && hostToBind.length() > 0 && isInvalidLocalHost(hostToBind)) {\r\n+            throw new IllegalArgumentException(\"Specified invalid bind ip from property:\" + DUBBO_IP_TO_BIND + \", value:\" + hostToBind);\r\n+        }\r\n+\r\n+        // if bind ip is not found in environment, keep looking up\r\n+        if (StringUtils.isEmpty(hostToBind)) {\r\n+            hostToBind = protocolConfig.getHost();\r\n+            if (provider != null && StringUtils.isEmpty(hostToBind)) {\r\n+                hostToBind = provider.getHost();\r\n+            }\r\n+            if (isInvalidLocalHost(hostToBind)) {\r\n+                anyhost = true;\r\n+                try {\r\n+                    logger.info(\"No valid ip found from environment, try to find valid host from DNS.\");\r\n+                    hostToBind = InetAddress.getLocalHost().getHostAddress();\r\n+                } catch (UnknownHostException e) {\r\n+                    logger.warn(e.getMessage(), e);\r\n+                }\r\n+                if (isInvalidLocalHost(hostToBind)) {\r\n+                    if (CollectionUtils.isNotEmpty(registryURLs)) {\r\n+                        for (URL registryURL : registryURLs) {\r\n+                            if (MULTICAST.equalsIgnoreCase(registryURL.getParameter(\"registry\"))) {\r\n+                                // skip multicast registry since we cannot connect to it via Socket\r\n+                                continue;\r\n+                            }\r\n+                            try (Socket socket = new Socket()) {\r\n+                                SocketAddress addr = new InetSocketAddress(registryURL.getHost(), registryURL.getPort());\r\n+                                socket.connect(addr, 1000);\r\n+                                hostToBind = socket.getLocalAddress().getHostAddress();\r\n+                                break;\r\n+                            } catch (Exception e) {\r\n+                                logger.warn(e.getMessage(), e);\r\n+                            }\r\n+                        }\r\n+                    }\r\n+                    if (isInvalidLocalHost(hostToBind)) {\r\n+                        hostToBind = getLocalHost();\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        map.put(BIND_IP_KEY, hostToBind);\r\n+\r\n+        // registry ip is not used for bind ip by default\r\n+        String hostToRegistry = getValueFromConfig(protocolConfig, DUBBO_IP_TO_REGISTRY);\r\n+        if (hostToRegistry != null && hostToRegistry.length() > 0 && isInvalidLocalHost(hostToRegistry)) {\r\n+            throw new IllegalArgumentException(\"Specified invalid registry ip from property:\" + DUBBO_IP_TO_REGISTRY + \", value:\" + hostToRegistry);\r\n+        } else if (StringUtils.isEmpty(hostToRegistry)) {\r\n+            // bind ip is used as registry ip by default\r\n+            hostToRegistry = hostToBind;\r\n+        }\r\n+\r\n+        map.put(ANYHOST_KEY, String.valueOf(anyhost));\r\n+\r\n+        return hostToRegistry;\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Register port and bind port for the provider, can be configured separately\r\n+     * Configuration priority: environment variable -> java system properties -> port property in protocol config file\r\n+     * -> protocol default port\r\n+     *\r\n+     * @param protocolConfig\r\n+     * @param name\r\n+     * @return\r\n+     */\r\n+    private Integer findConfigedPorts(ProtocolConfig protocolConfig,\r\n+                                      String name,\r\n+                                      Map<String, String> map) {\r\n+        Integer portToBind = null;\r\n+\r\n+        // parse bind port from environment\r\n+        String port = getValueFromConfig(protocolConfig, DUBBO_PORT_TO_BIND);\r\n+        portToBind = parsePort(port);\r\n+\r\n+        // if there's no bind port found from environment, keep looking up.\r\n+        if (portToBind == null) {\r\n+            portToBind = protocolConfig.getPort();\r\n+            if (provider != null && (portToBind == null || portToBind == 0)) {\r\n+                portToBind = provider.getPort();\r\n+            }\r\n+            final int defaultPort = ExtensionLoader.getExtensionLoader(Protocol.class).getExtension(name).getDefaultPort();\r\n+            if (portToBind == null || portToBind == 0) {\r\n+                portToBind = defaultPort;\r\n+            }\r\n+            if (portToBind <= 0) {\r\n+                portToBind = getRandomPort(name);\r\n+                if (portToBind == null || portToBind < 0) {\r\n+                    portToBind = getAvailablePort(defaultPort);\r\n+                    putRandomPort(name, portToBind);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        // save bind port, used as url's key later\r\n+        map.put(BIND_PORT_KEY, String.valueOf(portToBind));\r\n+\r\n+        // registry port, not used as bind port by default\r\n+        String portToRegistryStr = getValueFromConfig(protocolConfig, DUBBO_PORT_TO_REGISTRY);\r\n+        Integer portToRegistry = parsePort(portToRegistryStr);\r\n+        if (portToRegistry == null) {\r\n+            portToRegistry = portToBind;\r\n+        }\r\n+\r\n+        return portToRegistry;\r\n+    }\r\n+\r\n+    private Integer parsePort(String configPort) {\r\n+        Integer port = null;\r\n+        if (configPort != null && configPort.length() > 0) {\r\n+            try {\r\n+                Integer intPort = Integer.parseInt(configPort);\r\n+                if (isInvalidPort(intPort)) {\r\n+                    throw new IllegalArgumentException(\"Specified invalid port from env value:\" + configPort);\r\n+                }\r\n+                port = intPort;\r\n+            } catch (Exception e) {\r\n+                throw new IllegalArgumentException(\"Specified invalid port from env value:\" + configPort);\r\n+            }\r\n+        }\r\n+        return port;\r\n+    }\r\n+\r\n+    private String getValueFromConfig(ProtocolConfig protocolConfig, String key) {\r\n+        String protocolPrefix = protocolConfig.getName().toUpperCase() + \"_\";\r\n+        String value = ConfigUtils.getSystemProperty(protocolPrefix + key);\r\n+        if (StringUtils.isEmpty(value)) {\r\n+            value = ConfigUtils.getSystemProperty(key);\r\n+        }\r\n+        return value;\r\n+    }\r\n+\r\n+    private Integer getRandomPort(String protocol) {\r\n+        protocol = protocol.toLowerCase();\r\n+        return RANDOM_PORT_MAP.getOrDefault(protocol, Integer.MIN_VALUE);\r\n+    }\r\n+\r\n+    private void putRandomPort(String protocol, Integer port) {\r\n+        protocol = protocol.toLowerCase();\r\n+        if (!RANDOM_PORT_MAP.containsKey(protocol)) {\r\n+            RANDOM_PORT_MAP.put(protocol, port);\r\n+            logger.warn(\"Use random available port(\" + port + \") for protocol \" + protocol);\r\n+        }\r\n+    }\r\n+\r\n+    private void postProcessConfig() {\r\n+        List<ConfigPostProcessor> configPostProcessors = ExtensionLoader.getExtensionLoader(ConfigPostProcessor.class)\r\n+                .getActivateExtension(URL.valueOf(\"configPostProcessor://\"), (String[]) null);\r\n+        configPostProcessors.forEach(component -> component.postProcessServiceConfig(this));\r\n+    }\r\n+\r\n+    /**\r\n+     * Dispatch an {@link Event event}\r\n+     *\r\n+     * @param event an {@link Event event}\r\n+     * @since 2.7.5\r\n+     */\r\n+    private void dispatch(Event event) {\r\n+        EventDispatcher.getDefaultExtension().dispatch(event);\r\n+    }\r\n+\r\n+    public DubboBootstrap getBootstrap() {\r\n+        return bootstrap;\r\n+    }\r\n+\r\n+    public void setBootstrap(DubboBootstrap bootstrap) {\r\n+        this.bootstrap = bootstrap;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/DubboBootstrap.java", "source2": "org/apache/dubbo/config/bootstrap/DubboBootstrap.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,1409 +1,1409 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.ConfigurationUtils;\n-import org.apache.dubbo.common.config.Environment;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory;\n-import org.apache.dubbo.common.config.configcenter.wrapper.CompositeDynamicConfiguration;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.lang.ShutdownHookCallbacks;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.threadpool.concurrent.ScheduledCompletableFuture;\n-import org.apache.dubbo.common.threadpool.manager.ExecutorRepository;\n-import org.apache.dubbo.common.utils.ArrayUtils;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.ApplicationConfig;\n-import org.apache.dubbo.config.ConfigCenterConfig;\n-import org.apache.dubbo.config.ConsumerConfig;\n-import org.apache.dubbo.config.DubboShutdownHook;\n-import org.apache.dubbo.config.MetadataReportConfig;\n-import org.apache.dubbo.config.MetricsConfig;\n-import org.apache.dubbo.config.ModuleConfig;\n-import org.apache.dubbo.config.MonitorConfig;\n-import org.apache.dubbo.config.ProtocolConfig;\n-import org.apache.dubbo.config.ProviderConfig;\n-import org.apache.dubbo.config.ReferenceConfig;\n-import org.apache.dubbo.config.RegistryConfig;\n-import org.apache.dubbo.config.ServiceConfig;\n-import org.apache.dubbo.config.ServiceConfigBase;\n-import org.apache.dubbo.config.SslConfig;\n-import org.apache.dubbo.config.bootstrap.builders.ApplicationBuilder;\n-import org.apache.dubbo.config.bootstrap.builders.ConsumerBuilder;\n-import org.apache.dubbo.config.bootstrap.builders.ProtocolBuilder;\n-import org.apache.dubbo.config.bootstrap.builders.ProviderBuilder;\n-import org.apache.dubbo.config.bootstrap.builders.ReferenceBuilder;\n-import org.apache.dubbo.config.bootstrap.builders.RegistryBuilder;\n-import org.apache.dubbo.config.bootstrap.builders.ServiceBuilder;\n-import org.apache.dubbo.config.context.ConfigManager;\n-import org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter;\n-import org.apache.dubbo.config.utils.ConfigValidationUtils;\n-import org.apache.dubbo.config.utils.ReferenceConfigCache;\n-import org.apache.dubbo.event.EventDispatcher;\n-import org.apache.dubbo.event.EventListener;\n-import org.apache.dubbo.event.GenericEventListener;\n-import org.apache.dubbo.metadata.MetadataService;\n-import org.apache.dubbo.metadata.MetadataServiceExporter;\n-import org.apache.dubbo.metadata.WritableMetadataService;\n-import org.apache.dubbo.metadata.report.MetadataReportFactory;\n-import org.apache.dubbo.metadata.report.MetadataReportInstance;\n-import org.apache.dubbo.registry.client.DefaultServiceInstance;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.ServiceInstanceCustomizer;\n-import org.apache.dubbo.registry.client.metadata.MetadataUtils;\n-import org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils;\n-import org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService;\n-import org.apache.dubbo.registry.client.metadata.store.RemoteMetadataServiceImpl;\n-import org.apache.dubbo.registry.support.AbstractRegistryFactory;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-\n-import java.io.IOException;\n-import java.util.ArrayList;\n-import java.util.Collection;\n-import java.util.HashMap;\n-import java.util.List;\n-import java.util.Set;\n-import java.util.SortedSet;\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.Future;\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.atomic.AtomicBoolean;\n-import java.util.concurrent.locks.Condition;\n-import java.util.concurrent.locks.Lock;\n-import java.util.concurrent.locks.ReentrantLock;\n-import java.util.function.Consumer;\n-import java.util.function.Supplier;\n-\n-import static java.lang.String.format;\n-import static java.util.Collections.singletonList;\n-import static java.util.concurrent.Executors.newSingleThreadExecutor;\n-import static org.apache.dubbo.common.config.ConfigurationUtils.parseProperties;\n-import static org.apache.dubbo.common.config.configcenter.DynamicConfiguration.getDynamicConfiguration;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;\n-import static org.apache.dubbo.common.constants.CommonConstants.REGISTRY_SPLIT_PATTERN;\n-import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE;\n-import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\n-import static org.apache.dubbo.common.function.ThrowableAction.execute;\n-import static org.apache.dubbo.common.utils.StringUtils.isEmpty;\n-import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\n-import static org.apache.dubbo.metadata.MetadataConstants.DEFAULT_METADATA_PUBLISH_DELAY;\n-import static org.apache.dubbo.metadata.MetadataConstants.METADATA_PUBLISH_DELAY_KEY;\n-import static org.apache.dubbo.metadata.WritableMetadataService.getDefaultExtension;\n-import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.calInstanceRevision;\n-import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.setMetadataStorageType;\n-import static org.apache.dubbo.registry.support.AbstractRegistryFactory.getServiceDiscoveries;\n-import static org.apache.dubbo.remoting.Constants.CLIENT_KEY;\n-\n-/**\n- * See {@link ApplicationModel} and {@link ExtensionLoader} for why this class is designed to be singleton.\n- * <p>\n- * The bootstrap class of Dubbo\n- * <p>\n- * Get singleton instance by calling static method {@link #getInstance()}.\n- * Designed as singleton because some classes inside Dubbo, such as ExtensionLoader, are designed only for one instance per process.\n- *\n- * @since 2.7.5\n- */\n-public class DubboBootstrap extends GenericEventListener {\n-\n-    public static final String DEFAULT_REGISTRY_ID = \"REGISTRY#DEFAULT\";\n-\n-    public static final String DEFAULT_PROTOCOL_ID = \"PROTOCOL#DEFAULT\";\n-\n-    public static final String DEFAULT_SERVICE_ID = \"SERVICE#DEFAULT\";\n-\n-    public static final String DEFAULT_REFERENCE_ID = \"REFERENCE#DEFAULT\";\n-\n-    public static final String DEFAULT_PROVIDER_ID = \"PROVIDER#DEFAULT\";\n-\n-    public static final String DEFAULT_CONSUMER_ID = \"CONSUMER#DEFAULT\";\n-\n-    private static final String NAME = DubboBootstrap.class.getSimpleName();\n-\n-    private final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    private static volatile DubboBootstrap instance;\n-\n-    private final AtomicBoolean awaited = new AtomicBoolean(false);\n-\n-    private final Lock lock = new ReentrantLock();\n-\n-    private final Condition condition = lock.newCondition();\n-\n-    private final Lock destroyLock = new ReentrantLock();\n-\n-    private final ExecutorService executorService = newSingleThreadExecutor();\n-\n-    private final EventDispatcher eventDispatcher = EventDispatcher.getDefaultExtension();\n-\n-    private final ExecutorRepository executorRepository = getExtensionLoader(ExecutorRepository.class).getDefaultExtension();\n-\n-    private final ConfigManager configManager;\n-\n-    private final Environment environment;\n-\n-    private ReferenceConfigCache cache;\n-\n-    private volatile boolean exportAsync;\n-\n-    private volatile boolean referAsync;\n-\n-    private AtomicBoolean initialized = new AtomicBoolean(false);\n-\n-    private AtomicBoolean started = new AtomicBoolean(false);\n-\n-    private AtomicBoolean ready = new AtomicBoolean(false);\n-\n-    private AtomicBoolean destroyed = new AtomicBoolean(false);\n-\n-    private volatile ServiceInstance serviceInstance;\n-\n-    private volatile MetadataService metadataService;\n-\n-    private volatile MetadataServiceExporter metadataServiceExporter;\n-\n-    private List<ServiceConfigBase<?>> exportedServices = new ArrayList<>();\n-\n-    private List<Future<?>> asyncExportingFutures = new ArrayList<>();\n-\n-    private List<CompletableFuture<Object>> asyncReferringFutures = new ArrayList<>();\n-\n-    /**\n-     * See {@link ApplicationModel} and {@link ExtensionLoader} for why DubboBootstrap is designed to be singleton.\n-     */\n-    public static DubboBootstrap getInstance() {\n-        if (instance == null) {\n-            synchronized (DubboBootstrap.class) {\n-                if (instance == null) {\n-                    instance = new DubboBootstrap();\n-                }\n-            }\n-        }\n-        return instance;\n-    }\n-\n-    private DubboBootstrap() {\n-        configManager = ApplicationModel.getConfigManager();\n-        environment = ApplicationModel.getEnvironment();\n-\n-        DubboShutdownHook.getDubboShutdownHook().register();\n-        ShutdownHookCallbacks.INSTANCE.addCallback(DubboBootstrap.this::destroy);\n-    }\n-\n-    public void unRegisterShutdownHook() {\n-        DubboShutdownHook.getDubboShutdownHook().unregister();\n-    }\n-\n-    private boolean isOnlyRegisterProvider() {\n-        Boolean registerConsumer = getApplication().getRegisterConsumer();\n-        return registerConsumer == null || !registerConsumer;\n-    }\n-\n-    private String getMetadataType() {\n-        String type = getApplication().getMetadataType();\n-        if (StringUtils.isEmpty(type)) {\n-            type = DEFAULT_METADATA_STORAGE_TYPE;\n-        }\n-        return type;\n-    }\n-\n-    public DubboBootstrap metadataReport(MetadataReportConfig metadataReportConfig) {\n-        configManager.addMetadataReport(metadataReportConfig);\n-        return this;\n-    }\n-\n-    public DubboBootstrap metadataReports(List<MetadataReportConfig> metadataReportConfigs) {\n-        if (CollectionUtils.isEmpty(metadataReportConfigs)) {\n-            return this;\n-        }\n-\n-        configManager.addMetadataReports(metadataReportConfigs);\n-        return this;\n-    }\n-\n-    // {@link ApplicationConfig} correlative methods\n-\n-    /**\n-     * Set the name of application\n-     *\n-     * @param name the name of application\n-     * @return current {@link DubboBootstrap} instance\n-     */\n-    public DubboBootstrap application(String name) {\n-        return application(name, builder -> {\n-            // DO NOTHING\n-        });\n-    }\n-\n-    /**\n-     * Set the name of application and it's future build\n-     *\n-     * @param name            the name of application\n-     * @param consumerBuilder {@link ApplicationBuilder}\n-     * @return current {@link DubboBootstrap} instance\n-     */\n-    public DubboBootstrap application(String name, Consumer<ApplicationBuilder> consumerBuilder) {\n-        ApplicationBuilder builder = createApplicationBuilder(name);\n-        consumerBuilder.accept(builder);\n-        return application(builder.build());\n-    }\n-\n-    /**\n-     * Set the {@link ApplicationConfig}\n-     *\n-     * @param applicationConfig the {@link ApplicationConfig}\n-     * @return current {@link DubboBootstrap} instance\n-     */\n-    public DubboBootstrap application(ApplicationConfig applicationConfig) {\n-        configManager.setApplication(applicationConfig);\n-        return this;\n-    }\n-\n-\n-    // {@link RegistryConfig} correlative methods\n-\n-    /**\n-     * Add an instance of {@link RegistryConfig} with {@link #DEFAULT_REGISTRY_ID default ID}\n-     *\n-     * @param consumerBuilder the {@link Consumer} of {@link RegistryBuilder}\n-     * @return current {@link DubboBootstrap} instance\n-     */\n-    public DubboBootstrap registry(Consumer<RegistryBuilder> consumerBuilder) {\n-        return registry(DEFAULT_REGISTRY_ID, consumerBuilder);\n-    }\n-\n-    /**\n-     * Add an instance of {@link RegistryConfig} with the specified ID\n-     *\n-     * @param id              the {@link RegistryConfig#getId() id}  of {@link RegistryConfig}\n-     * @param consumerBuilder the {@link Consumer} of {@link RegistryBuilder}\n-     * @return current {@link DubboBootstrap} instance\n-     */\n-    public DubboBootstrap registry(String id, Consumer<RegistryBuilder> consumerBuilder) {\n-        RegistryBuilder builder = createRegistryBuilder(id);\n-        consumerBuilder.accept(builder);\n-        return registry(builder.build());\n-    }\n-\n-    /**\n-     * Add an instance of {@link RegistryConfig}\n-     *\n-     * @param registryConfig an instance of {@link RegistryConfig}\n-     * @return current {@link DubboBootstrap} instance\n-     */\n-    public DubboBootstrap registry(RegistryConfig registryConfig) {\n-        configManager.addRegistry(registryConfig);\n-        return this;\n-    }\n-\n-    /**\n-     * Add an instance of {@link RegistryConfig}\n-     *\n-     * @param registryConfigs the multiple instances of {@link RegistryConfig}\n-     * @return current {@link DubboBootstrap} instance\n-     */\n-    public DubboBootstrap registries(List<RegistryConfig> registryConfigs) {\n-        if (CollectionUtils.isEmpty(registryConfigs)) {\n-            return this;\n-        }\n-        registryConfigs.forEach(this::registry);\n-        return this;\n-    }\n-\n-\n-    // {@link ProtocolConfig} correlative methods\n-    public DubboBootstrap protocol(Consumer<ProtocolBuilder> consumerBuilder) {\n-        return protocol(DEFAULT_PROTOCOL_ID, consumerBuilder);\n-    }\n-\n-    public DubboBootstrap protocol(String id, Consumer<ProtocolBuilder> consumerBuilder) {\n-        ProtocolBuilder builder = createProtocolBuilder(id);\n-        consumerBuilder.accept(builder);\n-        return protocol(builder.build());\n-    }\n-\n-    public DubboBootstrap protocol(ProtocolConfig protocolConfig) {\n-        return protocols(singletonList(protocolConfig));\n-    }\n-\n-    public DubboBootstrap protocols(List<ProtocolConfig> protocolConfigs) {\n-        if (CollectionUtils.isEmpty(protocolConfigs)) {\n-            return this;\n-        }\n-        configManager.addProtocols(protocolConfigs);\n-        return this;\n-    }\n-\n-    // {@link ServiceConfig} correlative methods\n-    public <S> DubboBootstrap service(Consumer<ServiceBuilder<S>> consumerBuilder) {\n-        return service(DEFAULT_SERVICE_ID, consumerBuilder);\n-    }\n-\n-    public <S> DubboBootstrap service(String id, Consumer<ServiceBuilder<S>> consumerBuilder) {\n-        ServiceBuilder builder = createServiceBuilder(id);\n-        consumerBuilder.accept(builder);\n-        return service(builder.build());\n-    }\n-\n-    public DubboBootstrap service(ServiceConfig<?> serviceConfig) {\n-        configManager.addService(serviceConfig);\n-        return this;\n-    }\n-\n-    public DubboBootstrap services(List<ServiceConfig> serviceConfigs) {\n-        if (CollectionUtils.isEmpty(serviceConfigs)) {\n-            return this;\n-        }\n-        serviceConfigs.forEach(configManager::addService);\n-        return this;\n-    }\n-\n-    // {@link Reference} correlative methods\n-    public <S> DubboBootstrap reference(Consumer<ReferenceBuilder<S>> consumerBuilder) {\n-        return reference(DEFAULT_REFERENCE_ID, consumerBuilder);\n-    }\n-\n-    public <S> DubboBootstrap reference(String id, Consumer<ReferenceBuilder<S>> consumerBuilder) {\n-        ReferenceBuilder builder = createReferenceBuilder(id);\n-        consumerBuilder.accept(builder);\n-        return reference(builder.build());\n-    }\n-\n-    public DubboBootstrap reference(ReferenceConfig<?> referenceConfig) {\n-        configManager.addReference(referenceConfig);\n-        return this;\n-    }\n-\n-    public DubboBootstrap references(List<ReferenceConfig> referenceConfigs) {\n-        if (CollectionUtils.isEmpty(referenceConfigs)) {\n-            return this;\n-        }\n-\n-        referenceConfigs.forEach(configManager::addReference);\n-        return this;\n-    }\n-\n-    // {@link ProviderConfig} correlative methods\n-    public DubboBootstrap provider(Consumer<ProviderBuilder> builderConsumer) {\n-        return provider(DEFAULT_PROVIDER_ID, builderConsumer);\n-    }\n-\n-    public DubboBootstrap provider(String id, Consumer<ProviderBuilder> builderConsumer) {\n-        ProviderBuilder builder = createProviderBuilder(id);\n-        builderConsumer.accept(builder);\n-        return provider(builder.build());\n-    }\n-\n-    public DubboBootstrap provider(ProviderConfig providerConfig) {\n-        return providers(singletonList(providerConfig));\n-    }\n-\n-    public DubboBootstrap providers(List<ProviderConfig> providerConfigs) {\n-        if (CollectionUtils.isEmpty(providerConfigs)) {\n-            return this;\n-        }\n-\n-        providerConfigs.forEach(configManager::addProvider);\n-        return this;\n-    }\n-\n-    // {@link ConsumerConfig} correlative methods\n-    public DubboBootstrap consumer(Consumer<ConsumerBuilder> builderConsumer) {\n-        return consumer(DEFAULT_CONSUMER_ID, builderConsumer);\n-    }\n-\n-    public DubboBootstrap consumer(String id, Consumer<ConsumerBuilder> builderConsumer) {\n-        ConsumerBuilder builder = createConsumerBuilder(id);\n-        builderConsumer.accept(builder);\n-        return consumer(builder.build());\n-    }\n-\n-    public DubboBootstrap consumer(ConsumerConfig consumerConfig) {\n-        return consumers(singletonList(consumerConfig));\n-    }\n-\n-    public DubboBootstrap consumers(List<ConsumerConfig> consumerConfigs) {\n-        if (CollectionUtils.isEmpty(consumerConfigs)) {\n-            return this;\n-        }\n-\n-        consumerConfigs.forEach(configManager::addConsumer);\n-        return this;\n-    }\n-\n-    // {@link ConfigCenterConfig} correlative methods\n-    public DubboBootstrap configCenter(ConfigCenterConfig configCenterConfig) {\n-        return configCenters(singletonList(configCenterConfig));\n-    }\n-\n-    public DubboBootstrap configCenters(List<ConfigCenterConfig> configCenterConfigs) {\n-        if (CollectionUtils.isEmpty(configCenterConfigs)) {\n-            return this;\n-        }\n-        configManager.addConfigCenters(configCenterConfigs);\n-        return this;\n-    }\n-\n-    public DubboBootstrap monitor(MonitorConfig monitor) {\n-        configManager.setMonitor(monitor);\n-        return this;\n-    }\n-\n-    public DubboBootstrap metrics(MetricsConfig metrics) {\n-        configManager.setMetrics(metrics);\n-        return this;\n-    }\n-\n-    public DubboBootstrap module(ModuleConfig module) {\n-        configManager.setModule(module);\n-        return this;\n-    }\n-\n-    public DubboBootstrap ssl(SslConfig sslConfig) {\n-        configManager.setSsl(sslConfig);\n-        return this;\n-    }\n-\n-    public DubboBootstrap cache(ReferenceConfigCache cache) {\n-        this.cache = cache;\n-        return this;\n-    }\n-\n-    public ReferenceConfigCache getCache() {\n-        if (cache == null) {\n-            cache = ReferenceConfigCache.getCache();\n-        }\n-        return cache;\n-    }\n-\n-    public DubboBootstrap exportAsync() {\n-        this.exportAsync = true;\n-        return this;\n-    }\n-\n-    public DubboBootstrap referAsync() {\n-        this.referAsync = true;\n-        return this;\n-    }\n-\n-    @Deprecated\n-    public void init() {\n-        initialize();\n-    }\n-\n-    /**\n-     * Initialize\n-     */\n-    public void initialize() {\n-        if (!initialized.compareAndSet(false, true)) {\n-            return;\n-        }\n-\n-        ApplicationModel.initFrameworkExts();\n-\n-        startConfigCenter();\n-\n-        loadRemoteConfigs();\n-\n-        checkGlobalConfigs();\n-\n-        // @since 2.7.8\n-        startMetadataCenter();\n-\n-        initMetadataService();\n-\n-        initEventListener();\n-\n-        if (logger.isInfoEnabled()) {\n-            logger.info(NAME + \" has been initialized!\");\n-        }\n-    }\n-\n-    private void checkGlobalConfigs() {\n-        // check Application\n-        ConfigValidationUtils.validateApplicationConfig(getApplication());\n-\n-        // check Metadata\n-        Collection<MetadataReportConfig> metadatas = configManager.getMetadataConfigs();\n-        if (CollectionUtils.isEmpty(metadatas)) {\n-            MetadataReportConfig metadataReportConfig = new MetadataReportConfig();\n-            metadataReportConfig.refresh();\n-            if (metadataReportConfig.isValid()) {\n-                configManager.addMetadataReport(metadataReportConfig);\n-                metadatas = configManager.getMetadataConfigs();\n-            }\n-        }\n-        if (CollectionUtils.isNotEmpty(metadatas)) {\n-            for (MetadataReportConfig metadataReportConfig : metadatas) {\n-                metadataReportConfig.refresh();\n-                ConfigValidationUtils.validateMetadataConfig(metadataReportConfig);\n-            }\n-        }\n-\n-        // check Provider\n-        Collection<ProviderConfig> providers = configManager.getProviders();\n-        if (CollectionUtils.isEmpty(providers)) {\n-            configManager.getDefaultProvider().orElseGet(() -> {\n-                ProviderConfig providerConfig = new ProviderConfig();\n-                configManager.addProvider(providerConfig);\n-                providerConfig.refresh();\n-                return providerConfig;\n-            });\n-        }\n-        for (ProviderConfig providerConfig : configManager.getProviders()) {\n-            ConfigValidationUtils.validateProviderConfig(providerConfig);\n-        }\n-        // check Consumer\n-        Collection<ConsumerConfig> consumers = configManager.getConsumers();\n-        if (CollectionUtils.isEmpty(consumers)) {\n-            configManager.getDefaultConsumer().orElseGet(() -> {\n-                ConsumerConfig consumerConfig = new ConsumerConfig();\n-                configManager.addConsumer(consumerConfig);\n-                consumerConfig.refresh();\n-                return consumerConfig;\n-            });\n-        }\n-        for (ConsumerConfig consumerConfig : configManager.getConsumers()) {\n-            ConfigValidationUtils.validateConsumerConfig(consumerConfig);\n-        }\n-\n-        // check Monitor\n-        ConfigValidationUtils.validateMonitorConfig(getMonitor());\n-        // check Metrics\n-        ConfigValidationUtils.validateMetricsConfig(getMetrics());\n-        // check Module\n-        ConfigValidationUtils.validateModuleConfig(getModule());\n-        // check Ssl\n-        ConfigValidationUtils.validateSslConfig(getSsl());\n-    }\n-\n-    private void startConfigCenter() {\n-\n-        useRegistryAsConfigCenterIfNecessary();\n-\n-        Collection<ConfigCenterConfig> configCenters = configManager.getConfigCenters();\n-\n-        // check Config Center\n-        if (CollectionUtils.isEmpty(configCenters)) {\n-            ConfigCenterConfig configCenterConfig = new ConfigCenterConfig();\n-            configCenterConfig.refresh();\n-            if (configCenterConfig.isValid()) {\n-                configManager.addConfigCenter(configCenterConfig);\n-                configCenters = configManager.getConfigCenters();\n-            }\n-        } else {\n-            for (ConfigCenterConfig configCenterConfig : configCenters) {\n-                configCenterConfig.refresh();\n-                ConfigValidationUtils.validateConfigCenterConfig(configCenterConfig);\n-            }\n-        }\n-\n-        if (CollectionUtils.isNotEmpty(configCenters)) {\n-            CompositeDynamicConfiguration compositeDynamicConfiguration = new CompositeDynamicConfiguration();\n-            for (ConfigCenterConfig configCenter : configCenters) {\n-                compositeDynamicConfiguration.addConfiguration(prepareEnvironment(configCenter));\n-            }\n-            environment.setDynamicConfiguration(compositeDynamicConfiguration);\n-        }\n-        configManager.refreshAll();\n-    }\n-\n-    private void startMetadataCenter() {\n-\n-        useRegistryAsMetadataCenterIfNecessary();\n-\n-        ApplicationConfig applicationConfig = getApplication();\n-\n-        String metadataType = applicationConfig.getMetadataType();\n-        // FIXME, multiple metadata config support.\n-        Collection<MetadataReportConfig> metadataReportConfigs = configManager.getMetadataConfigs();\n-        if (CollectionUtils.isEmpty(metadataReportConfigs)) {\n-            if (REMOTE_METADATA_STORAGE_TYPE.equals(metadataType)) {\n-                throw new IllegalStateException(\"No MetadataConfig found, Metadata Center address is required when 'metadata=remote' is enabled.\");\n-            }\n-            return;\n-        }\n-\n-        for (MetadataReportConfig metadataReportConfig : metadataReportConfigs) {\n-            ConfigValidationUtils.validateMetadataConfig(metadataReportConfig);\n-            if (!metadataReportConfig.isValid()) {\n-                return;\n-            }\n-            MetadataReportInstance.init(metadataReportConfig);\n-        }\n-    }\n-\n-    /**\n-     * For compatibility purpose, use registry as the default config center when\n-     * there's no config center specified explicitly and\n-     * useAsConfigCenter of registryConfig is null or true\n-     */\n-    private void useRegistryAsConfigCenterIfNecessary() {\n-        // we use the loading status of DynamicConfiguration to decide whether ConfigCenter has been initiated.\n-        if (environment.getDynamicConfiguration().isPresent()) {\n-            return;\n-        }\n-\n-        if (CollectionUtils.isNotEmpty(configManager.getConfigCenters())) {\n-            return;\n-        }\n-\n-        configManager\n-                .getDefaultRegistries()\n-                .stream()\n-                .filter(this::isUsedRegistryAsConfigCenter)\n-                .map(this::registryAsConfigCenter)\n-                .forEach(configManager::addConfigCenter);\n-    }\n-\n-    private boolean isUsedRegistryAsConfigCenter(RegistryConfig registryConfig) {\n-        return isUsedRegistryAsCenter(registryConfig, registryConfig::getUseAsConfigCenter, \"config\",\n-                DynamicConfigurationFactory.class);\n-    }\n-\n-    private ConfigCenterConfig registryAsConfigCenter(RegistryConfig registryConfig) {\n-        String protocol = registryConfig.getProtocol();\n-        Integer port = registryConfig.getPort();\n-        String id = \"config-center-\" + protocol + \"-\" + port;\n-        ConfigCenterConfig cc = new ConfigCenterConfig();\n-        cc.setId(id);\n-        if (cc.getParameters() == null) {\n-            cc.setParameters(new HashMap<>());\n-        }\n-        if (registryConfig.getParameters() != null) {\n-            cc.getParameters().putAll(registryConfig.getParameters()); // copy the parameters\n-        }\n-        cc.getParameters().put(CLIENT_KEY, registryConfig.getClient());\n-        cc.setProtocol(protocol);\n-        cc.setPort(port);\n-        if (StringUtils.isNotEmpty(registryConfig.getGroup())) {\n-            cc.setGroup(registryConfig.getGroup());\n-        }\n-        cc.setAddress(getRegistryCompatibleAddress(registryConfig));\n-        cc.setNamespace(registryConfig.getGroup());\n-        cc.setUsername(registryConfig.getUsername());\n-        cc.setPassword(registryConfig.getPassword());\n-        if (registryConfig.getTimeout() != null) {\n-            cc.setTimeout(registryConfig.getTimeout().longValue());\n-        }\n-        cc.setHighestPriority(false);\n-        return cc;\n-    }\n-\n-    private void useRegistryAsMetadataCenterIfNecessary() {\n-\n-        Collection<MetadataReportConfig> metadataConfigs = configManager.getMetadataConfigs();\n-\n-        if (CollectionUtils.isNotEmpty(metadataConfigs)) {\n-            return;\n-        }\n-\n-        configManager\n-                .getDefaultRegistries()\n-                .stream()\n-                .filter(this::isUsedRegistryAsMetadataCenter)\n-                .map(this::registryAsMetadataCenter)\n-                .forEach(configManager::addMetadataReport);\n-\n-    }\n-\n-    private boolean isUsedRegistryAsMetadataCenter(RegistryConfig registryConfig) {\n-        return isUsedRegistryAsCenter(registryConfig, registryConfig::getUseAsMetadataCenter, \"metadata\",\n-                MetadataReportFactory.class);\n-    }\n-\n-    /**\n-     * Is used the specified registry as a center infrastructure\n-     *\n-     * @param registryConfig       the {@link RegistryConfig}\n-     * @param usedRegistryAsCenter the configured value on\n-     * @param centerType           the type name of center\n-     * @param extensionClass       an extension class of a center infrastructure\n-     * @return\n-     * @since 2.7.8\n-     */\n-    private boolean isUsedRegistryAsCenter(RegistryConfig registryConfig, Supplier<Boolean> usedRegistryAsCenter,\n-                                           String centerType,\n-                                           Class<?> extensionClass) {\n-        final boolean supported;\n-\n-        Boolean configuredValue = usedRegistryAsCenter.get();\n-        if (configuredValue != null) { // If configured, take its value.\n-            supported = configuredValue.booleanValue();\n-        } else {                       // Or check the extension existence\n-            String protocol = registryConfig.getProtocol();\n-            supported = supportsExtension(extensionClass, protocol);\n-            if (logger.isInfoEnabled()) {\n-                logger.info(format(\"No value is configured in the registry, the %s extension[name : %s] %s as the %s center\"\n-                        , extensionClass.getSimpleName(), protocol, supported ? \"supports\" : \"does not support\", centerType));\n-            }\n-        }\n-\n-        if (logger.isInfoEnabled()) {\n-            logger.info(format(\"The registry[%s] will be %s as the %s center\", registryConfig,\n-                    supported ? \"used\" : \"not used\", centerType));\n-        }\n-        return supported;\n-    }\n-\n-    /**\n-     * Supports the extension with the specified class and name\n-     *\n-     * @param extensionClass the {@link Class} of extension\n-     * @param name           the name of extension\n-     * @return if supports, return <code>true</code>, or <code>false</code>\n-     * @since 2.7.8\n-     */\n-    private boolean supportsExtension(Class<?> extensionClass, String name) {\n-        if (isNotEmpty(name)) {\n-            ExtensionLoader extensionLoader = getExtensionLoader(extensionClass);\n-            return extensionLoader.hasExtension(name);\n-        }\n-        return false;\n-    }\n-\n-    private MetadataReportConfig registryAsMetadataCenter(RegistryConfig registryConfig) {\n-        String protocol = registryConfig.getProtocol();\n-        Integer port = registryConfig.getPort();\n-        String id = \"metadata-center-\" + protocol + \"-\" + port;\n-        MetadataReportConfig metadataReportConfig = new MetadataReportConfig();\n-        metadataReportConfig.setId(id);\n-        if (metadataReportConfig.getParameters() == null) {\n-            metadataReportConfig.setParameters(new HashMap<>());\n-        }\n-        if (registryConfig.getParameters() != null) {\n-            metadataReportConfig.getParameters().putAll(registryConfig.getParameters()); // copy the parameters\n-        }\n-        metadataReportConfig.getParameters().put(CLIENT_KEY, registryConfig.getClient());\n-        metadataReportConfig.setGroup(registryConfig.getGroup());\n-        metadataReportConfig.setAddress(getRegistryCompatibleAddress(registryConfig));\n-        metadataReportConfig.setUsername(registryConfig.getUsername());\n-        metadataReportConfig.setPassword(registryConfig.getPassword());\n-        metadataReportConfig.setTimeout(registryConfig.getTimeout());\n-        return metadataReportConfig;\n-    }\n-\n-    private String getRegistryCompatibleAddress(RegistryConfig registryConfig) {\n-        String registryAddress = registryConfig.getAddress();\n-        String[] addresses = REGISTRY_SPLIT_PATTERN.split(registryAddress);\n-        if (ArrayUtils.isEmpty(addresses)) {\n-            throw new IllegalStateException(\"Invalid registry address found.\");\n-        }\n-        String address = addresses[0];\n-        // since 2.7.8\n-        // Issue : https://github.com/apache/dubbo/issues/6476\n-        StringBuilder metadataAddressBuilder = new StringBuilder();\n-        URL url = URL.valueOf(address);\n-        String protocolFromAddress = url.getProtocol();\n-        if (isEmpty(protocolFromAddress)) {\n-            // If the protocol from address is missing, is like :\n-            // \"dubbo.registry.address = 127.0.0.1:2181\"\n-            String protocolFromConfig = registryConfig.getProtocol();\n-            metadataAddressBuilder.append(protocolFromConfig).append(\"://\");\n-        }\n-        metadataAddressBuilder.append(address);\n-        return metadataAddressBuilder.toString();\n-    }\n-\n-    private void loadRemoteConfigs() {\n-        // registry ids to registry configs\n-        List<RegistryConfig> tmpRegistries = new ArrayList<>();\n-        Set<String> registryIds = configManager.getRegistryIds();\n-        registryIds.forEach(id -> {\n-            if (tmpRegistries.stream().noneMatch(reg -> reg.getId().equals(id))) {\n-                tmpRegistries.add(configManager.getRegistry(id).orElseGet(() -> {\n-                    RegistryConfig registryConfig = new RegistryConfig();\n-                    registryConfig.setId(id);\n-                    registryConfig.refresh();\n-                    return registryConfig;\n-                }));\n-            }\n-        });\n-\n-        configManager.addRegistries(tmpRegistries);\n-\n-        // protocol ids to protocol configs\n-        List<ProtocolConfig> tmpProtocols = new ArrayList<>();\n-        Set<String> protocolIds = configManager.getProtocolIds();\n-        protocolIds.forEach(id -> {\n-            if (tmpProtocols.stream().noneMatch(prot -> prot.getId().equals(id))) {\n-                tmpProtocols.add(configManager.getProtocol(id).orElseGet(() -> {\n-                    ProtocolConfig protocolConfig = new ProtocolConfig();\n-                    protocolConfig.setId(id);\n-                    protocolConfig.refresh();\n-                    return protocolConfig;\n-                }));\n-            }\n-        });\n-\n-        configManager.addProtocols(tmpProtocols);\n-    }\n-\n-\n-    /**\n-     * Initialize {@link MetadataService} from {@link WritableMetadataService}'s extension\n-     */\n-    private void initMetadataService() {\n-        this.metadataService = getDefaultExtension();\n-        this.metadataServiceExporter = new ConfigurableMetadataServiceExporter(metadataService);\n-    }\n-\n-    /**\n-     * Initialize {@link EventListener}\n-     */\n-    private void initEventListener() {\n-        // Add current instance into listeners\n-        addEventListener(this);\n-    }\n-\n-    /**\n-     * Start the bootstrap\n-     */\n-    public DubboBootstrap start() {\n-        if (started.compareAndSet(false, true)) {\n-            ready.set(false);\n-            initialize();\n-            if (logger.isInfoEnabled()) {\n-                logger.info(NAME + \" is starting...\");\n-            }\n-            // 1. export Dubbo Services\n-            exportServices();\n-\n-            // Not only provider register\n-            if (!isOnlyRegisterProvider() || hasExportedServices()) {\n-                // 2. export MetadataService\n-                exportMetadataService();\n-                //3. Register the local ServiceInstance if required\n-                registerServiceInstance();\n-            }\n-\n-            referServices();\n-            if (asyncExportingFutures.size() > 0) {\n-                new Thread(() -> {\n-                    try {\n-                        this.awaitFinish();\n-                    } catch (Exception e) {\n-                        logger.warn(NAME + \" exportAsync occurred an exception.\");\n-                    }\n-                    ready.set(true);\n-                    if (logger.isInfoEnabled()) {\n-                        logger.info(NAME + \" is ready.\");\n-                    }\n-                    ExtensionLoader<DubboBootstrapStartStopListener> exts = getExtensionLoader(DubboBootstrapStartStopListener.class);\n-                    exts.getSupportedExtensionInstances().forEach(ext -> ext.onStart(this));\n-                }).start();\n-            } else {\n-                ready.set(true);\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(NAME + \" is ready.\");\n-                }\n-                ExtensionLoader<DubboBootstrapStartStopListener> exts = getExtensionLoader(DubboBootstrapStartStopListener.class);\n-                exts.getSupportedExtensionInstances().forEach(ext -> ext.onStart(this));\n-            }\n-            if (logger.isInfoEnabled()) {\n-                logger.info(NAME + \" has started.\");\n-            }\n-        }\n-        return this;\n-    }\n-\n-    private boolean hasExportedServices() {\n-        return !metadataService.getExportedURLs().isEmpty();\n-    }\n-\n-    /**\n-     * Block current thread to be await.\n-     *\n-     * @return {@link DubboBootstrap}\n-     */\n-    public DubboBootstrap await() {\n-        // if has been waited, no need to wait again, return immediately\n-        if (!awaited.get()) {\n-            if (!executorService.isShutdown()) {\n-                executeMutually(() -> {\n-                    while (!awaited.get()) {\n-                        if (logger.isInfoEnabled()) {\n-                            logger.info(NAME + \" awaiting ...\");\n-                        }\n-                        try {\n-                            condition.await();\n-                        } catch (InterruptedException e) {\n-                            Thread.currentThread().interrupt();\n-                        }\n-                    }\n-                });\n-            }\n-        }\n-        return this;\n-    }\n-\n-    public DubboBootstrap awaitFinish() throws Exception {\n-        logger.info(NAME + \" waiting services exporting / referring ...\");\n-        if (exportAsync && asyncExportingFutures.size() > 0) {\n-            CompletableFuture future = CompletableFuture.allOf(asyncExportingFutures.toArray(new CompletableFuture[0]));\n-            future.get();\n-        }\n-        if (referAsync && asyncReferringFutures.size() > 0) {\n-            CompletableFuture future = CompletableFuture.allOf(asyncReferringFutures.toArray(new CompletableFuture[0]));\n-            future.get();\n-        }\n-\n-        logger.info(\"Service export / refer finished.\");\n-        return this;\n-    }\n-\n-    public boolean isInitialized() {\n-        return initialized.get();\n-    }\n-\n-    public boolean isStarted() {\n-        return started.get();\n-    }\n-\n-    public boolean isReady() {\n-        return ready.get();\n-    }\n-\n-\n-    public DubboBootstrap stop() throws IllegalStateException {\n-        destroy();\n-        return this;\n-    }\n-    /* serve for builder apis, begin */\n-\n-    private ApplicationBuilder createApplicationBuilder(String name) {\n-        return new ApplicationBuilder().name(name);\n-    }\n-\n-    private RegistryBuilder createRegistryBuilder(String id) {\n-        return new RegistryBuilder().id(id);\n-    }\n-\n-    private ProtocolBuilder createProtocolBuilder(String id) {\n-        return new ProtocolBuilder().id(id);\n-    }\n-\n-    private ServiceBuilder createServiceBuilder(String id) {\n-        return new ServiceBuilder().id(id);\n-    }\n-\n-    private ReferenceBuilder createReferenceBuilder(String id) {\n-        return new ReferenceBuilder().id(id);\n-    }\n-\n-    private ProviderBuilder createProviderBuilder(String id) {\n-        return new ProviderBuilder().id(id);\n-    }\n-\n-    private ConsumerBuilder createConsumerBuilder(String id) {\n-        return new ConsumerBuilder().id(id);\n-    }\n-    /* serve for builder apis, end */\n-\n-    private DynamicConfiguration prepareEnvironment(ConfigCenterConfig configCenter) {\n-        if (configCenter.isValid()) {\n-            if (!configCenter.checkOrUpdateInited()) {\n-                return null;\n-            }\n-            DynamicConfiguration dynamicConfiguration = getDynamicConfiguration(configCenter.toUrl());\n-            String configContent = dynamicConfiguration.getProperties(configCenter.getConfigFile(), configCenter.getGroup());\n-\n-            String appGroup = getApplication().getName();\n-            String appConfigContent = null;\n-            if (isNotEmpty(appGroup)) {\n-                appConfigContent = dynamicConfiguration.getProperties\n-                        (isNotEmpty(configCenter.getAppConfigFile()) ? configCenter.getAppConfigFile() : configCenter.getConfigFile(),\n-                                appGroup\n-                        );\n-            }\n-            try {\n-                environment.setConfigCenterFirst(configCenter.isHighestPriority());\n-                environment.updateExternalConfigurationMap(parseProperties(configContent));\n-                environment.updateAppExternalConfigurationMap(parseProperties(appConfigContent));\n-            } catch (IOException e) {\n-                throw new IllegalStateException(\"Failed to parse configurations from Config Center.\", e);\n-            }\n-            return dynamicConfiguration;\n-        }\n-        return null;\n-    }\n-\n-    /**\n-     * Add an instance of {@link EventListener}\n-     *\n-     * @param listener {@link EventListener}\n-     * @return {@link DubboBootstrap}\n-     */\n-    public DubboBootstrap addEventListener(EventListener<?> listener) {\n-        eventDispatcher.addEventListener(listener);\n-        return this;\n-    }\n-\n-    /**\n-     * export {@link MetadataService}\n-     */\n-    private void exportMetadataService() {\n-        metadataServiceExporter.export();\n-    }\n-\n-    private void unexportMetadataService() {\n-        if (metadataServiceExporter != null && metadataServiceExporter.isExported()) {\n-            metadataServiceExporter.unexport();\n-        }\n-    }\n-\n-    private void exportServices() {\n-        configManager.getServices().forEach(sc -> {\n-            // TODO, compatible with ServiceConfig.export()\n-            ServiceConfig serviceConfig = (ServiceConfig) sc;\n-            serviceConfig.setBootstrap(this);\n-\n-            if (exportAsync) {\n-                ExecutorService executor = executorRepository.getServiceExporterExecutor();\n-                Future<?> future = executor.submit(() -> {\n-                    sc.export();\n-                    exportedServices.add(sc);\n-                });\n-                asyncExportingFutures.add(future);\n-            } else {\n-                sc.export();\n-                exportedServices.add(sc);\n-            }\n-        });\n-    }\n-\n-    private void unexportServices() {\n-        exportedServices.forEach(sc -> {\n-            configManager.removeConfig(sc);\n-            sc.unexport();\n-        });\n-\n-        asyncExportingFutures.forEach(future -> {\n-            if (!future.isDone()) {\n-                future.cancel(true);\n-            }\n-        });\n-        asyncExportingFutures.clear();\n-        exportedServices.clear();\n-    }\n-\n-    private void referServices() {\n-        if (cache == null) {\n-            cache = ReferenceConfigCache.getCache();\n-        }\n-\n-        configManager.getReferences().forEach(rc -> {\n-            // TODO, compatible with  ReferenceConfig.refer()\n-            ReferenceConfig referenceConfig = (ReferenceConfig) rc;\n-            referenceConfig.setBootstrap(this);\n-\n-            if (rc.shouldInit()) {\n-                if (referAsync) {\n-                    CompletableFuture<Object> future = ScheduledCompletableFuture.submit(\n-                            executorRepository.getServiceExporterExecutor(),\n-                            () -> cache.get(rc)\n-                    );\n-                    asyncReferringFutures.add(future);\n-                } else {\n-                    cache.get(rc);\n-                }\n-            }\n-        });\n-    }\n-\n-    private void unreferServices() {\n-        if (cache == null) {\n-            cache = ReferenceConfigCache.getCache();\n-        }\n-\n-        asyncReferringFutures.forEach(future -> {\n-            if (!future.isDone()) {\n-                future.cancel(true);\n-            }\n-        });\n-        asyncReferringFutures.clear();\n-        cache.destroyAll();\n-    }\n-\n-    private void registerServiceInstance() {\n-        if (CollectionUtils.isEmpty(getServiceDiscoveries())) {\n-            return;\n-        }\n-\n-        ApplicationConfig application = getApplication();\n-\n-        String serviceName = application.getName();\n-\n-        URL exportedURL = selectMetadataServiceExportedURL();\n-\n-        String host = exportedURL.getHost();\n-\n-        int port = exportedURL.getPort();\n-\n-        ServiceInstance serviceInstance = createServiceInstance(serviceName, host, port);\n-\n-        doRegisterServiceInstance(serviceInstance);\n-\n-        // scheduled task for updating Metadata and ServiceInstance\n-        executorRepository.nextScheduledExecutor().scheduleAtFixedRate(() -> {\n-            try {\n-                InMemoryWritableMetadataService localMetadataService = (InMemoryWritableMetadataService) WritableMetadataService.getDefaultExtension();\n-                localMetadataService.blockUntilUpdated();\n-                ServiceInstanceMetadataUtils.refreshMetadataAndInstance();\n-            } catch (Throwable e) {\n-                logger.error(\"refresh metadata and instance failed\", e);\n-            }\n-        }, 0, ConfigurationUtils.get(METADATA_PUBLISH_DELAY_KEY, DEFAULT_METADATA_PUBLISH_DELAY), TimeUnit.MILLISECONDS);\n-    }\n-\n-    private void doRegisterServiceInstance(ServiceInstance serviceInstance) {\n-        //FIXME\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"Start publishing metadata to remote center, this only makes sense for applications enabled remote metadata center.\");\n-        }\n-        publishMetadataToRemote(serviceInstance);\n-\n-        logger.info(\"Start registering instance address to registry.\");\n-        getServiceDiscoveries().forEach(serviceDiscovery ->\n-        {\n-            calInstanceRevision(serviceDiscovery, serviceInstance);\n-            if (logger.isDebugEnabled()) {\n-                logger.info(\"Start registering instance address to registry\" + serviceDiscovery.getUrl() + \", instance \" + serviceInstance);\n-            }\n-            // register metadata\n-            serviceDiscovery.register(serviceInstance);\n-        });\n-    }\n-\n-    private void publishMetadataToRemote(ServiceInstance serviceInstance) {\n-//        InMemoryWritableMetadataService localMetadataService = (InMemoryWritableMetadataService)WritableMetadataService.getDefaultExtension();\n-//        localMetadataService.blockUntilUpdated();\n-        RemoteMetadataServiceImpl remoteMetadataService = MetadataUtils.getRemoteMetadataService();\n-        remoteMetadataService.publishMetadata(serviceInstance.getServiceName());\n-    }\n-\n-    private URL selectMetadataServiceExportedURL() {\n-\n-        URL selectedURL = null;\n-\n-        SortedSet<String> urlValues = metadataService.getExportedURLs();\n-\n-        for (String urlValue : urlValues) {\n-            URL url = URL.valueOf(urlValue);\n-            if (MetadataService.class.getName().equals(url.getServiceInterface())) {\n-                continue;\n-            }\n-            if (\"rest\".equals(url.getProtocol())) { // REST first\n-                selectedURL = url;\n-                break;\n-            } else {\n-                selectedURL = url; // If not found, take any one\n-            }\n-        }\n-\n-        if (selectedURL == null && CollectionUtils.isNotEmpty(urlValues)) {\n-            selectedURL = URL.valueOf(urlValues.iterator().next());\n-        }\n-\n-        return selectedURL;\n-    }\n-\n-    private void unregisterServiceInstance() {\n-        if (serviceInstance != null) {\n-            getServiceDiscoveries().forEach(serviceDiscovery -> {\n-                serviceDiscovery.unregister(serviceInstance);\n-            });\n-        }\n-    }\n-\n-    private ServiceInstance createServiceInstance(String serviceName, String host, int port) {\n-        this.serviceInstance = new DefaultServiceInstance(serviceName, host, port);\n-        setMetadataStorageType(serviceInstance, getMetadataType());\n-\n-        ExtensionLoader<ServiceInstanceCustomizer> loader =\n-                ExtensionLoader.getExtensionLoader(ServiceInstanceCustomizer.class);\n-        // FIXME, sort customizer before apply\n-        loader.getSupportedExtensionInstances().forEach(customizer -> {\n-            // customizes\n-            customizer.customize(this.serviceInstance);\n-        });\n-\n-        return this.serviceInstance;\n-    }\n-\n-    public void destroy() {\n-        if (destroyLock.tryLock()) {\n-            try {\n-                DubboShutdownHook.destroyAll();\n-\n-                if (started.compareAndSet(true, false)\n-                        && destroyed.compareAndSet(false, true)) {\n-\n-                    unregisterServiceInstance();\n-                    unexportMetadataService();\n-                    unexportServices();\n-                    unreferServices();\n-\n-                    destroyRegistries();\n-\n-                    destroyServiceDiscoveries();\n-                    destroyExecutorRepository();\n-                    clear();\n-                    shutdown();\n-                    release();\n-                    ExtensionLoader<DubboBootstrapStartStopListener> exts = getExtensionLoader(DubboBootstrapStartStopListener.class);\n-                    exts.getSupportedExtensionInstances().forEach(ext -> ext.onStop(this));\n-                }\n-            } finally {\n-                destroyLock.unlock();\n-            }\n-        }\n-    }\n-\n-    private void destroyExecutorRepository() {\n-        ExtensionLoader.getExtensionLoader(ExecutorRepository.class).getDefaultExtension().destroyAll();\n-    }\n-\n-    private void destroyRegistries() {\n-        AbstractRegistryFactory.destroyAll();\n-    }\n-\n-    private void destroyServiceDiscoveries() {\n-        getServiceDiscoveries().forEach(serviceDiscovery -> {\n-            execute(serviceDiscovery::destroy);\n-        });\n-        if (logger.isDebugEnabled()) {\n-            logger.debug(NAME + \"'s all ServiceDiscoveries have been destroyed.\");\n-        }\n-    }\n-\n-    private void clear() {\n-        clearConfigs();\n-        clearApplicationModel();\n-    }\n-\n-    private void clearApplicationModel() {\n-\n-    }\n-\n-    private void clearConfigs() {\n-        configManager.destroy();\n-        if (logger.isDebugEnabled()) {\n-            logger.debug(NAME + \"'s configs have been clear.\");\n-        }\n-    }\n-\n-    private void release() {\n-        executeMutually(() -> {\n-            while (awaited.compareAndSet(false, true)) {\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(NAME + \" is about to shutdown...\");\n-                }\n-                condition.signalAll();\n-            }\n-        });\n-    }\n-\n-    private void shutdown() {\n-        if (!executorService.isShutdown()) {\n-            // Shutdown executorService\n-            executorService.shutdown();\n-        }\n-    }\n-\n-    private void executeMutually(Runnable runnable) {\n-        try {\n-            lock.lock();\n-            runnable.run();\n-        } finally {\n-            lock.unlock();\n-        }\n-    }\n-\n-    public ApplicationConfig getApplication() {\n-        ApplicationConfig application = configManager\n-                .getApplication()\n-                .orElseGet(() -> {\n-                    ApplicationConfig applicationConfig = new ApplicationConfig();\n-                    configManager.setApplication(applicationConfig);\n-                    return applicationConfig;\n-                });\n-\n-        application.refresh();\n-        return application;\n-    }\n-\n-    private MonitorConfig getMonitor() {\n-        MonitorConfig monitor = configManager\n-                .getMonitor()\n-                .orElseGet(() -> {\n-                    MonitorConfig monitorConfig = new MonitorConfig();\n-                    configManager.setMonitor(monitorConfig);\n-                    return monitorConfig;\n-                });\n-\n-        monitor.refresh();\n-        return monitor;\n-    }\n-\n-    private MetricsConfig getMetrics() {\n-        MetricsConfig metrics = configManager\n-                .getMetrics()\n-                .orElseGet(() -> {\n-                    MetricsConfig metricsConfig = new MetricsConfig();\n-                    configManager.setMetrics(metricsConfig);\n-                    return metricsConfig;\n-                });\n-        metrics.refresh();\n-        return metrics;\n-    }\n-\n-    private ModuleConfig getModule() {\n-        ModuleConfig module = configManager\n-                .getModule()\n-                .orElseGet(() -> {\n-                    ModuleConfig moduleConfig = new ModuleConfig();\n-                    configManager.setModule(moduleConfig);\n-                    return moduleConfig;\n-                });\n-\n-        module.refresh();\n-        return module;\n-    }\n-\n-    private SslConfig getSsl() {\n-        SslConfig ssl = configManager\n-                .getSsl()\n-                .orElseGet(() -> {\n-                    SslConfig sslConfig = new SslConfig();\n-                    configManager.setSsl(sslConfig);\n-                    return sslConfig;\n-                });\n-\n-        ssl.refresh();\n-        return ssl;\n-    }\n-\n-    public void setReady(boolean ready) {\n-        this.ready.set(ready);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.ConfigurationUtils;\r\n+import org.apache.dubbo.common.config.Environment;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory;\r\n+import org.apache.dubbo.common.config.configcenter.wrapper.CompositeDynamicConfiguration;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.lang.ShutdownHookCallbacks;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.threadpool.concurrent.ScheduledCompletableFuture;\r\n+import org.apache.dubbo.common.threadpool.manager.ExecutorRepository;\r\n+import org.apache.dubbo.common.utils.ArrayUtils;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.ApplicationConfig;\r\n+import org.apache.dubbo.config.ConfigCenterConfig;\r\n+import org.apache.dubbo.config.ConsumerConfig;\r\n+import org.apache.dubbo.config.DubboShutdownHook;\r\n+import org.apache.dubbo.config.MetadataReportConfig;\r\n+import org.apache.dubbo.config.MetricsConfig;\r\n+import org.apache.dubbo.config.ModuleConfig;\r\n+import org.apache.dubbo.config.MonitorConfig;\r\n+import org.apache.dubbo.config.ProtocolConfig;\r\n+import org.apache.dubbo.config.ProviderConfig;\r\n+import org.apache.dubbo.config.ReferenceConfig;\r\n+import org.apache.dubbo.config.RegistryConfig;\r\n+import org.apache.dubbo.config.ServiceConfig;\r\n+import org.apache.dubbo.config.ServiceConfigBase;\r\n+import org.apache.dubbo.config.SslConfig;\r\n+import org.apache.dubbo.config.bootstrap.builders.ApplicationBuilder;\r\n+import org.apache.dubbo.config.bootstrap.builders.ConsumerBuilder;\r\n+import org.apache.dubbo.config.bootstrap.builders.ProtocolBuilder;\r\n+import org.apache.dubbo.config.bootstrap.builders.ProviderBuilder;\r\n+import org.apache.dubbo.config.bootstrap.builders.ReferenceBuilder;\r\n+import org.apache.dubbo.config.bootstrap.builders.RegistryBuilder;\r\n+import org.apache.dubbo.config.bootstrap.builders.ServiceBuilder;\r\n+import org.apache.dubbo.config.context.ConfigManager;\r\n+import org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter;\r\n+import org.apache.dubbo.config.utils.ConfigValidationUtils;\r\n+import org.apache.dubbo.config.utils.ReferenceConfigCache;\r\n+import org.apache.dubbo.event.EventDispatcher;\r\n+import org.apache.dubbo.event.EventListener;\r\n+import org.apache.dubbo.event.GenericEventListener;\r\n+import org.apache.dubbo.metadata.MetadataService;\r\n+import org.apache.dubbo.metadata.MetadataServiceExporter;\r\n+import org.apache.dubbo.metadata.WritableMetadataService;\r\n+import org.apache.dubbo.metadata.report.MetadataReportFactory;\r\n+import org.apache.dubbo.metadata.report.MetadataReportInstance;\r\n+import org.apache.dubbo.registry.client.DefaultServiceInstance;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.ServiceInstanceCustomizer;\r\n+import org.apache.dubbo.registry.client.metadata.MetadataUtils;\r\n+import org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils;\r\n+import org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService;\r\n+import org.apache.dubbo.registry.client.metadata.store.RemoteMetadataServiceImpl;\r\n+import org.apache.dubbo.registry.support.AbstractRegistryFactory;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+\r\n+import java.io.IOException;\r\n+import java.util.ArrayList;\r\n+import java.util.Collection;\r\n+import java.util.HashMap;\r\n+import java.util.List;\r\n+import java.util.Set;\r\n+import java.util.SortedSet;\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.Future;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+import java.util.concurrent.locks.Condition;\r\n+import java.util.concurrent.locks.Lock;\r\n+import java.util.concurrent.locks.ReentrantLock;\r\n+import java.util.function.Consumer;\r\n+import java.util.function.Supplier;\r\n+\r\n+import static java.lang.String.format;\r\n+import static java.util.Collections.singletonList;\r\n+import static java.util.concurrent.Executors.newSingleThreadExecutor;\r\n+import static org.apache.dubbo.common.config.ConfigurationUtils.parseProperties;\r\n+import static org.apache.dubbo.common.config.configcenter.DynamicConfiguration.getDynamicConfiguration;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REGISTRY_SPLIT_PATTERN;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE;\r\n+import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\r\n+import static org.apache.dubbo.common.function.ThrowableAction.execute;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isEmpty;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\r\n+import static org.apache.dubbo.metadata.MetadataConstants.DEFAULT_METADATA_PUBLISH_DELAY;\r\n+import static org.apache.dubbo.metadata.MetadataConstants.METADATA_PUBLISH_DELAY_KEY;\r\n+import static org.apache.dubbo.metadata.WritableMetadataService.getDefaultExtension;\r\n+import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.calInstanceRevision;\r\n+import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.setMetadataStorageType;\r\n+import static org.apache.dubbo.registry.support.AbstractRegistryFactory.getServiceDiscoveries;\r\n+import static org.apache.dubbo.remoting.Constants.CLIENT_KEY;\r\n+\r\n+/**\r\n+ * See {@link ApplicationModel} and {@link ExtensionLoader} for why this class is designed to be singleton.\r\n+ * <p>\r\n+ * The bootstrap class of Dubbo\r\n+ * <p>\r\n+ * Get singleton instance by calling static method {@link #getInstance()}.\r\n+ * Designed as singleton because some classes inside Dubbo, such as ExtensionLoader, are designed only for one instance per process.\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class DubboBootstrap extends GenericEventListener {\r\n+\r\n+    public static final String DEFAULT_REGISTRY_ID = \"REGISTRY#DEFAULT\";\r\n+\r\n+    public static final String DEFAULT_PROTOCOL_ID = \"PROTOCOL#DEFAULT\";\r\n+\r\n+    public static final String DEFAULT_SERVICE_ID = \"SERVICE#DEFAULT\";\r\n+\r\n+    public static final String DEFAULT_REFERENCE_ID = \"REFERENCE#DEFAULT\";\r\n+\r\n+    public static final String DEFAULT_PROVIDER_ID = \"PROVIDER#DEFAULT\";\r\n+\r\n+    public static final String DEFAULT_CONSUMER_ID = \"CONSUMER#DEFAULT\";\r\n+\r\n+    private static final String NAME = DubboBootstrap.class.getSimpleName();\r\n+\r\n+    private final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    private static volatile DubboBootstrap instance;\r\n+\r\n+    private final AtomicBoolean awaited = new AtomicBoolean(false);\r\n+\r\n+    private final Lock lock = new ReentrantLock();\r\n+\r\n+    private final Condition condition = lock.newCondition();\r\n+\r\n+    private final Lock destroyLock = new ReentrantLock();\r\n+\r\n+    private final ExecutorService executorService = newSingleThreadExecutor();\r\n+\r\n+    private final EventDispatcher eventDispatcher = EventDispatcher.getDefaultExtension();\r\n+\r\n+    private final ExecutorRepository executorRepository = getExtensionLoader(ExecutorRepository.class).getDefaultExtension();\r\n+\r\n+    private final ConfigManager configManager;\r\n+\r\n+    private final Environment environment;\r\n+\r\n+    private ReferenceConfigCache cache;\r\n+\r\n+    private volatile boolean exportAsync;\r\n+\r\n+    private volatile boolean referAsync;\r\n+\r\n+    private AtomicBoolean initialized = new AtomicBoolean(false);\r\n+\r\n+    private AtomicBoolean started = new AtomicBoolean(false);\r\n+\r\n+    private AtomicBoolean ready = new AtomicBoolean(false);\r\n+\r\n+    private AtomicBoolean destroyed = new AtomicBoolean(false);\r\n+\r\n+    private volatile ServiceInstance serviceInstance;\r\n+\r\n+    private volatile MetadataService metadataService;\r\n+\r\n+    private volatile MetadataServiceExporter metadataServiceExporter;\r\n+\r\n+    private List<ServiceConfigBase<?>> exportedServices = new ArrayList<>();\r\n+\r\n+    private List<Future<?>> asyncExportingFutures = new ArrayList<>();\r\n+\r\n+    private List<CompletableFuture<Object>> asyncReferringFutures = new ArrayList<>();\r\n+\r\n+    /**\r\n+     * See {@link ApplicationModel} and {@link ExtensionLoader} for why DubboBootstrap is designed to be singleton.\r\n+     */\r\n+    public static DubboBootstrap getInstance() {\r\n+        if (instance == null) {\r\n+            synchronized (DubboBootstrap.class) {\r\n+                if (instance == null) {\r\n+                    instance = new DubboBootstrap();\r\n+                }\r\n+            }\r\n+        }\r\n+        return instance;\r\n+    }\r\n+\r\n+    private DubboBootstrap() {\r\n+        configManager = ApplicationModel.getConfigManager();\r\n+        environment = ApplicationModel.getEnvironment();\r\n+\r\n+        DubboShutdownHook.getDubboShutdownHook().register();\r\n+        ShutdownHookCallbacks.INSTANCE.addCallback(DubboBootstrap.this::destroy);\r\n+    }\r\n+\r\n+    public void unRegisterShutdownHook() {\r\n+        DubboShutdownHook.getDubboShutdownHook().unregister();\r\n+    }\r\n+\r\n+    private boolean isOnlyRegisterProvider() {\r\n+        Boolean registerConsumer = getApplication().getRegisterConsumer();\r\n+        return registerConsumer == null || !registerConsumer;\r\n+    }\r\n+\r\n+    private String getMetadataType() {\r\n+        String type = getApplication().getMetadataType();\r\n+        if (StringUtils.isEmpty(type)) {\r\n+            type = DEFAULT_METADATA_STORAGE_TYPE;\r\n+        }\r\n+        return type;\r\n+    }\r\n+\r\n+    public DubboBootstrap metadataReport(MetadataReportConfig metadataReportConfig) {\r\n+        configManager.addMetadataReport(metadataReportConfig);\r\n+        return this;\r\n+    }\r\n+\r\n+    public DubboBootstrap metadataReports(List<MetadataReportConfig> metadataReportConfigs) {\r\n+        if (CollectionUtils.isEmpty(metadataReportConfigs)) {\r\n+            return this;\r\n+        }\r\n+\r\n+        configManager.addMetadataReports(metadataReportConfigs);\r\n+        return this;\r\n+    }\r\n+\r\n+    // {@link ApplicationConfig} correlative methods\r\n+\r\n+    /**\r\n+     * Set the name of application\r\n+     *\r\n+     * @param name the name of application\r\n+     * @return current {@link DubboBootstrap} instance\r\n+     */\r\n+    public DubboBootstrap application(String name) {\r\n+        return application(name, builder -> {\r\n+            // DO NOTHING\r\n+        });\r\n+    }\r\n+\r\n+    /**\r\n+     * Set the name of application and it's future build\r\n+     *\r\n+     * @param name            the name of application\r\n+     * @param consumerBuilder {@link ApplicationBuilder}\r\n+     * @return current {@link DubboBootstrap} instance\r\n+     */\r\n+    public DubboBootstrap application(String name, Consumer<ApplicationBuilder> consumerBuilder) {\r\n+        ApplicationBuilder builder = createApplicationBuilder(name);\r\n+        consumerBuilder.accept(builder);\r\n+        return application(builder.build());\r\n+    }\r\n+\r\n+    /**\r\n+     * Set the {@link ApplicationConfig}\r\n+     *\r\n+     * @param applicationConfig the {@link ApplicationConfig}\r\n+     * @return current {@link DubboBootstrap} instance\r\n+     */\r\n+    public DubboBootstrap application(ApplicationConfig applicationConfig) {\r\n+        configManager.setApplication(applicationConfig);\r\n+        return this;\r\n+    }\r\n+\r\n+\r\n+    // {@link RegistryConfig} correlative methods\r\n+\r\n+    /**\r\n+     * Add an instance of {@link RegistryConfig} with {@link #DEFAULT_REGISTRY_ID default ID}\r\n+     *\r\n+     * @param consumerBuilder the {@link Consumer} of {@link RegistryBuilder}\r\n+     * @return current {@link DubboBootstrap} instance\r\n+     */\r\n+    public DubboBootstrap registry(Consumer<RegistryBuilder> consumerBuilder) {\r\n+        return registry(DEFAULT_REGISTRY_ID, consumerBuilder);\r\n+    }\r\n+\r\n+    /**\r\n+     * Add an instance of {@link RegistryConfig} with the specified ID\r\n+     *\r\n+     * @param id              the {@link RegistryConfig#getId() id}  of {@link RegistryConfig}\r\n+     * @param consumerBuilder the {@link Consumer} of {@link RegistryBuilder}\r\n+     * @return current {@link DubboBootstrap} instance\r\n+     */\r\n+    public DubboBootstrap registry(String id, Consumer<RegistryBuilder> consumerBuilder) {\r\n+        RegistryBuilder builder = createRegistryBuilder(id);\r\n+        consumerBuilder.accept(builder);\r\n+        return registry(builder.build());\r\n+    }\r\n+\r\n+    /**\r\n+     * Add an instance of {@link RegistryConfig}\r\n+     *\r\n+     * @param registryConfig an instance of {@link RegistryConfig}\r\n+     * @return current {@link DubboBootstrap} instance\r\n+     */\r\n+    public DubboBootstrap registry(RegistryConfig registryConfig) {\r\n+        configManager.addRegistry(registryConfig);\r\n+        return this;\r\n+    }\r\n+\r\n+    /**\r\n+     * Add an instance of {@link RegistryConfig}\r\n+     *\r\n+     * @param registryConfigs the multiple instances of {@link RegistryConfig}\r\n+     * @return current {@link DubboBootstrap} instance\r\n+     */\r\n+    public DubboBootstrap registries(List<RegistryConfig> registryConfigs) {\r\n+        if (CollectionUtils.isEmpty(registryConfigs)) {\r\n+            return this;\r\n+        }\r\n+        registryConfigs.forEach(this::registry);\r\n+        return this;\r\n+    }\r\n+\r\n+\r\n+    // {@link ProtocolConfig} correlative methods\r\n+    public DubboBootstrap protocol(Consumer<ProtocolBuilder> consumerBuilder) {\r\n+        return protocol(DEFAULT_PROTOCOL_ID, consumerBuilder);\r\n+    }\r\n+\r\n+    public DubboBootstrap protocol(String id, Consumer<ProtocolBuilder> consumerBuilder) {\r\n+        ProtocolBuilder builder = createProtocolBuilder(id);\r\n+        consumerBuilder.accept(builder);\r\n+        return protocol(builder.build());\r\n+    }\r\n+\r\n+    public DubboBootstrap protocol(ProtocolConfig protocolConfig) {\r\n+        return protocols(singletonList(protocolConfig));\r\n+    }\r\n+\r\n+    public DubboBootstrap protocols(List<ProtocolConfig> protocolConfigs) {\r\n+        if (CollectionUtils.isEmpty(protocolConfigs)) {\r\n+            return this;\r\n+        }\r\n+        configManager.addProtocols(protocolConfigs);\r\n+        return this;\r\n+    }\r\n+\r\n+    // {@link ServiceConfig} correlative methods\r\n+    public <S> DubboBootstrap service(Consumer<ServiceBuilder<S>> consumerBuilder) {\r\n+        return service(DEFAULT_SERVICE_ID, consumerBuilder);\r\n+    }\r\n+\r\n+    public <S> DubboBootstrap service(String id, Consumer<ServiceBuilder<S>> consumerBuilder) {\r\n+        ServiceBuilder builder = createServiceBuilder(id);\r\n+        consumerBuilder.accept(builder);\r\n+        return service(builder.build());\r\n+    }\r\n+\r\n+    public DubboBootstrap service(ServiceConfig<?> serviceConfig) {\r\n+        configManager.addService(serviceConfig);\r\n+        return this;\r\n+    }\r\n+\r\n+    public DubboBootstrap services(List<ServiceConfig> serviceConfigs) {\r\n+        if (CollectionUtils.isEmpty(serviceConfigs)) {\r\n+            return this;\r\n+        }\r\n+        serviceConfigs.forEach(configManager::addService);\r\n+        return this;\r\n+    }\r\n+\r\n+    // {@link Reference} correlative methods\r\n+    public <S> DubboBootstrap reference(Consumer<ReferenceBuilder<S>> consumerBuilder) {\r\n+        return reference(DEFAULT_REFERENCE_ID, consumerBuilder);\r\n+    }\r\n+\r\n+    public <S> DubboBootstrap reference(String id, Consumer<ReferenceBuilder<S>> consumerBuilder) {\r\n+        ReferenceBuilder builder = createReferenceBuilder(id);\r\n+        consumerBuilder.accept(builder);\r\n+        return reference(builder.build());\r\n+    }\r\n+\r\n+    public DubboBootstrap reference(ReferenceConfig<?> referenceConfig) {\r\n+        configManager.addReference(referenceConfig);\r\n+        return this;\r\n+    }\r\n+\r\n+    public DubboBootstrap references(List<ReferenceConfig> referenceConfigs) {\r\n+        if (CollectionUtils.isEmpty(referenceConfigs)) {\r\n+            return this;\r\n+        }\r\n+\r\n+        referenceConfigs.forEach(configManager::addReference);\r\n+        return this;\r\n+    }\r\n+\r\n+    // {@link ProviderConfig} correlative methods\r\n+    public DubboBootstrap provider(Consumer<ProviderBuilder> builderConsumer) {\r\n+        return provider(DEFAULT_PROVIDER_ID, builderConsumer);\r\n+    }\r\n+\r\n+    public DubboBootstrap provider(String id, Consumer<ProviderBuilder> builderConsumer) {\r\n+        ProviderBuilder builder = createProviderBuilder(id);\r\n+        builderConsumer.accept(builder);\r\n+        return provider(builder.build());\r\n+    }\r\n+\r\n+    public DubboBootstrap provider(ProviderConfig providerConfig) {\r\n+        return providers(singletonList(providerConfig));\r\n+    }\r\n+\r\n+    public DubboBootstrap providers(List<ProviderConfig> providerConfigs) {\r\n+        if (CollectionUtils.isEmpty(providerConfigs)) {\r\n+            return this;\r\n+        }\r\n+\r\n+        providerConfigs.forEach(configManager::addProvider);\r\n+        return this;\r\n+    }\r\n+\r\n+    // {@link ConsumerConfig} correlative methods\r\n+    public DubboBootstrap consumer(Consumer<ConsumerBuilder> builderConsumer) {\r\n+        return consumer(DEFAULT_CONSUMER_ID, builderConsumer);\r\n+    }\r\n+\r\n+    public DubboBootstrap consumer(String id, Consumer<ConsumerBuilder> builderConsumer) {\r\n+        ConsumerBuilder builder = createConsumerBuilder(id);\r\n+        builderConsumer.accept(builder);\r\n+        return consumer(builder.build());\r\n+    }\r\n+\r\n+    public DubboBootstrap consumer(ConsumerConfig consumerConfig) {\r\n+        return consumers(singletonList(consumerConfig));\r\n+    }\r\n+\r\n+    public DubboBootstrap consumers(List<ConsumerConfig> consumerConfigs) {\r\n+        if (CollectionUtils.isEmpty(consumerConfigs)) {\r\n+            return this;\r\n+        }\r\n+\r\n+        consumerConfigs.forEach(configManager::addConsumer);\r\n+        return this;\r\n+    }\r\n+\r\n+    // {@link ConfigCenterConfig} correlative methods\r\n+    public DubboBootstrap configCenter(ConfigCenterConfig configCenterConfig) {\r\n+        return configCenters(singletonList(configCenterConfig));\r\n+    }\r\n+\r\n+    public DubboBootstrap configCenters(List<ConfigCenterConfig> configCenterConfigs) {\r\n+        if (CollectionUtils.isEmpty(configCenterConfigs)) {\r\n+            return this;\r\n+        }\r\n+        configManager.addConfigCenters(configCenterConfigs);\r\n+        return this;\r\n+    }\r\n+\r\n+    public DubboBootstrap monitor(MonitorConfig monitor) {\r\n+        configManager.setMonitor(monitor);\r\n+        return this;\r\n+    }\r\n+\r\n+    public DubboBootstrap metrics(MetricsConfig metrics) {\r\n+        configManager.setMetrics(metrics);\r\n+        return this;\r\n+    }\r\n+\r\n+    public DubboBootstrap module(ModuleConfig module) {\r\n+        configManager.setModule(module);\r\n+        return this;\r\n+    }\r\n+\r\n+    public DubboBootstrap ssl(SslConfig sslConfig) {\r\n+        configManager.setSsl(sslConfig);\r\n+        return this;\r\n+    }\r\n+\r\n+    public DubboBootstrap cache(ReferenceConfigCache cache) {\r\n+        this.cache = cache;\r\n+        return this;\r\n+    }\r\n+\r\n+    public ReferenceConfigCache getCache() {\r\n+        if (cache == null) {\r\n+            cache = ReferenceConfigCache.getCache();\r\n+        }\r\n+        return cache;\r\n+    }\r\n+\r\n+    public DubboBootstrap exportAsync() {\r\n+        this.exportAsync = true;\r\n+        return this;\r\n+    }\r\n+\r\n+    public DubboBootstrap referAsync() {\r\n+        this.referAsync = true;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void init() {\r\n+        initialize();\r\n+    }\r\n+\r\n+    /**\r\n+     * Initialize\r\n+     */\r\n+    public void initialize() {\r\n+        if (!initialized.compareAndSet(false, true)) {\r\n+            return;\r\n+        }\r\n+\r\n+        ApplicationModel.initFrameworkExts();\r\n+\r\n+        startConfigCenter();\r\n+\r\n+        loadRemoteConfigs();\r\n+\r\n+        checkGlobalConfigs();\r\n+\r\n+        // @since 2.7.8\r\n+        startMetadataCenter();\r\n+\r\n+        initMetadataService();\r\n+\r\n+        initEventListener();\r\n+\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(NAME + \" has been initialized!\");\r\n+        }\r\n+    }\r\n+\r\n+    private void checkGlobalConfigs() {\r\n+        // check Application\r\n+        ConfigValidationUtils.validateApplicationConfig(getApplication());\r\n+\r\n+        // check Metadata\r\n+        Collection<MetadataReportConfig> metadatas = configManager.getMetadataConfigs();\r\n+        if (CollectionUtils.isEmpty(metadatas)) {\r\n+            MetadataReportConfig metadataReportConfig = new MetadataReportConfig();\r\n+            metadataReportConfig.refresh();\r\n+            if (metadataReportConfig.isValid()) {\r\n+                configManager.addMetadataReport(metadataReportConfig);\r\n+                metadatas = configManager.getMetadataConfigs();\r\n+            }\r\n+        }\r\n+        if (CollectionUtils.isNotEmpty(metadatas)) {\r\n+            for (MetadataReportConfig metadataReportConfig : metadatas) {\r\n+                metadataReportConfig.refresh();\r\n+                ConfigValidationUtils.validateMetadataConfig(metadataReportConfig);\r\n+            }\r\n+        }\r\n+\r\n+        // check Provider\r\n+        Collection<ProviderConfig> providers = configManager.getProviders();\r\n+        if (CollectionUtils.isEmpty(providers)) {\r\n+            configManager.getDefaultProvider().orElseGet(() -> {\r\n+                ProviderConfig providerConfig = new ProviderConfig();\r\n+                configManager.addProvider(providerConfig);\r\n+                providerConfig.refresh();\r\n+                return providerConfig;\r\n+            });\r\n+        }\r\n+        for (ProviderConfig providerConfig : configManager.getProviders()) {\r\n+            ConfigValidationUtils.validateProviderConfig(providerConfig);\r\n+        }\r\n+        // check Consumer\r\n+        Collection<ConsumerConfig> consumers = configManager.getConsumers();\r\n+        if (CollectionUtils.isEmpty(consumers)) {\r\n+            configManager.getDefaultConsumer().orElseGet(() -> {\r\n+                ConsumerConfig consumerConfig = new ConsumerConfig();\r\n+                configManager.addConsumer(consumerConfig);\r\n+                consumerConfig.refresh();\r\n+                return consumerConfig;\r\n+            });\r\n+        }\r\n+        for (ConsumerConfig consumerConfig : configManager.getConsumers()) {\r\n+            ConfigValidationUtils.validateConsumerConfig(consumerConfig);\r\n+        }\r\n+\r\n+        // check Monitor\r\n+        ConfigValidationUtils.validateMonitorConfig(getMonitor());\r\n+        // check Metrics\r\n+        ConfigValidationUtils.validateMetricsConfig(getMetrics());\r\n+        // check Module\r\n+        ConfigValidationUtils.validateModuleConfig(getModule());\r\n+        // check Ssl\r\n+        ConfigValidationUtils.validateSslConfig(getSsl());\r\n+    }\r\n+\r\n+    private void startConfigCenter() {\r\n+\r\n+        useRegistryAsConfigCenterIfNecessary();\r\n+\r\n+        Collection<ConfigCenterConfig> configCenters = configManager.getConfigCenters();\r\n+\r\n+        // check Config Center\r\n+        if (CollectionUtils.isEmpty(configCenters)) {\r\n+            ConfigCenterConfig configCenterConfig = new ConfigCenterConfig();\r\n+            configCenterConfig.refresh();\r\n+            if (configCenterConfig.isValid()) {\r\n+                configManager.addConfigCenter(configCenterConfig);\r\n+                configCenters = configManager.getConfigCenters();\r\n+            }\r\n+        } else {\r\n+            for (ConfigCenterConfig configCenterConfig : configCenters) {\r\n+                configCenterConfig.refresh();\r\n+                ConfigValidationUtils.validateConfigCenterConfig(configCenterConfig);\r\n+            }\r\n+        }\r\n+\r\n+        if (CollectionUtils.isNotEmpty(configCenters)) {\r\n+            CompositeDynamicConfiguration compositeDynamicConfiguration = new CompositeDynamicConfiguration();\r\n+            for (ConfigCenterConfig configCenter : configCenters) {\r\n+                compositeDynamicConfiguration.addConfiguration(prepareEnvironment(configCenter));\r\n+            }\r\n+            environment.setDynamicConfiguration(compositeDynamicConfiguration);\r\n+        }\r\n+        configManager.refreshAll();\r\n+    }\r\n+\r\n+    private void startMetadataCenter() {\r\n+\r\n+        useRegistryAsMetadataCenterIfNecessary();\r\n+\r\n+        ApplicationConfig applicationConfig = getApplication();\r\n+\r\n+        String metadataType = applicationConfig.getMetadataType();\r\n+        // FIXME, multiple metadata config support.\r\n+        Collection<MetadataReportConfig> metadataReportConfigs = configManager.getMetadataConfigs();\r\n+        if (CollectionUtils.isEmpty(metadataReportConfigs)) {\r\n+            if (REMOTE_METADATA_STORAGE_TYPE.equals(metadataType)) {\r\n+                throw new IllegalStateException(\"No MetadataConfig found, Metadata Center address is required when 'metadata=remote' is enabled.\");\r\n+            }\r\n+            return;\r\n+        }\r\n+\r\n+        for (MetadataReportConfig metadataReportConfig : metadataReportConfigs) {\r\n+            ConfigValidationUtils.validateMetadataConfig(metadataReportConfig);\r\n+            if (!metadataReportConfig.isValid()) {\r\n+                return;\r\n+            }\r\n+            MetadataReportInstance.init(metadataReportConfig);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * For compatibility purpose, use registry as the default config center when\r\n+     * there's no config center specified explicitly and\r\n+     * useAsConfigCenter of registryConfig is null or true\r\n+     */\r\n+    private void useRegistryAsConfigCenterIfNecessary() {\r\n+        // we use the loading status of DynamicConfiguration to decide whether ConfigCenter has been initiated.\r\n+        if (environment.getDynamicConfiguration().isPresent()) {\r\n+            return;\r\n+        }\r\n+\r\n+        if (CollectionUtils.isNotEmpty(configManager.getConfigCenters())) {\r\n+            return;\r\n+        }\r\n+\r\n+        configManager\r\n+                .getDefaultRegistries()\r\n+                .stream()\r\n+                .filter(this::isUsedRegistryAsConfigCenter)\r\n+                .map(this::registryAsConfigCenter)\r\n+                .forEach(configManager::addConfigCenter);\r\n+    }\r\n+\r\n+    private boolean isUsedRegistryAsConfigCenter(RegistryConfig registryConfig) {\r\n+        return isUsedRegistryAsCenter(registryConfig, registryConfig::getUseAsConfigCenter, \"config\",\r\n+                DynamicConfigurationFactory.class);\r\n+    }\r\n+\r\n+    private ConfigCenterConfig registryAsConfigCenter(RegistryConfig registryConfig) {\r\n+        String protocol = registryConfig.getProtocol();\r\n+        Integer port = registryConfig.getPort();\r\n+        String id = \"config-center-\" + protocol + \"-\" + port;\r\n+        ConfigCenterConfig cc = new ConfigCenterConfig();\r\n+        cc.setId(id);\r\n+        if (cc.getParameters() == null) {\r\n+            cc.setParameters(new HashMap<>());\r\n+        }\r\n+        if (registryConfig.getParameters() != null) {\r\n+            cc.getParameters().putAll(registryConfig.getParameters()); // copy the parameters\r\n+        }\r\n+        cc.getParameters().put(CLIENT_KEY, registryConfig.getClient());\r\n+        cc.setProtocol(protocol);\r\n+        cc.setPort(port);\r\n+        if (StringUtils.isNotEmpty(registryConfig.getGroup())) {\r\n+            cc.setGroup(registryConfig.getGroup());\r\n+        }\r\n+        cc.setAddress(getRegistryCompatibleAddress(registryConfig));\r\n+        cc.setNamespace(registryConfig.getGroup());\r\n+        cc.setUsername(registryConfig.getUsername());\r\n+        cc.setPassword(registryConfig.getPassword());\r\n+        if (registryConfig.getTimeout() != null) {\r\n+            cc.setTimeout(registryConfig.getTimeout().longValue());\r\n+        }\r\n+        cc.setHighestPriority(false);\r\n+        return cc;\r\n+    }\r\n+\r\n+    private void useRegistryAsMetadataCenterIfNecessary() {\r\n+\r\n+        Collection<MetadataReportConfig> metadataConfigs = configManager.getMetadataConfigs();\r\n+\r\n+        if (CollectionUtils.isNotEmpty(metadataConfigs)) {\r\n+            return;\r\n+        }\r\n+\r\n+        configManager\r\n+                .getDefaultRegistries()\r\n+                .stream()\r\n+                .filter(this::isUsedRegistryAsMetadataCenter)\r\n+                .map(this::registryAsMetadataCenter)\r\n+                .forEach(configManager::addMetadataReport);\r\n+\r\n+    }\r\n+\r\n+    private boolean isUsedRegistryAsMetadataCenter(RegistryConfig registryConfig) {\r\n+        return isUsedRegistryAsCenter(registryConfig, registryConfig::getUseAsMetadataCenter, \"metadata\",\r\n+                MetadataReportFactory.class);\r\n+    }\r\n+\r\n+    /**\r\n+     * Is used the specified registry as a center infrastructure\r\n+     *\r\n+     * @param registryConfig       the {@link RegistryConfig}\r\n+     * @param usedRegistryAsCenter the configured value on\r\n+     * @param centerType           the type name of center\r\n+     * @param extensionClass       an extension class of a center infrastructure\r\n+     * @return\r\n+     * @since 2.7.8\r\n+     */\r\n+    private boolean isUsedRegistryAsCenter(RegistryConfig registryConfig, Supplier<Boolean> usedRegistryAsCenter,\r\n+                                           String centerType,\r\n+                                           Class<?> extensionClass) {\r\n+        final boolean supported;\r\n+\r\n+        Boolean configuredValue = usedRegistryAsCenter.get();\r\n+        if (configuredValue != null) { // If configured, take its value.\r\n+            supported = configuredValue.booleanValue();\r\n+        } else {                       // Or check the extension existence\r\n+            String protocol = registryConfig.getProtocol();\r\n+            supported = supportsExtension(extensionClass, protocol);\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(format(\"No value is configured in the registry, the %s extension[name : %s] %s as the %s center\"\r\n+                        , extensionClass.getSimpleName(), protocol, supported ? \"supports\" : \"does not support\", centerType));\r\n+            }\r\n+        }\r\n+\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(format(\"The registry[%s] will be %s as the %s center\", registryConfig,\r\n+                    supported ? \"used\" : \"not used\", centerType));\r\n+        }\r\n+        return supported;\r\n+    }\r\n+\r\n+    /**\r\n+     * Supports the extension with the specified class and name\r\n+     *\r\n+     * @param extensionClass the {@link Class} of extension\r\n+     * @param name           the name of extension\r\n+     * @return if supports, return <code>true</code>, or <code>false</code>\r\n+     * @since 2.7.8\r\n+     */\r\n+    private boolean supportsExtension(Class<?> extensionClass, String name) {\r\n+        if (isNotEmpty(name)) {\r\n+            ExtensionLoader extensionLoader = getExtensionLoader(extensionClass);\r\n+            return extensionLoader.hasExtension(name);\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    private MetadataReportConfig registryAsMetadataCenter(RegistryConfig registryConfig) {\r\n+        String protocol = registryConfig.getProtocol();\r\n+        Integer port = registryConfig.getPort();\r\n+        String id = \"metadata-center-\" + protocol + \"-\" + port;\r\n+        MetadataReportConfig metadataReportConfig = new MetadataReportConfig();\r\n+        metadataReportConfig.setId(id);\r\n+        if (metadataReportConfig.getParameters() == null) {\r\n+            metadataReportConfig.setParameters(new HashMap<>());\r\n+        }\r\n+        if (registryConfig.getParameters() != null) {\r\n+            metadataReportConfig.getParameters().putAll(registryConfig.getParameters()); // copy the parameters\r\n+        }\r\n+        metadataReportConfig.getParameters().put(CLIENT_KEY, registryConfig.getClient());\r\n+        metadataReportConfig.setGroup(registryConfig.getGroup());\r\n+        metadataReportConfig.setAddress(getRegistryCompatibleAddress(registryConfig));\r\n+        metadataReportConfig.setUsername(registryConfig.getUsername());\r\n+        metadataReportConfig.setPassword(registryConfig.getPassword());\r\n+        metadataReportConfig.setTimeout(registryConfig.getTimeout());\r\n+        return metadataReportConfig;\r\n+    }\r\n+\r\n+    private String getRegistryCompatibleAddress(RegistryConfig registryConfig) {\r\n+        String registryAddress = registryConfig.getAddress();\r\n+        String[] addresses = REGISTRY_SPLIT_PATTERN.split(registryAddress);\r\n+        if (ArrayUtils.isEmpty(addresses)) {\r\n+            throw new IllegalStateException(\"Invalid registry address found.\");\r\n+        }\r\n+        String address = addresses[0];\r\n+        // since 2.7.8\r\n+        // Issue : https://github.com/apache/dubbo/issues/6476\r\n+        StringBuilder metadataAddressBuilder = new StringBuilder();\r\n+        URL url = URL.valueOf(address);\r\n+        String protocolFromAddress = url.getProtocol();\r\n+        if (isEmpty(protocolFromAddress)) {\r\n+            // If the protocol from address is missing, is like :\r\n+            // \"dubbo.registry.address = 127.0.0.1:2181\"\r\n+            String protocolFromConfig = registryConfig.getProtocol();\r\n+            metadataAddressBuilder.append(protocolFromConfig).append(\"://\");\r\n+        }\r\n+        metadataAddressBuilder.append(address);\r\n+        return metadataAddressBuilder.toString();\r\n+    }\r\n+\r\n+    private void loadRemoteConfigs() {\r\n+        // registry ids to registry configs\r\n+        List<RegistryConfig> tmpRegistries = new ArrayList<>();\r\n+        Set<String> registryIds = configManager.getRegistryIds();\r\n+        registryIds.forEach(id -> {\r\n+            if (tmpRegistries.stream().noneMatch(reg -> reg.getId().equals(id))) {\r\n+                tmpRegistries.add(configManager.getRegistry(id).orElseGet(() -> {\r\n+                    RegistryConfig registryConfig = new RegistryConfig();\r\n+                    registryConfig.setId(id);\r\n+                    registryConfig.refresh();\r\n+                    return registryConfig;\r\n+                }));\r\n+            }\r\n+        });\r\n+\r\n+        configManager.addRegistries(tmpRegistries);\r\n+\r\n+        // protocol ids to protocol configs\r\n+        List<ProtocolConfig> tmpProtocols = new ArrayList<>();\r\n+        Set<String> protocolIds = configManager.getProtocolIds();\r\n+        protocolIds.forEach(id -> {\r\n+            if (tmpProtocols.stream().noneMatch(prot -> prot.getId().equals(id))) {\r\n+                tmpProtocols.add(configManager.getProtocol(id).orElseGet(() -> {\r\n+                    ProtocolConfig protocolConfig = new ProtocolConfig();\r\n+                    protocolConfig.setId(id);\r\n+                    protocolConfig.refresh();\r\n+                    return protocolConfig;\r\n+                }));\r\n+            }\r\n+        });\r\n+\r\n+        configManager.addProtocols(tmpProtocols);\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Initialize {@link MetadataService} from {@link WritableMetadataService}'s extension\r\n+     */\r\n+    private void initMetadataService() {\r\n+        this.metadataService = getDefaultExtension();\r\n+        this.metadataServiceExporter = new ConfigurableMetadataServiceExporter(metadataService);\r\n+    }\r\n+\r\n+    /**\r\n+     * Initialize {@link EventListener}\r\n+     */\r\n+    private void initEventListener() {\r\n+        // Add current instance into listeners\r\n+        addEventListener(this);\r\n+    }\r\n+\r\n+    /**\r\n+     * Start the bootstrap\r\n+     */\r\n+    public DubboBootstrap start() {\r\n+        if (started.compareAndSet(false, true)) {\r\n+            ready.set(false);\r\n+            initialize();\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(NAME + \" is starting...\");\r\n+            }\r\n+            // 1. export Dubbo Services\r\n+            exportServices();\r\n+\r\n+            // Not only provider register\r\n+            if (!isOnlyRegisterProvider() || hasExportedServices()) {\r\n+                // 2. export MetadataService\r\n+                exportMetadataService();\r\n+                //3. Register the local ServiceInstance if required\r\n+                registerServiceInstance();\r\n+            }\r\n+\r\n+            referServices();\r\n+            if (asyncExportingFutures.size() > 0) {\r\n+                new Thread(() -> {\r\n+                    try {\r\n+                        this.awaitFinish();\r\n+                    } catch (Exception e) {\r\n+                        logger.warn(NAME + \" exportAsync occurred an exception.\");\r\n+                    }\r\n+                    ready.set(true);\r\n+                    if (logger.isInfoEnabled()) {\r\n+                        logger.info(NAME + \" is ready.\");\r\n+                    }\r\n+                    ExtensionLoader<DubboBootstrapStartStopListener> exts = getExtensionLoader(DubboBootstrapStartStopListener.class);\r\n+                    exts.getSupportedExtensionInstances().forEach(ext -> ext.onStart(this));\r\n+                }).start();\r\n+            } else {\r\n+                ready.set(true);\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(NAME + \" is ready.\");\r\n+                }\r\n+                ExtensionLoader<DubboBootstrapStartStopListener> exts = getExtensionLoader(DubboBootstrapStartStopListener.class);\r\n+                exts.getSupportedExtensionInstances().forEach(ext -> ext.onStart(this));\r\n+            }\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(NAME + \" has started.\");\r\n+            }\r\n+        }\r\n+        return this;\r\n+    }\r\n+\r\n+    private boolean hasExportedServices() {\r\n+        return !metadataService.getExportedURLs().isEmpty();\r\n+    }\r\n+\r\n+    /**\r\n+     * Block current thread to be await.\r\n+     *\r\n+     * @return {@link DubboBootstrap}\r\n+     */\r\n+    public DubboBootstrap await() {\r\n+        // if has been waited, no need to wait again, return immediately\r\n+        if (!awaited.get()) {\r\n+            if (!executorService.isShutdown()) {\r\n+                executeMutually(() -> {\r\n+                    while (!awaited.get()) {\r\n+                        if (logger.isInfoEnabled()) {\r\n+                            logger.info(NAME + \" awaiting ...\");\r\n+                        }\r\n+                        try {\r\n+                            condition.await();\r\n+                        } catch (InterruptedException e) {\r\n+                            Thread.currentThread().interrupt();\r\n+                        }\r\n+                    }\r\n+                });\r\n+            }\r\n+        }\r\n+        return this;\r\n+    }\r\n+\r\n+    public DubboBootstrap awaitFinish() throws Exception {\r\n+        logger.info(NAME + \" waiting services exporting / referring ...\");\r\n+        if (exportAsync && asyncExportingFutures.size() > 0) {\r\n+            CompletableFuture future = CompletableFuture.allOf(asyncExportingFutures.toArray(new CompletableFuture[0]));\r\n+            future.get();\r\n+        }\r\n+        if (referAsync && asyncReferringFutures.size() > 0) {\r\n+            CompletableFuture future = CompletableFuture.allOf(asyncReferringFutures.toArray(new CompletableFuture[0]));\r\n+            future.get();\r\n+        }\r\n+\r\n+        logger.info(\"Service export / refer finished.\");\r\n+        return this;\r\n+    }\r\n+\r\n+    public boolean isInitialized() {\r\n+        return initialized.get();\r\n+    }\r\n+\r\n+    public boolean isStarted() {\r\n+        return started.get();\r\n+    }\r\n+\r\n+    public boolean isReady() {\r\n+        return ready.get();\r\n+    }\r\n+\r\n+\r\n+    public DubboBootstrap stop() throws IllegalStateException {\r\n+        destroy();\r\n+        return this;\r\n+    }\r\n+    /* serve for builder apis, begin */\r\n+\r\n+    private ApplicationBuilder createApplicationBuilder(String name) {\r\n+        return new ApplicationBuilder().name(name);\r\n+    }\r\n+\r\n+    private RegistryBuilder createRegistryBuilder(String id) {\r\n+        return new RegistryBuilder().id(id);\r\n+    }\r\n+\r\n+    private ProtocolBuilder createProtocolBuilder(String id) {\r\n+        return new ProtocolBuilder().id(id);\r\n+    }\r\n+\r\n+    private ServiceBuilder createServiceBuilder(String id) {\r\n+        return new ServiceBuilder().id(id);\r\n+    }\r\n+\r\n+    private ReferenceBuilder createReferenceBuilder(String id) {\r\n+        return new ReferenceBuilder().id(id);\r\n+    }\r\n+\r\n+    private ProviderBuilder createProviderBuilder(String id) {\r\n+        return new ProviderBuilder().id(id);\r\n+    }\r\n+\r\n+    private ConsumerBuilder createConsumerBuilder(String id) {\r\n+        return new ConsumerBuilder().id(id);\r\n+    }\r\n+    /* serve for builder apis, end */\r\n+\r\n+    private DynamicConfiguration prepareEnvironment(ConfigCenterConfig configCenter) {\r\n+        if (configCenter.isValid()) {\r\n+            if (!configCenter.checkOrUpdateInited()) {\r\n+                return null;\r\n+            }\r\n+            DynamicConfiguration dynamicConfiguration = getDynamicConfiguration(configCenter.toUrl());\r\n+            String configContent = dynamicConfiguration.getProperties(configCenter.getConfigFile(), configCenter.getGroup());\r\n+\r\n+            String appGroup = getApplication().getName();\r\n+            String appConfigContent = null;\r\n+            if (isNotEmpty(appGroup)) {\r\n+                appConfigContent = dynamicConfiguration.getProperties\r\n+                        (isNotEmpty(configCenter.getAppConfigFile()) ? configCenter.getAppConfigFile() : configCenter.getConfigFile(),\r\n+                                appGroup\r\n+                        );\r\n+            }\r\n+            try {\r\n+                environment.setConfigCenterFirst(configCenter.isHighestPriority());\r\n+                environment.updateExternalConfigurationMap(parseProperties(configContent));\r\n+                environment.updateAppExternalConfigurationMap(parseProperties(appConfigContent));\r\n+            } catch (IOException e) {\r\n+                throw new IllegalStateException(\"Failed to parse configurations from Config Center.\", e);\r\n+            }\r\n+            return dynamicConfiguration;\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    /**\r\n+     * Add an instance of {@link EventListener}\r\n+     *\r\n+     * @param listener {@link EventListener}\r\n+     * @return {@link DubboBootstrap}\r\n+     */\r\n+    public DubboBootstrap addEventListener(EventListener<?> listener) {\r\n+        eventDispatcher.addEventListener(listener);\r\n+        return this;\r\n+    }\r\n+\r\n+    /**\r\n+     * export {@link MetadataService}\r\n+     */\r\n+    private void exportMetadataService() {\r\n+        metadataServiceExporter.export();\r\n+    }\r\n+\r\n+    private void unexportMetadataService() {\r\n+        if (metadataServiceExporter != null && metadataServiceExporter.isExported()) {\r\n+            metadataServiceExporter.unexport();\r\n+        }\r\n+    }\r\n+\r\n+    private void exportServices() {\r\n+        configManager.getServices().forEach(sc -> {\r\n+            // TODO, compatible with ServiceConfig.export()\r\n+            ServiceConfig serviceConfig = (ServiceConfig) sc;\r\n+            serviceConfig.setBootstrap(this);\r\n+\r\n+            if (exportAsync) {\r\n+                ExecutorService executor = executorRepository.getServiceExporterExecutor();\r\n+                Future<?> future = executor.submit(() -> {\r\n+                    sc.export();\r\n+                    exportedServices.add(sc);\r\n+                });\r\n+                asyncExportingFutures.add(future);\r\n+            } else {\r\n+                sc.export();\r\n+                exportedServices.add(sc);\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    private void unexportServices() {\r\n+        exportedServices.forEach(sc -> {\r\n+            configManager.removeConfig(sc);\r\n+            sc.unexport();\r\n+        });\r\n+\r\n+        asyncExportingFutures.forEach(future -> {\r\n+            if (!future.isDone()) {\r\n+                future.cancel(true);\r\n+            }\r\n+        });\r\n+        asyncExportingFutures.clear();\r\n+        exportedServices.clear();\r\n+    }\r\n+\r\n+    private void referServices() {\r\n+        if (cache == null) {\r\n+            cache = ReferenceConfigCache.getCache();\r\n+        }\r\n+\r\n+        configManager.getReferences().forEach(rc -> {\r\n+            // TODO, compatible with  ReferenceConfig.refer()\r\n+            ReferenceConfig referenceConfig = (ReferenceConfig) rc;\r\n+            referenceConfig.setBootstrap(this);\r\n+\r\n+            if (rc.shouldInit()) {\r\n+                if (referAsync) {\r\n+                    CompletableFuture<Object> future = ScheduledCompletableFuture.submit(\r\n+                            executorRepository.getServiceExporterExecutor(),\r\n+                            () -> cache.get(rc)\r\n+                    );\r\n+                    asyncReferringFutures.add(future);\r\n+                } else {\r\n+                    cache.get(rc);\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    private void unreferServices() {\r\n+        if (cache == null) {\r\n+            cache = ReferenceConfigCache.getCache();\r\n+        }\r\n+\r\n+        asyncReferringFutures.forEach(future -> {\r\n+            if (!future.isDone()) {\r\n+                future.cancel(true);\r\n+            }\r\n+        });\r\n+        asyncReferringFutures.clear();\r\n+        cache.destroyAll();\r\n+    }\r\n+\r\n+    private void registerServiceInstance() {\r\n+        if (CollectionUtils.isEmpty(getServiceDiscoveries())) {\r\n+            return;\r\n+        }\r\n+\r\n+        ApplicationConfig application = getApplication();\r\n+\r\n+        String serviceName = application.getName();\r\n+\r\n+        URL exportedURL = selectMetadataServiceExportedURL();\r\n+\r\n+        String host = exportedURL.getHost();\r\n+\r\n+        int port = exportedURL.getPort();\r\n+\r\n+        ServiceInstance serviceInstance = createServiceInstance(serviceName, host, port);\r\n+\r\n+        doRegisterServiceInstance(serviceInstance);\r\n+\r\n+        // scheduled task for updating Metadata and ServiceInstance\r\n+        executorRepository.nextScheduledExecutor().scheduleAtFixedRate(() -> {\r\n+            try {\r\n+                InMemoryWritableMetadataService localMetadataService = (InMemoryWritableMetadataService) WritableMetadataService.getDefaultExtension();\r\n+                localMetadataService.blockUntilUpdated();\r\n+                ServiceInstanceMetadataUtils.refreshMetadataAndInstance();\r\n+            } catch (Throwable e) {\r\n+                logger.error(\"refresh metadata and instance failed\", e);\r\n+            }\r\n+        }, 0, ConfigurationUtils.get(METADATA_PUBLISH_DELAY_KEY, DEFAULT_METADATA_PUBLISH_DELAY), TimeUnit.MILLISECONDS);\r\n+    }\r\n+\r\n+    private void doRegisterServiceInstance(ServiceInstance serviceInstance) {\r\n+        //FIXME\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"Start publishing metadata to remote center, this only makes sense for applications enabled remote metadata center.\");\r\n+        }\r\n+        publishMetadataToRemote(serviceInstance);\r\n+\r\n+        logger.info(\"Start registering instance address to registry.\");\r\n+        getServiceDiscoveries().forEach(serviceDiscovery ->\r\n+        {\r\n+            calInstanceRevision(serviceDiscovery, serviceInstance);\r\n+            if (logger.isDebugEnabled()) {\r\n+                logger.info(\"Start registering instance address to registry\" + serviceDiscovery.getUrl() + \", instance \" + serviceInstance);\r\n+            }\r\n+            // register metadata\r\n+            serviceDiscovery.register(serviceInstance);\r\n+        });\r\n+    }\r\n+\r\n+    private void publishMetadataToRemote(ServiceInstance serviceInstance) {\r\n+//        InMemoryWritableMetadataService localMetadataService = (InMemoryWritableMetadataService)WritableMetadataService.getDefaultExtension();\r\n+//        localMetadataService.blockUntilUpdated();\r\n+        RemoteMetadataServiceImpl remoteMetadataService = MetadataUtils.getRemoteMetadataService();\r\n+        remoteMetadataService.publishMetadata(serviceInstance.getServiceName());\r\n+    }\r\n+\r\n+    private URL selectMetadataServiceExportedURL() {\r\n+\r\n+        URL selectedURL = null;\r\n+\r\n+        SortedSet<String> urlValues = metadataService.getExportedURLs();\r\n+\r\n+        for (String urlValue : urlValues) {\r\n+            URL url = URL.valueOf(urlValue);\r\n+            if (MetadataService.class.getName().equals(url.getServiceInterface())) {\r\n+                continue;\r\n+            }\r\n+            if (\"rest\".equals(url.getProtocol())) { // REST first\r\n+                selectedURL = url;\r\n+                break;\r\n+            } else {\r\n+                selectedURL = url; // If not found, take any one\r\n+            }\r\n+        }\r\n+\r\n+        if (selectedURL == null && CollectionUtils.isNotEmpty(urlValues)) {\r\n+            selectedURL = URL.valueOf(urlValues.iterator().next());\r\n+        }\r\n+\r\n+        return selectedURL;\r\n+    }\r\n+\r\n+    private void unregisterServiceInstance() {\r\n+        if (serviceInstance != null) {\r\n+            getServiceDiscoveries().forEach(serviceDiscovery -> {\r\n+                serviceDiscovery.unregister(serviceInstance);\r\n+            });\r\n+        }\r\n+    }\r\n+\r\n+    private ServiceInstance createServiceInstance(String serviceName, String host, int port) {\r\n+        this.serviceInstance = new DefaultServiceInstance(serviceName, host, port);\r\n+        setMetadataStorageType(serviceInstance, getMetadataType());\r\n+\r\n+        ExtensionLoader<ServiceInstanceCustomizer> loader =\r\n+                ExtensionLoader.getExtensionLoader(ServiceInstanceCustomizer.class);\r\n+        // FIXME, sort customizer before apply\r\n+        loader.getSupportedExtensionInstances().forEach(customizer -> {\r\n+            // customizes\r\n+            customizer.customize(this.serviceInstance);\r\n+        });\r\n+\r\n+        return this.serviceInstance;\r\n+    }\r\n+\r\n+    public void destroy() {\r\n+        if (destroyLock.tryLock()) {\r\n+            try {\r\n+                DubboShutdownHook.destroyAll();\r\n+\r\n+                if (started.compareAndSet(true, false)\r\n+                        && destroyed.compareAndSet(false, true)) {\r\n+\r\n+                    unregisterServiceInstance();\r\n+                    unexportMetadataService();\r\n+                    unexportServices();\r\n+                    unreferServices();\r\n+\r\n+                    destroyRegistries();\r\n+\r\n+                    destroyServiceDiscoveries();\r\n+                    destroyExecutorRepository();\r\n+                    clear();\r\n+                    shutdown();\r\n+                    release();\r\n+                    ExtensionLoader<DubboBootstrapStartStopListener> exts = getExtensionLoader(DubboBootstrapStartStopListener.class);\r\n+                    exts.getSupportedExtensionInstances().forEach(ext -> ext.onStop(this));\r\n+                }\r\n+            } finally {\r\n+                destroyLock.unlock();\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private void destroyExecutorRepository() {\r\n+        ExtensionLoader.getExtensionLoader(ExecutorRepository.class).getDefaultExtension().destroyAll();\r\n+    }\r\n+\r\n+    private void destroyRegistries() {\r\n+        AbstractRegistryFactory.destroyAll();\r\n+    }\r\n+\r\n+    private void destroyServiceDiscoveries() {\r\n+        getServiceDiscoveries().forEach(serviceDiscovery -> {\r\n+            execute(serviceDiscovery::destroy);\r\n+        });\r\n+        if (logger.isDebugEnabled()) {\r\n+            logger.debug(NAME + \"'s all ServiceDiscoveries have been destroyed.\");\r\n+        }\r\n+    }\r\n+\r\n+    private void clear() {\r\n+        clearConfigs();\r\n+        clearApplicationModel();\r\n+    }\r\n+\r\n+    private void clearApplicationModel() {\r\n+\r\n+    }\r\n+\r\n+    private void clearConfigs() {\r\n+        configManager.destroy();\r\n+        if (logger.isDebugEnabled()) {\r\n+            logger.debug(NAME + \"'s configs have been clear.\");\r\n+        }\r\n+    }\r\n+\r\n+    private void release() {\r\n+        executeMutually(() -> {\r\n+            while (awaited.compareAndSet(false, true)) {\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(NAME + \" is about to shutdown...\");\r\n+                }\r\n+                condition.signalAll();\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    private void shutdown() {\r\n+        if (!executorService.isShutdown()) {\r\n+            // Shutdown executorService\r\n+            executorService.shutdown();\r\n+        }\r\n+    }\r\n+\r\n+    private void executeMutually(Runnable runnable) {\r\n+        try {\r\n+            lock.lock();\r\n+            runnable.run();\r\n+        } finally {\r\n+            lock.unlock();\r\n+        }\r\n+    }\r\n+\r\n+    public ApplicationConfig getApplication() {\r\n+        ApplicationConfig application = configManager\r\n+                .getApplication()\r\n+                .orElseGet(() -> {\r\n+                    ApplicationConfig applicationConfig = new ApplicationConfig();\r\n+                    configManager.setApplication(applicationConfig);\r\n+                    return applicationConfig;\r\n+                });\r\n+\r\n+        application.refresh();\r\n+        return application;\r\n+    }\r\n+\r\n+    private MonitorConfig getMonitor() {\r\n+        MonitorConfig monitor = configManager\r\n+                .getMonitor()\r\n+                .orElseGet(() -> {\r\n+                    MonitorConfig monitorConfig = new MonitorConfig();\r\n+                    configManager.setMonitor(monitorConfig);\r\n+                    return monitorConfig;\r\n+                });\r\n+\r\n+        monitor.refresh();\r\n+        return monitor;\r\n+    }\r\n+\r\n+    private MetricsConfig getMetrics() {\r\n+        MetricsConfig metrics = configManager\r\n+                .getMetrics()\r\n+                .orElseGet(() -> {\r\n+                    MetricsConfig metricsConfig = new MetricsConfig();\r\n+                    configManager.setMetrics(metricsConfig);\r\n+                    return metricsConfig;\r\n+                });\r\n+        metrics.refresh();\r\n+        return metrics;\r\n+    }\r\n+\r\n+    private ModuleConfig getModule() {\r\n+        ModuleConfig module = configManager\r\n+                .getModule()\r\n+                .orElseGet(() -> {\r\n+                    ModuleConfig moduleConfig = new ModuleConfig();\r\n+                    configManager.setModule(moduleConfig);\r\n+                    return moduleConfig;\r\n+                });\r\n+\r\n+        module.refresh();\r\n+        return module;\r\n+    }\r\n+\r\n+    private SslConfig getSsl() {\r\n+        SslConfig ssl = configManager\r\n+                .getSsl()\r\n+                .orElseGet(() -> {\r\n+                    SslConfig sslConfig = new SslConfig();\r\n+                    configManager.setSsl(sslConfig);\r\n+                    return sslConfig;\r\n+                });\r\n+\r\n+        ssl.refresh();\r\n+        return ssl;\r\n+    }\r\n+\r\n+    public void setReady(boolean ready) {\r\n+        this.ready.set(ready);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/DubboBootstrapStartStopListener.java", "source2": "org/apache/dubbo/config/bootstrap/DubboBootstrapStartStopListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,34 +1,34 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.config.bootstrap;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-/**\n- * call on DubboBootstrap start or stop.\n- *\n- * @scene 2.7.9\n- * @see DubboBootstrap\n- */\n-@SPI\n-public interface DubboBootstrapStartStopListener {\n-\n-    void onStart(DubboBootstrap bootstrap);\n-\n-    void onStop(DubboBootstrap bootstrap);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.config.bootstrap;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+/**\r\n+ * call on DubboBootstrap start or stop.\r\n+ *\r\n+ * @scene 2.7.9\r\n+ * @see DubboBootstrap\r\n+ */\r\n+@SPI\r\n+public interface DubboBootstrapStartStopListener {\r\n+\r\n+    void onStart(DubboBootstrap bootstrap);\r\n+\r\n+    void onStop(DubboBootstrap bootstrap);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/AbstractBuilder.java", "source2": "org/apache/dubbo/config/bootstrap/builders/AbstractBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,82 +1,82 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap.builders;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.AbstractConfig;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-/**\n- * AbstractBuilder\n- *\n- * @param <C> The type of {@link AbstractConfig Config}\n- * @param <B> The type of {@link AbstractBuilder Builder}\n- * @since 2.7\n- */\n-public abstract class AbstractBuilder<C extends AbstractConfig, B extends AbstractBuilder> {\n-    /**\n-     * The config id\n-     */\n-    protected String id;\n-    protected String prefix;\n-\n-    public B id(String id) {\n-        this.id = id;\n-        return getThis();\n-    }\n-\n-    protected B prefix(String prefix) {\n-        this.prefix = prefix;\n-        return getThis();\n-    }\n-\n-    protected abstract B getThis();\n-\n-    protected static Map<String, String> appendParameter(Map<String, String> parameters, String key, String value) {\n-        if (parameters == null) {\n-            parameters = new HashMap<>();\n-        }\n-        parameters.put(key, value);\n-        return parameters;\n-    }\n-\n-    protected static Map<String, String> appendParameters(Map<String, String> parameters, Map<String, String> appendParameters) {\n-        if (parameters == null) {\n-            parameters = new HashMap<>();\n-        }\n-        parameters.putAll(appendParameters);\n-        return parameters;\n-    }\n-\n-    protected void build(C instance) {\n-        if (!StringUtils.isEmpty(id)) {\n-            instance.setId(id);\n-        }\n-        if (!StringUtils.isEmpty(prefix)) {\n-            instance.setPrefix(prefix);\n-        }\n-    }\n-\n-    /**\n-     * Build an instance of {@link AbstractConfig config}\n-     *\n-     * @return an instance of {@link AbstractConfig config}\n-     */\n-    public abstract C build();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap.builders;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.AbstractConfig;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * AbstractBuilder\r\n+ *\r\n+ * @param <C> The type of {@link AbstractConfig Config}\r\n+ * @param <B> The type of {@link AbstractBuilder Builder}\r\n+ * @since 2.7\r\n+ */\r\n+public abstract class AbstractBuilder<C extends AbstractConfig, B extends AbstractBuilder> {\r\n+    /**\r\n+     * The config id\r\n+     */\r\n+    protected String id;\r\n+    protected String prefix;\r\n+\r\n+    public B id(String id) {\r\n+        this.id = id;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    protected B prefix(String prefix) {\r\n+        this.prefix = prefix;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    protected abstract B getThis();\r\n+\r\n+    protected static Map<String, String> appendParameter(Map<String, String> parameters, String key, String value) {\r\n+        if (parameters == null) {\r\n+            parameters = new HashMap<>();\r\n+        }\r\n+        parameters.put(key, value);\r\n+        return parameters;\r\n+    }\r\n+\r\n+    protected static Map<String, String> appendParameters(Map<String, String> parameters, Map<String, String> appendParameters) {\r\n+        if (parameters == null) {\r\n+            parameters = new HashMap<>();\r\n+        }\r\n+        parameters.putAll(appendParameters);\r\n+        return parameters;\r\n+    }\r\n+\r\n+    protected void build(C instance) {\r\n+        if (!StringUtils.isEmpty(id)) {\r\n+            instance.setId(id);\r\n+        }\r\n+        if (!StringUtils.isEmpty(prefix)) {\r\n+            instance.setPrefix(prefix);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Build an instance of {@link AbstractConfig config}\r\n+     *\r\n+     * @return an instance of {@link AbstractConfig config}\r\n+     */\r\n+    public abstract C build();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/AbstractInterfaceBuilder.java", "source2": "org/apache/dubbo/config/bootstrap/builders/AbstractInterfaceBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,345 +1,345 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap.builders;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.AbstractInterfaceConfig;\n-import org.apache.dubbo.config.ApplicationConfig;\n-import org.apache.dubbo.config.ConfigCenterConfig;\n-import org.apache.dubbo.config.MetadataReportConfig;\n-import org.apache.dubbo.config.ModuleConfig;\n-import org.apache.dubbo.config.MonitorConfig;\n-import org.apache.dubbo.config.RegistryConfig;\n-import org.apache.dubbo.rpc.Filter;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * AbstractBuilder\n- *\n- * @since 2.7\n- */\n-public abstract class AbstractInterfaceBuilder<T extends AbstractInterfaceConfig, B extends AbstractInterfaceBuilder<T, B>>\n-        extends AbstractMethodBuilder<T, B> {\n-    /**\n-     * Local impl class name for the service interface\n-     */\n-    protected String local;\n-\n-    /**\n-     * Local stub class name for the service interface\n-     */\n-    protected String stub;\n-\n-    /**\n-     * Service monitor\n-     */\n-    protected MonitorConfig monitor;\n-\n-    /**\n-     * Strategies for generating dynamic agents\uff0cthere are two strategies can be choosed: jdk and javassist\n-     */\n-    protected String proxy;\n-\n-    /**\n-     * Cluster type\n-     */\n-    protected String cluster;\n-\n-    /**\n-     * The {@link Filter} when the provider side exposed a service or the customer side references a remote service used,\n-     * if there are more than one, you can use commas to separate them\n-     */\n-    protected String filter;\n-\n-    /**\n-     * The Listener when the provider side exposes a service or the customer side references a remote service used\n-     * if there are more than one, you can use commas to separate them\n-     */\n-    protected String listener;\n-\n-    /**\n-     * The owner of the service providers\n-     */\n-    protected String owner;\n-\n-    /**\n-     * Connection limits, 0 means shared connection, otherwise it defines the connections delegated to the current service\n-     */\n-    protected Integer connections;\n-\n-    /**\n-     * The layer of service providers\n-     */\n-    protected String layer;\n-\n-    /**\n-     * The application info\n-     */\n-    protected ApplicationConfig application;\n-\n-    /**\n-     * The module info\n-     */\n-    protected ModuleConfig module;\n-\n-    /**\n-     * Registry centers\n-     */\n-    protected List<RegistryConfig> registries;\n-\n-    protected String registryIds;\n-\n-    // connection events\n-    protected String onconnect;\n-\n-    /**\n-     * Disconnection events\n-     */\n-    protected String ondisconnect;\n-    protected MetadataReportConfig metadataReportConfig;\n-\n-    protected ConfigCenterConfig configCenter;\n-\n-    // callback limits\n-    private Integer callbacks;\n-    // the scope for referring/exporting a service, if it's local, it means searching in current JVM only.\n-    private String scope;\n-\n-    private String tag;\n-\n-    /**\n-     * @param local\n-     * @see AbstractInterfaceBuilder#stub(String)\n-     * @deprecated Replace to <code>stub(String)</code>\n-     */\n-    @Deprecated\n-    public B local(String local) {\n-        this.local = local;\n-        return getThis();\n-    }\n-\n-    /**\n-     * @param local\n-     * @see AbstractInterfaceBuilder#stub(Boolean)\n-     * @deprecated Replace to <code>stub(Boolean)</code>\n-     */\n-    @Deprecated\n-    public B local(Boolean local) {\n-        if (local != null) {\n-            this.local = local.toString();\n-        } else {\n-            this.local = null;\n-        }\n-        return getThis();\n-    }\n-\n-    public B stub(String stub) {\n-        this.stub = stub;\n-        return getThis();\n-    }\n-\n-    public B stub(Boolean stub) {\n-        if (stub != null) {\n-            this.stub = stub.toString();\n-        } else {\n-            this.stub = null;\n-        }\n-        return getThis();\n-    }\n-\n-    public B monitor(MonitorConfig monitor) {\n-        this.monitor = monitor;\n-        return getThis();\n-    }\n-\n-    public B monitor(String monitor) {\n-        this.monitor = new MonitorConfig(monitor);\n-        return getThis();\n-    }\n-\n-    public B proxy(String proxy) {\n-        this.proxy = proxy;\n-        return getThis();\n-    }\n-\n-    public B cluster(String cluster) {\n-        this.cluster = cluster;\n-        return getThis();\n-    }\n-\n-    public B filter(String filter) {\n-        this.filter = filter;\n-        return getThis();\n-    }\n-\n-    public B listener(String listener) {\n-        this.listener = listener;\n-        return getThis();\n-    }\n-\n-    public B owner(String owner) {\n-        this.owner = owner;\n-        return getThis();\n-    }\n-\n-    public B connections(Integer connections) {\n-        this.connections = connections;\n-        return getThis();\n-    }\n-\n-    public B layer(String layer) {\n-        this.layer = layer;\n-        return getThis();\n-    }\n-\n-    public B application(ApplicationConfig application) {\n-        this.application = application;\n-        return getThis();\n-    }\n-\n-    public B module(ModuleConfig module) {\n-        this.module = module;\n-        return getThis();\n-    }\n-\n-    public B addRegistries(List<RegistryConfig> registries) {\n-        if (this.registries == null) {\n-            this.registries = new ArrayList<>();\n-        }\n-        this.registries.addAll(registries);\n-        return getThis();\n-    }\n-\n-    public B addRegistry(RegistryConfig registry) {\n-        if (this.registries == null) {\n-            this.registries = new ArrayList<>();\n-        }\n-        this.registries.add(registry);\n-        return getThis();\n-    }\n-\n-    public B registryIds(String registryIds) {\n-        this.registryIds = registryIds;\n-        return getThis();\n-    }\n-\n-    public B onconnect(String onconnect) {\n-        this.onconnect = onconnect;\n-        return getThis();\n-    }\n-\n-    public B ondisconnect(String ondisconnect) {\n-        this.ondisconnect = ondisconnect;\n-        return getThis();\n-    }\n-\n-    public B metadataReportConfig(MetadataReportConfig metadataReportConfig) {\n-        this.metadataReportConfig = metadataReportConfig;\n-        return getThis();\n-    }\n-\n-    public B configCenter(ConfigCenterConfig configCenter) {\n-        this.configCenter = configCenter;\n-        return getThis();\n-    }\n-\n-    public B callbacks(Integer callbacks) {\n-        this.callbacks = callbacks;\n-        return getThis();\n-    }\n-\n-    public B scope(String scope) {\n-        this.scope = scope;\n-        return getThis();\n-    }\n-\n-    public B tag(String tag) {\n-        this.tag = tag;\n-        return getThis();\n-    }\n-\n-    @Override\n-    public void build(T instance) {\n-        super.build(instance);\n-\n-        if (!StringUtils.isEmpty(local)) {\n-            instance.setLocal(local);\n-        }\n-        if (!StringUtils.isEmpty(stub)) {\n-            instance.setStub(stub);\n-        }\n-        if (monitor != null) {\n-            instance.setMonitor(monitor);\n-        }\n-        if (!StringUtils.isEmpty(proxy)) {\n-            instance.setProxy(proxy);\n-        }\n-        if (!StringUtils.isEmpty(cluster)) {\n-            instance.setCluster(cluster);\n-        }\n-        if (!StringUtils.isEmpty(filter)) {\n-            instance.setFilter(filter);\n-        }\n-        if (!StringUtils.isEmpty(listener)) {\n-            instance.setListener(listener);\n-        }\n-        if (!StringUtils.isEmpty(owner)) {\n-            instance.setOwner(owner);\n-        }\n-        if (connections != null) {\n-            instance.setConnections(connections);\n-        }\n-        if (!StringUtils.isEmpty(layer)) {\n-            instance.setLayer(layer);\n-        }\n-        if (application != null) {\n-            instance.setApplication(application);\n-        }\n-        if (module != null) {\n-            instance.setModule(module);\n-        }\n-        if (registries != null) {\n-            instance.setRegistries(registries);\n-        }\n-        if (!StringUtils.isEmpty(registryIds)) {\n-            instance.setRegistryIds(registryIds);\n-        }\n-        if (!StringUtils.isEmpty(onconnect)) {\n-            instance.setOnconnect(onconnect);\n-        }\n-        if (!StringUtils.isEmpty(ondisconnect)) {\n-            instance.setOndisconnect(ondisconnect);\n-        }\n-        if (metadataReportConfig != null) {\n-            instance.setMetadataReportConfig(metadataReportConfig);\n-        }\n-        if (configCenter != null) {\n-            instance.setConfigCenter(configCenter);\n-        }\n-        if (callbacks != null) {\n-            instance.setCallbacks(callbacks);\n-        }\n-        if (!StringUtils.isEmpty(scope)) {\n-            instance.setScope(scope);\n-        }\n-        if (StringUtils.isNotEmpty(tag)) {\n-            instance.setTag(tag);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap.builders;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.AbstractInterfaceConfig;\r\n+import org.apache.dubbo.config.ApplicationConfig;\r\n+import org.apache.dubbo.config.ConfigCenterConfig;\r\n+import org.apache.dubbo.config.MetadataReportConfig;\r\n+import org.apache.dubbo.config.ModuleConfig;\r\n+import org.apache.dubbo.config.MonitorConfig;\r\n+import org.apache.dubbo.config.RegistryConfig;\r\n+import org.apache.dubbo.rpc.Filter;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * AbstractBuilder\r\n+ *\r\n+ * @since 2.7\r\n+ */\r\n+public abstract class AbstractInterfaceBuilder<T extends AbstractInterfaceConfig, B extends AbstractInterfaceBuilder<T, B>>\r\n+        extends AbstractMethodBuilder<T, B> {\r\n+    /**\r\n+     * Local impl class name for the service interface\r\n+     */\r\n+    protected String local;\r\n+\r\n+    /**\r\n+     * Local stub class name for the service interface\r\n+     */\r\n+    protected String stub;\r\n+\r\n+    /**\r\n+     * Service monitor\r\n+     */\r\n+    protected MonitorConfig monitor;\r\n+\r\n+    /**\r\n+     * Strategies for generating dynamic agents\uff0cthere are two strategies can be choosed: jdk and javassist\r\n+     */\r\n+    protected String proxy;\r\n+\r\n+    /**\r\n+     * Cluster type\r\n+     */\r\n+    protected String cluster;\r\n+\r\n+    /**\r\n+     * The {@link Filter} when the provider side exposed a service or the customer side references a remote service used,\r\n+     * if there are more than one, you can use commas to separate them\r\n+     */\r\n+    protected String filter;\r\n+\r\n+    /**\r\n+     * The Listener when the provider side exposes a service or the customer side references a remote service used\r\n+     * if there are more than one, you can use commas to separate them\r\n+     */\r\n+    protected String listener;\r\n+\r\n+    /**\r\n+     * The owner of the service providers\r\n+     */\r\n+    protected String owner;\r\n+\r\n+    /**\r\n+     * Connection limits, 0 means shared connection, otherwise it defines the connections delegated to the current service\r\n+     */\r\n+    protected Integer connections;\r\n+\r\n+    /**\r\n+     * The layer of service providers\r\n+     */\r\n+    protected String layer;\r\n+\r\n+    /**\r\n+     * The application info\r\n+     */\r\n+    protected ApplicationConfig application;\r\n+\r\n+    /**\r\n+     * The module info\r\n+     */\r\n+    protected ModuleConfig module;\r\n+\r\n+    /**\r\n+     * Registry centers\r\n+     */\r\n+    protected List<RegistryConfig> registries;\r\n+\r\n+    protected String registryIds;\r\n+\r\n+    // connection events\r\n+    protected String onconnect;\r\n+\r\n+    /**\r\n+     * Disconnection events\r\n+     */\r\n+    protected String ondisconnect;\r\n+    protected MetadataReportConfig metadataReportConfig;\r\n+\r\n+    protected ConfigCenterConfig configCenter;\r\n+\r\n+    // callback limits\r\n+    private Integer callbacks;\r\n+    // the scope for referring/exporting a service, if it's local, it means searching in current JVM only.\r\n+    private String scope;\r\n+\r\n+    private String tag;\r\n+\r\n+    /**\r\n+     * @param local\r\n+     * @see AbstractInterfaceBuilder#stub(String)\r\n+     * @deprecated Replace to <code>stub(String)</code>\r\n+     */\r\n+    @Deprecated\r\n+    public B local(String local) {\r\n+        this.local = local;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    /**\r\n+     * @param local\r\n+     * @see AbstractInterfaceBuilder#stub(Boolean)\r\n+     * @deprecated Replace to <code>stub(Boolean)</code>\r\n+     */\r\n+    @Deprecated\r\n+    public B local(Boolean local) {\r\n+        if (local != null) {\r\n+            this.local = local.toString();\r\n+        } else {\r\n+            this.local = null;\r\n+        }\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B stub(String stub) {\r\n+        this.stub = stub;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B stub(Boolean stub) {\r\n+        if (stub != null) {\r\n+            this.stub = stub.toString();\r\n+        } else {\r\n+            this.stub = null;\r\n+        }\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B monitor(MonitorConfig monitor) {\r\n+        this.monitor = monitor;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B monitor(String monitor) {\r\n+        this.monitor = new MonitorConfig(monitor);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B proxy(String proxy) {\r\n+        this.proxy = proxy;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B cluster(String cluster) {\r\n+        this.cluster = cluster;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B filter(String filter) {\r\n+        this.filter = filter;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B listener(String listener) {\r\n+        this.listener = listener;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B owner(String owner) {\r\n+        this.owner = owner;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B connections(Integer connections) {\r\n+        this.connections = connections;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B layer(String layer) {\r\n+        this.layer = layer;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B application(ApplicationConfig application) {\r\n+        this.application = application;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B module(ModuleConfig module) {\r\n+        this.module = module;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B addRegistries(List<RegistryConfig> registries) {\r\n+        if (this.registries == null) {\r\n+            this.registries = new ArrayList<>();\r\n+        }\r\n+        this.registries.addAll(registries);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B addRegistry(RegistryConfig registry) {\r\n+        if (this.registries == null) {\r\n+            this.registries = new ArrayList<>();\r\n+        }\r\n+        this.registries.add(registry);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B registryIds(String registryIds) {\r\n+        this.registryIds = registryIds;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B onconnect(String onconnect) {\r\n+        this.onconnect = onconnect;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B ondisconnect(String ondisconnect) {\r\n+        this.ondisconnect = ondisconnect;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B metadataReportConfig(MetadataReportConfig metadataReportConfig) {\r\n+        this.metadataReportConfig = metadataReportConfig;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B configCenter(ConfigCenterConfig configCenter) {\r\n+        this.configCenter = configCenter;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B callbacks(Integer callbacks) {\r\n+        this.callbacks = callbacks;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B scope(String scope) {\r\n+        this.scope = scope;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B tag(String tag) {\r\n+        this.tag = tag;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void build(T instance) {\r\n+        super.build(instance);\r\n+\r\n+        if (!StringUtils.isEmpty(local)) {\r\n+            instance.setLocal(local);\r\n+        }\r\n+        if (!StringUtils.isEmpty(stub)) {\r\n+            instance.setStub(stub);\r\n+        }\r\n+        if (monitor != null) {\r\n+            instance.setMonitor(monitor);\r\n+        }\r\n+        if (!StringUtils.isEmpty(proxy)) {\r\n+            instance.setProxy(proxy);\r\n+        }\r\n+        if (!StringUtils.isEmpty(cluster)) {\r\n+            instance.setCluster(cluster);\r\n+        }\r\n+        if (!StringUtils.isEmpty(filter)) {\r\n+            instance.setFilter(filter);\r\n+        }\r\n+        if (!StringUtils.isEmpty(listener)) {\r\n+            instance.setListener(listener);\r\n+        }\r\n+        if (!StringUtils.isEmpty(owner)) {\r\n+            instance.setOwner(owner);\r\n+        }\r\n+        if (connections != null) {\r\n+            instance.setConnections(connections);\r\n+        }\r\n+        if (!StringUtils.isEmpty(layer)) {\r\n+            instance.setLayer(layer);\r\n+        }\r\n+        if (application != null) {\r\n+            instance.setApplication(application);\r\n+        }\r\n+        if (module != null) {\r\n+            instance.setModule(module);\r\n+        }\r\n+        if (registries != null) {\r\n+            instance.setRegistries(registries);\r\n+        }\r\n+        if (!StringUtils.isEmpty(registryIds)) {\r\n+            instance.setRegistryIds(registryIds);\r\n+        }\r\n+        if (!StringUtils.isEmpty(onconnect)) {\r\n+            instance.setOnconnect(onconnect);\r\n+        }\r\n+        if (!StringUtils.isEmpty(ondisconnect)) {\r\n+            instance.setOndisconnect(ondisconnect);\r\n+        }\r\n+        if (metadataReportConfig != null) {\r\n+            instance.setMetadataReportConfig(metadataReportConfig);\r\n+        }\r\n+        if (configCenter != null) {\r\n+            instance.setConfigCenter(configCenter);\r\n+        }\r\n+        if (callbacks != null) {\r\n+            instance.setCallbacks(callbacks);\r\n+        }\r\n+        if (!StringUtils.isEmpty(scope)) {\r\n+            instance.setScope(scope);\r\n+        }\r\n+        if (StringUtils.isNotEmpty(tag)) {\r\n+            instance.setTag(tag);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/AbstractMethodBuilder.java", "source2": "org/apache/dubbo/config/bootstrap/builders/AbstractMethodBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,213 +1,213 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap.builders;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.AbstractMethodConfig;\n-\n-import java.util.Map;\n-\n-/**\n- * AbstractBuilder\n- *\n- * @since 2.7\n- */\n-public abstract class AbstractMethodBuilder<T extends AbstractMethodConfig, B extends AbstractMethodBuilder<T, B>>\n-        extends AbstractBuilder<T, B> {\n-    /**\n-     * The timeout for remote invocation in milliseconds\n-     */\n-    protected Integer timeout;\n-\n-    /**\n-     * The retry times\n-     */\n-    protected Integer retries;\n-\n-    /**\n-     * max concurrent invocations\n-     */\n-    protected Integer actives;\n-\n-    /**\n-     * The load balance\n-     */\n-    protected String loadbalance;\n-\n-    /**\n-     * Whether to async\n-     * note that: it is an unreliable asynchronism that ignores return values and does not block threads.\n-     */\n-    protected Boolean async;\n-\n-    /**\n-     * Whether to ack async-sent\n-     */\n-    protected Boolean sent;\n-\n-    /**\n-     * The name of mock class which gets called when a service fails to execute\n-     *\n-     * note that: the mock doesn't support on the provider side\uff0cand the mock is executed when a non-business exception\n-     * occurs after a remote service call\n-     */\n-    protected String mock;\n-\n-    /**\n-     * Merger\n-     */\n-    protected String merger;\n-\n-    /**\n-     * Cache the return result with the call parameter as key, the following options are available: lru, threadlocal,\n-     * jcache, etc.\n-     */\n-    protected String cache;\n-\n-    /**\n-     * Whether JSR303 standard annotation validation is enabled or not, if enabled, annotations on method parameters will\n-     * be validated\n-     */\n-    protected String validation;\n-\n-    /**\n-     * The customized parameters\n-     */\n-    protected Map<String, String> parameters;\n-\n-    /**\n-     * Forks for forking cluster\n-     */\n-    protected Integer forks;\n-\n-    public B timeout(Integer timeout) {\n-        this.timeout = timeout;\n-        return getThis();\n-    }\n-\n-    public B retries(Integer retries) {\n-        this.retries = retries;\n-        return getThis();\n-    }\n-\n-    public B actives(Integer actives) {\n-        this.actives = actives;\n-        return getThis();\n-    }\n-\n-    public B loadbalance(String loadbalance) {\n-        this.loadbalance = loadbalance;\n-        return getThis();\n-    }\n-\n-    public B async(Boolean async) {\n-        this.async = async;\n-        return getThis();\n-    }\n-\n-    public B sent(Boolean sent) {\n-        this.sent = sent;\n-        return getThis();\n-    }\n-\n-    public B mock(String mock) {\n-        this.mock = mock;\n-        return getThis();\n-    }\n-\n-    public B mock(Boolean mock) {\n-        if (mock != null) {\n-            this.mock = mock.toString();\n-        } else {\n-            this.mock = null;\n-        }\n-        return getThis();\n-    }\n-\n-    public B merger(String merger) {\n-        this.merger = merger;\n-        return getThis();\n-    }\n-\n-    public B cache(String cache) {\n-        this.cache = cache;\n-        return getThis();\n-    }\n-\n-    public B validation(String validation) {\n-        this.validation = validation;\n-        return getThis();\n-    }\n-\n-    public B appendParameters(Map<String, String> appendParameters) {\n-        this.parameters = appendParameters(parameters, appendParameters);\n-        return getThis();\n-    }\n-\n-    public B appendParameter(String key, String value) {\n-        this.parameters = appendParameter(parameters, key, value);\n-        return getThis();\n-    }\n-\n-    public B forks(Integer forks) {\n-        this.forks = forks;\n-        return getThis();\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public void build(T instance) {\n-        super.build(instance);\n-\n-        if (actives != null) {\n-            instance.setActives(actives);\n-        }\n-        if (async != null) {\n-            instance.setAsync(async);\n-        }\n-        if (!StringUtils.isEmpty(cache)) {\n-            instance.setCache(cache);\n-        }\n-        if (forks != null) {\n-            instance.setForks(forks);\n-        }\n-        if (!StringUtils.isEmpty(loadbalance)) {\n-            instance.setLoadbalance(loadbalance);\n-        }\n-        if (!StringUtils.isEmpty(merger)) {\n-            instance.setMerger(merger);\n-        }\n-        if(!StringUtils.isEmpty(mock)) {\n-            instance.setMock(mock);\n-        }\n-        if (retries != null) {\n-            instance.setRetries(retries);\n-        }\n-        if (sent != null) {\n-            instance.setSent(sent);\n-        }\n-        if (timeout != null) {\n-            instance.setTimeout(timeout);\n-        }\n-        if (!StringUtils.isEmpty(validation)) {\n-            instance.setValidation(validation);\n-        }\n-        if (parameters != null) {\n-            instance.setParameters(parameters);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap.builders;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.AbstractMethodConfig;\r\n+\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * AbstractBuilder\r\n+ *\r\n+ * @since 2.7\r\n+ */\r\n+public abstract class AbstractMethodBuilder<T extends AbstractMethodConfig, B extends AbstractMethodBuilder<T, B>>\r\n+        extends AbstractBuilder<T, B> {\r\n+    /**\r\n+     * The timeout for remote invocation in milliseconds\r\n+     */\r\n+    protected Integer timeout;\r\n+\r\n+    /**\r\n+     * The retry times\r\n+     */\r\n+    protected Integer retries;\r\n+\r\n+    /**\r\n+     * max concurrent invocations\r\n+     */\r\n+    protected Integer actives;\r\n+\r\n+    /**\r\n+     * The load balance\r\n+     */\r\n+    protected String loadbalance;\r\n+\r\n+    /**\r\n+     * Whether to async\r\n+     * note that: it is an unreliable asynchronism that ignores return values and does not block threads.\r\n+     */\r\n+    protected Boolean async;\r\n+\r\n+    /**\r\n+     * Whether to ack async-sent\r\n+     */\r\n+    protected Boolean sent;\r\n+\r\n+    /**\r\n+     * The name of mock class which gets called when a service fails to execute\r\n+     *\r\n+     * note that: the mock doesn't support on the provider side\uff0cand the mock is executed when a non-business exception\r\n+     * occurs after a remote service call\r\n+     */\r\n+    protected String mock;\r\n+\r\n+    /**\r\n+     * Merger\r\n+     */\r\n+    protected String merger;\r\n+\r\n+    /**\r\n+     * Cache the return result with the call parameter as key, the following options are available: lru, threadlocal,\r\n+     * jcache, etc.\r\n+     */\r\n+    protected String cache;\r\n+\r\n+    /**\r\n+     * Whether JSR303 standard annotation validation is enabled or not, if enabled, annotations on method parameters will\r\n+     * be validated\r\n+     */\r\n+    protected String validation;\r\n+\r\n+    /**\r\n+     * The customized parameters\r\n+     */\r\n+    protected Map<String, String> parameters;\r\n+\r\n+    /**\r\n+     * Forks for forking cluster\r\n+     */\r\n+    protected Integer forks;\r\n+\r\n+    public B timeout(Integer timeout) {\r\n+        this.timeout = timeout;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B retries(Integer retries) {\r\n+        this.retries = retries;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B actives(Integer actives) {\r\n+        this.actives = actives;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B loadbalance(String loadbalance) {\r\n+        this.loadbalance = loadbalance;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B async(Boolean async) {\r\n+        this.async = async;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B sent(Boolean sent) {\r\n+        this.sent = sent;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B mock(String mock) {\r\n+        this.mock = mock;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B mock(Boolean mock) {\r\n+        if (mock != null) {\r\n+            this.mock = mock.toString();\r\n+        } else {\r\n+            this.mock = null;\r\n+        }\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B merger(String merger) {\r\n+        this.merger = merger;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B cache(String cache) {\r\n+        this.cache = cache;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B validation(String validation) {\r\n+        this.validation = validation;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B appendParameters(Map<String, String> appendParameters) {\r\n+        this.parameters = appendParameters(parameters, appendParameters);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B appendParameter(String key, String value) {\r\n+        this.parameters = appendParameter(parameters, key, value);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B forks(Integer forks) {\r\n+        this.forks = forks;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public void build(T instance) {\r\n+        super.build(instance);\r\n+\r\n+        if (actives != null) {\r\n+            instance.setActives(actives);\r\n+        }\r\n+        if (async != null) {\r\n+            instance.setAsync(async);\r\n+        }\r\n+        if (!StringUtils.isEmpty(cache)) {\r\n+            instance.setCache(cache);\r\n+        }\r\n+        if (forks != null) {\r\n+            instance.setForks(forks);\r\n+        }\r\n+        if (!StringUtils.isEmpty(loadbalance)) {\r\n+            instance.setLoadbalance(loadbalance);\r\n+        }\r\n+        if (!StringUtils.isEmpty(merger)) {\r\n+            instance.setMerger(merger);\r\n+        }\r\n+        if(!StringUtils.isEmpty(mock)) {\r\n+            instance.setMock(mock);\r\n+        }\r\n+        if (retries != null) {\r\n+            instance.setRetries(retries);\r\n+        }\r\n+        if (sent != null) {\r\n+            instance.setSent(sent);\r\n+        }\r\n+        if (timeout != null) {\r\n+            instance.setTimeout(timeout);\r\n+        }\r\n+        if (!StringUtils.isEmpty(validation)) {\r\n+            instance.setValidation(validation);\r\n+        }\r\n+        if (parameters != null) {\r\n+            instance.setParameters(parameters);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/AbstractReferenceBuilder.java", "source2": "org/apache/dubbo/config/bootstrap/builders/AbstractReferenceBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,161 +1,161 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap.builders;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.AbstractReferenceConfig;\n-\n-/**\n- * AbstractBuilder\n- *\n- * @since 2.7\n- */\n-public abstract class AbstractReferenceBuilder<T extends AbstractReferenceConfig, B extends AbstractReferenceBuilder<T, B>>\n-        extends AbstractInterfaceBuilder<T, B> {\n-\n-    /**\n-     * Check if service provider exists, if not exists, it will be fast fail\n-     */\n-    protected Boolean check;\n-\n-    /**\n-     * Whether to eagle-init\n-     */\n-    protected Boolean init;\n-\n-    /**\n-     * Whether to use generic interface\n-     */\n-    protected String generic;\n-\n-    /**\n-     * Whether to find reference's instance from the current JVM\n-     */\n-    protected Boolean injvm;\n-\n-    /**\n-     * Lazy create connection\n-     */\n-    protected Boolean lazy;\n-\n-    protected String reconnect;\n-\n-    protected Boolean sticky;\n-\n-    /**\n-     * The remote service version the customer side will reference\n-     */\n-    protected String version;\n-\n-    /**\n-     * The remote service group the customer side will reference\n-     */\n-    protected String group;\n-\n-    public B check(Boolean check) {\n-        this.check = check;\n-        return getThis();\n-    }\n-\n-    public B init(Boolean init) {\n-        this.init = init;\n-        return getThis();\n-    }\n-\n-    public B generic(String generic) {\n-        this.generic = generic;\n-        return getThis();\n-    }\n-\n-    public B generic(Boolean generic) {\n-        if (generic != null) {\n-            this.generic = generic.toString();\n-        } else {\n-            this.generic = null;\n-        }\n-        return getThis();\n-    }\n-\n-    /**\n-     * @param injvm\n-     * @see AbstractInterfaceBuilder#scope(String)\n-     * @deprecated instead, use the parameter <b>scope</b> to judge if it's in jvm, scope=local\n-     */\n-    @Deprecated\n-    public B injvm(Boolean injvm) {\n-        this.injvm = injvm;\n-        return getThis();\n-    }\n-\n-    public B lazy(Boolean lazy) {\n-        this.lazy = lazy;\n-        return getThis();\n-    }\n-\n-    public B reconnect(String reconnect) {\n-        this.reconnect = reconnect;\n-        return getThis();\n-    }\n-\n-    public B sticky(Boolean sticky) {\n-        this.sticky = sticky;\n-        return getThis();\n-    }\n-\n-    public B version(String version) {\n-        this.version = version;\n-        return getThis();\n-    }\n-\n-    public B group(String group) {\n-        this.group = group;\n-        return getThis();\n-    }\n-\n-    @Override\n-    public void build(T instance) {\n-        super.build(instance);\n-\n-        if (check != null) {\n-            instance.setCheck(check);\n-        }\n-        if (init != null) {\n-            instance.setInit(init);\n-        }\n-        if (!StringUtils.isEmpty(generic)) {\n-            instance.setGeneric(generic);\n-        }\n-        if (injvm != null) {\n-            instance.setInjvm(injvm);\n-        }\n-        if (lazy != null) {\n-            instance.setLazy(lazy);\n-        }\n-        if (!StringUtils.isEmpty(reconnect)) {\n-            instance.setReconnect(reconnect);\n-        }\n-        if (sticky != null) {\n-            instance.setSticky(sticky);\n-        }\n-        if (!StringUtils.isEmpty(version)) {\n-            instance.setVersion(version);\n-        }\n-        if (!StringUtils.isEmpty(group)) {\n-            instance.setGroup(group);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap.builders;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.AbstractReferenceConfig;\r\n+\r\n+/**\r\n+ * AbstractBuilder\r\n+ *\r\n+ * @since 2.7\r\n+ */\r\n+public abstract class AbstractReferenceBuilder<T extends AbstractReferenceConfig, B extends AbstractReferenceBuilder<T, B>>\r\n+        extends AbstractInterfaceBuilder<T, B> {\r\n+\r\n+    /**\r\n+     * Check if service provider exists, if not exists, it will be fast fail\r\n+     */\r\n+    protected Boolean check;\r\n+\r\n+    /**\r\n+     * Whether to eagle-init\r\n+     */\r\n+    protected Boolean init;\r\n+\r\n+    /**\r\n+     * Whether to use generic interface\r\n+     */\r\n+    protected String generic;\r\n+\r\n+    /**\r\n+     * Whether to find reference's instance from the current JVM\r\n+     */\r\n+    protected Boolean injvm;\r\n+\r\n+    /**\r\n+     * Lazy create connection\r\n+     */\r\n+    protected Boolean lazy;\r\n+\r\n+    protected String reconnect;\r\n+\r\n+    protected Boolean sticky;\r\n+\r\n+    /**\r\n+     * The remote service version the customer side will reference\r\n+     */\r\n+    protected String version;\r\n+\r\n+    /**\r\n+     * The remote service group the customer side will reference\r\n+     */\r\n+    protected String group;\r\n+\r\n+    public B check(Boolean check) {\r\n+        this.check = check;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B init(Boolean init) {\r\n+        this.init = init;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B generic(String generic) {\r\n+        this.generic = generic;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B generic(Boolean generic) {\r\n+        if (generic != null) {\r\n+            this.generic = generic.toString();\r\n+        } else {\r\n+            this.generic = null;\r\n+        }\r\n+        return getThis();\r\n+    }\r\n+\r\n+    /**\r\n+     * @param injvm\r\n+     * @see AbstractInterfaceBuilder#scope(String)\r\n+     * @deprecated instead, use the parameter <b>scope</b> to judge if it's in jvm, scope=local\r\n+     */\r\n+    @Deprecated\r\n+    public B injvm(Boolean injvm) {\r\n+        this.injvm = injvm;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B lazy(Boolean lazy) {\r\n+        this.lazy = lazy;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B reconnect(String reconnect) {\r\n+        this.reconnect = reconnect;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B sticky(Boolean sticky) {\r\n+        this.sticky = sticky;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B version(String version) {\r\n+        this.version = version;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B group(String group) {\r\n+        this.group = group;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void build(T instance) {\r\n+        super.build(instance);\r\n+\r\n+        if (check != null) {\r\n+            instance.setCheck(check);\r\n+        }\r\n+        if (init != null) {\r\n+            instance.setInit(init);\r\n+        }\r\n+        if (!StringUtils.isEmpty(generic)) {\r\n+            instance.setGeneric(generic);\r\n+        }\r\n+        if (injvm != null) {\r\n+            instance.setInjvm(injvm);\r\n+        }\r\n+        if (lazy != null) {\r\n+            instance.setLazy(lazy);\r\n+        }\r\n+        if (!StringUtils.isEmpty(reconnect)) {\r\n+            instance.setReconnect(reconnect);\r\n+        }\r\n+        if (sticky != null) {\r\n+            instance.setSticky(sticky);\r\n+        }\r\n+        if (!StringUtils.isEmpty(version)) {\r\n+            instance.setVersion(version);\r\n+        }\r\n+        if (!StringUtils.isEmpty(group)) {\r\n+            instance.setGroup(group);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/AbstractServiceBuilder.java", "source2": "org/apache/dubbo/config/bootstrap/builders/AbstractServiceBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,272 +1,272 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap.builders;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.AbstractServiceConfig;\n-import org.apache.dubbo.config.ProtocolConfig;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * AbstractBuilder\n- *\n- * @since 2.7\n- */\n-public abstract class AbstractServiceBuilder<T extends AbstractServiceConfig, B extends AbstractServiceBuilder<T, B>>\n-        extends AbstractInterfaceBuilder<T, B> {\n-\n-    /**\n-     * The service version\n-     */\n-    protected String version;\n-\n-    /**\n-     * The service group\n-     */\n-    protected String group;\n-\n-    /**\n-     * whether the service is deprecated\n-     */\n-    protected Boolean deprecated;\n-\n-    /**\n-     * The time delay register service (milliseconds)\n-     */\n-    protected Integer delay;\n-\n-    /**\n-     * Whether to export the service\n-     */\n-    protected Boolean export;\n-\n-    /**\n-     * The service weight\n-     */\n-    protected Integer weight;\n-\n-    /**\n-     * Document center\n-     */\n-    protected String document;\n-\n-    /**\n-     * Whether to register as a dynamic service or not on register center, it the value is false, the status will be disabled\n-     * after the service registered,and it needs to be enabled manually; if you want to disable the service, you also need\n-     * manual processing\n-     */\n-    protected Boolean dynamic;\n-\n-    /**\n-     * Whether to use token\n-     */\n-    protected String token;\n-\n-    /**\n-     * Whether to export access logs to logs\n-     */\n-    protected String accesslog;\n-\n-    /**\n-     * The protocol list the service will export with\n-     */\n-    protected List<ProtocolConfig> protocols;\n-    protected String protocolIds;\n-\n-    // max allowed execute times\n-    private Integer executes;\n-\n-    /**\n-     * Whether to register\n-     */\n-    private Boolean register;\n-\n-    /**\n-     * Warm up period\n-     */\n-    private Integer warmup;\n-\n-    /**\n-     * The serialization type\n-     */\n-    private String serialization;\n-\n-    public B version(String version) {\n-        this.version = version;\n-        return getThis();\n-    }\n-\n-    public B group(String group) {\n-        this.group = group;\n-        return getThis();\n-    }\n-\n-    public B deprecated(Boolean deprecated) {\n-        this.deprecated = deprecated;\n-        return getThis();\n-    }\n-\n-    public B delay(Integer delay) {\n-        this.delay = delay;\n-        return getThis();\n-    }\n-\n-    public B export(Boolean export) {\n-        this.export = export;\n-        return getThis();\n-    }\n-\n-    public B weight(Integer weight) {\n-        this.weight = weight;\n-        return getThis();\n-    }\n-\n-    public B document(String document) {\n-        this.document = document;\n-        return getThis();\n-    }\n-\n-    public B dynamic(Boolean dynamic) {\n-        this.dynamic = dynamic;\n-        return getThis();\n-    }\n-\n-    public B token(String token) {\n-        this.token = token;\n-        return getThis();\n-    }\n-\n-    public B token(Boolean token) {\n-        if (token != null) {\n-            this.token = token.toString();\n-        } else {\n-            this.token = null;\n-        }\n-        return getThis();\n-    }\n-\n-    public B accesslog(String accesslog) {\n-        this.accesslog = accesslog;\n-        return getThis();\n-    }\n-\n-    public B accesslog(Boolean accesslog) {\n-        if (accesslog != null) {\n-            this.accesslog = accesslog.toString();\n-        } else {\n-            this.accesslog = null;\n-        }\n-        return getThis();\n-    }\n-\n-    public B addProtocols(List<ProtocolConfig> protocols) {\n-        if (this.protocols == null) {\n-            this.protocols = new ArrayList<>();\n-        }\n-        this.protocols.addAll(protocols);\n-        return getThis();\n-    }\n-\n-    public B addProtocol(ProtocolConfig protocol) {\n-        if (this.protocols == null) {\n-            this.protocols = new ArrayList<>();\n-        }\n-        this.protocols.add(protocol);\n-        return getThis();\n-    }\n-\n-    public B protocolIds(String protocolIds) {\n-        this.protocolIds = protocolIds;\n-        return getThis();\n-    }\n-\n-    public B executes(Integer executes) {\n-        this.executes = executes;\n-        return getThis();\n-    }\n-\n-    public B register(Boolean register) {\n-        this.register = register;\n-        return getThis();\n-    }\n-\n-    public B warmup(Integer warmup) {\n-        this.warmup = warmup;\n-        return getThis();\n-    }\n-\n-    public  B serialization(String serialization) {\n-        this.serialization = serialization;\n-        return getThis();\n-    }\n-\n-    @Override\n-    public void build(T instance) {\n-        super.build(instance);\n-\n-        if (!StringUtils.isEmpty(version)) {\n-            instance.setVersion(version);\n-        }\n-        if (!StringUtils.isEmpty(group)) {\n-            instance.setGroup(group);\n-        }\n-        if (deprecated != null) {\n-            instance.setDeprecated(deprecated);\n-        }\n-        if (delay != null) {\n-            instance.setDelay(delay);\n-        }\n-        if (export != null) {\n-            instance.setExport(export);\n-        }\n-        if (weight != null) {\n-            instance.setWeight(weight);\n-        }\n-        if (!StringUtils.isEmpty(document)) {\n-            instance.setDocument(document);\n-        }\n-        if (dynamic != null) {\n-            instance.setDynamic(dynamic);\n-        }\n-        if (!StringUtils.isEmpty(token)) {\n-            instance.setToken(token);\n-        }\n-        if (!StringUtils.isEmpty(accesslog)) {\n-            instance.setAccesslog(accesslog);\n-        }\n-        if (protocols != null) {\n-            instance.setProtocols(protocols);\n-        }\n-        if (!StringUtils.isEmpty(protocolIds)) {\n-            instance.setProtocolIds(protocolIds);\n-        }\n-        if (executes != null) {\n-            instance.setExecutes(executes);\n-        }\n-        if (register != null) {\n-            instance.setRegister(register);\n-        }\n-        if (warmup != null) {\n-            instance.setWarmup(warmup);\n-        }\n-        if (!StringUtils.isEmpty(serialization)) {\n-            instance.setSerialization(serialization);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap.builders;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.AbstractServiceConfig;\r\n+import org.apache.dubbo.config.ProtocolConfig;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * AbstractBuilder\r\n+ *\r\n+ * @since 2.7\r\n+ */\r\n+public abstract class AbstractServiceBuilder<T extends AbstractServiceConfig, B extends AbstractServiceBuilder<T, B>>\r\n+        extends AbstractInterfaceBuilder<T, B> {\r\n+\r\n+    /**\r\n+     * The service version\r\n+     */\r\n+    protected String version;\r\n+\r\n+    /**\r\n+     * The service group\r\n+     */\r\n+    protected String group;\r\n+\r\n+    /**\r\n+     * whether the service is deprecated\r\n+     */\r\n+    protected Boolean deprecated;\r\n+\r\n+    /**\r\n+     * The time delay register service (milliseconds)\r\n+     */\r\n+    protected Integer delay;\r\n+\r\n+    /**\r\n+     * Whether to export the service\r\n+     */\r\n+    protected Boolean export;\r\n+\r\n+    /**\r\n+     * The service weight\r\n+     */\r\n+    protected Integer weight;\r\n+\r\n+    /**\r\n+     * Document center\r\n+     */\r\n+    protected String document;\r\n+\r\n+    /**\r\n+     * Whether to register as a dynamic service or not on register center, it the value is false, the status will be disabled\r\n+     * after the service registered,and it needs to be enabled manually; if you want to disable the service, you also need\r\n+     * manual processing\r\n+     */\r\n+    protected Boolean dynamic;\r\n+\r\n+    /**\r\n+     * Whether to use token\r\n+     */\r\n+    protected String token;\r\n+\r\n+    /**\r\n+     * Whether to export access logs to logs\r\n+     */\r\n+    protected String accesslog;\r\n+\r\n+    /**\r\n+     * The protocol list the service will export with\r\n+     */\r\n+    protected List<ProtocolConfig> protocols;\r\n+    protected String protocolIds;\r\n+\r\n+    // max allowed execute times\r\n+    private Integer executes;\r\n+\r\n+    /**\r\n+     * Whether to register\r\n+     */\r\n+    private Boolean register;\r\n+\r\n+    /**\r\n+     * Warm up period\r\n+     */\r\n+    private Integer warmup;\r\n+\r\n+    /**\r\n+     * The serialization type\r\n+     */\r\n+    private String serialization;\r\n+\r\n+    public B version(String version) {\r\n+        this.version = version;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B group(String group) {\r\n+        this.group = group;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B deprecated(Boolean deprecated) {\r\n+        this.deprecated = deprecated;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B delay(Integer delay) {\r\n+        this.delay = delay;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B export(Boolean export) {\r\n+        this.export = export;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B weight(Integer weight) {\r\n+        this.weight = weight;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B document(String document) {\r\n+        this.document = document;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B dynamic(Boolean dynamic) {\r\n+        this.dynamic = dynamic;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B token(String token) {\r\n+        this.token = token;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B token(Boolean token) {\r\n+        if (token != null) {\r\n+            this.token = token.toString();\r\n+        } else {\r\n+            this.token = null;\r\n+        }\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B accesslog(String accesslog) {\r\n+        this.accesslog = accesslog;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B accesslog(Boolean accesslog) {\r\n+        if (accesslog != null) {\r\n+            this.accesslog = accesslog.toString();\r\n+        } else {\r\n+            this.accesslog = null;\r\n+        }\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B addProtocols(List<ProtocolConfig> protocols) {\r\n+        if (this.protocols == null) {\r\n+            this.protocols = new ArrayList<>();\r\n+        }\r\n+        this.protocols.addAll(protocols);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B addProtocol(ProtocolConfig protocol) {\r\n+        if (this.protocols == null) {\r\n+            this.protocols = new ArrayList<>();\r\n+        }\r\n+        this.protocols.add(protocol);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B protocolIds(String protocolIds) {\r\n+        this.protocolIds = protocolIds;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B executes(Integer executes) {\r\n+        this.executes = executes;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B register(Boolean register) {\r\n+        this.register = register;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public B warmup(Integer warmup) {\r\n+        this.warmup = warmup;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public  B serialization(String serialization) {\r\n+        this.serialization = serialization;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void build(T instance) {\r\n+        super.build(instance);\r\n+\r\n+        if (!StringUtils.isEmpty(version)) {\r\n+            instance.setVersion(version);\r\n+        }\r\n+        if (!StringUtils.isEmpty(group)) {\r\n+            instance.setGroup(group);\r\n+        }\r\n+        if (deprecated != null) {\r\n+            instance.setDeprecated(deprecated);\r\n+        }\r\n+        if (delay != null) {\r\n+            instance.setDelay(delay);\r\n+        }\r\n+        if (export != null) {\r\n+            instance.setExport(export);\r\n+        }\r\n+        if (weight != null) {\r\n+            instance.setWeight(weight);\r\n+        }\r\n+        if (!StringUtils.isEmpty(document)) {\r\n+            instance.setDocument(document);\r\n+        }\r\n+        if (dynamic != null) {\r\n+            instance.setDynamic(dynamic);\r\n+        }\r\n+        if (!StringUtils.isEmpty(token)) {\r\n+            instance.setToken(token);\r\n+        }\r\n+        if (!StringUtils.isEmpty(accesslog)) {\r\n+            instance.setAccesslog(accesslog);\r\n+        }\r\n+        if (protocols != null) {\r\n+            instance.setProtocols(protocols);\r\n+        }\r\n+        if (!StringUtils.isEmpty(protocolIds)) {\r\n+            instance.setProtocolIds(protocolIds);\r\n+        }\r\n+        if (executes != null) {\r\n+            instance.setExecutes(executes);\r\n+        }\r\n+        if (register != null) {\r\n+            instance.setRegister(register);\r\n+        }\r\n+        if (warmup != null) {\r\n+            instance.setWarmup(warmup);\r\n+        }\r\n+        if (!StringUtils.isEmpty(serialization)) {\r\n+            instance.setSerialization(serialization);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/ApplicationBuilder.java", "source2": "org/apache/dubbo/config/bootstrap/builders/ApplicationBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,214 +1,214 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap.builders;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.ApplicationConfig;\n-import org.apache.dubbo.config.MonitorConfig;\n-import org.apache.dubbo.config.RegistryConfig;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.config.Constants.PRODUCTION_ENVIRONMENT;\n-\n-/**\n- * This is a builder for build {@link ApplicationConfig}.\n- * @since 2.7\n- */\n-public class ApplicationBuilder extends AbstractBuilder<ApplicationConfig, ApplicationBuilder> {\n-    private String name;\n-    private String metadata;\n-    private String version;\n-    private String owner;\n-    private String organization;\n-    private String architecture;\n-    private String environment = PRODUCTION_ENVIRONMENT;\n-    private String compiler;\n-    private String logger;\n-    private List<RegistryConfig> registries;\n-    private String registryIds;\n-    private MonitorConfig monitor;\n-    private Boolean isDefault;\n-    private String dumpDirectory;\n-    private Boolean qosEnable;\n-    private Integer qosPort;\n-    private Boolean qosAcceptForeignIp;\n-    private Map<String, String> parameters;\n-    private String shutwait;\n-    private Integer metadataServicePort;\n-\n-    public static ApplicationBuilder newBuilder() {\n-        return new ApplicationBuilder();\n-    }\n-\n-    public ApplicationBuilder name(String name) {\n-        this.name = name;\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder metadata(String metadata) {\n-        this.metadata = metadata;\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder version(String version) {\n-        this.version = version;\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder owner(String owner) {\n-        this.owner = owner;\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder organization(String organization) {\n-        this.organization = organization;\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder architecture(String architecture) {\n-        this.architecture = architecture;\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder environment(String environment) {\n-        this.environment = environment;\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder compiler(String compiler) {\n-        this.compiler = compiler;\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder logger(String logger) {\n-        this.logger = logger;\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder addRegistry(RegistryConfig registry) {\n-        if (this.registries == null) {\n-            this.registries = new ArrayList<>();\n-        }\n-        this.registries.add(registry);\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder addRegistries(List<? extends RegistryConfig> registries) {\n-        if (this.registries == null) {\n-            this.registries = new ArrayList<>();\n-        }\n-        this.registries.addAll(registries);\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder registryIds(String registryIds) {\n-        this.registryIds = registryIds;\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder monitor(MonitorConfig monitor) {\n-        this.monitor = monitor;\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder monitor(String monitor) {\n-        this.monitor = new MonitorConfig(monitor);\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder isDefault(Boolean isDefault) {\n-        this.isDefault = isDefault;\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder dumpDirectory(String dumpDirectory) {\n-        this.dumpDirectory = dumpDirectory;\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder qosEnable(Boolean qosEnable) {\n-        this.qosEnable = qosEnable;\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder qosPort(Integer qosPort) {\n-        this.qosPort = qosPort;\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder qosAcceptForeignIp(Boolean qosAcceptForeignIp) {\n-        this.qosAcceptForeignIp = qosAcceptForeignIp;\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder shutwait(String shutwait) {\n-        this.shutwait = shutwait;\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder appendParameter(String key, String value) {\n-        this.parameters = appendParameter(parameters, key, value);\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder appendParameters(Map<String, String> appendParameters) {\n-        this.parameters = appendParameters(parameters, appendParameters);\n-        return getThis();\n-    }\n-\n-    public ApplicationBuilder metadataServicePort(Integer metadataServicePort) {\n-        this.metadataServicePort = metadataServicePort;\n-        return getThis();\n-    }\n-\n-    public ApplicationConfig build() {\n-        ApplicationConfig config = new ApplicationConfig();\n-        super.build(config);\n-\n-        config.setName(name);\n-        config.setMetadataType(metadata);\n-        config.setVersion(this.version);\n-        config.setOwner(this.owner);\n-        config.setOrganization(this.organization);\n-        config.setArchitecture(this.architecture);\n-        config.setEnvironment(this.environment);\n-        config.setCompiler(this.compiler);\n-        config.setLogger(this.logger);\n-        config.setRegistries(this.registries);\n-        config.setRegistryIds(this.registryIds);\n-        config.setMonitor(this.monitor);\n-        config.setDefault(this.isDefault);\n-        config.setDumpDirectory(this.dumpDirectory);\n-        config.setQosEnable(this.qosEnable);\n-        config.setQosPort(this.qosPort);\n-        config.setQosAcceptForeignIp(this.qosAcceptForeignIp);\n-        config.setMetadataServicePort(this.metadataServicePort);\n-        config.setParameters(this.parameters);\n-        if (!StringUtils.isEmpty(shutwait)) {\n-            config.setShutwait(shutwait);\n-        }\n-        return config;\n-    }\n-\n-    @Override\n-    protected ApplicationBuilder getThis() {\n-        return this;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap.builders;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.ApplicationConfig;\r\n+import org.apache.dubbo.config.MonitorConfig;\r\n+import org.apache.dubbo.config.RegistryConfig;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.config.Constants.PRODUCTION_ENVIRONMENT;\r\n+\r\n+/**\r\n+ * This is a builder for build {@link ApplicationConfig}.\r\n+ * @since 2.7\r\n+ */\r\n+public class ApplicationBuilder extends AbstractBuilder<ApplicationConfig, ApplicationBuilder> {\r\n+    private String name;\r\n+    private String metadata;\r\n+    private String version;\r\n+    private String owner;\r\n+    private String organization;\r\n+    private String architecture;\r\n+    private String environment = PRODUCTION_ENVIRONMENT;\r\n+    private String compiler;\r\n+    private String logger;\r\n+    private List<RegistryConfig> registries;\r\n+    private String registryIds;\r\n+    private MonitorConfig monitor;\r\n+    private Boolean isDefault;\r\n+    private String dumpDirectory;\r\n+    private Boolean qosEnable;\r\n+    private Integer qosPort;\r\n+    private Boolean qosAcceptForeignIp;\r\n+    private Map<String, String> parameters;\r\n+    private String shutwait;\r\n+    private Integer metadataServicePort;\r\n+\r\n+    public static ApplicationBuilder newBuilder() {\r\n+        return new ApplicationBuilder();\r\n+    }\r\n+\r\n+    public ApplicationBuilder name(String name) {\r\n+        this.name = name;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder metadata(String metadata) {\r\n+        this.metadata = metadata;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder version(String version) {\r\n+        this.version = version;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder owner(String owner) {\r\n+        this.owner = owner;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder organization(String organization) {\r\n+        this.organization = organization;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder architecture(String architecture) {\r\n+        this.architecture = architecture;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder environment(String environment) {\r\n+        this.environment = environment;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder compiler(String compiler) {\r\n+        this.compiler = compiler;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder logger(String logger) {\r\n+        this.logger = logger;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder addRegistry(RegistryConfig registry) {\r\n+        if (this.registries == null) {\r\n+            this.registries = new ArrayList<>();\r\n+        }\r\n+        this.registries.add(registry);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder addRegistries(List<? extends RegistryConfig> registries) {\r\n+        if (this.registries == null) {\r\n+            this.registries = new ArrayList<>();\r\n+        }\r\n+        this.registries.addAll(registries);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder registryIds(String registryIds) {\r\n+        this.registryIds = registryIds;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder monitor(MonitorConfig monitor) {\r\n+        this.monitor = monitor;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder monitor(String monitor) {\r\n+        this.monitor = new MonitorConfig(monitor);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder isDefault(Boolean isDefault) {\r\n+        this.isDefault = isDefault;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder dumpDirectory(String dumpDirectory) {\r\n+        this.dumpDirectory = dumpDirectory;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder qosEnable(Boolean qosEnable) {\r\n+        this.qosEnable = qosEnable;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder qosPort(Integer qosPort) {\r\n+        this.qosPort = qosPort;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder qosAcceptForeignIp(Boolean qosAcceptForeignIp) {\r\n+        this.qosAcceptForeignIp = qosAcceptForeignIp;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder shutwait(String shutwait) {\r\n+        this.shutwait = shutwait;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder appendParameter(String key, String value) {\r\n+        this.parameters = appendParameter(parameters, key, value);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder appendParameters(Map<String, String> appendParameters) {\r\n+        this.parameters = appendParameters(parameters, appendParameters);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationBuilder metadataServicePort(Integer metadataServicePort) {\r\n+        this.metadataServicePort = metadataServicePort;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ApplicationConfig build() {\r\n+        ApplicationConfig config = new ApplicationConfig();\r\n+        super.build(config);\r\n+\r\n+        config.setName(name);\r\n+        config.setMetadataType(metadata);\r\n+        config.setVersion(this.version);\r\n+        config.setOwner(this.owner);\r\n+        config.setOrganization(this.organization);\r\n+        config.setArchitecture(this.architecture);\r\n+        config.setEnvironment(this.environment);\r\n+        config.setCompiler(this.compiler);\r\n+        config.setLogger(this.logger);\r\n+        config.setRegistries(this.registries);\r\n+        config.setRegistryIds(this.registryIds);\r\n+        config.setMonitor(this.monitor);\r\n+        config.setDefault(this.isDefault);\r\n+        config.setDumpDirectory(this.dumpDirectory);\r\n+        config.setQosEnable(this.qosEnable);\r\n+        config.setQosPort(this.qosPort);\r\n+        config.setQosAcceptForeignIp(this.qosAcceptForeignIp);\r\n+        config.setMetadataServicePort(this.metadataServicePort);\r\n+        config.setParameters(this.parameters);\r\n+        if (!StringUtils.isEmpty(shutwait)) {\r\n+            config.setShutwait(shutwait);\r\n+        }\r\n+        return config;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected ApplicationBuilder getThis() {\r\n+        return this;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/ArgumentBuilder.java", "source2": "org/apache/dubbo/config/bootstrap/builders/ArgumentBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,63 +1,63 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap.builders;\n-\n-import org.apache.dubbo.config.ArgumentConfig;\n-\n-/**\n- * This is a builder for build {@link ArgumentConfig}.\n- * @since 2.7\n- */\n-public class ArgumentBuilder {\n-    /**\n-     * The argument index: index -1 represents not set\n-     */\n-    private Integer index = -1;\n-\n-    /**\n-     * Argument type\n-     */\n-    private String type;\n-\n-    /**\n-     * Whether the argument is the callback interface\n-     */\n-    private Boolean callback;\n-\n-    public ArgumentBuilder index(Integer index) {\n-        this.index = index;\n-        return this;\n-    }\n-\n-    public ArgumentBuilder type(String type) {\n-        this.type = type;\n-        return this;\n-    }\n-\n-    public ArgumentBuilder callback(Boolean callback) {\n-        this.callback = callback;\n-        return this;\n-    }\n-\n-    public ArgumentConfig build() {\n-        ArgumentConfig argumentConfig = new ArgumentConfig();\n-        argumentConfig.setIndex(index);\n-        argumentConfig.setType(type);\n-        argumentConfig.setCallback(callback);\n-        return argumentConfig;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap.builders;\r\n+\r\n+import org.apache.dubbo.config.ArgumentConfig;\r\n+\r\n+/**\r\n+ * This is a builder for build {@link ArgumentConfig}.\r\n+ * @since 2.7\r\n+ */\r\n+public class ArgumentBuilder {\r\n+    /**\r\n+     * The argument index: index -1 represents not set\r\n+     */\r\n+    private Integer index = -1;\r\n+\r\n+    /**\r\n+     * Argument type\r\n+     */\r\n+    private String type;\r\n+\r\n+    /**\r\n+     * Whether the argument is the callback interface\r\n+     */\r\n+    private Boolean callback;\r\n+\r\n+    public ArgumentBuilder index(Integer index) {\r\n+        this.index = index;\r\n+        return this;\r\n+    }\r\n+\r\n+    public ArgumentBuilder type(String type) {\r\n+        this.type = type;\r\n+        return this;\r\n+    }\r\n+\r\n+    public ArgumentBuilder callback(Boolean callback) {\r\n+        this.callback = callback;\r\n+        return this;\r\n+    }\r\n+\r\n+    public ArgumentConfig build() {\r\n+        ArgumentConfig argumentConfig = new ArgumentConfig();\r\n+        argumentConfig.setIndex(index);\r\n+        argumentConfig.setType(type);\r\n+        argumentConfig.setCallback(callback);\r\n+        return argumentConfig;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/ConfigCenterBuilder.java", "source2": "org/apache/dubbo/config/bootstrap/builders/ConfigCenterBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,141 +1,141 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap.builders;\n-\n-import org.apache.dubbo.config.ConfigCenterConfig;\n-\n-import java.util.Map;\n-\n-/**\n- * This is a builder for build {@link ConfigCenterConfig}.\n- *\n- * @since 2.7\n- */\n-public class ConfigCenterBuilder extends AbstractBuilder<ConfigCenterConfig, ConfigCenterBuilder> {\n-\n-    private String protocol;\n-    private String address;\n-    private String cluster;\n-    private String namespace = \"dubbo\";\n-    private String group = \"dubbo\";\n-    private String username;\n-    private String password;\n-    private Long timeout = 3000L;\n-    private Boolean highestPriority = true;\n-    private Boolean check = true;\n-\n-    private String configFile = \"dubbo.properties\";\n-    private String appConfigFile;\n-\n-    private Map<String, String> parameters;\n-\n-    public ConfigCenterBuilder protocol(String protocol) {\n-        this.protocol = protocol;\n-        return getThis();\n-    }\n-\n-\tpublic ConfigCenterBuilder address(String address) {\n-        this.address = address;\n-        return getThis();\n-    }\n-\n-    public ConfigCenterBuilder cluster(String cluster) {\n-        this.cluster = cluster;\n-        return getThis();\n-    }\n-\n-    public ConfigCenterBuilder namespace(String namespace) {\n-        this.namespace = namespace;\n-        return getThis();\n-    }\n-\n-    public ConfigCenterBuilder group(String group) {\n-        this.group = group;\n-        return getThis();\n-    }\n-\n-    public ConfigCenterBuilder username(String username) {\n-        this.username = username;\n-        return getThis();\n-    }\n-\n-    public ConfigCenterBuilder password(String password) {\n-        this.password = password;\n-        return getThis();\n-    }\n-\n-    public ConfigCenterBuilder timeout(Long timeout) {\n-        this.timeout = timeout;\n-        return getThis();\n-    }\n-\n-    public ConfigCenterBuilder highestPriority(Boolean highestPriority) {\n-        this.highestPriority = highestPriority;\n-        return getThis();\n-    }\n-\n-    public ConfigCenterBuilder check(Boolean check) {\n-        this.check = check;\n-        return getThis();\n-    }\n-\n-    public ConfigCenterBuilder configFile(String configFile) {\n-        this.configFile = configFile;\n-        return getThis();\n-    }\n-\n-    public ConfigCenterBuilder appConfigFile(String appConfigFile) {\n-        this.appConfigFile = appConfigFile;\n-        return getThis();\n-    }\n-\n-    public ConfigCenterBuilder appendParameters(Map<String, String> appendParameters) {\n-        this.parameters = appendParameters(this.parameters, appendParameters);\n-        return getThis();\n-    }\n-\n-    public ConfigCenterBuilder appendParameter(String key, String value) {\n-        this.parameters = appendParameter(this.parameters, key, value);\n-        return getThis();\n-    }\n-\n-    public ConfigCenterConfig build() {\n-        ConfigCenterConfig configCenter = new ConfigCenterConfig();\n-        super.build(configCenter);\n-\n-        configCenter.setProtocol(protocol);\n-        configCenter.setAddress(address);\n-        configCenter.setCluster(cluster);\n-        configCenter.setNamespace(namespace);\n-        configCenter.setGroup(group);\n-        configCenter.setUsername(username);\n-        configCenter.setPassword(password);\n-        configCenter.setTimeout(timeout);\n-        configCenter.setHighestPriority(highestPriority);\n-        configCenter.setCheck(check);\n-        configCenter.setConfigFile(configFile);\n-        configCenter.setAppConfigFile(appConfigFile);\n-        configCenter.setParameters(parameters);\n-\n-        return configCenter;\n-    }\n-\n-    @Override\n-    protected ConfigCenterBuilder getThis() {\n-        return this;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap.builders;\r\n+\r\n+import org.apache.dubbo.config.ConfigCenterConfig;\r\n+\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * This is a builder for build {@link ConfigCenterConfig}.\r\n+ *\r\n+ * @since 2.7\r\n+ */\r\n+public class ConfigCenterBuilder extends AbstractBuilder<ConfigCenterConfig, ConfigCenterBuilder> {\r\n+\r\n+    private String protocol;\r\n+    private String address;\r\n+    private String cluster;\r\n+    private String namespace = \"dubbo\";\r\n+    private String group = \"dubbo\";\r\n+    private String username;\r\n+    private String password;\r\n+    private Long timeout = 3000L;\r\n+    private Boolean highestPriority = true;\r\n+    private Boolean check = true;\r\n+\r\n+    private String configFile = \"dubbo.properties\";\r\n+    private String appConfigFile;\r\n+\r\n+    private Map<String, String> parameters;\r\n+\r\n+    public ConfigCenterBuilder protocol(String protocol) {\r\n+        this.protocol = protocol;\r\n+        return getThis();\r\n+    }\r\n+\r\n+\tpublic ConfigCenterBuilder address(String address) {\r\n+        this.address = address;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConfigCenterBuilder cluster(String cluster) {\r\n+        this.cluster = cluster;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConfigCenterBuilder namespace(String namespace) {\r\n+        this.namespace = namespace;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConfigCenterBuilder group(String group) {\r\n+        this.group = group;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConfigCenterBuilder username(String username) {\r\n+        this.username = username;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConfigCenterBuilder password(String password) {\r\n+        this.password = password;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConfigCenterBuilder timeout(Long timeout) {\r\n+        this.timeout = timeout;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConfigCenterBuilder highestPriority(Boolean highestPriority) {\r\n+        this.highestPriority = highestPriority;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConfigCenterBuilder check(Boolean check) {\r\n+        this.check = check;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConfigCenterBuilder configFile(String configFile) {\r\n+        this.configFile = configFile;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConfigCenterBuilder appConfigFile(String appConfigFile) {\r\n+        this.appConfigFile = appConfigFile;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConfigCenterBuilder appendParameters(Map<String, String> appendParameters) {\r\n+        this.parameters = appendParameters(this.parameters, appendParameters);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConfigCenterBuilder appendParameter(String key, String value) {\r\n+        this.parameters = appendParameter(this.parameters, key, value);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConfigCenterConfig build() {\r\n+        ConfigCenterConfig configCenter = new ConfigCenterConfig();\r\n+        super.build(configCenter);\r\n+\r\n+        configCenter.setProtocol(protocol);\r\n+        configCenter.setAddress(address);\r\n+        configCenter.setCluster(cluster);\r\n+        configCenter.setNamespace(namespace);\r\n+        configCenter.setGroup(group);\r\n+        configCenter.setUsername(username);\r\n+        configCenter.setPassword(password);\r\n+        configCenter.setTimeout(timeout);\r\n+        configCenter.setHighestPriority(highestPriority);\r\n+        configCenter.setCheck(check);\r\n+        configCenter.setConfigFile(configFile);\r\n+        configCenter.setAppConfigFile(appConfigFile);\r\n+        configCenter.setParameters(parameters);\r\n+\r\n+        return configCenter;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected ConfigCenterBuilder getThis() {\r\n+        return this;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/ConsumerBuilder.java", "source2": "org/apache/dubbo/config/bootstrap/builders/ConsumerBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,118 +1,118 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap.builders;\n-\n-import org.apache.dubbo.config.ConsumerConfig;\n-\n-/**\n- * This is a builder for build {@link ConsumerConfig}.\n- *\n- * @since 2.7\n- */\n-public class ConsumerBuilder extends AbstractReferenceBuilder<ConsumerConfig, ConsumerBuilder> {\n-\n-    /**\n-     * Whether to use the default protocol\n-     */\n-    private Boolean isDefault;\n-\n-    /**\n-     * Networking framework client uses: netty, mina, etc.\n-     */\n-    private String client;\n-\n-    /**\n-     * Consumer thread pool type: cached, fixed, limit, eager\n-     */\n-    private String threadpool;\n-\n-    /**\n-     * Consumer threadpool core thread size\n-     */\n-    private Integer corethreads;\n-\n-    /**\n-     * Consumer threadpool thread size\n-     */\n-    private Integer threads;\n-\n-    /**\n-     * Consumer threadpool queue size\n-     */\n-    private Integer queues;\n-\n-    /**\n-     * By default, a TCP long-connection communication is shared between the consumer process and the provider process.\n-     * This property can be set to share multiple TCP long-connection communications. Note that only the dubbo protocol takes effect.\n-     */\n-    private Integer shareconnections;\n-\n-    public ConsumerBuilder isDefault(Boolean isDefault) {\n-        this.isDefault = isDefault;\n-        return getThis();\n-    }\n-\n-    public ConsumerBuilder client(String client) {\n-        this.client = client;\n-        return getThis();\n-    }\n-\n-    public ConsumerBuilder threadPool(String threadPool) {\n-        this.threadpool = threadPool;\n-        return getThis();\n-    }\n-\n-    public ConsumerBuilder coreThreads(Integer coreThreads) {\n-        this.corethreads = coreThreads;\n-        return getThis();\n-    }\n-\n-    public ConsumerBuilder threads(Integer threads) {\n-        this.threads = threads;\n-        return getThis();\n-    }\n-\n-    public ConsumerBuilder queues(Integer queues) {\n-        this.queues = queues;\n-        return getThis();\n-    }\n-\n-    public ConsumerBuilder shareConnections(Integer shareConnections) {\n-        this.shareconnections = shareConnections;\n-        return getThis();\n-    }\n-\n-    public ConsumerConfig build() {\n-        ConsumerConfig consumer = new ConsumerConfig();\n-        super.build(consumer);\n-\n-        consumer.setDefault(isDefault);\n-        consumer.setClient(client);\n-        consumer.setThreadpool(threadpool);\n-        consumer.setCorethreads(corethreads);\n-        consumer.setThreads(threads);\n-        consumer.setQueues(queues);\n-        consumer.setShareconnections(shareconnections);\n-\n-        return consumer;\n-    }\n-\n-    @Override\n-    protected ConsumerBuilder getThis() {\n-        return this;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap.builders;\r\n+\r\n+import org.apache.dubbo.config.ConsumerConfig;\r\n+\r\n+/**\r\n+ * This is a builder for build {@link ConsumerConfig}.\r\n+ *\r\n+ * @since 2.7\r\n+ */\r\n+public class ConsumerBuilder extends AbstractReferenceBuilder<ConsumerConfig, ConsumerBuilder> {\r\n+\r\n+    /**\r\n+     * Whether to use the default protocol\r\n+     */\r\n+    private Boolean isDefault;\r\n+\r\n+    /**\r\n+     * Networking framework client uses: netty, mina, etc.\r\n+     */\r\n+    private String client;\r\n+\r\n+    /**\r\n+     * Consumer thread pool type: cached, fixed, limit, eager\r\n+     */\r\n+    private String threadpool;\r\n+\r\n+    /**\r\n+     * Consumer threadpool core thread size\r\n+     */\r\n+    private Integer corethreads;\r\n+\r\n+    /**\r\n+     * Consumer threadpool thread size\r\n+     */\r\n+    private Integer threads;\r\n+\r\n+    /**\r\n+     * Consumer threadpool queue size\r\n+     */\r\n+    private Integer queues;\r\n+\r\n+    /**\r\n+     * By default, a TCP long-connection communication is shared between the consumer process and the provider process.\r\n+     * This property can be set to share multiple TCP long-connection communications. Note that only the dubbo protocol takes effect.\r\n+     */\r\n+    private Integer shareconnections;\r\n+\r\n+    public ConsumerBuilder isDefault(Boolean isDefault) {\r\n+        this.isDefault = isDefault;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConsumerBuilder client(String client) {\r\n+        this.client = client;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConsumerBuilder threadPool(String threadPool) {\r\n+        this.threadpool = threadPool;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConsumerBuilder coreThreads(Integer coreThreads) {\r\n+        this.corethreads = coreThreads;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConsumerBuilder threads(Integer threads) {\r\n+        this.threads = threads;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConsumerBuilder queues(Integer queues) {\r\n+        this.queues = queues;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConsumerBuilder shareConnections(Integer shareConnections) {\r\n+        this.shareconnections = shareConnections;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ConsumerConfig build() {\r\n+        ConsumerConfig consumer = new ConsumerConfig();\r\n+        super.build(consumer);\r\n+\r\n+        consumer.setDefault(isDefault);\r\n+        consumer.setClient(client);\r\n+        consumer.setThreadpool(threadpool);\r\n+        consumer.setCorethreads(corethreads);\r\n+        consumer.setThreads(threads);\r\n+        consumer.setQueues(queues);\r\n+        consumer.setShareconnections(shareconnections);\r\n+\r\n+        return consumer;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected ConsumerBuilder getThis() {\r\n+        return this;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/MetadataReportBuilder.java", "source2": "org/apache/dubbo/config/bootstrap/builders/MetadataReportBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,144 +1,144 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap.builders;\n-\n-import org.apache.dubbo.config.MetadataReportConfig;\n-\n-import java.util.Map;\n-\n-/**\n- * This is a builder for build {@link MetadataReportConfig}.\n- *\n- * @since 2.7\n- */\n-public class MetadataReportBuilder extends AbstractBuilder<MetadataReportConfig, MetadataReportBuilder> {\n-\n-    // Register center address\n-    private String address;\n-\n-    // Username to login register center\n-    private String username;\n-\n-    // Password to login register center\n-    private String password;\n-\n-    // Request timeout in milliseconds for register center\n-    private Integer timeout;\n-\n-    /**\n-     * The group the metadata in . It is the same as registry\n-     */\n-    private String group;\n-\n-    // Customized parameters\n-    private Map<String, String> parameters;\n-\n-    private Integer retryTimes;\n-\n-    private Integer retryPeriod;\n-    /**\n-     * By default the metadatastore will store full metadata repeatedly every day .\n-     */\n-    private Boolean cycleReport;\n-\n-    /**\n-     * Sync report, default async\n-     */\n-    private Boolean syncReport;\n-\n-    public static MetadataReportBuilder newBuilder() {\n-        return new MetadataReportBuilder();\n-    }\n-\n-    public MetadataReportBuilder address(String address) {\n-        this.address = address;\n-        return getThis();\n-    }\n-\n-    public MetadataReportBuilder username(String username) {\n-        this.username = username;\n-        return getThis();\n-    }\n-\n-    public MetadataReportBuilder password(String password) {\n-        this.password = password;\n-        return getThis();\n-    }\n-\n-    public MetadataReportBuilder timeout(Integer timeout) {\n-        this.timeout = timeout;\n-        return getThis();\n-    }\n-\n-    public MetadataReportBuilder group(String group) {\n-        this.group = group;\n-        return getThis();\n-    }\n-\n-    public MetadataReportBuilder appendParameters(Map<String, String> appendParameters) {\n-        this.parameters = appendParameters(this.parameters, appendParameters);\n-        return getThis();\n-    }\n-\n-    public MetadataReportBuilder appendParameter(String key, String value) {\n-        this.parameters = appendParameter(this.parameters, key, value);\n-        return getThis();\n-    }\n-\n-    public MetadataReportBuilder retryTimes(Integer retryTimes) {\n-        this.retryTimes = retryTimes;\n-        return getThis();\n-    }\n-\n-    public MetadataReportBuilder retryPeriod(Integer retryPeriod) {\n-        this.retryPeriod = retryPeriod;\n-        return getThis();\n-    }\n-\n-    public MetadataReportBuilder cycleReport(Boolean cycleReport) {\n-        this.cycleReport = cycleReport;\n-        return getThis();\n-    }\n-\n-    public MetadataReportBuilder syncReport(Boolean syncReport) {\n-        this.syncReport = syncReport;\n-        return getThis();\n-    }\n-\n-    public MetadataReportConfig build() {\n-        MetadataReportConfig metadataReport = new MetadataReportConfig();\n-        super.build(metadataReport);\n-\n-        metadataReport.setAddress(address);\n-        metadataReport.setUsername(username);\n-        metadataReport.setPassword(password);\n-        metadataReport.setTimeout(timeout);\n-        metadataReport.setGroup(group);\n-        metadataReport.setParameters(parameters);\n-        metadataReport.setRetryTimes(retryTimes);\n-        metadataReport.setRetryPeriod(retryPeriod);\n-        metadataReport.setCycleReport(cycleReport);\n-        metadataReport.setSyncReport(syncReport);\n-\n-        return metadataReport;\n-    }\n-\n-    @Override\n-    protected MetadataReportBuilder getThis() {\n-        return this;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap.builders;\r\n+\r\n+import org.apache.dubbo.config.MetadataReportConfig;\r\n+\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * This is a builder for build {@link MetadataReportConfig}.\r\n+ *\r\n+ * @since 2.7\r\n+ */\r\n+public class MetadataReportBuilder extends AbstractBuilder<MetadataReportConfig, MetadataReportBuilder> {\r\n+\r\n+    // Register center address\r\n+    private String address;\r\n+\r\n+    // Username to login register center\r\n+    private String username;\r\n+\r\n+    // Password to login register center\r\n+    private String password;\r\n+\r\n+    // Request timeout in milliseconds for register center\r\n+    private Integer timeout;\r\n+\r\n+    /**\r\n+     * The group the metadata in . It is the same as registry\r\n+     */\r\n+    private String group;\r\n+\r\n+    // Customized parameters\r\n+    private Map<String, String> parameters;\r\n+\r\n+    private Integer retryTimes;\r\n+\r\n+    private Integer retryPeriod;\r\n+    /**\r\n+     * By default the metadatastore will store full metadata repeatedly every day .\r\n+     */\r\n+    private Boolean cycleReport;\r\n+\r\n+    /**\r\n+     * Sync report, default async\r\n+     */\r\n+    private Boolean syncReport;\r\n+\r\n+    public static MetadataReportBuilder newBuilder() {\r\n+        return new MetadataReportBuilder();\r\n+    }\r\n+\r\n+    public MetadataReportBuilder address(String address) {\r\n+        this.address = address;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MetadataReportBuilder username(String username) {\r\n+        this.username = username;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MetadataReportBuilder password(String password) {\r\n+        this.password = password;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MetadataReportBuilder timeout(Integer timeout) {\r\n+        this.timeout = timeout;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MetadataReportBuilder group(String group) {\r\n+        this.group = group;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MetadataReportBuilder appendParameters(Map<String, String> appendParameters) {\r\n+        this.parameters = appendParameters(this.parameters, appendParameters);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MetadataReportBuilder appendParameter(String key, String value) {\r\n+        this.parameters = appendParameter(this.parameters, key, value);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MetadataReportBuilder retryTimes(Integer retryTimes) {\r\n+        this.retryTimes = retryTimes;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MetadataReportBuilder retryPeriod(Integer retryPeriod) {\r\n+        this.retryPeriod = retryPeriod;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MetadataReportBuilder cycleReport(Boolean cycleReport) {\r\n+        this.cycleReport = cycleReport;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MetadataReportBuilder syncReport(Boolean syncReport) {\r\n+        this.syncReport = syncReport;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MetadataReportConfig build() {\r\n+        MetadataReportConfig metadataReport = new MetadataReportConfig();\r\n+        super.build(metadataReport);\r\n+\r\n+        metadataReport.setAddress(address);\r\n+        metadataReport.setUsername(username);\r\n+        metadataReport.setPassword(password);\r\n+        metadataReport.setTimeout(timeout);\r\n+        metadataReport.setGroup(group);\r\n+        metadataReport.setParameters(parameters);\r\n+        metadataReport.setRetryTimes(retryTimes);\r\n+        metadataReport.setRetryPeriod(retryPeriod);\r\n+        metadataReport.setCycleReport(cycleReport);\r\n+        metadataReport.setSyncReport(syncReport);\r\n+\r\n+        return metadataReport;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected MetadataReportBuilder getThis() {\r\n+        return this;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/MethodBuilder.java", "source2": "org/apache/dubbo/config/bootstrap/builders/MethodBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,237 +1,237 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap.builders;\n-\n-import org.apache.dubbo.config.ArgumentConfig;\n-import org.apache.dubbo.config.MethodConfig;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * This is a builder for build {@link MethodConfig}.\n- *\n- * @since 2.7\n- */\n-public class MethodBuilder extends AbstractMethodBuilder<MethodConfig, MethodBuilder> {\n-    /**\n-     * The method name\n-     */\n-    private String name;\n-\n-    /**\n-     * Stat\n-     */\n-    private Integer stat;\n-\n-    /**\n-     * Whether to retry\n-     */\n-    private Boolean retry;\n-\n-    /**\n-     * If it's reliable\n-     */\n-    private Boolean reliable;\n-\n-    /**\n-     * Thread limits for method invocations\n-     */\n-    private Integer executes;\n-\n-    /**\n-     * If it's deprecated\n-     */\n-    private Boolean deprecated;\n-\n-    /**\n-     * Whether to enable sticky\n-     */\n-    private Boolean sticky;\n-\n-    /**\n-     * Whether need to return\n-     */\n-    private Boolean isReturn;\n-\n-    /**\n-     * Callback instance when async-call is invoked\n-     */\n-    private Object oninvoke;\n-\n-    /**\n-     * Callback method when async-call is invoked\n-     */\n-    private String oninvokeMethod;\n-\n-    /**\n-     * Callback instance when async-call is returned\n-     */\n-    private Object onreturn;\n-\n-    /**\n-     * Callback method when async-call is returned\n-     */\n-    private String onreturnMethod;\n-\n-    /**\n-     * Callback instance when async-call has exception thrown\n-     */\n-    private Object onthrow;\n-\n-    /**\n-     * Callback method when async-call has exception thrown\n-     */\n-    private String onthrowMethod;\n-\n-    /**\n-     * The method arguments\n-     */\n-    private List<ArgumentConfig> arguments;\n-\n-    /**\n-     * These properties come from MethodConfig's parent Config module, they will neither be collected directly from xml or API nor be delivered to url\n-     */\n-    private String service;\n-    private String serviceId;\n-\n-    public MethodBuilder name(String name) {\n-        this.name = name;\n-        return getThis();\n-    }\n-\n-    public MethodBuilder stat(Integer stat) {\n-        this.stat = stat;\n-        return getThis();\n-    }\n-\n-    public MethodBuilder retry(Boolean retry) {\n-        this.retry = retry;\n-        return getThis();\n-    }\n-\n-    public MethodBuilder reliable(Boolean reliable) {\n-        this.reliable = reliable;\n-        return getThis();\n-    }\n-\n-    public MethodBuilder executes(Integer executes) {\n-        this.executes = executes;\n-        return getThis();\n-    }\n-\n-    public MethodBuilder deprecated(Boolean deprecated) {\n-        this.deprecated = deprecated;\n-        return getThis();\n-    }\n-\n-    public MethodBuilder sticky(Boolean sticky) {\n-        this.sticky = sticky;\n-        return getThis();\n-    }\n-\n-    public MethodBuilder isReturn(Boolean isReturn) {\n-        this.isReturn = isReturn;\n-        return getThis();\n-    }\n-\n-    public MethodBuilder oninvoke(Object oninvoke) {\n-        this.oninvoke = oninvoke;\n-        return getThis();\n-    }\n-\n-    public MethodBuilder oninvokeMethod(String oninvokeMethod) {\n-        this.oninvokeMethod = oninvokeMethod;\n-        return getThis();\n-    }\n-\n-    public MethodBuilder onreturn(Object onreturn) {\n-        this.onreturn = onreturn;\n-        return getThis();\n-    }\n-\n-    public MethodBuilder onreturnMethod(String onreturnMethod) {\n-        this.onreturnMethod = onreturnMethod;\n-        return getThis();\n-    }\n-\n-    public MethodBuilder onthrow(Object onthrow) {\n-        this.onthrow = onthrow;\n-        return getThis();\n-    }\n-\n-    public MethodBuilder onthrowMethod(String onthrowMethod) {\n-        this.onthrowMethod = onthrowMethod;\n-        return getThis();\n-    }\n-\n-    public MethodBuilder addArguments(List<? extends ArgumentConfig> arguments) {\n-        if (this.arguments == null) {\n-            this.arguments = new ArrayList<>();\n-        }\n-        this.arguments.addAll(arguments);\n-        return getThis();\n-    }\n-\n-    public MethodBuilder addArgument(ArgumentConfig argument) {\n-        if (this.arguments == null) {\n-            this.arguments = new ArrayList<>();\n-        }\n-        this.arguments.add(argument);\n-        return getThis();\n-    }\n-\n-    public MethodBuilder service(String service) {\n-        this.service = service;\n-        return getThis();\n-    }\n-\n-    public MethodBuilder serviceId(String serviceId) {\n-        this.serviceId = serviceId;\n-        return getThis();\n-    }\n-\n-    public MethodConfig build() {\n-        MethodConfig methodConfig = new MethodConfig();\n-        super.build(methodConfig);\n-\n-        methodConfig.setArguments(arguments);\n-        methodConfig.setDeprecated(deprecated);\n-        methodConfig.setExecutes(executes);\n-        methodConfig.setName(name);\n-        methodConfig.setOninvoke(oninvoke);\n-        methodConfig.setOninvokeMethod(oninvokeMethod);\n-        methodConfig.setOnreturn(onreturn);\n-        methodConfig.setOnreturnMethod(onreturnMethod);\n-        methodConfig.setOnthrow(onthrow);\n-        methodConfig.setOnthrowMethod(onthrowMethod);\n-        methodConfig.setReturn(isReturn);\n-        methodConfig.setService(service);\n-        methodConfig.setServiceId(serviceId);\n-        methodConfig.setSticky(sticky);\n-        methodConfig.setReliable(reliable);\n-        methodConfig.setStat(stat);\n-        methodConfig.setRetry(retry);\n-\n-        return methodConfig;\n-    }\n-\n-    @Override\n-    protected MethodBuilder getThis() {\n-        return this;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap.builders;\r\n+\r\n+import org.apache.dubbo.config.ArgumentConfig;\r\n+import org.apache.dubbo.config.MethodConfig;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * This is a builder for build {@link MethodConfig}.\r\n+ *\r\n+ * @since 2.7\r\n+ */\r\n+public class MethodBuilder extends AbstractMethodBuilder<MethodConfig, MethodBuilder> {\r\n+    /**\r\n+     * The method name\r\n+     */\r\n+    private String name;\r\n+\r\n+    /**\r\n+     * Stat\r\n+     */\r\n+    private Integer stat;\r\n+\r\n+    /**\r\n+     * Whether to retry\r\n+     */\r\n+    private Boolean retry;\r\n+\r\n+    /**\r\n+     * If it's reliable\r\n+     */\r\n+    private Boolean reliable;\r\n+\r\n+    /**\r\n+     * Thread limits for method invocations\r\n+     */\r\n+    private Integer executes;\r\n+\r\n+    /**\r\n+     * If it's deprecated\r\n+     */\r\n+    private Boolean deprecated;\r\n+\r\n+    /**\r\n+     * Whether to enable sticky\r\n+     */\r\n+    private Boolean sticky;\r\n+\r\n+    /**\r\n+     * Whether need to return\r\n+     */\r\n+    private Boolean isReturn;\r\n+\r\n+    /**\r\n+     * Callback instance when async-call is invoked\r\n+     */\r\n+    private Object oninvoke;\r\n+\r\n+    /**\r\n+     * Callback method when async-call is invoked\r\n+     */\r\n+    private String oninvokeMethod;\r\n+\r\n+    /**\r\n+     * Callback instance when async-call is returned\r\n+     */\r\n+    private Object onreturn;\r\n+\r\n+    /**\r\n+     * Callback method when async-call is returned\r\n+     */\r\n+    private String onreturnMethod;\r\n+\r\n+    /**\r\n+     * Callback instance when async-call has exception thrown\r\n+     */\r\n+    private Object onthrow;\r\n+\r\n+    /**\r\n+     * Callback method when async-call has exception thrown\r\n+     */\r\n+    private String onthrowMethod;\r\n+\r\n+    /**\r\n+     * The method arguments\r\n+     */\r\n+    private List<ArgumentConfig> arguments;\r\n+\r\n+    /**\r\n+     * These properties come from MethodConfig's parent Config module, they will neither be collected directly from xml or API nor be delivered to url\r\n+     */\r\n+    private String service;\r\n+    private String serviceId;\r\n+\r\n+    public MethodBuilder name(String name) {\r\n+        this.name = name;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MethodBuilder stat(Integer stat) {\r\n+        this.stat = stat;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MethodBuilder retry(Boolean retry) {\r\n+        this.retry = retry;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MethodBuilder reliable(Boolean reliable) {\r\n+        this.reliable = reliable;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MethodBuilder executes(Integer executes) {\r\n+        this.executes = executes;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MethodBuilder deprecated(Boolean deprecated) {\r\n+        this.deprecated = deprecated;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MethodBuilder sticky(Boolean sticky) {\r\n+        this.sticky = sticky;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MethodBuilder isReturn(Boolean isReturn) {\r\n+        this.isReturn = isReturn;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MethodBuilder oninvoke(Object oninvoke) {\r\n+        this.oninvoke = oninvoke;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MethodBuilder oninvokeMethod(String oninvokeMethod) {\r\n+        this.oninvokeMethod = oninvokeMethod;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MethodBuilder onreturn(Object onreturn) {\r\n+        this.onreturn = onreturn;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MethodBuilder onreturnMethod(String onreturnMethod) {\r\n+        this.onreturnMethod = onreturnMethod;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MethodBuilder onthrow(Object onthrow) {\r\n+        this.onthrow = onthrow;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MethodBuilder onthrowMethod(String onthrowMethod) {\r\n+        this.onthrowMethod = onthrowMethod;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MethodBuilder addArguments(List<? extends ArgumentConfig> arguments) {\r\n+        if (this.arguments == null) {\r\n+            this.arguments = new ArrayList<>();\r\n+        }\r\n+        this.arguments.addAll(arguments);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MethodBuilder addArgument(ArgumentConfig argument) {\r\n+        if (this.arguments == null) {\r\n+            this.arguments = new ArrayList<>();\r\n+        }\r\n+        this.arguments.add(argument);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MethodBuilder service(String service) {\r\n+        this.service = service;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MethodBuilder serviceId(String serviceId) {\r\n+        this.serviceId = serviceId;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MethodConfig build() {\r\n+        MethodConfig methodConfig = new MethodConfig();\r\n+        super.build(methodConfig);\r\n+\r\n+        methodConfig.setArguments(arguments);\r\n+        methodConfig.setDeprecated(deprecated);\r\n+        methodConfig.setExecutes(executes);\r\n+        methodConfig.setName(name);\r\n+        methodConfig.setOninvoke(oninvoke);\r\n+        methodConfig.setOninvokeMethod(oninvokeMethod);\r\n+        methodConfig.setOnreturn(onreturn);\r\n+        methodConfig.setOnreturnMethod(onreturnMethod);\r\n+        methodConfig.setOnthrow(onthrow);\r\n+        methodConfig.setOnthrowMethod(onthrowMethod);\r\n+        methodConfig.setReturn(isReturn);\r\n+        methodConfig.setService(service);\r\n+        methodConfig.setServiceId(serviceId);\r\n+        methodConfig.setSticky(sticky);\r\n+        methodConfig.setReliable(reliable);\r\n+        methodConfig.setStat(stat);\r\n+        methodConfig.setRetry(retry);\r\n+\r\n+        return methodConfig;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected MethodBuilder getThis() {\r\n+        return this;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/ModuleBuilder.java", "source2": "org/apache/dubbo/config/bootstrap/builders/ModuleBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,132 +1,132 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap.builders;\n-\n-import org.apache.dubbo.config.ModuleConfig;\n-import org.apache.dubbo.config.MonitorConfig;\n-import org.apache.dubbo.config.RegistryConfig;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * This is a builder for build {@link ModuleConfig}.\n- *\n- * @since 2.7\n- */\n-public class ModuleBuilder extends AbstractBuilder<ModuleConfig, ModuleBuilder> {\n-    /**\n-     * Module name\n-     */\n-    private String name;\n-\n-    /**\n-     * Module version\n-     */\n-    private String version;\n-\n-    /**\n-     * Module owner\n-     */\n-    private String owner;\n-\n-    /**\n-     * Module's organization\n-     */\n-    private String organization;\n-\n-    /**\n-     * Registry centers\n-     */\n-    private List<RegistryConfig> registries;\n-\n-    /**\n-     * Monitor center\n-     */\n-    private MonitorConfig monitor;\n-\n-    /**\n-     * If it's default\n-     */\n-    private Boolean isDefault;\n-\n-    public ModuleBuilder name(String name) {\n-        this.name = name;\n-        return getThis();\n-    }\n-\n-    public ModuleBuilder version(String version) {\n-        this.version = version;\n-        return getThis();\n-    }\n-\n-    public ModuleBuilder owner(String owner) {\n-        this.owner = owner;\n-        return getThis();\n-    }\n-\n-    public ModuleBuilder organization(String organization) {\n-        this.organization = organization;\n-        return getThis();\n-    }\n-\n-    public ModuleBuilder addRegistries(List<? extends RegistryConfig> registries) {\n-        if (this.registries == null) {\n-            this.registries = new ArrayList<>();\n-        }\n-        this.registries.addAll(registries);\n-        return getThis();\n-    }\n-\n-    public ModuleBuilder addRegistry(RegistryConfig registry) {\n-        if (this.registries == null) {\n-            this.registries = new ArrayList<>();\n-        }\n-        this.registries.add(registry);\n-        return getThis();\n-    }\n-\n-    public ModuleBuilder monitor(MonitorConfig monitor) {\n-        this.monitor = monitor;\n-        return getThis();\n-    }\n-\n-    public ModuleBuilder isDefault(Boolean isDefault) {\n-        this.isDefault = isDefault;\n-        return getThis();\n-    }\n-\n-    public ModuleConfig build() {\n-        ModuleConfig moduleConfig = new ModuleConfig();\n-        super.build(moduleConfig);\n-\n-        moduleConfig.setDefault(isDefault);\n-        moduleConfig.setMonitor(monitor);\n-        moduleConfig.setName(name);\n-        moduleConfig.setOrganization(organization);\n-        moduleConfig.setOwner(owner);\n-        moduleConfig.setRegistries(registries);\n-        moduleConfig.setVersion(version);\n-\n-        return moduleConfig;\n-    }\n-\n-    @Override\n-    protected ModuleBuilder getThis() {\n-        return this;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap.builders;\r\n+\r\n+import org.apache.dubbo.config.ModuleConfig;\r\n+import org.apache.dubbo.config.MonitorConfig;\r\n+import org.apache.dubbo.config.RegistryConfig;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * This is a builder for build {@link ModuleConfig}.\r\n+ *\r\n+ * @since 2.7\r\n+ */\r\n+public class ModuleBuilder extends AbstractBuilder<ModuleConfig, ModuleBuilder> {\r\n+    /**\r\n+     * Module name\r\n+     */\r\n+    private String name;\r\n+\r\n+    /**\r\n+     * Module version\r\n+     */\r\n+    private String version;\r\n+\r\n+    /**\r\n+     * Module owner\r\n+     */\r\n+    private String owner;\r\n+\r\n+    /**\r\n+     * Module's organization\r\n+     */\r\n+    private String organization;\r\n+\r\n+    /**\r\n+     * Registry centers\r\n+     */\r\n+    private List<RegistryConfig> registries;\r\n+\r\n+    /**\r\n+     * Monitor center\r\n+     */\r\n+    private MonitorConfig monitor;\r\n+\r\n+    /**\r\n+     * If it's default\r\n+     */\r\n+    private Boolean isDefault;\r\n+\r\n+    public ModuleBuilder name(String name) {\r\n+        this.name = name;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ModuleBuilder version(String version) {\r\n+        this.version = version;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ModuleBuilder owner(String owner) {\r\n+        this.owner = owner;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ModuleBuilder organization(String organization) {\r\n+        this.organization = organization;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ModuleBuilder addRegistries(List<? extends RegistryConfig> registries) {\r\n+        if (this.registries == null) {\r\n+            this.registries = new ArrayList<>();\r\n+        }\r\n+        this.registries.addAll(registries);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ModuleBuilder addRegistry(RegistryConfig registry) {\r\n+        if (this.registries == null) {\r\n+            this.registries = new ArrayList<>();\r\n+        }\r\n+        this.registries.add(registry);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ModuleBuilder monitor(MonitorConfig monitor) {\r\n+        this.monitor = monitor;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ModuleBuilder isDefault(Boolean isDefault) {\r\n+        this.isDefault = isDefault;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ModuleConfig build() {\r\n+        ModuleConfig moduleConfig = new ModuleConfig();\r\n+        super.build(moduleConfig);\r\n+\r\n+        moduleConfig.setDefault(isDefault);\r\n+        moduleConfig.setMonitor(monitor);\r\n+        moduleConfig.setName(name);\r\n+        moduleConfig.setOrganization(organization);\r\n+        moduleConfig.setOwner(owner);\r\n+        moduleConfig.setRegistries(registries);\r\n+        moduleConfig.setVersion(version);\r\n+\r\n+        return moduleConfig;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected ModuleBuilder getThis() {\r\n+        return this;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/MonitorBuilder.java", "source2": "org/apache/dubbo/config/bootstrap/builders/MonitorBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,137 +1,137 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap.builders;\n-\n-import org.apache.dubbo.config.MonitorConfig;\n-\n-import java.util.Map;\n-\n-/**\n- * This is a builder for build {@link MonitorConfig}.\n- *\n- * @since 2.7\n- */\n-public class MonitorBuilder extends AbstractBuilder<MonitorConfig, MonitorBuilder> {\n-    /**\n-     * The protocol of the monitor, if the value is registry, it will search the monitor address from the registry center,\n-     * otherwise, it will directly connect to the monitor center\n-     */\n-    private String protocol;\n-\n-    /**\n-     * The monitor address\n-     */\n-    private String address;\n-\n-    /**\n-     * The monitor user name\n-     */\n-    private String username;\n-\n-    /**\n-     * The password\n-     */\n-    private String password;\n-\n-    private String group;\n-\n-    private String version;\n-\n-    private String interval;\n-\n-    /**\n-     * customized parameters\n-     */\n-    private Map<String, String> parameters;\n-\n-    /**\n-     * If it's default\n-     */\n-    private Boolean isDefault;\n-\n-    public MonitorBuilder protocol(String protocol) {\n-        this.protocol = protocol;\n-        return getThis();\n-    }\n-\n-    public MonitorBuilder address(String address) {\n-        this.address = address;\n-        return getThis();\n-    }\n-\n-    public MonitorBuilder username(String username) {\n-        this.username = username;\n-        return getThis();\n-    }\n-\n-    public MonitorBuilder password(String password) {\n-        this.password = password;\n-        return getThis();\n-    }\n-\n-    public MonitorBuilder group(String group) {\n-        this.group = group;\n-        return getThis();\n-    }\n-\n-    public MonitorBuilder version(String version) {\n-        this.version = version;\n-        return getThis();\n-    }\n-\n-    public MonitorBuilder interval(String interval) {\n-        this.interval = interval;\n-        return getThis();\n-    }\n-\n-    public MonitorBuilder isDefault(Boolean isDefault) {\n-        this.isDefault = isDefault;\n-        return getThis();\n-    }\n-\n-    public MonitorBuilder appendParameter(String key, String value) {\n-        this.parameters = appendParameter(parameters, key, value);\n-        return getThis();\n-    }\n-\n-    public MonitorBuilder appendParameters(Map<String, String> appendParameters) {\n-        this.parameters = appendParameters(parameters, appendParameters);\n-        return getThis();\n-    }\n-\n-    public MonitorConfig build() {\n-        MonitorConfig monitorConfig = new MonitorConfig();\n-        super.build(monitorConfig);\n-\n-        monitorConfig.setProtocol(protocol);\n-        monitorConfig.setAddress(address);\n-        monitorConfig.setUsername(username);\n-        monitorConfig.setPassword(password);\n-        monitorConfig.setGroup(group);\n-        monitorConfig.setVersion(version);\n-        monitorConfig.setInterval(interval);\n-        monitorConfig.setParameters(parameters);\n-        monitorConfig.setDefault(isDefault);\n-\n-        return monitorConfig;\n-    }\n-\n-    @Override\n-    protected MonitorBuilder getThis() {\n-        return this;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap.builders;\r\n+\r\n+import org.apache.dubbo.config.MonitorConfig;\r\n+\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * This is a builder for build {@link MonitorConfig}.\r\n+ *\r\n+ * @since 2.7\r\n+ */\r\n+public class MonitorBuilder extends AbstractBuilder<MonitorConfig, MonitorBuilder> {\r\n+    /**\r\n+     * The protocol of the monitor, if the value is registry, it will search the monitor address from the registry center,\r\n+     * otherwise, it will directly connect to the monitor center\r\n+     */\r\n+    private String protocol;\r\n+\r\n+    /**\r\n+     * The monitor address\r\n+     */\r\n+    private String address;\r\n+\r\n+    /**\r\n+     * The monitor user name\r\n+     */\r\n+    private String username;\r\n+\r\n+    /**\r\n+     * The password\r\n+     */\r\n+    private String password;\r\n+\r\n+    private String group;\r\n+\r\n+    private String version;\r\n+\r\n+    private String interval;\r\n+\r\n+    /**\r\n+     * customized parameters\r\n+     */\r\n+    private Map<String, String> parameters;\r\n+\r\n+    /**\r\n+     * If it's default\r\n+     */\r\n+    private Boolean isDefault;\r\n+\r\n+    public MonitorBuilder protocol(String protocol) {\r\n+        this.protocol = protocol;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MonitorBuilder address(String address) {\r\n+        this.address = address;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MonitorBuilder username(String username) {\r\n+        this.username = username;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MonitorBuilder password(String password) {\r\n+        this.password = password;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MonitorBuilder group(String group) {\r\n+        this.group = group;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MonitorBuilder version(String version) {\r\n+        this.version = version;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MonitorBuilder interval(String interval) {\r\n+        this.interval = interval;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MonitorBuilder isDefault(Boolean isDefault) {\r\n+        this.isDefault = isDefault;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MonitorBuilder appendParameter(String key, String value) {\r\n+        this.parameters = appendParameter(parameters, key, value);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MonitorBuilder appendParameters(Map<String, String> appendParameters) {\r\n+        this.parameters = appendParameters(parameters, appendParameters);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public MonitorConfig build() {\r\n+        MonitorConfig monitorConfig = new MonitorConfig();\r\n+        super.build(monitorConfig);\r\n+\r\n+        monitorConfig.setProtocol(protocol);\r\n+        monitorConfig.setAddress(address);\r\n+        monitorConfig.setUsername(username);\r\n+        monitorConfig.setPassword(password);\r\n+        monitorConfig.setGroup(group);\r\n+        monitorConfig.setVersion(version);\r\n+        monitorConfig.setInterval(interval);\r\n+        monitorConfig.setParameters(parameters);\r\n+        monitorConfig.setDefault(isDefault);\r\n+\r\n+        return monitorConfig;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected MonitorBuilder getThis() {\r\n+        return this;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/ProtocolBuilder.java", "source2": "org/apache/dubbo/config/bootstrap/builders/ProtocolBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,427 +1,427 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap.builders;\n-\n-import org.apache.dubbo.config.ProtocolConfig;\n-\n-import java.util.Map;\n-\n-/**\n- * This is a builder for build {@link ProtocolConfig}.\n- *\n- * @since 2.7\n- */\n-public class ProtocolBuilder extends AbstractBuilder<ProtocolConfig, ProtocolBuilder> {\n-    /**\n-     * Protocol name\n-     */\n-    private String name;\n-\n-    /**\n-     * Service ip address (when there are multiple network cards available)\n-     */\n-    private String host;\n-\n-    /**\n-     * Service port\n-     */\n-    private Integer port;\n-\n-    /**\n-     * Context path\n-     */\n-    private String contextpath;\n-\n-    /**\n-     * Thread pool\n-     */\n-    private String threadpool;\n-\n-    /**\n-     * Thread pool core thread size\n-     */\n-    private Integer corethreads;\n-\n-    /**\n-     * Thread pool size (fixed size)\n-     */\n-    private Integer threads;\n-\n-    /**\n-     * IO thread pool size (fixed size)\n-     */\n-    private Integer iothreads;\n-\n-    /**\n-     * Thread pool's queue length\n-     */\n-    private Integer queues;\n-\n-    /**\n-     * Max acceptable connections\n-     */\n-    private Integer accepts;\n-\n-    /**\n-     * Protocol codec\n-     */\n-    private String codec;\n-\n-    /**\n-     * Serialization\n-     */\n-    private String serialization;\n-\n-    /**\n-     * Charset\n-     */\n-    private String charset;\n-\n-    /**\n-     * Payload max length\n-     */\n-    private Integer payload;\n-\n-    /**\n-     * Buffer size\n-     */\n-    private Integer buffer;\n-\n-    /**\n-     * Heartbeat interval\n-     */\n-    private Integer heartbeat;\n-\n-    /**\n-     * Access log\n-     */\n-    private String accesslog;\n-\n-    /**\n-     * Transporter\n-     */\n-    private String transporter;\n-\n-    /**\n-     * How information is exchanged\n-     */\n-    private String exchanger;\n-\n-    /**\n-     * Thread dispatch mode\n-     */\n-    private String dispatcher;\n-\n-    /**\n-     * Networker\n-     */\n-    private String networker;\n-\n-    /**\n-     * Sever impl\n-     */\n-    private String server;\n-\n-    /**\n-     * Client impl\n-     */\n-    private String client;\n-\n-    /**\n-     * Supported telnet commands, separated with comma.\n-     */\n-    private String telnet;\n-\n-    /**\n-     * Command line prompt\n-     */\n-    private String prompt;\n-\n-    /**\n-     * Status check\n-     */\n-    private String status;\n-\n-    /**\n-     * Whether to register\n-     */\n-    private Boolean register;\n-\n-    /**\n-     * whether it is a persistent connection\n-     */\n-    //TODO add this to provider config\n-    private Boolean keepAlive;\n-\n-    // TODO add this to provider config\n-    private String optimizer;\n-\n-    /**\n-     * The extension\n-     */\n-    private String extension;\n-\n-    /**\n-     * The customized parameters\n-     */\n-    private Map<String, String> parameters;\n-\n-    /**\n-     * If it's default\n-     */\n-    private Boolean isDefault;\n-\n-    public static ProtocolBuilder newBuilder() {\n-        return new ProtocolBuilder();\n-    }\n-\n-    public ProtocolBuilder id(String id) {\n-        return super.id(id);\n-    }\n-\n-    public ProtocolBuilder name(String name) {\n-        this.name = name;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder host(String host) {\n-        this.host = host;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder port(Integer port) {\n-        this.port = port;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder contextpath(String contextpath) {\n-        this.contextpath = contextpath;\n-        return getThis();\n-    }\n-\n-    /**\n-     * @param path\n-     * @return ProtocolBuilder\n-     * @see ProtocolBuilder#contextpath(String)\n-     */\n-    @Deprecated\n-    public ProtocolBuilder path(String path) {\n-        this.contextpath = path;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder threadpool(String threadpool) {\n-        this.threadpool = threadpool;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder corethreads(Integer corethreads) {\n-        this.corethreads = corethreads;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder threads(Integer threads) {\n-        this.threads = threads;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder iothreads(Integer iothreads) {\n-        this.iothreads = iothreads;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder queues(Integer queues) {\n-        this.queues = queues;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder accepts(Integer accepts) {\n-        this.accepts = accepts;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder codec(String codec) {\n-        this.codec = codec;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder serialization(String serialization) {\n-        this.serialization = serialization;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder charset(String charset) {\n-        this.charset = charset;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder payload(Integer payload) {\n-        this.payload = payload;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder buffer(Integer buffer) {\n-        this.buffer = buffer;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder heartbeat(Integer heartbeat) {\n-        this.heartbeat = heartbeat;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder accesslog(String accesslog) {\n-        this.accesslog = accesslog;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder transporter(String transporter) {\n-        this.transporter = transporter;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder exchanger(String exchanger) {\n-        this.exchanger = exchanger;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder dispatcher(String dispatcher) {\n-        this.dispatcher = dispatcher;\n-        return getThis();\n-    }\n-\n-    /**\n-     * @param dispather\n-     * @return ProtocolBuilder\n-     * @see ProtocolBuilder#dispatcher(String)\n-     */\n-    @Deprecated\n-    public ProtocolBuilder dispather(String dispather) {\n-        this.dispatcher = dispather;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder networker(String networker) {\n-        this.networker = networker;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder server(String server) {\n-        this.server = server;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder client(String client) {\n-        this.client = client;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder telnet(String telnet) {\n-        this.telnet = telnet;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder prompt(String prompt) {\n-        this.prompt = prompt;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder status(String status) {\n-        this.status = status;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder register(Boolean register) {\n-        this.register = register;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder keepAlive(Boolean keepAlive) {\n-        this.keepAlive = keepAlive;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder optimizer(String optimizer) {\n-        this.optimizer = optimizer;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder extension(String extension) {\n-        this.extension = extension;\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder appendParameter(String key, String value) {\n-        this.parameters = appendParameter(parameters, key, value);\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder appendParameters(Map<String, String> appendParameters) {\n-        this.parameters = appendParameters(parameters, appendParameters);\n-        return getThis();\n-    }\n-\n-    public ProtocolBuilder isDefault(Boolean isDefault) {\n-        this.isDefault = isDefault;\n-        return getThis();\n-    }\n-\n-    public ProtocolConfig build() {\n-        ProtocolConfig protocolConfig = new ProtocolConfig();\n-        super.build(protocolConfig);\n-\n-        protocolConfig.setAccepts(accepts);\n-        protocolConfig.setAccesslog(accesslog);\n-        protocolConfig.setBuffer(buffer);\n-        protocolConfig.setCharset(charset);\n-        protocolConfig.setClient(client);\n-        protocolConfig.setCodec(codec);\n-        protocolConfig.setContextpath(contextpath);\n-        protocolConfig.setCorethreads(corethreads);\n-        protocolConfig.setDefault(isDefault);\n-        protocolConfig.setDispatcher(dispatcher);\n-        protocolConfig.setExchanger(exchanger);\n-        protocolConfig.setExtension(extension);\n-        protocolConfig.setHeartbeat(heartbeat);\n-        protocolConfig.setHost(host);\n-        protocolConfig.setIothreads(iothreads);\n-        protocolConfig.setKeepAlive(keepAlive);\n-        protocolConfig.setName(name);\n-        protocolConfig.setNetworker(networker);\n-        protocolConfig.setOptimizer(optimizer);\n-        protocolConfig.setParameters(parameters);\n-        protocolConfig.setPayload(payload);\n-        protocolConfig.setPort(port);\n-        protocolConfig.setPrompt(prompt);\n-        protocolConfig.setQueues(queues);\n-        protocolConfig.setRegister(register);\n-        protocolConfig.setSerialization(serialization);\n-        protocolConfig.setServer(server);\n-        protocolConfig.setStatus(status);\n-        protocolConfig.setTelnet(telnet);\n-        protocolConfig.setThreadpool(threadpool);\n-        protocolConfig.setThreads(threads);\n-        protocolConfig.setTransporter(transporter);\n-\n-        return protocolConfig;\n-    }\n-\n-    @Override\n-    protected ProtocolBuilder getThis() {\n-        return this;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap.builders;\r\n+\r\n+import org.apache.dubbo.config.ProtocolConfig;\r\n+\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * This is a builder for build {@link ProtocolConfig}.\r\n+ *\r\n+ * @since 2.7\r\n+ */\r\n+public class ProtocolBuilder extends AbstractBuilder<ProtocolConfig, ProtocolBuilder> {\r\n+    /**\r\n+     * Protocol name\r\n+     */\r\n+    private String name;\r\n+\r\n+    /**\r\n+     * Service ip address (when there are multiple network cards available)\r\n+     */\r\n+    private String host;\r\n+\r\n+    /**\r\n+     * Service port\r\n+     */\r\n+    private Integer port;\r\n+\r\n+    /**\r\n+     * Context path\r\n+     */\r\n+    private String contextpath;\r\n+\r\n+    /**\r\n+     * Thread pool\r\n+     */\r\n+    private String threadpool;\r\n+\r\n+    /**\r\n+     * Thread pool core thread size\r\n+     */\r\n+    private Integer corethreads;\r\n+\r\n+    /**\r\n+     * Thread pool size (fixed size)\r\n+     */\r\n+    private Integer threads;\r\n+\r\n+    /**\r\n+     * IO thread pool size (fixed size)\r\n+     */\r\n+    private Integer iothreads;\r\n+\r\n+    /**\r\n+     * Thread pool's queue length\r\n+     */\r\n+    private Integer queues;\r\n+\r\n+    /**\r\n+     * Max acceptable connections\r\n+     */\r\n+    private Integer accepts;\r\n+\r\n+    /**\r\n+     * Protocol codec\r\n+     */\r\n+    private String codec;\r\n+\r\n+    /**\r\n+     * Serialization\r\n+     */\r\n+    private String serialization;\r\n+\r\n+    /**\r\n+     * Charset\r\n+     */\r\n+    private String charset;\r\n+\r\n+    /**\r\n+     * Payload max length\r\n+     */\r\n+    private Integer payload;\r\n+\r\n+    /**\r\n+     * Buffer size\r\n+     */\r\n+    private Integer buffer;\r\n+\r\n+    /**\r\n+     * Heartbeat interval\r\n+     */\r\n+    private Integer heartbeat;\r\n+\r\n+    /**\r\n+     * Access log\r\n+     */\r\n+    private String accesslog;\r\n+\r\n+    /**\r\n+     * Transporter\r\n+     */\r\n+    private String transporter;\r\n+\r\n+    /**\r\n+     * How information is exchanged\r\n+     */\r\n+    private String exchanger;\r\n+\r\n+    /**\r\n+     * Thread dispatch mode\r\n+     */\r\n+    private String dispatcher;\r\n+\r\n+    /**\r\n+     * Networker\r\n+     */\r\n+    private String networker;\r\n+\r\n+    /**\r\n+     * Sever impl\r\n+     */\r\n+    private String server;\r\n+\r\n+    /**\r\n+     * Client impl\r\n+     */\r\n+    private String client;\r\n+\r\n+    /**\r\n+     * Supported telnet commands, separated with comma.\r\n+     */\r\n+    private String telnet;\r\n+\r\n+    /**\r\n+     * Command line prompt\r\n+     */\r\n+    private String prompt;\r\n+\r\n+    /**\r\n+     * Status check\r\n+     */\r\n+    private String status;\r\n+\r\n+    /**\r\n+     * Whether to register\r\n+     */\r\n+    private Boolean register;\r\n+\r\n+    /**\r\n+     * whether it is a persistent connection\r\n+     */\r\n+    //TODO add this to provider config\r\n+    private Boolean keepAlive;\r\n+\r\n+    // TODO add this to provider config\r\n+    private String optimizer;\r\n+\r\n+    /**\r\n+     * The extension\r\n+     */\r\n+    private String extension;\r\n+\r\n+    /**\r\n+     * The customized parameters\r\n+     */\r\n+    private Map<String, String> parameters;\r\n+\r\n+    /**\r\n+     * If it's default\r\n+     */\r\n+    private Boolean isDefault;\r\n+\r\n+    public static ProtocolBuilder newBuilder() {\r\n+        return new ProtocolBuilder();\r\n+    }\r\n+\r\n+    public ProtocolBuilder id(String id) {\r\n+        return super.id(id);\r\n+    }\r\n+\r\n+    public ProtocolBuilder name(String name) {\r\n+        this.name = name;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder host(String host) {\r\n+        this.host = host;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder port(Integer port) {\r\n+        this.port = port;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder contextpath(String contextpath) {\r\n+        this.contextpath = contextpath;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    /**\r\n+     * @param path\r\n+     * @return ProtocolBuilder\r\n+     * @see ProtocolBuilder#contextpath(String)\r\n+     */\r\n+    @Deprecated\r\n+    public ProtocolBuilder path(String path) {\r\n+        this.contextpath = path;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder threadpool(String threadpool) {\r\n+        this.threadpool = threadpool;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder corethreads(Integer corethreads) {\r\n+        this.corethreads = corethreads;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder threads(Integer threads) {\r\n+        this.threads = threads;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder iothreads(Integer iothreads) {\r\n+        this.iothreads = iothreads;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder queues(Integer queues) {\r\n+        this.queues = queues;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder accepts(Integer accepts) {\r\n+        this.accepts = accepts;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder codec(String codec) {\r\n+        this.codec = codec;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder serialization(String serialization) {\r\n+        this.serialization = serialization;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder charset(String charset) {\r\n+        this.charset = charset;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder payload(Integer payload) {\r\n+        this.payload = payload;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder buffer(Integer buffer) {\r\n+        this.buffer = buffer;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder heartbeat(Integer heartbeat) {\r\n+        this.heartbeat = heartbeat;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder accesslog(String accesslog) {\r\n+        this.accesslog = accesslog;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder transporter(String transporter) {\r\n+        this.transporter = transporter;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder exchanger(String exchanger) {\r\n+        this.exchanger = exchanger;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder dispatcher(String dispatcher) {\r\n+        this.dispatcher = dispatcher;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    /**\r\n+     * @param dispather\r\n+     * @return ProtocolBuilder\r\n+     * @see ProtocolBuilder#dispatcher(String)\r\n+     */\r\n+    @Deprecated\r\n+    public ProtocolBuilder dispather(String dispather) {\r\n+        this.dispatcher = dispather;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder networker(String networker) {\r\n+        this.networker = networker;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder server(String server) {\r\n+        this.server = server;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder client(String client) {\r\n+        this.client = client;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder telnet(String telnet) {\r\n+        this.telnet = telnet;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder prompt(String prompt) {\r\n+        this.prompt = prompt;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder status(String status) {\r\n+        this.status = status;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder register(Boolean register) {\r\n+        this.register = register;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder keepAlive(Boolean keepAlive) {\r\n+        this.keepAlive = keepAlive;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder optimizer(String optimizer) {\r\n+        this.optimizer = optimizer;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder extension(String extension) {\r\n+        this.extension = extension;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder appendParameter(String key, String value) {\r\n+        this.parameters = appendParameter(parameters, key, value);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder appendParameters(Map<String, String> appendParameters) {\r\n+        this.parameters = appendParameters(parameters, appendParameters);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolBuilder isDefault(Boolean isDefault) {\r\n+        this.isDefault = isDefault;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProtocolConfig build() {\r\n+        ProtocolConfig protocolConfig = new ProtocolConfig();\r\n+        super.build(protocolConfig);\r\n+\r\n+        protocolConfig.setAccepts(accepts);\r\n+        protocolConfig.setAccesslog(accesslog);\r\n+        protocolConfig.setBuffer(buffer);\r\n+        protocolConfig.setCharset(charset);\r\n+        protocolConfig.setClient(client);\r\n+        protocolConfig.setCodec(codec);\r\n+        protocolConfig.setContextpath(contextpath);\r\n+        protocolConfig.setCorethreads(corethreads);\r\n+        protocolConfig.setDefault(isDefault);\r\n+        protocolConfig.setDispatcher(dispatcher);\r\n+        protocolConfig.setExchanger(exchanger);\r\n+        protocolConfig.setExtension(extension);\r\n+        protocolConfig.setHeartbeat(heartbeat);\r\n+        protocolConfig.setHost(host);\r\n+        protocolConfig.setIothreads(iothreads);\r\n+        protocolConfig.setKeepAlive(keepAlive);\r\n+        protocolConfig.setName(name);\r\n+        protocolConfig.setNetworker(networker);\r\n+        protocolConfig.setOptimizer(optimizer);\r\n+        protocolConfig.setParameters(parameters);\r\n+        protocolConfig.setPayload(payload);\r\n+        protocolConfig.setPort(port);\r\n+        protocolConfig.setPrompt(prompt);\r\n+        protocolConfig.setQueues(queues);\r\n+        protocolConfig.setRegister(register);\r\n+        protocolConfig.setSerialization(serialization);\r\n+        protocolConfig.setServer(server);\r\n+        protocolConfig.setStatus(status);\r\n+        protocolConfig.setTelnet(telnet);\r\n+        protocolConfig.setThreadpool(threadpool);\r\n+        protocolConfig.setThreads(threads);\r\n+        protocolConfig.setTransporter(transporter);\r\n+\r\n+        return protocolConfig;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected ProtocolBuilder getThis() {\r\n+        return this;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/ProviderBuilder.java", "source2": "org/apache/dubbo/config/bootstrap/builders/ProviderBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,293 +1,293 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap.builders;\n-\n-import org.apache.dubbo.config.ProviderConfig;\n-\n-/**\n- * This is a builder for build {@link ProviderConfig}.\n- *\n- * @since 2.7\n- */\n-public class ProviderBuilder extends AbstractServiceBuilder<ProviderConfig, ProviderBuilder> {\n-\n-    /**\n-     * Service ip addresses (used when there are multiple network cards available)\n-     */\n-    private String host;\n-\n-    /**\n-     * Service port\n-     */\n-    private Integer port;\n-\n-    /**\n-     * Context path\n-     */\n-    private String contextpath;\n-\n-    /**\n-     * Thread pool\n-     */\n-    private String threadpool;\n-\n-    /**\n-     * Thread pool size (fixed size)\n-     */\n-    private Integer threads;\n-\n-    /**\n-     * IO thread pool size (fixed size)\n-     */\n-    private Integer iothreads;\n-\n-    /**\n-     * Thread pool queue length\n-     */\n-    private Integer queues;\n-\n-    /**\n-     * Max acceptable connections\n-     */\n-    private Integer accepts;\n-\n-    /**\n-     * Protocol codec\n-     */\n-    private String codec;\n-\n-    /**\n-     * The serialization charset\n-     */\n-    private String charset;\n-\n-    /**\n-     * Payload max length\n-     */\n-    private Integer payload;\n-\n-    /**\n-     * The network io buffer size\n-     */\n-    private Integer buffer;\n-\n-    /**\n-     * Transporter\n-     */\n-    private String transporter;\n-\n-    /**\n-     * How information gets exchanged\n-     */\n-    private String exchanger;\n-\n-    /**\n-     * Thread dispatching mode\n-     */\n-    private String dispatcher;\n-\n-    /**\n-     * Networker\n-     */\n-    private String networker;\n-\n-    /**\n-     * The server-side implementation model of the protocol\n-     */\n-    private String server;\n-\n-    /**\n-     * The client-side implementation model of the protocol\n-     */\n-    private String client;\n-\n-    /**\n-     * Supported telnet commands, separated with comma.\n-     */\n-    private String telnet;\n-\n-    /**\n-     * Command line prompt\n-     */\n-    private String prompt;\n-\n-    /**\n-     * Status check\n-     */\n-    private String status;\n-\n-    /**\n-     * Wait time when stop\n-     */\n-    private Integer wait;\n-\n-    /**\n-     * Whether to use the default protocol\n-     */\n-    private Boolean isDefault;\n-\n-    public ProviderBuilder host(String host) {\n-        this.host = host;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder port(Integer port) {\n-        this.port = port;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder contextPath(String contextPath) {\n-        this.contextpath = contextPath;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder threadPool(String threadPool) {\n-        this.threadpool = threadPool;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder threads(Integer threads) {\n-        this.threads = threads;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder ioThreads(Integer ioThreads) {\n-        this.iothreads = ioThreads;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder queues(Integer queues) {\n-        this.queues = queues;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder accepts(Integer accepts) {\n-        this.accepts = accepts;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder codec(String codec) {\n-        this.codec = codec;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder charset(String charset) {\n-        this.charset = charset;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder payload(Integer payload) {\n-        this.payload = payload;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder buffer(Integer buffer) {\n-        this.buffer = buffer;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder transporter(String transporter) {\n-        this.transporter = transporter;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder exchanger(String exchanger) {\n-        this.exchanger = exchanger;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder dispatcher(String dispatcher) {\n-        this.dispatcher = dispatcher;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder networker(String networker) {\n-        this.networker = networker;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder server(String server) {\n-        this.server = server;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder client(String client) {\n-        this.client = client;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder telnet(String telnet) {\n-        this.telnet = telnet;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder prompt(String prompt) {\n-        this.prompt = prompt;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder status(String status) {\n-        this.status = status;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder wait(Integer wait) {\n-        this.wait = wait;\n-        return getThis();\n-    }\n-\n-    public ProviderBuilder isDefault(Boolean isDefault) {\n-        this.isDefault = isDefault;\n-        return getThis();\n-    }\n-\n-    public ProviderConfig build() {\n-        ProviderConfig provider = new ProviderConfig();\n-        super.build(provider);\n-\n-        provider.setHost(host);\n-        provider.setPort(port);\n-        provider.setContextpath(contextpath);\n-        provider.setThreadpool(threadpool);\n-        provider.setThreads(threads);\n-        provider.setIothreads(iothreads);\n-        provider.setQueues(queues);\n-        provider.setAccepts(accepts);\n-        provider.setCodec(codec);\n-        provider.setPayload(payload);\n-        provider.setCharset(charset);\n-        provider.setBuffer(buffer);\n-        provider.setTransporter(transporter);\n-        provider.setExchanger(exchanger);\n-        provider.setDispatcher(dispatcher);\n-        provider.setNetworker(networker);\n-        provider.setServer(server);\n-        provider.setClient(client);\n-        provider.setTelnet(telnet);\n-        provider.setPrompt(prompt);\n-        provider.setStatus(status);\n-        provider.setWait(wait);\n-        provider.setDefault(isDefault);\n-\n-        return provider;\n-    }\n-\n-    @Override\n-    protected ProviderBuilder getThis() {\n-        return this;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap.builders;\r\n+\r\n+import org.apache.dubbo.config.ProviderConfig;\r\n+\r\n+/**\r\n+ * This is a builder for build {@link ProviderConfig}.\r\n+ *\r\n+ * @since 2.7\r\n+ */\r\n+public class ProviderBuilder extends AbstractServiceBuilder<ProviderConfig, ProviderBuilder> {\r\n+\r\n+    /**\r\n+     * Service ip addresses (used when there are multiple network cards available)\r\n+     */\r\n+    private String host;\r\n+\r\n+    /**\r\n+     * Service port\r\n+     */\r\n+    private Integer port;\r\n+\r\n+    /**\r\n+     * Context path\r\n+     */\r\n+    private String contextpath;\r\n+\r\n+    /**\r\n+     * Thread pool\r\n+     */\r\n+    private String threadpool;\r\n+\r\n+    /**\r\n+     * Thread pool size (fixed size)\r\n+     */\r\n+    private Integer threads;\r\n+\r\n+    /**\r\n+     * IO thread pool size (fixed size)\r\n+     */\r\n+    private Integer iothreads;\r\n+\r\n+    /**\r\n+     * Thread pool queue length\r\n+     */\r\n+    private Integer queues;\r\n+\r\n+    /**\r\n+     * Max acceptable connections\r\n+     */\r\n+    private Integer accepts;\r\n+\r\n+    /**\r\n+     * Protocol codec\r\n+     */\r\n+    private String codec;\r\n+\r\n+    /**\r\n+     * The serialization charset\r\n+     */\r\n+    private String charset;\r\n+\r\n+    /**\r\n+     * Payload max length\r\n+     */\r\n+    private Integer payload;\r\n+\r\n+    /**\r\n+     * The network io buffer size\r\n+     */\r\n+    private Integer buffer;\r\n+\r\n+    /**\r\n+     * Transporter\r\n+     */\r\n+    private String transporter;\r\n+\r\n+    /**\r\n+     * How information gets exchanged\r\n+     */\r\n+    private String exchanger;\r\n+\r\n+    /**\r\n+     * Thread dispatching mode\r\n+     */\r\n+    private String dispatcher;\r\n+\r\n+    /**\r\n+     * Networker\r\n+     */\r\n+    private String networker;\r\n+\r\n+    /**\r\n+     * The server-side implementation model of the protocol\r\n+     */\r\n+    private String server;\r\n+\r\n+    /**\r\n+     * The client-side implementation model of the protocol\r\n+     */\r\n+    private String client;\r\n+\r\n+    /**\r\n+     * Supported telnet commands, separated with comma.\r\n+     */\r\n+    private String telnet;\r\n+\r\n+    /**\r\n+     * Command line prompt\r\n+     */\r\n+    private String prompt;\r\n+\r\n+    /**\r\n+     * Status check\r\n+     */\r\n+    private String status;\r\n+\r\n+    /**\r\n+     * Wait time when stop\r\n+     */\r\n+    private Integer wait;\r\n+\r\n+    /**\r\n+     * Whether to use the default protocol\r\n+     */\r\n+    private Boolean isDefault;\r\n+\r\n+    public ProviderBuilder host(String host) {\r\n+        this.host = host;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder port(Integer port) {\r\n+        this.port = port;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder contextPath(String contextPath) {\r\n+        this.contextpath = contextPath;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder threadPool(String threadPool) {\r\n+        this.threadpool = threadPool;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder threads(Integer threads) {\r\n+        this.threads = threads;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder ioThreads(Integer ioThreads) {\r\n+        this.iothreads = ioThreads;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder queues(Integer queues) {\r\n+        this.queues = queues;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder accepts(Integer accepts) {\r\n+        this.accepts = accepts;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder codec(String codec) {\r\n+        this.codec = codec;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder charset(String charset) {\r\n+        this.charset = charset;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder payload(Integer payload) {\r\n+        this.payload = payload;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder buffer(Integer buffer) {\r\n+        this.buffer = buffer;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder transporter(String transporter) {\r\n+        this.transporter = transporter;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder exchanger(String exchanger) {\r\n+        this.exchanger = exchanger;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder dispatcher(String dispatcher) {\r\n+        this.dispatcher = dispatcher;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder networker(String networker) {\r\n+        this.networker = networker;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder server(String server) {\r\n+        this.server = server;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder client(String client) {\r\n+        this.client = client;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder telnet(String telnet) {\r\n+        this.telnet = telnet;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder prompt(String prompt) {\r\n+        this.prompt = prompt;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder status(String status) {\r\n+        this.status = status;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder wait(Integer wait) {\r\n+        this.wait = wait;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderBuilder isDefault(Boolean isDefault) {\r\n+        this.isDefault = isDefault;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ProviderConfig build() {\r\n+        ProviderConfig provider = new ProviderConfig();\r\n+        super.build(provider);\r\n+\r\n+        provider.setHost(host);\r\n+        provider.setPort(port);\r\n+        provider.setContextpath(contextpath);\r\n+        provider.setThreadpool(threadpool);\r\n+        provider.setThreads(threads);\r\n+        provider.setIothreads(iothreads);\r\n+        provider.setQueues(queues);\r\n+        provider.setAccepts(accepts);\r\n+        provider.setCodec(codec);\r\n+        provider.setPayload(payload);\r\n+        provider.setCharset(charset);\r\n+        provider.setBuffer(buffer);\r\n+        provider.setTransporter(transporter);\r\n+        provider.setExchanger(exchanger);\r\n+        provider.setDispatcher(dispatcher);\r\n+        provider.setNetworker(networker);\r\n+        provider.setServer(server);\r\n+        provider.setClient(client);\r\n+        provider.setTelnet(telnet);\r\n+        provider.setPrompt(prompt);\r\n+        provider.setStatus(status);\r\n+        provider.setWait(wait);\r\n+        provider.setDefault(isDefault);\r\n+\r\n+        return provider;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected ProviderBuilder getThis() {\r\n+        return this;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/ReferenceBuilder.java", "source2": "org/apache/dubbo/config/bootstrap/builders/ReferenceBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,165 +1,165 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap.builders;\n-\n-import org.apache.dubbo.config.ConsumerConfig;\n-import org.apache.dubbo.config.MethodConfig;\n-import org.apache.dubbo.config.ReferenceConfig;\n-import org.apache.dubbo.config.ReferenceConfigBase;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-import static org.apache.dubbo.common.utils.StringUtils.toCommaDelimitedString;\n-\n-/**\n- * This is a builder for build {@link ReferenceConfigBase}.\n- *\n- * @since 2.7\n- */\n-public class ReferenceBuilder<T> extends AbstractReferenceBuilder<ReferenceConfig, ReferenceBuilder<T>> {\n-    /**\n-     * The interface name of the reference service\n-     */\n-    private String interfaceName;\n-\n-    /**\n-     * The interface class of the reference service\n-     */\n-    private Class<?> interfaceClass;\n-\n-    /**\n-     * client type\n-     */\n-    private String client;\n-\n-    /**\n-     * The url for peer-to-peer invocation\n-     */\n-    private String url;\n-\n-    /**\n-     * The method configs\n-     */\n-    private List<MethodConfig> methods;\n-\n-    /**\n-     * The consumer config (default)\n-     */\n-    private ConsumerConfig consumer;\n-\n-    /**\n-     * Only the service provider of the specified protocol is invoked, and other protocols are ignored.\n-     */\n-    private String protocol;\n-\n-    /**\n-     * The string presenting the service names that the Dubbo interface subscribed\n-     *\n-     * @since 2.7.8\n-     */\n-    private String services;\n-\n-    public static ReferenceBuilder newBuilder() {\n-        return new ReferenceBuilder();\n-    }\n-\n-    public ReferenceBuilder<T> id(String id) {\n-        return super.id(id);\n-    }\n-\n-    public ReferenceBuilder<T> interfaceName(String interfaceName) {\n-        this.interfaceName = interfaceName;\n-        return getThis();\n-    }\n-\n-    public ReferenceBuilder<T> interfaceClass(Class<?> interfaceClass) {\n-        this.interfaceClass = interfaceClass;\n-        return getThis();\n-    }\n-\n-    public ReferenceBuilder<T> client(String client) {\n-        this.client = client;\n-        return getThis();\n-    }\n-\n-    public ReferenceBuilder<T> url(String url) {\n-        this.url = url;\n-        return getThis();\n-    }\n-\n-    public ReferenceBuilder<T> addMethods(List<MethodConfig> methods) {\n-        if (this.methods == null) {\n-            this.methods = new ArrayList<>();\n-        }\n-        this.methods.addAll(methods);\n-        return getThis();\n-    }\n-\n-    public ReferenceBuilder<T> addMethod(MethodConfig method) {\n-        if (this.methods == null) {\n-            this.methods = new ArrayList<>();\n-        }\n-        this.methods.add(method);\n-        return getThis();\n-    }\n-\n-    public ReferenceBuilder<T> consumer(ConsumerConfig consumer) {\n-        this.consumer = consumer;\n-        return getThis();\n-    }\n-\n-    public ReferenceBuilder<T> protocol(String protocol) {\n-        this.protocol = protocol;\n-        return getThis();\n-    }\n-\n-    /**\n-     * @param service       one service name\n-     * @param otherServices other service names\n-     * @return {@link ReferenceBuilder}\n-     * @since 2.7.8\n-     */\n-    public ReferenceBuilder<T> services(String service, String... otherServices) {\n-        this.services = toCommaDelimitedString(service, otherServices);\n-        return getThis();\n-    }\n-\n-    public ReferenceConfig<T> build() {\n-        ReferenceConfig<T> reference = new ReferenceConfig<>();\n-        super.build(reference);\n-\n-        reference.setInterface(interfaceName);\n-        if (interfaceClass != null) {\n-            reference.setInterface(interfaceClass);\n-        }\n-        reference.setClient(client);\n-        reference.setUrl(url);\n-        reference.setMethods(methods);\n-        reference.setConsumer(consumer);\n-        reference.setProtocol(protocol);\n-        // @since 2.7.8\n-        reference.setServices(services);\n-\n-        return reference;\n-    }\n-\n-    @Override\n-    protected ReferenceBuilder<T> getThis() {\n-        return this;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap.builders;\r\n+\r\n+import org.apache.dubbo.config.ConsumerConfig;\r\n+import org.apache.dubbo.config.MethodConfig;\r\n+import org.apache.dubbo.config.ReferenceConfig;\r\n+import org.apache.dubbo.config.ReferenceConfigBase;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+\r\n+import static org.apache.dubbo.common.utils.StringUtils.toCommaDelimitedString;\r\n+\r\n+/**\r\n+ * This is a builder for build {@link ReferenceConfigBase}.\r\n+ *\r\n+ * @since 2.7\r\n+ */\r\n+public class ReferenceBuilder<T> extends AbstractReferenceBuilder<ReferenceConfig, ReferenceBuilder<T>> {\r\n+    /**\r\n+     * The interface name of the reference service\r\n+     */\r\n+    private String interfaceName;\r\n+\r\n+    /**\r\n+     * The interface class of the reference service\r\n+     */\r\n+    private Class<?> interfaceClass;\r\n+\r\n+    /**\r\n+     * client type\r\n+     */\r\n+    private String client;\r\n+\r\n+    /**\r\n+     * The url for peer-to-peer invocation\r\n+     */\r\n+    private String url;\r\n+\r\n+    /**\r\n+     * The method configs\r\n+     */\r\n+    private List<MethodConfig> methods;\r\n+\r\n+    /**\r\n+     * The consumer config (default)\r\n+     */\r\n+    private ConsumerConfig consumer;\r\n+\r\n+    /**\r\n+     * Only the service provider of the specified protocol is invoked, and other protocols are ignored.\r\n+     */\r\n+    private String protocol;\r\n+\r\n+    /**\r\n+     * The string presenting the service names that the Dubbo interface subscribed\r\n+     *\r\n+     * @since 2.7.8\r\n+     */\r\n+    private String services;\r\n+\r\n+    public static ReferenceBuilder newBuilder() {\r\n+        return new ReferenceBuilder();\r\n+    }\r\n+\r\n+    public ReferenceBuilder<T> id(String id) {\r\n+        return super.id(id);\r\n+    }\r\n+\r\n+    public ReferenceBuilder<T> interfaceName(String interfaceName) {\r\n+        this.interfaceName = interfaceName;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ReferenceBuilder<T> interfaceClass(Class<?> interfaceClass) {\r\n+        this.interfaceClass = interfaceClass;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ReferenceBuilder<T> client(String client) {\r\n+        this.client = client;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ReferenceBuilder<T> url(String url) {\r\n+        this.url = url;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ReferenceBuilder<T> addMethods(List<MethodConfig> methods) {\r\n+        if (this.methods == null) {\r\n+            this.methods = new ArrayList<>();\r\n+        }\r\n+        this.methods.addAll(methods);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ReferenceBuilder<T> addMethod(MethodConfig method) {\r\n+        if (this.methods == null) {\r\n+            this.methods = new ArrayList<>();\r\n+        }\r\n+        this.methods.add(method);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ReferenceBuilder<T> consumer(ConsumerConfig consumer) {\r\n+        this.consumer = consumer;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ReferenceBuilder<T> protocol(String protocol) {\r\n+        this.protocol = protocol;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    /**\r\n+     * @param service       one service name\r\n+     * @param otherServices other service names\r\n+     * @return {@link ReferenceBuilder}\r\n+     * @since 2.7.8\r\n+     */\r\n+    public ReferenceBuilder<T> services(String service, String... otherServices) {\r\n+        this.services = toCommaDelimitedString(service, otherServices);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ReferenceConfig<T> build() {\r\n+        ReferenceConfig<T> reference = new ReferenceConfig<>();\r\n+        super.build(reference);\r\n+\r\n+        reference.setInterface(interfaceName);\r\n+        if (interfaceClass != null) {\r\n+            reference.setInterface(interfaceClass);\r\n+        }\r\n+        reference.setClient(client);\r\n+        reference.setUrl(url);\r\n+        reference.setMethods(methods);\r\n+        reference.setConsumer(consumer);\r\n+        reference.setProtocol(protocol);\r\n+        // @since 2.7.8\r\n+        reference.setServices(services);\r\n+\r\n+        return reference;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected ReferenceBuilder<T> getThis() {\r\n+        return this;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/RegistryBuilder.java", "source2": "org/apache/dubbo/config/bootstrap/builders/RegistryBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,383 +1,383 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap.builders;\n-\n-import org.apache.dubbo.config.RegistryConfig;\n-\n-import java.util.Map;\n-\n-/**\n- * This is a builder for build {@link RegistryConfig}.\n- *\n- * @since 2.7\n- */\n-public class RegistryBuilder extends AbstractBuilder<RegistryConfig, RegistryBuilder> {\n-    /**\n-     * Register center address\n-     */\n-    private String address;\n-\n-    /**\n-     * Username to login register center\n-     */\n-    private String username;\n-\n-    /**\n-     * Password to login register center\n-     */\n-    private String password;\n-\n-    /**\n-     * Default port for register center\n-     */\n-    private Integer port;\n-\n-    /**\n-     * Protocol for register center\n-     */\n-    private String protocol;\n-\n-    /**\n-     * Network transmission type\n-     */\n-    private String transporter;\n-\n-    private String server;\n-\n-    private String client;\n-\n-    private String cluster;\n-\n-    /**\n-     * The group the services registry in\n-     */\n-    private String group;\n-\n-    private String version;\n-\n-    /**\n-     * Request timeout in milliseconds for register center\n-     */\n-    private Integer timeout;\n-\n-    /**\n-     * Session timeout in milliseconds for register center\n-     */\n-    private Integer session;\n-\n-    /**\n-     * File for saving register center dynamic list\n-     */\n-    private String file;\n-\n-    /**\n-     * Wait time before stop\n-     */\n-    private Integer wait;\n-\n-    /**\n-     * Whether to check if register center is available when boot up\n-     */\n-    private Boolean check;\n-\n-    /**\n-     * Whether to allow dynamic service to register on the register center\n-     */\n-    private Boolean dynamic;\n-\n-    /**\n-     * Whether to export service on the register center\n-     */\n-    private Boolean register;\n-\n-    /**\n-     * Whether allow to subscribe service on the register center\n-     */\n-    private Boolean subscribe;\n-\n-    /**\n-     * The customized parameters\n-     */\n-    private Map<String, String> parameters;\n-\n-    /**\n-     * Whether it's default\n-     */\n-    private Boolean isDefault;\n-\n-    /**\n-     * Simple the registry. both useful for provider and consumer\n-     *\n-     * @since 2.7.0\n-     */\n-    private Boolean simplified;\n-    /**\n-     * After simplify the registry, should add some parameter individually. just for provider.\n-     * <p>\n-     * such as: extra-keys = A,b,c,d\n-     *\n-     * @since 2.7.0\n-     */\n-    private String extraKeys;\n-\n-    /**\n-     * the address work as config center or not\n-     */\n-    private Boolean useAsConfigCenter;\n-\n-    /**\n-     * the address work as remote metadata center or not\n-     */\n-    private Boolean useAsMetadataCenter;\n-\n-    /**\n-     * list of rpc protocols accepted by this registry, for example, \"dubbo,rest\"\n-     */\n-    private String accepts;\n-\n-    /**\n-     * Always use this registry first if set to true, useful when subscribe to multiple registries\n-     */\n-    private Boolean preferred;\n-\n-    /**\n-     * Affects traffic distribution among registries, useful when subscribe to multiple registries\n-     * Take effect only when no preferred registry is specified.\n-     */\n-    private Integer weight;\n-\n-    public static RegistryBuilder newBuilder() {\n-        return new RegistryBuilder();\n-    }\n-\n-    public RegistryBuilder id(String id) {\n-        return super.id(id);\n-    }\n-\n-    public RegistryBuilder address(String address) {\n-        this.address = address;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder username(String username) {\n-        this.username = username;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder password(String password) {\n-        this.password = password;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder port(Integer port) {\n-        this.port = port;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder protocol(String protocol) {\n-        this.protocol = protocol;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder transporter(String transporter) {\n-        this.transporter = transporter;\n-        return getThis();\n-    }\n-\n-    /**\n-     * @param transport\n-     * @see #transporter(String)\n-     * @deprecated\n-     */\n-    @Deprecated\n-    public RegistryBuilder transport(String transport) {\n-        this.transporter = transport;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder server(String server) {\n-        this.server = server;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder client(String client) {\n-        this.client = client;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder cluster(String cluster) {\n-        this.cluster = cluster;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder group(String group) {\n-        this.group = group;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder version(String version) {\n-        this.version = version;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder timeout(Integer timeout) {\n-        this.timeout = timeout;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder session(Integer session) {\n-        this.session = session;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder file(String file) {\n-        this.file = file;\n-        return getThis();\n-    }\n-\n-    /**\n-     * @param wait\n-     * @see ProviderBuilder#wait(Integer)\n-     * @deprecated\n-     */\n-    @Deprecated\n-    public RegistryBuilder wait(Integer wait) {\n-        this.wait = wait;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder isCheck(Boolean check) {\n-        this.check = check;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder isDynamic(Boolean dynamic) {\n-        this.dynamic = dynamic;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder register(Boolean register) {\n-        this.register = register;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder subscribe(Boolean subscribe) {\n-        this.subscribe = subscribe;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder appendParameter(String key, String value) {\n-        this.parameters = appendParameter(parameters, key, value);\n-        return getThis();\n-    }\n-\n-    /**\n-     * @param name   the parameter name\n-     * @param value the parameter value\n-     * @return {@link RegistryBuilder}\n-     * @since 2.7.8\n-     */\n-    public RegistryBuilder parameter(String name, String value) {\n-        return appendParameter(name, value);\n-    }\n-\n-    public RegistryBuilder appendParameters(Map<String, String> appendParameters) {\n-        this.parameters = appendParameters(parameters, appendParameters);\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder isDefault(Boolean isDefault) {\n-        this.isDefault = isDefault;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder simplified(Boolean simplified) {\n-        this.simplified = simplified;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder extraKeys(String extraKeys) {\n-        this.extraKeys = extraKeys;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder useAsConfigCenter(Boolean useAsConfigCenter) {\n-        this.useAsConfigCenter = useAsConfigCenter;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder useAsMetadataCenter(Boolean useAsMetadataCenter) {\n-        this.useAsMetadataCenter = useAsMetadataCenter;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder preferred(Boolean preferred) {\n-        this.preferred = preferred;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder accepts(String accepts) {\n-        this.accepts = accepts;\n-        return getThis();\n-    }\n-\n-    public RegistryBuilder weight(Integer weight) {\n-        this.weight = weight;\n-        return getThis();\n-    }\n-\n-    public RegistryConfig build() {\n-        RegistryConfig registry = new RegistryConfig();\n-        super.build(registry);\n-\n-        registry.setCheck(check);\n-        registry.setClient(client);\n-        registry.setCluster(cluster);\n-        registry.setDefault(isDefault);\n-        registry.setDynamic(dynamic);\n-        registry.setExtraKeys(extraKeys);\n-        registry.setFile(file);\n-        registry.setGroup(group);\n-        registry.setParameters(parameters);\n-        registry.setPassword(password);\n-        registry.setPort(port);\n-        registry.setProtocol(protocol);\n-        registry.setRegister(register);\n-        registry.setServer(server);\n-        registry.setSession(session);\n-        registry.setSimplified(simplified);\n-        registry.setSubscribe(subscribe);\n-        registry.setTimeout(timeout);\n-        registry.setTransporter(transporter);\n-        registry.setUsername(username);\n-        registry.setVersion(version);\n-        registry.setWait(wait);\n-        registry.setUseAsConfigCenter(useAsConfigCenter);\n-        registry.setUseAsMetadataCenter(useAsMetadataCenter);\n-        registry.setAccepts(accepts);\n-        registry.setPreferred(preferred);\n-        registry.setWeight(weight);\n-        registry.setAddress(address);\n-\n-        return registry;\n-    }\n-\n-    @Override\n-    protected RegistryBuilder getThis() {\n-        return this;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap.builders;\r\n+\r\n+import org.apache.dubbo.config.RegistryConfig;\r\n+\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * This is a builder for build {@link RegistryConfig}.\r\n+ *\r\n+ * @since 2.7\r\n+ */\r\n+public class RegistryBuilder extends AbstractBuilder<RegistryConfig, RegistryBuilder> {\r\n+    /**\r\n+     * Register center address\r\n+     */\r\n+    private String address;\r\n+\r\n+    /**\r\n+     * Username to login register center\r\n+     */\r\n+    private String username;\r\n+\r\n+    /**\r\n+     * Password to login register center\r\n+     */\r\n+    private String password;\r\n+\r\n+    /**\r\n+     * Default port for register center\r\n+     */\r\n+    private Integer port;\r\n+\r\n+    /**\r\n+     * Protocol for register center\r\n+     */\r\n+    private String protocol;\r\n+\r\n+    /**\r\n+     * Network transmission type\r\n+     */\r\n+    private String transporter;\r\n+\r\n+    private String server;\r\n+\r\n+    private String client;\r\n+\r\n+    private String cluster;\r\n+\r\n+    /**\r\n+     * The group the services registry in\r\n+     */\r\n+    private String group;\r\n+\r\n+    private String version;\r\n+\r\n+    /**\r\n+     * Request timeout in milliseconds for register center\r\n+     */\r\n+    private Integer timeout;\r\n+\r\n+    /**\r\n+     * Session timeout in milliseconds for register center\r\n+     */\r\n+    private Integer session;\r\n+\r\n+    /**\r\n+     * File for saving register center dynamic list\r\n+     */\r\n+    private String file;\r\n+\r\n+    /**\r\n+     * Wait time before stop\r\n+     */\r\n+    private Integer wait;\r\n+\r\n+    /**\r\n+     * Whether to check if register center is available when boot up\r\n+     */\r\n+    private Boolean check;\r\n+\r\n+    /**\r\n+     * Whether to allow dynamic service to register on the register center\r\n+     */\r\n+    private Boolean dynamic;\r\n+\r\n+    /**\r\n+     * Whether to export service on the register center\r\n+     */\r\n+    private Boolean register;\r\n+\r\n+    /**\r\n+     * Whether allow to subscribe service on the register center\r\n+     */\r\n+    private Boolean subscribe;\r\n+\r\n+    /**\r\n+     * The customized parameters\r\n+     */\r\n+    private Map<String, String> parameters;\r\n+\r\n+    /**\r\n+     * Whether it's default\r\n+     */\r\n+    private Boolean isDefault;\r\n+\r\n+    /**\r\n+     * Simple the registry. both useful for provider and consumer\r\n+     *\r\n+     * @since 2.7.0\r\n+     */\r\n+    private Boolean simplified;\r\n+    /**\r\n+     * After simplify the registry, should add some parameter individually. just for provider.\r\n+     * <p>\r\n+     * such as: extra-keys = A,b,c,d\r\n+     *\r\n+     * @since 2.7.0\r\n+     */\r\n+    private String extraKeys;\r\n+\r\n+    /**\r\n+     * the address work as config center or not\r\n+     */\r\n+    private Boolean useAsConfigCenter;\r\n+\r\n+    /**\r\n+     * the address work as remote metadata center or not\r\n+     */\r\n+    private Boolean useAsMetadataCenter;\r\n+\r\n+    /**\r\n+     * list of rpc protocols accepted by this registry, for example, \"dubbo,rest\"\r\n+     */\r\n+    private String accepts;\r\n+\r\n+    /**\r\n+     * Always use this registry first if set to true, useful when subscribe to multiple registries\r\n+     */\r\n+    private Boolean preferred;\r\n+\r\n+    /**\r\n+     * Affects traffic distribution among registries, useful when subscribe to multiple registries\r\n+     * Take effect only when no preferred registry is specified.\r\n+     */\r\n+    private Integer weight;\r\n+\r\n+    public static RegistryBuilder newBuilder() {\r\n+        return new RegistryBuilder();\r\n+    }\r\n+\r\n+    public RegistryBuilder id(String id) {\r\n+        return super.id(id);\r\n+    }\r\n+\r\n+    public RegistryBuilder address(String address) {\r\n+        this.address = address;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder username(String username) {\r\n+        this.username = username;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder password(String password) {\r\n+        this.password = password;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder port(Integer port) {\r\n+        this.port = port;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder protocol(String protocol) {\r\n+        this.protocol = protocol;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder transporter(String transporter) {\r\n+        this.transporter = transporter;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    /**\r\n+     * @param transport\r\n+     * @see #transporter(String)\r\n+     * @deprecated\r\n+     */\r\n+    @Deprecated\r\n+    public RegistryBuilder transport(String transport) {\r\n+        this.transporter = transport;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder server(String server) {\r\n+        this.server = server;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder client(String client) {\r\n+        this.client = client;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder cluster(String cluster) {\r\n+        this.cluster = cluster;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder group(String group) {\r\n+        this.group = group;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder version(String version) {\r\n+        this.version = version;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder timeout(Integer timeout) {\r\n+        this.timeout = timeout;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder session(Integer session) {\r\n+        this.session = session;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder file(String file) {\r\n+        this.file = file;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    /**\r\n+     * @param wait\r\n+     * @see ProviderBuilder#wait(Integer)\r\n+     * @deprecated\r\n+     */\r\n+    @Deprecated\r\n+    public RegistryBuilder wait(Integer wait) {\r\n+        this.wait = wait;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder isCheck(Boolean check) {\r\n+        this.check = check;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder isDynamic(Boolean dynamic) {\r\n+        this.dynamic = dynamic;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder register(Boolean register) {\r\n+        this.register = register;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder subscribe(Boolean subscribe) {\r\n+        this.subscribe = subscribe;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder appendParameter(String key, String value) {\r\n+        this.parameters = appendParameter(parameters, key, value);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    /**\r\n+     * @param name   the parameter name\r\n+     * @param value the parameter value\r\n+     * @return {@link RegistryBuilder}\r\n+     * @since 2.7.8\r\n+     */\r\n+    public RegistryBuilder parameter(String name, String value) {\r\n+        return appendParameter(name, value);\r\n+    }\r\n+\r\n+    public RegistryBuilder appendParameters(Map<String, String> appendParameters) {\r\n+        this.parameters = appendParameters(parameters, appendParameters);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder isDefault(Boolean isDefault) {\r\n+        this.isDefault = isDefault;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder simplified(Boolean simplified) {\r\n+        this.simplified = simplified;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder extraKeys(String extraKeys) {\r\n+        this.extraKeys = extraKeys;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder useAsConfigCenter(Boolean useAsConfigCenter) {\r\n+        this.useAsConfigCenter = useAsConfigCenter;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder useAsMetadataCenter(Boolean useAsMetadataCenter) {\r\n+        this.useAsMetadataCenter = useAsMetadataCenter;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder preferred(Boolean preferred) {\r\n+        this.preferred = preferred;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder accepts(String accepts) {\r\n+        this.accepts = accepts;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryBuilder weight(Integer weight) {\r\n+        this.weight = weight;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public RegistryConfig build() {\r\n+        RegistryConfig registry = new RegistryConfig();\r\n+        super.build(registry);\r\n+\r\n+        registry.setCheck(check);\r\n+        registry.setClient(client);\r\n+        registry.setCluster(cluster);\r\n+        registry.setDefault(isDefault);\r\n+        registry.setDynamic(dynamic);\r\n+        registry.setExtraKeys(extraKeys);\r\n+        registry.setFile(file);\r\n+        registry.setGroup(group);\r\n+        registry.setParameters(parameters);\r\n+        registry.setPassword(password);\r\n+        registry.setPort(port);\r\n+        registry.setProtocol(protocol);\r\n+        registry.setRegister(register);\r\n+        registry.setServer(server);\r\n+        registry.setSession(session);\r\n+        registry.setSimplified(simplified);\r\n+        registry.setSubscribe(subscribe);\r\n+        registry.setTimeout(timeout);\r\n+        registry.setTransporter(transporter);\r\n+        registry.setUsername(username);\r\n+        registry.setVersion(version);\r\n+        registry.setWait(wait);\r\n+        registry.setUseAsConfigCenter(useAsConfigCenter);\r\n+        registry.setUseAsMetadataCenter(useAsMetadataCenter);\r\n+        registry.setAccepts(accepts);\r\n+        registry.setPreferred(preferred);\r\n+        registry.setWeight(weight);\r\n+        registry.setAddress(address);\r\n+\r\n+        return registry;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected RegistryBuilder getThis() {\r\n+        return this;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/ServiceBuilder.java", "source2": "org/apache/dubbo/config/bootstrap/builders/ServiceBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,161 +1,161 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.bootstrap.builders;\n-\n-import org.apache.dubbo.config.MethodConfig;\n-import org.apache.dubbo.config.ProviderConfig;\n-import org.apache.dubbo.config.ServiceConfig;\n-import org.apache.dubbo.config.ServiceConfigBase;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * This is a builder for build {@link ServiceConfigBase}.\n- *\n- * @since 2.7\n- */\n-public class ServiceBuilder<U> extends AbstractServiceBuilder<ServiceConfig, ServiceBuilder<U>> {\n-    /**\n-     * The interface name of the exported service\n-     */\n-    private String interfaceName;\n-\n-    /**\n-     * The interface class of the exported service\n-     */\n-    private Class<?> interfaceClass;\n-\n-    /**\n-     * The reference of the interface implementation\n-     */\n-    private U ref;\n-\n-    /**\n-     * The service name\n-     */\n-    private String path;\n-\n-    /**\n-     * The method configuration\n-     */\n-    private List<MethodConfig> methods;\n-\n-    /**\n-     * The provider configuration\n-     */\n-    private ProviderConfig provider;\n-\n-    /**\n-     * The providerIds\n-     */\n-    private String providerIds;\n-    /**\n-     * whether it is a GenericService\n-     */\n-    private String generic;\n-\n-    public static ServiceBuilder newBuilder() {\n-        return new ServiceBuilder();\n-    }\n-\n-    public ServiceBuilder id(String id) {\n-        return super.id(id);\n-    }\n-\n-    public ServiceBuilder<U> interfaceName(String interfaceName) {\n-        this.interfaceName = interfaceName;\n-        return getThis();\n-    }\n-\n-    public ServiceBuilder<U> interfaceClass(Class<?> interfaceClass) {\n-        this.interfaceClass = interfaceClass;\n-        return getThis();\n-    }\n-\n-    public ServiceBuilder<U> ref(U ref) {\n-        this.ref = ref;\n-        return getThis();\n-    }\n-\n-    public ServiceBuilder<U> path(String path) {\n-        this.path = path;\n-        return getThis();\n-    }\n-\n-    public ServiceBuilder<U> addMethod(MethodConfig method) {\n-        if (this.methods == null) {\n-            this.methods = new ArrayList<>();\n-        }\n-        this.methods.add(method);\n-        return getThis();\n-    }\n-\n-    public ServiceBuilder<U> addMethods(List<? extends MethodConfig> methods) {\n-        if (this.methods == null) {\n-            this.methods = new ArrayList<>();\n-        }\n-        this.methods.addAll(methods);\n-        return getThis();\n-    }\n-\n-    public ServiceBuilder<U> provider(ProviderConfig provider) {\n-        this.provider = provider;\n-        return getThis();\n-    }\n-\n-    public ServiceBuilder<U> providerIds(String providerIds) {\n-        this.providerIds = providerIds;\n-        return getThis();\n-    }\n-\n-    public ServiceBuilder<U> generic(String generic) {\n-        this.generic = generic;\n-        return getThis();\n-    }\n-\n-//    @Override\n-//    public ServiceBuilder<U> mock(String mock) {\n-//        throw new IllegalArgumentException(\"mock doesn't support on provider side\");\n-//    }\n-\n-//    @Override\n-//    public ServiceBuilder<U> mock(Boolean mock) {\n-//        throw new IllegalArgumentException(\"mock doesn't support on provider side\");\n-//    }\n-\n-    public ServiceConfig<U> build() {\n-        ServiceConfig<U> serviceConfig = new ServiceConfig<>();\n-        super.build(serviceConfig);\n-\n-        serviceConfig.setInterface(interfaceName);\n-        serviceConfig.setInterface(interfaceClass);\n-        serviceConfig.setRef(ref);\n-        serviceConfig.setPath(path);\n-        serviceConfig.setMethods(methods);\n-        serviceConfig.setProvider(provider);\n-        serviceConfig.setProviderIds(providerIds);\n-        serviceConfig.setGeneric(generic);\n-\n-        return serviceConfig;\n-    }\n-\n-    @Override\n-    protected ServiceBuilder<U> getThis() {\n-        return this;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.bootstrap.builders;\r\n+\r\n+import org.apache.dubbo.config.MethodConfig;\r\n+import org.apache.dubbo.config.ProviderConfig;\r\n+import org.apache.dubbo.config.ServiceConfig;\r\n+import org.apache.dubbo.config.ServiceConfigBase;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * This is a builder for build {@link ServiceConfigBase}.\r\n+ *\r\n+ * @since 2.7\r\n+ */\r\n+public class ServiceBuilder<U> extends AbstractServiceBuilder<ServiceConfig, ServiceBuilder<U>> {\r\n+    /**\r\n+     * The interface name of the exported service\r\n+     */\r\n+    private String interfaceName;\r\n+\r\n+    /**\r\n+     * The interface class of the exported service\r\n+     */\r\n+    private Class<?> interfaceClass;\r\n+\r\n+    /**\r\n+     * The reference of the interface implementation\r\n+     */\r\n+    private U ref;\r\n+\r\n+    /**\r\n+     * The service name\r\n+     */\r\n+    private String path;\r\n+\r\n+    /**\r\n+     * The method configuration\r\n+     */\r\n+    private List<MethodConfig> methods;\r\n+\r\n+    /**\r\n+     * The provider configuration\r\n+     */\r\n+    private ProviderConfig provider;\r\n+\r\n+    /**\r\n+     * The providerIds\r\n+     */\r\n+    private String providerIds;\r\n+    /**\r\n+     * whether it is a GenericService\r\n+     */\r\n+    private String generic;\r\n+\r\n+    public static ServiceBuilder newBuilder() {\r\n+        return new ServiceBuilder();\r\n+    }\r\n+\r\n+    public ServiceBuilder id(String id) {\r\n+        return super.id(id);\r\n+    }\r\n+\r\n+    public ServiceBuilder<U> interfaceName(String interfaceName) {\r\n+        this.interfaceName = interfaceName;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ServiceBuilder<U> interfaceClass(Class<?> interfaceClass) {\r\n+        this.interfaceClass = interfaceClass;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ServiceBuilder<U> ref(U ref) {\r\n+        this.ref = ref;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ServiceBuilder<U> path(String path) {\r\n+        this.path = path;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ServiceBuilder<U> addMethod(MethodConfig method) {\r\n+        if (this.methods == null) {\r\n+            this.methods = new ArrayList<>();\r\n+        }\r\n+        this.methods.add(method);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ServiceBuilder<U> addMethods(List<? extends MethodConfig> methods) {\r\n+        if (this.methods == null) {\r\n+            this.methods = new ArrayList<>();\r\n+        }\r\n+        this.methods.addAll(methods);\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ServiceBuilder<U> provider(ProviderConfig provider) {\r\n+        this.provider = provider;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ServiceBuilder<U> providerIds(String providerIds) {\r\n+        this.providerIds = providerIds;\r\n+        return getThis();\r\n+    }\r\n+\r\n+    public ServiceBuilder<U> generic(String generic) {\r\n+        this.generic = generic;\r\n+        return getThis();\r\n+    }\r\n+\r\n+//    @Override\r\n+//    public ServiceBuilder<U> mock(String mock) {\r\n+//        throw new IllegalArgumentException(\"mock doesn't support on provider side\");\r\n+//    }\r\n+\r\n+//    @Override\r\n+//    public ServiceBuilder<U> mock(Boolean mock) {\r\n+//        throw new IllegalArgumentException(\"mock doesn't support on provider side\");\r\n+//    }\r\n+\r\n+    public ServiceConfig<U> build() {\r\n+        ServiceConfig<U> serviceConfig = new ServiceConfig<>();\r\n+        super.build(serviceConfig);\r\n+\r\n+        serviceConfig.setInterface(interfaceName);\r\n+        serviceConfig.setInterface(interfaceClass);\r\n+        serviceConfig.setRef(ref);\r\n+        serviceConfig.setPath(path);\r\n+        serviceConfig.setMethods(methods);\r\n+        serviceConfig.setProvider(provider);\r\n+        serviceConfig.setProviderIds(providerIds);\r\n+        serviceConfig.setGeneric(generic);\r\n+\r\n+        return serviceConfig;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected ServiceBuilder<U> getThis() {\r\n+        return this;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/bootstrap/builders/package-info.java", "source2": "org/apache/dubbo/config/bootstrap/builders/package-info.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,21 +1,21 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-/**\n- * A bunch of builder classes to facilitate programming of raw API.\n- * TODO, these are experimental APIs and are possible to change at any time before marked as production.\n- */\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+/**\r\n+ * A bunch of builder classes to facilitate programming of raw API.\r\n+ * TODO, these are experimental APIs and are possible to change at any time before marked as production.\r\n+ */\r\n package org.apache.dubbo.config.bootstrap.builders;\n"}, {"source1": "org/apache/dubbo/config/event/DubboServiceDestroyedEvent.java", "source2": "org/apache/dubbo/config/event/DubboServiceDestroyedEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,32 +1,32 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.event;\n-\n-import org.apache.dubbo.event.Event;\n-\n-/**\n- * An {@link Event Dubbo event} when the Dubbo service is about to be destroyed.\n- *\n- * @see Event\n- * @since 2.7.5\n- */\n-public class DubboServiceDestroyedEvent extends Event {\n-\n-    public DubboServiceDestroyedEvent(Object source) {\n-        super(source);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.event;\r\n+\r\n+import org.apache.dubbo.event.Event;\r\n+\r\n+/**\r\n+ * An {@link Event Dubbo event} when the Dubbo service is about to be destroyed.\r\n+ *\r\n+ * @see Event\r\n+ * @since 2.7.5\r\n+ */\r\n+public class DubboServiceDestroyedEvent extends Event {\r\n+\r\n+    public DubboServiceDestroyedEvent(Object source) {\r\n+        super(source);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/event/DubboShutdownHookRegisteredEvent.java", "source2": "org/apache/dubbo/config/event/DubboShutdownHookRegisteredEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,46 +1,46 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.event;\n-\n-import org.apache.dubbo.config.DubboShutdownHook;\n-import org.apache.dubbo.event.Event;\n-\n-/**\n- * An event raised when the {@link DubboShutdownHook} {@link Runtime#addShutdownHook(Thread) registered} on\n- * {@link ApplicationShutdownHooks JVM ShutdownHooks}\n- *\n- * @see DubboShutdownHook\n- * @see ApplicationShutdownHooks\n- * @since 2.7.5\n- */\n-public class DubboShutdownHookRegisteredEvent extends Event {\n-\n-    /**\n-     * Constructs a prototypical Event.\n-     *\n-     * @param dubboShutdownHook The object on which the Event initially occurred.\n-     * @throws IllegalArgumentException if source is null.\n-     */\n-    public DubboShutdownHookRegisteredEvent(DubboShutdownHook dubboShutdownHook) {\n-        super(dubboShutdownHook);\n-    }\n-\n-    public DubboShutdownHook getDubboShutdownHook() {\n-        return (DubboShutdownHook) getSource();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.event;\r\n+\r\n+import org.apache.dubbo.config.DubboShutdownHook;\r\n+import org.apache.dubbo.event.Event;\r\n+\r\n+/**\r\n+ * An event raised when the {@link DubboShutdownHook} {@link Runtime#addShutdownHook(Thread) registered} on\r\n+ * {@link ApplicationShutdownHooks JVM ShutdownHooks}\r\n+ *\r\n+ * @see DubboShutdownHook\r\n+ * @see ApplicationShutdownHooks\r\n+ * @since 2.7.5\r\n+ */\r\n+public class DubboShutdownHookRegisteredEvent extends Event {\r\n+\r\n+    /**\r\n+     * Constructs a prototypical Event.\r\n+     *\r\n+     * @param dubboShutdownHook The object on which the Event initially occurred.\r\n+     * @throws IllegalArgumentException if source is null.\r\n+     */\r\n+    public DubboShutdownHookRegisteredEvent(DubboShutdownHook dubboShutdownHook) {\r\n+        super(dubboShutdownHook);\r\n+    }\r\n+\r\n+    public DubboShutdownHook getDubboShutdownHook() {\r\n+        return (DubboShutdownHook) getSource();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/event/DubboShutdownHookUnregisteredEvent.java", "source2": "org/apache/dubbo/config/event/DubboShutdownHookUnregisteredEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,45 +1,45 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.event;\n-\n-import org.apache.dubbo.config.DubboShutdownHook;\n-import org.apache.dubbo.event.Event;\n-\n-/**\n- * An event raised when the {@link DubboShutdownHook} {@link Runtime#removeShutdownHook(Thread) unregistered} on\n- * {@link ApplicationShutdownHooks JVM ShutdownHooks}\n- *\n- * @see DubboShutdownHook\n- * @see ApplicationShutdownHooks\n- * @since 2.7.5\n- */\n-public class DubboShutdownHookUnregisteredEvent extends Event {\n-\n-    /**\n-     * Constructs a prototypical Event.\n-     *\n-     * @param dubboShutdownHook The object on which the Event initially occurred.\n-     * @throws IllegalArgumentException if source is null.\n-     */\n-    public DubboShutdownHookUnregisteredEvent(DubboShutdownHook dubboShutdownHook) {\n-        super(dubboShutdownHook);\n-    }\n-\n-    public DubboShutdownHook getDubboShutdownHook() {\n-        return (DubboShutdownHook) getSource();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.event;\r\n+\r\n+import org.apache.dubbo.config.DubboShutdownHook;\r\n+import org.apache.dubbo.event.Event;\r\n+\r\n+/**\r\n+ * An event raised when the {@link DubboShutdownHook} {@link Runtime#removeShutdownHook(Thread) unregistered} on\r\n+ * {@link ApplicationShutdownHooks JVM ShutdownHooks}\r\n+ *\r\n+ * @see DubboShutdownHook\r\n+ * @see ApplicationShutdownHooks\r\n+ * @since 2.7.5\r\n+ */\r\n+public class DubboShutdownHookUnregisteredEvent extends Event {\r\n+\r\n+    /**\r\n+     * Constructs a prototypical Event.\r\n+     *\r\n+     * @param dubboShutdownHook The object on which the Event initially occurred.\r\n+     * @throws IllegalArgumentException if source is null.\r\n+     */\r\n+    public DubboShutdownHookUnregisteredEvent(DubboShutdownHook dubboShutdownHook) {\r\n+        super(dubboShutdownHook);\r\n+    }\r\n+\r\n+    public DubboShutdownHook getDubboShutdownHook() {\r\n+        return (DubboShutdownHook) getSource();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/event/ReferenceConfigDestroyedEvent.java", "source2": "org/apache/dubbo/config/event/ReferenceConfigDestroyedEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,41 +1,41 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.event;\n-\n-import org.apache.dubbo.config.ReferenceConfig;\n-import org.apache.dubbo.config.annotation.Reference;\n-import org.apache.dubbo.event.Event;\n-\n-/**\n- * The {@link ReferenceConfig Dubbo service ReferenceConfig} destroyed {@link Event event}\n- *\n- * @see Reference\n- * @see ReferenceConfig#destroy()\n- * @see Event\n- * @since 2.7.5\n- */\n-public class ReferenceConfigDestroyedEvent extends Event {\n-\n-    public ReferenceConfigDestroyedEvent(ReferenceConfig referenceConfig) {\n-        super(referenceConfig);\n-    }\n-\n-    public ReferenceConfig getReferenceConfig() {\n-        return (ReferenceConfig) getSource();\n-    }\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.event;\r\n+\r\n+import org.apache.dubbo.config.ReferenceConfig;\r\n+import org.apache.dubbo.config.annotation.Reference;\r\n+import org.apache.dubbo.event.Event;\r\n+\r\n+/**\r\n+ * The {@link ReferenceConfig Dubbo service ReferenceConfig} destroyed {@link Event event}\r\n+ *\r\n+ * @see Reference\r\n+ * @see ReferenceConfig#destroy()\r\n+ * @see Event\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ReferenceConfigDestroyedEvent extends Event {\r\n+\r\n+    public ReferenceConfigDestroyedEvent(ReferenceConfig referenceConfig) {\r\n+        super(referenceConfig);\r\n+    }\r\n+\r\n+    public ReferenceConfig getReferenceConfig() {\r\n+        return (ReferenceConfig) getSource();\r\n+    }\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/config/event/ReferenceConfigInitializedEvent.java", "source2": "org/apache/dubbo/config/event/ReferenceConfigInitializedEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,48 +1,48 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.event;\n-\n-import org.apache.dubbo.config.ReferenceConfig;\n-import org.apache.dubbo.config.annotation.Reference;\n-import org.apache.dubbo.event.Event;\n-import org.apache.dubbo.rpc.Invoker;\n-\n-/**\n- * The {@link ReferenceConfig Dubbo service ReferenceConfig} initialized {@link Event event}\n- *\n- * @see Reference\n- * @see ReferenceConfig#get()\n- * @see Event\n- * @since 2.7.5\n- */\n-public class ReferenceConfigInitializedEvent extends Event {\n-\n-    private final Invoker<?> invoker;\n-\n-    public ReferenceConfigInitializedEvent(ReferenceConfig referenceConfig, Invoker<?> invoker) {\n-        super(referenceConfig);\n-        this.invoker = invoker;\n-    }\n-\n-    public ReferenceConfig getReferenceConfig() {\n-        return (ReferenceConfig) getSource();\n-    }\n-\n-    public Invoker<?> getInvoker() {\n-        return invoker;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.event;\r\n+\r\n+import org.apache.dubbo.config.ReferenceConfig;\r\n+import org.apache.dubbo.config.annotation.Reference;\r\n+import org.apache.dubbo.event.Event;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+\r\n+/**\r\n+ * The {@link ReferenceConfig Dubbo service ReferenceConfig} initialized {@link Event event}\r\n+ *\r\n+ * @see Reference\r\n+ * @see ReferenceConfig#get()\r\n+ * @see Event\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ReferenceConfigInitializedEvent extends Event {\r\n+\r\n+    private final Invoker<?> invoker;\r\n+\r\n+    public ReferenceConfigInitializedEvent(ReferenceConfig referenceConfig, Invoker<?> invoker) {\r\n+        super(referenceConfig);\r\n+        this.invoker = invoker;\r\n+    }\r\n+\r\n+    public ReferenceConfig getReferenceConfig() {\r\n+        return (ReferenceConfig) getSource();\r\n+    }\r\n+\r\n+    public Invoker<?> getInvoker() {\r\n+        return invoker;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/event/ServiceConfigExportedEvent.java", "source2": "org/apache/dubbo/config/event/ServiceConfigExportedEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,36 +1,36 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.event;\n-\n-import org.apache.dubbo.config.ServiceConfig;\n-import org.apache.dubbo.event.Event;\n-\n-/**\n- * {@link ServiceConfig} event post-{@link ServiceConfig#export() export}\n- *\n- * @since 2.7.5\n- */\n-public class ServiceConfigExportedEvent extends Event {\n-\n-    public ServiceConfigExportedEvent(ServiceConfig source) {\n-        super(source);\n-    }\n-\n-    public ServiceConfig getServiceConfig() {\n-        return (ServiceConfig) getSource();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.event;\r\n+\r\n+import org.apache.dubbo.config.ServiceConfig;\r\n+import org.apache.dubbo.event.Event;\r\n+\r\n+/**\r\n+ * {@link ServiceConfig} event post-{@link ServiceConfig#export() export}\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ServiceConfigExportedEvent extends Event {\r\n+\r\n+    public ServiceConfigExportedEvent(ServiceConfig source) {\r\n+        super(source);\r\n+    }\r\n+\r\n+    public ServiceConfig getServiceConfig() {\r\n+        return (ServiceConfig) getSource();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/event/ServiceConfigUnexportedEvent.java", "source2": "org/apache/dubbo/config/event/ServiceConfigUnexportedEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,36 +1,36 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.event;\n-\n-import org.apache.dubbo.config.ServiceConfig;\n-import org.apache.dubbo.event.Event;\n-\n-/**\n- * {@link ServiceConfig} event post-{@link ServiceConfig#unexport() unexport}\n- *\n- * @since 2.7.5\n- */\n-public class ServiceConfigUnexportedEvent extends Event {\n-\n-    public ServiceConfigUnexportedEvent(ServiceConfig source) {\n-        super(source);\n-    }\n-\n-    public ServiceConfig getServiceConfig() {\n-        return (ServiceConfig) getSource();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.event;\r\n+\r\n+import org.apache.dubbo.config.ServiceConfig;\r\n+import org.apache.dubbo.event.Event;\r\n+\r\n+/**\r\n+ * {@link ServiceConfig} event post-{@link ServiceConfig#unexport() unexport}\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ServiceConfigUnexportedEvent extends Event {\r\n+\r\n+    public ServiceConfigUnexportedEvent(ServiceConfig source) {\r\n+        super(source);\r\n+    }\r\n+\r\n+    public ServiceConfig getServiceConfig() {\r\n+        return (ServiceConfig) getSource();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/event/listener/LoggingEventListener.java", "source2": "org/apache/dubbo/config/event/listener/LoggingEventListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,51 +1,51 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.event.listener;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.config.event.DubboServiceDestroyedEvent;\n-import org.apache.dubbo.config.event.ServiceConfigExportedEvent;\n-import org.apache.dubbo.event.Event;\n-import org.apache.dubbo.event.GenericEventListener;\n-\n-import static java.lang.String.format;\n-\n-/**\n- * A listener for logging the {@link Event Dubbo event}\n- *\n- * @see ServiceConfigExportedEvent\n- * @since 2.7.5\n- */\n-public class LoggingEventListener extends GenericEventListener {\n-\n-    private static final String NAME = \"Dubbo Service\";\n-\n-    private final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    public void onEvent(DubboServiceDestroyedEvent event) {\n-        if (logger.isInfoEnabled()) {\n-            logger.info(NAME + \" has been destroyed.\");\n-        }\n-    }\n-\n-    private void debug(String pattern, Object... args) {\n-        if (logger.isDebugEnabled()) {\n-            logger.debug(format(pattern, args));\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.event.listener;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.config.event.DubboServiceDestroyedEvent;\r\n+import org.apache.dubbo.config.event.ServiceConfigExportedEvent;\r\n+import org.apache.dubbo.event.Event;\r\n+import org.apache.dubbo.event.GenericEventListener;\r\n+\r\n+import static java.lang.String.format;\r\n+\r\n+/**\r\n+ * A listener for logging the {@link Event Dubbo event}\r\n+ *\r\n+ * @see ServiceConfigExportedEvent\r\n+ * @since 2.7.5\r\n+ */\r\n+public class LoggingEventListener extends GenericEventListener {\r\n+\r\n+    private static final String NAME = \"Dubbo Service\";\r\n+\r\n+    private final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    public void onEvent(DubboServiceDestroyedEvent event) {\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(NAME + \" has been destroyed.\");\r\n+        }\r\n+    }\r\n+\r\n+    private void debug(String pattern, Object... args) {\r\n+        if (logger.isDebugEnabled()) {\r\n+            logger.debug(format(pattern, args));\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/invoker/DelegateProviderMetaDataInvoker.java", "source2": "org/apache/dubbo/config/invoker/DelegateProviderMetaDataInvoker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,67 +1,67 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.invoker;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.config.ServiceConfig;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcException;\n-\n-/**\n- *\n- * A Invoker wrapper that wrap the invoker and all the metadata (ServiceConfig)\n- */\n-public class DelegateProviderMetaDataInvoker<T> implements Invoker {\n-    protected final Invoker<T> invoker;\n-    private ServiceConfig<?> metadata;\n-\n-    public DelegateProviderMetaDataInvoker(Invoker<T> invoker, ServiceConfig<?> metadata) {\n-        this.invoker = invoker;\n-        this.metadata = metadata;\n-    }\n-\n-    @Override\n-    public Class<T> getInterface() {\n-        return invoker.getInterface();\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return invoker.getUrl();\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        return invoker.isAvailable();\n-    }\n-\n-    @Override\n-    public Result invoke(Invocation invocation) throws RpcException {\n-        return invoker.invoke(invocation);\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        invoker.destroy();\n-    }\n-\n-    public ServiceConfig<?> getMetadata() {\n-        return metadata;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.invoker;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.config.ServiceConfig;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+\r\n+/**\r\n+ *\r\n+ * A Invoker wrapper that wrap the invoker and all the metadata (ServiceConfig)\r\n+ */\r\n+public class DelegateProviderMetaDataInvoker<T> implements Invoker {\r\n+    protected final Invoker<T> invoker;\r\n+    private ServiceConfig<?> metadata;\r\n+\r\n+    public DelegateProviderMetaDataInvoker(Invoker<T> invoker, ServiceConfig<?> metadata) {\r\n+        this.invoker = invoker;\r\n+        this.metadata = metadata;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Class<T> getInterface() {\r\n+        return invoker.getInterface();\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return invoker.getUrl();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        return invoker.isAvailable();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Result invoke(Invocation invocation) throws RpcException {\r\n+        return invoker.invoke(invocation);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        invoker.destroy();\r\n+    }\r\n+\r\n+    public ServiceConfig<?> getMetadata() {\r\n+        return metadata;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/metadata/ConfigurableMetadataServiceExporter.java", "source2": "org/apache/dubbo/config/metadata/ConfigurableMetadataServiceExporter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,129 +1,129 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.metadata;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.config.ApplicationConfig;\n-import org.apache.dubbo.config.ProtocolConfig;\n-import org.apache.dubbo.config.RegistryConfig;\n-import org.apache.dubbo.config.ServiceConfig;\n-import org.apache.dubbo.config.context.ConfigManager;\n-import org.apache.dubbo.metadata.MetadataService;\n-import org.apache.dubbo.metadata.MetadataServiceExporter;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-import static java.util.Collections.emptyList;\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\n-\n-/**\n- * {@link MetadataServiceExporter} implementation based on {@link ConfigManager Dubbo configurations}, the clients\n- * should make sure the {@link ApplicationConfig}, {@link RegistryConfig} and {@link ProtocolConfig} are ready before\n- * {@link #export()}.\n- * <p>\n- * Typically, do not worry about their ready status, because they are initialized before\n- * any {@link ServiceConfig} exports, or The Dubbo export will be failed.\n- * <p>\n- * Being aware of it's not a thread-safe implementation.\n- *\n- * @see MetadataServiceExporter\n- * @see ServiceConfig\n- * @see ConfigManager\n- * @since 2.7.5\n- */\n-public class ConfigurableMetadataServiceExporter implements MetadataServiceExporter {\n-\n-    private final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    private final MetadataService metadataService;\n-\n-    private volatile ServiceConfig<MetadataService> serviceConfig;\n-\n-    public ConfigurableMetadataServiceExporter(MetadataService metadataService) {\n-        this.metadataService = metadataService;\n-    }\n-\n-    @Override\n-    public ConfigurableMetadataServiceExporter export() {\n-\n-        if (!isExported()) {\n-\n-            ServiceConfig<MetadataService> serviceConfig = new ServiceConfig<>();\n-            serviceConfig.setApplication(getApplicationConfig());\n-            serviceConfig.setRegistries(getRegistries());\n-            serviceConfig.setProtocol(generateMetadataProtocol());\n-            serviceConfig.setInterface(MetadataService.class);\n-            serviceConfig.setRef(metadataService);\n-            serviceConfig.setGroup(getApplicationConfig().getName());\n-            serviceConfig.setVersion(metadataService.version());\n-\n-            // export\n-            serviceConfig.export();\n-\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"The MetadataService exports urls : \" + serviceConfig.getExportedUrls());\n-            }\n-\n-            this.serviceConfig = serviceConfig;\n-\n-        } else {\n-            if (logger.isWarnEnabled()) {\n-                logger.warn(\"The MetadataService has been exported : \" + serviceConfig.getExportedUrls());\n-            }\n-        }\n-\n-        return this;\n-    }\n-\n-    @Override\n-    public ConfigurableMetadataServiceExporter unexport() {\n-        if (isExported()) {\n-            serviceConfig.unexport();\n-        }\n-        return this;\n-    }\n-\n-    @Override\n-    public List<URL> getExportedURLs() {\n-        return serviceConfig != null ? serviceConfig.getExportedUrls() : emptyList();\n-    }\n-\n-    public boolean isExported() {\n-        return serviceConfig != null && serviceConfig.isExported();\n-    }\n-\n-    private ApplicationConfig getApplicationConfig() {\n-        return ApplicationModel.getConfigManager().getApplication().get();\n-    }\n-\n-    private List<RegistryConfig> getRegistries() {\n-        return new ArrayList<>(ApplicationModel.getConfigManager().getRegistries());\n-    }\n-\n-    private ProtocolConfig generateMetadataProtocol() {\n-        ProtocolConfig defaultProtocol = new ProtocolConfig();\n-        defaultProtocol.setName(DUBBO);\n-        // defaultProtocol.setHost() ?\n-        // auto-increment port\n-        defaultProtocol.setPort(-1);\n-        return defaultProtocol;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.metadata;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.config.ApplicationConfig;\r\n+import org.apache.dubbo.config.ProtocolConfig;\r\n+import org.apache.dubbo.config.RegistryConfig;\r\n+import org.apache.dubbo.config.ServiceConfig;\r\n+import org.apache.dubbo.config.context.ConfigManager;\r\n+import org.apache.dubbo.metadata.MetadataService;\r\n+import org.apache.dubbo.metadata.MetadataServiceExporter;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+\r\n+import static java.util.Collections.emptyList;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\r\n+\r\n+/**\r\n+ * {@link MetadataServiceExporter} implementation based on {@link ConfigManager Dubbo configurations}, the clients\r\n+ * should make sure the {@link ApplicationConfig}, {@link RegistryConfig} and {@link ProtocolConfig} are ready before\r\n+ * {@link #export()}.\r\n+ * <p>\r\n+ * Typically, do not worry about their ready status, because they are initialized before\r\n+ * any {@link ServiceConfig} exports, or The Dubbo export will be failed.\r\n+ * <p>\r\n+ * Being aware of it's not a thread-safe implementation.\r\n+ *\r\n+ * @see MetadataServiceExporter\r\n+ * @see ServiceConfig\r\n+ * @see ConfigManager\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ConfigurableMetadataServiceExporter implements MetadataServiceExporter {\r\n+\r\n+    private final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    private final MetadataService metadataService;\r\n+\r\n+    private volatile ServiceConfig<MetadataService> serviceConfig;\r\n+\r\n+    public ConfigurableMetadataServiceExporter(MetadataService metadataService) {\r\n+        this.metadataService = metadataService;\r\n+    }\r\n+\r\n+    @Override\r\n+    public ConfigurableMetadataServiceExporter export() {\r\n+\r\n+        if (!isExported()) {\r\n+\r\n+            ServiceConfig<MetadataService> serviceConfig = new ServiceConfig<>();\r\n+            serviceConfig.setApplication(getApplicationConfig());\r\n+            serviceConfig.setRegistries(getRegistries());\r\n+            serviceConfig.setProtocol(generateMetadataProtocol());\r\n+            serviceConfig.setInterface(MetadataService.class);\r\n+            serviceConfig.setRef(metadataService);\r\n+            serviceConfig.setGroup(getApplicationConfig().getName());\r\n+            serviceConfig.setVersion(metadataService.version());\r\n+\r\n+            // export\r\n+            serviceConfig.export();\r\n+\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"The MetadataService exports urls : \" + serviceConfig.getExportedUrls());\r\n+            }\r\n+\r\n+            this.serviceConfig = serviceConfig;\r\n+\r\n+        } else {\r\n+            if (logger.isWarnEnabled()) {\r\n+                logger.warn(\"The MetadataService has been exported : \" + serviceConfig.getExportedUrls());\r\n+            }\r\n+        }\r\n+\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public ConfigurableMetadataServiceExporter unexport() {\r\n+        if (isExported()) {\r\n+            serviceConfig.unexport();\r\n+        }\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<URL> getExportedURLs() {\r\n+        return serviceConfig != null ? serviceConfig.getExportedUrls() : emptyList();\r\n+    }\r\n+\r\n+    public boolean isExported() {\r\n+        return serviceConfig != null && serviceConfig.isExported();\r\n+    }\r\n+\r\n+    private ApplicationConfig getApplicationConfig() {\r\n+        return ApplicationModel.getConfigManager().getApplication().get();\r\n+    }\r\n+\r\n+    private List<RegistryConfig> getRegistries() {\r\n+        return new ArrayList<>(ApplicationModel.getConfigManager().getRegistries());\r\n+    }\r\n+\r\n+    private ProtocolConfig generateMetadataProtocol() {\r\n+        ProtocolConfig defaultProtocol = new ProtocolConfig();\r\n+        defaultProtocol.setName(DUBBO);\r\n+        // defaultProtocol.setHost() ?\r\n+        // auto-increment port\r\n+        defaultProtocol.setPort(-1);\r\n+        return defaultProtocol;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/metadata/ServiceInstancePortCustomizer.java", "source2": "org/apache/dubbo/config/metadata/ServiceInstancePortCustomizer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,64 +1,64 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.metadata;\n-\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.config.ProtocolConfig;\n-import org.apache.dubbo.registry.client.DefaultServiceInstance;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.ServiceInstanceCustomizer;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-\n-import java.util.Collection;\n-import java.util.stream.Stream;\n-\n-/**\n- * The {@link ServiceInstanceCustomizer} to customize the {@link ServiceInstance#getPort() port} of service instance.\n- *\n- * @since 2.7.5\n- */\n-public class ServiceInstancePortCustomizer implements ServiceInstanceCustomizer {\n-\n-    @Override\n-    public void customize(ServiceInstance serviceInstance) {\n-\n-        if (serviceInstance.getPort() != null) {\n-            return;\n-        }\n-\n-        Collection<ProtocolConfig> protocols = ApplicationModel.getConfigManager()\n-                .getProtocols();\n-\n-        if (CollectionUtils.isEmpty(protocols)) {\n-            throw new IllegalStateException(\"We should have at least one protocol configured at this point.\");\n-        }\n-\n-        Stream<ProtocolConfig> protocolStream = protocols.stream();\n-        ProtocolConfig protocolConfig = protocolStream\n-                // use rest as service instance's default protocol.\n-                .filter(protocol -> \"rest\".equals(protocol.getName()))\n-                .findFirst()\n-                .orElseGet(() -> protocolStream.findFirst().get());\n-\n-        if (serviceInstance instanceof DefaultServiceInstance) {\n-            DefaultServiceInstance instance = (DefaultServiceInstance) serviceInstance;\n-            if (protocolConfig.getPort() != null) {\n-                instance.setPort(protocolConfig.getPort());\n-            }\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.metadata;\r\n+\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.config.ProtocolConfig;\r\n+import org.apache.dubbo.registry.client.DefaultServiceInstance;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.ServiceInstanceCustomizer;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.stream.Stream;\r\n+\r\n+/**\r\n+ * The {@link ServiceInstanceCustomizer} to customize the {@link ServiceInstance#getPort() port} of service instance.\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ServiceInstancePortCustomizer implements ServiceInstanceCustomizer {\r\n+\r\n+    @Override\r\n+    public void customize(ServiceInstance serviceInstance) {\r\n+\r\n+        if (serviceInstance.getPort() != null) {\r\n+            return;\r\n+        }\r\n+\r\n+        Collection<ProtocolConfig> protocols = ApplicationModel.getConfigManager()\r\n+                .getProtocols();\r\n+\r\n+        if (CollectionUtils.isEmpty(protocols)) {\r\n+            throw new IllegalStateException(\"We should have at least one protocol configured at this point.\");\r\n+        }\r\n+\r\n+        Stream<ProtocolConfig> protocolStream = protocols.stream();\r\n+        ProtocolConfig protocolConfig = protocolStream\r\n+                // use rest as service instance's default protocol.\r\n+                .filter(protocol -> \"rest\".equals(protocol.getName()))\r\n+                .findFirst()\r\n+                .orElseGet(() -> protocolStream.findFirst().get());\r\n+\r\n+        if (serviceInstance instanceof DefaultServiceInstance) {\r\n+            DefaultServiceInstance instance = (DefaultServiceInstance) serviceInstance;\r\n+            if (protocolConfig.getPort() != null) {\r\n+                instance.setPort(protocolConfig.getPort());\r\n+            }\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/utils/ConfigValidationUtils.java", "source2": "org/apache/dubbo/config/utils/ConfigValidationUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,658 +1,658 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.utils;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.URLBuilder;\n-import org.apache.dubbo.common.config.ConfigurationUtils;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.serialize.Serialization;\n-import org.apache.dubbo.common.status.StatusChecker;\n-import org.apache.dubbo.common.threadpool.ThreadPool;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.ConfigUtils;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.common.utils.UrlUtils;\n-import org.apache.dubbo.config.AbstractConfig;\n-import org.apache.dubbo.config.AbstractInterfaceConfig;\n-import org.apache.dubbo.config.ApplicationConfig;\n-import org.apache.dubbo.config.ConfigCenterConfig;\n-import org.apache.dubbo.config.ConsumerConfig;\n-import org.apache.dubbo.config.MetadataReportConfig;\n-import org.apache.dubbo.config.MethodConfig;\n-import org.apache.dubbo.config.MetricsConfig;\n-import org.apache.dubbo.config.ModuleConfig;\n-import org.apache.dubbo.config.MonitorConfig;\n-import org.apache.dubbo.config.ProtocolConfig;\n-import org.apache.dubbo.config.ProviderConfig;\n-import org.apache.dubbo.config.ReferenceConfig;\n-import org.apache.dubbo.config.RegistryConfig;\n-import org.apache.dubbo.config.ServiceConfig;\n-import org.apache.dubbo.config.SslConfig;\n-import org.apache.dubbo.monitor.MonitorFactory;\n-import org.apache.dubbo.monitor.MonitorService;\n-import org.apache.dubbo.registry.RegistryService;\n-import org.apache.dubbo.remoting.Codec2;\n-import org.apache.dubbo.remoting.Dispatcher;\n-import org.apache.dubbo.remoting.Transporter;\n-import org.apache.dubbo.remoting.exchange.Exchanger;\n-import org.apache.dubbo.remoting.telnet.TelnetHandler;\n-import org.apache.dubbo.rpc.ExporterListener;\n-import org.apache.dubbo.rpc.Filter;\n-import org.apache.dubbo.rpc.InvokerListener;\n-import org.apache.dubbo.rpc.ProxyFactory;\n-import org.apache.dubbo.rpc.cluster.Cluster;\n-import org.apache.dubbo.rpc.cluster.LoadBalance;\n-import org.apache.dubbo.rpc.support.MockInvoker;\n-\n-import java.net.InetAddress;\n-import java.net.UnknownHostException;\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.HashMap;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.regex.Matcher;\n-import java.util.regex.Pattern;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_VALUE;\n-import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_PROTOCOL;\n-import static org.apache.dubbo.common.constants.CommonConstants.FILE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.HOST_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.LOADBALANCE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PASSWORD_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.REMOVE_VALUE_PREFIX;\n-import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_SECONDS_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.THREADPOOL_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.USERNAME_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.DUBBO_PUBLISH_INTERFACE_DEFAULT_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_PROTOCOL;\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_PUBLISH_INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_TYPE_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.SERVICE_REGISTRY_PROTOCOL;\n-import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY;\n-import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\n-import static org.apache.dubbo.common.utils.UrlUtils.isServiceDiscoveryRegistryType;\n-import static org.apache.dubbo.config.Constants.ARCHITECTURE;\n-import static org.apache.dubbo.config.Constants.CONTEXTPATH_KEY;\n-import static org.apache.dubbo.config.Constants.DUBBO_IP_TO_REGISTRY;\n-import static org.apache.dubbo.config.Constants.ENVIRONMENT;\n-import static org.apache.dubbo.config.Constants.IGNORE_CHECK_KEYS;\n-import static org.apache.dubbo.config.Constants.LAYER_KEY;\n-import static org.apache.dubbo.config.Constants.NAME;\n-import static org.apache.dubbo.config.Constants.ORGANIZATION;\n-import static org.apache.dubbo.config.Constants.OWNER;\n-import static org.apache.dubbo.config.Constants.STATUS_KEY;\n-import static org.apache.dubbo.monitor.Constants.LOGSTAT_PROTOCOL;\n-import static org.apache.dubbo.registry.Constants.REGISTER_IP_KEY;\n-import static org.apache.dubbo.registry.Constants.REGISTER_KEY;\n-import static org.apache.dubbo.registry.Constants.SUBSCRIBE_KEY;\n-import static org.apache.dubbo.remoting.Constants.CLIENT_KEY;\n-import static org.apache.dubbo.remoting.Constants.CODEC_KEY;\n-import static org.apache.dubbo.remoting.Constants.DISPATCHER_KEY;\n-import static org.apache.dubbo.remoting.Constants.EXCHANGER_KEY;\n-import static org.apache.dubbo.remoting.Constants.SERIALIZATION_KEY;\n-import static org.apache.dubbo.remoting.Constants.SERVER_KEY;\n-import static org.apache.dubbo.remoting.Constants.TELNET;\n-import static org.apache.dubbo.remoting.Constants.TRANSPORTER_KEY;\n-import static org.apache.dubbo.rpc.Constants.FAIL_PREFIX;\n-import static org.apache.dubbo.rpc.Constants.FORCE_PREFIX;\n-import static org.apache.dubbo.rpc.Constants.LOCAL_KEY;\n-import static org.apache.dubbo.rpc.Constants.MOCK_KEY;\n-import static org.apache.dubbo.rpc.Constants.PROXY_KEY;\n-import static org.apache.dubbo.rpc.Constants.RETURN_PREFIX;\n-import static org.apache.dubbo.rpc.Constants.THROW_PREFIX;\n-import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\n-import static org.apache.dubbo.rpc.cluster.Constants.REFER_KEY;\n-\n-public class ConfigValidationUtils {\n-    private static final Logger logger = LoggerFactory.getLogger(ConfigValidationUtils.class);\n-    /**\n-     * The maximum length of a <b>parameter's value</b>\n-     */\n-    private static final int MAX_LENGTH = 200;\n-\n-    /**\n-     * The maximum length of a <b>path</b>\n-     */\n-    private static final int MAX_PATH_LENGTH = 200;\n-\n-    /**\n-     * The rule qualification for <b>name</b>\n-     */\n-    private static final Pattern PATTERN_NAME = Pattern.compile(\"[\\\\-._0-9a-zA-Z]+\");\n-\n-    /**\n-     * The rule qualification for <b>multiply name</b>\n-     */\n-    private static final Pattern PATTERN_MULTI_NAME = Pattern.compile(\"[,\\\\-._0-9a-zA-Z]+\");\n-\n-    /**\n-     * The rule qualification for <b>method names</b>\n-     */\n-    private static final Pattern PATTERN_METHOD_NAME = Pattern.compile(\"[a-zA-Z][0-9a-zA-Z]*\");\n-\n-    /**\n-     * The rule qualification for <b>path</b>\n-     */\n-    private static final Pattern PATTERN_PATH = Pattern.compile(\"[/\\\\-$._0-9a-zA-Z]+\");\n-\n-    /**\n-     * The pattern matches a value who has a symbol\n-     */\n-    private static final Pattern PATTERN_NAME_HAS_SYMBOL = Pattern.compile(\"[:*,\\\\s/\\\\-._0-9a-zA-Z]+\");\n-\n-    /**\n-     * The pattern matches a property key\n-     */\n-    private static final Pattern PATTERN_KEY = Pattern.compile(\"[*,\\\\-._0-9a-zA-Z]+\");\n-\n-    public static final String IPV6_START_MARK = \"[\";\n-\n-    public static final String IPV6_END_MARK = \"]\";\n-\n-\n-    public static List<URL> loadRegistries(AbstractInterfaceConfig interfaceConfig, boolean provider) {\n-        // check && override if necessary\n-        List<URL> registryList = new ArrayList<URL>();\n-        ApplicationConfig application = interfaceConfig.getApplication();\n-        List<RegistryConfig> registries = interfaceConfig.getRegistries();\n-        if (CollectionUtils.isNotEmpty(registries)) {\n-            for (RegistryConfig config : registries) {\n-                String address = config.getAddress();\n-                if (StringUtils.isEmpty(address)) {\n-                    address = ANYHOST_VALUE;\n-                }\n-                if (!RegistryConfig.NO_AVAILABLE.equalsIgnoreCase(address)) {\n-                    Map<String, String> map = new HashMap<String, String>();\n-                    AbstractConfig.appendParameters(map, application);\n-                    AbstractConfig.appendParameters(map, config);\n-                    map.put(PATH_KEY, RegistryService.class.getName());\n-                    AbstractInterfaceConfig.appendRuntimeParameters(map);\n-                    if (!map.containsKey(PROTOCOL_KEY)) {\n-                        map.put(PROTOCOL_KEY, DUBBO_PROTOCOL);\n-                    }\n-                    List<URL> urls = UrlUtils.parseURLs(address, map);\n-\n-                    for (URL url : urls) {\n-\n-                        url = URLBuilder.from(url)\n-                                .addParameter(REGISTRY_KEY, url.getProtocol())\n-                                .setProtocol(extractRegistryType(url))\n-                                .build();\n-                        if ((provider && url.getParameter(REGISTER_KEY, true))\n-                                || (!provider && url.getParameter(SUBSCRIBE_KEY, true))) {\n-                            registryList.add(url);\n-                        }\n-                    }\n-                }\n-            }\n-        }\n-        return genCompatibleRegistries(registryList, provider);\n-    }\n-\n-    private static List<URL> genCompatibleRegistries(List<URL> registryList, boolean provider) {\n-        List<URL> result = new ArrayList<>(registryList.size());\n-        registryList.forEach(registryURL -> {\n-            result.add(registryURL);\n-            if (provider) {\n-                // for registries enabled service discovery, automatically register interface compatible addresses.\n-                if (SERVICE_REGISTRY_PROTOCOL.equals(registryURL.getProtocol())\n-                        && registryURL.getParameter(REGISTRY_PUBLISH_INTERFACE_KEY, ConfigurationUtils.getDynamicGlobalConfiguration().getBoolean(DUBBO_PUBLISH_INTERFACE_DEFAULT_KEY, false))\n-                        && registryNotExists(registryURL, registryList, REGISTRY_PROTOCOL)) {\n-                    URL interfaceCompatibleRegistryURL = URLBuilder.from(registryURL)\n-                            .setProtocol(REGISTRY_PROTOCOL)\n-                            .removeParameter(REGISTRY_TYPE_KEY)\n-                            .build();\n-                    result.add(interfaceCompatibleRegistryURL);\n-                }\n-            }\n-        });\n-        return result;\n-    }\n-\n-    private static boolean registryNotExists(URL registryURL, List<URL> registryList, String registryType) {\n-        return registryList.stream().noneMatch(\n-                url -> registryType.equals(url.getProtocol()) && registryURL.getBackupAddress().equals(url.getBackupAddress())\n-        );\n-    }\n-\n-    public static URL loadMonitor(AbstractInterfaceConfig interfaceConfig, URL registryURL) {\n-        Map<String, String> map = new HashMap<String, String>();\n-        map.put(INTERFACE_KEY, MonitorService.class.getName());\n-        AbstractInterfaceConfig.appendRuntimeParameters(map);\n-        //set ip\n-        String hostToRegistry = ConfigUtils.getSystemProperty(DUBBO_IP_TO_REGISTRY);\n-        if (StringUtils.isEmpty(hostToRegistry)) {\n-            hostToRegistry = NetUtils.getLocalHost();\n-        } else if (NetUtils.isInvalidLocalHost(hostToRegistry)) {\n-            throw new IllegalArgumentException(\"Specified invalid registry ip from property:\" +\n-                    DUBBO_IP_TO_REGISTRY + \", value:\" + hostToRegistry);\n-        }\n-        map.put(REGISTER_IP_KEY, hostToRegistry);\n-\n-        MonitorConfig monitor = interfaceConfig.getMonitor();\n-        ApplicationConfig application = interfaceConfig.getApplication();\n-        AbstractConfig.appendParameters(map, monitor);\n-        AbstractConfig.appendParameters(map, application);\n-        String address = null;\n-        String sysaddress = System.getProperty(\"dubbo.monitor.address\");\n-        if (sysaddress != null && sysaddress.length() > 0) {\n-            address = sysaddress;\n-        } else if (monitor != null) {\n-            address = monitor.getAddress();\n-        }\n-        if (ConfigUtils.isNotEmpty(address)) {\n-            if (!map.containsKey(PROTOCOL_KEY)) {\n-                if (getExtensionLoader(MonitorFactory.class).hasExtension(LOGSTAT_PROTOCOL)) {\n-                    map.put(PROTOCOL_KEY, LOGSTAT_PROTOCOL);\n-                } else {\n-                    map.put(PROTOCOL_KEY, DUBBO_PROTOCOL);\n-                }\n-            }\n-            return UrlUtils.parseURL(address, map);\n-        } else if (monitor != null &&\n-                (REGISTRY_PROTOCOL.equals(monitor.getProtocol()) || SERVICE_REGISTRY_PROTOCOL.equals(monitor.getProtocol()))\n-                && registryURL != null) {\n-            return URLBuilder.from(registryURL)\n-                    .setProtocol(DUBBO_PROTOCOL)\n-                    .addParameter(PROTOCOL_KEY, monitor.getProtocol())\n-                    .addParameterAndEncoded(REFER_KEY, StringUtils.toQueryString(map))\n-                    .build();\n-        }\n-        return null;\n-    }\n-\n-    /**\n-     * Legitimacy check and setup of local simulated operations. The operations can be a string with Simple operation or\n-     * a classname whose {@link Class} implements a particular function\n-     *\n-     * @param interfaceClass for provider side, it is the {@link Class} of the service that will be exported; for consumer\n-     *                       side, it is the {@link Class} of the remote service interface that will be referenced\n-     */\n-    public static void checkMock(Class<?> interfaceClass, AbstractInterfaceConfig config) {\n-        String mock = config.getMock();\n-        if (ConfigUtils.isEmpty(mock)) {\n-            return;\n-        }\n-\n-        String normalizedMock = MockInvoker.normalizeMock(mock);\n-        if (normalizedMock.startsWith(RETURN_PREFIX)) {\n-            normalizedMock = normalizedMock.substring(RETURN_PREFIX.length()).trim();\n-            try {\n-                //Check whether the mock value is legal, if it is illegal, throw exception\n-                MockInvoker.parseMockValue(normalizedMock);\n-            } catch (Exception e) {\n-                throw new IllegalStateException(\"Illegal mock return in <dubbo:service/reference ... \" +\n-                        \"mock=\\\"\" + mock + \"\\\" />\");\n-            }\n-        } else if (normalizedMock.startsWith(THROW_PREFIX)) {\n-            normalizedMock = normalizedMock.substring(THROW_PREFIX.length()).trim();\n-            if (ConfigUtils.isNotEmpty(normalizedMock)) {\n-                try {\n-                    //Check whether the mock value is legal\n-                    MockInvoker.getThrowable(normalizedMock);\n-                } catch (Exception e) {\n-                    throw new IllegalStateException(\"Illegal mock throw in <dubbo:service/reference ... \" +\n-                            \"mock=\\\"\" + mock + \"\\\" />\");\n-                }\n-            }\n-        } else {\n-            //Check whether the mock class is a implementation of the interfaceClass, and if it has a default constructor\n-            MockInvoker.getMockObject(normalizedMock, interfaceClass);\n-        }\n-    }\n-\n-    public static void validateAbstractInterfaceConfig(AbstractInterfaceConfig config) {\n-        checkName(LOCAL_KEY, config.getLocal());\n-        checkName(\"stub\", config.getStub());\n-        checkMultiName(\"owner\", config.getOwner());\n-\n-        checkExtension(ProxyFactory.class, PROXY_KEY, config.getProxy());\n-        checkExtension(Cluster.class, CLUSTER_KEY, config.getCluster());\n-        checkMultiExtension(Filter.class, FILE_KEY, config.getFilter());\n-        checkNameHasSymbol(LAYER_KEY, config.getLayer());\n-\n-        List<MethodConfig> methods = config.getMethods();\n-        if (CollectionUtils.isNotEmpty(methods)) {\n-            methods.forEach(ConfigValidationUtils::validateMethodConfig);\n-        }\n-    }\n-\n-    public static void validateServiceConfig(ServiceConfig config) {\n-        checkKey(VERSION_KEY, config.getVersion());\n-        checkKey(GROUP_KEY, config.getGroup());\n-        checkName(TOKEN_KEY, config.getToken());\n-        checkPathName(PATH_KEY, config.getPath());\n-\n-        checkMultiExtension(ExporterListener.class, \"listener\", config.getListener());\n-\n-        validateAbstractInterfaceConfig(config);\n-\n-        List<RegistryConfig> registries = config.getRegistries();\n-        if (registries != null) {\n-            for (RegistryConfig registry : registries) {\n-                validateRegistryConfig(registry);\n-            }\n-        }\n-\n-        List<ProtocolConfig> protocols = config.getProtocols();\n-        if (protocols != null) {\n-            for (ProtocolConfig protocol : protocols) {\n-                validateProtocolConfig(protocol);\n-            }\n-        }\n-\n-        ProviderConfig providerConfig = config.getProvider();\n-        if (providerConfig != null) {\n-            validateProviderConfig(providerConfig);\n-        }\n-    }\n-\n-    public static void validateReferenceConfig(ReferenceConfig config) {\n-        checkMultiExtension(InvokerListener.class, \"listener\", config.getListener());\n-        checkKey(VERSION_KEY, config.getVersion());\n-        checkKey(GROUP_KEY, config.getGroup());\n-        checkName(CLIENT_KEY, config.getClient());\n-\n-        validateAbstractInterfaceConfig(config);\n-\n-        List<RegistryConfig> registries = config.getRegistries();\n-        if (registries != null) {\n-            for (RegistryConfig registry : registries) {\n-                validateRegistryConfig(registry);\n-            }\n-        }\n-\n-        ConsumerConfig consumerConfig = config.getConsumer();\n-        if (consumerConfig != null) {\n-            validateConsumerConfig(consumerConfig);\n-        }\n-    }\n-\n-    public static void validateConfigCenterConfig(ConfigCenterConfig config) {\n-        if (config != null) {\n-            checkParameterName(config.getParameters());\n-        }\n-    }\n-\n-    public static void validateApplicationConfig(ApplicationConfig config) {\n-        if (config == null) {\n-            return;\n-        }\n-\n-        if (!config.isValid()) {\n-            throw new IllegalStateException(\"No application config found or it's not a valid config! \" +\n-                    \"Please add <dubbo:application name=\\\"...\\\" /> to your spring config.\");\n-        }\n-\n-        // backward compatibility\n-        String wait = ConfigUtils.getProperty(SHUTDOWN_WAIT_KEY);\n-        if (wait != null && wait.trim().length() > 0) {\n-            System.setProperty(SHUTDOWN_WAIT_KEY, wait.trim());\n-        } else {\n-            wait = ConfigUtils.getProperty(SHUTDOWN_WAIT_SECONDS_KEY);\n-            if (wait != null && wait.trim().length() > 0) {\n-                System.setProperty(SHUTDOWN_WAIT_SECONDS_KEY, wait.trim());\n-            }\n-        }\n-\n-        checkName(NAME, config.getName());\n-        checkMultiName(OWNER, config.getOwner());\n-        checkName(ORGANIZATION, config.getOrganization());\n-        checkName(ARCHITECTURE, config.getArchitecture());\n-        checkName(ENVIRONMENT, config.getEnvironment());\n-        checkParameterName(config.getParameters());\n-    }\n-\n-    public static void validateModuleConfig(ModuleConfig config) {\n-        if (config != null) {\n-            checkName(NAME, config.getName());\n-            checkName(OWNER, config.getOwner());\n-            checkName(ORGANIZATION, config.getOrganization());\n-        }\n-    }\n-\n-    public static void validateMetadataConfig(MetadataReportConfig metadataReportConfig) {\n-        if (metadataReportConfig == null) {\n-            return;\n-        }\n-    }\n-\n-    public static void validateMetricsConfig(MetricsConfig metricsConfig) {\n-        if (metricsConfig == null) {\n-            return;\n-        }\n-    }\n-\n-    public static void validateSslConfig(SslConfig sslConfig) {\n-        if (sslConfig == null) {\n-            return;\n-        }\n-    }\n-\n-    public static void validateMonitorConfig(MonitorConfig config) {\n-        if (config != null) {\n-            if (!config.isValid()) {\n-                logger.info(\"There's no valid monitor config found, if you want to open monitor statistics for Dubbo, \" +\n-                        \"please make sure your monitor is configured properly.\");\n-            }\n-\n-            checkParameterName(config.getParameters());\n-        }\n-    }\n-\n-    public static void validateProtocolConfig(ProtocolConfig config) {\n-        if (config != null) {\n-            String name = config.getName();\n-            checkName(\"name\", name);\n-            checkHost(HOST_KEY, config.getHost());\n-            checkPathName(\"contextpath\", config.getContextpath());\n-\n-\n-            if (DUBBO_PROTOCOL.equals(name)) {\n-                checkMultiExtension(Codec2.class, CODEC_KEY, config.getCodec());\n-                checkMultiExtension(Serialization.class, SERIALIZATION_KEY, config.getSerialization());\n-                checkMultiExtension(Transporter.class, SERVER_KEY, config.getServer());\n-                checkMultiExtension(Transporter.class, CLIENT_KEY, config.getClient());\n-            }\n-\n-            checkMultiExtension(TelnetHandler.class, TELNET, config.getTelnet());\n-            checkMultiExtension(StatusChecker.class, \"status\", config.getStatus());\n-            checkExtension(Transporter.class, TRANSPORTER_KEY, config.getTransporter());\n-            checkExtension(Exchanger.class, EXCHANGER_KEY, config.getExchanger());\n-            checkExtension(Dispatcher.class, DISPATCHER_KEY, config.getDispatcher());\n-            checkExtension(Dispatcher.class, \"dispather\", config.getDispather());\n-            checkExtension(ThreadPool.class, THREADPOOL_KEY, config.getThreadpool());\n-        }\n-    }\n-\n-    public static void validateProviderConfig(ProviderConfig config) {\n-        checkPathName(CONTEXTPATH_KEY, config.getContextpath());\n-        checkExtension(ThreadPool.class, THREADPOOL_KEY, config.getThreadpool());\n-        checkMultiExtension(TelnetHandler.class, TELNET, config.getTelnet());\n-        checkMultiExtension(StatusChecker.class, STATUS_KEY, config.getStatus());\n-        checkExtension(Transporter.class, TRANSPORTER_KEY, config.getTransporter());\n-        checkExtension(Exchanger.class, EXCHANGER_KEY, config.getExchanger());\n-    }\n-\n-    public static void validateConsumerConfig(ConsumerConfig config) {\n-        if (config == null) {\n-            return;\n-        }\n-    }\n-\n-    public static void validateRegistryConfig(RegistryConfig config) {\n-        checkName(PROTOCOL_KEY, config.getProtocol());\n-        checkName(USERNAME_KEY, config.getUsername());\n-        checkLength(PASSWORD_KEY, config.getPassword());\n-        checkPathLength(FILE_KEY, config.getFile());\n-        checkName(TRANSPORTER_KEY, config.getTransporter());\n-        checkName(SERVER_KEY, config.getServer());\n-        checkName(CLIENT_KEY, config.getClient());\n-        checkParameterName(config.getParameters());\n-    }\n-\n-    public static void validateMethodConfig(MethodConfig config) {\n-        checkExtension(LoadBalance.class, LOADBALANCE_KEY, config.getLoadbalance());\n-        checkParameterName(config.getParameters());\n-        checkMethodName(\"name\", config.getName());\n-\n-        String mock = config.getMock();\n-        if (StringUtils.isNotEmpty(mock)) {\n-            if (mock.startsWith(RETURN_PREFIX) || mock.startsWith(THROW_PREFIX + \" \")) {\n-                checkLength(MOCK_KEY, mock);\n-            } else if (mock.startsWith(FAIL_PREFIX) || mock.startsWith(FORCE_PREFIX)) {\n-                checkNameHasSymbol(MOCK_KEY, mock);\n-            } else {\n-                checkName(MOCK_KEY, mock);\n-            }\n-        }\n-    }\n-\n-    private static String extractRegistryType(URL url) {\n-        return isServiceDiscoveryRegistryType(url) ? SERVICE_REGISTRY_PROTOCOL : REGISTRY_PROTOCOL;\n-    }\n-\n-    public static void checkExtension(Class<?> type, String property, String value) {\n-        checkName(property, value);\n-        if (StringUtils.isNotEmpty(value)\n-                && !ExtensionLoader.getExtensionLoader(type).hasExtension(value)) {\n-            throw new IllegalStateException(\"No such extension \" + value + \" for \" + property + \"/\" + type.getName());\n-        }\n-    }\n-\n-    /**\n-     * Check whether there is a <code>Extension</code> who's name (property) is <code>value</code> (special treatment is\n-     * required)\n-     *\n-     * @param type     The Extension type\n-     * @param property The extension key\n-     * @param value    The Extension name\n-     */\n-    public static void checkMultiExtension(Class<?> type, String property, String value) {\n-        checkMultiName(property, value);\n-        if (StringUtils.isNotEmpty(value)) {\n-            String[] values = value.split(\"\\\\s*[,]+\\\\s*\");\n-            for (String v : values) {\n-                if (v.startsWith(REMOVE_VALUE_PREFIX)) {\n-                    v = v.substring(1);\n-                }\n-                if (DEFAULT_KEY.equals(v)) {\n-                    continue;\n-                }\n-                if (!ExtensionLoader.getExtensionLoader(type).hasExtension(v)) {\n-                    throw new IllegalStateException(\"No such extension \" + v + \" for \" + property + \"/\" + type.getName());\n-                }\n-            }\n-        }\n-    }\n-\n-    public static void checkLength(String property, String value) {\n-        checkProperty(property, value, MAX_LENGTH, null);\n-    }\n-\n-    public static void checkPathLength(String property, String value) {\n-        checkProperty(property, value, MAX_PATH_LENGTH, null);\n-    }\n-\n-    public static void checkName(String property, String value) {\n-        checkProperty(property, value, MAX_LENGTH, PATTERN_NAME);\n-    }\n-\n-    public static void checkHost(String property, String value) {\n-        if (StringUtils.isEmpty(value)) {\n-            return;\n-        }\n-        if (value.startsWith(IPV6_START_MARK) && value.endsWith(IPV6_END_MARK)) {\n-            // if the value start with \"[\" and end with \"]\", check whether it is IPV6\n-            try {\n-                InetAddress.getByName(value);\n-                return;\n-            } catch (UnknownHostException e) {\n-                // not a IPv6 string, do nothing, go on to checkName\n-            }\n-        }\n-        checkName(property, value);\n-    }\n-\n-    public static void checkNameHasSymbol(String property, String value) {\n-        checkProperty(property, value, MAX_LENGTH, PATTERN_NAME_HAS_SYMBOL);\n-    }\n-\n-    public static void checkKey(String property, String value) {\n-        checkProperty(property, value, MAX_LENGTH, PATTERN_KEY);\n-    }\n-\n-    public static void checkMultiName(String property, String value) {\n-        checkProperty(property, value, MAX_LENGTH, PATTERN_MULTI_NAME);\n-    }\n-\n-    public static void checkPathName(String property, String value) {\n-        checkProperty(property, value, MAX_PATH_LENGTH, PATTERN_PATH);\n-    }\n-\n-    public static void checkMethodName(String property, String value) {\n-        checkProperty(property, value, MAX_LENGTH, PATTERN_METHOD_NAME);\n-    }\n-\n-    public static void checkParameterName(Map<String, String> parameters) {\n-        if (CollectionUtils.isEmptyMap(parameters)) {\n-            return;\n-        }\n-        List<String> ignoreCheckKeys = new ArrayList<>();\n-        ignoreCheckKeys.add(BACKUP_KEY);\n-        String ignoreCheckKeysStr = parameters.get(IGNORE_CHECK_KEYS);\n-        if (!StringUtils.isBlank(ignoreCheckKeysStr)) {\n-            ignoreCheckKeys.addAll(Arrays.asList(ignoreCheckKeysStr.split(\",\")));\n-        }\n-        for (Map.Entry<String, String> entry : parameters.entrySet()) {\n-            if (!ignoreCheckKeys.contains(entry.getKey())) {\n-                checkNameHasSymbol(entry.getKey(), entry.getValue());\n-            }\n-        }\n-    }\n-\n-    public static void checkProperty(String property, String value, int maxlength, Pattern pattern) {\n-        if (StringUtils.isEmpty(value)) {\n-            return;\n-        }\n-        if (value.length() > maxlength) {\n-            throw new IllegalStateException(\"Invalid \" + property + \"=\\\"\" + value + \"\\\" is longer than \" + maxlength);\n-        }\n-        if (pattern != null) {\n-            Matcher matcher = pattern.matcher(value);\n-            if (!matcher.matches()) {\n-                throw new IllegalStateException(\"Invalid \" + property + \"=\\\"\" + value + \"\\\" contains illegal \" +\n-                        \"character, only digit, letter, '-', '_' or '.' is legal.\");\n-            }\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.utils;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.URLBuilder;\r\n+import org.apache.dubbo.common.config.ConfigurationUtils;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+import org.apache.dubbo.common.status.StatusChecker;\r\n+import org.apache.dubbo.common.threadpool.ThreadPool;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.ConfigUtils;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.common.utils.UrlUtils;\r\n+import org.apache.dubbo.config.AbstractConfig;\r\n+import org.apache.dubbo.config.AbstractInterfaceConfig;\r\n+import org.apache.dubbo.config.ApplicationConfig;\r\n+import org.apache.dubbo.config.ConfigCenterConfig;\r\n+import org.apache.dubbo.config.ConsumerConfig;\r\n+import org.apache.dubbo.config.MetadataReportConfig;\r\n+import org.apache.dubbo.config.MethodConfig;\r\n+import org.apache.dubbo.config.MetricsConfig;\r\n+import org.apache.dubbo.config.ModuleConfig;\r\n+import org.apache.dubbo.config.MonitorConfig;\r\n+import org.apache.dubbo.config.ProtocolConfig;\r\n+import org.apache.dubbo.config.ProviderConfig;\r\n+import org.apache.dubbo.config.ReferenceConfig;\r\n+import org.apache.dubbo.config.RegistryConfig;\r\n+import org.apache.dubbo.config.ServiceConfig;\r\n+import org.apache.dubbo.config.SslConfig;\r\n+import org.apache.dubbo.monitor.MonitorFactory;\r\n+import org.apache.dubbo.monitor.MonitorService;\r\n+import org.apache.dubbo.registry.RegistryService;\r\n+import org.apache.dubbo.remoting.Codec2;\r\n+import org.apache.dubbo.remoting.Dispatcher;\r\n+import org.apache.dubbo.remoting.Transporter;\r\n+import org.apache.dubbo.remoting.exchange.Exchanger;\r\n+import org.apache.dubbo.remoting.telnet.TelnetHandler;\r\n+import org.apache.dubbo.rpc.ExporterListener;\r\n+import org.apache.dubbo.rpc.Filter;\r\n+import org.apache.dubbo.rpc.InvokerListener;\r\n+import org.apache.dubbo.rpc.ProxyFactory;\r\n+import org.apache.dubbo.rpc.cluster.Cluster;\r\n+import org.apache.dubbo.rpc.cluster.LoadBalance;\r\n+import org.apache.dubbo.rpc.support.MockInvoker;\r\n+\r\n+import java.net.InetAddress;\r\n+import java.net.UnknownHostException;\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.HashMap;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.regex.Matcher;\r\n+import java.util.regex.Pattern;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_VALUE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_PROTOCOL;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.FILE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.HOST_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.LOADBALANCE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PASSWORD_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REMOVE_VALUE_PREFIX;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_SECONDS_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.THREADPOOL_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.USERNAME_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.DUBBO_PUBLISH_INTERFACE_DEFAULT_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_PROTOCOL;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_PUBLISH_INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_TYPE_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.SERVICE_REGISTRY_PROTOCOL;\r\n+import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY;\r\n+import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\r\n+import static org.apache.dubbo.common.utils.UrlUtils.isServiceDiscoveryRegistryType;\r\n+import static org.apache.dubbo.config.Constants.ARCHITECTURE;\r\n+import static org.apache.dubbo.config.Constants.CONTEXTPATH_KEY;\r\n+import static org.apache.dubbo.config.Constants.DUBBO_IP_TO_REGISTRY;\r\n+import static org.apache.dubbo.config.Constants.ENVIRONMENT;\r\n+import static org.apache.dubbo.config.Constants.IGNORE_CHECK_KEYS;\r\n+import static org.apache.dubbo.config.Constants.LAYER_KEY;\r\n+import static org.apache.dubbo.config.Constants.NAME;\r\n+import static org.apache.dubbo.config.Constants.ORGANIZATION;\r\n+import static org.apache.dubbo.config.Constants.OWNER;\r\n+import static org.apache.dubbo.config.Constants.STATUS_KEY;\r\n+import static org.apache.dubbo.monitor.Constants.LOGSTAT_PROTOCOL;\r\n+import static org.apache.dubbo.registry.Constants.REGISTER_IP_KEY;\r\n+import static org.apache.dubbo.registry.Constants.REGISTER_KEY;\r\n+import static org.apache.dubbo.registry.Constants.SUBSCRIBE_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CLIENT_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CODEC_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.DISPATCHER_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.EXCHANGER_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.SERIALIZATION_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.SERVER_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.TELNET;\r\n+import static org.apache.dubbo.remoting.Constants.TRANSPORTER_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.FAIL_PREFIX;\r\n+import static org.apache.dubbo.rpc.Constants.FORCE_PREFIX;\r\n+import static org.apache.dubbo.rpc.Constants.LOCAL_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.MOCK_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.PROXY_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.RETURN_PREFIX;\r\n+import static org.apache.dubbo.rpc.Constants.THROW_PREFIX;\r\n+import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.REFER_KEY;\r\n+\r\n+public class ConfigValidationUtils {\r\n+    private static final Logger logger = LoggerFactory.getLogger(ConfigValidationUtils.class);\r\n+    /**\r\n+     * The maximum length of a <b>parameter's value</b>\r\n+     */\r\n+    private static final int MAX_LENGTH = 200;\r\n+\r\n+    /**\r\n+     * The maximum length of a <b>path</b>\r\n+     */\r\n+    private static final int MAX_PATH_LENGTH = 200;\r\n+\r\n+    /**\r\n+     * The rule qualification for <b>name</b>\r\n+     */\r\n+    private static final Pattern PATTERN_NAME = Pattern.compile(\"[\\\\-._0-9a-zA-Z]+\");\r\n+\r\n+    /**\r\n+     * The rule qualification for <b>multiply name</b>\r\n+     */\r\n+    private static final Pattern PATTERN_MULTI_NAME = Pattern.compile(\"[,\\\\-._0-9a-zA-Z]+\");\r\n+\r\n+    /**\r\n+     * The rule qualification for <b>method names</b>\r\n+     */\r\n+    private static final Pattern PATTERN_METHOD_NAME = Pattern.compile(\"[a-zA-Z][0-9a-zA-Z]*\");\r\n+\r\n+    /**\r\n+     * The rule qualification for <b>path</b>\r\n+     */\r\n+    private static final Pattern PATTERN_PATH = Pattern.compile(\"[/\\\\-$._0-9a-zA-Z]+\");\r\n+\r\n+    /**\r\n+     * The pattern matches a value who has a symbol\r\n+     */\r\n+    private static final Pattern PATTERN_NAME_HAS_SYMBOL = Pattern.compile(\"[:*,\\\\s/\\\\-._0-9a-zA-Z]+\");\r\n+\r\n+    /**\r\n+     * The pattern matches a property key\r\n+     */\r\n+    private static final Pattern PATTERN_KEY = Pattern.compile(\"[*,\\\\-._0-9a-zA-Z]+\");\r\n+\r\n+    public static final String IPV6_START_MARK = \"[\";\r\n+\r\n+    public static final String IPV6_END_MARK = \"]\";\r\n+\r\n+\r\n+    public static List<URL> loadRegistries(AbstractInterfaceConfig interfaceConfig, boolean provider) {\r\n+        // check && override if necessary\r\n+        List<URL> registryList = new ArrayList<URL>();\r\n+        ApplicationConfig application = interfaceConfig.getApplication();\r\n+        List<RegistryConfig> registries = interfaceConfig.getRegistries();\r\n+        if (CollectionUtils.isNotEmpty(registries)) {\r\n+            for (RegistryConfig config : registries) {\r\n+                String address = config.getAddress();\r\n+                if (StringUtils.isEmpty(address)) {\r\n+                    address = ANYHOST_VALUE;\r\n+                }\r\n+                if (!RegistryConfig.NO_AVAILABLE.equalsIgnoreCase(address)) {\r\n+                    Map<String, String> map = new HashMap<String, String>();\r\n+                    AbstractConfig.appendParameters(map, application);\r\n+                    AbstractConfig.appendParameters(map, config);\r\n+                    map.put(PATH_KEY, RegistryService.class.getName());\r\n+                    AbstractInterfaceConfig.appendRuntimeParameters(map);\r\n+                    if (!map.containsKey(PROTOCOL_KEY)) {\r\n+                        map.put(PROTOCOL_KEY, DUBBO_PROTOCOL);\r\n+                    }\r\n+                    List<URL> urls = UrlUtils.parseURLs(address, map);\r\n+\r\n+                    for (URL url : urls) {\r\n+\r\n+                        url = URLBuilder.from(url)\r\n+                                .addParameter(REGISTRY_KEY, url.getProtocol())\r\n+                                .setProtocol(extractRegistryType(url))\r\n+                                .build();\r\n+                        if ((provider && url.getParameter(REGISTER_KEY, true))\r\n+                                || (!provider && url.getParameter(SUBSCRIBE_KEY, true))) {\r\n+                            registryList.add(url);\r\n+                        }\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+        return genCompatibleRegistries(registryList, provider);\r\n+    }\r\n+\r\n+    private static List<URL> genCompatibleRegistries(List<URL> registryList, boolean provider) {\r\n+        List<URL> result = new ArrayList<>(registryList.size());\r\n+        registryList.forEach(registryURL -> {\r\n+            result.add(registryURL);\r\n+            if (provider) {\r\n+                // for registries enabled service discovery, automatically register interface compatible addresses.\r\n+                if (SERVICE_REGISTRY_PROTOCOL.equals(registryURL.getProtocol())\r\n+                        && registryURL.getParameter(REGISTRY_PUBLISH_INTERFACE_KEY, ConfigurationUtils.getDynamicGlobalConfiguration().getBoolean(DUBBO_PUBLISH_INTERFACE_DEFAULT_KEY, false))\r\n+                        && registryNotExists(registryURL, registryList, REGISTRY_PROTOCOL)) {\r\n+                    URL interfaceCompatibleRegistryURL = URLBuilder.from(registryURL)\r\n+                            .setProtocol(REGISTRY_PROTOCOL)\r\n+                            .removeParameter(REGISTRY_TYPE_KEY)\r\n+                            .build();\r\n+                    result.add(interfaceCompatibleRegistryURL);\r\n+                }\r\n+            }\r\n+        });\r\n+        return result;\r\n+    }\r\n+\r\n+    private static boolean registryNotExists(URL registryURL, List<URL> registryList, String registryType) {\r\n+        return registryList.stream().noneMatch(\r\n+                url -> registryType.equals(url.getProtocol()) && registryURL.getBackupAddress().equals(url.getBackupAddress())\r\n+        );\r\n+    }\r\n+\r\n+    public static URL loadMonitor(AbstractInterfaceConfig interfaceConfig, URL registryURL) {\r\n+        Map<String, String> map = new HashMap<String, String>();\r\n+        map.put(INTERFACE_KEY, MonitorService.class.getName());\r\n+        AbstractInterfaceConfig.appendRuntimeParameters(map);\r\n+        //set ip\r\n+        String hostToRegistry = ConfigUtils.getSystemProperty(DUBBO_IP_TO_REGISTRY);\r\n+        if (StringUtils.isEmpty(hostToRegistry)) {\r\n+            hostToRegistry = NetUtils.getLocalHost();\r\n+        } else if (NetUtils.isInvalidLocalHost(hostToRegistry)) {\r\n+            throw new IllegalArgumentException(\"Specified invalid registry ip from property:\" +\r\n+                    DUBBO_IP_TO_REGISTRY + \", value:\" + hostToRegistry);\r\n+        }\r\n+        map.put(REGISTER_IP_KEY, hostToRegistry);\r\n+\r\n+        MonitorConfig monitor = interfaceConfig.getMonitor();\r\n+        ApplicationConfig application = interfaceConfig.getApplication();\r\n+        AbstractConfig.appendParameters(map, monitor);\r\n+        AbstractConfig.appendParameters(map, application);\r\n+        String address = null;\r\n+        String sysaddress = System.getProperty(\"dubbo.monitor.address\");\r\n+        if (sysaddress != null && sysaddress.length() > 0) {\r\n+            address = sysaddress;\r\n+        } else if (monitor != null) {\r\n+            address = monitor.getAddress();\r\n+        }\r\n+        if (ConfigUtils.isNotEmpty(address)) {\r\n+            if (!map.containsKey(PROTOCOL_KEY)) {\r\n+                if (getExtensionLoader(MonitorFactory.class).hasExtension(LOGSTAT_PROTOCOL)) {\r\n+                    map.put(PROTOCOL_KEY, LOGSTAT_PROTOCOL);\r\n+                } else {\r\n+                    map.put(PROTOCOL_KEY, DUBBO_PROTOCOL);\r\n+                }\r\n+            }\r\n+            return UrlUtils.parseURL(address, map);\r\n+        } else if (monitor != null &&\r\n+                (REGISTRY_PROTOCOL.equals(monitor.getProtocol()) || SERVICE_REGISTRY_PROTOCOL.equals(monitor.getProtocol()))\r\n+                && registryURL != null) {\r\n+            return URLBuilder.from(registryURL)\r\n+                    .setProtocol(DUBBO_PROTOCOL)\r\n+                    .addParameter(PROTOCOL_KEY, monitor.getProtocol())\r\n+                    .addParameterAndEncoded(REFER_KEY, StringUtils.toQueryString(map))\r\n+                    .build();\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    /**\r\n+     * Legitimacy check and setup of local simulated operations. The operations can be a string with Simple operation or\r\n+     * a classname whose {@link Class} implements a particular function\r\n+     *\r\n+     * @param interfaceClass for provider side, it is the {@link Class} of the service that will be exported; for consumer\r\n+     *                       side, it is the {@link Class} of the remote service interface that will be referenced\r\n+     */\r\n+    public static void checkMock(Class<?> interfaceClass, AbstractInterfaceConfig config) {\r\n+        String mock = config.getMock();\r\n+        if (ConfigUtils.isEmpty(mock)) {\r\n+            return;\r\n+        }\r\n+\r\n+        String normalizedMock = MockInvoker.normalizeMock(mock);\r\n+        if (normalizedMock.startsWith(RETURN_PREFIX)) {\r\n+            normalizedMock = normalizedMock.substring(RETURN_PREFIX.length()).trim();\r\n+            try {\r\n+                //Check whether the mock value is legal, if it is illegal, throw exception\r\n+                MockInvoker.parseMockValue(normalizedMock);\r\n+            } catch (Exception e) {\r\n+                throw new IllegalStateException(\"Illegal mock return in <dubbo:service/reference ... \" +\r\n+                        \"mock=\\\"\" + mock + \"\\\" />\");\r\n+            }\r\n+        } else if (normalizedMock.startsWith(THROW_PREFIX)) {\r\n+            normalizedMock = normalizedMock.substring(THROW_PREFIX.length()).trim();\r\n+            if (ConfigUtils.isNotEmpty(normalizedMock)) {\r\n+                try {\r\n+                    //Check whether the mock value is legal\r\n+                    MockInvoker.getThrowable(normalizedMock);\r\n+                } catch (Exception e) {\r\n+                    throw new IllegalStateException(\"Illegal mock throw in <dubbo:service/reference ... \" +\r\n+                            \"mock=\\\"\" + mock + \"\\\" />\");\r\n+                }\r\n+            }\r\n+        } else {\r\n+            //Check whether the mock class is a implementation of the interfaceClass, and if it has a default constructor\r\n+            MockInvoker.getMockObject(normalizedMock, interfaceClass);\r\n+        }\r\n+    }\r\n+\r\n+    public static void validateAbstractInterfaceConfig(AbstractInterfaceConfig config) {\r\n+        checkName(LOCAL_KEY, config.getLocal());\r\n+        checkName(\"stub\", config.getStub());\r\n+        checkMultiName(\"owner\", config.getOwner());\r\n+\r\n+        checkExtension(ProxyFactory.class, PROXY_KEY, config.getProxy());\r\n+        checkExtension(Cluster.class, CLUSTER_KEY, config.getCluster());\r\n+        checkMultiExtension(Filter.class, FILE_KEY, config.getFilter());\r\n+        checkNameHasSymbol(LAYER_KEY, config.getLayer());\r\n+\r\n+        List<MethodConfig> methods = config.getMethods();\r\n+        if (CollectionUtils.isNotEmpty(methods)) {\r\n+            methods.forEach(ConfigValidationUtils::validateMethodConfig);\r\n+        }\r\n+    }\r\n+\r\n+    public static void validateServiceConfig(ServiceConfig config) {\r\n+        checkKey(VERSION_KEY, config.getVersion());\r\n+        checkKey(GROUP_KEY, config.getGroup());\r\n+        checkName(TOKEN_KEY, config.getToken());\r\n+        checkPathName(PATH_KEY, config.getPath());\r\n+\r\n+        checkMultiExtension(ExporterListener.class, \"listener\", config.getListener());\r\n+\r\n+        validateAbstractInterfaceConfig(config);\r\n+\r\n+        List<RegistryConfig> registries = config.getRegistries();\r\n+        if (registries != null) {\r\n+            for (RegistryConfig registry : registries) {\r\n+                validateRegistryConfig(registry);\r\n+            }\r\n+        }\r\n+\r\n+        List<ProtocolConfig> protocols = config.getProtocols();\r\n+        if (protocols != null) {\r\n+            for (ProtocolConfig protocol : protocols) {\r\n+                validateProtocolConfig(protocol);\r\n+            }\r\n+        }\r\n+\r\n+        ProviderConfig providerConfig = config.getProvider();\r\n+        if (providerConfig != null) {\r\n+            validateProviderConfig(providerConfig);\r\n+        }\r\n+    }\r\n+\r\n+    public static void validateReferenceConfig(ReferenceConfig config) {\r\n+        checkMultiExtension(InvokerListener.class, \"listener\", config.getListener());\r\n+        checkKey(VERSION_KEY, config.getVersion());\r\n+        checkKey(GROUP_KEY, config.getGroup());\r\n+        checkName(CLIENT_KEY, config.getClient());\r\n+\r\n+        validateAbstractInterfaceConfig(config);\r\n+\r\n+        List<RegistryConfig> registries = config.getRegistries();\r\n+        if (registries != null) {\r\n+            for (RegistryConfig registry : registries) {\r\n+                validateRegistryConfig(registry);\r\n+            }\r\n+        }\r\n+\r\n+        ConsumerConfig consumerConfig = config.getConsumer();\r\n+        if (consumerConfig != null) {\r\n+            validateConsumerConfig(consumerConfig);\r\n+        }\r\n+    }\r\n+\r\n+    public static void validateConfigCenterConfig(ConfigCenterConfig config) {\r\n+        if (config != null) {\r\n+            checkParameterName(config.getParameters());\r\n+        }\r\n+    }\r\n+\r\n+    public static void validateApplicationConfig(ApplicationConfig config) {\r\n+        if (config == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        if (!config.isValid()) {\r\n+            throw new IllegalStateException(\"No application config found or it's not a valid config! \" +\r\n+                    \"Please add <dubbo:application name=\\\"...\\\" /> to your spring config.\");\r\n+        }\r\n+\r\n+        // backward compatibility\r\n+        String wait = ConfigUtils.getProperty(SHUTDOWN_WAIT_KEY);\r\n+        if (wait != null && wait.trim().length() > 0) {\r\n+            System.setProperty(SHUTDOWN_WAIT_KEY, wait.trim());\r\n+        } else {\r\n+            wait = ConfigUtils.getProperty(SHUTDOWN_WAIT_SECONDS_KEY);\r\n+            if (wait != null && wait.trim().length() > 0) {\r\n+                System.setProperty(SHUTDOWN_WAIT_SECONDS_KEY, wait.trim());\r\n+            }\r\n+        }\r\n+\r\n+        checkName(NAME, config.getName());\r\n+        checkMultiName(OWNER, config.getOwner());\r\n+        checkName(ORGANIZATION, config.getOrganization());\r\n+        checkName(ARCHITECTURE, config.getArchitecture());\r\n+        checkName(ENVIRONMENT, config.getEnvironment());\r\n+        checkParameterName(config.getParameters());\r\n+    }\r\n+\r\n+    public static void validateModuleConfig(ModuleConfig config) {\r\n+        if (config != null) {\r\n+            checkName(NAME, config.getName());\r\n+            checkName(OWNER, config.getOwner());\r\n+            checkName(ORGANIZATION, config.getOrganization());\r\n+        }\r\n+    }\r\n+\r\n+    public static void validateMetadataConfig(MetadataReportConfig metadataReportConfig) {\r\n+        if (metadataReportConfig == null) {\r\n+            return;\r\n+        }\r\n+    }\r\n+\r\n+    public static void validateMetricsConfig(MetricsConfig metricsConfig) {\r\n+        if (metricsConfig == null) {\r\n+            return;\r\n+        }\r\n+    }\r\n+\r\n+    public static void validateSslConfig(SslConfig sslConfig) {\r\n+        if (sslConfig == null) {\r\n+            return;\r\n+        }\r\n+    }\r\n+\r\n+    public static void validateMonitorConfig(MonitorConfig config) {\r\n+        if (config != null) {\r\n+            if (!config.isValid()) {\r\n+                logger.info(\"There's no valid monitor config found, if you want to open monitor statistics for Dubbo, \" +\r\n+                        \"please make sure your monitor is configured properly.\");\r\n+            }\r\n+\r\n+            checkParameterName(config.getParameters());\r\n+        }\r\n+    }\r\n+\r\n+    public static void validateProtocolConfig(ProtocolConfig config) {\r\n+        if (config != null) {\r\n+            String name = config.getName();\r\n+            checkName(\"name\", name);\r\n+            checkHost(HOST_KEY, config.getHost());\r\n+            checkPathName(\"contextpath\", config.getContextpath());\r\n+\r\n+\r\n+            if (DUBBO_PROTOCOL.equals(name)) {\r\n+                checkMultiExtension(Codec2.class, CODEC_KEY, config.getCodec());\r\n+                checkMultiExtension(Serialization.class, SERIALIZATION_KEY, config.getSerialization());\r\n+                checkMultiExtension(Transporter.class, SERVER_KEY, config.getServer());\r\n+                checkMultiExtension(Transporter.class, CLIENT_KEY, config.getClient());\r\n+            }\r\n+\r\n+            checkMultiExtension(TelnetHandler.class, TELNET, config.getTelnet());\r\n+            checkMultiExtension(StatusChecker.class, \"status\", config.getStatus());\r\n+            checkExtension(Transporter.class, TRANSPORTER_KEY, config.getTransporter());\r\n+            checkExtension(Exchanger.class, EXCHANGER_KEY, config.getExchanger());\r\n+            checkExtension(Dispatcher.class, DISPATCHER_KEY, config.getDispatcher());\r\n+            checkExtension(Dispatcher.class, \"dispather\", config.getDispather());\r\n+            checkExtension(ThreadPool.class, THREADPOOL_KEY, config.getThreadpool());\r\n+        }\r\n+    }\r\n+\r\n+    public static void validateProviderConfig(ProviderConfig config) {\r\n+        checkPathName(CONTEXTPATH_KEY, config.getContextpath());\r\n+        checkExtension(ThreadPool.class, THREADPOOL_KEY, config.getThreadpool());\r\n+        checkMultiExtension(TelnetHandler.class, TELNET, config.getTelnet());\r\n+        checkMultiExtension(StatusChecker.class, STATUS_KEY, config.getStatus());\r\n+        checkExtension(Transporter.class, TRANSPORTER_KEY, config.getTransporter());\r\n+        checkExtension(Exchanger.class, EXCHANGER_KEY, config.getExchanger());\r\n+    }\r\n+\r\n+    public static void validateConsumerConfig(ConsumerConfig config) {\r\n+        if (config == null) {\r\n+            return;\r\n+        }\r\n+    }\r\n+\r\n+    public static void validateRegistryConfig(RegistryConfig config) {\r\n+        checkName(PROTOCOL_KEY, config.getProtocol());\r\n+        checkName(USERNAME_KEY, config.getUsername());\r\n+        checkLength(PASSWORD_KEY, config.getPassword());\r\n+        checkPathLength(FILE_KEY, config.getFile());\r\n+        checkName(TRANSPORTER_KEY, config.getTransporter());\r\n+        checkName(SERVER_KEY, config.getServer());\r\n+        checkName(CLIENT_KEY, config.getClient());\r\n+        checkParameterName(config.getParameters());\r\n+    }\r\n+\r\n+    public static void validateMethodConfig(MethodConfig config) {\r\n+        checkExtension(LoadBalance.class, LOADBALANCE_KEY, config.getLoadbalance());\r\n+        checkParameterName(config.getParameters());\r\n+        checkMethodName(\"name\", config.getName());\r\n+\r\n+        String mock = config.getMock();\r\n+        if (StringUtils.isNotEmpty(mock)) {\r\n+            if (mock.startsWith(RETURN_PREFIX) || mock.startsWith(THROW_PREFIX + \" \")) {\r\n+                checkLength(MOCK_KEY, mock);\r\n+            } else if (mock.startsWith(FAIL_PREFIX) || mock.startsWith(FORCE_PREFIX)) {\r\n+                checkNameHasSymbol(MOCK_KEY, mock);\r\n+            } else {\r\n+                checkName(MOCK_KEY, mock);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private static String extractRegistryType(URL url) {\r\n+        return isServiceDiscoveryRegistryType(url) ? SERVICE_REGISTRY_PROTOCOL : REGISTRY_PROTOCOL;\r\n+    }\r\n+\r\n+    public static void checkExtension(Class<?> type, String property, String value) {\r\n+        checkName(property, value);\r\n+        if (StringUtils.isNotEmpty(value)\r\n+                && !ExtensionLoader.getExtensionLoader(type).hasExtension(value)) {\r\n+            throw new IllegalStateException(\"No such extension \" + value + \" for \" + property + \"/\" + type.getName());\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Check whether there is a <code>Extension</code> who's name (property) is <code>value</code> (special treatment is\r\n+     * required)\r\n+     *\r\n+     * @param type     The Extension type\r\n+     * @param property The extension key\r\n+     * @param value    The Extension name\r\n+     */\r\n+    public static void checkMultiExtension(Class<?> type, String property, String value) {\r\n+        checkMultiName(property, value);\r\n+        if (StringUtils.isNotEmpty(value)) {\r\n+            String[] values = value.split(\"\\\\s*[,]+\\\\s*\");\r\n+            for (String v : values) {\r\n+                if (v.startsWith(REMOVE_VALUE_PREFIX)) {\r\n+                    v = v.substring(1);\r\n+                }\r\n+                if (DEFAULT_KEY.equals(v)) {\r\n+                    continue;\r\n+                }\r\n+                if (!ExtensionLoader.getExtensionLoader(type).hasExtension(v)) {\r\n+                    throw new IllegalStateException(\"No such extension \" + v + \" for \" + property + \"/\" + type.getName());\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public static void checkLength(String property, String value) {\r\n+        checkProperty(property, value, MAX_LENGTH, null);\r\n+    }\r\n+\r\n+    public static void checkPathLength(String property, String value) {\r\n+        checkProperty(property, value, MAX_PATH_LENGTH, null);\r\n+    }\r\n+\r\n+    public static void checkName(String property, String value) {\r\n+        checkProperty(property, value, MAX_LENGTH, PATTERN_NAME);\r\n+    }\r\n+\r\n+    public static void checkHost(String property, String value) {\r\n+        if (StringUtils.isEmpty(value)) {\r\n+            return;\r\n+        }\r\n+        if (value.startsWith(IPV6_START_MARK) && value.endsWith(IPV6_END_MARK)) {\r\n+            // if the value start with \"[\" and end with \"]\", check whether it is IPV6\r\n+            try {\r\n+                InetAddress.getByName(value);\r\n+                return;\r\n+            } catch (UnknownHostException e) {\r\n+                // not a IPv6 string, do nothing, go on to checkName\r\n+            }\r\n+        }\r\n+        checkName(property, value);\r\n+    }\r\n+\r\n+    public static void checkNameHasSymbol(String property, String value) {\r\n+        checkProperty(property, value, MAX_LENGTH, PATTERN_NAME_HAS_SYMBOL);\r\n+    }\r\n+\r\n+    public static void checkKey(String property, String value) {\r\n+        checkProperty(property, value, MAX_LENGTH, PATTERN_KEY);\r\n+    }\r\n+\r\n+    public static void checkMultiName(String property, String value) {\r\n+        checkProperty(property, value, MAX_LENGTH, PATTERN_MULTI_NAME);\r\n+    }\r\n+\r\n+    public static void checkPathName(String property, String value) {\r\n+        checkProperty(property, value, MAX_PATH_LENGTH, PATTERN_PATH);\r\n+    }\r\n+\r\n+    public static void checkMethodName(String property, String value) {\r\n+        checkProperty(property, value, MAX_LENGTH, PATTERN_METHOD_NAME);\r\n+    }\r\n+\r\n+    public static void checkParameterName(Map<String, String> parameters) {\r\n+        if (CollectionUtils.isEmptyMap(parameters)) {\r\n+            return;\r\n+        }\r\n+        List<String> ignoreCheckKeys = new ArrayList<>();\r\n+        ignoreCheckKeys.add(BACKUP_KEY);\r\n+        String ignoreCheckKeysStr = parameters.get(IGNORE_CHECK_KEYS);\r\n+        if (!StringUtils.isBlank(ignoreCheckKeysStr)) {\r\n+            ignoreCheckKeys.addAll(Arrays.asList(ignoreCheckKeysStr.split(\",\")));\r\n+        }\r\n+        for (Map.Entry<String, String> entry : parameters.entrySet()) {\r\n+            if (!ignoreCheckKeys.contains(entry.getKey())) {\r\n+                checkNameHasSymbol(entry.getKey(), entry.getValue());\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public static void checkProperty(String property, String value, int maxlength, Pattern pattern) {\r\n+        if (StringUtils.isEmpty(value)) {\r\n+            return;\r\n+        }\r\n+        if (value.length() > maxlength) {\r\n+            throw new IllegalStateException(\"Invalid \" + property + \"=\\\"\" + value + \"\\\" is longer than \" + maxlength);\r\n+        }\r\n+        if (pattern != null) {\r\n+            Matcher matcher = pattern.matcher(value);\r\n+            if (!matcher.matches()) {\r\n+                throw new IllegalStateException(\"Invalid \" + property + \"=\\\"\" + value + \"\\\" contains illegal \" +\r\n+                        \"character, only digit, letter, '-', '_' or '.' is legal.\");\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/utils/ReferenceConfigCache.java", "source2": "org/apache/dubbo/config/utils/ReferenceConfigCache.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,252 +1,252 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.utils;\n-\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.ReferenceConfigBase;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.service.Destroyable;\n-\n-import java.util.ArrayList;\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-/**\n- * A simple util class for cache {@link ReferenceConfigBase}.\n- * <p>\n- * {@link ReferenceConfigBase} is a heavy Object, it's necessary to cache these object\n- * for the framework which create {@link ReferenceConfigBase} frequently.\n- * <p>\n- * You can implement and use your own {@link ReferenceConfigBase} cache if you need use complicate strategy.\n- */\n-public class ReferenceConfigCache {\n-    public static final String DEFAULT_NAME = \"_DEFAULT_\";\n-    /**\n-     * Create the key with the <b>Group</b>, <b>Interface</b> and <b>version</b> attribute of {@link ReferenceConfigBase}.\n-     * <p>\n-     * key example: <code>group1/org.apache.dubbo.foo.FooService:1.0.0</code>.\n-     */\n-    public static final KeyGenerator DEFAULT_KEY_GENERATOR = referenceConfig -> {\n-        String iName = referenceConfig.getInterface();\n-        if (StringUtils.isBlank(iName)) {\n-            Class<?> clazz = referenceConfig.getInterfaceClass();\n-            iName = clazz.getName();\n-        }\n-        if (StringUtils.isBlank(iName)) {\n-            throw new IllegalArgumentException(\"No interface info in ReferenceConfig\" + referenceConfig);\n-        }\n-\n-        StringBuilder ret = new StringBuilder();\n-        if (!StringUtils.isBlank(referenceConfig.getGroup())) {\n-            ret.append(referenceConfig.getGroup()).append(\"/\");\n-        }\n-        ret.append(iName);\n-        if (!StringUtils.isBlank(referenceConfig.getVersion())) {\n-            ret.append(\":\").append(referenceConfig.getVersion());\n-        }\n-        return ret.toString();\n-    };\n-\n-    static final ConcurrentMap<String, ReferenceConfigCache> CACHE_HOLDER = new ConcurrentHashMap<String, ReferenceConfigCache>();\n-    private final String name;\n-    private final KeyGenerator generator;\n-\n-    private final ConcurrentMap<String, ReferenceConfigBase<?>> referredReferences = new ConcurrentHashMap<>();\n-\n-    private final ConcurrentMap<Class<?>, ConcurrentMap<String, Object>> proxies = new ConcurrentHashMap<>();\n-\n-    private ReferenceConfigCache(String name, KeyGenerator generator) {\n-        this.name = name;\n-        this.generator = generator;\n-    }\n-\n-    /**\n-     * Get the cache use default name and {@link #DEFAULT_KEY_GENERATOR} to generate cache key.\n-     * Create cache if not existed yet.\n-     */\n-    public static ReferenceConfigCache getCache() {\n-        return getCache(DEFAULT_NAME);\n-    }\n-\n-    /**\n-     * Get the cache use specified name and {@link KeyGenerator}.\n-     * Create cache if not existed yet.\n-     */\n-    public static ReferenceConfigCache getCache(String name) {\n-        return getCache(name, DEFAULT_KEY_GENERATOR);\n-    }\n-\n-    /**\n-     * Get the cache use specified {@link KeyGenerator}.\n-     * Create cache if not existed yet.\n-     */\n-    public static ReferenceConfigCache getCache(String name, KeyGenerator keyGenerator) {\n-        return CACHE_HOLDER.computeIfAbsent(name, k -> new ReferenceConfigCache(k, keyGenerator));\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> T get(ReferenceConfigBase<T> referenceConfig) {\n-        String key = generator.generateKey(referenceConfig);\n-        Class<?> type = referenceConfig.getInterfaceClass();\n-\n-        proxies.computeIfAbsent(type, _t -> new ConcurrentHashMap<>());\n-\n-        ConcurrentMap<String, Object> proxiesOfType = proxies.get(type);\n-        proxiesOfType.computeIfAbsent(key, _k -> {\n-            Object proxy = referenceConfig.get();\n-            referredReferences.put(key, referenceConfig);\n-            return proxy;\n-        });\n-\n-        return (T) proxiesOfType.get(key);\n-    }\n-\n-    /**\n-     * Fetch cache with the specified key. The key is decided by KeyGenerator passed-in. If the default KeyGenerator is\n-     * used, then the key is in the format of <code>group/interfaceClass:version</code>\n-     *\n-     * @param key  cache key\n-     * @param type object class\n-     * @param <T>  object type\n-     * @return object from the cached ReferenceConfigBase\n-     * @see KeyGenerator#generateKey(ReferenceConfigBase)\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> T get(String key, Class<T> type) {\n-        Map<String, Object> proxiesOfType = proxies.get(type);\n-        if (CollectionUtils.isEmptyMap(proxiesOfType)) {\n-            return null;\n-        }\n-        return (T) proxiesOfType.get(key);\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> T get(String key) {\n-        ReferenceConfigBase<?> rc = referredReferences.get(key);\n-        if (rc == null) {\n-            return null;\n-        }\n-\n-        return (T) get(key, rc.getInterfaceClass());\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> List<T> getAll(Class<T> type) {\n-        Map<String, Object> proxiesOfType = proxies.get(type);\n-        if (CollectionUtils.isEmptyMap(proxiesOfType)) {\n-            return Collections.emptyList();\n-        }\n-\n-        List<T> proxySet = new ArrayList<>();\n-        proxiesOfType.values().forEach(obj -> proxySet.add((T) obj));\n-        return proxySet;\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> T get(Class<T> type) {\n-        Map<String, Object> proxiesOfType = proxies.get(type);\n-        if (CollectionUtils.isEmptyMap(proxiesOfType)) {\n-            return null;\n-        }\n-\n-        return (T) proxiesOfType.values().iterator().next();\n-    }\n-\n-    public void destroy(String key, Class<?> type) {\n-        ReferenceConfigBase<?> rc = referredReferences.remove(key);\n-        if (rc == null) {\n-            return;\n-        }\n-\n-        ApplicationModel.getConfigManager().removeConfig(rc);\n-        rc.destroy();\n-\n-        Map<String, Object> proxiesOftype = proxies.get(type);\n-        if (CollectionUtils.isNotEmptyMap(proxiesOftype)) {\n-            proxiesOftype.remove(key);\n-            if (proxiesOftype.isEmpty()) {\n-                proxies.remove(type);\n-            }\n-        }\n-    }\n-\n-    public void destroy(Class<?> type) {\n-        Map<String, Object> proxiesOfType = proxies.remove(type);\n-        proxiesOfType.forEach((k, v) -> {\n-            ReferenceConfigBase rc = referredReferences.remove(k);\n-            rc.destroy();\n-        });\n-    }\n-\n-    /**\n-     * clear and destroy one {@link ReferenceConfigBase} in the cache.\n-     *\n-     * @param referenceConfig use for create key.\n-     */\n-    public <T> void destroy(ReferenceConfigBase<T> referenceConfig) {\n-        String key = generator.generateKey(referenceConfig);\n-        Class<?> type = referenceConfig.getInterfaceClass();\n-\n-        destroy(key, type);\n-    }\n-\n-    /**\n-     * clear and destroy all {@link ReferenceConfigBase} in the cache.\n-     */\n-    public void destroyAll() {\n-        if (CollectionUtils.isEmptyMap(referredReferences)) {\n-            return;\n-        }\n-\n-        referredReferences.forEach((_k, referenceConfig) -> {\n-            referenceConfig.destroy();\n-            ApplicationModel.getConfigManager().removeConfig(referenceConfig);\n-        });\n-\n-        proxies.forEach((_type, proxiesOfType) -> {\n-            proxiesOfType.forEach((_k, v) -> {\n-                Destroyable proxy = (Destroyable) v;\n-                proxy.$destroy();\n-            });\n-        });\n-\n-        referredReferences.clear();\n-        proxies.clear();\n-    }\n-\n-    public ConcurrentMap<String, ReferenceConfigBase<?>> getReferredReferences() {\n-        return referredReferences;\n-    }\n-\n-    public ConcurrentMap<Class<?>, ConcurrentMap<String, Object>> getProxies() {\n-        return proxies;\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"ReferenceConfigCache(name: \" + name\n-                + \")\";\n-    }\n-\n-    public interface KeyGenerator {\n-        String generateKey(ReferenceConfigBase<?> referenceConfig);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.utils;\r\n+\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.ReferenceConfigBase;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.service.Destroyable;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+/**\r\n+ * A simple util class for cache {@link ReferenceConfigBase}.\r\n+ * <p>\r\n+ * {@link ReferenceConfigBase} is a heavy Object, it's necessary to cache these object\r\n+ * for the framework which create {@link ReferenceConfigBase} frequently.\r\n+ * <p>\r\n+ * You can implement and use your own {@link ReferenceConfigBase} cache if you need use complicate strategy.\r\n+ */\r\n+public class ReferenceConfigCache {\r\n+    public static final String DEFAULT_NAME = \"_DEFAULT_\";\r\n+    /**\r\n+     * Create the key with the <b>Group</b>, <b>Interface</b> and <b>version</b> attribute of {@link ReferenceConfigBase}.\r\n+     * <p>\r\n+     * key example: <code>group1/org.apache.dubbo.foo.FooService:1.0.0</code>.\r\n+     */\r\n+    public static final KeyGenerator DEFAULT_KEY_GENERATOR = referenceConfig -> {\r\n+        String iName = referenceConfig.getInterface();\r\n+        if (StringUtils.isBlank(iName)) {\r\n+            Class<?> clazz = referenceConfig.getInterfaceClass();\r\n+            iName = clazz.getName();\r\n+        }\r\n+        if (StringUtils.isBlank(iName)) {\r\n+            throw new IllegalArgumentException(\"No interface info in ReferenceConfig\" + referenceConfig);\r\n+        }\r\n+\r\n+        StringBuilder ret = new StringBuilder();\r\n+        if (!StringUtils.isBlank(referenceConfig.getGroup())) {\r\n+            ret.append(referenceConfig.getGroup()).append(\"/\");\r\n+        }\r\n+        ret.append(iName);\r\n+        if (!StringUtils.isBlank(referenceConfig.getVersion())) {\r\n+            ret.append(\":\").append(referenceConfig.getVersion());\r\n+        }\r\n+        return ret.toString();\r\n+    };\r\n+\r\n+    static final ConcurrentMap<String, ReferenceConfigCache> CACHE_HOLDER = new ConcurrentHashMap<String, ReferenceConfigCache>();\r\n+    private final String name;\r\n+    private final KeyGenerator generator;\r\n+\r\n+    private final ConcurrentMap<String, ReferenceConfigBase<?>> referredReferences = new ConcurrentHashMap<>();\r\n+\r\n+    private final ConcurrentMap<Class<?>, ConcurrentMap<String, Object>> proxies = new ConcurrentHashMap<>();\r\n+\r\n+    private ReferenceConfigCache(String name, KeyGenerator generator) {\r\n+        this.name = name;\r\n+        this.generator = generator;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the cache use default name and {@link #DEFAULT_KEY_GENERATOR} to generate cache key.\r\n+     * Create cache if not existed yet.\r\n+     */\r\n+    public static ReferenceConfigCache getCache() {\r\n+        return getCache(DEFAULT_NAME);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the cache use specified name and {@link KeyGenerator}.\r\n+     * Create cache if not existed yet.\r\n+     */\r\n+    public static ReferenceConfigCache getCache(String name) {\r\n+        return getCache(name, DEFAULT_KEY_GENERATOR);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the cache use specified {@link KeyGenerator}.\r\n+     * Create cache if not existed yet.\r\n+     */\r\n+    public static ReferenceConfigCache getCache(String name, KeyGenerator keyGenerator) {\r\n+        return CACHE_HOLDER.computeIfAbsent(name, k -> new ReferenceConfigCache(k, keyGenerator));\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> T get(ReferenceConfigBase<T> referenceConfig) {\r\n+        String key = generator.generateKey(referenceConfig);\r\n+        Class<?> type = referenceConfig.getInterfaceClass();\r\n+\r\n+        proxies.computeIfAbsent(type, _t -> new ConcurrentHashMap<>());\r\n+\r\n+        ConcurrentMap<String, Object> proxiesOfType = proxies.get(type);\r\n+        proxiesOfType.computeIfAbsent(key, _k -> {\r\n+            Object proxy = referenceConfig.get();\r\n+            referredReferences.put(key, referenceConfig);\r\n+            return proxy;\r\n+        });\r\n+\r\n+        return (T) proxiesOfType.get(key);\r\n+    }\r\n+\r\n+    /**\r\n+     * Fetch cache with the specified key. The key is decided by KeyGenerator passed-in. If the default KeyGenerator is\r\n+     * used, then the key is in the format of <code>group/interfaceClass:version</code>\r\n+     *\r\n+     * @param key  cache key\r\n+     * @param type object class\r\n+     * @param <T>  object type\r\n+     * @return object from the cached ReferenceConfigBase\r\n+     * @see KeyGenerator#generateKey(ReferenceConfigBase)\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> T get(String key, Class<T> type) {\r\n+        Map<String, Object> proxiesOfType = proxies.get(type);\r\n+        if (CollectionUtils.isEmptyMap(proxiesOfType)) {\r\n+            return null;\r\n+        }\r\n+        return (T) proxiesOfType.get(key);\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> T get(String key) {\r\n+        ReferenceConfigBase<?> rc = referredReferences.get(key);\r\n+        if (rc == null) {\r\n+            return null;\r\n+        }\r\n+\r\n+        return (T) get(key, rc.getInterfaceClass());\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> List<T> getAll(Class<T> type) {\r\n+        Map<String, Object> proxiesOfType = proxies.get(type);\r\n+        if (CollectionUtils.isEmptyMap(proxiesOfType)) {\r\n+            return Collections.emptyList();\r\n+        }\r\n+\r\n+        List<T> proxySet = new ArrayList<>();\r\n+        proxiesOfType.values().forEach(obj -> proxySet.add((T) obj));\r\n+        return proxySet;\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> T get(Class<T> type) {\r\n+        Map<String, Object> proxiesOfType = proxies.get(type);\r\n+        if (CollectionUtils.isEmptyMap(proxiesOfType)) {\r\n+            return null;\r\n+        }\r\n+\r\n+        return (T) proxiesOfType.values().iterator().next();\r\n+    }\r\n+\r\n+    public void destroy(String key, Class<?> type) {\r\n+        ReferenceConfigBase<?> rc = referredReferences.remove(key);\r\n+        if (rc == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        ApplicationModel.getConfigManager().removeConfig(rc);\r\n+        rc.destroy();\r\n+\r\n+        Map<String, Object> proxiesOftype = proxies.get(type);\r\n+        if (CollectionUtils.isNotEmptyMap(proxiesOftype)) {\r\n+            proxiesOftype.remove(key);\r\n+            if (proxiesOftype.isEmpty()) {\r\n+                proxies.remove(type);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public void destroy(Class<?> type) {\r\n+        Map<String, Object> proxiesOfType = proxies.remove(type);\r\n+        proxiesOfType.forEach((k, v) -> {\r\n+            ReferenceConfigBase rc = referredReferences.remove(k);\r\n+            rc.destroy();\r\n+        });\r\n+    }\r\n+\r\n+    /**\r\n+     * clear and destroy one {@link ReferenceConfigBase} in the cache.\r\n+     *\r\n+     * @param referenceConfig use for create key.\r\n+     */\r\n+    public <T> void destroy(ReferenceConfigBase<T> referenceConfig) {\r\n+        String key = generator.generateKey(referenceConfig);\r\n+        Class<?> type = referenceConfig.getInterfaceClass();\r\n+\r\n+        destroy(key, type);\r\n+    }\r\n+\r\n+    /**\r\n+     * clear and destroy all {@link ReferenceConfigBase} in the cache.\r\n+     */\r\n+    public void destroyAll() {\r\n+        if (CollectionUtils.isEmptyMap(referredReferences)) {\r\n+            return;\r\n+        }\r\n+\r\n+        referredReferences.forEach((_k, referenceConfig) -> {\r\n+            referenceConfig.destroy();\r\n+            ApplicationModel.getConfigManager().removeConfig(referenceConfig);\r\n+        });\r\n+\r\n+        proxies.forEach((_type, proxiesOfType) -> {\r\n+            proxiesOfType.forEach((_k, v) -> {\r\n+                Destroyable proxy = (Destroyable) v;\r\n+                proxy.$destroy();\r\n+            });\r\n+        });\r\n+\r\n+        referredReferences.clear();\r\n+        proxies.clear();\r\n+    }\r\n+\r\n+    public ConcurrentMap<String, ReferenceConfigBase<?>> getReferredReferences() {\r\n+        return referredReferences;\r\n+    }\r\n+\r\n+    public ConcurrentMap<Class<?>, ConcurrentMap<String, Object>> getProxies() {\r\n+        return proxies;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"ReferenceConfigCache(name: \" + name\r\n+                + \")\";\r\n+    }\r\n+\r\n+    public interface KeyGenerator {\r\n+        String generateKey(ReferenceConfigBase<?> referenceConfig);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/ConfigCenterBean.java", "source2": "org/apache/dubbo/config/spring/ConfigCenterBean.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,107 +1,107 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring;\n-\n-import org.apache.dubbo.common.config.ConfigurationUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.ConfigCenterConfig;\n-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;\n-\n-import org.springframework.beans.factory.DisposableBean;\n-import org.springframework.context.ApplicationContext;\n-import org.springframework.context.ApplicationContextAware;\n-import org.springframework.context.EnvironmentAware;\n-import org.springframework.core.env.ConfigurableEnvironment;\n-import org.springframework.core.env.Environment;\n-import org.springframework.core.env.PropertySource;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-/**\n- * Start from 2.7.0+, export and refer will only be executed when Spring is fully initialized, and each Config bean will get refreshed on the start of the export and refer process.\n- * So it's ok for this bean not to be the first Dubbo Config bean being initialized.\n- * <p>\n- */\n-public class ConfigCenterBean extends ConfigCenterConfig implements ApplicationContextAware, DisposableBean, EnvironmentAware {\n-\n-    private transient ApplicationContext applicationContext;\n-\n-    private Boolean includeSpringEnv = false;\n-\n-    @Override\n-    public void setApplicationContext(ApplicationContext applicationContext) {\n-        this.applicationContext = applicationContext;\n-        SpringExtensionFactory.addApplicationContext(applicationContext);\n-    }\n-\n-    @Override\n-    public void destroy() throws Exception {\n-\n-    }\n-\n-    @Override\n-    public void setEnvironment(Environment environment) {\n-        if (includeSpringEnv) {\n-            // Get PropertySource mapped to 'dubbo.properties' in Spring Environment.\n-            setExternalConfig(getConfigurations(getConfigFile(), environment));\n-            // Get PropertySource mapped to 'application.dubbo.properties' in Spring Environment.\n-            setAppExternalConfig(getConfigurations(StringUtils.isNotEmpty(getAppConfigFile()) ? getAppConfigFile() : (\"application.\" + getConfigFile()), environment));\n-        }\n-    }\n-\n-    private Map<String, String> getConfigurations(String key, Environment environment) {\n-        Object rawProperties = environment.getProperty(key, Object.class);\n-        Map<String, String> externalProperties = new HashMap<>();\n-        try {\n-            if (rawProperties instanceof Map) {\n-                externalProperties.putAll((Map<String, String>) rawProperties);\n-            } else if (rawProperties instanceof String) {\n-                externalProperties.putAll(ConfigurationUtils.parseProperties((String) rawProperties));\n-            }\n-\n-            if (environment instanceof ConfigurableEnvironment && externalProperties.isEmpty()) {\n-                ConfigurableEnvironment configurableEnvironment = (ConfigurableEnvironment) environment;\n-                PropertySource propertySource = configurableEnvironment.getPropertySources().get(key);\n-                if (propertySource != null) {\n-                    Object source = propertySource.getSource();\n-                    if (source instanceof Map) {\n-                        ((Map<String, Object>) source).forEach((k, v) -> {\n-                            externalProperties.put(k, (String) v);\n-                        });\n-                    }\n-                }\n-            }\n-        } catch (Exception e) {\n-            throw new IllegalStateException(e);\n-        }\n-        return externalProperties;\n-    }\n-\n-    public ApplicationContext getApplicationContext() {\n-        return applicationContext;\n-    }\n-\n-    public Boolean getIncludeSpringEnv() {\n-        return includeSpringEnv;\n-    }\n-\n-    public void setIncludeSpringEnv(Boolean includeSpringEnv) {\n-        this.includeSpringEnv = includeSpringEnv;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring;\r\n+\r\n+import org.apache.dubbo.common.config.ConfigurationUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.ConfigCenterConfig;\r\n+import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;\r\n+\r\n+import org.springframework.beans.factory.DisposableBean;\r\n+import org.springframework.context.ApplicationContext;\r\n+import org.springframework.context.ApplicationContextAware;\r\n+import org.springframework.context.EnvironmentAware;\r\n+import org.springframework.core.env.ConfigurableEnvironment;\r\n+import org.springframework.core.env.Environment;\r\n+import org.springframework.core.env.PropertySource;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * Start from 2.7.0+, export and refer will only be executed when Spring is fully initialized, and each Config bean will get refreshed on the start of the export and refer process.\r\n+ * So it's ok for this bean not to be the first Dubbo Config bean being initialized.\r\n+ * <p>\r\n+ */\r\n+public class ConfigCenterBean extends ConfigCenterConfig implements ApplicationContextAware, DisposableBean, EnvironmentAware {\r\n+\r\n+    private transient ApplicationContext applicationContext;\r\n+\r\n+    private Boolean includeSpringEnv = false;\r\n+\r\n+    @Override\r\n+    public void setApplicationContext(ApplicationContext applicationContext) {\r\n+        this.applicationContext = applicationContext;\r\n+        SpringExtensionFactory.addApplicationContext(applicationContext);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() throws Exception {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setEnvironment(Environment environment) {\r\n+        if (includeSpringEnv) {\r\n+            // Get PropertySource mapped to 'dubbo.properties' in Spring Environment.\r\n+            setExternalConfig(getConfigurations(getConfigFile(), environment));\r\n+            // Get PropertySource mapped to 'application.dubbo.properties' in Spring Environment.\r\n+            setAppExternalConfig(getConfigurations(StringUtils.isNotEmpty(getAppConfigFile()) ? getAppConfigFile() : (\"application.\" + getConfigFile()), environment));\r\n+        }\r\n+    }\r\n+\r\n+    private Map<String, String> getConfigurations(String key, Environment environment) {\r\n+        Object rawProperties = environment.getProperty(key, Object.class);\r\n+        Map<String, String> externalProperties = new HashMap<>();\r\n+        try {\r\n+            if (rawProperties instanceof Map) {\r\n+                externalProperties.putAll((Map<String, String>) rawProperties);\r\n+            } else if (rawProperties instanceof String) {\r\n+                externalProperties.putAll(ConfigurationUtils.parseProperties((String) rawProperties));\r\n+            }\r\n+\r\n+            if (environment instanceof ConfigurableEnvironment && externalProperties.isEmpty()) {\r\n+                ConfigurableEnvironment configurableEnvironment = (ConfigurableEnvironment) environment;\r\n+                PropertySource propertySource = configurableEnvironment.getPropertySources().get(key);\r\n+                if (propertySource != null) {\r\n+                    Object source = propertySource.getSource();\r\n+                    if (source instanceof Map) {\r\n+                        ((Map<String, Object>) source).forEach((k, v) -> {\r\n+                            externalProperties.put(k, (String) v);\r\n+                        });\r\n+                    }\r\n+                }\r\n+            }\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(e);\r\n+        }\r\n+        return externalProperties;\r\n+    }\r\n+\r\n+    public ApplicationContext getApplicationContext() {\r\n+        return applicationContext;\r\n+    }\r\n+\r\n+    public Boolean getIncludeSpringEnv() {\r\n+        return includeSpringEnv;\r\n+    }\r\n+\r\n+    public void setIncludeSpringEnv(Boolean includeSpringEnv) {\r\n+        this.includeSpringEnv = includeSpringEnv;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/ReferenceBean.java", "source2": "org/apache/dubbo/config/spring/ReferenceBean.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,124 +1,124 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring;\n-\n-import org.apache.dubbo.config.ApplicationConfig;\n-import org.apache.dubbo.config.ConsumerConfig;\n-import org.apache.dubbo.config.MetadataReportConfig;\n-import org.apache.dubbo.config.MetricsConfig;\n-import org.apache.dubbo.config.ModuleConfig;\n-import org.apache.dubbo.config.MonitorConfig;\n-import org.apache.dubbo.config.ProtocolConfig;\n-import org.apache.dubbo.config.ProviderConfig;\n-import org.apache.dubbo.config.ReferenceConfig;\n-import org.apache.dubbo.config.RegistryConfig;\n-import org.apache.dubbo.config.SslConfig;\n-import org.apache.dubbo.config.annotation.Reference;\n-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;\n-import org.apache.dubbo.config.support.Parameter;\n-\n-import org.springframework.beans.factory.DisposableBean;\n-import org.springframework.beans.factory.FactoryBean;\n-import org.springframework.beans.factory.InitializingBean;\n-import org.springframework.context.ApplicationContext;\n-import org.springframework.context.ApplicationContextAware;\n-\n-import static org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors;\n-\n-/**\n- * ReferenceFactoryBean\n- */\n-public class ReferenceBean<T> extends ReferenceConfig<T> implements FactoryBean,\n-        ApplicationContextAware, InitializingBean, DisposableBean {\n-\n-    private static final long serialVersionUID = 213195494150089726L;\n-\n-    private transient ApplicationContext applicationContext;\n-\n-    public ReferenceBean() {\n-        super();\n-    }\n-\n-    public ReferenceBean(Reference reference) {\n-        super(reference);\n-    }\n-\n-    @Override\n-    public void setApplicationContext(ApplicationContext applicationContext) {\n-        this.applicationContext = applicationContext;\n-        SpringExtensionFactory.addApplicationContext(applicationContext);\n-    }\n-\n-    @Override\n-    public Object getObject() {\n-        return get();\n-    }\n-\n-    @Override\n-    public Class<?> getObjectType() {\n-        return getInterfaceClass();\n-    }\n-\n-    @Override\n-    @Parameter(excluded = true)\n-    public boolean isSingleton() {\n-        return true;\n-    }\n-\n-    /**\n-     * Initializes there Dubbo's Config Beans before @Reference bean autowiring\n-     */\n-    private void prepareDubboConfigBeans() {\n-        // Refactor 2.7.9\n-        final boolean includeNonSingletons = true;\n-        final boolean allowEagerInit = false;\n-        beansOfTypeIncludingAncestors(applicationContext, ApplicationConfig.class, includeNonSingletons, allowEagerInit);\n-        beansOfTypeIncludingAncestors(applicationContext, ModuleConfig.class, includeNonSingletons, allowEagerInit);\n-        beansOfTypeIncludingAncestors(applicationContext, RegistryConfig.class, includeNonSingletons, allowEagerInit);\n-        beansOfTypeIncludingAncestors(applicationContext, ProtocolConfig.class, includeNonSingletons, allowEagerInit);\n-        beansOfTypeIncludingAncestors(applicationContext, MonitorConfig.class, includeNonSingletons, allowEagerInit);\n-        beansOfTypeIncludingAncestors(applicationContext, ProviderConfig.class, includeNonSingletons, allowEagerInit);\n-        beansOfTypeIncludingAncestors(applicationContext, ConsumerConfig.class, includeNonSingletons, allowEagerInit);\n-        beansOfTypeIncludingAncestors(applicationContext, ConfigCenterBean.class, includeNonSingletons, allowEagerInit);\n-        beansOfTypeIncludingAncestors(applicationContext, MetadataReportConfig.class, includeNonSingletons, allowEagerInit);\n-        beansOfTypeIncludingAncestors(applicationContext, MetricsConfig.class, includeNonSingletons, allowEagerInit);\n-        beansOfTypeIncludingAncestors(applicationContext, SslConfig.class, includeNonSingletons, allowEagerInit);\n-    }\n-\n-    @Override\n-    @SuppressWarnings({\"unchecked\"})\n-    public void afterPropertiesSet() throws Exception {\n-\n-        // Initializes Dubbo's Config Beans before @Reference bean autowiring\n-        prepareDubboConfigBeans();\n-\n-        // lazy init by default.\n-        if (init == null) {\n-            init = false;\n-        }\n-\n-        // eager init if necessary.\n-        if (shouldInit()) {\n-            getObject();\n-        }\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        // do nothing\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring;\r\n+\r\n+import org.apache.dubbo.config.ApplicationConfig;\r\n+import org.apache.dubbo.config.ConsumerConfig;\r\n+import org.apache.dubbo.config.MetadataReportConfig;\r\n+import org.apache.dubbo.config.MetricsConfig;\r\n+import org.apache.dubbo.config.ModuleConfig;\r\n+import org.apache.dubbo.config.MonitorConfig;\r\n+import org.apache.dubbo.config.ProtocolConfig;\r\n+import org.apache.dubbo.config.ProviderConfig;\r\n+import org.apache.dubbo.config.ReferenceConfig;\r\n+import org.apache.dubbo.config.RegistryConfig;\r\n+import org.apache.dubbo.config.SslConfig;\r\n+import org.apache.dubbo.config.annotation.Reference;\r\n+import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+\r\n+import org.springframework.beans.factory.DisposableBean;\r\n+import org.springframework.beans.factory.FactoryBean;\r\n+import org.springframework.beans.factory.InitializingBean;\r\n+import org.springframework.context.ApplicationContext;\r\n+import org.springframework.context.ApplicationContextAware;\r\n+\r\n+import static org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors;\r\n+\r\n+/**\r\n+ * ReferenceFactoryBean\r\n+ */\r\n+public class ReferenceBean<T> extends ReferenceConfig<T> implements FactoryBean,\r\n+        ApplicationContextAware, InitializingBean, DisposableBean {\r\n+\r\n+    private static final long serialVersionUID = 213195494150089726L;\r\n+\r\n+    private transient ApplicationContext applicationContext;\r\n+\r\n+    public ReferenceBean() {\r\n+        super();\r\n+    }\r\n+\r\n+    public ReferenceBean(Reference reference) {\r\n+        super(reference);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setApplicationContext(ApplicationContext applicationContext) {\r\n+        this.applicationContext = applicationContext;\r\n+        SpringExtensionFactory.addApplicationContext(applicationContext);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getObject() {\r\n+        return get();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Class<?> getObjectType() {\r\n+        return getInterfaceClass();\r\n+    }\r\n+\r\n+    @Override\r\n+    @Parameter(excluded = true)\r\n+    public boolean isSingleton() {\r\n+        return true;\r\n+    }\r\n+\r\n+    /**\r\n+     * Initializes there Dubbo's Config Beans before @Reference bean autowiring\r\n+     */\r\n+    private void prepareDubboConfigBeans() {\r\n+        // Refactor 2.7.9\r\n+        final boolean includeNonSingletons = true;\r\n+        final boolean allowEagerInit = false;\r\n+        beansOfTypeIncludingAncestors(applicationContext, ApplicationConfig.class, includeNonSingletons, allowEagerInit);\r\n+        beansOfTypeIncludingAncestors(applicationContext, ModuleConfig.class, includeNonSingletons, allowEagerInit);\r\n+        beansOfTypeIncludingAncestors(applicationContext, RegistryConfig.class, includeNonSingletons, allowEagerInit);\r\n+        beansOfTypeIncludingAncestors(applicationContext, ProtocolConfig.class, includeNonSingletons, allowEagerInit);\r\n+        beansOfTypeIncludingAncestors(applicationContext, MonitorConfig.class, includeNonSingletons, allowEagerInit);\r\n+        beansOfTypeIncludingAncestors(applicationContext, ProviderConfig.class, includeNonSingletons, allowEagerInit);\r\n+        beansOfTypeIncludingAncestors(applicationContext, ConsumerConfig.class, includeNonSingletons, allowEagerInit);\r\n+        beansOfTypeIncludingAncestors(applicationContext, ConfigCenterBean.class, includeNonSingletons, allowEagerInit);\r\n+        beansOfTypeIncludingAncestors(applicationContext, MetadataReportConfig.class, includeNonSingletons, allowEagerInit);\r\n+        beansOfTypeIncludingAncestors(applicationContext, MetricsConfig.class, includeNonSingletons, allowEagerInit);\r\n+        beansOfTypeIncludingAncestors(applicationContext, SslConfig.class, includeNonSingletons, allowEagerInit);\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings({\"unchecked\"})\r\n+    public void afterPropertiesSet() throws Exception {\r\n+\r\n+        // Initializes Dubbo's Config Beans before @Reference bean autowiring\r\n+        prepareDubboConfigBeans();\r\n+\r\n+        // lazy init by default.\r\n+        if (init == null) {\r\n+            init = false;\r\n+        }\r\n+\r\n+        // eager init if necessary.\r\n+        if (shouldInit()) {\r\n+            getObject();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        // do nothing\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/ServiceBean.java", "source2": "org/apache/dubbo/config/spring/ServiceBean.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,145 +1,145 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.ServiceConfig;\n-import org.apache.dubbo.config.annotation.Service;\n-import org.apache.dubbo.config.spring.context.event.ServiceBeanExportedEvent;\n-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;\n-import org.apache.dubbo.config.support.Parameter;\n-\n-import org.springframework.aop.support.AopUtils;\n-import org.springframework.beans.factory.BeanNameAware;\n-import org.springframework.beans.factory.DisposableBean;\n-import org.springframework.beans.factory.InitializingBean;\n-import org.springframework.context.ApplicationContext;\n-import org.springframework.context.ApplicationContextAware;\n-import org.springframework.context.ApplicationEventPublisher;\n-import org.springframework.context.ApplicationEventPublisherAware;\n-\n-/**\n- * ServiceFactoryBean\n- *\n- * @export\n- */\n-public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean, DisposableBean,\n-        ApplicationContextAware, BeanNameAware, ApplicationEventPublisherAware {\n-\n-\n-    private static final long serialVersionUID = 213195494150089726L;\n-\n-    private final transient Service service;\n-\n-    private transient ApplicationContext applicationContext;\n-\n-    private transient String beanName;\n-\n-    private ApplicationEventPublisher applicationEventPublisher;\n-\n-    public ServiceBean() {\n-        super();\n-        this.service = null;\n-    }\n-\n-    public ServiceBean(Service service) {\n-        super(service);\n-        this.service = service;\n-    }\n-\n-    @Override\n-    public void setApplicationContext(ApplicationContext applicationContext) {\n-        this.applicationContext = applicationContext;\n-        SpringExtensionFactory.addApplicationContext(applicationContext);\n-    }\n-\n-    @Override\n-    public void setBeanName(String name) {\n-        this.beanName = name;\n-    }\n-\n-    /**\n-     * Gets associated {@link Service}\n-     *\n-     * @return associated {@link Service}\n-     */\n-    public Service getService() {\n-        return service;\n-    }\n-\n-    @Override\n-    public void afterPropertiesSet() throws Exception {\n-        if (StringUtils.isEmpty(getPath())) {\n-            if (StringUtils.isNotEmpty(getInterface())) {\n-                setPath(getInterface());\n-            }\n-        }\n-    }\n-\n-    /**\n-     * Get the name of {@link ServiceBean}\n-     *\n-     * @return {@link ServiceBean}'s name\n-     * @since 2.6.5\n-     */\n-    @Parameter(excluded = true)\n-    public String getBeanName() {\n-        return this.beanName;\n-    }\n-\n-    /**\n-     * @since 2.6.5\n-     */\n-    @Override\n-    public void exported() {\n-        super.exported();\n-        // Publish ServiceBeanExportedEvent\n-        publishExportEvent();\n-    }\n-\n-    /**\n-     * @since 2.6.5\n-     */\n-    private void publishExportEvent() {\n-        ServiceBeanExportedEvent exportEvent = new ServiceBeanExportedEvent(this);\n-        applicationEventPublisher.publishEvent(exportEvent);\n-    }\n-\n-    @Override\n-    public void destroy() throws Exception {\n-        // no need to call unexport() here, see\n-        // org.apache.dubbo.config.spring.extension.SpringExtensionFactory.ShutdownHookListener\n-    }\n-\n-    // merged from dubbox\n-    @Override\n-    protected Class getServiceClass(T ref) {\n-        if (AopUtils.isAopProxy(ref)) {\n-            return AopUtils.getTargetClass(ref);\n-        }\n-        return super.getServiceClass(ref);\n-    }\n-\n-    /**\n-     * @param applicationEventPublisher\n-     * @since 2.6.5\n-     */\n-    @Override\n-    public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {\n-        this.applicationEventPublisher = applicationEventPublisher;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.ServiceConfig;\r\n+import org.apache.dubbo.config.annotation.Service;\r\n+import org.apache.dubbo.config.spring.context.event.ServiceBeanExportedEvent;\r\n+import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+\r\n+import org.springframework.aop.support.AopUtils;\r\n+import org.springframework.beans.factory.BeanNameAware;\r\n+import org.springframework.beans.factory.DisposableBean;\r\n+import org.springframework.beans.factory.InitializingBean;\r\n+import org.springframework.context.ApplicationContext;\r\n+import org.springframework.context.ApplicationContextAware;\r\n+import org.springframework.context.ApplicationEventPublisher;\r\n+import org.springframework.context.ApplicationEventPublisherAware;\r\n+\r\n+/**\r\n+ * ServiceFactoryBean\r\n+ *\r\n+ * @export\r\n+ */\r\n+public class ServiceBean<T> extends ServiceConfig<T> implements InitializingBean, DisposableBean,\r\n+        ApplicationContextAware, BeanNameAware, ApplicationEventPublisherAware {\r\n+\r\n+\r\n+    private static final long serialVersionUID = 213195494150089726L;\r\n+\r\n+    private final transient Service service;\r\n+\r\n+    private transient ApplicationContext applicationContext;\r\n+\r\n+    private transient String beanName;\r\n+\r\n+    private ApplicationEventPublisher applicationEventPublisher;\r\n+\r\n+    public ServiceBean() {\r\n+        super();\r\n+        this.service = null;\r\n+    }\r\n+\r\n+    public ServiceBean(Service service) {\r\n+        super(service);\r\n+        this.service = service;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setApplicationContext(ApplicationContext applicationContext) {\r\n+        this.applicationContext = applicationContext;\r\n+        SpringExtensionFactory.addApplicationContext(applicationContext);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setBeanName(String name) {\r\n+        this.beanName = name;\r\n+    }\r\n+\r\n+    /**\r\n+     * Gets associated {@link Service}\r\n+     *\r\n+     * @return associated {@link Service}\r\n+     */\r\n+    public Service getService() {\r\n+        return service;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void afterPropertiesSet() throws Exception {\r\n+        if (StringUtils.isEmpty(getPath())) {\r\n+            if (StringUtils.isNotEmpty(getInterface())) {\r\n+                setPath(getInterface());\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the name of {@link ServiceBean}\r\n+     *\r\n+     * @return {@link ServiceBean}'s name\r\n+     * @since 2.6.5\r\n+     */\r\n+    @Parameter(excluded = true)\r\n+    public String getBeanName() {\r\n+        return this.beanName;\r\n+    }\r\n+\r\n+    /**\r\n+     * @since 2.6.5\r\n+     */\r\n+    @Override\r\n+    public void exported() {\r\n+        super.exported();\r\n+        // Publish ServiceBeanExportedEvent\r\n+        publishExportEvent();\r\n+    }\r\n+\r\n+    /**\r\n+     * @since 2.6.5\r\n+     */\r\n+    private void publishExportEvent() {\r\n+        ServiceBeanExportedEvent exportEvent = new ServiceBeanExportedEvent(this);\r\n+        applicationEventPublisher.publishEvent(exportEvent);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() throws Exception {\r\n+        // no need to call unexport() here, see\r\n+        // org.apache.dubbo.config.spring.extension.SpringExtensionFactory.ShutdownHookListener\r\n+    }\r\n+\r\n+    // merged from dubbox\r\n+    @Override\r\n+    protected Class getServiceClass(T ref) {\r\n+        if (AopUtils.isAopProxy(ref)) {\r\n+            return AopUtils.getTargetClass(ref);\r\n+        }\r\n+        return super.getServiceClass(ref);\r\n+    }\r\n+\r\n+    /**\r\n+     * @param applicationEventPublisher\r\n+     * @since 2.6.5\r\n+     */\r\n+    @Override\r\n+    public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {\r\n+        this.applicationEventPublisher = applicationEventPublisher;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/beans/factory/annotation/AbstractAnnotationConfigBeanBuilder.java", "source2": "org/apache/dubbo/config/spring/beans/factory/annotation/AbstractAnnotationConfigBeanBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,214 +1,214 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.beans.factory.annotation;\n-\n-import org.apache.commons.logging.Log;\n-import org.apache.commons.logging.LogFactory;\n-import org.apache.dubbo.config.AbstractInterfaceConfig;\n-import org.apache.dubbo.config.ApplicationConfig;\n-import org.apache.dubbo.config.ModuleConfig;\n-import org.apache.dubbo.config.MonitorConfig;\n-import org.apache.dubbo.config.RegistryConfig;\n-import org.springframework.context.ApplicationContext;\n-import org.springframework.util.Assert;\n-\n-import java.lang.annotation.Annotation;\n-import java.util.List;\n-\n-import static org.apache.dubbo.config.spring.util.DubboBeanUtils.getBeans;\n-import static org.apache.dubbo.config.spring.util.DubboBeanUtils.getOptionalBean;\n-\n-/**\n- * Abstract Configurable {@link Annotation} Bean Builder\n- *\n- * @since 2.5.7\n- * @deprecated use {@link AnnotatedInterfaceConfigBeanBuilder}\n- */\n-@Deprecated\n-abstract class AbstractAnnotationConfigBeanBuilder<A extends Annotation, B extends AbstractInterfaceConfig> {\n-\n-    protected final Log logger = LogFactory.getLog(getClass());\n-\n-    protected final A annotation;\n-\n-    protected final ApplicationContext applicationContext;\n-\n-    protected final ClassLoader classLoader;\n-\n-    protected Object bean;\n-\n-    protected Class<?> interfaceClass;\n-\n-    protected AbstractAnnotationConfigBeanBuilder(A annotation, ClassLoader classLoader,\n-                                                  ApplicationContext applicationContext) {\n-        Assert.notNull(annotation, \"The Annotation must not be null!\");\n-        Assert.notNull(classLoader, \"The ClassLoader must not be null!\");\n-        Assert.notNull(applicationContext, \"The ApplicationContext must not be null!\");\n-        this.annotation = annotation;\n-        this.applicationContext = applicationContext;\n-        this.classLoader = classLoader;\n-\n-    }\n-\n-    /**\n-     * Build {@link B}\n-     *\n-     * @return non-null\n-     * @throws Exception\n-     */\n-    public final B build() throws Exception {\n-\n-        checkDependencies();\n-\n-        B bean = doBuild();\n-\n-        configureBean(bean);\n-\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"The bean[type:\" + bean.getClass().getSimpleName() + \"] has been built.\");\n-        }\n-\n-        return bean;\n-\n-    }\n-\n-    private void checkDependencies() {\n-\n-    }\n-\n-    /**\n-     * Builds {@link B Bean}\n-     *\n-     * @return {@link B Bean}\n-     */\n-    protected abstract B doBuild();\n-\n-\n-    protected void configureBean(B bean) throws Exception {\n-\n-        preConfigureBean(annotation, bean);\n-\n-        configureRegistryConfigs(bean);\n-\n-        configureMonitorConfig(bean);\n-\n-        configureApplicationConfig(bean);\n-\n-        configureModuleConfig(bean);\n-\n-        postConfigureBean(annotation, bean);\n-\n-    }\n-\n-    protected abstract void preConfigureBean(A annotation, B bean) throws Exception;\n-\n-\n-    private void configureRegistryConfigs(B bean) {\n-\n-        String[] registryConfigBeanIds = resolveRegistryConfigBeanNames(annotation);\n-\n-        List<RegistryConfig> registryConfigs = getBeans(applicationContext, registryConfigBeanIds, RegistryConfig.class);\n-\n-        bean.setRegistries(registryConfigs);\n-\n-    }\n-\n-    private void configureMonitorConfig(B bean) {\n-\n-        String monitorBeanName = resolveMonitorConfigBeanName(annotation);\n-\n-        MonitorConfig monitorConfig = getOptionalBean(applicationContext, monitorBeanName, MonitorConfig.class);\n-\n-        bean.setMonitor(monitorConfig);\n-\n-    }\n-\n-    private void configureApplicationConfig(B bean) {\n-\n-        String applicationConfigBeanName = resolveApplicationConfigBeanName(annotation);\n-\n-        ApplicationConfig applicationConfig =\n-                getOptionalBean(applicationContext, applicationConfigBeanName, ApplicationConfig.class);\n-\n-        bean.setApplication(applicationConfig);\n-\n-    }\n-\n-    private void configureModuleConfig(B bean) {\n-\n-        String moduleConfigBeanName = resolveModuleConfigBeanName(annotation);\n-\n-        ModuleConfig moduleConfig =\n-                getOptionalBean(applicationContext, moduleConfigBeanName, ModuleConfig.class);\n-\n-        bean.setModule(moduleConfig);\n-\n-    }\n-\n-    /**\n-     * Resolves the bean name of {@link ModuleConfig}\n-     *\n-     * @param annotation {@link A}\n-     * @return\n-     */\n-    protected abstract String resolveModuleConfigBeanName(A annotation);\n-\n-    /**\n-     * Resolves the bean name of {@link ApplicationConfig}\n-     *\n-     * @param annotation {@link A}\n-     * @return\n-     */\n-    protected abstract String resolveApplicationConfigBeanName(A annotation);\n-\n-\n-    /**\n-     * Resolves the bean ids of {@link RegistryConfig}\n-     *\n-     * @param annotation {@link A}\n-     * @return non-empty array\n-     */\n-    protected abstract String[] resolveRegistryConfigBeanNames(A annotation);\n-\n-    /**\n-     * Resolves the bean name of {@link MonitorConfig}\n-     *\n-     * @param annotation {@link A}\n-     * @return\n-     */\n-    protected abstract String resolveMonitorConfigBeanName(A annotation);\n-\n-    /**\n-     * Configures Bean\n-     *\n-     * @param annotation\n-     * @param bean\n-     */\n-    protected abstract void postConfigureBean(A annotation, B bean) throws Exception;\n-\n-\n-    public <T extends AbstractAnnotationConfigBeanBuilder<A, B>> T bean(Object bean) {\n-        this.bean = bean;\n-        return (T) this;\n-    }\n-\n-    public <T extends AbstractAnnotationConfigBeanBuilder<A, B>> T interfaceClass(Class<?> interfaceClass) {\n-        this.interfaceClass = interfaceClass;\n-        return (T) this;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.beans.factory.annotation;\r\n+\r\n+import org.apache.commons.logging.Log;\r\n+import org.apache.commons.logging.LogFactory;\r\n+import org.apache.dubbo.config.AbstractInterfaceConfig;\r\n+import org.apache.dubbo.config.ApplicationConfig;\r\n+import org.apache.dubbo.config.ModuleConfig;\r\n+import org.apache.dubbo.config.MonitorConfig;\r\n+import org.apache.dubbo.config.RegistryConfig;\r\n+import org.springframework.context.ApplicationContext;\r\n+import org.springframework.util.Assert;\r\n+\r\n+import java.lang.annotation.Annotation;\r\n+import java.util.List;\r\n+\r\n+import static org.apache.dubbo.config.spring.util.DubboBeanUtils.getBeans;\r\n+import static org.apache.dubbo.config.spring.util.DubboBeanUtils.getOptionalBean;\r\n+\r\n+/**\r\n+ * Abstract Configurable {@link Annotation} Bean Builder\r\n+ *\r\n+ * @since 2.5.7\r\n+ * @deprecated use {@link AnnotatedInterfaceConfigBeanBuilder}\r\n+ */\r\n+@Deprecated\r\n+abstract class AbstractAnnotationConfigBeanBuilder<A extends Annotation, B extends AbstractInterfaceConfig> {\r\n+\r\n+    protected final Log logger = LogFactory.getLog(getClass());\r\n+\r\n+    protected final A annotation;\r\n+\r\n+    protected final ApplicationContext applicationContext;\r\n+\r\n+    protected final ClassLoader classLoader;\r\n+\r\n+    protected Object bean;\r\n+\r\n+    protected Class<?> interfaceClass;\r\n+\r\n+    protected AbstractAnnotationConfigBeanBuilder(A annotation, ClassLoader classLoader,\r\n+                                                  ApplicationContext applicationContext) {\r\n+        Assert.notNull(annotation, \"The Annotation must not be null!\");\r\n+        Assert.notNull(classLoader, \"The ClassLoader must not be null!\");\r\n+        Assert.notNull(applicationContext, \"The ApplicationContext must not be null!\");\r\n+        this.annotation = annotation;\r\n+        this.applicationContext = applicationContext;\r\n+        this.classLoader = classLoader;\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * Build {@link B}\r\n+     *\r\n+     * @return non-null\r\n+     * @throws Exception\r\n+     */\r\n+    public final B build() throws Exception {\r\n+\r\n+        checkDependencies();\r\n+\r\n+        B bean = doBuild();\r\n+\r\n+        configureBean(bean);\r\n+\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"The bean[type:\" + bean.getClass().getSimpleName() + \"] has been built.\");\r\n+        }\r\n+\r\n+        return bean;\r\n+\r\n+    }\r\n+\r\n+    private void checkDependencies() {\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * Builds {@link B Bean}\r\n+     *\r\n+     * @return {@link B Bean}\r\n+     */\r\n+    protected abstract B doBuild();\r\n+\r\n+\r\n+    protected void configureBean(B bean) throws Exception {\r\n+\r\n+        preConfigureBean(annotation, bean);\r\n+\r\n+        configureRegistryConfigs(bean);\r\n+\r\n+        configureMonitorConfig(bean);\r\n+\r\n+        configureApplicationConfig(bean);\r\n+\r\n+        configureModuleConfig(bean);\r\n+\r\n+        postConfigureBean(annotation, bean);\r\n+\r\n+    }\r\n+\r\n+    protected abstract void preConfigureBean(A annotation, B bean) throws Exception;\r\n+\r\n+\r\n+    private void configureRegistryConfigs(B bean) {\r\n+\r\n+        String[] registryConfigBeanIds = resolveRegistryConfigBeanNames(annotation);\r\n+\r\n+        List<RegistryConfig> registryConfigs = getBeans(applicationContext, registryConfigBeanIds, RegistryConfig.class);\r\n+\r\n+        bean.setRegistries(registryConfigs);\r\n+\r\n+    }\r\n+\r\n+    private void configureMonitorConfig(B bean) {\r\n+\r\n+        String monitorBeanName = resolveMonitorConfigBeanName(annotation);\r\n+\r\n+        MonitorConfig monitorConfig = getOptionalBean(applicationContext, monitorBeanName, MonitorConfig.class);\r\n+\r\n+        bean.setMonitor(monitorConfig);\r\n+\r\n+    }\r\n+\r\n+    private void configureApplicationConfig(B bean) {\r\n+\r\n+        String applicationConfigBeanName = resolveApplicationConfigBeanName(annotation);\r\n+\r\n+        ApplicationConfig applicationConfig =\r\n+                getOptionalBean(applicationContext, applicationConfigBeanName, ApplicationConfig.class);\r\n+\r\n+        bean.setApplication(applicationConfig);\r\n+\r\n+    }\r\n+\r\n+    private void configureModuleConfig(B bean) {\r\n+\r\n+        String moduleConfigBeanName = resolveModuleConfigBeanName(annotation);\r\n+\r\n+        ModuleConfig moduleConfig =\r\n+                getOptionalBean(applicationContext, moduleConfigBeanName, ModuleConfig.class);\r\n+\r\n+        bean.setModule(moduleConfig);\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * Resolves the bean name of {@link ModuleConfig}\r\n+     *\r\n+     * @param annotation {@link A}\r\n+     * @return\r\n+     */\r\n+    protected abstract String resolveModuleConfigBeanName(A annotation);\r\n+\r\n+    /**\r\n+     * Resolves the bean name of {@link ApplicationConfig}\r\n+     *\r\n+     * @param annotation {@link A}\r\n+     * @return\r\n+     */\r\n+    protected abstract String resolveApplicationConfigBeanName(A annotation);\r\n+\r\n+\r\n+    /**\r\n+     * Resolves the bean ids of {@link RegistryConfig}\r\n+     *\r\n+     * @param annotation {@link A}\r\n+     * @return non-empty array\r\n+     */\r\n+    protected abstract String[] resolveRegistryConfigBeanNames(A annotation);\r\n+\r\n+    /**\r\n+     * Resolves the bean name of {@link MonitorConfig}\r\n+     *\r\n+     * @param annotation {@link A}\r\n+     * @return\r\n+     */\r\n+    protected abstract String resolveMonitorConfigBeanName(A annotation);\r\n+\r\n+    /**\r\n+     * Configures Bean\r\n+     *\r\n+     * @param annotation\r\n+     * @param bean\r\n+     */\r\n+    protected abstract void postConfigureBean(A annotation, B bean) throws Exception;\r\n+\r\n+\r\n+    public <T extends AbstractAnnotationConfigBeanBuilder<A, B>> T bean(Object bean) {\r\n+        this.bean = bean;\r\n+        return (T) this;\r\n+    }\r\n+\r\n+    public <T extends AbstractAnnotationConfigBeanBuilder<A, B>> T interfaceClass(Class<?> interfaceClass) {\r\n+        this.interfaceClass = interfaceClass;\r\n+        return (T) this;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/beans/factory/annotation/AnnotatedInterfaceConfigBeanBuilder.java", "source2": "org/apache/dubbo/config/spring/beans/factory/annotation/AnnotatedInterfaceConfigBeanBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,214 +1,214 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.beans.factory.annotation;\n-\n-import org.apache.commons.logging.Log;\n-import org.apache.commons.logging.LogFactory;\n-import org.apache.dubbo.config.AbstractInterfaceConfig;\n-import org.apache.dubbo.config.ApplicationConfig;\n-import org.apache.dubbo.config.ModuleConfig;\n-import org.apache.dubbo.config.MonitorConfig;\n-import org.apache.dubbo.config.RegistryConfig;\n-import org.springframework.context.ApplicationContext;\n-import org.springframework.core.annotation.AnnotationAttributes;\n-import org.springframework.util.Assert;\n-\n-import java.lang.annotation.Annotation;\n-import java.util.List;\n-\n-import static org.apache.dubbo.config.spring.util.DubboBeanUtils.getBeans;\n-import static org.apache.dubbo.config.spring.util.DubboBeanUtils.getOptionalBean;\n-\n-/**\n- * An Abstract Builder to build {@link AbstractInterfaceConfig Interface Config} Bean that annotated\n- * some {@link Annotation annotation}.\n- *\n- * @see ReferenceBeanBuilder\n- * @see AbstractInterfaceConfig\n- * @see AnnotationAttributes\n- * @since 2.7.3\n- */\n-public abstract class AnnotatedInterfaceConfigBeanBuilder<C extends AbstractInterfaceConfig> {\n-\n-    protected final Log logger = LogFactory.getLog(getClass());\n-\n-    protected final AnnotationAttributes attributes;\n-\n-    protected final ApplicationContext applicationContext;\n-\n-    protected final ClassLoader classLoader;\n-\n-    protected Object configBean;\n-\n-    protected Class<?> interfaceClass;\n-\n-    protected AnnotatedInterfaceConfigBeanBuilder(AnnotationAttributes attributes, ApplicationContext applicationContext) {\n-        Assert.notNull(attributes, \"The Annotation attributes must not be null!\");\n-        Assert.notNull(applicationContext, \"The ApplicationContext must not be null!\");\n-        this.attributes = attributes;\n-        this.applicationContext = applicationContext;\n-        this.classLoader = applicationContext.getClassLoader() != null ?\n-                applicationContext.getClassLoader() : Thread.currentThread().getContextClassLoader();\n-    }\n-\n-    /**\n-     * Build {@link C}\n-     *\n-     * @return non-null\n-     * @throws Exception\n-     */\n-    public final C build() throws Exception {\n-\n-        checkDependencies();\n-\n-        C configBean = doBuild();\n-\n-        configureBean(configBean);\n-\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"The configBean[type:\" + configBean.getClass().getSimpleName() + \"] has been built.\");\n-        }\n-\n-        return configBean;\n-\n-    }\n-\n-    private void checkDependencies() {\n-\n-    }\n-\n-    /**\n-     * Builds {@link C Bean}\n-     *\n-     * @return {@link C Bean}\n-     */\n-    protected abstract C doBuild();\n-\n-\n-    protected void configureBean(C configBean) throws Exception {\n-\n-        preConfigureBean(attributes, configBean);\n-\n-        configureRegistryConfigs(configBean);\n-\n-        configureMonitorConfig(configBean);\n-\n-        configureApplicationConfig(configBean);\n-\n-        configureModuleConfig(configBean);\n-\n-        postConfigureBean(attributes, configBean);\n-\n-    }\n-\n-    protected abstract void preConfigureBean(AnnotationAttributes attributes, C configBean) throws Exception;\n-\n-\n-    private void configureRegistryConfigs(C configBean) {\n-\n-        String[] registryConfigBeanIds = resolveRegistryConfigBeanNames(attributes);\n-\n-        List<RegistryConfig> registryConfigs = getBeans(applicationContext, registryConfigBeanIds, RegistryConfig.class);\n-\n-        configBean.setRegistries(registryConfigs);\n-\n-    }\n-\n-    private void configureMonitorConfig(C configBean) {\n-\n-        String monitorBeanName = resolveMonitorConfigBeanName(attributes);\n-\n-        MonitorConfig monitorConfig = getOptionalBean(applicationContext, monitorBeanName, MonitorConfig.class);\n-\n-        configBean.setMonitor(monitorConfig);\n-\n-    }\n-\n-    private void configureApplicationConfig(C configBean) {\n-\n-        String applicationConfigBeanName = resolveApplicationConfigBeanName(attributes);\n-\n-        ApplicationConfig applicationConfig =\n-                getOptionalBean(applicationContext, applicationConfigBeanName, ApplicationConfig.class);\n-\n-        configBean.setApplication(applicationConfig);\n-\n-    }\n-\n-    private void configureModuleConfig(C configBean) {\n-\n-        String moduleConfigBeanName = resolveModuleConfigBeanName(attributes);\n-\n-        ModuleConfig moduleConfig =\n-                getOptionalBean(applicationContext, moduleConfigBeanName, ModuleConfig.class);\n-\n-        configBean.setModule(moduleConfig);\n-\n-    }\n-\n-    /**\n-     * Resolves the configBean name of {@link ModuleConfig}\n-     *\n-     * @param attributes {@link AnnotationAttributes}\n-     * @return\n-     */\n-    protected abstract String resolveModuleConfigBeanName(AnnotationAttributes attributes);\n-\n-    /**\n-     * Resolves the configBean name of {@link ApplicationConfig}\n-     *\n-     * @param attributes {@link AnnotationAttributes}\n-     * @return\n-     */\n-    protected abstract String resolveApplicationConfigBeanName(AnnotationAttributes attributes);\n-\n-\n-    /**\n-     * Resolves the configBean ids of {@link RegistryConfig}\n-     *\n-     * @param attributes {@link AnnotationAttributes}\n-     * @return non-empty array\n-     */\n-    protected abstract String[] resolveRegistryConfigBeanNames(AnnotationAttributes attributes);\n-\n-    /**\n-     * Resolves the configBean name of {@link MonitorConfig}\n-     *\n-     * @param attributes {@link AnnotationAttributes}\n-     * @return\n-     */\n-    protected abstract String resolveMonitorConfigBeanName(AnnotationAttributes attributes);\n-\n-    /**\n-     * Configures Bean\n-     *\n-     * @param attributes\n-     * @param configBean\n-     */\n-    protected abstract void postConfigureBean(AnnotationAttributes attributes, C configBean) throws Exception;\n-\n-\n-    public <T extends AnnotatedInterfaceConfigBeanBuilder<C>> T configBean(Object configBean) {\n-        this.configBean = configBean;\n-        return (T) this;\n-    }\n-\n-    public <T extends AnnotatedInterfaceConfigBeanBuilder<C>> T interfaceClass(Class<?> interfaceClass) {\n-        this.interfaceClass = interfaceClass;\n-        return (T) this;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.beans.factory.annotation;\r\n+\r\n+import org.apache.commons.logging.Log;\r\n+import org.apache.commons.logging.LogFactory;\r\n+import org.apache.dubbo.config.AbstractInterfaceConfig;\r\n+import org.apache.dubbo.config.ApplicationConfig;\r\n+import org.apache.dubbo.config.ModuleConfig;\r\n+import org.apache.dubbo.config.MonitorConfig;\r\n+import org.apache.dubbo.config.RegistryConfig;\r\n+import org.springframework.context.ApplicationContext;\r\n+import org.springframework.core.annotation.AnnotationAttributes;\r\n+import org.springframework.util.Assert;\r\n+\r\n+import java.lang.annotation.Annotation;\r\n+import java.util.List;\r\n+\r\n+import static org.apache.dubbo.config.spring.util.DubboBeanUtils.getBeans;\r\n+import static org.apache.dubbo.config.spring.util.DubboBeanUtils.getOptionalBean;\r\n+\r\n+/**\r\n+ * An Abstract Builder to build {@link AbstractInterfaceConfig Interface Config} Bean that annotated\r\n+ * some {@link Annotation annotation}.\r\n+ *\r\n+ * @see ReferenceBeanBuilder\r\n+ * @see AbstractInterfaceConfig\r\n+ * @see AnnotationAttributes\r\n+ * @since 2.7.3\r\n+ */\r\n+public abstract class AnnotatedInterfaceConfigBeanBuilder<C extends AbstractInterfaceConfig> {\r\n+\r\n+    protected final Log logger = LogFactory.getLog(getClass());\r\n+\r\n+    protected final AnnotationAttributes attributes;\r\n+\r\n+    protected final ApplicationContext applicationContext;\r\n+\r\n+    protected final ClassLoader classLoader;\r\n+\r\n+    protected Object configBean;\r\n+\r\n+    protected Class<?> interfaceClass;\r\n+\r\n+    protected AnnotatedInterfaceConfigBeanBuilder(AnnotationAttributes attributes, ApplicationContext applicationContext) {\r\n+        Assert.notNull(attributes, \"The Annotation attributes must not be null!\");\r\n+        Assert.notNull(applicationContext, \"The ApplicationContext must not be null!\");\r\n+        this.attributes = attributes;\r\n+        this.applicationContext = applicationContext;\r\n+        this.classLoader = applicationContext.getClassLoader() != null ?\r\n+                applicationContext.getClassLoader() : Thread.currentThread().getContextClassLoader();\r\n+    }\r\n+\r\n+    /**\r\n+     * Build {@link C}\r\n+     *\r\n+     * @return non-null\r\n+     * @throws Exception\r\n+     */\r\n+    public final C build() throws Exception {\r\n+\r\n+        checkDependencies();\r\n+\r\n+        C configBean = doBuild();\r\n+\r\n+        configureBean(configBean);\r\n+\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"The configBean[type:\" + configBean.getClass().getSimpleName() + \"] has been built.\");\r\n+        }\r\n+\r\n+        return configBean;\r\n+\r\n+    }\r\n+\r\n+    private void checkDependencies() {\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * Builds {@link C Bean}\r\n+     *\r\n+     * @return {@link C Bean}\r\n+     */\r\n+    protected abstract C doBuild();\r\n+\r\n+\r\n+    protected void configureBean(C configBean) throws Exception {\r\n+\r\n+        preConfigureBean(attributes, configBean);\r\n+\r\n+        configureRegistryConfigs(configBean);\r\n+\r\n+        configureMonitorConfig(configBean);\r\n+\r\n+        configureApplicationConfig(configBean);\r\n+\r\n+        configureModuleConfig(configBean);\r\n+\r\n+        postConfigureBean(attributes, configBean);\r\n+\r\n+    }\r\n+\r\n+    protected abstract void preConfigureBean(AnnotationAttributes attributes, C configBean) throws Exception;\r\n+\r\n+\r\n+    private void configureRegistryConfigs(C configBean) {\r\n+\r\n+        String[] registryConfigBeanIds = resolveRegistryConfigBeanNames(attributes);\r\n+\r\n+        List<RegistryConfig> registryConfigs = getBeans(applicationContext, registryConfigBeanIds, RegistryConfig.class);\r\n+\r\n+        configBean.setRegistries(registryConfigs);\r\n+\r\n+    }\r\n+\r\n+    private void configureMonitorConfig(C configBean) {\r\n+\r\n+        String monitorBeanName = resolveMonitorConfigBeanName(attributes);\r\n+\r\n+        MonitorConfig monitorConfig = getOptionalBean(applicationContext, monitorBeanName, MonitorConfig.class);\r\n+\r\n+        configBean.setMonitor(monitorConfig);\r\n+\r\n+    }\r\n+\r\n+    private void configureApplicationConfig(C configBean) {\r\n+\r\n+        String applicationConfigBeanName = resolveApplicationConfigBeanName(attributes);\r\n+\r\n+        ApplicationConfig applicationConfig =\r\n+                getOptionalBean(applicationContext, applicationConfigBeanName, ApplicationConfig.class);\r\n+\r\n+        configBean.setApplication(applicationConfig);\r\n+\r\n+    }\r\n+\r\n+    private void configureModuleConfig(C configBean) {\r\n+\r\n+        String moduleConfigBeanName = resolveModuleConfigBeanName(attributes);\r\n+\r\n+        ModuleConfig moduleConfig =\r\n+                getOptionalBean(applicationContext, moduleConfigBeanName, ModuleConfig.class);\r\n+\r\n+        configBean.setModule(moduleConfig);\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * Resolves the configBean name of {@link ModuleConfig}\r\n+     *\r\n+     * @param attributes {@link AnnotationAttributes}\r\n+     * @return\r\n+     */\r\n+    protected abstract String resolveModuleConfigBeanName(AnnotationAttributes attributes);\r\n+\r\n+    /**\r\n+     * Resolves the configBean name of {@link ApplicationConfig}\r\n+     *\r\n+     * @param attributes {@link AnnotationAttributes}\r\n+     * @return\r\n+     */\r\n+    protected abstract String resolveApplicationConfigBeanName(AnnotationAttributes attributes);\r\n+\r\n+\r\n+    /**\r\n+     * Resolves the configBean ids of {@link RegistryConfig}\r\n+     *\r\n+     * @param attributes {@link AnnotationAttributes}\r\n+     * @return non-empty array\r\n+     */\r\n+    protected abstract String[] resolveRegistryConfigBeanNames(AnnotationAttributes attributes);\r\n+\r\n+    /**\r\n+     * Resolves the configBean name of {@link MonitorConfig}\r\n+     *\r\n+     * @param attributes {@link AnnotationAttributes}\r\n+     * @return\r\n+     */\r\n+    protected abstract String resolveMonitorConfigBeanName(AnnotationAttributes attributes);\r\n+\r\n+    /**\r\n+     * Configures Bean\r\n+     *\r\n+     * @param attributes\r\n+     * @param configBean\r\n+     */\r\n+    protected abstract void postConfigureBean(AnnotationAttributes attributes, C configBean) throws Exception;\r\n+\r\n+\r\n+    public <T extends AnnotatedInterfaceConfigBeanBuilder<C>> T configBean(Object configBean) {\r\n+        this.configBean = configBean;\r\n+        return (T) this;\r\n+    }\r\n+\r\n+    public <T extends AnnotatedInterfaceConfigBeanBuilder<C>> T interfaceClass(Class<?> interfaceClass) {\r\n+        this.interfaceClass = interfaceClass;\r\n+        return (T) this;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapter.java", "source2": "org/apache/dubbo/config/spring/beans/factory/annotation/AnnotationPropertyValuesAdapter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,84 +1,84 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.beans.factory.annotation;\n-\n-import org.springframework.beans.MutablePropertyValues;\n-import org.springframework.beans.PropertyValue;\n-import org.springframework.beans.PropertyValues;\n-import org.springframework.core.env.PropertyResolver;\n-\n-import java.lang.annotation.Annotation;\n-import java.util.Map;\n-\n-import static com.alibaba.spring.util.AnnotationUtils.getAttributes;\n-\n-/**\n- * {@link Annotation} {@link PropertyValues} Adapter\n- *\n- * @see Annotation\n- * @see PropertyValues\n- * @since 2.5.11\n- */\n-class AnnotationPropertyValuesAdapter implements PropertyValues {\n-\n-    private final PropertyValues delegate;\n-\n-    /**\n-     * @param attributes\n-     * @param propertyResolver\n-     * @param ignoreAttributeNames\n-     * @since 2.7.3\n-     */\n-    public AnnotationPropertyValuesAdapter(Map<String, Object> attributes, PropertyResolver propertyResolver,\n-                                           String... ignoreAttributeNames) {\n-        this.delegate = new MutablePropertyValues(getAttributes(attributes, propertyResolver, ignoreAttributeNames));\n-    }\n-\n-    public AnnotationPropertyValuesAdapter(Annotation annotation, PropertyResolver propertyResolver,\n-                                           boolean ignoreDefaultValue, String... ignoreAttributeNames) {\n-        this.delegate = new MutablePropertyValues(getAttributes(annotation, propertyResolver, ignoreDefaultValue, ignoreAttributeNames));\n-    }\n-\n-    public AnnotationPropertyValuesAdapter(Annotation annotation, PropertyResolver propertyResolver, String... ignoreAttributeNames) {\n-        this(annotation, propertyResolver, true, ignoreAttributeNames);\n-    }\n-\n-    @Override\n-    public PropertyValue[] getPropertyValues() {\n-        return delegate.getPropertyValues();\n-    }\n-\n-    @Override\n-    public PropertyValue getPropertyValue(String propertyName) {\n-        return delegate.getPropertyValue(propertyName);\n-    }\n-\n-    @Override\n-    public PropertyValues changesSince(PropertyValues old) {\n-        return delegate.changesSince(old);\n-    }\n-\n-    @Override\n-    public boolean contains(String propertyName) {\n-        return delegate.contains(propertyName);\n-    }\n-\n-    @Override\n-    public boolean isEmpty() {\n-        return delegate.isEmpty();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.beans.factory.annotation;\r\n+\r\n+import org.springframework.beans.MutablePropertyValues;\r\n+import org.springframework.beans.PropertyValue;\r\n+import org.springframework.beans.PropertyValues;\r\n+import org.springframework.core.env.PropertyResolver;\r\n+\r\n+import java.lang.annotation.Annotation;\r\n+import java.util.Map;\r\n+\r\n+import static com.alibaba.spring.util.AnnotationUtils.getAttributes;\r\n+\r\n+/**\r\n+ * {@link Annotation} {@link PropertyValues} Adapter\r\n+ *\r\n+ * @see Annotation\r\n+ * @see PropertyValues\r\n+ * @since 2.5.11\r\n+ */\r\n+class AnnotationPropertyValuesAdapter implements PropertyValues {\r\n+\r\n+    private final PropertyValues delegate;\r\n+\r\n+    /**\r\n+     * @param attributes\r\n+     * @param propertyResolver\r\n+     * @param ignoreAttributeNames\r\n+     * @since 2.7.3\r\n+     */\r\n+    public AnnotationPropertyValuesAdapter(Map<String, Object> attributes, PropertyResolver propertyResolver,\r\n+                                           String... ignoreAttributeNames) {\r\n+        this.delegate = new MutablePropertyValues(getAttributes(attributes, propertyResolver, ignoreAttributeNames));\r\n+    }\r\n+\r\n+    public AnnotationPropertyValuesAdapter(Annotation annotation, PropertyResolver propertyResolver,\r\n+                                           boolean ignoreDefaultValue, String... ignoreAttributeNames) {\r\n+        this.delegate = new MutablePropertyValues(getAttributes(annotation, propertyResolver, ignoreDefaultValue, ignoreAttributeNames));\r\n+    }\r\n+\r\n+    public AnnotationPropertyValuesAdapter(Annotation annotation, PropertyResolver propertyResolver, String... ignoreAttributeNames) {\r\n+        this(annotation, propertyResolver, true, ignoreAttributeNames);\r\n+    }\r\n+\r\n+    @Override\r\n+    public PropertyValue[] getPropertyValues() {\r\n+        return delegate.getPropertyValues();\r\n+    }\r\n+\r\n+    @Override\r\n+    public PropertyValue getPropertyValue(String propertyName) {\r\n+        return delegate.getPropertyValue(propertyName);\r\n+    }\r\n+\r\n+    @Override\r\n+    public PropertyValues changesSince(PropertyValues old) {\r\n+        return delegate.changesSince(old);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean contains(String propertyName) {\r\n+        return delegate.contains(propertyName);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isEmpty() {\r\n+        return delegate.isEmpty();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/beans/factory/annotation/DubboConfigAliasPostProcessor.java", "source2": "org/apache/dubbo/config/spring/beans/factory/annotation/DubboConfigAliasPostProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,74 +1,74 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.beans.factory.annotation;\n-\n-import org.apache.dubbo.config.AbstractConfig;\n-import org.apache.dubbo.config.spring.context.annotation.DubboConfigConfigurationRegistrar;\n-\n-import org.springframework.beans.BeansException;\n-import org.springframework.beans.factory.config.BeanPostProcessor;\n-import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;\n-import org.springframework.beans.factory.support.BeanDefinitionRegistry;\n-import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;\n-\n-import static com.alibaba.spring.util.BeanRegistrar.hasAlias;\n-import static org.springframework.util.ObjectUtils.nullSafeEquals;\n-import static org.springframework.util.StringUtils.hasText;\n-\n-/**\n- * A Post-Processor class to set the alias of Dubbo Config bean using its {@link AbstractConfig#getId()}\n- *\n- * @since 2.7.5\n- */\n-public class DubboConfigAliasPostProcessor implements BeanDefinitionRegistryPostProcessor, BeanPostProcessor {\n-\n-    /**\n-     * The bean name of {@link DubboConfigConfigurationRegistrar}\n-     */\n-    public final static String BEAN_NAME = \"dubboConfigAliasPostProcessor\";\n-\n-    private BeanDefinitionRegistry registry;\n-\n-    @Override\n-    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {\n-        this.registry = registry;\n-    }\n-\n-    @Override\n-    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {\n-        // DO NOTHING\n-    }\n-\n-    @Override\n-    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {\n-        // DO NOTHING\n-        return bean;\n-    }\n-\n-    @Override\n-    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {\n-        if (bean instanceof AbstractConfig) {\n-            String id = ((AbstractConfig) bean).getId();\n-            if (hasText(id)                                     // id MUST be present in AbstractConfig\n-                    && !nullSafeEquals(id, beanName)            // id MUST NOT be equal to bean name\n-                    && !hasAlias(registry, beanName, id)) {     // id MUST NOT be present in AliasRegistry\n-                registry.registerAlias(beanName, id);\n-            }\n-        }\n-        return bean;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.beans.factory.annotation;\r\n+\r\n+import org.apache.dubbo.config.AbstractConfig;\r\n+import org.apache.dubbo.config.spring.context.annotation.DubboConfigConfigurationRegistrar;\r\n+\r\n+import org.springframework.beans.BeansException;\r\n+import org.springframework.beans.factory.config.BeanPostProcessor;\r\n+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;\r\n+import org.springframework.beans.factory.support.BeanDefinitionRegistry;\r\n+import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;\r\n+\r\n+import static com.alibaba.spring.util.BeanRegistrar.hasAlias;\r\n+import static org.springframework.util.ObjectUtils.nullSafeEquals;\r\n+import static org.springframework.util.StringUtils.hasText;\r\n+\r\n+/**\r\n+ * A Post-Processor class to set the alias of Dubbo Config bean using its {@link AbstractConfig#getId()}\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class DubboConfigAliasPostProcessor implements BeanDefinitionRegistryPostProcessor, BeanPostProcessor {\r\n+\r\n+    /**\r\n+     * The bean name of {@link DubboConfigConfigurationRegistrar}\r\n+     */\r\n+    public final static String BEAN_NAME = \"dubboConfigAliasPostProcessor\";\r\n+\r\n+    private BeanDefinitionRegistry registry;\r\n+\r\n+    @Override\r\n+    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {\r\n+        this.registry = registry;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {\r\n+        // DO NOTHING\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {\r\n+        // DO NOTHING\r\n+        return bean;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {\r\n+        if (bean instanceof AbstractConfig) {\r\n+            String id = ((AbstractConfig) bean).getId();\r\n+            if (hasText(id)                                     // id MUST be present in AbstractConfig\r\n+                    && !nullSafeEquals(id, beanName)            // id MUST NOT be equal to bean name\r\n+                    && !hasAlias(registry, beanName, id)) {     // id MUST NOT be present in AliasRegistry\r\n+                registry.registerAlias(beanName, id);\r\n+            }\r\n+        }\r\n+        return bean;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceAnnotationBeanPostProcessor.java", "source2": "org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceAnnotationBeanPostProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,416 +1,416 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.beans.factory.annotation;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.config.annotation.DubboReference;\n-import org.apache.dubbo.config.annotation.DubboService;\n-import org.apache.dubbo.config.annotation.Reference;\n-import org.apache.dubbo.config.annotation.Service;\n-import org.apache.dubbo.config.spring.ReferenceBean;\n-import org.apache.dubbo.config.spring.ServiceBean;\n-\n-import com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor;\n-import com.alibaba.spring.util.AnnotationUtils;\n-import org.springframework.beans.BeansException;\n-import org.springframework.beans.factory.annotation.InjectionMetadata;\n-import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;\n-import org.springframework.beans.factory.config.RuntimeBeanReference;\n-import org.springframework.beans.factory.support.AbstractBeanDefinition;\n-import org.springframework.context.ApplicationContext;\n-import org.springframework.context.ApplicationContextAware;\n-import org.springframework.context.ApplicationEvent;\n-import org.springframework.context.ApplicationListener;\n-import org.springframework.context.event.ContextRefreshedEvent;\n-import org.springframework.core.annotation.AnnotationAttributes;\n-import org.springframework.util.ObjectUtils;\n-\n-import java.lang.annotation.Annotation;\n-import java.lang.reflect.Field;\n-import java.lang.reflect.Method;\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.Collection;\n-import java.util.Collections;\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.TreeSet;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-import java.util.stream.Collectors;\n-\n-import static com.alibaba.spring.util.AnnotationUtils.getAttribute;\n-import static com.alibaba.spring.util.AnnotationUtils.getAttributes;\n-import static org.apache.dubbo.config.spring.beans.factory.annotation.ServiceBeanNameBuilder.create;\n-import static org.springframework.util.StringUtils.hasText;\n-\n-/**\n- * {@link org.springframework.beans.factory.config.BeanPostProcessor} implementation\n- * that Consumer service {@link Reference} annotated fields\n- *\n- * @see DubboReference\n- * @see Reference\n- * @see com.alibaba.dubbo.config.annotation.Reference\n- * @since 2.5.7\n- */\n-public class ReferenceAnnotationBeanPostProcessor extends AbstractAnnotationBeanPostProcessor implements\n-        ApplicationContextAware, ApplicationListener {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(ReferenceAnnotationBeanPostProcessor.class);\n-\n-    /**\n-     * The bean name of {@link ReferenceAnnotationBeanPostProcessor}\n-     */\n-    public static final String BEAN_NAME = \"referenceAnnotationBeanPostProcessor\";\n-\n-    /**\n-     * Cache size\n-     */\n-    private static final int CACHE_SIZE = Integer.getInteger(BEAN_NAME + \".cache.size\", 32);\n-\n-    private final ConcurrentMap<String, ReferenceBean<?>> referenceBeanCache =\n-            new ConcurrentHashMap<>(CACHE_SIZE);\n-\n-    private final ConcurrentMap<InjectionMetadata.InjectedElement, ReferenceBean<?>> injectedFieldReferenceBeanCache =\n-            new ConcurrentHashMap<>(CACHE_SIZE);\n-\n-    private final ConcurrentMap<InjectionMetadata.InjectedElement, ReferenceBean<?>> injectedMethodReferenceBeanCache =\n-            new ConcurrentHashMap<>(CACHE_SIZE);\n-\n-    private ApplicationContext applicationContext;\n-\n-    private static Map<String, TreeSet<String>> referencedBeanNameIdx = new HashMap<>();\n-\n-    /**\n-     * {@link com.alibaba.dubbo.config.annotation.Reference @com.alibaba.dubbo.config.annotation.Reference} has been supported since 2.7.3\n-     * <p>\n-     * {@link DubboReference @DubboReference} has been supported since 2.7.7\n-     */\n-    public ReferenceAnnotationBeanPostProcessor() {\n-        super(DubboReference.class, Reference.class, com.alibaba.dubbo.config.annotation.Reference.class);\n-    }\n-\n-    /**\n-     * Gets all beans of {@link ReferenceBean}\n-     *\n-     * @return non-null read-only {@link Collection}\n-     * @since 2.5.9\n-     */\n-    public Collection<ReferenceBean<?>> getReferenceBeans() {\n-        return referenceBeanCache.values();\n-    }\n-\n-    /**\n-     * Get {@link ReferenceBean} {@link Map} in injected field.\n-     *\n-     * @return non-null {@link Map}\n-     * @since 2.5.11\n-     */\n-    public Map<InjectionMetadata.InjectedElement, ReferenceBean<?>> getInjectedFieldReferenceBeanMap() {\n-        return Collections.unmodifiableMap(injectedFieldReferenceBeanCache);\n-    }\n-\n-    /**\n-     * Get {@link ReferenceBean} {@link Map} in injected method.\n-     *\n-     * @return non-null {@link Map}\n-     * @since 2.5.11\n-     */\n-    public Map<InjectionMetadata.InjectedElement, ReferenceBean<?>> getInjectedMethodReferenceBeanMap() {\n-        return Collections.unmodifiableMap(injectedMethodReferenceBeanCache);\n-    }\n-\n-    @Override\n-    protected Object doGetInjectedBean(AnnotationAttributes attributes, Object bean, String beanName, Class<?> injectedType,\n-                                       InjectionMetadata.InjectedElement injectedElement) throws Exception {\n-        /**\n-         * The name of bean that annotated Dubbo's {@link Service @Service} in local Spring {@link ApplicationContext}\n-         */\n-        String referencedBeanName = buildReferencedBeanName(attributes, injectedType);\n-\n-        /**\n-         * The name of bean that is declared by {@link Reference @Reference} annotation injection\n-         */\n-        String referenceBeanName = getReferenceBeanName(attributes, injectedType);\n-\n-        referencedBeanNameIdx.computeIfAbsent(referencedBeanName, k -> new TreeSet<String>()).add(referenceBeanName);\n-\n-        ReferenceBean referenceBean = buildReferenceBeanIfAbsent(referenceBeanName, attributes, injectedType);\n-\n-        boolean localServiceBean = isLocalServiceBean(referencedBeanName, referenceBean, attributes);\n-\n-        prepareReferenceBean(referencedBeanName, referenceBean, localServiceBean);\n-\n-        registerReferenceBean(referencedBeanName, referenceBean, attributes, localServiceBean, injectedType);\n-\n-        cacheInjectedReferenceBean(referenceBean, injectedElement);\n-\n-        return referenceBean.get();\n-    }\n-\n-    /**\n-     * Register an instance of {@link ReferenceBean} as a Spring Bean\n-     *\n-     * @param referencedBeanName The name of bean that annotated Dubbo's {@link Service @Service} in the Spring {@link ApplicationContext}\n-     * @param referenceBean      the instance of {@link ReferenceBean} is about to register into the Spring {@link ApplicationContext}\n-     * @param attributes         the {@link AnnotationAttributes attributes} of {@link Reference @Reference}\n-     * @param localServiceBean   Is Local Service bean or not\n-     * @param interfaceClass     the {@link Class class} of Service interface\n-     * @since 2.7.3\n-     */\n-    private void registerReferenceBean(String referencedBeanName, ReferenceBean referenceBean,\n-                                       AnnotationAttributes attributes,\n-                                       boolean localServiceBean, Class<?> interfaceClass) {\n-\n-        ConfigurableListableBeanFactory beanFactory = getBeanFactory();\n-\n-        String beanName = getReferenceBeanName(attributes, interfaceClass);\n-\n-        if (localServiceBean) {  // If @Service bean is local one\n-            /**\n-             * Get  the @Service's BeanDefinition from {@link BeanFactory}\n-             * Refer to {@link ServiceAnnotationBeanPostProcessor#buildServiceBeanDefinition}\n-             */\n-            AbstractBeanDefinition beanDefinition = (AbstractBeanDefinition) beanFactory.getBeanDefinition(referencedBeanName);\n-            RuntimeBeanReference runtimeBeanReference = (RuntimeBeanReference) beanDefinition.getPropertyValues().get(\"ref\");\n-            // The name of bean annotated @Service\n-            String serviceBeanName = runtimeBeanReference.getBeanName();\n-            // register Alias rather than a new bean name, in order to reduce duplicated beans\n-            beanFactory.registerAlias(serviceBeanName, beanName);\n-        } else { // Remote @Service Bean\n-            if (!beanFactory.containsBean(beanName)) {\n-                beanFactory.registerSingleton(beanName, referenceBean);\n-            }\n-        }\n-    }\n-\n-    /**\n-     * Get the bean name of {@link ReferenceBean} if {@link Reference#id() id attribute} is present,\n-     * or {@link #generateReferenceBeanName(AnnotationAttributes, Class) generate}.\n-     *\n-     * @param attributes     the {@link AnnotationAttributes attributes} of {@link Reference @Reference}\n-     * @param interfaceClass the {@link Class class} of Service interface\n-     * @return non-null\n-     * @since 2.7.3\n-     */\n-    private String getReferenceBeanName(AnnotationAttributes attributes, Class<?> interfaceClass) {\n-        // id attribute appears since 2.7.3\n-        String beanName = getAttribute(attributes, \"id\");\n-        if (!hasText(beanName)) {\n-            beanName = generateReferenceBeanName(attributes, interfaceClass);\n-        }\n-        return beanName;\n-    }\n-\n-    /**\n-     * Build the bean name of {@link ReferenceBean}\n-     *\n-     * @param attributes     the {@link AnnotationAttributes attributes} of {@link Reference @Reference}\n-     * @param interfaceClass the {@link Class class} of Service interface\n-     * @return\n-     * @since 2.7.3\n-     */\n-    private String generateReferenceBeanName(AnnotationAttributes attributes, Class<?> interfaceClass) {\n-        StringBuilder beanNameBuilder = new StringBuilder(\"@Reference\");\n-\n-        if (!attributes.isEmpty()) {\n-            beanNameBuilder.append('(');\n-            for (Map.Entry<String, Object> entry : attributes.entrySet()) {\n-                String value;\n-                if (\"parameters\".equals(entry.getKey())) {\n-                    ArrayList<String> pairs = getParameterPairs(entry);\n-                    value = convertAttribute(pairs.stream().sorted().toArray());\n-                } else {\n-                    value = convertAttribute(entry.getValue());\n-                }\n-                beanNameBuilder.append(entry.getKey())\n-                        .append('=')\n-                        .append(value)\n-                        .append(',');\n-            }\n-            // replace the latest \",\" to be \")\"\n-            beanNameBuilder.setCharAt(beanNameBuilder.lastIndexOf(\",\"), ')');\n-        }\n-\n-        beanNameBuilder.append(\" \").append(interfaceClass.getName());\n-\n-        return beanNameBuilder.toString();\n-    }\n-\n-    private ArrayList<String> getParameterPairs(Map.Entry<String, Object> entry) {\n-        String[] entryValues = (String[]) entry.getValue();\n-        ArrayList<String> pairs = new ArrayList<>();\n-        // parameters spec is {key1,value1,key2,value2}\n-        for (int i = 0; i < entryValues.length / 2 * 2; i = i + 2) {\n-            pairs.add(entryValues[i] + \"=\" + entryValues[i + 1]);\n-        }\n-        return pairs;\n-    }\n-\n-    private String convertAttribute(Object obj) {\n-        if (obj == null) {\n-            return null;\n-        }\n-        if (obj instanceof Annotation) {\n-            AnnotationAttributes attributes = AnnotationUtils.getAnnotationAttributes((Annotation) obj, true);\n-            for (Map.Entry<String, Object> entry : attributes.entrySet()) {\n-                entry.setValue(convertAttribute(entry.getValue()));\n-            }\n-            return String.valueOf(attributes);\n-        } else if (obj.getClass().isArray()) {\n-            Object[] array = ObjectUtils.toObjectArray(obj);\n-            String[] newArray = new String[array.length];\n-            for (int i = 0; i < array.length; i++) {\n-                newArray[i] = convertAttribute(array[i]);\n-            }\n-            return Arrays.toString(Arrays.stream(newArray).sorted().toArray());\n-        } else {\n-            return String.valueOf(obj);\n-        }\n-    }\n-\n-    /**\n-     * Is Local Service bean or not?\n-     *\n-     * @param referencedBeanName the bean name to the referenced bean\n-     * @return If the target referenced bean is existed, return <code>true</code>, or <code>false</code>\n-     * @since 2.7.6\n-     */\n-    private boolean isLocalServiceBean(String referencedBeanName, ReferenceBean referenceBean, AnnotationAttributes attributes) {\n-        return existsServiceBean(referencedBeanName) && !isRemoteReferenceBean(referenceBean, attributes);\n-    }\n-\n-    /**\n-     * Check the {@link ServiceBean} is exited or not\n-     *\n-     * @param referencedBeanName the bean name to the referenced bean\n-     * @return if exists, return <code>true</code>, or <code>false</code>\n-     * @revised 2.7.6\n-     */\n-    private boolean existsServiceBean(String referencedBeanName) {\n-        return applicationContext.containsBean(referencedBeanName) &&\n-                applicationContext.isTypeMatch(referencedBeanName, ServiceBean.class);\n-\n-    }\n-\n-    private boolean isRemoteReferenceBean(ReferenceBean referenceBean, AnnotationAttributes attributes) {\n-        boolean remote = Boolean.FALSE.equals(referenceBean.isInjvm()) || Boolean.FALSE.equals(attributes.get(\"injvm\"));\n-        return remote;\n-    }\n-\n-    /**\n-     * Prepare {@link ReferenceBean}\n-     *\n-     * @param referencedBeanName The name of bean that annotated Dubbo's {@link DubboService @DubboService}\n-     *                           in the Spring {@link ApplicationContext}\n-     * @param referenceBean      the instance of {@link ReferenceBean}\n-     * @param localServiceBean   Is Local Service bean or not\n-     * @since 2.7.8\n-     */\n-    private void prepareReferenceBean(String referencedBeanName, ReferenceBean referenceBean, boolean localServiceBean) {\n-        //  Issue : https://github.com/apache/dubbo/issues/6224\n-        if (localServiceBean) { // If the local @Service Bean exists\n-            referenceBean.setInjvm(Boolean.TRUE);\n-            exportServiceBeanIfNecessary(referencedBeanName); // If the referenced ServiceBean exits, export it immediately\n-        }\n-    }\n-\n-\n-    private void exportServiceBeanIfNecessary(String referencedBeanName) {\n-        if (existsServiceBean(referencedBeanName)) {\n-            ServiceBean serviceBean = getServiceBean(referencedBeanName);\n-            if (!serviceBean.isExported()) {\n-                serviceBean.export();\n-            }\n-        }\n-    }\n-\n-    private ServiceBean getServiceBean(String referencedBeanName) {\n-        return applicationContext.getBean(referencedBeanName, ServiceBean.class);\n-    }\n-\n-    @Override\n-    protected String buildInjectedObjectCacheKey(AnnotationAttributes attributes, Object bean, String beanName,\n-                                                 Class<?> injectedType, InjectionMetadata.InjectedElement injectedElement) {\n-        return buildReferencedBeanName(attributes, injectedType) +\n-                \"#source=\" + (injectedElement.getMember()) +\n-                \"#attributes=\" + getAttributes(attributes, getEnvironment());\n-    }\n-\n-    /**\n-     * @param attributes           the attributes of {@link Reference @Reference}\n-     * @param serviceInterfaceType the type of Dubbo's service interface\n-     * @return The name of bean that annotated Dubbo's {@link Service @Service} in local Spring {@link ApplicationContext}\n-     */\n-    private String buildReferencedBeanName(AnnotationAttributes attributes, Class<?> serviceInterfaceType) {\n-        ServiceBeanNameBuilder serviceBeanNameBuilder = create(attributes, serviceInterfaceType, getEnvironment());\n-        return serviceBeanNameBuilder.build();\n-    }\n-\n-    private ReferenceBean buildReferenceBeanIfAbsent(String referenceBeanName, AnnotationAttributes attributes,\n-                                                     Class<?> referencedType)\n-            throws Exception {\n-\n-        ReferenceBean<?> referenceBean = referenceBeanCache.get(referenceBeanName);\n-\n-        if (referenceBean == null) {\n-            ReferenceBeanBuilder beanBuilder = ReferenceBeanBuilder\n-                    .create(attributes, applicationContext)\n-                    .interfaceClass(referencedType);\n-            referenceBean = beanBuilder.build();\n-            referenceBeanCache.put(referenceBeanName, referenceBean);\n-        } else if (!referencedType.isAssignableFrom(referenceBean.getInterfaceClass())) {\n-            throw new IllegalArgumentException(\"reference bean name \" + referenceBeanName + \" has been duplicated, but interfaceClass \" +\n-                    referenceBean.getInterfaceClass().getName() + \" cannot be assigned to \" + referencedType.getName());\n-        }\n-        return referenceBean;\n-    }\n-\n-    private void cacheInjectedReferenceBean(ReferenceBean referenceBean,\n-                                            InjectionMetadata.InjectedElement injectedElement) {\n-        if (injectedElement.getMember() instanceof Field) {\n-            injectedFieldReferenceBeanCache.put(injectedElement, referenceBean);\n-        } else if (injectedElement.getMember() instanceof Method) {\n-            injectedMethodReferenceBeanCache.put(injectedElement, referenceBean);\n-        }\n-    }\n-\n-    @Override\n-    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {\n-        this.applicationContext = applicationContext;\n-    }\n-\n-    @Override\n-    public void destroy() throws Exception {\n-        super.destroy();\n-        this.referenceBeanCache.clear();\n-        this.injectedFieldReferenceBeanCache.clear();\n-        this.injectedMethodReferenceBeanCache.clear();\n-    }\n-\n-    @Override\n-    public void onApplicationEvent(ApplicationEvent event) {\n-        if (event instanceof ContextRefreshedEvent) {\n-            referencedBeanNameIdx.entrySet().stream().filter(e -> e.getValue().size() > 1).forEach(e -> {\n-                String logPrefix = e.getKey() + \" has \" + e.getValue().size() + \" reference instances, there are: \";\n-                logger.warn(e.getValue().stream().collect(Collectors.joining(\", \", logPrefix, \"\")));\n-            });\n-            referencedBeanNameIdx.clear();\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.beans.factory.annotation;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.config.annotation.DubboReference;\r\n+import org.apache.dubbo.config.annotation.DubboService;\r\n+import org.apache.dubbo.config.annotation.Reference;\r\n+import org.apache.dubbo.config.annotation.Service;\r\n+import org.apache.dubbo.config.spring.ReferenceBean;\r\n+import org.apache.dubbo.config.spring.ServiceBean;\r\n+\r\n+import com.alibaba.spring.beans.factory.annotation.AbstractAnnotationBeanPostProcessor;\r\n+import com.alibaba.spring.util.AnnotationUtils;\r\n+import org.springframework.beans.BeansException;\r\n+import org.springframework.beans.factory.annotation.InjectionMetadata;\r\n+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;\r\n+import org.springframework.beans.factory.config.RuntimeBeanReference;\r\n+import org.springframework.beans.factory.support.AbstractBeanDefinition;\r\n+import org.springframework.context.ApplicationContext;\r\n+import org.springframework.context.ApplicationContextAware;\r\n+import org.springframework.context.ApplicationEvent;\r\n+import org.springframework.context.ApplicationListener;\r\n+import org.springframework.context.event.ContextRefreshedEvent;\r\n+import org.springframework.core.annotation.AnnotationAttributes;\r\n+import org.springframework.util.ObjectUtils;\r\n+\r\n+import java.lang.annotation.Annotation;\r\n+import java.lang.reflect.Field;\r\n+import java.lang.reflect.Method;\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.Collection;\r\n+import java.util.Collections;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.TreeSet;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+import java.util.stream.Collectors;\r\n+\r\n+import static com.alibaba.spring.util.AnnotationUtils.getAttribute;\r\n+import static com.alibaba.spring.util.AnnotationUtils.getAttributes;\r\n+import static org.apache.dubbo.config.spring.beans.factory.annotation.ServiceBeanNameBuilder.create;\r\n+import static org.springframework.util.StringUtils.hasText;\r\n+\r\n+/**\r\n+ * {@link org.springframework.beans.factory.config.BeanPostProcessor} implementation\r\n+ * that Consumer service {@link Reference} annotated fields\r\n+ *\r\n+ * @see DubboReference\r\n+ * @see Reference\r\n+ * @see com.alibaba.dubbo.config.annotation.Reference\r\n+ * @since 2.5.7\r\n+ */\r\n+public class ReferenceAnnotationBeanPostProcessor extends AbstractAnnotationBeanPostProcessor implements\r\n+        ApplicationContextAware, ApplicationListener {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(ReferenceAnnotationBeanPostProcessor.class);\r\n+\r\n+    /**\r\n+     * The bean name of {@link ReferenceAnnotationBeanPostProcessor}\r\n+     */\r\n+    public static final String BEAN_NAME = \"referenceAnnotationBeanPostProcessor\";\r\n+\r\n+    /**\r\n+     * Cache size\r\n+     */\r\n+    private static final int CACHE_SIZE = Integer.getInteger(BEAN_NAME + \".cache.size\", 32);\r\n+\r\n+    private final ConcurrentMap<String, ReferenceBean<?>> referenceBeanCache =\r\n+            new ConcurrentHashMap<>(CACHE_SIZE);\r\n+\r\n+    private final ConcurrentMap<InjectionMetadata.InjectedElement, ReferenceBean<?>> injectedFieldReferenceBeanCache =\r\n+            new ConcurrentHashMap<>(CACHE_SIZE);\r\n+\r\n+    private final ConcurrentMap<InjectionMetadata.InjectedElement, ReferenceBean<?>> injectedMethodReferenceBeanCache =\r\n+            new ConcurrentHashMap<>(CACHE_SIZE);\r\n+\r\n+    private ApplicationContext applicationContext;\r\n+\r\n+    private static Map<String, TreeSet<String>> referencedBeanNameIdx = new HashMap<>();\r\n+\r\n+    /**\r\n+     * {@link com.alibaba.dubbo.config.annotation.Reference @com.alibaba.dubbo.config.annotation.Reference} has been supported since 2.7.3\r\n+     * <p>\r\n+     * {@link DubboReference @DubboReference} has been supported since 2.7.7\r\n+     */\r\n+    public ReferenceAnnotationBeanPostProcessor() {\r\n+        super(DubboReference.class, Reference.class, com.alibaba.dubbo.config.annotation.Reference.class);\r\n+    }\r\n+\r\n+    /**\r\n+     * Gets all beans of {@link ReferenceBean}\r\n+     *\r\n+     * @return non-null read-only {@link Collection}\r\n+     * @since 2.5.9\r\n+     */\r\n+    public Collection<ReferenceBean<?>> getReferenceBeans() {\r\n+        return referenceBeanCache.values();\r\n+    }\r\n+\r\n+    /**\r\n+     * Get {@link ReferenceBean} {@link Map} in injected field.\r\n+     *\r\n+     * @return non-null {@link Map}\r\n+     * @since 2.5.11\r\n+     */\r\n+    public Map<InjectionMetadata.InjectedElement, ReferenceBean<?>> getInjectedFieldReferenceBeanMap() {\r\n+        return Collections.unmodifiableMap(injectedFieldReferenceBeanCache);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get {@link ReferenceBean} {@link Map} in injected method.\r\n+     *\r\n+     * @return non-null {@link Map}\r\n+     * @since 2.5.11\r\n+     */\r\n+    public Map<InjectionMetadata.InjectedElement, ReferenceBean<?>> getInjectedMethodReferenceBeanMap() {\r\n+        return Collections.unmodifiableMap(injectedMethodReferenceBeanCache);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Object doGetInjectedBean(AnnotationAttributes attributes, Object bean, String beanName, Class<?> injectedType,\r\n+                                       InjectionMetadata.InjectedElement injectedElement) throws Exception {\r\n+        /**\r\n+         * The name of bean that annotated Dubbo's {@link Service @Service} in local Spring {@link ApplicationContext}\r\n+         */\r\n+        String referencedBeanName = buildReferencedBeanName(attributes, injectedType);\r\n+\r\n+        /**\r\n+         * The name of bean that is declared by {@link Reference @Reference} annotation injection\r\n+         */\r\n+        String referenceBeanName = getReferenceBeanName(attributes, injectedType);\r\n+\r\n+        referencedBeanNameIdx.computeIfAbsent(referencedBeanName, k -> new TreeSet<String>()).add(referenceBeanName);\r\n+\r\n+        ReferenceBean referenceBean = buildReferenceBeanIfAbsent(referenceBeanName, attributes, injectedType);\r\n+\r\n+        boolean localServiceBean = isLocalServiceBean(referencedBeanName, referenceBean, attributes);\r\n+\r\n+        prepareReferenceBean(referencedBeanName, referenceBean, localServiceBean);\r\n+\r\n+        registerReferenceBean(referencedBeanName, referenceBean, attributes, localServiceBean, injectedType);\r\n+\r\n+        cacheInjectedReferenceBean(referenceBean, injectedElement);\r\n+\r\n+        return referenceBean.get();\r\n+    }\r\n+\r\n+    /**\r\n+     * Register an instance of {@link ReferenceBean} as a Spring Bean\r\n+     *\r\n+     * @param referencedBeanName The name of bean that annotated Dubbo's {@link Service @Service} in the Spring {@link ApplicationContext}\r\n+     * @param referenceBean      the instance of {@link ReferenceBean} is about to register into the Spring {@link ApplicationContext}\r\n+     * @param attributes         the {@link AnnotationAttributes attributes} of {@link Reference @Reference}\r\n+     * @param localServiceBean   Is Local Service bean or not\r\n+     * @param interfaceClass     the {@link Class class} of Service interface\r\n+     * @since 2.7.3\r\n+     */\r\n+    private void registerReferenceBean(String referencedBeanName, ReferenceBean referenceBean,\r\n+                                       AnnotationAttributes attributes,\r\n+                                       boolean localServiceBean, Class<?> interfaceClass) {\r\n+\r\n+        ConfigurableListableBeanFactory beanFactory = getBeanFactory();\r\n+\r\n+        String beanName = getReferenceBeanName(attributes, interfaceClass);\r\n+\r\n+        if (localServiceBean) {  // If @Service bean is local one\r\n+            /**\r\n+             * Get  the @Service's BeanDefinition from {@link BeanFactory}\r\n+             * Refer to {@link ServiceAnnotationBeanPostProcessor#buildServiceBeanDefinition}\r\n+             */\r\n+            AbstractBeanDefinition beanDefinition = (AbstractBeanDefinition) beanFactory.getBeanDefinition(referencedBeanName);\r\n+            RuntimeBeanReference runtimeBeanReference = (RuntimeBeanReference) beanDefinition.getPropertyValues().get(\"ref\");\r\n+            // The name of bean annotated @Service\r\n+            String serviceBeanName = runtimeBeanReference.getBeanName();\r\n+            // register Alias rather than a new bean name, in order to reduce duplicated beans\r\n+            beanFactory.registerAlias(serviceBeanName, beanName);\r\n+        } else { // Remote @Service Bean\r\n+            if (!beanFactory.containsBean(beanName)) {\r\n+                beanFactory.registerSingleton(beanName, referenceBean);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the bean name of {@link ReferenceBean} if {@link Reference#id() id attribute} is present,\r\n+     * or {@link #generateReferenceBeanName(AnnotationAttributes, Class) generate}.\r\n+     *\r\n+     * @param attributes     the {@link AnnotationAttributes attributes} of {@link Reference @Reference}\r\n+     * @param interfaceClass the {@link Class class} of Service interface\r\n+     * @return non-null\r\n+     * @since 2.7.3\r\n+     */\r\n+    private String getReferenceBeanName(AnnotationAttributes attributes, Class<?> interfaceClass) {\r\n+        // id attribute appears since 2.7.3\r\n+        String beanName = getAttribute(attributes, \"id\");\r\n+        if (!hasText(beanName)) {\r\n+            beanName = generateReferenceBeanName(attributes, interfaceClass);\r\n+        }\r\n+        return beanName;\r\n+    }\r\n+\r\n+    /**\r\n+     * Build the bean name of {@link ReferenceBean}\r\n+     *\r\n+     * @param attributes     the {@link AnnotationAttributes attributes} of {@link Reference @Reference}\r\n+     * @param interfaceClass the {@link Class class} of Service interface\r\n+     * @return\r\n+     * @since 2.7.3\r\n+     */\r\n+    private String generateReferenceBeanName(AnnotationAttributes attributes, Class<?> interfaceClass) {\r\n+        StringBuilder beanNameBuilder = new StringBuilder(\"@Reference\");\r\n+\r\n+        if (!attributes.isEmpty()) {\r\n+            beanNameBuilder.append('(');\r\n+            for (Map.Entry<String, Object> entry : attributes.entrySet()) {\r\n+                String value;\r\n+                if (\"parameters\".equals(entry.getKey())) {\r\n+                    ArrayList<String> pairs = getParameterPairs(entry);\r\n+                    value = convertAttribute(pairs.stream().sorted().toArray());\r\n+                } else {\r\n+                    value = convertAttribute(entry.getValue());\r\n+                }\r\n+                beanNameBuilder.append(entry.getKey())\r\n+                        .append('=')\r\n+                        .append(value)\r\n+                        .append(',');\r\n+            }\r\n+            // replace the latest \",\" to be \")\"\r\n+            beanNameBuilder.setCharAt(beanNameBuilder.lastIndexOf(\",\"), ')');\r\n+        }\r\n+\r\n+        beanNameBuilder.append(\" \").append(interfaceClass.getName());\r\n+\r\n+        return beanNameBuilder.toString();\r\n+    }\r\n+\r\n+    private ArrayList<String> getParameterPairs(Map.Entry<String, Object> entry) {\r\n+        String[] entryValues = (String[]) entry.getValue();\r\n+        ArrayList<String> pairs = new ArrayList<>();\r\n+        // parameters spec is {key1,value1,key2,value2}\r\n+        for (int i = 0; i < entryValues.length / 2 * 2; i = i + 2) {\r\n+            pairs.add(entryValues[i] + \"=\" + entryValues[i + 1]);\r\n+        }\r\n+        return pairs;\r\n+    }\r\n+\r\n+    private String convertAttribute(Object obj) {\r\n+        if (obj == null) {\r\n+            return null;\r\n+        }\r\n+        if (obj instanceof Annotation) {\r\n+            AnnotationAttributes attributes = AnnotationUtils.getAnnotationAttributes((Annotation) obj, true);\r\n+            for (Map.Entry<String, Object> entry : attributes.entrySet()) {\r\n+                entry.setValue(convertAttribute(entry.getValue()));\r\n+            }\r\n+            return String.valueOf(attributes);\r\n+        } else if (obj.getClass().isArray()) {\r\n+            Object[] array = ObjectUtils.toObjectArray(obj);\r\n+            String[] newArray = new String[array.length];\r\n+            for (int i = 0; i < array.length; i++) {\r\n+                newArray[i] = convertAttribute(array[i]);\r\n+            }\r\n+            return Arrays.toString(Arrays.stream(newArray).sorted().toArray());\r\n+        } else {\r\n+            return String.valueOf(obj);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Is Local Service bean or not?\r\n+     *\r\n+     * @param referencedBeanName the bean name to the referenced bean\r\n+     * @return If the target referenced bean is existed, return <code>true</code>, or <code>false</code>\r\n+     * @since 2.7.6\r\n+     */\r\n+    private boolean isLocalServiceBean(String referencedBeanName, ReferenceBean referenceBean, AnnotationAttributes attributes) {\r\n+        return existsServiceBean(referencedBeanName) && !isRemoteReferenceBean(referenceBean, attributes);\r\n+    }\r\n+\r\n+    /**\r\n+     * Check the {@link ServiceBean} is exited or not\r\n+     *\r\n+     * @param referencedBeanName the bean name to the referenced bean\r\n+     * @return if exists, return <code>true</code>, or <code>false</code>\r\n+     * @revised 2.7.6\r\n+     */\r\n+    private boolean existsServiceBean(String referencedBeanName) {\r\n+        return applicationContext.containsBean(referencedBeanName) &&\r\n+                applicationContext.isTypeMatch(referencedBeanName, ServiceBean.class);\r\n+\r\n+    }\r\n+\r\n+    private boolean isRemoteReferenceBean(ReferenceBean referenceBean, AnnotationAttributes attributes) {\r\n+        boolean remote = Boolean.FALSE.equals(referenceBean.isInjvm()) || Boolean.FALSE.equals(attributes.get(\"injvm\"));\r\n+        return remote;\r\n+    }\r\n+\r\n+    /**\r\n+     * Prepare {@link ReferenceBean}\r\n+     *\r\n+     * @param referencedBeanName The name of bean that annotated Dubbo's {@link DubboService @DubboService}\r\n+     *                           in the Spring {@link ApplicationContext}\r\n+     * @param referenceBean      the instance of {@link ReferenceBean}\r\n+     * @param localServiceBean   Is Local Service bean or not\r\n+     * @since 2.7.8\r\n+     */\r\n+    private void prepareReferenceBean(String referencedBeanName, ReferenceBean referenceBean, boolean localServiceBean) {\r\n+        //  Issue : https://github.com/apache/dubbo/issues/6224\r\n+        if (localServiceBean) { // If the local @Service Bean exists\r\n+            referenceBean.setInjvm(Boolean.TRUE);\r\n+            exportServiceBeanIfNecessary(referencedBeanName); // If the referenced ServiceBean exits, export it immediately\r\n+        }\r\n+    }\r\n+\r\n+\r\n+    private void exportServiceBeanIfNecessary(String referencedBeanName) {\r\n+        if (existsServiceBean(referencedBeanName)) {\r\n+            ServiceBean serviceBean = getServiceBean(referencedBeanName);\r\n+            if (!serviceBean.isExported()) {\r\n+                serviceBean.export();\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private ServiceBean getServiceBean(String referencedBeanName) {\r\n+        return applicationContext.getBean(referencedBeanName, ServiceBean.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String buildInjectedObjectCacheKey(AnnotationAttributes attributes, Object bean, String beanName,\r\n+                                                 Class<?> injectedType, InjectionMetadata.InjectedElement injectedElement) {\r\n+        return buildReferencedBeanName(attributes, injectedType) +\r\n+                \"#source=\" + (injectedElement.getMember()) +\r\n+                \"#attributes=\" + getAttributes(attributes, getEnvironment());\r\n+    }\r\n+\r\n+    /**\r\n+     * @param attributes           the attributes of {@link Reference @Reference}\r\n+     * @param serviceInterfaceType the type of Dubbo's service interface\r\n+     * @return The name of bean that annotated Dubbo's {@link Service @Service} in local Spring {@link ApplicationContext}\r\n+     */\r\n+    private String buildReferencedBeanName(AnnotationAttributes attributes, Class<?> serviceInterfaceType) {\r\n+        ServiceBeanNameBuilder serviceBeanNameBuilder = create(attributes, serviceInterfaceType, getEnvironment());\r\n+        return serviceBeanNameBuilder.build();\r\n+    }\r\n+\r\n+    private ReferenceBean buildReferenceBeanIfAbsent(String referenceBeanName, AnnotationAttributes attributes,\r\n+                                                     Class<?> referencedType)\r\n+            throws Exception {\r\n+\r\n+        ReferenceBean<?> referenceBean = referenceBeanCache.get(referenceBeanName);\r\n+\r\n+        if (referenceBean == null) {\r\n+            ReferenceBeanBuilder beanBuilder = ReferenceBeanBuilder\r\n+                    .create(attributes, applicationContext)\r\n+                    .interfaceClass(referencedType);\r\n+            referenceBean = beanBuilder.build();\r\n+            referenceBeanCache.put(referenceBeanName, referenceBean);\r\n+        } else if (!referencedType.isAssignableFrom(referenceBean.getInterfaceClass())) {\r\n+            throw new IllegalArgumentException(\"reference bean name \" + referenceBeanName + \" has been duplicated, but interfaceClass \" +\r\n+                    referenceBean.getInterfaceClass().getName() + \" cannot be assigned to \" + referencedType.getName());\r\n+        }\r\n+        return referenceBean;\r\n+    }\r\n+\r\n+    private void cacheInjectedReferenceBean(ReferenceBean referenceBean,\r\n+                                            InjectionMetadata.InjectedElement injectedElement) {\r\n+        if (injectedElement.getMember() instanceof Field) {\r\n+            injectedFieldReferenceBeanCache.put(injectedElement, referenceBean);\r\n+        } else if (injectedElement.getMember() instanceof Method) {\r\n+            injectedMethodReferenceBeanCache.put(injectedElement, referenceBean);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {\r\n+        this.applicationContext = applicationContext;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() throws Exception {\r\n+        super.destroy();\r\n+        this.referenceBeanCache.clear();\r\n+        this.injectedFieldReferenceBeanCache.clear();\r\n+        this.injectedMethodReferenceBeanCache.clear();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void onApplicationEvent(ApplicationEvent event) {\r\n+        if (event instanceof ContextRefreshedEvent) {\r\n+            referencedBeanNameIdx.entrySet().stream().filter(e -> e.getValue().size() > 1).forEach(e -> {\r\n+                String logPrefix = e.getKey() + \" has \" + e.getValue().size() + \" reference instances, there are: \";\r\n+                logger.warn(e.getValue().stream().collect(Collectors.joining(\", \", logPrefix, \"\")));\r\n+            });\r\n+            referencedBeanNameIdx.clear();\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceBeanBuilder.java", "source2": "org/apache/dubbo/config/spring/beans/factory/annotation/ReferenceBeanBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,177 +1,177 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.beans.factory.annotation;\n-\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.config.ConsumerConfig;\n-import org.apache.dubbo.config.MethodConfig;\n-import org.apache.dubbo.config.annotation.Method;\n-import org.apache.dubbo.config.annotation.Reference;\n-import org.apache.dubbo.config.spring.ReferenceBean;\n-import org.springframework.beans.propertyeditors.StringTrimmerEditor;\n-import org.springframework.context.ApplicationContext;\n-import org.springframework.core.annotation.AnnotationAttributes;\n-import org.springframework.util.Assert;\n-import org.springframework.util.StringUtils;\n-import org.springframework.validation.DataBinder;\n-\n-import java.beans.PropertyEditorSupport;\n-import java.util.List;\n-import java.util.Map;\n-\n-import static com.alibaba.spring.util.AnnotationUtils.getAttribute;\n-import static com.alibaba.spring.util.AnnotationUtils.getAttributes;\n-import static com.alibaba.spring.util.ObjectUtils.of;\n-import static org.apache.dubbo.config.spring.util.DubboAnnotationUtils.resolveServiceInterfaceClass;\n-import static org.apache.dubbo.config.spring.util.DubboBeanUtils.getOptionalBean;\n-import static org.springframework.core.annotation.AnnotationAttributes.fromMap;\n-import static org.springframework.util.StringUtils.commaDelimitedListToStringArray;\n-\n-/**\n- * {@link ReferenceBean} Builder\n- *\n- * @since 2.5.7\n- */\n-class ReferenceBeanBuilder extends AnnotatedInterfaceConfigBeanBuilder<ReferenceBean> {\n-\n-    // Ignore those fields\n-    static final String[] IGNORE_FIELD_NAMES = of(\"application\", \"module\", \"consumer\", \"monitor\", \"registry\");\n-\n-    private ReferenceBeanBuilder(AnnotationAttributes attributes, ApplicationContext applicationContext) {\n-        super(attributes, applicationContext);\n-    }\n-\n-    private void configureInterface(AnnotationAttributes attributes, ReferenceBean referenceBean) {\n-        Boolean generic = getAttribute(attributes, \"generic\");\n-        if (generic != null && generic) {\n-            // it's a generic reference\n-            String interfaceClassName = getAttribute(attributes, \"interfaceName\");\n-            Assert.hasText(interfaceClassName,\n-                    \"@Reference interfaceName() must be present when reference a generic service!\");\n-            referenceBean.setInterface(interfaceClassName);\n-            return;\n-        }\n-\n-        Class<?> serviceInterfaceClass = resolveServiceInterfaceClass(attributes, interfaceClass);\n-\n-        Assert.isTrue(serviceInterfaceClass.isInterface(),\n-                \"The class of field or method that was annotated @Reference is not an interface!\");\n-\n-        referenceBean.setInterface(serviceInterfaceClass);\n-\n-    }\n-\n-\n-    private void configureConsumerConfig(AnnotationAttributes attributes, ReferenceBean<?> referenceBean) {\n-\n-        String consumerBeanName = getAttribute(attributes, \"consumer\");\n-\n-        ConsumerConfig consumerConfig = getOptionalBean(applicationContext, consumerBeanName, ConsumerConfig.class);\n-\n-        referenceBean.setConsumer(consumerConfig);\n-\n-    }\n-\n-    void configureMethodConfig(AnnotationAttributes attributes, ReferenceBean<?> referenceBean) {\n-        Method[] methods = (Method[]) attributes.get(\"methods\");\n-        List<MethodConfig> methodConfigs = MethodConfig.constructMethodConfig(methods);\n-        if (!methodConfigs.isEmpty()) {\n-            referenceBean.setMethods(methodConfigs);\n-        }\n-    }\n-\n-    @Override\n-    protected ReferenceBean doBuild() {\n-        return new ReferenceBean<Object>();\n-    }\n-\n-    @Override\n-    protected void preConfigureBean(AnnotationAttributes attributes, ReferenceBean referenceBean) {\n-        Assert.notNull(interfaceClass, \"The interface class must set first!\");\n-        DataBinder dataBinder = new DataBinder(referenceBean);\n-        // Register CustomEditors for special fields\n-        dataBinder.registerCustomEditor(String.class, \"filter\", new StringTrimmerEditor(true));\n-        dataBinder.registerCustomEditor(String.class, \"listener\", new StringTrimmerEditor(true));\n-        dataBinder.registerCustomEditor(Map.class, \"parameters\", new PropertyEditorSupport() {\n-            @Override\n-            public void setAsText(String text) throws java.lang.IllegalArgumentException {\n-                // Trim all whitespace\n-                String content = StringUtils.trimAllWhitespace(text);\n-                if (!StringUtils.hasText(content)) { // No content , ignore directly\n-                    return;\n-                }\n-                // replace \"=\" to \",\"\n-                content = StringUtils.replace(content, \"=\", \",\");\n-                // replace \":\" to \",\"\n-                content = StringUtils.replace(content, \":\", \",\");\n-                // String[] to Map\n-                Map<String, String> parameters = CollectionUtils.toStringMap(commaDelimitedListToStringArray(content));\n-                setValue(parameters);\n-            }\n-        });\n-\n-        // Bind annotation attributes\n-        dataBinder.bind(new AnnotationPropertyValuesAdapter(attributes, applicationContext.getEnvironment(), IGNORE_FIELD_NAMES));\n-\n-    }\n-\n-\n-    @Override\n-    protected String resolveModuleConfigBeanName(AnnotationAttributes attributes) {\n-        return getAttribute(attributes, \"module\");\n-    }\n-\n-    @Override\n-    protected String resolveApplicationConfigBeanName(AnnotationAttributes attributes) {\n-        return getAttribute(attributes, \"application\");\n-    }\n-\n-    @Override\n-    protected String[] resolveRegistryConfigBeanNames(AnnotationAttributes attributes) {\n-        return getAttribute(attributes, \"registry\");\n-    }\n-\n-    @Override\n-    protected String resolveMonitorConfigBeanName(AnnotationAttributes attributes) {\n-        return getAttribute(attributes, \"monitor\");\n-    }\n-\n-    @Override\n-    protected void postConfigureBean(AnnotationAttributes attributes, ReferenceBean bean) throws Exception {\n-\n-        bean.setApplicationContext(applicationContext);\n-\n-        configureInterface(attributes, bean);\n-\n-        configureConsumerConfig(attributes, bean);\n-\n-        configureMethodConfig(attributes, bean);\n-\n-        bean.afterPropertiesSet();\n-\n-    }\n-\n-    @Deprecated\n-    public static ReferenceBeanBuilder create(Reference reference, ClassLoader classLoader,\n-                                              ApplicationContext applicationContext) {\n-        return create(fromMap(getAttributes(reference, applicationContext.getEnvironment(), true)), applicationContext);\n-    }\n-\n-    public static ReferenceBeanBuilder create(AnnotationAttributes attributes, ApplicationContext applicationContext) {\n-        return new ReferenceBeanBuilder(attributes, applicationContext);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.beans.factory.annotation;\r\n+\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.config.ConsumerConfig;\r\n+import org.apache.dubbo.config.MethodConfig;\r\n+import org.apache.dubbo.config.annotation.Method;\r\n+import org.apache.dubbo.config.annotation.Reference;\r\n+import org.apache.dubbo.config.spring.ReferenceBean;\r\n+import org.springframework.beans.propertyeditors.StringTrimmerEditor;\r\n+import org.springframework.context.ApplicationContext;\r\n+import org.springframework.core.annotation.AnnotationAttributes;\r\n+import org.springframework.util.Assert;\r\n+import org.springframework.util.StringUtils;\r\n+import org.springframework.validation.DataBinder;\r\n+\r\n+import java.beans.PropertyEditorSupport;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+\r\n+import static com.alibaba.spring.util.AnnotationUtils.getAttribute;\r\n+import static com.alibaba.spring.util.AnnotationUtils.getAttributes;\r\n+import static com.alibaba.spring.util.ObjectUtils.of;\r\n+import static org.apache.dubbo.config.spring.util.DubboAnnotationUtils.resolveServiceInterfaceClass;\r\n+import static org.apache.dubbo.config.spring.util.DubboBeanUtils.getOptionalBean;\r\n+import static org.springframework.core.annotation.AnnotationAttributes.fromMap;\r\n+import static org.springframework.util.StringUtils.commaDelimitedListToStringArray;\r\n+\r\n+/**\r\n+ * {@link ReferenceBean} Builder\r\n+ *\r\n+ * @since 2.5.7\r\n+ */\r\n+class ReferenceBeanBuilder extends AnnotatedInterfaceConfigBeanBuilder<ReferenceBean> {\r\n+\r\n+    // Ignore those fields\r\n+    static final String[] IGNORE_FIELD_NAMES = of(\"application\", \"module\", \"consumer\", \"monitor\", \"registry\");\r\n+\r\n+    private ReferenceBeanBuilder(AnnotationAttributes attributes, ApplicationContext applicationContext) {\r\n+        super(attributes, applicationContext);\r\n+    }\r\n+\r\n+    private void configureInterface(AnnotationAttributes attributes, ReferenceBean referenceBean) {\r\n+        Boolean generic = getAttribute(attributes, \"generic\");\r\n+        if (generic != null && generic) {\r\n+            // it's a generic reference\r\n+            String interfaceClassName = getAttribute(attributes, \"interfaceName\");\r\n+            Assert.hasText(interfaceClassName,\r\n+                    \"@Reference interfaceName() must be present when reference a generic service!\");\r\n+            referenceBean.setInterface(interfaceClassName);\r\n+            return;\r\n+        }\r\n+\r\n+        Class<?> serviceInterfaceClass = resolveServiceInterfaceClass(attributes, interfaceClass);\r\n+\r\n+        Assert.isTrue(serviceInterfaceClass.isInterface(),\r\n+                \"The class of field or method that was annotated @Reference is not an interface!\");\r\n+\r\n+        referenceBean.setInterface(serviceInterfaceClass);\r\n+\r\n+    }\r\n+\r\n+\r\n+    private void configureConsumerConfig(AnnotationAttributes attributes, ReferenceBean<?> referenceBean) {\r\n+\r\n+        String consumerBeanName = getAttribute(attributes, \"consumer\");\r\n+\r\n+        ConsumerConfig consumerConfig = getOptionalBean(applicationContext, consumerBeanName, ConsumerConfig.class);\r\n+\r\n+        referenceBean.setConsumer(consumerConfig);\r\n+\r\n+    }\r\n+\r\n+    void configureMethodConfig(AnnotationAttributes attributes, ReferenceBean<?> referenceBean) {\r\n+        Method[] methods = (Method[]) attributes.get(\"methods\");\r\n+        List<MethodConfig> methodConfigs = MethodConfig.constructMethodConfig(methods);\r\n+        if (!methodConfigs.isEmpty()) {\r\n+            referenceBean.setMethods(methodConfigs);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    protected ReferenceBean doBuild() {\r\n+        return new ReferenceBean<Object>();\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void preConfigureBean(AnnotationAttributes attributes, ReferenceBean referenceBean) {\r\n+        Assert.notNull(interfaceClass, \"The interface class must set first!\");\r\n+        DataBinder dataBinder = new DataBinder(referenceBean);\r\n+        // Register CustomEditors for special fields\r\n+        dataBinder.registerCustomEditor(String.class, \"filter\", new StringTrimmerEditor(true));\r\n+        dataBinder.registerCustomEditor(String.class, \"listener\", new StringTrimmerEditor(true));\r\n+        dataBinder.registerCustomEditor(Map.class, \"parameters\", new PropertyEditorSupport() {\r\n+            @Override\r\n+            public void setAsText(String text) throws java.lang.IllegalArgumentException {\r\n+                // Trim all whitespace\r\n+                String content = StringUtils.trimAllWhitespace(text);\r\n+                if (!StringUtils.hasText(content)) { // No content , ignore directly\r\n+                    return;\r\n+                }\r\n+                // replace \"=\" to \",\"\r\n+                content = StringUtils.replace(content, \"=\", \",\");\r\n+                // replace \":\" to \",\"\r\n+                content = StringUtils.replace(content, \":\", \",\");\r\n+                // String[] to Map\r\n+                Map<String, String> parameters = CollectionUtils.toStringMap(commaDelimitedListToStringArray(content));\r\n+                setValue(parameters);\r\n+            }\r\n+        });\r\n+\r\n+        // Bind annotation attributes\r\n+        dataBinder.bind(new AnnotationPropertyValuesAdapter(attributes, applicationContext.getEnvironment(), IGNORE_FIELD_NAMES));\r\n+\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    protected String resolveModuleConfigBeanName(AnnotationAttributes attributes) {\r\n+        return getAttribute(attributes, \"module\");\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String resolveApplicationConfigBeanName(AnnotationAttributes attributes) {\r\n+        return getAttribute(attributes, \"application\");\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String[] resolveRegistryConfigBeanNames(AnnotationAttributes attributes) {\r\n+        return getAttribute(attributes, \"registry\");\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String resolveMonitorConfigBeanName(AnnotationAttributes attributes) {\r\n+        return getAttribute(attributes, \"monitor\");\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void postConfigureBean(AnnotationAttributes attributes, ReferenceBean bean) throws Exception {\r\n+\r\n+        bean.setApplicationContext(applicationContext);\r\n+\r\n+        configureInterface(attributes, bean);\r\n+\r\n+        configureConsumerConfig(attributes, bean);\r\n+\r\n+        configureMethodConfig(attributes, bean);\r\n+\r\n+        bean.afterPropertiesSet();\r\n+\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public static ReferenceBeanBuilder create(Reference reference, ClassLoader classLoader,\r\n+                                              ApplicationContext applicationContext) {\r\n+        return create(fromMap(getAttributes(reference, applicationContext.getEnvironment(), true)), applicationContext);\r\n+    }\r\n+\r\n+    public static ReferenceBeanBuilder create(AnnotationAttributes attributes, ApplicationContext applicationContext) {\r\n+        return new ReferenceBeanBuilder(attributes, applicationContext);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/beans/factory/annotation/ServiceAnnotationBeanPostProcessor.java", "source2": "org/apache/dubbo/config/spring/beans/factory/annotation/ServiceAnnotationBeanPostProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,50 +1,50 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.beans.factory.annotation;\n-\n-import org.apache.dubbo.config.annotation.Service;\n-\n-import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;\n-\n-import java.util.Arrays;\n-import java.util.Collection;\n-import java.util.LinkedHashSet;\n-import java.util.Set;\n-\n-/**\n- * {@link Service} Annotation {@link BeanDefinitionRegistryPostProcessor Bean Definition Registry Post Processor}\n- *\n- * @since 2.5.8\n- * @deprecated Recommend {@link ServiceClassPostProcessor} as the substitute\n- */\n-@Deprecated\n-public class ServiceAnnotationBeanPostProcessor extends ServiceClassPostProcessor {\n-\n-    public ServiceAnnotationBeanPostProcessor(String... packagesToScan) {\n-        this(Arrays.asList(packagesToScan));\n-    }\n-\n-    public ServiceAnnotationBeanPostProcessor(Collection<String> packagesToScan) {\n-        this(new LinkedHashSet<>(packagesToScan));\n-    }\n-\n-    public ServiceAnnotationBeanPostProcessor(Set<String> packagesToScan) {\n-        super(packagesToScan);\n-    }\n-\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.beans.factory.annotation;\r\n+\r\n+import org.apache.dubbo.config.annotation.Service;\r\n+\r\n+import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;\r\n+\r\n+import java.util.Arrays;\r\n+import java.util.Collection;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.Set;\r\n+\r\n+/**\r\n+ * {@link Service} Annotation {@link BeanDefinitionRegistryPostProcessor Bean Definition Registry Post Processor}\r\n+ *\r\n+ * @since 2.5.8\r\n+ * @deprecated Recommend {@link ServiceClassPostProcessor} as the substitute\r\n+ */\r\n+@Deprecated\r\n+public class ServiceAnnotationBeanPostProcessor extends ServiceClassPostProcessor {\r\n+\r\n+    public ServiceAnnotationBeanPostProcessor(String... packagesToScan) {\r\n+        this(Arrays.asList(packagesToScan));\r\n+    }\r\n+\r\n+    public ServiceAnnotationBeanPostProcessor(Collection<String> packagesToScan) {\r\n+        this(new LinkedHashSet<>(packagesToScan));\r\n+    }\r\n+\r\n+    public ServiceAnnotationBeanPostProcessor(Set<String> packagesToScan) {\r\n+        super(packagesToScan);\r\n+    }\r\n+\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/config/spring/beans/factory/annotation/ServiceBeanNameBuilder.java", "source2": "org/apache/dubbo/config/spring/beans/factory/annotation/ServiceBeanNameBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,121 +1,121 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.beans.factory.annotation;\n-\n-import org.apache.dubbo.config.annotation.Reference;\n-import org.apache.dubbo.config.annotation.Service;\n-import org.apache.dubbo.config.spring.ReferenceBean;\n-import org.apache.dubbo.config.spring.ServiceBean;\n-\n-import org.springframework.core.annotation.AnnotationAttributes;\n-import org.springframework.core.env.Environment;\n-import org.springframework.util.StringUtils;\n-\n-import static com.alibaba.spring.util.AnnotationUtils.getAttribute;\n-import static org.apache.dubbo.config.spring.util.DubboAnnotationUtils.resolveInterfaceName;\n-import static org.springframework.core.annotation.AnnotationUtils.getAnnotationAttributes;\n-\n-/**\n- * Dubbo {@link Service @Service} Bean Builder\n- *\n- * @see Service\n- * @see Reference\n- * @see ServiceBean\n- * @see ReferenceBean\n- * @since 2.6.5\n- */\n-public class ServiceBeanNameBuilder {\n-\n-    private static final String SEPARATOR = \":\";\n-\n-    // Required\n-    private final String interfaceClassName;\n-\n-    private final Environment environment;\n-\n-    // Optional\n-    private String version;\n-\n-    private String group;\n-\n-    private ServiceBeanNameBuilder(Class<?> interfaceClass, Environment environment) {\n-        this(interfaceClass.getName(), environment);\n-    }\n-\n-    private ServiceBeanNameBuilder(String interfaceClassName, Environment environment) {\n-        this.interfaceClassName = interfaceClassName;\n-        this.environment = environment;\n-    }\n-\n-    private ServiceBeanNameBuilder(AnnotationAttributes attributes, Class<?> defaultInterfaceClass, Environment environment) {\n-        this(resolveInterfaceName(attributes, defaultInterfaceClass), environment);\n-        this.group(getAttribute(attributes,\"group\"));\n-        this.version(getAttribute(attributes,\"version\"));\n-    }\n-\n-    /**\n-     * @param attributes\n-     * @param defaultInterfaceClass\n-     * @param environment\n-     * @return\n-     * @since 2.7.3\n-     */\n-    public static ServiceBeanNameBuilder create(AnnotationAttributes attributes, Class<?> defaultInterfaceClass, Environment environment) {\n-        return new ServiceBeanNameBuilder(attributes, defaultInterfaceClass, environment);\n-    }\n-\n-    public static ServiceBeanNameBuilder create(Class<?> interfaceClass, Environment environment) {\n-        return new ServiceBeanNameBuilder(interfaceClass, environment);\n-    }\n-\n-    public static ServiceBeanNameBuilder create(Service service, Class<?> interfaceClass, Environment environment) {\n-        return create(getAnnotationAttributes(service, false, false), interfaceClass, environment);\n-    }\n-\n-    public static ServiceBeanNameBuilder create(Reference reference, Class<?> interfaceClass, Environment environment) {\n-        return create(getAnnotationAttributes(reference, false, false), interfaceClass, environment);\n-    }\n-\n-    private static void append(StringBuilder builder, String value) {\n-        if (StringUtils.hasText(value)) {\n-            builder.append(SEPARATOR).append(value);\n-        }\n-    }\n-\n-    public ServiceBeanNameBuilder group(String group) {\n-        this.group = group;\n-        return this;\n-    }\n-\n-    public ServiceBeanNameBuilder version(String version) {\n-        this.version = version;\n-        return this;\n-    }\n-\n-    public String build() {\n-        StringBuilder beanNameBuilder = new StringBuilder(\"ServiceBean\");\n-        // Required\n-        append(beanNameBuilder, interfaceClassName);\n-        // Optional\n-        append(beanNameBuilder, version);\n-        append(beanNameBuilder, group);\n-        // Build and remove last \":\"\n-        String rawBeanName = beanNameBuilder.toString();\n-        // Resolve placeholders\n-        return environment.resolvePlaceholders(rawBeanName);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.beans.factory.annotation;\r\n+\r\n+import org.apache.dubbo.config.annotation.Reference;\r\n+import org.apache.dubbo.config.annotation.Service;\r\n+import org.apache.dubbo.config.spring.ReferenceBean;\r\n+import org.apache.dubbo.config.spring.ServiceBean;\r\n+\r\n+import org.springframework.core.annotation.AnnotationAttributes;\r\n+import org.springframework.core.env.Environment;\r\n+import org.springframework.util.StringUtils;\r\n+\r\n+import static com.alibaba.spring.util.AnnotationUtils.getAttribute;\r\n+import static org.apache.dubbo.config.spring.util.DubboAnnotationUtils.resolveInterfaceName;\r\n+import static org.springframework.core.annotation.AnnotationUtils.getAnnotationAttributes;\r\n+\r\n+/**\r\n+ * Dubbo {@link Service @Service} Bean Builder\r\n+ *\r\n+ * @see Service\r\n+ * @see Reference\r\n+ * @see ServiceBean\r\n+ * @see ReferenceBean\r\n+ * @since 2.6.5\r\n+ */\r\n+public class ServiceBeanNameBuilder {\r\n+\r\n+    private static final String SEPARATOR = \":\";\r\n+\r\n+    // Required\r\n+    private final String interfaceClassName;\r\n+\r\n+    private final Environment environment;\r\n+\r\n+    // Optional\r\n+    private String version;\r\n+\r\n+    private String group;\r\n+\r\n+    private ServiceBeanNameBuilder(Class<?> interfaceClass, Environment environment) {\r\n+        this(interfaceClass.getName(), environment);\r\n+    }\r\n+\r\n+    private ServiceBeanNameBuilder(String interfaceClassName, Environment environment) {\r\n+        this.interfaceClassName = interfaceClassName;\r\n+        this.environment = environment;\r\n+    }\r\n+\r\n+    private ServiceBeanNameBuilder(AnnotationAttributes attributes, Class<?> defaultInterfaceClass, Environment environment) {\r\n+        this(resolveInterfaceName(attributes, defaultInterfaceClass), environment);\r\n+        this.group(getAttribute(attributes,\"group\"));\r\n+        this.version(getAttribute(attributes,\"version\"));\r\n+    }\r\n+\r\n+    /**\r\n+     * @param attributes\r\n+     * @param defaultInterfaceClass\r\n+     * @param environment\r\n+     * @return\r\n+     * @since 2.7.3\r\n+     */\r\n+    public static ServiceBeanNameBuilder create(AnnotationAttributes attributes, Class<?> defaultInterfaceClass, Environment environment) {\r\n+        return new ServiceBeanNameBuilder(attributes, defaultInterfaceClass, environment);\r\n+    }\r\n+\r\n+    public static ServiceBeanNameBuilder create(Class<?> interfaceClass, Environment environment) {\r\n+        return new ServiceBeanNameBuilder(interfaceClass, environment);\r\n+    }\r\n+\r\n+    public static ServiceBeanNameBuilder create(Service service, Class<?> interfaceClass, Environment environment) {\r\n+        return create(getAnnotationAttributes(service, false, false), interfaceClass, environment);\r\n+    }\r\n+\r\n+    public static ServiceBeanNameBuilder create(Reference reference, Class<?> interfaceClass, Environment environment) {\r\n+        return create(getAnnotationAttributes(reference, false, false), interfaceClass, environment);\r\n+    }\r\n+\r\n+    private static void append(StringBuilder builder, String value) {\r\n+        if (StringUtils.hasText(value)) {\r\n+            builder.append(SEPARATOR).append(value);\r\n+        }\r\n+    }\r\n+\r\n+    public ServiceBeanNameBuilder group(String group) {\r\n+        this.group = group;\r\n+        return this;\r\n+    }\r\n+\r\n+    public ServiceBeanNameBuilder version(String version) {\r\n+        this.version = version;\r\n+        return this;\r\n+    }\r\n+\r\n+    public String build() {\r\n+        StringBuilder beanNameBuilder = new StringBuilder(\"ServiceBean\");\r\n+        // Required\r\n+        append(beanNameBuilder, interfaceClassName);\r\n+        // Optional\r\n+        append(beanNameBuilder, version);\r\n+        append(beanNameBuilder, group);\r\n+        // Build and remove last \":\"\r\n+        String rawBeanName = beanNameBuilder.toString();\r\n+        // Resolve placeholders\r\n+        return environment.resolvePlaceholders(rawBeanName);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/beans/factory/annotation/ServiceClassPostProcessor.java", "source2": "org/apache/dubbo/config/spring/beans/factory/annotation/ServiceClassPostProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,539 +1,539 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.beans.factory.annotation;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ArrayUtils;\n-import org.apache.dubbo.config.MethodConfig;\n-import org.apache.dubbo.config.annotation.DubboService;\n-import org.apache.dubbo.config.annotation.Method;\n-import org.apache.dubbo.config.annotation.Service;\n-import org.apache.dubbo.config.spring.ServiceBean;\n-import org.apache.dubbo.config.spring.context.DubboBootstrapApplicationListener;\n-import org.apache.dubbo.config.spring.context.annotation.DubboClassPathBeanDefinitionScanner;\n-import org.apache.dubbo.config.spring.schema.AnnotationBeanDefinitionParser;\n-\n-import org.springframework.beans.BeansException;\n-import org.springframework.beans.MutablePropertyValues;\n-import org.springframework.beans.factory.BeanClassLoaderAware;\n-import org.springframework.beans.factory.config.BeanDefinition;\n-import org.springframework.beans.factory.config.BeanDefinitionHolder;\n-import org.springframework.beans.factory.config.BeanFactoryPostProcessor;\n-import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;\n-import org.springframework.beans.factory.config.RuntimeBeanReference;\n-import org.springframework.beans.factory.config.SingletonBeanRegistry;\n-import org.springframework.beans.factory.support.AbstractBeanDefinition;\n-import org.springframework.beans.factory.support.BeanDefinitionBuilder;\n-import org.springframework.beans.factory.support.BeanDefinitionRegistry;\n-import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;\n-import org.springframework.beans.factory.support.BeanNameGenerator;\n-import org.springframework.beans.factory.support.ManagedList;\n-import org.springframework.beans.factory.xml.BeanDefinitionParser;\n-import org.springframework.context.EnvironmentAware;\n-import org.springframework.context.ResourceLoaderAware;\n-import org.springframework.context.annotation.AnnotationBeanNameGenerator;\n-import org.springframework.context.annotation.AnnotationConfigUtils;\n-import org.springframework.context.annotation.ClassPathBeanDefinitionScanner;\n-import org.springframework.context.annotation.ConfigurationClassPostProcessor;\n-import org.springframework.core.annotation.AnnotationAttributes;\n-import org.springframework.core.env.Environment;\n-import org.springframework.core.io.ResourceLoader;\n-import org.springframework.core.type.filter.AnnotationTypeFilter;\n-import org.springframework.util.CollectionUtils;\n-import org.springframework.util.ObjectUtils;\n-import org.springframework.util.StringUtils;\n-\n-import java.lang.annotation.Annotation;\n-import java.util.Collection;\n-import java.util.Collections;\n-import java.util.HashMap;\n-import java.util.LinkedHashSet;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Objects;\n-import java.util.Set;\n-\n-import static com.alibaba.spring.util.BeanRegistrar.registerInfrastructureBean;\n-import static com.alibaba.spring.util.ObjectUtils.of;\n-import static java.util.Arrays.asList;\n-import static org.apache.dubbo.config.spring.beans.factory.annotation.ServiceBeanNameBuilder.create;\n-import static org.apache.dubbo.config.spring.util.DubboAnnotationUtils.resolveServiceInterfaceClass;\n-import static org.springframework.beans.factory.support.BeanDefinitionBuilder.rootBeanDefinition;\n-import static org.springframework.context.annotation.AnnotationConfigUtils.CONFIGURATION_BEAN_NAME_GENERATOR;\n-import static org.springframework.core.annotation.AnnotatedElementUtils.findMergedAnnotation;\n-import static org.springframework.core.annotation.AnnotationUtils.getAnnotationAttributes;\n-import static org.springframework.util.ClassUtils.resolveClassName;\n-\n-/**\n- * {@link BeanFactoryPostProcessor} used for processing of {@link Service @Service} annotated classes. it's also the\n- * infrastructure class of XML {@link BeanDefinitionParser} on &lt;dubbo:annotation /&gt;\n- *\n- * @see AnnotationBeanDefinitionParser\n- * @see BeanDefinitionRegistryPostProcessor\n- * @since 2.7.7\n- */\n-public class ServiceClassPostProcessor implements BeanDefinitionRegistryPostProcessor, EnvironmentAware,\n-        ResourceLoaderAware, BeanClassLoaderAware {\n-\n-    private final static List<Class<? extends Annotation>> serviceAnnotationTypes = asList(\n-            // @since 2.7.7 Add the @DubboService , the issue : https://github.com/apache/dubbo/issues/6007\n-            DubboService.class,\n-            // @since 2.7.0 the substitute @com.alibaba.dubbo.config.annotation.Service\n-            Service.class,\n-            // @since 2.7.3 Add the compatibility for legacy Dubbo's @Service , the issue : https://github.com/apache/dubbo/issues/4330\n-            com.alibaba.dubbo.config.annotation.Service.class\n-    );\n-\n-    private final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    protected final Set<String> packagesToScan;\n-\n-\n-    private Environment environment;\n-\n-    private ResourceLoader resourceLoader;\n-\n-    private ClassLoader classLoader;\n-\n-    public ServiceClassPostProcessor(String... packagesToScan) {\n-        this(asList(packagesToScan));\n-    }\n-\n-    public ServiceClassPostProcessor(Collection<String> packagesToScan) {\n-        this(new LinkedHashSet<>(packagesToScan));\n-    }\n-\n-    public ServiceClassPostProcessor(Set<String> packagesToScan) {\n-        this.packagesToScan = packagesToScan;\n-    }\n-\n-    @Override\n-    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {\n-\n-        // @since 2.7.5\n-        registerInfrastructureBean(registry, DubboBootstrapApplicationListener.BEAN_NAME, DubboBootstrapApplicationListener.class);\n-\n-        Set<String> resolvedPackagesToScan = resolvePackagesToScan(packagesToScan);\n-\n-        if (!CollectionUtils.isEmpty(resolvedPackagesToScan)) {\n-            registerServiceBeans(resolvedPackagesToScan, registry);\n-        } else {\n-            if (logger.isWarnEnabled()) {\n-                logger.warn(\"packagesToScan is empty , ServiceBean registry will be ignored!\");\n-            }\n-        }\n-\n-    }\n-\n-    /**\n-     * Registers Beans whose classes was annotated {@link Service}\n-     *\n-     * @param packagesToScan The base packages to scan\n-     * @param registry       {@link BeanDefinitionRegistry}\n-     */\n-    private void registerServiceBeans(Set<String> packagesToScan, BeanDefinitionRegistry registry) {\n-\n-        DubboClassPathBeanDefinitionScanner scanner =\n-                new DubboClassPathBeanDefinitionScanner(registry, environment, resourceLoader);\n-\n-        BeanNameGenerator beanNameGenerator = resolveBeanNameGenerator(registry);\n-\n-        scanner.setBeanNameGenerator(beanNameGenerator);\n-\n-        // refactor @since 2.7.7\n-        serviceAnnotationTypes.forEach(annotationType -> {\n-            scanner.addIncludeFilter(new AnnotationTypeFilter(annotationType));\n-        });\n-\n-        for (String packageToScan : packagesToScan) {\n-\n-            // Registers @Service Bean first\n-            scanner.scan(packageToScan);\n-\n-            // Finds all BeanDefinitionHolders of @Service whether @ComponentScan scans or not.\n-            Set<BeanDefinitionHolder> beanDefinitionHolders =\n-                    findServiceBeanDefinitionHolders(scanner, packageToScan, registry, beanNameGenerator);\n-\n-            if (!CollectionUtils.isEmpty(beanDefinitionHolders)) {\n-\n-                for (BeanDefinitionHolder beanDefinitionHolder : beanDefinitionHolders) {\n-                    registerServiceBean(beanDefinitionHolder, registry, scanner);\n-                }\n-\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(beanDefinitionHolders.size() + \" annotated Dubbo's @Service Components { \" +\n-                            beanDefinitionHolders +\n-                            \" } were scanned under package[\" + packageToScan + \"]\");\n-                }\n-\n-            } else {\n-\n-                if (logger.isWarnEnabled()) {\n-                    logger.warn(\"No Spring Bean annotating Dubbo's @Service was found under package[\"\n-                            + packageToScan + \"]\");\n-                }\n-\n-            }\n-\n-        }\n-\n-    }\n-\n-    /**\n-     * It'd better to use BeanNameGenerator instance that should reference\n-     * {@link ConfigurationClassPostProcessor#componentScanBeanNameGenerator},\n-     * thus it maybe a potential problem on bean name generation.\n-     *\n-     * @param registry {@link BeanDefinitionRegistry}\n-     * @return {@link BeanNameGenerator} instance\n-     * @see SingletonBeanRegistry\n-     * @see AnnotationConfigUtils#CONFIGURATION_BEAN_NAME_GENERATOR\n-     * @see ConfigurationClassPostProcessor#processConfigBeanDefinitions\n-     * @since 2.5.8\n-     */\n-    private BeanNameGenerator resolveBeanNameGenerator(BeanDefinitionRegistry registry) {\n-\n-        BeanNameGenerator beanNameGenerator = null;\n-\n-        if (registry instanceof SingletonBeanRegistry) {\n-            SingletonBeanRegistry singletonBeanRegistry = SingletonBeanRegistry.class.cast(registry);\n-            beanNameGenerator = (BeanNameGenerator) singletonBeanRegistry.getSingleton(CONFIGURATION_BEAN_NAME_GENERATOR);\n-        }\n-\n-        if (beanNameGenerator == null) {\n-\n-            if (logger.isInfoEnabled()) {\n-\n-                logger.info(\"BeanNameGenerator bean can't be found in BeanFactory with name [\"\n-                        + CONFIGURATION_BEAN_NAME_GENERATOR + \"]\");\n-                logger.info(\"BeanNameGenerator will be a instance of \" +\n-                        AnnotationBeanNameGenerator.class.getName() +\n-                        \" , it maybe a potential problem on bean name generation.\");\n-            }\n-\n-            beanNameGenerator = new AnnotationBeanNameGenerator();\n-\n-        }\n-\n-        return beanNameGenerator;\n-\n-    }\n-\n-    /**\n-     * Finds a {@link Set} of {@link BeanDefinitionHolder BeanDefinitionHolders} whose bean type annotated\n-     * {@link Service} Annotation.\n-     *\n-     * @param scanner       {@link ClassPathBeanDefinitionScanner}\n-     * @param packageToScan package to scan\n-     * @param registry      {@link BeanDefinitionRegistry}\n-     * @return non-null\n-     * @since 2.5.8\n-     */\n-    private Set<BeanDefinitionHolder> findServiceBeanDefinitionHolders(\n-            ClassPathBeanDefinitionScanner scanner, String packageToScan, BeanDefinitionRegistry registry,\n-            BeanNameGenerator beanNameGenerator) {\n-\n-        Set<BeanDefinition> beanDefinitions = scanner.findCandidateComponents(packageToScan);\n-\n-        Set<BeanDefinitionHolder> beanDefinitionHolders = new LinkedHashSet<>(beanDefinitions.size());\n-\n-        for (BeanDefinition beanDefinition : beanDefinitions) {\n-\n-            String beanName = beanNameGenerator.generateBeanName(beanDefinition, registry);\n-            BeanDefinitionHolder beanDefinitionHolder = new BeanDefinitionHolder(beanDefinition, beanName);\n-            beanDefinitionHolders.add(beanDefinitionHolder);\n-\n-        }\n-\n-        return beanDefinitionHolders;\n-\n-    }\n-\n-    /**\n-     * Registers {@link ServiceBean} from new annotated {@link Service} {@link BeanDefinition}\n-     *\n-     * @param beanDefinitionHolder\n-     * @param registry\n-     * @param scanner\n-     * @see ServiceBean\n-     * @see BeanDefinition\n-     */\n-    private void registerServiceBean(BeanDefinitionHolder beanDefinitionHolder, BeanDefinitionRegistry registry,\n-                                     DubboClassPathBeanDefinitionScanner scanner) {\n-\n-        Class<?> beanClass = resolveClass(beanDefinitionHolder);\n-\n-        Annotation service = findServiceAnnotation(beanClass);\n-\n-        /**\n-         * The {@link AnnotationAttributes} of @Service annotation\n-         */\n-        AnnotationAttributes serviceAnnotationAttributes = getAnnotationAttributes(service, false, false);\n-\n-        Class<?> interfaceClass = resolveServiceInterfaceClass(serviceAnnotationAttributes, beanClass);\n-\n-        String annotatedServiceBeanName = beanDefinitionHolder.getBeanName();\n-\n-        AbstractBeanDefinition serviceBeanDefinition =\n-                buildServiceBeanDefinition(service, serviceAnnotationAttributes, interfaceClass, annotatedServiceBeanName);\n-\n-        // ServiceBean Bean name\n-        String beanName = generateServiceBeanName(serviceAnnotationAttributes, interfaceClass);\n-\n-        if (scanner.checkCandidate(beanName, serviceBeanDefinition)) { // check duplicated candidate bean\n-            registry.registerBeanDefinition(beanName, serviceBeanDefinition);\n-\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"The BeanDefinition[\" + serviceBeanDefinition +\n-                        \"] of ServiceBean has been registered with name : \" + beanName);\n-            }\n-\n-        } else {\n-\n-            if (logger.isWarnEnabled()) {\n-                logger.warn(\"The Duplicated BeanDefinition[\" + serviceBeanDefinition +\n-                        \"] of ServiceBean[ bean name : \" + beanName +\n-                        \"] was be found , Did @DubboComponentScan scan to same package in many times?\");\n-            }\n-\n-        }\n-\n-    }\n-\n-    /**\n-     * Find the {@link Annotation annotation} of @Service\n-     *\n-     * @param beanClass the {@link Class class} of Bean\n-     * @return <code>null</code> if not found\n-     * @since 2.7.3\n-     */\n-    private Annotation findServiceAnnotation(Class<?> beanClass) {\n-        return serviceAnnotationTypes\n-                .stream()\n-                .map(annotationType -> findMergedAnnotation(beanClass, annotationType))\n-                .filter(Objects::nonNull)\n-                .findFirst()\n-                .orElse(null);\n-    }\n-\n-    /**\n-     * Generates the bean name of {@link ServiceBean}\n-     *\n-     * @param serviceAnnotationAttributes\n-     * @param interfaceClass              the class of interface annotated {@link Service}\n-     * @return ServiceBean@interfaceClassName#annotatedServiceBeanName\n-     * @since 2.7.3\n-     */\n-    private String generateServiceBeanName(AnnotationAttributes serviceAnnotationAttributes, Class<?> interfaceClass) {\n-        ServiceBeanNameBuilder builder = create(interfaceClass, environment)\n-                .group(serviceAnnotationAttributes.getString(\"group\"))\n-                .version(serviceAnnotationAttributes.getString(\"version\"));\n-        return builder.build();\n-    }\n-\n-    private Class<?> resolveClass(BeanDefinitionHolder beanDefinitionHolder) {\n-\n-        BeanDefinition beanDefinition = beanDefinitionHolder.getBeanDefinition();\n-\n-        return resolveClass(beanDefinition);\n-\n-    }\n-\n-    private Class<?> resolveClass(BeanDefinition beanDefinition) {\n-\n-        String beanClassName = beanDefinition.getBeanClassName();\n-\n-        return resolveClassName(beanClassName, classLoader);\n-\n-    }\n-\n-    private Set<String> resolvePackagesToScan(Set<String> packagesToScan) {\n-        Set<String> resolvedPackagesToScan = new LinkedHashSet<String>(packagesToScan.size());\n-        for (String packageToScan : packagesToScan) {\n-            if (StringUtils.hasText(packageToScan)) {\n-                String resolvedPackageToScan = environment.resolvePlaceholders(packageToScan.trim());\n-                resolvedPackagesToScan.add(resolvedPackageToScan);\n-            }\n-        }\n-        return resolvedPackagesToScan;\n-    }\n-\n-    /**\n-     * Build the {@link AbstractBeanDefinition Bean Definition}\n-     *\n-     * @param serviceAnnotation\n-     * @param serviceAnnotationAttributes\n-     * @param interfaceClass\n-     * @param annotatedServiceBeanName\n-     * @return\n-     * @since 2.7.3\n-     */\n-    private AbstractBeanDefinition buildServiceBeanDefinition(Annotation serviceAnnotation,\n-                                                              AnnotationAttributes serviceAnnotationAttributes,\n-                                                              Class<?> interfaceClass,\n-                                                              String annotatedServiceBeanName) {\n-\n-        BeanDefinitionBuilder builder = rootBeanDefinition(ServiceBean.class);\n-\n-        AbstractBeanDefinition beanDefinition = builder.getBeanDefinition();\n-\n-        MutablePropertyValues propertyValues = beanDefinition.getPropertyValues();\n-\n-        String[] ignoreAttributeNames = of(\"provider\", \"monitor\", \"application\", \"module\", \"registry\", \"protocol\",\n-                \"interface\", \"interfaceName\", \"parameters\");\n-\n-        propertyValues.addPropertyValues(new AnnotationPropertyValuesAdapter(serviceAnnotation, environment, ignoreAttributeNames));\n-\n-        // References \"ref\" property to annotated-@Service Bean\n-        addPropertyReference(builder, \"ref\", annotatedServiceBeanName);\n-        // Set interface\n-        builder.addPropertyValue(\"interface\", interfaceClass.getName());\n-        // Convert parameters into map\n-        builder.addPropertyValue(\"parameters\", convertParameters(serviceAnnotationAttributes.getStringArray(\"parameters\")));\n-        // Add methods parameters\n-        List<MethodConfig> methodConfigs = convertMethodConfigs(serviceAnnotationAttributes.get(\"methods\"));\n-        if (!methodConfigs.isEmpty()) {\n-            builder.addPropertyValue(\"methods\", methodConfigs);\n-        }\n-\n-        /**\n-         * Add {@link org.apache.dubbo.config.ProviderConfig} Bean reference\n-         */\n-        String providerConfigBeanName = serviceAnnotationAttributes.getString(\"provider\");\n-        if (StringUtils.hasText(providerConfigBeanName)) {\n-            addPropertyReference(builder, \"provider\", providerConfigBeanName);\n-        }\n-\n-        /**\n-         * Add {@link org.apache.dubbo.config.MonitorConfig} Bean reference\n-         */\n-        String monitorConfigBeanName = serviceAnnotationAttributes.getString(\"monitor\");\n-        if (StringUtils.hasText(monitorConfigBeanName)) {\n-            addPropertyReference(builder, \"monitor\", monitorConfigBeanName);\n-        }\n-\n-        /**\n-         * Add {@link org.apache.dubbo.config.ApplicationConfig} Bean reference\n-         */\n-        String applicationConfigBeanName = serviceAnnotationAttributes.getString(\"application\");\n-        if (StringUtils.hasText(applicationConfigBeanName)) {\n-            addPropertyReference(builder, \"application\", applicationConfigBeanName);\n-        }\n-\n-        /**\n-         * Add {@link org.apache.dubbo.config.ModuleConfig} Bean reference\n-         */\n-        String moduleConfigBeanName = serviceAnnotationAttributes.getString(\"module\");\n-        if (StringUtils.hasText(moduleConfigBeanName)) {\n-            addPropertyReference(builder, \"module\", moduleConfigBeanName);\n-        }\n-\n-\n-        /**\n-         * Add {@link org.apache.dubbo.config.RegistryConfig} Bean reference\n-         */\n-        String[] registryConfigBeanNames = serviceAnnotationAttributes.getStringArray(\"registry\");\n-\n-        List<RuntimeBeanReference> registryRuntimeBeanReferences = toRuntimeBeanReferences(registryConfigBeanNames);\n-\n-        if (!registryRuntimeBeanReferences.isEmpty()) {\n-            builder.addPropertyValue(\"registries\", registryRuntimeBeanReferences);\n-        }\n-\n-        /**\n-         * Add {@link org.apache.dubbo.config.ProtocolConfig} Bean reference\n-         */\n-        String[] protocolConfigBeanNames = serviceAnnotationAttributes.getStringArray(\"protocol\");\n-\n-        List<RuntimeBeanReference> protocolRuntimeBeanReferences = toRuntimeBeanReferences(protocolConfigBeanNames);\n-\n-        if (!protocolRuntimeBeanReferences.isEmpty()) {\n-            builder.addPropertyValue(\"protocols\", protocolRuntimeBeanReferences);\n-        }\n-\n-        return builder.getBeanDefinition();\n-\n-    }\n-\n-    private List convertMethodConfigs(Object methodsAnnotation) {\n-        if (methodsAnnotation == null) {\n-            return Collections.EMPTY_LIST;\n-        }\n-        return MethodConfig.constructMethodConfig((Method[]) methodsAnnotation);\n-    }\n-\n-    private ManagedList<RuntimeBeanReference> toRuntimeBeanReferences(String... beanNames) {\n-\n-        ManagedList<RuntimeBeanReference> runtimeBeanReferences = new ManagedList<>();\n-\n-        if (!ObjectUtils.isEmpty(beanNames)) {\n-\n-            for (String beanName : beanNames) {\n-\n-                String resolvedBeanName = environment.resolvePlaceholders(beanName);\n-\n-                runtimeBeanReferences.add(new RuntimeBeanReference(resolvedBeanName));\n-            }\n-\n-        }\n-\n-        return runtimeBeanReferences;\n-\n-    }\n-\n-    private void addPropertyReference(BeanDefinitionBuilder builder, String propertyName, String beanName) {\n-        String resolvedBeanName = environment.resolvePlaceholders(beanName);\n-        builder.addPropertyReference(propertyName, resolvedBeanName);\n-    }\n-\n-    private Map<String, String> convertParameters(String[] parameters) {\n-        if (ArrayUtils.isEmpty(parameters)) {\n-            return null;\n-        }\n-\n-        if (parameters.length % 2 != 0) {\n-            throw new IllegalArgumentException(\"parameter attribute must be paired with key followed by value\");\n-        }\n-\n-        Map<String, String> map = new HashMap<>();\n-        for (int i = 0; i < parameters.length; i += 2) {\n-            map.put(parameters[i], parameters[i + 1]);\n-        }\n-        return map;\n-    }\n-\n-    @Override\n-    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {\n-\n-    }\n-\n-    @Override\n-    public void setEnvironment(Environment environment) {\n-        this.environment = environment;\n-    }\n-\n-    @Override\n-    public void setResourceLoader(ResourceLoader resourceLoader) {\n-        this.resourceLoader = resourceLoader;\n-    }\n-\n-    @Override\n-    public void setBeanClassLoader(ClassLoader classLoader) {\n-        this.classLoader = classLoader;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.beans.factory.annotation;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ArrayUtils;\r\n+import org.apache.dubbo.config.MethodConfig;\r\n+import org.apache.dubbo.config.annotation.DubboService;\r\n+import org.apache.dubbo.config.annotation.Method;\r\n+import org.apache.dubbo.config.annotation.Service;\r\n+import org.apache.dubbo.config.spring.ServiceBean;\r\n+import org.apache.dubbo.config.spring.context.DubboBootstrapApplicationListener;\r\n+import org.apache.dubbo.config.spring.context.annotation.DubboClassPathBeanDefinitionScanner;\r\n+import org.apache.dubbo.config.spring.schema.AnnotationBeanDefinitionParser;\r\n+\r\n+import org.springframework.beans.BeansException;\r\n+import org.springframework.beans.MutablePropertyValues;\r\n+import org.springframework.beans.factory.BeanClassLoaderAware;\r\n+import org.springframework.beans.factory.config.BeanDefinition;\r\n+import org.springframework.beans.factory.config.BeanDefinitionHolder;\r\n+import org.springframework.beans.factory.config.BeanFactoryPostProcessor;\r\n+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;\r\n+import org.springframework.beans.factory.config.RuntimeBeanReference;\r\n+import org.springframework.beans.factory.config.SingletonBeanRegistry;\r\n+import org.springframework.beans.factory.support.AbstractBeanDefinition;\r\n+import org.springframework.beans.factory.support.BeanDefinitionBuilder;\r\n+import org.springframework.beans.factory.support.BeanDefinitionRegistry;\r\n+import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;\r\n+import org.springframework.beans.factory.support.BeanNameGenerator;\r\n+import org.springframework.beans.factory.support.ManagedList;\r\n+import org.springframework.beans.factory.xml.BeanDefinitionParser;\r\n+import org.springframework.context.EnvironmentAware;\r\n+import org.springframework.context.ResourceLoaderAware;\r\n+import org.springframework.context.annotation.AnnotationBeanNameGenerator;\r\n+import org.springframework.context.annotation.AnnotationConfigUtils;\r\n+import org.springframework.context.annotation.ClassPathBeanDefinitionScanner;\r\n+import org.springframework.context.annotation.ConfigurationClassPostProcessor;\r\n+import org.springframework.core.annotation.AnnotationAttributes;\r\n+import org.springframework.core.env.Environment;\r\n+import org.springframework.core.io.ResourceLoader;\r\n+import org.springframework.core.type.filter.AnnotationTypeFilter;\r\n+import org.springframework.util.CollectionUtils;\r\n+import org.springframework.util.ObjectUtils;\r\n+import org.springframework.util.StringUtils;\r\n+\r\n+import java.lang.annotation.Annotation;\r\n+import java.util.Collection;\r\n+import java.util.Collections;\r\n+import java.util.HashMap;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Objects;\r\n+import java.util.Set;\r\n+\r\n+import static com.alibaba.spring.util.BeanRegistrar.registerInfrastructureBean;\r\n+import static com.alibaba.spring.util.ObjectUtils.of;\r\n+import static java.util.Arrays.asList;\r\n+import static org.apache.dubbo.config.spring.beans.factory.annotation.ServiceBeanNameBuilder.create;\r\n+import static org.apache.dubbo.config.spring.util.DubboAnnotationUtils.resolveServiceInterfaceClass;\r\n+import static org.springframework.beans.factory.support.BeanDefinitionBuilder.rootBeanDefinition;\r\n+import static org.springframework.context.annotation.AnnotationConfigUtils.CONFIGURATION_BEAN_NAME_GENERATOR;\r\n+import static org.springframework.core.annotation.AnnotatedElementUtils.findMergedAnnotation;\r\n+import static org.springframework.core.annotation.AnnotationUtils.getAnnotationAttributes;\r\n+import static org.springframework.util.ClassUtils.resolveClassName;\r\n+\r\n+/**\r\n+ * {@link BeanFactoryPostProcessor} used for processing of {@link Service @Service} annotated classes. it's also the\r\n+ * infrastructure class of XML {@link BeanDefinitionParser} on &lt;dubbo:annotation /&gt;\r\n+ *\r\n+ * @see AnnotationBeanDefinitionParser\r\n+ * @see BeanDefinitionRegistryPostProcessor\r\n+ * @since 2.7.7\r\n+ */\r\n+public class ServiceClassPostProcessor implements BeanDefinitionRegistryPostProcessor, EnvironmentAware,\r\n+        ResourceLoaderAware, BeanClassLoaderAware {\r\n+\r\n+    private final static List<Class<? extends Annotation>> serviceAnnotationTypes = asList(\r\n+            // @since 2.7.7 Add the @DubboService , the issue : https://github.com/apache/dubbo/issues/6007\r\n+            DubboService.class,\r\n+            // @since 2.7.0 the substitute @com.alibaba.dubbo.config.annotation.Service\r\n+            Service.class,\r\n+            // @since 2.7.3 Add the compatibility for legacy Dubbo's @Service , the issue : https://github.com/apache/dubbo/issues/4330\r\n+            com.alibaba.dubbo.config.annotation.Service.class\r\n+    );\r\n+\r\n+    private final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    protected final Set<String> packagesToScan;\r\n+\r\n+\r\n+    private Environment environment;\r\n+\r\n+    private ResourceLoader resourceLoader;\r\n+\r\n+    private ClassLoader classLoader;\r\n+\r\n+    public ServiceClassPostProcessor(String... packagesToScan) {\r\n+        this(asList(packagesToScan));\r\n+    }\r\n+\r\n+    public ServiceClassPostProcessor(Collection<String> packagesToScan) {\r\n+        this(new LinkedHashSet<>(packagesToScan));\r\n+    }\r\n+\r\n+    public ServiceClassPostProcessor(Set<String> packagesToScan) {\r\n+        this.packagesToScan = packagesToScan;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {\r\n+\r\n+        // @since 2.7.5\r\n+        registerInfrastructureBean(registry, DubboBootstrapApplicationListener.BEAN_NAME, DubboBootstrapApplicationListener.class);\r\n+\r\n+        Set<String> resolvedPackagesToScan = resolvePackagesToScan(packagesToScan);\r\n+\r\n+        if (!CollectionUtils.isEmpty(resolvedPackagesToScan)) {\r\n+            registerServiceBeans(resolvedPackagesToScan, registry);\r\n+        } else {\r\n+            if (logger.isWarnEnabled()) {\r\n+                logger.warn(\"packagesToScan is empty , ServiceBean registry will be ignored!\");\r\n+            }\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * Registers Beans whose classes was annotated {@link Service}\r\n+     *\r\n+     * @param packagesToScan The base packages to scan\r\n+     * @param registry       {@link BeanDefinitionRegistry}\r\n+     */\r\n+    private void registerServiceBeans(Set<String> packagesToScan, BeanDefinitionRegistry registry) {\r\n+\r\n+        DubboClassPathBeanDefinitionScanner scanner =\r\n+                new DubboClassPathBeanDefinitionScanner(registry, environment, resourceLoader);\r\n+\r\n+        BeanNameGenerator beanNameGenerator = resolveBeanNameGenerator(registry);\r\n+\r\n+        scanner.setBeanNameGenerator(beanNameGenerator);\r\n+\r\n+        // refactor @since 2.7.7\r\n+        serviceAnnotationTypes.forEach(annotationType -> {\r\n+            scanner.addIncludeFilter(new AnnotationTypeFilter(annotationType));\r\n+        });\r\n+\r\n+        for (String packageToScan : packagesToScan) {\r\n+\r\n+            // Registers @Service Bean first\r\n+            scanner.scan(packageToScan);\r\n+\r\n+            // Finds all BeanDefinitionHolders of @Service whether @ComponentScan scans or not.\r\n+            Set<BeanDefinitionHolder> beanDefinitionHolders =\r\n+                    findServiceBeanDefinitionHolders(scanner, packageToScan, registry, beanNameGenerator);\r\n+\r\n+            if (!CollectionUtils.isEmpty(beanDefinitionHolders)) {\r\n+\r\n+                for (BeanDefinitionHolder beanDefinitionHolder : beanDefinitionHolders) {\r\n+                    registerServiceBean(beanDefinitionHolder, registry, scanner);\r\n+                }\r\n+\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(beanDefinitionHolders.size() + \" annotated Dubbo's @Service Components { \" +\r\n+                            beanDefinitionHolders +\r\n+                            \" } were scanned under package[\" + packageToScan + \"]\");\r\n+                }\r\n+\r\n+            } else {\r\n+\r\n+                if (logger.isWarnEnabled()) {\r\n+                    logger.warn(\"No Spring Bean annotating Dubbo's @Service was found under package[\"\r\n+                            + packageToScan + \"]\");\r\n+                }\r\n+\r\n+            }\r\n+\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * It'd better to use BeanNameGenerator instance that should reference\r\n+     * {@link ConfigurationClassPostProcessor#componentScanBeanNameGenerator},\r\n+     * thus it maybe a potential problem on bean name generation.\r\n+     *\r\n+     * @param registry {@link BeanDefinitionRegistry}\r\n+     * @return {@link BeanNameGenerator} instance\r\n+     * @see SingletonBeanRegistry\r\n+     * @see AnnotationConfigUtils#CONFIGURATION_BEAN_NAME_GENERATOR\r\n+     * @see ConfigurationClassPostProcessor#processConfigBeanDefinitions\r\n+     * @since 2.5.8\r\n+     */\r\n+    private BeanNameGenerator resolveBeanNameGenerator(BeanDefinitionRegistry registry) {\r\n+\r\n+        BeanNameGenerator beanNameGenerator = null;\r\n+\r\n+        if (registry instanceof SingletonBeanRegistry) {\r\n+            SingletonBeanRegistry singletonBeanRegistry = SingletonBeanRegistry.class.cast(registry);\r\n+            beanNameGenerator = (BeanNameGenerator) singletonBeanRegistry.getSingleton(CONFIGURATION_BEAN_NAME_GENERATOR);\r\n+        }\r\n+\r\n+        if (beanNameGenerator == null) {\r\n+\r\n+            if (logger.isInfoEnabled()) {\r\n+\r\n+                logger.info(\"BeanNameGenerator bean can't be found in BeanFactory with name [\"\r\n+                        + CONFIGURATION_BEAN_NAME_GENERATOR + \"]\");\r\n+                logger.info(\"BeanNameGenerator will be a instance of \" +\r\n+                        AnnotationBeanNameGenerator.class.getName() +\r\n+                        \" , it maybe a potential problem on bean name generation.\");\r\n+            }\r\n+\r\n+            beanNameGenerator = new AnnotationBeanNameGenerator();\r\n+\r\n+        }\r\n+\r\n+        return beanNameGenerator;\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * Finds a {@link Set} of {@link BeanDefinitionHolder BeanDefinitionHolders} whose bean type annotated\r\n+     * {@link Service} Annotation.\r\n+     *\r\n+     * @param scanner       {@link ClassPathBeanDefinitionScanner}\r\n+     * @param packageToScan package to scan\r\n+     * @param registry      {@link BeanDefinitionRegistry}\r\n+     * @return non-null\r\n+     * @since 2.5.8\r\n+     */\r\n+    private Set<BeanDefinitionHolder> findServiceBeanDefinitionHolders(\r\n+            ClassPathBeanDefinitionScanner scanner, String packageToScan, BeanDefinitionRegistry registry,\r\n+            BeanNameGenerator beanNameGenerator) {\r\n+\r\n+        Set<BeanDefinition> beanDefinitions = scanner.findCandidateComponents(packageToScan);\r\n+\r\n+        Set<BeanDefinitionHolder> beanDefinitionHolders = new LinkedHashSet<>(beanDefinitions.size());\r\n+\r\n+        for (BeanDefinition beanDefinition : beanDefinitions) {\r\n+\r\n+            String beanName = beanNameGenerator.generateBeanName(beanDefinition, registry);\r\n+            BeanDefinitionHolder beanDefinitionHolder = new BeanDefinitionHolder(beanDefinition, beanName);\r\n+            beanDefinitionHolders.add(beanDefinitionHolder);\r\n+\r\n+        }\r\n+\r\n+        return beanDefinitionHolders;\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * Registers {@link ServiceBean} from new annotated {@link Service} {@link BeanDefinition}\r\n+     *\r\n+     * @param beanDefinitionHolder\r\n+     * @param registry\r\n+     * @param scanner\r\n+     * @see ServiceBean\r\n+     * @see BeanDefinition\r\n+     */\r\n+    private void registerServiceBean(BeanDefinitionHolder beanDefinitionHolder, BeanDefinitionRegistry registry,\r\n+                                     DubboClassPathBeanDefinitionScanner scanner) {\r\n+\r\n+        Class<?> beanClass = resolveClass(beanDefinitionHolder);\r\n+\r\n+        Annotation service = findServiceAnnotation(beanClass);\r\n+\r\n+        /**\r\n+         * The {@link AnnotationAttributes} of @Service annotation\r\n+         */\r\n+        AnnotationAttributes serviceAnnotationAttributes = getAnnotationAttributes(service, false, false);\r\n+\r\n+        Class<?> interfaceClass = resolveServiceInterfaceClass(serviceAnnotationAttributes, beanClass);\r\n+\r\n+        String annotatedServiceBeanName = beanDefinitionHolder.getBeanName();\r\n+\r\n+        AbstractBeanDefinition serviceBeanDefinition =\r\n+                buildServiceBeanDefinition(service, serviceAnnotationAttributes, interfaceClass, annotatedServiceBeanName);\r\n+\r\n+        // ServiceBean Bean name\r\n+        String beanName = generateServiceBeanName(serviceAnnotationAttributes, interfaceClass);\r\n+\r\n+        if (scanner.checkCandidate(beanName, serviceBeanDefinition)) { // check duplicated candidate bean\r\n+            registry.registerBeanDefinition(beanName, serviceBeanDefinition);\r\n+\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"The BeanDefinition[\" + serviceBeanDefinition +\r\n+                        \"] of ServiceBean has been registered with name : \" + beanName);\r\n+            }\r\n+\r\n+        } else {\r\n+\r\n+            if (logger.isWarnEnabled()) {\r\n+                logger.warn(\"The Duplicated BeanDefinition[\" + serviceBeanDefinition +\r\n+                        \"] of ServiceBean[ bean name : \" + beanName +\r\n+                        \"] was be found , Did @DubboComponentScan scan to same package in many times?\");\r\n+            }\r\n+\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the {@link Annotation annotation} of @Service\r\n+     *\r\n+     * @param beanClass the {@link Class class} of Bean\r\n+     * @return <code>null</code> if not found\r\n+     * @since 2.7.3\r\n+     */\r\n+    private Annotation findServiceAnnotation(Class<?> beanClass) {\r\n+        return serviceAnnotationTypes\r\n+                .stream()\r\n+                .map(annotationType -> findMergedAnnotation(beanClass, annotationType))\r\n+                .filter(Objects::nonNull)\r\n+                .findFirst()\r\n+                .orElse(null);\r\n+    }\r\n+\r\n+    /**\r\n+     * Generates the bean name of {@link ServiceBean}\r\n+     *\r\n+     * @param serviceAnnotationAttributes\r\n+     * @param interfaceClass              the class of interface annotated {@link Service}\r\n+     * @return ServiceBean@interfaceClassName#annotatedServiceBeanName\r\n+     * @since 2.7.3\r\n+     */\r\n+    private String generateServiceBeanName(AnnotationAttributes serviceAnnotationAttributes, Class<?> interfaceClass) {\r\n+        ServiceBeanNameBuilder builder = create(interfaceClass, environment)\r\n+                .group(serviceAnnotationAttributes.getString(\"group\"))\r\n+                .version(serviceAnnotationAttributes.getString(\"version\"));\r\n+        return builder.build();\r\n+    }\r\n+\r\n+    private Class<?> resolveClass(BeanDefinitionHolder beanDefinitionHolder) {\r\n+\r\n+        BeanDefinition beanDefinition = beanDefinitionHolder.getBeanDefinition();\r\n+\r\n+        return resolveClass(beanDefinition);\r\n+\r\n+    }\r\n+\r\n+    private Class<?> resolveClass(BeanDefinition beanDefinition) {\r\n+\r\n+        String beanClassName = beanDefinition.getBeanClassName();\r\n+\r\n+        return resolveClassName(beanClassName, classLoader);\r\n+\r\n+    }\r\n+\r\n+    private Set<String> resolvePackagesToScan(Set<String> packagesToScan) {\r\n+        Set<String> resolvedPackagesToScan = new LinkedHashSet<String>(packagesToScan.size());\r\n+        for (String packageToScan : packagesToScan) {\r\n+            if (StringUtils.hasText(packageToScan)) {\r\n+                String resolvedPackageToScan = environment.resolvePlaceholders(packageToScan.trim());\r\n+                resolvedPackagesToScan.add(resolvedPackageToScan);\r\n+            }\r\n+        }\r\n+        return resolvedPackagesToScan;\r\n+    }\r\n+\r\n+    /**\r\n+     * Build the {@link AbstractBeanDefinition Bean Definition}\r\n+     *\r\n+     * @param serviceAnnotation\r\n+     * @param serviceAnnotationAttributes\r\n+     * @param interfaceClass\r\n+     * @param annotatedServiceBeanName\r\n+     * @return\r\n+     * @since 2.7.3\r\n+     */\r\n+    private AbstractBeanDefinition buildServiceBeanDefinition(Annotation serviceAnnotation,\r\n+                                                              AnnotationAttributes serviceAnnotationAttributes,\r\n+                                                              Class<?> interfaceClass,\r\n+                                                              String annotatedServiceBeanName) {\r\n+\r\n+        BeanDefinitionBuilder builder = rootBeanDefinition(ServiceBean.class);\r\n+\r\n+        AbstractBeanDefinition beanDefinition = builder.getBeanDefinition();\r\n+\r\n+        MutablePropertyValues propertyValues = beanDefinition.getPropertyValues();\r\n+\r\n+        String[] ignoreAttributeNames = of(\"provider\", \"monitor\", \"application\", \"module\", \"registry\", \"protocol\",\r\n+                \"interface\", \"interfaceName\", \"parameters\");\r\n+\r\n+        propertyValues.addPropertyValues(new AnnotationPropertyValuesAdapter(serviceAnnotation, environment, ignoreAttributeNames));\r\n+\r\n+        // References \"ref\" property to annotated-@Service Bean\r\n+        addPropertyReference(builder, \"ref\", annotatedServiceBeanName);\r\n+        // Set interface\r\n+        builder.addPropertyValue(\"interface\", interfaceClass.getName());\r\n+        // Convert parameters into map\r\n+        builder.addPropertyValue(\"parameters\", convertParameters(serviceAnnotationAttributes.getStringArray(\"parameters\")));\r\n+        // Add methods parameters\r\n+        List<MethodConfig> methodConfigs = convertMethodConfigs(serviceAnnotationAttributes.get(\"methods\"));\r\n+        if (!methodConfigs.isEmpty()) {\r\n+            builder.addPropertyValue(\"methods\", methodConfigs);\r\n+        }\r\n+\r\n+        /**\r\n+         * Add {@link org.apache.dubbo.config.ProviderConfig} Bean reference\r\n+         */\r\n+        String providerConfigBeanName = serviceAnnotationAttributes.getString(\"provider\");\r\n+        if (StringUtils.hasText(providerConfigBeanName)) {\r\n+            addPropertyReference(builder, \"provider\", providerConfigBeanName);\r\n+        }\r\n+\r\n+        /**\r\n+         * Add {@link org.apache.dubbo.config.MonitorConfig} Bean reference\r\n+         */\r\n+        String monitorConfigBeanName = serviceAnnotationAttributes.getString(\"monitor\");\r\n+        if (StringUtils.hasText(monitorConfigBeanName)) {\r\n+            addPropertyReference(builder, \"monitor\", monitorConfigBeanName);\r\n+        }\r\n+\r\n+        /**\r\n+         * Add {@link org.apache.dubbo.config.ApplicationConfig} Bean reference\r\n+         */\r\n+        String applicationConfigBeanName = serviceAnnotationAttributes.getString(\"application\");\r\n+        if (StringUtils.hasText(applicationConfigBeanName)) {\r\n+            addPropertyReference(builder, \"application\", applicationConfigBeanName);\r\n+        }\r\n+\r\n+        /**\r\n+         * Add {@link org.apache.dubbo.config.ModuleConfig} Bean reference\r\n+         */\r\n+        String moduleConfigBeanName = serviceAnnotationAttributes.getString(\"module\");\r\n+        if (StringUtils.hasText(moduleConfigBeanName)) {\r\n+            addPropertyReference(builder, \"module\", moduleConfigBeanName);\r\n+        }\r\n+\r\n+\r\n+        /**\r\n+         * Add {@link org.apache.dubbo.config.RegistryConfig} Bean reference\r\n+         */\r\n+        String[] registryConfigBeanNames = serviceAnnotationAttributes.getStringArray(\"registry\");\r\n+\r\n+        List<RuntimeBeanReference> registryRuntimeBeanReferences = toRuntimeBeanReferences(registryConfigBeanNames);\r\n+\r\n+        if (!registryRuntimeBeanReferences.isEmpty()) {\r\n+            builder.addPropertyValue(\"registries\", registryRuntimeBeanReferences);\r\n+        }\r\n+\r\n+        /**\r\n+         * Add {@link org.apache.dubbo.config.ProtocolConfig} Bean reference\r\n+         */\r\n+        String[] protocolConfigBeanNames = serviceAnnotationAttributes.getStringArray(\"protocol\");\r\n+\r\n+        List<RuntimeBeanReference> protocolRuntimeBeanReferences = toRuntimeBeanReferences(protocolConfigBeanNames);\r\n+\r\n+        if (!protocolRuntimeBeanReferences.isEmpty()) {\r\n+            builder.addPropertyValue(\"protocols\", protocolRuntimeBeanReferences);\r\n+        }\r\n+\r\n+        return builder.getBeanDefinition();\r\n+\r\n+    }\r\n+\r\n+    private List convertMethodConfigs(Object methodsAnnotation) {\r\n+        if (methodsAnnotation == null) {\r\n+            return Collections.EMPTY_LIST;\r\n+        }\r\n+        return MethodConfig.constructMethodConfig((Method[]) methodsAnnotation);\r\n+    }\r\n+\r\n+    private ManagedList<RuntimeBeanReference> toRuntimeBeanReferences(String... beanNames) {\r\n+\r\n+        ManagedList<RuntimeBeanReference> runtimeBeanReferences = new ManagedList<>();\r\n+\r\n+        if (!ObjectUtils.isEmpty(beanNames)) {\r\n+\r\n+            for (String beanName : beanNames) {\r\n+\r\n+                String resolvedBeanName = environment.resolvePlaceholders(beanName);\r\n+\r\n+                runtimeBeanReferences.add(new RuntimeBeanReference(resolvedBeanName));\r\n+            }\r\n+\r\n+        }\r\n+\r\n+        return runtimeBeanReferences;\r\n+\r\n+    }\r\n+\r\n+    private void addPropertyReference(BeanDefinitionBuilder builder, String propertyName, String beanName) {\r\n+        String resolvedBeanName = environment.resolvePlaceholders(beanName);\r\n+        builder.addPropertyReference(propertyName, resolvedBeanName);\r\n+    }\r\n+\r\n+    private Map<String, String> convertParameters(String[] parameters) {\r\n+        if (ArrayUtils.isEmpty(parameters)) {\r\n+            return null;\r\n+        }\r\n+\r\n+        if (parameters.length % 2 != 0) {\r\n+            throw new IllegalArgumentException(\"parameter attribute must be paired with key followed by value\");\r\n+        }\r\n+\r\n+        Map<String, String> map = new HashMap<>();\r\n+        for (int i = 0; i < parameters.length; i += 2) {\r\n+            map.put(parameters[i], parameters[i + 1]);\r\n+        }\r\n+        return map;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setEnvironment(Environment environment) {\r\n+        this.environment = environment;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setResourceLoader(ResourceLoader resourceLoader) {\r\n+        this.resourceLoader = resourceLoader;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setBeanClassLoader(ClassLoader classLoader) {\r\n+        this.classLoader = classLoader;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/beans/factory/config/ConfigurableSourceBeanMetadataElement.java", "source2": "org/apache/dubbo/config/spring/beans/factory/config/ConfigurableSourceBeanMetadataElement.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,39 +1,39 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.beans.factory.config;\n-\n-import org.springframework.beans.BeanMetadataAttributeAccessor;\n-import org.springframework.beans.BeanMetadataElement;\n-\n-/**\n- * Configurable the {@link BeanMetadataAttributeAccessor#setSource(Object) source} for {@link BeanMetadataElement}\n- *\n- * @since 2.7.5\n- */\n-public interface ConfigurableSourceBeanMetadataElement {\n-\n-    /**\n-     * Set the source into the specified {@link BeanMetadataElement}\n-     *\n-     * @param beanMetadataElement {@link BeanMetadataElement} instance\n-     */\n-    default void setSource(BeanMetadataElement beanMetadataElement) {\n-        if (beanMetadataElement instanceof BeanMetadataAttributeAccessor) {\n-            BeanMetadataAttributeAccessor.class.cast(beanMetadataElement).setSource(this);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.beans.factory.config;\r\n+\r\n+import org.springframework.beans.BeanMetadataAttributeAccessor;\r\n+import org.springframework.beans.BeanMetadataElement;\r\n+\r\n+/**\r\n+ * Configurable the {@link BeanMetadataAttributeAccessor#setSource(Object) source} for {@link BeanMetadataElement}\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public interface ConfigurableSourceBeanMetadataElement {\r\n+\r\n+    /**\r\n+     * Set the source into the specified {@link BeanMetadataElement}\r\n+     *\r\n+     * @param beanMetadataElement {@link BeanMetadataElement} instance\r\n+     */\r\n+    default void setSource(BeanMetadataElement beanMetadataElement) {\r\n+        if (beanMetadataElement instanceof BeanMetadataAttributeAccessor) {\r\n+            BeanMetadataAttributeAccessor.class.cast(beanMetadataElement).setSource(this);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/beans/factory/config/DubboConfigDefaultPropertyValueBeanPostProcessor.java", "source2": "org/apache/dubbo/config/spring/beans/factory/config/DubboConfigDefaultPropertyValueBeanPostProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,106 +1,106 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.beans.factory.config;\n-\n-import org.apache.dubbo.config.AbstractConfig;\n-\n-import com.alibaba.spring.beans.factory.config.GenericBeanPostProcessorAdapter;\n-import org.springframework.beans.BeansException;\n-import org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor;\n-import org.springframework.beans.factory.config.BeanPostProcessor;\n-import org.springframework.beans.factory.support.MergedBeanDefinitionPostProcessor;\n-import org.springframework.beans.factory.support.RootBeanDefinition;\n-import org.springframework.context.annotation.CommonAnnotationBeanPostProcessor;\n-import org.springframework.core.Ordered;\n-import org.springframework.core.PriorityOrdered;\n-\n-import javax.annotation.PostConstruct;\n-import java.beans.PropertyDescriptor;\n-import java.lang.reflect.Method;\n-import java.util.Arrays;\n-\n-import static com.alibaba.spring.util.ObjectUtils.of;\n-import static org.springframework.aop.support.AopUtils.getTargetClass;\n-import static org.springframework.beans.BeanUtils.getPropertyDescriptor;\n-import static org.springframework.util.ReflectionUtils.invokeMethod;\n-\n-/**\n- * The {@link BeanPostProcessor} class for the default property value of {@link AbstractConfig Dubbo's Config Beans}\n- *\n- * @since 2.7.6\n- */\n-public class DubboConfigDefaultPropertyValueBeanPostProcessor extends GenericBeanPostProcessorAdapter<AbstractConfig>\n-        implements MergedBeanDefinitionPostProcessor, PriorityOrdered {\n-\n-    /**\n-     * The bean name of {@link DubboConfigDefaultPropertyValueBeanPostProcessor}\n-     */\n-    public static final String BEAN_NAME = \"dubboConfigDefaultPropertyValueBeanPostProcessor\";\n-\n-    protected void processBeforeInitialization(AbstractConfig dubboConfigBean, String beanName) throws BeansException {\n-        // [Feature] https://github.com/apache/dubbo/issues/5721\n-        setBeanNameAsDefaultValue(dubboConfigBean, \"id\", beanName);\n-        setBeanNameAsDefaultValue(dubboConfigBean, \"name\", beanName);\n-    }\n-\n-    @Override\n-    public void postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName) {\n-        // DO NOTHING\n-    }\n-\n-    protected void setBeanNameAsDefaultValue(Object bean, String propertyName, String beanName) {\n-\n-        Class<?> beanClass = getTargetClass(bean);\n-\n-        PropertyDescriptor propertyDescriptor = getPropertyDescriptor(beanClass, propertyName);\n-\n-        if (propertyDescriptor != null) { // the property is present\n-\n-            Method getterMethod = propertyDescriptor.getReadMethod();\n-\n-            if (getterMethod == null) { // if The getter method is absent\n-                return;\n-            }\n-\n-            Object propertyValue = invokeMethod(getterMethod, bean);\n-\n-            if (propertyValue != null) { // If The return value of \"getName\" method is not null\n-                return;\n-            }\n-\n-            Method setterMethod = propertyDescriptor.getWriteMethod();\n-            if (setterMethod != null) { // the getter and setter methods are present\n-                if (Arrays.equals(of(String.class), setterMethod.getParameterTypes())) { // the param type is String\n-                    // set bean name to the value of the the property\n-                    invokeMethod(setterMethod, bean, beanName);\n-                }\n-            }\n-        }\n-\n-    }\n-\n-    /**\n-     * @return Higher than {@link InitDestroyAnnotationBeanPostProcessor#getOrder()}\n-     * @see InitDestroyAnnotationBeanPostProcessor\n-     * @see CommonAnnotationBeanPostProcessor\n-     * @see PostConstruct\n-     */\n-    @Override\n-    public int getOrder() {\n-        return Ordered.LOWEST_PRECEDENCE + 1;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.beans.factory.config;\r\n+\r\n+import org.apache.dubbo.config.AbstractConfig;\r\n+\r\n+import com.alibaba.spring.beans.factory.config.GenericBeanPostProcessorAdapter;\r\n+import org.springframework.beans.BeansException;\r\n+import org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor;\r\n+import org.springframework.beans.factory.config.BeanPostProcessor;\r\n+import org.springframework.beans.factory.support.MergedBeanDefinitionPostProcessor;\r\n+import org.springframework.beans.factory.support.RootBeanDefinition;\r\n+import org.springframework.context.annotation.CommonAnnotationBeanPostProcessor;\r\n+import org.springframework.core.Ordered;\r\n+import org.springframework.core.PriorityOrdered;\r\n+\r\n+import javax.annotation.PostConstruct;\r\n+import java.beans.PropertyDescriptor;\r\n+import java.lang.reflect.Method;\r\n+import java.util.Arrays;\r\n+\r\n+import static com.alibaba.spring.util.ObjectUtils.of;\r\n+import static org.springframework.aop.support.AopUtils.getTargetClass;\r\n+import static org.springframework.beans.BeanUtils.getPropertyDescriptor;\r\n+import static org.springframework.util.ReflectionUtils.invokeMethod;\r\n+\r\n+/**\r\n+ * The {@link BeanPostProcessor} class for the default property value of {@link AbstractConfig Dubbo's Config Beans}\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class DubboConfigDefaultPropertyValueBeanPostProcessor extends GenericBeanPostProcessorAdapter<AbstractConfig>\r\n+        implements MergedBeanDefinitionPostProcessor, PriorityOrdered {\r\n+\r\n+    /**\r\n+     * The bean name of {@link DubboConfigDefaultPropertyValueBeanPostProcessor}\r\n+     */\r\n+    public static final String BEAN_NAME = \"dubboConfigDefaultPropertyValueBeanPostProcessor\";\r\n+\r\n+    protected void processBeforeInitialization(AbstractConfig dubboConfigBean, String beanName) throws BeansException {\r\n+        // [Feature] https://github.com/apache/dubbo/issues/5721\r\n+        setBeanNameAsDefaultValue(dubboConfigBean, \"id\", beanName);\r\n+        setBeanNameAsDefaultValue(dubboConfigBean, \"name\", beanName);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName) {\r\n+        // DO NOTHING\r\n+    }\r\n+\r\n+    protected void setBeanNameAsDefaultValue(Object bean, String propertyName, String beanName) {\r\n+\r\n+        Class<?> beanClass = getTargetClass(bean);\r\n+\r\n+        PropertyDescriptor propertyDescriptor = getPropertyDescriptor(beanClass, propertyName);\r\n+\r\n+        if (propertyDescriptor != null) { // the property is present\r\n+\r\n+            Method getterMethod = propertyDescriptor.getReadMethod();\r\n+\r\n+            if (getterMethod == null) { // if The getter method is absent\r\n+                return;\r\n+            }\r\n+\r\n+            Object propertyValue = invokeMethod(getterMethod, bean);\r\n+\r\n+            if (propertyValue != null) { // If The return value of \"getName\" method is not null\r\n+                return;\r\n+            }\r\n+\r\n+            Method setterMethod = propertyDescriptor.getWriteMethod();\r\n+            if (setterMethod != null) { // the getter and setter methods are present\r\n+                if (Arrays.equals(of(String.class), setterMethod.getParameterTypes())) { // the param type is String\r\n+                    // set bean name to the value of the the property\r\n+                    invokeMethod(setterMethod, bean, beanName);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * @return Higher than {@link InitDestroyAnnotationBeanPostProcessor#getOrder()}\r\n+     * @see InitDestroyAnnotationBeanPostProcessor\r\n+     * @see CommonAnnotationBeanPostProcessor\r\n+     * @see PostConstruct\r\n+     */\r\n+    @Override\r\n+    public int getOrder() {\r\n+        return Ordered.LOWEST_PRECEDENCE + 1;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/beans/factory/config/DubboConfigEarlyInitializationPostProcessor.java", "source2": "org/apache/dubbo/config/spring/beans/factory/config/DubboConfigEarlyInitializationPostProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,127 +1,127 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.beans.factory.config;\n-\n-import org.apache.dubbo.config.AbstractConfig;\n-import org.apache.dubbo.config.context.ConfigManager;\n-\n-import com.alibaba.spring.beans.factory.config.GenericBeanPostProcessorAdapter;\n-import org.apache.commons.logging.Log;\n-import org.apache.commons.logging.LogFactory;\n-import org.springframework.beans.BeansException;\n-import org.springframework.beans.factory.config.BeanPostProcessor;\n-import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;\n-import org.springframework.beans.factory.support.BeanDefinitionRegistry;\n-import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;\n-import org.springframework.beans.factory.support.DefaultListableBeanFactory;\n-import org.springframework.context.annotation.CommonAnnotationBeanPostProcessor;\n-import org.springframework.core.PriorityOrdered;\n-\n-import javax.annotation.PostConstruct;\n-\n-/**\n- * Generally, {@link AbstractConfig Dubbo Config} Bean will be added into {@link ConfigManager} on the bean initialization\n- * life cycle through {@link CommonAnnotationBeanPostProcessor} executing the callback of\n- * {@link PostConstruct @PostConstruct}. However, the instantiation and initialization of\n- * {@link AbstractConfig Dubbo Config} Bean could be too early before {@link CommonAnnotationBeanPostProcessor}, e.g,\n- * execution, thus it's required to register the current instance as a {@link BeanPostProcessor} into\n- * {@link DefaultListableBeanFactory the BeanFatory} using {@link BeanDefinitionRegistryPostProcessor} as early as\n- * possible.\n- *\n- * @see GenericBeanPostProcessorAdapter\n- * @since 2.7.9\n- */\n-public class DubboConfigEarlyInitializationPostProcessor extends GenericBeanPostProcessorAdapter<AbstractConfig>\n-        implements BeanDefinitionRegistryPostProcessor, PriorityOrdered {\n-\n-    private static final Log logger = LogFactory.getLog(DubboConfigEarlyInitializationPostProcessor.class.getName());\n-\n-    public static final String BEAN_NAME = \"dubboConfigEarlyInitializationPostProcessor\";\n-\n-    private DefaultListableBeanFactory beanFactory;\n-\n-    @Override\n-    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {\n-        this.beanFactory = unwrap(registry);\n-        initBeanFactory();\n-    }\n-\n-    @Override\n-    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {\n-        if (beanFactory == null) { // try again if postProcessBeanDefinitionRegistry method does not effect.\n-            this.beanFactory = unwrap(beanFactory);\n-            initBeanFactory();\n-        }\n-    }\n-\n-    protected void processBeforeInitialization(AbstractConfig config, String beanName) throws BeansException {\n-\n-        if (this.beanFactory == null) {\n-            if (logger.isErrorEnabled()) {\n-                logger.error(\"Current Processor is not running in Spring container, next action will be skipped!\");\n-            }\n-            return;\n-        }\n-\n-        // If CommonAnnotationBeanPostProcessor is already registered,  the method addIntoConfigManager()\n-        // will be invoked in Bean life cycle.\n-        if (!hasRegisteredCommonAnnotationBeanPostProcessor()) {\n-            if (logger.isWarnEnabled()) {\n-                logger.warn(\"CommonAnnotationBeanPostProcessor is not registered yet, \" +\n-                        \"the method addIntoConfigManager() will be invoked directly\");\n-            }\n-            config.addIntoConfigManager();\n-        }\n-    }\n-\n-    private DefaultListableBeanFactory unwrap(Object registry) {\n-        if (registry instanceof DefaultListableBeanFactory) {\n-            return (DefaultListableBeanFactory) registry;\n-        }\n-        return null;\n-    }\n-\n-    private void initBeanFactory() {\n-        if (beanFactory != null) {\n-            // Register itself\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"BeanFactory is about to be initialized, trying to resolve the Dubbo Config Beans early \" +\n-                        \"initialization\");\n-            }\n-            beanFactory.addBeanPostProcessor(this);\n-        }\n-    }\n-\n-    /**\n-     * {@link DefaultListableBeanFactory} has registered {@link CommonAnnotationBeanPostProcessor} or not?\n-     *\n-     * @return if registered, return <code>true</code>, or <code>false</code>\n-     */\n-    private boolean hasRegisteredCommonAnnotationBeanPostProcessor() {\n-        for (BeanPostProcessor beanPostProcessor : beanFactory.getBeanPostProcessors()) {\n-            if (CommonAnnotationBeanPostProcessor.class.equals(beanPostProcessor.getClass())) {\n-                return true;\n-            }\n-        }\n-        return false;\n-    }\n-\n-    @Override\n-    public int getOrder() {\n-        return HIGHEST_PRECEDENCE;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.beans.factory.config;\r\n+\r\n+import org.apache.dubbo.config.AbstractConfig;\r\n+import org.apache.dubbo.config.context.ConfigManager;\r\n+\r\n+import com.alibaba.spring.beans.factory.config.GenericBeanPostProcessorAdapter;\r\n+import org.apache.commons.logging.Log;\r\n+import org.apache.commons.logging.LogFactory;\r\n+import org.springframework.beans.BeansException;\r\n+import org.springframework.beans.factory.config.BeanPostProcessor;\r\n+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;\r\n+import org.springframework.beans.factory.support.BeanDefinitionRegistry;\r\n+import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;\r\n+import org.springframework.beans.factory.support.DefaultListableBeanFactory;\r\n+import org.springframework.context.annotation.CommonAnnotationBeanPostProcessor;\r\n+import org.springframework.core.PriorityOrdered;\r\n+\r\n+import javax.annotation.PostConstruct;\r\n+\r\n+/**\r\n+ * Generally, {@link AbstractConfig Dubbo Config} Bean will be added into {@link ConfigManager} on the bean initialization\r\n+ * life cycle through {@link CommonAnnotationBeanPostProcessor} executing the callback of\r\n+ * {@link PostConstruct @PostConstruct}. However, the instantiation and initialization of\r\n+ * {@link AbstractConfig Dubbo Config} Bean could be too early before {@link CommonAnnotationBeanPostProcessor}, e.g,\r\n+ * execution, thus it's required to register the current instance as a {@link BeanPostProcessor} into\r\n+ * {@link DefaultListableBeanFactory the BeanFatory} using {@link BeanDefinitionRegistryPostProcessor} as early as\r\n+ * possible.\r\n+ *\r\n+ * @see GenericBeanPostProcessorAdapter\r\n+ * @since 2.7.9\r\n+ */\r\n+public class DubboConfigEarlyInitializationPostProcessor extends GenericBeanPostProcessorAdapter<AbstractConfig>\r\n+        implements BeanDefinitionRegistryPostProcessor, PriorityOrdered {\r\n+\r\n+    private static final Log logger = LogFactory.getLog(DubboConfigEarlyInitializationPostProcessor.class.getName());\r\n+\r\n+    public static final String BEAN_NAME = \"dubboConfigEarlyInitializationPostProcessor\";\r\n+\r\n+    private DefaultListableBeanFactory beanFactory;\r\n+\r\n+    @Override\r\n+    public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {\r\n+        this.beanFactory = unwrap(registry);\r\n+        initBeanFactory();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {\r\n+        if (beanFactory == null) { // try again if postProcessBeanDefinitionRegistry method does not effect.\r\n+            this.beanFactory = unwrap(beanFactory);\r\n+            initBeanFactory();\r\n+        }\r\n+    }\r\n+\r\n+    protected void processBeforeInitialization(AbstractConfig config, String beanName) throws BeansException {\r\n+\r\n+        if (this.beanFactory == null) {\r\n+            if (logger.isErrorEnabled()) {\r\n+                logger.error(\"Current Processor is not running in Spring container, next action will be skipped!\");\r\n+            }\r\n+            return;\r\n+        }\r\n+\r\n+        // If CommonAnnotationBeanPostProcessor is already registered,  the method addIntoConfigManager()\r\n+        // will be invoked in Bean life cycle.\r\n+        if (!hasRegisteredCommonAnnotationBeanPostProcessor()) {\r\n+            if (logger.isWarnEnabled()) {\r\n+                logger.warn(\"CommonAnnotationBeanPostProcessor is not registered yet, \" +\r\n+                        \"the method addIntoConfigManager() will be invoked directly\");\r\n+            }\r\n+            config.addIntoConfigManager();\r\n+        }\r\n+    }\r\n+\r\n+    private DefaultListableBeanFactory unwrap(Object registry) {\r\n+        if (registry instanceof DefaultListableBeanFactory) {\r\n+            return (DefaultListableBeanFactory) registry;\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    private void initBeanFactory() {\r\n+        if (beanFactory != null) {\r\n+            // Register itself\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"BeanFactory is about to be initialized, trying to resolve the Dubbo Config Beans early \" +\r\n+                        \"initialization\");\r\n+            }\r\n+            beanFactory.addBeanPostProcessor(this);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * {@link DefaultListableBeanFactory} has registered {@link CommonAnnotationBeanPostProcessor} or not?\r\n+     *\r\n+     * @return if registered, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    private boolean hasRegisteredCommonAnnotationBeanPostProcessor() {\r\n+        for (BeanPostProcessor beanPostProcessor : beanFactory.getBeanPostProcessors()) {\r\n+            if (CommonAnnotationBeanPostProcessor.class.equals(beanPostProcessor.getClass())) {\r\n+                return true;\r\n+            }\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getOrder() {\r\n+        return HIGHEST_PRECEDENCE;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/context/DubboApplicationListenerRegistrar.java", "source2": "org/apache/dubbo/config/spring/context/DubboApplicationListenerRegistrar.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,59 +1,59 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.context;\n-\n-import org.springframework.beans.BeansException;\n-import org.springframework.context.ApplicationContext;\n-import org.springframework.context.ApplicationContextAware;\n-import org.springframework.context.ApplicationListener;\n-import org.springframework.context.ConfigurableApplicationContext;\n-\n-import static org.springframework.util.TypeUtils.isAssignable;\n-\n-/**\n- * Dubbo {@link ApplicationListener ApplicationListeners} Registrar\n- *\n- * @since 2.7.9\n- */\n-public class DubboApplicationListenerRegistrar implements ApplicationContextAware {\n-\n-    /**\n-     * The bean name of {@link DubboApplicationListenerRegistrar}\n-     */\n-    public static final String BEAN_NAME = \"dubboApplicationListenerRegister\";\n-\n-    @Override\n-    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {\n-        if (!isAssignable(ConfigurableApplicationContext.class, applicationContext.getClass())) {\n-            throw new IllegalArgumentException(\"The argument of ApplicationContext must be ConfigurableApplicationContext\");\n-        }\n-        addApplicationListeners((ConfigurableApplicationContext) applicationContext);\n-    }\n-\n-    private void addApplicationListeners(ConfigurableApplicationContext context) {\n-        context.addApplicationListener(createDubboBootstrapApplicationListener(context));\n-        context.addApplicationListener(createDubboLifecycleComponentApplicationListener(context));\n-    }\n-\n-    private ApplicationListener<?> createDubboBootstrapApplicationListener(ConfigurableApplicationContext context) {\n-        return new DubboBootstrapApplicationListener(context);\n-    }\n-\n-    private ApplicationListener<?> createDubboLifecycleComponentApplicationListener(ConfigurableApplicationContext context) {\n-        return new DubboLifecycleComponentApplicationListener(context);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.context;\r\n+\r\n+import org.springframework.beans.BeansException;\r\n+import org.springframework.context.ApplicationContext;\r\n+import org.springframework.context.ApplicationContextAware;\r\n+import org.springframework.context.ApplicationListener;\r\n+import org.springframework.context.ConfigurableApplicationContext;\r\n+\r\n+import static org.springframework.util.TypeUtils.isAssignable;\r\n+\r\n+/**\r\n+ * Dubbo {@link ApplicationListener ApplicationListeners} Registrar\r\n+ *\r\n+ * @since 2.7.9\r\n+ */\r\n+public class DubboApplicationListenerRegistrar implements ApplicationContextAware {\r\n+\r\n+    /**\r\n+     * The bean name of {@link DubboApplicationListenerRegistrar}\r\n+     */\r\n+    public static final String BEAN_NAME = \"dubboApplicationListenerRegister\";\r\n+\r\n+    @Override\r\n+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {\r\n+        if (!isAssignable(ConfigurableApplicationContext.class, applicationContext.getClass())) {\r\n+            throw new IllegalArgumentException(\"The argument of ApplicationContext must be ConfigurableApplicationContext\");\r\n+        }\r\n+        addApplicationListeners((ConfigurableApplicationContext) applicationContext);\r\n+    }\r\n+\r\n+    private void addApplicationListeners(ConfigurableApplicationContext context) {\r\n+        context.addApplicationListener(createDubboBootstrapApplicationListener(context));\r\n+        context.addApplicationListener(createDubboLifecycleComponentApplicationListener(context));\r\n+    }\r\n+\r\n+    private ApplicationListener<?> createDubboBootstrapApplicationListener(ConfigurableApplicationContext context) {\r\n+        return new DubboBootstrapApplicationListener(context);\r\n+    }\r\n+\r\n+    private ApplicationListener<?> createDubboLifecycleComponentApplicationListener(ConfigurableApplicationContext context) {\r\n+        return new DubboLifecycleComponentApplicationListener(context);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/context/DubboBootstrapApplicationListener.java", "source2": "org/apache/dubbo/config/spring/context/DubboBootstrapApplicationListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,80 +1,80 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.context;\n-\n-import org.apache.dubbo.config.bootstrap.DubboBootstrap;\n-\n-import com.alibaba.spring.context.OnceApplicationContextEventListener;\n-import org.springframework.context.ApplicationContext;\n-import org.springframework.context.ApplicationListener;\n-import org.springframework.context.event.ApplicationContextEvent;\n-import org.springframework.context.event.ContextClosedEvent;\n-import org.springframework.context.event.ContextRefreshedEvent;\n-import org.springframework.core.Ordered;\n-\n-/**\n- * The {@link ApplicationListener} for {@link DubboBootstrap}'s lifecycle when the {@link ContextRefreshedEvent}\n- * and {@link ContextClosedEvent} raised\n- *\n- * @since 2.7.5\n- */\n-public class DubboBootstrapApplicationListener extends OnceApplicationContextEventListener implements Ordered {\n-\n-    /**\n-     * The bean name of {@link DubboBootstrapApplicationListener}\n-     *\n-     * @since 2.7.6\n-     */\n-    public static final String BEAN_NAME = \"dubboBootstrapApplicationListener\";\n-\n-    private final DubboBootstrap dubboBootstrap;\n-\n-    public DubboBootstrapApplicationListener() {\n-        this.dubboBootstrap = DubboBootstrap.getInstance();\n-    }\n-\n-    public DubboBootstrapApplicationListener(ApplicationContext applicationContext) {\n-        super(applicationContext);\n-        this.dubboBootstrap = DubboBootstrap.getInstance();\n-        DubboBootstrapStartStopListenerSpringAdapter.applicationContext = applicationContext;\n-    }\n-\n-    @Override\n-    public void onApplicationContextEvent(ApplicationContextEvent event) {\n-        if (DubboBootstrapStartStopListenerSpringAdapter.applicationContext == null) {\n-            DubboBootstrapStartStopListenerSpringAdapter.applicationContext = event.getApplicationContext();\n-        }\n-        if (event instanceof ContextRefreshedEvent) {\n-            onContextRefreshedEvent((ContextRefreshedEvent) event);\n-        } else if (event instanceof ContextClosedEvent) {\n-            onContextClosedEvent((ContextClosedEvent) event);\n-        }\n-    }\n-\n-    private void onContextRefreshedEvent(ContextRefreshedEvent event) {\n-        dubboBootstrap.start();\n-    }\n-\n-    private void onContextClosedEvent(ContextClosedEvent event) {\n-        dubboBootstrap.stop();\n-    }\n-\n-    @Override\n-    public int getOrder() {\n-        return LOWEST_PRECEDENCE;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.context;\r\n+\r\n+import org.apache.dubbo.config.bootstrap.DubboBootstrap;\r\n+\r\n+import com.alibaba.spring.context.OnceApplicationContextEventListener;\r\n+import org.springframework.context.ApplicationContext;\r\n+import org.springframework.context.ApplicationListener;\r\n+import org.springframework.context.event.ApplicationContextEvent;\r\n+import org.springframework.context.event.ContextClosedEvent;\r\n+import org.springframework.context.event.ContextRefreshedEvent;\r\n+import org.springframework.core.Ordered;\r\n+\r\n+/**\r\n+ * The {@link ApplicationListener} for {@link DubboBootstrap}'s lifecycle when the {@link ContextRefreshedEvent}\r\n+ * and {@link ContextClosedEvent} raised\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class DubboBootstrapApplicationListener extends OnceApplicationContextEventListener implements Ordered {\r\n+\r\n+    /**\r\n+     * The bean name of {@link DubboBootstrapApplicationListener}\r\n+     *\r\n+     * @since 2.7.6\r\n+     */\r\n+    public static final String BEAN_NAME = \"dubboBootstrapApplicationListener\";\r\n+\r\n+    private final DubboBootstrap dubboBootstrap;\r\n+\r\n+    public DubboBootstrapApplicationListener() {\r\n+        this.dubboBootstrap = DubboBootstrap.getInstance();\r\n+    }\r\n+\r\n+    public DubboBootstrapApplicationListener(ApplicationContext applicationContext) {\r\n+        super(applicationContext);\r\n+        this.dubboBootstrap = DubboBootstrap.getInstance();\r\n+        DubboBootstrapStartStopListenerSpringAdapter.applicationContext = applicationContext;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void onApplicationContextEvent(ApplicationContextEvent event) {\r\n+        if (DubboBootstrapStartStopListenerSpringAdapter.applicationContext == null) {\r\n+            DubboBootstrapStartStopListenerSpringAdapter.applicationContext = event.getApplicationContext();\r\n+        }\r\n+        if (event instanceof ContextRefreshedEvent) {\r\n+            onContextRefreshedEvent((ContextRefreshedEvent) event);\r\n+        } else if (event instanceof ContextClosedEvent) {\r\n+            onContextClosedEvent((ContextClosedEvent) event);\r\n+        }\r\n+    }\r\n+\r\n+    private void onContextRefreshedEvent(ContextRefreshedEvent event) {\r\n+        dubboBootstrap.start();\r\n+    }\r\n+\r\n+    private void onContextClosedEvent(ContextClosedEvent event) {\r\n+        dubboBootstrap.stop();\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getOrder() {\r\n+        return LOWEST_PRECEDENCE;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/context/DubboBootstrapStartStopListenerSpringAdapter.java", "source2": "org/apache/dubbo/config/spring/context/DubboBootstrapStartStopListenerSpringAdapter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,48 +1,48 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.context;\n-\n-import org.apache.dubbo.config.bootstrap.DubboBootstrap;\n-import org.apache.dubbo.config.bootstrap.DubboBootstrapStartStopListener;\n-import org.apache.dubbo.config.spring.context.event.DubboBootstrapStatedEvent;\n-import org.apache.dubbo.config.spring.context.event.DubboBootstrapStopedEvent;\n-\n-import org.springframework.context.ApplicationContext;\n-\n-/**\n- * convert Dubbo bootstrap event to spring environment.\n- *\n- * @scene 2.7.9\n- */\n-public class DubboBootstrapStartStopListenerSpringAdapter implements DubboBootstrapStartStopListener {\n-\n-    static ApplicationContext applicationContext;\n-\n-    @Override\n-    public void onStart(DubboBootstrap bootstrap) {\n-        if (applicationContext != null) {\n-            applicationContext.publishEvent(new DubboBootstrapStatedEvent(bootstrap));\n-        }\n-    }\n-\n-    @Override\n-    public void onStop(DubboBootstrap bootstrap) {\n-        if (applicationContext != null) {\n-            applicationContext.publishEvent(new DubboBootstrapStopedEvent(bootstrap));\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.context;\r\n+\r\n+import org.apache.dubbo.config.bootstrap.DubboBootstrap;\r\n+import org.apache.dubbo.config.bootstrap.DubboBootstrapStartStopListener;\r\n+import org.apache.dubbo.config.spring.context.event.DubboBootstrapStatedEvent;\r\n+import org.apache.dubbo.config.spring.context.event.DubboBootstrapStopedEvent;\r\n+\r\n+import org.springframework.context.ApplicationContext;\r\n+\r\n+/**\r\n+ * convert Dubbo bootstrap event to spring environment.\r\n+ *\r\n+ * @scene 2.7.9\r\n+ */\r\n+public class DubboBootstrapStartStopListenerSpringAdapter implements DubboBootstrapStartStopListener {\r\n+\r\n+    static ApplicationContext applicationContext;\r\n+\r\n+    @Override\r\n+    public void onStart(DubboBootstrap bootstrap) {\r\n+        if (applicationContext != null) {\r\n+            applicationContext.publishEvent(new DubboBootstrapStatedEvent(bootstrap));\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void onStop(DubboBootstrap bootstrap) {\r\n+        if (applicationContext != null) {\r\n+            applicationContext.publishEvent(new DubboBootstrapStopedEvent(bootstrap));\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/context/DubboLifecycleComponentApplicationListener.java", "source2": "org/apache/dubbo/config/spring/context/DubboLifecycleComponentApplicationListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,97 +1,97 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.context;\n-\n-import org.apache.dubbo.common.context.Lifecycle;\n-\n-import com.alibaba.spring.context.OnceApplicationContextEventListener;\n-import org.springframework.context.ApplicationContext;\n-import org.springframework.context.ApplicationListener;\n-import org.springframework.context.event.ApplicationContextEvent;\n-import org.springframework.context.event.ContextClosedEvent;\n-import org.springframework.context.event.ContextRefreshedEvent;\n-import org.springframework.context.event.SmartApplicationListener;\n-\n-import java.util.LinkedList;\n-import java.util.List;\n-\n-import static java.util.Collections.emptyList;\n-import static org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors;\n-\n-/**\n- * A {@link ApplicationListener listener} for the {@link Lifecycle Dubbo Lifecycle} components\n- *\n- * @see {@link Lifecycle Dubbo Lifecycle}\n- * @see SmartApplicationListener\n- * @since 2.7.5\n- */\n-public class DubboLifecycleComponentApplicationListener extends OnceApplicationContextEventListener {\n-\n-    /**\n-     * The bean name of {@link DubboLifecycleComponentApplicationListener}\n-     *\n-     * @since 2.7.6\n-     */\n-    public static final String BEAN_NAME = \"dubboLifecycleComponentApplicationListener\";\n-\n-    private List<Lifecycle> lifecycleComponents = emptyList();\n-\n-    public DubboLifecycleComponentApplicationListener() {\n-    }\n-\n-    public DubboLifecycleComponentApplicationListener(ApplicationContext applicationContext) {\n-        super(applicationContext);\n-    }\n-\n-    @Override\n-    protected void onApplicationContextEvent(ApplicationContextEvent event) {\n-        if (event instanceof ContextRefreshedEvent) {\n-            onContextRefreshedEvent((ContextRefreshedEvent) event);\n-        } else if (event instanceof ContextClosedEvent) {\n-            onContextClosedEvent((ContextClosedEvent) event);\n-        }\n-    }\n-\n-    protected void onContextRefreshedEvent(ContextRefreshedEvent event) {\n-        initLifecycleComponents(event);\n-        startLifecycleComponents();\n-    }\n-\n-    protected void onContextClosedEvent(ContextClosedEvent event) {\n-        destroyLifecycleComponents();\n-    }\n-\n-    private void initLifecycleComponents(ContextRefreshedEvent event) {\n-        ApplicationContext context = event.getApplicationContext();\n-        ClassLoader classLoader = context.getClassLoader();\n-        lifecycleComponents = new LinkedList<>();\n-        // load the Beans of Lifecycle from ApplicationContext\n-        loadLifecycleComponents(lifecycleComponents, context);\n-    }\n-\n-    private void loadLifecycleComponents(List<Lifecycle> lifecycleComponents, ApplicationContext context) {\n-        lifecycleComponents.addAll(beansOfTypeIncludingAncestors(context, Lifecycle.class).values());\n-    }\n-\n-    private void startLifecycleComponents() {\n-        lifecycleComponents.forEach(Lifecycle::start);\n-    }\n-\n-    private void destroyLifecycleComponents() {\n-        lifecycleComponents.forEach(Lifecycle::destroy);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.context;\r\n+\r\n+import org.apache.dubbo.common.context.Lifecycle;\r\n+\r\n+import com.alibaba.spring.context.OnceApplicationContextEventListener;\r\n+import org.springframework.context.ApplicationContext;\r\n+import org.springframework.context.ApplicationListener;\r\n+import org.springframework.context.event.ApplicationContextEvent;\r\n+import org.springframework.context.event.ContextClosedEvent;\r\n+import org.springframework.context.event.ContextRefreshedEvent;\r\n+import org.springframework.context.event.SmartApplicationListener;\r\n+\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+\r\n+import static java.util.Collections.emptyList;\r\n+import static org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors;\r\n+\r\n+/**\r\n+ * A {@link ApplicationListener listener} for the {@link Lifecycle Dubbo Lifecycle} components\r\n+ *\r\n+ * @see {@link Lifecycle Dubbo Lifecycle}\r\n+ * @see SmartApplicationListener\r\n+ * @since 2.7.5\r\n+ */\r\n+public class DubboLifecycleComponentApplicationListener extends OnceApplicationContextEventListener {\r\n+\r\n+    /**\r\n+     * The bean name of {@link DubboLifecycleComponentApplicationListener}\r\n+     *\r\n+     * @since 2.7.6\r\n+     */\r\n+    public static final String BEAN_NAME = \"dubboLifecycleComponentApplicationListener\";\r\n+\r\n+    private List<Lifecycle> lifecycleComponents = emptyList();\r\n+\r\n+    public DubboLifecycleComponentApplicationListener() {\r\n+    }\r\n+\r\n+    public DubboLifecycleComponentApplicationListener(ApplicationContext applicationContext) {\r\n+        super(applicationContext);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void onApplicationContextEvent(ApplicationContextEvent event) {\r\n+        if (event instanceof ContextRefreshedEvent) {\r\n+            onContextRefreshedEvent((ContextRefreshedEvent) event);\r\n+        } else if (event instanceof ContextClosedEvent) {\r\n+            onContextClosedEvent((ContextClosedEvent) event);\r\n+        }\r\n+    }\r\n+\r\n+    protected void onContextRefreshedEvent(ContextRefreshedEvent event) {\r\n+        initLifecycleComponents(event);\r\n+        startLifecycleComponents();\r\n+    }\r\n+\r\n+    protected void onContextClosedEvent(ContextClosedEvent event) {\r\n+        destroyLifecycleComponents();\r\n+    }\r\n+\r\n+    private void initLifecycleComponents(ContextRefreshedEvent event) {\r\n+        ApplicationContext context = event.getApplicationContext();\r\n+        ClassLoader classLoader = context.getClassLoader();\r\n+        lifecycleComponents = new LinkedList<>();\r\n+        // load the Beans of Lifecycle from ApplicationContext\r\n+        loadLifecycleComponents(lifecycleComponents, context);\r\n+    }\r\n+\r\n+    private void loadLifecycleComponents(List<Lifecycle> lifecycleComponents, ApplicationContext context) {\r\n+        lifecycleComponents.addAll(beansOfTypeIncludingAncestors(context, Lifecycle.class).values());\r\n+    }\r\n+\r\n+    private void startLifecycleComponents() {\r\n+        lifecycleComponents.forEach(Lifecycle::start);\r\n+    }\r\n+\r\n+    private void destroyLifecycleComponents() {\r\n+        lifecycleComponents.forEach(Lifecycle::destroy);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/context/annotation/DubboComponentScanRegistrar.java", "source2": "org/apache/dubbo/config/spring/context/annotation/DubboComponentScanRegistrar.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,99 +1,99 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.context.annotation;\n-\n-import org.apache.dubbo.config.annotation.Service;\n-import org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor;\n-import org.apache.dubbo.config.spring.beans.factory.annotation.ServiceAnnotationBeanPostProcessor;\n-\n-import org.springframework.beans.factory.config.BeanDefinition;\n-import org.springframework.beans.factory.support.AbstractBeanDefinition;\n-import org.springframework.beans.factory.support.BeanDefinitionBuilder;\n-import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;\n-import org.springframework.beans.factory.support.BeanDefinitionRegistry;\n-import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;\n-import org.springframework.core.annotation.AnnotationAttributes;\n-import org.springframework.core.type.AnnotationMetadata;\n-import org.springframework.util.ClassUtils;\n-\n-import java.util.Arrays;\n-import java.util.Collections;\n-import java.util.LinkedHashSet;\n-import java.util.Set;\n-\n-import static org.apache.dubbo.config.spring.util.DubboBeanUtils.registerCommonBeans;\n-import static org.springframework.beans.factory.support.BeanDefinitionBuilder.rootBeanDefinition;\n-\n-/**\n- * Dubbo {@link DubboComponentScan} Bean Registrar\n- *\n- * @see Service\n- * @see DubboComponentScan\n- * @see ImportBeanDefinitionRegistrar\n- * @see ServiceAnnotationBeanPostProcessor\n- * @see ReferenceAnnotationBeanPostProcessor\n- * @since 2.5.7\n- */\n-public class DubboComponentScanRegistrar implements ImportBeanDefinitionRegistrar {\n-\n-    @Override\n-    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {\n-\n-        Set<String> packagesToScan = getPackagesToScan(importingClassMetadata);\n-\n-        registerServiceAnnotationBeanPostProcessor(packagesToScan, registry);\n-\n-        // @since 2.7.6 Register the common beans\n-        registerCommonBeans(registry);\n-    }\n-\n-    /**\n-     * Registers {@link ServiceAnnotationBeanPostProcessor}\n-     *\n-     * @param packagesToScan packages to scan without resolving placeholders\n-     * @param registry       {@link BeanDefinitionRegistry}\n-     * @since 2.5.8\n-     */\n-    private void registerServiceAnnotationBeanPostProcessor(Set<String> packagesToScan, BeanDefinitionRegistry registry) {\n-\n-        BeanDefinitionBuilder builder = rootBeanDefinition(ServiceAnnotationBeanPostProcessor.class);\n-        builder.addConstructorArgValue(packagesToScan);\n-        builder.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);\n-        AbstractBeanDefinition beanDefinition = builder.getBeanDefinition();\n-        BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition, registry);\n-\n-    }\n-\n-    private Set<String> getPackagesToScan(AnnotationMetadata metadata) {\n-        AnnotationAttributes attributes = AnnotationAttributes.fromMap(\n-                metadata.getAnnotationAttributes(DubboComponentScan.class.getName()));\n-        String[] basePackages = attributes.getStringArray(\"basePackages\");\n-        Class<?>[] basePackageClasses = attributes.getClassArray(\"basePackageClasses\");\n-        String[] value = attributes.getStringArray(\"value\");\n-        // Appends value array attributes\n-        Set<String> packagesToScan = new LinkedHashSet<String>(Arrays.asList(value));\n-        packagesToScan.addAll(Arrays.asList(basePackages));\n-        for (Class<?> basePackageClass : basePackageClasses) {\n-            packagesToScan.add(ClassUtils.getPackageName(basePackageClass));\n-        }\n-        if (packagesToScan.isEmpty()) {\n-            return Collections.singleton(ClassUtils.getPackageName(metadata.getClassName()));\n-        }\n-        return packagesToScan;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.context.annotation;\r\n+\r\n+import org.apache.dubbo.config.annotation.Service;\r\n+import org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor;\r\n+import org.apache.dubbo.config.spring.beans.factory.annotation.ServiceAnnotationBeanPostProcessor;\r\n+\r\n+import org.springframework.beans.factory.config.BeanDefinition;\r\n+import org.springframework.beans.factory.support.AbstractBeanDefinition;\r\n+import org.springframework.beans.factory.support.BeanDefinitionBuilder;\r\n+import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;\r\n+import org.springframework.beans.factory.support.BeanDefinitionRegistry;\r\n+import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;\r\n+import org.springframework.core.annotation.AnnotationAttributes;\r\n+import org.springframework.core.type.AnnotationMetadata;\r\n+import org.springframework.util.ClassUtils;\r\n+\r\n+import java.util.Arrays;\r\n+import java.util.Collections;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.Set;\r\n+\r\n+import static org.apache.dubbo.config.spring.util.DubboBeanUtils.registerCommonBeans;\r\n+import static org.springframework.beans.factory.support.BeanDefinitionBuilder.rootBeanDefinition;\r\n+\r\n+/**\r\n+ * Dubbo {@link DubboComponentScan} Bean Registrar\r\n+ *\r\n+ * @see Service\r\n+ * @see DubboComponentScan\r\n+ * @see ImportBeanDefinitionRegistrar\r\n+ * @see ServiceAnnotationBeanPostProcessor\r\n+ * @see ReferenceAnnotationBeanPostProcessor\r\n+ * @since 2.5.7\r\n+ */\r\n+public class DubboComponentScanRegistrar implements ImportBeanDefinitionRegistrar {\r\n+\r\n+    @Override\r\n+    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {\r\n+\r\n+        Set<String> packagesToScan = getPackagesToScan(importingClassMetadata);\r\n+\r\n+        registerServiceAnnotationBeanPostProcessor(packagesToScan, registry);\r\n+\r\n+        // @since 2.7.6 Register the common beans\r\n+        registerCommonBeans(registry);\r\n+    }\r\n+\r\n+    /**\r\n+     * Registers {@link ServiceAnnotationBeanPostProcessor}\r\n+     *\r\n+     * @param packagesToScan packages to scan without resolving placeholders\r\n+     * @param registry       {@link BeanDefinitionRegistry}\r\n+     * @since 2.5.8\r\n+     */\r\n+    private void registerServiceAnnotationBeanPostProcessor(Set<String> packagesToScan, BeanDefinitionRegistry registry) {\r\n+\r\n+        BeanDefinitionBuilder builder = rootBeanDefinition(ServiceAnnotationBeanPostProcessor.class);\r\n+        builder.addConstructorArgValue(packagesToScan);\r\n+        builder.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);\r\n+        AbstractBeanDefinition beanDefinition = builder.getBeanDefinition();\r\n+        BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition, registry);\r\n+\r\n+    }\r\n+\r\n+    private Set<String> getPackagesToScan(AnnotationMetadata metadata) {\r\n+        AnnotationAttributes attributes = AnnotationAttributes.fromMap(\r\n+                metadata.getAnnotationAttributes(DubboComponentScan.class.getName()));\r\n+        String[] basePackages = attributes.getStringArray(\"basePackages\");\r\n+        Class<?>[] basePackageClasses = attributes.getClassArray(\"basePackageClasses\");\r\n+        String[] value = attributes.getStringArray(\"value\");\r\n+        // Appends value array attributes\r\n+        Set<String> packagesToScan = new LinkedHashSet<String>(Arrays.asList(value));\r\n+        packagesToScan.addAll(Arrays.asList(basePackages));\r\n+        for (Class<?> basePackageClass : basePackageClasses) {\r\n+            packagesToScan.add(ClassUtils.getPackageName(basePackageClass));\r\n+        }\r\n+        if (packagesToScan.isEmpty()) {\r\n+            return Collections.singleton(ClassUtils.getPackageName(metadata.getClassName()));\r\n+        }\r\n+        return packagesToScan;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/context/annotation/DubboConfigConfiguration.java", "source2": "org/apache/dubbo/config/spring/context/annotation/DubboConfigConfiguration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,93 +1,93 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.context.annotation;\n-\n-import org.apache.dubbo.config.AbstractConfig;\n-import org.apache.dubbo.config.ApplicationConfig;\n-import org.apache.dubbo.config.ConsumerConfig;\n-import org.apache.dubbo.config.MetadataReportConfig;\n-import org.apache.dubbo.config.MetricsConfig;\n-import org.apache.dubbo.config.ModuleConfig;\n-import org.apache.dubbo.config.MonitorConfig;\n-import org.apache.dubbo.config.ProtocolConfig;\n-import org.apache.dubbo.config.ProviderConfig;\n-import org.apache.dubbo.config.RegistryConfig;\n-import org.apache.dubbo.config.SslConfig;\n-import org.apache.dubbo.config.spring.ConfigCenterBean;\n-\n-import com.alibaba.spring.beans.factory.annotation.EnableConfigurationBeanBinding;\n-import com.alibaba.spring.beans.factory.annotation.EnableConfigurationBeanBindings;\n-import org.springframework.context.annotation.Configuration;\n-\n-/**\n- * Dubbo {@link AbstractConfig Config} {@link Configuration}\n- *\n- * @revised 2.7.5\n- * @see Configuration\n- * @see EnableConfigurationBeanBindings\n- * @see EnableConfigurationBeanBinding\n- * @see ApplicationConfig\n- * @see ModuleConfig\n- * @see RegistryConfig\n- * @see ProtocolConfig\n- * @see MonitorConfig\n- * @see ProviderConfig\n- * @see ConsumerConfig\n- * @see org.apache.dubbo.config.ConfigCenterConfig\n- * @since 2.5.8\n- */\n-public class DubboConfigConfiguration {\n-\n-    /**\n-     * Single Dubbo {@link AbstractConfig Config} Bean Binding\n-     */\n-    @EnableConfigurationBeanBindings({\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.application\", type = ApplicationConfig.class),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.module\", type = ModuleConfig.class),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.registry\", type = RegistryConfig.class),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.protocol\", type = ProtocolConfig.class),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.monitor\", type = MonitorConfig.class),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.provider\", type = ProviderConfig.class),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.consumer\", type = ConsumerConfig.class),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.config-center\", type = ConfigCenterBean.class),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.metadata-report\", type = MetadataReportConfig.class),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.metrics\", type = MetricsConfig.class),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.ssl\", type = SslConfig.class)\n-    })\n-    public static class Single {\n-\n-    }\n-\n-    /**\n-     * Multiple Dubbo {@link AbstractConfig Config} Bean Binding\n-     */\n-    @EnableConfigurationBeanBindings({\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.applications\", type = ApplicationConfig.class, multiple = true),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.modules\", type = ModuleConfig.class, multiple = true),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.registries\", type = RegistryConfig.class, multiple = true),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.protocols\", type = ProtocolConfig.class, multiple = true),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.monitors\", type = MonitorConfig.class, multiple = true),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.providers\", type = ProviderConfig.class, multiple = true),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.consumers\", type = ConsumerConfig.class, multiple = true),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.config-centers\", type = ConfigCenterBean.class, multiple = true),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.metadata-reports\", type = MetadataReportConfig.class, multiple = true),\n-            @EnableConfigurationBeanBinding(prefix = \"dubbo.metricses\", type = MetricsConfig.class, multiple = true)\n-    })\n-    public static class Multiple {\n-\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.context.annotation;\r\n+\r\n+import org.apache.dubbo.config.AbstractConfig;\r\n+import org.apache.dubbo.config.ApplicationConfig;\r\n+import org.apache.dubbo.config.ConsumerConfig;\r\n+import org.apache.dubbo.config.MetadataReportConfig;\r\n+import org.apache.dubbo.config.MetricsConfig;\r\n+import org.apache.dubbo.config.ModuleConfig;\r\n+import org.apache.dubbo.config.MonitorConfig;\r\n+import org.apache.dubbo.config.ProtocolConfig;\r\n+import org.apache.dubbo.config.ProviderConfig;\r\n+import org.apache.dubbo.config.RegistryConfig;\r\n+import org.apache.dubbo.config.SslConfig;\r\n+import org.apache.dubbo.config.spring.ConfigCenterBean;\r\n+\r\n+import com.alibaba.spring.beans.factory.annotation.EnableConfigurationBeanBinding;\r\n+import com.alibaba.spring.beans.factory.annotation.EnableConfigurationBeanBindings;\r\n+import org.springframework.context.annotation.Configuration;\r\n+\r\n+/**\r\n+ * Dubbo {@link AbstractConfig Config} {@link Configuration}\r\n+ *\r\n+ * @revised 2.7.5\r\n+ * @see Configuration\r\n+ * @see EnableConfigurationBeanBindings\r\n+ * @see EnableConfigurationBeanBinding\r\n+ * @see ApplicationConfig\r\n+ * @see ModuleConfig\r\n+ * @see RegistryConfig\r\n+ * @see ProtocolConfig\r\n+ * @see MonitorConfig\r\n+ * @see ProviderConfig\r\n+ * @see ConsumerConfig\r\n+ * @see org.apache.dubbo.config.ConfigCenterConfig\r\n+ * @since 2.5.8\r\n+ */\r\n+public class DubboConfigConfiguration {\r\n+\r\n+    /**\r\n+     * Single Dubbo {@link AbstractConfig Config} Bean Binding\r\n+     */\r\n+    @EnableConfigurationBeanBindings({\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.application\", type = ApplicationConfig.class),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.module\", type = ModuleConfig.class),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.registry\", type = RegistryConfig.class),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.protocol\", type = ProtocolConfig.class),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.monitor\", type = MonitorConfig.class),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.provider\", type = ProviderConfig.class),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.consumer\", type = ConsumerConfig.class),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.config-center\", type = ConfigCenterBean.class),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.metadata-report\", type = MetadataReportConfig.class),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.metrics\", type = MetricsConfig.class),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.ssl\", type = SslConfig.class)\r\n+    })\r\n+    public static class Single {\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * Multiple Dubbo {@link AbstractConfig Config} Bean Binding\r\n+     */\r\n+    @EnableConfigurationBeanBindings({\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.applications\", type = ApplicationConfig.class, multiple = true),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.modules\", type = ModuleConfig.class, multiple = true),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.registries\", type = RegistryConfig.class, multiple = true),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.protocols\", type = ProtocolConfig.class, multiple = true),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.monitors\", type = MonitorConfig.class, multiple = true),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.providers\", type = ProviderConfig.class, multiple = true),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.consumers\", type = ConsumerConfig.class, multiple = true),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.config-centers\", type = ConfigCenterBean.class, multiple = true),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.metadata-reports\", type = MetadataReportConfig.class, multiple = true),\r\n+            @EnableConfigurationBeanBinding(prefix = \"dubbo.metricses\", type = MetricsConfig.class, multiple = true)\r\n+    })\r\n+    public static class Multiple {\r\n+\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/context/annotation/DubboConfigConfigurationRegistrar.java", "source2": "org/apache/dubbo/config/spring/context/annotation/DubboConfigConfigurationRegistrar.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,72 +1,72 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.context.annotation;\n-\n-import org.apache.dubbo.config.AbstractConfig;\n-\n-import org.springframework.beans.BeansException;\n-import org.springframework.beans.factory.support.BeanDefinitionRegistry;\n-import org.springframework.context.ApplicationContext;\n-import org.springframework.context.ApplicationContextAware;\n-import org.springframework.context.ConfigurableApplicationContext;\n-import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;\n-import org.springframework.core.Ordered;\n-import org.springframework.core.annotation.AnnotationAttributes;\n-import org.springframework.core.type.AnnotationMetadata;\n-\n-import static com.alibaba.spring.util.AnnotatedBeanDefinitionRegistryUtils.registerBeans;\n-import static org.apache.dubbo.config.spring.util.DubboBeanUtils.registerCommonBeans;\n-\n-/**\n- * Dubbo {@link AbstractConfig Config} {@link ImportBeanDefinitionRegistrar register}, which order can be configured\n- *\n- * @see EnableDubboConfig\n- * @see DubboConfigConfiguration\n- * @see Ordered\n- * @since 2.5.8\n- */\n-public class DubboConfigConfigurationRegistrar implements ImportBeanDefinitionRegistrar, ApplicationContextAware {\n-\n-    private ConfigurableApplicationContext applicationContext;\n-\n-    @Override\n-    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {\n-\n-        AnnotationAttributes attributes = AnnotationAttributes.fromMap(\n-                importingClassMetadata.getAnnotationAttributes(EnableDubboConfig.class.getName()));\n-\n-        boolean multiple = attributes.getBoolean(\"multiple\");\n-\n-        // Single Config Bindings\n-        registerBeans(registry, DubboConfigConfiguration.Single.class);\n-\n-        if (multiple) { // Since 2.6.6 https://github.com/apache/dubbo/issues/3193\n-            registerBeans(registry, DubboConfigConfiguration.Multiple.class);\n-        }\n-\n-        // Since 2.7.6\n-        registerCommonBeans(registry);\n-    }\n-\n-    @Override\n-    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {\n-        if (!(applicationContext instanceof ConfigurableApplicationContext)) {\n-            throw new IllegalArgumentException(\"The argument of ApplicationContext must be ConfigurableApplicationContext\");\n-        }\n-        this.applicationContext = (ConfigurableApplicationContext) applicationContext;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.context.annotation;\r\n+\r\n+import org.apache.dubbo.config.AbstractConfig;\r\n+\r\n+import org.springframework.beans.BeansException;\r\n+import org.springframework.beans.factory.support.BeanDefinitionRegistry;\r\n+import org.springframework.context.ApplicationContext;\r\n+import org.springframework.context.ApplicationContextAware;\r\n+import org.springframework.context.ConfigurableApplicationContext;\r\n+import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;\r\n+import org.springframework.core.Ordered;\r\n+import org.springframework.core.annotation.AnnotationAttributes;\r\n+import org.springframework.core.type.AnnotationMetadata;\r\n+\r\n+import static com.alibaba.spring.util.AnnotatedBeanDefinitionRegistryUtils.registerBeans;\r\n+import static org.apache.dubbo.config.spring.util.DubboBeanUtils.registerCommonBeans;\r\n+\r\n+/**\r\n+ * Dubbo {@link AbstractConfig Config} {@link ImportBeanDefinitionRegistrar register}, which order can be configured\r\n+ *\r\n+ * @see EnableDubboConfig\r\n+ * @see DubboConfigConfiguration\r\n+ * @see Ordered\r\n+ * @since 2.5.8\r\n+ */\r\n+public class DubboConfigConfigurationRegistrar implements ImportBeanDefinitionRegistrar, ApplicationContextAware {\r\n+\r\n+    private ConfigurableApplicationContext applicationContext;\r\n+\r\n+    @Override\r\n+    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {\r\n+\r\n+        AnnotationAttributes attributes = AnnotationAttributes.fromMap(\r\n+                importingClassMetadata.getAnnotationAttributes(EnableDubboConfig.class.getName()));\r\n+\r\n+        boolean multiple = attributes.getBoolean(\"multiple\");\r\n+\r\n+        // Single Config Bindings\r\n+        registerBeans(registry, DubboConfigConfiguration.Single.class);\r\n+\r\n+        if (multiple) { // Since 2.6.6 https://github.com/apache/dubbo/issues/3193\r\n+            registerBeans(registry, DubboConfigConfiguration.Multiple.class);\r\n+        }\r\n+\r\n+        // Since 2.7.6\r\n+        registerCommonBeans(registry);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {\r\n+        if (!(applicationContext instanceof ConfigurableApplicationContext)) {\r\n+            throw new IllegalArgumentException(\"The argument of ApplicationContext must be ConfigurableApplicationContext\");\r\n+        }\r\n+        this.applicationContext = (ConfigurableApplicationContext) applicationContext;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/context/annotation/DubboLifecycleComponentRegistrar.java", "source2": "org/apache/dubbo/config/spring/context/annotation/DubboLifecycleComponentRegistrar.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,44 +1,44 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.context.annotation;\n-\n-import org.apache.dubbo.common.context.Lifecycle;\n-import org.apache.dubbo.config.spring.context.DubboBootstrapApplicationListener;\n-import org.apache.dubbo.config.spring.context.DubboLifecycleComponentApplicationListener;\n-\n-import org.springframework.beans.factory.support.BeanDefinitionRegistry;\n-import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;\n-import org.springframework.core.type.AnnotationMetadata;\n-\n-import static com.alibaba.spring.util.AnnotatedBeanDefinitionRegistryUtils.registerBeans;\n-\n-/**\n- * A {@link ImportBeanDefinitionRegistrar register} for the {@link Lifecycle Dubbo Lifecycle} components\n- *\n- * @since 2.7.5\n- * @deprecated as 2.7.6,  Dubbo {@link Lifecycle} components will be registered automatically. Current class may be\n- * removed in the future\n- */\n-@Deprecated\n-public class DubboLifecycleComponentRegistrar implements ImportBeanDefinitionRegistrar {\n-\n-    @Override\n-    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {\n-        registerBeans(registry, DubboLifecycleComponentApplicationListener.class);\n-        registerBeans(registry, DubboBootstrapApplicationListener.class);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.context.annotation;\r\n+\r\n+import org.apache.dubbo.common.context.Lifecycle;\r\n+import org.apache.dubbo.config.spring.context.DubboBootstrapApplicationListener;\r\n+import org.apache.dubbo.config.spring.context.DubboLifecycleComponentApplicationListener;\r\n+\r\n+import org.springframework.beans.factory.support.BeanDefinitionRegistry;\r\n+import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;\r\n+import org.springframework.core.type.AnnotationMetadata;\r\n+\r\n+import static com.alibaba.spring.util.AnnotatedBeanDefinitionRegistryUtils.registerBeans;\r\n+\r\n+/**\r\n+ * A {@link ImportBeanDefinitionRegistrar register} for the {@link Lifecycle Dubbo Lifecycle} components\r\n+ *\r\n+ * @since 2.7.5\r\n+ * @deprecated as 2.7.6,  Dubbo {@link Lifecycle} components will be registered automatically. Current class may be\r\n+ * removed in the future\r\n+ */\r\n+@Deprecated\r\n+public class DubboLifecycleComponentRegistrar implements ImportBeanDefinitionRegistrar {\r\n+\r\n+    @Override\r\n+    public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {\r\n+        registerBeans(registry, DubboLifecycleComponentApplicationListener.class);\r\n+        registerBeans(registry, DubboBootstrapApplicationListener.class);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/context/annotation/EnableDubbo.java", "source2": "org/apache/dubbo/config/spring/context/annotation/EnableDubbo.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,81 +1,81 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.context.annotation;\n-\n-import org.apache.dubbo.config.AbstractConfig;\n-\n-import org.springframework.core.annotation.AliasFor;\n-\n-import java.lang.annotation.Documented;\n-import java.lang.annotation.ElementType;\n-import java.lang.annotation.Inherited;\n-import java.lang.annotation.Retention;\n-import java.lang.annotation.RetentionPolicy;\n-import java.lang.annotation.Target;\n-\n-/**\n- * Enables Dubbo components as Spring Beans, equals\n- * {@link DubboComponentScan} and {@link EnableDubboConfig} combination.\n- * <p>\n- * Note : {@link EnableDubbo} must base on Spring Framework 4.2 and above\n- *\n- * @see DubboComponentScan\n- * @see EnableDubboConfig\n- * @since 2.5.8\n- */\n-@Target({ElementType.TYPE})\n-@Retention(RetentionPolicy.RUNTIME)\n-@Inherited\n-@Documented\n-@EnableDubboConfig\n-@DubboComponentScan\n-public @interface EnableDubbo {\n-\n-    /**\n-     * Base packages to scan for annotated @Service classes.\n-     * <p>\n-     * Use {@link #scanBasePackageClasses()} for a type-safe alternative to String-based\n-     * package names.\n-     *\n-     * @return the base packages to scan\n-     * @see DubboComponentScan#basePackages()\n-     */\n-    @AliasFor(annotation = DubboComponentScan.class, attribute = \"basePackages\")\n-    String[] scanBasePackages() default {};\n-\n-    /**\n-     * Type-safe alternative to {@link #scanBasePackages()} for specifying the packages to\n-     * scan for annotated @Service classes. The package of each class specified will be\n-     * scanned.\n-     *\n-     * @return classes from the base packages to scan\n-     * @see DubboComponentScan#basePackageClasses\n-     */\n-    @AliasFor(annotation = DubboComponentScan.class, attribute = \"basePackageClasses\")\n-    Class<?>[] scanBasePackageClasses() default {};\n-\n-\n-    /**\n-     * It indicates whether {@link AbstractConfig} binding to multiple Spring Beans.\n-     *\n-     * @return the default value is <code>true</code>\n-     * @see EnableDubboConfig#multiple()\n-     */\n-    @AliasFor(annotation = EnableDubboConfig.class, attribute = \"multiple\")\n-    boolean multipleConfig() default true;\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.context.annotation;\r\n+\r\n+import org.apache.dubbo.config.AbstractConfig;\r\n+\r\n+import org.springframework.core.annotation.AliasFor;\r\n+\r\n+import java.lang.annotation.Documented;\r\n+import java.lang.annotation.ElementType;\r\n+import java.lang.annotation.Inherited;\r\n+import java.lang.annotation.Retention;\r\n+import java.lang.annotation.RetentionPolicy;\r\n+import java.lang.annotation.Target;\r\n+\r\n+/**\r\n+ * Enables Dubbo components as Spring Beans, equals\r\n+ * {@link DubboComponentScan} and {@link EnableDubboConfig} combination.\r\n+ * <p>\r\n+ * Note : {@link EnableDubbo} must base on Spring Framework 4.2 and above\r\n+ *\r\n+ * @see DubboComponentScan\r\n+ * @see EnableDubboConfig\r\n+ * @since 2.5.8\r\n+ */\r\n+@Target({ElementType.TYPE})\r\n+@Retention(RetentionPolicy.RUNTIME)\r\n+@Inherited\r\n+@Documented\r\n+@EnableDubboConfig\r\n+@DubboComponentScan\r\n+public @interface EnableDubbo {\r\n+\r\n+    /**\r\n+     * Base packages to scan for annotated @Service classes.\r\n+     * <p>\r\n+     * Use {@link #scanBasePackageClasses()} for a type-safe alternative to String-based\r\n+     * package names.\r\n+     *\r\n+     * @return the base packages to scan\r\n+     * @see DubboComponentScan#basePackages()\r\n+     */\r\n+    @AliasFor(annotation = DubboComponentScan.class, attribute = \"basePackages\")\r\n+    String[] scanBasePackages() default {};\r\n+\r\n+    /**\r\n+     * Type-safe alternative to {@link #scanBasePackages()} for specifying the packages to\r\n+     * scan for annotated @Service classes. The package of each class specified will be\r\n+     * scanned.\r\n+     *\r\n+     * @return classes from the base packages to scan\r\n+     * @see DubboComponentScan#basePackageClasses\r\n+     */\r\n+    @AliasFor(annotation = DubboComponentScan.class, attribute = \"basePackageClasses\")\r\n+    Class<?>[] scanBasePackageClasses() default {};\r\n+\r\n+\r\n+    /**\r\n+     * It indicates whether {@link AbstractConfig} binding to multiple Spring Beans.\r\n+     *\r\n+     * @return the default value is <code>true</code>\r\n+     * @see EnableDubboConfig#multiple()\r\n+     */\r\n+    @AliasFor(annotation = EnableDubboConfig.class, attribute = \"multiple\")\r\n+    boolean multipleConfig() default true;\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/context/annotation/EnableDubboConfig.java", "source2": "org/apache/dubbo/config/spring/context/annotation/EnableDubboConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,81 +1,81 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.context.annotation;\n-\n-import org.apache.dubbo.config.ApplicationConfig;\n-import org.apache.dubbo.config.ConsumerConfig;\n-import org.apache.dubbo.config.ModuleConfig;\n-import org.apache.dubbo.config.MonitorConfig;\n-import org.apache.dubbo.config.ProtocolConfig;\n-import org.apache.dubbo.config.ProviderConfig;\n-import org.apache.dubbo.config.RegistryConfig;\n-\n-import com.alibaba.spring.beans.factory.annotation.EnableConfigurationBeanBinding;\n-import org.springframework.context.annotation.Import;\n-\n-import java.lang.annotation.Documented;\n-import java.lang.annotation.ElementType;\n-import java.lang.annotation.Inherited;\n-import java.lang.annotation.Retention;\n-import java.lang.annotation.RetentionPolicy;\n-import java.lang.annotation.Target;\n-\n-/**\n- * As a convenient and multiple {@link EnableConfigurationBeanBinding}\n- * in default behavior , is equal to single bean bindings with below convention prefixes of properties:\n- * <ul>\n- * <li>{@link ApplicationConfig} binding to property : \"dubbo.application\"</li>\n- * <li>{@link ModuleConfig} binding to property :  \"dubbo.module\"</li>\n- * <li>{@link RegistryConfig} binding to property :  \"dubbo.registry\"</li>\n- * <li>{@link ProtocolConfig} binding to property :  \"dubbo.protocol\"</li>\n- * <li>{@link MonitorConfig} binding to property :  \"dubbo.monitor\"</li>\n- * <li>{@link ProviderConfig} binding to property :  \"dubbo.provider\"</li>\n- * <li>{@link ConsumerConfig} binding to property :  \"dubbo.consumer\"</li>\n- * </ul>\n- * <p>\n- * In contrast, on multiple bean bindings that requires to set {@link #multiple()} to be <code>true</code> :\n- * <ul>\n- * <li>{@link ApplicationConfig} binding to property : \"dubbo.applications\"</li>\n- * <li>{@link ModuleConfig} binding to property :  \"dubbo.modules\"</li>\n- * <li>{@link RegistryConfig} binding to property :  \"dubbo.registries\"</li>\n- * <li>{@link ProtocolConfig} binding to property :  \"dubbo.protocols\"</li>\n- * <li>{@link MonitorConfig} binding to property :  \"dubbo.monitors\"</li>\n- * <li>{@link ProviderConfig} binding to property :  \"dubbo.providers\"</li>\n- * <li>{@link ConsumerConfig} binding to property :  \"dubbo.consumers\"</li>\n- * </ul>\n- *\n- * @see EnableConfigurationBeanBinding\n- * @see DubboConfigConfiguration\n- * @see DubboConfigConfigurationRegistrar\n- * @since 2.5.8\n- */\n-@Target({ElementType.TYPE})\n-@Retention(RetentionPolicy.RUNTIME)\n-@Inherited\n-@Documented\n-@Import(DubboConfigConfigurationRegistrar.class)\n-public @interface EnableDubboConfig {\n-\n-    /**\n-     * It indicates whether binding to multiple Spring Beans.\n-     *\n-     * @return the default value is <code>true</code>\n-     * @revised 2.5.9\n-     */\n-    boolean multiple() default true;\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.context.annotation;\r\n+\r\n+import org.apache.dubbo.config.ApplicationConfig;\r\n+import org.apache.dubbo.config.ConsumerConfig;\r\n+import org.apache.dubbo.config.ModuleConfig;\r\n+import org.apache.dubbo.config.MonitorConfig;\r\n+import org.apache.dubbo.config.ProtocolConfig;\r\n+import org.apache.dubbo.config.ProviderConfig;\r\n+import org.apache.dubbo.config.RegistryConfig;\r\n+\r\n+import com.alibaba.spring.beans.factory.annotation.EnableConfigurationBeanBinding;\r\n+import org.springframework.context.annotation.Import;\r\n+\r\n+import java.lang.annotation.Documented;\r\n+import java.lang.annotation.ElementType;\r\n+import java.lang.annotation.Inherited;\r\n+import java.lang.annotation.Retention;\r\n+import java.lang.annotation.RetentionPolicy;\r\n+import java.lang.annotation.Target;\r\n+\r\n+/**\r\n+ * As a convenient and multiple {@link EnableConfigurationBeanBinding}\r\n+ * in default behavior , is equal to single bean bindings with below convention prefixes of properties:\r\n+ * <ul>\r\n+ * <li>{@link ApplicationConfig} binding to property : \"dubbo.application\"</li>\r\n+ * <li>{@link ModuleConfig} binding to property :  \"dubbo.module\"</li>\r\n+ * <li>{@link RegistryConfig} binding to property :  \"dubbo.registry\"</li>\r\n+ * <li>{@link ProtocolConfig} binding to property :  \"dubbo.protocol\"</li>\r\n+ * <li>{@link MonitorConfig} binding to property :  \"dubbo.monitor\"</li>\r\n+ * <li>{@link ProviderConfig} binding to property :  \"dubbo.provider\"</li>\r\n+ * <li>{@link ConsumerConfig} binding to property :  \"dubbo.consumer\"</li>\r\n+ * </ul>\r\n+ * <p>\r\n+ * In contrast, on multiple bean bindings that requires to set {@link #multiple()} to be <code>true</code> :\r\n+ * <ul>\r\n+ * <li>{@link ApplicationConfig} binding to property : \"dubbo.applications\"</li>\r\n+ * <li>{@link ModuleConfig} binding to property :  \"dubbo.modules\"</li>\r\n+ * <li>{@link RegistryConfig} binding to property :  \"dubbo.registries\"</li>\r\n+ * <li>{@link ProtocolConfig} binding to property :  \"dubbo.protocols\"</li>\r\n+ * <li>{@link MonitorConfig} binding to property :  \"dubbo.monitors\"</li>\r\n+ * <li>{@link ProviderConfig} binding to property :  \"dubbo.providers\"</li>\r\n+ * <li>{@link ConsumerConfig} binding to property :  \"dubbo.consumers\"</li>\r\n+ * </ul>\r\n+ *\r\n+ * @see EnableConfigurationBeanBinding\r\n+ * @see DubboConfigConfiguration\r\n+ * @see DubboConfigConfigurationRegistrar\r\n+ * @since 2.5.8\r\n+ */\r\n+@Target({ElementType.TYPE})\r\n+@Retention(RetentionPolicy.RUNTIME)\r\n+@Inherited\r\n+@Documented\r\n+@Import(DubboConfigConfigurationRegistrar.class)\r\n+public @interface EnableDubboConfig {\r\n+\r\n+    /**\r\n+     * It indicates whether binding to multiple Spring Beans.\r\n+     *\r\n+     * @return the default value is <code>true</code>\r\n+     * @revised 2.5.9\r\n+     */\r\n+    boolean multiple() default true;\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/context/annotation/EnableDubboLifecycle.java", "source2": "org/apache/dubbo/config/spring/context/annotation/EnableDubboLifecycle.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,42 +1,42 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.context.annotation;\n-\n-import org.apache.dubbo.common.context.Lifecycle;\n-\n-import java.lang.annotation.Documented;\n-import java.lang.annotation.ElementType;\n-import java.lang.annotation.Inherited;\n-import java.lang.annotation.Retention;\n-import java.lang.annotation.RetentionPolicy;\n-import java.lang.annotation.Target;\n-\n-/**\n- * Enables Dubbo {@link Lifecycle} components\n- *\n- * @since 2.7.5\n- * @deprecated as 2.7.6,  Dubbo {@link Lifecycle} components will be registered automatically. Current annotation may be\n- * removed in the future\n- */\n-@Target({ElementType.TYPE})\n-@Retention(RetentionPolicy.RUNTIME)\n-@Inherited\n-@Documented\n-//@Import(DubboLifecycleComponentRegistrar.class) // Disabled since 2.7.6\n-@Deprecated\n-public @interface EnableDubboLifecycle {\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.context.annotation;\r\n+\r\n+import org.apache.dubbo.common.context.Lifecycle;\r\n+\r\n+import java.lang.annotation.Documented;\r\n+import java.lang.annotation.ElementType;\r\n+import java.lang.annotation.Inherited;\r\n+import java.lang.annotation.Retention;\r\n+import java.lang.annotation.RetentionPolicy;\r\n+import java.lang.annotation.Target;\r\n+\r\n+/**\r\n+ * Enables Dubbo {@link Lifecycle} components\r\n+ *\r\n+ * @since 2.7.5\r\n+ * @deprecated as 2.7.6,  Dubbo {@link Lifecycle} components will be registered automatically. Current annotation may be\r\n+ * removed in the future\r\n+ */\r\n+@Target({ElementType.TYPE})\r\n+@Retention(RetentionPolicy.RUNTIME)\r\n+@Inherited\r\n+@Documented\r\n+//@Import(DubboLifecycleComponentRegistrar.class) // Disabled since 2.7.6\r\n+@Deprecated\r\n+public @interface EnableDubboLifecycle {\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/context/config/DubboConfigBeanCustomizer.java", "source2": "org/apache/dubbo/config/spring/context/config/DubboConfigBeanCustomizer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,53 +1,53 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.context.config;\n-\n-import org.apache.dubbo.config.AbstractConfig;\n-import org.apache.dubbo.config.spring.context.properties.DubboConfigBinder;\n-\n-import com.alibaba.spring.context.config.ConfigurationBeanCustomizer;\n-import org.springframework.context.ApplicationContext;\n-import org.springframework.core.Ordered;\n-\n-/**\n- * The Bean customizer for {@link AbstractConfig Dubbo Config}. Generally, The subclass will be  registered as a Spring\n- * Bean that is used to {@link #customize(String, AbstractConfig) customize} {@link AbstractConfig Dubbo Config} bean\n- * after {@link DubboConfigBinder#bind(String, AbstractConfig) its binding}.\n- * <p>\n- * If There are multiple {@link DubboConfigBeanCustomizer} beans in the Spring {@link ApplicationContext context}, they\n- * are executed orderly, thus the subclass should be aware to implement the {@link #getOrder()} method.\n- *\n- * @see DubboConfigBinder#bind(String, AbstractConfig)\n- * @since 2.6.6\n- */\n-public interface DubboConfigBeanCustomizer extends ConfigurationBeanCustomizer, Ordered {\n-\n-    /**\n-     * Customize {@link AbstractConfig Dubbo Config Bean}\n-     *\n-     * @param beanName        the name of {@link AbstractConfig Dubbo Config Bean}\n-     * @param dubboConfigBean the instance of {@link AbstractConfig Dubbo Config Bean}\n-     */\n-    void customize(String beanName, AbstractConfig dubboConfigBean);\n-\n-    @Override\n-    default void customize(String beanName, Object configurationBean) {\n-        if (configurationBean instanceof AbstractConfig) {\n-            customize(beanName, (AbstractConfig) configurationBean);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.context.config;\r\n+\r\n+import org.apache.dubbo.config.AbstractConfig;\r\n+import org.apache.dubbo.config.spring.context.properties.DubboConfigBinder;\r\n+\r\n+import com.alibaba.spring.context.config.ConfigurationBeanCustomizer;\r\n+import org.springframework.context.ApplicationContext;\r\n+import org.springframework.core.Ordered;\r\n+\r\n+/**\r\n+ * The Bean customizer for {@link AbstractConfig Dubbo Config}. Generally, The subclass will be  registered as a Spring\r\n+ * Bean that is used to {@link #customize(String, AbstractConfig) customize} {@link AbstractConfig Dubbo Config} bean\r\n+ * after {@link DubboConfigBinder#bind(String, AbstractConfig) its binding}.\r\n+ * <p>\r\n+ * If There are multiple {@link DubboConfigBeanCustomizer} beans in the Spring {@link ApplicationContext context}, they\r\n+ * are executed orderly, thus the subclass should be aware to implement the {@link #getOrder()} method.\r\n+ *\r\n+ * @see DubboConfigBinder#bind(String, AbstractConfig)\r\n+ * @since 2.6.6\r\n+ */\r\n+public interface DubboConfigBeanCustomizer extends ConfigurationBeanCustomizer, Ordered {\r\n+\r\n+    /**\r\n+     * Customize {@link AbstractConfig Dubbo Config Bean}\r\n+     *\r\n+     * @param beanName        the name of {@link AbstractConfig Dubbo Config Bean}\r\n+     * @param dubboConfigBean the instance of {@link AbstractConfig Dubbo Config Bean}\r\n+     */\r\n+    void customize(String beanName, AbstractConfig dubboConfigBean);\r\n+\r\n+    @Override\r\n+    default void customize(String beanName, Object configurationBean) {\r\n+        if (configurationBean instanceof AbstractConfig) {\r\n+            customize(beanName, (AbstractConfig) configurationBean);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/context/config/NamePropertyDefaultValueDubboConfigBeanCustomizer.java", "source2": "org/apache/dubbo/config/spring/context/config/NamePropertyDefaultValueDubboConfigBeanCustomizer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,86 +1,86 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.context.config;\n-\n-import org.apache.dubbo.config.AbstractConfig;\n-import org.apache.dubbo.config.spring.beans.factory.config.DubboConfigDefaultPropertyValueBeanPostProcessor;\n-\n-import org.springframework.util.ReflectionUtils;\n-\n-import java.beans.PropertyDescriptor;\n-import java.lang.reflect.Method;\n-import java.util.Arrays;\n-\n-import static com.alibaba.spring.util.ObjectUtils.of;\n-import static org.springframework.beans.BeanUtils.getPropertyDescriptor;\n-\n-/**\n- * {@link DubboConfigBeanCustomizer} for the default value for the \"name\" property that will be taken bean name\n- * if absent.\n- *\n- * @since 2.6.6\n- * @deprecated {@link DubboConfigDefaultPropertyValueBeanPostProcessor} instead\n- */\n-@Deprecated\n-public class NamePropertyDefaultValueDubboConfigBeanCustomizer implements DubboConfigBeanCustomizer {\n-\n-    /**\n-     * The bean name of {@link NamePropertyDefaultValueDubboConfigBeanCustomizer}\n-     *\n-     * @since 2.7.1\n-     */\n-    public static final String BEAN_NAME = \"namePropertyDefaultValueDubboConfigBeanCustomizer\";\n-\n-    /**\n-     * The name of property that is \"name\" maybe is absent in target class\n-     */\n-    private static final String PROPERTY_NAME = \"name\";\n-\n-    @Override\n-    public void customize(String beanName, AbstractConfig dubboConfigBean) {\n-\n-        PropertyDescriptor propertyDescriptor = getPropertyDescriptor(dubboConfigBean.getClass(), PROPERTY_NAME);\n-\n-        if (propertyDescriptor != null) { // \"name\" property is present\n-\n-            Method getNameMethod = propertyDescriptor.getReadMethod();\n-\n-            if (getNameMethod == null) { // if \"getName\" method is absent\n-                return;\n-            }\n-\n-            Object propertyValue = ReflectionUtils.invokeMethod(getNameMethod, dubboConfigBean);\n-\n-            if (propertyValue != null) { // If The return value of \"getName\" method is not null\n-                return;\n-            }\n-\n-            Method setNameMethod = propertyDescriptor.getWriteMethod();\n-            if (setNameMethod != null) { // \"setName\" and \"getName\" methods are present\n-                if (Arrays.equals(of(String.class), setNameMethod.getParameterTypes())) { // the param type is String\n-                    // set bean name to the value of the \"name\" property\n-                    ReflectionUtils.invokeMethod(setNameMethod, dubboConfigBean, beanName);\n-                }\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public int getOrder() {\n-        return HIGHEST_PRECEDENCE;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.context.config;\r\n+\r\n+import org.apache.dubbo.config.AbstractConfig;\r\n+import org.apache.dubbo.config.spring.beans.factory.config.DubboConfigDefaultPropertyValueBeanPostProcessor;\r\n+\r\n+import org.springframework.util.ReflectionUtils;\r\n+\r\n+import java.beans.PropertyDescriptor;\r\n+import java.lang.reflect.Method;\r\n+import java.util.Arrays;\r\n+\r\n+import static com.alibaba.spring.util.ObjectUtils.of;\r\n+import static org.springframework.beans.BeanUtils.getPropertyDescriptor;\r\n+\r\n+/**\r\n+ * {@link DubboConfigBeanCustomizer} for the default value for the \"name\" property that will be taken bean name\r\n+ * if absent.\r\n+ *\r\n+ * @since 2.6.6\r\n+ * @deprecated {@link DubboConfigDefaultPropertyValueBeanPostProcessor} instead\r\n+ */\r\n+@Deprecated\r\n+public class NamePropertyDefaultValueDubboConfigBeanCustomizer implements DubboConfigBeanCustomizer {\r\n+\r\n+    /**\r\n+     * The bean name of {@link NamePropertyDefaultValueDubboConfigBeanCustomizer}\r\n+     *\r\n+     * @since 2.7.1\r\n+     */\r\n+    public static final String BEAN_NAME = \"namePropertyDefaultValueDubboConfigBeanCustomizer\";\r\n+\r\n+    /**\r\n+     * The name of property that is \"name\" maybe is absent in target class\r\n+     */\r\n+    private static final String PROPERTY_NAME = \"name\";\r\n+\r\n+    @Override\r\n+    public void customize(String beanName, AbstractConfig dubboConfigBean) {\r\n+\r\n+        PropertyDescriptor propertyDescriptor = getPropertyDescriptor(dubboConfigBean.getClass(), PROPERTY_NAME);\r\n+\r\n+        if (propertyDescriptor != null) { // \"name\" property is present\r\n+\r\n+            Method getNameMethod = propertyDescriptor.getReadMethod();\r\n+\r\n+            if (getNameMethod == null) { // if \"getName\" method is absent\r\n+                return;\r\n+            }\r\n+\r\n+            Object propertyValue = ReflectionUtils.invokeMethod(getNameMethod, dubboConfigBean);\r\n+\r\n+            if (propertyValue != null) { // If The return value of \"getName\" method is not null\r\n+                return;\r\n+            }\r\n+\r\n+            Method setNameMethod = propertyDescriptor.getWriteMethod();\r\n+            if (setNameMethod != null) { // \"setName\" and \"getName\" methods are present\r\n+                if (Arrays.equals(of(String.class), setNameMethod.getParameterTypes())) { // the param type is String\r\n+                    // set bean name to the value of the \"name\" property\r\n+                    ReflectionUtils.invokeMethod(setNameMethod, dubboConfigBean, beanName);\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getOrder() {\r\n+        return HIGHEST_PRECEDENCE;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/context/event/DubboBootstrapStatedEvent.java", "source2": "org/apache/dubbo/config/spring/context/event/DubboBootstrapStatedEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,50 +1,50 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.context.event;\n-\n-import org.springframework.context.ApplicationEvent;\n-\n-import org.apache.dubbo.config.bootstrap.DubboBootstrap;\n-\n-/**\n- * A {@link org.springframework.context.ApplicationEvent} after {@link org.apache.dubbo.config.bootstrap.DubboBootstrap#start()} success\n- *\n- * @see org.springframework.context.ApplicationEvent\n- * @see org.springframework.context.ApplicationListener\n- * @see org.apache.dubbo.config.bootstrap.DubboBootstrap\n- * @since 2.7.9\n- */\n-public class DubboBootstrapStatedEvent extends ApplicationEvent {\n-\n-    /**\n-     * Create a new ApplicationEvent.\n-     *\n-     * @param bootstrap {@link org.apache.dubbo.config.bootstrap.DubboBootstrap} bootstrap\n-     */\n-    public DubboBootstrapStatedEvent(DubboBootstrap bootstrap) {\n-        super(bootstrap);\n-    }\n-\n-    /**\n-     * Get {@link org.apache.dubbo.config.bootstrap.DubboBootstrap} instance\n-     *\n-     * @return non-null\n-     */\n-    public DubboBootstrap getDubboBootstrap() {\n-        return (DubboBootstrap) super.getSource();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.context.event;\r\n+\r\n+import org.springframework.context.ApplicationEvent;\r\n+\r\n+import org.apache.dubbo.config.bootstrap.DubboBootstrap;\r\n+\r\n+/**\r\n+ * A {@link org.springframework.context.ApplicationEvent} after {@link org.apache.dubbo.config.bootstrap.DubboBootstrap#start()} success\r\n+ *\r\n+ * @see org.springframework.context.ApplicationEvent\r\n+ * @see org.springframework.context.ApplicationListener\r\n+ * @see org.apache.dubbo.config.bootstrap.DubboBootstrap\r\n+ * @since 2.7.9\r\n+ */\r\n+public class DubboBootstrapStatedEvent extends ApplicationEvent {\r\n+\r\n+    /**\r\n+     * Create a new ApplicationEvent.\r\n+     *\r\n+     * @param bootstrap {@link org.apache.dubbo.config.bootstrap.DubboBootstrap} bootstrap\r\n+     */\r\n+    public DubboBootstrapStatedEvent(DubboBootstrap bootstrap) {\r\n+        super(bootstrap);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get {@link org.apache.dubbo.config.bootstrap.DubboBootstrap} instance\r\n+     *\r\n+     * @return non-null\r\n+     */\r\n+    public DubboBootstrap getDubboBootstrap() {\r\n+        return (DubboBootstrap) super.getSource();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/context/event/DubboBootstrapStopedEvent.java", "source2": "org/apache/dubbo/config/spring/context/event/DubboBootstrapStopedEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,50 +1,50 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.context.event;\n-\n-import org.springframework.context.ApplicationEvent;\n-\n-import org.apache.dubbo.config.bootstrap.DubboBootstrap;\n-\n-/**\n- * A {@link org.springframework.context.ApplicationEvent} after {@link org.apache.dubbo.config.bootstrap.DubboBootstrap#stop()} success\n- *\n- * @see org.springframework.context.ApplicationEvent\n- * @see org.springframework.context.ApplicationListener\n- * @see org.apache.dubbo.config.bootstrap.DubboBootstrap\n- * @since 2.7.9\n- */\n-public class DubboBootstrapStopedEvent extends ApplicationEvent {\n-\n-    /**\n-     * Create a new ApplicationEvent.\n-     *\n-     * @param bootstrap {@link org.apache.dubbo.config.bootstrap.DubboBootstrap} bootstrap\n-     */\n-    public DubboBootstrapStopedEvent(DubboBootstrap bootstrap) {\n-        super(bootstrap);\n-    }\n-\n-    /**\n-     * Get {@link org.apache.dubbo.config.bootstrap.DubboBootstrap} instance\n-     *\n-     * @return non-null\n-     */\n-    public DubboBootstrap getDubboBootstrap() {\n-        return (DubboBootstrap) super.getSource();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.context.event;\r\n+\r\n+import org.springframework.context.ApplicationEvent;\r\n+\r\n+import org.apache.dubbo.config.bootstrap.DubboBootstrap;\r\n+\r\n+/**\r\n+ * A {@link org.springframework.context.ApplicationEvent} after {@link org.apache.dubbo.config.bootstrap.DubboBootstrap#stop()} success\r\n+ *\r\n+ * @see org.springframework.context.ApplicationEvent\r\n+ * @see org.springframework.context.ApplicationListener\r\n+ * @see org.apache.dubbo.config.bootstrap.DubboBootstrap\r\n+ * @since 2.7.9\r\n+ */\r\n+public class DubboBootstrapStopedEvent extends ApplicationEvent {\r\n+\r\n+    /**\r\n+     * Create a new ApplicationEvent.\r\n+     *\r\n+     * @param bootstrap {@link org.apache.dubbo.config.bootstrap.DubboBootstrap} bootstrap\r\n+     */\r\n+    public DubboBootstrapStopedEvent(DubboBootstrap bootstrap) {\r\n+        super(bootstrap);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get {@link org.apache.dubbo.config.bootstrap.DubboBootstrap} instance\r\n+     *\r\n+     * @return non-null\r\n+     */\r\n+    public DubboBootstrap getDubboBootstrap() {\r\n+        return (DubboBootstrap) super.getSource();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/context/properties/DefaultDubboConfigBinder.java", "source2": "org/apache/dubbo/config/spring/context/properties/DefaultDubboConfigBinder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,48 +1,48 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.context.properties;\n-\n-import org.apache.dubbo.config.AbstractConfig;\n-\n-import org.springframework.beans.MutablePropertyValues;\n-import org.springframework.validation.DataBinder;\n-\n-import java.util.Map;\n-\n-import static com.alibaba.spring.util.PropertySourcesUtils.getSubProperties;\n-\n-/**\n- * Default {@link DubboConfigBinder} implementation based on Spring {@link DataBinder}\n- */\n-public class DefaultDubboConfigBinder extends AbstractDubboConfigBinder {\n-\n-    @Override\n-    public <C extends AbstractConfig> void bind(String prefix, C dubboConfig) {\n-        DataBinder dataBinder = new DataBinder(dubboConfig);\n-        // Set ignored*\n-        dataBinder.setIgnoreInvalidFields(isIgnoreInvalidFields());\n-        dataBinder.setIgnoreUnknownFields(isIgnoreUnknownFields());\n-        // Get properties under specified prefix from PropertySources\n-        Map<String, Object> properties = getSubProperties(getPropertySources(), prefix);\n-        // Convert Map to MutablePropertyValues\n-        MutablePropertyValues propertyValues = new MutablePropertyValues(properties);\n-        // Bind\n-        dataBinder.bind(propertyValues);\n-    }\n-\n-}\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.context.properties;\r\n+\r\n+import org.apache.dubbo.config.AbstractConfig;\r\n+\r\n+import org.springframework.beans.MutablePropertyValues;\r\n+import org.springframework.validation.DataBinder;\r\n+\r\n+import java.util.Map;\r\n+\r\n+import static com.alibaba.spring.util.PropertySourcesUtils.getSubProperties;\r\n+\r\n+/**\r\n+ * Default {@link DubboConfigBinder} implementation based on Spring {@link DataBinder}\r\n+ */\r\n+public class DefaultDubboConfigBinder extends AbstractDubboConfigBinder {\r\n+\r\n+    @Override\r\n+    public <C extends AbstractConfig> void bind(String prefix, C dubboConfig) {\r\n+        DataBinder dataBinder = new DataBinder(dubboConfig);\r\n+        // Set ignored*\r\n+        dataBinder.setIgnoreInvalidFields(isIgnoreInvalidFields());\r\n+        dataBinder.setIgnoreUnknownFields(isIgnoreUnknownFields());\r\n+        // Get properties under specified prefix from PropertySources\r\n+        Map<String, Object> properties = getSubProperties(getPropertySources(), prefix);\r\n+        // Convert Map to MutablePropertyValues\r\n+        MutablePropertyValues propertyValues = new MutablePropertyValues(properties);\r\n+        // Bind\r\n+        dataBinder.bind(propertyValues);\r\n+    }\r\n+\r\n+}\r\n+\r\n"}, {"source1": "org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java", "source2": "org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,80 +1,80 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.extension;\n-\n-import org.apache.dubbo.common.extension.ExtensionFactory;\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ConcurrentHashSet;\n-import org.springframework.context.ApplicationContext;\n-import org.springframework.context.ConfigurableApplicationContext;\n-\n-import java.util.Set;\n-\n-import static org.apache.dubbo.config.spring.util.DubboBeanUtils.getOptionalBean;\n-\n-/**\n- * SpringExtensionFactory\n- */\n-public class SpringExtensionFactory implements ExtensionFactory {\n-    private static final Logger logger = LoggerFactory.getLogger(SpringExtensionFactory.class);\n-\n-    private static final Set<ApplicationContext> CONTEXTS = new ConcurrentHashSet<ApplicationContext>();\n-\n-    public static void addApplicationContext(ApplicationContext context) {\n-        CONTEXTS.add(context);\n-        if (context instanceof ConfigurableApplicationContext) {\n-            ((ConfigurableApplicationContext) context).registerShutdownHook();\n-        }\n-    }\n-\n-    public static void removeApplicationContext(ApplicationContext context) {\n-        CONTEXTS.remove(context);\n-    }\n-\n-    public static Set<ApplicationContext> getContexts() {\n-        return CONTEXTS;\n-    }\n-\n-    // currently for test purpose\n-    public static void clearContexts() {\n-        CONTEXTS.clear();\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> T getExtension(Class<T> type, String name) {\n-\n-        //SPI should be get from SpiExtensionFactory\n-        if (type.isInterface() && type.isAnnotationPresent(SPI.class)) {\n-            return null;\n-        }\n-\n-        for (ApplicationContext context : CONTEXTS) {\n-            T bean = getOptionalBean(context, name, type);\n-            if (bean != null) {\n-                return bean;\n-            }\n-        }\n-\n-        //logger.warn(\"No spring extension (bean) named:\" + name + \", try to find an extension (bean) of type \" + type.getName());\n-\n-        return null;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.extension;\r\n+\r\n+import org.apache.dubbo.common.extension.ExtensionFactory;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ConcurrentHashSet;\r\n+import org.springframework.context.ApplicationContext;\r\n+import org.springframework.context.ConfigurableApplicationContext;\r\n+\r\n+import java.util.Set;\r\n+\r\n+import static org.apache.dubbo.config.spring.util.DubboBeanUtils.getOptionalBean;\r\n+\r\n+/**\r\n+ * SpringExtensionFactory\r\n+ */\r\n+public class SpringExtensionFactory implements ExtensionFactory {\r\n+    private static final Logger logger = LoggerFactory.getLogger(SpringExtensionFactory.class);\r\n+\r\n+    private static final Set<ApplicationContext> CONTEXTS = new ConcurrentHashSet<ApplicationContext>();\r\n+\r\n+    public static void addApplicationContext(ApplicationContext context) {\r\n+        CONTEXTS.add(context);\r\n+        if (context instanceof ConfigurableApplicationContext) {\r\n+            ((ConfigurableApplicationContext) context).registerShutdownHook();\r\n+        }\r\n+    }\r\n+\r\n+    public static void removeApplicationContext(ApplicationContext context) {\r\n+        CONTEXTS.remove(context);\r\n+    }\r\n+\r\n+    public static Set<ApplicationContext> getContexts() {\r\n+        return CONTEXTS;\r\n+    }\r\n+\r\n+    // currently for test purpose\r\n+    public static void clearContexts() {\r\n+        CONTEXTS.clear();\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> T getExtension(Class<T> type, String name) {\r\n+\r\n+        //SPI should be get from SpiExtensionFactory\r\n+        if (type.isInterface() && type.isAnnotationPresent(SPI.class)) {\r\n+            return null;\r\n+        }\r\n+\r\n+        for (ApplicationContext context : CONTEXTS) {\r\n+            T bean = getOptionalBean(context, name, type);\r\n+            if (bean != null) {\r\n+                return bean;\r\n+            }\r\n+        }\r\n+\r\n+        //logger.warn(\"No spring extension (bean) named:\" + name + \", try to find an extension (bean) of type \" + type.getName());\r\n+\r\n+        return null;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/schema/AnnotationBeanDefinitionParser.java", "source2": "org/apache/dubbo/config/spring/schema/AnnotationBeanDefinitionParser.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,79 +1,79 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.schema;\n-\n-import org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor;\n-import org.apache.dubbo.config.spring.beans.factory.annotation.ServiceAnnotationBeanPostProcessor;\n-\n-import org.springframework.beans.factory.config.BeanDefinition;\n-import org.springframework.beans.factory.support.BeanDefinitionBuilder;\n-import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;\n-import org.springframework.beans.factory.xml.ParserContext;\n-import org.w3c.dom.Element;\n-\n-import static org.springframework.util.StringUtils.commaDelimitedListToStringArray;\n-import static org.springframework.util.StringUtils.trimArrayElements;\n-\n-/**\n- * @link BeanDefinitionParser}\n- * @see ServiceAnnotationBeanPostProcessor\n- * @see ReferenceAnnotationBeanPostProcessor\n- * @since 2.5.9\n- */\n-public class AnnotationBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {\n-\n-    /**\n-     * parse\n-     * <prev>\n-     * &lt;dubbo:annotation package=\"\" /&gt;\n-     * </prev>\n-     *\n-     * @param element\n-     * @param parserContext\n-     * @param builder\n-     */\n-    @Override\n-    protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {\n-\n-        String packageToScan = element.getAttribute(\"package\");\n-\n-        String[] packagesToScan = trimArrayElements(commaDelimitedListToStringArray(packageToScan));\n-\n-        builder.addConstructorArgValue(packagesToScan);\n-\n-        builder.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);\n-\n-        /**\n-         * @since 2.7.6 Register the common beans\n-         * @since 2.7.8 comment this code line, and migrated to\n-         * @see DubboNamespaceHandler#parse(Element, ParserContext)\n-         * @see https://github.com/apache/dubbo/issues/6174\n-         */\n-        // registerCommonBeans(parserContext.getRegistry());\n-    }\n-\n-    @Override\n-    protected boolean shouldGenerateIdAsFallback() {\n-        return true;\n-    }\n-\n-    @Override\n-    protected Class<?> getBeanClass(Element element) {\n-        return ServiceAnnotationBeanPostProcessor.class;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.schema;\r\n+\r\n+import org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor;\r\n+import org.apache.dubbo.config.spring.beans.factory.annotation.ServiceAnnotationBeanPostProcessor;\r\n+\r\n+import org.springframework.beans.factory.config.BeanDefinition;\r\n+import org.springframework.beans.factory.support.BeanDefinitionBuilder;\r\n+import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;\r\n+import org.springframework.beans.factory.xml.ParserContext;\r\n+import org.w3c.dom.Element;\r\n+\r\n+import static org.springframework.util.StringUtils.commaDelimitedListToStringArray;\r\n+import static org.springframework.util.StringUtils.trimArrayElements;\r\n+\r\n+/**\r\n+ * @link BeanDefinitionParser}\r\n+ * @see ServiceAnnotationBeanPostProcessor\r\n+ * @see ReferenceAnnotationBeanPostProcessor\r\n+ * @since 2.5.9\r\n+ */\r\n+public class AnnotationBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {\r\n+\r\n+    /**\r\n+     * parse\r\n+     * <prev>\r\n+     * &lt;dubbo:annotation package=\"\" /&gt;\r\n+     * </prev>\r\n+     *\r\n+     * @param element\r\n+     * @param parserContext\r\n+     * @param builder\r\n+     */\r\n+    @Override\r\n+    protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {\r\n+\r\n+        String packageToScan = element.getAttribute(\"package\");\r\n+\r\n+        String[] packagesToScan = trimArrayElements(commaDelimitedListToStringArray(packageToScan));\r\n+\r\n+        builder.addConstructorArgValue(packagesToScan);\r\n+\r\n+        builder.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);\r\n+\r\n+        /**\r\n+         * @since 2.7.6 Register the common beans\r\n+         * @since 2.7.8 comment this code line, and migrated to\r\n+         * @see DubboNamespaceHandler#parse(Element, ParserContext)\r\n+         * @see https://github.com/apache/dubbo/issues/6174\r\n+         */\r\n+        // registerCommonBeans(parserContext.getRegistry());\r\n+    }\r\n+\r\n+    @Override\r\n+    protected boolean shouldGenerateIdAsFallback() {\r\n+        return true;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Class<?> getBeanClass(Element element) {\r\n+        return ServiceAnnotationBeanPostProcessor.class;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/schema/DubboBeanDefinitionParser.java", "source2": "org/apache/dubbo/config/spring/schema/DubboBeanDefinitionParser.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,422 +1,422 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.schema;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.AbstractServiceConfig;\n-import org.apache.dubbo.config.ArgumentConfig;\n-import org.apache.dubbo.config.ConsumerConfig;\n-import org.apache.dubbo.config.MethodConfig;\n-import org.apache.dubbo.config.ProtocolConfig;\n-import org.apache.dubbo.config.ProviderConfig;\n-import org.apache.dubbo.config.RegistryConfig;\n-import org.apache.dubbo.config.spring.ReferenceBean;\n-import org.apache.dubbo.config.spring.ServiceBean;\n-\n-import org.springframework.beans.PropertyValue;\n-import org.springframework.beans.factory.config.BeanDefinition;\n-import org.springframework.beans.factory.config.BeanDefinitionHolder;\n-import org.springframework.beans.factory.config.RuntimeBeanReference;\n-import org.springframework.beans.factory.config.TypedStringValue;\n-import org.springframework.beans.factory.support.AbstractBeanDefinition;\n-import org.springframework.beans.factory.support.ManagedList;\n-import org.springframework.beans.factory.support.ManagedMap;\n-import org.springframework.beans.factory.support.RootBeanDefinition;\n-import org.springframework.beans.factory.xml.BeanDefinitionParser;\n-import org.springframework.beans.factory.xml.ParserContext;\n-import org.springframework.core.env.Environment;\n-import org.w3c.dom.Element;\n-import org.w3c.dom.NamedNodeMap;\n-import org.w3c.dom.Node;\n-import org.w3c.dom.NodeList;\n-\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Modifier;\n-import java.util.Date;\n-import java.util.HashSet;\n-import java.util.Set;\n-import java.util.regex.Pattern;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.HIDDEN_KEY_PREFIX;\n-\n-/**\n- * AbstractBeanDefinitionParser\n- *\n- * @export\n- */\n-public class DubboBeanDefinitionParser implements BeanDefinitionParser {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(DubboBeanDefinitionParser.class);\n-    private static final Pattern GROUP_AND_VERSION = Pattern.compile(\"^[\\\\-.0-9_a-zA-Z]+(\\\\:[\\\\-.0-9_a-zA-Z]+)?$\");\n-    private static final String ONRETURN = \"onreturn\";\n-    private static final String ONTHROW = \"onthrow\";\n-    private static final String ONINVOKE = \"oninvoke\";\n-    private static final String METHOD = \"Method\";\n-    private final Class<?> beanClass;\n-    private final boolean required;\n-\n-    public DubboBeanDefinitionParser(Class<?> beanClass, boolean required) {\n-        this.beanClass = beanClass;\n-        this.required = required;\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    private static RootBeanDefinition parse(Element element, ParserContext parserContext, Class<?> beanClass, boolean required) {\n-        RootBeanDefinition beanDefinition = new RootBeanDefinition();\n-        beanDefinition.setBeanClass(beanClass);\n-        beanDefinition.setLazyInit(false);\n-        String id = resolveAttribute(element, \"id\", parserContext);\n-        if (StringUtils.isEmpty(id) && required) {\n-            String generatedBeanName = resolveAttribute(element, \"name\", parserContext);\n-            if (StringUtils.isEmpty(generatedBeanName)) {\n-                if (ProtocolConfig.class.equals(beanClass)) {\n-                    generatedBeanName = \"dubbo\";\n-                } else {\n-                    generatedBeanName = resolveAttribute(element, \"interface\", parserContext);\n-                }\n-            }\n-            if (StringUtils.isEmpty(generatedBeanName)) {\n-                generatedBeanName = beanClass.getName();\n-            }\n-            id = generatedBeanName;\n-            int counter = 2;\n-            while (parserContext.getRegistry().containsBeanDefinition(id)) {\n-                id = generatedBeanName + (counter++);\n-            }\n-        }\n-        if (StringUtils.isNotEmpty(id)) {\n-            if (parserContext.getRegistry().containsBeanDefinition(id)) {\n-                throw new IllegalStateException(\"Duplicate spring bean id \" + id);\n-            }\n-            parserContext.getRegistry().registerBeanDefinition(id, beanDefinition);\n-            beanDefinition.getPropertyValues().addPropertyValue(\"id\", id);\n-        }\n-        if (ProtocolConfig.class.equals(beanClass)) {\n-            for (String name : parserContext.getRegistry().getBeanDefinitionNames()) {\n-                BeanDefinition definition = parserContext.getRegistry().getBeanDefinition(name);\n-                PropertyValue property = definition.getPropertyValues().getPropertyValue(\"protocol\");\n-                if (property != null) {\n-                    Object value = property.getValue();\n-                    if (value instanceof ProtocolConfig && id.equals(((ProtocolConfig) value).getName())) {\n-                        definition.getPropertyValues().addPropertyValue(\"protocol\", new RuntimeBeanReference(id));\n-                    }\n-                }\n-            }\n-        } else if (ServiceBean.class.equals(beanClass)) {\n-            String className = resolveAttribute(element, \"class\", parserContext);\n-            if (StringUtils.isNotEmpty(className)) {\n-                RootBeanDefinition classDefinition = new RootBeanDefinition();\n-                classDefinition.setBeanClass(ReflectUtils.forName(className));\n-                classDefinition.setLazyInit(false);\n-                parseProperties(element.getChildNodes(), classDefinition, parserContext);\n-                beanDefinition.getPropertyValues().addPropertyValue(\"ref\", new BeanDefinitionHolder(classDefinition, id + \"Impl\"));\n-            }\n-        } else if (ProviderConfig.class.equals(beanClass)) {\n-            parseNested(element, parserContext, ServiceBean.class, true, \"service\", \"provider\", id, beanDefinition);\n-        } else if (ConsumerConfig.class.equals(beanClass)) {\n-            parseNested(element, parserContext, ReferenceBean.class, false, \"reference\", \"consumer\", id, beanDefinition);\n-        }\n-        Set<String> props = new HashSet<>();\n-        ManagedMap parameters = null;\n-        for (Method setter : beanClass.getMethods()) {\n-            String name = setter.getName();\n-            if (name.length() > 3 && name.startsWith(\"set\")\n-                    && Modifier.isPublic(setter.getModifiers())\n-                    && setter.getParameterTypes().length == 1) {\n-                Class<?> type = setter.getParameterTypes()[0];\n-                String beanProperty = name.substring(3, 4).toLowerCase() + name.substring(4);\n-                String property = StringUtils.camelToSplitName(beanProperty, \"-\");\n-                props.add(property);\n-                // check the setter/getter whether match\n-                Method getter = null;\n-                try {\n-                    getter = beanClass.getMethod(\"get\" + name.substring(3), new Class<?>[0]);\n-                } catch (NoSuchMethodException e) {\n-                    try {\n-                        getter = beanClass.getMethod(\"is\" + name.substring(3), new Class<?>[0]);\n-                    } catch (NoSuchMethodException e2) {\n-                        // ignore, there is no need any log here since some class implement the interface: EnvironmentAware,\n-                        // ApplicationAware, etc. They only have setter method, otherwise will cause the error log during application start up.\n-                    }\n-                }\n-                if (getter == null\n-                        || !Modifier.isPublic(getter.getModifiers())\n-                        || !type.equals(getter.getReturnType())) {\n-                    continue;\n-                }\n-                if (\"parameters\".equals(property)) {\n-                    parameters = parseParameters(element.getChildNodes(), beanDefinition, parserContext);\n-                } else if (\"methods\".equals(property)) {\n-                    parseMethods(id, element.getChildNodes(), beanDefinition, parserContext);\n-                } else if (\"arguments\".equals(property)) {\n-                    parseArguments(id, element.getChildNodes(), beanDefinition, parserContext);\n-                } else {\n-                    String value = resolveAttribute(element, property, parserContext);\n-                    if (value != null) {\n-                        value = value.trim();\n-                        if (value.length() > 0) {\n-                            if (\"registry\".equals(property) && RegistryConfig.NO_AVAILABLE.equalsIgnoreCase(value)) {\n-                                RegistryConfig registryConfig = new RegistryConfig();\n-                                registryConfig.setAddress(RegistryConfig.NO_AVAILABLE);\n-                                beanDefinition.getPropertyValues().addPropertyValue(beanProperty, registryConfig);\n-                            } else if (\"provider\".equals(property) || \"registry\".equals(property) || (\"protocol\".equals(property) && AbstractServiceConfig.class.isAssignableFrom(beanClass))) {\n-                                /**\n-                                 * For 'provider' 'protocol' 'registry', keep literal value (should be id/name) and set the value to 'registryIds' 'providerIds' protocolIds'\n-                                 * The following process should make sure each id refers to the corresponding instance, here's how to find the instance for different use cases:\n-                                 * 1. Spring, check existing bean by id, see{@link ServiceBean#afterPropertiesSet()}; then try to use id to find configs defined in remote Config Center\n-                                 * 2. API, directly use id to find configs defined in remote Config Center; if all config instances are defined locally, please use {@link ServiceConfig#setRegistries(List)}\n-                                 */\n-                                beanDefinition.getPropertyValues().addPropertyValue(beanProperty + \"Ids\", value);\n-                            } else {\n-                                Object reference;\n-                                if (isPrimitive(type)) {\n-                                    if (\"async\".equals(property) && \"false\".equals(value)\n-                                            || \"timeout\".equals(property) && \"0\".equals(value)\n-                                            || \"delay\".equals(property) && \"0\".equals(value)\n-                                            || \"version\".equals(property) && \"0.0.0\".equals(value)\n-                                            || \"stat\".equals(property) && \"-1\".equals(value)\n-                                            || \"reliable\".equals(property) && \"false\".equals(value)) {\n-                                        // backward compatibility for the default value in old version's xsd\n-                                        value = null;\n-                                    }\n-                                    reference = value;\n-                                } else if (ONRETURN.equals(property) || ONTHROW.equals(property) || ONINVOKE.equals(property)) {\n-                                    int index = value.lastIndexOf(\".\");\n-                                    String ref = value.substring(0, index);\n-                                    String method = value.substring(index + 1);\n-                                    reference = new RuntimeBeanReference(ref);\n-                                    beanDefinition.getPropertyValues().addPropertyValue(property + METHOD, method);\n-                                } else {\n-                                    if (\"ref\".equals(property) && parserContext.getRegistry().containsBeanDefinition(value)) {\n-                                        BeanDefinition refBean = parserContext.getRegistry().getBeanDefinition(value);\n-                                        if (!refBean.isSingleton()) {\n-                                            throw new IllegalStateException(\"The exported service ref \" + value + \" must be singleton! Please set the \" + value + \" bean scope to singleton, eg: <bean id=\\\"\" + value + \"\\\" scope=\\\"singleton\\\" ...>\");\n-                                        }\n-                                    }\n-                                    reference = new RuntimeBeanReference(value);\n-                                }\n-                                beanDefinition.getPropertyValues().addPropertyValue(beanProperty, reference);\n-                            }\n-                        }\n-                    }\n-                }\n-            }\n-        }\n-        NamedNodeMap attributes = element.getAttributes();\n-        int len = attributes.getLength();\n-        for (int i = 0; i < len; i++) {\n-            Node node = attributes.item(i);\n-            String name = node.getLocalName();\n-            if (!props.contains(name)) {\n-                if (parameters == null) {\n-                    parameters = new ManagedMap();\n-                }\n-                String value = node.getNodeValue();\n-                parameters.put(name, new TypedStringValue(value, String.class));\n-            }\n-        }\n-        if (parameters != null) {\n-            beanDefinition.getPropertyValues().addPropertyValue(\"parameters\", parameters);\n-        }\n-        return beanDefinition;\n-    }\n-\n-    private static boolean isPrimitive(Class<?> cls) {\n-        return cls.isPrimitive() || cls == Boolean.class || cls == Byte.class\n-                || cls == Character.class || cls == Short.class || cls == Integer.class\n-                || cls == Long.class || cls == Float.class || cls == Double.class\n-                || cls == String.class || cls == Date.class || cls == Class.class;\n-    }\n-\n-    private static void parseNested(Element element, ParserContext parserContext, Class<?> beanClass, boolean required, String tag, String property, String ref, BeanDefinition beanDefinition) {\n-        NodeList nodeList = element.getChildNodes();\n-        if (nodeList == null) {\n-            return;\n-        }\n-        boolean first = true;\n-        for (int i = 0; i < nodeList.getLength(); i++) {\n-            Node node = nodeList.item(i);\n-            if (!(node instanceof Element)) {\n-                continue;\n-            }\n-            if (tag.equals(node.getNodeName())\n-                    || tag.equals(node.getLocalName())) {\n-                if (first) {\n-                    first = false;\n-                    String isDefault = resolveAttribute(element, \"default\", parserContext);\n-                    if (StringUtils.isEmpty(isDefault)) {\n-                        beanDefinition.getPropertyValues().addPropertyValue(\"default\", \"false\");\n-                    }\n-                }\n-                BeanDefinition subDefinition = parse((Element) node, parserContext, beanClass, required);\n-                if (subDefinition != null && StringUtils.isNotEmpty(ref)) {\n-                    subDefinition.getPropertyValues().addPropertyValue(property, new RuntimeBeanReference(ref));\n-                }\n-            }\n-        }\n-    }\n-\n-    private static void parseProperties(NodeList nodeList, RootBeanDefinition beanDefinition, ParserContext parserContext) {\n-        if (nodeList == null) {\n-            return;\n-        }\n-        for (int i = 0; i < nodeList.getLength(); i++) {\n-            if (!(nodeList.item(i) instanceof Element)) {\n-                continue;\n-            }\n-            Element element = (Element) nodeList.item(i);\n-            if (\"property\".equals(element.getNodeName())\n-                    || \"property\".equals(element.getLocalName())) {\n-                String name = resolveAttribute(element, \"name\", parserContext);\n-                if (StringUtils.isNotEmpty(name)) {\n-                    String value = resolveAttribute(element, \"value\", parserContext);\n-                    String ref = resolveAttribute(element, \"ref\", parserContext);\n-                    if (StringUtils.isNotEmpty(value)) {\n-                        beanDefinition.getPropertyValues().addPropertyValue(name, value);\n-                    } else if (StringUtils.isNotEmpty(ref)) {\n-                        beanDefinition.getPropertyValues().addPropertyValue(name, new RuntimeBeanReference(ref));\n-                    } else {\n-                        throw new UnsupportedOperationException(\"Unsupported <property name=\\\"\" + name + \"\\\"> sub tag, Only supported <property name=\\\"\" + name + \"\\\" ref=\\\"...\\\" /> or <property name=\\\"\" + name + \"\\\" value=\\\"...\\\" />\");\n-                    }\n-                }\n-            }\n-        }\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    private static ManagedMap parseParameters(NodeList nodeList, RootBeanDefinition beanDefinition, ParserContext parserContext) {\n-        if (nodeList == null) {\n-            return null;\n-        }\n-        ManagedMap parameters = null;\n-        for (int i = 0; i < nodeList.getLength(); i++) {\n-            if (!(nodeList.item(i) instanceof Element)) {\n-                continue;\n-            }\n-            Element element = (Element) nodeList.item(i);\n-            if (\"parameter\".equals(element.getNodeName())\n-                    || \"parameter\".equals(element.getLocalName())) {\n-                if (parameters == null) {\n-                    parameters = new ManagedMap();\n-                }\n-                String key = resolveAttribute(element, \"key\", parserContext);\n-                String value = resolveAttribute(element, \"value\", parserContext);\n-                boolean hide = \"true\".equals(resolveAttribute(element, \"hide\", parserContext));\n-                if (hide) {\n-                    key = HIDDEN_KEY_PREFIX + key;\n-                }\n-                parameters.put(key, new TypedStringValue(value, String.class));\n-            }\n-        }\n-        return parameters;\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    private static void parseMethods(String id, NodeList nodeList, RootBeanDefinition beanDefinition,\n-                                     ParserContext parserContext) {\n-        if (nodeList == null) {\n-            return;\n-        }\n-        ManagedList methods = null;\n-        for (int i = 0; i < nodeList.getLength(); i++) {\n-            if (!(nodeList.item(i) instanceof Element)) {\n-                continue;\n-            }\n-            Element element = (Element) nodeList.item(i);\n-            if (\"method\".equals(element.getNodeName()) || \"method\".equals(element.getLocalName())) {\n-                String methodName = resolveAttribute(element, \"name\", parserContext);\n-                if (StringUtils.isEmpty(methodName)) {\n-                    throw new IllegalStateException(\"<dubbo:method> name attribute == null\");\n-                }\n-                if (methods == null) {\n-                    methods = new ManagedList();\n-                }\n-                RootBeanDefinition methodBeanDefinition = parse(element,\n-                        parserContext, MethodConfig.class, false);\n-                String beanName = id + \".\" + methodName;\n-\n-                // If the PropertyValue named \"id\" can't be found,\n-                // bean name will be taken as the \"id\" PropertyValue for MethodConfig\n-                if (!hasPropertyValue(methodBeanDefinition, \"id\")) {\n-                    addPropertyValue(methodBeanDefinition, \"id\", beanName);\n-                }\n-\n-                BeanDefinitionHolder methodBeanDefinitionHolder = new BeanDefinitionHolder(\n-                        methodBeanDefinition, beanName);\n-                methods.add(methodBeanDefinitionHolder);\n-            }\n-        }\n-        if (methods != null) {\n-            beanDefinition.getPropertyValues().addPropertyValue(\"methods\", methods);\n-        }\n-    }\n-\n-    private static boolean hasPropertyValue(AbstractBeanDefinition beanDefinition, String propertyName) {\n-        return beanDefinition.getPropertyValues().contains(propertyName);\n-    }\n-\n-    private static void addPropertyValue(AbstractBeanDefinition beanDefinition, String propertyName, String propertyValue) {\n-        if (StringUtils.isBlank(propertyName) || StringUtils.isBlank(propertyValue)) {\n-            return;\n-        }\n-        beanDefinition.getPropertyValues().addPropertyValue(propertyName, propertyValue);\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    private static void parseArguments(String id, NodeList nodeList, RootBeanDefinition beanDefinition,\n-                                       ParserContext parserContext) {\n-        if (nodeList == null) {\n-            return;\n-        }\n-        ManagedList arguments = null;\n-        for (int i = 0; i < nodeList.getLength(); i++) {\n-            if (!(nodeList.item(i) instanceof Element)) {\n-                continue;\n-            }\n-            Element element = (Element) nodeList.item(i);\n-            if (\"argument\".equals(element.getNodeName()) || \"argument\".equals(element.getLocalName())) {\n-                String argumentIndex = resolveAttribute(element, \"index\", parserContext);\n-                if (arguments == null) {\n-                    arguments = new ManagedList();\n-                }\n-                BeanDefinition argumentBeanDefinition = parse(element,\n-                        parserContext, ArgumentConfig.class, false);\n-                String name = id + \".\" + argumentIndex;\n-                BeanDefinitionHolder argumentBeanDefinitionHolder = new BeanDefinitionHolder(\n-                        argumentBeanDefinition, name);\n-                arguments.add(argumentBeanDefinitionHolder);\n-            }\n-        }\n-        if (arguments != null) {\n-            beanDefinition.getPropertyValues().addPropertyValue(\"arguments\", arguments);\n-        }\n-    }\n-\n-    @Override\n-    public BeanDefinition parse(Element element, ParserContext parserContext) {\n-        return parse(element, parserContext, beanClass, required);\n-    }\n-\n-    private static String resolveAttribute(Element element, String attributeName, ParserContext parserContext) {\n-        String attributeValue = element.getAttribute(attributeName);\n-        Environment environment = parserContext.getReaderContext().getEnvironment();\n-        return environment.resolvePlaceholders(attributeValue);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.schema;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.AbstractServiceConfig;\r\n+import org.apache.dubbo.config.ArgumentConfig;\r\n+import org.apache.dubbo.config.ConsumerConfig;\r\n+import org.apache.dubbo.config.MethodConfig;\r\n+import org.apache.dubbo.config.ProtocolConfig;\r\n+import org.apache.dubbo.config.ProviderConfig;\r\n+import org.apache.dubbo.config.RegistryConfig;\r\n+import org.apache.dubbo.config.spring.ReferenceBean;\r\n+import org.apache.dubbo.config.spring.ServiceBean;\r\n+\r\n+import org.springframework.beans.PropertyValue;\r\n+import org.springframework.beans.factory.config.BeanDefinition;\r\n+import org.springframework.beans.factory.config.BeanDefinitionHolder;\r\n+import org.springframework.beans.factory.config.RuntimeBeanReference;\r\n+import org.springframework.beans.factory.config.TypedStringValue;\r\n+import org.springframework.beans.factory.support.AbstractBeanDefinition;\r\n+import org.springframework.beans.factory.support.ManagedList;\r\n+import org.springframework.beans.factory.support.ManagedMap;\r\n+import org.springframework.beans.factory.support.RootBeanDefinition;\r\n+import org.springframework.beans.factory.xml.BeanDefinitionParser;\r\n+import org.springframework.beans.factory.xml.ParserContext;\r\n+import org.springframework.core.env.Environment;\r\n+import org.w3c.dom.Element;\r\n+import org.w3c.dom.NamedNodeMap;\r\n+import org.w3c.dom.Node;\r\n+import org.w3c.dom.NodeList;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Modifier;\r\n+import java.util.Date;\r\n+import java.util.HashSet;\r\n+import java.util.Set;\r\n+import java.util.regex.Pattern;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.HIDDEN_KEY_PREFIX;\r\n+\r\n+/**\r\n+ * AbstractBeanDefinitionParser\r\n+ *\r\n+ * @export\r\n+ */\r\n+public class DubboBeanDefinitionParser implements BeanDefinitionParser {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(DubboBeanDefinitionParser.class);\r\n+    private static final Pattern GROUP_AND_VERSION = Pattern.compile(\"^[\\\\-.0-9_a-zA-Z]+(\\\\:[\\\\-.0-9_a-zA-Z]+)?$\");\r\n+    private static final String ONRETURN = \"onreturn\";\r\n+    private static final String ONTHROW = \"onthrow\";\r\n+    private static final String ONINVOKE = \"oninvoke\";\r\n+    private static final String METHOD = \"Method\";\r\n+    private final Class<?> beanClass;\r\n+    private final boolean required;\r\n+\r\n+    public DubboBeanDefinitionParser(Class<?> beanClass, boolean required) {\r\n+        this.beanClass = beanClass;\r\n+        this.required = required;\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    private static RootBeanDefinition parse(Element element, ParserContext parserContext, Class<?> beanClass, boolean required) {\r\n+        RootBeanDefinition beanDefinition = new RootBeanDefinition();\r\n+        beanDefinition.setBeanClass(beanClass);\r\n+        beanDefinition.setLazyInit(false);\r\n+        String id = resolveAttribute(element, \"id\", parserContext);\r\n+        if (StringUtils.isEmpty(id) && required) {\r\n+            String generatedBeanName = resolveAttribute(element, \"name\", parserContext);\r\n+            if (StringUtils.isEmpty(generatedBeanName)) {\r\n+                if (ProtocolConfig.class.equals(beanClass)) {\r\n+                    generatedBeanName = \"dubbo\";\r\n+                } else {\r\n+                    generatedBeanName = resolveAttribute(element, \"interface\", parserContext);\r\n+                }\r\n+            }\r\n+            if (StringUtils.isEmpty(generatedBeanName)) {\r\n+                generatedBeanName = beanClass.getName();\r\n+            }\r\n+            id = generatedBeanName;\r\n+            int counter = 2;\r\n+            while (parserContext.getRegistry().containsBeanDefinition(id)) {\r\n+                id = generatedBeanName + (counter++);\r\n+            }\r\n+        }\r\n+        if (StringUtils.isNotEmpty(id)) {\r\n+            if (parserContext.getRegistry().containsBeanDefinition(id)) {\r\n+                throw new IllegalStateException(\"Duplicate spring bean id \" + id);\r\n+            }\r\n+            parserContext.getRegistry().registerBeanDefinition(id, beanDefinition);\r\n+            beanDefinition.getPropertyValues().addPropertyValue(\"id\", id);\r\n+        }\r\n+        if (ProtocolConfig.class.equals(beanClass)) {\r\n+            for (String name : parserContext.getRegistry().getBeanDefinitionNames()) {\r\n+                BeanDefinition definition = parserContext.getRegistry().getBeanDefinition(name);\r\n+                PropertyValue property = definition.getPropertyValues().getPropertyValue(\"protocol\");\r\n+                if (property != null) {\r\n+                    Object value = property.getValue();\r\n+                    if (value instanceof ProtocolConfig && id.equals(((ProtocolConfig) value).getName())) {\r\n+                        definition.getPropertyValues().addPropertyValue(\"protocol\", new RuntimeBeanReference(id));\r\n+                    }\r\n+                }\r\n+            }\r\n+        } else if (ServiceBean.class.equals(beanClass)) {\r\n+            String className = resolveAttribute(element, \"class\", parserContext);\r\n+            if (StringUtils.isNotEmpty(className)) {\r\n+                RootBeanDefinition classDefinition = new RootBeanDefinition();\r\n+                classDefinition.setBeanClass(ReflectUtils.forName(className));\r\n+                classDefinition.setLazyInit(false);\r\n+                parseProperties(element.getChildNodes(), classDefinition, parserContext);\r\n+                beanDefinition.getPropertyValues().addPropertyValue(\"ref\", new BeanDefinitionHolder(classDefinition, id + \"Impl\"));\r\n+            }\r\n+        } else if (ProviderConfig.class.equals(beanClass)) {\r\n+            parseNested(element, parserContext, ServiceBean.class, true, \"service\", \"provider\", id, beanDefinition);\r\n+        } else if (ConsumerConfig.class.equals(beanClass)) {\r\n+            parseNested(element, parserContext, ReferenceBean.class, false, \"reference\", \"consumer\", id, beanDefinition);\r\n+        }\r\n+        Set<String> props = new HashSet<>();\r\n+        ManagedMap parameters = null;\r\n+        for (Method setter : beanClass.getMethods()) {\r\n+            String name = setter.getName();\r\n+            if (name.length() > 3 && name.startsWith(\"set\")\r\n+                    && Modifier.isPublic(setter.getModifiers())\r\n+                    && setter.getParameterTypes().length == 1) {\r\n+                Class<?> type = setter.getParameterTypes()[0];\r\n+                String beanProperty = name.substring(3, 4).toLowerCase() + name.substring(4);\r\n+                String property = StringUtils.camelToSplitName(beanProperty, \"-\");\r\n+                props.add(property);\r\n+                // check the setter/getter whether match\r\n+                Method getter = null;\r\n+                try {\r\n+                    getter = beanClass.getMethod(\"get\" + name.substring(3), new Class<?>[0]);\r\n+                } catch (NoSuchMethodException e) {\r\n+                    try {\r\n+                        getter = beanClass.getMethod(\"is\" + name.substring(3), new Class<?>[0]);\r\n+                    } catch (NoSuchMethodException e2) {\r\n+                        // ignore, there is no need any log here since some class implement the interface: EnvironmentAware,\r\n+                        // ApplicationAware, etc. They only have setter method, otherwise will cause the error log during application start up.\r\n+                    }\r\n+                }\r\n+                if (getter == null\r\n+                        || !Modifier.isPublic(getter.getModifiers())\r\n+                        || !type.equals(getter.getReturnType())) {\r\n+                    continue;\r\n+                }\r\n+                if (\"parameters\".equals(property)) {\r\n+                    parameters = parseParameters(element.getChildNodes(), beanDefinition, parserContext);\r\n+                } else if (\"methods\".equals(property)) {\r\n+                    parseMethods(id, element.getChildNodes(), beanDefinition, parserContext);\r\n+                } else if (\"arguments\".equals(property)) {\r\n+                    parseArguments(id, element.getChildNodes(), beanDefinition, parserContext);\r\n+                } else {\r\n+                    String value = resolveAttribute(element, property, parserContext);\r\n+                    if (value != null) {\r\n+                        value = value.trim();\r\n+                        if (value.length() > 0) {\r\n+                            if (\"registry\".equals(property) && RegistryConfig.NO_AVAILABLE.equalsIgnoreCase(value)) {\r\n+                                RegistryConfig registryConfig = new RegistryConfig();\r\n+                                registryConfig.setAddress(RegistryConfig.NO_AVAILABLE);\r\n+                                beanDefinition.getPropertyValues().addPropertyValue(beanProperty, registryConfig);\r\n+                            } else if (\"provider\".equals(property) || \"registry\".equals(property) || (\"protocol\".equals(property) && AbstractServiceConfig.class.isAssignableFrom(beanClass))) {\r\n+                                /**\r\n+                                 * For 'provider' 'protocol' 'registry', keep literal value (should be id/name) and set the value to 'registryIds' 'providerIds' protocolIds'\r\n+                                 * The following process should make sure each id refers to the corresponding instance, here's how to find the instance for different use cases:\r\n+                                 * 1. Spring, check existing bean by id, see{@link ServiceBean#afterPropertiesSet()}; then try to use id to find configs defined in remote Config Center\r\n+                                 * 2. API, directly use id to find configs defined in remote Config Center; if all config instances are defined locally, please use {@link ServiceConfig#setRegistries(List)}\r\n+                                 */\r\n+                                beanDefinition.getPropertyValues().addPropertyValue(beanProperty + \"Ids\", value);\r\n+                            } else {\r\n+                                Object reference;\r\n+                                if (isPrimitive(type)) {\r\n+                                    if (\"async\".equals(property) && \"false\".equals(value)\r\n+                                            || \"timeout\".equals(property) && \"0\".equals(value)\r\n+                                            || \"delay\".equals(property) && \"0\".equals(value)\r\n+                                            || \"version\".equals(property) && \"0.0.0\".equals(value)\r\n+                                            || \"stat\".equals(property) && \"-1\".equals(value)\r\n+                                            || \"reliable\".equals(property) && \"false\".equals(value)) {\r\n+                                        // backward compatibility for the default value in old version's xsd\r\n+                                        value = null;\r\n+                                    }\r\n+                                    reference = value;\r\n+                                } else if (ONRETURN.equals(property) || ONTHROW.equals(property) || ONINVOKE.equals(property)) {\r\n+                                    int index = value.lastIndexOf(\".\");\r\n+                                    String ref = value.substring(0, index);\r\n+                                    String method = value.substring(index + 1);\r\n+                                    reference = new RuntimeBeanReference(ref);\r\n+                                    beanDefinition.getPropertyValues().addPropertyValue(property + METHOD, method);\r\n+                                } else {\r\n+                                    if (\"ref\".equals(property) && parserContext.getRegistry().containsBeanDefinition(value)) {\r\n+                                        BeanDefinition refBean = parserContext.getRegistry().getBeanDefinition(value);\r\n+                                        if (!refBean.isSingleton()) {\r\n+                                            throw new IllegalStateException(\"The exported service ref \" + value + \" must be singleton! Please set the \" + value + \" bean scope to singleton, eg: <bean id=\\\"\" + value + \"\\\" scope=\\\"singleton\\\" ...>\");\r\n+                                        }\r\n+                                    }\r\n+                                    reference = new RuntimeBeanReference(value);\r\n+                                }\r\n+                                beanDefinition.getPropertyValues().addPropertyValue(beanProperty, reference);\r\n+                            }\r\n+                        }\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+        NamedNodeMap attributes = element.getAttributes();\r\n+        int len = attributes.getLength();\r\n+        for (int i = 0; i < len; i++) {\r\n+            Node node = attributes.item(i);\r\n+            String name = node.getLocalName();\r\n+            if (!props.contains(name)) {\r\n+                if (parameters == null) {\r\n+                    parameters = new ManagedMap();\r\n+                }\r\n+                String value = node.getNodeValue();\r\n+                parameters.put(name, new TypedStringValue(value, String.class));\r\n+            }\r\n+        }\r\n+        if (parameters != null) {\r\n+            beanDefinition.getPropertyValues().addPropertyValue(\"parameters\", parameters);\r\n+        }\r\n+        return beanDefinition;\r\n+    }\r\n+\r\n+    private static boolean isPrimitive(Class<?> cls) {\r\n+        return cls.isPrimitive() || cls == Boolean.class || cls == Byte.class\r\n+                || cls == Character.class || cls == Short.class || cls == Integer.class\r\n+                || cls == Long.class || cls == Float.class || cls == Double.class\r\n+                || cls == String.class || cls == Date.class || cls == Class.class;\r\n+    }\r\n+\r\n+    private static void parseNested(Element element, ParserContext parserContext, Class<?> beanClass, boolean required, String tag, String property, String ref, BeanDefinition beanDefinition) {\r\n+        NodeList nodeList = element.getChildNodes();\r\n+        if (nodeList == null) {\r\n+            return;\r\n+        }\r\n+        boolean first = true;\r\n+        for (int i = 0; i < nodeList.getLength(); i++) {\r\n+            Node node = nodeList.item(i);\r\n+            if (!(node instanceof Element)) {\r\n+                continue;\r\n+            }\r\n+            if (tag.equals(node.getNodeName())\r\n+                    || tag.equals(node.getLocalName())) {\r\n+                if (first) {\r\n+                    first = false;\r\n+                    String isDefault = resolveAttribute(element, \"default\", parserContext);\r\n+                    if (StringUtils.isEmpty(isDefault)) {\r\n+                        beanDefinition.getPropertyValues().addPropertyValue(\"default\", \"false\");\r\n+                    }\r\n+                }\r\n+                BeanDefinition subDefinition = parse((Element) node, parserContext, beanClass, required);\r\n+                if (subDefinition != null && StringUtils.isNotEmpty(ref)) {\r\n+                    subDefinition.getPropertyValues().addPropertyValue(property, new RuntimeBeanReference(ref));\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private static void parseProperties(NodeList nodeList, RootBeanDefinition beanDefinition, ParserContext parserContext) {\r\n+        if (nodeList == null) {\r\n+            return;\r\n+        }\r\n+        for (int i = 0; i < nodeList.getLength(); i++) {\r\n+            if (!(nodeList.item(i) instanceof Element)) {\r\n+                continue;\r\n+            }\r\n+            Element element = (Element) nodeList.item(i);\r\n+            if (\"property\".equals(element.getNodeName())\r\n+                    || \"property\".equals(element.getLocalName())) {\r\n+                String name = resolveAttribute(element, \"name\", parserContext);\r\n+                if (StringUtils.isNotEmpty(name)) {\r\n+                    String value = resolveAttribute(element, \"value\", parserContext);\r\n+                    String ref = resolveAttribute(element, \"ref\", parserContext);\r\n+                    if (StringUtils.isNotEmpty(value)) {\r\n+                        beanDefinition.getPropertyValues().addPropertyValue(name, value);\r\n+                    } else if (StringUtils.isNotEmpty(ref)) {\r\n+                        beanDefinition.getPropertyValues().addPropertyValue(name, new RuntimeBeanReference(ref));\r\n+                    } else {\r\n+                        throw new UnsupportedOperationException(\"Unsupported <property name=\\\"\" + name + \"\\\"> sub tag, Only supported <property name=\\\"\" + name + \"\\\" ref=\\\"...\\\" /> or <property name=\\\"\" + name + \"\\\" value=\\\"...\\\" />\");\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    private static ManagedMap parseParameters(NodeList nodeList, RootBeanDefinition beanDefinition, ParserContext parserContext) {\r\n+        if (nodeList == null) {\r\n+            return null;\r\n+        }\r\n+        ManagedMap parameters = null;\r\n+        for (int i = 0; i < nodeList.getLength(); i++) {\r\n+            if (!(nodeList.item(i) instanceof Element)) {\r\n+                continue;\r\n+            }\r\n+            Element element = (Element) nodeList.item(i);\r\n+            if (\"parameter\".equals(element.getNodeName())\r\n+                    || \"parameter\".equals(element.getLocalName())) {\r\n+                if (parameters == null) {\r\n+                    parameters = new ManagedMap();\r\n+                }\r\n+                String key = resolveAttribute(element, \"key\", parserContext);\r\n+                String value = resolveAttribute(element, \"value\", parserContext);\r\n+                boolean hide = \"true\".equals(resolveAttribute(element, \"hide\", parserContext));\r\n+                if (hide) {\r\n+                    key = HIDDEN_KEY_PREFIX + key;\r\n+                }\r\n+                parameters.put(key, new TypedStringValue(value, String.class));\r\n+            }\r\n+        }\r\n+        return parameters;\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    private static void parseMethods(String id, NodeList nodeList, RootBeanDefinition beanDefinition,\r\n+                                     ParserContext parserContext) {\r\n+        if (nodeList == null) {\r\n+            return;\r\n+        }\r\n+        ManagedList methods = null;\r\n+        for (int i = 0; i < nodeList.getLength(); i++) {\r\n+            if (!(nodeList.item(i) instanceof Element)) {\r\n+                continue;\r\n+            }\r\n+            Element element = (Element) nodeList.item(i);\r\n+            if (\"method\".equals(element.getNodeName()) || \"method\".equals(element.getLocalName())) {\r\n+                String methodName = resolveAttribute(element, \"name\", parserContext);\r\n+                if (StringUtils.isEmpty(methodName)) {\r\n+                    throw new IllegalStateException(\"<dubbo:method> name attribute == null\");\r\n+                }\r\n+                if (methods == null) {\r\n+                    methods = new ManagedList();\r\n+                }\r\n+                RootBeanDefinition methodBeanDefinition = parse(element,\r\n+                        parserContext, MethodConfig.class, false);\r\n+                String beanName = id + \".\" + methodName;\r\n+\r\n+                // If the PropertyValue named \"id\" can't be found,\r\n+                // bean name will be taken as the \"id\" PropertyValue for MethodConfig\r\n+                if (!hasPropertyValue(methodBeanDefinition, \"id\")) {\r\n+                    addPropertyValue(methodBeanDefinition, \"id\", beanName);\r\n+                }\r\n+\r\n+                BeanDefinitionHolder methodBeanDefinitionHolder = new BeanDefinitionHolder(\r\n+                        methodBeanDefinition, beanName);\r\n+                methods.add(methodBeanDefinitionHolder);\r\n+            }\r\n+        }\r\n+        if (methods != null) {\r\n+            beanDefinition.getPropertyValues().addPropertyValue(\"methods\", methods);\r\n+        }\r\n+    }\r\n+\r\n+    private static boolean hasPropertyValue(AbstractBeanDefinition beanDefinition, String propertyName) {\r\n+        return beanDefinition.getPropertyValues().contains(propertyName);\r\n+    }\r\n+\r\n+    private static void addPropertyValue(AbstractBeanDefinition beanDefinition, String propertyName, String propertyValue) {\r\n+        if (StringUtils.isBlank(propertyName) || StringUtils.isBlank(propertyValue)) {\r\n+            return;\r\n+        }\r\n+        beanDefinition.getPropertyValues().addPropertyValue(propertyName, propertyValue);\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    private static void parseArguments(String id, NodeList nodeList, RootBeanDefinition beanDefinition,\r\n+                                       ParserContext parserContext) {\r\n+        if (nodeList == null) {\r\n+            return;\r\n+        }\r\n+        ManagedList arguments = null;\r\n+        for (int i = 0; i < nodeList.getLength(); i++) {\r\n+            if (!(nodeList.item(i) instanceof Element)) {\r\n+                continue;\r\n+            }\r\n+            Element element = (Element) nodeList.item(i);\r\n+            if (\"argument\".equals(element.getNodeName()) || \"argument\".equals(element.getLocalName())) {\r\n+                String argumentIndex = resolveAttribute(element, \"index\", parserContext);\r\n+                if (arguments == null) {\r\n+                    arguments = new ManagedList();\r\n+                }\r\n+                BeanDefinition argumentBeanDefinition = parse(element,\r\n+                        parserContext, ArgumentConfig.class, false);\r\n+                String name = id + \".\" + argumentIndex;\r\n+                BeanDefinitionHolder argumentBeanDefinitionHolder = new BeanDefinitionHolder(\r\n+                        argumentBeanDefinition, name);\r\n+                arguments.add(argumentBeanDefinitionHolder);\r\n+            }\r\n+        }\r\n+        if (arguments != null) {\r\n+            beanDefinition.getPropertyValues().addPropertyValue(\"arguments\", arguments);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public BeanDefinition parse(Element element, ParserContext parserContext) {\r\n+        return parse(element, parserContext, beanClass, required);\r\n+    }\r\n+\r\n+    private static String resolveAttribute(Element element, String attributeName, ParserContext parserContext) {\r\n+        String attributeValue = element.getAttribute(attributeName);\r\n+        Environment environment = parserContext.getReaderContext().getEnvironment();\r\n+        return environment.resolvePlaceholders(attributeValue);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/schema/DubboNamespaceHandler.java", "source2": "org/apache/dubbo/config/spring/schema/DubboNamespaceHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,105 +1,105 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.schema;\n-\n-import org.apache.dubbo.common.Version;\n-import org.apache.dubbo.config.ApplicationConfig;\n-import org.apache.dubbo.config.ConsumerConfig;\n-import org.apache.dubbo.config.MetadataReportConfig;\n-import org.apache.dubbo.config.MetricsConfig;\n-import org.apache.dubbo.config.ModuleConfig;\n-import org.apache.dubbo.config.MonitorConfig;\n-import org.apache.dubbo.config.ProtocolConfig;\n-import org.apache.dubbo.config.ProviderConfig;\n-import org.apache.dubbo.config.RegistryConfig;\n-import org.apache.dubbo.config.SslConfig;\n-import org.apache.dubbo.config.spring.ConfigCenterBean;\n-import org.apache.dubbo.config.spring.ReferenceBean;\n-import org.apache.dubbo.config.spring.ServiceBean;\n-import org.apache.dubbo.config.spring.beans.factory.config.ConfigurableSourceBeanMetadataElement;\n-\n-import org.springframework.beans.factory.config.BeanDefinition;\n-import org.springframework.beans.factory.support.BeanDefinitionRegistry;\n-import org.springframework.beans.factory.xml.NamespaceHandlerSupport;\n-import org.springframework.beans.factory.xml.ParserContext;\n-import org.springframework.context.annotation.AnnotationConfigUtils;\n-import org.w3c.dom.Element;\n-\n-import static org.apache.dubbo.config.spring.util.DubboBeanUtils.registerCommonBeans;\n-\n-/**\n- * DubboNamespaceHandler\n- *\n- * @export\n- */\n-public class DubboNamespaceHandler extends NamespaceHandlerSupport implements ConfigurableSourceBeanMetadataElement {\n-\n-    static {\n-        Version.checkDuplicate(DubboNamespaceHandler.class);\n-    }\n-\n-    @Override\n-    public void init() {\n-        registerBeanDefinitionParser(\"application\", new DubboBeanDefinitionParser(ApplicationConfig.class, true));\n-        registerBeanDefinitionParser(\"module\", new DubboBeanDefinitionParser(ModuleConfig.class, true));\n-        registerBeanDefinitionParser(\"registry\", new DubboBeanDefinitionParser(RegistryConfig.class, true));\n-        registerBeanDefinitionParser(\"config-center\", new DubboBeanDefinitionParser(ConfigCenterBean.class, true));\n-        registerBeanDefinitionParser(\"metadata-report\", new DubboBeanDefinitionParser(MetadataReportConfig.class, true));\n-        registerBeanDefinitionParser(\"monitor\", new DubboBeanDefinitionParser(MonitorConfig.class, true));\n-        registerBeanDefinitionParser(\"metrics\", new DubboBeanDefinitionParser(MetricsConfig.class, true));\n-        registerBeanDefinitionParser(\"ssl\", new DubboBeanDefinitionParser(SslConfig.class, true));\n-        registerBeanDefinitionParser(\"provider\", new DubboBeanDefinitionParser(ProviderConfig.class, true));\n-        registerBeanDefinitionParser(\"consumer\", new DubboBeanDefinitionParser(ConsumerConfig.class, true));\n-        registerBeanDefinitionParser(\"protocol\", new DubboBeanDefinitionParser(ProtocolConfig.class, true));\n-        registerBeanDefinitionParser(\"service\", new DubboBeanDefinitionParser(ServiceBean.class, true));\n-        registerBeanDefinitionParser(\"reference\", new DubboBeanDefinitionParser(ReferenceBean.class, false));\n-        registerBeanDefinitionParser(\"annotation\", new AnnotationBeanDefinitionParser());\n-    }\n-\n-    /**\n-     * Override {@link NamespaceHandlerSupport#parse(Element, ParserContext)} method\n-     *\n-     * @param element       {@link Element}\n-     * @param parserContext {@link ParserContext}\n-     * @return\n-     * @since 2.7.5\n-     */\n-    @Override\n-    public BeanDefinition parse(Element element, ParserContext parserContext) {\n-        BeanDefinitionRegistry registry = parserContext.getRegistry();\n-        registerAnnotationConfigProcessors(registry);\n-        /**\n-         * @since 2.7.8\n-         * issue : https://github.com/apache/dubbo/issues/6275\n-         */\n-        registerCommonBeans(registry);\n-        BeanDefinition beanDefinition = super.parse(element, parserContext);\n-        setSource(beanDefinition);\n-        return beanDefinition;\n-    }\n-\n-    /**\n-     * Register the processors for the Spring Annotation-Driven features\n-     *\n-     * @param registry {@link BeanDefinitionRegistry}\n-     * @see AnnotationConfigUtils\n-     * @since 2.7.5\n-     */\n-    private void registerAnnotationConfigProcessors(BeanDefinitionRegistry registry) {\n-        AnnotationConfigUtils.registerAnnotationConfigProcessors(registry);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.schema;\r\n+\r\n+import org.apache.dubbo.common.Version;\r\n+import org.apache.dubbo.config.ApplicationConfig;\r\n+import org.apache.dubbo.config.ConsumerConfig;\r\n+import org.apache.dubbo.config.MetadataReportConfig;\r\n+import org.apache.dubbo.config.MetricsConfig;\r\n+import org.apache.dubbo.config.ModuleConfig;\r\n+import org.apache.dubbo.config.MonitorConfig;\r\n+import org.apache.dubbo.config.ProtocolConfig;\r\n+import org.apache.dubbo.config.ProviderConfig;\r\n+import org.apache.dubbo.config.RegistryConfig;\r\n+import org.apache.dubbo.config.SslConfig;\r\n+import org.apache.dubbo.config.spring.ConfigCenterBean;\r\n+import org.apache.dubbo.config.spring.ReferenceBean;\r\n+import org.apache.dubbo.config.spring.ServiceBean;\r\n+import org.apache.dubbo.config.spring.beans.factory.config.ConfigurableSourceBeanMetadataElement;\r\n+\r\n+import org.springframework.beans.factory.config.BeanDefinition;\r\n+import org.springframework.beans.factory.support.BeanDefinitionRegistry;\r\n+import org.springframework.beans.factory.xml.NamespaceHandlerSupport;\r\n+import org.springframework.beans.factory.xml.ParserContext;\r\n+import org.springframework.context.annotation.AnnotationConfigUtils;\r\n+import org.w3c.dom.Element;\r\n+\r\n+import static org.apache.dubbo.config.spring.util.DubboBeanUtils.registerCommonBeans;\r\n+\r\n+/**\r\n+ * DubboNamespaceHandler\r\n+ *\r\n+ * @export\r\n+ */\r\n+public class DubboNamespaceHandler extends NamespaceHandlerSupport implements ConfigurableSourceBeanMetadataElement {\r\n+\r\n+    static {\r\n+        Version.checkDuplicate(DubboNamespaceHandler.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void init() {\r\n+        registerBeanDefinitionParser(\"application\", new DubboBeanDefinitionParser(ApplicationConfig.class, true));\r\n+        registerBeanDefinitionParser(\"module\", new DubboBeanDefinitionParser(ModuleConfig.class, true));\r\n+        registerBeanDefinitionParser(\"registry\", new DubboBeanDefinitionParser(RegistryConfig.class, true));\r\n+        registerBeanDefinitionParser(\"config-center\", new DubboBeanDefinitionParser(ConfigCenterBean.class, true));\r\n+        registerBeanDefinitionParser(\"metadata-report\", new DubboBeanDefinitionParser(MetadataReportConfig.class, true));\r\n+        registerBeanDefinitionParser(\"monitor\", new DubboBeanDefinitionParser(MonitorConfig.class, true));\r\n+        registerBeanDefinitionParser(\"metrics\", new DubboBeanDefinitionParser(MetricsConfig.class, true));\r\n+        registerBeanDefinitionParser(\"ssl\", new DubboBeanDefinitionParser(SslConfig.class, true));\r\n+        registerBeanDefinitionParser(\"provider\", new DubboBeanDefinitionParser(ProviderConfig.class, true));\r\n+        registerBeanDefinitionParser(\"consumer\", new DubboBeanDefinitionParser(ConsumerConfig.class, true));\r\n+        registerBeanDefinitionParser(\"protocol\", new DubboBeanDefinitionParser(ProtocolConfig.class, true));\r\n+        registerBeanDefinitionParser(\"service\", new DubboBeanDefinitionParser(ServiceBean.class, true));\r\n+        registerBeanDefinitionParser(\"reference\", new DubboBeanDefinitionParser(ReferenceBean.class, false));\r\n+        registerBeanDefinitionParser(\"annotation\", new AnnotationBeanDefinitionParser());\r\n+    }\r\n+\r\n+    /**\r\n+     * Override {@link NamespaceHandlerSupport#parse(Element, ParserContext)} method\r\n+     *\r\n+     * @param element       {@link Element}\r\n+     * @param parserContext {@link ParserContext}\r\n+     * @return\r\n+     * @since 2.7.5\r\n+     */\r\n+    @Override\r\n+    public BeanDefinition parse(Element element, ParserContext parserContext) {\r\n+        BeanDefinitionRegistry registry = parserContext.getRegistry();\r\n+        registerAnnotationConfigProcessors(registry);\r\n+        /**\r\n+         * @since 2.7.8\r\n+         * issue : https://github.com/apache/dubbo/issues/6275\r\n+         */\r\n+        registerCommonBeans(registry);\r\n+        BeanDefinition beanDefinition = super.parse(element, parserContext);\r\n+        setSource(beanDefinition);\r\n+        return beanDefinition;\r\n+    }\r\n+\r\n+    /**\r\n+     * Register the processors for the Spring Annotation-Driven features\r\n+     *\r\n+     * @param registry {@link BeanDefinitionRegistry}\r\n+     * @see AnnotationConfigUtils\r\n+     * @since 2.7.5\r\n+     */\r\n+    private void registerAnnotationConfigProcessors(BeanDefinitionRegistry registry) {\r\n+        AnnotationConfigUtils.registerAnnotationConfigProcessors(registry);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java", "source2": "org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,89 +1,89 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.status;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.status.Status;\n-import org.apache.dubbo.common.status.StatusChecker;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;\n-\n-import org.springframework.context.ApplicationContext;\n-\n-import javax.sql.DataSource;\n-import java.sql.Connection;\n-import java.sql.DatabaseMetaData;\n-import java.sql.ResultSet;\n-import java.util.Map;\n-import java.util.Objects;\n-import java.util.Optional;\n-\n-/**\n- * DataSourceStatusChecker\n- */\n-@Activate\n-public class DataSourceStatusChecker implements StatusChecker {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(DataSourceStatusChecker.class);\n-\n-    @Override\n-    public Status check() {\n-        Optional<ApplicationContext> context =\n-                SpringExtensionFactory.getContexts().stream().filter(Objects::nonNull).findFirst();\n-\n-        if (!context.isPresent()) {\n-            return new Status(Status.Level.UNKNOWN);\n-        }\n-\n-        Map<String, DataSource> dataSources =\n-                context.get().getBeansOfType(DataSource.class, false, false);\n-        if (CollectionUtils.isEmptyMap(dataSources)) {\n-            return new Status(Status.Level.UNKNOWN);\n-        }\n-        Status.Level level = Status.Level.OK;\n-        StringBuilder buf = new StringBuilder();\n-        for (Map.Entry<String, DataSource> entry : dataSources.entrySet()) {\n-            DataSource dataSource = entry.getValue();\n-            if (buf.length() > 0) {\n-                buf.append(\", \");\n-            }\n-            buf.append(entry.getKey());\n-\n-            try (Connection connection = dataSource.getConnection()) {\n-                DatabaseMetaData metaData = connection.getMetaData();\n-                try (ResultSet resultSet = metaData.getTypeInfo()) {\n-                    if (!resultSet.next()) {\n-                        level = Status.Level.ERROR;\n-                    }\n-                }\n-                buf.append(metaData.getURL());\n-                buf.append(\"(\");\n-                buf.append(metaData.getDatabaseProductName());\n-                buf.append(\"-\");\n-                buf.append(metaData.getDatabaseProductVersion());\n-                buf.append(\")\");\n-            } catch (Throwable e) {\n-                logger.warn(e.getMessage(), e);\n-                return new Status(level, e.getMessage());\n-            }\n-        }\n-        return new Status(level, buf.toString());\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.status;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.status.Status;\r\n+import org.apache.dubbo.common.status.StatusChecker;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;\r\n+\r\n+import org.springframework.context.ApplicationContext;\r\n+\r\n+import javax.sql.DataSource;\r\n+import java.sql.Connection;\r\n+import java.sql.DatabaseMetaData;\r\n+import java.sql.ResultSet;\r\n+import java.util.Map;\r\n+import java.util.Objects;\r\n+import java.util.Optional;\r\n+\r\n+/**\r\n+ * DataSourceStatusChecker\r\n+ */\r\n+@Activate\r\n+public class DataSourceStatusChecker implements StatusChecker {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(DataSourceStatusChecker.class);\r\n+\r\n+    @Override\r\n+    public Status check() {\r\n+        Optional<ApplicationContext> context =\r\n+                SpringExtensionFactory.getContexts().stream().filter(Objects::nonNull).findFirst();\r\n+\r\n+        if (!context.isPresent()) {\r\n+            return new Status(Status.Level.UNKNOWN);\r\n+        }\r\n+\r\n+        Map<String, DataSource> dataSources =\r\n+                context.get().getBeansOfType(DataSource.class, false, false);\r\n+        if (CollectionUtils.isEmptyMap(dataSources)) {\r\n+            return new Status(Status.Level.UNKNOWN);\r\n+        }\r\n+        Status.Level level = Status.Level.OK;\r\n+        StringBuilder buf = new StringBuilder();\r\n+        for (Map.Entry<String, DataSource> entry : dataSources.entrySet()) {\r\n+            DataSource dataSource = entry.getValue();\r\n+            if (buf.length() > 0) {\r\n+                buf.append(\", \");\r\n+            }\r\n+            buf.append(entry.getKey());\r\n+\r\n+            try (Connection connection = dataSource.getConnection()) {\r\n+                DatabaseMetaData metaData = connection.getMetaData();\r\n+                try (ResultSet resultSet = metaData.getTypeInfo()) {\r\n+                    if (!resultSet.next()) {\r\n+                        level = Status.Level.ERROR;\r\n+                    }\r\n+                }\r\n+                buf.append(metaData.getURL());\r\n+                buf.append(\"(\");\r\n+                buf.append(metaData.getDatabaseProductName());\r\n+                buf.append(\"-\");\r\n+                buf.append(metaData.getDatabaseProductVersion());\r\n+                buf.append(\")\");\r\n+            } catch (Throwable e) {\r\n+                logger.warn(e.getMessage(), e);\r\n+                return new Status(level, e.getMessage());\r\n+            }\r\n+        }\r\n+        return new Status(level, buf.toString());\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/status/SpringStatusChecker.java", "source2": "org/apache/dubbo/config/spring/status/SpringStatusChecker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,100 +1,100 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.status;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.status.Status;\n-import org.apache.dubbo.common.status.StatusChecker;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;\n-\n-import org.springframework.context.ApplicationContext;\n-import org.springframework.context.Lifecycle;\n-import org.springframework.web.context.support.GenericWebApplicationContext;\n-\n-import java.lang.reflect.Method;\n-\n-/**\n- * SpringStatusChecker\n- */\n-@Activate\n-public class SpringStatusChecker implements StatusChecker {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(SpringStatusChecker.class);\n-\n-    @Override\n-    public Status check() {\n-        ApplicationContext context = null;\n-        for (ApplicationContext c : SpringExtensionFactory.getContexts()) {\n-            // [Issue] SpringStatusChecker execute errors on non-XML Spring configuration\n-            // issue : https://github.com/apache/dubbo/issues/3615\n-            if(c instanceof GenericWebApplicationContext) { // ignore GenericXmlApplicationContext\n-                continue;\n-            }\n-\n-            if (c != null) {\n-                context = c;\n-                break;\n-            }\n-        }\n-\n-        if (context == null) {\n-            return new Status(Status.Level.UNKNOWN);\n-        }\n-\n-        Status.Level level;\n-        if (context instanceof Lifecycle) {\n-            if (((Lifecycle) context).isRunning()) {\n-                level = Status.Level.OK;\n-            } else {\n-                level = Status.Level.ERROR;\n-            }\n-        } else {\n-            level = Status.Level.UNKNOWN;\n-        }\n-        StringBuilder buf = new StringBuilder();\n-        try {\n-            Class<?> cls = context.getClass();\n-            Method method = null;\n-            while (cls != null && method == null) {\n-                try {\n-                    method = cls.getDeclaredMethod(\"getConfigLocations\", new Class<?>[0]);\n-                } catch (NoSuchMethodException t) {\n-                    cls = cls.getSuperclass();\n-                }\n-            }\n-            if (method != null) {\n-                ReflectUtils.makeAccessible(method);\n-                String[] configs = (String[]) method.invoke(context, new Object[0]);\n-                if (configs != null && configs.length > 0) {\n-                    for (String config : configs) {\n-                        if (buf.length() > 0) {\n-                            buf.append(\",\");\n-                        }\n-                        buf.append(config);\n-                    }\n-                }\n-            }\n-        } catch (Throwable t) {\n-            logger.warn(t.getMessage(), t);\n-        }\n-        return new Status(level, buf.toString());\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.status;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.status.Status;\r\n+import org.apache.dubbo.common.status.StatusChecker;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;\r\n+\r\n+import org.springframework.context.ApplicationContext;\r\n+import org.springframework.context.Lifecycle;\r\n+import org.springframework.web.context.support.GenericWebApplicationContext;\r\n+\r\n+import java.lang.reflect.Method;\r\n+\r\n+/**\r\n+ * SpringStatusChecker\r\n+ */\r\n+@Activate\r\n+public class SpringStatusChecker implements StatusChecker {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(SpringStatusChecker.class);\r\n+\r\n+    @Override\r\n+    public Status check() {\r\n+        ApplicationContext context = null;\r\n+        for (ApplicationContext c : SpringExtensionFactory.getContexts()) {\r\n+            // [Issue] SpringStatusChecker execute errors on non-XML Spring configuration\r\n+            // issue : https://github.com/apache/dubbo/issues/3615\r\n+            if(c instanceof GenericWebApplicationContext) { // ignore GenericXmlApplicationContext\r\n+                continue;\r\n+            }\r\n+\r\n+            if (c != null) {\r\n+                context = c;\r\n+                break;\r\n+            }\r\n+        }\r\n+\r\n+        if (context == null) {\r\n+            return new Status(Status.Level.UNKNOWN);\r\n+        }\r\n+\r\n+        Status.Level level;\r\n+        if (context instanceof Lifecycle) {\r\n+            if (((Lifecycle) context).isRunning()) {\r\n+                level = Status.Level.OK;\r\n+            } else {\r\n+                level = Status.Level.ERROR;\r\n+            }\r\n+        } else {\r\n+            level = Status.Level.UNKNOWN;\r\n+        }\r\n+        StringBuilder buf = new StringBuilder();\r\n+        try {\r\n+            Class<?> cls = context.getClass();\r\n+            Method method = null;\r\n+            while (cls != null && method == null) {\r\n+                try {\r\n+                    method = cls.getDeclaredMethod(\"getConfigLocations\", new Class<?>[0]);\r\n+                } catch (NoSuchMethodException t) {\r\n+                    cls = cls.getSuperclass();\r\n+                }\r\n+            }\r\n+            if (method != null) {\r\n+                ReflectUtils.makeAccessible(method);\r\n+                String[] configs = (String[]) method.invoke(context, new Object[0]);\r\n+                if (configs != null && configs.length > 0) {\r\n+                    for (String config : configs) {\r\n+                        if (buf.length() > 0) {\r\n+                            buf.append(\",\");\r\n+                        }\r\n+                        buf.append(config);\r\n+                    }\r\n+                }\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            logger.warn(t.getMessage(), t);\r\n+        }\r\n+        return new Status(level, buf.toString());\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/util/DubboAnnotationUtils.java", "source2": "org/apache/dubbo/config/spring/util/DubboAnnotationUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,150 +1,150 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.util;\n-\n-import org.apache.dubbo.config.annotation.Reference;\n-import org.apache.dubbo.config.annotation.Service;\n-\n-import org.springframework.core.annotation.AnnotationAttributes;\n-import org.springframework.util.Assert;\n-import org.springframework.util.ClassUtils;\n-\n-import static com.alibaba.spring.util.AnnotationUtils.getAttribute;\n-import static org.springframework.util.ClassUtils.getAllInterfacesForClass;\n-import static org.springframework.util.ClassUtils.resolveClassName;\n-import static org.springframework.util.StringUtils.hasText;\n-\n-/**\n- * Dubbo Annotation Utilities Class\n- *\n- * @see org.springframework.core.annotation.AnnotationUtils\n- * @since 2.5.11\n- */\n-public class DubboAnnotationUtils {\n-\n-\n-    @Deprecated\n-    public static String resolveInterfaceName(Service service, Class<?> defaultInterfaceClass)\n-            throws IllegalStateException {\n-\n-        String interfaceName;\n-        if (hasText(service.interfaceName())) {\n-            interfaceName = service.interfaceName();\n-        } else if (!void.class.equals(service.interfaceClass())) {\n-            interfaceName = service.interfaceClass().getName();\n-        } else if (defaultInterfaceClass.isInterface()) {\n-            interfaceName = defaultInterfaceClass.getName();\n-        } else {\n-            throw new IllegalStateException(\n-                    \"The @Service undefined interfaceClass or interfaceName, and the type \"\n-                            + defaultInterfaceClass.getName() + \" is not a interface.\");\n-        }\n-\n-        return interfaceName;\n-\n-    }\n-\n-    /**\n-     * Resolve the interface name from {@link AnnotationAttributes}\n-     *\n-     * @param attributes            {@link AnnotationAttributes} instance, may be {@link Service @Service} or {@link Reference @Reference}\n-     * @param defaultInterfaceClass the default {@link Class class} of interface\n-     * @return the interface name if found\n-     * @throws IllegalStateException if interface name was not found\n-     */\n-    public static String resolveInterfaceName(AnnotationAttributes attributes, Class<?> defaultInterfaceClass) {\n-        Boolean generic = getAttribute(attributes, \"generic\");\n-        if (generic != null && generic) {\n-            // it's a generic reference\n-            String interfaceClassName = getAttribute(attributes, \"interfaceName\");\n-            Assert.hasText(interfaceClassName,\n-                    \"@Reference interfaceName() must be present when reference a generic service!\");\n-            return interfaceClassName;\n-        }\n-        return resolveServiceInterfaceClass(attributes, defaultInterfaceClass).getName();\n-    }\n-\n-    /**\n-     * Resolve the {@link Class class} of Dubbo Service interface from the specified\n-     * {@link AnnotationAttributes annotation attributes} and annotated {@link Class class}.\n-     *\n-     * @param attributes            {@link AnnotationAttributes annotation attributes}\n-     * @param defaultInterfaceClass the annotated {@link Class class}.\n-     * @return the {@link Class class} of Dubbo Service interface\n-     * @throws IllegalArgumentException if can't resolved\n-     */\n-    public static Class<?> resolveServiceInterfaceClass(AnnotationAttributes attributes, Class<?> defaultInterfaceClass)\n-            throws IllegalArgumentException {\n-\n-        ClassLoader classLoader = defaultInterfaceClass != null ? defaultInterfaceClass.getClassLoader() : Thread.currentThread().getContextClassLoader();\n-\n-        Class<?> interfaceClass = getAttribute(attributes, \"interfaceClass\");\n-\n-        if (void.class.equals(interfaceClass)) { // default or set void.class for purpose.\n-\n-            interfaceClass = null;\n-\n-            String interfaceClassName = getAttribute(attributes, \"interfaceName\");\n-\n-            if (hasText(interfaceClassName)) {\n-                if (ClassUtils.isPresent(interfaceClassName, classLoader)) {\n-                    interfaceClass = resolveClassName(interfaceClassName, classLoader);\n-                }\n-            }\n-\n-        }\n-\n-        if (interfaceClass == null && defaultInterfaceClass != null) {\n-            // Find all interfaces from the annotated class\n-            // To resolve an issue : https://github.com/apache/dubbo/issues/3251\n-            Class<?>[] allInterfaces = getAllInterfacesForClass(defaultInterfaceClass);\n-\n-            if (allInterfaces.length > 0) {\n-                interfaceClass = allInterfaces[0];\n-            }\n-\n-        }\n-\n-        Assert.notNull(interfaceClass,\n-                \"@Service interfaceClass() or interfaceName() or interface class must be present!\");\n-\n-        Assert.isTrue(interfaceClass.isInterface(),\n-                \"The annotated type must be an interface!\");\n-\n-        return interfaceClass;\n-    }\n-\n-    @Deprecated\n-    public static String resolveInterfaceName(Reference reference, Class<?> defaultInterfaceClass)\n-            throws IllegalStateException {\n-\n-        String interfaceName;\n-        if (!\"\".equals(reference.interfaceName())) {\n-            interfaceName = reference.interfaceName();\n-        } else if (!void.class.equals(reference.interfaceClass())) {\n-            interfaceName = reference.interfaceClass().getName();\n-        } else if (defaultInterfaceClass.isInterface()) {\n-            interfaceName = defaultInterfaceClass.getName();\n-        } else {\n-            throw new IllegalStateException(\n-                    \"The @Reference undefined interfaceClass or interfaceName, and the type \"\n-                            + defaultInterfaceClass.getName() + \" is not a interface.\");\n-        }\n-\n-        return interfaceName;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.util;\r\n+\r\n+import org.apache.dubbo.config.annotation.Reference;\r\n+import org.apache.dubbo.config.annotation.Service;\r\n+\r\n+import org.springframework.core.annotation.AnnotationAttributes;\r\n+import org.springframework.util.Assert;\r\n+import org.springframework.util.ClassUtils;\r\n+\r\n+import static com.alibaba.spring.util.AnnotationUtils.getAttribute;\r\n+import static org.springframework.util.ClassUtils.getAllInterfacesForClass;\r\n+import static org.springframework.util.ClassUtils.resolveClassName;\r\n+import static org.springframework.util.StringUtils.hasText;\r\n+\r\n+/**\r\n+ * Dubbo Annotation Utilities Class\r\n+ *\r\n+ * @see org.springframework.core.annotation.AnnotationUtils\r\n+ * @since 2.5.11\r\n+ */\r\n+public class DubboAnnotationUtils {\r\n+\r\n+\r\n+    @Deprecated\r\n+    public static String resolveInterfaceName(Service service, Class<?> defaultInterfaceClass)\r\n+            throws IllegalStateException {\r\n+\r\n+        String interfaceName;\r\n+        if (hasText(service.interfaceName())) {\r\n+            interfaceName = service.interfaceName();\r\n+        } else if (!void.class.equals(service.interfaceClass())) {\r\n+            interfaceName = service.interfaceClass().getName();\r\n+        } else if (defaultInterfaceClass.isInterface()) {\r\n+            interfaceName = defaultInterfaceClass.getName();\r\n+        } else {\r\n+            throw new IllegalStateException(\r\n+                    \"The @Service undefined interfaceClass or interfaceName, and the type \"\r\n+                            + defaultInterfaceClass.getName() + \" is not a interface.\");\r\n+        }\r\n+\r\n+        return interfaceName;\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * Resolve the interface name from {@link AnnotationAttributes}\r\n+     *\r\n+     * @param attributes            {@link AnnotationAttributes} instance, may be {@link Service @Service} or {@link Reference @Reference}\r\n+     * @param defaultInterfaceClass the default {@link Class class} of interface\r\n+     * @return the interface name if found\r\n+     * @throws IllegalStateException if interface name was not found\r\n+     */\r\n+    public static String resolveInterfaceName(AnnotationAttributes attributes, Class<?> defaultInterfaceClass) {\r\n+        Boolean generic = getAttribute(attributes, \"generic\");\r\n+        if (generic != null && generic) {\r\n+            // it's a generic reference\r\n+            String interfaceClassName = getAttribute(attributes, \"interfaceName\");\r\n+            Assert.hasText(interfaceClassName,\r\n+                    \"@Reference interfaceName() must be present when reference a generic service!\");\r\n+            return interfaceClassName;\r\n+        }\r\n+        return resolveServiceInterfaceClass(attributes, defaultInterfaceClass).getName();\r\n+    }\r\n+\r\n+    /**\r\n+     * Resolve the {@link Class class} of Dubbo Service interface from the specified\r\n+     * {@link AnnotationAttributes annotation attributes} and annotated {@link Class class}.\r\n+     *\r\n+     * @param attributes            {@link AnnotationAttributes annotation attributes}\r\n+     * @param defaultInterfaceClass the annotated {@link Class class}.\r\n+     * @return the {@link Class class} of Dubbo Service interface\r\n+     * @throws IllegalArgumentException if can't resolved\r\n+     */\r\n+    public static Class<?> resolveServiceInterfaceClass(AnnotationAttributes attributes, Class<?> defaultInterfaceClass)\r\n+            throws IllegalArgumentException {\r\n+\r\n+        ClassLoader classLoader = defaultInterfaceClass != null ? defaultInterfaceClass.getClassLoader() : Thread.currentThread().getContextClassLoader();\r\n+\r\n+        Class<?> interfaceClass = getAttribute(attributes, \"interfaceClass\");\r\n+\r\n+        if (void.class.equals(interfaceClass)) { // default or set void.class for purpose.\r\n+\r\n+            interfaceClass = null;\r\n+\r\n+            String interfaceClassName = getAttribute(attributes, \"interfaceName\");\r\n+\r\n+            if (hasText(interfaceClassName)) {\r\n+                if (ClassUtils.isPresent(interfaceClassName, classLoader)) {\r\n+                    interfaceClass = resolveClassName(interfaceClassName, classLoader);\r\n+                }\r\n+            }\r\n+\r\n+        }\r\n+\r\n+        if (interfaceClass == null && defaultInterfaceClass != null) {\r\n+            // Find all interfaces from the annotated class\r\n+            // To resolve an issue : https://github.com/apache/dubbo/issues/3251\r\n+            Class<?>[] allInterfaces = getAllInterfacesForClass(defaultInterfaceClass);\r\n+\r\n+            if (allInterfaces.length > 0) {\r\n+                interfaceClass = allInterfaces[0];\r\n+            }\r\n+\r\n+        }\r\n+\r\n+        Assert.notNull(interfaceClass,\r\n+                \"@Service interfaceClass() or interfaceName() or interface class must be present!\");\r\n+\r\n+        Assert.isTrue(interfaceClass.isInterface(),\r\n+                \"The annotated type must be an interface!\");\r\n+\r\n+        return interfaceClass;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public static String resolveInterfaceName(Reference reference, Class<?> defaultInterfaceClass)\r\n+            throws IllegalStateException {\r\n+\r\n+        String interfaceName;\r\n+        if (!\"\".equals(reference.interfaceName())) {\r\n+            interfaceName = reference.interfaceName();\r\n+        } else if (!void.class.equals(reference.interfaceClass())) {\r\n+            interfaceName = reference.interfaceClass().getName();\r\n+        } else if (defaultInterfaceClass.isInterface()) {\r\n+            interfaceName = defaultInterfaceClass.getName();\r\n+        } else {\r\n+            throw new IllegalStateException(\r\n+                    \"The @Reference undefined interfaceClass or interfaceName, and the type \"\r\n+                            + defaultInterfaceClass.getName() + \" is not a interface.\");\r\n+        }\r\n+\r\n+        return interfaceName;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/spring/util/DubboBeanUtils.java", "source2": "org/apache/dubbo/config/spring/util/DubboBeanUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,161 +1,161 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.spring.util;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.config.spring.beans.factory.annotation.DubboConfigAliasPostProcessor;\n-import org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor;\n-import org.apache.dubbo.config.spring.beans.factory.config.DubboConfigDefaultPropertyValueBeanPostProcessor;\n-import org.apache.dubbo.config.spring.beans.factory.config.DubboConfigEarlyInitializationPostProcessor;\n-import org.apache.dubbo.config.spring.context.DubboApplicationListenerRegistrar;\n-import org.apache.dubbo.config.spring.context.DubboBootstrapApplicationListener;\n-import org.apache.dubbo.config.spring.context.DubboLifecycleComponentApplicationListener;\n-import org.springframework.beans.BeansException;\n-import org.springframework.beans.factory.BeanFactoryUtils;\n-import org.springframework.beans.factory.BeanNotOfRequiredTypeException;\n-import org.springframework.beans.factory.ListableBeanFactory;\n-import org.springframework.beans.factory.NoSuchBeanDefinitionException;\n-import org.springframework.beans.factory.NoUniqueBeanDefinitionException;\n-import org.springframework.beans.factory.support.BeanDefinitionRegistry;\n-\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.List;\n-\n-import static com.alibaba.spring.util.BeanRegistrar.registerInfrastructureBean;\n-import static java.util.Collections.emptyList;\n-import static java.util.Collections.unmodifiableList;\n-import static org.springframework.util.ObjectUtils.isEmpty;\n-\n-/**\n- * Dubbo Bean utilities class\n- *\n- * @since 2.7.6\n- */\n-public abstract class DubboBeanUtils {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(DubboBeanUtils.class);\n-\n-    /**\n-     * Register the common beans\n-     *\n-     * @param registry {@link BeanDefinitionRegistry}\n-     * @see ReferenceAnnotationBeanPostProcessor\n-     * @see DubboConfigDefaultPropertyValueBeanPostProcessor\n-     * @see DubboConfigAliasPostProcessor\n-     * @see DubboLifecycleComponentApplicationListener\n-     * @see DubboBootstrapApplicationListener\n-     */\n-    public static void registerCommonBeans(BeanDefinitionRegistry registry) {\n-\n-        // Since 2.5.7 Register @Reference Annotation Bean Processor as an infrastructure Bean\n-        registerInfrastructureBean(registry, ReferenceAnnotationBeanPostProcessor.BEAN_NAME,\n-                ReferenceAnnotationBeanPostProcessor.class);\n-\n-        // Since 2.7.4 [Feature] https://github.com/apache/dubbo/issues/5093\n-        registerInfrastructureBean(registry, DubboConfigAliasPostProcessor.BEAN_NAME,\n-                DubboConfigAliasPostProcessor.class);\n-\n-        // Since 2.7.9 Register DubboApplicationListenerRegister as an infrastructure Bean\n-        // https://github.com/apache/dubbo/issues/6559\n-\n-        // Since 2.7.5 Register DubboLifecycleComponentApplicationListener as an infrastructure Bean\n-        // registerInfrastructureBean(registry, DubboLifecycleComponentApplicationListener.BEAN_NAME,\n-        //        DubboLifecycleComponentApplicationListener.class);\n-\n-        // Since 2.7.4 Register DubboBootstrapApplicationListener as an infrastructure Bean\n-        // registerInfrastructureBean(registry, DubboBootstrapApplicationListener.BEAN_NAME,\n-        //        DubboBootstrapApplicationListener.class);\n-\n-        registerInfrastructureBean(registry, DubboApplicationListenerRegistrar.BEAN_NAME,\n-                DubboApplicationListenerRegistrar.class);\n-\n-        // Since 2.7.6 Register DubboConfigDefaultPropertyValueBeanPostProcessor as an infrastructure Bean\n-        registerInfrastructureBean(registry, DubboConfigDefaultPropertyValueBeanPostProcessor.BEAN_NAME,\n-                DubboConfigDefaultPropertyValueBeanPostProcessor.class);\n-\n-        // Since 2.7.9 Register DubboConfigEarlyInitializationPostProcessor as an infrastructure Bean\n-        registerInfrastructureBean(registry, DubboConfigEarlyInitializationPostProcessor.BEAN_NAME,\n-                DubboConfigEarlyInitializationPostProcessor.class);\n-    }\n-\n-    /**\n-     * Get optional bean by name and type if beanName is not null, or else find by type\n-     *\n-     * @param beanFactory\n-     * @param beanName\n-     * @param beanType\n-     * @param <T>\n-     * @return\n-     */\n-    public static <T> T getOptionalBean(ListableBeanFactory beanFactory, String beanName, Class<T> beanType) throws BeansException {\n-        if (beanName == null) {\n-            return getOptionalBeanByType(beanFactory, beanType);\n-        }\n-\n-        T bean = null;\n-        try {\n-            bean = beanFactory.getBean(beanName, beanType);\n-        } catch (NoSuchBeanDefinitionException e) {\n-            // ignore NoSuchBeanDefinitionException\n-        } catch (BeanNotOfRequiredTypeException e) {\n-            // ignore BeanNotOfRequiredTypeException\n-            logger.warn(String.format(\"bean type not match, name: %s, expected type: %s, actual type: %s\",\n-                    beanName, beanType.getName(), e.getActualType().getName()));\n-        }\n-        return bean;\n-    }\n-\n-    private static <T> T getOptionalBeanByType(ListableBeanFactory beanFactory, Class<T> beanType) {\n-        // Issue : https://github.com/alibaba/spring-context-support/issues/20\n-        String[] beanNames = BeanFactoryUtils.beanNamesForTypeIncludingAncestors(beanFactory, beanType, true, false);\n-        if (beanNames == null || beanNames.length == 0) {\n-            return null;\n-        } else if (beanNames.length > 1){\n-            throw new NoUniqueBeanDefinitionException(beanType, Arrays.asList(beanNames));\n-        }\n-        return (T) beanFactory.getBean(beanNames[0]);\n-    }\n-\n-    public static <T> T getBean(ListableBeanFactory beanFactory, String beanName, Class<T> beanType) throws BeansException {\n-        return beanFactory.getBean(beanName, beanType);\n-    }\n-\n-    /**\n-     * Get beans by names and type\n-     *\n-     * @param beanFactory\n-     * @param beanNames\n-     * @param beanType\n-     * @param <T>\n-     * @return\n-     */\n-    public static <T> List<T> getBeans(ListableBeanFactory beanFactory, String[] beanNames, Class<T> beanType) throws BeansException {\n-        if (isEmpty(beanNames)) {\n-            return emptyList();\n-        }\n-        List<T> beans = new ArrayList<T>(beanNames.length);\n-        for (String beanName : beanNames) {\n-            T bean = getBean(beanFactory, beanName, beanType);\n-            if (bean != null) {\n-                beans.add(bean);\n-            }\n-        }\n-        return unmodifiableList(beans);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.spring.util;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.config.spring.beans.factory.annotation.DubboConfigAliasPostProcessor;\r\n+import org.apache.dubbo.config.spring.beans.factory.annotation.ReferenceAnnotationBeanPostProcessor;\r\n+import org.apache.dubbo.config.spring.beans.factory.config.DubboConfigDefaultPropertyValueBeanPostProcessor;\r\n+import org.apache.dubbo.config.spring.beans.factory.config.DubboConfigEarlyInitializationPostProcessor;\r\n+import org.apache.dubbo.config.spring.context.DubboApplicationListenerRegistrar;\r\n+import org.apache.dubbo.config.spring.context.DubboBootstrapApplicationListener;\r\n+import org.apache.dubbo.config.spring.context.DubboLifecycleComponentApplicationListener;\r\n+import org.springframework.beans.BeansException;\r\n+import org.springframework.beans.factory.BeanFactoryUtils;\r\n+import org.springframework.beans.factory.BeanNotOfRequiredTypeException;\r\n+import org.springframework.beans.factory.ListableBeanFactory;\r\n+import org.springframework.beans.factory.NoSuchBeanDefinitionException;\r\n+import org.springframework.beans.factory.NoUniqueBeanDefinitionException;\r\n+import org.springframework.beans.factory.support.BeanDefinitionRegistry;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.List;\r\n+\r\n+import static com.alibaba.spring.util.BeanRegistrar.registerInfrastructureBean;\r\n+import static java.util.Collections.emptyList;\r\n+import static java.util.Collections.unmodifiableList;\r\n+import static org.springframework.util.ObjectUtils.isEmpty;\r\n+\r\n+/**\r\n+ * Dubbo Bean utilities class\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public abstract class DubboBeanUtils {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(DubboBeanUtils.class);\r\n+\r\n+    /**\r\n+     * Register the common beans\r\n+     *\r\n+     * @param registry {@link BeanDefinitionRegistry}\r\n+     * @see ReferenceAnnotationBeanPostProcessor\r\n+     * @see DubboConfigDefaultPropertyValueBeanPostProcessor\r\n+     * @see DubboConfigAliasPostProcessor\r\n+     * @see DubboLifecycleComponentApplicationListener\r\n+     * @see DubboBootstrapApplicationListener\r\n+     */\r\n+    public static void registerCommonBeans(BeanDefinitionRegistry registry) {\r\n+\r\n+        // Since 2.5.7 Register @Reference Annotation Bean Processor as an infrastructure Bean\r\n+        registerInfrastructureBean(registry, ReferenceAnnotationBeanPostProcessor.BEAN_NAME,\r\n+                ReferenceAnnotationBeanPostProcessor.class);\r\n+\r\n+        // Since 2.7.4 [Feature] https://github.com/apache/dubbo/issues/5093\r\n+        registerInfrastructureBean(registry, DubboConfigAliasPostProcessor.BEAN_NAME,\r\n+                DubboConfigAliasPostProcessor.class);\r\n+\r\n+        // Since 2.7.9 Register DubboApplicationListenerRegister as an infrastructure Bean\r\n+        // https://github.com/apache/dubbo/issues/6559\r\n+\r\n+        // Since 2.7.5 Register DubboLifecycleComponentApplicationListener as an infrastructure Bean\r\n+        // registerInfrastructureBean(registry, DubboLifecycleComponentApplicationListener.BEAN_NAME,\r\n+        //        DubboLifecycleComponentApplicationListener.class);\r\n+\r\n+        // Since 2.7.4 Register DubboBootstrapApplicationListener as an infrastructure Bean\r\n+        // registerInfrastructureBean(registry, DubboBootstrapApplicationListener.BEAN_NAME,\r\n+        //        DubboBootstrapApplicationListener.class);\r\n+\r\n+        registerInfrastructureBean(registry, DubboApplicationListenerRegistrar.BEAN_NAME,\r\n+                DubboApplicationListenerRegistrar.class);\r\n+\r\n+        // Since 2.7.6 Register DubboConfigDefaultPropertyValueBeanPostProcessor as an infrastructure Bean\r\n+        registerInfrastructureBean(registry, DubboConfigDefaultPropertyValueBeanPostProcessor.BEAN_NAME,\r\n+                DubboConfigDefaultPropertyValueBeanPostProcessor.class);\r\n+\r\n+        // Since 2.7.9 Register DubboConfigEarlyInitializationPostProcessor as an infrastructure Bean\r\n+        registerInfrastructureBean(registry, DubboConfigEarlyInitializationPostProcessor.BEAN_NAME,\r\n+                DubboConfigEarlyInitializationPostProcessor.class);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get optional bean by name and type if beanName is not null, or else find by type\r\n+     *\r\n+     * @param beanFactory\r\n+     * @param beanName\r\n+     * @param beanType\r\n+     * @param <T>\r\n+     * @return\r\n+     */\r\n+    public static <T> T getOptionalBean(ListableBeanFactory beanFactory, String beanName, Class<T> beanType) throws BeansException {\r\n+        if (beanName == null) {\r\n+            return getOptionalBeanByType(beanFactory, beanType);\r\n+        }\r\n+\r\n+        T bean = null;\r\n+        try {\r\n+            bean = beanFactory.getBean(beanName, beanType);\r\n+        } catch (NoSuchBeanDefinitionException e) {\r\n+            // ignore NoSuchBeanDefinitionException\r\n+        } catch (BeanNotOfRequiredTypeException e) {\r\n+            // ignore BeanNotOfRequiredTypeException\r\n+            logger.warn(String.format(\"bean type not match, name: %s, expected type: %s, actual type: %s\",\r\n+                    beanName, beanType.getName(), e.getActualType().getName()));\r\n+        }\r\n+        return bean;\r\n+    }\r\n+\r\n+    private static <T> T getOptionalBeanByType(ListableBeanFactory beanFactory, Class<T> beanType) {\r\n+        // Issue : https://github.com/alibaba/spring-context-support/issues/20\r\n+        String[] beanNames = BeanFactoryUtils.beanNamesForTypeIncludingAncestors(beanFactory, beanType, true, false);\r\n+        if (beanNames == null || beanNames.length == 0) {\r\n+            return null;\r\n+        } else if (beanNames.length > 1){\r\n+            throw new NoUniqueBeanDefinitionException(beanType, Arrays.asList(beanNames));\r\n+        }\r\n+        return (T) beanFactory.getBean(beanNames[0]);\r\n+    }\r\n+\r\n+    public static <T> T getBean(ListableBeanFactory beanFactory, String beanName, Class<T> beanType) throws BeansException {\r\n+        return beanFactory.getBean(beanName, beanType);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get beans by names and type\r\n+     *\r\n+     * @param beanFactory\r\n+     * @param beanNames\r\n+     * @param beanType\r\n+     * @param <T>\r\n+     * @return\r\n+     */\r\n+    public static <T> List<T> getBeans(ListableBeanFactory beanFactory, String[] beanNames, Class<T> beanType) throws BeansException {\r\n+        if (isEmpty(beanNames)) {\r\n+            return emptyList();\r\n+        }\r\n+        List<T> beans = new ArrayList<T>(beanNames.length);\r\n+        for (String beanName : beanNames) {\r\n+            T bean = getBean(beanFactory, beanName, beanType);\r\n+            if (bean != null) {\r\n+                beans.add(bean);\r\n+            }\r\n+        }\r\n+        return unmodifiableList(beans);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/CacheableRouterFactory.java", "source2": "org/apache/dubbo/rpc/cluster/CacheableRouterFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,37 +1,37 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster;\n-\n-import org.apache.dubbo.common.URL;\n-\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-/**\n- * If you want to provide a router implementation based on design of v2.7.0, please extend from this abstract class.\n- * For 2.6.x style router, please implement and use RouterFactory directly.\n- */\n-public abstract class CacheableRouterFactory implements RouterFactory {\n-    private ConcurrentMap<String, Router> routerMap = new ConcurrentHashMap<>();\n-\n-    @Override\n-    public Router getRouter(URL url) {\n-        return routerMap.computeIfAbsent(url.getServiceKey(), k -> createRouter(url));\n-    }\n-\n-    protected abstract Router createRouter(URL url);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+/**\r\n+ * If you want to provide a router implementation based on design of v2.7.0, please extend from this abstract class.\r\n+ * For 2.6.x style router, please implement and use RouterFactory directly.\r\n+ */\r\n+public abstract class CacheableRouterFactory implements RouterFactory {\r\n+    private ConcurrentMap<String, Router> routerMap = new ConcurrentHashMap<>();\r\n+\r\n+    @Override\r\n+    public Router getRouter(URL url) {\r\n+        return routerMap.computeIfAbsent(url.getServiceKey(), k -> createRouter(url));\r\n+    }\r\n+\r\n+    protected abstract Router createRouter(URL url);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/ClusterInvoker.java", "source2": "org/apache/dubbo/rpc/cluster/ClusterInvoker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,40 +1,40 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.rpc.Invoker;\n-\n-/**\n- * This is the final Invoker type referenced by the RPC proxy on Consumer side.\n- * <p>\n- * A ClusterInvoker holds a group of normal invokers, stored in a Directory, mapping to one Registry.\n- * The ClusterInvoker implementation usually provides LB or HA policies, like FailoverClusterInvoker.\n- * <p>\n- * In multi-registry subscription scenario, the final ClusterInvoker will refer to several sub ClusterInvokers, with each\n- * sub ClusterInvoker representing one Registry. Take ZoneAwareClusterInvoker as an example, it is specially customized for\n- * multi-registry use cases: first, pick up one ClusterInvoker, then do LB inside the chose ClusterInvoker.\n- *\n- * @param <T>\n- */\n-public interface ClusterInvoker<T> extends Invoker<T> {\n-    URL getRegistryUrl();\n-\n-    Directory<T> getDirectory();\n-\n-    boolean isDestroyed();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+\r\n+/**\r\n+ * This is the final Invoker type referenced by the RPC proxy on Consumer side.\r\n+ * <p>\r\n+ * A ClusterInvoker holds a group of normal invokers, stored in a Directory, mapping to one Registry.\r\n+ * The ClusterInvoker implementation usually provides LB or HA policies, like FailoverClusterInvoker.\r\n+ * <p>\r\n+ * In multi-registry subscription scenario, the final ClusterInvoker will refer to several sub ClusterInvokers, with each\r\n+ * sub ClusterInvoker representing one Registry. Take ZoneAwareClusterInvoker as an example, it is specially customized for\r\n+ * multi-registry use cases: first, pick up one ClusterInvoker, then do LB inside the chose ClusterInvoker.\r\n+ *\r\n+ * @param <T>\r\n+ */\r\n+public interface ClusterInvoker<T> extends Invoker<T> {\r\n+    URL getRegistryUrl();\r\n+\r\n+    Directory<T> getDirectory();\r\n+\r\n+    boolean isDestroyed();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/Constants.java", "source2": "org/apache/dubbo/rpc/cluster/Constants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,102 +1,102 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster;\n-\n-public interface Constants {\n-\n-    String FAIL_BACK_TASKS_KEY = \"failbacktasks\";\n-\n-    int DEFAULT_FAILBACK_TASKS = 100;\n-\n-    int DEFAULT_FORKS = 2;\n-\n-    String WEIGHT_KEY = \"weight\";\n-\n-    int DEFAULT_WEIGHT = 100;\n-\n-    String MOCK_PROTOCOL = \"mock\";\n-\n-    String FORCE_KEY = \"force\";\n-\n-    /**\n-     * To decide whether to exclude unavailable invoker from the cluster\n-     */\n-    String CLUSTER_AVAILABLE_CHECK_KEY = \"cluster.availablecheck\";\n-\n-    /**\n-     * The default value of cluster.availablecheck\n-     *\n-     * @see #CLUSTER_AVAILABLE_CHECK_KEY\n-     */\n-    boolean DEFAULT_CLUSTER_AVAILABLE_CHECK = true;\n-\n-    /**\n-     * To decide whether to enable sticky strategy for cluster\n-     */\n-    String CLUSTER_STICKY_KEY = \"sticky\";\n-\n-    /**\n-     * The default value of sticky\n-     *\n-     * @see #CLUSTER_STICKY_KEY\n-     */\n-    boolean DEFAULT_CLUSTER_STICKY = false;\n-\n-    String ADDRESS_KEY = \"address\";\n-\n-    /**\n-     * When this attribute appears in invocation's attachment, mock invoker will be used\n-     */\n-    String INVOCATION_NEED_MOCK = \"invocation.need.mock\";\n-\n-    /**\n-     * when ROUTER_KEY's value is set to ROUTER_TYPE_CLEAR, RegistryDirectory will clean all current routers\n-     */\n-    String ROUTER_TYPE_CLEAR = \"clean\";\n-\n-    String DEFAULT_SCRIPT_TYPE_KEY = \"javascript\";\n-\n-    String PRIORITY_KEY = \"priority\";\n-\n-    String RULE_KEY = \"rule\";\n-\n-    String TYPE_KEY = \"type\";\n-\n-    String RUNTIME_KEY = \"runtime\";\n-\n-    String WARMUP_KEY = \"warmup\";\n-\n-    int DEFAULT_WARMUP = 10 * 60 * 1000;\n-\n-    String CONFIG_VERSION_KEY = \"configVersion\";\n-\n-    String OVERRIDE_PROVIDERS_KEY = \"providerAddresses\";\n-\n-\n-    /**\n-     * key for router type, for e.g., \"script\"/\"file\",  corresponding to ScriptRouterFactory.NAME, FileRouterFactory.NAME\n-     */\n-    String ROUTER_KEY = \"router\";\n-    /**\n-     * The key name for reference URL in register center\n-     */\n-    String REFER_KEY = \"refer\";\n-    /**\n-     * The key name for export URL in register center\n-     */\n-    String EXPORT_KEY = \"export\";\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster;\r\n+\r\n+public interface Constants {\r\n+\r\n+    String FAIL_BACK_TASKS_KEY = \"failbacktasks\";\r\n+\r\n+    int DEFAULT_FAILBACK_TASKS = 100;\r\n+\r\n+    int DEFAULT_FORKS = 2;\r\n+\r\n+    String WEIGHT_KEY = \"weight\";\r\n+\r\n+    int DEFAULT_WEIGHT = 100;\r\n+\r\n+    String MOCK_PROTOCOL = \"mock\";\r\n+\r\n+    String FORCE_KEY = \"force\";\r\n+\r\n+    /**\r\n+     * To decide whether to exclude unavailable invoker from the cluster\r\n+     */\r\n+    String CLUSTER_AVAILABLE_CHECK_KEY = \"cluster.availablecheck\";\r\n+\r\n+    /**\r\n+     * The default value of cluster.availablecheck\r\n+     *\r\n+     * @see #CLUSTER_AVAILABLE_CHECK_KEY\r\n+     */\r\n+    boolean DEFAULT_CLUSTER_AVAILABLE_CHECK = true;\r\n+\r\n+    /**\r\n+     * To decide whether to enable sticky strategy for cluster\r\n+     */\r\n+    String CLUSTER_STICKY_KEY = \"sticky\";\r\n+\r\n+    /**\r\n+     * The default value of sticky\r\n+     *\r\n+     * @see #CLUSTER_STICKY_KEY\r\n+     */\r\n+    boolean DEFAULT_CLUSTER_STICKY = false;\r\n+\r\n+    String ADDRESS_KEY = \"address\";\r\n+\r\n+    /**\r\n+     * When this attribute appears in invocation's attachment, mock invoker will be used\r\n+     */\r\n+    String INVOCATION_NEED_MOCK = \"invocation.need.mock\";\r\n+\r\n+    /**\r\n+     * when ROUTER_KEY's value is set to ROUTER_TYPE_CLEAR, RegistryDirectory will clean all current routers\r\n+     */\r\n+    String ROUTER_TYPE_CLEAR = \"clean\";\r\n+\r\n+    String DEFAULT_SCRIPT_TYPE_KEY = \"javascript\";\r\n+\r\n+    String PRIORITY_KEY = \"priority\";\r\n+\r\n+    String RULE_KEY = \"rule\";\r\n+\r\n+    String TYPE_KEY = \"type\";\r\n+\r\n+    String RUNTIME_KEY = \"runtime\";\r\n+\r\n+    String WARMUP_KEY = \"warmup\";\r\n+\r\n+    int DEFAULT_WARMUP = 10 * 60 * 1000;\r\n+\r\n+    String CONFIG_VERSION_KEY = \"configVersion\";\r\n+\r\n+    String OVERRIDE_PROVIDERS_KEY = \"providerAddresses\";\r\n+\r\n+\r\n+    /**\r\n+     * key for router type, for e.g., \"script\"/\"file\",  corresponding to ScriptRouterFactory.NAME, FileRouterFactory.NAME\r\n+     */\r\n+    String ROUTER_KEY = \"router\";\r\n+    /**\r\n+     * The key name for reference URL in register center\r\n+     */\r\n+    String REFER_KEY = \"refer\";\r\n+    /**\r\n+     * The key name for export URL in register center\r\n+     */\r\n+    String EXPORT_KEY = \"export\";\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/RouterChain.java", "source2": "org/apache/dubbo/rpc/cluster/RouterChain.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,112 +1,112 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-\n-import java.util.ArrayList;\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.stream.Collectors;\n-\n-/**\n- * Router chain\n- */\n-public class RouterChain<T> {\n-\n-    // full list of addresses from registry, classified by method name.\n-    private List<Invoker<T>> invokers = Collections.emptyList();\n-\n-    // containing all routers, reconstruct every time 'route://' urls change.\n-    private volatile List<Router> routers = Collections.emptyList();\n-\n-    // Fixed router instances: ConfigConditionRouter, TagRouter, e.g., the rule for each instance may change but the\n-    // instance will never delete or recreate.\n-    private List<Router> builtinRouters = Collections.emptyList();\n-\n-    public static <T> RouterChain<T> buildChain(URL url) {\n-        return new RouterChain<>(url);\n-    }\n-\n-    private RouterChain(URL url) {\n-        List<RouterFactory> extensionFactories = ExtensionLoader.getExtensionLoader(RouterFactory.class)\n-                .getActivateExtension(url, \"router\");\n-\n-        List<Router> routers = extensionFactories.stream()\n-                .map(factory -> factory.getRouter(url))\n-                .collect(Collectors.toList());\n-\n-        initWithRouters(routers);\n-    }\n-\n-    /**\n-     * the resident routers must being initialized before address notification.\n-     * FIXME: this method should not be public\n-     */\n-    public void initWithRouters(List<Router> builtinRouters) {\n-        this.builtinRouters = builtinRouters;\n-        this.routers = new ArrayList<>(builtinRouters);\n-        this.sort();\n-    }\n-\n-    /**\n-     * If we use route:// protocol in version before 2.7.0, each URL will generate a Router instance, so we should\n-     * keep the routers up to date, that is, each time router URLs changes, we should update the routers list, only\n-     * keep the builtinRouters which are available all the time and the latest notified routers which are generated\n-     * from URLs.\n-     *\n-     * @param routers routers from 'router://' rules in 2.6.x or before.\n-     */\n-    public void addRouters(List<Router> routers) {\n-        List<Router> newRouters = new ArrayList<>();\n-        newRouters.addAll(builtinRouters);\n-        newRouters.addAll(routers);\n-        CollectionUtils.sort(newRouters);\n-        this.routers = newRouters;\n-    }\n-\n-    private void sort() {\n-        Collections.sort(routers);\n-    }\n-\n-    /**\n-     *\n-     * @param url\n-     * @param invocation\n-     * @return\n-     */\n-    public List<Invoker<T>> route(URL url, Invocation invocation) {\n-        List<Invoker<T>> finalInvokers = invokers;\n-        for (Router router : routers) {\n-            finalInvokers = router.route(finalInvokers, url, invocation);\n-        }\n-        return finalInvokers;\n-    }\n-\n-    /**\n-     * Notify router chain of the initial addresses from registry at the first time.\n-     * Notify whenever addresses in registry change.\n-     */\n-    public void setInvokers(List<Invoker<T>> invokers) {\n-        this.invokers = (invokers == null ? Collections.emptyList() : invokers);\n-        routers.forEach(router -> router.notify(this.invokers));\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.stream.Collectors;\r\n+\r\n+/**\r\n+ * Router chain\r\n+ */\r\n+public class RouterChain<T> {\r\n+\r\n+    // full list of addresses from registry, classified by method name.\r\n+    private List<Invoker<T>> invokers = Collections.emptyList();\r\n+\r\n+    // containing all routers, reconstruct every time 'route://' urls change.\r\n+    private volatile List<Router> routers = Collections.emptyList();\r\n+\r\n+    // Fixed router instances: ConfigConditionRouter, TagRouter, e.g., the rule for each instance may change but the\r\n+    // instance will never delete or recreate.\r\n+    private List<Router> builtinRouters = Collections.emptyList();\r\n+\r\n+    public static <T> RouterChain<T> buildChain(URL url) {\r\n+        return new RouterChain<>(url);\r\n+    }\r\n+\r\n+    private RouterChain(URL url) {\r\n+        List<RouterFactory> extensionFactories = ExtensionLoader.getExtensionLoader(RouterFactory.class)\r\n+                .getActivateExtension(url, \"router\");\r\n+\r\n+        List<Router> routers = extensionFactories.stream()\r\n+                .map(factory -> factory.getRouter(url))\r\n+                .collect(Collectors.toList());\r\n+\r\n+        initWithRouters(routers);\r\n+    }\r\n+\r\n+    /**\r\n+     * the resident routers must being initialized before address notification.\r\n+     * FIXME: this method should not be public\r\n+     */\r\n+    public void initWithRouters(List<Router> builtinRouters) {\r\n+        this.builtinRouters = builtinRouters;\r\n+        this.routers = new ArrayList<>(builtinRouters);\r\n+        this.sort();\r\n+    }\r\n+\r\n+    /**\r\n+     * If we use route:// protocol in version before 2.7.0, each URL will generate a Router instance, so we should\r\n+     * keep the routers up to date, that is, each time router URLs changes, we should update the routers list, only\r\n+     * keep the builtinRouters which are available all the time and the latest notified routers which are generated\r\n+     * from URLs.\r\n+     *\r\n+     * @param routers routers from 'router://' rules in 2.6.x or before.\r\n+     */\r\n+    public void addRouters(List<Router> routers) {\r\n+        List<Router> newRouters = new ArrayList<>();\r\n+        newRouters.addAll(builtinRouters);\r\n+        newRouters.addAll(routers);\r\n+        CollectionUtils.sort(newRouters);\r\n+        this.routers = newRouters;\r\n+    }\r\n+\r\n+    private void sort() {\r\n+        Collections.sort(routers);\r\n+    }\r\n+\r\n+    /**\r\n+     *\r\n+     * @param url\r\n+     * @param invocation\r\n+     * @return\r\n+     */\r\n+    public List<Invoker<T>> route(URL url, Invocation invocation) {\r\n+        List<Invoker<T>> finalInvokers = invokers;\r\n+        for (Router router : routers) {\r\n+            finalInvokers = router.route(finalInvokers, url, invocation);\r\n+        }\r\n+        return finalInvokers;\r\n+    }\r\n+\r\n+    /**\r\n+     * Notify router chain of the initial addresses from registry at the first time.\r\n+     * Notify whenever addresses in registry change.\r\n+     */\r\n+    public void setInvokers(List<Invoker<T>> invokers) {\r\n+        this.invokers = (invokers == null ? Collections.emptyList() : invokers);\r\n+        routers.forEach(router -> router.notify(this.invokers));\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/configurator/parser/ConfigParser.java", "source2": "org/apache/dubbo/rpc/cluster/configurator/parser/ConfigParser.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,225 +1,225 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.configurator.parser;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.PojoUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.rpc.cluster.configurator.parser.model.ConfigItem;\n-import org.apache.dubbo.rpc.cluster.configurator.parser.model.ConfiguratorConfig;\n-\n-import com.alibaba.fastjson.JSON;\n-import com.alibaba.fastjson.JSONValidator;\n-import org.yaml.snakeyaml.Yaml;\n-import org.yaml.snakeyaml.constructor.SafeConstructor;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_VALUE;\n-import static org.apache.dubbo.common.constants.RegistryConstants.APP_DYNAMIC_CONFIGURATORS_CATEGORY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.DYNAMIC_CONFIGURATORS_CATEGORY;\n-import static org.apache.dubbo.rpc.cluster.Constants.OVERRIDE_PROVIDERS_KEY;\n-\n-/**\n- * Config parser\n- */\n-public class ConfigParser {\n-\n-    public static List<URL> parseConfigurators(String rawConfig) throws Exception {\n-        // compatible url JsonArray, such as [ \"override://xxx\", \"override://xxx\" ]\n-        if (isJsonArray(rawConfig)) {\n-            return parseJsonArray(rawConfig);\n-        }\n-\n-        List<URL> urls = new ArrayList<>();\n-        ConfiguratorConfig configuratorConfig = parseObject(rawConfig);\n-\n-        String scope = configuratorConfig.getScope();\n-        List<ConfigItem> items = configuratorConfig.getConfigs();\n-\n-        if (ConfiguratorConfig.SCOPE_APPLICATION.equals(scope)) {\n-            items.forEach(item -> urls.addAll(appItemToUrls(item, configuratorConfig)));\n-        } else {\n-            // service scope by default.\n-            items.forEach(item -> urls.addAll(serviceItemToUrls(item, configuratorConfig)));\n-        }\n-        return urls;\n-    }\n-\n-    private static List<URL> parseJsonArray(String rawConfig) {\n-        List<URL> urls = new ArrayList<>();\n-        List<String> list = JSON.parseArray(rawConfig, String.class);\n-        if (!CollectionUtils.isEmpty(list)) {\n-            list.forEach(u -> urls.add(URL.valueOf(u)));\n-        }\n-        return urls;\n-    }\n-\n-    private static <T> T parseObject(String rawConfig) throws Exception {\n-        Yaml yaml = new Yaml(new SafeConstructor());\n-        Map<String, Object> map = yaml.load(rawConfig);\n-        return (T) PojoUtils.mapToPojo(map, ConfiguratorConfig.class);\n-    }\n-\n-    private static List<URL> serviceItemToUrls(ConfigItem item, ConfiguratorConfig config) {\n-        List<URL> urls = new ArrayList<>();\n-        List<String> addresses = parseAddresses(item);\n-\n-        addresses.forEach(addr -> {\n-            StringBuilder urlBuilder = new StringBuilder();\n-            urlBuilder.append(\"override://\").append(addr).append(\"/\");\n-\n-            urlBuilder.append(appendService(config.getKey()));\n-            urlBuilder.append(toParameterString(item));\n-\n-            parseEnabled(item, config, urlBuilder);\n-\n-            urlBuilder.append(\"&category=\").append(DYNAMIC_CONFIGURATORS_CATEGORY);\n-            urlBuilder.append(\"&configVersion=\").append(config.getConfigVersion());\n-\n-            List<String> apps = item.getApplications();\n-            if (CollectionUtils.isNotEmpty(apps)) {\n-                apps.forEach(app -> urls.add(URL.valueOf(urlBuilder.append(\"&application=\").append(app).toString())));\n-            } else {\n-                urls.add(URL.valueOf(urlBuilder.toString()));\n-            }\n-        });\n-\n-        return urls;\n-    }\n-\n-    private static List<URL> appItemToUrls(ConfigItem item, ConfiguratorConfig config) {\n-        List<URL> urls = new ArrayList<>();\n-        List<String> addresses = parseAddresses(item);\n-        for (String addr : addresses) {\n-            StringBuilder urlBuilder = new StringBuilder();\n-            urlBuilder.append(\"override://\").append(addr).append(\"/\");\n-            List<String> services = item.getServices();\n-            if (services == null) {\n-                services = new ArrayList<>();\n-            }\n-            if (services.isEmpty()) {\n-                services.add(\"*\");\n-            }\n-            for (String s : services) {\n-                urlBuilder.append(appendService(s));\n-                urlBuilder.append(toParameterString(item));\n-\n-                urlBuilder.append(\"&application=\").append(config.getKey());\n-\n-                parseEnabled(item, config, urlBuilder);\n-\n-                urlBuilder.append(\"&category=\").append(APP_DYNAMIC_CONFIGURATORS_CATEGORY);\n-                urlBuilder.append(\"&configVersion=\").append(config.getConfigVersion());\n-\n-                urls.add(URL.valueOf(urlBuilder.toString()));\n-            }\n-        }\n-        return urls;\n-    }\n-\n-    private static String toParameterString(ConfigItem item) {\n-        StringBuilder sb = new StringBuilder();\n-        sb.append(\"category=\");\n-        sb.append(DYNAMIC_CONFIGURATORS_CATEGORY);\n-        if (item.getSide() != null) {\n-            sb.append(\"&side=\");\n-            sb.append(item.getSide());\n-        }\n-        Map<String, String> parameters = item.getParameters();\n-        if (CollectionUtils.isEmptyMap(parameters)) {\n-            throw new IllegalStateException(\"Invalid configurator rule, please specify at least one parameter \" +\n-                    \"you want to change in the rule.\");\n-        }\n-\n-        parameters.forEach((k, v) -> {\n-            sb.append(\"&\");\n-            sb.append(k);\n-            sb.append(\"=\");\n-            sb.append(v);\n-        });\n-\n-        if (CollectionUtils.isNotEmpty(item.getProviderAddresses())) {\n-            sb.append(\"&\");\n-            sb.append(OVERRIDE_PROVIDERS_KEY);\n-            sb.append(\"=\");\n-            sb.append(CollectionUtils.join(item.getProviderAddresses(), \",\"));\n-        }\n-\n-        return sb.toString();\n-    }\n-\n-    private static String appendService(String serviceKey) {\n-        StringBuilder sb = new StringBuilder();\n-        if (StringUtils.isEmpty(serviceKey)) {\n-            throw new IllegalStateException(\"service field in configuration is null.\");\n-        }\n-\n-        String interfaceName = serviceKey;\n-        int i = interfaceName.indexOf('/');\n-        if (i > 0) {\n-            sb.append(\"group=\");\n-            sb.append(interfaceName, 0, i);\n-            sb.append(\"&\");\n-\n-            interfaceName = interfaceName.substring(i + 1);\n-        }\n-        int j = interfaceName.indexOf(':');\n-        if (j > 0) {\n-            sb.append(\"version=\");\n-            sb.append(interfaceName.substring(j + 1));\n-            sb.append(\"&\");\n-            interfaceName = interfaceName.substring(0, j);\n-        }\n-        sb.insert(0, interfaceName + \"?\");\n-\n-        return sb.toString();\n-    }\n-\n-    private static void parseEnabled(ConfigItem item, ConfiguratorConfig config, StringBuilder urlBuilder) {\n-        urlBuilder.append(\"&enabled=\");\n-        if (item.getType() == null || ConfigItem.GENERAL_TYPE.equals(item.getType())) {\n-            urlBuilder.append(config.getEnabled());\n-        } else {\n-            urlBuilder.append(item.getEnabled());\n-        }\n-    }\n-\n-    private static List<String> parseAddresses(ConfigItem item) {\n-        List<String> addresses = item.getAddresses();\n-        if (addresses == null) {\n-            addresses = new ArrayList<>();\n-        }\n-        if (addresses.isEmpty()) {\n-            addresses.add(ANYHOST_VALUE);\n-        }\n-        return addresses;\n-    }\n-\n-    private static boolean isJsonArray(String rawConfig) {\n-        try {\n-            JSONValidator validator = JSONValidator.from(rawConfig);\n-            return validator.validate() && validator.getType() == JSONValidator.Type.Array;\n-        } catch (Exception e) {\n-            // ignore exception and return false\n-        }\n-        return false;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.configurator.parser;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.PojoUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.rpc.cluster.configurator.parser.model.ConfigItem;\r\n+import org.apache.dubbo.rpc.cluster.configurator.parser.model.ConfiguratorConfig;\r\n+\r\n+import com.alibaba.fastjson.JSON;\r\n+import com.alibaba.fastjson.JSONValidator;\r\n+import org.yaml.snakeyaml.Yaml;\r\n+import org.yaml.snakeyaml.constructor.SafeConstructor;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_VALUE;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.APP_DYNAMIC_CONFIGURATORS_CATEGORY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.DYNAMIC_CONFIGURATORS_CATEGORY;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.OVERRIDE_PROVIDERS_KEY;\r\n+\r\n+/**\r\n+ * Config parser\r\n+ */\r\n+public class ConfigParser {\r\n+\r\n+    public static List<URL> parseConfigurators(String rawConfig) throws Exception {\r\n+        // compatible url JsonArray, such as [ \"override://xxx\", \"override://xxx\" ]\r\n+        if (isJsonArray(rawConfig)) {\r\n+            return parseJsonArray(rawConfig);\r\n+        }\r\n+\r\n+        List<URL> urls = new ArrayList<>();\r\n+        ConfiguratorConfig configuratorConfig = parseObject(rawConfig);\r\n+\r\n+        String scope = configuratorConfig.getScope();\r\n+        List<ConfigItem> items = configuratorConfig.getConfigs();\r\n+\r\n+        if (ConfiguratorConfig.SCOPE_APPLICATION.equals(scope)) {\r\n+            items.forEach(item -> urls.addAll(appItemToUrls(item, configuratorConfig)));\r\n+        } else {\r\n+            // service scope by default.\r\n+            items.forEach(item -> urls.addAll(serviceItemToUrls(item, configuratorConfig)));\r\n+        }\r\n+        return urls;\r\n+    }\r\n+\r\n+    private static List<URL> parseJsonArray(String rawConfig) {\r\n+        List<URL> urls = new ArrayList<>();\r\n+        List<String> list = JSON.parseArray(rawConfig, String.class);\r\n+        if (!CollectionUtils.isEmpty(list)) {\r\n+            list.forEach(u -> urls.add(URL.valueOf(u)));\r\n+        }\r\n+        return urls;\r\n+    }\r\n+\r\n+    private static <T> T parseObject(String rawConfig) throws Exception {\r\n+        Yaml yaml = new Yaml(new SafeConstructor());\r\n+        Map<String, Object> map = yaml.load(rawConfig);\r\n+        return (T) PojoUtils.mapToPojo(map, ConfiguratorConfig.class);\r\n+    }\r\n+\r\n+    private static List<URL> serviceItemToUrls(ConfigItem item, ConfiguratorConfig config) {\r\n+        List<URL> urls = new ArrayList<>();\r\n+        List<String> addresses = parseAddresses(item);\r\n+\r\n+        addresses.forEach(addr -> {\r\n+            StringBuilder urlBuilder = new StringBuilder();\r\n+            urlBuilder.append(\"override://\").append(addr).append(\"/\");\r\n+\r\n+            urlBuilder.append(appendService(config.getKey()));\r\n+            urlBuilder.append(toParameterString(item));\r\n+\r\n+            parseEnabled(item, config, urlBuilder);\r\n+\r\n+            urlBuilder.append(\"&category=\").append(DYNAMIC_CONFIGURATORS_CATEGORY);\r\n+            urlBuilder.append(\"&configVersion=\").append(config.getConfigVersion());\r\n+\r\n+            List<String> apps = item.getApplications();\r\n+            if (CollectionUtils.isNotEmpty(apps)) {\r\n+                apps.forEach(app -> urls.add(URL.valueOf(urlBuilder.append(\"&application=\").append(app).toString())));\r\n+            } else {\r\n+                urls.add(URL.valueOf(urlBuilder.toString()));\r\n+            }\r\n+        });\r\n+\r\n+        return urls;\r\n+    }\r\n+\r\n+    private static List<URL> appItemToUrls(ConfigItem item, ConfiguratorConfig config) {\r\n+        List<URL> urls = new ArrayList<>();\r\n+        List<String> addresses = parseAddresses(item);\r\n+        for (String addr : addresses) {\r\n+            StringBuilder urlBuilder = new StringBuilder();\r\n+            urlBuilder.append(\"override://\").append(addr).append(\"/\");\r\n+            List<String> services = item.getServices();\r\n+            if (services == null) {\r\n+                services = new ArrayList<>();\r\n+            }\r\n+            if (services.isEmpty()) {\r\n+                services.add(\"*\");\r\n+            }\r\n+            for (String s : services) {\r\n+                urlBuilder.append(appendService(s));\r\n+                urlBuilder.append(toParameterString(item));\r\n+\r\n+                urlBuilder.append(\"&application=\").append(config.getKey());\r\n+\r\n+                parseEnabled(item, config, urlBuilder);\r\n+\r\n+                urlBuilder.append(\"&category=\").append(APP_DYNAMIC_CONFIGURATORS_CATEGORY);\r\n+                urlBuilder.append(\"&configVersion=\").append(config.getConfigVersion());\r\n+\r\n+                urls.add(URL.valueOf(urlBuilder.toString()));\r\n+            }\r\n+        }\r\n+        return urls;\r\n+    }\r\n+\r\n+    private static String toParameterString(ConfigItem item) {\r\n+        StringBuilder sb = new StringBuilder();\r\n+        sb.append(\"category=\");\r\n+        sb.append(DYNAMIC_CONFIGURATORS_CATEGORY);\r\n+        if (item.getSide() != null) {\r\n+            sb.append(\"&side=\");\r\n+            sb.append(item.getSide());\r\n+        }\r\n+        Map<String, String> parameters = item.getParameters();\r\n+        if (CollectionUtils.isEmptyMap(parameters)) {\r\n+            throw new IllegalStateException(\"Invalid configurator rule, please specify at least one parameter \" +\r\n+                    \"you want to change in the rule.\");\r\n+        }\r\n+\r\n+        parameters.forEach((k, v) -> {\r\n+            sb.append(\"&\");\r\n+            sb.append(k);\r\n+            sb.append(\"=\");\r\n+            sb.append(v);\r\n+        });\r\n+\r\n+        if (CollectionUtils.isNotEmpty(item.getProviderAddresses())) {\r\n+            sb.append(\"&\");\r\n+            sb.append(OVERRIDE_PROVIDERS_KEY);\r\n+            sb.append(\"=\");\r\n+            sb.append(CollectionUtils.join(item.getProviderAddresses(), \",\"));\r\n+        }\r\n+\r\n+        return sb.toString();\r\n+    }\r\n+\r\n+    private static String appendService(String serviceKey) {\r\n+        StringBuilder sb = new StringBuilder();\r\n+        if (StringUtils.isEmpty(serviceKey)) {\r\n+            throw new IllegalStateException(\"service field in configuration is null.\");\r\n+        }\r\n+\r\n+        String interfaceName = serviceKey;\r\n+        int i = interfaceName.indexOf('/');\r\n+        if (i > 0) {\r\n+            sb.append(\"group=\");\r\n+            sb.append(interfaceName, 0, i);\r\n+            sb.append(\"&\");\r\n+\r\n+            interfaceName = interfaceName.substring(i + 1);\r\n+        }\r\n+        int j = interfaceName.indexOf(':');\r\n+        if (j > 0) {\r\n+            sb.append(\"version=\");\r\n+            sb.append(interfaceName.substring(j + 1));\r\n+            sb.append(\"&\");\r\n+            interfaceName = interfaceName.substring(0, j);\r\n+        }\r\n+        sb.insert(0, interfaceName + \"?\");\r\n+\r\n+        return sb.toString();\r\n+    }\r\n+\r\n+    private static void parseEnabled(ConfigItem item, ConfiguratorConfig config, StringBuilder urlBuilder) {\r\n+        urlBuilder.append(\"&enabled=\");\r\n+        if (item.getType() == null || ConfigItem.GENERAL_TYPE.equals(item.getType())) {\r\n+            urlBuilder.append(config.getEnabled());\r\n+        } else {\r\n+            urlBuilder.append(item.getEnabled());\r\n+        }\r\n+    }\r\n+\r\n+    private static List<String> parseAddresses(ConfigItem item) {\r\n+        List<String> addresses = item.getAddresses();\r\n+        if (addresses == null) {\r\n+            addresses = new ArrayList<>();\r\n+        }\r\n+        if (addresses.isEmpty()) {\r\n+            addresses.add(ANYHOST_VALUE);\r\n+        }\r\n+        return addresses;\r\n+    }\r\n+\r\n+    private static boolean isJsonArray(String rawConfig) {\r\n+        try {\r\n+            JSONValidator validator = JSONValidator.from(rawConfig);\r\n+            return validator.validate() && validator.getType() == JSONValidator.Type.Array;\r\n+        } catch (Exception e) {\r\n+            // ignore exception and return false\r\n+        }\r\n+        return false;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java", "source2": "org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,141 +1,141 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.directory;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.cluster.Directory;\n-import org.apache.dubbo.rpc.cluster.Router;\n-import org.apache.dubbo.rpc.cluster.RouterChain;\n-\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.MONITOR_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\n-import static org.apache.dubbo.rpc.cluster.Constants.REFER_KEY;\n-\n-/**\n- * Abstract implementation of Directory: Invoker list returned from this Directory's list method have been filtered by Routers\n- */\n-public abstract class AbstractDirectory<T> implements Directory<T> {\n-\n-    // logger\n-    private static final Logger logger = LoggerFactory.getLogger(AbstractDirectory.class);\n-\n-    private final URL url;\n-\n-    private volatile boolean destroyed = false;\n-\n-    protected volatile URL consumerUrl;\n-\n-    protected final Map<String, String> queryMap; // Initialization at construction time, assertion not null\n-    protected final String consumedProtocol;\n-\n-    protected RouterChain<T> routerChain;\n-\n-    public AbstractDirectory(URL url) {\n-        this(url, null, false);\n-    }\n-\n-    public AbstractDirectory(URL url, boolean isUrlFromRegistry) {\n-        this(url, null, isUrlFromRegistry);\n-    }\n-\n-    public AbstractDirectory(URL url, RouterChain<T> routerChain, boolean isUrlFromRegistry) {\n-        if (url == null) {\n-            throw new IllegalArgumentException(\"url == null\");\n-        }\n-\n-        queryMap = StringUtils.parseQueryString(url.getParameterAndDecoded(REFER_KEY));\n-        String path = queryMap.get(PATH_KEY);\n-        this.consumedProtocol = this.queryMap.get(PROTOCOL_KEY) == null ? DUBBO : this.queryMap.get(PROTOCOL_KEY);\n-        this.url = url.removeParameter(REFER_KEY).removeParameter(MONITOR_KEY);\n-\n-        URL consumerUrlFrom = this.url.setProtocol(consumedProtocol)\n-                .setPath(path == null ? queryMap.get(INTERFACE_KEY) : path);\n-        if (isUrlFromRegistry) {\n-            // reserve parameters if url is already a consumer url\n-            consumerUrlFrom = consumerUrlFrom.clearParameters();\n-        }\n-        this.consumerUrl = consumerUrlFrom.addParameters(queryMap).removeParameter(MONITOR_KEY);\n-\n-        setRouterChain(routerChain);\n-    }\n-\n-    @Override\n-    public List<Invoker<T>> list(Invocation invocation) throws RpcException {\n-        if (destroyed) {\n-            throw new RpcException(\"Directory already destroyed .url: \" + getUrl());\n-        }\n-\n-        return doList(invocation);\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return url;\n-    }\n-\n-    public RouterChain<T> getRouterChain() {\n-        return routerChain;\n-    }\n-\n-    public void setRouterChain(RouterChain<T> routerChain) {\n-        this.routerChain = routerChain;\n-    }\n-\n-    protected void addRouters(List<Router> routers) {\n-        routers = routers == null ? Collections.emptyList() : routers;\n-        routerChain.addRouters(routers);\n-    }\n-\n-    public URL getConsumerUrl() {\n-        return consumerUrl;\n-    }\n-\n-    public void setConsumerUrl(URL consumerUrl) {\n-        this.consumerUrl = consumerUrl;\n-    }\n-\n-    @Override\n-    public boolean isDestroyed() {\n-        return destroyed;\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        destroyed = true;\n-    }\n-\n-    @Override\n-    public void discordAddresses() {\n-        // do nothing by default\n-    }\n-\n-    protected abstract List<Invoker<T>> doList(Invocation invocation) throws RpcException;\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.directory;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.cluster.Directory;\r\n+import org.apache.dubbo.rpc.cluster.Router;\r\n+import org.apache.dubbo.rpc.cluster.RouterChain;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.MONITOR_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.REFER_KEY;\r\n+\r\n+/**\r\n+ * Abstract implementation of Directory: Invoker list returned from this Directory's list method have been filtered by Routers\r\n+ */\r\n+public abstract class AbstractDirectory<T> implements Directory<T> {\r\n+\r\n+    // logger\r\n+    private static final Logger logger = LoggerFactory.getLogger(AbstractDirectory.class);\r\n+\r\n+    private final URL url;\r\n+\r\n+    private volatile boolean destroyed = false;\r\n+\r\n+    protected volatile URL consumerUrl;\r\n+\r\n+    protected final Map<String, String> queryMap; // Initialization at construction time, assertion not null\r\n+    protected final String consumedProtocol;\r\n+\r\n+    protected RouterChain<T> routerChain;\r\n+\r\n+    public AbstractDirectory(URL url) {\r\n+        this(url, null, false);\r\n+    }\r\n+\r\n+    public AbstractDirectory(URL url, boolean isUrlFromRegistry) {\r\n+        this(url, null, isUrlFromRegistry);\r\n+    }\r\n+\r\n+    public AbstractDirectory(URL url, RouterChain<T> routerChain, boolean isUrlFromRegistry) {\r\n+        if (url == null) {\r\n+            throw new IllegalArgumentException(\"url == null\");\r\n+        }\r\n+\r\n+        queryMap = StringUtils.parseQueryString(url.getParameterAndDecoded(REFER_KEY));\r\n+        String path = queryMap.get(PATH_KEY);\r\n+        this.consumedProtocol = this.queryMap.get(PROTOCOL_KEY) == null ? DUBBO : this.queryMap.get(PROTOCOL_KEY);\r\n+        this.url = url.removeParameter(REFER_KEY).removeParameter(MONITOR_KEY);\r\n+\r\n+        URL consumerUrlFrom = this.url.setProtocol(consumedProtocol)\r\n+                .setPath(path == null ? queryMap.get(INTERFACE_KEY) : path);\r\n+        if (isUrlFromRegistry) {\r\n+            // reserve parameters if url is already a consumer url\r\n+            consumerUrlFrom = consumerUrlFrom.clearParameters();\r\n+        }\r\n+        this.consumerUrl = consumerUrlFrom.addParameters(queryMap).removeParameter(MONITOR_KEY);\r\n+\r\n+        setRouterChain(routerChain);\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<Invoker<T>> list(Invocation invocation) throws RpcException {\r\n+        if (destroyed) {\r\n+            throw new RpcException(\"Directory already destroyed .url: \" + getUrl());\r\n+        }\r\n+\r\n+        return doList(invocation);\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return url;\r\n+    }\r\n+\r\n+    public RouterChain<T> getRouterChain() {\r\n+        return routerChain;\r\n+    }\r\n+\r\n+    public void setRouterChain(RouterChain<T> routerChain) {\r\n+        this.routerChain = routerChain;\r\n+    }\r\n+\r\n+    protected void addRouters(List<Router> routers) {\r\n+        routers = routers == null ? Collections.emptyList() : routers;\r\n+        routerChain.addRouters(routers);\r\n+    }\r\n+\r\n+    public URL getConsumerUrl() {\r\n+        return consumerUrl;\r\n+    }\r\n+\r\n+    public void setConsumerUrl(URL consumerUrl) {\r\n+        this.consumerUrl = consumerUrl;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isDestroyed() {\r\n+        return destroyed;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        destroyed = true;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void discordAddresses() {\r\n+        // do nothing by default\r\n+    }\r\n+\r\n+    protected abstract List<Invoker<T>> doList(Invocation invocation) throws RpcException;\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/governance/DefaultGovernanceRuleRepositoryImpl.java", "source2": "org/apache/dubbo/rpc/cluster/governance/DefaultGovernanceRuleRepositoryImpl.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,40 +1,40 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.governance;\n-\n-import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-\n-public class DefaultGovernanceRuleRepositoryImpl implements GovernanceRuleRepository {\n-\n-    private DynamicConfiguration dynamicConfiguration = DynamicConfiguration.getDynamicConfiguration();\n-\n-    @Override\n-    public void addListener(String key, String group, ConfigurationListener listener) {\n-        dynamicConfiguration.addListener(key, group, listener);\n-    }\n-\n-    @Override\n-    public void removeListener(String key, String group, ConfigurationListener listener) {\n-        dynamicConfiguration.removeListener(key, group, listener);\n-    }\n-\n-    @Override\n-    public String getRule(String key, String group, long timeout) throws IllegalStateException {\n-        return dynamicConfiguration.getConfig(key, group, timeout);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.governance;\r\n+\r\n+import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+\r\n+public class DefaultGovernanceRuleRepositoryImpl implements GovernanceRuleRepository {\r\n+\r\n+    private DynamicConfiguration dynamicConfiguration = DynamicConfiguration.getDynamicConfiguration();\r\n+\r\n+    @Override\r\n+    public void addListener(String key, String group, ConfigurationListener listener) {\r\n+        dynamicConfiguration.addListener(key, group, listener);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeListener(String key, String group, ConfigurationListener listener) {\r\n+        dynamicConfiguration.removeListener(key, group, listener);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getRule(String key, String group, long timeout) throws IllegalStateException {\r\n+        return dynamicConfiguration.getConfig(key, group, timeout);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/governance/GovernanceRuleRepository.java", "source2": "org/apache/dubbo/rpc/cluster/governance/GovernanceRuleRepository.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,91 +1,91 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.governance;\n-\n-import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-@SPI(\"default\")\n-public interface GovernanceRuleRepository {\n-\n-    String DEFAULT_GROUP = \"dubbo\";\n-\n-    /**\n-     * {@link #addListener(String, String, ConfigurationListener)}\n-     *\n-     * @param key      the key to represent a configuration\n-     * @param listener configuration listener\n-     */\n-    default void addListener(String key, ConfigurationListener listener) {\n-        addListener(key, DEFAULT_GROUP, listener);\n-    }\n-\n-\n-    /**\n-     * {@link #removeListener(String, String, ConfigurationListener)}\n-     *\n-     * @param key      the key to represent a configuration\n-     * @param listener configuration listener\n-     */\n-    default void removeListener(String key, ConfigurationListener listener) {\n-        removeListener(key, DEFAULT_GROUP, listener);\n-    }\n-\n-    /**\n-     * Register a configuration listener for a specified key\n-     * The listener only works for service governance purpose, so the target group would always be the value user\n-     * specifies at startup or 'dubbo' by default. This method will only register listener, which means it will not\n-     * trigger a notification that contains the current value.\n-     *\n-     * @param key      the key to represent a configuration\n-     * @param group    the group where the key belongs to\n-     * @param listener configuration listener\n-     */\n-    void addListener(String key, String group, ConfigurationListener listener);\n-\n-    /**\n-     * Stops one listener from listening to value changes in the specified key.\n-     *\n-     * @param key      the key to represent a configuration\n-     * @param group    the group where the key belongs to\n-     * @param listener configuration listener\n-     */\n-    void removeListener(String key, String group, ConfigurationListener listener);\n-\n-    /**\n-     * Get the governance rule mapped to the given key and the given group\n-     *\n-     * @param key   the key to represent a configuration\n-     * @param group the group where the key belongs to\n-     * @return target configuration mapped to the given key and the given group\n-     */\n-    default String getRule(String key, String group) {\n-        return getRule(key, group, -1L);\n-    }\n-\n-    /**\n-     * Get the governance rule mapped to the given key and the given group. If the\n-     * rule fails to return after timeout exceeds, IllegalStateException will be thrown.\n-     *\n-     * @param key     the key to represent a configuration\n-     * @param group   the group where the key belongs to\n-     * @param timeout timeout value for fetching the target config\n-     * @return target configuration mapped to the given key and the given group, IllegalStateException will be thrown\n-     * if timeout exceeds.\n-     */\n-    String getRule(String key, String group, long timeout) throws IllegalStateException;\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.governance;\r\n+\r\n+import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+@SPI(\"default\")\r\n+public interface GovernanceRuleRepository {\r\n+\r\n+    String DEFAULT_GROUP = \"dubbo\";\r\n+\r\n+    /**\r\n+     * {@link #addListener(String, String, ConfigurationListener)}\r\n+     *\r\n+     * @param key      the key to represent a configuration\r\n+     * @param listener configuration listener\r\n+     */\r\n+    default void addListener(String key, ConfigurationListener listener) {\r\n+        addListener(key, DEFAULT_GROUP, listener);\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * {@link #removeListener(String, String, ConfigurationListener)}\r\n+     *\r\n+     * @param key      the key to represent a configuration\r\n+     * @param listener configuration listener\r\n+     */\r\n+    default void removeListener(String key, ConfigurationListener listener) {\r\n+        removeListener(key, DEFAULT_GROUP, listener);\r\n+    }\r\n+\r\n+    /**\r\n+     * Register a configuration listener for a specified key\r\n+     * The listener only works for service governance purpose, so the target group would always be the value user\r\n+     * specifies at startup or 'dubbo' by default. This method will only register listener, which means it will not\r\n+     * trigger a notification that contains the current value.\r\n+     *\r\n+     * @param key      the key to represent a configuration\r\n+     * @param group    the group where the key belongs to\r\n+     * @param listener configuration listener\r\n+     */\r\n+    void addListener(String key, String group, ConfigurationListener listener);\r\n+\r\n+    /**\r\n+     * Stops one listener from listening to value changes in the specified key.\r\n+     *\r\n+     * @param key      the key to represent a configuration\r\n+     * @param group    the group where the key belongs to\r\n+     * @param listener configuration listener\r\n+     */\r\n+    void removeListener(String key, String group, ConfigurationListener listener);\r\n+\r\n+    /**\r\n+     * Get the governance rule mapped to the given key and the given group\r\n+     *\r\n+     * @param key   the key to represent a configuration\r\n+     * @param group the group where the key belongs to\r\n+     * @return target configuration mapped to the given key and the given group\r\n+     */\r\n+    default String getRule(String key, String group) {\r\n+        return getRule(key, group, -1L);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the governance rule mapped to the given key and the given group. If the\r\n+     * rule fails to return after timeout exceeds, IllegalStateException will be thrown.\r\n+     *\r\n+     * @param key     the key to represent a configuration\r\n+     * @param group   the group where the key belongs to\r\n+     * @param timeout timeout value for fetching the target config\r\n+     * @return target configuration mapped to the given key and the given group, IllegalStateException will be thrown\r\n+     * if timeout exceeds.\r\n+     */\r\n+    String getRule(String key, String group, long timeout) throws IllegalStateException;\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/interceptor/ClusterInterceptor.java", "source2": "org/apache/dubbo/rpc/cluster/interceptor/ClusterInterceptor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,56 +1,56 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.interceptor;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.rpc.Filter;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;\n-\n-/**\n- * Different from {@link Filter}, ClusterInterceptor works at the outmost layer, before one specific address/invoker is picked.\n- */\n-@SPI\n-public interface ClusterInterceptor {\n-\n-    void before(AbstractClusterInvoker<?> clusterInvoker, Invocation invocation);\n-\n-    void after(AbstractClusterInvoker<?> clusterInvoker, Invocation invocation);\n-\n-    /**\n-     * Does not need to override this method, override {@link #before(AbstractClusterInvoker, Invocation)}\n-     * and {@link #after(AbstractClusterInvoker, Invocation)}, methods to add your own logic expected to be\n-     * executed before and after invoke.\n-     *\n-     * @param clusterInvoker\n-     * @param invocation\n-     * @return\n-     * @throws RpcException\n-     */\n-    default Result intercept(AbstractClusterInvoker<?> clusterInvoker, Invocation invocation) throws RpcException {\n-        return clusterInvoker.invoke(invocation);\n-    }\n-\n-    interface Listener {\n-\n-        void onMessage(Result appResponse, AbstractClusterInvoker<?> clusterInvoker, Invocation invocation);\n-\n-        void onError(Throwable t, AbstractClusterInvoker<?> clusterInvoker, Invocation invocation);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.interceptor;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.rpc.Filter;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;\r\n+\r\n+/**\r\n+ * Different from {@link Filter}, ClusterInterceptor works at the outmost layer, before one specific address/invoker is picked.\r\n+ */\r\n+@SPI\r\n+public interface ClusterInterceptor {\r\n+\r\n+    void before(AbstractClusterInvoker<?> clusterInvoker, Invocation invocation);\r\n+\r\n+    void after(AbstractClusterInvoker<?> clusterInvoker, Invocation invocation);\r\n+\r\n+    /**\r\n+     * Does not need to override this method, override {@link #before(AbstractClusterInvoker, Invocation)}\r\n+     * and {@link #after(AbstractClusterInvoker, Invocation)}, methods to add your own logic expected to be\r\n+     * executed before and after invoke.\r\n+     *\r\n+     * @param clusterInvoker\r\n+     * @param invocation\r\n+     * @return\r\n+     * @throws RpcException\r\n+     */\r\n+    default Result intercept(AbstractClusterInvoker<?> clusterInvoker, Invocation invocation) throws RpcException {\r\n+        return clusterInvoker.invoke(invocation);\r\n+    }\r\n+\r\n+    interface Listener {\r\n+\r\n+        void onMessage(Result appResponse, AbstractClusterInvoker<?> clusterInvoker, Invocation invocation);\r\n+\r\n+        void onError(Throwable t, AbstractClusterInvoker<?> clusterInvoker, Invocation invocation);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/interceptor/ConsumerContextClusterInterceptor.java", "source2": "org/apache/dubbo/rpc/cluster/interceptor/ConsumerContextClusterInterceptor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,54 +1,54 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.interceptor;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-import org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;\n-\n-@Activate\n-public class ConsumerContextClusterInterceptor implements ClusterInterceptor, ClusterInterceptor.Listener {\n-\n-    @Override\n-    public void before(AbstractClusterInvoker<?> invoker, Invocation invocation) {\n-        RpcContext context = RpcContext.getContext();\n-        context.setInvocation(invocation).setLocalAddress(NetUtils.getLocalHost(), 0);\n-        if (invocation instanceof RpcInvocation) {\n-            ((RpcInvocation) invocation).setInvoker(invoker);\n-        }\n-        RpcContext.removeServerContext();\n-    }\n-\n-    @Override\n-    public void after(AbstractClusterInvoker<?> clusterInvoker, Invocation invocation) {\n-        RpcContext.removeContext(true);\n-    }\n-\n-    @Override\n-    public void onMessage(Result appResponse, AbstractClusterInvoker<?> invoker, Invocation invocation) {\n-        RpcContext.getServerContext().setObjectAttachments(appResponse.getObjectAttachments());\n-    }\n-\n-    @Override\n-    public void onError(Throwable t, AbstractClusterInvoker<?> invoker, Invocation invocation) {\n-\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.interceptor;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+import org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;\r\n+\r\n+@Activate\r\n+public class ConsumerContextClusterInterceptor implements ClusterInterceptor, ClusterInterceptor.Listener {\r\n+\r\n+    @Override\r\n+    public void before(AbstractClusterInvoker<?> invoker, Invocation invocation) {\r\n+        RpcContext context = RpcContext.getContext();\r\n+        context.setInvocation(invocation).setLocalAddress(NetUtils.getLocalHost(), 0);\r\n+        if (invocation instanceof RpcInvocation) {\r\n+            ((RpcInvocation) invocation).setInvoker(invoker);\r\n+        }\r\n+        RpcContext.removeServerContext();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void after(AbstractClusterInvoker<?> clusterInvoker, Invocation invocation) {\r\n+        RpcContext.removeContext(true);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void onMessage(Result appResponse, AbstractClusterInvoker<?> invoker, Invocation invocation) {\r\n+        RpcContext.getServerContext().setObjectAttachments(appResponse.getObjectAttachments());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void onError(Throwable t, AbstractClusterInvoker<?> invoker, Invocation invocation) {\r\n+\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/interceptor/ZoneAwareClusterInterceptor.java", "source2": "org/apache/dubbo/rpc/cluster/interceptor/ZoneAwareClusterInterceptor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,62 +1,62 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.interceptor;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.ZoneDetector;\n-import org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;\n-\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_ZONE;\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_ZONE_FORCE;\n-\n-/**\n- * Determines the zone information of current request.\n- *\n- * active only when url has key 'cluster=zone-aware'\n- */\n-@Activate(value = \"cluster:zone-aware\")\n-public class ZoneAwareClusterInterceptor implements ClusterInterceptor {\n-\n-    @Override\n-    public void before(AbstractClusterInvoker<?> clusterInvoker, Invocation invocation) {\n-        RpcContext rpcContext = RpcContext.getContext();\n-        String zone = (String) rpcContext.getAttachment(REGISTRY_ZONE);\n-        String force = (String) rpcContext.getAttachment(REGISTRY_ZONE_FORCE);\n-        ExtensionLoader<ZoneDetector> loader = ExtensionLoader.getExtensionLoader(ZoneDetector.class);\n-        if (StringUtils.isEmpty(zone) && loader.hasExtension(\"default\")) {\n-            ZoneDetector detector = loader.getExtension(\"default\");\n-            zone = detector.getZoneOfCurrentRequest(invocation);\n-            force = detector.isZoneForcingEnabled(invocation, zone);\n-        }\n-\n-        if (StringUtils.isNotEmpty(zone)) {\n-            invocation.setAttachment(REGISTRY_ZONE, zone);\n-        }\n-        if (StringUtils.isNotEmpty(force)) {\n-            invocation.setAttachment(REGISTRY_ZONE_FORCE, force);\n-        }\n-    }\n-\n-    @Override\n-    public void after(AbstractClusterInvoker<?> clusterInvoker, Invocation invocation) {\n-\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.interceptor;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.ZoneDetector;\r\n+import org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;\r\n+\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_ZONE;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_ZONE_FORCE;\r\n+\r\n+/**\r\n+ * Determines the zone information of current request.\r\n+ *\r\n+ * active only when url has key 'cluster=zone-aware'\r\n+ */\r\n+@Activate(value = \"cluster:zone-aware\")\r\n+public class ZoneAwareClusterInterceptor implements ClusterInterceptor {\r\n+\r\n+    @Override\r\n+    public void before(AbstractClusterInvoker<?> clusterInvoker, Invocation invocation) {\r\n+        RpcContext rpcContext = RpcContext.getContext();\r\n+        String zone = (String) rpcContext.getAttachment(REGISTRY_ZONE);\r\n+        String force = (String) rpcContext.getAttachment(REGISTRY_ZONE_FORCE);\r\n+        ExtensionLoader<ZoneDetector> loader = ExtensionLoader.getExtensionLoader(ZoneDetector.class);\r\n+        if (StringUtils.isEmpty(zone) && loader.hasExtension(\"default\")) {\r\n+            ZoneDetector detector = loader.getExtension(\"default\");\r\n+            zone = detector.getZoneOfCurrentRequest(invocation);\r\n+            force = detector.isZoneForcingEnabled(invocation, zone);\r\n+        }\r\n+\r\n+        if (StringUtils.isNotEmpty(zone)) {\r\n+            invocation.setAttachment(REGISTRY_ZONE, zone);\r\n+        }\r\n+        if (StringUtils.isNotEmpty(force)) {\r\n+            invocation.setAttachment(REGISTRY_ZONE_FORCE, force);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void after(AbstractClusterInvoker<?> clusterInvoker, Invocation invocation) {\r\n+\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/loadbalance/RandomLoadBalance.java", "source2": "org/apache/dubbo/rpc/cluster/loadbalance/RandomLoadBalance.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,80 +1,80 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.loadbalance;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-\n-import java.util.List;\n-import java.util.concurrent.ThreadLocalRandom;\n-\n-/**\n- * This class select one provider from multiple providers randomly.\n- * You can define weights for each provider:\n- * If the weights are all the same then it will use random.nextInt(number of invokers).\n- * If the weights are different then it will use random.nextInt(w1 + w2 + ... + wn)\n- * Note that if the performance of the machine is better than others, you can set a larger weight.\n- * If the performance is not so good, you can set a smaller weight.\n- */\n-public class RandomLoadBalance extends AbstractLoadBalance {\n-\n-    public static final String NAME = \"random\";\n-\n-    /**\n-     * Select one invoker between a list using a random criteria\n-     * @param invokers List of possible invokers\n-     * @param url URL\n-     * @param invocation Invocation\n-     * @param <T>\n-     * @return The selected invoker\n-     */\n-    @Override\n-    protected <T> Invoker<T> doSelect(List<Invoker<T>> invokers, URL url, Invocation invocation) {\n-        // Number of invokers\n-        int length = invokers.size();\n-        // Every invoker has the same weight?\n-        boolean sameWeight = true;\n-        // the maxWeight of every invokers, the minWeight = 0 or the maxWeight of the last invoker\n-        int[] weights = new int[length];\n-        // The sum of weights\n-        int totalWeight = 0;\n-        for (int i = 0; i < length; i++) {\n-            int weight = getWeight(invokers.get(i), invocation);\n-            // Sum\n-            totalWeight += weight;\n-            // save for later use\n-            weights[i] = totalWeight;\n-            if (sameWeight && totalWeight != weight * (i + 1)) {\n-                sameWeight = false;\n-            }\n-        }\n-        if (totalWeight > 0 && !sameWeight) {\n-            // If (not every invoker has the same weight & at least one invoker's weight>0), select randomly based on totalWeight.\n-            int offset = ThreadLocalRandom.current().nextInt(totalWeight);\n-            // Return a invoker based on the random value.\n-            for (int i = 0; i < length; i++) {\n-                if (offset < weights[i]) {\n-                    return invokers.get(i);\n-                }\n-            }\n-        }\n-        // If all invokers have the same weight value or totalWeight=0, return evenly.\n-        return invokers.get(ThreadLocalRandom.current().nextInt(length));\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.loadbalance;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+\r\n+import java.util.List;\r\n+import java.util.concurrent.ThreadLocalRandom;\r\n+\r\n+/**\r\n+ * This class select one provider from multiple providers randomly.\r\n+ * You can define weights for each provider:\r\n+ * If the weights are all the same then it will use random.nextInt(number of invokers).\r\n+ * If the weights are different then it will use random.nextInt(w1 + w2 + ... + wn)\r\n+ * Note that if the performance of the machine is better than others, you can set a larger weight.\r\n+ * If the performance is not so good, you can set a smaller weight.\r\n+ */\r\n+public class RandomLoadBalance extends AbstractLoadBalance {\r\n+\r\n+    public static final String NAME = \"random\";\r\n+\r\n+    /**\r\n+     * Select one invoker between a list using a random criteria\r\n+     * @param invokers List of possible invokers\r\n+     * @param url URL\r\n+     * @param invocation Invocation\r\n+     * @param <T>\r\n+     * @return The selected invoker\r\n+     */\r\n+    @Override\r\n+    protected <T> Invoker<T> doSelect(List<Invoker<T>> invokers, URL url, Invocation invocation) {\r\n+        // Number of invokers\r\n+        int length = invokers.size();\r\n+        // Every invoker has the same weight?\r\n+        boolean sameWeight = true;\r\n+        // the maxWeight of every invokers, the minWeight = 0 or the maxWeight of the last invoker\r\n+        int[] weights = new int[length];\r\n+        // The sum of weights\r\n+        int totalWeight = 0;\r\n+        for (int i = 0; i < length; i++) {\r\n+            int weight = getWeight(invokers.get(i), invocation);\r\n+            // Sum\r\n+            totalWeight += weight;\r\n+            // save for later use\r\n+            weights[i] = totalWeight;\r\n+            if (sameWeight && totalWeight != weight * (i + 1)) {\r\n+                sameWeight = false;\r\n+            }\r\n+        }\r\n+        if (totalWeight > 0 && !sameWeight) {\r\n+            // If (not every invoker has the same weight & at least one invoker's weight>0), select randomly based on totalWeight.\r\n+            int offset = ThreadLocalRandom.current().nextInt(totalWeight);\r\n+            // Return a invoker based on the random value.\r\n+            for (int i = 0; i < length; i++) {\r\n+                if (offset < weights[i]) {\r\n+                    return invokers.get(i);\r\n+                }\r\n+            }\r\n+        }\r\n+        // If all invokers have the same weight value or totalWeight=0, return evenly.\r\n+        return invokers.get(ThreadLocalRandom.current().nextInt(length));\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/loadbalance/ShortestResponseLoadBalance.java", "source2": "org/apache/dubbo/rpc/cluster/loadbalance/ShortestResponseLoadBalance.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,100 +1,100 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.loadbalance;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.RpcStatus;\n-\n-import java.util.List;\n-import java.util.concurrent.ThreadLocalRandom;\n-\n-/**\n- * ShortestResponseLoadBalance\n- * </p>\n- * Filter the number of invokers with the shortest response time of success calls and count the weights and quantities of these invokers.\n- * If there is only one invoker, use the invoker directly;\n- * if there are multiple invokers and the weights are not the same, then random according to the total weight;\n- * if there are multiple invokers and the same weight, then randomly called.\n- */\n-public class ShortestResponseLoadBalance extends AbstractLoadBalance {\n-\n-    public static final String NAME = \"shortestresponse\";\n-\n-    @Override\n-    protected <T> Invoker<T> doSelect(List<Invoker<T>> invokers, URL url, Invocation invocation) {\n-        // Number of invokers\n-        int length = invokers.size();\n-        // Estimated shortest response time of all invokers\n-        long shortestResponse = Long.MAX_VALUE;\n-        // The number of invokers having the same estimated shortest response time\n-        int shortestCount = 0;\n-        // The index of invokers having the same estimated shortest response time\n-        int[] shortestIndexes = new int[length];\n-        // the weight of every invokers\n-        int[] weights = new int[length];\n-        // The sum of the warmup weights of all the shortest response  invokers\n-        int totalWeight = 0;\n-        // The weight of the first shortest response invokers\n-        int firstWeight = 0;\n-        // Every shortest response invoker has the same weight value?\n-        boolean sameWeight = true;\n-\n-        // Filter out all the shortest response invokers\n-        for (int i = 0; i < length; i++) {\n-            Invoker<T> invoker = invokers.get(i);\n-            RpcStatus rpcStatus = RpcStatus.getStatus(invoker.getUrl(), invocation.getMethodName());\n-            // Calculate the estimated response time from the product of active connections and succeeded average elapsed time.\n-            long succeededAverageElapsed = rpcStatus.getSucceededAverageElapsed();\n-            int active = rpcStatus.getActive();\n-            long estimateResponse = succeededAverageElapsed * active;\n-            int afterWarmup = getWeight(invoker, invocation);\n-            weights[i] = afterWarmup;\n-            // Same as LeastActiveLoadBalance\n-            if (estimateResponse < shortestResponse) {\n-                shortestResponse = estimateResponse;\n-                shortestCount = 1;\n-                shortestIndexes[0] = i;\n-                totalWeight = afterWarmup;\n-                firstWeight = afterWarmup;\n-                sameWeight = true;\n-            } else if (estimateResponse == shortestResponse) {\n-                shortestIndexes[shortestCount++] = i;\n-                totalWeight += afterWarmup;\n-                if (sameWeight && i > 0\n-                        && afterWarmup != firstWeight) {\n-                    sameWeight = false;\n-                }\n-            }\n-        }\n-        if (shortestCount == 1) {\n-            return invokers.get(shortestIndexes[0]);\n-        }\n-        if (!sameWeight && totalWeight > 0) {\n-            int offsetWeight = ThreadLocalRandom.current().nextInt(totalWeight);\n-            for (int i = 0; i < shortestCount; i++) {\n-                int shortestIndex = shortestIndexes[i];\n-                offsetWeight -= weights[shortestIndex];\n-                if (offsetWeight < 0) {\n-                    return invokers.get(shortestIndex);\n-                }\n-            }\n-        }\n-        return invokers.get(shortestIndexes[ThreadLocalRandom.current().nextInt(shortestCount)]);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.loadbalance;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.RpcStatus;\r\n+\r\n+import java.util.List;\r\n+import java.util.concurrent.ThreadLocalRandom;\r\n+\r\n+/**\r\n+ * ShortestResponseLoadBalance\r\n+ * </p>\r\n+ * Filter the number of invokers with the shortest response time of success calls and count the weights and quantities of these invokers.\r\n+ * If there is only one invoker, use the invoker directly;\r\n+ * if there are multiple invokers and the weights are not the same, then random according to the total weight;\r\n+ * if there are multiple invokers and the same weight, then randomly called.\r\n+ */\r\n+public class ShortestResponseLoadBalance extends AbstractLoadBalance {\r\n+\r\n+    public static final String NAME = \"shortestresponse\";\r\n+\r\n+    @Override\r\n+    protected <T> Invoker<T> doSelect(List<Invoker<T>> invokers, URL url, Invocation invocation) {\r\n+        // Number of invokers\r\n+        int length = invokers.size();\r\n+        // Estimated shortest response time of all invokers\r\n+        long shortestResponse = Long.MAX_VALUE;\r\n+        // The number of invokers having the same estimated shortest response time\r\n+        int shortestCount = 0;\r\n+        // The index of invokers having the same estimated shortest response time\r\n+        int[] shortestIndexes = new int[length];\r\n+        // the weight of every invokers\r\n+        int[] weights = new int[length];\r\n+        // The sum of the warmup weights of all the shortest response  invokers\r\n+        int totalWeight = 0;\r\n+        // The weight of the first shortest response invokers\r\n+        int firstWeight = 0;\r\n+        // Every shortest response invoker has the same weight value?\r\n+        boolean sameWeight = true;\r\n+\r\n+        // Filter out all the shortest response invokers\r\n+        for (int i = 0; i < length; i++) {\r\n+            Invoker<T> invoker = invokers.get(i);\r\n+            RpcStatus rpcStatus = RpcStatus.getStatus(invoker.getUrl(), invocation.getMethodName());\r\n+            // Calculate the estimated response time from the product of active connections and succeeded average elapsed time.\r\n+            long succeededAverageElapsed = rpcStatus.getSucceededAverageElapsed();\r\n+            int active = rpcStatus.getActive();\r\n+            long estimateResponse = succeededAverageElapsed * active;\r\n+            int afterWarmup = getWeight(invoker, invocation);\r\n+            weights[i] = afterWarmup;\r\n+            // Same as LeastActiveLoadBalance\r\n+            if (estimateResponse < shortestResponse) {\r\n+                shortestResponse = estimateResponse;\r\n+                shortestCount = 1;\r\n+                shortestIndexes[0] = i;\r\n+                totalWeight = afterWarmup;\r\n+                firstWeight = afterWarmup;\r\n+                sameWeight = true;\r\n+            } else if (estimateResponse == shortestResponse) {\r\n+                shortestIndexes[shortestCount++] = i;\r\n+                totalWeight += afterWarmup;\r\n+                if (sameWeight && i > 0\r\n+                        && afterWarmup != firstWeight) {\r\n+                    sameWeight = false;\r\n+                }\r\n+            }\r\n+        }\r\n+        if (shortestCount == 1) {\r\n+            return invokers.get(shortestIndexes[0]);\r\n+        }\r\n+        if (!sameWeight && totalWeight > 0) {\r\n+            int offsetWeight = ThreadLocalRandom.current().nextInt(totalWeight);\r\n+            for (int i = 0; i < shortestCount; i++) {\r\n+                int shortestIndex = shortestIndexes[i];\r\n+                offsetWeight -= weights[shortestIndex];\r\n+                if (offsetWeight < 0) {\r\n+                    return invokers.get(shortestIndex);\r\n+                }\r\n+            }\r\n+        }\r\n+        return invokers.get(shortestIndexes[ThreadLocalRandom.current().nextInt(shortestCount)]);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/merger/DoubleArrayMerger.java", "source2": "org/apache/dubbo/rpc/cluster/merger/DoubleArrayMerger.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,37 +1,37 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.rpc.cluster.merger;\n-\n-import org.apache.dubbo.common.utils.ArrayUtils;\n-import org.apache.dubbo.rpc.cluster.Merger;\n-\n-import java.util.Arrays;\n-import java.util.Objects;\n-\n-public class DoubleArrayMerger implements Merger<double[]> {\n-\n-    @Override\n-    public double[] merge(double[]... items) {\n-        if (ArrayUtils.isEmpty(items)) {\n-            return new double[0];\n-        }\n-        return Arrays.stream(items).filter(Objects::nonNull)\n-                .flatMapToDouble(Arrays::stream)\n-                .toArray();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.rpc.cluster.merger;\r\n+\r\n+import org.apache.dubbo.common.utils.ArrayUtils;\r\n+import org.apache.dubbo.rpc.cluster.Merger;\r\n+\r\n+import java.util.Arrays;\r\n+import java.util.Objects;\r\n+\r\n+public class DoubleArrayMerger implements Merger<double[]> {\r\n+\r\n+    @Override\r\n+    public double[] merge(double[]... items) {\r\n+        if (ArrayUtils.isEmpty(items)) {\r\n+            return new double[0];\r\n+        }\r\n+        return Arrays.stream(items).filter(Objects::nonNull)\r\n+                .flatMapToDouble(Arrays::stream)\r\n+                .toArray();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/merger/IntArrayMerger.java", "source2": "org/apache/dubbo/rpc/cluster/merger/IntArrayMerger.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,38 +1,38 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.rpc.cluster.merger;\n-\n-import org.apache.dubbo.common.utils.ArrayUtils;\n-import org.apache.dubbo.rpc.cluster.Merger;\n-\n-import java.util.Arrays;\n-import java.util.Objects;\n-\n-public class IntArrayMerger implements Merger<int[]> {\n-\n-    @Override\n-    public int[] merge(int[]... items) {\n-        if (ArrayUtils.isEmpty(items)) {\n-            return new int[0];\n-        }\n-        return Arrays.stream(items).filter(Objects::nonNull)\n-                .flatMapToInt(Arrays::stream)\n-                .toArray();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.rpc.cluster.merger;\r\n+\r\n+import org.apache.dubbo.common.utils.ArrayUtils;\r\n+import org.apache.dubbo.rpc.cluster.Merger;\r\n+\r\n+import java.util.Arrays;\r\n+import java.util.Objects;\r\n+\r\n+public class IntArrayMerger implements Merger<int[]> {\r\n+\r\n+    @Override\r\n+    public int[] merge(int[]... items) {\r\n+        if (ArrayUtils.isEmpty(items)) {\r\n+            return new int[0];\r\n+        }\r\n+        return Arrays.stream(items).filter(Objects::nonNull)\r\n+                .flatMapToInt(Arrays::stream)\r\n+                .toArray();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/merger/ListMerger.java", "source2": "org/apache/dubbo/rpc/cluster/merger/ListMerger.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,43 +1,43 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.rpc.cluster.merger;\n-\n-import org.apache.dubbo.common.utils.ArrayUtils;\n-import org.apache.dubbo.rpc.cluster.Merger;\n-\n-import java.util.Collection;\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.Objects;\n-import java.util.stream.Collectors;\n-import java.util.stream.Stream;\n-\n-public class ListMerger implements Merger<List<?>> {\n-\n-    @Override\n-    public List<Object> merge(List<?>... items) {\n-        if (ArrayUtils.isEmpty(items)) {\n-            return Collections.emptyList();\n-        }\n-        return Stream.of(items).filter(Objects::nonNull)\n-                .flatMap(Collection::stream)\n-                .collect(Collectors.toList());\n-\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.rpc.cluster.merger;\r\n+\r\n+import org.apache.dubbo.common.utils.ArrayUtils;\r\n+import org.apache.dubbo.rpc.cluster.Merger;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.Objects;\r\n+import java.util.stream.Collectors;\r\n+import java.util.stream.Stream;\r\n+\r\n+public class ListMerger implements Merger<List<?>> {\r\n+\r\n+    @Override\r\n+    public List<Object> merge(List<?>... items) {\r\n+        if (ArrayUtils.isEmpty(items)) {\r\n+            return Collections.emptyList();\r\n+        }\r\n+        return Stream.of(items).filter(Objects::nonNull)\r\n+                .flatMap(Collection::stream)\r\n+                .collect(Collectors.toList());\r\n+\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/merger/LongArrayMerger.java", "source2": "org/apache/dubbo/rpc/cluster/merger/LongArrayMerger.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,37 +1,37 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.rpc.cluster.merger;\n-\n-import org.apache.dubbo.common.utils.ArrayUtils;\n-import org.apache.dubbo.rpc.cluster.Merger;\n-\n-import java.util.Arrays;\n-import java.util.Objects;\n-\n-public class LongArrayMerger implements Merger<long[]> {\n-\n-    @Override\n-    public long[] merge(long[]... items) {\n-        if (ArrayUtils.isEmpty(items)) {\n-            return new long[0];\n-        }\n-        return Arrays.stream(items).filter(Objects::nonNull)\n-                .flatMapToLong(Arrays::stream)\n-                .toArray();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.rpc.cluster.merger;\r\n+\r\n+import org.apache.dubbo.common.utils.ArrayUtils;\r\n+import org.apache.dubbo.rpc.cluster.Merger;\r\n+\r\n+import java.util.Arrays;\r\n+import java.util.Objects;\r\n+\r\n+public class LongArrayMerger implements Merger<long[]> {\r\n+\r\n+    @Override\r\n+    public long[] merge(long[]... items) {\r\n+        if (ArrayUtils.isEmpty(items)) {\r\n+            return new long[0];\r\n+        }\r\n+        return Arrays.stream(items).filter(Objects::nonNull)\r\n+                .flatMapToLong(Arrays::stream)\r\n+                .toArray();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/merger/MapMerger.java", "source2": "org/apache/dubbo/rpc/cluster/merger/MapMerger.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,40 +1,40 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.merger;\n-\n-import org.apache.dubbo.common.utils.ArrayUtils;\n-import org.apache.dubbo.rpc.cluster.Merger;\n-\n-import java.util.Collections;\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.Objects;\n-import java.util.stream.Stream;\n-\n-public class MapMerger implements Merger<Map<?, ?>> {\n-\n-    @Override\n-    public Map<?, ?> merge(Map<?, ?>... items) {\n-        if (ArrayUtils.isEmpty(items)) {\n-            return Collections.emptyMap();\n-        }\n-        Map<Object, Object> result = new HashMap<Object, Object>();\n-        Stream.of(items).filter(Objects::nonNull).forEach(result::putAll);\n-        return result;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.merger;\r\n+\r\n+import org.apache.dubbo.common.utils.ArrayUtils;\r\n+import org.apache.dubbo.rpc.cluster.Merger;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.Objects;\r\n+import java.util.stream.Stream;\r\n+\r\n+public class MapMerger implements Merger<Map<?, ?>> {\r\n+\r\n+    @Override\r\n+    public Map<?, ?> merge(Map<?, ?>... items) {\r\n+        if (ArrayUtils.isEmpty(items)) {\r\n+            return Collections.emptyMap();\r\n+        }\r\n+        Map<Object, Object> result = new HashMap<Object, Object>();\r\n+        Stream.of(items).filter(Objects::nonNull).forEach(result::putAll);\r\n+        return result;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/merger/MergerFactory.java", "source2": "org/apache/dubbo/rpc/cluster/merger/MergerFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,76 +1,76 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.rpc.cluster.merger;\n-\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.rpc.cluster.Merger;\n-\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-public class MergerFactory {\n-\n-    private static final ConcurrentMap<Class<?>, Merger<?>> MERGER_CACHE =\n-            new ConcurrentHashMap<Class<?>, Merger<?>>();\n-\n-    /**\n-     * Find the merger according to the returnType class, the merger will\n-     * merge an array of returnType into one\n-     *\n-     * @param returnType the merger will return this type\n-     * @return the merger which merges an array of returnType into one, return null if not exist\n-     * @throws IllegalArgumentException if returnType is null\n-     */\n-    public static <T> Merger<T> getMerger(Class<T> returnType) {\n-        if (returnType == null) {\n-            throw new IllegalArgumentException(\"returnType is null\");\n-        }\n-\n-        Merger result;\n-        if (returnType.isArray()) {\n-            Class type = returnType.getComponentType();\n-            result = MERGER_CACHE.get(type);\n-            if (result == null) {\n-                loadMergers();\n-                result = MERGER_CACHE.get(type);\n-            }\n-            if (result == null && !type.isPrimitive()) {\n-                result = ArrayMerger.INSTANCE;\n-            }\n-        } else {\n-            result = MERGER_CACHE.get(returnType);\n-            if (result == null) {\n-                loadMergers();\n-                result = MERGER_CACHE.get(returnType);\n-            }\n-        }\n-        return result;\n-    }\n-\n-    static void loadMergers() {\n-        Set<String> names = ExtensionLoader.getExtensionLoader(Merger.class)\n-                .getSupportedExtensions();\n-        for (String name : names) {\n-            Merger m = ExtensionLoader.getExtensionLoader(Merger.class).getExtension(name);\n-            MERGER_CACHE.putIfAbsent(ReflectUtils.getGenericClass(m.getClass()), m);\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.rpc.cluster.merger;\r\n+\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.rpc.cluster.Merger;\r\n+\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+public class MergerFactory {\r\n+\r\n+    private static final ConcurrentMap<Class<?>, Merger<?>> MERGER_CACHE =\r\n+            new ConcurrentHashMap<Class<?>, Merger<?>>();\r\n+\r\n+    /**\r\n+     * Find the merger according to the returnType class, the merger will\r\n+     * merge an array of returnType into one\r\n+     *\r\n+     * @param returnType the merger will return this type\r\n+     * @return the merger which merges an array of returnType into one, return null if not exist\r\n+     * @throws IllegalArgumentException if returnType is null\r\n+     */\r\n+    public static <T> Merger<T> getMerger(Class<T> returnType) {\r\n+        if (returnType == null) {\r\n+            throw new IllegalArgumentException(\"returnType is null\");\r\n+        }\r\n+\r\n+        Merger result;\r\n+        if (returnType.isArray()) {\r\n+            Class type = returnType.getComponentType();\r\n+            result = MERGER_CACHE.get(type);\r\n+            if (result == null) {\r\n+                loadMergers();\r\n+                result = MERGER_CACHE.get(type);\r\n+            }\r\n+            if (result == null && !type.isPrimitive()) {\r\n+                result = ArrayMerger.INSTANCE;\r\n+            }\r\n+        } else {\r\n+            result = MERGER_CACHE.get(returnType);\r\n+            if (result == null) {\r\n+                loadMergers();\r\n+                result = MERGER_CACHE.get(returnType);\r\n+            }\r\n+        }\r\n+        return result;\r\n+    }\r\n+\r\n+    static void loadMergers() {\r\n+        Set<String> names = ExtensionLoader.getExtensionLoader(Merger.class)\r\n+                .getSupportedExtensions();\r\n+        for (String name : names) {\r\n+            Merger m = ExtensionLoader.getExtensionLoader(Merger.class).getExtension(name);\r\n+            MERGER_CACHE.putIfAbsent(ReflectUtils.getGenericClass(m.getClass()), m);\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/merger/SetMerger.java", "source2": "org/apache/dubbo/rpc/cluster/merger/SetMerger.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,39 +1,39 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.merger;\n-\n-import org.apache.dubbo.common.utils.ArrayUtils;\n-import org.apache.dubbo.rpc.cluster.Merger;\n-\n-import java.util.Collections;\n-import java.util.HashSet;\n-import java.util.Objects;\n-import java.util.Set;\n-import java.util.stream.Stream;\n-\n-public class SetMerger implements Merger<Set<?>> {\n-\n-    @Override\n-    public Set<Object> merge(Set<?>... items) {\n-        if (ArrayUtils.isEmpty(items)) {\n-            return Collections.emptySet();\n-        }\n-        Set<Object> result = new HashSet<Object>();\n-        Stream.of(items).filter(Objects::nonNull).forEach(result::addAll);\n-        return result;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.merger;\r\n+\r\n+import org.apache.dubbo.common.utils.ArrayUtils;\r\n+import org.apache.dubbo.rpc.cluster.Merger;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.HashSet;\r\n+import java.util.Objects;\r\n+import java.util.Set;\r\n+import java.util.stream.Stream;\r\n+\r\n+public class SetMerger implements Merger<Set<?>> {\r\n+\r\n+    @Override\r\n+    public Set<Object> merge(Set<?>... items) {\r\n+        if (ArrayUtils.isEmpty(items)) {\r\n+            return Collections.emptySet();\r\n+        }\r\n+        Set<Object> result = new HashSet<Object>();\r\n+        Stream.of(items).filter(Objects::nonNull).forEach(result::addAll);\r\n+        return result;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/router/AbstractRouter.java", "source2": "org/apache/dubbo/rpc/cluster/router/AbstractRouter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,71 +1,71 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.router;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.rpc.cluster.Router;\n-import org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository;\n-\n-public abstract class AbstractRouter implements Router {\n-    protected int priority = DEFAULT_PRIORITY;\n-    protected boolean force = false;\n-    protected URL url;\n-\n-    protected GovernanceRuleRepository ruleRepository;\n-\n-    public AbstractRouter(URL url) {\n-        this.ruleRepository = ExtensionLoader.getExtensionLoader(GovernanceRuleRepository.class).getDefaultExtension();\n-        this.url = url;\n-    }\n-\n-    public AbstractRouter() {\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return url;\n-    }\n-\n-    public void setUrl(URL url) {\n-        this.url = url;\n-    }\n-\n-    @Override\n-    public boolean isRuntime() {\n-        return true;\n-    }\n-\n-    @Override\n-    public boolean isForce() {\n-        return force;\n-    }\n-\n-    public void setForce(boolean force) {\n-        this.force = force;\n-    }\n-\n-    @Override\n-    public int getPriority() {\n-        return priority;\n-    }\n-\n-    public void setPriority(int priority) {\n-        this.priority = priority;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.router;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.rpc.cluster.Router;\r\n+import org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository;\r\n+\r\n+public abstract class AbstractRouter implements Router {\r\n+    protected int priority = DEFAULT_PRIORITY;\r\n+    protected boolean force = false;\r\n+    protected URL url;\r\n+\r\n+    protected GovernanceRuleRepository ruleRepository;\r\n+\r\n+    public AbstractRouter(URL url) {\r\n+        this.ruleRepository = ExtensionLoader.getExtensionLoader(GovernanceRuleRepository.class).getDefaultExtension();\r\n+        this.url = url;\r\n+    }\r\n+\r\n+    public AbstractRouter() {\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return url;\r\n+    }\r\n+\r\n+    public void setUrl(URL url) {\r\n+        this.url = url;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isRuntime() {\r\n+        return true;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isForce() {\r\n+        return force;\r\n+    }\r\n+\r\n+    public void setForce(boolean force) {\r\n+        this.force = force;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getPriority() {\r\n+        return priority;\r\n+    }\r\n+\r\n+    public void setPriority(int priority) {\r\n+        this.priority = priority;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/router/condition/config/AppRouter.java", "source2": "org/apache/dubbo/rpc/cluster/router/condition/config/AppRouter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,36 +1,36 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.router.condition.config;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.constants.CommonConstants;\n-\n-/**\n- * Application level router, \"application.condition-router\"\n- */\n-public class AppRouter extends ListenableRouter {\n-    public static final String NAME = \"APP_ROUTER\";\n-    /**\n-     * AppRouter should after ServiceRouter\n-     */\n-    private static final int APP_ROUTER_DEFAULT_PRIORITY = 150;\n-\n-    public AppRouter(URL url) {\n-        super(url, url.getParameter(CommonConstants.APPLICATION_KEY));\n-        this.priority = APP_ROUTER_DEFAULT_PRIORITY;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.router.condition.config;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.constants.CommonConstants;\r\n+\r\n+/**\r\n+ * Application level router, \"application.condition-router\"\r\n+ */\r\n+public class AppRouter extends ListenableRouter {\r\n+    public static final String NAME = \"APP_ROUTER\";\r\n+    /**\r\n+     * AppRouter should after ServiceRouter\r\n+     */\r\n+    private static final int APP_ROUTER_DEFAULT_PRIORITY = 150;\r\n+\r\n+    public AppRouter(URL url) {\r\n+        super(url, url.getParameter(CommonConstants.APPLICATION_KEY));\r\n+        this.priority = APP_ROUTER_DEFAULT_PRIORITY;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/router/condition/config/AppRouterFactory.java", "source2": "org/apache/dubbo/rpc/cluster/router/condition/config/AppRouterFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,49 +1,49 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.router.condition.config;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.rpc.cluster.Router;\n-import org.apache.dubbo.rpc.cluster.RouterFactory;\n-\n-/**\n- * Application level router factory\n- */\n-@Activate(order = 200)\n-public class AppRouterFactory implements RouterFactory {\n-    public static final String NAME = \"app\";\n-\n-    private volatile Router router;\n-\n-    @Override\n-    public Router getRouter(URL url) {\n-        if (router != null) {\n-            return router;\n-        }\n-        synchronized (this) {\n-            if (router == null) {\n-                router = createRouter(url);\n-            }\n-        }\n-        return router;\n-    }\n-\n-    private Router createRouter(URL url) {\n-        return new AppRouter(url);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.router.condition.config;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.rpc.cluster.Router;\r\n+import org.apache.dubbo.rpc.cluster.RouterFactory;\r\n+\r\n+/**\r\n+ * Application level router factory\r\n+ */\r\n+@Activate(order = 200)\r\n+public class AppRouterFactory implements RouterFactory {\r\n+    public static final String NAME = \"app\";\r\n+\r\n+    private volatile Router router;\r\n+\r\n+    @Override\r\n+    public Router getRouter(URL url) {\r\n+        if (router != null) {\r\n+            return router;\r\n+        }\r\n+        synchronized (this) {\r\n+            if (router == null) {\r\n+                router = createRouter(url);\r\n+            }\r\n+        }\r\n+        return router;\r\n+    }\r\n+\r\n+    private Router createRouter(URL url) {\r\n+        return new AppRouter(url);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/router/condition/config/ListenableRouter.java", "source2": "org/apache/dubbo/rpc/cluster/router/condition/config/ListenableRouter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,127 +1,127 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.router.condition.config;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\n-import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.cluster.Router;\n-import org.apache.dubbo.rpc.cluster.router.AbstractRouter;\n-import org.apache.dubbo.rpc.cluster.router.condition.ConditionRouter;\n-import org.apache.dubbo.rpc.cluster.router.condition.config.model.ConditionRouterRule;\n-import org.apache.dubbo.rpc.cluster.router.condition.config.model.ConditionRuleParser;\n-\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.stream.Collectors;\n-\n-/**\n- * Abstract router which listens to dynamic configuration\n- */\n-public abstract class ListenableRouter extends AbstractRouter implements ConfigurationListener {\n-    public static final String NAME = \"LISTENABLE_ROUTER\";\n-    private static final String RULE_SUFFIX = \".condition-router\";\n-\n-    private static final Logger logger = LoggerFactory.getLogger(ListenableRouter.class);\n-    private ConditionRouterRule routerRule;\n-    private List<ConditionRouter> conditionRouters = Collections.emptyList();\n-\n-    public ListenableRouter(URL url, String ruleKey) {\n-        super(url);\n-        this.force = false;\n-        this.init(ruleKey);\n-    }\n-\n-    @Override\n-    public synchronized void process(ConfigChangedEvent event) {\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"Notification of condition rule, change type is: \" + event.getChangeType() +\n-                    \", raw rule is:\\n \" + event.getContent());\n-        }\n-\n-        if (event.getChangeType().equals(ConfigChangeType.DELETED)) {\n-            routerRule = null;\n-            conditionRouters = Collections.emptyList();\n-        } else {\n-            try {\n-                routerRule = ConditionRuleParser.parse(event.getContent());\n-                generateConditions(routerRule);\n-            } catch (Exception e) {\n-                logger.error(\"Failed to parse the raw condition rule and it will not take effect, please check \" +\n-                        \"if the condition rule matches with the template, the raw rule is:\\n \" + event.getContent(), e);\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public <T> List<Invoker<T>> route(List<Invoker<T>> invokers, URL url, Invocation invocation) throws RpcException {\n-        if (CollectionUtils.isEmpty(invokers) || conditionRouters.size() == 0) {\n-            return invokers;\n-        }\n-\n-        // We will check enabled status inside each router.\n-        for (Router router : conditionRouters) {\n-            invokers = router.route(invokers, url, invocation);\n-        }\n-\n-        return invokers;\n-    }\n-\n-    @Override\n-    public int getPriority() {\n-        return priority;\n-    }\n-\n-    @Override\n-    public boolean isForce() {\n-        return (routerRule != null && routerRule.isForce());\n-    }\n-\n-    private boolean isRuleRuntime() {\n-        return routerRule != null && routerRule.isValid() && routerRule.isRuntime();\n-    }\n-\n-    private void generateConditions(ConditionRouterRule rule) {\n-        if (rule != null && rule.isValid()) {\n-            this.conditionRouters = rule.getConditions()\n-                    .stream()\n-                    .map(condition -> new ConditionRouter(condition, rule.isForce(), rule.isEnabled()))\n-                    .collect(Collectors.toList());\n-        }\n-    }\n-\n-    private synchronized void init(String ruleKey) {\n-        if (StringUtils.isEmpty(ruleKey)) {\n-            return;\n-        }\n-        String routerKey = ruleKey + RULE_SUFFIX;\n-        ruleRepository.addListener(routerKey, this);\n-        String rule = ruleRepository.getRule(routerKey, DynamicConfiguration.DEFAULT_GROUP);\n-        if (StringUtils.isNotEmpty(rule)) {\n-            this.process(new ConfigChangedEvent(routerKey, DynamicConfiguration.DEFAULT_GROUP, rule));\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.router.condition.config;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.cluster.Router;\r\n+import org.apache.dubbo.rpc.cluster.router.AbstractRouter;\r\n+import org.apache.dubbo.rpc.cluster.router.condition.ConditionRouter;\r\n+import org.apache.dubbo.rpc.cluster.router.condition.config.model.ConditionRouterRule;\r\n+import org.apache.dubbo.rpc.cluster.router.condition.config.model.ConditionRuleParser;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.stream.Collectors;\r\n+\r\n+/**\r\n+ * Abstract router which listens to dynamic configuration\r\n+ */\r\n+public abstract class ListenableRouter extends AbstractRouter implements ConfigurationListener {\r\n+    public static final String NAME = \"LISTENABLE_ROUTER\";\r\n+    private static final String RULE_SUFFIX = \".condition-router\";\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(ListenableRouter.class);\r\n+    private ConditionRouterRule routerRule;\r\n+    private List<ConditionRouter> conditionRouters = Collections.emptyList();\r\n+\r\n+    public ListenableRouter(URL url, String ruleKey) {\r\n+        super(url);\r\n+        this.force = false;\r\n+        this.init(ruleKey);\r\n+    }\r\n+\r\n+    @Override\r\n+    public synchronized void process(ConfigChangedEvent event) {\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"Notification of condition rule, change type is: \" + event.getChangeType() +\r\n+                    \", raw rule is:\\n \" + event.getContent());\r\n+        }\r\n+\r\n+        if (event.getChangeType().equals(ConfigChangeType.DELETED)) {\r\n+            routerRule = null;\r\n+            conditionRouters = Collections.emptyList();\r\n+        } else {\r\n+            try {\r\n+                routerRule = ConditionRuleParser.parse(event.getContent());\r\n+                generateConditions(routerRule);\r\n+            } catch (Exception e) {\r\n+                logger.error(\"Failed to parse the raw condition rule and it will not take effect, please check \" +\r\n+                        \"if the condition rule matches with the template, the raw rule is:\\n \" + event.getContent(), e);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> List<Invoker<T>> route(List<Invoker<T>> invokers, URL url, Invocation invocation) throws RpcException {\r\n+        if (CollectionUtils.isEmpty(invokers) || conditionRouters.size() == 0) {\r\n+            return invokers;\r\n+        }\r\n+\r\n+        // We will check enabled status inside each router.\r\n+        for (Router router : conditionRouters) {\r\n+            invokers = router.route(invokers, url, invocation);\r\n+        }\r\n+\r\n+        return invokers;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getPriority() {\r\n+        return priority;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isForce() {\r\n+        return (routerRule != null && routerRule.isForce());\r\n+    }\r\n+\r\n+    private boolean isRuleRuntime() {\r\n+        return routerRule != null && routerRule.isValid() && routerRule.isRuntime();\r\n+    }\r\n+\r\n+    private void generateConditions(ConditionRouterRule rule) {\r\n+        if (rule != null && rule.isValid()) {\r\n+            this.conditionRouters = rule.getConditions()\r\n+                    .stream()\r\n+                    .map(condition -> new ConditionRouter(condition, rule.isForce(), rule.isEnabled()))\r\n+                    .collect(Collectors.toList());\r\n+        }\r\n+    }\r\n+\r\n+    private synchronized void init(String ruleKey) {\r\n+        if (StringUtils.isEmpty(ruleKey)) {\r\n+            return;\r\n+        }\r\n+        String routerKey = ruleKey + RULE_SUFFIX;\r\n+        ruleRepository.addListener(routerKey, this);\r\n+        String rule = ruleRepository.getRule(routerKey, DynamicConfiguration.DEFAULT_GROUP);\r\n+        if (StringUtils.isNotEmpty(rule)) {\r\n+            this.process(new ConfigChangedEvent(routerKey, DynamicConfiguration.DEFAULT_GROUP, rule));\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/router/condition/config/ServiceRouter.java", "source2": "org/apache/dubbo/rpc/cluster/router/condition/config/ServiceRouter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,36 +1,36 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.router.condition.config;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-\n-/**\n- * Service level router, \"server-unique-name.condition-router\"\n- */\n-public class ServiceRouter extends ListenableRouter {\n-    public static final String NAME = \"SERVICE_ROUTER\";\n-    /**\n-     * ServiceRouter should before AppRouter\n-     */\n-    private static final int SERVICE_ROUTER_DEFAULT_PRIORITY = 140;\n-\n-    public ServiceRouter(URL url) {\n-        super(url, DynamicConfiguration.getRuleKey(url));\n-        this.priority = SERVICE_ROUTER_DEFAULT_PRIORITY;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.router.condition.config;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+\r\n+/**\r\n+ * Service level router, \"server-unique-name.condition-router\"\r\n+ */\r\n+public class ServiceRouter extends ListenableRouter {\r\n+    public static final String NAME = \"SERVICE_ROUTER\";\r\n+    /**\r\n+     * ServiceRouter should before AppRouter\r\n+     */\r\n+    private static final int SERVICE_ROUTER_DEFAULT_PRIORITY = 140;\r\n+\r\n+    public ServiceRouter(URL url) {\r\n+        super(url, DynamicConfiguration.getRuleKey(url));\r\n+        this.priority = SERVICE_ROUTER_DEFAULT_PRIORITY;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/router/condition/config/ServiceRouterFactory.java", "source2": "org/apache/dubbo/rpc/cluster/router/condition/config/ServiceRouterFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,37 +1,37 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.router.condition.config;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.rpc.cluster.CacheableRouterFactory;\n-import org.apache.dubbo.rpc.cluster.Router;\n-\n-/**\n- * Service level router factory\n- */\n-@Activate(order = 300)\n-public class ServiceRouterFactory extends CacheableRouterFactory {\n-\n-    public static final String NAME = \"service\";\n-\n-    @Override\n-    protected Router createRouter(URL url) {\n-        return new ServiceRouter(url);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.router.condition.config;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.rpc.cluster.CacheableRouterFactory;\r\n+import org.apache.dubbo.rpc.cluster.Router;\r\n+\r\n+/**\r\n+ * Service level router factory\r\n+ */\r\n+@Activate(order = 300)\r\n+public class ServiceRouterFactory extends CacheableRouterFactory {\r\n+\r\n+    public static final String NAME = \"service\";\r\n+\r\n+    @Override\r\n+    protected Router createRouter(URL url) {\r\n+        return new ServiceRouter(url);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRuleParser.java", "source2": "org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRuleParser.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,55 +1,55 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.router.condition.config.model;\n-\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.PojoUtils;\n-\n-import org.yaml.snakeyaml.Yaml;\n-import org.yaml.snakeyaml.constructor.SafeConstructor;\n-\n-import java.util.Map;\n-\n-/**\n- * %YAML1.2\n- *\n- * scope: application\n- * runtime: true\n- * force: false\n- * conditions:\n- *   - >\n- *     method!=sayHello =>\n- *   - >\n- *     ip=127.0.0.1\n- *     =>\n- *     1.1.1.1\n- */\n-public class ConditionRuleParser {\n-\n-    public static ConditionRouterRule parse(String rawRule) throws Exception {\n-        Yaml yaml = new Yaml(new SafeConstructor());\n-        Map<String, Object> map = yaml.load(rawRule);\n-        ConditionRouterRule rule = PojoUtils.mapToPojo(map, ConditionRouterRule.class);\n-        rule.setRawRule(rawRule);\n-        if (CollectionUtils.isEmpty(rule.getConditions())) {\n-            rule.setValid(false);\n-        }\n-\n-        return rule;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.router.condition.config.model;\r\n+\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.PojoUtils;\r\n+\r\n+import org.yaml.snakeyaml.Yaml;\r\n+import org.yaml.snakeyaml.constructor.SafeConstructor;\r\n+\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * %YAML1.2\r\n+ *\r\n+ * scope: application\r\n+ * runtime: true\r\n+ * force: false\r\n+ * conditions:\r\n+ *   - >\r\n+ *     method!=sayHello =>\r\n+ *   - >\r\n+ *     ip=127.0.0.1\r\n+ *     =>\r\n+ *     1.1.1.1\r\n+ */\r\n+public class ConditionRuleParser {\r\n+\r\n+    public static ConditionRouterRule parse(String rawRule) throws Exception {\r\n+        Yaml yaml = new Yaml(new SafeConstructor());\r\n+        Map<String, Object> map = yaml.load(rawRule);\r\n+        ConditionRouterRule rule = PojoUtils.mapToPojo(map, ConditionRouterRule.class);\r\n+        rule.setRawRule(rawRule);\r\n+        if (CollectionUtils.isEmpty(rule.getConditions())) {\r\n+            rule.setValid(false);\r\n+        }\r\n+\r\n+        return rule;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/router/file/FileRouterFactory.java", "source2": "org/apache/dubbo/rpc/cluster/router/file/FileRouterFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,76 +1,76 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.router.file;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.URLBuilder;\n-import org.apache.dubbo.common.utils.IOUtils;\n-import org.apache.dubbo.rpc.cluster.Router;\n-import org.apache.dubbo.rpc.cluster.RouterFactory;\n-import org.apache.dubbo.rpc.cluster.router.script.ScriptRouterFactory;\n-\n-import java.io.File;\n-import java.io.FileReader;\n-import java.io.IOException;\n-\n-import static org.apache.dubbo.rpc.cluster.Constants.ROUTER_KEY;\n-import static org.apache.dubbo.rpc.cluster.Constants.RULE_KEY;\n-import static org.apache.dubbo.rpc.cluster.Constants.RUNTIME_KEY;\n-import static org.apache.dubbo.rpc.cluster.Constants.TYPE_KEY;\n-\n-public class FileRouterFactory implements RouterFactory {\n-\n-    public static final String NAME = \"file\";\n-\n-    private RouterFactory routerFactory;\n-\n-    public void setRouterFactory(RouterFactory routerFactory) {\n-        this.routerFactory = routerFactory;\n-    }\n-\n-    @Override\n-    public Router getRouter(URL url) {\n-        try {\n-            // Transform File URL into Script Route URL, and Load\n-            // file:///d:/path/to/route.js?router=script ==> script:///d:/path/to/route.js?type=js&rule=<file-content>\n-            String protocol = url.getParameter(ROUTER_KEY, ScriptRouterFactory.NAME); // Replace original protocol (maybe 'file') with 'script'\n-            String type = null; // Use file suffix to config script type, e.g., js, groovy ...\n-            String path = url.getPath();\n-            if (path != null) {\n-                int i = path.lastIndexOf('.');\n-                if (i > 0) {\n-                    type = path.substring(i + 1);\n-                }\n-            }\n-            String rule = IOUtils.read(new FileReader(new File(url.getAbsolutePath())));\n-\n-            // FIXME: this code looks useless\n-            boolean runtime = url.getParameter(RUNTIME_KEY, false);\n-            URL script = URLBuilder.from(url)\n-                    .setProtocol(protocol)\n-                    .addParameter(TYPE_KEY, type)\n-                    .addParameter(RUNTIME_KEY, runtime)\n-                    .addParameterAndEncoded(RULE_KEY, rule)\n-                    .build();\n-\n-            return routerFactory.getRouter(script);\n-        } catch (IOException e) {\n-            throw new IllegalStateException(e.getMessage(), e);\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.router.file;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.URLBuilder;\r\n+import org.apache.dubbo.common.utils.IOUtils;\r\n+import org.apache.dubbo.rpc.cluster.Router;\r\n+import org.apache.dubbo.rpc.cluster.RouterFactory;\r\n+import org.apache.dubbo.rpc.cluster.router.script.ScriptRouterFactory;\r\n+\r\n+import java.io.File;\r\n+import java.io.FileReader;\r\n+import java.io.IOException;\r\n+\r\n+import static org.apache.dubbo.rpc.cluster.Constants.ROUTER_KEY;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.RULE_KEY;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.RUNTIME_KEY;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.TYPE_KEY;\r\n+\r\n+public class FileRouterFactory implements RouterFactory {\r\n+\r\n+    public static final String NAME = \"file\";\r\n+\r\n+    private RouterFactory routerFactory;\r\n+\r\n+    public void setRouterFactory(RouterFactory routerFactory) {\r\n+        this.routerFactory = routerFactory;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Router getRouter(URL url) {\r\n+        try {\r\n+            // Transform File URL into Script Route URL, and Load\r\n+            // file:///d:/path/to/route.js?router=script ==> script:///d:/path/to/route.js?type=js&rule=<file-content>\r\n+            String protocol = url.getParameter(ROUTER_KEY, ScriptRouterFactory.NAME); // Replace original protocol (maybe 'file') with 'script'\r\n+            String type = null; // Use file suffix to config script type, e.g., js, groovy ...\r\n+            String path = url.getPath();\r\n+            if (path != null) {\r\n+                int i = path.lastIndexOf('.');\r\n+                if (i > 0) {\r\n+                    type = path.substring(i + 1);\r\n+                }\r\n+            }\r\n+            String rule = IOUtils.read(new FileReader(new File(url.getAbsolutePath())));\r\n+\r\n+            // FIXME: this code looks useless\r\n+            boolean runtime = url.getParameter(RUNTIME_KEY, false);\r\n+            URL script = URLBuilder.from(url)\r\n+                    .setProtocol(protocol)\r\n+                    .addParameter(TYPE_KEY, type)\r\n+                    .addParameter(RUNTIME_KEY, runtime)\r\n+                    .addParameterAndEncoded(RULE_KEY, rule)\r\n+                    .build();\r\n+\r\n+            return routerFactory.getRouter(script);\r\n+        } catch (IOException e) {\r\n+            throw new IllegalStateException(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelector.java", "source2": "org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelector.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,103 +1,103 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.router.mock;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.cluster.router.AbstractRouter;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-import static org.apache.dubbo.rpc.cluster.Constants.INVOCATION_NEED_MOCK;\n-import static org.apache.dubbo.rpc.cluster.Constants.MOCK_PROTOCOL;\n-\n-/**\n- * A specific Router designed to realize mock feature.\n- * If a request is configured to use mock, then this router guarantees that only the invokers with protocol MOCK appear in final the invoker list, all other invokers will be excluded.\n- */\n-public class MockInvokersSelector extends AbstractRouter {\n-\n-    public static final String NAME = \"MOCK_ROUTER\";\n-    private static final int MOCK_INVOKERS_DEFAULT_PRIORITY = -100;\n-\n-    public MockInvokersSelector() {\n-        this.priority = MOCK_INVOKERS_DEFAULT_PRIORITY;\n-    }\n-\n-    @Override\n-    public <T> List<Invoker<T>> route(final List<Invoker<T>> invokers,\n-                                      URL url, final Invocation invocation) throws RpcException {\n-        if (CollectionUtils.isEmpty(invokers)) {\n-            return invokers;\n-        }\n-\n-        if (invocation.getObjectAttachments() == null) {\n-            return getNormalInvokers(invokers);\n-        } else {\n-            String value = (String) invocation.getObjectAttachments().get(INVOCATION_NEED_MOCK);\n-            if (value == null) {\n-                return getNormalInvokers(invokers);\n-            } else if (Boolean.TRUE.toString().equalsIgnoreCase(value)) {\n-                return getMockedInvokers(invokers);\n-            }\n-        }\n-        return invokers;\n-    }\n-\n-    private <T> List<Invoker<T>> getMockedInvokers(final List<Invoker<T>> invokers) {\n-        if (!hasMockProviders(invokers)) {\n-            return null;\n-        }\n-        List<Invoker<T>> sInvokers = new ArrayList<Invoker<T>>(1);\n-        for (Invoker<T> invoker : invokers) {\n-            if (invoker.getUrl().getProtocol().equals(MOCK_PROTOCOL)) {\n-                sInvokers.add(invoker);\n-            }\n-        }\n-        return sInvokers;\n-    }\n-\n-    private <T> List<Invoker<T>> getNormalInvokers(final List<Invoker<T>> invokers) {\n-        if (!hasMockProviders(invokers)) {\n-            return invokers;\n-        } else {\n-            List<Invoker<T>> sInvokers = new ArrayList<Invoker<T>>(invokers.size());\n-            for (Invoker<T> invoker : invokers) {\n-                if (!invoker.getUrl().getProtocol().equals(MOCK_PROTOCOL)) {\n-                    sInvokers.add(invoker);\n-                }\n-            }\n-            return sInvokers;\n-        }\n-    }\n-\n-    private <T> boolean hasMockProviders(final List<Invoker<T>> invokers) {\n-        boolean hasMockProvider = false;\n-        for (Invoker<T> invoker : invokers) {\n-            if (invoker.getUrl().getProtocol().equals(MOCK_PROTOCOL)) {\n-                hasMockProvider = true;\n-                break;\n-            }\n-        }\n-        return hasMockProvider;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.router.mock;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.cluster.router.AbstractRouter;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+\r\n+import static org.apache.dubbo.rpc.cluster.Constants.INVOCATION_NEED_MOCK;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.MOCK_PROTOCOL;\r\n+\r\n+/**\r\n+ * A specific Router designed to realize mock feature.\r\n+ * If a request is configured to use mock, then this router guarantees that only the invokers with protocol MOCK appear in final the invoker list, all other invokers will be excluded.\r\n+ */\r\n+public class MockInvokersSelector extends AbstractRouter {\r\n+\r\n+    public static final String NAME = \"MOCK_ROUTER\";\r\n+    private static final int MOCK_INVOKERS_DEFAULT_PRIORITY = -100;\r\n+\r\n+    public MockInvokersSelector() {\r\n+        this.priority = MOCK_INVOKERS_DEFAULT_PRIORITY;\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> List<Invoker<T>> route(final List<Invoker<T>> invokers,\r\n+                                      URL url, final Invocation invocation) throws RpcException {\r\n+        if (CollectionUtils.isEmpty(invokers)) {\r\n+            return invokers;\r\n+        }\r\n+\r\n+        if (invocation.getObjectAttachments() == null) {\r\n+            return getNormalInvokers(invokers);\r\n+        } else {\r\n+            String value = (String) invocation.getObjectAttachments().get(INVOCATION_NEED_MOCK);\r\n+            if (value == null) {\r\n+                return getNormalInvokers(invokers);\r\n+            } else if (Boolean.TRUE.toString().equalsIgnoreCase(value)) {\r\n+                return getMockedInvokers(invokers);\r\n+            }\r\n+        }\r\n+        return invokers;\r\n+    }\r\n+\r\n+    private <T> List<Invoker<T>> getMockedInvokers(final List<Invoker<T>> invokers) {\r\n+        if (!hasMockProviders(invokers)) {\r\n+            return null;\r\n+        }\r\n+        List<Invoker<T>> sInvokers = new ArrayList<Invoker<T>>(1);\r\n+        for (Invoker<T> invoker : invokers) {\r\n+            if (invoker.getUrl().getProtocol().equals(MOCK_PROTOCOL)) {\r\n+                sInvokers.add(invoker);\r\n+            }\r\n+        }\r\n+        return sInvokers;\r\n+    }\r\n+\r\n+    private <T> List<Invoker<T>> getNormalInvokers(final List<Invoker<T>> invokers) {\r\n+        if (!hasMockProviders(invokers)) {\r\n+            return invokers;\r\n+        } else {\r\n+            List<Invoker<T>> sInvokers = new ArrayList<Invoker<T>>(invokers.size());\r\n+            for (Invoker<T> invoker : invokers) {\r\n+                if (!invoker.getUrl().getProtocol().equals(MOCK_PROTOCOL)) {\r\n+                    sInvokers.add(invoker);\r\n+                }\r\n+            }\r\n+            return sInvokers;\r\n+        }\r\n+    }\r\n+\r\n+    private <T> boolean hasMockProviders(final List<Invoker<T>> invokers) {\r\n+        boolean hasMockProvider = false;\r\n+        for (Invoker<T> invoker : invokers) {\r\n+            if (invoker.getUrl().getProtocol().equals(MOCK_PROTOCOL)) {\r\n+                hasMockProvider = true;\r\n+                break;\r\n+            }\r\n+        }\r\n+        return hasMockProvider;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java", "source2": "org/apache/dubbo/rpc/cluster/router/tag/TagRouter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,264 +1,264 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.router.tag;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\n-import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-import org.apache.dubbo.common.constants.CommonConstants;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.cluster.router.AbstractRouter;\n-import org.apache.dubbo.rpc.cluster.router.tag.model.TagRouterRule;\n-import org.apache.dubbo.rpc.cluster.router.tag.model.TagRuleParser;\n-\n-import java.util.List;\n-import java.util.function.Predicate;\n-import java.util.stream.Collectors;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_VALUE;\n-import static org.apache.dubbo.common.constants.CommonConstants.TAG_KEY;\n-import static org.apache.dubbo.rpc.Constants.FORCE_USE_TAG;\n-\n-/**\n- * TagRouter, \"application.tag-router\"\n- */\n-public class TagRouter extends AbstractRouter implements ConfigurationListener {\n-    public static final String NAME = \"TAG_ROUTER\";\n-    private static final int TAG_ROUTER_DEFAULT_PRIORITY = 100;\n-    private static final Logger logger = LoggerFactory.getLogger(TagRouter.class);\n-    private static final String RULE_SUFFIX = \".tag-router\";\n-\n-    private TagRouterRule tagRouterRule;\n-    private String application;\n-\n-    public TagRouter(URL url) {\n-        super(url);\n-        this.priority = TAG_ROUTER_DEFAULT_PRIORITY;\n-    }\n-\n-    @Override\n-    public synchronized void process(ConfigChangedEvent event) {\n-        if (logger.isDebugEnabled()) {\n-            logger.debug(\"Notification of tag rule, change type is: \" + event.getChangeType() + \", raw rule is:\\n \" +\n-                    event.getContent());\n-        }\n-\n-        try {\n-            if (event.getChangeType().equals(ConfigChangeType.DELETED)) {\n-                this.tagRouterRule = null;\n-            } else {\n-                this.tagRouterRule = TagRuleParser.parse(event.getContent());\n-            }\n-        } catch (Exception e) {\n-            logger.error(\"Failed to parse the raw tag router rule and it will not take effect, please check if the \" +\n-                    \"rule matches with the template, the raw rule is:\\n \", e);\n-        }\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return url;\n-    }\n-\n-    @Override\n-    public <T> List<Invoker<T>> route(List<Invoker<T>> invokers, URL url, Invocation invocation) throws RpcException {\n-        if (CollectionUtils.isEmpty(invokers)) {\n-            return invokers;\n-        }\n-\n-        // since the rule can be changed by config center, we should copy one to use.\n-        final TagRouterRule tagRouterRuleCopy = tagRouterRule;\n-        if (tagRouterRuleCopy == null || !tagRouterRuleCopy.isValid() || !tagRouterRuleCopy.isEnabled()) {\n-            return filterUsingStaticTag(invokers, url, invocation);\n-        }\n-\n-        List<Invoker<T>> result = invokers;\n-        String tag = StringUtils.isEmpty(invocation.getAttachment(TAG_KEY)) ? url.getParameter(TAG_KEY) :\n-                invocation.getAttachment(TAG_KEY);\n-\n-        // if we are requesting for a Provider with a specific tag\n-        if (StringUtils.isNotEmpty(tag)) {\n-            List<String> addresses = tagRouterRuleCopy.getTagnameToAddresses().get(tag);\n-            // filter by dynamic tag group first\n-            if (CollectionUtils.isNotEmpty(addresses)) {\n-                result = filterInvoker(invokers, invoker -> addressMatches(invoker.getUrl(), addresses));\n-                // if result is not null OR it's null but force=true, return result directly\n-                if (CollectionUtils.isNotEmpty(result) || tagRouterRuleCopy.isForce()) {\n-                    return result;\n-                }\n-            } else {\n-                // dynamic tag group doesn't have any item about the requested app OR it's null after filtered by\n-                // dynamic tag group but force=false. check static tag\n-                result = filterInvoker(invokers, invoker -> tag.equals(invoker.getUrl().getParameter(TAG_KEY)));\n-            }\n-            // If there's no tagged providers that can match the current tagged request. force.tag is set by default\n-            // to false, which means it will invoke any providers without a tag unless it's explicitly disallowed.\n-            if (CollectionUtils.isNotEmpty(result) || isForceUseTag(invocation)) {\n-                return result;\n-            }\n-            // FAILOVER: return all Providers without any tags.\n-            else {\n-                List<Invoker<T>> tmp = filterInvoker(invokers, invoker -> addressNotMatches(invoker.getUrl(),\n-                        tagRouterRuleCopy.getAddresses()));\n-                return filterInvoker(tmp, invoker -> StringUtils.isEmpty(invoker.getUrl().getParameter(TAG_KEY)));\n-            }\n-        } else {\n-            // List<String> addresses = tagRouterRule.filter(providerApp);\n-            // return all addresses in dynamic tag group.\n-            List<String> addresses = tagRouterRuleCopy.getAddresses();\n-            if (CollectionUtils.isNotEmpty(addresses)) {\n-                result = filterInvoker(invokers, invoker -> addressNotMatches(invoker.getUrl(), addresses));\n-                // 1. all addresses are in dynamic tag group, return empty list.\n-                if (CollectionUtils.isEmpty(result)) {\n-                    return result;\n-                }\n-                // 2. if there are some addresses that are not in any dynamic tag group, continue to filter using the\n-                // static tag group.\n-            }\n-            return filterInvoker(result, invoker -> {\n-                String localTag = invoker.getUrl().getParameter(TAG_KEY);\n-                return StringUtils.isEmpty(localTag) || !tagRouterRuleCopy.getTagNames().contains(localTag);\n-            });\n-        }\n-    }\n-\n-    /**\n-     * If there's no dynamic tag rule being set, use static tag in URL.\n-     * <p>\n-     * A typical scenario is a Consumer using version 2.7.x calls Providers using version 2.6.x or lower,\n-     * the Consumer should always respect the tag in provider URL regardless of whether a dynamic tag rule has been set to it or not.\n-     * <p>\n-     * TODO, to guarantee consistent behavior of interoperability between 2.6- and 2.7+, this method should has the same logic with the TagRouter in 2.6.x.\n-     *\n-     * @param invokers\n-     * @param url\n-     * @param invocation\n-     * @param <T>\n-     * @return\n-     */\n-    private <T> List<Invoker<T>> filterUsingStaticTag(List<Invoker<T>> invokers, URL url, Invocation invocation) {\n-        List<Invoker<T>> result;\n-        // Dynamic param\n-        String tag = StringUtils.isEmpty(invocation.getAttachment(TAG_KEY)) ? url.getParameter(TAG_KEY) :\n-                invocation.getAttachment(TAG_KEY);\n-        // Tag request\n-        if (!StringUtils.isEmpty(tag)) {\n-            result = filterInvoker(invokers, invoker -> tag.equals(invoker.getUrl().getParameter(TAG_KEY)));\n-            if (CollectionUtils.isEmpty(result) && !isForceUseTag(invocation)) {\n-                result = filterInvoker(invokers, invoker -> StringUtils.isEmpty(invoker.getUrl().getParameter(TAG_KEY)));\n-            }\n-        } else {\n-            result = filterInvoker(invokers, invoker -> StringUtils.isEmpty(invoker.getUrl().getParameter(TAG_KEY)));\n-        }\n-        return result;\n-    }\n-\n-    @Override\n-    public boolean isRuntime() {\n-        return tagRouterRule != null && tagRouterRule.isRuntime();\n-    }\n-\n-    @Override\n-    public boolean isForce() {\n-        // FIXME\n-        return tagRouterRule != null && tagRouterRule.isForce();\n-    }\n-\n-    private boolean isForceUseTag(Invocation invocation) {\n-        return Boolean.parseBoolean(invocation.getAttachment(FORCE_USE_TAG, url.getParameter(FORCE_USE_TAG, \"false\")));\n-    }\n-\n-    private <T> List<Invoker<T>> filterInvoker(List<Invoker<T>> invokers, Predicate<Invoker<T>> predicate) {\n-        if (invokers.stream().allMatch(predicate)) {\n-            return invokers;\n-        }\n-\n-        return invokers.stream()\n-                .filter(predicate)\n-                .collect(Collectors.toList());\n-    }\n-\n-    private boolean addressMatches(URL url, List<String> addresses) {\n-        return addresses != null && checkAddressMatch(addresses, url.getHost(), url.getPort());\n-    }\n-\n-    private boolean addressNotMatches(URL url, List<String> addresses) {\n-        return addresses == null || !checkAddressMatch(addresses, url.getHost(), url.getPort());\n-    }\n-\n-    private boolean checkAddressMatch(List<String> addresses, String host, int port) {\n-        for (String address : addresses) {\n-            try {\n-                if (NetUtils.matchIpExpression(address, host, port)) {\n-                    return true;\n-                }\n-                if ((ANYHOST_VALUE + \":\" + port).equals(address)) {\n-                    return true;\n-                }\n-            } catch (Exception e) {\n-                logger.error(\"The format of ip address is invalid in tag route. Address :\" + address, e);\n-            }\n-        }\n-        return false;\n-    }\n-\n-    public void setApplication(String app) {\n-        this.application = app;\n-    }\n-\n-    @Override\n-    public <T> void notify(List<Invoker<T>> invokers) {\n-        if (CollectionUtils.isEmpty(invokers)) {\n-            return;\n-        }\n-\n-        Invoker<T> invoker = invokers.get(0);\n-        URL url = invoker.getUrl();\n-        String providerApplication = url.getParameter(CommonConstants.REMOTE_APPLICATION_KEY);\n-\n-        if (StringUtils.isEmpty(providerApplication)) {\n-            logger.error(\"TagRouter must getConfig from or subscribe to a specific application, but the application \" +\n-                    \"in this TagRouter is not specified.\");\n-            return;\n-        }\n-\n-        synchronized (this) {\n-            if (!providerApplication.equals(application)) {\n-                if (!StringUtils.isEmpty(application)) {\n-                    ruleRepository.removeListener(application + RULE_SUFFIX, this);\n-                }\n-                String key = providerApplication + RULE_SUFFIX;\n-                ruleRepository.addListener(key, this);\n-                application = providerApplication;\n-                String rawRule = ruleRepository.getRule(key, DynamicConfiguration.DEFAULT_GROUP);\n-                if (StringUtils.isNotEmpty(rawRule)) {\n-                    this.process(new ConfigChangedEvent(key, DynamicConfiguration.DEFAULT_GROUP, rawRule));\n-                }\n-            }\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.router.tag;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+import org.apache.dubbo.common.constants.CommonConstants;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.cluster.router.AbstractRouter;\r\n+import org.apache.dubbo.rpc.cluster.router.tag.model.TagRouterRule;\r\n+import org.apache.dubbo.rpc.cluster.router.tag.model.TagRuleParser;\r\n+\r\n+import java.util.List;\r\n+import java.util.function.Predicate;\r\n+import java.util.stream.Collectors;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_VALUE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TAG_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.FORCE_USE_TAG;\r\n+\r\n+/**\r\n+ * TagRouter, \"application.tag-router\"\r\n+ */\r\n+public class TagRouter extends AbstractRouter implements ConfigurationListener {\r\n+    public static final String NAME = \"TAG_ROUTER\";\r\n+    private static final int TAG_ROUTER_DEFAULT_PRIORITY = 100;\r\n+    private static final Logger logger = LoggerFactory.getLogger(TagRouter.class);\r\n+    private static final String RULE_SUFFIX = \".tag-router\";\r\n+\r\n+    private TagRouterRule tagRouterRule;\r\n+    private String application;\r\n+\r\n+    public TagRouter(URL url) {\r\n+        super(url);\r\n+        this.priority = TAG_ROUTER_DEFAULT_PRIORITY;\r\n+    }\r\n+\r\n+    @Override\r\n+    public synchronized void process(ConfigChangedEvent event) {\r\n+        if (logger.isDebugEnabled()) {\r\n+            logger.debug(\"Notification of tag rule, change type is: \" + event.getChangeType() + \", raw rule is:\\n \" +\r\n+                    event.getContent());\r\n+        }\r\n+\r\n+        try {\r\n+            if (event.getChangeType().equals(ConfigChangeType.DELETED)) {\r\n+                this.tagRouterRule = null;\r\n+            } else {\r\n+                this.tagRouterRule = TagRuleParser.parse(event.getContent());\r\n+            }\r\n+        } catch (Exception e) {\r\n+            logger.error(\"Failed to parse the raw tag router rule and it will not take effect, please check if the \" +\r\n+                    \"rule matches with the template, the raw rule is:\\n \", e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return url;\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> List<Invoker<T>> route(List<Invoker<T>> invokers, URL url, Invocation invocation) throws RpcException {\r\n+        if (CollectionUtils.isEmpty(invokers)) {\r\n+            return invokers;\r\n+        }\r\n+\r\n+        // since the rule can be changed by config center, we should copy one to use.\r\n+        final TagRouterRule tagRouterRuleCopy = tagRouterRule;\r\n+        if (tagRouterRuleCopy == null || !tagRouterRuleCopy.isValid() || !tagRouterRuleCopy.isEnabled()) {\r\n+            return filterUsingStaticTag(invokers, url, invocation);\r\n+        }\r\n+\r\n+        List<Invoker<T>> result = invokers;\r\n+        String tag = StringUtils.isEmpty(invocation.getAttachment(TAG_KEY)) ? url.getParameter(TAG_KEY) :\r\n+                invocation.getAttachment(TAG_KEY);\r\n+\r\n+        // if we are requesting for a Provider with a specific tag\r\n+        if (StringUtils.isNotEmpty(tag)) {\r\n+            List<String> addresses = tagRouterRuleCopy.getTagnameToAddresses().get(tag);\r\n+            // filter by dynamic tag group first\r\n+            if (CollectionUtils.isNotEmpty(addresses)) {\r\n+                result = filterInvoker(invokers, invoker -> addressMatches(invoker.getUrl(), addresses));\r\n+                // if result is not null OR it's null but force=true, return result directly\r\n+                if (CollectionUtils.isNotEmpty(result) || tagRouterRuleCopy.isForce()) {\r\n+                    return result;\r\n+                }\r\n+            } else {\r\n+                // dynamic tag group doesn't have any item about the requested app OR it's null after filtered by\r\n+                // dynamic tag group but force=false. check static tag\r\n+                result = filterInvoker(invokers, invoker -> tag.equals(invoker.getUrl().getParameter(TAG_KEY)));\r\n+            }\r\n+            // If there's no tagged providers that can match the current tagged request. force.tag is set by default\r\n+            // to false, which means it will invoke any providers without a tag unless it's explicitly disallowed.\r\n+            if (CollectionUtils.isNotEmpty(result) || isForceUseTag(invocation)) {\r\n+                return result;\r\n+            }\r\n+            // FAILOVER: return all Providers without any tags.\r\n+            else {\r\n+                List<Invoker<T>> tmp = filterInvoker(invokers, invoker -> addressNotMatches(invoker.getUrl(),\r\n+                        tagRouterRuleCopy.getAddresses()));\r\n+                return filterInvoker(tmp, invoker -> StringUtils.isEmpty(invoker.getUrl().getParameter(TAG_KEY)));\r\n+            }\r\n+        } else {\r\n+            // List<String> addresses = tagRouterRule.filter(providerApp);\r\n+            // return all addresses in dynamic tag group.\r\n+            List<String> addresses = tagRouterRuleCopy.getAddresses();\r\n+            if (CollectionUtils.isNotEmpty(addresses)) {\r\n+                result = filterInvoker(invokers, invoker -> addressNotMatches(invoker.getUrl(), addresses));\r\n+                // 1. all addresses are in dynamic tag group, return empty list.\r\n+                if (CollectionUtils.isEmpty(result)) {\r\n+                    return result;\r\n+                }\r\n+                // 2. if there are some addresses that are not in any dynamic tag group, continue to filter using the\r\n+                // static tag group.\r\n+            }\r\n+            return filterInvoker(result, invoker -> {\r\n+                String localTag = invoker.getUrl().getParameter(TAG_KEY);\r\n+                return StringUtils.isEmpty(localTag) || !tagRouterRuleCopy.getTagNames().contains(localTag);\r\n+            });\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * If there's no dynamic tag rule being set, use static tag in URL.\r\n+     * <p>\r\n+     * A typical scenario is a Consumer using version 2.7.x calls Providers using version 2.6.x or lower,\r\n+     * the Consumer should always respect the tag in provider URL regardless of whether a dynamic tag rule has been set to it or not.\r\n+     * <p>\r\n+     * TODO, to guarantee consistent behavior of interoperability between 2.6- and 2.7+, this method should has the same logic with the TagRouter in 2.6.x.\r\n+     *\r\n+     * @param invokers\r\n+     * @param url\r\n+     * @param invocation\r\n+     * @param <T>\r\n+     * @return\r\n+     */\r\n+    private <T> List<Invoker<T>> filterUsingStaticTag(List<Invoker<T>> invokers, URL url, Invocation invocation) {\r\n+        List<Invoker<T>> result;\r\n+        // Dynamic param\r\n+        String tag = StringUtils.isEmpty(invocation.getAttachment(TAG_KEY)) ? url.getParameter(TAG_KEY) :\r\n+                invocation.getAttachment(TAG_KEY);\r\n+        // Tag request\r\n+        if (!StringUtils.isEmpty(tag)) {\r\n+            result = filterInvoker(invokers, invoker -> tag.equals(invoker.getUrl().getParameter(TAG_KEY)));\r\n+            if (CollectionUtils.isEmpty(result) && !isForceUseTag(invocation)) {\r\n+                result = filterInvoker(invokers, invoker -> StringUtils.isEmpty(invoker.getUrl().getParameter(TAG_KEY)));\r\n+            }\r\n+        } else {\r\n+            result = filterInvoker(invokers, invoker -> StringUtils.isEmpty(invoker.getUrl().getParameter(TAG_KEY)));\r\n+        }\r\n+        return result;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isRuntime() {\r\n+        return tagRouterRule != null && tagRouterRule.isRuntime();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isForce() {\r\n+        // FIXME\r\n+        return tagRouterRule != null && tagRouterRule.isForce();\r\n+    }\r\n+\r\n+    private boolean isForceUseTag(Invocation invocation) {\r\n+        return Boolean.parseBoolean(invocation.getAttachment(FORCE_USE_TAG, url.getParameter(FORCE_USE_TAG, \"false\")));\r\n+    }\r\n+\r\n+    private <T> List<Invoker<T>> filterInvoker(List<Invoker<T>> invokers, Predicate<Invoker<T>> predicate) {\r\n+        if (invokers.stream().allMatch(predicate)) {\r\n+            return invokers;\r\n+        }\r\n+\r\n+        return invokers.stream()\r\n+                .filter(predicate)\r\n+                .collect(Collectors.toList());\r\n+    }\r\n+\r\n+    private boolean addressMatches(URL url, List<String> addresses) {\r\n+        return addresses != null && checkAddressMatch(addresses, url.getHost(), url.getPort());\r\n+    }\r\n+\r\n+    private boolean addressNotMatches(URL url, List<String> addresses) {\r\n+        return addresses == null || !checkAddressMatch(addresses, url.getHost(), url.getPort());\r\n+    }\r\n+\r\n+    private boolean checkAddressMatch(List<String> addresses, String host, int port) {\r\n+        for (String address : addresses) {\r\n+            try {\r\n+                if (NetUtils.matchIpExpression(address, host, port)) {\r\n+                    return true;\r\n+                }\r\n+                if ((ANYHOST_VALUE + \":\" + port).equals(address)) {\r\n+                    return true;\r\n+                }\r\n+            } catch (Exception e) {\r\n+                logger.error(\"The format of ip address is invalid in tag route. Address :\" + address, e);\r\n+            }\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    public void setApplication(String app) {\r\n+        this.application = app;\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> void notify(List<Invoker<T>> invokers) {\r\n+        if (CollectionUtils.isEmpty(invokers)) {\r\n+            return;\r\n+        }\r\n+\r\n+        Invoker<T> invoker = invokers.get(0);\r\n+        URL url = invoker.getUrl();\r\n+        String providerApplication = url.getParameter(CommonConstants.REMOTE_APPLICATION_KEY);\r\n+\r\n+        if (StringUtils.isEmpty(providerApplication)) {\r\n+            logger.error(\"TagRouter must getConfig from or subscribe to a specific application, but the application \" +\r\n+                    \"in this TagRouter is not specified.\");\r\n+            return;\r\n+        }\r\n+\r\n+        synchronized (this) {\r\n+            if (!providerApplication.equals(application)) {\r\n+                if (!StringUtils.isEmpty(application)) {\r\n+                    ruleRepository.removeListener(application + RULE_SUFFIX, this);\r\n+                }\r\n+                String key = providerApplication + RULE_SUFFIX;\r\n+                ruleRepository.addListener(key, this);\r\n+                application = providerApplication;\r\n+                String rawRule = ruleRepository.getRule(key, DynamicConfiguration.DEFAULT_GROUP);\r\n+                if (StringUtils.isNotEmpty(rawRule)) {\r\n+                    this.process(new ConfigChangedEvent(key, DynamicConfiguration.DEFAULT_GROUP, rawRule));\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/router/tag/TagRouterFactory.java", "source2": "org/apache/dubbo/rpc/cluster/router/tag/TagRouterFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,36 +1,36 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.router.tag;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.rpc.cluster.CacheableRouterFactory;\n-import org.apache.dubbo.rpc.cluster.Router;\n-\n-/**\n- * Tag router factory\n- */\n-@Activate(order = 100)\n-public class TagRouterFactory extends CacheableRouterFactory {\n-\n-    public static final String NAME = \"tag\";\n-\n-    @Override\n-    protected Router createRouter(URL url) {\n-        return new TagRouter(url);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.router.tag;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.rpc.cluster.CacheableRouterFactory;\r\n+import org.apache.dubbo.rpc.cluster.Router;\r\n+\r\n+/**\r\n+ * Tag router factory\r\n+ */\r\n+@Activate(order = 100)\r\n+public class TagRouterFactory extends CacheableRouterFactory {\r\n+\r\n+    public static final String NAME = \"tag\";\r\n+\r\n+    @Override\r\n+    protected Router createRouter(URL url) {\r\n+        return new TagRouter(url);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/router/tag/model/TagRouterRule.java", "source2": "org/apache/dubbo/rpc/cluster/router/tag/model/TagRouterRule.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,90 +1,90 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.router.tag.model;\n-\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.rpc.cluster.router.AbstractRouterRule;\n-\n-import java.util.ArrayList;\n-import java.util.HashMap;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.stream.Collectors;\n-\n-/**\n- * %YAML1.2\n- * ---\n- * force: true\n- * runtime: false\n- * enabled: true\n- * priority: 1\n- * key: demo-provider\n- * tags:\n- * - name: tag1\n- * addresses: [ip1, ip2]\n- * - name: tag2\n- * addresses: [ip3, ip4]\n- * ...\n- */\n-public class TagRouterRule extends AbstractRouterRule {\n-    private List<Tag> tags;\n-\n-    private Map<String, List<String>> addressToTagnames = new HashMap<>();\n-    private Map<String, List<String>> tagnameToAddresses = new HashMap<>();\n-\n-    public void init() {\n-        if (!isValid()) {\n-            return;\n-        }\n-\n-        tags.stream().filter(tag -> CollectionUtils.isNotEmpty(tag.getAddresses())).forEach(tag -> {\n-            tagnameToAddresses.put(tag.getName(), tag.getAddresses());\n-            tag.getAddresses().forEach(addr -> {\n-                List<String> tagNames = addressToTagnames.computeIfAbsent(addr, k -> new ArrayList<>());\n-                tagNames.add(tag.getName());\n-            });\n-        });\n-    }\n-\n-    public List<String> getAddresses() {\n-        return tags.stream()\n-                .filter(tag -> CollectionUtils.isNotEmpty(tag.getAddresses()))\n-                .flatMap(tag -> tag.getAddresses().stream())\n-                .collect(Collectors.toList());\n-    }\n-\n-    public List<String> getTagNames() {\n-        return tags.stream().map(Tag::getName).collect(Collectors.toList());\n-    }\n-\n-    public Map<String, List<String>> getAddressToTagnames() {\n-        return addressToTagnames;\n-    }\n-\n-\n-    public Map<String, List<String>> getTagnameToAddresses() {\n-        return tagnameToAddresses;\n-    }\n-\n-    public List<Tag> getTags() {\n-        return tags;\n-    }\n-\n-    public void setTags(List<Tag> tags) {\n-        this.tags = tags;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.router.tag.model;\r\n+\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.rpc.cluster.router.AbstractRouterRule;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.HashMap;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.stream.Collectors;\r\n+\r\n+/**\r\n+ * %YAML1.2\r\n+ * ---\r\n+ * force: true\r\n+ * runtime: false\r\n+ * enabled: true\r\n+ * priority: 1\r\n+ * key: demo-provider\r\n+ * tags:\r\n+ * - name: tag1\r\n+ * addresses: [ip1, ip2]\r\n+ * - name: tag2\r\n+ * addresses: [ip3, ip4]\r\n+ * ...\r\n+ */\r\n+public class TagRouterRule extends AbstractRouterRule {\r\n+    private List<Tag> tags;\r\n+\r\n+    private Map<String, List<String>> addressToTagnames = new HashMap<>();\r\n+    private Map<String, List<String>> tagnameToAddresses = new HashMap<>();\r\n+\r\n+    public void init() {\r\n+        if (!isValid()) {\r\n+            return;\r\n+        }\r\n+\r\n+        tags.stream().filter(tag -> CollectionUtils.isNotEmpty(tag.getAddresses())).forEach(tag -> {\r\n+            tagnameToAddresses.put(tag.getName(), tag.getAddresses());\r\n+            tag.getAddresses().forEach(addr -> {\r\n+                List<String> tagNames = addressToTagnames.computeIfAbsent(addr, k -> new ArrayList<>());\r\n+                tagNames.add(tag.getName());\r\n+            });\r\n+        });\r\n+    }\r\n+\r\n+    public List<String> getAddresses() {\r\n+        return tags.stream()\r\n+                .filter(tag -> CollectionUtils.isNotEmpty(tag.getAddresses()))\r\n+                .flatMap(tag -> tag.getAddresses().stream())\r\n+                .collect(Collectors.toList());\r\n+    }\r\n+\r\n+    public List<String> getTagNames() {\r\n+        return tags.stream().map(Tag::getName).collect(Collectors.toList());\r\n+    }\r\n+\r\n+    public Map<String, List<String>> getAddressToTagnames() {\r\n+        return addressToTagnames;\r\n+    }\r\n+\r\n+\r\n+    public Map<String, List<String>> getTagnameToAddresses() {\r\n+        return tagnameToAddresses;\r\n+    }\r\n+\r\n+    public List<Tag> getTags() {\r\n+        return tags;\r\n+    }\r\n+\r\n+    public void setTags(List<Tag> tags) {\r\n+        this.tags = tags;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/router/tag/model/TagRuleParser.java", "source2": "org/apache/dubbo/rpc/cluster/router/tag/model/TagRuleParser.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,44 +1,44 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.router.tag.model;\n-\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.PojoUtils;\n-\n-import org.yaml.snakeyaml.Yaml;\n-import org.yaml.snakeyaml.constructor.SafeConstructor;\n-\n-import java.util.Map;\n-\n-/**\n- *\n- */\n-public class TagRuleParser {\n-\n-    public static TagRouterRule parse(String rawRule) throws Exception {\n-        Yaml yaml = new Yaml(new SafeConstructor());\n-        Map<String, Object> map = yaml.load(rawRule);\n-        TagRouterRule rule = PojoUtils.mapToPojo(map, TagRouterRule.class);\n-        rule.setRawRule(rawRule);\n-        if (CollectionUtils.isEmpty(rule.getTags())) {\n-            rule.setValid(false);\n-        }\n-\n-        rule.init();\n-        return rule;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.router.tag.model;\r\n+\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.PojoUtils;\r\n+\r\n+import org.yaml.snakeyaml.Yaml;\r\n+import org.yaml.snakeyaml.constructor.SafeConstructor;\r\n+\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+public class TagRuleParser {\r\n+\r\n+    public static TagRouterRule parse(String rawRule) throws Exception {\r\n+        Yaml yaml = new Yaml(new SafeConstructor());\r\n+        Map<String, Object> map = yaml.load(rawRule);\r\n+        TagRouterRule rule = PojoUtils.mapToPojo(map, TagRouterRule.class);\r\n+        rule.setRawRule(rawRule);\r\n+        if (CollectionUtils.isEmpty(rule.getTags())) {\r\n+            rule.setValid(false);\r\n+        }\r\n+\r\n+        rule.init();\r\n+        return rule;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java", "source2": "org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,319 +1,319 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.support;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.Version;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-import org.apache.dubbo.rpc.cluster.ClusterInvoker;\n-import org.apache.dubbo.rpc.cluster.Directory;\n-import org.apache.dubbo.rpc.cluster.LoadBalance;\n-import org.apache.dubbo.rpc.support.RpcUtils;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.concurrent.atomic.AtomicBoolean;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_LOADBALANCE;\n-import static org.apache.dubbo.common.constants.CommonConstants.LOADBALANCE_KEY;\n-import static org.apache.dubbo.rpc.cluster.Constants.CLUSTER_AVAILABLE_CHECK_KEY;\n-import static org.apache.dubbo.rpc.cluster.Constants.CLUSTER_STICKY_KEY;\n-import static org.apache.dubbo.rpc.cluster.Constants.DEFAULT_CLUSTER_AVAILABLE_CHECK;\n-import static org.apache.dubbo.rpc.cluster.Constants.DEFAULT_CLUSTER_STICKY;\n-\n-/**\n- * AbstractClusterInvoker\n- */\n-public abstract class AbstractClusterInvoker<T> implements ClusterInvoker<T> {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(AbstractClusterInvoker.class);\n-\n-    protected Directory<T> directory;\n-\n-    protected boolean availablecheck;\n-\n-    private AtomicBoolean destroyed = new AtomicBoolean(false);\n-\n-    private volatile Invoker<T> stickyInvoker = null;\n-\n-    public AbstractClusterInvoker() {\n-    }\n-\n-    public AbstractClusterInvoker(Directory<T> directory) {\n-        this(directory, directory.getUrl());\n-    }\n-\n-    public AbstractClusterInvoker(Directory<T> directory, URL url) {\n-        if (directory == null) {\n-            throw new IllegalArgumentException(\"service directory == null\");\n-        }\n-\n-        this.directory = directory;\n-        //sticky: invoker.isAvailable() should always be checked before using when availablecheck is true.\n-        this.availablecheck = url.getParameter(CLUSTER_AVAILABLE_CHECK_KEY, DEFAULT_CLUSTER_AVAILABLE_CHECK);\n-    }\n-\n-    @Override\n-    public Class<T> getInterface() {\n-        return directory.getInterface();\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return directory.getConsumerUrl();\n-    }\n-\n-    public URL getRegistryUrl() {\n-        return directory.getUrl();\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        Invoker<T> invoker = stickyInvoker;\n-        if (invoker != null) {\n-            return invoker.isAvailable();\n-        }\n-        return directory.isAvailable();\n-    }\n-\n-    public Directory<T> getDirectory() {\n-        return directory;\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        if (destroyed.compareAndSet(false, true)) {\n-            directory.destroy();\n-        }\n-    }\n-\n-    @Override\n-    public boolean isDestroyed() {\n-        return destroyed.get();\n-    }\n-\n-    /**\n-     * Select a invoker using loadbalance policy.</br>\n-     * a) Firstly, select an invoker using loadbalance. If this invoker is in previously selected list, or,\n-     * if this invoker is unavailable, then continue step b (reselect), otherwise return the first selected invoker</br>\n-     * <p>\n-     * b) Reselection, the validation rule for reselection: selected > available. This rule guarantees that\n-     * the selected invoker has the minimum chance to be one in the previously selected list, and also\n-     * guarantees this invoker is available.\n-     *\n-     * @param loadbalance load balance policy\n-     * @param invocation  invocation\n-     * @param invokers    invoker candidates\n-     * @param selected    exclude selected invokers or not\n-     * @return the invoker which will final to do invoke.\n-     * @throws RpcException exception\n-     */\n-    protected Invoker<T> select(LoadBalance loadbalance, Invocation invocation,\n-                                List<Invoker<T>> invokers, List<Invoker<T>> selected) throws RpcException {\n-\n-        if (CollectionUtils.isEmpty(invokers)) {\n-            return null;\n-        }\n-        String methodName = invocation == null ? StringUtils.EMPTY_STRING : invocation.getMethodName();\n-\n-        boolean sticky = invokers.get(0).getUrl()\n-                .getMethodParameter(methodName, CLUSTER_STICKY_KEY, DEFAULT_CLUSTER_STICKY);\n-\n-        //ignore overloaded method\n-        if (stickyInvoker != null && !invokers.contains(stickyInvoker)) {\n-            stickyInvoker = null;\n-        }\n-        //ignore concurrency problem\n-        if (sticky && stickyInvoker != null && (selected == null || !selected.contains(stickyInvoker))) {\n-            if (availablecheck && stickyInvoker.isAvailable()) {\n-                return stickyInvoker;\n-            }\n-        }\n-\n-        Invoker<T> invoker = doSelect(loadbalance, invocation, invokers, selected);\n-\n-        if (sticky) {\n-            stickyInvoker = invoker;\n-        }\n-        return invoker;\n-    }\n-\n-    private Invoker<T> doSelect(LoadBalance loadbalance, Invocation invocation,\n-                                List<Invoker<T>> invokers, List<Invoker<T>> selected) throws RpcException {\n-\n-        if (CollectionUtils.isEmpty(invokers)) {\n-            return null;\n-        }\n-        if (invokers.size() == 1) {\n-            return invokers.get(0);\n-        }\n-        Invoker<T> invoker = loadbalance.select(invokers, getUrl(), invocation);\n-\n-        //If the `invoker` is in the  `selected` or invoker is unavailable && availablecheck is true, reselect.\n-        if ((selected != null && selected.contains(invoker))\n-                || (!invoker.isAvailable() && getUrl() != null && availablecheck)) {\n-            try {\n-                Invoker<T> rInvoker = reselect(loadbalance, invocation, invokers, selected, availablecheck);\n-                if (rInvoker != null) {\n-                    invoker = rInvoker;\n-                } else {\n-                    //Check the index of current selected invoker, if it's not the last one, choose the one at index+1.\n-                    int index = invokers.indexOf(invoker);\n-                    try {\n-                        //Avoid collision\n-                        invoker = invokers.get((index + 1) % invokers.size());\n-                    } catch (Exception e) {\n-                        logger.warn(e.getMessage() + \" may because invokers list dynamic change, ignore.\", e);\n-                    }\n-                }\n-            } catch (Throwable t) {\n-                logger.error(\"cluster reselect fail reason is :\" + t.getMessage() + \" if can not solve, you can set cluster.availablecheck=false in url\", t);\n-            }\n-        }\n-        return invoker;\n-    }\n-\n-    /**\n-     * Reselect, use invokers not in `selected` first, if all invokers are in `selected`,\n-     * just pick an available one using loadbalance policy.\n-     *\n-     * @param loadbalance    load balance policy\n-     * @param invocation     invocation\n-     * @param invokers       invoker candidates\n-     * @param selected       exclude selected invokers or not\n-     * @param availablecheck check invoker available if true\n-     * @return the reselect result to do invoke\n-     * @throws RpcException exception\n-     */\n-    private Invoker<T> reselect(LoadBalance loadbalance, Invocation invocation,\n-                                List<Invoker<T>> invokers, List<Invoker<T>> selected, boolean availablecheck) throws RpcException {\n-\n-        //Allocating one in advance, this list is certain to be used.\n-        List<Invoker<T>> reselectInvokers = new ArrayList<>(\n-                invokers.size() > 1 ? (invokers.size() - 1) : invokers.size());\n-\n-        // First, try picking a invoker not in `selected`.\n-        for (Invoker<T> invoker : invokers) {\n-            if (availablecheck && !invoker.isAvailable()) {\n-                continue;\n-            }\n-\n-            if (selected == null || !selected.contains(invoker)) {\n-                reselectInvokers.add(invoker);\n-            }\n-        }\n-\n-        if (!reselectInvokers.isEmpty()) {\n-            return loadbalance.select(reselectInvokers, getUrl(), invocation);\n-        }\n-\n-        // Just pick an available invoker using loadbalance policy\n-        if (selected != null) {\n-            for (Invoker<T> invoker : selected) {\n-                if ((invoker.isAvailable()) // available first\n-                        && !reselectInvokers.contains(invoker)) {\n-                    reselectInvokers.add(invoker);\n-                }\n-            }\n-        }\n-        if (!reselectInvokers.isEmpty()) {\n-            return loadbalance.select(reselectInvokers, getUrl(), invocation);\n-        }\n-\n-        return null;\n-    }\n-\n-    @Override\n-    public Result invoke(final Invocation invocation) throws RpcException {\n-        checkWhetherDestroyed();\n-\n-        // binding attachments into invocation.\n-        Map<String, Object> contextAttachments = RpcContext.getContext().getObjectAttachments();\n-        if (contextAttachments != null && contextAttachments.size() != 0) {\n-            ((RpcInvocation) invocation).addObjectAttachments(contextAttachments);\n-        }\n-\n-        List<Invoker<T>> invokers = list(invocation);\n-        LoadBalance loadbalance = initLoadBalance(invokers, invocation);\n-        RpcUtils.attachInvocationIdIfAsync(getUrl(), invocation);\n-        return doInvoke(invocation, invokers, loadbalance);\n-    }\n-\n-    protected void checkWhetherDestroyed() {\n-        if (destroyed.get()) {\n-            throw new RpcException(\"Rpc cluster invoker for \" + getInterface() + \" on consumer \" + NetUtils.getLocalHost()\n-                    + \" use dubbo version \" + Version.getVersion()\n-                    + \" is now destroyed! Can not invoke any more.\");\n-        }\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return getInterface() + \" -> \" + getUrl().toString();\n-    }\n-\n-    protected void checkInvokers(List<Invoker<T>> invokers, Invocation invocation) {\n-        if (CollectionUtils.isEmpty(invokers)) {\n-            throw new RpcException(RpcException.NO_INVOKER_AVAILABLE_AFTER_FILTER, \"Failed to invoke the method \"\n-                    + invocation.getMethodName() + \" in the service \" + getInterface().getName()\n-                    + \". No provider available for the service \" + directory.getConsumerUrl().getServiceKey()\n-                    + \" from registry \" + directory.getUrl().getAddress()\n-                    + \" on the consumer \" + NetUtils.getLocalHost()\n-                    + \" using the dubbo version \" + Version.getVersion()\n-                    + \". Please check if the providers have been started and registered.\");\n-        }\n-    }\n-\n-    protected abstract Result doInvoke(Invocation invocation, List<Invoker<T>> invokers,\n-                                       LoadBalance loadbalance) throws RpcException;\n-\n-    protected List<Invoker<T>> list(Invocation invocation) throws RpcException {\n-        return directory.list(invocation);\n-    }\n-\n-    /**\n-     * Init LoadBalance.\n-     * <p>\n-     * if invokers is not empty, init from the first invoke's url and invocation\n-     * if invokes is empty, init a default LoadBalance(RandomLoadBalance)\n-     * </p>\n-     *\n-     * @param invokers   invokers\n-     * @param invocation invocation\n-     * @return LoadBalance instance. if not need init, return null.\n-     */\n-    protected LoadBalance initLoadBalance(List<Invoker<T>> invokers, Invocation invocation) {\n-        if (CollectionUtils.isNotEmpty(invokers)) {\n-            return ExtensionLoader.getExtensionLoader(LoadBalance.class).getExtension(invokers.get(0).getUrl()\n-                    .getMethodParameter(RpcUtils.getMethodName(invocation), LOADBALANCE_KEY, DEFAULT_LOADBALANCE));\n-        } else {\n-            return ExtensionLoader.getExtensionLoader(LoadBalance.class).getExtension(DEFAULT_LOADBALANCE);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.support;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.Version;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+import org.apache.dubbo.rpc.cluster.ClusterInvoker;\r\n+import org.apache.dubbo.rpc.cluster.Directory;\r\n+import org.apache.dubbo.rpc.cluster.LoadBalance;\r\n+import org.apache.dubbo.rpc.support.RpcUtils;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_LOADBALANCE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.LOADBALANCE_KEY;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.CLUSTER_AVAILABLE_CHECK_KEY;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.CLUSTER_STICKY_KEY;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.DEFAULT_CLUSTER_AVAILABLE_CHECK;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.DEFAULT_CLUSTER_STICKY;\r\n+\r\n+/**\r\n+ * AbstractClusterInvoker\r\n+ */\r\n+public abstract class AbstractClusterInvoker<T> implements ClusterInvoker<T> {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(AbstractClusterInvoker.class);\r\n+\r\n+    protected Directory<T> directory;\r\n+\r\n+    protected boolean availablecheck;\r\n+\r\n+    private AtomicBoolean destroyed = new AtomicBoolean(false);\r\n+\r\n+    private volatile Invoker<T> stickyInvoker = null;\r\n+\r\n+    public AbstractClusterInvoker() {\r\n+    }\r\n+\r\n+    public AbstractClusterInvoker(Directory<T> directory) {\r\n+        this(directory, directory.getUrl());\r\n+    }\r\n+\r\n+    public AbstractClusterInvoker(Directory<T> directory, URL url) {\r\n+        if (directory == null) {\r\n+            throw new IllegalArgumentException(\"service directory == null\");\r\n+        }\r\n+\r\n+        this.directory = directory;\r\n+        //sticky: invoker.isAvailable() should always be checked before using when availablecheck is true.\r\n+        this.availablecheck = url.getParameter(CLUSTER_AVAILABLE_CHECK_KEY, DEFAULT_CLUSTER_AVAILABLE_CHECK);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Class<T> getInterface() {\r\n+        return directory.getInterface();\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return directory.getConsumerUrl();\r\n+    }\r\n+\r\n+    public URL getRegistryUrl() {\r\n+        return directory.getUrl();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        Invoker<T> invoker = stickyInvoker;\r\n+        if (invoker != null) {\r\n+            return invoker.isAvailable();\r\n+        }\r\n+        return directory.isAvailable();\r\n+    }\r\n+\r\n+    public Directory<T> getDirectory() {\r\n+        return directory;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        if (destroyed.compareAndSet(false, true)) {\r\n+            directory.destroy();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isDestroyed() {\r\n+        return destroyed.get();\r\n+    }\r\n+\r\n+    /**\r\n+     * Select a invoker using loadbalance policy.</br>\r\n+     * a) Firstly, select an invoker using loadbalance. If this invoker is in previously selected list, or,\r\n+     * if this invoker is unavailable, then continue step b (reselect), otherwise return the first selected invoker</br>\r\n+     * <p>\r\n+     * b) Reselection, the validation rule for reselection: selected > available. This rule guarantees that\r\n+     * the selected invoker has the minimum chance to be one in the previously selected list, and also\r\n+     * guarantees this invoker is available.\r\n+     *\r\n+     * @param loadbalance load balance policy\r\n+     * @param invocation  invocation\r\n+     * @param invokers    invoker candidates\r\n+     * @param selected    exclude selected invokers or not\r\n+     * @return the invoker which will final to do invoke.\r\n+     * @throws RpcException exception\r\n+     */\r\n+    protected Invoker<T> select(LoadBalance loadbalance, Invocation invocation,\r\n+                                List<Invoker<T>> invokers, List<Invoker<T>> selected) throws RpcException {\r\n+\r\n+        if (CollectionUtils.isEmpty(invokers)) {\r\n+            return null;\r\n+        }\r\n+        String methodName = invocation == null ? StringUtils.EMPTY_STRING : invocation.getMethodName();\r\n+\r\n+        boolean sticky = invokers.get(0).getUrl()\r\n+                .getMethodParameter(methodName, CLUSTER_STICKY_KEY, DEFAULT_CLUSTER_STICKY);\r\n+\r\n+        //ignore overloaded method\r\n+        if (stickyInvoker != null && !invokers.contains(stickyInvoker)) {\r\n+            stickyInvoker = null;\r\n+        }\r\n+        //ignore concurrency problem\r\n+        if (sticky && stickyInvoker != null && (selected == null || !selected.contains(stickyInvoker))) {\r\n+            if (availablecheck && stickyInvoker.isAvailable()) {\r\n+                return stickyInvoker;\r\n+            }\r\n+        }\r\n+\r\n+        Invoker<T> invoker = doSelect(loadbalance, invocation, invokers, selected);\r\n+\r\n+        if (sticky) {\r\n+            stickyInvoker = invoker;\r\n+        }\r\n+        return invoker;\r\n+    }\r\n+\r\n+    private Invoker<T> doSelect(LoadBalance loadbalance, Invocation invocation,\r\n+                                List<Invoker<T>> invokers, List<Invoker<T>> selected) throws RpcException {\r\n+\r\n+        if (CollectionUtils.isEmpty(invokers)) {\r\n+            return null;\r\n+        }\r\n+        if (invokers.size() == 1) {\r\n+            return invokers.get(0);\r\n+        }\r\n+        Invoker<T> invoker = loadbalance.select(invokers, getUrl(), invocation);\r\n+\r\n+        //If the `invoker` is in the  `selected` or invoker is unavailable && availablecheck is true, reselect.\r\n+        if ((selected != null && selected.contains(invoker))\r\n+                || (!invoker.isAvailable() && getUrl() != null && availablecheck)) {\r\n+            try {\r\n+                Invoker<T> rInvoker = reselect(loadbalance, invocation, invokers, selected, availablecheck);\r\n+                if (rInvoker != null) {\r\n+                    invoker = rInvoker;\r\n+                } else {\r\n+                    //Check the index of current selected invoker, if it's not the last one, choose the one at index+1.\r\n+                    int index = invokers.indexOf(invoker);\r\n+                    try {\r\n+                        //Avoid collision\r\n+                        invoker = invokers.get((index + 1) % invokers.size());\r\n+                    } catch (Exception e) {\r\n+                        logger.warn(e.getMessage() + \" may because invokers list dynamic change, ignore.\", e);\r\n+                    }\r\n+                }\r\n+            } catch (Throwable t) {\r\n+                logger.error(\"cluster reselect fail reason is :\" + t.getMessage() + \" if can not solve, you can set cluster.availablecheck=false in url\", t);\r\n+            }\r\n+        }\r\n+        return invoker;\r\n+    }\r\n+\r\n+    /**\r\n+     * Reselect, use invokers not in `selected` first, if all invokers are in `selected`,\r\n+     * just pick an available one using loadbalance policy.\r\n+     *\r\n+     * @param loadbalance    load balance policy\r\n+     * @param invocation     invocation\r\n+     * @param invokers       invoker candidates\r\n+     * @param selected       exclude selected invokers or not\r\n+     * @param availablecheck check invoker available if true\r\n+     * @return the reselect result to do invoke\r\n+     * @throws RpcException exception\r\n+     */\r\n+    private Invoker<T> reselect(LoadBalance loadbalance, Invocation invocation,\r\n+                                List<Invoker<T>> invokers, List<Invoker<T>> selected, boolean availablecheck) throws RpcException {\r\n+\r\n+        //Allocating one in advance, this list is certain to be used.\r\n+        List<Invoker<T>> reselectInvokers = new ArrayList<>(\r\n+                invokers.size() > 1 ? (invokers.size() - 1) : invokers.size());\r\n+\r\n+        // First, try picking a invoker not in `selected`.\r\n+        for (Invoker<T> invoker : invokers) {\r\n+            if (availablecheck && !invoker.isAvailable()) {\r\n+                continue;\r\n+            }\r\n+\r\n+            if (selected == null || !selected.contains(invoker)) {\r\n+                reselectInvokers.add(invoker);\r\n+            }\r\n+        }\r\n+\r\n+        if (!reselectInvokers.isEmpty()) {\r\n+            return loadbalance.select(reselectInvokers, getUrl(), invocation);\r\n+        }\r\n+\r\n+        // Just pick an available invoker using loadbalance policy\r\n+        if (selected != null) {\r\n+            for (Invoker<T> invoker : selected) {\r\n+                if ((invoker.isAvailable()) // available first\r\n+                        && !reselectInvokers.contains(invoker)) {\r\n+                    reselectInvokers.add(invoker);\r\n+                }\r\n+            }\r\n+        }\r\n+        if (!reselectInvokers.isEmpty()) {\r\n+            return loadbalance.select(reselectInvokers, getUrl(), invocation);\r\n+        }\r\n+\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Result invoke(final Invocation invocation) throws RpcException {\r\n+        checkWhetherDestroyed();\r\n+\r\n+        // binding attachments into invocation.\r\n+        Map<String, Object> contextAttachments = RpcContext.getContext().getObjectAttachments();\r\n+        if (contextAttachments != null && contextAttachments.size() != 0) {\r\n+            ((RpcInvocation) invocation).addObjectAttachments(contextAttachments);\r\n+        }\r\n+\r\n+        List<Invoker<T>> invokers = list(invocation);\r\n+        LoadBalance loadbalance = initLoadBalance(invokers, invocation);\r\n+        RpcUtils.attachInvocationIdIfAsync(getUrl(), invocation);\r\n+        return doInvoke(invocation, invokers, loadbalance);\r\n+    }\r\n+\r\n+    protected void checkWhetherDestroyed() {\r\n+        if (destroyed.get()) {\r\n+            throw new RpcException(\"Rpc cluster invoker for \" + getInterface() + \" on consumer \" + NetUtils.getLocalHost()\r\n+                    + \" use dubbo version \" + Version.getVersion()\r\n+                    + \" is now destroyed! Can not invoke any more.\");\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return getInterface() + \" -> \" + getUrl().toString();\r\n+    }\r\n+\r\n+    protected void checkInvokers(List<Invoker<T>> invokers, Invocation invocation) {\r\n+        if (CollectionUtils.isEmpty(invokers)) {\r\n+            throw new RpcException(RpcException.NO_INVOKER_AVAILABLE_AFTER_FILTER, \"Failed to invoke the method \"\r\n+                    + invocation.getMethodName() + \" in the service \" + getInterface().getName()\r\n+                    + \". No provider available for the service \" + directory.getConsumerUrl().getServiceKey()\r\n+                    + \" from registry \" + directory.getUrl().getAddress()\r\n+                    + \" on the consumer \" + NetUtils.getLocalHost()\r\n+                    + \" using the dubbo version \" + Version.getVersion()\r\n+                    + \". Please check if the providers have been started and registered.\");\r\n+        }\r\n+    }\r\n+\r\n+    protected abstract Result doInvoke(Invocation invocation, List<Invoker<T>> invokers,\r\n+                                       LoadBalance loadbalance) throws RpcException;\r\n+\r\n+    protected List<Invoker<T>> list(Invocation invocation) throws RpcException {\r\n+        return directory.list(invocation);\r\n+    }\r\n+\r\n+    /**\r\n+     * Init LoadBalance.\r\n+     * <p>\r\n+     * if invokers is not empty, init from the first invoke's url and invocation\r\n+     * if invokes is empty, init a default LoadBalance(RandomLoadBalance)\r\n+     * </p>\r\n+     *\r\n+     * @param invokers   invokers\r\n+     * @param invocation invocation\r\n+     * @return LoadBalance instance. if not need init, return null.\r\n+     */\r\n+    protected LoadBalance initLoadBalance(List<Invoker<T>> invokers, Invocation invocation) {\r\n+        if (CollectionUtils.isNotEmpty(invokers)) {\r\n+            return ExtensionLoader.getExtensionLoader(LoadBalance.class).getExtension(invokers.get(0).getUrl()\r\n+                    .getMethodParameter(RpcUtils.getMethodName(invocation), LOADBALANCE_KEY, DEFAULT_LOADBALANCE));\r\n+        } else {\r\n+            return ExtensionLoader.getExtensionLoader(LoadBalance.class).getExtension(DEFAULT_LOADBALANCE);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/support/ForkingClusterInvoker.java", "source2": "org/apache/dubbo/rpc/cluster/support/ForkingClusterInvoker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,113 +1,113 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.support;\n-\n-import org.apache.dubbo.common.threadlocal.NamedInternalThreadFactory;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.cluster.Directory;\n-import org.apache.dubbo.rpc.cluster.LoadBalance;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-import java.util.concurrent.BlockingQueue;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.Executors;\n-import java.util.concurrent.LinkedBlockingQueue;\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.atomic.AtomicInteger;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\n-import static org.apache.dubbo.common.constants.CommonConstants.FORKS_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-import static org.apache.dubbo.rpc.cluster.Constants.DEFAULT_FORKS;\n-\n-/**\n- * NOTICE! This implementation does not work well with async call.\n- *\n- * Invoke a specific number of invokers concurrently, usually used for demanding real-time operations, but need to waste more service resources.\n- *\n- * <a href=\"http://en.wikipedia.org/wiki/Fork_(topology)\">Fork</a>\n- */\n-public class ForkingClusterInvoker<T> extends AbstractClusterInvoker<T> {\n-\n-    /**\n-     * Use {@link NamedInternalThreadFactory} to produce {@link org.apache.dubbo.common.threadlocal.InternalThread}\n-     * which with the use of {@link org.apache.dubbo.common.threadlocal.InternalThreadLocal} in {@link RpcContext}.\n-     */\n-    private final ExecutorService executor = Executors.newCachedThreadPool(\n-            new NamedInternalThreadFactory(\"forking-cluster-timer\", true));\n-\n-    public ForkingClusterInvoker(Directory<T> directory) {\n-        super(directory);\n-    }\n-\n-    @Override\n-    @SuppressWarnings({\"unchecked\", \"rawtypes\"})\n-    public Result doInvoke(final Invocation invocation, List<Invoker<T>> invokers, LoadBalance loadbalance) throws RpcException {\n-        try {\n-            checkInvokers(invokers, invocation);\n-            final List<Invoker<T>> selected;\n-            final int forks = getUrl().getParameter(FORKS_KEY, DEFAULT_FORKS);\n-            final int timeout = getUrl().getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT);\n-            if (forks <= 0 || forks >= invokers.size()) {\n-                selected = invokers;\n-            } else {\n-                selected = new ArrayList<>(forks);\n-                while (selected.size() < forks) {\n-                    Invoker<T> invoker = select(loadbalance, invocation, invokers, selected);\n-                    if (!selected.contains(invoker)) {\n-                        //Avoid add the same invoker several times.\n-                        selected.add(invoker);\n-                    }\n-                }\n-            }\n-            RpcContext.getContext().setInvokers((List) selected);\n-            final AtomicInteger count = new AtomicInteger();\n-            final BlockingQueue<Object> ref = new LinkedBlockingQueue<>();\n-            for (final Invoker<T> invoker : selected) {\n-                executor.execute(() -> {\n-                    try {\n-                        Result result = invoker.invoke(invocation);\n-                        ref.offer(result);\n-                    } catch (Throwable e) {\n-                        int value = count.incrementAndGet();\n-                        if (value >= selected.size()) {\n-                            ref.offer(e);\n-                        }\n-                    }\n-                });\n-            }\n-            try {\n-                Object ret = ref.poll(timeout, TimeUnit.MILLISECONDS);\n-                if (ret instanceof Throwable) {\n-                    Throwable e = (Throwable) ret;\n-                    throw new RpcException(e instanceof RpcException ? ((RpcException) e).getCode() : 0, \"Failed to forking invoke provider \" + selected + \", but no luck to perform the invocation. Last error is: \" + e.getMessage(), e.getCause() != null ? e.getCause() : e);\n-                }\n-                return (Result) ret;\n-            } catch (InterruptedException e) {\n-                throw new RpcException(\"Failed to forking invoke provider \" + selected + \", but no luck to perform the invocation. Last error is: \" + e.getMessage(), e);\n-            }\n-        } finally {\n-            // clear attachments which is binding to current thread.\n-            RpcContext.getContext().clearAttachments();\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.support;\r\n+\r\n+import org.apache.dubbo.common.threadlocal.NamedInternalThreadFactory;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.cluster.Directory;\r\n+import org.apache.dubbo.rpc.cluster.LoadBalance;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+import java.util.concurrent.BlockingQueue;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.Executors;\r\n+import java.util.concurrent.LinkedBlockingQueue;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.atomic.AtomicInteger;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.FORKS_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.DEFAULT_FORKS;\r\n+\r\n+/**\r\n+ * NOTICE! This implementation does not work well with async call.\r\n+ *\r\n+ * Invoke a specific number of invokers concurrently, usually used for demanding real-time operations, but need to waste more service resources.\r\n+ *\r\n+ * <a href=\"http://en.wikipedia.org/wiki/Fork_(topology)\">Fork</a>\r\n+ */\r\n+public class ForkingClusterInvoker<T> extends AbstractClusterInvoker<T> {\r\n+\r\n+    /**\r\n+     * Use {@link NamedInternalThreadFactory} to produce {@link org.apache.dubbo.common.threadlocal.InternalThread}\r\n+     * which with the use of {@link org.apache.dubbo.common.threadlocal.InternalThreadLocal} in {@link RpcContext}.\r\n+     */\r\n+    private final ExecutorService executor = Executors.newCachedThreadPool(\r\n+            new NamedInternalThreadFactory(\"forking-cluster-timer\", true));\r\n+\r\n+    public ForkingClusterInvoker(Directory<T> directory) {\r\n+        super(directory);\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings({\"unchecked\", \"rawtypes\"})\r\n+    public Result doInvoke(final Invocation invocation, List<Invoker<T>> invokers, LoadBalance loadbalance) throws RpcException {\r\n+        try {\r\n+            checkInvokers(invokers, invocation);\r\n+            final List<Invoker<T>> selected;\r\n+            final int forks = getUrl().getParameter(FORKS_KEY, DEFAULT_FORKS);\r\n+            final int timeout = getUrl().getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT);\r\n+            if (forks <= 0 || forks >= invokers.size()) {\r\n+                selected = invokers;\r\n+            } else {\r\n+                selected = new ArrayList<>(forks);\r\n+                while (selected.size() < forks) {\r\n+                    Invoker<T> invoker = select(loadbalance, invocation, invokers, selected);\r\n+                    if (!selected.contains(invoker)) {\r\n+                        //Avoid add the same invoker several times.\r\n+                        selected.add(invoker);\r\n+                    }\r\n+                }\r\n+            }\r\n+            RpcContext.getContext().setInvokers((List) selected);\r\n+            final AtomicInteger count = new AtomicInteger();\r\n+            final BlockingQueue<Object> ref = new LinkedBlockingQueue<>();\r\n+            for (final Invoker<T> invoker : selected) {\r\n+                executor.execute(() -> {\r\n+                    try {\r\n+                        Result result = invoker.invoke(invocation);\r\n+                        ref.offer(result);\r\n+                    } catch (Throwable e) {\r\n+                        int value = count.incrementAndGet();\r\n+                        if (value >= selected.size()) {\r\n+                            ref.offer(e);\r\n+                        }\r\n+                    }\r\n+                });\r\n+            }\r\n+            try {\r\n+                Object ret = ref.poll(timeout, TimeUnit.MILLISECONDS);\r\n+                if (ret instanceof Throwable) {\r\n+                    Throwable e = (Throwable) ret;\r\n+                    throw new RpcException(e instanceof RpcException ? ((RpcException) e).getCode() : 0, \"Failed to forking invoke provider \" + selected + \", but no luck to perform the invocation. Last error is: \" + e.getMessage(), e.getCause() != null ? e.getCause() : e);\r\n+                }\r\n+                return (Result) ret;\r\n+            } catch (InterruptedException e) {\r\n+                throw new RpcException(\"Failed to forking invoke provider \" + selected + \", but no luck to perform the invocation. Last error is: \" + e.getMessage(), e);\r\n+            }\r\n+        } finally {\r\n+            // clear attachments which is binding to current thread.\r\n+            RpcContext.getContext().clearAttachments();\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/support/MergeableCluster.java", "source2": "org/apache/dubbo/rpc/cluster/support/MergeableCluster.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,32 +1,32 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.support;\n-\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.cluster.Directory;\n-import org.apache.dubbo.rpc.cluster.support.wrapper.AbstractCluster;\n-\n-public class MergeableCluster extends AbstractCluster {\n-\n-    public static final String NAME = \"mergeable\";\n-\n-    @Override\n-    public <T> AbstractClusterInvoker<T> doJoin(Directory<T> directory) throws RpcException {\n-        return new MergeableClusterInvoker<T>(directory);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.support;\r\n+\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.cluster.Directory;\r\n+import org.apache.dubbo.rpc.cluster.support.wrapper.AbstractCluster;\r\n+\r\n+public class MergeableCluster extends AbstractCluster {\r\n+\r\n+    public static final String NAME = \"mergeable\";\r\n+\r\n+    @Override\r\n+    public <T> AbstractClusterInvoker<T> doJoin(Directory<T> directory) throws RpcException {\r\n+        return new MergeableClusterInvoker<T>(directory);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/support/MergeableClusterInvoker.java", "source2": "org/apache/dubbo/rpc/cluster/support/MergeableClusterInvoker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,193 +1,193 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.support;\n-\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ConfigUtils;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.rpc.AsyncRpcResult;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-import org.apache.dubbo.rpc.cluster.Directory;\n-import org.apache.dubbo.rpc.cluster.LoadBalance;\n-import org.apache.dubbo.rpc.cluster.Merger;\n-import org.apache.dubbo.rpc.cluster.merger.MergerFactory;\n-\n-import java.lang.reflect.Array;\n-import java.lang.reflect.Method;\n-import java.util.ArrayList;\n-import java.util.HashMap;\n-import java.util.List;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.rpc.Constants.ASYNC_KEY;\n-import static org.apache.dubbo.rpc.Constants.MERGER_KEY;\n-\n-/**\n- * @param <T>\n- */\n-@SuppressWarnings(\"unchecked\")\n-public class MergeableClusterInvoker<T> extends AbstractClusterInvoker<T> {\n-\n-    private static final Logger log = LoggerFactory.getLogger(MergeableClusterInvoker.class);\n-\n-    public MergeableClusterInvoker(Directory<T> directory) {\n-        super(directory);\n-    }\n-\n-    @Override\n-    protected Result doInvoke(Invocation invocation, List<Invoker<T>> invokers, LoadBalance loadbalance) throws RpcException {\n-        checkInvokers(invokers, invocation);\n-        String merger = getUrl().getMethodParameter(invocation.getMethodName(), MERGER_KEY);\n-        if (ConfigUtils.isEmpty(merger)) { // If a method doesn't have a merger, only invoke one Group\n-            for (final Invoker<T> invoker : invokers) {\n-                if (invoker.isAvailable()) {\n-                    try {\n-                        return invoker.invoke(invocation);\n-                    } catch (RpcException e) {\n-                        if (e.isNoInvokerAvailableAfterFilter()) {\n-                            log.debug(\"No available provider for service\" + getUrl().getServiceKey() + \" on group \" + invoker.getUrl().getParameter(GROUP_KEY) + \", will continue to try another group.\");\n-                        } else {\n-                            throw e;\n-                        }\n-                    }\n-                }\n-            }\n-            return invokers.iterator().next().invoke(invocation);\n-        }\n-\n-        Class<?> returnType;\n-        try {\n-            returnType = getInterface().getMethod(\n-                    invocation.getMethodName(), invocation.getParameterTypes()).getReturnType();\n-        } catch (NoSuchMethodException e) {\n-            returnType = null;\n-        }\n-\n-        Map<String, Result> results = new HashMap<>();\n-        for (final Invoker<T> invoker : invokers) {\n-            RpcInvocation subInvocation = new RpcInvocation(invocation, invoker);\n-            subInvocation.setAttachment(ASYNC_KEY, \"true\");\n-            results.put(invoker.getUrl().getServiceKey(), invoker.invoke(subInvocation));\n-        }\n-\n-        Object result = null;\n-\n-        List<Result> resultList = new ArrayList<Result>(results.size());\n-\n-        for (Map.Entry<String, Result> entry : results.entrySet()) {\n-            Result asyncResult = entry.getValue();\n-            try {\n-                Result r = asyncResult.get();\n-                if (r.hasException()) {\n-                    log.error(\"Invoke \" + getGroupDescFromServiceKey(entry.getKey()) +\n-                                    \" failed: \" + r.getException().getMessage(),\n-                            r.getException());\n-                } else {\n-                    resultList.add(r);\n-                }\n-            } catch (Exception e) {\n-                throw new RpcException(\"Failed to invoke service \" + entry.getKey() + \": \" + e.getMessage(), e);\n-            }\n-        }\n-\n-        if (resultList.isEmpty()) {\n-            return AsyncRpcResult.newDefaultAsyncResult(invocation);\n-        } else if (resultList.size() == 1) {\n-            return AsyncRpcResult.newDefaultAsyncResult(resultList.get(0).getValue(), invocation);\n-        }\n-\n-        if (returnType == void.class) {\n-            return AsyncRpcResult.newDefaultAsyncResult(invocation);\n-        }\n-\n-        if (merger.startsWith(\".\")) {\n-            merger = merger.substring(1);\n-            Method method;\n-            try {\n-                method = returnType.getMethod(merger, returnType);\n-            } catch (NoSuchMethodException e) {\n-                throw new RpcException(\"Can not merge result because missing method [ \" + merger + \" ] in class [ \" +\n-                        returnType.getName() + \" ]\");\n-            }\n-            ReflectUtils.makeAccessible(method);\n-            result = resultList.remove(0).getValue();\n-            try {\n-                if (method.getReturnType() != void.class\n-                        && method.getReturnType().isAssignableFrom(result.getClass())) {\n-                    for (Result r : resultList) {\n-                        result = method.invoke(result, r.getValue());\n-                    }\n-                } else {\n-                    for (Result r : resultList) {\n-                        method.invoke(result, r.getValue());\n-                    }\n-                }\n-            } catch (Exception e) {\n-                throw new RpcException(\"Can not merge result: \" + e.getMessage(), e);\n-            }\n-        } else {\n-            Merger resultMerger;\n-            if (ConfigUtils.isDefault(merger)) {\n-                resultMerger = MergerFactory.getMerger(returnType);\n-            } else {\n-                resultMerger = ExtensionLoader.getExtensionLoader(Merger.class).getExtension(merger);\n-            }\n-            if (resultMerger != null) {\n-                List<Object> rets = new ArrayList<Object>(resultList.size());\n-                for (Result r : resultList) {\n-                    rets.add(r.getValue());\n-                }\n-                result = resultMerger.merge(\n-                        rets.toArray((Object[]) Array.newInstance(returnType, 0)));\n-            } else {\n-                throw new RpcException(\"There is no merger to merge result.\");\n-            }\n-        }\n-        return AsyncRpcResult.newDefaultAsyncResult(result, invocation);\n-    }\n-\n-\n-    @Override\n-    public Class<T> getInterface() {\n-        return directory.getInterface();\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        return directory.isAvailable();\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        directory.destroy();\n-    }\n-\n-    private String getGroupDescFromServiceKey(String key) {\n-        int index = key.indexOf(\"/\");\n-        if (index > 0) {\n-            return \"group [ \" + key.substring(0, index) + \" ]\";\n-        }\n-        return key;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.support;\r\n+\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ConfigUtils;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.rpc.AsyncRpcResult;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+import org.apache.dubbo.rpc.cluster.Directory;\r\n+import org.apache.dubbo.rpc.cluster.LoadBalance;\r\n+import org.apache.dubbo.rpc.cluster.Merger;\r\n+import org.apache.dubbo.rpc.cluster.merger.MergerFactory;\r\n+\r\n+import java.lang.reflect.Array;\r\n+import java.lang.reflect.Method;\r\n+import java.util.ArrayList;\r\n+import java.util.HashMap;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.ASYNC_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.MERGER_KEY;\r\n+\r\n+/**\r\n+ * @param <T>\r\n+ */\r\n+@SuppressWarnings(\"unchecked\")\r\n+public class MergeableClusterInvoker<T> extends AbstractClusterInvoker<T> {\r\n+\r\n+    private static final Logger log = LoggerFactory.getLogger(MergeableClusterInvoker.class);\r\n+\r\n+    public MergeableClusterInvoker(Directory<T> directory) {\r\n+        super(directory);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Result doInvoke(Invocation invocation, List<Invoker<T>> invokers, LoadBalance loadbalance) throws RpcException {\r\n+        checkInvokers(invokers, invocation);\r\n+        String merger = getUrl().getMethodParameter(invocation.getMethodName(), MERGER_KEY);\r\n+        if (ConfigUtils.isEmpty(merger)) { // If a method doesn't have a merger, only invoke one Group\r\n+            for (final Invoker<T> invoker : invokers) {\r\n+                if (invoker.isAvailable()) {\r\n+                    try {\r\n+                        return invoker.invoke(invocation);\r\n+                    } catch (RpcException e) {\r\n+                        if (e.isNoInvokerAvailableAfterFilter()) {\r\n+                            log.debug(\"No available provider for service\" + getUrl().getServiceKey() + \" on group \" + invoker.getUrl().getParameter(GROUP_KEY) + \", will continue to try another group.\");\r\n+                        } else {\r\n+                            throw e;\r\n+                        }\r\n+                    }\r\n+                }\r\n+            }\r\n+            return invokers.iterator().next().invoke(invocation);\r\n+        }\r\n+\r\n+        Class<?> returnType;\r\n+        try {\r\n+            returnType = getInterface().getMethod(\r\n+                    invocation.getMethodName(), invocation.getParameterTypes()).getReturnType();\r\n+        } catch (NoSuchMethodException e) {\r\n+            returnType = null;\r\n+        }\r\n+\r\n+        Map<String, Result> results = new HashMap<>();\r\n+        for (final Invoker<T> invoker : invokers) {\r\n+            RpcInvocation subInvocation = new RpcInvocation(invocation, invoker);\r\n+            subInvocation.setAttachment(ASYNC_KEY, \"true\");\r\n+            results.put(invoker.getUrl().getServiceKey(), invoker.invoke(subInvocation));\r\n+        }\r\n+\r\n+        Object result = null;\r\n+\r\n+        List<Result> resultList = new ArrayList<Result>(results.size());\r\n+\r\n+        for (Map.Entry<String, Result> entry : results.entrySet()) {\r\n+            Result asyncResult = entry.getValue();\r\n+            try {\r\n+                Result r = asyncResult.get();\r\n+                if (r.hasException()) {\r\n+                    log.error(\"Invoke \" + getGroupDescFromServiceKey(entry.getKey()) +\r\n+                                    \" failed: \" + r.getException().getMessage(),\r\n+                            r.getException());\r\n+                } else {\r\n+                    resultList.add(r);\r\n+                }\r\n+            } catch (Exception e) {\r\n+                throw new RpcException(\"Failed to invoke service \" + entry.getKey() + \": \" + e.getMessage(), e);\r\n+            }\r\n+        }\r\n+\r\n+        if (resultList.isEmpty()) {\r\n+            return AsyncRpcResult.newDefaultAsyncResult(invocation);\r\n+        } else if (resultList.size() == 1) {\r\n+            return AsyncRpcResult.newDefaultAsyncResult(resultList.get(0).getValue(), invocation);\r\n+        }\r\n+\r\n+        if (returnType == void.class) {\r\n+            return AsyncRpcResult.newDefaultAsyncResult(invocation);\r\n+        }\r\n+\r\n+        if (merger.startsWith(\".\")) {\r\n+            merger = merger.substring(1);\r\n+            Method method;\r\n+            try {\r\n+                method = returnType.getMethod(merger, returnType);\r\n+            } catch (NoSuchMethodException e) {\r\n+                throw new RpcException(\"Can not merge result because missing method [ \" + merger + \" ] in class [ \" +\r\n+                        returnType.getName() + \" ]\");\r\n+            }\r\n+            ReflectUtils.makeAccessible(method);\r\n+            result = resultList.remove(0).getValue();\r\n+            try {\r\n+                if (method.getReturnType() != void.class\r\n+                        && method.getReturnType().isAssignableFrom(result.getClass())) {\r\n+                    for (Result r : resultList) {\r\n+                        result = method.invoke(result, r.getValue());\r\n+                    }\r\n+                } else {\r\n+                    for (Result r : resultList) {\r\n+                        method.invoke(result, r.getValue());\r\n+                    }\r\n+                }\r\n+            } catch (Exception e) {\r\n+                throw new RpcException(\"Can not merge result: \" + e.getMessage(), e);\r\n+            }\r\n+        } else {\r\n+            Merger resultMerger;\r\n+            if (ConfigUtils.isDefault(merger)) {\r\n+                resultMerger = MergerFactory.getMerger(returnType);\r\n+            } else {\r\n+                resultMerger = ExtensionLoader.getExtensionLoader(Merger.class).getExtension(merger);\r\n+            }\r\n+            if (resultMerger != null) {\r\n+                List<Object> rets = new ArrayList<Object>(resultList.size());\r\n+                for (Result r : resultList) {\r\n+                    rets.add(r.getValue());\r\n+                }\r\n+                result = resultMerger.merge(\r\n+                        rets.toArray((Object[]) Array.newInstance(returnType, 0)));\r\n+            } else {\r\n+                throw new RpcException(\"There is no merger to merge result.\");\r\n+            }\r\n+        }\r\n+        return AsyncRpcResult.newDefaultAsyncResult(result, invocation);\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public Class<T> getInterface() {\r\n+        return directory.getInterface();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        return directory.isAvailable();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        directory.destroy();\r\n+    }\r\n+\r\n+    private String getGroupDescFromServiceKey(String key) {\r\n+        int index = key.indexOf(\"/\");\r\n+        if (index > 0) {\r\n+            return \"group [ \" + key.substring(0, index) + \" ]\";\r\n+        }\r\n+        return key;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/support/ProviderURLMergeProcessor.java", "source2": "org/apache/dubbo/rpc/cluster/support/ProviderURLMergeProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,29 +1,29 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.support;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-import java.util.Map;\n-\n-@SPI\n-public interface ProviderURLMergeProcessor {\n-    URL mergeProviderUrl(URL providerUrl, Map<String, String> localParametersMap);\n-\n-    boolean accept(URL providerUrl, Map<String, String> localParametersMap);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.support;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+import java.util.Map;\r\n+\r\n+@SPI\r\n+public interface ProviderURLMergeProcessor {\r\n+    URL mergeProviderUrl(URL providerUrl, Map<String, String> localParametersMap);\r\n+\r\n+    boolean accept(URL providerUrl, Map<String, String> localParametersMap);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/support/migration/MigrationClusterComparator.java", "source2": "org/apache/dubbo/rpc/cluster/support/migration/MigrationClusterComparator.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,28 +1,28 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.support.migration;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.rpc.Invoker;\n-\n-import java.util.List;\n-\n-@SPI\n-public interface MigrationClusterComparator {\n-\n-    <T> boolean shouldMigrate(List<Invoker<T>>  interfaceInvokers, List<Invoker<T>>  serviceInvokers);\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.support.migration;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+\r\n+import java.util.List;\r\n+\r\n+@SPI\r\n+public interface MigrationClusterComparator {\r\n+\r\n+    <T> boolean shouldMigrate(List<Invoker<T>>  interfaceInvokers, List<Invoker<T>>  serviceInvokers);\r\n }\n"}, {"source1": "org/apache/dubbo/rpc/cluster/support/migration/MigrationClusterInvoker.java", "source2": "org/apache/dubbo/rpc/cluster/support/migration/MigrationClusterInvoker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,54 +1,54 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.support.migration;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.rpc.cluster.ClusterInvoker;\n-\n-import java.util.concurrent.atomic.AtomicBoolean;\n-\n-public interface MigrationClusterInvoker<T> extends ClusterInvoker<T> {\n-\n-    boolean isServiceInvoker();\n-\n-    MigrationRule getMigrationRule();\n-\n-    void setMigrationRule(MigrationRule rule);\n-\n-    void destroyServiceDiscoveryInvoker(ClusterInvoker<?> invoker);\n-\n-    void discardServiceDiscoveryInvokerAddress(ClusterInvoker<?> invoker);\n-\n-    void discardInterfaceInvokerAddress(ClusterInvoker<T> invoker);\n-\n-    void refreshServiceDiscoveryInvoker();\n-\n-    void refreshInterfaceInvoker();\n-\n-    void destroyInterfaceInvoker(ClusterInvoker<T> invoker);\n-\n-    boolean isMigrationMultiRegistry();\n-\n-    void migrateToServiceDiscoveryInvoker(boolean forceMigrate);\n-\n-    void reRefer(URL newSubscribeUrl);\n-\n-    void fallbackToInterfaceInvoker();\n-\n-    AtomicBoolean invokersChanged();\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.support.migration;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.rpc.cluster.ClusterInvoker;\r\n+\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+\r\n+public interface MigrationClusterInvoker<T> extends ClusterInvoker<T> {\r\n+\r\n+    boolean isServiceInvoker();\r\n+\r\n+    MigrationRule getMigrationRule();\r\n+\r\n+    void setMigrationRule(MigrationRule rule);\r\n+\r\n+    void destroyServiceDiscoveryInvoker(ClusterInvoker<?> invoker);\r\n+\r\n+    void discardServiceDiscoveryInvokerAddress(ClusterInvoker<?> invoker);\r\n+\r\n+    void discardInterfaceInvokerAddress(ClusterInvoker<T> invoker);\r\n+\r\n+    void refreshServiceDiscoveryInvoker();\r\n+\r\n+    void refreshInterfaceInvoker();\r\n+\r\n+    void destroyInterfaceInvoker(ClusterInvoker<T> invoker);\r\n+\r\n+    boolean isMigrationMultiRegistry();\r\n+\r\n+    void migrateToServiceDiscoveryInvoker(boolean forceMigrate);\r\n+\r\n+    void reRefer(URL newSubscribeUrl);\r\n+\r\n+    void fallbackToInterfaceInvoker();\r\n+\r\n+    AtomicBoolean invokersChanged();\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/support/migration/MigrationRule.java", "source2": "org/apache/dubbo/rpc/cluster/support/migration/MigrationRule.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,90 +1,90 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.support.migration;\n-\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.yaml.snakeyaml.Yaml;\n-import org.yaml.snakeyaml.constructor.Constructor;\n-\n-import java.util.Optional;\n-\n-import static org.apache.dubbo.common.constants.RegistryConstants.INIT;\n-\n-public class MigrationRule {\n-    private static final String DUBBO_SERVICEDISCOVERY_MIGRATION_KEY = \"dubbo.application.service-discovery.migration\";\n-    public static final String DUBBO_SERVICEDISCOVERY_MIGRATION_GROUP = \"MIGRATION\";\n-    public static final String RULE_KEY = ApplicationModel.getName() + \".migration\";\n-\n-    private static DynamicConfiguration configuration = null;\n-\n-    static {\n-        Optional<DynamicConfiguration> optional = ApplicationModel.getEnvironment().getDynamicConfiguration();\n-        optional.ifPresent(dynamicConfiguration -> configuration = dynamicConfiguration);\n-    }\n-\n-    private String key;\n-    private MigrationStep step = MigrationStep.FORCE_INTERFACE;\n-\n-    public String getKey() {\n-        return key;\n-    }\n-\n-    public void setKey(String key) {\n-        this.key = key;\n-    }\n-\n-    public MigrationStep getStep() {\n-        return step;\n-    }\n-\n-    public void setStep(MigrationStep step) {\n-        this.step = step;\n-    }\n-\n-    public static MigrationRule parse(String rawRule) {\n-        if (null == configuration) {\n-            return getMigrationRule(null);\n-        }\n-\n-        if (StringUtils.isBlank(rawRule) || INIT.equals(rawRule)) {\n-            String step = (String)configuration.getInternalProperty(DUBBO_SERVICEDISCOVERY_MIGRATION_KEY);\n-            return getMigrationRule(step);\n-\n-        }\n-\n-        Constructor constructor = new Constructor(MigrationRule.class);\n-        Yaml yaml = new Yaml(constructor);\n-        return yaml.load(rawRule);\n-    }\n-\n-    public static MigrationRule queryRule() {\n-        if (null == configuration) {\n-            return getMigrationRule(null);\n-        }\n-\n-        String rawRule = configuration.getConfig(MigrationRule.RULE_KEY, DUBBO_SERVICEDISCOVERY_MIGRATION_GROUP);\n-        return parse(rawRule);\n-    }\n-\n-    private  static MigrationRule getMigrationRule(String step) {\n-        MigrationRule rule = new MigrationRule();\n-        rule.setStep(Enum.valueOf(MigrationStep.class, StringUtils.isBlank(step) ? MigrationStep.APPLICATION_FIRST.name() : step));\n-        return rule;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.support.migration;\r\n+\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.yaml.snakeyaml.Yaml;\r\n+import org.yaml.snakeyaml.constructor.Constructor;\r\n+\r\n+import java.util.Optional;\r\n+\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.INIT;\r\n+\r\n+public class MigrationRule {\r\n+    private static final String DUBBO_SERVICEDISCOVERY_MIGRATION_KEY = \"dubbo.application.service-discovery.migration\";\r\n+    public static final String DUBBO_SERVICEDISCOVERY_MIGRATION_GROUP = \"MIGRATION\";\r\n+    public static final String RULE_KEY = ApplicationModel.getName() + \".migration\";\r\n+\r\n+    private static DynamicConfiguration configuration = null;\r\n+\r\n+    static {\r\n+        Optional<DynamicConfiguration> optional = ApplicationModel.getEnvironment().getDynamicConfiguration();\r\n+        optional.ifPresent(dynamicConfiguration -> configuration = dynamicConfiguration);\r\n+    }\r\n+\r\n+    private String key;\r\n+    private MigrationStep step = MigrationStep.FORCE_INTERFACE;\r\n+\r\n+    public String getKey() {\r\n+        return key;\r\n+    }\r\n+\r\n+    public void setKey(String key) {\r\n+        this.key = key;\r\n+    }\r\n+\r\n+    public MigrationStep getStep() {\r\n+        return step;\r\n+    }\r\n+\r\n+    public void setStep(MigrationStep step) {\r\n+        this.step = step;\r\n+    }\r\n+\r\n+    public static MigrationRule parse(String rawRule) {\r\n+        if (null == configuration) {\r\n+            return getMigrationRule(null);\r\n+        }\r\n+\r\n+        if (StringUtils.isBlank(rawRule) || INIT.equals(rawRule)) {\r\n+            String step = (String)configuration.getInternalProperty(DUBBO_SERVICEDISCOVERY_MIGRATION_KEY);\r\n+            return getMigrationRule(step);\r\n+\r\n+        }\r\n+\r\n+        Constructor constructor = new Constructor(MigrationRule.class);\r\n+        Yaml yaml = new Yaml(constructor);\r\n+        return yaml.load(rawRule);\r\n+    }\r\n+\r\n+    public static MigrationRule queryRule() {\r\n+        if (null == configuration) {\r\n+            return getMigrationRule(null);\r\n+        }\r\n+\r\n+        String rawRule = configuration.getConfig(MigrationRule.RULE_KEY, DUBBO_SERVICEDISCOVERY_MIGRATION_GROUP);\r\n+        return parse(rawRule);\r\n+    }\r\n+\r\n+    private  static MigrationRule getMigrationRule(String step) {\r\n+        MigrationRule rule = new MigrationRule();\r\n+        rule.setStep(Enum.valueOf(MigrationStep.class, StringUtils.isBlank(step) ? MigrationStep.APPLICATION_FIRST.name() : step));\r\n+        return rule;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/cluster/support/migration/MigrationStep.java", "source2": "org/apache/dubbo/rpc/cluster/support/migration/MigrationStep.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,23 +1,23 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.support.migration;\n-\n-public enum MigrationStep {\n-    FORCE_INTERFACE,\n-    APPLICATION_FIRST,\n-    FORCE_APPLICATION\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.support.migration;\r\n+\r\n+public enum MigrationStep {\r\n+    FORCE_INTERFACE,\r\n+    APPLICATION_FIRST,\r\n+    FORCE_APPLICATION\r\n }\n"}, {"source1": "org/apache/dubbo/rpc/cluster/support/registry/ZoneAwareCluster.java", "source2": "org/apache/dubbo/rpc/cluster/support/registry/ZoneAwareCluster.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,36 +1,36 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.support.registry;\n-\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.cluster.Directory;\n-import org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;\n-import org.apache.dubbo.rpc.cluster.support.wrapper.AbstractCluster;\n-\n-/**\n- * See {@link ZoneAwareClusterInvoker}\n- */\n-public class ZoneAwareCluster extends AbstractCluster {\n-\n-    public final static String NAME = \"zone-aware\";\n-\n-    @Override\n-    protected <T> AbstractClusterInvoker<T> doJoin(Directory<T> directory) throws RpcException {\n-        return new ZoneAwareClusterInvoker<T>(directory);\n-    }\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.support.registry;\r\n+\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.cluster.Directory;\r\n+import org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;\r\n+import org.apache.dubbo.rpc.cluster.support.wrapper.AbstractCluster;\r\n+\r\n+/**\r\n+ * See {@link ZoneAwareClusterInvoker}\r\n+ */\r\n+public class ZoneAwareCluster extends AbstractCluster {\r\n+\r\n+    public final static String NAME = \"zone-aware\";\r\n+\r\n+    @Override\r\n+    protected <T> AbstractClusterInvoker<T> doJoin(Directory<T> directory) throws RpcException {\r\n+        return new ZoneAwareClusterInvoker<T>(directory);\r\n+    }\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/rpc/cluster/support/registry/ZoneAwareClusterInvoker.java", "source2": "org/apache/dubbo/rpc/cluster/support/registry/ZoneAwareClusterInvoker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,253 +1,253 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.support.registry;\n-\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.cluster.ClusterInvoker;\n-import org.apache.dubbo.rpc.cluster.Directory;\n-import org.apache.dubbo.rpc.cluster.LoadBalance;\n-import org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;\n-import org.apache.dubbo.rpc.cluster.support.migration.MigrationClusterComparator;\n-import org.apache.dubbo.rpc.cluster.support.migration.MigrationClusterInvoker;\n-import org.apache.dubbo.rpc.cluster.support.migration.MigrationRule;\n-import org.apache.dubbo.rpc.cluster.support.migration.MigrationStep;\n-import org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-import java.util.Set;\n-import java.util.stream.Collectors;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.PREFERRED_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.LOADBALANCE_AMONG_REGISTRIES;\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_ZONE;\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_ZONE_FORCE;\n-import static org.apache.dubbo.common.constants.RegistryConstants.ZONE_KEY;\n-\n-/**\n- * When there're more than one registry for subscription.\n- * <p>\n- * This extension provides a strategy to decide how to distribute traffics among them:\n- * 1. registry marked as 'preferred=true' has the highest priority.\n- * 2. check the zone the current request belongs, pick the registry that has the same zone first.\n- * 3. Evenly balance traffic between all registries based on each registry's weight.\n- * 4. Pick anyone that's available.\n- */\n-public class ZoneAwareClusterInvoker<T> extends AbstractClusterInvoker<T> {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(ZoneAwareClusterInvoker.class);\n-\n-    private static final String PREFER_REGISTRY_KEY = REGISTRY_KEY + \".\" + PREFERRED_KEY;\n-\n-    private static final String PREFER_REGISTRY_WITH_ZONE_KEY = REGISTRY_KEY + \".\" + ZONE_KEY;\n-\n-    private final LoadBalance loadBalanceAmongRegistries = ExtensionLoader.getExtensionLoader(LoadBalance.class).getExtension(LOADBALANCE_AMONG_REGISTRIES);\n-\n-    public ZoneAwareClusterInvoker(Directory<T> directory) {\n-        super(directory);\n-    }\n-\n-    @Override\n-    @SuppressWarnings({\"unchecked\", \"rawtypes\"})\n-    public Result doInvoke(Invocation invocation, final List<Invoker<T>> invokers, LoadBalance loadbalance) throws RpcException {\n-        // First, pick the invoker (XXXClusterInvoker) that comes from the local registry, distinguish by a 'preferred' key.\n-        for (Invoker<T> invoker : invokers) {\n-            ClusterInvoker<T> clusterInvoker = (ClusterInvoker<T>) invoker;\n-            if (clusterInvoker.isAvailable() && clusterInvoker.getRegistryUrl()\n-                    .getParameter(PREFER_REGISTRY_KEY, false)) {\n-                return clusterInvoker.invoke(invocation);\n-            }\n-        }\n-\n-        // providers in the registry with the same zone\n-        String zone = invocation.getAttachment(REGISTRY_ZONE);\n-        if (StringUtils.isNotEmpty(zone)) {\n-            for (Invoker<T> invoker : invokers) {\n-                ClusterInvoker<T> clusterInvoker = (ClusterInvoker<T>) invoker;\n-                if (clusterInvoker.isAvailable() && zone.equals(clusterInvoker.getRegistryUrl().getParameter(PREFER_REGISTRY_WITH_ZONE_KEY))) {\n-                    return clusterInvoker.invoke(invocation);\n-                }\n-            }\n-            String force = invocation.getAttachment(REGISTRY_ZONE_FORCE);\n-            if (StringUtils.isNotEmpty(force) && \"true\".equalsIgnoreCase(force)) {\n-                throw new IllegalStateException(\"No registry instance in zone or no available providers in the registry, zone: \"\n-                        + zone\n-                        + \", registries: \" + invokers.stream().map(invoker -> ((MockClusterInvoker<T>) invoker).getRegistryUrl().toString()).collect(Collectors.joining(\",\")));\n-            }\n-        }\n-\n-\n-        // load balance among all registries, with registry weight count in.\n-        Invoker<T> balancedInvoker = select(loadBalanceAmongRegistries, invocation, invokers, null);\n-        if (balancedInvoker.isAvailable()) {\n-            return balancedInvoker.invoke(invocation);\n-        }\n-\n-        // If none of the invokers has a preferred signal or is picked by the loadbalancer, pick the first one available.\n-        for (Invoker<T> invoker : invokers) {\n-            ClusterInvoker<T> clusterInvoker = (ClusterInvoker<T>) invoker;\n-            if (clusterInvoker.isAvailable()) {\n-                return clusterInvoker.invoke(invocation);\n-            }\n-        }\n-\n-        //if none available,just pick one\n-        return invokers.get(0).invoke(invocation);\n-    }\n-\n-    @Override\n-    protected List<Invoker<T>> list(Invocation invocation) throws RpcException {\n-        List<Invoker<T>> invokers = super.list(invocation);\n-\n-        if (null == invokers || invokers.size() < 2) {\n-            return invokers;\n-        }\n-\n-        List<Invoker<T>> interfaceInvokers = new ArrayList<>();\n-        List<Invoker<T>> serviceInvokers = new ArrayList<>();\n-        boolean addressChanged = false;\n-        for (Invoker<T> invoker : invokers) {\n-            MigrationClusterInvoker migrationClusterInvoker = (MigrationClusterInvoker) invoker;\n-            if (migrationClusterInvoker.isServiceInvoker()) {\n-                serviceInvokers.add(invoker);\n-            } else {\n-                interfaceInvokers.add(invoker);\n-            }\n-\n-            if (migrationClusterInvoker.invokersChanged().compareAndSet(true, false)) {\n-                addressChanged = true;\n-            }\n-        }\n-\n-        if (serviceInvokers.isEmpty() || interfaceInvokers.isEmpty()) {\n-            return invokers;\n-        }\n-\n-        MigrationRule rule = null;\n-        for (Invoker<T> invoker : serviceInvokers) {\n-            MigrationClusterInvoker migrationClusterInvoker = (MigrationClusterInvoker) invoker;\n-\n-            if (rule == null) {\n-                rule = migrationClusterInvoker.getMigrationRule();\n-                continue;\n-            }\n-\n-            // inconsistency rule\n-            if (!rule.equals(migrationClusterInvoker.getMigrationRule())) {\n-                rule = MigrationRule.queryRule();\n-                break;\n-            }\n-        }\n-\n-        MigrationStep step = rule.getStep();\n-\n-        switch (step) {\n-            case FORCE_INTERFACE:\n-                clusterRefresh(addressChanged, interfaceInvokers);\n-                clusterDestroy(addressChanged, serviceInvokers, true);\n-                if (logger.isDebugEnabled()) {\n-                    logger.debug(\"step is FORCE_INTERFACE\");\n-                }\n-                return interfaceInvokers;\n-\n-            case APPLICATION_FIRST:\n-                clusterRefresh(addressChanged, serviceInvokers);\n-                clusterRefresh(addressChanged, interfaceInvokers);\n-\n-                boolean serviceAvailable = !serviceInvokers.isEmpty();\n-                if (serviceAvailable) {\n-                    if (shouldMigrate(addressChanged, serviceInvokers, interfaceInvokers)) {\n-                        if (logger.isDebugEnabled()) {\n-                            logger.debug(\"step is APPLICATION_FIRST shouldMigrate true get serviceInvokers\");\n-                        }\n-                        return serviceInvokers;\n-                    }\n-                }\n-\n-                if (logger.isDebugEnabled()) {\n-                    logger.debug(\"step is APPLICATION_FIRST \" + (serviceInvokers.isEmpty() ? \"serviceInvokers is empty\" : \"shouldMigrate false\") + \" get interfaceInvokers\");\n-                }\n-\n-                return interfaceInvokers;\n-\n-            case FORCE_APPLICATION:\n-                clusterRefresh(addressChanged, serviceInvokers);\n-                clusterDestroy(addressChanged, interfaceInvokers, true);\n-\n-                if (logger.isDebugEnabled()) {\n-                    logger.debug(\"step is FORCE_APPLICATION\");\n-                }\n-\n-                return serviceInvokers;\n-        }\n-\n-        throw new UnsupportedOperationException(rule.getStep().name());\n-    }\n-\n-\n-    private boolean shouldMigrate(boolean addressChanged, List<Invoker<T>> serviceInvokers, List<Invoker<T>> interfaceInvokers) {\n-        Set<MigrationClusterComparator> detectors = ExtensionLoader.getExtensionLoader(MigrationClusterComparator.class).getSupportedExtensionInstances();\n-        if (detectors != null && !detectors.isEmpty()) {\n-            return detectors.stream().allMatch(s -> s.shouldMigrate(interfaceInvokers, serviceInvokers));\n-        }\n-\n-        // check application level provider available.\n-        List<Invoker<T>> availableServiceInvokers = serviceInvokers.stream().filter(s -> s.isAvailable()).collect(Collectors.toList());\n-        return !availableServiceInvokers.isEmpty();\n-    }\n-\n-    private void clusterDestroy(boolean addressChanged, List<Invoker<T>> invokers, boolean destroySub) {\n-        if (addressChanged) {\n-            invokers.forEach(s -> {\n-                MigrationClusterInvoker invoker = (MigrationClusterInvoker) s;\n-                if (invoker.isServiceInvoker()) {\n-                    invoker.discardServiceDiscoveryInvokerAddress(invoker);\n-                    if (destroySub) {\n-                        invoker.destroyServiceDiscoveryInvoker(invoker);\n-                    }\n-                } else {\n-                    invoker.discardInterfaceInvokerAddress(invoker);\n-                    if (destroySub) {\n-                        invoker.destroyInterfaceInvoker(invoker);\n-                    }\n-                }\n-            });\n-        }\n-    }\n-\n-    private void clusterRefresh(boolean addressChanged, List<Invoker<T>> invokers) {\n-        if (addressChanged) {\n-            invokers.forEach(s -> {\n-                MigrationClusterInvoker invoker = (MigrationClusterInvoker) s;\n-                if (invoker.isServiceInvoker()) {\n-                    invoker.refreshServiceDiscoveryInvoker();\n-                } else {\n-                    invoker.refreshInterfaceInvoker();\n-                }\n-            });\n-        }\n-    }\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.support.registry;\r\n+\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.cluster.ClusterInvoker;\r\n+import org.apache.dubbo.rpc.cluster.Directory;\r\n+import org.apache.dubbo.rpc.cluster.LoadBalance;\r\n+import org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;\r\n+import org.apache.dubbo.rpc.cluster.support.migration.MigrationClusterComparator;\r\n+import org.apache.dubbo.rpc.cluster.support.migration.MigrationClusterInvoker;\r\n+import org.apache.dubbo.rpc.cluster.support.migration.MigrationRule;\r\n+import org.apache.dubbo.rpc.cluster.support.migration.MigrationStep;\r\n+import org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+import java.util.Set;\r\n+import java.util.stream.Collectors;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PREFERRED_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.LOADBALANCE_AMONG_REGISTRIES;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_ZONE;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_ZONE_FORCE;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.ZONE_KEY;\r\n+\r\n+/**\r\n+ * When there're more than one registry for subscription.\r\n+ * <p>\r\n+ * This extension provides a strategy to decide how to distribute traffics among them:\r\n+ * 1. registry marked as 'preferred=true' has the highest priority.\r\n+ * 2. check the zone the current request belongs, pick the registry that has the same zone first.\r\n+ * 3. Evenly balance traffic between all registries based on each registry's weight.\r\n+ * 4. Pick anyone that's available.\r\n+ */\r\n+public class ZoneAwareClusterInvoker<T> extends AbstractClusterInvoker<T> {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(ZoneAwareClusterInvoker.class);\r\n+\r\n+    private static final String PREFER_REGISTRY_KEY = REGISTRY_KEY + \".\" + PREFERRED_KEY;\r\n+\r\n+    private static final String PREFER_REGISTRY_WITH_ZONE_KEY = REGISTRY_KEY + \".\" + ZONE_KEY;\r\n+\r\n+    private final LoadBalance loadBalanceAmongRegistries = ExtensionLoader.getExtensionLoader(LoadBalance.class).getExtension(LOADBALANCE_AMONG_REGISTRIES);\r\n+\r\n+    public ZoneAwareClusterInvoker(Directory<T> directory) {\r\n+        super(directory);\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings({\"unchecked\", \"rawtypes\"})\r\n+    public Result doInvoke(Invocation invocation, final List<Invoker<T>> invokers, LoadBalance loadbalance) throws RpcException {\r\n+        // First, pick the invoker (XXXClusterInvoker) that comes from the local registry, distinguish by a 'preferred' key.\r\n+        for (Invoker<T> invoker : invokers) {\r\n+            ClusterInvoker<T> clusterInvoker = (ClusterInvoker<T>) invoker;\r\n+            if (clusterInvoker.isAvailable() && clusterInvoker.getRegistryUrl()\r\n+                    .getParameter(PREFER_REGISTRY_KEY, false)) {\r\n+                return clusterInvoker.invoke(invocation);\r\n+            }\r\n+        }\r\n+\r\n+        // providers in the registry with the same zone\r\n+        String zone = invocation.getAttachment(REGISTRY_ZONE);\r\n+        if (StringUtils.isNotEmpty(zone)) {\r\n+            for (Invoker<T> invoker : invokers) {\r\n+                ClusterInvoker<T> clusterInvoker = (ClusterInvoker<T>) invoker;\r\n+                if (clusterInvoker.isAvailable() && zone.equals(clusterInvoker.getRegistryUrl().getParameter(PREFER_REGISTRY_WITH_ZONE_KEY))) {\r\n+                    return clusterInvoker.invoke(invocation);\r\n+                }\r\n+            }\r\n+            String force = invocation.getAttachment(REGISTRY_ZONE_FORCE);\r\n+            if (StringUtils.isNotEmpty(force) && \"true\".equalsIgnoreCase(force)) {\r\n+                throw new IllegalStateException(\"No registry instance in zone or no available providers in the registry, zone: \"\r\n+                        + zone\r\n+                        + \", registries: \" + invokers.stream().map(invoker -> ((MockClusterInvoker<T>) invoker).getRegistryUrl().toString()).collect(Collectors.joining(\",\")));\r\n+            }\r\n+        }\r\n+\r\n+\r\n+        // load balance among all registries, with registry weight count in.\r\n+        Invoker<T> balancedInvoker = select(loadBalanceAmongRegistries, invocation, invokers, null);\r\n+        if (balancedInvoker.isAvailable()) {\r\n+            return balancedInvoker.invoke(invocation);\r\n+        }\r\n+\r\n+        // If none of the invokers has a preferred signal or is picked by the loadbalancer, pick the first one available.\r\n+        for (Invoker<T> invoker : invokers) {\r\n+            ClusterInvoker<T> clusterInvoker = (ClusterInvoker<T>) invoker;\r\n+            if (clusterInvoker.isAvailable()) {\r\n+                return clusterInvoker.invoke(invocation);\r\n+            }\r\n+        }\r\n+\r\n+        //if none available,just pick one\r\n+        return invokers.get(0).invoke(invocation);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected List<Invoker<T>> list(Invocation invocation) throws RpcException {\r\n+        List<Invoker<T>> invokers = super.list(invocation);\r\n+\r\n+        if (null == invokers || invokers.size() < 2) {\r\n+            return invokers;\r\n+        }\r\n+\r\n+        List<Invoker<T>> interfaceInvokers = new ArrayList<>();\r\n+        List<Invoker<T>> serviceInvokers = new ArrayList<>();\r\n+        boolean addressChanged = false;\r\n+        for (Invoker<T> invoker : invokers) {\r\n+            MigrationClusterInvoker migrationClusterInvoker = (MigrationClusterInvoker) invoker;\r\n+            if (migrationClusterInvoker.isServiceInvoker()) {\r\n+                serviceInvokers.add(invoker);\r\n+            } else {\r\n+                interfaceInvokers.add(invoker);\r\n+            }\r\n+\r\n+            if (migrationClusterInvoker.invokersChanged().compareAndSet(true, false)) {\r\n+                addressChanged = true;\r\n+            }\r\n+        }\r\n+\r\n+        if (serviceInvokers.isEmpty() || interfaceInvokers.isEmpty()) {\r\n+            return invokers;\r\n+        }\r\n+\r\n+        MigrationRule rule = null;\r\n+        for (Invoker<T> invoker : serviceInvokers) {\r\n+            MigrationClusterInvoker migrationClusterInvoker = (MigrationClusterInvoker) invoker;\r\n+\r\n+            if (rule == null) {\r\n+                rule = migrationClusterInvoker.getMigrationRule();\r\n+                continue;\r\n+            }\r\n+\r\n+            // inconsistency rule\r\n+            if (!rule.equals(migrationClusterInvoker.getMigrationRule())) {\r\n+                rule = MigrationRule.queryRule();\r\n+                break;\r\n+            }\r\n+        }\r\n+\r\n+        MigrationStep step = rule.getStep();\r\n+\r\n+        switch (step) {\r\n+            case FORCE_INTERFACE:\r\n+                clusterRefresh(addressChanged, interfaceInvokers);\r\n+                clusterDestroy(addressChanged, serviceInvokers, true);\r\n+                if (logger.isDebugEnabled()) {\r\n+                    logger.debug(\"step is FORCE_INTERFACE\");\r\n+                }\r\n+                return interfaceInvokers;\r\n+\r\n+            case APPLICATION_FIRST:\r\n+                clusterRefresh(addressChanged, serviceInvokers);\r\n+                clusterRefresh(addressChanged, interfaceInvokers);\r\n+\r\n+                boolean serviceAvailable = !serviceInvokers.isEmpty();\r\n+                if (serviceAvailable) {\r\n+                    if (shouldMigrate(addressChanged, serviceInvokers, interfaceInvokers)) {\r\n+                        if (logger.isDebugEnabled()) {\r\n+                            logger.debug(\"step is APPLICATION_FIRST shouldMigrate true get serviceInvokers\");\r\n+                        }\r\n+                        return serviceInvokers;\r\n+                    }\r\n+                }\r\n+\r\n+                if (logger.isDebugEnabled()) {\r\n+                    logger.debug(\"step is APPLICATION_FIRST \" + (serviceInvokers.isEmpty() ? \"serviceInvokers is empty\" : \"shouldMigrate false\") + \" get interfaceInvokers\");\r\n+                }\r\n+\r\n+                return interfaceInvokers;\r\n+\r\n+            case FORCE_APPLICATION:\r\n+                clusterRefresh(addressChanged, serviceInvokers);\r\n+                clusterDestroy(addressChanged, interfaceInvokers, true);\r\n+\r\n+                if (logger.isDebugEnabled()) {\r\n+                    logger.debug(\"step is FORCE_APPLICATION\");\r\n+                }\r\n+\r\n+                return serviceInvokers;\r\n+        }\r\n+\r\n+        throw new UnsupportedOperationException(rule.getStep().name());\r\n+    }\r\n+\r\n+\r\n+    private boolean shouldMigrate(boolean addressChanged, List<Invoker<T>> serviceInvokers, List<Invoker<T>> interfaceInvokers) {\r\n+        Set<MigrationClusterComparator> detectors = ExtensionLoader.getExtensionLoader(MigrationClusterComparator.class).getSupportedExtensionInstances();\r\n+        if (detectors != null && !detectors.isEmpty()) {\r\n+            return detectors.stream().allMatch(s -> s.shouldMigrate(interfaceInvokers, serviceInvokers));\r\n+        }\r\n+\r\n+        // check application level provider available.\r\n+        List<Invoker<T>> availableServiceInvokers = serviceInvokers.stream().filter(s -> s.isAvailable()).collect(Collectors.toList());\r\n+        return !availableServiceInvokers.isEmpty();\r\n+    }\r\n+\r\n+    private void clusterDestroy(boolean addressChanged, List<Invoker<T>> invokers, boolean destroySub) {\r\n+        if (addressChanged) {\r\n+            invokers.forEach(s -> {\r\n+                MigrationClusterInvoker invoker = (MigrationClusterInvoker) s;\r\n+                if (invoker.isServiceInvoker()) {\r\n+                    invoker.discardServiceDiscoveryInvokerAddress(invoker);\r\n+                    if (destroySub) {\r\n+                        invoker.destroyServiceDiscoveryInvoker(invoker);\r\n+                    }\r\n+                } else {\r\n+                    invoker.discardInterfaceInvokerAddress(invoker);\r\n+                    if (destroySub) {\r\n+                        invoker.destroyInterfaceInvoker(invoker);\r\n+                    }\r\n+                }\r\n+            });\r\n+        }\r\n+    }\r\n+\r\n+    private void clusterRefresh(boolean addressChanged, List<Invoker<T>> invokers) {\r\n+        if (addressChanged) {\r\n+            invokers.forEach(s -> {\r\n+                MigrationClusterInvoker invoker = (MigrationClusterInvoker) s;\r\n+                if (invoker.isServiceInvoker()) {\r\n+                    invoker.refreshServiceDiscoveryInvoker();\r\n+                } else {\r\n+                    invoker.refreshInterfaceInvoker();\r\n+                }\r\n+            });\r\n+        }\r\n+    }\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/rpc/cluster/support/wrapper/AbstractCluster.java", "source2": "org/apache/dubbo/rpc/cluster/support/wrapper/AbstractCluster.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,132 +1,132 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.cluster.support.wrapper;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.cluster.Cluster;\n-import org.apache.dubbo.rpc.cluster.Directory;\n-import org.apache.dubbo.rpc.cluster.LoadBalance;\n-import org.apache.dubbo.rpc.cluster.interceptor.ClusterInterceptor;\n-import org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;\n-\n-import java.util.List;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.REFERENCE_INTERCEPTOR_KEY;\n-\n-public abstract class AbstractCluster implements Cluster {\n-\n-    private <T> Invoker<T> buildClusterInterceptors(AbstractClusterInvoker<T> clusterInvoker, String key) {\n-        AbstractClusterInvoker<T> last = clusterInvoker;\n-        List<ClusterInterceptor> interceptors = ExtensionLoader.getExtensionLoader(ClusterInterceptor.class).getActivateExtension(clusterInvoker.getUrl(), key);\n-\n-        if (!interceptors.isEmpty()) {\n-            for (int i = interceptors.size() - 1; i >= 0; i--) {\n-                final ClusterInterceptor interceptor = interceptors.get(i);\n-                final AbstractClusterInvoker<T> next = last;\n-                last = new InterceptorInvokerNode<>(clusterInvoker, interceptor, next);\n-            }\n-        }\n-        return last;\n-    }\n-\n-    @Override\n-    public <T> Invoker<T> join(Directory<T> directory) throws RpcException {\n-        return buildClusterInterceptors(doJoin(directory), directory.getUrl().getParameter(REFERENCE_INTERCEPTOR_KEY));\n-    }\n-\n-    protected abstract <T> AbstractClusterInvoker<T> doJoin(Directory<T> directory) throws RpcException;\n-\n-    protected class InterceptorInvokerNode<T> extends AbstractClusterInvoker<T> {\n-\n-        private AbstractClusterInvoker<T> clusterInvoker;\n-        private ClusterInterceptor interceptor;\n-        private AbstractClusterInvoker<T> next;\n-\n-        public InterceptorInvokerNode(AbstractClusterInvoker<T> clusterInvoker,\n-                                      ClusterInterceptor interceptor,\n-                                      AbstractClusterInvoker<T> next) {\n-            this.clusterInvoker = clusterInvoker;\n-            this.interceptor = interceptor;\n-            this.next = next;\n-        }\n-\n-        @Override\n-        public Class<T> getInterface() {\n-            return clusterInvoker.getInterface();\n-        }\n-\n-        @Override\n-        public URL getUrl() {\n-            return clusterInvoker.getUrl();\n-        }\n-\n-        @Override\n-        public boolean isAvailable() {\n-            return clusterInvoker.isAvailable();\n-        }\n-\n-        @Override\n-        public Result invoke(Invocation invocation) throws RpcException {\n-            Result asyncResult;\n-            try {\n-                interceptor.before(next, invocation);\n-                asyncResult = interceptor.intercept(next, invocation);\n-            } catch (Exception e) {\n-                // onError callback\n-                if (interceptor instanceof ClusterInterceptor.Listener) {\n-                    ClusterInterceptor.Listener listener = (ClusterInterceptor.Listener) interceptor;\n-                    listener.onError(e, clusterInvoker, invocation);\n-                }\n-                throw e;\n-            } finally {\n-                interceptor.after(next, invocation);\n-            }\n-            return asyncResult.whenCompleteWithContext((r, t) -> {\n-                // onResponse callback\n-                if (interceptor instanceof ClusterInterceptor.Listener) {\n-                    ClusterInterceptor.Listener listener = (ClusterInterceptor.Listener) interceptor;\n-                    if (t == null) {\n-                        listener.onMessage(r, clusterInvoker, invocation);\n-                    } else {\n-                        listener.onError(t, clusterInvoker, invocation);\n-                    }\n-                }\n-            });\n-        }\n-\n-        @Override\n-        public void destroy() {\n-            clusterInvoker.destroy();\n-        }\n-\n-        @Override\n-        public String toString() {\n-            return clusterInvoker.toString();\n-        }\n-\n-        @Override\n-        protected Result doInvoke(Invocation invocation, List<Invoker<T>> invokers, LoadBalance loadbalance) throws RpcException {\n-            // The only purpose is to build an interceptor chain, so the cluster related logic doesn't matter.\n-            return null;\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.cluster.support.wrapper;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.cluster.Cluster;\r\n+import org.apache.dubbo.rpc.cluster.Directory;\r\n+import org.apache.dubbo.rpc.cluster.LoadBalance;\r\n+import org.apache.dubbo.rpc.cluster.interceptor.ClusterInterceptor;\r\n+import org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;\r\n+\r\n+import java.util.List;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REFERENCE_INTERCEPTOR_KEY;\r\n+\r\n+public abstract class AbstractCluster implements Cluster {\r\n+\r\n+    private <T> Invoker<T> buildClusterInterceptors(AbstractClusterInvoker<T> clusterInvoker, String key) {\r\n+        AbstractClusterInvoker<T> last = clusterInvoker;\r\n+        List<ClusterInterceptor> interceptors = ExtensionLoader.getExtensionLoader(ClusterInterceptor.class).getActivateExtension(clusterInvoker.getUrl(), key);\r\n+\r\n+        if (!interceptors.isEmpty()) {\r\n+            for (int i = interceptors.size() - 1; i >= 0; i--) {\r\n+                final ClusterInterceptor interceptor = interceptors.get(i);\r\n+                final AbstractClusterInvoker<T> next = last;\r\n+                last = new InterceptorInvokerNode<>(clusterInvoker, interceptor, next);\r\n+            }\r\n+        }\r\n+        return last;\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> Invoker<T> join(Directory<T> directory) throws RpcException {\r\n+        return buildClusterInterceptors(doJoin(directory), directory.getUrl().getParameter(REFERENCE_INTERCEPTOR_KEY));\r\n+    }\r\n+\r\n+    protected abstract <T> AbstractClusterInvoker<T> doJoin(Directory<T> directory) throws RpcException;\r\n+\r\n+    protected class InterceptorInvokerNode<T> extends AbstractClusterInvoker<T> {\r\n+\r\n+        private AbstractClusterInvoker<T> clusterInvoker;\r\n+        private ClusterInterceptor interceptor;\r\n+        private AbstractClusterInvoker<T> next;\r\n+\r\n+        public InterceptorInvokerNode(AbstractClusterInvoker<T> clusterInvoker,\r\n+                                      ClusterInterceptor interceptor,\r\n+                                      AbstractClusterInvoker<T> next) {\r\n+            this.clusterInvoker = clusterInvoker;\r\n+            this.interceptor = interceptor;\r\n+            this.next = next;\r\n+        }\r\n+\r\n+        @Override\r\n+        public Class<T> getInterface() {\r\n+            return clusterInvoker.getInterface();\r\n+        }\r\n+\r\n+        @Override\r\n+        public URL getUrl() {\r\n+            return clusterInvoker.getUrl();\r\n+        }\r\n+\r\n+        @Override\r\n+        public boolean isAvailable() {\r\n+            return clusterInvoker.isAvailable();\r\n+        }\r\n+\r\n+        @Override\r\n+        public Result invoke(Invocation invocation) throws RpcException {\r\n+            Result asyncResult;\r\n+            try {\r\n+                interceptor.before(next, invocation);\r\n+                asyncResult = interceptor.intercept(next, invocation);\r\n+            } catch (Exception e) {\r\n+                // onError callback\r\n+                if (interceptor instanceof ClusterInterceptor.Listener) {\r\n+                    ClusterInterceptor.Listener listener = (ClusterInterceptor.Listener) interceptor;\r\n+                    listener.onError(e, clusterInvoker, invocation);\r\n+                }\r\n+                throw e;\r\n+            } finally {\r\n+                interceptor.after(next, invocation);\r\n+            }\r\n+            return asyncResult.whenCompleteWithContext((r, t) -> {\r\n+                // onResponse callback\r\n+                if (interceptor instanceof ClusterInterceptor.Listener) {\r\n+                    ClusterInterceptor.Listener listener = (ClusterInterceptor.Listener) interceptor;\r\n+                    if (t == null) {\r\n+                        listener.onMessage(r, clusterInvoker, invocation);\r\n+                    } else {\r\n+                        listener.onError(t, clusterInvoker, invocation);\r\n+                    }\r\n+                }\r\n+            });\r\n+        }\r\n+\r\n+        @Override\r\n+        public void destroy() {\r\n+            clusterInvoker.destroy();\r\n+        }\r\n+\r\n+        @Override\r\n+        public String toString() {\r\n+            return clusterInvoker.toString();\r\n+        }\r\n+\r\n+        @Override\r\n+        protected Result doInvoke(Invocation invocation, List<Invoker<T>> invokers, LoadBalance loadbalance) throws RpcException {\r\n+            // The only purpose is to build an interceptor chain, so the cluster related logic doesn't matter.\r\n+            return null;\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.interceptor.ClusterInterceptor", "source2": "META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.interceptor.ClusterInterceptor", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,2 +1,2 @@\n-context=org.apache.dubbo.rpc.cluster.interceptor.ConsumerContextClusterInterceptor\n+context=org.apache.dubbo.rpc.cluster.interceptor.ConsumerContextClusterInterceptor\r\n zone-aware=org.apache.dubbo.rpc.cluster.interceptor.ZoneAwareClusterInterceptor\n"}, {"source1": "com/alibaba/dubbo/config/annotation/Reference.java", "source2": "com/alibaba/dubbo/config/annotation/Reference.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,113 +1,113 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.config.annotation;\n-\n-import java.lang.annotation.Documented;\n-import java.lang.annotation.ElementType;\n-import java.lang.annotation.Retention;\n-import java.lang.annotation.RetentionPolicy;\n-import java.lang.annotation.Target;\n-\n-@Deprecated\n-@Documented\n-@Retention(RetentionPolicy.RUNTIME)\n-@Target({ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})\n-public @interface Reference {\n-\n-    Class<?> interfaceClass() default void.class;\n-\n-    String interfaceName() default \"\";\n-\n-    String version() default \"\";\n-\n-    String group() default \"\";\n-\n-    String url() default \"\";\n-\n-    String client() default \"\";\n-\n-    boolean generic() default false;\n-\n-    boolean injvm() default true;\n-\n-    boolean check() default true;\n-\n-    boolean init() default false;\n-\n-    boolean lazy() default false;\n-\n-    boolean stubevent() default false;\n-\n-    String reconnect() default \"\";\n-\n-    boolean sticky() default false;\n-\n-    String proxy() default \"\";\n-\n-    String stub() default \"\";\n-\n-    String cluster() default \"\";\n-\n-    int connections() default 0;\n-\n-    int callbacks() default 0;\n-\n-    String onconnect() default \"\";\n-\n-    String ondisconnect() default \"\";\n-\n-    String owner() default \"\";\n-\n-    String layer() default \"\";\n-\n-    int retries() default 2;\n-\n-    String loadbalance() default \"\";\n-\n-    boolean async() default false;\n-\n-    int actives() default 0;\n-\n-    boolean sent() default false;\n-\n-    String mock() default \"\";\n-\n-    String validation() default \"\";\n-\n-    int timeout() default 0;\n-\n-    String cache() default \"\";\n-\n-    String[] filter() default {};\n-\n-    String[] listener() default {};\n-\n-    String[] parameters() default {};\n-\n-    String application() default \"\";\n-\n-    String module() default \"\";\n-\n-    String consumer() default \"\";\n-\n-    String monitor() default \"\";\n-\n-    String[] registry() default {};\n-\n-}\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.config.annotation;\r\n+\r\n+import java.lang.annotation.Documented;\r\n+import java.lang.annotation.ElementType;\r\n+import java.lang.annotation.Retention;\r\n+import java.lang.annotation.RetentionPolicy;\r\n+import java.lang.annotation.Target;\r\n+\r\n+@Deprecated\r\n+@Documented\r\n+@Retention(RetentionPolicy.RUNTIME)\r\n+@Target({ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})\r\n+public @interface Reference {\r\n+\r\n+    Class<?> interfaceClass() default void.class;\r\n+\r\n+    String interfaceName() default \"\";\r\n+\r\n+    String version() default \"\";\r\n+\r\n+    String group() default \"\";\r\n+\r\n+    String url() default \"\";\r\n+\r\n+    String client() default \"\";\r\n+\r\n+    boolean generic() default false;\r\n+\r\n+    boolean injvm() default true;\r\n+\r\n+    boolean check() default true;\r\n+\r\n+    boolean init() default false;\r\n+\r\n+    boolean lazy() default false;\r\n+\r\n+    boolean stubevent() default false;\r\n+\r\n+    String reconnect() default \"\";\r\n+\r\n+    boolean sticky() default false;\r\n+\r\n+    String proxy() default \"\";\r\n+\r\n+    String stub() default \"\";\r\n+\r\n+    String cluster() default \"\";\r\n+\r\n+    int connections() default 0;\r\n+\r\n+    int callbacks() default 0;\r\n+\r\n+    String onconnect() default \"\";\r\n+\r\n+    String ondisconnect() default \"\";\r\n+\r\n+    String owner() default \"\";\r\n+\r\n+    String layer() default \"\";\r\n+\r\n+    int retries() default 2;\r\n+\r\n+    String loadbalance() default \"\";\r\n+\r\n+    boolean async() default false;\r\n+\r\n+    int actives() default 0;\r\n+\r\n+    boolean sent() default false;\r\n+\r\n+    String mock() default \"\";\r\n+\r\n+    String validation() default \"\";\r\n+\r\n+    int timeout() default 0;\r\n+\r\n+    String cache() default \"\";\r\n+\r\n+    String[] filter() default {};\r\n+\r\n+    String[] listener() default {};\r\n+\r\n+    String[] parameters() default {};\r\n+\r\n+    String application() default \"\";\r\n+\r\n+    String module() default \"\";\r\n+\r\n+    String consumer() default \"\";\r\n+\r\n+    String monitor() default \"\";\r\n+\r\n+    String[] registry() default {};\r\n+\r\n+}\r\n+\r\n"}, {"source1": "com/alibaba/dubbo/config/annotation/Service.java", "source2": "com/alibaba/dubbo/config/annotation/Service.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,120 +1,120 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.config.annotation;\n-\n-import java.lang.annotation.Documented;\n-import java.lang.annotation.ElementType;\n-import java.lang.annotation.Inherited;\n-import java.lang.annotation.Retention;\n-import java.lang.annotation.RetentionPolicy;\n-import java.lang.annotation.Target;\n-\n-@Deprecated\n-@Documented\n-@Retention(RetentionPolicy.RUNTIME)\n-@Target({ElementType.TYPE})\n-@Inherited\n-public @interface Service {\n-\n-    Class<?> interfaceClass() default void.class;\n-\n-    String interfaceName() default \"\";\n-\n-    String version() default \"\";\n-\n-    String group() default \"\";\n-\n-    String path() default \"\";\n-\n-    boolean export() default false;\n-\n-    String token() default \"\";\n-\n-    boolean deprecated() default false;\n-\n-    boolean dynamic() default true;\n-\n-    String accesslog() default \"\";\n-\n-    int executes() default 0;\n-\n-    boolean register() default false;\n-\n-    int weight() default 0;\n-\n-    String document() default \"\";\n-\n-    int delay() default 0;\n-\n-    String local() default \"\";\n-\n-    String stub() default \"\";\n-\n-    String cluster() default \"\";\n-\n-    String proxy() default \"\";\n-\n-    int connections() default 0;\n-\n-    int callbacks() default 0;\n-\n-    String onconnect() default \"\";\n-\n-    String ondisconnect() default \"\";\n-\n-    String owner() default \"\";\n-\n-    String layer() default \"\";\n-\n-    int retries() default 0;\n-\n-    String loadbalance() default \"\";\n-\n-    boolean async() default false;\n-\n-    int actives() default 0;\n-\n-    boolean sent() default false;\n-\n-    String mock() default \"\";\n-\n-    String validation() default \"\";\n-\n-    int timeout() default 0;\n-\n-    String cache() default \"\";\n-\n-    String[] filter() default {};\n-\n-    String[] listener() default {};\n-\n-    String[] parameters() default {};\n-\n-    String application() default \"\";\n-\n-    String module() default \"\";\n-\n-    String provider() default \"\";\n-\n-    String[] protocol() default {};\n-\n-    String monitor() default \"\";\n-\n-    String[] registry() default {};\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.config.annotation;\r\n+\r\n+import java.lang.annotation.Documented;\r\n+import java.lang.annotation.ElementType;\r\n+import java.lang.annotation.Inherited;\r\n+import java.lang.annotation.Retention;\r\n+import java.lang.annotation.RetentionPolicy;\r\n+import java.lang.annotation.Target;\r\n+\r\n+@Deprecated\r\n+@Documented\r\n+@Retention(RetentionPolicy.RUNTIME)\r\n+@Target({ElementType.TYPE})\r\n+@Inherited\r\n+public @interface Service {\r\n+\r\n+    Class<?> interfaceClass() default void.class;\r\n+\r\n+    String interfaceName() default \"\";\r\n+\r\n+    String version() default \"\";\r\n+\r\n+    String group() default \"\";\r\n+\r\n+    String path() default \"\";\r\n+\r\n+    boolean export() default false;\r\n+\r\n+    String token() default \"\";\r\n+\r\n+    boolean deprecated() default false;\r\n+\r\n+    boolean dynamic() default true;\r\n+\r\n+    String accesslog() default \"\";\r\n+\r\n+    int executes() default 0;\r\n+\r\n+    boolean register() default false;\r\n+\r\n+    int weight() default 0;\r\n+\r\n+    String document() default \"\";\r\n+\r\n+    int delay() default 0;\r\n+\r\n+    String local() default \"\";\r\n+\r\n+    String stub() default \"\";\r\n+\r\n+    String cluster() default \"\";\r\n+\r\n+    String proxy() default \"\";\r\n+\r\n+    int connections() default 0;\r\n+\r\n+    int callbacks() default 0;\r\n+\r\n+    String onconnect() default \"\";\r\n+\r\n+    String ondisconnect() default \"\";\r\n+\r\n+    String owner() default \"\";\r\n+\r\n+    String layer() default \"\";\r\n+\r\n+    int retries() default 0;\r\n+\r\n+    String loadbalance() default \"\";\r\n+\r\n+    boolean async() default false;\r\n+\r\n+    int actives() default 0;\r\n+\r\n+    boolean sent() default false;\r\n+\r\n+    String mock() default \"\";\r\n+\r\n+    String validation() default \"\";\r\n+\r\n+    int timeout() default 0;\r\n+\r\n+    String cache() default \"\";\r\n+\r\n+    String[] filter() default {};\r\n+\r\n+    String[] listener() default {};\r\n+\r\n+    String[] parameters() default {};\r\n+\r\n+    String application() default \"\";\r\n+\r\n+    String module() default \"\";\r\n+\r\n+    String provider() default \"\";\r\n+\r\n+    String[] protocol() default {};\r\n+\r\n+    String monitor() default \"\";\r\n+\r\n+    String[] registry() default {};\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/BaseServiceMetadata.java", "source2": "org/apache/dubbo/common/BaseServiceMetadata.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,137 +1,137 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_VERSION;\n-\n-/**\n- * 2019-10-10\n- */\n-public class BaseServiceMetadata {\n-    public static final char COLON_SEPARATOR = ':';\n-\n-    protected String serviceKey;\n-    protected String serviceInterfaceName;\n-    protected String version;\n-    protected volatile String group;\n-\n-    public static String buildServiceKey(String path, String group, String version) {\n-        StringBuilder buf = new StringBuilder();\n-        if (group != null && group.length() > 0) {\n-            buf.append(group).append(\"/\");\n-        }\n-        buf.append(path);\n-        if (version != null && version.length() > 0) {\n-            buf.append(\":\").append(version);\n-        }\n-        return buf.toString();\n-    }\n-\n-    public static String versionFromServiceKey(String serviceKey) {\n-        int index = serviceKey.indexOf(\":\");\n-        if (index == -1) {\n-            return DEFAULT_VERSION;\n-        }\n-        return serviceKey.substring(index + 1);\n-    }\n-\n-    public static String groupFromServiceKey(String serviceKey) {\n-        int index = serviceKey.indexOf(\"/\");\n-        if (index == -1) {\n-            return null;\n-        }\n-        return serviceKey.substring(0, index);\n-    }\n-\n-    public static String interfaceFromServiceKey(String serviceKey) {\n-        int groupIndex = serviceKey.indexOf(\"/\");\n-        int versionIndex = serviceKey.indexOf(\":\");\n-        groupIndex = (groupIndex == -1) ? 0 : groupIndex + 1;\n-        versionIndex = (versionIndex == -1) ? serviceKey.length() : versionIndex;\n-        return serviceKey.substring(groupIndex, versionIndex);\n-    }\n-\n-    /**\n-     * Format : interface:version\n-     *\n-     * @return\n-     */\n-    public String getDisplayServiceKey() {\n-        StringBuilder serviceNameBuilder = new StringBuilder();\n-        serviceNameBuilder.append(serviceInterfaceName);\n-        serviceNameBuilder.append(COLON_SEPARATOR).append(version);\n-        return serviceNameBuilder.toString();\n-    }\n-\n-    /**\n-     * revert of org.apache.dubbo.common.ServiceDescriptor#getDisplayServiceKey()\n-     *\n-     * @param displayKey\n-     * @return\n-     */\n-    public static BaseServiceMetadata revertDisplayServiceKey(String displayKey) {\n-        String[] eles = StringUtils.split(displayKey, COLON_SEPARATOR);\n-        if (eles == null || eles.length < 1 || eles.length > 2) {\n-            return new BaseServiceMetadata();\n-        }\n-        BaseServiceMetadata serviceDescriptor = new BaseServiceMetadata();\n-        serviceDescriptor.setServiceInterfaceName(eles[0]);\n-        if (eles.length == 2) {\n-            serviceDescriptor.setVersion(eles[1]);\n-        }\n-        return serviceDescriptor;\n-    }\n-\n-    public String getServiceKey() {\n-        return serviceKey;\n-    }\n-\n-    public void generateServiceKey() {\n-        this.serviceKey = buildServiceKey(serviceInterfaceName, group, version);\n-    }\n-\n-    public void setServiceKey(String serviceKey) {\n-        this.serviceKey = serviceKey;\n-    }\n-\n-    public String getServiceInterfaceName() {\n-        return serviceInterfaceName;\n-    }\n-\n-    public void setServiceInterfaceName(String serviceInterfaceName) {\n-        this.serviceInterfaceName = serviceInterfaceName;\n-    }\n-\n-    public String getVersion() {\n-        return version;\n-    }\n-\n-    public void setVersion(String version) {\n-        this.version = version;\n-    }\n-\n-    public String getGroup() {\n-        return group;\n-    }\n-\n-    public void setGroup(String group) {\n-        this.group = group;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_VERSION;\r\n+\r\n+/**\r\n+ * 2019-10-10\r\n+ */\r\n+public class BaseServiceMetadata {\r\n+    public static final char COLON_SEPARATOR = ':';\r\n+\r\n+    protected String serviceKey;\r\n+    protected String serviceInterfaceName;\r\n+    protected String version;\r\n+    protected volatile String group;\r\n+\r\n+    public static String buildServiceKey(String path, String group, String version) {\r\n+        StringBuilder buf = new StringBuilder();\r\n+        if (group != null && group.length() > 0) {\r\n+            buf.append(group).append(\"/\");\r\n+        }\r\n+        buf.append(path);\r\n+        if (version != null && version.length() > 0) {\r\n+            buf.append(\":\").append(version);\r\n+        }\r\n+        return buf.toString();\r\n+    }\r\n+\r\n+    public static String versionFromServiceKey(String serviceKey) {\r\n+        int index = serviceKey.indexOf(\":\");\r\n+        if (index == -1) {\r\n+            return DEFAULT_VERSION;\r\n+        }\r\n+        return serviceKey.substring(index + 1);\r\n+    }\r\n+\r\n+    public static String groupFromServiceKey(String serviceKey) {\r\n+        int index = serviceKey.indexOf(\"/\");\r\n+        if (index == -1) {\r\n+            return null;\r\n+        }\r\n+        return serviceKey.substring(0, index);\r\n+    }\r\n+\r\n+    public static String interfaceFromServiceKey(String serviceKey) {\r\n+        int groupIndex = serviceKey.indexOf(\"/\");\r\n+        int versionIndex = serviceKey.indexOf(\":\");\r\n+        groupIndex = (groupIndex == -1) ? 0 : groupIndex + 1;\r\n+        versionIndex = (versionIndex == -1) ? serviceKey.length() : versionIndex;\r\n+        return serviceKey.substring(groupIndex, versionIndex);\r\n+    }\r\n+\r\n+    /**\r\n+     * Format : interface:version\r\n+     *\r\n+     * @return\r\n+     */\r\n+    public String getDisplayServiceKey() {\r\n+        StringBuilder serviceNameBuilder = new StringBuilder();\r\n+        serviceNameBuilder.append(serviceInterfaceName);\r\n+        serviceNameBuilder.append(COLON_SEPARATOR).append(version);\r\n+        return serviceNameBuilder.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * revert of org.apache.dubbo.common.ServiceDescriptor#getDisplayServiceKey()\r\n+     *\r\n+     * @param displayKey\r\n+     * @return\r\n+     */\r\n+    public static BaseServiceMetadata revertDisplayServiceKey(String displayKey) {\r\n+        String[] eles = StringUtils.split(displayKey, COLON_SEPARATOR);\r\n+        if (eles == null || eles.length < 1 || eles.length > 2) {\r\n+            return new BaseServiceMetadata();\r\n+        }\r\n+        BaseServiceMetadata serviceDescriptor = new BaseServiceMetadata();\r\n+        serviceDescriptor.setServiceInterfaceName(eles[0]);\r\n+        if (eles.length == 2) {\r\n+            serviceDescriptor.setVersion(eles[1]);\r\n+        }\r\n+        return serviceDescriptor;\r\n+    }\r\n+\r\n+    public String getServiceKey() {\r\n+        return serviceKey;\r\n+    }\r\n+\r\n+    public void generateServiceKey() {\r\n+        this.serviceKey = buildServiceKey(serviceInterfaceName, group, version);\r\n+    }\r\n+\r\n+    public void setServiceKey(String serviceKey) {\r\n+        this.serviceKey = serviceKey;\r\n+    }\r\n+\r\n+    public String getServiceInterfaceName() {\r\n+        return serviceInterfaceName;\r\n+    }\r\n+\r\n+    public void setServiceInterfaceName(String serviceInterfaceName) {\r\n+        this.serviceInterfaceName = serviceInterfaceName;\r\n+    }\r\n+\r\n+    public String getVersion() {\r\n+        return version;\r\n+    }\r\n+\r\n+    public void setVersion(String version) {\r\n+        this.version = version;\r\n+    }\r\n+\r\n+    public String getGroup() {\r\n+        return group;\r\n+    }\r\n+\r\n+    public void setGroup(String group) {\r\n+        this.group = group;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/Experimental.java", "source2": "org/apache/dubbo/common/Experimental.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,37 +1,37 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common;\n-\n-import java.lang.annotation.ElementType;\n-import java.lang.annotation.Retention;\n-import java.lang.annotation.RetentionPolicy;\n-import java.lang.annotation.Target;\n-\n-/**\n- * Indicating unstable API, may get removed or changed in the next release.\n- */\n-@Retention(RetentionPolicy.CLASS)\n-@Target({\n-        ElementType.ANNOTATION_TYPE,\n-        ElementType.CONSTRUCTOR,\n-        ElementType.FIELD,\n-        ElementType.METHOD,\n-        ElementType.PACKAGE,\n-        ElementType.TYPE})\n-public @interface Experimental {\n-    String value();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common;\r\n+\r\n+import java.lang.annotation.ElementType;\r\n+import java.lang.annotation.Retention;\r\n+import java.lang.annotation.RetentionPolicy;\r\n+import java.lang.annotation.Target;\r\n+\r\n+/**\r\n+ * Indicating unstable API, may get removed or changed in the next release.\r\n+ */\r\n+@Retention(RetentionPolicy.CLASS)\r\n+@Target({\r\n+        ElementType.ANNOTATION_TYPE,\r\n+        ElementType.CONSTRUCTOR,\r\n+        ElementType.FIELD,\r\n+        ElementType.METHOD,\r\n+        ElementType.PACKAGE,\r\n+        ElementType.TYPE})\r\n+public @interface Experimental {\r\n+    String value();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/URLStrParser.java", "source2": "org/apache/dubbo/common/URLStrParser.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,367 +1,367 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common;\n-\n-import java.util.Collections;\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_KEY_PREFIX;\n-import static org.apache.dubbo.common.utils.StringUtils.EMPTY_STRING;\n-import static org.apache.dubbo.common.utils.StringUtils.decodeHexByte;\n-import static org.apache.dubbo.common.utils.Utf8Utils.decodeUtf8;\n-\n-public final class URLStrParser {\n-\n-    private static final char SPACE = 0x20;\n-\n-    private static final ThreadLocal<TempBuf> DECODE_TEMP_BUF = ThreadLocal.withInitial(() -> new TempBuf(1024));\n-\n-    private URLStrParser() {\n-        //empty\n-    }\n-\n-    /**\n-     * @param decodedURLStr : after {@link URL#decode} string\n-     *                      decodedURLStr format: protocol://username:password@host:port/path?k1=v1&k2=v2\n-     *                      [protocol://][username:password@][host:port]/[path][?k1=v1&k2=v2]\n-     */\n-    public static URL parseDecodedStr(String decodedURLStr) {\n-        Map<String, String> parameters = null;\n-        int pathEndIdx = decodedURLStr.indexOf('?');\n-        if (pathEndIdx >= 0) {\n-            parameters = parseDecodedParams(decodedURLStr, pathEndIdx + 1);\n-        } else {\n-            pathEndIdx = decodedURLStr.length();\n-        }\n-\n-        String decodedBody = decodedURLStr.substring(0, pathEndIdx);\n-        return parseURLBody(decodedURLStr, decodedBody, parameters);\n-    }\n-\n-    private static Map<String, String> parseDecodedParams(String str, int from) {\n-        int len = str.length();\n-        if (from >= len) {\n-            return Collections.emptyMap();\n-        }\n-\n-        TempBuf tempBuf = DECODE_TEMP_BUF.get();\n-        Map<String, String> params = new HashMap<>();\n-        int nameStart = from;\n-        int valueStart = -1;\n-        int i;\n-        for (i = from; i < len; i++) {\n-            char ch = str.charAt(i);\n-            switch (ch) {\n-                case '=':\n-                    if (nameStart == i) {\n-                        nameStart = i + 1;\n-                    } else if (valueStart < nameStart) {\n-                        valueStart = i + 1;\n-                    }\n-                    break;\n-                case ';':\n-                case '&':\n-                    addParam(str, false, nameStart, valueStart, i, params, tempBuf);\n-                    nameStart = i + 1;\n-                    break;\n-                default:\n-                    // continue\n-            }\n-        }\n-        addParam(str, false, nameStart, valueStart, i, params, tempBuf);\n-        return params;\n-    }\n-\n-    /**\n-     * @param fullURLStr  : fullURLString\n-     * @param decodedBody : format: [protocol://][username:password@][host:port]/[path]\n-     * @param parameters  :\n-     * @return URL\n-     */\n-    private static URL parseURLBody(String fullURLStr, String decodedBody, Map<String, String> parameters) {\n-        int starIdx = 0, endIdx = decodedBody.length();\n-        String protocol = null;\n-        int protoEndIdx = decodedBody.indexOf(\"://\");\n-        if (protoEndIdx >= 0) {\n-            if (protoEndIdx == 0) {\n-                throw new IllegalStateException(\"url missing protocol: \\\"\" + fullURLStr + \"\\\"\");\n-            }\n-            protocol = decodedBody.substring(0, protoEndIdx);\n-            starIdx = protoEndIdx + 3;\n-        } else {\n-            // case: file:/path/to/file.txt\n-            protoEndIdx = decodedBody.indexOf(\":/\");\n-            if (protoEndIdx >= 0) {\n-                if (protoEndIdx == 0) {\n-                    throw new IllegalStateException(\"url missing protocol: \\\"\" + fullURLStr + \"\\\"\");\n-                }\n-                protocol = decodedBody.substring(0, protoEndIdx);\n-                starIdx = protoEndIdx + 1;\n-            }\n-        }\n-\n-        String path = null;\n-        int pathStartIdx = indexOf(decodedBody, '/', starIdx, endIdx);\n-        if (pathStartIdx >= 0) {\n-            path = decodedBody.substring(pathStartIdx + 1);\n-            endIdx = pathStartIdx;\n-        }\n-\n-        String username = null;\n-        String password = null;\n-        int pwdEndIdx = lastIndexOf(decodedBody, '@', starIdx, endIdx);\n-        if (pwdEndIdx > 0) {\n-            int userNameEndIdx = indexOf(decodedBody, ':', starIdx, pwdEndIdx);\n-            username = decodedBody.substring(starIdx, userNameEndIdx);\n-            password = decodedBody.substring(userNameEndIdx + 1, pwdEndIdx);\n-            starIdx = pwdEndIdx + 1;\n-        }\n-\n-        String host = null;\n-        int port = 0;\n-        int hostEndIdx = lastIndexOf(decodedBody, ':', starIdx, endIdx);\n-        if (hostEndIdx > 0 && hostEndIdx < decodedBody.length() - 1) {\n-            if (lastIndexOf(decodedBody, '%', starIdx, endIdx) > hostEndIdx) {\n-                // ipv6 address with scope id\n-                // e.g. fe80:0:0:0:894:aeec:f37d:23e1%en0\n-                // see https://howdoesinternetwork.com/2013/ipv6-zone-id\n-                // ignore\n-            } else {\n-                port = Integer.parseInt(decodedBody.substring(hostEndIdx + 1, endIdx));\n-                endIdx = hostEndIdx;\n-            }\n-        }\n-\n-        if (endIdx > starIdx) {\n-            host = decodedBody.substring(starIdx, endIdx);\n-        }\n-        return new URL(protocol, username, password, host, port, path, parameters);\n-    }\n-\n-    /**\n-     * @param encodedURLStr : after {@link URL#encode(String)} string\n-     *                      encodedURLStr after decode format: protocol://username:password@host:port/path?k1=v1&k2=v2\n-     *                      [protocol://][username:password@][host:port]/[path][?k1=v1&k2=v2]\n-     */\n-    public static URL parseEncodedStr(String encodedURLStr) {\n-        Map<String, String> parameters = null;\n-        int pathEndIdx = encodedURLStr.toUpperCase().indexOf(\"%3F\");// '?'\n-        if (pathEndIdx >= 0) {\n-            parameters = parseEncodedParams(encodedURLStr, pathEndIdx + 3);\n-        } else {\n-            pathEndIdx = encodedURLStr.length();\n-        }\n-\n-        //decodedBody format: [protocol://][username:password@][host:port]/[path]\n-        String decodedBody = decodeComponent(encodedURLStr, 0, pathEndIdx, false, DECODE_TEMP_BUF.get());\n-        return parseURLBody(encodedURLStr, decodedBody, parameters);\n-    }\n-\n-    private static Map<String, String> parseEncodedParams(String str, int from) {\n-        int len = str.length();\n-        if (from >= len) {\n-            return Collections.emptyMap();\n-        }\n-\n-        TempBuf tempBuf = DECODE_TEMP_BUF.get();\n-        Map<String, String> params = new HashMap<>();\n-        int nameStart = from;\n-        int valueStart = -1;\n-        int i;\n-        for (i = from; i < len; i++) {\n-            char ch = str.charAt(i);\n-            if (ch == '%') {\n-                if (i + 3 > len) {\n-                    throw new IllegalArgumentException(\"unterminated escape sequence at index \" + i + \" of: \" + str);\n-                }\n-                ch = (char) decodeHexByte(str, i + 1);\n-                i += 2;\n-            }\n-\n-            switch (ch) {\n-                case '=':\n-                    if (nameStart == i) {\n-                        nameStart = i + 1;\n-                    } else if (valueStart < nameStart) {\n-                        valueStart = i + 1;\n-                    }\n-                    break;\n-                case ';':\n-                case '&':\n-                    addParam(str, true, nameStart, valueStart, i - 2, params, tempBuf);\n-                    nameStart = i + 1;\n-                    break;\n-                default:\n-                    // continue\n-            }\n-        }\n-        addParam(str, true, nameStart, valueStart, i, params, tempBuf);\n-        return params;\n-    }\n-\n-    private static boolean addParam(String str, boolean isEncoded, int nameStart, int valueStart, int valueEnd, Map<String, String> params,\n-                                    TempBuf tempBuf) {\n-        if (nameStart >= valueEnd) {\n-            return false;\n-        }\n-\n-        if (valueStart <= nameStart) {\n-            valueStart = valueEnd + 1;\n-        }\n-\n-        if (isEncoded) {\n-            String name = decodeComponent(str, nameStart, valueStart - 3, false, tempBuf);\n-            String value = decodeComponent(str, valueStart, valueEnd, false, tempBuf);\n-            if (valueStart == valueEnd) {\n-                value = name;\n-            } else {\n-                value = decodeComponent(str, valueStart, valueEnd, false, tempBuf);\n-            }\n-            params.put(name, value);\n-            // compatible with lower versions registering \"default.\" keys\n-            if (name.startsWith(DEFAULT_KEY_PREFIX)) {\n-                params.putIfAbsent(name.substring(DEFAULT_KEY_PREFIX.length()), value);\n-            }\n-        } else {\n-            String name = str.substring(nameStart, valueStart - 1);\n-            String value = str.substring(valueStart, valueEnd);\n-            if (valueStart == valueEnd) {\n-                value = name;\n-            } else {\n-                value = str.substring(valueStart, valueEnd);\n-            }\n-            params.put(name, value);\n-            // compatible with lower versions registering \"default.\" keys\n-            if (name.startsWith(DEFAULT_KEY_PREFIX)) {\n-                params.putIfAbsent(name.substring(DEFAULT_KEY_PREFIX.length()), value);\n-            }\n-        }\n-        return true;\n-    }\n-\n-    private static String decodeComponent(String s, int from, int toExcluded, boolean isPath, TempBuf tempBuf) {\n-        int len = toExcluded - from;\n-        if (len <= 0) {\n-            return EMPTY_STRING;\n-        }\n-\n-        int firstEscaped = -1;\n-        for (int i = from; i < toExcluded; i++) {\n-            char c = s.charAt(i);\n-            if (c == '%' || c == '+' && !isPath) {\n-                firstEscaped = i;\n-                break;\n-            }\n-        }\n-        if (firstEscaped == -1) {\n-            return s.substring(from, toExcluded);\n-        }\n-\n-        // Each encoded byte takes 3 characters (e.g. \"%20\")\n-        int decodedCapacity = (toExcluded - firstEscaped) / 3;\n-        byte[] buf = tempBuf.byteBuf(decodedCapacity);\n-        char[] charBuf = tempBuf.charBuf(len);\n-        s.getChars(from, firstEscaped, charBuf, 0);\n-\n-        int charBufIdx = firstEscaped - from;\n-        return decodeUtf8Component(s, firstEscaped, toExcluded, isPath, buf, charBuf, charBufIdx);\n-    }\n-\n-    private static String decodeUtf8Component(String str, int firstEscaped, int toExcluded, boolean isPath, byte[] buf,\n-                                              char[] charBuf, int charBufIdx) {\n-        int bufIdx;\n-        for (int i = firstEscaped; i < toExcluded; i++) {\n-            char c = str.charAt(i);\n-            if (c != '%') {\n-                charBuf[charBufIdx++] = c != '+' || isPath ? c : SPACE;\n-                continue;\n-            }\n-\n-            bufIdx = 0;\n-            do {\n-                if (i + 3 > toExcluded) {\n-                    throw new IllegalArgumentException(\"unterminated escape sequence at index \" + i + \" of: \" + str);\n-                }\n-                buf[bufIdx++] = decodeHexByte(str, i + 1);\n-                i += 3;\n-            } while (i < toExcluded && str.charAt(i) == '%');\n-            i--;\n-\n-            charBufIdx += decodeUtf8(buf, 0, bufIdx, charBuf, charBufIdx);\n-        }\n-        return new String(charBuf, 0, charBufIdx);\n-    }\n-\n-    private static int indexOf(String str, char ch, int from, int toExclude) {\n-        from = Math.max(from, 0);\n-        toExclude = Math.min(toExclude, str.length());\n-        if (from > toExclude) {\n-            return -1;\n-        }\n-\n-        for (int i = from; i < toExclude; i++) {\n-            if (str.charAt(i) == ch) {\n-                return i;\n-            }\n-        }\n-        return -1;\n-    }\n-\n-    private static int lastIndexOf(String str, char ch, int from, int toExclude) {\n-        from = Math.max(from, 0);\n-        toExclude = Math.min(toExclude, str.length() - 1);\n-        if (from > toExclude) {\n-            return -1;\n-        }\n-\n-        for (int i = toExclude; i >= from; i--) {\n-            if (str.charAt(i) == ch) {\n-                return i;\n-            }\n-        }\n-        return -1;\n-    }\n-\n-    private static final class TempBuf {\n-\n-        private final char[] chars;\n-\n-        private final byte[] bytes;\n-\n-        TempBuf(int bufSize) {\n-            this.chars = new char[bufSize];\n-            this.bytes = new byte[bufSize];\n-        }\n-\n-        public char[] charBuf(int size) {\n-            char[] chars = this.chars;\n-            if (size <= chars.length) {\n-                return chars;\n-            }\n-            return new char[size];\n-        }\n-\n-        public byte[] byteBuf(int size) {\n-            byte[] bytes = this.bytes;\n-            if (size <= bytes.length) {\n-                return bytes;\n-            }\n-            return new byte[size];\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_KEY_PREFIX;\r\n+import static org.apache.dubbo.common.utils.StringUtils.EMPTY_STRING;\r\n+import static org.apache.dubbo.common.utils.StringUtils.decodeHexByte;\r\n+import static org.apache.dubbo.common.utils.Utf8Utils.decodeUtf8;\r\n+\r\n+public final class URLStrParser {\r\n+\r\n+    private static final char SPACE = 0x20;\r\n+\r\n+    private static final ThreadLocal<TempBuf> DECODE_TEMP_BUF = ThreadLocal.withInitial(() -> new TempBuf(1024));\r\n+\r\n+    private URLStrParser() {\r\n+        //empty\r\n+    }\r\n+\r\n+    /**\r\n+     * @param decodedURLStr : after {@link URL#decode} string\r\n+     *                      decodedURLStr format: protocol://username:password@host:port/path?k1=v1&k2=v2\r\n+     *                      [protocol://][username:password@][host:port]/[path][?k1=v1&k2=v2]\r\n+     */\r\n+    public static URL parseDecodedStr(String decodedURLStr) {\r\n+        Map<String, String> parameters = null;\r\n+        int pathEndIdx = decodedURLStr.indexOf('?');\r\n+        if (pathEndIdx >= 0) {\r\n+            parameters = parseDecodedParams(decodedURLStr, pathEndIdx + 1);\r\n+        } else {\r\n+            pathEndIdx = decodedURLStr.length();\r\n+        }\r\n+\r\n+        String decodedBody = decodedURLStr.substring(0, pathEndIdx);\r\n+        return parseURLBody(decodedURLStr, decodedBody, parameters);\r\n+    }\r\n+\r\n+    private static Map<String, String> parseDecodedParams(String str, int from) {\r\n+        int len = str.length();\r\n+        if (from >= len) {\r\n+            return Collections.emptyMap();\r\n+        }\r\n+\r\n+        TempBuf tempBuf = DECODE_TEMP_BUF.get();\r\n+        Map<String, String> params = new HashMap<>();\r\n+        int nameStart = from;\r\n+        int valueStart = -1;\r\n+        int i;\r\n+        for (i = from; i < len; i++) {\r\n+            char ch = str.charAt(i);\r\n+            switch (ch) {\r\n+                case '=':\r\n+                    if (nameStart == i) {\r\n+                        nameStart = i + 1;\r\n+                    } else if (valueStart < nameStart) {\r\n+                        valueStart = i + 1;\r\n+                    }\r\n+                    break;\r\n+                case ';':\r\n+                case '&':\r\n+                    addParam(str, false, nameStart, valueStart, i, params, tempBuf);\r\n+                    nameStart = i + 1;\r\n+                    break;\r\n+                default:\r\n+                    // continue\r\n+            }\r\n+        }\r\n+        addParam(str, false, nameStart, valueStart, i, params, tempBuf);\r\n+        return params;\r\n+    }\r\n+\r\n+    /**\r\n+     * @param fullURLStr  : fullURLString\r\n+     * @param decodedBody : format: [protocol://][username:password@][host:port]/[path]\r\n+     * @param parameters  :\r\n+     * @return URL\r\n+     */\r\n+    private static URL parseURLBody(String fullURLStr, String decodedBody, Map<String, String> parameters) {\r\n+        int starIdx = 0, endIdx = decodedBody.length();\r\n+        String protocol = null;\r\n+        int protoEndIdx = decodedBody.indexOf(\"://\");\r\n+        if (protoEndIdx >= 0) {\r\n+            if (protoEndIdx == 0) {\r\n+                throw new IllegalStateException(\"url missing protocol: \\\"\" + fullURLStr + \"\\\"\");\r\n+            }\r\n+            protocol = decodedBody.substring(0, protoEndIdx);\r\n+            starIdx = protoEndIdx + 3;\r\n+        } else {\r\n+            // case: file:/path/to/file.txt\r\n+            protoEndIdx = decodedBody.indexOf(\":/\");\r\n+            if (protoEndIdx >= 0) {\r\n+                if (protoEndIdx == 0) {\r\n+                    throw new IllegalStateException(\"url missing protocol: \\\"\" + fullURLStr + \"\\\"\");\r\n+                }\r\n+                protocol = decodedBody.substring(0, protoEndIdx);\r\n+                starIdx = protoEndIdx + 1;\r\n+            }\r\n+        }\r\n+\r\n+        String path = null;\r\n+        int pathStartIdx = indexOf(decodedBody, '/', starIdx, endIdx);\r\n+        if (pathStartIdx >= 0) {\r\n+            path = decodedBody.substring(pathStartIdx + 1);\r\n+            endIdx = pathStartIdx;\r\n+        }\r\n+\r\n+        String username = null;\r\n+        String password = null;\r\n+        int pwdEndIdx = lastIndexOf(decodedBody, '@', starIdx, endIdx);\r\n+        if (pwdEndIdx > 0) {\r\n+            int userNameEndIdx = indexOf(decodedBody, ':', starIdx, pwdEndIdx);\r\n+            username = decodedBody.substring(starIdx, userNameEndIdx);\r\n+            password = decodedBody.substring(userNameEndIdx + 1, pwdEndIdx);\r\n+            starIdx = pwdEndIdx + 1;\r\n+        }\r\n+\r\n+        String host = null;\r\n+        int port = 0;\r\n+        int hostEndIdx = lastIndexOf(decodedBody, ':', starIdx, endIdx);\r\n+        if (hostEndIdx > 0 && hostEndIdx < decodedBody.length() - 1) {\r\n+            if (lastIndexOf(decodedBody, '%', starIdx, endIdx) > hostEndIdx) {\r\n+                // ipv6 address with scope id\r\n+                // e.g. fe80:0:0:0:894:aeec:f37d:23e1%en0\r\n+                // see https://howdoesinternetwork.com/2013/ipv6-zone-id\r\n+                // ignore\r\n+            } else {\r\n+                port = Integer.parseInt(decodedBody.substring(hostEndIdx + 1, endIdx));\r\n+                endIdx = hostEndIdx;\r\n+            }\r\n+        }\r\n+\r\n+        if (endIdx > starIdx) {\r\n+            host = decodedBody.substring(starIdx, endIdx);\r\n+        }\r\n+        return new URL(protocol, username, password, host, port, path, parameters);\r\n+    }\r\n+\r\n+    /**\r\n+     * @param encodedURLStr : after {@link URL#encode(String)} string\r\n+     *                      encodedURLStr after decode format: protocol://username:password@host:port/path?k1=v1&k2=v2\r\n+     *                      [protocol://][username:password@][host:port]/[path][?k1=v1&k2=v2]\r\n+     */\r\n+    public static URL parseEncodedStr(String encodedURLStr) {\r\n+        Map<String, String> parameters = null;\r\n+        int pathEndIdx = encodedURLStr.toUpperCase().indexOf(\"%3F\");// '?'\r\n+        if (pathEndIdx >= 0) {\r\n+            parameters = parseEncodedParams(encodedURLStr, pathEndIdx + 3);\r\n+        } else {\r\n+            pathEndIdx = encodedURLStr.length();\r\n+        }\r\n+\r\n+        //decodedBody format: [protocol://][username:password@][host:port]/[path]\r\n+        String decodedBody = decodeComponent(encodedURLStr, 0, pathEndIdx, false, DECODE_TEMP_BUF.get());\r\n+        return parseURLBody(encodedURLStr, decodedBody, parameters);\r\n+    }\r\n+\r\n+    private static Map<String, String> parseEncodedParams(String str, int from) {\r\n+        int len = str.length();\r\n+        if (from >= len) {\r\n+            return Collections.emptyMap();\r\n+        }\r\n+\r\n+        TempBuf tempBuf = DECODE_TEMP_BUF.get();\r\n+        Map<String, String> params = new HashMap<>();\r\n+        int nameStart = from;\r\n+        int valueStart = -1;\r\n+        int i;\r\n+        for (i = from; i < len; i++) {\r\n+            char ch = str.charAt(i);\r\n+            if (ch == '%') {\r\n+                if (i + 3 > len) {\r\n+                    throw new IllegalArgumentException(\"unterminated escape sequence at index \" + i + \" of: \" + str);\r\n+                }\r\n+                ch = (char) decodeHexByte(str, i + 1);\r\n+                i += 2;\r\n+            }\r\n+\r\n+            switch (ch) {\r\n+                case '=':\r\n+                    if (nameStart == i) {\r\n+                        nameStart = i + 1;\r\n+                    } else if (valueStart < nameStart) {\r\n+                        valueStart = i + 1;\r\n+                    }\r\n+                    break;\r\n+                case ';':\r\n+                case '&':\r\n+                    addParam(str, true, nameStart, valueStart, i - 2, params, tempBuf);\r\n+                    nameStart = i + 1;\r\n+                    break;\r\n+                default:\r\n+                    // continue\r\n+            }\r\n+        }\r\n+        addParam(str, true, nameStart, valueStart, i, params, tempBuf);\r\n+        return params;\r\n+    }\r\n+\r\n+    private static boolean addParam(String str, boolean isEncoded, int nameStart, int valueStart, int valueEnd, Map<String, String> params,\r\n+                                    TempBuf tempBuf) {\r\n+        if (nameStart >= valueEnd) {\r\n+            return false;\r\n+        }\r\n+\r\n+        if (valueStart <= nameStart) {\r\n+            valueStart = valueEnd + 1;\r\n+        }\r\n+\r\n+        if (isEncoded) {\r\n+            String name = decodeComponent(str, nameStart, valueStart - 3, false, tempBuf);\r\n+            String value = decodeComponent(str, valueStart, valueEnd, false, tempBuf);\r\n+            if (valueStart == valueEnd) {\r\n+                value = name;\r\n+            } else {\r\n+                value = decodeComponent(str, valueStart, valueEnd, false, tempBuf);\r\n+            }\r\n+            params.put(name, value);\r\n+            // compatible with lower versions registering \"default.\" keys\r\n+            if (name.startsWith(DEFAULT_KEY_PREFIX)) {\r\n+                params.putIfAbsent(name.substring(DEFAULT_KEY_PREFIX.length()), value);\r\n+            }\r\n+        } else {\r\n+            String name = str.substring(nameStart, valueStart - 1);\r\n+            String value = str.substring(valueStart, valueEnd);\r\n+            if (valueStart == valueEnd) {\r\n+                value = name;\r\n+            } else {\r\n+                value = str.substring(valueStart, valueEnd);\r\n+            }\r\n+            params.put(name, value);\r\n+            // compatible with lower versions registering \"default.\" keys\r\n+            if (name.startsWith(DEFAULT_KEY_PREFIX)) {\r\n+                params.putIfAbsent(name.substring(DEFAULT_KEY_PREFIX.length()), value);\r\n+            }\r\n+        }\r\n+        return true;\r\n+    }\r\n+\r\n+    private static String decodeComponent(String s, int from, int toExcluded, boolean isPath, TempBuf tempBuf) {\r\n+        int len = toExcluded - from;\r\n+        if (len <= 0) {\r\n+            return EMPTY_STRING;\r\n+        }\r\n+\r\n+        int firstEscaped = -1;\r\n+        for (int i = from; i < toExcluded; i++) {\r\n+            char c = s.charAt(i);\r\n+            if (c == '%' || c == '+' && !isPath) {\r\n+                firstEscaped = i;\r\n+                break;\r\n+            }\r\n+        }\r\n+        if (firstEscaped == -1) {\r\n+            return s.substring(from, toExcluded);\r\n+        }\r\n+\r\n+        // Each encoded byte takes 3 characters (e.g. \"%20\")\r\n+        int decodedCapacity = (toExcluded - firstEscaped) / 3;\r\n+        byte[] buf = tempBuf.byteBuf(decodedCapacity);\r\n+        char[] charBuf = tempBuf.charBuf(len);\r\n+        s.getChars(from, firstEscaped, charBuf, 0);\r\n+\r\n+        int charBufIdx = firstEscaped - from;\r\n+        return decodeUtf8Component(s, firstEscaped, toExcluded, isPath, buf, charBuf, charBufIdx);\r\n+    }\r\n+\r\n+    private static String decodeUtf8Component(String str, int firstEscaped, int toExcluded, boolean isPath, byte[] buf,\r\n+                                              char[] charBuf, int charBufIdx) {\r\n+        int bufIdx;\r\n+        for (int i = firstEscaped; i < toExcluded; i++) {\r\n+            char c = str.charAt(i);\r\n+            if (c != '%') {\r\n+                charBuf[charBufIdx++] = c != '+' || isPath ? c : SPACE;\r\n+                continue;\r\n+            }\r\n+\r\n+            bufIdx = 0;\r\n+            do {\r\n+                if (i + 3 > toExcluded) {\r\n+                    throw new IllegalArgumentException(\"unterminated escape sequence at index \" + i + \" of: \" + str);\r\n+                }\r\n+                buf[bufIdx++] = decodeHexByte(str, i + 1);\r\n+                i += 3;\r\n+            } while (i < toExcluded && str.charAt(i) == '%');\r\n+            i--;\r\n+\r\n+            charBufIdx += decodeUtf8(buf, 0, bufIdx, charBuf, charBufIdx);\r\n+        }\r\n+        return new String(charBuf, 0, charBufIdx);\r\n+    }\r\n+\r\n+    private static int indexOf(String str, char ch, int from, int toExclude) {\r\n+        from = Math.max(from, 0);\r\n+        toExclude = Math.min(toExclude, str.length());\r\n+        if (from > toExclude) {\r\n+            return -1;\r\n+        }\r\n+\r\n+        for (int i = from; i < toExclude; i++) {\r\n+            if (str.charAt(i) == ch) {\r\n+                return i;\r\n+            }\r\n+        }\r\n+        return -1;\r\n+    }\r\n+\r\n+    private static int lastIndexOf(String str, char ch, int from, int toExclude) {\r\n+        from = Math.max(from, 0);\r\n+        toExclude = Math.min(toExclude, str.length() - 1);\r\n+        if (from > toExclude) {\r\n+            return -1;\r\n+        }\r\n+\r\n+        for (int i = toExclude; i >= from; i--) {\r\n+            if (str.charAt(i) == ch) {\r\n+                return i;\r\n+            }\r\n+        }\r\n+        return -1;\r\n+    }\r\n+\r\n+    private static final class TempBuf {\r\n+\r\n+        private final char[] chars;\r\n+\r\n+        private final byte[] bytes;\r\n+\r\n+        TempBuf(int bufSize) {\r\n+            this.chars = new char[bufSize];\r\n+            this.bytes = new byte[bufSize];\r\n+        }\r\n+\r\n+        public char[] charBuf(int size) {\r\n+            char[] chars = this.chars;\r\n+            if (size <= chars.length) {\r\n+                return chars;\r\n+            }\r\n+            return new char[size];\r\n+        }\r\n+\r\n+        public byte[] byteBuf(int size) {\r\n+            byte[] bytes = this.bytes;\r\n+            if (size <= bytes.length) {\r\n+                return bytes;\r\n+            }\r\n+            return new byte[size];\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/Version.java", "source2": "org/apache/dubbo/common/Version.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,278 +1,278 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ClassUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import java.io.IOException;\n-import java.net.URL;\n-import java.security.CodeSource;\n-import java.util.Enumeration;\n-import java.util.HashMap;\n-import java.util.HashSet;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.regex.Matcher;\n-import java.util.regex.Pattern;\n-\n-/**\n- * Version\n- */\n-public final class Version {\n-    private static final Logger logger = LoggerFactory.getLogger(Version.class);\n-\n-    private static final Pattern PREFIX_DIGITS_PATTERN = Pattern.compile(\"^([0-9]*).*\");\n-\n-    // Dubbo RPC protocol version, for compatibility, it must not be between 2.0.10 ~ 2.6.2\n-    public static final String DEFAULT_DUBBO_PROTOCOL_VERSION = \"2.0.2\";\n-    // version 1.0.0 represents Dubbo rpc protocol before v2.6.2\n-    public static final int LEGACY_DUBBO_PROTOCOL_VERSION = 10000; // 1.0.0\n-    // Dubbo implementation version, usually is jar version.\n-    private static final String VERSION = getVersion(Version.class, \"\");\n-\n-    /**\n-     * For protocol compatibility purpose.\n-     * Because {@link #isSupportResponseAttachment} is checked for every call, int compare expect to has higher\n-     * performance than string.\n-     */\n-    public static final int LOWEST_VERSION_FOR_RESPONSE_ATTACHMENT = 2000200; // 2.0.2\n-    public static final int HIGHEST_PROTOCOL_VERSION = 2009900; // 2.0.99\n-    private static final Map<String, Integer> VERSION2INT = new HashMap<String, Integer>();\n-\n-    static {\n-        // check if there's duplicated jar\n-        Version.checkDuplicate(Version.class);\n-    }\n-\n-    private Version() {\n-    }\n-\n-    public static String getProtocolVersion() {\n-        return DEFAULT_DUBBO_PROTOCOL_VERSION;\n-    }\n-\n-    public static String getVersion() {\n-        return VERSION;\n-    }\n-\n-    /**\n-     * Check the framework release version number to decide if it's 2.7.0 or higher\n-     */\n-    public static boolean isRelease270OrHigher(String version) {\n-        if (StringUtils.isEmpty(version)) {\n-            return false;\n-        }\n-        if (getIntVersion(version) >= 2070000) {\n-            return true;\n-        }\n-        return false;\n-    }\n-\n-    /**\n-     * Check the framework release version number to decide if it's 2.6.3 or higher\n-     *\n-     * @param version, the sdk version\n-     */\n-    public static boolean isRelease263OrHigher(String version) {\n-        return getIntVersion(version) >= 2060300;\n-    }\n-\n-    /**\n-     * Dubbo 2.x protocol version numbers are limited to 2.0.2/2000200 ~ 2.0.99/2009900, other versions are consider as\n-     * invalid or not from official release.\n-     *\n-     * @param version, the protocol version.\n-     * @return\n-     */\n-    public static boolean isSupportResponseAttachment(String version) {\n-        if (StringUtils.isEmpty(version)) {\n-            return false;\n-        }\n-        int iVersion = getIntVersion(version);\n-        if (iVersion >= LOWEST_VERSION_FOR_RESPONSE_ATTACHMENT && iVersion <= HIGHEST_PROTOCOL_VERSION) {\n-            return true;\n-        }\n-\n-        return false;\n-    }\n-\n-    public static int getIntVersion(String version) {\n-        Integer v = VERSION2INT.get(version);\n-        if (v == null) {\n-            try {\n-                v = parseInt(version);\n-                // e.g., version number 2.6.3 will convert to 2060300\n-                if (version.split(\"\\\\.\").length == 3) {\n-                    v = v * 100;\n-                }\n-            } catch (Exception e) {\n-                logger.warn(\"Please make sure your version value has the right format: \" +\n-                        \"\\n 1. only contains digital number: 2.0.0; \\n 2. with string suffix: 2.6.7-stable. \" +\n-                        \"\\nIf you are using Dubbo before v2.6.2, the version value is the same with the jar version.\");\n-                v = LEGACY_DUBBO_PROTOCOL_VERSION;\n-            }\n-            VERSION2INT.put(version, v);\n-        }\n-        return v;\n-    }\n-\n-    private static int parseInt(String version) {\n-        int v = 0;\n-        String[] vArr = version.split(\"\\\\.\");\n-        int len = vArr.length;\n-        for (int i = 0; i < len; i++) {\n-            String subV = getPrefixDigits(vArr[i]);\n-            if (StringUtils.isNotEmpty(subV)) {\n-                v += Integer.parseInt(subV) * Math.pow(10, (len - i - 1) * 2);\n-            }\n-        }\n-        return v;\n-    }\n-\n-    /**\n-     * get prefix digits from given version string\n-     */\n-    private static String getPrefixDigits(String v) {\n-        Matcher matcher = PREFIX_DIGITS_PATTERN.matcher(v);\n-        if (matcher.find()) {\n-            return matcher.group(1);\n-        }\n-        return \"\";\n-    }\n-\n-    public static String getVersion(Class<?> cls, String defaultVersion) {\n-        try {\n-            // find version info from MANIFEST.MF first\n-            Package pkg = cls.getPackage();\n-            String version = null;\n-            if (pkg != null) {\n-                version = pkg.getImplementationVersion();\n-                if (StringUtils.isNotEmpty(version)) {\n-                    return version;\n-                }\n-\n-                version = pkg.getSpecificationVersion();\n-                if (StringUtils.isNotEmpty(version)) {\n-                    return version;\n-                }\n-            }\n-\n-            // guess version from jar file name if nothing's found from MANIFEST.MF\n-            CodeSource codeSource = cls.getProtectionDomain().getCodeSource();\n-            if (codeSource == null) {\n-                logger.info(\"No codeSource for class \" + cls.getName() + \" when getVersion, use default version \" + defaultVersion);\n-                return defaultVersion;\n-            }\n-\n-            URL location = codeSource.getLocation();\n-            if (location == null){\n-                logger.info(\"No location for class \" + cls.getName() + \" when getVersion, use default version \" + defaultVersion);\n-                return defaultVersion;\n-            }\n-            String file =  location.getFile();\n-            if (!StringUtils.isEmpty(file) && file.endsWith(\".jar\")) {\n-                version = getFromFile(file);\n-            }\n-\n-            // return default version if no version info is found\n-            return StringUtils.isEmpty(version) ? defaultVersion : version;\n-        } catch (Throwable e) {\n-            // return default version when any exception is thrown\n-            logger.error(\"return default version, ignore exception \" + e.getMessage(), e);\n-            return defaultVersion;\n-        }\n-    }\n-\n-    /**\n-     * get version from file: path/to/group-module-x.y.z.jar, returns x.y.z\n-     */\n-    private static String getFromFile(String file) {\n-        // remove suffix \".jar\": \"path/to/group-module-x.y.z\"\n-        file = file.substring(0, file.length() - 4);\n-\n-        // remove path: \"group-module-x.y.z\"\n-        int i = file.lastIndexOf('/');\n-        if (i >= 0) {\n-            file = file.substring(i + 1);\n-        }\n-\n-        // remove group: \"module-x.y.z\"\n-        i = file.indexOf(\"-\");\n-        if (i >= 0) {\n-            file = file.substring(i + 1);\n-        }\n-\n-        // remove module: \"x.y.z\"\n-        while (file.length() > 0 && !Character.isDigit(file.charAt(0))) {\n-            i = file.indexOf(\"-\");\n-            if (i >= 0) {\n-                file = file.substring(i + 1);\n-            } else {\n-                break;\n-            }\n-        }\n-        return file;\n-    }\n-\n-    public static void checkDuplicate(Class<?> cls, boolean failOnError) {\n-        checkDuplicate(cls.getName().replace('.', '/') + \".class\", failOnError);\n-    }\n-\n-    public static void checkDuplicate(Class<?> cls) {\n-        checkDuplicate(cls, false);\n-    }\n-\n-    public static void checkDuplicate(String path, boolean failOnError) {\n-        try {\n-            // search in caller's classloader\n-            Set<String> files = getResources(path);\n-            // duplicated jar is found\n-            if (files.size() > 1) {\n-                String error = \"Duplicate class \" + path + \" in \" + files.size() + \" jar \" + files;\n-                if (failOnError) {\n-                    throw new IllegalStateException(error);\n-                } else {\n-                    logger.error(error);\n-                }\n-            }\n-        } catch (Throwable e) {\n-            logger.error(e.getMessage(), e);\n-        }\n-    }\n-\n-    /**\n-     * search resources in caller's classloader\n-     */\n-    private static Set<String> getResources(String path) throws IOException {\n-        Enumeration<URL> urls = ClassUtils.getCallerClassLoader(Version.class).getResources(path);\n-        Set<String> files = new HashSet<String>();\n-        while (urls.hasMoreElements()) {\n-            URL url = urls.nextElement();\n-            if (url != null) {\n-                String file = url.getFile();\n-                if (StringUtils.isNotEmpty(file)) {\n-                    files.add(file);\n-                }\n-            }\n-        }\n-        return files;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ClassUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import java.io.IOException;\r\n+import java.net.URL;\r\n+import java.security.CodeSource;\r\n+import java.util.Enumeration;\r\n+import java.util.HashMap;\r\n+import java.util.HashSet;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.regex.Matcher;\r\n+import java.util.regex.Pattern;\r\n+\r\n+/**\r\n+ * Version\r\n+ */\r\n+public final class Version {\r\n+    private static final Logger logger = LoggerFactory.getLogger(Version.class);\r\n+\r\n+    private static final Pattern PREFIX_DIGITS_PATTERN = Pattern.compile(\"^([0-9]*).*\");\r\n+\r\n+    // Dubbo RPC protocol version, for compatibility, it must not be between 2.0.10 ~ 2.6.2\r\n+    public static final String DEFAULT_DUBBO_PROTOCOL_VERSION = \"2.0.2\";\r\n+    // version 1.0.0 represents Dubbo rpc protocol before v2.6.2\r\n+    public static final int LEGACY_DUBBO_PROTOCOL_VERSION = 10000; // 1.0.0\r\n+    // Dubbo implementation version, usually is jar version.\r\n+    private static final String VERSION = getVersion(Version.class, \"\");\r\n+\r\n+    /**\r\n+     * For protocol compatibility purpose.\r\n+     * Because {@link #isSupportResponseAttachment} is checked for every call, int compare expect to has higher\r\n+     * performance than string.\r\n+     */\r\n+    public static final int LOWEST_VERSION_FOR_RESPONSE_ATTACHMENT = 2000200; // 2.0.2\r\n+    public static final int HIGHEST_PROTOCOL_VERSION = 2009900; // 2.0.99\r\n+    private static final Map<String, Integer> VERSION2INT = new HashMap<String, Integer>();\r\n+\r\n+    static {\r\n+        // check if there's duplicated jar\r\n+        Version.checkDuplicate(Version.class);\r\n+    }\r\n+\r\n+    private Version() {\r\n+    }\r\n+\r\n+    public static String getProtocolVersion() {\r\n+        return DEFAULT_DUBBO_PROTOCOL_VERSION;\r\n+    }\r\n+\r\n+    public static String getVersion() {\r\n+        return VERSION;\r\n+    }\r\n+\r\n+    /**\r\n+     * Check the framework release version number to decide if it's 2.7.0 or higher\r\n+     */\r\n+    public static boolean isRelease270OrHigher(String version) {\r\n+        if (StringUtils.isEmpty(version)) {\r\n+            return false;\r\n+        }\r\n+        if (getIntVersion(version) >= 2070000) {\r\n+            return true;\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    /**\r\n+     * Check the framework release version number to decide if it's 2.6.3 or higher\r\n+     *\r\n+     * @param version, the sdk version\r\n+     */\r\n+    public static boolean isRelease263OrHigher(String version) {\r\n+        return getIntVersion(version) >= 2060300;\r\n+    }\r\n+\r\n+    /**\r\n+     * Dubbo 2.x protocol version numbers are limited to 2.0.2/2000200 ~ 2.0.99/2009900, other versions are consider as\r\n+     * invalid or not from official release.\r\n+     *\r\n+     * @param version, the protocol version.\r\n+     * @return\r\n+     */\r\n+    public static boolean isSupportResponseAttachment(String version) {\r\n+        if (StringUtils.isEmpty(version)) {\r\n+            return false;\r\n+        }\r\n+        int iVersion = getIntVersion(version);\r\n+        if (iVersion >= LOWEST_VERSION_FOR_RESPONSE_ATTACHMENT && iVersion <= HIGHEST_PROTOCOL_VERSION) {\r\n+            return true;\r\n+        }\r\n+\r\n+        return false;\r\n+    }\r\n+\r\n+    public static int getIntVersion(String version) {\r\n+        Integer v = VERSION2INT.get(version);\r\n+        if (v == null) {\r\n+            try {\r\n+                v = parseInt(version);\r\n+                // e.g., version number 2.6.3 will convert to 2060300\r\n+                if (version.split(\"\\\\.\").length == 3) {\r\n+                    v = v * 100;\r\n+                }\r\n+            } catch (Exception e) {\r\n+                logger.warn(\"Please make sure your version value has the right format: \" +\r\n+                        \"\\n 1. only contains digital number: 2.0.0; \\n 2. with string suffix: 2.6.7-stable. \" +\r\n+                        \"\\nIf you are using Dubbo before v2.6.2, the version value is the same with the jar version.\");\r\n+                v = LEGACY_DUBBO_PROTOCOL_VERSION;\r\n+            }\r\n+            VERSION2INT.put(version, v);\r\n+        }\r\n+        return v;\r\n+    }\r\n+\r\n+    private static int parseInt(String version) {\r\n+        int v = 0;\r\n+        String[] vArr = version.split(\"\\\\.\");\r\n+        int len = vArr.length;\r\n+        for (int i = 0; i < len; i++) {\r\n+            String subV = getPrefixDigits(vArr[i]);\r\n+            if (StringUtils.isNotEmpty(subV)) {\r\n+                v += Integer.parseInt(subV) * Math.pow(10, (len - i - 1) * 2);\r\n+            }\r\n+        }\r\n+        return v;\r\n+    }\r\n+\r\n+    /**\r\n+     * get prefix digits from given version string\r\n+     */\r\n+    private static String getPrefixDigits(String v) {\r\n+        Matcher matcher = PREFIX_DIGITS_PATTERN.matcher(v);\r\n+        if (matcher.find()) {\r\n+            return matcher.group(1);\r\n+        }\r\n+        return \"\";\r\n+    }\r\n+\r\n+    public static String getVersion(Class<?> cls, String defaultVersion) {\r\n+        try {\r\n+            // find version info from MANIFEST.MF first\r\n+            Package pkg = cls.getPackage();\r\n+            String version = null;\r\n+            if (pkg != null) {\r\n+                version = pkg.getImplementationVersion();\r\n+                if (StringUtils.isNotEmpty(version)) {\r\n+                    return version;\r\n+                }\r\n+\r\n+                version = pkg.getSpecificationVersion();\r\n+                if (StringUtils.isNotEmpty(version)) {\r\n+                    return version;\r\n+                }\r\n+            }\r\n+\r\n+            // guess version from jar file name if nothing's found from MANIFEST.MF\r\n+            CodeSource codeSource = cls.getProtectionDomain().getCodeSource();\r\n+            if (codeSource == null) {\r\n+                logger.info(\"No codeSource for class \" + cls.getName() + \" when getVersion, use default version \" + defaultVersion);\r\n+                return defaultVersion;\r\n+            }\r\n+\r\n+            URL location = codeSource.getLocation();\r\n+            if (location == null){\r\n+                logger.info(\"No location for class \" + cls.getName() + \" when getVersion, use default version \" + defaultVersion);\r\n+                return defaultVersion;\r\n+            }\r\n+            String file =  location.getFile();\r\n+            if (!StringUtils.isEmpty(file) && file.endsWith(\".jar\")) {\r\n+                version = getFromFile(file);\r\n+            }\r\n+\r\n+            // return default version if no version info is found\r\n+            return StringUtils.isEmpty(version) ? defaultVersion : version;\r\n+        } catch (Throwable e) {\r\n+            // return default version when any exception is thrown\r\n+            logger.error(\"return default version, ignore exception \" + e.getMessage(), e);\r\n+            return defaultVersion;\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * get version from file: path/to/group-module-x.y.z.jar, returns x.y.z\r\n+     */\r\n+    private static String getFromFile(String file) {\r\n+        // remove suffix \".jar\": \"path/to/group-module-x.y.z\"\r\n+        file = file.substring(0, file.length() - 4);\r\n+\r\n+        // remove path: \"group-module-x.y.z\"\r\n+        int i = file.lastIndexOf('/');\r\n+        if (i >= 0) {\r\n+            file = file.substring(i + 1);\r\n+        }\r\n+\r\n+        // remove group: \"module-x.y.z\"\r\n+        i = file.indexOf(\"-\");\r\n+        if (i >= 0) {\r\n+            file = file.substring(i + 1);\r\n+        }\r\n+\r\n+        // remove module: \"x.y.z\"\r\n+        while (file.length() > 0 && !Character.isDigit(file.charAt(0))) {\r\n+            i = file.indexOf(\"-\");\r\n+            if (i >= 0) {\r\n+                file = file.substring(i + 1);\r\n+            } else {\r\n+                break;\r\n+            }\r\n+        }\r\n+        return file;\r\n+    }\r\n+\r\n+    public static void checkDuplicate(Class<?> cls, boolean failOnError) {\r\n+        checkDuplicate(cls.getName().replace('.', '/') + \".class\", failOnError);\r\n+    }\r\n+\r\n+    public static void checkDuplicate(Class<?> cls) {\r\n+        checkDuplicate(cls, false);\r\n+    }\r\n+\r\n+    public static void checkDuplicate(String path, boolean failOnError) {\r\n+        try {\r\n+            // search in caller's classloader\r\n+            Set<String> files = getResources(path);\r\n+            // duplicated jar is found\r\n+            if (files.size() > 1) {\r\n+                String error = \"Duplicate class \" + path + \" in \" + files.size() + \" jar \" + files;\r\n+                if (failOnError) {\r\n+                    throw new IllegalStateException(error);\r\n+                } else {\r\n+                    logger.error(error);\r\n+                }\r\n+            }\r\n+        } catch (Throwable e) {\r\n+            logger.error(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * search resources in caller's classloader\r\n+     */\r\n+    private static Set<String> getResources(String path) throws IOException {\r\n+        Enumeration<URL> urls = ClassUtils.getCallerClassLoader(Version.class).getResources(path);\r\n+        Set<String> files = new HashSet<String>();\r\n+        while (urls.hasMoreElements()) {\r\n+            URL url = urls.nextElement();\r\n+            if (url != null) {\r\n+                String file = url.getFile();\r\n+                if (StringUtils.isNotEmpty(file)) {\r\n+                    files.add(file);\r\n+                }\r\n+            }\r\n+        }\r\n+        return files;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/beanutil/JavaBeanDescriptor.java", "source2": "org/apache/dubbo/common/beanutil/JavaBeanDescriptor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,207 +1,207 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.beanutil;\n-\n-import java.io.Serializable;\n-import java.util.Iterator;\n-import java.util.LinkedHashMap;\n-import java.util.Map;\n-\n-public final class JavaBeanDescriptor implements Serializable, Iterable<Map.Entry<Object, Object>> {\n-\n-    private static final long serialVersionUID = -8505586483570518029L;\n-\n-    public static final int TYPE_CLASS = 1;\n-    public static final int TYPE_ENUM = 2;\n-    public static final int TYPE_COLLECTION = 3;\n-    public static final int TYPE_MAP = 4;\n-    public static final int TYPE_ARRAY = 5;\n-    /**\n-     * @see org.apache.dubbo.common.utils.ReflectUtils#isPrimitive(Class)\n-     */\n-    public static final int TYPE_PRIMITIVE = 6;\n-    public static final int TYPE_BEAN = 7;\n-\n-    private static final String ENUM_PROPERTY_NAME = \"name\";\n-    private static final String CLASS_PROPERTY_NAME = \"name\";\n-    private static final String PRIMITIVE_PROPERTY_VALUE = \"value\";\n-\n-    /**\n-     * Used to define a type is valid.\n-     *\n-     * @see #isValidType(int)\n-     */\n-    private static final int TYPE_MAX = TYPE_BEAN;\n-    /**\n-     * Used to define a type is valid.\n-     *\n-     * @see #isValidType(int)\n-     */\n-    private static final int TYPE_MIN = TYPE_CLASS;\n-\n-    private String className;\n-    private int type;\n-\n-    private Map<Object, Object> properties = new LinkedHashMap<>();\n-\n-    public JavaBeanDescriptor() {}\n-\n-    public JavaBeanDescriptor(String className, int type) {\n-        notEmpty(className, \"class name is empty\");\n-        if (!isValidType(type)) {\n-            throw new IllegalArgumentException(\"type [ \" + type + \" ] is unsupported\");\n-        }\n-\n-        this.className = className;\n-        this.type = type;\n-    }\n-\n-    public boolean isClassType() {\n-        return TYPE_CLASS == type;\n-    }\n-\n-    public boolean isEnumType() {\n-        return TYPE_ENUM == type;\n-    }\n-\n-    public boolean isCollectionType() {\n-        return TYPE_COLLECTION == type;\n-    }\n-\n-    public boolean isMapType() {\n-        return TYPE_MAP == type;\n-    }\n-\n-    public boolean isArrayType() {\n-        return TYPE_ARRAY == type;\n-    }\n-\n-    public boolean isPrimitiveType() {\n-        return TYPE_PRIMITIVE == type;\n-    }\n-\n-    public boolean isBeanType() {\n-        return TYPE_BEAN == type;\n-    }\n-\n-    public int getType() {\n-        return type;\n-    }\n-\n-    public void setType(int type) {\n-        this.type = type;\n-    }\n-\n-    public String getClassName() {\n-        return className;\n-    }\n-\n-    public void setClassName(String className) {\n-        this.className = className;\n-    }\n-\n-    public Object setProperty(Object propertyName, Object propertyValue) {\n-        notNull(propertyName, \"Property name is null\");\n-        return properties.put(propertyName, propertyValue);\n-    }\n-\n-    public String setEnumNameProperty(String name) {\n-        if (isEnumType()) {\n-            Object result = setProperty(ENUM_PROPERTY_NAME, name);\n-            return result == null ? null : result.toString();\n-        }\n-        throw new IllegalStateException(\"The instance is not a enum wrapper\");\n-    }\n-\n-    public String getEnumPropertyName() {\n-        if (isEnumType()) {\n-            Object result = getProperty(ENUM_PROPERTY_NAME);\n-            return result == null ? null : result.toString();\n-        }\n-        throw new IllegalStateException(\"The instance is not a enum wrapper\");\n-    }\n-\n-    public String setClassNameProperty(String name) {\n-        if (isClassType()) {\n-            Object result = setProperty(CLASS_PROPERTY_NAME, name);\n-            return result == null ? null : result.toString();\n-        }\n-        throw new IllegalStateException(\"The instance is not a class wrapper\");\n-    }\n-\n-    public String getClassNameProperty() {\n-        if (isClassType()) {\n-            Object result = getProperty(CLASS_PROPERTY_NAME);\n-            return result == null ? null : result.toString();\n-        }\n-        throw new IllegalStateException(\"The instance is not a class wrapper\");\n-    }\n-\n-    public Object setPrimitiveProperty(Object primitiveValue) {\n-        if (isPrimitiveType()) {\n-            return setProperty(PRIMITIVE_PROPERTY_VALUE, primitiveValue);\n-        }\n-        throw new IllegalStateException(\"The instance is not a primitive type wrapper\");\n-    }\n-\n-    public Object getPrimitiveProperty() {\n-        if (isPrimitiveType()) {\n-            return getProperty(PRIMITIVE_PROPERTY_VALUE);\n-        }\n-        throw new IllegalStateException(\"The instance is not a primitive type wrapper\");\n-    }\n-\n-    public Object getProperty(Object propertyName) {\n-        notNull(propertyName, \"Property name is null\");\n-        return properties.get(propertyName);\n-    }\n-\n-    public boolean containsProperty(Object propertyName) {\n-        notNull(propertyName, \"Property name is null\");\n-        return properties.containsKey(propertyName);\n-    }\n-\n-    @Override\n-    public Iterator<Map.Entry<Object, Object>> iterator() {\n-        return properties.entrySet().iterator();\n-    }\n-\n-    public int propertySize() {\n-        return properties.size();\n-    }\n-\n-    private boolean isValidType(int type) {\n-        return TYPE_MIN <= type && type <= TYPE_MAX;\n-    }\n-\n-    private void notNull(Object obj, String message) {\n-        if (obj == null) {\n-            throw new IllegalArgumentException(message);\n-        }\n-    }\n-\n-    private void notEmpty(String string, String message) {\n-        if (isEmpty(string)) {\n-            throw new IllegalArgumentException(message);\n-        }\n-    }\n-\n-    private boolean isEmpty(String string) {\n-        return string == null || \"\".equals(string.trim());\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.beanutil;\r\n+\r\n+import java.io.Serializable;\r\n+import java.util.Iterator;\r\n+import java.util.LinkedHashMap;\r\n+import java.util.Map;\r\n+\r\n+public final class JavaBeanDescriptor implements Serializable, Iterable<Map.Entry<Object, Object>> {\r\n+\r\n+    private static final long serialVersionUID = -8505586483570518029L;\r\n+\r\n+    public static final int TYPE_CLASS = 1;\r\n+    public static final int TYPE_ENUM = 2;\r\n+    public static final int TYPE_COLLECTION = 3;\r\n+    public static final int TYPE_MAP = 4;\r\n+    public static final int TYPE_ARRAY = 5;\r\n+    /**\r\n+     * @see org.apache.dubbo.common.utils.ReflectUtils#isPrimitive(Class)\r\n+     */\r\n+    public static final int TYPE_PRIMITIVE = 6;\r\n+    public static final int TYPE_BEAN = 7;\r\n+\r\n+    private static final String ENUM_PROPERTY_NAME = \"name\";\r\n+    private static final String CLASS_PROPERTY_NAME = \"name\";\r\n+    private static final String PRIMITIVE_PROPERTY_VALUE = \"value\";\r\n+\r\n+    /**\r\n+     * Used to define a type is valid.\r\n+     *\r\n+     * @see #isValidType(int)\r\n+     */\r\n+    private static final int TYPE_MAX = TYPE_BEAN;\r\n+    /**\r\n+     * Used to define a type is valid.\r\n+     *\r\n+     * @see #isValidType(int)\r\n+     */\r\n+    private static final int TYPE_MIN = TYPE_CLASS;\r\n+\r\n+    private String className;\r\n+    private int type;\r\n+\r\n+    private Map<Object, Object> properties = new LinkedHashMap<>();\r\n+\r\n+    public JavaBeanDescriptor() {}\r\n+\r\n+    public JavaBeanDescriptor(String className, int type) {\r\n+        notEmpty(className, \"class name is empty\");\r\n+        if (!isValidType(type)) {\r\n+            throw new IllegalArgumentException(\"type [ \" + type + \" ] is unsupported\");\r\n+        }\r\n+\r\n+        this.className = className;\r\n+        this.type = type;\r\n+    }\r\n+\r\n+    public boolean isClassType() {\r\n+        return TYPE_CLASS == type;\r\n+    }\r\n+\r\n+    public boolean isEnumType() {\r\n+        return TYPE_ENUM == type;\r\n+    }\r\n+\r\n+    public boolean isCollectionType() {\r\n+        return TYPE_COLLECTION == type;\r\n+    }\r\n+\r\n+    public boolean isMapType() {\r\n+        return TYPE_MAP == type;\r\n+    }\r\n+\r\n+    public boolean isArrayType() {\r\n+        return TYPE_ARRAY == type;\r\n+    }\r\n+\r\n+    public boolean isPrimitiveType() {\r\n+        return TYPE_PRIMITIVE == type;\r\n+    }\r\n+\r\n+    public boolean isBeanType() {\r\n+        return TYPE_BEAN == type;\r\n+    }\r\n+\r\n+    public int getType() {\r\n+        return type;\r\n+    }\r\n+\r\n+    public void setType(int type) {\r\n+        this.type = type;\r\n+    }\r\n+\r\n+    public String getClassName() {\r\n+        return className;\r\n+    }\r\n+\r\n+    public void setClassName(String className) {\r\n+        this.className = className;\r\n+    }\r\n+\r\n+    public Object setProperty(Object propertyName, Object propertyValue) {\r\n+        notNull(propertyName, \"Property name is null\");\r\n+        return properties.put(propertyName, propertyValue);\r\n+    }\r\n+\r\n+    public String setEnumNameProperty(String name) {\r\n+        if (isEnumType()) {\r\n+            Object result = setProperty(ENUM_PROPERTY_NAME, name);\r\n+            return result == null ? null : result.toString();\r\n+        }\r\n+        throw new IllegalStateException(\"The instance is not a enum wrapper\");\r\n+    }\r\n+\r\n+    public String getEnumPropertyName() {\r\n+        if (isEnumType()) {\r\n+            Object result = getProperty(ENUM_PROPERTY_NAME);\r\n+            return result == null ? null : result.toString();\r\n+        }\r\n+        throw new IllegalStateException(\"The instance is not a enum wrapper\");\r\n+    }\r\n+\r\n+    public String setClassNameProperty(String name) {\r\n+        if (isClassType()) {\r\n+            Object result = setProperty(CLASS_PROPERTY_NAME, name);\r\n+            return result == null ? null : result.toString();\r\n+        }\r\n+        throw new IllegalStateException(\"The instance is not a class wrapper\");\r\n+    }\r\n+\r\n+    public String getClassNameProperty() {\r\n+        if (isClassType()) {\r\n+            Object result = getProperty(CLASS_PROPERTY_NAME);\r\n+            return result == null ? null : result.toString();\r\n+        }\r\n+        throw new IllegalStateException(\"The instance is not a class wrapper\");\r\n+    }\r\n+\r\n+    public Object setPrimitiveProperty(Object primitiveValue) {\r\n+        if (isPrimitiveType()) {\r\n+            return setProperty(PRIMITIVE_PROPERTY_VALUE, primitiveValue);\r\n+        }\r\n+        throw new IllegalStateException(\"The instance is not a primitive type wrapper\");\r\n+    }\r\n+\r\n+    public Object getPrimitiveProperty() {\r\n+        if (isPrimitiveType()) {\r\n+            return getProperty(PRIMITIVE_PROPERTY_VALUE);\r\n+        }\r\n+        throw new IllegalStateException(\"The instance is not a primitive type wrapper\");\r\n+    }\r\n+\r\n+    public Object getProperty(Object propertyName) {\r\n+        notNull(propertyName, \"Property name is null\");\r\n+        return properties.get(propertyName);\r\n+    }\r\n+\r\n+    public boolean containsProperty(Object propertyName) {\r\n+        notNull(propertyName, \"Property name is null\");\r\n+        return properties.containsKey(propertyName);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Iterator<Map.Entry<Object, Object>> iterator() {\r\n+        return properties.entrySet().iterator();\r\n+    }\r\n+\r\n+    public int propertySize() {\r\n+        return properties.size();\r\n+    }\r\n+\r\n+    private boolean isValidType(int type) {\r\n+        return TYPE_MIN <= type && type <= TYPE_MAX;\r\n+    }\r\n+\r\n+    private void notNull(Object obj, String message) {\r\n+        if (obj == null) {\r\n+            throw new IllegalArgumentException(message);\r\n+        }\r\n+    }\r\n+\r\n+    private void notEmpty(String string, String message) {\r\n+        if (isEmpty(string)) {\r\n+            throw new IllegalArgumentException(message);\r\n+        }\r\n+    }\r\n+\r\n+    private boolean isEmpty(String string) {\r\n+        return string == null || \"\".equals(string.trim());\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/beanutil/JavaBeanSerializeUtil.java", "source2": "org/apache/dubbo/common/beanutil/JavaBeanSerializeUtil.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,486 +1,486 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.beanutil;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.LogHelper;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.common.utils.SerializeClassChecker;\n-\n-import java.lang.reflect.Array;\n-import java.lang.reflect.Constructor;\n-import java.lang.reflect.Field;\n-import java.lang.reflect.InvocationTargetException;\n-import java.lang.reflect.Method;\n-import java.util.Collection;\n-import java.util.HashMap;\n-import java.util.IdentityHashMap;\n-import java.util.Map;\n-\n-public final class JavaBeanSerializeUtil {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(JavaBeanSerializeUtil.class);\n-    private static final Map<String, Class<?>> TYPES = new HashMap<String, Class<?>>();\n-    private static final String ARRAY_PREFIX = \"[\";\n-    private static final String REFERENCE_TYPE_PREFIX = \"L\";\n-    private static final String REFERENCE_TYPE_SUFFIX = \";\";\n-\n-    static {\n-        TYPES.put(boolean.class.getName(), boolean.class);\n-        TYPES.put(byte.class.getName(), byte.class);\n-        TYPES.put(short.class.getName(), short.class);\n-        TYPES.put(int.class.getName(), int.class);\n-        TYPES.put(long.class.getName(), long.class);\n-        TYPES.put(float.class.getName(), float.class);\n-        TYPES.put(double.class.getName(), double.class);\n-        TYPES.put(void.class.getName(), void.class);\n-        TYPES.put(\"Z\", boolean.class);\n-        TYPES.put(\"B\", byte.class);\n-        TYPES.put(\"C\", char.class);\n-        TYPES.put(\"D\", double.class);\n-        TYPES.put(\"F\", float.class);\n-        TYPES.put(\"I\", int.class);\n-        TYPES.put(\"J\", long.class);\n-        TYPES.put(\"S\", short.class);\n-    }\n-\n-    private JavaBeanSerializeUtil() {\n-    }\n-\n-    public static JavaBeanDescriptor serialize(Object obj) {\n-        return serialize(obj, JavaBeanAccessor.FIELD);\n-    }\n-\n-    public static JavaBeanDescriptor serialize(Object obj, JavaBeanAccessor accessor) {\n-        if (obj == null) {\n-            return null;\n-        }\n-        if (obj instanceof JavaBeanDescriptor) {\n-            return (JavaBeanDescriptor) obj;\n-        }\n-        IdentityHashMap<Object, JavaBeanDescriptor> cache = new IdentityHashMap<Object, JavaBeanDescriptor>();\n-        return createDescriptorIfAbsent(obj, accessor, cache);\n-    }\n-\n-    private static JavaBeanDescriptor createDescriptorForSerialize(Class<?> cl) {\n-        if (cl.isEnum()) {\n-            return new JavaBeanDescriptor(cl.getName(), JavaBeanDescriptor.TYPE_ENUM);\n-        }\n-\n-        if (cl.isArray()) {\n-            return new JavaBeanDescriptor(cl.getComponentType().getName(), JavaBeanDescriptor.TYPE_ARRAY);\n-        }\n-\n-        if (ReflectUtils.isPrimitive(cl)) {\n-            return new JavaBeanDescriptor(cl.getName(), JavaBeanDescriptor.TYPE_PRIMITIVE);\n-        }\n-\n-        if (Class.class.equals(cl)) {\n-            return new JavaBeanDescriptor(Class.class.getName(), JavaBeanDescriptor.TYPE_CLASS);\n-        }\n-\n-        if (Collection.class.isAssignableFrom(cl)) {\n-            return new JavaBeanDescriptor(cl.getName(), JavaBeanDescriptor.TYPE_COLLECTION);\n-        }\n-\n-        if (Map.class.isAssignableFrom(cl)) {\n-            return new JavaBeanDescriptor(cl.getName(), JavaBeanDescriptor.TYPE_MAP);\n-        }\n-\n-        return new JavaBeanDescriptor(cl.getName(), JavaBeanDescriptor.TYPE_BEAN);\n-    }\n-\n-    private static JavaBeanDescriptor createDescriptorIfAbsent(Object obj, JavaBeanAccessor accessor,\n-                                                               IdentityHashMap<Object, JavaBeanDescriptor> cache) {\n-        if (cache.containsKey(obj)) {\n-            return cache.get(obj);\n-        }\n-\n-        if (obj instanceof JavaBeanDescriptor) {\n-            return (JavaBeanDescriptor) obj;\n-        }\n-\n-        JavaBeanDescriptor result = createDescriptorForSerialize(obj.getClass());\n-        cache.put(obj, result);\n-        serializeInternal(result, obj, accessor, cache);\n-        return result;\n-    }\n-\n-    private static void serializeInternal(JavaBeanDescriptor descriptor, Object obj, JavaBeanAccessor accessor,\n-                                          IdentityHashMap<Object, JavaBeanDescriptor> cache) {\n-        if (obj == null || descriptor == null) {\n-            return;\n-        }\n-\n-        if (obj.getClass().isEnum()) {\n-            descriptor.setEnumNameProperty(((Enum<?>) obj).name());\n-        } else if (ReflectUtils.isPrimitive(obj.getClass())) {\n-            descriptor.setPrimitiveProperty(obj);\n-        } else if (Class.class.equals(obj.getClass())) {\n-            descriptor.setClassNameProperty(((Class<?>) obj).getName());\n-        } else if (obj.getClass().isArray()) {\n-            int len = Array.getLength(obj);\n-            for (int i = 0; i < len; i++) {\n-                Object item = Array.get(obj, i);\n-                if (item == null) {\n-                    descriptor.setProperty(i, null);\n-                } else {\n-                    JavaBeanDescriptor itemDescriptor = createDescriptorIfAbsent(item, accessor, cache);\n-                    descriptor.setProperty(i, itemDescriptor);\n-                }\n-            }\n-        } else if (obj instanceof Collection) {\n-            Collection collection = (Collection) obj;\n-            int index = 0;\n-            for (Object item : collection) {\n-                if (item == null) {\n-                    descriptor.setProperty(index++, null);\n-                } else {\n-                    JavaBeanDescriptor itemDescriptor = createDescriptorIfAbsent(item, accessor, cache);\n-                    descriptor.setProperty(index++, itemDescriptor);\n-                }\n-            }\n-        } else if (obj instanceof Map) {\n-            Map map = (Map) obj;\n-            map.forEach((key, value) -> {\n-                Object keyDescriptor = key == null ? null : createDescriptorIfAbsent(key, accessor, cache);\n-                Object valueDescriptor = value == null ? null : createDescriptorIfAbsent(value, accessor, cache);\n-                descriptor.setProperty(keyDescriptor, valueDescriptor);\n-            });// ~ end of loop map\n-        } else {\n-            if (JavaBeanAccessor.isAccessByMethod(accessor)) {\n-                Map<String, Method> methods = ReflectUtils.getBeanPropertyReadMethods(obj.getClass());\n-                for (Map.Entry<String, Method> entry : methods.entrySet()) {\n-                    try {\n-                        Object value = entry.getValue().invoke(obj);\n-                        if (value == null) {\n-                            continue;\n-                        }\n-                        JavaBeanDescriptor valueDescriptor = createDescriptorIfAbsent(value, accessor, cache);\n-                        descriptor.setProperty(entry.getKey(), valueDescriptor);\n-                    } catch (Exception e) {\n-                        throw new RuntimeException(e.getMessage(), e);\n-                    }\n-                } // ~ end of loop method map\n-            } // ~ end of if (JavaBeanAccessor.isAccessByMethod(accessor))\n-\n-            if (JavaBeanAccessor.isAccessByField(accessor)) {\n-                Map<String, Field> fields = ReflectUtils.getBeanPropertyFields(obj.getClass());\n-                for (Map.Entry<String, Field> entry : fields.entrySet()) {\n-                    if (!descriptor.containsProperty(entry.getKey())) {\n-                        try {\n-                            Object value = entry.getValue().get(obj);\n-                            if (value == null) {\n-                                continue;\n-                            }\n-                            JavaBeanDescriptor valueDescriptor = createDescriptorIfAbsent(value, accessor, cache);\n-                            descriptor.setProperty(entry.getKey(), valueDescriptor);\n-                        } catch (Exception e) {\n-                            throw new RuntimeException(e.getMessage(), e);\n-                        }\n-                    }\n-                } // ~ end of loop field map\n-            } // ~ end of if (JavaBeanAccessor.isAccessByField(accessor))\n-\n-        } // ~ end of else\n-\n-    } // ~ end of method serializeInternal\n-\n-    public static Object deserialize(JavaBeanDescriptor beanDescriptor) {\n-        return deserialize(\n-                beanDescriptor,\n-                Thread.currentThread().getContextClassLoader());\n-    }\n-\n-    public static Object deserialize(JavaBeanDescriptor beanDescriptor, ClassLoader loader) {\n-        if (beanDescriptor == null) {\n-            return null;\n-        }\n-        IdentityHashMap<JavaBeanDescriptor, Object> cache = new IdentityHashMap<JavaBeanDescriptor, Object>();\n-        Object result = instantiateForDeserialize(beanDescriptor, loader, cache);\n-        deserializeInternal(result, beanDescriptor, loader, cache);\n-        return result;\n-    }\n-\n-    private static void deserializeInternal(Object result, JavaBeanDescriptor beanDescriptor, ClassLoader loader,\n-                                            IdentityHashMap<JavaBeanDescriptor, Object> cache) {\n-        if (beanDescriptor.isEnumType() || beanDescriptor.isClassType() || beanDescriptor.isPrimitiveType()) {\n-            return;\n-        }\n-\n-        if (beanDescriptor.isArrayType()) {\n-            int index = 0;\n-            for (Map.Entry<Object, Object> entry : beanDescriptor) {\n-                Object item = entry.getValue();\n-                if (item instanceof JavaBeanDescriptor) {\n-                    JavaBeanDescriptor itemDescriptor = (JavaBeanDescriptor) entry.getValue();\n-                    item = instantiateForDeserialize(itemDescriptor, loader, cache);\n-                    deserializeInternal(item, itemDescriptor, loader, cache);\n-                }\n-                Array.set(result, index++, item);\n-            }\n-        } else if (beanDescriptor.isCollectionType()) {\n-            Collection collection = (Collection) result;\n-            for (Map.Entry<Object, Object> entry : beanDescriptor) {\n-                Object item = entry.getValue();\n-                if (item instanceof JavaBeanDescriptor) {\n-                    JavaBeanDescriptor itemDescriptor = (JavaBeanDescriptor) entry.getValue();\n-                    item = instantiateForDeserialize(itemDescriptor, loader, cache);\n-                    deserializeInternal(item, itemDescriptor, loader, cache);\n-                }\n-                collection.add(item);\n-            }\n-        } else if (beanDescriptor.isMapType()) {\n-            Map map = (Map) result;\n-            for (Map.Entry<Object, Object> entry : beanDescriptor) {\n-                Object key = entry.getKey();\n-                Object value = entry.getValue();\n-                if (key instanceof JavaBeanDescriptor) {\n-                    JavaBeanDescriptor keyDescriptor = (JavaBeanDescriptor) entry.getKey();\n-                    key = instantiateForDeserialize(keyDescriptor, loader, cache);\n-                    deserializeInternal(key, keyDescriptor, loader, cache);\n-                }\n-                if (value instanceof JavaBeanDescriptor) {\n-                    JavaBeanDescriptor valueDescriptor = (JavaBeanDescriptor) entry.getValue();\n-                    value = instantiateForDeserialize(valueDescriptor, loader, cache);\n-                    deserializeInternal(value, valueDescriptor, loader, cache);\n-                }\n-                map.put(key, value);\n-            }\n-        } else if (beanDescriptor.isBeanType()) {\n-            for (Map.Entry<Object, Object> entry : beanDescriptor) {\n-                String property = entry.getKey().toString();\n-                Object value = entry.getValue();\n-                if (value == null) {\n-                    continue;\n-                }\n-\n-                if (value instanceof JavaBeanDescriptor) {\n-                    JavaBeanDescriptor valueDescriptor = (JavaBeanDescriptor) entry.getValue();\n-                    value = instantiateForDeserialize(valueDescriptor, loader, cache);\n-                    deserializeInternal(value, valueDescriptor, loader, cache);\n-                }\n-\n-                Method method = getSetterMethod(result.getClass(), property, value.getClass());\n-                boolean setByMethod = false;\n-                try {\n-                    if (method != null) {\n-                        method.invoke(result, value);\n-                        setByMethod = true;\n-                    }\n-                } catch (Exception e) {\n-                    LogHelper.warn(logger, \"Failed to set property through method \" + method, e);\n-                }\n-\n-                if (!setByMethod) {\n-                    try {\n-                        Field field = result.getClass().getField(property);\n-                        if (field != null) {\n-                            field.set(result, value);\n-                        }\n-                    } catch (NoSuchFieldException | IllegalAccessException e1) {\n-                        LogHelper.warn(logger, \"Failed to set field value\", e1);\n-                    }\n-                }\n-            }\n-        } else {\n-            throw new IllegalArgumentException(\"Unsupported type \" +\n-                    beanDescriptor.getClassName() +\n-                    \":\" + beanDescriptor.getType());\n-        }\n-    }\n-\n-    private static Method getSetterMethod(Class<?> cls, String property, Class<?> valueCls) {\n-        String name = \"set\" + property.substring(0, 1).toUpperCase() + property.substring(1);\n-        Method method = null;\n-        try {\n-            method = cls.getMethod(name, valueCls);\n-        } catch (NoSuchMethodException e) {\n-            for (Method m : cls.getMethods()) {\n-                if (ReflectUtils.isBeanPropertyWriteMethod(m)\n-                        && m.getName().equals(name)) {\n-                    method = m;\n-                }\n-            }\n-        }\n-        if (method != null) {\n-            ReflectUtils.makeAccessible(method);\n-        }\n-        return method;\n-    }\n-\n-    private static Object instantiate(Class<?> cl) throws Exception {\n-        Constructor<?>[] constructors = cl.getDeclaredConstructors();\n-        Constructor<?> constructor = null;\n-        int argc = Integer.MAX_VALUE;\n-        for (Constructor<?> c : constructors) {\n-            if (c.getParameterTypes().length < argc) {\n-                argc = c.getParameterTypes().length;\n-                constructor = c;\n-            }\n-        }\n-\n-        if (constructor != null) {\n-            Class<?>[] paramTypes = constructor.getParameterTypes();\n-            Object[] constructorArgs = new Object[paramTypes.length];\n-            for (int i = 0; i < constructorArgs.length; i++) {\n-                constructorArgs[i] = getConstructorArg(paramTypes[i]);\n-            }\n-            try {\n-                ReflectUtils.makeAccessible(constructor);\n-                return constructor.newInstance(constructorArgs);\n-            } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {\n-                LogHelper.warn(logger, e.getMessage(), e);\n-            }\n-        }\n-\n-        return cl.getDeclaredConstructor().newInstance();\n-    }\n-\n-    public static Object getConstructorArg(Class<?> cl) {\n-        if (boolean.class.equals(cl) || Boolean.class.equals(cl)) {\n-            return Boolean.FALSE;\n-        }\n-\n-        if (byte.class.equals(cl) || Byte.class.equals(cl)) {\n-            return (byte) 0;\n-        }\n-\n-        if (short.class.equals(cl) || Short.class.equals(cl)) {\n-            return (short) 0;\n-        }\n-\n-        if (int.class.equals(cl) || Integer.class.equals(cl)) {\n-            return 0;\n-        }\n-\n-        if (long.class.equals(cl) || Long.class.equals(cl)) {\n-            return 0L;\n-        }\n-\n-        if (float.class.equals(cl) || Float.class.equals(cl)) {\n-            return (float) 0;\n-        }\n-\n-        if (double.class.equals(cl) || Double.class.equals(cl)) {\n-            return (double) 0;\n-        }\n-\n-        if (char.class.equals(cl) || Character.class.equals(cl)) {\n-            return (char) 0;\n-        }\n-        return null;\n-    }\n-\n-    private static Object instantiateForDeserialize(JavaBeanDescriptor beanDescriptor, ClassLoader loader,\n-                                                    IdentityHashMap<JavaBeanDescriptor, Object> cache) {\n-        if (cache.containsKey(beanDescriptor)) {\n-            return cache.get(beanDescriptor);\n-        }\n-\n-        if (beanDescriptor.isClassType()) {\n-            try {\n-                return name2Class(loader, beanDescriptor.getClassNameProperty());\n-            } catch (ClassNotFoundException e) {\n-                throw new RuntimeException(e.getMessage(), e);\n-            }\n-        }\n-\n-        if (beanDescriptor.isEnumType()) {\n-            try {\n-                Class<?> enumType = name2Class(loader, beanDescriptor.getClassName());\n-                Method method = getEnumValueOfMethod(enumType);\n-                return method.invoke(null, enumType, beanDescriptor.getEnumPropertyName());\n-            } catch (Exception e) {\n-                throw new RuntimeException(e.getMessage(), e);\n-            }\n-        }\n-\n-        if (beanDescriptor.isPrimitiveType()) {\n-            return beanDescriptor.getPrimitiveProperty();\n-        }\n-\n-        Object result;\n-        if (beanDescriptor.isArrayType()) {\n-            Class<?> componentType;\n-            try {\n-                componentType = name2Class(loader, beanDescriptor.getClassName());\n-            } catch (ClassNotFoundException e) {\n-                throw new RuntimeException(e.getMessage(), e);\n-            }\n-            result = Array.newInstance(componentType, beanDescriptor.propertySize());\n-            cache.put(beanDescriptor, result);\n-        } else {\n-            try {\n-                Class<?> cl = name2Class(loader, beanDescriptor.getClassName());\n-                result = instantiate(cl);\n-                cache.put(beanDescriptor, result);\n-            } catch (Exception e) {\n-                throw new RuntimeException(e.getMessage(), e);\n-            }\n-        }\n-\n-        return result;\n-    }\n-\n-    /**\n-     * Transform the Class.forName String to Class Object.\n-     *\n-     * @param name Class.getName()\n-     * @return Class\n-     * @throws ClassNotFoundException Class.forName\n-     */\n-    public static Class<?> name2Class(ClassLoader loader, String name) throws ClassNotFoundException {\n-        if (TYPES.containsKey(name)) {\n-            return TYPES.get(name);\n-        }\n-        if (isArray(name)) {\n-            int dimension = 0;\n-            while (isArray(name)) {\n-                ++dimension;\n-                name = name.substring(1);\n-            }\n-            Class type = name2Class(loader, name);\n-            int[] dimensions = new int[dimension];\n-            for (int i = 0; i < dimension; i++) {\n-                dimensions[i] = 0;\n-            }\n-            return Array.newInstance(type, dimensions).getClass();\n-        }\n-        if (isReferenceType(name)) {\n-            name = name.substring(1, name.length() - 1);\n-        }\n-        SerializeClassChecker.getInstance().validateClass(name);\n-        return Class.forName(name, false, loader);\n-    }\n-\n-    private static boolean isArray(String type) {\n-        return type != null && type.startsWith(ARRAY_PREFIX);\n-    }\n-\n-    private static boolean isReferenceType(String type) {\n-        return type != null\n-                && type.startsWith(REFERENCE_TYPE_PREFIX)\n-                && type.endsWith(REFERENCE_TYPE_SUFFIX);\n-    }\n-\n-    private static Method getEnumValueOfMethod(Class cl) throws NoSuchMethodException {\n-        return cl.getMethod(\"valueOf\", Class.class, String.class);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.beanutil;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.LogHelper;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.common.utils.SerializeClassChecker;\r\n+\r\n+import java.lang.reflect.Array;\r\n+import java.lang.reflect.Constructor;\r\n+import java.lang.reflect.Field;\r\n+import java.lang.reflect.InvocationTargetException;\r\n+import java.lang.reflect.Method;\r\n+import java.util.Collection;\r\n+import java.util.HashMap;\r\n+import java.util.IdentityHashMap;\r\n+import java.util.Map;\r\n+\r\n+public final class JavaBeanSerializeUtil {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(JavaBeanSerializeUtil.class);\r\n+    private static final Map<String, Class<?>> TYPES = new HashMap<String, Class<?>>();\r\n+    private static final String ARRAY_PREFIX = \"[\";\r\n+    private static final String REFERENCE_TYPE_PREFIX = \"L\";\r\n+    private static final String REFERENCE_TYPE_SUFFIX = \";\";\r\n+\r\n+    static {\r\n+        TYPES.put(boolean.class.getName(), boolean.class);\r\n+        TYPES.put(byte.class.getName(), byte.class);\r\n+        TYPES.put(short.class.getName(), short.class);\r\n+        TYPES.put(int.class.getName(), int.class);\r\n+        TYPES.put(long.class.getName(), long.class);\r\n+        TYPES.put(float.class.getName(), float.class);\r\n+        TYPES.put(double.class.getName(), double.class);\r\n+        TYPES.put(void.class.getName(), void.class);\r\n+        TYPES.put(\"Z\", boolean.class);\r\n+        TYPES.put(\"B\", byte.class);\r\n+        TYPES.put(\"C\", char.class);\r\n+        TYPES.put(\"D\", double.class);\r\n+        TYPES.put(\"F\", float.class);\r\n+        TYPES.put(\"I\", int.class);\r\n+        TYPES.put(\"J\", long.class);\r\n+        TYPES.put(\"S\", short.class);\r\n+    }\r\n+\r\n+    private JavaBeanSerializeUtil() {\r\n+    }\r\n+\r\n+    public static JavaBeanDescriptor serialize(Object obj) {\r\n+        return serialize(obj, JavaBeanAccessor.FIELD);\r\n+    }\r\n+\r\n+    public static JavaBeanDescriptor serialize(Object obj, JavaBeanAccessor accessor) {\r\n+        if (obj == null) {\r\n+            return null;\r\n+        }\r\n+        if (obj instanceof JavaBeanDescriptor) {\r\n+            return (JavaBeanDescriptor) obj;\r\n+        }\r\n+        IdentityHashMap<Object, JavaBeanDescriptor> cache = new IdentityHashMap<Object, JavaBeanDescriptor>();\r\n+        return createDescriptorIfAbsent(obj, accessor, cache);\r\n+    }\r\n+\r\n+    private static JavaBeanDescriptor createDescriptorForSerialize(Class<?> cl) {\r\n+        if (cl.isEnum()) {\r\n+            return new JavaBeanDescriptor(cl.getName(), JavaBeanDescriptor.TYPE_ENUM);\r\n+        }\r\n+\r\n+        if (cl.isArray()) {\r\n+            return new JavaBeanDescriptor(cl.getComponentType().getName(), JavaBeanDescriptor.TYPE_ARRAY);\r\n+        }\r\n+\r\n+        if (ReflectUtils.isPrimitive(cl)) {\r\n+            return new JavaBeanDescriptor(cl.getName(), JavaBeanDescriptor.TYPE_PRIMITIVE);\r\n+        }\r\n+\r\n+        if (Class.class.equals(cl)) {\r\n+            return new JavaBeanDescriptor(Class.class.getName(), JavaBeanDescriptor.TYPE_CLASS);\r\n+        }\r\n+\r\n+        if (Collection.class.isAssignableFrom(cl)) {\r\n+            return new JavaBeanDescriptor(cl.getName(), JavaBeanDescriptor.TYPE_COLLECTION);\r\n+        }\r\n+\r\n+        if (Map.class.isAssignableFrom(cl)) {\r\n+            return new JavaBeanDescriptor(cl.getName(), JavaBeanDescriptor.TYPE_MAP);\r\n+        }\r\n+\r\n+        return new JavaBeanDescriptor(cl.getName(), JavaBeanDescriptor.TYPE_BEAN);\r\n+    }\r\n+\r\n+    private static JavaBeanDescriptor createDescriptorIfAbsent(Object obj, JavaBeanAccessor accessor,\r\n+                                                               IdentityHashMap<Object, JavaBeanDescriptor> cache) {\r\n+        if (cache.containsKey(obj)) {\r\n+            return cache.get(obj);\r\n+        }\r\n+\r\n+        if (obj instanceof JavaBeanDescriptor) {\r\n+            return (JavaBeanDescriptor) obj;\r\n+        }\r\n+\r\n+        JavaBeanDescriptor result = createDescriptorForSerialize(obj.getClass());\r\n+        cache.put(obj, result);\r\n+        serializeInternal(result, obj, accessor, cache);\r\n+        return result;\r\n+    }\r\n+\r\n+    private static void serializeInternal(JavaBeanDescriptor descriptor, Object obj, JavaBeanAccessor accessor,\r\n+                                          IdentityHashMap<Object, JavaBeanDescriptor> cache) {\r\n+        if (obj == null || descriptor == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        if (obj.getClass().isEnum()) {\r\n+            descriptor.setEnumNameProperty(((Enum<?>) obj).name());\r\n+        } else if (ReflectUtils.isPrimitive(obj.getClass())) {\r\n+            descriptor.setPrimitiveProperty(obj);\r\n+        } else if (Class.class.equals(obj.getClass())) {\r\n+            descriptor.setClassNameProperty(((Class<?>) obj).getName());\r\n+        } else if (obj.getClass().isArray()) {\r\n+            int len = Array.getLength(obj);\r\n+            for (int i = 0; i < len; i++) {\r\n+                Object item = Array.get(obj, i);\r\n+                if (item == null) {\r\n+                    descriptor.setProperty(i, null);\r\n+                } else {\r\n+                    JavaBeanDescriptor itemDescriptor = createDescriptorIfAbsent(item, accessor, cache);\r\n+                    descriptor.setProperty(i, itemDescriptor);\r\n+                }\r\n+            }\r\n+        } else if (obj instanceof Collection) {\r\n+            Collection collection = (Collection) obj;\r\n+            int index = 0;\r\n+            for (Object item : collection) {\r\n+                if (item == null) {\r\n+                    descriptor.setProperty(index++, null);\r\n+                } else {\r\n+                    JavaBeanDescriptor itemDescriptor = createDescriptorIfAbsent(item, accessor, cache);\r\n+                    descriptor.setProperty(index++, itemDescriptor);\r\n+                }\r\n+            }\r\n+        } else if (obj instanceof Map) {\r\n+            Map map = (Map) obj;\r\n+            map.forEach((key, value) -> {\r\n+                Object keyDescriptor = key == null ? null : createDescriptorIfAbsent(key, accessor, cache);\r\n+                Object valueDescriptor = value == null ? null : createDescriptorIfAbsent(value, accessor, cache);\r\n+                descriptor.setProperty(keyDescriptor, valueDescriptor);\r\n+            });// ~ end of loop map\r\n+        } else {\r\n+            if (JavaBeanAccessor.isAccessByMethod(accessor)) {\r\n+                Map<String, Method> methods = ReflectUtils.getBeanPropertyReadMethods(obj.getClass());\r\n+                for (Map.Entry<String, Method> entry : methods.entrySet()) {\r\n+                    try {\r\n+                        Object value = entry.getValue().invoke(obj);\r\n+                        if (value == null) {\r\n+                            continue;\r\n+                        }\r\n+                        JavaBeanDescriptor valueDescriptor = createDescriptorIfAbsent(value, accessor, cache);\r\n+                        descriptor.setProperty(entry.getKey(), valueDescriptor);\r\n+                    } catch (Exception e) {\r\n+                        throw new RuntimeException(e.getMessage(), e);\r\n+                    }\r\n+                } // ~ end of loop method map\r\n+            } // ~ end of if (JavaBeanAccessor.isAccessByMethod(accessor))\r\n+\r\n+            if (JavaBeanAccessor.isAccessByField(accessor)) {\r\n+                Map<String, Field> fields = ReflectUtils.getBeanPropertyFields(obj.getClass());\r\n+                for (Map.Entry<String, Field> entry : fields.entrySet()) {\r\n+                    if (!descriptor.containsProperty(entry.getKey())) {\r\n+                        try {\r\n+                            Object value = entry.getValue().get(obj);\r\n+                            if (value == null) {\r\n+                                continue;\r\n+                            }\r\n+                            JavaBeanDescriptor valueDescriptor = createDescriptorIfAbsent(value, accessor, cache);\r\n+                            descriptor.setProperty(entry.getKey(), valueDescriptor);\r\n+                        } catch (Exception e) {\r\n+                            throw new RuntimeException(e.getMessage(), e);\r\n+                        }\r\n+                    }\r\n+                } // ~ end of loop field map\r\n+            } // ~ end of if (JavaBeanAccessor.isAccessByField(accessor))\r\n+\r\n+        } // ~ end of else\r\n+\r\n+    } // ~ end of method serializeInternal\r\n+\r\n+    public static Object deserialize(JavaBeanDescriptor beanDescriptor) {\r\n+        return deserialize(\r\n+                beanDescriptor,\r\n+                Thread.currentThread().getContextClassLoader());\r\n+    }\r\n+\r\n+    public static Object deserialize(JavaBeanDescriptor beanDescriptor, ClassLoader loader) {\r\n+        if (beanDescriptor == null) {\r\n+            return null;\r\n+        }\r\n+        IdentityHashMap<JavaBeanDescriptor, Object> cache = new IdentityHashMap<JavaBeanDescriptor, Object>();\r\n+        Object result = instantiateForDeserialize(beanDescriptor, loader, cache);\r\n+        deserializeInternal(result, beanDescriptor, loader, cache);\r\n+        return result;\r\n+    }\r\n+\r\n+    private static void deserializeInternal(Object result, JavaBeanDescriptor beanDescriptor, ClassLoader loader,\r\n+                                            IdentityHashMap<JavaBeanDescriptor, Object> cache) {\r\n+        if (beanDescriptor.isEnumType() || beanDescriptor.isClassType() || beanDescriptor.isPrimitiveType()) {\r\n+            return;\r\n+        }\r\n+\r\n+        if (beanDescriptor.isArrayType()) {\r\n+            int index = 0;\r\n+            for (Map.Entry<Object, Object> entry : beanDescriptor) {\r\n+                Object item = entry.getValue();\r\n+                if (item instanceof JavaBeanDescriptor) {\r\n+                    JavaBeanDescriptor itemDescriptor = (JavaBeanDescriptor) entry.getValue();\r\n+                    item = instantiateForDeserialize(itemDescriptor, loader, cache);\r\n+                    deserializeInternal(item, itemDescriptor, loader, cache);\r\n+                }\r\n+                Array.set(result, index++, item);\r\n+            }\r\n+        } else if (beanDescriptor.isCollectionType()) {\r\n+            Collection collection = (Collection) result;\r\n+            for (Map.Entry<Object, Object> entry : beanDescriptor) {\r\n+                Object item = entry.getValue();\r\n+                if (item instanceof JavaBeanDescriptor) {\r\n+                    JavaBeanDescriptor itemDescriptor = (JavaBeanDescriptor) entry.getValue();\r\n+                    item = instantiateForDeserialize(itemDescriptor, loader, cache);\r\n+                    deserializeInternal(item, itemDescriptor, loader, cache);\r\n+                }\r\n+                collection.add(item);\r\n+            }\r\n+        } else if (beanDescriptor.isMapType()) {\r\n+            Map map = (Map) result;\r\n+            for (Map.Entry<Object, Object> entry : beanDescriptor) {\r\n+                Object key = entry.getKey();\r\n+                Object value = entry.getValue();\r\n+                if (key instanceof JavaBeanDescriptor) {\r\n+                    JavaBeanDescriptor keyDescriptor = (JavaBeanDescriptor) entry.getKey();\r\n+                    key = instantiateForDeserialize(keyDescriptor, loader, cache);\r\n+                    deserializeInternal(key, keyDescriptor, loader, cache);\r\n+                }\r\n+                if (value instanceof JavaBeanDescriptor) {\r\n+                    JavaBeanDescriptor valueDescriptor = (JavaBeanDescriptor) entry.getValue();\r\n+                    value = instantiateForDeserialize(valueDescriptor, loader, cache);\r\n+                    deserializeInternal(value, valueDescriptor, loader, cache);\r\n+                }\r\n+                map.put(key, value);\r\n+            }\r\n+        } else if (beanDescriptor.isBeanType()) {\r\n+            for (Map.Entry<Object, Object> entry : beanDescriptor) {\r\n+                String property = entry.getKey().toString();\r\n+                Object value = entry.getValue();\r\n+                if (value == null) {\r\n+                    continue;\r\n+                }\r\n+\r\n+                if (value instanceof JavaBeanDescriptor) {\r\n+                    JavaBeanDescriptor valueDescriptor = (JavaBeanDescriptor) entry.getValue();\r\n+                    value = instantiateForDeserialize(valueDescriptor, loader, cache);\r\n+                    deserializeInternal(value, valueDescriptor, loader, cache);\r\n+                }\r\n+\r\n+                Method method = getSetterMethod(result.getClass(), property, value.getClass());\r\n+                boolean setByMethod = false;\r\n+                try {\r\n+                    if (method != null) {\r\n+                        method.invoke(result, value);\r\n+                        setByMethod = true;\r\n+                    }\r\n+                } catch (Exception e) {\r\n+                    LogHelper.warn(logger, \"Failed to set property through method \" + method, e);\r\n+                }\r\n+\r\n+                if (!setByMethod) {\r\n+                    try {\r\n+                        Field field = result.getClass().getField(property);\r\n+                        if (field != null) {\r\n+                            field.set(result, value);\r\n+                        }\r\n+                    } catch (NoSuchFieldException | IllegalAccessException e1) {\r\n+                        LogHelper.warn(logger, \"Failed to set field value\", e1);\r\n+                    }\r\n+                }\r\n+            }\r\n+        } else {\r\n+            throw new IllegalArgumentException(\"Unsupported type \" +\r\n+                    beanDescriptor.getClassName() +\r\n+                    \":\" + beanDescriptor.getType());\r\n+        }\r\n+    }\r\n+\r\n+    private static Method getSetterMethod(Class<?> cls, String property, Class<?> valueCls) {\r\n+        String name = \"set\" + property.substring(0, 1).toUpperCase() + property.substring(1);\r\n+        Method method = null;\r\n+        try {\r\n+            method = cls.getMethod(name, valueCls);\r\n+        } catch (NoSuchMethodException e) {\r\n+            for (Method m : cls.getMethods()) {\r\n+                if (ReflectUtils.isBeanPropertyWriteMethod(m)\r\n+                        && m.getName().equals(name)) {\r\n+                    method = m;\r\n+                }\r\n+            }\r\n+        }\r\n+        if (method != null) {\r\n+            ReflectUtils.makeAccessible(method);\r\n+        }\r\n+        return method;\r\n+    }\r\n+\r\n+    private static Object instantiate(Class<?> cl) throws Exception {\r\n+        Constructor<?>[] constructors = cl.getDeclaredConstructors();\r\n+        Constructor<?> constructor = null;\r\n+        int argc = Integer.MAX_VALUE;\r\n+        for (Constructor<?> c : constructors) {\r\n+            if (c.getParameterTypes().length < argc) {\r\n+                argc = c.getParameterTypes().length;\r\n+                constructor = c;\r\n+            }\r\n+        }\r\n+\r\n+        if (constructor != null) {\r\n+            Class<?>[] paramTypes = constructor.getParameterTypes();\r\n+            Object[] constructorArgs = new Object[paramTypes.length];\r\n+            for (int i = 0; i < constructorArgs.length; i++) {\r\n+                constructorArgs[i] = getConstructorArg(paramTypes[i]);\r\n+            }\r\n+            try {\r\n+                ReflectUtils.makeAccessible(constructor);\r\n+                return constructor.newInstance(constructorArgs);\r\n+            } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {\r\n+                LogHelper.warn(logger, e.getMessage(), e);\r\n+            }\r\n+        }\r\n+\r\n+        return cl.getDeclaredConstructor().newInstance();\r\n+    }\r\n+\r\n+    public static Object getConstructorArg(Class<?> cl) {\r\n+        if (boolean.class.equals(cl) || Boolean.class.equals(cl)) {\r\n+            return Boolean.FALSE;\r\n+        }\r\n+\r\n+        if (byte.class.equals(cl) || Byte.class.equals(cl)) {\r\n+            return (byte) 0;\r\n+        }\r\n+\r\n+        if (short.class.equals(cl) || Short.class.equals(cl)) {\r\n+            return (short) 0;\r\n+        }\r\n+\r\n+        if (int.class.equals(cl) || Integer.class.equals(cl)) {\r\n+            return 0;\r\n+        }\r\n+\r\n+        if (long.class.equals(cl) || Long.class.equals(cl)) {\r\n+            return 0L;\r\n+        }\r\n+\r\n+        if (float.class.equals(cl) || Float.class.equals(cl)) {\r\n+            return (float) 0;\r\n+        }\r\n+\r\n+        if (double.class.equals(cl) || Double.class.equals(cl)) {\r\n+            return (double) 0;\r\n+        }\r\n+\r\n+        if (char.class.equals(cl) || Character.class.equals(cl)) {\r\n+            return (char) 0;\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    private static Object instantiateForDeserialize(JavaBeanDescriptor beanDescriptor, ClassLoader loader,\r\n+                                                    IdentityHashMap<JavaBeanDescriptor, Object> cache) {\r\n+        if (cache.containsKey(beanDescriptor)) {\r\n+            return cache.get(beanDescriptor);\r\n+        }\r\n+\r\n+        if (beanDescriptor.isClassType()) {\r\n+            try {\r\n+                return name2Class(loader, beanDescriptor.getClassNameProperty());\r\n+            } catch (ClassNotFoundException e) {\r\n+                throw new RuntimeException(e.getMessage(), e);\r\n+            }\r\n+        }\r\n+\r\n+        if (beanDescriptor.isEnumType()) {\r\n+            try {\r\n+                Class<?> enumType = name2Class(loader, beanDescriptor.getClassName());\r\n+                Method method = getEnumValueOfMethod(enumType);\r\n+                return method.invoke(null, enumType, beanDescriptor.getEnumPropertyName());\r\n+            } catch (Exception e) {\r\n+                throw new RuntimeException(e.getMessage(), e);\r\n+            }\r\n+        }\r\n+\r\n+        if (beanDescriptor.isPrimitiveType()) {\r\n+            return beanDescriptor.getPrimitiveProperty();\r\n+        }\r\n+\r\n+        Object result;\r\n+        if (beanDescriptor.isArrayType()) {\r\n+            Class<?> componentType;\r\n+            try {\r\n+                componentType = name2Class(loader, beanDescriptor.getClassName());\r\n+            } catch (ClassNotFoundException e) {\r\n+                throw new RuntimeException(e.getMessage(), e);\r\n+            }\r\n+            result = Array.newInstance(componentType, beanDescriptor.propertySize());\r\n+            cache.put(beanDescriptor, result);\r\n+        } else {\r\n+            try {\r\n+                Class<?> cl = name2Class(loader, beanDescriptor.getClassName());\r\n+                result = instantiate(cl);\r\n+                cache.put(beanDescriptor, result);\r\n+            } catch (Exception e) {\r\n+                throw new RuntimeException(e.getMessage(), e);\r\n+            }\r\n+        }\r\n+\r\n+        return result;\r\n+    }\r\n+\r\n+    /**\r\n+     * Transform the Class.forName String to Class Object.\r\n+     *\r\n+     * @param name Class.getName()\r\n+     * @return Class\r\n+     * @throws ClassNotFoundException Class.forName\r\n+     */\r\n+    public static Class<?> name2Class(ClassLoader loader, String name) throws ClassNotFoundException {\r\n+        if (TYPES.containsKey(name)) {\r\n+            return TYPES.get(name);\r\n+        }\r\n+        if (isArray(name)) {\r\n+            int dimension = 0;\r\n+            while (isArray(name)) {\r\n+                ++dimension;\r\n+                name = name.substring(1);\r\n+            }\r\n+            Class type = name2Class(loader, name);\r\n+            int[] dimensions = new int[dimension];\r\n+            for (int i = 0; i < dimension; i++) {\r\n+                dimensions[i] = 0;\r\n+            }\r\n+            return Array.newInstance(type, dimensions).getClass();\r\n+        }\r\n+        if (isReferenceType(name)) {\r\n+            name = name.substring(1, name.length() - 1);\r\n+        }\r\n+        SerializeClassChecker.getInstance().validateClass(name);\r\n+        return Class.forName(name, false, loader);\r\n+    }\r\n+\r\n+    private static boolean isArray(String type) {\r\n+        return type != null && type.startsWith(ARRAY_PREFIX);\r\n+    }\r\n+\r\n+    private static boolean isReferenceType(String type) {\r\n+        return type != null\r\n+                && type.startsWith(REFERENCE_TYPE_PREFIX)\r\n+                && type.endsWith(REFERENCE_TYPE_SUFFIX);\r\n+    }\r\n+\r\n+    private static Method getEnumValueOfMethod(Class cl) throws NoSuchMethodException {\r\n+        return cl.getMethod(\"valueOf\", Class.class, String.class);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/bytecode/ClassGenerator.java", "source2": "org/apache/dubbo/common/bytecode/ClassGenerator.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,388 +1,388 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.bytecode;\n-\n-import org.apache.dubbo.common.utils.ArrayUtils;\n-import org.apache.dubbo.common.utils.ClassUtils;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import javassist.CannotCompileException;\n-import javassist.ClassPool;\n-import javassist.CtClass;\n-import javassist.CtConstructor;\n-import javassist.CtField;\n-import javassist.CtMethod;\n-import javassist.CtNewConstructor;\n-import javassist.CtNewMethod;\n-import javassist.NotFoundException;\n-\n-import java.lang.reflect.Constructor;\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Modifier;\n-import java.security.ProtectionDomain;\n-import java.util.ArrayList;\n-import java.util.HashSet;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.atomic.AtomicLong;\n-\n-/**\n- * ClassGenerator\n- */\n-public final class ClassGenerator {\n-\n-    private static final AtomicLong CLASS_NAME_COUNTER = new AtomicLong(0);\n-    private static final String SIMPLE_NAME_TAG = \"<init>\";\n-    private static final Map<ClassLoader, ClassPool> POOL_MAP = new ConcurrentHashMap<ClassLoader, ClassPool>(); //ClassLoader - ClassPool\n-    private ClassPool mPool;\n-    private CtClass mCtc;\n-    private String mClassName;\n-    private String mSuperClass;\n-    private Set<String> mInterfaces;\n-    private List<String> mFields;\n-    private List<String> mConstructors;\n-    private List<String> mMethods;\n-    private Map<String, Method> mCopyMethods; // <method desc,method instance>\n-    private Map<String, Constructor<?>> mCopyConstructors; // <constructor desc,constructor instance>\n-    private boolean mDefaultConstructor = false;\n-\n-    private ClassGenerator() {\n-    }\n-\n-    private ClassGenerator(ClassPool pool) {\n-        mPool = pool;\n-    }\n-\n-    public static ClassGenerator newInstance() {\n-        return new ClassGenerator(getClassPool(Thread.currentThread().getContextClassLoader()));\n-    }\n-\n-    public static ClassGenerator newInstance(ClassLoader loader) {\n-        return new ClassGenerator(getClassPool(loader));\n-    }\n-\n-    public static boolean isDynamicClass(Class<?> cl) {\n-        return ClassGenerator.DC.class.isAssignableFrom(cl);\n-    }\n-\n-    public static ClassPool getClassPool(ClassLoader loader) {\n-        if (loader == null) {\n-            return ClassPool.getDefault();\n-        }\n-\n-        ClassPool pool = POOL_MAP.get(loader);\n-        if (pool == null) {\n-            pool = new ClassPool(true);\n-            pool.appendClassPath(new CustomizedLoaderClassPath(loader));\n-            POOL_MAP.put(loader, pool);\n-        }\n-        return pool;\n-    }\n-\n-    private static String modifier(int mod) {\n-        StringBuilder modifier = new StringBuilder();\n-        if (Modifier.isPublic(mod)) {\n-            modifier.append(\"public\");\n-        } else if (Modifier.isProtected(mod)) {\n-            modifier.append(\"protected\");\n-        } else if (Modifier.isPrivate(mod)) {\n-            modifier.append(\"private\");\n-        }\n-\n-        if (Modifier.isStatic(mod)) {\n-            modifier.append(\" static\");\n-        }\n-        if (Modifier.isVolatile(mod)) {\n-            modifier.append(\" volatile\");\n-        }\n-\n-        return modifier.toString();\n-    }\n-\n-    public String getClassName() {\n-        return mClassName;\n-    }\n-\n-    public ClassGenerator setClassName(String name) {\n-        mClassName = name;\n-        return this;\n-    }\n-\n-    public ClassGenerator addInterface(String cn) {\n-        if (mInterfaces == null) {\n-            mInterfaces = new HashSet<String>();\n-        }\n-        mInterfaces.add(cn);\n-        return this;\n-    }\n-\n-    public ClassGenerator addInterface(Class<?> cl) {\n-        return addInterface(cl.getName());\n-    }\n-\n-    public ClassGenerator setSuperClass(String cn) {\n-        mSuperClass = cn;\n-        return this;\n-    }\n-\n-    public ClassGenerator setSuperClass(Class<?> cl) {\n-        mSuperClass = cl.getName();\n-        return this;\n-    }\n-\n-    public ClassGenerator addField(String code) {\n-        if (mFields == null) {\n-            mFields = new ArrayList<String>();\n-        }\n-        mFields.add(code);\n-        return this;\n-    }\n-\n-    public ClassGenerator addField(String name, int mod, Class<?> type) {\n-        return addField(name, mod, type, null);\n-    }\n-\n-    public ClassGenerator addField(String name, int mod, Class<?> type, String def) {\n-        StringBuilder sb = new StringBuilder();\n-        sb.append(modifier(mod)).append(' ').append(ReflectUtils.getName(type)).append(' ');\n-        sb.append(name);\n-        if (StringUtils.isNotEmpty(def)) {\n-            sb.append('=');\n-            sb.append(def);\n-        }\n-        sb.append(';');\n-        return addField(sb.toString());\n-    }\n-\n-    public ClassGenerator addMethod(String code) {\n-        if (mMethods == null) {\n-            mMethods = new ArrayList<String>();\n-        }\n-        mMethods.add(code);\n-        return this;\n-    }\n-\n-    public ClassGenerator addMethod(String name, int mod, Class<?> rt, Class<?>[] pts, String body) {\n-        return addMethod(name, mod, rt, pts, null, body);\n-    }\n-\n-    public ClassGenerator addMethod(String name, int mod, Class<?> rt, Class<?>[] pts, Class<?>[] ets,\n-                                    String body) {\n-        StringBuilder sb = new StringBuilder();\n-        sb.append(modifier(mod)).append(' ').append(ReflectUtils.getName(rt)).append(' ').append(name);\n-        sb.append('(');\n-        for (int i = 0; i < pts.length; i++) {\n-            if (i > 0) {\n-                sb.append(',');\n-            }\n-            sb.append(ReflectUtils.getName(pts[i]));\n-            sb.append(\" arg\").append(i);\n-        }\n-        sb.append(')');\n-        if (ArrayUtils.isNotEmpty(ets)) {\n-            sb.append(\" throws \");\n-            for (int i = 0; i < ets.length; i++) {\n-                if (i > 0) {\n-                    sb.append(',');\n-                }\n-                sb.append(ReflectUtils.getName(ets[i]));\n-            }\n-        }\n-        sb.append('{').append(body).append('}');\n-        return addMethod(sb.toString());\n-    }\n-\n-    public ClassGenerator addMethod(Method m) {\n-        addMethod(m.getName(), m);\n-        return this;\n-    }\n-\n-    public ClassGenerator addMethod(String name, Method m) {\n-        String desc = name + ReflectUtils.getDescWithoutMethodName(m);\n-        addMethod(':' + desc);\n-        if (mCopyMethods == null) {\n-            mCopyMethods = new ConcurrentHashMap<String, Method>(8);\n-        }\n-        mCopyMethods.put(desc, m);\n-        return this;\n-    }\n-\n-    public ClassGenerator addConstructor(String code) {\n-        if (mConstructors == null) {\n-            mConstructors = new LinkedList<String>();\n-        }\n-        mConstructors.add(code);\n-        return this;\n-    }\n-\n-    public ClassGenerator addConstructor(int mod, Class<?>[] pts, String body) {\n-        return addConstructor(mod, pts, null, body);\n-    }\n-\n-    public ClassGenerator addConstructor(int mod, Class<?>[] pts, Class<?>[] ets, String body) {\n-        StringBuilder sb = new StringBuilder();\n-        sb.append(modifier(mod)).append(' ').append(SIMPLE_NAME_TAG);\n-        sb.append('(');\n-        for (int i = 0; i < pts.length; i++) {\n-            if (i > 0) {\n-                sb.append(',');\n-            }\n-            sb.append(ReflectUtils.getName(pts[i]));\n-            sb.append(\" arg\").append(i);\n-        }\n-        sb.append(')');\n-        if (ArrayUtils.isNotEmpty(ets)) {\n-            sb.append(\" throws \");\n-            for (int i = 0; i < ets.length; i++) {\n-                if (i > 0) {\n-                    sb.append(',');\n-                }\n-                sb.append(ReflectUtils.getName(ets[i]));\n-            }\n-        }\n-        sb.append('{').append(body).append('}');\n-        return addConstructor(sb.toString());\n-    }\n-\n-    public ClassGenerator addConstructor(Constructor<?> c) {\n-        String desc = ReflectUtils.getDesc(c);\n-        addConstructor(\":\" + desc);\n-        if (mCopyConstructors == null) {\n-            mCopyConstructors = new ConcurrentHashMap<String, Constructor<?>>(4);\n-        }\n-        mCopyConstructors.put(desc, c);\n-        return this;\n-    }\n-\n-    public ClassGenerator addDefaultConstructor() {\n-        mDefaultConstructor = true;\n-        return this;\n-    }\n-\n-    public ClassPool getClassPool() {\n-        return mPool;\n-    }\n-\n-    public Class<?> toClass() {\n-        return toClass(ClassUtils.getClassLoader(ClassGenerator.class),\n-                getClass().getProtectionDomain());\n-    }\n-\n-    public Class<?> toClass(ClassLoader loader, ProtectionDomain pd) {\n-        if (mCtc != null) {\n-            mCtc.detach();\n-        }\n-        long id = CLASS_NAME_COUNTER.getAndIncrement();\n-        try {\n-            CtClass ctcs = mSuperClass == null ? null : mPool.get(mSuperClass);\n-            if (mClassName == null) {\n-                mClassName = (mSuperClass == null || javassist.Modifier.isPublic(ctcs.getModifiers())\n-                        ? ClassGenerator.class.getName() : mSuperClass + \"$sc\") + id;\n-            }\n-            mCtc = mPool.makeClass(mClassName);\n-            if (mSuperClass != null) {\n-                mCtc.setSuperclass(ctcs);\n-            }\n-            mCtc.addInterface(mPool.get(DC.class.getName())); // add dynamic class tag.\n-            if (mInterfaces != null) {\n-                for (String cl : mInterfaces) {\n-                    mCtc.addInterface(mPool.get(cl));\n-                }\n-            }\n-            if (mFields != null) {\n-                for (String code : mFields) {\n-                    mCtc.addField(CtField.make(code, mCtc));\n-                }\n-            }\n-            if (mMethods != null) {\n-                for (String code : mMethods) {\n-                    if (code.charAt(0) == ':') {\n-                        mCtc.addMethod(CtNewMethod.copy(getCtMethod(mCopyMethods.get(code.substring(1))),\n-                                code.substring(1, code.indexOf('(')), mCtc, null));\n-                    } else {\n-                        mCtc.addMethod(CtNewMethod.make(code, mCtc));\n-                    }\n-                }\n-            }\n-            if (mDefaultConstructor) {\n-                mCtc.addConstructor(CtNewConstructor.defaultConstructor(mCtc));\n-            }\n-            if (mConstructors != null) {\n-                for (String code : mConstructors) {\n-                    if (code.charAt(0) == ':') {\n-                        mCtc.addConstructor(CtNewConstructor\n-                                .copy(getCtConstructor(mCopyConstructors.get(code.substring(1))), mCtc, null));\n-                    } else {\n-                        String[] sn = mCtc.getSimpleName().split(\"\\\\$+\"); // inner class name include $.\n-                        mCtc.addConstructor(\n-                                CtNewConstructor.make(code.replaceFirst(SIMPLE_NAME_TAG, sn[sn.length - 1]), mCtc));\n-                    }\n-                }\n-            }\n-            return mCtc.toClass(loader, pd);\n-        } catch (RuntimeException e) {\n-            throw e;\n-        } catch (NotFoundException | CannotCompileException e) {\n-            throw new RuntimeException(e.getMessage(), e);\n-        }\n-    }\n-\n-    public void release() {\n-        if (mCtc != null) {\n-            mCtc.detach();\n-        }\n-        if (mInterfaces != null) {\n-            mInterfaces.clear();\n-        }\n-        if (mFields != null) {\n-            mFields.clear();\n-        }\n-        if (mMethods != null) {\n-            mMethods.clear();\n-        }\n-        if (mConstructors != null) {\n-            mConstructors.clear();\n-        }\n-        if (mCopyMethods != null) {\n-            mCopyMethods.clear();\n-        }\n-        if (mCopyConstructors != null) {\n-            mCopyConstructors.clear();\n-        }\n-    }\n-\n-    private CtClass getCtClass(Class<?> c) throws NotFoundException {\n-        return mPool.get(c.getName());\n-    }\n-\n-    private CtMethod getCtMethod(Method m) throws NotFoundException {\n-        return getCtClass(m.getDeclaringClass())\n-                .getMethod(m.getName(), ReflectUtils.getDescWithoutMethodName(m));\n-    }\n-\n-    private CtConstructor getCtConstructor(Constructor<?> c) throws NotFoundException {\n-        return getCtClass(c.getDeclaringClass()).getConstructor(ReflectUtils.getDesc(c));\n-    }\n-\n-    public static interface DC {\n-\n-    } // dynamic class tag interface.\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.bytecode;\r\n+\r\n+import org.apache.dubbo.common.utils.ArrayUtils;\r\n+import org.apache.dubbo.common.utils.ClassUtils;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import javassist.CannotCompileException;\r\n+import javassist.ClassPool;\r\n+import javassist.CtClass;\r\n+import javassist.CtConstructor;\r\n+import javassist.CtField;\r\n+import javassist.CtMethod;\r\n+import javassist.CtNewConstructor;\r\n+import javassist.CtNewMethod;\r\n+import javassist.NotFoundException;\r\n+\r\n+import java.lang.reflect.Constructor;\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Modifier;\r\n+import java.security.ProtectionDomain;\r\n+import java.util.ArrayList;\r\n+import java.util.HashSet;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.atomic.AtomicLong;\r\n+\r\n+/**\r\n+ * ClassGenerator\r\n+ */\r\n+public final class ClassGenerator {\r\n+\r\n+    private static final AtomicLong CLASS_NAME_COUNTER = new AtomicLong(0);\r\n+    private static final String SIMPLE_NAME_TAG = \"<init>\";\r\n+    private static final Map<ClassLoader, ClassPool> POOL_MAP = new ConcurrentHashMap<ClassLoader, ClassPool>(); //ClassLoader - ClassPool\r\n+    private ClassPool mPool;\r\n+    private CtClass mCtc;\r\n+    private String mClassName;\r\n+    private String mSuperClass;\r\n+    private Set<String> mInterfaces;\r\n+    private List<String> mFields;\r\n+    private List<String> mConstructors;\r\n+    private List<String> mMethods;\r\n+    private Map<String, Method> mCopyMethods; // <method desc,method instance>\r\n+    private Map<String, Constructor<?>> mCopyConstructors; // <constructor desc,constructor instance>\r\n+    private boolean mDefaultConstructor = false;\r\n+\r\n+    private ClassGenerator() {\r\n+    }\r\n+\r\n+    private ClassGenerator(ClassPool pool) {\r\n+        mPool = pool;\r\n+    }\r\n+\r\n+    public static ClassGenerator newInstance() {\r\n+        return new ClassGenerator(getClassPool(Thread.currentThread().getContextClassLoader()));\r\n+    }\r\n+\r\n+    public static ClassGenerator newInstance(ClassLoader loader) {\r\n+        return new ClassGenerator(getClassPool(loader));\r\n+    }\r\n+\r\n+    public static boolean isDynamicClass(Class<?> cl) {\r\n+        return ClassGenerator.DC.class.isAssignableFrom(cl);\r\n+    }\r\n+\r\n+    public static ClassPool getClassPool(ClassLoader loader) {\r\n+        if (loader == null) {\r\n+            return ClassPool.getDefault();\r\n+        }\r\n+\r\n+        ClassPool pool = POOL_MAP.get(loader);\r\n+        if (pool == null) {\r\n+            pool = new ClassPool(true);\r\n+            pool.appendClassPath(new CustomizedLoaderClassPath(loader));\r\n+            POOL_MAP.put(loader, pool);\r\n+        }\r\n+        return pool;\r\n+    }\r\n+\r\n+    private static String modifier(int mod) {\r\n+        StringBuilder modifier = new StringBuilder();\r\n+        if (Modifier.isPublic(mod)) {\r\n+            modifier.append(\"public\");\r\n+        } else if (Modifier.isProtected(mod)) {\r\n+            modifier.append(\"protected\");\r\n+        } else if (Modifier.isPrivate(mod)) {\r\n+            modifier.append(\"private\");\r\n+        }\r\n+\r\n+        if (Modifier.isStatic(mod)) {\r\n+            modifier.append(\" static\");\r\n+        }\r\n+        if (Modifier.isVolatile(mod)) {\r\n+            modifier.append(\" volatile\");\r\n+        }\r\n+\r\n+        return modifier.toString();\r\n+    }\r\n+\r\n+    public String getClassName() {\r\n+        return mClassName;\r\n+    }\r\n+\r\n+    public ClassGenerator setClassName(String name) {\r\n+        mClassName = name;\r\n+        return this;\r\n+    }\r\n+\r\n+    public ClassGenerator addInterface(String cn) {\r\n+        if (mInterfaces == null) {\r\n+            mInterfaces = new HashSet<String>();\r\n+        }\r\n+        mInterfaces.add(cn);\r\n+        return this;\r\n+    }\r\n+\r\n+    public ClassGenerator addInterface(Class<?> cl) {\r\n+        return addInterface(cl.getName());\r\n+    }\r\n+\r\n+    public ClassGenerator setSuperClass(String cn) {\r\n+        mSuperClass = cn;\r\n+        return this;\r\n+    }\r\n+\r\n+    public ClassGenerator setSuperClass(Class<?> cl) {\r\n+        mSuperClass = cl.getName();\r\n+        return this;\r\n+    }\r\n+\r\n+    public ClassGenerator addField(String code) {\r\n+        if (mFields == null) {\r\n+            mFields = new ArrayList<String>();\r\n+        }\r\n+        mFields.add(code);\r\n+        return this;\r\n+    }\r\n+\r\n+    public ClassGenerator addField(String name, int mod, Class<?> type) {\r\n+        return addField(name, mod, type, null);\r\n+    }\r\n+\r\n+    public ClassGenerator addField(String name, int mod, Class<?> type, String def) {\r\n+        StringBuilder sb = new StringBuilder();\r\n+        sb.append(modifier(mod)).append(' ').append(ReflectUtils.getName(type)).append(' ');\r\n+        sb.append(name);\r\n+        if (StringUtils.isNotEmpty(def)) {\r\n+            sb.append('=');\r\n+            sb.append(def);\r\n+        }\r\n+        sb.append(';');\r\n+        return addField(sb.toString());\r\n+    }\r\n+\r\n+    public ClassGenerator addMethod(String code) {\r\n+        if (mMethods == null) {\r\n+            mMethods = new ArrayList<String>();\r\n+        }\r\n+        mMethods.add(code);\r\n+        return this;\r\n+    }\r\n+\r\n+    public ClassGenerator addMethod(String name, int mod, Class<?> rt, Class<?>[] pts, String body) {\r\n+        return addMethod(name, mod, rt, pts, null, body);\r\n+    }\r\n+\r\n+    public ClassGenerator addMethod(String name, int mod, Class<?> rt, Class<?>[] pts, Class<?>[] ets,\r\n+                                    String body) {\r\n+        StringBuilder sb = new StringBuilder();\r\n+        sb.append(modifier(mod)).append(' ').append(ReflectUtils.getName(rt)).append(' ').append(name);\r\n+        sb.append('(');\r\n+        for (int i = 0; i < pts.length; i++) {\r\n+            if (i > 0) {\r\n+                sb.append(',');\r\n+            }\r\n+            sb.append(ReflectUtils.getName(pts[i]));\r\n+            sb.append(\" arg\").append(i);\r\n+        }\r\n+        sb.append(')');\r\n+        if (ArrayUtils.isNotEmpty(ets)) {\r\n+            sb.append(\" throws \");\r\n+            for (int i = 0; i < ets.length; i++) {\r\n+                if (i > 0) {\r\n+                    sb.append(',');\r\n+                }\r\n+                sb.append(ReflectUtils.getName(ets[i]));\r\n+            }\r\n+        }\r\n+        sb.append('{').append(body).append('}');\r\n+        return addMethod(sb.toString());\r\n+    }\r\n+\r\n+    public ClassGenerator addMethod(Method m) {\r\n+        addMethod(m.getName(), m);\r\n+        return this;\r\n+    }\r\n+\r\n+    public ClassGenerator addMethod(String name, Method m) {\r\n+        String desc = name + ReflectUtils.getDescWithoutMethodName(m);\r\n+        addMethod(':' + desc);\r\n+        if (mCopyMethods == null) {\r\n+            mCopyMethods = new ConcurrentHashMap<String, Method>(8);\r\n+        }\r\n+        mCopyMethods.put(desc, m);\r\n+        return this;\r\n+    }\r\n+\r\n+    public ClassGenerator addConstructor(String code) {\r\n+        if (mConstructors == null) {\r\n+            mConstructors = new LinkedList<String>();\r\n+        }\r\n+        mConstructors.add(code);\r\n+        return this;\r\n+    }\r\n+\r\n+    public ClassGenerator addConstructor(int mod, Class<?>[] pts, String body) {\r\n+        return addConstructor(mod, pts, null, body);\r\n+    }\r\n+\r\n+    public ClassGenerator addConstructor(int mod, Class<?>[] pts, Class<?>[] ets, String body) {\r\n+        StringBuilder sb = new StringBuilder();\r\n+        sb.append(modifier(mod)).append(' ').append(SIMPLE_NAME_TAG);\r\n+        sb.append('(');\r\n+        for (int i = 0; i < pts.length; i++) {\r\n+            if (i > 0) {\r\n+                sb.append(',');\r\n+            }\r\n+            sb.append(ReflectUtils.getName(pts[i]));\r\n+            sb.append(\" arg\").append(i);\r\n+        }\r\n+        sb.append(')');\r\n+        if (ArrayUtils.isNotEmpty(ets)) {\r\n+            sb.append(\" throws \");\r\n+            for (int i = 0; i < ets.length; i++) {\r\n+                if (i > 0) {\r\n+                    sb.append(',');\r\n+                }\r\n+                sb.append(ReflectUtils.getName(ets[i]));\r\n+            }\r\n+        }\r\n+        sb.append('{').append(body).append('}');\r\n+        return addConstructor(sb.toString());\r\n+    }\r\n+\r\n+    public ClassGenerator addConstructor(Constructor<?> c) {\r\n+        String desc = ReflectUtils.getDesc(c);\r\n+        addConstructor(\":\" + desc);\r\n+        if (mCopyConstructors == null) {\r\n+            mCopyConstructors = new ConcurrentHashMap<String, Constructor<?>>(4);\r\n+        }\r\n+        mCopyConstructors.put(desc, c);\r\n+        return this;\r\n+    }\r\n+\r\n+    public ClassGenerator addDefaultConstructor() {\r\n+        mDefaultConstructor = true;\r\n+        return this;\r\n+    }\r\n+\r\n+    public ClassPool getClassPool() {\r\n+        return mPool;\r\n+    }\r\n+\r\n+    public Class<?> toClass() {\r\n+        return toClass(ClassUtils.getClassLoader(ClassGenerator.class),\r\n+                getClass().getProtectionDomain());\r\n+    }\r\n+\r\n+    public Class<?> toClass(ClassLoader loader, ProtectionDomain pd) {\r\n+        if (mCtc != null) {\r\n+            mCtc.detach();\r\n+        }\r\n+        long id = CLASS_NAME_COUNTER.getAndIncrement();\r\n+        try {\r\n+            CtClass ctcs = mSuperClass == null ? null : mPool.get(mSuperClass);\r\n+            if (mClassName == null) {\r\n+                mClassName = (mSuperClass == null || javassist.Modifier.isPublic(ctcs.getModifiers())\r\n+                        ? ClassGenerator.class.getName() : mSuperClass + \"$sc\") + id;\r\n+            }\r\n+            mCtc = mPool.makeClass(mClassName);\r\n+            if (mSuperClass != null) {\r\n+                mCtc.setSuperclass(ctcs);\r\n+            }\r\n+            mCtc.addInterface(mPool.get(DC.class.getName())); // add dynamic class tag.\r\n+            if (mInterfaces != null) {\r\n+                for (String cl : mInterfaces) {\r\n+                    mCtc.addInterface(mPool.get(cl));\r\n+                }\r\n+            }\r\n+            if (mFields != null) {\r\n+                for (String code : mFields) {\r\n+                    mCtc.addField(CtField.make(code, mCtc));\r\n+                }\r\n+            }\r\n+            if (mMethods != null) {\r\n+                for (String code : mMethods) {\r\n+                    if (code.charAt(0) == ':') {\r\n+                        mCtc.addMethod(CtNewMethod.copy(getCtMethod(mCopyMethods.get(code.substring(1))),\r\n+                                code.substring(1, code.indexOf('(')), mCtc, null));\r\n+                    } else {\r\n+                        mCtc.addMethod(CtNewMethod.make(code, mCtc));\r\n+                    }\r\n+                }\r\n+            }\r\n+            if (mDefaultConstructor) {\r\n+                mCtc.addConstructor(CtNewConstructor.defaultConstructor(mCtc));\r\n+            }\r\n+            if (mConstructors != null) {\r\n+                for (String code : mConstructors) {\r\n+                    if (code.charAt(0) == ':') {\r\n+                        mCtc.addConstructor(CtNewConstructor\r\n+                                .copy(getCtConstructor(mCopyConstructors.get(code.substring(1))), mCtc, null));\r\n+                    } else {\r\n+                        String[] sn = mCtc.getSimpleName().split(\"\\\\$+\"); // inner class name include $.\r\n+                        mCtc.addConstructor(\r\n+                                CtNewConstructor.make(code.replaceFirst(SIMPLE_NAME_TAG, sn[sn.length - 1]), mCtc));\r\n+                    }\r\n+                }\r\n+            }\r\n+            return mCtc.toClass(loader, pd);\r\n+        } catch (RuntimeException e) {\r\n+            throw e;\r\n+        } catch (NotFoundException | CannotCompileException e) {\r\n+            throw new RuntimeException(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    public void release() {\r\n+        if (mCtc != null) {\r\n+            mCtc.detach();\r\n+        }\r\n+        if (mInterfaces != null) {\r\n+            mInterfaces.clear();\r\n+        }\r\n+        if (mFields != null) {\r\n+            mFields.clear();\r\n+        }\r\n+        if (mMethods != null) {\r\n+            mMethods.clear();\r\n+        }\r\n+        if (mConstructors != null) {\r\n+            mConstructors.clear();\r\n+        }\r\n+        if (mCopyMethods != null) {\r\n+            mCopyMethods.clear();\r\n+        }\r\n+        if (mCopyConstructors != null) {\r\n+            mCopyConstructors.clear();\r\n+        }\r\n+    }\r\n+\r\n+    private CtClass getCtClass(Class<?> c) throws NotFoundException {\r\n+        return mPool.get(c.getName());\r\n+    }\r\n+\r\n+    private CtMethod getCtMethod(Method m) throws NotFoundException {\r\n+        return getCtClass(m.getDeclaringClass())\r\n+                .getMethod(m.getName(), ReflectUtils.getDescWithoutMethodName(m));\r\n+    }\r\n+\r\n+    private CtConstructor getCtConstructor(Constructor<?> c) throws NotFoundException {\r\n+        return getCtClass(c.getDeclaringClass()).getConstructor(ReflectUtils.getDesc(c));\r\n+    }\r\n+\r\n+    public static interface DC {\r\n+\r\n+    } // dynamic class tag interface.\r\n }\n"}, {"source1": "org/apache/dubbo/common/bytecode/CustomizedLoaderClassPath.java", "source2": "org/apache/dubbo/common/bytecode/CustomizedLoaderClassPath.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,105 +1,105 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.bytecode;\n-\n-import javassist.ClassPath;\n-\n-import java.io.InputStream;\n-import java.lang.ref.WeakReference;\n-import java.net.URL;\n-\n-/**\n- * A class search-path representing a class loader.\n- *\n- * <p>It is used for obtaining a class file from the given\n- * class loader by <code>getResourceAsStream()</code>.\n- * The <code>LoaderClassPath</code> refers to the class loader through\n- * <code>WeakReference</code>.  If the class loader is garbage collected,\n- * the other search pathes are examined.\n- *\n- * <p>The given class loader must have both <code>getResourceAsStream()</code>\n- * and <code>getResource()</code>.\n- *\n- * @author <a href=\"mailto:bill@jboss.org\">Bill Burke</a>\n- * @author Shigeru Chiba\n- */\n-public class CustomizedLoaderClassPath implements ClassPath {\n-    private WeakReference clref;\n-\n-    /**\n-     * Creates a search path representing a class loader.\n-     */\n-    public CustomizedLoaderClassPath(ClassLoader cl) {\n-        clref = new WeakReference(cl);\n-    }\n-\n-    public String toString() {\n-        Object cl = null;\n-        if (clref != null) {\n-            cl = clref.get();\n-        }\n-\n-        return cl == null ? \"<null>\" : cl.toString();\n-    }\n-\n-    /**\n-     * Obtains a class file from the class loader.\n-     * This method calls <code>getResourceAsStream(String)</code>\n-     * on the class loader.\n-     */\n-    public InputStream openClassfile(String classname) {\n-        String cname = classname.replace('.', '/') + \".class\";\n-        ClassLoader cl = (ClassLoader) clref.get();\n-        if (cl == null) {\n-            return null;        // not found\n-        } else {\n-            InputStream result = cl.getResourceAsStream(cname);\n-            if (result == null && (cl != this.getClass().getClassLoader())) {\n-                return this.getClass().getClassLoader().getResourceAsStream(cname);\n-            }\n-            return result;\n-        }\n-    }\n-\n-    /**\n-     * Obtains the URL of the specified class file.\n-     * This method calls <code>getResource(String)</code>\n-     * on the class loader.\n-     *\n-     * @return null if the class file could not be found.\n-     */\n-    public URL find(String classname) {\n-        String cname = classname.replace('.', '/') + \".class\";\n-        ClassLoader cl = (ClassLoader) clref.get();\n-        if (cl == null) {\n-            return null;        // not found\n-        } else {\n-            URL url = cl.getResource(cname);\n-            if (url == null && (cl != this.getClass().getClassLoader())) {\n-                return this.getClass().getClassLoader().getResource(cname);\n-            }\n-            return url;\n-        }\n-    }\n-\n-    /**\n-     * Closes this class path.\n-     */\n-    public void close() {\n-        clref = null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.bytecode;\r\n+\r\n+import javassist.ClassPath;\r\n+\r\n+import java.io.InputStream;\r\n+import java.lang.ref.WeakReference;\r\n+import java.net.URL;\r\n+\r\n+/**\r\n+ * A class search-path representing a class loader.\r\n+ *\r\n+ * <p>It is used for obtaining a class file from the given\r\n+ * class loader by <code>getResourceAsStream()</code>.\r\n+ * The <code>LoaderClassPath</code> refers to the class loader through\r\n+ * <code>WeakReference</code>.  If the class loader is garbage collected,\r\n+ * the other search pathes are examined.\r\n+ *\r\n+ * <p>The given class loader must have both <code>getResourceAsStream()</code>\r\n+ * and <code>getResource()</code>.\r\n+ *\r\n+ * @author <a href=\"mailto:bill@jboss.org\">Bill Burke</a>\r\n+ * @author Shigeru Chiba\r\n+ */\r\n+public class CustomizedLoaderClassPath implements ClassPath {\r\n+    private WeakReference clref;\r\n+\r\n+    /**\r\n+     * Creates a search path representing a class loader.\r\n+     */\r\n+    public CustomizedLoaderClassPath(ClassLoader cl) {\r\n+        clref = new WeakReference(cl);\r\n+    }\r\n+\r\n+    public String toString() {\r\n+        Object cl = null;\r\n+        if (clref != null) {\r\n+            cl = clref.get();\r\n+        }\r\n+\r\n+        return cl == null ? \"<null>\" : cl.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * Obtains a class file from the class loader.\r\n+     * This method calls <code>getResourceAsStream(String)</code>\r\n+     * on the class loader.\r\n+     */\r\n+    public InputStream openClassfile(String classname) {\r\n+        String cname = classname.replace('.', '/') + \".class\";\r\n+        ClassLoader cl = (ClassLoader) clref.get();\r\n+        if (cl == null) {\r\n+            return null;        // not found\r\n+        } else {\r\n+            InputStream result = cl.getResourceAsStream(cname);\r\n+            if (result == null && (cl != this.getClass().getClassLoader())) {\r\n+                return this.getClass().getClassLoader().getResourceAsStream(cname);\r\n+            }\r\n+            return result;\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Obtains the URL of the specified class file.\r\n+     * This method calls <code>getResource(String)</code>\r\n+     * on the class loader.\r\n+     *\r\n+     * @return null if the class file could not be found.\r\n+     */\r\n+    public URL find(String classname) {\r\n+        String cname = classname.replace('.', '/') + \".class\";\r\n+        ClassLoader cl = (ClassLoader) clref.get();\r\n+        if (cl == null) {\r\n+            return null;        // not found\r\n+        } else {\r\n+            URL url = cl.getResource(cname);\r\n+            if (url == null && (cl != this.getClass().getClassLoader())) {\r\n+                return this.getClass().getClassLoader().getResource(cname);\r\n+            }\r\n+            return url;\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Closes this class path.\r\n+     */\r\n+    public void close() {\r\n+        clref = null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/CompositeConfiguration.java", "source2": "org/apache/dubbo/common/config/CompositeConfiguration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,128 +1,128 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import java.util.Arrays;\n-import java.util.LinkedList;\n-import java.util.List;\n-\n-/**\n- * This is an abstraction specially customized for the sequence Dubbo retrieves properties.\n- */\n-public class CompositeConfiguration implements Configuration {\n-    private Logger logger = LoggerFactory.getLogger(CompositeConfiguration.class);\n-\n-    private String id;\n-    private String prefix;\n-\n-    /**\n-     * List holding all the configuration\n-     */\n-    private List<Configuration> configList = new LinkedList<Configuration>();\n-\n-    //FIXME, consider change configList to SortedMap to replace this boolean status.\n-    private boolean dynamicIncluded;\n-\n-    public CompositeConfiguration() {\n-        this(null, null);\n-    }\n-\n-    public CompositeConfiguration(String prefix, String id) {\n-        if (StringUtils.isNotEmpty(prefix) && !prefix.endsWith(\".\")) {\n-            this.prefix = prefix + \".\";\n-        } else {\n-            this.prefix = prefix;\n-        }\n-        this.id = id;\n-    }\n-\n-    public CompositeConfiguration(Configuration... configurations) {\n-        this();\n-        if (configurations != null && configurations.length > 0) {\n-            Arrays.stream(configurations).filter(config -> !configList.contains(config)).forEach(configList::add);\n-        }\n-    }\n-\n-    public void setDynamicIncluded(boolean dynamicIncluded) {\n-        this.dynamicIncluded = dynamicIncluded;\n-    }\n-\n-    //FIXME, consider change configList to SortedMap to replace this boolean status.\n-    public boolean isDynamicIncluded() {\n-        return dynamicIncluded;\n-    }\n-\n-    public void addConfiguration(Configuration configuration) {\n-        if (configList.contains(configuration)) {\n-            return;\n-        }\n-        this.configList.add(configuration);\n-    }\n-\n-    public void addConfigurationFirst(Configuration configuration) {\n-        this.addConfiguration(0, configuration);\n-    }\n-\n-    public void addConfiguration(int pos, Configuration configuration) {\n-        this.configList.add(pos, configuration);\n-    }\n-\n-    @Override\n-    public Object getInternalProperty(String key) {\n-        Configuration firstMatchingConfiguration = null;\n-        for (Configuration config : configList) {\n-            try {\n-                if (config.containsKey(key)) {\n-                    firstMatchingConfiguration = config;\n-                    break;\n-                }\n-            } catch (Exception e) {\n-                logger.error(\"Error when trying to get value for key \" + key + \" from \" + config + \", will continue to try the next one.\");\n-            }\n-        }\n-        if (firstMatchingConfiguration != null) {\n-            return firstMatchingConfiguration.getProperty(key);\n-        } else {\n-            return null;\n-        }\n-    }\n-\n-    @Override\n-    public boolean containsKey(String key) {\n-        return configList.stream().anyMatch(c -> c.containsKey(key));\n-    }\n-\n-    @Override\n-    public Object getProperty(String key, Object defaultValue) {\n-        Object value = null;\n-        if (StringUtils.isNotEmpty(prefix)) {\n-            if (StringUtils.isNotEmpty(id)) {\n-                value = getInternalProperty(prefix + id + \".\" + key);\n-            }\n-            if (value == null) {\n-                value = getInternalProperty(prefix + key);\n-            }\n-        } else {\n-            value = getInternalProperty(key);\n-        }\n-        return value != null ? value : defaultValue;\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import java.util.Arrays;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * This is an abstraction specially customized for the sequence Dubbo retrieves properties.\r\n+ */\r\n+public class CompositeConfiguration implements Configuration {\r\n+    private Logger logger = LoggerFactory.getLogger(CompositeConfiguration.class);\r\n+\r\n+    private String id;\r\n+    private String prefix;\r\n+\r\n+    /**\r\n+     * List holding all the configuration\r\n+     */\r\n+    private List<Configuration> configList = new LinkedList<Configuration>();\r\n+\r\n+    //FIXME, consider change configList to SortedMap to replace this boolean status.\r\n+    private boolean dynamicIncluded;\r\n+\r\n+    public CompositeConfiguration() {\r\n+        this(null, null);\r\n+    }\r\n+\r\n+    public CompositeConfiguration(String prefix, String id) {\r\n+        if (StringUtils.isNotEmpty(prefix) && !prefix.endsWith(\".\")) {\r\n+            this.prefix = prefix + \".\";\r\n+        } else {\r\n+            this.prefix = prefix;\r\n+        }\r\n+        this.id = id;\r\n+    }\r\n+\r\n+    public CompositeConfiguration(Configuration... configurations) {\r\n+        this();\r\n+        if (configurations != null && configurations.length > 0) {\r\n+            Arrays.stream(configurations).filter(config -> !configList.contains(config)).forEach(configList::add);\r\n+        }\r\n+    }\r\n+\r\n+    public void setDynamicIncluded(boolean dynamicIncluded) {\r\n+        this.dynamicIncluded = dynamicIncluded;\r\n+    }\r\n+\r\n+    //FIXME, consider change configList to SortedMap to replace this boolean status.\r\n+    public boolean isDynamicIncluded() {\r\n+        return dynamicIncluded;\r\n+    }\r\n+\r\n+    public void addConfiguration(Configuration configuration) {\r\n+        if (configList.contains(configuration)) {\r\n+            return;\r\n+        }\r\n+        this.configList.add(configuration);\r\n+    }\r\n+\r\n+    public void addConfigurationFirst(Configuration configuration) {\r\n+        this.addConfiguration(0, configuration);\r\n+    }\r\n+\r\n+    public void addConfiguration(int pos, Configuration configuration) {\r\n+        this.configList.add(pos, configuration);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getInternalProperty(String key) {\r\n+        Configuration firstMatchingConfiguration = null;\r\n+        for (Configuration config : configList) {\r\n+            try {\r\n+                if (config.containsKey(key)) {\r\n+                    firstMatchingConfiguration = config;\r\n+                    break;\r\n+                }\r\n+            } catch (Exception e) {\r\n+                logger.error(\"Error when trying to get value for key \" + key + \" from \" + config + \", will continue to try the next one.\");\r\n+            }\r\n+        }\r\n+        if (firstMatchingConfiguration != null) {\r\n+            return firstMatchingConfiguration.getProperty(key);\r\n+        } else {\r\n+            return null;\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean containsKey(String key) {\r\n+        return configList.stream().anyMatch(c -> c.containsKey(key));\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getProperty(String key, Object defaultValue) {\r\n+        Object value = null;\r\n+        if (StringUtils.isNotEmpty(prefix)) {\r\n+            if (StringUtils.isNotEmpty(id)) {\r\n+                value = getInternalProperty(prefix + id + \".\" + key);\r\n+            }\r\n+            if (value == null) {\r\n+                value = getInternalProperty(prefix + key);\r\n+            }\r\n+        } else {\r\n+            value = getInternalProperty(key);\r\n+        }\r\n+        return value != null ? value : defaultValue;\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/common/config/Configuration.java", "source2": "org/apache/dubbo/common/config/Configuration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,179 +1,179 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config;\n-\n-import java.util.NoSuchElementException;\n-\n-/**\n- * Configuration interface, to fetch the value for the specified key.\n- */\n-public interface Configuration {\n-    /**\n-     * Get a string associated with the given configuration key.\n-     *\n-     * @param key The configuration key.\n-     * @return The associated string.\n-     */\n-    default String getString(String key) {\n-        return convert(String.class, key, null);\n-    }\n-\n-    /**\n-     * Get a string associated with the given configuration key.\n-     * If the key doesn't map to an existing object, the default value\n-     * is returned.\n-     *\n-     * @param key          The configuration key.\n-     * @param defaultValue The default value.\n-     * @return The associated string if key is found and has valid\n-     * format, default value otherwise.\n-     */\n-    default String getString(String key, String defaultValue) {\n-        return convert(String.class, key, defaultValue);\n-    }\n-\n-    default int getInt(String key) {\n-        Integer i = this.getInteger(key, (Integer) null);\n-        if (i != null) {\n-            return i;\n-        } else {\n-            throw new NoSuchElementException('\\'' + key + \"' doesn't map to an existing object\");\n-        }\n-    }\n-\n-    default int getInt(String key, int defaultValue) {\n-        Integer i = this.getInteger(key, (Integer) null);\n-        return i == null ? defaultValue : i;\n-    }\n-\n-    default Integer getInteger(String key, Integer defaultValue) {\n-        try {\n-            return convert(Integer.class, key, defaultValue);\n-        } catch (NumberFormatException e) {\n-            throw new IllegalStateException('\\'' + key + \"' doesn't map to a Integer object\", e);\n-        }\n-    }\n-\n-    default boolean getBoolean(String key) {\n-        Boolean b = this.getBoolean(key, null);\n-        if (b != null) {\n-            return b;\n-        } else {\n-            throw new NoSuchElementException('\\'' + key + \"' doesn't map to an existing object\");\n-        }\n-    }\n-\n-    default boolean getBoolean(String key, boolean defaultValue) {\n-        return this.getBoolean(key, toBooleanObject(defaultValue));\n-    }\n-\n-    default Boolean getBoolean(String key, Boolean defaultValue) {\n-        try {\n-            return convert(Boolean.class, key, defaultValue);\n-        } catch (Exception e) {\n-            throw new IllegalStateException(\"Try to get \" + '\\'' + key + \"' failed, maybe because this key doesn't map to a Boolean object\", e);\n-        }\n-    }\n-\n-    /**\n-     * Gets a property from the configuration. This is the most basic get\n-     * method for retrieving values of properties. In a typical implementation\n-     * of the {@code Configuration} interface the other get methods (that\n-     * return specific data types) will internally make use of this method. On\n-     * this level variable substitution is not yet performed. The returned\n-     * object is an internal representation of the property value for the passed\n-     * in key. It is owned by the {@code Configuration} object. So a caller\n-     * should not modify this object. It cannot be guaranteed that this object\n-     * will stay constant over time (i.e. further update operations on the\n-     * configuration may change its internal state).\n-     *\n-     * @param key property to retrieve\n-     * @return the value to which this configuration maps the specified key, or\n-     * null if the configuration contains no mapping for this key.\n-     */\n-    default Object getProperty(String key) {\n-        return getProperty(key, null);\n-    }\n-\n-    /**\n-     * Gets a property from the configuration. The default value will return if the configuration doesn't contain\n-     * the mapping for the specified key.\n-     *\n-     * @param key property to retrieve\n-     * @param defaultValue default value\n-     * @return the value to which this configuration maps the specified key, or default value if the configuration\n-     * contains no mapping for this key.\n-     */\n-    default Object getProperty(String key, Object defaultValue) {\n-        Object value = getInternalProperty(key);\n-        return value != null ? value : defaultValue;\n-    }\n-\n-    Object getInternalProperty(String key);\n-\n-    /**\n-     * Check if the configuration contains the specified key.\n-     *\n-     * @param key the key whose presence in this configuration is to be tested\n-     * @return {@code true} if the configuration contains a value for this\n-     * key, {@code false} otherwise\n-     */\n-    default boolean containsKey(String key) {\n-        return getProperty(key) != null;\n-    }\n-\n-\n-    default <T> T convert(Class<T> cls, String key, T defaultValue) {\n-        // we only process String properties for now\n-        String value = (String) getProperty(key);\n-\n-        if (value == null) {\n-            return defaultValue;\n-        }\n-\n-        Object obj = value;\n-        if (cls.isInstance(value)) {\n-            return cls.cast(value);\n-        }\n-\n-        if (Boolean.class.equals(cls) || Boolean.TYPE.equals(cls)) {\n-            obj = Boolean.valueOf(value);\n-        } else if (Number.class.isAssignableFrom(cls) || cls.isPrimitive()) {\n-            if (Integer.class.equals(cls) || Integer.TYPE.equals(cls)) {\n-                obj = Integer.valueOf(value);\n-            } else if (Long.class.equals(cls) || Long.TYPE.equals(cls)) {\n-                obj = Long.valueOf(value);\n-            } else if (Byte.class.equals(cls) || Byte.TYPE.equals(cls)) {\n-                obj = Byte.valueOf(value);\n-            } else if (Short.class.equals(cls) || Short.TYPE.equals(cls)) {\n-                obj = Short.valueOf(value);\n-            } else if (Float.class.equals(cls) || Float.TYPE.equals(cls)) {\n-                obj = Float.valueOf(value);\n-            } else if (Double.class.equals(cls) || Double.TYPE.equals(cls)) {\n-                obj = Double.valueOf(value);\n-            }\n-        } else if (cls.isEnum()) {\n-            obj = Enum.valueOf(cls.asSubclass(Enum.class), value);\n-        }\n-\n-        return cls.cast(obj);\n-    }\n-\n-    static Boolean toBooleanObject(boolean bool) {\n-        return bool ? Boolean.TRUE : Boolean.FALSE;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config;\r\n+\r\n+import java.util.NoSuchElementException;\r\n+\r\n+/**\r\n+ * Configuration interface, to fetch the value for the specified key.\r\n+ */\r\n+public interface Configuration {\r\n+    /**\r\n+     * Get a string associated with the given configuration key.\r\n+     *\r\n+     * @param key The configuration key.\r\n+     * @return The associated string.\r\n+     */\r\n+    default String getString(String key) {\r\n+        return convert(String.class, key, null);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get a string associated with the given configuration key.\r\n+     * If the key doesn't map to an existing object, the default value\r\n+     * is returned.\r\n+     *\r\n+     * @param key          The configuration key.\r\n+     * @param defaultValue The default value.\r\n+     * @return The associated string if key is found and has valid\r\n+     * format, default value otherwise.\r\n+     */\r\n+    default String getString(String key, String defaultValue) {\r\n+        return convert(String.class, key, defaultValue);\r\n+    }\r\n+\r\n+    default int getInt(String key) {\r\n+        Integer i = this.getInteger(key, (Integer) null);\r\n+        if (i != null) {\r\n+            return i;\r\n+        } else {\r\n+            throw new NoSuchElementException('\\'' + key + \"' doesn't map to an existing object\");\r\n+        }\r\n+    }\r\n+\r\n+    default int getInt(String key, int defaultValue) {\r\n+        Integer i = this.getInteger(key, (Integer) null);\r\n+        return i == null ? defaultValue : i;\r\n+    }\r\n+\r\n+    default Integer getInteger(String key, Integer defaultValue) {\r\n+        try {\r\n+            return convert(Integer.class, key, defaultValue);\r\n+        } catch (NumberFormatException e) {\r\n+            throw new IllegalStateException('\\'' + key + \"' doesn't map to a Integer object\", e);\r\n+        }\r\n+    }\r\n+\r\n+    default boolean getBoolean(String key) {\r\n+        Boolean b = this.getBoolean(key, null);\r\n+        if (b != null) {\r\n+            return b;\r\n+        } else {\r\n+            throw new NoSuchElementException('\\'' + key + \"' doesn't map to an existing object\");\r\n+        }\r\n+    }\r\n+\r\n+    default boolean getBoolean(String key, boolean defaultValue) {\r\n+        return this.getBoolean(key, toBooleanObject(defaultValue));\r\n+    }\r\n+\r\n+    default Boolean getBoolean(String key, Boolean defaultValue) {\r\n+        try {\r\n+            return convert(Boolean.class, key, defaultValue);\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(\"Try to get \" + '\\'' + key + \"' failed, maybe because this key doesn't map to a Boolean object\", e);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Gets a property from the configuration. This is the most basic get\r\n+     * method for retrieving values of properties. In a typical implementation\r\n+     * of the {@code Configuration} interface the other get methods (that\r\n+     * return specific data types) will internally make use of this method. On\r\n+     * this level variable substitution is not yet performed. The returned\r\n+     * object is an internal representation of the property value for the passed\r\n+     * in key. It is owned by the {@code Configuration} object. So a caller\r\n+     * should not modify this object. It cannot be guaranteed that this object\r\n+     * will stay constant over time (i.e. further update operations on the\r\n+     * configuration may change its internal state).\r\n+     *\r\n+     * @param key property to retrieve\r\n+     * @return the value to which this configuration maps the specified key, or\r\n+     * null if the configuration contains no mapping for this key.\r\n+     */\r\n+    default Object getProperty(String key) {\r\n+        return getProperty(key, null);\r\n+    }\r\n+\r\n+    /**\r\n+     * Gets a property from the configuration. The default value will return if the configuration doesn't contain\r\n+     * the mapping for the specified key.\r\n+     *\r\n+     * @param key property to retrieve\r\n+     * @param defaultValue default value\r\n+     * @return the value to which this configuration maps the specified key, or default value if the configuration\r\n+     * contains no mapping for this key.\r\n+     */\r\n+    default Object getProperty(String key, Object defaultValue) {\r\n+        Object value = getInternalProperty(key);\r\n+        return value != null ? value : defaultValue;\r\n+    }\r\n+\r\n+    Object getInternalProperty(String key);\r\n+\r\n+    /**\r\n+     * Check if the configuration contains the specified key.\r\n+     *\r\n+     * @param key the key whose presence in this configuration is to be tested\r\n+     * @return {@code true} if the configuration contains a value for this\r\n+     * key, {@code false} otherwise\r\n+     */\r\n+    default boolean containsKey(String key) {\r\n+        return getProperty(key) != null;\r\n+    }\r\n+\r\n+\r\n+    default <T> T convert(Class<T> cls, String key, T defaultValue) {\r\n+        // we only process String properties for now\r\n+        String value = (String) getProperty(key);\r\n+\r\n+        if (value == null) {\r\n+            return defaultValue;\r\n+        }\r\n+\r\n+        Object obj = value;\r\n+        if (cls.isInstance(value)) {\r\n+            return cls.cast(value);\r\n+        }\r\n+\r\n+        if (Boolean.class.equals(cls) || Boolean.TYPE.equals(cls)) {\r\n+            obj = Boolean.valueOf(value);\r\n+        } else if (Number.class.isAssignableFrom(cls) || cls.isPrimitive()) {\r\n+            if (Integer.class.equals(cls) || Integer.TYPE.equals(cls)) {\r\n+                obj = Integer.valueOf(value);\r\n+            } else if (Long.class.equals(cls) || Long.TYPE.equals(cls)) {\r\n+                obj = Long.valueOf(value);\r\n+            } else if (Byte.class.equals(cls) || Byte.TYPE.equals(cls)) {\r\n+                obj = Byte.valueOf(value);\r\n+            } else if (Short.class.equals(cls) || Short.TYPE.equals(cls)) {\r\n+                obj = Short.valueOf(value);\r\n+            } else if (Float.class.equals(cls) || Float.TYPE.equals(cls)) {\r\n+                obj = Float.valueOf(value);\r\n+            } else if (Double.class.equals(cls) || Double.TYPE.equals(cls)) {\r\n+                obj = Double.valueOf(value);\r\n+            }\r\n+        } else if (cls.isEnum()) {\r\n+            obj = Enum.valueOf(cls.asSubclass(Enum.class), value);\r\n+        }\r\n+\r\n+        return cls.cast(obj);\r\n+    }\r\n+\r\n+    static Boolean toBooleanObject(boolean bool) {\r\n+        return bool ? Boolean.TRUE : Boolean.FALSE;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/ConfigurationUtils.java", "source2": "org/apache/dubbo/common/config/ConfigurationUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,133 +1,133 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-\n-import java.io.IOException;\n-import java.io.StringReader;\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.Properties;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_SERVER_SHUTDOWN_TIMEOUT;\n-import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_SECONDS_KEY;\n-\n-/**\n- * Utilities for manipulating configurations from different sources\n- */\n-public class ConfigurationUtils {\n-    private static final Logger logger = LoggerFactory.getLogger(ConfigurationUtils.class);\n-\n-    /**\n-     * Used to get properties from the jvm\n-     *\n-     * @return\n-     */\n-    public static Configuration getSystemConfiguration() {\n-        return ApplicationModel.getEnvironment().getSystemConfiguration();\n-    }\n-\n-    /**\n-     * Used to get properties from the os environment\n-     *\n-     * @return\n-     */\n-    public static Configuration getEnvConfiguration() {\n-        return ApplicationModel.getEnvironment().getEnvironmentConfiguration();\n-    }\n-\n-    /**\n-     * Used to get an composite property value.\n-     * <p>\n-     * Also see {@link Environment#getConfiguration()}\n-     *\n-     * @return\n-     */\n-    public static Configuration getGlobalConfiguration() {\n-        return ApplicationModel.getEnvironment().getConfiguration();\n-    }\n-\n-    public static Configuration getDynamicGlobalConfiguration() {\n-        return ApplicationModel.getEnvironment().getDynamicGlobalConfiguration();\n-    }\n-\n-    // FIXME\n-    @SuppressWarnings(\"deprecation\")\n-    public static int getServerShutdownTimeout() {\n-        int timeout = DEFAULT_SERVER_SHUTDOWN_TIMEOUT;\n-        Configuration configuration = getGlobalConfiguration();\n-        String value = StringUtils.trim(configuration.getString(SHUTDOWN_WAIT_KEY));\n-\n-        if (value != null && value.length() > 0) {\n-            try {\n-                timeout = Integer.parseInt(value);\n-            } catch (Exception e) {\n-                // ignore\n-            }\n-        } else {\n-            value = StringUtils.trim(configuration.getString(SHUTDOWN_WAIT_SECONDS_KEY));\n-            if (value != null && value.length() > 0) {\n-                try {\n-                    timeout = Integer.parseInt(value) * 1000;\n-                } catch (Exception e) {\n-                    // ignore\n-                }\n-            }\n-        }\n-        return timeout;\n-    }\n-\n-    public static String getDynamicProperty(String property) {\n-        return getDynamicProperty(property, null);\n-    }\n-\n-    public static String getDynamicProperty(String property, String defaultValue) {\n-        return StringUtils.trim(getDynamicGlobalConfiguration().getString(property, defaultValue));\n-    }\n-\n-    public static String getProperty(String property) {\n-        return getProperty(property, null);\n-    }\n-\n-    public static String getProperty(String property, String defaultValue) {\n-        return StringUtils.trim(getGlobalConfiguration().getString(property, defaultValue));\n-    }\n-\n-    public static int get(String property, int defaultValue) {\n-        return getGlobalConfiguration().getInt(property, defaultValue);\n-    }\n-\n-    public static Map<String, String> parseProperties(String content) throws IOException {\n-        Map<String, String> map = new HashMap<>();\n-        if (StringUtils.isEmpty(content)) {\n-            logger.warn(\"You specified the config center, but there's not even one single config item in it.\");\n-        } else {\n-            Properties properties = new Properties();\n-            properties.load(new StringReader(content));\n-            properties.stringPropertyNames().forEach(\n-                    k -> map.put(k, properties.getProperty(k))\n-            );\n-        }\n-        return map;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.StringReader;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.Properties;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_SERVER_SHUTDOWN_TIMEOUT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_SECONDS_KEY;\r\n+\r\n+/**\r\n+ * Utilities for manipulating configurations from different sources\r\n+ */\r\n+public class ConfigurationUtils {\r\n+    private static final Logger logger = LoggerFactory.getLogger(ConfigurationUtils.class);\r\n+\r\n+    /**\r\n+     * Used to get properties from the jvm\r\n+     *\r\n+     * @return\r\n+     */\r\n+    public static Configuration getSystemConfiguration() {\r\n+        return ApplicationModel.getEnvironment().getSystemConfiguration();\r\n+    }\r\n+\r\n+    /**\r\n+     * Used to get properties from the os environment\r\n+     *\r\n+     * @return\r\n+     */\r\n+    public static Configuration getEnvConfiguration() {\r\n+        return ApplicationModel.getEnvironment().getEnvironmentConfiguration();\r\n+    }\r\n+\r\n+    /**\r\n+     * Used to get an composite property value.\r\n+     * <p>\r\n+     * Also see {@link Environment#getConfiguration()}\r\n+     *\r\n+     * @return\r\n+     */\r\n+    public static Configuration getGlobalConfiguration() {\r\n+        return ApplicationModel.getEnvironment().getConfiguration();\r\n+    }\r\n+\r\n+    public static Configuration getDynamicGlobalConfiguration() {\r\n+        return ApplicationModel.getEnvironment().getDynamicGlobalConfiguration();\r\n+    }\r\n+\r\n+    // FIXME\r\n+    @SuppressWarnings(\"deprecation\")\r\n+    public static int getServerShutdownTimeout() {\r\n+        int timeout = DEFAULT_SERVER_SHUTDOWN_TIMEOUT;\r\n+        Configuration configuration = getGlobalConfiguration();\r\n+        String value = StringUtils.trim(configuration.getString(SHUTDOWN_WAIT_KEY));\r\n+\r\n+        if (value != null && value.length() > 0) {\r\n+            try {\r\n+                timeout = Integer.parseInt(value);\r\n+            } catch (Exception e) {\r\n+                // ignore\r\n+            }\r\n+        } else {\r\n+            value = StringUtils.trim(configuration.getString(SHUTDOWN_WAIT_SECONDS_KEY));\r\n+            if (value != null && value.length() > 0) {\r\n+                try {\r\n+                    timeout = Integer.parseInt(value) * 1000;\r\n+                } catch (Exception e) {\r\n+                    // ignore\r\n+                }\r\n+            }\r\n+        }\r\n+        return timeout;\r\n+    }\r\n+\r\n+    public static String getDynamicProperty(String property) {\r\n+        return getDynamicProperty(property, null);\r\n+    }\r\n+\r\n+    public static String getDynamicProperty(String property, String defaultValue) {\r\n+        return StringUtils.trim(getDynamicGlobalConfiguration().getString(property, defaultValue));\r\n+    }\r\n+\r\n+    public static String getProperty(String property) {\r\n+        return getProperty(property, null);\r\n+    }\r\n+\r\n+    public static String getProperty(String property, String defaultValue) {\r\n+        return StringUtils.trim(getGlobalConfiguration().getString(property, defaultValue));\r\n+    }\r\n+\r\n+    public static int get(String property, int defaultValue) {\r\n+        return getGlobalConfiguration().getInt(property, defaultValue);\r\n+    }\r\n+\r\n+    public static Map<String, String> parseProperties(String content) throws IOException {\r\n+        Map<String, String> map = new HashMap<>();\r\n+        if (StringUtils.isEmpty(content)) {\r\n+            logger.warn(\"You specified the config center, but there's not even one single config item in it.\");\r\n+        } else {\r\n+            Properties properties = new Properties();\r\n+            properties.load(new StringReader(content));\r\n+            properties.stringPropertyNames().forEach(\r\n+                    k -> map.put(k, properties.getProperty(k))\r\n+            );\r\n+        }\r\n+        return map;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/Environment.java", "source2": "org/apache/dubbo/common/config/Environment.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,233 +1,233 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config;\n-\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-import org.apache.dubbo.common.context.FrameworkExt;\n-import org.apache.dubbo.common.context.LifecycleAdapter;\n-import org.apache.dubbo.common.extension.DisableInject;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.config.AbstractConfig;\n-import org.apache.dubbo.config.ConfigCenterConfig;\n-import org.apache.dubbo.config.context.ConfigConfigurationAdapter;\n-import org.apache.dubbo.config.context.ConfigManager;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-\n-import java.util.Collection;\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.Optional;\n-\n-public class Environment extends LifecycleAdapter implements FrameworkExt {\n-    private static final Logger logger = LoggerFactory.getLogger(Environment.class);\n-    public static final String NAME = \"environment\";\n-\n-    private final PropertiesConfiguration propertiesConfiguration;\n-    private final SystemConfiguration systemConfiguration;\n-    private final EnvironmentConfiguration environmentConfiguration;\n-    private final InmemoryConfiguration externalConfiguration;\n-    private final InmemoryConfiguration appExternalConfiguration;\n-\n-    private CompositeConfiguration globalConfiguration;\n-    private CompositeConfiguration dynamicGlobalConfiguration;\n-\n-\n-    private Map<String, String> externalConfigurationMap = new HashMap<>();\n-    private Map<String, String> appExternalConfigurationMap = new HashMap<>();\n-\n-    private boolean configCenterFirst = true;\n-\n-    private DynamicConfiguration dynamicConfiguration;\n-\n-    public Environment() {\n-        this.propertiesConfiguration = new PropertiesConfiguration();\n-        this.systemConfiguration = new SystemConfiguration();\n-        this.environmentConfiguration = new EnvironmentConfiguration();\n-        this.externalConfiguration = new InmemoryConfiguration();\n-        this.appExternalConfiguration = new InmemoryConfiguration();\n-    }\n-\n-    @Override\n-    public void initialize() throws IllegalStateException {\n-        ConfigManager configManager = ApplicationModel.getConfigManager();\n-        Optional<Collection<ConfigCenterConfig>> defaultConfigs = configManager.getDefaultConfigCenter();\n-        defaultConfigs.ifPresent(configs -> {\n-            for (ConfigCenterConfig config : configs) {\n-                this.setExternalConfigMap(config.getExternalConfiguration());\n-                this.setAppExternalConfigMap(config.getAppExternalConfiguration());\n-            }\n-        });\n-\n-        this.externalConfiguration.setProperties(externalConfigurationMap);\n-        this.appExternalConfiguration.setProperties(appExternalConfigurationMap);\n-    }\n-\n-    @DisableInject\n-    public void setExternalConfigMap(Map<String, String> externalConfiguration) {\n-        if (externalConfiguration != null) {\n-            this.externalConfigurationMap = externalConfiguration;\n-        }\n-    }\n-\n-    @DisableInject\n-    public void setAppExternalConfigMap(Map<String, String> appExternalConfiguration) {\n-        if (appExternalConfiguration != null) {\n-            this.appExternalConfigurationMap = appExternalConfiguration;\n-        }\n-    }\n-\n-    public Map<String, String> getExternalConfigurationMap() {\n-        return externalConfigurationMap;\n-    }\n-\n-    public Map<String, String> getAppExternalConfigurationMap() {\n-        return appExternalConfigurationMap;\n-    }\n-\n-    public void updateExternalConfigurationMap(Map<String, String> externalMap) {\n-        this.externalConfigurationMap.putAll(externalMap);\n-    }\n-\n-    public void updateAppExternalConfigurationMap(Map<String, String> externalMap) {\n-        this.appExternalConfigurationMap.putAll(externalMap);\n-    }\n-\n-    /**\n-     * At start-up, Dubbo is driven by various configuration, such as Application, Registry, Protocol, etc.\n-     * All configurations will be converged into a data bus - URL, and then drive the subsequent process.\n-     * <p>\n-     * At present, there are many configuration sources, including AbstractConfig (API, XML, annotation), - D, config center, etc.\n-     * This method helps us to filter out the most priority values from various configuration sources.\n-     *\n-     * @param config\n-     * @return\n-     */\n-    public synchronized CompositeConfiguration getPrefixedConfiguration(AbstractConfig config) {\n-        CompositeConfiguration prefixedConfiguration = new CompositeConfiguration(config.getPrefix(), config.getId());\n-        Configuration configuration = new ConfigConfigurationAdapter(config);\n-        if (this.isConfigCenterFirst()) {\n-            // The sequence would be: SystemConfiguration -> AppExternalConfiguration -> ExternalConfiguration -> AbstractConfig -> PropertiesConfiguration\n-            // Config center has the highest priority\n-            prefixedConfiguration.addConfiguration(systemConfiguration);\n-            prefixedConfiguration.addConfiguration(environmentConfiguration);\n-            prefixedConfiguration.addConfiguration(appExternalConfiguration);\n-            prefixedConfiguration.addConfiguration(externalConfiguration);\n-            prefixedConfiguration.addConfiguration(configuration);\n-            prefixedConfiguration.addConfiguration(propertiesConfiguration);\n-        } else {\n-            // The sequence would be: SystemConfiguration -> AbstractConfig -> AppExternalConfiguration -> ExternalConfiguration -> PropertiesConfiguration\n-            // Config center has the highest priority\n-            prefixedConfiguration.addConfiguration(systemConfiguration);\n-            prefixedConfiguration.addConfiguration(environmentConfiguration);\n-            prefixedConfiguration.addConfiguration(configuration);\n-            prefixedConfiguration.addConfiguration(appExternalConfiguration);\n-            prefixedConfiguration.addConfiguration(externalConfiguration);\n-            prefixedConfiguration.addConfiguration(propertiesConfiguration);\n-        }\n-        return prefixedConfiguration;\n-    }\n-\n-    /**\n-     * There are two ways to get configuration during exposure / reference or at runtime:\n-     * 1. URL, The value in the URL is relatively fixed. we can get value directly.\n-     * 2. The configuration exposed in this method is convenient for us to query the latest values from multiple\n-     * prioritized sources, it also guarantees that configs changed dynamically can take effect on the fly.\n-     */\n-    public Configuration getConfiguration() {\n-        if (globalConfiguration == null) {\n-            globalConfiguration = new CompositeConfiguration();\n-            globalConfiguration.addConfiguration(systemConfiguration);\n-            globalConfiguration.addConfiguration(environmentConfiguration);\n-            globalConfiguration.addConfiguration(appExternalConfiguration);\n-            globalConfiguration.addConfiguration(externalConfiguration);\n-            globalConfiguration.addConfiguration(propertiesConfiguration);\n-        }\n-        return globalConfiguration;\n-    }\n-\n-    public Configuration getDynamicGlobalConfiguration() {\n-        if (dynamicGlobalConfiguration == null) {\n-            if (dynamicConfiguration == null) {\n-                if (logger.isWarnEnabled()) {\n-                    logger.warn(\"dynamicConfiguration is null , return globalConfiguration.\");\n-                }\n-                return globalConfiguration;\n-            }\n-            dynamicGlobalConfiguration = new CompositeConfiguration();\n-            dynamicGlobalConfiguration.addConfiguration(dynamicConfiguration);\n-            dynamicGlobalConfiguration.addConfiguration(getConfiguration());\n-        }\n-        return dynamicGlobalConfiguration;\n-    }\n-\n-    public boolean isConfigCenterFirst() {\n-        return configCenterFirst;\n-    }\n-\n-    @DisableInject\n-    public void setConfigCenterFirst(boolean configCenterFirst) {\n-        this.configCenterFirst = configCenterFirst;\n-    }\n-\n-    public Optional<DynamicConfiguration> getDynamicConfiguration() {\n-        return Optional.ofNullable(dynamicConfiguration);\n-    }\n-\n-    @DisableInject\n-    public void setDynamicConfiguration(DynamicConfiguration dynamicConfiguration) {\n-        this.dynamicConfiguration = dynamicConfiguration;\n-    }\n-\n-    @Override\n-    public void destroy() throws IllegalStateException {\n-        clearExternalConfigs();\n-        clearAppExternalConfigs();\n-    }\n-\n-    public PropertiesConfiguration getPropertiesConfiguration() {\n-        return propertiesConfiguration;\n-    }\n-\n-    public SystemConfiguration getSystemConfiguration() {\n-        return systemConfiguration;\n-    }\n-\n-    public EnvironmentConfiguration getEnvironmentConfiguration() {\n-        return environmentConfiguration;\n-    }\n-\n-    public InmemoryConfiguration getExternalConfiguration() {\n-        return externalConfiguration;\n-    }\n-\n-    public InmemoryConfiguration getAppExternalConfiguration() {\n-        return appExternalConfiguration;\n-    }\n-\n-    // For test\n-    public void clearExternalConfigs() {\n-        this.externalConfiguration.clear();\n-        this.externalConfigurationMap.clear();\n-    }\n-\n-    // For test\n-    public void clearAppExternalConfigs() {\n-        this.appExternalConfiguration.clear();\n-        this.appExternalConfigurationMap.clear();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config;\r\n+\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+import org.apache.dubbo.common.context.FrameworkExt;\r\n+import org.apache.dubbo.common.context.LifecycleAdapter;\r\n+import org.apache.dubbo.common.extension.DisableInject;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.config.AbstractConfig;\r\n+import org.apache.dubbo.config.ConfigCenterConfig;\r\n+import org.apache.dubbo.config.context.ConfigConfigurationAdapter;\r\n+import org.apache.dubbo.config.context.ConfigManager;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.Optional;\r\n+\r\n+public class Environment extends LifecycleAdapter implements FrameworkExt {\r\n+    private static final Logger logger = LoggerFactory.getLogger(Environment.class);\r\n+    public static final String NAME = \"environment\";\r\n+\r\n+    private final PropertiesConfiguration propertiesConfiguration;\r\n+    private final SystemConfiguration systemConfiguration;\r\n+    private final EnvironmentConfiguration environmentConfiguration;\r\n+    private final InmemoryConfiguration externalConfiguration;\r\n+    private final InmemoryConfiguration appExternalConfiguration;\r\n+\r\n+    private CompositeConfiguration globalConfiguration;\r\n+    private CompositeConfiguration dynamicGlobalConfiguration;\r\n+\r\n+\r\n+    private Map<String, String> externalConfigurationMap = new HashMap<>();\r\n+    private Map<String, String> appExternalConfigurationMap = new HashMap<>();\r\n+\r\n+    private boolean configCenterFirst = true;\r\n+\r\n+    private DynamicConfiguration dynamicConfiguration;\r\n+\r\n+    public Environment() {\r\n+        this.propertiesConfiguration = new PropertiesConfiguration();\r\n+        this.systemConfiguration = new SystemConfiguration();\r\n+        this.environmentConfiguration = new EnvironmentConfiguration();\r\n+        this.externalConfiguration = new InmemoryConfiguration();\r\n+        this.appExternalConfiguration = new InmemoryConfiguration();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void initialize() throws IllegalStateException {\r\n+        ConfigManager configManager = ApplicationModel.getConfigManager();\r\n+        Optional<Collection<ConfigCenterConfig>> defaultConfigs = configManager.getDefaultConfigCenter();\r\n+        defaultConfigs.ifPresent(configs -> {\r\n+            for (ConfigCenterConfig config : configs) {\r\n+                this.setExternalConfigMap(config.getExternalConfiguration());\r\n+                this.setAppExternalConfigMap(config.getAppExternalConfiguration());\r\n+            }\r\n+        });\r\n+\r\n+        this.externalConfiguration.setProperties(externalConfigurationMap);\r\n+        this.appExternalConfiguration.setProperties(appExternalConfigurationMap);\r\n+    }\r\n+\r\n+    @DisableInject\r\n+    public void setExternalConfigMap(Map<String, String> externalConfiguration) {\r\n+        if (externalConfiguration != null) {\r\n+            this.externalConfigurationMap = externalConfiguration;\r\n+        }\r\n+    }\r\n+\r\n+    @DisableInject\r\n+    public void setAppExternalConfigMap(Map<String, String> appExternalConfiguration) {\r\n+        if (appExternalConfiguration != null) {\r\n+            this.appExternalConfigurationMap = appExternalConfiguration;\r\n+        }\r\n+    }\r\n+\r\n+    public Map<String, String> getExternalConfigurationMap() {\r\n+        return externalConfigurationMap;\r\n+    }\r\n+\r\n+    public Map<String, String> getAppExternalConfigurationMap() {\r\n+        return appExternalConfigurationMap;\r\n+    }\r\n+\r\n+    public void updateExternalConfigurationMap(Map<String, String> externalMap) {\r\n+        this.externalConfigurationMap.putAll(externalMap);\r\n+    }\r\n+\r\n+    public void updateAppExternalConfigurationMap(Map<String, String> externalMap) {\r\n+        this.appExternalConfigurationMap.putAll(externalMap);\r\n+    }\r\n+\r\n+    /**\r\n+     * At start-up, Dubbo is driven by various configuration, such as Application, Registry, Protocol, etc.\r\n+     * All configurations will be converged into a data bus - URL, and then drive the subsequent process.\r\n+     * <p>\r\n+     * At present, there are many configuration sources, including AbstractConfig (API, XML, annotation), - D, config center, etc.\r\n+     * This method helps us to filter out the most priority values from various configuration sources.\r\n+     *\r\n+     * @param config\r\n+     * @return\r\n+     */\r\n+    public synchronized CompositeConfiguration getPrefixedConfiguration(AbstractConfig config) {\r\n+        CompositeConfiguration prefixedConfiguration = new CompositeConfiguration(config.getPrefix(), config.getId());\r\n+        Configuration configuration = new ConfigConfigurationAdapter(config);\r\n+        if (this.isConfigCenterFirst()) {\r\n+            // The sequence would be: SystemConfiguration -> AppExternalConfiguration -> ExternalConfiguration -> AbstractConfig -> PropertiesConfiguration\r\n+            // Config center has the highest priority\r\n+            prefixedConfiguration.addConfiguration(systemConfiguration);\r\n+            prefixedConfiguration.addConfiguration(environmentConfiguration);\r\n+            prefixedConfiguration.addConfiguration(appExternalConfiguration);\r\n+            prefixedConfiguration.addConfiguration(externalConfiguration);\r\n+            prefixedConfiguration.addConfiguration(configuration);\r\n+            prefixedConfiguration.addConfiguration(propertiesConfiguration);\r\n+        } else {\r\n+            // The sequence would be: SystemConfiguration -> AbstractConfig -> AppExternalConfiguration -> ExternalConfiguration -> PropertiesConfiguration\r\n+            // Config center has the highest priority\r\n+            prefixedConfiguration.addConfiguration(systemConfiguration);\r\n+            prefixedConfiguration.addConfiguration(environmentConfiguration);\r\n+            prefixedConfiguration.addConfiguration(configuration);\r\n+            prefixedConfiguration.addConfiguration(appExternalConfiguration);\r\n+            prefixedConfiguration.addConfiguration(externalConfiguration);\r\n+            prefixedConfiguration.addConfiguration(propertiesConfiguration);\r\n+        }\r\n+        return prefixedConfiguration;\r\n+    }\r\n+\r\n+    /**\r\n+     * There are two ways to get configuration during exposure / reference or at runtime:\r\n+     * 1. URL, The value in the URL is relatively fixed. we can get value directly.\r\n+     * 2. The configuration exposed in this method is convenient for us to query the latest values from multiple\r\n+     * prioritized sources, it also guarantees that configs changed dynamically can take effect on the fly.\r\n+     */\r\n+    public Configuration getConfiguration() {\r\n+        if (globalConfiguration == null) {\r\n+            globalConfiguration = new CompositeConfiguration();\r\n+            globalConfiguration.addConfiguration(systemConfiguration);\r\n+            globalConfiguration.addConfiguration(environmentConfiguration);\r\n+            globalConfiguration.addConfiguration(appExternalConfiguration);\r\n+            globalConfiguration.addConfiguration(externalConfiguration);\r\n+            globalConfiguration.addConfiguration(propertiesConfiguration);\r\n+        }\r\n+        return globalConfiguration;\r\n+    }\r\n+\r\n+    public Configuration getDynamicGlobalConfiguration() {\r\n+        if (dynamicGlobalConfiguration == null) {\r\n+            if (dynamicConfiguration == null) {\r\n+                if (logger.isWarnEnabled()) {\r\n+                    logger.warn(\"dynamicConfiguration is null , return globalConfiguration.\");\r\n+                }\r\n+                return globalConfiguration;\r\n+            }\r\n+            dynamicGlobalConfiguration = new CompositeConfiguration();\r\n+            dynamicGlobalConfiguration.addConfiguration(dynamicConfiguration);\r\n+            dynamicGlobalConfiguration.addConfiguration(getConfiguration());\r\n+        }\r\n+        return dynamicGlobalConfiguration;\r\n+    }\r\n+\r\n+    public boolean isConfigCenterFirst() {\r\n+        return configCenterFirst;\r\n+    }\r\n+\r\n+    @DisableInject\r\n+    public void setConfigCenterFirst(boolean configCenterFirst) {\r\n+        this.configCenterFirst = configCenterFirst;\r\n+    }\r\n+\r\n+    public Optional<DynamicConfiguration> getDynamicConfiguration() {\r\n+        return Optional.ofNullable(dynamicConfiguration);\r\n+    }\r\n+\r\n+    @DisableInject\r\n+    public void setDynamicConfiguration(DynamicConfiguration dynamicConfiguration) {\r\n+        this.dynamicConfiguration = dynamicConfiguration;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() throws IllegalStateException {\r\n+        clearExternalConfigs();\r\n+        clearAppExternalConfigs();\r\n+    }\r\n+\r\n+    public PropertiesConfiguration getPropertiesConfiguration() {\r\n+        return propertiesConfiguration;\r\n+    }\r\n+\r\n+    public SystemConfiguration getSystemConfiguration() {\r\n+        return systemConfiguration;\r\n+    }\r\n+\r\n+    public EnvironmentConfiguration getEnvironmentConfiguration() {\r\n+        return environmentConfiguration;\r\n+    }\r\n+\r\n+    public InmemoryConfiguration getExternalConfiguration() {\r\n+        return externalConfiguration;\r\n+    }\r\n+\r\n+    public InmemoryConfiguration getAppExternalConfiguration() {\r\n+        return appExternalConfiguration;\r\n+    }\r\n+\r\n+    // For test\r\n+    public void clearExternalConfigs() {\r\n+        this.externalConfiguration.clear();\r\n+        this.externalConfigurationMap.clear();\r\n+    }\r\n+\r\n+    // For test\r\n+    public void clearAppExternalConfigs() {\r\n+        this.appExternalConfiguration.clear();\r\n+        this.appExternalConfigurationMap.clear();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/EnvironmentConfiguration.java", "source2": "org/apache/dubbo/common/config/EnvironmentConfiguration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,35 +1,35 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-/**\n- * Configuration from system environment\n- */\n-public class EnvironmentConfiguration implements Configuration {\n-\n-    @Override\n-    public Object getInternalProperty(String key) {\n-        String value = System.getenv(key);\n-        if (StringUtils.isEmpty(value)) {\n-            value = System.getenv(StringUtils.toOSStyleKey(key));\n-        }\n-        return value;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+/**\r\n+ * Configuration from system environment\r\n+ */\r\n+public class EnvironmentConfiguration implements Configuration {\r\n+\r\n+    @Override\r\n+    public Object getInternalProperty(String key) {\r\n+        String value = System.getenv(key);\r\n+        if (StringUtils.isEmpty(value)) {\r\n+            value = System.getenv(StringUtils.toOSStyleKey(key));\r\n+        }\r\n+        return value;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/InmemoryConfiguration.java", "source2": "org/apache/dubbo/common/config/InmemoryConfiguration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,64 +1,64 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config;\n-\n-import java.util.LinkedHashMap;\n-import java.util.Map;\n-\n-/**\n- * In-memory configuration\n- */\n-public class InmemoryConfiguration implements Configuration {\n-\n-    // stores the configuration key-value pairs\n-    private Map<String, String> store = new LinkedHashMap<>();\n-\n-    @Override\n-    public Object getInternalProperty(String key) {\n-        return store.get(key);\n-    }\n-\n-    /**\n-     * Add one property into the store, the previous value will be replaced if the key exists\n-     */\n-    public void addProperty(String key, String value) {\n-        store.put(key, value);\n-    }\n-\n-    /**\n-     * Add a set of properties into the store\n-     */\n-    public void addProperties(Map<String, String> properties) {\n-        if (properties != null) {\n-            this.store.putAll(properties);\n-        }\n-    }\n-\n-    /**\n-     * set store\n-     */\n-    public void setProperties(Map<String, String> properties) {\n-        if (properties != null) {\n-            this.store = properties;\n-        }\n-    }\n-\n-    // for unit test\n-    public void clear() {\n-        this.store.clear();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config;\r\n+\r\n+import java.util.LinkedHashMap;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * In-memory configuration\r\n+ */\r\n+public class InmemoryConfiguration implements Configuration {\r\n+\r\n+    // stores the configuration key-value pairs\r\n+    private Map<String, String> store = new LinkedHashMap<>();\r\n+\r\n+    @Override\r\n+    public Object getInternalProperty(String key) {\r\n+        return store.get(key);\r\n+    }\r\n+\r\n+    /**\r\n+     * Add one property into the store, the previous value will be replaced if the key exists\r\n+     */\r\n+    public void addProperty(String key, String value) {\r\n+        store.put(key, value);\r\n+    }\r\n+\r\n+    /**\r\n+     * Add a set of properties into the store\r\n+     */\r\n+    public void addProperties(Map<String, String> properties) {\r\n+        if (properties != null) {\r\n+            this.store.putAll(properties);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * set store\r\n+     */\r\n+    public void setProperties(Map<String, String> properties) {\r\n+        if (properties != null) {\r\n+            this.store = properties;\r\n+        }\r\n+    }\r\n+\r\n+    // for unit test\r\n+    public void clear() {\r\n+        this.store.clear();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/OrderedPropertiesProvider.java", "source2": "org/apache/dubbo/common/config/OrderedPropertiesProvider.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,44 +1,44 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config;\n-\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-import java.util.Properties;\n-\n-/**\n- * \n- * The smaller value, the higher priority\n- * \n- */\n-@SPI\n-public interface OrderedPropertiesProvider {\n-    /**\n-     * order\n-     *\n-     * @return\n-     */\n-    int priority();\n-\n-    /**\n-     * load the properties\n-     *\n-     * @return\n-     */\n-    Properties initProperties();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config;\r\n+\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+import java.util.Properties;\r\n+\r\n+/**\r\n+ * \r\n+ * The smaller value, the higher priority\r\n+ * \r\n+ */\r\n+@SPI\r\n+public interface OrderedPropertiesProvider {\r\n+    /**\r\n+     * order\r\n+     *\r\n+     * @return\r\n+     */\r\n+    int priority();\r\n+\r\n+    /**\r\n+     * load the properties\r\n+     *\r\n+     * @return\r\n+     */\r\n+    Properties initProperties();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/PropertiesConfiguration.java", "source2": "org/apache/dubbo/common/config/PropertiesConfiguration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,64 +1,64 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config;\n-\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.utils.ConfigUtils;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-import java.util.Properties;\n-import java.util.Set;\n-\n-/**\n- * Configuration from system properties and dubbo.properties\n- */\n-public class PropertiesConfiguration implements Configuration {\n-\n-    public PropertiesConfiguration() {\n-        ExtensionLoader<OrderedPropertiesProvider> propertiesProviderExtensionLoader = ExtensionLoader.getExtensionLoader(OrderedPropertiesProvider.class);\n-        Set<String> propertiesProviderNames = propertiesProviderExtensionLoader.getSupportedExtensions();\n-        if (propertiesProviderNames == null || propertiesProviderNames.isEmpty()) {\n-            return;\n-        }\n-        List<OrderedPropertiesProvider> orderedPropertiesProviders = new ArrayList<>();\n-        for (String propertiesProviderName : propertiesProviderNames) {\n-            orderedPropertiesProviders.add(propertiesProviderExtensionLoader.getExtension(propertiesProviderName));\n-        }\n-\n-        //order the propertiesProvider according the priority descending\n-        orderedPropertiesProviders.sort((OrderedPropertiesProvider a, OrderedPropertiesProvider b) -> {\n-            return b.priority() - a.priority();\n-        });\n-\n-        //load the default properties\n-        Properties properties = ConfigUtils.getProperties();\n-\n-        //override the properties.\n-        for (OrderedPropertiesProvider orderedPropertiesProvider :\n-                orderedPropertiesProviders) {\n-            properties.putAll(orderedPropertiesProvider.initProperties());\n-        }\n-\n-        ConfigUtils.setProperties(properties);\n-    }\n-\n-    @Override\n-    public Object getInternalProperty(String key) {\n-        return ConfigUtils.getProperty(key);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config;\r\n+\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.utils.ConfigUtils;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+import java.util.Properties;\r\n+import java.util.Set;\r\n+\r\n+/**\r\n+ * Configuration from system properties and dubbo.properties\r\n+ */\r\n+public class PropertiesConfiguration implements Configuration {\r\n+\r\n+    public PropertiesConfiguration() {\r\n+        ExtensionLoader<OrderedPropertiesProvider> propertiesProviderExtensionLoader = ExtensionLoader.getExtensionLoader(OrderedPropertiesProvider.class);\r\n+        Set<String> propertiesProviderNames = propertiesProviderExtensionLoader.getSupportedExtensions();\r\n+        if (propertiesProviderNames == null || propertiesProviderNames.isEmpty()) {\r\n+            return;\r\n+        }\r\n+        List<OrderedPropertiesProvider> orderedPropertiesProviders = new ArrayList<>();\r\n+        for (String propertiesProviderName : propertiesProviderNames) {\r\n+            orderedPropertiesProviders.add(propertiesProviderExtensionLoader.getExtension(propertiesProviderName));\r\n+        }\r\n+\r\n+        //order the propertiesProvider according the priority descending\r\n+        orderedPropertiesProviders.sort((OrderedPropertiesProvider a, OrderedPropertiesProvider b) -> {\r\n+            return b.priority() - a.priority();\r\n+        });\r\n+\r\n+        //load the default properties\r\n+        Properties properties = ConfigUtils.getProperties();\r\n+\r\n+        //override the properties.\r\n+        for (OrderedPropertiesProvider orderedPropertiesProvider :\r\n+                orderedPropertiesProviders) {\r\n+            properties.putAll(orderedPropertiesProvider.initProperties());\r\n+        }\r\n+\r\n+        ConfigUtils.setProperties(properties);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getInternalProperty(String key) {\r\n+        return ConfigUtils.getProperty(key);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/SystemConfiguration.java", "source2": "org/apache/dubbo/common/config/SystemConfiguration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config;\n-\n-\n-/**\n- * FIXME: is this really necessary? PropertiesConfiguration should have already covered this:\n- *\n- * @See ConfigUtils#getProperty(String)\n- * @see PropertiesConfiguration\n- */\n-public class SystemConfiguration implements Configuration {\n-\n-    @Override\n-    public Object getInternalProperty(String key) {\n-        return System.getProperty(key);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config;\r\n+\r\n+\r\n+/**\r\n+ * FIXME: is this really necessary? PropertiesConfiguration should have already covered this:\r\n+ *\r\n+ * @See ConfigUtils#getProperty(String)\r\n+ * @see PropertiesConfiguration\r\n+ */\r\n+public class SystemConfiguration implements Configuration {\r\n+\r\n+    @Override\r\n+    public Object getInternalProperty(String key) {\r\n+        return System.getProperty(key);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/configcenter/AbstractDynamicConfiguration.java", "source2": "org/apache/dubbo/common/config/configcenter/AbstractDynamicConfiguration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,306 +1,306 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config.configcenter;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.NamedThreadFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import java.util.concurrent.Callable;\n-import java.util.concurrent.Future;\n-import java.util.concurrent.LinkedBlockingQueue;\n-import java.util.concurrent.ThreadPoolExecutor;\n-import java.util.concurrent.TimeUnit;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-\n-/**\n- * The abstract implementation of {@link DynamicConfiguration}\n- *\n- * @since 2.7.5\n- */\n-public abstract class AbstractDynamicConfiguration implements DynamicConfiguration {\n-\n-    public static final String PARAM_NAME_PREFIX = \"dubbo.config-center.\";\n-\n-    public static final String THREAD_POOL_PREFIX_PARAM_NAME = PARAM_NAME_PREFIX + \"thread-pool.prefix\";\n-\n-    public static final String DEFAULT_THREAD_POOL_PREFIX = PARAM_NAME_PREFIX + \"workers\";\n-\n-    public static final String THREAD_POOL_SIZE_PARAM_NAME = PARAM_NAME_PREFIX + \"thread-pool.size\";\n-\n-    /**\n-     * The keep alive time in milliseconds for threads in {@link ThreadPoolExecutor}\n-     */\n-    public static final String THREAD_POOL_KEEP_ALIVE_TIME_PARAM_NAME = PARAM_NAME_PREFIX + \"thread-pool.keep-alive-time\";\n-\n-    /**\n-     * The parameter name of group for config-center\n-     *\n-     * @since 2.7.8\n-     */\n-    public static final String GROUP_PARAM_NAME = PARAM_NAME_PREFIX + GROUP_KEY;\n-\n-    /**\n-     * The parameter name of timeout for config-center\n-     *\n-     * @since 2.7.8\n-     */\n-    public static final String TIMEOUT_PARAM_NAME = PARAM_NAME_PREFIX + TIMEOUT_KEY;\n-\n-    public static final int DEFAULT_THREAD_POOL_SIZE = 1;\n-\n-    /**\n-     * Default keep alive time in milliseconds for threads in {@link ThreadPoolExecutor} is 1 minute( 60 * 1000 ms)\n-     */\n-    public static final long DEFAULT_THREAD_POOL_KEEP_ALIVE_TIME = TimeUnit.MINUTES.toMillis(1);\n-\n-    /**\n-     * Logger\n-     */\n-    protected final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    /**\n-     * The thread pool for workers who executes the tasks\n-     */\n-    private final ThreadPoolExecutor workersThreadPool;\n-\n-    private final String group;\n-\n-    private final long timeout;\n-\n-    public AbstractDynamicConfiguration(URL url) {\n-        this(getThreadPoolPrefixName(url), getThreadPoolSize(url), getThreadPoolKeepAliveTime(url), getGroup(url),\n-                getTimeout(url));\n-    }\n-\n-    public AbstractDynamicConfiguration(String threadPoolPrefixName,\n-                                        int threadPoolSize,\n-                                        long keepAliveTime,\n-                                        String group,\n-                                        long timeout) {\n-        this.workersThreadPool = initWorkersThreadPool(threadPoolPrefixName, threadPoolSize, keepAliveTime);\n-        this.group = group;\n-        this.timeout = timeout;\n-    }\n-\n-    @Override\n-    public void addListener(String key, String group, ConfigurationListener listener) {\n-    }\n-\n-    @Override\n-    public void removeListener(String key, String group, ConfigurationListener listener) {\n-    }\n-\n-    @Override\n-    public final String getConfig(String key, String group, long timeout) throws IllegalStateException {\n-        return execute(() -> doGetConfig(key, group), timeout);\n-    }\n-\n-    @Override\n-    public Object getInternalProperty(String key) {\n-        return null;\n-    }\n-\n-    @Override\n-    public final void close() throws Exception {\n-        try {\n-            doClose();\n-        } finally {\n-            doFinally();\n-        }\n-    }\n-\n-    @Override\n-    public boolean removeConfig(String key, String group) {\n-        return Boolean.TRUE.equals(execute(() -> doRemoveConfig(key, group), -1L));\n-    }\n-\n-    /**\n-     * @return the default group\n-     * @since 2.7.8\n-     */\n-    @Override\n-    public String getDefaultGroup() {\n-        return getGroup();\n-    }\n-\n-    /**\n-     * @return the default timeout\n-     * @since 2.7.8\n-     */\n-    @Override\n-    public long getDefaultTimeout() {\n-        return getTimeout();\n-    }\n-\n-    /**\n-     * Get the content of configuration in the specified key and group\n-     *\n-     * @param key   the key\n-     * @param group the group\n-     * @return if found, return the content of configuration\n-     * @throws Exception If met with some problems\n-     */\n-    protected abstract String doGetConfig(String key, String group) throws Exception;\n-\n-    /**\n-     * Close the resources if necessary\n-     *\n-     * @throws Exception If met with some problems\n-     */\n-    protected abstract void doClose() throws Exception;\n-\n-    /**\n-     * Remove the config in the specified key and group\n-     *\n-     * @param key   the key\n-     * @param group the group\n-     * @return If successful, return <code>true</code>, or <code>false</code>\n-     * @throws Exception\n-     * @since 2.7.8\n-     */\n-    protected abstract boolean doRemoveConfig(String key, String group) throws Exception;\n-\n-    /**\n-     * Executes the {@link Runnable} with the specified timeout\n-     *\n-     * @param task    the {@link Runnable task}\n-     * @param timeout timeout in milliseconds\n-     */\n-    protected final void execute(Runnable task, long timeout) {\n-        execute(() -> {\n-            task.run();\n-            return null;\n-        }, timeout);\n-    }\n-\n-    /**\n-     * Executes the {@link Callable} with the specified timeout\n-     *\n-     * @param task    the {@link Callable task}\n-     * @param timeout timeout in milliseconds\n-     * @param <V>     the type of computing result\n-     * @return the computing result\n-     */\n-    protected final <V> V execute(Callable<V> task, long timeout) {\n-        V value = null;\n-        try {\n-\n-            if (timeout < 1) { // less or equal 0\n-                value = task.call();\n-            } else {\n-                Future<V> future = workersThreadPool.submit(task);\n-                value = future.get(timeout, TimeUnit.MILLISECONDS);\n-            }\n-        } catch (Exception e) {\n-            if (logger.isErrorEnabled()) {\n-                logger.error(e.getMessage(), e);\n-            }\n-        }\n-        return value;\n-    }\n-\n-    protected ThreadPoolExecutor getWorkersThreadPool() {\n-        return workersThreadPool;\n-    }\n-\n-    private void doFinally() {\n-        shutdownWorkersThreadPool();\n-    }\n-\n-    private void shutdownWorkersThreadPool() {\n-        if (!workersThreadPool.isShutdown()) {\n-            workersThreadPool.shutdown();\n-        }\n-    }\n-\n-    protected ThreadPoolExecutor initWorkersThreadPool(String threadPoolPrefixName,\n-                                                       int threadPoolSize,\n-                                                       long keepAliveTime) {\n-        return new ThreadPoolExecutor(threadPoolSize, threadPoolSize, keepAliveTime,\n-                TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(), new NamedThreadFactory(threadPoolPrefixName, true));\n-    }\n-\n-    protected static String getThreadPoolPrefixName(URL url) {\n-        return getParameter(url, THREAD_POOL_PREFIX_PARAM_NAME, DEFAULT_THREAD_POOL_PREFIX);\n-    }\n-\n-    protected static int getThreadPoolSize(URL url) {\n-        return getParameter(url, THREAD_POOL_SIZE_PARAM_NAME, DEFAULT_THREAD_POOL_SIZE);\n-    }\n-\n-    protected static long getThreadPoolKeepAliveTime(URL url) {\n-        return getParameter(url, THREAD_POOL_KEEP_ALIVE_TIME_PARAM_NAME, DEFAULT_THREAD_POOL_KEEP_ALIVE_TIME);\n-    }\n-\n-    protected static String getParameter(URL url, String name, String defaultValue) {\n-        if (url != null) {\n-            return url.getParameter(name, defaultValue);\n-        }\n-        return defaultValue;\n-    }\n-\n-    protected static int getParameter(URL url, String name, int defaultValue) {\n-        if (url != null) {\n-            return url.getParameter(name, defaultValue);\n-        }\n-        return defaultValue;\n-    }\n-\n-    protected static long getParameter(URL url, String name, long defaultValue) {\n-        if (url != null) {\n-            return url.getParameter(name, defaultValue);\n-        }\n-        return defaultValue;\n-    }\n-\n-\n-    protected String getGroup() {\n-        return group;\n-    }\n-\n-    protected long getTimeout() {\n-        return timeout;\n-    }\n-\n-    /**\n-     * Get the group from {@link URL the specified connection URL}\n-     *\n-     * @param url {@link URL the specified connection URL}\n-     * @return non-null\n-     * @since 2.7.8\n-     */\n-    protected static String getGroup(URL url) {\n-        String group = getParameter(url, GROUP_PARAM_NAME, null);\n-        return StringUtils.isBlank(group) ? getParameter(url, GROUP_KEY, DEFAULT_GROUP) : group;\n-    }\n-\n-    /**\n-     * Get the timeout from {@link URL the specified connection URL}\n-     *\n-     * @param url {@link URL the specified connection URL}\n-     * @return non-null\n-     * @since 2.7.8\n-     */\n-    protected static long getTimeout(URL url) {\n-        return getParameter(url, TIMEOUT_PARAM_NAME, -1L);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config.configcenter;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.NamedThreadFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import java.util.concurrent.Callable;\r\n+import java.util.concurrent.Future;\r\n+import java.util.concurrent.LinkedBlockingQueue;\r\n+import java.util.concurrent.ThreadPoolExecutor;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+\r\n+/**\r\n+ * The abstract implementation of {@link DynamicConfiguration}\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public abstract class AbstractDynamicConfiguration implements DynamicConfiguration {\r\n+\r\n+    public static final String PARAM_NAME_PREFIX = \"dubbo.config-center.\";\r\n+\r\n+    public static final String THREAD_POOL_PREFIX_PARAM_NAME = PARAM_NAME_PREFIX + \"thread-pool.prefix\";\r\n+\r\n+    public static final String DEFAULT_THREAD_POOL_PREFIX = PARAM_NAME_PREFIX + \"workers\";\r\n+\r\n+    public static final String THREAD_POOL_SIZE_PARAM_NAME = PARAM_NAME_PREFIX + \"thread-pool.size\";\r\n+\r\n+    /**\r\n+     * The keep alive time in milliseconds for threads in {@link ThreadPoolExecutor}\r\n+     */\r\n+    public static final String THREAD_POOL_KEEP_ALIVE_TIME_PARAM_NAME = PARAM_NAME_PREFIX + \"thread-pool.keep-alive-time\";\r\n+\r\n+    /**\r\n+     * The parameter name of group for config-center\r\n+     *\r\n+     * @since 2.7.8\r\n+     */\r\n+    public static final String GROUP_PARAM_NAME = PARAM_NAME_PREFIX + GROUP_KEY;\r\n+\r\n+    /**\r\n+     * The parameter name of timeout for config-center\r\n+     *\r\n+     * @since 2.7.8\r\n+     */\r\n+    public static final String TIMEOUT_PARAM_NAME = PARAM_NAME_PREFIX + TIMEOUT_KEY;\r\n+\r\n+    public static final int DEFAULT_THREAD_POOL_SIZE = 1;\r\n+\r\n+    /**\r\n+     * Default keep alive time in milliseconds for threads in {@link ThreadPoolExecutor} is 1 minute( 60 * 1000 ms)\r\n+     */\r\n+    public static final long DEFAULT_THREAD_POOL_KEEP_ALIVE_TIME = TimeUnit.MINUTES.toMillis(1);\r\n+\r\n+    /**\r\n+     * Logger\r\n+     */\r\n+    protected final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    /**\r\n+     * The thread pool for workers who executes the tasks\r\n+     */\r\n+    private final ThreadPoolExecutor workersThreadPool;\r\n+\r\n+    private final String group;\r\n+\r\n+    private final long timeout;\r\n+\r\n+    public AbstractDynamicConfiguration(URL url) {\r\n+        this(getThreadPoolPrefixName(url), getThreadPoolSize(url), getThreadPoolKeepAliveTime(url), getGroup(url),\r\n+                getTimeout(url));\r\n+    }\r\n+\r\n+    public AbstractDynamicConfiguration(String threadPoolPrefixName,\r\n+                                        int threadPoolSize,\r\n+                                        long keepAliveTime,\r\n+                                        String group,\r\n+                                        long timeout) {\r\n+        this.workersThreadPool = initWorkersThreadPool(threadPoolPrefixName, threadPoolSize, keepAliveTime);\r\n+        this.group = group;\r\n+        this.timeout = timeout;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addListener(String key, String group, ConfigurationListener listener) {\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeListener(String key, String group, ConfigurationListener listener) {\r\n+    }\r\n+\r\n+    @Override\r\n+    public final String getConfig(String key, String group, long timeout) throws IllegalStateException {\r\n+        return execute(() -> doGetConfig(key, group), timeout);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getInternalProperty(String key) {\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public final void close() throws Exception {\r\n+        try {\r\n+            doClose();\r\n+        } finally {\r\n+            doFinally();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean removeConfig(String key, String group) {\r\n+        return Boolean.TRUE.equals(execute(() -> doRemoveConfig(key, group), -1L));\r\n+    }\r\n+\r\n+    /**\r\n+     * @return the default group\r\n+     * @since 2.7.8\r\n+     */\r\n+    @Override\r\n+    public String getDefaultGroup() {\r\n+        return getGroup();\r\n+    }\r\n+\r\n+    /**\r\n+     * @return the default timeout\r\n+     * @since 2.7.8\r\n+     */\r\n+    @Override\r\n+    public long getDefaultTimeout() {\r\n+        return getTimeout();\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the content of configuration in the specified key and group\r\n+     *\r\n+     * @param key   the key\r\n+     * @param group the group\r\n+     * @return if found, return the content of configuration\r\n+     * @throws Exception If met with some problems\r\n+     */\r\n+    protected abstract String doGetConfig(String key, String group) throws Exception;\r\n+\r\n+    /**\r\n+     * Close the resources if necessary\r\n+     *\r\n+     * @throws Exception If met with some problems\r\n+     */\r\n+    protected abstract void doClose() throws Exception;\r\n+\r\n+    /**\r\n+     * Remove the config in the specified key and group\r\n+     *\r\n+     * @param key   the key\r\n+     * @param group the group\r\n+     * @return If successful, return <code>true</code>, or <code>false</code>\r\n+     * @throws Exception\r\n+     * @since 2.7.8\r\n+     */\r\n+    protected abstract boolean doRemoveConfig(String key, String group) throws Exception;\r\n+\r\n+    /**\r\n+     * Executes the {@link Runnable} with the specified timeout\r\n+     *\r\n+     * @param task    the {@link Runnable task}\r\n+     * @param timeout timeout in milliseconds\r\n+     */\r\n+    protected final void execute(Runnable task, long timeout) {\r\n+        execute(() -> {\r\n+            task.run();\r\n+            return null;\r\n+        }, timeout);\r\n+    }\r\n+\r\n+    /**\r\n+     * Executes the {@link Callable} with the specified timeout\r\n+     *\r\n+     * @param task    the {@link Callable task}\r\n+     * @param timeout timeout in milliseconds\r\n+     * @param <V>     the type of computing result\r\n+     * @return the computing result\r\n+     */\r\n+    protected final <V> V execute(Callable<V> task, long timeout) {\r\n+        V value = null;\r\n+        try {\r\n+\r\n+            if (timeout < 1) { // less or equal 0\r\n+                value = task.call();\r\n+            } else {\r\n+                Future<V> future = workersThreadPool.submit(task);\r\n+                value = future.get(timeout, TimeUnit.MILLISECONDS);\r\n+            }\r\n+        } catch (Exception e) {\r\n+            if (logger.isErrorEnabled()) {\r\n+                logger.error(e.getMessage(), e);\r\n+            }\r\n+        }\r\n+        return value;\r\n+    }\r\n+\r\n+    protected ThreadPoolExecutor getWorkersThreadPool() {\r\n+        return workersThreadPool;\r\n+    }\r\n+\r\n+    private void doFinally() {\r\n+        shutdownWorkersThreadPool();\r\n+    }\r\n+\r\n+    private void shutdownWorkersThreadPool() {\r\n+        if (!workersThreadPool.isShutdown()) {\r\n+            workersThreadPool.shutdown();\r\n+        }\r\n+    }\r\n+\r\n+    protected ThreadPoolExecutor initWorkersThreadPool(String threadPoolPrefixName,\r\n+                                                       int threadPoolSize,\r\n+                                                       long keepAliveTime) {\r\n+        return new ThreadPoolExecutor(threadPoolSize, threadPoolSize, keepAliveTime,\r\n+                TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(), new NamedThreadFactory(threadPoolPrefixName, true));\r\n+    }\r\n+\r\n+    protected static String getThreadPoolPrefixName(URL url) {\r\n+        return getParameter(url, THREAD_POOL_PREFIX_PARAM_NAME, DEFAULT_THREAD_POOL_PREFIX);\r\n+    }\r\n+\r\n+    protected static int getThreadPoolSize(URL url) {\r\n+        return getParameter(url, THREAD_POOL_SIZE_PARAM_NAME, DEFAULT_THREAD_POOL_SIZE);\r\n+    }\r\n+\r\n+    protected static long getThreadPoolKeepAliveTime(URL url) {\r\n+        return getParameter(url, THREAD_POOL_KEEP_ALIVE_TIME_PARAM_NAME, DEFAULT_THREAD_POOL_KEEP_ALIVE_TIME);\r\n+    }\r\n+\r\n+    protected static String getParameter(URL url, String name, String defaultValue) {\r\n+        if (url != null) {\r\n+            return url.getParameter(name, defaultValue);\r\n+        }\r\n+        return defaultValue;\r\n+    }\r\n+\r\n+    protected static int getParameter(URL url, String name, int defaultValue) {\r\n+        if (url != null) {\r\n+            return url.getParameter(name, defaultValue);\r\n+        }\r\n+        return defaultValue;\r\n+    }\r\n+\r\n+    protected static long getParameter(URL url, String name, long defaultValue) {\r\n+        if (url != null) {\r\n+            return url.getParameter(name, defaultValue);\r\n+        }\r\n+        return defaultValue;\r\n+    }\r\n+\r\n+\r\n+    protected String getGroup() {\r\n+        return group;\r\n+    }\r\n+\r\n+    protected long getTimeout() {\r\n+        return timeout;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the group from {@link URL the specified connection URL}\r\n+     *\r\n+     * @param url {@link URL the specified connection URL}\r\n+     * @return non-null\r\n+     * @since 2.7.8\r\n+     */\r\n+    protected static String getGroup(URL url) {\r\n+        String group = getParameter(url, GROUP_PARAM_NAME, null);\r\n+        return StringUtils.isBlank(group) ? getParameter(url, GROUP_KEY, DEFAULT_GROUP) : group;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the timeout from {@link URL the specified connection URL}\r\n+     *\r\n+     * @param url {@link URL the specified connection URL}\r\n+     * @return non-null\r\n+     * @since 2.7.8\r\n+     */\r\n+    protected static long getTimeout(URL url) {\r\n+        return getParameter(url, TIMEOUT_PARAM_NAME, -1L);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/configcenter/AbstractDynamicConfigurationFactory.java", "source2": "org/apache/dubbo/common/config/configcenter/AbstractDynamicConfigurationFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,43 +1,43 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config.configcenter;\n-\n-import org.apache.dubbo.common.URL;\n-\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_KEY;\n-\n-/**\n- * Abstract {@link DynamicConfigurationFactory} implementation with cache ability\n- *\n- * @see DynamicConfigurationFactory\n- * @since 2.7.5\n- */\n-public abstract class AbstractDynamicConfigurationFactory implements DynamicConfigurationFactory {\n-\n-    private volatile Map<String, DynamicConfiguration> dynamicConfigurations = new ConcurrentHashMap<>();\n-\n-    @Override\n-    public final DynamicConfiguration getDynamicConfiguration(URL url) {\n-        String key = url == null ? DEFAULT_KEY : url.toServiceString();\n-        return dynamicConfigurations.computeIfAbsent(key, k -> createDynamicConfiguration(url));\n-    }\n-\n-    protected abstract DynamicConfiguration createDynamicConfiguration(URL url);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config.configcenter;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_KEY;\r\n+\r\n+/**\r\n+ * Abstract {@link DynamicConfigurationFactory} implementation with cache ability\r\n+ *\r\n+ * @see DynamicConfigurationFactory\r\n+ * @since 2.7.5\r\n+ */\r\n+public abstract class AbstractDynamicConfigurationFactory implements DynamicConfigurationFactory {\r\n+\r\n+    private volatile Map<String, DynamicConfiguration> dynamicConfigurations = new ConcurrentHashMap<>();\r\n+\r\n+    @Override\r\n+    public final DynamicConfiguration getDynamicConfiguration(URL url) {\r\n+        String key = url == null ? DEFAULT_KEY : url.toServiceString();\r\n+        return dynamicConfigurations.computeIfAbsent(key, k -> createDynamicConfiguration(url));\r\n+    }\r\n+\r\n+    protected abstract DynamicConfiguration createDynamicConfiguration(URL url);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/configcenter/ConfigChangeType.java", "source2": "org/apache/dubbo/common/config/configcenter/ConfigChangeType.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,37 +1,37 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config.configcenter;\n-\n-/**\n- * Config change event type\n- */\n-public enum ConfigChangeType {\n-    /**\n-     * A config is created.\n-     */\n-    ADDED,\n-\n-    /**\n-     * A config is updated.\n-     */\n-    MODIFIED,\n-\n-    /**\n-     * A config is deleted.\n-     */\n-    DELETED\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config.configcenter;\r\n+\r\n+/**\r\n+ * Config change event type\r\n+ */\r\n+public enum ConfigChangeType {\r\n+    /**\r\n+     * A config is created.\r\n+     */\r\n+    ADDED,\r\n+\r\n+    /**\r\n+     * A config is updated.\r\n+     */\r\n+    MODIFIED,\r\n+\r\n+    /**\r\n+     * A config is deleted.\r\n+     */\r\n+    DELETED\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/configcenter/ConfigChangedEvent.java", "source2": "org/apache/dubbo/common/config/configcenter/ConfigChangedEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,94 +1,94 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config.configcenter;\n-\n-import java.util.EventObject;\n-import java.util.Objects;\n-\n-/**\n- * An event raised when the config changed, immutable.\n- *\n- * @see ConfigChangeType\n- */\n-public class ConfigChangedEvent extends EventObject {\n-\n-    private final String key;\n-\n-    private final String group;\n-\n-    private final String content;\n-\n-    private final ConfigChangeType changeType;\n-\n-    public ConfigChangedEvent(String key, String group, String content) {\n-        this(key, group, content, ConfigChangeType.MODIFIED);\n-    }\n-\n-    public ConfigChangedEvent(String key, String group, String content, ConfigChangeType changeType) {\n-        super(key + \",\" + group);\n-        this.key = key;\n-        this.group = group;\n-        this.content = content;\n-        this.changeType = changeType;\n-    }\n-\n-    public String getKey() {\n-        return key;\n-    }\n-\n-    public String getGroup() {\n-        return group;\n-    }\n-\n-    public String getContent() {\n-        return content;\n-    }\n-\n-    public ConfigChangeType getChangeType() {\n-        return changeType;\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"ConfigChangedEvent{\" +\n-                \"key='\" + key + '\\'' +\n-                \", group='\" + group + '\\'' +\n-                \", content='\" + content + '\\'' +\n-                \", changeType=\" + changeType +\n-                \"} \" + super.toString();\n-    }\n-\n-    @Override\n-    public boolean equals(Object o) {\n-        if (this == o) {\n-            return true;\n-        }\n-        if (!(o instanceof ConfigChangedEvent)) {\n-            return false;\n-        }\n-        ConfigChangedEvent that = (ConfigChangedEvent) o;\n-        return Objects.equals(getKey(), that.getKey()) &&\n-                Objects.equals(getGroup(), that.getGroup()) &&\n-                Objects.equals(getContent(), that.getContent()) &&\n-                getChangeType() == that.getChangeType();\n-    }\n-\n-    @Override\n-    public int hashCode() {\n-        return Objects.hash(getKey(), getGroup(), getContent(), getChangeType());\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config.configcenter;\r\n+\r\n+import java.util.EventObject;\r\n+import java.util.Objects;\r\n+\r\n+/**\r\n+ * An event raised when the config changed, immutable.\r\n+ *\r\n+ * @see ConfigChangeType\r\n+ */\r\n+public class ConfigChangedEvent extends EventObject {\r\n+\r\n+    private final String key;\r\n+\r\n+    private final String group;\r\n+\r\n+    private final String content;\r\n+\r\n+    private final ConfigChangeType changeType;\r\n+\r\n+    public ConfigChangedEvent(String key, String group, String content) {\r\n+        this(key, group, content, ConfigChangeType.MODIFIED);\r\n+    }\r\n+\r\n+    public ConfigChangedEvent(String key, String group, String content, ConfigChangeType changeType) {\r\n+        super(key + \",\" + group);\r\n+        this.key = key;\r\n+        this.group = group;\r\n+        this.content = content;\r\n+        this.changeType = changeType;\r\n+    }\r\n+\r\n+    public String getKey() {\r\n+        return key;\r\n+    }\r\n+\r\n+    public String getGroup() {\r\n+        return group;\r\n+    }\r\n+\r\n+    public String getContent() {\r\n+        return content;\r\n+    }\r\n+\r\n+    public ConfigChangeType getChangeType() {\r\n+        return changeType;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"ConfigChangedEvent{\" +\r\n+                \"key='\" + key + '\\'' +\r\n+                \", group='\" + group + '\\'' +\r\n+                \", content='\" + content + '\\'' +\r\n+                \", changeType=\" + changeType +\r\n+                \"} \" + super.toString();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean equals(Object o) {\r\n+        if (this == o) {\r\n+            return true;\r\n+        }\r\n+        if (!(o instanceof ConfigChangedEvent)) {\r\n+            return false;\r\n+        }\r\n+        ConfigChangedEvent that = (ConfigChangedEvent) o;\r\n+        return Objects.equals(getKey(), that.getKey()) &&\r\n+                Objects.equals(getGroup(), that.getGroup()) &&\r\n+                Objects.equals(getContent(), that.getContent()) &&\r\n+                getChangeType() == that.getChangeType();\r\n+    }\r\n+\r\n+    @Override\r\n+    public int hashCode() {\r\n+        return Objects.hash(getKey(), getGroup(), getContent(), getChangeType());\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/configcenter/ConfigurationListener.java", "source2": "org/apache/dubbo/common/config/configcenter/ConfigurationListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config.configcenter;\n-\n-import java.util.EventListener;\n-\n-/**\n- * Config listener, will get notified when the config it listens on changes.\n- */\n-public interface ConfigurationListener extends EventListener {\n-\n-    /**\n-     * Listener call back method. Listener gets notified by this method once there's any change happens on the config\n-     * the listener listens on.\n-     *\n-     * @param event config change event\n-     */\n-    void process(ConfigChangedEvent event);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config.configcenter;\r\n+\r\n+import java.util.EventListener;\r\n+\r\n+/**\r\n+ * Config listener, will get notified when the config it listens on changes.\r\n+ */\r\n+public interface ConfigurationListener extends EventListener {\r\n+\r\n+    /**\r\n+     * Listener call back method. Listener gets notified by this method once there's any change happens on the config\r\n+     * the listener listens on.\r\n+     *\r\n+     * @param event config change event\r\n+     */\r\n+    void process(ConfigChangedEvent event);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/configcenter/Constants.java", "source2": "org/apache/dubbo/common/config/configcenter/Constants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,25 +1,25 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config.configcenter;\n-\n-@Deprecated\n-public interface Constants {\n-    String CONFIG_CLUSTER_KEY = \"config.cluster\";\n-    String CONFIG_NAMESPACE_KEY = \"config.namespace\";\n-    String CONFIG_GROUP_KEY = \"config.group\";\n-    String CONFIG_CHECK_KEY = \"config.check\";\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config.configcenter;\r\n+\r\n+@Deprecated\r\n+public interface Constants {\r\n+    String CONFIG_CLUSTER_KEY = \"config.cluster\";\r\n+    String CONFIG_NAMESPACE_KEY = \"config.namespace\";\r\n+    String CONFIG_GROUP_KEY = \"config.group\";\r\n+    String CONFIG_CHECK_KEY = \"config.check\";\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/configcenter/DynamicConfiguration.java", "source2": "org/apache/dubbo/common/config/configcenter/DynamicConfiguration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,245 +1,245 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config.configcenter;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.Configuration;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-\n-import java.util.Collections;\n-import java.util.Optional;\n-import java.util.Set;\n-import java.util.SortedSet;\n-\n-import static org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory.getDynamicConfigurationFactory;\n-import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\n-\n-/**\n- * Dynamic Configuration\n- * <br/>\n- * From the use scenario internally inside framework, there're mainly three kinds of methods:\n- * <ol>\n- * <li>{@link #getProperties(String, String, long)}, get configuration file from Config Center at start up.</li>\n- * <li>{@link #addListener(String, String, ConfigurationListener)}/ {@link #removeListener(String, String, ConfigurationListener)}\n- * , add or remove listeners for governance rules or config items that need to watch.</li>\n- * <li>{@link #getProperty(String, Object)}, get a single config item.</li>\n- * <li>{@link #getConfig(String, String, long)}, get the specified config</li>\n- * </ol>\n- *\n- * @see AbstractDynamicConfiguration\n- */\n-public interface DynamicConfiguration extends Configuration, AutoCloseable {\n-\n-    String DEFAULT_GROUP = \"dubbo\";\n-\n-    /**\n-     * {@link #addListener(String, String, ConfigurationListener)}\n-     *\n-     * @param key      the key to represent a configuration\n-     * @param listener configuration listener\n-     */\n-    default void addListener(String key, ConfigurationListener listener) {\n-        addListener(key, getDefaultGroup(), listener);\n-    }\n-\n-\n-    /**\n-     * {@link #removeListener(String, String, ConfigurationListener)}\n-     *\n-     * @param key      the key to represent a configuration\n-     * @param listener configuration listener\n-     */\n-    default void removeListener(String key, ConfigurationListener listener) {\n-        removeListener(key, getDefaultGroup(), listener);\n-    }\n-\n-    /**\n-     * Register a configuration listener for a specified key\n-     * The listener only works for service governance purpose, so the target group would always be the value user\n-     * specifies at startup or 'dubbo' by default. This method will only register listener, which means it will not\n-     * trigger a notification that contains the current value.\n-     *\n-     * @param key      the key to represent a configuration\n-     * @param group    the group where the key belongs to\n-     * @param listener configuration listener\n-     */\n-    void addListener(String key, String group, ConfigurationListener listener);\n-\n-    /**\n-     * Stops one listener from listening to value changes in the specified key.\n-     *\n-     * @param key      the key to represent a configuration\n-     * @param group    the group where the key belongs to\n-     * @param listener configuration listener\n-     */\n-    void removeListener(String key, String group, ConfigurationListener listener);\n-\n-    /**\n-     * Get the configuration mapped to the given key and the given group with {@link #getDefaultTimeout() the default\n-     * timeout}\n-     *\n-     * @param key   the key to represent a configuration\n-     * @param group the group where the key belongs to\n-     * @return target configuration mapped to the given key and the given group\n-     */\n-    default String getConfig(String key, String group) {\n-        return getConfig(key, group, getDefaultTimeout());\n-    }\n-\n-    /**\n-     * Get the configuration mapped to the given key and the given group. If the\n-     * configuration fails to fetch after timeout exceeds, IllegalStateException will be thrown.\n-     *\n-     * @param key     the key to represent a configuration\n-     * @param group   the group where the key belongs to\n-     * @param timeout timeout value for fetching the target config\n-     * @return target configuration mapped to the given key and the given group, IllegalStateException will be thrown\n-     * if timeout exceeds.\n-     */\n-    String getConfig(String key, String group, long timeout) throws IllegalStateException;\n-\n-    /**\n-     * This method are mostly used to get a compound config file with {@link #getDefaultTimeout() the default timeout},\n-     * such as a complete dubbo.properties file.\n-     */\n-    default String getProperties(String key, String group) throws IllegalStateException {\n-        return getProperties(key, group, getDefaultTimeout());\n-    }\n-\n-    /**\n-     * This method are mostly used to get a compound config file, such as a complete dubbo.properties file.\n-     *\n-     * @revision 2.7.4\n-     */\n-    default String getProperties(String key, String group, long timeout) throws IllegalStateException {\n-        return getConfig(key, group, timeout);\n-    }\n-\n-    /**\n-     * Publish Config mapped to the given key under the {@link #getDefaultGroup() default group}\n-     *\n-     * @param key     the key to represent a configuration\n-     * @param content the content of configuration\n-     * @return <code>true</code> if success, or <code>false</code>\n-     * @throws UnsupportedOperationException If the under layer does not support\n-     * @since 2.7.5\n-     */\n-    default boolean publishConfig(String key, String content) throws UnsupportedOperationException {\n-        return publishConfig(key, getDefaultGroup(), content);\n-    }\n-\n-    /**\n-     * Publish Config mapped to the given key and the given group.\n-     *\n-     * @param key     the key to represent a configuration\n-     * @param group   the group where the key belongs to\n-     * @param content the content of configuration\n-     * @return <code>true</code> if success, or <code>false</code>\n-     * @throws UnsupportedOperationException If the under layer does not support\n-     * @since 2.7.5\n-     */\n-    default boolean publishConfig(String key, String group, String content) throws UnsupportedOperationException {\n-        return false;\n-    }\n-\n-    /**\n-     * Get the config keys by the specified group\n-     *\n-     * @param group the specified group\n-     * @return the read-only non-null sorted {@link Set set} of config keys\n-     * @throws UnsupportedOperationException If the under layer does not support\n-     * @since 2.7.5\n-     */\n-    default SortedSet<String> getConfigKeys(String group) throws UnsupportedOperationException {\n-        return Collections.emptySortedSet();\n-    }\n-\n-    /**\n-     * Get the default group for the operations\n-     *\n-     * @return The default value is {@link #DEFAULT_GROUP \"dubbo\"}\n-     * @since 2.7.5\n-     */\n-    default String getDefaultGroup() {\n-        return DEFAULT_GROUP;\n-    }\n-\n-    /**\n-     * Get the default timeout for the operations in milliseconds\n-     *\n-     * @return The default value is <code>-1L</code>\n-     * @since 2.7.5\n-     */\n-    default long getDefaultTimeout() {\n-        return -1L;\n-    }\n-\n-    /**\n-     * Close the configuration\n-     *\n-     * @throws Exception\n-     * @since 2.7.5\n-     */\n-    @Override\n-    default void close() throws Exception {\n-        throw new UnsupportedOperationException();\n-    }\n-\n-    /**\n-     * Find DynamicConfiguration instance\n-     *\n-     * @return DynamicConfiguration instance\n-     */\n-    static DynamicConfiguration getDynamicConfiguration() {\n-        Optional<DynamicConfiguration> optional = ApplicationModel.getEnvironment().getDynamicConfiguration();\n-        return optional.orElseGet(() -> getExtensionLoader(DynamicConfigurationFactory.class)\n-                .getDefaultExtension()\n-                .getDynamicConfiguration(null));\n-    }\n-\n-    /**\n-     * Get the instance of {@link DynamicConfiguration} by the specified connection {@link URL}\n-     *\n-     * @param connectionURL\n-     * @return non-null\n-     * @since 2.7.5\n-     */\n-    static DynamicConfiguration getDynamicConfiguration(URL connectionURL) {\n-        String protocol = connectionURL.getProtocol();\n-        DynamicConfigurationFactory factory = getDynamicConfigurationFactory(protocol);\n-        return factory.getDynamicConfiguration(connectionURL);\n-    }\n-\n-    /**\n-     * The format is '{interfaceName}:[version]:[group]'\n-     *\n-     * @return\n-     */\n-    static String getRuleKey(URL url) {\n-        return url.getColonSeparatedKey();\n-    }\n-\n-    /**\n-     * @param key   the key to represent a configuration\n-     * @param group the group where the key belongs to\n-     * @return <code>true</code> if success, or <code>false</code>\n-     * @since 2.7.8\n-     */\n-    default boolean removeConfig(String key, String group) {\n-        return true;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config.configcenter;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.Configuration;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.Optional;\r\n+import java.util.Set;\r\n+import java.util.SortedSet;\r\n+\r\n+import static org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory.getDynamicConfigurationFactory;\r\n+import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\r\n+\r\n+/**\r\n+ * Dynamic Configuration\r\n+ * <br/>\r\n+ * From the use scenario internally inside framework, there're mainly three kinds of methods:\r\n+ * <ol>\r\n+ * <li>{@link #getProperties(String, String, long)}, get configuration file from Config Center at start up.</li>\r\n+ * <li>{@link #addListener(String, String, ConfigurationListener)}/ {@link #removeListener(String, String, ConfigurationListener)}\r\n+ * , add or remove listeners for governance rules or config items that need to watch.</li>\r\n+ * <li>{@link #getProperty(String, Object)}, get a single config item.</li>\r\n+ * <li>{@link #getConfig(String, String, long)}, get the specified config</li>\r\n+ * </ol>\r\n+ *\r\n+ * @see AbstractDynamicConfiguration\r\n+ */\r\n+public interface DynamicConfiguration extends Configuration, AutoCloseable {\r\n+\r\n+    String DEFAULT_GROUP = \"dubbo\";\r\n+\r\n+    /**\r\n+     * {@link #addListener(String, String, ConfigurationListener)}\r\n+     *\r\n+     * @param key      the key to represent a configuration\r\n+     * @param listener configuration listener\r\n+     */\r\n+    default void addListener(String key, ConfigurationListener listener) {\r\n+        addListener(key, getDefaultGroup(), listener);\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * {@link #removeListener(String, String, ConfigurationListener)}\r\n+     *\r\n+     * @param key      the key to represent a configuration\r\n+     * @param listener configuration listener\r\n+     */\r\n+    default void removeListener(String key, ConfigurationListener listener) {\r\n+        removeListener(key, getDefaultGroup(), listener);\r\n+    }\r\n+\r\n+    /**\r\n+     * Register a configuration listener for a specified key\r\n+     * The listener only works for service governance purpose, so the target group would always be the value user\r\n+     * specifies at startup or 'dubbo' by default. This method will only register listener, which means it will not\r\n+     * trigger a notification that contains the current value.\r\n+     *\r\n+     * @param key      the key to represent a configuration\r\n+     * @param group    the group where the key belongs to\r\n+     * @param listener configuration listener\r\n+     */\r\n+    void addListener(String key, String group, ConfigurationListener listener);\r\n+\r\n+    /**\r\n+     * Stops one listener from listening to value changes in the specified key.\r\n+     *\r\n+     * @param key      the key to represent a configuration\r\n+     * @param group    the group where the key belongs to\r\n+     * @param listener configuration listener\r\n+     */\r\n+    void removeListener(String key, String group, ConfigurationListener listener);\r\n+\r\n+    /**\r\n+     * Get the configuration mapped to the given key and the given group with {@link #getDefaultTimeout() the default\r\n+     * timeout}\r\n+     *\r\n+     * @param key   the key to represent a configuration\r\n+     * @param group the group where the key belongs to\r\n+     * @return target configuration mapped to the given key and the given group\r\n+     */\r\n+    default String getConfig(String key, String group) {\r\n+        return getConfig(key, group, getDefaultTimeout());\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the configuration mapped to the given key and the given group. If the\r\n+     * configuration fails to fetch after timeout exceeds, IllegalStateException will be thrown.\r\n+     *\r\n+     * @param key     the key to represent a configuration\r\n+     * @param group   the group where the key belongs to\r\n+     * @param timeout timeout value for fetching the target config\r\n+     * @return target configuration mapped to the given key and the given group, IllegalStateException will be thrown\r\n+     * if timeout exceeds.\r\n+     */\r\n+    String getConfig(String key, String group, long timeout) throws IllegalStateException;\r\n+\r\n+    /**\r\n+     * This method are mostly used to get a compound config file with {@link #getDefaultTimeout() the default timeout},\r\n+     * such as a complete dubbo.properties file.\r\n+     */\r\n+    default String getProperties(String key, String group) throws IllegalStateException {\r\n+        return getProperties(key, group, getDefaultTimeout());\r\n+    }\r\n+\r\n+    /**\r\n+     * This method are mostly used to get a compound config file, such as a complete dubbo.properties file.\r\n+     *\r\n+     * @revision 2.7.4\r\n+     */\r\n+    default String getProperties(String key, String group, long timeout) throws IllegalStateException {\r\n+        return getConfig(key, group, timeout);\r\n+    }\r\n+\r\n+    /**\r\n+     * Publish Config mapped to the given key under the {@link #getDefaultGroup() default group}\r\n+     *\r\n+     * @param key     the key to represent a configuration\r\n+     * @param content the content of configuration\r\n+     * @return <code>true</code> if success, or <code>false</code>\r\n+     * @throws UnsupportedOperationException If the under layer does not support\r\n+     * @since 2.7.5\r\n+     */\r\n+    default boolean publishConfig(String key, String content) throws UnsupportedOperationException {\r\n+        return publishConfig(key, getDefaultGroup(), content);\r\n+    }\r\n+\r\n+    /**\r\n+     * Publish Config mapped to the given key and the given group.\r\n+     *\r\n+     * @param key     the key to represent a configuration\r\n+     * @param group   the group where the key belongs to\r\n+     * @param content the content of configuration\r\n+     * @return <code>true</code> if success, or <code>false</code>\r\n+     * @throws UnsupportedOperationException If the under layer does not support\r\n+     * @since 2.7.5\r\n+     */\r\n+    default boolean publishConfig(String key, String group, String content) throws UnsupportedOperationException {\r\n+        return false;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the config keys by the specified group\r\n+     *\r\n+     * @param group the specified group\r\n+     * @return the read-only non-null sorted {@link Set set} of config keys\r\n+     * @throws UnsupportedOperationException If the under layer does not support\r\n+     * @since 2.7.5\r\n+     */\r\n+    default SortedSet<String> getConfigKeys(String group) throws UnsupportedOperationException {\r\n+        return Collections.emptySortedSet();\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the default group for the operations\r\n+     *\r\n+     * @return The default value is {@link #DEFAULT_GROUP \"dubbo\"}\r\n+     * @since 2.7.5\r\n+     */\r\n+    default String getDefaultGroup() {\r\n+        return DEFAULT_GROUP;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the default timeout for the operations in milliseconds\r\n+     *\r\n+     * @return The default value is <code>-1L</code>\r\n+     * @since 2.7.5\r\n+     */\r\n+    default long getDefaultTimeout() {\r\n+        return -1L;\r\n+    }\r\n+\r\n+    /**\r\n+     * Close the configuration\r\n+     *\r\n+     * @throws Exception\r\n+     * @since 2.7.5\r\n+     */\r\n+    @Override\r\n+    default void close() throws Exception {\r\n+        throw new UnsupportedOperationException();\r\n+    }\r\n+\r\n+    /**\r\n+     * Find DynamicConfiguration instance\r\n+     *\r\n+     * @return DynamicConfiguration instance\r\n+     */\r\n+    static DynamicConfiguration getDynamicConfiguration() {\r\n+        Optional<DynamicConfiguration> optional = ApplicationModel.getEnvironment().getDynamicConfiguration();\r\n+        return optional.orElseGet(() -> getExtensionLoader(DynamicConfigurationFactory.class)\r\n+                .getDefaultExtension()\r\n+                .getDynamicConfiguration(null));\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the instance of {@link DynamicConfiguration} by the specified connection {@link URL}\r\n+     *\r\n+     * @param connectionURL\r\n+     * @return non-null\r\n+     * @since 2.7.5\r\n+     */\r\n+    static DynamicConfiguration getDynamicConfiguration(URL connectionURL) {\r\n+        String protocol = connectionURL.getProtocol();\r\n+        DynamicConfigurationFactory factory = getDynamicConfigurationFactory(protocol);\r\n+        return factory.getDynamicConfiguration(connectionURL);\r\n+    }\r\n+\r\n+    /**\r\n+     * The format is '{interfaceName}:[version]:[group]'\r\n+     *\r\n+     * @return\r\n+     */\r\n+    static String getRuleKey(URL url) {\r\n+        return url.getColonSeparatedKey();\r\n+    }\r\n+\r\n+    /**\r\n+     * @param key   the key to represent a configuration\r\n+     * @param group the group where the key belongs to\r\n+     * @return <code>true</code> if success, or <code>false</code>\r\n+     * @since 2.7.8\r\n+     */\r\n+    default boolean removeConfig(String key, String group) {\r\n+        return true;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/configcenter/DynamicConfigurationFactory.java", "source2": "org/apache/dubbo/common/config/configcenter/DynamicConfigurationFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,46 +1,46 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config.configcenter;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\n-\n-/**\n- * The factory interface to create the instance of {@link DynamicConfiguration}\n- */\n-@SPI(\"nop\") // 2.7.5 change the default SPI implementation\n-public interface DynamicConfigurationFactory {\n-\n-    DynamicConfiguration getDynamicConfiguration(URL url);\n-\n-    /**\n-     * Get an instance of {@link DynamicConfigurationFactory} by the specified name. If not found, take the default\n-     * extension of {@link DynamicConfigurationFactory}\n-     *\n-     * @param name the name of extension of {@link DynamicConfigurationFactory}\n-     * @return non-null\n-     * @see 2.7.4\n-     */\n-    static DynamicConfigurationFactory getDynamicConfigurationFactory(String name) {\n-        Class<DynamicConfigurationFactory> factoryClass = DynamicConfigurationFactory.class;\n-        ExtensionLoader<DynamicConfigurationFactory> loader = getExtensionLoader(factoryClass);\n-        return loader.getOrDefaultExtension(name);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config.configcenter;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\r\n+\r\n+/**\r\n+ * The factory interface to create the instance of {@link DynamicConfiguration}\r\n+ */\r\n+@SPI(\"nop\") // 2.7.5 change the default SPI implementation\r\n+public interface DynamicConfigurationFactory {\r\n+\r\n+    DynamicConfiguration getDynamicConfiguration(URL url);\r\n+\r\n+    /**\r\n+     * Get an instance of {@link DynamicConfigurationFactory} by the specified name. If not found, take the default\r\n+     * extension of {@link DynamicConfigurationFactory}\r\n+     *\r\n+     * @param name the name of extension of {@link DynamicConfigurationFactory}\r\n+     * @return non-null\r\n+     * @see 2.7.4\r\n+     */\r\n+    static DynamicConfigurationFactory getDynamicConfigurationFactory(String name) {\r\n+        Class<DynamicConfigurationFactory> factoryClass = DynamicConfigurationFactory.class;\r\n+        ExtensionLoader<DynamicConfigurationFactory> loader = getExtensionLoader(factoryClass);\r\n+        return loader.getOrDefaultExtension(name);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/configcenter/TreePathDynamicConfiguration.java", "source2": "org/apache/dubbo/common/config/configcenter/TreePathDynamicConfiguration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,186 +1,186 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config.configcenter;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.file.FileSystemDynamicConfiguration;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import java.util.Collection;\n-import java.util.SortedSet;\n-import java.util.TreeSet;\n-\n-import static java.util.Collections.emptySortedSet;\n-import static java.util.Collections.unmodifiableSortedSet;\n-import static org.apache.dubbo.common.constants.CommonConstants.CONFIG_NAMESPACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\n-import static org.apache.dubbo.common.utils.CollectionUtils.isEmpty;\n-import static org.apache.dubbo.common.utils.PathUtils.buildPath;\n-import static org.apache.dubbo.common.utils.PathUtils.normalize;\n-\n-/**\n- * An abstract implementation of {@link DynamicConfiguration} is like \"tree-structure\" path :\n- * <ul>\n- *     <li>{@link FileSystemDynamicConfiguration \"file\"}</li>\n- *     <li>{@link org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfiguration \"zookeeper\"}</li>\n- *     <li>{@link org.apache.dubbo.configcenter.consul.ConsulDynamicConfiguration \"consul\"}</li>\n- * </ul>\n- *\n- * @see DynamicConfiguration\n- * @see AbstractDynamicConfiguration\n- * @since 2.7.8\n- */\n-public abstract class TreePathDynamicConfiguration extends AbstractDynamicConfiguration {\n-\n-    /**\n-     * The parameter name of URL for the config root path\n-     */\n-    public static final String CONFIG_ROOT_PATH_PARAM_NAME = PARAM_NAME_PREFIX + \"root-path\";\n-\n-    /**\n-     * The parameter name of URL for the config base path\n-     */\n-    public static final String CONFIG_BASE_PATH_PARAM_NAME = PARAM_NAME_PREFIX + \"base-path\";\n-\n-    /**\n-     * The default value of parameter of URL for the config base path\n-     */\n-    public static final String DEFAULT_CONFIG_BASE_PATH = \"/config\";\n-\n-    private final String rootPath;\n-\n-    public TreePathDynamicConfiguration(URL url) {\n-        super(url);\n-        this.rootPath = getRootPath(url);\n-    }\n-\n-    public TreePathDynamicConfiguration(String rootPath,\n-                                        String threadPoolPrefixName,\n-                                        int threadPoolSize,\n-                                        long keepAliveTime,\n-                                        String group,\n-                                        long timeout) {\n-        super(threadPoolPrefixName, threadPoolSize, keepAliveTime, group, timeout);\n-        this.rootPath = rootPath;\n-    }\n-\n-    @Override\n-    protected final String doGetConfig(String key, String group) throws Exception {\n-        String pathKey = buildPathKey(group, key);\n-        return doGetConfig(pathKey);\n-    }\n-\n-    @Override\n-    public final boolean publishConfig(String key, String group, String content) {\n-        String pathKey = buildPathKey(group, key);\n-        return Boolean.TRUE.equals(execute(() -> doPublishConfig(pathKey, content), getDefaultTimeout()));\n-    }\n-\n-    @Override\n-    protected final boolean doRemoveConfig(String key, String group) throws Exception {\n-        String pathKey = buildPathKey(group, key);\n-        return doRemoveConfig(pathKey);\n-    }\n-\n-    @Override\n-    public final void addListener(String key, String group, ConfigurationListener listener) {\n-        String pathKey = buildPathKey(group, key);\n-        doAddListener(pathKey, listener);\n-    }\n-\n-    @Override\n-    public final void removeListener(String key, String group, ConfigurationListener listener) {\n-        String pathKey = buildPathKey(group, key);\n-        doRemoveListener(pathKey, listener);\n-    }\n-\n-    @Override\n-    public final SortedSet<String> getConfigKeys(String group) throws UnsupportedOperationException {\n-        String groupPath = buildGroupPath(group);\n-        Collection<String> configKeys = doGetConfigKeys(groupPath);\n-        return isEmpty(configKeys) ? emptySortedSet() : unmodifiableSortedSet(new TreeSet<>(configKeys));\n-    }\n-\n-    protected abstract boolean doPublishConfig(String pathKey, String content) throws Exception;\n-\n-    protected abstract String doGetConfig(String pathKey) throws Exception;\n-\n-    protected abstract boolean doRemoveConfig(String pathKey) throws Exception;\n-\n-    protected abstract Collection<String> doGetConfigKeys(String groupPath);\n-\n-    protected abstract void doAddListener(String pathKey, ConfigurationListener listener);\n-\n-    protected abstract void doRemoveListener(String pathKey, ConfigurationListener listener);\n-\n-    protected String buildGroupPath(String group) {\n-        return buildPath(rootPath, group);\n-    }\n-\n-    protected String buildPathKey(String group, String key) {\n-        return buildPath(buildGroupPath(group), key);\n-    }\n-\n-    /**\n-     * Get the root path from the specified {@link URL connection URl}\n-     *\n-     * @param url the specified {@link URL connection URl}\n-     * @return non-null\n-     */\n-    protected String getRootPath(URL url) {\n-\n-        String rootPath = url.getParameter(CONFIG_ROOT_PATH_PARAM_NAME, buildRootPath(url));\n-\n-        rootPath = normalize(rootPath);\n-\n-        int rootPathLength = rootPath.length();\n-\n-        if (rootPathLength > 1 && rootPath.endsWith(PATH_SEPARATOR)) {\n-            rootPath = rootPath.substring(0, rootPathLength - 1);\n-        }\n-\n-        return rootPath;\n-    }\n-\n-    private String buildRootPath(URL url) {\n-        return PATH_SEPARATOR + getConfigNamespace(url) + getConfigBasePath(url);\n-    }\n-\n-    /**\n-     * Get the namespace from the specified {@link URL connection URl}\n-     *\n-     * @param url the specified {@link URL connection URl}\n-     * @return non-null\n-     */\n-    protected String getConfigNamespace(URL url) {\n-        return url.getParameter(CONFIG_NAMESPACE_KEY, DEFAULT_GROUP);\n-    }\n-\n-    /**\n-     * Get the config base path from the specified {@link URL connection URl}\n-     *\n-     * @param url the specified {@link URL connection URl}\n-     * @return non-null\n-     */\n-    protected String getConfigBasePath(URL url) {\n-        String configBasePath = url.getParameter(CONFIG_BASE_PATH_PARAM_NAME, DEFAULT_CONFIG_BASE_PATH);\n-        if (StringUtils.isNotEmpty(configBasePath) && !configBasePath.startsWith(PATH_SEPARATOR)) {\n-            configBasePath = PATH_SEPARATOR + configBasePath;\n-        }\n-        return configBasePath;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config.configcenter;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.file.FileSystemDynamicConfiguration;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.SortedSet;\r\n+import java.util.TreeSet;\r\n+\r\n+import static java.util.Collections.emptySortedSet;\r\n+import static java.util.Collections.unmodifiableSortedSet;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONFIG_NAMESPACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\r\n+import static org.apache.dubbo.common.utils.CollectionUtils.isEmpty;\r\n+import static org.apache.dubbo.common.utils.PathUtils.buildPath;\r\n+import static org.apache.dubbo.common.utils.PathUtils.normalize;\r\n+\r\n+/**\r\n+ * An abstract implementation of {@link DynamicConfiguration} is like \"tree-structure\" path :\r\n+ * <ul>\r\n+ *     <li>{@link FileSystemDynamicConfiguration \"file\"}</li>\r\n+ *     <li>{@link org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfiguration \"zookeeper\"}</li>\r\n+ *     <li>{@link org.apache.dubbo.configcenter.consul.ConsulDynamicConfiguration \"consul\"}</li>\r\n+ * </ul>\r\n+ *\r\n+ * @see DynamicConfiguration\r\n+ * @see AbstractDynamicConfiguration\r\n+ * @since 2.7.8\r\n+ */\r\n+public abstract class TreePathDynamicConfiguration extends AbstractDynamicConfiguration {\r\n+\r\n+    /**\r\n+     * The parameter name of URL for the config root path\r\n+     */\r\n+    public static final String CONFIG_ROOT_PATH_PARAM_NAME = PARAM_NAME_PREFIX + \"root-path\";\r\n+\r\n+    /**\r\n+     * The parameter name of URL for the config base path\r\n+     */\r\n+    public static final String CONFIG_BASE_PATH_PARAM_NAME = PARAM_NAME_PREFIX + \"base-path\";\r\n+\r\n+    /**\r\n+     * The default value of parameter of URL for the config base path\r\n+     */\r\n+    public static final String DEFAULT_CONFIG_BASE_PATH = \"/config\";\r\n+\r\n+    private final String rootPath;\r\n+\r\n+    public TreePathDynamicConfiguration(URL url) {\r\n+        super(url);\r\n+        this.rootPath = getRootPath(url);\r\n+    }\r\n+\r\n+    public TreePathDynamicConfiguration(String rootPath,\r\n+                                        String threadPoolPrefixName,\r\n+                                        int threadPoolSize,\r\n+                                        long keepAliveTime,\r\n+                                        String group,\r\n+                                        long timeout) {\r\n+        super(threadPoolPrefixName, threadPoolSize, keepAliveTime, group, timeout);\r\n+        this.rootPath = rootPath;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected final String doGetConfig(String key, String group) throws Exception {\r\n+        String pathKey = buildPathKey(group, key);\r\n+        return doGetConfig(pathKey);\r\n+    }\r\n+\r\n+    @Override\r\n+    public final boolean publishConfig(String key, String group, String content) {\r\n+        String pathKey = buildPathKey(group, key);\r\n+        return Boolean.TRUE.equals(execute(() -> doPublishConfig(pathKey, content), getDefaultTimeout()));\r\n+    }\r\n+\r\n+    @Override\r\n+    protected final boolean doRemoveConfig(String key, String group) throws Exception {\r\n+        String pathKey = buildPathKey(group, key);\r\n+        return doRemoveConfig(pathKey);\r\n+    }\r\n+\r\n+    @Override\r\n+    public final void addListener(String key, String group, ConfigurationListener listener) {\r\n+        String pathKey = buildPathKey(group, key);\r\n+        doAddListener(pathKey, listener);\r\n+    }\r\n+\r\n+    @Override\r\n+    public final void removeListener(String key, String group, ConfigurationListener listener) {\r\n+        String pathKey = buildPathKey(group, key);\r\n+        doRemoveListener(pathKey, listener);\r\n+    }\r\n+\r\n+    @Override\r\n+    public final SortedSet<String> getConfigKeys(String group) throws UnsupportedOperationException {\r\n+        String groupPath = buildGroupPath(group);\r\n+        Collection<String> configKeys = doGetConfigKeys(groupPath);\r\n+        return isEmpty(configKeys) ? emptySortedSet() : unmodifiableSortedSet(new TreeSet<>(configKeys));\r\n+    }\r\n+\r\n+    protected abstract boolean doPublishConfig(String pathKey, String content) throws Exception;\r\n+\r\n+    protected abstract String doGetConfig(String pathKey) throws Exception;\r\n+\r\n+    protected abstract boolean doRemoveConfig(String pathKey) throws Exception;\r\n+\r\n+    protected abstract Collection<String> doGetConfigKeys(String groupPath);\r\n+\r\n+    protected abstract void doAddListener(String pathKey, ConfigurationListener listener);\r\n+\r\n+    protected abstract void doRemoveListener(String pathKey, ConfigurationListener listener);\r\n+\r\n+    protected String buildGroupPath(String group) {\r\n+        return buildPath(rootPath, group);\r\n+    }\r\n+\r\n+    protected String buildPathKey(String group, String key) {\r\n+        return buildPath(buildGroupPath(group), key);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the root path from the specified {@link URL connection URl}\r\n+     *\r\n+     * @param url the specified {@link URL connection URl}\r\n+     * @return non-null\r\n+     */\r\n+    protected String getRootPath(URL url) {\r\n+\r\n+        String rootPath = url.getParameter(CONFIG_ROOT_PATH_PARAM_NAME, buildRootPath(url));\r\n+\r\n+        rootPath = normalize(rootPath);\r\n+\r\n+        int rootPathLength = rootPath.length();\r\n+\r\n+        if (rootPathLength > 1 && rootPath.endsWith(PATH_SEPARATOR)) {\r\n+            rootPath = rootPath.substring(0, rootPathLength - 1);\r\n+        }\r\n+\r\n+        return rootPath;\r\n+    }\r\n+\r\n+    private String buildRootPath(URL url) {\r\n+        return PATH_SEPARATOR + getConfigNamespace(url) + getConfigBasePath(url);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the namespace from the specified {@link URL connection URl}\r\n+     *\r\n+     * @param url the specified {@link URL connection URl}\r\n+     * @return non-null\r\n+     */\r\n+    protected String getConfigNamespace(URL url) {\r\n+        return url.getParameter(CONFIG_NAMESPACE_KEY, DEFAULT_GROUP);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the config base path from the specified {@link URL connection URl}\r\n+     *\r\n+     * @param url the specified {@link URL connection URl}\r\n+     * @return non-null\r\n+     */\r\n+    protected String getConfigBasePath(URL url) {\r\n+        String configBasePath = url.getParameter(CONFIG_BASE_PATH_PARAM_NAME, DEFAULT_CONFIG_BASE_PATH);\r\n+        if (StringUtils.isNotEmpty(configBasePath) && !configBasePath.startsWith(PATH_SEPARATOR)) {\r\n+            configBasePath = PATH_SEPARATOR + configBasePath;\r\n+        }\r\n+        return configBasePath;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java", "source2": "org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,607 +1,607 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config.configcenter.file;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\n-import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-import org.apache.dubbo.common.config.configcenter.TreePathDynamicConfiguration;\n-import org.apache.dubbo.common.function.ThrowableConsumer;\n-import org.apache.dubbo.common.function.ThrowableFunction;\n-import org.apache.dubbo.common.lang.ShutdownHookCallbacks;\n-import org.apache.dubbo.common.utils.NamedThreadFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import org.apache.commons.io.FileUtils;\n-import org.apache.commons.logging.Log;\n-import org.apache.commons.logging.LogFactory;\n-\n-import java.io.File;\n-import java.io.IOException;\n-import java.nio.file.FileSystem;\n-import java.nio.file.FileSystems;\n-import java.nio.file.Path;\n-import java.nio.file.WatchEvent;\n-import java.nio.file.WatchKey;\n-import java.nio.file.WatchService;\n-import java.util.Collection;\n-import java.util.Collections;\n-import java.util.HashMap;\n-import java.util.LinkedHashMap;\n-import java.util.LinkedHashSet;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Optional;\n-import java.util.Set;\n-import java.util.TreeSet;\n-import java.util.concurrent.Callable;\n-import java.util.concurrent.SynchronousQueue;\n-import java.util.concurrent.ThreadPoolExecutor;\n-import java.util.function.BiConsumer;\n-import java.util.function.Function;\n-import java.util.stream.Collectors;\n-import java.util.stream.Stream;\n-\n-import static java.lang.String.format;\n-import static java.nio.file.StandardWatchEventKinds.ENTRY_CREATE;\n-import static java.nio.file.StandardWatchEventKinds.ENTRY_DELETE;\n-import static java.nio.file.StandardWatchEventKinds.ENTRY_MODIFY;\n-import static java.util.Collections.emptySet;\n-import static java.util.Collections.unmodifiableMap;\n-import static java.util.concurrent.TimeUnit.MILLISECONDS;\n-import static java.util.concurrent.TimeUnit.SECONDS;\n-import static org.apache.commons.io.FileUtils.readFileToString;\n-\n-/**\n- * File-System based {@link DynamicConfiguration} implementation\n- *\n- * @since 2.7.5\n- */\n-public class FileSystemDynamicConfiguration extends TreePathDynamicConfiguration {\n-\n-    public static final String CONFIG_CENTER_DIR_PARAM_NAME = PARAM_NAME_PREFIX + \"dir\";\n-\n-    public static final String CONFIG_CENTER_ENCODING_PARAM_NAME = PARAM_NAME_PREFIX + \"encoding\";\n-\n-    public static final String DEFAULT_CONFIG_CENTER_DIR_PATH = System.getProperty(\"user.home\") + File.separator\n-            + \".dubbo\" + File.separator + \"config-center\";\n-\n-    public static final int DEFAULT_THREAD_POOL_SIZE = 1;\n-\n-    public static final String DEFAULT_CONFIG_CENTER_ENCODING = \"UTF-8\";\n-\n-    private static final WatchEvent.Kind[] INTEREST_PATH_KINDS = of(ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);\n-\n-    /**\n-     * The class name of {@linkplain sun.nio.fs.PollingWatchService}\n-     */\n-    private static final String POLLING_WATCH_SERVICE_CLASS_NAME = \"sun.nio.fs.PollingWatchService\";\n-\n-    private static final int THREAD_POOL_SIZE = 1;\n-\n-    /**\n-     * Logger\n-     */\n-    private static final Log logger = LogFactory.getLog(FileSystemDynamicConfiguration.class);\n-\n-\n-    /**\n-     * The unmodifiable map for {@link ConfigChangeType} whose key is the {@link WatchEvent.Kind#name() name} of\n-     * {@link WatchEvent.Kind WatchEvent's Kind}\n-     */\n-    private static final Map<String, ConfigChangeType> CONFIG_CHANGE_TYPES_MAP =\n-            unmodifiableMap(new HashMap<String, ConfigChangeType>() {\n-                // Initializes the elements that is mapping ConfigChangeType\n-                {\n-                    put(ENTRY_CREATE.name(), ConfigChangeType.ADDED);\n-                    put(ENTRY_DELETE.name(), ConfigChangeType.DELETED);\n-                    put(ENTRY_MODIFY.name(), ConfigChangeType.MODIFIED);\n-                }\n-            });\n-\n-    private static final Optional<WatchService> watchService;\n-\n-    /**\n-     * Is Pooling Based Watch Service\n-     *\n-     * @see #detectPoolingBasedWatchService(Optional)\n-     */\n-    private static final boolean BASED_POOLING_WATCH_SERVICE;\n-\n-    private static final WatchEvent.Modifier[] MODIFIERS;\n-\n-    /**\n-     * the delay to action in seconds. If null, execute indirectly\n-     */\n-    private static final Integer DELAY;\n-\n-    /**\n-     * The thread pool for {@link WatchEvent WatchEvents} loop\n-     * It's optional if there is not any {@link ConfigurationListener} registration\n-     *\n-     * @see ThreadPoolExecutor\n-     */\n-    private static final ThreadPoolExecutor WATCH_EVENTS_LOOP_THREAD_POOL;\n-\n-    // static initialization\n-    static {\n-        watchService = newWatchService();\n-        BASED_POOLING_WATCH_SERVICE = detectPoolingBasedWatchService(watchService);\n-        MODIFIERS = initWatchEventModifiers();\n-        DELAY = initDelay(MODIFIERS);\n-        WATCH_EVENTS_LOOP_THREAD_POOL = newWatchEventsLoopThreadPool();\n-        registerDubboShutdownHook();\n-    }\n-\n-    /**\n-     * The Root Directory for config center\n-     */\n-    private final File rootDirectory;\n-\n-    private final String encoding;\n-\n-    /**\n-     * The {@link Set} of {@link #groupDirectory(String) directories} that may be processing,\n-     * <p>\n-     * if {@link #isBasedPoolingWatchService()} is <code>false</code>, this properties will be\n-     * {@link Collections#emptySet() empty}\n-     *\n-     * @see #initProcessingDirectories()\n-     */\n-    private final Set<File> processingDirectories;\n-\n-    private final Map<File, List<ConfigurationListener>> listenersRepository;\n-\n-    public FileSystemDynamicConfiguration() {\n-        this(new File(DEFAULT_CONFIG_CENTER_DIR_PATH));\n-    }\n-\n-    public FileSystemDynamicConfiguration(File rootDirectory) {\n-        this(rootDirectory, DEFAULT_CONFIG_CENTER_ENCODING);\n-    }\n-\n-    public FileSystemDynamicConfiguration(File rootDirectory, String encoding) {\n-        this(rootDirectory, encoding, DEFAULT_THREAD_POOL_PREFIX);\n-    }\n-\n-    public FileSystemDynamicConfiguration(File rootDirectory, String encoding, String threadPoolPrefixName) {\n-        this(rootDirectory, encoding, threadPoolPrefixName, DEFAULT_THREAD_POOL_SIZE);\n-    }\n-\n-    public FileSystemDynamicConfiguration(File rootDirectory, String encoding, String threadPoolPrefixName,\n-                                          int threadPoolSize) {\n-        this(rootDirectory, encoding, threadPoolPrefixName, threadPoolSize, DEFAULT_THREAD_POOL_KEEP_ALIVE_TIME);\n-    }\n-\n-    public FileSystemDynamicConfiguration(File rootDirectory, String encoding,\n-                                          String threadPoolPrefixName,\n-                                          int threadPoolSize,\n-                                          long keepAliveTime) {\n-        super(rootDirectory.getAbsolutePath(), threadPoolPrefixName, threadPoolSize, keepAliveTime, DEFAULT_GROUP, -1L);\n-        this.rootDirectory = rootDirectory;\n-        this.encoding = encoding;\n-        this.processingDirectories = initProcessingDirectories();\n-        this.listenersRepository = new LinkedHashMap<>();\n-    }\n-\n-    public FileSystemDynamicConfiguration(URL url) {\n-        this(initDirectory(url), getEncoding(url), getThreadPoolPrefixName(url), getThreadPoolSize(url),\n-                getThreadPoolKeepAliveTime(url));\n-    }\n-\n-    private Set<File> initProcessingDirectories() {\n-        return isBasedPoolingWatchService() ? new LinkedHashSet<>() : emptySet();\n-    }\n-\n-    public File configFile(String key, String group) {\n-        return new File(buildPathKey(group, key));\n-    }\n-\n-    private void doInListener(String configFilePath, BiConsumer<File, List<ConfigurationListener>> consumer) {\n-        watchService.ifPresent(watchService -> {\n-            File configFile = new File(configFilePath);\n-            executeMutually(configFile.getParentFile(), () -> {\n-                // process the WatchEvents if not start\n-                if (!isProcessingWatchEvents()) {\n-                    processWatchEvents(watchService);\n-                }\n-\n-                List<ConfigurationListener> listeners = getListeners(configFile);\n-                consumer.accept(configFile, listeners);\n-\n-                // Nothing to return\n-                return null;\n-            });\n-        });\n-    }\n-\n-    /**\n-     * Register the Dubbo ShutdownHook\n-     *\n-     * @since 2.7.8\n-     */\n-    private static void registerDubboShutdownHook() {\n-        ShutdownHookCallbacks.INSTANCE.addCallback(() -> {\n-            watchService.ifPresent(w -> {\n-                try {\n-                    w.close();\n-                } catch (IOException e) {\n-                    throw new RuntimeException(e);\n-                }\n-            });\n-            getWatchEventsLoopThreadPool().shutdown();\n-        });\n-    }\n-\n-    private static boolean isProcessingWatchEvents() {\n-        return getWatchEventsLoopThreadPool().getActiveCount() > 0;\n-    }\n-\n-    /**\n-     * Process the {@link WatchEvent WatchEvents} loop in async execution\n-     *\n-     * @param watchService {@link WatchService}\n-     */\n-    private void processWatchEvents(WatchService watchService) {\n-        getWatchEventsLoopThreadPool().execute(() -> { // WatchEvents Loop\n-            while (true) {\n-                WatchKey watchKey = null;\n-                try {\n-                    watchKey = watchService.take();\n-                    if (watchKey.isValid()) {\n-                        for (WatchEvent event : watchKey.pollEvents()) {\n-                            WatchEvent.Kind kind = event.kind();\n-                            // configChangeType's key to match WatchEvent's Kind\n-                            ConfigChangeType configChangeType = CONFIG_CHANGE_TYPES_MAP.get(kind.name());\n-                            if (configChangeType != null) {\n-                                Path configDirectoryPath = (Path) watchKey.watchable();\n-                                Path currentPath = (Path) event.context();\n-                                Path configFilePath = configDirectoryPath.resolve(currentPath);\n-                                File configDirectory = configDirectoryPath.toFile();\n-                                executeMutually(configDirectory, () -> {\n-                                    fireConfigChangeEvent(configDirectory, configFilePath.toFile(), configChangeType);\n-                                    signalConfigDirectory(configDirectory);\n-                                    return null;\n-                                });\n-                            }\n-                        }\n-                    }\n-                } catch (Exception e) {\n-                    return;\n-                } finally {\n-                    if (watchKey != null) {\n-                        // reset\n-                        watchKey.reset();\n-                    }\n-                }\n-            }\n-        });\n-    }\n-\n-    private void signalConfigDirectory(File configDirectory) {\n-        if (isBasedPoolingWatchService()) {\n-            // remove configDirectory from processing set because it's done\n-            removeProcessingDirectory(configDirectory);\n-            // notify configDirectory\n-            notifyProcessingDirectory(configDirectory);\n-            if (logger.isDebugEnabled()) {\n-                logger.debug(format(\"The config rootDirectory[%s] is signalled...\", configDirectory.getName()));\n-            }\n-        }\n-    }\n-\n-    private void removeProcessingDirectory(File configDirectory) {\n-        processingDirectories.remove(configDirectory);\n-    }\n-\n-    private void notifyProcessingDirectory(File configDirectory) {\n-        configDirectory.notifyAll();\n-    }\n-\n-    private List<ConfigurationListener> getListeners(File configFile) {\n-        return listenersRepository.computeIfAbsent(configFile, p -> new LinkedList<>());\n-    }\n-\n-    private void fireConfigChangeEvent(File configDirectory, File configFile, ConfigChangeType configChangeType) {\n-        String key = configFile.getName();\n-        String value = getConfig(configFile);\n-        // fire ConfigChangeEvent one by one\n-        getListeners(configFile).forEach(listener -> {\n-            try {\n-                listener.process(new ConfigChangedEvent(key, configDirectory.getName(), value, configChangeType));\n-            } catch (Throwable e) {\n-                if (logger.isErrorEnabled()) {\n-                    logger.error(e.getMessage(), e);\n-                }\n-            }\n-        });\n-    }\n-\n-    private boolean canRead(File file) {\n-        return file.exists() && file.canRead();\n-    }\n-\n-    @Override\n-    public Object getInternalProperty(String key) {\n-        return null;\n-    }\n-\n-    @Override\n-    protected boolean doPublishConfig(String pathKey, String content) throws Exception {\n-        return delay(pathKey, configFile -> {\n-            FileUtils.write(configFile, content, getEncoding());\n-            return true;\n-        });\n-    }\n-\n-    @Override\n-    protected String doGetConfig(String pathKey) throws Exception {\n-        File configFile = new File(pathKey);\n-        return getConfig(configFile);\n-    }\n-\n-    @Override\n-    protected boolean doRemoveConfig(String pathKey) throws Exception {\n-        delay(pathKey, configFile -> {\n-            String content = getConfig(configFile);\n-            FileUtils.deleteQuietly(configFile);\n-            return content;\n-        });\n-        return true;\n-    }\n-\n-    @Override\n-    protected Collection<String> doGetConfigKeys(String groupPath) {\n-        File[] files = new File(groupPath).listFiles(File::isFile);\n-        if (files == null) {\n-            return new TreeSet<>();\n-        } else {\n-            return Stream.of(files)\n-                    .map(File::getName)\n-                    .collect(Collectors.toList());\n-        }\n-    }\n-\n-    @Override\n-    protected void doAddListener(String pathKey, ConfigurationListener listener) {\n-        doInListener(pathKey, (configFilePath, listeners) -> {\n-            if (listeners.isEmpty()) { // If no element, it indicates watchService was registered before\n-                ThrowableConsumer.execute(configFilePath, configFile -> {\n-                    FileUtils.forceMkdirParent(configFile);\n-                    // A rootDirectory to be watched\n-                    File configDirectory = configFile.getParentFile();\n-                    if (configDirectory != null) {\n-                        // Register the configDirectory\n-                        configDirectory.toPath().register(watchService.get(), INTEREST_PATH_KINDS, MODIFIERS);\n-                    }\n-                });\n-            }\n-            // Add into cache\n-            listeners.add(listener);\n-        });\n-    }\n-\n-    @Override\n-    protected void doRemoveListener(String pathKey, ConfigurationListener listener) {\n-        doInListener(pathKey, (file, listeners) -> {\n-            // Remove into cache\n-            listeners.remove(listener);\n-        });\n-    }\n-\n-    /**\n-     * Delay action for {@link #configFile(String, String) config file}\n-     *\n-     * @param configFilePath the key to represent a configuration\n-     * @param function       the customized {@link Function function} with {@link File}\n-     * @param <V>            the computed value\n-     * @return\n-     */\n-    protected <V> V delay(String configFilePath, ThrowableFunction<File, V> function) {\n-        File configFile = new File(configFilePath);\n-        // Must be based on PoolingWatchService and has listeners under config file\n-        if (isBasedPoolingWatchService()) {\n-            File configDirectory = configFile.getParentFile();\n-            executeMutually(configDirectory, () -> {\n-                if (hasListeners(configFile) && isProcessing(configDirectory)) {\n-                    Integer delay = getDelay();\n-                    if (delay != null) {\n-                        // wait for delay in seconds\n-                        long timeout = SECONDS.toMillis(delay);\n-                        if (logger.isDebugEnabled()) {\n-                            logger.debug(format(\"The config[path : %s] is about to delay in %d ms.\",\n-                                    configFilePath, timeout));\n-                        }\n-                        configDirectory.wait(timeout);\n-                    }\n-                }\n-                addProcessing(configDirectory);\n-                return null;\n-            });\n-        }\n-\n-        V value = null;\n-\n-        try {\n-            value = function.apply(configFile);\n-        } catch (Throwable e) {\n-            if (logger.isErrorEnabled()) {\n-                logger.error(e.getMessage(), e);\n-            }\n-        }\n-\n-        return value;\n-    }\n-\n-    private boolean hasListeners(File configFile) {\n-        return getListeners(configFile).size() > 0;\n-    }\n-\n-    /**\n-     * Is processing on {@link #buildGroupPath(String) config rootDirectory}\n-     *\n-     * @param configDirectory {@link #buildGroupPath(String) config rootDirectory}\n-     * @return if processing , return <code>true</code>, or <code>false</code>\n-     */\n-    private boolean isProcessing(File configDirectory) {\n-        return processingDirectories.contains(configDirectory);\n-    }\n-\n-    private void addProcessing(File configDirectory) {\n-        processingDirectories.add(configDirectory);\n-    }\n-\n-    public Set<String> getConfigGroups() {\n-        return Stream.of(getRootDirectory().listFiles())\n-                .filter(File::isDirectory)\n-                .map(File::getName)\n-                .collect(Collectors.toSet());\n-    }\n-\n-    protected String getConfig(File configFile) {\n-        return ThrowableFunction.execute(configFile,\n-                file -> canRead(configFile) ? readFileToString(configFile, getEncoding()) : null);\n-    }\n-\n-    @Override\n-    protected void doClose() throws Exception {\n-\n-    }\n-\n-    public File getRootDirectory() {\n-        return rootDirectory;\n-    }\n-\n-    public String getEncoding() {\n-        return encoding;\n-    }\n-\n-    protected Integer getDelay() {\n-        return DELAY;\n-    }\n-\n-    /**\n-     * It's whether the implementation of {@link WatchService} is based on {@linkplain sun.nio.fs.PollingWatchService}\n-     * or not.\n-     * <p>\n-     *\n-     * @return if based, return <code>true</code>, or <code>false</code>\n-     * @see #detectPoolingBasedWatchService(Optional)\n-     */\n-    protected static boolean isBasedPoolingWatchService() {\n-        return BASED_POOLING_WATCH_SERVICE;\n-    }\n-\n-    protected static ThreadPoolExecutor getWatchEventsLoopThreadPool() {\n-        return WATCH_EVENTS_LOOP_THREAD_POOL;\n-    }\n-\n-    protected ThreadPoolExecutor getWorkersThreadPool() {\n-        return super.getWorkersThreadPool();\n-    }\n-\n-    private <V> V executeMutually(final Object mutex, Callable<V> callable) {\n-        V value = null;\n-        synchronized (mutex) {\n-            try {\n-                value = callable.call();\n-            } catch (Exception e) {\n-                if (logger.isErrorEnabled()) {\n-                    logger.error(e.getMessage(), e);\n-                }\n-            }\n-        }\n-        return value;\n-    }\n-\n-    private static <T> T[] of(T... values) {\n-        return values;\n-    }\n-\n-    private static Integer initDelay(WatchEvent.Modifier[] modifiers) {\n-        if (isBasedPoolingWatchService()) {\n-            return 2;\n-        } else {\n-            return null;\n-        }\n-    }\n-\n-    private static WatchEvent.Modifier[] initWatchEventModifiers() {\n-        return of();\n-    }\n-\n-    /**\n-     * Detect the argument of {@link WatchService} is based on {@linkplain sun.nio.fs.PollingWatchService}\n-     * or not.\n-     * <p>\n-     * Some platforms do not provide the native implementation of {@link WatchService}, just use\n-     * {@linkplain sun.nio.fs.PollingWatchService} in periodic poll file modifications.\n-     *\n-     * @param watchService the instance of {@link WatchService}\n-     * @return if based, return <code>true</code>, or <code>false</code>\n-     */\n-    private static boolean detectPoolingBasedWatchService(Optional<WatchService> watchService) {\n-        String className = watchService.map(Object::getClass).map(Class::getName).orElse(null);\n-        return POLLING_WATCH_SERVICE_CLASS_NAME.equals(className);\n-    }\n-\n-    private static Optional<WatchService> newWatchService() {\n-        Optional<WatchService> watchService = null;\n-        FileSystem fileSystem = FileSystems.getDefault();\n-        try {\n-            watchService = Optional.of(fileSystem.newWatchService());\n-        } catch (IOException e) {\n-            if (logger.isErrorEnabled()) {\n-                logger.error(e.getMessage(), e);\n-            }\n-            watchService = Optional.empty();\n-        }\n-        return watchService;\n-    }\n-\n-    protected static File initDirectory(URL url) {\n-        String directoryPath = getParameter(url, CONFIG_CENTER_DIR_PARAM_NAME, url == null ? null : url.getPath());\n-        File rootDirectory = null;\n-        if (!StringUtils.isBlank(directoryPath)) {\n-            rootDirectory = new File(\"/\" + directoryPath);\n-        }\n-\n-        if (directoryPath == null || !rootDirectory.exists()) { // If the directory does not exist\n-            rootDirectory = new File(DEFAULT_CONFIG_CENTER_DIR_PATH);\n-        }\n-\n-        if (!rootDirectory.exists() && !rootDirectory.mkdirs()) {\n-            throw new IllegalStateException(format(\"Dubbo config center rootDirectory[%s] can't be created!\",\n-                    rootDirectory.getAbsolutePath()));\n-        }\n-        return rootDirectory;\n-    }\n-\n-    protected static String getEncoding(URL url) {\n-        return getParameter(url, CONFIG_CENTER_ENCODING_PARAM_NAME, DEFAULT_CONFIG_CENTER_ENCODING);\n-    }\n-\n-    private static ThreadPoolExecutor newWatchEventsLoopThreadPool() {\n-        return new ThreadPoolExecutor(THREAD_POOL_SIZE, THREAD_POOL_SIZE,\n-                0L, MILLISECONDS,\n-                new SynchronousQueue(),\n-                new NamedThreadFactory(\"dubbo-config-center-watch-events-loop\", true));\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config.configcenter.file;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+import org.apache.dubbo.common.config.configcenter.TreePathDynamicConfiguration;\r\n+import org.apache.dubbo.common.function.ThrowableConsumer;\r\n+import org.apache.dubbo.common.function.ThrowableFunction;\r\n+import org.apache.dubbo.common.lang.ShutdownHookCallbacks;\r\n+import org.apache.dubbo.common.utils.NamedThreadFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import org.apache.commons.io.FileUtils;\r\n+import org.apache.commons.logging.Log;\r\n+import org.apache.commons.logging.LogFactory;\r\n+\r\n+import java.io.File;\r\n+import java.io.IOException;\r\n+import java.nio.file.FileSystem;\r\n+import java.nio.file.FileSystems;\r\n+import java.nio.file.Path;\r\n+import java.nio.file.WatchEvent;\r\n+import java.nio.file.WatchKey;\r\n+import java.nio.file.WatchService;\r\n+import java.util.Collection;\r\n+import java.util.Collections;\r\n+import java.util.HashMap;\r\n+import java.util.LinkedHashMap;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Optional;\r\n+import java.util.Set;\r\n+import java.util.TreeSet;\r\n+import java.util.concurrent.Callable;\r\n+import java.util.concurrent.SynchronousQueue;\r\n+import java.util.concurrent.ThreadPoolExecutor;\r\n+import java.util.function.BiConsumer;\r\n+import java.util.function.Function;\r\n+import java.util.stream.Collectors;\r\n+import java.util.stream.Stream;\r\n+\r\n+import static java.lang.String.format;\r\n+import static java.nio.file.StandardWatchEventKinds.ENTRY_CREATE;\r\n+import static java.nio.file.StandardWatchEventKinds.ENTRY_DELETE;\r\n+import static java.nio.file.StandardWatchEventKinds.ENTRY_MODIFY;\r\n+import static java.util.Collections.emptySet;\r\n+import static java.util.Collections.unmodifiableMap;\r\n+import static java.util.concurrent.TimeUnit.MILLISECONDS;\r\n+import static java.util.concurrent.TimeUnit.SECONDS;\r\n+import static org.apache.commons.io.FileUtils.readFileToString;\r\n+\r\n+/**\r\n+ * File-System based {@link DynamicConfiguration} implementation\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class FileSystemDynamicConfiguration extends TreePathDynamicConfiguration {\r\n+\r\n+    public static final String CONFIG_CENTER_DIR_PARAM_NAME = PARAM_NAME_PREFIX + \"dir\";\r\n+\r\n+    public static final String CONFIG_CENTER_ENCODING_PARAM_NAME = PARAM_NAME_PREFIX + \"encoding\";\r\n+\r\n+    public static final String DEFAULT_CONFIG_CENTER_DIR_PATH = System.getProperty(\"user.home\") + File.separator\r\n+            + \".dubbo\" + File.separator + \"config-center\";\r\n+\r\n+    public static final int DEFAULT_THREAD_POOL_SIZE = 1;\r\n+\r\n+    public static final String DEFAULT_CONFIG_CENTER_ENCODING = \"UTF-8\";\r\n+\r\n+    private static final WatchEvent.Kind[] INTEREST_PATH_KINDS = of(ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);\r\n+\r\n+    /**\r\n+     * The class name of {@linkplain sun.nio.fs.PollingWatchService}\r\n+     */\r\n+    private static final String POLLING_WATCH_SERVICE_CLASS_NAME = \"sun.nio.fs.PollingWatchService\";\r\n+\r\n+    private static final int THREAD_POOL_SIZE = 1;\r\n+\r\n+    /**\r\n+     * Logger\r\n+     */\r\n+    private static final Log logger = LogFactory.getLog(FileSystemDynamicConfiguration.class);\r\n+\r\n+\r\n+    /**\r\n+     * The unmodifiable map for {@link ConfigChangeType} whose key is the {@link WatchEvent.Kind#name() name} of\r\n+     * {@link WatchEvent.Kind WatchEvent's Kind}\r\n+     */\r\n+    private static final Map<String, ConfigChangeType> CONFIG_CHANGE_TYPES_MAP =\r\n+            unmodifiableMap(new HashMap<String, ConfigChangeType>() {\r\n+                // Initializes the elements that is mapping ConfigChangeType\r\n+                {\r\n+                    put(ENTRY_CREATE.name(), ConfigChangeType.ADDED);\r\n+                    put(ENTRY_DELETE.name(), ConfigChangeType.DELETED);\r\n+                    put(ENTRY_MODIFY.name(), ConfigChangeType.MODIFIED);\r\n+                }\r\n+            });\r\n+\r\n+    private static final Optional<WatchService> watchService;\r\n+\r\n+    /**\r\n+     * Is Pooling Based Watch Service\r\n+     *\r\n+     * @see #detectPoolingBasedWatchService(Optional)\r\n+     */\r\n+    private static final boolean BASED_POOLING_WATCH_SERVICE;\r\n+\r\n+    private static final WatchEvent.Modifier[] MODIFIERS;\r\n+\r\n+    /**\r\n+     * the delay to action in seconds. If null, execute indirectly\r\n+     */\r\n+    private static final Integer DELAY;\r\n+\r\n+    /**\r\n+     * The thread pool for {@link WatchEvent WatchEvents} loop\r\n+     * It's optional if there is not any {@link ConfigurationListener} registration\r\n+     *\r\n+     * @see ThreadPoolExecutor\r\n+     */\r\n+    private static final ThreadPoolExecutor WATCH_EVENTS_LOOP_THREAD_POOL;\r\n+\r\n+    // static initialization\r\n+    static {\r\n+        watchService = newWatchService();\r\n+        BASED_POOLING_WATCH_SERVICE = detectPoolingBasedWatchService(watchService);\r\n+        MODIFIERS = initWatchEventModifiers();\r\n+        DELAY = initDelay(MODIFIERS);\r\n+        WATCH_EVENTS_LOOP_THREAD_POOL = newWatchEventsLoopThreadPool();\r\n+        registerDubboShutdownHook();\r\n+    }\r\n+\r\n+    /**\r\n+     * The Root Directory for config center\r\n+     */\r\n+    private final File rootDirectory;\r\n+\r\n+    private final String encoding;\r\n+\r\n+    /**\r\n+     * The {@link Set} of {@link #groupDirectory(String) directories} that may be processing,\r\n+     * <p>\r\n+     * if {@link #isBasedPoolingWatchService()} is <code>false</code>, this properties will be\r\n+     * {@link Collections#emptySet() empty}\r\n+     *\r\n+     * @see #initProcessingDirectories()\r\n+     */\r\n+    private final Set<File> processingDirectories;\r\n+\r\n+    private final Map<File, List<ConfigurationListener>> listenersRepository;\r\n+\r\n+    public FileSystemDynamicConfiguration() {\r\n+        this(new File(DEFAULT_CONFIG_CENTER_DIR_PATH));\r\n+    }\r\n+\r\n+    public FileSystemDynamicConfiguration(File rootDirectory) {\r\n+        this(rootDirectory, DEFAULT_CONFIG_CENTER_ENCODING);\r\n+    }\r\n+\r\n+    public FileSystemDynamicConfiguration(File rootDirectory, String encoding) {\r\n+        this(rootDirectory, encoding, DEFAULT_THREAD_POOL_PREFIX);\r\n+    }\r\n+\r\n+    public FileSystemDynamicConfiguration(File rootDirectory, String encoding, String threadPoolPrefixName) {\r\n+        this(rootDirectory, encoding, threadPoolPrefixName, DEFAULT_THREAD_POOL_SIZE);\r\n+    }\r\n+\r\n+    public FileSystemDynamicConfiguration(File rootDirectory, String encoding, String threadPoolPrefixName,\r\n+                                          int threadPoolSize) {\r\n+        this(rootDirectory, encoding, threadPoolPrefixName, threadPoolSize, DEFAULT_THREAD_POOL_KEEP_ALIVE_TIME);\r\n+    }\r\n+\r\n+    public FileSystemDynamicConfiguration(File rootDirectory, String encoding,\r\n+                                          String threadPoolPrefixName,\r\n+                                          int threadPoolSize,\r\n+                                          long keepAliveTime) {\r\n+        super(rootDirectory.getAbsolutePath(), threadPoolPrefixName, threadPoolSize, keepAliveTime, DEFAULT_GROUP, -1L);\r\n+        this.rootDirectory = rootDirectory;\r\n+        this.encoding = encoding;\r\n+        this.processingDirectories = initProcessingDirectories();\r\n+        this.listenersRepository = new LinkedHashMap<>();\r\n+    }\r\n+\r\n+    public FileSystemDynamicConfiguration(URL url) {\r\n+        this(initDirectory(url), getEncoding(url), getThreadPoolPrefixName(url), getThreadPoolSize(url),\r\n+                getThreadPoolKeepAliveTime(url));\r\n+    }\r\n+\r\n+    private Set<File> initProcessingDirectories() {\r\n+        return isBasedPoolingWatchService() ? new LinkedHashSet<>() : emptySet();\r\n+    }\r\n+\r\n+    public File configFile(String key, String group) {\r\n+        return new File(buildPathKey(group, key));\r\n+    }\r\n+\r\n+    private void doInListener(String configFilePath, BiConsumer<File, List<ConfigurationListener>> consumer) {\r\n+        watchService.ifPresent(watchService -> {\r\n+            File configFile = new File(configFilePath);\r\n+            executeMutually(configFile.getParentFile(), () -> {\r\n+                // process the WatchEvents if not start\r\n+                if (!isProcessingWatchEvents()) {\r\n+                    processWatchEvents(watchService);\r\n+                }\r\n+\r\n+                List<ConfigurationListener> listeners = getListeners(configFile);\r\n+                consumer.accept(configFile, listeners);\r\n+\r\n+                // Nothing to return\r\n+                return null;\r\n+            });\r\n+        });\r\n+    }\r\n+\r\n+    /**\r\n+     * Register the Dubbo ShutdownHook\r\n+     *\r\n+     * @since 2.7.8\r\n+     */\r\n+    private static void registerDubboShutdownHook() {\r\n+        ShutdownHookCallbacks.INSTANCE.addCallback(() -> {\r\n+            watchService.ifPresent(w -> {\r\n+                try {\r\n+                    w.close();\r\n+                } catch (IOException e) {\r\n+                    throw new RuntimeException(e);\r\n+                }\r\n+            });\r\n+            getWatchEventsLoopThreadPool().shutdown();\r\n+        });\r\n+    }\r\n+\r\n+    private static boolean isProcessingWatchEvents() {\r\n+        return getWatchEventsLoopThreadPool().getActiveCount() > 0;\r\n+    }\r\n+\r\n+    /**\r\n+     * Process the {@link WatchEvent WatchEvents} loop in async execution\r\n+     *\r\n+     * @param watchService {@link WatchService}\r\n+     */\r\n+    private void processWatchEvents(WatchService watchService) {\r\n+        getWatchEventsLoopThreadPool().execute(() -> { // WatchEvents Loop\r\n+            while (true) {\r\n+                WatchKey watchKey = null;\r\n+                try {\r\n+                    watchKey = watchService.take();\r\n+                    if (watchKey.isValid()) {\r\n+                        for (WatchEvent event : watchKey.pollEvents()) {\r\n+                            WatchEvent.Kind kind = event.kind();\r\n+                            // configChangeType's key to match WatchEvent's Kind\r\n+                            ConfigChangeType configChangeType = CONFIG_CHANGE_TYPES_MAP.get(kind.name());\r\n+                            if (configChangeType != null) {\r\n+                                Path configDirectoryPath = (Path) watchKey.watchable();\r\n+                                Path currentPath = (Path) event.context();\r\n+                                Path configFilePath = configDirectoryPath.resolve(currentPath);\r\n+                                File configDirectory = configDirectoryPath.toFile();\r\n+                                executeMutually(configDirectory, () -> {\r\n+                                    fireConfigChangeEvent(configDirectory, configFilePath.toFile(), configChangeType);\r\n+                                    signalConfigDirectory(configDirectory);\r\n+                                    return null;\r\n+                                });\r\n+                            }\r\n+                        }\r\n+                    }\r\n+                } catch (Exception e) {\r\n+                    return;\r\n+                } finally {\r\n+                    if (watchKey != null) {\r\n+                        // reset\r\n+                        watchKey.reset();\r\n+                    }\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    private void signalConfigDirectory(File configDirectory) {\r\n+        if (isBasedPoolingWatchService()) {\r\n+            // remove configDirectory from processing set because it's done\r\n+            removeProcessingDirectory(configDirectory);\r\n+            // notify configDirectory\r\n+            notifyProcessingDirectory(configDirectory);\r\n+            if (logger.isDebugEnabled()) {\r\n+                logger.debug(format(\"The config rootDirectory[%s] is signalled...\", configDirectory.getName()));\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private void removeProcessingDirectory(File configDirectory) {\r\n+        processingDirectories.remove(configDirectory);\r\n+    }\r\n+\r\n+    private void notifyProcessingDirectory(File configDirectory) {\r\n+        configDirectory.notifyAll();\r\n+    }\r\n+\r\n+    private List<ConfigurationListener> getListeners(File configFile) {\r\n+        return listenersRepository.computeIfAbsent(configFile, p -> new LinkedList<>());\r\n+    }\r\n+\r\n+    private void fireConfigChangeEvent(File configDirectory, File configFile, ConfigChangeType configChangeType) {\r\n+        String key = configFile.getName();\r\n+        String value = getConfig(configFile);\r\n+        // fire ConfigChangeEvent one by one\r\n+        getListeners(configFile).forEach(listener -> {\r\n+            try {\r\n+                listener.process(new ConfigChangedEvent(key, configDirectory.getName(), value, configChangeType));\r\n+            } catch (Throwable e) {\r\n+                if (logger.isErrorEnabled()) {\r\n+                    logger.error(e.getMessage(), e);\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    private boolean canRead(File file) {\r\n+        return file.exists() && file.canRead();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getInternalProperty(String key) {\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected boolean doPublishConfig(String pathKey, String content) throws Exception {\r\n+        return delay(pathKey, configFile -> {\r\n+            FileUtils.write(configFile, content, getEncoding());\r\n+            return true;\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String doGetConfig(String pathKey) throws Exception {\r\n+        File configFile = new File(pathKey);\r\n+        return getConfig(configFile);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected boolean doRemoveConfig(String pathKey) throws Exception {\r\n+        delay(pathKey, configFile -> {\r\n+            String content = getConfig(configFile);\r\n+            FileUtils.deleteQuietly(configFile);\r\n+            return content;\r\n+        });\r\n+        return true;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Collection<String> doGetConfigKeys(String groupPath) {\r\n+        File[] files = new File(groupPath).listFiles(File::isFile);\r\n+        if (files == null) {\r\n+            return new TreeSet<>();\r\n+        } else {\r\n+            return Stream.of(files)\r\n+                    .map(File::getName)\r\n+                    .collect(Collectors.toList());\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doAddListener(String pathKey, ConfigurationListener listener) {\r\n+        doInListener(pathKey, (configFilePath, listeners) -> {\r\n+            if (listeners.isEmpty()) { // If no element, it indicates watchService was registered before\r\n+                ThrowableConsumer.execute(configFilePath, configFile -> {\r\n+                    FileUtils.forceMkdirParent(configFile);\r\n+                    // A rootDirectory to be watched\r\n+                    File configDirectory = configFile.getParentFile();\r\n+                    if (configDirectory != null) {\r\n+                        // Register the configDirectory\r\n+                        configDirectory.toPath().register(watchService.get(), INTEREST_PATH_KINDS, MODIFIERS);\r\n+                    }\r\n+                });\r\n+            }\r\n+            // Add into cache\r\n+            listeners.add(listener);\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doRemoveListener(String pathKey, ConfigurationListener listener) {\r\n+        doInListener(pathKey, (file, listeners) -> {\r\n+            // Remove into cache\r\n+            listeners.remove(listener);\r\n+        });\r\n+    }\r\n+\r\n+    /**\r\n+     * Delay action for {@link #configFile(String, String) config file}\r\n+     *\r\n+     * @param configFilePath the key to represent a configuration\r\n+     * @param function       the customized {@link Function function} with {@link File}\r\n+     * @param <V>            the computed value\r\n+     * @return\r\n+     */\r\n+    protected <V> V delay(String configFilePath, ThrowableFunction<File, V> function) {\r\n+        File configFile = new File(configFilePath);\r\n+        // Must be based on PoolingWatchService and has listeners under config file\r\n+        if (isBasedPoolingWatchService()) {\r\n+            File configDirectory = configFile.getParentFile();\r\n+            executeMutually(configDirectory, () -> {\r\n+                if (hasListeners(configFile) && isProcessing(configDirectory)) {\r\n+                    Integer delay = getDelay();\r\n+                    if (delay != null) {\r\n+                        // wait for delay in seconds\r\n+                        long timeout = SECONDS.toMillis(delay);\r\n+                        if (logger.isDebugEnabled()) {\r\n+                            logger.debug(format(\"The config[path : %s] is about to delay in %d ms.\",\r\n+                                    configFilePath, timeout));\r\n+                        }\r\n+                        configDirectory.wait(timeout);\r\n+                    }\r\n+                }\r\n+                addProcessing(configDirectory);\r\n+                return null;\r\n+            });\r\n+        }\r\n+\r\n+        V value = null;\r\n+\r\n+        try {\r\n+            value = function.apply(configFile);\r\n+        } catch (Throwable e) {\r\n+            if (logger.isErrorEnabled()) {\r\n+                logger.error(e.getMessage(), e);\r\n+            }\r\n+        }\r\n+\r\n+        return value;\r\n+    }\r\n+\r\n+    private boolean hasListeners(File configFile) {\r\n+        return getListeners(configFile).size() > 0;\r\n+    }\r\n+\r\n+    /**\r\n+     * Is processing on {@link #buildGroupPath(String) config rootDirectory}\r\n+     *\r\n+     * @param configDirectory {@link #buildGroupPath(String) config rootDirectory}\r\n+     * @return if processing , return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    private boolean isProcessing(File configDirectory) {\r\n+        return processingDirectories.contains(configDirectory);\r\n+    }\r\n+\r\n+    private void addProcessing(File configDirectory) {\r\n+        processingDirectories.add(configDirectory);\r\n+    }\r\n+\r\n+    public Set<String> getConfigGroups() {\r\n+        return Stream.of(getRootDirectory().listFiles())\r\n+                .filter(File::isDirectory)\r\n+                .map(File::getName)\r\n+                .collect(Collectors.toSet());\r\n+    }\r\n+\r\n+    protected String getConfig(File configFile) {\r\n+        return ThrowableFunction.execute(configFile,\r\n+                file -> canRead(configFile) ? readFileToString(configFile, getEncoding()) : null);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doClose() throws Exception {\r\n+\r\n+    }\r\n+\r\n+    public File getRootDirectory() {\r\n+        return rootDirectory;\r\n+    }\r\n+\r\n+    public String getEncoding() {\r\n+        return encoding;\r\n+    }\r\n+\r\n+    protected Integer getDelay() {\r\n+        return DELAY;\r\n+    }\r\n+\r\n+    /**\r\n+     * It's whether the implementation of {@link WatchService} is based on {@linkplain sun.nio.fs.PollingWatchService}\r\n+     * or not.\r\n+     * <p>\r\n+     *\r\n+     * @return if based, return <code>true</code>, or <code>false</code>\r\n+     * @see #detectPoolingBasedWatchService(Optional)\r\n+     */\r\n+    protected static boolean isBasedPoolingWatchService() {\r\n+        return BASED_POOLING_WATCH_SERVICE;\r\n+    }\r\n+\r\n+    protected static ThreadPoolExecutor getWatchEventsLoopThreadPool() {\r\n+        return WATCH_EVENTS_LOOP_THREAD_POOL;\r\n+    }\r\n+\r\n+    protected ThreadPoolExecutor getWorkersThreadPool() {\r\n+        return super.getWorkersThreadPool();\r\n+    }\r\n+\r\n+    private <V> V executeMutually(final Object mutex, Callable<V> callable) {\r\n+        V value = null;\r\n+        synchronized (mutex) {\r\n+            try {\r\n+                value = callable.call();\r\n+            } catch (Exception e) {\r\n+                if (logger.isErrorEnabled()) {\r\n+                    logger.error(e.getMessage(), e);\r\n+                }\r\n+            }\r\n+        }\r\n+        return value;\r\n+    }\r\n+\r\n+    private static <T> T[] of(T... values) {\r\n+        return values;\r\n+    }\r\n+\r\n+    private static Integer initDelay(WatchEvent.Modifier[] modifiers) {\r\n+        if (isBasedPoolingWatchService()) {\r\n+            return 2;\r\n+        } else {\r\n+            return null;\r\n+        }\r\n+    }\r\n+\r\n+    private static WatchEvent.Modifier[] initWatchEventModifiers() {\r\n+        return of();\r\n+    }\r\n+\r\n+    /**\r\n+     * Detect the argument of {@link WatchService} is based on {@linkplain sun.nio.fs.PollingWatchService}\r\n+     * or not.\r\n+     * <p>\r\n+     * Some platforms do not provide the native implementation of {@link WatchService}, just use\r\n+     * {@linkplain sun.nio.fs.PollingWatchService} in periodic poll file modifications.\r\n+     *\r\n+     * @param watchService the instance of {@link WatchService}\r\n+     * @return if based, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    private static boolean detectPoolingBasedWatchService(Optional<WatchService> watchService) {\r\n+        String className = watchService.map(Object::getClass).map(Class::getName).orElse(null);\r\n+        return POLLING_WATCH_SERVICE_CLASS_NAME.equals(className);\r\n+    }\r\n+\r\n+    private static Optional<WatchService> newWatchService() {\r\n+        Optional<WatchService> watchService = null;\r\n+        FileSystem fileSystem = FileSystems.getDefault();\r\n+        try {\r\n+            watchService = Optional.of(fileSystem.newWatchService());\r\n+        } catch (IOException e) {\r\n+            if (logger.isErrorEnabled()) {\r\n+                logger.error(e.getMessage(), e);\r\n+            }\r\n+            watchService = Optional.empty();\r\n+        }\r\n+        return watchService;\r\n+    }\r\n+\r\n+    protected static File initDirectory(URL url) {\r\n+        String directoryPath = getParameter(url, CONFIG_CENTER_DIR_PARAM_NAME, url == null ? null : url.getPath());\r\n+        File rootDirectory = null;\r\n+        if (!StringUtils.isBlank(directoryPath)) {\r\n+            rootDirectory = new File(\"/\" + directoryPath);\r\n+        }\r\n+\r\n+        if (directoryPath == null || !rootDirectory.exists()) { // If the directory does not exist\r\n+            rootDirectory = new File(DEFAULT_CONFIG_CENTER_DIR_PATH);\r\n+        }\r\n+\r\n+        if (!rootDirectory.exists() && !rootDirectory.mkdirs()) {\r\n+            throw new IllegalStateException(format(\"Dubbo config center rootDirectory[%s] can't be created!\",\r\n+                    rootDirectory.getAbsolutePath()));\r\n+        }\r\n+        return rootDirectory;\r\n+    }\r\n+\r\n+    protected static String getEncoding(URL url) {\r\n+        return getParameter(url, CONFIG_CENTER_ENCODING_PARAM_NAME, DEFAULT_CONFIG_CENTER_ENCODING);\r\n+    }\r\n+\r\n+    private static ThreadPoolExecutor newWatchEventsLoopThreadPool() {\r\n+        return new ThreadPoolExecutor(THREAD_POOL_SIZE, THREAD_POOL_SIZE,\r\n+                0L, MILLISECONDS,\r\n+                new SynchronousQueue(),\r\n+                new NamedThreadFactory(\"dubbo-config-center-watch-events-loop\", true));\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationFactory.java", "source2": "org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,35 +1,35 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config.configcenter.file;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory;\n-\n-/**\n- * File-System based {@link DynamicConfigurationFactory} implementation\n- *\n- * @since 2.7.5\n- */\n-public class FileSystemDynamicConfigurationFactory extends AbstractDynamicConfigurationFactory {\n-\n-    @Override\n-    protected DynamicConfiguration createDynamicConfiguration(URL url) {\n-        return new FileSystemDynamicConfiguration(url);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config.configcenter.file;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory;\r\n+\r\n+/**\r\n+ * File-System based {@link DynamicConfigurationFactory} implementation\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class FileSystemDynamicConfigurationFactory extends AbstractDynamicConfigurationFactory {\r\n+\r\n+    @Override\r\n+    protected DynamicConfiguration createDynamicConfiguration(URL url) {\r\n+        return new FileSystemDynamicConfiguration(url);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfiguration.java", "source2": "org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfiguration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,72 +1,72 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config.configcenter.nop;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-\n-import java.util.SortedSet;\n-\n-/**\n- * The default extension of {@link DynamicConfiguration}. If user does not specify a config center, or specifies one\n- * that is not a valid extension, it will default to this one.\n- */\n-@Deprecated\n-public class NopDynamicConfiguration implements DynamicConfiguration {\n-\n-    public NopDynamicConfiguration(URL url) {\n-        // no-op\n-    }\n-\n-    @Override\n-    public Object getInternalProperty(String key) {\n-        return null;\n-    }\n-\n-    @Override\n-    public void addListener(String key, String group, ConfigurationListener listener) {\n-        // no-op\n-    }\n-\n-    @Override\n-    public void removeListener(String key, String group, ConfigurationListener listener) {\n-        // no-op\n-    }\n-\n-    @Override\n-    public String getConfig(String key, String group, long timeout) throws IllegalStateException {\n-        // no-op\n-        return null;\n-    }\n-\n-    /**\n-     * @since 2.7.5\n-     */\n-    @Override\n-    public boolean publishConfig(String key, String group, String content) {\n-        return true;\n-    }\n-\n-    /**\n-     * @since 2.7.5\n-     */\n-    @Override\n-    public SortedSet<String> getConfigKeys(String group) {\n-        return null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config.configcenter.nop;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+\r\n+import java.util.SortedSet;\r\n+\r\n+/**\r\n+ * The default extension of {@link DynamicConfiguration}. If user does not specify a config center, or specifies one\r\n+ * that is not a valid extension, it will default to this one.\r\n+ */\r\n+@Deprecated\r\n+public class NopDynamicConfiguration implements DynamicConfiguration {\r\n+\r\n+    public NopDynamicConfiguration(URL url) {\r\n+        // no-op\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getInternalProperty(String key) {\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addListener(String key, String group, ConfigurationListener listener) {\r\n+        // no-op\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeListener(String key, String group, ConfigurationListener listener) {\r\n+        // no-op\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getConfig(String key, String group, long timeout) throws IllegalStateException {\r\n+        // no-op\r\n+        return null;\r\n+    }\r\n+\r\n+    /**\r\n+     * @since 2.7.5\r\n+     */\r\n+    @Override\r\n+    public boolean publishConfig(String key, String group, String content) {\r\n+        return true;\r\n+    }\r\n+\r\n+    /**\r\n+     * @since 2.7.5\r\n+     */\r\n+    @Override\r\n+    public SortedSet<String> getConfigKeys(String group) {\r\n+        return null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfigurationFactory.java", "source2": "org/apache/dubbo/common/config/configcenter/nop/NopDynamicConfigurationFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config.configcenter.nop;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-\n-/**\n- *\n- */\n-@Deprecated\n-public class NopDynamicConfigurationFactory extends AbstractDynamicConfigurationFactory {\n-\n-    @Override\n-    protected DynamicConfiguration createDynamicConfiguration(URL url) {\n-        return new NopDynamicConfiguration(url);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config.configcenter.nop;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+@Deprecated\r\n+public class NopDynamicConfigurationFactory extends AbstractDynamicConfigurationFactory {\r\n+\r\n+    @Override\r\n+    protected DynamicConfiguration createDynamicConfiguration(URL url) {\r\n+        return new NopDynamicConfiguration(url);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/config/configcenter/wrapper/CompositeDynamicConfiguration.java", "source2": "org/apache/dubbo/common/config/configcenter/wrapper/CompositeDynamicConfiguration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,101 +1,101 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.config.configcenter.wrapper;\n-\n-import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-\n-import java.util.HashSet;\n-import java.util.Set;\n-import java.util.SortedSet;\n-import java.util.function.Consumer;\n-import java.util.function.Function;\n-\n-/**\n- * support multiple config center, simply iterating each concrete config center.\n- */\n-public class CompositeDynamicConfiguration implements DynamicConfiguration {\n-\n-    public static final String NAME = \"COMPOSITE\";\n-\n-    private Set<DynamicConfiguration> configurations = new HashSet<>();\n-\n-    public void addConfiguration(DynamicConfiguration configuration) {\n-        if (configuration != null) {\n-            this.configurations.add(configuration);\n-        }\n-    }\n-\n-    @Override\n-    public void addListener(String key, String group, ConfigurationListener listener) {\n-        iterateListenerOperation(configuration -> configuration.addListener(key, group, listener));\n-    }\n-\n-    @Override\n-    public void removeListener(String key, String group, ConfigurationListener listener) {\n-        iterateListenerOperation(configuration -> configuration.removeListener(key, group, listener));\n-    }\n-\n-    @Override\n-    public String getConfig(String key, String group, long timeout) throws IllegalStateException {\n-        return (String) iterateConfigOperation(configuration -> configuration.getConfig(key, group, timeout));\n-    }\n-\n-    @Override\n-    public String getProperties(String key, String group, long timeout) throws IllegalStateException {\n-        return (String) iterateConfigOperation(configuration -> configuration.getProperties(key, group, timeout));\n-    }\n-\n-    @Override\n-    public Object getInternalProperty(String key) {\n-        return iterateConfigOperation(configuration -> configuration.getInternalProperty(key));\n-    }\n-\n-    @Override\n-    public boolean publishConfig(String key, String group, String content) throws UnsupportedOperationException {\n-        boolean publishedAll = true;\n-        for (DynamicConfiguration configuration : configurations) {\n-            if (!configuration.publishConfig(key, group, content)) {\n-                publishedAll = false;\n-            }\n-        }\n-        return publishedAll;\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public SortedSet<String> getConfigKeys(String group) throws UnsupportedOperationException {\n-        return (SortedSet<String>) iterateConfigOperation(configuration -> configuration.getConfigKeys(group));\n-    }\n-\n-    private void iterateListenerOperation(Consumer<DynamicConfiguration> consumer) {\n-        for (DynamicConfiguration configuration : configurations) {\n-            consumer.accept(configuration);\n-        }\n-    }\n-\n-    private Object iterateConfigOperation(Function<DynamicConfiguration, Object> func) {\n-        Object value = null;\n-        for (DynamicConfiguration configuration : configurations) {\n-            value = func.apply(configuration);\n-            if (value != null) {\n-                break;\n-            }\n-        }\n-        return value;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.config.configcenter.wrapper;\r\n+\r\n+import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+\r\n+import java.util.HashSet;\r\n+import java.util.Set;\r\n+import java.util.SortedSet;\r\n+import java.util.function.Consumer;\r\n+import java.util.function.Function;\r\n+\r\n+/**\r\n+ * support multiple config center, simply iterating each concrete config center.\r\n+ */\r\n+public class CompositeDynamicConfiguration implements DynamicConfiguration {\r\n+\r\n+    public static final String NAME = \"COMPOSITE\";\r\n+\r\n+    private Set<DynamicConfiguration> configurations = new HashSet<>();\r\n+\r\n+    public void addConfiguration(DynamicConfiguration configuration) {\r\n+        if (configuration != null) {\r\n+            this.configurations.add(configuration);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addListener(String key, String group, ConfigurationListener listener) {\r\n+        iterateListenerOperation(configuration -> configuration.addListener(key, group, listener));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeListener(String key, String group, ConfigurationListener listener) {\r\n+        iterateListenerOperation(configuration -> configuration.removeListener(key, group, listener));\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getConfig(String key, String group, long timeout) throws IllegalStateException {\r\n+        return (String) iterateConfigOperation(configuration -> configuration.getConfig(key, group, timeout));\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getProperties(String key, String group, long timeout) throws IllegalStateException {\r\n+        return (String) iterateConfigOperation(configuration -> configuration.getProperties(key, group, timeout));\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getInternalProperty(String key) {\r\n+        return iterateConfigOperation(configuration -> configuration.getInternalProperty(key));\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean publishConfig(String key, String group, String content) throws UnsupportedOperationException {\r\n+        boolean publishedAll = true;\r\n+        for (DynamicConfiguration configuration : configurations) {\r\n+            if (!configuration.publishConfig(key, group, content)) {\r\n+                publishedAll = false;\r\n+            }\r\n+        }\r\n+        return publishedAll;\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public SortedSet<String> getConfigKeys(String group) throws UnsupportedOperationException {\r\n+        return (SortedSet<String>) iterateConfigOperation(configuration -> configuration.getConfigKeys(group));\r\n+    }\r\n+\r\n+    private void iterateListenerOperation(Consumer<DynamicConfiguration> consumer) {\r\n+        for (DynamicConfiguration configuration : configurations) {\r\n+            consumer.accept(configuration);\r\n+        }\r\n+    }\r\n+\r\n+    private Object iterateConfigOperation(Function<DynamicConfiguration, Object> func) {\r\n+        Object value = null;\r\n+        for (DynamicConfiguration configuration : configurations) {\r\n+            value = func.apply(configuration);\r\n+            if (value != null) {\r\n+                break;\r\n+            }\r\n+        }\r\n+        return value;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/constants/CommonConstants.java", "source2": "org/apache/dubbo/common/constants/CommonConstants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,393 +1,393 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.constants;\n-\n-import org.apache.dubbo.common.URL;\n-\n-import java.net.NetworkInterface;\n-import java.util.Properties;\n-import java.util.concurrent.ExecutorService;\n-import java.util.regex.Pattern;\n-\n-public interface CommonConstants {\n-    String DUBBO = \"dubbo\";\n-\n-    String PROVIDER = \"provider\";\n-\n-    String CONSUMER = \"consumer\";\n-\n-    String APPLICATION_KEY = \"application\";\n-\n-    String REMOTE_APPLICATION_KEY = \"remote.application\";\n-\n-    String ENABLED_KEY = \"enabled\";\n-\n-    String DISABLED_KEY = \"disabled\";\n-\n-    String DUBBO_PROPERTIES_KEY = \"dubbo.properties.file\";\n-\n-    String DEFAULT_DUBBO_PROPERTIES = \"dubbo.properties\";\n-\n-    String ANY_VALUE = \"*\";\n-\n-    /**\n-     * @since 2.7.8\n-     */\n-    char COMMA_SEPARATOR_CHAR = ',';\n-\n-    String COMMA_SEPARATOR = \",\";\n-\n-    String DOT_SEPARATOR = \".\";\n-\n-    Pattern COMMA_SPLIT_PATTERN = Pattern.compile(\"\\\\s*[,]+\\\\s*\");\n-\n-    String PATH_SEPARATOR = \"/\";\n-\n-    String PROTOCOL_SEPARATOR = \"://\";\n-\n-    String PROTOCOL_SEPARATOR_ENCODED = URL.encode(PROTOCOL_SEPARATOR);\n-\n-    String REGISTRY_SEPARATOR = \"|\";\n-\n-    Pattern REGISTRY_SPLIT_PATTERN = Pattern.compile(\"\\\\s*[|;]+\\\\s*\");\n-\n-    Pattern D_REGISTRY_SPLIT_PATTERN = Pattern.compile(\"\\\\s*[|]+\\\\s*\");\n-\n-    String SEMICOLON_SEPARATOR = \";\";\n-\n-    Pattern SEMICOLON_SPLIT_PATTERN = Pattern.compile(\"\\\\s*[;]+\\\\s*\");\n-\n-    Pattern EQUAL_SPLIT_PATTERN = Pattern.compile(\"\\\\s*[=]+\\\\s*\");\n-\n-    Pattern COLON_SPLIT_PATTERN = Pattern.compile(\"\\\\s*[:]+\\\\s*\");\n-\n-    String DEFAULT_PROXY = \"javassist\";\n-\n-    String DEFAULT_DIRECTORY = \"dubbo\";\n-\n-    String PROTOCOL_KEY = \"protocol\";\n-\n-    String DEFAULT_PROTOCOL = \"dubbo\";\n-\n-    String DEFAULT_THREAD_NAME = \"Dubbo\";\n-\n-    int DEFAULT_CORE_THREADS = 0;\n-\n-    int DEFAULT_THREADS = 200;\n-\n-    String EXECUTOR_SERVICE_COMPONENT_KEY = ExecutorService.class.getName();\n-\n-    String THREADPOOL_KEY = \"threadpool\";\n-\n-    String THREAD_NAME_KEY = \"threadname\";\n-\n-    String CORE_THREADS_KEY = \"corethreads\";\n-\n-    String THREADS_KEY = \"threads\";\n-\n-    String QUEUES_KEY = \"queues\";\n-\n-    String ALIVE_KEY = \"alive\";\n-\n-    String DEFAULT_THREADPOOL = \"limited\";\n-\n-    String DEFAULT_CLIENT_THREADPOOL = \"cached\";\n-\n-    String IO_THREADS_KEY = \"iothreads\";\n-\n-    String KEEP_ALIVE_KEY = \"keep.alive\";\n-\n-    int DEFAULT_QUEUES = 0;\n-\n-    int DEFAULT_ALIVE = 60 * 1000;\n-\n-    String TIMEOUT_KEY = \"timeout\";\n-\n-    int DEFAULT_TIMEOUT = 1000;\n-\n-    // used by invocation attachments to transfer timeout from Consumer to Provider.\n-    // works as a replacement of TIMEOUT_KEY on wire, which seems to be totally useless in previous releases).\n-    String TIMEOUT_ATTACHMENT_KEY = \"_TO\";\n-\n-    String TIME_COUNTDOWN_KEY = \"timeout-countdown\";\n-\n-    String ENABLE_TIMEOUT_COUNTDOWN_KEY = \"enable-timeout-countdown\";\n-\n-    String REMOVE_VALUE_PREFIX = \"-\";\n-\n-    String PROPERTIES_CHAR_SEPARATOR = \"-\";\n-\n-    String UNDERLINE_SEPARATOR = \"_\";\n-\n-    String SEPARATOR_REGEX = \"_|-\";\n-\n-    String GROUP_CHAR_SEPARATOR = \":\";\n-\n-    String HIDDEN_KEY_PREFIX = \".\";\n-\n-    String DOT_REGEX = \"\\\\.\";\n-\n-    String DEFAULT_KEY_PREFIX = \"default.\";\n-\n-    String DEFAULT_KEY = \"default\";\n-\n-    String PREFERRED_KEY = \"preferred\";\n-\n-    /**\n-     * Default timeout value in milliseconds for server shutdown\n-     */\n-    int DEFAULT_SERVER_SHUTDOWN_TIMEOUT = 10000;\n-\n-    String SIDE_KEY = \"side\";\n-\n-    String PROVIDER_SIDE = \"provider\";\n-\n-    String CONSUMER_SIDE = \"consumer\";\n-\n-    String ANYHOST_KEY = \"anyhost\";\n-\n-    String ANYHOST_VALUE = \"0.0.0.0\";\n-\n-    String LOCALHOST_KEY = \"localhost\";\n-\n-    String LOCALHOST_VALUE = \"127.0.0.1\";\n-\n-    String METHODS_KEY = \"methods\";\n-\n-    String METHOD_KEY = \"method\";\n-\n-    String PID_KEY = \"pid\";\n-\n-    String TIMESTAMP_KEY = \"timestamp\";\n-\n-    String GROUP_KEY = \"group\";\n-\n-    String PATH_KEY = \"path\";\n-\n-    String INTERFACE_KEY = \"interface\";\n-\n-    String FILE_KEY = \"file\";\n-\n-    String DUMP_DIRECTORY = \"dump.directory\";\n-\n-    String CLASSIFIER_KEY = \"classifier\";\n-\n-    String VERSION_KEY = \"version\";\n-\n-    String REVISION_KEY = \"revision\";\n-\n-    String METADATA_KEY = \"metadata-type\";\n-\n-    String MAPPING_KEY = \"mapping-type\";\n-\n-    String CONFIG_MAPPING_TYPE = \"config\";\n-\n-    String METADATA_MAPPING_TYPE = \"metadata\";\n-\n-    String DEFAULT_METADATA_STORAGE_TYPE = \"local\";\n-\n-    String REMOTE_METADATA_STORAGE_TYPE = \"remote\";\n-\n-    /**\n-     * The composite metadata storage type includes {@link #DEFAULT_METADATA_STORAGE_TYPE \"local\"} and\n-     * {@link #REMOTE_METADATA_STORAGE_TYPE \"remote\"}.\n-     *\n-     * @since 2.7.8\n-     */\n-    String COMPOSITE_METADATA_STORAGE_TYPE = \"composite\";\n-\n-    /**\n-     * Consumer side 's proxy class\n-     */\n-    String PROXY_CLASS_REF = \"refClass\";\n-\n-    /**\n-     * generic call\n-     */\n-    String $INVOKE = \"$invoke\";\n-    String $INVOKE_ASYNC = \"$invokeAsync\";\n-    String GENERIC_PARAMETER_DESC = \"Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/Object;\";\n-\n-    /**\n-     * package version in the manifest\n-     */\n-    String RELEASE_KEY = \"release\";\n-\n-    int MAX_PROXY_COUNT = 65535;\n-\n-    String MONITOR_KEY = \"monitor\";\n-    String CLUSTER_KEY = \"cluster\";\n-    String USERNAME_KEY = \"username\";\n-    String PASSWORD_KEY = \"password\";\n-    String HOST_KEY = \"host\";\n-    String PORT_KEY = \"port\";\n-    String DUBBO_IP_TO_BIND = \"DUBBO_IP_TO_BIND\";\n-\n-    /**\n-     * The property name for {@link NetworkInterface#getDisplayName() the name of network interface} that\n-     * the Dubbo application prefers\n-     *\n-     * @since 2.7.6\n-     */\n-    String DUBBO_PREFERRED_NETWORK_INTERFACE = \"dubbo.network.interface.preferred\";\n-\n-    @Deprecated\n-    String SHUTDOWN_WAIT_SECONDS_KEY = \"dubbo.service.shutdown.wait.seconds\";\n-    String SHUTDOWN_WAIT_KEY = \"dubbo.service.shutdown.wait\";\n-    String DUBBO_PROTOCOL = \"dubbo\";\n-\n-    String DUBBO_LABELS = \"dubbo.labels\";\n-    String DUBBO_ENV_KEYS = \"dubbo.env.keys\";\n-\n-    String CONFIG_CONFIGFILE_KEY = \"config-file\";\n-    String CONFIG_ENABLE_KEY = \"highest-priority\";\n-    String CONFIG_NAMESPACE_KEY = \"namespace\";\n-    String CHECK_KEY = \"check\";\n-\n-    String BACKLOG_KEY = \"backlog\";\n-\n-    String HEARTBEAT_EVENT = null;\n-    String MOCK_HEARTBEAT_EVENT = \"H\";\n-    String READONLY_EVENT = \"R\";\n-\n-    String REFERENCE_FILTER_KEY = \"reference.filter\";\n-\n-    String INVOKER_LISTENER_KEY = \"invoker.listener\";\n-\n-    String DUBBO_VERSION_KEY = \"dubbo\";\n-\n-    String TAG_KEY = \"dubbo.tag\";\n-\n-    /**\n-     * To decide whether to make connection when the client is created\n-     */\n-    String LAZY_CONNECT_KEY = \"lazy\";\n-\n-    String STUB_EVENT_KEY = \"dubbo.stub.event\";\n-\n-    String REFERENCE_INTERCEPTOR_KEY = \"reference.interceptor\";\n-\n-    String SERVICE_FILTER_KEY = \"service.filter\";\n-\n-    String EXPORTER_LISTENER_KEY = \"exporter.listener\";\n-\n-    String METRICS_PORT = \"metrics.port\";\n-\n-    String METRICS_PROTOCOL = \"metrics.protocol\";\n-\n-    /**\n-     * After simplify the registry, should add some parameter individually for provider.\n-     *\n-     * @since 2.7.0\n-     */\n-    String EXTRA_KEYS_KEY = \"extra-keys\";\n-\n-    String GENERIC_SERIALIZATION_NATIVE_JAVA = \"nativejava\";\n-\n-    String GENERIC_SERIALIZATION_DEFAULT = \"true\";\n-\n-    String GENERIC_SERIALIZATION_BEAN = \"bean\";\n-\n-    String GENERIC_RAW_RETURN = \"raw.return\";\n-\n-    String GENERIC_SERIALIZATION_PROTOBUF = \"protobuf-json\";\n-\n-    String GENERIC_WITH_CLZ_KEY = \"generic.include.class\";\n-\n-    /**\n-     * The limit of callback service instances for one interface on every client\n-     */\n-    String CALLBACK_INSTANCES_LIMIT_KEY = \"callbacks\";\n-\n-    /**\n-     * The default limit number for callback service instances\n-     *\n-     * @see #CALLBACK_INSTANCES_LIMIT_KEY\n-     */\n-    int DEFAULT_CALLBACK_INSTANCES = 1;\n-\n-    String LOADBALANCE_KEY = \"loadbalance\";\n-\n-    String DEFAULT_LOADBALANCE = \"random\";\n-\n-    String RETRIES_KEY = \"retries\";\n-\n-    String FORKS_KEY = \"forks\";\n-\n-    int DEFAULT_RETRIES = 2;\n-\n-    int DEFAULT_FAILBACK_TIMES = 3;\n-\n-    String REGISTER_KEY = \"register\";\n-\n-    String INTERFACES = \"interfaces\";\n-\n-    String SSL_ENABLED_KEY = \"ssl-enabled\";\n-\n-    String SERVICE_PATH_PREFIX = \"service.path.prefix\";\n-\n-    String PROTOCOL_SERVER_SERVLET = \"servlet\";\n-\n-    String PROTOCOL_SERVER = \"server\";\n-\n-    /**\n-     * The parameter key for the class path of the ServiceNameMapping {@link Properties} file\n-     *\n-     * @since 2.7.8\n-     */\n-    String SERVICE_NAME_MAPPING_PROPERTIES_FILE_KEY = \"service-name-mapping.properties-path\";\n-\n-    /**\n-     * The default class path of the ServiceNameMapping {@link Properties} file\n-     *\n-     * @since 2.7.8\n-     */\n-    String DEFAULT_SERVICE_NAME_MAPPING_PROPERTIES_PATH = \"META-INF/dubbo/service-name-mapping.properties\";\n-\n-    String REDIS_CLIENT_KEY = \"redis-client\";\n-\n-    String MONO_REDIS = \"mono\";\n-\n-    String SENTINEL_REDIS = \"sentinel\";\n-\n-    String CLUSTER_REDIS = \"cluster\";\n-\n-    /** Pseudo URL prefix for loading from the class path: \"classpath:\". */\n-    String CLASSPATH_URL_PREFIX = \"classpath:\";\n-\n-    String DEFAULT_VERSION = \"0.0.0\";\n-\n-    String CLASS_DESERIALIZE_BLOCK_ALL = \"dubbo.security.serialize.blockAllClassExceptAllow\";\n-\n-    String CLASS_DESERIALIZE_ALLOWED_LIST = \"dubbo.security.serialize.allowedClassList\";\n-\n-    String CLASS_DESERIALIZE_BLOCKED_LIST = \"dubbo.security.serialize.blockedClassList\";\n-\n-    String ENABLE_NATIVE_JAVA_GENERIC_SERIALIZE = \"dubbo.security.serialize.generic.native-java-enable\";\n-\n-    String SERIALIZE_BLOCKED_LIST_FILE_PATH = \"security/serialize.blockedlist\";\n-\n-\n-    /**\n-     *  Interface configuration item\n-     * @since 2.7.10\n-     */\n-    String ON_CONNECT_KEY = \"onconnect\";\n-\n-    String ON_DISCONNECT_KEY = \"ondisconnect\";\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.constants;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+\r\n+import java.net.NetworkInterface;\r\n+import java.util.Properties;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.regex.Pattern;\r\n+\r\n+public interface CommonConstants {\r\n+    String DUBBO = \"dubbo\";\r\n+\r\n+    String PROVIDER = \"provider\";\r\n+\r\n+    String CONSUMER = \"consumer\";\r\n+\r\n+    String APPLICATION_KEY = \"application\";\r\n+\r\n+    String REMOTE_APPLICATION_KEY = \"remote.application\";\r\n+\r\n+    String ENABLED_KEY = \"enabled\";\r\n+\r\n+    String DISABLED_KEY = \"disabled\";\r\n+\r\n+    String DUBBO_PROPERTIES_KEY = \"dubbo.properties.file\";\r\n+\r\n+    String DEFAULT_DUBBO_PROPERTIES = \"dubbo.properties\";\r\n+\r\n+    String ANY_VALUE = \"*\";\r\n+\r\n+    /**\r\n+     * @since 2.7.8\r\n+     */\r\n+    char COMMA_SEPARATOR_CHAR = ',';\r\n+\r\n+    String COMMA_SEPARATOR = \",\";\r\n+\r\n+    String DOT_SEPARATOR = \".\";\r\n+\r\n+    Pattern COMMA_SPLIT_PATTERN = Pattern.compile(\"\\\\s*[,]+\\\\s*\");\r\n+\r\n+    String PATH_SEPARATOR = \"/\";\r\n+\r\n+    String PROTOCOL_SEPARATOR = \"://\";\r\n+\r\n+    String PROTOCOL_SEPARATOR_ENCODED = URL.encode(PROTOCOL_SEPARATOR);\r\n+\r\n+    String REGISTRY_SEPARATOR = \"|\";\r\n+\r\n+    Pattern REGISTRY_SPLIT_PATTERN = Pattern.compile(\"\\\\s*[|;]+\\\\s*\");\r\n+\r\n+    Pattern D_REGISTRY_SPLIT_PATTERN = Pattern.compile(\"\\\\s*[|]+\\\\s*\");\r\n+\r\n+    String SEMICOLON_SEPARATOR = \";\";\r\n+\r\n+    Pattern SEMICOLON_SPLIT_PATTERN = Pattern.compile(\"\\\\s*[;]+\\\\s*\");\r\n+\r\n+    Pattern EQUAL_SPLIT_PATTERN = Pattern.compile(\"\\\\s*[=]+\\\\s*\");\r\n+\r\n+    Pattern COLON_SPLIT_PATTERN = Pattern.compile(\"\\\\s*[:]+\\\\s*\");\r\n+\r\n+    String DEFAULT_PROXY = \"javassist\";\r\n+\r\n+    String DEFAULT_DIRECTORY = \"dubbo\";\r\n+\r\n+    String PROTOCOL_KEY = \"protocol\";\r\n+\r\n+    String DEFAULT_PROTOCOL = \"dubbo\";\r\n+\r\n+    String DEFAULT_THREAD_NAME = \"Dubbo\";\r\n+\r\n+    int DEFAULT_CORE_THREADS = 0;\r\n+\r\n+    int DEFAULT_THREADS = 200;\r\n+\r\n+    String EXECUTOR_SERVICE_COMPONENT_KEY = ExecutorService.class.getName();\r\n+\r\n+    String THREADPOOL_KEY = \"threadpool\";\r\n+\r\n+    String THREAD_NAME_KEY = \"threadname\";\r\n+\r\n+    String CORE_THREADS_KEY = \"corethreads\";\r\n+\r\n+    String THREADS_KEY = \"threads\";\r\n+\r\n+    String QUEUES_KEY = \"queues\";\r\n+\r\n+    String ALIVE_KEY = \"alive\";\r\n+\r\n+    String DEFAULT_THREADPOOL = \"limited\";\r\n+\r\n+    String DEFAULT_CLIENT_THREADPOOL = \"cached\";\r\n+\r\n+    String IO_THREADS_KEY = \"iothreads\";\r\n+\r\n+    String KEEP_ALIVE_KEY = \"keep.alive\";\r\n+\r\n+    int DEFAULT_QUEUES = 0;\r\n+\r\n+    int DEFAULT_ALIVE = 60 * 1000;\r\n+\r\n+    String TIMEOUT_KEY = \"timeout\";\r\n+\r\n+    int DEFAULT_TIMEOUT = 1000;\r\n+\r\n+    // used by invocation attachments to transfer timeout from Consumer to Provider.\r\n+    // works as a replacement of TIMEOUT_KEY on wire, which seems to be totally useless in previous releases).\r\n+    String TIMEOUT_ATTACHMENT_KEY = \"_TO\";\r\n+\r\n+    String TIME_COUNTDOWN_KEY = \"timeout-countdown\";\r\n+\r\n+    String ENABLE_TIMEOUT_COUNTDOWN_KEY = \"enable-timeout-countdown\";\r\n+\r\n+    String REMOVE_VALUE_PREFIX = \"-\";\r\n+\r\n+    String PROPERTIES_CHAR_SEPARATOR = \"-\";\r\n+\r\n+    String UNDERLINE_SEPARATOR = \"_\";\r\n+\r\n+    String SEPARATOR_REGEX = \"_|-\";\r\n+\r\n+    String GROUP_CHAR_SEPARATOR = \":\";\r\n+\r\n+    String HIDDEN_KEY_PREFIX = \".\";\r\n+\r\n+    String DOT_REGEX = \"\\\\.\";\r\n+\r\n+    String DEFAULT_KEY_PREFIX = \"default.\";\r\n+\r\n+    String DEFAULT_KEY = \"default\";\r\n+\r\n+    String PREFERRED_KEY = \"preferred\";\r\n+\r\n+    /**\r\n+     * Default timeout value in milliseconds for server shutdown\r\n+     */\r\n+    int DEFAULT_SERVER_SHUTDOWN_TIMEOUT = 10000;\r\n+\r\n+    String SIDE_KEY = \"side\";\r\n+\r\n+    String PROVIDER_SIDE = \"provider\";\r\n+\r\n+    String CONSUMER_SIDE = \"consumer\";\r\n+\r\n+    String ANYHOST_KEY = \"anyhost\";\r\n+\r\n+    String ANYHOST_VALUE = \"0.0.0.0\";\r\n+\r\n+    String LOCALHOST_KEY = \"localhost\";\r\n+\r\n+    String LOCALHOST_VALUE = \"127.0.0.1\";\r\n+\r\n+    String METHODS_KEY = \"methods\";\r\n+\r\n+    String METHOD_KEY = \"method\";\r\n+\r\n+    String PID_KEY = \"pid\";\r\n+\r\n+    String TIMESTAMP_KEY = \"timestamp\";\r\n+\r\n+    String GROUP_KEY = \"group\";\r\n+\r\n+    String PATH_KEY = \"path\";\r\n+\r\n+    String INTERFACE_KEY = \"interface\";\r\n+\r\n+    String FILE_KEY = \"file\";\r\n+\r\n+    String DUMP_DIRECTORY = \"dump.directory\";\r\n+\r\n+    String CLASSIFIER_KEY = \"classifier\";\r\n+\r\n+    String VERSION_KEY = \"version\";\r\n+\r\n+    String REVISION_KEY = \"revision\";\r\n+\r\n+    String METADATA_KEY = \"metadata-type\";\r\n+\r\n+    String MAPPING_KEY = \"mapping-type\";\r\n+\r\n+    String CONFIG_MAPPING_TYPE = \"config\";\r\n+\r\n+    String METADATA_MAPPING_TYPE = \"metadata\";\r\n+\r\n+    String DEFAULT_METADATA_STORAGE_TYPE = \"local\";\r\n+\r\n+    String REMOTE_METADATA_STORAGE_TYPE = \"remote\";\r\n+\r\n+    /**\r\n+     * The composite metadata storage type includes {@link #DEFAULT_METADATA_STORAGE_TYPE \"local\"} and\r\n+     * {@link #REMOTE_METADATA_STORAGE_TYPE \"remote\"}.\r\n+     *\r\n+     * @since 2.7.8\r\n+     */\r\n+    String COMPOSITE_METADATA_STORAGE_TYPE = \"composite\";\r\n+\r\n+    /**\r\n+     * Consumer side 's proxy class\r\n+     */\r\n+    String PROXY_CLASS_REF = \"refClass\";\r\n+\r\n+    /**\r\n+     * generic call\r\n+     */\r\n+    String $INVOKE = \"$invoke\";\r\n+    String $INVOKE_ASYNC = \"$invokeAsync\";\r\n+    String GENERIC_PARAMETER_DESC = \"Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/Object;\";\r\n+\r\n+    /**\r\n+     * package version in the manifest\r\n+     */\r\n+    String RELEASE_KEY = \"release\";\r\n+\r\n+    int MAX_PROXY_COUNT = 65535;\r\n+\r\n+    String MONITOR_KEY = \"monitor\";\r\n+    String CLUSTER_KEY = \"cluster\";\r\n+    String USERNAME_KEY = \"username\";\r\n+    String PASSWORD_KEY = \"password\";\r\n+    String HOST_KEY = \"host\";\r\n+    String PORT_KEY = \"port\";\r\n+    String DUBBO_IP_TO_BIND = \"DUBBO_IP_TO_BIND\";\r\n+\r\n+    /**\r\n+     * The property name for {@link NetworkInterface#getDisplayName() the name of network interface} that\r\n+     * the Dubbo application prefers\r\n+     *\r\n+     * @since 2.7.6\r\n+     */\r\n+    String DUBBO_PREFERRED_NETWORK_INTERFACE = \"dubbo.network.interface.preferred\";\r\n+\r\n+    @Deprecated\r\n+    String SHUTDOWN_WAIT_SECONDS_KEY = \"dubbo.service.shutdown.wait.seconds\";\r\n+    String SHUTDOWN_WAIT_KEY = \"dubbo.service.shutdown.wait\";\r\n+    String DUBBO_PROTOCOL = \"dubbo\";\r\n+\r\n+    String DUBBO_LABELS = \"dubbo.labels\";\r\n+    String DUBBO_ENV_KEYS = \"dubbo.env.keys\";\r\n+\r\n+    String CONFIG_CONFIGFILE_KEY = \"config-file\";\r\n+    String CONFIG_ENABLE_KEY = \"highest-priority\";\r\n+    String CONFIG_NAMESPACE_KEY = \"namespace\";\r\n+    String CHECK_KEY = \"check\";\r\n+\r\n+    String BACKLOG_KEY = \"backlog\";\r\n+\r\n+    String HEARTBEAT_EVENT = null;\r\n+    String MOCK_HEARTBEAT_EVENT = \"H\";\r\n+    String READONLY_EVENT = \"R\";\r\n+\r\n+    String REFERENCE_FILTER_KEY = \"reference.filter\";\r\n+\r\n+    String INVOKER_LISTENER_KEY = \"invoker.listener\";\r\n+\r\n+    String DUBBO_VERSION_KEY = \"dubbo\";\r\n+\r\n+    String TAG_KEY = \"dubbo.tag\";\r\n+\r\n+    /**\r\n+     * To decide whether to make connection when the client is created\r\n+     */\r\n+    String LAZY_CONNECT_KEY = \"lazy\";\r\n+\r\n+    String STUB_EVENT_KEY = \"dubbo.stub.event\";\r\n+\r\n+    String REFERENCE_INTERCEPTOR_KEY = \"reference.interceptor\";\r\n+\r\n+    String SERVICE_FILTER_KEY = \"service.filter\";\r\n+\r\n+    String EXPORTER_LISTENER_KEY = \"exporter.listener\";\r\n+\r\n+    String METRICS_PORT = \"metrics.port\";\r\n+\r\n+    String METRICS_PROTOCOL = \"metrics.protocol\";\r\n+\r\n+    /**\r\n+     * After simplify the registry, should add some parameter individually for provider.\r\n+     *\r\n+     * @since 2.7.0\r\n+     */\r\n+    String EXTRA_KEYS_KEY = \"extra-keys\";\r\n+\r\n+    String GENERIC_SERIALIZATION_NATIVE_JAVA = \"nativejava\";\r\n+\r\n+    String GENERIC_SERIALIZATION_DEFAULT = \"true\";\r\n+\r\n+    String GENERIC_SERIALIZATION_BEAN = \"bean\";\r\n+\r\n+    String GENERIC_RAW_RETURN = \"raw.return\";\r\n+\r\n+    String GENERIC_SERIALIZATION_PROTOBUF = \"protobuf-json\";\r\n+\r\n+    String GENERIC_WITH_CLZ_KEY = \"generic.include.class\";\r\n+\r\n+    /**\r\n+     * The limit of callback service instances for one interface on every client\r\n+     */\r\n+    String CALLBACK_INSTANCES_LIMIT_KEY = \"callbacks\";\r\n+\r\n+    /**\r\n+     * The default limit number for callback service instances\r\n+     *\r\n+     * @see #CALLBACK_INSTANCES_LIMIT_KEY\r\n+     */\r\n+    int DEFAULT_CALLBACK_INSTANCES = 1;\r\n+\r\n+    String LOADBALANCE_KEY = \"loadbalance\";\r\n+\r\n+    String DEFAULT_LOADBALANCE = \"random\";\r\n+\r\n+    String RETRIES_KEY = \"retries\";\r\n+\r\n+    String FORKS_KEY = \"forks\";\r\n+\r\n+    int DEFAULT_RETRIES = 2;\r\n+\r\n+    int DEFAULT_FAILBACK_TIMES = 3;\r\n+\r\n+    String REGISTER_KEY = \"register\";\r\n+\r\n+    String INTERFACES = \"interfaces\";\r\n+\r\n+    String SSL_ENABLED_KEY = \"ssl-enabled\";\r\n+\r\n+    String SERVICE_PATH_PREFIX = \"service.path.prefix\";\r\n+\r\n+    String PROTOCOL_SERVER_SERVLET = \"servlet\";\r\n+\r\n+    String PROTOCOL_SERVER = \"server\";\r\n+\r\n+    /**\r\n+     * The parameter key for the class path of the ServiceNameMapping {@link Properties} file\r\n+     *\r\n+     * @since 2.7.8\r\n+     */\r\n+    String SERVICE_NAME_MAPPING_PROPERTIES_FILE_KEY = \"service-name-mapping.properties-path\";\r\n+\r\n+    /**\r\n+     * The default class path of the ServiceNameMapping {@link Properties} file\r\n+     *\r\n+     * @since 2.7.8\r\n+     */\r\n+    String DEFAULT_SERVICE_NAME_MAPPING_PROPERTIES_PATH = \"META-INF/dubbo/service-name-mapping.properties\";\r\n+\r\n+    String REDIS_CLIENT_KEY = \"redis-client\";\r\n+\r\n+    String MONO_REDIS = \"mono\";\r\n+\r\n+    String SENTINEL_REDIS = \"sentinel\";\r\n+\r\n+    String CLUSTER_REDIS = \"cluster\";\r\n+\r\n+    /** Pseudo URL prefix for loading from the class path: \"classpath:\". */\r\n+    String CLASSPATH_URL_PREFIX = \"classpath:\";\r\n+\r\n+    String DEFAULT_VERSION = \"0.0.0\";\r\n+\r\n+    String CLASS_DESERIALIZE_BLOCK_ALL = \"dubbo.security.serialize.blockAllClassExceptAllow\";\r\n+\r\n+    String CLASS_DESERIALIZE_ALLOWED_LIST = \"dubbo.security.serialize.allowedClassList\";\r\n+\r\n+    String CLASS_DESERIALIZE_BLOCKED_LIST = \"dubbo.security.serialize.blockedClassList\";\r\n+\r\n+    String ENABLE_NATIVE_JAVA_GENERIC_SERIALIZE = \"dubbo.security.serialize.generic.native-java-enable\";\r\n+\r\n+    String SERIALIZE_BLOCKED_LIST_FILE_PATH = \"security/serialize.blockedlist\";\r\n+\r\n+\r\n+    /**\r\n+     *  Interface configuration item\r\n+     * @since 2.7.10\r\n+     */\r\n+    String ON_CONNECT_KEY = \"onconnect\";\r\n+\r\n+    String ON_DISCONNECT_KEY = \"ondisconnect\";\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/constants/FilterConstants.java", "source2": "org/apache/dubbo/common/constants/FilterConstants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,24 +1,24 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.constants;\n-\n-public interface FilterConstants {\n-    String CACHE_KEY = \"cache\";\n-\n-    String VALIDATION_KEY = \"validation\";\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.constants;\r\n+\r\n+public interface FilterConstants {\r\n+    String CACHE_KEY = \"cache\";\r\n+\r\n+    String VALIDATION_KEY = \"validation\";\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/constants/QosConstants.java", "source2": "org/apache/dubbo/common/constants/QosConstants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,32 +1,32 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.constants;\n-\n-/**\n- * QosConstants\n- */\n-public interface QosConstants {\n-\n-    String QOS_ENABLE = \"qos.enable\";\n-\n-    String QOS_HOST = \"qos.host\";\n-\n-    String QOS_PORT = \"qos.port\";\n-\n-    String ACCEPT_FOREIGN_IP = \"qos.accept.foreign.ip\";\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.constants;\r\n+\r\n+/**\r\n+ * QosConstants\r\n+ */\r\n+public interface QosConstants {\r\n+\r\n+    String QOS_ENABLE = \"qos.enable\";\r\n+\r\n+    String QOS_HOST = \"qos.host\";\r\n+\r\n+    String QOS_PORT = \"qos.port\";\r\n+\r\n+    String ACCEPT_FOREIGN_IP = \"qos.accept.foreign.ip\";\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/constants/RegistryConstants.java", "source2": "org/apache/dubbo/common/constants/RegistryConstants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,122 +1,122 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.constants;\n-\n-public interface RegistryConstants {\n-\n-    String REGISTRY_KEY = \"registry\";\n-\n-    String REGISTRY_CLUSTER_KEY = \"REGISTRY_CLUSTER\";\n-\n-    String REGISTRY_CLUSTER = \"REGISTRY_CLUSTER\";\n-\n-    String REGISTRY_CLUSTER_TYPE_KEY = \"registry-cluster-type\";\n-\n-    String REGISTRY_PROTOCOL = \"registry\";\n-\n-    String DYNAMIC_KEY = \"dynamic\";\n-\n-    String CATEGORY_KEY = \"category\";\n-\n-    String PROVIDERS_CATEGORY = \"providers\";\n-\n-    String CONSUMERS_CATEGORY = \"consumers\";\n-\n-    String ROUTERS_CATEGORY = \"routers\";\n-\n-    String DYNAMIC_ROUTERS_CATEGORY = \"dynamicrouters\";\n-\n-    String DEFAULT_CATEGORY = PROVIDERS_CATEGORY;\n-\n-    String CONFIGURATORS_CATEGORY = \"configurators\";\n-\n-    String DYNAMIC_CONFIGURATORS_CATEGORY = \"dynamicconfigurators\";\n-\n-    String APP_DYNAMIC_CONFIGURATORS_CATEGORY = \"appdynamicconfigurators\";\n-\n-    String ROUTERS_SUFFIX = \".routers\";\n-\n-    String EMPTY_PROTOCOL = \"empty\";\n-\n-    String ROUTE_PROTOCOL = \"route\";\n-\n-    String OVERRIDE_PROTOCOL = \"override\";\n-\n-    String COMPATIBLE_CONFIG_KEY = \"compatible_config\";\n-\n-    String REGISTRY_PUBLISH_INTERFACE_KEY = \"publish-interface\";\n-\n-    String DUBBO_PUBLISH_INTERFACE_DEFAULT_KEY = \"dubbo.application.publish-interface\";\n-    /**\n-     * The parameter key of Dubbo Registry type\n-     *\n-     * @since 2.7.5\n-     */\n-    String REGISTRY_TYPE_KEY = \"registry-type\";\n-\n-    /**\n-     * The parameter value of Service-Oriented Registry type\n-     *\n-     * @since 2.7.5\n-     */\n-    String SERVICE_REGISTRY_TYPE = \"service\";\n-\n-    /**\n-     * The protocol for Service Discovery\n-     *\n-     * @since 2.7.5\n-     */\n-    String SERVICE_REGISTRY_PROTOCOL = \"service-discovery-registry\";\n-\n-    /**\n-     * The parameter key of the subscribed service names for Service-Oriented Registry\n-     * <p>\n-     * If there is a multiple-values, the  \"comma\" is the separator.\n-     *\n-     * @since 2.7.5\n-     */\n-    String SUBSCRIBED_SERVICE_NAMES_KEY = \"subscribed-services\";\n-\n-    String PROVIDED_BY = \"provided-by\";\n-\n-    /**\n-     * The request size of service instances\n-     *\n-     * @since 2.7.5\n-     */\n-    String INSTANCES_REQUEST_SIZE_KEY = \"instances-request-size\";\n-\n-    /**\n-     * The default request size of service instances\n-     */\n-    int DEFAULT_INSTANCES_REQUEST_SIZE = 100;\n-\n-    String ACCEPTS_KEY = \"accepts\";\n-\n-    String REGISTRY_ZONE = \"registry_zone\";\n-    String REGISTRY_ZONE_FORCE = \"registry_zone_force\";\n-    String ZONE_KEY = \"zone\";\n-\n-    String REGISTRY_SERVICE_REFERENCE_PATH = \"org.apache.dubbo.registry.RegistryService\";\n-\n-    String INIT = \"INIT\";\n-\n-    String MIGRATION_MULTI_REGISTRY = \"MIGRATION_MULTI_REGISTRY\";\n-\n-    String LOADBALANCE_AMONG_REGISTRIES = \"random\";\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.constants;\r\n+\r\n+public interface RegistryConstants {\r\n+\r\n+    String REGISTRY_KEY = \"registry\";\r\n+\r\n+    String REGISTRY_CLUSTER_KEY = \"REGISTRY_CLUSTER\";\r\n+\r\n+    String REGISTRY_CLUSTER = \"REGISTRY_CLUSTER\";\r\n+\r\n+    String REGISTRY_CLUSTER_TYPE_KEY = \"registry-cluster-type\";\r\n+\r\n+    String REGISTRY_PROTOCOL = \"registry\";\r\n+\r\n+    String DYNAMIC_KEY = \"dynamic\";\r\n+\r\n+    String CATEGORY_KEY = \"category\";\r\n+\r\n+    String PROVIDERS_CATEGORY = \"providers\";\r\n+\r\n+    String CONSUMERS_CATEGORY = \"consumers\";\r\n+\r\n+    String ROUTERS_CATEGORY = \"routers\";\r\n+\r\n+    String DYNAMIC_ROUTERS_CATEGORY = \"dynamicrouters\";\r\n+\r\n+    String DEFAULT_CATEGORY = PROVIDERS_CATEGORY;\r\n+\r\n+    String CONFIGURATORS_CATEGORY = \"configurators\";\r\n+\r\n+    String DYNAMIC_CONFIGURATORS_CATEGORY = \"dynamicconfigurators\";\r\n+\r\n+    String APP_DYNAMIC_CONFIGURATORS_CATEGORY = \"appdynamicconfigurators\";\r\n+\r\n+    String ROUTERS_SUFFIX = \".routers\";\r\n+\r\n+    String EMPTY_PROTOCOL = \"empty\";\r\n+\r\n+    String ROUTE_PROTOCOL = \"route\";\r\n+\r\n+    String OVERRIDE_PROTOCOL = \"override\";\r\n+\r\n+    String COMPATIBLE_CONFIG_KEY = \"compatible_config\";\r\n+\r\n+    String REGISTRY_PUBLISH_INTERFACE_KEY = \"publish-interface\";\r\n+\r\n+    String DUBBO_PUBLISH_INTERFACE_DEFAULT_KEY = \"dubbo.application.publish-interface\";\r\n+    /**\r\n+     * The parameter key of Dubbo Registry type\r\n+     *\r\n+     * @since 2.7.5\r\n+     */\r\n+    String REGISTRY_TYPE_KEY = \"registry-type\";\r\n+\r\n+    /**\r\n+     * The parameter value of Service-Oriented Registry type\r\n+     *\r\n+     * @since 2.7.5\r\n+     */\r\n+    String SERVICE_REGISTRY_TYPE = \"service\";\r\n+\r\n+    /**\r\n+     * The protocol for Service Discovery\r\n+     *\r\n+     * @since 2.7.5\r\n+     */\r\n+    String SERVICE_REGISTRY_PROTOCOL = \"service-discovery-registry\";\r\n+\r\n+    /**\r\n+     * The parameter key of the subscribed service names for Service-Oriented Registry\r\n+     * <p>\r\n+     * If there is a multiple-values, the  \"comma\" is the separator.\r\n+     *\r\n+     * @since 2.7.5\r\n+     */\r\n+    String SUBSCRIBED_SERVICE_NAMES_KEY = \"subscribed-services\";\r\n+\r\n+    String PROVIDED_BY = \"provided-by\";\r\n+\r\n+    /**\r\n+     * The request size of service instances\r\n+     *\r\n+     * @since 2.7.5\r\n+     */\r\n+    String INSTANCES_REQUEST_SIZE_KEY = \"instances-request-size\";\r\n+\r\n+    /**\r\n+     * The default request size of service instances\r\n+     */\r\n+    int DEFAULT_INSTANCES_REQUEST_SIZE = 100;\r\n+\r\n+    String ACCEPTS_KEY = \"accepts\";\r\n+\r\n+    String REGISTRY_ZONE = \"registry_zone\";\r\n+    String REGISTRY_ZONE_FORCE = \"registry_zone_force\";\r\n+    String ZONE_KEY = \"zone\";\r\n+\r\n+    String REGISTRY_SERVICE_REFERENCE_PATH = \"org.apache.dubbo.registry.RegistryService\";\r\n+\r\n+    String INIT = \"INIT\";\r\n+\r\n+    String MIGRATION_MULTI_REGISTRY = \"MIGRATION_MULTI_REGISTRY\";\r\n+\r\n+    String LOADBALANCE_AMONG_REGISTRIES = \"random\";\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/constants/RemotingConstants.java", "source2": "org/apache/dubbo/common/constants/RemotingConstants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,26 +1,26 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.constants;\n-\n-/**\n- * RemotingConstants\n- */\n-public interface RemotingConstants {\n-\n-    String BACKUP_KEY = \"backup\";\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.constants;\r\n+\r\n+/**\r\n+ * RemotingConstants\r\n+ */\r\n+public interface RemotingConstants {\r\n+\r\n+    String BACKUP_KEY = \"backup\";\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/context/FrameworkExt.java", "source2": "org/apache/dubbo/common/context/FrameworkExt.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,24 +1,24 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.context;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-@SPI\n-public interface FrameworkExt extends Lifecycle {\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.context;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+@SPI\r\n+public interface FrameworkExt extends Lifecycle {\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/context/Lifecycle.java", "source2": "org/apache/dubbo/common/context/Lifecycle.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,48 +1,48 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.context;\n-\n-/**\n- * The Lifecycle of Dubbo component\n- *\n- * @since 2.7.5\n- */\n-public interface Lifecycle {\n-\n-    /**\n-     * Initialize the component before {@link #start() start}\n-     *\n-     * @return current {@link Lifecycle}\n-     * @throws IllegalStateException\n-     */\n-    void initialize() throws IllegalStateException;\n-\n-    /**\n-     * Start the component\n-     *\n-     * @return current {@link Lifecycle}\n-     * @throws IllegalStateException\n-     */\n-    void start() throws IllegalStateException;\n-\n-    /**\n-     * Destroy the component\n-     *\n-     * @throws IllegalStateException\n-     */\n-    void destroy() throws IllegalStateException;\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.context;\r\n+\r\n+/**\r\n+ * The Lifecycle of Dubbo component\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public interface Lifecycle {\r\n+\r\n+    /**\r\n+     * Initialize the component before {@link #start() start}\r\n+     *\r\n+     * @return current {@link Lifecycle}\r\n+     * @throws IllegalStateException\r\n+     */\r\n+    void initialize() throws IllegalStateException;\r\n+\r\n+    /**\r\n+     * Start the component\r\n+     *\r\n+     * @return current {@link Lifecycle}\r\n+     * @throws IllegalStateException\r\n+     */\r\n+    void start() throws IllegalStateException;\r\n+\r\n+    /**\r\n+     * Destroy the component\r\n+     *\r\n+     * @throws IllegalStateException\r\n+     */\r\n+    void destroy() throws IllegalStateException;\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/context/LifecycleAdapter.java", "source2": "org/apache/dubbo/common/context/LifecycleAdapter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,35 +1,35 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.context;\n-\n-public abstract class LifecycleAdapter implements Lifecycle {\n-\n-    @Override\n-    public void initialize() throws IllegalStateException {\n-\n-    }\n-\n-    @Override\n-    public void start() throws IllegalStateException {\n-\n-    }\n-\n-    @Override\n-    public void destroy() throws IllegalStateException {\n-\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.context;\r\n+\r\n+public abstract class LifecycleAdapter implements Lifecycle {\r\n+\r\n+    @Override\r\n+    public void initialize() throws IllegalStateException {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public void start() throws IllegalStateException {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() throws IllegalStateException {\r\n+\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/Converter.java", "source2": "org/apache/dubbo/common/convert/Converter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,108 +1,108 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert;\n-\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.common.lang.Prioritized;\n-\n-import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\n-import static org.apache.dubbo.common.utils.ClassUtils.isAssignableFrom;\n-import static org.apache.dubbo.common.utils.TypeUtils.findActualTypeArgument;\n-\n-/**\n- * A class to convert the source-typed value to the target-typed value\n- *\n- * @param <S> The source type\n- * @param <T> The target type\n- * @since 2.7.6\n- */\n-@SPI\n-@FunctionalInterface\n-public interface Converter<S, T> extends Prioritized {\n-\n-    /**\n-     * Accept the source type and target type or not\n-     *\n-     * @param sourceType the source type\n-     * @param targetType the target type\n-     * @return if accepted, return <code>true</code>, or <code>false</code>\n-     */\n-    default boolean accept(Class<?> sourceType, Class<?> targetType) {\n-        return isAssignableFrom(sourceType, getSourceType()) && isAssignableFrom(targetType, getTargetType());\n-    }\n-\n-    /**\n-     * Convert the source-typed value to the target-typed value\n-     *\n-     * @param source the source-typed value\n-     * @return the target-typed value\n-     */\n-    T convert(S source);\n-\n-    /**\n-     * Get the source type\n-     *\n-     * @return non-null\n-     */\n-    default Class<S> getSourceType() {\n-        return findActualTypeArgument(getClass(), Converter.class, 0);\n-    }\n-\n-    /**\n-     * Get the target type\n-     *\n-     * @return non-null\n-     */\n-    default Class<T> getTargetType() {\n-        return findActualTypeArgument(getClass(), Converter.class, 1);\n-    }\n-\n-    /**\n-     * Get the Converter instance from {@link ExtensionLoader} with the specified source and target type\n-     *\n-     * @param sourceType the source type\n-     * @param targetType the target type\n-     * @return\n-     * @see ExtensionLoader#getSupportedExtensionInstances()\n-     */\n-    static Converter<?, ?> getConverter(Class<?> sourceType, Class<?> targetType) {\n-        return getExtensionLoader(Converter.class)\n-                .getSupportedExtensionInstances()\n-                .stream()\n-                .filter(converter -> converter.accept(sourceType, targetType))\n-                .findFirst()\n-                .orElse(null);\n-    }\n-\n-    /**\n-     * Convert the value of source to target-type value if possible\n-     *\n-     * @param source     the value of source\n-     * @param targetType the target type\n-     * @param <T>        the target type\n-     * @return <code>null</code> if can't be converted\n-     * @since 2.7.8\n-     */\n-    static <T> T convertIfPossible(Object source, Class<T> targetType) {\n-        Converter converter = getConverter(source.getClass(), targetType);\n-        if (converter != null) {\n-            return (T) converter.convert(source);\n-        }\n-        return null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert;\r\n+\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.common.lang.Prioritized;\r\n+\r\n+import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\r\n+import static org.apache.dubbo.common.utils.ClassUtils.isAssignableFrom;\r\n+import static org.apache.dubbo.common.utils.TypeUtils.findActualTypeArgument;\r\n+\r\n+/**\r\n+ * A class to convert the source-typed value to the target-typed value\r\n+ *\r\n+ * @param <S> The source type\r\n+ * @param <T> The target type\r\n+ * @since 2.7.6\r\n+ */\r\n+@SPI\r\n+@FunctionalInterface\r\n+public interface Converter<S, T> extends Prioritized {\r\n+\r\n+    /**\r\n+     * Accept the source type and target type or not\r\n+     *\r\n+     * @param sourceType the source type\r\n+     * @param targetType the target type\r\n+     * @return if accepted, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    default boolean accept(Class<?> sourceType, Class<?> targetType) {\r\n+        return isAssignableFrom(sourceType, getSourceType()) && isAssignableFrom(targetType, getTargetType());\r\n+    }\r\n+\r\n+    /**\r\n+     * Convert the source-typed value to the target-typed value\r\n+     *\r\n+     * @param source the source-typed value\r\n+     * @return the target-typed value\r\n+     */\r\n+    T convert(S source);\r\n+\r\n+    /**\r\n+     * Get the source type\r\n+     *\r\n+     * @return non-null\r\n+     */\r\n+    default Class<S> getSourceType() {\r\n+        return findActualTypeArgument(getClass(), Converter.class, 0);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the target type\r\n+     *\r\n+     * @return non-null\r\n+     */\r\n+    default Class<T> getTargetType() {\r\n+        return findActualTypeArgument(getClass(), Converter.class, 1);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the Converter instance from {@link ExtensionLoader} with the specified source and target type\r\n+     *\r\n+     * @param sourceType the source type\r\n+     * @param targetType the target type\r\n+     * @return\r\n+     * @see ExtensionLoader#getSupportedExtensionInstances()\r\n+     */\r\n+    static Converter<?, ?> getConverter(Class<?> sourceType, Class<?> targetType) {\r\n+        return getExtensionLoader(Converter.class)\r\n+                .getSupportedExtensionInstances()\r\n+                .stream()\r\n+                .filter(converter -> converter.accept(sourceType, targetType))\r\n+                .findFirst()\r\n+                .orElse(null);\r\n+    }\r\n+\r\n+    /**\r\n+     * Convert the value of source to target-type value if possible\r\n+     *\r\n+     * @param source     the value of source\r\n+     * @param targetType the target type\r\n+     * @param <T>        the target type\r\n+     * @return <code>null</code> if can't be converted\r\n+     * @since 2.7.8\r\n+     */\r\n+    static <T> T convertIfPossible(Object source, Class<T> targetType) {\r\n+        Converter converter = getConverter(source.getClass(), targetType);\r\n+        if (converter != null) {\r\n+            return (T) converter.convert(source);\r\n+        }\r\n+        return null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/StringConverter.java", "source2": "org/apache/dubbo/common/convert/StringConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,27 +1,27 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert;\n-\n-/**\n- * A class to covert {@link String} to the target-typed value\n- *\n- * @see Converter\n- * @since 2.7.6\n- */\n-@FunctionalInterface\n-public interface StringConverter<T> extends Converter<String, T> {\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert;\r\n+\r\n+/**\r\n+ * A class to covert {@link String} to the target-typed value\r\n+ *\r\n+ * @see Converter\r\n+ * @since 2.7.6\r\n+ */\r\n+@FunctionalInterface\r\n+public interface StringConverter<T> extends Converter<String, T> {\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/StringToBooleanConverter.java", "source2": "org/apache/dubbo/common/convert/StringToBooleanConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,38 +1,38 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert;\n-\n-import static java.lang.Boolean.valueOf;\n-import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\n-\n-/**\n- * The class to convert {@link String} to {@link Boolean}\n- *\n- * @since 2.7.6\n- */\n-public class StringToBooleanConverter implements StringConverter<Boolean> {\n-\n-    @Override\n-    public Boolean convert(String source) {\n-        return isNotEmpty(source) ? valueOf(source) : null;\n-    }\n-\n-    @Override\n-    public int getPriority() {\n-        return NORMAL_PRIORITY + 5;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert;\r\n+\r\n+import static java.lang.Boolean.valueOf;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link Boolean}\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToBooleanConverter implements StringConverter<Boolean> {\r\n+\r\n+    @Override\r\n+    public Boolean convert(String source) {\r\n+        return isNotEmpty(source) ? valueOf(source) : null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getPriority() {\r\n+        return NORMAL_PRIORITY + 5;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/StringToCharArrayConverter.java", "source2": "org/apache/dubbo/common/convert/StringToCharArrayConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,39 +1,39 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert;\n-\n-\n-import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\n-\n-/**\n- * The class to convert {@link String} to <code>char[]</code>\n- *\n- * @since 2.7.6\n- */\n-public class StringToCharArrayConverter implements StringConverter<char[]> {\n-\n-    @Override\n-    public char[] convert(String source) {\n-        return isNotEmpty(source) ? source.toCharArray() : null;\n-    }\n-\n-\n-    @Override\n-    public int getPriority() {\n-        return NORMAL_PRIORITY + 7;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert;\r\n+\r\n+\r\n+import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to <code>char[]</code>\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToCharArrayConverter implements StringConverter<char[]> {\r\n+\r\n+    @Override\r\n+    public char[] convert(String source) {\r\n+        return isNotEmpty(source) ? source.toCharArray() : null;\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public int getPriority() {\r\n+        return NORMAL_PRIORITY + 7;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/StringToCharacterConverter.java", "source2": "org/apache/dubbo/common/convert/StringToCharacterConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,44 +1,44 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert;\n-\n-import static org.apache.dubbo.common.utils.StringUtils.length;\n-\n-/**\n- * The class to convert {@link String} to {@link Character}\n- *\n- * @since 2.7.6\n- */\n-public class StringToCharacterConverter implements StringConverter<Character> {\n-\n-    @Override\n-    public Character convert(String source) {\n-        int length = length(source);\n-        if (length == 0) {\n-            return null;\n-        }\n-        if (length > 1) {\n-            throw new IllegalArgumentException(\"The source String is more than one character!\");\n-        }\n-        return source.charAt(0);\n-    }\n-\n-    @Override\n-    public int getPriority() {\n-        return NORMAL_PRIORITY + 8;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert;\r\n+\r\n+import static org.apache.dubbo.common.utils.StringUtils.length;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link Character}\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToCharacterConverter implements StringConverter<Character> {\r\n+\r\n+    @Override\r\n+    public Character convert(String source) {\r\n+        int length = length(source);\r\n+        if (length == 0) {\r\n+            return null;\r\n+        }\r\n+        if (length > 1) {\r\n+            throw new IllegalArgumentException(\"The source String is more than one character!\");\r\n+        }\r\n+        return source.charAt(0);\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getPriority() {\r\n+        return NORMAL_PRIORITY + 8;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/StringToDoubleConverter.java", "source2": "org/apache/dubbo/common/convert/StringToDoubleConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,39 +1,39 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert;\n-\n-import static java.lang.Double.valueOf;\n-import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\n-\n-/**\n- * The class to convert {@link String} to {@link Double}\n- *\n- * @since 2.7.6\n- */\n-public class StringToDoubleConverter implements StringConverter<Double> {\n-\n-    @Override\n-    public Double convert(String source) {\n-        return isNotEmpty(source) ? valueOf(source) : null;\n-    }\n-\n-\n-    @Override\n-    public int getPriority() {\n-        return NORMAL_PRIORITY + 3;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert;\r\n+\r\n+import static java.lang.Double.valueOf;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link Double}\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToDoubleConverter implements StringConverter<Double> {\r\n+\r\n+    @Override\r\n+    public Double convert(String source) {\r\n+        return isNotEmpty(source) ? valueOf(source) : null;\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public int getPriority() {\r\n+        return NORMAL_PRIORITY + 3;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/StringToFloatConverter.java", "source2": "org/apache/dubbo/common/convert/StringToFloatConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,38 +1,38 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert;\n-\n-import static java.lang.Float.valueOf;\n-import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\n-\n-/**\n- * The class to convert {@link String} to {@link Float}\n- *\n- * @since 2.7.6\n- */\n-public class StringToFloatConverter implements StringConverter<Float> {\n-\n-    @Override\n-    public Float convert(String source) {\n-        return isNotEmpty(source) ? valueOf(source) : null;\n-    }\n-\n-    @Override\n-    public int getPriority() {\n-        return NORMAL_PRIORITY + 4;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert;\r\n+\r\n+import static java.lang.Float.valueOf;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link Float}\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToFloatConverter implements StringConverter<Float> {\r\n+\r\n+    @Override\r\n+    public Float convert(String source) {\r\n+        return isNotEmpty(source) ? valueOf(source) : null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getPriority() {\r\n+        return NORMAL_PRIORITY + 4;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/StringToIntegerConverter.java", "source2": "org/apache/dubbo/common/convert/StringToIntegerConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,38 +1,38 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert;\n-\n-import static java.lang.Integer.valueOf;\n-import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\n-\n-/**\n- * The class to convert {@link String} to {@link Integer}\n- *\n- * @since 2.7.6\n- */\n-public class StringToIntegerConverter implements StringConverter<Integer> {\n-\n-    @Override\n-    public Integer convert(String source) {\n-        return isNotEmpty(source) ? valueOf(source) : null;\n-    }\n-\n-    @Override\n-    public int getPriority() {\n-        return NORMAL_PRIORITY;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert;\r\n+\r\n+import static java.lang.Integer.valueOf;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link Integer}\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToIntegerConverter implements StringConverter<Integer> {\r\n+\r\n+    @Override\r\n+    public Integer convert(String source) {\r\n+        return isNotEmpty(source) ? valueOf(source) : null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getPriority() {\r\n+        return NORMAL_PRIORITY;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/StringToLongConverter.java", "source2": "org/apache/dubbo/common/convert/StringToLongConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,39 +1,39 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert;\n-\n-import static java.lang.Long.valueOf;\n-import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\n-\n-/**\n- * The class to convert {@link String} to {@link Long}\n- *\n- * @since 2.7.6\n- */\n-public class StringToLongConverter implements StringConverter<Long> {\n-\n-    @Override\n-    public Long convert(String source) {\n-        return isNotEmpty(source) ? valueOf(source) : null;\n-    }\n-\n-\n-    @Override\n-    public int getPriority() {\n-        return NORMAL_PRIORITY + 1;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert;\r\n+\r\n+import static java.lang.Long.valueOf;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link Long}\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToLongConverter implements StringConverter<Long> {\r\n+\r\n+    @Override\r\n+    public Long convert(String source) {\r\n+        return isNotEmpty(source) ? valueOf(source) : null;\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public int getPriority() {\r\n+        return NORMAL_PRIORITY + 1;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/StringToOptionalConverter.java", "source2": "org/apache/dubbo/common/convert/StringToOptionalConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,40 +1,40 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert;\n-\n-import java.util.Optional;\n-\n-import static java.util.Optional.ofNullable;\n-\n-/**\n- * The class to convert {@link String} to {@link Optional}\n- *\n- * @since 2.7.6\n- */\n-public class StringToOptionalConverter implements StringConverter<Optional> {\n-\n-    @Override\n-    public Optional convert(String source) {\n-        return ofNullable(source);\n-    }\n-\n-\n-    @Override\n-    public int getPriority() {\n-        return MIN_PRIORITY;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert;\r\n+\r\n+import java.util.Optional;\r\n+\r\n+import static java.util.Optional.ofNullable;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link Optional}\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToOptionalConverter implements StringConverter<Optional> {\r\n+\r\n+    @Override\r\n+    public Optional convert(String source) {\r\n+        return ofNullable(source);\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public int getPriority() {\r\n+        return MIN_PRIORITY;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/StringToShortConverter.java", "source2": "org/apache/dubbo/common/convert/StringToShortConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,39 +1,39 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert;\n-\n-import static java.lang.Short.valueOf;\n-import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\n-\n-/**\n- * The class to convert {@link String} to {@link Short}\n- *\n- * @since 2.7.6\n- */\n-public class StringToShortConverter implements StringConverter<Short> {\n-\n-    @Override\n-    public Short convert(String source) {\n-        return isNotEmpty(source) ? valueOf(source) : null;\n-    }\n-\n-\n-    @Override\n-    public int getPriority() {\n-        return NORMAL_PRIORITY + 2;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert;\r\n+\r\n+import static java.lang.Short.valueOf;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link Short}\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToShortConverter implements StringConverter<Short> {\r\n+\r\n+    @Override\r\n+    public Short convert(String source) {\r\n+        return isNotEmpty(source) ? valueOf(source) : null;\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public int getPriority() {\r\n+        return NORMAL_PRIORITY + 2;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/StringToStringConverter.java", "source2": "org/apache/dubbo/common/convert/StringToStringConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,30 +1,30 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert;\n-\n-/**\n- * A class to covert {@link String} to {@link String} value, just no-op\n- *\n- * @since 2.7.6\n- */\n-public class StringToStringConverter implements StringConverter<String> {\n-\n-    @Override\n-    public String convert(String source) {\n-        return source;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert;\r\n+\r\n+/**\r\n+ * A class to covert {@link String} to {@link String} value, just no-op\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToStringConverter implements StringConverter<String> {\r\n+\r\n+    @Override\r\n+    public String convert(String source) {\r\n+        return source;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/multiple/MultiValueConverter.java", "source2": "org/apache/dubbo/common/convert/multiple/MultiValueConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,92 +1,92 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert.multiple;\n-\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.common.lang.Prioritized;\n-\n-import java.util.Collection;\n-\n-import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\n-import static org.apache.dubbo.common.utils.TypeUtils.findActualTypeArgument;\n-\n-/**\n- * An interface to convert the source-typed value to multiple value, e.g , Java array, {@link Collection} or\n- * sub-interfaces\n- *\n- * @param <S> The source type\n- * @since 2.7.6\n- */\n-@SPI\n-public interface MultiValueConverter<S> extends Prioritized {\n-\n-    /**\n-     * Accept the source type and target type or not\n-     *\n-     * @param sourceType     the source type\n-     * @param multiValueType the multi-value type\n-     * @return if accepted, return <code>true</code>, or <code>false</code>\n-     */\n-    boolean accept(Class<S> sourceType, Class<?> multiValueType);\n-\n-    /**\n-     * Convert the source to be the multiple value\n-     *\n-     * @param source         the source-typed value\n-     * @param multiValueType the multi-value type\n-     * @param elementType    the element type\n-     * @return\n-     */\n-    Object convert(S source, Class<?> multiValueType, Class<?> elementType);\n-\n-    /**\n-     * Get the source type\n-     *\n-     * @return non-null\n-     */\n-    default Class<S> getSourceType() {\n-        return findActualTypeArgument(getClass(), MultiValueConverter.class, 0);\n-    }\n-\n-    /**\n-     * Find the {@link MultiValueConverter} instance from {@link ExtensionLoader} with the specified source and target type\n-     *\n-     * @param sourceType the source type\n-     * @param targetType the target type\n-     * @return <code>null</code> if not found\n-     * @see ExtensionLoader#getSupportedExtensionInstances()\n-     * @since 2.7.8\n-     */\n-    static MultiValueConverter<?> find(Class<?> sourceType, Class<?> targetType) {\n-        return getExtensionLoader(MultiValueConverter.class)\n-                .getSupportedExtensionInstances()\n-                .stream()\n-                .filter(converter -> converter.accept(sourceType, targetType))\n-                .findFirst()\n-                .orElse(null);\n-    }\n-\n-    static <T> T convertIfPossible(Object source, Class<?> multiValueType, Class<?> elementType) {\n-        Class<?> sourceType = source.getClass();\n-        MultiValueConverter converter = find(sourceType, multiValueType);\n-        if (converter != null) {\n-            return (T) converter.convert(source, multiValueType, elementType);\n-        }\n-        return null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert.multiple;\r\n+\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.common.lang.Prioritized;\r\n+\r\n+import java.util.Collection;\r\n+\r\n+import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\r\n+import static org.apache.dubbo.common.utils.TypeUtils.findActualTypeArgument;\r\n+\r\n+/**\r\n+ * An interface to convert the source-typed value to multiple value, e.g , Java array, {@link Collection} or\r\n+ * sub-interfaces\r\n+ *\r\n+ * @param <S> The source type\r\n+ * @since 2.7.6\r\n+ */\r\n+@SPI\r\n+public interface MultiValueConverter<S> extends Prioritized {\r\n+\r\n+    /**\r\n+     * Accept the source type and target type or not\r\n+     *\r\n+     * @param sourceType     the source type\r\n+     * @param multiValueType the multi-value type\r\n+     * @return if accepted, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    boolean accept(Class<S> sourceType, Class<?> multiValueType);\r\n+\r\n+    /**\r\n+     * Convert the source to be the multiple value\r\n+     *\r\n+     * @param source         the source-typed value\r\n+     * @param multiValueType the multi-value type\r\n+     * @param elementType    the element type\r\n+     * @return\r\n+     */\r\n+    Object convert(S source, Class<?> multiValueType, Class<?> elementType);\r\n+\r\n+    /**\r\n+     * Get the source type\r\n+     *\r\n+     * @return non-null\r\n+     */\r\n+    default Class<S> getSourceType() {\r\n+        return findActualTypeArgument(getClass(), MultiValueConverter.class, 0);\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the {@link MultiValueConverter} instance from {@link ExtensionLoader} with the specified source and target type\r\n+     *\r\n+     * @param sourceType the source type\r\n+     * @param targetType the target type\r\n+     * @return <code>null</code> if not found\r\n+     * @see ExtensionLoader#getSupportedExtensionInstances()\r\n+     * @since 2.7.8\r\n+     */\r\n+    static MultiValueConverter<?> find(Class<?> sourceType, Class<?> targetType) {\r\n+        return getExtensionLoader(MultiValueConverter.class)\r\n+                .getSupportedExtensionInstances()\r\n+                .stream()\r\n+                .filter(converter -> converter.accept(sourceType, targetType))\r\n+                .findFirst()\r\n+                .orElse(null);\r\n+    }\r\n+\r\n+    static <T> T convertIfPossible(Object source, Class<?> multiValueType, Class<?> elementType) {\r\n+        Class<?> sourceType = source.getClass();\r\n+        MultiValueConverter converter = find(sourceType, multiValueType);\r\n+        if (converter != null) {\r\n+            return (T) converter.convert(source, multiValueType, elementType);\r\n+        }\r\n+        return null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/multiple/StringToArrayConverter.java", "source2": "org/apache/dubbo/common/convert/multiple/StringToArrayConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,60 +1,60 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert.multiple;\n-\n-import org.apache.dubbo.common.convert.Converter;\n-\n-import java.lang.reflect.Array;\n-\n-import static java.lang.reflect.Array.newInstance;\n-\n-/**\n- * The class to convert {@link String} to array-type object\n- *\n- * @since 2.7.6\n- */\n-public class StringToArrayConverter implements StringToMultiValueConverter {\n-\n-    public boolean accept(Class<String> type, Class<?> multiValueType) {\n-        if (multiValueType != null && multiValueType.isArray()) {\n-            return true;\n-        }\n-        return false;\n-    }\n-\n-    @Override\n-    public Object convert(String[] segments, int size, Class<?> targetType, Class<?> elementType) {\n-\n-        Class<?> componentType = targetType.getComponentType();\n-\n-        Converter converter = Converter.getConverter(String.class, componentType);\n-\n-        Object array = newInstance(componentType, size);\n-\n-        for (int i = 0; i < size; i++) {\n-            Array.set(array, i, converter.convert(segments[i]));\n-        }\n-\n-        return array;\n-    }\n-\n-\n-    @Override\n-    public int getPriority() {\n-        return MIN_PRIORITY;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert.multiple;\r\n+\r\n+import org.apache.dubbo.common.convert.Converter;\r\n+\r\n+import java.lang.reflect.Array;\r\n+\r\n+import static java.lang.reflect.Array.newInstance;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to array-type object\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToArrayConverter implements StringToMultiValueConverter {\r\n+\r\n+    public boolean accept(Class<String> type, Class<?> multiValueType) {\r\n+        if (multiValueType != null && multiValueType.isArray()) {\r\n+            return true;\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object convert(String[] segments, int size, Class<?> targetType, Class<?> elementType) {\r\n+\r\n+        Class<?> componentType = targetType.getComponentType();\r\n+\r\n+        Converter converter = Converter.getConverter(String.class, componentType);\r\n+\r\n+        Object array = newInstance(componentType, size);\r\n+\r\n+        for (int i = 0; i < size; i++) {\r\n+            Array.set(array, i, converter.convert(segments[i]));\r\n+        }\r\n+\r\n+        return array;\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public int getPriority() {\r\n+        return MIN_PRIORITY;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/multiple/StringToBlockingDequeConverter.java", "source2": "org/apache/dubbo/common/convert/multiple/StringToBlockingDequeConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert.multiple;\n-\n-import java.util.concurrent.BlockingDeque;\n-import java.util.concurrent.LinkedBlockingDeque;\n-\n-/**\n- * The class to convert {@link String} to {@link BlockingDeque}-based value\n- *\n- * @since 2.7.6\n- */\n-public class StringToBlockingDequeConverter extends StringToIterableConverter<BlockingDeque> {\n-\n-    @Override\n-    protected BlockingDeque createMultiValue(int size, Class<?> multiValueType) {\n-        return new LinkedBlockingDeque(size);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert.multiple;\r\n+\r\n+import java.util.concurrent.BlockingDeque;\r\n+import java.util.concurrent.LinkedBlockingDeque;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link BlockingDeque}-based value\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToBlockingDequeConverter extends StringToIterableConverter<BlockingDeque> {\r\n+\r\n+    @Override\r\n+    protected BlockingDeque createMultiValue(int size, Class<?> multiValueType) {\r\n+        return new LinkedBlockingDeque(size);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/multiple/StringToBlockingQueueConverter.java", "source2": "org/apache/dubbo/common/convert/multiple/StringToBlockingQueueConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,34 +1,34 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert.multiple;\n-\n-import java.util.concurrent.ArrayBlockingQueue;\n-import java.util.concurrent.BlockingDeque;\n-import java.util.concurrent.BlockingQueue;\n-\n-/**\n- * The class to convert {@link String} to {@link BlockingDeque}-based value\n- *\n- * @since 2.7.6\n- */\n-public class StringToBlockingQueueConverter extends StringToIterableConverter<BlockingQueue> {\n-\n-    @Override\n-    protected BlockingQueue createMultiValue(int size, Class<?> multiValueType) {\n-        return new ArrayBlockingQueue(size);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert.multiple;\r\n+\r\n+import java.util.concurrent.ArrayBlockingQueue;\r\n+import java.util.concurrent.BlockingDeque;\r\n+import java.util.concurrent.BlockingQueue;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link BlockingDeque}-based value\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToBlockingQueueConverter extends StringToIterableConverter<BlockingQueue> {\r\n+\r\n+    @Override\r\n+    protected BlockingQueue createMultiValue(int size, Class<?> multiValueType) {\r\n+        return new ArrayBlockingQueue(size);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/multiple/StringToCollectionConverter.java", "source2": "org/apache/dubbo/common/convert/multiple/StringToCollectionConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert.multiple;\n-\n-import java.util.ArrayList;\n-import java.util.Collection;\n-\n-/**\n- * The class to convert {@link String} to {@link Collection}-based value\n- *\n- * @since 2.7.6\n- */\n-public class StringToCollectionConverter extends StringToIterableConverter<Collection> {\n-\n-    @Override\n-    protected Collection createMultiValue(int size, Class<?> multiValueType) {\n-        return new ArrayList(size);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert.multiple;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Collection;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link Collection}-based value\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToCollectionConverter extends StringToIterableConverter<Collection> {\r\n+\r\n+    @Override\r\n+    protected Collection createMultiValue(int size, Class<?> multiValueType) {\r\n+        return new ArrayList(size);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/multiple/StringToDequeConverter.java", "source2": "org/apache/dubbo/common/convert/multiple/StringToDequeConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert.multiple;\n-\n-import java.util.ArrayDeque;\n-import java.util.Deque;\n-\n-/**\n- * The class to convert {@link String} to {@link Deque}-based value\n- *\n- * @since 2.7.6\n- */\n-public class StringToDequeConverter extends StringToIterableConverter<Deque> {\n-\n-    @Override\n-    protected Deque createMultiValue(int size, Class<?> multiValueType) {\n-        return new ArrayDeque(size);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert.multiple;\r\n+\r\n+import java.util.ArrayDeque;\r\n+import java.util.Deque;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link Deque}-based value\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToDequeConverter extends StringToIterableConverter<Deque> {\r\n+\r\n+    @Override\r\n+    protected Deque createMultiValue(int size, Class<?> multiValueType) {\r\n+        return new ArrayDeque(size);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/multiple/StringToIterableConverter.java", "source2": "org/apache/dubbo/common/convert/multiple/StringToIterableConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,80 +1,80 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert.multiple;\n-\n-import org.apache.dubbo.common.convert.StringConverter;\n-\n-import java.util.Collection;\n-import java.util.Optional;\n-\n-import static org.apache.dubbo.common.convert.Converter.getConverter;\n-import static org.apache.dubbo.common.utils.ClassUtils.getAllInterfaces;\n-import static org.apache.dubbo.common.utils.ClassUtils.isAssignableFrom;\n-import static org.apache.dubbo.common.utils.TypeUtils.findActualTypeArgument;\n-\n-/**\n- * The class to convert {@link String} to {@link Iterable}-based value\n- *\n- * @since 2.7.6\n- */\n-public abstract class StringToIterableConverter<T extends Iterable> implements StringToMultiValueConverter {\n-\n-    public boolean accept(Class<String> type, Class<?> multiValueType) {\n-        return isAssignableFrom(getSupportedType(), multiValueType);\n-    }\n-\n-    @Override\n-    public final Object convert(String[] segments, int size, Class<?> multiValueType, Class<?> elementType) {\n-\n-        Optional<StringConverter> stringConverter = getStringConverter(elementType);\n-\n-        return stringConverter.map(converter -> {\n-\n-            T convertedObject = createMultiValue(size, multiValueType);\n-\n-            if (convertedObject instanceof Collection) {\n-                Collection collection = (Collection) convertedObject;\n-                for (int i = 0; i < size; i++) {\n-                    String segment = segments[i];\n-                    Object element = converter.convert(segment);\n-                    collection.add(element);\n-                }\n-                return collection;\n-            }\n-\n-            return convertedObject;\n-        }).orElse(null);\n-    }\n-\n-    protected abstract T createMultiValue(int size, Class<?> multiValueType);\n-\n-    protected Optional<StringConverter> getStringConverter(Class<?> elementType) {\n-        StringConverter converter = (StringConverter) getConverter(String.class, elementType);\n-        return Optional.ofNullable(converter);\n-    }\n-\n-    protected final Class<T> getSupportedType() {\n-        return findActualTypeArgument(getClass(), StringToIterableConverter.class, 0);\n-    }\n-\n-    @Override\n-    public final int getPriority() {\n-        int level = getAllInterfaces(getSupportedType(), type ->\n-                isAssignableFrom(Iterable.class, type)).size();\n-        return MIN_PRIORITY - level;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert.multiple;\r\n+\r\n+import org.apache.dubbo.common.convert.StringConverter;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.Optional;\r\n+\r\n+import static org.apache.dubbo.common.convert.Converter.getConverter;\r\n+import static org.apache.dubbo.common.utils.ClassUtils.getAllInterfaces;\r\n+import static org.apache.dubbo.common.utils.ClassUtils.isAssignableFrom;\r\n+import static org.apache.dubbo.common.utils.TypeUtils.findActualTypeArgument;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link Iterable}-based value\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public abstract class StringToIterableConverter<T extends Iterable> implements StringToMultiValueConverter {\r\n+\r\n+    public boolean accept(Class<String> type, Class<?> multiValueType) {\r\n+        return isAssignableFrom(getSupportedType(), multiValueType);\r\n+    }\r\n+\r\n+    @Override\r\n+    public final Object convert(String[] segments, int size, Class<?> multiValueType, Class<?> elementType) {\r\n+\r\n+        Optional<StringConverter> stringConverter = getStringConverter(elementType);\r\n+\r\n+        return stringConverter.map(converter -> {\r\n+\r\n+            T convertedObject = createMultiValue(size, multiValueType);\r\n+\r\n+            if (convertedObject instanceof Collection) {\r\n+                Collection collection = (Collection) convertedObject;\r\n+                for (int i = 0; i < size; i++) {\r\n+                    String segment = segments[i];\r\n+                    Object element = converter.convert(segment);\r\n+                    collection.add(element);\r\n+                }\r\n+                return collection;\r\n+            }\r\n+\r\n+            return convertedObject;\r\n+        }).orElse(null);\r\n+    }\r\n+\r\n+    protected abstract T createMultiValue(int size, Class<?> multiValueType);\r\n+\r\n+    protected Optional<StringConverter> getStringConverter(Class<?> elementType) {\r\n+        StringConverter converter = (StringConverter) getConverter(String.class, elementType);\r\n+        return Optional.ofNullable(converter);\r\n+    }\r\n+\r\n+    protected final Class<T> getSupportedType() {\r\n+        return findActualTypeArgument(getClass(), StringToIterableConverter.class, 0);\r\n+    }\r\n+\r\n+    @Override\r\n+    public final int getPriority() {\r\n+        int level = getAllInterfaces(getSupportedType(), type ->\r\n+                isAssignableFrom(Iterable.class, type)).size();\r\n+        return MIN_PRIORITY - level;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/multiple/StringToListConverter.java", "source2": "org/apache/dubbo/common/convert/multiple/StringToListConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert.multiple;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * The class to convert {@link String} to {@link List}-based value\n- *\n- * @since 2.7.6\n- */\n-public class StringToListConverter extends StringToIterableConverter<List> {\n-\n-    @Override\n-    protected List createMultiValue(int size, Class<?> multiValueType) {\n-        return new ArrayList(size);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert.multiple;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link List}-based value\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToListConverter extends StringToIterableConverter<List> {\r\n+\r\n+    @Override\r\n+    protected List createMultiValue(int size, Class<?> multiValueType) {\r\n+        return new ArrayList(size);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/multiple/StringToMultiValueConverter.java", "source2": "org/apache/dubbo/common/convert/multiple/StringToMultiValueConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,61 +1,61 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert.multiple;\n-\n-import org.apache.dubbo.common.utils.ArrayUtils;\n-\n-import static org.apache.dubbo.common.utils.StringUtils.isEmpty;\n-import static org.apache.dubbo.common.utils.StringUtils.split;\n-\n-/**\n- * The class to convert {@link String} to multiple value object\n- *\n- * @see MultiValueConverter\n- * @since 2.7.6\n- */\n-public interface StringToMultiValueConverter extends MultiValueConverter<String> {\n-\n-    @Override\n-    default Object convert(String source, Class<?> multiValueType, Class<?> elementType) {\n-\n-        if (isEmpty(source)) {\n-            return null;\n-        }\n-\n-        // split by the comma\n-        String[] segments = split(source, ',');\n-\n-        if (ArrayUtils.isEmpty(segments)) { // If empty array, create an array with only one element\n-            segments = new String[]{source};\n-        }\n-\n-        int size = segments.length;\n-\n-        return convert(segments, size, multiValueType, elementType);\n-    }\n-\n-    /**\n-     * Convert the segments to multiple value object\n-     *\n-     * @param segments    the String array of content\n-     * @param size        the size of multiple value object\n-     * @param targetType  the target type\n-     * @param elementType the element type\n-     * @return multiple value object\n-     */\n-    Object convert(String[] segments, int size, Class<?> targetType, Class<?> elementType);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert.multiple;\r\n+\r\n+import org.apache.dubbo.common.utils.ArrayUtils;\r\n+\r\n+import static org.apache.dubbo.common.utils.StringUtils.isEmpty;\r\n+import static org.apache.dubbo.common.utils.StringUtils.split;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to multiple value object\r\n+ *\r\n+ * @see MultiValueConverter\r\n+ * @since 2.7.6\r\n+ */\r\n+public interface StringToMultiValueConverter extends MultiValueConverter<String> {\r\n+\r\n+    @Override\r\n+    default Object convert(String source, Class<?> multiValueType, Class<?> elementType) {\r\n+\r\n+        if (isEmpty(source)) {\r\n+            return null;\r\n+        }\r\n+\r\n+        // split by the comma\r\n+        String[] segments = split(source, ',');\r\n+\r\n+        if (ArrayUtils.isEmpty(segments)) { // If empty array, create an array with only one element\r\n+            segments = new String[]{source};\r\n+        }\r\n+\r\n+        int size = segments.length;\r\n+\r\n+        return convert(segments, size, multiValueType, elementType);\r\n+    }\r\n+\r\n+    /**\r\n+     * Convert the segments to multiple value object\r\n+     *\r\n+     * @param segments    the String array of content\r\n+     * @param size        the size of multiple value object\r\n+     * @param targetType  the target type\r\n+     * @param elementType the element type\r\n+     * @return multiple value object\r\n+     */\r\n+    Object convert(String[] segments, int size, Class<?> targetType, Class<?> elementType);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/multiple/StringToNavigableSetConverter.java", "source2": "org/apache/dubbo/common/convert/multiple/StringToNavigableSetConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,34 +1,34 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert.multiple;\n-\n-import java.util.NavigableSet;\n-import java.util.SortedSet;\n-import java.util.TreeSet;\n-\n-/**\n- * The class to convert {@link String} to {@link SortedSet}-based value\n- *\n- * @since 2.7.6\n- */\n-public class StringToNavigableSetConverter extends StringToIterableConverter<NavigableSet> {\n-\n-    @Override\n-    protected NavigableSet createMultiValue(int size, Class<?> multiValueType) {\n-        return new TreeSet();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert.multiple;\r\n+\r\n+import java.util.NavigableSet;\r\n+import java.util.SortedSet;\r\n+import java.util.TreeSet;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link SortedSet}-based value\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToNavigableSetConverter extends StringToIterableConverter<NavigableSet> {\r\n+\r\n+    @Override\r\n+    protected NavigableSet createMultiValue(int size, Class<?> multiValueType) {\r\n+        return new TreeSet();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/multiple/StringToQueueConverter.java", "source2": "org/apache/dubbo/common/convert/multiple/StringToQueueConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,34 +1,34 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert.multiple;\n-\n-import java.util.ArrayDeque;\n-import java.util.Deque;\n-import java.util.Queue;\n-\n-/**\n- * The class to convert {@link String} to {@link Deque}-based value\n- *\n- * @since 2.7.6\n- */\n-public class StringToQueueConverter extends StringToIterableConverter<Queue> {\n-\n-    @Override\n-    protected Queue createMultiValue(int size, Class<?> multiValueType) {\n-        return new ArrayDeque(size);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert.multiple;\r\n+\r\n+import java.util.ArrayDeque;\r\n+import java.util.Deque;\r\n+import java.util.Queue;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link Deque}-based value\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToQueueConverter extends StringToIterableConverter<Queue> {\r\n+\r\n+    @Override\r\n+    protected Queue createMultiValue(int size, Class<?> multiValueType) {\r\n+        return new ArrayDeque(size);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/multiple/StringToSetConverter.java", "source2": "org/apache/dubbo/common/convert/multiple/StringToSetConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert.multiple;\n-\n-import java.util.HashSet;\n-import java.util.Set;\n-\n-/**\n- * The class to convert {@link String} to {@link Set}-based value\n- *\n- * @since 2.7.6\n- */\n-public class StringToSetConverter extends StringToIterableConverter<Set> {\n-\n-    @Override\n-    protected Set createMultiValue(int size, Class<?> multiValueType) {\n-        return new HashSet(size);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert.multiple;\r\n+\r\n+import java.util.HashSet;\r\n+import java.util.Set;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link Set}-based value\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToSetConverter extends StringToIterableConverter<Set> {\r\n+\r\n+    @Override\r\n+    protected Set createMultiValue(int size, Class<?> multiValueType) {\r\n+        return new HashSet(size);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/multiple/StringToSortedSetConverter.java", "source2": "org/apache/dubbo/common/convert/multiple/StringToSortedSetConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert.multiple;\n-\n-import java.util.SortedSet;\n-import java.util.TreeSet;\n-\n-/**\n- * The class to convert {@link String} to {@link SortedSet}-based value\n- *\n- * @since 2.7.6\n- */\n-public class StringToSortedSetConverter extends StringToIterableConverter<SortedSet> {\n-\n-    @Override\n-    protected SortedSet createMultiValue(int size, Class<?> multiValueType) {\n-        return new TreeSet();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert.multiple;\r\n+\r\n+import java.util.SortedSet;\r\n+import java.util.TreeSet;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link SortedSet}-based value\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToSortedSetConverter extends StringToIterableConverter<SortedSet> {\r\n+\r\n+    @Override\r\n+    protected SortedSet createMultiValue(int size, Class<?> multiValueType) {\r\n+        return new TreeSet();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/convert/multiple/StringToTransferQueueConverter.java", "source2": "org/apache/dubbo/common/convert/multiple/StringToTransferQueueConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.convert.multiple;\n-\n-import java.util.concurrent.LinkedTransferQueue;\n-import java.util.concurrent.TransferQueue;\n-\n-/**\n- * The class to convert {@link String} to {@link TransferQueue}-based value\n- *\n- * @since 2.7.6\n- */\n-public class StringToTransferQueueConverter extends StringToIterableConverter<TransferQueue> {\n-\n-    @Override\n-    protected TransferQueue createMultiValue(int size, Class<?> multiValueType) {\n-        return new LinkedTransferQueue();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.convert.multiple;\r\n+\r\n+import java.util.concurrent.LinkedTransferQueue;\r\n+import java.util.concurrent.TransferQueue;\r\n+\r\n+/**\r\n+ * The class to convert {@link String} to {@link TransferQueue}-based value\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class StringToTransferQueueConverter extends StringToIterableConverter<TransferQueue> {\r\n+\r\n+    @Override\r\n+    protected TransferQueue createMultiValue(int size, Class<?> multiValueType) {\r\n+        return new LinkedTransferQueue();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/extension/Adaptive.java", "source2": "org/apache/dubbo/common/extension/Adaptive.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,60 +1,60 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.extension;\n-\n-import org.apache.dubbo.common.URL;\n-\n-import java.lang.annotation.Documented;\n-import java.lang.annotation.ElementType;\n-import java.lang.annotation.Retention;\n-import java.lang.annotation.RetentionPolicy;\n-import java.lang.annotation.Target;\n-\n-/**\n- * Provide helpful information for {@link ExtensionLoader} to inject dependency extension instance.\n- *\n- * @see ExtensionLoader\n- * @see URL\n- */\n-@Documented\n-@Retention(RetentionPolicy.RUNTIME)\n-@Target({ElementType.TYPE, ElementType.METHOD})\n-public @interface Adaptive {\n-    /**\n-     * Decide which target extension to be injected. The name of the target extension is decided by the parameter passed\n-     * in the URL, and the parameter names are given by this method.\n-     * <p>\n-     * If the specified parameters are not found from {@link URL}, then the default extension will be used for\n-     * dependency injection (specified in its interface's {@link SPI}).\n-     * <p>\n-     * For example, given <code>String[] {\"key1\", \"key2\"}</code>:\n-     * <ol>\n-     * <li>find parameter 'key1' in URL, use its value as the extension's name</li>\n-     * <li>try 'key2' for extension's name if 'key1' is not found (or its value is empty) in URL</li>\n-     * <li>use default extension if 'key2' doesn't exist either</li>\n-     * <li>otherwise, throw {@link IllegalStateException}</li>\n-     * </ol>\n-     * If the parameter names are empty, then a default parameter name is generated from interface's\n-     * class name with the rule: divide classname from capital char into several parts, and separate the parts with\n-     * dot '.', for example, for {@code org.apache.dubbo.xxx.YyyInvokerWrapper}, the generated name is\n-     * <code>String[] {\"yyy.invoker.wrapper\"}</code>.\n-     *\n-     * @return parameter names in URL\n-     */\n-    String[] value() default {};\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.extension;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+\r\n+import java.lang.annotation.Documented;\r\n+import java.lang.annotation.ElementType;\r\n+import java.lang.annotation.Retention;\r\n+import java.lang.annotation.RetentionPolicy;\r\n+import java.lang.annotation.Target;\r\n+\r\n+/**\r\n+ * Provide helpful information for {@link ExtensionLoader} to inject dependency extension instance.\r\n+ *\r\n+ * @see ExtensionLoader\r\n+ * @see URL\r\n+ */\r\n+@Documented\r\n+@Retention(RetentionPolicy.RUNTIME)\r\n+@Target({ElementType.TYPE, ElementType.METHOD})\r\n+public @interface Adaptive {\r\n+    /**\r\n+     * Decide which target extension to be injected. The name of the target extension is decided by the parameter passed\r\n+     * in the URL, and the parameter names are given by this method.\r\n+     * <p>\r\n+     * If the specified parameters are not found from {@link URL}, then the default extension will be used for\r\n+     * dependency injection (specified in its interface's {@link SPI}).\r\n+     * <p>\r\n+     * For example, given <code>String[] {\"key1\", \"key2\"}</code>:\r\n+     * <ol>\r\n+     * <li>find parameter 'key1' in URL, use its value as the extension's name</li>\r\n+     * <li>try 'key2' for extension's name if 'key1' is not found (or its value is empty) in URL</li>\r\n+     * <li>use default extension if 'key2' doesn't exist either</li>\r\n+     * <li>otherwise, throw {@link IllegalStateException}</li>\r\n+     * </ol>\r\n+     * If the parameter names are empty, then a default parameter name is generated from interface's\r\n+     * class name with the rule: divide classname from capital char into several parts, and separate the parts with\r\n+     * dot '.', for example, for {@code org.apache.dubbo.xxx.YyyInvokerWrapper}, the generated name is\r\n+     * <code>String[] {\"yyy.invoker.wrapper\"}</code>.\r\n+     *\r\n+     * @return parameter names in URL\r\n+     */\r\n+    String[] value() default {};\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/common/extension/AdaptiveClassCodeGenerator.java", "source2": "org/apache/dubbo/common/extension/AdaptiveClassCodeGenerator.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,396 +1,396 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.extension;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Modifier;\n-import java.util.Arrays;\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.stream.Collectors;\n-import java.util.stream.IntStream;\n-\n-/**\n- * Code generator for Adaptive class\n- */\n-public class AdaptiveClassCodeGenerator {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(AdaptiveClassCodeGenerator.class);\n-\n-    private static final String CLASSNAME_INVOCATION = \"org.apache.dubbo.rpc.Invocation\";\n-\n-    private static final String CODE_PACKAGE = \"package %s;\\n\";\n-\n-    private static final String CODE_IMPORTS = \"import %s;\\n\";\n-\n-    private static final String CODE_CLASS_DECLARATION = \"public class %s$Adaptive implements %s {\\n\";\n-\n-    private static final String CODE_METHOD_DECLARATION = \"public %s %s(%s) %s {\\n%s}\\n\";\n-\n-    private static final String CODE_METHOD_ARGUMENT = \"%s arg%d\";\n-\n-    private static final String CODE_METHOD_THROWS = \"throws %s\";\n-\n-    private static final String CODE_UNSUPPORTED = \"throw new UnsupportedOperationException(\\\"The method %s of interface %s is not adaptive method!\\\");\\n\";\n-\n-    private static final String CODE_URL_NULL_CHECK = \"if (arg%d == null) throw new IllegalArgumentException(\\\"url == null\\\");\\n%s url = arg%d;\\n\";\n-\n-    private static final String CODE_EXT_NAME_ASSIGNMENT = \"String extName = %s;\\n\";\n-\n-    private static final String CODE_EXT_NAME_NULL_CHECK = \"if(extName == null) \"\n-                    + \"throw new IllegalStateException(\\\"Failed to get extension (%s) name from url (\\\" + url.toString() + \\\") use keys(%s)\\\");\\n\";\n-\n-    private static final String CODE_INVOCATION_ARGUMENT_NULL_CHECK = \"if (arg%d == null) throw new IllegalArgumentException(\\\"invocation == null\\\"); \"\n-                    + \"String methodName = arg%d.getMethodName();\\n\";\n-\n-\n-    private static final String CODE_EXTENSION_ASSIGNMENT = \"%s extension = (%<s)%s.getExtensionLoader(%s.class).getExtension(extName);\\n\";\n-\n-    private static final String CODE_EXTENSION_METHOD_INVOKE_ARGUMENT = \"arg%d\";\n-\n-    private final Class<?> type;\n-\n-    private String defaultExtName;\n-\n-    public AdaptiveClassCodeGenerator(Class<?> type, String defaultExtName) {\n-        this.type = type;\n-        this.defaultExtName = defaultExtName;\n-    }\n-\n-    /**\n-     * test if given type has at least one method annotated with <code>Adaptive</code>\n-     */\n-    private boolean hasAdaptiveMethod() {\n-        return Arrays.stream(type.getMethods()).anyMatch(m -> m.isAnnotationPresent(Adaptive.class));\n-    }\n-\n-    /**\n-     * generate and return class code\n-     */\n-    public String generate() {\n-        // no need to generate adaptive class since there's no adaptive method found.\n-        if (!hasAdaptiveMethod()) {\n-            throw new IllegalStateException(\"No adaptive method exist on extension \" + type.getName() + \", refuse to create the adaptive class!\");\n-        }\n-\n-        StringBuilder code = new StringBuilder();\n-        code.append(generatePackageInfo());\n-        code.append(generateImports());\n-        code.append(generateClassDeclaration());\n-\n-        Method[] methods = type.getMethods();\n-        for (Method method : methods) {\n-            code.append(generateMethod(method));\n-        }\n-        code.append(\"}\");\n-\n-        if (logger.isDebugEnabled()) {\n-            logger.debug(code.toString());\n-        }\n-        return code.toString();\n-    }\n-\n-    /**\n-     * generate package info\n-     */\n-    private String generatePackageInfo() {\n-        return String.format(CODE_PACKAGE, type.getPackage().getName());\n-    }\n-\n-    /**\n-     * generate imports\n-     */\n-    private String generateImports() {\n-        return String.format(CODE_IMPORTS, ExtensionLoader.class.getName());\n-    }\n-\n-    /**\n-     * generate class declaration\n-     */\n-    private String generateClassDeclaration() {\n-        return String.format(CODE_CLASS_DECLARATION, type.getSimpleName(), type.getCanonicalName());\n-    }\n-\n-    /**\n-     * generate method not annotated with Adaptive with throwing unsupported exception\n-     */\n-    private String generateUnsupported(Method method) {\n-        return String.format(CODE_UNSUPPORTED, method, type.getName());\n-    }\n-\n-    /**\n-     * get index of parameter with type URL\n-     */\n-    private int getUrlTypeIndex(Method method) {\n-        int urlTypeIndex = -1;\n-        Class<?>[] pts = method.getParameterTypes();\n-        for (int i = 0; i < pts.length; ++i) {\n-            if (pts[i].equals(URL.class)) {\n-                urlTypeIndex = i;\n-                break;\n-            }\n-        }\n-        return urlTypeIndex;\n-    }\n-\n-    /**\n-     * generate method declaration\n-     */\n-    private String generateMethod(Method method) {\n-        String methodReturnType = method.getReturnType().getCanonicalName();\n-        String methodName = method.getName();\n-        String methodContent = generateMethodContent(method);\n-        String methodArgs = generateMethodArguments(method);\n-        String methodThrows = generateMethodThrows(method);\n-        return String.format(CODE_METHOD_DECLARATION, methodReturnType, methodName, methodArgs, methodThrows, methodContent);\n-    }\n-\n-    /**\n-     * generate method arguments\n-     */\n-    private String generateMethodArguments(Method method) {\n-        Class<?>[] pts = method.getParameterTypes();\n-        return IntStream.range(0, pts.length)\n-                        .mapToObj(i -> String.format(CODE_METHOD_ARGUMENT, pts[i].getCanonicalName(), i))\n-                        .collect(Collectors.joining(\", \"));\n-    }\n-\n-    /**\n-     * generate method throws\n-     */\n-    private String generateMethodThrows(Method method) {\n-        Class<?>[] ets = method.getExceptionTypes();\n-        if (ets.length > 0) {\n-            String list = Arrays.stream(ets).map(Class::getCanonicalName).collect(Collectors.joining(\", \"));\n-            return String.format(CODE_METHOD_THROWS, list);\n-        } else {\n-            return \"\";\n-        }\n-    }\n-\n-    /**\n-     * generate method URL argument null check\n-     */\n-    private String generateUrlNullCheck(int index) {\n-        return String.format(CODE_URL_NULL_CHECK, index, URL.class.getName(), index);\n-    }\n-\n-    /**\n-     * generate method content\n-     */\n-    private String generateMethodContent(Method method) {\n-        Adaptive adaptiveAnnotation = method.getAnnotation(Adaptive.class);\n-        StringBuilder code = new StringBuilder(512);\n-        if (adaptiveAnnotation == null) {\n-            return generateUnsupported(method);\n-        } else {\n-            int urlTypeIndex = getUrlTypeIndex(method);\n-\n-            // found parameter in URL type\n-            if (urlTypeIndex != -1) {\n-                // Null Point check\n-                code.append(generateUrlNullCheck(urlTypeIndex));\n-            } else {\n-                // did not find parameter in URL type\n-                code.append(generateUrlAssignmentIndirectly(method));\n-            }\n-\n-            String[] value = getMethodAdaptiveValue(adaptiveAnnotation);\n-\n-            boolean hasInvocation = hasInvocationArgument(method);\n-\n-            code.append(generateInvocationArgumentNullCheck(method));\n-\n-            code.append(generateExtNameAssignment(value, hasInvocation));\n-            // check extName == null?\n-            code.append(generateExtNameNullCheck(value));\n-\n-            code.append(generateExtensionAssignment());\n-\n-            // return statement\n-            code.append(generateReturnAndInvocation(method));\n-        }\n-\n-        return code.toString();\n-    }\n-\n-    /**\n-     * generate code for variable extName null check\n-     */\n-    private String generateExtNameNullCheck(String[] value) {\n-        return String.format(CODE_EXT_NAME_NULL_CHECK, type.getName(), Arrays.toString(value));\n-    }\n-\n-    /**\n-     * generate extName assignment code\n-     */\n-    private String generateExtNameAssignment(String[] value, boolean hasInvocation) {\n-        // TODO: refactor it\n-        String getNameCode = null;\n-        for (int i = value.length - 1; i >= 0; --i) {\n-            if (i == value.length - 1) {\n-                if (null != defaultExtName) {\n-                    if (!\"protocol\".equals(value[i])) {\n-                        if (hasInvocation) {\n-                            getNameCode = String.format(\"url.getMethodParameter(methodName, \\\"%s\\\", \\\"%s\\\")\", value[i], defaultExtName);\n-                        } else {\n-                            getNameCode = String.format(\"url.getParameter(\\\"%s\\\", \\\"%s\\\")\", value[i], defaultExtName);\n-                        }\n-                    } else {\n-                        getNameCode = String.format(\"( url.getProtocol() == null ? \\\"%s\\\" : url.getProtocol() )\", defaultExtName);\n-                    }\n-                } else {\n-                    if (!\"protocol\".equals(value[i])) {\n-                        if (hasInvocation) {\n-                            getNameCode = String.format(\"url.getMethodParameter(methodName, \\\"%s\\\", \\\"%s\\\")\", value[i], defaultExtName);\n-                        } else {\n-                            getNameCode = String.format(\"url.getParameter(\\\"%s\\\")\", value[i]);\n-                        }\n-                    } else {\n-                        getNameCode = \"url.getProtocol()\";\n-                    }\n-                }\n-            } else {\n-                if (!\"protocol\".equals(value[i])) {\n-                    if (hasInvocation) {\n-                        getNameCode = String.format(\"url.getMethodParameter(methodName, \\\"%s\\\", \\\"%s\\\")\", value[i], defaultExtName);\n-                    } else {\n-                        getNameCode = String.format(\"url.getParameter(\\\"%s\\\", %s)\", value[i], getNameCode);\n-                    }\n-                } else {\n-                    getNameCode = String.format(\"url.getProtocol() == null ? (%s) : url.getProtocol()\", getNameCode);\n-                }\n-            }\n-        }\n-\n-        return String.format(CODE_EXT_NAME_ASSIGNMENT, getNameCode);\n-    }\n-\n-    /**\n-     * @return\n-     */\n-    private String generateExtensionAssignment() {\n-        return String.format(CODE_EXTENSION_ASSIGNMENT, type.getName(), ExtensionLoader.class.getSimpleName(), type.getName());\n-    }\n-\n-    /**\n-     * generate method invocation statement and return it if necessary\n-     */\n-    private String generateReturnAndInvocation(Method method) {\n-        String returnStatement = method.getReturnType().equals(void.class) ? \"\" : \"return \";\n-\n-        String args = IntStream.range(0, method.getParameters().length)\n-                .mapToObj(i -> String.format(CODE_EXTENSION_METHOD_INVOKE_ARGUMENT, i))\n-                .collect(Collectors.joining(\", \"));\n-\n-        return returnStatement + String.format(\"extension.%s(%s);\\n\", method.getName(), args);\n-    }\n-\n-    /**\n-     * test if method has argument of type <code>Invocation</code>\n-     */\n-    private boolean hasInvocationArgument(Method method) {\n-        Class<?>[] pts = method.getParameterTypes();\n-        return Arrays.stream(pts).anyMatch(p -> CLASSNAME_INVOCATION.equals(p.getName()));\n-    }\n-\n-    /**\n-     * generate code to test argument of type <code>Invocation</code> is null\n-     */\n-    private String generateInvocationArgumentNullCheck(Method method) {\n-        Class<?>[] pts = method.getParameterTypes();\n-        return IntStream.range(0, pts.length).filter(i -> CLASSNAME_INVOCATION.equals(pts[i].getName()))\n-                        .mapToObj(i -> String.format(CODE_INVOCATION_ARGUMENT_NULL_CHECK, i, i))\n-                        .findFirst().orElse(\"\");\n-    }\n-\n-    /**\n-     * get value of adaptive annotation or if empty return splitted simple name\n-     */\n-    private String[] getMethodAdaptiveValue(Adaptive adaptiveAnnotation) {\n-        String[] value = adaptiveAnnotation.value();\n-        // value is not set, use the value generated from class name as the key\n-        if (value.length == 0) {\n-            String splitName = StringUtils.camelToSplitName(type.getSimpleName(), \".\");\n-            value = new String[]{splitName};\n-        }\n-        return value;\n-    }\n-\n-    /**\n-     * get parameter with type <code>URL</code> from method parameter:\n-     * <p>\n-     * test if parameter has method which returns type <code>URL</code>\n-     * <p>\n-     * if not found, throws IllegalStateException\n-     */\n-    private String generateUrlAssignmentIndirectly(Method method) {\n-        Class<?>[] pts = method.getParameterTypes();\n-\n-        Map<String, Integer> getterReturnUrl = new HashMap<>();\n-        // find URL getter method\n-        for (int i = 0; i < pts.length; ++i) {\n-            for (Method m : pts[i].getMethods()) {\n-                String name = m.getName();\n-                if ((name.startsWith(\"get\") || name.length() > 3)\n-                        && Modifier.isPublic(m.getModifiers())\n-                        && !Modifier.isStatic(m.getModifiers())\n-                        && m.getParameterTypes().length == 0\n-                        && m.getReturnType() == URL.class) {\n-                    getterReturnUrl.put(name, i);\n-                }\n-            }\n-        }\n-\n-        if (getterReturnUrl.size() <= 0) {\n-            // getter method not found, throw\n-            throw new IllegalStateException(\"Failed to create adaptive class for interface \" + type.getName()\n-                    + \": not found url parameter or url attribute in parameters of method \" + method.getName());\n-        }\n-\n-        Integer index = getterReturnUrl.get(\"getUrl\");\n-        if (index != null) {\n-            return generateGetUrlNullCheck(index, pts[index], \"getUrl\");\n-        } else {\n-            Map.Entry<String, Integer> entry = getterReturnUrl.entrySet().iterator().next();\n-            return generateGetUrlNullCheck(entry.getValue(), pts[entry.getValue()], entry.getKey());\n-        }\n-    }\n-\n-    /**\n-     * 1, test if argi is null\n-     * 2, test if argi.getXX() returns null\n-     * 3, assign url with argi.getXX()\n-     */\n-    private String generateGetUrlNullCheck(int index, Class<?> type, String method) {\n-        // Null point check\n-        StringBuilder code = new StringBuilder();\n-        code.append(String.format(\"if (arg%d == null) throw new IllegalArgumentException(\\\"%s argument == null\\\");\\n\",\n-                index, type.getName()));\n-        code.append(String.format(\"if (arg%d.%s() == null) throw new IllegalArgumentException(\\\"%s argument %s() == null\\\");\\n\",\n-                index, method, type.getName(), method));\n-\n-        code.append(String.format(\"%s url = arg%d.%s();\\n\", URL.class.getName(), index, method));\n-        return code.toString();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.extension;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Modifier;\r\n+import java.util.Arrays;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.stream.Collectors;\r\n+import java.util.stream.IntStream;\r\n+\r\n+/**\r\n+ * Code generator for Adaptive class\r\n+ */\r\n+public class AdaptiveClassCodeGenerator {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(AdaptiveClassCodeGenerator.class);\r\n+\r\n+    private static final String CLASSNAME_INVOCATION = \"org.apache.dubbo.rpc.Invocation\";\r\n+\r\n+    private static final String CODE_PACKAGE = \"package %s;\\n\";\r\n+\r\n+    private static final String CODE_IMPORTS = \"import %s;\\n\";\r\n+\r\n+    private static final String CODE_CLASS_DECLARATION = \"public class %s$Adaptive implements %s {\\n\";\r\n+\r\n+    private static final String CODE_METHOD_DECLARATION = \"public %s %s(%s) %s {\\n%s}\\n\";\r\n+\r\n+    private static final String CODE_METHOD_ARGUMENT = \"%s arg%d\";\r\n+\r\n+    private static final String CODE_METHOD_THROWS = \"throws %s\";\r\n+\r\n+    private static final String CODE_UNSUPPORTED = \"throw new UnsupportedOperationException(\\\"The method %s of interface %s is not adaptive method!\\\");\\n\";\r\n+\r\n+    private static final String CODE_URL_NULL_CHECK = \"if (arg%d == null) throw new IllegalArgumentException(\\\"url == null\\\");\\n%s url = arg%d;\\n\";\r\n+\r\n+    private static final String CODE_EXT_NAME_ASSIGNMENT = \"String extName = %s;\\n\";\r\n+\r\n+    private static final String CODE_EXT_NAME_NULL_CHECK = \"if(extName == null) \"\r\n+                    + \"throw new IllegalStateException(\\\"Failed to get extension (%s) name from url (\\\" + url.toString() + \\\") use keys(%s)\\\");\\n\";\r\n+\r\n+    private static final String CODE_INVOCATION_ARGUMENT_NULL_CHECK = \"if (arg%d == null) throw new IllegalArgumentException(\\\"invocation == null\\\"); \"\r\n+                    + \"String methodName = arg%d.getMethodName();\\n\";\r\n+\r\n+\r\n+    private static final String CODE_EXTENSION_ASSIGNMENT = \"%s extension = (%<s)%s.getExtensionLoader(%s.class).getExtension(extName);\\n\";\r\n+\r\n+    private static final String CODE_EXTENSION_METHOD_INVOKE_ARGUMENT = \"arg%d\";\r\n+\r\n+    private final Class<?> type;\r\n+\r\n+    private String defaultExtName;\r\n+\r\n+    public AdaptiveClassCodeGenerator(Class<?> type, String defaultExtName) {\r\n+        this.type = type;\r\n+        this.defaultExtName = defaultExtName;\r\n+    }\r\n+\r\n+    /**\r\n+     * test if given type has at least one method annotated with <code>Adaptive</code>\r\n+     */\r\n+    private boolean hasAdaptiveMethod() {\r\n+        return Arrays.stream(type.getMethods()).anyMatch(m -> m.isAnnotationPresent(Adaptive.class));\r\n+    }\r\n+\r\n+    /**\r\n+     * generate and return class code\r\n+     */\r\n+    public String generate() {\r\n+        // no need to generate adaptive class since there's no adaptive method found.\r\n+        if (!hasAdaptiveMethod()) {\r\n+            throw new IllegalStateException(\"No adaptive method exist on extension \" + type.getName() + \", refuse to create the adaptive class!\");\r\n+        }\r\n+\r\n+        StringBuilder code = new StringBuilder();\r\n+        code.append(generatePackageInfo());\r\n+        code.append(generateImports());\r\n+        code.append(generateClassDeclaration());\r\n+\r\n+        Method[] methods = type.getMethods();\r\n+        for (Method method : methods) {\r\n+            code.append(generateMethod(method));\r\n+        }\r\n+        code.append(\"}\");\r\n+\r\n+        if (logger.isDebugEnabled()) {\r\n+            logger.debug(code.toString());\r\n+        }\r\n+        return code.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * generate package info\r\n+     */\r\n+    private String generatePackageInfo() {\r\n+        return String.format(CODE_PACKAGE, type.getPackage().getName());\r\n+    }\r\n+\r\n+    /**\r\n+     * generate imports\r\n+     */\r\n+    private String generateImports() {\r\n+        return String.format(CODE_IMPORTS, ExtensionLoader.class.getName());\r\n+    }\r\n+\r\n+    /**\r\n+     * generate class declaration\r\n+     */\r\n+    private String generateClassDeclaration() {\r\n+        return String.format(CODE_CLASS_DECLARATION, type.getSimpleName(), type.getCanonicalName());\r\n+    }\r\n+\r\n+    /**\r\n+     * generate method not annotated with Adaptive with throwing unsupported exception\r\n+     */\r\n+    private String generateUnsupported(Method method) {\r\n+        return String.format(CODE_UNSUPPORTED, method, type.getName());\r\n+    }\r\n+\r\n+    /**\r\n+     * get index of parameter with type URL\r\n+     */\r\n+    private int getUrlTypeIndex(Method method) {\r\n+        int urlTypeIndex = -1;\r\n+        Class<?>[] pts = method.getParameterTypes();\r\n+        for (int i = 0; i < pts.length; ++i) {\r\n+            if (pts[i].equals(URL.class)) {\r\n+                urlTypeIndex = i;\r\n+                break;\r\n+            }\r\n+        }\r\n+        return urlTypeIndex;\r\n+    }\r\n+\r\n+    /**\r\n+     * generate method declaration\r\n+     */\r\n+    private String generateMethod(Method method) {\r\n+        String methodReturnType = method.getReturnType().getCanonicalName();\r\n+        String methodName = method.getName();\r\n+        String methodContent = generateMethodContent(method);\r\n+        String methodArgs = generateMethodArguments(method);\r\n+        String methodThrows = generateMethodThrows(method);\r\n+        return String.format(CODE_METHOD_DECLARATION, methodReturnType, methodName, methodArgs, methodThrows, methodContent);\r\n+    }\r\n+\r\n+    /**\r\n+     * generate method arguments\r\n+     */\r\n+    private String generateMethodArguments(Method method) {\r\n+        Class<?>[] pts = method.getParameterTypes();\r\n+        return IntStream.range(0, pts.length)\r\n+                        .mapToObj(i -> String.format(CODE_METHOD_ARGUMENT, pts[i].getCanonicalName(), i))\r\n+                        .collect(Collectors.joining(\", \"));\r\n+    }\r\n+\r\n+    /**\r\n+     * generate method throws\r\n+     */\r\n+    private String generateMethodThrows(Method method) {\r\n+        Class<?>[] ets = method.getExceptionTypes();\r\n+        if (ets.length > 0) {\r\n+            String list = Arrays.stream(ets).map(Class::getCanonicalName).collect(Collectors.joining(\", \"));\r\n+            return String.format(CODE_METHOD_THROWS, list);\r\n+        } else {\r\n+            return \"\";\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * generate method URL argument null check\r\n+     */\r\n+    private String generateUrlNullCheck(int index) {\r\n+        return String.format(CODE_URL_NULL_CHECK, index, URL.class.getName(), index);\r\n+    }\r\n+\r\n+    /**\r\n+     * generate method content\r\n+     */\r\n+    private String generateMethodContent(Method method) {\r\n+        Adaptive adaptiveAnnotation = method.getAnnotation(Adaptive.class);\r\n+        StringBuilder code = new StringBuilder(512);\r\n+        if (adaptiveAnnotation == null) {\r\n+            return generateUnsupported(method);\r\n+        } else {\r\n+            int urlTypeIndex = getUrlTypeIndex(method);\r\n+\r\n+            // found parameter in URL type\r\n+            if (urlTypeIndex != -1) {\r\n+                // Null Point check\r\n+                code.append(generateUrlNullCheck(urlTypeIndex));\r\n+            } else {\r\n+                // did not find parameter in URL type\r\n+                code.append(generateUrlAssignmentIndirectly(method));\r\n+            }\r\n+\r\n+            String[] value = getMethodAdaptiveValue(adaptiveAnnotation);\r\n+\r\n+            boolean hasInvocation = hasInvocationArgument(method);\r\n+\r\n+            code.append(generateInvocationArgumentNullCheck(method));\r\n+\r\n+            code.append(generateExtNameAssignment(value, hasInvocation));\r\n+            // check extName == null?\r\n+            code.append(generateExtNameNullCheck(value));\r\n+\r\n+            code.append(generateExtensionAssignment());\r\n+\r\n+            // return statement\r\n+            code.append(generateReturnAndInvocation(method));\r\n+        }\r\n+\r\n+        return code.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * generate code for variable extName null check\r\n+     */\r\n+    private String generateExtNameNullCheck(String[] value) {\r\n+        return String.format(CODE_EXT_NAME_NULL_CHECK, type.getName(), Arrays.toString(value));\r\n+    }\r\n+\r\n+    /**\r\n+     * generate extName assignment code\r\n+     */\r\n+    private String generateExtNameAssignment(String[] value, boolean hasInvocation) {\r\n+        // TODO: refactor it\r\n+        String getNameCode = null;\r\n+        for (int i = value.length - 1; i >= 0; --i) {\r\n+            if (i == value.length - 1) {\r\n+                if (null != defaultExtName) {\r\n+                    if (!\"protocol\".equals(value[i])) {\r\n+                        if (hasInvocation) {\r\n+                            getNameCode = String.format(\"url.getMethodParameter(methodName, \\\"%s\\\", \\\"%s\\\")\", value[i], defaultExtName);\r\n+                        } else {\r\n+                            getNameCode = String.format(\"url.getParameter(\\\"%s\\\", \\\"%s\\\")\", value[i], defaultExtName);\r\n+                        }\r\n+                    } else {\r\n+                        getNameCode = String.format(\"( url.getProtocol() == null ? \\\"%s\\\" : url.getProtocol() )\", defaultExtName);\r\n+                    }\r\n+                } else {\r\n+                    if (!\"protocol\".equals(value[i])) {\r\n+                        if (hasInvocation) {\r\n+                            getNameCode = String.format(\"url.getMethodParameter(methodName, \\\"%s\\\", \\\"%s\\\")\", value[i], defaultExtName);\r\n+                        } else {\r\n+                            getNameCode = String.format(\"url.getParameter(\\\"%s\\\")\", value[i]);\r\n+                        }\r\n+                    } else {\r\n+                        getNameCode = \"url.getProtocol()\";\r\n+                    }\r\n+                }\r\n+            } else {\r\n+                if (!\"protocol\".equals(value[i])) {\r\n+                    if (hasInvocation) {\r\n+                        getNameCode = String.format(\"url.getMethodParameter(methodName, \\\"%s\\\", \\\"%s\\\")\", value[i], defaultExtName);\r\n+                    } else {\r\n+                        getNameCode = String.format(\"url.getParameter(\\\"%s\\\", %s)\", value[i], getNameCode);\r\n+                    }\r\n+                } else {\r\n+                    getNameCode = String.format(\"url.getProtocol() == null ? (%s) : url.getProtocol()\", getNameCode);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        return String.format(CODE_EXT_NAME_ASSIGNMENT, getNameCode);\r\n+    }\r\n+\r\n+    /**\r\n+     * @return\r\n+     */\r\n+    private String generateExtensionAssignment() {\r\n+        return String.format(CODE_EXTENSION_ASSIGNMENT, type.getName(), ExtensionLoader.class.getSimpleName(), type.getName());\r\n+    }\r\n+\r\n+    /**\r\n+     * generate method invocation statement and return it if necessary\r\n+     */\r\n+    private String generateReturnAndInvocation(Method method) {\r\n+        String returnStatement = method.getReturnType().equals(void.class) ? \"\" : \"return \";\r\n+\r\n+        String args = IntStream.range(0, method.getParameters().length)\r\n+                .mapToObj(i -> String.format(CODE_EXTENSION_METHOD_INVOKE_ARGUMENT, i))\r\n+                .collect(Collectors.joining(\", \"));\r\n+\r\n+        return returnStatement + String.format(\"extension.%s(%s);\\n\", method.getName(), args);\r\n+    }\r\n+\r\n+    /**\r\n+     * test if method has argument of type <code>Invocation</code>\r\n+     */\r\n+    private boolean hasInvocationArgument(Method method) {\r\n+        Class<?>[] pts = method.getParameterTypes();\r\n+        return Arrays.stream(pts).anyMatch(p -> CLASSNAME_INVOCATION.equals(p.getName()));\r\n+    }\r\n+\r\n+    /**\r\n+     * generate code to test argument of type <code>Invocation</code> is null\r\n+     */\r\n+    private String generateInvocationArgumentNullCheck(Method method) {\r\n+        Class<?>[] pts = method.getParameterTypes();\r\n+        return IntStream.range(0, pts.length).filter(i -> CLASSNAME_INVOCATION.equals(pts[i].getName()))\r\n+                        .mapToObj(i -> String.format(CODE_INVOCATION_ARGUMENT_NULL_CHECK, i, i))\r\n+                        .findFirst().orElse(\"\");\r\n+    }\r\n+\r\n+    /**\r\n+     * get value of adaptive annotation or if empty return splitted simple name\r\n+     */\r\n+    private String[] getMethodAdaptiveValue(Adaptive adaptiveAnnotation) {\r\n+        String[] value = adaptiveAnnotation.value();\r\n+        // value is not set, use the value generated from class name as the key\r\n+        if (value.length == 0) {\r\n+            String splitName = StringUtils.camelToSplitName(type.getSimpleName(), \".\");\r\n+            value = new String[]{splitName};\r\n+        }\r\n+        return value;\r\n+    }\r\n+\r\n+    /**\r\n+     * get parameter with type <code>URL</code> from method parameter:\r\n+     * <p>\r\n+     * test if parameter has method which returns type <code>URL</code>\r\n+     * <p>\r\n+     * if not found, throws IllegalStateException\r\n+     */\r\n+    private String generateUrlAssignmentIndirectly(Method method) {\r\n+        Class<?>[] pts = method.getParameterTypes();\r\n+\r\n+        Map<String, Integer> getterReturnUrl = new HashMap<>();\r\n+        // find URL getter method\r\n+        for (int i = 0; i < pts.length; ++i) {\r\n+            for (Method m : pts[i].getMethods()) {\r\n+                String name = m.getName();\r\n+                if ((name.startsWith(\"get\") || name.length() > 3)\r\n+                        && Modifier.isPublic(m.getModifiers())\r\n+                        && !Modifier.isStatic(m.getModifiers())\r\n+                        && m.getParameterTypes().length == 0\r\n+                        && m.getReturnType() == URL.class) {\r\n+                    getterReturnUrl.put(name, i);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        if (getterReturnUrl.size() <= 0) {\r\n+            // getter method not found, throw\r\n+            throw new IllegalStateException(\"Failed to create adaptive class for interface \" + type.getName()\r\n+                    + \": not found url parameter or url attribute in parameters of method \" + method.getName());\r\n+        }\r\n+\r\n+        Integer index = getterReturnUrl.get(\"getUrl\");\r\n+        if (index != null) {\r\n+            return generateGetUrlNullCheck(index, pts[index], \"getUrl\");\r\n+        } else {\r\n+            Map.Entry<String, Integer> entry = getterReturnUrl.entrySet().iterator().next();\r\n+            return generateGetUrlNullCheck(entry.getValue(), pts[entry.getValue()], entry.getKey());\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * 1, test if argi is null\r\n+     * 2, test if argi.getXX() returns null\r\n+     * 3, assign url with argi.getXX()\r\n+     */\r\n+    private String generateGetUrlNullCheck(int index, Class<?> type, String method) {\r\n+        // Null point check\r\n+        StringBuilder code = new StringBuilder();\r\n+        code.append(String.format(\"if (arg%d == null) throw new IllegalArgumentException(\\\"%s argument == null\\\");\\n\",\r\n+                index, type.getName()));\r\n+        code.append(String.format(\"if (arg%d.%s() == null) throw new IllegalArgumentException(\\\"%s argument %s() == null\\\");\\n\",\r\n+                index, method, type.getName(), method));\r\n+\r\n+        code.append(String.format(\"%s url = arg%d.%s();\\n\", URL.class.getName(), index, method));\r\n+        return code.toString();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/extension/DubboInternalLoadingStrategy.java", "source2": "org/apache/dubbo/common/extension/DubboInternalLoadingStrategy.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,35 +1,35 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.extension;\n-\n-/**\n- * Dubbo internal {@link LoadingStrategy}\n- *\n- * @since 2.7.7\n- */\n-public class DubboInternalLoadingStrategy implements LoadingStrategy {\n-\n-    @Override\n-    public String directory() {\n-        return \"META-INF/dubbo/internal/\";\n-    }\n-\n-    @Override\n-    public int getPriority() {\n-        return MAX_PRIORITY;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.extension;\r\n+\r\n+/**\r\n+ * Dubbo internal {@link LoadingStrategy}\r\n+ *\r\n+ * @since 2.7.7\r\n+ */\r\n+public class DubboInternalLoadingStrategy implements LoadingStrategy {\r\n+\r\n+    @Override\r\n+    public String directory() {\r\n+        return \"META-INF/dubbo/internal/\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getPriority() {\r\n+        return MAX_PRIORITY;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/extension/DubboLoadingStrategy.java", "source2": "org/apache/dubbo/common/extension/DubboLoadingStrategy.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,42 +1,42 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.extension;\n-\n-/**\n- * Dubbo {@link LoadingStrategy}\n- *\n- * @since 2.7.7\n- */\n-public class DubboLoadingStrategy implements LoadingStrategy {\n-\n-    @Override\n-    public String directory() {\n-        return \"META-INF/dubbo/\";\n-    }\n-\n-    @Override\n-    public boolean overridden() {\n-        return true;\n-    }\n-\n-    @Override\n-    public int getPriority() {\n-        return NORMAL_PRIORITY;\n-    }\n-\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.extension;\r\n+\r\n+/**\r\n+ * Dubbo {@link LoadingStrategy}\r\n+ *\r\n+ * @since 2.7.7\r\n+ */\r\n+public class DubboLoadingStrategy implements LoadingStrategy {\r\n+\r\n+    @Override\r\n+    public String directory() {\r\n+        return \"META-INF/dubbo/\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean overridden() {\r\n+        return true;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getPriority() {\r\n+        return NORMAL_PRIORITY;\r\n+    }\r\n+\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/extension/ExtensionLoader.java", "source2": "org/apache/dubbo/common/extension/ExtensionLoader.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,1047 +1,1047 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.extension;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.context.Lifecycle;\n-import org.apache.dubbo.common.extension.support.ActivateComparator;\n-import org.apache.dubbo.common.extension.support.WrapperComparator;\n-import org.apache.dubbo.common.lang.Prioritized;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ArrayUtils;\n-import org.apache.dubbo.common.utils.ClassUtils;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.ConcurrentHashSet;\n-import org.apache.dubbo.common.utils.ConfigUtils;\n-import org.apache.dubbo.common.utils.Holder;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import java.io.BufferedReader;\n-import java.io.InputStreamReader;\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Modifier;\n-import java.nio.charset.StandardCharsets;\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.Collections;\n-import java.util.Enumeration;\n-import java.util.HashMap;\n-import java.util.LinkedHashSet;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.ServiceLoader;\n-import java.util.Set;\n-import java.util.TreeSet;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-import java.util.regex.Pattern;\n-\n-import static java.util.Arrays.asList;\n-import static java.util.Collections.sort;\n-import static java.util.ServiceLoader.load;\n-import static java.util.stream.StreamSupport.stream;\n-import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.REMOVE_VALUE_PREFIX;\n-\n-/**\n- * {@link org.apache.dubbo.rpc.model.ApplicationModel}, {@code DubboBootstrap} and this class are\n- * at present designed to be singleton or static (by itself totally static or uses some static fields).\n- * So the instances returned from them are of process or classloader scope. If you want to support\n- * multiple dubbo servers in a single process, you may need to refactor these three classes.\n- * <p>\n- * Load dubbo extensions\n- * <ul>\n- * <li>auto inject dependency extension </li>\n- * <li>auto wrap extension in wrapper </li>\n- * <li>default extension is an adaptive instance</li>\n- * </ul>\n- *\n- * @see <a href=\"http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html#Service%20Provider\">Service Provider in Java 5</a>\n- * @see org.apache.dubbo.common.extension.SPI\n- * @see org.apache.dubbo.common.extension.Adaptive\n- * @see org.apache.dubbo.common.extension.Activate\n- */\n-public class ExtensionLoader<T> {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(ExtensionLoader.class);\n-\n-    private static final Pattern NAME_SEPARATOR = Pattern.compile(\"\\\\s*[,]+\\\\s*\");\n-\n-    private static final ConcurrentMap<Class<?>, ExtensionLoader<?>> EXTENSION_LOADERS = new ConcurrentHashMap<>(64);\n-\n-    private static final ConcurrentMap<Class<?>, Object> EXTENSION_INSTANCES = new ConcurrentHashMap<>(64);\n-\n-    private final Class<?> type;\n-\n-    private final ExtensionFactory objectFactory;\n-\n-    private final ConcurrentMap<Class<?>, String> cachedNames = new ConcurrentHashMap<>();\n-\n-    private final Holder<Map<String, Class<?>>> cachedClasses = new Holder<>();\n-\n-    private final Map<String, Object> cachedActivates = new ConcurrentHashMap<>();\n-    private final ConcurrentMap<String, Holder<Object>> cachedInstances = new ConcurrentHashMap<>();\n-    private final Holder<Object> cachedAdaptiveInstance = new Holder<>();\n-    private volatile Class<?> cachedAdaptiveClass = null;\n-    private String cachedDefaultName;\n-    private volatile Throwable createAdaptiveInstanceError;\n-\n-    private Set<Class<?>> cachedWrapperClasses;\n-\n-    private Map<String, IllegalStateException> exceptions = new ConcurrentHashMap<>();\n-\n-    private static volatile LoadingStrategy[] strategies = loadLoadingStrategies();\n-\n-    public static void setLoadingStrategies(LoadingStrategy... strategies) {\n-        if (ArrayUtils.isNotEmpty(strategies)) {\n-            ExtensionLoader.strategies = strategies;\n-        }\n-    }\n-\n-    /**\n-     * Load all {@link Prioritized prioritized} {@link LoadingStrategy Loading Strategies} via {@link ServiceLoader}\n-     *\n-     * @return non-null\n-     * @since 2.7.7\n-     */\n-    private static LoadingStrategy[] loadLoadingStrategies() {\n-        return stream(load(LoadingStrategy.class).spliterator(), false)\n-                .sorted()\n-                .toArray(LoadingStrategy[]::new);\n-    }\n-\n-    /**\n-     * Get all {@link LoadingStrategy Loading Strategies}\n-     *\n-     * @return non-null\n-     * @see LoadingStrategy\n-     * @see Prioritized\n-     * @since 2.7.7\n-     */\n-    public static List<LoadingStrategy> getLoadingStrategies() {\n-        return asList(strategies);\n-    }\n-\n-    private ExtensionLoader(Class<?> type) {\n-        this.type = type;\n-        objectFactory = (type == ExtensionFactory.class ? null : ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getAdaptiveExtension());\n-    }\n-\n-    private static <T> boolean withExtensionAnnotation(Class<T> type) {\n-        return type.isAnnotationPresent(SPI.class);\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    public static <T> ExtensionLoader<T> getExtensionLoader(Class<T> type) {\n-        if (type == null) {\n-            throw new IllegalArgumentException(\"Extension type == null\");\n-        }\n-        if (!type.isInterface()) {\n-            throw new IllegalArgumentException(\"Extension type (\" + type + \") is not an interface!\");\n-        }\n-        if (!withExtensionAnnotation(type)) {\n-            throw new IllegalArgumentException(\"Extension type (\" + type +\n-                    \") is not an extension, because it is NOT annotated with @\" + SPI.class.getSimpleName() + \"!\");\n-        }\n-\n-        ExtensionLoader<T> loader = (ExtensionLoader<T>) EXTENSION_LOADERS.get(type);\n-        if (loader == null) {\n-            EXTENSION_LOADERS.putIfAbsent(type, new ExtensionLoader<T>(type));\n-            loader = (ExtensionLoader<T>) EXTENSION_LOADERS.get(type);\n-        }\n-        return loader;\n-    }\n-\n-    // For testing purposes only\n-    public static void resetExtensionLoader(Class type) {\n-        ExtensionLoader loader = EXTENSION_LOADERS.get(type);\n-        if (loader != null) {\n-            // Remove all instances associated with this loader as well\n-            Map<String, Class<?>> classes = loader.getExtensionClasses();\n-            for (Map.Entry<String, Class<?>> entry : classes.entrySet()) {\n-                EXTENSION_INSTANCES.remove(entry.getValue());\n-            }\n-            classes.clear();\n-            EXTENSION_LOADERS.remove(type);\n-        }\n-    }\n-\n-    public static void destroyAll() {\n-        EXTENSION_INSTANCES.forEach((_type, instance) -> {\n-            if (instance instanceof Lifecycle) {\n-                Lifecycle lifecycle = (Lifecycle) instance;\n-                try {\n-                    lifecycle.destroy();\n-                } catch (Exception e) {\n-                    logger.error(\"Error destroying extension \" + lifecycle, e);\n-                }\n-            }\n-        });\n-    }\n-\n-    private static ClassLoader findClassLoader() {\n-        return ClassUtils.getClassLoader(ExtensionLoader.class);\n-    }\n-\n-    public String getExtensionName(T extensionInstance) {\n-        return getExtensionName(extensionInstance.getClass());\n-    }\n-\n-    public String getExtensionName(Class<?> extensionClass) {\n-        getExtensionClasses();// load class\n-        return cachedNames.get(extensionClass);\n-    }\n-\n-    /**\n-     * This is equivalent to {@code getActivateExtension(url, key, null)}\n-     *\n-     * @param url url\n-     * @param key url parameter key which used to get extension point names\n-     * @return extension list which are activated.\n-     * @see #getActivateExtension(org.apache.dubbo.common.URL, String, String)\n-     */\n-    public List<T> getActivateExtension(URL url, String key) {\n-        return getActivateExtension(url, key, null);\n-    }\n-\n-    /**\n-     * This is equivalent to {@code getActivateExtension(url, values, null)}\n-     *\n-     * @param url    url\n-     * @param values extension point names\n-     * @return extension list which are activated\n-     * @see #getActivateExtension(org.apache.dubbo.common.URL, String[], String)\n-     */\n-    public List<T> getActivateExtension(URL url, String[] values) {\n-        return getActivateExtension(url, values, null);\n-    }\n-\n-    /**\n-     * This is equivalent to {@code getActivateExtension(url, url.getParameter(key).split(\",\"), null)}\n-     *\n-     * @param url   url\n-     * @param key   url parameter key which used to get extension point names\n-     * @param group group\n-     * @return extension list which are activated.\n-     * @see #getActivateExtension(org.apache.dubbo.common.URL, String[], String)\n-     */\n-    public List<T> getActivateExtension(URL url, String key, String group) {\n-        String value = url.getParameter(key);\n-        return getActivateExtension(url, StringUtils.isEmpty(value) ? null : COMMA_SPLIT_PATTERN.split(value), group);\n-    }\n-\n-    /**\n-     * Get activate extensions.\n-     *\n-     * @param url    url\n-     * @param values extension point names\n-     * @param group  group\n-     * @return extension list which are activated\n-     * @see org.apache.dubbo.common.extension.Activate\n-     */\n-    public List<T> getActivateExtension(URL url, String[] values, String group) {\n-        List<T> activateExtensions = new ArrayList<>();\n-        List<String> names = values == null ? new ArrayList<>(0) : asList(values);\n-        if (!names.contains(REMOVE_VALUE_PREFIX + DEFAULT_KEY)) {\n-            getExtensionClasses();\n-            for (Map.Entry<String, Object> entry : cachedActivates.entrySet()) {\n-                String name = entry.getKey();\n-                Object activate = entry.getValue();\n-\n-                String[] activateGroup, activateValue;\n-\n-                if (activate instanceof Activate) {\n-                    activateGroup = ((Activate) activate).group();\n-                    activateValue = ((Activate) activate).value();\n-                } else if (activate instanceof com.alibaba.dubbo.common.extension.Activate) {\n-                    activateGroup = ((com.alibaba.dubbo.common.extension.Activate) activate).group();\n-                    activateValue = ((com.alibaba.dubbo.common.extension.Activate) activate).value();\n-                } else {\n-                    continue;\n-                }\n-                if (isMatchGroup(group, activateGroup)\n-                        && !names.contains(name)\n-                        && !names.contains(REMOVE_VALUE_PREFIX + name)\n-                        && isActive(activateValue, url)) {\n-                    activateExtensions.add(getExtension(name));\n-                }\n-            }\n-            activateExtensions.sort(ActivateComparator.COMPARATOR);\n-        }\n-        List<T> loadedExtensions = new ArrayList<>();\n-        for (int i = 0; i < names.size(); i++) {\n-            String name = names.get(i);\n-            if (!name.startsWith(REMOVE_VALUE_PREFIX)\n-                    && !names.contains(REMOVE_VALUE_PREFIX + name)) {\n-                if (DEFAULT_KEY.equals(name)) {\n-                    if (!loadedExtensions.isEmpty()) {\n-                        activateExtensions.addAll(0, loadedExtensions);\n-                        loadedExtensions.clear();\n-                    }\n-                } else {\n-                    loadedExtensions.add(getExtension(name));\n-                }\n-            }\n-        }\n-        if (!loadedExtensions.isEmpty()) {\n-            activateExtensions.addAll(loadedExtensions);\n-        }\n-        return activateExtensions;\n-    }\n-\n-    private boolean isMatchGroup(String group, String[] groups) {\n-        if (StringUtils.isEmpty(group)) {\n-            return true;\n-        }\n-        if (groups != null && groups.length > 0) {\n-            for (String g : groups) {\n-                if (group.equals(g)) {\n-                    return true;\n-                }\n-            }\n-        }\n-        return false;\n-    }\n-\n-    private boolean isActive(String[] keys, URL url) {\n-        if (keys.length == 0) {\n-            return true;\n-        }\n-        for (String key : keys) {\n-            // @Active(value=\"key1:value1, key2:value2\")\n-            String keyValue = null;\n-            if (key.contains(\":\")) {\n-                String[] arr = key.split(\":\");\n-                key = arr[0];\n-                keyValue = arr[1];\n-            }\n-\n-            for (Map.Entry<String, String> entry : url.getParameters().entrySet()) {\n-                String k = entry.getKey();\n-                String v = entry.getValue();\n-                if ((k.equals(key) || k.endsWith(\".\" + key))\n-                        && ((keyValue != null && keyValue.equals(v)) || (keyValue == null && ConfigUtils.isNotEmpty(v)))) {\n-                    return true;\n-                }\n-            }\n-        }\n-        return false;\n-    }\n-\n-    /**\n-     * Get extension's instance. Return <code>null</code> if extension is not found or is not initialized. Pls. note\n-     * that this method will not trigger extension load.\n-     * <p>\n-     * In order to trigger extension load, call {@link #getExtension(String)} instead.\n-     *\n-     * @see #getExtension(String)\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    public T getLoadedExtension(String name) {\n-        if (StringUtils.isEmpty(name)) {\n-            throw new IllegalArgumentException(\"Extension name == null\");\n-        }\n-        Holder<Object> holder = getOrCreateHolder(name);\n-        return (T) holder.get();\n-    }\n-\n-    private Holder<Object> getOrCreateHolder(String name) {\n-        Holder<Object> holder = cachedInstances.get(name);\n-        if (holder == null) {\n-            cachedInstances.putIfAbsent(name, new Holder<>());\n-            holder = cachedInstances.get(name);\n-        }\n-        return holder;\n-    }\n-\n-    /**\n-     * Return the list of extensions which are already loaded.\n-     * <p>\n-     * Usually {@link #getSupportedExtensions()} should be called in order to get all extensions.\n-     *\n-     * @see #getSupportedExtensions()\n-     */\n-    public Set<String> getLoadedExtensions() {\n-        return Collections.unmodifiableSet(new TreeSet<>(cachedInstances.keySet()));\n-    }\n-\n-    public List<T> getLoadedExtensionInstances() {\n-        List<T> instances = new ArrayList<>();\n-        cachedInstances.values().forEach(holder -> instances.add((T) holder.get()));\n-        return instances;\n-    }\n-\n-    public Object getLoadedAdaptiveExtensionInstances() {\n-        return cachedAdaptiveInstance.get();\n-    }\n-\n-//    public T getPrioritizedExtensionInstance() {\n-//        Set<String> supported = getSupportedExtensions();\n-//\n-//        Set<T> instances = new HashSet<>();\n-//        Set<T> prioritized = new HashSet<>();\n-//        for (String s : supported) {\n-//\n-//        }\n-//\n-//    }\n-\n-    /**\n-     * Find the extension with the given name. If the specified name is not found, then {@link IllegalStateException}\n-     * will be thrown.\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    public T getExtension(String name) {\n-        return getExtension(name, true);\n-    }\n-\n-    public T getExtension(String name, boolean wrap) {\n-        if (StringUtils.isEmpty(name)) {\n-            throw new IllegalArgumentException(\"Extension name == null\");\n-        }\n-        if (\"true\".equals(name)) {\n-            return getDefaultExtension();\n-        }\n-        final Holder<Object> holder = getOrCreateHolder(name);\n-        Object instance = holder.get();\n-        if (instance == null) {\n-            synchronized (holder) {\n-                instance = holder.get();\n-                if (instance == null) {\n-                    instance = createExtension(name, wrap);\n-                    holder.set(instance);\n-                }\n-            }\n-        }\n-        return (T) instance;\n-    }\n-\n-    /**\n-     * Get the extension by specified name if found, or {@link #getDefaultExtension() returns the default one}\n-     *\n-     * @param name the name of extension\n-     * @return non-null\n-     */\n-    public T getOrDefaultExtension(String name) {\n-        return containsExtension(name) ? getExtension(name) : getDefaultExtension();\n-    }\n-\n-    /**\n-     * Return default extension, return <code>null</code> if it's not configured.\n-     */\n-    public T getDefaultExtension() {\n-        getExtensionClasses();\n-        if (StringUtils.isBlank(cachedDefaultName) || \"true\".equals(cachedDefaultName)) {\n-            return null;\n-        }\n-        return getExtension(cachedDefaultName);\n-    }\n-\n-    public boolean hasExtension(String name) {\n-        if (StringUtils.isEmpty(name)) {\n-            throw new IllegalArgumentException(\"Extension name == null\");\n-        }\n-        Class<?> c = this.getExtensionClass(name);\n-        return c != null;\n-    }\n-\n-    public Set<String> getSupportedExtensions() {\n-        Map<String, Class<?>> clazzes = getExtensionClasses();\n-        return Collections.unmodifiableSet(new TreeSet<>(clazzes.keySet()));\n-    }\n-\n-    public Set<T> getSupportedExtensionInstances() {\n-        List<T> instances = new LinkedList<>();\n-        Set<String> supportedExtensions = getSupportedExtensions();\n-        if (CollectionUtils.isNotEmpty(supportedExtensions)) {\n-            for (String name : supportedExtensions) {\n-                instances.add(getExtension(name));\n-            }\n-        }\n-        // sort the Prioritized instances\n-        sort(instances, Prioritized.COMPARATOR);\n-        return new LinkedHashSet<>(instances);\n-    }\n-\n-    /**\n-     * Return default extension name, return <code>null</code> if not configured.\n-     */\n-    public String getDefaultExtensionName() {\n-        getExtensionClasses();\n-        return cachedDefaultName;\n-    }\n-\n-    /**\n-     * Register new extension via API\n-     *\n-     * @param name  extension name\n-     * @param clazz extension class\n-     * @throws IllegalStateException when extension with the same name has already been registered.\n-     */\n-    public void addExtension(String name, Class<?> clazz) {\n-        getExtensionClasses(); // load classes\n-\n-        if (!type.isAssignableFrom(clazz)) {\n-            throw new IllegalStateException(\"Input type \" +\n-                    clazz + \" doesn't implement the Extension \" + type);\n-        }\n-        if (clazz.isInterface()) {\n-            throw new IllegalStateException(\"Input type \" +\n-                    clazz + \" can't be interface!\");\n-        }\n-\n-        if (!clazz.isAnnotationPresent(Adaptive.class)) {\n-            if (StringUtils.isBlank(name)) {\n-                throw new IllegalStateException(\"Extension name is blank (Extension \" + type + \")!\");\n-            }\n-            if (cachedClasses.get().containsKey(name)) {\n-                throw new IllegalStateException(\"Extension name \" +\n-                        name + \" already exists (Extension \" + type + \")!\");\n-            }\n-\n-            cachedNames.put(clazz, name);\n-            cachedClasses.get().put(name, clazz);\n-        } else {\n-            if (cachedAdaptiveClass != null) {\n-                throw new IllegalStateException(\"Adaptive Extension already exists (Extension \" + type + \")!\");\n-            }\n-\n-            cachedAdaptiveClass = clazz;\n-        }\n-    }\n-\n-    /**\n-     * Replace the existing extension via API\n-     *\n-     * @param name  extension name\n-     * @param clazz extension class\n-     * @throws IllegalStateException when extension to be placed doesn't exist\n-     * @deprecated not recommended any longer, and use only when test\n-     */\n-    @Deprecated\n-    public void replaceExtension(String name, Class<?> clazz) {\n-        getExtensionClasses(); // load classes\n-\n-        if (!type.isAssignableFrom(clazz)) {\n-            throw new IllegalStateException(\"Input type \" +\n-                    clazz + \" doesn't implement Extension \" + type);\n-        }\n-        if (clazz.isInterface()) {\n-            throw new IllegalStateException(\"Input type \" +\n-                    clazz + \" can't be interface!\");\n-        }\n-\n-        if (!clazz.isAnnotationPresent(Adaptive.class)) {\n-            if (StringUtils.isBlank(name)) {\n-                throw new IllegalStateException(\"Extension name is blank (Extension \" + type + \")!\");\n-            }\n-            if (!cachedClasses.get().containsKey(name)) {\n-                throw new IllegalStateException(\"Extension name \" +\n-                        name + \" doesn't exist (Extension \" + type + \")!\");\n-            }\n-\n-            cachedNames.put(clazz, name);\n-            cachedClasses.get().put(name, clazz);\n-            cachedInstances.remove(name);\n-        } else {\n-            if (cachedAdaptiveClass == null) {\n-                throw new IllegalStateException(\"Adaptive Extension doesn't exist (Extension \" + type + \")!\");\n-            }\n-\n-            cachedAdaptiveClass = clazz;\n-            cachedAdaptiveInstance.set(null);\n-        }\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    public T getAdaptiveExtension() {\n-        Object instance = cachedAdaptiveInstance.get();\n-        if (instance == null) {\n-            if (createAdaptiveInstanceError != null) {\n-                throw new IllegalStateException(\"Failed to create adaptive instance: \" +\n-                        createAdaptiveInstanceError.toString(),\n-                        createAdaptiveInstanceError);\n-            }\n-\n-            synchronized (cachedAdaptiveInstance) {\n-                instance = cachedAdaptiveInstance.get();\n-                if (instance == null) {\n-                    try {\n-                        instance = createAdaptiveExtension();\n-                        cachedAdaptiveInstance.set(instance);\n-                    } catch (Throwable t) {\n-                        createAdaptiveInstanceError = t;\n-                        throw new IllegalStateException(\"Failed to create adaptive instance: \" + t.toString(), t);\n-                    }\n-                }\n-            }\n-        }\n-\n-        return (T) instance;\n-    }\n-\n-    private IllegalStateException findException(String name) {\n-        StringBuilder buf = new StringBuilder(\"No such extension \" + type.getName() + \" by name \" + name);\n-\n-        int i = 1;\n-        for (Map.Entry<String, IllegalStateException> entry : exceptions.entrySet()) {\n-            if (entry.getKey().toLowerCase().startsWith(name.toLowerCase())) {\n-                if (i == 1) {\n-                    buf.append(\", possible causes: \");\n-                }\n-                buf.append(\"\\r\\n(\");\n-                buf.append(i++);\n-                buf.append(\") \");\n-                buf.append(entry.getKey());\n-                buf.append(\":\\r\\n\");\n-                buf.append(StringUtils.toString(entry.getValue()));\n-            }\n-        }\n-\n-        if (i == 1) {\n-            buf.append(\", no related exception was found, please check whether related SPI module is missing.\");\n-        }\n-        return new IllegalStateException(buf.toString());\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    private T createExtension(String name, boolean wrap) {\n-        Class<?> clazz = getExtensionClasses().get(name);\n-        if (clazz == null) {\n-            throw findException(name);\n-        }\n-        try {\n-            T instance = (T) EXTENSION_INSTANCES.get(clazz);\n-            if (instance == null) {\n-                EXTENSION_INSTANCES.putIfAbsent(clazz, clazz.getDeclaredConstructor().newInstance());\n-                instance = (T) EXTENSION_INSTANCES.get(clazz);\n-            }\n-            injectExtension(instance);\n-\n-\n-            if (wrap) {\n-\n-                List<Class<?>> wrapperClassesList = new ArrayList<>();\n-                if (cachedWrapperClasses != null) {\n-                    wrapperClassesList.addAll(cachedWrapperClasses);\n-                    wrapperClassesList.sort(WrapperComparator.COMPARATOR);\n-                    Collections.reverse(wrapperClassesList);\n-                }\n-\n-                if (CollectionUtils.isNotEmpty(wrapperClassesList)) {\n-                    for (Class<?> wrapperClass : wrapperClassesList) {\n-                        Wrapper wrapper = wrapperClass.getAnnotation(Wrapper.class);\n-                        if (wrapper == null\n-                                || (ArrayUtils.contains(wrapper.matches(), name) && !ArrayUtils.contains(wrapper.mismatches(), name))) {\n-                            instance = injectExtension((T) wrapperClass.getConstructor(type).newInstance(instance));\n-                        }\n-                    }\n-                }\n-            }\n-\n-            initExtension(instance);\n-            return instance;\n-        } catch (Throwable t) {\n-            throw new IllegalStateException(\"Extension instance (name: \" + name + \", class: \" +\n-                    type + \") couldn't be instantiated: \" + t.getMessage(), t);\n-        }\n-    }\n-\n-    private boolean containsExtension(String name) {\n-        return getExtensionClasses().containsKey(name);\n-    }\n-\n-    private T injectExtension(T instance) {\n-\n-        if (objectFactory == null) {\n-            return instance;\n-        }\n-\n-        try {\n-            for (Method method : instance.getClass().getMethods()) {\n-                if (!isSetter(method)) {\n-                    continue;\n-                }\n-                /**\n-                 * Check {@link DisableInject} to see if we need auto injection for this property\n-                 */\n-                if (method.getAnnotation(DisableInject.class) != null) {\n-                    continue;\n-                }\n-                Class<?> pt = method.getParameterTypes()[0];\n-                if (ReflectUtils.isPrimitives(pt)) {\n-                    continue;\n-                }\n-\n-                try {\n-                    String property = getSetterProperty(method);\n-                    Object object = objectFactory.getExtension(pt, property);\n-                    if (object != null) {\n-                        method.invoke(instance, object);\n-                    }\n-                } catch (Exception e) {\n-                    logger.error(\"Failed to inject via method \" + method.getName()\n-                            + \" of interface \" + type.getName() + \": \" + e.getMessage(), e);\n-                }\n-\n-            }\n-        } catch (Exception e) {\n-            logger.error(e.getMessage(), e);\n-        }\n-        return instance;\n-    }\n-\n-    private void initExtension(T instance) {\n-        if (instance instanceof Lifecycle) {\n-            Lifecycle lifecycle = (Lifecycle) instance;\n-            lifecycle.initialize();\n-        }\n-    }\n-\n-    /**\n-     * get properties name for setter, for instance: setVersion, return \"version\"\n-     * <p>\n-     * return \"\", if setter name with length less than 3\n-     */\n-    private String getSetterProperty(Method method) {\n-        return method.getName().length() > 3 ? method.getName().substring(3, 4).toLowerCase() + method.getName().substring(4) : \"\";\n-    }\n-\n-    /**\n-     * return true if and only if:\n-     * <p>\n-     * 1, public\n-     * <p>\n-     * 2, name starts with \"set\"\n-     * <p>\n-     * 3, only has one parameter\n-     */\n-    private boolean isSetter(Method method) {\n-        return method.getName().startsWith(\"set\")\n-                && method.getParameterTypes().length == 1\n-                && Modifier.isPublic(method.getModifiers());\n-    }\n-\n-    private Class<?> getExtensionClass(String name) {\n-        if (type == null) {\n-            throw new IllegalArgumentException(\"Extension type == null\");\n-        }\n-        if (name == null) {\n-            throw new IllegalArgumentException(\"Extension name == null\");\n-        }\n-        return getExtensionClasses().get(name);\n-    }\n-\n-    private Map<String, Class<?>> getExtensionClasses() {\n-        Map<String, Class<?>> classes = cachedClasses.get();\n-        if (classes == null) {\n-            synchronized (cachedClasses) {\n-                classes = cachedClasses.get();\n-                if (classes == null) {\n-                    classes = loadExtensionClasses();\n-                    cachedClasses.set(classes);\n-                }\n-            }\n-        }\n-        return classes;\n-    }\n-\n-    /**\n-     * synchronized in getExtensionClasses\n-     */\n-    private Map<String, Class<?>> loadExtensionClasses() {\n-        cacheDefaultExtensionName();\n-\n-        Map<String, Class<?>> extensionClasses = new HashMap<>();\n-\n-        for (LoadingStrategy strategy : strategies) {\n-            loadDirectory(extensionClasses, strategy.directory(), type.getName(), strategy.preferExtensionClassLoader(), strategy.overridden(), strategy.excludedPackages());\n-            loadDirectory(extensionClasses, strategy.directory(), type.getName().replace(\"org.apache\", \"com.alibaba\"), strategy.preferExtensionClassLoader(), strategy.overridden(), strategy.excludedPackages());\n-        }\n-\n-        return extensionClasses;\n-    }\n-\n-    /**\n-     * extract and cache default extension name if exists\n-     */\n-    private void cacheDefaultExtensionName() {\n-        final SPI defaultAnnotation = type.getAnnotation(SPI.class);\n-        if (defaultAnnotation == null) {\n-            return;\n-        }\n-\n-        String value = defaultAnnotation.value();\n-        if ((value = value.trim()).length() > 0) {\n-            String[] names = NAME_SEPARATOR.split(value);\n-            if (names.length > 1) {\n-                throw new IllegalStateException(\"More than 1 default extension name on extension \" + type.getName()\n-                        + \": \" + Arrays.toString(names));\n-            }\n-            if (names.length == 1) {\n-                cachedDefaultName = names[0];\n-            }\n-        }\n-    }\n-\n-    private void loadDirectory(Map<String, Class<?>> extensionClasses, String dir, String type) {\n-        loadDirectory(extensionClasses, dir, type, false, false);\n-    }\n-\n-    private void loadDirectory(Map<String, Class<?>> extensionClasses, String dir, String type,\n-                               boolean extensionLoaderClassLoaderFirst, boolean overridden, String... excludedPackages) {\n-        String fileName = dir + type;\n-        try {\n-            Enumeration<java.net.URL> urls = null;\n-            ClassLoader classLoader = findClassLoader();\n-\n-            // try to load from ExtensionLoader's ClassLoader first\n-            if (extensionLoaderClassLoaderFirst) {\n-                ClassLoader extensionLoaderClassLoader = ExtensionLoader.class.getClassLoader();\n-                if (ClassLoader.getSystemClassLoader() != extensionLoaderClassLoader) {\n-                    urls = extensionLoaderClassLoader.getResources(fileName);\n-                }\n-            }\n-\n-            if (urls == null || !urls.hasMoreElements()) {\n-                if (classLoader != null) {\n-                    urls = classLoader.getResources(fileName);\n-                } else {\n-                    urls = ClassLoader.getSystemResources(fileName);\n-                }\n-            }\n-\n-            if (urls != null) {\n-                while (urls.hasMoreElements()) {\n-                    java.net.URL resourceURL = urls.nextElement();\n-                    loadResource(extensionClasses, classLoader, resourceURL, overridden, excludedPackages);\n-                }\n-            }\n-        } catch (Throwable t) {\n-            logger.error(\"Exception occurred when loading extension class (interface: \" +\n-                    type + \", description file: \" + fileName + \").\", t);\n-        }\n-    }\n-\n-    private void loadResource(Map<String, Class<?>> extensionClasses, ClassLoader classLoader,\n-                              java.net.URL resourceURL, boolean overridden, String... excludedPackages) {\n-        try {\n-            try (BufferedReader reader = new BufferedReader(new InputStreamReader(resourceURL.openStream(), StandardCharsets.UTF_8))) {\n-                String line;\n-                String clazz = null;\n-                while ((line = reader.readLine()) != null) {\n-                    final int ci = line.indexOf('#');\n-                    if (ci >= 0) {\n-                        line = line.substring(0, ci);\n-                    }\n-                    line = line.trim();\n-                    if (line.length() > 0) {\n-                        try {\n-                            String name = null;\n-                            int i = line.indexOf('=');\n-                            if (i > 0) {\n-                                name = line.substring(0, i).trim();\n-                                clazz = line.substring(i + 1).trim();\n-                            } else {\n-                                clazz = line;\n-                            }\n-                            if (StringUtils.isNotEmpty(clazz) && !isExcluded(clazz, excludedPackages)) {\n-                                loadClass(extensionClasses, resourceURL, Class.forName(clazz, true, classLoader), name, overridden);\n-                            }\n-                        } catch (Throwable t) {\n-                            IllegalStateException e = new IllegalStateException(\"Failed to load extension class (interface: \" + type + \", class line: \" + line + \") in \" + resourceURL + \", cause: \" + t.getMessage(), t);\n-                            exceptions.put(line, e);\n-                        }\n-                    }\n-                }\n-            }\n-        } catch (Throwable t) {\n-            logger.error(\"Exception occurred when loading extension class (interface: \" +\n-                    type + \", class file: \" + resourceURL + \") in \" + resourceURL, t);\n-        }\n-    }\n-\n-    private boolean isExcluded(String className, String... excludedPackages) {\n-        if (excludedPackages != null) {\n-            for (String excludePackage : excludedPackages) {\n-                if (className.startsWith(excludePackage + \".\")) {\n-                    return true;\n-                }\n-            }\n-        }\n-        return false;\n-    }\n-\n-    private void loadClass(Map<String, Class<?>> extensionClasses, java.net.URL resourceURL, Class<?> clazz, String name,\n-                           boolean overridden) throws NoSuchMethodException {\n-        if (!type.isAssignableFrom(clazz)) {\n-            throw new IllegalStateException(\"Error occurred when loading extension class (interface: \" +\n-                    type + \", class line: \" + clazz.getName() + \"), class \"\n-                    + clazz.getName() + \" is not subtype of interface.\");\n-        }\n-        if (clazz.isAnnotationPresent(Adaptive.class)) {\n-            cacheAdaptiveClass(clazz, overridden);\n-        } else if (isWrapperClass(clazz)) {\n-            cacheWrapperClass(clazz);\n-        } else {\n-            clazz.getConstructor();\n-            if (StringUtils.isEmpty(name)) {\n-                name = findAnnotationName(clazz);\n-                if (name.length() == 0) {\n-                    throw new IllegalStateException(\"No such extension name for the class \" + clazz.getName() + \" in the config \" + resourceURL);\n-                }\n-            }\n-\n-            String[] names = NAME_SEPARATOR.split(name);\n-            if (ArrayUtils.isNotEmpty(names)) {\n-                cacheActivateClass(clazz, names[0]);\n-                for (String n : names) {\n-                    cacheName(clazz, n);\n-                    saveInExtensionClass(extensionClasses, clazz, n, overridden);\n-                }\n-            }\n-        }\n-    }\n-\n-    /**\n-     * cache name\n-     */\n-    private void cacheName(Class<?> clazz, String name) {\n-        if (!cachedNames.containsKey(clazz)) {\n-            cachedNames.put(clazz, name);\n-        }\n-    }\n-\n-    /**\n-     * put clazz in extensionClasses\n-     */\n-    private void saveInExtensionClass(Map<String, Class<?>> extensionClasses, Class<?> clazz, String name, boolean overridden) {\n-        Class<?> c = extensionClasses.get(name);\n-        if (c == null || overridden) {\n-            extensionClasses.put(name, clazz);\n-        } else if (c != clazz) {\n-            String duplicateMsg = \"Duplicate extension \" + type.getName() + \" name \" + name + \" on \" + c.getName() + \" and \" + clazz.getName();\n-            logger.error(duplicateMsg);\n-            throw new IllegalStateException(duplicateMsg);\n-        }\n-    }\n-\n-    /**\n-     * cache Activate class which is annotated with <code>Activate</code>\n-     * <p>\n-     * for compatibility, also cache class with old alibaba Activate annotation\n-     */\n-    private void cacheActivateClass(Class<?> clazz, String name) {\n-        Activate activate = clazz.getAnnotation(Activate.class);\n-        if (activate != null) {\n-            cachedActivates.put(name, activate);\n-        } else {\n-            // support com.alibaba.dubbo.common.extension.Activate\n-            com.alibaba.dubbo.common.extension.Activate oldActivate = clazz.getAnnotation(com.alibaba.dubbo.common.extension.Activate.class);\n-            if (oldActivate != null) {\n-                cachedActivates.put(name, oldActivate);\n-            }\n-        }\n-    }\n-\n-    /**\n-     * cache Adaptive class which is annotated with <code>Adaptive</code>\n-     */\n-    private void cacheAdaptiveClass(Class<?> clazz, boolean overridden) {\n-        if (cachedAdaptiveClass == null || overridden) {\n-            cachedAdaptiveClass = clazz;\n-        } else if (!cachedAdaptiveClass.equals(clazz)) {\n-            throw new IllegalStateException(\"More than 1 adaptive class found: \"\n-                    + cachedAdaptiveClass.getName()\n-                    + \", \" + clazz.getName());\n-        }\n-    }\n-\n-    /**\n-     * cache wrapper class\n-     * <p>\n-     * like: ProtocolFilterWrapper, ProtocolListenerWrapper\n-     */\n-    private void cacheWrapperClass(Class<?> clazz) {\n-        if (cachedWrapperClasses == null) {\n-            cachedWrapperClasses = new ConcurrentHashSet<>();\n-        }\n-        cachedWrapperClasses.add(clazz);\n-    }\n-\n-    /**\n-     * test if clazz is a wrapper class\n-     * <p>\n-     * which has Constructor with given class type as its only argument\n-     */\n-    private boolean isWrapperClass(Class<?> clazz) {\n-        try {\n-            clazz.getConstructor(type);\n-            return true;\n-        } catch (NoSuchMethodException e) {\n-            return false;\n-        }\n-    }\n-\n-    @SuppressWarnings(\"deprecation\")\n-    private String findAnnotationName(Class<?> clazz) {\n-        org.apache.dubbo.common.Extension extension = clazz.getAnnotation(org.apache.dubbo.common.Extension.class);\n-        if (extension != null) {\n-            return extension.value();\n-        }\n-\n-        String name = clazz.getSimpleName();\n-        if (name.endsWith(type.getSimpleName())) {\n-            name = name.substring(0, name.length() - type.getSimpleName().length());\n-        }\n-        return name.toLowerCase();\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    private T createAdaptiveExtension() {\n-        try {\n-            return injectExtension((T) getAdaptiveExtensionClass().newInstance());\n-        } catch (Exception e) {\n-            throw new IllegalStateException(\"Can't create adaptive extension \" + type + \", cause: \" + e.getMessage(), e);\n-        }\n-    }\n-\n-    private Class<?> getAdaptiveExtensionClass() {\n-        getExtensionClasses();\n-        if (cachedAdaptiveClass != null) {\n-            return cachedAdaptiveClass;\n-        }\n-        return cachedAdaptiveClass = createAdaptiveExtensionClass();\n-    }\n-\n-    private Class<?> createAdaptiveExtensionClass() {\n-        String code = new AdaptiveClassCodeGenerator(type, cachedDefaultName).generate();\n-        ClassLoader classLoader = findClassLoader();\n-        org.apache.dubbo.common.compiler.Compiler compiler = ExtensionLoader.getExtensionLoader(org.apache.dubbo.common.compiler.Compiler.class).getAdaptiveExtension();\n-        return compiler.compile(code, classLoader);\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return this.getClass().getName() + \"[\" + type.getName() + \"]\";\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.extension;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.context.Lifecycle;\r\n+import org.apache.dubbo.common.extension.support.ActivateComparator;\r\n+import org.apache.dubbo.common.extension.support.WrapperComparator;\r\n+import org.apache.dubbo.common.lang.Prioritized;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ArrayUtils;\r\n+import org.apache.dubbo.common.utils.ClassUtils;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.ConcurrentHashSet;\r\n+import org.apache.dubbo.common.utils.ConfigUtils;\r\n+import org.apache.dubbo.common.utils.Holder;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import java.io.BufferedReader;\r\n+import java.io.InputStreamReader;\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Modifier;\r\n+import java.nio.charset.StandardCharsets;\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.Collections;\r\n+import java.util.Enumeration;\r\n+import java.util.HashMap;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.ServiceLoader;\r\n+import java.util.Set;\r\n+import java.util.TreeSet;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+import java.util.regex.Pattern;\r\n+\r\n+import static java.util.Arrays.asList;\r\n+import static java.util.Collections.sort;\r\n+import static java.util.ServiceLoader.load;\r\n+import static java.util.stream.StreamSupport.stream;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REMOVE_VALUE_PREFIX;\r\n+\r\n+/**\r\n+ * {@link org.apache.dubbo.rpc.model.ApplicationModel}, {@code DubboBootstrap} and this class are\r\n+ * at present designed to be singleton or static (by itself totally static or uses some static fields).\r\n+ * So the instances returned from them are of process or classloader scope. If you want to support\r\n+ * multiple dubbo servers in a single process, you may need to refactor these three classes.\r\n+ * <p>\r\n+ * Load dubbo extensions\r\n+ * <ul>\r\n+ * <li>auto inject dependency extension </li>\r\n+ * <li>auto wrap extension in wrapper </li>\r\n+ * <li>default extension is an adaptive instance</li>\r\n+ * </ul>\r\n+ *\r\n+ * @see <a href=\"http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html#Service%20Provider\">Service Provider in Java 5</a>\r\n+ * @see org.apache.dubbo.common.extension.SPI\r\n+ * @see org.apache.dubbo.common.extension.Adaptive\r\n+ * @see org.apache.dubbo.common.extension.Activate\r\n+ */\r\n+public class ExtensionLoader<T> {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(ExtensionLoader.class);\r\n+\r\n+    private static final Pattern NAME_SEPARATOR = Pattern.compile(\"\\\\s*[,]+\\\\s*\");\r\n+\r\n+    private static final ConcurrentMap<Class<?>, ExtensionLoader<?>> EXTENSION_LOADERS = new ConcurrentHashMap<>(64);\r\n+\r\n+    private static final ConcurrentMap<Class<?>, Object> EXTENSION_INSTANCES = new ConcurrentHashMap<>(64);\r\n+\r\n+    private final Class<?> type;\r\n+\r\n+    private final ExtensionFactory objectFactory;\r\n+\r\n+    private final ConcurrentMap<Class<?>, String> cachedNames = new ConcurrentHashMap<>();\r\n+\r\n+    private final Holder<Map<String, Class<?>>> cachedClasses = new Holder<>();\r\n+\r\n+    private final Map<String, Object> cachedActivates = new ConcurrentHashMap<>();\r\n+    private final ConcurrentMap<String, Holder<Object>> cachedInstances = new ConcurrentHashMap<>();\r\n+    private final Holder<Object> cachedAdaptiveInstance = new Holder<>();\r\n+    private volatile Class<?> cachedAdaptiveClass = null;\r\n+    private String cachedDefaultName;\r\n+    private volatile Throwable createAdaptiveInstanceError;\r\n+\r\n+    private Set<Class<?>> cachedWrapperClasses;\r\n+\r\n+    private Map<String, IllegalStateException> exceptions = new ConcurrentHashMap<>();\r\n+\r\n+    private static volatile LoadingStrategy[] strategies = loadLoadingStrategies();\r\n+\r\n+    public static void setLoadingStrategies(LoadingStrategy... strategies) {\r\n+        if (ArrayUtils.isNotEmpty(strategies)) {\r\n+            ExtensionLoader.strategies = strategies;\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Load all {@link Prioritized prioritized} {@link LoadingStrategy Loading Strategies} via {@link ServiceLoader}\r\n+     *\r\n+     * @return non-null\r\n+     * @since 2.7.7\r\n+     */\r\n+    private static LoadingStrategy[] loadLoadingStrategies() {\r\n+        return stream(load(LoadingStrategy.class).spliterator(), false)\r\n+                .sorted()\r\n+                .toArray(LoadingStrategy[]::new);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all {@link LoadingStrategy Loading Strategies}\r\n+     *\r\n+     * @return non-null\r\n+     * @see LoadingStrategy\r\n+     * @see Prioritized\r\n+     * @since 2.7.7\r\n+     */\r\n+    public static List<LoadingStrategy> getLoadingStrategies() {\r\n+        return asList(strategies);\r\n+    }\r\n+\r\n+    private ExtensionLoader(Class<?> type) {\r\n+        this.type = type;\r\n+        objectFactory = (type == ExtensionFactory.class ? null : ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getAdaptiveExtension());\r\n+    }\r\n+\r\n+    private static <T> boolean withExtensionAnnotation(Class<T> type) {\r\n+        return type.isAnnotationPresent(SPI.class);\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public static <T> ExtensionLoader<T> getExtensionLoader(Class<T> type) {\r\n+        if (type == null) {\r\n+            throw new IllegalArgumentException(\"Extension type == null\");\r\n+        }\r\n+        if (!type.isInterface()) {\r\n+            throw new IllegalArgumentException(\"Extension type (\" + type + \") is not an interface!\");\r\n+        }\r\n+        if (!withExtensionAnnotation(type)) {\r\n+            throw new IllegalArgumentException(\"Extension type (\" + type +\r\n+                    \") is not an extension, because it is NOT annotated with @\" + SPI.class.getSimpleName() + \"!\");\r\n+        }\r\n+\r\n+        ExtensionLoader<T> loader = (ExtensionLoader<T>) EXTENSION_LOADERS.get(type);\r\n+        if (loader == null) {\r\n+            EXTENSION_LOADERS.putIfAbsent(type, new ExtensionLoader<T>(type));\r\n+            loader = (ExtensionLoader<T>) EXTENSION_LOADERS.get(type);\r\n+        }\r\n+        return loader;\r\n+    }\r\n+\r\n+    // For testing purposes only\r\n+    public static void resetExtensionLoader(Class type) {\r\n+        ExtensionLoader loader = EXTENSION_LOADERS.get(type);\r\n+        if (loader != null) {\r\n+            // Remove all instances associated with this loader as well\r\n+            Map<String, Class<?>> classes = loader.getExtensionClasses();\r\n+            for (Map.Entry<String, Class<?>> entry : classes.entrySet()) {\r\n+                EXTENSION_INSTANCES.remove(entry.getValue());\r\n+            }\r\n+            classes.clear();\r\n+            EXTENSION_LOADERS.remove(type);\r\n+        }\r\n+    }\r\n+\r\n+    public static void destroyAll() {\r\n+        EXTENSION_INSTANCES.forEach((_type, instance) -> {\r\n+            if (instance instanceof Lifecycle) {\r\n+                Lifecycle lifecycle = (Lifecycle) instance;\r\n+                try {\r\n+                    lifecycle.destroy();\r\n+                } catch (Exception e) {\r\n+                    logger.error(\"Error destroying extension \" + lifecycle, e);\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    private static ClassLoader findClassLoader() {\r\n+        return ClassUtils.getClassLoader(ExtensionLoader.class);\r\n+    }\r\n+\r\n+    public String getExtensionName(T extensionInstance) {\r\n+        return getExtensionName(extensionInstance.getClass());\r\n+    }\r\n+\r\n+    public String getExtensionName(Class<?> extensionClass) {\r\n+        getExtensionClasses();// load class\r\n+        return cachedNames.get(extensionClass);\r\n+    }\r\n+\r\n+    /**\r\n+     * This is equivalent to {@code getActivateExtension(url, key, null)}\r\n+     *\r\n+     * @param url url\r\n+     * @param key url parameter key which used to get extension point names\r\n+     * @return extension list which are activated.\r\n+     * @see #getActivateExtension(org.apache.dubbo.common.URL, String, String)\r\n+     */\r\n+    public List<T> getActivateExtension(URL url, String key) {\r\n+        return getActivateExtension(url, key, null);\r\n+    }\r\n+\r\n+    /**\r\n+     * This is equivalent to {@code getActivateExtension(url, values, null)}\r\n+     *\r\n+     * @param url    url\r\n+     * @param values extension point names\r\n+     * @return extension list which are activated\r\n+     * @see #getActivateExtension(org.apache.dubbo.common.URL, String[], String)\r\n+     */\r\n+    public List<T> getActivateExtension(URL url, String[] values) {\r\n+        return getActivateExtension(url, values, null);\r\n+    }\r\n+\r\n+    /**\r\n+     * This is equivalent to {@code getActivateExtension(url, url.getParameter(key).split(\",\"), null)}\r\n+     *\r\n+     * @param url   url\r\n+     * @param key   url parameter key which used to get extension point names\r\n+     * @param group group\r\n+     * @return extension list which are activated.\r\n+     * @see #getActivateExtension(org.apache.dubbo.common.URL, String[], String)\r\n+     */\r\n+    public List<T> getActivateExtension(URL url, String key, String group) {\r\n+        String value = url.getParameter(key);\r\n+        return getActivateExtension(url, StringUtils.isEmpty(value) ? null : COMMA_SPLIT_PATTERN.split(value), group);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get activate extensions.\r\n+     *\r\n+     * @param url    url\r\n+     * @param values extension point names\r\n+     * @param group  group\r\n+     * @return extension list which are activated\r\n+     * @see org.apache.dubbo.common.extension.Activate\r\n+     */\r\n+    public List<T> getActivateExtension(URL url, String[] values, String group) {\r\n+        List<T> activateExtensions = new ArrayList<>();\r\n+        List<String> names = values == null ? new ArrayList<>(0) : asList(values);\r\n+        if (!names.contains(REMOVE_VALUE_PREFIX + DEFAULT_KEY)) {\r\n+            getExtensionClasses();\r\n+            for (Map.Entry<String, Object> entry : cachedActivates.entrySet()) {\r\n+                String name = entry.getKey();\r\n+                Object activate = entry.getValue();\r\n+\r\n+                String[] activateGroup, activateValue;\r\n+\r\n+                if (activate instanceof Activate) {\r\n+                    activateGroup = ((Activate) activate).group();\r\n+                    activateValue = ((Activate) activate).value();\r\n+                } else if (activate instanceof com.alibaba.dubbo.common.extension.Activate) {\r\n+                    activateGroup = ((com.alibaba.dubbo.common.extension.Activate) activate).group();\r\n+                    activateValue = ((com.alibaba.dubbo.common.extension.Activate) activate).value();\r\n+                } else {\r\n+                    continue;\r\n+                }\r\n+                if (isMatchGroup(group, activateGroup)\r\n+                        && !names.contains(name)\r\n+                        && !names.contains(REMOVE_VALUE_PREFIX + name)\r\n+                        && isActive(activateValue, url)) {\r\n+                    activateExtensions.add(getExtension(name));\r\n+                }\r\n+            }\r\n+            activateExtensions.sort(ActivateComparator.COMPARATOR);\r\n+        }\r\n+        List<T> loadedExtensions = new ArrayList<>();\r\n+        for (int i = 0; i < names.size(); i++) {\r\n+            String name = names.get(i);\r\n+            if (!name.startsWith(REMOVE_VALUE_PREFIX)\r\n+                    && !names.contains(REMOVE_VALUE_PREFIX + name)) {\r\n+                if (DEFAULT_KEY.equals(name)) {\r\n+                    if (!loadedExtensions.isEmpty()) {\r\n+                        activateExtensions.addAll(0, loadedExtensions);\r\n+                        loadedExtensions.clear();\r\n+                    }\r\n+                } else {\r\n+                    loadedExtensions.add(getExtension(name));\r\n+                }\r\n+            }\r\n+        }\r\n+        if (!loadedExtensions.isEmpty()) {\r\n+            activateExtensions.addAll(loadedExtensions);\r\n+        }\r\n+        return activateExtensions;\r\n+    }\r\n+\r\n+    private boolean isMatchGroup(String group, String[] groups) {\r\n+        if (StringUtils.isEmpty(group)) {\r\n+            return true;\r\n+        }\r\n+        if (groups != null && groups.length > 0) {\r\n+            for (String g : groups) {\r\n+                if (group.equals(g)) {\r\n+                    return true;\r\n+                }\r\n+            }\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    private boolean isActive(String[] keys, URL url) {\r\n+        if (keys.length == 0) {\r\n+            return true;\r\n+        }\r\n+        for (String key : keys) {\r\n+            // @Active(value=\"key1:value1, key2:value2\")\r\n+            String keyValue = null;\r\n+            if (key.contains(\":\")) {\r\n+                String[] arr = key.split(\":\");\r\n+                key = arr[0];\r\n+                keyValue = arr[1];\r\n+            }\r\n+\r\n+            for (Map.Entry<String, String> entry : url.getParameters().entrySet()) {\r\n+                String k = entry.getKey();\r\n+                String v = entry.getValue();\r\n+                if ((k.equals(key) || k.endsWith(\".\" + key))\r\n+                        && ((keyValue != null && keyValue.equals(v)) || (keyValue == null && ConfigUtils.isNotEmpty(v)))) {\r\n+                    return true;\r\n+                }\r\n+            }\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get extension's instance. Return <code>null</code> if extension is not found or is not initialized. Pls. note\r\n+     * that this method will not trigger extension load.\r\n+     * <p>\r\n+     * In order to trigger extension load, call {@link #getExtension(String)} instead.\r\n+     *\r\n+     * @see #getExtension(String)\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public T getLoadedExtension(String name) {\r\n+        if (StringUtils.isEmpty(name)) {\r\n+            throw new IllegalArgumentException(\"Extension name == null\");\r\n+        }\r\n+        Holder<Object> holder = getOrCreateHolder(name);\r\n+        return (T) holder.get();\r\n+    }\r\n+\r\n+    private Holder<Object> getOrCreateHolder(String name) {\r\n+        Holder<Object> holder = cachedInstances.get(name);\r\n+        if (holder == null) {\r\n+            cachedInstances.putIfAbsent(name, new Holder<>());\r\n+            holder = cachedInstances.get(name);\r\n+        }\r\n+        return holder;\r\n+    }\r\n+\r\n+    /**\r\n+     * Return the list of extensions which are already loaded.\r\n+     * <p>\r\n+     * Usually {@link #getSupportedExtensions()} should be called in order to get all extensions.\r\n+     *\r\n+     * @see #getSupportedExtensions()\r\n+     */\r\n+    public Set<String> getLoadedExtensions() {\r\n+        return Collections.unmodifiableSet(new TreeSet<>(cachedInstances.keySet()));\r\n+    }\r\n+\r\n+    public List<T> getLoadedExtensionInstances() {\r\n+        List<T> instances = new ArrayList<>();\r\n+        cachedInstances.values().forEach(holder -> instances.add((T) holder.get()));\r\n+        return instances;\r\n+    }\r\n+\r\n+    public Object getLoadedAdaptiveExtensionInstances() {\r\n+        return cachedAdaptiveInstance.get();\r\n+    }\r\n+\r\n+//    public T getPrioritizedExtensionInstance() {\r\n+//        Set<String> supported = getSupportedExtensions();\r\n+//\r\n+//        Set<T> instances = new HashSet<>();\r\n+//        Set<T> prioritized = new HashSet<>();\r\n+//        for (String s : supported) {\r\n+//\r\n+//        }\r\n+//\r\n+//    }\r\n+\r\n+    /**\r\n+     * Find the extension with the given name. If the specified name is not found, then {@link IllegalStateException}\r\n+     * will be thrown.\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public T getExtension(String name) {\r\n+        return getExtension(name, true);\r\n+    }\r\n+\r\n+    public T getExtension(String name, boolean wrap) {\r\n+        if (StringUtils.isEmpty(name)) {\r\n+            throw new IllegalArgumentException(\"Extension name == null\");\r\n+        }\r\n+        if (\"true\".equals(name)) {\r\n+            return getDefaultExtension();\r\n+        }\r\n+        final Holder<Object> holder = getOrCreateHolder(name);\r\n+        Object instance = holder.get();\r\n+        if (instance == null) {\r\n+            synchronized (holder) {\r\n+                instance = holder.get();\r\n+                if (instance == null) {\r\n+                    instance = createExtension(name, wrap);\r\n+                    holder.set(instance);\r\n+                }\r\n+            }\r\n+        }\r\n+        return (T) instance;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the extension by specified name if found, or {@link #getDefaultExtension() returns the default one}\r\n+     *\r\n+     * @param name the name of extension\r\n+     * @return non-null\r\n+     */\r\n+    public T getOrDefaultExtension(String name) {\r\n+        return containsExtension(name) ? getExtension(name) : getDefaultExtension();\r\n+    }\r\n+\r\n+    /**\r\n+     * Return default extension, return <code>null</code> if it's not configured.\r\n+     */\r\n+    public T getDefaultExtension() {\r\n+        getExtensionClasses();\r\n+        if (StringUtils.isBlank(cachedDefaultName) || \"true\".equals(cachedDefaultName)) {\r\n+            return null;\r\n+        }\r\n+        return getExtension(cachedDefaultName);\r\n+    }\r\n+\r\n+    public boolean hasExtension(String name) {\r\n+        if (StringUtils.isEmpty(name)) {\r\n+            throw new IllegalArgumentException(\"Extension name == null\");\r\n+        }\r\n+        Class<?> c = this.getExtensionClass(name);\r\n+        return c != null;\r\n+    }\r\n+\r\n+    public Set<String> getSupportedExtensions() {\r\n+        Map<String, Class<?>> clazzes = getExtensionClasses();\r\n+        return Collections.unmodifiableSet(new TreeSet<>(clazzes.keySet()));\r\n+    }\r\n+\r\n+    public Set<T> getSupportedExtensionInstances() {\r\n+        List<T> instances = new LinkedList<>();\r\n+        Set<String> supportedExtensions = getSupportedExtensions();\r\n+        if (CollectionUtils.isNotEmpty(supportedExtensions)) {\r\n+            for (String name : supportedExtensions) {\r\n+                instances.add(getExtension(name));\r\n+            }\r\n+        }\r\n+        // sort the Prioritized instances\r\n+        sort(instances, Prioritized.COMPARATOR);\r\n+        return new LinkedHashSet<>(instances);\r\n+    }\r\n+\r\n+    /**\r\n+     * Return default extension name, return <code>null</code> if not configured.\r\n+     */\r\n+    public String getDefaultExtensionName() {\r\n+        getExtensionClasses();\r\n+        return cachedDefaultName;\r\n+    }\r\n+\r\n+    /**\r\n+     * Register new extension via API\r\n+     *\r\n+     * @param name  extension name\r\n+     * @param clazz extension class\r\n+     * @throws IllegalStateException when extension with the same name has already been registered.\r\n+     */\r\n+    public void addExtension(String name, Class<?> clazz) {\r\n+        getExtensionClasses(); // load classes\r\n+\r\n+        if (!type.isAssignableFrom(clazz)) {\r\n+            throw new IllegalStateException(\"Input type \" +\r\n+                    clazz + \" doesn't implement the Extension \" + type);\r\n+        }\r\n+        if (clazz.isInterface()) {\r\n+            throw new IllegalStateException(\"Input type \" +\r\n+                    clazz + \" can't be interface!\");\r\n+        }\r\n+\r\n+        if (!clazz.isAnnotationPresent(Adaptive.class)) {\r\n+            if (StringUtils.isBlank(name)) {\r\n+                throw new IllegalStateException(\"Extension name is blank (Extension \" + type + \")!\");\r\n+            }\r\n+            if (cachedClasses.get().containsKey(name)) {\r\n+                throw new IllegalStateException(\"Extension name \" +\r\n+                        name + \" already exists (Extension \" + type + \")!\");\r\n+            }\r\n+\r\n+            cachedNames.put(clazz, name);\r\n+            cachedClasses.get().put(name, clazz);\r\n+        } else {\r\n+            if (cachedAdaptiveClass != null) {\r\n+                throw new IllegalStateException(\"Adaptive Extension already exists (Extension \" + type + \")!\");\r\n+            }\r\n+\r\n+            cachedAdaptiveClass = clazz;\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Replace the existing extension via API\r\n+     *\r\n+     * @param name  extension name\r\n+     * @param clazz extension class\r\n+     * @throws IllegalStateException when extension to be placed doesn't exist\r\n+     * @deprecated not recommended any longer, and use only when test\r\n+     */\r\n+    @Deprecated\r\n+    public void replaceExtension(String name, Class<?> clazz) {\r\n+        getExtensionClasses(); // load classes\r\n+\r\n+        if (!type.isAssignableFrom(clazz)) {\r\n+            throw new IllegalStateException(\"Input type \" +\r\n+                    clazz + \" doesn't implement Extension \" + type);\r\n+        }\r\n+        if (clazz.isInterface()) {\r\n+            throw new IllegalStateException(\"Input type \" +\r\n+                    clazz + \" can't be interface!\");\r\n+        }\r\n+\r\n+        if (!clazz.isAnnotationPresent(Adaptive.class)) {\r\n+            if (StringUtils.isBlank(name)) {\r\n+                throw new IllegalStateException(\"Extension name is blank (Extension \" + type + \")!\");\r\n+            }\r\n+            if (!cachedClasses.get().containsKey(name)) {\r\n+                throw new IllegalStateException(\"Extension name \" +\r\n+                        name + \" doesn't exist (Extension \" + type + \")!\");\r\n+            }\r\n+\r\n+            cachedNames.put(clazz, name);\r\n+            cachedClasses.get().put(name, clazz);\r\n+            cachedInstances.remove(name);\r\n+        } else {\r\n+            if (cachedAdaptiveClass == null) {\r\n+                throw new IllegalStateException(\"Adaptive Extension doesn't exist (Extension \" + type + \")!\");\r\n+            }\r\n+\r\n+            cachedAdaptiveClass = clazz;\r\n+            cachedAdaptiveInstance.set(null);\r\n+        }\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public T getAdaptiveExtension() {\r\n+        Object instance = cachedAdaptiveInstance.get();\r\n+        if (instance == null) {\r\n+            if (createAdaptiveInstanceError != null) {\r\n+                throw new IllegalStateException(\"Failed to create adaptive instance: \" +\r\n+                        createAdaptiveInstanceError.toString(),\r\n+                        createAdaptiveInstanceError);\r\n+            }\r\n+\r\n+            synchronized (cachedAdaptiveInstance) {\r\n+                instance = cachedAdaptiveInstance.get();\r\n+                if (instance == null) {\r\n+                    try {\r\n+                        instance = createAdaptiveExtension();\r\n+                        cachedAdaptiveInstance.set(instance);\r\n+                    } catch (Throwable t) {\r\n+                        createAdaptiveInstanceError = t;\r\n+                        throw new IllegalStateException(\"Failed to create adaptive instance: \" + t.toString(), t);\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        return (T) instance;\r\n+    }\r\n+\r\n+    private IllegalStateException findException(String name) {\r\n+        StringBuilder buf = new StringBuilder(\"No such extension \" + type.getName() + \" by name \" + name);\r\n+\r\n+        int i = 1;\r\n+        for (Map.Entry<String, IllegalStateException> entry : exceptions.entrySet()) {\r\n+            if (entry.getKey().toLowerCase().startsWith(name.toLowerCase())) {\r\n+                if (i == 1) {\r\n+                    buf.append(\", possible causes: \");\r\n+                }\r\n+                buf.append(\"\\r\\n(\");\r\n+                buf.append(i++);\r\n+                buf.append(\") \");\r\n+                buf.append(entry.getKey());\r\n+                buf.append(\":\\r\\n\");\r\n+                buf.append(StringUtils.toString(entry.getValue()));\r\n+            }\r\n+        }\r\n+\r\n+        if (i == 1) {\r\n+            buf.append(\", no related exception was found, please check whether related SPI module is missing.\");\r\n+        }\r\n+        return new IllegalStateException(buf.toString());\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    private T createExtension(String name, boolean wrap) {\r\n+        Class<?> clazz = getExtensionClasses().get(name);\r\n+        if (clazz == null) {\r\n+            throw findException(name);\r\n+        }\r\n+        try {\r\n+            T instance = (T) EXTENSION_INSTANCES.get(clazz);\r\n+            if (instance == null) {\r\n+                EXTENSION_INSTANCES.putIfAbsent(clazz, clazz.getDeclaredConstructor().newInstance());\r\n+                instance = (T) EXTENSION_INSTANCES.get(clazz);\r\n+            }\r\n+            injectExtension(instance);\r\n+\r\n+\r\n+            if (wrap) {\r\n+\r\n+                List<Class<?>> wrapperClassesList = new ArrayList<>();\r\n+                if (cachedWrapperClasses != null) {\r\n+                    wrapperClassesList.addAll(cachedWrapperClasses);\r\n+                    wrapperClassesList.sort(WrapperComparator.COMPARATOR);\r\n+                    Collections.reverse(wrapperClassesList);\r\n+                }\r\n+\r\n+                if (CollectionUtils.isNotEmpty(wrapperClassesList)) {\r\n+                    for (Class<?> wrapperClass : wrapperClassesList) {\r\n+                        Wrapper wrapper = wrapperClass.getAnnotation(Wrapper.class);\r\n+                        if (wrapper == null\r\n+                                || (ArrayUtils.contains(wrapper.matches(), name) && !ArrayUtils.contains(wrapper.mismatches(), name))) {\r\n+                            instance = injectExtension((T) wrapperClass.getConstructor(type).newInstance(instance));\r\n+                        }\r\n+                    }\r\n+                }\r\n+            }\r\n+\r\n+            initExtension(instance);\r\n+            return instance;\r\n+        } catch (Throwable t) {\r\n+            throw new IllegalStateException(\"Extension instance (name: \" + name + \", class: \" +\r\n+                    type + \") couldn't be instantiated: \" + t.getMessage(), t);\r\n+        }\r\n+    }\r\n+\r\n+    private boolean containsExtension(String name) {\r\n+        return getExtensionClasses().containsKey(name);\r\n+    }\r\n+\r\n+    private T injectExtension(T instance) {\r\n+\r\n+        if (objectFactory == null) {\r\n+            return instance;\r\n+        }\r\n+\r\n+        try {\r\n+            for (Method method : instance.getClass().getMethods()) {\r\n+                if (!isSetter(method)) {\r\n+                    continue;\r\n+                }\r\n+                /**\r\n+                 * Check {@link DisableInject} to see if we need auto injection for this property\r\n+                 */\r\n+                if (method.getAnnotation(DisableInject.class) != null) {\r\n+                    continue;\r\n+                }\r\n+                Class<?> pt = method.getParameterTypes()[0];\r\n+                if (ReflectUtils.isPrimitives(pt)) {\r\n+                    continue;\r\n+                }\r\n+\r\n+                try {\r\n+                    String property = getSetterProperty(method);\r\n+                    Object object = objectFactory.getExtension(pt, property);\r\n+                    if (object != null) {\r\n+                        method.invoke(instance, object);\r\n+                    }\r\n+                } catch (Exception e) {\r\n+                    logger.error(\"Failed to inject via method \" + method.getName()\r\n+                            + \" of interface \" + type.getName() + \": \" + e.getMessage(), e);\r\n+                }\r\n+\r\n+            }\r\n+        } catch (Exception e) {\r\n+            logger.error(e.getMessage(), e);\r\n+        }\r\n+        return instance;\r\n+    }\r\n+\r\n+    private void initExtension(T instance) {\r\n+        if (instance instanceof Lifecycle) {\r\n+            Lifecycle lifecycle = (Lifecycle) instance;\r\n+            lifecycle.initialize();\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * get properties name for setter, for instance: setVersion, return \"version\"\r\n+     * <p>\r\n+     * return \"\", if setter name with length less than 3\r\n+     */\r\n+    private String getSetterProperty(Method method) {\r\n+        return method.getName().length() > 3 ? method.getName().substring(3, 4).toLowerCase() + method.getName().substring(4) : \"\";\r\n+    }\r\n+\r\n+    /**\r\n+     * return true if and only if:\r\n+     * <p>\r\n+     * 1, public\r\n+     * <p>\r\n+     * 2, name starts with \"set\"\r\n+     * <p>\r\n+     * 3, only has one parameter\r\n+     */\r\n+    private boolean isSetter(Method method) {\r\n+        return method.getName().startsWith(\"set\")\r\n+                && method.getParameterTypes().length == 1\r\n+                && Modifier.isPublic(method.getModifiers());\r\n+    }\r\n+\r\n+    private Class<?> getExtensionClass(String name) {\r\n+        if (type == null) {\r\n+            throw new IllegalArgumentException(\"Extension type == null\");\r\n+        }\r\n+        if (name == null) {\r\n+            throw new IllegalArgumentException(\"Extension name == null\");\r\n+        }\r\n+        return getExtensionClasses().get(name);\r\n+    }\r\n+\r\n+    private Map<String, Class<?>> getExtensionClasses() {\r\n+        Map<String, Class<?>> classes = cachedClasses.get();\r\n+        if (classes == null) {\r\n+            synchronized (cachedClasses) {\r\n+                classes = cachedClasses.get();\r\n+                if (classes == null) {\r\n+                    classes = loadExtensionClasses();\r\n+                    cachedClasses.set(classes);\r\n+                }\r\n+            }\r\n+        }\r\n+        return classes;\r\n+    }\r\n+\r\n+    /**\r\n+     * synchronized in getExtensionClasses\r\n+     */\r\n+    private Map<String, Class<?>> loadExtensionClasses() {\r\n+        cacheDefaultExtensionName();\r\n+\r\n+        Map<String, Class<?>> extensionClasses = new HashMap<>();\r\n+\r\n+        for (LoadingStrategy strategy : strategies) {\r\n+            loadDirectory(extensionClasses, strategy.directory(), type.getName(), strategy.preferExtensionClassLoader(), strategy.overridden(), strategy.excludedPackages());\r\n+            loadDirectory(extensionClasses, strategy.directory(), type.getName().replace(\"org.apache\", \"com.alibaba\"), strategy.preferExtensionClassLoader(), strategy.overridden(), strategy.excludedPackages());\r\n+        }\r\n+\r\n+        return extensionClasses;\r\n+    }\r\n+\r\n+    /**\r\n+     * extract and cache default extension name if exists\r\n+     */\r\n+    private void cacheDefaultExtensionName() {\r\n+        final SPI defaultAnnotation = type.getAnnotation(SPI.class);\r\n+        if (defaultAnnotation == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        String value = defaultAnnotation.value();\r\n+        if ((value = value.trim()).length() > 0) {\r\n+            String[] names = NAME_SEPARATOR.split(value);\r\n+            if (names.length > 1) {\r\n+                throw new IllegalStateException(\"More than 1 default extension name on extension \" + type.getName()\r\n+                        + \": \" + Arrays.toString(names));\r\n+            }\r\n+            if (names.length == 1) {\r\n+                cachedDefaultName = names[0];\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private void loadDirectory(Map<String, Class<?>> extensionClasses, String dir, String type) {\r\n+        loadDirectory(extensionClasses, dir, type, false, false);\r\n+    }\r\n+\r\n+    private void loadDirectory(Map<String, Class<?>> extensionClasses, String dir, String type,\r\n+                               boolean extensionLoaderClassLoaderFirst, boolean overridden, String... excludedPackages) {\r\n+        String fileName = dir + type;\r\n+        try {\r\n+            Enumeration<java.net.URL> urls = null;\r\n+            ClassLoader classLoader = findClassLoader();\r\n+\r\n+            // try to load from ExtensionLoader's ClassLoader first\r\n+            if (extensionLoaderClassLoaderFirst) {\r\n+                ClassLoader extensionLoaderClassLoader = ExtensionLoader.class.getClassLoader();\r\n+                if (ClassLoader.getSystemClassLoader() != extensionLoaderClassLoader) {\r\n+                    urls = extensionLoaderClassLoader.getResources(fileName);\r\n+                }\r\n+            }\r\n+\r\n+            if (urls == null || !urls.hasMoreElements()) {\r\n+                if (classLoader != null) {\r\n+                    urls = classLoader.getResources(fileName);\r\n+                } else {\r\n+                    urls = ClassLoader.getSystemResources(fileName);\r\n+                }\r\n+            }\r\n+\r\n+            if (urls != null) {\r\n+                while (urls.hasMoreElements()) {\r\n+                    java.net.URL resourceURL = urls.nextElement();\r\n+                    loadResource(extensionClasses, classLoader, resourceURL, overridden, excludedPackages);\r\n+                }\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            logger.error(\"Exception occurred when loading extension class (interface: \" +\r\n+                    type + \", description file: \" + fileName + \").\", t);\r\n+        }\r\n+    }\r\n+\r\n+    private void loadResource(Map<String, Class<?>> extensionClasses, ClassLoader classLoader,\r\n+                              java.net.URL resourceURL, boolean overridden, String... excludedPackages) {\r\n+        try {\r\n+            try (BufferedReader reader = new BufferedReader(new InputStreamReader(resourceURL.openStream(), StandardCharsets.UTF_8))) {\r\n+                String line;\r\n+                String clazz = null;\r\n+                while ((line = reader.readLine()) != null) {\r\n+                    final int ci = line.indexOf('#');\r\n+                    if (ci >= 0) {\r\n+                        line = line.substring(0, ci);\r\n+                    }\r\n+                    line = line.trim();\r\n+                    if (line.length() > 0) {\r\n+                        try {\r\n+                            String name = null;\r\n+                            int i = line.indexOf('=');\r\n+                            if (i > 0) {\r\n+                                name = line.substring(0, i).trim();\r\n+                                clazz = line.substring(i + 1).trim();\r\n+                            } else {\r\n+                                clazz = line;\r\n+                            }\r\n+                            if (StringUtils.isNotEmpty(clazz) && !isExcluded(clazz, excludedPackages)) {\r\n+                                loadClass(extensionClasses, resourceURL, Class.forName(clazz, true, classLoader), name, overridden);\r\n+                            }\r\n+                        } catch (Throwable t) {\r\n+                            IllegalStateException e = new IllegalStateException(\"Failed to load extension class (interface: \" + type + \", class line: \" + line + \") in \" + resourceURL + \", cause: \" + t.getMessage(), t);\r\n+                            exceptions.put(line, e);\r\n+                        }\r\n+                    }\r\n+                }\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            logger.error(\"Exception occurred when loading extension class (interface: \" +\r\n+                    type + \", class file: \" + resourceURL + \") in \" + resourceURL, t);\r\n+        }\r\n+    }\r\n+\r\n+    private boolean isExcluded(String className, String... excludedPackages) {\r\n+        if (excludedPackages != null) {\r\n+            for (String excludePackage : excludedPackages) {\r\n+                if (className.startsWith(excludePackage + \".\")) {\r\n+                    return true;\r\n+                }\r\n+            }\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    private void loadClass(Map<String, Class<?>> extensionClasses, java.net.URL resourceURL, Class<?> clazz, String name,\r\n+                           boolean overridden) throws NoSuchMethodException {\r\n+        if (!type.isAssignableFrom(clazz)) {\r\n+            throw new IllegalStateException(\"Error occurred when loading extension class (interface: \" +\r\n+                    type + \", class line: \" + clazz.getName() + \"), class \"\r\n+                    + clazz.getName() + \" is not subtype of interface.\");\r\n+        }\r\n+        if (clazz.isAnnotationPresent(Adaptive.class)) {\r\n+            cacheAdaptiveClass(clazz, overridden);\r\n+        } else if (isWrapperClass(clazz)) {\r\n+            cacheWrapperClass(clazz);\r\n+        } else {\r\n+            clazz.getConstructor();\r\n+            if (StringUtils.isEmpty(name)) {\r\n+                name = findAnnotationName(clazz);\r\n+                if (name.length() == 0) {\r\n+                    throw new IllegalStateException(\"No such extension name for the class \" + clazz.getName() + \" in the config \" + resourceURL);\r\n+                }\r\n+            }\r\n+\r\n+            String[] names = NAME_SEPARATOR.split(name);\r\n+            if (ArrayUtils.isNotEmpty(names)) {\r\n+                cacheActivateClass(clazz, names[0]);\r\n+                for (String n : names) {\r\n+                    cacheName(clazz, n);\r\n+                    saveInExtensionClass(extensionClasses, clazz, n, overridden);\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * cache name\r\n+     */\r\n+    private void cacheName(Class<?> clazz, String name) {\r\n+        if (!cachedNames.containsKey(clazz)) {\r\n+            cachedNames.put(clazz, name);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * put clazz in extensionClasses\r\n+     */\r\n+    private void saveInExtensionClass(Map<String, Class<?>> extensionClasses, Class<?> clazz, String name, boolean overridden) {\r\n+        Class<?> c = extensionClasses.get(name);\r\n+        if (c == null || overridden) {\r\n+            extensionClasses.put(name, clazz);\r\n+        } else if (c != clazz) {\r\n+            String duplicateMsg = \"Duplicate extension \" + type.getName() + \" name \" + name + \" on \" + c.getName() + \" and \" + clazz.getName();\r\n+            logger.error(duplicateMsg);\r\n+            throw new IllegalStateException(duplicateMsg);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * cache Activate class which is annotated with <code>Activate</code>\r\n+     * <p>\r\n+     * for compatibility, also cache class with old alibaba Activate annotation\r\n+     */\r\n+    private void cacheActivateClass(Class<?> clazz, String name) {\r\n+        Activate activate = clazz.getAnnotation(Activate.class);\r\n+        if (activate != null) {\r\n+            cachedActivates.put(name, activate);\r\n+        } else {\r\n+            // support com.alibaba.dubbo.common.extension.Activate\r\n+            com.alibaba.dubbo.common.extension.Activate oldActivate = clazz.getAnnotation(com.alibaba.dubbo.common.extension.Activate.class);\r\n+            if (oldActivate != null) {\r\n+                cachedActivates.put(name, oldActivate);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * cache Adaptive class which is annotated with <code>Adaptive</code>\r\n+     */\r\n+    private void cacheAdaptiveClass(Class<?> clazz, boolean overridden) {\r\n+        if (cachedAdaptiveClass == null || overridden) {\r\n+            cachedAdaptiveClass = clazz;\r\n+        } else if (!cachedAdaptiveClass.equals(clazz)) {\r\n+            throw new IllegalStateException(\"More than 1 adaptive class found: \"\r\n+                    + cachedAdaptiveClass.getName()\r\n+                    + \", \" + clazz.getName());\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * cache wrapper class\r\n+     * <p>\r\n+     * like: ProtocolFilterWrapper, ProtocolListenerWrapper\r\n+     */\r\n+    private void cacheWrapperClass(Class<?> clazz) {\r\n+        if (cachedWrapperClasses == null) {\r\n+            cachedWrapperClasses = new ConcurrentHashSet<>();\r\n+        }\r\n+        cachedWrapperClasses.add(clazz);\r\n+    }\r\n+\r\n+    /**\r\n+     * test if clazz is a wrapper class\r\n+     * <p>\r\n+     * which has Constructor with given class type as its only argument\r\n+     */\r\n+    private boolean isWrapperClass(Class<?> clazz) {\r\n+        try {\r\n+            clazz.getConstructor(type);\r\n+            return true;\r\n+        } catch (NoSuchMethodException e) {\r\n+            return false;\r\n+        }\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"deprecation\")\r\n+    private String findAnnotationName(Class<?> clazz) {\r\n+        org.apache.dubbo.common.Extension extension = clazz.getAnnotation(org.apache.dubbo.common.Extension.class);\r\n+        if (extension != null) {\r\n+            return extension.value();\r\n+        }\r\n+\r\n+        String name = clazz.getSimpleName();\r\n+        if (name.endsWith(type.getSimpleName())) {\r\n+            name = name.substring(0, name.length() - type.getSimpleName().length());\r\n+        }\r\n+        return name.toLowerCase();\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    private T createAdaptiveExtension() {\r\n+        try {\r\n+            return injectExtension((T) getAdaptiveExtensionClass().newInstance());\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(\"Can't create adaptive extension \" + type + \", cause: \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    private Class<?> getAdaptiveExtensionClass() {\r\n+        getExtensionClasses();\r\n+        if (cachedAdaptiveClass != null) {\r\n+            return cachedAdaptiveClass;\r\n+        }\r\n+        return cachedAdaptiveClass = createAdaptiveExtensionClass();\r\n+    }\r\n+\r\n+    private Class<?> createAdaptiveExtensionClass() {\r\n+        String code = new AdaptiveClassCodeGenerator(type, cachedDefaultName).generate();\r\n+        ClassLoader classLoader = findClassLoader();\r\n+        org.apache.dubbo.common.compiler.Compiler compiler = ExtensionLoader.getExtensionLoader(org.apache.dubbo.common.compiler.Compiler.class).getAdaptiveExtension();\r\n+        return compiler.compile(code, classLoader);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return this.getClass().getName() + \"[\" + type.getName() + \"]\";\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/extension/LoadingStrategy.java", "source2": "org/apache/dubbo/common/extension/LoadingStrategy.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,42 +1,42 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.extension;\n-\n-import org.apache.dubbo.common.lang.Prioritized;\n-\n-public interface LoadingStrategy extends Prioritized {\n-\n-    String directory();\n-\n-    default boolean preferExtensionClassLoader() {\n-        return false;\n-    }\n-\n-    default String[] excludedPackages() {\n-        return null;\n-    }\n-\n-    /**\n-     * Indicates current {@link LoadingStrategy} supports overriding other lower prioritized instances or not.\n-     *\n-     * @return if supports, return <code>true</code>, or <code>false</code>\n-     * @since 2.7.7\n-     */\n-    default boolean overridden() {\n-        return false;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.extension;\r\n+\r\n+import org.apache.dubbo.common.lang.Prioritized;\r\n+\r\n+public interface LoadingStrategy extends Prioritized {\r\n+\r\n+    String directory();\r\n+\r\n+    default boolean preferExtensionClassLoader() {\r\n+        return false;\r\n+    }\r\n+\r\n+    default String[] excludedPackages() {\r\n+        return null;\r\n+    }\r\n+\r\n+    /**\r\n+     * Indicates current {@link LoadingStrategy} supports overriding other lower prioritized instances or not.\r\n+     *\r\n+     * @return if supports, return <code>true</code>, or <code>false</code>\r\n+     * @since 2.7.7\r\n+     */\r\n+    default boolean overridden() {\r\n+        return false;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/extension/ServicesLoadingStrategy.java", "source2": "org/apache/dubbo/common/extension/ServicesLoadingStrategy.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,41 +1,41 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.extension;\n-\n-/**\n- * Services {@link LoadingStrategy}\n- *\n- * @since 2.7.7\n- */\n-public class ServicesLoadingStrategy implements LoadingStrategy {\n-\n-    @Override\n-    public String directory() {\n-        return \"META-INF/services/\";\n-    }\n-\n-    @Override\n-    public boolean overridden() {\n-        return true;\n-    }\n-\n-    @Override\n-    public int getPriority() {\n-        return MIN_PRIORITY;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.extension;\r\n+\r\n+/**\r\n+ * Services {@link LoadingStrategy}\r\n+ *\r\n+ * @since 2.7.7\r\n+ */\r\n+public class ServicesLoadingStrategy implements LoadingStrategy {\r\n+\r\n+    @Override\r\n+    public String directory() {\r\n+        return \"META-INF/services/\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean overridden() {\r\n+        return true;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getPriority() {\r\n+        return MIN_PRIORITY;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/extension/Wrapper.java", "source2": "org/apache/dubbo/common/extension/Wrapper.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,37 +1,37 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.extension;\n-\n-import java.lang.annotation.Retention;\n-import java.lang.annotation.RetentionPolicy;\n-\n-/**\n- * The annotated class will only work as a wrapper when the condition matches.\n- */\n-@Retention(RetentionPolicy.RUNTIME)\n-public @interface Wrapper {\n-\n-    /**\n-     * the extension names that need to be wrapped.\n-     */\n-    String[] matches() default {};\n-\n-    /**\n-     * the extension names that need to be excluded.\n-     */\n-    String[] mismatches() default {};\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.extension;\r\n+\r\n+import java.lang.annotation.Retention;\r\n+import java.lang.annotation.RetentionPolicy;\r\n+\r\n+/**\r\n+ * The annotated class will only work as a wrapper when the condition matches.\r\n+ */\r\n+@Retention(RetentionPolicy.RUNTIME)\r\n+public @interface Wrapper {\r\n+\r\n+    /**\r\n+     * the extension names that need to be wrapped.\r\n+     */\r\n+    String[] matches() default {};\r\n+\r\n+    /**\r\n+     * the extension names that need to be excluded.\r\n+     */\r\n+    String[] mismatches() default {};\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/extension/support/WrapperComparator.java", "source2": "org/apache/dubbo/common/extension/support/WrapperComparator.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,95 +1,95 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.extension.support;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-import java.util.Comparator;\n-\n-/**\n- * OrderComparator\n- */\n-public class WrapperComparator implements Comparator<Object> {\n-\n-    public static final Comparator<Object> COMPARATOR = new WrapperComparator();\n-\n-    @Override\n-    public int compare(Object o1, Object o2) {\n-        if (o1 == null && o2 == null) {\n-            return 0;\n-        }\n-        if (o1 == null) {\n-            return -1;\n-        }\n-        if (o2 == null) {\n-            return 1;\n-        }\n-        if (o1.equals(o2)) {\n-            return 0;\n-        }\n-\n-        Class clazz1 = (Class) o1;\n-        Class clazz2 = (Class) o2;\n-\n-        Class<?> inf = findSpi(clazz1);\n-\n-        OrderInfo a1 = parseOrder(clazz1);\n-        OrderInfo a2 = parseOrder(clazz2);\n-\n-        int n1 = a1 == null ? 0 : a1.order;\n-        int n2 = a2 == null ? 0 : a2.order;\n-        // never return 0 even if n1 equals n2, otherwise, o1 and o2 will override each other in collection like HashSet\n-        return n1 > n2 ? 1 : -1;\n-    }\n-\n-    private Class<?> findSpi(Class clazz) {\n-        if (clazz.getInterfaces().length == 0) {\n-            return null;\n-        }\n-\n-        for (Class<?> intf : clazz.getInterfaces()) {\n-            if (intf.isAnnotationPresent(SPI.class)) {\n-                return intf;\n-            } else {\n-                Class result = findSpi(intf);\n-                if (result != null) {\n-                    return result;\n-                }\n-            }\n-        }\n-\n-        return null;\n-    }\n-\n-    private OrderInfo parseOrder(Class<?> clazz) {\n-        OrderInfo info = new OrderInfo();\n-        if (clazz.isAnnotationPresent(Activate.class)) {\n-            Activate activate = clazz.getAnnotation(Activate.class);\n-            info.order = activate.order();\n-        } else if (clazz.isAnnotationPresent(com.alibaba.dubbo.common.extension.Activate.class)) {\n-            com.alibaba.dubbo.common.extension.Activate activate = clazz.getAnnotation(\n-                    com.alibaba.dubbo.common.extension.Activate.class);\n-            info.order = activate.order();\n-        }\n-        return info;\n-    }\n-\n-    private static class OrderInfo {\n-        private int order;\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.extension.support;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+import java.util.Comparator;\r\n+\r\n+/**\r\n+ * OrderComparator\r\n+ */\r\n+public class WrapperComparator implements Comparator<Object> {\r\n+\r\n+    public static final Comparator<Object> COMPARATOR = new WrapperComparator();\r\n+\r\n+    @Override\r\n+    public int compare(Object o1, Object o2) {\r\n+        if (o1 == null && o2 == null) {\r\n+            return 0;\r\n+        }\r\n+        if (o1 == null) {\r\n+            return -1;\r\n+        }\r\n+        if (o2 == null) {\r\n+            return 1;\r\n+        }\r\n+        if (o1.equals(o2)) {\r\n+            return 0;\r\n+        }\r\n+\r\n+        Class clazz1 = (Class) o1;\r\n+        Class clazz2 = (Class) o2;\r\n+\r\n+        Class<?> inf = findSpi(clazz1);\r\n+\r\n+        OrderInfo a1 = parseOrder(clazz1);\r\n+        OrderInfo a2 = parseOrder(clazz2);\r\n+\r\n+        int n1 = a1 == null ? 0 : a1.order;\r\n+        int n2 = a2 == null ? 0 : a2.order;\r\n+        // never return 0 even if n1 equals n2, otherwise, o1 and o2 will override each other in collection like HashSet\r\n+        return n1 > n2 ? 1 : -1;\r\n+    }\r\n+\r\n+    private Class<?> findSpi(Class clazz) {\r\n+        if (clazz.getInterfaces().length == 0) {\r\n+            return null;\r\n+        }\r\n+\r\n+        for (Class<?> intf : clazz.getInterfaces()) {\r\n+            if (intf.isAnnotationPresent(SPI.class)) {\r\n+                return intf;\r\n+            } else {\r\n+                Class result = findSpi(intf);\r\n+                if (result != null) {\r\n+                    return result;\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        return null;\r\n+    }\r\n+\r\n+    private OrderInfo parseOrder(Class<?> clazz) {\r\n+        OrderInfo info = new OrderInfo();\r\n+        if (clazz.isAnnotationPresent(Activate.class)) {\r\n+            Activate activate = clazz.getAnnotation(Activate.class);\r\n+            info.order = activate.order();\r\n+        } else if (clazz.isAnnotationPresent(com.alibaba.dubbo.common.extension.Activate.class)) {\r\n+            com.alibaba.dubbo.common.extension.Activate activate = clazz.getAnnotation(\r\n+                    com.alibaba.dubbo.common.extension.Activate.class);\r\n+            info.order = activate.order();\r\n+        }\r\n+        return info;\r\n+    }\r\n+\r\n+    private static class OrderInfo {\r\n+        private int order;\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/common/function/Predicates.java", "source2": "org/apache/dubbo/common/function/Predicates.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,74 +1,74 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.function;\n-\n-import java.util.function.Predicate;\n-\n-import static java.util.stream.Stream.of;\n-\n-/**\n- * The utilities class for Java {@link Predicate}\n- *\n- * @since 2.7.5\n- */\n-public interface Predicates {\n-\n-    Predicate[] EMPTY_ARRAY = new Predicate[0];\n-\n-    /**\n-     * {@link Predicate} always return <code>true</code>\n-     *\n-     * @param <T> the type to test\n-     * @return <code>true</code>\n-     */\n-    static <T> Predicate<T> alwaysTrue() {\n-        return e -> true;\n-    }\n-\n-    /**\n-     * {@link Predicate} always return <code>false</code>\n-     *\n-     * @param <T> the type to test\n-     * @return <code>false</code>\n-     */\n-    static <T> Predicate<T> alwaysFalse() {\n-        return e -> false;\n-    }\n-\n-    /**\n-     * a composed predicate that represents a short-circuiting logical AND of {@link Predicate predicates}\n-     *\n-     * @param predicates {@link Predicate predicates}\n-     * @param <T>        the type to test\n-     * @return non-null\n-     */\n-    static <T> Predicate<T> and(Predicate<T>... predicates) {\n-        return of(predicates).reduce((a, b) -> a.and(b)).orElseGet(Predicates::alwaysTrue);\n-    }\n-\n-    /**\n-     * a composed predicate that represents a short-circuiting logical OR of {@link Predicate predicates}\n-     *\n-     * @param predicates {@link Predicate predicates}\n-     * @param <T>        the detected type\n-     * @return non-null\n-     */\n-    static <T> Predicate<T> or(Predicate<T>... predicates) {\n-        return of(predicates).reduce((a, b) -> a.or(b)).orElse(e -> true);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.function;\r\n+\r\n+import java.util.function.Predicate;\r\n+\r\n+import static java.util.stream.Stream.of;\r\n+\r\n+/**\r\n+ * The utilities class for Java {@link Predicate}\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public interface Predicates {\r\n+\r\n+    Predicate[] EMPTY_ARRAY = new Predicate[0];\r\n+\r\n+    /**\r\n+     * {@link Predicate} always return <code>true</code>\r\n+     *\r\n+     * @param <T> the type to test\r\n+     * @return <code>true</code>\r\n+     */\r\n+    static <T> Predicate<T> alwaysTrue() {\r\n+        return e -> true;\r\n+    }\r\n+\r\n+    /**\r\n+     * {@link Predicate} always return <code>false</code>\r\n+     *\r\n+     * @param <T> the type to test\r\n+     * @return <code>false</code>\r\n+     */\r\n+    static <T> Predicate<T> alwaysFalse() {\r\n+        return e -> false;\r\n+    }\r\n+\r\n+    /**\r\n+     * a composed predicate that represents a short-circuiting logical AND of {@link Predicate predicates}\r\n+     *\r\n+     * @param predicates {@link Predicate predicates}\r\n+     * @param <T>        the type to test\r\n+     * @return non-null\r\n+     */\r\n+    static <T> Predicate<T> and(Predicate<T>... predicates) {\r\n+        return of(predicates).reduce((a, b) -> a.and(b)).orElseGet(Predicates::alwaysTrue);\r\n+    }\r\n+\r\n+    /**\r\n+     * a composed predicate that represents a short-circuiting logical OR of {@link Predicate predicates}\r\n+     *\r\n+     * @param predicates {@link Predicate predicates}\r\n+     * @param <T>        the detected type\r\n+     * @return non-null\r\n+     */\r\n+    static <T> Predicate<T> or(Predicate<T>... predicates) {\r\n+        return of(predicates).reduce((a, b) -> a.or(b)).orElse(e -> true);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/function/Streams.java", "source2": "org/apache/dubbo/common/function/Streams.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,71 +1,71 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.function;\n-\n-import java.util.LinkedHashSet;\n-import java.util.List;\n-import java.util.Set;\n-import java.util.function.Predicate;\n-import java.util.stream.Stream;\n-\n-import static java.util.stream.Collectors.toList;\n-import static java.util.stream.StreamSupport.stream;\n-import static org.apache.dubbo.common.function.Predicates.and;\n-import static org.apache.dubbo.common.function.Predicates.or;\n-\n-/**\n- * The utilities class for {@link Stream}\n- *\n- * @since 2.7.5\n- */\n-public interface Streams {\n-\n-    static <T, S extends Iterable<T>> Stream<T> filterStream(S values, Predicate<T> predicate) {\n-        return stream(values.spliterator(), false).filter(predicate);\n-    }\n-\n-    static <T, S extends Iterable<T>> List<T> filterList(S values, Predicate<T> predicate) {\n-        return filterStream(values, predicate).collect(toList());\n-    }\n-\n-    static <T, S extends Iterable<T>> Set<T> filterSet(S values, Predicate<T> predicate) {\n-        // new Set with insertion order\n-        return filterStream(values, predicate).collect(LinkedHashSet::new, Set::add, Set::addAll);\n-    }\n-\n-    static <T, S extends Iterable<T>> S filter(S values, Predicate<T> predicate) {\n-        final boolean isSet = Set.class.isAssignableFrom(values.getClass());\n-        return (S) (isSet ? filterSet(values, predicate) : filterList(values, predicate));\n-    }\n-\n-    static <T, S extends Iterable<T>> S filterAll(S values, Predicate<T>... predicates) {\n-        return filter(values, and(predicates));\n-    }\n-\n-    static <T, S extends Iterable<T>> S filterAny(S values, Predicate<T>... predicates) {\n-        return filter(values, or(predicates));\n-    }\n-\n-    static <T> T filterFirst(Iterable<T> values, Predicate<T>... predicates) {\n-        return stream(values.spliterator(), false)\n-                .filter(and(predicates))\n-                .findFirst()\n-                .orElse(null);\n-    }\n-}\n-\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.function;\r\n+\r\n+import java.util.LinkedHashSet;\r\n+import java.util.List;\r\n+import java.util.Set;\r\n+import java.util.function.Predicate;\r\n+import java.util.stream.Stream;\r\n+\r\n+import static java.util.stream.Collectors.toList;\r\n+import static java.util.stream.StreamSupport.stream;\r\n+import static org.apache.dubbo.common.function.Predicates.and;\r\n+import static org.apache.dubbo.common.function.Predicates.or;\r\n+\r\n+/**\r\n+ * The utilities class for {@link Stream}\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public interface Streams {\r\n+\r\n+    static <T, S extends Iterable<T>> Stream<T> filterStream(S values, Predicate<T> predicate) {\r\n+        return stream(values.spliterator(), false).filter(predicate);\r\n+    }\r\n+\r\n+    static <T, S extends Iterable<T>> List<T> filterList(S values, Predicate<T> predicate) {\r\n+        return filterStream(values, predicate).collect(toList());\r\n+    }\r\n+\r\n+    static <T, S extends Iterable<T>> Set<T> filterSet(S values, Predicate<T> predicate) {\r\n+        // new Set with insertion order\r\n+        return filterStream(values, predicate).collect(LinkedHashSet::new, Set::add, Set::addAll);\r\n+    }\r\n+\r\n+    static <T, S extends Iterable<T>> S filter(S values, Predicate<T> predicate) {\r\n+        final boolean isSet = Set.class.isAssignableFrom(values.getClass());\r\n+        return (S) (isSet ? filterSet(values, predicate) : filterList(values, predicate));\r\n+    }\r\n+\r\n+    static <T, S extends Iterable<T>> S filterAll(S values, Predicate<T>... predicates) {\r\n+        return filter(values, and(predicates));\r\n+    }\r\n+\r\n+    static <T, S extends Iterable<T>> S filterAny(S values, Predicate<T>... predicates) {\r\n+        return filter(values, or(predicates));\r\n+    }\r\n+\r\n+    static <T> T filterFirst(Iterable<T> values, Predicate<T>... predicates) {\r\n+        return stream(values.spliterator(), false)\r\n+                .filter(and(predicates))\r\n+                .findFirst()\r\n+                .orElse(null);\r\n+    }\r\n+}\r\n+\r\n+\r\n"}, {"source1": "org/apache/dubbo/common/function/ThrowableAction.java", "source2": "org/apache/dubbo/common/function/ThrowableAction.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,51 +1,51 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.function;\n-\n-import java.util.function.Function;\n-\n-/**\n- * A function interface for action with {@link Throwable}\n- *\n- * @see Function\n- * @see Throwable\n- * @since 2.7.5\n- */\n-@FunctionalInterface\n-public interface ThrowableAction {\n-\n-    /**\n-     * Executes the action\n-     *\n-     * @throws Throwable if met with error\n-     */\n-    void execute() throws Throwable;\n-\n-    /**\n-     * Executes {@link ThrowableAction}\n-     *\n-     * @param action {@link ThrowableAction}\n-     * @throws RuntimeException wrap {@link Exception} to {@link RuntimeException}\n-     */\n-    static void execute(ThrowableAction action) throws RuntimeException {\n-        try {\n-            action.execute();\n-        } catch (Throwable e) {\n-            throw new RuntimeException(e);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.function;\r\n+\r\n+import java.util.function.Function;\r\n+\r\n+/**\r\n+ * A function interface for action with {@link Throwable}\r\n+ *\r\n+ * @see Function\r\n+ * @see Throwable\r\n+ * @since 2.7.5\r\n+ */\r\n+@FunctionalInterface\r\n+public interface ThrowableAction {\r\n+\r\n+    /**\r\n+     * Executes the action\r\n+     *\r\n+     * @throws Throwable if met with error\r\n+     */\r\n+    void execute() throws Throwable;\r\n+\r\n+    /**\r\n+     * Executes {@link ThrowableAction}\r\n+     *\r\n+     * @param action {@link ThrowableAction}\r\n+     * @throws RuntimeException wrap {@link Exception} to {@link RuntimeException}\r\n+     */\r\n+    static void execute(ThrowableAction action) throws RuntimeException {\r\n+        try {\r\n+            action.execute();\r\n+        } catch (Throwable e) {\r\n+            throw new RuntimeException(e);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/function/ThrowableConsumer.java", "source2": "org/apache/dubbo/common/function/ThrowableConsumer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,66 +1,66 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.function;\n-\n-import java.util.function.Consumer;\n-import java.util.function.Function;\n-\n-/**\n- * {@link Consumer} with {@link Throwable}\n- *\n- * @param <T> the source type\n- * @see Function\n- * @see Throwable\n- * @since 2.7.5\n- */\n-@FunctionalInterface\n-public interface ThrowableConsumer<T> {\n-\n-    /**\n-     * Applies this function to the given argument.\n-     *\n-     * @param t the function argument\n-     * @throws Throwable if met with any error\n-     */\n-    void accept(T t) throws Throwable;\n-\n-    /**\n-     * Executes {@link ThrowableConsumer}\n-     *\n-     * @param t the function argument\n-     * @throws RuntimeException wrappers {@link Throwable}\n-     */\n-    default void execute(T t) throws RuntimeException {\n-        try {\n-            accept(t);\n-        } catch (Throwable e) {\n-            throw new RuntimeException(e.getMessage(), e.getCause());\n-        }\n-    }\n-\n-    /**\n-     * Executes {@link ThrowableConsumer}\n-     *\n-     * @param t        the function argument\n-     * @param consumer {@link ThrowableConsumer}\n-     * @param <T>      the source type\n-     * @return the result after execution\n-     */\n-    static <T> void execute(T t, ThrowableConsumer<T> consumer) {\n-        consumer.execute(t);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.function;\r\n+\r\n+import java.util.function.Consumer;\r\n+import java.util.function.Function;\r\n+\r\n+/**\r\n+ * {@link Consumer} with {@link Throwable}\r\n+ *\r\n+ * @param <T> the source type\r\n+ * @see Function\r\n+ * @see Throwable\r\n+ * @since 2.7.5\r\n+ */\r\n+@FunctionalInterface\r\n+public interface ThrowableConsumer<T> {\r\n+\r\n+    /**\r\n+     * Applies this function to the given argument.\r\n+     *\r\n+     * @param t the function argument\r\n+     * @throws Throwable if met with any error\r\n+     */\r\n+    void accept(T t) throws Throwable;\r\n+\r\n+    /**\r\n+     * Executes {@link ThrowableConsumer}\r\n+     *\r\n+     * @param t the function argument\r\n+     * @throws RuntimeException wrappers {@link Throwable}\r\n+     */\r\n+    default void execute(T t) throws RuntimeException {\r\n+        try {\r\n+            accept(t);\r\n+        } catch (Throwable e) {\r\n+            throw new RuntimeException(e.getMessage(), e.getCause());\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Executes {@link ThrowableConsumer}\r\n+     *\r\n+     * @param t        the function argument\r\n+     * @param consumer {@link ThrowableConsumer}\r\n+     * @param <T>      the source type\r\n+     * @return the result after execution\r\n+     */\r\n+    static <T> void execute(T t, ThrowableConsumer<T> consumer) {\r\n+        consumer.execute(t);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/function/ThrowableFunction.java", "source2": "org/apache/dubbo/common/function/ThrowableFunction.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,71 +1,71 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.function;\n-\n-import java.util.function.Function;\n-\n-/**\n- * {@link Function} with {@link Throwable}\n- *\n- * @param <T> the source type\n- * @param <R> the return type\n- * @see Function\n- * @see Throwable\n- * @since 2.7.5\n- */\n-@FunctionalInterface\n-public interface ThrowableFunction<T, R> {\n-\n-    /**\n-     * Applies this function to the given argument.\n-     *\n-     * @param t the function argument\n-     * @return the function result\n-     * @throws Throwable if met with any error\n-     */\n-    R apply(T t) throws Throwable;\n-\n-    /**\n-     * Executes {@link ThrowableFunction}\n-     *\n-     * @param t the function argument\n-     * @return the function result\n-     * @throws RuntimeException wrappers {@link Throwable}\n-     */\n-    default R execute(T t) throws RuntimeException {\n-        R result = null;\n-        try {\n-            result = apply(t);\n-        } catch (Throwable e) {\n-            throw new RuntimeException(e.getCause());\n-        }\n-        return result;\n-    }\n-\n-    /**\n-     * Executes {@link ThrowableFunction}\n-     *\n-     * @param t        the function argument\n-     * @param function {@link ThrowableFunction}\n-     * @param <T>      the source type\n-     * @param <R>      the return type\n-     * @return the result after execution\n-     */\n-    static <T, R> R execute(T t, ThrowableFunction<T, R> function) {\n-        return function.execute(t);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.function;\r\n+\r\n+import java.util.function.Function;\r\n+\r\n+/**\r\n+ * {@link Function} with {@link Throwable}\r\n+ *\r\n+ * @param <T> the source type\r\n+ * @param <R> the return type\r\n+ * @see Function\r\n+ * @see Throwable\r\n+ * @since 2.7.5\r\n+ */\r\n+@FunctionalInterface\r\n+public interface ThrowableFunction<T, R> {\r\n+\r\n+    /**\r\n+     * Applies this function to the given argument.\r\n+     *\r\n+     * @param t the function argument\r\n+     * @return the function result\r\n+     * @throws Throwable if met with any error\r\n+     */\r\n+    R apply(T t) throws Throwable;\r\n+\r\n+    /**\r\n+     * Executes {@link ThrowableFunction}\r\n+     *\r\n+     * @param t the function argument\r\n+     * @return the function result\r\n+     * @throws RuntimeException wrappers {@link Throwable}\r\n+     */\r\n+    default R execute(T t) throws RuntimeException {\r\n+        R result = null;\r\n+        try {\r\n+            result = apply(t);\r\n+        } catch (Throwable e) {\r\n+            throw new RuntimeException(e.getCause());\r\n+        }\r\n+        return result;\r\n+    }\r\n+\r\n+    /**\r\n+     * Executes {@link ThrowableFunction}\r\n+     *\r\n+     * @param t        the function argument\r\n+     * @param function {@link ThrowableFunction}\r\n+     * @param <T>      the source type\r\n+     * @param <R>      the return type\r\n+     * @return the result after execution\r\n+     */\r\n+    static <T, R> R execute(T t, ThrowableFunction<T, R> function) {\r\n+        return function.execute(t);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/infra/InfraAdapter.java", "source2": "org/apache/dubbo/common/infra/InfraAdapter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,46 +1,46 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.infra;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-import java.util.Map;\n-\n-/**\n- * Used to interact with other systems. Typical use cases are:\n- * 1. get extra attributes from underlying infrastructures related to the instance on which Dubbo is currently deploying.\n- * 2. get configurations from third-party systems which maybe useful for a specific component.\n- */\n-\n-@SPI\n-public interface InfraAdapter {\n-\n-    /**\n-     * get extra attributes\n-     *\n-     * @param params application name or hostname are most likely to be used as input params.\n-     * @return\n-     */\n-    Map<String, String> getExtraAttributes(Map<String, String> params);\n-\n-    /**\n-     * @param key\n-     * @return\n-     */\n-    String getAttribute(String key);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.infra;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * Used to interact with other systems. Typical use cases are:\r\n+ * 1. get extra attributes from underlying infrastructures related to the instance on which Dubbo is currently deploying.\r\n+ * 2. get configurations from third-party systems which maybe useful for a specific component.\r\n+ */\r\n+\r\n+@SPI\r\n+public interface InfraAdapter {\r\n+\r\n+    /**\r\n+     * get extra attributes\r\n+     *\r\n+     * @param params application name or hostname are most likely to be used as input params.\r\n+     * @return\r\n+     */\r\n+    Map<String, String> getExtraAttributes(Map<String, String> params);\r\n+\r\n+    /**\r\n+     * @param key\r\n+     * @return\r\n+     */\r\n+    String getAttribute(String key);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/infra/support/CmdbAdapter.java", "source2": "org/apache/dubbo/common/infra/support/CmdbAdapter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,39 +1,39 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.infra.support;\n-\n-import org.apache.dubbo.common.infra.InfraAdapter;\n-\n-import java.util.Collections;\n-import java.util.Map;\n-\n-public class CmdbAdapter implements InfraAdapter {\n-\n-    public CmdbAdapter() {\n-        // init;\n-    }\n-\n-    @Override\n-    public Map<String, String> getExtraAttributes(Map<String, String> params) {\n-        return Collections.emptyMap();\n-    }\n-\n-    @Override\n-    public String getAttribute(String key) {\n-        return \"\";\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.infra.support;\r\n+\r\n+import org.apache.dubbo.common.infra.InfraAdapter;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.Map;\r\n+\r\n+public class CmdbAdapter implements InfraAdapter {\r\n+\r\n+    public CmdbAdapter() {\r\n+        // init;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Map<String, String> getExtraAttributes(Map<String, String> params) {\r\n+        return Collections.emptyMap();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getAttribute(String key) {\r\n+        return \"\";\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/infra/support/EnvironmentAdapter.java", "source2": "org/apache/dubbo/common/infra/support/EnvironmentAdapter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,72 +1,72 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.infra.support;\n-\n-import org.apache.dubbo.common.config.ConfigurationUtils;\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.infra.InfraAdapter;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_ENV_KEYS;\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_LABELS;\n-import static org.apache.dubbo.common.constants.CommonConstants.EQUAL_SPLIT_PATTERN;\n-import static org.apache.dubbo.common.constants.CommonConstants.SEMICOLON_SPLIT_PATTERN;\n-\n-@Activate\n-public class EnvironmentAdapter implements InfraAdapter {\n-\n-    /**\n-     * 1. OS Environment: DUBBO_LABELS=tag=pre;key=value\n-     * 2. JVM Options: -Denv_keys = DUBBO_KEY1, DUBBO_KEY2\n-     */\n-    @Override\n-    public Map<String, String> getExtraAttributes(Map<String, String> params) {\n-        Map<String, String> parameters = new HashMap<>();\n-\n-        String rawLabels = ConfigurationUtils.getProperty(DUBBO_LABELS);\n-        if (StringUtils.isNotEmpty(rawLabels)) {\n-            String[] labelPairs = SEMICOLON_SPLIT_PATTERN.split(rawLabels);\n-            for (String pair : labelPairs) {\n-                String[] label = EQUAL_SPLIT_PATTERN.split(pair);\n-                if (label.length == 2) {\n-                    parameters.put(label[0], label[1]);\n-                }\n-            }\n-        }\n-\n-        String rawKeys = ConfigurationUtils.getProperty(DUBBO_ENV_KEYS);\n-        if (StringUtils.isNotEmpty(rawKeys)) {\n-            String[] keys = COMMA_SPLIT_PATTERN.split(rawKeys);\n-            for (String key : keys) {\n-                String value = ConfigurationUtils.getProperty(key);\n-                if (value != null) {\n-                    parameters.put(key, value);\n-                }\n-            }\n-        }\n-        return parameters;\n-    }\n-\n-    @Override\n-    public String getAttribute(String key) {\n-        return ConfigurationUtils.getProperty(key);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.infra.support;\r\n+\r\n+import org.apache.dubbo.common.config.ConfigurationUtils;\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.infra.InfraAdapter;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_ENV_KEYS;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_LABELS;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.EQUAL_SPLIT_PATTERN;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SEMICOLON_SPLIT_PATTERN;\r\n+\r\n+@Activate\r\n+public class EnvironmentAdapter implements InfraAdapter {\r\n+\r\n+    /**\r\n+     * 1. OS Environment: DUBBO_LABELS=tag=pre;key=value\r\n+     * 2. JVM Options: -Denv_keys = DUBBO_KEY1, DUBBO_KEY2\r\n+     */\r\n+    @Override\r\n+    public Map<String, String> getExtraAttributes(Map<String, String> params) {\r\n+        Map<String, String> parameters = new HashMap<>();\r\n+\r\n+        String rawLabels = ConfigurationUtils.getProperty(DUBBO_LABELS);\r\n+        if (StringUtils.isNotEmpty(rawLabels)) {\r\n+            String[] labelPairs = SEMICOLON_SPLIT_PATTERN.split(rawLabels);\r\n+            for (String pair : labelPairs) {\r\n+                String[] label = EQUAL_SPLIT_PATTERN.split(pair);\r\n+                if (label.length == 2) {\r\n+                    parameters.put(label[0], label[1]);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        String rawKeys = ConfigurationUtils.getProperty(DUBBO_ENV_KEYS);\r\n+        if (StringUtils.isNotEmpty(rawKeys)) {\r\n+            String[] keys = COMMA_SPLIT_PATTERN.split(rawKeys);\r\n+            for (String key : keys) {\r\n+                String value = ConfigurationUtils.getProperty(key);\r\n+                if (value != null) {\r\n+                    parameters.put(key, value);\r\n+                }\r\n+            }\r\n+        }\r\n+        return parameters;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getAttribute(String key) {\r\n+        return ConfigurationUtils.getProperty(key);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/io/Bytes.java", "source2": "org/apache/dubbo/common/io/Bytes.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,936 +1,936 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.io;\n-\n-import org.apache.dubbo.common.utils.IOUtils;\n-\n-import java.io.File;\n-import java.io.FileInputStream;\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-import java.security.MessageDigest;\n-import java.security.NoSuchAlgorithmException;\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.zip.DeflaterOutputStream;\n-import java.util.zip.InflaterInputStream;\n-\n-/**\n- * CodecUtils.\n- */\n-\n-public class Bytes {\n-    private static final String C64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"; //default base64.\n-\n-    private static final char[] BASE16 = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}, BASE64 = C64.toCharArray();\n-\n-    private static final int MASK4 = 0x0f, MASK6 = 0x3f, MASK8 = 0xff;\n-\n-    private static final Map<Integer, byte[]> DECODE_TABLE_MAP = new ConcurrentHashMap<Integer, byte[]>();\n-\n-    private static ThreadLocal<MessageDigest> MD = new ThreadLocal<MessageDigest>();\n-\n-    private Bytes() {\n-    }\n-\n-    /**\n-     * byte array copy.\n-     *\n-     * @param src    src.\n-     * @param length new length.\n-     * @return new byte array.\n-     */\n-    public static byte[] copyOf(byte[] src, int length) {\n-        byte[] dest = new byte[length];\n-        System.arraycopy(src, 0, dest, 0, Math.min(src.length, length));\n-        return dest;\n-    }\n-\n-    /**\n-     * to byte array.\n-     *\n-     * @param v value.\n-     * @return byte[].\n-     */\n-    public static byte[] short2bytes(short v) {\n-        byte[] ret = {0, 0};\n-        short2bytes(v, ret);\n-        return ret;\n-    }\n-\n-    /**\n-     * to byte array.\n-     *\n-     * @param v value.\n-     * @param b byte array.\n-     */\n-    public static void short2bytes(short v, byte[] b) {\n-        short2bytes(v, b, 0);\n-    }\n-\n-    /**\n-     * to byte array.\n-     *\n-     * @param v value.\n-     * @param b byte array.\n-     */\n-    public static void short2bytes(short v, byte[] b, int off) {\n-        b[off + 1] = (byte) v;\n-        b[off + 0] = (byte) (v >>> 8);\n-    }\n-\n-    /**\n-     * to byte array.\n-     *\n-     * @param v value.\n-     * @return byte[].\n-     */\n-    public static byte[] int2bytes(int v) {\n-        byte[] ret = {0, 0, 0, 0};\n-        int2bytes(v, ret);\n-        return ret;\n-    }\n-\n-    /**\n-     * to byte array.\n-     *\n-     * @param v value.\n-     * @param b byte array.\n-     */\n-    public static void int2bytes(int v, byte[] b) {\n-        int2bytes(v, b, 0);\n-    }\n-\n-    /**\n-     * to byte array.\n-     *\n-     * @param v   value.\n-     * @param b   byte array.\n-     * @param off array offset.\n-     */\n-    public static void int2bytes(int v, byte[] b, int off) {\n-        b[off + 3] = (byte) v;\n-        b[off + 2] = (byte) (v >>> 8);\n-        b[off + 1] = (byte) (v >>> 16);\n-        b[off + 0] = (byte) (v >>> 24);\n-    }\n-\n-    /**\n-     * to byte array.\n-     *\n-     * @param v value.\n-     * @return byte[].\n-     */\n-    public static byte[] float2bytes(float v) {\n-        byte[] ret = {0, 0, 0, 0};\n-        float2bytes(v, ret);\n-        return ret;\n-    }\n-\n-    /**\n-     * to byte array.\n-     *\n-     * @param v value.\n-     * @param b byte array.\n-     */\n-    public static void float2bytes(float v, byte[] b) {\n-        float2bytes(v, b, 0);\n-    }\n-\n-    /**\n-     * to byte array.\n-     *\n-     * @param v   value.\n-     * @param b   byte array.\n-     * @param off array offset.\n-     */\n-    public static void float2bytes(float v, byte[] b, int off) {\n-        int i = Float.floatToIntBits(v);\n-        b[off + 3] = (byte) i;\n-        b[off + 2] = (byte) (i >>> 8);\n-        b[off + 1] = (byte) (i >>> 16);\n-        b[off + 0] = (byte) (i >>> 24);\n-    }\n-\n-    /**\n-     * to byte array.\n-     *\n-     * @param v value.\n-     * @return byte[].\n-     */\n-    public static byte[] long2bytes(long v) {\n-        byte[] ret = {0, 0, 0, 0, 0, 0, 0, 0};\n-        long2bytes(v, ret);\n-        return ret;\n-    }\n-\n-    /**\n-     * to byte array.\n-     *\n-     * @param v value.\n-     * @param b byte array.\n-     */\n-    public static void long2bytes(long v, byte[] b) {\n-        long2bytes(v, b, 0);\n-    }\n-\n-    /**\n-     * to byte array.\n-     *\n-     * @param v   value.\n-     * @param b   byte array.\n-     * @param off array offset.\n-     */\n-    public static void long2bytes(long v, byte[] b, int off) {\n-        b[off + 7] = (byte) v;\n-        b[off + 6] = (byte) (v >>> 8);\n-        b[off + 5] = (byte) (v >>> 16);\n-        b[off + 4] = (byte) (v >>> 24);\n-        b[off + 3] = (byte) (v >>> 32);\n-        b[off + 2] = (byte) (v >>> 40);\n-        b[off + 1] = (byte) (v >>> 48);\n-        b[off + 0] = (byte) (v >>> 56);\n-    }\n-\n-    /**\n-     * to byte array.\n-     *\n-     * @param v value.\n-     * @return byte[].\n-     */\n-    public static byte[] double2bytes(double v) {\n-        byte[] ret = {0, 0, 0, 0, 0, 0, 0, 0};\n-        double2bytes(v, ret);\n-        return ret;\n-    }\n-\n-    /**\n-     * to byte array.\n-     *\n-     * @param v value.\n-     * @param b byte array.\n-     */\n-    public static void double2bytes(double v, byte[] b) {\n-        double2bytes(v, b, 0);\n-    }\n-\n-    /**\n-     * to byte array.\n-     *\n-     * @param v   value.\n-     * @param b   byte array.\n-     * @param off array offset.\n-     */\n-    public static void double2bytes(double v, byte[] b, int off) {\n-        long j = Double.doubleToLongBits(v);\n-        b[off + 7] = (byte) j;\n-        b[off + 6] = (byte) (j >>> 8);\n-        b[off + 5] = (byte) (j >>> 16);\n-        b[off + 4] = (byte) (j >>> 24);\n-        b[off + 3] = (byte) (j >>> 32);\n-        b[off + 2] = (byte) (j >>> 40);\n-        b[off + 1] = (byte) (j >>> 48);\n-        b[off + 0] = (byte) (j >>> 56);\n-    }\n-\n-    /**\n-     * to short.\n-     *\n-     * @param b byte array.\n-     * @return short.\n-     */\n-    public static short bytes2short(byte[] b) {\n-        return bytes2short(b, 0);\n-    }\n-\n-    /**\n-     * to short.\n-     *\n-     * @param b   byte array.\n-     * @param off offset.\n-     * @return short.\n-     */\n-    public static short bytes2short(byte[] b, int off) {\n-        return (short) (((b[off + 1] & 0xFF) << 0) +\n-                ((b[off + 0]) << 8));\n-    }\n-\n-    /**\n-     * to int.\n-     *\n-     * @param b byte array.\n-     * @return int.\n-     */\n-    public static int bytes2int(byte[] b) {\n-        return bytes2int(b, 0);\n-    }\n-\n-    /**\n-     * to int.\n-     *\n-     * @param b   byte array.\n-     * @param off offset.\n-     * @return int.\n-     */\n-    public static int bytes2int(byte[] b, int off) {\n-        return ((b[off + 3] & 0xFF) << 0) +\n-                ((b[off + 2] & 0xFF) << 8) +\n-                ((b[off + 1] & 0xFF) << 16) +\n-                ((b[off + 0]) << 24);\n-    }\n-\n-    /**\n-     * to int.\n-     *\n-     * @param b byte array.\n-     * @return int.\n-     */\n-    public static float bytes2float(byte[] b) {\n-        return bytes2float(b, 0);\n-    }\n-\n-    /**\n-     * to int.\n-     *\n-     * @param b   byte array.\n-     * @param off offset.\n-     * @return int.\n-     */\n-    public static float bytes2float(byte[] b, int off) {\n-        int i = ((b[off + 3] & 0xFF) << 0) +\n-                ((b[off + 2] & 0xFF) << 8) +\n-                ((b[off + 1] & 0xFF) << 16) +\n-                ((b[off + 0]) << 24);\n-        return Float.intBitsToFloat(i);\n-    }\n-\n-    /**\n-     * to long.\n-     *\n-     * @param b byte array.\n-     * @return long.\n-     */\n-    public static long bytes2long(byte[] b) {\n-        return bytes2long(b, 0);\n-    }\n-\n-    /**\n-     * to long.\n-     *\n-     * @param b   byte array.\n-     * @param off offset.\n-     * @return long.\n-     */\n-    public static long bytes2long(byte[] b, int off) {\n-        return ((b[off + 7] & 0xFFL) << 0) +\n-                ((b[off + 6] & 0xFFL) << 8) +\n-                ((b[off + 5] & 0xFFL) << 16) +\n-                ((b[off + 4] & 0xFFL) << 24) +\n-                ((b[off + 3] & 0xFFL) << 32) +\n-                ((b[off + 2] & 0xFFL) << 40) +\n-                ((b[off + 1] & 0xFFL) << 48) +\n-                (((long) b[off + 0]) << 56);\n-    }\n-\n-    /**\n-     * to long.\n-     *\n-     * @param b byte array.\n-     * @return double.\n-     */\n-    public static double bytes2double(byte[] b) {\n-        return bytes2double(b, 0);\n-    }\n-\n-    /**\n-     * to long.\n-     *\n-     * @param b   byte array.\n-     * @param off offset.\n-     * @return double.\n-     */\n-    public static double bytes2double(byte[] b, int off) {\n-        long j = ((b[off + 7] & 0xFFL) << 0) +\n-                ((b[off + 6] & 0xFFL) << 8) +\n-                ((b[off + 5] & 0xFFL) << 16) +\n-                ((b[off + 4] & 0xFFL) << 24) +\n-                ((b[off + 3] & 0xFFL) << 32) +\n-                ((b[off + 2] & 0xFFL) << 40) +\n-                ((b[off + 1] & 0xFFL) << 48) +\n-                (((long) b[off + 0]) << 56);\n-        return Double.longBitsToDouble(j);\n-    }\n-\n-    /**\n-     * to hex string.\n-     *\n-     * @param bs byte array.\n-     * @return hex string.\n-     */\n-    public static String bytes2hex(byte[] bs) {\n-        return bytes2hex(bs, 0, bs.length);\n-    }\n-\n-    /**\n-     * to hex string.\n-     *\n-     * @param bs  byte array.\n-     * @param off offset.\n-     * @param len length.\n-     * @return hex string.\n-     */\n-    public static String bytes2hex(byte[] bs, int off, int len) {\n-        if (off < 0) {\n-            throw new IndexOutOfBoundsException(\"bytes2hex: offset < 0, offset is \" + off);\n-        }\n-        if (len < 0) {\n-            throw new IndexOutOfBoundsException(\"bytes2hex: length < 0, length is \" + len);\n-        }\n-        if (off + len > bs.length) {\n-            throw new IndexOutOfBoundsException(\"bytes2hex: offset + length > array length.\");\n-        }\n-\n-        byte b;\n-        int r = off, w = 0;\n-        char[] cs = new char[len * 2];\n-        for (int i = 0; i < len; i++) {\n-            b = bs[r++];\n-            cs[w++] = BASE16[b >> 4 & MASK4];\n-            cs[w++] = BASE16[b & MASK4];\n-        }\n-        return new String(cs);\n-    }\n-\n-    /**\n-     * from hex string.\n-     *\n-     * @param str hex string.\n-     * @return byte array.\n-     */\n-    public static byte[] hex2bytes(String str) {\n-        return hex2bytes(str, 0, str.length());\n-    }\n-\n-    /**\n-     * from hex string.\n-     *\n-     * @param str hex string.\n-     * @param off offset.\n-     * @param len length.\n-     * @return byte array.\n-     */\n-    public static byte[] hex2bytes(final String str, final int off, int len) {\n-        if ((len & 1) == 1) {\n-            throw new IllegalArgumentException(\"hex2bytes: ( len & 1 ) == 1.\");\n-        }\n-\n-        if (off < 0) {\n-            throw new IndexOutOfBoundsException(\"hex2bytes: offset < 0, offset is \" + off);\n-        }\n-        if (len < 0) {\n-            throw new IndexOutOfBoundsException(\"hex2bytes: length < 0, length is \" + len);\n-        }\n-        if (off + len > str.length()) {\n-            throw new IndexOutOfBoundsException(\"hex2bytes: offset + length > array length.\");\n-        }\n-\n-        int num = len / 2, r = off, w = 0;\n-        byte[] b = new byte[num];\n-        for (int i = 0; i < num; i++) {\n-            b[w++] = (byte) (hex(str.charAt(r++)) << 4 | hex(str.charAt(r++)));\n-        }\n-        return b;\n-    }\n-\n-    /**\n-     * to base64 string.\n-     *\n-     * @param b byte array.\n-     * @return base64 string.\n-     */\n-    public static String bytes2base64(byte[] b) {\n-        return bytes2base64(b, 0, b.length, BASE64);\n-    }\n-\n-    /**\n-     * to base64 string.\n-     *\n-     * @param b byte array.\n-     * @return base64 string.\n-     */\n-    public static String bytes2base64(byte[] b, int offset, int length) {\n-        return bytes2base64(b, offset, length, BASE64);\n-    }\n-\n-    /**\n-     * to base64 string.\n-     *\n-     * @param b    byte array.\n-     * @param code base64 code string(0-63 is base64 char,64 is pad char).\n-     * @return base64 string.\n-     */\n-    public static String bytes2base64(byte[] b, String code) {\n-        return bytes2base64(b, 0, b.length, code);\n-    }\n-\n-    /**\n-     * to base64 string.\n-     *\n-     * @param b    byte array.\n-     * @param code base64 code string(0-63 is base64 char,64 is pad char).\n-     * @return base64 string.\n-     */\n-    public static String bytes2base64(byte[] b, int offset, int length, String code) {\n-        if (code.length() < 64) {\n-            throw new IllegalArgumentException(\"Base64 code length < 64.\");\n-        }\n-\n-        return bytes2base64(b, offset, length, code.toCharArray());\n-    }\n-\n-    /**\n-     * to base64 string.\n-     *\n-     * @param b    byte array.\n-     * @param code base64 code(0-63 is base64 char,64 is pad char).\n-     * @return base64 string.\n-     */\n-    public static String bytes2base64(byte[] b, char[] code) {\n-        return bytes2base64(b, 0, b.length, code);\n-    }\n-\n-    /**\n-     * to base64 string.\n-     *\n-     * @param bs   byte array.\n-     * @param off  offset.\n-     * @param len  length.\n-     * @param code base64 code(0-63 is base64 char,64 is pad char).\n-     * @return base64 string.\n-     */\n-    public static String bytes2base64(final byte[] bs, final int off, final int len, final char[] code) {\n-        if (off < 0) {\n-            throw new IndexOutOfBoundsException(\"bytes2base64: offset < 0, offset is \" + off);\n-        }\n-        if (len < 0) {\n-            throw new IndexOutOfBoundsException(\"bytes2base64: length < 0, length is \" + len);\n-        }\n-        if (off + len > bs.length) {\n-            throw new IndexOutOfBoundsException(\"bytes2base64: offset + length > array length.\");\n-        }\n-\n-        if (code.length < 64) {\n-            throw new IllegalArgumentException(\"Base64 code length < 64.\");\n-        }\n-\n-        boolean pad = code.length > 64; // has pad char.\n-        int num = len / 3, rem = len % 3, r = off, w = 0;\n-        char[] cs = new char[num * 4 + (rem == 0 ? 0 : pad ? 4 : rem + 1)];\n-\n-        for (int i = 0; i < num; i++) {\n-            int b1 = bs[r++] & MASK8, b2 = bs[r++] & MASK8, b3 = bs[r++] & MASK8;\n-\n-            cs[w++] = code[b1 >> 2];\n-            cs[w++] = code[(b1 << 4) & MASK6 | (b2 >> 4)];\n-            cs[w++] = code[(b2 << 2) & MASK6 | (b3 >> 6)];\n-            cs[w++] = code[b3 & MASK6];\n-        }\n-\n-        if (rem == 1) {\n-            int b1 = bs[r++] & MASK8;\n-            cs[w++] = code[b1 >> 2];\n-            cs[w++] = code[(b1 << 4) & MASK6];\n-            if (pad) {\n-                cs[w++] = code[64];\n-                cs[w++] = code[64];\n-            }\n-        } else if (rem == 2) {\n-            int b1 = bs[r++] & MASK8, b2 = bs[r++] & MASK8;\n-            cs[w++] = code[b1 >> 2];\n-            cs[w++] = code[(b1 << 4) & MASK6 | (b2 >> 4)];\n-            cs[w++] = code[(b2 << 2) & MASK6];\n-            if (pad) {\n-                cs[w++] = code[64];\n-            }\n-        }\n-        return new String(cs);\n-    }\n-\n-    /**\n-     * from base64 string.\n-     *\n-     * @param str base64 string.\n-     * @return byte array.\n-     */\n-    public static byte[] base642bytes(String str) {\n-        return base642bytes(str, 0, str.length());\n-    }\n-\n-    /**\n-     * from base64 string.\n-     *\n-     * @param str    base64 string.\n-     * @param offset offset.\n-     * @param length length.\n-     * @return byte array.\n-     */\n-    public static byte[] base642bytes(String str, int offset, int length) {\n-        return base642bytes(str, offset, length, C64);\n-    }\n-\n-    /**\n-     * from base64 string.\n-     *\n-     * @param str  base64 string.\n-     * @param code base64 code(0-63 is base64 char,64 is pad char).\n-     * @return byte array.\n-     */\n-    public static byte[] base642bytes(String str, String code) {\n-        return base642bytes(str, 0, str.length(), code);\n-    }\n-\n-    /**\n-     * from base64 string.\n-     *\n-     * @param str  base64 string.\n-     * @param off  offset.\n-     * @param len  length.\n-     * @param code base64 code(0-63 is base64 char,64 is pad char).\n-     * @return byte array.\n-     */\n-    public static byte[] base642bytes(final String str, final int off, final int len, final String code) {\n-        if (off < 0) {\n-            throw new IndexOutOfBoundsException(\"base642bytes: offset < 0, offset is \" + off);\n-        }\n-        if (len < 0) {\n-            throw new IndexOutOfBoundsException(\"base642bytes: length < 0, length is \" + len);\n-        }\n-        if (len == 0) {\n-            return new byte[0];\n-        }\n-        if (off + len > str.length()) {\n-            throw new IndexOutOfBoundsException(\"base642bytes: offset + length > string length.\");\n-        }\n-\n-        if (code.length() < 64) {\n-            throw new IllegalArgumentException(\"Base64 code length < 64.\");\n-        }\n-\n-        int rem = len % 4;\n-        if (rem == 1) {\n-            throw new IllegalArgumentException(\"base642bytes: base64 string length % 4 == 1.\");\n-        }\n-\n-        int num = len / 4, size = num * 3;\n-        if (code.length() > 64) {\n-            if (rem != 0) {\n-                throw new IllegalArgumentException(\"base642bytes: base64 string length error.\");\n-            }\n-\n-            char pc = code.charAt(64);\n-            if (str.charAt(off + len - 2) == pc) {\n-                size -= 2;\n-                --num;\n-                rem = 2;\n-            } else if (str.charAt(off + len - 1) == pc) {\n-                size--;\n-                --num;\n-                rem = 3;\n-            }\n-        } else {\n-            if (rem == 2) {\n-                size++;\n-            } else if (rem == 3) {\n-                size += 2;\n-            }\n-        }\n-\n-        int r = off, w = 0;\n-        byte[] b = new byte[size], t = decodeTable(code);\n-        for (int i = 0; i < num; i++) {\n-            int c1 = t[str.charAt(r++)], c2 = t[str.charAt(r++)];\n-            int c3 = t[str.charAt(r++)], c4 = t[str.charAt(r++)];\n-\n-            b[w++] = (byte) ((c1 << 2) | (c2 >> 4));\n-            b[w++] = (byte) ((c2 << 4) | (c3 >> 2));\n-            b[w++] = (byte) ((c3 << 6) | c4);\n-        }\n-\n-        if (rem == 2) {\n-            int c1 = t[str.charAt(r++)], c2 = t[str.charAt(r++)];\n-\n-            b[w++] = (byte) ((c1 << 2) | (c2 >> 4));\n-        } else if (rem == 3) {\n-            int c1 = t[str.charAt(r++)], c2 = t[str.charAt(r++)], c3 = t[str.charAt(r++)];\n-\n-            b[w++] = (byte) ((c1 << 2) | (c2 >> 4));\n-            b[w++] = (byte) ((c2 << 4) | (c3 >> 2));\n-        }\n-        return b;\n-    }\n-\n-    /**\n-     * from base64 string.\n-     *\n-     * @param str  base64 string.\n-     * @param code base64 code(0-63 is base64 char,64 is pad char).\n-     * @return byte array.\n-     */\n-    public static byte[] base642bytes(String str, char[] code) {\n-        return base642bytes(str, 0, str.length(), code);\n-    }\n-\n-    /**\n-     * from base64 string.\n-     *\n-     * @param str  base64 string.\n-     * @param off  offset.\n-     * @param len  length.\n-     * @param code base64 code(0-63 is base64 char,64 is pad char).\n-     * @return byte array.\n-     */\n-    public static byte[] base642bytes(final String str, final int off, final int len, final char[] code) {\n-        if (off < 0) {\n-            throw new IndexOutOfBoundsException(\"base642bytes: offset < 0, offset is \" + off);\n-        }\n-        if (len < 0) {\n-            throw new IndexOutOfBoundsException(\"base642bytes: length < 0, length is \" + len);\n-        }\n-        if (len == 0) {\n-            return new byte[0];\n-        }\n-        if (off + len > str.length()) {\n-            throw new IndexOutOfBoundsException(\"base642bytes: offset + length > string length.\");\n-        }\n-\n-        if (code.length < 64) {\n-            throw new IllegalArgumentException(\"Base64 code length < 64.\");\n-        }\n-\n-        int rem = len % 4;\n-        if (rem == 1) {\n-            throw new IllegalArgumentException(\"base642bytes: base64 string length % 4 == 1.\");\n-        }\n-\n-        int num = len / 4, size = num * 3;\n-        if (code.length > 64) {\n-            if (rem != 0) {\n-                throw new IllegalArgumentException(\"base642bytes: base64 string length error.\");\n-            }\n-\n-            char pc = code[64];\n-            if (str.charAt(off + len - 2) == pc) {\n-                size -= 2;\n-                --num;\n-                rem = 2;\n-            } else if (str.charAt(off + len - 1) == pc) {\n-                size--;\n-                --num;\n-                rem = 3;\n-            }\n-        } else {\n-            if (rem == 2) {\n-                size++;\n-            } else if (rem == 3) {\n-                size += 2;\n-            }\n-        }\n-\n-        int r = off, w = 0;\n-        byte[] b = new byte[size];\n-        for (int i = 0; i < num; i++) {\n-            int c1 = indexOf(code, str.charAt(r++)), c2 = indexOf(code, str.charAt(r++));\n-            int c3 = indexOf(code, str.charAt(r++)), c4 = indexOf(code, str.charAt(r++));\n-\n-            b[w++] = (byte) ((c1 << 2) | (c2 >> 4));\n-            b[w++] = (byte) ((c2 << 4) | (c3 >> 2));\n-            b[w++] = (byte) ((c3 << 6) | c4);\n-        }\n-\n-        if (rem == 2) {\n-            int c1 = indexOf(code, str.charAt(r++)), c2 = indexOf(code, str.charAt(r++));\n-\n-            b[w++] = (byte) ((c1 << 2) | (c2 >> 4));\n-        } else if (rem == 3) {\n-            int c1 = indexOf(code, str.charAt(r++)), c2 = indexOf(code, str.charAt(r++)), c3 = indexOf(code, str.charAt(r++));\n-\n-            b[w++] = (byte) ((c1 << 2) | (c2 >> 4));\n-            b[w++] = (byte) ((c2 << 4) | (c3 >> 2));\n-        }\n-        return b;\n-    }\n-\n-    /**\n-     * zip.\n-     *\n-     * @param bytes source.\n-     * @return compressed byte array.\n-     * @throws IOException\n-     */\n-    public static byte[] zip(byte[] bytes) throws IOException {\n-        UnsafeByteArrayOutputStream bos = new UnsafeByteArrayOutputStream();\n-        OutputStream os = new DeflaterOutputStream(bos);\n-        try {\n-            os.write(bytes);\n-        } finally {\n-            os.close();\n-            bos.close();\n-        }\n-        return bos.toByteArray();\n-    }\n-\n-    /**\n-     * unzip.\n-     *\n-     * @param bytes compressed byte array.\n-     * @return byte uncompressed array.\n-     * @throws IOException\n-     */\n-    public static byte[] unzip(byte[] bytes) throws IOException {\n-        UnsafeByteArrayInputStream bis = new UnsafeByteArrayInputStream(bytes);\n-        UnsafeByteArrayOutputStream bos = new UnsafeByteArrayOutputStream();\n-        InputStream is = new InflaterInputStream(bis);\n-        try {\n-            IOUtils.write(is, bos);\n-            return bos.toByteArray();\n-        } finally {\n-            is.close();\n-            bis.close();\n-            bos.close();\n-        }\n-    }\n-\n-    /**\n-     * get md5.\n-     *\n-     * @param str input string.\n-     * @return MD5 byte array.\n-     */\n-    public static byte[] getMD5(String str) {\n-        return getMD5(str.getBytes());\n-    }\n-\n-    /**\n-     * get md5.\n-     *\n-     * @param source byte array source.\n-     * @return MD5 byte array.\n-     */\n-    public static byte[] getMD5(byte[] source) {\n-        MessageDigest md = getMessageDigest();\n-        return md.digest(source);\n-    }\n-\n-    /**\n-     * get md5.\n-     *\n-     * @param file file source.\n-     * @return MD5 byte array.\n-     */\n-    public static byte[] getMD5(File file) throws IOException {\n-        InputStream is = new FileInputStream(file);\n-        try {\n-            return getMD5(is);\n-        } finally {\n-            is.close();\n-        }\n-    }\n-\n-    /**\n-     * get md5.\n-     *\n-     * @param is input stream.\n-     * @return MD5 byte array.\n-     */\n-    public static byte[] getMD5(InputStream is) throws IOException {\n-        return getMD5(is, 1024 * 8);\n-    }\n-\n-    private static byte hex(char c) {\n-        if (c <= '9') {\n-            return (byte) (c - '0');\n-        }\n-        if (c >= 'a' && c <= 'f') {\n-            return (byte) (c - 'a' + 10);\n-        }\n-        if (c >= 'A' && c <= 'F') {\n-            return (byte) (c - 'A' + 10);\n-        }\n-        throw new IllegalArgumentException(\"hex string format error [\" + c + \"].\");\n-    }\n-\n-    private static int indexOf(char[] cs, char c) {\n-        for (int i = 0, len = cs.length; i < len; i++) {\n-            if (cs[i] == c) {\n-                return i;\n-            }\n-        }\n-        return -1;\n-    }\n-\n-    private static byte[] decodeTable(String code) {\n-        int hash = code.hashCode();\n-        byte[] ret = DECODE_TABLE_MAP.get(hash);\n-        if (ret == null) {\n-            if (code.length() < 64) {\n-                throw new IllegalArgumentException(\"Base64 code length < 64.\");\n-            }\n-            // create new decode table.\n-            ret = new byte[128];\n-            for (int i = 0; i < 128; i++) // init table.\n-            {\n-                ret[i] = -1;\n-            }\n-            for (int i = 0; i < 64; i++) {\n-                ret[code.charAt(i)] = (byte) i;\n-            }\n-            DECODE_TABLE_MAP.put(hash, ret);\n-        }\n-        return ret;\n-    }\n-\n-    private static byte[] getMD5(InputStream is, int bs) throws IOException {\n-        MessageDigest md = getMessageDigest();\n-        byte[] buf = new byte[bs];\n-        while (is.available() > 0) {\n-            int read, total = 0;\n-            do {\n-                if ((read = is.read(buf, total, bs - total)) <= 0) {\n-                    break;\n-                }\n-                total += read;\n-            }\n-            while (total < bs);\n-            md.update(buf);\n-        }\n-        return md.digest();\n-    }\n-\n-    private static MessageDigest getMessageDigest() {\n-        MessageDigest ret = MD.get();\n-        if (ret == null) {\n-            try {\n-                ret = MessageDigest.getInstance(\"MD5\");\n-                MD.set(ret);\n-            } catch (NoSuchAlgorithmException e) {\n-                throw new RuntimeException(e);\n-            }\n-        }\n-        return ret;\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.io;\r\n+\r\n+import org.apache.dubbo.common.utils.IOUtils;\r\n+\r\n+import java.io.File;\r\n+import java.io.FileInputStream;\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+import java.security.MessageDigest;\r\n+import java.security.NoSuchAlgorithmException;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.zip.DeflaterOutputStream;\r\n+import java.util.zip.InflaterInputStream;\r\n+\r\n+/**\r\n+ * CodecUtils.\r\n+ */\r\n+\r\n+public class Bytes {\r\n+    private static final String C64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"; //default base64.\r\n+\r\n+    private static final char[] BASE16 = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}, BASE64 = C64.toCharArray();\r\n+\r\n+    private static final int MASK4 = 0x0f, MASK6 = 0x3f, MASK8 = 0xff;\r\n+\r\n+    private static final Map<Integer, byte[]> DECODE_TABLE_MAP = new ConcurrentHashMap<Integer, byte[]>();\r\n+\r\n+    private static ThreadLocal<MessageDigest> MD = new ThreadLocal<MessageDigest>();\r\n+\r\n+    private Bytes() {\r\n+    }\r\n+\r\n+    /**\r\n+     * byte array copy.\r\n+     *\r\n+     * @param src    src.\r\n+     * @param length new length.\r\n+     * @return new byte array.\r\n+     */\r\n+    public static byte[] copyOf(byte[] src, int length) {\r\n+        byte[] dest = new byte[length];\r\n+        System.arraycopy(src, 0, dest, 0, Math.min(src.length, length));\r\n+        return dest;\r\n+    }\r\n+\r\n+    /**\r\n+     * to byte array.\r\n+     *\r\n+     * @param v value.\r\n+     * @return byte[].\r\n+     */\r\n+    public static byte[] short2bytes(short v) {\r\n+        byte[] ret = {0, 0};\r\n+        short2bytes(v, ret);\r\n+        return ret;\r\n+    }\r\n+\r\n+    /**\r\n+     * to byte array.\r\n+     *\r\n+     * @param v value.\r\n+     * @param b byte array.\r\n+     */\r\n+    public static void short2bytes(short v, byte[] b) {\r\n+        short2bytes(v, b, 0);\r\n+    }\r\n+\r\n+    /**\r\n+     * to byte array.\r\n+     *\r\n+     * @param v value.\r\n+     * @param b byte array.\r\n+     */\r\n+    public static void short2bytes(short v, byte[] b, int off) {\r\n+        b[off + 1] = (byte) v;\r\n+        b[off + 0] = (byte) (v >>> 8);\r\n+    }\r\n+\r\n+    /**\r\n+     * to byte array.\r\n+     *\r\n+     * @param v value.\r\n+     * @return byte[].\r\n+     */\r\n+    public static byte[] int2bytes(int v) {\r\n+        byte[] ret = {0, 0, 0, 0};\r\n+        int2bytes(v, ret);\r\n+        return ret;\r\n+    }\r\n+\r\n+    /**\r\n+     * to byte array.\r\n+     *\r\n+     * @param v value.\r\n+     * @param b byte array.\r\n+     */\r\n+    public static void int2bytes(int v, byte[] b) {\r\n+        int2bytes(v, b, 0);\r\n+    }\r\n+\r\n+    /**\r\n+     * to byte array.\r\n+     *\r\n+     * @param v   value.\r\n+     * @param b   byte array.\r\n+     * @param off array offset.\r\n+     */\r\n+    public static void int2bytes(int v, byte[] b, int off) {\r\n+        b[off + 3] = (byte) v;\r\n+        b[off + 2] = (byte) (v >>> 8);\r\n+        b[off + 1] = (byte) (v >>> 16);\r\n+        b[off + 0] = (byte) (v >>> 24);\r\n+    }\r\n+\r\n+    /**\r\n+     * to byte array.\r\n+     *\r\n+     * @param v value.\r\n+     * @return byte[].\r\n+     */\r\n+    public static byte[] float2bytes(float v) {\r\n+        byte[] ret = {0, 0, 0, 0};\r\n+        float2bytes(v, ret);\r\n+        return ret;\r\n+    }\r\n+\r\n+    /**\r\n+     * to byte array.\r\n+     *\r\n+     * @param v value.\r\n+     * @param b byte array.\r\n+     */\r\n+    public static void float2bytes(float v, byte[] b) {\r\n+        float2bytes(v, b, 0);\r\n+    }\r\n+\r\n+    /**\r\n+     * to byte array.\r\n+     *\r\n+     * @param v   value.\r\n+     * @param b   byte array.\r\n+     * @param off array offset.\r\n+     */\r\n+    public static void float2bytes(float v, byte[] b, int off) {\r\n+        int i = Float.floatToIntBits(v);\r\n+        b[off + 3] = (byte) i;\r\n+        b[off + 2] = (byte) (i >>> 8);\r\n+        b[off + 1] = (byte) (i >>> 16);\r\n+        b[off + 0] = (byte) (i >>> 24);\r\n+    }\r\n+\r\n+    /**\r\n+     * to byte array.\r\n+     *\r\n+     * @param v value.\r\n+     * @return byte[].\r\n+     */\r\n+    public static byte[] long2bytes(long v) {\r\n+        byte[] ret = {0, 0, 0, 0, 0, 0, 0, 0};\r\n+        long2bytes(v, ret);\r\n+        return ret;\r\n+    }\r\n+\r\n+    /**\r\n+     * to byte array.\r\n+     *\r\n+     * @param v value.\r\n+     * @param b byte array.\r\n+     */\r\n+    public static void long2bytes(long v, byte[] b) {\r\n+        long2bytes(v, b, 0);\r\n+    }\r\n+\r\n+    /**\r\n+     * to byte array.\r\n+     *\r\n+     * @param v   value.\r\n+     * @param b   byte array.\r\n+     * @param off array offset.\r\n+     */\r\n+    public static void long2bytes(long v, byte[] b, int off) {\r\n+        b[off + 7] = (byte) v;\r\n+        b[off + 6] = (byte) (v >>> 8);\r\n+        b[off + 5] = (byte) (v >>> 16);\r\n+        b[off + 4] = (byte) (v >>> 24);\r\n+        b[off + 3] = (byte) (v >>> 32);\r\n+        b[off + 2] = (byte) (v >>> 40);\r\n+        b[off + 1] = (byte) (v >>> 48);\r\n+        b[off + 0] = (byte) (v >>> 56);\r\n+    }\r\n+\r\n+    /**\r\n+     * to byte array.\r\n+     *\r\n+     * @param v value.\r\n+     * @return byte[].\r\n+     */\r\n+    public static byte[] double2bytes(double v) {\r\n+        byte[] ret = {0, 0, 0, 0, 0, 0, 0, 0};\r\n+        double2bytes(v, ret);\r\n+        return ret;\r\n+    }\r\n+\r\n+    /**\r\n+     * to byte array.\r\n+     *\r\n+     * @param v value.\r\n+     * @param b byte array.\r\n+     */\r\n+    public static void double2bytes(double v, byte[] b) {\r\n+        double2bytes(v, b, 0);\r\n+    }\r\n+\r\n+    /**\r\n+     * to byte array.\r\n+     *\r\n+     * @param v   value.\r\n+     * @param b   byte array.\r\n+     * @param off array offset.\r\n+     */\r\n+    public static void double2bytes(double v, byte[] b, int off) {\r\n+        long j = Double.doubleToLongBits(v);\r\n+        b[off + 7] = (byte) j;\r\n+        b[off + 6] = (byte) (j >>> 8);\r\n+        b[off + 5] = (byte) (j >>> 16);\r\n+        b[off + 4] = (byte) (j >>> 24);\r\n+        b[off + 3] = (byte) (j >>> 32);\r\n+        b[off + 2] = (byte) (j >>> 40);\r\n+        b[off + 1] = (byte) (j >>> 48);\r\n+        b[off + 0] = (byte) (j >>> 56);\r\n+    }\r\n+\r\n+    /**\r\n+     * to short.\r\n+     *\r\n+     * @param b byte array.\r\n+     * @return short.\r\n+     */\r\n+    public static short bytes2short(byte[] b) {\r\n+        return bytes2short(b, 0);\r\n+    }\r\n+\r\n+    /**\r\n+     * to short.\r\n+     *\r\n+     * @param b   byte array.\r\n+     * @param off offset.\r\n+     * @return short.\r\n+     */\r\n+    public static short bytes2short(byte[] b, int off) {\r\n+        return (short) (((b[off + 1] & 0xFF) << 0) +\r\n+                ((b[off + 0]) << 8));\r\n+    }\r\n+\r\n+    /**\r\n+     * to int.\r\n+     *\r\n+     * @param b byte array.\r\n+     * @return int.\r\n+     */\r\n+    public static int bytes2int(byte[] b) {\r\n+        return bytes2int(b, 0);\r\n+    }\r\n+\r\n+    /**\r\n+     * to int.\r\n+     *\r\n+     * @param b   byte array.\r\n+     * @param off offset.\r\n+     * @return int.\r\n+     */\r\n+    public static int bytes2int(byte[] b, int off) {\r\n+        return ((b[off + 3] & 0xFF) << 0) +\r\n+                ((b[off + 2] & 0xFF) << 8) +\r\n+                ((b[off + 1] & 0xFF) << 16) +\r\n+                ((b[off + 0]) << 24);\r\n+    }\r\n+\r\n+    /**\r\n+     * to int.\r\n+     *\r\n+     * @param b byte array.\r\n+     * @return int.\r\n+     */\r\n+    public static float bytes2float(byte[] b) {\r\n+        return bytes2float(b, 0);\r\n+    }\r\n+\r\n+    /**\r\n+     * to int.\r\n+     *\r\n+     * @param b   byte array.\r\n+     * @param off offset.\r\n+     * @return int.\r\n+     */\r\n+    public static float bytes2float(byte[] b, int off) {\r\n+        int i = ((b[off + 3] & 0xFF) << 0) +\r\n+                ((b[off + 2] & 0xFF) << 8) +\r\n+                ((b[off + 1] & 0xFF) << 16) +\r\n+                ((b[off + 0]) << 24);\r\n+        return Float.intBitsToFloat(i);\r\n+    }\r\n+\r\n+    /**\r\n+     * to long.\r\n+     *\r\n+     * @param b byte array.\r\n+     * @return long.\r\n+     */\r\n+    public static long bytes2long(byte[] b) {\r\n+        return bytes2long(b, 0);\r\n+    }\r\n+\r\n+    /**\r\n+     * to long.\r\n+     *\r\n+     * @param b   byte array.\r\n+     * @param off offset.\r\n+     * @return long.\r\n+     */\r\n+    public static long bytes2long(byte[] b, int off) {\r\n+        return ((b[off + 7] & 0xFFL) << 0) +\r\n+                ((b[off + 6] & 0xFFL) << 8) +\r\n+                ((b[off + 5] & 0xFFL) << 16) +\r\n+                ((b[off + 4] & 0xFFL) << 24) +\r\n+                ((b[off + 3] & 0xFFL) << 32) +\r\n+                ((b[off + 2] & 0xFFL) << 40) +\r\n+                ((b[off + 1] & 0xFFL) << 48) +\r\n+                (((long) b[off + 0]) << 56);\r\n+    }\r\n+\r\n+    /**\r\n+     * to long.\r\n+     *\r\n+     * @param b byte array.\r\n+     * @return double.\r\n+     */\r\n+    public static double bytes2double(byte[] b) {\r\n+        return bytes2double(b, 0);\r\n+    }\r\n+\r\n+    /**\r\n+     * to long.\r\n+     *\r\n+     * @param b   byte array.\r\n+     * @param off offset.\r\n+     * @return double.\r\n+     */\r\n+    public static double bytes2double(byte[] b, int off) {\r\n+        long j = ((b[off + 7] & 0xFFL) << 0) +\r\n+                ((b[off + 6] & 0xFFL) << 8) +\r\n+                ((b[off + 5] & 0xFFL) << 16) +\r\n+                ((b[off + 4] & 0xFFL) << 24) +\r\n+                ((b[off + 3] & 0xFFL) << 32) +\r\n+                ((b[off + 2] & 0xFFL) << 40) +\r\n+                ((b[off + 1] & 0xFFL) << 48) +\r\n+                (((long) b[off + 0]) << 56);\r\n+        return Double.longBitsToDouble(j);\r\n+    }\r\n+\r\n+    /**\r\n+     * to hex string.\r\n+     *\r\n+     * @param bs byte array.\r\n+     * @return hex string.\r\n+     */\r\n+    public static String bytes2hex(byte[] bs) {\r\n+        return bytes2hex(bs, 0, bs.length);\r\n+    }\r\n+\r\n+    /**\r\n+     * to hex string.\r\n+     *\r\n+     * @param bs  byte array.\r\n+     * @param off offset.\r\n+     * @param len length.\r\n+     * @return hex string.\r\n+     */\r\n+    public static String bytes2hex(byte[] bs, int off, int len) {\r\n+        if (off < 0) {\r\n+            throw new IndexOutOfBoundsException(\"bytes2hex: offset < 0, offset is \" + off);\r\n+        }\r\n+        if (len < 0) {\r\n+            throw new IndexOutOfBoundsException(\"bytes2hex: length < 0, length is \" + len);\r\n+        }\r\n+        if (off + len > bs.length) {\r\n+            throw new IndexOutOfBoundsException(\"bytes2hex: offset + length > array length.\");\r\n+        }\r\n+\r\n+        byte b;\r\n+        int r = off, w = 0;\r\n+        char[] cs = new char[len * 2];\r\n+        for (int i = 0; i < len; i++) {\r\n+            b = bs[r++];\r\n+            cs[w++] = BASE16[b >> 4 & MASK4];\r\n+            cs[w++] = BASE16[b & MASK4];\r\n+        }\r\n+        return new String(cs);\r\n+    }\r\n+\r\n+    /**\r\n+     * from hex string.\r\n+     *\r\n+     * @param str hex string.\r\n+     * @return byte array.\r\n+     */\r\n+    public static byte[] hex2bytes(String str) {\r\n+        return hex2bytes(str, 0, str.length());\r\n+    }\r\n+\r\n+    /**\r\n+     * from hex string.\r\n+     *\r\n+     * @param str hex string.\r\n+     * @param off offset.\r\n+     * @param len length.\r\n+     * @return byte array.\r\n+     */\r\n+    public static byte[] hex2bytes(final String str, final int off, int len) {\r\n+        if ((len & 1) == 1) {\r\n+            throw new IllegalArgumentException(\"hex2bytes: ( len & 1 ) == 1.\");\r\n+        }\r\n+\r\n+        if (off < 0) {\r\n+            throw new IndexOutOfBoundsException(\"hex2bytes: offset < 0, offset is \" + off);\r\n+        }\r\n+        if (len < 0) {\r\n+            throw new IndexOutOfBoundsException(\"hex2bytes: length < 0, length is \" + len);\r\n+        }\r\n+        if (off + len > str.length()) {\r\n+            throw new IndexOutOfBoundsException(\"hex2bytes: offset + length > array length.\");\r\n+        }\r\n+\r\n+        int num = len / 2, r = off, w = 0;\r\n+        byte[] b = new byte[num];\r\n+        for (int i = 0; i < num; i++) {\r\n+            b[w++] = (byte) (hex(str.charAt(r++)) << 4 | hex(str.charAt(r++)));\r\n+        }\r\n+        return b;\r\n+    }\r\n+\r\n+    /**\r\n+     * to base64 string.\r\n+     *\r\n+     * @param b byte array.\r\n+     * @return base64 string.\r\n+     */\r\n+    public static String bytes2base64(byte[] b) {\r\n+        return bytes2base64(b, 0, b.length, BASE64);\r\n+    }\r\n+\r\n+    /**\r\n+     * to base64 string.\r\n+     *\r\n+     * @param b byte array.\r\n+     * @return base64 string.\r\n+     */\r\n+    public static String bytes2base64(byte[] b, int offset, int length) {\r\n+        return bytes2base64(b, offset, length, BASE64);\r\n+    }\r\n+\r\n+    /**\r\n+     * to base64 string.\r\n+     *\r\n+     * @param b    byte array.\r\n+     * @param code base64 code string(0-63 is base64 char,64 is pad char).\r\n+     * @return base64 string.\r\n+     */\r\n+    public static String bytes2base64(byte[] b, String code) {\r\n+        return bytes2base64(b, 0, b.length, code);\r\n+    }\r\n+\r\n+    /**\r\n+     * to base64 string.\r\n+     *\r\n+     * @param b    byte array.\r\n+     * @param code base64 code string(0-63 is base64 char,64 is pad char).\r\n+     * @return base64 string.\r\n+     */\r\n+    public static String bytes2base64(byte[] b, int offset, int length, String code) {\r\n+        if (code.length() < 64) {\r\n+            throw new IllegalArgumentException(\"Base64 code length < 64.\");\r\n+        }\r\n+\r\n+        return bytes2base64(b, offset, length, code.toCharArray());\r\n+    }\r\n+\r\n+    /**\r\n+     * to base64 string.\r\n+     *\r\n+     * @param b    byte array.\r\n+     * @param code base64 code(0-63 is base64 char,64 is pad char).\r\n+     * @return base64 string.\r\n+     */\r\n+    public static String bytes2base64(byte[] b, char[] code) {\r\n+        return bytes2base64(b, 0, b.length, code);\r\n+    }\r\n+\r\n+    /**\r\n+     * to base64 string.\r\n+     *\r\n+     * @param bs   byte array.\r\n+     * @param off  offset.\r\n+     * @param len  length.\r\n+     * @param code base64 code(0-63 is base64 char,64 is pad char).\r\n+     * @return base64 string.\r\n+     */\r\n+    public static String bytes2base64(final byte[] bs, final int off, final int len, final char[] code) {\r\n+        if (off < 0) {\r\n+            throw new IndexOutOfBoundsException(\"bytes2base64: offset < 0, offset is \" + off);\r\n+        }\r\n+        if (len < 0) {\r\n+            throw new IndexOutOfBoundsException(\"bytes2base64: length < 0, length is \" + len);\r\n+        }\r\n+        if (off + len > bs.length) {\r\n+            throw new IndexOutOfBoundsException(\"bytes2base64: offset + length > array length.\");\r\n+        }\r\n+\r\n+        if (code.length < 64) {\r\n+            throw new IllegalArgumentException(\"Base64 code length < 64.\");\r\n+        }\r\n+\r\n+        boolean pad = code.length > 64; // has pad char.\r\n+        int num = len / 3, rem = len % 3, r = off, w = 0;\r\n+        char[] cs = new char[num * 4 + (rem == 0 ? 0 : pad ? 4 : rem + 1)];\r\n+\r\n+        for (int i = 0; i < num; i++) {\r\n+            int b1 = bs[r++] & MASK8, b2 = bs[r++] & MASK8, b3 = bs[r++] & MASK8;\r\n+\r\n+            cs[w++] = code[b1 >> 2];\r\n+            cs[w++] = code[(b1 << 4) & MASK6 | (b2 >> 4)];\r\n+            cs[w++] = code[(b2 << 2) & MASK6 | (b3 >> 6)];\r\n+            cs[w++] = code[b3 & MASK6];\r\n+        }\r\n+\r\n+        if (rem == 1) {\r\n+            int b1 = bs[r++] & MASK8;\r\n+            cs[w++] = code[b1 >> 2];\r\n+            cs[w++] = code[(b1 << 4) & MASK6];\r\n+            if (pad) {\r\n+                cs[w++] = code[64];\r\n+                cs[w++] = code[64];\r\n+            }\r\n+        } else if (rem == 2) {\r\n+            int b1 = bs[r++] & MASK8, b2 = bs[r++] & MASK8;\r\n+            cs[w++] = code[b1 >> 2];\r\n+            cs[w++] = code[(b1 << 4) & MASK6 | (b2 >> 4)];\r\n+            cs[w++] = code[(b2 << 2) & MASK6];\r\n+            if (pad) {\r\n+                cs[w++] = code[64];\r\n+            }\r\n+        }\r\n+        return new String(cs);\r\n+    }\r\n+\r\n+    /**\r\n+     * from base64 string.\r\n+     *\r\n+     * @param str base64 string.\r\n+     * @return byte array.\r\n+     */\r\n+    public static byte[] base642bytes(String str) {\r\n+        return base642bytes(str, 0, str.length());\r\n+    }\r\n+\r\n+    /**\r\n+     * from base64 string.\r\n+     *\r\n+     * @param str    base64 string.\r\n+     * @param offset offset.\r\n+     * @param length length.\r\n+     * @return byte array.\r\n+     */\r\n+    public static byte[] base642bytes(String str, int offset, int length) {\r\n+        return base642bytes(str, offset, length, C64);\r\n+    }\r\n+\r\n+    /**\r\n+     * from base64 string.\r\n+     *\r\n+     * @param str  base64 string.\r\n+     * @param code base64 code(0-63 is base64 char,64 is pad char).\r\n+     * @return byte array.\r\n+     */\r\n+    public static byte[] base642bytes(String str, String code) {\r\n+        return base642bytes(str, 0, str.length(), code);\r\n+    }\r\n+\r\n+    /**\r\n+     * from base64 string.\r\n+     *\r\n+     * @param str  base64 string.\r\n+     * @param off  offset.\r\n+     * @param len  length.\r\n+     * @param code base64 code(0-63 is base64 char,64 is pad char).\r\n+     * @return byte array.\r\n+     */\r\n+    public static byte[] base642bytes(final String str, final int off, final int len, final String code) {\r\n+        if (off < 0) {\r\n+            throw new IndexOutOfBoundsException(\"base642bytes: offset < 0, offset is \" + off);\r\n+        }\r\n+        if (len < 0) {\r\n+            throw new IndexOutOfBoundsException(\"base642bytes: length < 0, length is \" + len);\r\n+        }\r\n+        if (len == 0) {\r\n+            return new byte[0];\r\n+        }\r\n+        if (off + len > str.length()) {\r\n+            throw new IndexOutOfBoundsException(\"base642bytes: offset + length > string length.\");\r\n+        }\r\n+\r\n+        if (code.length() < 64) {\r\n+            throw new IllegalArgumentException(\"Base64 code length < 64.\");\r\n+        }\r\n+\r\n+        int rem = len % 4;\r\n+        if (rem == 1) {\r\n+            throw new IllegalArgumentException(\"base642bytes: base64 string length % 4 == 1.\");\r\n+        }\r\n+\r\n+        int num = len / 4, size = num * 3;\r\n+        if (code.length() > 64) {\r\n+            if (rem != 0) {\r\n+                throw new IllegalArgumentException(\"base642bytes: base64 string length error.\");\r\n+            }\r\n+\r\n+            char pc = code.charAt(64);\r\n+            if (str.charAt(off + len - 2) == pc) {\r\n+                size -= 2;\r\n+                --num;\r\n+                rem = 2;\r\n+            } else if (str.charAt(off + len - 1) == pc) {\r\n+                size--;\r\n+                --num;\r\n+                rem = 3;\r\n+            }\r\n+        } else {\r\n+            if (rem == 2) {\r\n+                size++;\r\n+            } else if (rem == 3) {\r\n+                size += 2;\r\n+            }\r\n+        }\r\n+\r\n+        int r = off, w = 0;\r\n+        byte[] b = new byte[size], t = decodeTable(code);\r\n+        for (int i = 0; i < num; i++) {\r\n+            int c1 = t[str.charAt(r++)], c2 = t[str.charAt(r++)];\r\n+            int c3 = t[str.charAt(r++)], c4 = t[str.charAt(r++)];\r\n+\r\n+            b[w++] = (byte) ((c1 << 2) | (c2 >> 4));\r\n+            b[w++] = (byte) ((c2 << 4) | (c3 >> 2));\r\n+            b[w++] = (byte) ((c3 << 6) | c4);\r\n+        }\r\n+\r\n+        if (rem == 2) {\r\n+            int c1 = t[str.charAt(r++)], c2 = t[str.charAt(r++)];\r\n+\r\n+            b[w++] = (byte) ((c1 << 2) | (c2 >> 4));\r\n+        } else if (rem == 3) {\r\n+            int c1 = t[str.charAt(r++)], c2 = t[str.charAt(r++)], c3 = t[str.charAt(r++)];\r\n+\r\n+            b[w++] = (byte) ((c1 << 2) | (c2 >> 4));\r\n+            b[w++] = (byte) ((c2 << 4) | (c3 >> 2));\r\n+        }\r\n+        return b;\r\n+    }\r\n+\r\n+    /**\r\n+     * from base64 string.\r\n+     *\r\n+     * @param str  base64 string.\r\n+     * @param code base64 code(0-63 is base64 char,64 is pad char).\r\n+     * @return byte array.\r\n+     */\r\n+    public static byte[] base642bytes(String str, char[] code) {\r\n+        return base642bytes(str, 0, str.length(), code);\r\n+    }\r\n+\r\n+    /**\r\n+     * from base64 string.\r\n+     *\r\n+     * @param str  base64 string.\r\n+     * @param off  offset.\r\n+     * @param len  length.\r\n+     * @param code base64 code(0-63 is base64 char,64 is pad char).\r\n+     * @return byte array.\r\n+     */\r\n+    public static byte[] base642bytes(final String str, final int off, final int len, final char[] code) {\r\n+        if (off < 0) {\r\n+            throw new IndexOutOfBoundsException(\"base642bytes: offset < 0, offset is \" + off);\r\n+        }\r\n+        if (len < 0) {\r\n+            throw new IndexOutOfBoundsException(\"base642bytes: length < 0, length is \" + len);\r\n+        }\r\n+        if (len == 0) {\r\n+            return new byte[0];\r\n+        }\r\n+        if (off + len > str.length()) {\r\n+            throw new IndexOutOfBoundsException(\"base642bytes: offset + length > string length.\");\r\n+        }\r\n+\r\n+        if (code.length < 64) {\r\n+            throw new IllegalArgumentException(\"Base64 code length < 64.\");\r\n+        }\r\n+\r\n+        int rem = len % 4;\r\n+        if (rem == 1) {\r\n+            throw new IllegalArgumentException(\"base642bytes: base64 string length % 4 == 1.\");\r\n+        }\r\n+\r\n+        int num = len / 4, size = num * 3;\r\n+        if (code.length > 64) {\r\n+            if (rem != 0) {\r\n+                throw new IllegalArgumentException(\"base642bytes: base64 string length error.\");\r\n+            }\r\n+\r\n+            char pc = code[64];\r\n+            if (str.charAt(off + len - 2) == pc) {\r\n+                size -= 2;\r\n+                --num;\r\n+                rem = 2;\r\n+            } else if (str.charAt(off + len - 1) == pc) {\r\n+                size--;\r\n+                --num;\r\n+                rem = 3;\r\n+            }\r\n+        } else {\r\n+            if (rem == 2) {\r\n+                size++;\r\n+            } else if (rem == 3) {\r\n+                size += 2;\r\n+            }\r\n+        }\r\n+\r\n+        int r = off, w = 0;\r\n+        byte[] b = new byte[size];\r\n+        for (int i = 0; i < num; i++) {\r\n+            int c1 = indexOf(code, str.charAt(r++)), c2 = indexOf(code, str.charAt(r++));\r\n+            int c3 = indexOf(code, str.charAt(r++)), c4 = indexOf(code, str.charAt(r++));\r\n+\r\n+            b[w++] = (byte) ((c1 << 2) | (c2 >> 4));\r\n+            b[w++] = (byte) ((c2 << 4) | (c3 >> 2));\r\n+            b[w++] = (byte) ((c3 << 6) | c4);\r\n+        }\r\n+\r\n+        if (rem == 2) {\r\n+            int c1 = indexOf(code, str.charAt(r++)), c2 = indexOf(code, str.charAt(r++));\r\n+\r\n+            b[w++] = (byte) ((c1 << 2) | (c2 >> 4));\r\n+        } else if (rem == 3) {\r\n+            int c1 = indexOf(code, str.charAt(r++)), c2 = indexOf(code, str.charAt(r++)), c3 = indexOf(code, str.charAt(r++));\r\n+\r\n+            b[w++] = (byte) ((c1 << 2) | (c2 >> 4));\r\n+            b[w++] = (byte) ((c2 << 4) | (c3 >> 2));\r\n+        }\r\n+        return b;\r\n+    }\r\n+\r\n+    /**\r\n+     * zip.\r\n+     *\r\n+     * @param bytes source.\r\n+     * @return compressed byte array.\r\n+     * @throws IOException\r\n+     */\r\n+    public static byte[] zip(byte[] bytes) throws IOException {\r\n+        UnsafeByteArrayOutputStream bos = new UnsafeByteArrayOutputStream();\r\n+        OutputStream os = new DeflaterOutputStream(bos);\r\n+        try {\r\n+            os.write(bytes);\r\n+        } finally {\r\n+            os.close();\r\n+            bos.close();\r\n+        }\r\n+        return bos.toByteArray();\r\n+    }\r\n+\r\n+    /**\r\n+     * unzip.\r\n+     *\r\n+     * @param bytes compressed byte array.\r\n+     * @return byte uncompressed array.\r\n+     * @throws IOException\r\n+     */\r\n+    public static byte[] unzip(byte[] bytes) throws IOException {\r\n+        UnsafeByteArrayInputStream bis = new UnsafeByteArrayInputStream(bytes);\r\n+        UnsafeByteArrayOutputStream bos = new UnsafeByteArrayOutputStream();\r\n+        InputStream is = new InflaterInputStream(bis);\r\n+        try {\r\n+            IOUtils.write(is, bos);\r\n+            return bos.toByteArray();\r\n+        } finally {\r\n+            is.close();\r\n+            bis.close();\r\n+            bos.close();\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * get md5.\r\n+     *\r\n+     * @param str input string.\r\n+     * @return MD5 byte array.\r\n+     */\r\n+    public static byte[] getMD5(String str) {\r\n+        return getMD5(str.getBytes());\r\n+    }\r\n+\r\n+    /**\r\n+     * get md5.\r\n+     *\r\n+     * @param source byte array source.\r\n+     * @return MD5 byte array.\r\n+     */\r\n+    public static byte[] getMD5(byte[] source) {\r\n+        MessageDigest md = getMessageDigest();\r\n+        return md.digest(source);\r\n+    }\r\n+\r\n+    /**\r\n+     * get md5.\r\n+     *\r\n+     * @param file file source.\r\n+     * @return MD5 byte array.\r\n+     */\r\n+    public static byte[] getMD5(File file) throws IOException {\r\n+        InputStream is = new FileInputStream(file);\r\n+        try {\r\n+            return getMD5(is);\r\n+        } finally {\r\n+            is.close();\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * get md5.\r\n+     *\r\n+     * @param is input stream.\r\n+     * @return MD5 byte array.\r\n+     */\r\n+    public static byte[] getMD5(InputStream is) throws IOException {\r\n+        return getMD5(is, 1024 * 8);\r\n+    }\r\n+\r\n+    private static byte hex(char c) {\r\n+        if (c <= '9') {\r\n+            return (byte) (c - '0');\r\n+        }\r\n+        if (c >= 'a' && c <= 'f') {\r\n+            return (byte) (c - 'a' + 10);\r\n+        }\r\n+        if (c >= 'A' && c <= 'F') {\r\n+            return (byte) (c - 'A' + 10);\r\n+        }\r\n+        throw new IllegalArgumentException(\"hex string format error [\" + c + \"].\");\r\n+    }\r\n+\r\n+    private static int indexOf(char[] cs, char c) {\r\n+        for (int i = 0, len = cs.length; i < len; i++) {\r\n+            if (cs[i] == c) {\r\n+                return i;\r\n+            }\r\n+        }\r\n+        return -1;\r\n+    }\r\n+\r\n+    private static byte[] decodeTable(String code) {\r\n+        int hash = code.hashCode();\r\n+        byte[] ret = DECODE_TABLE_MAP.get(hash);\r\n+        if (ret == null) {\r\n+            if (code.length() < 64) {\r\n+                throw new IllegalArgumentException(\"Base64 code length < 64.\");\r\n+            }\r\n+            // create new decode table.\r\n+            ret = new byte[128];\r\n+            for (int i = 0; i < 128; i++) // init table.\r\n+            {\r\n+                ret[i] = -1;\r\n+            }\r\n+            for (int i = 0; i < 64; i++) {\r\n+                ret[code.charAt(i)] = (byte) i;\r\n+            }\r\n+            DECODE_TABLE_MAP.put(hash, ret);\r\n+        }\r\n+        return ret;\r\n+    }\r\n+\r\n+    private static byte[] getMD5(InputStream is, int bs) throws IOException {\r\n+        MessageDigest md = getMessageDigest();\r\n+        byte[] buf = new byte[bs];\r\n+        while (is.available() > 0) {\r\n+            int read, total = 0;\r\n+            do {\r\n+                if ((read = is.read(buf, total, bs - total)) <= 0) {\r\n+                    break;\r\n+                }\r\n+                total += read;\r\n+            }\r\n+            while (total < bs);\r\n+            md.update(buf);\r\n+        }\r\n+        return md.digest();\r\n+    }\r\n+\r\n+    private static MessageDigest getMessageDigest() {\r\n+        MessageDigest ret = MD.get();\r\n+        if (ret == null) {\r\n+            try {\r\n+                ret = MessageDigest.getInstance(\"MD5\");\r\n+                MD.set(ret);\r\n+            } catch (NoSuchAlgorithmException e) {\r\n+                throw new RuntimeException(e);\r\n+            }\r\n+        }\r\n+        return ret;\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/common/io/StreamUtils.java", "source2": "org/apache/dubbo/common/io/StreamUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,231 +1,231 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.io;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-\n-/**\n- * Stream utils.\n- */\n-public class StreamUtils {\n-    private StreamUtils() {\n-    }\n-\n-    public static InputStream limitedInputStream(final InputStream is, final int limit) throws IOException {\n-        return new InputStream() {\n-            private int mPosition = 0, mMark = 0, mLimit = Math.min(limit, is.available());\n-\n-            @Override\n-            public int read() throws IOException {\n-                if (mPosition < mLimit) {\n-                    mPosition++;\n-                    return is.read();\n-                }\n-                return -1;\n-            }\n-\n-            @Override\n-            public int read(byte[] b, int off, int len) throws IOException {\n-                if (b == null) {\n-                    throw new NullPointerException();\n-                }\n-\n-                if (off < 0 || len < 0 || len > b.length - off) {\n-                    throw new IndexOutOfBoundsException();\n-                }\n-\n-                if (mPosition >= mLimit) {\n-                    return -1;\n-                }\n-\n-                if (mPosition + len > mLimit) {\n-                    len = mLimit - mPosition;\n-                }\n-\n-                if (len <= 0) {\n-                    return 0;\n-                }\n-\n-                is.read(b, off, len);\n-                mPosition += len;\n-                return len;\n-            }\n-\n-            @Override\n-            public long skip(long len) throws IOException {\n-                if (mPosition + len > mLimit) {\n-                    len = mLimit - mPosition;\n-                }\n-\n-                if (len <= 0) {\n-                    return 0;\n-                }\n-\n-                is.skip(len);\n-                mPosition += len;\n-                return len;\n-            }\n-\n-            @Override\n-            public int available() {\n-                return mLimit - mPosition;\n-            }\n-\n-            @Override\n-            public boolean markSupported() {\n-                return is.markSupported();\n-            }\n-\n-            @Override\n-            public void mark(int readlimit) {\n-                is.mark(readlimit);\n-                mMark = mPosition;\n-            }\n-\n-            @Override\n-            public void reset() throws IOException {\n-                is.reset();\n-                mPosition = mMark;\n-            }\n-\n-            @Override\n-            public void close() throws IOException {\n-                is.close();\n-            }\n-        };\n-    }\n-\n-    public static InputStream markSupportedInputStream(final InputStream is, final int markBufferSize) {\n-        if (is.markSupported()) {\n-            return is;\n-        }\n-\n-        return new InputStream() {\n-            byte[] mMarkBuffer;\n-\n-            boolean mInMarked = false;\n-            boolean mInReset = false;\n-            boolean mDry = false;\n-            private int mPosition = 0;\n-            private int mCount = 0;\n-\n-            @Override\n-            public int read() throws IOException {\n-                if (!mInMarked) {\n-                    return is.read();\n-                } else {\n-                    if (mPosition < mCount) {\n-                        byte b = mMarkBuffer[mPosition++];\n-                        return b & 0xFF;\n-                    }\n-\n-                    if (!mInReset) {\n-                        if (mDry) {\n-                            return -1;\n-                        }\n-\n-                        if (null == mMarkBuffer) {\n-                            mMarkBuffer = new byte[markBufferSize];\n-                        }\n-                        if (mPosition >= markBufferSize) {\n-                            throw new IOException(\"Mark buffer is full!\");\n-                        }\n-\n-                        int read = is.read();\n-                        if (-1 == read) {\n-                            mDry = true;\n-                            return -1;\n-                        }\n-\n-                        mMarkBuffer[mPosition++] = (byte) read;\n-                        mCount++;\n-\n-                        return read;\n-                    } else {\n-                        // mark buffer is used, exit mark status!\n-                        mInMarked = false;\n-                        mInReset = false;\n-                        mPosition = 0;\n-                        mCount = 0;\n-\n-                        return is.read();\n-                    }\n-                }\n-            }\n-\n-            /**\n-             * NOTE: the <code>readlimit</code> argument for this class\n-             *  has no meaning.\n-             */\n-            @Override\n-            public synchronized void mark(int readlimit) {\n-                mInMarked = true;\n-                mInReset = false;\n-\n-                // mark buffer is not empty\n-                int count = mCount - mPosition;\n-                if (count > 0) {\n-                    System.arraycopy(mMarkBuffer, mPosition, mMarkBuffer, 0, count);\n-                    mCount = count;\n-                    mPosition = 0;\n-                }\n-            }\n-\n-            @Override\n-            public synchronized void reset() throws IOException {\n-                if (!mInMarked) {\n-                    throw new IOException(\"should mark before reset!\");\n-                }\n-\n-                mInReset = true;\n-                mPosition = 0;\n-            }\n-\n-            @Override\n-            public boolean markSupported() {\n-                return true;\n-            }\n-\n-            @Override\n-            public int available() throws IOException {\n-                int available = is.available();\n-\n-                if (mInMarked && mInReset) {\n-                    available += mCount - mPosition;\n-                }\n-\n-                return available;\n-            }\n-\n-            @Override\n-            public void close() throws IOException {\n-                is.close();\n-            }\n-        };\n-    }\n-\n-    public static InputStream markSupportedInputStream(final InputStream is) {\n-        return markSupportedInputStream(is, 1024);\n-    }\n-\n-    public static void skipUnusedStream(InputStream is) throws IOException {\n-        if (is.available() > 0) {\n-            is.skip(is.available());\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.io;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+\r\n+/**\r\n+ * Stream utils.\r\n+ */\r\n+public class StreamUtils {\r\n+    private StreamUtils() {\r\n+    }\r\n+\r\n+    public static InputStream limitedInputStream(final InputStream is, final int limit) throws IOException {\r\n+        return new InputStream() {\r\n+            private int mPosition = 0, mMark = 0, mLimit = Math.min(limit, is.available());\r\n+\r\n+            @Override\r\n+            public int read() throws IOException {\r\n+                if (mPosition < mLimit) {\r\n+                    mPosition++;\r\n+                    return is.read();\r\n+                }\r\n+                return -1;\r\n+            }\r\n+\r\n+            @Override\r\n+            public int read(byte[] b, int off, int len) throws IOException {\r\n+                if (b == null) {\r\n+                    throw new NullPointerException();\r\n+                }\r\n+\r\n+                if (off < 0 || len < 0 || len > b.length - off) {\r\n+                    throw new IndexOutOfBoundsException();\r\n+                }\r\n+\r\n+                if (mPosition >= mLimit) {\r\n+                    return -1;\r\n+                }\r\n+\r\n+                if (mPosition + len > mLimit) {\r\n+                    len = mLimit - mPosition;\r\n+                }\r\n+\r\n+                if (len <= 0) {\r\n+                    return 0;\r\n+                }\r\n+\r\n+                is.read(b, off, len);\r\n+                mPosition += len;\r\n+                return len;\r\n+            }\r\n+\r\n+            @Override\r\n+            public long skip(long len) throws IOException {\r\n+                if (mPosition + len > mLimit) {\r\n+                    len = mLimit - mPosition;\r\n+                }\r\n+\r\n+                if (len <= 0) {\r\n+                    return 0;\r\n+                }\r\n+\r\n+                is.skip(len);\r\n+                mPosition += len;\r\n+                return len;\r\n+            }\r\n+\r\n+            @Override\r\n+            public int available() {\r\n+                return mLimit - mPosition;\r\n+            }\r\n+\r\n+            @Override\r\n+            public boolean markSupported() {\r\n+                return is.markSupported();\r\n+            }\r\n+\r\n+            @Override\r\n+            public void mark(int readlimit) {\r\n+                is.mark(readlimit);\r\n+                mMark = mPosition;\r\n+            }\r\n+\r\n+            @Override\r\n+            public void reset() throws IOException {\r\n+                is.reset();\r\n+                mPosition = mMark;\r\n+            }\r\n+\r\n+            @Override\r\n+            public void close() throws IOException {\r\n+                is.close();\r\n+            }\r\n+        };\r\n+    }\r\n+\r\n+    public static InputStream markSupportedInputStream(final InputStream is, final int markBufferSize) {\r\n+        if (is.markSupported()) {\r\n+            return is;\r\n+        }\r\n+\r\n+        return new InputStream() {\r\n+            byte[] mMarkBuffer;\r\n+\r\n+            boolean mInMarked = false;\r\n+            boolean mInReset = false;\r\n+            boolean mDry = false;\r\n+            private int mPosition = 0;\r\n+            private int mCount = 0;\r\n+\r\n+            @Override\r\n+            public int read() throws IOException {\r\n+                if (!mInMarked) {\r\n+                    return is.read();\r\n+                } else {\r\n+                    if (mPosition < mCount) {\r\n+                        byte b = mMarkBuffer[mPosition++];\r\n+                        return b & 0xFF;\r\n+                    }\r\n+\r\n+                    if (!mInReset) {\r\n+                        if (mDry) {\r\n+                            return -1;\r\n+                        }\r\n+\r\n+                        if (null == mMarkBuffer) {\r\n+                            mMarkBuffer = new byte[markBufferSize];\r\n+                        }\r\n+                        if (mPosition >= markBufferSize) {\r\n+                            throw new IOException(\"Mark buffer is full!\");\r\n+                        }\r\n+\r\n+                        int read = is.read();\r\n+                        if (-1 == read) {\r\n+                            mDry = true;\r\n+                            return -1;\r\n+                        }\r\n+\r\n+                        mMarkBuffer[mPosition++] = (byte) read;\r\n+                        mCount++;\r\n+\r\n+                        return read;\r\n+                    } else {\r\n+                        // mark buffer is used, exit mark status!\r\n+                        mInMarked = false;\r\n+                        mInReset = false;\r\n+                        mPosition = 0;\r\n+                        mCount = 0;\r\n+\r\n+                        return is.read();\r\n+                    }\r\n+                }\r\n+            }\r\n+\r\n+            /**\r\n+             * NOTE: the <code>readlimit</code> argument for this class\r\n+             *  has no meaning.\r\n+             */\r\n+            @Override\r\n+            public synchronized void mark(int readlimit) {\r\n+                mInMarked = true;\r\n+                mInReset = false;\r\n+\r\n+                // mark buffer is not empty\r\n+                int count = mCount - mPosition;\r\n+                if (count > 0) {\r\n+                    System.arraycopy(mMarkBuffer, mPosition, mMarkBuffer, 0, count);\r\n+                    mCount = count;\r\n+                    mPosition = 0;\r\n+                }\r\n+            }\r\n+\r\n+            @Override\r\n+            public synchronized void reset() throws IOException {\r\n+                if (!mInMarked) {\r\n+                    throw new IOException(\"should mark before reset!\");\r\n+                }\r\n+\r\n+                mInReset = true;\r\n+                mPosition = 0;\r\n+            }\r\n+\r\n+            @Override\r\n+            public boolean markSupported() {\r\n+                return true;\r\n+            }\r\n+\r\n+            @Override\r\n+            public int available() throws IOException {\r\n+                int available = is.available();\r\n+\r\n+                if (mInMarked && mInReset) {\r\n+                    available += mCount - mPosition;\r\n+                }\r\n+\r\n+                return available;\r\n+            }\r\n+\r\n+            @Override\r\n+            public void close() throws IOException {\r\n+                is.close();\r\n+            }\r\n+        };\r\n+    }\r\n+\r\n+    public static InputStream markSupportedInputStream(final InputStream is) {\r\n+        return markSupportedInputStream(is, 1024);\r\n+    }\r\n+\r\n+    public static void skipUnusedStream(InputStream is) throws IOException {\r\n+        if (is.available() > 0) {\r\n+            is.skip(is.available());\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/io/UnsafeByteArrayInputStream.java", "source2": "org/apache/dubbo/common/io/UnsafeByteArrayInputStream.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,118 +1,118 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.io;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-\n-/**\n- * UnsafeByteArrayInputStream.\n- */\n-public class UnsafeByteArrayInputStream extends InputStream {\n-    protected byte[] mData;\n-\n-    protected int mPosition, mLimit, mMark = 0;\n-\n-    public UnsafeByteArrayInputStream(byte[] buf) {\n-        this(buf, 0, buf.length);\n-    }\n-\n-    public UnsafeByteArrayInputStream(byte[] buf, int offset) {\n-        this(buf, offset, buf.length - offset);\n-    }\n-\n-    public UnsafeByteArrayInputStream(byte[] buf, int offset, int length) {\n-        mData = buf;\n-        mPosition = mMark = offset;\n-        mLimit = Math.min(offset + length, buf.length);\n-    }\n-\n-    @Override\n-    public int read() {\n-        return (mPosition < mLimit) ? (mData[mPosition++] & 0xff) : -1;\n-    }\n-\n-    @Override\n-    public int read(byte[] b, int off, int len) {\n-        if (b == null) {\n-            throw new NullPointerException();\n-        }\n-        if (off < 0 || len < 0 || len > b.length - off) {\n-            throw new IndexOutOfBoundsException();\n-        }\n-        if (mPosition >= mLimit) {\n-            return -1;\n-        }\n-        if (mPosition + len > mLimit) {\n-            len = mLimit - mPosition;\n-        }\n-        if (len <= 0) {\n-            return 0;\n-        }\n-        System.arraycopy(mData, mPosition, b, off, len);\n-        mPosition += len;\n-        return len;\n-    }\n-\n-    @Override\n-    public long skip(long len) {\n-        if (mPosition + len > mLimit) {\n-            len = mLimit - mPosition;\n-        }\n-        if (len <= 0) {\n-            return 0;\n-        }\n-        mPosition += len;\n-        return len;\n-    }\n-\n-    @Override\n-    public int available() {\n-        return mLimit - mPosition;\n-    }\n-\n-    @Override\n-    public boolean markSupported() {\n-        return true;\n-    }\n-\n-    @Override\n-    public void mark(int readAheadLimit) {\n-        mMark = mPosition;\n-    }\n-\n-    @Override\n-    public void reset() {\n-        mPosition = mMark;\n-    }\n-\n-    @Override\n-    public void close() throws IOException {\n-    }\n-\n-    public int position() {\n-        return mPosition;\n-    }\n-\n-    public void position(int newPosition) {\n-        mPosition = newPosition;\n-    }\n-\n-    public int size() {\n-        return mData == null ? 0 : mData.length;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.io;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+\r\n+/**\r\n+ * UnsafeByteArrayInputStream.\r\n+ */\r\n+public class UnsafeByteArrayInputStream extends InputStream {\r\n+    protected byte[] mData;\r\n+\r\n+    protected int mPosition, mLimit, mMark = 0;\r\n+\r\n+    public UnsafeByteArrayInputStream(byte[] buf) {\r\n+        this(buf, 0, buf.length);\r\n+    }\r\n+\r\n+    public UnsafeByteArrayInputStream(byte[] buf, int offset) {\r\n+        this(buf, offset, buf.length - offset);\r\n+    }\r\n+\r\n+    public UnsafeByteArrayInputStream(byte[] buf, int offset, int length) {\r\n+        mData = buf;\r\n+        mPosition = mMark = offset;\r\n+        mLimit = Math.min(offset + length, buf.length);\r\n+    }\r\n+\r\n+    @Override\r\n+    public int read() {\r\n+        return (mPosition < mLimit) ? (mData[mPosition++] & 0xff) : -1;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int read(byte[] b, int off, int len) {\r\n+        if (b == null) {\r\n+            throw new NullPointerException();\r\n+        }\r\n+        if (off < 0 || len < 0 || len > b.length - off) {\r\n+            throw new IndexOutOfBoundsException();\r\n+        }\r\n+        if (mPosition >= mLimit) {\r\n+            return -1;\r\n+        }\r\n+        if (mPosition + len > mLimit) {\r\n+            len = mLimit - mPosition;\r\n+        }\r\n+        if (len <= 0) {\r\n+            return 0;\r\n+        }\r\n+        System.arraycopy(mData, mPosition, b, off, len);\r\n+        mPosition += len;\r\n+        return len;\r\n+    }\r\n+\r\n+    @Override\r\n+    public long skip(long len) {\r\n+        if (mPosition + len > mLimit) {\r\n+            len = mLimit - mPosition;\r\n+        }\r\n+        if (len <= 0) {\r\n+            return 0;\r\n+        }\r\n+        mPosition += len;\r\n+        return len;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int available() {\r\n+        return mLimit - mPosition;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean markSupported() {\r\n+        return true;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void mark(int readAheadLimit) {\r\n+        mMark = mPosition;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void reset() {\r\n+        mPosition = mMark;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close() throws IOException {\r\n+    }\r\n+\r\n+    public int position() {\r\n+        return mPosition;\r\n+    }\r\n+\r\n+    public void position(int newPosition) {\r\n+        mPosition = newPosition;\r\n+    }\r\n+\r\n+    public int size() {\r\n+        return mData == null ? 0 : mData.length;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/io/UnsafeByteArrayOutputStream.java", "source2": "org/apache/dubbo/common/io/UnsafeByteArrayOutputStream.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,101 +1,101 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.io;\n-\n-import java.io.IOException;\n-import java.io.OutputStream;\n-import java.io.UnsupportedEncodingException;\n-import java.nio.ByteBuffer;\n-\n-/**\n- * UnsafeByteArrayOutputStream.\n- */\n-public class UnsafeByteArrayOutputStream extends OutputStream {\n-    protected byte[] mBuffer;\n-\n-    protected int mCount;\n-\n-    public UnsafeByteArrayOutputStream() {\n-        this(32);\n-    }\n-\n-    public UnsafeByteArrayOutputStream(int size) {\n-        if (size < 0) {\n-            throw new IllegalArgumentException(\"Negative initial size: \" + size);\n-        }\n-        mBuffer = new byte[size];\n-    }\n-\n-    @Override\n-    public void write(int b) {\n-        int newcount = mCount + 1;\n-        if (newcount > mBuffer.length) {\n-            mBuffer = Bytes.copyOf(mBuffer, Math.max(mBuffer.length << 1, newcount));\n-        }\n-        mBuffer[mCount] = (byte) b;\n-        mCount = newcount;\n-    }\n-\n-    @Override\n-    public void write(byte[] b, int off, int len) {\n-        if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) > b.length) || ((off + len) < 0)) {\n-            throw new IndexOutOfBoundsException();\n-        }\n-        if (len == 0) {\n-            return;\n-        }\n-        int newcount = mCount + len;\n-        if (newcount > mBuffer.length) {\n-            mBuffer = Bytes.copyOf(mBuffer, Math.max(mBuffer.length << 1, newcount));\n-        }\n-        System.arraycopy(b, off, mBuffer, mCount, len);\n-        mCount = newcount;\n-    }\n-\n-    public int size() {\n-        return mCount;\n-    }\n-\n-    public void reset() {\n-        mCount = 0;\n-    }\n-\n-    public byte[] toByteArray() {\n-        return Bytes.copyOf(mBuffer, mCount);\n-    }\n-\n-    public ByteBuffer toByteBuffer() {\n-        return ByteBuffer.wrap(mBuffer, 0, mCount);\n-    }\n-\n-    public void writeTo(OutputStream out) throws IOException {\n-        out.write(mBuffer, 0, mCount);\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return new String(mBuffer, 0, mCount);\n-    }\n-\n-    public String toString(String charset) throws UnsupportedEncodingException {\n-        return new String(mBuffer, 0, mCount, charset);\n-    }\n-\n-    @Override\n-    public void close() throws IOException {\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.io;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.OutputStream;\r\n+import java.io.UnsupportedEncodingException;\r\n+import java.nio.ByteBuffer;\r\n+\r\n+/**\r\n+ * UnsafeByteArrayOutputStream.\r\n+ */\r\n+public class UnsafeByteArrayOutputStream extends OutputStream {\r\n+    protected byte[] mBuffer;\r\n+\r\n+    protected int mCount;\r\n+\r\n+    public UnsafeByteArrayOutputStream() {\r\n+        this(32);\r\n+    }\r\n+\r\n+    public UnsafeByteArrayOutputStream(int size) {\r\n+        if (size < 0) {\r\n+            throw new IllegalArgumentException(\"Negative initial size: \" + size);\r\n+        }\r\n+        mBuffer = new byte[size];\r\n+    }\r\n+\r\n+    @Override\r\n+    public void write(int b) {\r\n+        int newcount = mCount + 1;\r\n+        if (newcount > mBuffer.length) {\r\n+            mBuffer = Bytes.copyOf(mBuffer, Math.max(mBuffer.length << 1, newcount));\r\n+        }\r\n+        mBuffer[mCount] = (byte) b;\r\n+        mCount = newcount;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void write(byte[] b, int off, int len) {\r\n+        if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) > b.length) || ((off + len) < 0)) {\r\n+            throw new IndexOutOfBoundsException();\r\n+        }\r\n+        if (len == 0) {\r\n+            return;\r\n+        }\r\n+        int newcount = mCount + len;\r\n+        if (newcount > mBuffer.length) {\r\n+            mBuffer = Bytes.copyOf(mBuffer, Math.max(mBuffer.length << 1, newcount));\r\n+        }\r\n+        System.arraycopy(b, off, mBuffer, mCount, len);\r\n+        mCount = newcount;\r\n+    }\r\n+\r\n+    public int size() {\r\n+        return mCount;\r\n+    }\r\n+\r\n+    public void reset() {\r\n+        mCount = 0;\r\n+    }\r\n+\r\n+    public byte[] toByteArray() {\r\n+        return Bytes.copyOf(mBuffer, mCount);\r\n+    }\r\n+\r\n+    public ByteBuffer toByteBuffer() {\r\n+        return ByteBuffer.wrap(mBuffer, 0, mCount);\r\n+    }\r\n+\r\n+    public void writeTo(OutputStream out) throws IOException {\r\n+        out.write(mBuffer, 0, mCount);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return new String(mBuffer, 0, mCount);\r\n+    }\r\n+\r\n+    public String toString(String charset) throws UnsupportedEncodingException {\r\n+        return new String(mBuffer, 0, mCount, charset);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close() throws IOException {\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/io/UnsafeStringWriter.java", "source2": "org/apache/dubbo/common/io/UnsafeStringWriter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,107 +1,107 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.io;\n-\n-import java.io.IOException;\n-import java.io.Writer;\n-\n-/**\n- * Thread-unsafe StringWriter.\n- */\n-public class UnsafeStringWriter extends Writer {\n-    private StringBuilder mBuffer;\n-\n-    public UnsafeStringWriter() {\n-        lock = mBuffer = new StringBuilder();\n-    }\n-\n-    public UnsafeStringWriter(int size) {\n-        if (size < 0) {\n-            throw new IllegalArgumentException(\"Negative buffer size\");\n-        }\n-\n-        lock = mBuffer = new StringBuilder();\n-    }\n-\n-    @Override\n-    public void write(int c) {\n-        mBuffer.append((char) c);\n-    }\n-\n-    @Override\n-    public void write(char[] cs) throws IOException {\n-        mBuffer.append(cs, 0, cs.length);\n-    }\n-\n-    @Override\n-    public void write(char[] cs, int off, int len) throws IOException {\n-        if ((off < 0) || (off > cs.length) || (len < 0) ||\n-                ((off + len) > cs.length) || ((off + len) < 0)) {\n-            throw new IndexOutOfBoundsException();\n-        }\n-\n-        if (len > 0) {\n-            mBuffer.append(cs, off, len);\n-        }\n-    }\n-\n-    @Override\n-    public void write(String str) {\n-        mBuffer.append(str);\n-    }\n-\n-    @Override\n-    public void write(String str, int off, int len) {\n-        mBuffer.append(str, off, off + len);\n-    }\n-\n-    @Override\n-    public Writer append(CharSequence csq) {\n-        if (csq == null) {\n-            write(\"null\");\n-        } else {\n-            write(csq.toString());\n-        }\n-        return this;\n-    }\n-\n-    @Override\n-    public Writer append(CharSequence csq, int start, int end) {\n-        CharSequence cs = (csq == null ? \"null\" : csq);\n-        write(cs.subSequence(start, end).toString());\n-        return this;\n-    }\n-\n-    @Override\n-    public Writer append(char c) {\n-        mBuffer.append(c);\n-        return this;\n-    }\n-\n-    @Override\n-    public void close() {\n-    }\n-\n-    @Override\n-    public void flush() {\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return mBuffer.toString();\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.io;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.Writer;\r\n+\r\n+/**\r\n+ * Thread-unsafe StringWriter.\r\n+ */\r\n+public class UnsafeStringWriter extends Writer {\r\n+    private StringBuilder mBuffer;\r\n+\r\n+    public UnsafeStringWriter() {\r\n+        lock = mBuffer = new StringBuilder();\r\n+    }\r\n+\r\n+    public UnsafeStringWriter(int size) {\r\n+        if (size < 0) {\r\n+            throw new IllegalArgumentException(\"Negative buffer size\");\r\n+        }\r\n+\r\n+        lock = mBuffer = new StringBuilder();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void write(int c) {\r\n+        mBuffer.append((char) c);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void write(char[] cs) throws IOException {\r\n+        mBuffer.append(cs, 0, cs.length);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void write(char[] cs, int off, int len) throws IOException {\r\n+        if ((off < 0) || (off > cs.length) || (len < 0) ||\r\n+                ((off + len) > cs.length) || ((off + len) < 0)) {\r\n+            throw new IndexOutOfBoundsException();\r\n+        }\r\n+\r\n+        if (len > 0) {\r\n+            mBuffer.append(cs, off, len);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void write(String str) {\r\n+        mBuffer.append(str);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void write(String str, int off, int len) {\r\n+        mBuffer.append(str, off, off + len);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Writer append(CharSequence csq) {\r\n+        if (csq == null) {\r\n+            write(\"null\");\r\n+        } else {\r\n+            write(csq.toString());\r\n+        }\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Writer append(CharSequence csq, int start, int end) {\r\n+        CharSequence cs = (csq == null ? \"null\" : csq);\r\n+        write(cs.subSequence(start, end).toString());\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Writer append(char c) {\r\n+        mBuffer.append(c);\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close() {\r\n+    }\r\n+\r\n+    @Override\r\n+    public void flush() {\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return mBuffer.toString();\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/common/json/GenericJSONConverter.java", "source2": "org/apache/dubbo/common/json/GenericJSONConverter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,528 +1,528 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.json;\n-\n-import org.apache.dubbo.common.bytecode.Wrapper;\n-import org.apache.dubbo.common.io.Bytes;\n-\n-import java.io.IOException;\n-import java.lang.reflect.Array;\n-import java.math.BigDecimal;\n-import java.math.BigInteger;\n-import java.text.ParseException;\n-import java.text.SimpleDateFormat;\n-import java.util.Collection;\n-import java.util.Date;\n-import java.util.HashMap;\n-import java.util.Locale;\n-import java.util.Map;\n-import java.util.concurrent.atomic.AtomicInteger;\n-import java.util.concurrent.atomic.AtomicLong;\n-\n-@Deprecated\n-public class GenericJSONConverter implements JSONConverter {\n-    private static final String DATE_FORMAT = \"yyyy-MM-dd HH:mm:ss\";\n-    private static final Map<Class<?>, Encoder> GLOBAL_ENCODER_MAP = new HashMap<Class<?>, Encoder>();\n-    private static final Map<Class<?>, Decoder> GLOBAL_DECODER_MAP = new HashMap<Class<?>, Decoder>();\n-\n-    static {\n-        // init encoder map.\n-        Encoder e = new Encoder() {\n-            @Override\n-            public void encode(Object obj, JSONWriter jb) throws IOException {\n-                jb.valueBoolean((Boolean) obj);\n-            }\n-        };\n-        GLOBAL_ENCODER_MAP.put(boolean.class, e);\n-        GLOBAL_ENCODER_MAP.put(Boolean.class, e);\n-\n-        e = new Encoder() {\n-            @Override\n-            public void encode(Object obj, JSONWriter jb) throws IOException {\n-                jb.valueInt(((Number) obj).intValue());\n-            }\n-        };\n-        GLOBAL_ENCODER_MAP.put(int.class, e);\n-        GLOBAL_ENCODER_MAP.put(Integer.class, e);\n-        GLOBAL_ENCODER_MAP.put(short.class, e);\n-        GLOBAL_ENCODER_MAP.put(Short.class, e);\n-        GLOBAL_ENCODER_MAP.put(byte.class, e);\n-        GLOBAL_ENCODER_MAP.put(Byte.class, e);\n-        GLOBAL_ENCODER_MAP.put(AtomicInteger.class, e);\n-\n-        e = new Encoder() {\n-            @Override\n-            public void encode(Object obj, JSONWriter jb) throws IOException {\n-                jb.valueString(Character.toString((Character) obj));\n-            }\n-        };\n-        GLOBAL_ENCODER_MAP.put(char.class, e);\n-        GLOBAL_ENCODER_MAP.put(Character.class, e);\n-\n-        e = new Encoder() {\n-            @Override\n-            public void encode(Object obj, JSONWriter jb) throws IOException {\n-                jb.valueLong(((Number) obj).longValue());\n-            }\n-        };\n-        GLOBAL_ENCODER_MAP.put(long.class, e);\n-        GLOBAL_ENCODER_MAP.put(Long.class, e);\n-        GLOBAL_ENCODER_MAP.put(AtomicLong.class, e);\n-        GLOBAL_ENCODER_MAP.put(BigInteger.class, e);\n-\n-        e = new Encoder() {\n-            @Override\n-            public void encode(Object obj, JSONWriter jb) throws IOException {\n-                jb.valueFloat(((Number) obj).floatValue());\n-            }\n-        };\n-        GLOBAL_ENCODER_MAP.put(float.class, e);\n-        GLOBAL_ENCODER_MAP.put(Float.class, e);\n-\n-        e = new Encoder() {\n-            @Override\n-            public void encode(Object obj, JSONWriter jb) throws IOException {\n-                jb.valueDouble(((Number) obj).doubleValue());\n-            }\n-        };\n-        GLOBAL_ENCODER_MAP.put(double.class, e);\n-        GLOBAL_ENCODER_MAP.put(Double.class, e);\n-        GLOBAL_ENCODER_MAP.put(BigDecimal.class, e);\n-\n-        e = new Encoder() {\n-            @Override\n-            public void encode(Object obj, JSONWriter jb) throws IOException {\n-                jb.valueString(obj.toString());\n-            }\n-        };\n-        GLOBAL_ENCODER_MAP.put(String.class, e);\n-        GLOBAL_ENCODER_MAP.put(StringBuilder.class, e);\n-        GLOBAL_ENCODER_MAP.put(StringBuffer.class, e);\n-\n-        e = new Encoder() {\n-            @Override\n-            public void encode(Object obj, JSONWriter jb) throws IOException {\n-                jb.valueString(Bytes.bytes2base64((byte[]) obj));\n-            }\n-        };\n-        GLOBAL_ENCODER_MAP.put(byte[].class, e);\n-\n-        e = new Encoder() {\n-            @Override\n-            public void encode(Object obj, JSONWriter jb) throws IOException {\n-                jb.valueString(new SimpleDateFormat(DATE_FORMAT).format((Date) obj));\n-            }\n-        };\n-        GLOBAL_ENCODER_MAP.put(Date.class, e);\n-\n-        // init decoder map.\n-        Decoder d = Object::toString;\n-        GLOBAL_DECODER_MAP.put(String.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) {\n-                if (jv instanceof Boolean) {\n-                    return ((Boolean) jv).booleanValue();\n-                }\n-                return false;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(boolean.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) {\n-                if (jv instanceof Boolean) {\n-                    return (Boolean) jv;\n-                }\n-                return (Boolean) null;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(Boolean.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) {\n-                if (jv instanceof String && ((String) jv).length() > 0) {\n-                    return ((String) jv).charAt(0);\n-                }\n-                return (char) 0;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(char.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) {\n-                if (jv instanceof String && ((String) jv).length() > 0) {\n-                    return ((String) jv).charAt(0);\n-                }\n-                return (Character) null;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(Character.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) {\n-                if (jv instanceof Number) {\n-                    return ((Number) jv).intValue();\n-                }\n-                return 0;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(int.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) {\n-                if (jv instanceof Number) {\n-                    return Integer.valueOf(((Number) jv).intValue());\n-                }\n-                return (Integer) null;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(Integer.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) {\n-                if (jv instanceof Number) {\n-                    return ((Number) jv).shortValue();\n-                }\n-                return (short) 0;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(short.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) {\n-                if (jv instanceof Number) {\n-                    return Short.valueOf(((Number) jv).shortValue());\n-                }\n-                return (Short) null;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(Short.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) {\n-                if (jv instanceof Number) {\n-                    return ((Number) jv).longValue();\n-                }\n-                return (long) 0;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(long.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) {\n-                if (jv instanceof Number) {\n-                    return Long.valueOf(((Number) jv).longValue());\n-                }\n-                return (Long) null;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(Long.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) {\n-                if (jv instanceof Number) {\n-                    return ((Number) jv).floatValue();\n-                }\n-                return (float) 0;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(float.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) {\n-                if (jv instanceof Number) {\n-                    return new Float(((Number) jv).floatValue());\n-                }\n-                return (Float) null;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(Float.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) {\n-                if (jv instanceof Number) {\n-                    return ((Number) jv).doubleValue();\n-                }\n-                return (double) 0;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(double.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) {\n-                if (jv instanceof Number) {\n-                    return new Double(((Number) jv).doubleValue());\n-                }\n-                return (Double) null;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(Double.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) {\n-                if (jv instanceof Number) {\n-                    return ((Number) jv).byteValue();\n-                }\n-                return (byte) 0;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(byte.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) {\n-                if (jv instanceof Number) {\n-                    return Byte.valueOf(((Number) jv).byteValue());\n-                }\n-                return (Byte) null;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(Byte.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) throws IOException {\n-                if (jv instanceof String) {\n-                    return Bytes.base642bytes((String) jv);\n-                }\n-                return (byte[]) null;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(byte[].class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) throws IOException {\n-                return new StringBuilder(jv.toString());\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(StringBuilder.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) throws IOException {\n-                return new StringBuffer(jv.toString());\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(StringBuffer.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) throws IOException {\n-                if (jv instanceof Number) {\n-                    return BigInteger.valueOf(((Number) jv).longValue());\n-                }\n-                return (BigInteger) null;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(BigInteger.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) throws IOException {\n-                if (jv instanceof Number) {\n-                    return BigDecimal.valueOf(((Number) jv).doubleValue());\n-                }\n-                return (BigDecimal) null;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(BigDecimal.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) throws IOException {\n-                if (jv instanceof Number) {\n-                    return new AtomicInteger(((Number) jv).intValue());\n-                }\n-                return (AtomicInteger) null;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(AtomicInteger.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) throws IOException {\n-                if (jv instanceof Number) {\n-                    return new AtomicLong(((Number) jv).longValue());\n-                }\n-                return (AtomicLong) null;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(AtomicLong.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) throws IOException {\n-                if (jv instanceof String) {\n-                    try {\n-                        return new SimpleDateFormat(DATE_FORMAT).parse((String) jv);\n-                    } catch (ParseException e) {\n-                        throw new IllegalArgumentException(e.getMessage(), e);\n-                    }\n-                }\n-                if (jv instanceof Number) {\n-                    return new Date(((Number) jv).longValue());\n-                }\n-                return (Date) null;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(Date.class, d);\n-\n-        d = new Decoder() {\n-            @Override\n-            public Object decode(Object jv) throws IOException {\n-                if (jv instanceof String) {\n-                    String[] items = ((String)jv).split(\"_\");\n-                    if(items.length == 1){\n-                        return new Locale(items[0]);\n-                    }\n-                    if(items.length == 2){\n-                        return new Locale(items[0], items[1]);\n-                    }\n-                    return new Locale(items[0], items[1], items[2]);\n-                }\n-                return (Locale)null;\n-            }\n-        };\n-        GLOBAL_DECODER_MAP.put(Locale.class, d);\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public void writeValue(Object obj, JSONWriter jb, boolean writeClass) throws IOException {\n-        if (obj == null) {\n-            jb.valueNull();\n-            return;\n-        }\n-        Class<?> c = obj.getClass();\n-        Encoder encoder = GLOBAL_ENCODER_MAP.get(c);\n-\n-        if (encoder != null) {\n-            encoder.encode(obj, jb);\n-        } else if (obj instanceof JSONNode) {\n-            ((JSONNode) obj).writeJSON(this, jb, writeClass);\n-        } else if (c.isEnum()) {\n-            jb.valueString(((Enum<?>) obj).name());\n-        } else if (c.isArray()) {\n-            int len = Array.getLength(obj);\n-            jb.arrayBegin();\n-            for (int i = 0; i < len; i++) {\n-                writeValue(Array.get(obj, i), jb, writeClass);\n-            }\n-            jb.arrayEnd();\n-        } else if (Map.class.isAssignableFrom(c)) {\n-            Object key, value;\n-            jb.objectBegin();\n-            for (Map.Entry<Object, Object> entry : ((Map<Object, Object>) obj).entrySet()) {\n-                key = entry.getKey();\n-                if (key == null) {\n-                    continue;\n-                }\n-                jb.objectItem(key.toString());\n-\n-                value = entry.getValue();\n-                if (value == null) {\n-                    jb.valueNull();\n-                } else {\n-                    writeValue(value, jb, writeClass);\n-                }\n-            }\n-            jb.objectEnd();\n-        } else if (Collection.class.isAssignableFrom(c)) {\n-            jb.arrayBegin();\n-            for (Object item : (Collection<Object>) obj) {\n-                if (item == null) {\n-                    jb.valueNull();\n-                } else {\n-                    writeValue(item, jb, writeClass);\n-                }\n-            }\n-            jb.arrayEnd();\n-        } else if(obj instanceof Locale) {\n-            jb.valueString(obj.toString());\n-        } else {\n-            jb.objectBegin();\n-\n-            Wrapper w = Wrapper.getWrapper(c);\n-            String[] pns = w.getPropertyNames();\n-\n-            for (String pn : pns) {\n-                if ((obj instanceof Throwable) && (\n-                        \"localizedMessage\".equals(pn)\n-                                || \"cause\".equals(pn)\n-                                || \"suppressed\".equals(pn)\n-                                || \"stackTrace\".equals(pn))) {\n-                    continue;\n-                }\n-\n-                jb.objectItem(pn);\n-\n-                Object value = w.getPropertyValue(obj, pn);\n-                if (value == null || value == obj) {\n-                    jb.valueNull();\n-                } else {\n-                    writeValue(value, jb, writeClass);\n-                }\n-            }\n-            if (writeClass) {\n-                jb.objectItem(JSONVisitor.CLASS_PROPERTY);\n-                writeValue(obj.getClass().getName(), jb, writeClass);\n-            }\n-            jb.objectEnd();\n-        }\n-    }\n-\n-    @Override\n-    @SuppressWarnings({\"unchecked\", \"rawtypes\"})\n-    public Object readValue(Class<?> c, Object jv) throws IOException {\n-        if (jv == null) {\n-            return null;\n-        }\n-        Decoder decoder = GLOBAL_DECODER_MAP.get(c);\n-        if (decoder != null) {\n-            return decoder.decode(jv);\n-        }\n-        if (c.isEnum()) {\n-            return Enum.valueOf((Class<Enum>) c, String.valueOf(jv));\n-        }\n-        return jv;\n-    }\n-\n-    protected interface Encoder {\n-        void encode(Object obj, JSONWriter jb) throws IOException;\n-    }\n-\n-    protected interface Decoder {\n-        Object decode(Object jv) throws IOException;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.json;\r\n+\r\n+import org.apache.dubbo.common.bytecode.Wrapper;\r\n+import org.apache.dubbo.common.io.Bytes;\r\n+\r\n+import java.io.IOException;\r\n+import java.lang.reflect.Array;\r\n+import java.math.BigDecimal;\r\n+import java.math.BigInteger;\r\n+import java.text.ParseException;\r\n+import java.text.SimpleDateFormat;\r\n+import java.util.Collection;\r\n+import java.util.Date;\r\n+import java.util.HashMap;\r\n+import java.util.Locale;\r\n+import java.util.Map;\r\n+import java.util.concurrent.atomic.AtomicInteger;\r\n+import java.util.concurrent.atomic.AtomicLong;\r\n+\r\n+@Deprecated\r\n+public class GenericJSONConverter implements JSONConverter {\r\n+    private static final String DATE_FORMAT = \"yyyy-MM-dd HH:mm:ss\";\r\n+    private static final Map<Class<?>, Encoder> GLOBAL_ENCODER_MAP = new HashMap<Class<?>, Encoder>();\r\n+    private static final Map<Class<?>, Decoder> GLOBAL_DECODER_MAP = new HashMap<Class<?>, Decoder>();\r\n+\r\n+    static {\r\n+        // init encoder map.\r\n+        Encoder e = new Encoder() {\r\n+            @Override\r\n+            public void encode(Object obj, JSONWriter jb) throws IOException {\r\n+                jb.valueBoolean((Boolean) obj);\r\n+            }\r\n+        };\r\n+        GLOBAL_ENCODER_MAP.put(boolean.class, e);\r\n+        GLOBAL_ENCODER_MAP.put(Boolean.class, e);\r\n+\r\n+        e = new Encoder() {\r\n+            @Override\r\n+            public void encode(Object obj, JSONWriter jb) throws IOException {\r\n+                jb.valueInt(((Number) obj).intValue());\r\n+            }\r\n+        };\r\n+        GLOBAL_ENCODER_MAP.put(int.class, e);\r\n+        GLOBAL_ENCODER_MAP.put(Integer.class, e);\r\n+        GLOBAL_ENCODER_MAP.put(short.class, e);\r\n+        GLOBAL_ENCODER_MAP.put(Short.class, e);\r\n+        GLOBAL_ENCODER_MAP.put(byte.class, e);\r\n+        GLOBAL_ENCODER_MAP.put(Byte.class, e);\r\n+        GLOBAL_ENCODER_MAP.put(AtomicInteger.class, e);\r\n+\r\n+        e = new Encoder() {\r\n+            @Override\r\n+            public void encode(Object obj, JSONWriter jb) throws IOException {\r\n+                jb.valueString(Character.toString((Character) obj));\r\n+            }\r\n+        };\r\n+        GLOBAL_ENCODER_MAP.put(char.class, e);\r\n+        GLOBAL_ENCODER_MAP.put(Character.class, e);\r\n+\r\n+        e = new Encoder() {\r\n+            @Override\r\n+            public void encode(Object obj, JSONWriter jb) throws IOException {\r\n+                jb.valueLong(((Number) obj).longValue());\r\n+            }\r\n+        };\r\n+        GLOBAL_ENCODER_MAP.put(long.class, e);\r\n+        GLOBAL_ENCODER_MAP.put(Long.class, e);\r\n+        GLOBAL_ENCODER_MAP.put(AtomicLong.class, e);\r\n+        GLOBAL_ENCODER_MAP.put(BigInteger.class, e);\r\n+\r\n+        e = new Encoder() {\r\n+            @Override\r\n+            public void encode(Object obj, JSONWriter jb) throws IOException {\r\n+                jb.valueFloat(((Number) obj).floatValue());\r\n+            }\r\n+        };\r\n+        GLOBAL_ENCODER_MAP.put(float.class, e);\r\n+        GLOBAL_ENCODER_MAP.put(Float.class, e);\r\n+\r\n+        e = new Encoder() {\r\n+            @Override\r\n+            public void encode(Object obj, JSONWriter jb) throws IOException {\r\n+                jb.valueDouble(((Number) obj).doubleValue());\r\n+            }\r\n+        };\r\n+        GLOBAL_ENCODER_MAP.put(double.class, e);\r\n+        GLOBAL_ENCODER_MAP.put(Double.class, e);\r\n+        GLOBAL_ENCODER_MAP.put(BigDecimal.class, e);\r\n+\r\n+        e = new Encoder() {\r\n+            @Override\r\n+            public void encode(Object obj, JSONWriter jb) throws IOException {\r\n+                jb.valueString(obj.toString());\r\n+            }\r\n+        };\r\n+        GLOBAL_ENCODER_MAP.put(String.class, e);\r\n+        GLOBAL_ENCODER_MAP.put(StringBuilder.class, e);\r\n+        GLOBAL_ENCODER_MAP.put(StringBuffer.class, e);\r\n+\r\n+        e = new Encoder() {\r\n+            @Override\r\n+            public void encode(Object obj, JSONWriter jb) throws IOException {\r\n+                jb.valueString(Bytes.bytes2base64((byte[]) obj));\r\n+            }\r\n+        };\r\n+        GLOBAL_ENCODER_MAP.put(byte[].class, e);\r\n+\r\n+        e = new Encoder() {\r\n+            @Override\r\n+            public void encode(Object obj, JSONWriter jb) throws IOException {\r\n+                jb.valueString(new SimpleDateFormat(DATE_FORMAT).format((Date) obj));\r\n+            }\r\n+        };\r\n+        GLOBAL_ENCODER_MAP.put(Date.class, e);\r\n+\r\n+        // init decoder map.\r\n+        Decoder d = Object::toString;\r\n+        GLOBAL_DECODER_MAP.put(String.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) {\r\n+                if (jv instanceof Boolean) {\r\n+                    return ((Boolean) jv).booleanValue();\r\n+                }\r\n+                return false;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(boolean.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) {\r\n+                if (jv instanceof Boolean) {\r\n+                    return (Boolean) jv;\r\n+                }\r\n+                return (Boolean) null;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(Boolean.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) {\r\n+                if (jv instanceof String && ((String) jv).length() > 0) {\r\n+                    return ((String) jv).charAt(0);\r\n+                }\r\n+                return (char) 0;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(char.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) {\r\n+                if (jv instanceof String && ((String) jv).length() > 0) {\r\n+                    return ((String) jv).charAt(0);\r\n+                }\r\n+                return (Character) null;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(Character.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) {\r\n+                if (jv instanceof Number) {\r\n+                    return ((Number) jv).intValue();\r\n+                }\r\n+                return 0;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(int.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) {\r\n+                if (jv instanceof Number) {\r\n+                    return Integer.valueOf(((Number) jv).intValue());\r\n+                }\r\n+                return (Integer) null;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(Integer.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) {\r\n+                if (jv instanceof Number) {\r\n+                    return ((Number) jv).shortValue();\r\n+                }\r\n+                return (short) 0;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(short.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) {\r\n+                if (jv instanceof Number) {\r\n+                    return Short.valueOf(((Number) jv).shortValue());\r\n+                }\r\n+                return (Short) null;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(Short.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) {\r\n+                if (jv instanceof Number) {\r\n+                    return ((Number) jv).longValue();\r\n+                }\r\n+                return (long) 0;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(long.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) {\r\n+                if (jv instanceof Number) {\r\n+                    return Long.valueOf(((Number) jv).longValue());\r\n+                }\r\n+                return (Long) null;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(Long.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) {\r\n+                if (jv instanceof Number) {\r\n+                    return ((Number) jv).floatValue();\r\n+                }\r\n+                return (float) 0;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(float.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) {\r\n+                if (jv instanceof Number) {\r\n+                    return new Float(((Number) jv).floatValue());\r\n+                }\r\n+                return (Float) null;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(Float.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) {\r\n+                if (jv instanceof Number) {\r\n+                    return ((Number) jv).doubleValue();\r\n+                }\r\n+                return (double) 0;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(double.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) {\r\n+                if (jv instanceof Number) {\r\n+                    return new Double(((Number) jv).doubleValue());\r\n+                }\r\n+                return (Double) null;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(Double.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) {\r\n+                if (jv instanceof Number) {\r\n+                    return ((Number) jv).byteValue();\r\n+                }\r\n+                return (byte) 0;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(byte.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) {\r\n+                if (jv instanceof Number) {\r\n+                    return Byte.valueOf(((Number) jv).byteValue());\r\n+                }\r\n+                return (Byte) null;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(Byte.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) throws IOException {\r\n+                if (jv instanceof String) {\r\n+                    return Bytes.base642bytes((String) jv);\r\n+                }\r\n+                return (byte[]) null;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(byte[].class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) throws IOException {\r\n+                return new StringBuilder(jv.toString());\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(StringBuilder.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) throws IOException {\r\n+                return new StringBuffer(jv.toString());\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(StringBuffer.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) throws IOException {\r\n+                if (jv instanceof Number) {\r\n+                    return BigInteger.valueOf(((Number) jv).longValue());\r\n+                }\r\n+                return (BigInteger) null;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(BigInteger.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) throws IOException {\r\n+                if (jv instanceof Number) {\r\n+                    return BigDecimal.valueOf(((Number) jv).doubleValue());\r\n+                }\r\n+                return (BigDecimal) null;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(BigDecimal.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) throws IOException {\r\n+                if (jv instanceof Number) {\r\n+                    return new AtomicInteger(((Number) jv).intValue());\r\n+                }\r\n+                return (AtomicInteger) null;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(AtomicInteger.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) throws IOException {\r\n+                if (jv instanceof Number) {\r\n+                    return new AtomicLong(((Number) jv).longValue());\r\n+                }\r\n+                return (AtomicLong) null;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(AtomicLong.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) throws IOException {\r\n+                if (jv instanceof String) {\r\n+                    try {\r\n+                        return new SimpleDateFormat(DATE_FORMAT).parse((String) jv);\r\n+                    } catch (ParseException e) {\r\n+                        throw new IllegalArgumentException(e.getMessage(), e);\r\n+                    }\r\n+                }\r\n+                if (jv instanceof Number) {\r\n+                    return new Date(((Number) jv).longValue());\r\n+                }\r\n+                return (Date) null;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(Date.class, d);\r\n+\r\n+        d = new Decoder() {\r\n+            @Override\r\n+            public Object decode(Object jv) throws IOException {\r\n+                if (jv instanceof String) {\r\n+                    String[] items = ((String)jv).split(\"_\");\r\n+                    if(items.length == 1){\r\n+                        return new Locale(items[0]);\r\n+                    }\r\n+                    if(items.length == 2){\r\n+                        return new Locale(items[0], items[1]);\r\n+                    }\r\n+                    return new Locale(items[0], items[1], items[2]);\r\n+                }\r\n+                return (Locale)null;\r\n+            }\r\n+        };\r\n+        GLOBAL_DECODER_MAP.put(Locale.class, d);\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public void writeValue(Object obj, JSONWriter jb, boolean writeClass) throws IOException {\r\n+        if (obj == null) {\r\n+            jb.valueNull();\r\n+            return;\r\n+        }\r\n+        Class<?> c = obj.getClass();\r\n+        Encoder encoder = GLOBAL_ENCODER_MAP.get(c);\r\n+\r\n+        if (encoder != null) {\r\n+            encoder.encode(obj, jb);\r\n+        } else if (obj instanceof JSONNode) {\r\n+            ((JSONNode) obj).writeJSON(this, jb, writeClass);\r\n+        } else if (c.isEnum()) {\r\n+            jb.valueString(((Enum<?>) obj).name());\r\n+        } else if (c.isArray()) {\r\n+            int len = Array.getLength(obj);\r\n+            jb.arrayBegin();\r\n+            for (int i = 0; i < len; i++) {\r\n+                writeValue(Array.get(obj, i), jb, writeClass);\r\n+            }\r\n+            jb.arrayEnd();\r\n+        } else if (Map.class.isAssignableFrom(c)) {\r\n+            Object key, value;\r\n+            jb.objectBegin();\r\n+            for (Map.Entry<Object, Object> entry : ((Map<Object, Object>) obj).entrySet()) {\r\n+                key = entry.getKey();\r\n+                if (key == null) {\r\n+                    continue;\r\n+                }\r\n+                jb.objectItem(key.toString());\r\n+\r\n+                value = entry.getValue();\r\n+                if (value == null) {\r\n+                    jb.valueNull();\r\n+                } else {\r\n+                    writeValue(value, jb, writeClass);\r\n+                }\r\n+            }\r\n+            jb.objectEnd();\r\n+        } else if (Collection.class.isAssignableFrom(c)) {\r\n+            jb.arrayBegin();\r\n+            for (Object item : (Collection<Object>) obj) {\r\n+                if (item == null) {\r\n+                    jb.valueNull();\r\n+                } else {\r\n+                    writeValue(item, jb, writeClass);\r\n+                }\r\n+            }\r\n+            jb.arrayEnd();\r\n+        } else if(obj instanceof Locale) {\r\n+            jb.valueString(obj.toString());\r\n+        } else {\r\n+            jb.objectBegin();\r\n+\r\n+            Wrapper w = Wrapper.getWrapper(c);\r\n+            String[] pns = w.getPropertyNames();\r\n+\r\n+            for (String pn : pns) {\r\n+                if ((obj instanceof Throwable) && (\r\n+                        \"localizedMessage\".equals(pn)\r\n+                                || \"cause\".equals(pn)\r\n+                                || \"suppressed\".equals(pn)\r\n+                                || \"stackTrace\".equals(pn))) {\r\n+                    continue;\r\n+                }\r\n+\r\n+                jb.objectItem(pn);\r\n+\r\n+                Object value = w.getPropertyValue(obj, pn);\r\n+                if (value == null || value == obj) {\r\n+                    jb.valueNull();\r\n+                } else {\r\n+                    writeValue(value, jb, writeClass);\r\n+                }\r\n+            }\r\n+            if (writeClass) {\r\n+                jb.objectItem(JSONVisitor.CLASS_PROPERTY);\r\n+                writeValue(obj.getClass().getName(), jb, writeClass);\r\n+            }\r\n+            jb.objectEnd();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings({\"unchecked\", \"rawtypes\"})\r\n+    public Object readValue(Class<?> c, Object jv) throws IOException {\r\n+        if (jv == null) {\r\n+            return null;\r\n+        }\r\n+        Decoder decoder = GLOBAL_DECODER_MAP.get(c);\r\n+        if (decoder != null) {\r\n+            return decoder.decode(jv);\r\n+        }\r\n+        if (c.isEnum()) {\r\n+            return Enum.valueOf((Class<Enum>) c, String.valueOf(jv));\r\n+        }\r\n+        return jv;\r\n+    }\r\n+\r\n+    protected interface Encoder {\r\n+        void encode(Object obj, JSONWriter jb) throws IOException;\r\n+    }\r\n+\r\n+    protected interface Decoder {\r\n+        Object decode(Object jv) throws IOException;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/json/Yylex.java", "source2": "org/apache/dubbo/common/json/Yylex.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,847 +1,847 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.json;\n-\n-/**\n- * This class is a scanner generated by\n- * <a href=\"http://www.jflex.de/\">JFlex</a> 1.4.3\n- * on 7/3/10 3:12 AM from the specification file\n- * <tt>/Users/qianlei/dev/proj/dubbo-1.1/dubbo.common/src/main/java/org.apache.dubbo/common/json/json.flex</tt>\n- */\n-@Deprecated\n-public class Yylex {\n-\n-    /**\n-     * This character denotes the end of file\n-     */\n-    public static final int YYEOF = -1;\n-    /**\n-     * lexical states\n-     */\n-    public static final int STR2 = 4;\n-    public static final int STR1 = 2;\n-    public static final int YYINITIAL = 0;\n-    /**\n-     * initial size of the lookahead buffer\n-     */\n-    private static final int ZZ_BUFFERSIZE = 16384;\n-    /**\n-     * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l\n-     * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l\n-     * at the beginning of a line\n-     * l is of the form l = 2*k, k a non negative integer\n-     */\n-    private static final int[] ZZ_LEXSTATE = {\n-            0, 0, 1, 1, 2, 2\n-    };\n-\n-    /**\n-     * Translates characters to character classes\n-     */\n-    private static final String ZZ_CMAP_PACKED =\n-            \"\\11\\0\\1\\13\\1\\13\\2\\0\\1\\13\\22\\0\\1\\13\\1\\0\\1\\10\\1\\0\" +\n-                    \"\\1\\2\\2\\0\\1\\11\\3\\0\\1\\7\\1\\43\\1\\4\\1\\5\\1\\14\\12\\1\" +\n-                    \"\\1\\44\\6\\0\\1\\33\\3\\3\\1\\6\\1\\32\\5\\2\\1\\34\\1\\2\\1\\36\" +\n-                    \"\\3\\2\\1\\25\\1\\35\\1\\24\\1\\26\\5\\2\\1\\41\\1\\12\\1\\42\\1\\0\" +\n-                    \"\\1\\2\\1\\0\\1\\27\\1\\15\\2\\3\\1\\23\\1\\16\\5\\2\\1\\30\\1\\2\" +\n-                    \"\\1\\17\\3\\2\\1\\20\\1\\31\\1\\21\\1\\22\\5\\2\\1\\37\\1\\0\\1\\40\" +\n-                    \"\\uff82\\0\";\n-\n-    /**\n-     * Translates characters to character classes\n-     */\n-    private static final char[] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);\n-    private static final String ZZ_ACTION_PACKED_0 =\n-            \"\\3\\0\\1\\1\\1\\2\\1\\3\\1\\1\\1\\4\\1\\5\\1\\6\" +\n-                    \"\\6\\3\\1\\7\\1\\10\\1\\11\\1\\12\\1\\13\\1\\14\\1\\15\" +\n-                    \"\\1\\16\\1\\0\\1\\15\\3\\0\\6\\3\\1\\17\\1\\20\\1\\21\" +\n-                    \"\\1\\22\\1\\23\\1\\24\\1\\25\\1\\26\\1\\0\\1\\27\\2\\30\" +\n-                    \"\\1\\0\\6\\3\\1\\0\\1\\3\\1\\31\\1\\32\\1\\3\\1\\0\" +\n-                    \"\\1\\33\\1\\0\\1\\34\";\n-    /**\n-     * Translates DFA states to action switch labels.\n-     */\n-    private static final int[] ZZ_ACTION = zzUnpackAction();\n-    private static final String ZZ_ROWMAP_PACKED_0 =\n-            \"\\0\\0\\0\\45\\0\\112\\0\\157\\0\\224\\0\\271\\0\\336\\0\\157\" +\n-                    \"\\0\\157\\0\\u0103\\0\\u0128\\0\\u014d\\0\\u0172\\0\\u0197\\0\\u01bc\\0\\u01e1\" +\n-                    \"\\0\\157\\0\\157\\0\\157\\0\\157\\0\\157\\0\\157\\0\\u0206\\0\\157\" +\n-                    \"\\0\\u022b\\0\\u0250\\0\\u0275\\0\\u029a\\0\\u02bf\\0\\u02e4\\0\\u0309\\0\\u032e\" +\n-                    \"\\0\\u0353\\0\\u0378\\0\\u039d\\0\\157\\0\\157\\0\\157\\0\\157\\0\\157\" +\n-                    \"\\0\\157\\0\\157\\0\\157\\0\\u03c2\\0\\157\\0\\u03e7\\0\\u040c\\0\\u040c\" +\n-                    \"\\0\\u0431\\0\\u0456\\0\\u047b\\0\\u04a0\\0\\u04c5\\0\\u04ea\\0\\u050f\\0\\u0534\" +\n-                    \"\\0\\271\\0\\271\\0\\u0559\\0\\u057e\\0\\271\\0\\u05a3\\0\\157\";\n-    /**\n-     * Translates a state to a row index in the transition table\n-     */\n-    private static final int[] ZZ_ROWMAP = zzUnpackRowMap();\n-    /**\n-     * The transition table of the DFA\n-     */\n-    private static final int[] ZZ_TRANS = {\n-            3, 4, 5, 5, 6, 3, 5, 3, 7, 8,\n-            3, 9, 3, 5, 10, 11, 5, 12, 5, 5,\n-            13, 5, 5, 5, 5, 5, 14, 5, 5, 5,\n-            15, 16, 17, 18, 19, 20, 21, 22, 22, 22,\n-            22, 22, 22, 22, 22, 23, 22, 24, 22, 22,\n-            22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\n-            22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\n-            22, 22, 22, 22, 25, 25, 25, 25, 25, 25,\n-            25, 25, 25, 23, 26, 25, 25, 25, 25, 25,\n-            25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n-            25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n-            25, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, 4,\n-            -1, -1, -1, 27, 28, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, 28, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, 5, 5, 5, -1,\n-            -1, 5, -1, -1, -1, -1, -1, -1, 5, 5,\n-            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n-            5, 5, 5, 5, 5, 5, -1, -1, -1, -1,\n-            -1, -1, -1, 4, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            9, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, 5, 5, 5,\n-            -1, -1, 5, -1, -1, -1, -1, -1, -1, 5,\n-            5, 5, 5, 5, 5, 5, 5, 5, 5, 29,\n-            5, 5, 5, 5, 5, 5, 5, -1, -1, -1,\n-            -1, -1, -1, -1, 5, 5, 5, -1, -1, 5,\n-            -1, -1, -1, -1, -1, -1, 5, 5, 5, 5,\n-            5, 30, 5, 5, 5, 5, 5, 5, 5, 5,\n-            5, 5, 5, 5, -1, -1, -1, -1, -1, -1,\n-            -1, 5, 5, 5, -1, -1, 5, -1, -1, -1,\n-            -1, -1, -1, 5, 5, 5, 31, 5, 5, 5,\n-            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n-            5, -1, -1, -1, -1, -1, -1, -1, 5, 5,\n-            5, -1, -1, 5, -1, -1, -1, -1, -1, -1,\n-            5, 5, 5, 5, 5, 5, 5, 5, 32, 5,\n-            5, 5, 5, 5, 5, 5, 5, 5, -1, -1,\n-            -1, -1, -1, -1, -1, 5, 5, 5, -1, -1,\n-            5, -1, -1, -1, -1, -1, -1, 5, 5, 5,\n-            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n-            5, 33, 5, 5, 5, -1, -1, -1, -1, -1,\n-            -1, -1, 5, 5, 5, -1, -1, 5, -1, -1,\n-            -1, -1, -1, -1, 5, 5, 5, 5, 5, 5,\n-            5, 5, 5, 34, 5, 5, 5, 5, 5, 5,\n-            5, 5, -1, -1, -1, -1, -1, -1, 22, 22,\n-            22, 22, 22, 22, 22, 22, -1, 22, -1, 22,\n-            22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\n-            22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\n-            22, 22, 22, 22, 22, -1, -1, -1, -1, -1,\n-            -1, -1, -1, 35, -1, 36, -1, 37, 38, 39,\n-            40, 41, 42, 43, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, 25, 25, 25, 25, 25, 25, 25, 25,\n-            25, -1, -1, 25, 25, 25, 25, 25, 25, 25,\n-            25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n-            25, 25, 25, 25, 25, 25, 25, 25, 25, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, 44, 36,\n-            -1, 37, 38, 39, 40, 41, 42, 43, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, 45, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, 46, -1, -1, 47, -1, -1,\n-            47, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, 5, 5, 5, -1, -1, 5, -1, -1, -1,\n-            -1, -1, -1, 5, 5, 5, 5, 5, 5, 5,\n-            5, 5, 5, 5, 48, 5, 5, 5, 5, 5,\n-            5, -1, -1, -1, -1, -1, -1, -1, 5, 5,\n-            5, -1, -1, 5, -1, -1, -1, -1, -1, -1,\n-            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n-            5, 49, 5, 5, 5, 5, 5, 5, -1, -1,\n-            -1, -1, -1, -1, -1, 5, 5, 5, -1, -1,\n-            5, -1, -1, -1, -1, -1, -1, 5, 5, 5,\n-            5, 5, 50, 5, 5, 5, 5, 5, 5, 5,\n-            5, 5, 5, 5, 5, -1, -1, -1, -1, -1,\n-            -1, -1, 5, 5, 5, -1, -1, 5, -1, -1,\n-            -1, -1, -1, -1, 5, 5, 5, 5, 5, 5,\n-            5, 5, 5, 51, 5, 5, 5, 5, 5, 5,\n-            5, 5, -1, -1, -1, -1, -1, -1, -1, 5,\n-            5, 5, -1, -1, 5, -1, -1, -1, -1, -1,\n-            -1, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n-            5, 5, 5, 5, 5, 5, 52, 5, 5, -1,\n-            -1, -1, -1, -1, -1, -1, 5, 5, 5, -1,\n-            -1, 5, -1, -1, -1, -1, -1, -1, 5, 5,\n-            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n-            5, 5, 5, 53, 5, 5, -1, -1, -1, -1,\n-            -1, -1, -1, 54, -1, 54, -1, -1, 54, -1,\n-            -1, -1, -1, -1, -1, 54, 54, -1, -1, -1,\n-            -1, 54, -1, -1, -1, 54, -1, -1, 54, 54,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            45, -1, -1, -1, -1, 28, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, 28, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, 46, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, 5, 5, 5, -1, -1, 5,\n-            -1, -1, -1, -1, -1, -1, 5, 5, 5, 5,\n-            5, 5, 5, 5, 5, 5, 5, 5, 55, 5,\n-            5, 5, 5, 5, -1, -1, -1, -1, -1, -1,\n-            -1, 5, 5, 5, -1, -1, 5, -1, -1, -1,\n-            -1, -1, -1, 5, 5, 5, 5, 5, 5, 5,\n-            5, 5, 5, 5, 56, 5, 5, 5, 5, 5,\n-            5, -1, -1, -1, -1, -1, -1, -1, 5, 5,\n-            5, -1, -1, 5, -1, -1, -1, -1, -1, -1,\n-            5, 5, 5, 5, 5, 5, 57, 5, 5, 5,\n-            5, 5, 5, 5, 5, 5, 5, 5, -1, -1,\n-            -1, -1, -1, -1, -1, 5, 5, 5, -1, -1,\n-            57, -1, -1, -1, -1, -1, -1, 5, 5, 5,\n-            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n-            5, 5, 5, 5, 5, -1, -1, -1, -1, -1,\n-            -1, -1, 5, 5, 5, -1, -1, 5, -1, -1,\n-            -1, -1, -1, -1, 5, 5, 5, 5, 5, 5,\n-            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n-            58, 5, -1, -1, -1, -1, -1, -1, -1, 5,\n-            5, 5, -1, -1, 5, -1, -1, -1, -1, -1,\n-            -1, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n-            5, 5, 5, 5, 5, 5, 56, 5, 5, -1,\n-            -1, -1, -1, -1, -1, -1, 59, -1, 59, -1,\n-            -1, 59, -1, -1, -1, -1, -1, -1, 59, 59,\n-            -1, -1, -1, -1, 59, -1, -1, -1, 59, -1,\n-            -1, 59, 59, -1, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, 5, 5, 5, -1, -1, 5, -1,\n-            -1, -1, -1, -1, -1, 5, 5, 5, 5, 5,\n-            5, 60, 5, 5, 5, 5, 5, 5, 5, 5,\n-            5, 5, 5, -1, -1, -1, -1, -1, -1, -1,\n-            5, 5, 5, -1, -1, 60, -1, -1, -1, -1,\n-            -1, -1, 5, 5, 5, 5, 5, 5, 5, 5,\n-            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n-            -1, -1, -1, -1, -1, -1, -1, 61, -1, 61,\n-            -1, -1, 61, -1, -1, -1, -1, -1, -1, 61,\n-            61, -1, -1, -1, -1, 61, -1, -1, -1, 61,\n-            -1, -1, 61, 61, -1, -1, -1, -1, -1, -1,\n-            -1, -1, -1, -1, 62, -1, 62, -1, -1, 62,\n-            -1, -1, -1, -1, -1, -1, 62, 62, -1, -1,\n-            -1, -1, 62, -1, -1, -1, 62, -1, -1, 62,\n-            62, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n-    };\n-    /* error codes */\n-    private static final int ZZ_UNKNOWN_ERROR = 0;\n-    private static final int ZZ_NO_MATCH = 1;\n-    private static final int ZZ_PUSHBACK_2BIG = 2;\n-    /* error messages for the codes above */\n-    private static final String[] ZZ_ERROR_MSG = {\n-            \"Unkown internal scanner error\",\n-            \"Error: could not match input\",\n-            \"Error: pushback value was too large\"\n-    };\n-    private static final String ZZ_ATTRIBUTE_PACKED_0 =\n-            \"\\3\\0\\1\\11\\3\\1\\2\\11\\7\\1\\6\\11\\1\\1\\1\\11\" +\n-                    \"\\1\\0\\1\\1\\3\\0\\6\\1\\10\\11\\1\\0\\1\\11\\2\\1\" +\n-                    \"\\1\\0\\6\\1\\1\\0\\4\\1\\1\\0\\1\\1\\1\\0\\1\\11\";\n-    /**\n-     * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>\n-     */\n-    private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute();\n-    /**\n-     * the input device\n-     */\n-    private java.io.Reader zzReader;\n-    /**\n-     * the current state of the DFA\n-     */\n-    private int zzState;\n-    /**\n-     * the current lexical state\n-     */\n-    private int zzLexicalState = YYINITIAL;\n-    /**\n-     * this buffer contains the current text to be matched and is\n-     * the source of the yytext() string\n-     */\n-    private char[] zzBuffer = new char[ZZ_BUFFERSIZE];\n-    /**\n-     * the textposition at the last accepting state\n-     */\n-    private int zzMarkedPos;\n-    /**\n-     * the current text position in the buffer\n-     */\n-    private int zzCurrentPos;\n-    /**\n-     * startRead marks the beginning of the yytext() string in the buffer\n-     */\n-    private int zzStartRead;\n-    /**\n-     * endRead marks the last character in the buffer, that has been read\n-     * from input\n-     */\n-    private int zzEndRead;\n-    /**\n-     * zzAtEOF == true <=> the scanner is at the EOF\n-     */\n-    private boolean zzAtEOF;\n-    /**\n-     * denotes if the user-EOF-code has already been executed\n-     */\n-    //private boolean zzEOFDone;\n-\n-  /* user code: */\n-    private StringBuffer sb;\n-\n-    /**\n-     * Creates a new scanner\n-     * There is also a java.io.InputStream version of this constructor.\n-     *\n-     * @param in the java.io.Reader to read input from.\n-     */\n-    Yylex(java.io.Reader in) {\n-        this.zzReader = in;\n-    }\n-\n-    /**\n-     * Creates a new scanner.\n-     * There is also java.io.Reader version of this constructor.\n-     *\n-     * @param in the java.io.Inputstream to read input from.\n-     */\n-    Yylex(java.io.InputStream in) {\n-        this(new java.io.InputStreamReader(in));\n-    }\n-\n-    private static int[] zzUnpackAction() {\n-        int[] result = new int[63];\n-        int offset = 0;\n-        offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);\n-        return result;\n-    }\n-\n-    private static int zzUnpackAction(String packed, int offset, int[] result) {\n-        int i = 0;       /* index in packed string  */\n-        int j = offset;  /* index in unpacked array */\n-        int l = packed.length();\n-        while (i < l) {\n-            int count = packed.charAt(i++);\n-            int value = packed.charAt(i++);\n-            do {\n-                result[j++] = value;\n-            } while (--count > 0);\n-        }\n-        return j;\n-    }\n-\n-    /** number of newlines encountered up to the start of the matched text */\n-    //private int yyline;\n-\n-    /** the number of characters up to the start of the matched text */\n-    //private int yychar;\n-\n-    /**\n-     * the number of characters from the last newline up to the start of the\n-     * matched text\n-     */\n-    //private int yycolumn;\n-\n-    /**\n-     * zzAtBOL == true <=> the scanner is currently at the beginning of a line\n-     */\n-    //private boolean zzAtBOL = true;\n-    private static int[] zzUnpackRowMap() {\n-        int[] result = new int[63];\n-        int offset = 0;\n-        offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);\n-        return result;\n-    }\n-\n-    private static int zzUnpackRowMap(String packed, int offset, int[] result) {\n-        int i = 0;  /* index in packed string  */\n-        int j = offset;  /* index in unpacked array */\n-        int l = packed.length();\n-        while (i < l) {\n-            int high = packed.charAt(i++) << 16;\n-            result[j++] = high | packed.charAt(i++);\n-        }\n-        return j;\n-    }\n-\n-    private static int[] zzUnpackAttribute() {\n-        int[] result = new int[63];\n-        int offset = 0;\n-        offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);\n-        return result;\n-    }\n-\n-    private static int zzUnpackAttribute(String packed, int offset, int[] result) {\n-        int i = 0;       /* index in packed string  */\n-        int j = offset;  /* index in unpacked array */\n-        int l = packed.length();\n-        while (i < l) {\n-            int count = packed.charAt(i++);\n-            int value = packed.charAt(i++);\n-            do {\n-                result[j++] = value;\n-            } while (--count > 0);\n-        }\n-        return j;\n-    }\n-\n-    /**\n-     * Unpacks the compressed character translation table.\n-     *\n-     * @param packed the packed character translation table\n-     * @return the unpacked character translation table\n-     */\n-    private static char[] zzUnpackCMap(String packed) {\n-        char[] map = new char[0x10000];\n-        int i = 0;  /* index in packed string  */\n-        int j = 0;  /* index in unpacked array */\n-        while (i < 122) {\n-            int count = packed.charAt(i++);\n-            char value = packed.charAt(i++);\n-            do {\n-                map[j++] = value;\n-            } while (--count > 0);\n-        }\n-        return map;\n-    }\n-\n-\n-    /**\n-     * Refills the input buffer.\n-     *\n-     * @return <code>false</code>, iff there was new input.\n-     * @throws java.io.IOException if any I/O-Error occurs\n-     */\n-    private boolean zzRefill() throws java.io.IOException {\n-\n-    /* first: make room (if you can) */\n-        if (zzStartRead > 0) {\n-            System.arraycopy(zzBuffer, zzStartRead,\n-                    zzBuffer, 0,\n-                    zzEndRead - zzStartRead);\n-\n-      /* translate stored positions */\n-            zzEndRead -= zzStartRead;\n-            zzCurrentPos -= zzStartRead;\n-            zzMarkedPos -= zzStartRead;\n-            zzStartRead = 0;\n-        }\n-\n-    /* is the buffer big enough? */\n-        if (zzCurrentPos >= zzBuffer.length) {\n-      /* if not: blow it up */\n-            char[] newBuffer = new char[zzCurrentPos * 2];\n-            System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);\n-            zzBuffer = newBuffer;\n-        }\n-\n-    /* finally: fill the buffer with new input */\n-        int numRead = zzReader.read(zzBuffer, zzEndRead,\n-                zzBuffer.length - zzEndRead);\n-\n-        if (numRead > 0) {\n-            zzEndRead += numRead;\n-            return false;\n-        }\n-        // unlikely but not impossible: read 0 characters, but not at end of stream\n-        if (numRead == 0) {\n-            int c = zzReader.read();\n-            if (c == -1) {\n-                return true;\n-            } else {\n-                zzBuffer[zzEndRead++] = (char) c;\n-                return false;\n-            }\n-        }\n-\n-        // numRead < 0\n-        return true;\n-    }\n-\n-\n-    /**\n-     * Closes the input stream.\n-     */\n-    public final void yyclose() throws java.io.IOException {\n-        zzAtEOF = true;            /* indicate end of file */\n-        zzEndRead = zzStartRead;  /* invalidate buffer    */\n-\n-        if (zzReader != null) {\n-            zzReader.close();\n-        }\n-    }\n-\n-\n-    /**\n-     * Resets the scanner to read from a new input stream.\n-     * Does not close the old reader.\n-     * <p>\n-     * All internal variables are reset, the old input stream\n-     * <b>cannot</b> be reused (internal buffer is discarded and lost).\n-     * Lexical state is set to <tt>ZZ_INITIAL</tt>.\n-     *\n-     * @param reader the new input stream\n-     */\n-    public final void yyreset(java.io.Reader reader) {\n-        zzReader = reader;\n-        //zzAtBOL  = true;\n-        zzAtEOF = false;\n-        //zzEOFDone = false;\n-        zzEndRead = zzStartRead = 0;\n-        zzCurrentPos = zzMarkedPos = 0;\n-        //yyline = yychar = yycolumn = 0;\n-        zzLexicalState = YYINITIAL;\n-    }\n-\n-\n-    /**\n-     * Returns the current lexical state.\n-     */\n-    public final int yystate() {\n-        return zzLexicalState;\n-    }\n-\n-\n-    /**\n-     * Enters a new lexical state\n-     *\n-     * @param newState the new lexical state\n-     */\n-    public final void yybegin(int newState) {\n-        zzLexicalState = newState;\n-    }\n-\n-\n-    /**\n-     * Returns the text matched by the current regular expression.\n-     */\n-    public final String yytext() {\n-        return new String(zzBuffer, zzStartRead, zzMarkedPos - zzStartRead);\n-    }\n-\n-\n-    /**\n-     * Returns the character at position <tt>pos</tt> from the\n-     * matched text.\n-     * <p>\n-     * It is equivalent to yytext().charAt(pos), but faster\n-     *\n-     * @param pos the position of the character to fetch.\n-     *            A value from 0 to yylength()-1.\n-     * @return the character at position pos\n-     */\n-    public final char yycharat(int pos) {\n-        return zzBuffer[zzStartRead + pos];\n-    }\n-\n-\n-    /**\n-     * Returns the length of the matched text region.\n-     */\n-    public final int yylength() {\n-        return zzMarkedPos - zzStartRead;\n-    }\n-\n-\n-    /**\n-     * Reports an error that occured while scanning.\n-     * <p>\n-     * In a wellformed scanner (no or only correct usage of\n-     * yypushback(int) and a match-all fallback rule) this method\n-     * will only be called with things that \"Can't Possibly Happen\".\n-     * If this method is called, something is seriously wrong\n-     * (e.g. a JFlex bug producing a faulty scanner etc.).\n-     * <p>\n-     * Usual syntax/scanner level error handling should be done\n-     * in error fallback rules.\n-     *\n-     * @param errorCode the code of the errormessage to display\n-     */\n-    private void zzScanError(int errorCode) {\n-        String message;\n-        try {\n-            message = ZZ_ERROR_MSG[errorCode];\n-        } catch (ArrayIndexOutOfBoundsException e) {\n-            message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];\n-        }\n-\n-        throw new Error(message);\n-    }\n-\n-\n-    /**\n-     * Pushes the specified amount of characters back into the input stream.\n-     * <p>\n-     * They will be read again by then next call of the scanning method\n-     *\n-     * @param number the number of characters to be read again.\n-     *               This number must not be greater than yylength()!\n-     */\n-    public void yypushback(int number) {\n-        if (number > yylength()) {\n-            zzScanError(ZZ_PUSHBACK_2BIG);\n-        }\n-\n-        zzMarkedPos -= number;\n-    }\n-\n-\n-    /**\n-     * Resumes scanning until the next regular expression is matched,\n-     * the end of input is encountered or an I/O-Error occurs.\n-     *\n-     * @return the next token\n-     * @throws java.io.IOException if any I/O-Error occurs\n-     */\n-    public JSONToken yylex() throws java.io.IOException, ParseException {\n-        int zzInput;\n-        int zzAction;\n-\n-        // cached fields:\n-        int zzCurrentPosL;\n-        int zzMarkedPosL;\n-        int zzEndReadL = zzEndRead;\n-        char[] zzBufferL = zzBuffer;\n-        char[] zzCMapL = ZZ_CMAP;\n-\n-        int[] zzTransL = ZZ_TRANS;\n-        int[] zzRowMapL = ZZ_ROWMAP;\n-        int[] zzAttrL = ZZ_ATTRIBUTE;\n-\n-        while (true) {\n-            zzMarkedPosL = zzMarkedPos;\n-\n-            zzAction = -1;\n-\n-            zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;\n-\n-            zzState = ZZ_LEXSTATE[zzLexicalState];\n-\n-\n-            zzForAction:\n-            {\n-                while (true) {\n-\n-                    if (zzCurrentPosL < zzEndReadL) {\n-                        zzInput = zzBufferL[zzCurrentPosL++];\n-                    } else if (zzAtEOF) {\n-                        zzInput = YYEOF;\n-                        break zzForAction;\n-                    } else {\n-                        // store back cached positions\n-                        zzCurrentPos = zzCurrentPosL;\n-                        zzMarkedPos = zzMarkedPosL;\n-                        boolean eof = zzRefill();\n-                        // get translated positions and possibly new buffer\n-                        zzCurrentPosL = zzCurrentPos;\n-                        zzMarkedPosL = zzMarkedPos;\n-                        zzBufferL = zzBuffer;\n-                        zzEndReadL = zzEndRead;\n-                        if (eof) {\n-                            zzInput = YYEOF;\n-                            break zzForAction;\n-                        } else {\n-                            zzInput = zzBufferL[zzCurrentPosL++];\n-                        }\n-                    }\n-                    int zzNext = zzTransL[zzRowMapL[zzState] + zzCMapL[zzInput]];\n-                    if (zzNext == -1) {\n-                        break zzForAction;\n-                    }\n-                    zzState = zzNext;\n-\n-                    int zzAttributes = zzAttrL[zzState];\n-                    if ((zzAttributes & 1) == 1) {\n-                        zzAction = zzState;\n-                        zzMarkedPosL = zzCurrentPosL;\n-                        if ((zzAttributes & 8) == 8) {\n-                            break zzForAction;\n-                        }\n-                    }\n-\n-                }\n-            }\n-\n-            // store back cached position\n-            zzMarkedPos = zzMarkedPosL;\n-\n-            switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {\n-                case 25: {\n-                    return new JSONToken(JSONToken.NULL, null);\n-                }\n-                case 29:\n-                    break;\n-                case 13: {\n-                    sb.append(yytext());\n-                }\n-                case 30:\n-                    break;\n-                case 18: {\n-                    sb.append('\\b');\n-                }\n-                case 31:\n-                    break;\n-                case 9: {\n-                    return new JSONToken(JSONToken.LSQUARE);\n-                }\n-                case 32:\n-                    break;\n-                case 2: {\n-                    Long val = Long.valueOf(yytext());\n-                    return new JSONToken(JSONToken.INT, val);\n-                }\n-                case 33:\n-                    break;\n-                case 16: {\n-                    sb.append('\\\\');\n-                }\n-                case 34:\n-                    break;\n-                case 8: {\n-                    return new JSONToken(JSONToken.RBRACE);\n-                }\n-                case 35:\n-                    break;\n-                case 26: {\n-                    return new JSONToken(JSONToken.BOOL, Boolean.TRUE);\n-                }\n-                case 36:\n-                    break;\n-                case 23: {\n-                    sb.append('\\'');\n-                }\n-                case 37:\n-                    break;\n-                case 5: {\n-                    sb = new StringBuffer();\n-                    yybegin(STR2);\n-                }\n-                case 38:\n-                    break;\n-                case 27: {\n-                    return new JSONToken(JSONToken.BOOL, Boolean.FALSE);\n-                }\n-                case 39:\n-                    break;\n-                case 12: {\n-                    return new JSONToken(JSONToken.COLON);\n-                }\n-                case 40:\n-                    break;\n-                case 21: {\n-                    sb.append('\\r');\n-                }\n-                case 41:\n-                    break;\n-                case 3: {\n-                    return new JSONToken(JSONToken.IDENT, yytext());\n-                }\n-                case 42:\n-                    break;\n-                case 28: {\n-                    try {\n-                        sb.append((char) Integer.parseInt(yytext().substring(2), 16));\n-                    } catch (Exception e) {\n-                        throw new ParseException(e.getMessage());\n-                    }\n-                }\n-                case 43:\n-                    break;\n-                case 10: {\n-                    return new JSONToken(JSONToken.RSQUARE);\n-                }\n-                case 44:\n-                    break;\n-                case 17: {\n-                    sb.append('/');\n-                }\n-                case 45:\n-                    break;\n-                case 11: {\n-                    return new JSONToken(JSONToken.COMMA);\n-                }\n-                case 46:\n-                    break;\n-                case 15: {\n-                    sb.append('\"');\n-                }\n-                case 47:\n-                    break;\n-                case 24: {\n-                    Double val = Double.valueOf(yytext());\n-                    return new JSONToken(JSONToken.FLOAT, val);\n-                }\n-                case 48:\n-                    break;\n-                case 1: {\n-                    throw new ParseException(\"Unexpected char [\" + yytext() + \"]\");\n-                }\n-                case 49:\n-                    break;\n-                case 19: {\n-                    sb.append('\\f');\n-                }\n-                case 50:\n-                    break;\n-                case 7: {\n-                    return new JSONToken(JSONToken.LBRACE);\n-                }\n-                case 51:\n-                    break;\n-                case 14: {\n-                    yybegin(YYINITIAL);\n-                    return new JSONToken(JSONToken.STRING, sb.toString());\n-                }\n-                case 52:\n-                    break;\n-                case 22: {\n-                    sb.append('\\t');\n-                }\n-                case 53:\n-                    break;\n-                case 4: {\n-                    sb = new StringBuffer();\n-                    yybegin(STR1);\n-                }\n-                case 54:\n-                    break;\n-                case 20: {\n-                    sb.append('\\n');\n-                }\n-                case 55:\n-                    break;\n-                case 6: {\n-                }\n-                case 56:\n-                    break;\n-                default:\n-                    if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {\n-                        zzAtEOF = true;\n-                        return null;\n-                    } else {\n-                        zzScanError(ZZ_NO_MATCH);\n-                        break;\n-                    }\n-            }\n-        }\n-    }\n-\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.json;\r\n+\r\n+/**\r\n+ * This class is a scanner generated by\r\n+ * <a href=\"http://www.jflex.de/\">JFlex</a> 1.4.3\r\n+ * on 7/3/10 3:12 AM from the specification file\r\n+ * <tt>/Users/qianlei/dev/proj/dubbo-1.1/dubbo.common/src/main/java/org.apache.dubbo/common/json/json.flex</tt>\r\n+ */\r\n+@Deprecated\r\n+public class Yylex {\r\n+\r\n+    /**\r\n+     * This character denotes the end of file\r\n+     */\r\n+    public static final int YYEOF = -1;\r\n+    /**\r\n+     * lexical states\r\n+     */\r\n+    public static final int STR2 = 4;\r\n+    public static final int STR1 = 2;\r\n+    public static final int YYINITIAL = 0;\r\n+    /**\r\n+     * initial size of the lookahead buffer\r\n+     */\r\n+    private static final int ZZ_BUFFERSIZE = 16384;\r\n+    /**\r\n+     * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l\r\n+     * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l\r\n+     * at the beginning of a line\r\n+     * l is of the form l = 2*k, k a non negative integer\r\n+     */\r\n+    private static final int[] ZZ_LEXSTATE = {\r\n+            0, 0, 1, 1, 2, 2\r\n+    };\r\n+\r\n+    /**\r\n+     * Translates characters to character classes\r\n+     */\r\n+    private static final String ZZ_CMAP_PACKED =\r\n+            \"\\11\\0\\1\\13\\1\\13\\2\\0\\1\\13\\22\\0\\1\\13\\1\\0\\1\\10\\1\\0\" +\r\n+                    \"\\1\\2\\2\\0\\1\\11\\3\\0\\1\\7\\1\\43\\1\\4\\1\\5\\1\\14\\12\\1\" +\r\n+                    \"\\1\\44\\6\\0\\1\\33\\3\\3\\1\\6\\1\\32\\5\\2\\1\\34\\1\\2\\1\\36\" +\r\n+                    \"\\3\\2\\1\\25\\1\\35\\1\\24\\1\\26\\5\\2\\1\\41\\1\\12\\1\\42\\1\\0\" +\r\n+                    \"\\1\\2\\1\\0\\1\\27\\1\\15\\2\\3\\1\\23\\1\\16\\5\\2\\1\\30\\1\\2\" +\r\n+                    \"\\1\\17\\3\\2\\1\\20\\1\\31\\1\\21\\1\\22\\5\\2\\1\\37\\1\\0\\1\\40\" +\r\n+                    \"\\uff82\\0\";\r\n+\r\n+    /**\r\n+     * Translates characters to character classes\r\n+     */\r\n+    private static final char[] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);\r\n+    private static final String ZZ_ACTION_PACKED_0 =\r\n+            \"\\3\\0\\1\\1\\1\\2\\1\\3\\1\\1\\1\\4\\1\\5\\1\\6\" +\r\n+                    \"\\6\\3\\1\\7\\1\\10\\1\\11\\1\\12\\1\\13\\1\\14\\1\\15\" +\r\n+                    \"\\1\\16\\1\\0\\1\\15\\3\\0\\6\\3\\1\\17\\1\\20\\1\\21\" +\r\n+                    \"\\1\\22\\1\\23\\1\\24\\1\\25\\1\\26\\1\\0\\1\\27\\2\\30\" +\r\n+                    \"\\1\\0\\6\\3\\1\\0\\1\\3\\1\\31\\1\\32\\1\\3\\1\\0\" +\r\n+                    \"\\1\\33\\1\\0\\1\\34\";\r\n+    /**\r\n+     * Translates DFA states to action switch labels.\r\n+     */\r\n+    private static final int[] ZZ_ACTION = zzUnpackAction();\r\n+    private static final String ZZ_ROWMAP_PACKED_0 =\r\n+            \"\\0\\0\\0\\45\\0\\112\\0\\157\\0\\224\\0\\271\\0\\336\\0\\157\" +\r\n+                    \"\\0\\157\\0\\u0103\\0\\u0128\\0\\u014d\\0\\u0172\\0\\u0197\\0\\u01bc\\0\\u01e1\" +\r\n+                    \"\\0\\157\\0\\157\\0\\157\\0\\157\\0\\157\\0\\157\\0\\u0206\\0\\157\" +\r\n+                    \"\\0\\u022b\\0\\u0250\\0\\u0275\\0\\u029a\\0\\u02bf\\0\\u02e4\\0\\u0309\\0\\u032e\" +\r\n+                    \"\\0\\u0353\\0\\u0378\\0\\u039d\\0\\157\\0\\157\\0\\157\\0\\157\\0\\157\" +\r\n+                    \"\\0\\157\\0\\157\\0\\157\\0\\u03c2\\0\\157\\0\\u03e7\\0\\u040c\\0\\u040c\" +\r\n+                    \"\\0\\u0431\\0\\u0456\\0\\u047b\\0\\u04a0\\0\\u04c5\\0\\u04ea\\0\\u050f\\0\\u0534\" +\r\n+                    \"\\0\\271\\0\\271\\0\\u0559\\0\\u057e\\0\\271\\0\\u05a3\\0\\157\";\r\n+    /**\r\n+     * Translates a state to a row index in the transition table\r\n+     */\r\n+    private static final int[] ZZ_ROWMAP = zzUnpackRowMap();\r\n+    /**\r\n+     * The transition table of the DFA\r\n+     */\r\n+    private static final int[] ZZ_TRANS = {\r\n+            3, 4, 5, 5, 6, 3, 5, 3, 7, 8,\r\n+            3, 9, 3, 5, 10, 11, 5, 12, 5, 5,\r\n+            13, 5, 5, 5, 5, 5, 14, 5, 5, 5,\r\n+            15, 16, 17, 18, 19, 20, 21, 22, 22, 22,\r\n+            22, 22, 22, 22, 22, 23, 22, 24, 22, 22,\r\n+            22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\r\n+            22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\r\n+            22, 22, 22, 22, 25, 25, 25, 25, 25, 25,\r\n+            25, 25, 25, 23, 26, 25, 25, 25, 25, 25,\r\n+            25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\r\n+            25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\r\n+            25, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, 4,\r\n+            -1, -1, -1, 27, 28, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, 28, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, 5, 5, 5, -1,\r\n+            -1, 5, -1, -1, -1, -1, -1, -1, 5, 5,\r\n+            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r\n+            5, 5, 5, 5, 5, 5, -1, -1, -1, -1,\r\n+            -1, -1, -1, 4, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            9, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, 5, 5, 5,\r\n+            -1, -1, 5, -1, -1, -1, -1, -1, -1, 5,\r\n+            5, 5, 5, 5, 5, 5, 5, 5, 5, 29,\r\n+            5, 5, 5, 5, 5, 5, 5, -1, -1, -1,\r\n+            -1, -1, -1, -1, 5, 5, 5, -1, -1, 5,\r\n+            -1, -1, -1, -1, -1, -1, 5, 5, 5, 5,\r\n+            5, 30, 5, 5, 5, 5, 5, 5, 5, 5,\r\n+            5, 5, 5, 5, -1, -1, -1, -1, -1, -1,\r\n+            -1, 5, 5, 5, -1, -1, 5, -1, -1, -1,\r\n+            -1, -1, -1, 5, 5, 5, 31, 5, 5, 5,\r\n+            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r\n+            5, -1, -1, -1, -1, -1, -1, -1, 5, 5,\r\n+            5, -1, -1, 5, -1, -1, -1, -1, -1, -1,\r\n+            5, 5, 5, 5, 5, 5, 5, 5, 32, 5,\r\n+            5, 5, 5, 5, 5, 5, 5, 5, -1, -1,\r\n+            -1, -1, -1, -1, -1, 5, 5, 5, -1, -1,\r\n+            5, -1, -1, -1, -1, -1, -1, 5, 5, 5,\r\n+            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r\n+            5, 33, 5, 5, 5, -1, -1, -1, -1, -1,\r\n+            -1, -1, 5, 5, 5, -1, -1, 5, -1, -1,\r\n+            -1, -1, -1, -1, 5, 5, 5, 5, 5, 5,\r\n+            5, 5, 5, 34, 5, 5, 5, 5, 5, 5,\r\n+            5, 5, -1, -1, -1, -1, -1, -1, 22, 22,\r\n+            22, 22, 22, 22, 22, 22, -1, 22, -1, 22,\r\n+            22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\r\n+            22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\r\n+            22, 22, 22, 22, 22, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, 35, -1, 36, -1, 37, 38, 39,\r\n+            40, 41, 42, 43, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, 25, 25, 25, 25, 25, 25, 25, 25,\r\n+            25, -1, -1, 25, 25, 25, 25, 25, 25, 25,\r\n+            25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\r\n+            25, 25, 25, 25, 25, 25, 25, 25, 25, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, 44, 36,\r\n+            -1, 37, 38, 39, 40, 41, 42, 43, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, 45, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, 46, -1, -1, 47, -1, -1,\r\n+            47, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, 5, 5, 5, -1, -1, 5, -1, -1, -1,\r\n+            -1, -1, -1, 5, 5, 5, 5, 5, 5, 5,\r\n+            5, 5, 5, 5, 48, 5, 5, 5, 5, 5,\r\n+            5, -1, -1, -1, -1, -1, -1, -1, 5, 5,\r\n+            5, -1, -1, 5, -1, -1, -1, -1, -1, -1,\r\n+            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r\n+            5, 49, 5, 5, 5, 5, 5, 5, -1, -1,\r\n+            -1, -1, -1, -1, -1, 5, 5, 5, -1, -1,\r\n+            5, -1, -1, -1, -1, -1, -1, 5, 5, 5,\r\n+            5, 5, 50, 5, 5, 5, 5, 5, 5, 5,\r\n+            5, 5, 5, 5, 5, -1, -1, -1, -1, -1,\r\n+            -1, -1, 5, 5, 5, -1, -1, 5, -1, -1,\r\n+            -1, -1, -1, -1, 5, 5, 5, 5, 5, 5,\r\n+            5, 5, 5, 51, 5, 5, 5, 5, 5, 5,\r\n+            5, 5, -1, -1, -1, -1, -1, -1, -1, 5,\r\n+            5, 5, -1, -1, 5, -1, -1, -1, -1, -1,\r\n+            -1, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r\n+            5, 5, 5, 5, 5, 5, 52, 5, 5, -1,\r\n+            -1, -1, -1, -1, -1, -1, 5, 5, 5, -1,\r\n+            -1, 5, -1, -1, -1, -1, -1, -1, 5, 5,\r\n+            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r\n+            5, 5, 5, 53, 5, 5, -1, -1, -1, -1,\r\n+            -1, -1, -1, 54, -1, 54, -1, -1, 54, -1,\r\n+            -1, -1, -1, -1, -1, 54, 54, -1, -1, -1,\r\n+            -1, 54, -1, -1, -1, 54, -1, -1, 54, 54,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            45, -1, -1, -1, -1, 28, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, 28, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, 46, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, 5, 5, 5, -1, -1, 5,\r\n+            -1, -1, -1, -1, -1, -1, 5, 5, 5, 5,\r\n+            5, 5, 5, 5, 5, 5, 5, 5, 55, 5,\r\n+            5, 5, 5, 5, -1, -1, -1, -1, -1, -1,\r\n+            -1, 5, 5, 5, -1, -1, 5, -1, -1, -1,\r\n+            -1, -1, -1, 5, 5, 5, 5, 5, 5, 5,\r\n+            5, 5, 5, 5, 56, 5, 5, 5, 5, 5,\r\n+            5, -1, -1, -1, -1, -1, -1, -1, 5, 5,\r\n+            5, -1, -1, 5, -1, -1, -1, -1, -1, -1,\r\n+            5, 5, 5, 5, 5, 5, 57, 5, 5, 5,\r\n+            5, 5, 5, 5, 5, 5, 5, 5, -1, -1,\r\n+            -1, -1, -1, -1, -1, 5, 5, 5, -1, -1,\r\n+            57, -1, -1, -1, -1, -1, -1, 5, 5, 5,\r\n+            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r\n+            5, 5, 5, 5, 5, -1, -1, -1, -1, -1,\r\n+            -1, -1, 5, 5, 5, -1, -1, 5, -1, -1,\r\n+            -1, -1, -1, -1, 5, 5, 5, 5, 5, 5,\r\n+            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r\n+            58, 5, -1, -1, -1, -1, -1, -1, -1, 5,\r\n+            5, 5, -1, -1, 5, -1, -1, -1, -1, -1,\r\n+            -1, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r\n+            5, 5, 5, 5, 5, 5, 56, 5, 5, -1,\r\n+            -1, -1, -1, -1, -1, -1, 59, -1, 59, -1,\r\n+            -1, 59, -1, -1, -1, -1, -1, -1, 59, 59,\r\n+            -1, -1, -1, -1, 59, -1, -1, -1, 59, -1,\r\n+            -1, 59, 59, -1, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, 5, 5, 5, -1, -1, 5, -1,\r\n+            -1, -1, -1, -1, -1, 5, 5, 5, 5, 5,\r\n+            5, 60, 5, 5, 5, 5, 5, 5, 5, 5,\r\n+            5, 5, 5, -1, -1, -1, -1, -1, -1, -1,\r\n+            5, 5, 5, -1, -1, 60, -1, -1, -1, -1,\r\n+            -1, -1, 5, 5, 5, 5, 5, 5, 5, 5,\r\n+            5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\r\n+            -1, -1, -1, -1, -1, -1, -1, 61, -1, 61,\r\n+            -1, -1, 61, -1, -1, -1, -1, -1, -1, 61,\r\n+            61, -1, -1, -1, -1, 61, -1, -1, -1, 61,\r\n+            -1, -1, 61, 61, -1, -1, -1, -1, -1, -1,\r\n+            -1, -1, -1, -1, 62, -1, 62, -1, -1, 62,\r\n+            -1, -1, -1, -1, -1, -1, 62, 62, -1, -1,\r\n+            -1, -1, 62, -1, -1, -1, 62, -1, -1, 62,\r\n+            62, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n+    };\r\n+    /* error codes */\r\n+    private static final int ZZ_UNKNOWN_ERROR = 0;\r\n+    private static final int ZZ_NO_MATCH = 1;\r\n+    private static final int ZZ_PUSHBACK_2BIG = 2;\r\n+    /* error messages for the codes above */\r\n+    private static final String[] ZZ_ERROR_MSG = {\r\n+            \"Unkown internal scanner error\",\r\n+            \"Error: could not match input\",\r\n+            \"Error: pushback value was too large\"\r\n+    };\r\n+    private static final String ZZ_ATTRIBUTE_PACKED_0 =\r\n+            \"\\3\\0\\1\\11\\3\\1\\2\\11\\7\\1\\6\\11\\1\\1\\1\\11\" +\r\n+                    \"\\1\\0\\1\\1\\3\\0\\6\\1\\10\\11\\1\\0\\1\\11\\2\\1\" +\r\n+                    \"\\1\\0\\6\\1\\1\\0\\4\\1\\1\\0\\1\\1\\1\\0\\1\\11\";\r\n+    /**\r\n+     * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>\r\n+     */\r\n+    private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute();\r\n+    /**\r\n+     * the input device\r\n+     */\r\n+    private java.io.Reader zzReader;\r\n+    /**\r\n+     * the current state of the DFA\r\n+     */\r\n+    private int zzState;\r\n+    /**\r\n+     * the current lexical state\r\n+     */\r\n+    private int zzLexicalState = YYINITIAL;\r\n+    /**\r\n+     * this buffer contains the current text to be matched and is\r\n+     * the source of the yytext() string\r\n+     */\r\n+    private char[] zzBuffer = new char[ZZ_BUFFERSIZE];\r\n+    /**\r\n+     * the textposition at the last accepting state\r\n+     */\r\n+    private int zzMarkedPos;\r\n+    /**\r\n+     * the current text position in the buffer\r\n+     */\r\n+    private int zzCurrentPos;\r\n+    /**\r\n+     * startRead marks the beginning of the yytext() string in the buffer\r\n+     */\r\n+    private int zzStartRead;\r\n+    /**\r\n+     * endRead marks the last character in the buffer, that has been read\r\n+     * from input\r\n+     */\r\n+    private int zzEndRead;\r\n+    /**\r\n+     * zzAtEOF == true <=> the scanner is at the EOF\r\n+     */\r\n+    private boolean zzAtEOF;\r\n+    /**\r\n+     * denotes if the user-EOF-code has already been executed\r\n+     */\r\n+    //private boolean zzEOFDone;\r\n+\r\n+  /* user code: */\r\n+    private StringBuffer sb;\r\n+\r\n+    /**\r\n+     * Creates a new scanner\r\n+     * There is also a java.io.InputStream version of this constructor.\r\n+     *\r\n+     * @param in the java.io.Reader to read input from.\r\n+     */\r\n+    Yylex(java.io.Reader in) {\r\n+        this.zzReader = in;\r\n+    }\r\n+\r\n+    /**\r\n+     * Creates a new scanner.\r\n+     * There is also java.io.Reader version of this constructor.\r\n+     *\r\n+     * @param in the java.io.Inputstream to read input from.\r\n+     */\r\n+    Yylex(java.io.InputStream in) {\r\n+        this(new java.io.InputStreamReader(in));\r\n+    }\r\n+\r\n+    private static int[] zzUnpackAction() {\r\n+        int[] result = new int[63];\r\n+        int offset = 0;\r\n+        offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);\r\n+        return result;\r\n+    }\r\n+\r\n+    private static int zzUnpackAction(String packed, int offset, int[] result) {\r\n+        int i = 0;       /* index in packed string  */\r\n+        int j = offset;  /* index in unpacked array */\r\n+        int l = packed.length();\r\n+        while (i < l) {\r\n+            int count = packed.charAt(i++);\r\n+            int value = packed.charAt(i++);\r\n+            do {\r\n+                result[j++] = value;\r\n+            } while (--count > 0);\r\n+        }\r\n+        return j;\r\n+    }\r\n+\r\n+    /** number of newlines encountered up to the start of the matched text */\r\n+    //private int yyline;\r\n+\r\n+    /** the number of characters up to the start of the matched text */\r\n+    //private int yychar;\r\n+\r\n+    /**\r\n+     * the number of characters from the last newline up to the start of the\r\n+     * matched text\r\n+     */\r\n+    //private int yycolumn;\r\n+\r\n+    /**\r\n+     * zzAtBOL == true <=> the scanner is currently at the beginning of a line\r\n+     */\r\n+    //private boolean zzAtBOL = true;\r\n+    private static int[] zzUnpackRowMap() {\r\n+        int[] result = new int[63];\r\n+        int offset = 0;\r\n+        offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);\r\n+        return result;\r\n+    }\r\n+\r\n+    private static int zzUnpackRowMap(String packed, int offset, int[] result) {\r\n+        int i = 0;  /* index in packed string  */\r\n+        int j = offset;  /* index in unpacked array */\r\n+        int l = packed.length();\r\n+        while (i < l) {\r\n+            int high = packed.charAt(i++) << 16;\r\n+            result[j++] = high | packed.charAt(i++);\r\n+        }\r\n+        return j;\r\n+    }\r\n+\r\n+    private static int[] zzUnpackAttribute() {\r\n+        int[] result = new int[63];\r\n+        int offset = 0;\r\n+        offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);\r\n+        return result;\r\n+    }\r\n+\r\n+    private static int zzUnpackAttribute(String packed, int offset, int[] result) {\r\n+        int i = 0;       /* index in packed string  */\r\n+        int j = offset;  /* index in unpacked array */\r\n+        int l = packed.length();\r\n+        while (i < l) {\r\n+            int count = packed.charAt(i++);\r\n+            int value = packed.charAt(i++);\r\n+            do {\r\n+                result[j++] = value;\r\n+            } while (--count > 0);\r\n+        }\r\n+        return j;\r\n+    }\r\n+\r\n+    /**\r\n+     * Unpacks the compressed character translation table.\r\n+     *\r\n+     * @param packed the packed character translation table\r\n+     * @return the unpacked character translation table\r\n+     */\r\n+    private static char[] zzUnpackCMap(String packed) {\r\n+        char[] map = new char[0x10000];\r\n+        int i = 0;  /* index in packed string  */\r\n+        int j = 0;  /* index in unpacked array */\r\n+        while (i < 122) {\r\n+            int count = packed.charAt(i++);\r\n+            char value = packed.charAt(i++);\r\n+            do {\r\n+                map[j++] = value;\r\n+            } while (--count > 0);\r\n+        }\r\n+        return map;\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Refills the input buffer.\r\n+     *\r\n+     * @return <code>false</code>, iff there was new input.\r\n+     * @throws java.io.IOException if any I/O-Error occurs\r\n+     */\r\n+    private boolean zzRefill() throws java.io.IOException {\r\n+\r\n+    /* first: make room (if you can) */\r\n+        if (zzStartRead > 0) {\r\n+            System.arraycopy(zzBuffer, zzStartRead,\r\n+                    zzBuffer, 0,\r\n+                    zzEndRead - zzStartRead);\r\n+\r\n+      /* translate stored positions */\r\n+            zzEndRead -= zzStartRead;\r\n+            zzCurrentPos -= zzStartRead;\r\n+            zzMarkedPos -= zzStartRead;\r\n+            zzStartRead = 0;\r\n+        }\r\n+\r\n+    /* is the buffer big enough? */\r\n+        if (zzCurrentPos >= zzBuffer.length) {\r\n+      /* if not: blow it up */\r\n+            char[] newBuffer = new char[zzCurrentPos * 2];\r\n+            System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);\r\n+            zzBuffer = newBuffer;\r\n+        }\r\n+\r\n+    /* finally: fill the buffer with new input */\r\n+        int numRead = zzReader.read(zzBuffer, zzEndRead,\r\n+                zzBuffer.length - zzEndRead);\r\n+\r\n+        if (numRead > 0) {\r\n+            zzEndRead += numRead;\r\n+            return false;\r\n+        }\r\n+        // unlikely but not impossible: read 0 characters, but not at end of stream\r\n+        if (numRead == 0) {\r\n+            int c = zzReader.read();\r\n+            if (c == -1) {\r\n+                return true;\r\n+            } else {\r\n+                zzBuffer[zzEndRead++] = (char) c;\r\n+                return false;\r\n+            }\r\n+        }\r\n+\r\n+        // numRead < 0\r\n+        return true;\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Closes the input stream.\r\n+     */\r\n+    public final void yyclose() throws java.io.IOException {\r\n+        zzAtEOF = true;            /* indicate end of file */\r\n+        zzEndRead = zzStartRead;  /* invalidate buffer    */\r\n+\r\n+        if (zzReader != null) {\r\n+            zzReader.close();\r\n+        }\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Resets the scanner to read from a new input stream.\r\n+     * Does not close the old reader.\r\n+     * <p>\r\n+     * All internal variables are reset, the old input stream\r\n+     * <b>cannot</b> be reused (internal buffer is discarded and lost).\r\n+     * Lexical state is set to <tt>ZZ_INITIAL</tt>.\r\n+     *\r\n+     * @param reader the new input stream\r\n+     */\r\n+    public final void yyreset(java.io.Reader reader) {\r\n+        zzReader = reader;\r\n+        //zzAtBOL  = true;\r\n+        zzAtEOF = false;\r\n+        //zzEOFDone = false;\r\n+        zzEndRead = zzStartRead = 0;\r\n+        zzCurrentPos = zzMarkedPos = 0;\r\n+        //yyline = yychar = yycolumn = 0;\r\n+        zzLexicalState = YYINITIAL;\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Returns the current lexical state.\r\n+     */\r\n+    public final int yystate() {\r\n+        return zzLexicalState;\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Enters a new lexical state\r\n+     *\r\n+     * @param newState the new lexical state\r\n+     */\r\n+    public final void yybegin(int newState) {\r\n+        zzLexicalState = newState;\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Returns the text matched by the current regular expression.\r\n+     */\r\n+    public final String yytext() {\r\n+        return new String(zzBuffer, zzStartRead, zzMarkedPos - zzStartRead);\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Returns the character at position <tt>pos</tt> from the\r\n+     * matched text.\r\n+     * <p>\r\n+     * It is equivalent to yytext().charAt(pos), but faster\r\n+     *\r\n+     * @param pos the position of the character to fetch.\r\n+     *            A value from 0 to yylength()-1.\r\n+     * @return the character at position pos\r\n+     */\r\n+    public final char yycharat(int pos) {\r\n+        return zzBuffer[zzStartRead + pos];\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Returns the length of the matched text region.\r\n+     */\r\n+    public final int yylength() {\r\n+        return zzMarkedPos - zzStartRead;\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Reports an error that occured while scanning.\r\n+     * <p>\r\n+     * In a wellformed scanner (no or only correct usage of\r\n+     * yypushback(int) and a match-all fallback rule) this method\r\n+     * will only be called with things that \"Can't Possibly Happen\".\r\n+     * If this method is called, something is seriously wrong\r\n+     * (e.g. a JFlex bug producing a faulty scanner etc.).\r\n+     * <p>\r\n+     * Usual syntax/scanner level error handling should be done\r\n+     * in error fallback rules.\r\n+     *\r\n+     * @param errorCode the code of the errormessage to display\r\n+     */\r\n+    private void zzScanError(int errorCode) {\r\n+        String message;\r\n+        try {\r\n+            message = ZZ_ERROR_MSG[errorCode];\r\n+        } catch (ArrayIndexOutOfBoundsException e) {\r\n+            message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];\r\n+        }\r\n+\r\n+        throw new Error(message);\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Pushes the specified amount of characters back into the input stream.\r\n+     * <p>\r\n+     * They will be read again by then next call of the scanning method\r\n+     *\r\n+     * @param number the number of characters to be read again.\r\n+     *               This number must not be greater than yylength()!\r\n+     */\r\n+    public void yypushback(int number) {\r\n+        if (number > yylength()) {\r\n+            zzScanError(ZZ_PUSHBACK_2BIG);\r\n+        }\r\n+\r\n+        zzMarkedPos -= number;\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Resumes scanning until the next regular expression is matched,\r\n+     * the end of input is encountered or an I/O-Error occurs.\r\n+     *\r\n+     * @return the next token\r\n+     * @throws java.io.IOException if any I/O-Error occurs\r\n+     */\r\n+    public JSONToken yylex() throws java.io.IOException, ParseException {\r\n+        int zzInput;\r\n+        int zzAction;\r\n+\r\n+        // cached fields:\r\n+        int zzCurrentPosL;\r\n+        int zzMarkedPosL;\r\n+        int zzEndReadL = zzEndRead;\r\n+        char[] zzBufferL = zzBuffer;\r\n+        char[] zzCMapL = ZZ_CMAP;\r\n+\r\n+        int[] zzTransL = ZZ_TRANS;\r\n+        int[] zzRowMapL = ZZ_ROWMAP;\r\n+        int[] zzAttrL = ZZ_ATTRIBUTE;\r\n+\r\n+        while (true) {\r\n+            zzMarkedPosL = zzMarkedPos;\r\n+\r\n+            zzAction = -1;\r\n+\r\n+            zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;\r\n+\r\n+            zzState = ZZ_LEXSTATE[zzLexicalState];\r\n+\r\n+\r\n+            zzForAction:\r\n+            {\r\n+                while (true) {\r\n+\r\n+                    if (zzCurrentPosL < zzEndReadL) {\r\n+                        zzInput = zzBufferL[zzCurrentPosL++];\r\n+                    } else if (zzAtEOF) {\r\n+                        zzInput = YYEOF;\r\n+                        break zzForAction;\r\n+                    } else {\r\n+                        // store back cached positions\r\n+                        zzCurrentPos = zzCurrentPosL;\r\n+                        zzMarkedPos = zzMarkedPosL;\r\n+                        boolean eof = zzRefill();\r\n+                        // get translated positions and possibly new buffer\r\n+                        zzCurrentPosL = zzCurrentPos;\r\n+                        zzMarkedPosL = zzMarkedPos;\r\n+                        zzBufferL = zzBuffer;\r\n+                        zzEndReadL = zzEndRead;\r\n+                        if (eof) {\r\n+                            zzInput = YYEOF;\r\n+                            break zzForAction;\r\n+                        } else {\r\n+                            zzInput = zzBufferL[zzCurrentPosL++];\r\n+                        }\r\n+                    }\r\n+                    int zzNext = zzTransL[zzRowMapL[zzState] + zzCMapL[zzInput]];\r\n+                    if (zzNext == -1) {\r\n+                        break zzForAction;\r\n+                    }\r\n+                    zzState = zzNext;\r\n+\r\n+                    int zzAttributes = zzAttrL[zzState];\r\n+                    if ((zzAttributes & 1) == 1) {\r\n+                        zzAction = zzState;\r\n+                        zzMarkedPosL = zzCurrentPosL;\r\n+                        if ((zzAttributes & 8) == 8) {\r\n+                            break zzForAction;\r\n+                        }\r\n+                    }\r\n+\r\n+                }\r\n+            }\r\n+\r\n+            // store back cached position\r\n+            zzMarkedPos = zzMarkedPosL;\r\n+\r\n+            switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {\r\n+                case 25: {\r\n+                    return new JSONToken(JSONToken.NULL, null);\r\n+                }\r\n+                case 29:\r\n+                    break;\r\n+                case 13: {\r\n+                    sb.append(yytext());\r\n+                }\r\n+                case 30:\r\n+                    break;\r\n+                case 18: {\r\n+                    sb.append('\\b');\r\n+                }\r\n+                case 31:\r\n+                    break;\r\n+                case 9: {\r\n+                    return new JSONToken(JSONToken.LSQUARE);\r\n+                }\r\n+                case 32:\r\n+                    break;\r\n+                case 2: {\r\n+                    Long val = Long.valueOf(yytext());\r\n+                    return new JSONToken(JSONToken.INT, val);\r\n+                }\r\n+                case 33:\r\n+                    break;\r\n+                case 16: {\r\n+                    sb.append('\\\\');\r\n+                }\r\n+                case 34:\r\n+                    break;\r\n+                case 8: {\r\n+                    return new JSONToken(JSONToken.RBRACE);\r\n+                }\r\n+                case 35:\r\n+                    break;\r\n+                case 26: {\r\n+                    return new JSONToken(JSONToken.BOOL, Boolean.TRUE);\r\n+                }\r\n+                case 36:\r\n+                    break;\r\n+                case 23: {\r\n+                    sb.append('\\'');\r\n+                }\r\n+                case 37:\r\n+                    break;\r\n+                case 5: {\r\n+                    sb = new StringBuffer();\r\n+                    yybegin(STR2);\r\n+                }\r\n+                case 38:\r\n+                    break;\r\n+                case 27: {\r\n+                    return new JSONToken(JSONToken.BOOL, Boolean.FALSE);\r\n+                }\r\n+                case 39:\r\n+                    break;\r\n+                case 12: {\r\n+                    return new JSONToken(JSONToken.COLON);\r\n+                }\r\n+                case 40:\r\n+                    break;\r\n+                case 21: {\r\n+                    sb.append('\\r');\r\n+                }\r\n+                case 41:\r\n+                    break;\r\n+                case 3: {\r\n+                    return new JSONToken(JSONToken.IDENT, yytext());\r\n+                }\r\n+                case 42:\r\n+                    break;\r\n+                case 28: {\r\n+                    try {\r\n+                        sb.append((char) Integer.parseInt(yytext().substring(2), 16));\r\n+                    } catch (Exception e) {\r\n+                        throw new ParseException(e.getMessage());\r\n+                    }\r\n+                }\r\n+                case 43:\r\n+                    break;\r\n+                case 10: {\r\n+                    return new JSONToken(JSONToken.RSQUARE);\r\n+                }\r\n+                case 44:\r\n+                    break;\r\n+                case 17: {\r\n+                    sb.append('/');\r\n+                }\r\n+                case 45:\r\n+                    break;\r\n+                case 11: {\r\n+                    return new JSONToken(JSONToken.COMMA);\r\n+                }\r\n+                case 46:\r\n+                    break;\r\n+                case 15: {\r\n+                    sb.append('\"');\r\n+                }\r\n+                case 47:\r\n+                    break;\r\n+                case 24: {\r\n+                    Double val = Double.valueOf(yytext());\r\n+                    return new JSONToken(JSONToken.FLOAT, val);\r\n+                }\r\n+                case 48:\r\n+                    break;\r\n+                case 1: {\r\n+                    throw new ParseException(\"Unexpected char [\" + yytext() + \"]\");\r\n+                }\r\n+                case 49:\r\n+                    break;\r\n+                case 19: {\r\n+                    sb.append('\\f');\r\n+                }\r\n+                case 50:\r\n+                    break;\r\n+                case 7: {\r\n+                    return new JSONToken(JSONToken.LBRACE);\r\n+                }\r\n+                case 51:\r\n+                    break;\r\n+                case 14: {\r\n+                    yybegin(YYINITIAL);\r\n+                    return new JSONToken(JSONToken.STRING, sb.toString());\r\n+                }\r\n+                case 52:\r\n+                    break;\r\n+                case 22: {\r\n+                    sb.append('\\t');\r\n+                }\r\n+                case 53:\r\n+                    break;\r\n+                case 4: {\r\n+                    sb = new StringBuffer();\r\n+                    yybegin(STR1);\r\n+                }\r\n+                case 54:\r\n+                    break;\r\n+                case 20: {\r\n+                    sb.append('\\n');\r\n+                }\r\n+                case 55:\r\n+                    break;\r\n+                case 6: {\r\n+                }\r\n+                case 56:\r\n+                    break;\r\n+                default:\r\n+                    if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {\r\n+                        zzAtEOF = true;\r\n+                        return null;\r\n+                    } else {\r\n+                        zzScanError(ZZ_NO_MATCH);\r\n+                        break;\r\n+                    }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/common/lang/Prioritized.java", "source2": "org/apache/dubbo/common/lang/Prioritized.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,76 +1,76 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.lang;\n-\n-import java.util.Comparator;\n-\n-import static java.lang.Integer.compare;\n-\n-/**\n- * {@code Prioritized} interface can be implemented by objects that\n- * should be sorted, for example the tasks in executable queue.\n- *\n- * @since 2.7.5\n- */\n-public interface Prioritized extends Comparable<Prioritized> {\n-\n-    /**\n-     * The {@link Comparator} of {@link Prioritized}\n-     */\n-    Comparator<Object> COMPARATOR = (one, two) -> {\n-        boolean b1 = one instanceof Prioritized;\n-        boolean b2 = two instanceof Prioritized;\n-        if (b1 && !b2) {        // one is Prioritized, two is not\n-            return -1;\n-        } else if (b2 && !b1) { // two is Prioritized, one is not\n-            return 1;\n-        } else if (b1 && b2) {  //  one and two both are Prioritized\n-            return ((Prioritized) one).compareTo((Prioritized) two);\n-        } else {                // no different\n-            return 0;\n-        }\n-    };\n-\n-    /**\n-     * The maximum priority\n-     */\n-    int MAX_PRIORITY = Integer.MIN_VALUE;\n-\n-    /**\n-     * The minimum priority\n-     */\n-    int MIN_PRIORITY = Integer.MAX_VALUE;\n-\n-    /**\n-     * Normal Priority\n-     */\n-    int NORMAL_PRIORITY = 0;\n-\n-    /**\n-     * Get the priority\n-     *\n-     * @return the default is {@link #NORMAL_PRIORITY}\n-     */\n-    default int getPriority() {\n-        return NORMAL_PRIORITY;\n-    }\n-\n-    @Override\n-    default int compareTo(Prioritized that) {\n-        return compare(this.getPriority(), that.getPriority());\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.lang;\r\n+\r\n+import java.util.Comparator;\r\n+\r\n+import static java.lang.Integer.compare;\r\n+\r\n+/**\r\n+ * {@code Prioritized} interface can be implemented by objects that\r\n+ * should be sorted, for example the tasks in executable queue.\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public interface Prioritized extends Comparable<Prioritized> {\r\n+\r\n+    /**\r\n+     * The {@link Comparator} of {@link Prioritized}\r\n+     */\r\n+    Comparator<Object> COMPARATOR = (one, two) -> {\r\n+        boolean b1 = one instanceof Prioritized;\r\n+        boolean b2 = two instanceof Prioritized;\r\n+        if (b1 && !b2) {        // one is Prioritized, two is not\r\n+            return -1;\r\n+        } else if (b2 && !b1) { // two is Prioritized, one is not\r\n+            return 1;\r\n+        } else if (b1 && b2) {  //  one and two both are Prioritized\r\n+            return ((Prioritized) one).compareTo((Prioritized) two);\r\n+        } else {                // no different\r\n+            return 0;\r\n+        }\r\n+    };\r\n+\r\n+    /**\r\n+     * The maximum priority\r\n+     */\r\n+    int MAX_PRIORITY = Integer.MIN_VALUE;\r\n+\r\n+    /**\r\n+     * The minimum priority\r\n+     */\r\n+    int MIN_PRIORITY = Integer.MAX_VALUE;\r\n+\r\n+    /**\r\n+     * Normal Priority\r\n+     */\r\n+    int NORMAL_PRIORITY = 0;\r\n+\r\n+    /**\r\n+     * Get the priority\r\n+     *\r\n+     * @return the default is {@link #NORMAL_PRIORITY}\r\n+     */\r\n+    default int getPriority() {\r\n+        return NORMAL_PRIORITY;\r\n+    }\r\n+\r\n+    @Override\r\n+    default int compareTo(Prioritized that) {\r\n+        return compare(this.getPriority(), that.getPriority());\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/lang/ShutdownHookCallback.java", "source2": "org/apache/dubbo/common/lang/ShutdownHookCallback.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,35 +1,35 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.lang;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-/**\n- * Dubbo ShutdownHook callback interface\n- *\n- * @since 2.7.5\n- */\n-@SPI\n-public interface ShutdownHookCallback extends Prioritized {\n-\n-    /**\n-     * Callback execution\n-     *\n-     * @throws Throwable if met with some errors\n-     */\n-    void callback() throws Throwable;\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.lang;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+/**\r\n+ * Dubbo ShutdownHook callback interface\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+@SPI\r\n+public interface ShutdownHookCallback extends Prioritized {\r\n+\r\n+    /**\r\n+     * Callback execution\r\n+     *\r\n+     * @throws Throwable if met with some errors\r\n+     */\r\n+    void callback() throws Throwable;\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/lang/ShutdownHookCallbacks.java", "source2": "org/apache/dubbo/common/lang/ShutdownHookCallbacks.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,72 +1,72 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.lang;\n-\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-\n-import java.util.Collection;\n-import java.util.LinkedList;\n-import java.util.List;\n-\n-import static java.util.Collections.sort;\n-import static org.apache.dubbo.common.function.ThrowableAction.execute;\n-\n-/**\n- * The compose {@link ShutdownHookCallback} class to manipulate one and more {@link ShutdownHookCallback} instances\n- *\n- * @since 2.7.5\n- */\n-public class ShutdownHookCallbacks {\n-\n-    public static final ShutdownHookCallbacks INSTANCE = new ShutdownHookCallbacks();\n-\n-    private final List<ShutdownHookCallback> callbacks = new LinkedList<>();\n-\n-    ShutdownHookCallbacks() {\n-        loadCallbacks();\n-    }\n-\n-    public ShutdownHookCallbacks addCallback(ShutdownHookCallback callback) {\n-        synchronized (this) {\n-            this.callbacks.add(callback);\n-        }\n-        return this;\n-    }\n-\n-    public Collection<ShutdownHookCallback> getCallbacks() {\n-        synchronized (this) {\n-            sort(this.callbacks);\n-            return this.callbacks;\n-        }\n-    }\n-\n-    public void clear() {\n-        synchronized (this) {\n-            callbacks.clear();\n-        }\n-    }\n-\n-    private void loadCallbacks() {\n-        ExtensionLoader<ShutdownHookCallback> loader =\n-                ExtensionLoader.getExtensionLoader(ShutdownHookCallback.class);\n-        loader.getSupportedExtensionInstances().forEach(this::addCallback);\n-    }\n-\n-    public void callback() {\n-        getCallbacks().forEach(callback -> execute(callback::callback));\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.lang;\r\n+\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+\r\n+import static java.util.Collections.sort;\r\n+import static org.apache.dubbo.common.function.ThrowableAction.execute;\r\n+\r\n+/**\r\n+ * The compose {@link ShutdownHookCallback} class to manipulate one and more {@link ShutdownHookCallback} instances\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ShutdownHookCallbacks {\r\n+\r\n+    public static final ShutdownHookCallbacks INSTANCE = new ShutdownHookCallbacks();\r\n+\r\n+    private final List<ShutdownHookCallback> callbacks = new LinkedList<>();\r\n+\r\n+    ShutdownHookCallbacks() {\r\n+        loadCallbacks();\r\n+    }\r\n+\r\n+    public ShutdownHookCallbacks addCallback(ShutdownHookCallback callback) {\r\n+        synchronized (this) {\r\n+            this.callbacks.add(callback);\r\n+        }\r\n+        return this;\r\n+    }\r\n+\r\n+    public Collection<ShutdownHookCallback> getCallbacks() {\r\n+        synchronized (this) {\r\n+            sort(this.callbacks);\r\n+            return this.callbacks;\r\n+        }\r\n+    }\r\n+\r\n+    public void clear() {\r\n+        synchronized (this) {\r\n+            callbacks.clear();\r\n+        }\r\n+    }\r\n+\r\n+    private void loadCallbacks() {\r\n+        ExtensionLoader<ShutdownHookCallback> loader =\r\n+                ExtensionLoader.getExtensionLoader(ShutdownHookCallback.class);\r\n+        loader.getSupportedExtensionInstances().forEach(this::addCallback);\r\n+    }\r\n+\r\n+    public void callback() {\r\n+        getCallbacks().forEach(callback -> execute(callback::callback));\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/common/logger/Logger.java", "source2": "org/apache/dubbo/common/logger/Logger.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,171 +1,171 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.logger;\n-\n-/**\n- * Logger interface\n- * <p>\n- * This interface is referred from commons-logging\n- */\n-public interface Logger {\n-\n-    /**\n-     * Logs a message with trace log level.\n-     *\n-     * @param msg log this message\n-     */\n-    void trace(String msg);\n-\n-    /**\n-     * Logs an error with trace log level.\n-     *\n-     * @param e log this cause\n-     */\n-    void trace(Throwable e);\n-\n-    /**\n-     * Logs an error with trace log level.\n-     *\n-     * @param msg log this message\n-     * @param e   log this cause\n-     */\n-    void trace(String msg, Throwable e);\n-\n-    /**\n-     * Logs a message with debug log level.\n-     *\n-     * @param msg log this message\n-     */\n-    void debug(String msg);\n-\n-    /**\n-     * Logs an error with debug log level.\n-     *\n-     * @param e log this cause\n-     */\n-    void debug(Throwable e);\n-\n-    /**\n-     * Logs an error with debug log level.\n-     *\n-     * @param msg log this message\n-     * @param e   log this cause\n-     */\n-    void debug(String msg, Throwable e);\n-\n-    /**\n-     * Logs a message with info log level.\n-     *\n-     * @param msg log this message\n-     */\n-    void info(String msg);\n-\n-    /**\n-     * Logs an error with info log level.\n-     *\n-     * @param e log this cause\n-     */\n-    void info(Throwable e);\n-\n-    /**\n-     * Logs an error with info log level.\n-     *\n-     * @param msg log this message\n-     * @param e   log this cause\n-     */\n-    void info(String msg, Throwable e);\n-\n-    /**\n-     * Logs a message with warn log level.\n-     *\n-     * @param msg log this message\n-     */\n-    void warn(String msg);\n-\n-    /**\n-     * Logs a message with warn log level.\n-     *\n-     * @param e log this message\n-     */\n-    void warn(Throwable e);\n-\n-    /**\n-     * Logs a message with warn log level.\n-     *\n-     * @param msg log this message\n-     * @param e   log this cause\n-     */\n-    void warn(String msg, Throwable e);\n-\n-    /**\n-     * Logs a message with error log level.\n-     *\n-     * @param msg log this message\n-     */\n-    void error(String msg);\n-\n-    /**\n-     * Logs an error with error log level.\n-     *\n-     * @param e log this cause\n-     */\n-    void error(Throwable e);\n-\n-    /**\n-     * Logs an error with error log level.\n-     *\n-     * @param msg log this message\n-     * @param e   log this cause\n-     */\n-    void error(String msg, Throwable e);\n-\n-    /**\n-     * Is trace logging currently enabled?\n-     *\n-     * @return true if trace is enabled\n-     */\n-    boolean isTraceEnabled();\n-\n-    /**\n-     * Is debug logging currently enabled?\n-     *\u00a0\n-     * @return true if debug is enabled\n-     */\n-    boolean isDebugEnabled();\n-\n-    /**\n-     * Is info logging currently enabled?\n-     *\n-     * @return true if info is enabled\n-     */\n-    boolean isInfoEnabled();\n-\n-    /**\n-     * Is warn logging currently enabled?\n-     *\n-     * @return true if warn is enabled\n-     */\n-    boolean isWarnEnabled();\n-\n-    /**\n-     * Is error logging currently enabled?\n-     *\n-     * @return true if error is enabled\n-     */\n-    boolean isErrorEnabled();\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.logger;\r\n+\r\n+/**\r\n+ * Logger interface\r\n+ * <p>\r\n+ * This interface is referred from commons-logging\r\n+ */\r\n+public interface Logger {\r\n+\r\n+    /**\r\n+     * Logs a message with trace log level.\r\n+     *\r\n+     * @param msg log this message\r\n+     */\r\n+    void trace(String msg);\r\n+\r\n+    /**\r\n+     * Logs an error with trace log level.\r\n+     *\r\n+     * @param e log this cause\r\n+     */\r\n+    void trace(Throwable e);\r\n+\r\n+    /**\r\n+     * Logs an error with trace log level.\r\n+     *\r\n+     * @param msg log this message\r\n+     * @param e   log this cause\r\n+     */\r\n+    void trace(String msg, Throwable e);\r\n+\r\n+    /**\r\n+     * Logs a message with debug log level.\r\n+     *\r\n+     * @param msg log this message\r\n+     */\r\n+    void debug(String msg);\r\n+\r\n+    /**\r\n+     * Logs an error with debug log level.\r\n+     *\r\n+     * @param e log this cause\r\n+     */\r\n+    void debug(Throwable e);\r\n+\r\n+    /**\r\n+     * Logs an error with debug log level.\r\n+     *\r\n+     * @param msg log this message\r\n+     * @param e   log this cause\r\n+     */\r\n+    void debug(String msg, Throwable e);\r\n+\r\n+    /**\r\n+     * Logs a message with info log level.\r\n+     *\r\n+     * @param msg log this message\r\n+     */\r\n+    void info(String msg);\r\n+\r\n+    /**\r\n+     * Logs an error with info log level.\r\n+     *\r\n+     * @param e log this cause\r\n+     */\r\n+    void info(Throwable e);\r\n+\r\n+    /**\r\n+     * Logs an error with info log level.\r\n+     *\r\n+     * @param msg log this message\r\n+     * @param e   log this cause\r\n+     */\r\n+    void info(String msg, Throwable e);\r\n+\r\n+    /**\r\n+     * Logs a message with warn log level.\r\n+     *\r\n+     * @param msg log this message\r\n+     */\r\n+    void warn(String msg);\r\n+\r\n+    /**\r\n+     * Logs a message with warn log level.\r\n+     *\r\n+     * @param e log this message\r\n+     */\r\n+    void warn(Throwable e);\r\n+\r\n+    /**\r\n+     * Logs a message with warn log level.\r\n+     *\r\n+     * @param msg log this message\r\n+     * @param e   log this cause\r\n+     */\r\n+    void warn(String msg, Throwable e);\r\n+\r\n+    /**\r\n+     * Logs a message with error log level.\r\n+     *\r\n+     * @param msg log this message\r\n+     */\r\n+    void error(String msg);\r\n+\r\n+    /**\r\n+     * Logs an error with error log level.\r\n+     *\r\n+     * @param e log this cause\r\n+     */\r\n+    void error(Throwable e);\r\n+\r\n+    /**\r\n+     * Logs an error with error log level.\r\n+     *\r\n+     * @param msg log this message\r\n+     * @param e   log this cause\r\n+     */\r\n+    void error(String msg, Throwable e);\r\n+\r\n+    /**\r\n+     * Is trace logging currently enabled?\r\n+     *\r\n+     * @return true if trace is enabled\r\n+     */\r\n+    boolean isTraceEnabled();\r\n+\r\n+    /**\r\n+     * Is debug logging currently enabled?\r\n+     *\u00a0\r\n+     * @return true if debug is enabled\r\n+     */\r\n+    boolean isDebugEnabled();\r\n+\r\n+    /**\r\n+     * Is info logging currently enabled?\r\n+     *\r\n+     * @return true if info is enabled\r\n+     */\r\n+    boolean isInfoEnabled();\r\n+\r\n+    /**\r\n+     * Is warn logging currently enabled?\r\n+     *\r\n+     * @return true if warn is enabled\r\n+     */\r\n+    boolean isWarnEnabled();\r\n+\r\n+    /**\r\n+     * Is error logging currently enabled?\r\n+     *\r\n+     * @return true if error is enabled\r\n+     */\r\n+    boolean isErrorEnabled();\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/common/store/support/SimpleDataStore.java", "source2": "org/apache/dubbo/common/store/support/SimpleDataStore.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,65 +1,65 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.store.support;\n-\n-import org.apache.dubbo.common.store.DataStore;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-public class SimpleDataStore implements DataStore {\n-\n-    // <component name or id, <data-name, data-value>>\n-    private ConcurrentMap<String, ConcurrentMap<String, Object>> data =\n-            new ConcurrentHashMap<String, ConcurrentMap<String, Object>>();\n-\n-    @Override\n-    public Map<String, Object> get(String componentName) {\n-        ConcurrentMap<String, Object> value = data.get(componentName);\n-        if (value == null) {\n-            return new HashMap<String, Object>();\n-        }\n-\n-        return new HashMap<String, Object>(value);\n-    }\n-\n-    @Override\n-    public Object get(String componentName, String key) {\n-        if (!data.containsKey(componentName)) {\n-            return null;\n-        }\n-        return data.get(componentName).get(key);\n-    }\n-\n-    @Override\n-    public void put(String componentName, String key, Object value) {\n-        Map<String, Object> componentData = data.computeIfAbsent(componentName, k -> new ConcurrentHashMap<>());\n-        componentData.put(key, value);\n-    }\n-\n-    @Override\n-    public void remove(String componentName, String key) {\n-        if (!data.containsKey(componentName)) {\n-            return;\n-        }\n-        data.get(componentName).remove(key);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.store.support;\r\n+\r\n+import org.apache.dubbo.common.store.DataStore;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+public class SimpleDataStore implements DataStore {\r\n+\r\n+    // <component name or id, <data-name, data-value>>\r\n+    private ConcurrentMap<String, ConcurrentMap<String, Object>> data =\r\n+            new ConcurrentHashMap<String, ConcurrentMap<String, Object>>();\r\n+\r\n+    @Override\r\n+    public Map<String, Object> get(String componentName) {\r\n+        ConcurrentMap<String, Object> value = data.get(componentName);\r\n+        if (value == null) {\r\n+            return new HashMap<String, Object>();\r\n+        }\r\n+\r\n+        return new HashMap<String, Object>(value);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object get(String componentName, String key) {\r\n+        if (!data.containsKey(componentName)) {\r\n+            return null;\r\n+        }\r\n+        return data.get(componentName).get(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void put(String componentName, String key, Object value) {\r\n+        Map<String, Object> componentData = data.computeIfAbsent(componentName, k -> new ConcurrentHashMap<>());\r\n+        componentData.put(key, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void remove(String componentName, String key) {\r\n+        if (!data.containsKey(componentName)) {\r\n+            return;\r\n+        }\r\n+        data.get(componentName).remove(key);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/threadlocal/InternalRunnable.java", "source2": "org/apache/dubbo/common/threadlocal/InternalRunnable.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,53 +1,53 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.threadlocal;\n-\n-\n-/**\n- * InternalRunnable\n- * There is a risk of memory leak when using {@link InternalThreadLocal} without calling\n- * {@link InternalThreadLocal#removeAll()}.\n- * This design is learning from {@see io.netty.util.concurrent.FastThreadLocalRunnable} which is in Netty.\n- */\n-public class InternalRunnable implements Runnable{\n-    private final Runnable runnable;\n-\n-    public InternalRunnable(Runnable runnable){\n-        this.runnable=runnable;\n-    }\n-\n-    /**\n-     * After the task execution is completed, it will call {@link InternalThreadLocal#removeAll()} to clear\n-     * unnecessary variables in the thread.\n-     */\n-    @Override\n-    public void run() {\n-        try{\n-            runnable.run();\n-        }finally {\n-            InternalThreadLocal.removeAll();\n-        }\n-    }\n-\n-    /**\n-     * Wrap ordinary Runnable into {@link InternalThreadLocal}.\n-     */\n-     static Runnable Wrap(Runnable runnable){\n-        return runnable instanceof InternalRunnable?runnable:new InternalRunnable(runnable);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.threadlocal;\r\n+\r\n+\r\n+/**\r\n+ * InternalRunnable\r\n+ * There is a risk of memory leak when using {@link InternalThreadLocal} without calling\r\n+ * {@link InternalThreadLocal#removeAll()}.\r\n+ * This design is learning from {@see io.netty.util.concurrent.FastThreadLocalRunnable} which is in Netty.\r\n+ */\r\n+public class InternalRunnable implements Runnable{\r\n+    private final Runnable runnable;\r\n+\r\n+    public InternalRunnable(Runnable runnable){\r\n+        this.runnable=runnable;\r\n+    }\r\n+\r\n+    /**\r\n+     * After the task execution is completed, it will call {@link InternalThreadLocal#removeAll()} to clear\r\n+     * unnecessary variables in the thread.\r\n+     */\r\n+    @Override\r\n+    public void run() {\r\n+        try{\r\n+            runnable.run();\r\n+        }finally {\r\n+            InternalThreadLocal.removeAll();\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Wrap ordinary Runnable into {@link InternalThreadLocal}.\r\n+     */\r\n+     static Runnable Wrap(Runnable runnable){\r\n+        return runnable instanceof InternalRunnable?runnable:new InternalRunnable(runnable);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/threadlocal/InternalThreadLocal.java", "source2": "org/apache/dubbo/common/threadlocal/InternalThreadLocal.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,198 +1,198 @@\n-/*\n- * Copyright 2014 The Netty Project\n- *\n- * The Netty Project licenses this file to you under the Apache License,\n- * version 2.0 (the \"License\"); you may not use this file except in compliance\n- * with the License. You may obtain a copy of the License at:\n- *\n- *   http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n- * License for the specific language governing permissions and limitations\n- * under the License.\n- */\n-\n-package org.apache.dubbo.common.threadlocal;\n-\n-import java.util.Collections;\n-import java.util.IdentityHashMap;\n-import java.util.Set;\n-\n-/**\n- * InternalThreadLocal\n- * A special variant of {@link ThreadLocal} that yields higher access performance when accessed from a\n- * {@link InternalThread}.\n- * <p></p>\n- * Internally, a {@link InternalThread} uses a constant index in an array, instead of using hash code and hash table,\n- * to look for a variable.  Although seemingly very subtle, it yields slight performance advantage over using a hash\n- * table, and it is useful when accessed frequently.\n- * <p></p>\n- * This design is learning from {@see io.netty.util.concurrent.FastThreadLocal} which is in Netty.\n- */\n-public class InternalThreadLocal<V> {\n-\n-    private static final int VARIABLES_TO_REMOVE_INDEX = InternalThreadLocalMap.nextVariableIndex();\n-\n-    private final int index;\n-\n-    public InternalThreadLocal() {\n-        index = InternalThreadLocalMap.nextVariableIndex();\n-    }\n-\n-    /**\n-     * Removes all {@link InternalThreadLocal} variables bound to the current thread.  This operation is useful when you\n-     * are in a container environment, and you don't want to leave the thread local variables in the threads you do not\n-     * manage.\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    public static void removeAll() {\n-        InternalThreadLocalMap threadLocalMap = InternalThreadLocalMap.getIfSet();\n-        if (threadLocalMap == null) {\n-            return;\n-        }\n-\n-        try {\n-            Object v = threadLocalMap.indexedVariable(VARIABLES_TO_REMOVE_INDEX);\n-            if (v != null && v != InternalThreadLocalMap.UNSET) {\n-                Set<InternalThreadLocal<?>> variablesToRemove = (Set<InternalThreadLocal<?>>) v;\n-                InternalThreadLocal<?>[] variablesToRemoveArray =\n-                        variablesToRemove.toArray(new InternalThreadLocal[0]);\n-                for (InternalThreadLocal<?> tlv : variablesToRemoveArray) {\n-                    tlv.remove(threadLocalMap);\n-                }\n-            }\n-        } finally {\n-            InternalThreadLocalMap.remove();\n-        }\n-    }\n-\n-    /**\n-     * Returns the number of thread local variables bound to the current thread.\n-     */\n-    public static int size() {\n-        InternalThreadLocalMap threadLocalMap = InternalThreadLocalMap.getIfSet();\n-        if (threadLocalMap == null) {\n-            return 0;\n-        } else {\n-            return threadLocalMap.size();\n-        }\n-    }\n-\n-    public static void destroy() {\n-        InternalThreadLocalMap.destroy();\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    private static void addToVariablesToRemove(InternalThreadLocalMap threadLocalMap, InternalThreadLocal<?> variable) {\n-        Object v = threadLocalMap.indexedVariable(VARIABLES_TO_REMOVE_INDEX);\n-        Set<InternalThreadLocal<?>> variablesToRemove;\n-        if (v == InternalThreadLocalMap.UNSET || v == null) {\n-            variablesToRemove = Collections.newSetFromMap(new IdentityHashMap<InternalThreadLocal<?>, Boolean>());\n-            threadLocalMap.setIndexedVariable(VARIABLES_TO_REMOVE_INDEX, variablesToRemove);\n-        } else {\n-            variablesToRemove = (Set<InternalThreadLocal<?>>) v;\n-        }\n-\n-        variablesToRemove.add(variable);\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    private static void removeFromVariablesToRemove(InternalThreadLocalMap threadLocalMap, InternalThreadLocal<?> variable) {\n-\n-        Object v = threadLocalMap.indexedVariable(VARIABLES_TO_REMOVE_INDEX);\n-\n-        if (v == InternalThreadLocalMap.UNSET || v == null) {\n-            return;\n-        }\n-\n-        Set<InternalThreadLocal<?>> variablesToRemove = (Set<InternalThreadLocal<?>>) v;\n-        variablesToRemove.remove(variable);\n-    }\n-\n-    /**\n-     * Returns the current value for the current thread\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    public final V get() {\n-        InternalThreadLocalMap threadLocalMap = InternalThreadLocalMap.get();\n-        Object v = threadLocalMap.indexedVariable(index);\n-        if (v != InternalThreadLocalMap.UNSET) {\n-            return (V) v;\n-        }\n-\n-        return initialize(threadLocalMap);\n-    }\n-\n-    private V initialize(InternalThreadLocalMap threadLocalMap) {\n-        V v = null;\n-        try {\n-            v = initialValue();\n-        } catch (Exception e) {\n-            throw new RuntimeException(e);\n-        }\n-\n-        threadLocalMap.setIndexedVariable(index, v);\n-        addToVariablesToRemove(threadLocalMap, this);\n-        return v;\n-    }\n-\n-    /**\n-     * Sets the value for the current thread.\n-     */\n-    public final void set(V value) {\n-        if (value == null || value == InternalThreadLocalMap.UNSET) {\n-            remove();\n-        } else {\n-            InternalThreadLocalMap threadLocalMap = InternalThreadLocalMap.get();\n-            if (threadLocalMap.setIndexedVariable(index, value)) {\n-                addToVariablesToRemove(threadLocalMap, this);\n-            }\n-        }\n-    }\n-\n-    /**\n-     * Sets the value to uninitialized; a proceeding call to get() will trigger a call to initialValue().\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    public final void remove() {\n-        remove(InternalThreadLocalMap.getIfSet());\n-    }\n-\n-    /**\n-     * Sets the value to uninitialized for the specified thread local map;\n-     * a proceeding call to get() will trigger a call to initialValue().\n-     * The specified thread local map must be for the current thread.\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    public final void remove(InternalThreadLocalMap threadLocalMap) {\n-        if (threadLocalMap == null) {\n-            return;\n-        }\n-\n-        Object v = threadLocalMap.removeIndexedVariable(index);\n-        removeFromVariablesToRemove(threadLocalMap, this);\n-\n-        if (v != InternalThreadLocalMap.UNSET) {\n-            try {\n-                onRemoval((V) v);\n-            } catch (Exception e) {\n-                throw new RuntimeException(e);\n-            }\n-        }\n-    }\n-\n-    /**\n-     * Returns the initial value for this thread-local variable.\n-     */\n-    protected V initialValue() throws Exception {\n-        return null;\n-    }\n-\n-    /**\n-     * Invoked when this thread local variable is removed by {@link #remove()}.\n-     */\n-    protected void onRemoval(@SuppressWarnings(\"unused\") V value) throws Exception {\n-    }\n-}\n+/*\r\n+ * Copyright 2014 The Netty Project\r\n+ *\r\n+ * The Netty Project licenses this file to you under the Apache License,\r\n+ * version 2.0 (the \"License\"); you may not use this file except in compliance\r\n+ * with the License. You may obtain a copy of the License at:\r\n+ *\r\n+ *   http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\r\n+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r\n+ * License for the specific language governing permissions and limitations\r\n+ * under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.threadlocal;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.IdentityHashMap;\r\n+import java.util.Set;\r\n+\r\n+/**\r\n+ * InternalThreadLocal\r\n+ * A special variant of {@link ThreadLocal} that yields higher access performance when accessed from a\r\n+ * {@link InternalThread}.\r\n+ * <p></p>\r\n+ * Internally, a {@link InternalThread} uses a constant index in an array, instead of using hash code and hash table,\r\n+ * to look for a variable.  Although seemingly very subtle, it yields slight performance advantage over using a hash\r\n+ * table, and it is useful when accessed frequently.\r\n+ * <p></p>\r\n+ * This design is learning from {@see io.netty.util.concurrent.FastThreadLocal} which is in Netty.\r\n+ */\r\n+public class InternalThreadLocal<V> {\r\n+\r\n+    private static final int VARIABLES_TO_REMOVE_INDEX = InternalThreadLocalMap.nextVariableIndex();\r\n+\r\n+    private final int index;\r\n+\r\n+    public InternalThreadLocal() {\r\n+        index = InternalThreadLocalMap.nextVariableIndex();\r\n+    }\r\n+\r\n+    /**\r\n+     * Removes all {@link InternalThreadLocal} variables bound to the current thread.  This operation is useful when you\r\n+     * are in a container environment, and you don't want to leave the thread local variables in the threads you do not\r\n+     * manage.\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public static void removeAll() {\r\n+        InternalThreadLocalMap threadLocalMap = InternalThreadLocalMap.getIfSet();\r\n+        if (threadLocalMap == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        try {\r\n+            Object v = threadLocalMap.indexedVariable(VARIABLES_TO_REMOVE_INDEX);\r\n+            if (v != null && v != InternalThreadLocalMap.UNSET) {\r\n+                Set<InternalThreadLocal<?>> variablesToRemove = (Set<InternalThreadLocal<?>>) v;\r\n+                InternalThreadLocal<?>[] variablesToRemoveArray =\r\n+                        variablesToRemove.toArray(new InternalThreadLocal[0]);\r\n+                for (InternalThreadLocal<?> tlv : variablesToRemoveArray) {\r\n+                    tlv.remove(threadLocalMap);\r\n+                }\r\n+            }\r\n+        } finally {\r\n+            InternalThreadLocalMap.remove();\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Returns the number of thread local variables bound to the current thread.\r\n+     */\r\n+    public static int size() {\r\n+        InternalThreadLocalMap threadLocalMap = InternalThreadLocalMap.getIfSet();\r\n+        if (threadLocalMap == null) {\r\n+            return 0;\r\n+        } else {\r\n+            return threadLocalMap.size();\r\n+        }\r\n+    }\r\n+\r\n+    public static void destroy() {\r\n+        InternalThreadLocalMap.destroy();\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    private static void addToVariablesToRemove(InternalThreadLocalMap threadLocalMap, InternalThreadLocal<?> variable) {\r\n+        Object v = threadLocalMap.indexedVariable(VARIABLES_TO_REMOVE_INDEX);\r\n+        Set<InternalThreadLocal<?>> variablesToRemove;\r\n+        if (v == InternalThreadLocalMap.UNSET || v == null) {\r\n+            variablesToRemove = Collections.newSetFromMap(new IdentityHashMap<InternalThreadLocal<?>, Boolean>());\r\n+            threadLocalMap.setIndexedVariable(VARIABLES_TO_REMOVE_INDEX, variablesToRemove);\r\n+        } else {\r\n+            variablesToRemove = (Set<InternalThreadLocal<?>>) v;\r\n+        }\r\n+\r\n+        variablesToRemove.add(variable);\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    private static void removeFromVariablesToRemove(InternalThreadLocalMap threadLocalMap, InternalThreadLocal<?> variable) {\r\n+\r\n+        Object v = threadLocalMap.indexedVariable(VARIABLES_TO_REMOVE_INDEX);\r\n+\r\n+        if (v == InternalThreadLocalMap.UNSET || v == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        Set<InternalThreadLocal<?>> variablesToRemove = (Set<InternalThreadLocal<?>>) v;\r\n+        variablesToRemove.remove(variable);\r\n+    }\r\n+\r\n+    /**\r\n+     * Returns the current value for the current thread\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public final V get() {\r\n+        InternalThreadLocalMap threadLocalMap = InternalThreadLocalMap.get();\r\n+        Object v = threadLocalMap.indexedVariable(index);\r\n+        if (v != InternalThreadLocalMap.UNSET) {\r\n+            return (V) v;\r\n+        }\r\n+\r\n+        return initialize(threadLocalMap);\r\n+    }\r\n+\r\n+    private V initialize(InternalThreadLocalMap threadLocalMap) {\r\n+        V v = null;\r\n+        try {\r\n+            v = initialValue();\r\n+        } catch (Exception e) {\r\n+            throw new RuntimeException(e);\r\n+        }\r\n+\r\n+        threadLocalMap.setIndexedVariable(index, v);\r\n+        addToVariablesToRemove(threadLocalMap, this);\r\n+        return v;\r\n+    }\r\n+\r\n+    /**\r\n+     * Sets the value for the current thread.\r\n+     */\r\n+    public final void set(V value) {\r\n+        if (value == null || value == InternalThreadLocalMap.UNSET) {\r\n+            remove();\r\n+        } else {\r\n+            InternalThreadLocalMap threadLocalMap = InternalThreadLocalMap.get();\r\n+            if (threadLocalMap.setIndexedVariable(index, value)) {\r\n+                addToVariablesToRemove(threadLocalMap, this);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Sets the value to uninitialized; a proceeding call to get() will trigger a call to initialValue().\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public final void remove() {\r\n+        remove(InternalThreadLocalMap.getIfSet());\r\n+    }\r\n+\r\n+    /**\r\n+     * Sets the value to uninitialized for the specified thread local map;\r\n+     * a proceeding call to get() will trigger a call to initialValue().\r\n+     * The specified thread local map must be for the current thread.\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public final void remove(InternalThreadLocalMap threadLocalMap) {\r\n+        if (threadLocalMap == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        Object v = threadLocalMap.removeIndexedVariable(index);\r\n+        removeFromVariablesToRemove(threadLocalMap, this);\r\n+\r\n+        if (v != InternalThreadLocalMap.UNSET) {\r\n+            try {\r\n+                onRemoval((V) v);\r\n+            } catch (Exception e) {\r\n+                throw new RuntimeException(e);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Returns the initial value for this thread-local variable.\r\n+     */\r\n+    protected V initialValue() throws Exception {\r\n+        return null;\r\n+    }\r\n+\r\n+    /**\r\n+     * Invoked when this thread local variable is removed by {@link #remove()}.\r\n+     */\r\n+    protected void onRemoval(@SuppressWarnings(\"unused\") V value) throws Exception {\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/threadlocal/InternalThreadLocalMap.java", "source2": "org/apache/dubbo/common/threadlocal/InternalThreadLocalMap.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,167 +1,167 @@\n-/*\n- * Copyright 2014 The Netty Project\n- *\n- * The Netty Project licenses this file to you under the Apache License,\n- * version 2.0 (the \"License\"); you may not use this file except in compliance\n- * with the License. You may obtain a copy of the License at:\n- *\n- *   http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n- * License for the specific language governing permissions and limitations\n- * under the License.\n- */\n-\n-package org.apache.dubbo.common.threadlocal;\n-\n-import java.util.Arrays;\n-import java.util.concurrent.atomic.AtomicInteger;\n-\n-/**\n- * The internal data structure that stores the threadLocal variables for Netty and all {@link InternalThread}s.\n- * Note that this class is for internal use only. Use {@link InternalThread}\n- * unless you know what you are doing.\n- */\n-public final class InternalThreadLocalMap {\n-\n-    private Object[] indexedVariables;\n-\n-    private static ThreadLocal<InternalThreadLocalMap> slowThreadLocalMap = new ThreadLocal<InternalThreadLocalMap>();\n-\n-    private static final AtomicInteger NEXT_INDEX = new AtomicInteger();\n-\n-    public static final Object UNSET = new Object();\n-\n-    public static InternalThreadLocalMap getIfSet() {\n-        Thread thread = Thread.currentThread();\n-        if (thread instanceof InternalThread) {\n-            return ((InternalThread) thread).threadLocalMap();\n-        }\n-        return slowThreadLocalMap.get();\n-    }\n-\n-    public static InternalThreadLocalMap get() {\n-        Thread thread = Thread.currentThread();\n-        if (thread instanceof InternalThread) {\n-            return fastGet((InternalThread) thread);\n-        }\n-        return slowGet();\n-    }\n-\n-    public static void remove() {\n-        Thread thread = Thread.currentThread();\n-        if (thread instanceof InternalThread) {\n-            ((InternalThread) thread).setThreadLocalMap(null);\n-        } else {\n-            slowThreadLocalMap.remove();\n-        }\n-    }\n-\n-    public static void destroy() {\n-        slowThreadLocalMap = null;\n-    }\n-\n-    public static int nextVariableIndex() {\n-        int index = NEXT_INDEX.getAndIncrement();\n-        if (index < 0) {\n-            NEXT_INDEX.decrementAndGet();\n-            throw new IllegalStateException(\"Too many thread-local indexed variables\");\n-        }\n-        return index;\n-    }\n-\n-    public static int lastVariableIndex() {\n-        return NEXT_INDEX.get() - 1;\n-    }\n-\n-    private InternalThreadLocalMap() {\n-        indexedVariables = newIndexedVariableTable();\n-    }\n-\n-    public Object indexedVariable(int index) {\n-        Object[] lookup = indexedVariables;\n-        return index < lookup.length ? lookup[index] : UNSET;\n-    }\n-\n-    /**\n-     * @return {@code true} if and only if a new thread-local variable has been created\n-     */\n-    public boolean setIndexedVariable(int index, Object value) {\n-        Object[] lookup = indexedVariables;\n-        if (index < lookup.length) {\n-            Object oldValue = lookup[index];\n-            lookup[index] = value;\n-            return oldValue == UNSET;\n-        } else {\n-            expandIndexedVariableTableAndSet(index, value);\n-            return true;\n-        }\n-    }\n-\n-    public Object removeIndexedVariable(int index) {\n-        Object[] lookup = indexedVariables;\n-        if (index < lookup.length) {\n-            Object v = lookup[index];\n-            lookup[index] = UNSET;\n-            return v;\n-        } else {\n-            return UNSET;\n-        }\n-    }\n-\n-    public int size() {\n-        int count = 0;\n-        for (Object o : indexedVariables) {\n-            if (o != UNSET) {\n-                ++count;\n-            }\n-        }\n-\n-        //the fist element in `indexedVariables` is a set to keep all the InternalThreadLocal to remove\n-        //look at method `addToVariablesToRemove`\n-        return count - 1;\n-    }\n-\n-    private static Object[] newIndexedVariableTable() {\n-        Object[] array = new Object[32];\n-        Arrays.fill(array, UNSET);\n-        return array;\n-    }\n-\n-    private static InternalThreadLocalMap fastGet(InternalThread thread) {\n-        InternalThreadLocalMap threadLocalMap = thread.threadLocalMap();\n-        if (threadLocalMap == null) {\n-            thread.setThreadLocalMap(threadLocalMap = new InternalThreadLocalMap());\n-        }\n-        return threadLocalMap;\n-    }\n-\n-    private static InternalThreadLocalMap slowGet() {\n-        ThreadLocal<InternalThreadLocalMap> slowThreadLocalMap = InternalThreadLocalMap.slowThreadLocalMap;\n-        InternalThreadLocalMap ret = slowThreadLocalMap.get();\n-        if (ret == null) {\n-            ret = new InternalThreadLocalMap();\n-            slowThreadLocalMap.set(ret);\n-        }\n-        return ret;\n-    }\n-\n-    private void expandIndexedVariableTableAndSet(int index, Object value) {\n-        Object[] oldArray = indexedVariables;\n-        final int oldCapacity = oldArray.length;\n-        int newCapacity = index;\n-        newCapacity |= newCapacity >>> 1;\n-        newCapacity |= newCapacity >>> 2;\n-        newCapacity |= newCapacity >>> 4;\n-        newCapacity |= newCapacity >>> 8;\n-        newCapacity |= newCapacity >>> 16;\n-        newCapacity++;\n-\n-        Object[] newArray = Arrays.copyOf(oldArray, newCapacity);\n-        Arrays.fill(newArray, oldCapacity, newArray.length, UNSET);\n-        newArray[index] = value;\n-        indexedVariables = newArray;\n-    }\n-}\n+/*\r\n+ * Copyright 2014 The Netty Project\r\n+ *\r\n+ * The Netty Project licenses this file to you under the Apache License,\r\n+ * version 2.0 (the \"License\"); you may not use this file except in compliance\r\n+ * with the License. You may obtain a copy of the License at:\r\n+ *\r\n+ *   http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\r\n+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r\n+ * License for the specific language governing permissions and limitations\r\n+ * under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.threadlocal;\r\n+\r\n+import java.util.Arrays;\r\n+import java.util.concurrent.atomic.AtomicInteger;\r\n+\r\n+/**\r\n+ * The internal data structure that stores the threadLocal variables for Netty and all {@link InternalThread}s.\r\n+ * Note that this class is for internal use only. Use {@link InternalThread}\r\n+ * unless you know what you are doing.\r\n+ */\r\n+public final class InternalThreadLocalMap {\r\n+\r\n+    private Object[] indexedVariables;\r\n+\r\n+    private static ThreadLocal<InternalThreadLocalMap> slowThreadLocalMap = new ThreadLocal<InternalThreadLocalMap>();\r\n+\r\n+    private static final AtomicInteger NEXT_INDEX = new AtomicInteger();\r\n+\r\n+    public static final Object UNSET = new Object();\r\n+\r\n+    public static InternalThreadLocalMap getIfSet() {\r\n+        Thread thread = Thread.currentThread();\r\n+        if (thread instanceof InternalThread) {\r\n+            return ((InternalThread) thread).threadLocalMap();\r\n+        }\r\n+        return slowThreadLocalMap.get();\r\n+    }\r\n+\r\n+    public static InternalThreadLocalMap get() {\r\n+        Thread thread = Thread.currentThread();\r\n+        if (thread instanceof InternalThread) {\r\n+            return fastGet((InternalThread) thread);\r\n+        }\r\n+        return slowGet();\r\n+    }\r\n+\r\n+    public static void remove() {\r\n+        Thread thread = Thread.currentThread();\r\n+        if (thread instanceof InternalThread) {\r\n+            ((InternalThread) thread).setThreadLocalMap(null);\r\n+        } else {\r\n+            slowThreadLocalMap.remove();\r\n+        }\r\n+    }\r\n+\r\n+    public static void destroy() {\r\n+        slowThreadLocalMap = null;\r\n+    }\r\n+\r\n+    public static int nextVariableIndex() {\r\n+        int index = NEXT_INDEX.getAndIncrement();\r\n+        if (index < 0) {\r\n+            NEXT_INDEX.decrementAndGet();\r\n+            throw new IllegalStateException(\"Too many thread-local indexed variables\");\r\n+        }\r\n+        return index;\r\n+    }\r\n+\r\n+    public static int lastVariableIndex() {\r\n+        return NEXT_INDEX.get() - 1;\r\n+    }\r\n+\r\n+    private InternalThreadLocalMap() {\r\n+        indexedVariables = newIndexedVariableTable();\r\n+    }\r\n+\r\n+    public Object indexedVariable(int index) {\r\n+        Object[] lookup = indexedVariables;\r\n+        return index < lookup.length ? lookup[index] : UNSET;\r\n+    }\r\n+\r\n+    /**\r\n+     * @return {@code true} if and only if a new thread-local variable has been created\r\n+     */\r\n+    public boolean setIndexedVariable(int index, Object value) {\r\n+        Object[] lookup = indexedVariables;\r\n+        if (index < lookup.length) {\r\n+            Object oldValue = lookup[index];\r\n+            lookup[index] = value;\r\n+            return oldValue == UNSET;\r\n+        } else {\r\n+            expandIndexedVariableTableAndSet(index, value);\r\n+            return true;\r\n+        }\r\n+    }\r\n+\r\n+    public Object removeIndexedVariable(int index) {\r\n+        Object[] lookup = indexedVariables;\r\n+        if (index < lookup.length) {\r\n+            Object v = lookup[index];\r\n+            lookup[index] = UNSET;\r\n+            return v;\r\n+        } else {\r\n+            return UNSET;\r\n+        }\r\n+    }\r\n+\r\n+    public int size() {\r\n+        int count = 0;\r\n+        for (Object o : indexedVariables) {\r\n+            if (o != UNSET) {\r\n+                ++count;\r\n+            }\r\n+        }\r\n+\r\n+        //the fist element in `indexedVariables` is a set to keep all the InternalThreadLocal to remove\r\n+        //look at method `addToVariablesToRemove`\r\n+        return count - 1;\r\n+    }\r\n+\r\n+    private static Object[] newIndexedVariableTable() {\r\n+        Object[] array = new Object[32];\r\n+        Arrays.fill(array, UNSET);\r\n+        return array;\r\n+    }\r\n+\r\n+    private static InternalThreadLocalMap fastGet(InternalThread thread) {\r\n+        InternalThreadLocalMap threadLocalMap = thread.threadLocalMap();\r\n+        if (threadLocalMap == null) {\r\n+            thread.setThreadLocalMap(threadLocalMap = new InternalThreadLocalMap());\r\n+        }\r\n+        return threadLocalMap;\r\n+    }\r\n+\r\n+    private static InternalThreadLocalMap slowGet() {\r\n+        ThreadLocal<InternalThreadLocalMap> slowThreadLocalMap = InternalThreadLocalMap.slowThreadLocalMap;\r\n+        InternalThreadLocalMap ret = slowThreadLocalMap.get();\r\n+        if (ret == null) {\r\n+            ret = new InternalThreadLocalMap();\r\n+            slowThreadLocalMap.set(ret);\r\n+        }\r\n+        return ret;\r\n+    }\r\n+\r\n+    private void expandIndexedVariableTableAndSet(int index, Object value) {\r\n+        Object[] oldArray = indexedVariables;\r\n+        final int oldCapacity = oldArray.length;\r\n+        int newCapacity = index;\r\n+        newCapacity |= newCapacity >>> 1;\r\n+        newCapacity |= newCapacity >>> 2;\r\n+        newCapacity |= newCapacity >>> 4;\r\n+        newCapacity |= newCapacity >>> 8;\r\n+        newCapacity |= newCapacity >>> 16;\r\n+        newCapacity++;\r\n+\r\n+        Object[] newArray = Arrays.copyOf(oldArray, newCapacity);\r\n+        Arrays.fill(newArray, oldCapacity, newArray.length, UNSET);\r\n+        newArray[index] = value;\r\n+        indexedVariables = newArray;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/threadlocal/NamedInternalThreadFactory.java", "source2": "org/apache/dubbo/common/threadlocal/NamedInternalThreadFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,47 +1,47 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.threadlocal;\n-\n-import org.apache.dubbo.common.utils.NamedThreadFactory;\n-\n-/**\n- * NamedInternalThreadFactory\n- * This is a threadFactory which produce {@link InternalThread}\n- */\n-public class NamedInternalThreadFactory extends NamedThreadFactory {\n-\n-    public NamedInternalThreadFactory() {\n-        super();\n-    }\n-\n-    public NamedInternalThreadFactory(String prefix) {\n-        super(prefix, false);\n-    }\n-\n-    public NamedInternalThreadFactory(String prefix, boolean daemon) {\n-        super(prefix, daemon);\n-    }\n-\n-    @Override\n-    public Thread newThread(Runnable runnable) {\n-        String name = mPrefix + mThreadNum.getAndIncrement();\n-        InternalThread ret = new InternalThread(mGroup, InternalRunnable.Wrap(runnable), name, 0);\n-        ret.setDaemon(mDaemon);\n-        return ret;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.threadlocal;\r\n+\r\n+import org.apache.dubbo.common.utils.NamedThreadFactory;\r\n+\r\n+/**\r\n+ * NamedInternalThreadFactory\r\n+ * This is a threadFactory which produce {@link InternalThread}\r\n+ */\r\n+public class NamedInternalThreadFactory extends NamedThreadFactory {\r\n+\r\n+    public NamedInternalThreadFactory() {\r\n+        super();\r\n+    }\r\n+\r\n+    public NamedInternalThreadFactory(String prefix) {\r\n+        super(prefix, false);\r\n+    }\r\n+\r\n+    public NamedInternalThreadFactory(String prefix, boolean daemon) {\r\n+        super(prefix, daemon);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Thread newThread(Runnable runnable) {\r\n+        String name = mPrefix + mThreadNum.getAndIncrement();\r\n+        InternalThread ret = new InternalThread(mGroup, InternalRunnable.Wrap(runnable), name, 0);\r\n+        ret.setDaemon(mDaemon);\r\n+        return ret;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/threadpool/ThreadPool.java", "source2": "org/apache/dubbo/common/threadpool/ThreadPool.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,42 +1,42 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.threadpool;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.Adaptive;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-import java.util.concurrent.Executor;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.THREADPOOL_KEY;\n-\n-/**\n- * ThreadPool\n- */\n-@SPI(\"fixed\")\n-public interface ThreadPool {\n-\n-    /**\n-     * Thread pool\n-     *\n-     * @param url URL contains thread parameter\n-     * @return thread pool\n-     */\n-    @Adaptive({THREADPOOL_KEY})\n-    Executor getExecutor(URL url);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.threadpool;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.Adaptive;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+import java.util.concurrent.Executor;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.THREADPOOL_KEY;\r\n+\r\n+/**\r\n+ * ThreadPool\r\n+ */\r\n+@SPI(\"fixed\")\r\n+public interface ThreadPool {\r\n+\r\n+    /**\r\n+     * Thread pool\r\n+     *\r\n+     * @param url URL contains thread parameter\r\n+     * @return thread pool\r\n+     */\r\n+    @Adaptive({THREADPOOL_KEY})\r\n+    Executor getExecutor(URL url);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/threadpool/ThreadlessExecutor.java", "source2": "org/apache/dubbo/common/threadpool/ThreadlessExecutor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,202 +1,202 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.threadpool;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.concurrent.AbstractExecutorService;\n-import java.util.concurrent.BlockingQueue;\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.LinkedBlockingQueue;\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.TimeoutException;\n-\n-/**\n- * The most important difference between this Executor and other normal Executor is that this one doesn't manage\n- * any thread.\n- * <p>\n- * Tasks submitted to this executor through {@link #execute(Runnable)} will not get scheduled to a specific thread, though normal executors always do the schedule.\n- * Those tasks are stored in a blocking queue and will only be executed when a thread calls {@link #waitAndDrain()}, the thread executing the task\n- * is exactly the same as the one calling waitAndDrain.\n- */\n-public class ThreadlessExecutor extends AbstractExecutorService {\n-    private static final Logger logger = LoggerFactory.getLogger(ThreadlessExecutor.class.getName());\n-\n-    private final BlockingQueue<Runnable> queue = new LinkedBlockingQueue<>();\n-\n-    private ExecutorService sharedExecutor;\n-\n-    private CompletableFuture<?> waitingFuture;\n-\n-    private boolean finished = false;\n-\n-    private volatile boolean waiting = true;\n-\n-    private final Object lock = new Object();\n-\n-    public ThreadlessExecutor(ExecutorService sharedExecutor) {\n-        this.sharedExecutor = sharedExecutor;\n-    }\n-\n-    public CompletableFuture<?> getWaitingFuture() {\n-        return waitingFuture;\n-    }\n-\n-    public void setWaitingFuture(CompletableFuture<?> waitingFuture) {\n-        this.waitingFuture = waitingFuture;\n-    }\n-\n-    public boolean isWaiting() {\n-        return waiting;\n-    }\n-\n-    /**\n-     * Waits until there is a task, executes the task and all queued tasks (if there're any). The task is either a normal\n-     * response or a timeout response.\n-     */\n-    public void waitAndDrain() throws InterruptedException {\n-        /**\n-         * Usually, {@link #waitAndDrain()} will only get called once. It blocks for the response for the first time,\n-         * once the response (the task) reached and being executed waitAndDrain will return, the whole request process\n-         * then finishes. Subsequent calls on {@link #waitAndDrain()} (if there're any) should return immediately.\n-         *\n-         * There's no need to worry that {@link #finished} is not thread-safe. Checking and updating of\n-         * 'finished' only appear in waitAndDrain, since waitAndDrain is binding to one RPC call (one thread), the call\n-         * of it is totally sequential.\n-         */\n-        if (finished) {\n-            return;\n-        }\n-\n-        Runnable runnable;\n-        try {\n-            runnable = queue.take();\n-        }catch (InterruptedException e){\n-            waiting = false;\n-            throw e;\n-        }\n-\n-        synchronized (lock) {\n-            waiting = false;\n-            runnable.run();\n-        }\n-\n-        runnable = queue.poll();\n-        while (runnable != null) {\n-            runnable.run();\n-            runnable = queue.poll();\n-        }\n-        // mark the status of ThreadlessExecutor as finished.\n-        finished = true;\n-    }\n-\n-    public long waitAndDrain(long timeout, TimeUnit unit) throws InterruptedException, TimeoutException {\n-        /*long startInMs = System.currentTimeMillis();\n-        Runnable runnable = queue.poll(timeout, unit);\n-        if (runnable == null) {\n-            throw new TimeoutException();\n-        }\n-        runnable.run();\n-        long elapsedInMs = System.currentTimeMillis() - startInMs;\n-        long timeLeft = timeout - elapsedInMs;\n-        if (timeLeft < 0) {\n-            throw new TimeoutException();\n-        }\n-        return timeLeft;*/\n-        throw new UnsupportedOperationException();\n-    }\n-\n-    /**\n-     * If the calling thread is still waiting for a callback task, add the task into the blocking queue to wait for schedule.\n-     * Otherwise, submit to shared callback executor directly.\n-     *\n-     * @param runnable\n-     */\n-    @Override\n-    public void execute(Runnable runnable) {\n-        runnable = new RunnableWrapper(runnable);\n-        synchronized (lock) {\n-            if (!waiting) {\n-                sharedExecutor.execute(runnable);\n-            } else {\n-                queue.add(runnable);\n-            }\n-        }\n-    }\n-\n-    /**\n-     * tells the thread blocking on {@link #waitAndDrain()} to return, despite of the current status, to avoid endless waiting.\n-     */\n-    public void notifyReturn(Throwable t) {\n-        // an empty runnable task.\n-        execute(() -> {\n-            waitingFuture.completeExceptionally(t);\n-        });\n-    }\n-\n-    /**\n-     * The following methods are still not supported\n-     */\n-\n-    @Override\n-    public void shutdown() {\n-        shutdownNow();\n-    }\n-\n-    @Override\n-    public List<Runnable> shutdownNow() {\n-        notifyReturn(new IllegalStateException(\"Consumer is shutting down and this call is going to be stopped without \" +\n-                \"receiving any result, usually this is called by a slow provider instance or bad service implementation.\"));\n-        return Collections.emptyList();\n-    }\n-\n-    @Override\n-    public boolean isShutdown() {\n-        return false;\n-    }\n-\n-    @Override\n-    public boolean isTerminated() {\n-        return false;\n-    }\n-\n-    @Override\n-    public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {\n-        return false;\n-    }\n-\n-    private static class RunnableWrapper implements Runnable {\n-        private Runnable runnable;\n-\n-        public RunnableWrapper(Runnable runnable) {\n-            this.runnable = runnable;\n-        }\n-\n-        @Override\n-        public void run() {\n-            try {\n-                runnable.run();\n-            } catch (Throwable t) {\n-                logger.info(t);\n-            }\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.threadpool;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.concurrent.AbstractExecutorService;\r\n+import java.util.concurrent.BlockingQueue;\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.LinkedBlockingQueue;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.TimeoutException;\r\n+\r\n+/**\r\n+ * The most important difference between this Executor and other normal Executor is that this one doesn't manage\r\n+ * any thread.\r\n+ * <p>\r\n+ * Tasks submitted to this executor through {@link #execute(Runnable)} will not get scheduled to a specific thread, though normal executors always do the schedule.\r\n+ * Those tasks are stored in a blocking queue and will only be executed when a thread calls {@link #waitAndDrain()}, the thread executing the task\r\n+ * is exactly the same as the one calling waitAndDrain.\r\n+ */\r\n+public class ThreadlessExecutor extends AbstractExecutorService {\r\n+    private static final Logger logger = LoggerFactory.getLogger(ThreadlessExecutor.class.getName());\r\n+\r\n+    private final BlockingQueue<Runnable> queue = new LinkedBlockingQueue<>();\r\n+\r\n+    private ExecutorService sharedExecutor;\r\n+\r\n+    private CompletableFuture<?> waitingFuture;\r\n+\r\n+    private boolean finished = false;\r\n+\r\n+    private volatile boolean waiting = true;\r\n+\r\n+    private final Object lock = new Object();\r\n+\r\n+    public ThreadlessExecutor(ExecutorService sharedExecutor) {\r\n+        this.sharedExecutor = sharedExecutor;\r\n+    }\r\n+\r\n+    public CompletableFuture<?> getWaitingFuture() {\r\n+        return waitingFuture;\r\n+    }\r\n+\r\n+    public void setWaitingFuture(CompletableFuture<?> waitingFuture) {\r\n+        this.waitingFuture = waitingFuture;\r\n+    }\r\n+\r\n+    public boolean isWaiting() {\r\n+        return waiting;\r\n+    }\r\n+\r\n+    /**\r\n+     * Waits until there is a task, executes the task and all queued tasks (if there're any). The task is either a normal\r\n+     * response or a timeout response.\r\n+     */\r\n+    public void waitAndDrain() throws InterruptedException {\r\n+        /**\r\n+         * Usually, {@link #waitAndDrain()} will only get called once. It blocks for the response for the first time,\r\n+         * once the response (the task) reached and being executed waitAndDrain will return, the whole request process\r\n+         * then finishes. Subsequent calls on {@link #waitAndDrain()} (if there're any) should return immediately.\r\n+         *\r\n+         * There's no need to worry that {@link #finished} is not thread-safe. Checking and updating of\r\n+         * 'finished' only appear in waitAndDrain, since waitAndDrain is binding to one RPC call (one thread), the call\r\n+         * of it is totally sequential.\r\n+         */\r\n+        if (finished) {\r\n+            return;\r\n+        }\r\n+\r\n+        Runnable runnable;\r\n+        try {\r\n+            runnable = queue.take();\r\n+        }catch (InterruptedException e){\r\n+            waiting = false;\r\n+            throw e;\r\n+        }\r\n+\r\n+        synchronized (lock) {\r\n+            waiting = false;\r\n+            runnable.run();\r\n+        }\r\n+\r\n+        runnable = queue.poll();\r\n+        while (runnable != null) {\r\n+            runnable.run();\r\n+            runnable = queue.poll();\r\n+        }\r\n+        // mark the status of ThreadlessExecutor as finished.\r\n+        finished = true;\r\n+    }\r\n+\r\n+    public long waitAndDrain(long timeout, TimeUnit unit) throws InterruptedException, TimeoutException {\r\n+        /*long startInMs = System.currentTimeMillis();\r\n+        Runnable runnable = queue.poll(timeout, unit);\r\n+        if (runnable == null) {\r\n+            throw new TimeoutException();\r\n+        }\r\n+        runnable.run();\r\n+        long elapsedInMs = System.currentTimeMillis() - startInMs;\r\n+        long timeLeft = timeout - elapsedInMs;\r\n+        if (timeLeft < 0) {\r\n+            throw new TimeoutException();\r\n+        }\r\n+        return timeLeft;*/\r\n+        throw new UnsupportedOperationException();\r\n+    }\r\n+\r\n+    /**\r\n+     * If the calling thread is still waiting for a callback task, add the task into the blocking queue to wait for schedule.\r\n+     * Otherwise, submit to shared callback executor directly.\r\n+     *\r\n+     * @param runnable\r\n+     */\r\n+    @Override\r\n+    public void execute(Runnable runnable) {\r\n+        runnable = new RunnableWrapper(runnable);\r\n+        synchronized (lock) {\r\n+            if (!waiting) {\r\n+                sharedExecutor.execute(runnable);\r\n+            } else {\r\n+                queue.add(runnable);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * tells the thread blocking on {@link #waitAndDrain()} to return, despite of the current status, to avoid endless waiting.\r\n+     */\r\n+    public void notifyReturn(Throwable t) {\r\n+        // an empty runnable task.\r\n+        execute(() -> {\r\n+            waitingFuture.completeExceptionally(t);\r\n+        });\r\n+    }\r\n+\r\n+    /**\r\n+     * The following methods are still not supported\r\n+     */\r\n+\r\n+    @Override\r\n+    public void shutdown() {\r\n+        shutdownNow();\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<Runnable> shutdownNow() {\r\n+        notifyReturn(new IllegalStateException(\"Consumer is shutting down and this call is going to be stopped without \" +\r\n+                \"receiving any result, usually this is called by a slow provider instance or bad service implementation.\"));\r\n+        return Collections.emptyList();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isShutdown() {\r\n+        return false;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isTerminated() {\r\n+        return false;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {\r\n+        return false;\r\n+    }\r\n+\r\n+    private static class RunnableWrapper implements Runnable {\r\n+        private Runnable runnable;\r\n+\r\n+        public RunnableWrapper(Runnable runnable) {\r\n+            this.runnable = runnable;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void run() {\r\n+            try {\r\n+                runnable.run();\r\n+            } catch (Throwable t) {\r\n+                logger.info(t);\r\n+            }\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/threadpool/concurrent/ScheduledCompletableFuture.java", "source2": "org/apache/dubbo/common/threadpool/concurrent/ScheduledCompletableFuture.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,65 +1,65 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.threadpool.concurrent;\n-\n-\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.ScheduledExecutorService;\n-import java.util.concurrent.TimeUnit;\n-import java.util.function.Supplier;\n-\n-public class ScheduledCompletableFuture {\n-\n-    public static <T> CompletableFuture<T> schedule(\n-            ScheduledExecutorService executor,\n-            Supplier<T> task,\n-            long delay,\n-            TimeUnit unit\n-    ) {\n-        CompletableFuture<T> completableFuture = new CompletableFuture<>();\n-        executor.schedule(\n-                () -> {\n-                    try {\n-                        return completableFuture.complete(task.get());\n-                    } catch (Throwable t) {\n-                        return completableFuture.completeExceptionally(t);\n-                    }\n-                },\n-                delay,\n-                unit\n-        );\n-        return completableFuture;\n-    }\n-\n-    public static <T> CompletableFuture<T> submit(\n-            ScheduledExecutorService executor,\n-            Supplier<T> task\n-    ) {\n-        CompletableFuture<T> completableFuture = new CompletableFuture<>();\n-        executor.submit(\n-                () -> {\n-                    try {\n-                        return completableFuture.complete(task.get());\n-                    } catch (Throwable t) {\n-                        return completableFuture.completeExceptionally(t);\n-                    }\n-                }\n-        );\n-        return completableFuture;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.threadpool.concurrent;\r\n+\r\n+\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.ScheduledExecutorService;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.function.Supplier;\r\n+\r\n+public class ScheduledCompletableFuture {\r\n+\r\n+    public static <T> CompletableFuture<T> schedule(\r\n+            ScheduledExecutorService executor,\r\n+            Supplier<T> task,\r\n+            long delay,\r\n+            TimeUnit unit\r\n+    ) {\r\n+        CompletableFuture<T> completableFuture = new CompletableFuture<>();\r\n+        executor.schedule(\r\n+                () -> {\r\n+                    try {\r\n+                        return completableFuture.complete(task.get());\r\n+                    } catch (Throwable t) {\r\n+                        return completableFuture.completeExceptionally(t);\r\n+                    }\r\n+                },\r\n+                delay,\r\n+                unit\r\n+        );\r\n+        return completableFuture;\r\n+    }\r\n+\r\n+    public static <T> CompletableFuture<T> submit(\r\n+            ScheduledExecutorService executor,\r\n+            Supplier<T> task\r\n+    ) {\r\n+        CompletableFuture<T> completableFuture = new CompletableFuture<>();\r\n+        executor.submit(\r\n+                () -> {\r\n+                    try {\r\n+                        return completableFuture.complete(task.get());\r\n+                    } catch (Throwable t) {\r\n+                        return completableFuture.completeExceptionally(t);\r\n+                    }\r\n+                }\r\n+        );\r\n+        return completableFuture;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/threadpool/event/ThreadPoolExhaustedEvent.java", "source2": "org/apache/dubbo/common/threadpool/event/ThreadPoolExhaustedEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,38 +1,38 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.threadpool.event;\n-\n-import org.apache.dubbo.event.Event;\n-\n-/**\n- * An {@link Event Dubbo event} when the Dubbo thread pool is exhausted.\n- *\n- * @see Event\n- */\n-public class ThreadPoolExhaustedEvent extends Event {\n-\n-    final String msg;\n-\n-    public ThreadPoolExhaustedEvent(Object source, String msg) {\n-        super(source);\n-        this.msg = msg;\n-    }\n-\n-    public String getMsg() {\n-        return msg;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.threadpool.event;\r\n+\r\n+import org.apache.dubbo.event.Event;\r\n+\r\n+/**\r\n+ * An {@link Event Dubbo event} when the Dubbo thread pool is exhausted.\r\n+ *\r\n+ * @see Event\r\n+ */\r\n+public class ThreadPoolExhaustedEvent extends Event {\r\n+\r\n+    final String msg;\r\n+\r\n+    public ThreadPoolExhaustedEvent(Object source, String msg) {\r\n+        super(source);\r\n+        this.msg = msg;\r\n+    }\r\n+\r\n+    public String getMsg() {\r\n+        return msg;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/threadpool/manager/DefaultExecutorRepository.java", "source2": "org/apache/dubbo/common/threadpool/manager/DefaultExecutorRepository.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,175 +1,175 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.threadpool.manager;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.threadpool.ThreadPool;\n-import org.apache.dubbo.common.utils.ExecutorUtil;\n-import org.apache.dubbo.common.utils.NamedThreadFactory;\n-\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.Executors;\n-import java.util.concurrent.ScheduledExecutorService;\n-import java.util.concurrent.ThreadPoolExecutor;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE;\n-import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_SERVICE_COMPONENT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.THREADS_KEY;\n-\n-/**\n- * Consider implementing {@code Licycle} to enable executors shutdown when the process stops.\n- */\n-public class DefaultExecutorRepository implements ExecutorRepository {\n-    private static final Logger logger = LoggerFactory.getLogger(DefaultExecutorRepository.class);\n-\n-    private int DEFAULT_SCHEDULER_SIZE = Runtime.getRuntime().availableProcessors();\n-\n-    private final ExecutorService SHARED_EXECUTOR = Executors.newCachedThreadPool(new NamedThreadFactory(\"DubboSharedHandler\", true));\n-\n-    private Ring<ScheduledExecutorService> scheduledExecutors = new Ring<>();\n-\n-    private ScheduledExecutorService serviceExporterExecutor;\n-\n-    private ScheduledExecutorService reconnectScheduledExecutor;\n-\n-    private ConcurrentMap<String, ConcurrentMap<Integer, ExecutorService>> data = new ConcurrentHashMap<>();\n-\n-    public DefaultExecutorRepository() {\n-        for (int i = 0; i < DEFAULT_SCHEDULER_SIZE; i++) {\n-            ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory(\"Dubbo-framework-scheduler\"));\n-            scheduledExecutors.addItem(scheduler);\n-        }\n-//\n-//        reconnectScheduledExecutor = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory(\"Dubbo-reconnect-scheduler\"));\n-        serviceExporterExecutor = Executors.newScheduledThreadPool(1, new NamedThreadFactory(\"Dubbo-exporter-scheduler\"));\n-    }\n-\n-    /**\n-     * Get called when the server or client instance initiating.\n-     *\n-     * @param url\n-     * @return\n-     */\n-    public synchronized ExecutorService createExecutorIfAbsent(URL url) {\n-        Map<Integer, ExecutorService> executors = data.computeIfAbsent(EXECUTOR_SERVICE_COMPONENT_KEY, k -> new ConcurrentHashMap<>());\n-        //issue-7054:Consumer's executor is sharing globally, key=Integer.MAX_VALUE. Provider's executor is sharing by protocol.\n-        Integer portKey = CONSUMER_SIDE.equalsIgnoreCase(url.getParameter(SIDE_KEY)) ? Integer.MAX_VALUE : url.getPort();\n-        ExecutorService executor = executors.computeIfAbsent(portKey, k -> createExecutor(url));\n-        // If executor has been shut down, create a new one\n-        if (executor.isShutdown() || executor.isTerminated()) {\n-            executors.remove(portKey);\n-            executor = createExecutor(url);\n-            executors.put(portKey, executor);\n-        }\n-        return executor;\n-    }\n-\n-    public ExecutorService getExecutor(URL url) {\n-        Map<Integer, ExecutorService> executors = data.get(EXECUTOR_SERVICE_COMPONENT_KEY);\n-        /**\n-         * It's guaranteed that this method is called after {@link #createExecutorIfAbsent(URL)}, so data should already\n-         * have Executor instances generated and stored.\n-         */\n-        if (executors == null) {\n-            logger.warn(\"No available executors, this is not expected, framework should call createExecutorIfAbsent first \" +\n-                    \"before coming to here.\");\n-            return null;\n-        }\n-        //issue-7054:Consumer's executor is sharing globally, key=Integer.MAX_VALUE. Provider's executor is sharing by protocol.\n-        Integer portKey = CONSUMER_SIDE.equalsIgnoreCase(url.getParameter(SIDE_KEY)) ? Integer.MAX_VALUE : url.getPort();\n-        ExecutorService executor = executors.get(portKey);\n-        if (executor != null && (executor.isShutdown() || executor.isTerminated())) {\n-            executors.remove(portKey);\n-            // Does not re-create a shutdown executor, use SHARED_EXECUTOR for downgrade.\n-            executor = null;\n-            logger.info(\"Executor for \" + url + \" is shutdown.\");\n-        }\n-        if (executor == null) {\n-            return SHARED_EXECUTOR;\n-        } else {\n-            return executor;\n-        }\n-    }\n-\n-    @Override\n-    public void updateThreadpool(URL url, ExecutorService executor) {\n-        try {\n-            if (url.hasParameter(THREADS_KEY)\n-                    && executor instanceof ThreadPoolExecutor && !executor.isShutdown()) {\n-                ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) executor;\n-                int threads = url.getParameter(THREADS_KEY, 0);\n-                int max = threadPoolExecutor.getMaximumPoolSize();\n-                int core = threadPoolExecutor.getCorePoolSize();\n-                if (threads > 0 && (threads != max || threads != core)) {\n-                    if (threads < core) {\n-                        threadPoolExecutor.setCorePoolSize(threads);\n-                        if (core == max) {\n-                            threadPoolExecutor.setMaximumPoolSize(threads);\n-                        }\n-                    } else {\n-                        threadPoolExecutor.setMaximumPoolSize(threads);\n-                        if (core == max) {\n-                            threadPoolExecutor.setCorePoolSize(threads);\n-                        }\n-                    }\n-                }\n-            }\n-        } catch (Throwable t) {\n-            logger.error(t.getMessage(), t);\n-        }\n-    }\n-\n-    @Override\n-    public ScheduledExecutorService nextScheduledExecutor() {\n-        return scheduledExecutors.pollItem();\n-    }\n-\n-    @Override\n-    public ScheduledExecutorService getServiceExporterExecutor() {\n-        return serviceExporterExecutor;\n-    }\n-\n-    @Override\n-    public ExecutorService getSharedExecutor() {\n-        return SHARED_EXECUTOR;\n-    }\n-\n-    @Override\n-    public void destroyAll() {\n-        data.values().forEach(executors -> {\n-            if (executors != null) {\n-                executors.values().forEach(executor -> {\n-                    if (executor != null && !executor.isShutdown()) {\n-                        ExecutorUtil.shutdownNow(executor, 100);\n-                    }\n-                });\n-            }\n-        });\n-    }\n-\n-    private ExecutorService createExecutor(URL url) {\n-        return (ExecutorService) ExtensionLoader.getExtensionLoader(ThreadPool.class).getAdaptiveExtension().getExecutor(url);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.threadpool.manager;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.threadpool.ThreadPool;\r\n+import org.apache.dubbo.common.utils.ExecutorUtil;\r\n+import org.apache.dubbo.common.utils.NamedThreadFactory;\r\n+\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.Executors;\r\n+import java.util.concurrent.ScheduledExecutorService;\r\n+import java.util.concurrent.ThreadPoolExecutor;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_SERVICE_COMPONENT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.THREADS_KEY;\r\n+\r\n+/**\r\n+ * Consider implementing {@code Licycle} to enable executors shutdown when the process stops.\r\n+ */\r\n+public class DefaultExecutorRepository implements ExecutorRepository {\r\n+    private static final Logger logger = LoggerFactory.getLogger(DefaultExecutorRepository.class);\r\n+\r\n+    private int DEFAULT_SCHEDULER_SIZE = Runtime.getRuntime().availableProcessors();\r\n+\r\n+    private final ExecutorService SHARED_EXECUTOR = Executors.newCachedThreadPool(new NamedThreadFactory(\"DubboSharedHandler\", true));\r\n+\r\n+    private Ring<ScheduledExecutorService> scheduledExecutors = new Ring<>();\r\n+\r\n+    private ScheduledExecutorService serviceExporterExecutor;\r\n+\r\n+    private ScheduledExecutorService reconnectScheduledExecutor;\r\n+\r\n+    private ConcurrentMap<String, ConcurrentMap<Integer, ExecutorService>> data = new ConcurrentHashMap<>();\r\n+\r\n+    public DefaultExecutorRepository() {\r\n+        for (int i = 0; i < DEFAULT_SCHEDULER_SIZE; i++) {\r\n+            ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory(\"Dubbo-framework-scheduler\"));\r\n+            scheduledExecutors.addItem(scheduler);\r\n+        }\r\n+//\r\n+//        reconnectScheduledExecutor = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory(\"Dubbo-reconnect-scheduler\"));\r\n+        serviceExporterExecutor = Executors.newScheduledThreadPool(1, new NamedThreadFactory(\"Dubbo-exporter-scheduler\"));\r\n+    }\r\n+\r\n+    /**\r\n+     * Get called when the server or client instance initiating.\r\n+     *\r\n+     * @param url\r\n+     * @return\r\n+     */\r\n+    public synchronized ExecutorService createExecutorIfAbsent(URL url) {\r\n+        Map<Integer, ExecutorService> executors = data.computeIfAbsent(EXECUTOR_SERVICE_COMPONENT_KEY, k -> new ConcurrentHashMap<>());\r\n+        //issue-7054:Consumer's executor is sharing globally, key=Integer.MAX_VALUE. Provider's executor is sharing by protocol.\r\n+        Integer portKey = CONSUMER_SIDE.equalsIgnoreCase(url.getParameter(SIDE_KEY)) ? Integer.MAX_VALUE : url.getPort();\r\n+        ExecutorService executor = executors.computeIfAbsent(portKey, k -> createExecutor(url));\r\n+        // If executor has been shut down, create a new one\r\n+        if (executor.isShutdown() || executor.isTerminated()) {\r\n+            executors.remove(portKey);\r\n+            executor = createExecutor(url);\r\n+            executors.put(portKey, executor);\r\n+        }\r\n+        return executor;\r\n+    }\r\n+\r\n+    public ExecutorService getExecutor(URL url) {\r\n+        Map<Integer, ExecutorService> executors = data.get(EXECUTOR_SERVICE_COMPONENT_KEY);\r\n+        /**\r\n+         * It's guaranteed that this method is called after {@link #createExecutorIfAbsent(URL)}, so data should already\r\n+         * have Executor instances generated and stored.\r\n+         */\r\n+        if (executors == null) {\r\n+            logger.warn(\"No available executors, this is not expected, framework should call createExecutorIfAbsent first \" +\r\n+                    \"before coming to here.\");\r\n+            return null;\r\n+        }\r\n+        //issue-7054:Consumer's executor is sharing globally, key=Integer.MAX_VALUE. Provider's executor is sharing by protocol.\r\n+        Integer portKey = CONSUMER_SIDE.equalsIgnoreCase(url.getParameter(SIDE_KEY)) ? Integer.MAX_VALUE : url.getPort();\r\n+        ExecutorService executor = executors.get(portKey);\r\n+        if (executor != null && (executor.isShutdown() || executor.isTerminated())) {\r\n+            executors.remove(portKey);\r\n+            // Does not re-create a shutdown executor, use SHARED_EXECUTOR for downgrade.\r\n+            executor = null;\r\n+            logger.info(\"Executor for \" + url + \" is shutdown.\");\r\n+        }\r\n+        if (executor == null) {\r\n+            return SHARED_EXECUTOR;\r\n+        } else {\r\n+            return executor;\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void updateThreadpool(URL url, ExecutorService executor) {\r\n+        try {\r\n+            if (url.hasParameter(THREADS_KEY)\r\n+                    && executor instanceof ThreadPoolExecutor && !executor.isShutdown()) {\r\n+                ThreadPoolExecutor threadPoolExecutor = (ThreadPoolExecutor) executor;\r\n+                int threads = url.getParameter(THREADS_KEY, 0);\r\n+                int max = threadPoolExecutor.getMaximumPoolSize();\r\n+                int core = threadPoolExecutor.getCorePoolSize();\r\n+                if (threads > 0 && (threads != max || threads != core)) {\r\n+                    if (threads < core) {\r\n+                        threadPoolExecutor.setCorePoolSize(threads);\r\n+                        if (core == max) {\r\n+                            threadPoolExecutor.setMaximumPoolSize(threads);\r\n+                        }\r\n+                    } else {\r\n+                        threadPoolExecutor.setMaximumPoolSize(threads);\r\n+                        if (core == max) {\r\n+                            threadPoolExecutor.setCorePoolSize(threads);\r\n+                        }\r\n+                    }\r\n+                }\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            logger.error(t.getMessage(), t);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public ScheduledExecutorService nextScheduledExecutor() {\r\n+        return scheduledExecutors.pollItem();\r\n+    }\r\n+\r\n+    @Override\r\n+    public ScheduledExecutorService getServiceExporterExecutor() {\r\n+        return serviceExporterExecutor;\r\n+    }\r\n+\r\n+    @Override\r\n+    public ExecutorService getSharedExecutor() {\r\n+        return SHARED_EXECUTOR;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroyAll() {\r\n+        data.values().forEach(executors -> {\r\n+            if (executors != null) {\r\n+                executors.values().forEach(executor -> {\r\n+                    if (executor != null && !executor.isShutdown()) {\r\n+                        ExecutorUtil.shutdownNow(executor, 100);\r\n+                    }\r\n+                });\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    private ExecutorService createExecutor(URL url) {\r\n+        return (ExecutorService) ExtensionLoader.getExtensionLoader(ThreadPool.class).getAdaptiveExtension().getExecutor(url);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/threadpool/manager/ExecutorRepository.java", "source2": "org/apache/dubbo/common/threadpool/manager/ExecutorRepository.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,71 +1,71 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.threadpool.manager;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.ScheduledExecutorService;\n-\n-/**\n- *\n- */\n-@SPI(\"default\")\n-public interface ExecutorRepository {\n-\n-    /**\n-     * Called by both Client and Server. TODO, consider separate these two parts.\n-     * When the Client or Server starts for the first time, generate a new threadpool according to the parameters specified.\n-     *\n-     * @param url\n-     * @return\n-     */\n-    ExecutorService createExecutorIfAbsent(URL url);\n-\n-    ExecutorService getExecutor(URL url);\n-\n-    /**\n-     * Modify some of the threadpool's properties according to the url, for example, coreSize, maxSize, ...\n-     *\n-     * @param url\n-     * @param executor\n-     */\n-    void updateThreadpool(URL url, ExecutorService executor);\n-\n-    /**\n-     * Returns a scheduler from the scheduler list, call this method whenever you need a scheduler for a cron job.\n-     * If your cron cannot burden the possible schedule delay caused by sharing the same scheduler, please consider define a dedicate one.\n-     *\n-     * @return\n-     */\n-    ScheduledExecutorService nextScheduledExecutor();\n-\n-    ScheduledExecutorService getServiceExporterExecutor();\n-\n-    /**\n-     * Get the default shared threadpool.\n-     *\n-     * @return\n-     */\n-    ExecutorService getSharedExecutor();\n-\n-    /**\n-     * Destroy all executors that are not in shutdown state\n-     */\n-    void destroyAll();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.threadpool.manager;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.ScheduledExecutorService;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+@SPI(\"default\")\r\n+public interface ExecutorRepository {\r\n+\r\n+    /**\r\n+     * Called by both Client and Server. TODO, consider separate these two parts.\r\n+     * When the Client or Server starts for the first time, generate a new threadpool according to the parameters specified.\r\n+     *\r\n+     * @param url\r\n+     * @return\r\n+     */\r\n+    ExecutorService createExecutorIfAbsent(URL url);\r\n+\r\n+    ExecutorService getExecutor(URL url);\r\n+\r\n+    /**\r\n+     * Modify some of the threadpool's properties according to the url, for example, coreSize, maxSize, ...\r\n+     *\r\n+     * @param url\r\n+     * @param executor\r\n+     */\r\n+    void updateThreadpool(URL url, ExecutorService executor);\r\n+\r\n+    /**\r\n+     * Returns a scheduler from the scheduler list, call this method whenever you need a scheduler for a cron job.\r\n+     * If your cron cannot burden the possible schedule delay caused by sharing the same scheduler, please consider define a dedicate one.\r\n+     *\r\n+     * @return\r\n+     */\r\n+    ScheduledExecutorService nextScheduledExecutor();\r\n+\r\n+    ScheduledExecutorService getServiceExporterExecutor();\r\n+\r\n+    /**\r\n+     * Get the default shared threadpool.\r\n+     *\r\n+     * @return\r\n+     */\r\n+    ExecutorService getSharedExecutor();\r\n+\r\n+    /**\r\n+     * Destroy all executors that are not in shutdown state\r\n+     */\r\n+    void destroyAll();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/threadpool/manager/Ring.java", "source2": "org/apache/dubbo/common/threadpool/manager/Ring.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,66 +1,66 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.threadpool.manager;\n-\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.concurrent.CopyOnWriteArrayList;\n-import java.util.concurrent.atomic.AtomicInteger;\n-\n-public class Ring<T> {\n-\n-    AtomicInteger count = new AtomicInteger();\n-\n-    private List<T> itemList = new CopyOnWriteArrayList<T>();\n-\n-    public void addItem(T t) {\n-        if (t != null) {\n-            itemList.add(t);\n-        }\n-    }\n-\n-    public T pollItem() {\n-        if (itemList.isEmpty()) {\n-            return null;\n-        }\n-        if (itemList.size() == 1) {\n-            return itemList.get(0);\n-        }\n-\n-        if (count.intValue() > Integer.MAX_VALUE - 10000) {\n-            count.set(count.get() % itemList.size());\n-        }\n-\n-        int index = Math.abs(count.getAndIncrement()) % itemList.size();\n-        return itemList.get(index);\n-    }\n-\n-    public T peekItem() {\n-        if (itemList.isEmpty()) {\n-            return null;\n-        }\n-        if (itemList.size() == 1) {\n-            return itemList.get(0);\n-        }\n-        int index = Math.abs(count.get()) % itemList.size();\n-        return itemList.get(index);\n-    }\n-\n-    public List<T> listItems() {\n-        return Collections.unmodifiableList(itemList);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.threadpool.manager;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.concurrent.CopyOnWriteArrayList;\r\n+import java.util.concurrent.atomic.AtomicInteger;\r\n+\r\n+public class Ring<T> {\r\n+\r\n+    AtomicInteger count = new AtomicInteger();\r\n+\r\n+    private List<T> itemList = new CopyOnWriteArrayList<T>();\r\n+\r\n+    public void addItem(T t) {\r\n+        if (t != null) {\r\n+            itemList.add(t);\r\n+        }\r\n+    }\r\n+\r\n+    public T pollItem() {\r\n+        if (itemList.isEmpty()) {\r\n+            return null;\r\n+        }\r\n+        if (itemList.size() == 1) {\r\n+            return itemList.get(0);\r\n+        }\r\n+\r\n+        if (count.intValue() > Integer.MAX_VALUE - 10000) {\r\n+            count.set(count.get() % itemList.size());\r\n+        }\r\n+\r\n+        int index = Math.abs(count.getAndIncrement()) % itemList.size();\r\n+        return itemList.get(index);\r\n+    }\r\n+\r\n+    public T peekItem() {\r\n+        if (itemList.isEmpty()) {\r\n+            return null;\r\n+        }\r\n+        if (itemList.size() == 1) {\r\n+            return itemList.get(0);\r\n+        }\r\n+        int index = Math.abs(count.get()) % itemList.size();\r\n+        return itemList.get(index);\r\n+    }\r\n+\r\n+    public List<T> listItems() {\r\n+        return Collections.unmodifiableList(itemList);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/threadpool/support/eager/EagerThreadPool.java", "source2": "org/apache/dubbo/common/threadpool/support/eager/EagerThreadPool.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,65 +1,65 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.threadpool.support.eager;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.threadlocal.NamedInternalThreadFactory;\n-import org.apache.dubbo.common.threadpool.ThreadPool;\n-import org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport;\n-\n-import java.util.concurrent.Executor;\n-import java.util.concurrent.TimeUnit;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.ALIVE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.CORE_THREADS_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_ALIVE;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_CORE_THREADS;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_QUEUES;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_THREAD_NAME;\n-import static org.apache.dubbo.common.constants.CommonConstants.QUEUES_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.THREADS_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.THREAD_NAME_KEY;\n-\n-/**\n- * EagerThreadPool\n- * When the core threads are all in busy,\n- * create new thread instead of putting task into blocking queue.\n- */\n-public class EagerThreadPool implements ThreadPool {\n-\n-    @Override\n-    public Executor getExecutor(URL url) {\n-        String name = url.getParameter(THREAD_NAME_KEY, DEFAULT_THREAD_NAME);\n-        int cores = url.getParameter(CORE_THREADS_KEY, DEFAULT_CORE_THREADS);\n-        int threads = url.getParameter(THREADS_KEY, Integer.MAX_VALUE);\n-        int queues = url.getParameter(QUEUES_KEY, DEFAULT_QUEUES);\n-        int alive = url.getParameter(ALIVE_KEY, DEFAULT_ALIVE);\n-\n-        // init queue and executor\n-        TaskQueue<Runnable> taskQueue = new TaskQueue<Runnable>(queues <= 0 ? 1 : queues);\n-        EagerThreadPoolExecutor executor = new EagerThreadPoolExecutor(cores,\n-                threads,\n-                alive,\n-                TimeUnit.MILLISECONDS,\n-                taskQueue,\n-                new NamedInternalThreadFactory(name, true),\n-                new AbortPolicyWithReport(name, url));\n-        taskQueue.setExecutor(executor);\n-        return executor;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.threadpool.support.eager;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.threadlocal.NamedInternalThreadFactory;\r\n+import org.apache.dubbo.common.threadpool.ThreadPool;\r\n+import org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport;\r\n+\r\n+import java.util.concurrent.Executor;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ALIVE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CORE_THREADS_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_ALIVE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_CORE_THREADS;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_QUEUES;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_THREAD_NAME;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.QUEUES_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.THREADS_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.THREAD_NAME_KEY;\r\n+\r\n+/**\r\n+ * EagerThreadPool\r\n+ * When the core threads are all in busy,\r\n+ * create new thread instead of putting task into blocking queue.\r\n+ */\r\n+public class EagerThreadPool implements ThreadPool {\r\n+\r\n+    @Override\r\n+    public Executor getExecutor(URL url) {\r\n+        String name = url.getParameter(THREAD_NAME_KEY, DEFAULT_THREAD_NAME);\r\n+        int cores = url.getParameter(CORE_THREADS_KEY, DEFAULT_CORE_THREADS);\r\n+        int threads = url.getParameter(THREADS_KEY, Integer.MAX_VALUE);\r\n+        int queues = url.getParameter(QUEUES_KEY, DEFAULT_QUEUES);\r\n+        int alive = url.getParameter(ALIVE_KEY, DEFAULT_ALIVE);\r\n+\r\n+        // init queue and executor\r\n+        TaskQueue<Runnable> taskQueue = new TaskQueue<Runnable>(queues <= 0 ? 1 : queues);\r\n+        EagerThreadPoolExecutor executor = new EagerThreadPoolExecutor(cores,\r\n+                threads,\r\n+                alive,\r\n+                TimeUnit.MILLISECONDS,\r\n+                taskQueue,\r\n+                new NamedInternalThreadFactory(name, true),\r\n+                new AbortPolicyWithReport(name, url));\r\n+        taskQueue.setExecutor(executor);\r\n+        return executor;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/threadpool/support/limited/LimitedThreadPool.java", "source2": "org/apache/dubbo/common/threadpool/support/limited/LimitedThreadPool.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,59 +1,59 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.threadpool.support.limited;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.threadlocal.NamedInternalThreadFactory;\n-import org.apache.dubbo.common.threadpool.ThreadPool;\n-import org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport;\n-\n-import java.util.concurrent.Executor;\n-import java.util.concurrent.LinkedBlockingQueue;\n-import java.util.concurrent.SynchronousQueue;\n-import java.util.concurrent.ThreadPoolExecutor;\n-import java.util.concurrent.TimeUnit;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.CORE_THREADS_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_CORE_THREADS;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_QUEUES;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_THREADS;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_THREAD_NAME;\n-import static org.apache.dubbo.common.constants.CommonConstants.QUEUES_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.THREADS_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.THREAD_NAME_KEY;\n-\n-/**\n- * Creates a thread pool that creates new threads as needed until limits reaches. This thread pool will not shrink\n- * automatically.\n- */\n-public class LimitedThreadPool implements ThreadPool {\n-\n-    @Override\n-    public Executor getExecutor(URL url) {\n-        String name = url.getParameter(THREAD_NAME_KEY, DEFAULT_THREAD_NAME);\n-        int cores = url.getParameter(CORE_THREADS_KEY, DEFAULT_CORE_THREADS);\n-        int threads = url.getParameter(THREADS_KEY, DEFAULT_THREADS);\n-        int queues = url.getParameter(QUEUES_KEY, DEFAULT_QUEUES);\n-        return new ThreadPoolExecutor(cores, threads, Long.MAX_VALUE, TimeUnit.MILLISECONDS,\n-                queues == 0 ? new SynchronousQueue<Runnable>() :\n-                        (queues < 0 ? new LinkedBlockingQueue<Runnable>()\n-                                : new LinkedBlockingQueue<Runnable>(queues)),\n-                new NamedInternalThreadFactory(name, true), new AbortPolicyWithReport(name, url));\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.threadpool.support.limited;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.threadlocal.NamedInternalThreadFactory;\r\n+import org.apache.dubbo.common.threadpool.ThreadPool;\r\n+import org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport;\r\n+\r\n+import java.util.concurrent.Executor;\r\n+import java.util.concurrent.LinkedBlockingQueue;\r\n+import java.util.concurrent.SynchronousQueue;\r\n+import java.util.concurrent.ThreadPoolExecutor;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CORE_THREADS_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_CORE_THREADS;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_QUEUES;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_THREADS;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_THREAD_NAME;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.QUEUES_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.THREADS_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.THREAD_NAME_KEY;\r\n+\r\n+/**\r\n+ * Creates a thread pool that creates new threads as needed until limits reaches. This thread pool will not shrink\r\n+ * automatically.\r\n+ */\r\n+public class LimitedThreadPool implements ThreadPool {\r\n+\r\n+    @Override\r\n+    public Executor getExecutor(URL url) {\r\n+        String name = url.getParameter(THREAD_NAME_KEY, DEFAULT_THREAD_NAME);\r\n+        int cores = url.getParameter(CORE_THREADS_KEY, DEFAULT_CORE_THREADS);\r\n+        int threads = url.getParameter(THREADS_KEY, DEFAULT_THREADS);\r\n+        int queues = url.getParameter(QUEUES_KEY, DEFAULT_QUEUES);\r\n+        return new ThreadPoolExecutor(cores, threads, Long.MAX_VALUE, TimeUnit.MILLISECONDS,\r\n+                queues == 0 ? new SynchronousQueue<Runnable>() :\r\n+                        (queues < 0 ? new LinkedBlockingQueue<Runnable>()\r\n+                                : new LinkedBlockingQueue<Runnable>(queues)),\r\n+                new NamedInternalThreadFactory(name, true), new AbortPolicyWithReport(name, url));\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/timer/HashedWheelTimer.java", "source2": "org/apache/dubbo/common/timer/HashedWheelTimer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,814 +1,814 @@\n-/*\n- * Copyright 2012 The Netty Project\n- *\n- * The Netty Project licenses this file to you under the Apache License,\n- * version 2.0 (the \"License\"); you may not use this file except in compliance\n- * with the License. You may obtain a copy of the License at:\n- *\n- *   http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n- * License for the specific language governing permissions and limitations\n- * under the License.\n- */\n-\n-package org.apache.dubbo.common.timer;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ClassUtils;\n-\n-import java.util.Collections;\n-import java.util.HashSet;\n-import java.util.Locale;\n-import java.util.Queue;\n-import java.util.Set;\n-import java.util.concurrent.CountDownLatch;\n-import java.util.concurrent.Executors;\n-import java.util.concurrent.LinkedBlockingQueue;\n-import java.util.concurrent.RejectedExecutionException;\n-import java.util.concurrent.ThreadFactory;\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.atomic.AtomicBoolean;\n-import java.util.concurrent.atomic.AtomicInteger;\n-import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;\n-import java.util.concurrent.atomic.AtomicLong;\n-\n-/**\n- * A {@link Timer} optimized for approximated I/O timeout scheduling.\n- *\n- * <h3>Tick Duration</h3>\n- * <p>\n- * As described with 'approximated', this timer does not execute the scheduled\n- * {@link TimerTask} on time.  {@link HashedWheelTimer}, on every tick, will\n- * check if there are any {@link TimerTask}s behind the schedule and execute\n- * them.\n- * <p>\n- * You can increase or decrease the accuracy of the execution timing by\n- * specifying smaller or larger tick duration in the constructor.  In most\n- * network applications, I/O timeout does not need to be accurate.  Therefore,\n- * the default tick duration is 100 milliseconds and you will not need to try\n- * different configurations in most cases.\n- *\n- * <h3>Ticks per Wheel (Wheel Size)</h3>\n- * <p>\n- * {@link HashedWheelTimer} maintains a data structure called 'wheel'.\n- * To put simply, a wheel is a hash table of {@link TimerTask}s whose hash\n- * function is 'dead line of the task'.  The default number of ticks per wheel\n- * (i.e. the size of the wheel) is 512.  You could specify a larger value\n- * if you are going to schedule a lot of timeouts.\n- *\n- * <h3>Do not create many instances.</h3>\n- * <p>\n- * {@link HashedWheelTimer} creates a new thread whenever it is instantiated and\n- * started.  Therefore, you should make sure to create only one instance and\n- * share it across your application.  One of the common mistakes, that makes\n- * your application unresponsive, is to create a new instance for every connection.\n- *\n- * <h3>Implementation Details</h3>\n- * <p>\n- * {@link HashedWheelTimer} is based on\n- * <a href=\"http://cseweb.ucsd.edu/users/varghese/\">George Varghese</a> and\n- * Tony Lauck's paper,\n- * <a href=\"http://cseweb.ucsd.edu/users/varghese/PAPERS/twheel.ps.Z\">'Hashed\n- * and Hierarchical Timing Wheels: data structures to efficiently implement a\n- * timer facility'</a>.  More comprehensive slides are located\n- * <a href=\"http://www.cse.wustl.edu/~cdgill/courses/cs6874/TimingWheels.ppt\">here</a>.\n- */\n-public class HashedWheelTimer implements Timer {\n-\n-    /**\n-     * may be in spi?\n-     */\n-    public static final String NAME = \"hased\";\n-\n-    private static final Logger logger = LoggerFactory.getLogger(HashedWheelTimer.class);\n-\n-    private static final AtomicInteger INSTANCE_COUNTER = new AtomicInteger();\n-    private static final AtomicBoolean WARNED_TOO_MANY_INSTANCES = new AtomicBoolean();\n-    private static final int INSTANCE_COUNT_LIMIT = 64;\n-    private static final AtomicIntegerFieldUpdater<HashedWheelTimer> WORKER_STATE_UPDATER =\n-            AtomicIntegerFieldUpdater.newUpdater(HashedWheelTimer.class, \"workerState\");\n-\n-    private final Worker worker = new Worker();\n-    private final Thread workerThread;\n-\n-    private static final int WORKER_STATE_INIT = 0;\n-    private static final int WORKER_STATE_STARTED = 1;\n-    private static final int WORKER_STATE_SHUTDOWN = 2;\n-\n-    /**\n-     * 0 - init, 1 - started, 2 - shut down\n-     */\n-    @SuppressWarnings({\"unused\", \"FieldMayBeFinal\"})\n-    private volatile int workerState;\n-\n-    private final long tickDuration;\n-    private final HashedWheelBucket[] wheel;\n-    private final int mask;\n-    private final CountDownLatch startTimeInitialized = new CountDownLatch(1);\n-    private final Queue<HashedWheelTimeout> timeouts = new LinkedBlockingQueue<>();\n-    private final Queue<HashedWheelTimeout> cancelledTimeouts = new LinkedBlockingQueue<>();\n-    private final AtomicLong pendingTimeouts = new AtomicLong(0);\n-    private final long maxPendingTimeouts;\n-\n-    private volatile long startTime;\n-\n-    /**\n-     * Creates a new timer with the default thread factory\n-     * ({@link Executors#defaultThreadFactory()}), default tick duration, and\n-     * default number of ticks per wheel.\n-     */\n-    public HashedWheelTimer() {\n-        this(Executors.defaultThreadFactory());\n-    }\n-\n-    /**\n-     * Creates a new timer with the default thread factory\n-     * ({@link Executors#defaultThreadFactory()}) and default number of ticks\n-     * per wheel.\n-     *\n-     * @param tickDuration the duration between tick\n-     * @param unit         the time unit of the {@code tickDuration}\n-     * @throws NullPointerException     if {@code unit} is {@code null}\n-     * @throws IllegalArgumentException if {@code tickDuration} is &lt;= 0\n-     */\n-    public HashedWheelTimer(long tickDuration, TimeUnit unit) {\n-        this(Executors.defaultThreadFactory(), tickDuration, unit);\n-    }\n-\n-    /**\n-     * Creates a new timer with the default thread factory\n-     * ({@link Executors#defaultThreadFactory()}).\n-     *\n-     * @param tickDuration  the duration between tick\n-     * @param unit          the time unit of the {@code tickDuration}\n-     * @param ticksPerWheel the size of the wheel\n-     * @throws NullPointerException     if {@code unit} is {@code null}\n-     * @throws IllegalArgumentException if either of {@code tickDuration} and {@code ticksPerWheel} is &lt;= 0\n-     */\n-    public HashedWheelTimer(long tickDuration, TimeUnit unit, int ticksPerWheel) {\n-        this(Executors.defaultThreadFactory(), tickDuration, unit, ticksPerWheel);\n-    }\n-\n-    /**\n-     * Creates a new timer with the default tick duration and default number of\n-     * ticks per wheel.\n-     *\n-     * @param threadFactory a {@link ThreadFactory} that creates a\n-     *                      background {@link Thread} which is dedicated to\n-     *                      {@link TimerTask} execution.\n-     * @throws NullPointerException if {@code threadFactory} is {@code null}\n-     */\n-    public HashedWheelTimer(ThreadFactory threadFactory) {\n-        this(threadFactory, 100, TimeUnit.MILLISECONDS);\n-    }\n-\n-    /**\n-     * Creates a new timer with the default number of ticks per wheel.\n-     *\n-     * @param threadFactory a {@link ThreadFactory} that creates a\n-     *                      background {@link Thread} which is dedicated to\n-     *                      {@link TimerTask} execution.\n-     * @param tickDuration  the duration between tick\n-     * @param unit          the time unit of the {@code tickDuration}\n-     * @throws NullPointerException     if either of {@code threadFactory} and {@code unit} is {@code null}\n-     * @throws IllegalArgumentException if {@code tickDuration} is &lt;= 0\n-     */\n-    public HashedWheelTimer(\n-            ThreadFactory threadFactory, long tickDuration, TimeUnit unit) {\n-        this(threadFactory, tickDuration, unit, 512);\n-    }\n-\n-    /**\n-     * Creates a new timer.\n-     *\n-     * @param threadFactory a {@link ThreadFactory} that creates a\n-     *                      background {@link Thread} which is dedicated to\n-     *                      {@link TimerTask} execution.\n-     * @param tickDuration  the duration between tick\n-     * @param unit          the time unit of the {@code tickDuration}\n-     * @param ticksPerWheel the size of the wheel\n-     * @throws NullPointerException     if either of {@code threadFactory} and {@code unit} is {@code null}\n-     * @throws IllegalArgumentException if either of {@code tickDuration} and {@code ticksPerWheel} is &lt;= 0\n-     */\n-    public HashedWheelTimer(\n-            ThreadFactory threadFactory,\n-            long tickDuration, TimeUnit unit, int ticksPerWheel) {\n-        this(threadFactory, tickDuration, unit, ticksPerWheel, -1);\n-    }\n-\n-    /**\n-     * Creates a new timer.\n-     *\n-     * @param threadFactory      a {@link ThreadFactory} that creates a\n-     *                           background {@link Thread} which is dedicated to\n-     *                           {@link TimerTask} execution.\n-     * @param tickDuration       the duration between tick\n-     * @param unit               the time unit of the {@code tickDuration}\n-     * @param ticksPerWheel      the size of the wheel\n-     * @param maxPendingTimeouts The maximum number of pending timeouts after which call to\n-     *                           {@code newTimeout} will result in\n-     *                           {@link java.util.concurrent.RejectedExecutionException}\n-     *                           being thrown. No maximum pending timeouts limit is assumed if\n-     *                           this value is 0 or negative.\n-     * @throws NullPointerException     if either of {@code threadFactory} and {@code unit} is {@code null}\n-     * @throws IllegalArgumentException if either of {@code tickDuration} and {@code ticksPerWheel} is &lt;= 0\n-     */\n-    public HashedWheelTimer(\n-            ThreadFactory threadFactory,\n-            long tickDuration, TimeUnit unit, int ticksPerWheel,\n-            long maxPendingTimeouts) {\n-\n-        if (threadFactory == null) {\n-            throw new NullPointerException(\"threadFactory\");\n-        }\n-        if (unit == null) {\n-            throw new NullPointerException(\"unit\");\n-        }\n-        if (tickDuration <= 0) {\n-            throw new IllegalArgumentException(\"tickDuration must be greater than 0: \" + tickDuration);\n-        }\n-        if (ticksPerWheel <= 0) {\n-            throw new IllegalArgumentException(\"ticksPerWheel must be greater than 0: \" + ticksPerWheel);\n-        }\n-\n-        // Normalize ticksPerWheel to power of two and initialize the wheel.\n-        wheel = createWheel(ticksPerWheel);\n-        mask = wheel.length - 1;\n-\n-        // Convert tickDuration to nanos.\n-        this.tickDuration = unit.toNanos(tickDuration);\n-\n-        // Prevent overflow.\n-        if (this.tickDuration >= Long.MAX_VALUE / wheel.length) {\n-            throw new IllegalArgumentException(String.format(\n-                    \"tickDuration: %d (expected: 0 < tickDuration in nanos < %d\",\n-                    tickDuration, Long.MAX_VALUE / wheel.length));\n-        }\n-        workerThread = threadFactory.newThread(worker);\n-\n-        this.maxPendingTimeouts = maxPendingTimeouts;\n-\n-        if (INSTANCE_COUNTER.incrementAndGet() > INSTANCE_COUNT_LIMIT &&\n-                WARNED_TOO_MANY_INSTANCES.compareAndSet(false, true)) {\n-            reportTooManyInstances();\n-        }\n-    }\n-\n-    @Override\n-    protected void finalize() throws Throwable {\n-        try {\n-            super.finalize();\n-        } finally {\n-            // This object is going to be GCed and it is assumed the ship has sailed to do a proper shutdown. If\n-            // we have not yet shutdown then we want to make sure we decrement the active instance count.\n-            if (WORKER_STATE_UPDATER.getAndSet(this, WORKER_STATE_SHUTDOWN) != WORKER_STATE_SHUTDOWN) {\n-                INSTANCE_COUNTER.decrementAndGet();\n-            }\n-        }\n-    }\n-\n-    private static HashedWheelBucket[] createWheel(int ticksPerWheel) {\n-        if (ticksPerWheel <= 0) {\n-            throw new IllegalArgumentException(\n-                    \"ticksPerWheel must be greater than 0: \" + ticksPerWheel);\n-        }\n-        if (ticksPerWheel > 1073741824) {\n-            throw new IllegalArgumentException(\n-                    \"ticksPerWheel may not be greater than 2^30: \" + ticksPerWheel);\n-        }\n-\n-        ticksPerWheel = normalizeTicksPerWheel(ticksPerWheel);\n-        HashedWheelBucket[] wheel = new HashedWheelBucket[ticksPerWheel];\n-        for (int i = 0; i < wheel.length; i++) {\n-            wheel[i] = new HashedWheelBucket();\n-        }\n-        return wheel;\n-    }\n-\n-    private static int normalizeTicksPerWheel(int ticksPerWheel) {\n-        int normalizedTicksPerWheel = ticksPerWheel - 1;\n-        normalizedTicksPerWheel |= normalizedTicksPerWheel >>> 1;\n-        normalizedTicksPerWheel |= normalizedTicksPerWheel >>> 2;\n-        normalizedTicksPerWheel |= normalizedTicksPerWheel >>> 4;\n-        normalizedTicksPerWheel |= normalizedTicksPerWheel >>> 8;\n-        normalizedTicksPerWheel |= normalizedTicksPerWheel >>> 16;\n-        return normalizedTicksPerWheel + 1;\n-    }\n-\n-    /**\n-     * Starts the background thread explicitly.  The background thread will\n-     * start automatically on demand even if you did not call this method.\n-     *\n-     * @throws IllegalStateException if this timer has been\n-     *                               {@linkplain #stop() stopped} already\n-     */\n-    public void start() {\n-        switch (WORKER_STATE_UPDATER.get(this)) {\n-            case WORKER_STATE_INIT:\n-                if (WORKER_STATE_UPDATER.compareAndSet(this, WORKER_STATE_INIT, WORKER_STATE_STARTED)) {\n-                    workerThread.start();\n-                }\n-                break;\n-            case WORKER_STATE_STARTED:\n-                break;\n-            case WORKER_STATE_SHUTDOWN:\n-                throw new IllegalStateException(\"cannot be started once stopped\");\n-            default:\n-                throw new Error(\"Invalid WorkerState\");\n-        }\n-\n-        // Wait until the startTime is initialized by the worker.\n-        while (startTime == 0) {\n-            try {\n-                startTimeInitialized.await();\n-            } catch (InterruptedException ignore) {\n-                // Ignore - it will be ready very soon.\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public Set<Timeout> stop() {\n-        if (Thread.currentThread() == workerThread) {\n-            throw new IllegalStateException(\n-                    HashedWheelTimer.class.getSimpleName() +\n-                            \".stop() cannot be called from \" +\n-                            TimerTask.class.getSimpleName());\n-        }\n-\n-        if (!WORKER_STATE_UPDATER.compareAndSet(this, WORKER_STATE_STARTED, WORKER_STATE_SHUTDOWN)) {\n-            // workerState can be 0 or 2 at this moment - let it always be 2.\n-            if (WORKER_STATE_UPDATER.getAndSet(this, WORKER_STATE_SHUTDOWN) != WORKER_STATE_SHUTDOWN) {\n-                INSTANCE_COUNTER.decrementAndGet();\n-            }\n-\n-            return Collections.emptySet();\n-        }\n-\n-        try {\n-            boolean interrupted = false;\n-            while (workerThread.isAlive()) {\n-                workerThread.interrupt();\n-                try {\n-                    workerThread.join(100);\n-                } catch (InterruptedException ignored) {\n-                    interrupted = true;\n-                }\n-            }\n-\n-            if (interrupted) {\n-                Thread.currentThread().interrupt();\n-            }\n-        } finally {\n-            INSTANCE_COUNTER.decrementAndGet();\n-        }\n-        return worker.unprocessedTimeouts();\n-    }\n-\n-    @Override\n-    public boolean isStop() {\n-        return WORKER_STATE_SHUTDOWN == WORKER_STATE_UPDATER.get(this);\n-    }\n-\n-    @Override\n-    public Timeout newTimeout(TimerTask task, long delay, TimeUnit unit) {\n-        if (task == null) {\n-            throw new NullPointerException(\"task\");\n-        }\n-        if (unit == null) {\n-            throw new NullPointerException(\"unit\");\n-        }\n-\n-        long pendingTimeoutsCount = pendingTimeouts.incrementAndGet();\n-\n-        if (maxPendingTimeouts > 0 && pendingTimeoutsCount > maxPendingTimeouts) {\n-            pendingTimeouts.decrementAndGet();\n-            throw new RejectedExecutionException(\"Number of pending timeouts (\"\n-                    + pendingTimeoutsCount + \") is greater than or equal to maximum allowed pending \"\n-                    + \"timeouts (\" + maxPendingTimeouts + \")\");\n-        }\n-\n-        start();\n-\n-        // Add the timeout to the timeout queue which will be processed on the next tick.\n-        // During processing all the queued HashedWheelTimeouts will be added to the correct HashedWheelBucket.\n-        long deadline = System.nanoTime() + unit.toNanos(delay) - startTime;\n-\n-        // Guard against overflow.\n-        if (delay > 0 && deadline < 0) {\n-            deadline = Long.MAX_VALUE;\n-        }\n-        HashedWheelTimeout timeout = new HashedWheelTimeout(this, task, deadline);\n-        timeouts.add(timeout);\n-        return timeout;\n-    }\n-\n-    /**\n-     * Returns the number of pending timeouts of this {@link Timer}.\n-     */\n-    public long pendingTimeouts() {\n-        return pendingTimeouts.get();\n-    }\n-\n-    private static void reportTooManyInstances() {\n-        String resourceType = ClassUtils.simpleClassName(HashedWheelTimer.class);\n-        logger.error(\"You are creating too many \" + resourceType + \" instances. \" +\n-                resourceType + \" is a shared resource that must be reused across the JVM,\" +\n-                \"so that only a few instances are created.\");\n-    }\n-\n-    private final class Worker implements Runnable {\n-        private final Set<Timeout> unprocessedTimeouts = new HashSet<Timeout>();\n-\n-        private long tick;\n-\n-        @Override\n-        public void run() {\n-            // Initialize the startTime.\n-            startTime = System.nanoTime();\n-            if (startTime == 0) {\n-                // We use 0 as an indicator for the uninitialized value here, so make sure it's not 0 when initialized.\n-                startTime = 1;\n-            }\n-\n-            // Notify the other threads waiting for the initialization at start().\n-            startTimeInitialized.countDown();\n-\n-            do {\n-                final long deadline = waitForNextTick();\n-                if (deadline > 0) {\n-                    int idx = (int) (tick & mask);\n-                    processCancelledTasks();\n-                    HashedWheelBucket bucket =\n-                            wheel[idx];\n-                    transferTimeoutsToBuckets();\n-                    bucket.expireTimeouts(deadline);\n-                    tick++;\n-                }\n-            } while (WORKER_STATE_UPDATER.get(HashedWheelTimer.this) == WORKER_STATE_STARTED);\n-\n-            // Fill the unprocessedTimeouts so we can return them from stop() method.\n-            for (HashedWheelBucket bucket : wheel) {\n-                bucket.clearTimeouts(unprocessedTimeouts);\n-            }\n-            for (; ; ) {\n-                HashedWheelTimeout timeout = timeouts.poll();\n-                if (timeout == null) {\n-                    break;\n-                }\n-                if (!timeout.isCancelled()) {\n-                    unprocessedTimeouts.add(timeout);\n-                }\n-            }\n-            processCancelledTasks();\n-        }\n-\n-        private void transferTimeoutsToBuckets() {\n-            // transfer only max. 100000 timeouts per tick to prevent a thread to stale the workerThread when it just\n-            // adds new timeouts in a loop.\n-            for (int i = 0; i < 100000; i++) {\n-                HashedWheelTimeout timeout = timeouts.poll();\n-                if (timeout == null) {\n-                    // all processed\n-                    break;\n-                }\n-                if (timeout.state() == HashedWheelTimeout.ST_CANCELLED) {\n-                    // Was cancelled in the meantime.\n-                    continue;\n-                }\n-\n-                long calculated = timeout.deadline / tickDuration;\n-                timeout.remainingRounds = (calculated - tick) / wheel.length;\n-\n-                // Ensure we don't schedule for past.\n-                final long ticks = Math.max(calculated, tick);\n-                int stopIndex = (int) (ticks & mask);\n-\n-                HashedWheelBucket bucket = wheel[stopIndex];\n-                bucket.addTimeout(timeout);\n-            }\n-        }\n-\n-        private void processCancelledTasks() {\n-            for (; ; ) {\n-                HashedWheelTimeout timeout = cancelledTimeouts.poll();\n-                if (timeout == null) {\n-                    // all processed\n-                    break;\n-                }\n-                try {\n-                    timeout.remove();\n-                } catch (Throwable t) {\n-                    if (logger.isWarnEnabled()) {\n-                        logger.warn(\"An exception was thrown while process a cancellation task\", t);\n-                    }\n-                }\n-            }\n-        }\n-\n-        /**\n-         * calculate goal nanoTime from startTime and current tick number,\n-         * then wait until that goal has been reached.\n-         *\n-         * @return Long.MIN_VALUE if received a shutdown request,\n-         * current time otherwise (with Long.MIN_VALUE changed by +1)\n-         */\n-        private long waitForNextTick() {\n-            long deadline = tickDuration * (tick + 1);\n-\n-            for (; ; ) {\n-                final long currentTime = System.nanoTime() - startTime;\n-                long sleepTimeMs = (deadline - currentTime + 999999) / 1000000;\n-\n-                if (sleepTimeMs <= 0) {\n-                    if (currentTime == Long.MIN_VALUE) {\n-                        return -Long.MAX_VALUE;\n-                    } else {\n-                        return currentTime;\n-                    }\n-                }\n-                if (isWindows()) {\n-                    sleepTimeMs = sleepTimeMs / 10 * 10;\n-                }\n-\n-                try {\n-                    Thread.sleep(sleepTimeMs);\n-                } catch (InterruptedException ignored) {\n-                    if (WORKER_STATE_UPDATER.get(HashedWheelTimer.this) == WORKER_STATE_SHUTDOWN) {\n-                        return Long.MIN_VALUE;\n-                    }\n-                }\n-            }\n-        }\n-\n-        Set<Timeout> unprocessedTimeouts() {\n-            return Collections.unmodifiableSet(unprocessedTimeouts);\n-        }\n-    }\n-\n-    private static final class HashedWheelTimeout implements Timeout {\n-\n-        private static final int ST_INIT = 0;\n-        private static final int ST_CANCELLED = 1;\n-        private static final int ST_EXPIRED = 2;\n-        private static final AtomicIntegerFieldUpdater<HashedWheelTimeout> STATE_UPDATER =\n-                AtomicIntegerFieldUpdater.newUpdater(HashedWheelTimeout.class, \"state\");\n-\n-        private final HashedWheelTimer timer;\n-        private final TimerTask task;\n-        private final long deadline;\n-\n-        @SuppressWarnings({\"unused\", \"FieldMayBeFinal\", \"RedundantFieldInitialization\"})\n-        private volatile int state = ST_INIT;\n-\n-        /**\n-         * RemainingRounds will be calculated and set by Worker.transferTimeoutsToBuckets() before the\n-         * HashedWheelTimeout will be added to the correct HashedWheelBucket.\n-         */\n-        long remainingRounds;\n-\n-        /**\n-         * This will be used to chain timeouts in HashedWheelTimerBucket via a double-linked-list.\n-         * As only the workerThread will act on it there is no need for synchronization / volatile.\n-         */\n-        HashedWheelTimeout next;\n-        HashedWheelTimeout prev;\n-\n-        /**\n-         * The bucket to which the timeout was added\n-         */\n-        HashedWheelBucket bucket;\n-\n-        HashedWheelTimeout(HashedWheelTimer timer, TimerTask task, long deadline) {\n-            this.timer = timer;\n-            this.task = task;\n-            this.deadline = deadline;\n-        }\n-\n-        @Override\n-        public Timer timer() {\n-            return timer;\n-        }\n-\n-        @Override\n-        public TimerTask task() {\n-            return task;\n-        }\n-\n-        @Override\n-        public boolean cancel() {\n-            // only update the state it will be removed from HashedWheelBucket on next tick.\n-            if (!compareAndSetState(ST_INIT, ST_CANCELLED)) {\n-                return false;\n-            }\n-            // If a task should be canceled we put this to another queue which will be processed on each tick.\n-            // So this means that we will have a GC latency of max. 1 tick duration which is good enough. This way\n-            // we can make again use of our MpscLinkedQueue and so minimize the locking / overhead as much as possible.\n-            timer.cancelledTimeouts.add(this);\n-            return true;\n-        }\n-\n-        void remove() {\n-            HashedWheelBucket bucket = this.bucket;\n-            if (bucket != null) {\n-                bucket.remove(this);\n-            } else {\n-                timer.pendingTimeouts.decrementAndGet();\n-            }\n-        }\n-\n-        public boolean compareAndSetState(int expected, int state) {\n-            return STATE_UPDATER.compareAndSet(this, expected, state);\n-        }\n-\n-        public int state() {\n-            return state;\n-        }\n-\n-        @Override\n-        public boolean isCancelled() {\n-            return state() == ST_CANCELLED;\n-        }\n-\n-        @Override\n-        public boolean isExpired() {\n-            return state() == ST_EXPIRED;\n-        }\n-\n-        public void expire() {\n-            if (!compareAndSetState(ST_INIT, ST_EXPIRED)) {\n-                return;\n-            }\n-\n-            try {\n-                task.run(this);\n-            } catch (Throwable t) {\n-                if (logger.isWarnEnabled()) {\n-                    logger.warn(\"An exception was thrown by \" + TimerTask.class.getSimpleName() + '.', t);\n-                }\n-            }\n-        }\n-\n-        @Override\n-        public String toString() {\n-            final long currentTime = System.nanoTime();\n-            long remaining = deadline - currentTime + timer.startTime;\n-            String simpleClassName = ClassUtils.simpleClassName(this.getClass());\n-\n-            StringBuilder buf = new StringBuilder(192)\n-                    .append(simpleClassName)\n-                    .append('(')\n-                    .append(\"deadline: \");\n-            if (remaining > 0) {\n-                buf.append(remaining)\n-                        .append(\" ns later\");\n-            } else if (remaining < 0) {\n-                buf.append(-remaining)\n-                        .append(\" ns ago\");\n-            } else {\n-                buf.append(\"now\");\n-            }\n-\n-            if (isCancelled()) {\n-                buf.append(\", cancelled\");\n-            }\n-\n-            return buf.append(\", task: \")\n-                    .append(task())\n-                    .append(')')\n-                    .toString();\n-        }\n-    }\n-\n-    /**\n-     * Bucket that stores HashedWheelTimeouts. These are stored in a linked-list like datastructure to allow easy\n-     * removal of HashedWheelTimeouts in the middle. Also the HashedWheelTimeout act as nodes themself and so no\n-     * extra object creation is needed.\n-     */\n-    private static final class HashedWheelBucket {\n-\n-        /**\n-         * Used for the linked-list datastructure\n-         */\n-        private HashedWheelTimeout head;\n-        private HashedWheelTimeout tail;\n-\n-        /**\n-         * Add {@link HashedWheelTimeout} to this bucket.\n-         */\n-        void addTimeout(HashedWheelTimeout timeout) {\n-            assert timeout.bucket == null;\n-            timeout.bucket = this;\n-            if (head == null) {\n-                head = tail = timeout;\n-            } else {\n-                tail.next = timeout;\n-                timeout.prev = tail;\n-                tail = timeout;\n-            }\n-        }\n-\n-        /**\n-         * Expire all {@link HashedWheelTimeout}s for the given {@code deadline}.\n-         */\n-        void expireTimeouts(long deadline) {\n-            HashedWheelTimeout timeout = head;\n-\n-            // process all timeouts\n-            while (timeout != null) {\n-                HashedWheelTimeout next = timeout.next;\n-                if (timeout.remainingRounds <= 0) {\n-                    next = remove(timeout);\n-                    if (timeout.deadline <= deadline) {\n-                        timeout.expire();\n-                    } else {\n-                        // The timeout was placed into a wrong slot. This should never happen.\n-                        throw new IllegalStateException(String.format(\n-                                \"timeout.deadline (%d) > deadline (%d)\", timeout.deadline, deadline));\n-                    }\n-                } else if (timeout.isCancelled()) {\n-                    next = remove(timeout);\n-                } else {\n-                    timeout.remainingRounds--;\n-                }\n-                timeout = next;\n-            }\n-        }\n-\n-        public HashedWheelTimeout remove(HashedWheelTimeout timeout) {\n-            HashedWheelTimeout next = timeout.next;\n-            // remove timeout that was either processed or cancelled by updating the linked-list\n-            if (timeout.prev != null) {\n-                timeout.prev.next = next;\n-            }\n-            if (timeout.next != null) {\n-                timeout.next.prev = timeout.prev;\n-            }\n-\n-            if (timeout == head) {\n-                // if timeout is also the tail we need to adjust the entry too\n-                if (timeout == tail) {\n-                    tail = null;\n-                    head = null;\n-                } else {\n-                    head = next;\n-                }\n-            } else if (timeout == tail) {\n-                // if the timeout is the tail modify the tail to be the prev node.\n-                tail = timeout.prev;\n-            }\n-            // null out prev, next and bucket to allow for GC.\n-            timeout.prev = null;\n-            timeout.next = null;\n-            timeout.bucket = null;\n-            timeout.timer.pendingTimeouts.decrementAndGet();\n-            return next;\n-        }\n-\n-        /**\n-         * Clear this bucket and return all not expired / cancelled {@link Timeout}s.\n-         */\n-        void clearTimeouts(Set<Timeout> set) {\n-            for (; ; ) {\n-                HashedWheelTimeout timeout = pollTimeout();\n-                if (timeout == null) {\n-                    return;\n-                }\n-                if (timeout.isExpired() || timeout.isCancelled()) {\n-                    continue;\n-                }\n-                set.add(timeout);\n-            }\n-        }\n-\n-        private HashedWheelTimeout pollTimeout() {\n-            HashedWheelTimeout head = this.head;\n-            if (head == null) {\n-                return null;\n-            }\n-            HashedWheelTimeout next = head.next;\n-            if (next == null) {\n-                tail = this.head = null;\n-            } else {\n-                this.head = next;\n-                next.prev = null;\n-            }\n-\n-            // null out prev and next to allow for GC.\n-            head.next = null;\n-            head.prev = null;\n-            head.bucket = null;\n-            return head;\n-        }\n-    }\n-    \n-    private static final boolean IS_OS_WINDOWS = System.getProperty(\"os.name\", \"\").toLowerCase(Locale.US).contains(\"win\");\n-    \n-    private boolean isWindows() {\n-    \treturn IS_OS_WINDOWS;\n-    }\n-}\n+/*\r\n+ * Copyright 2012 The Netty Project\r\n+ *\r\n+ * The Netty Project licenses this file to you under the Apache License,\r\n+ * version 2.0 (the \"License\"); you may not use this file except in compliance\r\n+ * with the License. You may obtain a copy of the License at:\r\n+ *\r\n+ *   http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\r\n+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r\n+ * License for the specific language governing permissions and limitations\r\n+ * under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.timer;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ClassUtils;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.HashSet;\r\n+import java.util.Locale;\r\n+import java.util.Queue;\r\n+import java.util.Set;\r\n+import java.util.concurrent.CountDownLatch;\r\n+import java.util.concurrent.Executors;\r\n+import java.util.concurrent.LinkedBlockingQueue;\r\n+import java.util.concurrent.RejectedExecutionException;\r\n+import java.util.concurrent.ThreadFactory;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+import java.util.concurrent.atomic.AtomicInteger;\r\n+import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;\r\n+import java.util.concurrent.atomic.AtomicLong;\r\n+\r\n+/**\r\n+ * A {@link Timer} optimized for approximated I/O timeout scheduling.\r\n+ *\r\n+ * <h3>Tick Duration</h3>\r\n+ * <p>\r\n+ * As described with 'approximated', this timer does not execute the scheduled\r\n+ * {@link TimerTask} on time.  {@link HashedWheelTimer}, on every tick, will\r\n+ * check if there are any {@link TimerTask}s behind the schedule and execute\r\n+ * them.\r\n+ * <p>\r\n+ * You can increase or decrease the accuracy of the execution timing by\r\n+ * specifying smaller or larger tick duration in the constructor.  In most\r\n+ * network applications, I/O timeout does not need to be accurate.  Therefore,\r\n+ * the default tick duration is 100 milliseconds and you will not need to try\r\n+ * different configurations in most cases.\r\n+ *\r\n+ * <h3>Ticks per Wheel (Wheel Size)</h3>\r\n+ * <p>\r\n+ * {@link HashedWheelTimer} maintains a data structure called 'wheel'.\r\n+ * To put simply, a wheel is a hash table of {@link TimerTask}s whose hash\r\n+ * function is 'dead line of the task'.  The default number of ticks per wheel\r\n+ * (i.e. the size of the wheel) is 512.  You could specify a larger value\r\n+ * if you are going to schedule a lot of timeouts.\r\n+ *\r\n+ * <h3>Do not create many instances.</h3>\r\n+ * <p>\r\n+ * {@link HashedWheelTimer} creates a new thread whenever it is instantiated and\r\n+ * started.  Therefore, you should make sure to create only one instance and\r\n+ * share it across your application.  One of the common mistakes, that makes\r\n+ * your application unresponsive, is to create a new instance for every connection.\r\n+ *\r\n+ * <h3>Implementation Details</h3>\r\n+ * <p>\r\n+ * {@link HashedWheelTimer} is based on\r\n+ * <a href=\"http://cseweb.ucsd.edu/users/varghese/\">George Varghese</a> and\r\n+ * Tony Lauck's paper,\r\n+ * <a href=\"http://cseweb.ucsd.edu/users/varghese/PAPERS/twheel.ps.Z\">'Hashed\r\n+ * and Hierarchical Timing Wheels: data structures to efficiently implement a\r\n+ * timer facility'</a>.  More comprehensive slides are located\r\n+ * <a href=\"http://www.cse.wustl.edu/~cdgill/courses/cs6874/TimingWheels.ppt\">here</a>.\r\n+ */\r\n+public class HashedWheelTimer implements Timer {\r\n+\r\n+    /**\r\n+     * may be in spi?\r\n+     */\r\n+    public static final String NAME = \"hased\";\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(HashedWheelTimer.class);\r\n+\r\n+    private static final AtomicInteger INSTANCE_COUNTER = new AtomicInteger();\r\n+    private static final AtomicBoolean WARNED_TOO_MANY_INSTANCES = new AtomicBoolean();\r\n+    private static final int INSTANCE_COUNT_LIMIT = 64;\r\n+    private static final AtomicIntegerFieldUpdater<HashedWheelTimer> WORKER_STATE_UPDATER =\r\n+            AtomicIntegerFieldUpdater.newUpdater(HashedWheelTimer.class, \"workerState\");\r\n+\r\n+    private final Worker worker = new Worker();\r\n+    private final Thread workerThread;\r\n+\r\n+    private static final int WORKER_STATE_INIT = 0;\r\n+    private static final int WORKER_STATE_STARTED = 1;\r\n+    private static final int WORKER_STATE_SHUTDOWN = 2;\r\n+\r\n+    /**\r\n+     * 0 - init, 1 - started, 2 - shut down\r\n+     */\r\n+    @SuppressWarnings({\"unused\", \"FieldMayBeFinal\"})\r\n+    private volatile int workerState;\r\n+\r\n+    private final long tickDuration;\r\n+    private final HashedWheelBucket[] wheel;\r\n+    private final int mask;\r\n+    private final CountDownLatch startTimeInitialized = new CountDownLatch(1);\r\n+    private final Queue<HashedWheelTimeout> timeouts = new LinkedBlockingQueue<>();\r\n+    private final Queue<HashedWheelTimeout> cancelledTimeouts = new LinkedBlockingQueue<>();\r\n+    private final AtomicLong pendingTimeouts = new AtomicLong(0);\r\n+    private final long maxPendingTimeouts;\r\n+\r\n+    private volatile long startTime;\r\n+\r\n+    /**\r\n+     * Creates a new timer with the default thread factory\r\n+     * ({@link Executors#defaultThreadFactory()}), default tick duration, and\r\n+     * default number of ticks per wheel.\r\n+     */\r\n+    public HashedWheelTimer() {\r\n+        this(Executors.defaultThreadFactory());\r\n+    }\r\n+\r\n+    /**\r\n+     * Creates a new timer with the default thread factory\r\n+     * ({@link Executors#defaultThreadFactory()}) and default number of ticks\r\n+     * per wheel.\r\n+     *\r\n+     * @param tickDuration the duration between tick\r\n+     * @param unit         the time unit of the {@code tickDuration}\r\n+     * @throws NullPointerException     if {@code unit} is {@code null}\r\n+     * @throws IllegalArgumentException if {@code tickDuration} is &lt;= 0\r\n+     */\r\n+    public HashedWheelTimer(long tickDuration, TimeUnit unit) {\r\n+        this(Executors.defaultThreadFactory(), tickDuration, unit);\r\n+    }\r\n+\r\n+    /**\r\n+     * Creates a new timer with the default thread factory\r\n+     * ({@link Executors#defaultThreadFactory()}).\r\n+     *\r\n+     * @param tickDuration  the duration between tick\r\n+     * @param unit          the time unit of the {@code tickDuration}\r\n+     * @param ticksPerWheel the size of the wheel\r\n+     * @throws NullPointerException     if {@code unit} is {@code null}\r\n+     * @throws IllegalArgumentException if either of {@code tickDuration} and {@code ticksPerWheel} is &lt;= 0\r\n+     */\r\n+    public HashedWheelTimer(long tickDuration, TimeUnit unit, int ticksPerWheel) {\r\n+        this(Executors.defaultThreadFactory(), tickDuration, unit, ticksPerWheel);\r\n+    }\r\n+\r\n+    /**\r\n+     * Creates a new timer with the default tick duration and default number of\r\n+     * ticks per wheel.\r\n+     *\r\n+     * @param threadFactory a {@link ThreadFactory} that creates a\r\n+     *                      background {@link Thread} which is dedicated to\r\n+     *                      {@link TimerTask} execution.\r\n+     * @throws NullPointerException if {@code threadFactory} is {@code null}\r\n+     */\r\n+    public HashedWheelTimer(ThreadFactory threadFactory) {\r\n+        this(threadFactory, 100, TimeUnit.MILLISECONDS);\r\n+    }\r\n+\r\n+    /**\r\n+     * Creates a new timer with the default number of ticks per wheel.\r\n+     *\r\n+     * @param threadFactory a {@link ThreadFactory} that creates a\r\n+     *                      background {@link Thread} which is dedicated to\r\n+     *                      {@link TimerTask} execution.\r\n+     * @param tickDuration  the duration between tick\r\n+     * @param unit          the time unit of the {@code tickDuration}\r\n+     * @throws NullPointerException     if either of {@code threadFactory} and {@code unit} is {@code null}\r\n+     * @throws IllegalArgumentException if {@code tickDuration} is &lt;= 0\r\n+     */\r\n+    public HashedWheelTimer(\r\n+            ThreadFactory threadFactory, long tickDuration, TimeUnit unit) {\r\n+        this(threadFactory, tickDuration, unit, 512);\r\n+    }\r\n+\r\n+    /**\r\n+     * Creates a new timer.\r\n+     *\r\n+     * @param threadFactory a {@link ThreadFactory} that creates a\r\n+     *                      background {@link Thread} which is dedicated to\r\n+     *                      {@link TimerTask} execution.\r\n+     * @param tickDuration  the duration between tick\r\n+     * @param unit          the time unit of the {@code tickDuration}\r\n+     * @param ticksPerWheel the size of the wheel\r\n+     * @throws NullPointerException     if either of {@code threadFactory} and {@code unit} is {@code null}\r\n+     * @throws IllegalArgumentException if either of {@code tickDuration} and {@code ticksPerWheel} is &lt;= 0\r\n+     */\r\n+    public HashedWheelTimer(\r\n+            ThreadFactory threadFactory,\r\n+            long tickDuration, TimeUnit unit, int ticksPerWheel) {\r\n+        this(threadFactory, tickDuration, unit, ticksPerWheel, -1);\r\n+    }\r\n+\r\n+    /**\r\n+     * Creates a new timer.\r\n+     *\r\n+     * @param threadFactory      a {@link ThreadFactory} that creates a\r\n+     *                           background {@link Thread} which is dedicated to\r\n+     *                           {@link TimerTask} execution.\r\n+     * @param tickDuration       the duration between tick\r\n+     * @param unit               the time unit of the {@code tickDuration}\r\n+     * @param ticksPerWheel      the size of the wheel\r\n+     * @param maxPendingTimeouts The maximum number of pending timeouts after which call to\r\n+     *                           {@code newTimeout} will result in\r\n+     *                           {@link java.util.concurrent.RejectedExecutionException}\r\n+     *                           being thrown. No maximum pending timeouts limit is assumed if\r\n+     *                           this value is 0 or negative.\r\n+     * @throws NullPointerException     if either of {@code threadFactory} and {@code unit} is {@code null}\r\n+     * @throws IllegalArgumentException if either of {@code tickDuration} and {@code ticksPerWheel} is &lt;= 0\r\n+     */\r\n+    public HashedWheelTimer(\r\n+            ThreadFactory threadFactory,\r\n+            long tickDuration, TimeUnit unit, int ticksPerWheel,\r\n+            long maxPendingTimeouts) {\r\n+\r\n+        if (threadFactory == null) {\r\n+            throw new NullPointerException(\"threadFactory\");\r\n+        }\r\n+        if (unit == null) {\r\n+            throw new NullPointerException(\"unit\");\r\n+        }\r\n+        if (tickDuration <= 0) {\r\n+            throw new IllegalArgumentException(\"tickDuration must be greater than 0: \" + tickDuration);\r\n+        }\r\n+        if (ticksPerWheel <= 0) {\r\n+            throw new IllegalArgumentException(\"ticksPerWheel must be greater than 0: \" + ticksPerWheel);\r\n+        }\r\n+\r\n+        // Normalize ticksPerWheel to power of two and initialize the wheel.\r\n+        wheel = createWheel(ticksPerWheel);\r\n+        mask = wheel.length - 1;\r\n+\r\n+        // Convert tickDuration to nanos.\r\n+        this.tickDuration = unit.toNanos(tickDuration);\r\n+\r\n+        // Prevent overflow.\r\n+        if (this.tickDuration >= Long.MAX_VALUE / wheel.length) {\r\n+            throw new IllegalArgumentException(String.format(\r\n+                    \"tickDuration: %d (expected: 0 < tickDuration in nanos < %d\",\r\n+                    tickDuration, Long.MAX_VALUE / wheel.length));\r\n+        }\r\n+        workerThread = threadFactory.newThread(worker);\r\n+\r\n+        this.maxPendingTimeouts = maxPendingTimeouts;\r\n+\r\n+        if (INSTANCE_COUNTER.incrementAndGet() > INSTANCE_COUNT_LIMIT &&\r\n+                WARNED_TOO_MANY_INSTANCES.compareAndSet(false, true)) {\r\n+            reportTooManyInstances();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void finalize() throws Throwable {\r\n+        try {\r\n+            super.finalize();\r\n+        } finally {\r\n+            // This object is going to be GCed and it is assumed the ship has sailed to do a proper shutdown. If\r\n+            // we have not yet shutdown then we want to make sure we decrement the active instance count.\r\n+            if (WORKER_STATE_UPDATER.getAndSet(this, WORKER_STATE_SHUTDOWN) != WORKER_STATE_SHUTDOWN) {\r\n+                INSTANCE_COUNTER.decrementAndGet();\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private static HashedWheelBucket[] createWheel(int ticksPerWheel) {\r\n+        if (ticksPerWheel <= 0) {\r\n+            throw new IllegalArgumentException(\r\n+                    \"ticksPerWheel must be greater than 0: \" + ticksPerWheel);\r\n+        }\r\n+        if (ticksPerWheel > 1073741824) {\r\n+            throw new IllegalArgumentException(\r\n+                    \"ticksPerWheel may not be greater than 2^30: \" + ticksPerWheel);\r\n+        }\r\n+\r\n+        ticksPerWheel = normalizeTicksPerWheel(ticksPerWheel);\r\n+        HashedWheelBucket[] wheel = new HashedWheelBucket[ticksPerWheel];\r\n+        for (int i = 0; i < wheel.length; i++) {\r\n+            wheel[i] = new HashedWheelBucket();\r\n+        }\r\n+        return wheel;\r\n+    }\r\n+\r\n+    private static int normalizeTicksPerWheel(int ticksPerWheel) {\r\n+        int normalizedTicksPerWheel = ticksPerWheel - 1;\r\n+        normalizedTicksPerWheel |= normalizedTicksPerWheel >>> 1;\r\n+        normalizedTicksPerWheel |= normalizedTicksPerWheel >>> 2;\r\n+        normalizedTicksPerWheel |= normalizedTicksPerWheel >>> 4;\r\n+        normalizedTicksPerWheel |= normalizedTicksPerWheel >>> 8;\r\n+        normalizedTicksPerWheel |= normalizedTicksPerWheel >>> 16;\r\n+        return normalizedTicksPerWheel + 1;\r\n+    }\r\n+\r\n+    /**\r\n+     * Starts the background thread explicitly.  The background thread will\r\n+     * start automatically on demand even if you did not call this method.\r\n+     *\r\n+     * @throws IllegalStateException if this timer has been\r\n+     *                               {@linkplain #stop() stopped} already\r\n+     */\r\n+    public void start() {\r\n+        switch (WORKER_STATE_UPDATER.get(this)) {\r\n+            case WORKER_STATE_INIT:\r\n+                if (WORKER_STATE_UPDATER.compareAndSet(this, WORKER_STATE_INIT, WORKER_STATE_STARTED)) {\r\n+                    workerThread.start();\r\n+                }\r\n+                break;\r\n+            case WORKER_STATE_STARTED:\r\n+                break;\r\n+            case WORKER_STATE_SHUTDOWN:\r\n+                throw new IllegalStateException(\"cannot be started once stopped\");\r\n+            default:\r\n+                throw new Error(\"Invalid WorkerState\");\r\n+        }\r\n+\r\n+        // Wait until the startTime is initialized by the worker.\r\n+        while (startTime == 0) {\r\n+            try {\r\n+                startTimeInitialized.await();\r\n+            } catch (InterruptedException ignore) {\r\n+                // Ignore - it will be ready very soon.\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<Timeout> stop() {\r\n+        if (Thread.currentThread() == workerThread) {\r\n+            throw new IllegalStateException(\r\n+                    HashedWheelTimer.class.getSimpleName() +\r\n+                            \".stop() cannot be called from \" +\r\n+                            TimerTask.class.getSimpleName());\r\n+        }\r\n+\r\n+        if (!WORKER_STATE_UPDATER.compareAndSet(this, WORKER_STATE_STARTED, WORKER_STATE_SHUTDOWN)) {\r\n+            // workerState can be 0 or 2 at this moment - let it always be 2.\r\n+            if (WORKER_STATE_UPDATER.getAndSet(this, WORKER_STATE_SHUTDOWN) != WORKER_STATE_SHUTDOWN) {\r\n+                INSTANCE_COUNTER.decrementAndGet();\r\n+            }\r\n+\r\n+            return Collections.emptySet();\r\n+        }\r\n+\r\n+        try {\r\n+            boolean interrupted = false;\r\n+            while (workerThread.isAlive()) {\r\n+                workerThread.interrupt();\r\n+                try {\r\n+                    workerThread.join(100);\r\n+                } catch (InterruptedException ignored) {\r\n+                    interrupted = true;\r\n+                }\r\n+            }\r\n+\r\n+            if (interrupted) {\r\n+                Thread.currentThread().interrupt();\r\n+            }\r\n+        } finally {\r\n+            INSTANCE_COUNTER.decrementAndGet();\r\n+        }\r\n+        return worker.unprocessedTimeouts();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isStop() {\r\n+        return WORKER_STATE_SHUTDOWN == WORKER_STATE_UPDATER.get(this);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Timeout newTimeout(TimerTask task, long delay, TimeUnit unit) {\r\n+        if (task == null) {\r\n+            throw new NullPointerException(\"task\");\r\n+        }\r\n+        if (unit == null) {\r\n+            throw new NullPointerException(\"unit\");\r\n+        }\r\n+\r\n+        long pendingTimeoutsCount = pendingTimeouts.incrementAndGet();\r\n+\r\n+        if (maxPendingTimeouts > 0 && pendingTimeoutsCount > maxPendingTimeouts) {\r\n+            pendingTimeouts.decrementAndGet();\r\n+            throw new RejectedExecutionException(\"Number of pending timeouts (\"\r\n+                    + pendingTimeoutsCount + \") is greater than or equal to maximum allowed pending \"\r\n+                    + \"timeouts (\" + maxPendingTimeouts + \")\");\r\n+        }\r\n+\r\n+        start();\r\n+\r\n+        // Add the timeout to the timeout queue which will be processed on the next tick.\r\n+        // During processing all the queued HashedWheelTimeouts will be added to the correct HashedWheelBucket.\r\n+        long deadline = System.nanoTime() + unit.toNanos(delay) - startTime;\r\n+\r\n+        // Guard against overflow.\r\n+        if (delay > 0 && deadline < 0) {\r\n+            deadline = Long.MAX_VALUE;\r\n+        }\r\n+        HashedWheelTimeout timeout = new HashedWheelTimeout(this, task, deadline);\r\n+        timeouts.add(timeout);\r\n+        return timeout;\r\n+    }\r\n+\r\n+    /**\r\n+     * Returns the number of pending timeouts of this {@link Timer}.\r\n+     */\r\n+    public long pendingTimeouts() {\r\n+        return pendingTimeouts.get();\r\n+    }\r\n+\r\n+    private static void reportTooManyInstances() {\r\n+        String resourceType = ClassUtils.simpleClassName(HashedWheelTimer.class);\r\n+        logger.error(\"You are creating too many \" + resourceType + \" instances. \" +\r\n+                resourceType + \" is a shared resource that must be reused across the JVM,\" +\r\n+                \"so that only a few instances are created.\");\r\n+    }\r\n+\r\n+    private final class Worker implements Runnable {\r\n+        private final Set<Timeout> unprocessedTimeouts = new HashSet<Timeout>();\r\n+\r\n+        private long tick;\r\n+\r\n+        @Override\r\n+        public void run() {\r\n+            // Initialize the startTime.\r\n+            startTime = System.nanoTime();\r\n+            if (startTime == 0) {\r\n+                // We use 0 as an indicator for the uninitialized value here, so make sure it's not 0 when initialized.\r\n+                startTime = 1;\r\n+            }\r\n+\r\n+            // Notify the other threads waiting for the initialization at start().\r\n+            startTimeInitialized.countDown();\r\n+\r\n+            do {\r\n+                final long deadline = waitForNextTick();\r\n+                if (deadline > 0) {\r\n+                    int idx = (int) (tick & mask);\r\n+                    processCancelledTasks();\r\n+                    HashedWheelBucket bucket =\r\n+                            wheel[idx];\r\n+                    transferTimeoutsToBuckets();\r\n+                    bucket.expireTimeouts(deadline);\r\n+                    tick++;\r\n+                }\r\n+            } while (WORKER_STATE_UPDATER.get(HashedWheelTimer.this) == WORKER_STATE_STARTED);\r\n+\r\n+            // Fill the unprocessedTimeouts so we can return them from stop() method.\r\n+            for (HashedWheelBucket bucket : wheel) {\r\n+                bucket.clearTimeouts(unprocessedTimeouts);\r\n+            }\r\n+            for (; ; ) {\r\n+                HashedWheelTimeout timeout = timeouts.poll();\r\n+                if (timeout == null) {\r\n+                    break;\r\n+                }\r\n+                if (!timeout.isCancelled()) {\r\n+                    unprocessedTimeouts.add(timeout);\r\n+                }\r\n+            }\r\n+            processCancelledTasks();\r\n+        }\r\n+\r\n+        private void transferTimeoutsToBuckets() {\r\n+            // transfer only max. 100000 timeouts per tick to prevent a thread to stale the workerThread when it just\r\n+            // adds new timeouts in a loop.\r\n+            for (int i = 0; i < 100000; i++) {\r\n+                HashedWheelTimeout timeout = timeouts.poll();\r\n+                if (timeout == null) {\r\n+                    // all processed\r\n+                    break;\r\n+                }\r\n+                if (timeout.state() == HashedWheelTimeout.ST_CANCELLED) {\r\n+                    // Was cancelled in the meantime.\r\n+                    continue;\r\n+                }\r\n+\r\n+                long calculated = timeout.deadline / tickDuration;\r\n+                timeout.remainingRounds = (calculated - tick) / wheel.length;\r\n+\r\n+                // Ensure we don't schedule for past.\r\n+                final long ticks = Math.max(calculated, tick);\r\n+                int stopIndex = (int) (ticks & mask);\r\n+\r\n+                HashedWheelBucket bucket = wheel[stopIndex];\r\n+                bucket.addTimeout(timeout);\r\n+            }\r\n+        }\r\n+\r\n+        private void processCancelledTasks() {\r\n+            for (; ; ) {\r\n+                HashedWheelTimeout timeout = cancelledTimeouts.poll();\r\n+                if (timeout == null) {\r\n+                    // all processed\r\n+                    break;\r\n+                }\r\n+                try {\r\n+                    timeout.remove();\r\n+                } catch (Throwable t) {\r\n+                    if (logger.isWarnEnabled()) {\r\n+                        logger.warn(\"An exception was thrown while process a cancellation task\", t);\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        /**\r\n+         * calculate goal nanoTime from startTime and current tick number,\r\n+         * then wait until that goal has been reached.\r\n+         *\r\n+         * @return Long.MIN_VALUE if received a shutdown request,\r\n+         * current time otherwise (with Long.MIN_VALUE changed by +1)\r\n+         */\r\n+        private long waitForNextTick() {\r\n+            long deadline = tickDuration * (tick + 1);\r\n+\r\n+            for (; ; ) {\r\n+                final long currentTime = System.nanoTime() - startTime;\r\n+                long sleepTimeMs = (deadline - currentTime + 999999) / 1000000;\r\n+\r\n+                if (sleepTimeMs <= 0) {\r\n+                    if (currentTime == Long.MIN_VALUE) {\r\n+                        return -Long.MAX_VALUE;\r\n+                    } else {\r\n+                        return currentTime;\r\n+                    }\r\n+                }\r\n+                if (isWindows()) {\r\n+                    sleepTimeMs = sleepTimeMs / 10 * 10;\r\n+                }\r\n+\r\n+                try {\r\n+                    Thread.sleep(sleepTimeMs);\r\n+                } catch (InterruptedException ignored) {\r\n+                    if (WORKER_STATE_UPDATER.get(HashedWheelTimer.this) == WORKER_STATE_SHUTDOWN) {\r\n+                        return Long.MIN_VALUE;\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        Set<Timeout> unprocessedTimeouts() {\r\n+            return Collections.unmodifiableSet(unprocessedTimeouts);\r\n+        }\r\n+    }\r\n+\r\n+    private static final class HashedWheelTimeout implements Timeout {\r\n+\r\n+        private static final int ST_INIT = 0;\r\n+        private static final int ST_CANCELLED = 1;\r\n+        private static final int ST_EXPIRED = 2;\r\n+        private static final AtomicIntegerFieldUpdater<HashedWheelTimeout> STATE_UPDATER =\r\n+                AtomicIntegerFieldUpdater.newUpdater(HashedWheelTimeout.class, \"state\");\r\n+\r\n+        private final HashedWheelTimer timer;\r\n+        private final TimerTask task;\r\n+        private final long deadline;\r\n+\r\n+        @SuppressWarnings({\"unused\", \"FieldMayBeFinal\", \"RedundantFieldInitialization\"})\r\n+        private volatile int state = ST_INIT;\r\n+\r\n+        /**\r\n+         * RemainingRounds will be calculated and set by Worker.transferTimeoutsToBuckets() before the\r\n+         * HashedWheelTimeout will be added to the correct HashedWheelBucket.\r\n+         */\r\n+        long remainingRounds;\r\n+\r\n+        /**\r\n+         * This will be used to chain timeouts in HashedWheelTimerBucket via a double-linked-list.\r\n+         * As only the workerThread will act on it there is no need for synchronization / volatile.\r\n+         */\r\n+        HashedWheelTimeout next;\r\n+        HashedWheelTimeout prev;\r\n+\r\n+        /**\r\n+         * The bucket to which the timeout was added\r\n+         */\r\n+        HashedWheelBucket bucket;\r\n+\r\n+        HashedWheelTimeout(HashedWheelTimer timer, TimerTask task, long deadline) {\r\n+            this.timer = timer;\r\n+            this.task = task;\r\n+            this.deadline = deadline;\r\n+        }\r\n+\r\n+        @Override\r\n+        public Timer timer() {\r\n+            return timer;\r\n+        }\r\n+\r\n+        @Override\r\n+        public TimerTask task() {\r\n+            return task;\r\n+        }\r\n+\r\n+        @Override\r\n+        public boolean cancel() {\r\n+            // only update the state it will be removed from HashedWheelBucket on next tick.\r\n+            if (!compareAndSetState(ST_INIT, ST_CANCELLED)) {\r\n+                return false;\r\n+            }\r\n+            // If a task should be canceled we put this to another queue which will be processed on each tick.\r\n+            // So this means that we will have a GC latency of max. 1 tick duration which is good enough. This way\r\n+            // we can make again use of our MpscLinkedQueue and so minimize the locking / overhead as much as possible.\r\n+            timer.cancelledTimeouts.add(this);\r\n+            return true;\r\n+        }\r\n+\r\n+        void remove() {\r\n+            HashedWheelBucket bucket = this.bucket;\r\n+            if (bucket != null) {\r\n+                bucket.remove(this);\r\n+            } else {\r\n+                timer.pendingTimeouts.decrementAndGet();\r\n+            }\r\n+        }\r\n+\r\n+        public boolean compareAndSetState(int expected, int state) {\r\n+            return STATE_UPDATER.compareAndSet(this, expected, state);\r\n+        }\r\n+\r\n+        public int state() {\r\n+            return state;\r\n+        }\r\n+\r\n+        @Override\r\n+        public boolean isCancelled() {\r\n+            return state() == ST_CANCELLED;\r\n+        }\r\n+\r\n+        @Override\r\n+        public boolean isExpired() {\r\n+            return state() == ST_EXPIRED;\r\n+        }\r\n+\r\n+        public void expire() {\r\n+            if (!compareAndSetState(ST_INIT, ST_EXPIRED)) {\r\n+                return;\r\n+            }\r\n+\r\n+            try {\r\n+                task.run(this);\r\n+            } catch (Throwable t) {\r\n+                if (logger.isWarnEnabled()) {\r\n+                    logger.warn(\"An exception was thrown by \" + TimerTask.class.getSimpleName() + '.', t);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        @Override\r\n+        public String toString() {\r\n+            final long currentTime = System.nanoTime();\r\n+            long remaining = deadline - currentTime + timer.startTime;\r\n+            String simpleClassName = ClassUtils.simpleClassName(this.getClass());\r\n+\r\n+            StringBuilder buf = new StringBuilder(192)\r\n+                    .append(simpleClassName)\r\n+                    .append('(')\r\n+                    .append(\"deadline: \");\r\n+            if (remaining > 0) {\r\n+                buf.append(remaining)\r\n+                        .append(\" ns later\");\r\n+            } else if (remaining < 0) {\r\n+                buf.append(-remaining)\r\n+                        .append(\" ns ago\");\r\n+            } else {\r\n+                buf.append(\"now\");\r\n+            }\r\n+\r\n+            if (isCancelled()) {\r\n+                buf.append(\", cancelled\");\r\n+            }\r\n+\r\n+            return buf.append(\", task: \")\r\n+                    .append(task())\r\n+                    .append(')')\r\n+                    .toString();\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Bucket that stores HashedWheelTimeouts. These are stored in a linked-list like datastructure to allow easy\r\n+     * removal of HashedWheelTimeouts in the middle. Also the HashedWheelTimeout act as nodes themself and so no\r\n+     * extra object creation is needed.\r\n+     */\r\n+    private static final class HashedWheelBucket {\r\n+\r\n+        /**\r\n+         * Used for the linked-list datastructure\r\n+         */\r\n+        private HashedWheelTimeout head;\r\n+        private HashedWheelTimeout tail;\r\n+\r\n+        /**\r\n+         * Add {@link HashedWheelTimeout} to this bucket.\r\n+         */\r\n+        void addTimeout(HashedWheelTimeout timeout) {\r\n+            assert timeout.bucket == null;\r\n+            timeout.bucket = this;\r\n+            if (head == null) {\r\n+                head = tail = timeout;\r\n+            } else {\r\n+                tail.next = timeout;\r\n+                timeout.prev = tail;\r\n+                tail = timeout;\r\n+            }\r\n+        }\r\n+\r\n+        /**\r\n+         * Expire all {@link HashedWheelTimeout}s for the given {@code deadline}.\r\n+         */\r\n+        void expireTimeouts(long deadline) {\r\n+            HashedWheelTimeout timeout = head;\r\n+\r\n+            // process all timeouts\r\n+            while (timeout != null) {\r\n+                HashedWheelTimeout next = timeout.next;\r\n+                if (timeout.remainingRounds <= 0) {\r\n+                    next = remove(timeout);\r\n+                    if (timeout.deadline <= deadline) {\r\n+                        timeout.expire();\r\n+                    } else {\r\n+                        // The timeout was placed into a wrong slot. This should never happen.\r\n+                        throw new IllegalStateException(String.format(\r\n+                                \"timeout.deadline (%d) > deadline (%d)\", timeout.deadline, deadline));\r\n+                    }\r\n+                } else if (timeout.isCancelled()) {\r\n+                    next = remove(timeout);\r\n+                } else {\r\n+                    timeout.remainingRounds--;\r\n+                }\r\n+                timeout = next;\r\n+            }\r\n+        }\r\n+\r\n+        public HashedWheelTimeout remove(HashedWheelTimeout timeout) {\r\n+            HashedWheelTimeout next = timeout.next;\r\n+            // remove timeout that was either processed or cancelled by updating the linked-list\r\n+            if (timeout.prev != null) {\r\n+                timeout.prev.next = next;\r\n+            }\r\n+            if (timeout.next != null) {\r\n+                timeout.next.prev = timeout.prev;\r\n+            }\r\n+\r\n+            if (timeout == head) {\r\n+                // if timeout is also the tail we need to adjust the entry too\r\n+                if (timeout == tail) {\r\n+                    tail = null;\r\n+                    head = null;\r\n+                } else {\r\n+                    head = next;\r\n+                }\r\n+            } else if (timeout == tail) {\r\n+                // if the timeout is the tail modify the tail to be the prev node.\r\n+                tail = timeout.prev;\r\n+            }\r\n+            // null out prev, next and bucket to allow for GC.\r\n+            timeout.prev = null;\r\n+            timeout.next = null;\r\n+            timeout.bucket = null;\r\n+            timeout.timer.pendingTimeouts.decrementAndGet();\r\n+            return next;\r\n+        }\r\n+\r\n+        /**\r\n+         * Clear this bucket and return all not expired / cancelled {@link Timeout}s.\r\n+         */\r\n+        void clearTimeouts(Set<Timeout> set) {\r\n+            for (; ; ) {\r\n+                HashedWheelTimeout timeout = pollTimeout();\r\n+                if (timeout == null) {\r\n+                    return;\r\n+                }\r\n+                if (timeout.isExpired() || timeout.isCancelled()) {\r\n+                    continue;\r\n+                }\r\n+                set.add(timeout);\r\n+            }\r\n+        }\r\n+\r\n+        private HashedWheelTimeout pollTimeout() {\r\n+            HashedWheelTimeout head = this.head;\r\n+            if (head == null) {\r\n+                return null;\r\n+            }\r\n+            HashedWheelTimeout next = head.next;\r\n+            if (next == null) {\r\n+                tail = this.head = null;\r\n+            } else {\r\n+                this.head = next;\r\n+                next.prev = null;\r\n+            }\r\n+\r\n+            // null out prev and next to allow for GC.\r\n+            head.next = null;\r\n+            head.prev = null;\r\n+            head.bucket = null;\r\n+            return head;\r\n+        }\r\n+    }\r\n+    \r\n+    private static final boolean IS_OS_WINDOWS = System.getProperty(\"os.name\", \"\").toLowerCase(Locale.US).contains(\"win\");\r\n+    \r\n+    private boolean isWindows() {\r\n+    \treturn IS_OS_WINDOWS;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/AnnotationUtils.java", "source2": "org/apache/dubbo/common/utils/AnnotationUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,482 +1,482 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-import java.lang.annotation.Annotation;\n-import java.lang.annotation.Documented;\n-import java.lang.annotation.ElementType;\n-import java.lang.annotation.Retention;\n-import java.lang.annotation.Target;\n-import java.lang.reflect.AnnotatedElement;\n-import java.lang.reflect.Method;\n-import java.util.Collection;\n-import java.util.Collections;\n-import java.util.LinkedHashSet;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Objects;\n-import java.util.Set;\n-import java.util.function.Predicate;\n-\n-import static java.util.Arrays.asList;\n-import static java.util.Collections.emptyList;\n-import static java.util.Collections.unmodifiableList;\n-import static org.apache.dubbo.common.function.Predicates.and;\n-import static org.apache.dubbo.common.function.Streams.filterAll;\n-import static org.apache.dubbo.common.function.Streams.filterFirst;\n-import static org.apache.dubbo.common.utils.ClassUtils.getAllInheritedTypes;\n-import static org.apache.dubbo.common.utils.ClassUtils.resolveClass;\n-import static org.apache.dubbo.common.utils.CollectionUtils.first;\n-import static org.apache.dubbo.common.utils.MethodUtils.findMethod;\n-import static org.apache.dubbo.common.utils.MethodUtils.invokeMethod;\n-\n-/**\n- * Commons Annotation Utilities class\n- *\n- * @since 2.7.6\n- */\n-public interface AnnotationUtils {\n-\n-    /**\n-     * Resolve the annotation type by the annotated element and resolved class name\n-     *\n-     * @param annotatedElement    the annotated element\n-     * @param annotationClassName the class name of annotation\n-     * @param <A>                 the type of annotation\n-     * @return If resolved, return the type of annotation, or <code>null</code>\n-     */\n-    static <A extends Annotation> Class<A> resolveAnnotationType(AnnotatedElement annotatedElement,\n-                                                                 String annotationClassName) {\n-        ClassLoader classLoader = annotatedElement.getClass().getClassLoader();\n-        Class<?> annotationType = resolveClass(annotationClassName, classLoader);\n-        if (annotationType == null || !Annotation.class.isAssignableFrom(annotationType)) {\n-            return null;\n-        }\n-        return (Class<A>) annotationType;\n-    }\n-\n-    /**\n-     * Is the specified type a generic {@link Class type}\n-     *\n-     * @param annotatedElement the annotated element\n-     * @return if <code>annotatedElement</code> is the {@link Class}, return <code>true</code>, or <code>false</code>\n-     * @see ElementType#TYPE\n-     */\n-    static boolean isType(AnnotatedElement annotatedElement) {\n-        return annotatedElement instanceof Class;\n-    }\n-\n-    /**\n-     * Is the type of specified annotation same to the expected type?\n-     *\n-     * @param annotation     the specified {@link Annotation}\n-     * @param annotationType the expected annotation type\n-     * @return if same, return <code>true</code>, or <code>false</code>\n-     */\n-    static boolean isSameType(Annotation annotation, Class<? extends Annotation> annotationType) {\n-        if (annotation == null || annotationType == null) {\n-            return false;\n-        }\n-        return Objects.equals(annotation.annotationType(), annotationType);\n-    }\n-\n-    /**\n-     * Build an instance of {@link Predicate} to excluded annotation type\n-     *\n-     * @param excludedAnnotationType excluded annotation type\n-     * @return non-null\n-     */\n-    static Predicate<Annotation> excludedType(Class<? extends Annotation> excludedAnnotationType) {\n-        return annotation -> !isSameType(annotation, excludedAnnotationType);\n-    }\n-\n-    /**\n-     * Get the attribute from the specified {@link Annotation annotation}\n-     *\n-     * @param annotation    the specified {@link Annotation annotation}\n-     * @param attributeName the attribute name\n-     * @param <T>           the type of attribute\n-     * @return the attribute value\n-     * @throws IllegalArgumentException If the attribute name can't be found\n-     */\n-    static <T> T getAttribute(Annotation annotation, String attributeName) throws IllegalArgumentException {\n-        return annotation == null ? null : invokeMethod(annotation, attributeName);\n-    }\n-\n-    /**\n-     * Get the \"value\" attribute from the specified {@link Annotation annotation}\n-     *\n-     * @param annotation the specified {@link Annotation annotation}\n-     * @param <T>        the type of attribute\n-     * @return the value of \"value\" attribute\n-     * @throws IllegalArgumentException If the attribute name can't be found\n-     */\n-    static <T> T getValue(Annotation annotation) throws IllegalArgumentException {\n-        return getAttribute(annotation, \"value\");\n-    }\n-\n-    /**\n-     * Get the {@link Annotation} from the specified {@link AnnotatedElement the annotated element} and\n-     * {@link Annotation annotation} class name\n-     *\n-     * @param annotatedElement    {@link AnnotatedElement}\n-     * @param annotationClassName the class name of annotation\n-     * @param <A>                 The type of {@link Annotation}\n-     * @return the {@link Annotation} if found\n-     * @throws ClassCastException If the {@link Annotation annotation} type that client requires can't match actual type\n-     */\n-    static <A extends Annotation> A getAnnotation(AnnotatedElement annotatedElement, String annotationClassName)\n-            throws ClassCastException {\n-        Class<? extends Annotation> annotationType = resolveAnnotationType(annotatedElement, annotationClassName);\n-        if (annotationType == null) {\n-            return null;\n-        }\n-        return (A) annotatedElement.getAnnotation(annotationType);\n-    }\n-\n-    /**\n-     * Get annotations that are <em>directly present</em> on this element.\n-     * This method ignores inherited annotations.\n-     *\n-     * @param annotatedElement    the annotated element\n-     * @param annotationsToFilter the annotations to filter\n-     * @return non-null read-only {@link List}\n-     */\n-    static List<Annotation> getDeclaredAnnotations(AnnotatedElement annotatedElement,\n-                                                   Predicate<Annotation>... annotationsToFilter) {\n-        if (annotatedElement == null) {\n-            return emptyList();\n-        }\n-\n-        return unmodifiableList(filterAll(asList(annotatedElement.getDeclaredAnnotations()), annotationsToFilter));\n-    }\n-\n-    /**\n-     * Get all directly declared annotations of the the annotated element, not including\n-     * meta annotations.\n-     *\n-     * @param annotatedElement    the annotated element\n-     * @param annotationsToFilter the annotations to filter\n-     * @return non-null read-only {@link List}\n-     */\n-    static List<Annotation> getAllDeclaredAnnotations(AnnotatedElement annotatedElement,\n-                                                      Predicate<Annotation>... annotationsToFilter) {\n-        if (isType(annotatedElement)) {\n-            return getAllDeclaredAnnotations((Class) annotatedElement, annotationsToFilter);\n-        } else {\n-            return getDeclaredAnnotations(annotatedElement, annotationsToFilter);\n-        }\n-    }\n-\n-    /**\n-     * Get all directly declared annotations of the specified type and its' all hierarchical types, not including\n-     * meta annotations.\n-     *\n-     * @param type                the specified type\n-     * @param annotationsToFilter the annotations to filter\n-     * @return non-null read-only {@link List}\n-     */\n-    static List<Annotation> getAllDeclaredAnnotations(Class<?> type, Predicate<Annotation>... annotationsToFilter) {\n-\n-        if (type == null) {\n-            return emptyList();\n-        }\n-\n-        List<Annotation> allAnnotations = new LinkedList<>();\n-\n-        // All types\n-        Set<Class<?>> allTypes = new LinkedHashSet<>();\n-        // Add current type\n-        allTypes.add(type);\n-        // Add all inherited types\n-        allTypes.addAll(getAllInheritedTypes(type, t -> !Object.class.equals(t)));\n-\n-        for (Class<?> t : allTypes) {\n-            allAnnotations.addAll(getDeclaredAnnotations(t, annotationsToFilter));\n-        }\n-\n-        return unmodifiableList(allAnnotations);\n-    }\n-\n-\n-    /**\n-     * Get the meta-annotated {@link Annotation annotations} directly, excluding {@link Target}, {@link Retention}\n-     * and {@link Documented}\n-     *\n-     * @param annotationType          the {@link Annotation annotation} type\n-     * @param metaAnnotationsToFilter the meta annotations to filter\n-     * @return non-null read-only {@link List}\n-     */\n-    static List<Annotation> getMetaAnnotations(Class<? extends Annotation> annotationType,\n-                                               Predicate<Annotation>... metaAnnotationsToFilter) {\n-        return getDeclaredAnnotations(annotationType,\n-                // Excludes the Java native annotation types or it causes the stack overflow, e.g,\n-                // @Target annotates itself\n-                excludedType(Target.class),\n-                excludedType(Retention.class),\n-                excludedType(Documented.class),\n-                // Add other predicates\n-                and(metaAnnotationsToFilter)\n-        );\n-    }\n-\n-    /**\n-     * Get all meta annotations from the specified {@link Annotation annotation} type\n-     *\n-     * @param annotationType      the {@link Annotation annotation} type\n-     * @param annotationsToFilter the annotations to filter\n-     * @return non-null read-only {@link List}\n-     */\n-    static List<Annotation> getAllMetaAnnotations(Class<? extends Annotation> annotationType,\n-                                                  Predicate<Annotation>... annotationsToFilter) {\n-\n-        List<Annotation> allMetaAnnotations = new LinkedList<>();\n-\n-        List<Annotation> metaAnnotations = getMetaAnnotations(annotationType);\n-\n-        allMetaAnnotations.addAll(metaAnnotations);\n-\n-        for (Annotation metaAnnotation : metaAnnotations) {\n-            // Get the nested meta annotations recursively\n-            allMetaAnnotations.addAll(getAllMetaAnnotations(metaAnnotation.annotationType()));\n-        }\n-\n-        return unmodifiableList(filterAll(allMetaAnnotations, annotationsToFilter));\n-    }\n-\n-    /**\n-     * Find the annotation that is annotated on the specified element may be a meta-annotation\n-     *\n-     * @param annotatedElement    the annotated element\n-     * @param annotationClassName the class name of annotation\n-     * @param <A>                 the required type of annotation\n-     * @return If found, return first matched-type {@link Annotation annotation}, or <code>null</code>\n-     */\n-    static <A extends Annotation> A findAnnotation(AnnotatedElement annotatedElement, String annotationClassName) {\n-        return findAnnotation(annotatedElement, resolveAnnotationType(annotatedElement, annotationClassName));\n-    }\n-\n-    /**\n-     * Find the annotation that is annotated on the specified element may be a meta-annotation\n-     *\n-     * @param annotatedElement the annotated element\n-     * @param annotationType   the type of annotation\n-     * @param <A>              the required type of annotation\n-     * @return If found, return first matched-type {@link Annotation annotation}, or <code>null</code>\n-     */\n-    static <A extends Annotation> A findAnnotation(AnnotatedElement annotatedElement, Class<A> annotationType) {\n-        return (A) filterFirst(getAllDeclaredAnnotations(annotatedElement), a -> isSameType(a, annotationType));\n-    }\n-\n-    /**\n-     * Find the meta annotations from the the {@link Annotation annotation} type by meta annotation type\n-     *\n-     * @param annotationType     the {@link Annotation annotation} type\n-     * @param metaAnnotationType the meta annotation type\n-     * @param <A>                the type of required annotation\n-     * @return if found, return all matched results, or get an {@link Collections#emptyList() empty list}\n-     */\n-    static <A extends Annotation> List<A> findMetaAnnotations(Class<? extends Annotation> annotationType,\n-                                                              Class<A> metaAnnotationType) {\n-        return (List<A>) getAllMetaAnnotations(annotationType, a -> isSameType(a, metaAnnotationType));\n-    }\n-\n-    /**\n-     * Find the meta annotations from the the the annotated element by meta annotation type\n-     *\n-     * @param annotatedElement   the annotated element\n-     * @param metaAnnotationType the meta annotation type\n-     * @param <A>                the type of required annotation\n-     * @return if found, return all matched results, or get an {@link Collections#emptyList() empty list}\n-     */\n-    static <A extends Annotation> List<A> findMetaAnnotations(AnnotatedElement annotatedElement,\n-                                                              Class<A> metaAnnotationType) {\n-        List<A> metaAnnotations = new LinkedList<>();\n-\n-        for (Annotation annotation : getAllDeclaredAnnotations(annotatedElement)) {\n-            metaAnnotations.addAll(findMetaAnnotations(annotation.annotationType(), metaAnnotationType));\n-        }\n-\n-        return unmodifiableList(metaAnnotations);\n-    }\n-\n-    /**\n-     * Find the meta annotation from the annotated element by meta annotation type\n-     *\n-     * @param annotatedElement        the annotated element\n-     * @param metaAnnotationClassName the class name of meta annotation\n-     * @param <A>                     the type of required annotation\n-     * @return {@link #findMetaAnnotation(Class, Class)}\n-     */\n-    static <A extends Annotation> A findMetaAnnotation(AnnotatedElement annotatedElement,\n-                                                       String metaAnnotationClassName) {\n-        return findMetaAnnotation(annotatedElement, resolveAnnotationType(annotatedElement, metaAnnotationClassName));\n-    }\n-\n-    /**\n-     * Find the meta annotation from the annotation type by meta annotation type\n-     *\n-     * @param annotationType     the {@link Annotation annotation} type\n-     * @param metaAnnotationType the meta annotation type\n-     * @param <A>                the type of required annotation\n-     * @return If found, return the {@link CollectionUtils#first(Collection)} matched result, return <code>null</code>.\n-     * If it requires more result, please consider to use {@link #findMetaAnnotations(Class, Class)}\n-     * @see #findMetaAnnotations(Class, Class)\n-     */\n-    static <A extends Annotation> A findMetaAnnotation(Class<? extends Annotation> annotationType,\n-                                                       Class<A> metaAnnotationType) {\n-        return first(findMetaAnnotations(annotationType, metaAnnotationType));\n-    }\n-\n-    /**\n-     * Find the meta annotation from the annotated element by meta annotation type\n-     *\n-     * @param annotatedElement   the annotated element\n-     * @param metaAnnotationType the meta annotation type\n-     * @param <A>                the type of required annotation\n-     * @return If found, return the {@link CollectionUtils#first(Collection)} matched result, return <code>null</code>.\n-     * If it requires more result, please consider to use {@link #findMetaAnnotations(AnnotatedElement, Class)}\n-     * @see #findMetaAnnotations(AnnotatedElement, Class)\n-     */\n-    static <A extends Annotation> A findMetaAnnotation(AnnotatedElement annotatedElement, Class<A> metaAnnotationType) {\n-        return first(findMetaAnnotations(annotatedElement, metaAnnotationType));\n-    }\n-\n-    /**\n-     * Tests the annotated element is annotated the specified annotations or not\n-     *\n-     * @param type            the annotated type\n-     * @param matchAll        If <code>true</code>, checking all annotation types are present or not, or match any\n-     * @param annotationTypes the specified annotation types\n-     * @return If the specified annotation types are present, return <code>true</code>, or <code>false</code>\n-     */\n-    static boolean isAnnotationPresent(Class<?> type,\n-                                       boolean matchAll,\n-                                       Class<? extends Annotation>... annotationTypes) {\n-\n-        int size = annotationTypes == null ? 0 : annotationTypes.length;\n-\n-        if (size < 1) {\n-            return false;\n-        }\n-\n-        int presentCount = 0;\n-\n-        for (int i = 0; i < size; i++) {\n-            Class<? extends Annotation> annotationType = annotationTypes[i];\n-            if (findAnnotation(type, annotationType) != null || findMetaAnnotation(type, annotationType) != null) {\n-                presentCount++;\n-            }\n-        }\n-\n-        return matchAll ? presentCount == size : presentCount > 0;\n-    }\n-\n-    /**\n-     * Tests the annotated element is annotated the specified annotation or not\n-     *\n-     * @param type           the annotated type\n-     * @param annotationType the class of annotation\n-     * @return If the specified annotation type is present, return <code>true</code>, or <code>false</code>\n-     */\n-    static boolean isAnnotationPresent(Class<?> type, Class<? extends Annotation> annotationType) {\n-        return isAnnotationPresent(type, true, annotationType);\n-    }\n-\n-    /**\n-     * Tests the annotated element is present any specified annotation types\n-     *\n-     * @param annotatedElement    the annotated element\n-     * @param annotationClassName the class name of annotation\n-     * @return If any specified annotation types are present, return <code>true</code>\n-     */\n-    static boolean isAnnotationPresent(AnnotatedElement annotatedElement, String annotationClassName) {\n-        ClassLoader classLoader = annotatedElement.getClass().getClassLoader();\n-        Class<?> resolvedType = resolveClass(annotationClassName, classLoader);\n-        if (!Annotation.class.isAssignableFrom(resolvedType)) {\n-            return false;\n-        }\n-        return isAnnotationPresent(annotatedElement, (Class<? extends Annotation>) resolvedType);\n-    }\n-\n-    /**\n-     * Tests the annotated element is present any specified annotation types\n-     *\n-     * @param annotatedElement the annotated element\n-     * @param annotationType   the class of annotation\n-     * @return If any specified annotation types are present, return <code>true</code>\n-     */\n-    static boolean isAnnotationPresent(AnnotatedElement annotatedElement, Class<? extends Annotation> annotationType) {\n-        if (isType(annotatedElement)) {\n-            return isAnnotationPresent((Class) annotatedElement, annotationType);\n-        } else {\n-            return annotatedElement.isAnnotationPresent(annotationType) ||\n-                    findMetaAnnotation(annotatedElement, annotationType) != null; // to find meta-annotation\n-        }\n-    }\n-\n-    /**\n-     * Tests the annotated element is annotated all specified annotations or not\n-     *\n-     * @param type            the annotated type\n-     * @param annotationTypes the specified annotation types\n-     * @return If the specified annotation types are present, return <code>true</code>, or <code>false</code>\n-     */\n-    static boolean isAllAnnotationPresent(Class<?> type, Class<? extends Annotation>... annotationTypes) {\n-        return isAnnotationPresent(type, true, annotationTypes);\n-    }\n-\n-    /**\n-     * Tests the annotated element is present any specified annotation types\n-     *\n-     * @param type            the annotated type\n-     * @param annotationTypes the specified annotation types\n-     * @return If any specified annotation types are present, return <code>true</code>\n-     */\n-    static boolean isAnyAnnotationPresent(Class<?> type,\n-                                          Class<? extends Annotation>... annotationTypes) {\n-        return isAnnotationPresent(type, false, annotationTypes);\n-    }\n-\n-\n-    /**\n-     * Get the default value of attribute on the specified annotation\n-     *\n-     * @param annotation    {@link Annotation} object\n-     * @param attributeName the name of attribute\n-     * @param <T>           the type of value\n-     * @return <code>null</code> if not found\n-     * @since 2.7.9\n-     */\n-    static <T> T getDefaultValue(Annotation annotation, String attributeName) {\n-        return getDefaultValue(annotation.annotationType(), attributeName);\n-    }\n-\n-    /**\n-     * Get the default value of attribute on the specified annotation\n-     *\n-     * @param annotationType the type of {@link Annotation}\n-     * @param attributeName  the name of attribute\n-     * @param <T>            the type of value\n-     * @return <code>null</code> if not found\n-     * @since 2.7.9\n-     */\n-    static <T> T getDefaultValue(Class<? extends Annotation> annotationType, String attributeName) {\n-        Method method = findMethod(annotationType, attributeName);\n-        return (T) (method == null ? null : method.getDefaultValue());\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import java.lang.annotation.Annotation;\r\n+import java.lang.annotation.Documented;\r\n+import java.lang.annotation.ElementType;\r\n+import java.lang.annotation.Retention;\r\n+import java.lang.annotation.Target;\r\n+import java.lang.reflect.AnnotatedElement;\r\n+import java.lang.reflect.Method;\r\n+import java.util.Collection;\r\n+import java.util.Collections;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Objects;\r\n+import java.util.Set;\r\n+import java.util.function.Predicate;\r\n+\r\n+import static java.util.Arrays.asList;\r\n+import static java.util.Collections.emptyList;\r\n+import static java.util.Collections.unmodifiableList;\r\n+import static org.apache.dubbo.common.function.Predicates.and;\r\n+import static org.apache.dubbo.common.function.Streams.filterAll;\r\n+import static org.apache.dubbo.common.function.Streams.filterFirst;\r\n+import static org.apache.dubbo.common.utils.ClassUtils.getAllInheritedTypes;\r\n+import static org.apache.dubbo.common.utils.ClassUtils.resolveClass;\r\n+import static org.apache.dubbo.common.utils.CollectionUtils.first;\r\n+import static org.apache.dubbo.common.utils.MethodUtils.findMethod;\r\n+import static org.apache.dubbo.common.utils.MethodUtils.invokeMethod;\r\n+\r\n+/**\r\n+ * Commons Annotation Utilities class\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public interface AnnotationUtils {\r\n+\r\n+    /**\r\n+     * Resolve the annotation type by the annotated element and resolved class name\r\n+     *\r\n+     * @param annotatedElement    the annotated element\r\n+     * @param annotationClassName the class name of annotation\r\n+     * @param <A>                 the type of annotation\r\n+     * @return If resolved, return the type of annotation, or <code>null</code>\r\n+     */\r\n+    static <A extends Annotation> Class<A> resolveAnnotationType(AnnotatedElement annotatedElement,\r\n+                                                                 String annotationClassName) {\r\n+        ClassLoader classLoader = annotatedElement.getClass().getClassLoader();\r\n+        Class<?> annotationType = resolveClass(annotationClassName, classLoader);\r\n+        if (annotationType == null || !Annotation.class.isAssignableFrom(annotationType)) {\r\n+            return null;\r\n+        }\r\n+        return (Class<A>) annotationType;\r\n+    }\r\n+\r\n+    /**\r\n+     * Is the specified type a generic {@link Class type}\r\n+     *\r\n+     * @param annotatedElement the annotated element\r\n+     * @return if <code>annotatedElement</code> is the {@link Class}, return <code>true</code>, or <code>false</code>\r\n+     * @see ElementType#TYPE\r\n+     */\r\n+    static boolean isType(AnnotatedElement annotatedElement) {\r\n+        return annotatedElement instanceof Class;\r\n+    }\r\n+\r\n+    /**\r\n+     * Is the type of specified annotation same to the expected type?\r\n+     *\r\n+     * @param annotation     the specified {@link Annotation}\r\n+     * @param annotationType the expected annotation type\r\n+     * @return if same, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    static boolean isSameType(Annotation annotation, Class<? extends Annotation> annotationType) {\r\n+        if (annotation == null || annotationType == null) {\r\n+            return false;\r\n+        }\r\n+        return Objects.equals(annotation.annotationType(), annotationType);\r\n+    }\r\n+\r\n+    /**\r\n+     * Build an instance of {@link Predicate} to excluded annotation type\r\n+     *\r\n+     * @param excludedAnnotationType excluded annotation type\r\n+     * @return non-null\r\n+     */\r\n+    static Predicate<Annotation> excludedType(Class<? extends Annotation> excludedAnnotationType) {\r\n+        return annotation -> !isSameType(annotation, excludedAnnotationType);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the attribute from the specified {@link Annotation annotation}\r\n+     *\r\n+     * @param annotation    the specified {@link Annotation annotation}\r\n+     * @param attributeName the attribute name\r\n+     * @param <T>           the type of attribute\r\n+     * @return the attribute value\r\n+     * @throws IllegalArgumentException If the attribute name can't be found\r\n+     */\r\n+    static <T> T getAttribute(Annotation annotation, String attributeName) throws IllegalArgumentException {\r\n+        return annotation == null ? null : invokeMethod(annotation, attributeName);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the \"value\" attribute from the specified {@link Annotation annotation}\r\n+     *\r\n+     * @param annotation the specified {@link Annotation annotation}\r\n+     * @param <T>        the type of attribute\r\n+     * @return the value of \"value\" attribute\r\n+     * @throws IllegalArgumentException If the attribute name can't be found\r\n+     */\r\n+    static <T> T getValue(Annotation annotation) throws IllegalArgumentException {\r\n+        return getAttribute(annotation, \"value\");\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the {@link Annotation} from the specified {@link AnnotatedElement the annotated element} and\r\n+     * {@link Annotation annotation} class name\r\n+     *\r\n+     * @param annotatedElement    {@link AnnotatedElement}\r\n+     * @param annotationClassName the class name of annotation\r\n+     * @param <A>                 The type of {@link Annotation}\r\n+     * @return the {@link Annotation} if found\r\n+     * @throws ClassCastException If the {@link Annotation annotation} type that client requires can't match actual type\r\n+     */\r\n+    static <A extends Annotation> A getAnnotation(AnnotatedElement annotatedElement, String annotationClassName)\r\n+            throws ClassCastException {\r\n+        Class<? extends Annotation> annotationType = resolveAnnotationType(annotatedElement, annotationClassName);\r\n+        if (annotationType == null) {\r\n+            return null;\r\n+        }\r\n+        return (A) annotatedElement.getAnnotation(annotationType);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get annotations that are <em>directly present</em> on this element.\r\n+     * This method ignores inherited annotations.\r\n+     *\r\n+     * @param annotatedElement    the annotated element\r\n+     * @param annotationsToFilter the annotations to filter\r\n+     * @return non-null read-only {@link List}\r\n+     */\r\n+    static List<Annotation> getDeclaredAnnotations(AnnotatedElement annotatedElement,\r\n+                                                   Predicate<Annotation>... annotationsToFilter) {\r\n+        if (annotatedElement == null) {\r\n+            return emptyList();\r\n+        }\r\n+\r\n+        return unmodifiableList(filterAll(asList(annotatedElement.getDeclaredAnnotations()), annotationsToFilter));\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all directly declared annotations of the the annotated element, not including\r\n+     * meta annotations.\r\n+     *\r\n+     * @param annotatedElement    the annotated element\r\n+     * @param annotationsToFilter the annotations to filter\r\n+     * @return non-null read-only {@link List}\r\n+     */\r\n+    static List<Annotation> getAllDeclaredAnnotations(AnnotatedElement annotatedElement,\r\n+                                                      Predicate<Annotation>... annotationsToFilter) {\r\n+        if (isType(annotatedElement)) {\r\n+            return getAllDeclaredAnnotations((Class) annotatedElement, annotationsToFilter);\r\n+        } else {\r\n+            return getDeclaredAnnotations(annotatedElement, annotationsToFilter);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all directly declared annotations of the specified type and its' all hierarchical types, not including\r\n+     * meta annotations.\r\n+     *\r\n+     * @param type                the specified type\r\n+     * @param annotationsToFilter the annotations to filter\r\n+     * @return non-null read-only {@link List}\r\n+     */\r\n+    static List<Annotation> getAllDeclaredAnnotations(Class<?> type, Predicate<Annotation>... annotationsToFilter) {\r\n+\r\n+        if (type == null) {\r\n+            return emptyList();\r\n+        }\r\n+\r\n+        List<Annotation> allAnnotations = new LinkedList<>();\r\n+\r\n+        // All types\r\n+        Set<Class<?>> allTypes = new LinkedHashSet<>();\r\n+        // Add current type\r\n+        allTypes.add(type);\r\n+        // Add all inherited types\r\n+        allTypes.addAll(getAllInheritedTypes(type, t -> !Object.class.equals(t)));\r\n+\r\n+        for (Class<?> t : allTypes) {\r\n+            allAnnotations.addAll(getDeclaredAnnotations(t, annotationsToFilter));\r\n+        }\r\n+\r\n+        return unmodifiableList(allAnnotations);\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Get the meta-annotated {@link Annotation annotations} directly, excluding {@link Target}, {@link Retention}\r\n+     * and {@link Documented}\r\n+     *\r\n+     * @param annotationType          the {@link Annotation annotation} type\r\n+     * @param metaAnnotationsToFilter the meta annotations to filter\r\n+     * @return non-null read-only {@link List}\r\n+     */\r\n+    static List<Annotation> getMetaAnnotations(Class<? extends Annotation> annotationType,\r\n+                                               Predicate<Annotation>... metaAnnotationsToFilter) {\r\n+        return getDeclaredAnnotations(annotationType,\r\n+                // Excludes the Java native annotation types or it causes the stack overflow, e.g,\r\n+                // @Target annotates itself\r\n+                excludedType(Target.class),\r\n+                excludedType(Retention.class),\r\n+                excludedType(Documented.class),\r\n+                // Add other predicates\r\n+                and(metaAnnotationsToFilter)\r\n+        );\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all meta annotations from the specified {@link Annotation annotation} type\r\n+     *\r\n+     * @param annotationType      the {@link Annotation annotation} type\r\n+     * @param annotationsToFilter the annotations to filter\r\n+     * @return non-null read-only {@link List}\r\n+     */\r\n+    static List<Annotation> getAllMetaAnnotations(Class<? extends Annotation> annotationType,\r\n+                                                  Predicate<Annotation>... annotationsToFilter) {\r\n+\r\n+        List<Annotation> allMetaAnnotations = new LinkedList<>();\r\n+\r\n+        List<Annotation> metaAnnotations = getMetaAnnotations(annotationType);\r\n+\r\n+        allMetaAnnotations.addAll(metaAnnotations);\r\n+\r\n+        for (Annotation metaAnnotation : metaAnnotations) {\r\n+            // Get the nested meta annotations recursively\r\n+            allMetaAnnotations.addAll(getAllMetaAnnotations(metaAnnotation.annotationType()));\r\n+        }\r\n+\r\n+        return unmodifiableList(filterAll(allMetaAnnotations, annotationsToFilter));\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the annotation that is annotated on the specified element may be a meta-annotation\r\n+     *\r\n+     * @param annotatedElement    the annotated element\r\n+     * @param annotationClassName the class name of annotation\r\n+     * @param <A>                 the required type of annotation\r\n+     * @return If found, return first matched-type {@link Annotation annotation}, or <code>null</code>\r\n+     */\r\n+    static <A extends Annotation> A findAnnotation(AnnotatedElement annotatedElement, String annotationClassName) {\r\n+        return findAnnotation(annotatedElement, resolveAnnotationType(annotatedElement, annotationClassName));\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the annotation that is annotated on the specified element may be a meta-annotation\r\n+     *\r\n+     * @param annotatedElement the annotated element\r\n+     * @param annotationType   the type of annotation\r\n+     * @param <A>              the required type of annotation\r\n+     * @return If found, return first matched-type {@link Annotation annotation}, or <code>null</code>\r\n+     */\r\n+    static <A extends Annotation> A findAnnotation(AnnotatedElement annotatedElement, Class<A> annotationType) {\r\n+        return (A) filterFirst(getAllDeclaredAnnotations(annotatedElement), a -> isSameType(a, annotationType));\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the meta annotations from the the {@link Annotation annotation} type by meta annotation type\r\n+     *\r\n+     * @param annotationType     the {@link Annotation annotation} type\r\n+     * @param metaAnnotationType the meta annotation type\r\n+     * @param <A>                the type of required annotation\r\n+     * @return if found, return all matched results, or get an {@link Collections#emptyList() empty list}\r\n+     */\r\n+    static <A extends Annotation> List<A> findMetaAnnotations(Class<? extends Annotation> annotationType,\r\n+                                                              Class<A> metaAnnotationType) {\r\n+        return (List<A>) getAllMetaAnnotations(annotationType, a -> isSameType(a, metaAnnotationType));\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the meta annotations from the the the annotated element by meta annotation type\r\n+     *\r\n+     * @param annotatedElement   the annotated element\r\n+     * @param metaAnnotationType the meta annotation type\r\n+     * @param <A>                the type of required annotation\r\n+     * @return if found, return all matched results, or get an {@link Collections#emptyList() empty list}\r\n+     */\r\n+    static <A extends Annotation> List<A> findMetaAnnotations(AnnotatedElement annotatedElement,\r\n+                                                              Class<A> metaAnnotationType) {\r\n+        List<A> metaAnnotations = new LinkedList<>();\r\n+\r\n+        for (Annotation annotation : getAllDeclaredAnnotations(annotatedElement)) {\r\n+            metaAnnotations.addAll(findMetaAnnotations(annotation.annotationType(), metaAnnotationType));\r\n+        }\r\n+\r\n+        return unmodifiableList(metaAnnotations);\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the meta annotation from the annotated element by meta annotation type\r\n+     *\r\n+     * @param annotatedElement        the annotated element\r\n+     * @param metaAnnotationClassName the class name of meta annotation\r\n+     * @param <A>                     the type of required annotation\r\n+     * @return {@link #findMetaAnnotation(Class, Class)}\r\n+     */\r\n+    static <A extends Annotation> A findMetaAnnotation(AnnotatedElement annotatedElement,\r\n+                                                       String metaAnnotationClassName) {\r\n+        return findMetaAnnotation(annotatedElement, resolveAnnotationType(annotatedElement, metaAnnotationClassName));\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the meta annotation from the annotation type by meta annotation type\r\n+     *\r\n+     * @param annotationType     the {@link Annotation annotation} type\r\n+     * @param metaAnnotationType the meta annotation type\r\n+     * @param <A>                the type of required annotation\r\n+     * @return If found, return the {@link CollectionUtils#first(Collection)} matched result, return <code>null</code>.\r\n+     * If it requires more result, please consider to use {@link #findMetaAnnotations(Class, Class)}\r\n+     * @see #findMetaAnnotations(Class, Class)\r\n+     */\r\n+    static <A extends Annotation> A findMetaAnnotation(Class<? extends Annotation> annotationType,\r\n+                                                       Class<A> metaAnnotationType) {\r\n+        return first(findMetaAnnotations(annotationType, metaAnnotationType));\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the meta annotation from the annotated element by meta annotation type\r\n+     *\r\n+     * @param annotatedElement   the annotated element\r\n+     * @param metaAnnotationType the meta annotation type\r\n+     * @param <A>                the type of required annotation\r\n+     * @return If found, return the {@link CollectionUtils#first(Collection)} matched result, return <code>null</code>.\r\n+     * If it requires more result, please consider to use {@link #findMetaAnnotations(AnnotatedElement, Class)}\r\n+     * @see #findMetaAnnotations(AnnotatedElement, Class)\r\n+     */\r\n+    static <A extends Annotation> A findMetaAnnotation(AnnotatedElement annotatedElement, Class<A> metaAnnotationType) {\r\n+        return first(findMetaAnnotations(annotatedElement, metaAnnotationType));\r\n+    }\r\n+\r\n+    /**\r\n+     * Tests the annotated element is annotated the specified annotations or not\r\n+     *\r\n+     * @param type            the annotated type\r\n+     * @param matchAll        If <code>true</code>, checking all annotation types are present or not, or match any\r\n+     * @param annotationTypes the specified annotation types\r\n+     * @return If the specified annotation types are present, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    static boolean isAnnotationPresent(Class<?> type,\r\n+                                       boolean matchAll,\r\n+                                       Class<? extends Annotation>... annotationTypes) {\r\n+\r\n+        int size = annotationTypes == null ? 0 : annotationTypes.length;\r\n+\r\n+        if (size < 1) {\r\n+            return false;\r\n+        }\r\n+\r\n+        int presentCount = 0;\r\n+\r\n+        for (int i = 0; i < size; i++) {\r\n+            Class<? extends Annotation> annotationType = annotationTypes[i];\r\n+            if (findAnnotation(type, annotationType) != null || findMetaAnnotation(type, annotationType) != null) {\r\n+                presentCount++;\r\n+            }\r\n+        }\r\n+\r\n+        return matchAll ? presentCount == size : presentCount > 0;\r\n+    }\r\n+\r\n+    /**\r\n+     * Tests the annotated element is annotated the specified annotation or not\r\n+     *\r\n+     * @param type           the annotated type\r\n+     * @param annotationType the class of annotation\r\n+     * @return If the specified annotation type is present, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    static boolean isAnnotationPresent(Class<?> type, Class<? extends Annotation> annotationType) {\r\n+        return isAnnotationPresent(type, true, annotationType);\r\n+    }\r\n+\r\n+    /**\r\n+     * Tests the annotated element is present any specified annotation types\r\n+     *\r\n+     * @param annotatedElement    the annotated element\r\n+     * @param annotationClassName the class name of annotation\r\n+     * @return If any specified annotation types are present, return <code>true</code>\r\n+     */\r\n+    static boolean isAnnotationPresent(AnnotatedElement annotatedElement, String annotationClassName) {\r\n+        ClassLoader classLoader = annotatedElement.getClass().getClassLoader();\r\n+        Class<?> resolvedType = resolveClass(annotationClassName, classLoader);\r\n+        if (!Annotation.class.isAssignableFrom(resolvedType)) {\r\n+            return false;\r\n+        }\r\n+        return isAnnotationPresent(annotatedElement, (Class<? extends Annotation>) resolvedType);\r\n+    }\r\n+\r\n+    /**\r\n+     * Tests the annotated element is present any specified annotation types\r\n+     *\r\n+     * @param annotatedElement the annotated element\r\n+     * @param annotationType   the class of annotation\r\n+     * @return If any specified annotation types are present, return <code>true</code>\r\n+     */\r\n+    static boolean isAnnotationPresent(AnnotatedElement annotatedElement, Class<? extends Annotation> annotationType) {\r\n+        if (isType(annotatedElement)) {\r\n+            return isAnnotationPresent((Class) annotatedElement, annotationType);\r\n+        } else {\r\n+            return annotatedElement.isAnnotationPresent(annotationType) ||\r\n+                    findMetaAnnotation(annotatedElement, annotationType) != null; // to find meta-annotation\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Tests the annotated element is annotated all specified annotations or not\r\n+     *\r\n+     * @param type            the annotated type\r\n+     * @param annotationTypes the specified annotation types\r\n+     * @return If the specified annotation types are present, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    static boolean isAllAnnotationPresent(Class<?> type, Class<? extends Annotation>... annotationTypes) {\r\n+        return isAnnotationPresent(type, true, annotationTypes);\r\n+    }\r\n+\r\n+    /**\r\n+     * Tests the annotated element is present any specified annotation types\r\n+     *\r\n+     * @param type            the annotated type\r\n+     * @param annotationTypes the specified annotation types\r\n+     * @return If any specified annotation types are present, return <code>true</code>\r\n+     */\r\n+    static boolean isAnyAnnotationPresent(Class<?> type,\r\n+                                          Class<? extends Annotation>... annotationTypes) {\r\n+        return isAnnotationPresent(type, false, annotationTypes);\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Get the default value of attribute on the specified annotation\r\n+     *\r\n+     * @param annotation    {@link Annotation} object\r\n+     * @param attributeName the name of attribute\r\n+     * @param <T>           the type of value\r\n+     * @return <code>null</code> if not found\r\n+     * @since 2.7.9\r\n+     */\r\n+    static <T> T getDefaultValue(Annotation annotation, String attributeName) {\r\n+        return getDefaultValue(annotation.annotationType(), attributeName);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the default value of attribute on the specified annotation\r\n+     *\r\n+     * @param annotationType the type of {@link Annotation}\r\n+     * @param attributeName  the name of attribute\r\n+     * @param <T>            the type of value\r\n+     * @return <code>null</code> if not found\r\n+     * @since 2.7.9\r\n+     */\r\n+    static <T> T getDefaultValue(Class<? extends Annotation> annotationType, String attributeName) {\r\n+        Method method = findMethod(annotationType, attributeName);\r\n+        return (T) (method == null ? null : method.getDefaultValue());\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/ArrayUtils.java", "source2": "org/apache/dubbo/common/utils/ArrayUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,79 +1,79 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.utils;\n-\n-/**\n- * Contains some methods to check array.\n- */\n-public final class ArrayUtils {\n-\n-    private ArrayUtils() {\n-    }\n-\n-    /**\n-     * <p>Checks if the array is null or empty. <p/>\n-     *\n-     * @param array th array to check\n-     * @return {@code true} if the array is null or empty.\n-     */\n-    public static boolean isEmpty(final Object[] array) {\n-        return array == null || array.length == 0;\n-    }\n-\n-    /**\n-     * <p>Checks if the array is not null or empty. <p/>\n-     *\n-     * @param array th array to check\n-     * @return {@code true} if the array is not null or empty.\n-     */\n-    public static boolean isNotEmpty(final Object[] array) {\n-        return !isEmpty(array);\n-    }\n-\n-    public static boolean contains(final String[] array, String valueToFind) {\n-        return indexOf(array, valueToFind, 0) != -1;\n-    }\n-\n-    public static int indexOf(String[] array, String valueToFind, int startIndex) {\n-        if (!isEmpty(array) && valueToFind != null) {\n-            if (startIndex < 0) {\n-                startIndex = 0;\n-            }\n-\n-            for (int i = startIndex; i < array.length; ++i) {\n-                if (valueToFind.equals(array[i])) {\n-                    return i;\n-                }\n-            }\n-\n-        }\n-        return -1;\n-    }\n-\n-    /**\n-     * Convert from variable arguments to array\n-     *\n-     * @param values variable arguments\n-     * @param <T>    The class\n-     * @return array\n-     * @since 2.7.9\n-     */\n-    public static <T> T[] of(T... values) {\n-        return values;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+/**\r\n+ * Contains some methods to check array.\r\n+ */\r\n+public final class ArrayUtils {\r\n+\r\n+    private ArrayUtils() {\r\n+    }\r\n+\r\n+    /**\r\n+     * <p>Checks if the array is null or empty. <p/>\r\n+     *\r\n+     * @param array th array to check\r\n+     * @return {@code true} if the array is null or empty.\r\n+     */\r\n+    public static boolean isEmpty(final Object[] array) {\r\n+        return array == null || array.length == 0;\r\n+    }\r\n+\r\n+    /**\r\n+     * <p>Checks if the array is not null or empty. <p/>\r\n+     *\r\n+     * @param array th array to check\r\n+     * @return {@code true} if the array is not null or empty.\r\n+     */\r\n+    public static boolean isNotEmpty(final Object[] array) {\r\n+        return !isEmpty(array);\r\n+    }\r\n+\r\n+    public static boolean contains(final String[] array, String valueToFind) {\r\n+        return indexOf(array, valueToFind, 0) != -1;\r\n+    }\r\n+\r\n+    public static int indexOf(String[] array, String valueToFind, int startIndex) {\r\n+        if (!isEmpty(array) && valueToFind != null) {\r\n+            if (startIndex < 0) {\r\n+                startIndex = 0;\r\n+            }\r\n+\r\n+            for (int i = startIndex; i < array.length; ++i) {\r\n+                if (valueToFind.equals(array[i])) {\r\n+                    return i;\r\n+                }\r\n+            }\r\n+\r\n+        }\r\n+        return -1;\r\n+    }\r\n+\r\n+    /**\r\n+     * Convert from variable arguments to array\r\n+     *\r\n+     * @param values variable arguments\r\n+     * @param <T>    The class\r\n+     * @return array\r\n+     * @since 2.7.9\r\n+     */\r\n+    public static <T> T[] of(T... values) {\r\n+        return values;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/CharSequenceComparator.java", "source2": "org/apache/dubbo/common/utils/CharSequenceComparator.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,37 +1,37 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-import java.util.Comparator;\n-\n-/**\n- * The {@link Comparator} for {@link CharSequence}\n- *\n- * @since 2.7.6\n- */\n-public class CharSequenceComparator implements Comparator<CharSequence> {\n-\n-    public final static CharSequenceComparator INSTANCE = new CharSequenceComparator();\n-\n-    private CharSequenceComparator() {\n-    }\n-\n-    @Override\n-    public int compare(CharSequence c1, CharSequence c2) {\n-        return c1.toString().compareTo(c2.toString());\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import java.util.Comparator;\r\n+\r\n+/**\r\n+ * The {@link Comparator} for {@link CharSequence}\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class CharSequenceComparator implements Comparator<CharSequence> {\r\n+\r\n+    public final static CharSequenceComparator INSTANCE = new CharSequenceComparator();\r\n+\r\n+    private CharSequenceComparator() {\r\n+    }\r\n+\r\n+    @Override\r\n+    public int compare(CharSequence c1, CharSequence c2) {\r\n+        return c1.toString().compareTo(c2.toString());\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/ClassHelper.java", "source2": "org/apache/dubbo/common/utils/ClassHelper.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,153 +1,153 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-\n-import java.lang.reflect.Method;\n-\n-/**\n- * @see org.apache.dubbo.common.utils.ClassUtils\n- * @deprecated Replace to <code>ClassUtils</code>\n- */\n-public class ClassHelper {\n-    public static Class<?> forNameWithThreadContextClassLoader(String name) throws ClassNotFoundException {\n-        return ClassUtils.forName(name, Thread.currentThread().getContextClassLoader());\n-    }\n-\n-    public static Class<?> forNameWithCallerClassLoader(String name, Class<?> caller) throws ClassNotFoundException {\n-        return ClassUtils.forName(name, caller.getClassLoader());\n-    }\n-\n-    public static ClassLoader getCallerClassLoader(Class<?> caller) {\n-        return caller.getClassLoader();\n-    }\n-\n-    /**\n-     * get class loader\n-     *\n-     * @param clazz\n-     * @return class loader\n-     */\n-    public static ClassLoader getClassLoader(Class<?> clazz) {\n-        return ClassUtils.getClassLoader(clazz);\n-    }\n-\n-    /**\n-     * Return the default ClassLoader to use: typically the thread context\n-     * ClassLoader, if available; the ClassLoader that loaded the ClassUtils\n-     * class will be used as fallback.\n-     * <p>\n-     * Call this method if you intend to use the thread context ClassLoader in a\n-     * scenario where you absolutely need a non-null ClassLoader reference: for\n-     * example, for class path resource loading (but not necessarily for\n-     * <code>Class.forName</code>, which accepts a <code>null</code> ClassLoader\n-     * reference as well).\n-     *\n-     * @return the default ClassLoader (never <code>null</code>)\n-     * @see java.lang.Thread#getContextClassLoader()\n-     */\n-    public static ClassLoader getClassLoader() {\n-        return getClassLoader(ClassHelper.class);\n-    }\n-\n-    /**\n-     * Same as <code>Class.forName()</code>, except that it works for primitive\n-     * types.\n-     */\n-    public static Class<?> forName(String name) throws ClassNotFoundException {\n-        return forName(name, getClassLoader());\n-    }\n-\n-    /**\n-     * Replacement for <code>Class.forName()</code> that also returns Class\n-     * instances for primitives (like \"int\") and array class names (like\n-     * \"String[]\").\n-     *\n-     * @param name        the name of the Class\n-     * @param classLoader the class loader to use (may be <code>null</code>,\n-     *                    which indicates the default class loader)\n-     * @return Class instance for the supplied name\n-     * @throws ClassNotFoundException if the class was not found\n-     * @throws LinkageError           if the class file could not be loaded\n-     * @see Class#forName(String, boolean, ClassLoader)\n-     */\n-    public static Class<?> forName(String name, ClassLoader classLoader)\n-            throws ClassNotFoundException, LinkageError {\n-        return ClassUtils.forName(name, classLoader);\n-    }\n-\n-    /**\n-     * Resolve the given class name as primitive class, if appropriate,\n-     * according to the JVM's naming rules for primitive classes.\n-     * <p>\n-     * Also supports the JVM's internal class names for primitive arrays. Does\n-     * <i>not</i> support the \"[]\" suffix notation for primitive arrays; this is\n-     * only supported by {@link #forName}.\n-     *\n-     * @param name the name of the potentially primitive class\n-     * @return the primitive class, or <code>null</code> if the name does not\n-     * denote a primitive class or primitive array class\n-     */\n-    public static Class<?> resolvePrimitiveClassName(String name) {\n-        return ClassUtils.resolvePrimitiveClassName(name);\n-    }\n-\n-    public static String toShortString(Object obj) {\n-        return ClassUtils.toShortString(obj);\n-\n-    }\n-\n-    public static String simpleClassName(Class<?> clazz) {\n-        return ClassUtils.simpleClassName(clazz);\n-    }\n-\n-    /**\n-     * @see org.apache.dubbo.common.utils.MethodUtils#isSetter(Method)\n-     * @deprecated Replace to <code>MethodUtils#isSetter(Method)</code>\n-     */\n-    public static boolean isSetter(Method method) {\n-        return MethodUtils.isSetter(method);\n-    }\n-\n-    /**\n-     * @see org.apache.dubbo.common.utils.MethodUtils#isGetter(Method) (Method)\n-     * @deprecated Replace to <code>MethodUtils#isGetter(Method)</code>\n-     */\n-    public static boolean isGetter(Method method) {\n-        return MethodUtils.isGetter(method);\n-    }\n-\n-    public static boolean isPrimitive(Class<?> type) {\n-        return ClassUtils.isPrimitive(type);\n-    }\n-\n-    public static Object convertPrimitive(Class<?> type, String value) {\n-        return ClassUtils.convertPrimitive(type,value);\n-    }\n-\n-\n-    /**\n-     * We only check boolean value at this moment.\n-     *\n-     * @param type\n-     * @param value\n-     * @return\n-     */\n-    public static boolean isTypeMatch(Class<?> type, String value) {\n-    return ClassUtils.isTypeMatch(type,value);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+\r\n+import java.lang.reflect.Method;\r\n+\r\n+/**\r\n+ * @see org.apache.dubbo.common.utils.ClassUtils\r\n+ * @deprecated Replace to <code>ClassUtils</code>\r\n+ */\r\n+public class ClassHelper {\r\n+    public static Class<?> forNameWithThreadContextClassLoader(String name) throws ClassNotFoundException {\r\n+        return ClassUtils.forName(name, Thread.currentThread().getContextClassLoader());\r\n+    }\r\n+\r\n+    public static Class<?> forNameWithCallerClassLoader(String name, Class<?> caller) throws ClassNotFoundException {\r\n+        return ClassUtils.forName(name, caller.getClassLoader());\r\n+    }\r\n+\r\n+    public static ClassLoader getCallerClassLoader(Class<?> caller) {\r\n+        return caller.getClassLoader();\r\n+    }\r\n+\r\n+    /**\r\n+     * get class loader\r\n+     *\r\n+     * @param clazz\r\n+     * @return class loader\r\n+     */\r\n+    public static ClassLoader getClassLoader(Class<?> clazz) {\r\n+        return ClassUtils.getClassLoader(clazz);\r\n+    }\r\n+\r\n+    /**\r\n+     * Return the default ClassLoader to use: typically the thread context\r\n+     * ClassLoader, if available; the ClassLoader that loaded the ClassUtils\r\n+     * class will be used as fallback.\r\n+     * <p>\r\n+     * Call this method if you intend to use the thread context ClassLoader in a\r\n+     * scenario where you absolutely need a non-null ClassLoader reference: for\r\n+     * example, for class path resource loading (but not necessarily for\r\n+     * <code>Class.forName</code>, which accepts a <code>null</code> ClassLoader\r\n+     * reference as well).\r\n+     *\r\n+     * @return the default ClassLoader (never <code>null</code>)\r\n+     * @see java.lang.Thread#getContextClassLoader()\r\n+     */\r\n+    public static ClassLoader getClassLoader() {\r\n+        return getClassLoader(ClassHelper.class);\r\n+    }\r\n+\r\n+    /**\r\n+     * Same as <code>Class.forName()</code>, except that it works for primitive\r\n+     * types.\r\n+     */\r\n+    public static Class<?> forName(String name) throws ClassNotFoundException {\r\n+        return forName(name, getClassLoader());\r\n+    }\r\n+\r\n+    /**\r\n+     * Replacement for <code>Class.forName()</code> that also returns Class\r\n+     * instances for primitives (like \"int\") and array class names (like\r\n+     * \"String[]\").\r\n+     *\r\n+     * @param name        the name of the Class\r\n+     * @param classLoader the class loader to use (may be <code>null</code>,\r\n+     *                    which indicates the default class loader)\r\n+     * @return Class instance for the supplied name\r\n+     * @throws ClassNotFoundException if the class was not found\r\n+     * @throws LinkageError           if the class file could not be loaded\r\n+     * @see Class#forName(String, boolean, ClassLoader)\r\n+     */\r\n+    public static Class<?> forName(String name, ClassLoader classLoader)\r\n+            throws ClassNotFoundException, LinkageError {\r\n+        return ClassUtils.forName(name, classLoader);\r\n+    }\r\n+\r\n+    /**\r\n+     * Resolve the given class name as primitive class, if appropriate,\r\n+     * according to the JVM's naming rules for primitive classes.\r\n+     * <p>\r\n+     * Also supports the JVM's internal class names for primitive arrays. Does\r\n+     * <i>not</i> support the \"[]\" suffix notation for primitive arrays; this is\r\n+     * only supported by {@link #forName}.\r\n+     *\r\n+     * @param name the name of the potentially primitive class\r\n+     * @return the primitive class, or <code>null</code> if the name does not\r\n+     * denote a primitive class or primitive array class\r\n+     */\r\n+    public static Class<?> resolvePrimitiveClassName(String name) {\r\n+        return ClassUtils.resolvePrimitiveClassName(name);\r\n+    }\r\n+\r\n+    public static String toShortString(Object obj) {\r\n+        return ClassUtils.toShortString(obj);\r\n+\r\n+    }\r\n+\r\n+    public static String simpleClassName(Class<?> clazz) {\r\n+        return ClassUtils.simpleClassName(clazz);\r\n+    }\r\n+\r\n+    /**\r\n+     * @see org.apache.dubbo.common.utils.MethodUtils#isSetter(Method)\r\n+     * @deprecated Replace to <code>MethodUtils#isSetter(Method)</code>\r\n+     */\r\n+    public static boolean isSetter(Method method) {\r\n+        return MethodUtils.isSetter(method);\r\n+    }\r\n+\r\n+    /**\r\n+     * @see org.apache.dubbo.common.utils.MethodUtils#isGetter(Method) (Method)\r\n+     * @deprecated Replace to <code>MethodUtils#isGetter(Method)</code>\r\n+     */\r\n+    public static boolean isGetter(Method method) {\r\n+        return MethodUtils.isGetter(method);\r\n+    }\r\n+\r\n+    public static boolean isPrimitive(Class<?> type) {\r\n+        return ClassUtils.isPrimitive(type);\r\n+    }\r\n+\r\n+    public static Object convertPrimitive(Class<?> type, String value) {\r\n+        return ClassUtils.convertPrimitive(type,value);\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * We only check boolean value at this moment.\r\n+     *\r\n+     * @param type\r\n+     * @param value\r\n+     * @return\r\n+     */\r\n+    public static boolean isTypeMatch(Class<?> type, String value) {\r\n+    return ClassUtils.isTypeMatch(type,value);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/ClassUtils.java", "source2": "org/apache/dubbo/common/utils/ClassUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,496 +1,496 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-\n-import java.lang.reflect.Array;\n-import java.math.BigDecimal;\n-import java.math.BigInteger;\n-import java.util.Arrays;\n-import java.util.Date;\n-import java.util.HashMap;\n-import java.util.HashSet;\n-import java.util.LinkedHashSet;\n-import java.util.LinkedList;\n-import java.util.Map;\n-import java.util.Objects;\n-import java.util.Queue;\n-import java.util.Set;\n-import java.util.function.Predicate;\n-\n-import static java.util.Collections.emptySet;\n-import static java.util.Collections.unmodifiableSet;\n-import static org.apache.dubbo.common.function.Streams.filterAll;\n-import static org.apache.dubbo.common.utils.ArrayUtils.isNotEmpty;\n-import static org.apache.dubbo.common.utils.CollectionUtils.ofSet;\n-\n-public class ClassUtils {\n-    /**\n-     * Suffix for array class names: \"[]\"\n-     */\n-    public static final String ARRAY_SUFFIX = \"[]\";\n-    /**\n-     * Simple Types including:\n-     * <ul>\n-     *     <li>{@link Void}</li>\n-     *     <li>{@link Boolean}</li>\n-     *     <li>{@link Character}</li>\n-     *     <li>{@link Byte}</li>\n-     *     <li>{@link Integer}</li>\n-     *     <li>{@link Float}</li>\n-     *     <li>{@link Double}</li>\n-     *     <li>{@link String}</li>\n-     *     <li>{@link BigDecimal}</li>\n-     *     <li>{@link BigInteger}</li>\n-     *     <li>{@link Date}</li>\n-     *     <li>{@link Object}</li>\n-     * </ul>\n-     *\n-     * @see javax.management.openmbean.SimpleType\n-     * @since 2.7.6\n-     */\n-    public static final Set<Class<?>> SIMPLE_TYPES = ofSet(\n-            Void.class,\n-            Boolean.class,\n-            Character.class,\n-            Byte.class,\n-            Short.class,\n-            Integer.class,\n-            Long.class,\n-            Float.class,\n-            Double.class,\n-            String.class,\n-            BigDecimal.class,\n-            BigInteger.class,\n-            Date.class,\n-            Object.class\n-    );\n-    /**\n-     * Prefix for internal array class names: \"[L\"\n-     */\n-    private static final String INTERNAL_ARRAY_PREFIX = \"[L\";\n-    /**\n-     * Map with primitive type name as key and corresponding primitive type as\n-     * value, for example: \"int\" -> \"int.class\".\n-     */\n-    private static final Map<String, Class<?>> PRIMITIVE_TYPE_NAME_MAP = new HashMap<String, Class<?>>(32);\n-    /**\n-     * Map with primitive wrapper type as key and corresponding primitive type\n-     * as value, for example: Integer.class -> int.class.\n-     */\n-    private static final Map<Class<?>, Class<?>> PRIMITIVE_WRAPPER_TYPE_MAP = new HashMap<Class<?>, Class<?>>(16);\n-    private static final char PACKAGE_SEPARATOR_CHAR = '.';\n-\n-    static {\n-        PRIMITIVE_WRAPPER_TYPE_MAP.put(Boolean.class, boolean.class);\n-        PRIMITIVE_WRAPPER_TYPE_MAP.put(Byte.class, byte.class);\n-        PRIMITIVE_WRAPPER_TYPE_MAP.put(Character.class, char.class);\n-        PRIMITIVE_WRAPPER_TYPE_MAP.put(Double.class, double.class);\n-        PRIMITIVE_WRAPPER_TYPE_MAP.put(Float.class, float.class);\n-        PRIMITIVE_WRAPPER_TYPE_MAP.put(Integer.class, int.class);\n-        PRIMITIVE_WRAPPER_TYPE_MAP.put(Long.class, long.class);\n-        PRIMITIVE_WRAPPER_TYPE_MAP.put(Short.class, short.class);\n-\n-        Set<Class<?>> primitiveTypeNames = new HashSet<>(32);\n-        primitiveTypeNames.addAll(PRIMITIVE_WRAPPER_TYPE_MAP.values());\n-        primitiveTypeNames.addAll(Arrays\n-                .asList(boolean[].class, byte[].class, char[].class, double[].class,\n-                        float[].class, int[].class, long[].class, short[].class));\n-        for (Class<?> primitiveTypeName : primitiveTypeNames) {\n-            PRIMITIVE_TYPE_NAME_MAP.put(primitiveTypeName.getName(), primitiveTypeName);\n-        }\n-    }\n-\n-    public static Class<?> forNameWithThreadContextClassLoader(String name)\n-            throws ClassNotFoundException {\n-        return forName(name, Thread.currentThread().getContextClassLoader());\n-    }\n-\n-    public static Class<?> forNameWithCallerClassLoader(String name, Class<?> caller)\n-            throws ClassNotFoundException {\n-        return forName(name, caller.getClassLoader());\n-    }\n-\n-    public static ClassLoader getCallerClassLoader(Class<?> caller) {\n-        return caller.getClassLoader();\n-    }\n-\n-    /**\n-     * get class loader\n-     *\n-     * @param clazz\n-     * @return class loader\n-     */\n-    public static ClassLoader getClassLoader(Class<?> clazz) {\n-        ClassLoader cl = null;\n-        try {\n-            cl = Thread.currentThread().getContextClassLoader();\n-        } catch (Throwable ex) {\n-            // Cannot access thread context ClassLoader - falling back to system class loader...\n-        }\n-        if (cl == null) {\n-            // No thread context class loader -> use class loader of this class.\n-            cl = clazz.getClassLoader();\n-            if (cl == null) {\n-                // getClassLoader() returning null indicates the bootstrap ClassLoader\n-                try {\n-                    cl = ClassLoader.getSystemClassLoader();\n-                } catch (Throwable ex) {\n-                    // Cannot access system ClassLoader - oh well, maybe the caller can live with null...\n-                }\n-            }\n-        }\n-\n-        return cl;\n-    }\n-\n-    /**\n-     * Return the default ClassLoader to use: typically the thread context\n-     * ClassLoader, if available; the ClassLoader that loaded the ClassUtils\n-     * class will be used as fallback.\n-     * <p>\n-     * Call this method if you intend to use the thread context ClassLoader in a\n-     * scenario where you absolutely need a non-null ClassLoader reference: for\n-     * example, for class path resource loading (but not necessarily for\n-     * <code>Class.forName</code>, which accepts a <code>null</code> ClassLoader\n-     * reference as well).\n-     *\n-     * @return the default ClassLoader (never <code>null</code>)\n-     * @see java.lang.Thread#getContextClassLoader()\n-     */\n-    public static ClassLoader getClassLoader() {\n-        return getClassLoader(ClassUtils.class);\n-    }\n-\n-    /**\n-     * Same as <code>Class.forName()</code>, except that it works for primitive\n-     * types.\n-     */\n-    public static Class<?> forName(String name) throws ClassNotFoundException {\n-        return forName(name, getClassLoader());\n-    }\n-\n-    /**\n-     * Replacement for <code>Class.forName()</code> that also returns Class\n-     * instances for primitives (like \"int\") and array class names (like\n-     * \"String[]\").\n-     *\n-     * @param name        the name of the Class\n-     * @param classLoader the class loader to use (may be <code>null</code>,\n-     *                    which indicates the default class loader)\n-     * @return Class instance for the supplied name\n-     * @throws ClassNotFoundException if the class was not found\n-     * @throws LinkageError           if the class file could not be loaded\n-     * @see Class#forName(String, boolean, ClassLoader)\n-     */\n-    public static Class<?> forName(String name, ClassLoader classLoader)\n-            throws ClassNotFoundException, LinkageError {\n-\n-        Class<?> clazz = resolvePrimitiveClassName(name);\n-        if (clazz != null) {\n-            return clazz;\n-        }\n-\n-        // \"java.lang.String[]\" style arrays\n-        if (name.endsWith(ARRAY_SUFFIX)) {\n-            String elementClassName = name.substring(0, name.length() - ARRAY_SUFFIX.length());\n-            Class<?> elementClass = forName(elementClassName, classLoader);\n-            return Array.newInstance(elementClass, 0).getClass();\n-        }\n-\n-        // \"[Ljava.lang.String;\" style arrays\n-        int internalArrayMarker = name.indexOf(INTERNAL_ARRAY_PREFIX);\n-        if (internalArrayMarker != -1 && name.endsWith(\";\")) {\n-            String elementClassName = null;\n-            if (internalArrayMarker == 0) {\n-                elementClassName = name\n-                        .substring(INTERNAL_ARRAY_PREFIX.length(), name.length() - 1);\n-            } else if (name.startsWith(\"[\")) {\n-                elementClassName = name.substring(1);\n-            }\n-            Class<?> elementClass = forName(elementClassName, classLoader);\n-            return Array.newInstance(elementClass, 0).getClass();\n-        }\n-\n-        ClassLoader classLoaderToUse = classLoader;\n-        if (classLoaderToUse == null) {\n-            classLoaderToUse = getClassLoader();\n-        }\n-        return classLoaderToUse.loadClass(name);\n-    }\n-\n-    /**\n-     * Resolve the given class name as primitive class, if appropriate,\n-     * according to the JVM's naming rules for primitive classes.\n-     * <p>\n-     * Also supports the JVM's internal class names for primitive arrays. Does\n-     * <i>not</i> support the \"[]\" suffix notation for primitive arrays; this is\n-     * only supported by {@link #forName}.\n-     *\n-     * @param name the name of the potentially primitive class\n-     * @return the primitive class, or <code>null</code> if the name does not\n-     * denote a primitive class or primitive array class\n-     */\n-    public static Class<?> resolvePrimitiveClassName(String name) {\n-        Class<?> result = null;\n-        // Most class names will be quite long, considering that they\n-        // SHOULD sit in a package, so a length check is worthwhile.\n-        if (name != null && name.length() <= 8) {\n-            // Could be a primitive - likely.\n-            result = (Class<?>) PRIMITIVE_TYPE_NAME_MAP.get(name);\n-        }\n-        return result;\n-    }\n-\n-    public static String toShortString(Object obj) {\n-        if (obj == null) {\n-            return \"null\";\n-        }\n-        return obj.getClass().getSimpleName() + \"@\" + System.identityHashCode(obj);\n-\n-    }\n-\n-    public static String simpleClassName(Class<?> clazz) {\n-        if (clazz == null) {\n-            throw new NullPointerException(\"clazz\");\n-        }\n-        String className = clazz.getName();\n-        final int lastDotIdx = className.lastIndexOf(PACKAGE_SEPARATOR_CHAR);\n-        if (lastDotIdx > -1) {\n-            return className.substring(lastDotIdx + 1);\n-        }\n-        return className;\n-    }\n-\n-\n-    /**\n-     * The specified type is primitive type or simple type\n-     *\n-     * @param type the type to test\n-     * @return\n-     * @deprecated as 2.7.6, use {@link Class#isPrimitive()} plus {@link #isSimpleType(Class)} instead\n-     */\n-    public static boolean isPrimitive(Class<?> type) {\n-        return type != null && (type.isPrimitive() || isSimpleType(type));\n-    }\n-\n-    /**\n-     * The specified type is simple type or not\n-     *\n-     * @param type the type to test\n-     * @return if <code>type</code> is one element of {@link #SIMPLE_TYPES}, return <code>true</code>, or <code>false</code>\n-     * @see #SIMPLE_TYPES\n-     * @since 2.7.6\n-     */\n-    public static boolean isSimpleType(Class<?> type) {\n-        return SIMPLE_TYPES.contains(type);\n-    }\n-\n-    public static Object convertPrimitive(Class<?> type, String value) {\n-        if (value == null) {\n-            return null;\n-        } else if (type == char.class || type == Character.class) {\n-            return value.length() > 0 ? value.charAt(0) : '\\0';\n-        } else if (type == boolean.class || type == Boolean.class) {\n-            return Boolean.valueOf(value);\n-        }\n-        try {\n-            if (type == byte.class || type == Byte.class) {\n-                return Byte.valueOf(value);\n-            } else if (type == short.class || type == Short.class) {\n-                return Short.valueOf(value);\n-            } else if (type == int.class || type == Integer.class) {\n-                return Integer.valueOf(value);\n-            } else if (type == long.class || type == Long.class) {\n-                return Long.valueOf(value);\n-            } else if (type == float.class || type == Float.class) {\n-                return Float.valueOf(value);\n-            } else if (type == double.class || type == Double.class) {\n-                return Double.valueOf(value);\n-            }\n-        } catch (NumberFormatException e) {\n-            return null;\n-        }\n-        return value;\n-    }\n-\n-\n-    /**\n-     * We only check boolean value at this moment.\n-     *\n-     * @param type\n-     * @param value\n-     * @return\n-     */\n-    public static boolean isTypeMatch(Class<?> type, String value) {\n-        if ((type == boolean.class || type == Boolean.class)\n-                && !(\"true\".equals(value) || \"false\".equals(value))) {\n-            return false;\n-        }\n-        return true;\n-    }\n-\n-    /**\n-     * Get all super classes from the specified type\n-     *\n-     * @param type         the specified type\n-     * @param classFilters the filters for classes\n-     * @return non-null read-only {@link Set}\n-     * @since 2.7.6\n-     */\n-    public static Set<Class<?>> getAllSuperClasses(Class<?> type, Predicate<Class<?>>... classFilters) {\n-\n-        Set<Class<?>> allSuperClasses = new LinkedHashSet<>();\n-\n-        Class<?> superClass = type.getSuperclass();\n-        while (superClass != null) {\n-            // add current super class\n-            allSuperClasses.add(superClass);\n-            superClass = superClass.getSuperclass();\n-        }\n-\n-        return unmodifiableSet(filterAll(allSuperClasses, classFilters));\n-    }\n-\n-    /**\n-     * Get all interfaces from the specified type\n-     *\n-     * @param type             the specified type\n-     * @param interfaceFilters the filters for interfaces\n-     * @return non-null read-only {@link Set}\n-     * @since 2.7.6\n-     */\n-    public static Set<Class<?>> getAllInterfaces(Class<?> type, Predicate<Class<?>>... interfaceFilters) {\n-        if (type == null || type.isPrimitive()) {\n-            return emptySet();\n-        }\n-\n-        Set<Class<?>> allInterfaces = new LinkedHashSet<>();\n-        Set<Class<?>> resolved = new LinkedHashSet<>();\n-        Queue<Class<?>> waitResolve = new LinkedList<>();\n-\n-        resolved.add(type);\n-        Class<?> clazz = type;\n-        while (clazz != null) {\n-\n-            Class<?>[] interfaces = clazz.getInterfaces();\n-\n-            if (isNotEmpty(interfaces)) {\n-                // add current interfaces\n-                Arrays.stream(interfaces)\n-                        .filter(resolved::add)\n-                        .forEach(cls -> {\n-                            allInterfaces.add(cls);\n-                            waitResolve.add(cls);\n-                        });\n-            }\n-\n-            // add all super classes to waitResolve\n-            getAllSuperClasses(clazz)\n-                    .stream()\n-                    .filter(resolved::add)\n-                    .forEach(waitResolve::add);\n-\n-            clazz = waitResolve.poll();\n-        }\n-\n-        return filterAll(allInterfaces, interfaceFilters);\n-    }\n-\n-    /**\n-     * Get all inherited types from the specified type\n-     *\n-     * @param type        the specified type\n-     * @param typeFilters the filters for types\n-     * @return non-null read-only {@link Set}\n-     * @since 2.7.6\n-     */\n-    public static Set<Class<?>> getAllInheritedTypes(Class<?> type, Predicate<Class<?>>... typeFilters) {\n-        // Add all super classes\n-        Set<Class<?>> types = new LinkedHashSet<>(getAllSuperClasses(type, typeFilters));\n-        // Add all interface classes\n-        types.addAll(getAllInterfaces(type, typeFilters));\n-        return unmodifiableSet(types);\n-    }\n-\n-\n-    /**\n-     * the semantics is same as {@link Class#isAssignableFrom(Class)}\n-     *\n-     * @param superType  the super type\n-     * @param targetType the target type\n-     * @return see {@link Class#isAssignableFrom(Class)}\n-     * @since 2.7.6\n-     */\n-    public static boolean isAssignableFrom(Class<?> superType, Class<?> targetType) {\n-        // any argument is null\n-        if (superType == null || targetType == null) {\n-            return false;\n-        }\n-        // equals\n-        if (Objects.equals(superType, targetType)) {\n-            return true;\n-        }\n-        // isAssignableFrom\n-        return superType.isAssignableFrom(targetType);\n-    }\n-\n-    /**\n-     * Test the specified class name is present in the {@link ClassLoader}\n-     *\n-     * @param className   the name of {@link Class}\n-     * @param classLoader {@link ClassLoader}\n-     * @return If found, return <code>true</code>\n-     * @since 2.7.6\n-     */\n-    public static boolean isPresent(String className, ClassLoader classLoader) {\n-        try {\n-            forName(className, classLoader);\n-        } catch (Throwable ignored) { // Ignored\n-            return false;\n-        }\n-        return true;\n-    }\n-\n-    /**\n-     * Resolve the {@link Class} by the specified name and {@link ClassLoader}\n-     *\n-     * @param className   the name of {@link Class}\n-     * @param classLoader {@link ClassLoader}\n-     * @return If can't be resolved , return <code>null</code>\n-     * @since 2.7.6\n-     */\n-    public static Class<?> resolveClass(String className, ClassLoader classLoader) {\n-        Class<?> targetClass = null;\n-        try {\n-            targetClass = forName(className, classLoader);\n-        } catch (Throwable ignored) { // Ignored\n-        }\n-        return targetClass;\n-    }\n-\n-    /**\n-     * Is generic class or not?\n-     *\n-     * @param type the target type\n-     * @return if the target type is not null or <code>void</code> or Void.class, return <code>true</code>, or false\n-     * @since 2.7.6\n-     */\n-    public static boolean isGenericClass(Class<?> type) {\n-        return type != null && !void.class.equals(type) && !Void.class.equals(type);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+\r\n+import java.lang.reflect.Array;\r\n+import java.math.BigDecimal;\r\n+import java.math.BigInteger;\r\n+import java.util.Arrays;\r\n+import java.util.Date;\r\n+import java.util.HashMap;\r\n+import java.util.HashSet;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.LinkedList;\r\n+import java.util.Map;\r\n+import java.util.Objects;\r\n+import java.util.Queue;\r\n+import java.util.Set;\r\n+import java.util.function.Predicate;\r\n+\r\n+import static java.util.Collections.emptySet;\r\n+import static java.util.Collections.unmodifiableSet;\r\n+import static org.apache.dubbo.common.function.Streams.filterAll;\r\n+import static org.apache.dubbo.common.utils.ArrayUtils.isNotEmpty;\r\n+import static org.apache.dubbo.common.utils.CollectionUtils.ofSet;\r\n+\r\n+public class ClassUtils {\r\n+    /**\r\n+     * Suffix for array class names: \"[]\"\r\n+     */\r\n+    public static final String ARRAY_SUFFIX = \"[]\";\r\n+    /**\r\n+     * Simple Types including:\r\n+     * <ul>\r\n+     *     <li>{@link Void}</li>\r\n+     *     <li>{@link Boolean}</li>\r\n+     *     <li>{@link Character}</li>\r\n+     *     <li>{@link Byte}</li>\r\n+     *     <li>{@link Integer}</li>\r\n+     *     <li>{@link Float}</li>\r\n+     *     <li>{@link Double}</li>\r\n+     *     <li>{@link String}</li>\r\n+     *     <li>{@link BigDecimal}</li>\r\n+     *     <li>{@link BigInteger}</li>\r\n+     *     <li>{@link Date}</li>\r\n+     *     <li>{@link Object}</li>\r\n+     * </ul>\r\n+     *\r\n+     * @see javax.management.openmbean.SimpleType\r\n+     * @since 2.7.6\r\n+     */\r\n+    public static final Set<Class<?>> SIMPLE_TYPES = ofSet(\r\n+            Void.class,\r\n+            Boolean.class,\r\n+            Character.class,\r\n+            Byte.class,\r\n+            Short.class,\r\n+            Integer.class,\r\n+            Long.class,\r\n+            Float.class,\r\n+            Double.class,\r\n+            String.class,\r\n+            BigDecimal.class,\r\n+            BigInteger.class,\r\n+            Date.class,\r\n+            Object.class\r\n+    );\r\n+    /**\r\n+     * Prefix for internal array class names: \"[L\"\r\n+     */\r\n+    private static final String INTERNAL_ARRAY_PREFIX = \"[L\";\r\n+    /**\r\n+     * Map with primitive type name as key and corresponding primitive type as\r\n+     * value, for example: \"int\" -> \"int.class\".\r\n+     */\r\n+    private static final Map<String, Class<?>> PRIMITIVE_TYPE_NAME_MAP = new HashMap<String, Class<?>>(32);\r\n+    /**\r\n+     * Map with primitive wrapper type as key and corresponding primitive type\r\n+     * as value, for example: Integer.class -> int.class.\r\n+     */\r\n+    private static final Map<Class<?>, Class<?>> PRIMITIVE_WRAPPER_TYPE_MAP = new HashMap<Class<?>, Class<?>>(16);\r\n+    private static final char PACKAGE_SEPARATOR_CHAR = '.';\r\n+\r\n+    static {\r\n+        PRIMITIVE_WRAPPER_TYPE_MAP.put(Boolean.class, boolean.class);\r\n+        PRIMITIVE_WRAPPER_TYPE_MAP.put(Byte.class, byte.class);\r\n+        PRIMITIVE_WRAPPER_TYPE_MAP.put(Character.class, char.class);\r\n+        PRIMITIVE_WRAPPER_TYPE_MAP.put(Double.class, double.class);\r\n+        PRIMITIVE_WRAPPER_TYPE_MAP.put(Float.class, float.class);\r\n+        PRIMITIVE_WRAPPER_TYPE_MAP.put(Integer.class, int.class);\r\n+        PRIMITIVE_WRAPPER_TYPE_MAP.put(Long.class, long.class);\r\n+        PRIMITIVE_WRAPPER_TYPE_MAP.put(Short.class, short.class);\r\n+\r\n+        Set<Class<?>> primitiveTypeNames = new HashSet<>(32);\r\n+        primitiveTypeNames.addAll(PRIMITIVE_WRAPPER_TYPE_MAP.values());\r\n+        primitiveTypeNames.addAll(Arrays\r\n+                .asList(boolean[].class, byte[].class, char[].class, double[].class,\r\n+                        float[].class, int[].class, long[].class, short[].class));\r\n+        for (Class<?> primitiveTypeName : primitiveTypeNames) {\r\n+            PRIMITIVE_TYPE_NAME_MAP.put(primitiveTypeName.getName(), primitiveTypeName);\r\n+        }\r\n+    }\r\n+\r\n+    public static Class<?> forNameWithThreadContextClassLoader(String name)\r\n+            throws ClassNotFoundException {\r\n+        return forName(name, Thread.currentThread().getContextClassLoader());\r\n+    }\r\n+\r\n+    public static Class<?> forNameWithCallerClassLoader(String name, Class<?> caller)\r\n+            throws ClassNotFoundException {\r\n+        return forName(name, caller.getClassLoader());\r\n+    }\r\n+\r\n+    public static ClassLoader getCallerClassLoader(Class<?> caller) {\r\n+        return caller.getClassLoader();\r\n+    }\r\n+\r\n+    /**\r\n+     * get class loader\r\n+     *\r\n+     * @param clazz\r\n+     * @return class loader\r\n+     */\r\n+    public static ClassLoader getClassLoader(Class<?> clazz) {\r\n+        ClassLoader cl = null;\r\n+        try {\r\n+            cl = Thread.currentThread().getContextClassLoader();\r\n+        } catch (Throwable ex) {\r\n+            // Cannot access thread context ClassLoader - falling back to system class loader...\r\n+        }\r\n+        if (cl == null) {\r\n+            // No thread context class loader -> use class loader of this class.\r\n+            cl = clazz.getClassLoader();\r\n+            if (cl == null) {\r\n+                // getClassLoader() returning null indicates the bootstrap ClassLoader\r\n+                try {\r\n+                    cl = ClassLoader.getSystemClassLoader();\r\n+                } catch (Throwable ex) {\r\n+                    // Cannot access system ClassLoader - oh well, maybe the caller can live with null...\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        return cl;\r\n+    }\r\n+\r\n+    /**\r\n+     * Return the default ClassLoader to use: typically the thread context\r\n+     * ClassLoader, if available; the ClassLoader that loaded the ClassUtils\r\n+     * class will be used as fallback.\r\n+     * <p>\r\n+     * Call this method if you intend to use the thread context ClassLoader in a\r\n+     * scenario where you absolutely need a non-null ClassLoader reference: for\r\n+     * example, for class path resource loading (but not necessarily for\r\n+     * <code>Class.forName</code>, which accepts a <code>null</code> ClassLoader\r\n+     * reference as well).\r\n+     *\r\n+     * @return the default ClassLoader (never <code>null</code>)\r\n+     * @see java.lang.Thread#getContextClassLoader()\r\n+     */\r\n+    public static ClassLoader getClassLoader() {\r\n+        return getClassLoader(ClassUtils.class);\r\n+    }\r\n+\r\n+    /**\r\n+     * Same as <code>Class.forName()</code>, except that it works for primitive\r\n+     * types.\r\n+     */\r\n+    public static Class<?> forName(String name) throws ClassNotFoundException {\r\n+        return forName(name, getClassLoader());\r\n+    }\r\n+\r\n+    /**\r\n+     * Replacement for <code>Class.forName()</code> that also returns Class\r\n+     * instances for primitives (like \"int\") and array class names (like\r\n+     * \"String[]\").\r\n+     *\r\n+     * @param name        the name of the Class\r\n+     * @param classLoader the class loader to use (may be <code>null</code>,\r\n+     *                    which indicates the default class loader)\r\n+     * @return Class instance for the supplied name\r\n+     * @throws ClassNotFoundException if the class was not found\r\n+     * @throws LinkageError           if the class file could not be loaded\r\n+     * @see Class#forName(String, boolean, ClassLoader)\r\n+     */\r\n+    public static Class<?> forName(String name, ClassLoader classLoader)\r\n+            throws ClassNotFoundException, LinkageError {\r\n+\r\n+        Class<?> clazz = resolvePrimitiveClassName(name);\r\n+        if (clazz != null) {\r\n+            return clazz;\r\n+        }\r\n+\r\n+        // \"java.lang.String[]\" style arrays\r\n+        if (name.endsWith(ARRAY_SUFFIX)) {\r\n+            String elementClassName = name.substring(0, name.length() - ARRAY_SUFFIX.length());\r\n+            Class<?> elementClass = forName(elementClassName, classLoader);\r\n+            return Array.newInstance(elementClass, 0).getClass();\r\n+        }\r\n+\r\n+        // \"[Ljava.lang.String;\" style arrays\r\n+        int internalArrayMarker = name.indexOf(INTERNAL_ARRAY_PREFIX);\r\n+        if (internalArrayMarker != -1 && name.endsWith(\";\")) {\r\n+            String elementClassName = null;\r\n+            if (internalArrayMarker == 0) {\r\n+                elementClassName = name\r\n+                        .substring(INTERNAL_ARRAY_PREFIX.length(), name.length() - 1);\r\n+            } else if (name.startsWith(\"[\")) {\r\n+                elementClassName = name.substring(1);\r\n+            }\r\n+            Class<?> elementClass = forName(elementClassName, classLoader);\r\n+            return Array.newInstance(elementClass, 0).getClass();\r\n+        }\r\n+\r\n+        ClassLoader classLoaderToUse = classLoader;\r\n+        if (classLoaderToUse == null) {\r\n+            classLoaderToUse = getClassLoader();\r\n+        }\r\n+        return classLoaderToUse.loadClass(name);\r\n+    }\r\n+\r\n+    /**\r\n+     * Resolve the given class name as primitive class, if appropriate,\r\n+     * according to the JVM's naming rules for primitive classes.\r\n+     * <p>\r\n+     * Also supports the JVM's internal class names for primitive arrays. Does\r\n+     * <i>not</i> support the \"[]\" suffix notation for primitive arrays; this is\r\n+     * only supported by {@link #forName}.\r\n+     *\r\n+     * @param name the name of the potentially primitive class\r\n+     * @return the primitive class, or <code>null</code> if the name does not\r\n+     * denote a primitive class or primitive array class\r\n+     */\r\n+    public static Class<?> resolvePrimitiveClassName(String name) {\r\n+        Class<?> result = null;\r\n+        // Most class names will be quite long, considering that they\r\n+        // SHOULD sit in a package, so a length check is worthwhile.\r\n+        if (name != null && name.length() <= 8) {\r\n+            // Could be a primitive - likely.\r\n+            result = (Class<?>) PRIMITIVE_TYPE_NAME_MAP.get(name);\r\n+        }\r\n+        return result;\r\n+    }\r\n+\r\n+    public static String toShortString(Object obj) {\r\n+        if (obj == null) {\r\n+            return \"null\";\r\n+        }\r\n+        return obj.getClass().getSimpleName() + \"@\" + System.identityHashCode(obj);\r\n+\r\n+    }\r\n+\r\n+    public static String simpleClassName(Class<?> clazz) {\r\n+        if (clazz == null) {\r\n+            throw new NullPointerException(\"clazz\");\r\n+        }\r\n+        String className = clazz.getName();\r\n+        final int lastDotIdx = className.lastIndexOf(PACKAGE_SEPARATOR_CHAR);\r\n+        if (lastDotIdx > -1) {\r\n+            return className.substring(lastDotIdx + 1);\r\n+        }\r\n+        return className;\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * The specified type is primitive type or simple type\r\n+     *\r\n+     * @param type the type to test\r\n+     * @return\r\n+     * @deprecated as 2.7.6, use {@link Class#isPrimitive()} plus {@link #isSimpleType(Class)} instead\r\n+     */\r\n+    public static boolean isPrimitive(Class<?> type) {\r\n+        return type != null && (type.isPrimitive() || isSimpleType(type));\r\n+    }\r\n+\r\n+    /**\r\n+     * The specified type is simple type or not\r\n+     *\r\n+     * @param type the type to test\r\n+     * @return if <code>type</code> is one element of {@link #SIMPLE_TYPES}, return <code>true</code>, or <code>false</code>\r\n+     * @see #SIMPLE_TYPES\r\n+     * @since 2.7.6\r\n+     */\r\n+    public static boolean isSimpleType(Class<?> type) {\r\n+        return SIMPLE_TYPES.contains(type);\r\n+    }\r\n+\r\n+    public static Object convertPrimitive(Class<?> type, String value) {\r\n+        if (value == null) {\r\n+            return null;\r\n+        } else if (type == char.class || type == Character.class) {\r\n+            return value.length() > 0 ? value.charAt(0) : '\\0';\r\n+        } else if (type == boolean.class || type == Boolean.class) {\r\n+            return Boolean.valueOf(value);\r\n+        }\r\n+        try {\r\n+            if (type == byte.class || type == Byte.class) {\r\n+                return Byte.valueOf(value);\r\n+            } else if (type == short.class || type == Short.class) {\r\n+                return Short.valueOf(value);\r\n+            } else if (type == int.class || type == Integer.class) {\r\n+                return Integer.valueOf(value);\r\n+            } else if (type == long.class || type == Long.class) {\r\n+                return Long.valueOf(value);\r\n+            } else if (type == float.class || type == Float.class) {\r\n+                return Float.valueOf(value);\r\n+            } else if (type == double.class || type == Double.class) {\r\n+                return Double.valueOf(value);\r\n+            }\r\n+        } catch (NumberFormatException e) {\r\n+            return null;\r\n+        }\r\n+        return value;\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * We only check boolean value at this moment.\r\n+     *\r\n+     * @param type\r\n+     * @param value\r\n+     * @return\r\n+     */\r\n+    public static boolean isTypeMatch(Class<?> type, String value) {\r\n+        if ((type == boolean.class || type == Boolean.class)\r\n+                && !(\"true\".equals(value) || \"false\".equals(value))) {\r\n+            return false;\r\n+        }\r\n+        return true;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all super classes from the specified type\r\n+     *\r\n+     * @param type         the specified type\r\n+     * @param classFilters the filters for classes\r\n+     * @return non-null read-only {@link Set}\r\n+     * @since 2.7.6\r\n+     */\r\n+    public static Set<Class<?>> getAllSuperClasses(Class<?> type, Predicate<Class<?>>... classFilters) {\r\n+\r\n+        Set<Class<?>> allSuperClasses = new LinkedHashSet<>();\r\n+\r\n+        Class<?> superClass = type.getSuperclass();\r\n+        while (superClass != null) {\r\n+            // add current super class\r\n+            allSuperClasses.add(superClass);\r\n+            superClass = superClass.getSuperclass();\r\n+        }\r\n+\r\n+        return unmodifiableSet(filterAll(allSuperClasses, classFilters));\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all interfaces from the specified type\r\n+     *\r\n+     * @param type             the specified type\r\n+     * @param interfaceFilters the filters for interfaces\r\n+     * @return non-null read-only {@link Set}\r\n+     * @since 2.7.6\r\n+     */\r\n+    public static Set<Class<?>> getAllInterfaces(Class<?> type, Predicate<Class<?>>... interfaceFilters) {\r\n+        if (type == null || type.isPrimitive()) {\r\n+            return emptySet();\r\n+        }\r\n+\r\n+        Set<Class<?>> allInterfaces = new LinkedHashSet<>();\r\n+        Set<Class<?>> resolved = new LinkedHashSet<>();\r\n+        Queue<Class<?>> waitResolve = new LinkedList<>();\r\n+\r\n+        resolved.add(type);\r\n+        Class<?> clazz = type;\r\n+        while (clazz != null) {\r\n+\r\n+            Class<?>[] interfaces = clazz.getInterfaces();\r\n+\r\n+            if (isNotEmpty(interfaces)) {\r\n+                // add current interfaces\r\n+                Arrays.stream(interfaces)\r\n+                        .filter(resolved::add)\r\n+                        .forEach(cls -> {\r\n+                            allInterfaces.add(cls);\r\n+                            waitResolve.add(cls);\r\n+                        });\r\n+            }\r\n+\r\n+            // add all super classes to waitResolve\r\n+            getAllSuperClasses(clazz)\r\n+                    .stream()\r\n+                    .filter(resolved::add)\r\n+                    .forEach(waitResolve::add);\r\n+\r\n+            clazz = waitResolve.poll();\r\n+        }\r\n+\r\n+        return filterAll(allInterfaces, interfaceFilters);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all inherited types from the specified type\r\n+     *\r\n+     * @param type        the specified type\r\n+     * @param typeFilters the filters for types\r\n+     * @return non-null read-only {@link Set}\r\n+     * @since 2.7.6\r\n+     */\r\n+    public static Set<Class<?>> getAllInheritedTypes(Class<?> type, Predicate<Class<?>>... typeFilters) {\r\n+        // Add all super classes\r\n+        Set<Class<?>> types = new LinkedHashSet<>(getAllSuperClasses(type, typeFilters));\r\n+        // Add all interface classes\r\n+        types.addAll(getAllInterfaces(type, typeFilters));\r\n+        return unmodifiableSet(types);\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * the semantics is same as {@link Class#isAssignableFrom(Class)}\r\n+     *\r\n+     * @param superType  the super type\r\n+     * @param targetType the target type\r\n+     * @return see {@link Class#isAssignableFrom(Class)}\r\n+     * @since 2.7.6\r\n+     */\r\n+    public static boolean isAssignableFrom(Class<?> superType, Class<?> targetType) {\r\n+        // any argument is null\r\n+        if (superType == null || targetType == null) {\r\n+            return false;\r\n+        }\r\n+        // equals\r\n+        if (Objects.equals(superType, targetType)) {\r\n+            return true;\r\n+        }\r\n+        // isAssignableFrom\r\n+        return superType.isAssignableFrom(targetType);\r\n+    }\r\n+\r\n+    /**\r\n+     * Test the specified class name is present in the {@link ClassLoader}\r\n+     *\r\n+     * @param className   the name of {@link Class}\r\n+     * @param classLoader {@link ClassLoader}\r\n+     * @return If found, return <code>true</code>\r\n+     * @since 2.7.6\r\n+     */\r\n+    public static boolean isPresent(String className, ClassLoader classLoader) {\r\n+        try {\r\n+            forName(className, classLoader);\r\n+        } catch (Throwable ignored) { // Ignored\r\n+            return false;\r\n+        }\r\n+        return true;\r\n+    }\r\n+\r\n+    /**\r\n+     * Resolve the {@link Class} by the specified name and {@link ClassLoader}\r\n+     *\r\n+     * @param className   the name of {@link Class}\r\n+     * @param classLoader {@link ClassLoader}\r\n+     * @return If can't be resolved , return <code>null</code>\r\n+     * @since 2.7.6\r\n+     */\r\n+    public static Class<?> resolveClass(String className, ClassLoader classLoader) {\r\n+        Class<?> targetClass = null;\r\n+        try {\r\n+            targetClass = forName(className, classLoader);\r\n+        } catch (Throwable ignored) { // Ignored\r\n+        }\r\n+        return targetClass;\r\n+    }\r\n+\r\n+    /**\r\n+     * Is generic class or not?\r\n+     *\r\n+     * @param type the target type\r\n+     * @return if the target type is not null or <code>void</code> or Void.class, return <code>true</code>, or false\r\n+     * @since 2.7.6\r\n+     */\r\n+    public static boolean isGenericClass(Class<?> type) {\r\n+        return type != null && !void.class.equals(type) && !Void.class.equals(type);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/CompatibleTypeUtils.java", "source2": "org/apache/dubbo/common/utils/CompatibleTypeUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,229 +1,229 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-import java.lang.reflect.Array;\n-import java.math.BigDecimal;\n-import java.math.BigInteger;\n-import java.text.ParseException;\n-import java.text.SimpleDateFormat;\n-import java.time.LocalDateTime;\n-import java.util.ArrayList;\n-import java.util.Collection;\n-import java.util.Date;\n-import java.util.HashSet;\n-import java.util.List;\n-import java.util.Set;\n-\n-public class CompatibleTypeUtils {\n-\n-    private static final String DATE_FORMAT = \"yyyy-MM-dd HH:mm:ss\";\n-\n-    private CompatibleTypeUtils() {\n-    }\n-\n-    /**\n-     * Compatible type convert. Null value is allowed to pass in. If no conversion is needed, then the original value\n-     * will be returned.\n-     * <p>\n-     * Supported compatible type conversions include (primary types and corresponding wrappers are not listed):\n-     * <ul>\n-     * <li> String -> char, enum, Date\n-     * <li> byte, short, int, long -> byte, short, int, long\n-     * <li> float, double -> float, double\n-     * </ul>\n-     */\n-    @SuppressWarnings({\"unchecked\", \"rawtypes\"})\n-    public static Object compatibleTypeConvert(Object value, Class<?> type) {\n-        if (value == null || type == null || type.isAssignableFrom(value.getClass())) {\n-            return value;\n-        }\n-\n-        if (value instanceof String) {\n-            String string = (String) value;\n-            if (char.class.equals(type) || Character.class.equals(type)) {\n-                if (string.length() != 1) {\n-                    throw new IllegalArgumentException(String.format(\"CAN NOT convert String(%s) to char!\" +\n-                            \" when convert String to char, the String MUST only 1 char.\", string));\n-                }\n-                return string.charAt(0);\n-            }\n-            if (type.isEnum()) {\n-                return Enum.valueOf((Class<Enum>) type, string);\n-            }\n-            if (type == BigInteger.class) {\n-                return new BigInteger(string);\n-            }\n-            if (type == BigDecimal.class) {\n-                return new BigDecimal(string);\n-            }\n-            if (type == Short.class || type == short.class) {\n-                return new Short(string);\n-            }\n-            if (type == Integer.class || type == int.class) {\n-                return new Integer(string);\n-            }\n-            if (type == Long.class || type == long.class) {\n-                return new Long(string);\n-            }\n-            if (type == Double.class || type == double.class) {\n-                return new Double(string);\n-            }\n-            if (type == Float.class || type == float.class) {\n-                return new Float(string);\n-            }\n-            if (type == Byte.class || type == byte.class) {\n-                return new Byte(string);\n-            }\n-            if (type == Boolean.class || type == boolean.class) {\n-                return Boolean.valueOf(string);\n-            }\n-            if (type == Date.class || type == java.sql.Date.class || type == java.sql.Timestamp.class\n-                    || type == java.sql.Time.class) {\n-                try {\n-                    Date date = new SimpleDateFormat(DATE_FORMAT).parse(string);\n-                    if (type == java.sql.Date.class) {\n-                        return new java.sql.Date(date.getTime());\n-                    }\n-                    if (type == java.sql.Timestamp.class) {\n-                        return new java.sql.Timestamp(date.getTime());\n-                    }\n-                    if (type == java.sql.Time.class) {\n-                        return new java.sql.Time(date.getTime());\n-                    }\n-                    return date;\n-                } catch (ParseException e) {\n-                    throw new IllegalStateException(\"Failed to parse date \" + value + \" by format \"\n-                            + DATE_FORMAT + \", cause: \" + e.getMessage(), e);\n-                }\n-            }\n-            if (type == java.time.LocalDateTime.class) {\n-                if (StringUtils.isEmpty(string)) {\n-                    return null;\n-                }\n-                return LocalDateTime.parse(string);\n-            }\n-            if (type == java.time.LocalDate.class) {\n-                if (StringUtils.isEmpty(string)) {\n-                    return null;\n-                }\n-                return java.time.LocalDate.parse(string);\n-            }\n-            if (type == java.time.LocalTime.class) {\n-                if (StringUtils.isEmpty(string)) {\n-                    return null;\n-                }\n-                return LocalDateTime.parse(string).toLocalTime();\n-            }\n-            if (type == Class.class) {\n-                try {\n-                    return ReflectUtils.name2class(string);\n-                } catch (ClassNotFoundException e) {\n-                    throw new RuntimeException(e.getMessage(), e);\n-                }\n-            }\n-            if (char[].class.equals(type)) {\n-                // Process string to char array for generic invoke\n-                // See\n-                // - https://github.com/apache/dubbo/issues/2003\n-                int len = string.length();\n-                char[] chars = new char[len];\n-                string.getChars(0, len, chars, 0);\n-                return chars;\n-            }\n-        }\n-        if (value instanceof Number) {\n-            Number number = (Number) value;\n-            if (type == byte.class || type == Byte.class) {\n-                return number.byteValue();\n-            }\n-            if (type == short.class || type == Short.class) {\n-                return number.shortValue();\n-            }\n-            if (type == int.class || type == Integer.class) {\n-                return number.intValue();\n-            }\n-            if (type == long.class || type == Long.class) {\n-                return number.longValue();\n-            }\n-            if (type == float.class || type == Float.class) {\n-                return number.floatValue();\n-            }\n-            if (type == double.class || type == Double.class) {\n-                return number.doubleValue();\n-            }\n-            if (type == BigInteger.class) {\n-                return BigInteger.valueOf(number.longValue());\n-            }\n-            if (type == BigDecimal.class) {\n-                return BigDecimal.valueOf(number.doubleValue());\n-            }\n-            if (type == Date.class) {\n-                return new Date(number.longValue());\n-            }\n-            if (type == boolean.class || type == Boolean.class) {\n-                return 0 != number.intValue();\n-            }\n-        }\n-        if (value instanceof Collection) {\n-            Collection collection = (Collection) value;\n-            if (type.isArray()) {\n-                int length = collection.size();\n-                Object array = Array.newInstance(type.getComponentType(), length);\n-                int i = 0;\n-                for (Object item : collection) {\n-                    Array.set(array, i++, item);\n-                }\n-                return array;\n-            }\n-            if (!type.isInterface()) {\n-                try {\n-                    Collection result = (Collection) type.newInstance();\n-                    result.addAll(collection);\n-                    return result;\n-                } catch (Throwable ignored) {\n-                }\n-            }\n-            if (type == List.class) {\n-                return new ArrayList<Object>(collection);\n-            }\n-            if (type == Set.class) {\n-                return new HashSet<Object>(collection);\n-            }\n-        }\n-        if (value.getClass().isArray() && Collection.class.isAssignableFrom(type)) {\n-            Collection collection;\n-            if (!type.isInterface()) {\n-                try {\n-                    collection = (Collection) type.newInstance();\n-                } catch (Throwable e) {\n-                    collection = new ArrayList<Object>();\n-                }\n-            } else if (type == Set.class) {\n-                collection = new HashSet<Object>();\n-            } else {\n-                collection = new ArrayList<Object>();\n-            }\n-            int length = Array.getLength(value);\n-            for (int i = 0; i < length; i++) {\n-                collection.add(Array.get(value, i));\n-            }\n-            return collection;\n-        }\n-        return value;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import java.lang.reflect.Array;\r\n+import java.math.BigDecimal;\r\n+import java.math.BigInteger;\r\n+import java.text.ParseException;\r\n+import java.text.SimpleDateFormat;\r\n+import java.time.LocalDateTime;\r\n+import java.util.ArrayList;\r\n+import java.util.Collection;\r\n+import java.util.Date;\r\n+import java.util.HashSet;\r\n+import java.util.List;\r\n+import java.util.Set;\r\n+\r\n+public class CompatibleTypeUtils {\r\n+\r\n+    private static final String DATE_FORMAT = \"yyyy-MM-dd HH:mm:ss\";\r\n+\r\n+    private CompatibleTypeUtils() {\r\n+    }\r\n+\r\n+    /**\r\n+     * Compatible type convert. Null value is allowed to pass in. If no conversion is needed, then the original value\r\n+     * will be returned.\r\n+     * <p>\r\n+     * Supported compatible type conversions include (primary types and corresponding wrappers are not listed):\r\n+     * <ul>\r\n+     * <li> String -> char, enum, Date\r\n+     * <li> byte, short, int, long -> byte, short, int, long\r\n+     * <li> float, double -> float, double\r\n+     * </ul>\r\n+     */\r\n+    @SuppressWarnings({\"unchecked\", \"rawtypes\"})\r\n+    public static Object compatibleTypeConvert(Object value, Class<?> type) {\r\n+        if (value == null || type == null || type.isAssignableFrom(value.getClass())) {\r\n+            return value;\r\n+        }\r\n+\r\n+        if (value instanceof String) {\r\n+            String string = (String) value;\r\n+            if (char.class.equals(type) || Character.class.equals(type)) {\r\n+                if (string.length() != 1) {\r\n+                    throw new IllegalArgumentException(String.format(\"CAN NOT convert String(%s) to char!\" +\r\n+                            \" when convert String to char, the String MUST only 1 char.\", string));\r\n+                }\r\n+                return string.charAt(0);\r\n+            }\r\n+            if (type.isEnum()) {\r\n+                return Enum.valueOf((Class<Enum>) type, string);\r\n+            }\r\n+            if (type == BigInteger.class) {\r\n+                return new BigInteger(string);\r\n+            }\r\n+            if (type == BigDecimal.class) {\r\n+                return new BigDecimal(string);\r\n+            }\r\n+            if (type == Short.class || type == short.class) {\r\n+                return new Short(string);\r\n+            }\r\n+            if (type == Integer.class || type == int.class) {\r\n+                return new Integer(string);\r\n+            }\r\n+            if (type == Long.class || type == long.class) {\r\n+                return new Long(string);\r\n+            }\r\n+            if (type == Double.class || type == double.class) {\r\n+                return new Double(string);\r\n+            }\r\n+            if (type == Float.class || type == float.class) {\r\n+                return new Float(string);\r\n+            }\r\n+            if (type == Byte.class || type == byte.class) {\r\n+                return new Byte(string);\r\n+            }\r\n+            if (type == Boolean.class || type == boolean.class) {\r\n+                return Boolean.valueOf(string);\r\n+            }\r\n+            if (type == Date.class || type == java.sql.Date.class || type == java.sql.Timestamp.class\r\n+                    || type == java.sql.Time.class) {\r\n+                try {\r\n+                    Date date = new SimpleDateFormat(DATE_FORMAT).parse(string);\r\n+                    if (type == java.sql.Date.class) {\r\n+                        return new java.sql.Date(date.getTime());\r\n+                    }\r\n+                    if (type == java.sql.Timestamp.class) {\r\n+                        return new java.sql.Timestamp(date.getTime());\r\n+                    }\r\n+                    if (type == java.sql.Time.class) {\r\n+                        return new java.sql.Time(date.getTime());\r\n+                    }\r\n+                    return date;\r\n+                } catch (ParseException e) {\r\n+                    throw new IllegalStateException(\"Failed to parse date \" + value + \" by format \"\r\n+                            + DATE_FORMAT + \", cause: \" + e.getMessage(), e);\r\n+                }\r\n+            }\r\n+            if (type == java.time.LocalDateTime.class) {\r\n+                if (StringUtils.isEmpty(string)) {\r\n+                    return null;\r\n+                }\r\n+                return LocalDateTime.parse(string);\r\n+            }\r\n+            if (type == java.time.LocalDate.class) {\r\n+                if (StringUtils.isEmpty(string)) {\r\n+                    return null;\r\n+                }\r\n+                return java.time.LocalDate.parse(string);\r\n+            }\r\n+            if (type == java.time.LocalTime.class) {\r\n+                if (StringUtils.isEmpty(string)) {\r\n+                    return null;\r\n+                }\r\n+                return LocalDateTime.parse(string).toLocalTime();\r\n+            }\r\n+            if (type == Class.class) {\r\n+                try {\r\n+                    return ReflectUtils.name2class(string);\r\n+                } catch (ClassNotFoundException e) {\r\n+                    throw new RuntimeException(e.getMessage(), e);\r\n+                }\r\n+            }\r\n+            if (char[].class.equals(type)) {\r\n+                // Process string to char array for generic invoke\r\n+                // See\r\n+                // - https://github.com/apache/dubbo/issues/2003\r\n+                int len = string.length();\r\n+                char[] chars = new char[len];\r\n+                string.getChars(0, len, chars, 0);\r\n+                return chars;\r\n+            }\r\n+        }\r\n+        if (value instanceof Number) {\r\n+            Number number = (Number) value;\r\n+            if (type == byte.class || type == Byte.class) {\r\n+                return number.byteValue();\r\n+            }\r\n+            if (type == short.class || type == Short.class) {\r\n+                return number.shortValue();\r\n+            }\r\n+            if (type == int.class || type == Integer.class) {\r\n+                return number.intValue();\r\n+            }\r\n+            if (type == long.class || type == Long.class) {\r\n+                return number.longValue();\r\n+            }\r\n+            if (type == float.class || type == Float.class) {\r\n+                return number.floatValue();\r\n+            }\r\n+            if (type == double.class || type == Double.class) {\r\n+                return number.doubleValue();\r\n+            }\r\n+            if (type == BigInteger.class) {\r\n+                return BigInteger.valueOf(number.longValue());\r\n+            }\r\n+            if (type == BigDecimal.class) {\r\n+                return BigDecimal.valueOf(number.doubleValue());\r\n+            }\r\n+            if (type == Date.class) {\r\n+                return new Date(number.longValue());\r\n+            }\r\n+            if (type == boolean.class || type == Boolean.class) {\r\n+                return 0 != number.intValue();\r\n+            }\r\n+        }\r\n+        if (value instanceof Collection) {\r\n+            Collection collection = (Collection) value;\r\n+            if (type.isArray()) {\r\n+                int length = collection.size();\r\n+                Object array = Array.newInstance(type.getComponentType(), length);\r\n+                int i = 0;\r\n+                for (Object item : collection) {\r\n+                    Array.set(array, i++, item);\r\n+                }\r\n+                return array;\r\n+            }\r\n+            if (!type.isInterface()) {\r\n+                try {\r\n+                    Collection result = (Collection) type.newInstance();\r\n+                    result.addAll(collection);\r\n+                    return result;\r\n+                } catch (Throwable ignored) {\r\n+                }\r\n+            }\r\n+            if (type == List.class) {\r\n+                return new ArrayList<Object>(collection);\r\n+            }\r\n+            if (type == Set.class) {\r\n+                return new HashSet<Object>(collection);\r\n+            }\r\n+        }\r\n+        if (value.getClass().isArray() && Collection.class.isAssignableFrom(type)) {\r\n+            Collection collection;\r\n+            if (!type.isInterface()) {\r\n+                try {\r\n+                    collection = (Collection) type.newInstance();\r\n+                } catch (Throwable e) {\r\n+                    collection = new ArrayList<Object>();\r\n+                }\r\n+            } else if (type == Set.class) {\r\n+                collection = new HashSet<Object>();\r\n+            } else {\r\n+                collection = new ArrayList<Object>();\r\n+            }\r\n+            int length = Array.getLength(value);\r\n+            for (int i = 0; i < length; i++) {\r\n+                collection.add(Array.get(value, i));\r\n+            }\r\n+            return collection;\r\n+        }\r\n+        return value;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/DefaultPage.java", "source2": "org/apache/dubbo/common/utils/DefaultPage.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,82 +1,82 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-import java.io.Serializable;\n-import java.util.List;\n-\n-/**\n- * The default implementation of {@link Page}\n- *\n- * @since 2.7.5\n- */\n-public class DefaultPage<T> implements Page<T>, Serializable {\n-\n-    private static final long serialVersionUID = 1099331838954070419L;\n-\n-    private final int requestOffset;\n-\n-    private final int pageSize;\n-\n-    private final int totalSize;\n-\n-    private final List<T> data;\n-\n-    private final int totalPages;\n-\n-    private final boolean hasNext;\n-\n-    public DefaultPage(int requestOffset, int pageSize, List<T> data, int totalSize) {\n-        this.requestOffset = requestOffset;\n-        this.pageSize = pageSize;\n-        this.data = data;\n-        this.totalSize = totalSize;\n-        int remain = totalSize % pageSize;\n-        this.totalPages = remain > 0 ? (totalSize / pageSize) + 1 : totalSize / pageSize;\n-        this.hasNext = totalSize - requestOffset - pageSize > 0;\n-    }\n-\n-    @Override\n-    public int getOffset() {\n-        return requestOffset;\n-    }\n-\n-    @Override\n-    public int getPageSize() {\n-        return pageSize;\n-    }\n-\n-    @Override\n-    public int getTotalSize() {\n-        return totalSize;\n-    }\n-\n-    @Override\n-    public int getTotalPages() {\n-        return totalPages;\n-    }\n-\n-    @Override\n-    public List<T> getData() {\n-        return data;\n-    }\n-\n-    @Override\n-    public boolean hasNext() {\n-        return hasNext;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import java.io.Serializable;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * The default implementation of {@link Page}\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class DefaultPage<T> implements Page<T>, Serializable {\r\n+\r\n+    private static final long serialVersionUID = 1099331838954070419L;\r\n+\r\n+    private final int requestOffset;\r\n+\r\n+    private final int pageSize;\r\n+\r\n+    private final int totalSize;\r\n+\r\n+    private final List<T> data;\r\n+\r\n+    private final int totalPages;\r\n+\r\n+    private final boolean hasNext;\r\n+\r\n+    public DefaultPage(int requestOffset, int pageSize, List<T> data, int totalSize) {\r\n+        this.requestOffset = requestOffset;\r\n+        this.pageSize = pageSize;\r\n+        this.data = data;\r\n+        this.totalSize = totalSize;\r\n+        int remain = totalSize % pageSize;\r\n+        this.totalPages = remain > 0 ? (totalSize / pageSize) + 1 : totalSize / pageSize;\r\n+        this.hasNext = totalSize - requestOffset - pageSize > 0;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getOffset() {\r\n+        return requestOffset;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getPageSize() {\r\n+        return pageSize;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getTotalSize() {\r\n+        return totalSize;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getTotalPages() {\r\n+        return totalPages;\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<T> getData() {\r\n+        return data;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean hasNext() {\r\n+        return hasNext;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/ExecutorUtil.java", "source2": "org/apache/dubbo/common/utils/ExecutorUtil.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,140 +1,140 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-\n-import java.util.concurrent.Executor;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.LinkedBlockingQueue;\n-import java.util.concurrent.ScheduledFuture;\n-import java.util.concurrent.ThreadPoolExecutor;\n-import java.util.concurrent.TimeUnit;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.THREAD_NAME_KEY;\n-\n-public class ExecutorUtil {\n-    private static final Logger logger = LoggerFactory.getLogger(ExecutorUtil.class);\n-    private static final ThreadPoolExecutor SHUTDOWN_EXECUTOR = new ThreadPoolExecutor(0, 1,\n-            0L, TimeUnit.MILLISECONDS,\n-            new LinkedBlockingQueue<Runnable>(100),\n-            new NamedThreadFactory(\"Close-ExecutorService-Timer\", true));\n-\n-    public static boolean isTerminated(Executor executor) {\n-        if (executor instanceof ExecutorService) {\n-            if (((ExecutorService) executor).isTerminated()) {\n-                return true;\n-            }\n-        }\n-        return false;\n-    }\n-\n-    /**\n-     * Use the shutdown pattern from:\n-     * https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html\n-     *\n-     * @param executor the Executor to shutdown\n-     * @param timeout  the timeout in milliseconds before termination\n-     */\n-    public static void gracefulShutdown(Executor executor, int timeout) {\n-        if (!(executor instanceof ExecutorService) || isTerminated(executor)) {\n-            return;\n-        }\n-        final ExecutorService es = (ExecutorService) executor;\n-        try {\n-            // Disable new tasks from being submitted\n-            es.shutdown();\n-        } catch (SecurityException | NullPointerException ex2) {\n-            return;\n-        }\n-        try {\n-            // Wait a while for existing tasks to terminate\n-            if (!es.awaitTermination(timeout, TimeUnit.MILLISECONDS)) {\n-                es.shutdownNow();\n-            }\n-        } catch (InterruptedException ex) {\n-            es.shutdownNow();\n-            Thread.currentThread().interrupt();\n-        }\n-        if (!isTerminated(es)) {\n-            newThreadToCloseExecutor(es);\n-        }\n-    }\n-\n-    public static void shutdownNow(Executor executor, final int timeout) {\n-        if (!(executor instanceof ExecutorService) || isTerminated(executor)) {\n-            return;\n-        }\n-        final ExecutorService es = (ExecutorService) executor;\n-        try {\n-            es.shutdownNow();\n-        } catch (SecurityException | NullPointerException ex2) {\n-            return;\n-        }\n-        try {\n-            es.awaitTermination(timeout, TimeUnit.MILLISECONDS);\n-        } catch (InterruptedException ex) {\n-            Thread.currentThread().interrupt();\n-        }\n-        if (!isTerminated(es)) {\n-            newThreadToCloseExecutor(es);\n-        }\n-    }\n-\n-    private static void newThreadToCloseExecutor(final ExecutorService es) {\n-        if (!isTerminated(es)) {\n-            SHUTDOWN_EXECUTOR.execute(new Runnable() {\n-                @Override\n-                public void run() {\n-                    try {\n-                        for (int i = 0; i < 1000; i++) {\n-                            es.shutdownNow();\n-                            if (es.awaitTermination(10, TimeUnit.MILLISECONDS)) {\n-                                break;\n-                            }\n-                        }\n-                    } catch (InterruptedException ex) {\n-                        Thread.currentThread().interrupt();\n-                    } catch (Throwable e) {\n-                        logger.warn(e.getMessage(), e);\n-                    }\n-                }\n-            });\n-        }\n-    }\n-\n-    /**\n-     * append thread name with url address\n-     *\n-     * @return new url with updated thread name\n-     */\n-    public static URL setThreadName(URL url, String defaultName) {\n-        String name = url.getParameter(THREAD_NAME_KEY, defaultName);\n-        name = name + \"-\" + url.getAddress();\n-        url = url.addParameter(THREAD_NAME_KEY, name);\n-        return url;\n-    }\n-\n-    public static void cancelScheduledFuture(ScheduledFuture<?> scheduledFuture) {\n-        ScheduledFuture<?> future = scheduledFuture;\n-        if (future != null && !future.isCancelled()) {\n-            future.cancel(true);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+\r\n+import java.util.concurrent.Executor;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.LinkedBlockingQueue;\r\n+import java.util.concurrent.ScheduledFuture;\r\n+import java.util.concurrent.ThreadPoolExecutor;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.THREAD_NAME_KEY;\r\n+\r\n+public class ExecutorUtil {\r\n+    private static final Logger logger = LoggerFactory.getLogger(ExecutorUtil.class);\r\n+    private static final ThreadPoolExecutor SHUTDOWN_EXECUTOR = new ThreadPoolExecutor(0, 1,\r\n+            0L, TimeUnit.MILLISECONDS,\r\n+            new LinkedBlockingQueue<Runnable>(100),\r\n+            new NamedThreadFactory(\"Close-ExecutorService-Timer\", true));\r\n+\r\n+    public static boolean isTerminated(Executor executor) {\r\n+        if (executor instanceof ExecutorService) {\r\n+            if (((ExecutorService) executor).isTerminated()) {\r\n+                return true;\r\n+            }\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    /**\r\n+     * Use the shutdown pattern from:\r\n+     * https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html\r\n+     *\r\n+     * @param executor the Executor to shutdown\r\n+     * @param timeout  the timeout in milliseconds before termination\r\n+     */\r\n+    public static void gracefulShutdown(Executor executor, int timeout) {\r\n+        if (!(executor instanceof ExecutorService) || isTerminated(executor)) {\r\n+            return;\r\n+        }\r\n+        final ExecutorService es = (ExecutorService) executor;\r\n+        try {\r\n+            // Disable new tasks from being submitted\r\n+            es.shutdown();\r\n+        } catch (SecurityException | NullPointerException ex2) {\r\n+            return;\r\n+        }\r\n+        try {\r\n+            // Wait a while for existing tasks to terminate\r\n+            if (!es.awaitTermination(timeout, TimeUnit.MILLISECONDS)) {\r\n+                es.shutdownNow();\r\n+            }\r\n+        } catch (InterruptedException ex) {\r\n+            es.shutdownNow();\r\n+            Thread.currentThread().interrupt();\r\n+        }\r\n+        if (!isTerminated(es)) {\r\n+            newThreadToCloseExecutor(es);\r\n+        }\r\n+    }\r\n+\r\n+    public static void shutdownNow(Executor executor, final int timeout) {\r\n+        if (!(executor instanceof ExecutorService) || isTerminated(executor)) {\r\n+            return;\r\n+        }\r\n+        final ExecutorService es = (ExecutorService) executor;\r\n+        try {\r\n+            es.shutdownNow();\r\n+        } catch (SecurityException | NullPointerException ex2) {\r\n+            return;\r\n+        }\r\n+        try {\r\n+            es.awaitTermination(timeout, TimeUnit.MILLISECONDS);\r\n+        } catch (InterruptedException ex) {\r\n+            Thread.currentThread().interrupt();\r\n+        }\r\n+        if (!isTerminated(es)) {\r\n+            newThreadToCloseExecutor(es);\r\n+        }\r\n+    }\r\n+\r\n+    private static void newThreadToCloseExecutor(final ExecutorService es) {\r\n+        if (!isTerminated(es)) {\r\n+            SHUTDOWN_EXECUTOR.execute(new Runnable() {\r\n+                @Override\r\n+                public void run() {\r\n+                    try {\r\n+                        for (int i = 0; i < 1000; i++) {\r\n+                            es.shutdownNow();\r\n+                            if (es.awaitTermination(10, TimeUnit.MILLISECONDS)) {\r\n+                                break;\r\n+                            }\r\n+                        }\r\n+                    } catch (InterruptedException ex) {\r\n+                        Thread.currentThread().interrupt();\r\n+                    } catch (Throwable e) {\r\n+                        logger.warn(e.getMessage(), e);\r\n+                    }\r\n+                }\r\n+            });\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * append thread name with url address\r\n+     *\r\n+     * @return new url with updated thread name\r\n+     */\r\n+    public static URL setThreadName(URL url, String defaultName) {\r\n+        String name = url.getParameter(THREAD_NAME_KEY, defaultName);\r\n+        name = name + \"-\" + url.getAddress();\r\n+        url = url.addParameter(THREAD_NAME_KEY, name);\r\n+        return url;\r\n+    }\r\n+\r\n+    public static void cancelScheduledFuture(ScheduledFuture<?> scheduledFuture) {\r\n+        ScheduledFuture<?> future = scheduledFuture;\r\n+        if (future != null && !future.isCancelled()) {\r\n+            future.cancel(true);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/FieldUtils.java", "source2": "org/apache/dubbo/common/utils/FieldUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,142 +1,142 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-import java.lang.reflect.Field;\n-\n-import static org.apache.dubbo.common.utils.ClassUtils.getAllInheritedTypes;\n-\n-/**\n- * The utilities class for Java Reflection {@link Field}\n- *\n- * @since 2.7.6\n- */\n-public interface FieldUtils {\n-\n-    /**\n-     * Like the {@link Class#getDeclaredField(String)} method without throwing any {@link Exception}\n-     *\n-     * @param declaredClass the declared class\n-     * @param fieldName     the name of {@link Field}\n-     * @return if can't be found, return <code>null</code>\n-     */\n-    static Field getDeclaredField(Class<?> declaredClass, String fieldName) {\n-        Field field = null;\n-        try {\n-            field = declaredClass.getDeclaredField(fieldName);\n-        } catch (NoSuchFieldException ignored) {\n-            field = null;\n-        }\n-        return field;\n-    }\n-\n-    /**\n-     * Find the {@link Field} by the name in the specified class and its inherited types\n-     *\n-     * @param declaredClass the declared class\n-     * @param fieldName     the name of {@link Field}\n-     * @return if can't be found, return <code>null</code>\n-     */\n-    static Field findField(Class<?> declaredClass, String fieldName) {\n-        Field field = getDeclaredField(declaredClass, fieldName);\n-        if (field != null) {\n-            return field;\n-        }\n-        for (Class superType : getAllInheritedTypes(declaredClass)) {\n-            field = getDeclaredField(superType, fieldName);\n-            if (field != null) {\n-                break;\n-            }\n-        }\n-        return field;\n-    }\n-\n-    /**\n-     * Find the {@link Field} by the name in the specified class and its inherited types\n-     *\n-     * @param object    the object whose field should be modified\n-     * @param fieldName the name of {@link Field}\n-     * @return if can't be found, return <code>null</code>\n-     */\n-    static Field findField(Object object, String fieldName) {\n-        return findField(object.getClass(), fieldName);\n-    }\n-\n-    /**\n-     * Get the value of the specified {@link Field}\n-     *\n-     * @param object    the object whose field should be modified\n-     * @param fieldName the name of {@link Field}\n-     * @return the value of  the specified {@link Field}\n-     */\n-    static Object getFieldValue(Object object, String fieldName) {\n-        return getFieldValue(object, findField(object, fieldName));\n-    }\n-\n-    /**\n-     * Get the value of the specified {@link Field}\n-     *\n-     * @param object the object whose field should be modified\n-     * @param field  {@link Field}\n-     * @return the value of  the specified {@link Field}\n-     */\n-    static <T> T getFieldValue(Object object, Field field) {\n-        Object value = null;\n-        try {\n-            ReflectUtils.makeAccessible(field);\n-            value = field.get(object);\n-        } catch (IllegalAccessException ignored) {\n-        } finally {\n-            ReflectUtils.makeAccessible(field);\n-        }\n-        return (T) value;\n-    }\n-\n-    /**\n-     * Set the value for the specified {@link Field}\n-     *\n-     * @param object    the object whose field should be modified\n-     * @param fieldName the name of {@link Field}\n-     * @param value     the value of field to be set\n-     * @return the previous value of the specified {@link Field}\n-     */\n-    static <T> T setFieldValue(Object object, String fieldName, T value) {\n-        return setFieldValue(object, findField(object, fieldName), value);\n-    }\n-\n-    /**\n-     * Set the value for the specified {@link Field}\n-     *\n-     * @param object the object whose field should be modified\n-     * @param field  {@link Field}\n-     * @param value  the value of field to be set\n-     * @return the previous value of the specified {@link Field}\n-     */\n-    static <T> T setFieldValue(Object object, Field field, T value) {\n-        Object previousValue = null;\n-        try {\n-            ReflectUtils.makeAccessible(field);\n-            previousValue = field.get(object);\n-            field.set(object, value);\n-        } catch (IllegalAccessException ignored) {\n-        } finally {\n-            ReflectUtils.makeAccessible(field);\n-        }\n-        return (T) previousValue;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import java.lang.reflect.Field;\r\n+\r\n+import static org.apache.dubbo.common.utils.ClassUtils.getAllInheritedTypes;\r\n+\r\n+/**\r\n+ * The utilities class for Java Reflection {@link Field}\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public interface FieldUtils {\r\n+\r\n+    /**\r\n+     * Like the {@link Class#getDeclaredField(String)} method without throwing any {@link Exception}\r\n+     *\r\n+     * @param declaredClass the declared class\r\n+     * @param fieldName     the name of {@link Field}\r\n+     * @return if can't be found, return <code>null</code>\r\n+     */\r\n+    static Field getDeclaredField(Class<?> declaredClass, String fieldName) {\r\n+        Field field = null;\r\n+        try {\r\n+            field = declaredClass.getDeclaredField(fieldName);\r\n+        } catch (NoSuchFieldException ignored) {\r\n+            field = null;\r\n+        }\r\n+        return field;\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the {@link Field} by the name in the specified class and its inherited types\r\n+     *\r\n+     * @param declaredClass the declared class\r\n+     * @param fieldName     the name of {@link Field}\r\n+     * @return if can't be found, return <code>null</code>\r\n+     */\r\n+    static Field findField(Class<?> declaredClass, String fieldName) {\r\n+        Field field = getDeclaredField(declaredClass, fieldName);\r\n+        if (field != null) {\r\n+            return field;\r\n+        }\r\n+        for (Class superType : getAllInheritedTypes(declaredClass)) {\r\n+            field = getDeclaredField(superType, fieldName);\r\n+            if (field != null) {\r\n+                break;\r\n+            }\r\n+        }\r\n+        return field;\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the {@link Field} by the name in the specified class and its inherited types\r\n+     *\r\n+     * @param object    the object whose field should be modified\r\n+     * @param fieldName the name of {@link Field}\r\n+     * @return if can't be found, return <code>null</code>\r\n+     */\r\n+    static Field findField(Object object, String fieldName) {\r\n+        return findField(object.getClass(), fieldName);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the value of the specified {@link Field}\r\n+     *\r\n+     * @param object    the object whose field should be modified\r\n+     * @param fieldName the name of {@link Field}\r\n+     * @return the value of  the specified {@link Field}\r\n+     */\r\n+    static Object getFieldValue(Object object, String fieldName) {\r\n+        return getFieldValue(object, findField(object, fieldName));\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the value of the specified {@link Field}\r\n+     *\r\n+     * @param object the object whose field should be modified\r\n+     * @param field  {@link Field}\r\n+     * @return the value of  the specified {@link Field}\r\n+     */\r\n+    static <T> T getFieldValue(Object object, Field field) {\r\n+        Object value = null;\r\n+        try {\r\n+            ReflectUtils.makeAccessible(field);\r\n+            value = field.get(object);\r\n+        } catch (IllegalAccessException ignored) {\r\n+        } finally {\r\n+            ReflectUtils.makeAccessible(field);\r\n+        }\r\n+        return (T) value;\r\n+    }\r\n+\r\n+    /**\r\n+     * Set the value for the specified {@link Field}\r\n+     *\r\n+     * @param object    the object whose field should be modified\r\n+     * @param fieldName the name of {@link Field}\r\n+     * @param value     the value of field to be set\r\n+     * @return the previous value of the specified {@link Field}\r\n+     */\r\n+    static <T> T setFieldValue(Object object, String fieldName, T value) {\r\n+        return setFieldValue(object, findField(object, fieldName), value);\r\n+    }\r\n+\r\n+    /**\r\n+     * Set the value for the specified {@link Field}\r\n+     *\r\n+     * @param object the object whose field should be modified\r\n+     * @param field  {@link Field}\r\n+     * @param value  the value of field to be set\r\n+     * @return the previous value of the specified {@link Field}\r\n+     */\r\n+    static <T> T setFieldValue(Object object, Field field, T value) {\r\n+        Object previousValue = null;\r\n+        try {\r\n+            ReflectUtils.makeAccessible(field);\r\n+            previousValue = field.get(object);\r\n+            field.set(object, value);\r\n+        } catch (IllegalAccessException ignored) {\r\n+        } finally {\r\n+            ReflectUtils.makeAccessible(field);\r\n+        }\r\n+        return (T) previousValue;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/LFUCache.java", "source2": "org/apache/dubbo/common/utils/LFUCache.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,286 +1,286 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.concurrent.locks.ReentrantLock;\n-\n-public class LFUCache<K, V> {\n-\n-    private Map<K, CacheNode<K, V>> map;\n-    private CacheDeque<K, V>[] freqTable;\n-\n-    private final int capacity;\n-    private int evictionCount;\n-    private int curSize = 0;\n-\n-    private final ReentrantLock lock = new ReentrantLock();\n-    private static final int DEFAULT_INITIAL_CAPACITY = 1000;\n-\n-    private static final float DEFAULT_EVICTION_FACTOR = 0.75f;\n-\n-    public LFUCache() {\n-        this(DEFAULT_INITIAL_CAPACITY, DEFAULT_EVICTION_FACTOR);\n-    }\n-\n-    /**\n-     * Constructs and initializes cache with specified capacity and eviction\n-     * factor. Unacceptable parameter values followed with\n-     * {@link IllegalArgumentException}.\n-     *\n-     * @param maxCapacity    cache max capacity\n-     * @param evictionFactor cache proceedEviction factor\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    public LFUCache(final int maxCapacity, final float evictionFactor) {\n-        if (maxCapacity <= 0) {\n-            throw new IllegalArgumentException(\"Illegal initial capacity: \" +\n-                    maxCapacity);\n-        }\n-        boolean factorInRange = evictionFactor <= 1 && evictionFactor > 0;\n-        if (!factorInRange || Float.isNaN(evictionFactor)) {\n-            throw new IllegalArgumentException(\"Illegal eviction factor value:\"\n-                    + evictionFactor);\n-        }\n-        this.capacity = maxCapacity;\n-        this.evictionCount = (int) (capacity * evictionFactor);\n-        this.map = new HashMap<>();\n-        this.freqTable = new CacheDeque[capacity + 1];\n-        for (int i = 0; i <= capacity; i++) {\n-            freqTable[i] = new CacheDeque<>();\n-        }\n-        for (int i = 0; i < capacity; i++) {\n-            freqTable[i].nextDeque = freqTable[i + 1];\n-        }\n-        freqTable[capacity].nextDeque = freqTable[capacity];\n-    }\n-\n-    public int getCapacity() {\n-        return capacity;\n-    }\n-\n-    public V put(final K key, final V value) {\n-        CacheNode<K, V> node;\n-        lock.lock();\n-        try {\n-            node = map.get(key);\n-            if (node != null) {\n-                CacheNode.withdrawNode(node);\n-                node.value = value;\n-                freqTable[0].addLastNode(node);\n-                map.put(key, node);\n-            } else {\n-                node = freqTable[0].addLast(key, value);\n-                map.put(key, node);\n-                curSize++;\n-                if (curSize > capacity) {\n-                    proceedEviction();\n-                }\n-            }\n-        } finally {\n-            lock.unlock();\n-        }\n-        return node.value;\n-    }\n-\n-    public V remove(final K key) {\n-        CacheNode<K, V> node = null;\n-        lock.lock();\n-        try {\n-            if (map.containsKey(key)) {\n-                node = map.remove(key);\n-                if (node != null) {\n-                    CacheNode.withdrawNode(node);\n-                }\n-                curSize--;\n-            }\n-        } finally {\n-            lock.unlock();\n-        }\n-        return (node != null) ? node.value : null;\n-    }\n-\n-    public V get(final K key) {\n-        CacheNode<K, V> node = null;\n-        lock.lock();\n-        try {\n-            if (map.containsKey(key)) {\n-                node = map.get(key);\n-                CacheNode.withdrawNode(node);\n-                node.owner.nextDeque.addLastNode(node);\n-            }\n-        } finally {\n-            lock.unlock();\n-        }\n-        return (node != null) ? node.value : null;\n-    }\n-\n-    /**\n-     * Evicts less frequently used elements corresponding to eviction factor,\n-     * specified at instantiation step.\n-     *\n-     * @return number of evicted elements\n-     */\n-    private int proceedEviction() {\n-        int targetSize = capacity - evictionCount;\n-        int evictedElements = 0;\n-\n-        FREQ_TABLE_ITER_LOOP:\n-        for (int i = 0; i <= capacity; i++) {\n-            CacheNode<K, V> node;\n-            while (!freqTable[i].isEmpty()) {\n-                node = freqTable[i].pollFirst();\n-                remove(node.key);\n-                if (targetSize >= curSize) {\n-                    break FREQ_TABLE_ITER_LOOP;\n-                }\n-                evictedElements++;\n-            }\n-        }\n-        return evictedElements;\n-    }\n-\n-    /**\n-     * Returns cache current size.\n-     *\n-     * @return cache size\n-     */\n-    public int getSize() {\n-        return curSize;\n-    }\n-\n-    static class CacheNode<K, V> {\n-\n-        CacheNode<K, V> prev;\n-        CacheNode<K, V> next;\n-        K key;\n-        V value;\n-        CacheDeque<K, V> owner;\n-\n-        CacheNode() {\n-        }\n-\n-        CacheNode(final K key, final V value) {\n-            this.key = key;\n-            this.value = value;\n-        }\n-\n-        /**\n-         * This method takes specified node and reattaches it neighbors nodes\n-         * links to each other, so specified node will no longer tied with them.\n-         * Returns united node, returns null if argument is null.\n-         *\n-         * @param node note to retrieve\n-         * @param <K>  key\n-         * @param <V>  value\n-         * @return retrieved node\n-         */\n-        static <K, V> CacheNode<K, V> withdrawNode(\n-                final CacheNode<K, V> node) {\n-            if (node != null && node.prev != null) {\n-                node.prev.next = node.next;\n-                if (node.next != null) {\n-                    node.next.prev = node.prev;\n-                }\n-            }\n-            return node;\n-        }\n-\n-    }\n-\n-    /**\n-     * Custom deque implementation of LIFO type. Allows to place element at top\n-     * of deque and poll very last added elements. An arbitrary node from the\n-     * deque can be removed with {@link CacheNode#withdrawNode(CacheNode)}\n-     * method.\n-     *\n-     * @param <K> key\n-     * @param <V> value\n-     */\n-    static class CacheDeque<K, V> {\n-\n-        CacheNode<K, V> last;\n-        CacheNode<K, V> first;\n-        CacheDeque<K, V> nextDeque;\n-\n-        /**\n-         * Constructs list and initializes last and first pointers.\n-         */\n-        CacheDeque() {\n-            last = new CacheNode<>();\n-            first = new CacheNode<>();\n-            last.next = first;\n-            first.prev = last;\n-        }\n-\n-        /**\n-         * Puts the node with specified key and value at the end of the deque\n-         * and returns node.\n-         *\n-         * @param key   key\n-         * @param value value\n-         * @return added node\n-         */\n-        CacheNode<K, V> addLast(final K key, final V value) {\n-            CacheNode<K, V> node = new CacheNode<>(key, value);\n-            node.owner = this;\n-            node.next = last.next;\n-            node.prev = last;\n-            node.next.prev = node;\n-            last.next = node;\n-            return node;\n-        }\n-\n-        CacheNode<K, V> addLastNode(final CacheNode<K, V> node) {\n-            node.owner = this;\n-            node.next = last.next;\n-            node.prev = last;\n-            node.next.prev = node;\n-            last.next = node;\n-            return node;\n-        }\n-\n-        /**\n-         * Retrieves and removes the first node of this deque.\n-         *\n-         * @return removed node\n-         */\n-        CacheNode<K, V> pollFirst() {\n-            CacheNode<K, V> node = null;\n-            if (first.prev != last) {\n-                node = first.prev;\n-                first.prev = node.prev;\n-                first.prev.next = first;\n-                node.prev = null;\n-                node.next = null;\n-            }\n-            return node;\n-        }\n-\n-        /**\n-         * Checks if link to the last node points to link to the first node.\n-         *\n-         * @return is deque empty\n-         */\n-        boolean isEmpty() {\n-            return last.next == first;\n-        }\n-\n-    }\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.concurrent.locks.ReentrantLock;\r\n+\r\n+public class LFUCache<K, V> {\r\n+\r\n+    private Map<K, CacheNode<K, V>> map;\r\n+    private CacheDeque<K, V>[] freqTable;\r\n+\r\n+    private final int capacity;\r\n+    private int evictionCount;\r\n+    private int curSize = 0;\r\n+\r\n+    private final ReentrantLock lock = new ReentrantLock();\r\n+    private static final int DEFAULT_INITIAL_CAPACITY = 1000;\r\n+\r\n+    private static final float DEFAULT_EVICTION_FACTOR = 0.75f;\r\n+\r\n+    public LFUCache() {\r\n+        this(DEFAULT_INITIAL_CAPACITY, DEFAULT_EVICTION_FACTOR);\r\n+    }\r\n+\r\n+    /**\r\n+     * Constructs and initializes cache with specified capacity and eviction\r\n+     * factor. Unacceptable parameter values followed with\r\n+     * {@link IllegalArgumentException}.\r\n+     *\r\n+     * @param maxCapacity    cache max capacity\r\n+     * @param evictionFactor cache proceedEviction factor\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public LFUCache(final int maxCapacity, final float evictionFactor) {\r\n+        if (maxCapacity <= 0) {\r\n+            throw new IllegalArgumentException(\"Illegal initial capacity: \" +\r\n+                    maxCapacity);\r\n+        }\r\n+        boolean factorInRange = evictionFactor <= 1 && evictionFactor > 0;\r\n+        if (!factorInRange || Float.isNaN(evictionFactor)) {\r\n+            throw new IllegalArgumentException(\"Illegal eviction factor value:\"\r\n+                    + evictionFactor);\r\n+        }\r\n+        this.capacity = maxCapacity;\r\n+        this.evictionCount = (int) (capacity * evictionFactor);\r\n+        this.map = new HashMap<>();\r\n+        this.freqTable = new CacheDeque[capacity + 1];\r\n+        for (int i = 0; i <= capacity; i++) {\r\n+            freqTable[i] = new CacheDeque<>();\r\n+        }\r\n+        for (int i = 0; i < capacity; i++) {\r\n+            freqTable[i].nextDeque = freqTable[i + 1];\r\n+        }\r\n+        freqTable[capacity].nextDeque = freqTable[capacity];\r\n+    }\r\n+\r\n+    public int getCapacity() {\r\n+        return capacity;\r\n+    }\r\n+\r\n+    public V put(final K key, final V value) {\r\n+        CacheNode<K, V> node;\r\n+        lock.lock();\r\n+        try {\r\n+            node = map.get(key);\r\n+            if (node != null) {\r\n+                CacheNode.withdrawNode(node);\r\n+                node.value = value;\r\n+                freqTable[0].addLastNode(node);\r\n+                map.put(key, node);\r\n+            } else {\r\n+                node = freqTable[0].addLast(key, value);\r\n+                map.put(key, node);\r\n+                curSize++;\r\n+                if (curSize > capacity) {\r\n+                    proceedEviction();\r\n+                }\r\n+            }\r\n+        } finally {\r\n+            lock.unlock();\r\n+        }\r\n+        return node.value;\r\n+    }\r\n+\r\n+    public V remove(final K key) {\r\n+        CacheNode<K, V> node = null;\r\n+        lock.lock();\r\n+        try {\r\n+            if (map.containsKey(key)) {\r\n+                node = map.remove(key);\r\n+                if (node != null) {\r\n+                    CacheNode.withdrawNode(node);\r\n+                }\r\n+                curSize--;\r\n+            }\r\n+        } finally {\r\n+            lock.unlock();\r\n+        }\r\n+        return (node != null) ? node.value : null;\r\n+    }\r\n+\r\n+    public V get(final K key) {\r\n+        CacheNode<K, V> node = null;\r\n+        lock.lock();\r\n+        try {\r\n+            if (map.containsKey(key)) {\r\n+                node = map.get(key);\r\n+                CacheNode.withdrawNode(node);\r\n+                node.owner.nextDeque.addLastNode(node);\r\n+            }\r\n+        } finally {\r\n+            lock.unlock();\r\n+        }\r\n+        return (node != null) ? node.value : null;\r\n+    }\r\n+\r\n+    /**\r\n+     * Evicts less frequently used elements corresponding to eviction factor,\r\n+     * specified at instantiation step.\r\n+     *\r\n+     * @return number of evicted elements\r\n+     */\r\n+    private int proceedEviction() {\r\n+        int targetSize = capacity - evictionCount;\r\n+        int evictedElements = 0;\r\n+\r\n+        FREQ_TABLE_ITER_LOOP:\r\n+        for (int i = 0; i <= capacity; i++) {\r\n+            CacheNode<K, V> node;\r\n+            while (!freqTable[i].isEmpty()) {\r\n+                node = freqTable[i].pollFirst();\r\n+                remove(node.key);\r\n+                if (targetSize >= curSize) {\r\n+                    break FREQ_TABLE_ITER_LOOP;\r\n+                }\r\n+                evictedElements++;\r\n+            }\r\n+        }\r\n+        return evictedElements;\r\n+    }\r\n+\r\n+    /**\r\n+     * Returns cache current size.\r\n+     *\r\n+     * @return cache size\r\n+     */\r\n+    public int getSize() {\r\n+        return curSize;\r\n+    }\r\n+\r\n+    static class CacheNode<K, V> {\r\n+\r\n+        CacheNode<K, V> prev;\r\n+        CacheNode<K, V> next;\r\n+        K key;\r\n+        V value;\r\n+        CacheDeque<K, V> owner;\r\n+\r\n+        CacheNode() {\r\n+        }\r\n+\r\n+        CacheNode(final K key, final V value) {\r\n+            this.key = key;\r\n+            this.value = value;\r\n+        }\r\n+\r\n+        /**\r\n+         * This method takes specified node and reattaches it neighbors nodes\r\n+         * links to each other, so specified node will no longer tied with them.\r\n+         * Returns united node, returns null if argument is null.\r\n+         *\r\n+         * @param node note to retrieve\r\n+         * @param <K>  key\r\n+         * @param <V>  value\r\n+         * @return retrieved node\r\n+         */\r\n+        static <K, V> CacheNode<K, V> withdrawNode(\r\n+                final CacheNode<K, V> node) {\r\n+            if (node != null && node.prev != null) {\r\n+                node.prev.next = node.next;\r\n+                if (node.next != null) {\r\n+                    node.next.prev = node.prev;\r\n+                }\r\n+            }\r\n+            return node;\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * Custom deque implementation of LIFO type. Allows to place element at top\r\n+     * of deque and poll very last added elements. An arbitrary node from the\r\n+     * deque can be removed with {@link CacheNode#withdrawNode(CacheNode)}\r\n+     * method.\r\n+     *\r\n+     * @param <K> key\r\n+     * @param <V> value\r\n+     */\r\n+    static class CacheDeque<K, V> {\r\n+\r\n+        CacheNode<K, V> last;\r\n+        CacheNode<K, V> first;\r\n+        CacheDeque<K, V> nextDeque;\r\n+\r\n+        /**\r\n+         * Constructs list and initializes last and first pointers.\r\n+         */\r\n+        CacheDeque() {\r\n+            last = new CacheNode<>();\r\n+            first = new CacheNode<>();\r\n+            last.next = first;\r\n+            first.prev = last;\r\n+        }\r\n+\r\n+        /**\r\n+         * Puts the node with specified key and value at the end of the deque\r\n+         * and returns node.\r\n+         *\r\n+         * @param key   key\r\n+         * @param value value\r\n+         * @return added node\r\n+         */\r\n+        CacheNode<K, V> addLast(final K key, final V value) {\r\n+            CacheNode<K, V> node = new CacheNode<>(key, value);\r\n+            node.owner = this;\r\n+            node.next = last.next;\r\n+            node.prev = last;\r\n+            node.next.prev = node;\r\n+            last.next = node;\r\n+            return node;\r\n+        }\r\n+\r\n+        CacheNode<K, V> addLastNode(final CacheNode<K, V> node) {\r\n+            node.owner = this;\r\n+            node.next = last.next;\r\n+            node.prev = last;\r\n+            node.next.prev = node;\r\n+            last.next = node;\r\n+            return node;\r\n+        }\r\n+\r\n+        /**\r\n+         * Retrieves and removes the first node of this deque.\r\n+         *\r\n+         * @return removed node\r\n+         */\r\n+        CacheNode<K, V> pollFirst() {\r\n+            CacheNode<K, V> node = null;\r\n+            if (first.prev != last) {\r\n+                node = first.prev;\r\n+                first.prev = node.prev;\r\n+                first.prev.next = first;\r\n+                node.prev = null;\r\n+                node.next = null;\r\n+            }\r\n+            return node;\r\n+        }\r\n+\r\n+        /**\r\n+         * Checks if link to the last node points to link to the first node.\r\n+         *\r\n+         * @return is deque empty\r\n+         */\r\n+        boolean isEmpty() {\r\n+            return last.next == first;\r\n+        }\r\n+\r\n+    }\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/common/utils/MemberUtils.java", "source2": "org/apache/dubbo/common/utils/MemberUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,62 +1,62 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-import java.lang.reflect.Constructor;\n-import java.lang.reflect.Field;\n-import java.lang.reflect.Member;\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Modifier;\n-\n-/**\n- * Java Reflection {@link Member} Utilities class\n- *\n- * @since 2.7.6\n- */\n-public interface MemberUtils {\n-\n-    /**\n-     * check the specified {@link Member member} is static or not ?\n-     *\n-     * @param member {@link Member} instance, e.g, {@link Constructor}, {@link Method} or {@link Field}\n-     * @return Iff <code>member</code> is static one, return <code>true</code>, or <code>false</code>\n-     */\n-    static boolean isStatic(Member member) {\n-        return member != null && Modifier.isStatic(member.getModifiers());\n-    }\n-\n-    /**\n-     * check the specified {@link Member member} is private or not ?\n-     *\n-     * @param member {@link Member} instance, e.g, {@link Constructor}, {@link Method} or {@link Field}\n-     * @return Iff <code>member</code> is private one, return <code>true</code>, or <code>false</code>\n-     */\n-    static boolean isPrivate(Member member) {\n-        return member != null && Modifier.isPrivate(member.getModifiers());\n-    }\n-\n-    /**\n-     * check the specified {@link Member member} is public or not ?\n-     *\n-     * @param member {@link Member} instance, e.g, {@link Constructor}, {@link Method} or {@link Field}\n-     * @return Iff <code>member</code> is public one, return <code>true</code>, or <code>false</code>\n-     */\n-    static boolean isPublic(Member member) {\n-        return member != null && Modifier.isPublic(member.getModifiers());\n-    }\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import java.lang.reflect.Constructor;\r\n+import java.lang.reflect.Field;\r\n+import java.lang.reflect.Member;\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Modifier;\r\n+\r\n+/**\r\n+ * Java Reflection {@link Member} Utilities class\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public interface MemberUtils {\r\n+\r\n+    /**\r\n+     * check the specified {@link Member member} is static or not ?\r\n+     *\r\n+     * @param member {@link Member} instance, e.g, {@link Constructor}, {@link Method} or {@link Field}\r\n+     * @return Iff <code>member</code> is static one, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    static boolean isStatic(Member member) {\r\n+        return member != null && Modifier.isStatic(member.getModifiers());\r\n+    }\r\n+\r\n+    /**\r\n+     * check the specified {@link Member member} is private or not ?\r\n+     *\r\n+     * @param member {@link Member} instance, e.g, {@link Constructor}, {@link Method} or {@link Field}\r\n+     * @return Iff <code>member</code> is private one, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    static boolean isPrivate(Member member) {\r\n+        return member != null && Modifier.isPrivate(member.getModifiers());\r\n+    }\r\n+\r\n+    /**\r\n+     * check the specified {@link Member member} is public or not ?\r\n+     *\r\n+     * @param member {@link Member} instance, e.g, {@link Constructor}, {@link Method} or {@link Field}\r\n+     * @return Iff <code>member</code> is public one, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    static boolean isPublic(Member member) {\r\n+        return member != null && Modifier.isPublic(member.getModifiers());\r\n+    }\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/common/utils/MethodComparator.java", "source2": "org/apache/dubbo/common/utils/MethodComparator.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,71 +1,71 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-import java.lang.reflect.Method;\n-import java.util.Comparator;\n-\n-/**\n- * The Comparator class for {@link Method}, the comparison rule :\n- * <ol>\n- *     <li>Comparing to two {@link Method#getName() method names} {@link String#compareTo(String) lexicographically}.\n- *     If equals, go to step 2</li>\n- *     <li>Comparing to the count of two method parameters. If equals, go to step 3</li>\n- *     <li>Comparing to the type names of methods parameter {@link String#compareTo(String) lexicographically}</li>\n- * </ol>\n- *\n- * @since 2.7.6\n- */\n-public class MethodComparator implements Comparator<Method> {\n-\n-    public final static MethodComparator INSTANCE = new MethodComparator();\n-\n-    private MethodComparator() {\n-    }\n-\n-    @Override\n-    public int compare(Method m1, Method m2) {\n-\n-        if (m1.equals(m2)) {\n-            return 0;\n-        }\n-\n-        // Step 1\n-        String n1 = m1.getName();\n-        String n2 = m2.getName();\n-        int value = n1.compareTo(n2);\n-\n-        if (value == 0) { // Step 2\n-\n-            Class[] types1 = m1.getParameterTypes();\n-            Class[] types2 = m2.getParameterTypes();\n-\n-            value = types1.length - types2.length;\n-\n-            if (value == 0) { // Step 3\n-                for (int i = 0; i < types1.length; i++) {\n-                    value = types1[i].getName().compareTo(types2[i].getName());\n-                    if (value != 0) {\n-                        break;\n-                    }\n-                }\n-            }\n-        }\n-\n-        return Integer.compare(value, 0);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.util.Comparator;\r\n+\r\n+/**\r\n+ * The Comparator class for {@link Method}, the comparison rule :\r\n+ * <ol>\r\n+ *     <li>Comparing to two {@link Method#getName() method names} {@link String#compareTo(String) lexicographically}.\r\n+ *     If equals, go to step 2</li>\r\n+ *     <li>Comparing to the count of two method parameters. If equals, go to step 3</li>\r\n+ *     <li>Comparing to the type names of methods parameter {@link String#compareTo(String) lexicographically}</li>\r\n+ * </ol>\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class MethodComparator implements Comparator<Method> {\r\n+\r\n+    public final static MethodComparator INSTANCE = new MethodComparator();\r\n+\r\n+    private MethodComparator() {\r\n+    }\r\n+\r\n+    @Override\r\n+    public int compare(Method m1, Method m2) {\r\n+\r\n+        if (m1.equals(m2)) {\r\n+            return 0;\r\n+        }\r\n+\r\n+        // Step 1\r\n+        String n1 = m1.getName();\r\n+        String n2 = m2.getName();\r\n+        int value = n1.compareTo(n2);\r\n+\r\n+        if (value == 0) { // Step 2\r\n+\r\n+            Class[] types1 = m1.getParameterTypes();\r\n+            Class[] types2 = m2.getParameterTypes();\r\n+\r\n+            value = types1.length - types2.length;\r\n+\r\n+            if (value == 0) { // Step 3\r\n+                for (int i = 0; i < types1.length; i++) {\r\n+                    value = types1[i].getName().compareTo(types2[i].getName());\r\n+                    if (value != 0) {\r\n+                        break;\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        return Integer.compare(value, 0);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/MethodUtils.java", "source2": "org/apache/dubbo/common/utils/MethodUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,389 +1,389 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-import javax.lang.model.element.ExecutableElement;\n-import javax.lang.model.element.TypeElement;\n-import javax.lang.model.util.Elements;\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Modifier;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Objects;\n-import java.util.function.Predicate;\n-\n-import static java.util.Collections.emptyList;\n-import static java.util.Collections.unmodifiableList;\n-import static org.apache.dubbo.common.function.Streams.filterAll;\n-import static org.apache.dubbo.common.utils.ClassUtils.getAllInheritedTypes;\n-import static org.apache.dubbo.common.utils.MemberUtils.isPrivate;\n-import static org.apache.dubbo.common.utils.MemberUtils.isStatic;\n-import static org.apache.dubbo.common.utils.ReflectUtils.EMPTY_CLASS_ARRAY;\n-import static org.apache.dubbo.common.utils.ReflectUtils.resolveTypes;\n-import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\n-\n-/**\n- * Miscellaneous method utility methods.\n- * Mainly for internal use within the framework.\n- *\n- * @since 2.7.2\n- */\n-public interface MethodUtils {\n-\n-    /**\n-     * Return {@code true} if the provided method is a set method.\n-     * Otherwise, return {@code false}.\n-     *\n-     * @param method the method to check\n-     * @return whether the given method is setter method\n-     */\n-    public static boolean isSetter(Method method) {\n-        return method.getName().startsWith(\"set\")\n-                && !\"set\".equals(method.getName())\n-                && Modifier.isPublic(method.getModifiers())\n-                && method.getParameterCount() == 1\n-                && ClassUtils.isPrimitive(method.getParameterTypes()[0]);\n-    }\n-\n-    /**\n-     * Return {@code true} if the provided method is a get method.\n-     * Otherwise, return {@code false}.\n-     *\n-     * @param method the method to check\n-     * @return whether the given method is getter method\n-     */\n-    public static boolean isGetter(Method method) {\n-        String name = method.getName();\n-        return (name.startsWith(\"get\") || name.startsWith(\"is\"))\n-                && !\"get\".equals(name) && !\"is\".equals(name)\n-                && !\"getClass\".equals(name) && !\"getObject\".equals(name)\n-                && Modifier.isPublic(method.getModifiers())\n-                && method.getParameterTypes().length == 0\n-                && ClassUtils.isPrimitive(method.getReturnType());\n-    }\n-\n-    /**\n-     * Return {@code true} If this method is a meta method.\n-     * Otherwise, return {@code false}.\n-     *\n-     * @param method the method to check\n-     * @return whether the given method is meta method\n-     */\n-    public static boolean isMetaMethod(Method method) {\n-        String name = method.getName();\n-        if (!(name.startsWith(\"get\") || name.startsWith(\"is\"))) {\n-            return false;\n-        }\n-        if (\"get\".equals(name)) {\n-            return false;\n-        }\n-        if (\"getClass\".equals(name)) {\n-            return false;\n-        }\n-        if (!Modifier.isPublic(method.getModifiers())) {\n-            return false;\n-        }\n-        if (method.getParameterTypes().length != 0) {\n-            return false;\n-        }\n-        if (!ClassUtils.isPrimitive(method.getReturnType())) {\n-            return false;\n-        }\n-        return true;\n-    }\n-\n-    /**\n-     * Check if the method is a deprecated method. The standard is whether the {@link java.lang.Deprecated} annotation is declared on the class.\n-     * Return {@code true} if this annotation is present.\n-     * Otherwise, return {@code false}.\n-     *\n-     * @param method the method to check\n-     * @return whether the given method is deprecated method\n-     */\n-    public static boolean isDeprecated(Method method) {\n-        return method.getAnnotation(Deprecated.class) != null;\n-    }\n-\n-\n-    /**\n-     * Create an instance of {@link Predicate} for {@link Method} to exclude the specified declared class\n-     *\n-     * @param declaredClass the declared class to exclude\n-     * @return non-null\n-     * @since 2.7.6\n-     */\n-    static Predicate<Method> excludedDeclaredClass(Class<?> declaredClass) {\n-        return method -> !Objects.equals(declaredClass, method.getDeclaringClass());\n-    }\n-\n-    /**\n-     * Get all {@link Method methods} of the declared class\n-     *\n-     * @param declaringClass        the declared class\n-     * @param includeInheritedTypes include the inherited types, e,g. super classes or interfaces\n-     * @param publicOnly            only public method\n-     * @param methodsToFilter       (optional) the methods to be filtered\n-     * @return non-null read-only {@link List}\n-     * @since 2.7.6\n-     */\n-    static List<Method> getMethods(Class<?> declaringClass, boolean includeInheritedTypes, boolean publicOnly,\n-                                   Predicate<Method>... methodsToFilter) {\n-\n-        if (declaringClass == null || declaringClass.isPrimitive()) {\n-            return emptyList();\n-        }\n-\n-        // All declared classes\n-        List<Class<?>> declaredClasses = new LinkedList<>();\n-        // Add the top declaring class\n-        declaredClasses.add(declaringClass);\n-        // If the super classes are resolved, all them into declaredClasses\n-        if (includeInheritedTypes) {\n-            declaredClasses.addAll(getAllInheritedTypes(declaringClass));\n-        }\n-\n-        // All methods\n-        List<Method> allMethods = new LinkedList<>();\n-\n-        for (Class<?> classToSearch : declaredClasses) {\n-            Method[] methods = publicOnly ? classToSearch.getMethods() : classToSearch.getDeclaredMethods();\n-            // Add the declared methods or public methods\n-            for (Method method : methods) {\n-                allMethods.add(method);\n-            }\n-        }\n-\n-        return unmodifiableList(filterAll(allMethods, methodsToFilter));\n-    }\n-\n-    /**\n-     * Get all declared {@link Method methods} of the declared class, excluding the inherited methods\n-     *\n-     * @param declaringClass  the declared class\n-     * @param methodsToFilter (optional) the methods to be filtered\n-     * @return non-null read-only {@link List}\n-     * @see #getMethods(Class, boolean, boolean, Predicate[])\n-     * @since 2.7.6\n-     */\n-    static List<Method> getDeclaredMethods(Class<?> declaringClass, Predicate<Method>... methodsToFilter) {\n-        return getMethods(declaringClass, false, false, methodsToFilter);\n-    }\n-\n-    /**\n-     * Get all public {@link Method methods} of the declared class, including the inherited methods.\n-     *\n-     * @param declaringClass  the declared class\n-     * @param methodsToFilter (optional) the methods to be filtered\n-     * @return non-null read-only {@link List}\n-     * @see #getMethods(Class, boolean, boolean, Predicate[])\n-     * @since 2.7.6\n-     */\n-    static List<Method> getMethods(Class<?> declaringClass, Predicate<Method>... methodsToFilter) {\n-        return getMethods(declaringClass, false, true, methodsToFilter);\n-    }\n-\n-    /**\n-     * Get all declared {@link Method methods} of the declared class, including the inherited methods.\n-     *\n-     * @param declaringClass  the declared class\n-     * @param methodsToFilter (optional) the methods to be filtered\n-     * @return non-null read-only {@link List}\n-     * @see #getMethods(Class, boolean, boolean, Predicate[])\n-     * @since 2.7.6\n-     */\n-    static List<Method> getAllDeclaredMethods(Class<?> declaringClass, Predicate<Method>... methodsToFilter) {\n-        return getMethods(declaringClass, true, false, methodsToFilter);\n-    }\n-\n-    /**\n-     * Get all public {@link Method methods} of the declared class, including the inherited methods.\n-     *\n-     * @param declaringClass  the declared class\n-     * @param methodsToFilter (optional) the methods to be filtered\n-     * @return non-null read-only {@link List}\n-     * @see #getMethods(Class, boolean, boolean, Predicate[])\n-     * @since 2.7.6\n-     */\n-    static List<Method> getAllMethods(Class<?> declaringClass, Predicate<Method>... methodsToFilter) {\n-        return getMethods(declaringClass, true, true, methodsToFilter);\n-    }\n-\n-//    static List<Method> getOverriderMethods(Class<?> implementationClass, Class<?>... superTypes) {\n-\n-//\n-\n-//    }\n-\n-    /**\n-     * Find the {@link Method} by the the specified type and method name without the parameter types\n-     *\n-     * @param type       the target type\n-     * @param methodName the specified method name\n-     * @return if not found, return <code>null</code>\n-     * @since 2.7.6\n-     */\n-    static Method findMethod(Class type, String methodName) {\n-        return findMethod(type, methodName, EMPTY_CLASS_ARRAY);\n-    }\n-\n-    /**\n-     * Find the {@link Method} by the the specified type, method name and parameter types\n-     *\n-     * @param type           the target type\n-     * @param methodName     the method name\n-     * @param parameterTypes the parameter types\n-     * @return if not found, return <code>null</code>\n-     * @since 2.7.6\n-     */\n-    static Method findMethod(Class type, String methodName, Class<?>... parameterTypes) {\n-        Method method = null;\n-        try {\n-            if (type != null && isNotEmpty(methodName)) {\n-                method = type.getDeclaredMethod(methodName, parameterTypes);\n-            }\n-        } catch (NoSuchMethodException e) {\n-        }\n-        return method;\n-    }\n-\n-    /**\n-     * Invoke the target object and method\n-     *\n-     * @param object           the target object\n-     * @param methodName       the method name\n-     * @param methodParameters the method parameters\n-     * @param <T>              the return type\n-     * @return the target method's execution result\n-     * @since 2.7.6\n-     */\n-    static <T> T invokeMethod(Object object, String methodName, Object... methodParameters) {\n-        Class type = object.getClass();\n-        Class[] parameterTypes = resolveTypes(methodParameters);\n-        Method method = findMethod(type, methodName, parameterTypes);\n-        T value = null;\n-\n-        try {\n-            ReflectUtils.makeAccessible(method);\n-            value = (T) method.invoke(object, methodParameters);\n-        } catch (Exception e) {\n-            throw new IllegalArgumentException(e);\n-        }\n-\n-        return value;\n-    }\n-\n-\n-    /**\n-     * Tests whether one method, as a member of a given type,\n-     * overrides another method.\n-     *\n-     * @param overrider  the first method, possible overrider\n-     * @param overridden the second method, possibly being overridden\n-     * @return {@code true} if and only if the first method overrides\n-     * the second\n-     * @jls 8.4.8 Inheritance, Overriding, and Hiding\n-     * @jls 9.4.1 Inheritance and Overriding\n-     * @see Elements#overrides(ExecutableElement, ExecutableElement, TypeElement)\n-     */\n-    static boolean overrides(Method overrider, Method overridden) {\n-\n-        if (overrider == null || overridden == null) {\n-            return false;\n-        }\n-\n-        // equality comparison: If two methods are same\n-        if (Objects.equals(overrider, overridden)) {\n-            return false;\n-        }\n-\n-        // Modifiers comparison: Any method must be non-static method\n-        if (isStatic(overrider) || isStatic(overridden)) { //\n-            return false;\n-        }\n-\n-        // Modifiers comparison: the accessibility of any method must not be private\n-        if (isPrivate(overrider) || isPrivate(overridden)) {\n-            return false;\n-        }\n-\n-        // Inheritance comparison: The declaring class of overrider must be inherit from the overridden's\n-        if (!overridden.getDeclaringClass().isAssignableFrom(overrider.getDeclaringClass())) {\n-            return false;\n-        }\n-\n-        // Method comparison: must not be \"default\" method\n-        if (overrider.isDefault()) {\n-            return false;\n-        }\n-\n-        // Method comparison: The method name must be equal\n-        if (!Objects.equals(overrider.getName(), overridden.getName())) {\n-            return false;\n-        }\n-\n-        // Method comparison: The count of method parameters must be equal\n-        if (!Objects.equals(overrider.getParameterCount(), overridden.getParameterCount())) {\n-            return false;\n-        }\n-\n-        // Method comparison: Any parameter type of overrider must equal the overridden's\n-        for (int i = 0; i < overrider.getParameterCount(); i++) {\n-            if (!Objects.equals(overridden.getParameterTypes()[i], overrider.getParameterTypes()[i])) {\n-                return false;\n-            }\n-        }\n-\n-        // Method comparison: The return type of overrider must be inherit from the overridden's\n-        if (!overridden.getReturnType().isAssignableFrom(overrider.getReturnType())) {\n-            return false;\n-        }\n-\n-        // Throwable comparison: \"throws\" Throwable list will be ignored, trust the compiler verify\n-\n-        return true;\n-    }\n-\n-    /**\n-     * Find the nearest overridden {@link Method method} from the inherited class\n-     *\n-     * @param overrider the overrider {@link Method method}\n-     * @return if found, the overrider <code>method</code>, or <code>null</code>\n-     */\n-    static Method findNearestOverriddenMethod(Method overrider) {\n-        Class<?> declaringClass = overrider.getDeclaringClass();\n-        Method overriddenMethod = null;\n-        for (Class<?> inheritedType : getAllInheritedTypes(declaringClass)) {\n-            overriddenMethod = findOverriddenMethod(overrider, inheritedType);\n-            if (overriddenMethod != null) {\n-                break;\n-            }\n-        }\n-        return overriddenMethod;\n-    }\n-\n-    /**\n-     * Find the overridden {@link Method method} from the declaring class\n-     *\n-     * @param overrider      the overrider {@link Method method}\n-     * @param declaringClass the class that is declaring the overridden {@link Method method}\n-     * @return if found, the overrider <code>method</code>, or <code>null</code>\n-     */\n-    static Method findOverriddenMethod(Method overrider, Class<?> declaringClass) {\n-        List<Method> matchedMethods = getAllMethods(declaringClass, method -> overrides(overrider, method));\n-        return matchedMethods.isEmpty() ? null : matchedMethods.get(0);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import javax.lang.model.element.ExecutableElement;\r\n+import javax.lang.model.element.TypeElement;\r\n+import javax.lang.model.util.Elements;\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Modifier;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Objects;\r\n+import java.util.function.Predicate;\r\n+\r\n+import static java.util.Collections.emptyList;\r\n+import static java.util.Collections.unmodifiableList;\r\n+import static org.apache.dubbo.common.function.Streams.filterAll;\r\n+import static org.apache.dubbo.common.utils.ClassUtils.getAllInheritedTypes;\r\n+import static org.apache.dubbo.common.utils.MemberUtils.isPrivate;\r\n+import static org.apache.dubbo.common.utils.MemberUtils.isStatic;\r\n+import static org.apache.dubbo.common.utils.ReflectUtils.EMPTY_CLASS_ARRAY;\r\n+import static org.apache.dubbo.common.utils.ReflectUtils.resolveTypes;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\r\n+\r\n+/**\r\n+ * Miscellaneous method utility methods.\r\n+ * Mainly for internal use within the framework.\r\n+ *\r\n+ * @since 2.7.2\r\n+ */\r\n+public interface MethodUtils {\r\n+\r\n+    /**\r\n+     * Return {@code true} if the provided method is a set method.\r\n+     * Otherwise, return {@code false}.\r\n+     *\r\n+     * @param method the method to check\r\n+     * @return whether the given method is setter method\r\n+     */\r\n+    public static boolean isSetter(Method method) {\r\n+        return method.getName().startsWith(\"set\")\r\n+                && !\"set\".equals(method.getName())\r\n+                && Modifier.isPublic(method.getModifiers())\r\n+                && method.getParameterCount() == 1\r\n+                && ClassUtils.isPrimitive(method.getParameterTypes()[0]);\r\n+    }\r\n+\r\n+    /**\r\n+     * Return {@code true} if the provided method is a get method.\r\n+     * Otherwise, return {@code false}.\r\n+     *\r\n+     * @param method the method to check\r\n+     * @return whether the given method is getter method\r\n+     */\r\n+    public static boolean isGetter(Method method) {\r\n+        String name = method.getName();\r\n+        return (name.startsWith(\"get\") || name.startsWith(\"is\"))\r\n+                && !\"get\".equals(name) && !\"is\".equals(name)\r\n+                && !\"getClass\".equals(name) && !\"getObject\".equals(name)\r\n+                && Modifier.isPublic(method.getModifiers())\r\n+                && method.getParameterTypes().length == 0\r\n+                && ClassUtils.isPrimitive(method.getReturnType());\r\n+    }\r\n+\r\n+    /**\r\n+     * Return {@code true} If this method is a meta method.\r\n+     * Otherwise, return {@code false}.\r\n+     *\r\n+     * @param method the method to check\r\n+     * @return whether the given method is meta method\r\n+     */\r\n+    public static boolean isMetaMethod(Method method) {\r\n+        String name = method.getName();\r\n+        if (!(name.startsWith(\"get\") || name.startsWith(\"is\"))) {\r\n+            return false;\r\n+        }\r\n+        if (\"get\".equals(name)) {\r\n+            return false;\r\n+        }\r\n+        if (\"getClass\".equals(name)) {\r\n+            return false;\r\n+        }\r\n+        if (!Modifier.isPublic(method.getModifiers())) {\r\n+            return false;\r\n+        }\r\n+        if (method.getParameterTypes().length != 0) {\r\n+            return false;\r\n+        }\r\n+        if (!ClassUtils.isPrimitive(method.getReturnType())) {\r\n+            return false;\r\n+        }\r\n+        return true;\r\n+    }\r\n+\r\n+    /**\r\n+     * Check if the method is a deprecated method. The standard is whether the {@link java.lang.Deprecated} annotation is declared on the class.\r\n+     * Return {@code true} if this annotation is present.\r\n+     * Otherwise, return {@code false}.\r\n+     *\r\n+     * @param method the method to check\r\n+     * @return whether the given method is deprecated method\r\n+     */\r\n+    public static boolean isDeprecated(Method method) {\r\n+        return method.getAnnotation(Deprecated.class) != null;\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Create an instance of {@link Predicate} for {@link Method} to exclude the specified declared class\r\n+     *\r\n+     * @param declaredClass the declared class to exclude\r\n+     * @return non-null\r\n+     * @since 2.7.6\r\n+     */\r\n+    static Predicate<Method> excludedDeclaredClass(Class<?> declaredClass) {\r\n+        return method -> !Objects.equals(declaredClass, method.getDeclaringClass());\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all {@link Method methods} of the declared class\r\n+     *\r\n+     * @param declaringClass        the declared class\r\n+     * @param includeInheritedTypes include the inherited types, e,g. super classes or interfaces\r\n+     * @param publicOnly            only public method\r\n+     * @param methodsToFilter       (optional) the methods to be filtered\r\n+     * @return non-null read-only {@link List}\r\n+     * @since 2.7.6\r\n+     */\r\n+    static List<Method> getMethods(Class<?> declaringClass, boolean includeInheritedTypes, boolean publicOnly,\r\n+                                   Predicate<Method>... methodsToFilter) {\r\n+\r\n+        if (declaringClass == null || declaringClass.isPrimitive()) {\r\n+            return emptyList();\r\n+        }\r\n+\r\n+        // All declared classes\r\n+        List<Class<?>> declaredClasses = new LinkedList<>();\r\n+        // Add the top declaring class\r\n+        declaredClasses.add(declaringClass);\r\n+        // If the super classes are resolved, all them into declaredClasses\r\n+        if (includeInheritedTypes) {\r\n+            declaredClasses.addAll(getAllInheritedTypes(declaringClass));\r\n+        }\r\n+\r\n+        // All methods\r\n+        List<Method> allMethods = new LinkedList<>();\r\n+\r\n+        for (Class<?> classToSearch : declaredClasses) {\r\n+            Method[] methods = publicOnly ? classToSearch.getMethods() : classToSearch.getDeclaredMethods();\r\n+            // Add the declared methods or public methods\r\n+            for (Method method : methods) {\r\n+                allMethods.add(method);\r\n+            }\r\n+        }\r\n+\r\n+        return unmodifiableList(filterAll(allMethods, methodsToFilter));\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all declared {@link Method methods} of the declared class, excluding the inherited methods\r\n+     *\r\n+     * @param declaringClass  the declared class\r\n+     * @param methodsToFilter (optional) the methods to be filtered\r\n+     * @return non-null read-only {@link List}\r\n+     * @see #getMethods(Class, boolean, boolean, Predicate[])\r\n+     * @since 2.7.6\r\n+     */\r\n+    static List<Method> getDeclaredMethods(Class<?> declaringClass, Predicate<Method>... methodsToFilter) {\r\n+        return getMethods(declaringClass, false, false, methodsToFilter);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all public {@link Method methods} of the declared class, including the inherited methods.\r\n+     *\r\n+     * @param declaringClass  the declared class\r\n+     * @param methodsToFilter (optional) the methods to be filtered\r\n+     * @return non-null read-only {@link List}\r\n+     * @see #getMethods(Class, boolean, boolean, Predicate[])\r\n+     * @since 2.7.6\r\n+     */\r\n+    static List<Method> getMethods(Class<?> declaringClass, Predicate<Method>... methodsToFilter) {\r\n+        return getMethods(declaringClass, false, true, methodsToFilter);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all declared {@link Method methods} of the declared class, including the inherited methods.\r\n+     *\r\n+     * @param declaringClass  the declared class\r\n+     * @param methodsToFilter (optional) the methods to be filtered\r\n+     * @return non-null read-only {@link List}\r\n+     * @see #getMethods(Class, boolean, boolean, Predicate[])\r\n+     * @since 2.7.6\r\n+     */\r\n+    static List<Method> getAllDeclaredMethods(Class<?> declaringClass, Predicate<Method>... methodsToFilter) {\r\n+        return getMethods(declaringClass, true, false, methodsToFilter);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all public {@link Method methods} of the declared class, including the inherited methods.\r\n+     *\r\n+     * @param declaringClass  the declared class\r\n+     * @param methodsToFilter (optional) the methods to be filtered\r\n+     * @return non-null read-only {@link List}\r\n+     * @see #getMethods(Class, boolean, boolean, Predicate[])\r\n+     * @since 2.7.6\r\n+     */\r\n+    static List<Method> getAllMethods(Class<?> declaringClass, Predicate<Method>... methodsToFilter) {\r\n+        return getMethods(declaringClass, true, true, methodsToFilter);\r\n+    }\r\n+\r\n+//    static List<Method> getOverriderMethods(Class<?> implementationClass, Class<?>... superTypes) {\r\n+\r\n+//\r\n+\r\n+//    }\r\n+\r\n+    /**\r\n+     * Find the {@link Method} by the the specified type and method name without the parameter types\r\n+     *\r\n+     * @param type       the target type\r\n+     * @param methodName the specified method name\r\n+     * @return if not found, return <code>null</code>\r\n+     * @since 2.7.6\r\n+     */\r\n+    static Method findMethod(Class type, String methodName) {\r\n+        return findMethod(type, methodName, EMPTY_CLASS_ARRAY);\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the {@link Method} by the the specified type, method name and parameter types\r\n+     *\r\n+     * @param type           the target type\r\n+     * @param methodName     the method name\r\n+     * @param parameterTypes the parameter types\r\n+     * @return if not found, return <code>null</code>\r\n+     * @since 2.7.6\r\n+     */\r\n+    static Method findMethod(Class type, String methodName, Class<?>... parameterTypes) {\r\n+        Method method = null;\r\n+        try {\r\n+            if (type != null && isNotEmpty(methodName)) {\r\n+                method = type.getDeclaredMethod(methodName, parameterTypes);\r\n+            }\r\n+        } catch (NoSuchMethodException e) {\r\n+        }\r\n+        return method;\r\n+    }\r\n+\r\n+    /**\r\n+     * Invoke the target object and method\r\n+     *\r\n+     * @param object           the target object\r\n+     * @param methodName       the method name\r\n+     * @param methodParameters the method parameters\r\n+     * @param <T>              the return type\r\n+     * @return the target method's execution result\r\n+     * @since 2.7.6\r\n+     */\r\n+    static <T> T invokeMethod(Object object, String methodName, Object... methodParameters) {\r\n+        Class type = object.getClass();\r\n+        Class[] parameterTypes = resolveTypes(methodParameters);\r\n+        Method method = findMethod(type, methodName, parameterTypes);\r\n+        T value = null;\r\n+\r\n+        try {\r\n+            ReflectUtils.makeAccessible(method);\r\n+            value = (T) method.invoke(object, methodParameters);\r\n+        } catch (Exception e) {\r\n+            throw new IllegalArgumentException(e);\r\n+        }\r\n+\r\n+        return value;\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Tests whether one method, as a member of a given type,\r\n+     * overrides another method.\r\n+     *\r\n+     * @param overrider  the first method, possible overrider\r\n+     * @param overridden the second method, possibly being overridden\r\n+     * @return {@code true} if and only if the first method overrides\r\n+     * the second\r\n+     * @jls 8.4.8 Inheritance, Overriding, and Hiding\r\n+     * @jls 9.4.1 Inheritance and Overriding\r\n+     * @see Elements#overrides(ExecutableElement, ExecutableElement, TypeElement)\r\n+     */\r\n+    static boolean overrides(Method overrider, Method overridden) {\r\n+\r\n+        if (overrider == null || overridden == null) {\r\n+            return false;\r\n+        }\r\n+\r\n+        // equality comparison: If two methods are same\r\n+        if (Objects.equals(overrider, overridden)) {\r\n+            return false;\r\n+        }\r\n+\r\n+        // Modifiers comparison: Any method must be non-static method\r\n+        if (isStatic(overrider) || isStatic(overridden)) { //\r\n+            return false;\r\n+        }\r\n+\r\n+        // Modifiers comparison: the accessibility of any method must not be private\r\n+        if (isPrivate(overrider) || isPrivate(overridden)) {\r\n+            return false;\r\n+        }\r\n+\r\n+        // Inheritance comparison: The declaring class of overrider must be inherit from the overridden's\r\n+        if (!overridden.getDeclaringClass().isAssignableFrom(overrider.getDeclaringClass())) {\r\n+            return false;\r\n+        }\r\n+\r\n+        // Method comparison: must not be \"default\" method\r\n+        if (overrider.isDefault()) {\r\n+            return false;\r\n+        }\r\n+\r\n+        // Method comparison: The method name must be equal\r\n+        if (!Objects.equals(overrider.getName(), overridden.getName())) {\r\n+            return false;\r\n+        }\r\n+\r\n+        // Method comparison: The count of method parameters must be equal\r\n+        if (!Objects.equals(overrider.getParameterCount(), overridden.getParameterCount())) {\r\n+            return false;\r\n+        }\r\n+\r\n+        // Method comparison: Any parameter type of overrider must equal the overridden's\r\n+        for (int i = 0; i < overrider.getParameterCount(); i++) {\r\n+            if (!Objects.equals(overridden.getParameterTypes()[i], overrider.getParameterTypes()[i])) {\r\n+                return false;\r\n+            }\r\n+        }\r\n+\r\n+        // Method comparison: The return type of overrider must be inherit from the overridden's\r\n+        if (!overridden.getReturnType().isAssignableFrom(overrider.getReturnType())) {\r\n+            return false;\r\n+        }\r\n+\r\n+        // Throwable comparison: \"throws\" Throwable list will be ignored, trust the compiler verify\r\n+\r\n+        return true;\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the nearest overridden {@link Method method} from the inherited class\r\n+     *\r\n+     * @param overrider the overrider {@link Method method}\r\n+     * @return if found, the overrider <code>method</code>, or <code>null</code>\r\n+     */\r\n+    static Method findNearestOverriddenMethod(Method overrider) {\r\n+        Class<?> declaringClass = overrider.getDeclaringClass();\r\n+        Method overriddenMethod = null;\r\n+        for (Class<?> inheritedType : getAllInheritedTypes(declaringClass)) {\r\n+            overriddenMethod = findOverriddenMethod(overrider, inheritedType);\r\n+            if (overriddenMethod != null) {\r\n+                break;\r\n+            }\r\n+        }\r\n+        return overriddenMethod;\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the overridden {@link Method method} from the declaring class\r\n+     *\r\n+     * @param overrider      the overrider {@link Method method}\r\n+     * @param declaringClass the class that is declaring the overridden {@link Method method}\r\n+     * @return if found, the overrider <code>method</code>, or <code>null</code>\r\n+     */\r\n+    static Method findOverriddenMethod(Method overrider, Class<?> declaringClass) {\r\n+        List<Method> matchedMethods = getAllMethods(declaringClass, method -> overrides(overrider, method));\r\n+        return matchedMethods.isEmpty() ? null : matchedMethods.get(0);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/Page.java", "source2": "org/apache/dubbo/common/utils/Page.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,87 +1,87 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-import java.util.List;\n-\n-/**\n- * The model class of pagination\n- *\n- * @since 2.7.5\n- */\n-public interface Page<T> {\n-\n-    /**\n-     * Gets the offset of request\n-     *\n-     * @return positive integer\n-     */\n-    int getOffset();\n-\n-    /**\n-     * Gets the size of request for pagination query\n-     *\n-     * @return positive integer\n-     */\n-    int getPageSize();\n-\n-    /**\n-     * Gets the total amount of elements.\n-     *\n-     * @return the total amount of elements\n-     */\n-    int getTotalSize();\n-\n-    /**\n-     * Get the number of total pages.\n-     *\n-     * @return the number of total pages.\n-     */\n-    int getTotalPages();\n-\n-    /**\n-     * The data of current page\n-     *\n-     * @return non-null {@link List}\n-     */\n-    List<T> getData();\n-\n-    /**\n-     * The size of {@link #getData() data}\n-     *\n-     * @return positive integer\n-     */\n-    default int getDataSize() {\n-        return getData().size();\n-    }\n-\n-    /**\n-     * It indicates has next page or not\n-     *\n-     * @return if has , return <code>true</code>, or <code>false</code>\n-     */\n-    boolean hasNext();\n-\n-    /**\n-     * Returns whether the page has data at all.\n-     *\n-     * @return\n-     */\n-    default boolean hasData() {\n-        return getDataSize() > 0;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * The model class of pagination\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public interface Page<T> {\r\n+\r\n+    /**\r\n+     * Gets the offset of request\r\n+     *\r\n+     * @return positive integer\r\n+     */\r\n+    int getOffset();\r\n+\r\n+    /**\r\n+     * Gets the size of request for pagination query\r\n+     *\r\n+     * @return positive integer\r\n+     */\r\n+    int getPageSize();\r\n+\r\n+    /**\r\n+     * Gets the total amount of elements.\r\n+     *\r\n+     * @return the total amount of elements\r\n+     */\r\n+    int getTotalSize();\r\n+\r\n+    /**\r\n+     * Get the number of total pages.\r\n+     *\r\n+     * @return the number of total pages.\r\n+     */\r\n+    int getTotalPages();\r\n+\r\n+    /**\r\n+     * The data of current page\r\n+     *\r\n+     * @return non-null {@link List}\r\n+     */\r\n+    List<T> getData();\r\n+\r\n+    /**\r\n+     * The size of {@link #getData() data}\r\n+     *\r\n+     * @return positive integer\r\n+     */\r\n+    default int getDataSize() {\r\n+        return getData().size();\r\n+    }\r\n+\r\n+    /**\r\n+     * It indicates has next page or not\r\n+     *\r\n+     * @return if has , return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    boolean hasNext();\r\n+\r\n+    /**\r\n+     * Returns whether the page has data at all.\r\n+     *\r\n+     * @return\r\n+     */\r\n+    default boolean hasData() {\r\n+        return getDataSize() > 0;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/PathUtils.java", "source2": "org/apache/dubbo/common/utils/PathUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,74 +1,74 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-import java.util.LinkedHashSet;\n-import java.util.Set;\n-import java.util.stream.Collectors;\n-\n-import static java.util.Arrays.asList;\n-import static org.apache.dubbo.common.utils.StringUtils.QUESTION_MASK;\n-import static org.apache.dubbo.common.utils.StringUtils.SLASH;\n-import static org.apache.dubbo.common.utils.StringUtils.isEmpty;\n-import static org.apache.dubbo.common.utils.StringUtils.replace;\n-\n-/**\n- * Path Utilities class\n- *\n- * @since 2.7.6\n- */\n-public interface PathUtils {\n-\n-    static String buildPath(String rootPath, String... subPaths) {\n-\n-        Set<String> paths = new LinkedHashSet<>();\n-        paths.add(rootPath);\n-        paths.addAll(asList(subPaths));\n-\n-        return normalize(paths.stream()\n-                .filter(StringUtils::isNotEmpty)\n-                .collect(Collectors.joining(SLASH)));\n-    }\n-\n-    /**\n-     * Normalize path:\n-     * <ol>\n-     * <li>To remove query string if presents</li>\n-     * <li>To remove duplicated slash(\"/\") if exists</li>\n-     * </ol>\n-     *\n-     * @param path path to be normalized\n-     * @return a normalized path if required\n-     */\n-    static String normalize(String path) {\n-        if (isEmpty(path)) {\n-            return SLASH;\n-        }\n-        String normalizedPath = path;\n-        int index = normalizedPath.indexOf(QUESTION_MASK);\n-        if (index > -1) {\n-            normalizedPath = normalizedPath.substring(0, index);\n-        }\n-\n-        while (normalizedPath.contains(\"//\")) {\n-            normalizedPath = replace(normalizedPath, \"//\", \"/\");\n-        }\n-\n-        return normalizedPath;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import java.util.LinkedHashSet;\r\n+import java.util.Set;\r\n+import java.util.stream.Collectors;\r\n+\r\n+import static java.util.Arrays.asList;\r\n+import static org.apache.dubbo.common.utils.StringUtils.QUESTION_MASK;\r\n+import static org.apache.dubbo.common.utils.StringUtils.SLASH;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isEmpty;\r\n+import static org.apache.dubbo.common.utils.StringUtils.replace;\r\n+\r\n+/**\r\n+ * Path Utilities class\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public interface PathUtils {\r\n+\r\n+    static String buildPath(String rootPath, String... subPaths) {\r\n+\r\n+        Set<String> paths = new LinkedHashSet<>();\r\n+        paths.add(rootPath);\r\n+        paths.addAll(asList(subPaths));\r\n+\r\n+        return normalize(paths.stream()\r\n+                .filter(StringUtils::isNotEmpty)\r\n+                .collect(Collectors.joining(SLASH)));\r\n+    }\r\n+\r\n+    /**\r\n+     * Normalize path:\r\n+     * <ol>\r\n+     * <li>To remove query string if presents</li>\r\n+     * <li>To remove duplicated slash(\"/\") if exists</li>\r\n+     * </ol>\r\n+     *\r\n+     * @param path path to be normalized\r\n+     * @return a normalized path if required\r\n+     */\r\n+    static String normalize(String path) {\r\n+        if (isEmpty(path)) {\r\n+            return SLASH;\r\n+        }\r\n+        String normalizedPath = path;\r\n+        int index = normalizedPath.indexOf(QUESTION_MASK);\r\n+        if (index > -1) {\r\n+            normalizedPath = normalizedPath.substring(0, index);\r\n+        }\r\n+\r\n+        while (normalizedPath.contains(\"//\")) {\r\n+            normalizedPath = replace(normalizedPath, \"//\", \"/\");\r\n+        }\r\n+\r\n+        return normalizedPath;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/ReflectUtils.java", "source2": "org/apache/dubbo/common/utils/ReflectUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,1395 +1,1395 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-import javassist.CtClass;\n-import javassist.CtConstructor;\n-import javassist.CtMethod;\n-import javassist.NotFoundException;\n-\n-import java.beans.BeanInfo;\n-import java.beans.Introspector;\n-import java.lang.reflect.Array;\n-import java.lang.reflect.Constructor;\n-import java.lang.reflect.Field;\n-import java.lang.reflect.GenericArrayType;\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Modifier;\n-import java.lang.reflect.ParameterizedType;\n-import java.lang.reflect.Type;\n-import java.lang.reflect.TypeVariable;\n-import java.net.URL;\n-import java.security.CodeSource;\n-import java.security.ProtectionDomain;\n-import java.util.ArrayList;\n-import java.util.Collections;\n-import java.util.Date;\n-import java.util.HashMap;\n-import java.util.HashSet;\n-import java.util.LinkedHashSet;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-import java.util.concurrent.Future;\n-import java.util.regex.Matcher;\n-import java.util.regex.Pattern;\n-import java.util.stream.Collectors;\n-import java.util.stream.Stream;\n-\n-import static java.util.Arrays.asList;\n-import static java.util.Collections.unmodifiableSet;\n-import static org.apache.dubbo.common.utils.ArrayUtils.isEmpty;\n-\n-/**\n- * ReflectUtils\n- */\n-public final class ReflectUtils {\n-\n-    /**\n-     * void(V).\n-     */\n-    public static final char JVM_VOID = 'V';\n-\n-    /**\n-     * boolean(Z).\n-     */\n-    public static final char JVM_BOOLEAN = 'Z';\n-\n-    /**\n-     * byte(B).\n-     */\n-    public static final char JVM_BYTE = 'B';\n-\n-    /**\n-     * char(C).\n-     */\n-    public static final char JVM_CHAR = 'C';\n-\n-    /**\n-     * double(D).\n-     */\n-    public static final char JVM_DOUBLE = 'D';\n-\n-    /**\n-     * float(F).\n-     */\n-    public static final char JVM_FLOAT = 'F';\n-\n-    /**\n-     * int(I).\n-     */\n-    public static final char JVM_INT = 'I';\n-\n-    /**\n-     * long(J).\n-     */\n-    public static final char JVM_LONG = 'J';\n-\n-    /**\n-     * short(S).\n-     */\n-    public static final char JVM_SHORT = 'S';\n-\n-    public static final Class<?>[] EMPTY_CLASS_ARRAY = new Class<?>[0];\n-\n-    public static final String JAVA_IDENT_REGEX = \"(?:[_$a-zA-Z][_$a-zA-Z0-9]*)\";\n-\n-    public static final String JAVA_NAME_REGEX = \"(?:\" + JAVA_IDENT_REGEX + \"(?:\\\\.\" + JAVA_IDENT_REGEX + \")*)\";\n-\n-    public static final String CLASS_DESC = \"(?:L\" + JAVA_IDENT_REGEX + \"(?:\\\\/\" + JAVA_IDENT_REGEX + \")*;)\";\n-\n-    public static final String ARRAY_DESC = \"(?:\\\\[+(?:(?:[VZBCDFIJS])|\" + CLASS_DESC + \"))\";\n-\n-    public static final String DESC_REGEX = \"(?:(?:[VZBCDFIJS])|\" + CLASS_DESC + \"|\" + ARRAY_DESC + \")\";\n-\n-    public static final Pattern DESC_PATTERN = Pattern.compile(DESC_REGEX);\n-\n-    public static final String METHOD_DESC_REGEX = \"(?:(\" + JAVA_IDENT_REGEX + \")?\\\\((\" + DESC_REGEX + \"*)\\\\)(\" + DESC_REGEX + \")?)\";\n-\n-    public static final Pattern METHOD_DESC_PATTERN = Pattern.compile(METHOD_DESC_REGEX);\n-\n-    public static final Pattern GETTER_METHOD_DESC_PATTERN = Pattern.compile(\"get([A-Z][_a-zA-Z0-9]*)\\\\(\\\\)(\" + DESC_REGEX + \")\");\n-\n-    public static final Pattern SETTER_METHOD_DESC_PATTERN = Pattern.compile(\"set([A-Z][_a-zA-Z0-9]*)\\\\((\" + DESC_REGEX + \")\\\\)V\");\n-\n-    public static final Pattern IS_HAS_CAN_METHOD_DESC_PATTERN = Pattern.compile(\"(?:is|has|can)([A-Z][_a-zA-Z0-9]*)\\\\(\\\\)Z\");\n-\n-    private static final ConcurrentMap<String, Class<?>> DESC_CLASS_CACHE = new ConcurrentHashMap<String, Class<?>>();\n-\n-    private static final ConcurrentMap<String, Class<?>> NAME_CLASS_CACHE = new ConcurrentHashMap<String, Class<?>>();\n-\n-    private static final ConcurrentMap<String, Method> SIGNATURE_METHODS_CACHE = new ConcurrentHashMap<String, Method>();\n-\n-    private static Map<Class<?>, Object> primitiveDefaults = new HashMap<>();\n-\n-    static {\n-        primitiveDefaults.put(int.class, 0);\n-        primitiveDefaults.put(long.class, 0L);\n-        primitiveDefaults.put(byte.class, (byte) 0);\n-        primitiveDefaults.put(char.class, (char) 0);\n-        primitiveDefaults.put(short.class, (short) 0);\n-        primitiveDefaults.put(float.class, (float) 0);\n-        primitiveDefaults.put(double.class, (double) 0);\n-        primitiveDefaults.put(boolean.class, false);\n-        primitiveDefaults.put(void.class, null);\n-    }\n-\n-    private ReflectUtils() {\n-    }\n-\n-    public static boolean isPrimitives(Class<?> cls) {\n-        while (cls.isArray()) {\n-            cls = cls.getComponentType();\n-        }\n-        return isPrimitive(cls);\n-    }\n-\n-    public static boolean isPrimitive(Class<?> cls) {\n-        return cls.isPrimitive() || cls == String.class || cls == Boolean.class || cls == Character.class\n-                || Number.class.isAssignableFrom(cls) || Date.class.isAssignableFrom(cls);\n-    }\n-\n-    public static Class<?> getBoxedClass(Class<?> c) {\n-        if (c == int.class) {\n-            c = Integer.class;\n-        } else if (c == boolean.class) {\n-            c = Boolean.class;\n-        } else if (c == long.class) {\n-            c = Long.class;\n-        } else if (c == float.class) {\n-            c = Float.class;\n-        } else if (c == double.class) {\n-            c = Double.class;\n-        } else if (c == char.class) {\n-            c = Character.class;\n-        } else if (c == byte.class) {\n-            c = Byte.class;\n-        } else if (c == short.class) {\n-            c = Short.class;\n-        }\n-        return c;\n-    }\n-\n-    /**\n-     * is compatible.\n-     *\n-     * @param c class.\n-     * @param o instance.\n-     * @return compatible or not.\n-     */\n-    public static boolean isCompatible(Class<?> c, Object o) {\n-        boolean pt = c.isPrimitive();\n-        if (o == null) {\n-            return !pt;\n-        }\n-\n-        if (pt) {\n-            c = getBoxedClass(c);\n-        }\n-\n-        return c == o.getClass() || c.isInstance(o);\n-    }\n-\n-    /**\n-     * is compatible.\n-     *\n-     * @param cs class array.\n-     * @param os object array.\n-     * @return compatible or not.\n-     */\n-    public static boolean isCompatible(Class<?>[] cs, Object[] os) {\n-        int len = cs.length;\n-        if (len != os.length) {\n-            return false;\n-        }\n-        if (len == 0) {\n-            return true;\n-        }\n-        for (int i = 0; i < len; i++) {\n-            if (!isCompatible(cs[i], os[i])) {\n-                return false;\n-            }\n-        }\n-        return true;\n-    }\n-\n-    public static String getCodeBase(Class<?> cls) {\n-        if (cls == null) {\n-            return null;\n-        }\n-        ProtectionDomain domain = cls.getProtectionDomain();\n-        if (domain == null) {\n-            return null;\n-        }\n-        CodeSource source = domain.getCodeSource();\n-        if (source == null) {\n-            return null;\n-        }\n-        URL location = source.getLocation();\n-        if (location == null) {\n-            return null;\n-        }\n-        return location.getFile();\n-    }\n-\n-    /**\n-     * get name.\n-     * java.lang.Object[][].class => \"java.lang.Object[][]\"\n-     *\n-     * @param c class.\n-     * @return name.\n-     */\n-    public static String getName(Class<?> c) {\n-        if (c.isArray()) {\n-            StringBuilder sb = new StringBuilder();\n-            do {\n-                sb.append(\"[]\");\n-                c = c.getComponentType();\n-            }\n-            while (c.isArray());\n-\n-            return c.getName() + sb.toString();\n-        }\n-        return c.getName();\n-    }\n-\n-    public static Class<?> getGenericClass(Class<?> cls) {\n-        return getGenericClass(cls, 0);\n-    }\n-\n-    public static Class<?> getGenericClass(Class<?> cls, int i) {\n-        try {\n-            ParameterizedType parameterizedType = ((ParameterizedType) cls.getGenericInterfaces()[0]);\n-            Object genericClass = parameterizedType.getActualTypeArguments()[i];\n-\n-            // handle nested generic type\n-            if (genericClass instanceof ParameterizedType) {\n-                return (Class<?>) ((ParameterizedType) genericClass).getRawType();\n-            }\n-\n-            // handle array generic type\n-            if (genericClass instanceof GenericArrayType) {\n-                return (Class<?>) ((GenericArrayType) genericClass).getGenericComponentType();\n-            }\n-\n-            // Requires JDK 7 or higher, Foo<int[]> is no longer GenericArrayType\n-            if (((Class) genericClass).isArray()) {\n-                return ((Class) genericClass).getComponentType();\n-            }\n-            return (Class<?>) genericClass;\n-        } catch (Throwable e) {\n-            throw new IllegalArgumentException(cls.getName() + \" generic type undefined!\", e);\n-        }\n-    }\n-\n-    /**\n-     * get method name.\n-     * \"void do(int)\", \"void do()\", \"int do(java.lang.String,boolean)\"\n-     *\n-     * @param m method.\n-     * @return name.\n-     */\n-    public static String getName(final Method m) {\n-        StringBuilder ret = new StringBuilder();\n-        ret.append(getName(m.getReturnType())).append(' ');\n-        ret.append(m.getName()).append('(');\n-        Class<?>[] parameterTypes = m.getParameterTypes();\n-        for (int i = 0; i < parameterTypes.length; i++) {\n-            if (i > 0) {\n-                ret.append(',');\n-            }\n-            ret.append(getName(parameterTypes[i]));\n-        }\n-        ret.append(')');\n-        return ret.toString();\n-    }\n-\n-    public static String getSignature(String methodName, Class<?>[] parameterTypes) {\n-        StringBuilder sb = new StringBuilder(methodName);\n-        sb.append(\"(\");\n-        if (parameterTypes != null && parameterTypes.length > 0) {\n-            boolean first = true;\n-            for (Class<?> type : parameterTypes) {\n-                if (first) {\n-                    first = false;\n-                } else {\n-                    sb.append(\",\");\n-                }\n-                sb.append(type.getName());\n-            }\n-        }\n-        sb.append(\")\");\n-        return sb.toString();\n-    }\n-\n-    /**\n-     * get constructor name.\n-     * \"()\", \"(java.lang.String,int)\"\n-     *\n-     * @param c constructor.\n-     * @return name.\n-     */\n-    public static String getName(final Constructor<?> c) {\n-        StringBuilder ret = new StringBuilder(\"(\");\n-        Class<?>[] parameterTypes = c.getParameterTypes();\n-        for (int i = 0; i < parameterTypes.length; i++) {\n-            if (i > 0) {\n-                ret.append(',');\n-            }\n-            ret.append(getName(parameterTypes[i]));\n-        }\n-        ret.append(')');\n-        return ret.toString();\n-    }\n-\n-    /**\n-     * get class desc.\n-     * boolean[].class => \"[Z\"\n-     * Object.class => \"Ljava/lang/Object;\"\n-     *\n-     * @param c class.\n-     * @return desc.\n-     * @throws NotFoundException\n-     */\n-    public static String getDesc(Class<?> c) {\n-        StringBuilder ret = new StringBuilder();\n-\n-        while (c.isArray()) {\n-            ret.append('[');\n-            c = c.getComponentType();\n-        }\n-\n-        if (c.isPrimitive()) {\n-            String t = c.getName();\n-            if (\"void\".equals(t)) {\n-                ret.append(JVM_VOID);\n-            } else if (\"boolean\".equals(t)) {\n-                ret.append(JVM_BOOLEAN);\n-            } else if (\"byte\".equals(t)) {\n-                ret.append(JVM_BYTE);\n-            } else if (\"char\".equals(t)) {\n-                ret.append(JVM_CHAR);\n-            } else if (\"double\".equals(t)) {\n-                ret.append(JVM_DOUBLE);\n-            } else if (\"float\".equals(t)) {\n-                ret.append(JVM_FLOAT);\n-            } else if (\"int\".equals(t)) {\n-                ret.append(JVM_INT);\n-            } else if (\"long\".equals(t)) {\n-                ret.append(JVM_LONG);\n-            } else if (\"short\".equals(t)) {\n-                ret.append(JVM_SHORT);\n-            }\n-        } else {\n-            ret.append('L');\n-            ret.append(c.getName().replace('.', '/'));\n-            ret.append(';');\n-        }\n-        return ret.toString();\n-    }\n-\n-    /**\n-     * get class array desc.\n-     * [int.class, boolean[].class, Object.class] => \"I[ZLjava/lang/Object;\"\n-     *\n-     * @param cs class array.\n-     * @return desc.\n-     * @throws NotFoundException\n-     */\n-    public static String getDesc(final Class<?>[] cs) {\n-        if (cs.length == 0) {\n-            return \"\";\n-        }\n-\n-        StringBuilder sb = new StringBuilder(64);\n-        for (Class<?> c : cs) {\n-            sb.append(getDesc(c));\n-        }\n-        return sb.toString();\n-    }\n-\n-    /**\n-     * get method desc.\n-     * int do(int arg1) => \"do(I)I\"\n-     * void do(String arg1,boolean arg2) => \"do(Ljava/lang/String;Z)V\"\n-     *\n-     * @param m method.\n-     * @return desc.\n-     */\n-    public static String getDesc(final Method m) {\n-        StringBuilder ret = new StringBuilder(m.getName()).append('(');\n-        Class<?>[] parameterTypes = m.getParameterTypes();\n-        for (int i = 0; i < parameterTypes.length; i++) {\n-            ret.append(getDesc(parameterTypes[i]));\n-        }\n-        ret.append(')').append(getDesc(m.getReturnType()));\n-        return ret.toString();\n-    }\n-\n-    public static String[] getDescArray(final Method m) {\n-        Class<?>[] parameterTypes = m.getParameterTypes();\n-        String[] arr = new String[parameterTypes.length];\n-\n-        for (int i = 0; i < parameterTypes.length; i++) {\n-            arr[i] = getDesc(parameterTypes[i]);\n-        }\n-        return arr;\n-    }\n-\n-    /**\n-     * get constructor desc.\n-     * \"()V\", \"(Ljava/lang/String;I)V\"\n-     *\n-     * @param c constructor.\n-     * @return desc\n-     */\n-    public static String getDesc(final Constructor<?> c) {\n-        StringBuilder ret = new StringBuilder(\"(\");\n-        Class<?>[] parameterTypes = c.getParameterTypes();\n-        for (int i = 0; i < parameterTypes.length; i++) {\n-            ret.append(getDesc(parameterTypes[i]));\n-        }\n-        ret.append(')').append('V');\n-        return ret.toString();\n-    }\n-\n-    /**\n-     * get method desc.\n-     * \"(I)I\", \"()V\", \"(Ljava/lang/String;Z)V\"\n-     *\n-     * @param m method.\n-     * @return desc.\n-     */\n-    public static String getDescWithoutMethodName(Method m) {\n-        StringBuilder ret = new StringBuilder();\n-        ret.append('(');\n-        Class<?>[] parameterTypes = m.getParameterTypes();\n-        for (int i = 0; i < parameterTypes.length; i++) {\n-            ret.append(getDesc(parameterTypes[i]));\n-        }\n-        ret.append(')').append(getDesc(m.getReturnType()));\n-        return ret.toString();\n-    }\n-\n-    /**\n-     * get class desc.\n-     * Object.class => \"Ljava/lang/Object;\"\n-     * boolean[].class => \"[Z\"\n-     *\n-     * @param c class.\n-     * @return desc.\n-     * @throws NotFoundException\n-     */\n-    public static String getDesc(final CtClass c) throws NotFoundException {\n-        StringBuilder ret = new StringBuilder();\n-        if (c.isArray()) {\n-            ret.append('[');\n-            ret.append(getDesc(c.getComponentType()));\n-        } else if (c.isPrimitive()) {\n-            String t = c.getName();\n-            if (\"void\".equals(t)) {\n-                ret.append(JVM_VOID);\n-            } else if (\"boolean\".equals(t)) {\n-                ret.append(JVM_BOOLEAN);\n-            } else if (\"byte\".equals(t)) {\n-                ret.append(JVM_BYTE);\n-            } else if (\"char\".equals(t)) {\n-                ret.append(JVM_CHAR);\n-            } else if (\"double\".equals(t)) {\n-                ret.append(JVM_DOUBLE);\n-            } else if (\"float\".equals(t)) {\n-                ret.append(JVM_FLOAT);\n-            } else if (\"int\".equals(t)) {\n-                ret.append(JVM_INT);\n-            } else if (\"long\".equals(t)) {\n-                ret.append(JVM_LONG);\n-            } else if (\"short\".equals(t)) {\n-                ret.append(JVM_SHORT);\n-            }\n-        } else {\n-            ret.append('L');\n-            ret.append(c.getName().replace('.', '/'));\n-            ret.append(';');\n-        }\n-        return ret.toString();\n-    }\n-\n-    /**\n-     * get method desc.\n-     * \"do(I)I\", \"do()V\", \"do(Ljava/lang/String;Z)V\"\n-     *\n-     * @param m method.\n-     * @return desc.\n-     */\n-    public static String getDesc(final CtMethod m) throws NotFoundException {\n-        StringBuilder ret = new StringBuilder(m.getName()).append('(');\n-        CtClass[] parameterTypes = m.getParameterTypes();\n-        for (CtClass parameterType : parameterTypes) {\n-            ret.append(getDesc(parameterType));\n-        }\n-        ret.append(')').append(getDesc(m.getReturnType()));\n-        return ret.toString();\n-    }\n-\n-    /**\n-     * get constructor desc.\n-     * \"()V\", \"(Ljava/lang/String;I)V\"\n-     *\n-     * @param c constructor.\n-     * @return desc\n-     */\n-    public static String getDesc(final CtConstructor c) throws NotFoundException {\n-        StringBuilder ret = new StringBuilder(\"(\");\n-        CtClass[] parameterTypes = c.getParameterTypes();\n-        for (int i = 0; i < parameterTypes.length; i++) {\n-            ret.append(getDesc(parameterTypes[i]));\n-        }\n-        ret.append(')').append('V');\n-        return ret.toString();\n-    }\n-\n-    /**\n-     * get method desc.\n-     * \"(I)I\", \"()V\", \"(Ljava/lang/String;Z)V\".\n-     *\n-     * @param m method.\n-     * @return desc.\n-     */\n-    public static String getDescWithoutMethodName(final CtMethod m) throws NotFoundException {\n-        StringBuilder ret = new StringBuilder();\n-        ret.append('(');\n-        CtClass[] parameterTypes = m.getParameterTypes();\n-        for (int i = 0; i < parameterTypes.length; i++) {\n-            ret.append(getDesc(parameterTypes[i]));\n-        }\n-        ret.append(')').append(getDesc(m.getReturnType()));\n-        return ret.toString();\n-    }\n-\n-    /**\n-     * name to desc.\n-     * java.util.Map[][] => \"[[Ljava/util/Map;\"\n-     *\n-     * @param name name.\n-     * @return desc.\n-     */\n-    public static String name2desc(String name) {\n-        StringBuilder sb = new StringBuilder();\n-        int c = 0, index = name.indexOf('[');\n-        if (index > 0) {\n-            c = (name.length() - index) / 2;\n-            name = name.substring(0, index);\n-        }\n-        while (c-- > 0) {\n-            sb.append(\"[\");\n-        }\n-        if (\"void\".equals(name)) {\n-            sb.append(JVM_VOID);\n-        } else if (\"boolean\".equals(name)) {\n-            sb.append(JVM_BOOLEAN);\n-        } else if (\"byte\".equals(name)) {\n-            sb.append(JVM_BYTE);\n-        } else if (\"char\".equals(name)) {\n-            sb.append(JVM_CHAR);\n-        } else if (\"double\".equals(name)) {\n-            sb.append(JVM_DOUBLE);\n-        } else if (\"float\".equals(name)) {\n-            sb.append(JVM_FLOAT);\n-        } else if (\"int\".equals(name)) {\n-            sb.append(JVM_INT);\n-        } else if (\"long\".equals(name)) {\n-            sb.append(JVM_LONG);\n-        } else if (\"short\".equals(name)) {\n-            sb.append(JVM_SHORT);\n-        } else {\n-            sb.append('L').append(name.replace('.', '/')).append(';');\n-        }\n-        return sb.toString();\n-    }\n-\n-    /**\n-     * desc to name.\n-     * \"[[I\" => \"int[][]\"\n-     *\n-     * @param desc desc.\n-     * @return name.\n-     */\n-    public static String desc2name(String desc) {\n-        StringBuilder sb = new StringBuilder();\n-        int c = desc.lastIndexOf('[') + 1;\n-        if (desc.length() == c + 1) {\n-            switch (desc.charAt(c)) {\n-                case JVM_VOID: {\n-                    sb.append(\"void\");\n-                    break;\n-                }\n-                case JVM_BOOLEAN: {\n-                    sb.append(\"boolean\");\n-                    break;\n-                }\n-                case JVM_BYTE: {\n-                    sb.append(\"byte\");\n-                    break;\n-                }\n-                case JVM_CHAR: {\n-                    sb.append(\"char\");\n-                    break;\n-                }\n-                case JVM_DOUBLE: {\n-                    sb.append(\"double\");\n-                    break;\n-                }\n-                case JVM_FLOAT: {\n-                    sb.append(\"float\");\n-                    break;\n-                }\n-                case JVM_INT: {\n-                    sb.append(\"int\");\n-                    break;\n-                }\n-                case JVM_LONG: {\n-                    sb.append(\"long\");\n-                    break;\n-                }\n-                case JVM_SHORT: {\n-                    sb.append(\"short\");\n-                    break;\n-                }\n-                default:\n-                    throw new RuntimeException();\n-            }\n-        } else {\n-            sb.append(desc.substring(c + 1, desc.length() - 1).replace('/', '.'));\n-        }\n-        while (c-- > 0) {\n-            sb.append(\"[]\");\n-        }\n-        return sb.toString();\n-    }\n-\n-    public static Class<?> forName(String name) {\n-        try {\n-            return name2class(name);\n-        } catch (ClassNotFoundException e) {\n-            throw new IllegalStateException(\"Not found class \" + name + \", cause: \" + e.getMessage(), e);\n-        }\n-    }\n-\n-    public static Class<?> forName(ClassLoader cl, String name) {\n-        try {\n-            return name2class(cl, name);\n-        } catch (ClassNotFoundException e) {\n-            throw new IllegalStateException(\"Not found class \" + name + \", cause: \" + e.getMessage(), e);\n-        }\n-    }\n-\n-    /**\n-     * name to class.\n-     * \"boolean\" => boolean.class\n-     * \"java.util.Map[][]\" => java.util.Map[][].class\n-     *\n-     * @param name name.\n-     * @return Class instance.\n-     */\n-    public static Class<?> name2class(String name) throws ClassNotFoundException {\n-        return name2class(ClassUtils.getClassLoader(), name);\n-    }\n-\n-    /**\n-     * name to class.\n-     * \"boolean\" => boolean.class\n-     * \"java.util.Map[][]\" => java.util.Map[][].class\n-     *\n-     * @param cl   ClassLoader instance.\n-     * @param name name.\n-     * @return Class instance.\n-     */\n-    private static Class<?> name2class(ClassLoader cl, String name) throws ClassNotFoundException {\n-        int c = 0, index = name.indexOf('[');\n-        if (index > 0) {\n-            c = (name.length() - index) / 2;\n-            name = name.substring(0, index);\n-        }\n-        if (c > 0) {\n-            StringBuilder sb = new StringBuilder();\n-            while (c-- > 0) {\n-                sb.append(\"[\");\n-            }\n-\n-            if (\"void\".equals(name)) {\n-                sb.append(JVM_VOID);\n-            } else if (\"boolean\".equals(name)) {\n-                sb.append(JVM_BOOLEAN);\n-            } else if (\"byte\".equals(name)) {\n-                sb.append(JVM_BYTE);\n-            } else if (\"char\".equals(name)) {\n-                sb.append(JVM_CHAR);\n-            } else if (\"double\".equals(name)) {\n-                sb.append(JVM_DOUBLE);\n-            } else if (\"float\".equals(name)) {\n-                sb.append(JVM_FLOAT);\n-            } else if (\"int\".equals(name)) {\n-                sb.append(JVM_INT);\n-            } else if (\"long\".equals(name)) {\n-                sb.append(JVM_LONG);\n-            } else if (\"short\".equals(name)) {\n-                sb.append(JVM_SHORT);\n-            } else {\n-                // \"java.lang.Object\" ==> \"Ljava.lang.Object;\"\n-                sb.append('L').append(name).append(';');\n-            }\n-            name = sb.toString();\n-        } else {\n-            if (\"void\".equals(name)) {\n-                return void.class;\n-            }\n-            if (\"boolean\".equals(name)) {\n-                return boolean.class;\n-            }\n-            if (\"byte\".equals(name)) {\n-                return byte.class;\n-            }\n-            if (\"char\".equals(name)) {\n-                return char.class;\n-            }\n-            if (\"double\".equals(name)) {\n-                return double.class;\n-            }\n-            if (\"float\".equals(name)) {\n-                return float.class;\n-            }\n-            if (\"int\".equals(name)) {\n-                return int.class;\n-            }\n-            if (\"long\".equals(name)) {\n-                return long.class;\n-            }\n-            if (\"short\".equals(name)) {\n-                return short.class;\n-            }\n-        }\n-\n-        if (cl == null) {\n-            cl = ClassUtils.getClassLoader();\n-        }\n-        Class<?> clazz = NAME_CLASS_CACHE.get(name);\n-        if (clazz == null) {\n-            clazz = Class.forName(name, true, cl);\n-            NAME_CLASS_CACHE.put(name, clazz);\n-        }\n-        return clazz;\n-    }\n-\n-    /**\n-     * desc to class.\n-     * \"[Z\" => boolean[].class\n-     * \"[[Ljava/util/Map;\" => java.util.Map[][].class\n-     *\n-     * @param desc desc.\n-     * @return Class instance.\n-     * @throws ClassNotFoundException\n-     */\n-    public static Class<?> desc2class(String desc) throws ClassNotFoundException {\n-        return desc2class(ClassUtils.getClassLoader(), desc);\n-    }\n-\n-    /**\n-     * desc to class.\n-     * \"[Z\" => boolean[].class\n-     * \"[[Ljava/util/Map;\" => java.util.Map[][].class\n-     *\n-     * @param cl   ClassLoader instance.\n-     * @param desc desc.\n-     * @return Class instance.\n-     * @throws ClassNotFoundException\n-     */\n-    private static Class<?> desc2class(ClassLoader cl, String desc) throws ClassNotFoundException {\n-        switch (desc.charAt(0)) {\n-            case JVM_VOID:\n-                return void.class;\n-            case JVM_BOOLEAN:\n-                return boolean.class;\n-            case JVM_BYTE:\n-                return byte.class;\n-            case JVM_CHAR:\n-                return char.class;\n-            case JVM_DOUBLE:\n-                return double.class;\n-            case JVM_FLOAT:\n-                return float.class;\n-            case JVM_INT:\n-                return int.class;\n-            case JVM_LONG:\n-                return long.class;\n-            case JVM_SHORT:\n-                return short.class;\n-            case 'L':\n-                // \"Ljava/lang/Object;\" ==> \"java.lang.Object\"\n-                desc = desc.substring(1, desc.length() - 1).replace('/', '.');\n-                break;\n-            case '[':\n-                // \"[[Ljava/lang/Object;\" ==> \"[[Ljava.lang.Object;\"\n-                desc = desc.replace('/', '.');\n-                break;\n-            default:\n-                throw new ClassNotFoundException(\"Class not found: \" + desc);\n-        }\n-\n-        if (cl == null) {\n-            cl = ClassUtils.getClassLoader();\n-        }\n-        Class<?> clazz = DESC_CLASS_CACHE.get(desc);\n-        if (clazz == null) {\n-            clazz = Class.forName(desc, true, cl);\n-            DESC_CLASS_CACHE.put(desc, clazz);\n-        }\n-        return clazz;\n-    }\n-\n-    /**\n-     * get class array instance.\n-     *\n-     * @param desc desc.\n-     * @return Class class array.\n-     * @throws ClassNotFoundException\n-     */\n-    public static Class<?>[] desc2classArray(String desc) throws ClassNotFoundException {\n-        Class<?>[] ret = desc2classArray(ClassUtils.getClassLoader(), desc);\n-        return ret;\n-    }\n-\n-    /**\n-     * get class array instance.\n-     *\n-     * @param cl   ClassLoader instance.\n-     * @param desc desc.\n-     * @return Class[] class array.\n-     * @throws ClassNotFoundException\n-     */\n-    private static Class<?>[] desc2classArray(ClassLoader cl, String desc) throws ClassNotFoundException {\n-        if (desc.length() == 0) {\n-            return EMPTY_CLASS_ARRAY;\n-        }\n-\n-        List<Class<?>> cs = new ArrayList<Class<?>>();\n-        Matcher m = DESC_PATTERN.matcher(desc);\n-        while (m.find()) {\n-            cs.add(desc2class(cl, m.group()));\n-        }\n-        return cs.toArray(EMPTY_CLASS_ARRAY);\n-    }\n-\n-    /**\n-     * Find method from method signature\n-     *\n-     * @param clazz      Target class to find method\n-     * @param methodName Method signature, e.g.: method1(int, String). It is allowed to provide method name only, e.g.: method2\n-     * @return target method\n-     * @throws NoSuchMethodException\n-     * @throws ClassNotFoundException\n-     * @throws IllegalStateException  when multiple methods are found (overridden method when parameter info is not provided)\n-     * @deprecated Recommend {@link MethodUtils#findMethod(Class, String, Class[])}\n-     */\n-    @Deprecated\n-    public static Method findMethodByMethodSignature(Class<?> clazz, String methodName, String[] parameterTypes)\n-            throws NoSuchMethodException, ClassNotFoundException {\n-        String signature = clazz.getName() + \".\" + methodName;\n-        if (parameterTypes != null && parameterTypes.length > 0) {\n-            signature += StringUtils.join(parameterTypes);\n-        }\n-        Method method = SIGNATURE_METHODS_CACHE.get(signature);\n-        if (method != null) {\n-            return method;\n-        }\n-        if (parameterTypes == null) {\n-            List<Method> finded = new ArrayList<Method>();\n-            for (Method m : clazz.getMethods()) {\n-                if (m.getName().equals(methodName)) {\n-                    finded.add(m);\n-                }\n-            }\n-            if (finded.isEmpty()) {\n-                throw new NoSuchMethodException(\"No such method \" + methodName + \" in class \" + clazz);\n-            }\n-            if (finded.size() > 1) {\n-                String msg = String.format(\"Not unique method for method name(%s) in class(%s), find %d methods.\",\n-                        methodName, clazz.getName(), finded.size());\n-                throw new IllegalStateException(msg);\n-            }\n-            method = finded.get(0);\n-        } else {\n-            Class<?>[] types = new Class<?>[parameterTypes.length];\n-            for (int i = 0; i < parameterTypes.length; i++) {\n-                types[i] = ReflectUtils.name2class(parameterTypes[i]);\n-            }\n-            method = clazz.getMethod(methodName, types);\n-\n-        }\n-        SIGNATURE_METHODS_CACHE.put(signature, method);\n-        return method;\n-    }\n-\n-    /**\n-     * @param clazz      Target class to find method\n-     * @param methodName Method signature, e.g.: method1(int, String). It is allowed to provide method name only, e.g.: method2\n-     * @return target method\n-     * @throws NoSuchMethodException\n-     * @throws ClassNotFoundException\n-     * @throws IllegalStateException  when multiple methods are found (overridden method when parameter info is not provided)\n-     * @deprecated Recommend {@link MethodUtils#findMethod(Class, String, Class[])}\n-     */\n-    @Deprecated\n-    public static Method findMethodByMethodName(Class<?> clazz, String methodName)\n-            throws NoSuchMethodException, ClassNotFoundException {\n-        return findMethodByMethodSignature(clazz, methodName, null);\n-    }\n-\n-    public static Constructor<?> findConstructor(Class<?> clazz, Class<?> paramType) throws NoSuchMethodException {\n-        Constructor<?> targetConstructor;\n-        try {\n-            targetConstructor = clazz.getConstructor(new Class<?>[]{paramType});\n-        } catch (NoSuchMethodException e) {\n-            targetConstructor = null;\n-            Constructor<?>[] constructors = clazz.getConstructors();\n-            for (Constructor<?> constructor : constructors) {\n-                if (Modifier.isPublic(constructor.getModifiers())\n-                        && constructor.getParameterTypes().length == 1\n-                        && constructor.getParameterTypes()[0].isAssignableFrom(paramType)) {\n-                    targetConstructor = constructor;\n-                    break;\n-                }\n-            }\n-            if (targetConstructor == null) {\n-                throw e;\n-            }\n-        }\n-        return targetConstructor;\n-    }\n-\n-    /**\n-     * Check if one object is the implementation for a given interface.\n-     * <p>\n-     * This method will not trigger classloading for the given interface, therefore it will not lead to error when\n-     * the given interface is not visible by the classloader\n-     *\n-     * @param obj                Object to examine\n-     * @param interfaceClazzName The given interface\n-     * @return true if the object implements the given interface, otherwise return false\n-     */\n-    public static boolean isInstance(Object obj, String interfaceClazzName) {\n-        for (Class<?> clazz = obj.getClass();\n-             clazz != null && !clazz.equals(Object.class);\n-             clazz = clazz.getSuperclass()) {\n-            Class<?>[] interfaces = clazz.getInterfaces();\n-            for (Class<?> itf : interfaces) {\n-                if (itf.getName().equals(interfaceClazzName)) {\n-                    return true;\n-                }\n-            }\n-        }\n-        return false;\n-    }\n-\n-    public static Object getEmptyObject(Class<?> returnType) {\n-        return getEmptyObject(returnType, new HashMap<>(), 0);\n-    }\n-\n-    private static Object getEmptyObject(Class<?> returnType, Map<Class<?>, Object> emptyInstances, int level) {\n-        if (level > 2) {\n-            return null;\n-        }\n-        if (returnType == null) {\n-            return null;\n-        }\n-        if (returnType == boolean.class || returnType == Boolean.class) {\n-            return false;\n-        }\n-        if (returnType == char.class || returnType == Character.class) {\n-            return '\\0';\n-        }\n-        if (returnType == byte.class || returnType == Byte.class) {\n-            return (byte) 0;\n-        }\n-        if (returnType == short.class || returnType == Short.class) {\n-            return (short) 0;\n-        }\n-        if (returnType == int.class || returnType == Integer.class) {\n-            return 0;\n-        }\n-        if (returnType == long.class || returnType == Long.class) {\n-            return 0L;\n-        }\n-        if (returnType == float.class || returnType == Float.class) {\n-            return 0F;\n-        }\n-        if (returnType == double.class || returnType == Double.class) {\n-            return 0D;\n-        }\n-        if (returnType.isArray()) {\n-            return Array.newInstance(returnType.getComponentType(), 0);\n-        }\n-        if (returnType.isAssignableFrom(ArrayList.class)) {\n-            return new ArrayList<>(0);\n-        }\n-        if (returnType.isAssignableFrom(HashSet.class)) {\n-            return new HashSet<>(0);\n-        }\n-        if (returnType.isAssignableFrom(HashMap.class)) {\n-            return new HashMap<>(0);\n-        }\n-        if (String.class.equals(returnType)) {\n-            return \"\";\n-        }\n-        if (returnType.isInterface()) {\n-            return null;\n-        }\n-\n-        try {\n-            Object value = emptyInstances.get(returnType);\n-            if (value == null) {\n-                value = returnType.getDeclaredConstructor().newInstance();\n-                emptyInstances.put(returnType, value);\n-            }\n-            Class<?> cls = value.getClass();\n-            while (cls != null && cls != Object.class) {\n-                Field[] fields = cls.getDeclaredFields();\n-                for (Field field : fields) {\n-                    if (field.isSynthetic()) {\n-                        continue;\n-                    }\n-                    Object property = getEmptyObject(field.getType(), emptyInstances, level + 1);\n-                    if (property != null) {\n-                        try {\n-                            ReflectUtils.makeAccessible(field);\n-                            field.set(value, property);\n-                        } catch (Throwable ignored) {\n-                        }\n-                    }\n-                }\n-                cls = cls.getSuperclass();\n-            }\n-            return value;\n-        } catch (Throwable e) {\n-            return null;\n-        }\n-    }\n-\n-    public static Object defaultReturn(Method m) {\n-        if (m.getReturnType().isPrimitive()) {\n-            return primitiveDefaults.get(m.getReturnType());\n-        } else {\n-            return null;\n-        }\n-    }\n-\n-    public static Object defaultReturn(Class<?> classType) {\n-        if (classType != null && classType.isPrimitive()) {\n-            return primitiveDefaults.get(classType);\n-        } else {\n-            return null;\n-        }\n-    }\n-\n-    public static boolean isBeanPropertyReadMethod(Method method) {\n-        return method != null\n-                && Modifier.isPublic(method.getModifiers())\n-                && !Modifier.isStatic(method.getModifiers())\n-                && method.getReturnType() != void.class\n-                && method.getDeclaringClass() != Object.class\n-                && method.getParameterTypes().length == 0\n-                && ((method.getName().startsWith(\"get\") && method.getName().length() > 3)\n-                || (method.getName().startsWith(\"is\") && method.getName().length() > 2));\n-    }\n-\n-    public static String getPropertyNameFromBeanReadMethod(Method method) {\n-        if (isBeanPropertyReadMethod(method)) {\n-            if (method.getName().startsWith(\"get\")) {\n-                return method.getName().substring(3, 4).toLowerCase()\n-                        + method.getName().substring(4);\n-            }\n-            if (method.getName().startsWith(\"is\")) {\n-                return method.getName().substring(2, 3).toLowerCase()\n-                        + method.getName().substring(3);\n-            }\n-        }\n-        return null;\n-    }\n-\n-    public static boolean isBeanPropertyWriteMethod(Method method) {\n-        return method != null\n-                && Modifier.isPublic(method.getModifiers())\n-                && !Modifier.isStatic(method.getModifiers())\n-                && method.getDeclaringClass() != Object.class\n-                && method.getParameterTypes().length == 1\n-                && method.getName().startsWith(\"set\")\n-                && method.getName().length() > 3;\n-    }\n-\n-    public static String getPropertyNameFromBeanWriteMethod(Method method) {\n-        if (isBeanPropertyWriteMethod(method)) {\n-            return method.getName().substring(3, 4).toLowerCase()\n-                    + method.getName().substring(4);\n-        }\n-        return null;\n-    }\n-\n-    public static boolean isPublicInstanceField(Field field) {\n-        return Modifier.isPublic(field.getModifiers())\n-                && !Modifier.isStatic(field.getModifiers())\n-                && !Modifier.isFinal(field.getModifiers())\n-                && !field.isSynthetic();\n-    }\n-\n-    public static Map<String, Field> getBeanPropertyFields(Class cl) {\n-        Map<String, Field> properties = new HashMap<String, Field>();\n-        for (; cl != null; cl = cl.getSuperclass()) {\n-            Field[] fields = cl.getDeclaredFields();\n-            for (Field field : fields) {\n-                if (Modifier.isTransient(field.getModifiers())\n-                        || Modifier.isStatic(field.getModifiers())) {\n-                    continue;\n-                }\n-                ReflectUtils.makeAccessible(field);\n-\n-                properties.put(field.getName(), field);\n-            }\n-        }\n-\n-        return properties;\n-    }\n-\n-    public static Map<String, Method> getBeanPropertyReadMethods(Class cl) {\n-        Map<String, Method> properties = new HashMap<String, Method>();\n-        for (; cl != null; cl = cl.getSuperclass()) {\n-            Method[] methods = cl.getDeclaredMethods();\n-            for (Method method : methods) {\n-                if (isBeanPropertyReadMethod(method)) {\n-                    ReflectUtils.makeAccessible(method);\n-                    String property = getPropertyNameFromBeanReadMethod(method);\n-                    properties.put(property, method);\n-                }\n-            }\n-        }\n-\n-        return properties;\n-    }\n-\n-    public static Type[] getReturnTypes(Method method) {\n-        Class<?> returnType = method.getReturnType();\n-        Type genericReturnType = method.getGenericReturnType();\n-        if (Future.class.isAssignableFrom(returnType)) {\n-            if (genericReturnType instanceof ParameterizedType) {\n-                Type actualArgType = ((ParameterizedType) genericReturnType).getActualTypeArguments()[0];\n-                if (actualArgType instanceof ParameterizedType) {\n-                    returnType = (Class<?>) ((ParameterizedType) actualArgType).getRawType();\n-                    genericReturnType = actualArgType;\n-                } else if (actualArgType instanceof TypeVariable) {\n-                    returnType = (Class<?>) ((TypeVariable<?>) actualArgType).getBounds()[0];\n-                    genericReturnType = actualArgType;\n-                } else {\n-                    returnType = (Class<?>) actualArgType;\n-                    genericReturnType = returnType;\n-                }\n-            } else {\n-                returnType = null;\n-                genericReturnType = null;\n-            }\n-        }\n-        return new Type[]{returnType, genericReturnType};\n-    }\n-\n-    /**\n-     * Find the {@link Set} of {@link ParameterizedType}\n-     *\n-     * @param sourceClass the source {@link Class class}\n-     * @return non-null read-only {@link Set}\n-     * @since 2.7.5\n-     */\n-    public static Set<ParameterizedType> findParameterizedTypes(Class<?> sourceClass) {\n-        // Add Generic Interfaces\n-        List<Type> genericTypes = new LinkedList<>(asList(sourceClass.getGenericInterfaces()));\n-        // Add Generic Super Class\n-        genericTypes.add(sourceClass.getGenericSuperclass());\n-\n-        Set<ParameterizedType> parameterizedTypes = genericTypes.stream()\n-                .filter(type -> type instanceof ParameterizedType)// filter ParameterizedType\n-                .map(ParameterizedType.class::cast)  // cast to ParameterizedType\n-                .collect(Collectors.toSet());\n-\n-        if (parameterizedTypes.isEmpty()) { // If not found, try to search super types recursively\n-            genericTypes.stream()\n-                    .filter(type -> type instanceof Class)\n-                    .map(Class.class::cast)\n-                    .forEach(superClass -> parameterizedTypes.addAll(findParameterizedTypes(superClass)));\n-        }\n-\n-        return unmodifiableSet(parameterizedTypes);                     // build as a Set\n-\n-    }\n-\n-    /**\n-     * Find the hierarchical types from the source {@link Class class} by specified {@link Class type}.\n-     *\n-     * @param sourceClass the source {@link Class class}\n-     * @param matchType   the type to match\n-     * @param <T>         the type to match\n-     * @return non-null read-only {@link Set}\n-     * @since 2.7.5\n-     */\n-    public static <T> Set<Class<T>> findHierarchicalTypes(Class<?> sourceClass, Class<T> matchType) {\n-        if (sourceClass == null) {\n-            return Collections.emptySet();\n-        }\n-\n-        Set<Class<T>> hierarchicalTypes = new LinkedHashSet<>();\n-\n-        if (matchType.isAssignableFrom(sourceClass)) {\n-            hierarchicalTypes.add((Class<T>) sourceClass);\n-        }\n-\n-        // Find all super classes\n-        hierarchicalTypes.addAll(findHierarchicalTypes(sourceClass.getSuperclass(), matchType));\n-\n-        return unmodifiableSet(hierarchicalTypes);\n-    }\n-\n-    /**\n-     * Get the value from the specified bean and its getter method.\n-     *\n-     * @param bean       the bean instance\n-     * @param methodName the name of getter\n-     * @param <T>        the type of property value\n-     * @return\n-     * @since 2.7.5\n-     */\n-    public static <T> T getProperty(Object bean, String methodName) {\n-        Class<?> beanClass = bean.getClass();\n-        BeanInfo beanInfo = null;\n-        T propertyValue = null;\n-\n-        try {\n-            beanInfo = Introspector.getBeanInfo(beanClass);\n-            propertyValue = (T) Stream.of(beanInfo.getMethodDescriptors())\n-                    .filter(methodDescriptor -> methodName.equals(methodDescriptor.getName()))\n-                    .findFirst()\n-                    .map(method -> {\n-                        try {\n-                            return method.getMethod().invoke(bean);\n-                        } catch (Exception e) {\n-                            //ignore\n-                        }\n-                        return null;\n-                    }).get();\n-        } catch (Exception e) {\n-\n-        }\n-        return propertyValue;\n-    }\n-\n-    /**\n-     * Resolve the types of the specified values\n-     *\n-     * @param values the values\n-     * @return If can't be resolved, return {@link ReflectUtils#EMPTY_CLASS_ARRAY empty class array}\n-     * @since 2.7.6\n-     */\n-    public static Class[] resolveTypes(Object... values) {\n-\n-        if (isEmpty(values)) {\n-            return EMPTY_CLASS_ARRAY;\n-        }\n-\n-        int size = values.length;\n-\n-        Class[] types = new Class[size];\n-\n-        for (int i = 0; i < size; i++) {\n-            Object value = values[i];\n-            types[i] = value == null ? null : value.getClass();\n-        }\n-\n-        return types;\n-    }\n-\n-    /**\n-     * Copy from org.springframework.util.ReflectionUtils.\n-     * Make the given method accessible, explicitly setting it accessible if\n-     * necessary. The {@code setAccessible(true)} method is only called\n-     * when actually necessary, to avoid unnecessary conflicts with a JVM\n-     * SecurityManager (if active).\n-     * @param method the method to make accessible\n-     * @see java.lang.reflect.Method#setAccessible\n-     */\n-    @SuppressWarnings(\"deprecation\")  // on JDK 9\n-    public static void makeAccessible(Method method) {\n-        if ((!Modifier.isPublic(method.getModifiers()) ||\n-                !Modifier.isPublic(method.getDeclaringClass().getModifiers())) && !method.isAccessible()) {\n-            method.setAccessible(true);\n-        }\n-    }\n-\n-    /**\n-     * Copy from org.springframework.util.ReflectionUtils.\n-     * Make the given field accessible, explicitly setting it accessible if\n-     * necessary. The {@code setAccessible(true)} method is only called\n-     * when actually necessary, to avoid unnecessary conflicts with a JVM\n-     * SecurityManager (if active).\n-     * @param field the field to make accessible\n-     * @see java.lang.reflect.Field#setAccessible\n-     */\n-    @SuppressWarnings(\"deprecation\")  // on JDK 9\n-    public static void makeAccessible(Field field) {\n-        if ((!Modifier.isPublic(field.getModifiers()) ||\n-                !Modifier.isPublic(field.getDeclaringClass().getModifiers()) ||\n-                Modifier.isFinal(field.getModifiers())) && !field.isAccessible()) {\n-            field.setAccessible(true);\n-        }\n-    }\n-\n-    /**\n-     * Copy from org.springframework.util.ReflectionUtils.\n-     * Make the given constructor accessible, explicitly setting it accessible\n-     * if necessary. The {@code setAccessible(true)} method is only called\n-     * when actually necessary, to avoid unnecessary conflicts with a JVM\n-     * SecurityManager (if active).\n-     * @param ctor the constructor to make accessible\n-     * @see java.lang.reflect.Constructor#setAccessible\n-     */\n-    @SuppressWarnings(\"deprecation\")  // on JDK 9\n-    public static void makeAccessible(Constructor<?> ctor) {\n-        if ((!Modifier.isPublic(ctor.getModifiers()) ||\n-                !Modifier.isPublic(ctor.getDeclaringClass().getModifiers())) && !ctor.isAccessible()) {\n-            ctor.setAccessible(true);\n-        }\n-    }\n-\n-    public static boolean checkZeroArgConstructor(Class clazz) {\n-        try {\n-            clazz.getDeclaredConstructor();\n-            return true;\n-        } catch (NoSuchMethodException e) {\n-            return false;\n-        }\n-    }\n-\n-    public static boolean isJdk(Class clazz) {\n-        return clazz.getName().startsWith(\"java.\") || clazz.getName().startsWith(\"javax.\");\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import javassist.CtClass;\r\n+import javassist.CtConstructor;\r\n+import javassist.CtMethod;\r\n+import javassist.NotFoundException;\r\n+\r\n+import java.beans.BeanInfo;\r\n+import java.beans.Introspector;\r\n+import java.lang.reflect.Array;\r\n+import java.lang.reflect.Constructor;\r\n+import java.lang.reflect.Field;\r\n+import java.lang.reflect.GenericArrayType;\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Modifier;\r\n+import java.lang.reflect.ParameterizedType;\r\n+import java.lang.reflect.Type;\r\n+import java.lang.reflect.TypeVariable;\r\n+import java.net.URL;\r\n+import java.security.CodeSource;\r\n+import java.security.ProtectionDomain;\r\n+import java.util.ArrayList;\r\n+import java.util.Collections;\r\n+import java.util.Date;\r\n+import java.util.HashMap;\r\n+import java.util.HashSet;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+import java.util.concurrent.Future;\r\n+import java.util.regex.Matcher;\r\n+import java.util.regex.Pattern;\r\n+import java.util.stream.Collectors;\r\n+import java.util.stream.Stream;\r\n+\r\n+import static java.util.Arrays.asList;\r\n+import static java.util.Collections.unmodifiableSet;\r\n+import static org.apache.dubbo.common.utils.ArrayUtils.isEmpty;\r\n+\r\n+/**\r\n+ * ReflectUtils\r\n+ */\r\n+public final class ReflectUtils {\r\n+\r\n+    /**\r\n+     * void(V).\r\n+     */\r\n+    public static final char JVM_VOID = 'V';\r\n+\r\n+    /**\r\n+     * boolean(Z).\r\n+     */\r\n+    public static final char JVM_BOOLEAN = 'Z';\r\n+\r\n+    /**\r\n+     * byte(B).\r\n+     */\r\n+    public static final char JVM_BYTE = 'B';\r\n+\r\n+    /**\r\n+     * char(C).\r\n+     */\r\n+    public static final char JVM_CHAR = 'C';\r\n+\r\n+    /**\r\n+     * double(D).\r\n+     */\r\n+    public static final char JVM_DOUBLE = 'D';\r\n+\r\n+    /**\r\n+     * float(F).\r\n+     */\r\n+    public static final char JVM_FLOAT = 'F';\r\n+\r\n+    /**\r\n+     * int(I).\r\n+     */\r\n+    public static final char JVM_INT = 'I';\r\n+\r\n+    /**\r\n+     * long(J).\r\n+     */\r\n+    public static final char JVM_LONG = 'J';\r\n+\r\n+    /**\r\n+     * short(S).\r\n+     */\r\n+    public static final char JVM_SHORT = 'S';\r\n+\r\n+    public static final Class<?>[] EMPTY_CLASS_ARRAY = new Class<?>[0];\r\n+\r\n+    public static final String JAVA_IDENT_REGEX = \"(?:[_$a-zA-Z][_$a-zA-Z0-9]*)\";\r\n+\r\n+    public static final String JAVA_NAME_REGEX = \"(?:\" + JAVA_IDENT_REGEX + \"(?:\\\\.\" + JAVA_IDENT_REGEX + \")*)\";\r\n+\r\n+    public static final String CLASS_DESC = \"(?:L\" + JAVA_IDENT_REGEX + \"(?:\\\\/\" + JAVA_IDENT_REGEX + \")*;)\";\r\n+\r\n+    public static final String ARRAY_DESC = \"(?:\\\\[+(?:(?:[VZBCDFIJS])|\" + CLASS_DESC + \"))\";\r\n+\r\n+    public static final String DESC_REGEX = \"(?:(?:[VZBCDFIJS])|\" + CLASS_DESC + \"|\" + ARRAY_DESC + \")\";\r\n+\r\n+    public static final Pattern DESC_PATTERN = Pattern.compile(DESC_REGEX);\r\n+\r\n+    public static final String METHOD_DESC_REGEX = \"(?:(\" + JAVA_IDENT_REGEX + \")?\\\\((\" + DESC_REGEX + \"*)\\\\)(\" + DESC_REGEX + \")?)\";\r\n+\r\n+    public static final Pattern METHOD_DESC_PATTERN = Pattern.compile(METHOD_DESC_REGEX);\r\n+\r\n+    public static final Pattern GETTER_METHOD_DESC_PATTERN = Pattern.compile(\"get([A-Z][_a-zA-Z0-9]*)\\\\(\\\\)(\" + DESC_REGEX + \")\");\r\n+\r\n+    public static final Pattern SETTER_METHOD_DESC_PATTERN = Pattern.compile(\"set([A-Z][_a-zA-Z0-9]*)\\\\((\" + DESC_REGEX + \")\\\\)V\");\r\n+\r\n+    public static final Pattern IS_HAS_CAN_METHOD_DESC_PATTERN = Pattern.compile(\"(?:is|has|can)([A-Z][_a-zA-Z0-9]*)\\\\(\\\\)Z\");\r\n+\r\n+    private static final ConcurrentMap<String, Class<?>> DESC_CLASS_CACHE = new ConcurrentHashMap<String, Class<?>>();\r\n+\r\n+    private static final ConcurrentMap<String, Class<?>> NAME_CLASS_CACHE = new ConcurrentHashMap<String, Class<?>>();\r\n+\r\n+    private static final ConcurrentMap<String, Method> SIGNATURE_METHODS_CACHE = new ConcurrentHashMap<String, Method>();\r\n+\r\n+    private static Map<Class<?>, Object> primitiveDefaults = new HashMap<>();\r\n+\r\n+    static {\r\n+        primitiveDefaults.put(int.class, 0);\r\n+        primitiveDefaults.put(long.class, 0L);\r\n+        primitiveDefaults.put(byte.class, (byte) 0);\r\n+        primitiveDefaults.put(char.class, (char) 0);\r\n+        primitiveDefaults.put(short.class, (short) 0);\r\n+        primitiveDefaults.put(float.class, (float) 0);\r\n+        primitiveDefaults.put(double.class, (double) 0);\r\n+        primitiveDefaults.put(boolean.class, false);\r\n+        primitiveDefaults.put(void.class, null);\r\n+    }\r\n+\r\n+    private ReflectUtils() {\r\n+    }\r\n+\r\n+    public static boolean isPrimitives(Class<?> cls) {\r\n+        while (cls.isArray()) {\r\n+            cls = cls.getComponentType();\r\n+        }\r\n+        return isPrimitive(cls);\r\n+    }\r\n+\r\n+    public static boolean isPrimitive(Class<?> cls) {\r\n+        return cls.isPrimitive() || cls == String.class || cls == Boolean.class || cls == Character.class\r\n+                || Number.class.isAssignableFrom(cls) || Date.class.isAssignableFrom(cls);\r\n+    }\r\n+\r\n+    public static Class<?> getBoxedClass(Class<?> c) {\r\n+        if (c == int.class) {\r\n+            c = Integer.class;\r\n+        } else if (c == boolean.class) {\r\n+            c = Boolean.class;\r\n+        } else if (c == long.class) {\r\n+            c = Long.class;\r\n+        } else if (c == float.class) {\r\n+            c = Float.class;\r\n+        } else if (c == double.class) {\r\n+            c = Double.class;\r\n+        } else if (c == char.class) {\r\n+            c = Character.class;\r\n+        } else if (c == byte.class) {\r\n+            c = Byte.class;\r\n+        } else if (c == short.class) {\r\n+            c = Short.class;\r\n+        }\r\n+        return c;\r\n+    }\r\n+\r\n+    /**\r\n+     * is compatible.\r\n+     *\r\n+     * @param c class.\r\n+     * @param o instance.\r\n+     * @return compatible or not.\r\n+     */\r\n+    public static boolean isCompatible(Class<?> c, Object o) {\r\n+        boolean pt = c.isPrimitive();\r\n+        if (o == null) {\r\n+            return !pt;\r\n+        }\r\n+\r\n+        if (pt) {\r\n+            c = getBoxedClass(c);\r\n+        }\r\n+\r\n+        return c == o.getClass() || c.isInstance(o);\r\n+    }\r\n+\r\n+    /**\r\n+     * is compatible.\r\n+     *\r\n+     * @param cs class array.\r\n+     * @param os object array.\r\n+     * @return compatible or not.\r\n+     */\r\n+    public static boolean isCompatible(Class<?>[] cs, Object[] os) {\r\n+        int len = cs.length;\r\n+        if (len != os.length) {\r\n+            return false;\r\n+        }\r\n+        if (len == 0) {\r\n+            return true;\r\n+        }\r\n+        for (int i = 0; i < len; i++) {\r\n+            if (!isCompatible(cs[i], os[i])) {\r\n+                return false;\r\n+            }\r\n+        }\r\n+        return true;\r\n+    }\r\n+\r\n+    public static String getCodeBase(Class<?> cls) {\r\n+        if (cls == null) {\r\n+            return null;\r\n+        }\r\n+        ProtectionDomain domain = cls.getProtectionDomain();\r\n+        if (domain == null) {\r\n+            return null;\r\n+        }\r\n+        CodeSource source = domain.getCodeSource();\r\n+        if (source == null) {\r\n+            return null;\r\n+        }\r\n+        URL location = source.getLocation();\r\n+        if (location == null) {\r\n+            return null;\r\n+        }\r\n+        return location.getFile();\r\n+    }\r\n+\r\n+    /**\r\n+     * get name.\r\n+     * java.lang.Object[][].class => \"java.lang.Object[][]\"\r\n+     *\r\n+     * @param c class.\r\n+     * @return name.\r\n+     */\r\n+    public static String getName(Class<?> c) {\r\n+        if (c.isArray()) {\r\n+            StringBuilder sb = new StringBuilder();\r\n+            do {\r\n+                sb.append(\"[]\");\r\n+                c = c.getComponentType();\r\n+            }\r\n+            while (c.isArray());\r\n+\r\n+            return c.getName() + sb.toString();\r\n+        }\r\n+        return c.getName();\r\n+    }\r\n+\r\n+    public static Class<?> getGenericClass(Class<?> cls) {\r\n+        return getGenericClass(cls, 0);\r\n+    }\r\n+\r\n+    public static Class<?> getGenericClass(Class<?> cls, int i) {\r\n+        try {\r\n+            ParameterizedType parameterizedType = ((ParameterizedType) cls.getGenericInterfaces()[0]);\r\n+            Object genericClass = parameterizedType.getActualTypeArguments()[i];\r\n+\r\n+            // handle nested generic type\r\n+            if (genericClass instanceof ParameterizedType) {\r\n+                return (Class<?>) ((ParameterizedType) genericClass).getRawType();\r\n+            }\r\n+\r\n+            // handle array generic type\r\n+            if (genericClass instanceof GenericArrayType) {\r\n+                return (Class<?>) ((GenericArrayType) genericClass).getGenericComponentType();\r\n+            }\r\n+\r\n+            // Requires JDK 7 or higher, Foo<int[]> is no longer GenericArrayType\r\n+            if (((Class) genericClass).isArray()) {\r\n+                return ((Class) genericClass).getComponentType();\r\n+            }\r\n+            return (Class<?>) genericClass;\r\n+        } catch (Throwable e) {\r\n+            throw new IllegalArgumentException(cls.getName() + \" generic type undefined!\", e);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * get method name.\r\n+     * \"void do(int)\", \"void do()\", \"int do(java.lang.String,boolean)\"\r\n+     *\r\n+     * @param m method.\r\n+     * @return name.\r\n+     */\r\n+    public static String getName(final Method m) {\r\n+        StringBuilder ret = new StringBuilder();\r\n+        ret.append(getName(m.getReturnType())).append(' ');\r\n+        ret.append(m.getName()).append('(');\r\n+        Class<?>[] parameterTypes = m.getParameterTypes();\r\n+        for (int i = 0; i < parameterTypes.length; i++) {\r\n+            if (i > 0) {\r\n+                ret.append(',');\r\n+            }\r\n+            ret.append(getName(parameterTypes[i]));\r\n+        }\r\n+        ret.append(')');\r\n+        return ret.toString();\r\n+    }\r\n+\r\n+    public static String getSignature(String methodName, Class<?>[] parameterTypes) {\r\n+        StringBuilder sb = new StringBuilder(methodName);\r\n+        sb.append(\"(\");\r\n+        if (parameterTypes != null && parameterTypes.length > 0) {\r\n+            boolean first = true;\r\n+            for (Class<?> type : parameterTypes) {\r\n+                if (first) {\r\n+                    first = false;\r\n+                } else {\r\n+                    sb.append(\",\");\r\n+                }\r\n+                sb.append(type.getName());\r\n+            }\r\n+        }\r\n+        sb.append(\")\");\r\n+        return sb.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * get constructor name.\r\n+     * \"()\", \"(java.lang.String,int)\"\r\n+     *\r\n+     * @param c constructor.\r\n+     * @return name.\r\n+     */\r\n+    public static String getName(final Constructor<?> c) {\r\n+        StringBuilder ret = new StringBuilder(\"(\");\r\n+        Class<?>[] parameterTypes = c.getParameterTypes();\r\n+        for (int i = 0; i < parameterTypes.length; i++) {\r\n+            if (i > 0) {\r\n+                ret.append(',');\r\n+            }\r\n+            ret.append(getName(parameterTypes[i]));\r\n+        }\r\n+        ret.append(')');\r\n+        return ret.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * get class desc.\r\n+     * boolean[].class => \"[Z\"\r\n+     * Object.class => \"Ljava/lang/Object;\"\r\n+     *\r\n+     * @param c class.\r\n+     * @return desc.\r\n+     * @throws NotFoundException\r\n+     */\r\n+    public static String getDesc(Class<?> c) {\r\n+        StringBuilder ret = new StringBuilder();\r\n+\r\n+        while (c.isArray()) {\r\n+            ret.append('[');\r\n+            c = c.getComponentType();\r\n+        }\r\n+\r\n+        if (c.isPrimitive()) {\r\n+            String t = c.getName();\r\n+            if (\"void\".equals(t)) {\r\n+                ret.append(JVM_VOID);\r\n+            } else if (\"boolean\".equals(t)) {\r\n+                ret.append(JVM_BOOLEAN);\r\n+            } else if (\"byte\".equals(t)) {\r\n+                ret.append(JVM_BYTE);\r\n+            } else if (\"char\".equals(t)) {\r\n+                ret.append(JVM_CHAR);\r\n+            } else if (\"double\".equals(t)) {\r\n+                ret.append(JVM_DOUBLE);\r\n+            } else if (\"float\".equals(t)) {\r\n+                ret.append(JVM_FLOAT);\r\n+            } else if (\"int\".equals(t)) {\r\n+                ret.append(JVM_INT);\r\n+            } else if (\"long\".equals(t)) {\r\n+                ret.append(JVM_LONG);\r\n+            } else if (\"short\".equals(t)) {\r\n+                ret.append(JVM_SHORT);\r\n+            }\r\n+        } else {\r\n+            ret.append('L');\r\n+            ret.append(c.getName().replace('.', '/'));\r\n+            ret.append(';');\r\n+        }\r\n+        return ret.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * get class array desc.\r\n+     * [int.class, boolean[].class, Object.class] => \"I[ZLjava/lang/Object;\"\r\n+     *\r\n+     * @param cs class array.\r\n+     * @return desc.\r\n+     * @throws NotFoundException\r\n+     */\r\n+    public static String getDesc(final Class<?>[] cs) {\r\n+        if (cs.length == 0) {\r\n+            return \"\";\r\n+        }\r\n+\r\n+        StringBuilder sb = new StringBuilder(64);\r\n+        for (Class<?> c : cs) {\r\n+            sb.append(getDesc(c));\r\n+        }\r\n+        return sb.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * get method desc.\r\n+     * int do(int arg1) => \"do(I)I\"\r\n+     * void do(String arg1,boolean arg2) => \"do(Ljava/lang/String;Z)V\"\r\n+     *\r\n+     * @param m method.\r\n+     * @return desc.\r\n+     */\r\n+    public static String getDesc(final Method m) {\r\n+        StringBuilder ret = new StringBuilder(m.getName()).append('(');\r\n+        Class<?>[] parameterTypes = m.getParameterTypes();\r\n+        for (int i = 0; i < parameterTypes.length; i++) {\r\n+            ret.append(getDesc(parameterTypes[i]));\r\n+        }\r\n+        ret.append(')').append(getDesc(m.getReturnType()));\r\n+        return ret.toString();\r\n+    }\r\n+\r\n+    public static String[] getDescArray(final Method m) {\r\n+        Class<?>[] parameterTypes = m.getParameterTypes();\r\n+        String[] arr = new String[parameterTypes.length];\r\n+\r\n+        for (int i = 0; i < parameterTypes.length; i++) {\r\n+            arr[i] = getDesc(parameterTypes[i]);\r\n+        }\r\n+        return arr;\r\n+    }\r\n+\r\n+    /**\r\n+     * get constructor desc.\r\n+     * \"()V\", \"(Ljava/lang/String;I)V\"\r\n+     *\r\n+     * @param c constructor.\r\n+     * @return desc\r\n+     */\r\n+    public static String getDesc(final Constructor<?> c) {\r\n+        StringBuilder ret = new StringBuilder(\"(\");\r\n+        Class<?>[] parameterTypes = c.getParameterTypes();\r\n+        for (int i = 0; i < parameterTypes.length; i++) {\r\n+            ret.append(getDesc(parameterTypes[i]));\r\n+        }\r\n+        ret.append(')').append('V');\r\n+        return ret.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * get method desc.\r\n+     * \"(I)I\", \"()V\", \"(Ljava/lang/String;Z)V\"\r\n+     *\r\n+     * @param m method.\r\n+     * @return desc.\r\n+     */\r\n+    public static String getDescWithoutMethodName(Method m) {\r\n+        StringBuilder ret = new StringBuilder();\r\n+        ret.append('(');\r\n+        Class<?>[] parameterTypes = m.getParameterTypes();\r\n+        for (int i = 0; i < parameterTypes.length; i++) {\r\n+            ret.append(getDesc(parameterTypes[i]));\r\n+        }\r\n+        ret.append(')').append(getDesc(m.getReturnType()));\r\n+        return ret.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * get class desc.\r\n+     * Object.class => \"Ljava/lang/Object;\"\r\n+     * boolean[].class => \"[Z\"\r\n+     *\r\n+     * @param c class.\r\n+     * @return desc.\r\n+     * @throws NotFoundException\r\n+     */\r\n+    public static String getDesc(final CtClass c) throws NotFoundException {\r\n+        StringBuilder ret = new StringBuilder();\r\n+        if (c.isArray()) {\r\n+            ret.append('[');\r\n+            ret.append(getDesc(c.getComponentType()));\r\n+        } else if (c.isPrimitive()) {\r\n+            String t = c.getName();\r\n+            if (\"void\".equals(t)) {\r\n+                ret.append(JVM_VOID);\r\n+            } else if (\"boolean\".equals(t)) {\r\n+                ret.append(JVM_BOOLEAN);\r\n+            } else if (\"byte\".equals(t)) {\r\n+                ret.append(JVM_BYTE);\r\n+            } else if (\"char\".equals(t)) {\r\n+                ret.append(JVM_CHAR);\r\n+            } else if (\"double\".equals(t)) {\r\n+                ret.append(JVM_DOUBLE);\r\n+            } else if (\"float\".equals(t)) {\r\n+                ret.append(JVM_FLOAT);\r\n+            } else if (\"int\".equals(t)) {\r\n+                ret.append(JVM_INT);\r\n+            } else if (\"long\".equals(t)) {\r\n+                ret.append(JVM_LONG);\r\n+            } else if (\"short\".equals(t)) {\r\n+                ret.append(JVM_SHORT);\r\n+            }\r\n+        } else {\r\n+            ret.append('L');\r\n+            ret.append(c.getName().replace('.', '/'));\r\n+            ret.append(';');\r\n+        }\r\n+        return ret.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * get method desc.\r\n+     * \"do(I)I\", \"do()V\", \"do(Ljava/lang/String;Z)V\"\r\n+     *\r\n+     * @param m method.\r\n+     * @return desc.\r\n+     */\r\n+    public static String getDesc(final CtMethod m) throws NotFoundException {\r\n+        StringBuilder ret = new StringBuilder(m.getName()).append('(');\r\n+        CtClass[] parameterTypes = m.getParameterTypes();\r\n+        for (CtClass parameterType : parameterTypes) {\r\n+            ret.append(getDesc(parameterType));\r\n+        }\r\n+        ret.append(')').append(getDesc(m.getReturnType()));\r\n+        return ret.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * get constructor desc.\r\n+     * \"()V\", \"(Ljava/lang/String;I)V\"\r\n+     *\r\n+     * @param c constructor.\r\n+     * @return desc\r\n+     */\r\n+    public static String getDesc(final CtConstructor c) throws NotFoundException {\r\n+        StringBuilder ret = new StringBuilder(\"(\");\r\n+        CtClass[] parameterTypes = c.getParameterTypes();\r\n+        for (int i = 0; i < parameterTypes.length; i++) {\r\n+            ret.append(getDesc(parameterTypes[i]));\r\n+        }\r\n+        ret.append(')').append('V');\r\n+        return ret.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * get method desc.\r\n+     * \"(I)I\", \"()V\", \"(Ljava/lang/String;Z)V\".\r\n+     *\r\n+     * @param m method.\r\n+     * @return desc.\r\n+     */\r\n+    public static String getDescWithoutMethodName(final CtMethod m) throws NotFoundException {\r\n+        StringBuilder ret = new StringBuilder();\r\n+        ret.append('(');\r\n+        CtClass[] parameterTypes = m.getParameterTypes();\r\n+        for (int i = 0; i < parameterTypes.length; i++) {\r\n+            ret.append(getDesc(parameterTypes[i]));\r\n+        }\r\n+        ret.append(')').append(getDesc(m.getReturnType()));\r\n+        return ret.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * name to desc.\r\n+     * java.util.Map[][] => \"[[Ljava/util/Map;\"\r\n+     *\r\n+     * @param name name.\r\n+     * @return desc.\r\n+     */\r\n+    public static String name2desc(String name) {\r\n+        StringBuilder sb = new StringBuilder();\r\n+        int c = 0, index = name.indexOf('[');\r\n+        if (index > 0) {\r\n+            c = (name.length() - index) / 2;\r\n+            name = name.substring(0, index);\r\n+        }\r\n+        while (c-- > 0) {\r\n+            sb.append(\"[\");\r\n+        }\r\n+        if (\"void\".equals(name)) {\r\n+            sb.append(JVM_VOID);\r\n+        } else if (\"boolean\".equals(name)) {\r\n+            sb.append(JVM_BOOLEAN);\r\n+        } else if (\"byte\".equals(name)) {\r\n+            sb.append(JVM_BYTE);\r\n+        } else if (\"char\".equals(name)) {\r\n+            sb.append(JVM_CHAR);\r\n+        } else if (\"double\".equals(name)) {\r\n+            sb.append(JVM_DOUBLE);\r\n+        } else if (\"float\".equals(name)) {\r\n+            sb.append(JVM_FLOAT);\r\n+        } else if (\"int\".equals(name)) {\r\n+            sb.append(JVM_INT);\r\n+        } else if (\"long\".equals(name)) {\r\n+            sb.append(JVM_LONG);\r\n+        } else if (\"short\".equals(name)) {\r\n+            sb.append(JVM_SHORT);\r\n+        } else {\r\n+            sb.append('L').append(name.replace('.', '/')).append(';');\r\n+        }\r\n+        return sb.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * desc to name.\r\n+     * \"[[I\" => \"int[][]\"\r\n+     *\r\n+     * @param desc desc.\r\n+     * @return name.\r\n+     */\r\n+    public static String desc2name(String desc) {\r\n+        StringBuilder sb = new StringBuilder();\r\n+        int c = desc.lastIndexOf('[') + 1;\r\n+        if (desc.length() == c + 1) {\r\n+            switch (desc.charAt(c)) {\r\n+                case JVM_VOID: {\r\n+                    sb.append(\"void\");\r\n+                    break;\r\n+                }\r\n+                case JVM_BOOLEAN: {\r\n+                    sb.append(\"boolean\");\r\n+                    break;\r\n+                }\r\n+                case JVM_BYTE: {\r\n+                    sb.append(\"byte\");\r\n+                    break;\r\n+                }\r\n+                case JVM_CHAR: {\r\n+                    sb.append(\"char\");\r\n+                    break;\r\n+                }\r\n+                case JVM_DOUBLE: {\r\n+                    sb.append(\"double\");\r\n+                    break;\r\n+                }\r\n+                case JVM_FLOAT: {\r\n+                    sb.append(\"float\");\r\n+                    break;\r\n+                }\r\n+                case JVM_INT: {\r\n+                    sb.append(\"int\");\r\n+                    break;\r\n+                }\r\n+                case JVM_LONG: {\r\n+                    sb.append(\"long\");\r\n+                    break;\r\n+                }\r\n+                case JVM_SHORT: {\r\n+                    sb.append(\"short\");\r\n+                    break;\r\n+                }\r\n+                default:\r\n+                    throw new RuntimeException();\r\n+            }\r\n+        } else {\r\n+            sb.append(desc.substring(c + 1, desc.length() - 1).replace('/', '.'));\r\n+        }\r\n+        while (c-- > 0) {\r\n+            sb.append(\"[]\");\r\n+        }\r\n+        return sb.toString();\r\n+    }\r\n+\r\n+    public static Class<?> forName(String name) {\r\n+        try {\r\n+            return name2class(name);\r\n+        } catch (ClassNotFoundException e) {\r\n+            throw new IllegalStateException(\"Not found class \" + name + \", cause: \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    public static Class<?> forName(ClassLoader cl, String name) {\r\n+        try {\r\n+            return name2class(cl, name);\r\n+        } catch (ClassNotFoundException e) {\r\n+            throw new IllegalStateException(\"Not found class \" + name + \", cause: \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * name to class.\r\n+     * \"boolean\" => boolean.class\r\n+     * \"java.util.Map[][]\" => java.util.Map[][].class\r\n+     *\r\n+     * @param name name.\r\n+     * @return Class instance.\r\n+     */\r\n+    public static Class<?> name2class(String name) throws ClassNotFoundException {\r\n+        return name2class(ClassUtils.getClassLoader(), name);\r\n+    }\r\n+\r\n+    /**\r\n+     * name to class.\r\n+     * \"boolean\" => boolean.class\r\n+     * \"java.util.Map[][]\" => java.util.Map[][].class\r\n+     *\r\n+     * @param cl   ClassLoader instance.\r\n+     * @param name name.\r\n+     * @return Class instance.\r\n+     */\r\n+    private static Class<?> name2class(ClassLoader cl, String name) throws ClassNotFoundException {\r\n+        int c = 0, index = name.indexOf('[');\r\n+        if (index > 0) {\r\n+            c = (name.length() - index) / 2;\r\n+            name = name.substring(0, index);\r\n+        }\r\n+        if (c > 0) {\r\n+            StringBuilder sb = new StringBuilder();\r\n+            while (c-- > 0) {\r\n+                sb.append(\"[\");\r\n+            }\r\n+\r\n+            if (\"void\".equals(name)) {\r\n+                sb.append(JVM_VOID);\r\n+            } else if (\"boolean\".equals(name)) {\r\n+                sb.append(JVM_BOOLEAN);\r\n+            } else if (\"byte\".equals(name)) {\r\n+                sb.append(JVM_BYTE);\r\n+            } else if (\"char\".equals(name)) {\r\n+                sb.append(JVM_CHAR);\r\n+            } else if (\"double\".equals(name)) {\r\n+                sb.append(JVM_DOUBLE);\r\n+            } else if (\"float\".equals(name)) {\r\n+                sb.append(JVM_FLOAT);\r\n+            } else if (\"int\".equals(name)) {\r\n+                sb.append(JVM_INT);\r\n+            } else if (\"long\".equals(name)) {\r\n+                sb.append(JVM_LONG);\r\n+            } else if (\"short\".equals(name)) {\r\n+                sb.append(JVM_SHORT);\r\n+            } else {\r\n+                // \"java.lang.Object\" ==> \"Ljava.lang.Object;\"\r\n+                sb.append('L').append(name).append(';');\r\n+            }\r\n+            name = sb.toString();\r\n+        } else {\r\n+            if (\"void\".equals(name)) {\r\n+                return void.class;\r\n+            }\r\n+            if (\"boolean\".equals(name)) {\r\n+                return boolean.class;\r\n+            }\r\n+            if (\"byte\".equals(name)) {\r\n+                return byte.class;\r\n+            }\r\n+            if (\"char\".equals(name)) {\r\n+                return char.class;\r\n+            }\r\n+            if (\"double\".equals(name)) {\r\n+                return double.class;\r\n+            }\r\n+            if (\"float\".equals(name)) {\r\n+                return float.class;\r\n+            }\r\n+            if (\"int\".equals(name)) {\r\n+                return int.class;\r\n+            }\r\n+            if (\"long\".equals(name)) {\r\n+                return long.class;\r\n+            }\r\n+            if (\"short\".equals(name)) {\r\n+                return short.class;\r\n+            }\r\n+        }\r\n+\r\n+        if (cl == null) {\r\n+            cl = ClassUtils.getClassLoader();\r\n+        }\r\n+        Class<?> clazz = NAME_CLASS_CACHE.get(name);\r\n+        if (clazz == null) {\r\n+            clazz = Class.forName(name, true, cl);\r\n+            NAME_CLASS_CACHE.put(name, clazz);\r\n+        }\r\n+        return clazz;\r\n+    }\r\n+\r\n+    /**\r\n+     * desc to class.\r\n+     * \"[Z\" => boolean[].class\r\n+     * \"[[Ljava/util/Map;\" => java.util.Map[][].class\r\n+     *\r\n+     * @param desc desc.\r\n+     * @return Class instance.\r\n+     * @throws ClassNotFoundException\r\n+     */\r\n+    public static Class<?> desc2class(String desc) throws ClassNotFoundException {\r\n+        return desc2class(ClassUtils.getClassLoader(), desc);\r\n+    }\r\n+\r\n+    /**\r\n+     * desc to class.\r\n+     * \"[Z\" => boolean[].class\r\n+     * \"[[Ljava/util/Map;\" => java.util.Map[][].class\r\n+     *\r\n+     * @param cl   ClassLoader instance.\r\n+     * @param desc desc.\r\n+     * @return Class instance.\r\n+     * @throws ClassNotFoundException\r\n+     */\r\n+    private static Class<?> desc2class(ClassLoader cl, String desc) throws ClassNotFoundException {\r\n+        switch (desc.charAt(0)) {\r\n+            case JVM_VOID:\r\n+                return void.class;\r\n+            case JVM_BOOLEAN:\r\n+                return boolean.class;\r\n+            case JVM_BYTE:\r\n+                return byte.class;\r\n+            case JVM_CHAR:\r\n+                return char.class;\r\n+            case JVM_DOUBLE:\r\n+                return double.class;\r\n+            case JVM_FLOAT:\r\n+                return float.class;\r\n+            case JVM_INT:\r\n+                return int.class;\r\n+            case JVM_LONG:\r\n+                return long.class;\r\n+            case JVM_SHORT:\r\n+                return short.class;\r\n+            case 'L':\r\n+                // \"Ljava/lang/Object;\" ==> \"java.lang.Object\"\r\n+                desc = desc.substring(1, desc.length() - 1).replace('/', '.');\r\n+                break;\r\n+            case '[':\r\n+                // \"[[Ljava/lang/Object;\" ==> \"[[Ljava.lang.Object;\"\r\n+                desc = desc.replace('/', '.');\r\n+                break;\r\n+            default:\r\n+                throw new ClassNotFoundException(\"Class not found: \" + desc);\r\n+        }\r\n+\r\n+        if (cl == null) {\r\n+            cl = ClassUtils.getClassLoader();\r\n+        }\r\n+        Class<?> clazz = DESC_CLASS_CACHE.get(desc);\r\n+        if (clazz == null) {\r\n+            clazz = Class.forName(desc, true, cl);\r\n+            DESC_CLASS_CACHE.put(desc, clazz);\r\n+        }\r\n+        return clazz;\r\n+    }\r\n+\r\n+    /**\r\n+     * get class array instance.\r\n+     *\r\n+     * @param desc desc.\r\n+     * @return Class class array.\r\n+     * @throws ClassNotFoundException\r\n+     */\r\n+    public static Class<?>[] desc2classArray(String desc) throws ClassNotFoundException {\r\n+        Class<?>[] ret = desc2classArray(ClassUtils.getClassLoader(), desc);\r\n+        return ret;\r\n+    }\r\n+\r\n+    /**\r\n+     * get class array instance.\r\n+     *\r\n+     * @param cl   ClassLoader instance.\r\n+     * @param desc desc.\r\n+     * @return Class[] class array.\r\n+     * @throws ClassNotFoundException\r\n+     */\r\n+    private static Class<?>[] desc2classArray(ClassLoader cl, String desc) throws ClassNotFoundException {\r\n+        if (desc.length() == 0) {\r\n+            return EMPTY_CLASS_ARRAY;\r\n+        }\r\n+\r\n+        List<Class<?>> cs = new ArrayList<Class<?>>();\r\n+        Matcher m = DESC_PATTERN.matcher(desc);\r\n+        while (m.find()) {\r\n+            cs.add(desc2class(cl, m.group()));\r\n+        }\r\n+        return cs.toArray(EMPTY_CLASS_ARRAY);\r\n+    }\r\n+\r\n+    /**\r\n+     * Find method from method signature\r\n+     *\r\n+     * @param clazz      Target class to find method\r\n+     * @param methodName Method signature, e.g.: method1(int, String). It is allowed to provide method name only, e.g.: method2\r\n+     * @return target method\r\n+     * @throws NoSuchMethodException\r\n+     * @throws ClassNotFoundException\r\n+     * @throws IllegalStateException  when multiple methods are found (overridden method when parameter info is not provided)\r\n+     * @deprecated Recommend {@link MethodUtils#findMethod(Class, String, Class[])}\r\n+     */\r\n+    @Deprecated\r\n+    public static Method findMethodByMethodSignature(Class<?> clazz, String methodName, String[] parameterTypes)\r\n+            throws NoSuchMethodException, ClassNotFoundException {\r\n+        String signature = clazz.getName() + \".\" + methodName;\r\n+        if (parameterTypes != null && parameterTypes.length > 0) {\r\n+            signature += StringUtils.join(parameterTypes);\r\n+        }\r\n+        Method method = SIGNATURE_METHODS_CACHE.get(signature);\r\n+        if (method != null) {\r\n+            return method;\r\n+        }\r\n+        if (parameterTypes == null) {\r\n+            List<Method> finded = new ArrayList<Method>();\r\n+            for (Method m : clazz.getMethods()) {\r\n+                if (m.getName().equals(methodName)) {\r\n+                    finded.add(m);\r\n+                }\r\n+            }\r\n+            if (finded.isEmpty()) {\r\n+                throw new NoSuchMethodException(\"No such method \" + methodName + \" in class \" + clazz);\r\n+            }\r\n+            if (finded.size() > 1) {\r\n+                String msg = String.format(\"Not unique method for method name(%s) in class(%s), find %d methods.\",\r\n+                        methodName, clazz.getName(), finded.size());\r\n+                throw new IllegalStateException(msg);\r\n+            }\r\n+            method = finded.get(0);\r\n+        } else {\r\n+            Class<?>[] types = new Class<?>[parameterTypes.length];\r\n+            for (int i = 0; i < parameterTypes.length; i++) {\r\n+                types[i] = ReflectUtils.name2class(parameterTypes[i]);\r\n+            }\r\n+            method = clazz.getMethod(methodName, types);\r\n+\r\n+        }\r\n+        SIGNATURE_METHODS_CACHE.put(signature, method);\r\n+        return method;\r\n+    }\r\n+\r\n+    /**\r\n+     * @param clazz      Target class to find method\r\n+     * @param methodName Method signature, e.g.: method1(int, String). It is allowed to provide method name only, e.g.: method2\r\n+     * @return target method\r\n+     * @throws NoSuchMethodException\r\n+     * @throws ClassNotFoundException\r\n+     * @throws IllegalStateException  when multiple methods are found (overridden method when parameter info is not provided)\r\n+     * @deprecated Recommend {@link MethodUtils#findMethod(Class, String, Class[])}\r\n+     */\r\n+    @Deprecated\r\n+    public static Method findMethodByMethodName(Class<?> clazz, String methodName)\r\n+            throws NoSuchMethodException, ClassNotFoundException {\r\n+        return findMethodByMethodSignature(clazz, methodName, null);\r\n+    }\r\n+\r\n+    public static Constructor<?> findConstructor(Class<?> clazz, Class<?> paramType) throws NoSuchMethodException {\r\n+        Constructor<?> targetConstructor;\r\n+        try {\r\n+            targetConstructor = clazz.getConstructor(new Class<?>[]{paramType});\r\n+        } catch (NoSuchMethodException e) {\r\n+            targetConstructor = null;\r\n+            Constructor<?>[] constructors = clazz.getConstructors();\r\n+            for (Constructor<?> constructor : constructors) {\r\n+                if (Modifier.isPublic(constructor.getModifiers())\r\n+                        && constructor.getParameterTypes().length == 1\r\n+                        && constructor.getParameterTypes()[0].isAssignableFrom(paramType)) {\r\n+                    targetConstructor = constructor;\r\n+                    break;\r\n+                }\r\n+            }\r\n+            if (targetConstructor == null) {\r\n+                throw e;\r\n+            }\r\n+        }\r\n+        return targetConstructor;\r\n+    }\r\n+\r\n+    /**\r\n+     * Check if one object is the implementation for a given interface.\r\n+     * <p>\r\n+     * This method will not trigger classloading for the given interface, therefore it will not lead to error when\r\n+     * the given interface is not visible by the classloader\r\n+     *\r\n+     * @param obj                Object to examine\r\n+     * @param interfaceClazzName The given interface\r\n+     * @return true if the object implements the given interface, otherwise return false\r\n+     */\r\n+    public static boolean isInstance(Object obj, String interfaceClazzName) {\r\n+        for (Class<?> clazz = obj.getClass();\r\n+             clazz != null && !clazz.equals(Object.class);\r\n+             clazz = clazz.getSuperclass()) {\r\n+            Class<?>[] interfaces = clazz.getInterfaces();\r\n+            for (Class<?> itf : interfaces) {\r\n+                if (itf.getName().equals(interfaceClazzName)) {\r\n+                    return true;\r\n+                }\r\n+            }\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    public static Object getEmptyObject(Class<?> returnType) {\r\n+        return getEmptyObject(returnType, new HashMap<>(), 0);\r\n+    }\r\n+\r\n+    private static Object getEmptyObject(Class<?> returnType, Map<Class<?>, Object> emptyInstances, int level) {\r\n+        if (level > 2) {\r\n+            return null;\r\n+        }\r\n+        if (returnType == null) {\r\n+            return null;\r\n+        }\r\n+        if (returnType == boolean.class || returnType == Boolean.class) {\r\n+            return false;\r\n+        }\r\n+        if (returnType == char.class || returnType == Character.class) {\r\n+            return '\\0';\r\n+        }\r\n+        if (returnType == byte.class || returnType == Byte.class) {\r\n+            return (byte) 0;\r\n+        }\r\n+        if (returnType == short.class || returnType == Short.class) {\r\n+            return (short) 0;\r\n+        }\r\n+        if (returnType == int.class || returnType == Integer.class) {\r\n+            return 0;\r\n+        }\r\n+        if (returnType == long.class || returnType == Long.class) {\r\n+            return 0L;\r\n+        }\r\n+        if (returnType == float.class || returnType == Float.class) {\r\n+            return 0F;\r\n+        }\r\n+        if (returnType == double.class || returnType == Double.class) {\r\n+            return 0D;\r\n+        }\r\n+        if (returnType.isArray()) {\r\n+            return Array.newInstance(returnType.getComponentType(), 0);\r\n+        }\r\n+        if (returnType.isAssignableFrom(ArrayList.class)) {\r\n+            return new ArrayList<>(0);\r\n+        }\r\n+        if (returnType.isAssignableFrom(HashSet.class)) {\r\n+            return new HashSet<>(0);\r\n+        }\r\n+        if (returnType.isAssignableFrom(HashMap.class)) {\r\n+            return new HashMap<>(0);\r\n+        }\r\n+        if (String.class.equals(returnType)) {\r\n+            return \"\";\r\n+        }\r\n+        if (returnType.isInterface()) {\r\n+            return null;\r\n+        }\r\n+\r\n+        try {\r\n+            Object value = emptyInstances.get(returnType);\r\n+            if (value == null) {\r\n+                value = returnType.getDeclaredConstructor().newInstance();\r\n+                emptyInstances.put(returnType, value);\r\n+            }\r\n+            Class<?> cls = value.getClass();\r\n+            while (cls != null && cls != Object.class) {\r\n+                Field[] fields = cls.getDeclaredFields();\r\n+                for (Field field : fields) {\r\n+                    if (field.isSynthetic()) {\r\n+                        continue;\r\n+                    }\r\n+                    Object property = getEmptyObject(field.getType(), emptyInstances, level + 1);\r\n+                    if (property != null) {\r\n+                        try {\r\n+                            ReflectUtils.makeAccessible(field);\r\n+                            field.set(value, property);\r\n+                        } catch (Throwable ignored) {\r\n+                        }\r\n+                    }\r\n+                }\r\n+                cls = cls.getSuperclass();\r\n+            }\r\n+            return value;\r\n+        } catch (Throwable e) {\r\n+            return null;\r\n+        }\r\n+    }\r\n+\r\n+    public static Object defaultReturn(Method m) {\r\n+        if (m.getReturnType().isPrimitive()) {\r\n+            return primitiveDefaults.get(m.getReturnType());\r\n+        } else {\r\n+            return null;\r\n+        }\r\n+    }\r\n+\r\n+    public static Object defaultReturn(Class<?> classType) {\r\n+        if (classType != null && classType.isPrimitive()) {\r\n+            return primitiveDefaults.get(classType);\r\n+        } else {\r\n+            return null;\r\n+        }\r\n+    }\r\n+\r\n+    public static boolean isBeanPropertyReadMethod(Method method) {\r\n+        return method != null\r\n+                && Modifier.isPublic(method.getModifiers())\r\n+                && !Modifier.isStatic(method.getModifiers())\r\n+                && method.getReturnType() != void.class\r\n+                && method.getDeclaringClass() != Object.class\r\n+                && method.getParameterTypes().length == 0\r\n+                && ((method.getName().startsWith(\"get\") && method.getName().length() > 3)\r\n+                || (method.getName().startsWith(\"is\") && method.getName().length() > 2));\r\n+    }\r\n+\r\n+    public static String getPropertyNameFromBeanReadMethod(Method method) {\r\n+        if (isBeanPropertyReadMethod(method)) {\r\n+            if (method.getName().startsWith(\"get\")) {\r\n+                return method.getName().substring(3, 4).toLowerCase()\r\n+                        + method.getName().substring(4);\r\n+            }\r\n+            if (method.getName().startsWith(\"is\")) {\r\n+                return method.getName().substring(2, 3).toLowerCase()\r\n+                        + method.getName().substring(3);\r\n+            }\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    public static boolean isBeanPropertyWriteMethod(Method method) {\r\n+        return method != null\r\n+                && Modifier.isPublic(method.getModifiers())\r\n+                && !Modifier.isStatic(method.getModifiers())\r\n+                && method.getDeclaringClass() != Object.class\r\n+                && method.getParameterTypes().length == 1\r\n+                && method.getName().startsWith(\"set\")\r\n+                && method.getName().length() > 3;\r\n+    }\r\n+\r\n+    public static String getPropertyNameFromBeanWriteMethod(Method method) {\r\n+        if (isBeanPropertyWriteMethod(method)) {\r\n+            return method.getName().substring(3, 4).toLowerCase()\r\n+                    + method.getName().substring(4);\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    public static boolean isPublicInstanceField(Field field) {\r\n+        return Modifier.isPublic(field.getModifiers())\r\n+                && !Modifier.isStatic(field.getModifiers())\r\n+                && !Modifier.isFinal(field.getModifiers())\r\n+                && !field.isSynthetic();\r\n+    }\r\n+\r\n+    public static Map<String, Field> getBeanPropertyFields(Class cl) {\r\n+        Map<String, Field> properties = new HashMap<String, Field>();\r\n+        for (; cl != null; cl = cl.getSuperclass()) {\r\n+            Field[] fields = cl.getDeclaredFields();\r\n+            for (Field field : fields) {\r\n+                if (Modifier.isTransient(field.getModifiers())\r\n+                        || Modifier.isStatic(field.getModifiers())) {\r\n+                    continue;\r\n+                }\r\n+                ReflectUtils.makeAccessible(field);\r\n+\r\n+                properties.put(field.getName(), field);\r\n+            }\r\n+        }\r\n+\r\n+        return properties;\r\n+    }\r\n+\r\n+    public static Map<String, Method> getBeanPropertyReadMethods(Class cl) {\r\n+        Map<String, Method> properties = new HashMap<String, Method>();\r\n+        for (; cl != null; cl = cl.getSuperclass()) {\r\n+            Method[] methods = cl.getDeclaredMethods();\r\n+            for (Method method : methods) {\r\n+                if (isBeanPropertyReadMethod(method)) {\r\n+                    ReflectUtils.makeAccessible(method);\r\n+                    String property = getPropertyNameFromBeanReadMethod(method);\r\n+                    properties.put(property, method);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        return properties;\r\n+    }\r\n+\r\n+    public static Type[] getReturnTypes(Method method) {\r\n+        Class<?> returnType = method.getReturnType();\r\n+        Type genericReturnType = method.getGenericReturnType();\r\n+        if (Future.class.isAssignableFrom(returnType)) {\r\n+            if (genericReturnType instanceof ParameterizedType) {\r\n+                Type actualArgType = ((ParameterizedType) genericReturnType).getActualTypeArguments()[0];\r\n+                if (actualArgType instanceof ParameterizedType) {\r\n+                    returnType = (Class<?>) ((ParameterizedType) actualArgType).getRawType();\r\n+                    genericReturnType = actualArgType;\r\n+                } else if (actualArgType instanceof TypeVariable) {\r\n+                    returnType = (Class<?>) ((TypeVariable<?>) actualArgType).getBounds()[0];\r\n+                    genericReturnType = actualArgType;\r\n+                } else {\r\n+                    returnType = (Class<?>) actualArgType;\r\n+                    genericReturnType = returnType;\r\n+                }\r\n+            } else {\r\n+                returnType = null;\r\n+                genericReturnType = null;\r\n+            }\r\n+        }\r\n+        return new Type[]{returnType, genericReturnType};\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the {@link Set} of {@link ParameterizedType}\r\n+     *\r\n+     * @param sourceClass the source {@link Class class}\r\n+     * @return non-null read-only {@link Set}\r\n+     * @since 2.7.5\r\n+     */\r\n+    public static Set<ParameterizedType> findParameterizedTypes(Class<?> sourceClass) {\r\n+        // Add Generic Interfaces\r\n+        List<Type> genericTypes = new LinkedList<>(asList(sourceClass.getGenericInterfaces()));\r\n+        // Add Generic Super Class\r\n+        genericTypes.add(sourceClass.getGenericSuperclass());\r\n+\r\n+        Set<ParameterizedType> parameterizedTypes = genericTypes.stream()\r\n+                .filter(type -> type instanceof ParameterizedType)// filter ParameterizedType\r\n+                .map(ParameterizedType.class::cast)  // cast to ParameterizedType\r\n+                .collect(Collectors.toSet());\r\n+\r\n+        if (parameterizedTypes.isEmpty()) { // If not found, try to search super types recursively\r\n+            genericTypes.stream()\r\n+                    .filter(type -> type instanceof Class)\r\n+                    .map(Class.class::cast)\r\n+                    .forEach(superClass -> parameterizedTypes.addAll(findParameterizedTypes(superClass)));\r\n+        }\r\n+\r\n+        return unmodifiableSet(parameterizedTypes);                     // build as a Set\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the hierarchical types from the source {@link Class class} by specified {@link Class type}.\r\n+     *\r\n+     * @param sourceClass the source {@link Class class}\r\n+     * @param matchType   the type to match\r\n+     * @param <T>         the type to match\r\n+     * @return non-null read-only {@link Set}\r\n+     * @since 2.7.5\r\n+     */\r\n+    public static <T> Set<Class<T>> findHierarchicalTypes(Class<?> sourceClass, Class<T> matchType) {\r\n+        if (sourceClass == null) {\r\n+            return Collections.emptySet();\r\n+        }\r\n+\r\n+        Set<Class<T>> hierarchicalTypes = new LinkedHashSet<>();\r\n+\r\n+        if (matchType.isAssignableFrom(sourceClass)) {\r\n+            hierarchicalTypes.add((Class<T>) sourceClass);\r\n+        }\r\n+\r\n+        // Find all super classes\r\n+        hierarchicalTypes.addAll(findHierarchicalTypes(sourceClass.getSuperclass(), matchType));\r\n+\r\n+        return unmodifiableSet(hierarchicalTypes);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the value from the specified bean and its getter method.\r\n+     *\r\n+     * @param bean       the bean instance\r\n+     * @param methodName the name of getter\r\n+     * @param <T>        the type of property value\r\n+     * @return\r\n+     * @since 2.7.5\r\n+     */\r\n+    public static <T> T getProperty(Object bean, String methodName) {\r\n+        Class<?> beanClass = bean.getClass();\r\n+        BeanInfo beanInfo = null;\r\n+        T propertyValue = null;\r\n+\r\n+        try {\r\n+            beanInfo = Introspector.getBeanInfo(beanClass);\r\n+            propertyValue = (T) Stream.of(beanInfo.getMethodDescriptors())\r\n+                    .filter(methodDescriptor -> methodName.equals(methodDescriptor.getName()))\r\n+                    .findFirst()\r\n+                    .map(method -> {\r\n+                        try {\r\n+                            return method.getMethod().invoke(bean);\r\n+                        } catch (Exception e) {\r\n+                            //ignore\r\n+                        }\r\n+                        return null;\r\n+                    }).get();\r\n+        } catch (Exception e) {\r\n+\r\n+        }\r\n+        return propertyValue;\r\n+    }\r\n+\r\n+    /**\r\n+     * Resolve the types of the specified values\r\n+     *\r\n+     * @param values the values\r\n+     * @return If can't be resolved, return {@link ReflectUtils#EMPTY_CLASS_ARRAY empty class array}\r\n+     * @since 2.7.6\r\n+     */\r\n+    public static Class[] resolveTypes(Object... values) {\r\n+\r\n+        if (isEmpty(values)) {\r\n+            return EMPTY_CLASS_ARRAY;\r\n+        }\r\n+\r\n+        int size = values.length;\r\n+\r\n+        Class[] types = new Class[size];\r\n+\r\n+        for (int i = 0; i < size; i++) {\r\n+            Object value = values[i];\r\n+            types[i] = value == null ? null : value.getClass();\r\n+        }\r\n+\r\n+        return types;\r\n+    }\r\n+\r\n+    /**\r\n+     * Copy from org.springframework.util.ReflectionUtils.\r\n+     * Make the given method accessible, explicitly setting it accessible if\r\n+     * necessary. The {@code setAccessible(true)} method is only called\r\n+     * when actually necessary, to avoid unnecessary conflicts with a JVM\r\n+     * SecurityManager (if active).\r\n+     * @param method the method to make accessible\r\n+     * @see java.lang.reflect.Method#setAccessible\r\n+     */\r\n+    @SuppressWarnings(\"deprecation\")  // on JDK 9\r\n+    public static void makeAccessible(Method method) {\r\n+        if ((!Modifier.isPublic(method.getModifiers()) ||\r\n+                !Modifier.isPublic(method.getDeclaringClass().getModifiers())) && !method.isAccessible()) {\r\n+            method.setAccessible(true);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Copy from org.springframework.util.ReflectionUtils.\r\n+     * Make the given field accessible, explicitly setting it accessible if\r\n+     * necessary. The {@code setAccessible(true)} method is only called\r\n+     * when actually necessary, to avoid unnecessary conflicts with a JVM\r\n+     * SecurityManager (if active).\r\n+     * @param field the field to make accessible\r\n+     * @see java.lang.reflect.Field#setAccessible\r\n+     */\r\n+    @SuppressWarnings(\"deprecation\")  // on JDK 9\r\n+    public static void makeAccessible(Field field) {\r\n+        if ((!Modifier.isPublic(field.getModifiers()) ||\r\n+                !Modifier.isPublic(field.getDeclaringClass().getModifiers()) ||\r\n+                Modifier.isFinal(field.getModifiers())) && !field.isAccessible()) {\r\n+            field.setAccessible(true);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Copy from org.springframework.util.ReflectionUtils.\r\n+     * Make the given constructor accessible, explicitly setting it accessible\r\n+     * if necessary. The {@code setAccessible(true)} method is only called\r\n+     * when actually necessary, to avoid unnecessary conflicts with a JVM\r\n+     * SecurityManager (if active).\r\n+     * @param ctor the constructor to make accessible\r\n+     * @see java.lang.reflect.Constructor#setAccessible\r\n+     */\r\n+    @SuppressWarnings(\"deprecation\")  // on JDK 9\r\n+    public static void makeAccessible(Constructor<?> ctor) {\r\n+        if ((!Modifier.isPublic(ctor.getModifiers()) ||\r\n+                !Modifier.isPublic(ctor.getDeclaringClass().getModifiers())) && !ctor.isAccessible()) {\r\n+            ctor.setAccessible(true);\r\n+        }\r\n+    }\r\n+\r\n+    public static boolean checkZeroArgConstructor(Class clazz) {\r\n+        try {\r\n+            clazz.getDeclaredConstructor();\r\n+            return true;\r\n+        } catch (NoSuchMethodException e) {\r\n+            return false;\r\n+        }\r\n+    }\r\n+\r\n+    public static boolean isJdk(Class clazz) {\r\n+        return clazz.getName().startsWith(\"java.\") || clazz.getName().startsWith(\"javax.\");\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/SerializeClassChecker.java", "source2": "org/apache/dubbo/common/utils/SerializeClassChecker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,150 +1,150 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-import org.apache.dubbo.common.beanutil.JavaBeanSerializeUtil;\n-import org.apache.dubbo.common.constants.CommonConstants;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-\n-import java.io.IOException;\n-import java.util.Arrays;\n-import java.util.Locale;\n-import java.util.Set;\n-import java.util.concurrent.atomic.AtomicLong;\n-\n-public class SerializeClassChecker {\n-    private static final Logger logger = LoggerFactory.getLogger(SerializeClassChecker.class);\n-\n-    private static volatile SerializeClassChecker INSTANCE = null;\n-\n-    private final boolean BLOCK_ALL_CLASS_EXCEPT_ALLOW;\n-    private final Set<String> CLASS_DESERIALIZE_ALLOWED_SET = new ConcurrentHashSet<>();\n-    private final Set<String> CLASS_DESERIALIZE_BLOCKED_SET = new ConcurrentHashSet<>();\n-\n-    private final Object CACHE = new Object();\n-    private final LFUCache<String, Object> CLASS_ALLOW_LFU_CACHE = new LFUCache<>();\n-    private final LFUCache<String, Object> CLASS_BLOCK_LFU_CACHE = new LFUCache<>();\n-\n-    private final AtomicLong counter = new AtomicLong(0);\n-\n-    private SerializeClassChecker() {\n-        String blockAllClassExceptAllow = System.getProperty(CommonConstants.CLASS_DESERIALIZE_BLOCK_ALL, \"false\");\n-        BLOCK_ALL_CLASS_EXCEPT_ALLOW = Boolean.parseBoolean(blockAllClassExceptAllow);\n-\n-        String[] lines;\n-        try {\n-            ClassLoader classLoader = ClassUtils.getClassLoader(JavaBeanSerializeUtil.class);\n-            if (classLoader != null) {\n-                lines = IOUtils.readLines(classLoader.getResourceAsStream(CommonConstants.SERIALIZE_BLOCKED_LIST_FILE_PATH));\n-            } else {\n-                lines = IOUtils.readLines(ClassLoader.getSystemResourceAsStream(CommonConstants.SERIALIZE_BLOCKED_LIST_FILE_PATH));\n-            }\n-            for (String line : lines) {\n-                line = line.trim();\n-                if (StringUtils.isEmpty(line) || line.startsWith(\"#\")) {\n-                    continue;\n-                }\n-                CLASS_DESERIALIZE_BLOCKED_SET.add(line);\n-            }\n-\n-        } catch (IOException e) {\n-            logger.error(\"Failed to load blocked class list! Will ignore default blocked list.\", e);\n-        }\n-\n-        String allowedClassList = System.getProperty(CommonConstants.CLASS_DESERIALIZE_ALLOWED_LIST, \"\").trim().toLowerCase(Locale.ROOT);\n-        String blockedClassList = System.getProperty(CommonConstants.CLASS_DESERIALIZE_BLOCKED_LIST, \"\").trim().toLowerCase(Locale.ROOT);\n-\n-        if (StringUtils.isNotEmpty(allowedClassList)) {\n-            String[] classStrings = allowedClassList.trim().split(\",\");\n-            CLASS_DESERIALIZE_ALLOWED_SET.addAll(Arrays.asList(classStrings));\n-        }\n-\n-        if (StringUtils.isNotEmpty(blockedClassList)) {\n-            String[] classStrings = blockedClassList.trim().split(\",\");\n-            CLASS_DESERIALIZE_BLOCKED_SET.addAll(Arrays.asList(classStrings));\n-        }\n-\n-    }\n-\n-    public static SerializeClassChecker getInstance() {\n-        if (INSTANCE == null) {\n-            synchronized (SerializeClassChecker.class) {\n-                if (INSTANCE == null) {\n-                    INSTANCE = new SerializeClassChecker();\n-                }\n-            }\n-        }\n-        return INSTANCE;\n-    }\n-\n-    /**\n-     * For ut only\n-     */\n-    @Deprecated\n-    protected static void clearInstance() {\n-        INSTANCE = null;\n-    }\n-\n-    /**\n-     * Check if a class is in block list, using prefix match\n-     *\n-     * @throws IllegalArgumentException if class is blocked\n-     * @param name class name ( all are convert to lower case )\n-     */\n-    public void validateClass(String name) {\n-        name = name.toLowerCase(Locale.ROOT);\n-        if (CACHE == CLASS_ALLOW_LFU_CACHE.get(name)) {\n-            return;\n-        }\n-\n-        if (CACHE == CLASS_BLOCK_LFU_CACHE.get(name)) {\n-            error(name);\n-        }\n-\n-        for (String allowedPrefix : CLASS_DESERIALIZE_ALLOWED_SET) {\n-            if (name.startsWith(allowedPrefix)) {\n-                CLASS_ALLOW_LFU_CACHE.put(name, CACHE);\n-                return;\n-            }\n-        }\n-\n-        for (String blockedPrefix : CLASS_DESERIALIZE_BLOCKED_SET) {\n-            if (BLOCK_ALL_CLASS_EXCEPT_ALLOW || name.startsWith(blockedPrefix)) {\n-                CLASS_BLOCK_LFU_CACHE.put(name, CACHE);\n-                error(name);\n-            }\n-        }\n-\n-        CLASS_ALLOW_LFU_CACHE.put(name, CACHE);\n-    }\n-\n-    private void error(String name) {\n-        String notice = \"Trigger the safety barrier! \" +\n-                \"Catch not allowed serialize class. \" +\n-                \"Class name: \" + name + \" . \" +\n-                \"This means currently maybe being attacking by others.\" +\n-                \"If you are sure this is a mistake, \" +\n-                \"please add this class name to `\" + CommonConstants.CLASS_DESERIALIZE_ALLOWED_LIST +\n-                \"` as a system environment property.\";\n-        if (counter.incrementAndGet() % 1000 == 0 || counter.get() < 100) {\n-            logger.error(notice);\n-        }\n-        throw new IllegalArgumentException(notice);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import org.apache.dubbo.common.beanutil.JavaBeanSerializeUtil;\r\n+import org.apache.dubbo.common.constants.CommonConstants;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+\r\n+import java.io.IOException;\r\n+import java.util.Arrays;\r\n+import java.util.Locale;\r\n+import java.util.Set;\r\n+import java.util.concurrent.atomic.AtomicLong;\r\n+\r\n+public class SerializeClassChecker {\r\n+    private static final Logger logger = LoggerFactory.getLogger(SerializeClassChecker.class);\r\n+\r\n+    private static volatile SerializeClassChecker INSTANCE = null;\r\n+\r\n+    private final boolean BLOCK_ALL_CLASS_EXCEPT_ALLOW;\r\n+    private final Set<String> CLASS_DESERIALIZE_ALLOWED_SET = new ConcurrentHashSet<>();\r\n+    private final Set<String> CLASS_DESERIALIZE_BLOCKED_SET = new ConcurrentHashSet<>();\r\n+\r\n+    private final Object CACHE = new Object();\r\n+    private final LFUCache<String, Object> CLASS_ALLOW_LFU_CACHE = new LFUCache<>();\r\n+    private final LFUCache<String, Object> CLASS_BLOCK_LFU_CACHE = new LFUCache<>();\r\n+\r\n+    private final AtomicLong counter = new AtomicLong(0);\r\n+\r\n+    private SerializeClassChecker() {\r\n+        String blockAllClassExceptAllow = System.getProperty(CommonConstants.CLASS_DESERIALIZE_BLOCK_ALL, \"false\");\r\n+        BLOCK_ALL_CLASS_EXCEPT_ALLOW = Boolean.parseBoolean(blockAllClassExceptAllow);\r\n+\r\n+        String[] lines;\r\n+        try {\r\n+            ClassLoader classLoader = ClassUtils.getClassLoader(JavaBeanSerializeUtil.class);\r\n+            if (classLoader != null) {\r\n+                lines = IOUtils.readLines(classLoader.getResourceAsStream(CommonConstants.SERIALIZE_BLOCKED_LIST_FILE_PATH));\r\n+            } else {\r\n+                lines = IOUtils.readLines(ClassLoader.getSystemResourceAsStream(CommonConstants.SERIALIZE_BLOCKED_LIST_FILE_PATH));\r\n+            }\r\n+            for (String line : lines) {\r\n+                line = line.trim();\r\n+                if (StringUtils.isEmpty(line) || line.startsWith(\"#\")) {\r\n+                    continue;\r\n+                }\r\n+                CLASS_DESERIALIZE_BLOCKED_SET.add(line);\r\n+            }\r\n+\r\n+        } catch (IOException e) {\r\n+            logger.error(\"Failed to load blocked class list! Will ignore default blocked list.\", e);\r\n+        }\r\n+\r\n+        String allowedClassList = System.getProperty(CommonConstants.CLASS_DESERIALIZE_ALLOWED_LIST, \"\").trim().toLowerCase(Locale.ROOT);\r\n+        String blockedClassList = System.getProperty(CommonConstants.CLASS_DESERIALIZE_BLOCKED_LIST, \"\").trim().toLowerCase(Locale.ROOT);\r\n+\r\n+        if (StringUtils.isNotEmpty(allowedClassList)) {\r\n+            String[] classStrings = allowedClassList.trim().split(\",\");\r\n+            CLASS_DESERIALIZE_ALLOWED_SET.addAll(Arrays.asList(classStrings));\r\n+        }\r\n+\r\n+        if (StringUtils.isNotEmpty(blockedClassList)) {\r\n+            String[] classStrings = blockedClassList.trim().split(\",\");\r\n+            CLASS_DESERIALIZE_BLOCKED_SET.addAll(Arrays.asList(classStrings));\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    public static SerializeClassChecker getInstance() {\r\n+        if (INSTANCE == null) {\r\n+            synchronized (SerializeClassChecker.class) {\r\n+                if (INSTANCE == null) {\r\n+                    INSTANCE = new SerializeClassChecker();\r\n+                }\r\n+            }\r\n+        }\r\n+        return INSTANCE;\r\n+    }\r\n+\r\n+    /**\r\n+     * For ut only\r\n+     */\r\n+    @Deprecated\r\n+    protected static void clearInstance() {\r\n+        INSTANCE = null;\r\n+    }\r\n+\r\n+    /**\r\n+     * Check if a class is in block list, using prefix match\r\n+     *\r\n+     * @throws IllegalArgumentException if class is blocked\r\n+     * @param name class name ( all are convert to lower case )\r\n+     */\r\n+    public void validateClass(String name) {\r\n+        name = name.toLowerCase(Locale.ROOT);\r\n+        if (CACHE == CLASS_ALLOW_LFU_CACHE.get(name)) {\r\n+            return;\r\n+        }\r\n+\r\n+        if (CACHE == CLASS_BLOCK_LFU_CACHE.get(name)) {\r\n+            error(name);\r\n+        }\r\n+\r\n+        for (String allowedPrefix : CLASS_DESERIALIZE_ALLOWED_SET) {\r\n+            if (name.startsWith(allowedPrefix)) {\r\n+                CLASS_ALLOW_LFU_CACHE.put(name, CACHE);\r\n+                return;\r\n+            }\r\n+        }\r\n+\r\n+        for (String blockedPrefix : CLASS_DESERIALIZE_BLOCKED_SET) {\r\n+            if (BLOCK_ALL_CLASS_EXCEPT_ALLOW || name.startsWith(blockedPrefix)) {\r\n+                CLASS_BLOCK_LFU_CACHE.put(name, CACHE);\r\n+                error(name);\r\n+            }\r\n+        }\r\n+\r\n+        CLASS_ALLOW_LFU_CACHE.put(name, CACHE);\r\n+    }\r\n+\r\n+    private void error(String name) {\r\n+        String notice = \"Trigger the safety barrier! \" +\r\n+                \"Catch not allowed serialize class. \" +\r\n+                \"Class name: \" + name + \" . \" +\r\n+                \"This means currently maybe being attacking by others.\" +\r\n+                \"If you are sure this is a mistake, \" +\r\n+                \"please add this class name to `\" + CommonConstants.CLASS_DESERIALIZE_ALLOWED_LIST +\r\n+                \"` as a system environment property.\";\r\n+        if (counter.incrementAndGet() % 1000 == 0 || counter.get() < 100) {\r\n+            logger.error(notice);\r\n+        }\r\n+        throw new IllegalArgumentException(notice);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/ServiceAnnotationResolver.java", "source2": "org/apache/dubbo/common/utils/ServiceAnnotationResolver.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,132 +1,132 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-import org.apache.dubbo.config.annotation.DubboService;\n-import org.apache.dubbo.config.annotation.Service;\n-\n-import java.lang.annotation.Annotation;\n-import java.util.List;\n-\n-import static java.lang.String.format;\n-import static java.util.Arrays.asList;\n-import static java.util.Collections.unmodifiableList;\n-import static org.apache.dubbo.common.utils.AnnotationUtils.getAttribute;\n-import static org.apache.dubbo.common.utils.ArrayUtils.isNotEmpty;\n-import static org.apache.dubbo.common.utils.ClassUtils.isGenericClass;\n-import static org.apache.dubbo.common.utils.ClassUtils.resolveClass;\n-import static org.apache.dubbo.common.utils.StringUtils.isEmpty;\n-\n-/**\n- * The resolver class for {@link Service @Service}\n- *\n- * @see Service\n- * @see com.alibaba.dubbo.config.annotation.Service\n- * @since 2.7.6\n- */\n-public class ServiceAnnotationResolver {\n-\n-    /**\n-     * The annotation {@link Class classes} of Dubbo Service (read-only)\n-     *\n-     * @since 2.7.9\n-     */\n-    public static List<Class<? extends Annotation>> SERVICE_ANNOTATION_CLASSES = unmodifiableList(asList(DubboService.class, Service.class, com.alibaba.dubbo.config.annotation.Service.class));\n-\n-    private final Annotation serviceAnnotation;\n-\n-    private final Class<?> serviceType;\n-\n-    public ServiceAnnotationResolver(Class<?> serviceType) throws IllegalArgumentException {\n-        this.serviceType = serviceType;\n-        this.serviceAnnotation = getServiceAnnotation(serviceType);\n-    }\n-\n-    private Annotation getServiceAnnotation(Class<?> serviceType) {\n-\n-        Annotation serviceAnnotation = null;\n-\n-        for (Class<? extends Annotation> serviceAnnotationClass : SERVICE_ANNOTATION_CLASSES) {\n-            serviceAnnotation = serviceType.getAnnotation(serviceAnnotationClass);\n-            if (serviceAnnotation != null) {\n-                break;\n-            }\n-        }\n-\n-        if (serviceAnnotation == null) {\n-            throw new IllegalArgumentException(format(\"Any annotation of [%s] can't be annotated in the service type[%s].\",\n-                    SERVICE_ANNOTATION_CLASSES,\n-                    serviceType.getName()\n-            ));\n-        }\n-\n-        return serviceAnnotation;\n-    }\n-\n-    /**\n-     * Resolve the class name of interface\n-     *\n-     * @return if not found, return <code>null</code>\n-     */\n-    public String resolveInterfaceClassName() {\n-\n-        Class interfaceClass = null;\n-        // first, try to get the value from \"interfaceName\" attribute\n-        String interfaceName = resolveAttribute(\"interfaceName\");\n-\n-        if (isEmpty(interfaceName)) { // If not found, try \"interfaceClass\"\n-            interfaceClass = resolveAttribute(\"interfaceClass\");\n-        } else {\n-            interfaceClass = resolveClass(interfaceName, getClass().getClassLoader());\n-        }\n-\n-        if (isGenericClass(interfaceClass)) {\n-            interfaceName = interfaceClass.getName();\n-        } else {\n-            interfaceName = null;\n-        }\n-\n-        if (isEmpty(interfaceName)) { // If not fund, try to get the first interface from the service type\n-            Class[] interfaces = serviceType.getInterfaces();\n-            if (isNotEmpty(interfaces)) {\n-                interfaceName = interfaces[0].getName();\n-            }\n-        }\n-\n-        return interfaceName;\n-    }\n-\n-    public String resolveVersion() {\n-        return resolveAttribute(\"version\");\n-    }\n-\n-    public String resolveGroup() {\n-        return resolveAttribute(\"group\");\n-    }\n-\n-    private <T> T resolveAttribute(String attributeName) {\n-        return getAttribute(serviceAnnotation, attributeName);\n-    }\n-\n-    public Annotation getServiceAnnotation() {\n-        return serviceAnnotation;\n-    }\n-\n-    public Class<?> getServiceType() {\n-        return serviceType;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import org.apache.dubbo.config.annotation.DubboService;\r\n+import org.apache.dubbo.config.annotation.Service;\r\n+\r\n+import java.lang.annotation.Annotation;\r\n+import java.util.List;\r\n+\r\n+import static java.lang.String.format;\r\n+import static java.util.Arrays.asList;\r\n+import static java.util.Collections.unmodifiableList;\r\n+import static org.apache.dubbo.common.utils.AnnotationUtils.getAttribute;\r\n+import static org.apache.dubbo.common.utils.ArrayUtils.isNotEmpty;\r\n+import static org.apache.dubbo.common.utils.ClassUtils.isGenericClass;\r\n+import static org.apache.dubbo.common.utils.ClassUtils.resolveClass;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isEmpty;\r\n+\r\n+/**\r\n+ * The resolver class for {@link Service @Service}\r\n+ *\r\n+ * @see Service\r\n+ * @see com.alibaba.dubbo.config.annotation.Service\r\n+ * @since 2.7.6\r\n+ */\r\n+public class ServiceAnnotationResolver {\r\n+\r\n+    /**\r\n+     * The annotation {@link Class classes} of Dubbo Service (read-only)\r\n+     *\r\n+     * @since 2.7.9\r\n+     */\r\n+    public static List<Class<? extends Annotation>> SERVICE_ANNOTATION_CLASSES = unmodifiableList(asList(DubboService.class, Service.class, com.alibaba.dubbo.config.annotation.Service.class));\r\n+\r\n+    private final Annotation serviceAnnotation;\r\n+\r\n+    private final Class<?> serviceType;\r\n+\r\n+    public ServiceAnnotationResolver(Class<?> serviceType) throws IllegalArgumentException {\r\n+        this.serviceType = serviceType;\r\n+        this.serviceAnnotation = getServiceAnnotation(serviceType);\r\n+    }\r\n+\r\n+    private Annotation getServiceAnnotation(Class<?> serviceType) {\r\n+\r\n+        Annotation serviceAnnotation = null;\r\n+\r\n+        for (Class<? extends Annotation> serviceAnnotationClass : SERVICE_ANNOTATION_CLASSES) {\r\n+            serviceAnnotation = serviceType.getAnnotation(serviceAnnotationClass);\r\n+            if (serviceAnnotation != null) {\r\n+                break;\r\n+            }\r\n+        }\r\n+\r\n+        if (serviceAnnotation == null) {\r\n+            throw new IllegalArgumentException(format(\"Any annotation of [%s] can't be annotated in the service type[%s].\",\r\n+                    SERVICE_ANNOTATION_CLASSES,\r\n+                    serviceType.getName()\r\n+            ));\r\n+        }\r\n+\r\n+        return serviceAnnotation;\r\n+    }\r\n+\r\n+    /**\r\n+     * Resolve the class name of interface\r\n+     *\r\n+     * @return if not found, return <code>null</code>\r\n+     */\r\n+    public String resolveInterfaceClassName() {\r\n+\r\n+        Class interfaceClass = null;\r\n+        // first, try to get the value from \"interfaceName\" attribute\r\n+        String interfaceName = resolveAttribute(\"interfaceName\");\r\n+\r\n+        if (isEmpty(interfaceName)) { // If not found, try \"interfaceClass\"\r\n+            interfaceClass = resolveAttribute(\"interfaceClass\");\r\n+        } else {\r\n+            interfaceClass = resolveClass(interfaceName, getClass().getClassLoader());\r\n+        }\r\n+\r\n+        if (isGenericClass(interfaceClass)) {\r\n+            interfaceName = interfaceClass.getName();\r\n+        } else {\r\n+            interfaceName = null;\r\n+        }\r\n+\r\n+        if (isEmpty(interfaceName)) { // If not fund, try to get the first interface from the service type\r\n+            Class[] interfaces = serviceType.getInterfaces();\r\n+            if (isNotEmpty(interfaces)) {\r\n+                interfaceName = interfaces[0].getName();\r\n+            }\r\n+        }\r\n+\r\n+        return interfaceName;\r\n+    }\r\n+\r\n+    public String resolveVersion() {\r\n+        return resolveAttribute(\"version\");\r\n+    }\r\n+\r\n+    public String resolveGroup() {\r\n+        return resolveAttribute(\"group\");\r\n+    }\r\n+\r\n+    private <T> T resolveAttribute(String attributeName) {\r\n+        return getAttribute(serviceAnnotation, attributeName);\r\n+    }\r\n+\r\n+    public Annotation getServiceAnnotation() {\r\n+        return serviceAnnotation;\r\n+    }\r\n+\r\n+    public Class<?> getServiceType() {\r\n+        return serviceType;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/Stack.java", "source2": "org/apache/dubbo/common/utils/Stack.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,143 +1,143 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-import java.util.ArrayList;\n-import java.util.EmptyStackException;\n-import java.util.List;\n-\n-/**\n- * Stack.\n- */\n-\n-public class Stack<E> {\n-    private int mSize = 0;\n-\n-    private List<E> mElements = new ArrayList<E>();\n-\n-    public Stack() {\n-    }\n-\n-    /**\n-     * push.\n-     *\n-     * @param ele\n-     */\n-    public void push(E ele) {\n-        if (mElements.size() > mSize) {\n-            mElements.set(mSize, ele);\n-        } else {\n-            mElements.add(ele);\n-        }\n-        mSize++;\n-    }\n-\n-    /**\n-     * pop.\n-     *\n-     * @return the last element.\n-     */\n-    public E pop() {\n-        if (mSize == 0) {\n-            throw new EmptyStackException();\n-        }\n-        return mElements.set(--mSize, null);\n-    }\n-\n-    /**\n-     * peek.\n-     *\n-     * @return the last element.\n-     */\n-    public E peek() {\n-        if (mSize == 0) {\n-            throw new EmptyStackException();\n-        }\n-        return mElements.get(mSize - 1);\n-    }\n-\n-    /**\n-     * get.\n-     *\n-     * @param index index.\n-     * @return element.\n-     */\n-    public E get(int index) {\n-        if (index >= mSize || index + mSize < 0) {\n-            throw new IndexOutOfBoundsException(\"Index: \" + index + \", Size: \" + mSize);\n-        }\n-\n-        return index < 0 ? mElements.get(index + mSize) : mElements.get(index);\n-    }\n-\n-    /**\n-     * set.\n-     *\n-     * @param index index.\n-     * @param value element.\n-     * @return old element.\n-     */\n-    public E set(int index, E value) {\n-        if (index >= mSize || index + mSize < 0) {\n-            throw new IndexOutOfBoundsException(\"Index: \" + index + \", Size: \" + mSize);\n-        }\n-\n-        return mElements.set(index < 0 ? index + mSize : index, value);\n-    }\n-\n-    /**\n-     * remove.\n-     *\n-     * @param index\n-     * @return element\n-     */\n-    public E remove(int index) {\n-        if (index >= mSize || index + mSize < 0) {\n-            throw new IndexOutOfBoundsException(\"Index: \" + index + \", Size: \" + mSize);\n-        }\n-\n-        E ret = mElements.remove(index < 0 ? index + mSize : index);\n-        mSize--;\n-        return ret;\n-    }\n-\n-    /**\n-     * get stack size.\n-     *\n-     * @return size.\n-     */\n-    public int size() {\n-        return mSize;\n-    }\n-\n-    /**\n-     * is empty.\n-     *\n-     * @return empty or not.\n-     */\n-    public boolean isEmpty() {\n-        return mSize == 0;\n-    }\n-\n-    /**\n-     * clear stack.\n-     */\n-    public void clear() {\n-        mSize = 0;\n-        mElements.clear();\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.EmptyStackException;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * Stack.\r\n+ */\r\n+\r\n+public class Stack<E> {\r\n+    private int mSize = 0;\r\n+\r\n+    private List<E> mElements = new ArrayList<E>();\r\n+\r\n+    public Stack() {\r\n+    }\r\n+\r\n+    /**\r\n+     * push.\r\n+     *\r\n+     * @param ele\r\n+     */\r\n+    public void push(E ele) {\r\n+        if (mElements.size() > mSize) {\r\n+            mElements.set(mSize, ele);\r\n+        } else {\r\n+            mElements.add(ele);\r\n+        }\r\n+        mSize++;\r\n+    }\r\n+\r\n+    /**\r\n+     * pop.\r\n+     *\r\n+     * @return the last element.\r\n+     */\r\n+    public E pop() {\r\n+        if (mSize == 0) {\r\n+            throw new EmptyStackException();\r\n+        }\r\n+        return mElements.set(--mSize, null);\r\n+    }\r\n+\r\n+    /**\r\n+     * peek.\r\n+     *\r\n+     * @return the last element.\r\n+     */\r\n+    public E peek() {\r\n+        if (mSize == 0) {\r\n+            throw new EmptyStackException();\r\n+        }\r\n+        return mElements.get(mSize - 1);\r\n+    }\r\n+\r\n+    /**\r\n+     * get.\r\n+     *\r\n+     * @param index index.\r\n+     * @return element.\r\n+     */\r\n+    public E get(int index) {\r\n+        if (index >= mSize || index + mSize < 0) {\r\n+            throw new IndexOutOfBoundsException(\"Index: \" + index + \", Size: \" + mSize);\r\n+        }\r\n+\r\n+        return index < 0 ? mElements.get(index + mSize) : mElements.get(index);\r\n+    }\r\n+\r\n+    /**\r\n+     * set.\r\n+     *\r\n+     * @param index index.\r\n+     * @param value element.\r\n+     * @return old element.\r\n+     */\r\n+    public E set(int index, E value) {\r\n+        if (index >= mSize || index + mSize < 0) {\r\n+            throw new IndexOutOfBoundsException(\"Index: \" + index + \", Size: \" + mSize);\r\n+        }\r\n+\r\n+        return mElements.set(index < 0 ? index + mSize : index, value);\r\n+    }\r\n+\r\n+    /**\r\n+     * remove.\r\n+     *\r\n+     * @param index\r\n+     * @return element\r\n+     */\r\n+    public E remove(int index) {\r\n+        if (index >= mSize || index + mSize < 0) {\r\n+            throw new IndexOutOfBoundsException(\"Index: \" + index + \", Size: \" + mSize);\r\n+        }\r\n+\r\n+        E ret = mElements.remove(index < 0 ? index + mSize : index);\r\n+        mSize--;\r\n+        return ret;\r\n+    }\r\n+\r\n+    /**\r\n+     * get stack size.\r\n+     *\r\n+     * @return size.\r\n+     */\r\n+    public int size() {\r\n+        return mSize;\r\n+    }\r\n+\r\n+    /**\r\n+     * is empty.\r\n+     *\r\n+     * @return empty or not.\r\n+     */\r\n+    public boolean isEmpty() {\r\n+        return mSize == 0;\r\n+    }\r\n+\r\n+    /**\r\n+     * clear stack.\r\n+     */\r\n+    public void clear() {\r\n+        mSize = 0;\r\n+        mElements.clear();\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/common/utils/StringConstantFieldValuePredicate.java", "source2": "org/apache/dubbo/common/utils/StringConstantFieldValuePredicate.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,67 +1,67 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-import java.lang.reflect.Field;\n-import java.util.Set;\n-import java.util.function.Predicate;\n-import java.util.stream.Collectors;\n-import java.util.stream.Stream;\n-\n-import static java.lang.reflect.Modifier.isFinal;\n-import static java.lang.reflect.Modifier.isPublic;\n-import static java.lang.reflect.Modifier.isStatic;\n-import static org.apache.dubbo.common.utils.FieldUtils.getFieldValue;\n-\n-/**\n- * The constant field value {@link Predicate} for the specified {@link Class}\n- *\n- * @see Predicate\n- * @since 2.7.8\n- */\n-public class StringConstantFieldValuePredicate implements Predicate<String> {\n-\n-    private final Set<String> constantFieldValues;\n-\n-    public StringConstantFieldValuePredicate(Class<?> targetClass) {\n-        this.constantFieldValues = getConstantFieldValues(targetClass);\n-    }\n-\n-    public static Predicate<String> of(Class<?> targetClass) {\n-        return new StringConstantFieldValuePredicate(targetClass);\n-    }\n-\n-    private Set<String> getConstantFieldValues(Class<?> targetClass) {\n-        return Stream.of(targetClass.getFields())\n-                .filter(f -> isStatic(f.getModifiers()))         // static\n-                .filter(f -> isPublic(f.getModifiers()))         // public\n-                .filter(f -> isFinal(f.getModifiers()))          // final\n-                .map(this::getConstantValue)\n-                .filter(v -> v instanceof String)                // filters String type\n-                .map(String.class::cast)                         // Casts String type\n-                .collect(Collectors.toSet());\n-    }\n-\n-    @Override\n-    public boolean test(String s) {\n-        return constantFieldValues.contains(s);\n-    }\n-\n-    private Object getConstantValue(Field field) {\n-        return getFieldValue(null, field);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import java.lang.reflect.Field;\r\n+import java.util.Set;\r\n+import java.util.function.Predicate;\r\n+import java.util.stream.Collectors;\r\n+import java.util.stream.Stream;\r\n+\r\n+import static java.lang.reflect.Modifier.isFinal;\r\n+import static java.lang.reflect.Modifier.isPublic;\r\n+import static java.lang.reflect.Modifier.isStatic;\r\n+import static org.apache.dubbo.common.utils.FieldUtils.getFieldValue;\r\n+\r\n+/**\r\n+ * The constant field value {@link Predicate} for the specified {@link Class}\r\n+ *\r\n+ * @see Predicate\r\n+ * @since 2.7.8\r\n+ */\r\n+public class StringConstantFieldValuePredicate implements Predicate<String> {\r\n+\r\n+    private final Set<String> constantFieldValues;\r\n+\r\n+    public StringConstantFieldValuePredicate(Class<?> targetClass) {\r\n+        this.constantFieldValues = getConstantFieldValues(targetClass);\r\n+    }\r\n+\r\n+    public static Predicate<String> of(Class<?> targetClass) {\r\n+        return new StringConstantFieldValuePredicate(targetClass);\r\n+    }\r\n+\r\n+    private Set<String> getConstantFieldValues(Class<?> targetClass) {\r\n+        return Stream.of(targetClass.getFields())\r\n+                .filter(f -> isStatic(f.getModifiers()))         // static\r\n+                .filter(f -> isPublic(f.getModifiers()))         // public\r\n+                .filter(f -> isFinal(f.getModifiers()))          // final\r\n+                .map(this::getConstantValue)\r\n+                .filter(v -> v instanceof String)                // filters String type\r\n+                .map(String.class::cast)                         // Casts String type\r\n+                .collect(Collectors.toSet());\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean test(String s) {\r\n+        return constantFieldValues.contains(s);\r\n+    }\r\n+\r\n+    private Object getConstantValue(Field field) {\r\n+        return getFieldValue(null, field);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/TypeUtils.java", "source2": "org/apache/dubbo/common/utils/TypeUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,224 +1,224 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.utils;\n-\n-import java.lang.reflect.ParameterizedType;\n-import java.lang.reflect.Type;\n-import java.util.Arrays;\n-import java.util.Collection;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Objects;\n-import java.util.Set;\n-import java.util.function.Predicate;\n-import java.util.stream.Collectors;\n-\n-import static java.util.Arrays.asList;\n-import static java.util.Collections.emptyList;\n-import static java.util.Collections.unmodifiableList;\n-import static java.util.stream.Collectors.toList;\n-import static java.util.stream.Collectors.toSet;\n-import static java.util.stream.StreamSupport.stream;\n-import static org.apache.dubbo.common.function.Predicates.and;\n-import static org.apache.dubbo.common.function.Streams.filterAll;\n-import static org.apache.dubbo.common.function.Streams.filterList;\n-import static org.apache.dubbo.common.utils.ClassUtils.getAllInterfaces;\n-import static org.apache.dubbo.common.utils.ClassUtils.getAllSuperClasses;\n-import static org.apache.dubbo.common.utils.ClassUtils.isAssignableFrom;\n-\n-/**\n- * The utilities class for {@link Type}\n- *\n- * @since 2.7.6\n- */\n-public interface TypeUtils {\n-\n-    Predicate<Class<?>> NON_OBJECT_TYPE_FILTER = t -> !Objects.equals(Object.class, t);\n-\n-    static boolean isParameterizedType(Type type) {\n-        return type instanceof ParameterizedType;\n-    }\n-\n-    static Type getRawType(Type type) {\n-        if (isParameterizedType(type)) {\n-            return ((ParameterizedType) type).getRawType();\n-        } else {\n-            return type;\n-        }\n-    }\n-\n-    static Class<?> getRawClass(Type type) {\n-        Type rawType = getRawType(type);\n-        if (isClass(rawType)) {\n-            return (Class) rawType;\n-        }\n-        return null;\n-    }\n-\n-    static boolean isClass(Type type) {\n-        return type instanceof Class;\n-    }\n-\n-    static <T> Class<T> findActualTypeArgument(Type type, Class<?> interfaceClass, int index) {\n-        return (Class<T>) findActualTypeArguments(type, interfaceClass).get(index);\n-    }\n-\n-    static List<Class<?>> findActualTypeArguments(Type type, Class<?> interfaceClass) {\n-\n-        List<Class<?>> actualTypeArguments = new LinkedList<>();\n-\n-        getAllGenericTypes(type, t -> isAssignableFrom(interfaceClass, getRawClass(t)))\n-                .forEach(parameterizedType -> {\n-                    Class<?> rawClass = getRawClass(parameterizedType);\n-                    Type[] typeArguments = parameterizedType.getActualTypeArguments();\n-                    for (int i = 0; i < typeArguments.length; i++) {\n-                        Type typeArgument = typeArguments[i];\n-                        if (typeArgument instanceof Class) {\n-                            actualTypeArguments.add(i, (Class) typeArgument);\n-                        }\n-                    }\n-                    Class<?> superClass = rawClass.getSuperclass();\n-                    if (superClass != null) {\n-                        actualTypeArguments.addAll(findActualTypeArguments(superClass, interfaceClass));\n-                    }\n-                });\n-\n-        return unmodifiableList(actualTypeArguments);\n-    }\n-\n-    /**\n-     * Get the specified types' generic types(including super classes and interfaces) that are assignable from {@link ParameterizedType} interface\n-     *\n-     * @param type        the specified type\n-     * @param typeFilters one or more {@link Predicate}s to filter the {@link ParameterizedType} instance\n-     * @return non-null read-only {@link List}\n-     */\n-    static List<ParameterizedType> getGenericTypes(Type type, Predicate<ParameterizedType>... typeFilters) {\n-\n-        Class<?> rawClass = getRawClass(type);\n-\n-        if (rawClass == null) {\n-            return emptyList();\n-        }\n-\n-        List<Type> genericTypes = new LinkedList<>();\n-\n-        genericTypes.add(rawClass.getGenericSuperclass());\n-        genericTypes.addAll(asList(rawClass.getGenericInterfaces()));\n-\n-        return unmodifiableList(\n-                filterList(genericTypes, TypeUtils::isParameterizedType)\n-                        .stream()\n-                        .map(ParameterizedType.class::cast)\n-                        .filter(and(typeFilters))\n-                        .collect(toList())\n-        );\n-    }\n-\n-    /**\n-     * Get all generic types(including super classes and interfaces) that are assignable from {@link ParameterizedType} interface\n-     *\n-     * @param type        the specified type\n-     * @param typeFilters one or more {@link Predicate}s to filter the {@link ParameterizedType} instance\n-     * @return non-null read-only {@link List}\n-     */\n-    static List<ParameterizedType> getAllGenericTypes(Type type, Predicate<ParameterizedType>... typeFilters) {\n-        List<ParameterizedType> allGenericTypes = new LinkedList<>();\n-        // Add generic super classes\n-        allGenericTypes.addAll(getAllGenericSuperClasses(type, typeFilters));\n-        // Add generic super interfaces\n-        allGenericTypes.addAll(getAllGenericInterfaces(type, typeFilters));\n-        // wrap unmodifiable object\n-        return unmodifiableList(allGenericTypes);\n-    }\n-\n-    /**\n-     * Get all generic super classes that are assignable from {@link ParameterizedType} interface\n-     *\n-     * @param type        the specified type\n-     * @param typeFilters one or more {@link Predicate}s to filter the {@link ParameterizedType} instance\n-     * @return non-null read-only {@link List}\n-     */\n-    static List<ParameterizedType> getAllGenericSuperClasses(Type type, Predicate<ParameterizedType>... typeFilters) {\n-\n-        Class<?> rawClass = getRawClass(type);\n-\n-        if (rawClass == null || rawClass.isInterface()) {\n-            return emptyList();\n-        }\n-\n-        List<Class<?>> allTypes = new LinkedList<>();\n-        // Add current class\n-        allTypes.add(rawClass);\n-        // Add all super classes\n-        allTypes.addAll(getAllSuperClasses(rawClass, NON_OBJECT_TYPE_FILTER));\n-\n-        List<ParameterizedType> allGenericSuperClasses = allTypes\n-                .stream()\n-                .map(Class::getGenericSuperclass)\n-                .filter(TypeUtils::isParameterizedType)\n-                .map(ParameterizedType.class::cast)\n-                .collect(Collectors.toList());\n-\n-        return unmodifiableList(filterAll(allGenericSuperClasses, typeFilters));\n-    }\n-\n-    /**\n-     * Get all generic interfaces that are assignable from {@link ParameterizedType} interface\n-     *\n-     * @param type        the specified type\n-     * @param typeFilters one or more {@link Predicate}s to filter the {@link ParameterizedType} instance\n-     * @return non-null read-only {@link List}\n-     */\n-    static List<ParameterizedType> getAllGenericInterfaces(Type type, Predicate<ParameterizedType>... typeFilters) {\n-\n-        Class<?> rawClass = getRawClass(type);\n-\n-        if (rawClass == null) {\n-            return emptyList();\n-        }\n-\n-        List<Class<?>> allTypes = new LinkedList<>();\n-        // Add current class\n-        allTypes.add(rawClass);\n-        // Add all super classes\n-        allTypes.addAll(getAllSuperClasses(rawClass, NON_OBJECT_TYPE_FILTER));\n-        // Add all super interfaces\n-        allTypes.addAll(getAllInterfaces(rawClass));\n-\n-        List<ParameterizedType> allGenericInterfaces = allTypes\n-                .stream()\n-                .map(Class::getGenericInterfaces)\n-                .map(Arrays::asList)\n-                .flatMap(Collection::stream)\n-                .filter(TypeUtils::isParameterizedType)\n-                .map(ParameterizedType.class::cast)\n-                .collect(toList());\n-\n-        return unmodifiableList(filterAll(allGenericInterfaces, typeFilters));\n-    }\n-\n-    static String getClassName(Type type) {\n-        return getRawType(type).getTypeName();\n-    }\n-\n-    static Set<String> getClassNames(Iterable<? extends Type> types) {\n-        return stream(types.spliterator(), false)\n-                .map(TypeUtils::getClassName)\n-                .collect(toSet());\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import java.lang.reflect.ParameterizedType;\r\n+import java.lang.reflect.Type;\r\n+import java.util.Arrays;\r\n+import java.util.Collection;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Objects;\r\n+import java.util.Set;\r\n+import java.util.function.Predicate;\r\n+import java.util.stream.Collectors;\r\n+\r\n+import static java.util.Arrays.asList;\r\n+import static java.util.Collections.emptyList;\r\n+import static java.util.Collections.unmodifiableList;\r\n+import static java.util.stream.Collectors.toList;\r\n+import static java.util.stream.Collectors.toSet;\r\n+import static java.util.stream.StreamSupport.stream;\r\n+import static org.apache.dubbo.common.function.Predicates.and;\r\n+import static org.apache.dubbo.common.function.Streams.filterAll;\r\n+import static org.apache.dubbo.common.function.Streams.filterList;\r\n+import static org.apache.dubbo.common.utils.ClassUtils.getAllInterfaces;\r\n+import static org.apache.dubbo.common.utils.ClassUtils.getAllSuperClasses;\r\n+import static org.apache.dubbo.common.utils.ClassUtils.isAssignableFrom;\r\n+\r\n+/**\r\n+ * The utilities class for {@link Type}\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public interface TypeUtils {\r\n+\r\n+    Predicate<Class<?>> NON_OBJECT_TYPE_FILTER = t -> !Objects.equals(Object.class, t);\r\n+\r\n+    static boolean isParameterizedType(Type type) {\r\n+        return type instanceof ParameterizedType;\r\n+    }\r\n+\r\n+    static Type getRawType(Type type) {\r\n+        if (isParameterizedType(type)) {\r\n+            return ((ParameterizedType) type).getRawType();\r\n+        } else {\r\n+            return type;\r\n+        }\r\n+    }\r\n+\r\n+    static Class<?> getRawClass(Type type) {\r\n+        Type rawType = getRawType(type);\r\n+        if (isClass(rawType)) {\r\n+            return (Class) rawType;\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    static boolean isClass(Type type) {\r\n+        return type instanceof Class;\r\n+    }\r\n+\r\n+    static <T> Class<T> findActualTypeArgument(Type type, Class<?> interfaceClass, int index) {\r\n+        return (Class<T>) findActualTypeArguments(type, interfaceClass).get(index);\r\n+    }\r\n+\r\n+    static List<Class<?>> findActualTypeArguments(Type type, Class<?> interfaceClass) {\r\n+\r\n+        List<Class<?>> actualTypeArguments = new LinkedList<>();\r\n+\r\n+        getAllGenericTypes(type, t -> isAssignableFrom(interfaceClass, getRawClass(t)))\r\n+                .forEach(parameterizedType -> {\r\n+                    Class<?> rawClass = getRawClass(parameterizedType);\r\n+                    Type[] typeArguments = parameterizedType.getActualTypeArguments();\r\n+                    for (int i = 0; i < typeArguments.length; i++) {\r\n+                        Type typeArgument = typeArguments[i];\r\n+                        if (typeArgument instanceof Class) {\r\n+                            actualTypeArguments.add(i, (Class) typeArgument);\r\n+                        }\r\n+                    }\r\n+                    Class<?> superClass = rawClass.getSuperclass();\r\n+                    if (superClass != null) {\r\n+                        actualTypeArguments.addAll(findActualTypeArguments(superClass, interfaceClass));\r\n+                    }\r\n+                });\r\n+\r\n+        return unmodifiableList(actualTypeArguments);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the specified types' generic types(including super classes and interfaces) that are assignable from {@link ParameterizedType} interface\r\n+     *\r\n+     * @param type        the specified type\r\n+     * @param typeFilters one or more {@link Predicate}s to filter the {@link ParameterizedType} instance\r\n+     * @return non-null read-only {@link List}\r\n+     */\r\n+    static List<ParameterizedType> getGenericTypes(Type type, Predicate<ParameterizedType>... typeFilters) {\r\n+\r\n+        Class<?> rawClass = getRawClass(type);\r\n+\r\n+        if (rawClass == null) {\r\n+            return emptyList();\r\n+        }\r\n+\r\n+        List<Type> genericTypes = new LinkedList<>();\r\n+\r\n+        genericTypes.add(rawClass.getGenericSuperclass());\r\n+        genericTypes.addAll(asList(rawClass.getGenericInterfaces()));\r\n+\r\n+        return unmodifiableList(\r\n+                filterList(genericTypes, TypeUtils::isParameterizedType)\r\n+                        .stream()\r\n+                        .map(ParameterizedType.class::cast)\r\n+                        .filter(and(typeFilters))\r\n+                        .collect(toList())\r\n+        );\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all generic types(including super classes and interfaces) that are assignable from {@link ParameterizedType} interface\r\n+     *\r\n+     * @param type        the specified type\r\n+     * @param typeFilters one or more {@link Predicate}s to filter the {@link ParameterizedType} instance\r\n+     * @return non-null read-only {@link List}\r\n+     */\r\n+    static List<ParameterizedType> getAllGenericTypes(Type type, Predicate<ParameterizedType>... typeFilters) {\r\n+        List<ParameterizedType> allGenericTypes = new LinkedList<>();\r\n+        // Add generic super classes\r\n+        allGenericTypes.addAll(getAllGenericSuperClasses(type, typeFilters));\r\n+        // Add generic super interfaces\r\n+        allGenericTypes.addAll(getAllGenericInterfaces(type, typeFilters));\r\n+        // wrap unmodifiable object\r\n+        return unmodifiableList(allGenericTypes);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all generic super classes that are assignable from {@link ParameterizedType} interface\r\n+     *\r\n+     * @param type        the specified type\r\n+     * @param typeFilters one or more {@link Predicate}s to filter the {@link ParameterizedType} instance\r\n+     * @return non-null read-only {@link List}\r\n+     */\r\n+    static List<ParameterizedType> getAllGenericSuperClasses(Type type, Predicate<ParameterizedType>... typeFilters) {\r\n+\r\n+        Class<?> rawClass = getRawClass(type);\r\n+\r\n+        if (rawClass == null || rawClass.isInterface()) {\r\n+            return emptyList();\r\n+        }\r\n+\r\n+        List<Class<?>> allTypes = new LinkedList<>();\r\n+        // Add current class\r\n+        allTypes.add(rawClass);\r\n+        // Add all super classes\r\n+        allTypes.addAll(getAllSuperClasses(rawClass, NON_OBJECT_TYPE_FILTER));\r\n+\r\n+        List<ParameterizedType> allGenericSuperClasses = allTypes\r\n+                .stream()\r\n+                .map(Class::getGenericSuperclass)\r\n+                .filter(TypeUtils::isParameterizedType)\r\n+                .map(ParameterizedType.class::cast)\r\n+                .collect(Collectors.toList());\r\n+\r\n+        return unmodifiableList(filterAll(allGenericSuperClasses, typeFilters));\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all generic interfaces that are assignable from {@link ParameterizedType} interface\r\n+     *\r\n+     * @param type        the specified type\r\n+     * @param typeFilters one or more {@link Predicate}s to filter the {@link ParameterizedType} instance\r\n+     * @return non-null read-only {@link List}\r\n+     */\r\n+    static List<ParameterizedType> getAllGenericInterfaces(Type type, Predicate<ParameterizedType>... typeFilters) {\r\n+\r\n+        Class<?> rawClass = getRawClass(type);\r\n+\r\n+        if (rawClass == null) {\r\n+            return emptyList();\r\n+        }\r\n+\r\n+        List<Class<?>> allTypes = new LinkedList<>();\r\n+        // Add current class\r\n+        allTypes.add(rawClass);\r\n+        // Add all super classes\r\n+        allTypes.addAll(getAllSuperClasses(rawClass, NON_OBJECT_TYPE_FILTER));\r\n+        // Add all super interfaces\r\n+        allTypes.addAll(getAllInterfaces(rawClass));\r\n+\r\n+        List<ParameterizedType> allGenericInterfaces = allTypes\r\n+                .stream()\r\n+                .map(Class::getGenericInterfaces)\r\n+                .map(Arrays::asList)\r\n+                .flatMap(Collection::stream)\r\n+                .filter(TypeUtils::isParameterizedType)\r\n+                .map(ParameterizedType.class::cast)\r\n+                .collect(toList());\r\n+\r\n+        return unmodifiableList(filterAll(allGenericInterfaces, typeFilters));\r\n+    }\r\n+\r\n+    static String getClassName(Type type) {\r\n+        return getRawType(type).getTypeName();\r\n+    }\r\n+\r\n+    static Set<String> getClassNames(Iterable<? extends Type> types) {\r\n+        return stream(types.spliterator(), false)\r\n+                .map(TypeUtils::getClassName)\r\n+                .collect(toSet());\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/utils/Utf8Utils.java", "source2": "org/apache/dubbo/common/utils/Utf8Utils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,229 +1,229 @@\n-// Protocol Buffers - Google's data interchange format\n-// Copyright 2008 Google Inc.  All rights reserved.\n-// https://developers.google.com/protocol-buffers/\n-//\n-// Redistribution and use in source and binary forms, with or without\n-// modification, are permitted provided that the following conditions are\n-// met:\n-//\n-//     * Redistributions of source code must retain the above copyright\n-// notice, this list of conditions and the following disclaimer.\n-//     * Redistributions in binary form must reproduce the above\n-// copyright notice, this list of conditions and the following disclaimer\n-// in the documentation and/or other materials provided with the\n-// distribution.\n-//     * Neither the name of Google Inc. nor the names of its\n-// contributors may be used to endorse or promote products derived from\n-// this software without specific prior written permission.\n-//\n-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n-// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n-package org.apache.dubbo.common.utils;\n-\n-import static java.lang.Character.MIN_HIGH_SURROGATE;\n-import static java.lang.Character.MIN_LOW_SURROGATE;\n-import static java.lang.Character.MIN_SUPPLEMENTARY_CODE_POINT;\n-\n-/**\n- * See original <a href=\n- * \"https://github.com/protocolbuffers/protobuf/blob/master/java/core/src/main/java/com/google/protobuf/Utf8.java\"\n- * >Utf8.java</a>\n- */\n-public final class Utf8Utils {\n-\n-    private Utf8Utils() {\n-        //empty\n-    }\n-\n-    public static int decodeUtf8(byte[] srcBytes, int srcIdx, int srcSize, char[] destChars, int destIdx) {\n-        // Bitwise OR combines the sign bits so any negative value fails the check.\n-        if ((srcIdx | srcSize | srcBytes.length - srcIdx - srcSize) < 0\n-                || (destIdx | destChars.length - destIdx - srcSize) < 0) {\n-            String exMsg = String.format(\"buffer srcBytes.length=%d, srcIdx=%d, srcSize=%d, destChars.length=%d, \" +\n-                    \"destIdx=%d\", srcBytes.length, srcIdx, srcSize, destChars.length, destIdx);\n-            throw new ArrayIndexOutOfBoundsException(\n-                    exMsg);\n-        }\n-\n-        int offset = srcIdx;\n-        final int limit = offset + srcSize;\n-        final int destIdx0 = destIdx;\n-\n-        // Optimize for 100% ASCII (Hotspot loves small simple top-level loops like this).\n-        // This simple loop stops when we encounter a byte >= 0x80 (i.e. non-ASCII).\n-        while (offset < limit) {\n-            byte b = srcBytes[offset];\n-            if (!DecodeUtil.isOneByte(b)) {\n-                break;\n-            }\n-            offset++;\n-            DecodeUtil.handleOneByteSafe(b, destChars, destIdx++);\n-        }\n-\n-        while (offset < limit) {\n-            byte byte1 = srcBytes[offset++];\n-            if (DecodeUtil.isOneByte(byte1)) {\n-                DecodeUtil.handleOneByteSafe(byte1, destChars, destIdx++);\n-                // It's common for there to be multiple ASCII characters in a run mixed in, so add an\n-                // extra optimized loop to take care of these runs.\n-                while (offset < limit) {\n-                    byte b = srcBytes[offset];\n-                    if (!DecodeUtil.isOneByte(b)) {\n-                        break;\n-                    }\n-                    offset++;\n-                    DecodeUtil.handleOneByteSafe(b, destChars, destIdx++);\n-                }\n-            } else if (DecodeUtil.isTwoBytes(byte1)) {\n-                if (offset >= limit) {\n-                    throw new IllegalArgumentException(\"invalid UTF-8.\");\n-                }\n-                DecodeUtil.handleTwoBytesSafe(byte1, /* byte2 */ srcBytes[offset++], destChars, destIdx++);\n-            } else if (DecodeUtil.isThreeBytes(byte1)) {\n-                if (offset >= limit - 1) {\n-                    throw new IllegalArgumentException(\"invalid UTF-8.\");\n-                }\n-                DecodeUtil.handleThreeBytesSafe(\n-                        byte1,\n-                        /* byte2 */ srcBytes[offset++],\n-                        /* byte3 */ srcBytes[offset++],\n-                        destChars,\n-                        destIdx++);\n-            } else {\n-                if (offset >= limit - 2) {\n-                    throw new IllegalArgumentException(\"invalid UTF-8.\");\n-                }\n-                DecodeUtil.handleFourBytesSafe(\n-                        byte1,\n-                        /* byte2 */ srcBytes[offset++],\n-                        /* byte3 */ srcBytes[offset++],\n-                        /* byte4 */ srcBytes[offset++],\n-                        destChars,\n-                        destIdx);\n-                destIdx += 2;\n-            }\n-        }\n-        return destIdx - destIdx0;\n-    }\n-\n-\n-    private static class DecodeUtil {\n-\n-        /**\n-         * Returns whether this is a single-byte codepoint (i.e., ASCII) with the form '0XXXXXXX'.\n-         */\n-        private static boolean isOneByte(byte b) {\n-            return b >= 0;\n-        }\n-\n-        /**\n-         * Returns whether this is a two-byte codepoint with the form '10XXXXXX'.\n-         */\n-        private static boolean isTwoBytes(byte b) {\n-            return b < (byte) 0xE0;\n-        }\n-\n-        /**\n-         * Returns whether this is a three-byte codepoint with the form '110XXXXX'.\n-         */\n-        private static boolean isThreeBytes(byte b) {\n-            return b < (byte) 0xF0;\n-        }\n-\n-        private static void handleOneByteSafe(byte byte1, char[] resultArr, int resultPos) {\n-            resultArr[resultPos] = (char) byte1;\n-        }\n-\n-        private static void handleTwoBytesSafe(byte byte1, byte byte2, char[] resultArr, int resultPos) {\n-            checkUtf8(byte1, byte2);\n-            resultArr[resultPos] = (char) (((byte1 & 0x1F) << 6) | trailingByteValue(byte2));\n-        }\n-\n-        private static void checkUtf8(byte byte1, byte byte2) {\n-            // Simultaneously checks for illegal trailing-byte in leading position (<= '11000000') and\n-            // overlong 2-byte, '11000001'.\n-            if (byte1 < (byte) 0xC2 || isNotTrailingByte(byte2)) {\n-                throw new IllegalArgumentException(\"invalid UTF-8.\");\n-            }\n-        }\n-\n-        private static void handleThreeBytesSafe(byte byte1, byte byte2, byte byte3, char[] resultArr, int resultPos) {\n-            checkUtf8(byte1, byte2, byte3);\n-            resultArr[resultPos] =\n-                    (char) (((byte1 & 0x0F) << 12) | (trailingByteValue(byte2) << 6) | trailingByteValue(byte3));\n-        }\n-\n-        private static void checkUtf8(byte byte1, byte byte2, byte byte3) {\n-            if (isNotTrailingByte(byte2)\n-                    // overlong? 5 most significant bits must not all be zero\n-                    || (byte1 == (byte) 0xE0 && byte2 < (byte) 0xA0)\n-                    // check for illegal surrogate codepoints\n-                    || (byte1 == (byte) 0xED && byte2 >= (byte) 0xA0)\n-                    || isNotTrailingByte(byte3)) {\n-                throw new IllegalArgumentException(\"invalid UTF-8.\");\n-            }\n-        }\n-\n-        private static void handleFourBytesSafe(byte byte1, byte byte2, byte byte3, byte byte4, char[] resultArr,\n-                                                int resultPos) {\n-            checkUtf8(byte1, byte2, byte3, byte4);\n-            int codepoint =\n-                    ((byte1 & 0x07) << 18)\n-                            | (trailingByteValue(byte2) << 12)\n-                            | (trailingByteValue(byte3) << 6)\n-                            | trailingByteValue(byte4);\n-\n-            resultArr[resultPos] = DecodeUtil.highSurrogate(codepoint);\n-            resultArr[resultPos + 1] = DecodeUtil.lowSurrogate(codepoint);\n-        }\n-\n-        private static void checkUtf8(byte byte1, byte byte2, byte byte3, byte byte4) {\n-            if (isNotTrailingByte(byte2)\n-                    // Check that 1 <= plane <= 16.  Tricky optimized form of:\n-                    //   valid 4-byte leading byte?\n-                    // if (byte1 > (byte) 0xF4 ||\n-                    //   overlong? 4 most significant bits must not all be zero\n-                    //     byte1 == (byte) 0xF0 && byte2 < (byte) 0x90 ||\n-                    //   codepoint larger than the highest code point (U+10FFFF)?\n-                    //     byte1 == (byte) 0xF4 && byte2 > (byte) 0x8F)\n-                    || (((byte1 << 28) + (byte2 - (byte) 0x90)) >> 30) != 0\n-                    || isNotTrailingByte(byte3)\n-                    || isNotTrailingByte(byte4)) {\n-                throw new IllegalArgumentException(\"invalid UTF-8.\");\n-            }\n-        }\n-\n-        /**\n-         * Returns whether the byte is not a valid continuation of the form '10XXXXXX'.\n-         */\n-        private static boolean isNotTrailingByte(byte b) {\n-            return b > (byte) 0xBF;\n-        }\n-\n-        /**\n-         * Returns the actual value of the trailing byte (removes the prefix '10') for composition.\n-         */\n-        private static int trailingByteValue(byte b) {\n-            return b & 0x3F;\n-        }\n-\n-        private static char highSurrogate(int codePoint) {\n-            return (char)\n-                    ((MIN_HIGH_SURROGATE - (MIN_SUPPLEMENTARY_CODE_POINT >>> 10)) + (codePoint >>> 10));\n-        }\n-\n-        private static char lowSurrogate(int codePoint) {\n-            return (char) (MIN_LOW_SURROGATE + (codePoint & 0x3ff));\n-        }\n-    }\n-\n-}\n+// Protocol Buffers - Google's data interchange format\r\n+// Copyright 2008 Google Inc.  All rights reserved.\r\n+// https://developers.google.com/protocol-buffers/\r\n+//\r\n+// Redistribution and use in source and binary forms, with or without\r\n+// modification, are permitted provided that the following conditions are\r\n+// met:\r\n+//\r\n+//     * Redistributions of source code must retain the above copyright\r\n+// notice, this list of conditions and the following disclaimer.\r\n+//     * Redistributions in binary form must reproduce the above\r\n+// copyright notice, this list of conditions and the following disclaimer\r\n+// in the documentation and/or other materials provided with the\r\n+// distribution.\r\n+//     * Neither the name of Google Inc. nor the names of its\r\n+// contributors may be used to endorse or promote products derived from\r\n+// this software without specific prior written permission.\r\n+//\r\n+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r\n+// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r\n+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r\n+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\r\n+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\r\n+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\r\n+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r\n+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r\n+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r\n+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r\n+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n+package org.apache.dubbo.common.utils;\r\n+\r\n+import static java.lang.Character.MIN_HIGH_SURROGATE;\r\n+import static java.lang.Character.MIN_LOW_SURROGATE;\r\n+import static java.lang.Character.MIN_SUPPLEMENTARY_CODE_POINT;\r\n+\r\n+/**\r\n+ * See original <a href=\r\n+ * \"https://github.com/protocolbuffers/protobuf/blob/master/java/core/src/main/java/com/google/protobuf/Utf8.java\"\r\n+ * >Utf8.java</a>\r\n+ */\r\n+public final class Utf8Utils {\r\n+\r\n+    private Utf8Utils() {\r\n+        //empty\r\n+    }\r\n+\r\n+    public static int decodeUtf8(byte[] srcBytes, int srcIdx, int srcSize, char[] destChars, int destIdx) {\r\n+        // Bitwise OR combines the sign bits so any negative value fails the check.\r\n+        if ((srcIdx | srcSize | srcBytes.length - srcIdx - srcSize) < 0\r\n+                || (destIdx | destChars.length - destIdx - srcSize) < 0) {\r\n+            String exMsg = String.format(\"buffer srcBytes.length=%d, srcIdx=%d, srcSize=%d, destChars.length=%d, \" +\r\n+                    \"destIdx=%d\", srcBytes.length, srcIdx, srcSize, destChars.length, destIdx);\r\n+            throw new ArrayIndexOutOfBoundsException(\r\n+                    exMsg);\r\n+        }\r\n+\r\n+        int offset = srcIdx;\r\n+        final int limit = offset + srcSize;\r\n+        final int destIdx0 = destIdx;\r\n+\r\n+        // Optimize for 100% ASCII (Hotspot loves small simple top-level loops like this).\r\n+        // This simple loop stops when we encounter a byte >= 0x80 (i.e. non-ASCII).\r\n+        while (offset < limit) {\r\n+            byte b = srcBytes[offset];\r\n+            if (!DecodeUtil.isOneByte(b)) {\r\n+                break;\r\n+            }\r\n+            offset++;\r\n+            DecodeUtil.handleOneByteSafe(b, destChars, destIdx++);\r\n+        }\r\n+\r\n+        while (offset < limit) {\r\n+            byte byte1 = srcBytes[offset++];\r\n+            if (DecodeUtil.isOneByte(byte1)) {\r\n+                DecodeUtil.handleOneByteSafe(byte1, destChars, destIdx++);\r\n+                // It's common for there to be multiple ASCII characters in a run mixed in, so add an\r\n+                // extra optimized loop to take care of these runs.\r\n+                while (offset < limit) {\r\n+                    byte b = srcBytes[offset];\r\n+                    if (!DecodeUtil.isOneByte(b)) {\r\n+                        break;\r\n+                    }\r\n+                    offset++;\r\n+                    DecodeUtil.handleOneByteSafe(b, destChars, destIdx++);\r\n+                }\r\n+            } else if (DecodeUtil.isTwoBytes(byte1)) {\r\n+                if (offset >= limit) {\r\n+                    throw new IllegalArgumentException(\"invalid UTF-8.\");\r\n+                }\r\n+                DecodeUtil.handleTwoBytesSafe(byte1, /* byte2 */ srcBytes[offset++], destChars, destIdx++);\r\n+            } else if (DecodeUtil.isThreeBytes(byte1)) {\r\n+                if (offset >= limit - 1) {\r\n+                    throw new IllegalArgumentException(\"invalid UTF-8.\");\r\n+                }\r\n+                DecodeUtil.handleThreeBytesSafe(\r\n+                        byte1,\r\n+                        /* byte2 */ srcBytes[offset++],\r\n+                        /* byte3 */ srcBytes[offset++],\r\n+                        destChars,\r\n+                        destIdx++);\r\n+            } else {\r\n+                if (offset >= limit - 2) {\r\n+                    throw new IllegalArgumentException(\"invalid UTF-8.\");\r\n+                }\r\n+                DecodeUtil.handleFourBytesSafe(\r\n+                        byte1,\r\n+                        /* byte2 */ srcBytes[offset++],\r\n+                        /* byte3 */ srcBytes[offset++],\r\n+                        /* byte4 */ srcBytes[offset++],\r\n+                        destChars,\r\n+                        destIdx);\r\n+                destIdx += 2;\r\n+            }\r\n+        }\r\n+        return destIdx - destIdx0;\r\n+    }\r\n+\r\n+\r\n+    private static class DecodeUtil {\r\n+\r\n+        /**\r\n+         * Returns whether this is a single-byte codepoint (i.e., ASCII) with the form '0XXXXXXX'.\r\n+         */\r\n+        private static boolean isOneByte(byte b) {\r\n+            return b >= 0;\r\n+        }\r\n+\r\n+        /**\r\n+         * Returns whether this is a two-byte codepoint with the form '10XXXXXX'.\r\n+         */\r\n+        private static boolean isTwoBytes(byte b) {\r\n+            return b < (byte) 0xE0;\r\n+        }\r\n+\r\n+        /**\r\n+         * Returns whether this is a three-byte codepoint with the form '110XXXXX'.\r\n+         */\r\n+        private static boolean isThreeBytes(byte b) {\r\n+            return b < (byte) 0xF0;\r\n+        }\r\n+\r\n+        private static void handleOneByteSafe(byte byte1, char[] resultArr, int resultPos) {\r\n+            resultArr[resultPos] = (char) byte1;\r\n+        }\r\n+\r\n+        private static void handleTwoBytesSafe(byte byte1, byte byte2, char[] resultArr, int resultPos) {\r\n+            checkUtf8(byte1, byte2);\r\n+            resultArr[resultPos] = (char) (((byte1 & 0x1F) << 6) | trailingByteValue(byte2));\r\n+        }\r\n+\r\n+        private static void checkUtf8(byte byte1, byte byte2) {\r\n+            // Simultaneously checks for illegal trailing-byte in leading position (<= '11000000') and\r\n+            // overlong 2-byte, '11000001'.\r\n+            if (byte1 < (byte) 0xC2 || isNotTrailingByte(byte2)) {\r\n+                throw new IllegalArgumentException(\"invalid UTF-8.\");\r\n+            }\r\n+        }\r\n+\r\n+        private static void handleThreeBytesSafe(byte byte1, byte byte2, byte byte3, char[] resultArr, int resultPos) {\r\n+            checkUtf8(byte1, byte2, byte3);\r\n+            resultArr[resultPos] =\r\n+                    (char) (((byte1 & 0x0F) << 12) | (trailingByteValue(byte2) << 6) | trailingByteValue(byte3));\r\n+        }\r\n+\r\n+        private static void checkUtf8(byte byte1, byte byte2, byte byte3) {\r\n+            if (isNotTrailingByte(byte2)\r\n+                    // overlong? 5 most significant bits must not all be zero\r\n+                    || (byte1 == (byte) 0xE0 && byte2 < (byte) 0xA0)\r\n+                    // check for illegal surrogate codepoints\r\n+                    || (byte1 == (byte) 0xED && byte2 >= (byte) 0xA0)\r\n+                    || isNotTrailingByte(byte3)) {\r\n+                throw new IllegalArgumentException(\"invalid UTF-8.\");\r\n+            }\r\n+        }\r\n+\r\n+        private static void handleFourBytesSafe(byte byte1, byte byte2, byte byte3, byte byte4, char[] resultArr,\r\n+                                                int resultPos) {\r\n+            checkUtf8(byte1, byte2, byte3, byte4);\r\n+            int codepoint =\r\n+                    ((byte1 & 0x07) << 18)\r\n+                            | (trailingByteValue(byte2) << 12)\r\n+                            | (trailingByteValue(byte3) << 6)\r\n+                            | trailingByteValue(byte4);\r\n+\r\n+            resultArr[resultPos] = DecodeUtil.highSurrogate(codepoint);\r\n+            resultArr[resultPos + 1] = DecodeUtil.lowSurrogate(codepoint);\r\n+        }\r\n+\r\n+        private static void checkUtf8(byte byte1, byte byte2, byte byte3, byte byte4) {\r\n+            if (isNotTrailingByte(byte2)\r\n+                    // Check that 1 <= plane <= 16.  Tricky optimized form of:\r\n+                    //   valid 4-byte leading byte?\r\n+                    // if (byte1 > (byte) 0xF4 ||\r\n+                    //   overlong? 4 most significant bits must not all be zero\r\n+                    //     byte1 == (byte) 0xF0 && byte2 < (byte) 0x90 ||\r\n+                    //   codepoint larger than the highest code point (U+10FFFF)?\r\n+                    //     byte1 == (byte) 0xF4 && byte2 > (byte) 0x8F)\r\n+                    || (((byte1 << 28) + (byte2 - (byte) 0x90)) >> 30) != 0\r\n+                    || isNotTrailingByte(byte3)\r\n+                    || isNotTrailingByte(byte4)) {\r\n+                throw new IllegalArgumentException(\"invalid UTF-8.\");\r\n+            }\r\n+        }\r\n+\r\n+        /**\r\n+         * Returns whether the byte is not a valid continuation of the form '10XXXXXX'.\r\n+         */\r\n+        private static boolean isNotTrailingByte(byte b) {\r\n+            return b > (byte) 0xBF;\r\n+        }\r\n+\r\n+        /**\r\n+         * Returns the actual value of the trailing byte (removes the prefix '10') for composition.\r\n+         */\r\n+        private static int trailingByteValue(byte b) {\r\n+            return b & 0x3F;\r\n+        }\r\n+\r\n+        private static char highSurrogate(int codePoint) {\r\n+            return (char)\r\n+                    ((MIN_HIGH_SURROGATE - (MIN_SUPPLEMENTARY_CODE_POINT >>> 10)) + (codePoint >>> 10));\r\n+        }\r\n+\r\n+        private static char lowSurrogate(int codePoint) {\r\n+            return (char) (MIN_LOW_SURROGATE + (codePoint & 0x3ff));\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/AbstractConfig.java", "source2": "org/apache/dubbo/config/AbstractConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,614 +1,614 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.CompositeConfiguration;\n-import org.apache.dubbo.common.config.Environment;\n-import org.apache.dubbo.common.constants.CommonConstants;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ClassUtils;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.MethodUtils;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.context.ConfigManager;\n-import org.apache.dubbo.config.support.Parameter;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.AsyncMethodInfo;\n-\n-import javax.annotation.PostConstruct;\n-import java.io.Serializable;\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Modifier;\n-import java.util.Collections;\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.Objects;\n-import java.util.Set;\n-import java.util.concurrent.atomic.AtomicBoolean;\n-import java.util.stream.Collectors;\n-\n-import static org.apache.dubbo.common.utils.ReflectUtils.findMethodByMethodSignature;\n-\n-/**\n- * Utility methods and public methods for parsing configuration\n- *\n- * @export\n- */\n-public abstract class AbstractConfig implements Serializable {\n-\n-    protected static final Logger logger = LoggerFactory.getLogger(AbstractConfig.class);\n-    private static final long serialVersionUID = 4267533505537413570L;\n-\n-    /**\n-     * The legacy properties container\n-     */\n-    private static final Map<String, String> LEGACY_PROPERTIES = new HashMap<String, String>();\n-\n-    /**\n-     * The suffix container\n-     */\n-    private static final String[] SUFFIXES = new String[]{\"Config\", \"Bean\", \"ConfigBase\"};\n-\n-    static {\n-        LEGACY_PROPERTIES.put(\"dubbo.protocol.name\", \"dubbo.service.protocol\");\n-        LEGACY_PROPERTIES.put(\"dubbo.protocol.host\", \"dubbo.service.server.host\");\n-        LEGACY_PROPERTIES.put(\"dubbo.protocol.port\", \"dubbo.service.server.port\");\n-        LEGACY_PROPERTIES.put(\"dubbo.protocol.threads\", \"dubbo.service.max.thread.pool.size\");\n-        LEGACY_PROPERTIES.put(\"dubbo.consumer.timeout\", \"dubbo.service.invoke.timeout\");\n-        LEGACY_PROPERTIES.put(\"dubbo.consumer.retries\", \"dubbo.service.max.retry.providers\");\n-        LEGACY_PROPERTIES.put(\"dubbo.consumer.check\", \"dubbo.service.allow.no.provider\");\n-        LEGACY_PROPERTIES.put(\"dubbo.service.url\", \"dubbo.service.address\");\n-    }\n-\n-    /**\n-     * The config id\n-     */\n-    protected String id;\n-    protected String prefix;\n-\n-    protected final AtomicBoolean refreshed = new AtomicBoolean(false);\n-\n-    private static String convertLegacyValue(String key, String value) {\n-        if (value != null && value.length() > 0) {\n-            if (\"dubbo.service.max.retry.providers\".equals(key)) {\n-                return String.valueOf(Integer.parseInt(value) - 1);\n-            } else if (\"dubbo.service.allow.no.provider\".equals(key)) {\n-                return String.valueOf(!Boolean.parseBoolean(value));\n-            }\n-        }\n-        return value;\n-    }\n-\n-    public static String getTagName(Class<?> cls) {\n-        String tag = cls.getSimpleName();\n-        for (String suffix : SUFFIXES) {\n-            if (tag.endsWith(suffix)) {\n-                tag = tag.substring(0, tag.length() - suffix.length());\n-                break;\n-            }\n-        }\n-        return StringUtils.camelToSplitName(tag, \"-\");\n-    }\n-\n-    public static void appendParameters(Map<String, String> parameters, Object config) {\n-        appendParameters(parameters, config, null);\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    public static void appendParameters(Map<String, String> parameters, Object config, String prefix) {\n-        if (config == null) {\n-            return;\n-        }\n-        Method[] methods = config.getClass().getMethods();\n-        for (Method method : methods) {\n-            try {\n-                String name = method.getName();\n-                if (MethodUtils.isGetter(method)) {\n-                    Parameter parameter = method.getAnnotation(Parameter.class);\n-                    if (method.getReturnType() == Object.class || parameter != null && parameter.excluded()) {\n-                        continue;\n-                    }\n-                    String key;\n-                    if (parameter != null && parameter.key().length() > 0) {\n-                        key = parameter.key();\n-                    } else {\n-                        key = calculatePropertyFromGetter(name);\n-                    }\n-                    Object value = method.invoke(config);\n-                    String str = String.valueOf(value).trim();\n-                    if (value != null && str.length() > 0) {\n-                        if (parameter != null && parameter.escaped()) {\n-                            str = URL.encode(str);\n-                        }\n-                        if (parameter != null && parameter.append()) {\n-                            String pre = parameters.get(key);\n-                            if (pre != null && pre.length() > 0) {\n-                                str = pre + \",\" + str;\n-                            }\n-                        }\n-                        if (prefix != null && prefix.length() > 0) {\n-                            key = prefix + \".\" + key;\n-                        }\n-                        parameters.put(key, str);\n-                    } else if (parameter != null && parameter.required()) {\n-                        throw new IllegalStateException(config.getClass().getSimpleName() + \".\" + key + \" == null\");\n-                    }\n-                } else if (isParametersGetter(method)) {\n-                    Map<String, String> map = (Map<String, String>) method.invoke(config, new Object[0]);\n-                    parameters.putAll(convert(map, prefix));\n-                }\n-            } catch (Exception e) {\n-                throw new IllegalStateException(e.getMessage(), e);\n-            }\n-        }\n-    }\n-\n-    @Deprecated\n-    protected static void appendAttributes(Map<String, Object> parameters, Object config) {\n-        appendAttributes(parameters, config, null);\n-    }\n-\n-    @Deprecated\n-    protected static void appendAttributes(Map<String, Object> parameters, Object config, String prefix) {\n-        if (config == null) {\n-            return;\n-        }\n-        Method[] methods = config.getClass().getMethods();\n-        for (Method method : methods) {\n-            try {\n-                Parameter parameter = method.getAnnotation(Parameter.class);\n-                if (parameter == null || !parameter.attribute()) {\n-                    continue;\n-                }\n-                String name = method.getName();\n-                if (MethodUtils.isGetter(method)) {\n-                    String key;\n-                    if (parameter.key().length() > 0) {\n-                        key = parameter.key();\n-                    } else {\n-                        key = calculateAttributeFromGetter(name);\n-                    }\n-                    Object value = method.invoke(config);\n-                    if (value != null) {\n-                        if (prefix != null && prefix.length() > 0) {\n-                            key = prefix + \".\" + key;\n-                        }\n-                        parameters.put(key, value);\n-                    }\n-                }\n-            } catch (Exception e) {\n-                throw new IllegalStateException(e.getMessage(), e);\n-            }\n-        }\n-    }\n-\n-    protected static AsyncMethodInfo convertMethodConfig2AsyncInfo(MethodConfig methodConfig) {\n-        if (methodConfig == null || (methodConfig.getOninvoke() == null && methodConfig.getOnreturn() == null && methodConfig.getOnthrow() == null)) {\n-            return null;\n-        }\n-\n-        //check config conflict\n-        if (Boolean.FALSE.equals(methodConfig.isReturn()) && (methodConfig.getOnreturn() != null || methodConfig.getOnthrow() != null)) {\n-            throw new IllegalStateException(\"method config error : return attribute must be set true when onreturn or onthrow has been set.\");\n-        }\n-\n-        AsyncMethodInfo asyncMethodInfo = new AsyncMethodInfo();\n-\n-        asyncMethodInfo.setOninvokeInstance(methodConfig.getOninvoke());\n-        asyncMethodInfo.setOnreturnInstance(methodConfig.getOnreturn());\n-        asyncMethodInfo.setOnthrowInstance(methodConfig.getOnthrow());\n-\n-        try {\n-            String oninvokeMethod = methodConfig.getOninvokeMethod();\n-            if (StringUtils.isNotEmpty(oninvokeMethod)) {\n-                asyncMethodInfo.setOninvokeMethod(getMethodByName(methodConfig.getOninvoke().getClass(), oninvokeMethod));\n-            }\n-\n-            String onreturnMethod = methodConfig.getOnreturnMethod();\n-            if (StringUtils.isNotEmpty(onreturnMethod)) {\n-                asyncMethodInfo.setOnreturnMethod(getMethodByName(methodConfig.getOnreturn().getClass(), onreturnMethod));\n-            }\n-\n-            String onthrowMethod = methodConfig.getOnthrowMethod();\n-            if (StringUtils.isNotEmpty(onthrowMethod)) {\n-                asyncMethodInfo.setOnthrowMethod(getMethodByName(methodConfig.getOnthrow().getClass(), onthrowMethod));\n-            }\n-        } catch (Exception e) {\n-            throw new IllegalStateException(e.getMessage(), e);\n-        }\n-\n-        return asyncMethodInfo;\n-    }\n-\n-    private static Method getMethodByName(Class<?> clazz, String methodName) {\n-        try {\n-            return ReflectUtils.findMethodByMethodName(clazz, methodName);\n-        } catch (Exception e) {\n-            throw new IllegalStateException(e);\n-        }\n-    }\n-\n-    protected static Set<String> getSubProperties(Map<String, String> properties, String prefix) {\n-        return properties.keySet().stream().filter(k -> k.contains(prefix)).map(k -> {\n-            k = k.substring(prefix.length());\n-            return k.substring(0, k.indexOf(\".\"));\n-        }).collect(Collectors.toSet());\n-    }\n-\n-    private static String extractPropertyName(Class<?> clazz, Method setter) throws Exception {\n-        String propertyName = setter.getName().substring(\"set\".length());\n-        Method getter = null;\n-        try {\n-            getter = clazz.getMethod(\"get\" + propertyName);\n-        } catch (NoSuchMethodException e) {\n-            getter = clazz.getMethod(\"is\" + propertyName);\n-        }\n-        Parameter parameter = getter.getAnnotation(Parameter.class);\n-        if (parameter != null && StringUtils.isNotEmpty(parameter.key()) && parameter.useKeyAsProperty()) {\n-            propertyName = parameter.key();\n-        } else {\n-            propertyName = propertyName.substring(0, 1).toLowerCase() + propertyName.substring(1);\n-        }\n-        return propertyName;\n-    }\n-\n-    private static String calculatePropertyFromGetter(String name) {\n-        int i = name.startsWith(\"get\") ? 3 : 2;\n-        return StringUtils.camelToSplitName(name.substring(i, i + 1).toLowerCase() + name.substring(i + 1), \".\");\n-    }\n-\n-    private static String calculateAttributeFromGetter(String getter) {\n-        int i = getter.startsWith(\"get\") ? 3 : 2;\n-        return getter.substring(i, i + 1).toLowerCase() + getter.substring(i + 1);\n-    }\n-\n-    private static void invokeSetParameters(Class c, Object o, Map map) {\n-        try {\n-            Method method = findMethodByMethodSignature(c, \"setParameters\", new String[]{Map.class.getName()});\n-            if (method != null && isParametersSetter(method)) {\n-                method.invoke(o, map);\n-            }\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-    }\n-\n-    private static Map<String, String> invokeGetParameters(Class c, Object o) {\n-        try {\n-            Method method = findMethodByMethodSignature(c, \"getParameters\", null);\n-            if (method != null && isParametersGetter(method)) {\n-                return (Map<String, String>) method.invoke(o);\n-            }\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-        return null;\n-    }\n-\n-    private static boolean isParametersGetter(Method method) {\n-        String name = method.getName();\n-        return (\"getParameters\".equals(name)\n-                && Modifier.isPublic(method.getModifiers())\n-                && method.getParameterTypes().length == 0\n-                && method.getReturnType() == Map.class);\n-    }\n-\n-    private static boolean isParametersSetter(Method method) {\n-        return (\"setParameters\".equals(method.getName())\n-                && Modifier.isPublic(method.getModifiers())\n-                && method.getParameterCount() == 1\n-                && Map.class == method.getParameterTypes()[0]\n-                && method.getReturnType() == void.class);\n-    }\n-\n-    /**\n-     * @param parameters the raw parameters\n-     * @param prefix     the prefix\n-     * @return the parameters whose raw key will replace \"-\" to \".\"\n-     * @revised 2.7.8 \"private\" to be \"protected\"\n-     */\n-    protected static Map<String, String> convert(Map<String, String> parameters, String prefix) {\n-        if (parameters == null || parameters.isEmpty()) {\n-            return Collections.emptyMap();\n-        }\n-\n-        Map<String, String> result = new HashMap<>();\n-        String pre = (prefix != null && prefix.length() > 0 ? prefix + \".\" : \"\");\n-        for (Map.Entry<String, String> entry : parameters.entrySet()) {\n-            String key = entry.getKey();\n-            String value = entry.getValue();\n-            result.put(pre + key, value);\n-            // For compatibility, key like \"registry-type\" will has a duplicate key \"registry.type\"\n-            if (key.contains(\"-\")) {\n-                result.put(pre + key.replace('-', '.'), value);\n-            }\n-        }\n-        return result;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getId() {\n-        return id;\n-    }\n-\n-    public void setId(String id) {\n-        this.id = id;\n-    }\n-\n-    public void updateIdIfAbsent(String value) {\n-        if (StringUtils.isNotEmpty(value) && StringUtils.isEmpty(id)) {\n-            this.id = value;\n-        }\n-    }\n-\n-    protected void appendAnnotation(Class<?> annotationClass, Object annotation) {\n-        Method[] methods = annotationClass.getMethods();\n-        for (Method method : methods) {\n-            if (method.getDeclaringClass() != Object.class\n-                    && method.getReturnType() != void.class\n-                    && method.getParameterTypes().length == 0\n-                    && Modifier.isPublic(method.getModifiers())\n-                    && !Modifier.isStatic(method.getModifiers())) {\n-                try {\n-                    String property = method.getName();\n-                    if (\"interfaceClass\".equals(property) || \"interfaceName\".equals(property)) {\n-                        property = \"interface\";\n-                    }\n-                    String setter = \"set\" + property.substring(0, 1).toUpperCase() + property.substring(1);\n-                    Object value = method.invoke(annotation);\n-                    if (value != null && !value.equals(method.getDefaultValue())) {\n-                        Class<?> parameterType = ReflectUtils.getBoxedClass(method.getReturnType());\n-                        if (\"filter\".equals(property) || \"listener\".equals(property)) {\n-                            parameterType = String.class;\n-                            value = StringUtils.join((String[]) value, \",\");\n-                        } else if (\"parameters\".equals(property)) {\n-                            parameterType = Map.class;\n-                            value = CollectionUtils.toStringMap((String[]) value);\n-                        }\n-                        try {\n-                            Method setterMethod = getClass().getMethod(setter, parameterType);\n-                            setterMethod.invoke(this, value);\n-                        } catch (NoSuchMethodException e) {\n-                            // ignore\n-                        }\n-                    }\n-                } catch (Throwable e) {\n-                    logger.error(e.getMessage(), e);\n-                }\n-            }\n-        }\n-    }\n-\n-    /**\n-     * Should be called after Config was fully initialized.\n-     * // FIXME: this method should be completely replaced by appendParameters\n-     *\n-     * @return\n-     * @see AbstractConfig#appendParameters(Map, Object, String)\n-     * <p>\n-     * Notice! This method should include all properties in the returning map, treat @Parameter differently compared to appendParameters.\n-     */\n-    public Map<String, String> getMetaData() {\n-        Map<String, String> metaData = new HashMap<>();\n-        Method[] methods = this.getClass().getMethods();\n-        for (Method method : methods) {\n-            try {\n-                String name = method.getName();\n-                if (MethodUtils.isMetaMethod(method)) {\n-                    String key;\n-                    Parameter parameter = method.getAnnotation(Parameter.class);\n-                    if (parameter != null && parameter.key().length() > 0 && parameter.useKeyAsProperty()) {\n-                        key = parameter.key();\n-                    } else {\n-                        key = calculateAttributeFromGetter(name);\n-                    }\n-                    // treat url and configuration differently, the value should always present in configuration though it may not need to present in url.\n-                    //if (method.getReturnType() == Object.class || parameter != null && parameter.excluded()) {\n-                    if (method.getReturnType() == Object.class) {\n-                        metaData.put(key, null);\n-                        continue;\n-                    }\n-\n-                    /**\n-                     * Attributes annotated as deprecated should not override newly added replacement.\n-                     */\n-                    if (MethodUtils.isDeprecated(method) && metaData.get(key) != null) {\n-                        continue;\n-                    }\n-\n-                    Object value = method.invoke(this);\n-                    String str = String.valueOf(value).trim();\n-                    if (value != null && str.length() > 0) {\n-                        metaData.put(key, str);\n-                    } else {\n-                        metaData.put(key, null);\n-                    }\n-                } else if (isParametersGetter(method)) {\n-                    Map<String, String> map = (Map<String, String>) method.invoke(this, new Object[0]);\n-                    metaData.putAll(convert(map, \"\"));\n-                }\n-            } catch (Exception e) {\n-                throw new IllegalStateException(e.getMessage(), e);\n-            }\n-        }\n-        return metaData;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getPrefix() {\n-        return StringUtils.isNotEmpty(prefix) ? prefix : (CommonConstants.DUBBO + \".\" + getTagName(this.getClass()));\n-    }\n-\n-    public void setPrefix(String prefix) {\n-        this.prefix = prefix;\n-    }\n-\n-    public void refresh() {\n-        Environment env = ApplicationModel.getEnvironment();\n-        try {\n-            CompositeConfiguration compositeConfiguration = env.getPrefixedConfiguration(this);\n-            // loop methods, get override value and set the new value back to method\n-            Method[] methods = getClass().getMethods();\n-            for (Method method : methods) {\n-                if (MethodUtils.isSetter(method)) {\n-                    try {\n-                        String value = StringUtils.trim(compositeConfiguration.getString(extractPropertyName(getClass(), method)));\n-                        // isTypeMatch() is called to avoid duplicate and incorrect update, for example, we have two 'setGeneric' methods in ReferenceConfig.\n-                        if (StringUtils.isNotEmpty(value) && ClassUtils.isTypeMatch(method.getParameterTypes()[0], value)) {\n-                            method.invoke(this, ClassUtils.convertPrimitive(method.getParameterTypes()[0], value));\n-                        }\n-                    } catch (NoSuchMethodException e) {\n-                        logger.info(\"Failed to override the property \" + method.getName() + \" in \" +\n-                                this.getClass().getSimpleName() +\n-                                \", please make sure every property has getter/setter method provided.\");\n-                    }\n-                } else if (isParametersSetter(method)) {\n-                    String value = StringUtils.trim(compositeConfiguration.getString(extractPropertyName(getClass(), method)));\n-                    if (StringUtils.isNotEmpty(value)) {\n-                        Map<String, String> map = invokeGetParameters(getClass(), this);\n-                        map = map == null ? new HashMap<>() : map;\n-                        map.putAll(convert(StringUtils.parseParameters(value), \"\"));\n-                        invokeSetParameters(getClass(), this, map);\n-                    }\n-                }\n-            }\n-        } catch (Exception e) {\n-            logger.error(\"Failed to override \", e);\n-        }\n-    }\n-\n-    @Override\n-    public String toString() {\n-        try {\n-            StringBuilder buf = new StringBuilder();\n-            buf.append(\"<dubbo:\");\n-            buf.append(getTagName(getClass()));\n-            Method[] methods = getClass().getMethods();\n-            for (Method method : methods) {\n-                try {\n-                    if (MethodUtils.isGetter(method)) {\n-                        String name = method.getName();\n-                        String key = calculateAttributeFromGetter(name);\n-\n-                        try {\n-                            getClass().getDeclaredField(key);\n-                        } catch (NoSuchFieldException e) {\n-                            // ignore\n-                            continue;\n-                        }\n-\n-                        Object value = method.invoke(this);\n-                        if (value != null) {\n-                            buf.append(\" \");\n-                            buf.append(key);\n-                            buf.append(\"=\\\"\");\n-                            buf.append(value);\n-                            buf.append(\"\\\"\");\n-                        }\n-                    }\n-                } catch (Exception e) {\n-                    logger.warn(e.getMessage(), e);\n-                }\n-            }\n-            buf.append(\" />\");\n-            return buf.toString();\n-        } catch (Throwable t) {\n-            logger.warn(t.getMessage(), t);\n-            return super.toString();\n-        }\n-    }\n-\n-    /**\n-     * FIXME check @Parameter(required=true) and any conditions that need to match.\n-     */\n-    @Parameter(excluded = true)\n-    public boolean isValid() {\n-        return true;\n-    }\n-\n-\n-    @Override\n-    public boolean equals(Object obj) {\n-        if (obj == null || !(obj.getClass().getName().equals(this.getClass().getName()))) {\n-            return false;\n-        }\n-\n-        Method[] methods = this.getClass().getMethods();\n-        for (Method method1 : methods) {\n-            if (MethodUtils.isGetter(method1)) {\n-                Parameter parameter = method1.getAnnotation(Parameter.class);\n-                if (parameter != null && parameter.excluded()) {\n-                    continue;\n-                }\n-                try {\n-                    Method method2 = obj.getClass().getMethod(method1.getName(), method1.getParameterTypes());\n-                    Object value1 = method1.invoke(this, new Object[]{});\n-                    Object value2 = method2.invoke(obj, new Object[]{});\n-                    if (!Objects.equals(value1, value2)) {\n-                        return false;\n-                    }\n-                } catch (Exception e) {\n-                    return true;\n-                }\n-            }\n-        }\n-        return true;\n-    }\n-\n-    /**\n-     * Add {@link AbstractConfig instance} into {@link ConfigManager}\n-     * <p>\n-     * Current method will invoked by Spring or Java EE container automatically, or should be triggered manually.\n-     *\n-     * @see ConfigManager#addConfig(AbstractConfig)\n-     * @since 2.7.5\n-     */\n-    @PostConstruct\n-    public void addIntoConfigManager() {\n-        ApplicationModel.getConfigManager().addConfig(this);\n-    }\n-\n-    @Override\n-    public int hashCode() {\n-        int hashCode = 1;\n-\n-        Method[] methods = this.getClass().getMethods();\n-        for (Method method : methods) {\n-            if (MethodUtils.isGetter(method)) {\n-                Parameter parameter = method.getAnnotation(Parameter.class);\n-                if (parameter != null && parameter.excluded()) {\n-                    continue;\n-                }\n-                try {\n-                    Object value = method.invoke(this, new Object[]{});\n-                    hashCode = 31 * hashCode + value.hashCode();\n-                } catch (Exception ignored) {\n-                    //ignored\n-                }\n-            }\n-        }\n-\n-        if (hashCode == 0) {\n-            hashCode = 1;\n-        }\n-\n-        return hashCode;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.CompositeConfiguration;\r\n+import org.apache.dubbo.common.config.Environment;\r\n+import org.apache.dubbo.common.constants.CommonConstants;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ClassUtils;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.MethodUtils;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.context.ConfigManager;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.AsyncMethodInfo;\r\n+\r\n+import javax.annotation.PostConstruct;\r\n+import java.io.Serializable;\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Modifier;\r\n+import java.util.Collections;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.Objects;\r\n+import java.util.Set;\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+import java.util.stream.Collectors;\r\n+\r\n+import static org.apache.dubbo.common.utils.ReflectUtils.findMethodByMethodSignature;\r\n+\r\n+/**\r\n+ * Utility methods and public methods for parsing configuration\r\n+ *\r\n+ * @export\r\n+ */\r\n+public abstract class AbstractConfig implements Serializable {\r\n+\r\n+    protected static final Logger logger = LoggerFactory.getLogger(AbstractConfig.class);\r\n+    private static final long serialVersionUID = 4267533505537413570L;\r\n+\r\n+    /**\r\n+     * The legacy properties container\r\n+     */\r\n+    private static final Map<String, String> LEGACY_PROPERTIES = new HashMap<String, String>();\r\n+\r\n+    /**\r\n+     * The suffix container\r\n+     */\r\n+    private static final String[] SUFFIXES = new String[]{\"Config\", \"Bean\", \"ConfigBase\"};\r\n+\r\n+    static {\r\n+        LEGACY_PROPERTIES.put(\"dubbo.protocol.name\", \"dubbo.service.protocol\");\r\n+        LEGACY_PROPERTIES.put(\"dubbo.protocol.host\", \"dubbo.service.server.host\");\r\n+        LEGACY_PROPERTIES.put(\"dubbo.protocol.port\", \"dubbo.service.server.port\");\r\n+        LEGACY_PROPERTIES.put(\"dubbo.protocol.threads\", \"dubbo.service.max.thread.pool.size\");\r\n+        LEGACY_PROPERTIES.put(\"dubbo.consumer.timeout\", \"dubbo.service.invoke.timeout\");\r\n+        LEGACY_PROPERTIES.put(\"dubbo.consumer.retries\", \"dubbo.service.max.retry.providers\");\r\n+        LEGACY_PROPERTIES.put(\"dubbo.consumer.check\", \"dubbo.service.allow.no.provider\");\r\n+        LEGACY_PROPERTIES.put(\"dubbo.service.url\", \"dubbo.service.address\");\r\n+    }\r\n+\r\n+    /**\r\n+     * The config id\r\n+     */\r\n+    protected String id;\r\n+    protected String prefix;\r\n+\r\n+    protected final AtomicBoolean refreshed = new AtomicBoolean(false);\r\n+\r\n+    private static String convertLegacyValue(String key, String value) {\r\n+        if (value != null && value.length() > 0) {\r\n+            if (\"dubbo.service.max.retry.providers\".equals(key)) {\r\n+                return String.valueOf(Integer.parseInt(value) - 1);\r\n+            } else if (\"dubbo.service.allow.no.provider\".equals(key)) {\r\n+                return String.valueOf(!Boolean.parseBoolean(value));\r\n+            }\r\n+        }\r\n+        return value;\r\n+    }\r\n+\r\n+    public static String getTagName(Class<?> cls) {\r\n+        String tag = cls.getSimpleName();\r\n+        for (String suffix : SUFFIXES) {\r\n+            if (tag.endsWith(suffix)) {\r\n+                tag = tag.substring(0, tag.length() - suffix.length());\r\n+                break;\r\n+            }\r\n+        }\r\n+        return StringUtils.camelToSplitName(tag, \"-\");\r\n+    }\r\n+\r\n+    public static void appendParameters(Map<String, String> parameters, Object config) {\r\n+        appendParameters(parameters, config, null);\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public static void appendParameters(Map<String, String> parameters, Object config, String prefix) {\r\n+        if (config == null) {\r\n+            return;\r\n+        }\r\n+        Method[] methods = config.getClass().getMethods();\r\n+        for (Method method : methods) {\r\n+            try {\r\n+                String name = method.getName();\r\n+                if (MethodUtils.isGetter(method)) {\r\n+                    Parameter parameter = method.getAnnotation(Parameter.class);\r\n+                    if (method.getReturnType() == Object.class || parameter != null && parameter.excluded()) {\r\n+                        continue;\r\n+                    }\r\n+                    String key;\r\n+                    if (parameter != null && parameter.key().length() > 0) {\r\n+                        key = parameter.key();\r\n+                    } else {\r\n+                        key = calculatePropertyFromGetter(name);\r\n+                    }\r\n+                    Object value = method.invoke(config);\r\n+                    String str = String.valueOf(value).trim();\r\n+                    if (value != null && str.length() > 0) {\r\n+                        if (parameter != null && parameter.escaped()) {\r\n+                            str = URL.encode(str);\r\n+                        }\r\n+                        if (parameter != null && parameter.append()) {\r\n+                            String pre = parameters.get(key);\r\n+                            if (pre != null && pre.length() > 0) {\r\n+                                str = pre + \",\" + str;\r\n+                            }\r\n+                        }\r\n+                        if (prefix != null && prefix.length() > 0) {\r\n+                            key = prefix + \".\" + key;\r\n+                        }\r\n+                        parameters.put(key, str);\r\n+                    } else if (parameter != null && parameter.required()) {\r\n+                        throw new IllegalStateException(config.getClass().getSimpleName() + \".\" + key + \" == null\");\r\n+                    }\r\n+                } else if (isParametersGetter(method)) {\r\n+                    Map<String, String> map = (Map<String, String>) method.invoke(config, new Object[0]);\r\n+                    parameters.putAll(convert(map, prefix));\r\n+                }\r\n+            } catch (Exception e) {\r\n+                throw new IllegalStateException(e.getMessage(), e);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    protected static void appendAttributes(Map<String, Object> parameters, Object config) {\r\n+        appendAttributes(parameters, config, null);\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    protected static void appendAttributes(Map<String, Object> parameters, Object config, String prefix) {\r\n+        if (config == null) {\r\n+            return;\r\n+        }\r\n+        Method[] methods = config.getClass().getMethods();\r\n+        for (Method method : methods) {\r\n+            try {\r\n+                Parameter parameter = method.getAnnotation(Parameter.class);\r\n+                if (parameter == null || !parameter.attribute()) {\r\n+                    continue;\r\n+                }\r\n+                String name = method.getName();\r\n+                if (MethodUtils.isGetter(method)) {\r\n+                    String key;\r\n+                    if (parameter.key().length() > 0) {\r\n+                        key = parameter.key();\r\n+                    } else {\r\n+                        key = calculateAttributeFromGetter(name);\r\n+                    }\r\n+                    Object value = method.invoke(config);\r\n+                    if (value != null) {\r\n+                        if (prefix != null && prefix.length() > 0) {\r\n+                            key = prefix + \".\" + key;\r\n+                        }\r\n+                        parameters.put(key, value);\r\n+                    }\r\n+                }\r\n+            } catch (Exception e) {\r\n+                throw new IllegalStateException(e.getMessage(), e);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    protected static AsyncMethodInfo convertMethodConfig2AsyncInfo(MethodConfig methodConfig) {\r\n+        if (methodConfig == null || (methodConfig.getOninvoke() == null && methodConfig.getOnreturn() == null && methodConfig.getOnthrow() == null)) {\r\n+            return null;\r\n+        }\r\n+\r\n+        //check config conflict\r\n+        if (Boolean.FALSE.equals(methodConfig.isReturn()) && (methodConfig.getOnreturn() != null || methodConfig.getOnthrow() != null)) {\r\n+            throw new IllegalStateException(\"method config error : return attribute must be set true when onreturn or onthrow has been set.\");\r\n+        }\r\n+\r\n+        AsyncMethodInfo asyncMethodInfo = new AsyncMethodInfo();\r\n+\r\n+        asyncMethodInfo.setOninvokeInstance(methodConfig.getOninvoke());\r\n+        asyncMethodInfo.setOnreturnInstance(methodConfig.getOnreturn());\r\n+        asyncMethodInfo.setOnthrowInstance(methodConfig.getOnthrow());\r\n+\r\n+        try {\r\n+            String oninvokeMethod = methodConfig.getOninvokeMethod();\r\n+            if (StringUtils.isNotEmpty(oninvokeMethod)) {\r\n+                asyncMethodInfo.setOninvokeMethod(getMethodByName(methodConfig.getOninvoke().getClass(), oninvokeMethod));\r\n+            }\r\n+\r\n+            String onreturnMethod = methodConfig.getOnreturnMethod();\r\n+            if (StringUtils.isNotEmpty(onreturnMethod)) {\r\n+                asyncMethodInfo.setOnreturnMethod(getMethodByName(methodConfig.getOnreturn().getClass(), onreturnMethod));\r\n+            }\r\n+\r\n+            String onthrowMethod = methodConfig.getOnthrowMethod();\r\n+            if (StringUtils.isNotEmpty(onthrowMethod)) {\r\n+                asyncMethodInfo.setOnthrowMethod(getMethodByName(methodConfig.getOnthrow().getClass(), onthrowMethod));\r\n+            }\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(e.getMessage(), e);\r\n+        }\r\n+\r\n+        return asyncMethodInfo;\r\n+    }\r\n+\r\n+    private static Method getMethodByName(Class<?> clazz, String methodName) {\r\n+        try {\r\n+            return ReflectUtils.findMethodByMethodName(clazz, methodName);\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(e);\r\n+        }\r\n+    }\r\n+\r\n+    protected static Set<String> getSubProperties(Map<String, String> properties, String prefix) {\r\n+        return properties.keySet().stream().filter(k -> k.contains(prefix)).map(k -> {\r\n+            k = k.substring(prefix.length());\r\n+            return k.substring(0, k.indexOf(\".\"));\r\n+        }).collect(Collectors.toSet());\r\n+    }\r\n+\r\n+    private static String extractPropertyName(Class<?> clazz, Method setter) throws Exception {\r\n+        String propertyName = setter.getName().substring(\"set\".length());\r\n+        Method getter = null;\r\n+        try {\r\n+            getter = clazz.getMethod(\"get\" + propertyName);\r\n+        } catch (NoSuchMethodException e) {\r\n+            getter = clazz.getMethod(\"is\" + propertyName);\r\n+        }\r\n+        Parameter parameter = getter.getAnnotation(Parameter.class);\r\n+        if (parameter != null && StringUtils.isNotEmpty(parameter.key()) && parameter.useKeyAsProperty()) {\r\n+            propertyName = parameter.key();\r\n+        } else {\r\n+            propertyName = propertyName.substring(0, 1).toLowerCase() + propertyName.substring(1);\r\n+        }\r\n+        return propertyName;\r\n+    }\r\n+\r\n+    private static String calculatePropertyFromGetter(String name) {\r\n+        int i = name.startsWith(\"get\") ? 3 : 2;\r\n+        return StringUtils.camelToSplitName(name.substring(i, i + 1).toLowerCase() + name.substring(i + 1), \".\");\r\n+    }\r\n+\r\n+    private static String calculateAttributeFromGetter(String getter) {\r\n+        int i = getter.startsWith(\"get\") ? 3 : 2;\r\n+        return getter.substring(i, i + 1).toLowerCase() + getter.substring(i + 1);\r\n+    }\r\n+\r\n+    private static void invokeSetParameters(Class c, Object o, Map map) {\r\n+        try {\r\n+            Method method = findMethodByMethodSignature(c, \"setParameters\", new String[]{Map.class.getName()});\r\n+            if (method != null && isParametersSetter(method)) {\r\n+                method.invoke(o, map);\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+    }\r\n+\r\n+    private static Map<String, String> invokeGetParameters(Class c, Object o) {\r\n+        try {\r\n+            Method method = findMethodByMethodSignature(c, \"getParameters\", null);\r\n+            if (method != null && isParametersGetter(method)) {\r\n+                return (Map<String, String>) method.invoke(o);\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    private static boolean isParametersGetter(Method method) {\r\n+        String name = method.getName();\r\n+        return (\"getParameters\".equals(name)\r\n+                && Modifier.isPublic(method.getModifiers())\r\n+                && method.getParameterTypes().length == 0\r\n+                && method.getReturnType() == Map.class);\r\n+    }\r\n+\r\n+    private static boolean isParametersSetter(Method method) {\r\n+        return (\"setParameters\".equals(method.getName())\r\n+                && Modifier.isPublic(method.getModifiers())\r\n+                && method.getParameterCount() == 1\r\n+                && Map.class == method.getParameterTypes()[0]\r\n+                && method.getReturnType() == void.class);\r\n+    }\r\n+\r\n+    /**\r\n+     * @param parameters the raw parameters\r\n+     * @param prefix     the prefix\r\n+     * @return the parameters whose raw key will replace \"-\" to \".\"\r\n+     * @revised 2.7.8 \"private\" to be \"protected\"\r\n+     */\r\n+    protected static Map<String, String> convert(Map<String, String> parameters, String prefix) {\r\n+        if (parameters == null || parameters.isEmpty()) {\r\n+            return Collections.emptyMap();\r\n+        }\r\n+\r\n+        Map<String, String> result = new HashMap<>();\r\n+        String pre = (prefix != null && prefix.length() > 0 ? prefix + \".\" : \"\");\r\n+        for (Map.Entry<String, String> entry : parameters.entrySet()) {\r\n+            String key = entry.getKey();\r\n+            String value = entry.getValue();\r\n+            result.put(pre + key, value);\r\n+            // For compatibility, key like \"registry-type\" will has a duplicate key \"registry.type\"\r\n+            if (key.contains(\"-\")) {\r\n+                result.put(pre + key.replace('-', '.'), value);\r\n+            }\r\n+        }\r\n+        return result;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getId() {\r\n+        return id;\r\n+    }\r\n+\r\n+    public void setId(String id) {\r\n+        this.id = id;\r\n+    }\r\n+\r\n+    public void updateIdIfAbsent(String value) {\r\n+        if (StringUtils.isNotEmpty(value) && StringUtils.isEmpty(id)) {\r\n+            this.id = value;\r\n+        }\r\n+    }\r\n+\r\n+    protected void appendAnnotation(Class<?> annotationClass, Object annotation) {\r\n+        Method[] methods = annotationClass.getMethods();\r\n+        for (Method method : methods) {\r\n+            if (method.getDeclaringClass() != Object.class\r\n+                    && method.getReturnType() != void.class\r\n+                    && method.getParameterTypes().length == 0\r\n+                    && Modifier.isPublic(method.getModifiers())\r\n+                    && !Modifier.isStatic(method.getModifiers())) {\r\n+                try {\r\n+                    String property = method.getName();\r\n+                    if (\"interfaceClass\".equals(property) || \"interfaceName\".equals(property)) {\r\n+                        property = \"interface\";\r\n+                    }\r\n+                    String setter = \"set\" + property.substring(0, 1).toUpperCase() + property.substring(1);\r\n+                    Object value = method.invoke(annotation);\r\n+                    if (value != null && !value.equals(method.getDefaultValue())) {\r\n+                        Class<?> parameterType = ReflectUtils.getBoxedClass(method.getReturnType());\r\n+                        if (\"filter\".equals(property) || \"listener\".equals(property)) {\r\n+                            parameterType = String.class;\r\n+                            value = StringUtils.join((String[]) value, \",\");\r\n+                        } else if (\"parameters\".equals(property)) {\r\n+                            parameterType = Map.class;\r\n+                            value = CollectionUtils.toStringMap((String[]) value);\r\n+                        }\r\n+                        try {\r\n+                            Method setterMethod = getClass().getMethod(setter, parameterType);\r\n+                            setterMethod.invoke(this, value);\r\n+                        } catch (NoSuchMethodException e) {\r\n+                            // ignore\r\n+                        }\r\n+                    }\r\n+                } catch (Throwable e) {\r\n+                    logger.error(e.getMessage(), e);\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Should be called after Config was fully initialized.\r\n+     * // FIXME: this method should be completely replaced by appendParameters\r\n+     *\r\n+     * @return\r\n+     * @see AbstractConfig#appendParameters(Map, Object, String)\r\n+     * <p>\r\n+     * Notice! This method should include all properties in the returning map, treat @Parameter differently compared to appendParameters.\r\n+     */\r\n+    public Map<String, String> getMetaData() {\r\n+        Map<String, String> metaData = new HashMap<>();\r\n+        Method[] methods = this.getClass().getMethods();\r\n+        for (Method method : methods) {\r\n+            try {\r\n+                String name = method.getName();\r\n+                if (MethodUtils.isMetaMethod(method)) {\r\n+                    String key;\r\n+                    Parameter parameter = method.getAnnotation(Parameter.class);\r\n+                    if (parameter != null && parameter.key().length() > 0 && parameter.useKeyAsProperty()) {\r\n+                        key = parameter.key();\r\n+                    } else {\r\n+                        key = calculateAttributeFromGetter(name);\r\n+                    }\r\n+                    // treat url and configuration differently, the value should always present in configuration though it may not need to present in url.\r\n+                    //if (method.getReturnType() == Object.class || parameter != null && parameter.excluded()) {\r\n+                    if (method.getReturnType() == Object.class) {\r\n+                        metaData.put(key, null);\r\n+                        continue;\r\n+                    }\r\n+\r\n+                    /**\r\n+                     * Attributes annotated as deprecated should not override newly added replacement.\r\n+                     */\r\n+                    if (MethodUtils.isDeprecated(method) && metaData.get(key) != null) {\r\n+                        continue;\r\n+                    }\r\n+\r\n+                    Object value = method.invoke(this);\r\n+                    String str = String.valueOf(value).trim();\r\n+                    if (value != null && str.length() > 0) {\r\n+                        metaData.put(key, str);\r\n+                    } else {\r\n+                        metaData.put(key, null);\r\n+                    }\r\n+                } else if (isParametersGetter(method)) {\r\n+                    Map<String, String> map = (Map<String, String>) method.invoke(this, new Object[0]);\r\n+                    metaData.putAll(convert(map, \"\"));\r\n+                }\r\n+            } catch (Exception e) {\r\n+                throw new IllegalStateException(e.getMessage(), e);\r\n+            }\r\n+        }\r\n+        return metaData;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getPrefix() {\r\n+        return StringUtils.isNotEmpty(prefix) ? prefix : (CommonConstants.DUBBO + \".\" + getTagName(this.getClass()));\r\n+    }\r\n+\r\n+    public void setPrefix(String prefix) {\r\n+        this.prefix = prefix;\r\n+    }\r\n+\r\n+    public void refresh() {\r\n+        Environment env = ApplicationModel.getEnvironment();\r\n+        try {\r\n+            CompositeConfiguration compositeConfiguration = env.getPrefixedConfiguration(this);\r\n+            // loop methods, get override value and set the new value back to method\r\n+            Method[] methods = getClass().getMethods();\r\n+            for (Method method : methods) {\r\n+                if (MethodUtils.isSetter(method)) {\r\n+                    try {\r\n+                        String value = StringUtils.trim(compositeConfiguration.getString(extractPropertyName(getClass(), method)));\r\n+                        // isTypeMatch() is called to avoid duplicate and incorrect update, for example, we have two 'setGeneric' methods in ReferenceConfig.\r\n+                        if (StringUtils.isNotEmpty(value) && ClassUtils.isTypeMatch(method.getParameterTypes()[0], value)) {\r\n+                            method.invoke(this, ClassUtils.convertPrimitive(method.getParameterTypes()[0], value));\r\n+                        }\r\n+                    } catch (NoSuchMethodException e) {\r\n+                        logger.info(\"Failed to override the property \" + method.getName() + \" in \" +\r\n+                                this.getClass().getSimpleName() +\r\n+                                \", please make sure every property has getter/setter method provided.\");\r\n+                    }\r\n+                } else if (isParametersSetter(method)) {\r\n+                    String value = StringUtils.trim(compositeConfiguration.getString(extractPropertyName(getClass(), method)));\r\n+                    if (StringUtils.isNotEmpty(value)) {\r\n+                        Map<String, String> map = invokeGetParameters(getClass(), this);\r\n+                        map = map == null ? new HashMap<>() : map;\r\n+                        map.putAll(convert(StringUtils.parseParameters(value), \"\"));\r\n+                        invokeSetParameters(getClass(), this, map);\r\n+                    }\r\n+                }\r\n+            }\r\n+        } catch (Exception e) {\r\n+            logger.error(\"Failed to override \", e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        try {\r\n+            StringBuilder buf = new StringBuilder();\r\n+            buf.append(\"<dubbo:\");\r\n+            buf.append(getTagName(getClass()));\r\n+            Method[] methods = getClass().getMethods();\r\n+            for (Method method : methods) {\r\n+                try {\r\n+                    if (MethodUtils.isGetter(method)) {\r\n+                        String name = method.getName();\r\n+                        String key = calculateAttributeFromGetter(name);\r\n+\r\n+                        try {\r\n+                            getClass().getDeclaredField(key);\r\n+                        } catch (NoSuchFieldException e) {\r\n+                            // ignore\r\n+                            continue;\r\n+                        }\r\n+\r\n+                        Object value = method.invoke(this);\r\n+                        if (value != null) {\r\n+                            buf.append(\" \");\r\n+                            buf.append(key);\r\n+                            buf.append(\"=\\\"\");\r\n+                            buf.append(value);\r\n+                            buf.append(\"\\\"\");\r\n+                        }\r\n+                    }\r\n+                } catch (Exception e) {\r\n+                    logger.warn(e.getMessage(), e);\r\n+                }\r\n+            }\r\n+            buf.append(\" />\");\r\n+            return buf.toString();\r\n+        } catch (Throwable t) {\r\n+            logger.warn(t.getMessage(), t);\r\n+            return super.toString();\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * FIXME check @Parameter(required=true) and any conditions that need to match.\r\n+     */\r\n+    @Parameter(excluded = true)\r\n+    public boolean isValid() {\r\n+        return true;\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public boolean equals(Object obj) {\r\n+        if (obj == null || !(obj.getClass().getName().equals(this.getClass().getName()))) {\r\n+            return false;\r\n+        }\r\n+\r\n+        Method[] methods = this.getClass().getMethods();\r\n+        for (Method method1 : methods) {\r\n+            if (MethodUtils.isGetter(method1)) {\r\n+                Parameter parameter = method1.getAnnotation(Parameter.class);\r\n+                if (parameter != null && parameter.excluded()) {\r\n+                    continue;\r\n+                }\r\n+                try {\r\n+                    Method method2 = obj.getClass().getMethod(method1.getName(), method1.getParameterTypes());\r\n+                    Object value1 = method1.invoke(this, new Object[]{});\r\n+                    Object value2 = method2.invoke(obj, new Object[]{});\r\n+                    if (!Objects.equals(value1, value2)) {\r\n+                        return false;\r\n+                    }\r\n+                } catch (Exception e) {\r\n+                    return true;\r\n+                }\r\n+            }\r\n+        }\r\n+        return true;\r\n+    }\r\n+\r\n+    /**\r\n+     * Add {@link AbstractConfig instance} into {@link ConfigManager}\r\n+     * <p>\r\n+     * Current method will invoked by Spring or Java EE container automatically, or should be triggered manually.\r\n+     *\r\n+     * @see ConfigManager#addConfig(AbstractConfig)\r\n+     * @since 2.7.5\r\n+     */\r\n+    @PostConstruct\r\n+    public void addIntoConfigManager() {\r\n+        ApplicationModel.getConfigManager().addConfig(this);\r\n+    }\r\n+\r\n+    @Override\r\n+    public int hashCode() {\r\n+        int hashCode = 1;\r\n+\r\n+        Method[] methods = this.getClass().getMethods();\r\n+        for (Method method : methods) {\r\n+            if (MethodUtils.isGetter(method)) {\r\n+                Parameter parameter = method.getAnnotation(Parameter.class);\r\n+                if (parameter != null && parameter.excluded()) {\r\n+                    continue;\r\n+                }\r\n+                try {\r\n+                    Object value = method.invoke(this, new Object[]{});\r\n+                    hashCode = 31 * hashCode + value.hashCode();\r\n+                } catch (Exception ignored) {\r\n+                    //ignored\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        if (hashCode == 0) {\r\n+            hashCode = 1;\r\n+        }\r\n+\r\n+        return hashCode;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/AbstractInterfaceConfig.java", "source2": "org/apache/dubbo/config/AbstractInterfaceConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,758 +1,758 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.Version;\n-import org.apache.dubbo.common.utils.Assert;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.ConfigUtils;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.context.ConfigManager;\n-import org.apache.dubbo.config.support.Parameter;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.ServiceMetadata;\n-\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.Collection;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Optional;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.INVOKER_LISTENER_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PID_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.REFERENCE_FILTER_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.RELEASE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TAG_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMESTAMP_KEY;\n-\n-/**\n- * AbstractDefaultConfig\n- *\n- * @export\n- */\n-public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {\n-\n-    private static final long serialVersionUID = -1559314110797223229L;\n-\n-    /**\n-     * The interface name of the exported service\n-     */\n-    protected String interfaceName;\n-    /**\n-     * The remote service version the customer/provider side will reference\n-     */\n-    protected String version;\n-\n-    /**\n-     * The remote service group the customer/provider side will reference\n-     */\n-    protected String group;\n-    \n-    protected ServiceMetadata serviceMetadata;\n-    /**\n-     * Local impl class name for the service interface\n-     */\n-    protected String local;\n-\n-    /**\n-     * Local stub class name for the service interface\n-     */\n-    protected String stub;\n-\n-    /**\n-     * Service monitor\n-     */\n-    protected MonitorConfig monitor;\n-\n-    /**\n-     * Strategies for generating dynamic agents\uff0cthere are two strategies can be choosed: jdk and javassist\n-     */\n-    protected String proxy;\n-\n-    /**\n-     * Cluster type\n-     */\n-    protected String cluster;\n-\n-    /**\n-     * The {@code Filter} when the provider side exposed a service or the customer side references a remote service used,\n-     * if there are more than one, you can use commas to separate them\n-     */\n-    protected String filter;\n-\n-    /**\n-     * The Listener when the provider side exposes a service or the customer side references a remote service used\n-     * if there are more than one, you can use commas to separate them\n-     */\n-    protected String listener;\n-\n-    /**\n-     * The owner of the service providers\n-     */\n-    protected String owner;\n-\n-    /**\n-     * Connection limits, 0 means shared connection, otherwise it defines the connections delegated to the current service\n-     */\n-    protected Integer connections;\n-\n-    /**\n-     * The layer of service providers\n-     */\n-    protected String layer;\n-\n-    /**\n-     * The application info\n-     */\n-    protected ApplicationConfig application;\n-\n-    /**\n-     * The module info\n-     */\n-    protected ModuleConfig module;\n-\n-    /**\n-     * The registry list the service will register to\n-     * Also see {@link #registryIds}, only one of them will work.\n-     */\n-    protected List<RegistryConfig> registries;\n-\n-    /**\n-     * The method configuration\n-     */\n-    private List<MethodConfig> methods;\n-\n-    /**\n-     * The id list of registries the service will register to\n-     * Also see {@link #registries}, only one of them will work.\n-     */\n-    protected String registryIds;\n-\n-    // connection events\n-    protected String onconnect;\n-\n-    /**\n-     * Disconnection events\n-     */\n-    protected String ondisconnect;\n-\n-    /**\n-     * The metrics configuration\n-     */\n-    protected MetricsConfig metrics;\n-    protected MetadataReportConfig metadataReportConfig;\n-\n-    protected ConfigCenterConfig configCenter;\n-\n-    // callback limits\n-    private Integer callbacks;\n-    // the scope for referring/exporting a service, if it's local, it means searching in current JVM only.\n-    private String scope;\n-\n-    protected String tag;\n-\n-    private  Boolean auth;\n-\n-\n-    /**\n-     * The url of the reference service\n-     */\n-    protected final List<URL> urls = new ArrayList<URL>();\n-\n-    public List<URL> getExportedUrls() {\n-        return urls;\n-    }\n-\n-    public URL toUrl() {\n-        return urls.isEmpty() ? null : urls.iterator().next();\n-    }\n-\n-    public List<URL> toUrls() {\n-        return urls;\n-    }\n-\n-    /**\n-     * Check whether the registry config is exists, and then conversion it to {@link RegistryConfig}\n-     */\n-    public void checkRegistry() {\n-        convertRegistryIdsToRegistries();\n-\n-        for (RegistryConfig registryConfig : registries) {\n-            if (!registryConfig.isValid()) {\n-                throw new IllegalStateException(\"No registry config found or it's not a valid config! \" +\n-                        \"The registry config is: \" + registryConfig);\n-            }\n-        }\n-    }\n-\n-    public static void appendRuntimeParameters(Map<String, String> map) {\n-        map.put(DUBBO_VERSION_KEY, Version.getProtocolVersion());\n-        map.put(RELEASE_KEY, Version.getVersion());\n-        map.put(TIMESTAMP_KEY, String.valueOf(System.currentTimeMillis()));\n-        if (ConfigUtils.getPid() > 0) {\n-            map.put(PID_KEY, String.valueOf(ConfigUtils.getPid()));\n-        }\n-    }\n-\n-    /**\n-     * Check whether the remote service interface and the methods meet with Dubbo's requirements.it mainly check, if the\n-     * methods configured in the configuration file are included in the interface of remote service\n-     *\n-     * @param interfaceClass the interface of remote service\n-     * @param methods        the methods configured\n-     */\n-    public void checkInterfaceAndMethods(Class<?> interfaceClass, List<MethodConfig> methods) {\n-        // interface cannot be null\n-        Assert.notNull(interfaceClass, new IllegalStateException(\"interface not allow null!\"));\n-\n-        // to verify interfaceClass is an interface\n-        if (!interfaceClass.isInterface()) {\n-            throw new IllegalStateException(\"The interface class \" + interfaceClass + \" is not a interface!\");\n-        }\n-        // check if methods exist in the remote service interface\n-        if (CollectionUtils.isNotEmpty(methods)) {\n-            for (MethodConfig methodBean : methods) {\n-                methodBean.setService(interfaceClass.getName());\n-                methodBean.setServiceId(this.getId());\n-                methodBean.refresh();\n-                String methodName = methodBean.getName();\n-                if (StringUtils.isEmpty(methodName)) {\n-                    throw new IllegalStateException(\"<dubbo:method> name attribute is required! Please check: \" +\n-                            \"<dubbo:service interface=\\\"\" + interfaceClass.getName() + \"\\\" ... >\" +\n-                            \"<dubbo:method name=\\\"\\\" ... /></<dubbo:reference>\");\n-                }\n-\n-                boolean hasMethod = Arrays.stream(interfaceClass.getMethods()).anyMatch(method -> method.getName().equals(methodName));\n-                if (!hasMethod) {\n-                    throw new IllegalStateException(\"The interface \" + interfaceClass.getName()\n-                            + \" not found method \" + methodName);\n-                }\n-            }\n-        }\n-    }\n-\n-\n-\n-    /**\n-     * Legitimacy check of stub, note that: the local will deprecated, and replace with <code>stub</code>\n-     *\n-     * @param interfaceClass for provider side, it is the {@link Class} of the service that will be exported; for consumer\n-     *                       side, it is the {@link Class} of the remote service interface\n-     */\n-    public void checkStubAndLocal(Class<?> interfaceClass) {\n-        verifyStubAndLocal(local, \"Local\", interfaceClass);\n-        verifyStubAndLocal(stub, \"Stub\", interfaceClass);\n-    }\n-    \n-    public void verifyStubAndLocal(String className, String label, Class<?> interfaceClass){\n-    \tif (ConfigUtils.isNotEmpty(className)) {\n-            Class<?> localClass = ConfigUtils.isDefault(className) ?\n-                    ReflectUtils.forName(interfaceClass.getName() + label) : ReflectUtils.forName(className);\n-                        verify(interfaceClass, localClass);\n-            }\n-    }\n-\n-    private void verify(Class<?> interfaceClass, Class<?> localClass) {\n-        if (!interfaceClass.isAssignableFrom(localClass)) {\n-            throw new IllegalStateException(\"The local implementation class \" + localClass.getName() +\n-                    \" not implement interface \" + interfaceClass.getName());\n-        }\n-\n-        try {\n-            //Check if the localClass a constructor with parameter who's type is interfaceClass\n-            ReflectUtils.findConstructor(localClass, interfaceClass);\n-        } catch (NoSuchMethodException e) {\n-            throw new IllegalStateException(\"No such constructor \\\"public \" + localClass.getSimpleName() +\n-                    \"(\" + interfaceClass.getName() + \")\\\" in local implementation class \" + localClass.getName());\n-        }\n-    }\n-\n-    private void convertRegistryIdsToRegistries() {\n-        computeValidRegistryIds();\n-        if (StringUtils.isEmpty(registryIds)) {\n-            if (CollectionUtils.isEmpty(registries)) {\n-                List<RegistryConfig> registryConfigs = ApplicationModel.getConfigManager().getDefaultRegistries();\n-                if (registryConfigs.isEmpty()) {\n-                    registryConfigs = new ArrayList<>();\n-                    RegistryConfig registryConfig = new RegistryConfig();\n-                    registryConfig.refresh();\n-                    registryConfigs.add(registryConfig);\n-                } else {\n-                    registryConfigs = new ArrayList<>(registryConfigs);\n-                }\n-                setRegistries(registryConfigs);\n-            }\n-        } else {\n-            String[] ids = COMMA_SPLIT_PATTERN.split(registryIds);\n-            List<RegistryConfig> tmpRegistries = new ArrayList<>();\n-            Arrays.stream(ids).forEach(id -> {\n-                if (tmpRegistries.stream().noneMatch(reg -> reg.getId().equals(id))) {\n-                    Optional<RegistryConfig> globalRegistry = ApplicationModel.getConfigManager().getRegistry(id);\n-                    if (globalRegistry.isPresent()) {\n-                        tmpRegistries.add(globalRegistry.get());\n-                    } else {\n-                        RegistryConfig registryConfig = new RegistryConfig();\n-                        registryConfig.setId(id);\n-                        registryConfig.refresh();\n-                        tmpRegistries.add(registryConfig);\n-                    }\n-                }\n-            });\n-\n-            if (tmpRegistries.size() > ids.length) {\n-                throw new IllegalStateException(\"Too much registries found, the registries assigned to this service \" +\n-                        \"are :\" + registryIds + \", but got \" + tmpRegistries.size() + \" registries!\");\n-            }\n-\n-            setRegistries(tmpRegistries);\n-        }\n-\n-    }\n-\n-    protected boolean notHasSelfRegistryProperty() {\n-        return CollectionUtils.isEmpty(registries) && StringUtils.isEmpty(registryIds);\n-    }\n-\n-    public void completeCompoundConfigs(AbstractInterfaceConfig interfaceConfig) {\n-        if (interfaceConfig != null) {\n-            if (application == null) {\n-                setApplication(interfaceConfig.getApplication());\n-            }\n-            if (module == null) {\n-                setModule(interfaceConfig.getModule());\n-            }\n-            if (notHasSelfRegistryProperty()) {\n-                setRegistries(interfaceConfig.getRegistries());\n-                setRegistryIds(interfaceConfig.getRegistryIds());\n-            }\n-            if (monitor == null) {\n-                setMonitor(interfaceConfig.getMonitor());\n-            }\n-        }\n-        if (module != null) {\n-            if (notHasSelfRegistryProperty()) {\n-                setRegistries(module.getRegistries());\n-            }\n-            if (monitor == null) {\n-                setMonitor(module.getMonitor());\n-            }\n-        }\n-        if (application != null) {\n-            if (notHasSelfRegistryProperty()) {\n-                setRegistries(application.getRegistries());\n-                setRegistryIds(application.getRegistryIds());\n-            }\n-            if (monitor == null) {\n-                setMonitor(application.getMonitor());\n-            }\n-        }\n-    }\n-    \n-    protected void computeValidRegistryIds() {\n-        if (application != null && notHasSelfRegistryProperty()) {\n-            setRegistries(application.getRegistries());\n-            setRegistryIds(application.getRegistryIds());\n-        }\n-    }\n-\n-    /**\n-     * @return local\n-     * @deprecated Replace to <code>getStub()</code>\n-     */\n-    @Deprecated\n-    public String getLocal() {\n-        return local;\n-    }\n-\n-    /**\n-     * @param local\n-     * @deprecated Replace to <code>setStub(Boolean)</code>\n-     */\n-    @Deprecated\n-    public void setLocal(Boolean local) {\n-        if (local == null) {\n-            setLocal((String) null);\n-        } else {\n-            setLocal(local.toString());\n-        }\n-    }\n-\n-    /**\n-     * @param local\n-     * @deprecated Replace to <code>setStub(String)</code>\n-     */\n-    @Deprecated\n-    public void setLocal(String local) {\n-        this.local = local;\n-    }\n-\n-    public String getStub() {\n-        return stub;\n-    }\n-\n-    public void setStub(Boolean stub) {\n-        if (stub == null) {\n-            setStub((String) null);\n-        } else {\n-            setStub(stub.toString());\n-        }\n-    }\n-\n-    public void setStub(String stub) {\n-        this.stub = stub;\n-    }\n-\n-    public String getCluster() {\n-        return cluster;\n-    }\n-\n-    public void setCluster(String cluster) {\n-        this.cluster = cluster;\n-    }\n-\n-    public String getProxy() {\n-        return proxy;\n-    }\n-\n-    public void setProxy(String proxy) {\n-\n-        this.proxy = proxy;\n-    }\n-\n-    public Integer getConnections() {\n-        return connections;\n-    }\n-\n-    public void setConnections(Integer connections) {\n-        this.connections = connections;\n-    }\n-\n-    @Parameter(key = REFERENCE_FILTER_KEY, append = true)\n-    public String getFilter() {\n-        return filter;\n-    }\n-\n-    public void setFilter(String filter) {\n-        this.filter = filter;\n-    }\n-\n-    @Parameter(key = INVOKER_LISTENER_KEY, append = true)\n-    public String getListener() {\n-        return listener;\n-    }\n-\n-    public void setListener(String listener) {\n-        this.listener = listener;\n-    }\n-\n-    public String getLayer() {\n-        return layer;\n-    }\n-\n-    public void setLayer(String layer) {\n-        this.layer = layer;\n-    }\n-\n-    /**\n-     * Always use the global ApplicationConfig\n-     */\n-    public ApplicationConfig getApplication() {\n-        ApplicationConfig globalApplication = ApplicationModel.getConfigManager().getApplicationOrElseThrow();\n-        if (globalApplication == null) {\n-            return application;\n-        }\n-        if (application != null && !StringUtils.isEquals(application.getName(), globalApplication.getName())) {\n-            return application;\n-        }\n-        return globalApplication;\n-    }\n-\n-    @Deprecated\n-    public void setApplication(ApplicationConfig application) {\n-        this.application = application;\n-        if (application != null) {\n-            ConfigManager configManager = ApplicationModel.getConfigManager();\n-            configManager.getApplication().orElseGet(() -> {\n-                configManager.setApplication(application);\n-                return application;\n-            });\n-        }\n-    }\n-\n-    public ModuleConfig getModule() {\n-        if (module != null) {\n-            return module;\n-        }\n-        return ApplicationModel.getConfigManager().getModule().orElse(null);\n-    }\n-\n-    @Deprecated\n-    public void setModule(ModuleConfig module) {\n-        this.module = module;\n-        if (module != null) {\n-            ConfigManager configManager = ApplicationModel.getConfigManager();\n-            configManager.getModule().orElseGet(() -> {\n-                configManager.setModule(module);\n-                return module;\n-            });\n-        }\n-    }\n-\n-    public RegistryConfig getRegistry() {\n-        return CollectionUtils.isEmpty(registries) ? null : registries.get(0);\n-    }\n-\n-    public void setRegistry(RegistryConfig registry) {\n-        List<RegistryConfig> registries = new ArrayList<RegistryConfig>(1);\n-        registries.add(registry);\n-        setRegistries(registries);\n-    }\n-\n-    public List<RegistryConfig> getRegistries() {\n-        return registries;\n-    }\n-\n-    @SuppressWarnings({\"unchecked\"})\n-    public void setRegistries(List<? extends RegistryConfig> registries) {\n-        this.registries = (List<RegistryConfig>) registries;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getRegistryIds() {\n-        return registryIds;\n-    }\n-\n-    public void setRegistryIds(String registryIds) {\n-        this.registryIds = registryIds;\n-    }\n-\n-\n-    public List<MethodConfig> getMethods() {\n-        return methods;\n-    }\n-\n-    // ======== Deprecated ========\n-\n-    @SuppressWarnings(\"unchecked\")\n-    public void setMethods(List<? extends MethodConfig> methods) {\n-        this.methods = (List<MethodConfig>) methods;\n-    }\n-\n-\n-    public MonitorConfig getMonitor() {\n-        if (monitor != null) {\n-            return monitor;\n-        }\n-        // FIXME: instead of return null, we should set default monitor when getMonitor() return null in ConfigManager\n-        return ApplicationModel.getConfigManager().getMonitor().orElse(null);\n-    }\n-\n-    @Deprecated\n-    public void setMonitor(String monitor) {\n-        setMonitor(new MonitorConfig(monitor));\n-    }\n-\n-    @Deprecated\n-    public void setMonitor(MonitorConfig monitor) {\n-        this.monitor = monitor;\n-        if (monitor != null) {\n-            ConfigManager configManager = ApplicationModel.getConfigManager();\n-            configManager.getMonitor().orElseGet(() -> {\n-                configManager.setMonitor(monitor);\n-                return monitor;\n-            });\n-        }\n-    }\n-\n-    public String getOwner() {\n-        return owner;\n-    }\n-\n-    public void setOwner(String owner) {\n-        this.owner = owner;\n-    }\n-\n-    @Deprecated\n-    public ConfigCenterConfig getConfigCenter() {\n-        if (configCenter != null) {\n-            return configCenter;\n-        }\n-        Collection<ConfigCenterConfig> configCenterConfigs = ApplicationModel.getConfigManager().getConfigCenters();\n-        if (CollectionUtils.isNotEmpty(configCenterConfigs)) {\n-            return configCenterConfigs.iterator().next();\n-        }\n-        return null;\n-    }\n-\n-    @Deprecated\n-    public void setConfigCenter(ConfigCenterConfig configCenter) {\n-        this.configCenter = configCenter;\n-        if (configCenter != null) {\n-            ConfigManager configManager = ApplicationModel.getConfigManager();\n-            Collection<ConfigCenterConfig> configs = configManager.getConfigCenters();\n-            if (CollectionUtils.isEmpty(configs)\n-                    || configs.stream().noneMatch(existed -> existed.equals(configCenter))) {\n-                configManager.addConfigCenter(configCenter);\n-            }\n-        }\n-    }\n-\n-    public Integer getCallbacks() {\n-        return callbacks;\n-    }\n-\n-    public void setCallbacks(Integer callbacks) {\n-        this.callbacks = callbacks;\n-    }\n-\n-    public String getOnconnect() {\n-        return onconnect;\n-    }\n-\n-    public void setOnconnect(String onconnect) {\n-        this.onconnect = onconnect;\n-    }\n-\n-    public String getOndisconnect() {\n-        return ondisconnect;\n-    }\n-\n-    public void setOndisconnect(String ondisconnect) {\n-        this.ondisconnect = ondisconnect;\n-    }\n-\n-    public String getScope() {\n-        return scope;\n-    }\n-\n-    public void setScope(String scope) {\n-        this.scope = scope;\n-    }\n-\n-    @Deprecated\n-    public MetadataReportConfig getMetadataReportConfig() {\n-        if (metadataReportConfig != null) {\n-            return metadataReportConfig;\n-        }\n-        Collection<MetadataReportConfig> metadataReportConfigs = ApplicationModel.getConfigManager().getMetadataConfigs();\n-        if (CollectionUtils.isNotEmpty(metadataReportConfigs)) {\n-            return metadataReportConfigs.iterator().next();\n-        }\n-        return null;\n-    }\n-\n-    @Deprecated\n-    public void setMetadataReportConfig(MetadataReportConfig metadataReportConfig) {\n-        this.metadataReportConfig = metadataReportConfig;\n-        if (metadataReportConfig != null) {\n-            ConfigManager configManager = ApplicationModel.getConfigManager();\n-            Collection<MetadataReportConfig> configs = configManager.getMetadataConfigs();\n-            if (CollectionUtils.isEmpty(configs)\n-                    || configs.stream().noneMatch(existed -> existed.equals(metadataReportConfig))) {\n-                configManager.addMetadataReport(metadataReportConfig);\n-            }\n-        }\n-    }\n-\n-    @Deprecated\n-    public MetricsConfig getMetrics() {\n-        if (metrics != null) {\n-            return metrics;\n-        }\n-        return ApplicationModel.getConfigManager().getMetrics().orElse(null);\n-    }\n-\n-    @Deprecated\n-    public void setMetrics(MetricsConfig metrics) {\n-        this.metrics = metrics;\n-        if (metrics != null) {\n-            ConfigManager configManager = ApplicationModel.getConfigManager();\n-            configManager.getMetrics().orElseGet(() -> {\n-                configManager.setMetrics(metrics);\n-                return metrics;\n-            });\n-        }\n-    }\n-\n-    @Parameter(key = TAG_KEY, useKeyAsProperty = false)\n-    public String getTag() {\n-        return tag;\n-    }\n-\n-    public void setTag(String tag) {\n-        this.tag = tag;\n-    }\n-\n-    public Boolean getAuth() {\n-        return auth;\n-    }\n-\n-    public void setAuth(Boolean auth) {\n-        this.auth = auth;\n-    }\n-\n-    public SslConfig getSslConfig() {\n-        return ApplicationModel.getConfigManager().getSsl().orElse(null);\n-    }\n-    \n-    public void initServiceMetadata(AbstractInterfaceConfig interfaceConfig) {\n-        serviceMetadata.setVersion(getVersion(interfaceConfig));\n-        serviceMetadata.setGroup(getGroup(interfaceConfig));\n-        serviceMetadata.setDefaultGroup(getGroup(interfaceConfig));\n-        serviceMetadata.setServiceInterfaceName(getInterface());\n-    }\n-    \n-    public String getGroup(AbstractInterfaceConfig interfaceConfig) {\n-        return StringUtils.isEmpty(this.group) ? (interfaceConfig != null ? interfaceConfig.getGroup() : this.group) : this.group;\n-    }\n-\n-    public String getVersion(AbstractInterfaceConfig interfaceConfig) {\n-        return StringUtils.isEmpty(this.version) ? (interfaceConfig != null ? interfaceConfig.getVersion() : this.version) : this.version;\n-    }\n-    \n-    public String getVersion() {\n-        return version;\n-    }\n-\n-    public void setVersion(String version) {\n-        this.version = version;\n-    }\n-\n-    public String getGroup() {\n-        return group;\n-    }\n-\n-    public void setGroup(String group) {\n-        this.group = group;\n-    }\n-    \n-    public String getInterface() {\n-        return interfaceName;\n-    }\n-    \n-    public void setInterface(String interfaceName) {\n-        this.interfaceName = interfaceName;\n-//         if (StringUtils.isEmpty(id)) {\n-//             id = interfaceName;\n-//         }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.Version;\r\n+import org.apache.dubbo.common.utils.Assert;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.ConfigUtils;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.context.ConfigManager;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.ServiceMetadata;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.Collection;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Optional;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INVOKER_LISTENER_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PID_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REFERENCE_FILTER_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.RELEASE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TAG_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMESTAMP_KEY;\r\n+\r\n+/**\r\n+ * AbstractDefaultConfig\r\n+ *\r\n+ * @export\r\n+ */\r\n+public abstract class AbstractInterfaceConfig extends AbstractMethodConfig {\r\n+\r\n+    private static final long serialVersionUID = -1559314110797223229L;\r\n+\r\n+    /**\r\n+     * The interface name of the exported service\r\n+     */\r\n+    protected String interfaceName;\r\n+    /**\r\n+     * The remote service version the customer/provider side will reference\r\n+     */\r\n+    protected String version;\r\n+\r\n+    /**\r\n+     * The remote service group the customer/provider side will reference\r\n+     */\r\n+    protected String group;\r\n+    \r\n+    protected ServiceMetadata serviceMetadata;\r\n+    /**\r\n+     * Local impl class name for the service interface\r\n+     */\r\n+    protected String local;\r\n+\r\n+    /**\r\n+     * Local stub class name for the service interface\r\n+     */\r\n+    protected String stub;\r\n+\r\n+    /**\r\n+     * Service monitor\r\n+     */\r\n+    protected MonitorConfig monitor;\r\n+\r\n+    /**\r\n+     * Strategies for generating dynamic agents\uff0cthere are two strategies can be choosed: jdk and javassist\r\n+     */\r\n+    protected String proxy;\r\n+\r\n+    /**\r\n+     * Cluster type\r\n+     */\r\n+    protected String cluster;\r\n+\r\n+    /**\r\n+     * The {@code Filter} when the provider side exposed a service or the customer side references a remote service used,\r\n+     * if there are more than one, you can use commas to separate them\r\n+     */\r\n+    protected String filter;\r\n+\r\n+    /**\r\n+     * The Listener when the provider side exposes a service or the customer side references a remote service used\r\n+     * if there are more than one, you can use commas to separate them\r\n+     */\r\n+    protected String listener;\r\n+\r\n+    /**\r\n+     * The owner of the service providers\r\n+     */\r\n+    protected String owner;\r\n+\r\n+    /**\r\n+     * Connection limits, 0 means shared connection, otherwise it defines the connections delegated to the current service\r\n+     */\r\n+    protected Integer connections;\r\n+\r\n+    /**\r\n+     * The layer of service providers\r\n+     */\r\n+    protected String layer;\r\n+\r\n+    /**\r\n+     * The application info\r\n+     */\r\n+    protected ApplicationConfig application;\r\n+\r\n+    /**\r\n+     * The module info\r\n+     */\r\n+    protected ModuleConfig module;\r\n+\r\n+    /**\r\n+     * The registry list the service will register to\r\n+     * Also see {@link #registryIds}, only one of them will work.\r\n+     */\r\n+    protected List<RegistryConfig> registries;\r\n+\r\n+    /**\r\n+     * The method configuration\r\n+     */\r\n+    private List<MethodConfig> methods;\r\n+\r\n+    /**\r\n+     * The id list of registries the service will register to\r\n+     * Also see {@link #registries}, only one of them will work.\r\n+     */\r\n+    protected String registryIds;\r\n+\r\n+    // connection events\r\n+    protected String onconnect;\r\n+\r\n+    /**\r\n+     * Disconnection events\r\n+     */\r\n+    protected String ondisconnect;\r\n+\r\n+    /**\r\n+     * The metrics configuration\r\n+     */\r\n+    protected MetricsConfig metrics;\r\n+    protected MetadataReportConfig metadataReportConfig;\r\n+\r\n+    protected ConfigCenterConfig configCenter;\r\n+\r\n+    // callback limits\r\n+    private Integer callbacks;\r\n+    // the scope for referring/exporting a service, if it's local, it means searching in current JVM only.\r\n+    private String scope;\r\n+\r\n+    protected String tag;\r\n+\r\n+    private  Boolean auth;\r\n+\r\n+\r\n+    /**\r\n+     * The url of the reference service\r\n+     */\r\n+    protected final List<URL> urls = new ArrayList<URL>();\r\n+\r\n+    public List<URL> getExportedUrls() {\r\n+        return urls;\r\n+    }\r\n+\r\n+    public URL toUrl() {\r\n+        return urls.isEmpty() ? null : urls.iterator().next();\r\n+    }\r\n+\r\n+    public List<URL> toUrls() {\r\n+        return urls;\r\n+    }\r\n+\r\n+    /**\r\n+     * Check whether the registry config is exists, and then conversion it to {@link RegistryConfig}\r\n+     */\r\n+    public void checkRegistry() {\r\n+        convertRegistryIdsToRegistries();\r\n+\r\n+        for (RegistryConfig registryConfig : registries) {\r\n+            if (!registryConfig.isValid()) {\r\n+                throw new IllegalStateException(\"No registry config found or it's not a valid config! \" +\r\n+                        \"The registry config is: \" + registryConfig);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public static void appendRuntimeParameters(Map<String, String> map) {\r\n+        map.put(DUBBO_VERSION_KEY, Version.getProtocolVersion());\r\n+        map.put(RELEASE_KEY, Version.getVersion());\r\n+        map.put(TIMESTAMP_KEY, String.valueOf(System.currentTimeMillis()));\r\n+        if (ConfigUtils.getPid() > 0) {\r\n+            map.put(PID_KEY, String.valueOf(ConfigUtils.getPid()));\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Check whether the remote service interface and the methods meet with Dubbo's requirements.it mainly check, if the\r\n+     * methods configured in the configuration file are included in the interface of remote service\r\n+     *\r\n+     * @param interfaceClass the interface of remote service\r\n+     * @param methods        the methods configured\r\n+     */\r\n+    public void checkInterfaceAndMethods(Class<?> interfaceClass, List<MethodConfig> methods) {\r\n+        // interface cannot be null\r\n+        Assert.notNull(interfaceClass, new IllegalStateException(\"interface not allow null!\"));\r\n+\r\n+        // to verify interfaceClass is an interface\r\n+        if (!interfaceClass.isInterface()) {\r\n+            throw new IllegalStateException(\"The interface class \" + interfaceClass + \" is not a interface!\");\r\n+        }\r\n+        // check if methods exist in the remote service interface\r\n+        if (CollectionUtils.isNotEmpty(methods)) {\r\n+            for (MethodConfig methodBean : methods) {\r\n+                methodBean.setService(interfaceClass.getName());\r\n+                methodBean.setServiceId(this.getId());\r\n+                methodBean.refresh();\r\n+                String methodName = methodBean.getName();\r\n+                if (StringUtils.isEmpty(methodName)) {\r\n+                    throw new IllegalStateException(\"<dubbo:method> name attribute is required! Please check: \" +\r\n+                            \"<dubbo:service interface=\\\"\" + interfaceClass.getName() + \"\\\" ... >\" +\r\n+                            \"<dubbo:method name=\\\"\\\" ... /></<dubbo:reference>\");\r\n+                }\r\n+\r\n+                boolean hasMethod = Arrays.stream(interfaceClass.getMethods()).anyMatch(method -> method.getName().equals(methodName));\r\n+                if (!hasMethod) {\r\n+                    throw new IllegalStateException(\"The interface \" + interfaceClass.getName()\r\n+                            + \" not found method \" + methodName);\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+\r\n+\r\n+    /**\r\n+     * Legitimacy check of stub, note that: the local will deprecated, and replace with <code>stub</code>\r\n+     *\r\n+     * @param interfaceClass for provider side, it is the {@link Class} of the service that will be exported; for consumer\r\n+     *                       side, it is the {@link Class} of the remote service interface\r\n+     */\r\n+    public void checkStubAndLocal(Class<?> interfaceClass) {\r\n+        verifyStubAndLocal(local, \"Local\", interfaceClass);\r\n+        verifyStubAndLocal(stub, \"Stub\", interfaceClass);\r\n+    }\r\n+    \r\n+    public void verifyStubAndLocal(String className, String label, Class<?> interfaceClass){\r\n+    \tif (ConfigUtils.isNotEmpty(className)) {\r\n+            Class<?> localClass = ConfigUtils.isDefault(className) ?\r\n+                    ReflectUtils.forName(interfaceClass.getName() + label) : ReflectUtils.forName(className);\r\n+                        verify(interfaceClass, localClass);\r\n+            }\r\n+    }\r\n+\r\n+    private void verify(Class<?> interfaceClass, Class<?> localClass) {\r\n+        if (!interfaceClass.isAssignableFrom(localClass)) {\r\n+            throw new IllegalStateException(\"The local implementation class \" + localClass.getName() +\r\n+                    \" not implement interface \" + interfaceClass.getName());\r\n+        }\r\n+\r\n+        try {\r\n+            //Check if the localClass a constructor with parameter who's type is interfaceClass\r\n+            ReflectUtils.findConstructor(localClass, interfaceClass);\r\n+        } catch (NoSuchMethodException e) {\r\n+            throw new IllegalStateException(\"No such constructor \\\"public \" + localClass.getSimpleName() +\r\n+                    \"(\" + interfaceClass.getName() + \")\\\" in local implementation class \" + localClass.getName());\r\n+        }\r\n+    }\r\n+\r\n+    private void convertRegistryIdsToRegistries() {\r\n+        computeValidRegistryIds();\r\n+        if (StringUtils.isEmpty(registryIds)) {\r\n+            if (CollectionUtils.isEmpty(registries)) {\r\n+                List<RegistryConfig> registryConfigs = ApplicationModel.getConfigManager().getDefaultRegistries();\r\n+                if (registryConfigs.isEmpty()) {\r\n+                    registryConfigs = new ArrayList<>();\r\n+                    RegistryConfig registryConfig = new RegistryConfig();\r\n+                    registryConfig.refresh();\r\n+                    registryConfigs.add(registryConfig);\r\n+                } else {\r\n+                    registryConfigs = new ArrayList<>(registryConfigs);\r\n+                }\r\n+                setRegistries(registryConfigs);\r\n+            }\r\n+        } else {\r\n+            String[] ids = COMMA_SPLIT_PATTERN.split(registryIds);\r\n+            List<RegistryConfig> tmpRegistries = new ArrayList<>();\r\n+            Arrays.stream(ids).forEach(id -> {\r\n+                if (tmpRegistries.stream().noneMatch(reg -> reg.getId().equals(id))) {\r\n+                    Optional<RegistryConfig> globalRegistry = ApplicationModel.getConfigManager().getRegistry(id);\r\n+                    if (globalRegistry.isPresent()) {\r\n+                        tmpRegistries.add(globalRegistry.get());\r\n+                    } else {\r\n+                        RegistryConfig registryConfig = new RegistryConfig();\r\n+                        registryConfig.setId(id);\r\n+                        registryConfig.refresh();\r\n+                        tmpRegistries.add(registryConfig);\r\n+                    }\r\n+                }\r\n+            });\r\n+\r\n+            if (tmpRegistries.size() > ids.length) {\r\n+                throw new IllegalStateException(\"Too much registries found, the registries assigned to this service \" +\r\n+                        \"are :\" + registryIds + \", but got \" + tmpRegistries.size() + \" registries!\");\r\n+            }\r\n+\r\n+            setRegistries(tmpRegistries);\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    protected boolean notHasSelfRegistryProperty() {\r\n+        return CollectionUtils.isEmpty(registries) && StringUtils.isEmpty(registryIds);\r\n+    }\r\n+\r\n+    public void completeCompoundConfigs(AbstractInterfaceConfig interfaceConfig) {\r\n+        if (interfaceConfig != null) {\r\n+            if (application == null) {\r\n+                setApplication(interfaceConfig.getApplication());\r\n+            }\r\n+            if (module == null) {\r\n+                setModule(interfaceConfig.getModule());\r\n+            }\r\n+            if (notHasSelfRegistryProperty()) {\r\n+                setRegistries(interfaceConfig.getRegistries());\r\n+                setRegistryIds(interfaceConfig.getRegistryIds());\r\n+            }\r\n+            if (monitor == null) {\r\n+                setMonitor(interfaceConfig.getMonitor());\r\n+            }\r\n+        }\r\n+        if (module != null) {\r\n+            if (notHasSelfRegistryProperty()) {\r\n+                setRegistries(module.getRegistries());\r\n+            }\r\n+            if (monitor == null) {\r\n+                setMonitor(module.getMonitor());\r\n+            }\r\n+        }\r\n+        if (application != null) {\r\n+            if (notHasSelfRegistryProperty()) {\r\n+                setRegistries(application.getRegistries());\r\n+                setRegistryIds(application.getRegistryIds());\r\n+            }\r\n+            if (monitor == null) {\r\n+                setMonitor(application.getMonitor());\r\n+            }\r\n+        }\r\n+    }\r\n+    \r\n+    protected void computeValidRegistryIds() {\r\n+        if (application != null && notHasSelfRegistryProperty()) {\r\n+            setRegistries(application.getRegistries());\r\n+            setRegistryIds(application.getRegistryIds());\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * @return local\r\n+     * @deprecated Replace to <code>getStub()</code>\r\n+     */\r\n+    @Deprecated\r\n+    public String getLocal() {\r\n+        return local;\r\n+    }\r\n+\r\n+    /**\r\n+     * @param local\r\n+     * @deprecated Replace to <code>setStub(Boolean)</code>\r\n+     */\r\n+    @Deprecated\r\n+    public void setLocal(Boolean local) {\r\n+        if (local == null) {\r\n+            setLocal((String) null);\r\n+        } else {\r\n+            setLocal(local.toString());\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * @param local\r\n+     * @deprecated Replace to <code>setStub(String)</code>\r\n+     */\r\n+    @Deprecated\r\n+    public void setLocal(String local) {\r\n+        this.local = local;\r\n+    }\r\n+\r\n+    public String getStub() {\r\n+        return stub;\r\n+    }\r\n+\r\n+    public void setStub(Boolean stub) {\r\n+        if (stub == null) {\r\n+            setStub((String) null);\r\n+        } else {\r\n+            setStub(stub.toString());\r\n+        }\r\n+    }\r\n+\r\n+    public void setStub(String stub) {\r\n+        this.stub = stub;\r\n+    }\r\n+\r\n+    public String getCluster() {\r\n+        return cluster;\r\n+    }\r\n+\r\n+    public void setCluster(String cluster) {\r\n+        this.cluster = cluster;\r\n+    }\r\n+\r\n+    public String getProxy() {\r\n+        return proxy;\r\n+    }\r\n+\r\n+    public void setProxy(String proxy) {\r\n+\r\n+        this.proxy = proxy;\r\n+    }\r\n+\r\n+    public Integer getConnections() {\r\n+        return connections;\r\n+    }\r\n+\r\n+    public void setConnections(Integer connections) {\r\n+        this.connections = connections;\r\n+    }\r\n+\r\n+    @Parameter(key = REFERENCE_FILTER_KEY, append = true)\r\n+    public String getFilter() {\r\n+        return filter;\r\n+    }\r\n+\r\n+    public void setFilter(String filter) {\r\n+        this.filter = filter;\r\n+    }\r\n+\r\n+    @Parameter(key = INVOKER_LISTENER_KEY, append = true)\r\n+    public String getListener() {\r\n+        return listener;\r\n+    }\r\n+\r\n+    public void setListener(String listener) {\r\n+        this.listener = listener;\r\n+    }\r\n+\r\n+    public String getLayer() {\r\n+        return layer;\r\n+    }\r\n+\r\n+    public void setLayer(String layer) {\r\n+        this.layer = layer;\r\n+    }\r\n+\r\n+    /**\r\n+     * Always use the global ApplicationConfig\r\n+     */\r\n+    public ApplicationConfig getApplication() {\r\n+        ApplicationConfig globalApplication = ApplicationModel.getConfigManager().getApplicationOrElseThrow();\r\n+        if (globalApplication == null) {\r\n+            return application;\r\n+        }\r\n+        if (application != null && !StringUtils.isEquals(application.getName(), globalApplication.getName())) {\r\n+            return application;\r\n+        }\r\n+        return globalApplication;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void setApplication(ApplicationConfig application) {\r\n+        this.application = application;\r\n+        if (application != null) {\r\n+            ConfigManager configManager = ApplicationModel.getConfigManager();\r\n+            configManager.getApplication().orElseGet(() -> {\r\n+                configManager.setApplication(application);\r\n+                return application;\r\n+            });\r\n+        }\r\n+    }\r\n+\r\n+    public ModuleConfig getModule() {\r\n+        if (module != null) {\r\n+            return module;\r\n+        }\r\n+        return ApplicationModel.getConfigManager().getModule().orElse(null);\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void setModule(ModuleConfig module) {\r\n+        this.module = module;\r\n+        if (module != null) {\r\n+            ConfigManager configManager = ApplicationModel.getConfigManager();\r\n+            configManager.getModule().orElseGet(() -> {\r\n+                configManager.setModule(module);\r\n+                return module;\r\n+            });\r\n+        }\r\n+    }\r\n+\r\n+    public RegistryConfig getRegistry() {\r\n+        return CollectionUtils.isEmpty(registries) ? null : registries.get(0);\r\n+    }\r\n+\r\n+    public void setRegistry(RegistryConfig registry) {\r\n+        List<RegistryConfig> registries = new ArrayList<RegistryConfig>(1);\r\n+        registries.add(registry);\r\n+        setRegistries(registries);\r\n+    }\r\n+\r\n+    public List<RegistryConfig> getRegistries() {\r\n+        return registries;\r\n+    }\r\n+\r\n+    @SuppressWarnings({\"unchecked\"})\r\n+    public void setRegistries(List<? extends RegistryConfig> registries) {\r\n+        this.registries = (List<RegistryConfig>) registries;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getRegistryIds() {\r\n+        return registryIds;\r\n+    }\r\n+\r\n+    public void setRegistryIds(String registryIds) {\r\n+        this.registryIds = registryIds;\r\n+    }\r\n+\r\n+\r\n+    public List<MethodConfig> getMethods() {\r\n+        return methods;\r\n+    }\r\n+\r\n+    // ======== Deprecated ========\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public void setMethods(List<? extends MethodConfig> methods) {\r\n+        this.methods = (List<MethodConfig>) methods;\r\n+    }\r\n+\r\n+\r\n+    public MonitorConfig getMonitor() {\r\n+        if (monitor != null) {\r\n+            return monitor;\r\n+        }\r\n+        // FIXME: instead of return null, we should set default monitor when getMonitor() return null in ConfigManager\r\n+        return ApplicationModel.getConfigManager().getMonitor().orElse(null);\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void setMonitor(String monitor) {\r\n+        setMonitor(new MonitorConfig(monitor));\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void setMonitor(MonitorConfig monitor) {\r\n+        this.monitor = monitor;\r\n+        if (monitor != null) {\r\n+            ConfigManager configManager = ApplicationModel.getConfigManager();\r\n+            configManager.getMonitor().orElseGet(() -> {\r\n+                configManager.setMonitor(monitor);\r\n+                return monitor;\r\n+            });\r\n+        }\r\n+    }\r\n+\r\n+    public String getOwner() {\r\n+        return owner;\r\n+    }\r\n+\r\n+    public void setOwner(String owner) {\r\n+        this.owner = owner;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public ConfigCenterConfig getConfigCenter() {\r\n+        if (configCenter != null) {\r\n+            return configCenter;\r\n+        }\r\n+        Collection<ConfigCenterConfig> configCenterConfigs = ApplicationModel.getConfigManager().getConfigCenters();\r\n+        if (CollectionUtils.isNotEmpty(configCenterConfigs)) {\r\n+            return configCenterConfigs.iterator().next();\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void setConfigCenter(ConfigCenterConfig configCenter) {\r\n+        this.configCenter = configCenter;\r\n+        if (configCenter != null) {\r\n+            ConfigManager configManager = ApplicationModel.getConfigManager();\r\n+            Collection<ConfigCenterConfig> configs = configManager.getConfigCenters();\r\n+            if (CollectionUtils.isEmpty(configs)\r\n+                    || configs.stream().noneMatch(existed -> existed.equals(configCenter))) {\r\n+                configManager.addConfigCenter(configCenter);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public Integer getCallbacks() {\r\n+        return callbacks;\r\n+    }\r\n+\r\n+    public void setCallbacks(Integer callbacks) {\r\n+        this.callbacks = callbacks;\r\n+    }\r\n+\r\n+    public String getOnconnect() {\r\n+        return onconnect;\r\n+    }\r\n+\r\n+    public void setOnconnect(String onconnect) {\r\n+        this.onconnect = onconnect;\r\n+    }\r\n+\r\n+    public String getOndisconnect() {\r\n+        return ondisconnect;\r\n+    }\r\n+\r\n+    public void setOndisconnect(String ondisconnect) {\r\n+        this.ondisconnect = ondisconnect;\r\n+    }\r\n+\r\n+    public String getScope() {\r\n+        return scope;\r\n+    }\r\n+\r\n+    public void setScope(String scope) {\r\n+        this.scope = scope;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public MetadataReportConfig getMetadataReportConfig() {\r\n+        if (metadataReportConfig != null) {\r\n+            return metadataReportConfig;\r\n+        }\r\n+        Collection<MetadataReportConfig> metadataReportConfigs = ApplicationModel.getConfigManager().getMetadataConfigs();\r\n+        if (CollectionUtils.isNotEmpty(metadataReportConfigs)) {\r\n+            return metadataReportConfigs.iterator().next();\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void setMetadataReportConfig(MetadataReportConfig metadataReportConfig) {\r\n+        this.metadataReportConfig = metadataReportConfig;\r\n+        if (metadataReportConfig != null) {\r\n+            ConfigManager configManager = ApplicationModel.getConfigManager();\r\n+            Collection<MetadataReportConfig> configs = configManager.getMetadataConfigs();\r\n+            if (CollectionUtils.isEmpty(configs)\r\n+                    || configs.stream().noneMatch(existed -> existed.equals(metadataReportConfig))) {\r\n+                configManager.addMetadataReport(metadataReportConfig);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public MetricsConfig getMetrics() {\r\n+        if (metrics != null) {\r\n+            return metrics;\r\n+        }\r\n+        return ApplicationModel.getConfigManager().getMetrics().orElse(null);\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void setMetrics(MetricsConfig metrics) {\r\n+        this.metrics = metrics;\r\n+        if (metrics != null) {\r\n+            ConfigManager configManager = ApplicationModel.getConfigManager();\r\n+            configManager.getMetrics().orElseGet(() -> {\r\n+                configManager.setMetrics(metrics);\r\n+                return metrics;\r\n+            });\r\n+        }\r\n+    }\r\n+\r\n+    @Parameter(key = TAG_KEY, useKeyAsProperty = false)\r\n+    public String getTag() {\r\n+        return tag;\r\n+    }\r\n+\r\n+    public void setTag(String tag) {\r\n+        this.tag = tag;\r\n+    }\r\n+\r\n+    public Boolean getAuth() {\r\n+        return auth;\r\n+    }\r\n+\r\n+    public void setAuth(Boolean auth) {\r\n+        this.auth = auth;\r\n+    }\r\n+\r\n+    public SslConfig getSslConfig() {\r\n+        return ApplicationModel.getConfigManager().getSsl().orElse(null);\r\n+    }\r\n+    \r\n+    public void initServiceMetadata(AbstractInterfaceConfig interfaceConfig) {\r\n+        serviceMetadata.setVersion(getVersion(interfaceConfig));\r\n+        serviceMetadata.setGroup(getGroup(interfaceConfig));\r\n+        serviceMetadata.setDefaultGroup(getGroup(interfaceConfig));\r\n+        serviceMetadata.setServiceInterfaceName(getInterface());\r\n+    }\r\n+    \r\n+    public String getGroup(AbstractInterfaceConfig interfaceConfig) {\r\n+        return StringUtils.isEmpty(this.group) ? (interfaceConfig != null ? interfaceConfig.getGroup() : this.group) : this.group;\r\n+    }\r\n+\r\n+    public String getVersion(AbstractInterfaceConfig interfaceConfig) {\r\n+        return StringUtils.isEmpty(this.version) ? (interfaceConfig != null ? interfaceConfig.getVersion() : this.version) : this.version;\r\n+    }\r\n+    \r\n+    public String getVersion() {\r\n+        return version;\r\n+    }\r\n+\r\n+    public void setVersion(String version) {\r\n+        this.version = version;\r\n+    }\r\n+\r\n+    public String getGroup() {\r\n+        return group;\r\n+    }\r\n+\r\n+    public void setGroup(String group) {\r\n+        this.group = group;\r\n+    }\r\n+    \r\n+    public String getInterface() {\r\n+        return interfaceName;\r\n+    }\r\n+    \r\n+    public void setInterface(String interfaceName) {\r\n+        this.interfaceName = interfaceName;\r\n+//         if (StringUtils.isEmpty(id)) {\r\n+//             id = interfaceName;\r\n+//         }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/AbstractMethodConfig.java", "source2": "org/apache/dubbo/config/AbstractMethodConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,208 +1,208 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.config.support.Parameter;\n-\n-import java.util.Map;\n-\n-/**\n- * AbstractMethodConfig\n- *\n- * @export\n- */\n-public abstract class AbstractMethodConfig extends AbstractConfig {\n-\n-    private static final long serialVersionUID = 1L;\n-\n-    /**\n-     * The timeout for remote invocation in milliseconds\n-     */\n-    protected Integer timeout;\n-\n-    /**\n-     * The retry times\n-     */\n-    protected Integer retries;\n-\n-    /**\n-     * max concurrent invocations\n-     */\n-    protected Integer actives;\n-\n-    /**\n-     * The load balance\n-     */\n-    protected String loadbalance;\n-\n-    /**\n-     * Whether to async\n-     * note that: it is an unreliable asynchronism that ignores return values and does not block threads.\n-     */\n-    protected Boolean async;\n-\n-    /**\n-     * Whether to ack async-sent\n-     */\n-    protected Boolean sent;\n-\n-    /**\n-     * The name of mock class which gets called when a service fails to execute\n-     * <p>\n-     * note that: the mock doesn't support on the provider side\uff0cand the mock is executed when a non-business exception\n-     * occurs after a remote service call\n-     */\n-    protected String mock;\n-\n-    /**\n-     * Merger\n-     */\n-    protected String merger;\n-\n-    /**\n-     * Cache the return result with the call parameter as key, the following options are available: lru, threadlocal,\n-     * jcache, etc.\n-     */\n-    protected String cache;\n-\n-    /**\n-     * Whether JSR303 standard annotation validation is enabled or not, if enabled, annotations on method parameters will\n-     * be validated\n-     */\n-    protected String validation;\n-\n-    /**\n-     * The customized parameters\n-     */\n-    protected Map<String, String> parameters;\n-\n-    /**\n-     * Forks for forking cluster\n-     */\n-    protected Integer forks;\n-\n-    public Integer getForks() {\n-        return forks;\n-    }\n-\n-    public void setForks(Integer forks) {\n-        this.forks = forks;\n-    }\n-\n-    public Integer getTimeout() {\n-        return timeout;\n-    }\n-\n-    public void setTimeout(Integer timeout) {\n-        this.timeout = timeout;\n-    }\n-\n-    public Integer getRetries() {\n-        return retries;\n-    }\n-\n-    public void setRetries(Integer retries) {\n-        this.retries = retries;\n-    }\n-\n-    public String getLoadbalance() {\n-        return loadbalance;\n-    }\n-\n-    public void setLoadbalance(String loadbalance) {\n-        this.loadbalance = loadbalance;\n-    }\n-\n-    public Boolean isAsync() {\n-        return async;\n-    }\n-\n-    public void setAsync(Boolean async) {\n-        this.async = async;\n-    }\n-\n-    public Integer getActives() {\n-        return actives;\n-    }\n-\n-    public void setActives(Integer actives) {\n-        this.actives = actives;\n-    }\n-\n-    public Boolean getSent() {\n-        return sent;\n-    }\n-\n-    public void setSent(Boolean sent) {\n-        this.sent = sent;\n-    }\n-\n-    @Parameter(escaped = true)\n-    public String getMock() {\n-        return mock;\n-    }\n-\n-    public void setMock(String mock) {\n-        this.mock = mock;\n-    }\n-\n-    /**\n-     * Set the property \"mock\"\n-     *\n-     * @param mock the value of mock\n-     * @since 2.7.6\n-     */\n-    public void setMock(Object mock) {\n-        if (mock == null) {\n-            return;\n-        }\n-        this.setMock(String.valueOf(mock));\n-    }\n-\n-    public String getMerger() {\n-        return merger;\n-    }\n-\n-    public void setMerger(String merger) {\n-        this.merger = merger;\n-    }\n-\n-    public String getCache() {\n-        return cache;\n-    }\n-\n-    public void setCache(String cache) {\n-        this.cache = cache;\n-    }\n-\n-    public String getValidation() {\n-        return validation;\n-    }\n-\n-    public void setValidation(String validation) {\n-        this.validation = validation;\n-    }\n-\n-    public Map<String, String> getParameters() {\n-        return parameters;\n-    }\n-\n-    public void setParameters(Map<String, String> parameters) {\n-        this.parameters = parameters;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * AbstractMethodConfig\r\n+ *\r\n+ * @export\r\n+ */\r\n+public abstract class AbstractMethodConfig extends AbstractConfig {\r\n+\r\n+    private static final long serialVersionUID = 1L;\r\n+\r\n+    /**\r\n+     * The timeout for remote invocation in milliseconds\r\n+     */\r\n+    protected Integer timeout;\r\n+\r\n+    /**\r\n+     * The retry times\r\n+     */\r\n+    protected Integer retries;\r\n+\r\n+    /**\r\n+     * max concurrent invocations\r\n+     */\r\n+    protected Integer actives;\r\n+\r\n+    /**\r\n+     * The load balance\r\n+     */\r\n+    protected String loadbalance;\r\n+\r\n+    /**\r\n+     * Whether to async\r\n+     * note that: it is an unreliable asynchronism that ignores return values and does not block threads.\r\n+     */\r\n+    protected Boolean async;\r\n+\r\n+    /**\r\n+     * Whether to ack async-sent\r\n+     */\r\n+    protected Boolean sent;\r\n+\r\n+    /**\r\n+     * The name of mock class which gets called when a service fails to execute\r\n+     * <p>\r\n+     * note that: the mock doesn't support on the provider side\uff0cand the mock is executed when a non-business exception\r\n+     * occurs after a remote service call\r\n+     */\r\n+    protected String mock;\r\n+\r\n+    /**\r\n+     * Merger\r\n+     */\r\n+    protected String merger;\r\n+\r\n+    /**\r\n+     * Cache the return result with the call parameter as key, the following options are available: lru, threadlocal,\r\n+     * jcache, etc.\r\n+     */\r\n+    protected String cache;\r\n+\r\n+    /**\r\n+     * Whether JSR303 standard annotation validation is enabled or not, if enabled, annotations on method parameters will\r\n+     * be validated\r\n+     */\r\n+    protected String validation;\r\n+\r\n+    /**\r\n+     * The customized parameters\r\n+     */\r\n+    protected Map<String, String> parameters;\r\n+\r\n+    /**\r\n+     * Forks for forking cluster\r\n+     */\r\n+    protected Integer forks;\r\n+\r\n+    public Integer getForks() {\r\n+        return forks;\r\n+    }\r\n+\r\n+    public void setForks(Integer forks) {\r\n+        this.forks = forks;\r\n+    }\r\n+\r\n+    public Integer getTimeout() {\r\n+        return timeout;\r\n+    }\r\n+\r\n+    public void setTimeout(Integer timeout) {\r\n+        this.timeout = timeout;\r\n+    }\r\n+\r\n+    public Integer getRetries() {\r\n+        return retries;\r\n+    }\r\n+\r\n+    public void setRetries(Integer retries) {\r\n+        this.retries = retries;\r\n+    }\r\n+\r\n+    public String getLoadbalance() {\r\n+        return loadbalance;\r\n+    }\r\n+\r\n+    public void setLoadbalance(String loadbalance) {\r\n+        this.loadbalance = loadbalance;\r\n+    }\r\n+\r\n+    public Boolean isAsync() {\r\n+        return async;\r\n+    }\r\n+\r\n+    public void setAsync(Boolean async) {\r\n+        this.async = async;\r\n+    }\r\n+\r\n+    public Integer getActives() {\r\n+        return actives;\r\n+    }\r\n+\r\n+    public void setActives(Integer actives) {\r\n+        this.actives = actives;\r\n+    }\r\n+\r\n+    public Boolean getSent() {\r\n+        return sent;\r\n+    }\r\n+\r\n+    public void setSent(Boolean sent) {\r\n+        this.sent = sent;\r\n+    }\r\n+\r\n+    @Parameter(escaped = true)\r\n+    public String getMock() {\r\n+        return mock;\r\n+    }\r\n+\r\n+    public void setMock(String mock) {\r\n+        this.mock = mock;\r\n+    }\r\n+\r\n+    /**\r\n+     * Set the property \"mock\"\r\n+     *\r\n+     * @param mock the value of mock\r\n+     * @since 2.7.6\r\n+     */\r\n+    public void setMock(Object mock) {\r\n+        if (mock == null) {\r\n+            return;\r\n+        }\r\n+        this.setMock(String.valueOf(mock));\r\n+    }\r\n+\r\n+    public String getMerger() {\r\n+        return merger;\r\n+    }\r\n+\r\n+    public void setMerger(String merger) {\r\n+        this.merger = merger;\r\n+    }\r\n+\r\n+    public String getCache() {\r\n+        return cache;\r\n+    }\r\n+\r\n+    public void setCache(String cache) {\r\n+        this.cache = cache;\r\n+    }\r\n+\r\n+    public String getValidation() {\r\n+        return validation;\r\n+    }\r\n+\r\n+    public void setValidation(String validation) {\r\n+        this.validation = validation;\r\n+    }\r\n+\r\n+    public Map<String, String> getParameters() {\r\n+        return parameters;\r\n+    }\r\n+\r\n+    public void setParameters(Map<String, String> parameters) {\r\n+        this.parameters = parameters;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/AbstractReferenceConfig.java", "source2": "org/apache/dubbo/config/AbstractReferenceConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,226 +1,226 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.support.Parameter;\n-import org.apache.dubbo.rpc.support.ProtocolUtils;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.INVOKER_LISTENER_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.REFERENCE_FILTER_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.STUB_EVENT_KEY;\n-\n-/**\n- * AbstractConsumerConfig\n- *\n- * @export\n- * @see ReferenceConfigBase\n- */\n-public abstract class AbstractReferenceConfig extends AbstractInterfaceConfig {\n-\n-    private static final long serialVersionUID = -2786526984373031126L;\n-\n-    // ======== Reference config default values, will take effect if reference's attribute is not set  ========\n-\n-    /**\n-     * Check if service provider exists, if not exists, it will be fast fail\n-     */\n-    protected Boolean check;\n-\n-    /**\n-     * Whether to eagle-init\n-     */\n-    protected Boolean init;\n-\n-    /**\n-     * Whether to use generic interface\n-     */\n-    protected String generic;\n-\n-    /**\n-     * Whether to find reference's instance from the current JVM\n-     */\n-    protected Boolean injvm;\n-\n-    /**\n-     * Lazy create connection\n-     */\n-    protected Boolean lazy;\n-\n-    protected String reconnect;\n-\n-    protected Boolean sticky = false;\n-\n-    /**\n-     * Whether to support event in stub.\n-     */\n-    //TODO solve merge problem\n-    protected Boolean stubevent;//= Constants.DEFAULT_STUB_EVENT;\n-\n-\n-\n-    /**\n-     * declares which app or service this interface belongs to\n-     */\n-    protected String providedBy;\n-\n-    protected String router;\n-\n-    public Boolean isCheck() {\n-        return check;\n-    }\n-\n-    public void setCheck(Boolean check) {\n-        this.check = check;\n-    }\n-\n-    public Boolean isInit() {\n-        return init;\n-    }\n-\n-    public void setInit(Boolean init) {\n-        this.init = init;\n-    }\n-\n-    @Deprecated\n-    @Parameter(excluded = true)\n-    public Boolean isGeneric() {\n-        return this.generic != null ? ProtocolUtils.isGeneric(generic) : null;\n-    }\n-\n-    @Deprecated\n-    public void setGeneric(Boolean generic) {\n-        if (generic != null) {\n-            this.generic = generic.toString();\n-        }\n-    }\n-\n-    public String getGeneric() {\n-        return generic;\n-    }\n-\n-    public void setGeneric(String generic) {\n-        if (StringUtils.isEmpty(generic)) {\n-            return;\n-        }\n-        if (ProtocolUtils.isValidGenericValue(generic)) {\n-            this.generic = generic;\n-        } else {\n-            throw new IllegalArgumentException(\"Unsupported generic type \" + generic);\n-        }\n-    }\n-\n-    /**\n-     * @return\n-     * @deprecated instead, use the parameter <b>scope</> to judge if it's in jvm, scope=local\n-     */\n-    @Deprecated\n-    public Boolean isInjvm() {\n-        return injvm;\n-    }\n-\n-    /**\n-     * @param injvm\n-     * @deprecated instead, use the parameter <b>scope</b> to judge if it's in jvm, scope=local\n-     */\n-    @Deprecated\n-    public void setInjvm(Boolean injvm) {\n-        this.injvm = injvm;\n-    }\n-\n-    @Override\n-    @Parameter(key = REFERENCE_FILTER_KEY, append = true)\n-    public String getFilter() {\n-        return super.getFilter();\n-    }\n-\n-    @Override\n-    @Parameter(key = INVOKER_LISTENER_KEY, append = true)\n-    public String getListener() {\n-        return super.getListener();\n-    }\n-\n-    @Override\n-    public void setListener(String listener) {\n-        super.setListener(listener);\n-    }\n-\n-    public Boolean getLazy() {\n-        return lazy;\n-    }\n-\n-    public void setLazy(Boolean lazy) {\n-        this.lazy = lazy;\n-    }\n-\n-    @Override\n-    public void setOnconnect(String onconnect) {\n-        if (onconnect != null && onconnect.length() > 0) {\n-            this.stubevent = true;\n-        }\n-        super.setOnconnect(onconnect);\n-    }\n-\n-    @Override\n-    public void setOndisconnect(String ondisconnect) {\n-        if (ondisconnect != null && ondisconnect.length() > 0) {\n-            this.stubevent = true;\n-        }\n-        super.setOndisconnect(ondisconnect);\n-    }\n-\n-    @Parameter(key = STUB_EVENT_KEY)\n-    public Boolean getStubevent() {\n-        return stubevent;\n-    }\n-\n-    public String getReconnect() {\n-        return reconnect;\n-    }\n-\n-    public void setReconnect(String reconnect) {\n-        this.reconnect = reconnect;\n-    }\n-\n-    public Boolean getSticky() {\n-        return sticky;\n-    }\n-\n-    public void setSticky(Boolean sticky) {\n-        this.sticky = sticky;\n-    }\n-\n-\n-\n-    @Parameter(key = \"provided-by\")\n-    public String getProvidedBy() {\n-        return providedBy;\n-    }\n-\n-    public void setProvidedBy(String providedBy) {\n-        this.providedBy = providedBy;\n-    }\n-\n-    @Parameter(key = \"router\", append = true)\n-    public String getRouter() {\n-        return router;\n-    }\n-\n-    public void setRouter(String router) {\n-        this.router = router;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+import org.apache.dubbo.rpc.support.ProtocolUtils;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INVOKER_LISTENER_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REFERENCE_FILTER_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.STUB_EVENT_KEY;\r\n+\r\n+/**\r\n+ * AbstractConsumerConfig\r\n+ *\r\n+ * @export\r\n+ * @see ReferenceConfigBase\r\n+ */\r\n+public abstract class AbstractReferenceConfig extends AbstractInterfaceConfig {\r\n+\r\n+    private static final long serialVersionUID = -2786526984373031126L;\r\n+\r\n+    // ======== Reference config default values, will take effect if reference's attribute is not set  ========\r\n+\r\n+    /**\r\n+     * Check if service provider exists, if not exists, it will be fast fail\r\n+     */\r\n+    protected Boolean check;\r\n+\r\n+    /**\r\n+     * Whether to eagle-init\r\n+     */\r\n+    protected Boolean init;\r\n+\r\n+    /**\r\n+     * Whether to use generic interface\r\n+     */\r\n+    protected String generic;\r\n+\r\n+    /**\r\n+     * Whether to find reference's instance from the current JVM\r\n+     */\r\n+    protected Boolean injvm;\r\n+\r\n+    /**\r\n+     * Lazy create connection\r\n+     */\r\n+    protected Boolean lazy;\r\n+\r\n+    protected String reconnect;\r\n+\r\n+    protected Boolean sticky = false;\r\n+\r\n+    /**\r\n+     * Whether to support event in stub.\r\n+     */\r\n+    //TODO solve merge problem\r\n+    protected Boolean stubevent;//= Constants.DEFAULT_STUB_EVENT;\r\n+\r\n+\r\n+\r\n+    /**\r\n+     * declares which app or service this interface belongs to\r\n+     */\r\n+    protected String providedBy;\r\n+\r\n+    protected String router;\r\n+\r\n+    public Boolean isCheck() {\r\n+        return check;\r\n+    }\r\n+\r\n+    public void setCheck(Boolean check) {\r\n+        this.check = check;\r\n+    }\r\n+\r\n+    public Boolean isInit() {\r\n+        return init;\r\n+    }\r\n+\r\n+    public void setInit(Boolean init) {\r\n+        this.init = init;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    @Parameter(excluded = true)\r\n+    public Boolean isGeneric() {\r\n+        return this.generic != null ? ProtocolUtils.isGeneric(generic) : null;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void setGeneric(Boolean generic) {\r\n+        if (generic != null) {\r\n+            this.generic = generic.toString();\r\n+        }\r\n+    }\r\n+\r\n+    public String getGeneric() {\r\n+        return generic;\r\n+    }\r\n+\r\n+    public void setGeneric(String generic) {\r\n+        if (StringUtils.isEmpty(generic)) {\r\n+            return;\r\n+        }\r\n+        if (ProtocolUtils.isValidGenericValue(generic)) {\r\n+            this.generic = generic;\r\n+        } else {\r\n+            throw new IllegalArgumentException(\"Unsupported generic type \" + generic);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * @return\r\n+     * @deprecated instead, use the parameter <b>scope</> to judge if it's in jvm, scope=local\r\n+     */\r\n+    @Deprecated\r\n+    public Boolean isInjvm() {\r\n+        return injvm;\r\n+    }\r\n+\r\n+    /**\r\n+     * @param injvm\r\n+     * @deprecated instead, use the parameter <b>scope</b> to judge if it's in jvm, scope=local\r\n+     */\r\n+    @Deprecated\r\n+    public void setInjvm(Boolean injvm) {\r\n+        this.injvm = injvm;\r\n+    }\r\n+\r\n+    @Override\r\n+    @Parameter(key = REFERENCE_FILTER_KEY, append = true)\r\n+    public String getFilter() {\r\n+        return super.getFilter();\r\n+    }\r\n+\r\n+    @Override\r\n+    @Parameter(key = INVOKER_LISTENER_KEY, append = true)\r\n+    public String getListener() {\r\n+        return super.getListener();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setListener(String listener) {\r\n+        super.setListener(listener);\r\n+    }\r\n+\r\n+    public Boolean getLazy() {\r\n+        return lazy;\r\n+    }\r\n+\r\n+    public void setLazy(Boolean lazy) {\r\n+        this.lazy = lazy;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setOnconnect(String onconnect) {\r\n+        if (onconnect != null && onconnect.length() > 0) {\r\n+            this.stubevent = true;\r\n+        }\r\n+        super.setOnconnect(onconnect);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setOndisconnect(String ondisconnect) {\r\n+        if (ondisconnect != null && ondisconnect.length() > 0) {\r\n+            this.stubevent = true;\r\n+        }\r\n+        super.setOndisconnect(ondisconnect);\r\n+    }\r\n+\r\n+    @Parameter(key = STUB_EVENT_KEY)\r\n+    public Boolean getStubevent() {\r\n+        return stubevent;\r\n+    }\r\n+\r\n+    public String getReconnect() {\r\n+        return reconnect;\r\n+    }\r\n+\r\n+    public void setReconnect(String reconnect) {\r\n+        this.reconnect = reconnect;\r\n+    }\r\n+\r\n+    public Boolean getSticky() {\r\n+        return sticky;\r\n+    }\r\n+\r\n+    public void setSticky(Boolean sticky) {\r\n+        this.sticky = sticky;\r\n+    }\r\n+\r\n+\r\n+\r\n+    @Parameter(key = \"provided-by\")\r\n+    public String getProvidedBy() {\r\n+        return providedBy;\r\n+    }\r\n+\r\n+    public void setProvidedBy(String providedBy) {\r\n+        this.providedBy = providedBy;\r\n+    }\r\n+\r\n+    @Parameter(key = \"router\", append = true)\r\n+    public String getRouter() {\r\n+        return router;\r\n+    }\r\n+\r\n+    public void setRouter(String router) {\r\n+        this.router = router;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/AbstractServiceConfig.java", "source2": "org/apache/dubbo/config/AbstractServiceConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,291 +1,291 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.config.support.Parameter;\n-\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.List;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.EXPORTER_LISTENER_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.SERVICE_FILTER_KEY;\n-\n-/**\n- * AbstractServiceConfig\n- *\n- * @export\n- */\n-public abstract class AbstractServiceConfig extends AbstractInterfaceConfig {\n-\n-    private static final long serialVersionUID = 1L;\n-\n-    /**\n-     * The service version\n-     */\n-    protected String version;\n-\n-    /**\n-     * The service group\n-     */\n-    protected String group;\n-\n-    /**\n-     * whether the service is deprecated\n-     */\n-    protected Boolean deprecated = false;\n-\n-    /**\n-     * The time delay register service (milliseconds)\n-     */\n-    protected Integer delay;\n-\n-    /**\n-     * Whether to export the service\n-     */\n-    protected Boolean export;\n-\n-    /**\n-     * The service weight\n-     */\n-    protected Integer weight;\n-\n-    /**\n-     * Document center\n-     */\n-    protected String document;\n-\n-    /**\n-     * Whether to register as a dynamic service or not on register center, the value is true, the status will be enabled\n-     * after the service registered,and it needs to be disabled manually; if you want to disable the service, you also need\n-     * manual processing\n-     */\n-    protected Boolean dynamic = true;\n-\n-    /**\n-     * Whether to use token\n-     */\n-    protected String token;\n-\n-    /**\n-     * Whether to export access logs to logs\n-     */\n-    protected String accesslog;\n-\n-    /**\n-     * The protocol list the service will export with\n-     * Also see {@link #protocolIds}, only one of them will work.\n-     */\n-    protected List<ProtocolConfig> protocols;\n-\n-    /**\n-     * The id list of protocols the service will export with\n-     * Also see {@link #protocols}, only one of them will work.\n-     */\n-    protected String protocolIds;\n-\n-    // max allowed execute times\n-    private Integer executes;\n-\n-    /**\n-     * Whether to register\n-     */\n-    private Boolean register;\n-\n-    /**\n-     * Warm up period\n-     */\n-    private Integer warmup;\n-\n-    /**\n-     * The serialization type\n-     */\n-    private String serialization;\n-\n-    public String getVersion() {\n-        return version;\n-    }\n-\n-    public void setVersion(String version) {\n-        this.version = version;\n-    }\n-\n-    public String getGroup() {\n-        return group;\n-    }\n-\n-    public void setGroup(String group) {\n-        this.group = group;\n-    }\n-\n-    public Integer getDelay() {\n-        return delay;\n-    }\n-\n-    public void setDelay(Integer delay) {\n-        this.delay = delay;\n-    }\n-\n-    public Boolean getExport() {\n-        return export;\n-    }\n-\n-    public void setExport(Boolean export) {\n-        this.export = export;\n-    }\n-\n-    public Integer getWeight() {\n-        return weight;\n-    }\n-\n-    public void setWeight(Integer weight) {\n-        this.weight = weight;\n-    }\n-\n-    @Parameter(escaped = true)\n-    public String getDocument() {\n-        return document;\n-    }\n-\n-    public void setDocument(String document) {\n-        this.document = document;\n-    }\n-\n-    public String getToken() {\n-        return token;\n-    }\n-\n-    public void setToken(Boolean token) {\n-        if (token == null) {\n-            setToken((String) null);\n-        } else {\n-            setToken(String.valueOf(token));\n-        }\n-    }\n-\n-    public void setToken(String token) {\n-        this.token = token;\n-    }\n-\n-    public Boolean isDeprecated() {\n-        return deprecated;\n-    }\n-\n-    public void setDeprecated(Boolean deprecated) {\n-        this.deprecated = deprecated;\n-    }\n-\n-    public Boolean isDynamic() {\n-        return dynamic;\n-    }\n-\n-    public void setDynamic(Boolean dynamic) {\n-        this.dynamic = dynamic;\n-    }\n-\n-    public List<ProtocolConfig> getProtocols() {\n-        return protocols;\n-    }\n-\n-    @SuppressWarnings({\"unchecked\"})\n-    public void setProtocols(List<? extends ProtocolConfig> protocols) {\n-        this.protocols = (List<ProtocolConfig>) protocols;\n-    }\n-\n-    public ProtocolConfig getProtocol() {\n-        return CollectionUtils.isEmpty(protocols) ? null : protocols.get(0);\n-    }\n-\n-    public void setProtocol(ProtocolConfig protocol) {\n-        setProtocols(new ArrayList<>(Arrays.asList(protocol)));\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getProtocolIds() {\n-        return protocolIds;\n-    }\n-\n-    public void setProtocolIds(String protocolIds) {\n-        this.protocolIds = protocolIds;\n-    }\n-\n-    public String getAccesslog() {\n-        return accesslog;\n-    }\n-\n-    public void setAccesslog(Boolean accesslog) {\n-        if (accesslog == null) {\n-            setAccesslog((String) null);\n-        } else {\n-            setAccesslog(String.valueOf(accesslog));\n-        }\n-    }\n-\n-    public void setAccesslog(String accesslog) {\n-        this.accesslog = accesslog;\n-    }\n-\n-    public Integer getExecutes() {\n-        return executes;\n-    }\n-\n-    public void setExecutes(Integer executes) {\n-        this.executes = executes;\n-    }\n-\n-    @Override\n-    @Parameter(key = SERVICE_FILTER_KEY, append = true)\n-    public String getFilter() {\n-        return super.getFilter();\n-    }\n-\n-    @Override\n-    @Parameter(key = EXPORTER_LISTENER_KEY, append = true)\n-    public String getListener() {\n-        return listener;\n-    }\n-\n-    @Override\n-    public void setListener(String listener) {\n-        this.listener = listener;\n-    }\n-\n-    public Boolean isRegister() {\n-        return register;\n-    }\n-\n-    public void setRegister(Boolean register) {\n-        this.register = register;\n-    }\n-\n-    public Integer getWarmup() {\n-        return warmup;\n-    }\n-\n-    public void setWarmup(Integer warmup) {\n-        this.warmup = warmup;\n-    }\n-\n-    public String getSerialization() {\n-        return serialization;\n-    }\n-\n-    public void setSerialization(String serialization) {\n-        this.serialization = serialization;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.List;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.EXPORTER_LISTENER_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SERVICE_FILTER_KEY;\r\n+\r\n+/**\r\n+ * AbstractServiceConfig\r\n+ *\r\n+ * @export\r\n+ */\r\n+public abstract class AbstractServiceConfig extends AbstractInterfaceConfig {\r\n+\r\n+    private static final long serialVersionUID = 1L;\r\n+\r\n+    /**\r\n+     * The service version\r\n+     */\r\n+    protected String version;\r\n+\r\n+    /**\r\n+     * The service group\r\n+     */\r\n+    protected String group;\r\n+\r\n+    /**\r\n+     * whether the service is deprecated\r\n+     */\r\n+    protected Boolean deprecated = false;\r\n+\r\n+    /**\r\n+     * The time delay register service (milliseconds)\r\n+     */\r\n+    protected Integer delay;\r\n+\r\n+    /**\r\n+     * Whether to export the service\r\n+     */\r\n+    protected Boolean export;\r\n+\r\n+    /**\r\n+     * The service weight\r\n+     */\r\n+    protected Integer weight;\r\n+\r\n+    /**\r\n+     * Document center\r\n+     */\r\n+    protected String document;\r\n+\r\n+    /**\r\n+     * Whether to register as a dynamic service or not on register center, the value is true, the status will be enabled\r\n+     * after the service registered,and it needs to be disabled manually; if you want to disable the service, you also need\r\n+     * manual processing\r\n+     */\r\n+    protected Boolean dynamic = true;\r\n+\r\n+    /**\r\n+     * Whether to use token\r\n+     */\r\n+    protected String token;\r\n+\r\n+    /**\r\n+     * Whether to export access logs to logs\r\n+     */\r\n+    protected String accesslog;\r\n+\r\n+    /**\r\n+     * The protocol list the service will export with\r\n+     * Also see {@link #protocolIds}, only one of them will work.\r\n+     */\r\n+    protected List<ProtocolConfig> protocols;\r\n+\r\n+    /**\r\n+     * The id list of protocols the service will export with\r\n+     * Also see {@link #protocols}, only one of them will work.\r\n+     */\r\n+    protected String protocolIds;\r\n+\r\n+    // max allowed execute times\r\n+    private Integer executes;\r\n+\r\n+    /**\r\n+     * Whether to register\r\n+     */\r\n+    private Boolean register;\r\n+\r\n+    /**\r\n+     * Warm up period\r\n+     */\r\n+    private Integer warmup;\r\n+\r\n+    /**\r\n+     * The serialization type\r\n+     */\r\n+    private String serialization;\r\n+\r\n+    public String getVersion() {\r\n+        return version;\r\n+    }\r\n+\r\n+    public void setVersion(String version) {\r\n+        this.version = version;\r\n+    }\r\n+\r\n+    public String getGroup() {\r\n+        return group;\r\n+    }\r\n+\r\n+    public void setGroup(String group) {\r\n+        this.group = group;\r\n+    }\r\n+\r\n+    public Integer getDelay() {\r\n+        return delay;\r\n+    }\r\n+\r\n+    public void setDelay(Integer delay) {\r\n+        this.delay = delay;\r\n+    }\r\n+\r\n+    public Boolean getExport() {\r\n+        return export;\r\n+    }\r\n+\r\n+    public void setExport(Boolean export) {\r\n+        this.export = export;\r\n+    }\r\n+\r\n+    public Integer getWeight() {\r\n+        return weight;\r\n+    }\r\n+\r\n+    public void setWeight(Integer weight) {\r\n+        this.weight = weight;\r\n+    }\r\n+\r\n+    @Parameter(escaped = true)\r\n+    public String getDocument() {\r\n+        return document;\r\n+    }\r\n+\r\n+    public void setDocument(String document) {\r\n+        this.document = document;\r\n+    }\r\n+\r\n+    public String getToken() {\r\n+        return token;\r\n+    }\r\n+\r\n+    public void setToken(Boolean token) {\r\n+        if (token == null) {\r\n+            setToken((String) null);\r\n+        } else {\r\n+            setToken(String.valueOf(token));\r\n+        }\r\n+    }\r\n+\r\n+    public void setToken(String token) {\r\n+        this.token = token;\r\n+    }\r\n+\r\n+    public Boolean isDeprecated() {\r\n+        return deprecated;\r\n+    }\r\n+\r\n+    public void setDeprecated(Boolean deprecated) {\r\n+        this.deprecated = deprecated;\r\n+    }\r\n+\r\n+    public Boolean isDynamic() {\r\n+        return dynamic;\r\n+    }\r\n+\r\n+    public void setDynamic(Boolean dynamic) {\r\n+        this.dynamic = dynamic;\r\n+    }\r\n+\r\n+    public List<ProtocolConfig> getProtocols() {\r\n+        return protocols;\r\n+    }\r\n+\r\n+    @SuppressWarnings({\"unchecked\"})\r\n+    public void setProtocols(List<? extends ProtocolConfig> protocols) {\r\n+        this.protocols = (List<ProtocolConfig>) protocols;\r\n+    }\r\n+\r\n+    public ProtocolConfig getProtocol() {\r\n+        return CollectionUtils.isEmpty(protocols) ? null : protocols.get(0);\r\n+    }\r\n+\r\n+    public void setProtocol(ProtocolConfig protocol) {\r\n+        setProtocols(new ArrayList<>(Arrays.asList(protocol)));\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getProtocolIds() {\r\n+        return protocolIds;\r\n+    }\r\n+\r\n+    public void setProtocolIds(String protocolIds) {\r\n+        this.protocolIds = protocolIds;\r\n+    }\r\n+\r\n+    public String getAccesslog() {\r\n+        return accesslog;\r\n+    }\r\n+\r\n+    public void setAccesslog(Boolean accesslog) {\r\n+        if (accesslog == null) {\r\n+            setAccesslog((String) null);\r\n+        } else {\r\n+            setAccesslog(String.valueOf(accesslog));\r\n+        }\r\n+    }\r\n+\r\n+    public void setAccesslog(String accesslog) {\r\n+        this.accesslog = accesslog;\r\n+    }\r\n+\r\n+    public Integer getExecutes() {\r\n+        return executes;\r\n+    }\r\n+\r\n+    public void setExecutes(Integer executes) {\r\n+        this.executes = executes;\r\n+    }\r\n+\r\n+    @Override\r\n+    @Parameter(key = SERVICE_FILTER_KEY, append = true)\r\n+    public String getFilter() {\r\n+        return super.getFilter();\r\n+    }\r\n+\r\n+    @Override\r\n+    @Parameter(key = EXPORTER_LISTENER_KEY, append = true)\r\n+    public String getListener() {\r\n+        return listener;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setListener(String listener) {\r\n+        this.listener = listener;\r\n+    }\r\n+\r\n+    public Boolean isRegister() {\r\n+        return register;\r\n+    }\r\n+\r\n+    public void setRegister(Boolean register) {\r\n+        this.register = register;\r\n+    }\r\n+\r\n+    public Integer getWarmup() {\r\n+        return warmup;\r\n+    }\r\n+\r\n+    public void setWarmup(Integer warmup) {\r\n+        this.warmup = warmup;\r\n+    }\r\n+\r\n+    public String getSerialization() {\r\n+        return serialization;\r\n+    }\r\n+\r\n+    public void setSerialization(String serialization) {\r\n+        this.serialization = serialization;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/ApplicationConfig.java", "source2": "org/apache/dubbo/config/ApplicationConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,504 +1,504 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.compiler.support.AdaptiveCompiler;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.infra.InfraAdapter;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.support.Parameter;\n-\n-import java.net.InetAddress;\n-import java.net.UnknownHostException;\n-import java.util.ArrayList;\n-import java.util.HashMap;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.DUMP_DIRECTORY;\n-import static org.apache.dubbo.common.constants.CommonConstants.HOST_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.METADATA_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_KEY;\n-import static org.apache.dubbo.common.constants.QosConstants.ACCEPT_FOREIGN_IP;\n-import static org.apache.dubbo.common.constants.QosConstants.QOS_ENABLE;\n-import static org.apache.dubbo.common.constants.QosConstants.QOS_HOST;\n-import static org.apache.dubbo.common.constants.QosConstants.QOS_PORT;\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_PUBLISH_INTERFACE_KEY;\n-import static org.apache.dubbo.config.Constants.DEVELOPMENT_ENVIRONMENT;\n-import static org.apache.dubbo.config.Constants.PRODUCTION_ENVIRONMENT;\n-import static org.apache.dubbo.config.Constants.TEST_ENVIRONMENT;\n-\n-\n-/**\n- * The application info\n- *\n- * @export\n- */\n-public class ApplicationConfig extends AbstractConfig {\n-    private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationConfig.class);\n-\n-    private static final long serialVersionUID = 5508512956753757169L;\n-\n-    /**\n-     * Application name\n-     */\n-    private String name;\n-\n-    /**\n-     * The application version\n-     */\n-    private String version;\n-\n-    /**\n-     * Application owner\n-     */\n-    private String owner;\n-\n-    /**\n-     * Application's organization (BU)\n-     */\n-    private String organization;\n-\n-    /**\n-     * Architecture layer\n-     */\n-    private String architecture;\n-\n-    /**\n-     * Environment, e.g. dev, test or production\n-     */\n-    private String environment;\n-\n-    /**\n-     * Java compiler\n-     */\n-    private String compiler;\n-\n-    /**\n-     * The type of the log access\n-     */\n-    private String logger;\n-\n-    /**\n-     * Registry centers\n-     */\n-    private List<RegistryConfig> registries;\n-    private String registryIds;\n-\n-    /**\n-     * Monitor center\n-     */\n-    private MonitorConfig monitor;\n-\n-    /**\n-     * Is default or not\n-     */\n-    private Boolean isDefault;\n-\n-    /**\n-     * Directory for saving thread dump\n-     */\n-    private String dumpDirectory;\n-\n-    /**\n-     * Whether to enable qos or not\n-     */\n-    private Boolean qosEnable;\n-\n-    /**\n-     * The qos host to listen\n-     */\n-    private String qosHost;\n-\n-    /**\n-     * The qos port to listen\n-     */\n-    private Integer qosPort;\n-\n-    /**\n-     * Should we accept foreign ip or not?\n-     */\n-    private Boolean qosAcceptForeignIp;\n-\n-    /**\n-     * Customized parameters\n-     */\n-    private Map<String, String> parameters;\n-\n-    /**\n-     * Config the shutdown.wait\n-     */\n-    private String shutwait;\n-\n-    private String hostname;\n-\n-    /**\n-     * Metadata type, local or remote, if choose remote, you need to further specify metadata center.\n-     */\n-    private String metadataType;\n-\n-    private Boolean registerConsumer;\n-\n-    private String repository;\n-\n-    private Boolean publishInterface;\n-\n-    /**\n-     * Metadata Service, used in Service Discovery\n-     */\n-    private Integer metadataServicePort;\n-\n-    public ApplicationConfig() {\n-    }\n-\n-    public ApplicationConfig(String name) {\n-        setName(name);\n-    }\n-\n-    @Parameter(key = APPLICATION_KEY, required = true, useKeyAsProperty = false)\n-    public String getName() {\n-        return name;\n-    }\n-\n-    public void setName(String name) {\n-        this.name = name;\n-        if (StringUtils.isEmpty(id)) {\n-            id = name;\n-        }\n-    }\n-\n-    @Parameter(key = \"application.version\")\n-    public String getVersion() {\n-        return version;\n-    }\n-\n-    public void setVersion(String version) {\n-        this.version = version;\n-    }\n-\n-    public String getOwner() {\n-        return owner;\n-    }\n-\n-    public void setOwner(String owner) {\n-        this.owner = owner;\n-    }\n-\n-    public String getOrganization() {\n-        return organization;\n-    }\n-\n-    public void setOrganization(String organization) {\n-        this.organization = organization;\n-    }\n-\n-    public String getArchitecture() {\n-        return architecture;\n-    }\n-\n-    public void setArchitecture(String architecture) {\n-        this.architecture = architecture;\n-    }\n-\n-    public String getEnvironment() {\n-        return environment;\n-    }\n-\n-    public void setEnvironment(String environment) {\n-        if (environment != null) {\n-            if (!(DEVELOPMENT_ENVIRONMENT.equals(environment)\n-                    || TEST_ENVIRONMENT.equals(environment)\n-                    || PRODUCTION_ENVIRONMENT.equals(environment))) {\n-\n-                throw new IllegalStateException(String.format(\"Unsupported environment: %s, only support %s/%s/%s, default is %s.\",\n-                        environment,\n-                        DEVELOPMENT_ENVIRONMENT,\n-                        TEST_ENVIRONMENT,\n-                        PRODUCTION_ENVIRONMENT,\n-                        PRODUCTION_ENVIRONMENT));\n-            }\n-        }\n-        this.environment = environment;\n-    }\n-\n-    public RegistryConfig getRegistry() {\n-        return CollectionUtils.isEmpty(registries) ? null : registries.get(0);\n-    }\n-\n-    public void setRegistry(RegistryConfig registry) {\n-        List<RegistryConfig> registries = new ArrayList<RegistryConfig>(1);\n-        registries.add(registry);\n-        this.registries = registries;\n-    }\n-\n-    public List<RegistryConfig> getRegistries() {\n-        return registries;\n-    }\n-\n-    @SuppressWarnings({\"unchecked\"})\n-    public void setRegistries(List<? extends RegistryConfig> registries) {\n-        this.registries = (List<RegistryConfig>) registries;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getRegistryIds() {\n-        return registryIds;\n-    }\n-\n-    public void setRegistryIds(String registryIds) {\n-        this.registryIds = registryIds;\n-    }\n-\n-    public MonitorConfig getMonitor() {\n-        return monitor;\n-    }\n-\n-    public void setMonitor(String monitor) {\n-        this.monitor = new MonitorConfig(monitor);\n-    }\n-\n-    public void setMonitor(MonitorConfig monitor) {\n-        this.monitor = monitor;\n-    }\n-\n-    public String getCompiler() {\n-        return compiler;\n-    }\n-\n-    public void setCompiler(String compiler) {\n-        this.compiler = compiler;\n-        AdaptiveCompiler.setDefaultCompiler(compiler);\n-    }\n-\n-    public String getLogger() {\n-        return logger;\n-    }\n-\n-    public void setLogger(String logger) {\n-        this.logger = logger;\n-        LoggerFactory.setLoggerAdapter(logger);\n-    }\n-\n-    public Boolean isDefault() {\n-        return isDefault;\n-    }\n-\n-    public void setDefault(Boolean isDefault) {\n-        this.isDefault = isDefault;\n-    }\n-\n-    @Parameter(key = DUMP_DIRECTORY)\n-    public String getDumpDirectory() {\n-        return dumpDirectory;\n-    }\n-\n-    public void setDumpDirectory(String dumpDirectory) {\n-        this.dumpDirectory = dumpDirectory;\n-    }\n-\n-    @Parameter(key = QOS_ENABLE)\n-    public Boolean getQosEnable() {\n-        return qosEnable;\n-    }\n-\n-    public void setQosEnable(Boolean qosEnable) {\n-        this.qosEnable = qosEnable;\n-    }\n-\n-    @Parameter(key = QOS_HOST)\n-    public String getQosHost() {\n-        return qosHost;\n-    }\n-\n-    public void setQosHost(String qosHost) {\n-        this.qosHost = qosHost;\n-    }\n-\n-    @Parameter(key = QOS_PORT)\n-    public Integer getQosPort() {\n-        return qosPort;\n-    }\n-\n-    public void setQosPort(Integer qosPort) {\n-        this.qosPort = qosPort;\n-    }\n-\n-    @Parameter(key = ACCEPT_FOREIGN_IP)\n-    public Boolean getQosAcceptForeignIp() {\n-        return qosAcceptForeignIp;\n-    }\n-\n-    public void setQosAcceptForeignIp(Boolean qosAcceptForeignIp) {\n-        this.qosAcceptForeignIp = qosAcceptForeignIp;\n-    }\n-\n-    /**\n-     * The format is the same as the springboot, including: getQosEnableCompatible(), getQosPortCompatible(), getQosAcceptForeignIpCompatible().\n-     *\n-     * @return\n-     */\n-    @Parameter(key = \"qos-enable\", excluded = true)\n-    public Boolean getQosEnableCompatible() {\n-        return getQosEnable();\n-    }\n-\n-    public void setQosEnableCompatible(Boolean qosEnable) {\n-        setQosEnable(qosEnable);\n-    }\n-\n-    @Parameter(key = \"qos-host\", excluded = true)\n-    public String getQosHostCompatible() {\n-        return getQosHost();\n-    }\n-\n-    public void setQosHostCompatible(String qosHost) {\n-        this.setQosHost(qosHost);\n-    }\n-\n-    @Parameter(key = \"qos-port\", excluded = true)\n-    public Integer getQosPortCompatible() {\n-        return getQosPort();\n-    }\n-\n-    public void setQosPortCompatible(Integer qosPort) {\n-        this.setQosPort(qosPort);\n-    }\n-\n-    @Parameter(key = \"qos-accept-foreign-ip\", excluded = true)\n-    public Boolean getQosAcceptForeignIpCompatible() {\n-        return this.getQosAcceptForeignIp();\n-    }\n-\n-    public void setQosAcceptForeignIpCompatible(Boolean qosAcceptForeignIp) {\n-        this.setQosAcceptForeignIp(qosAcceptForeignIp);\n-    }\n-\n-    public Map<String, String> getParameters() {\n-        return parameters;\n-    }\n-\n-    public void setParameters(Map<String, String> parameters) {\n-        this.parameters = parameters;\n-    }\n-\n-    public String getShutwait() {\n-        return shutwait;\n-    }\n-\n-    public void setShutwait(String shutwait) {\n-        System.setProperty(SHUTDOWN_WAIT_KEY, shutwait);\n-        this.shutwait = shutwait;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getHostname() {\n-        if (hostname == null) {\n-            try {\n-                hostname = InetAddress.getLocalHost().getHostName();\n-            } catch (UnknownHostException e) {\n-                LOGGER.warn(\"Failed to get the hostname of current instance.\", e);\n-                hostname = \"UNKNOWN\";\n-            }\n-        }\n-        return hostname;\n-    }\n-\n-    @Override\n-    @Parameter(excluded = true)\n-    public boolean isValid() {\n-        return !StringUtils.isEmpty(name);\n-    }\n-\n-    @Parameter(key = METADATA_KEY)\n-    public String getMetadataType() {\n-        return metadataType;\n-    }\n-\n-    public void setMetadataType(String metadataType) {\n-        this.metadataType = metadataType;\n-    }\n-\n-    public Boolean getRegisterConsumer() {\n-        return registerConsumer;\n-    }\n-\n-    public void setRegisterConsumer(Boolean registerConsumer) {\n-        this.registerConsumer = registerConsumer;\n-    }\n-\n-    public String getRepository() {\n-        return repository;\n-    }\n-\n-    public void setRepository(String repository) {\n-        this.repository = repository;\n-    }\n-\n-    @Parameter(key = REGISTRY_PUBLISH_INTERFACE_KEY)\n-    public Boolean getPublishInterface() {\n-        return publishInterface;\n-    }\n-\n-    public void setPublishInterface(Boolean publishInterface) {\n-        this.publishInterface = publishInterface;\n-    }\n-\n-    @Parameter(key = \"metadata-service-port\")\n-    public Integer getMetadataServicePort() {\n-        return metadataServicePort;\n-    }\n-\n-    public void setMetadataServicePort(Integer metadataServicePort) {\n-        this.metadataServicePort = metadataServicePort;\n-    }\n-\n-    @Override\n-    public void refresh() {\n-        super.refresh();\n-        appendEnvironmentProperties();\n-    }\n-\n-    private void appendEnvironmentProperties() {\n-        if (parameters == null) {\n-            parameters = new HashMap<>();\n-        }\n-\n-        Set<InfraAdapter> adapters = ExtensionLoader.getExtensionLoader(InfraAdapter.class).getSupportedExtensionInstances();\n-        if (CollectionUtils.isNotEmpty(adapters)) {\n-            Map<String, String> inputParameters = new HashMap<>();\n-            inputParameters.put(APPLICATION_KEY, getName());\n-            inputParameters.put(HOST_KEY, getHostname());\n-            for (InfraAdapter adapter : adapters) {\n-                Map<String, String> extraParameters = adapter.getExtraAttributes(inputParameters);\n-                if (CollectionUtils.isNotEmptyMap(extraParameters)) {\n-                    extraParameters.forEach((key, value) -> {\n-                        String prefix = this.getPrefix() + \".\";\n-                        if (key.startsWith(prefix)) {\n-                            key = key.substring(prefix.length());\n-                        }\n-                        parameters.put(key, value);\n-                    });\n-                }\n-            }\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.compiler.support.AdaptiveCompiler;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.infra.InfraAdapter;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+\r\n+import java.net.InetAddress;\r\n+import java.net.UnknownHostException;\r\n+import java.util.ArrayList;\r\n+import java.util.HashMap;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUMP_DIRECTORY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.HOST_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.METADATA_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_KEY;\r\n+import static org.apache.dubbo.common.constants.QosConstants.ACCEPT_FOREIGN_IP;\r\n+import static org.apache.dubbo.common.constants.QosConstants.QOS_ENABLE;\r\n+import static org.apache.dubbo.common.constants.QosConstants.QOS_HOST;\r\n+import static org.apache.dubbo.common.constants.QosConstants.QOS_PORT;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_PUBLISH_INTERFACE_KEY;\r\n+import static org.apache.dubbo.config.Constants.DEVELOPMENT_ENVIRONMENT;\r\n+import static org.apache.dubbo.config.Constants.PRODUCTION_ENVIRONMENT;\r\n+import static org.apache.dubbo.config.Constants.TEST_ENVIRONMENT;\r\n+\r\n+\r\n+/**\r\n+ * The application info\r\n+ *\r\n+ * @export\r\n+ */\r\n+public class ApplicationConfig extends AbstractConfig {\r\n+    private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationConfig.class);\r\n+\r\n+    private static final long serialVersionUID = 5508512956753757169L;\r\n+\r\n+    /**\r\n+     * Application name\r\n+     */\r\n+    private String name;\r\n+\r\n+    /**\r\n+     * The application version\r\n+     */\r\n+    private String version;\r\n+\r\n+    /**\r\n+     * Application owner\r\n+     */\r\n+    private String owner;\r\n+\r\n+    /**\r\n+     * Application's organization (BU)\r\n+     */\r\n+    private String organization;\r\n+\r\n+    /**\r\n+     * Architecture layer\r\n+     */\r\n+    private String architecture;\r\n+\r\n+    /**\r\n+     * Environment, e.g. dev, test or production\r\n+     */\r\n+    private String environment;\r\n+\r\n+    /**\r\n+     * Java compiler\r\n+     */\r\n+    private String compiler;\r\n+\r\n+    /**\r\n+     * The type of the log access\r\n+     */\r\n+    private String logger;\r\n+\r\n+    /**\r\n+     * Registry centers\r\n+     */\r\n+    private List<RegistryConfig> registries;\r\n+    private String registryIds;\r\n+\r\n+    /**\r\n+     * Monitor center\r\n+     */\r\n+    private MonitorConfig monitor;\r\n+\r\n+    /**\r\n+     * Is default or not\r\n+     */\r\n+    private Boolean isDefault;\r\n+\r\n+    /**\r\n+     * Directory for saving thread dump\r\n+     */\r\n+    private String dumpDirectory;\r\n+\r\n+    /**\r\n+     * Whether to enable qos or not\r\n+     */\r\n+    private Boolean qosEnable;\r\n+\r\n+    /**\r\n+     * The qos host to listen\r\n+     */\r\n+    private String qosHost;\r\n+\r\n+    /**\r\n+     * The qos port to listen\r\n+     */\r\n+    private Integer qosPort;\r\n+\r\n+    /**\r\n+     * Should we accept foreign ip or not?\r\n+     */\r\n+    private Boolean qosAcceptForeignIp;\r\n+\r\n+    /**\r\n+     * Customized parameters\r\n+     */\r\n+    private Map<String, String> parameters;\r\n+\r\n+    /**\r\n+     * Config the shutdown.wait\r\n+     */\r\n+    private String shutwait;\r\n+\r\n+    private String hostname;\r\n+\r\n+    /**\r\n+     * Metadata type, local or remote, if choose remote, you need to further specify metadata center.\r\n+     */\r\n+    private String metadataType;\r\n+\r\n+    private Boolean registerConsumer;\r\n+\r\n+    private String repository;\r\n+\r\n+    private Boolean publishInterface;\r\n+\r\n+    /**\r\n+     * Metadata Service, used in Service Discovery\r\n+     */\r\n+    private Integer metadataServicePort;\r\n+\r\n+    public ApplicationConfig() {\r\n+    }\r\n+\r\n+    public ApplicationConfig(String name) {\r\n+        setName(name);\r\n+    }\r\n+\r\n+    @Parameter(key = APPLICATION_KEY, required = true, useKeyAsProperty = false)\r\n+    public String getName() {\r\n+        return name;\r\n+    }\r\n+\r\n+    public void setName(String name) {\r\n+        this.name = name;\r\n+        if (StringUtils.isEmpty(id)) {\r\n+            id = name;\r\n+        }\r\n+    }\r\n+\r\n+    @Parameter(key = \"application.version\")\r\n+    public String getVersion() {\r\n+        return version;\r\n+    }\r\n+\r\n+    public void setVersion(String version) {\r\n+        this.version = version;\r\n+    }\r\n+\r\n+    public String getOwner() {\r\n+        return owner;\r\n+    }\r\n+\r\n+    public void setOwner(String owner) {\r\n+        this.owner = owner;\r\n+    }\r\n+\r\n+    public String getOrganization() {\r\n+        return organization;\r\n+    }\r\n+\r\n+    public void setOrganization(String organization) {\r\n+        this.organization = organization;\r\n+    }\r\n+\r\n+    public String getArchitecture() {\r\n+        return architecture;\r\n+    }\r\n+\r\n+    public void setArchitecture(String architecture) {\r\n+        this.architecture = architecture;\r\n+    }\r\n+\r\n+    public String getEnvironment() {\r\n+        return environment;\r\n+    }\r\n+\r\n+    public void setEnvironment(String environment) {\r\n+        if (environment != null) {\r\n+            if (!(DEVELOPMENT_ENVIRONMENT.equals(environment)\r\n+                    || TEST_ENVIRONMENT.equals(environment)\r\n+                    || PRODUCTION_ENVIRONMENT.equals(environment))) {\r\n+\r\n+                throw new IllegalStateException(String.format(\"Unsupported environment: %s, only support %s/%s/%s, default is %s.\",\r\n+                        environment,\r\n+                        DEVELOPMENT_ENVIRONMENT,\r\n+                        TEST_ENVIRONMENT,\r\n+                        PRODUCTION_ENVIRONMENT,\r\n+                        PRODUCTION_ENVIRONMENT));\r\n+            }\r\n+        }\r\n+        this.environment = environment;\r\n+    }\r\n+\r\n+    public RegistryConfig getRegistry() {\r\n+        return CollectionUtils.isEmpty(registries) ? null : registries.get(0);\r\n+    }\r\n+\r\n+    public void setRegistry(RegistryConfig registry) {\r\n+        List<RegistryConfig> registries = new ArrayList<RegistryConfig>(1);\r\n+        registries.add(registry);\r\n+        this.registries = registries;\r\n+    }\r\n+\r\n+    public List<RegistryConfig> getRegistries() {\r\n+        return registries;\r\n+    }\r\n+\r\n+    @SuppressWarnings({\"unchecked\"})\r\n+    public void setRegistries(List<? extends RegistryConfig> registries) {\r\n+        this.registries = (List<RegistryConfig>) registries;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getRegistryIds() {\r\n+        return registryIds;\r\n+    }\r\n+\r\n+    public void setRegistryIds(String registryIds) {\r\n+        this.registryIds = registryIds;\r\n+    }\r\n+\r\n+    public MonitorConfig getMonitor() {\r\n+        return monitor;\r\n+    }\r\n+\r\n+    public void setMonitor(String monitor) {\r\n+        this.monitor = new MonitorConfig(monitor);\r\n+    }\r\n+\r\n+    public void setMonitor(MonitorConfig monitor) {\r\n+        this.monitor = monitor;\r\n+    }\r\n+\r\n+    public String getCompiler() {\r\n+        return compiler;\r\n+    }\r\n+\r\n+    public void setCompiler(String compiler) {\r\n+        this.compiler = compiler;\r\n+        AdaptiveCompiler.setDefaultCompiler(compiler);\r\n+    }\r\n+\r\n+    public String getLogger() {\r\n+        return logger;\r\n+    }\r\n+\r\n+    public void setLogger(String logger) {\r\n+        this.logger = logger;\r\n+        LoggerFactory.setLoggerAdapter(logger);\r\n+    }\r\n+\r\n+    public Boolean isDefault() {\r\n+        return isDefault;\r\n+    }\r\n+\r\n+    public void setDefault(Boolean isDefault) {\r\n+        this.isDefault = isDefault;\r\n+    }\r\n+\r\n+    @Parameter(key = DUMP_DIRECTORY)\r\n+    public String getDumpDirectory() {\r\n+        return dumpDirectory;\r\n+    }\r\n+\r\n+    public void setDumpDirectory(String dumpDirectory) {\r\n+        this.dumpDirectory = dumpDirectory;\r\n+    }\r\n+\r\n+    @Parameter(key = QOS_ENABLE)\r\n+    public Boolean getQosEnable() {\r\n+        return qosEnable;\r\n+    }\r\n+\r\n+    public void setQosEnable(Boolean qosEnable) {\r\n+        this.qosEnable = qosEnable;\r\n+    }\r\n+\r\n+    @Parameter(key = QOS_HOST)\r\n+    public String getQosHost() {\r\n+        return qosHost;\r\n+    }\r\n+\r\n+    public void setQosHost(String qosHost) {\r\n+        this.qosHost = qosHost;\r\n+    }\r\n+\r\n+    @Parameter(key = QOS_PORT)\r\n+    public Integer getQosPort() {\r\n+        return qosPort;\r\n+    }\r\n+\r\n+    public void setQosPort(Integer qosPort) {\r\n+        this.qosPort = qosPort;\r\n+    }\r\n+\r\n+    @Parameter(key = ACCEPT_FOREIGN_IP)\r\n+    public Boolean getQosAcceptForeignIp() {\r\n+        return qosAcceptForeignIp;\r\n+    }\r\n+\r\n+    public void setQosAcceptForeignIp(Boolean qosAcceptForeignIp) {\r\n+        this.qosAcceptForeignIp = qosAcceptForeignIp;\r\n+    }\r\n+\r\n+    /**\r\n+     * The format is the same as the springboot, including: getQosEnableCompatible(), getQosPortCompatible(), getQosAcceptForeignIpCompatible().\r\n+     *\r\n+     * @return\r\n+     */\r\n+    @Parameter(key = \"qos-enable\", excluded = true)\r\n+    public Boolean getQosEnableCompatible() {\r\n+        return getQosEnable();\r\n+    }\r\n+\r\n+    public void setQosEnableCompatible(Boolean qosEnable) {\r\n+        setQosEnable(qosEnable);\r\n+    }\r\n+\r\n+    @Parameter(key = \"qos-host\", excluded = true)\r\n+    public String getQosHostCompatible() {\r\n+        return getQosHost();\r\n+    }\r\n+\r\n+    public void setQosHostCompatible(String qosHost) {\r\n+        this.setQosHost(qosHost);\r\n+    }\r\n+\r\n+    @Parameter(key = \"qos-port\", excluded = true)\r\n+    public Integer getQosPortCompatible() {\r\n+        return getQosPort();\r\n+    }\r\n+\r\n+    public void setQosPortCompatible(Integer qosPort) {\r\n+        this.setQosPort(qosPort);\r\n+    }\r\n+\r\n+    @Parameter(key = \"qos-accept-foreign-ip\", excluded = true)\r\n+    public Boolean getQosAcceptForeignIpCompatible() {\r\n+        return this.getQosAcceptForeignIp();\r\n+    }\r\n+\r\n+    public void setQosAcceptForeignIpCompatible(Boolean qosAcceptForeignIp) {\r\n+        this.setQosAcceptForeignIp(qosAcceptForeignIp);\r\n+    }\r\n+\r\n+    public Map<String, String> getParameters() {\r\n+        return parameters;\r\n+    }\r\n+\r\n+    public void setParameters(Map<String, String> parameters) {\r\n+        this.parameters = parameters;\r\n+    }\r\n+\r\n+    public String getShutwait() {\r\n+        return shutwait;\r\n+    }\r\n+\r\n+    public void setShutwait(String shutwait) {\r\n+        System.setProperty(SHUTDOWN_WAIT_KEY, shutwait);\r\n+        this.shutwait = shutwait;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getHostname() {\r\n+        if (hostname == null) {\r\n+            try {\r\n+                hostname = InetAddress.getLocalHost().getHostName();\r\n+            } catch (UnknownHostException e) {\r\n+                LOGGER.warn(\"Failed to get the hostname of current instance.\", e);\r\n+                hostname = \"UNKNOWN\";\r\n+            }\r\n+        }\r\n+        return hostname;\r\n+    }\r\n+\r\n+    @Override\r\n+    @Parameter(excluded = true)\r\n+    public boolean isValid() {\r\n+        return !StringUtils.isEmpty(name);\r\n+    }\r\n+\r\n+    @Parameter(key = METADATA_KEY)\r\n+    public String getMetadataType() {\r\n+        return metadataType;\r\n+    }\r\n+\r\n+    public void setMetadataType(String metadataType) {\r\n+        this.metadataType = metadataType;\r\n+    }\r\n+\r\n+    public Boolean getRegisterConsumer() {\r\n+        return registerConsumer;\r\n+    }\r\n+\r\n+    public void setRegisterConsumer(Boolean registerConsumer) {\r\n+        this.registerConsumer = registerConsumer;\r\n+    }\r\n+\r\n+    public String getRepository() {\r\n+        return repository;\r\n+    }\r\n+\r\n+    public void setRepository(String repository) {\r\n+        this.repository = repository;\r\n+    }\r\n+\r\n+    @Parameter(key = REGISTRY_PUBLISH_INTERFACE_KEY)\r\n+    public Boolean getPublishInterface() {\r\n+        return publishInterface;\r\n+    }\r\n+\r\n+    public void setPublishInterface(Boolean publishInterface) {\r\n+        this.publishInterface = publishInterface;\r\n+    }\r\n+\r\n+    @Parameter(key = \"metadata-service-port\")\r\n+    public Integer getMetadataServicePort() {\r\n+        return metadataServicePort;\r\n+    }\r\n+\r\n+    public void setMetadataServicePort(Integer metadataServicePort) {\r\n+        this.metadataServicePort = metadataServicePort;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void refresh() {\r\n+        super.refresh();\r\n+        appendEnvironmentProperties();\r\n+    }\r\n+\r\n+    private void appendEnvironmentProperties() {\r\n+        if (parameters == null) {\r\n+            parameters = new HashMap<>();\r\n+        }\r\n+\r\n+        Set<InfraAdapter> adapters = ExtensionLoader.getExtensionLoader(InfraAdapter.class).getSupportedExtensionInstances();\r\n+        if (CollectionUtils.isNotEmpty(adapters)) {\r\n+            Map<String, String> inputParameters = new HashMap<>();\r\n+            inputParameters.put(APPLICATION_KEY, getName());\r\n+            inputParameters.put(HOST_KEY, getHostname());\r\n+            for (InfraAdapter adapter : adapters) {\r\n+                Map<String, String> extraParameters = adapter.getExtraAttributes(inputParameters);\r\n+                if (CollectionUtils.isNotEmptyMap(extraParameters)) {\r\n+                    extraParameters.forEach((key, value) -> {\r\n+                        String prefix = this.getPrefix() + \".\";\r\n+                        if (key.startsWith(prefix)) {\r\n+                            key = key.substring(prefix.length());\r\n+                        }\r\n+                        parameters.put(key, value);\r\n+                    });\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/ArgumentConfig.java", "source2": "org/apache/dubbo/config/ArgumentConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,83 +1,83 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.config.annotation.Argument;\n-import org.apache.dubbo.config.support.Parameter;\n-\n-import java.io.Serializable;\n-\n-/**\n- * The method arguments configuration\n- *\n- * @export\n- */\n-public class ArgumentConfig implements Serializable {\n-\n-    private static final long serialVersionUID = -2165482463925213595L;\n-\n-    /**\n-     * The argument index: index -1 represents not set\n-     */\n-    private Integer index = -1;\n-\n-    /**\n-     * Argument type\n-     */\n-    private String type;\n-\n-    /**\n-     * Whether the argument is the callback interface\n-     */\n-    private Boolean callback;\n-\n-    public ArgumentConfig() {\n-    }\n-\n-    public ArgumentConfig(Argument argument) {\n-        this.index = argument.index();\n-        this.type = argument.type();\n-        this.callback = argument.callback();\n-    }\n-\n-    @Parameter(excluded = true)\n-    public Integer getIndex() {\n-        return index;\n-    }\n-\n-    public void setIndex(Integer index) {\n-        this.index = index;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getType() {\n-        return type;\n-    }\n-\n-    public void setType(String type) {\n-        this.type = type;\n-    }\n-\n-    public void setCallback(Boolean callback) {\n-        this.callback = callback;\n-    }\n-\n-    public Boolean isCallback() {\n-        return callback;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.config.annotation.Argument;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+\r\n+import java.io.Serializable;\r\n+\r\n+/**\r\n+ * The method arguments configuration\r\n+ *\r\n+ * @export\r\n+ */\r\n+public class ArgumentConfig implements Serializable {\r\n+\r\n+    private static final long serialVersionUID = -2165482463925213595L;\r\n+\r\n+    /**\r\n+     * The argument index: index -1 represents not set\r\n+     */\r\n+    private Integer index = -1;\r\n+\r\n+    /**\r\n+     * Argument type\r\n+     */\r\n+    private String type;\r\n+\r\n+    /**\r\n+     * Whether the argument is the callback interface\r\n+     */\r\n+    private Boolean callback;\r\n+\r\n+    public ArgumentConfig() {\r\n+    }\r\n+\r\n+    public ArgumentConfig(Argument argument) {\r\n+        this.index = argument.index();\r\n+        this.type = argument.type();\r\n+        this.callback = argument.callback();\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public Integer getIndex() {\r\n+        return index;\r\n+    }\r\n+\r\n+    public void setIndex(Integer index) {\r\n+        this.index = index;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getType() {\r\n+        return type;\r\n+    }\r\n+\r\n+    public void setType(String type) {\r\n+        this.type = type;\r\n+    }\r\n+\r\n+    public void setCallback(Boolean callback) {\r\n+        this.callback = callback;\r\n+    }\r\n+\r\n+    public Boolean isCallback() {\r\n+        return callback;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/ConfigCenterConfig.java", "source2": "org/apache/dubbo/config/ConfigCenterConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,289 +1,289 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.constants.CommonConstants;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.common.utils.UrlUtils;\n-import org.apache.dubbo.config.support.Parameter;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.concurrent.atomic.AtomicBoolean;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_VALUE;\n-import static org.apache.dubbo.common.constants.CommonConstants.CONFIG_CONFIGFILE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.CONFIG_ENABLE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\n-import static org.apache.dubbo.config.Constants.CONFIG_APP_CONFIGFILE_KEY;\n-import static org.apache.dubbo.config.Constants.ZOOKEEPER_PROTOCOL;\n-\n-/**\n- * ConfigCenterConfig\n- */\n-public class ConfigCenterConfig extends AbstractConfig {\n-    private AtomicBoolean inited = new AtomicBoolean(false);\n-\n-    private String protocol;\n-    private String address;\n-    private Integer port;\n-\n-    /* The config center cluster, it's real meaning may very on different Config Center products. */\n-    private String cluster;\n-\n-    /* The namespace of the config center, generally it's used for multi-tenant,\n-    but it's real meaning depends on the actual Config Center you use.\n-    */\n-\n-    private String namespace = CommonConstants.DUBBO;\n-    /* The group of the config center, generally it's used to identify an isolated space for a batch of config items,\n-    but it's real meaning depends on the actual Config Center you use.\n-    */\n-    private String group = CommonConstants.DUBBO;\n-    private String username;\n-    private String password;\n-    private Long timeout = 3000L;\n-\n-    // If the Config Center is given the highest priority, it will override all the other configurations\n-    private Boolean highestPriority = true;\n-\n-    // Decide the behaviour when initial connection try fails, 'true' means interrupt the whole process once fail.\n-    private Boolean check = true;\n-\n-    /* Used to specify the key that your properties file mapping to, most of the time you do not need to change this parameter.\n-    Notice that for Apollo, this parameter is meaningless, set the 'namespace' is enough.\n-    */\n-    private String configFile = CommonConstants.DEFAULT_DUBBO_PROPERTIES;\n-\n-    /* the .properties file under 'configFile' is global shared while .properties under this one is limited only to this application\n-     */\n-    private String appConfigFile;\n-\n-    /* If the Config Center product you use have some special parameters that is not covered by this class, you can add it to here.\n-    For example, with XML:\n-      <dubbo:config-center>\n-           <dubbo:parameter key=\"{your key}\" value=\"{your value}\" />\n-      </dubbo:config-center>\n-     */\n-    private Map<String, String> parameters;\n-\n-    private Map<String, String> externalConfiguration;\n-\n-    private Map<String, String> appExternalConfiguration;\n-\n-    public ConfigCenterConfig() {\n-    }\n-\n-    public URL toUrl() {\n-        Map<String, String> map = new HashMap<>();\n-        appendParameters(map, this);\n-        if (StringUtils.isEmpty(address)) {\n-            address = ANYHOST_VALUE;\n-        }\n-        map.put(PATH_KEY, ConfigCenterConfig.class.getSimpleName());\n-        // use 'zookeeper' as the default configcenter.\n-        if (StringUtils.isEmpty(map.get(PROTOCOL_KEY))) {\n-            map.put(PROTOCOL_KEY, ZOOKEEPER_PROTOCOL);\n-        }\n-        return UrlUtils.parseURL(address, map);\n-    }\n-\n-    public boolean checkOrUpdateInited() {\n-        return inited.compareAndSet(false, true);\n-    }\n-\n-    public Map<String, String> getExternalConfiguration() {\n-        return externalConfiguration;\n-    }\n-\n-    public Map<String, String> getAppExternalConfiguration() {\n-        return appExternalConfiguration;\n-    }\n-\n-    public void setExternalConfig(Map<String, String> externalConfiguration) {\n-        this.externalConfiguration = externalConfiguration;\n-    }\n-\n-    public void setAppExternalConfig(Map<String, String> appExternalConfiguration) {\n-        this.appExternalConfiguration = appExternalConfiguration;\n-    }\n-\n-    public String getProtocol() {\n-        return protocol;\n-    }\n-\n-    public void setProtocol(String protocol) {\n-        this.protocol = protocol;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getAddress() {\n-        return address;\n-    }\n-\n-    public void setAddress(String address) {\n-        this.address = address;\n-        if (address != null) {\n-            try {\n-                URL url = URL.valueOf(address);\n-                setUsername(url.getUsername());\n-                setPassword(url.getPassword());\n-                updateIdIfAbsent(url.getProtocol());\n-                updateProtocolIfAbsent(url.getProtocol());\n-                updatePortIfAbsent(url.getPort());\n-                updateParameters(url.getParameters());\n-            } catch (Exception ignored) {\n-            }\n-        }\n-    }\n-\n-    public Integer getPort() {\n-        return port;\n-    }\n-\n-    public void setPort(Integer port) {\n-        this.port = port;\n-    }\n-\n-    public String getCluster() {\n-        return cluster;\n-    }\n-\n-    public void setCluster(String cluster) {\n-        this.cluster = cluster;\n-    }\n-\n-    public String getNamespace() {\n-        return namespace;\n-    }\n-\n-    public void setNamespace(String namespace) {\n-        this.namespace = namespace;\n-    }\n-\n-    public String getGroup() {\n-        return group;\n-    }\n-\n-    public void setGroup(String group) {\n-        this.group = group;\n-    }\n-\n-    public Boolean isCheck() {\n-        return check;\n-    }\n-\n-    public void setCheck(Boolean check) {\n-        this.check = check;\n-    }\n-\n-    @Parameter(key = CONFIG_ENABLE_KEY)\n-    public Boolean isHighestPriority() {\n-        return highestPriority;\n-    }\n-\n-    public void setHighestPriority(Boolean highestPriority) {\n-        this.highestPriority = highestPriority;\n-    }\n-\n-    public String getUsername() {\n-        return username;\n-    }\n-\n-    public void setUsername(String username) {\n-        this.username = username;\n-    }\n-\n-    public String getPassword() {\n-        return password;\n-    }\n-\n-    public void setPassword(String password) {\n-        this.password = password;\n-    }\n-\n-    public Long getTimeout() {\n-        return timeout;\n-    }\n-\n-    public void setTimeout(Long timeout) {\n-        this.timeout = timeout;\n-    }\n-\n-    @Parameter(key = CONFIG_CONFIGFILE_KEY)\n-    public String getConfigFile() {\n-        return configFile;\n-    }\n-\n-    public void setConfigFile(String configFile) {\n-        this.configFile = configFile;\n-    }\n-\n-    @Parameter(excluded = true, key = CONFIG_APP_CONFIGFILE_KEY)\n-    public String getAppConfigFile() {\n-        return appConfigFile;\n-    }\n-\n-    public void setAppConfigFile(String appConfigFile) {\n-        this.appConfigFile = appConfigFile;\n-    }\n-\n-    public Map<String, String> getParameters() {\n-        return parameters;\n-    }\n-\n-    public void setParameters(Map<String, String> parameters) {\n-        this.parameters = parameters;\n-    }\n-\n-    @Override\n-    @Parameter(excluded = true)\n-    public boolean isValid() {\n-        if (StringUtils.isEmpty(address)) {\n-            return false;\n-        }\n-\n-        return address.contains(\"://\") || StringUtils.isNotEmpty(protocol);\n-    }\n-\n-    protected void updatePortIfAbsent(Integer value) {\n-        if (value != null && value > 0 && port == null) {\n-            this.port = value;\n-        }\n-    }\n-\n-    protected void updateProtocolIfAbsent(String value) {\n-        if (StringUtils.isNotEmpty(value) && StringUtils.isEmpty(protocol)) {\n-            this.protocol = value;\n-        }\n-    }\n-\n-    public void updateParameters(Map<String, String> parameters) {\n-        if (CollectionUtils.isEmptyMap(parameters)) {\n-            return;\n-        }\n-        if (this.parameters == null) {\n-            this.parameters = parameters;\n-        } else {\n-            this.parameters.putAll(parameters);\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.constants.CommonConstants;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.common.utils.UrlUtils;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_VALUE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONFIG_CONFIGFILE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONFIG_ENABLE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\r\n+import static org.apache.dubbo.config.Constants.CONFIG_APP_CONFIGFILE_KEY;\r\n+import static org.apache.dubbo.config.Constants.ZOOKEEPER_PROTOCOL;\r\n+\r\n+/**\r\n+ * ConfigCenterConfig\r\n+ */\r\n+public class ConfigCenterConfig extends AbstractConfig {\r\n+    private AtomicBoolean inited = new AtomicBoolean(false);\r\n+\r\n+    private String protocol;\r\n+    private String address;\r\n+    private Integer port;\r\n+\r\n+    /* The config center cluster, it's real meaning may very on different Config Center products. */\r\n+    private String cluster;\r\n+\r\n+    /* The namespace of the config center, generally it's used for multi-tenant,\r\n+    but it's real meaning depends on the actual Config Center you use.\r\n+    */\r\n+\r\n+    private String namespace = CommonConstants.DUBBO;\r\n+    /* The group of the config center, generally it's used to identify an isolated space for a batch of config items,\r\n+    but it's real meaning depends on the actual Config Center you use.\r\n+    */\r\n+    private String group = CommonConstants.DUBBO;\r\n+    private String username;\r\n+    private String password;\r\n+    private Long timeout = 3000L;\r\n+\r\n+    // If the Config Center is given the highest priority, it will override all the other configurations\r\n+    private Boolean highestPriority = true;\r\n+\r\n+    // Decide the behaviour when initial connection try fails, 'true' means interrupt the whole process once fail.\r\n+    private Boolean check = true;\r\n+\r\n+    /* Used to specify the key that your properties file mapping to, most of the time you do not need to change this parameter.\r\n+    Notice that for Apollo, this parameter is meaningless, set the 'namespace' is enough.\r\n+    */\r\n+    private String configFile = CommonConstants.DEFAULT_DUBBO_PROPERTIES;\r\n+\r\n+    /* the .properties file under 'configFile' is global shared while .properties under this one is limited only to this application\r\n+     */\r\n+    private String appConfigFile;\r\n+\r\n+    /* If the Config Center product you use have some special parameters that is not covered by this class, you can add it to here.\r\n+    For example, with XML:\r\n+      <dubbo:config-center>\r\n+           <dubbo:parameter key=\"{your key}\" value=\"{your value}\" />\r\n+      </dubbo:config-center>\r\n+     */\r\n+    private Map<String, String> parameters;\r\n+\r\n+    private Map<String, String> externalConfiguration;\r\n+\r\n+    private Map<String, String> appExternalConfiguration;\r\n+\r\n+    public ConfigCenterConfig() {\r\n+    }\r\n+\r\n+    public URL toUrl() {\r\n+        Map<String, String> map = new HashMap<>();\r\n+        appendParameters(map, this);\r\n+        if (StringUtils.isEmpty(address)) {\r\n+            address = ANYHOST_VALUE;\r\n+        }\r\n+        map.put(PATH_KEY, ConfigCenterConfig.class.getSimpleName());\r\n+        // use 'zookeeper' as the default configcenter.\r\n+        if (StringUtils.isEmpty(map.get(PROTOCOL_KEY))) {\r\n+            map.put(PROTOCOL_KEY, ZOOKEEPER_PROTOCOL);\r\n+        }\r\n+        return UrlUtils.parseURL(address, map);\r\n+    }\r\n+\r\n+    public boolean checkOrUpdateInited() {\r\n+        return inited.compareAndSet(false, true);\r\n+    }\r\n+\r\n+    public Map<String, String> getExternalConfiguration() {\r\n+        return externalConfiguration;\r\n+    }\r\n+\r\n+    public Map<String, String> getAppExternalConfiguration() {\r\n+        return appExternalConfiguration;\r\n+    }\r\n+\r\n+    public void setExternalConfig(Map<String, String> externalConfiguration) {\r\n+        this.externalConfiguration = externalConfiguration;\r\n+    }\r\n+\r\n+    public void setAppExternalConfig(Map<String, String> appExternalConfiguration) {\r\n+        this.appExternalConfiguration = appExternalConfiguration;\r\n+    }\r\n+\r\n+    public String getProtocol() {\r\n+        return protocol;\r\n+    }\r\n+\r\n+    public void setProtocol(String protocol) {\r\n+        this.protocol = protocol;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getAddress() {\r\n+        return address;\r\n+    }\r\n+\r\n+    public void setAddress(String address) {\r\n+        this.address = address;\r\n+        if (address != null) {\r\n+            try {\r\n+                URL url = URL.valueOf(address);\r\n+                setUsername(url.getUsername());\r\n+                setPassword(url.getPassword());\r\n+                updateIdIfAbsent(url.getProtocol());\r\n+                updateProtocolIfAbsent(url.getProtocol());\r\n+                updatePortIfAbsent(url.getPort());\r\n+                updateParameters(url.getParameters());\r\n+            } catch (Exception ignored) {\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public Integer getPort() {\r\n+        return port;\r\n+    }\r\n+\r\n+    public void setPort(Integer port) {\r\n+        this.port = port;\r\n+    }\r\n+\r\n+    public String getCluster() {\r\n+        return cluster;\r\n+    }\r\n+\r\n+    public void setCluster(String cluster) {\r\n+        this.cluster = cluster;\r\n+    }\r\n+\r\n+    public String getNamespace() {\r\n+        return namespace;\r\n+    }\r\n+\r\n+    public void setNamespace(String namespace) {\r\n+        this.namespace = namespace;\r\n+    }\r\n+\r\n+    public String getGroup() {\r\n+        return group;\r\n+    }\r\n+\r\n+    public void setGroup(String group) {\r\n+        this.group = group;\r\n+    }\r\n+\r\n+    public Boolean isCheck() {\r\n+        return check;\r\n+    }\r\n+\r\n+    public void setCheck(Boolean check) {\r\n+        this.check = check;\r\n+    }\r\n+\r\n+    @Parameter(key = CONFIG_ENABLE_KEY)\r\n+    public Boolean isHighestPriority() {\r\n+        return highestPriority;\r\n+    }\r\n+\r\n+    public void setHighestPriority(Boolean highestPriority) {\r\n+        this.highestPriority = highestPriority;\r\n+    }\r\n+\r\n+    public String getUsername() {\r\n+        return username;\r\n+    }\r\n+\r\n+    public void setUsername(String username) {\r\n+        this.username = username;\r\n+    }\r\n+\r\n+    public String getPassword() {\r\n+        return password;\r\n+    }\r\n+\r\n+    public void setPassword(String password) {\r\n+        this.password = password;\r\n+    }\r\n+\r\n+    public Long getTimeout() {\r\n+        return timeout;\r\n+    }\r\n+\r\n+    public void setTimeout(Long timeout) {\r\n+        this.timeout = timeout;\r\n+    }\r\n+\r\n+    @Parameter(key = CONFIG_CONFIGFILE_KEY)\r\n+    public String getConfigFile() {\r\n+        return configFile;\r\n+    }\r\n+\r\n+    public void setConfigFile(String configFile) {\r\n+        this.configFile = configFile;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true, key = CONFIG_APP_CONFIGFILE_KEY)\r\n+    public String getAppConfigFile() {\r\n+        return appConfigFile;\r\n+    }\r\n+\r\n+    public void setAppConfigFile(String appConfigFile) {\r\n+        this.appConfigFile = appConfigFile;\r\n+    }\r\n+\r\n+    public Map<String, String> getParameters() {\r\n+        return parameters;\r\n+    }\r\n+\r\n+    public void setParameters(Map<String, String> parameters) {\r\n+        this.parameters = parameters;\r\n+    }\r\n+\r\n+    @Override\r\n+    @Parameter(excluded = true)\r\n+    public boolean isValid() {\r\n+        if (StringUtils.isEmpty(address)) {\r\n+            return false;\r\n+        }\r\n+\r\n+        return address.contains(\"://\") || StringUtils.isNotEmpty(protocol);\r\n+    }\r\n+\r\n+    protected void updatePortIfAbsent(Integer value) {\r\n+        if (value != null && value > 0 && port == null) {\r\n+            this.port = value;\r\n+        }\r\n+    }\r\n+\r\n+    protected void updateProtocolIfAbsent(String value) {\r\n+        if (StringUtils.isNotEmpty(value) && StringUtils.isEmpty(protocol)) {\r\n+            this.protocol = value;\r\n+        }\r\n+    }\r\n+\r\n+    public void updateParameters(Map<String, String> parameters) {\r\n+        if (CollectionUtils.isEmptyMap(parameters)) {\r\n+            return;\r\n+        }\r\n+        if (this.parameters == null) {\r\n+            this.parameters = parameters;\r\n+        } else {\r\n+            this.parameters.putAll(parameters);\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/Constants.java", "source2": "org/apache/dubbo/config/Constants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,120 +1,120 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.config;\n-\n-/**\n- *\n- */\n-public interface Constants {\n-\n-    String STATUS_KEY = \"status\";\n-\n-    String CONTEXTPATH_KEY = \"contextpath\";\n-\n-    String LISTENER_KEY = \"listener\";\n-\n-    String LAYER_KEY = \"layer\";\n-\n-    /**\n-     * General\n-     */\n-    /**\n-     * Application name;\n-     */\n-    String NAME = \"name\";\n-\n-    /**\n-     * Application owner name;\n-     */\n-    String OWNER = \"owner\";\n-\n-    /**\n-     * Running application organization name.\n-     */\n-    String ORGANIZATION = \"organization\";\n-\n-    /**\n-     * Application architecture name.\n-     */\n-    String ARCHITECTURE = \"architecture\";\n-\n-    /**\n-     * Environment name\n-     */\n-    String ENVIRONMENT = \"environment\";\n-\n-    /**\n-     * Test environment key.\n-     */\n-    String TEST_ENVIRONMENT = \"test\";\n-\n-    /**\n-     * Development environment key.\n-     */\n-    String DEVELOPMENT_ENVIRONMENT = \"develop\";\n-\n-    /**\n-     * Production environment key.\n-     */\n-    String PRODUCTION_ENVIRONMENT = \"product\";\n-\n-    String CONFIG_CONFIGFILE_KEY = \"config-file\";\n-    String CONFIG_ENABLE_KEY = \"highest-priority\";\n-    String CONFIG_APP_CONFIGFILE_KEY = \"app-config-file\";\n-\n-    String MULTICAST = \"multicast\";\n-\n-\n-    String DUBBO_IP_TO_REGISTRY = \"DUBBO_IP_TO_REGISTRY\";\n-\n-    String DUBBO_PORT_TO_REGISTRY = \"DUBBO_PORT_TO_REGISTRY\";\n-\n-\n-    String DUBBO_PORT_TO_BIND = \"DUBBO_PORT_TO_BIND\";\n-\n-    String SCOPE_NONE = \"none\";\n-\n-\n-    String ON_INVOKE_METHOD_KEY = \"oninvoke.method\";\n-\n-    String ON_RETURN_METHOD_KEY = \"onreturn.method\";\n-\n-    String ON_THROW_METHOD_KEY = \"onthrow.method\";\n-\n-    String ON_INVOKE_INSTANCE_KEY = \"oninvoke.instance\";\n-\n-    String ON_RETURN_INSTANCE_KEY = \"onreturn.instance\";\n-\n-    String ON_THROW_INSTANCE_KEY = \"onthrow.instance\";\n-\n-\n-    // FIXME: is this still useful?\n-    String SHUTDOWN_TIMEOUT_KEY = \"shutdown.timeout\";\n-\n-\n-    String PROTOCOLS_SUFFIX = \"dubbo.protocols.\";\n-\n-\n-    String REGISTRIES_SUFFIX = \"dubbo.registries.\";\n-\n-    String ZOOKEEPER_PROTOCOL = \"zookeeper\";\n-\n-    String REGISTER_KEY = \"register\";\n-\n-    String IGNORE_CHECK_KEYS = \"ignoreCheckKeys\";\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.config;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+public interface Constants {\r\n+\r\n+    String STATUS_KEY = \"status\";\r\n+\r\n+    String CONTEXTPATH_KEY = \"contextpath\";\r\n+\r\n+    String LISTENER_KEY = \"listener\";\r\n+\r\n+    String LAYER_KEY = \"layer\";\r\n+\r\n+    /**\r\n+     * General\r\n+     */\r\n+    /**\r\n+     * Application name;\r\n+     */\r\n+    String NAME = \"name\";\r\n+\r\n+    /**\r\n+     * Application owner name;\r\n+     */\r\n+    String OWNER = \"owner\";\r\n+\r\n+    /**\r\n+     * Running application organization name.\r\n+     */\r\n+    String ORGANIZATION = \"organization\";\r\n+\r\n+    /**\r\n+     * Application architecture name.\r\n+     */\r\n+    String ARCHITECTURE = \"architecture\";\r\n+\r\n+    /**\r\n+     * Environment name\r\n+     */\r\n+    String ENVIRONMENT = \"environment\";\r\n+\r\n+    /**\r\n+     * Test environment key.\r\n+     */\r\n+    String TEST_ENVIRONMENT = \"test\";\r\n+\r\n+    /**\r\n+     * Development environment key.\r\n+     */\r\n+    String DEVELOPMENT_ENVIRONMENT = \"develop\";\r\n+\r\n+    /**\r\n+     * Production environment key.\r\n+     */\r\n+    String PRODUCTION_ENVIRONMENT = \"product\";\r\n+\r\n+    String CONFIG_CONFIGFILE_KEY = \"config-file\";\r\n+    String CONFIG_ENABLE_KEY = \"highest-priority\";\r\n+    String CONFIG_APP_CONFIGFILE_KEY = \"app-config-file\";\r\n+\r\n+    String MULTICAST = \"multicast\";\r\n+\r\n+\r\n+    String DUBBO_IP_TO_REGISTRY = \"DUBBO_IP_TO_REGISTRY\";\r\n+\r\n+    String DUBBO_PORT_TO_REGISTRY = \"DUBBO_PORT_TO_REGISTRY\";\r\n+\r\n+\r\n+    String DUBBO_PORT_TO_BIND = \"DUBBO_PORT_TO_BIND\";\r\n+\r\n+    String SCOPE_NONE = \"none\";\r\n+\r\n+\r\n+    String ON_INVOKE_METHOD_KEY = \"oninvoke.method\";\r\n+\r\n+    String ON_RETURN_METHOD_KEY = \"onreturn.method\";\r\n+\r\n+    String ON_THROW_METHOD_KEY = \"onthrow.method\";\r\n+\r\n+    String ON_INVOKE_INSTANCE_KEY = \"oninvoke.instance\";\r\n+\r\n+    String ON_RETURN_INSTANCE_KEY = \"onreturn.instance\";\r\n+\r\n+    String ON_THROW_INSTANCE_KEY = \"onthrow.instance\";\r\n+\r\n+\r\n+    // FIXME: is this still useful?\r\n+    String SHUTDOWN_TIMEOUT_KEY = \"shutdown.timeout\";\r\n+\r\n+\r\n+    String PROTOCOLS_SUFFIX = \"dubbo.protocols.\";\r\n+\r\n+\r\n+    String REGISTRIES_SUFFIX = \"dubbo.registries.\";\r\n+\r\n+    String ZOOKEEPER_PROTOCOL = \"zookeeper\";\r\n+\r\n+    String REGISTER_KEY = \"register\";\r\n+\r\n+    String IGNORE_CHECK_KEYS = \"ignoreCheckKeys\";\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/ConsumerConfig.java", "source2": "org/apache/dubbo/config/ConsumerConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,135 +1,135 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-/**\n- * The service consumer default configuration\n- *\n- * @export\n- */\n-public class ConsumerConfig extends AbstractReferenceConfig {\n-\n-    private static final long serialVersionUID = 2827274711143680600L;\n-\n-    /**\n-     * Whether to use the default protocol\n-     */\n-    private Boolean isDefault;\n-\n-    /**\n-     * Networking framework client uses: netty, mina, etc.\n-     */\n-    private String client;\n-\n-    /**\n-     * Consumer thread pool type: cached, fixed, limit, eager\n-     */\n-    private String threadpool;\n-\n-    /**\n-     * Consumer threadpool core thread size\n-     */\n-    private Integer corethreads;\n-\n-    /**\n-     * Consumer threadpool thread size\n-     */\n-    private Integer threads;\n-\n-    /**\n-     * Consumer threadpool queue size\n-     */\n-    private Integer queues;\n-\n-    /**\n-     * By default, a TCP long-connection communication is shared between the consumer process and the provider process.\n-     * This property can be set to share multiple TCP long-connection communications. Note that only the dubbo protocol takes effect.\n-     */\n-    private Integer shareconnections;\n-\n-    @Override\n-    public void setTimeout(Integer timeout) {\n-        super.setTimeout(timeout);\n-        String rmiTimeout = System.getProperty(\"sun.rmi.transport.tcp.responseTimeout\");\n-        if (timeout != null && timeout > 0\n-                && (StringUtils.isEmpty(rmiTimeout))) {\n-            System.setProperty(\"sun.rmi.transport.tcp.responseTimeout\", String.valueOf(timeout));\n-        }\n-    }\n-\n-    public Boolean isDefault() {\n-        return isDefault;\n-    }\n-\n-    public String getClient() {\n-        return client;\n-    }\n-\n-    public void setClient(String client) {\n-        this.client = client;\n-    }\n-\n-    public String getThreadpool() {\n-        return threadpool;\n-    }\n-\n-    public void setThreadpool(String threadpool) {\n-        this.threadpool = threadpool;\n-    }\n-\n-    public Boolean getDefault() {\n-        return isDefault;\n-    }\n-\n-    public void setDefault(Boolean isDefault) {\n-        this.isDefault = isDefault;\n-    }\n-\n-    public Integer getCorethreads() {\n-        return corethreads;\n-    }\n-\n-    public void setCorethreads(Integer corethreads) {\n-        this.corethreads = corethreads;\n-    }\n-\n-    public Integer getThreads() {\n-        return threads;\n-    }\n-\n-    public void setThreads(Integer threads) {\n-        this.threads = threads;\n-    }\n-\n-    public Integer getQueues() {\n-        return queues;\n-    }\n-\n-    public void setQueues(Integer queues) {\n-        this.queues = queues;\n-    }\n-\n-    public Integer getShareconnections() {\n-        return shareconnections;\n-    }\n-\n-    public void setShareconnections(Integer shareconnections) {\n-        this.shareconnections = shareconnections;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+/**\r\n+ * The service consumer default configuration\r\n+ *\r\n+ * @export\r\n+ */\r\n+public class ConsumerConfig extends AbstractReferenceConfig {\r\n+\r\n+    private static final long serialVersionUID = 2827274711143680600L;\r\n+\r\n+    /**\r\n+     * Whether to use the default protocol\r\n+     */\r\n+    private Boolean isDefault;\r\n+\r\n+    /**\r\n+     * Networking framework client uses: netty, mina, etc.\r\n+     */\r\n+    private String client;\r\n+\r\n+    /**\r\n+     * Consumer thread pool type: cached, fixed, limit, eager\r\n+     */\r\n+    private String threadpool;\r\n+\r\n+    /**\r\n+     * Consumer threadpool core thread size\r\n+     */\r\n+    private Integer corethreads;\r\n+\r\n+    /**\r\n+     * Consumer threadpool thread size\r\n+     */\r\n+    private Integer threads;\r\n+\r\n+    /**\r\n+     * Consumer threadpool queue size\r\n+     */\r\n+    private Integer queues;\r\n+\r\n+    /**\r\n+     * By default, a TCP long-connection communication is shared between the consumer process and the provider process.\r\n+     * This property can be set to share multiple TCP long-connection communications. Note that only the dubbo protocol takes effect.\r\n+     */\r\n+    private Integer shareconnections;\r\n+\r\n+    @Override\r\n+    public void setTimeout(Integer timeout) {\r\n+        super.setTimeout(timeout);\r\n+        String rmiTimeout = System.getProperty(\"sun.rmi.transport.tcp.responseTimeout\");\r\n+        if (timeout != null && timeout > 0\r\n+                && (StringUtils.isEmpty(rmiTimeout))) {\r\n+            System.setProperty(\"sun.rmi.transport.tcp.responseTimeout\", String.valueOf(timeout));\r\n+        }\r\n+    }\r\n+\r\n+    public Boolean isDefault() {\r\n+        return isDefault;\r\n+    }\r\n+\r\n+    public String getClient() {\r\n+        return client;\r\n+    }\r\n+\r\n+    public void setClient(String client) {\r\n+        this.client = client;\r\n+    }\r\n+\r\n+    public String getThreadpool() {\r\n+        return threadpool;\r\n+    }\r\n+\r\n+    public void setThreadpool(String threadpool) {\r\n+        this.threadpool = threadpool;\r\n+    }\r\n+\r\n+    public Boolean getDefault() {\r\n+        return isDefault;\r\n+    }\r\n+\r\n+    public void setDefault(Boolean isDefault) {\r\n+        this.isDefault = isDefault;\r\n+    }\r\n+\r\n+    public Integer getCorethreads() {\r\n+        return corethreads;\r\n+    }\r\n+\r\n+    public void setCorethreads(Integer corethreads) {\r\n+        this.corethreads = corethreads;\r\n+    }\r\n+\r\n+    public Integer getThreads() {\r\n+        return threads;\r\n+    }\r\n+\r\n+    public void setThreads(Integer threads) {\r\n+        this.threads = threads;\r\n+    }\r\n+\r\n+    public Integer getQueues() {\r\n+        return queues;\r\n+    }\r\n+\r\n+    public void setQueues(Integer queues) {\r\n+        this.queues = queues;\r\n+    }\r\n+\r\n+    public Integer getShareconnections() {\r\n+        return shareconnections;\r\n+    }\r\n+\r\n+    public void setShareconnections(Integer shareconnections) {\r\n+        this.shareconnections = shareconnections;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/MetadataReportConfig.java", "source2": "org/apache/dubbo/config/MetadataReportConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,227 +1,227 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.support.Parameter;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROPERTIES_CHAR_SEPARATOR;\n-import static org.apache.dubbo.common.utils.StringUtils.isEmpty;\n-\n-/**\n- * MetadataReportConfig\n- *\n- * @export\n- */\n-public class MetadataReportConfig extends AbstractConfig {\n-\n-    private static final long serialVersionUID = 55233L;\n-    /**\n-     * the value is : metadata-report\n-     */\n-    private static final String PREFIX_TAG = StringUtils.camelToSplitName(\n-            MetadataReportConfig.class.getSimpleName().substring(0, MetadataReportConfig.class.getSimpleName().length() - 6), PROPERTIES_CHAR_SEPARATOR);\n-\n-    // Register center address\n-    private String address;\n-\n-    // Username to login register center\n-    private String username;\n-\n-    // Password to login register center\n-    private String password;\n-\n-    // Request timeout in milliseconds for register center\n-    private Integer timeout;\n-\n-    /**\n-     * The group the metadata in . It is the same as registry\n-     */\n-    private String group;\n-\n-    // Customized parameters\n-    private Map<String, String> parameters;\n-\n-    private Integer retryTimes;\n-\n-    private Integer retryPeriod;\n-    /**\n-     * By default the metadatastore will store full metadata repeatedly every day .\n-     */\n-    private Boolean cycleReport;\n-\n-    /**\n-     * Sync report, default async\n-     */\n-    private Boolean syncReport;\n-\n-    /**\n-     * cluster\n-     */\n-    private Boolean cluster;\n-\n-    /**\n-     * registry id\n-     */\n-    private String registry;\n-\n-    public MetadataReportConfig() {\n-    }\n-\n-    public MetadataReportConfig(String address) {\n-        setAddress(address);\n-    }\n-\n-    public URL toUrl() throws IllegalArgumentException {\n-        String address = this.getAddress();\n-        if (isEmpty(address)) {\n-            throw new IllegalArgumentException(\"The address of metadata report is invalid.\");\n-        }\n-        Map<String, String> map = new HashMap<String, String>();\n-        URL url = URL.valueOf(address);\n-        // Issue : https://github.com/apache/dubbo/issues/6491\n-        // Append the parameters from address\n-        map.putAll(url.getParameters());\n-        // Append or overrides the properties as parameters\n-        appendParameters(map, this);\n-        // Normalize the parameters\n-        map.putAll(convert(map, null));\n-        // put the protocol of URL as the \"metadata\"\n-        map.put(\"metadata\", url.getProtocol());\n-        return new URL(\"metadata\", url.getUsername(), url.getPassword(), url.getHost(),\n-                url.getPort(), url.getPath(), map);\n-\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getAddress() {\n-        return address;\n-    }\n-\n-    public void setAddress(String address) {\n-        this.address = address;\n-    }\n-\n-    public String getUsername() {\n-        return username;\n-    }\n-\n-    public void setUsername(String username) {\n-        this.username = username;\n-    }\n-\n-    public String getPassword() {\n-        return password;\n-    }\n-\n-    public void setPassword(String password) {\n-        this.password = password;\n-    }\n-\n-    public Integer getTimeout() {\n-        return timeout;\n-    }\n-\n-    public void setTimeout(Integer timeout) {\n-        this.timeout = timeout;\n-    }\n-\n-    public Map<String, String> getParameters() {\n-        return parameters;\n-    }\n-\n-    public void setParameters(Map<String, String> parameters) {\n-        this.parameters = parameters;\n-    }\n-\n-    @Parameter(key = \"retry-times\")\n-    public Integer getRetryTimes() {\n-        return retryTimes;\n-    }\n-\n-    public void setRetryTimes(Integer retryTimes) {\n-        this.retryTimes = retryTimes;\n-    }\n-\n-    @Parameter(key = \"retry-period\")\n-    public Integer getRetryPeriod() {\n-        return retryPeriod;\n-    }\n-\n-    public void setRetryPeriod(Integer retryPeriod) {\n-        this.retryPeriod = retryPeriod;\n-    }\n-\n-    @Parameter(key = \"cycle-report\")\n-    public Boolean getCycleReport() {\n-        return cycleReport;\n-    }\n-\n-    public void setCycleReport(Boolean cycleReport) {\n-        this.cycleReport = cycleReport;\n-    }\n-\n-    @Parameter(key = \"sync-report\")\n-    public Boolean getSyncReport() {\n-        return syncReport;\n-    }\n-\n-    public void setSyncReport(Boolean syncReport) {\n-        this.syncReport = syncReport;\n-    }\n-\n-    @Override\n-    @Parameter(excluded = true)\n-    public String getPrefix() {\n-        return StringUtils.isNotEmpty(prefix) ? prefix : (DUBBO + \".\" + PREFIX_TAG);\n-    }\n-\n-    @Override\n-    @Parameter(excluded = true)\n-    public boolean isValid() {\n-        return StringUtils.isNotEmpty(address);\n-    }\n-\n-    public String getGroup() {\n-        return group;\n-    }\n-\n-    public void setGroup(String group) {\n-        this.group = group;\n-    }\n-\n-    public Boolean getCluster() {\n-        return cluster;\n-    }\n-\n-    public void setCluster(Boolean cluster) {\n-        this.cluster = cluster;\n-    }\n-\n-    public String getRegistry() {\n-        return registry;\n-    }\n-\n-    public void setRegistry(String registry) {\n-        this.registry = registry;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROPERTIES_CHAR_SEPARATOR;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isEmpty;\r\n+\r\n+/**\r\n+ * MetadataReportConfig\r\n+ *\r\n+ * @export\r\n+ */\r\n+public class MetadataReportConfig extends AbstractConfig {\r\n+\r\n+    private static final long serialVersionUID = 55233L;\r\n+    /**\r\n+     * the value is : metadata-report\r\n+     */\r\n+    private static final String PREFIX_TAG = StringUtils.camelToSplitName(\r\n+            MetadataReportConfig.class.getSimpleName().substring(0, MetadataReportConfig.class.getSimpleName().length() - 6), PROPERTIES_CHAR_SEPARATOR);\r\n+\r\n+    // Register center address\r\n+    private String address;\r\n+\r\n+    // Username to login register center\r\n+    private String username;\r\n+\r\n+    // Password to login register center\r\n+    private String password;\r\n+\r\n+    // Request timeout in milliseconds for register center\r\n+    private Integer timeout;\r\n+\r\n+    /**\r\n+     * The group the metadata in . It is the same as registry\r\n+     */\r\n+    private String group;\r\n+\r\n+    // Customized parameters\r\n+    private Map<String, String> parameters;\r\n+\r\n+    private Integer retryTimes;\r\n+\r\n+    private Integer retryPeriod;\r\n+    /**\r\n+     * By default the metadatastore will store full metadata repeatedly every day .\r\n+     */\r\n+    private Boolean cycleReport;\r\n+\r\n+    /**\r\n+     * Sync report, default async\r\n+     */\r\n+    private Boolean syncReport;\r\n+\r\n+    /**\r\n+     * cluster\r\n+     */\r\n+    private Boolean cluster;\r\n+\r\n+    /**\r\n+     * registry id\r\n+     */\r\n+    private String registry;\r\n+\r\n+    public MetadataReportConfig() {\r\n+    }\r\n+\r\n+    public MetadataReportConfig(String address) {\r\n+        setAddress(address);\r\n+    }\r\n+\r\n+    public URL toUrl() throws IllegalArgumentException {\r\n+        String address = this.getAddress();\r\n+        if (isEmpty(address)) {\r\n+            throw new IllegalArgumentException(\"The address of metadata report is invalid.\");\r\n+        }\r\n+        Map<String, String> map = new HashMap<String, String>();\r\n+        URL url = URL.valueOf(address);\r\n+        // Issue : https://github.com/apache/dubbo/issues/6491\r\n+        // Append the parameters from address\r\n+        map.putAll(url.getParameters());\r\n+        // Append or overrides the properties as parameters\r\n+        appendParameters(map, this);\r\n+        // Normalize the parameters\r\n+        map.putAll(convert(map, null));\r\n+        // put the protocol of URL as the \"metadata\"\r\n+        map.put(\"metadata\", url.getProtocol());\r\n+        return new URL(\"metadata\", url.getUsername(), url.getPassword(), url.getHost(),\r\n+                url.getPort(), url.getPath(), map);\r\n+\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getAddress() {\r\n+        return address;\r\n+    }\r\n+\r\n+    public void setAddress(String address) {\r\n+        this.address = address;\r\n+    }\r\n+\r\n+    public String getUsername() {\r\n+        return username;\r\n+    }\r\n+\r\n+    public void setUsername(String username) {\r\n+        this.username = username;\r\n+    }\r\n+\r\n+    public String getPassword() {\r\n+        return password;\r\n+    }\r\n+\r\n+    public void setPassword(String password) {\r\n+        this.password = password;\r\n+    }\r\n+\r\n+    public Integer getTimeout() {\r\n+        return timeout;\r\n+    }\r\n+\r\n+    public void setTimeout(Integer timeout) {\r\n+        this.timeout = timeout;\r\n+    }\r\n+\r\n+    public Map<String, String> getParameters() {\r\n+        return parameters;\r\n+    }\r\n+\r\n+    public void setParameters(Map<String, String> parameters) {\r\n+        this.parameters = parameters;\r\n+    }\r\n+\r\n+    @Parameter(key = \"retry-times\")\r\n+    public Integer getRetryTimes() {\r\n+        return retryTimes;\r\n+    }\r\n+\r\n+    public void setRetryTimes(Integer retryTimes) {\r\n+        this.retryTimes = retryTimes;\r\n+    }\r\n+\r\n+    @Parameter(key = \"retry-period\")\r\n+    public Integer getRetryPeriod() {\r\n+        return retryPeriod;\r\n+    }\r\n+\r\n+    public void setRetryPeriod(Integer retryPeriod) {\r\n+        this.retryPeriod = retryPeriod;\r\n+    }\r\n+\r\n+    @Parameter(key = \"cycle-report\")\r\n+    public Boolean getCycleReport() {\r\n+        return cycleReport;\r\n+    }\r\n+\r\n+    public void setCycleReport(Boolean cycleReport) {\r\n+        this.cycleReport = cycleReport;\r\n+    }\r\n+\r\n+    @Parameter(key = \"sync-report\")\r\n+    public Boolean getSyncReport() {\r\n+        return syncReport;\r\n+    }\r\n+\r\n+    public void setSyncReport(Boolean syncReport) {\r\n+        this.syncReport = syncReport;\r\n+    }\r\n+\r\n+    @Override\r\n+    @Parameter(excluded = true)\r\n+    public String getPrefix() {\r\n+        return StringUtils.isNotEmpty(prefix) ? prefix : (DUBBO + \".\" + PREFIX_TAG);\r\n+    }\r\n+\r\n+    @Override\r\n+    @Parameter(excluded = true)\r\n+    public boolean isValid() {\r\n+        return StringUtils.isNotEmpty(address);\r\n+    }\r\n+\r\n+    public String getGroup() {\r\n+        return group;\r\n+    }\r\n+\r\n+    public void setGroup(String group) {\r\n+        this.group = group;\r\n+    }\r\n+\r\n+    public Boolean getCluster() {\r\n+        return cluster;\r\n+    }\r\n+\r\n+    public void setCluster(Boolean cluster) {\r\n+        this.cluster = cluster;\r\n+    }\r\n+\r\n+    public String getRegistry() {\r\n+        return registry;\r\n+    }\r\n+\r\n+    public void setRegistry(String registry) {\r\n+        this.registry = registry;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/MethodConfig.java", "source2": "org/apache/dubbo/config/MethodConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,332 +1,332 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.constants.CommonConstants;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.annotation.Method;\n-import org.apache.dubbo.config.support.Parameter;\n-\n-import java.util.ArrayList;\n-import java.util.Collections;\n-import java.util.List;\n-\n-import static org.apache.dubbo.config.Constants.ON_INVOKE_INSTANCE_KEY;\n-import static org.apache.dubbo.config.Constants.ON_INVOKE_METHOD_KEY;\n-import static org.apache.dubbo.config.Constants.ON_RETURN_INSTANCE_KEY;\n-import static org.apache.dubbo.config.Constants.ON_RETURN_METHOD_KEY;\n-import static org.apache.dubbo.config.Constants.ON_THROW_INSTANCE_KEY;\n-import static org.apache.dubbo.config.Constants.ON_THROW_METHOD_KEY;\n-\n-/**\n- * The method configuration\n- *\n- * @export\n- */\n-public class MethodConfig extends AbstractMethodConfig {\n-\n-    private static final long serialVersionUID = 884908855422675941L;\n-\n-    /**\n-     * The method name\n-     */\n-    private String name;\n-\n-    /**\n-     * Stat\n-     */\n-    private Integer stat;\n-\n-    /**\n-     * Whether to retry\n-     */\n-    private Boolean retry;\n-\n-    /**\n-     * If it's reliable\n-     */\n-    private Boolean reliable;\n-\n-    /**\n-     * Thread limits for method invocations\n-     */\n-    private Integer executes;\n-\n-    /**\n-     * If it's deprecated\n-     */\n-    private Boolean deprecated;\n-\n-    /**\n-     * Whether to enable sticky\n-     */\n-    private Boolean sticky;\n-\n-    /**\n-     * Whether need to return\n-     */\n-    private Boolean isReturn;\n-\n-    /**\n-     * Callback instance when async-call is invoked\n-     */\n-    private Object oninvoke;\n-\n-    /**\n-     * Callback method when async-call is invoked\n-     */\n-    private String oninvokeMethod;\n-\n-    /**\n-     * Callback instance when async-call is returned\n-     */\n-    private Object onreturn;\n-\n-    /**\n-     * Callback method when async-call is returned\n-     */\n-    private String onreturnMethod;\n-\n-    /**\n-     * Callback instance when async-call has exception thrown\n-     */\n-    private Object onthrow;\n-\n-    /**\n-     * Callback method when async-call has exception thrown\n-     */\n-    private String onthrowMethod;\n-\n-    /**\n-     * The method arguments\n-     */\n-    private List<ArgumentConfig> arguments;\n-\n-    /**\n-     * These properties come from MethodConfig's parent Config module, they will neither be collected directly from xml or API nor be delivered to url\n-     */\n-    private String service;\n-    private String serviceId;\n-\n-    @Parameter(excluded = true)\n-    public String getName() {\n-        return name;\n-    }\n-\n-    public MethodConfig() {\n-    }\n-\n-    public MethodConfig(Method method) {\n-        appendAnnotation(Method.class, method);\n-\n-        this.setReturn(method.isReturn());\n-\n-        if(!\"\".equals(method.oninvoke())){\n-            this.setOninvoke(method.oninvoke());\n-        }\n-        if(!\"\".equals(method.onreturn())){\n-            this.setOnreturn(method.onreturn());\n-        }\n-        if(!\"\".equals(method.onthrow())){\n-            this.setOnthrow(method.onthrow());\n-        }\n-\n-        if (method.arguments() != null && method.arguments().length != 0) {\n-            List<ArgumentConfig> argumentConfigs = new ArrayList<ArgumentConfig>(method.arguments().length);\n-            this.setArguments(argumentConfigs);\n-            for (int i = 0; i < method.arguments().length; i++) {\n-                ArgumentConfig argumentConfig = new ArgumentConfig(method.arguments()[i]);\n-                argumentConfigs.add(argumentConfig);\n-            }\n-        }\n-    }\n-\n-    public static List<MethodConfig> constructMethodConfig(Method[] methods) {\n-        if (methods != null && methods.length != 0) {\n-            List<MethodConfig> methodConfigs = new ArrayList<MethodConfig>(methods.length);\n-            for (int i = 0; i < methods.length; i++) {\n-                MethodConfig methodConfig = new MethodConfig(methods[i]);\n-                methodConfigs.add(methodConfig);\n-            }\n-            return methodConfigs;\n-        }\n-        return Collections.emptyList();\n-    }\n-\n-    public void setName(String name) {\n-        this.name = name;\n-        // FIXME, add id strategy in ConfigManager\n-//        if (StringUtils.isEmpty(id)) {\n-//            id = name;\n-//        }\n-    }\n-\n-    public Integer getStat() {\n-        return stat;\n-    }\n-\n-    @Deprecated\n-    public void setStat(Integer stat) {\n-        this.stat = stat;\n-    }\n-\n-    @Deprecated\n-    public Boolean isRetry() {\n-        return retry;\n-    }\n-\n-    @Deprecated\n-    public void setRetry(Boolean retry) {\n-        this.retry = retry;\n-    }\n-\n-    @Deprecated\n-    public Boolean isReliable() {\n-        return reliable;\n-    }\n-\n-    @Deprecated\n-    public void setReliable(Boolean reliable) {\n-        this.reliable = reliable;\n-    }\n-\n-    public Integer getExecutes() {\n-        return executes;\n-    }\n-\n-    public void setExecutes(Integer executes) {\n-        this.executes = executes;\n-    }\n-\n-    public Boolean getDeprecated() {\n-        return deprecated;\n-    }\n-\n-    public void setDeprecated(Boolean deprecated) {\n-        this.deprecated = deprecated;\n-    }\n-\n-    public List<ArgumentConfig> getArguments() {\n-        return arguments;\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    public void setArguments(List<? extends ArgumentConfig> arguments) {\n-        this.arguments = (List<ArgumentConfig>) arguments;\n-    }\n-\n-    public Boolean getSticky() {\n-        return sticky;\n-    }\n-\n-    public void setSticky(Boolean sticky) {\n-        this.sticky = sticky;\n-    }\n-\n-    @Parameter(key = ON_RETURN_INSTANCE_KEY, excluded = true, attribute = true)\n-    public Object getOnreturn() {\n-        return onreturn;\n-    }\n-\n-    public void setOnreturn(Object onreturn) {\n-        this.onreturn = onreturn;\n-    }\n-\n-    @Parameter(key = ON_RETURN_METHOD_KEY, excluded = true, attribute = true)\n-    public String getOnreturnMethod() {\n-        return onreturnMethod;\n-    }\n-\n-    public void setOnreturnMethod(String onreturnMethod) {\n-        this.onreturnMethod = onreturnMethod;\n-    }\n-\n-    @Parameter(key = ON_THROW_INSTANCE_KEY, excluded = true, attribute = true)\n-    public Object getOnthrow() {\n-        return onthrow;\n-    }\n-\n-    public void setOnthrow(Object onthrow) {\n-        this.onthrow = onthrow;\n-    }\n-\n-    @Parameter(key = ON_THROW_METHOD_KEY, excluded = true, attribute = true)\n-    public String getOnthrowMethod() {\n-        return onthrowMethod;\n-    }\n-\n-    public void setOnthrowMethod(String onthrowMethod) {\n-        this.onthrowMethod = onthrowMethod;\n-    }\n-\n-    @Parameter(key = ON_INVOKE_INSTANCE_KEY, excluded = true, attribute = true)\n-    public Object getOninvoke() {\n-        return oninvoke;\n-    }\n-\n-    public void setOninvoke(Object oninvoke) {\n-        this.oninvoke = oninvoke;\n-    }\n-\n-    @Parameter(key = ON_INVOKE_METHOD_KEY, excluded = true, attribute = true)\n-    public String getOninvokeMethod() {\n-        return oninvokeMethod;\n-    }\n-\n-    public void setOninvokeMethod(String oninvokeMethod) {\n-        this.oninvokeMethod = oninvokeMethod;\n-    }\n-\n-    public Boolean isReturn() {\n-        return isReturn;\n-    }\n-\n-    public void setReturn(Boolean isReturn) {\n-        this.isReturn = isReturn;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getService() {\n-        return service;\n-    }\n-\n-    public void setService(String service) {\n-        this.service = service;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getServiceId() {\n-        return serviceId;\n-    }\n-\n-    public void setServiceId(String serviceId) {\n-        this.serviceId = serviceId;\n-    }\n-\n-    /**\n-     * service and name must not be null.\n-     *\n-     * @return\n-     */\n-    @Override\n-    @Parameter(excluded = true)\n-    public String getPrefix() {\n-        return CommonConstants.DUBBO + \".\" + service\n-                + (StringUtils.isEmpty(serviceId) ? \"\" : (\".\" + serviceId))\n-                + \".\" + getName();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.constants.CommonConstants;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.annotation.Method;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+\r\n+import static org.apache.dubbo.config.Constants.ON_INVOKE_INSTANCE_KEY;\r\n+import static org.apache.dubbo.config.Constants.ON_INVOKE_METHOD_KEY;\r\n+import static org.apache.dubbo.config.Constants.ON_RETURN_INSTANCE_KEY;\r\n+import static org.apache.dubbo.config.Constants.ON_RETURN_METHOD_KEY;\r\n+import static org.apache.dubbo.config.Constants.ON_THROW_INSTANCE_KEY;\r\n+import static org.apache.dubbo.config.Constants.ON_THROW_METHOD_KEY;\r\n+\r\n+/**\r\n+ * The method configuration\r\n+ *\r\n+ * @export\r\n+ */\r\n+public class MethodConfig extends AbstractMethodConfig {\r\n+\r\n+    private static final long serialVersionUID = 884908855422675941L;\r\n+\r\n+    /**\r\n+     * The method name\r\n+     */\r\n+    private String name;\r\n+\r\n+    /**\r\n+     * Stat\r\n+     */\r\n+    private Integer stat;\r\n+\r\n+    /**\r\n+     * Whether to retry\r\n+     */\r\n+    private Boolean retry;\r\n+\r\n+    /**\r\n+     * If it's reliable\r\n+     */\r\n+    private Boolean reliable;\r\n+\r\n+    /**\r\n+     * Thread limits for method invocations\r\n+     */\r\n+    private Integer executes;\r\n+\r\n+    /**\r\n+     * If it's deprecated\r\n+     */\r\n+    private Boolean deprecated;\r\n+\r\n+    /**\r\n+     * Whether to enable sticky\r\n+     */\r\n+    private Boolean sticky;\r\n+\r\n+    /**\r\n+     * Whether need to return\r\n+     */\r\n+    private Boolean isReturn;\r\n+\r\n+    /**\r\n+     * Callback instance when async-call is invoked\r\n+     */\r\n+    private Object oninvoke;\r\n+\r\n+    /**\r\n+     * Callback method when async-call is invoked\r\n+     */\r\n+    private String oninvokeMethod;\r\n+\r\n+    /**\r\n+     * Callback instance when async-call is returned\r\n+     */\r\n+    private Object onreturn;\r\n+\r\n+    /**\r\n+     * Callback method when async-call is returned\r\n+     */\r\n+    private String onreturnMethod;\r\n+\r\n+    /**\r\n+     * Callback instance when async-call has exception thrown\r\n+     */\r\n+    private Object onthrow;\r\n+\r\n+    /**\r\n+     * Callback method when async-call has exception thrown\r\n+     */\r\n+    private String onthrowMethod;\r\n+\r\n+    /**\r\n+     * The method arguments\r\n+     */\r\n+    private List<ArgumentConfig> arguments;\r\n+\r\n+    /**\r\n+     * These properties come from MethodConfig's parent Config module, they will neither be collected directly from xml or API nor be delivered to url\r\n+     */\r\n+    private String service;\r\n+    private String serviceId;\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getName() {\r\n+        return name;\r\n+    }\r\n+\r\n+    public MethodConfig() {\r\n+    }\r\n+\r\n+    public MethodConfig(Method method) {\r\n+        appendAnnotation(Method.class, method);\r\n+\r\n+        this.setReturn(method.isReturn());\r\n+\r\n+        if(!\"\".equals(method.oninvoke())){\r\n+            this.setOninvoke(method.oninvoke());\r\n+        }\r\n+        if(!\"\".equals(method.onreturn())){\r\n+            this.setOnreturn(method.onreturn());\r\n+        }\r\n+        if(!\"\".equals(method.onthrow())){\r\n+            this.setOnthrow(method.onthrow());\r\n+        }\r\n+\r\n+        if (method.arguments() != null && method.arguments().length != 0) {\r\n+            List<ArgumentConfig> argumentConfigs = new ArrayList<ArgumentConfig>(method.arguments().length);\r\n+            this.setArguments(argumentConfigs);\r\n+            for (int i = 0; i < method.arguments().length; i++) {\r\n+                ArgumentConfig argumentConfig = new ArgumentConfig(method.arguments()[i]);\r\n+                argumentConfigs.add(argumentConfig);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public static List<MethodConfig> constructMethodConfig(Method[] methods) {\r\n+        if (methods != null && methods.length != 0) {\r\n+            List<MethodConfig> methodConfigs = new ArrayList<MethodConfig>(methods.length);\r\n+            for (int i = 0; i < methods.length; i++) {\r\n+                MethodConfig methodConfig = new MethodConfig(methods[i]);\r\n+                methodConfigs.add(methodConfig);\r\n+            }\r\n+            return methodConfigs;\r\n+        }\r\n+        return Collections.emptyList();\r\n+    }\r\n+\r\n+    public void setName(String name) {\r\n+        this.name = name;\r\n+        // FIXME, add id strategy in ConfigManager\r\n+//        if (StringUtils.isEmpty(id)) {\r\n+//            id = name;\r\n+//        }\r\n+    }\r\n+\r\n+    public Integer getStat() {\r\n+        return stat;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void setStat(Integer stat) {\r\n+        this.stat = stat;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public Boolean isRetry() {\r\n+        return retry;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void setRetry(Boolean retry) {\r\n+        this.retry = retry;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public Boolean isReliable() {\r\n+        return reliable;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void setReliable(Boolean reliable) {\r\n+        this.reliable = reliable;\r\n+    }\r\n+\r\n+    public Integer getExecutes() {\r\n+        return executes;\r\n+    }\r\n+\r\n+    public void setExecutes(Integer executes) {\r\n+        this.executes = executes;\r\n+    }\r\n+\r\n+    public Boolean getDeprecated() {\r\n+        return deprecated;\r\n+    }\r\n+\r\n+    public void setDeprecated(Boolean deprecated) {\r\n+        this.deprecated = deprecated;\r\n+    }\r\n+\r\n+    public List<ArgumentConfig> getArguments() {\r\n+        return arguments;\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public void setArguments(List<? extends ArgumentConfig> arguments) {\r\n+        this.arguments = (List<ArgumentConfig>) arguments;\r\n+    }\r\n+\r\n+    public Boolean getSticky() {\r\n+        return sticky;\r\n+    }\r\n+\r\n+    public void setSticky(Boolean sticky) {\r\n+        this.sticky = sticky;\r\n+    }\r\n+\r\n+    @Parameter(key = ON_RETURN_INSTANCE_KEY, excluded = true, attribute = true)\r\n+    public Object getOnreturn() {\r\n+        return onreturn;\r\n+    }\r\n+\r\n+    public void setOnreturn(Object onreturn) {\r\n+        this.onreturn = onreturn;\r\n+    }\r\n+\r\n+    @Parameter(key = ON_RETURN_METHOD_KEY, excluded = true, attribute = true)\r\n+    public String getOnreturnMethod() {\r\n+        return onreturnMethod;\r\n+    }\r\n+\r\n+    public void setOnreturnMethod(String onreturnMethod) {\r\n+        this.onreturnMethod = onreturnMethod;\r\n+    }\r\n+\r\n+    @Parameter(key = ON_THROW_INSTANCE_KEY, excluded = true, attribute = true)\r\n+    public Object getOnthrow() {\r\n+        return onthrow;\r\n+    }\r\n+\r\n+    public void setOnthrow(Object onthrow) {\r\n+        this.onthrow = onthrow;\r\n+    }\r\n+\r\n+    @Parameter(key = ON_THROW_METHOD_KEY, excluded = true, attribute = true)\r\n+    public String getOnthrowMethod() {\r\n+        return onthrowMethod;\r\n+    }\r\n+\r\n+    public void setOnthrowMethod(String onthrowMethod) {\r\n+        this.onthrowMethod = onthrowMethod;\r\n+    }\r\n+\r\n+    @Parameter(key = ON_INVOKE_INSTANCE_KEY, excluded = true, attribute = true)\r\n+    public Object getOninvoke() {\r\n+        return oninvoke;\r\n+    }\r\n+\r\n+    public void setOninvoke(Object oninvoke) {\r\n+        this.oninvoke = oninvoke;\r\n+    }\r\n+\r\n+    @Parameter(key = ON_INVOKE_METHOD_KEY, excluded = true, attribute = true)\r\n+    public String getOninvokeMethod() {\r\n+        return oninvokeMethod;\r\n+    }\r\n+\r\n+    public void setOninvokeMethod(String oninvokeMethod) {\r\n+        this.oninvokeMethod = oninvokeMethod;\r\n+    }\r\n+\r\n+    public Boolean isReturn() {\r\n+        return isReturn;\r\n+    }\r\n+\r\n+    public void setReturn(Boolean isReturn) {\r\n+        this.isReturn = isReturn;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getService() {\r\n+        return service;\r\n+    }\r\n+\r\n+    public void setService(String service) {\r\n+        this.service = service;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getServiceId() {\r\n+        return serviceId;\r\n+    }\r\n+\r\n+    public void setServiceId(String serviceId) {\r\n+        this.serviceId = serviceId;\r\n+    }\r\n+\r\n+    /**\r\n+     * service and name must not be null.\r\n+     *\r\n+     * @return\r\n+     */\r\n+    @Override\r\n+    @Parameter(excluded = true)\r\n+    public String getPrefix() {\r\n+        return CommonConstants.DUBBO + \".\" + service\r\n+                + (StringUtils.isEmpty(serviceId) ? \"\" : (\".\" + serviceId))\r\n+                + \".\" + getName();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/MetricsConfig.java", "source2": "org/apache/dubbo/config/MetricsConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,53 +1,53 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.config.support.Parameter;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.METRICS_PORT;\n-import static org.apache.dubbo.common.constants.CommonConstants.METRICS_PROTOCOL;\n-\n-public class MetricsConfig extends AbstractConfig {\n-\n-    private static final long serialVersionUID = -9089919311611546383L;\n-\n-    private String port;\n-    private String protocol;\n-\n-    public MetricsConfig() {\n-    }\n-\n-    @Parameter(key = METRICS_PORT)\n-    public String getPort() {\n-        return port;\n-    }\n-\n-    public void setPort(String port) {\n-        this.port = port;\n-    }\n-\n-    @Parameter(key = METRICS_PROTOCOL)\n-    public String getProtocol() {\n-        return protocol;\n-    }\n-\n-    public void setProtocol(String protocol) {\n-        this.protocol = protocol;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.METRICS_PORT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.METRICS_PROTOCOL;\r\n+\r\n+public class MetricsConfig extends AbstractConfig {\r\n+\r\n+    private static final long serialVersionUID = -9089919311611546383L;\r\n+\r\n+    private String port;\r\n+    private String protocol;\r\n+\r\n+    public MetricsConfig() {\r\n+    }\r\n+\r\n+    @Parameter(key = METRICS_PORT)\r\n+    public String getPort() {\r\n+        return port;\r\n+    }\r\n+\r\n+    public void setPort(String port) {\r\n+        this.port = port;\r\n+    }\r\n+\r\n+    @Parameter(key = METRICS_PROTOCOL)\r\n+    public String getProtocol() {\r\n+        return protocol;\r\n+    }\r\n+\r\n+    public void setProtocol(String protocol) {\r\n+        this.protocol = protocol;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/ModuleConfig.java", "source2": "org/apache/dubbo/config/ModuleConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,153 +1,153 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.support.Parameter;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * The module info\n- *\n- * @export\n- */\n-public class ModuleConfig extends AbstractConfig {\n-\n-    private static final long serialVersionUID = 5508512956753757169L;\n-\n-    /**\n-     * Module name\n-     */\n-    private String name;\n-\n-    /**\n-     * Module version\n-     */\n-    private String version;\n-\n-    /**\n-     * Module owner\n-     */\n-    private String owner;\n-\n-    /**\n-     * Module's organization\n-     */\n-    private String organization;\n-\n-    /**\n-     * Registry centers\n-     */\n-    private List<RegistryConfig> registries;\n-\n-    /**\n-     * Monitor center\n-     */\n-    private MonitorConfig monitor;\n-\n-    /**\n-     * If it's default\n-     */\n-    private Boolean isDefault;\n-\n-    public ModuleConfig() {\n-    }\n-\n-    public ModuleConfig(String name) {\n-        setName(name);\n-    }\n-\n-    @Parameter(key = \"module\")\n-    public String getName() {\n-        return name;\n-    }\n-\n-    public void setName(String name) {\n-        this.name = name;\n-        if (StringUtils.isEmpty(id)) {\n-            id = name;\n-        }\n-    }\n-\n-    @Parameter(key = \"module.version\")\n-    public String getVersion() {\n-        return version;\n-    }\n-\n-    public void setVersion(String version) {\n-        this.version = version;\n-    }\n-\n-    public String getOwner() {\n-        return owner;\n-    }\n-\n-    public void setOwner(String owner) {\n-        this.owner = owner;\n-    }\n-\n-    public String getOrganization() {\n-        return organization;\n-    }\n-\n-    public void setOrganization(String organization) {\n-        this.organization = organization;\n-    }\n-\n-    public RegistryConfig getRegistry() {\n-        return CollectionUtils.isEmpty(registries) ? null : registries.get(0);\n-    }\n-\n-    public void setRegistry(RegistryConfig registry) {\n-        List<RegistryConfig> registries = new ArrayList<RegistryConfig>(1);\n-        registries.add(registry);\n-        this.registries = registries;\n-    }\n-\n-    public List<RegistryConfig> getRegistries() {\n-        return registries;\n-    }\n-\n-    @SuppressWarnings({\"unchecked\"})\n-    public void setRegistries(List<? extends RegistryConfig> registries) {\n-        this.registries = (List<RegistryConfig>) registries;\n-    }\n-\n-    public MonitorConfig getMonitor() {\n-        return monitor;\n-    }\n-\n-    public void setMonitor(MonitorConfig monitor) {\n-        this.monitor = monitor;\n-    }\n-\n-    public void setMonitor(String monitor) {\n-        this.monitor = new MonitorConfig(monitor);\n-    }\n-\n-    public Boolean isDefault() {\n-        return isDefault;\n-    }\n-\n-    public void setDefault(Boolean isDefault) {\n-        this.isDefault = isDefault;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * The module info\r\n+ *\r\n+ * @export\r\n+ */\r\n+public class ModuleConfig extends AbstractConfig {\r\n+\r\n+    private static final long serialVersionUID = 5508512956753757169L;\r\n+\r\n+    /**\r\n+     * Module name\r\n+     */\r\n+    private String name;\r\n+\r\n+    /**\r\n+     * Module version\r\n+     */\r\n+    private String version;\r\n+\r\n+    /**\r\n+     * Module owner\r\n+     */\r\n+    private String owner;\r\n+\r\n+    /**\r\n+     * Module's organization\r\n+     */\r\n+    private String organization;\r\n+\r\n+    /**\r\n+     * Registry centers\r\n+     */\r\n+    private List<RegistryConfig> registries;\r\n+\r\n+    /**\r\n+     * Monitor center\r\n+     */\r\n+    private MonitorConfig monitor;\r\n+\r\n+    /**\r\n+     * If it's default\r\n+     */\r\n+    private Boolean isDefault;\r\n+\r\n+    public ModuleConfig() {\r\n+    }\r\n+\r\n+    public ModuleConfig(String name) {\r\n+        setName(name);\r\n+    }\r\n+\r\n+    @Parameter(key = \"module\")\r\n+    public String getName() {\r\n+        return name;\r\n+    }\r\n+\r\n+    public void setName(String name) {\r\n+        this.name = name;\r\n+        if (StringUtils.isEmpty(id)) {\r\n+            id = name;\r\n+        }\r\n+    }\r\n+\r\n+    @Parameter(key = \"module.version\")\r\n+    public String getVersion() {\r\n+        return version;\r\n+    }\r\n+\r\n+    public void setVersion(String version) {\r\n+        this.version = version;\r\n+    }\r\n+\r\n+    public String getOwner() {\r\n+        return owner;\r\n+    }\r\n+\r\n+    public void setOwner(String owner) {\r\n+        this.owner = owner;\r\n+    }\r\n+\r\n+    public String getOrganization() {\r\n+        return organization;\r\n+    }\r\n+\r\n+    public void setOrganization(String organization) {\r\n+        this.organization = organization;\r\n+    }\r\n+\r\n+    public RegistryConfig getRegistry() {\r\n+        return CollectionUtils.isEmpty(registries) ? null : registries.get(0);\r\n+    }\r\n+\r\n+    public void setRegistry(RegistryConfig registry) {\r\n+        List<RegistryConfig> registries = new ArrayList<RegistryConfig>(1);\r\n+        registries.add(registry);\r\n+        this.registries = registries;\r\n+    }\r\n+\r\n+    public List<RegistryConfig> getRegistries() {\r\n+        return registries;\r\n+    }\r\n+\r\n+    @SuppressWarnings({\"unchecked\"})\r\n+    public void setRegistries(List<? extends RegistryConfig> registries) {\r\n+        this.registries = (List<RegistryConfig>) registries;\r\n+    }\r\n+\r\n+    public MonitorConfig getMonitor() {\r\n+        return monitor;\r\n+    }\r\n+\r\n+    public void setMonitor(MonitorConfig monitor) {\r\n+        this.monitor = monitor;\r\n+    }\r\n+\r\n+    public void setMonitor(String monitor) {\r\n+        this.monitor = new MonitorConfig(monitor);\r\n+    }\r\n+\r\n+    public Boolean isDefault() {\r\n+        return isDefault;\r\n+    }\r\n+\r\n+    public void setDefault(Boolean isDefault) {\r\n+        this.isDefault = isDefault;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/MonitorConfig.java", "source2": "org/apache/dubbo/config/MonitorConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,160 +1,160 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.constants.RegistryConstants;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.support.Parameter;\n-\n-import java.util.Map;\n-\n-/**\n- * MonitorConfig\n- *\n- * @export\n- */\n-public class MonitorConfig extends AbstractConfig {\n-\n-    private static final long serialVersionUID = -1184681514659198203L;\n-\n-    /**\n-     * The protocol of the monitor, if the value is registry, it will search the monitor address from the registry center,\n-     * otherwise, it will directly connect to the monitor center\n-     */\n-    private String protocol;\n-\n-    /**\n-     * The monitor address\n-     */\n-    private String address;\n-\n-    /**\n-     * The monitor user name\n-     */\n-    private String username;\n-\n-    /**\n-     * The password\n-     */\n-    private String password;\n-\n-    private String group;\n-\n-    private String version;\n-\n-    private String interval;\n-\n-    /**\n-     * customized parameters\n-     */\n-    private Map<String, String> parameters;\n-\n-    /**\n-     * If it's default\n-     */\n-    private Boolean isDefault;\n-\n-    public MonitorConfig() {\n-    }\n-\n-    public MonitorConfig(String address) {\n-        this.address = address;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getAddress() {\n-        return address;\n-    }\n-\n-    public void setAddress(String address) {\n-        this.address = address;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getProtocol() {\n-        return protocol;\n-    }\n-\n-    public void setProtocol(String protocol) {\n-        this.protocol = protocol;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getUsername() {\n-        return username;\n-    }\n-\n-    public void setUsername(String username) {\n-        this.username = username;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getPassword() {\n-        return password;\n-    }\n-\n-    public void setPassword(String password) {\n-        this.password = password;\n-    }\n-\n-    public String getGroup() {\n-        return group;\n-    }\n-\n-    public void setGroup(String group) {\n-        this.group = group;\n-    }\n-\n-    public String getVersion() {\n-        return version;\n-    }\n-\n-    public void setVersion(String version) {\n-        this.version = version;\n-    }\n-\n-    public Map<String, String> getParameters() {\n-        return parameters;\n-    }\n-\n-    public void setParameters(Map<String, String> parameters) {\n-        this.parameters = parameters;\n-    }\n-\n-    public Boolean isDefault() {\n-        return isDefault;\n-    }\n-\n-    public void setDefault(Boolean isDefault) {\n-        this.isDefault = isDefault;\n-    }\n-\n-    public String getInterval() {\n-        return interval;\n-    }\n-\n-    public void setInterval(String interval) {\n-        this.interval = interval;\n-    }\n-\n-    @Override\n-    @Parameter(excluded = true)\n-    public boolean isValid() {\n-        return StringUtils.isNotEmpty(address) || RegistryConstants.REGISTRY_PROTOCOL.equals(protocol);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.constants.RegistryConstants;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * MonitorConfig\r\n+ *\r\n+ * @export\r\n+ */\r\n+public class MonitorConfig extends AbstractConfig {\r\n+\r\n+    private static final long serialVersionUID = -1184681514659198203L;\r\n+\r\n+    /**\r\n+     * The protocol of the monitor, if the value is registry, it will search the monitor address from the registry center,\r\n+     * otherwise, it will directly connect to the monitor center\r\n+     */\r\n+    private String protocol;\r\n+\r\n+    /**\r\n+     * The monitor address\r\n+     */\r\n+    private String address;\r\n+\r\n+    /**\r\n+     * The monitor user name\r\n+     */\r\n+    private String username;\r\n+\r\n+    /**\r\n+     * The password\r\n+     */\r\n+    private String password;\r\n+\r\n+    private String group;\r\n+\r\n+    private String version;\r\n+\r\n+    private String interval;\r\n+\r\n+    /**\r\n+     * customized parameters\r\n+     */\r\n+    private Map<String, String> parameters;\r\n+\r\n+    /**\r\n+     * If it's default\r\n+     */\r\n+    private Boolean isDefault;\r\n+\r\n+    public MonitorConfig() {\r\n+    }\r\n+\r\n+    public MonitorConfig(String address) {\r\n+        this.address = address;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getAddress() {\r\n+        return address;\r\n+    }\r\n+\r\n+    public void setAddress(String address) {\r\n+        this.address = address;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getProtocol() {\r\n+        return protocol;\r\n+    }\r\n+\r\n+    public void setProtocol(String protocol) {\r\n+        this.protocol = protocol;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getUsername() {\r\n+        return username;\r\n+    }\r\n+\r\n+    public void setUsername(String username) {\r\n+        this.username = username;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getPassword() {\r\n+        return password;\r\n+    }\r\n+\r\n+    public void setPassword(String password) {\r\n+        this.password = password;\r\n+    }\r\n+\r\n+    public String getGroup() {\r\n+        return group;\r\n+    }\r\n+\r\n+    public void setGroup(String group) {\r\n+        this.group = group;\r\n+    }\r\n+\r\n+    public String getVersion() {\r\n+        return version;\r\n+    }\r\n+\r\n+    public void setVersion(String version) {\r\n+        this.version = version;\r\n+    }\r\n+\r\n+    public Map<String, String> getParameters() {\r\n+        return parameters;\r\n+    }\r\n+\r\n+    public void setParameters(Map<String, String> parameters) {\r\n+        this.parameters = parameters;\r\n+    }\r\n+\r\n+    public Boolean isDefault() {\r\n+        return isDefault;\r\n+    }\r\n+\r\n+    public void setDefault(Boolean isDefault) {\r\n+        this.isDefault = isDefault;\r\n+    }\r\n+\r\n+    public String getInterval() {\r\n+        return interval;\r\n+    }\r\n+\r\n+    public void setInterval(String interval) {\r\n+        this.interval = interval;\r\n+    }\r\n+\r\n+    @Override\r\n+    @Parameter(excluded = true)\r\n+    public boolean isValid() {\r\n+        return StringUtils.isNotEmpty(address) || RegistryConstants.REGISTRY_PROTOCOL.equals(protocol);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/ProtocolConfig.java", "source2": "org/apache/dubbo/config/ProtocolConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,598 +1,598 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.support.Parameter;\n-\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.SSL_ENABLED_KEY;\n-import static org.apache.dubbo.config.Constants.PROTOCOLS_SUFFIX;\n-\n-/**\n- * ProtocolConfig\n- *\n- * @export\n- */\n-public class ProtocolConfig extends AbstractConfig {\n-\n-    private static final long serialVersionUID = 6913423882496634749L;\n-\n-    /**\n-     * Protocol name\n-     */\n-    private String name;\n-\n-    /**\n-     * Service ip address (when there are multiple network cards available)\n-     */\n-    private String host;\n-\n-    /**\n-     * Service port\n-     */\n-    private Integer port;\n-\n-    /**\n-     * Context path\n-     */\n-    private String contextpath;\n-\n-    /**\n-     * Thread pool\n-     */\n-    private String threadpool;\n-\n-    /**\n-     * Thread pool name\n-     */\n-    private String threadname;\n-\n-    /**\n-     * Thread pool core thread size\n-     */\n-    private Integer corethreads;\n-\n-    /**\n-     * Thread pool size (fixed size)\n-     */\n-    private Integer threads;\n-\n-    /**\n-     * IO thread pool size (fixed size)\n-     */\n-    private Integer iothreads;\n-\n-    /**\n-     * Thread pool keepAliveTime, default unit TimeUnit.MILLISECONDS\n-     */\n-    private Integer alive;\n-\n-    /**\n-     * Thread pool's queue length\n-     */\n-    private Integer queues;\n-\n-    /**\n-     * Max acceptable connections\n-     */\n-    private Integer accepts;\n-\n-    /**\n-     * Protocol codec\n-     */\n-    private String codec;\n-\n-    /**\n-     * Serialization\n-     */\n-    private String serialization;\n-\n-    /**\n-     * Charset\n-     */\n-    private String charset;\n-\n-    /**\n-     * Payload max length\n-     */\n-    private Integer payload;\n-\n-    /**\n-     * Buffer size\n-     */\n-    private Integer buffer;\n-\n-    /**\n-     * Heartbeat interval\n-     */\n-    private Integer heartbeat;\n-\n-    /**\n-     * Access log\n-     */\n-    private String accesslog;\n-\n-    /**\n-     * Transporter\n-     */\n-    private String transporter;\n-\n-    /**\n-     * How information is exchanged\n-     */\n-    private String exchanger;\n-\n-    /**\n-     * Thread dispatch mode\n-     */\n-    private String dispatcher;\n-\n-    /**\n-     * Networker\n-     */\n-    private String networker;\n-\n-    /**\n-     * Sever impl\n-     */\n-    private String server;\n-\n-    /**\n-     * Client impl\n-     */\n-    private String client;\n-\n-    /**\n-     * Supported telnet commands, separated with comma.\n-     */\n-    private String telnet;\n-\n-    /**\n-     * Command line prompt\n-     */\n-    private String prompt;\n-\n-    /**\n-     * Status check\n-     */\n-    private String status;\n-\n-    /**\n-     * Whether to register\n-     */\n-    private Boolean register;\n-\n-    /**\n-     * whether it is a persistent connection\n-     */\n-    //TODO add this to provider config\n-    private Boolean keepAlive;\n-\n-    // TODO add this to provider config\n-    private String optimizer;\n-\n-    /**\n-     * The extension\n-     */\n-    private String extension;\n-\n-    /**\n-     * The customized parameters\n-     */\n-    private Map<String, String> parameters;\n-\n-    /**\n-     * If it's default\n-     */\n-    private Boolean isDefault;\n-\n-    private Boolean sslEnabled;\n-\n-    public ProtocolConfig() {\n-    }\n-\n-    public ProtocolConfig(String name) {\n-        setName(name);\n-    }\n-\n-    public ProtocolConfig(String name, int port) {\n-        setName(name);\n-        setPort(port);\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getName() {\n-        return name;\n-    }\n-\n-    public final void setName(String name) {\n-        this.name = name;\n-        this.updateIdIfAbsent(name);\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getHost() {\n-        return host;\n-    }\n-\n-    public void setHost(String host) {\n-        this.host = host;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public Integer getPort() {\n-        return port;\n-    }\n-\n-    public final void setPort(Integer port) {\n-        this.port = port;\n-    }\n-\n-    @Deprecated\n-    @Parameter(excluded = true)\n-    public String getPath() {\n-        return getContextpath();\n-    }\n-\n-    @Deprecated\n-    public void setPath(String path) {\n-        setContextpath(path);\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getContextpath() {\n-        return contextpath;\n-    }\n-\n-    public void setContextpath(String contextpath) {\n-        this.contextpath = contextpath;\n-    }\n-\n-    public String getThreadpool() {\n-        return threadpool;\n-    }\n-\n-    public void setThreadpool(String threadpool) {\n-        this.threadpool = threadpool;\n-    }\n-\n-    public String getThreadname() {\n-        return threadname;\n-    }\n-\n-    public void setThreadname(String threadname) {\n-        this.threadname = threadname;\n-    }\n-\n-    public Integer getCorethreads() {\n-        return corethreads;\n-    }\n-\n-    public void setCorethreads(Integer corethreads) {\n-        this.corethreads = corethreads;\n-    }\n-\n-    public Integer getThreads() {\n-        return threads;\n-    }\n-\n-    public void setThreads(Integer threads) {\n-        this.threads = threads;\n-    }\n-\n-    public Integer getIothreads() {\n-        return iothreads;\n-    }\n-\n-    public void setIothreads(Integer iothreads) {\n-        this.iothreads = iothreads;\n-    }\n-\n-    public Integer getAlive() {\n-        return alive;\n-    }\n-\n-    public void setAlive(Integer alive) {\n-        this.alive = alive;\n-    }\n-\n-    public Integer getQueues() {\n-        return queues;\n-    }\n-\n-    public void setQueues(Integer queues) {\n-        this.queues = queues;\n-    }\n-\n-    public Integer getAccepts() {\n-        return accepts;\n-    }\n-\n-    public void setAccepts(Integer accepts) {\n-        this.accepts = accepts;\n-    }\n-\n-    public String getCodec() {\n-        return codec;\n-    }\n-\n-    public void setCodec(String codec) {\n-        this.codec = codec;\n-    }\n-\n-    public String getSerialization() {\n-        return serialization;\n-    }\n-\n-    public void setSerialization(String serialization) {\n-        this.serialization = serialization;\n-    }\n-\n-    public String getCharset() {\n-        return charset;\n-    }\n-\n-    public void setCharset(String charset) {\n-        this.charset = charset;\n-    }\n-\n-    public Integer getPayload() {\n-        return payload;\n-    }\n-\n-    public void setPayload(Integer payload) {\n-        this.payload = payload;\n-    }\n-\n-    public Integer getBuffer() {\n-        return buffer;\n-    }\n-\n-    public void setBuffer(Integer buffer) {\n-        this.buffer = buffer;\n-    }\n-\n-    public Integer getHeartbeat() {\n-        return heartbeat;\n-    }\n-\n-    public void setHeartbeat(Integer heartbeat) {\n-        this.heartbeat = heartbeat;\n-    }\n-\n-    public String getServer() {\n-        return server;\n-    }\n-\n-    public void setServer(String server) {\n-        this.server = server;\n-    }\n-\n-    public String getClient() {\n-        return client;\n-    }\n-\n-    public void setClient(String client) {\n-        this.client = client;\n-    }\n-\n-    public String getAccesslog() {\n-        return accesslog;\n-    }\n-\n-    public void setAccesslog(String accesslog) {\n-        this.accesslog = accesslog;\n-    }\n-\n-    public String getTelnet() {\n-        return telnet;\n-    }\n-\n-    public void setTelnet(String telnet) {\n-        this.telnet = telnet;\n-    }\n-\n-    @Parameter(escaped = true)\n-    public String getPrompt() {\n-        return prompt;\n-    }\n-\n-    public void setPrompt(String prompt) {\n-        this.prompt = prompt;\n-    }\n-\n-    public String getStatus() {\n-        return status;\n-    }\n-\n-    public void setStatus(String status) {\n-        this.status = status;\n-    }\n-\n-    public Boolean isRegister() {\n-        return register;\n-    }\n-\n-    public void setRegister(Boolean register) {\n-        this.register = register;\n-    }\n-\n-    public String getTransporter() {\n-        return transporter;\n-    }\n-\n-    public void setTransporter(String transporter) {\n-        this.transporter = transporter;\n-    }\n-\n-    public String getExchanger() {\n-        return exchanger;\n-    }\n-\n-    public void setExchanger(String exchanger) {\n-        this.exchanger = exchanger;\n-    }\n-\n-    /**\n-     * typo, switch to use {@link #getDispatcher()}\n-     *\n-     * @deprecated {@link #getDispatcher()}\n-     */\n-    @Deprecated\n-    @Parameter(excluded = true)\n-    public String getDispather() {\n-        return getDispatcher();\n-    }\n-\n-    /**\n-     * typo, switch to use {@link #getDispatcher()}\n-     *\n-     * @deprecated {@link #setDispatcher(String)}\n-     */\n-    @Deprecated\n-    public void setDispather(String dispather) {\n-        setDispatcher(dispather);\n-    }\n-\n-    public String getDispatcher() {\n-        return dispatcher;\n-    }\n-\n-    public void setDispatcher(String dispatcher) {\n-        this.dispatcher = dispatcher;\n-    }\n-\n-    public String getNetworker() {\n-        return networker;\n-    }\n-\n-    public void setNetworker(String networker) {\n-        this.networker = networker;\n-    }\n-\n-    public Map<String, String> getParameters() {\n-        return parameters;\n-    }\n-\n-    public void setParameters(Map<String, String> parameters) {\n-        this.parameters = parameters;\n-    }\n-\n-    public Boolean isDefault() {\n-        return isDefault;\n-    }\n-\n-    public void setDefault(Boolean isDefault) {\n-        this.isDefault = isDefault;\n-    }\n-\n-    @Parameter(key = SSL_ENABLED_KEY)\n-    public Boolean getSslEnabled() {\n-        return sslEnabled;\n-    }\n-\n-    public void setSslEnabled(Boolean sslEnabled) {\n-        this.sslEnabled = sslEnabled;\n-    }\n-\n-    public Boolean getKeepAlive() {\n-        return keepAlive;\n-    }\n-\n-    public void setKeepAlive(Boolean keepAlive) {\n-        this.keepAlive = keepAlive;\n-    }\n-\n-    public String getOptimizer() {\n-        return optimizer;\n-    }\n-\n-    public void setOptimizer(String optimizer) {\n-        this.optimizer = optimizer;\n-    }\n-\n-    public String getExtension() {\n-        return extension;\n-    }\n-\n-    public void setExtension(String extension) {\n-        this.extension = extension;\n-    }\n-\n-    @Override\n-    public void refresh() {\n-        if (StringUtils.isEmpty(this.getName())) {\n-            this.setName(DUBBO_VERSION_KEY);\n-        }\n-        super.refresh();\n-        if (StringUtils.isNotEmpty(this.getId())) {\n-            this.setPrefix(PROTOCOLS_SUFFIX);\n-            super.refresh();\n-        }\n-    }\n-\n-    @Override\n-    @Parameter(excluded = true)\n-    public boolean isValid() {\n-        return StringUtils.isNotEmpty(name);\n-    }\n-\n-    @Override\n-    public String toString() {\n-        final StringBuilder sb = new StringBuilder(\"ProtocolConfig{\");\n-        sb.append(\"name='\").append(name).append('\\'');\n-        sb.append(\", host='\").append(host).append('\\'');\n-        sb.append(\", port=\").append(port);\n-        sb.append(\", contextpath='\").append(contextpath).append('\\'');\n-        sb.append(\", threadpool='\").append(threadpool).append('\\'');\n-        sb.append(\", threadname='\").append(threadname).append('\\'');\n-        sb.append(\", corethreads=\").append(corethreads);\n-        sb.append(\", threads=\").append(threads);\n-        sb.append(\", iothreads=\").append(iothreads);\n-        sb.append(\", alive=\").append(alive);\n-        sb.append(\", queues=\").append(queues);\n-        sb.append(\", accepts=\").append(accepts);\n-        sb.append(\", codec='\").append(codec).append('\\'');\n-        sb.append(\", serialization='\").append(serialization).append('\\'');\n-        sb.append(\", charset='\").append(charset).append('\\'');\n-        sb.append(\", payload=\").append(payload);\n-        sb.append(\", buffer=\").append(buffer);\n-        sb.append(\", heartbeat=\").append(heartbeat);\n-        sb.append(\", accesslog='\").append(accesslog).append('\\'');\n-        sb.append(\", transporter='\").append(transporter).append('\\'');\n-        sb.append(\", exchanger='\").append(exchanger).append('\\'');\n-        sb.append(\", dispatcher='\").append(dispatcher).append('\\'');\n-        sb.append(\", networker='\").append(networker).append('\\'');\n-        sb.append(\", server='\").append(server).append('\\'');\n-        sb.append(\", client='\").append(client).append('\\'');\n-        sb.append(\", telnet='\").append(telnet).append('\\'');\n-        sb.append(\", prompt='\").append(prompt).append('\\'');\n-        sb.append(\", status='\").append(status).append('\\'');\n-        sb.append(\", register=\").append(register);\n-        sb.append(\", keepAlive=\").append(keepAlive);\n-        sb.append(\", optimizer='\").append(optimizer).append('\\'');\n-        sb.append(\", extension='\").append(extension).append('\\'');\n-        sb.append(\", parameters=\").append(parameters);\n-        sb.append(\", isDefault=\").append(isDefault);\n-        sb.append(\", sslEnabled=\").append(sslEnabled);\n-        sb.append('}');\n-        return sb.toString();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SSL_ENABLED_KEY;\r\n+import static org.apache.dubbo.config.Constants.PROTOCOLS_SUFFIX;\r\n+\r\n+/**\r\n+ * ProtocolConfig\r\n+ *\r\n+ * @export\r\n+ */\r\n+public class ProtocolConfig extends AbstractConfig {\r\n+\r\n+    private static final long serialVersionUID = 6913423882496634749L;\r\n+\r\n+    /**\r\n+     * Protocol name\r\n+     */\r\n+    private String name;\r\n+\r\n+    /**\r\n+     * Service ip address (when there are multiple network cards available)\r\n+     */\r\n+    private String host;\r\n+\r\n+    /**\r\n+     * Service port\r\n+     */\r\n+    private Integer port;\r\n+\r\n+    /**\r\n+     * Context path\r\n+     */\r\n+    private String contextpath;\r\n+\r\n+    /**\r\n+     * Thread pool\r\n+     */\r\n+    private String threadpool;\r\n+\r\n+    /**\r\n+     * Thread pool name\r\n+     */\r\n+    private String threadname;\r\n+\r\n+    /**\r\n+     * Thread pool core thread size\r\n+     */\r\n+    private Integer corethreads;\r\n+\r\n+    /**\r\n+     * Thread pool size (fixed size)\r\n+     */\r\n+    private Integer threads;\r\n+\r\n+    /**\r\n+     * IO thread pool size (fixed size)\r\n+     */\r\n+    private Integer iothreads;\r\n+\r\n+    /**\r\n+     * Thread pool keepAliveTime, default unit TimeUnit.MILLISECONDS\r\n+     */\r\n+    private Integer alive;\r\n+\r\n+    /**\r\n+     * Thread pool's queue length\r\n+     */\r\n+    private Integer queues;\r\n+\r\n+    /**\r\n+     * Max acceptable connections\r\n+     */\r\n+    private Integer accepts;\r\n+\r\n+    /**\r\n+     * Protocol codec\r\n+     */\r\n+    private String codec;\r\n+\r\n+    /**\r\n+     * Serialization\r\n+     */\r\n+    private String serialization;\r\n+\r\n+    /**\r\n+     * Charset\r\n+     */\r\n+    private String charset;\r\n+\r\n+    /**\r\n+     * Payload max length\r\n+     */\r\n+    private Integer payload;\r\n+\r\n+    /**\r\n+     * Buffer size\r\n+     */\r\n+    private Integer buffer;\r\n+\r\n+    /**\r\n+     * Heartbeat interval\r\n+     */\r\n+    private Integer heartbeat;\r\n+\r\n+    /**\r\n+     * Access log\r\n+     */\r\n+    private String accesslog;\r\n+\r\n+    /**\r\n+     * Transporter\r\n+     */\r\n+    private String transporter;\r\n+\r\n+    /**\r\n+     * How information is exchanged\r\n+     */\r\n+    private String exchanger;\r\n+\r\n+    /**\r\n+     * Thread dispatch mode\r\n+     */\r\n+    private String dispatcher;\r\n+\r\n+    /**\r\n+     * Networker\r\n+     */\r\n+    private String networker;\r\n+\r\n+    /**\r\n+     * Sever impl\r\n+     */\r\n+    private String server;\r\n+\r\n+    /**\r\n+     * Client impl\r\n+     */\r\n+    private String client;\r\n+\r\n+    /**\r\n+     * Supported telnet commands, separated with comma.\r\n+     */\r\n+    private String telnet;\r\n+\r\n+    /**\r\n+     * Command line prompt\r\n+     */\r\n+    private String prompt;\r\n+\r\n+    /**\r\n+     * Status check\r\n+     */\r\n+    private String status;\r\n+\r\n+    /**\r\n+     * Whether to register\r\n+     */\r\n+    private Boolean register;\r\n+\r\n+    /**\r\n+     * whether it is a persistent connection\r\n+     */\r\n+    //TODO add this to provider config\r\n+    private Boolean keepAlive;\r\n+\r\n+    // TODO add this to provider config\r\n+    private String optimizer;\r\n+\r\n+    /**\r\n+     * The extension\r\n+     */\r\n+    private String extension;\r\n+\r\n+    /**\r\n+     * The customized parameters\r\n+     */\r\n+    private Map<String, String> parameters;\r\n+\r\n+    /**\r\n+     * If it's default\r\n+     */\r\n+    private Boolean isDefault;\r\n+\r\n+    private Boolean sslEnabled;\r\n+\r\n+    public ProtocolConfig() {\r\n+    }\r\n+\r\n+    public ProtocolConfig(String name) {\r\n+        setName(name);\r\n+    }\r\n+\r\n+    public ProtocolConfig(String name, int port) {\r\n+        setName(name);\r\n+        setPort(port);\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getName() {\r\n+        return name;\r\n+    }\r\n+\r\n+    public final void setName(String name) {\r\n+        this.name = name;\r\n+        this.updateIdIfAbsent(name);\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getHost() {\r\n+        return host;\r\n+    }\r\n+\r\n+    public void setHost(String host) {\r\n+        this.host = host;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public Integer getPort() {\r\n+        return port;\r\n+    }\r\n+\r\n+    public final void setPort(Integer port) {\r\n+        this.port = port;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    @Parameter(excluded = true)\r\n+    public String getPath() {\r\n+        return getContextpath();\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void setPath(String path) {\r\n+        setContextpath(path);\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getContextpath() {\r\n+        return contextpath;\r\n+    }\r\n+\r\n+    public void setContextpath(String contextpath) {\r\n+        this.contextpath = contextpath;\r\n+    }\r\n+\r\n+    public String getThreadpool() {\r\n+        return threadpool;\r\n+    }\r\n+\r\n+    public void setThreadpool(String threadpool) {\r\n+        this.threadpool = threadpool;\r\n+    }\r\n+\r\n+    public String getThreadname() {\r\n+        return threadname;\r\n+    }\r\n+\r\n+    public void setThreadname(String threadname) {\r\n+        this.threadname = threadname;\r\n+    }\r\n+\r\n+    public Integer getCorethreads() {\r\n+        return corethreads;\r\n+    }\r\n+\r\n+    public void setCorethreads(Integer corethreads) {\r\n+        this.corethreads = corethreads;\r\n+    }\r\n+\r\n+    public Integer getThreads() {\r\n+        return threads;\r\n+    }\r\n+\r\n+    public void setThreads(Integer threads) {\r\n+        this.threads = threads;\r\n+    }\r\n+\r\n+    public Integer getIothreads() {\r\n+        return iothreads;\r\n+    }\r\n+\r\n+    public void setIothreads(Integer iothreads) {\r\n+        this.iothreads = iothreads;\r\n+    }\r\n+\r\n+    public Integer getAlive() {\r\n+        return alive;\r\n+    }\r\n+\r\n+    public void setAlive(Integer alive) {\r\n+        this.alive = alive;\r\n+    }\r\n+\r\n+    public Integer getQueues() {\r\n+        return queues;\r\n+    }\r\n+\r\n+    public void setQueues(Integer queues) {\r\n+        this.queues = queues;\r\n+    }\r\n+\r\n+    public Integer getAccepts() {\r\n+        return accepts;\r\n+    }\r\n+\r\n+    public void setAccepts(Integer accepts) {\r\n+        this.accepts = accepts;\r\n+    }\r\n+\r\n+    public String getCodec() {\r\n+        return codec;\r\n+    }\r\n+\r\n+    public void setCodec(String codec) {\r\n+        this.codec = codec;\r\n+    }\r\n+\r\n+    public String getSerialization() {\r\n+        return serialization;\r\n+    }\r\n+\r\n+    public void setSerialization(String serialization) {\r\n+        this.serialization = serialization;\r\n+    }\r\n+\r\n+    public String getCharset() {\r\n+        return charset;\r\n+    }\r\n+\r\n+    public void setCharset(String charset) {\r\n+        this.charset = charset;\r\n+    }\r\n+\r\n+    public Integer getPayload() {\r\n+        return payload;\r\n+    }\r\n+\r\n+    public void setPayload(Integer payload) {\r\n+        this.payload = payload;\r\n+    }\r\n+\r\n+    public Integer getBuffer() {\r\n+        return buffer;\r\n+    }\r\n+\r\n+    public void setBuffer(Integer buffer) {\r\n+        this.buffer = buffer;\r\n+    }\r\n+\r\n+    public Integer getHeartbeat() {\r\n+        return heartbeat;\r\n+    }\r\n+\r\n+    public void setHeartbeat(Integer heartbeat) {\r\n+        this.heartbeat = heartbeat;\r\n+    }\r\n+\r\n+    public String getServer() {\r\n+        return server;\r\n+    }\r\n+\r\n+    public void setServer(String server) {\r\n+        this.server = server;\r\n+    }\r\n+\r\n+    public String getClient() {\r\n+        return client;\r\n+    }\r\n+\r\n+    public void setClient(String client) {\r\n+        this.client = client;\r\n+    }\r\n+\r\n+    public String getAccesslog() {\r\n+        return accesslog;\r\n+    }\r\n+\r\n+    public void setAccesslog(String accesslog) {\r\n+        this.accesslog = accesslog;\r\n+    }\r\n+\r\n+    public String getTelnet() {\r\n+        return telnet;\r\n+    }\r\n+\r\n+    public void setTelnet(String telnet) {\r\n+        this.telnet = telnet;\r\n+    }\r\n+\r\n+    @Parameter(escaped = true)\r\n+    public String getPrompt() {\r\n+        return prompt;\r\n+    }\r\n+\r\n+    public void setPrompt(String prompt) {\r\n+        this.prompt = prompt;\r\n+    }\r\n+\r\n+    public String getStatus() {\r\n+        return status;\r\n+    }\r\n+\r\n+    public void setStatus(String status) {\r\n+        this.status = status;\r\n+    }\r\n+\r\n+    public Boolean isRegister() {\r\n+        return register;\r\n+    }\r\n+\r\n+    public void setRegister(Boolean register) {\r\n+        this.register = register;\r\n+    }\r\n+\r\n+    public String getTransporter() {\r\n+        return transporter;\r\n+    }\r\n+\r\n+    public void setTransporter(String transporter) {\r\n+        this.transporter = transporter;\r\n+    }\r\n+\r\n+    public String getExchanger() {\r\n+        return exchanger;\r\n+    }\r\n+\r\n+    public void setExchanger(String exchanger) {\r\n+        this.exchanger = exchanger;\r\n+    }\r\n+\r\n+    /**\r\n+     * typo, switch to use {@link #getDispatcher()}\r\n+     *\r\n+     * @deprecated {@link #getDispatcher()}\r\n+     */\r\n+    @Deprecated\r\n+    @Parameter(excluded = true)\r\n+    public String getDispather() {\r\n+        return getDispatcher();\r\n+    }\r\n+\r\n+    /**\r\n+     * typo, switch to use {@link #getDispatcher()}\r\n+     *\r\n+     * @deprecated {@link #setDispatcher(String)}\r\n+     */\r\n+    @Deprecated\r\n+    public void setDispather(String dispather) {\r\n+        setDispatcher(dispather);\r\n+    }\r\n+\r\n+    public String getDispatcher() {\r\n+        return dispatcher;\r\n+    }\r\n+\r\n+    public void setDispatcher(String dispatcher) {\r\n+        this.dispatcher = dispatcher;\r\n+    }\r\n+\r\n+    public String getNetworker() {\r\n+        return networker;\r\n+    }\r\n+\r\n+    public void setNetworker(String networker) {\r\n+        this.networker = networker;\r\n+    }\r\n+\r\n+    public Map<String, String> getParameters() {\r\n+        return parameters;\r\n+    }\r\n+\r\n+    public void setParameters(Map<String, String> parameters) {\r\n+        this.parameters = parameters;\r\n+    }\r\n+\r\n+    public Boolean isDefault() {\r\n+        return isDefault;\r\n+    }\r\n+\r\n+    public void setDefault(Boolean isDefault) {\r\n+        this.isDefault = isDefault;\r\n+    }\r\n+\r\n+    @Parameter(key = SSL_ENABLED_KEY)\r\n+    public Boolean getSslEnabled() {\r\n+        return sslEnabled;\r\n+    }\r\n+\r\n+    public void setSslEnabled(Boolean sslEnabled) {\r\n+        this.sslEnabled = sslEnabled;\r\n+    }\r\n+\r\n+    public Boolean getKeepAlive() {\r\n+        return keepAlive;\r\n+    }\r\n+\r\n+    public void setKeepAlive(Boolean keepAlive) {\r\n+        this.keepAlive = keepAlive;\r\n+    }\r\n+\r\n+    public String getOptimizer() {\r\n+        return optimizer;\r\n+    }\r\n+\r\n+    public void setOptimizer(String optimizer) {\r\n+        this.optimizer = optimizer;\r\n+    }\r\n+\r\n+    public String getExtension() {\r\n+        return extension;\r\n+    }\r\n+\r\n+    public void setExtension(String extension) {\r\n+        this.extension = extension;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void refresh() {\r\n+        if (StringUtils.isEmpty(this.getName())) {\r\n+            this.setName(DUBBO_VERSION_KEY);\r\n+        }\r\n+        super.refresh();\r\n+        if (StringUtils.isNotEmpty(this.getId())) {\r\n+            this.setPrefix(PROTOCOLS_SUFFIX);\r\n+            super.refresh();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    @Parameter(excluded = true)\r\n+    public boolean isValid() {\r\n+        return StringUtils.isNotEmpty(name);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        final StringBuilder sb = new StringBuilder(\"ProtocolConfig{\");\r\n+        sb.append(\"name='\").append(name).append('\\'');\r\n+        sb.append(\", host='\").append(host).append('\\'');\r\n+        sb.append(\", port=\").append(port);\r\n+        sb.append(\", contextpath='\").append(contextpath).append('\\'');\r\n+        sb.append(\", threadpool='\").append(threadpool).append('\\'');\r\n+        sb.append(\", threadname='\").append(threadname).append('\\'');\r\n+        sb.append(\", corethreads=\").append(corethreads);\r\n+        sb.append(\", threads=\").append(threads);\r\n+        sb.append(\", iothreads=\").append(iothreads);\r\n+        sb.append(\", alive=\").append(alive);\r\n+        sb.append(\", queues=\").append(queues);\r\n+        sb.append(\", accepts=\").append(accepts);\r\n+        sb.append(\", codec='\").append(codec).append('\\'');\r\n+        sb.append(\", serialization='\").append(serialization).append('\\'');\r\n+        sb.append(\", charset='\").append(charset).append('\\'');\r\n+        sb.append(\", payload=\").append(payload);\r\n+        sb.append(\", buffer=\").append(buffer);\r\n+        sb.append(\", heartbeat=\").append(heartbeat);\r\n+        sb.append(\", accesslog='\").append(accesslog).append('\\'');\r\n+        sb.append(\", transporter='\").append(transporter).append('\\'');\r\n+        sb.append(\", exchanger='\").append(exchanger).append('\\'');\r\n+        sb.append(\", dispatcher='\").append(dispatcher).append('\\'');\r\n+        sb.append(\", networker='\").append(networker).append('\\'');\r\n+        sb.append(\", server='\").append(server).append('\\'');\r\n+        sb.append(\", client='\").append(client).append('\\'');\r\n+        sb.append(\", telnet='\").append(telnet).append('\\'');\r\n+        sb.append(\", prompt='\").append(prompt).append('\\'');\r\n+        sb.append(\", status='\").append(status).append('\\'');\r\n+        sb.append(\", register=\").append(register);\r\n+        sb.append(\", keepAlive=\").append(keepAlive);\r\n+        sb.append(\", optimizer='\").append(optimizer).append('\\'');\r\n+        sb.append(\", extension='\").append(extension).append('\\'');\r\n+        sb.append(\", parameters=\").append(parameters);\r\n+        sb.append(\", isDefault=\").append(isDefault);\r\n+        sb.append(\", sslEnabled=\").append(sslEnabled);\r\n+        sb.append('}');\r\n+        return sb.toString();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/ProviderConfig.java", "source2": "org/apache/dubbo/config/ProviderConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,472 +1,472 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.config.support.Parameter;\n-\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-\n-/**\n- * The service provider default configuration\n- *\n- * @export\n- * @see org.apache.dubbo.config.ProtocolConfig\n- * @see ServiceConfigBase\n- */\n-public class ProviderConfig extends AbstractServiceConfig {\n-\n-    private static final long serialVersionUID = 6913423882496634749L;\n-\n-    // ======== protocol default values, it'll take effect when protocol's attributes are not set ========\n-\n-    /**\n-     * Service ip addresses (used when there are multiple network cards available)\n-     */\n-    private String host;\n-\n-    /**\n-     * Service port\n-     */\n-    private Integer port;\n-\n-    /**\n-     * Context path\n-     */\n-    private String contextpath;\n-\n-    /**\n-     * Thread pool\n-     */\n-    private String threadpool;\n-\n-    /**\n-     * Thread pool name\n-     */\n-    private String threadname;\n-\n-    /**\n-     * Thread pool size (fixed size)\n-     */\n-    private Integer threads;\n-\n-    /**\n-     * IO thread pool size (fixed size)\n-     */\n-    private Integer iothreads;\n-\n-    /**\n-     * Thread pool keepAliveTime, default unit TimeUnit.MILLISECONDS\n-     */\n-    private Integer alive;\n-\n-    /**\n-     * Thread pool queue length\n-     */\n-    private Integer queues;\n-\n-    /**\n-     * Max acceptable connections\n-     */\n-    private Integer accepts;\n-\n-    /**\n-     * Protocol codec\n-     */\n-    private String codec;\n-\n-    /**\n-     * The serialization charset\n-     */\n-    private String charset;\n-\n-    /**\n-     * Payload max length\n-     */\n-    private Integer payload;\n-\n-    /**\n-     * The network io buffer size\n-     */\n-    private Integer buffer;\n-\n-    /**\n-     * Transporter\n-     */\n-    private String transporter;\n-\n-    /**\n-     * How information gets exchanged\n-     */\n-    private String exchanger;\n-\n-    /**\n-     * Thread dispatching mode\n-     */\n-    private String dispatcher;\n-\n-    /**\n-     * Networker\n-     */\n-    private String networker;\n-\n-    /**\n-     * The server-side implementation model of the protocol\n-     */\n-    private String server;\n-\n-    /**\n-     * The client-side implementation model of the protocol\n-     */\n-    private String client;\n-\n-    /**\n-     * Supported telnet commands, separated with comma.\n-     */\n-    private String telnet;\n-\n-    /**\n-     * Command line prompt\n-     */\n-    private String prompt;\n-\n-    /**\n-     * Status check\n-     */\n-    private String status;\n-\n-    /**\n-     * Wait time when stop\n-     */\n-    private Integer wait;\n-\n-    /**\n-     * Whether to use the default protocol\n-     */\n-    private Boolean isDefault;\n-\n-    @Deprecated\n-    public void setProtocol(String protocol) {\n-        this.protocols = new ArrayList<>(Arrays.asList(new ProtocolConfig(protocol)));\n-    }\n-\n-    @Parameter(excluded = true)\n-    public Boolean isDefault() {\n-        return isDefault;\n-    }\n-\n-    @Deprecated\n-    public void setDefault(Boolean isDefault) {\n-        this.isDefault = isDefault;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getHost() {\n-        return host;\n-    }\n-\n-    public void setHost(String host) {\n-        this.host = host;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public Integer getPort() {\n-        return port;\n-    }\n-\n-    @Deprecated\n-    public void setPort(Integer port) {\n-        this.port = port;\n-    }\n-\n-    @Deprecated\n-    @Parameter(excluded = true)\n-    public String getPath() {\n-        return getContextpath();\n-    }\n-\n-    @Deprecated\n-    public void setPath(String path) {\n-        setContextpath(path);\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getContextpath() {\n-        return contextpath;\n-    }\n-\n-    public void setContextpath(String contextpath) {\n-        this.contextpath = contextpath;\n-    }\n-\n-    public String getThreadpool() {\n-        return threadpool;\n-    }\n-\n-    public void setThreadpool(String threadpool) {\n-        this.threadpool = threadpool;\n-    }\n-\n-    public String getThreadname() {\n-        return threadname;\n-    }\n-\n-    public void setThreadname(String threadname) {\n-        this.threadname = threadname;\n-    }\n-\n-    public Integer getThreads() {\n-        return threads;\n-    }\n-\n-    public void setThreads(Integer threads) {\n-        this.threads = threads;\n-    }\n-\n-    public Integer getIothreads() {\n-        return iothreads;\n-    }\n-\n-    public void setIothreads(Integer iothreads) {\n-        this.iothreads = iothreads;\n-    }\n-\n-    public Integer getAlive() {\n-        return alive;\n-    }\n-\n-    public void setAlive(Integer alive) {\n-        this.alive = alive;\n-    }\n-\n-    public Integer getQueues() {\n-        return queues;\n-    }\n-\n-    public void setQueues(Integer queues) {\n-        this.queues = queues;\n-    }\n-\n-    public Integer getAccepts() {\n-        return accepts;\n-    }\n-\n-    public void setAccepts(Integer accepts) {\n-        this.accepts = accepts;\n-    }\n-\n-    public String getCodec() {\n-        return codec;\n-    }\n-\n-    public void setCodec(String codec) {\n-        this.codec = codec;\n-    }\n-\n-    public String getCharset() {\n-        return charset;\n-    }\n-\n-    public void setCharset(String charset) {\n-        this.charset = charset;\n-    }\n-\n-    public Integer getPayload() {\n-        return payload;\n-    }\n-\n-    public void setPayload(Integer payload) {\n-        this.payload = payload;\n-    }\n-\n-    public Integer getBuffer() {\n-        return buffer;\n-    }\n-\n-    public void setBuffer(Integer buffer) {\n-        this.buffer = buffer;\n-    }\n-\n-    public String getServer() {\n-        return server;\n-    }\n-\n-    public void setServer(String server) {\n-        this.server = server;\n-    }\n-\n-    public String getClient() {\n-        return client;\n-    }\n-\n-    public void setClient(String client) {\n-        this.client = client;\n-    }\n-\n-    public String getTelnet() {\n-        return telnet;\n-    }\n-\n-    public void setTelnet(String telnet) {\n-        this.telnet = telnet;\n-    }\n-\n-    @Parameter(escaped = true)\n-    public String getPrompt() {\n-        return prompt;\n-    }\n-\n-    public void setPrompt(String prompt) {\n-        this.prompt = prompt;\n-    }\n-\n-    public String getStatus() {\n-        return status;\n-    }\n-\n-    public void setStatus(String status) {\n-        this.status = status;\n-    }\n-\n-    @Override\n-    public String getCluster() {\n-        return super.getCluster();\n-    }\n-\n-    @Override\n-    public Integer getConnections() {\n-        return super.getConnections();\n-    }\n-\n-    @Override\n-    public Integer getTimeout() {\n-        return super.getTimeout();\n-    }\n-\n-    @Override\n-    public Integer getRetries() {\n-        return super.getRetries();\n-    }\n-\n-    @Override\n-    public String getLoadbalance() {\n-        return super.getLoadbalance();\n-    }\n-\n-    @Override\n-    public Boolean isAsync() {\n-        return super.isAsync();\n-    }\n-\n-    @Override\n-    public Integer getActives() {\n-        return super.getActives();\n-    }\n-\n-    public String getTransporter() {\n-        return transporter;\n-    }\n-\n-    public void setTransporter(String transporter) {\n-        this.transporter = transporter;\n-    }\n-\n-    public String getExchanger() {\n-        return exchanger;\n-    }\n-\n-    public void setExchanger(String exchanger) {\n-        this.exchanger = exchanger;\n-    }\n-\n-    /**\n-     * typo, switch to use {@link #getDispatcher()}\n-     *\n-     * @deprecated {@link #getDispatcher()}\n-     */\n-    @Deprecated\n-    @Parameter(excluded = true)\n-    public String getDispather() {\n-        return getDispatcher();\n-    }\n-\n-    /**\n-     * typo, switch to use {@link #getDispatcher()}\n-     *\n-     * @deprecated {@link #setDispatcher(String)}\n-     */\n-    @Deprecated\n-    public void setDispather(String dispather) {\n-        setDispatcher(dispather);\n-    }\n-\n-    public String getDispatcher() {\n-        return dispatcher;\n-    }\n-\n-    public void setDispatcher(String dispatcher) {\n-        this.dispatcher = dispatcher;\n-    }\n-\n-    public String getNetworker() {\n-        return networker;\n-    }\n-\n-    public void setNetworker(String networker) {\n-        this.networker = networker;\n-    }\n-\n-    public Integer getWait() {\n-        return wait;\n-    }\n-\n-    public void setWait(Integer wait) {\n-        this.wait = wait;\n-    }\n-\n-    @Override\n-    public String toString() {\n-        final StringBuilder sb = new StringBuilder(\"ProviderConfig{\");\n-        sb.append(\"host='\").append(host).append('\\'');\n-        sb.append(\", port=\").append(port);\n-        sb.append(\", contextpath='\").append(contextpath).append('\\'');\n-        sb.append(\", threadpool='\").append(threadpool).append('\\'');\n-        sb.append(\", threadname='\").append(threadname).append('\\'');\n-        sb.append(\", threads=\").append(threads);\n-        sb.append(\", iothreads=\").append(iothreads);\n-        sb.append(\", alive=\").append(alive);\n-        sb.append(\", queues=\").append(queues);\n-        sb.append(\", accepts=\").append(accepts);\n-        sb.append(\", codec='\").append(codec).append('\\'');\n-        sb.append(\", charset='\").append(charset).append('\\'');\n-        sb.append(\", payload=\").append(payload);\n-        sb.append(\", buffer=\").append(buffer);\n-        sb.append(\", transporter='\").append(transporter).append('\\'');\n-        sb.append(\", exchanger='\").append(exchanger).append('\\'');\n-        sb.append(\", dispatcher='\").append(dispatcher).append('\\'');\n-        sb.append(\", networker='\").append(networker).append('\\'');\n-        sb.append(\", server='\").append(server).append('\\'');\n-        sb.append(\", client='\").append(client).append('\\'');\n-        sb.append(\", telnet='\").append(telnet).append('\\'');\n-        sb.append(\", prompt='\").append(prompt).append('\\'');\n-        sb.append(\", status='\").append(status).append('\\'');\n-        sb.append(\", wait=\").append(wait);\n-        sb.append(\", isDefault=\").append(isDefault);\n-        sb.append('}');\n-        return sb.toString();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+\r\n+/**\r\n+ * The service provider default configuration\r\n+ *\r\n+ * @export\r\n+ * @see org.apache.dubbo.config.ProtocolConfig\r\n+ * @see ServiceConfigBase\r\n+ */\r\n+public class ProviderConfig extends AbstractServiceConfig {\r\n+\r\n+    private static final long serialVersionUID = 6913423882496634749L;\r\n+\r\n+    // ======== protocol default values, it'll take effect when protocol's attributes are not set ========\r\n+\r\n+    /**\r\n+     * Service ip addresses (used when there are multiple network cards available)\r\n+     */\r\n+    private String host;\r\n+\r\n+    /**\r\n+     * Service port\r\n+     */\r\n+    private Integer port;\r\n+\r\n+    /**\r\n+     * Context path\r\n+     */\r\n+    private String contextpath;\r\n+\r\n+    /**\r\n+     * Thread pool\r\n+     */\r\n+    private String threadpool;\r\n+\r\n+    /**\r\n+     * Thread pool name\r\n+     */\r\n+    private String threadname;\r\n+\r\n+    /**\r\n+     * Thread pool size (fixed size)\r\n+     */\r\n+    private Integer threads;\r\n+\r\n+    /**\r\n+     * IO thread pool size (fixed size)\r\n+     */\r\n+    private Integer iothreads;\r\n+\r\n+    /**\r\n+     * Thread pool keepAliveTime, default unit TimeUnit.MILLISECONDS\r\n+     */\r\n+    private Integer alive;\r\n+\r\n+    /**\r\n+     * Thread pool queue length\r\n+     */\r\n+    private Integer queues;\r\n+\r\n+    /**\r\n+     * Max acceptable connections\r\n+     */\r\n+    private Integer accepts;\r\n+\r\n+    /**\r\n+     * Protocol codec\r\n+     */\r\n+    private String codec;\r\n+\r\n+    /**\r\n+     * The serialization charset\r\n+     */\r\n+    private String charset;\r\n+\r\n+    /**\r\n+     * Payload max length\r\n+     */\r\n+    private Integer payload;\r\n+\r\n+    /**\r\n+     * The network io buffer size\r\n+     */\r\n+    private Integer buffer;\r\n+\r\n+    /**\r\n+     * Transporter\r\n+     */\r\n+    private String transporter;\r\n+\r\n+    /**\r\n+     * How information gets exchanged\r\n+     */\r\n+    private String exchanger;\r\n+\r\n+    /**\r\n+     * Thread dispatching mode\r\n+     */\r\n+    private String dispatcher;\r\n+\r\n+    /**\r\n+     * Networker\r\n+     */\r\n+    private String networker;\r\n+\r\n+    /**\r\n+     * The server-side implementation model of the protocol\r\n+     */\r\n+    private String server;\r\n+\r\n+    /**\r\n+     * The client-side implementation model of the protocol\r\n+     */\r\n+    private String client;\r\n+\r\n+    /**\r\n+     * Supported telnet commands, separated with comma.\r\n+     */\r\n+    private String telnet;\r\n+\r\n+    /**\r\n+     * Command line prompt\r\n+     */\r\n+    private String prompt;\r\n+\r\n+    /**\r\n+     * Status check\r\n+     */\r\n+    private String status;\r\n+\r\n+    /**\r\n+     * Wait time when stop\r\n+     */\r\n+    private Integer wait;\r\n+\r\n+    /**\r\n+     * Whether to use the default protocol\r\n+     */\r\n+    private Boolean isDefault;\r\n+\r\n+    @Deprecated\r\n+    public void setProtocol(String protocol) {\r\n+        this.protocols = new ArrayList<>(Arrays.asList(new ProtocolConfig(protocol)));\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public Boolean isDefault() {\r\n+        return isDefault;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void setDefault(Boolean isDefault) {\r\n+        this.isDefault = isDefault;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getHost() {\r\n+        return host;\r\n+    }\r\n+\r\n+    public void setHost(String host) {\r\n+        this.host = host;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public Integer getPort() {\r\n+        return port;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void setPort(Integer port) {\r\n+        this.port = port;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    @Parameter(excluded = true)\r\n+    public String getPath() {\r\n+        return getContextpath();\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void setPath(String path) {\r\n+        setContextpath(path);\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getContextpath() {\r\n+        return contextpath;\r\n+    }\r\n+\r\n+    public void setContextpath(String contextpath) {\r\n+        this.contextpath = contextpath;\r\n+    }\r\n+\r\n+    public String getThreadpool() {\r\n+        return threadpool;\r\n+    }\r\n+\r\n+    public void setThreadpool(String threadpool) {\r\n+        this.threadpool = threadpool;\r\n+    }\r\n+\r\n+    public String getThreadname() {\r\n+        return threadname;\r\n+    }\r\n+\r\n+    public void setThreadname(String threadname) {\r\n+        this.threadname = threadname;\r\n+    }\r\n+\r\n+    public Integer getThreads() {\r\n+        return threads;\r\n+    }\r\n+\r\n+    public void setThreads(Integer threads) {\r\n+        this.threads = threads;\r\n+    }\r\n+\r\n+    public Integer getIothreads() {\r\n+        return iothreads;\r\n+    }\r\n+\r\n+    public void setIothreads(Integer iothreads) {\r\n+        this.iothreads = iothreads;\r\n+    }\r\n+\r\n+    public Integer getAlive() {\r\n+        return alive;\r\n+    }\r\n+\r\n+    public void setAlive(Integer alive) {\r\n+        this.alive = alive;\r\n+    }\r\n+\r\n+    public Integer getQueues() {\r\n+        return queues;\r\n+    }\r\n+\r\n+    public void setQueues(Integer queues) {\r\n+        this.queues = queues;\r\n+    }\r\n+\r\n+    public Integer getAccepts() {\r\n+        return accepts;\r\n+    }\r\n+\r\n+    public void setAccepts(Integer accepts) {\r\n+        this.accepts = accepts;\r\n+    }\r\n+\r\n+    public String getCodec() {\r\n+        return codec;\r\n+    }\r\n+\r\n+    public void setCodec(String codec) {\r\n+        this.codec = codec;\r\n+    }\r\n+\r\n+    public String getCharset() {\r\n+        return charset;\r\n+    }\r\n+\r\n+    public void setCharset(String charset) {\r\n+        this.charset = charset;\r\n+    }\r\n+\r\n+    public Integer getPayload() {\r\n+        return payload;\r\n+    }\r\n+\r\n+    public void setPayload(Integer payload) {\r\n+        this.payload = payload;\r\n+    }\r\n+\r\n+    public Integer getBuffer() {\r\n+        return buffer;\r\n+    }\r\n+\r\n+    public void setBuffer(Integer buffer) {\r\n+        this.buffer = buffer;\r\n+    }\r\n+\r\n+    public String getServer() {\r\n+        return server;\r\n+    }\r\n+\r\n+    public void setServer(String server) {\r\n+        this.server = server;\r\n+    }\r\n+\r\n+    public String getClient() {\r\n+        return client;\r\n+    }\r\n+\r\n+    public void setClient(String client) {\r\n+        this.client = client;\r\n+    }\r\n+\r\n+    public String getTelnet() {\r\n+        return telnet;\r\n+    }\r\n+\r\n+    public void setTelnet(String telnet) {\r\n+        this.telnet = telnet;\r\n+    }\r\n+\r\n+    @Parameter(escaped = true)\r\n+    public String getPrompt() {\r\n+        return prompt;\r\n+    }\r\n+\r\n+    public void setPrompt(String prompt) {\r\n+        this.prompt = prompt;\r\n+    }\r\n+\r\n+    public String getStatus() {\r\n+        return status;\r\n+    }\r\n+\r\n+    public void setStatus(String status) {\r\n+        this.status = status;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getCluster() {\r\n+        return super.getCluster();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Integer getConnections() {\r\n+        return super.getConnections();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Integer getTimeout() {\r\n+        return super.getTimeout();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Integer getRetries() {\r\n+        return super.getRetries();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getLoadbalance() {\r\n+        return super.getLoadbalance();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Boolean isAsync() {\r\n+        return super.isAsync();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Integer getActives() {\r\n+        return super.getActives();\r\n+    }\r\n+\r\n+    public String getTransporter() {\r\n+        return transporter;\r\n+    }\r\n+\r\n+    public void setTransporter(String transporter) {\r\n+        this.transporter = transporter;\r\n+    }\r\n+\r\n+    public String getExchanger() {\r\n+        return exchanger;\r\n+    }\r\n+\r\n+    public void setExchanger(String exchanger) {\r\n+        this.exchanger = exchanger;\r\n+    }\r\n+\r\n+    /**\r\n+     * typo, switch to use {@link #getDispatcher()}\r\n+     *\r\n+     * @deprecated {@link #getDispatcher()}\r\n+     */\r\n+    @Deprecated\r\n+    @Parameter(excluded = true)\r\n+    public String getDispather() {\r\n+        return getDispatcher();\r\n+    }\r\n+\r\n+    /**\r\n+     * typo, switch to use {@link #getDispatcher()}\r\n+     *\r\n+     * @deprecated {@link #setDispatcher(String)}\r\n+     */\r\n+    @Deprecated\r\n+    public void setDispather(String dispather) {\r\n+        setDispatcher(dispather);\r\n+    }\r\n+\r\n+    public String getDispatcher() {\r\n+        return dispatcher;\r\n+    }\r\n+\r\n+    public void setDispatcher(String dispatcher) {\r\n+        this.dispatcher = dispatcher;\r\n+    }\r\n+\r\n+    public String getNetworker() {\r\n+        return networker;\r\n+    }\r\n+\r\n+    public void setNetworker(String networker) {\r\n+        this.networker = networker;\r\n+    }\r\n+\r\n+    public Integer getWait() {\r\n+        return wait;\r\n+    }\r\n+\r\n+    public void setWait(Integer wait) {\r\n+        this.wait = wait;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        final StringBuilder sb = new StringBuilder(\"ProviderConfig{\");\r\n+        sb.append(\"host='\").append(host).append('\\'');\r\n+        sb.append(\", port=\").append(port);\r\n+        sb.append(\", contextpath='\").append(contextpath).append('\\'');\r\n+        sb.append(\", threadpool='\").append(threadpool).append('\\'');\r\n+        sb.append(\", threadname='\").append(threadname).append('\\'');\r\n+        sb.append(\", threads=\").append(threads);\r\n+        sb.append(\", iothreads=\").append(iothreads);\r\n+        sb.append(\", alive=\").append(alive);\r\n+        sb.append(\", queues=\").append(queues);\r\n+        sb.append(\", accepts=\").append(accepts);\r\n+        sb.append(\", codec='\").append(codec).append('\\'');\r\n+        sb.append(\", charset='\").append(charset).append('\\'');\r\n+        sb.append(\", payload=\").append(payload);\r\n+        sb.append(\", buffer=\").append(buffer);\r\n+        sb.append(\", transporter='\").append(transporter).append('\\'');\r\n+        sb.append(\", exchanger='\").append(exchanger).append('\\'');\r\n+        sb.append(\", dispatcher='\").append(dispatcher).append('\\'');\r\n+        sb.append(\", networker='\").append(networker).append('\\'');\r\n+        sb.append(\", server='\").append(server).append('\\'');\r\n+        sb.append(\", client='\").append(client).append('\\'');\r\n+        sb.append(\", telnet='\").append(telnet).append('\\'');\r\n+        sb.append(\", prompt='\").append(prompt).append('\\'');\r\n+        sb.append(\", status='\").append(status).append('\\'');\r\n+        sb.append(\", wait=\").append(wait);\r\n+        sb.append(\", isDefault=\").append(isDefault);\r\n+        sb.append('}');\r\n+        return sb.toString();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/ReferenceConfigBase.java", "source2": "org/apache/dubbo/config/ReferenceConfigBase.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,264 +1,264 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.ClassUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.annotation.Reference;\n-import org.apache.dubbo.config.support.Parameter;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.ServiceMetadata;\n-import org.apache.dubbo.rpc.service.GenericService;\n-import org.apache.dubbo.rpc.support.ProtocolUtils;\n-\n-import java.io.File;\n-import java.io.FileInputStream;\n-import java.io.IOException;\n-import java.util.Properties;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\n-\n-/**\n- * ReferenceConfig\n- *\n- * @export\n- */\n-public abstract class ReferenceConfigBase<T> extends AbstractReferenceConfig {\n-\n-    private static final long serialVersionUID = -5864351140409987595L;\n-\n-    /**\n-     * The interface class of the reference service\n-     */\n-    protected Class<?> interfaceClass;\n-\n-    /**\n-     * client type\n-     */\n-    protected String client;\n-\n-    /**\n-     * The url for peer-to-peer invocation\n-     */\n-    protected String url;\n-\n-    /**\n-     * The consumer config (default)\n-     */\n-    protected ConsumerConfig consumer;\n-\n-    /**\n-     * Only the service provider of the specified protocol is invoked, and other protocols are ignored.\n-     */\n-    protected String protocol;\n-\n-\n-    public ReferenceConfigBase() {\n-        serviceMetadata = new ServiceMetadata();\n-        serviceMetadata.addAttribute(\"ORIGIN_CONFIG\", this);\n-    }\n-\n-    public ReferenceConfigBase(Reference reference) {\n-        serviceMetadata = new ServiceMetadata();\n-        serviceMetadata.addAttribute(\"ORIGIN_CONFIG\", this);\n-        appendAnnotation(Reference.class, reference);\n-        setMethods(MethodConfig.constructMethodConfig(reference.methods()));\n-    }\n-\n-    public boolean shouldCheck() {\n-        Boolean shouldCheck = isCheck();\n-        if (shouldCheck == null && getConsumer() != null) {\n-            shouldCheck = getConsumer().isCheck();\n-        }\n-        if (shouldCheck == null) {\n-            // default true\n-            shouldCheck = true;\n-        }\n-        return shouldCheck;\n-    }\n-\n-    public boolean shouldInit() {\n-        Boolean shouldInit = isInit();\n-        if (shouldInit == null && getConsumer() != null) {\n-            shouldInit = getConsumer().isInit();\n-        }\n-        if (shouldInit == null) {\n-            // default is true, spring will still init lazily by setting init's default value to false,\n-            // the def default setting happens in {@link ReferenceBean#afterPropertiesSet}.\n-            return true;\n-        }\n-        return shouldInit;\n-    }\n-\n-    public void checkDefault() throws IllegalStateException {\n-        if (consumer == null) {\n-            consumer = ApplicationModel.getConfigManager()\n-                    .getDefaultConsumer()\n-                    .orElse(new ConsumerConfig());\n-        }\n-    }\n-\n-    public Class<?> getActualInterface() {\n-        Class actualInterface = interfaceClass;\n-        if (interfaceClass == GenericService.class) {\n-            try {\n-                actualInterface = Class.forName(interfaceName);\n-            } catch (ClassNotFoundException e) {\n-                // ignore\n-            }\n-        }\n-        return actualInterface;\n-    }\n-\n-    public Class<?> getInterfaceClass() {\n-        if (interfaceClass != null) {\n-            return interfaceClass;\n-        }\n-        if (ProtocolUtils.isGeneric(getGeneric())\n-                || (getConsumer() != null && ProtocolUtils.isGeneric(getConsumer().getGeneric()))) {\n-            return GenericService.class;\n-        }\n-        try {\n-            if (interfaceName != null && interfaceName.length() > 0) {\n-                interfaceClass = Class.forName(interfaceName, true, ClassUtils.getClassLoader());\n-            }\n-        } catch (ClassNotFoundException t) {\n-            throw new IllegalStateException(t.getMessage(), t);\n-        }\n-\n-        return interfaceClass;\n-    }\n-\n-    /**\n-     * @param interfaceClass\n-     * @see #setInterface(Class)\n-     * @deprecated\n-     */\n-    @Deprecated\n-    public void setInterfaceClass(Class<?> interfaceClass) {\n-        setInterface(interfaceClass);\n-    }\n-\n-    public void setInterface(Class<?> interfaceClass) {\n-        if (interfaceClass != null && !interfaceClass.isInterface()) {\n-            throw new IllegalStateException(\"The interface class \" + interfaceClass + \" is not a interface!\");\n-        }\n-        this.interfaceClass = interfaceClass;\n-        setInterface(interfaceClass == null ? null : interfaceClass.getName());\n-    }\n-\n-    public String getClient() {\n-        return client;\n-    }\n-\n-    public void setClient(String client) {\n-        this.client = client;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getUrl() {\n-        return url;\n-    }\n-\n-    public void setUrl(String url) {\n-        this.url = url;\n-    }\n-\n-    public ConsumerConfig getConsumer() {\n-        return consumer;\n-    }\n-\n-    public void setConsumer(ConsumerConfig consumer) {\n-        this.consumer = consumer;\n-    }\n-\n-    public String getProtocol() {\n-        return protocol;\n-    }\n-\n-    public void setProtocol(String protocol) {\n-        this.protocol = protocol;\n-    }\n-\n-    public ServiceMetadata getServiceMetadata() {\n-        return serviceMetadata;\n-    }\n-\n-    @Override\n-    @Parameter(excluded = true)\n-    public String getPrefix() {\n-        return DUBBO + \".reference.\" + interfaceName;\n-    }\n-\n-    public void resolveFile() {\n-        String resolve = System.getProperty(interfaceName);\n-        String resolveFile = null;\n-        if (StringUtils.isEmpty(resolve)) {\n-            resolveFile = System.getProperty(\"dubbo.resolve.file\");\n-            if (StringUtils.isEmpty(resolveFile)) {\n-                File userResolveFile = new File(new File(System.getProperty(\"user.home\")), \"dubbo-resolve.properties\");\n-                if (userResolveFile.exists()) {\n-                    resolveFile = userResolveFile.getAbsolutePath();\n-                }\n-            }\n-            if (resolveFile != null && resolveFile.length() > 0) {\n-                Properties properties = new Properties();\n-                try (FileInputStream fis = new FileInputStream(new File(resolveFile))) {\n-                    properties.load(fis);\n-                } catch (IOException e) {\n-                    throw new IllegalStateException(\"Failed to load \" + resolveFile + \", cause: \" + e.getMessage(), e);\n-                }\n-\n-                resolve = properties.getProperty(interfaceName);\n-            }\n-        }\n-        if (resolve != null && resolve.length() > 0) {\n-            url = resolve;\n-            if (logger.isWarnEnabled()) {\n-                if (resolveFile != null) {\n-                    logger.warn(\"Using default dubbo resolve file \" + resolveFile + \" replace \" + interfaceName + \"\" + resolve + \" to p2p invoke remote service.\");\n-                } else {\n-                    logger.warn(\"Using -D\" + interfaceName + \"=\" + resolve + \" to p2p invoke remote service.\");\n-                }\n-            }\n-        }\n-    }\n-\n-    @Override\n-    protected void computeValidRegistryIds() {\n-        if (consumer != null) {\n-            if (notHasSelfRegistryProperty()) {\n-                setRegistries(consumer.getRegistries());\n-                setRegistryIds(consumer.getRegistryIds());\n-            }\n-        }\n-\n-        super.computeValidRegistryIds();\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getUniqueServiceName() {\n-        return URL.buildKey(interfaceName, getGroup(), getVersion());\n-    }\n-\n-    public abstract T get();\n-\n-    public abstract void destroy();\n-\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.ClassUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.annotation.Reference;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.ServiceMetadata;\r\n+import org.apache.dubbo.rpc.service.GenericService;\r\n+import org.apache.dubbo.rpc.support.ProtocolUtils;\r\n+\r\n+import java.io.File;\r\n+import java.io.FileInputStream;\r\n+import java.io.IOException;\r\n+import java.util.Properties;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\r\n+\r\n+/**\r\n+ * ReferenceConfig\r\n+ *\r\n+ * @export\r\n+ */\r\n+public abstract class ReferenceConfigBase<T> extends AbstractReferenceConfig {\r\n+\r\n+    private static final long serialVersionUID = -5864351140409987595L;\r\n+\r\n+    /**\r\n+     * The interface class of the reference service\r\n+     */\r\n+    protected Class<?> interfaceClass;\r\n+\r\n+    /**\r\n+     * client type\r\n+     */\r\n+    protected String client;\r\n+\r\n+    /**\r\n+     * The url for peer-to-peer invocation\r\n+     */\r\n+    protected String url;\r\n+\r\n+    /**\r\n+     * The consumer config (default)\r\n+     */\r\n+    protected ConsumerConfig consumer;\r\n+\r\n+    /**\r\n+     * Only the service provider of the specified protocol is invoked, and other protocols are ignored.\r\n+     */\r\n+    protected String protocol;\r\n+\r\n+\r\n+    public ReferenceConfigBase() {\r\n+        serviceMetadata = new ServiceMetadata();\r\n+        serviceMetadata.addAttribute(\"ORIGIN_CONFIG\", this);\r\n+    }\r\n+\r\n+    public ReferenceConfigBase(Reference reference) {\r\n+        serviceMetadata = new ServiceMetadata();\r\n+        serviceMetadata.addAttribute(\"ORIGIN_CONFIG\", this);\r\n+        appendAnnotation(Reference.class, reference);\r\n+        setMethods(MethodConfig.constructMethodConfig(reference.methods()));\r\n+    }\r\n+\r\n+    public boolean shouldCheck() {\r\n+        Boolean shouldCheck = isCheck();\r\n+        if (shouldCheck == null && getConsumer() != null) {\r\n+            shouldCheck = getConsumer().isCheck();\r\n+        }\r\n+        if (shouldCheck == null) {\r\n+            // default true\r\n+            shouldCheck = true;\r\n+        }\r\n+        return shouldCheck;\r\n+    }\r\n+\r\n+    public boolean shouldInit() {\r\n+        Boolean shouldInit = isInit();\r\n+        if (shouldInit == null && getConsumer() != null) {\r\n+            shouldInit = getConsumer().isInit();\r\n+        }\r\n+        if (shouldInit == null) {\r\n+            // default is true, spring will still init lazily by setting init's default value to false,\r\n+            // the def default setting happens in {@link ReferenceBean#afterPropertiesSet}.\r\n+            return true;\r\n+        }\r\n+        return shouldInit;\r\n+    }\r\n+\r\n+    public void checkDefault() throws IllegalStateException {\r\n+        if (consumer == null) {\r\n+            consumer = ApplicationModel.getConfigManager()\r\n+                    .getDefaultConsumer()\r\n+                    .orElse(new ConsumerConfig());\r\n+        }\r\n+    }\r\n+\r\n+    public Class<?> getActualInterface() {\r\n+        Class actualInterface = interfaceClass;\r\n+        if (interfaceClass == GenericService.class) {\r\n+            try {\r\n+                actualInterface = Class.forName(interfaceName);\r\n+            } catch (ClassNotFoundException e) {\r\n+                // ignore\r\n+            }\r\n+        }\r\n+        return actualInterface;\r\n+    }\r\n+\r\n+    public Class<?> getInterfaceClass() {\r\n+        if (interfaceClass != null) {\r\n+            return interfaceClass;\r\n+        }\r\n+        if (ProtocolUtils.isGeneric(getGeneric())\r\n+                || (getConsumer() != null && ProtocolUtils.isGeneric(getConsumer().getGeneric()))) {\r\n+            return GenericService.class;\r\n+        }\r\n+        try {\r\n+            if (interfaceName != null && interfaceName.length() > 0) {\r\n+                interfaceClass = Class.forName(interfaceName, true, ClassUtils.getClassLoader());\r\n+            }\r\n+        } catch (ClassNotFoundException t) {\r\n+            throw new IllegalStateException(t.getMessage(), t);\r\n+        }\r\n+\r\n+        return interfaceClass;\r\n+    }\r\n+\r\n+    /**\r\n+     * @param interfaceClass\r\n+     * @see #setInterface(Class)\r\n+     * @deprecated\r\n+     */\r\n+    @Deprecated\r\n+    public void setInterfaceClass(Class<?> interfaceClass) {\r\n+        setInterface(interfaceClass);\r\n+    }\r\n+\r\n+    public void setInterface(Class<?> interfaceClass) {\r\n+        if (interfaceClass != null && !interfaceClass.isInterface()) {\r\n+            throw new IllegalStateException(\"The interface class \" + interfaceClass + \" is not a interface!\");\r\n+        }\r\n+        this.interfaceClass = interfaceClass;\r\n+        setInterface(interfaceClass == null ? null : interfaceClass.getName());\r\n+    }\r\n+\r\n+    public String getClient() {\r\n+        return client;\r\n+    }\r\n+\r\n+    public void setClient(String client) {\r\n+        this.client = client;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getUrl() {\r\n+        return url;\r\n+    }\r\n+\r\n+    public void setUrl(String url) {\r\n+        this.url = url;\r\n+    }\r\n+\r\n+    public ConsumerConfig getConsumer() {\r\n+        return consumer;\r\n+    }\r\n+\r\n+    public void setConsumer(ConsumerConfig consumer) {\r\n+        this.consumer = consumer;\r\n+    }\r\n+\r\n+    public String getProtocol() {\r\n+        return protocol;\r\n+    }\r\n+\r\n+    public void setProtocol(String protocol) {\r\n+        this.protocol = protocol;\r\n+    }\r\n+\r\n+    public ServiceMetadata getServiceMetadata() {\r\n+        return serviceMetadata;\r\n+    }\r\n+\r\n+    @Override\r\n+    @Parameter(excluded = true)\r\n+    public String getPrefix() {\r\n+        return DUBBO + \".reference.\" + interfaceName;\r\n+    }\r\n+\r\n+    public void resolveFile() {\r\n+        String resolve = System.getProperty(interfaceName);\r\n+        String resolveFile = null;\r\n+        if (StringUtils.isEmpty(resolve)) {\r\n+            resolveFile = System.getProperty(\"dubbo.resolve.file\");\r\n+            if (StringUtils.isEmpty(resolveFile)) {\r\n+                File userResolveFile = new File(new File(System.getProperty(\"user.home\")), \"dubbo-resolve.properties\");\r\n+                if (userResolveFile.exists()) {\r\n+                    resolveFile = userResolveFile.getAbsolutePath();\r\n+                }\r\n+            }\r\n+            if (resolveFile != null && resolveFile.length() > 0) {\r\n+                Properties properties = new Properties();\r\n+                try (FileInputStream fis = new FileInputStream(new File(resolveFile))) {\r\n+                    properties.load(fis);\r\n+                } catch (IOException e) {\r\n+                    throw new IllegalStateException(\"Failed to load \" + resolveFile + \", cause: \" + e.getMessage(), e);\r\n+                }\r\n+\r\n+                resolve = properties.getProperty(interfaceName);\r\n+            }\r\n+        }\r\n+        if (resolve != null && resolve.length() > 0) {\r\n+            url = resolve;\r\n+            if (logger.isWarnEnabled()) {\r\n+                if (resolveFile != null) {\r\n+                    logger.warn(\"Using default dubbo resolve file \" + resolveFile + \" replace \" + interfaceName + \"\" + resolve + \" to p2p invoke remote service.\");\r\n+                } else {\r\n+                    logger.warn(\"Using -D\" + interfaceName + \"=\" + resolve + \" to p2p invoke remote service.\");\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void computeValidRegistryIds() {\r\n+        if (consumer != null) {\r\n+            if (notHasSelfRegistryProperty()) {\r\n+                setRegistries(consumer.getRegistries());\r\n+                setRegistryIds(consumer.getRegistryIds());\r\n+            }\r\n+        }\r\n+\r\n+        super.computeValidRegistryIds();\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getUniqueServiceName() {\r\n+        return URL.buildKey(interfaceName, getGroup(), getVersion());\r\n+    }\r\n+\r\n+    public abstract T get();\r\n+\r\n+    public abstract void destroy();\r\n+\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/RegistryConfig.java", "source2": "org/apache/dubbo/config/RegistryConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,533 +1,533 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.support.Parameter;\n-\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.EXTRA_KEYS_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_KEY;\n-import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY;\n-import static org.apache.dubbo.common.utils.PojoUtils.updatePropertyIfAbsent;\n-import static org.apache.dubbo.config.Constants.REGISTRIES_SUFFIX;\n-\n-/**\n- * RegistryConfig\n- *\n- * @export\n- */\n-public class RegistryConfig extends AbstractConfig {\n-\n-    public static final String NO_AVAILABLE = \"N/A\";\n-    private static final long serialVersionUID = 5508512956753757169L;\n-\n-    /**\n-     * Register center address\n-     */\n-    private String address;\n-\n-    /**\n-     * Username to login register center\n-     */\n-    private String username;\n-\n-    /**\n-     * Password to login register center\n-     */\n-    private String password;\n-\n-    /**\n-     * Default port for register center\n-     */\n-    private Integer port;\n-\n-    /**\n-     * Protocol for register center\n-     */\n-    private String protocol;\n-\n-    /**\n-     * Network transmission type\n-     */\n-    private String transporter;\n-\n-    private String server;\n-\n-    private String client;\n-\n-    /**\n-     * Affects how traffic distributes among registries, useful when subscribing multiple registries, available options:\n-     * 1. zone-aware, a certain type of traffic always goes to one Registry according to where the traffic is originated.\n-     */\n-    private String cluster;\n-\n-    /**\n-     * The region where the registry belongs, usually used to isolate traffics\n-     */\n-    private String zone;\n-\n-    /**\n-     * The group the services registry in\n-     */\n-    private String group;\n-\n-    private String version;\n-\n-    /**\n-     * Request timeout in milliseconds for register center\n-     */\n-    private Integer timeout;\n-\n-    /**\n-     * Session timeout in milliseconds for register center\n-     */\n-    private Integer session;\n-\n-    /**\n-     * File for saving register center dynamic list\n-     */\n-    private String file;\n-\n-    /**\n-     * Wait time before stop\n-     */\n-    private Integer wait;\n-\n-    /**\n-     * Whether to check if register center is available when boot up\n-     */\n-    private Boolean check;\n-\n-    /**\n-     * Whether to allow dynamic service to register on the register center\n-     */\n-    private Boolean dynamic;\n-\n-    /**\n-     * Whether to export service on the register center\n-     */\n-    private Boolean register;\n-\n-    /**\n-     * Whether allow to subscribe service on the register center\n-     */\n-    private Boolean subscribe;\n-\n-    /**\n-     * The customized parameters\n-     */\n-    private Map<String, String> parameters;\n-\n-    /**\n-     * Whether it's default\n-     */\n-    private Boolean isDefault;\n-\n-    /**\n-     * Simple the registry. both useful for provider and consumer\n-     *\n-     * @since 2.7.0\n-     */\n-    private Boolean simplified;\n-    /**\n-     * After simplify the registry, should add some parameter individually. just for provider.\n-     * <p>\n-     * such as: extra-keys = A,b,c,d\n-     *\n-     * @since 2.7.0\n-     */\n-    private String extraKeys;\n-\n-    /**\n-     * the address work as config center or not\n-     */\n-    private Boolean useAsConfigCenter;\n-\n-    /**\n-     * the address work as remote metadata center or not\n-     */\n-    private Boolean useAsMetadataCenter;\n-\n-    /**\n-     * list of rpc protocols accepted by this registry, for example, \"dubbo,rest\"\n-     */\n-    private String accepts;\n-\n-    /**\n-     * Always use this registry first if set to true, useful when subscribe to multiple registries\n-     */\n-    private Boolean preferred;\n-\n-    /**\n-     * Affects traffic distribution among registries, useful when subscribe to multiple registries\n-     * Take effect only when no preferred registry is specified.\n-     */\n-    private Integer weight;\n-\n-    public RegistryConfig() {\n-    }\n-\n-    public RegistryConfig(String address) {\n-        setAddress(address);\n-    }\n-\n-    public RegistryConfig(String address, String protocol) {\n-        setAddress(address);\n-        setProtocol(protocol);\n-    }\n-\n-    @Override\n-    public String getId() {\n-        return super.getId();\n-    }\n-\n-    public String getProtocol() {\n-        return protocol;\n-    }\n-\n-    public void setProtocol(String protocol) {\n-        this.protocol = protocol;\n-//        this.updateIdIfAbsent(protocol);\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getAddress() {\n-        return address;\n-    }\n-\n-    public void setAddress(String address) {\n-        this.address = address;\n-        if (address != null) {\n-            try {\n-                URL url = URL.valueOf(address);\n-\n-                // Refactor since 2.7.8\n-                updatePropertyIfAbsent(this::getUsername, this::setUsername, url.getUsername());\n-                updatePropertyIfAbsent(this::getPassword, this::setPassword, url.getPassword());\n-                updatePropertyIfAbsent(this::getProtocol, this::setProtocol, url.getProtocol());\n-                updatePropertyIfAbsent(this::getPort, this::setPort, url.getPort());\n-\n-//                setUsername(url.getUsername());\n-//                setPassword(url.getPassword());\n-//                updateIdIfAbsent(url.getProtocol());\n-//                updateProtocolIfAbsent(url.getProtocol());\n-//                updatePortIfAbsent(url.getPort());\n-                Map<String, String> params = url.getParameters();\n-                if (CollectionUtils.isNotEmptyMap(params)) {\n-                    params.remove(BACKUP_KEY);\n-                }\n-                updateParameters(params);\n-            } catch (Exception ignored) {\n-            }\n-        }\n-    }\n-\n-    public Integer getPort() {\n-        return port;\n-    }\n-\n-    public void setPort(Integer port) {\n-        this.port = port;\n-    }\n-\n-    public String getUsername() {\n-        return username;\n-    }\n-\n-    public void setUsername(String username) {\n-        this.username = username;\n-    }\n-\n-    public String getPassword() {\n-        return password;\n-    }\n-\n-    public void setPassword(String password) {\n-        this.password = password;\n-    }\n-\n-    /**\n-     * @return wait\n-     * @see org.apache.dubbo.config.ProviderConfig#getWait()\n-     * @deprecated\n-     */\n-    @Deprecated\n-    public Integer getWait() {\n-        return wait;\n-    }\n-\n-    /**\n-     * @param wait\n-     * @see org.apache.dubbo.config.ProviderConfig#setWait(Integer)\n-     * @deprecated\n-     */\n-    @Deprecated\n-    public void setWait(Integer wait) {\n-        this.wait = wait;\n-        if (wait != null && wait > 0) {\n-            System.setProperty(SHUTDOWN_WAIT_KEY, String.valueOf(wait));\n-        }\n-    }\n-\n-    public Boolean isCheck() {\n-        return check;\n-    }\n-\n-    public void setCheck(Boolean check) {\n-        this.check = check;\n-    }\n-\n-    public String getFile() {\n-        return file;\n-    }\n-\n-    public void setFile(String file) {\n-        this.file = file;\n-    }\n-\n-    /**\n-     * @return transport\n-     * @see #getTransporter()\n-     * @deprecated\n-     */\n-    @Deprecated\n-    @Parameter(excluded = true)\n-    public String getTransport() {\n-        return getTransporter();\n-    }\n-\n-    /**\n-     * @param transport\n-     * @see #setTransporter(String)\n-     * @deprecated\n-     */\n-    @Deprecated\n-    public void setTransport(String transport) {\n-        setTransporter(transport);\n-    }\n-\n-    public String getTransporter() {\n-        return transporter;\n-    }\n-\n-    public void setTransporter(String transporter) {\n-        /*if(transporter != null && transporter.length() > 0 && ! ExtensionLoader.getExtensionLoader(Transporter.class).hasExtension(transporter)){\n-            throw new IllegalStateException(\"No such transporter type : \" + transporter);\n-        }*/\n-        this.transporter = transporter;\n-    }\n-\n-    public String getServer() {\n-        return server;\n-    }\n-\n-    public void setServer(String server) {\n-        /*if(server != null && server.length() > 0 && ! ExtensionLoader.getExtensionLoader(Transporter.class).hasExtension(server)){\n-            throw new IllegalStateException(\"No such server type : \" + server);\n-        }*/\n-        this.server = server;\n-    }\n-\n-    public String getClient() {\n-        return client;\n-    }\n-\n-    public void setClient(String client) {\n-        /*if(client != null && client.length() > 0 && ! ExtensionLoader.getExtensionLoader(Transporter.class).hasExtension(client)){\n-            throw new IllegalStateException(\"No such client type : \" + client);\n-        }*/\n-        this.client = client;\n-    }\n-\n-    public Integer getTimeout() {\n-        return timeout;\n-    }\n-\n-    public void setTimeout(Integer timeout) {\n-        this.timeout = timeout;\n-    }\n-\n-    public Integer getSession() {\n-        return session;\n-    }\n-\n-    public void setSession(Integer session) {\n-        this.session = session;\n-    }\n-\n-    public Boolean isDynamic() {\n-        return dynamic;\n-    }\n-\n-    public void setDynamic(Boolean dynamic) {\n-        this.dynamic = dynamic;\n-    }\n-\n-    public Boolean isRegister() {\n-        return register;\n-    }\n-\n-    public void setRegister(Boolean register) {\n-        this.register = register;\n-    }\n-\n-    public Boolean isSubscribe() {\n-        return subscribe;\n-    }\n-\n-    public void setSubscribe(Boolean subscribe) {\n-        this.subscribe = subscribe;\n-    }\n-\n-    public String getCluster() {\n-        return cluster;\n-    }\n-\n-    public void setCluster(String cluster) {\n-        this.cluster = cluster;\n-    }\n-\n-    public String getZone() {\n-        return zone;\n-    }\n-\n-    public void setZone(String zone) {\n-        this.zone = zone;\n-    }\n-\n-    public String getGroup() {\n-        return group;\n-    }\n-\n-    public void setGroup(String group) {\n-        this.group = group;\n-    }\n-\n-    public String getVersion() {\n-        return version;\n-    }\n-\n-    public void setVersion(String version) {\n-        this.version = version;\n-    }\n-\n-    public Map<String, String> getParameters() {\n-        return parameters;\n-    }\n-\n-    public void setParameters(Map<String, String> parameters) {\n-        this.parameters = parameters;\n-    }\n-\n-    public void updateParameters(Map<String, String> parameters) {\n-        if (CollectionUtils.isEmptyMap(parameters)) {\n-            return;\n-        }\n-        if (this.parameters == null) {\n-            this.parameters = parameters;\n-        } else {\n-            this.parameters.putAll(parameters);\n-        }\n-    }\n-\n-    public Boolean isDefault() {\n-        return isDefault;\n-    }\n-\n-    public void setDefault(Boolean isDefault) {\n-        this.isDefault = isDefault;\n-    }\n-\n-    public Boolean getSimplified() {\n-        return simplified;\n-    }\n-\n-    public void setSimplified(Boolean simplified) {\n-        this.simplified = simplified;\n-    }\n-\n-    @Parameter(key = EXTRA_KEYS_KEY)\n-    public String getExtraKeys() {\n-        return extraKeys;\n-    }\n-\n-    public void setExtraKeys(String extraKeys) {\n-        this.extraKeys = extraKeys;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public Boolean getUseAsConfigCenter() {\n-        return useAsConfigCenter;\n-    }\n-\n-    public void setUseAsConfigCenter(Boolean useAsConfigCenter) {\n-        this.useAsConfigCenter = useAsConfigCenter;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public Boolean getUseAsMetadataCenter() {\n-        return useAsMetadataCenter;\n-    }\n-\n-    public void setUseAsMetadataCenter(Boolean useAsMetadataCenter) {\n-        this.useAsMetadataCenter = useAsMetadataCenter;\n-    }\n-\n-    public String getAccepts() {\n-        return accepts;\n-    }\n-\n-    public void setAccepts(String accepts) {\n-        this.accepts = accepts;\n-    }\n-\n-    public Boolean getPreferred() {\n-        return preferred;\n-    }\n-\n-    public void setPreferred(Boolean preferred) {\n-        this.preferred = preferred;\n-    }\n-\n-    public Integer getWeight() {\n-        return weight;\n-    }\n-\n-    public void setWeight(Integer weight) {\n-        this.weight = weight;\n-    }\n-\n-    @Override\n-    public void refresh() {\n-        super.refresh();\n-        if (StringUtils.isNotEmpty(this.getId())) {\n-            this.setPrefix(REGISTRIES_SUFFIX);\n-            super.refresh();\n-        }\n-    }\n-\n-    @Override\n-    @Parameter(excluded = true)\n-    public boolean isValid() {\n-        // empty protocol will default to 'dubbo'\n-        return !StringUtils.isEmpty(address);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.EXTRA_KEYS_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SHUTDOWN_WAIT_KEY;\r\n+import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY;\r\n+import static org.apache.dubbo.common.utils.PojoUtils.updatePropertyIfAbsent;\r\n+import static org.apache.dubbo.config.Constants.REGISTRIES_SUFFIX;\r\n+\r\n+/**\r\n+ * RegistryConfig\r\n+ *\r\n+ * @export\r\n+ */\r\n+public class RegistryConfig extends AbstractConfig {\r\n+\r\n+    public static final String NO_AVAILABLE = \"N/A\";\r\n+    private static final long serialVersionUID = 5508512956753757169L;\r\n+\r\n+    /**\r\n+     * Register center address\r\n+     */\r\n+    private String address;\r\n+\r\n+    /**\r\n+     * Username to login register center\r\n+     */\r\n+    private String username;\r\n+\r\n+    /**\r\n+     * Password to login register center\r\n+     */\r\n+    private String password;\r\n+\r\n+    /**\r\n+     * Default port for register center\r\n+     */\r\n+    private Integer port;\r\n+\r\n+    /**\r\n+     * Protocol for register center\r\n+     */\r\n+    private String protocol;\r\n+\r\n+    /**\r\n+     * Network transmission type\r\n+     */\r\n+    private String transporter;\r\n+\r\n+    private String server;\r\n+\r\n+    private String client;\r\n+\r\n+    /**\r\n+     * Affects how traffic distributes among registries, useful when subscribing multiple registries, available options:\r\n+     * 1. zone-aware, a certain type of traffic always goes to one Registry according to where the traffic is originated.\r\n+     */\r\n+    private String cluster;\r\n+\r\n+    /**\r\n+     * The region where the registry belongs, usually used to isolate traffics\r\n+     */\r\n+    private String zone;\r\n+\r\n+    /**\r\n+     * The group the services registry in\r\n+     */\r\n+    private String group;\r\n+\r\n+    private String version;\r\n+\r\n+    /**\r\n+     * Request timeout in milliseconds for register center\r\n+     */\r\n+    private Integer timeout;\r\n+\r\n+    /**\r\n+     * Session timeout in milliseconds for register center\r\n+     */\r\n+    private Integer session;\r\n+\r\n+    /**\r\n+     * File for saving register center dynamic list\r\n+     */\r\n+    private String file;\r\n+\r\n+    /**\r\n+     * Wait time before stop\r\n+     */\r\n+    private Integer wait;\r\n+\r\n+    /**\r\n+     * Whether to check if register center is available when boot up\r\n+     */\r\n+    private Boolean check;\r\n+\r\n+    /**\r\n+     * Whether to allow dynamic service to register on the register center\r\n+     */\r\n+    private Boolean dynamic;\r\n+\r\n+    /**\r\n+     * Whether to export service on the register center\r\n+     */\r\n+    private Boolean register;\r\n+\r\n+    /**\r\n+     * Whether allow to subscribe service on the register center\r\n+     */\r\n+    private Boolean subscribe;\r\n+\r\n+    /**\r\n+     * The customized parameters\r\n+     */\r\n+    private Map<String, String> parameters;\r\n+\r\n+    /**\r\n+     * Whether it's default\r\n+     */\r\n+    private Boolean isDefault;\r\n+\r\n+    /**\r\n+     * Simple the registry. both useful for provider and consumer\r\n+     *\r\n+     * @since 2.7.0\r\n+     */\r\n+    private Boolean simplified;\r\n+    /**\r\n+     * After simplify the registry, should add some parameter individually. just for provider.\r\n+     * <p>\r\n+     * such as: extra-keys = A,b,c,d\r\n+     *\r\n+     * @since 2.7.0\r\n+     */\r\n+    private String extraKeys;\r\n+\r\n+    /**\r\n+     * the address work as config center or not\r\n+     */\r\n+    private Boolean useAsConfigCenter;\r\n+\r\n+    /**\r\n+     * the address work as remote metadata center or not\r\n+     */\r\n+    private Boolean useAsMetadataCenter;\r\n+\r\n+    /**\r\n+     * list of rpc protocols accepted by this registry, for example, \"dubbo,rest\"\r\n+     */\r\n+    private String accepts;\r\n+\r\n+    /**\r\n+     * Always use this registry first if set to true, useful when subscribe to multiple registries\r\n+     */\r\n+    private Boolean preferred;\r\n+\r\n+    /**\r\n+     * Affects traffic distribution among registries, useful when subscribe to multiple registries\r\n+     * Take effect only when no preferred registry is specified.\r\n+     */\r\n+    private Integer weight;\r\n+\r\n+    public RegistryConfig() {\r\n+    }\r\n+\r\n+    public RegistryConfig(String address) {\r\n+        setAddress(address);\r\n+    }\r\n+\r\n+    public RegistryConfig(String address, String protocol) {\r\n+        setAddress(address);\r\n+        setProtocol(protocol);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getId() {\r\n+        return super.getId();\r\n+    }\r\n+\r\n+    public String getProtocol() {\r\n+        return protocol;\r\n+    }\r\n+\r\n+    public void setProtocol(String protocol) {\r\n+        this.protocol = protocol;\r\n+//        this.updateIdIfAbsent(protocol);\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getAddress() {\r\n+        return address;\r\n+    }\r\n+\r\n+    public void setAddress(String address) {\r\n+        this.address = address;\r\n+        if (address != null) {\r\n+            try {\r\n+                URL url = URL.valueOf(address);\r\n+\r\n+                // Refactor since 2.7.8\r\n+                updatePropertyIfAbsent(this::getUsername, this::setUsername, url.getUsername());\r\n+                updatePropertyIfAbsent(this::getPassword, this::setPassword, url.getPassword());\r\n+                updatePropertyIfAbsent(this::getProtocol, this::setProtocol, url.getProtocol());\r\n+                updatePropertyIfAbsent(this::getPort, this::setPort, url.getPort());\r\n+\r\n+//                setUsername(url.getUsername());\r\n+//                setPassword(url.getPassword());\r\n+//                updateIdIfAbsent(url.getProtocol());\r\n+//                updateProtocolIfAbsent(url.getProtocol());\r\n+//                updatePortIfAbsent(url.getPort());\r\n+                Map<String, String> params = url.getParameters();\r\n+                if (CollectionUtils.isNotEmptyMap(params)) {\r\n+                    params.remove(BACKUP_KEY);\r\n+                }\r\n+                updateParameters(params);\r\n+            } catch (Exception ignored) {\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public Integer getPort() {\r\n+        return port;\r\n+    }\r\n+\r\n+    public void setPort(Integer port) {\r\n+        this.port = port;\r\n+    }\r\n+\r\n+    public String getUsername() {\r\n+        return username;\r\n+    }\r\n+\r\n+    public void setUsername(String username) {\r\n+        this.username = username;\r\n+    }\r\n+\r\n+    public String getPassword() {\r\n+        return password;\r\n+    }\r\n+\r\n+    public void setPassword(String password) {\r\n+        this.password = password;\r\n+    }\r\n+\r\n+    /**\r\n+     * @return wait\r\n+     * @see org.apache.dubbo.config.ProviderConfig#getWait()\r\n+     * @deprecated\r\n+     */\r\n+    @Deprecated\r\n+    public Integer getWait() {\r\n+        return wait;\r\n+    }\r\n+\r\n+    /**\r\n+     * @param wait\r\n+     * @see org.apache.dubbo.config.ProviderConfig#setWait(Integer)\r\n+     * @deprecated\r\n+     */\r\n+    @Deprecated\r\n+    public void setWait(Integer wait) {\r\n+        this.wait = wait;\r\n+        if (wait != null && wait > 0) {\r\n+            System.setProperty(SHUTDOWN_WAIT_KEY, String.valueOf(wait));\r\n+        }\r\n+    }\r\n+\r\n+    public Boolean isCheck() {\r\n+        return check;\r\n+    }\r\n+\r\n+    public void setCheck(Boolean check) {\r\n+        this.check = check;\r\n+    }\r\n+\r\n+    public String getFile() {\r\n+        return file;\r\n+    }\r\n+\r\n+    public void setFile(String file) {\r\n+        this.file = file;\r\n+    }\r\n+\r\n+    /**\r\n+     * @return transport\r\n+     * @see #getTransporter()\r\n+     * @deprecated\r\n+     */\r\n+    @Deprecated\r\n+    @Parameter(excluded = true)\r\n+    public String getTransport() {\r\n+        return getTransporter();\r\n+    }\r\n+\r\n+    /**\r\n+     * @param transport\r\n+     * @see #setTransporter(String)\r\n+     * @deprecated\r\n+     */\r\n+    @Deprecated\r\n+    public void setTransport(String transport) {\r\n+        setTransporter(transport);\r\n+    }\r\n+\r\n+    public String getTransporter() {\r\n+        return transporter;\r\n+    }\r\n+\r\n+    public void setTransporter(String transporter) {\r\n+        /*if(transporter != null && transporter.length() > 0 && ! ExtensionLoader.getExtensionLoader(Transporter.class).hasExtension(transporter)){\r\n+            throw new IllegalStateException(\"No such transporter type : \" + transporter);\r\n+        }*/\r\n+        this.transporter = transporter;\r\n+    }\r\n+\r\n+    public String getServer() {\r\n+        return server;\r\n+    }\r\n+\r\n+    public void setServer(String server) {\r\n+        /*if(server != null && server.length() > 0 && ! ExtensionLoader.getExtensionLoader(Transporter.class).hasExtension(server)){\r\n+            throw new IllegalStateException(\"No such server type : \" + server);\r\n+        }*/\r\n+        this.server = server;\r\n+    }\r\n+\r\n+    public String getClient() {\r\n+        return client;\r\n+    }\r\n+\r\n+    public void setClient(String client) {\r\n+        /*if(client != null && client.length() > 0 && ! ExtensionLoader.getExtensionLoader(Transporter.class).hasExtension(client)){\r\n+            throw new IllegalStateException(\"No such client type : \" + client);\r\n+        }*/\r\n+        this.client = client;\r\n+    }\r\n+\r\n+    public Integer getTimeout() {\r\n+        return timeout;\r\n+    }\r\n+\r\n+    public void setTimeout(Integer timeout) {\r\n+        this.timeout = timeout;\r\n+    }\r\n+\r\n+    public Integer getSession() {\r\n+        return session;\r\n+    }\r\n+\r\n+    public void setSession(Integer session) {\r\n+        this.session = session;\r\n+    }\r\n+\r\n+    public Boolean isDynamic() {\r\n+        return dynamic;\r\n+    }\r\n+\r\n+    public void setDynamic(Boolean dynamic) {\r\n+        this.dynamic = dynamic;\r\n+    }\r\n+\r\n+    public Boolean isRegister() {\r\n+        return register;\r\n+    }\r\n+\r\n+    public void setRegister(Boolean register) {\r\n+        this.register = register;\r\n+    }\r\n+\r\n+    public Boolean isSubscribe() {\r\n+        return subscribe;\r\n+    }\r\n+\r\n+    public void setSubscribe(Boolean subscribe) {\r\n+        this.subscribe = subscribe;\r\n+    }\r\n+\r\n+    public String getCluster() {\r\n+        return cluster;\r\n+    }\r\n+\r\n+    public void setCluster(String cluster) {\r\n+        this.cluster = cluster;\r\n+    }\r\n+\r\n+    public String getZone() {\r\n+        return zone;\r\n+    }\r\n+\r\n+    public void setZone(String zone) {\r\n+        this.zone = zone;\r\n+    }\r\n+\r\n+    public String getGroup() {\r\n+        return group;\r\n+    }\r\n+\r\n+    public void setGroup(String group) {\r\n+        this.group = group;\r\n+    }\r\n+\r\n+    public String getVersion() {\r\n+        return version;\r\n+    }\r\n+\r\n+    public void setVersion(String version) {\r\n+        this.version = version;\r\n+    }\r\n+\r\n+    public Map<String, String> getParameters() {\r\n+        return parameters;\r\n+    }\r\n+\r\n+    public void setParameters(Map<String, String> parameters) {\r\n+        this.parameters = parameters;\r\n+    }\r\n+\r\n+    public void updateParameters(Map<String, String> parameters) {\r\n+        if (CollectionUtils.isEmptyMap(parameters)) {\r\n+            return;\r\n+        }\r\n+        if (this.parameters == null) {\r\n+            this.parameters = parameters;\r\n+        } else {\r\n+            this.parameters.putAll(parameters);\r\n+        }\r\n+    }\r\n+\r\n+    public Boolean isDefault() {\r\n+        return isDefault;\r\n+    }\r\n+\r\n+    public void setDefault(Boolean isDefault) {\r\n+        this.isDefault = isDefault;\r\n+    }\r\n+\r\n+    public Boolean getSimplified() {\r\n+        return simplified;\r\n+    }\r\n+\r\n+    public void setSimplified(Boolean simplified) {\r\n+        this.simplified = simplified;\r\n+    }\r\n+\r\n+    @Parameter(key = EXTRA_KEYS_KEY)\r\n+    public String getExtraKeys() {\r\n+        return extraKeys;\r\n+    }\r\n+\r\n+    public void setExtraKeys(String extraKeys) {\r\n+        this.extraKeys = extraKeys;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public Boolean getUseAsConfigCenter() {\r\n+        return useAsConfigCenter;\r\n+    }\r\n+\r\n+    public void setUseAsConfigCenter(Boolean useAsConfigCenter) {\r\n+        this.useAsConfigCenter = useAsConfigCenter;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public Boolean getUseAsMetadataCenter() {\r\n+        return useAsMetadataCenter;\r\n+    }\r\n+\r\n+    public void setUseAsMetadataCenter(Boolean useAsMetadataCenter) {\r\n+        this.useAsMetadataCenter = useAsMetadataCenter;\r\n+    }\r\n+\r\n+    public String getAccepts() {\r\n+        return accepts;\r\n+    }\r\n+\r\n+    public void setAccepts(String accepts) {\r\n+        this.accepts = accepts;\r\n+    }\r\n+\r\n+    public Boolean getPreferred() {\r\n+        return preferred;\r\n+    }\r\n+\r\n+    public void setPreferred(Boolean preferred) {\r\n+        this.preferred = preferred;\r\n+    }\r\n+\r\n+    public Integer getWeight() {\r\n+        return weight;\r\n+    }\r\n+\r\n+    public void setWeight(Integer weight) {\r\n+        this.weight = weight;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void refresh() {\r\n+        super.refresh();\r\n+        if (StringUtils.isNotEmpty(this.getId())) {\r\n+            this.setPrefix(REGISTRIES_SUFFIX);\r\n+            super.refresh();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    @Parameter(excluded = true)\r\n+    public boolean isValid() {\r\n+        // empty protocol will default to 'dubbo'\r\n+        return !StringUtils.isEmpty(address);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/ServiceConfigBase.java", "source2": "org/apache/dubbo/config/ServiceConfigBase.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,416 +1,416 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.annotation.Service;\n-import org.apache.dubbo.config.support.Parameter;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.ServiceMetadata;\n-import org.apache.dubbo.rpc.service.GenericService;\n-import org.apache.dubbo.rpc.support.ProtocolUtils;\n-\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.List;\n-import java.util.Optional;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\n-\n-/**\n- * ServiceConfig\n- *\n- * @export\n- */\n-public abstract class ServiceConfigBase<T> extends AbstractServiceConfig {\n-\n-    private static final long serialVersionUID = 3033787999037024738L;\n-\n-\n-\n-    /**\n-     * The interface class of the exported service\n-     */\n-    protected Class<?> interfaceClass;\n-\n-    /**\n-     * The reference of the interface implementation\n-     */\n-    protected T ref;\n-\n-    /**\n-     * The service name\n-     */\n-    protected String path;\n-\n-    /**\n-     * The provider configuration\n-     */\n-    protected ProviderConfig provider;\n-\n-    /**\n-     * The providerIds\n-     */\n-    protected String providerIds;\n-\n-    /**\n-     * whether it is a GenericService\n-     */\n-    protected volatile String generic;\n-\n-\n-\n-    public ServiceConfigBase() {\n-        serviceMetadata = new ServiceMetadata();\n-        serviceMetadata.addAttribute(\"ORIGIN_CONFIG\", this);\n-    }\n-\n-    public ServiceConfigBase(Service service) {\n-        serviceMetadata = new ServiceMetadata();\n-        serviceMetadata.addAttribute(\"ORIGIN_CONFIG\", this);\n-        appendAnnotation(Service.class, service);\n-        setMethods(MethodConfig.constructMethodConfig(service.methods()));\n-    }\n-\n-    @Deprecated\n-    private static List<ProtocolConfig> convertProviderToProtocol(List<ProviderConfig> providers) {\n-        if (CollectionUtils.isEmpty(providers)) {\n-            return null;\n-        }\n-        List<ProtocolConfig> protocols = new ArrayList<ProtocolConfig>(providers.size());\n-        for (ProviderConfig provider : providers) {\n-            protocols.add(convertProviderToProtocol(provider));\n-        }\n-        return protocols;\n-    }\n-\n-    @Deprecated\n-    private static List<ProviderConfig> convertProtocolToProvider(List<ProtocolConfig> protocols) {\n-        if (CollectionUtils.isEmpty(protocols)) {\n-            return null;\n-        }\n-        List<ProviderConfig> providers = new ArrayList<ProviderConfig>(protocols.size());\n-        for (ProtocolConfig provider : protocols) {\n-            providers.add(convertProtocolToProvider(provider));\n-        }\n-        return providers;\n-    }\n-\n-    @Deprecated\n-    private static ProtocolConfig convertProviderToProtocol(ProviderConfig provider) {\n-        ProtocolConfig protocol = new ProtocolConfig();\n-        protocol.setName(provider.getProtocol().getName());\n-        protocol.setServer(provider.getServer());\n-        protocol.setClient(provider.getClient());\n-        protocol.setCodec(provider.getCodec());\n-        protocol.setHost(provider.getHost());\n-        protocol.setPort(provider.getPort());\n-        protocol.setPath(provider.getPath());\n-        protocol.setPayload(provider.getPayload());\n-        protocol.setThreads(provider.getThreads());\n-        protocol.setParameters(provider.getParameters());\n-        return protocol;\n-    }\n-\n-    @Deprecated\n-    private static ProviderConfig convertProtocolToProvider(ProtocolConfig protocol) {\n-        ProviderConfig provider = new ProviderConfig();\n-        provider.setProtocol(protocol);\n-        provider.setServer(protocol.getServer());\n-        provider.setClient(protocol.getClient());\n-        provider.setCodec(protocol.getCodec());\n-        provider.setHost(protocol.getHost());\n-        provider.setPort(protocol.getPort());\n-        provider.setPath(protocol.getPath());\n-        provider.setPayload(protocol.getPayload());\n-        provider.setThreads(protocol.getThreads());\n-        provider.setParameters(protocol.getParameters());\n-        return provider;\n-    }\n-\n-    public boolean shouldExport() {\n-        Boolean export = getExport();\n-        // default value is true\n-        return export == null ? true : export;\n-    }\n-\n-    @Override\n-    public Boolean getExport() {\n-        return (export == null && provider != null) ? provider.getExport() : export;\n-    }\n-\n-    public boolean shouldDelay() {\n-        Integer delay = getDelay();\n-        return delay != null && delay > 0;\n-    }\n-\n-    @Override\n-    public Integer getDelay() {\n-        return (delay == null && provider != null) ? provider.getDelay() : delay;\n-    }\n-\n-    public void checkRef() {\n-        // reference should not be null, and is the implementation of the given interface\n-        if (ref == null) {\n-            throw new IllegalStateException(\"ref not allow null!\");\n-        }\n-        if (!interfaceClass.isInstance(ref)) {\n-            throw new IllegalStateException(\"The class \"\n-                    + ref.getClass().getName() + \" unimplemented interface \"\n-                    + interfaceClass + \"!\");\n-        }\n-    }\n-\n-    public Optional<String> getContextPath(ProtocolConfig protocolConfig) {\n-        String contextPath = protocolConfig.getContextpath();\n-        if (StringUtils.isEmpty(contextPath) && provider != null) {\n-            contextPath = provider.getContextpath();\n-        }\n-        return Optional.ofNullable(contextPath);\n-    }\n-\n-    protected Class getServiceClass(T ref) {\n-        return ref.getClass();\n-    }\n-\n-    public void checkDefault() throws IllegalStateException {\n-        if (provider == null) {\n-            provider = ApplicationModel.getConfigManager()\n-                    .getDefaultProvider()\n-                    .orElse(new ProviderConfig());\n-        }\n-    }\n-\n-    public void checkProtocol() {\n-        if (provider != null && notHasSelfProtocolProperty()) {\n-            setProtocols(provider.getProtocols());\n-            setProtocolIds(provider.getProtocolIds());\n-        }\n-\n-        if (CollectionUtils.isEmpty(protocols) && provider != null) {\n-            setProtocols(provider.getProtocols());\n-        }\n-        convertProtocolIdsToProtocols();\n-    }\n-\n-    private boolean notHasSelfProtocolProperty() {\n-        return CollectionUtils.isEmpty(protocols) && StringUtils.isEmpty(protocolIds);\n-    }\n-\n-    public void completeCompoundConfigs() {\n-        super.completeCompoundConfigs(provider);\n-        if (provider != null) {\n-            if (notHasSelfProtocolProperty()) {\n-                setProtocols(provider.getProtocols());\n-                setProtocolIds(provider.getProtocolIds());\n-            }\n-            if (configCenter == null) {\n-                setConfigCenter(provider.getConfigCenter());\n-            }\n-        }\n-    }\n-\n-    private void convertProtocolIdsToProtocols() {\n-        if (StringUtils.isEmpty(protocolIds)) {\n-            if (CollectionUtils.isEmpty(protocols)) {\n-                List<ProtocolConfig> protocolConfigs = ApplicationModel.getConfigManager().getDefaultProtocols();\n-                if (protocolConfigs.isEmpty()) {\n-                    protocolConfigs = new ArrayList<>(1);\n-                    ProtocolConfig protocolConfig = new ProtocolConfig();\n-                    protocolConfig.setDefault(true);\n-                    protocolConfig.refresh();\n-                    protocolConfigs.add(protocolConfig);\n-                    ApplicationModel.getConfigManager().addProtocol(protocolConfig);\n-                }\n-                setProtocols(protocolConfigs);\n-            }\n-        } else {\n-            String[] arr = COMMA_SPLIT_PATTERN.split(protocolIds);\n-            List<ProtocolConfig> tmpProtocols = new ArrayList<>();\n-            Arrays.stream(arr).forEach(id -> {\n-                if (tmpProtocols.stream().noneMatch(prot -> prot.getId().equals(id))) {\n-                    Optional<ProtocolConfig> globalProtocol = ApplicationModel.getConfigManager().getProtocol(id);\n-                    if (globalProtocol.isPresent()) {\n-                        tmpProtocols.add(globalProtocol.get());\n-                    } else {\n-                        ProtocolConfig protocolConfig = new ProtocolConfig();\n-                        protocolConfig.setId(id);\n-                        protocolConfig.refresh();\n-                        tmpProtocols.add(protocolConfig);\n-                    }\n-                }\n-            });\n-            if (tmpProtocols.size() > arr.length) {\n-                throw new IllegalStateException(\"Too much protocols found, the protocols comply to this service are :\" + protocolIds + \" but got \" + protocols\n-                        .size() + \" registries!\");\n-            }\n-            setProtocols(tmpProtocols);\n-        }\n-    }\n-\n-    public Class<?> getInterfaceClass() {\n-        if (interfaceClass != null) {\n-            return interfaceClass;\n-        }\n-        if (ref instanceof GenericService) {\n-            return GenericService.class;\n-        }\n-        try {\n-            if (interfaceName != null && interfaceName.length() > 0) {\n-                this.interfaceClass = Class.forName(interfaceName, true, Thread.currentThread()\n-                        .getContextClassLoader());\n-            }\n-        } catch (ClassNotFoundException t) {\n-            throw new IllegalStateException(t.getMessage(), t);\n-        }\n-        return interfaceClass;\n-    }\n-\n-    /**\n-     * @param interfaceClass\n-     * @see #setInterface(Class)\n-     * @deprecated\n-     */\n-    public void setInterfaceClass(Class<?> interfaceClass) {\n-        setInterface(interfaceClass);\n-    }\n-\n-\n-\n-    public void setInterface(Class<?> interfaceClass) {\n-        if (interfaceClass != null && !interfaceClass.isInterface()) {\n-            throw new IllegalStateException(\"The interface class \" + interfaceClass + \" is not a interface!\");\n-        }\n-        this.interfaceClass = interfaceClass;\n-        setInterface(interfaceClass == null ? null : interfaceClass.getName());\n-    }\n-\n-    public T getRef() {\n-        return ref;\n-    }\n-\n-    public void setRef(T ref) {\n-        this.ref = ref;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getPath() {\n-        return path;\n-    }\n-\n-    public void setPath(String path) {\n-        this.path = path;\n-    }\n-\n-    public ProviderConfig getProvider() {\n-        return provider;\n-    }\n-\n-    public void setProvider(ProviderConfig provider) {\n-        ApplicationModel.getConfigManager().addProvider(provider);\n-        this.provider = provider;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getProviderIds() {\n-        return providerIds;\n-    }\n-\n-    public void setProviderIds(String providerIds) {\n-        this.providerIds = providerIds;\n-    }\n-\n-    public String getGeneric() {\n-        return generic;\n-    }\n-\n-    public void setGeneric(String generic) {\n-        if (StringUtils.isEmpty(generic)) {\n-            return;\n-        }\n-        if (ProtocolUtils.isValidGenericValue(generic)) {\n-            this.generic = generic;\n-        } else {\n-            throw new IllegalArgumentException(\"Unsupported generic type \" + generic);\n-        }\n-    }\n-\n-//    @Override\n-//    public void setMock(String mock) {\n-//        throw new IllegalArgumentException(\"mock doesn't support on provider side\");\n-//    }\n-//\n-//    @Override\n-//    public void setMock(Object mock) {\n-//        throw new IllegalArgumentException(\"mock doesn't support on provider side\");\n-//    }\n-\n-    public ServiceMetadata getServiceMetadata() {\n-        return serviceMetadata;\n-    }\n-\n-    /**\n-     * @deprecated Replace to getProtocols()\n-     */\n-    @Deprecated\n-    public List<ProviderConfig> getProviders() {\n-        return convertProtocolToProvider(protocols);\n-    }\n-\n-    /**\n-     * @deprecated Replace to setProtocols()\n-     */\n-    @Deprecated\n-    public void setProviders(List<ProviderConfig> providers) {\n-        this.protocols = convertProviderToProtocol(providers);\n-    }\n-\n-    @Override\n-    @Parameter(excluded = true)\n-    public String getPrefix() {\n-        return DUBBO + \".service.\" + interfaceName;\n-    }\n-\n-    @Parameter(excluded = true)\n-    public String getUniqueServiceName() {\n-        return URL.buildKey(interfaceName, getGroup(), getVersion());\n-    }\n-\n-\n-\n-    @Override\n-    protected void computeValidRegistryIds() {\n-        if (provider != null && notHasSelfRegistryProperty()) {\n-            setRegistries(provider.getRegistries());\n-            setRegistryIds(provider.getRegistryIds());\n-        }\n-\n-        super.computeValidRegistryIds();\n-    }\n-\n-    public abstract void export();\n-\n-    public abstract void unexport();\n-\n-    public abstract boolean isExported();\n-\n-    public abstract boolean isUnexported();\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.annotation.Service;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.ServiceMetadata;\r\n+import org.apache.dubbo.rpc.service.GenericService;\r\n+import org.apache.dubbo.rpc.support.ProtocolUtils;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.List;\r\n+import java.util.Optional;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\r\n+\r\n+/**\r\n+ * ServiceConfig\r\n+ *\r\n+ * @export\r\n+ */\r\n+public abstract class ServiceConfigBase<T> extends AbstractServiceConfig {\r\n+\r\n+    private static final long serialVersionUID = 3033787999037024738L;\r\n+\r\n+\r\n+\r\n+    /**\r\n+     * The interface class of the exported service\r\n+     */\r\n+    protected Class<?> interfaceClass;\r\n+\r\n+    /**\r\n+     * The reference of the interface implementation\r\n+     */\r\n+    protected T ref;\r\n+\r\n+    /**\r\n+     * The service name\r\n+     */\r\n+    protected String path;\r\n+\r\n+    /**\r\n+     * The provider configuration\r\n+     */\r\n+    protected ProviderConfig provider;\r\n+\r\n+    /**\r\n+     * The providerIds\r\n+     */\r\n+    protected String providerIds;\r\n+\r\n+    /**\r\n+     * whether it is a GenericService\r\n+     */\r\n+    protected volatile String generic;\r\n+\r\n+\r\n+\r\n+    public ServiceConfigBase() {\r\n+        serviceMetadata = new ServiceMetadata();\r\n+        serviceMetadata.addAttribute(\"ORIGIN_CONFIG\", this);\r\n+    }\r\n+\r\n+    public ServiceConfigBase(Service service) {\r\n+        serviceMetadata = new ServiceMetadata();\r\n+        serviceMetadata.addAttribute(\"ORIGIN_CONFIG\", this);\r\n+        appendAnnotation(Service.class, service);\r\n+        setMethods(MethodConfig.constructMethodConfig(service.methods()));\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    private static List<ProtocolConfig> convertProviderToProtocol(List<ProviderConfig> providers) {\r\n+        if (CollectionUtils.isEmpty(providers)) {\r\n+            return null;\r\n+        }\r\n+        List<ProtocolConfig> protocols = new ArrayList<ProtocolConfig>(providers.size());\r\n+        for (ProviderConfig provider : providers) {\r\n+            protocols.add(convertProviderToProtocol(provider));\r\n+        }\r\n+        return protocols;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    private static List<ProviderConfig> convertProtocolToProvider(List<ProtocolConfig> protocols) {\r\n+        if (CollectionUtils.isEmpty(protocols)) {\r\n+            return null;\r\n+        }\r\n+        List<ProviderConfig> providers = new ArrayList<ProviderConfig>(protocols.size());\r\n+        for (ProtocolConfig provider : protocols) {\r\n+            providers.add(convertProtocolToProvider(provider));\r\n+        }\r\n+        return providers;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    private static ProtocolConfig convertProviderToProtocol(ProviderConfig provider) {\r\n+        ProtocolConfig protocol = new ProtocolConfig();\r\n+        protocol.setName(provider.getProtocol().getName());\r\n+        protocol.setServer(provider.getServer());\r\n+        protocol.setClient(provider.getClient());\r\n+        protocol.setCodec(provider.getCodec());\r\n+        protocol.setHost(provider.getHost());\r\n+        protocol.setPort(provider.getPort());\r\n+        protocol.setPath(provider.getPath());\r\n+        protocol.setPayload(provider.getPayload());\r\n+        protocol.setThreads(provider.getThreads());\r\n+        protocol.setParameters(provider.getParameters());\r\n+        return protocol;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    private static ProviderConfig convertProtocolToProvider(ProtocolConfig protocol) {\r\n+        ProviderConfig provider = new ProviderConfig();\r\n+        provider.setProtocol(protocol);\r\n+        provider.setServer(protocol.getServer());\r\n+        provider.setClient(protocol.getClient());\r\n+        provider.setCodec(protocol.getCodec());\r\n+        provider.setHost(protocol.getHost());\r\n+        provider.setPort(protocol.getPort());\r\n+        provider.setPath(protocol.getPath());\r\n+        provider.setPayload(protocol.getPayload());\r\n+        provider.setThreads(protocol.getThreads());\r\n+        provider.setParameters(protocol.getParameters());\r\n+        return provider;\r\n+    }\r\n+\r\n+    public boolean shouldExport() {\r\n+        Boolean export = getExport();\r\n+        // default value is true\r\n+        return export == null ? true : export;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Boolean getExport() {\r\n+        return (export == null && provider != null) ? provider.getExport() : export;\r\n+    }\r\n+\r\n+    public boolean shouldDelay() {\r\n+        Integer delay = getDelay();\r\n+        return delay != null && delay > 0;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Integer getDelay() {\r\n+        return (delay == null && provider != null) ? provider.getDelay() : delay;\r\n+    }\r\n+\r\n+    public void checkRef() {\r\n+        // reference should not be null, and is the implementation of the given interface\r\n+        if (ref == null) {\r\n+            throw new IllegalStateException(\"ref not allow null!\");\r\n+        }\r\n+        if (!interfaceClass.isInstance(ref)) {\r\n+            throw new IllegalStateException(\"The class \"\r\n+                    + ref.getClass().getName() + \" unimplemented interface \"\r\n+                    + interfaceClass + \"!\");\r\n+        }\r\n+    }\r\n+\r\n+    public Optional<String> getContextPath(ProtocolConfig protocolConfig) {\r\n+        String contextPath = protocolConfig.getContextpath();\r\n+        if (StringUtils.isEmpty(contextPath) && provider != null) {\r\n+            contextPath = provider.getContextpath();\r\n+        }\r\n+        return Optional.ofNullable(contextPath);\r\n+    }\r\n+\r\n+    protected Class getServiceClass(T ref) {\r\n+        return ref.getClass();\r\n+    }\r\n+\r\n+    public void checkDefault() throws IllegalStateException {\r\n+        if (provider == null) {\r\n+            provider = ApplicationModel.getConfigManager()\r\n+                    .getDefaultProvider()\r\n+                    .orElse(new ProviderConfig());\r\n+        }\r\n+    }\r\n+\r\n+    public void checkProtocol() {\r\n+        if (provider != null && notHasSelfProtocolProperty()) {\r\n+            setProtocols(provider.getProtocols());\r\n+            setProtocolIds(provider.getProtocolIds());\r\n+        }\r\n+\r\n+        if (CollectionUtils.isEmpty(protocols) && provider != null) {\r\n+            setProtocols(provider.getProtocols());\r\n+        }\r\n+        convertProtocolIdsToProtocols();\r\n+    }\r\n+\r\n+    private boolean notHasSelfProtocolProperty() {\r\n+        return CollectionUtils.isEmpty(protocols) && StringUtils.isEmpty(protocolIds);\r\n+    }\r\n+\r\n+    public void completeCompoundConfigs() {\r\n+        super.completeCompoundConfigs(provider);\r\n+        if (provider != null) {\r\n+            if (notHasSelfProtocolProperty()) {\r\n+                setProtocols(provider.getProtocols());\r\n+                setProtocolIds(provider.getProtocolIds());\r\n+            }\r\n+            if (configCenter == null) {\r\n+                setConfigCenter(provider.getConfigCenter());\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private void convertProtocolIdsToProtocols() {\r\n+        if (StringUtils.isEmpty(protocolIds)) {\r\n+            if (CollectionUtils.isEmpty(protocols)) {\r\n+                List<ProtocolConfig> protocolConfigs = ApplicationModel.getConfigManager().getDefaultProtocols();\r\n+                if (protocolConfigs.isEmpty()) {\r\n+                    protocolConfigs = new ArrayList<>(1);\r\n+                    ProtocolConfig protocolConfig = new ProtocolConfig();\r\n+                    protocolConfig.setDefault(true);\r\n+                    protocolConfig.refresh();\r\n+                    protocolConfigs.add(protocolConfig);\r\n+                    ApplicationModel.getConfigManager().addProtocol(protocolConfig);\r\n+                }\r\n+                setProtocols(protocolConfigs);\r\n+            }\r\n+        } else {\r\n+            String[] arr = COMMA_SPLIT_PATTERN.split(protocolIds);\r\n+            List<ProtocolConfig> tmpProtocols = new ArrayList<>();\r\n+            Arrays.stream(arr).forEach(id -> {\r\n+                if (tmpProtocols.stream().noneMatch(prot -> prot.getId().equals(id))) {\r\n+                    Optional<ProtocolConfig> globalProtocol = ApplicationModel.getConfigManager().getProtocol(id);\r\n+                    if (globalProtocol.isPresent()) {\r\n+                        tmpProtocols.add(globalProtocol.get());\r\n+                    } else {\r\n+                        ProtocolConfig protocolConfig = new ProtocolConfig();\r\n+                        protocolConfig.setId(id);\r\n+                        protocolConfig.refresh();\r\n+                        tmpProtocols.add(protocolConfig);\r\n+                    }\r\n+                }\r\n+            });\r\n+            if (tmpProtocols.size() > arr.length) {\r\n+                throw new IllegalStateException(\"Too much protocols found, the protocols comply to this service are :\" + protocolIds + \" but got \" + protocols\r\n+                        .size() + \" registries!\");\r\n+            }\r\n+            setProtocols(tmpProtocols);\r\n+        }\r\n+    }\r\n+\r\n+    public Class<?> getInterfaceClass() {\r\n+        if (interfaceClass != null) {\r\n+            return interfaceClass;\r\n+        }\r\n+        if (ref instanceof GenericService) {\r\n+            return GenericService.class;\r\n+        }\r\n+        try {\r\n+            if (interfaceName != null && interfaceName.length() > 0) {\r\n+                this.interfaceClass = Class.forName(interfaceName, true, Thread.currentThread()\r\n+                        .getContextClassLoader());\r\n+            }\r\n+        } catch (ClassNotFoundException t) {\r\n+            throw new IllegalStateException(t.getMessage(), t);\r\n+        }\r\n+        return interfaceClass;\r\n+    }\r\n+\r\n+    /**\r\n+     * @param interfaceClass\r\n+     * @see #setInterface(Class)\r\n+     * @deprecated\r\n+     */\r\n+    public void setInterfaceClass(Class<?> interfaceClass) {\r\n+        setInterface(interfaceClass);\r\n+    }\r\n+\r\n+\r\n+\r\n+    public void setInterface(Class<?> interfaceClass) {\r\n+        if (interfaceClass != null && !interfaceClass.isInterface()) {\r\n+            throw new IllegalStateException(\"The interface class \" + interfaceClass + \" is not a interface!\");\r\n+        }\r\n+        this.interfaceClass = interfaceClass;\r\n+        setInterface(interfaceClass == null ? null : interfaceClass.getName());\r\n+    }\r\n+\r\n+    public T getRef() {\r\n+        return ref;\r\n+    }\r\n+\r\n+    public void setRef(T ref) {\r\n+        this.ref = ref;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getPath() {\r\n+        return path;\r\n+    }\r\n+\r\n+    public void setPath(String path) {\r\n+        this.path = path;\r\n+    }\r\n+\r\n+    public ProviderConfig getProvider() {\r\n+        return provider;\r\n+    }\r\n+\r\n+    public void setProvider(ProviderConfig provider) {\r\n+        ApplicationModel.getConfigManager().addProvider(provider);\r\n+        this.provider = provider;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getProviderIds() {\r\n+        return providerIds;\r\n+    }\r\n+\r\n+    public void setProviderIds(String providerIds) {\r\n+        this.providerIds = providerIds;\r\n+    }\r\n+\r\n+    public String getGeneric() {\r\n+        return generic;\r\n+    }\r\n+\r\n+    public void setGeneric(String generic) {\r\n+        if (StringUtils.isEmpty(generic)) {\r\n+            return;\r\n+        }\r\n+        if (ProtocolUtils.isValidGenericValue(generic)) {\r\n+            this.generic = generic;\r\n+        } else {\r\n+            throw new IllegalArgumentException(\"Unsupported generic type \" + generic);\r\n+        }\r\n+    }\r\n+\r\n+//    @Override\r\n+//    public void setMock(String mock) {\r\n+//        throw new IllegalArgumentException(\"mock doesn't support on provider side\");\r\n+//    }\r\n+//\r\n+//    @Override\r\n+//    public void setMock(Object mock) {\r\n+//        throw new IllegalArgumentException(\"mock doesn't support on provider side\");\r\n+//    }\r\n+\r\n+    public ServiceMetadata getServiceMetadata() {\r\n+        return serviceMetadata;\r\n+    }\r\n+\r\n+    /**\r\n+     * @deprecated Replace to getProtocols()\r\n+     */\r\n+    @Deprecated\r\n+    public List<ProviderConfig> getProviders() {\r\n+        return convertProtocolToProvider(protocols);\r\n+    }\r\n+\r\n+    /**\r\n+     * @deprecated Replace to setProtocols()\r\n+     */\r\n+    @Deprecated\r\n+    public void setProviders(List<ProviderConfig> providers) {\r\n+        this.protocols = convertProviderToProtocol(providers);\r\n+    }\r\n+\r\n+    @Override\r\n+    @Parameter(excluded = true)\r\n+    public String getPrefix() {\r\n+        return DUBBO + \".service.\" + interfaceName;\r\n+    }\r\n+\r\n+    @Parameter(excluded = true)\r\n+    public String getUniqueServiceName() {\r\n+        return URL.buildKey(interfaceName, getGroup(), getVersion());\r\n+    }\r\n+\r\n+\r\n+\r\n+    @Override\r\n+    protected void computeValidRegistryIds() {\r\n+        if (provider != null && notHasSelfRegistryProperty()) {\r\n+            setRegistries(provider.getRegistries());\r\n+            setRegistryIds(provider.getRegistryIds());\r\n+        }\r\n+\r\n+        super.computeValidRegistryIds();\r\n+    }\r\n+\r\n+    public abstract void export();\r\n+\r\n+    public abstract void unexport();\r\n+\r\n+    public abstract boolean isExported();\r\n+\r\n+    public abstract boolean isUnexported();\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/config/SslConfig.java", "source2": "org/apache/dubbo/config/SslConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,188 +1,188 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.IOUtils;\n-import org.apache.dubbo.config.support.Parameter;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.util.concurrent.atomic.AtomicBoolean;\n-\n-public class SslConfig extends AbstractConfig {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(SslConfig.class);\n-    private AtomicBoolean inited = new AtomicBoolean(false);\n-\n-    private String serverKeyCertChainPath;\n-    private String serverPrivateKeyPath;\n-    private String serverKeyPassword;\n-    private String serverTrustCertCollectionPath;\n-\n-    private String clientKeyCertChainPath;\n-    private String clientPrivateKeyPath;\n-    private String clientKeyPassword;\n-    private String clientTrustCertCollectionPath;\n-\n-    private InputStream serverKeyCertChainPathStream;\n-    private InputStream serverPrivateKeyPathStream;\n-    private InputStream serverTrustCertCollectionPathStream;\n-\n-    private InputStream clientKeyCertChainPathStream;\n-    private InputStream clientPrivateKeyPathStream;\n-    private InputStream clientTrustCertCollectionPathStream;\n-\n-    @Parameter(key = \"server-key-cert-chain-path\")\n-    public String getServerKeyCertChainPath() {\n-        return serverKeyCertChainPath;\n-    }\n-\n-    public void setServerKeyCertChainPath(String serverKeyCertChainPath) {\n-        this.serverKeyCertChainPath = serverKeyCertChainPath;\n-    }\n-\n-    @Parameter(key = \"server-private-key-path\")\n-    public String getServerPrivateKeyPath() {\n-        return serverPrivateKeyPath;\n-    }\n-\n-    public void setServerPrivateKeyPath(String serverPrivateKeyPath) {\n-        this.serverPrivateKeyPath = serverPrivateKeyPath;\n-    }\n-\n-    @Parameter(key = \"server-key-password\")\n-    public String getServerKeyPassword() {\n-        return serverKeyPassword;\n-    }\n-\n-    public void setServerKeyPassword(String serverKeyPassword) {\n-        this.serverKeyPassword = serverKeyPassword;\n-    }\n-\n-    @Parameter(key = \"server-trust-cert-collection-path\")\n-    public String getServerTrustCertCollectionPath() {\n-        return serverTrustCertCollectionPath;\n-    }\n-\n-    public void setServerTrustCertCollectionPath(String serverTrustCertCollectionPath) {\n-        this.serverTrustCertCollectionPath = serverTrustCertCollectionPath;\n-    }\n-\n-    @Parameter(key = \"client-key-cert-chain-path\")\n-    public String getClientKeyCertChainPath() {\n-        return clientKeyCertChainPath;\n-    }\n-\n-    public void setClientKeyCertChainPath(String clientKeyCertChainPath) {\n-        this.clientKeyCertChainPath = clientKeyCertChainPath;\n-    }\n-\n-    @Parameter(key = \"client-private-key-path\")\n-    public String getClientPrivateKeyPath() {\n-        return clientPrivateKeyPath;\n-    }\n-\n-    public void setClientPrivateKeyPath(String clientPrivateKeyPath) {\n-        this.clientPrivateKeyPath = clientPrivateKeyPath;\n-    }\n-\n-    @Parameter(key = \"client-key-password\")\n-    public String getClientKeyPassword() {\n-        return clientKeyPassword;\n-    }\n-\n-    public void setClientKeyPassword(String clientKeyPassword) {\n-        this.clientKeyPassword = clientKeyPassword;\n-    }\n-\n-    @Parameter(key = \"client-trust-cert-collection-path\")\n-    public String getClientTrustCertCollectionPath() {\n-        return clientTrustCertCollectionPath;\n-    }\n-\n-    public void setClientTrustCertCollectionPath(String clientTrustCertCollectionPath) {\n-        this.clientTrustCertCollectionPath = clientTrustCertCollectionPath;\n-    }\n-\n-    public InputStream getServerKeyCertChainPathStream() throws IOException {\n-        if (serverKeyCertChainPath != null) {\n-            serverKeyCertChainPathStream = IOUtils.getURL(serverKeyCertChainPath).openStream();\n-        }\n-        return serverKeyCertChainPathStream;\n-    }\n-\n-    public void setServerKeyCertChainPathStream(InputStream serverKeyCertChainPathStream) {\n-        this.serverKeyCertChainPathStream = serverKeyCertChainPathStream;\n-    }\n-\n-    public InputStream getServerPrivateKeyPathStream() throws IOException {\n-        if (serverPrivateKeyPath != null) {\n-            serverPrivateKeyPathStream = IOUtils.getURL(serverPrivateKeyPath).openStream();\n-        }\n-        return serverPrivateKeyPathStream;\n-    }\n-\n-    public void setServerPrivateKeyPathStream(InputStream serverPrivateKeyPathStream) {\n-        this.serverPrivateKeyPathStream = serverPrivateKeyPathStream;\n-    }\n-\n-    public InputStream getServerTrustCertCollectionPathStream() throws IOException {\n-        if (serverTrustCertCollectionPath != null) {\n-            serverTrustCertCollectionPathStream = IOUtils.getURL(serverTrustCertCollectionPath).openStream();\n-        }\n-        return serverTrustCertCollectionPathStream;\n-    }\n-\n-    public void setServerTrustCertCollectionPathStream(InputStream serverTrustCertCollectionPathStream) {\n-        this.serverTrustCertCollectionPathStream = serverTrustCertCollectionPathStream;\n-    }\n-\n-    public InputStream getClientKeyCertChainPathStream() throws IOException {\n-        if (clientKeyCertChainPath != null) {\n-            clientKeyCertChainPathStream = IOUtils.getURL(clientKeyCertChainPath).openStream();\n-        }\n-        return clientKeyCertChainPathStream;\n-    }\n-\n-    public void setClientKeyCertChainPathStream(InputStream clientKeyCertChainPathStream) {\n-        this.clientKeyCertChainPathStream = clientKeyCertChainPathStream;\n-    }\n-\n-    public InputStream getClientPrivateKeyPathStream() throws IOException {\n-        if (clientPrivateKeyPath != null) {\n-            clientPrivateKeyPathStream = IOUtils.getURL(clientPrivateKeyPath).openStream();\n-        }\n-        return clientPrivateKeyPathStream;\n-    }\n-\n-    public void setClientPrivateKeyPathStream(InputStream clientPrivateKeyPathStream) {\n-        this.clientPrivateKeyPathStream = clientPrivateKeyPathStream;\n-    }\n-\n-    public InputStream getClientTrustCertCollectionPathStream() throws IOException {\n-        if (clientTrustCertCollectionPath != null) {\n-            clientTrustCertCollectionPathStream = IOUtils.getURL(clientTrustCertCollectionPath).openStream();\n-        }\n-        return clientTrustCertCollectionPathStream;\n-    }\n-\n-    public void setClientTrustCertCollectionPathStream(InputStream clientTrustCertCollectionPathStream) {\n-        this.clientTrustCertCollectionPathStream = clientTrustCertCollectionPathStream;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.IOUtils;\r\n+import org.apache.dubbo.config.support.Parameter;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+\r\n+public class SslConfig extends AbstractConfig {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(SslConfig.class);\r\n+    private AtomicBoolean inited = new AtomicBoolean(false);\r\n+\r\n+    private String serverKeyCertChainPath;\r\n+    private String serverPrivateKeyPath;\r\n+    private String serverKeyPassword;\r\n+    private String serverTrustCertCollectionPath;\r\n+\r\n+    private String clientKeyCertChainPath;\r\n+    private String clientPrivateKeyPath;\r\n+    private String clientKeyPassword;\r\n+    private String clientTrustCertCollectionPath;\r\n+\r\n+    private InputStream serverKeyCertChainPathStream;\r\n+    private InputStream serverPrivateKeyPathStream;\r\n+    private InputStream serverTrustCertCollectionPathStream;\r\n+\r\n+    private InputStream clientKeyCertChainPathStream;\r\n+    private InputStream clientPrivateKeyPathStream;\r\n+    private InputStream clientTrustCertCollectionPathStream;\r\n+\r\n+    @Parameter(key = \"server-key-cert-chain-path\")\r\n+    public String getServerKeyCertChainPath() {\r\n+        return serverKeyCertChainPath;\r\n+    }\r\n+\r\n+    public void setServerKeyCertChainPath(String serverKeyCertChainPath) {\r\n+        this.serverKeyCertChainPath = serverKeyCertChainPath;\r\n+    }\r\n+\r\n+    @Parameter(key = \"server-private-key-path\")\r\n+    public String getServerPrivateKeyPath() {\r\n+        return serverPrivateKeyPath;\r\n+    }\r\n+\r\n+    public void setServerPrivateKeyPath(String serverPrivateKeyPath) {\r\n+        this.serverPrivateKeyPath = serverPrivateKeyPath;\r\n+    }\r\n+\r\n+    @Parameter(key = \"server-key-password\")\r\n+    public String getServerKeyPassword() {\r\n+        return serverKeyPassword;\r\n+    }\r\n+\r\n+    public void setServerKeyPassword(String serverKeyPassword) {\r\n+        this.serverKeyPassword = serverKeyPassword;\r\n+    }\r\n+\r\n+    @Parameter(key = \"server-trust-cert-collection-path\")\r\n+    public String getServerTrustCertCollectionPath() {\r\n+        return serverTrustCertCollectionPath;\r\n+    }\r\n+\r\n+    public void setServerTrustCertCollectionPath(String serverTrustCertCollectionPath) {\r\n+        this.serverTrustCertCollectionPath = serverTrustCertCollectionPath;\r\n+    }\r\n+\r\n+    @Parameter(key = \"client-key-cert-chain-path\")\r\n+    public String getClientKeyCertChainPath() {\r\n+        return clientKeyCertChainPath;\r\n+    }\r\n+\r\n+    public void setClientKeyCertChainPath(String clientKeyCertChainPath) {\r\n+        this.clientKeyCertChainPath = clientKeyCertChainPath;\r\n+    }\r\n+\r\n+    @Parameter(key = \"client-private-key-path\")\r\n+    public String getClientPrivateKeyPath() {\r\n+        return clientPrivateKeyPath;\r\n+    }\r\n+\r\n+    public void setClientPrivateKeyPath(String clientPrivateKeyPath) {\r\n+        this.clientPrivateKeyPath = clientPrivateKeyPath;\r\n+    }\r\n+\r\n+    @Parameter(key = \"client-key-password\")\r\n+    public String getClientKeyPassword() {\r\n+        return clientKeyPassword;\r\n+    }\r\n+\r\n+    public void setClientKeyPassword(String clientKeyPassword) {\r\n+        this.clientKeyPassword = clientKeyPassword;\r\n+    }\r\n+\r\n+    @Parameter(key = \"client-trust-cert-collection-path\")\r\n+    public String getClientTrustCertCollectionPath() {\r\n+        return clientTrustCertCollectionPath;\r\n+    }\r\n+\r\n+    public void setClientTrustCertCollectionPath(String clientTrustCertCollectionPath) {\r\n+        this.clientTrustCertCollectionPath = clientTrustCertCollectionPath;\r\n+    }\r\n+\r\n+    public InputStream getServerKeyCertChainPathStream() throws IOException {\r\n+        if (serverKeyCertChainPath != null) {\r\n+            serverKeyCertChainPathStream = IOUtils.getURL(serverKeyCertChainPath).openStream();\r\n+        }\r\n+        return serverKeyCertChainPathStream;\r\n+    }\r\n+\r\n+    public void setServerKeyCertChainPathStream(InputStream serverKeyCertChainPathStream) {\r\n+        this.serverKeyCertChainPathStream = serverKeyCertChainPathStream;\r\n+    }\r\n+\r\n+    public InputStream getServerPrivateKeyPathStream() throws IOException {\r\n+        if (serverPrivateKeyPath != null) {\r\n+            serverPrivateKeyPathStream = IOUtils.getURL(serverPrivateKeyPath).openStream();\r\n+        }\r\n+        return serverPrivateKeyPathStream;\r\n+    }\r\n+\r\n+    public void setServerPrivateKeyPathStream(InputStream serverPrivateKeyPathStream) {\r\n+        this.serverPrivateKeyPathStream = serverPrivateKeyPathStream;\r\n+    }\r\n+\r\n+    public InputStream getServerTrustCertCollectionPathStream() throws IOException {\r\n+        if (serverTrustCertCollectionPath != null) {\r\n+            serverTrustCertCollectionPathStream = IOUtils.getURL(serverTrustCertCollectionPath).openStream();\r\n+        }\r\n+        return serverTrustCertCollectionPathStream;\r\n+    }\r\n+\r\n+    public void setServerTrustCertCollectionPathStream(InputStream serverTrustCertCollectionPathStream) {\r\n+        this.serverTrustCertCollectionPathStream = serverTrustCertCollectionPathStream;\r\n+    }\r\n+\r\n+    public InputStream getClientKeyCertChainPathStream() throws IOException {\r\n+        if (clientKeyCertChainPath != null) {\r\n+            clientKeyCertChainPathStream = IOUtils.getURL(clientKeyCertChainPath).openStream();\r\n+        }\r\n+        return clientKeyCertChainPathStream;\r\n+    }\r\n+\r\n+    public void setClientKeyCertChainPathStream(InputStream clientKeyCertChainPathStream) {\r\n+        this.clientKeyCertChainPathStream = clientKeyCertChainPathStream;\r\n+    }\r\n+\r\n+    public InputStream getClientPrivateKeyPathStream() throws IOException {\r\n+        if (clientPrivateKeyPath != null) {\r\n+            clientPrivateKeyPathStream = IOUtils.getURL(clientPrivateKeyPath).openStream();\r\n+        }\r\n+        return clientPrivateKeyPathStream;\r\n+    }\r\n+\r\n+    public void setClientPrivateKeyPathStream(InputStream clientPrivateKeyPathStream) {\r\n+        this.clientPrivateKeyPathStream = clientPrivateKeyPathStream;\r\n+    }\r\n+\r\n+    public InputStream getClientTrustCertCollectionPathStream() throws IOException {\r\n+        if (clientTrustCertCollectionPath != null) {\r\n+            clientTrustCertCollectionPathStream = IOUtils.getURL(clientTrustCertCollectionPath).openStream();\r\n+        }\r\n+        return clientTrustCertCollectionPathStream;\r\n+    }\r\n+\r\n+    public void setClientTrustCertCollectionPathStream(InputStream clientTrustCertCollectionPathStream) {\r\n+        this.clientTrustCertCollectionPathStream = clientTrustCertCollectionPathStream;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/annotation/Argument.java", "source2": "org/apache/dubbo/config/annotation/Argument.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,44 +1,44 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.annotation;\n-\n-import java.lang.annotation.Documented;\n-import java.lang.annotation.ElementType;\n-import java.lang.annotation.Inherited;\n-import java.lang.annotation.Retention;\n-import java.lang.annotation.RetentionPolicy;\n-import java.lang.annotation.Target;\n-\n-/**\n- * @since 2.6.5\n- *\n- * 2018/9/29\n- */\n-@Documented\n-@Retention(RetentionPolicy.RUNTIME)\n-@Target({ElementType.ANNOTATION_TYPE})\n-@Inherited\n-public @interface Argument {\n-    //argument: index -1 represents not set\n-    int index() default -1;\n-\n-    //argument type\n-    String type() default \"\";\n-\n-    //callback interface\n-    boolean callback() default false;\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.annotation;\r\n+\r\n+import java.lang.annotation.Documented;\r\n+import java.lang.annotation.ElementType;\r\n+import java.lang.annotation.Inherited;\r\n+import java.lang.annotation.Retention;\r\n+import java.lang.annotation.RetentionPolicy;\r\n+import java.lang.annotation.Target;\r\n+\r\n+/**\r\n+ * @since 2.6.5\r\n+ *\r\n+ * 2018/9/29\r\n+ */\r\n+@Documented\r\n+@Retention(RetentionPolicy.RUNTIME)\r\n+@Target({ElementType.ANNOTATION_TYPE})\r\n+@Inherited\r\n+public @interface Argument {\r\n+    //argument: index -1 represents not set\r\n+    int index() default -1;\r\n+\r\n+    //argument type\r\n+    String type() default \"\";\r\n+\r\n+    //callback interface\r\n+    boolean callback() default false;\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/annotation/DubboReference.java", "source2": "org/apache/dubbo/config/annotation/DubboReference.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,298 +1,298 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.annotation;\n-\n-import org.apache.dubbo.common.constants.RegistryConstants;\n-\n-import java.lang.annotation.Documented;\n-import java.lang.annotation.ElementType;\n-import java.lang.annotation.Retention;\n-import java.lang.annotation.RetentionPolicy;\n-import java.lang.annotation.Target;\n-\n-/**\n- * An annotation used for referencing a Dubbo service\n- *\n- * @since 2.7.7\n- */\n-@Documented\n-@Retention(RetentionPolicy.RUNTIME)\n-@Target({ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})\n-public @interface DubboReference {\n-\n-    /**\n-     * Interface class, default value is void.class\n-     */\n-    Class<?> interfaceClass() default void.class;\n-\n-    /**\n-     * Interface class name, default value is empty string\n-     */\n-    String interfaceName() default \"\";\n-\n-    /**\n-     * Service version, default value is empty string\n-     */\n-    String version() default \"\";\n-\n-    /**\n-     * Service group, default value is empty string\n-     */\n-    String group() default \"\";\n-\n-    /**\n-     * Service target URL for direct invocation, if this is specified, then registry center takes no effect.\n-     */\n-    String url() default \"\";\n-\n-    /**\n-     * Client transport type, default value is \"netty\"\n-     */\n-    String client() default \"\";\n-\n-    /**\n-     * Whether to enable generic invocation, default value is false\n-     */\n-    boolean generic() default false;\n-\n-    /**\n-     * When enable, prefer to call local service in the same JVM if it's present, default value is true\n-     */\n-    boolean injvm() default true;\n-\n-    /**\n-     * Check if service provider is available during boot up, default value is true\n-     */\n-    boolean check() default true;\n-\n-    /**\n-     * Whether eager initialize the reference bean when all properties are set, default value is false\n-     */\n-    boolean init() default false;\n-\n-    /**\n-     * Whether to make connection when the client is created, the default value is false\n-     */\n-    boolean lazy() default false;\n-\n-    /**\n-     * Export an stub service for event dispatch, default value is false.\n-     * <p>\n-     * see org.apache.dubbo.rpc.Constants#STUB_EVENT_METHODS_KEY\n-     */\n-    boolean stubevent() default false;\n-\n-    /**\n-     * Whether to reconnect if connection is lost, if not specify, reconnect is enabled by default, and the interval\n-     * for retry connecting is 2000 ms\n-     * <p>\n-     * see org.apache.dubbo.remoting.Constants#DEFAULT_RECONNECT_PERIOD\n-     */\n-    String reconnect() default \"\";\n-\n-    /**\n-     * Whether to stick to the same node in the cluster, the default value is false\n-     * <p>\n-     * see Constants#DEFAULT_CLUSTER_STICKY\n-     */\n-    boolean sticky() default false;\n-\n-    /**\n-     * How the proxy is generated, legal values include: jdk, javassist\n-     */\n-    String proxy() default \"\";\n-\n-    /**\n-     * Service stub name, use interface name + Local if not set\n-     */\n-    String stub() default \"\";\n-\n-    /**\n-     * Cluster strategy, legal values include: failover, failfast, failsafe, failback, forking\n-     */\n-    String cluster() default \"\";\n-\n-    /**\n-     * Maximum connections service provider can accept, default value is 0 - connection is shared\n-     */\n-    int connections() default 0;\n-\n-    /**\n-     * The callback instance limit peer connection\n-     * <p>\n-     * see org.apache.dubbo.rpc.Constants#DEFAULT_CALLBACK_INSTANCES\n-     */\n-    int callbacks() default 0;\n-\n-    /**\n-     * Callback method name when connected, default value is empty string\n-     */\n-    String onconnect() default \"\";\n-\n-    /**\n-     * Callback method name when disconnected, default value is empty string\n-     */\n-    String ondisconnect() default \"\";\n-\n-    /**\n-     * Service owner, default value is empty string\n-     */\n-    String owner() default \"\";\n-\n-    /**\n-     * Service layer, default value is empty string\n-     */\n-    String layer() default \"\";\n-\n-    /**\n-     * Service invocation retry times\n-     * <p>\n-     * see Constants#DEFAULT_RETRIES\n-     */\n-    int retries() default 2;\n-\n-    /**\n-     * Load balance strategy, legal values include: random, roundrobin, leastactive\n-     * <p>\n-     * see Constants#DEFAULT_LOADBALANCE\n-     */\n-    String loadbalance() default \"\";\n-\n-    /**\n-     * Whether to enable async invocation, default value is false\n-     */\n-    boolean async() default false;\n-\n-    /**\n-     * Maximum active requests allowed, default value is 0\n-     */\n-    int actives() default 0;\n-\n-    /**\n-     * Whether the async request has already been sent, the default value is false\n-     */\n-    boolean sent() default false;\n-\n-    /**\n-     * Service mock name, use interface name + Mock if not set\n-     */\n-    String mock() default \"\";\n-\n-    /**\n-     * Whether to use JSR303 validation, legal values are: true, false\n-     */\n-    String validation() default \"\";\n-\n-    /**\n-     * Timeout value for service invocation, default value is 0\n-     */\n-    int timeout() default 0;\n-\n-    /**\n-     * Specify cache implementation for service invocation, legal values include: lru, threadlocal, jcache\n-     */\n-    String cache() default \"\";\n-\n-    /**\n-     * Filters for service invocation\n-     * <p>\n-     * see Filter\n-     */\n-    String[] filter() default {};\n-\n-    /**\n-     * Listeners for service exporting and unexporting\n-     * <p>\n-     * see ExporterListener\n-     */\n-    String[] listener() default {};\n-\n-    /**\n-     * Customized parameter key-value pair, for example: {key1, value1, key2, value2}\n-     */\n-    String[] parameters() default {};\n-\n-    /**\n-     * Application associated name\n-     */\n-    String application() default \"\";\n-\n-    /**\n-     * Module associated name\n-     */\n-    String module() default \"\";\n-\n-    /**\n-     * Consumer associated name\n-     */\n-    String consumer() default \"\";\n-\n-    /**\n-     * Monitor associated name\n-     */\n-    String monitor() default \"\";\n-\n-    /**\n-     * Registry associated name\n-     */\n-    String[] registry() default {};\n-\n-    /**\n-     * The communication protocol of Dubbo Service\n-     *\n-     * @return the default value is \"\"\n-     * @since 2.6.6\n-     */\n-    String protocol() default \"\";\n-\n-    /**\n-     * Service tag name\n-     */\n-    String tag() default \"\";\n-\n-    /**\n-     * Service merger\n-     */\n-    String merger() default \"\";\n-\n-    /**\n-     * methods support\n-     */\n-    Method[] methods() default {};\n-\n-    /**\n-     * The id\n-     *\n-     * @return default value is empty\n-     * @since 2.7.3\n-     */\n-    String id() default \"\";\n-\n-    /**\n-     * @return The service names that the Dubbo interface subscribed\n-     * @see RegistryConstants#SUBSCRIBED_SERVICE_NAMES_KEY\n-     * @deprecated using {@link DubboReference#providedBy()}\n-     * @since 2.7.8\n-     */\n-    String[] services() default {};\n-\n-    /**\n-     * declares which app or service this interface belongs to\n-     * @see RegistryConstants#PROVIDED_BY\n-     */\n-    String[] providedBy() default {};\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.annotation;\r\n+\r\n+import org.apache.dubbo.common.constants.RegistryConstants;\r\n+\r\n+import java.lang.annotation.Documented;\r\n+import java.lang.annotation.ElementType;\r\n+import java.lang.annotation.Retention;\r\n+import java.lang.annotation.RetentionPolicy;\r\n+import java.lang.annotation.Target;\r\n+\r\n+/**\r\n+ * An annotation used for referencing a Dubbo service\r\n+ *\r\n+ * @since 2.7.7\r\n+ */\r\n+@Documented\r\n+@Retention(RetentionPolicy.RUNTIME)\r\n+@Target({ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})\r\n+public @interface DubboReference {\r\n+\r\n+    /**\r\n+     * Interface class, default value is void.class\r\n+     */\r\n+    Class<?> interfaceClass() default void.class;\r\n+\r\n+    /**\r\n+     * Interface class name, default value is empty string\r\n+     */\r\n+    String interfaceName() default \"\";\r\n+\r\n+    /**\r\n+     * Service version, default value is empty string\r\n+     */\r\n+    String version() default \"\";\r\n+\r\n+    /**\r\n+     * Service group, default value is empty string\r\n+     */\r\n+    String group() default \"\";\r\n+\r\n+    /**\r\n+     * Service target URL for direct invocation, if this is specified, then registry center takes no effect.\r\n+     */\r\n+    String url() default \"\";\r\n+\r\n+    /**\r\n+     * Client transport type, default value is \"netty\"\r\n+     */\r\n+    String client() default \"\";\r\n+\r\n+    /**\r\n+     * Whether to enable generic invocation, default value is false\r\n+     */\r\n+    boolean generic() default false;\r\n+\r\n+    /**\r\n+     * When enable, prefer to call local service in the same JVM if it's present, default value is true\r\n+     */\r\n+    boolean injvm() default true;\r\n+\r\n+    /**\r\n+     * Check if service provider is available during boot up, default value is true\r\n+     */\r\n+    boolean check() default true;\r\n+\r\n+    /**\r\n+     * Whether eager initialize the reference bean when all properties are set, default value is false\r\n+     */\r\n+    boolean init() default false;\r\n+\r\n+    /**\r\n+     * Whether to make connection when the client is created, the default value is false\r\n+     */\r\n+    boolean lazy() default false;\r\n+\r\n+    /**\r\n+     * Export an stub service for event dispatch, default value is false.\r\n+     * <p>\r\n+     * see org.apache.dubbo.rpc.Constants#STUB_EVENT_METHODS_KEY\r\n+     */\r\n+    boolean stubevent() default false;\r\n+\r\n+    /**\r\n+     * Whether to reconnect if connection is lost, if not specify, reconnect is enabled by default, and the interval\r\n+     * for retry connecting is 2000 ms\r\n+     * <p>\r\n+     * see org.apache.dubbo.remoting.Constants#DEFAULT_RECONNECT_PERIOD\r\n+     */\r\n+    String reconnect() default \"\";\r\n+\r\n+    /**\r\n+     * Whether to stick to the same node in the cluster, the default value is false\r\n+     * <p>\r\n+     * see Constants#DEFAULT_CLUSTER_STICKY\r\n+     */\r\n+    boolean sticky() default false;\r\n+\r\n+    /**\r\n+     * How the proxy is generated, legal values include: jdk, javassist\r\n+     */\r\n+    String proxy() default \"\";\r\n+\r\n+    /**\r\n+     * Service stub name, use interface name + Local if not set\r\n+     */\r\n+    String stub() default \"\";\r\n+\r\n+    /**\r\n+     * Cluster strategy, legal values include: failover, failfast, failsafe, failback, forking\r\n+     */\r\n+    String cluster() default \"\";\r\n+\r\n+    /**\r\n+     * Maximum connections service provider can accept, default value is 0 - connection is shared\r\n+     */\r\n+    int connections() default 0;\r\n+\r\n+    /**\r\n+     * The callback instance limit peer connection\r\n+     * <p>\r\n+     * see org.apache.dubbo.rpc.Constants#DEFAULT_CALLBACK_INSTANCES\r\n+     */\r\n+    int callbacks() default 0;\r\n+\r\n+    /**\r\n+     * Callback method name when connected, default value is empty string\r\n+     */\r\n+    String onconnect() default \"\";\r\n+\r\n+    /**\r\n+     * Callback method name when disconnected, default value is empty string\r\n+     */\r\n+    String ondisconnect() default \"\";\r\n+\r\n+    /**\r\n+     * Service owner, default value is empty string\r\n+     */\r\n+    String owner() default \"\";\r\n+\r\n+    /**\r\n+     * Service layer, default value is empty string\r\n+     */\r\n+    String layer() default \"\";\r\n+\r\n+    /**\r\n+     * Service invocation retry times\r\n+     * <p>\r\n+     * see Constants#DEFAULT_RETRIES\r\n+     */\r\n+    int retries() default 2;\r\n+\r\n+    /**\r\n+     * Load balance strategy, legal values include: random, roundrobin, leastactive\r\n+     * <p>\r\n+     * see Constants#DEFAULT_LOADBALANCE\r\n+     */\r\n+    String loadbalance() default \"\";\r\n+\r\n+    /**\r\n+     * Whether to enable async invocation, default value is false\r\n+     */\r\n+    boolean async() default false;\r\n+\r\n+    /**\r\n+     * Maximum active requests allowed, default value is 0\r\n+     */\r\n+    int actives() default 0;\r\n+\r\n+    /**\r\n+     * Whether the async request has already been sent, the default value is false\r\n+     */\r\n+    boolean sent() default false;\r\n+\r\n+    /**\r\n+     * Service mock name, use interface name + Mock if not set\r\n+     */\r\n+    String mock() default \"\";\r\n+\r\n+    /**\r\n+     * Whether to use JSR303 validation, legal values are: true, false\r\n+     */\r\n+    String validation() default \"\";\r\n+\r\n+    /**\r\n+     * Timeout value for service invocation, default value is 0\r\n+     */\r\n+    int timeout() default 0;\r\n+\r\n+    /**\r\n+     * Specify cache implementation for service invocation, legal values include: lru, threadlocal, jcache\r\n+     */\r\n+    String cache() default \"\";\r\n+\r\n+    /**\r\n+     * Filters for service invocation\r\n+     * <p>\r\n+     * see Filter\r\n+     */\r\n+    String[] filter() default {};\r\n+\r\n+    /**\r\n+     * Listeners for service exporting and unexporting\r\n+     * <p>\r\n+     * see ExporterListener\r\n+     */\r\n+    String[] listener() default {};\r\n+\r\n+    /**\r\n+     * Customized parameter key-value pair, for example: {key1, value1, key2, value2}\r\n+     */\r\n+    String[] parameters() default {};\r\n+\r\n+    /**\r\n+     * Application associated name\r\n+     */\r\n+    String application() default \"\";\r\n+\r\n+    /**\r\n+     * Module associated name\r\n+     */\r\n+    String module() default \"\";\r\n+\r\n+    /**\r\n+     * Consumer associated name\r\n+     */\r\n+    String consumer() default \"\";\r\n+\r\n+    /**\r\n+     * Monitor associated name\r\n+     */\r\n+    String monitor() default \"\";\r\n+\r\n+    /**\r\n+     * Registry associated name\r\n+     */\r\n+    String[] registry() default {};\r\n+\r\n+    /**\r\n+     * The communication protocol of Dubbo Service\r\n+     *\r\n+     * @return the default value is \"\"\r\n+     * @since 2.6.6\r\n+     */\r\n+    String protocol() default \"\";\r\n+\r\n+    /**\r\n+     * Service tag name\r\n+     */\r\n+    String tag() default \"\";\r\n+\r\n+    /**\r\n+     * Service merger\r\n+     */\r\n+    String merger() default \"\";\r\n+\r\n+    /**\r\n+     * methods support\r\n+     */\r\n+    Method[] methods() default {};\r\n+\r\n+    /**\r\n+     * The id\r\n+     *\r\n+     * @return default value is empty\r\n+     * @since 2.7.3\r\n+     */\r\n+    String id() default \"\";\r\n+\r\n+    /**\r\n+     * @return The service names that the Dubbo interface subscribed\r\n+     * @see RegistryConstants#SUBSCRIBED_SERVICE_NAMES_KEY\r\n+     * @deprecated using {@link DubboReference#providedBy()}\r\n+     * @since 2.7.8\r\n+     */\r\n+    String[] services() default {};\r\n+\r\n+    /**\r\n+     * declares which app or service this interface belongs to\r\n+     * @see RegistryConstants#PROVIDED_BY\r\n+     */\r\n+    String[] providedBy() default {};\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/annotation/DubboService.java", "source2": "org/apache/dubbo/config/annotation/DubboService.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,278 +1,278 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.annotation;\n-\n-\n-import java.lang.annotation.Documented;\n-import java.lang.annotation.ElementType;\n-import java.lang.annotation.Inherited;\n-import java.lang.annotation.Retention;\n-import java.lang.annotation.RetentionPolicy;\n-import java.lang.annotation.Target;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_LOADBALANCE;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_RETRIES;\n-\n-/**\n- * Class-level annotation used for declaring Dubbo service\n- *\n- * @since 2.7.7\n- */\n-@Documented\n-@Retention(RetentionPolicy.RUNTIME)\n-@Target({ElementType.TYPE})\n-@Inherited\n-public @interface DubboService {\n-\n-    /**\n-     * Interface class, default value is void.class\n-     */\n-    Class<?> interfaceClass() default void.class;\n-\n-    /**\n-     * Interface class name, default value is empty string\n-     */\n-    String interfaceName() default \"\";\n-\n-    /**\n-     * Service version, default value is empty string\n-     */\n-    String version() default \"\";\n-\n-    /**\n-     * Service group, default value is empty string\n-     */\n-    String group() default \"\";\n-\n-    /**\n-     * Service path, default value is empty string\n-     */\n-    String path() default \"\";\n-\n-    /**\n-     * Whether to export service, default value is true\n-     */\n-    boolean export() default true;\n-\n-    /**\n-     * Service token, default value is false\n-     */\n-    String token() default \"\";\n-\n-    /**\n-     * Whether the service is deprecated, default value is false\n-     */\n-    boolean deprecated() default false;\n-\n-    /**\n-     * Whether the service is dynamic, default value is true\n-     */\n-    boolean dynamic() default true;\n-\n-    /**\n-     * Access log for the service, default value is \"\"\n-     */\n-    String accesslog() default \"\";\n-\n-    /**\n-     * Maximum concurrent executes for the service, default value is 0 - no limits\n-     */\n-    int executes() default 0;\n-\n-    /**\n-     * Whether to register the service to register center, default value is true\n-     */\n-    boolean register() default true;\n-\n-    /**\n-     * Service weight value, default value is 0\n-     */\n-    int weight() default 0;\n-\n-    /**\n-     * Service doc, default value is \"\"\n-     */\n-    String document() default \"\";\n-\n-    /**\n-     * Delay time for service registration, default value is 0\n-     */\n-    int delay() default 0;\n-\n-    /**\n-     * @see DubboService#stub()\n-     * @deprecated\n-     */\n-    String local() default \"\";\n-\n-    /**\n-     * Service stub name, use interface name + Local if not set\n-     */\n-    String stub() default \"\";\n-\n-    /**\n-     * Cluster strategy, legal values include: failover, failfast, failsafe, failback, forking\n-     */\n-    String cluster() default \"\";\n-\n-    /**\n-     * How the proxy is generated, legal values include: jdk, javassist\n-     */\n-    String proxy() default \"\";\n-\n-    /**\n-     * Maximum connections service provider can accept, default value is 0 - connection is shared\n-     */\n-    int connections() default 0;\n-\n-    /**\n-     * The callback instance limit peer connection\n-     * <p>\n-     * see org.apache.dubbo.rpc.Constants#DEFAULT_CALLBACK_INSTANCES\n-     */\n-    int callbacks() default org.apache.dubbo.common.constants.CommonConstants.DEFAULT_CALLBACK_INSTANCES;\n-\n-    /**\n-     * Callback method name when connected, default value is empty string\n-     */\n-    String onconnect() default \"\";\n-\n-    /**\n-     * Callback method name when disconnected, default value is empty string\n-     */\n-    String ondisconnect() default \"\";\n-\n-    /**\n-     * Service owner, default value is empty string\n-     */\n-    String owner() default \"\";\n-\n-    /**\n-     * Service layer, default value is empty string\n-     */\n-    String layer() default \"\";\n-\n-    /**\n-     * Service invocation retry times\n-     *\n-     * @see org.apache.dubbo.common.constants.CommonConstants#DEFAULT_RETRIES\n-     */\n-    int retries() default DEFAULT_RETRIES;\n-\n-    /**\n-     * Load balance strategy, legal values include: random, roundrobin, leastactive\n-     *\n-     * @see org.apache.dubbo.common.constants.CommonConstants#DEFAULT_LOADBALANCE\n-     */\n-    String loadbalance() default DEFAULT_LOADBALANCE;\n-\n-    /**\n-     * Whether to enable async invocation, default value is false\n-     */\n-    boolean async() default false;\n-\n-    /**\n-     * Maximum active requests allowed, default value is 0\n-     */\n-    int actives() default 0;\n-\n-    /**\n-     * Whether the async request has already been sent, the default value is false\n-     */\n-    boolean sent() default false;\n-\n-    /**\n-     * Service mock name, use interface name + Mock if not set\n-     */\n-    String mock() default \"\";\n-\n-    /**\n-     * Whether to use JSR303 validation, legal values are: true, false\n-     */\n-    String validation() default \"\";\n-\n-    /**\n-     * Timeout value for service invocation, default value is 0\n-     */\n-    int timeout() default 0;\n-\n-    /**\n-     * Specify cache implementation for service invocation, legal values include: lru, threadlocal, jcache\n-     */\n-    String cache() default \"\";\n-\n-    /**\n-     * Filters for service invocation\n-     *\n-     * @see Filter\n-     */\n-    String[] filter() default {};\n-\n-    /**\n-     * Listeners for service exporting and unexporting\n-     *\n-     * @see ExporterListener\n-     */\n-    String[] listener() default {};\n-\n-    /**\n-     * Customized parameter key-value pair, for example: {key1, value1, key2, value2}\n-     */\n-    String[] parameters() default {};\n-\n-    /**\n-     * Application spring bean name\n-     */\n-    String application() default \"\";\n-\n-    /**\n-     * Module spring bean name\n-     */\n-    String module() default \"\";\n-\n-    /**\n-     * Provider spring bean name\n-     */\n-    String provider() default \"\";\n-\n-    /**\n-     * Protocol spring bean names\n-     */\n-    String[] protocol() default {};\n-\n-    /**\n-     * Monitor spring bean name\n-     */\n-    String monitor() default \"\";\n-\n-    /**\n-     * Registry spring bean name\n-     */\n-    String[] registry() default {};\n-\n-    /**\n-     * Service tag name\n-     */\n-    String tag() default \"\";\n-\n-    /**\n-     * methods support\n-     *\n-     * @return\n-     */\n-    Method[] methods() default {};\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.annotation;\r\n+\r\n+\r\n+import java.lang.annotation.Documented;\r\n+import java.lang.annotation.ElementType;\r\n+import java.lang.annotation.Inherited;\r\n+import java.lang.annotation.Retention;\r\n+import java.lang.annotation.RetentionPolicy;\r\n+import java.lang.annotation.Target;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_LOADBALANCE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_RETRIES;\r\n+\r\n+/**\r\n+ * Class-level annotation used for declaring Dubbo service\r\n+ *\r\n+ * @since 2.7.7\r\n+ */\r\n+@Documented\r\n+@Retention(RetentionPolicy.RUNTIME)\r\n+@Target({ElementType.TYPE})\r\n+@Inherited\r\n+public @interface DubboService {\r\n+\r\n+    /**\r\n+     * Interface class, default value is void.class\r\n+     */\r\n+    Class<?> interfaceClass() default void.class;\r\n+\r\n+    /**\r\n+     * Interface class name, default value is empty string\r\n+     */\r\n+    String interfaceName() default \"\";\r\n+\r\n+    /**\r\n+     * Service version, default value is empty string\r\n+     */\r\n+    String version() default \"\";\r\n+\r\n+    /**\r\n+     * Service group, default value is empty string\r\n+     */\r\n+    String group() default \"\";\r\n+\r\n+    /**\r\n+     * Service path, default value is empty string\r\n+     */\r\n+    String path() default \"\";\r\n+\r\n+    /**\r\n+     * Whether to export service, default value is true\r\n+     */\r\n+    boolean export() default true;\r\n+\r\n+    /**\r\n+     * Service token, default value is false\r\n+     */\r\n+    String token() default \"\";\r\n+\r\n+    /**\r\n+     * Whether the service is deprecated, default value is false\r\n+     */\r\n+    boolean deprecated() default false;\r\n+\r\n+    /**\r\n+     * Whether the service is dynamic, default value is true\r\n+     */\r\n+    boolean dynamic() default true;\r\n+\r\n+    /**\r\n+     * Access log for the service, default value is \"\"\r\n+     */\r\n+    String accesslog() default \"\";\r\n+\r\n+    /**\r\n+     * Maximum concurrent executes for the service, default value is 0 - no limits\r\n+     */\r\n+    int executes() default 0;\r\n+\r\n+    /**\r\n+     * Whether to register the service to register center, default value is true\r\n+     */\r\n+    boolean register() default true;\r\n+\r\n+    /**\r\n+     * Service weight value, default value is 0\r\n+     */\r\n+    int weight() default 0;\r\n+\r\n+    /**\r\n+     * Service doc, default value is \"\"\r\n+     */\r\n+    String document() default \"\";\r\n+\r\n+    /**\r\n+     * Delay time for service registration, default value is 0\r\n+     */\r\n+    int delay() default 0;\r\n+\r\n+    /**\r\n+     * @see DubboService#stub()\r\n+     * @deprecated\r\n+     */\r\n+    String local() default \"\";\r\n+\r\n+    /**\r\n+     * Service stub name, use interface name + Local if not set\r\n+     */\r\n+    String stub() default \"\";\r\n+\r\n+    /**\r\n+     * Cluster strategy, legal values include: failover, failfast, failsafe, failback, forking\r\n+     */\r\n+    String cluster() default \"\";\r\n+\r\n+    /**\r\n+     * How the proxy is generated, legal values include: jdk, javassist\r\n+     */\r\n+    String proxy() default \"\";\r\n+\r\n+    /**\r\n+     * Maximum connections service provider can accept, default value is 0 - connection is shared\r\n+     */\r\n+    int connections() default 0;\r\n+\r\n+    /**\r\n+     * The callback instance limit peer connection\r\n+     * <p>\r\n+     * see org.apache.dubbo.rpc.Constants#DEFAULT_CALLBACK_INSTANCES\r\n+     */\r\n+    int callbacks() default org.apache.dubbo.common.constants.CommonConstants.DEFAULT_CALLBACK_INSTANCES;\r\n+\r\n+    /**\r\n+     * Callback method name when connected, default value is empty string\r\n+     */\r\n+    String onconnect() default \"\";\r\n+\r\n+    /**\r\n+     * Callback method name when disconnected, default value is empty string\r\n+     */\r\n+    String ondisconnect() default \"\";\r\n+\r\n+    /**\r\n+     * Service owner, default value is empty string\r\n+     */\r\n+    String owner() default \"\";\r\n+\r\n+    /**\r\n+     * Service layer, default value is empty string\r\n+     */\r\n+    String layer() default \"\";\r\n+\r\n+    /**\r\n+     * Service invocation retry times\r\n+     *\r\n+     * @see org.apache.dubbo.common.constants.CommonConstants#DEFAULT_RETRIES\r\n+     */\r\n+    int retries() default DEFAULT_RETRIES;\r\n+\r\n+    /**\r\n+     * Load balance strategy, legal values include: random, roundrobin, leastactive\r\n+     *\r\n+     * @see org.apache.dubbo.common.constants.CommonConstants#DEFAULT_LOADBALANCE\r\n+     */\r\n+    String loadbalance() default DEFAULT_LOADBALANCE;\r\n+\r\n+    /**\r\n+     * Whether to enable async invocation, default value is false\r\n+     */\r\n+    boolean async() default false;\r\n+\r\n+    /**\r\n+     * Maximum active requests allowed, default value is 0\r\n+     */\r\n+    int actives() default 0;\r\n+\r\n+    /**\r\n+     * Whether the async request has already been sent, the default value is false\r\n+     */\r\n+    boolean sent() default false;\r\n+\r\n+    /**\r\n+     * Service mock name, use interface name + Mock if not set\r\n+     */\r\n+    String mock() default \"\";\r\n+\r\n+    /**\r\n+     * Whether to use JSR303 validation, legal values are: true, false\r\n+     */\r\n+    String validation() default \"\";\r\n+\r\n+    /**\r\n+     * Timeout value for service invocation, default value is 0\r\n+     */\r\n+    int timeout() default 0;\r\n+\r\n+    /**\r\n+     * Specify cache implementation for service invocation, legal values include: lru, threadlocal, jcache\r\n+     */\r\n+    String cache() default \"\";\r\n+\r\n+    /**\r\n+     * Filters for service invocation\r\n+     *\r\n+     * @see Filter\r\n+     */\r\n+    String[] filter() default {};\r\n+\r\n+    /**\r\n+     * Listeners for service exporting and unexporting\r\n+     *\r\n+     * @see ExporterListener\r\n+     */\r\n+    String[] listener() default {};\r\n+\r\n+    /**\r\n+     * Customized parameter key-value pair, for example: {key1, value1, key2, value2}\r\n+     */\r\n+    String[] parameters() default {};\r\n+\r\n+    /**\r\n+     * Application spring bean name\r\n+     */\r\n+    String application() default \"\";\r\n+\r\n+    /**\r\n+     * Module spring bean name\r\n+     */\r\n+    String module() default \"\";\r\n+\r\n+    /**\r\n+     * Provider spring bean name\r\n+     */\r\n+    String provider() default \"\";\r\n+\r\n+    /**\r\n+     * Protocol spring bean names\r\n+     */\r\n+    String[] protocol() default {};\r\n+\r\n+    /**\r\n+     * Monitor spring bean name\r\n+     */\r\n+    String monitor() default \"\";\r\n+\r\n+    /**\r\n+     * Registry spring bean name\r\n+     */\r\n+    String[] registry() default {};\r\n+\r\n+    /**\r\n+     * Service tag name\r\n+     */\r\n+    String tag() default \"\";\r\n+\r\n+    /**\r\n+     * methods support\r\n+     *\r\n+     * @return\r\n+     */\r\n+    Method[] methods() default {};\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/annotation/Method.java", "source2": "org/apache/dubbo/config/annotation/Method.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,71 +1,71 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.annotation;\n-\n-import java.lang.annotation.Documented;\n-import java.lang.annotation.ElementType;\n-import java.lang.annotation.Inherited;\n-import java.lang.annotation.Retention;\n-import java.lang.annotation.RetentionPolicy;\n-import java.lang.annotation.Target;\n-\n-/**\n- * @since 2.6.5\n- *  *\n- *  * 2018/9/29\n- */\n-@Documented\n-@Retention(RetentionPolicy.RUNTIME)\n-@Target({ElementType.ANNOTATION_TYPE})\n-@Inherited\n-public @interface Method {\n-    String name();\n-\n-    int timeout() default -1;\n-\n-    int retries() default -1;\n-\n-    String loadbalance() default \"\";\n-\n-    boolean async() default false;\n-\n-    boolean sent() default true;\n-\n-    int actives() default 0;\n-\n-    int executes() default 0;\n-\n-    boolean deprecated() default false;\n-\n-    boolean sticky() default false;\n-\n-    boolean isReturn() default true;\n-\n-    String oninvoke() default \"\";\n-\n-    String onreturn() default \"\";\n-\n-    String onthrow() default \"\";\n-\n-    String cache() default \"\";\n-\n-    String validation() default \"\";\n-\n-    String merger() default \"\";\n-\n-    Argument[] arguments() default {};\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.annotation;\r\n+\r\n+import java.lang.annotation.Documented;\r\n+import java.lang.annotation.ElementType;\r\n+import java.lang.annotation.Inherited;\r\n+import java.lang.annotation.Retention;\r\n+import java.lang.annotation.RetentionPolicy;\r\n+import java.lang.annotation.Target;\r\n+\r\n+/**\r\n+ * @since 2.6.5\r\n+ *  *\r\n+ *  * 2018/9/29\r\n+ */\r\n+@Documented\r\n+@Retention(RetentionPolicy.RUNTIME)\r\n+@Target({ElementType.ANNOTATION_TYPE})\r\n+@Inherited\r\n+public @interface Method {\r\n+    String name();\r\n+\r\n+    int timeout() default -1;\r\n+\r\n+    int retries() default -1;\r\n+\r\n+    String loadbalance() default \"\";\r\n+\r\n+    boolean async() default false;\r\n+\r\n+    boolean sent() default true;\r\n+\r\n+    int actives() default 0;\r\n+\r\n+    int executes() default 0;\r\n+\r\n+    boolean deprecated() default false;\r\n+\r\n+    boolean sticky() default false;\r\n+\r\n+    boolean isReturn() default true;\r\n+\r\n+    String oninvoke() default \"\";\r\n+\r\n+    String onreturn() default \"\";\r\n+\r\n+    String onthrow() default \"\";\r\n+\r\n+    String cache() default \"\";\r\n+\r\n+    String validation() default \"\";\r\n+\r\n+    String merger() default \"\";\r\n+\r\n+    Argument[] arguments() default {};\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/annotation/Reference.java", "source2": "org/apache/dubbo/config/annotation/Reference.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,282 +1,282 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.annotation;\n-\n-import java.lang.annotation.Documented;\n-import java.lang.annotation.ElementType;\n-import java.lang.annotation.Retention;\n-import java.lang.annotation.RetentionPolicy;\n-import java.lang.annotation.Target;\n-\n-/**\n- * Reference\n- * <p>\n- *\n- * @see DubboReference\n- * @since 2.7.0\n- * @deprecated Recommend {@link DubboReference} as the substitute\n- */\n-@Documented\n-@Retention(RetentionPolicy.RUNTIME)\n-@Target({ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})\n-@Deprecated\n-public @interface Reference {\n-    /**\n-     * Interface class, default value is void.class\n-     */\n-    Class<?> interfaceClass() default void.class;\n-\n-    /**\n-     * Interface class name, default value is empty string\n-     */\n-    String interfaceName() default \"\";\n-\n-    /**\n-     * Service version, default value is empty string\n-     */\n-    String version() default \"\";\n-\n-    /**\n-     * Service group, default value is empty string\n-     */\n-    String group() default \"\";\n-\n-    /**\n-     * Service target URL for direct invocation, if this is specified, then registry center takes no effect.\n-     */\n-    String url() default \"\";\n-\n-    /**\n-     * Client transport type, default value is \"netty\"\n-     */\n-    String client() default \"\";\n-\n-    /**\n-     * Whether to enable generic invocation, default value is false\n-     */\n-    boolean generic() default false;\n-\n-    /**\n-     * When enable, prefer to call local service in the same JVM if it's present, default value is true\n-     */\n-    boolean injvm() default true;\n-\n-    /**\n-     * Check if service provider is available during boot up, default value is true\n-     */\n-    boolean check() default true;\n-\n-    /**\n-     * Whether eager initialize the reference bean when all properties are set, default value is false\n-     */\n-    boolean init() default false;\n-\n-    /**\n-     * Whether to make connection when the client is created, the default value is false\n-     */\n-    boolean lazy() default false;\n-\n-    /**\n-     * Export an stub service for event dispatch, default value is false.\n-     * <p>\n-     * see org.apache.dubbo.rpc.Constants#STUB_EVENT_METHODS_KEY\n-     */\n-    boolean stubevent() default false;\n-\n-    /**\n-     * Whether to reconnect if connection is lost, if not specify, reconnect is enabled by default, and the interval\n-     * for retry connecting is 2000 ms\n-     * <p>\n-     * see org.apache.dubbo.remoting.Constants#DEFAULT_RECONNECT_PERIOD\n-     */\n-    String reconnect() default \"\";\n-\n-    /**\n-     * Whether to stick to the same node in the cluster, the default value is false\n-     * <p>\n-     * see Constants#DEFAULT_CLUSTER_STICKY\n-     */\n-    boolean sticky() default false;\n-\n-    /**\n-     * How the proxy is generated, legal values include: jdk, javassist\n-     */\n-    String proxy() default \"\";\n-\n-    /**\n-     * Service stub name, use interface name + Local if not set\n-     */\n-    String stub() default \"\";\n-\n-    /**\n-     * Cluster strategy, legal values include: failover, failfast, failsafe, failback, forking\n-     */\n-    String cluster() default \"\";\n-\n-    /**\n-     * Maximum connections service provider can accept, default value is 0 - connection is shared\n-     */\n-    int connections() default 0;\n-\n-    /**\n-     * The callback instance limit peer connection\n-     * <p>\n-     * see org.apache.dubbo.rpc.Constants#DEFAULT_CALLBACK_INSTANCES\n-     */\n-    int callbacks() default 0;\n-\n-    /**\n-     * Callback method name when connected, default value is empty string\n-     */\n-    String onconnect() default \"\";\n-\n-    /**\n-     * Callback method name when disconnected, default value is empty string\n-     */\n-    String ondisconnect() default \"\";\n-\n-    /**\n-     * Service owner, default value is empty string\n-     */\n-    String owner() default \"\";\n-\n-    /**\n-     * Service layer, default value is empty string\n-     */\n-    String layer() default \"\";\n-\n-    /**\n-     * Service invocation retry times\n-     * <p>\n-     * see Constants#DEFAULT_RETRIES\n-     */\n-    int retries() default 2;\n-\n-    /**\n-     * Load balance strategy, legal values include: random, roundrobin, leastactive\n-     * <p>\n-     * see Constants#DEFAULT_LOADBALANCE\n-     */\n-    String loadbalance() default \"\";\n-\n-    /**\n-     * Whether to enable async invocation, default value is false\n-     */\n-    boolean async() default false;\n-\n-    /**\n-     * Maximum active requests allowed, default value is 0\n-     */\n-    int actives() default 0;\n-\n-    /**\n-     * Whether the async request has already been sent, the default value is false\n-     */\n-    boolean sent() default false;\n-\n-    /**\n-     * Service mock name, use interface name + Mock if not set\n-     */\n-    String mock() default \"\";\n-\n-    /**\n-     * Whether to use JSR303 validation, legal values are: true, false\n-     */\n-    String validation() default \"\";\n-\n-    /**\n-     * Timeout value for service invocation, default value is 0\n-     */\n-    int timeout() default 0;\n-\n-    /**\n-     * Specify cache implementation for service invocation, legal values include: lru, threadlocal, jcache\n-     */\n-    String cache() default \"\";\n-\n-    /**\n-     * Filters for service invocation\n-     * <p>\n-     * see Filter\n-     */\n-    String[] filter() default {};\n-\n-    /**\n-     * Listeners for service exporting and unexporting\n-     * <p>\n-     * see ExporterListener\n-     */\n-    String[] listener() default {};\n-\n-    /**\n-     * Customized parameter key-value pair, for example: {key1, value1, key2, value2}\n-     */\n-    String[] parameters() default {};\n-\n-    /**\n-     * Application associated name\n-     */\n-    String application() default \"\";\n-\n-    /**\n-     * Module associated name\n-     */\n-    String module() default \"\";\n-\n-    /**\n-     * Consumer associated name\n-     */\n-    String consumer() default \"\";\n-\n-    /**\n-     * Monitor associated name\n-     */\n-    String monitor() default \"\";\n-\n-    /**\n-     * Registry associated name\n-     */\n-    String[] registry() default {};\n-\n-    /**\n-     * The communication protocol of Dubbo Service\n-     *\n-     * @return the default value is \"\"\n-     * @since 2.6.6\n-     */\n-    String protocol() default \"\";\n-\n-    /**\n-     * Service tag name\n-     */\n-    String tag() default \"\";\n-\n-    /**\n-     * methods support\n-     *\n-     * @return\n-     */\n-    Method[] methods() default {};\n-\n-    /**\n-     * The id\n-     *\n-     * @return default value is empty\n-     * @since 2.7.3\n-     */\n-    String id() default \"\";\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.annotation;\r\n+\r\n+import java.lang.annotation.Documented;\r\n+import java.lang.annotation.ElementType;\r\n+import java.lang.annotation.Retention;\r\n+import java.lang.annotation.RetentionPolicy;\r\n+import java.lang.annotation.Target;\r\n+\r\n+/**\r\n+ * Reference\r\n+ * <p>\r\n+ *\r\n+ * @see DubboReference\r\n+ * @since 2.7.0\r\n+ * @deprecated Recommend {@link DubboReference} as the substitute\r\n+ */\r\n+@Documented\r\n+@Retention(RetentionPolicy.RUNTIME)\r\n+@Target({ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})\r\n+@Deprecated\r\n+public @interface Reference {\r\n+    /**\r\n+     * Interface class, default value is void.class\r\n+     */\r\n+    Class<?> interfaceClass() default void.class;\r\n+\r\n+    /**\r\n+     * Interface class name, default value is empty string\r\n+     */\r\n+    String interfaceName() default \"\";\r\n+\r\n+    /**\r\n+     * Service version, default value is empty string\r\n+     */\r\n+    String version() default \"\";\r\n+\r\n+    /**\r\n+     * Service group, default value is empty string\r\n+     */\r\n+    String group() default \"\";\r\n+\r\n+    /**\r\n+     * Service target URL for direct invocation, if this is specified, then registry center takes no effect.\r\n+     */\r\n+    String url() default \"\";\r\n+\r\n+    /**\r\n+     * Client transport type, default value is \"netty\"\r\n+     */\r\n+    String client() default \"\";\r\n+\r\n+    /**\r\n+     * Whether to enable generic invocation, default value is false\r\n+     */\r\n+    boolean generic() default false;\r\n+\r\n+    /**\r\n+     * When enable, prefer to call local service in the same JVM if it's present, default value is true\r\n+     */\r\n+    boolean injvm() default true;\r\n+\r\n+    /**\r\n+     * Check if service provider is available during boot up, default value is true\r\n+     */\r\n+    boolean check() default true;\r\n+\r\n+    /**\r\n+     * Whether eager initialize the reference bean when all properties are set, default value is false\r\n+     */\r\n+    boolean init() default false;\r\n+\r\n+    /**\r\n+     * Whether to make connection when the client is created, the default value is false\r\n+     */\r\n+    boolean lazy() default false;\r\n+\r\n+    /**\r\n+     * Export an stub service for event dispatch, default value is false.\r\n+     * <p>\r\n+     * see org.apache.dubbo.rpc.Constants#STUB_EVENT_METHODS_KEY\r\n+     */\r\n+    boolean stubevent() default false;\r\n+\r\n+    /**\r\n+     * Whether to reconnect if connection is lost, if not specify, reconnect is enabled by default, and the interval\r\n+     * for retry connecting is 2000 ms\r\n+     * <p>\r\n+     * see org.apache.dubbo.remoting.Constants#DEFAULT_RECONNECT_PERIOD\r\n+     */\r\n+    String reconnect() default \"\";\r\n+\r\n+    /**\r\n+     * Whether to stick to the same node in the cluster, the default value is false\r\n+     * <p>\r\n+     * see Constants#DEFAULT_CLUSTER_STICKY\r\n+     */\r\n+    boolean sticky() default false;\r\n+\r\n+    /**\r\n+     * How the proxy is generated, legal values include: jdk, javassist\r\n+     */\r\n+    String proxy() default \"\";\r\n+\r\n+    /**\r\n+     * Service stub name, use interface name + Local if not set\r\n+     */\r\n+    String stub() default \"\";\r\n+\r\n+    /**\r\n+     * Cluster strategy, legal values include: failover, failfast, failsafe, failback, forking\r\n+     */\r\n+    String cluster() default \"\";\r\n+\r\n+    /**\r\n+     * Maximum connections service provider can accept, default value is 0 - connection is shared\r\n+     */\r\n+    int connections() default 0;\r\n+\r\n+    /**\r\n+     * The callback instance limit peer connection\r\n+     * <p>\r\n+     * see org.apache.dubbo.rpc.Constants#DEFAULT_CALLBACK_INSTANCES\r\n+     */\r\n+    int callbacks() default 0;\r\n+\r\n+    /**\r\n+     * Callback method name when connected, default value is empty string\r\n+     */\r\n+    String onconnect() default \"\";\r\n+\r\n+    /**\r\n+     * Callback method name when disconnected, default value is empty string\r\n+     */\r\n+    String ondisconnect() default \"\";\r\n+\r\n+    /**\r\n+     * Service owner, default value is empty string\r\n+     */\r\n+    String owner() default \"\";\r\n+\r\n+    /**\r\n+     * Service layer, default value is empty string\r\n+     */\r\n+    String layer() default \"\";\r\n+\r\n+    /**\r\n+     * Service invocation retry times\r\n+     * <p>\r\n+     * see Constants#DEFAULT_RETRIES\r\n+     */\r\n+    int retries() default 2;\r\n+\r\n+    /**\r\n+     * Load balance strategy, legal values include: random, roundrobin, leastactive\r\n+     * <p>\r\n+     * see Constants#DEFAULT_LOADBALANCE\r\n+     */\r\n+    String loadbalance() default \"\";\r\n+\r\n+    /**\r\n+     * Whether to enable async invocation, default value is false\r\n+     */\r\n+    boolean async() default false;\r\n+\r\n+    /**\r\n+     * Maximum active requests allowed, default value is 0\r\n+     */\r\n+    int actives() default 0;\r\n+\r\n+    /**\r\n+     * Whether the async request has already been sent, the default value is false\r\n+     */\r\n+    boolean sent() default false;\r\n+\r\n+    /**\r\n+     * Service mock name, use interface name + Mock if not set\r\n+     */\r\n+    String mock() default \"\";\r\n+\r\n+    /**\r\n+     * Whether to use JSR303 validation, legal values are: true, false\r\n+     */\r\n+    String validation() default \"\";\r\n+\r\n+    /**\r\n+     * Timeout value for service invocation, default value is 0\r\n+     */\r\n+    int timeout() default 0;\r\n+\r\n+    /**\r\n+     * Specify cache implementation for service invocation, legal values include: lru, threadlocal, jcache\r\n+     */\r\n+    String cache() default \"\";\r\n+\r\n+    /**\r\n+     * Filters for service invocation\r\n+     * <p>\r\n+     * see Filter\r\n+     */\r\n+    String[] filter() default {};\r\n+\r\n+    /**\r\n+     * Listeners for service exporting and unexporting\r\n+     * <p>\r\n+     * see ExporterListener\r\n+     */\r\n+    String[] listener() default {};\r\n+\r\n+    /**\r\n+     * Customized parameter key-value pair, for example: {key1, value1, key2, value2}\r\n+     */\r\n+    String[] parameters() default {};\r\n+\r\n+    /**\r\n+     * Application associated name\r\n+     */\r\n+    String application() default \"\";\r\n+\r\n+    /**\r\n+     * Module associated name\r\n+     */\r\n+    String module() default \"\";\r\n+\r\n+    /**\r\n+     * Consumer associated name\r\n+     */\r\n+    String consumer() default \"\";\r\n+\r\n+    /**\r\n+     * Monitor associated name\r\n+     */\r\n+    String monitor() default \"\";\r\n+\r\n+    /**\r\n+     * Registry associated name\r\n+     */\r\n+    String[] registry() default {};\r\n+\r\n+    /**\r\n+     * The communication protocol of Dubbo Service\r\n+     *\r\n+     * @return the default value is \"\"\r\n+     * @since 2.6.6\r\n+     */\r\n+    String protocol() default \"\";\r\n+\r\n+    /**\r\n+     * Service tag name\r\n+     */\r\n+    String tag() default \"\";\r\n+\r\n+    /**\r\n+     * methods support\r\n+     *\r\n+     * @return\r\n+     */\r\n+    Method[] methods() default {};\r\n+\r\n+    /**\r\n+     * The id\r\n+     *\r\n+     * @return default value is empty\r\n+     * @since 2.7.3\r\n+     */\r\n+    String id() default \"\";\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/annotation/Service.java", "source2": "org/apache/dubbo/config/annotation/Service.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,281 +1,281 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.annotation;\n-\n-\n-import java.lang.annotation.Documented;\n-import java.lang.annotation.ElementType;\n-import java.lang.annotation.Inherited;\n-import java.lang.annotation.Retention;\n-import java.lang.annotation.RetentionPolicy;\n-import java.lang.annotation.Target;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_LOADBALANCE;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_RETRIES;\n-\n-/**\n- * Service annotation\n- *\n- * @see DubboService\n- * @since 2.7.0\n- * @deprecated Recommend {@link DubboService} as the substitute\n- */\n-@Documented\n-@Retention(RetentionPolicy.RUNTIME)\n-@Target({ElementType.TYPE})\n-@Inherited\n-@Deprecated\n-public @interface Service {\n-\n-    /**\n-     * Interface class, default value is void.class\n-     */\n-    Class<?> interfaceClass() default void.class;\n-\n-    /**\n-     * Interface class name, default value is empty string\n-     */\n-    String interfaceName() default \"\";\n-\n-    /**\n-     * Service version, default value is empty string\n-     */\n-    String version() default \"\";\n-\n-    /**\n-     * Service group, default value is empty string\n-     */\n-    String group() default \"\";\n-\n-    /**\n-     * Service path, default value is empty string\n-     */\n-    String path() default \"\";\n-\n-    /**\n-     * Whether to export service, default value is true\n-     */\n-    boolean export() default true;\n-\n-    /**\n-     * Service token, default value is false\n-     */\n-    String token() default \"\";\n-\n-    /**\n-     * Whether the service is deprecated, default value is false\n-     */\n-    boolean deprecated() default false;\n-\n-    /**\n-     * Whether the service is dynamic, default value is true\n-     */\n-    boolean dynamic() default true;\n-\n-    /**\n-     * Access log for the service, default value is \"\"\n-     */\n-    String accesslog() default \"\";\n-\n-    /**\n-     * Maximum concurrent executes for the service, default value is 0 - no limits\n-     */\n-    int executes() default 0;\n-\n-    /**\n-     * Whether to register the service to register center, default value is true\n-     */\n-    boolean register() default true;\n-\n-    /**\n-     * Service weight value, default value is 0\n-     */\n-    int weight() default 0;\n-\n-    /**\n-     * Service doc, default value is \"\"\n-     */\n-    String document() default \"\";\n-\n-    /**\n-     * Delay time for service registration, default value is 0\n-     */\n-    int delay() default 0;\n-\n-    /**\n-     * @see Service#stub()\n-     * @deprecated\n-     */\n-    String local() default \"\";\n-\n-    /**\n-     * Service stub name, use interface name + Local if not set\n-     */\n-    String stub() default \"\";\n-\n-    /**\n-     * Cluster strategy, legal values include: failover, failfast, failsafe, failback, forking\n-     */\n-    String cluster() default \"\";\n-\n-    /**\n-     * How the proxy is generated, legal values include: jdk, javassist\n-     */\n-    String proxy() default \"\";\n-\n-    /**\n-     * Maximum connections service provider can accept, default value is 0 - connection is shared\n-     */\n-    int connections() default 0;\n-\n-    /**\n-     * The callback instance limit peer connection\n-     * <p>\n-     * see org.apache.dubbo.rpc.Constants#DEFAULT_CALLBACK_INSTANCES\n-     */\n-    int callbacks() default org.apache.dubbo.common.constants.CommonConstants.DEFAULT_CALLBACK_INSTANCES;\n-\n-    /**\n-     * Callback method name when connected, default value is empty string\n-     */\n-    String onconnect() default \"\";\n-\n-    /**\n-     * Callback method name when disconnected, default value is empty string\n-     */\n-    String ondisconnect() default \"\";\n-\n-    /**\n-     * Service owner, default value is empty string\n-     */\n-    String owner() default \"\";\n-\n-    /**\n-     * Service layer, default value is empty string\n-     */\n-    String layer() default \"\";\n-\n-    /**\n-     * Service invocation retry times\n-     *\n-     * @see org.apache.dubbo.common.constants.CommonConstants#DEFAULT_RETRIES\n-     */\n-    int retries() default DEFAULT_RETRIES;\n-\n-    /**\n-     * Load balance strategy, legal values include: random, roundrobin, leastactive\n-     *\n-     * @see org.apache.dubbo.common.constants.CommonConstants#DEFAULT_LOADBALANCE\n-     */\n-    String loadbalance() default DEFAULT_LOADBALANCE;\n-\n-    /**\n-     * Whether to enable async invocation, default value is false\n-     */\n-    boolean async() default false;\n-\n-    /**\n-     * Maximum active requests allowed, default value is 0\n-     */\n-    int actives() default 0;\n-\n-    /**\n-     * Whether the async request has already been sent, the default value is false\n-     */\n-    boolean sent() default false;\n-\n-    /**\n-     * Service mock name, use interface name + Mock if not set\n-     */\n-    String mock() default \"\";\n-\n-    /**\n-     * Whether to use JSR303 validation, legal values are: true, false\n-     */\n-    String validation() default \"\";\n-\n-    /**\n-     * Timeout value for service invocation, default value is 0\n-     */\n-    int timeout() default 0;\n-\n-    /**\n-     * Specify cache implementation for service invocation, legal values include: lru, threadlocal, jcache\n-     */\n-    String cache() default \"\";\n-\n-    /**\n-     * Filters for service invocation\n-     *\n-     * @see Filter\n-     */\n-    String[] filter() default {};\n-\n-    /**\n-     * Listeners for service exporting and unexporting\n-     *\n-     * @see ExporterListener\n-     */\n-    String[] listener() default {};\n-\n-    /**\n-     * Customized parameter key-value pair, for example: {key1, value1, key2, value2}\n-     */\n-    String[] parameters() default {};\n-\n-    /**\n-     * Application spring bean name\n-     */\n-    String application() default \"\";\n-\n-    /**\n-     * Module spring bean name\n-     */\n-    String module() default \"\";\n-\n-    /**\n-     * Provider spring bean name\n-     */\n-    String provider() default \"\";\n-\n-    /**\n-     * Protocol spring bean names\n-     */\n-    String[] protocol() default {};\n-\n-    /**\n-     * Monitor spring bean name\n-     */\n-    String monitor() default \"\";\n-\n-    /**\n-     * Registry spring bean name\n-     */\n-    String[] registry() default {};\n-\n-    /**\n-     * Service tag name\n-     */\n-    String tag() default \"\";\n-\n-    /**\n-     * methods support\n-     *\n-     * @return\n-     */\n-    Method[] methods() default {};\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.annotation;\r\n+\r\n+\r\n+import java.lang.annotation.Documented;\r\n+import java.lang.annotation.ElementType;\r\n+import java.lang.annotation.Inherited;\r\n+import java.lang.annotation.Retention;\r\n+import java.lang.annotation.RetentionPolicy;\r\n+import java.lang.annotation.Target;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_LOADBALANCE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_RETRIES;\r\n+\r\n+/**\r\n+ * Service annotation\r\n+ *\r\n+ * @see DubboService\r\n+ * @since 2.7.0\r\n+ * @deprecated Recommend {@link DubboService} as the substitute\r\n+ */\r\n+@Documented\r\n+@Retention(RetentionPolicy.RUNTIME)\r\n+@Target({ElementType.TYPE})\r\n+@Inherited\r\n+@Deprecated\r\n+public @interface Service {\r\n+\r\n+    /**\r\n+     * Interface class, default value is void.class\r\n+     */\r\n+    Class<?> interfaceClass() default void.class;\r\n+\r\n+    /**\r\n+     * Interface class name, default value is empty string\r\n+     */\r\n+    String interfaceName() default \"\";\r\n+\r\n+    /**\r\n+     * Service version, default value is empty string\r\n+     */\r\n+    String version() default \"\";\r\n+\r\n+    /**\r\n+     * Service group, default value is empty string\r\n+     */\r\n+    String group() default \"\";\r\n+\r\n+    /**\r\n+     * Service path, default value is empty string\r\n+     */\r\n+    String path() default \"\";\r\n+\r\n+    /**\r\n+     * Whether to export service, default value is true\r\n+     */\r\n+    boolean export() default true;\r\n+\r\n+    /**\r\n+     * Service token, default value is false\r\n+     */\r\n+    String token() default \"\";\r\n+\r\n+    /**\r\n+     * Whether the service is deprecated, default value is false\r\n+     */\r\n+    boolean deprecated() default false;\r\n+\r\n+    /**\r\n+     * Whether the service is dynamic, default value is true\r\n+     */\r\n+    boolean dynamic() default true;\r\n+\r\n+    /**\r\n+     * Access log for the service, default value is \"\"\r\n+     */\r\n+    String accesslog() default \"\";\r\n+\r\n+    /**\r\n+     * Maximum concurrent executes for the service, default value is 0 - no limits\r\n+     */\r\n+    int executes() default 0;\r\n+\r\n+    /**\r\n+     * Whether to register the service to register center, default value is true\r\n+     */\r\n+    boolean register() default true;\r\n+\r\n+    /**\r\n+     * Service weight value, default value is 0\r\n+     */\r\n+    int weight() default 0;\r\n+\r\n+    /**\r\n+     * Service doc, default value is \"\"\r\n+     */\r\n+    String document() default \"\";\r\n+\r\n+    /**\r\n+     * Delay time for service registration, default value is 0\r\n+     */\r\n+    int delay() default 0;\r\n+\r\n+    /**\r\n+     * @see Service#stub()\r\n+     * @deprecated\r\n+     */\r\n+    String local() default \"\";\r\n+\r\n+    /**\r\n+     * Service stub name, use interface name + Local if not set\r\n+     */\r\n+    String stub() default \"\";\r\n+\r\n+    /**\r\n+     * Cluster strategy, legal values include: failover, failfast, failsafe, failback, forking\r\n+     */\r\n+    String cluster() default \"\";\r\n+\r\n+    /**\r\n+     * How the proxy is generated, legal values include: jdk, javassist\r\n+     */\r\n+    String proxy() default \"\";\r\n+\r\n+    /**\r\n+     * Maximum connections service provider can accept, default value is 0 - connection is shared\r\n+     */\r\n+    int connections() default 0;\r\n+\r\n+    /**\r\n+     * The callback instance limit peer connection\r\n+     * <p>\r\n+     * see org.apache.dubbo.rpc.Constants#DEFAULT_CALLBACK_INSTANCES\r\n+     */\r\n+    int callbacks() default org.apache.dubbo.common.constants.CommonConstants.DEFAULT_CALLBACK_INSTANCES;\r\n+\r\n+    /**\r\n+     * Callback method name when connected, default value is empty string\r\n+     */\r\n+    String onconnect() default \"\";\r\n+\r\n+    /**\r\n+     * Callback method name when disconnected, default value is empty string\r\n+     */\r\n+    String ondisconnect() default \"\";\r\n+\r\n+    /**\r\n+     * Service owner, default value is empty string\r\n+     */\r\n+    String owner() default \"\";\r\n+\r\n+    /**\r\n+     * Service layer, default value is empty string\r\n+     */\r\n+    String layer() default \"\";\r\n+\r\n+    /**\r\n+     * Service invocation retry times\r\n+     *\r\n+     * @see org.apache.dubbo.common.constants.CommonConstants#DEFAULT_RETRIES\r\n+     */\r\n+    int retries() default DEFAULT_RETRIES;\r\n+\r\n+    /**\r\n+     * Load balance strategy, legal values include: random, roundrobin, leastactive\r\n+     *\r\n+     * @see org.apache.dubbo.common.constants.CommonConstants#DEFAULT_LOADBALANCE\r\n+     */\r\n+    String loadbalance() default DEFAULT_LOADBALANCE;\r\n+\r\n+    /**\r\n+     * Whether to enable async invocation, default value is false\r\n+     */\r\n+    boolean async() default false;\r\n+\r\n+    /**\r\n+     * Maximum active requests allowed, default value is 0\r\n+     */\r\n+    int actives() default 0;\r\n+\r\n+    /**\r\n+     * Whether the async request has already been sent, the default value is false\r\n+     */\r\n+    boolean sent() default false;\r\n+\r\n+    /**\r\n+     * Service mock name, use interface name + Mock if not set\r\n+     */\r\n+    String mock() default \"\";\r\n+\r\n+    /**\r\n+     * Whether to use JSR303 validation, legal values are: true, false\r\n+     */\r\n+    String validation() default \"\";\r\n+\r\n+    /**\r\n+     * Timeout value for service invocation, default value is 0\r\n+     */\r\n+    int timeout() default 0;\r\n+\r\n+    /**\r\n+     * Specify cache implementation for service invocation, legal values include: lru, threadlocal, jcache\r\n+     */\r\n+    String cache() default \"\";\r\n+\r\n+    /**\r\n+     * Filters for service invocation\r\n+     *\r\n+     * @see Filter\r\n+     */\r\n+    String[] filter() default {};\r\n+\r\n+    /**\r\n+     * Listeners for service exporting and unexporting\r\n+     *\r\n+     * @see ExporterListener\r\n+     */\r\n+    String[] listener() default {};\r\n+\r\n+    /**\r\n+     * Customized parameter key-value pair, for example: {key1, value1, key2, value2}\r\n+     */\r\n+    String[] parameters() default {};\r\n+\r\n+    /**\r\n+     * Application spring bean name\r\n+     */\r\n+    String application() default \"\";\r\n+\r\n+    /**\r\n+     * Module spring bean name\r\n+     */\r\n+    String module() default \"\";\r\n+\r\n+    /**\r\n+     * Provider spring bean name\r\n+     */\r\n+    String provider() default \"\";\r\n+\r\n+    /**\r\n+     * Protocol spring bean names\r\n+     */\r\n+    String[] protocol() default {};\r\n+\r\n+    /**\r\n+     * Monitor spring bean name\r\n+     */\r\n+    String monitor() default \"\";\r\n+\r\n+    /**\r\n+     * Registry spring bean name\r\n+     */\r\n+    String[] registry() default {};\r\n+\r\n+    /**\r\n+     * Service tag name\r\n+     */\r\n+    String tag() default \"\";\r\n+\r\n+    /**\r\n+     * methods support\r\n+     *\r\n+     * @return\r\n+     */\r\n+    Method[] methods() default {};\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/context/ConfigConfigurationAdapter.java", "source2": "org/apache/dubbo/config/context/ConfigConfigurationAdapter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,48 +1,48 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.context;\n-\n-import org.apache.dubbo.common.config.Configuration;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.AbstractConfig;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-/**\n- * This class receives an {@link AbstractConfig} and exposes its attributes through {@link Configuration}\n- */\n-public class ConfigConfigurationAdapter implements Configuration {\n-\n-    private Map<String, String> metaData;\n-\n-    public ConfigConfigurationAdapter(AbstractConfig config) {\n-        Map<String, String> configMetadata = config.getMetaData();\n-        metaData = new HashMap<>(configMetadata.size(), 1.0f);\n-        for (Map.Entry<String, String> entry : configMetadata.entrySet()) {\n-            String prefix = config.getPrefix().endsWith(\".\") ? config.getPrefix() : config.getPrefix() + \".\";\n-            String id = StringUtils.isEmpty(config.getId()) ? \"\" : config.getId() + \".\";\n-            metaData.put(prefix + id + entry.getKey(), entry.getValue());\n-        }\n-    }\n-\n-    @Override\n-    public Object getInternalProperty(String key) {\n-        return metaData.get(key);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.context;\r\n+\r\n+import org.apache.dubbo.common.config.Configuration;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.AbstractConfig;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * This class receives an {@link AbstractConfig} and exposes its attributes through {@link Configuration}\r\n+ */\r\n+public class ConfigConfigurationAdapter implements Configuration {\r\n+\r\n+    private Map<String, String> metaData;\r\n+\r\n+    public ConfigConfigurationAdapter(AbstractConfig config) {\r\n+        Map<String, String> configMetadata = config.getMetaData();\r\n+        metaData = new HashMap<>(configMetadata.size(), 1.0f);\r\n+        for (Map.Entry<String, String> entry : configMetadata.entrySet()) {\r\n+            String prefix = config.getPrefix().endsWith(\".\") ? config.getPrefix() : config.getPrefix() + \".\";\r\n+            String id = StringUtils.isEmpty(config.getId()) ? \"\" : config.getId() + \".\";\r\n+            metaData.put(prefix + id + entry.getKey(), entry.getValue());\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getInternalProperty(String key) {\r\n+        return metaData.get(key);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/context/ConfigManager.java", "source2": "org/apache/dubbo/config/context/ConfigManager.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,531 +1,531 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.context;\n-\n-import org.apache.dubbo.common.context.FrameworkExt;\n-import org.apache.dubbo.common.context.LifecycleAdapter;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.config.AbstractConfig;\n-import org.apache.dubbo.config.ApplicationConfig;\n-import org.apache.dubbo.config.ConfigCenterConfig;\n-import org.apache.dubbo.config.ConsumerConfig;\n-import org.apache.dubbo.config.MetadataReportConfig;\n-import org.apache.dubbo.config.MetricsConfig;\n-import org.apache.dubbo.config.ModuleConfig;\n-import org.apache.dubbo.config.MonitorConfig;\n-import org.apache.dubbo.config.ProtocolConfig;\n-import org.apache.dubbo.config.ProviderConfig;\n-import org.apache.dubbo.config.ReferenceConfigBase;\n-import org.apache.dubbo.config.RegistryConfig;\n-import org.apache.dubbo.config.ServiceConfigBase;\n-import org.apache.dubbo.config.SslConfig;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-\n-import java.util.Collection;\n-import java.util.HashMap;\n-import java.util.HashSet;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Optional;\n-import java.util.Set;\n-import java.util.concurrent.Callable;\n-import java.util.concurrent.locks.Lock;\n-import java.util.concurrent.locks.ReadWriteLock;\n-import java.util.concurrent.locks.ReentrantReadWriteLock;\n-import java.util.stream.Collectors;\n-\n-import static java.lang.Boolean.TRUE;\n-import static java.util.Collections.emptyMap;\n-import static java.util.Collections.unmodifiableSet;\n-import static java.util.Optional.ofNullable;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_KEY;\n-import static org.apache.dubbo.common.utils.ReflectUtils.getProperty;\n-import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\n-import static org.apache.dubbo.config.AbstractConfig.getTagName;\n-import static org.apache.dubbo.config.Constants.PROTOCOLS_SUFFIX;\n-import static org.apache.dubbo.config.Constants.REGISTRIES_SUFFIX;\n-\n-public class ConfigManager extends LifecycleAdapter implements FrameworkExt {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(ConfigManager.class);\n-\n-    public static final String NAME = \"config\";\n-\n-    private final ReadWriteLock lock = new ReentrantReadWriteLock();\n-\n-    final Map<String, Map<String, AbstractConfig>> configsCache = newMap();\n-\n-    public ConfigManager() {\n-    }\n-\n-    // ApplicationConfig correlative methods\n-\n-    public void setApplication(ApplicationConfig application) {\n-        addConfig(application, true);\n-    }\n-\n-    public Optional<ApplicationConfig> getApplication() {\n-        return ofNullable(getConfig(getTagName(ApplicationConfig.class)));\n-    }\n-\n-    public ApplicationConfig getApplicationOrElseThrow() {\n-        return getApplication().orElseThrow(() -> new IllegalStateException(\"There's no ApplicationConfig specified.\"));\n-    }\n-\n-    // MonitorConfig correlative methods\n-\n-    public void setMonitor(MonitorConfig monitor) {\n-        addConfig(monitor, true);\n-    }\n-\n-    public Optional<MonitorConfig> getMonitor() {\n-        return ofNullable(getConfig(getTagName(MonitorConfig.class)));\n-    }\n-\n-    // ModuleConfig correlative methods\n-\n-    public void setModule(ModuleConfig module) {\n-        addConfig(module, true);\n-    }\n-\n-    public Optional<ModuleConfig> getModule() {\n-        return ofNullable(getConfig(getTagName(ModuleConfig.class)));\n-    }\n-\n-    public void setMetrics(MetricsConfig metrics) {\n-        addConfig(metrics, true);\n-    }\n-\n-    public Optional<MetricsConfig> getMetrics() {\n-        return ofNullable(getConfig(getTagName(MetricsConfig.class)));\n-    }\n-\n-    public void setSsl(SslConfig sslConfig) {\n-        addConfig(sslConfig, true);\n-    }\n-\n-    public Optional<SslConfig> getSsl() {\n-        return ofNullable(getConfig(getTagName(SslConfig.class)));\n-    }\n-\n-    // ConfigCenterConfig correlative methods\n-\n-    public void addConfigCenter(ConfigCenterConfig configCenter) {\n-        addConfig(configCenter);\n-    }\n-\n-    public void addConfigCenters(Iterable<ConfigCenterConfig> configCenters) {\n-        configCenters.forEach(this::addConfigCenter);\n-    }\n-\n-    public Optional<Collection<ConfigCenterConfig>> getDefaultConfigCenter() {\n-        Collection<ConfigCenterConfig> defaults = getDefaultConfigs(getConfigsMap(getTagName(ConfigCenterConfig.class)));\n-        if (CollectionUtils.isEmpty(defaults)) {\n-            defaults = getConfigCenters();\n-        }\n-        return Optional.ofNullable(defaults);\n-    }\n-\n-    public ConfigCenterConfig getConfigCenter(String id) {\n-        return getConfig(getTagName(ConfigCenterConfig.class), id);\n-    }\n-\n-    public Collection<ConfigCenterConfig> getConfigCenters() {\n-        return getConfigs(getTagName(ConfigCenterConfig.class));\n-    }\n-\n-    // MetadataReportConfig correlative methods\n-\n-    public void addMetadataReport(MetadataReportConfig metadataReportConfig) {\n-        addConfig(metadataReportConfig);\n-    }\n-\n-    public void addMetadataReports(Iterable<MetadataReportConfig> metadataReportConfigs) {\n-        metadataReportConfigs.forEach(this::addMetadataReport);\n-    }\n-\n-    public Collection<MetadataReportConfig> getMetadataConfigs() {\n-        return getConfigs(getTagName(MetadataReportConfig.class));\n-    }\n-\n-    public Collection<MetadataReportConfig> getDefaultMetadataConfigs() {\n-        Collection<MetadataReportConfig> defaults = getDefaultConfigs(getConfigsMap(getTagName(MetadataReportConfig.class)));\n-        if (CollectionUtils.isEmpty(defaults)) {\n-            return getMetadataConfigs();\n-        }\n-        return defaults;\n-    }\n-\n-    // MetadataReportConfig correlative methods\n-\n-    public void addProvider(ProviderConfig providerConfig) {\n-        addConfig(providerConfig);\n-    }\n-\n-    public void addProviders(Iterable<ProviderConfig> providerConfigs) {\n-        providerConfigs.forEach(this::addProvider);\n-    }\n-\n-    public Optional<ProviderConfig> getProvider(String id) {\n-        return ofNullable(getConfig(getTagName(ProviderConfig.class), id));\n-    }\n-\n-    /**\n-     * Only allows one default ProviderConfig\n-     */\n-    public Optional<ProviderConfig> getDefaultProvider() {\n-        List<ProviderConfig> providerConfigs = getDefaultConfigs(getConfigsMap(getTagName(ProviderConfig.class)));\n-        if (CollectionUtils.isNotEmpty(providerConfigs)) {\n-            return Optional.of(providerConfigs.get(0));\n-        }\n-        return Optional.empty();\n-    }\n-\n-    public Collection<ProviderConfig> getProviders() {\n-        return getConfigs(getTagName(ProviderConfig.class));\n-    }\n-\n-    // ConsumerConfig correlative methods\n-\n-    public void addConsumer(ConsumerConfig consumerConfig) {\n-        addConfig(consumerConfig);\n-    }\n-\n-    public void addConsumers(Iterable<ConsumerConfig> consumerConfigs) {\n-        consumerConfigs.forEach(this::addConsumer);\n-    }\n-\n-    public Optional<ConsumerConfig> getConsumer(String id) {\n-        return ofNullable(getConfig(getTagName(ConsumerConfig.class), id));\n-    }\n-\n-    /**\n-     * Only allows one default ConsumerConfig\n-     */\n-    public Optional<ConsumerConfig> getDefaultConsumer() {\n-        List<ConsumerConfig> consumerConfigs = getDefaultConfigs(getConfigsMap(getTagName(ConsumerConfig.class)));\n-        if (CollectionUtils.isNotEmpty(consumerConfigs)) {\n-            return Optional.of(consumerConfigs.get(0));\n-        }\n-        return Optional.empty();\n-    }\n-\n-    public Collection<ConsumerConfig> getConsumers() {\n-        return getConfigs(getTagName(ConsumerConfig.class));\n-    }\n-\n-    // ProtocolConfig correlative methods\n-\n-    public void addProtocol(ProtocolConfig protocolConfig) {\n-        addConfig(protocolConfig);\n-    }\n-\n-    public void addProtocols(Iterable<ProtocolConfig> protocolConfigs) {\n-        if (protocolConfigs != null) {\n-            protocolConfigs.forEach(this::addProtocol);\n-        }\n-    }\n-\n-    public Optional<ProtocolConfig> getProtocol(String id) {\n-        return ofNullable(getConfig(getTagName(ProtocolConfig.class), id));\n-    }\n-\n-    public List<ProtocolConfig> getDefaultProtocols() {\n-        return getDefaultConfigs(getConfigsMap(getTagName(ProtocolConfig.class)));\n-    }\n-\n-    public Collection<ProtocolConfig> getProtocols() {\n-        return getConfigs(getTagName(ProtocolConfig.class));\n-    }\n-\n-    public Set<String> getProtocolIds() {\n-        Set<String> protocolIds = new HashSet<>();\n-        protocolIds.addAll(getSubProperties(ApplicationModel.getEnvironment()\n-                .getExternalConfigurationMap(), PROTOCOLS_SUFFIX));\n-        protocolIds.addAll(getSubProperties(ApplicationModel.getEnvironment()\n-                .getAppExternalConfigurationMap(), PROTOCOLS_SUFFIX));\n-\n-        return unmodifiableSet(protocolIds);\n-    }\n-\n-\n-    // RegistryConfig correlative methods\n-\n-    public void addRegistry(RegistryConfig registryConfig) {\n-        addConfig(registryConfig);\n-    }\n-\n-    public void addRegistries(Iterable<RegistryConfig> registryConfigs) {\n-        if (registryConfigs != null) {\n-            registryConfigs.forEach(this::addRegistry);\n-        }\n-    }\n-\n-    public Optional<RegistryConfig> getRegistry(String id) {\n-        return ofNullable(getConfig(getTagName(RegistryConfig.class), id));\n-    }\n-\n-    public List<RegistryConfig> getDefaultRegistries() {\n-        return getDefaultConfigs(getConfigsMap(getTagName(RegistryConfig.class)));\n-    }\n-\n-    public Collection<RegistryConfig> getRegistries() {\n-        return getConfigs(getTagName(RegistryConfig.class));\n-    }\n-\n-    public Set<String> getRegistryIds() {\n-        Set<String> registryIds = new HashSet<>();\n-        registryIds.addAll(getSubProperties(ApplicationModel.getEnvironment().getExternalConfigurationMap(),\n-                REGISTRIES_SUFFIX));\n-        registryIds.addAll(getSubProperties(ApplicationModel.getEnvironment().getAppExternalConfigurationMap(),\n-                REGISTRIES_SUFFIX));\n-\n-        return unmodifiableSet(registryIds);\n-    }\n-\n-    // ServiceConfig correlative methods\n-\n-    public void addService(ServiceConfigBase<?> serviceConfig) {\n-        addConfig(serviceConfig);\n-    }\n-\n-    public void addServices(Iterable<ServiceConfigBase<?>> serviceConfigs) {\n-        serviceConfigs.forEach(this::addService);\n-    }\n-\n-    public Collection<ServiceConfigBase> getServices() {\n-        return getConfigs(getTagName(ServiceConfigBase.class));\n-    }\n-\n-    public <T> ServiceConfigBase<T> getService(String id) {\n-        return getConfig(getTagName(ServiceConfigBase.class), id);\n-    }\n-\n-    // ReferenceConfig correlative methods\n-\n-    public void addReference(ReferenceConfigBase<?> referenceConfig) {\n-        addConfig(referenceConfig);\n-    }\n-\n-    public void addReferences(Iterable<ReferenceConfigBase<?>> referenceConfigs) {\n-        referenceConfigs.forEach(this::addReference);\n-    }\n-\n-    public Collection<ReferenceConfigBase<?>> getReferences() {\n-        return getConfigs(getTagName(ReferenceConfigBase.class));\n-    }\n-\n-    public <T> ReferenceConfigBase<T> getReference(String id) {\n-        return getConfig(getTagName(ReferenceConfigBase.class), id);\n-    }\n-\n-    protected static Set<String> getSubProperties(Map<String, String> properties, String prefix) {\n-        return properties.keySet().stream().filter(k -> k.contains(prefix)).map(k -> {\n-            k = k.substring(prefix.length());\n-            return k.substring(0, k.indexOf(\".\"));\n-        }).collect(Collectors.toSet());\n-    }\n-\n-    public void refreshAll() {\n-        write(() -> {\n-            // refresh all configs here,\n-            getApplication().ifPresent(ApplicationConfig::refresh);\n-            getMonitor().ifPresent(MonitorConfig::refresh);\n-            getModule().ifPresent(ModuleConfig::refresh);\n-\n-            getProtocols().forEach(ProtocolConfig::refresh);\n-            getRegistries().forEach(RegistryConfig::refresh);\n-            getProviders().forEach(ProviderConfig::refresh);\n-            getConsumers().forEach(ConsumerConfig::refresh);\n-        });\n-\n-    }\n-\n-    /**\n-     * In some scenario,  we may nee to add and remove ServiceConfig or ReferenceConfig dynamically.\n-     *\n-     * @param config the config instance to remove.\n-     */\n-    public void removeConfig(AbstractConfig config) {\n-        if (config == null) {\n-            return;\n-        }\n-\n-        Map<String, AbstractConfig> configs = configsCache.get(getTagName(config.getClass()));\n-        if (CollectionUtils.isNotEmptyMap(configs)) {\n-            configs.remove(getId(config));\n-        }\n-    }\n-\n-    public void clear() {\n-        write(this.configsCache::clear);\n-    }\n-\n-    /**\n-     * @throws IllegalStateException\n-     * @since 2.7.8\n-     */\n-    @Override\n-    public void destroy() throws IllegalStateException {\n-        clear();\n-    }\n-\n-    /**\n-     * Add the dubbo {@link AbstractConfig config}\n-     *\n-     * @param config the dubbo {@link AbstractConfig config}\n-     */\n-    public void addConfig(AbstractConfig config) {\n-        addConfig(config, false);\n-    }\n-\n-    protected void addConfig(AbstractConfig config, boolean unique) {\n-        if (config == null) {\n-            return;\n-        }\n-        write(() -> {\n-            Map<String, AbstractConfig> configsMap = configsCache.computeIfAbsent(getTagName(config.getClass()), type -> newMap());\n-            addIfAbsent(config, configsMap, unique);\n-        });\n-    }\n-\n-    protected <C extends AbstractConfig> Map<String, C> getConfigsMap(String configType) {\n-        return (Map<String, C>) read(() -> configsCache.getOrDefault(configType, emptyMap()));\n-    }\n-\n-    protected <C extends AbstractConfig> Collection<C> getConfigs(String configType) {\n-        return (Collection<C>) read(() -> getConfigsMap(configType).values());\n-    }\n-\n-    protected <C extends AbstractConfig> C getConfig(String configType, String id) {\n-        return read(() -> {\n-            Map<String, C> configsMap = (Map) configsCache.getOrDefault(configType, emptyMap());\n-            return configsMap.get(id);\n-        });\n-    }\n-\n-    protected <C extends AbstractConfig> C getConfig(String configType) throws IllegalStateException {\n-        return read(() -> {\n-            Map<String, C> configsMap = (Map) configsCache.getOrDefault(configType, emptyMap());\n-            int size = configsMap.size();\n-            if (size < 1) {\n-//                throw new IllegalStateException(\"No such \" + configType.getName() + \" is found\");\n-                return null;\n-            } else if (size > 1) {\n-                logger.warn(\"Expected single matching of \" + configType + \", but found \" + size + \" instances, will randomly pick the first one.\");\n-            }\n-\n-            return configsMap.values().iterator().next();\n-        });\n-    }\n-\n-    private <V> V write(Callable<V> callable) {\n-        V value = null;\n-        Lock writeLock = lock.writeLock();\n-        try {\n-            writeLock.lock();\n-            value = callable.call();\n-        } catch (RuntimeException e) {\n-            throw e;\n-        } catch (Throwable e) {\n-            throw new RuntimeException(e.getCause());\n-        } finally {\n-            writeLock.unlock();\n-        }\n-        return value;\n-    }\n-\n-    private void write(Runnable runnable) {\n-        write(() -> {\n-            runnable.run();\n-            return null;\n-        });\n-    }\n-\n-    private <V> V read(Callable<V> callable) {\n-        Lock readLock = lock.readLock();\n-        V value = null;\n-        try {\n-            readLock.lock();\n-            value = callable.call();\n-        } catch (Throwable e) {\n-            throw new RuntimeException(e);\n-        } finally {\n-            readLock.unlock();\n-        }\n-        return value;\n-    }\n-\n-    private static void checkDuplicate(AbstractConfig oldOne, AbstractConfig newOne) throws IllegalStateException {\n-        if (oldOne != null && !oldOne.equals(newOne)) {\n-            String configName = oldOne.getClass().getSimpleName();\n-            logger.warn(\"Duplicate Config found for \" + configName + \", you should use only one unique \" + configName + \" for one application.\");\n-        }\n-    }\n-\n-    private static Map newMap() {\n-        return new HashMap<>();\n-    }\n-\n-    static <C extends AbstractConfig> void addIfAbsent(C config, Map<String, C> configsMap, boolean unique)\n-            throws IllegalStateException {\n-\n-        if (config == null || configsMap == null) {\n-            return;\n-        }\n-\n-        if (unique) { // check duplicate\n-            configsMap.values().forEach(c -> {\n-                checkDuplicate(c, config);\n-            });\n-        }\n-\n-        String key = getId(config);\n-\n-        C existedConfig = configsMap.get(key);\n-\n-        if (existedConfig != null && !config.equals(existedConfig)) {\n-            if (logger.isWarnEnabled()) {\n-                String type = config.getClass().getSimpleName();\n-                logger.warn(String.format(\"Duplicate %s found, there already has one default %s or more than two %ss have the same id, \" +\n-                        \"you can try to give each %s a different id : %s\", type, type, type, type, config));\n-            }\n-        } else {\n-            configsMap.put(key, config);\n-        }\n-    }\n-\n-    static <C extends AbstractConfig> String getId(C config) {\n-        String id = config.getId();\n-        return isNotEmpty(id) ? id : isDefaultConfig(config) ?\n-                config.getClass().getSimpleName() + \"#\" + DEFAULT_KEY : null;\n-    }\n-\n-    static <C extends AbstractConfig> boolean isDefaultConfig(C config) {\n-        Boolean isDefault = getProperty(config, \"isDefault\");\n-        return isDefault == null || TRUE.equals(isDefault);\n-    }\n-\n-    static <C extends AbstractConfig> List<C> getDefaultConfigs(Map<String, C> configsMap) {\n-        return configsMap.values()\n-                .stream()\n-                .filter(ConfigManager::isDefaultConfig)\n-                .collect(Collectors.toList());\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.context;\r\n+\r\n+import org.apache.dubbo.common.context.FrameworkExt;\r\n+import org.apache.dubbo.common.context.LifecycleAdapter;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.config.AbstractConfig;\r\n+import org.apache.dubbo.config.ApplicationConfig;\r\n+import org.apache.dubbo.config.ConfigCenterConfig;\r\n+import org.apache.dubbo.config.ConsumerConfig;\r\n+import org.apache.dubbo.config.MetadataReportConfig;\r\n+import org.apache.dubbo.config.MetricsConfig;\r\n+import org.apache.dubbo.config.ModuleConfig;\r\n+import org.apache.dubbo.config.MonitorConfig;\r\n+import org.apache.dubbo.config.ProtocolConfig;\r\n+import org.apache.dubbo.config.ProviderConfig;\r\n+import org.apache.dubbo.config.ReferenceConfigBase;\r\n+import org.apache.dubbo.config.RegistryConfig;\r\n+import org.apache.dubbo.config.ServiceConfigBase;\r\n+import org.apache.dubbo.config.SslConfig;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.HashMap;\r\n+import java.util.HashSet;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Optional;\r\n+import java.util.Set;\r\n+import java.util.concurrent.Callable;\r\n+import java.util.concurrent.locks.Lock;\r\n+import java.util.concurrent.locks.ReadWriteLock;\r\n+import java.util.concurrent.locks.ReentrantReadWriteLock;\r\n+import java.util.stream.Collectors;\r\n+\r\n+import static java.lang.Boolean.TRUE;\r\n+import static java.util.Collections.emptyMap;\r\n+import static java.util.Collections.unmodifiableSet;\r\n+import static java.util.Optional.ofNullable;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_KEY;\r\n+import static org.apache.dubbo.common.utils.ReflectUtils.getProperty;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isNotEmpty;\r\n+import static org.apache.dubbo.config.AbstractConfig.getTagName;\r\n+import static org.apache.dubbo.config.Constants.PROTOCOLS_SUFFIX;\r\n+import static org.apache.dubbo.config.Constants.REGISTRIES_SUFFIX;\r\n+\r\n+public class ConfigManager extends LifecycleAdapter implements FrameworkExt {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(ConfigManager.class);\r\n+\r\n+    public static final String NAME = \"config\";\r\n+\r\n+    private final ReadWriteLock lock = new ReentrantReadWriteLock();\r\n+\r\n+    final Map<String, Map<String, AbstractConfig>> configsCache = newMap();\r\n+\r\n+    public ConfigManager() {\r\n+    }\r\n+\r\n+    // ApplicationConfig correlative methods\r\n+\r\n+    public void setApplication(ApplicationConfig application) {\r\n+        addConfig(application, true);\r\n+    }\r\n+\r\n+    public Optional<ApplicationConfig> getApplication() {\r\n+        return ofNullable(getConfig(getTagName(ApplicationConfig.class)));\r\n+    }\r\n+\r\n+    public ApplicationConfig getApplicationOrElseThrow() {\r\n+        return getApplication().orElseThrow(() -> new IllegalStateException(\"There's no ApplicationConfig specified.\"));\r\n+    }\r\n+\r\n+    // MonitorConfig correlative methods\r\n+\r\n+    public void setMonitor(MonitorConfig monitor) {\r\n+        addConfig(monitor, true);\r\n+    }\r\n+\r\n+    public Optional<MonitorConfig> getMonitor() {\r\n+        return ofNullable(getConfig(getTagName(MonitorConfig.class)));\r\n+    }\r\n+\r\n+    // ModuleConfig correlative methods\r\n+\r\n+    public void setModule(ModuleConfig module) {\r\n+        addConfig(module, true);\r\n+    }\r\n+\r\n+    public Optional<ModuleConfig> getModule() {\r\n+        return ofNullable(getConfig(getTagName(ModuleConfig.class)));\r\n+    }\r\n+\r\n+    public void setMetrics(MetricsConfig metrics) {\r\n+        addConfig(metrics, true);\r\n+    }\r\n+\r\n+    public Optional<MetricsConfig> getMetrics() {\r\n+        return ofNullable(getConfig(getTagName(MetricsConfig.class)));\r\n+    }\r\n+\r\n+    public void setSsl(SslConfig sslConfig) {\r\n+        addConfig(sslConfig, true);\r\n+    }\r\n+\r\n+    public Optional<SslConfig> getSsl() {\r\n+        return ofNullable(getConfig(getTagName(SslConfig.class)));\r\n+    }\r\n+\r\n+    // ConfigCenterConfig correlative methods\r\n+\r\n+    public void addConfigCenter(ConfigCenterConfig configCenter) {\r\n+        addConfig(configCenter);\r\n+    }\r\n+\r\n+    public void addConfigCenters(Iterable<ConfigCenterConfig> configCenters) {\r\n+        configCenters.forEach(this::addConfigCenter);\r\n+    }\r\n+\r\n+    public Optional<Collection<ConfigCenterConfig>> getDefaultConfigCenter() {\r\n+        Collection<ConfigCenterConfig> defaults = getDefaultConfigs(getConfigsMap(getTagName(ConfigCenterConfig.class)));\r\n+        if (CollectionUtils.isEmpty(defaults)) {\r\n+            defaults = getConfigCenters();\r\n+        }\r\n+        return Optional.ofNullable(defaults);\r\n+    }\r\n+\r\n+    public ConfigCenterConfig getConfigCenter(String id) {\r\n+        return getConfig(getTagName(ConfigCenterConfig.class), id);\r\n+    }\r\n+\r\n+    public Collection<ConfigCenterConfig> getConfigCenters() {\r\n+        return getConfigs(getTagName(ConfigCenterConfig.class));\r\n+    }\r\n+\r\n+    // MetadataReportConfig correlative methods\r\n+\r\n+    public void addMetadataReport(MetadataReportConfig metadataReportConfig) {\r\n+        addConfig(metadataReportConfig);\r\n+    }\r\n+\r\n+    public void addMetadataReports(Iterable<MetadataReportConfig> metadataReportConfigs) {\r\n+        metadataReportConfigs.forEach(this::addMetadataReport);\r\n+    }\r\n+\r\n+    public Collection<MetadataReportConfig> getMetadataConfigs() {\r\n+        return getConfigs(getTagName(MetadataReportConfig.class));\r\n+    }\r\n+\r\n+    public Collection<MetadataReportConfig> getDefaultMetadataConfigs() {\r\n+        Collection<MetadataReportConfig> defaults = getDefaultConfigs(getConfigsMap(getTagName(MetadataReportConfig.class)));\r\n+        if (CollectionUtils.isEmpty(defaults)) {\r\n+            return getMetadataConfigs();\r\n+        }\r\n+        return defaults;\r\n+    }\r\n+\r\n+    // MetadataReportConfig correlative methods\r\n+\r\n+    public void addProvider(ProviderConfig providerConfig) {\r\n+        addConfig(providerConfig);\r\n+    }\r\n+\r\n+    public void addProviders(Iterable<ProviderConfig> providerConfigs) {\r\n+        providerConfigs.forEach(this::addProvider);\r\n+    }\r\n+\r\n+    public Optional<ProviderConfig> getProvider(String id) {\r\n+        return ofNullable(getConfig(getTagName(ProviderConfig.class), id));\r\n+    }\r\n+\r\n+    /**\r\n+     * Only allows one default ProviderConfig\r\n+     */\r\n+    public Optional<ProviderConfig> getDefaultProvider() {\r\n+        List<ProviderConfig> providerConfigs = getDefaultConfigs(getConfigsMap(getTagName(ProviderConfig.class)));\r\n+        if (CollectionUtils.isNotEmpty(providerConfigs)) {\r\n+            return Optional.of(providerConfigs.get(0));\r\n+        }\r\n+        return Optional.empty();\r\n+    }\r\n+\r\n+    public Collection<ProviderConfig> getProviders() {\r\n+        return getConfigs(getTagName(ProviderConfig.class));\r\n+    }\r\n+\r\n+    // ConsumerConfig correlative methods\r\n+\r\n+    public void addConsumer(ConsumerConfig consumerConfig) {\r\n+        addConfig(consumerConfig);\r\n+    }\r\n+\r\n+    public void addConsumers(Iterable<ConsumerConfig> consumerConfigs) {\r\n+        consumerConfigs.forEach(this::addConsumer);\r\n+    }\r\n+\r\n+    public Optional<ConsumerConfig> getConsumer(String id) {\r\n+        return ofNullable(getConfig(getTagName(ConsumerConfig.class), id));\r\n+    }\r\n+\r\n+    /**\r\n+     * Only allows one default ConsumerConfig\r\n+     */\r\n+    public Optional<ConsumerConfig> getDefaultConsumer() {\r\n+        List<ConsumerConfig> consumerConfigs = getDefaultConfigs(getConfigsMap(getTagName(ConsumerConfig.class)));\r\n+        if (CollectionUtils.isNotEmpty(consumerConfigs)) {\r\n+            return Optional.of(consumerConfigs.get(0));\r\n+        }\r\n+        return Optional.empty();\r\n+    }\r\n+\r\n+    public Collection<ConsumerConfig> getConsumers() {\r\n+        return getConfigs(getTagName(ConsumerConfig.class));\r\n+    }\r\n+\r\n+    // ProtocolConfig correlative methods\r\n+\r\n+    public void addProtocol(ProtocolConfig protocolConfig) {\r\n+        addConfig(protocolConfig);\r\n+    }\r\n+\r\n+    public void addProtocols(Iterable<ProtocolConfig> protocolConfigs) {\r\n+        if (protocolConfigs != null) {\r\n+            protocolConfigs.forEach(this::addProtocol);\r\n+        }\r\n+    }\r\n+\r\n+    public Optional<ProtocolConfig> getProtocol(String id) {\r\n+        return ofNullable(getConfig(getTagName(ProtocolConfig.class), id));\r\n+    }\r\n+\r\n+    public List<ProtocolConfig> getDefaultProtocols() {\r\n+        return getDefaultConfigs(getConfigsMap(getTagName(ProtocolConfig.class)));\r\n+    }\r\n+\r\n+    public Collection<ProtocolConfig> getProtocols() {\r\n+        return getConfigs(getTagName(ProtocolConfig.class));\r\n+    }\r\n+\r\n+    public Set<String> getProtocolIds() {\r\n+        Set<String> protocolIds = new HashSet<>();\r\n+        protocolIds.addAll(getSubProperties(ApplicationModel.getEnvironment()\r\n+                .getExternalConfigurationMap(), PROTOCOLS_SUFFIX));\r\n+        protocolIds.addAll(getSubProperties(ApplicationModel.getEnvironment()\r\n+                .getAppExternalConfigurationMap(), PROTOCOLS_SUFFIX));\r\n+\r\n+        return unmodifiableSet(protocolIds);\r\n+    }\r\n+\r\n+\r\n+    // RegistryConfig correlative methods\r\n+\r\n+    public void addRegistry(RegistryConfig registryConfig) {\r\n+        addConfig(registryConfig);\r\n+    }\r\n+\r\n+    public void addRegistries(Iterable<RegistryConfig> registryConfigs) {\r\n+        if (registryConfigs != null) {\r\n+            registryConfigs.forEach(this::addRegistry);\r\n+        }\r\n+    }\r\n+\r\n+    public Optional<RegistryConfig> getRegistry(String id) {\r\n+        return ofNullable(getConfig(getTagName(RegistryConfig.class), id));\r\n+    }\r\n+\r\n+    public List<RegistryConfig> getDefaultRegistries() {\r\n+        return getDefaultConfigs(getConfigsMap(getTagName(RegistryConfig.class)));\r\n+    }\r\n+\r\n+    public Collection<RegistryConfig> getRegistries() {\r\n+        return getConfigs(getTagName(RegistryConfig.class));\r\n+    }\r\n+\r\n+    public Set<String> getRegistryIds() {\r\n+        Set<String> registryIds = new HashSet<>();\r\n+        registryIds.addAll(getSubProperties(ApplicationModel.getEnvironment().getExternalConfigurationMap(),\r\n+                REGISTRIES_SUFFIX));\r\n+        registryIds.addAll(getSubProperties(ApplicationModel.getEnvironment().getAppExternalConfigurationMap(),\r\n+                REGISTRIES_SUFFIX));\r\n+\r\n+        return unmodifiableSet(registryIds);\r\n+    }\r\n+\r\n+    // ServiceConfig correlative methods\r\n+\r\n+    public void addService(ServiceConfigBase<?> serviceConfig) {\r\n+        addConfig(serviceConfig);\r\n+    }\r\n+\r\n+    public void addServices(Iterable<ServiceConfigBase<?>> serviceConfigs) {\r\n+        serviceConfigs.forEach(this::addService);\r\n+    }\r\n+\r\n+    public Collection<ServiceConfigBase> getServices() {\r\n+        return getConfigs(getTagName(ServiceConfigBase.class));\r\n+    }\r\n+\r\n+    public <T> ServiceConfigBase<T> getService(String id) {\r\n+        return getConfig(getTagName(ServiceConfigBase.class), id);\r\n+    }\r\n+\r\n+    // ReferenceConfig correlative methods\r\n+\r\n+    public void addReference(ReferenceConfigBase<?> referenceConfig) {\r\n+        addConfig(referenceConfig);\r\n+    }\r\n+\r\n+    public void addReferences(Iterable<ReferenceConfigBase<?>> referenceConfigs) {\r\n+        referenceConfigs.forEach(this::addReference);\r\n+    }\r\n+\r\n+    public Collection<ReferenceConfigBase<?>> getReferences() {\r\n+        return getConfigs(getTagName(ReferenceConfigBase.class));\r\n+    }\r\n+\r\n+    public <T> ReferenceConfigBase<T> getReference(String id) {\r\n+        return getConfig(getTagName(ReferenceConfigBase.class), id);\r\n+    }\r\n+\r\n+    protected static Set<String> getSubProperties(Map<String, String> properties, String prefix) {\r\n+        return properties.keySet().stream().filter(k -> k.contains(prefix)).map(k -> {\r\n+            k = k.substring(prefix.length());\r\n+            return k.substring(0, k.indexOf(\".\"));\r\n+        }).collect(Collectors.toSet());\r\n+    }\r\n+\r\n+    public void refreshAll() {\r\n+        write(() -> {\r\n+            // refresh all configs here,\r\n+            getApplication().ifPresent(ApplicationConfig::refresh);\r\n+            getMonitor().ifPresent(MonitorConfig::refresh);\r\n+            getModule().ifPresent(ModuleConfig::refresh);\r\n+\r\n+            getProtocols().forEach(ProtocolConfig::refresh);\r\n+            getRegistries().forEach(RegistryConfig::refresh);\r\n+            getProviders().forEach(ProviderConfig::refresh);\r\n+            getConsumers().forEach(ConsumerConfig::refresh);\r\n+        });\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * In some scenario,  we may nee to add and remove ServiceConfig or ReferenceConfig dynamically.\r\n+     *\r\n+     * @param config the config instance to remove.\r\n+     */\r\n+    public void removeConfig(AbstractConfig config) {\r\n+        if (config == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        Map<String, AbstractConfig> configs = configsCache.get(getTagName(config.getClass()));\r\n+        if (CollectionUtils.isNotEmptyMap(configs)) {\r\n+            configs.remove(getId(config));\r\n+        }\r\n+    }\r\n+\r\n+    public void clear() {\r\n+        write(this.configsCache::clear);\r\n+    }\r\n+\r\n+    /**\r\n+     * @throws IllegalStateException\r\n+     * @since 2.7.8\r\n+     */\r\n+    @Override\r\n+    public void destroy() throws IllegalStateException {\r\n+        clear();\r\n+    }\r\n+\r\n+    /**\r\n+     * Add the dubbo {@link AbstractConfig config}\r\n+     *\r\n+     * @param config the dubbo {@link AbstractConfig config}\r\n+     */\r\n+    public void addConfig(AbstractConfig config) {\r\n+        addConfig(config, false);\r\n+    }\r\n+\r\n+    protected void addConfig(AbstractConfig config, boolean unique) {\r\n+        if (config == null) {\r\n+            return;\r\n+        }\r\n+        write(() -> {\r\n+            Map<String, AbstractConfig> configsMap = configsCache.computeIfAbsent(getTagName(config.getClass()), type -> newMap());\r\n+            addIfAbsent(config, configsMap, unique);\r\n+        });\r\n+    }\r\n+\r\n+    protected <C extends AbstractConfig> Map<String, C> getConfigsMap(String configType) {\r\n+        return (Map<String, C>) read(() -> configsCache.getOrDefault(configType, emptyMap()));\r\n+    }\r\n+\r\n+    protected <C extends AbstractConfig> Collection<C> getConfigs(String configType) {\r\n+        return (Collection<C>) read(() -> getConfigsMap(configType).values());\r\n+    }\r\n+\r\n+    protected <C extends AbstractConfig> C getConfig(String configType, String id) {\r\n+        return read(() -> {\r\n+            Map<String, C> configsMap = (Map) configsCache.getOrDefault(configType, emptyMap());\r\n+            return configsMap.get(id);\r\n+        });\r\n+    }\r\n+\r\n+    protected <C extends AbstractConfig> C getConfig(String configType) throws IllegalStateException {\r\n+        return read(() -> {\r\n+            Map<String, C> configsMap = (Map) configsCache.getOrDefault(configType, emptyMap());\r\n+            int size = configsMap.size();\r\n+            if (size < 1) {\r\n+//                throw new IllegalStateException(\"No such \" + configType.getName() + \" is found\");\r\n+                return null;\r\n+            } else if (size > 1) {\r\n+                logger.warn(\"Expected single matching of \" + configType + \", but found \" + size + \" instances, will randomly pick the first one.\");\r\n+            }\r\n+\r\n+            return configsMap.values().iterator().next();\r\n+        });\r\n+    }\r\n+\r\n+    private <V> V write(Callable<V> callable) {\r\n+        V value = null;\r\n+        Lock writeLock = lock.writeLock();\r\n+        try {\r\n+            writeLock.lock();\r\n+            value = callable.call();\r\n+        } catch (RuntimeException e) {\r\n+            throw e;\r\n+        } catch (Throwable e) {\r\n+            throw new RuntimeException(e.getCause());\r\n+        } finally {\r\n+            writeLock.unlock();\r\n+        }\r\n+        return value;\r\n+    }\r\n+\r\n+    private void write(Runnable runnable) {\r\n+        write(() -> {\r\n+            runnable.run();\r\n+            return null;\r\n+        });\r\n+    }\r\n+\r\n+    private <V> V read(Callable<V> callable) {\r\n+        Lock readLock = lock.readLock();\r\n+        V value = null;\r\n+        try {\r\n+            readLock.lock();\r\n+            value = callable.call();\r\n+        } catch (Throwable e) {\r\n+            throw new RuntimeException(e);\r\n+        } finally {\r\n+            readLock.unlock();\r\n+        }\r\n+        return value;\r\n+    }\r\n+\r\n+    private static void checkDuplicate(AbstractConfig oldOne, AbstractConfig newOne) throws IllegalStateException {\r\n+        if (oldOne != null && !oldOne.equals(newOne)) {\r\n+            String configName = oldOne.getClass().getSimpleName();\r\n+            logger.warn(\"Duplicate Config found for \" + configName + \", you should use only one unique \" + configName + \" for one application.\");\r\n+        }\r\n+    }\r\n+\r\n+    private static Map newMap() {\r\n+        return new HashMap<>();\r\n+    }\r\n+\r\n+    static <C extends AbstractConfig> void addIfAbsent(C config, Map<String, C> configsMap, boolean unique)\r\n+            throws IllegalStateException {\r\n+\r\n+        if (config == null || configsMap == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        if (unique) { // check duplicate\r\n+            configsMap.values().forEach(c -> {\r\n+                checkDuplicate(c, config);\r\n+            });\r\n+        }\r\n+\r\n+        String key = getId(config);\r\n+\r\n+        C existedConfig = configsMap.get(key);\r\n+\r\n+        if (existedConfig != null && !config.equals(existedConfig)) {\r\n+            if (logger.isWarnEnabled()) {\r\n+                String type = config.getClass().getSimpleName();\r\n+                logger.warn(String.format(\"Duplicate %s found, there already has one default %s or more than two %ss have the same id, \" +\r\n+                        \"you can try to give each %s a different id : %s\", type, type, type, type, config));\r\n+            }\r\n+        } else {\r\n+            configsMap.put(key, config);\r\n+        }\r\n+    }\r\n+\r\n+    static <C extends AbstractConfig> String getId(C config) {\r\n+        String id = config.getId();\r\n+        return isNotEmpty(id) ? id : isDefaultConfig(config) ?\r\n+                config.getClass().getSimpleName() + \"#\" + DEFAULT_KEY : null;\r\n+    }\r\n+\r\n+    static <C extends AbstractConfig> boolean isDefaultConfig(C config) {\r\n+        Boolean isDefault = getProperty(config, \"isDefault\");\r\n+        return isDefault == null || TRUE.equals(isDefault);\r\n+    }\r\n+\r\n+    static <C extends AbstractConfig> List<C> getDefaultConfigs(Map<String, C> configsMap) {\r\n+        return configsMap.values()\r\n+                .stream()\r\n+                .filter(ConfigManager::isDefaultConfig)\r\n+                .collect(Collectors.toList());\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/config/support/Parameter.java", "source2": "org/apache/dubbo/config/support/Parameter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,62 +1,62 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.config.support;\n-\n-import java.lang.annotation.Documented;\n-import java.lang.annotation.ElementType;\n-import java.lang.annotation.Retention;\n-import java.lang.annotation.RetentionPolicy;\n-import java.lang.annotation.Target;\n-\n-/**\n- * Parameter\n- */\n-@Documented\n-@Retention(RetentionPolicy.RUNTIME)\n-@Target({ElementType.METHOD})\n-public @interface Parameter {\n-\n-    String key() default \"\";\n-\n-    boolean required() default false;\n-\n-    boolean excluded() default false;\n-\n-    boolean escaped() default false;\n-\n-    boolean attribute() default false;\n-\n-    boolean append() default false;\n-\n-    /**\n-     * if {@link #key()} is specified, it will be used as the key for the annotated property when generating url.\n-     * by default, this key will also be used to retrieve the config value:\n-     * <pre>\n-     * {@code\n-     *  class ExampleConfig {\n-     *      // Dubbo will try to get \"dubbo.example.alias_for_item=xxx\" from .properties, if you want to use the original property\n-     *      // \"dubbo.example.item=xxx\", you need to set useKeyAsProperty=false.\n-     *      @Parameter(key = \"alias_for_item\")\n-     *      public getItem();\n-     *  }\n-     * }\n-     *\n-     * </pre>\n-     */\n-    boolean useKeyAsProperty() default true;\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.config.support;\r\n+\r\n+import java.lang.annotation.Documented;\r\n+import java.lang.annotation.ElementType;\r\n+import java.lang.annotation.Retention;\r\n+import java.lang.annotation.RetentionPolicy;\r\n+import java.lang.annotation.Target;\r\n+\r\n+/**\r\n+ * Parameter\r\n+ */\r\n+@Documented\r\n+@Retention(RetentionPolicy.RUNTIME)\r\n+@Target({ElementType.METHOD})\r\n+public @interface Parameter {\r\n+\r\n+    String key() default \"\";\r\n+\r\n+    boolean required() default false;\r\n+\r\n+    boolean excluded() default false;\r\n+\r\n+    boolean escaped() default false;\r\n+\r\n+    boolean attribute() default false;\r\n+\r\n+    boolean append() default false;\r\n+\r\n+    /**\r\n+     * if {@link #key()} is specified, it will be used as the key for the annotated property when generating url.\r\n+     * by default, this key will also be used to retrieve the config value:\r\n+     * <pre>\r\n+     * {@code\r\n+     *  class ExampleConfig {\r\n+     *      // Dubbo will try to get \"dubbo.example.alias_for_item=xxx\" from .properties, if you want to use the original property\r\n+     *      // \"dubbo.example.item=xxx\", you need to set useKeyAsProperty=false.\r\n+     *      @Parameter(key = \"alias_for_item\")\r\n+     *      public getItem();\r\n+     *  }\r\n+     * }\r\n+     *\r\n+     * </pre>\r\n+     */\r\n+    boolean useKeyAsProperty() default true;\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/event/AbstractEventDispatcher.java", "source2": "org/apache/dubbo/event/AbstractEventDispatcher.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,168 +1,168 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.event;\n-\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-\n-import java.util.Collection;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.ServiceLoader;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-import java.util.concurrent.Executor;\n-import java.util.function.Consumer;\n-import java.util.function.Predicate;\n-import java.util.stream.Stream;\n-\n-import static java.util.Collections.sort;\n-import static java.util.Collections.unmodifiableList;\n-import static org.apache.dubbo.event.EventListener.findEventType;\n-\n-/**\n- * The abstract {@link EventDispatcher} providers the common implementation.\n- *\n- * @see EventDispatcher\n- * @see Listenable\n- * @see ServiceLoader\n- * @see EventListener\n- * @see Event\n- * @since 2.7.5\n- */\n-public abstract class AbstractEventDispatcher implements EventDispatcher {\n-\n-    private final Object mutex = new Object();\n-\n-    private final ConcurrentMap<Class<? extends Event>, List<EventListener>> listenersCache = new ConcurrentHashMap<>();\n-\n-    private final Executor executor;\n-\n-    /**\n-     * Constructor with an instance of {@link Executor}\n-     *\n-     * @param executor {@link Executor}\n-     * @throws NullPointerException <code>executor</code> is <code>null</code>\n-     */\n-    protected AbstractEventDispatcher(Executor executor) {\n-        if (executor == null) {\n-            throw new NullPointerException(\"executor must not be null\");\n-        }\n-        this.executor = executor;\n-        this.loadEventListenerInstances();\n-    }\n-\n-    @Override\n-    public void addEventListener(EventListener<?> listener) throws NullPointerException, IllegalArgumentException {\n-        Listenable.assertListener(listener);\n-        doInListener(listener, listeners -> {\n-            addIfAbsent(listeners, listener);\n-        });\n-    }\n-\n-    @Override\n-    public void removeEventListener(EventListener<?> listener) throws NullPointerException, IllegalArgumentException {\n-        Listenable.assertListener(listener);\n-        doInListener(listener, listeners -> listeners.remove(listener));\n-    }\n-\n-    @Override\n-    public List<EventListener<?>> getAllEventListeners() {\n-        List<EventListener<?>> listeners = new LinkedList<>();\n-\n-        sortedListeners().forEach(listener -> {\n-            addIfAbsent(listeners, listener);\n-        });\n-\n-        return unmodifiableList(listeners);\n-    }\n-\n-    protected Stream<EventListener> sortedListeners() {\n-        return sortedListeners(e -> true);\n-    }\n-\n-    protected Stream<EventListener> sortedListeners(Predicate<Map.Entry<Class<? extends Event>, List<EventListener>>> predicate) {\n-        return listenersCache\n-                .entrySet()\n-                .stream()\n-                .filter(predicate)\n-                .map(Map.Entry::getValue)\n-                .flatMap(Collection::stream)\n-                .sorted();\n-    }\n-\n-    private <E> void addIfAbsent(Collection<E> collection, E element) {\n-        if (!collection.contains(element)) {\n-            collection.add(element);\n-        }\n-    }\n-\n-    @Override\n-    public void dispatch(Event event) {\n-\n-        Executor executor = getExecutor();\n-\n-        // execute in sequential or parallel execution model\n-        executor.execute(() -> {\n-            sortedListeners(entry -> entry.getKey().isAssignableFrom(event.getClass()))\n-                    .forEach(listener -> {\n-                        if (listener instanceof ConditionalEventListener) {\n-                            ConditionalEventListener predicateEventListener = (ConditionalEventListener) listener;\n-                            if (!predicateEventListener.accept(event)) { // No accept\n-                                return;\n-                            }\n-                        }\n-                        // Handle the event\n-                        listener.onEvent(event);\n-                    });\n-        });\n-    }\n-\n-    /**\n-     * @return the non-null {@link Executor}\n-     */\n-    @Override\n-    public final Executor getExecutor() {\n-        return executor;\n-    }\n-\n-    protected void doInListener(EventListener<?> listener, Consumer<Collection<EventListener>> consumer) {\n-        Class<? extends Event> eventType = findEventType(listener);\n-        if (eventType != null) {\n-            synchronized (mutex) {\n-                List<EventListener> listeners = listenersCache.computeIfAbsent(eventType, e -> new LinkedList<>());\n-                // consume\n-                consumer.accept(listeners);\n-                // sort\n-                sort(listeners);\n-            }\n-        }\n-    }\n-\n-    /**\n-     * Default, load the instances of {@link EventListener event listeners} by {@link ServiceLoader}\n-     * <p>\n-     * It could be override by the sub-class\n-     *\n-     * @see EventListener\n-     * @see ServiceLoader#load(Class)\n-     */\n-    protected void loadEventListenerInstances() {\n-        ExtensionLoader<EventListener> loader = ExtensionLoader.getExtensionLoader(EventListener.class);\n-        loader.getSupportedExtensionInstances().forEach(this::addEventListener);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.event;\r\n+\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.ServiceLoader;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+import java.util.concurrent.Executor;\r\n+import java.util.function.Consumer;\r\n+import java.util.function.Predicate;\r\n+import java.util.stream.Stream;\r\n+\r\n+import static java.util.Collections.sort;\r\n+import static java.util.Collections.unmodifiableList;\r\n+import static org.apache.dubbo.event.EventListener.findEventType;\r\n+\r\n+/**\r\n+ * The abstract {@link EventDispatcher} providers the common implementation.\r\n+ *\r\n+ * @see EventDispatcher\r\n+ * @see Listenable\r\n+ * @see ServiceLoader\r\n+ * @see EventListener\r\n+ * @see Event\r\n+ * @since 2.7.5\r\n+ */\r\n+public abstract class AbstractEventDispatcher implements EventDispatcher {\r\n+\r\n+    private final Object mutex = new Object();\r\n+\r\n+    private final ConcurrentMap<Class<? extends Event>, List<EventListener>> listenersCache = new ConcurrentHashMap<>();\r\n+\r\n+    private final Executor executor;\r\n+\r\n+    /**\r\n+     * Constructor with an instance of {@link Executor}\r\n+     *\r\n+     * @param executor {@link Executor}\r\n+     * @throws NullPointerException <code>executor</code> is <code>null</code>\r\n+     */\r\n+    protected AbstractEventDispatcher(Executor executor) {\r\n+        if (executor == null) {\r\n+            throw new NullPointerException(\"executor must not be null\");\r\n+        }\r\n+        this.executor = executor;\r\n+        this.loadEventListenerInstances();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addEventListener(EventListener<?> listener) throws NullPointerException, IllegalArgumentException {\r\n+        Listenable.assertListener(listener);\r\n+        doInListener(listener, listeners -> {\r\n+            addIfAbsent(listeners, listener);\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeEventListener(EventListener<?> listener) throws NullPointerException, IllegalArgumentException {\r\n+        Listenable.assertListener(listener);\r\n+        doInListener(listener, listeners -> listeners.remove(listener));\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<EventListener<?>> getAllEventListeners() {\r\n+        List<EventListener<?>> listeners = new LinkedList<>();\r\n+\r\n+        sortedListeners().forEach(listener -> {\r\n+            addIfAbsent(listeners, listener);\r\n+        });\r\n+\r\n+        return unmodifiableList(listeners);\r\n+    }\r\n+\r\n+    protected Stream<EventListener> sortedListeners() {\r\n+        return sortedListeners(e -> true);\r\n+    }\r\n+\r\n+    protected Stream<EventListener> sortedListeners(Predicate<Map.Entry<Class<? extends Event>, List<EventListener>>> predicate) {\r\n+        return listenersCache\r\n+                .entrySet()\r\n+                .stream()\r\n+                .filter(predicate)\r\n+                .map(Map.Entry::getValue)\r\n+                .flatMap(Collection::stream)\r\n+                .sorted();\r\n+    }\r\n+\r\n+    private <E> void addIfAbsent(Collection<E> collection, E element) {\r\n+        if (!collection.contains(element)) {\r\n+            collection.add(element);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void dispatch(Event event) {\r\n+\r\n+        Executor executor = getExecutor();\r\n+\r\n+        // execute in sequential or parallel execution model\r\n+        executor.execute(() -> {\r\n+            sortedListeners(entry -> entry.getKey().isAssignableFrom(event.getClass()))\r\n+                    .forEach(listener -> {\r\n+                        if (listener instanceof ConditionalEventListener) {\r\n+                            ConditionalEventListener predicateEventListener = (ConditionalEventListener) listener;\r\n+                            if (!predicateEventListener.accept(event)) { // No accept\r\n+                                return;\r\n+                            }\r\n+                        }\r\n+                        // Handle the event\r\n+                        listener.onEvent(event);\r\n+                    });\r\n+        });\r\n+    }\r\n+\r\n+    /**\r\n+     * @return the non-null {@link Executor}\r\n+     */\r\n+    @Override\r\n+    public final Executor getExecutor() {\r\n+        return executor;\r\n+    }\r\n+\r\n+    protected void doInListener(EventListener<?> listener, Consumer<Collection<EventListener>> consumer) {\r\n+        Class<? extends Event> eventType = findEventType(listener);\r\n+        if (eventType != null) {\r\n+            synchronized (mutex) {\r\n+                List<EventListener> listeners = listenersCache.computeIfAbsent(eventType, e -> new LinkedList<>());\r\n+                // consume\r\n+                consumer.accept(listeners);\r\n+                // sort\r\n+                sort(listeners);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Default, load the instances of {@link EventListener event listeners} by {@link ServiceLoader}\r\n+     * <p>\r\n+     * It could be override by the sub-class\r\n+     *\r\n+     * @see EventListener\r\n+     * @see ServiceLoader#load(Class)\r\n+     */\r\n+    protected void loadEventListenerInstances() {\r\n+        ExtensionLoader<EventListener> loader = ExtensionLoader.getExtensionLoader(EventListener.class);\r\n+        loader.getSupportedExtensionInstances().forEach(this::addEventListener);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/event/ConditionalEventListener.java", "source2": "org/apache/dubbo/event/ConditionalEventListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,35 +1,35 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.event;\n-\n-/**\n- * An {@link EventListener} extending the the conditional feature that {@link #accept(Event) decides} some\n- * {@link Event event} is handled or not by current listener.\n- *\n- * @see EventListener\n- * @since 2.7.5\n- */\n-public interface ConditionalEventListener<E extends Event> extends EventListener<E> {\n-\n-    /**\n-     * Accept the event is handled or not by current listener\n-     *\n-     * @param event {@link Event event}\n-     * @return if handled, return <code>true</code>, or <code>false</code>\n-     */\n-    boolean accept(E event);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.event;\r\n+\r\n+/**\r\n+ * An {@link EventListener} extending the the conditional feature that {@link #accept(Event) decides} some\r\n+ * {@link Event event} is handled or not by current listener.\r\n+ *\r\n+ * @see EventListener\r\n+ * @since 2.7.5\r\n+ */\r\n+public interface ConditionalEventListener<E extends Event> extends EventListener<E> {\r\n+\r\n+    /**\r\n+     * Accept the event is handled or not by current listener\r\n+     *\r\n+     * @param event {@link Event event}\r\n+     * @return if handled, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    boolean accept(E event);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/event/DirectEventDispatcher.java", "source2": "org/apache/dubbo/event/DirectEventDispatcher.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,30 +1,30 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.event;\n-\n-/**\n- * Direct {@link EventDispatcher} implementation uses current thread execution model\n- *\n- * @see EventDispatcher\n- * @since 2.7.5\n- */\n-public final class DirectEventDispatcher extends AbstractEventDispatcher {\n-\n-    public DirectEventDispatcher() {\n-        super(DIRECT_EXECUTOR);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.event;\r\n+\r\n+/**\r\n+ * Direct {@link EventDispatcher} implementation uses current thread execution model\r\n+ *\r\n+ * @see EventDispatcher\r\n+ * @since 2.7.5\r\n+ */\r\n+public final class DirectEventDispatcher extends AbstractEventDispatcher {\r\n+\r\n+    public DirectEventDispatcher() {\r\n+        super(DIRECT_EXECUTOR);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/event/Event.java", "source2": "org/apache/dubbo/event/Event.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,49 +1,49 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.event;\n-\n-import java.util.EventObject;\n-\n-/**\n- * An event object of Dubbo is based on the Java standard {@link EventObject event}\n- *\n- * @since 2.7.5\n- */\n-public abstract class Event extends EventObject {\n-\n-    private static final long serialVersionUID = -1704315605423947137L;\n-\n-    /**\n-     * The timestamp of event occurs\n-     */\n-    private final long timestamp;\n-\n-    /**\n-     * Constructs a prototypical Event.\n-     *\n-     * @param source The object on which the Event initially occurred.\n-     * @throws IllegalArgumentException if source is null.\n-     */\n-    public Event(Object source) {\n-        super(source);\n-        this.timestamp = System.currentTimeMillis();\n-    }\n-\n-    public long getTimestamp() {\n-        return timestamp;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.event;\r\n+\r\n+import java.util.EventObject;\r\n+\r\n+/**\r\n+ * An event object of Dubbo is based on the Java standard {@link EventObject event}\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public abstract class Event extends EventObject {\r\n+\r\n+    private static final long serialVersionUID = -1704315605423947137L;\r\n+\r\n+    /**\r\n+     * The timestamp of event occurs\r\n+     */\r\n+    private final long timestamp;\r\n+\r\n+    /**\r\n+     * Constructs a prototypical Event.\r\n+     *\r\n+     * @param source The object on which the Event initially occurred.\r\n+     * @throws IllegalArgumentException if source is null.\r\n+     */\r\n+    public Event(Object source) {\r\n+        super(source);\r\n+        this.timestamp = System.currentTimeMillis();\r\n+    }\r\n+\r\n+    public long getTimestamp() {\r\n+        return timestamp;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/event/EventDispatcher.java", "source2": "org/apache/dubbo/event/EventDispatcher.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,66 +1,66 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.event;\n-\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-import java.util.concurrent.Executor;\n-\n-/**\n- * {@link Event Dubbo Event} Dispatcher\n- *\n- * @see Event\n- * @see EventListener\n- * @see DirectEventDispatcher\n- * @since 2.7.5\n- */\n-@SPI(\"direct\")\n-public interface EventDispatcher extends Listenable<EventListener<?>> {\n-\n-    /**\n-     * Direct {@link Executor} uses sequential execution model\n-     */\n-    Executor DIRECT_EXECUTOR = Runnable::run;\n-\n-    /**\n-     * Dispatch a Dubbo event to the registered {@link EventListener Dubbo event listeners}\n-     *\n-     * @param event a {@link Event Dubbo event}\n-     */\n-    void dispatch(Event event);\n-\n-    /**\n-     * The {@link Executor} to dispatch a {@link Event Dubbo event}\n-     *\n-     * @return default implementation directly invoke {@link Runnable#run()} method, rather than multiple-threaded\n-     * {@link Executor}. If the return value is <code>null</code>, the behavior is same as default.\n-     * @see #DIRECT_EXECUTOR\n-     */\n-    default Executor getExecutor() {\n-        return DIRECT_EXECUTOR;\n-    }\n-\n-    /**\n-     * The default extension of {@link EventDispatcher} is loaded by {@link ExtensionLoader}\n-     *\n-     * @return the default extension of {@link EventDispatcher}\n-     */\n-    static EventDispatcher getDefaultExtension() {\n-        return ExtensionLoader.getExtensionLoader(EventDispatcher.class).getDefaultExtension();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.event;\r\n+\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+import java.util.concurrent.Executor;\r\n+\r\n+/**\r\n+ * {@link Event Dubbo Event} Dispatcher\r\n+ *\r\n+ * @see Event\r\n+ * @see EventListener\r\n+ * @see DirectEventDispatcher\r\n+ * @since 2.7.5\r\n+ */\r\n+@SPI(\"direct\")\r\n+public interface EventDispatcher extends Listenable<EventListener<?>> {\r\n+\r\n+    /**\r\n+     * Direct {@link Executor} uses sequential execution model\r\n+     */\r\n+    Executor DIRECT_EXECUTOR = Runnable::run;\r\n+\r\n+    /**\r\n+     * Dispatch a Dubbo event to the registered {@link EventListener Dubbo event listeners}\r\n+     *\r\n+     * @param event a {@link Event Dubbo event}\r\n+     */\r\n+    void dispatch(Event event);\r\n+\r\n+    /**\r\n+     * The {@link Executor} to dispatch a {@link Event Dubbo event}\r\n+     *\r\n+     * @return default implementation directly invoke {@link Runnable#run()} method, rather than multiple-threaded\r\n+     * {@link Executor}. If the return value is <code>null</code>, the behavior is same as default.\r\n+     * @see #DIRECT_EXECUTOR\r\n+     */\r\n+    default Executor getExecutor() {\r\n+        return DIRECT_EXECUTOR;\r\n+    }\r\n+\r\n+    /**\r\n+     * The default extension of {@link EventDispatcher} is loaded by {@link ExtensionLoader}\r\n+     *\r\n+     * @return the default extension of {@link EventDispatcher}\r\n+     */\r\n+    static EventDispatcher getDefaultExtension() {\r\n+        return ExtensionLoader.getExtensionLoader(EventDispatcher.class).getDefaultExtension();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/event/EventListener.java", "source2": "org/apache/dubbo/event/EventListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,119 +1,119 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.event;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.common.lang.Prioritized;\n-\n-import java.lang.reflect.ParameterizedType;\n-import java.lang.reflect.Type;\n-import java.util.Objects;\n-\n-import static org.apache.dubbo.common.utils.ReflectUtils.findParameterizedTypes;\n-\n-/**\n- * The {@link Event Dubbo Event} Listener that is based on Java standard {@link java.util.EventListener} interface supports\n- * the generic {@link Event}.\n- * <p>\n- * The {@link #onEvent(Event) handle method} will be notified when the matched-type {@link Event Dubbo Event} is\n- * published, whose priority could be changed by {@link #getPriority()} method.\n- *\n- * @param <E> the concrete class of {@link Event Dubbo Event}\n- * @see Event \n- * @see java.util.EventListener\n- * @since 2.7.5\n- */\n-@SPI\n-@FunctionalInterface\n-public interface EventListener<E extends Event> extends java.util.EventListener, Prioritized {\n-\n-    /**\n-     * Handle a {@link Event Dubbo Event} when it's be published\n-     *\n-     * @param event a {@link Event Dubbo Event}\n-     */\n-    void onEvent(E event);\n-\n-    /**\n-     * The priority of {@link EventListener current listener}.\n-     *\n-     * @return the value is more greater, the priority is more lower.\n-     * {@link Integer#MIN_VALUE} indicates the highest priority. The default value is {@link Integer#MAX_VALUE}.\n-     * The comparison rule , refer to {@link #compareTo}.\n-     */\n-    default int getPriority() {\n-        return NORMAL_PRIORITY;\n-    }\n-\n-    /**\n-     * Find the {@link Class type} {@link Event Dubbo event} from the specified {@link EventListener Dubbo event listener}\n-     *\n-     * @param listener the {@link Class class} of {@link EventListener Dubbo event listener}\n-     * @return <code>null</code> if not found\n-     */\n-    static Class<? extends Event> findEventType(EventListener<?> listener) {\n-        return findEventType(listener.getClass());\n-    }\n-\n-    /**\n-     * Find the {@link Class type} {@link Event Dubbo event} from the specified {@link EventListener Dubbo event listener}\n-     *\n-     * @param listenerClass the {@link Class class} of {@link EventListener Dubbo event listener}\n-     * @return <code>null</code> if not found\n-     */\n-    static Class<? extends Event> findEventType(Class<?> listenerClass) {\n-        Class<? extends Event> eventType = null;\n-\n-        if (listenerClass != null && EventListener.class.isAssignableFrom(listenerClass)) {\n-            eventType = findParameterizedTypes(listenerClass)\n-                    .stream()\n-                    .map(EventListener::findEventType)\n-                    .filter(Objects::nonNull)\n-                    .findAny()\n-                    .orElse((Class) findEventType(listenerClass.getSuperclass()));\n-        }\n-\n-        return eventType;\n-    }\n-\n-    /**\n-     * Find the type {@link Event Dubbo event} from the specified {@link ParameterizedType} presents\n-     * a class of {@link EventListener Dubbo event listener}\n-     *\n-     * @param parameterizedType the {@link ParameterizedType} presents a class of {@link EventListener Dubbo event listener}\n-     * @return <code>null</code> if not found\n-     */\n-    static Class<? extends Event> findEventType(ParameterizedType parameterizedType) {\n-        Class<? extends Event> eventType = null;\n-\n-        Type rawType = parameterizedType.getRawType();\n-        if ((rawType instanceof Class) && EventListener.class.isAssignableFrom((Class) rawType)) {\n-            Type[] typeArguments = parameterizedType.getActualTypeArguments();\n-            for (Type typeArgument : typeArguments) {\n-                if (typeArgument instanceof Class) {\n-                    Class argumentClass = (Class) typeArgument;\n-                    if (Event.class.isAssignableFrom(argumentClass)) {\n-                        eventType = argumentClass;\n-                        break;\n-                    }\n-                }\n-            }\n-        }\n-\n-        return eventType;\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.event;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.common.lang.Prioritized;\r\n+\r\n+import java.lang.reflect.ParameterizedType;\r\n+import java.lang.reflect.Type;\r\n+import java.util.Objects;\r\n+\r\n+import static org.apache.dubbo.common.utils.ReflectUtils.findParameterizedTypes;\r\n+\r\n+/**\r\n+ * The {@link Event Dubbo Event} Listener that is based on Java standard {@link java.util.EventListener} interface supports\r\n+ * the generic {@link Event}.\r\n+ * <p>\r\n+ * The {@link #onEvent(Event) handle method} will be notified when the matched-type {@link Event Dubbo Event} is\r\n+ * published, whose priority could be changed by {@link #getPriority()} method.\r\n+ *\r\n+ * @param <E> the concrete class of {@link Event Dubbo Event}\r\n+ * @see Event \r\n+ * @see java.util.EventListener\r\n+ * @since 2.7.5\r\n+ */\r\n+@SPI\r\n+@FunctionalInterface\r\n+public interface EventListener<E extends Event> extends java.util.EventListener, Prioritized {\r\n+\r\n+    /**\r\n+     * Handle a {@link Event Dubbo Event} when it's be published\r\n+     *\r\n+     * @param event a {@link Event Dubbo Event}\r\n+     */\r\n+    void onEvent(E event);\r\n+\r\n+    /**\r\n+     * The priority of {@link EventListener current listener}.\r\n+     *\r\n+     * @return the value is more greater, the priority is more lower.\r\n+     * {@link Integer#MIN_VALUE} indicates the highest priority. The default value is {@link Integer#MAX_VALUE}.\r\n+     * The comparison rule , refer to {@link #compareTo}.\r\n+     */\r\n+    default int getPriority() {\r\n+        return NORMAL_PRIORITY;\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the {@link Class type} {@link Event Dubbo event} from the specified {@link EventListener Dubbo event listener}\r\n+     *\r\n+     * @param listener the {@link Class class} of {@link EventListener Dubbo event listener}\r\n+     * @return <code>null</code> if not found\r\n+     */\r\n+    static Class<? extends Event> findEventType(EventListener<?> listener) {\r\n+        return findEventType(listener.getClass());\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the {@link Class type} {@link Event Dubbo event} from the specified {@link EventListener Dubbo event listener}\r\n+     *\r\n+     * @param listenerClass the {@link Class class} of {@link EventListener Dubbo event listener}\r\n+     * @return <code>null</code> if not found\r\n+     */\r\n+    static Class<? extends Event> findEventType(Class<?> listenerClass) {\r\n+        Class<? extends Event> eventType = null;\r\n+\r\n+        if (listenerClass != null && EventListener.class.isAssignableFrom(listenerClass)) {\r\n+            eventType = findParameterizedTypes(listenerClass)\r\n+                    .stream()\r\n+                    .map(EventListener::findEventType)\r\n+                    .filter(Objects::nonNull)\r\n+                    .findAny()\r\n+                    .orElse((Class) findEventType(listenerClass.getSuperclass()));\r\n+        }\r\n+\r\n+        return eventType;\r\n+    }\r\n+\r\n+    /**\r\n+     * Find the type {@link Event Dubbo event} from the specified {@link ParameterizedType} presents\r\n+     * a class of {@link EventListener Dubbo event listener}\r\n+     *\r\n+     * @param parameterizedType the {@link ParameterizedType} presents a class of {@link EventListener Dubbo event listener}\r\n+     * @return <code>null</code> if not found\r\n+     */\r\n+    static Class<? extends Event> findEventType(ParameterizedType parameterizedType) {\r\n+        Class<? extends Event> eventType = null;\r\n+\r\n+        Type rawType = parameterizedType.getRawType();\r\n+        if ((rawType instanceof Class) && EventListener.class.isAssignableFrom((Class) rawType)) {\r\n+            Type[] typeArguments = parameterizedType.getActualTypeArguments();\r\n+            for (Type typeArgument : typeArguments) {\r\n+                if (typeArgument instanceof Class) {\r\n+                    Class argumentClass = (Class) typeArgument;\r\n+                    if (Event.class.isAssignableFrom(argumentClass)) {\r\n+                        eventType = argumentClass;\r\n+                        break;\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        return eventType;\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/event/GenericEvent.java", "source2": "org/apache/dubbo/event/GenericEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,34 +1,34 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.event;\n-\n-/**\n- * Generic {@link Event Dubbo event}\n- *\n- * @param <S> the type of event source\n- * @since 2.7.5\n- */\n-public class GenericEvent<S> extends Event {\n-\n-    public GenericEvent(S source) {\n-        super(source);\n-    }\n-\n-    public S getSource() {\n-        return (S) super.getSource();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.event;\r\n+\r\n+/**\r\n+ * Generic {@link Event Dubbo event}\r\n+ *\r\n+ * @param <S> the type of event source\r\n+ * @since 2.7.5\r\n+ */\r\n+public class GenericEvent<S> extends Event {\r\n+\r\n+    public GenericEvent(S source) {\r\n+        super(source);\r\n+    }\r\n+\r\n+    public S getSource() {\r\n+        return (S) super.getSource();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/event/GenericEventListener.java", "source2": "org/apache/dubbo/event/GenericEventListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,130 +1,130 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.event;\n-\n-import org.apache.dubbo.common.function.ThrowableConsumer;\n-\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Modifier;\n-import java.util.HashMap;\n-import java.util.LinkedHashSet;\n-import java.util.Map;\n-import java.util.Set;\n-\n-import static java.util.Collections.emptySet;\n-import static java.util.stream.Stream.of;\n-import static org.apache.dubbo.common.function.ThrowableFunction.execute;\n-\n-/**\n- * An abstract class of {@link EventListener} for Generic events, the sub class could add more {@link Event event}\n- * handle methods, rather than only binds the {@link EventListener#onEvent(Event)} method that is declared to be\n- * <code>final</code> the implementation can't override. It's notable that all {@link Event event} handle methods must\n- * meet following conditions:\n- * <ul>\n- * <li>not {@link #onEvent(Event)} method</li>\n- * <li><code>public</code> accessibility</li>\n- * <li><code>void</code> return type</li>\n- * <li>no {@link Exception exception} declaration</li>\n- * <li>only one {@link Event} type argument</li>\n- * </ul>\n- *\n- * @see Event\n- * @see EventListener\n- * @since 2.7.5\n- */\n-public abstract class GenericEventListener implements EventListener<Event> {\n-\n-    private final Method onEventMethod;\n-\n-    private final Map<Class<?>, Set<Method>> handleEventMethods;\n-\n-    protected GenericEventListener() {\n-        this.onEventMethod = findOnEventMethod();\n-        this.handleEventMethods = findHandleEventMethods();\n-    }\n-\n-    private Method findOnEventMethod() {\n-        return execute(getClass(), listenerClass -> listenerClass.getMethod(\"onEvent\", Event.class));\n-    }\n-\n-    private Map<Class<?>, Set<Method>> findHandleEventMethods() {\n-        // Event class for key, the eventMethods' Set as value\n-        Map<Class<?>, Set<Method>> eventMethods = new HashMap<>();\n-        of(getClass().getMethods())\n-                .filter(this::isHandleEventMethod)\n-                .forEach(method -> {\n-                    Class<?> paramType = method.getParameterTypes()[0];\n-                    Set<Method> methods = eventMethods.computeIfAbsent(paramType, key -> new LinkedHashSet<>());\n-                    methods.add(method);\n-                });\n-        return eventMethods;\n-    }\n-\n-    public final void onEvent(Event event) {\n-        Class<?> eventClass = event.getClass();\n-        handleEventMethods.getOrDefault(eventClass, emptySet()).forEach(method -> {\n-            ThrowableConsumer.execute(method, m -> {\n-                m.invoke(this, event);\n-            });\n-        });\n-    }\n-\n-    /**\n-     * The {@link Event event} handle methods must meet following conditions:\n-     * <ul>\n-     * <li>not {@link #onEvent(Event)} method</li>\n-     * <li><code>public</code> accessibility</li>\n-     * <li><code>void</code> return type</li>\n-     * <li>no {@link Exception exception} declaration</li>\n-     * <li>only one {@link Event} type argument</li>\n-     * </ul>\n-     *\n-     * @param method\n-     * @return\n-     */\n-    private boolean isHandleEventMethod(Method method) {\n-\n-        if (onEventMethod.equals(method)) { // not {@link #onEvent(Event)} method\n-            return false;\n-        }\n-\n-        if (!Modifier.isPublic(method.getModifiers())) { // not public\n-            return false;\n-        }\n-\n-        if (!void.class.equals(method.getReturnType())) { // void return type\n-            return false;\n-        }\n-\n-        Class[] exceptionTypes = method.getExceptionTypes();\n-\n-        if (exceptionTypes.length > 0) { // no exception declaration\n-            return false;\n-        }\n-\n-        Class[] paramTypes = method.getParameterTypes();\n-        if (paramTypes.length != 1) { // not only one argument\n-            return false;\n-        }\n-\n-        if (!Event.class.isAssignableFrom(paramTypes[0])) { // not Event type argument\n-            return false;\n-        }\n-\n-        return true;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.event;\r\n+\r\n+import org.apache.dubbo.common.function.ThrowableConsumer;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Modifier;\r\n+import java.util.HashMap;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+\r\n+import static java.util.Collections.emptySet;\r\n+import static java.util.stream.Stream.of;\r\n+import static org.apache.dubbo.common.function.ThrowableFunction.execute;\r\n+\r\n+/**\r\n+ * An abstract class of {@link EventListener} for Generic events, the sub class could add more {@link Event event}\r\n+ * handle methods, rather than only binds the {@link EventListener#onEvent(Event)} method that is declared to be\r\n+ * <code>final</code> the implementation can't override. It's notable that all {@link Event event} handle methods must\r\n+ * meet following conditions:\r\n+ * <ul>\r\n+ * <li>not {@link #onEvent(Event)} method</li>\r\n+ * <li><code>public</code> accessibility</li>\r\n+ * <li><code>void</code> return type</li>\r\n+ * <li>no {@link Exception exception} declaration</li>\r\n+ * <li>only one {@link Event} type argument</li>\r\n+ * </ul>\r\n+ *\r\n+ * @see Event\r\n+ * @see EventListener\r\n+ * @since 2.7.5\r\n+ */\r\n+public abstract class GenericEventListener implements EventListener<Event> {\r\n+\r\n+    private final Method onEventMethod;\r\n+\r\n+    private final Map<Class<?>, Set<Method>> handleEventMethods;\r\n+\r\n+    protected GenericEventListener() {\r\n+        this.onEventMethod = findOnEventMethod();\r\n+        this.handleEventMethods = findHandleEventMethods();\r\n+    }\r\n+\r\n+    private Method findOnEventMethod() {\r\n+        return execute(getClass(), listenerClass -> listenerClass.getMethod(\"onEvent\", Event.class));\r\n+    }\r\n+\r\n+    private Map<Class<?>, Set<Method>> findHandleEventMethods() {\r\n+        // Event class for key, the eventMethods' Set as value\r\n+        Map<Class<?>, Set<Method>> eventMethods = new HashMap<>();\r\n+        of(getClass().getMethods())\r\n+                .filter(this::isHandleEventMethod)\r\n+                .forEach(method -> {\r\n+                    Class<?> paramType = method.getParameterTypes()[0];\r\n+                    Set<Method> methods = eventMethods.computeIfAbsent(paramType, key -> new LinkedHashSet<>());\r\n+                    methods.add(method);\r\n+                });\r\n+        return eventMethods;\r\n+    }\r\n+\r\n+    public final void onEvent(Event event) {\r\n+        Class<?> eventClass = event.getClass();\r\n+        handleEventMethods.getOrDefault(eventClass, emptySet()).forEach(method -> {\r\n+            ThrowableConsumer.execute(method, m -> {\r\n+                m.invoke(this, event);\r\n+            });\r\n+        });\r\n+    }\r\n+\r\n+    /**\r\n+     * The {@link Event event} handle methods must meet following conditions:\r\n+     * <ul>\r\n+     * <li>not {@link #onEvent(Event)} method</li>\r\n+     * <li><code>public</code> accessibility</li>\r\n+     * <li><code>void</code> return type</li>\r\n+     * <li>no {@link Exception exception} declaration</li>\r\n+     * <li>only one {@link Event} type argument</li>\r\n+     * </ul>\r\n+     *\r\n+     * @param method\r\n+     * @return\r\n+     */\r\n+    private boolean isHandleEventMethod(Method method) {\r\n+\r\n+        if (onEventMethod.equals(method)) { // not {@link #onEvent(Event)} method\r\n+            return false;\r\n+        }\r\n+\r\n+        if (!Modifier.isPublic(method.getModifiers())) { // not public\r\n+            return false;\r\n+        }\r\n+\r\n+        if (!void.class.equals(method.getReturnType())) { // void return type\r\n+            return false;\r\n+        }\r\n+\r\n+        Class[] exceptionTypes = method.getExceptionTypes();\r\n+\r\n+        if (exceptionTypes.length > 0) { // no exception declaration\r\n+            return false;\r\n+        }\r\n+\r\n+        Class[] paramTypes = method.getParameterTypes();\r\n+        if (paramTypes.length != 1) { // not only one argument\r\n+            return false;\r\n+        }\r\n+\r\n+        if (!Event.class.isAssignableFrom(paramTypes[0])) { // not Event type argument\r\n+            return false;\r\n+        }\r\n+\r\n+        return true;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/event/Listenable.java", "source2": "org/apache/dubbo/event/Listenable.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,131 +1,131 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.event;\n-\n-import java.lang.reflect.Modifier;\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.List;\n-\n-import static java.util.stream.StreamSupport.stream;\n-\n-/**\n- * Dubbo Event Listenable\n- *\n- * @see EventDispatcher\n- * @since 2.7.5\n- */\n-public interface Listenable<E extends EventListener<?>> {\n-\n-    /**\n-     * Add a {@link EventListener Dubbo event listener}\n-     *\n-     * @param listener a {@link EventListener Dubbo event listener}\n-     *                 If current {@link EventListener} is existed, return <code>false</code>\n-     * @throws NullPointerException     if <code>listener</code> argument is <code>null</code>\n-     * @throws IllegalArgumentException if <code>listener</code> argument is not concrete instance\n-     */\n-    void addEventListener(E listener) throws NullPointerException, IllegalArgumentException;\n-\n-    /**\n-     * Add one or more {@link EventListener Dubbo event listeners}\n-     *\n-     * @param listener a {@link EventListener Dubbo event listener}\n-     * @param others   an optional {@link EventListener Dubbo event listeners}\n-     * @throws NullPointerException     if one of arguments is <code>null</code>\n-     * @throws IllegalArgumentException if one of arguments argument is not concrete instance\n-     */\n-    default void addEventListeners(E listener, E... others) throws NullPointerException,\n-            IllegalArgumentException {\n-        List<E> listeners = new ArrayList<>(1 + others.length);\n-        listeners.add(listener);\n-        listeners.addAll(Arrays.asList(others));\n-        addEventListeners(listeners);\n-    }\n-\n-    /**\n-     * Add multiple {@link EventListener Dubbo event listeners}\n-     *\n-     * @param listeners the {@link EventListener Dubbo event listeners}\n-     * @throws NullPointerException     if <code>listeners</code> argument is <code>null</code>\n-     * @throws IllegalArgumentException if any element of <code>listeners</code> is not concrete instance\n-     */\n-    default void addEventListeners(Iterable<E> listeners) throws NullPointerException, IllegalArgumentException {\n-        stream(listeners.spliterator(), false).forEach(this::addEventListener);\n-    }\n-\n-    /**\n-     * Remove a {@link EventListener Dubbo event listener}\n-     *\n-     * @param listener a {@link EventListener Dubbo event listener}\n-     * @return If remove successfully, return <code>true</code>.\n-     * If current {@link EventListener} is existed, return <code>false</code>\n-     * @throws NullPointerException if <code>listener</code> argument is <code>null</code>\n-     */\n-    void removeEventListener(E listener) throws NullPointerException, IllegalArgumentException;\n-\n-    /**\n-     * Remove a {@link EventListener Dubbo event listener}\n-     *\n-     * @param listeners the {@link EventListener Dubbo event listeners}\n-     * @return If remove successfully, return <code>true</code>.\n-     * If current {@link EventListener} is existed, return <code>false</code>\n-     * @throws NullPointerException     if <code>listener</code> argument is <code>null</code>\n-     * @throws IllegalArgumentException if any element of <code>listeners</code> is not concrete instance\n-     */\n-    default void removeEventListeners(Iterable<E> listeners) throws NullPointerException, IllegalArgumentException {\n-        stream(listeners.spliterator(), false).forEach(this::removeEventListener);\n-    }\n-\n-    /**\n-     * Remove all {@link EventListener Dubbo event listeners}\n-     *\n-     * @return a amount of removed listeners\n-     */\n-    default void removeAllEventListeners() {\n-        removeEventListeners(getAllEventListeners());\n-    }\n-\n-    /**\n-     * Get all registered {@link EventListener Dubbo event listeners}\n-     *\n-     * @return non-null read-only ordered {@link EventListener Dubbo event listeners}\n-     * @see EventListener#getPriority()\n-     */\n-    List<E> getAllEventListeners();\n-\n-\n-    /**\n-     * Assets the listener is valid or not\n-     *\n-     * @param listener the instance of {@link EventListener}\n-     * @throws NullPointerException\n-     */\n-    static void assertListener(EventListener<?> listener) throws NullPointerException {\n-        if (listener == null) {\n-            throw new NullPointerException(\"The listener must not be null.\");\n-        }\n-\n-        Class<?> listenerClass = listener.getClass();\n-\n-        int modifiers = listenerClass.getModifiers();\n-\n-        if (Modifier.isAbstract(modifiers) || Modifier.isInterface(modifiers)) {\n-            throw new IllegalArgumentException(\"The listener must be concrete class\");\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.event;\r\n+\r\n+import java.lang.reflect.Modifier;\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.List;\r\n+\r\n+import static java.util.stream.StreamSupport.stream;\r\n+\r\n+/**\r\n+ * Dubbo Event Listenable\r\n+ *\r\n+ * @see EventDispatcher\r\n+ * @since 2.7.5\r\n+ */\r\n+public interface Listenable<E extends EventListener<?>> {\r\n+\r\n+    /**\r\n+     * Add a {@link EventListener Dubbo event listener}\r\n+     *\r\n+     * @param listener a {@link EventListener Dubbo event listener}\r\n+     *                 If current {@link EventListener} is existed, return <code>false</code>\r\n+     * @throws NullPointerException     if <code>listener</code> argument is <code>null</code>\r\n+     * @throws IllegalArgumentException if <code>listener</code> argument is not concrete instance\r\n+     */\r\n+    void addEventListener(E listener) throws NullPointerException, IllegalArgumentException;\r\n+\r\n+    /**\r\n+     * Add one or more {@link EventListener Dubbo event listeners}\r\n+     *\r\n+     * @param listener a {@link EventListener Dubbo event listener}\r\n+     * @param others   an optional {@link EventListener Dubbo event listeners}\r\n+     * @throws NullPointerException     if one of arguments is <code>null</code>\r\n+     * @throws IllegalArgumentException if one of arguments argument is not concrete instance\r\n+     */\r\n+    default void addEventListeners(E listener, E... others) throws NullPointerException,\r\n+            IllegalArgumentException {\r\n+        List<E> listeners = new ArrayList<>(1 + others.length);\r\n+        listeners.add(listener);\r\n+        listeners.addAll(Arrays.asList(others));\r\n+        addEventListeners(listeners);\r\n+    }\r\n+\r\n+    /**\r\n+     * Add multiple {@link EventListener Dubbo event listeners}\r\n+     *\r\n+     * @param listeners the {@link EventListener Dubbo event listeners}\r\n+     * @throws NullPointerException     if <code>listeners</code> argument is <code>null</code>\r\n+     * @throws IllegalArgumentException if any element of <code>listeners</code> is not concrete instance\r\n+     */\r\n+    default void addEventListeners(Iterable<E> listeners) throws NullPointerException, IllegalArgumentException {\r\n+        stream(listeners.spliterator(), false).forEach(this::addEventListener);\r\n+    }\r\n+\r\n+    /**\r\n+     * Remove a {@link EventListener Dubbo event listener}\r\n+     *\r\n+     * @param listener a {@link EventListener Dubbo event listener}\r\n+     * @return If remove successfully, return <code>true</code>.\r\n+     * If current {@link EventListener} is existed, return <code>false</code>\r\n+     * @throws NullPointerException if <code>listener</code> argument is <code>null</code>\r\n+     */\r\n+    void removeEventListener(E listener) throws NullPointerException, IllegalArgumentException;\r\n+\r\n+    /**\r\n+     * Remove a {@link EventListener Dubbo event listener}\r\n+     *\r\n+     * @param listeners the {@link EventListener Dubbo event listeners}\r\n+     * @return If remove successfully, return <code>true</code>.\r\n+     * If current {@link EventListener} is existed, return <code>false</code>\r\n+     * @throws NullPointerException     if <code>listener</code> argument is <code>null</code>\r\n+     * @throws IllegalArgumentException if any element of <code>listeners</code> is not concrete instance\r\n+     */\r\n+    default void removeEventListeners(Iterable<E> listeners) throws NullPointerException, IllegalArgumentException {\r\n+        stream(listeners.spliterator(), false).forEach(this::removeEventListener);\r\n+    }\r\n+\r\n+    /**\r\n+     * Remove all {@link EventListener Dubbo event listeners}\r\n+     *\r\n+     * @return a amount of removed listeners\r\n+     */\r\n+    default void removeAllEventListeners() {\r\n+        removeEventListeners(getAllEventListeners());\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all registered {@link EventListener Dubbo event listeners}\r\n+     *\r\n+     * @return non-null read-only ordered {@link EventListener Dubbo event listeners}\r\n+     * @see EventListener#getPriority()\r\n+     */\r\n+    List<E> getAllEventListeners();\r\n+\r\n+\r\n+    /**\r\n+     * Assets the listener is valid or not\r\n+     *\r\n+     * @param listener the instance of {@link EventListener}\r\n+     * @throws NullPointerException\r\n+     */\r\n+    static void assertListener(EventListener<?> listener) throws NullPointerException {\r\n+        if (listener == null) {\r\n+            throw new NullPointerException(\"The listener must not be null.\");\r\n+        }\r\n+\r\n+        Class<?> listenerClass = listener.getClass();\r\n+\r\n+        int modifiers = listenerClass.getModifiers();\r\n+\r\n+        if (Modifier.isAbstract(modifiers) || Modifier.isInterface(modifiers)) {\r\n+            throw new IllegalArgumentException(\"The listener must be concrete class\");\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/event/ParallelEventDispatcher.java", "source2": "org/apache/dubbo/event/ParallelEventDispatcher.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,32 +1,32 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.event;\n-\n-import java.util.concurrent.ForkJoinPool;\n-\n-/**\n- * Parallel {@link EventDispatcher} implementation uses {@link ForkJoinPool#commonPool() JDK common thread pool}\n- *\n- * @see ForkJoinPool#commonPool()\n- * @since 2.7.5\n- */\n-public class ParallelEventDispatcher extends AbstractEventDispatcher {\n-\n-    public ParallelEventDispatcher() {\n-        super(ForkJoinPool.commonPool());\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.event;\r\n+\r\n+import java.util.concurrent.ForkJoinPool;\r\n+\r\n+/**\r\n+ * Parallel {@link EventDispatcher} implementation uses {@link ForkJoinPool#commonPool() JDK common thread pool}\r\n+ *\r\n+ * @see ForkJoinPool#commonPool()\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ParallelEventDispatcher extends AbstractEventDispatcher {\r\n+\r\n+    public ParallelEventDispatcher() {\r\n+        super(ForkJoinPool.commonPool());\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/model/ApplicationInitListener.java", "source2": "org/apache/dubbo/rpc/model/ApplicationInitListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,27 +1,27 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.model;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-@SPI\n-public interface ApplicationInitListener {\n-    /**\n-     * init the application\n-     */\n-    void init();\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.model;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+@SPI\r\n+public interface ApplicationInitListener {\r\n+    /**\r\n+     * init the application\r\n+     */\r\n+    void init();\r\n }\n"}, {"source1": "org/apache/dubbo/rpc/model/ApplicationModel.java", "source2": "org/apache/dubbo/rpc/model/ApplicationModel.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,128 +1,128 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.model;\n-\n-import org.apache.dubbo.common.config.Environment;\n-import org.apache.dubbo.common.context.FrameworkExt;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.config.ApplicationConfig;\n-import org.apache.dubbo.config.context.ConfigManager;\n-\n-import java.util.Collection;\n-import java.util.Set;\n-import java.util.concurrent.atomic.AtomicBoolean;\n-\n-/**\n- * {@link ExtensionLoader}, {@code DubboBootstrap} and this class are at present designed to be\n- * singleton or static (by itself totally static or uses some static fields). So the instances\n- * returned from them are of process scope. If you want to support multiple dubbo servers in one\n- * single process, you may need to refactor those three classes.\n- *\n- * Represent a application which is using Dubbo and store basic metadata info for using\n- * during the processing of RPC invoking.\n- * <p>\n- * ApplicationModel includes many ProviderModel which is about published services\n- * and many Consumer Model which is about subscribed services.\n- * <p>\n- *\n- */\n-\n-public class ApplicationModel {\n-    protected static final Logger LOGGER = LoggerFactory.getLogger(ApplicationModel.class);\n-    public static final String NAME = \"application\";\n-\n-    private static AtomicBoolean INIT_FLAG = new AtomicBoolean(false);\n-\n-    public static void init() {\n-        if (INIT_FLAG.compareAndSet(false, true)) {\n-            ExtensionLoader<ApplicationInitListener> extensionLoader = ExtensionLoader.getExtensionLoader(ApplicationInitListener.class);\n-            Set<String> listenerNames = extensionLoader.getSupportedExtensions();\n-            for (String listenerName : listenerNames) {\n-                extensionLoader.getExtension(listenerName).init();\n-            }\n-        }\n-    }\n-\n-    public static Collection<ConsumerModel> allConsumerModels() {\n-        return getServiceRepository().getReferredServices();\n-    }\n-\n-    public static Collection<ProviderModel> allProviderModels() {\n-        return getServiceRepository().getExportedServices();\n-    }\n-\n-    public static ProviderModel getProviderModel(String serviceKey) {\n-        return getServiceRepository().lookupExportedService(serviceKey);\n-    }\n-\n-    public static ConsumerModel getConsumerModel(String serviceKey) {\n-        return getServiceRepository().lookupReferredService(serviceKey);\n-    }\n-\n-    private static final ExtensionLoader<FrameworkExt> LOADER = ExtensionLoader.getExtensionLoader(FrameworkExt.class);\n-\n-    public static void initFrameworkExts() {\n-        Set<FrameworkExt> exts = ExtensionLoader.getExtensionLoader(FrameworkExt.class).getSupportedExtensionInstances();\n-        for (FrameworkExt ext : exts) {\n-            ext.initialize();\n-        }\n-    }\n-\n-    public static Environment getEnvironment() {\n-        return (Environment) LOADER.getExtension(Environment.NAME);\n-    }\n-\n-    public static ConfigManager getConfigManager() {\n-        return (ConfigManager) LOADER.getExtension(ConfigManager.NAME);\n-    }\n-\n-    public static ServiceRepository getServiceRepository() {\n-        return (ServiceRepository) LOADER.getExtension(ServiceRepository.NAME);\n-    }\n-\n-    public static ApplicationConfig getApplicationConfig() {\n-        return getConfigManager().getApplicationOrElseThrow();\n-    }\n-\n-    public static String getName() {\n-        return getApplicationConfig().getName();\n-    }\n-\n-    @Deprecated\n-    private static String application;\n-\n-    @Deprecated\n-    public static String getApplication() {\n-        return application == null ? getName() : application;\n-    }\n-\n-    // Currently used by UT.\n-    @Deprecated\n-    public static void setApplication(String application) {\n-        ApplicationModel.application = application;\n-    }\n-\n-    // only for unit test\n-    public static void reset() {\n-        getServiceRepository().destroy();\n-        getConfigManager().destroy();\n-        getEnvironment().destroy();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.model;\r\n+\r\n+import org.apache.dubbo.common.config.Environment;\r\n+import org.apache.dubbo.common.context.FrameworkExt;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.config.ApplicationConfig;\r\n+import org.apache.dubbo.config.context.ConfigManager;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.Set;\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+\r\n+/**\r\n+ * {@link ExtensionLoader}, {@code DubboBootstrap} and this class are at present designed to be\r\n+ * singleton or static (by itself totally static or uses some static fields). So the instances\r\n+ * returned from them are of process scope. If you want to support multiple dubbo servers in one\r\n+ * single process, you may need to refactor those three classes.\r\n+ *\r\n+ * Represent a application which is using Dubbo and store basic metadata info for using\r\n+ * during the processing of RPC invoking.\r\n+ * <p>\r\n+ * ApplicationModel includes many ProviderModel which is about published services\r\n+ * and many Consumer Model which is about subscribed services.\r\n+ * <p>\r\n+ *\r\n+ */\r\n+\r\n+public class ApplicationModel {\r\n+    protected static final Logger LOGGER = LoggerFactory.getLogger(ApplicationModel.class);\r\n+    public static final String NAME = \"application\";\r\n+\r\n+    private static AtomicBoolean INIT_FLAG = new AtomicBoolean(false);\r\n+\r\n+    public static void init() {\r\n+        if (INIT_FLAG.compareAndSet(false, true)) {\r\n+            ExtensionLoader<ApplicationInitListener> extensionLoader = ExtensionLoader.getExtensionLoader(ApplicationInitListener.class);\r\n+            Set<String> listenerNames = extensionLoader.getSupportedExtensions();\r\n+            for (String listenerName : listenerNames) {\r\n+                extensionLoader.getExtension(listenerName).init();\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public static Collection<ConsumerModel> allConsumerModels() {\r\n+        return getServiceRepository().getReferredServices();\r\n+    }\r\n+\r\n+    public static Collection<ProviderModel> allProviderModels() {\r\n+        return getServiceRepository().getExportedServices();\r\n+    }\r\n+\r\n+    public static ProviderModel getProviderModel(String serviceKey) {\r\n+        return getServiceRepository().lookupExportedService(serviceKey);\r\n+    }\r\n+\r\n+    public static ConsumerModel getConsumerModel(String serviceKey) {\r\n+        return getServiceRepository().lookupReferredService(serviceKey);\r\n+    }\r\n+\r\n+    private static final ExtensionLoader<FrameworkExt> LOADER = ExtensionLoader.getExtensionLoader(FrameworkExt.class);\r\n+\r\n+    public static void initFrameworkExts() {\r\n+        Set<FrameworkExt> exts = ExtensionLoader.getExtensionLoader(FrameworkExt.class).getSupportedExtensionInstances();\r\n+        for (FrameworkExt ext : exts) {\r\n+            ext.initialize();\r\n+        }\r\n+    }\r\n+\r\n+    public static Environment getEnvironment() {\r\n+        return (Environment) LOADER.getExtension(Environment.NAME);\r\n+    }\r\n+\r\n+    public static ConfigManager getConfigManager() {\r\n+        return (ConfigManager) LOADER.getExtension(ConfigManager.NAME);\r\n+    }\r\n+\r\n+    public static ServiceRepository getServiceRepository() {\r\n+        return (ServiceRepository) LOADER.getExtension(ServiceRepository.NAME);\r\n+    }\r\n+\r\n+    public static ApplicationConfig getApplicationConfig() {\r\n+        return getConfigManager().getApplicationOrElseThrow();\r\n+    }\r\n+\r\n+    public static String getName() {\r\n+        return getApplicationConfig().getName();\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    private static String application;\r\n+\r\n+    @Deprecated\r\n+    public static String getApplication() {\r\n+        return application == null ? getName() : application;\r\n+    }\r\n+\r\n+    // Currently used by UT.\r\n+    @Deprecated\r\n+    public static void setApplication(String application) {\r\n+        ApplicationModel.application = application;\r\n+    }\r\n+\r\n+    // only for unit test\r\n+    public static void reset() {\r\n+        getServiceRepository().destroy();\r\n+        getConfigManager().destroy();\r\n+        getEnvironment().destroy();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/model/AsyncMethodInfo.java", "source2": "org/apache/dubbo/rpc/model/AsyncMethodInfo.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,87 +1,87 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.model;\n-\n-import java.lang.reflect.Method;\n-\n-public class AsyncMethodInfo {\n-    // callback instance when async-call is invoked\n-    private Object oninvokeInstance;\n-\n-    // callback method when async-call is invoked\n-    private Method oninvokeMethod;\n-\n-    // callback instance when async-call is returned\n-    private Object onreturnInstance;\n-\n-    // callback method when async-call is returned\n-    private Method onreturnMethod;\n-\n-    // callback instance when async-call has exception thrown\n-    private Object onthrowInstance;\n-\n-    // callback method when async-call has exception thrown\n-    private Method onthrowMethod;\n-\n-    public Object getOninvokeInstance() {\n-        return oninvokeInstance;\n-    }\n-\n-    public void setOninvokeInstance(Object oninvokeInstance) {\n-        this.oninvokeInstance = oninvokeInstance;\n-    }\n-\n-    public Method getOninvokeMethod() {\n-        return oninvokeMethod;\n-    }\n-\n-    public void setOninvokeMethod(Method oninvokeMethod) {\n-        this.oninvokeMethod = oninvokeMethod;\n-    }\n-\n-    public Object getOnreturnInstance() {\n-        return onreturnInstance;\n-    }\n-\n-    public void setOnreturnInstance(Object onreturnInstance) {\n-        this.onreturnInstance = onreturnInstance;\n-    }\n-\n-    public Method getOnreturnMethod() {\n-        return onreturnMethod;\n-    }\n-\n-    public void setOnreturnMethod(Method onreturnMethod) {\n-        this.onreturnMethod = onreturnMethod;\n-    }\n-\n-    public Object getOnthrowInstance() {\n-        return onthrowInstance;\n-    }\n-\n-    public void setOnthrowInstance(Object onthrowInstance) {\n-        this.onthrowInstance = onthrowInstance;\n-    }\n-\n-    public Method getOnthrowMethod() {\n-        return onthrowMethod;\n-    }\n-\n-    public void setOnthrowMethod(Method onthrowMethod) {\n-        this.onthrowMethod = onthrowMethod;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.model;\r\n+\r\n+import java.lang.reflect.Method;\r\n+\r\n+public class AsyncMethodInfo {\r\n+    // callback instance when async-call is invoked\r\n+    private Object oninvokeInstance;\r\n+\r\n+    // callback method when async-call is invoked\r\n+    private Method oninvokeMethod;\r\n+\r\n+    // callback instance when async-call is returned\r\n+    private Object onreturnInstance;\r\n+\r\n+    // callback method when async-call is returned\r\n+    private Method onreturnMethod;\r\n+\r\n+    // callback instance when async-call has exception thrown\r\n+    private Object onthrowInstance;\r\n+\r\n+    // callback method when async-call has exception thrown\r\n+    private Method onthrowMethod;\r\n+\r\n+    public Object getOninvokeInstance() {\r\n+        return oninvokeInstance;\r\n+    }\r\n+\r\n+    public void setOninvokeInstance(Object oninvokeInstance) {\r\n+        this.oninvokeInstance = oninvokeInstance;\r\n+    }\r\n+\r\n+    public Method getOninvokeMethod() {\r\n+        return oninvokeMethod;\r\n+    }\r\n+\r\n+    public void setOninvokeMethod(Method oninvokeMethod) {\r\n+        this.oninvokeMethod = oninvokeMethod;\r\n+    }\r\n+\r\n+    public Object getOnreturnInstance() {\r\n+        return onreturnInstance;\r\n+    }\r\n+\r\n+    public void setOnreturnInstance(Object onreturnInstance) {\r\n+        this.onreturnInstance = onreturnInstance;\r\n+    }\r\n+\r\n+    public Method getOnreturnMethod() {\r\n+        return onreturnMethod;\r\n+    }\r\n+\r\n+    public void setOnreturnMethod(Method onreturnMethod) {\r\n+        this.onreturnMethod = onreturnMethod;\r\n+    }\r\n+\r\n+    public Object getOnthrowInstance() {\r\n+        return onthrowInstance;\r\n+    }\r\n+\r\n+    public void setOnthrowInstance(Object onthrowInstance) {\r\n+        this.onthrowInstance = onthrowInstance;\r\n+    }\r\n+\r\n+    public Method getOnthrowMethod() {\r\n+        return onthrowMethod;\r\n+    }\r\n+\r\n+    public void setOnthrowMethod(Method onthrowMethod) {\r\n+        this.onthrowMethod = onthrowMethod;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/model/BuiltinServiceDetector.java", "source2": "org/apache/dubbo/rpc/model/BuiltinServiceDetector.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,26 +1,26 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.model;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-@SPI\n-public interface BuiltinServiceDetector {\n-\n-    Class<?> getService();\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.model;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+@SPI\r\n+public interface BuiltinServiceDetector {\r\n+\r\n+    Class<?> getService();\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/model/ConsumerMethodModel.java", "source2": "org/apache/dubbo/rpc/model/ConsumerMethodModel.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,101 +1,101 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.model;\n-\n-import java.lang.reflect.Method;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE;\n-\n-/**\n- * Replaced with {@link MethodDescriptor}\n- */\n-@Deprecated\n-public class ConsumerMethodModel {\n-    private final Method method;\n-    //    private final boolean isCallBack;\n-//    private final boolean isFuture;\n-    private final String[] parameterTypes;\n-    private final Class<?>[] parameterClasses;\n-    private final Class<?> returnClass;\n-    private final String methodName;\n-    private final boolean generic;\n-\n-    private final ConcurrentMap<String, Object> attributeMap = new ConcurrentHashMap<>();\n-\n-\n-    public ConsumerMethodModel(Method method) {\n-        this.method = method;\n-        this.parameterClasses = method.getParameterTypes();\n-        this.returnClass = method.getReturnType();\n-        this.parameterTypes = this.createParamSignature(parameterClasses);\n-        this.methodName = method.getName();\n-        this.generic = methodName.equals($INVOKE) && parameterTypes != null && parameterTypes.length == 3;\n-    }\n-\n-    public Method getMethod() {\n-        return method;\n-    }\n-\n-//    public ConcurrentMap<String, Object> getAttributeMap() {\n-//        return attributeMap;\n-//    }\n-\n-    public void addAttribute(String key, Object value) {\n-        this.attributeMap.put(key, value);\n-    }\n-\n-    public Object getAttribute(String key) {\n-        return this.attributeMap.get(key);\n-    }\n-\n-\n-    public Class<?> getReturnClass() {\n-        return returnClass;\n-    }\n-\n-    public String getMethodName() {\n-        return methodName;\n-    }\n-\n-    public String[] getParameterTypes() {\n-        return parameterTypes;\n-    }\n-\n-    private String[] createParamSignature(Class<?>[] args) {\n-        if (args == null || args.length == 0) {\n-            return new String[]{};\n-        }\n-        String[] paramSig = new String[args.length];\n-        for (int x = 0; x < args.length; x++) {\n-            paramSig[x] = args[x].getName();\n-        }\n-        return paramSig;\n-    }\n-\n-\n-    public boolean isGeneric() {\n-        return generic;\n-    }\n-\n-    public Class<?>[] getParameterClasses() {\n-        return parameterClasses;\n-    }\n-\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.model;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE;\r\n+\r\n+/**\r\n+ * Replaced with {@link MethodDescriptor}\r\n+ */\r\n+@Deprecated\r\n+public class ConsumerMethodModel {\r\n+    private final Method method;\r\n+    //    private final boolean isCallBack;\r\n+//    private final boolean isFuture;\r\n+    private final String[] parameterTypes;\r\n+    private final Class<?>[] parameterClasses;\r\n+    private final Class<?> returnClass;\r\n+    private final String methodName;\r\n+    private final boolean generic;\r\n+\r\n+    private final ConcurrentMap<String, Object> attributeMap = new ConcurrentHashMap<>();\r\n+\r\n+\r\n+    public ConsumerMethodModel(Method method) {\r\n+        this.method = method;\r\n+        this.parameterClasses = method.getParameterTypes();\r\n+        this.returnClass = method.getReturnType();\r\n+        this.parameterTypes = this.createParamSignature(parameterClasses);\r\n+        this.methodName = method.getName();\r\n+        this.generic = methodName.equals($INVOKE) && parameterTypes != null && parameterTypes.length == 3;\r\n+    }\r\n+\r\n+    public Method getMethod() {\r\n+        return method;\r\n+    }\r\n+\r\n+//    public ConcurrentMap<String, Object> getAttributeMap() {\r\n+//        return attributeMap;\r\n+//    }\r\n+\r\n+    public void addAttribute(String key, Object value) {\r\n+        this.attributeMap.put(key, value);\r\n+    }\r\n+\r\n+    public Object getAttribute(String key) {\r\n+        return this.attributeMap.get(key);\r\n+    }\r\n+\r\n+\r\n+    public Class<?> getReturnClass() {\r\n+        return returnClass;\r\n+    }\r\n+\r\n+    public String getMethodName() {\r\n+        return methodName;\r\n+    }\r\n+\r\n+    public String[] getParameterTypes() {\r\n+        return parameterTypes;\r\n+    }\r\n+\r\n+    private String[] createParamSignature(Class<?>[] args) {\r\n+        if (args == null || args.length == 0) {\r\n+            return new String[]{};\r\n+        }\r\n+        String[] paramSig = new String[args.length];\r\n+        for (int x = 0; x < args.length; x++) {\r\n+            paramSig[x] = args[x].getName();\r\n+        }\r\n+        return paramSig;\r\n+    }\r\n+\r\n+\r\n+    public boolean isGeneric() {\r\n+        return generic;\r\n+    }\r\n+\r\n+    public Class<?>[] getParameterClasses() {\r\n+        return parameterClasses;\r\n+    }\r\n+\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/model/ConsumerModel.java", "source2": "org/apache/dubbo/rpc/model/ConsumerModel.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,219 +1,219 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.model;\n-\n-import org.apache.dubbo.common.BaseServiceMetadata;\n-import org.apache.dubbo.common.utils.Assert;\n-import org.apache.dubbo.config.ReferenceConfigBase;\n-\n-import java.lang.reflect.Method;\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.HashMap;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Optional;\n-import java.util.Set;\n-import java.util.TreeSet;\n-\n-/**\n- * This model is bound to your reference's configuration, for example, group, version or method level configuration.\n- */\n-public class ConsumerModel {\n-    private String serviceKey;\n-    private final ServiceDescriptor serviceModel;\n-    private final ReferenceConfigBase<?> referenceConfig;\n-    private final Set<String> apps = new TreeSet<>();\n-\n-    private Object proxyObject;\n-\n-    private Map<String, AsyncMethodInfo> methodConfigs = new HashMap<>();\n-\n-    /**\n-     *  This constructor create an instance of ConsumerModel and passed objects should not be null.\n-     *  If service name, service instance, proxy object,methods should not be null. If these are null\n-     *  then this constructor will throw {@link IllegalArgumentException}\n-     * @param serviceKey Name of the service.\n-     * @param proxyObject  Proxy object.\n-     */\n-    public ConsumerModel(String serviceKey\n-            , Object proxyObject\n-            , ServiceDescriptor serviceModel\n-            , ReferenceConfigBase<?> referenceConfig) {\n-\n-        Assert.notEmptyString(serviceKey, \"Service name can't be null or blank\");\n-\n-        this.serviceKey = serviceKey;\n-        this.proxyObject = proxyObject;\n-        this.serviceModel = serviceModel;\n-        this.referenceConfig = referenceConfig;\n-    }\n-\n-    public void init(Map<String, AsyncMethodInfo> attributes) {\n-        if (attributes != null) {\n-            this.methodConfigs = attributes;\n-        }\n-\n-        initMethodModels();\n-    }\n-\n-    /**\n-     * Return the proxy object used by called while creating instance of ConsumerModel\n-     * @return\n-     */\n-    public Object getProxyObject() {\n-        return proxyObject;\n-    }\n-\n-    public void setProxyObject(Object proxyObject) {\n-        this.proxyObject = proxyObject;\n-    }\n-\n-    /**\n-     * Return all method models for the current service\n-     *\n-     * @return method model list\n-     */\n-    public Set<MethodDescriptor> getAllMethods() {\n-        return serviceModel.getAllMethods();\n-    }\n-\n-    public Class<?> getServiceInterfaceClass() {\n-        return serviceModel.getServiceInterfaceClass();\n-    }\n-\n-    public String getServiceKey() {\n-        return serviceKey;\n-    }\n-\n-    public AsyncMethodInfo getMethodConfig(String methodName) {\n-        return methodConfigs.get(methodName);\n-    }\n-\n-    public ServiceDescriptor getServiceModel() {\n-        return serviceModel;\n-    }\n-\n-    public ReferenceConfigBase getReferenceConfig() {\n-        return referenceConfig;\n-    }\n-\n-    public Set<String> getApps() {\n-        return apps;\n-    }\n-\n-    public AsyncMethodInfo getAsyncInfo(String methodName) {\n-        return methodConfigs.get(methodName);\n-    }\n-\n-    /* *************** Start, metadata compatible **************** */\n-\n-    private ServiceMetadata serviceMetadata;\n-    private Map<Method, ConsumerMethodModel> methodModels = new HashMap<>();\n-\n-    public ConsumerModel(String serviceKey\n-            , Object proxyObject\n-            , ServiceDescriptor serviceModel\n-            , ReferenceConfigBase<?> referenceConfig\n-            , ServiceMetadata metadata) {\n-\n-        this(serviceKey, proxyObject, serviceModel, referenceConfig);\n-        this.serviceMetadata = metadata;\n-    }\n-\n-    public void setServiceKey(String serviceKey) {\n-        this.serviceKey = serviceKey;\n-        if (serviceMetadata != null) {\n-            serviceMetadata.setServiceKey(serviceKey);\n-            serviceMetadata.setGroup(BaseServiceMetadata.groupFromServiceKey(serviceKey));\n-        }\n-    }\n-\n-    public void initMethodModels() {\n-        Class[] interfaceList = null;\n-        if (proxyObject == null) {\n-            interfaceList = new Class[]{referenceConfig.getActualInterface()};\n-        } else {\n-            interfaceList = proxyObject.getClass().getInterfaces();\n-        }\n-        for (Class interfaceClass : interfaceList) {\n-            for (Method method : interfaceClass.getMethods()) {\n-                methodModels.put(method, new ConsumerMethodModel(method));\n-            }\n-        }\n-    }\n-\n-    public ClassLoader getClassLoader() {\n-        return serviceMetadata.getServiceType().getClassLoader();\n-    }\n-\n-    /**\n-     * @return serviceMetadata\n-     */\n-    public ServiceMetadata getServiceMetadata() {\n-        return serviceMetadata;\n-    }\n-\n-    /**\n-     * Return method model for the given method on consumer side\n-     *\n-     * @param method method object\n-     * @return method model\n-     */\n-    public ConsumerMethodModel getMethodModel(Method method) {\n-        return methodModels.get(method);\n-    }\n-\n-    /**\n-     * Return method model for the given method on consumer side\n-     *\n-     * @param method method object\n-     * @return method model\n-     */\n-    public ConsumerMethodModel getMethodModel(String method) {\n-        Optional<Map.Entry<Method, ConsumerMethodModel>> consumerMethodModelEntry = methodModels.entrySet().stream().filter(entry -> entry.getKey().getName().equals(method)).findFirst();\n-        return consumerMethodModelEntry.map(Map.Entry::getValue).orElse(null);\n-    }\n-\n-    /**\n-     * @param method   methodName\n-     * @param argsType method arguments type\n-     * @return\n-     */\n-    public ConsumerMethodModel getMethodModel(String method, String[] argsType) {\n-        Optional<ConsumerMethodModel> consumerMethodModel = methodModels.entrySet().stream()\n-                .filter(entry -> entry.getKey().getName().equals(method))\n-                .map(Map.Entry::getValue).filter(methodModel -> Arrays.equals(argsType, methodModel.getParameterTypes()))\n-                .findFirst();\n-        return consumerMethodModel.orElse(null);\n-    }\n-\n-    /**\n-     * Return all method models for the current service\n-     *\n-     * @return method model list\n-     */\n-    public List<ConsumerMethodModel> getAllMethodModels() {\n-        return new ArrayList<>(methodModels.values());\n-    }\n-\n-    public String getServiceName() {\n-        return this.serviceMetadata.getServiceKey();\n-    }\n-\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.model;\r\n+\r\n+import org.apache.dubbo.common.BaseServiceMetadata;\r\n+import org.apache.dubbo.common.utils.Assert;\r\n+import org.apache.dubbo.config.ReferenceConfigBase;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.HashMap;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Optional;\r\n+import java.util.Set;\r\n+import java.util.TreeSet;\r\n+\r\n+/**\r\n+ * This model is bound to your reference's configuration, for example, group, version or method level configuration.\r\n+ */\r\n+public class ConsumerModel {\r\n+    private String serviceKey;\r\n+    private final ServiceDescriptor serviceModel;\r\n+    private final ReferenceConfigBase<?> referenceConfig;\r\n+    private final Set<String> apps = new TreeSet<>();\r\n+\r\n+    private Object proxyObject;\r\n+\r\n+    private Map<String, AsyncMethodInfo> methodConfigs = new HashMap<>();\r\n+\r\n+    /**\r\n+     *  This constructor create an instance of ConsumerModel and passed objects should not be null.\r\n+     *  If service name, service instance, proxy object,methods should not be null. If these are null\r\n+     *  then this constructor will throw {@link IllegalArgumentException}\r\n+     * @param serviceKey Name of the service.\r\n+     * @param proxyObject  Proxy object.\r\n+     */\r\n+    public ConsumerModel(String serviceKey\r\n+            , Object proxyObject\r\n+            , ServiceDescriptor serviceModel\r\n+            , ReferenceConfigBase<?> referenceConfig) {\r\n+\r\n+        Assert.notEmptyString(serviceKey, \"Service name can't be null or blank\");\r\n+\r\n+        this.serviceKey = serviceKey;\r\n+        this.proxyObject = proxyObject;\r\n+        this.serviceModel = serviceModel;\r\n+        this.referenceConfig = referenceConfig;\r\n+    }\r\n+\r\n+    public void init(Map<String, AsyncMethodInfo> attributes) {\r\n+        if (attributes != null) {\r\n+            this.methodConfigs = attributes;\r\n+        }\r\n+\r\n+        initMethodModels();\r\n+    }\r\n+\r\n+    /**\r\n+     * Return the proxy object used by called while creating instance of ConsumerModel\r\n+     * @return\r\n+     */\r\n+    public Object getProxyObject() {\r\n+        return proxyObject;\r\n+    }\r\n+\r\n+    public void setProxyObject(Object proxyObject) {\r\n+        this.proxyObject = proxyObject;\r\n+    }\r\n+\r\n+    /**\r\n+     * Return all method models for the current service\r\n+     *\r\n+     * @return method model list\r\n+     */\r\n+    public Set<MethodDescriptor> getAllMethods() {\r\n+        return serviceModel.getAllMethods();\r\n+    }\r\n+\r\n+    public Class<?> getServiceInterfaceClass() {\r\n+        return serviceModel.getServiceInterfaceClass();\r\n+    }\r\n+\r\n+    public String getServiceKey() {\r\n+        return serviceKey;\r\n+    }\r\n+\r\n+    public AsyncMethodInfo getMethodConfig(String methodName) {\r\n+        return methodConfigs.get(methodName);\r\n+    }\r\n+\r\n+    public ServiceDescriptor getServiceModel() {\r\n+        return serviceModel;\r\n+    }\r\n+\r\n+    public ReferenceConfigBase getReferenceConfig() {\r\n+        return referenceConfig;\r\n+    }\r\n+\r\n+    public Set<String> getApps() {\r\n+        return apps;\r\n+    }\r\n+\r\n+    public AsyncMethodInfo getAsyncInfo(String methodName) {\r\n+        return methodConfigs.get(methodName);\r\n+    }\r\n+\r\n+    /* *************** Start, metadata compatible **************** */\r\n+\r\n+    private ServiceMetadata serviceMetadata;\r\n+    private Map<Method, ConsumerMethodModel> methodModels = new HashMap<>();\r\n+\r\n+    public ConsumerModel(String serviceKey\r\n+            , Object proxyObject\r\n+            , ServiceDescriptor serviceModel\r\n+            , ReferenceConfigBase<?> referenceConfig\r\n+            , ServiceMetadata metadata) {\r\n+\r\n+        this(serviceKey, proxyObject, serviceModel, referenceConfig);\r\n+        this.serviceMetadata = metadata;\r\n+    }\r\n+\r\n+    public void setServiceKey(String serviceKey) {\r\n+        this.serviceKey = serviceKey;\r\n+        if (serviceMetadata != null) {\r\n+            serviceMetadata.setServiceKey(serviceKey);\r\n+            serviceMetadata.setGroup(BaseServiceMetadata.groupFromServiceKey(serviceKey));\r\n+        }\r\n+    }\r\n+\r\n+    public void initMethodModels() {\r\n+        Class[] interfaceList = null;\r\n+        if (proxyObject == null) {\r\n+            interfaceList = new Class[]{referenceConfig.getActualInterface()};\r\n+        } else {\r\n+            interfaceList = proxyObject.getClass().getInterfaces();\r\n+        }\r\n+        for (Class interfaceClass : interfaceList) {\r\n+            for (Method method : interfaceClass.getMethods()) {\r\n+                methodModels.put(method, new ConsumerMethodModel(method));\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public ClassLoader getClassLoader() {\r\n+        return serviceMetadata.getServiceType().getClassLoader();\r\n+    }\r\n+\r\n+    /**\r\n+     * @return serviceMetadata\r\n+     */\r\n+    public ServiceMetadata getServiceMetadata() {\r\n+        return serviceMetadata;\r\n+    }\r\n+\r\n+    /**\r\n+     * Return method model for the given method on consumer side\r\n+     *\r\n+     * @param method method object\r\n+     * @return method model\r\n+     */\r\n+    public ConsumerMethodModel getMethodModel(Method method) {\r\n+        return methodModels.get(method);\r\n+    }\r\n+\r\n+    /**\r\n+     * Return method model for the given method on consumer side\r\n+     *\r\n+     * @param method method object\r\n+     * @return method model\r\n+     */\r\n+    public ConsumerMethodModel getMethodModel(String method) {\r\n+        Optional<Map.Entry<Method, ConsumerMethodModel>> consumerMethodModelEntry = methodModels.entrySet().stream().filter(entry -> entry.getKey().getName().equals(method)).findFirst();\r\n+        return consumerMethodModelEntry.map(Map.Entry::getValue).orElse(null);\r\n+    }\r\n+\r\n+    /**\r\n+     * @param method   methodName\r\n+     * @param argsType method arguments type\r\n+     * @return\r\n+     */\r\n+    public ConsumerMethodModel getMethodModel(String method, String[] argsType) {\r\n+        Optional<ConsumerMethodModel> consumerMethodModel = methodModels.entrySet().stream()\r\n+                .filter(entry -> entry.getKey().getName().equals(method))\r\n+                .map(Map.Entry::getValue).filter(methodModel -> Arrays.equals(argsType, methodModel.getParameterTypes()))\r\n+                .findFirst();\r\n+        return consumerMethodModel.orElse(null);\r\n+    }\r\n+\r\n+    /**\r\n+     * Return all method models for the current service\r\n+     *\r\n+     * @return method model list\r\n+     */\r\n+    public List<ConsumerMethodModel> getAllMethodModels() {\r\n+        return new ArrayList<>(methodModels.values());\r\n+    }\r\n+\r\n+    public String getServiceName() {\r\n+        return this.serviceMetadata.getServiceKey();\r\n+    }\r\n+\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/model/MethodDescriptor.java", "source2": "org/apache/dubbo/rpc/model/MethodDescriptor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,93 +1,93 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.model;\n-\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Type;\n-import java.util.stream.Stream;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE;\n-import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE_ASYNC;\n-\n-/**\n- *\n- */\n-public class MethodDescriptor {\n-    private final Method method;\n-    //    private final boolean isCallBack;\n-//    private final boolean isFuture;\n-    private final String paramDesc;\n-    // duplicate filed as paramDesc, but with different format.\n-    private final String[] compatibleParamSignatures;\n-    private final Class<?>[] parameterClasses;\n-    private final Class<?> returnClass;\n-    private final Type[] returnTypes;\n-    private final String methodName;\n-    private final boolean generic;\n-\n-    public MethodDescriptor(Method method) {\n-        this.method = method;\n-        this.parameterClasses = method.getParameterTypes();\n-        this.returnClass = method.getReturnType();\n-        this.returnTypes = ReflectUtils.getReturnTypes(method);\n-        this.paramDesc = ReflectUtils.getDesc(parameterClasses);\n-        this.compatibleParamSignatures = Stream.of(parameterClasses)\n-                .map(Class::getName)\n-                .toArray(String[]::new);\n-        this.methodName = method.getName();\n-        this.generic = (methodName.equals($INVOKE) || methodName.equals($INVOKE_ASYNC)) && parameterClasses.length == 3;\n-    }\n-\n-    public boolean matchParams (String params) {\n-        return paramDesc.equalsIgnoreCase(params);\n-    }\n-\n-    public Method getMethod() {\n-        return method;\n-    }\n-\n-    public String getParamDesc() {\n-        return paramDesc;\n-    }\n-\n-    public String[] getCompatibleParamSignatures() {\n-        return compatibleParamSignatures;\n-    }\n-\n-    public Class<?>[] getParameterClasses() {\n-        return parameterClasses;\n-    }\n-\n-    public Class<?> getReturnClass() {\n-        return returnClass;\n-    }\n-\n-    public Type[] getReturnTypes() {\n-        return returnTypes;\n-    }\n-\n-    public String getMethodName() {\n-        return methodName;\n-    }\n-\n-    public boolean isGeneric() {\n-        return generic;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.model;\r\n+\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Type;\r\n+import java.util.stream.Stream;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE_ASYNC;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+public class MethodDescriptor {\r\n+    private final Method method;\r\n+    //    private final boolean isCallBack;\r\n+//    private final boolean isFuture;\r\n+    private final String paramDesc;\r\n+    // duplicate filed as paramDesc, but with different format.\r\n+    private final String[] compatibleParamSignatures;\r\n+    private final Class<?>[] parameterClasses;\r\n+    private final Class<?> returnClass;\r\n+    private final Type[] returnTypes;\r\n+    private final String methodName;\r\n+    private final boolean generic;\r\n+\r\n+    public MethodDescriptor(Method method) {\r\n+        this.method = method;\r\n+        this.parameterClasses = method.getParameterTypes();\r\n+        this.returnClass = method.getReturnType();\r\n+        this.returnTypes = ReflectUtils.getReturnTypes(method);\r\n+        this.paramDesc = ReflectUtils.getDesc(parameterClasses);\r\n+        this.compatibleParamSignatures = Stream.of(parameterClasses)\r\n+                .map(Class::getName)\r\n+                .toArray(String[]::new);\r\n+        this.methodName = method.getName();\r\n+        this.generic = (methodName.equals($INVOKE) || methodName.equals($INVOKE_ASYNC)) && parameterClasses.length == 3;\r\n+    }\r\n+\r\n+    public boolean matchParams (String params) {\r\n+        return paramDesc.equalsIgnoreCase(params);\r\n+    }\r\n+\r\n+    public Method getMethod() {\r\n+        return method;\r\n+    }\r\n+\r\n+    public String getParamDesc() {\r\n+        return paramDesc;\r\n+    }\r\n+\r\n+    public String[] getCompatibleParamSignatures() {\r\n+        return compatibleParamSignatures;\r\n+    }\r\n+\r\n+    public Class<?>[] getParameterClasses() {\r\n+        return parameterClasses;\r\n+    }\r\n+\r\n+    public Class<?> getReturnClass() {\r\n+        return returnClass;\r\n+    }\r\n+\r\n+    public Type[] getReturnTypes() {\r\n+        return returnTypes;\r\n+    }\r\n+\r\n+    public String getMethodName() {\r\n+        return methodName;\r\n+    }\r\n+\r\n+    public boolean isGeneric() {\r\n+        return generic;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/model/ProviderMethodModel.java", "source2": "org/apache/dubbo/rpc/model/ProviderMethodModel.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,80 +1,80 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.model;\n-\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Type;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-/**\n- * Replaced with {@link MethodDescriptor}\n- */\n-@Deprecated\n-public class ProviderMethodModel {\n-    private final Method method;\n-    private final String methodName;\n-    private final Class<?>[] parameterClasses;\n-    private final String[] methodArgTypes;\n-    private final Type[] genericParameterTypes;\n-    private final ConcurrentMap<String, Object> attributeMap = new ConcurrentHashMap<>();\n-\n-    public ProviderMethodModel(Method method) {\n-        this.method = method;\n-        this.methodName = method.getName();\n-        this.parameterClasses = method.getParameterTypes();\n-        this.methodArgTypes = getArgTypes(method);\n-        this.genericParameterTypes = method.getGenericParameterTypes();\n-    }\n-\n-    public Method getMethod() {\n-        return method;\n-    }\n-\n-    public String getMethodName() {\n-        return methodName;\n-    }\n-\n-    public String[] getMethodArgTypes() {\n-        return methodArgTypes;\n-    }\n-\n-    public ConcurrentMap<String, Object> getAttributeMap() {\n-        return attributeMap;\n-    }\n-\n-    private static String[] getArgTypes(Method method) {\n-        String[] methodArgTypes = new String[0];\n-        Class<?>[] parameterTypes = method.getParameterTypes();\n-        if (parameterTypes.length > 0) {\n-            methodArgTypes = new String[parameterTypes.length];\n-            int index = 0;\n-            for (Class<?> paramType : parameterTypes) {\n-                methodArgTypes[index++] = paramType.getName();\n-            }\n-        }\n-        return methodArgTypes;\n-    }\n-\n-    public Class<?>[] getParameterClasses() {\n-        return parameterClasses;\n-    }\n-\n-    public Type[] getGenericParameterTypes() {\n-        return genericParameterTypes;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.model;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Type;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+/**\r\n+ * Replaced with {@link MethodDescriptor}\r\n+ */\r\n+@Deprecated\r\n+public class ProviderMethodModel {\r\n+    private final Method method;\r\n+    private final String methodName;\r\n+    private final Class<?>[] parameterClasses;\r\n+    private final String[] methodArgTypes;\r\n+    private final Type[] genericParameterTypes;\r\n+    private final ConcurrentMap<String, Object> attributeMap = new ConcurrentHashMap<>();\r\n+\r\n+    public ProviderMethodModel(Method method) {\r\n+        this.method = method;\r\n+        this.methodName = method.getName();\r\n+        this.parameterClasses = method.getParameterTypes();\r\n+        this.methodArgTypes = getArgTypes(method);\r\n+        this.genericParameterTypes = method.getGenericParameterTypes();\r\n+    }\r\n+\r\n+    public Method getMethod() {\r\n+        return method;\r\n+    }\r\n+\r\n+    public String getMethodName() {\r\n+        return methodName;\r\n+    }\r\n+\r\n+    public String[] getMethodArgTypes() {\r\n+        return methodArgTypes;\r\n+    }\r\n+\r\n+    public ConcurrentMap<String, Object> getAttributeMap() {\r\n+        return attributeMap;\r\n+    }\r\n+\r\n+    private static String[] getArgTypes(Method method) {\r\n+        String[] methodArgTypes = new String[0];\r\n+        Class<?>[] parameterTypes = method.getParameterTypes();\r\n+        if (parameterTypes.length > 0) {\r\n+            methodArgTypes = new String[parameterTypes.length];\r\n+            int index = 0;\r\n+            for (Class<?> paramType : parameterTypes) {\r\n+                methodArgTypes[index++] = paramType.getName();\r\n+            }\r\n+        }\r\n+        return methodArgTypes;\r\n+    }\r\n+\r\n+    public Class<?>[] getParameterClasses() {\r\n+        return parameterClasses;\r\n+    }\r\n+\r\n+    public Type[] getGenericParameterTypes() {\r\n+        return genericParameterTypes;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/model/ProviderModel.java", "source2": "org/apache/dubbo/rpc/model/ProviderModel.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,205 +1,205 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.model;\n-\n-import org.apache.dubbo.common.BaseServiceMetadata;\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.config.ServiceConfigBase;\n-\n-import java.lang.reflect.Method;\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.Collections;\n-import java.util.HashMap;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-\n-/**\n- * ProviderModel is about published services\n- */\n-public class ProviderModel {\n-    private String serviceKey;\n-    private final Object serviceInstance;\n-    private final ServiceDescriptor serviceModel;\n-    private final ServiceConfigBase<?> serviceConfig;\n-    private final List<RegisterStatedURL> urls;\n-\n-    public ProviderModel(String serviceKey,\n-                         Object serviceInstance,\n-                         ServiceDescriptor serviceModel,\n-                         ServiceConfigBase<?> serviceConfig) {\n-        if (null == serviceInstance) {\n-            throw new IllegalArgumentException(\"Service[\" + serviceKey + \"]Target is NULL.\");\n-        }\n-\n-        this.serviceKey = serviceKey;\n-        this.serviceInstance = serviceInstance;\n-        this.serviceModel = serviceModel;\n-        this.serviceConfig = serviceConfig;\n-        this.urls = new ArrayList<>(1);\n-    }\n-\n-    public String getServiceKey() {\n-        return serviceKey;\n-    }\n-\n-\n-    public Class<?> getServiceInterfaceClass() {\n-        return serviceModel.getServiceInterfaceClass();\n-    }\n-\n-    public Object getServiceInstance() {\n-        return serviceInstance;\n-    }\n-\n-    public Set<MethodDescriptor> getAllMethods() {\n-        return serviceModel.getAllMethods();\n-    }\n-\n-    public ServiceDescriptor getServiceModel() {\n-        return serviceModel;\n-    }\n-\n-    public ServiceConfigBase getServiceConfig() {\n-        return serviceConfig;\n-    }\n-\n-    public List<RegisterStatedURL> getStatedUrl() {\n-        return urls;\n-    }\n-\n-    public void addStatedUrl(RegisterStatedURL url) {\n-        this.urls.add(url);\n-    }\n-\n-    public static class RegisterStatedURL {\n-        private volatile URL registryUrl;\n-        private volatile URL providerUrl;\n-        private volatile boolean registered;\n-\n-        public RegisterStatedURL(URL providerUrl,\n-                                 URL registryUrl,\n-                                 boolean registered) {\n-            this.providerUrl = providerUrl;\n-            this.registered = registered;\n-            this.registryUrl = registryUrl;\n-        }\n-\n-        public URL getProviderUrl() {\n-            return providerUrl;\n-        }\n-\n-        public void setProviderUrl(URL providerUrl) {\n-            this.providerUrl = providerUrl;\n-        }\n-\n-        public boolean isRegistered() {\n-            return registered;\n-        }\n-\n-        public void setRegistered(boolean registered) {\n-            this.registered = registered;\n-        }\n-\n-        public URL getRegistryUrl() {\n-            return registryUrl;\n-        }\n-\n-        public void setRegistryUrl(URL registryUrl) {\n-            this.registryUrl = registryUrl;\n-        }\n-    }\n-\n-    /* *************** Start, metadata compatible **************** */\n-\n-    private ServiceMetadata serviceMetadata;\n-    private final Map<String, List<ProviderMethodModel>> methods = new HashMap<String, List<ProviderMethodModel>>();\n-\n-    public ProviderModel(String serviceKey,\n-                         Object serviceInstance,\n-                         ServiceDescriptor serviceModel,\n-                         ServiceConfigBase<?> serviceConfig,\n-                         ServiceMetadata serviceMetadata) {\n-        this(serviceKey, serviceInstance, serviceModel, serviceConfig);\n-\n-        this.serviceMetadata = serviceMetadata;\n-        initMethod(serviceModel.getServiceInterfaceClass());\n-    }\n-\n-\n-    public void setServiceKey(String serviceKey) {\n-        this.serviceKey = serviceKey;\n-        if (serviceMetadata != null) {\n-            serviceMetadata.setServiceKey(serviceKey);\n-            serviceMetadata.setGroup(BaseServiceMetadata.groupFromServiceKey(serviceKey));\n-        }\n-    }\n-\n-    public String getServiceName() {\n-        return this.serviceMetadata.getServiceKey();\n-    }\n-\n-    public List<ProviderMethodModel> getAllMethodModels() {\n-        List<ProviderMethodModel> result = new ArrayList<ProviderMethodModel>();\n-        for (List<ProviderMethodModel> models : methods.values()) {\n-            result.addAll(models);\n-        }\n-        return result;\n-    }\n-\n-    public ProviderMethodModel getMethodModel(String methodName, String[] argTypes) {\n-        List<ProviderMethodModel> methodModels = methods.get(methodName);\n-        if (methodModels != null) {\n-            for (ProviderMethodModel methodModel : methodModels) {\n-                if (Arrays.equals(argTypes, methodModel.getMethodArgTypes())) {\n-                    return methodModel;\n-                }\n-            }\n-        }\n-        return null;\n-    }\n-\n-    public List<ProviderMethodModel> getMethodModelList(String methodName) {\n-        List<ProviderMethodModel> resultList = methods.get(methodName);\n-        return resultList == null ? Collections.emptyList() : resultList;\n-    }\n-\n-    private void initMethod(Class<?> serviceInterfaceClass) {\n-        Method[] methodsToExport;\n-        methodsToExport = serviceInterfaceClass.getMethods();\n-\n-        for (Method method : methodsToExport) {\n-            ReflectUtils.makeAccessible(method);\n-\n-            List<ProviderMethodModel> methodModels = methods.get(method.getName());\n-            if (methodModels == null) {\n-                methodModels = new ArrayList<ProviderMethodModel>();\n-                methods.put(method.getName(), methodModels);\n-            }\n-            methodModels.add(new ProviderMethodModel(method));\n-        }\n-    }\n-\n-    /**\n-     * @return serviceMetadata\n-     */\n-    public ServiceMetadata getServiceMetadata() {\n-        return serviceMetadata;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.model;\r\n+\r\n+import org.apache.dubbo.common.BaseServiceMetadata;\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.config.ServiceConfigBase;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.Collections;\r\n+import java.util.HashMap;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+\r\n+/**\r\n+ * ProviderModel is about published services\r\n+ */\r\n+public class ProviderModel {\r\n+    private String serviceKey;\r\n+    private final Object serviceInstance;\r\n+    private final ServiceDescriptor serviceModel;\r\n+    private final ServiceConfigBase<?> serviceConfig;\r\n+    private final List<RegisterStatedURL> urls;\r\n+\r\n+    public ProviderModel(String serviceKey,\r\n+                         Object serviceInstance,\r\n+                         ServiceDescriptor serviceModel,\r\n+                         ServiceConfigBase<?> serviceConfig) {\r\n+        if (null == serviceInstance) {\r\n+            throw new IllegalArgumentException(\"Service[\" + serviceKey + \"]Target is NULL.\");\r\n+        }\r\n+\r\n+        this.serviceKey = serviceKey;\r\n+        this.serviceInstance = serviceInstance;\r\n+        this.serviceModel = serviceModel;\r\n+        this.serviceConfig = serviceConfig;\r\n+        this.urls = new ArrayList<>(1);\r\n+    }\r\n+\r\n+    public String getServiceKey() {\r\n+        return serviceKey;\r\n+    }\r\n+\r\n+\r\n+    public Class<?> getServiceInterfaceClass() {\r\n+        return serviceModel.getServiceInterfaceClass();\r\n+    }\r\n+\r\n+    public Object getServiceInstance() {\r\n+        return serviceInstance;\r\n+    }\r\n+\r\n+    public Set<MethodDescriptor> getAllMethods() {\r\n+        return serviceModel.getAllMethods();\r\n+    }\r\n+\r\n+    public ServiceDescriptor getServiceModel() {\r\n+        return serviceModel;\r\n+    }\r\n+\r\n+    public ServiceConfigBase getServiceConfig() {\r\n+        return serviceConfig;\r\n+    }\r\n+\r\n+    public List<RegisterStatedURL> getStatedUrl() {\r\n+        return urls;\r\n+    }\r\n+\r\n+    public void addStatedUrl(RegisterStatedURL url) {\r\n+        this.urls.add(url);\r\n+    }\r\n+\r\n+    public static class RegisterStatedURL {\r\n+        private volatile URL registryUrl;\r\n+        private volatile URL providerUrl;\r\n+        private volatile boolean registered;\r\n+\r\n+        public RegisterStatedURL(URL providerUrl,\r\n+                                 URL registryUrl,\r\n+                                 boolean registered) {\r\n+            this.providerUrl = providerUrl;\r\n+            this.registered = registered;\r\n+            this.registryUrl = registryUrl;\r\n+        }\r\n+\r\n+        public URL getProviderUrl() {\r\n+            return providerUrl;\r\n+        }\r\n+\r\n+        public void setProviderUrl(URL providerUrl) {\r\n+            this.providerUrl = providerUrl;\r\n+        }\r\n+\r\n+        public boolean isRegistered() {\r\n+            return registered;\r\n+        }\r\n+\r\n+        public void setRegistered(boolean registered) {\r\n+            this.registered = registered;\r\n+        }\r\n+\r\n+        public URL getRegistryUrl() {\r\n+            return registryUrl;\r\n+        }\r\n+\r\n+        public void setRegistryUrl(URL registryUrl) {\r\n+            this.registryUrl = registryUrl;\r\n+        }\r\n+    }\r\n+\r\n+    /* *************** Start, metadata compatible **************** */\r\n+\r\n+    private ServiceMetadata serviceMetadata;\r\n+    private final Map<String, List<ProviderMethodModel>> methods = new HashMap<String, List<ProviderMethodModel>>();\r\n+\r\n+    public ProviderModel(String serviceKey,\r\n+                         Object serviceInstance,\r\n+                         ServiceDescriptor serviceModel,\r\n+                         ServiceConfigBase<?> serviceConfig,\r\n+                         ServiceMetadata serviceMetadata) {\r\n+        this(serviceKey, serviceInstance, serviceModel, serviceConfig);\r\n+\r\n+        this.serviceMetadata = serviceMetadata;\r\n+        initMethod(serviceModel.getServiceInterfaceClass());\r\n+    }\r\n+\r\n+\r\n+    public void setServiceKey(String serviceKey) {\r\n+        this.serviceKey = serviceKey;\r\n+        if (serviceMetadata != null) {\r\n+            serviceMetadata.setServiceKey(serviceKey);\r\n+            serviceMetadata.setGroup(BaseServiceMetadata.groupFromServiceKey(serviceKey));\r\n+        }\r\n+    }\r\n+\r\n+    public String getServiceName() {\r\n+        return this.serviceMetadata.getServiceKey();\r\n+    }\r\n+\r\n+    public List<ProviderMethodModel> getAllMethodModels() {\r\n+        List<ProviderMethodModel> result = new ArrayList<ProviderMethodModel>();\r\n+        for (List<ProviderMethodModel> models : methods.values()) {\r\n+            result.addAll(models);\r\n+        }\r\n+        return result;\r\n+    }\r\n+\r\n+    public ProviderMethodModel getMethodModel(String methodName, String[] argTypes) {\r\n+        List<ProviderMethodModel> methodModels = methods.get(methodName);\r\n+        if (methodModels != null) {\r\n+            for (ProviderMethodModel methodModel : methodModels) {\r\n+                if (Arrays.equals(argTypes, methodModel.getMethodArgTypes())) {\r\n+                    return methodModel;\r\n+                }\r\n+            }\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    public List<ProviderMethodModel> getMethodModelList(String methodName) {\r\n+        List<ProviderMethodModel> resultList = methods.get(methodName);\r\n+        return resultList == null ? Collections.emptyList() : resultList;\r\n+    }\r\n+\r\n+    private void initMethod(Class<?> serviceInterfaceClass) {\r\n+        Method[] methodsToExport;\r\n+        methodsToExport = serviceInterfaceClass.getMethods();\r\n+\r\n+        for (Method method : methodsToExport) {\r\n+            ReflectUtils.makeAccessible(method);\r\n+\r\n+            List<ProviderMethodModel> methodModels = methods.get(method.getName());\r\n+            if (methodModels == null) {\r\n+                methodModels = new ArrayList<ProviderMethodModel>();\r\n+                methods.put(method.getName(), methodModels);\r\n+            }\r\n+            methodModels.add(new ProviderMethodModel(method));\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * @return serviceMetadata\r\n+     */\r\n+    public ServiceMetadata getServiceMetadata() {\r\n+        return serviceMetadata;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/model/ServiceDescriptor.java", "source2": "org/apache/dubbo/rpc/model/ServiceDescriptor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,119 +1,119 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.model;\n-\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-\n-import java.lang.reflect.Method;\n-import java.util.Arrays;\n-import java.util.ArrayList;\n-import java.util.HashMap;\n-import java.util.HashSet;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-\n-/**\n- * ServiceModel and ServiceMetadata are to some extend duplicated with each other.\n- * We should merge them in the future.\n- */\n-public class ServiceDescriptor {\n-    private final String serviceName;\n-    private final Class<?> serviceInterfaceClass;\n-    // to accelerate search\n-    private final Map<String, List<MethodDescriptor>> methods = new HashMap<>();\n-    private final Map<String, Map<String, MethodDescriptor>> descToMethods = new HashMap<>();\n-\n-    public ServiceDescriptor(Class<?> interfaceClass) {\n-        this.serviceInterfaceClass = interfaceClass;\n-        this.serviceName = interfaceClass.getName();\n-        initMethods();\n-    }\n-\n-    private void initMethods() {\n-        Method[] methodsToExport = this.serviceInterfaceClass.getMethods();\n-        for (Method method : methodsToExport) {\n-            ReflectUtils.makeAccessible(method);\n-\n-            List<MethodDescriptor> methodModels = methods.computeIfAbsent(method.getName(), (k) -> new ArrayList<>(1));\n-            methodModels.add(new MethodDescriptor(method));\n-        }\n-\n-        methods.forEach((methodName, methodList) -> {\n-            Map<String, MethodDescriptor> descMap = descToMethods.computeIfAbsent(methodName, k -> new HashMap<>());\n-            methodList.forEach(methodModel -> descMap.put(methodModel.getParamDesc(), methodModel));\n-\n-//            Map<Class<?>[], MethodModel> typesMap = typeToMethods.computeIfAbsent(methodName, k -> new HashMap<>());\n-//            methodList.forEach(methodModel -> typesMap.put(methodModel.getParameterClasses(), methodModel));\n-        });\n-    }\n-\n-    public String getServiceName() {\n-        return serviceName;\n-    }\n-\n-    public Class<?> getServiceInterfaceClass() {\n-        return serviceInterfaceClass;\n-    }\n-\n-    public Set<MethodDescriptor> getAllMethods() {\n-        Set<MethodDescriptor> methodModels = new HashSet<>();\n-        methods.forEach((k, v) -> methodModels.addAll(v));\n-        return methodModels;\n-    }\n-\n-    /**\n-     * Does not use Optional as return type to avoid potential performance decrease.\n-     *\n-     * @param methodName\n-     * @param params\n-     * @return\n-     */\n-    public MethodDescriptor getMethod(String methodName, String params) {\n-        Map<String, MethodDescriptor> methods = descToMethods.get(methodName);\n-        if (CollectionUtils.isNotEmptyMap(methods)) {\n-            return methods.get(params);\n-        }\n-        return null;\n-    }\n-\n-    /**\n-     * Does not use Optional as return type to avoid potential performance decrease.\n-     *\n-     * @param methodName\n-     * @param paramTypes\n-     * @return\n-     */\n-    public MethodDescriptor getMethod(String methodName, Class<?>[] paramTypes) {\n-        List<MethodDescriptor> methodModels = methods.get(methodName);\n-        if (CollectionUtils.isNotEmpty(methodModels)) {\n-            for (int i = 0; i < methodModels.size(); i++) {\n-                MethodDescriptor descriptor = methodModels.get(i);\n-                if (Arrays.equals(paramTypes, descriptor.getParameterClasses())) {\n-                    return descriptor;\n-                }\n-            }\n-        }\n-        return null;\n-    }\n-\n-    public List<MethodDescriptor> getMethods(String methodName) {\n-        return methods.get(methodName);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.model;\r\n+\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.util.Arrays;\r\n+import java.util.ArrayList;\r\n+import java.util.HashMap;\r\n+import java.util.HashSet;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+\r\n+/**\r\n+ * ServiceModel and ServiceMetadata are to some extend duplicated with each other.\r\n+ * We should merge them in the future.\r\n+ */\r\n+public class ServiceDescriptor {\r\n+    private final String serviceName;\r\n+    private final Class<?> serviceInterfaceClass;\r\n+    // to accelerate search\r\n+    private final Map<String, List<MethodDescriptor>> methods = new HashMap<>();\r\n+    private final Map<String, Map<String, MethodDescriptor>> descToMethods = new HashMap<>();\r\n+\r\n+    public ServiceDescriptor(Class<?> interfaceClass) {\r\n+        this.serviceInterfaceClass = interfaceClass;\r\n+        this.serviceName = interfaceClass.getName();\r\n+        initMethods();\r\n+    }\r\n+\r\n+    private void initMethods() {\r\n+        Method[] methodsToExport = this.serviceInterfaceClass.getMethods();\r\n+        for (Method method : methodsToExport) {\r\n+            ReflectUtils.makeAccessible(method);\r\n+\r\n+            List<MethodDescriptor> methodModels = methods.computeIfAbsent(method.getName(), (k) -> new ArrayList<>(1));\r\n+            methodModels.add(new MethodDescriptor(method));\r\n+        }\r\n+\r\n+        methods.forEach((methodName, methodList) -> {\r\n+            Map<String, MethodDescriptor> descMap = descToMethods.computeIfAbsent(methodName, k -> new HashMap<>());\r\n+            methodList.forEach(methodModel -> descMap.put(methodModel.getParamDesc(), methodModel));\r\n+\r\n+//            Map<Class<?>[], MethodModel> typesMap = typeToMethods.computeIfAbsent(methodName, k -> new HashMap<>());\r\n+//            methodList.forEach(methodModel -> typesMap.put(methodModel.getParameterClasses(), methodModel));\r\n+        });\r\n+    }\r\n+\r\n+    public String getServiceName() {\r\n+        return serviceName;\r\n+    }\r\n+\r\n+    public Class<?> getServiceInterfaceClass() {\r\n+        return serviceInterfaceClass;\r\n+    }\r\n+\r\n+    public Set<MethodDescriptor> getAllMethods() {\r\n+        Set<MethodDescriptor> methodModels = new HashSet<>();\r\n+        methods.forEach((k, v) -> methodModels.addAll(v));\r\n+        return methodModels;\r\n+    }\r\n+\r\n+    /**\r\n+     * Does not use Optional as return type to avoid potential performance decrease.\r\n+     *\r\n+     * @param methodName\r\n+     * @param params\r\n+     * @return\r\n+     */\r\n+    public MethodDescriptor getMethod(String methodName, String params) {\r\n+        Map<String, MethodDescriptor> methods = descToMethods.get(methodName);\r\n+        if (CollectionUtils.isNotEmptyMap(methods)) {\r\n+            return methods.get(params);\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    /**\r\n+     * Does not use Optional as return type to avoid potential performance decrease.\r\n+     *\r\n+     * @param methodName\r\n+     * @param paramTypes\r\n+     * @return\r\n+     */\r\n+    public MethodDescriptor getMethod(String methodName, Class<?>[] paramTypes) {\r\n+        List<MethodDescriptor> methodModels = methods.get(methodName);\r\n+        if (CollectionUtils.isNotEmpty(methodModels)) {\r\n+            for (int i = 0; i < methodModels.size(); i++) {\r\n+                MethodDescriptor descriptor = methodModels.get(i);\r\n+                if (Arrays.equals(paramTypes, descriptor.getParameterClasses())) {\r\n+                    return descriptor;\r\n+                }\r\n+            }\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    public List<MethodDescriptor> getMethods(String methodName) {\r\n+        return methods.get(methodName);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/model/ServiceMetadata.java", "source2": "org/apache/dubbo/rpc/model/ServiceMetadata.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,102 +1,102 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.model;\n-\n-import org.apache.dubbo.common.BaseServiceMetadata;\n-import org.apache.dubbo.common.URL;\n-\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-/**\n- * Notice, this class currently has no usage inside Dubbo.\n- *\n- * data related to service level such as name, version, classloader of business service,\n- * security info, etc. Also with a AttributeMap for extension.\n- */\n-public class ServiceMetadata extends BaseServiceMetadata {\n-\n-    private String defaultGroup;\n-    private Class<?> serviceType;\n-\n-    private Object target;\n-\n-    /* will be transferred to remote side */\n-    private final Map<String, Object> attachments = new ConcurrentHashMap<String, Object>();\n-    /* used locally*/\n-    private final Map<String, Object> attributeMap = new ConcurrentHashMap<String, Object>();\n-\n-    public ServiceMetadata(String serviceInterfaceName, String group, String version, Class<?> serviceType) {\n-        this.serviceInterfaceName = serviceInterfaceName;\n-        this.defaultGroup = group;\n-        this.group = group;\n-        this.version = version;\n-        this.serviceKey = URL.buildKey(serviceInterfaceName, group, version);\n-        this.serviceType = serviceType;\n-    }\n-\n-    public ServiceMetadata() {\n-    }\n-\n-    public String getServiceKey() {\n-        return serviceKey;\n-    }\n-\n-    public Map<String, Object> getAttachments() {\n-        return attachments;\n-    }\n-\n-    public Map<String, Object> getAttributeMap() {\n-        return attributeMap;\n-    }\n-\n-    public Object getAttribute(String key) {\n-        return attributeMap.get(key);\n-    }\n-\n-    public void addAttribute(String key, Object value) {\n-        this.attributeMap.put(key, value);\n-    }\n-\n-    public void addAttachment(String key, Object value) {\n-        this.attachments.put(key, value);\n-    }\n-\n-    public Class<?> getServiceType() {\n-        return serviceType;\n-    }\n-\n-    public String getDefaultGroup() {\n-        return defaultGroup;\n-    }\n-\n-    public void setDefaultGroup(String defaultGroup) {\n-        this.defaultGroup = defaultGroup;\n-    }\n-\n-    public void setServiceType(Class<?> serviceType) {\n-        this.serviceType = serviceType;\n-    }\n-\n-    public Object getTarget() {\n-        return target;\n-    }\n-\n-    public void setTarget(Object target) {\n-        this.target = target;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.model;\r\n+\r\n+import org.apache.dubbo.common.BaseServiceMetadata;\r\n+import org.apache.dubbo.common.URL;\r\n+\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+/**\r\n+ * Notice, this class currently has no usage inside Dubbo.\r\n+ *\r\n+ * data related to service level such as name, version, classloader of business service,\r\n+ * security info, etc. Also with a AttributeMap for extension.\r\n+ */\r\n+public class ServiceMetadata extends BaseServiceMetadata {\r\n+\r\n+    private String defaultGroup;\r\n+    private Class<?> serviceType;\r\n+\r\n+    private Object target;\r\n+\r\n+    /* will be transferred to remote side */\r\n+    private final Map<String, Object> attachments = new ConcurrentHashMap<String, Object>();\r\n+    /* used locally*/\r\n+    private final Map<String, Object> attributeMap = new ConcurrentHashMap<String, Object>();\r\n+\r\n+    public ServiceMetadata(String serviceInterfaceName, String group, String version, Class<?> serviceType) {\r\n+        this.serviceInterfaceName = serviceInterfaceName;\r\n+        this.defaultGroup = group;\r\n+        this.group = group;\r\n+        this.version = version;\r\n+        this.serviceKey = URL.buildKey(serviceInterfaceName, group, version);\r\n+        this.serviceType = serviceType;\r\n+    }\r\n+\r\n+    public ServiceMetadata() {\r\n+    }\r\n+\r\n+    public String getServiceKey() {\r\n+        return serviceKey;\r\n+    }\r\n+\r\n+    public Map<String, Object> getAttachments() {\r\n+        return attachments;\r\n+    }\r\n+\r\n+    public Map<String, Object> getAttributeMap() {\r\n+        return attributeMap;\r\n+    }\r\n+\r\n+    public Object getAttribute(String key) {\r\n+        return attributeMap.get(key);\r\n+    }\r\n+\r\n+    public void addAttribute(String key, Object value) {\r\n+        this.attributeMap.put(key, value);\r\n+    }\r\n+\r\n+    public void addAttachment(String key, Object value) {\r\n+        this.attachments.put(key, value);\r\n+    }\r\n+\r\n+    public Class<?> getServiceType() {\r\n+        return serviceType;\r\n+    }\r\n+\r\n+    public String getDefaultGroup() {\r\n+        return defaultGroup;\r\n+    }\r\n+\r\n+    public void setDefaultGroup(String defaultGroup) {\r\n+        this.defaultGroup = defaultGroup;\r\n+    }\r\n+\r\n+    public void setServiceType(Class<?> serviceType) {\r\n+        this.serviceType = serviceType;\r\n+    }\r\n+\r\n+    public Object getTarget() {\r\n+        return target;\r\n+    }\r\n+\r\n+    public void setTarget(Object target) {\r\n+        this.target = target;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/model/ServiceRepository.java", "source2": "org/apache/dubbo/rpc/model/ServiceRepository.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,185 +1,185 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.model;\n-\n-import org.apache.dubbo.common.context.FrameworkExt;\n-import org.apache.dubbo.common.context.LifecycleAdapter;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.config.ReferenceConfigBase;\n-import org.apache.dubbo.config.ServiceConfigBase;\n-\n-import java.util.ArrayList;\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-import static org.apache.dubbo.common.BaseServiceMetadata.interfaceFromServiceKey;\n-import static org.apache.dubbo.common.BaseServiceMetadata.versionFromServiceKey;\n-\n-public class ServiceRepository extends LifecycleAdapter implements FrameworkExt {\n-\n-    public static final String NAME = \"repository\";\n-\n-    // services\n-    private ConcurrentMap<String, ServiceDescriptor> services = new ConcurrentHashMap<>();\n-\n-    // consumers\n-    private ConcurrentMap<String, ConsumerModel> consumers = new ConcurrentHashMap<>();\n-\n-    // providers\n-    private ConcurrentMap<String, ProviderModel> providers = new ConcurrentHashMap<>();\n-\n-    // useful to find a provider model quickly with serviceInterfaceName:version\n-    private ConcurrentMap<String, ProviderModel> providersWithoutGroup = new ConcurrentHashMap<>();\n-\n-    public ServiceRepository() {\n-        Set<BuiltinServiceDetector> builtinServices\n-                = ExtensionLoader.getExtensionLoader(BuiltinServiceDetector.class).getSupportedExtensionInstances();\n-        if (CollectionUtils.isNotEmpty(builtinServices)) {\n-            for (BuiltinServiceDetector service : builtinServices) {\n-                registerService(service.getService());\n-            }\n-        }\n-    }\n-\n-    public ServiceDescriptor registerService(Class<?> interfaceClazz) {\n-        return services.computeIfAbsent(interfaceClazz.getName(),\n-                _k -> new ServiceDescriptor(interfaceClazz));\n-    }\n-\n-    /**\n-     * See {@link #registerService(Class)}\n-     * <p>\n-     * we assume:\n-     * 1. services with different interfaces are not allowed to have the same path.\n-     * 2. services share the same interface but has different group/version can share the same path.\n-     * 3. path's default value is the name of the interface.\n-     *\n-     * @param path\n-     * @param interfaceClass\n-     * @return\n-     */\n-    public ServiceDescriptor registerService(String path, Class<?> interfaceClass) {\n-        ServiceDescriptor serviceDescriptor = registerService(interfaceClass);\n-        // if path is different with interface name, add extra path mapping\n-        if (!interfaceClass.getName().equals(path)) {\n-            services.putIfAbsent(path, serviceDescriptor);\n-        }\n-        return serviceDescriptor;\n-    }\n-\n-    public void unregisterService(Class<?> interfaceClazz) {\n-        unregisterService(interfaceClazz.getName());\n-    }\n-\n-    public void unregisterService(String path) {\n-        services.remove(path);\n-    }\n-\n-    public void registerConsumer(String serviceKey,\n-                                 ServiceDescriptor serviceDescriptor,\n-                                 ReferenceConfigBase<?> rc,\n-                                 Object proxy,\n-                                 ServiceMetadata serviceMetadata) {\n-        ConsumerModel consumerModel = new ConsumerModel(serviceMetadata.getServiceKey(), proxy, serviceDescriptor, rc,\n-                serviceMetadata);\n-        consumers.putIfAbsent(serviceKey, consumerModel);\n-    }\n-\n-    public void reRegisterConsumer(String newServiceKey, String serviceKey) {\n-        ConsumerModel consumerModel = consumers.get(serviceKey);\n-        consumerModel.setServiceKey(newServiceKey);\n-        consumers.putIfAbsent(newServiceKey, consumerModel);\n-        consumers.remove(serviceKey);\n-\n-    }\n-\n-    public void registerProvider(String serviceKey,\n-                                 Object serviceInstance,\n-                                 ServiceDescriptor serviceModel,\n-                                 ServiceConfigBase<?> serviceConfig,\n-                                 ServiceMetadata serviceMetadata) {\n-        ProviderModel providerModel = new ProviderModel(serviceKey, serviceInstance, serviceModel, serviceConfig,\n-                serviceMetadata);\n-        providers.putIfAbsent(serviceKey, providerModel);\n-        providersWithoutGroup.putIfAbsent(keyWithoutGroup(serviceKey), providerModel);\n-    }\n-\n-    private static String keyWithoutGroup(String serviceKey) {\n-        return interfaceFromServiceKey(serviceKey) + \":\" + versionFromServiceKey(serviceKey);\n-    }\n-\n-    public void reRegisterProvider(String newServiceKey, String serviceKey) {\n-        ProviderModel providerModel = providers.get(serviceKey);\n-        providerModel.setServiceKey(newServiceKey);\n-        providers.putIfAbsent(newServiceKey, providerModel);\n-        providers.remove(serviceKey);\n-    }\n-\n-    public List<ServiceDescriptor> getAllServices() {\n-        return Collections.unmodifiableList(new ArrayList<>(services.values()));\n-    }\n-\n-    public ServiceDescriptor lookupService(String interfaceName) {\n-        return services.get(interfaceName);\n-    }\n-\n-    public MethodDescriptor lookupMethod(String interfaceName, String methodName) {\n-        ServiceDescriptor serviceDescriptor = lookupService(interfaceName);\n-        if (serviceDescriptor == null) {\n-            return null;\n-        }\n-\n-        List<MethodDescriptor> methods = serviceDescriptor.getMethods(methodName);\n-        if (CollectionUtils.isEmpty(methods)) {\n-            return null;\n-        }\n-        return methods.iterator().next();\n-    }\n-\n-    public List<ProviderModel> getExportedServices() {\n-        return Collections.unmodifiableList(new ArrayList<>(providers.values()));\n-    }\n-\n-    public ProviderModel lookupExportedService(String serviceKey) {\n-        return providers.get(serviceKey);\n-    }\n-\n-    public ProviderModel lookupExportedServiceWithoutGroup(String key) {\n-        return providersWithoutGroup.get(key);\n-    }\n-\n-    public List<ConsumerModel> getReferredServices() {\n-        return Collections.unmodifiableList(new ArrayList<>(consumers.values()));\n-    }\n-\n-    public ConsumerModel lookupReferredService(String serviceKey) {\n-        return consumers.get(serviceKey);\n-    }\n-\n-    @Override\n-    public void destroy() throws IllegalStateException {\n-        // currently works for unit test\n-        services.clear();\n-        consumers.clear();\n-        providers.clear();\n-        providersWithoutGroup.clear();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.model;\r\n+\r\n+import org.apache.dubbo.common.context.FrameworkExt;\r\n+import org.apache.dubbo.common.context.LifecycleAdapter;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.config.ReferenceConfigBase;\r\n+import org.apache.dubbo.config.ServiceConfigBase;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+import static org.apache.dubbo.common.BaseServiceMetadata.interfaceFromServiceKey;\r\n+import static org.apache.dubbo.common.BaseServiceMetadata.versionFromServiceKey;\r\n+\r\n+public class ServiceRepository extends LifecycleAdapter implements FrameworkExt {\r\n+\r\n+    public static final String NAME = \"repository\";\r\n+\r\n+    // services\r\n+    private ConcurrentMap<String, ServiceDescriptor> services = new ConcurrentHashMap<>();\r\n+\r\n+    // consumers\r\n+    private ConcurrentMap<String, ConsumerModel> consumers = new ConcurrentHashMap<>();\r\n+\r\n+    // providers\r\n+    private ConcurrentMap<String, ProviderModel> providers = new ConcurrentHashMap<>();\r\n+\r\n+    // useful to find a provider model quickly with serviceInterfaceName:version\r\n+    private ConcurrentMap<String, ProviderModel> providersWithoutGroup = new ConcurrentHashMap<>();\r\n+\r\n+    public ServiceRepository() {\r\n+        Set<BuiltinServiceDetector> builtinServices\r\n+                = ExtensionLoader.getExtensionLoader(BuiltinServiceDetector.class).getSupportedExtensionInstances();\r\n+        if (CollectionUtils.isNotEmpty(builtinServices)) {\r\n+            for (BuiltinServiceDetector service : builtinServices) {\r\n+                registerService(service.getService());\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public ServiceDescriptor registerService(Class<?> interfaceClazz) {\r\n+        return services.computeIfAbsent(interfaceClazz.getName(),\r\n+                _k -> new ServiceDescriptor(interfaceClazz));\r\n+    }\r\n+\r\n+    /**\r\n+     * See {@link #registerService(Class)}\r\n+     * <p>\r\n+     * we assume:\r\n+     * 1. services with different interfaces are not allowed to have the same path.\r\n+     * 2. services share the same interface but has different group/version can share the same path.\r\n+     * 3. path's default value is the name of the interface.\r\n+     *\r\n+     * @param path\r\n+     * @param interfaceClass\r\n+     * @return\r\n+     */\r\n+    public ServiceDescriptor registerService(String path, Class<?> interfaceClass) {\r\n+        ServiceDescriptor serviceDescriptor = registerService(interfaceClass);\r\n+        // if path is different with interface name, add extra path mapping\r\n+        if (!interfaceClass.getName().equals(path)) {\r\n+            services.putIfAbsent(path, serviceDescriptor);\r\n+        }\r\n+        return serviceDescriptor;\r\n+    }\r\n+\r\n+    public void unregisterService(Class<?> interfaceClazz) {\r\n+        unregisterService(interfaceClazz.getName());\r\n+    }\r\n+\r\n+    public void unregisterService(String path) {\r\n+        services.remove(path);\r\n+    }\r\n+\r\n+    public void registerConsumer(String serviceKey,\r\n+                                 ServiceDescriptor serviceDescriptor,\r\n+                                 ReferenceConfigBase<?> rc,\r\n+                                 Object proxy,\r\n+                                 ServiceMetadata serviceMetadata) {\r\n+        ConsumerModel consumerModel = new ConsumerModel(serviceMetadata.getServiceKey(), proxy, serviceDescriptor, rc,\r\n+                serviceMetadata);\r\n+        consumers.putIfAbsent(serviceKey, consumerModel);\r\n+    }\r\n+\r\n+    public void reRegisterConsumer(String newServiceKey, String serviceKey) {\r\n+        ConsumerModel consumerModel = consumers.get(serviceKey);\r\n+        consumerModel.setServiceKey(newServiceKey);\r\n+        consumers.putIfAbsent(newServiceKey, consumerModel);\r\n+        consumers.remove(serviceKey);\r\n+\r\n+    }\r\n+\r\n+    public void registerProvider(String serviceKey,\r\n+                                 Object serviceInstance,\r\n+                                 ServiceDescriptor serviceModel,\r\n+                                 ServiceConfigBase<?> serviceConfig,\r\n+                                 ServiceMetadata serviceMetadata) {\r\n+        ProviderModel providerModel = new ProviderModel(serviceKey, serviceInstance, serviceModel, serviceConfig,\r\n+                serviceMetadata);\r\n+        providers.putIfAbsent(serviceKey, providerModel);\r\n+        providersWithoutGroup.putIfAbsent(keyWithoutGroup(serviceKey), providerModel);\r\n+    }\r\n+\r\n+    private static String keyWithoutGroup(String serviceKey) {\r\n+        return interfaceFromServiceKey(serviceKey) + \":\" + versionFromServiceKey(serviceKey);\r\n+    }\r\n+\r\n+    public void reRegisterProvider(String newServiceKey, String serviceKey) {\r\n+        ProviderModel providerModel = providers.get(serviceKey);\r\n+        providerModel.setServiceKey(newServiceKey);\r\n+        providers.putIfAbsent(newServiceKey, providerModel);\r\n+        providers.remove(serviceKey);\r\n+    }\r\n+\r\n+    public List<ServiceDescriptor> getAllServices() {\r\n+        return Collections.unmodifiableList(new ArrayList<>(services.values()));\r\n+    }\r\n+\r\n+    public ServiceDescriptor lookupService(String interfaceName) {\r\n+        return services.get(interfaceName);\r\n+    }\r\n+\r\n+    public MethodDescriptor lookupMethod(String interfaceName, String methodName) {\r\n+        ServiceDescriptor serviceDescriptor = lookupService(interfaceName);\r\n+        if (serviceDescriptor == null) {\r\n+            return null;\r\n+        }\r\n+\r\n+        List<MethodDescriptor> methods = serviceDescriptor.getMethods(methodName);\r\n+        if (CollectionUtils.isEmpty(methods)) {\r\n+            return null;\r\n+        }\r\n+        return methods.iterator().next();\r\n+    }\r\n+\r\n+    public List<ProviderModel> getExportedServices() {\r\n+        return Collections.unmodifiableList(new ArrayList<>(providers.values()));\r\n+    }\r\n+\r\n+    public ProviderModel lookupExportedService(String serviceKey) {\r\n+        return providers.get(serviceKey);\r\n+    }\r\n+\r\n+    public ProviderModel lookupExportedServiceWithoutGroup(String key) {\r\n+        return providersWithoutGroup.get(key);\r\n+    }\r\n+\r\n+    public List<ConsumerModel> getReferredServices() {\r\n+        return Collections.unmodifiableList(new ArrayList<>(consumers.values()));\r\n+    }\r\n+\r\n+    public ConsumerModel lookupReferredService(String serviceKey) {\r\n+        return consumers.get(serviceKey);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() throws IllegalStateException {\r\n+        // currently works for unit test\r\n+        services.clear();\r\n+        consumers.clear();\r\n+        providers.clear();\r\n+        providersWithoutGroup.clear();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/service/Destroyable.java", "source2": "org/apache/dubbo/rpc/service/Destroyable.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,23 +1,23 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.service;\n-\n-public interface Destroyable {\n-\n-    void $destroy();\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.service;\r\n+\r\n+public interface Destroyable {\r\n+\r\n+    void $destroy();\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/service/EchoService.java", "source2": "org/apache/dubbo/rpc/service/EchoService.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.service;\n-\n-/**\n- * Echo service.\n- * @export\n- */\n-public interface EchoService {\n-\n-    /**\n-     * echo test.\n-     *\n-     * @param message message.\n-     * @return message.\n-     */\n-    Object $echo(Object message);\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.service;\r\n+\r\n+/**\r\n+ * Echo service.\r\n+ * @export\r\n+ */\r\n+public interface EchoService {\r\n+\r\n+    /**\r\n+     * echo test.\r\n+     *\r\n+     * @param message message.\r\n+     * @return message.\r\n+     */\r\n+    Object $echo(Object message);\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/rpc/service/EchoServiceDetector.java", "source2": "org/apache/dubbo/rpc/service/EchoServiceDetector.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,28 +1,28 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.service;\n-\n-import org.apache.dubbo.rpc.model.BuiltinServiceDetector;\n-\n-public class EchoServiceDetector implements BuiltinServiceDetector {\n-\n-    @Override\n-    public Class<?> getService() {\n-        return EchoService.class;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.service;\r\n+\r\n+import org.apache.dubbo.rpc.model.BuiltinServiceDetector;\r\n+\r\n+public class EchoServiceDetector implements BuiltinServiceDetector {\r\n+\r\n+    @Override\r\n+    public Class<?> getService() {\r\n+        return EchoService.class;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/service/GenericException.java", "source2": "org/apache/dubbo/rpc/service/GenericException.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,65 +1,65 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.service;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-/**\n- * GenericException\n- *\n- * @export\n- */\n-public class GenericException extends RuntimeException {\n-\n-    private static final long serialVersionUID = -1182299763306599962L;\n-\n-    private String exceptionClass;\n-\n-    private String exceptionMessage;\n-\n-    public GenericException() {\n-    }\n-\n-    public GenericException(String exceptionClass, String exceptionMessage) {\n-        super(exceptionMessage);\n-        this.exceptionClass = exceptionClass;\n-        this.exceptionMessage = exceptionMessage;\n-    }\n-\n-    public GenericException(Throwable cause) {\n-        super(StringUtils.toString(cause));\n-        this.exceptionClass = cause.getClass().getName();\n-        this.exceptionMessage = cause.getMessage();\n-    }\n-\n-    public String getExceptionClass() {\n-        return exceptionClass;\n-    }\n-\n-    public void setExceptionClass(String exceptionClass) {\n-        this.exceptionClass = exceptionClass;\n-    }\n-\n-    public String getExceptionMessage() {\n-        return exceptionMessage;\n-    }\n-\n-    public void setExceptionMessage(String exceptionMessage) {\n-        this.exceptionMessage = exceptionMessage;\n-    }\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.service;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+/**\r\n+ * GenericException\r\n+ *\r\n+ * @export\r\n+ */\r\n+public class GenericException extends RuntimeException {\r\n+\r\n+    private static final long serialVersionUID = -1182299763306599962L;\r\n+\r\n+    private String exceptionClass;\r\n+\r\n+    private String exceptionMessage;\r\n+\r\n+    public GenericException() {\r\n+    }\r\n+\r\n+    public GenericException(String exceptionClass, String exceptionMessage) {\r\n+        super(exceptionMessage);\r\n+        this.exceptionClass = exceptionClass;\r\n+        this.exceptionMessage = exceptionMessage;\r\n+    }\r\n+\r\n+    public GenericException(Throwable cause) {\r\n+        super(StringUtils.toString(cause));\r\n+        this.exceptionClass = cause.getClass().getName();\r\n+        this.exceptionMessage = cause.getMessage();\r\n+    }\r\n+\r\n+    public String getExceptionClass() {\r\n+        return exceptionClass;\r\n+    }\r\n+\r\n+    public void setExceptionClass(String exceptionClass) {\r\n+        this.exceptionClass = exceptionClass;\r\n+    }\r\n+\r\n+    public String getExceptionMessage() {\r\n+        return exceptionMessage;\r\n+    }\r\n+\r\n+    public void setExceptionMessage(String exceptionMessage) {\r\n+        this.exceptionMessage = exceptionMessage;\r\n+    }\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/rpc/service/GenericService.java", "source2": "org/apache/dubbo/rpc/service/GenericService.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,48 +1,48 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.service;\n-\n-import java.util.concurrent.CompletableFuture;\n-\n-/**\n- * Generic service interface\n- *\n- * @export\n- */\n-public interface GenericService {\n-\n-    /**\n-     * Generic invocation\n-     *\n-     * @param method         Method name, e.g. findPerson. If there are overridden methods, parameter info is\n-     *                       required, e.g. findPerson(java.lang.String)\n-     * @param parameterTypes Parameter types\n-     * @param args           Arguments\n-     * @return invocation return value\n-     * @throws GenericException potential exception thrown from the invocation\n-     */\n-    Object $invoke(String method, String[] parameterTypes, Object[] args) throws GenericException;\n-\n-    default CompletableFuture<Object> $invokeAsync(String method, String[] parameterTypes, Object[] args) throws GenericException {\n-        Object object = $invoke(method, parameterTypes, args);\n-        if (object instanceof CompletableFuture) {\n-            return (CompletableFuture<Object>) object;\n-        }\n-        return CompletableFuture.completedFuture(object);\n-    }\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.service;\r\n+\r\n+import java.util.concurrent.CompletableFuture;\r\n+\r\n+/**\r\n+ * Generic service interface\r\n+ *\r\n+ * @export\r\n+ */\r\n+public interface GenericService {\r\n+\r\n+    /**\r\n+     * Generic invocation\r\n+     *\r\n+     * @param method         Method name, e.g. findPerson. If there are overridden methods, parameter info is\r\n+     *                       required, e.g. findPerson(java.lang.String)\r\n+     * @param parameterTypes Parameter types\r\n+     * @param args           Arguments\r\n+     * @return invocation return value\r\n+     * @throws GenericException potential exception thrown from the invocation\r\n+     */\r\n+    Object $invoke(String method, String[] parameterTypes, Object[] args) throws GenericException;\r\n+\r\n+    default CompletableFuture<Object> $invokeAsync(String method, String[] parameterTypes, Object[] args) throws GenericException {\r\n+        Object object = $invoke(method, parameterTypes, args);\r\n+        if (object instanceof CompletableFuture) {\r\n+            return (CompletableFuture<Object>) object;\r\n+        }\r\n+        return CompletableFuture.completedFuture(object);\r\n+    }\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/rpc/service/GenericServiceDetector.java", "source2": "org/apache/dubbo/rpc/service/GenericServiceDetector.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,28 +1,28 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.service;\n-\n-import org.apache.dubbo.rpc.model.BuiltinServiceDetector;\n-\n-public class GenericServiceDetector implements BuiltinServiceDetector {\n-\n-    @Override\n-    public Class<?> getService() {\n-        return GenericService.class;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.service;\r\n+\r\n+import org.apache.dubbo.rpc.model.BuiltinServiceDetector;\r\n+\r\n+public class GenericServiceDetector implements BuiltinServiceDetector {\r\n+\r\n+    @Override\r\n+    public Class<?> getService() {\r\n+        return GenericService.class;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/support/GroupServiceKeyCache.java", "source2": "org/apache/dubbo/rpc/support/GroupServiceKeyCache.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,71 +1,71 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.support;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-public class GroupServiceKeyCache {\n-\n-    private final String serviceGroup;\n-\n-    //ConcurrentMap<serviceName, ConcurrentMap<serviceVersion, ConcurrentMap<port, String>>>\n-    private final ConcurrentMap<String, ConcurrentMap<String, ConcurrentMap<Integer, String>>> serviceKeyMap;\n-\n-    public GroupServiceKeyCache(String serviceGroup) {\n-        this.serviceGroup = serviceGroup;\n-        this.serviceKeyMap = new ConcurrentHashMap<>(512);\n-    }\n-\n-    public String getServiceKey(String serviceName, String serviceVersion, int port) {\n-        ConcurrentMap<String, ConcurrentMap<Integer, String>> versionMap = serviceKeyMap.get(serviceName);\n-        if (versionMap == null) {\n-            serviceKeyMap.putIfAbsent(serviceName, new ConcurrentHashMap<>());\n-            versionMap = serviceKeyMap.get(serviceName);\n-        }\n-\n-        serviceVersion = serviceVersion == null ? \"\" : serviceVersion;\n-        ConcurrentMap<Integer, String> portMap = versionMap.get(serviceVersion);\n-        if (portMap == null) {\n-            versionMap.putIfAbsent(serviceVersion, new ConcurrentHashMap<>());\n-            portMap = versionMap.get(serviceVersion);\n-        }\n-\n-        String serviceKey = portMap.get(port);\n-        if (serviceKey == null) {\n-            serviceKey = createServiceKey(serviceName, serviceVersion, port);\n-            portMap.put(port, serviceKey);\n-        }\n-        return serviceKey;\n-    }\n-\n-    private String createServiceKey(String serviceName, String serviceVersion, int port) {\n-        StringBuilder buf = new StringBuilder();\n-        if (StringUtils.isNotEmpty(serviceGroup)) {\n-            buf.append(serviceGroup).append('/');\n-        }\n-\n-        buf.append(serviceName);\n-        if (StringUtils.isNotEmpty(serviceVersion) && !\"0.0.0\".equals(serviceVersion)) {\n-            buf.append(':').append(serviceVersion);\n-        }\n-        buf.append(':').append(port);\n-        return buf.toString();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.support;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+public class GroupServiceKeyCache {\r\n+\r\n+    private final String serviceGroup;\r\n+\r\n+    //ConcurrentMap<serviceName, ConcurrentMap<serviceVersion, ConcurrentMap<port, String>>>\r\n+    private final ConcurrentMap<String, ConcurrentMap<String, ConcurrentMap<Integer, String>>> serviceKeyMap;\r\n+\r\n+    public GroupServiceKeyCache(String serviceGroup) {\r\n+        this.serviceGroup = serviceGroup;\r\n+        this.serviceKeyMap = new ConcurrentHashMap<>(512);\r\n+    }\r\n+\r\n+    public String getServiceKey(String serviceName, String serviceVersion, int port) {\r\n+        ConcurrentMap<String, ConcurrentMap<Integer, String>> versionMap = serviceKeyMap.get(serviceName);\r\n+        if (versionMap == null) {\r\n+            serviceKeyMap.putIfAbsent(serviceName, new ConcurrentHashMap<>());\r\n+            versionMap = serviceKeyMap.get(serviceName);\r\n+        }\r\n+\r\n+        serviceVersion = serviceVersion == null ? \"\" : serviceVersion;\r\n+        ConcurrentMap<Integer, String> portMap = versionMap.get(serviceVersion);\r\n+        if (portMap == null) {\r\n+            versionMap.putIfAbsent(serviceVersion, new ConcurrentHashMap<>());\r\n+            portMap = versionMap.get(serviceVersion);\r\n+        }\r\n+\r\n+        String serviceKey = portMap.get(port);\r\n+        if (serviceKey == null) {\r\n+            serviceKey = createServiceKey(serviceName, serviceVersion, port);\r\n+            portMap.put(port, serviceKey);\r\n+        }\r\n+        return serviceKey;\r\n+    }\r\n+\r\n+    private String createServiceKey(String serviceName, String serviceVersion, int port) {\r\n+        StringBuilder buf = new StringBuilder();\r\n+        if (StringUtils.isNotEmpty(serviceGroup)) {\r\n+            buf.append(serviceGroup).append('/');\r\n+        }\r\n+\r\n+        buf.append(serviceName);\r\n+        if (StringUtils.isNotEmpty(serviceVersion) && !\"0.0.0\".equals(serviceVersion)) {\r\n+            buf.append(':').append(serviceVersion);\r\n+        }\r\n+        buf.append(':').append(port);\r\n+        return buf.toString();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/support/ProtocolUtils.java", "source2": "org/apache/dubbo/rpc/support/ProtocolUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,91 +1,91 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.support;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_RAW_RETURN;\n-import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_SERIALIZATION_BEAN;\n-import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_SERIALIZATION_DEFAULT;\n-import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_SERIALIZATION_NATIVE_JAVA;\n-import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_SERIALIZATION_PROTOBUF;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-\n-public class ProtocolUtils {\n-\n-    private static final ConcurrentMap<String, GroupServiceKeyCache> groupServiceKeyCacheMap = new ConcurrentHashMap<>();\n-\n-    private ProtocolUtils() {\n-    }\n-\n-    public static String serviceKey(URL url) {\n-        return serviceKey(url.getPort(), url.getPath(), url.getParameter(VERSION_KEY),\n-                url.getParameter(GROUP_KEY));\n-    }\n-\n-    public static String serviceKey(int port, String serviceName, String serviceVersion, String serviceGroup) {\n-        serviceGroup = serviceGroup == null ? \"\" : serviceGroup;\n-        GroupServiceKeyCache groupServiceKeyCache = groupServiceKeyCacheMap.get(serviceGroup);\n-        if (groupServiceKeyCache == null) {\n-            groupServiceKeyCacheMap.putIfAbsent(serviceGroup, new GroupServiceKeyCache(serviceGroup));\n-            groupServiceKeyCache = groupServiceKeyCacheMap.get(serviceGroup);\n-        }\n-        return groupServiceKeyCache.getServiceKey(serviceName, serviceVersion, port);\n-    }\n-\n-    public static boolean isGeneric(String generic) {\n-        return StringUtils.isNotEmpty(generic)\n-                && (GENERIC_SERIALIZATION_DEFAULT.equalsIgnoreCase(generic)  /* Normal generalization cal */\n-                || GENERIC_SERIALIZATION_NATIVE_JAVA.equalsIgnoreCase(generic) /* Streaming generalization call supporting jdk serialization */\n-                || GENERIC_SERIALIZATION_BEAN.equalsIgnoreCase(generic)\n-                || GENERIC_SERIALIZATION_PROTOBUF.equalsIgnoreCase(generic)\n-                || GENERIC_RAW_RETURN.equalsIgnoreCase(generic));\n-\n-    }\n-\n-    public static boolean isValidGenericValue(String generic) {\n-        return isGeneric(generic) || Boolean.FALSE.toString().equalsIgnoreCase(generic);\n-\n-    }\n-\n-    public static boolean isDefaultGenericSerialization(String generic) {\n-        return isGeneric(generic)\n-                && GENERIC_SERIALIZATION_DEFAULT.equalsIgnoreCase(generic);\n-    }\n-\n-    public static boolean isJavaGenericSerialization(String generic) {\n-        return isGeneric(generic)\n-                && GENERIC_SERIALIZATION_NATIVE_JAVA.equalsIgnoreCase(generic);\n-    }\n-\n-    public static boolean isBeanGenericSerialization(String generic) {\n-        return isGeneric(generic) && GENERIC_SERIALIZATION_BEAN.equals(generic);\n-    }\n-\n-    public static boolean isProtobufGenericSerialization(String generic) {\n-        return isGeneric(generic) && GENERIC_SERIALIZATION_PROTOBUF.equals(generic);\n-    }\n-\n-    public static boolean isGenericReturnRawResult(String generic) {\n-        return GENERIC_RAW_RETURN.equals(generic);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.support;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_RAW_RETURN;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_SERIALIZATION_BEAN;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_SERIALIZATION_DEFAULT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_SERIALIZATION_NATIVE_JAVA;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_SERIALIZATION_PROTOBUF;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+\r\n+public class ProtocolUtils {\r\n+\r\n+    private static final ConcurrentMap<String, GroupServiceKeyCache> groupServiceKeyCacheMap = new ConcurrentHashMap<>();\r\n+\r\n+    private ProtocolUtils() {\r\n+    }\r\n+\r\n+    public static String serviceKey(URL url) {\r\n+        return serviceKey(url.getPort(), url.getPath(), url.getParameter(VERSION_KEY),\r\n+                url.getParameter(GROUP_KEY));\r\n+    }\r\n+\r\n+    public static String serviceKey(int port, String serviceName, String serviceVersion, String serviceGroup) {\r\n+        serviceGroup = serviceGroup == null ? \"\" : serviceGroup;\r\n+        GroupServiceKeyCache groupServiceKeyCache = groupServiceKeyCacheMap.get(serviceGroup);\r\n+        if (groupServiceKeyCache == null) {\r\n+            groupServiceKeyCacheMap.putIfAbsent(serviceGroup, new GroupServiceKeyCache(serviceGroup));\r\n+            groupServiceKeyCache = groupServiceKeyCacheMap.get(serviceGroup);\r\n+        }\r\n+        return groupServiceKeyCache.getServiceKey(serviceName, serviceVersion, port);\r\n+    }\r\n+\r\n+    public static boolean isGeneric(String generic) {\r\n+        return StringUtils.isNotEmpty(generic)\r\n+                && (GENERIC_SERIALIZATION_DEFAULT.equalsIgnoreCase(generic)  /* Normal generalization cal */\r\n+                || GENERIC_SERIALIZATION_NATIVE_JAVA.equalsIgnoreCase(generic) /* Streaming generalization call supporting jdk serialization */\r\n+                || GENERIC_SERIALIZATION_BEAN.equalsIgnoreCase(generic)\r\n+                || GENERIC_SERIALIZATION_PROTOBUF.equalsIgnoreCase(generic)\r\n+                || GENERIC_RAW_RETURN.equalsIgnoreCase(generic));\r\n+\r\n+    }\r\n+\r\n+    public static boolean isValidGenericValue(String generic) {\r\n+        return isGeneric(generic) || Boolean.FALSE.toString().equalsIgnoreCase(generic);\r\n+\r\n+    }\r\n+\r\n+    public static boolean isDefaultGenericSerialization(String generic) {\r\n+        return isGeneric(generic)\r\n+                && GENERIC_SERIALIZATION_DEFAULT.equalsIgnoreCase(generic);\r\n+    }\r\n+\r\n+    public static boolean isJavaGenericSerialization(String generic) {\r\n+        return isGeneric(generic)\r\n+                && GENERIC_SERIALIZATION_NATIVE_JAVA.equalsIgnoreCase(generic);\r\n+    }\r\n+\r\n+    public static boolean isBeanGenericSerialization(String generic) {\r\n+        return isGeneric(generic) && GENERIC_SERIALIZATION_BEAN.equals(generic);\r\n+    }\r\n+\r\n+    public static boolean isProtobufGenericSerialization(String generic) {\r\n+        return isGeneric(generic) && GENERIC_SERIALIZATION_PROTOBUF.equals(generic);\r\n+    }\r\n+\r\n+    public static boolean isGenericReturnRawResult(String generic) {\r\n+        return GENERIC_RAW_RETURN.equals(generic);\r\n+    }\r\n+}\r\n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.common.context.FrameworkExt", "source2": "META-INF/dubbo/internal/org.apache.dubbo.common.context.FrameworkExt", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,3 +1,3 @@\n-config=org.apache.dubbo.config.context.ConfigManager\n-environment=org.apache.dubbo.common.config.Environment\n+config=org.apache.dubbo.config.context.ConfigManager\r\n+environment=org.apache.dubbo.common.config.Environment\r\n repository=org.apache.dubbo.rpc.model.ServiceRepository\n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.rpc.model.BuiltinServiceDetector", "source2": "META-INF/dubbo/internal/org.apache.dubbo.rpc.model.BuiltinServiceDetector", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,2 +1,2 @@\n-echo=org.apache.dubbo.rpc.service.EchoServiceDetector\n+echo=org.apache.dubbo.rpc.service.EchoServiceDetector\r\n generic=org.apache.dubbo.rpc.service.GenericServiceDetector\n"}, {"source1": "org/apache/dubbo/cache/support/expiring/ExpiringCache.java", "source2": "org/apache/dubbo/cache/support/expiring/ExpiringCache.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,77 +1,77 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.cache.support.expiring;\n-\n-import org.apache.dubbo.cache.Cache;\n-import org.apache.dubbo.common.URL;\n-\n-import java.util.Map;\n-\n-/**\n- * ExpiringCache - With the characteristic of expiration time.\n- */\n-\n-/**\n- * This class store the cache value with the characteristic of expiration time. If a service,method,consumer or provided is configured with key <b>cache</b>\n- * with value <b>expiring</b>, dubbo initialize the instance of this class using {@link ExpiringCacheFactory} to store method's returns value\n- * to server from store without making method call.\n- * <pre>\n- *     e.g. 1) &lt;dubbo:service cache=\"expiring\" cache.seconds=\"60\" cache.interval=\"10\"/&gt;\n- *          2) &lt;dubbo:consumer cache=\"expiring\" /&gt;\n- * </pre>\n- * <li>It used constructor argument url instance <b>cache.seconds</b> value to decide time to live of cached object.Default value of it is 180 second.</li>\n- * <li>It used constructor argument url instance <b>cache.interval</b> value for cache value expiration interval.Default value of this is 4 second</li>\n- * @see Cache\n- * @see ExpiringCacheFactory\n- * @see org.apache.dubbo.cache.support.AbstractCacheFactory\n- * @see org.apache.dubbo.cache.filter.CacheFilter\n- */\n-public class ExpiringCache implements Cache {\n-    private final Map<Object, Object> store;\n-\n-    public ExpiringCache(URL url) {\n-        // cache time (second)\n-        final int secondsToLive = url.getParameter(\"cache.seconds\", 180);\n-        // Cache check interval (second)\n-        final int intervalSeconds = url.getParameter(\"cache.interval\", 4);\n-        ExpiringMap<Object, Object> expiringMap = new ExpiringMap<>(secondsToLive, intervalSeconds);\n-        expiringMap.getExpireThread().startExpiryIfNotStarted();\n-        this.store = expiringMap;\n-    }\n-\n-    /**\n-     * API to store value against a key in the calling thread scope.\n-     * @param key  Unique identifier for the object being store.\n-     * @param value Value getting store\n-     */\n-    @Override\n-    public void put(Object key, Object value) {\n-        store.put(key, value);\n-    }\n-\n-    /**\n-     * API to return stored value using a key against the calling thread specific store.\n-     * @param key Unique identifier for cache lookup\n-     * @return Return stored object against key\n-     */\n-\n-    @Override\n-    public Object get(Object key) {\n-        return store.get(key);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.cache.support.expiring;\r\n+\r\n+import org.apache.dubbo.cache.Cache;\r\n+import org.apache.dubbo.common.URL;\r\n+\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * ExpiringCache - With the characteristic of expiration time.\r\n+ */\r\n+\r\n+/**\r\n+ * This class store the cache value with the characteristic of expiration time. If a service,method,consumer or provided is configured with key <b>cache</b>\r\n+ * with value <b>expiring</b>, dubbo initialize the instance of this class using {@link ExpiringCacheFactory} to store method's returns value\r\n+ * to server from store without making method call.\r\n+ * <pre>\r\n+ *     e.g. 1) &lt;dubbo:service cache=\"expiring\" cache.seconds=\"60\" cache.interval=\"10\"/&gt;\r\n+ *          2) &lt;dubbo:consumer cache=\"expiring\" /&gt;\r\n+ * </pre>\r\n+ * <li>It used constructor argument url instance <b>cache.seconds</b> value to decide time to live of cached object.Default value of it is 180 second.</li>\r\n+ * <li>It used constructor argument url instance <b>cache.interval</b> value for cache value expiration interval.Default value of this is 4 second</li>\r\n+ * @see Cache\r\n+ * @see ExpiringCacheFactory\r\n+ * @see org.apache.dubbo.cache.support.AbstractCacheFactory\r\n+ * @see org.apache.dubbo.cache.filter.CacheFilter\r\n+ */\r\n+public class ExpiringCache implements Cache {\r\n+    private final Map<Object, Object> store;\r\n+\r\n+    public ExpiringCache(URL url) {\r\n+        // cache time (second)\r\n+        final int secondsToLive = url.getParameter(\"cache.seconds\", 180);\r\n+        // Cache check interval (second)\r\n+        final int intervalSeconds = url.getParameter(\"cache.interval\", 4);\r\n+        ExpiringMap<Object, Object> expiringMap = new ExpiringMap<>(secondsToLive, intervalSeconds);\r\n+        expiringMap.getExpireThread().startExpiryIfNotStarted();\r\n+        this.store = expiringMap;\r\n+    }\r\n+\r\n+    /**\r\n+     * API to store value against a key in the calling thread scope.\r\n+     * @param key  Unique identifier for the object being store.\r\n+     * @param value Value getting store\r\n+     */\r\n+    @Override\r\n+    public void put(Object key, Object value) {\r\n+        store.put(key, value);\r\n+    }\r\n+\r\n+    /**\r\n+     * API to return stored value using a key against the calling thread specific store.\r\n+     * @param key Unique identifier for cache lookup\r\n+     * @return Return stored object against key\r\n+     */\r\n+\r\n+    @Override\r\n+    public Object get(Object key) {\r\n+        return store.get(key);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/cache/support/expiring/ExpiringMap.java", "source2": "org/apache/dubbo/cache/support/expiring/ExpiringMap.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,386 +1,386 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.cache.support.expiring;\n-\n-import java.util.ArrayList;\n-import java.util.Collection;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.atomic.AtomicInteger;\n-import java.util.concurrent.atomic.AtomicLong;\n-\n-/**\n- * can be expired map\n- * Contains a background thread that periodically checks if the data is out of date\n- */\n-public class ExpiringMap<K, V> implements Map<K, V> {\n-\n-    /**\n-     * default time to live (second)\n-     */\n-    private static final int DEFAULT_TIME_TO_LIVE = 180;\n-\n-    /**\n-     * default expire check interval (second)\n-     */\n-    private static final int DEFAULT_EXPIRATION_INTERVAL = 1;\n-\n-    private static AtomicInteger expireCount = new AtomicInteger(1);\n-\n-    private final ConcurrentHashMap<K, ExpiryObject> delegateMap;\n-\n-    private final ExpireThread expireThread;\n-\n-    public ExpiringMap() {\n-        this(DEFAULT_TIME_TO_LIVE, DEFAULT_EXPIRATION_INTERVAL);\n-    }\n-\n-    /**\n-     * Constructor\n-     *\n-     * @param timeToLive time to live (second)\n-     */\n-    public ExpiringMap(int timeToLive) {\n-        this(timeToLive, DEFAULT_EXPIRATION_INTERVAL);\n-    }\n-\n-    public ExpiringMap(int timeToLive, int expirationInterval) {\n-        this(new ConcurrentHashMap<>(), timeToLive, expirationInterval);\n-    }\n-\n-    private ExpiringMap(ConcurrentHashMap<K, ExpiryObject> delegateMap, int timeToLive, int expirationInterval) {\n-        this.delegateMap = delegateMap;\n-        this.expireThread = new ExpireThread();\n-        expireThread.setTimeToLive(timeToLive);\n-        expireThread.setExpirationInterval(expirationInterval);\n-    }\n-\n-    @Override\n-    public V put(K key, V value) {\n-        ExpiryObject answer = delegateMap.put(key, new ExpiryObject(key, value, System.currentTimeMillis()));\n-        if (answer == null) {\n-            return null;\n-        }\n-        return answer.getValue();\n-    }\n-\n-    @Override\n-    public V get(Object key) {\n-        ExpiryObject object = delegateMap.get(key);\n-        if (object != null) {\n-            long timeIdle = System.currentTimeMillis() - object.getLastAccessTime();\n-            int timeToLive = expireThread.getTimeToLive();\n-            if (timeToLive > 0 && timeIdle >= timeToLive * 1000) {\n-                delegateMap.remove(object.getKey());\n-                return null;\n-            }\n-            object.setLastAccessTime(System.currentTimeMillis());\n-            return object.getValue();\n-        }\n-        return null;\n-    }\n-\n-    @Override\n-    public V remove(Object key) {\n-        ExpiryObject answer = delegateMap.remove(key);\n-        if (answer == null) {\n-            return null;\n-        }\n-        return answer.getValue();\n-    }\n-\n-    @Override\n-    public boolean containsKey(Object key) {\n-        return delegateMap.containsKey(key);\n-    }\n-\n-    @Override\n-    public boolean containsValue(Object value) {\n-        return delegateMap.containsValue(value);\n-    }\n-\n-    @Override\n-    public int size() {\n-        return delegateMap.size();\n-    }\n-\n-    @Override\n-    public boolean isEmpty() {\n-        return delegateMap.isEmpty();\n-    }\n-\n-    @Override\n-    public void clear() {\n-        delegateMap.clear();\n-        expireThread.stopExpiring();\n-    }\n-\n-    @Override\n-    public int hashCode() {\n-        return delegateMap.hashCode();\n-    }\n-\n-    @Override\n-    public Set<K> keySet() {\n-        return delegateMap.keySet();\n-    }\n-\n-    @Override\n-    public boolean equals(Object obj) {\n-        if (this == obj) {\n-            return true;\n-        }\n-        return delegateMap.equals(obj);\n-    }\n-\n-    @Override\n-    public void putAll(Map<? extends K, ? extends V> inMap) {\n-        for (Entry<? extends K, ? extends V> e : inMap.entrySet()) {\n-            this.put(e.getKey(), e.getValue());\n-        }\n-    }\n-\n-    @Override\n-    public Collection<V> values() {\n-        List<V> list = new ArrayList<V>();\n-        Set<Entry<K, ExpiryObject>> delegatedSet = delegateMap.entrySet();\n-        for (Entry<K, ExpiryObject> entry : delegatedSet) {\n-            ExpiryObject value = entry.getValue();\n-            list.add(value.getValue());\n-        }\n-        return list;\n-    }\n-\n-    @Override\n-    public Set<Entry<K, V>> entrySet() {\n-        throw new UnsupportedOperationException();\n-    }\n-\n-    public ExpireThread getExpireThread() {\n-        return expireThread;\n-    }\n-\n-    public int getExpirationInterval() {\n-        return expireThread.getExpirationInterval();\n-    }\n-\n-    public void setExpirationInterval(int expirationInterval) {\n-        expireThread.setExpirationInterval(expirationInterval);\n-    }\n-\n-    public int getTimeToLive() {\n-        return expireThread.getTimeToLive();\n-    }\n-\n-    public void setTimeToLive(int timeToLive) {\n-        expireThread.setTimeToLive(timeToLive);\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"ExpiringMap{\" +\n-                \"delegateMap=\" + delegateMap.toString() +\n-                \", expireThread=\" + expireThread.toString() +\n-                '}';\n-    }\n-\n-    /**\n-     * can be expired object\n-     */\n-    private class ExpiryObject {\n-        private K key;\n-        private V value;\n-        private AtomicLong lastAccessTime;\n-\n-        ExpiryObject(K key, V value, long lastAccessTime) {\n-            if (value == null) {\n-                throw new IllegalArgumentException(\"An expiring object cannot be null.\");\n-            }\n-            this.key = key;\n-            this.value = value;\n-            this.lastAccessTime = new AtomicLong(lastAccessTime);\n-        }\n-\n-        public long getLastAccessTime() {\n-            return lastAccessTime.get();\n-        }\n-\n-        public void setLastAccessTime(long lastAccessTime) {\n-            this.lastAccessTime.set(lastAccessTime);\n-        }\n-\n-        public K getKey() {\n-            return key;\n-        }\n-\n-        public V getValue() {\n-            return value;\n-        }\n-\n-        @Override\n-        public boolean equals(Object obj) {\n-            if (this == obj) {\n-                return true;\n-            }\n-            return value.equals(obj);\n-        }\n-\n-        @Override\n-        public int hashCode() {\n-            return value.hashCode();\n-        }\n-\n-        @Override\n-        public String toString() {\n-            return \"ExpiryObject{\" +\n-                    \"key=\" + key +\n-                    \", value=\" + value +\n-                    \", lastAccessTime=\" + lastAccessTime +\n-                    '}';\n-        }\n-    }\n-\n-    /**\n-     * Background thread, periodically checking if the data is out of date\n-     */\n-    public class ExpireThread implements Runnable {\n-        private long timeToLiveMillis;\n-        private long expirationIntervalMillis;\n-        private volatile boolean running = false;\n-        private final Thread expirerThread;\n-\n-        @Override\n-        public String toString() {\n-            return \"ExpireThread{\" +\n-                    \", timeToLiveMillis=\" + timeToLiveMillis +\n-                    \", expirationIntervalMillis=\" + expirationIntervalMillis +\n-                    \", running=\" + running +\n-                    \", expirerThread=\" + expirerThread +\n-                    '}';\n-        }\n-\n-        public ExpireThread() {\n-            expirerThread = new Thread(this, \"ExpiryMapExpire-\" + expireCount.getAndIncrement());\n-            expirerThread.setDaemon(true);\n-        }\n-\n-        @Override\n-        public void run() {\n-            while (running) {\n-                processExpires();\n-                try {\n-                    Thread.sleep(expirationIntervalMillis);\n-                } catch (InterruptedException e) {\n-                    running = false;\n-                }\n-            }\n-        }\n-\n-        private void processExpires() {\n-            long timeNow = System.currentTimeMillis();\n-            if (timeToLiveMillis <= 0) {\n-                return;\n-            }\n-            for (ExpiryObject o : delegateMap.values()) {\n-                long timeIdle = timeNow - o.getLastAccessTime();\n-                if (timeIdle >= timeToLiveMillis) {\n-                    delegateMap.remove(o.getKey());\n-                }\n-            }\n-        }\n-\n-        /**\n-         * start expiring Thread\n-         */\n-        public void startExpiring() {\n-            if (!running) {\n-                running = true;\n-                expirerThread.start();\n-            }\n-        }\n-\n-        /**\n-         * start thread\n-         */\n-        public void startExpiryIfNotStarted() {\n-            if (running && timeToLiveMillis <= 0) {\n-                return;\n-            }\n-            startExpiring();\n-        }\n-\n-        /**\n-         * stop thread\n-         */\n-        public void stopExpiring() {\n-            if (running) {\n-                running = false;\n-                expirerThread.interrupt();\n-            }\n-        }\n-\n-        /**\n-         * get thread state\n-         *\n-         * @return thread state\n-         */\n-        public boolean isRunning() {\n-            return running;\n-        }\n-\n-        /**\n-         * get time to live\n-         *\n-         * @return time to live\n-         */\n-        public int getTimeToLive() {\n-            return (int) timeToLiveMillis / 1000;\n-        }\n-\n-        /**\n-         * update time to live\n-         *\n-         * @param timeToLive time to live\n-         */\n-        public void setTimeToLive(long timeToLive) {\n-            this.timeToLiveMillis = timeToLive * 1000;\n-        }\n-\n-        /**\n-         * get expiration interval\n-         *\n-         * @return expiration interval (second)\n-         */\n-        public int getExpirationInterval() {\n-            return (int) expirationIntervalMillis / 1000;\n-        }\n-\n-        /**\n-         * set expiration interval\n-         *\n-         * @param expirationInterval expiration interval (second)\n-         */\n-        public void setExpirationInterval(long expirationInterval) {\n-            this.expirationIntervalMillis = expirationInterval * 1000;\n-        }\n-    }\n-}\n-\n-\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.cache.support.expiring;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Collection;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.atomic.AtomicInteger;\r\n+import java.util.concurrent.atomic.AtomicLong;\r\n+\r\n+/**\r\n+ * can be expired map\r\n+ * Contains a background thread that periodically checks if the data is out of date\r\n+ */\r\n+public class ExpiringMap<K, V> implements Map<K, V> {\r\n+\r\n+    /**\r\n+     * default time to live (second)\r\n+     */\r\n+    private static final int DEFAULT_TIME_TO_LIVE = 180;\r\n+\r\n+    /**\r\n+     * default expire check interval (second)\r\n+     */\r\n+    private static final int DEFAULT_EXPIRATION_INTERVAL = 1;\r\n+\r\n+    private static AtomicInteger expireCount = new AtomicInteger(1);\r\n+\r\n+    private final ConcurrentHashMap<K, ExpiryObject> delegateMap;\r\n+\r\n+    private final ExpireThread expireThread;\r\n+\r\n+    public ExpiringMap() {\r\n+        this(DEFAULT_TIME_TO_LIVE, DEFAULT_EXPIRATION_INTERVAL);\r\n+    }\r\n+\r\n+    /**\r\n+     * Constructor\r\n+     *\r\n+     * @param timeToLive time to live (second)\r\n+     */\r\n+    public ExpiringMap(int timeToLive) {\r\n+        this(timeToLive, DEFAULT_EXPIRATION_INTERVAL);\r\n+    }\r\n+\r\n+    public ExpiringMap(int timeToLive, int expirationInterval) {\r\n+        this(new ConcurrentHashMap<>(), timeToLive, expirationInterval);\r\n+    }\r\n+\r\n+    private ExpiringMap(ConcurrentHashMap<K, ExpiryObject> delegateMap, int timeToLive, int expirationInterval) {\r\n+        this.delegateMap = delegateMap;\r\n+        this.expireThread = new ExpireThread();\r\n+        expireThread.setTimeToLive(timeToLive);\r\n+        expireThread.setExpirationInterval(expirationInterval);\r\n+    }\r\n+\r\n+    @Override\r\n+    public V put(K key, V value) {\r\n+        ExpiryObject answer = delegateMap.put(key, new ExpiryObject(key, value, System.currentTimeMillis()));\r\n+        if (answer == null) {\r\n+            return null;\r\n+        }\r\n+        return answer.getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public V get(Object key) {\r\n+        ExpiryObject object = delegateMap.get(key);\r\n+        if (object != null) {\r\n+            long timeIdle = System.currentTimeMillis() - object.getLastAccessTime();\r\n+            int timeToLive = expireThread.getTimeToLive();\r\n+            if (timeToLive > 0 && timeIdle >= timeToLive * 1000) {\r\n+                delegateMap.remove(object.getKey());\r\n+                return null;\r\n+            }\r\n+            object.setLastAccessTime(System.currentTimeMillis());\r\n+            return object.getValue();\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public V remove(Object key) {\r\n+        ExpiryObject answer = delegateMap.remove(key);\r\n+        if (answer == null) {\r\n+            return null;\r\n+        }\r\n+        return answer.getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean containsKey(Object key) {\r\n+        return delegateMap.containsKey(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean containsValue(Object value) {\r\n+        return delegateMap.containsValue(value);\r\n+    }\r\n+\r\n+    @Override\r\n+    public int size() {\r\n+        return delegateMap.size();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isEmpty() {\r\n+        return delegateMap.isEmpty();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void clear() {\r\n+        delegateMap.clear();\r\n+        expireThread.stopExpiring();\r\n+    }\r\n+\r\n+    @Override\r\n+    public int hashCode() {\r\n+        return delegateMap.hashCode();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<K> keySet() {\r\n+        return delegateMap.keySet();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean equals(Object obj) {\r\n+        if (this == obj) {\r\n+            return true;\r\n+        }\r\n+        return delegateMap.equals(obj);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void putAll(Map<? extends K, ? extends V> inMap) {\r\n+        for (Entry<? extends K, ? extends V> e : inMap.entrySet()) {\r\n+            this.put(e.getKey(), e.getValue());\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public Collection<V> values() {\r\n+        List<V> list = new ArrayList<V>();\r\n+        Set<Entry<K, ExpiryObject>> delegatedSet = delegateMap.entrySet();\r\n+        for (Entry<K, ExpiryObject> entry : delegatedSet) {\r\n+            ExpiryObject value = entry.getValue();\r\n+            list.add(value.getValue());\r\n+        }\r\n+        return list;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<Entry<K, V>> entrySet() {\r\n+        throw new UnsupportedOperationException();\r\n+    }\r\n+\r\n+    public ExpireThread getExpireThread() {\r\n+        return expireThread;\r\n+    }\r\n+\r\n+    public int getExpirationInterval() {\r\n+        return expireThread.getExpirationInterval();\r\n+    }\r\n+\r\n+    public void setExpirationInterval(int expirationInterval) {\r\n+        expireThread.setExpirationInterval(expirationInterval);\r\n+    }\r\n+\r\n+    public int getTimeToLive() {\r\n+        return expireThread.getTimeToLive();\r\n+    }\r\n+\r\n+    public void setTimeToLive(int timeToLive) {\r\n+        expireThread.setTimeToLive(timeToLive);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"ExpiringMap{\" +\r\n+                \"delegateMap=\" + delegateMap.toString() +\r\n+                \", expireThread=\" + expireThread.toString() +\r\n+                '}';\r\n+    }\r\n+\r\n+    /**\r\n+     * can be expired object\r\n+     */\r\n+    private class ExpiryObject {\r\n+        private K key;\r\n+        private V value;\r\n+        private AtomicLong lastAccessTime;\r\n+\r\n+        ExpiryObject(K key, V value, long lastAccessTime) {\r\n+            if (value == null) {\r\n+                throw new IllegalArgumentException(\"An expiring object cannot be null.\");\r\n+            }\r\n+            this.key = key;\r\n+            this.value = value;\r\n+            this.lastAccessTime = new AtomicLong(lastAccessTime);\r\n+        }\r\n+\r\n+        public long getLastAccessTime() {\r\n+            return lastAccessTime.get();\r\n+        }\r\n+\r\n+        public void setLastAccessTime(long lastAccessTime) {\r\n+            this.lastAccessTime.set(lastAccessTime);\r\n+        }\r\n+\r\n+        public K getKey() {\r\n+            return key;\r\n+        }\r\n+\r\n+        public V getValue() {\r\n+            return value;\r\n+        }\r\n+\r\n+        @Override\r\n+        public boolean equals(Object obj) {\r\n+            if (this == obj) {\r\n+                return true;\r\n+            }\r\n+            return value.equals(obj);\r\n+        }\r\n+\r\n+        @Override\r\n+        public int hashCode() {\r\n+            return value.hashCode();\r\n+        }\r\n+\r\n+        @Override\r\n+        public String toString() {\r\n+            return \"ExpiryObject{\" +\r\n+                    \"key=\" + key +\r\n+                    \", value=\" + value +\r\n+                    \", lastAccessTime=\" + lastAccessTime +\r\n+                    '}';\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Background thread, periodically checking if the data is out of date\r\n+     */\r\n+    public class ExpireThread implements Runnable {\r\n+        private long timeToLiveMillis;\r\n+        private long expirationIntervalMillis;\r\n+        private volatile boolean running = false;\r\n+        private final Thread expirerThread;\r\n+\r\n+        @Override\r\n+        public String toString() {\r\n+            return \"ExpireThread{\" +\r\n+                    \", timeToLiveMillis=\" + timeToLiveMillis +\r\n+                    \", expirationIntervalMillis=\" + expirationIntervalMillis +\r\n+                    \", running=\" + running +\r\n+                    \", expirerThread=\" + expirerThread +\r\n+                    '}';\r\n+        }\r\n+\r\n+        public ExpireThread() {\r\n+            expirerThread = new Thread(this, \"ExpiryMapExpire-\" + expireCount.getAndIncrement());\r\n+            expirerThread.setDaemon(true);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void run() {\r\n+            while (running) {\r\n+                processExpires();\r\n+                try {\r\n+                    Thread.sleep(expirationIntervalMillis);\r\n+                } catch (InterruptedException e) {\r\n+                    running = false;\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        private void processExpires() {\r\n+            long timeNow = System.currentTimeMillis();\r\n+            if (timeToLiveMillis <= 0) {\r\n+                return;\r\n+            }\r\n+            for (ExpiryObject o : delegateMap.values()) {\r\n+                long timeIdle = timeNow - o.getLastAccessTime();\r\n+                if (timeIdle >= timeToLiveMillis) {\r\n+                    delegateMap.remove(o.getKey());\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        /**\r\n+         * start expiring Thread\r\n+         */\r\n+        public void startExpiring() {\r\n+            if (!running) {\r\n+                running = true;\r\n+                expirerThread.start();\r\n+            }\r\n+        }\r\n+\r\n+        /**\r\n+         * start thread\r\n+         */\r\n+        public void startExpiryIfNotStarted() {\r\n+            if (running && timeToLiveMillis <= 0) {\r\n+                return;\r\n+            }\r\n+            startExpiring();\r\n+        }\r\n+\r\n+        /**\r\n+         * stop thread\r\n+         */\r\n+        public void stopExpiring() {\r\n+            if (running) {\r\n+                running = false;\r\n+                expirerThread.interrupt();\r\n+            }\r\n+        }\r\n+\r\n+        /**\r\n+         * get thread state\r\n+         *\r\n+         * @return thread state\r\n+         */\r\n+        public boolean isRunning() {\r\n+            return running;\r\n+        }\r\n+\r\n+        /**\r\n+         * get time to live\r\n+         *\r\n+         * @return time to live\r\n+         */\r\n+        public int getTimeToLive() {\r\n+            return (int) timeToLiveMillis / 1000;\r\n+        }\r\n+\r\n+        /**\r\n+         * update time to live\r\n+         *\r\n+         * @param timeToLive time to live\r\n+         */\r\n+        public void setTimeToLive(long timeToLive) {\r\n+            this.timeToLiveMillis = timeToLive * 1000;\r\n+        }\r\n+\r\n+        /**\r\n+         * get expiration interval\r\n+         *\r\n+         * @return expiration interval (second)\r\n+         */\r\n+        public int getExpirationInterval() {\r\n+            return (int) expirationIntervalMillis / 1000;\r\n+        }\r\n+\r\n+        /**\r\n+         * set expiration interval\r\n+         *\r\n+         * @param expirationInterval expiration interval (second)\r\n+         */\r\n+        public void setExpirationInterval(long expirationInterval) {\r\n+            this.expirationIntervalMillis = expirationInterval * 1000;\r\n+        }\r\n+    }\r\n+}\r\n+\r\n+\r\n+\r\n"}, {"source1": "org/apache/dubbo/cache/support/lfu/LfuCache.java", "source2": "org/apache/dubbo/cache/support/lfu/LfuCache.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,80 +1,80 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.cache.support.lfu;\n-\n-import org.apache.dubbo.cache.Cache;\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.LFUCache;\n-\n-/**\n- * This class store the cache value per thread. If a service,method,consumer or provided is configured with key <b>cache</b>\n- * with value <b>lfu</b>, dubbo initialize the instance of this class using {@link LfuCacheFactory} to store method's returns value\n- * to server from store without making method call.\n- * <pre>\n- *     e.g. 1) &lt;dubbo:service cache=\"lfu\" cache.size=\"5000\" cache.evictionFactor=\"0.3\"/&gt;\n- *          2) &lt;dubbo:consumer cache=\"lfu\" /&gt;\n- * </pre>\n- * <pre>\n- * LfuCache uses url's <b>cache.size</b> value for its max store size, url's <b>cache.evictionFactor</b> value for its eviction factor,\n- * default store size value will be 1000, default eviction factor will be 0.3\n- * </pre>\n- *\n- * @see Cache\n- * @see LfuCacheFactory\n- * @see org.apache.dubbo.cache.support.AbstractCacheFactory\n- * @see org.apache.dubbo.cache.filter.CacheFilter\n- */\n-public class LfuCache implements Cache {\n-\n-    /**\n-     * This is used to store cache records\n-     */\n-    private final LFUCache store;\n-\n-    /**\n-     *  Initialize LfuCache, it uses constructor argument <b>cache.size</b> value as its storage max size.\n-     *  If nothing is provided then it will use 1000 as default size value. <b>cache.evictionFactor</b> value as its eviction factor.\n-     *  If nothing is provided then it will use 0.3 as default value.\n-     * @param url A valid URL instance\n-     */\n-    public LfuCache (URL url) {\n-        final int max = url.getParameter(\"cache.size\", 1000);\n-        final float factor = url.getParameter(\"cache.evictionFactor\", 0.75f);\n-        this.store = new LFUCache(max, factor);\n-    }\n-\n-    /**\n-     * API to store value against a key in the calling thread scope.\n-     * @param key  Unique identifier for the object being store.\n-     * @param value Value getting store\n-     */\n-    @Override\n-    public void put(Object key, Object value) {\n-        store.put(key, value);\n-    }\n-\n-    /**\n-     * API to return stored value using a key against the calling thread specific store.\n-     * @param key Unique identifier for cache lookup\n-     * @return Return stored object against key\n-     */\n-    @Override\n-    public Object get(Object key) {\n-        return store.get(key);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.cache.support.lfu;\r\n+\r\n+import org.apache.dubbo.cache.Cache;\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.LFUCache;\r\n+\r\n+/**\r\n+ * This class store the cache value per thread. If a service,method,consumer or provided is configured with key <b>cache</b>\r\n+ * with value <b>lfu</b>, dubbo initialize the instance of this class using {@link LfuCacheFactory} to store method's returns value\r\n+ * to server from store without making method call.\r\n+ * <pre>\r\n+ *     e.g. 1) &lt;dubbo:service cache=\"lfu\" cache.size=\"5000\" cache.evictionFactor=\"0.3\"/&gt;\r\n+ *          2) &lt;dubbo:consumer cache=\"lfu\" /&gt;\r\n+ * </pre>\r\n+ * <pre>\r\n+ * LfuCache uses url's <b>cache.size</b> value for its max store size, url's <b>cache.evictionFactor</b> value for its eviction factor,\r\n+ * default store size value will be 1000, default eviction factor will be 0.3\r\n+ * </pre>\r\n+ *\r\n+ * @see Cache\r\n+ * @see LfuCacheFactory\r\n+ * @see org.apache.dubbo.cache.support.AbstractCacheFactory\r\n+ * @see org.apache.dubbo.cache.filter.CacheFilter\r\n+ */\r\n+public class LfuCache implements Cache {\r\n+\r\n+    /**\r\n+     * This is used to store cache records\r\n+     */\r\n+    private final LFUCache store;\r\n+\r\n+    /**\r\n+     *  Initialize LfuCache, it uses constructor argument <b>cache.size</b> value as its storage max size.\r\n+     *  If nothing is provided then it will use 1000 as default size value. <b>cache.evictionFactor</b> value as its eviction factor.\r\n+     *  If nothing is provided then it will use 0.3 as default value.\r\n+     * @param url A valid URL instance\r\n+     */\r\n+    public LfuCache (URL url) {\r\n+        final int max = url.getParameter(\"cache.size\", 1000);\r\n+        final float factor = url.getParameter(\"cache.evictionFactor\", 0.75f);\r\n+        this.store = new LFUCache(max, factor);\r\n+    }\r\n+\r\n+    /**\r\n+     * API to store value against a key in the calling thread scope.\r\n+     * @param key  Unique identifier for the object being store.\r\n+     * @param value Value getting store\r\n+     */\r\n+    @Override\r\n+    public void put(Object key, Object value) {\r\n+        store.put(key, value);\r\n+    }\r\n+\r\n+    /**\r\n+     * API to return stored value using a key against the calling thread specific store.\r\n+     * @param key Unique identifier for cache lookup\r\n+     * @return Return stored object against key\r\n+     */\r\n+    @Override\r\n+    public Object get(Object key) {\r\n+        return store.get(key);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/cache/support/lfu/LfuCacheFactory.java", "source2": "org/apache/dubbo/cache/support/lfu/LfuCacheFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,43 +1,43 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.cache.support.lfu;\n-\n-import org.apache.dubbo.cache.Cache;\n-import org.apache.dubbo.cache.support.AbstractCacheFactory;\n-import org.apache.dubbo.common.URL;\n-\n-/**\n- * Implement {@link org.apache.dubbo.cache.CacheFactory} by extending {@link AbstractCacheFactory} and provide\n- * instance of new {@link LfuCache}.\n- *\n- * @see AbstractCacheFactory\n- * @see LfuCache\n- * @see Cache\n- */\n-public class LfuCacheFactory extends AbstractCacheFactory {\n-\n-    /**\n-     * Takes url as an method argument and return new instance of cache store implemented by LfuCache.\n-     * @param url url of the method\n-     * @return ThreadLocalCache instance of cache\n-     */\n-    @Override\n-    protected Cache createCache(URL url) {\n-        return new LfuCache(url);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.cache.support.lfu;\r\n+\r\n+import org.apache.dubbo.cache.Cache;\r\n+import org.apache.dubbo.cache.support.AbstractCacheFactory;\r\n+import org.apache.dubbo.common.URL;\r\n+\r\n+/**\r\n+ * Implement {@link org.apache.dubbo.cache.CacheFactory} by extending {@link AbstractCacheFactory} and provide\r\n+ * instance of new {@link LfuCache}.\r\n+ *\r\n+ * @see AbstractCacheFactory\r\n+ * @see LfuCache\r\n+ * @see Cache\r\n+ */\r\n+public class LfuCacheFactory extends AbstractCacheFactory {\r\n+\r\n+    /**\r\n+     * Takes url as an method argument and return new instance of cache store implemented by LfuCache.\r\n+     * @param url url of the method\r\n+     * @return ThreadLocalCache instance of cache\r\n+     */\r\n+    @Override\r\n+    protected Cache createCache(URL url) {\r\n+        return new LfuCache(url);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/Channel.java", "source2": "org/apache/dubbo/remoting/Channel.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,74 +1,74 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting;\n-\n-import java.net.InetSocketAddress;\n-\n-/**\n- * Channel. (API/SPI, Prototype, ThreadSafe)\n- *\n- * @see org.apache.dubbo.remoting.Client\n- * @see RemotingServer#getChannels()\n- * @see RemotingServer#getChannel(InetSocketAddress)\n- */\n-public interface Channel extends Endpoint {\n-\n-    /**\n-     * get remote address.\n-     *\n-     * @return remote address.\n-     */\n-    InetSocketAddress getRemoteAddress();\n-\n-    /**\n-     * is connected.\n-     *\n-     * @return connected\n-     */\n-    boolean isConnected();\n-\n-    /**\n-     * has attribute.\n-     *\n-     * @param key key.\n-     * @return has or has not.\n-     */\n-    boolean hasAttribute(String key);\n-\n-    /**\n-     * get attribute.\n-     *\n-     * @param key key.\n-     * @return value.\n-     */\n-    Object getAttribute(String key);\n-\n-    /**\n-     * set attribute.\n-     *\n-     * @param key   key.\n-     * @param value value.\n-     */\n-    void setAttribute(String key, Object value);\n-\n-    /**\n-     * remove attribute.\n-     *\n-     * @param key key.\n-     */\n-    void removeAttribute(String key);\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+\r\n+/**\r\n+ * Channel. (API/SPI, Prototype, ThreadSafe)\r\n+ *\r\n+ * @see org.apache.dubbo.remoting.Client\r\n+ * @see RemotingServer#getChannels()\r\n+ * @see RemotingServer#getChannel(InetSocketAddress)\r\n+ */\r\n+public interface Channel extends Endpoint {\r\n+\r\n+    /**\r\n+     * get remote address.\r\n+     *\r\n+     * @return remote address.\r\n+     */\r\n+    InetSocketAddress getRemoteAddress();\r\n+\r\n+    /**\r\n+     * is connected.\r\n+     *\r\n+     * @return connected\r\n+     */\r\n+    boolean isConnected();\r\n+\r\n+    /**\r\n+     * has attribute.\r\n+     *\r\n+     * @param key key.\r\n+     * @return has or has not.\r\n+     */\r\n+    boolean hasAttribute(String key);\r\n+\r\n+    /**\r\n+     * get attribute.\r\n+     *\r\n+     * @param key key.\r\n+     * @return value.\r\n+     */\r\n+    Object getAttribute(String key);\r\n+\r\n+    /**\r\n+     * set attribute.\r\n+     *\r\n+     * @param key   key.\r\n+     * @param value value.\r\n+     */\r\n+    void setAttribute(String key, Object value);\r\n+\r\n+    /**\r\n+     * remove attribute.\r\n+     *\r\n+     * @param key key.\r\n+     */\r\n+    void removeAttribute(String key);\r\n }\n"}, {"source1": "org/apache/dubbo/remoting/Codec.java", "source2": "org/apache/dubbo/remoting/Codec.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,61 +1,61 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting;\n-\n-import org.apache.dubbo.common.extension.Adaptive;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-\n-/**\n- * Codec. (SPI, Singleton, ThreadSafe)\n- */\n-@Deprecated\n-@SPI\n-public interface Codec {\n-\n-    /**\n-     * Need more input poison.\n-     *\n-     * @see #decode(Channel, InputStream)\n-     */\n-    Object NEED_MORE_INPUT = new Object();\n-\n-    /**\n-     * Encode message.\n-     *\n-     * @param channel channel.\n-     * @param output  output stream.\n-     * @param message message.\n-     */\n-    @Adaptive({Constants.CODEC_KEY})\n-    void encode(Channel channel, OutputStream output, Object message) throws IOException;\n-\n-    /**\n-     * Decode message.\n-     *\n-     * @param channel channel.\n-     * @param input   input stream.\n-     * @return message or <code>NEED_MORE_INPUT</code> poison.\n-     * @see #NEED_MORE_INPUT\n-     */\n-    @Adaptive({Constants.CODEC_KEY})\n-    Object decode(Channel channel, InputStream input) throws IOException;\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting;\r\n+\r\n+import org.apache.dubbo.common.extension.Adaptive;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+\r\n+/**\r\n+ * Codec. (SPI, Singleton, ThreadSafe)\r\n+ */\r\n+@Deprecated\r\n+@SPI\r\n+public interface Codec {\r\n+\r\n+    /**\r\n+     * Need more input poison.\r\n+     *\r\n+     * @see #decode(Channel, InputStream)\r\n+     */\r\n+    Object NEED_MORE_INPUT = new Object();\r\n+\r\n+    /**\r\n+     * Encode message.\r\n+     *\r\n+     * @param channel channel.\r\n+     * @param output  output stream.\r\n+     * @param message message.\r\n+     */\r\n+    @Adaptive({Constants.CODEC_KEY})\r\n+    void encode(Channel channel, OutputStream output, Object message) throws IOException;\r\n+\r\n+    /**\r\n+     * Decode message.\r\n+     *\r\n+     * @param channel channel.\r\n+     * @param input   input stream.\r\n+     * @return message or <code>NEED_MORE_INPUT</code> poison.\r\n+     * @see #NEED_MORE_INPUT\r\n+     */\r\n+    @Adaptive({Constants.CODEC_KEY})\r\n+    Object decode(Channel channel, InputStream input) throws IOException;\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/Codec2.java", "source2": "org/apache/dubbo/remoting/Codec2.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,40 +1,40 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting;\n-\n-import org.apache.dubbo.common.extension.Adaptive;\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.remoting.buffer.ChannelBuffer;\n-\n-import java.io.IOException;\n-\n-@SPI\n-public interface Codec2 {\n-\n-    @Adaptive({Constants.CODEC_KEY})\n-    void encode(Channel channel, ChannelBuffer buffer, Object message) throws IOException;\n-\n-    @Adaptive({Constants.CODEC_KEY})\n-    Object decode(Channel channel, ChannelBuffer buffer) throws IOException;\n-\n-\n-    enum DecodeResult {\n-        NEED_MORE_INPUT, SKIP_SOME_INPUT\n-    }\n-\n-}\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting;\r\n+\r\n+import org.apache.dubbo.common.extension.Adaptive;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.remoting.buffer.ChannelBuffer;\r\n+\r\n+import java.io.IOException;\r\n+\r\n+@SPI\r\n+public interface Codec2 {\r\n+\r\n+    @Adaptive({Constants.CODEC_KEY})\r\n+    void encode(Channel channel, ChannelBuffer buffer, Object message) throws IOException;\r\n+\r\n+    @Adaptive({Constants.CODEC_KEY})\r\n+    Object decode(Channel channel, ChannelBuffer buffer) throws IOException;\r\n+\r\n+\r\n+    enum DecodeResult {\r\n+        NEED_MORE_INPUT, SKIP_SOME_INPUT\r\n+    }\r\n+\r\n+}\r\n+\r\n"}, {"source1": "org/apache/dubbo/remoting/Constants.java", "source2": "org/apache/dubbo/remoting/Constants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,138 +1,138 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.remoting;\n-\n-\n-public interface Constants {\n-\n-    String BUFFER_KEY = \"buffer\";\n-\n-    /**\n-     * default buffer size is 8k.\n-     */\n-    int DEFAULT_BUFFER_SIZE = 8 * 1024;\n-\n-    int MAX_BUFFER_SIZE = 16 * 1024;\n-\n-    int MIN_BUFFER_SIZE = 1 * 1024;\n-\n-    String IDLE_TIMEOUT_KEY = \"idle.timeout\";\n-\n-    int DEFAULT_IDLE_TIMEOUT = 600 * 1000;\n-    /**\n-     * max size of channel. default value is zero that means unlimited.\n-     */\n-    String ACCEPTS_KEY = \"accepts\";\n-\n-    int DEFAULT_ACCEPTS = 0;\n-\n-    String CONNECT_QUEUE_CAPACITY = \"connect.queue.capacity\";\n-\n-    String CONNECT_QUEUE_WARNING_SIZE = \"connect.queue.warning.size\";\n-\n-    int DEFAULT_CONNECT_QUEUE_WARNING_SIZE = 1000;\n-\n-    String CHARSET_KEY = \"charset\";\n-\n-    String DEFAULT_CHARSET = \"UTF-8\";\n-\n-    /**\n-     * Every heartbeat duration / HEARTBEAT_CHECK_TICK, check if a heartbeat should be sent. Every heartbeat timeout\n-     * duration / HEARTBEAT_CHECK_TICK, check if a connection should be closed on server side, and if reconnect on\n-     * client side\n-     */\n-    int HEARTBEAT_CHECK_TICK = 3;\n-\n-    /**\n-     * the least heartbeat during is 1000 ms.\n-     */\n-    long LEAST_HEARTBEAT_DURATION = 1000;\n-\n-    /**\n-     * ticks per wheel.\n-     */\n-    int TICKS_PER_WHEEL = 128;\n-    String PAYLOAD_KEY = \"payload\";\n-    /**\n-     * 8M\n-     */\n-    int DEFAULT_PAYLOAD = 8 * 1024 * 1024;\n-\n-    String CONNECT_TIMEOUT_KEY = \"connect.timeout\";\n-\n-    int DEFAULT_CONNECT_TIMEOUT = 3000;\n-\n-    String SERIALIZATION_KEY = \"serialization\";\n-\n-    String DEFAULT_REMOTING_SERIALIZATION = \"hessian2\";\n-\n-    String CODEC_KEY = \"codec\";\n-\n-    String CODEC_VERSION_KEY = \"codec.version\";\n-\n-    String SERVER_KEY = \"server\";\n-\n-    String CLIENT_KEY = \"client\";\n-\n-    String DEFAULT_REMOTING_CLIENT = \"netty\";\n-\n-    String TRANSPORTER_KEY = \"transporter\";\n-\n-    String DEFAULT_TRANSPORTER = \"netty\";\n-\n-    String EXCHANGER_KEY = \"exchanger\";\n-\n-    String DEFAULT_EXCHANGER = \"header\";\n-\n-    String DISPACTHER_KEY = \"dispacther\";\n-\n-    int DEFAULT_IO_THREADS = Math.min(Runtime.getRuntime().availableProcessors() + 1, 32);\n-\n-    String BIND_IP_KEY = \"bind.ip\";\n-\n-    String BIND_PORT_KEY = \"bind.port\";\n-\n-    String SENT_KEY = \"sent\";\n-\n-    String DISPATCHER_KEY = \"dispatcher\";\n-\n-    String CHANNEL_ATTRIBUTE_READONLY_KEY = \"channel.readonly\";\n-\n-    String CHANNEL_READONLYEVENT_SENT_KEY = \"channel.readonly.sent\";\n-\n-    String CHANNEL_SEND_READONLYEVENT_KEY = \"channel.readonly.send\";\n-\n-    String RECONNECT_KEY = \"reconnect\";\n-\n-    int DEFAULT_RECONNECT_PERIOD = 2000;\n-\n-    String SEND_RECONNECT_KEY = \"send.reconnect\";\n-\n-    String CHECK_KEY = \"check\";\n-\n-    String PROMPT_KEY = \"prompt\";\n-\n-    String DEFAULT_PROMPT = \"dubbo>\";\n-    String TELNET = \"telnet\";\n-    String HEARTBEAT_KEY = \"heartbeat\";\n-    int DEFAULT_HEARTBEAT = 60 * 1000;\n-    String HEARTBEAT_TIMEOUT_KEY = \"heartbeat.timeout\";\n-    String CONNECTIONS_KEY = \"connections\";\n-\n-    int DEFAULT_BACKLOG = 1024;\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.remoting;\r\n+\r\n+\r\n+public interface Constants {\r\n+\r\n+    String BUFFER_KEY = \"buffer\";\r\n+\r\n+    /**\r\n+     * default buffer size is 8k.\r\n+     */\r\n+    int DEFAULT_BUFFER_SIZE = 8 * 1024;\r\n+\r\n+    int MAX_BUFFER_SIZE = 16 * 1024;\r\n+\r\n+    int MIN_BUFFER_SIZE = 1 * 1024;\r\n+\r\n+    String IDLE_TIMEOUT_KEY = \"idle.timeout\";\r\n+\r\n+    int DEFAULT_IDLE_TIMEOUT = 600 * 1000;\r\n+    /**\r\n+     * max size of channel. default value is zero that means unlimited.\r\n+     */\r\n+    String ACCEPTS_KEY = \"accepts\";\r\n+\r\n+    int DEFAULT_ACCEPTS = 0;\r\n+\r\n+    String CONNECT_QUEUE_CAPACITY = \"connect.queue.capacity\";\r\n+\r\n+    String CONNECT_QUEUE_WARNING_SIZE = \"connect.queue.warning.size\";\r\n+\r\n+    int DEFAULT_CONNECT_QUEUE_WARNING_SIZE = 1000;\r\n+\r\n+    String CHARSET_KEY = \"charset\";\r\n+\r\n+    String DEFAULT_CHARSET = \"UTF-8\";\r\n+\r\n+    /**\r\n+     * Every heartbeat duration / HEARTBEAT_CHECK_TICK, check if a heartbeat should be sent. Every heartbeat timeout\r\n+     * duration / HEARTBEAT_CHECK_TICK, check if a connection should be closed on server side, and if reconnect on\r\n+     * client side\r\n+     */\r\n+    int HEARTBEAT_CHECK_TICK = 3;\r\n+\r\n+    /**\r\n+     * the least heartbeat during is 1000 ms.\r\n+     */\r\n+    long LEAST_HEARTBEAT_DURATION = 1000;\r\n+\r\n+    /**\r\n+     * ticks per wheel.\r\n+     */\r\n+    int TICKS_PER_WHEEL = 128;\r\n+    String PAYLOAD_KEY = \"payload\";\r\n+    /**\r\n+     * 8M\r\n+     */\r\n+    int DEFAULT_PAYLOAD = 8 * 1024 * 1024;\r\n+\r\n+    String CONNECT_TIMEOUT_KEY = \"connect.timeout\";\r\n+\r\n+    int DEFAULT_CONNECT_TIMEOUT = 3000;\r\n+\r\n+    String SERIALIZATION_KEY = \"serialization\";\r\n+\r\n+    String DEFAULT_REMOTING_SERIALIZATION = \"hessian2\";\r\n+\r\n+    String CODEC_KEY = \"codec\";\r\n+\r\n+    String CODEC_VERSION_KEY = \"codec.version\";\r\n+\r\n+    String SERVER_KEY = \"server\";\r\n+\r\n+    String CLIENT_KEY = \"client\";\r\n+\r\n+    String DEFAULT_REMOTING_CLIENT = \"netty\";\r\n+\r\n+    String TRANSPORTER_KEY = \"transporter\";\r\n+\r\n+    String DEFAULT_TRANSPORTER = \"netty\";\r\n+\r\n+    String EXCHANGER_KEY = \"exchanger\";\r\n+\r\n+    String DEFAULT_EXCHANGER = \"header\";\r\n+\r\n+    String DISPACTHER_KEY = \"dispacther\";\r\n+\r\n+    int DEFAULT_IO_THREADS = Math.min(Runtime.getRuntime().availableProcessors() + 1, 32);\r\n+\r\n+    String BIND_IP_KEY = \"bind.ip\";\r\n+\r\n+    String BIND_PORT_KEY = \"bind.port\";\r\n+\r\n+    String SENT_KEY = \"sent\";\r\n+\r\n+    String DISPATCHER_KEY = \"dispatcher\";\r\n+\r\n+    String CHANNEL_ATTRIBUTE_READONLY_KEY = \"channel.readonly\";\r\n+\r\n+    String CHANNEL_READONLYEVENT_SENT_KEY = \"channel.readonly.sent\";\r\n+\r\n+    String CHANNEL_SEND_READONLYEVENT_KEY = \"channel.readonly.send\";\r\n+\r\n+    String RECONNECT_KEY = \"reconnect\";\r\n+\r\n+    int DEFAULT_RECONNECT_PERIOD = 2000;\r\n+\r\n+    String SEND_RECONNECT_KEY = \"send.reconnect\";\r\n+\r\n+    String CHECK_KEY = \"check\";\r\n+\r\n+    String PROMPT_KEY = \"prompt\";\r\n+\r\n+    String DEFAULT_PROMPT = \"dubbo>\";\r\n+    String TELNET = \"telnet\";\r\n+    String HEARTBEAT_KEY = \"heartbeat\";\r\n+    int DEFAULT_HEARTBEAT = 60 * 1000;\r\n+    String HEARTBEAT_TIMEOUT_KEY = \"heartbeat.timeout\";\r\n+    String CONNECTIONS_KEY = \"connections\";\r\n+\r\n+    int DEFAULT_BACKLOG = 1024;\r\n }\n"}, {"source1": "org/apache/dubbo/remoting/Dispatcher.java", "source2": "org/apache/dubbo/remoting/Dispatcher.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,41 +1,41 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.Adaptive;\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.remoting.transport.dispatcher.all.AllDispatcher;\n-\n-/**\n- * ChannelHandlerWrapper (SPI, Singleton, ThreadSafe)\n- */\n-@SPI(AllDispatcher.NAME)\n-public interface Dispatcher {\n-\n-    /**\n-     * dispatch the message to threadpool.\n-     *\n-     * @param handler\n-     * @param url\n-     * @return channel handler\n-     */\n-    @Adaptive({Constants.DISPATCHER_KEY, \"dispather\", \"channel.handler\"})\n-    // The last two parameters are reserved for compatibility with the old configuration\n-    ChannelHandler dispatch(ChannelHandler handler, URL url);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.Adaptive;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.all.AllDispatcher;\r\n+\r\n+/**\r\n+ * ChannelHandlerWrapper (SPI, Singleton, ThreadSafe)\r\n+ */\r\n+@SPI(AllDispatcher.NAME)\r\n+public interface Dispatcher {\r\n+\r\n+    /**\r\n+     * dispatch the message to threadpool.\r\n+     *\r\n+     * @param handler\r\n+     * @param url\r\n+     * @return channel handler\r\n+     */\r\n+    @Adaptive({Constants.DISPATCHER_KEY, \"dispather\", \"channel.handler\"})\r\n+    // The last two parameters are reserved for compatibility with the old configuration\r\n+    ChannelHandler dispatch(ChannelHandler handler, URL url);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/IdleSensible.java", "source2": "org/apache/dubbo/remoting/IdleSensible.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,34 +1,34 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting;\n-\n-/**\n- * Indicate whether the implementation (for both server and client) has the ability to sense and handle idle connection.\n- * If the server has the ability to handle idle connection, it should close the connection when it happens, and if\n- * the client has the ability to handle idle connection, it should send the heartbeat to the server.\n- */\n-public interface IdleSensible {\n-    /**\n-     * Whether the implementation can sense and handle the idle connection. By default it's false, the implementation\n-     * relies on dedicated timer to take care of idle connection.\n-     *\n-     * @return whether has the ability to handle idle connection\n-     */\n-    default boolean canHandleIdle() {\n-        return false;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting;\r\n+\r\n+/**\r\n+ * Indicate whether the implementation (for both server and client) has the ability to sense and handle idle connection.\r\n+ * If the server has the ability to handle idle connection, it should close the connection when it happens, and if\r\n+ * the client has the ability to handle idle connection, it should send the heartbeat to the server.\r\n+ */\r\n+public interface IdleSensible {\r\n+    /**\r\n+     * Whether the implementation can sense and handle the idle connection. By default it's false, the implementation\r\n+     * relies on dedicated timer to take care of idle connection.\r\n+     *\r\n+     * @return whether has the ability to handle idle connection\r\n+     */\r\n+    default boolean canHandleIdle() {\r\n+        return false;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/RemotingException.java", "source2": "org/apache/dubbo/remoting/RemotingException.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,84 +1,84 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting;\n-\n-import java.net.InetSocketAddress;\n-\n-/**\n- * RemotingException. (API, Prototype, ThreadSafe)\n- *\n- * @export\n- * @see org.apache.dubbo.remoting.exchange.support.DefaultFuture#get()\n- * @see org.apache.dubbo.remoting.Channel#send(Object, boolean)\n- * @see org.apache.dubbo.remoting.exchange.ExchangeChannel#request(Object)\n- * @see org.apache.dubbo.remoting.exchange.ExchangeChannel#request(Object, int)\n- * @see org.apache.dubbo.remoting.Transporter#bind(org.apache.dubbo.common.URL, ChannelHandler)\n- * @see org.apache.dubbo.remoting.Transporter#connect(org.apache.dubbo.common.URL, ChannelHandler)\n- */\n-public class RemotingException extends Exception {\n-\n-    private static final long serialVersionUID = -3160452149606778709L;\n-\n-    private InetSocketAddress localAddress;\n-\n-    private InetSocketAddress remoteAddress;\n-\n-    public RemotingException(Channel channel, String msg) {\n-        this(channel == null ? null : channel.getLocalAddress(), channel == null ? null : channel.getRemoteAddress(),\n-                msg);\n-    }\n-\n-    public RemotingException(InetSocketAddress localAddress, InetSocketAddress remoteAddress, String message) {\n-        super(message);\n-\n-        this.localAddress = localAddress;\n-        this.remoteAddress = remoteAddress;\n-    }\n-\n-    public RemotingException(Channel channel, Throwable cause) {\n-        this(channel == null ? null : channel.getLocalAddress(), channel == null ? null : channel.getRemoteAddress(),\n-                cause);\n-    }\n-\n-    public RemotingException(InetSocketAddress localAddress, InetSocketAddress remoteAddress, Throwable cause) {\n-        super(cause);\n-\n-        this.localAddress = localAddress;\n-        this.remoteAddress = remoteAddress;\n-    }\n-\n-    public RemotingException(Channel channel, String message, Throwable cause) {\n-        this(channel == null ? null : channel.getLocalAddress(), channel == null ? null : channel.getRemoteAddress(),\n-                message, cause);\n-    }\n-\n-    public RemotingException(InetSocketAddress localAddress, InetSocketAddress remoteAddress, String message,\n-                             Throwable cause) {\n-        super(message, cause);\n-\n-        this.localAddress = localAddress;\n-        this.remoteAddress = remoteAddress;\n-    }\n-\n-    public InetSocketAddress getLocalAddress() {\n-        return localAddress;\n-    }\n-\n-    public InetSocketAddress getRemoteAddress() {\n-        return remoteAddress;\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+\r\n+/**\r\n+ * RemotingException. (API, Prototype, ThreadSafe)\r\n+ *\r\n+ * @export\r\n+ * @see org.apache.dubbo.remoting.exchange.support.DefaultFuture#get()\r\n+ * @see org.apache.dubbo.remoting.Channel#send(Object, boolean)\r\n+ * @see org.apache.dubbo.remoting.exchange.ExchangeChannel#request(Object)\r\n+ * @see org.apache.dubbo.remoting.exchange.ExchangeChannel#request(Object, int)\r\n+ * @see org.apache.dubbo.remoting.Transporter#bind(org.apache.dubbo.common.URL, ChannelHandler)\r\n+ * @see org.apache.dubbo.remoting.Transporter#connect(org.apache.dubbo.common.URL, ChannelHandler)\r\n+ */\r\n+public class RemotingException extends Exception {\r\n+\r\n+    private static final long serialVersionUID = -3160452149606778709L;\r\n+\r\n+    private InetSocketAddress localAddress;\r\n+\r\n+    private InetSocketAddress remoteAddress;\r\n+\r\n+    public RemotingException(Channel channel, String msg) {\r\n+        this(channel == null ? null : channel.getLocalAddress(), channel == null ? null : channel.getRemoteAddress(),\r\n+                msg);\r\n+    }\r\n+\r\n+    public RemotingException(InetSocketAddress localAddress, InetSocketAddress remoteAddress, String message) {\r\n+        super(message);\r\n+\r\n+        this.localAddress = localAddress;\r\n+        this.remoteAddress = remoteAddress;\r\n+    }\r\n+\r\n+    public RemotingException(Channel channel, Throwable cause) {\r\n+        this(channel == null ? null : channel.getLocalAddress(), channel == null ? null : channel.getRemoteAddress(),\r\n+                cause);\r\n+    }\r\n+\r\n+    public RemotingException(InetSocketAddress localAddress, InetSocketAddress remoteAddress, Throwable cause) {\r\n+        super(cause);\r\n+\r\n+        this.localAddress = localAddress;\r\n+        this.remoteAddress = remoteAddress;\r\n+    }\r\n+\r\n+    public RemotingException(Channel channel, String message, Throwable cause) {\r\n+        this(channel == null ? null : channel.getLocalAddress(), channel == null ? null : channel.getRemoteAddress(),\r\n+                message, cause);\r\n+    }\r\n+\r\n+    public RemotingException(InetSocketAddress localAddress, InetSocketAddress remoteAddress, String message,\r\n+                             Throwable cause) {\r\n+        super(message, cause);\r\n+\r\n+        this.localAddress = localAddress;\r\n+        this.remoteAddress = remoteAddress;\r\n+    }\r\n+\r\n+    public InetSocketAddress getLocalAddress() {\r\n+        return localAddress;\r\n+    }\r\n+\r\n+    public InetSocketAddress getRemoteAddress() {\r\n+        return remoteAddress;\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/remoting/RemotingServer.java", "source2": "org/apache/dubbo/remoting/RemotingServer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,58 +1,58 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting;\n-\n-import org.apache.dubbo.common.Resetable;\n-\n-import java.net.InetSocketAddress;\n-import java.util.Collection;\n-\n-/**\n- * Remoting Server. (API/SPI, Prototype, ThreadSafe)\n- * <p>\n- * <a href=\"http://en.wikipedia.org/wiki/Client%E2%80%93server_model\">Client/Server</a>\n- *\n- * @see org.apache.dubbo.remoting.Transporter#bind(org.apache.dubbo.common.URL, ChannelHandler)\n- */\n-public interface RemotingServer extends Endpoint, Resetable, IdleSensible {\n-\n-    /**\n-     * is bound.\n-     *\n-     * @return bound\n-     */\n-    boolean isBound();\n-\n-    /**\n-     * get channels.\n-     *\n-     * @return channels\n-     */\n-    Collection<Channel> getChannels();\n-\n-    /**\n-     * get channel.\n-     *\n-     * @param remoteAddress\n-     * @return channel\n-     */\n-    Channel getChannel(InetSocketAddress remoteAddress);\n-\n-    @Deprecated\n-    void reset(org.apache.dubbo.common.Parameters parameters);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting;\r\n+\r\n+import org.apache.dubbo.common.Resetable;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+import java.util.Collection;\r\n+\r\n+/**\r\n+ * Remoting Server. (API/SPI, Prototype, ThreadSafe)\r\n+ * <p>\r\n+ * <a href=\"http://en.wikipedia.org/wiki/Client%E2%80%93server_model\">Client/Server</a>\r\n+ *\r\n+ * @see org.apache.dubbo.remoting.Transporter#bind(org.apache.dubbo.common.URL, ChannelHandler)\r\n+ */\r\n+public interface RemotingServer extends Endpoint, Resetable, IdleSensible {\r\n+\r\n+    /**\r\n+     * is bound.\r\n+     *\r\n+     * @return bound\r\n+     */\r\n+    boolean isBound();\r\n+\r\n+    /**\r\n+     * get channels.\r\n+     *\r\n+     * @return channels\r\n+     */\r\n+    Collection<Channel> getChannels();\r\n+\r\n+    /**\r\n+     * get channel.\r\n+     *\r\n+     * @param remoteAddress\r\n+     * @return channel\r\n+     */\r\n+    Channel getChannel(InetSocketAddress remoteAddress);\r\n+\r\n+    @Deprecated\r\n+    void reset(org.apache.dubbo.common.Parameters parameters);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/TimeoutException.java", "source2": "org/apache/dubbo/remoting/TimeoutException.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,57 +1,57 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting;\n-\n-import java.net.InetSocketAddress;\n-\n-/**\n- * TimeoutException. (API, Prototype, ThreadSafe)\n- *\n- * @export\n- * @see org.apache.dubbo.remoting.exchange.support.DefaultFuture#get()\n- */\n-public class TimeoutException extends RemotingException {\n-\n-    public static final int CLIENT_SIDE = 0;\n-    public static final int SERVER_SIDE = 1;\n-    private static final long serialVersionUID = 3122966731958222692L;\n-    private final int phase;\n-\n-    public TimeoutException(boolean serverSide, Channel channel, String message) {\n-        super(channel, message);\n-        this.phase = serverSide ? SERVER_SIDE : CLIENT_SIDE;\n-    }\n-\n-    public TimeoutException(boolean serverSide, InetSocketAddress localAddress,\n-                            InetSocketAddress remoteAddress, String message) {\n-        super(localAddress, remoteAddress, message);\n-        this.phase = serverSide ? SERVER_SIDE : CLIENT_SIDE;\n-    }\n-\n-    public int getPhase() {\n-        return phase;\n-    }\n-\n-    public boolean isServerSide() {\n-        return phase == 1;\n-    }\n-\n-    public boolean isClientSide() {\n-        return phase == 0;\n-    }\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+\r\n+/**\r\n+ * TimeoutException. (API, Prototype, ThreadSafe)\r\n+ *\r\n+ * @export\r\n+ * @see org.apache.dubbo.remoting.exchange.support.DefaultFuture#get()\r\n+ */\r\n+public class TimeoutException extends RemotingException {\r\n+\r\n+    public static final int CLIENT_SIDE = 0;\r\n+    public static final int SERVER_SIDE = 1;\r\n+    private static final long serialVersionUID = 3122966731958222692L;\r\n+    private final int phase;\r\n+\r\n+    public TimeoutException(boolean serverSide, Channel channel, String message) {\r\n+        super(channel, message);\r\n+        this.phase = serverSide ? SERVER_SIDE : CLIENT_SIDE;\r\n+    }\r\n+\r\n+    public TimeoutException(boolean serverSide, InetSocketAddress localAddress,\r\n+                            InetSocketAddress remoteAddress, String message) {\r\n+        super(localAddress, remoteAddress, message);\r\n+        this.phase = serverSide ? SERVER_SIDE : CLIENT_SIDE;\r\n+    }\r\n+\r\n+    public int getPhase() {\r\n+        return phase;\r\n+    }\r\n+\r\n+    public boolean isServerSide() {\r\n+        return phase == 1;\r\n+    }\r\n+\r\n+    public boolean isClientSide() {\r\n+        return phase == 0;\r\n+    }\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/remoting/Transporter.java", "source2": "org/apache/dubbo/remoting/Transporter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,58 +1,58 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.Adaptive;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-/**\n- * Transporter. (SPI, Singleton, ThreadSafe)\n- * <p>\n- * <a href=\"http://en.wikipedia.org/wiki/Transport_Layer\">Transport Layer</a>\n- * <a href=\"http://en.wikipedia.org/wiki/Client%E2%80%93server_model\">Client/Server</a>\n- *\n- * @see org.apache.dubbo.remoting.Transporters\n- */\n-@SPI(\"netty\")\n-public interface Transporter {\n-\n-    /**\n-     * Bind a server.\n-     *\n-     * @param url     server url\n-     * @param handler\n-     * @return server\n-     * @throws RemotingException\n-     * @see org.apache.dubbo.remoting.Transporters#bind(URL, ChannelHandler...)\n-     */\n-    @Adaptive({Constants.SERVER_KEY, Constants.TRANSPORTER_KEY})\n-    RemotingServer bind(URL url, ChannelHandler handler) throws RemotingException;\n-\n-    /**\n-     * Connect to a server.\n-     *\n-     * @param url     server url\n-     * @param handler\n-     * @return client\n-     * @throws RemotingException\n-     * @see org.apache.dubbo.remoting.Transporters#connect(URL, ChannelHandler...)\n-     */\n-    @Adaptive({Constants.CLIENT_KEY, Constants.TRANSPORTER_KEY})\n-    Client connect(URL url, ChannelHandler handler) throws RemotingException;\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.Adaptive;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+/**\r\n+ * Transporter. (SPI, Singleton, ThreadSafe)\r\n+ * <p>\r\n+ * <a href=\"http://en.wikipedia.org/wiki/Transport_Layer\">Transport Layer</a>\r\n+ * <a href=\"http://en.wikipedia.org/wiki/Client%E2%80%93server_model\">Client/Server</a>\r\n+ *\r\n+ * @see org.apache.dubbo.remoting.Transporters\r\n+ */\r\n+@SPI(\"netty\")\r\n+public interface Transporter {\r\n+\r\n+    /**\r\n+     * Bind a server.\r\n+     *\r\n+     * @param url     server url\r\n+     * @param handler\r\n+     * @return server\r\n+     * @throws RemotingException\r\n+     * @see org.apache.dubbo.remoting.Transporters#bind(URL, ChannelHandler...)\r\n+     */\r\n+    @Adaptive({Constants.SERVER_KEY, Constants.TRANSPORTER_KEY})\r\n+    RemotingServer bind(URL url, ChannelHandler handler) throws RemotingException;\r\n+\r\n+    /**\r\n+     * Connect to a server.\r\n+     *\r\n+     * @param url     server url\r\n+     * @param handler\r\n+     * @return client\r\n+     * @throws RemotingException\r\n+     * @see org.apache.dubbo.remoting.Transporters#connect(URL, ChannelHandler...)\r\n+     */\r\n+    @Adaptive({Constants.CLIENT_KEY, Constants.TRANSPORTER_KEY})\r\n+    Client connect(URL url, ChannelHandler handler) throws RemotingException;\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/buffer/AbstractChannelBuffer.java", "source2": "org/apache/dubbo/remoting/buffer/AbstractChannelBuffer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,341 +1,341 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.remoting.buffer;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-import java.nio.ByteBuffer;\n-\n-public abstract class AbstractChannelBuffer implements ChannelBuffer {\n-\n-    private int readerIndex;\n-\n-    private int writerIndex;\n-\n-    private int markedReaderIndex;\n-\n-    private int markedWriterIndex;\n-\n-    @Override\n-    public int readerIndex() {\n-        return readerIndex;\n-    }\n-\n-    @Override\n-    public void readerIndex(int readerIndex) {\n-        if (readerIndex < 0 || readerIndex > writerIndex) {\n-            throw new IndexOutOfBoundsException();\n-        }\n-        this.readerIndex = readerIndex;\n-    }\n-\n-    @Override\n-    public int writerIndex() {\n-        return writerIndex;\n-    }\n-\n-    @Override\n-    public void writerIndex(int writerIndex) {\n-        if (writerIndex < readerIndex || writerIndex > capacity()) {\n-            throw new IndexOutOfBoundsException();\n-        }\n-        this.writerIndex = writerIndex;\n-    }\n-\n-    @Override\n-    public void setIndex(int readerIndex, int writerIndex) {\n-        if (readerIndex < 0 || readerIndex > writerIndex || writerIndex > capacity()) {\n-            throw new IndexOutOfBoundsException();\n-        }\n-        this.readerIndex = readerIndex;\n-        this.writerIndex = writerIndex;\n-    }\n-\n-    @Override\n-    public void clear() {\n-        readerIndex = writerIndex = 0;\n-    }\n-\n-    @Override\n-    public boolean readable() {\n-        return readableBytes() > 0;\n-    }\n-\n-    @Override\n-    public boolean writable() {\n-        return writableBytes() > 0;\n-    }\n-\n-    @Override\n-    public int readableBytes() {\n-        return writerIndex - readerIndex;\n-    }\n-\n-    @Override\n-    public int writableBytes() {\n-        return capacity() - writerIndex;\n-    }\n-\n-    @Override\n-    public void markReaderIndex() {\n-        markedReaderIndex = readerIndex;\n-    }\n-\n-    @Override\n-    public void resetReaderIndex() {\n-        readerIndex(markedReaderIndex);\n-    }\n-\n-    @Override\n-    public void markWriterIndex() {\n-        markedWriterIndex = writerIndex;\n-    }\n-\n-    @Override\n-    public void resetWriterIndex() {\n-        writerIndex = markedWriterIndex;\n-    }\n-\n-    @Override\n-    public void discardReadBytes() {\n-        if (readerIndex == 0) {\n-            return;\n-        }\n-        setBytes(0, this, readerIndex, writerIndex - readerIndex);\n-        writerIndex -= readerIndex;\n-        markedReaderIndex = Math.max(markedReaderIndex - readerIndex, 0);\n-        markedWriterIndex = Math.max(markedWriterIndex - readerIndex, 0);\n-        readerIndex = 0;\n-    }\n-\n-    @Override\n-    public void ensureWritableBytes(int writableBytes) {\n-        if (writableBytes > writableBytes()) {\n-            throw new IndexOutOfBoundsException();\n-        }\n-    }\n-\n-    @Override\n-    public void getBytes(int index, byte[] dst) {\n-        getBytes(index, dst, 0, dst.length);\n-    }\n-\n-    @Override\n-    public void getBytes(int index, ChannelBuffer dst) {\n-        getBytes(index, dst, dst.writableBytes());\n-    }\n-\n-    @Override\n-    public void getBytes(int index, ChannelBuffer dst, int length) {\n-        if (length > dst.writableBytes()) {\n-            throw new IndexOutOfBoundsException();\n-        }\n-        getBytes(index, dst, dst.writerIndex(), length);\n-        dst.writerIndex(dst.writerIndex() + length);\n-    }\n-\n-    @Override\n-    public void setBytes(int index, byte[] src) {\n-        setBytes(index, src, 0, src.length);\n-    }\n-\n-    @Override\n-    public void setBytes(int index, ChannelBuffer src) {\n-        setBytes(index, src, src.readableBytes());\n-    }\n-\n-    @Override\n-    public void setBytes(int index, ChannelBuffer src, int length) {\n-        if (length > src.readableBytes()) {\n-            throw new IndexOutOfBoundsException();\n-        }\n-        setBytes(index, src, src.readerIndex(), length);\n-        src.readerIndex(src.readerIndex() + length);\n-    }\n-\n-    @Override\n-    public byte readByte() {\n-        if (readerIndex == writerIndex) {\n-            throw new IndexOutOfBoundsException();\n-        }\n-        return getByte(readerIndex++);\n-    }\n-\n-    @Override\n-    public ChannelBuffer readBytes(int length) {\n-        checkReadableBytes(length);\n-        if (length == 0) {\n-            return ChannelBuffers.EMPTY_BUFFER;\n-        }\n-        ChannelBuffer buf = factory().getBuffer(length);\n-        buf.writeBytes(this, readerIndex, length);\n-        readerIndex += length;\n-        return buf;\n-    }\n-\n-    @Override\n-    public void readBytes(byte[] dst, int dstIndex, int length) {\n-        checkReadableBytes(length);\n-        getBytes(readerIndex, dst, dstIndex, length);\n-        readerIndex += length;\n-    }\n-\n-    @Override\n-    public void readBytes(byte[] dst) {\n-        readBytes(dst, 0, dst.length);\n-    }\n-\n-    @Override\n-    public void readBytes(ChannelBuffer dst) {\n-        readBytes(dst, dst.writableBytes());\n-    }\n-\n-    @Override\n-    public void readBytes(ChannelBuffer dst, int length) {\n-        if (length > dst.writableBytes()) {\n-            throw new IndexOutOfBoundsException();\n-        }\n-        readBytes(dst, dst.writerIndex(), length);\n-        dst.writerIndex(dst.writerIndex() + length);\n-    }\n-\n-    @Override\n-    public void readBytes(ChannelBuffer dst, int dstIndex, int length) {\n-        checkReadableBytes(length);\n-        getBytes(readerIndex, dst, dstIndex, length);\n-        readerIndex += length;\n-    }\n-\n-    @Override\n-    public void readBytes(ByteBuffer dst) {\n-        int length = dst.remaining();\n-        checkReadableBytes(length);\n-        getBytes(readerIndex, dst);\n-        readerIndex += length;\n-    }\n-\n-    @Override\n-    public void readBytes(OutputStream out, int length) throws IOException {\n-        checkReadableBytes(length);\n-        getBytes(readerIndex, out, length);\n-        readerIndex += length;\n-    }\n-\n-    @Override\n-    public void skipBytes(int length) {\n-        int newReaderIndex = readerIndex + length;\n-        if (newReaderIndex > writerIndex) {\n-            throw new IndexOutOfBoundsException();\n-        }\n-        readerIndex = newReaderIndex;\n-    }\n-\n-    @Override\n-    public void writeByte(int value) {\n-        setByte(writerIndex++, value);\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] src, int srcIndex, int length) {\n-        setBytes(writerIndex, src, srcIndex, length);\n-        writerIndex += length;\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] src) {\n-        writeBytes(src, 0, src.length);\n-    }\n-\n-    @Override\n-    public void writeBytes(ChannelBuffer src) {\n-        writeBytes(src, src.readableBytes());\n-    }\n-\n-    @Override\n-    public void writeBytes(ChannelBuffer src, int length) {\n-        if (length > src.readableBytes()) {\n-            throw new IndexOutOfBoundsException();\n-        }\n-        writeBytes(src, src.readerIndex(), length);\n-        src.readerIndex(src.readerIndex() + length);\n-    }\n-\n-    @Override\n-    public void writeBytes(ChannelBuffer src, int srcIndex, int length) {\n-        setBytes(writerIndex, src, srcIndex, length);\n-        writerIndex += length;\n-    }\n-\n-    @Override\n-    public void writeBytes(ByteBuffer src) {\n-        int length = src.remaining();\n-        setBytes(writerIndex, src);\n-        writerIndex += length;\n-    }\n-\n-    @Override\n-    public int writeBytes(InputStream in, int length) throws IOException {\n-        int writtenBytes = setBytes(writerIndex, in, length);\n-        if (writtenBytes > 0) {\n-            writerIndex += writtenBytes;\n-        }\n-        return writtenBytes;\n-    }\n-\n-    @Override\n-    public ChannelBuffer copy() {\n-        return copy(readerIndex, readableBytes());\n-    }\n-\n-    @Override\n-    public ByteBuffer toByteBuffer() {\n-        return toByteBuffer(readerIndex, readableBytes());\n-    }\n-\n-    @Override\n-    public boolean equals(Object o) {\n-        return o instanceof ChannelBuffer\n-                && ChannelBuffers.equals(this, (ChannelBuffer) o);\n-    }\n-\n-    @Override\n-    public int hashCode() {\n-        return ChannelBuffers.hasCode(this);\n-    }\n-\n-    @Override\n-    public int compareTo(ChannelBuffer that) {\n-        return ChannelBuffers.compare(this, that);\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return getClass().getSimpleName() + '(' +\n-                \"ridx=\" + readerIndex + \", \" +\n-                \"widx=\" + writerIndex + \", \" +\n-                \"cap=\" + capacity() +\n-                ')';\n-    }\n-\n-    protected void checkReadableBytes(int minimumReadableBytes) {\n-        if (readableBytes() < minimumReadableBytes) {\n-            throw new IndexOutOfBoundsException();\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.remoting.buffer;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+import java.nio.ByteBuffer;\r\n+\r\n+public abstract class AbstractChannelBuffer implements ChannelBuffer {\r\n+\r\n+    private int readerIndex;\r\n+\r\n+    private int writerIndex;\r\n+\r\n+    private int markedReaderIndex;\r\n+\r\n+    private int markedWriterIndex;\r\n+\r\n+    @Override\r\n+    public int readerIndex() {\r\n+        return readerIndex;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void readerIndex(int readerIndex) {\r\n+        if (readerIndex < 0 || readerIndex > writerIndex) {\r\n+            throw new IndexOutOfBoundsException();\r\n+        }\r\n+        this.readerIndex = readerIndex;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int writerIndex() {\r\n+        return writerIndex;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writerIndex(int writerIndex) {\r\n+        if (writerIndex < readerIndex || writerIndex > capacity()) {\r\n+            throw new IndexOutOfBoundsException();\r\n+        }\r\n+        this.writerIndex = writerIndex;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setIndex(int readerIndex, int writerIndex) {\r\n+        if (readerIndex < 0 || readerIndex > writerIndex || writerIndex > capacity()) {\r\n+            throw new IndexOutOfBoundsException();\r\n+        }\r\n+        this.readerIndex = readerIndex;\r\n+        this.writerIndex = writerIndex;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void clear() {\r\n+        readerIndex = writerIndex = 0;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean readable() {\r\n+        return readableBytes() > 0;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean writable() {\r\n+        return writableBytes() > 0;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int readableBytes() {\r\n+        return writerIndex - readerIndex;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int writableBytes() {\r\n+        return capacity() - writerIndex;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void markReaderIndex() {\r\n+        markedReaderIndex = readerIndex;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void resetReaderIndex() {\r\n+        readerIndex(markedReaderIndex);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void markWriterIndex() {\r\n+        markedWriterIndex = writerIndex;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void resetWriterIndex() {\r\n+        writerIndex = markedWriterIndex;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void discardReadBytes() {\r\n+        if (readerIndex == 0) {\r\n+            return;\r\n+        }\r\n+        setBytes(0, this, readerIndex, writerIndex - readerIndex);\r\n+        writerIndex -= readerIndex;\r\n+        markedReaderIndex = Math.max(markedReaderIndex - readerIndex, 0);\r\n+        markedWriterIndex = Math.max(markedWriterIndex - readerIndex, 0);\r\n+        readerIndex = 0;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void ensureWritableBytes(int writableBytes) {\r\n+        if (writableBytes > writableBytes()) {\r\n+            throw new IndexOutOfBoundsException();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void getBytes(int index, byte[] dst) {\r\n+        getBytes(index, dst, 0, dst.length);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void getBytes(int index, ChannelBuffer dst) {\r\n+        getBytes(index, dst, dst.writableBytes());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void getBytes(int index, ChannelBuffer dst, int length) {\r\n+        if (length > dst.writableBytes()) {\r\n+            throw new IndexOutOfBoundsException();\r\n+        }\r\n+        getBytes(index, dst, dst.writerIndex(), length);\r\n+        dst.writerIndex(dst.writerIndex() + length);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setBytes(int index, byte[] src) {\r\n+        setBytes(index, src, 0, src.length);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setBytes(int index, ChannelBuffer src) {\r\n+        setBytes(index, src, src.readableBytes());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setBytes(int index, ChannelBuffer src, int length) {\r\n+        if (length > src.readableBytes()) {\r\n+            throw new IndexOutOfBoundsException();\r\n+        }\r\n+        setBytes(index, src, src.readerIndex(), length);\r\n+        src.readerIndex(src.readerIndex() + length);\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte readByte() {\r\n+        if (readerIndex == writerIndex) {\r\n+            throw new IndexOutOfBoundsException();\r\n+        }\r\n+        return getByte(readerIndex++);\r\n+    }\r\n+\r\n+    @Override\r\n+    public ChannelBuffer readBytes(int length) {\r\n+        checkReadableBytes(length);\r\n+        if (length == 0) {\r\n+            return ChannelBuffers.EMPTY_BUFFER;\r\n+        }\r\n+        ChannelBuffer buf = factory().getBuffer(length);\r\n+        buf.writeBytes(this, readerIndex, length);\r\n+        readerIndex += length;\r\n+        return buf;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void readBytes(byte[] dst, int dstIndex, int length) {\r\n+        checkReadableBytes(length);\r\n+        getBytes(readerIndex, dst, dstIndex, length);\r\n+        readerIndex += length;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void readBytes(byte[] dst) {\r\n+        readBytes(dst, 0, dst.length);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void readBytes(ChannelBuffer dst) {\r\n+        readBytes(dst, dst.writableBytes());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void readBytes(ChannelBuffer dst, int length) {\r\n+        if (length > dst.writableBytes()) {\r\n+            throw new IndexOutOfBoundsException();\r\n+        }\r\n+        readBytes(dst, dst.writerIndex(), length);\r\n+        dst.writerIndex(dst.writerIndex() + length);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void readBytes(ChannelBuffer dst, int dstIndex, int length) {\r\n+        checkReadableBytes(length);\r\n+        getBytes(readerIndex, dst, dstIndex, length);\r\n+        readerIndex += length;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void readBytes(ByteBuffer dst) {\r\n+        int length = dst.remaining();\r\n+        checkReadableBytes(length);\r\n+        getBytes(readerIndex, dst);\r\n+        readerIndex += length;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void readBytes(OutputStream out, int length) throws IOException {\r\n+        checkReadableBytes(length);\r\n+        getBytes(readerIndex, out, length);\r\n+        readerIndex += length;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void skipBytes(int length) {\r\n+        int newReaderIndex = readerIndex + length;\r\n+        if (newReaderIndex > writerIndex) {\r\n+            throw new IndexOutOfBoundsException();\r\n+        }\r\n+        readerIndex = newReaderIndex;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeByte(int value) {\r\n+        setByte(writerIndex++, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] src, int srcIndex, int length) {\r\n+        setBytes(writerIndex, src, srcIndex, length);\r\n+        writerIndex += length;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] src) {\r\n+        writeBytes(src, 0, src.length);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(ChannelBuffer src) {\r\n+        writeBytes(src, src.readableBytes());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(ChannelBuffer src, int length) {\r\n+        if (length > src.readableBytes()) {\r\n+            throw new IndexOutOfBoundsException();\r\n+        }\r\n+        writeBytes(src, src.readerIndex(), length);\r\n+        src.readerIndex(src.readerIndex() + length);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(ChannelBuffer src, int srcIndex, int length) {\r\n+        setBytes(writerIndex, src, srcIndex, length);\r\n+        writerIndex += length;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(ByteBuffer src) {\r\n+        int length = src.remaining();\r\n+        setBytes(writerIndex, src);\r\n+        writerIndex += length;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int writeBytes(InputStream in, int length) throws IOException {\r\n+        int writtenBytes = setBytes(writerIndex, in, length);\r\n+        if (writtenBytes > 0) {\r\n+            writerIndex += writtenBytes;\r\n+        }\r\n+        return writtenBytes;\r\n+    }\r\n+\r\n+    @Override\r\n+    public ChannelBuffer copy() {\r\n+        return copy(readerIndex, readableBytes());\r\n+    }\r\n+\r\n+    @Override\r\n+    public ByteBuffer toByteBuffer() {\r\n+        return toByteBuffer(readerIndex, readableBytes());\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean equals(Object o) {\r\n+        return o instanceof ChannelBuffer\r\n+                && ChannelBuffers.equals(this, (ChannelBuffer) o);\r\n+    }\r\n+\r\n+    @Override\r\n+    public int hashCode() {\r\n+        return ChannelBuffers.hasCode(this);\r\n+    }\r\n+\r\n+    @Override\r\n+    public int compareTo(ChannelBuffer that) {\r\n+        return ChannelBuffers.compare(this, that);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return getClass().getSimpleName() + '(' +\r\n+                \"ridx=\" + readerIndex + \", \" +\r\n+                \"widx=\" + writerIndex + \", \" +\r\n+                \"cap=\" + capacity() +\r\n+                ')';\r\n+    }\r\n+\r\n+    protected void checkReadableBytes(int minimumReadableBytes) {\r\n+        if (readableBytes() < minimumReadableBytes) {\r\n+            throw new IndexOutOfBoundsException();\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/buffer/ChannelBuffer.java", "source2": "org/apache/dubbo/remoting/buffer/ChannelBuffer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,951 +1,951 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.remoting.buffer;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-import java.nio.ByteBuffer;\n-\n-/**\n- * A random and sequential accessible sequence of zero or more bytes (octets).\n- * This interface provides an abstract view for one or more primitive byte\n- * arrays ({@code byte[]}) and {@linkplain ByteBuffer NIO buffers}.\n- * <p/>\n- * <h3>Creation of a buffer</h3>\n- * <p/>\n- * It is recommended to create a new buffer using the helper methods in {@link\n- * ChannelBuffers} rather than calling an individual implementation's\n- * constructor.\n- * <p/>\n- * <h3>Random Access Indexing</h3>\n- * <p/>\n- * Just like an ordinary primitive byte array, {@link ChannelBuffer} uses <a\n- * href=\"http://en.wikipedia.org/wiki/Index_(information_technology)#Array_element_identifier\">zero-based\n- * indexing</a>. It means the index of the first byte is always {@code 0} and\n- * the index of the last byte is always {@link #capacity() capacity - 1}.  For\n- * example, to iterate all bytes of a buffer, you can do the following,\n- * regardless of its internal implementation:\n- * <p/>\n- * <pre>\n- * {@link ChannelBuffer} buffer = ...;\n- * for (int i = 0; i &lt; buffer.capacity(); i ++</strong>) {\n- *     byte b = buffer.getByte(i);\n- *     System.out.println((char) b);\n- * }\n- * </pre>\n- * <p/>\n- * <h3>Sequential Access Indexing</h3>\n- * <p/>\n- * {@link ChannelBuffer} provides two pointer variables to support sequential\n- * read and write operations - {@link #readerIndex() readerIndex} for a read\n- * operation and {@link #writerIndex() writerIndex} for a write operation\n- * respectively.  The following diagram shows how a buffer is segmented into\n- * three areas by the two pointers:\n- * <p/>\n- * <pre>\n- *      +-------------------+------------------+------------------+\n- *      | discardable bytes |  readable bytes  |  writable bytes  |\n- *      |                   |     (CONTENT)    |                  |\n- *      +-------------------+------------------+------------------+\n- *      |                   |                  |                  |\n- *      0      <=      readerIndex   <=   writerIndex    <=    capacity\n- * </pre>\n- * <p/>\n- * <h4>Readable bytes (the actual content)</h4>\n- * <p/>\n- * This segment is where the actual data is stored.  Any operation whose name\n- * starts with {@code read} or {@code skip} will get or skip the data at the\n- * current {@link #readerIndex() readerIndex} and increase it by the number of\n- * read bytes.  If the argument of the read operation is also a {@link\n- * ChannelBuffer} and no destination index is specified, the specified buffer's\n- * {@link #readerIndex() readerIndex} is increased together.\n- * <p/>\n- * If there's not enough content left, {@link IndexOutOfBoundsException} is\n- * raised.  The default value of newly allocated, wrapped or copied buffer's\n- * {@link #readerIndex() readerIndex} is {@code 0}.\n- * <p/>\n- * <pre>\n- * // Iterates the readable bytes of a buffer.\n- * {@link ChannelBuffer} buffer = ...;\n- * while (buffer.readable()) {\n- *     System.out.println(buffer.readByte());\n- * }\n- * </pre>\n- * <p/>\n- * <h4>Writable bytes</h4>\n- * <p/>\n- * This segment is a undefined space which needs to be filled.  Any operation\n- * whose name ends with {@code write} will write the data at the current {@link\n- * #writerIndex() writerIndex} and increase it by the number of written bytes.\n- * If the argument of the write operation is also a {@link ChannelBuffer}, and\n- * no source index is specified, the specified buffer's {@link #readerIndex()\n- * readerIndex} is increased together.\n- * <p/>\n- * If there's not enough writable bytes left, {@link IndexOutOfBoundsException}\n- * is raised.  The default value of newly allocated buffer's {@link\n- * #writerIndex() writerIndex} is {@code 0}.  The default value of wrapped or\n- * copied buffer's {@link #writerIndex() writerIndex} is the {@link #capacity()\n- * capacity} of the buffer.\n- * <p/>\n- * <pre>\n- * // Fills the writable bytes of a buffer with random integers.\n- * {@link ChannelBuffer} buffer = ...;\n- * while (buffer.writableBytes() >= 4) {\n- *     buffer.writeInt(random.nextInt());\n- * }\n- * </pre>\n- * <p/>\n- * <h4>Discardable bytes</h4>\n- * <p/>\n- * This segment contains the bytes which were read already by a read operation.\n- * Initially, the size of this segment is {@code 0}, but its size increases up\n- * to the {@link #writerIndex() writerIndex} as read operations are executed.\n- * The read bytes can be discarded by calling {@link #discardReadBytes()} to\n- * reclaim unused area as depicted by the following diagram:\n- * <p/>\n- * <pre>\n- *  BEFORE discardReadBytes()\n- *\n- *      +-------------------+------------------+------------------+\n- *      | discardable bytes |  readable bytes  |  writable bytes  |\n- *      +-------------------+------------------+------------------+\n- *      |                   |                  |                  |\n- *      0      <=      readerIndex   <=   writerIndex    <=    capacity\n- *\n- *\n- *  AFTER discardReadBytes()\n- *\n- *      +------------------+--------------------------------------+\n- *      |  readable bytes  |    writable bytes (got more space)   |\n- *      +------------------+--------------------------------------+\n- *      |                  |                                      |\n- * readerIndex (0) <= writerIndex (decreased)        <=        capacity\n- * </pre>\n- * <p/>\n- * Please note that there is no guarantee about the content of writable bytes\n- * after calling {@link #discardReadBytes()}.  The writable bytes will not be\n- * moved in most cases and could even be filled with completely different data\n- * depending on the underlying buffer implementation.\n- * <p/>\n- * <h4>Clearing the buffer indexes</h4>\n- * <p/>\n- * You can set both {@link #readerIndex() readerIndex} and {@link #writerIndex()\n- * writerIndex} to {@code 0} by calling {@link #clear()}. It does not clear the\n- * buffer content (e.g. filling with {@code 0}) but just clears the two\n- * pointers.  Please also note that the semantic of this operation is different\n- * from {@link ByteBuffer#clear()}.\n- * <p/>\n- * <pre>\n- *  BEFORE clear()\n- *\n- *      +-------------------+------------------+------------------+\n- *      | discardable bytes |  readable bytes  |  writable bytes  |\n- *      +-------------------+------------------+------------------+\n- *      |                   |                  |                  |\n- *      0      <=      readerIndex   <=   writerIndex    <=    capacity\n- *\n- *\n- *  AFTER clear()\n- *\n- *      +---------------------------------------------------------+\n- *      |             writable bytes (got more space)             |\n- *      +---------------------------------------------------------+\n- *      |                                                         |\n- *      0 = readerIndex = writerIndex            <=            capacity\n- * </pre>\n- * <p/>\n- * <h3>Mark and reset</h3>\n- * <p/>\n- * There are two marker indexes in every buffer. One is for storing {@link\n- * #readerIndex() readerIndex} and the other is for storing {@link\n- * #writerIndex() writerIndex}.  You can always reposition one of the two\n- * indexes by calling a reset method.  It works in a similar fashion to the mark\n- * and reset methods in {@link InputStream} except that there's no {@code\n- * readlimit}.\n- * <p/>\n- * <h3>Conversion to existing JDK types</h3>\n- * <p/>\n- * <h4>Byte array</h4>\n- * <p/>\n- * If a {@link ChannelBuffer} is backed by a byte array (i.e. {@code byte[]}),\n- * you can access it directly via the {@link #array()} method.  To determine if\n- * a buffer is backed by a byte array, {@link #hasArray()} should be used.\n- * <p/>\n- * <h4>NIO Buffers</h4>\n- * <p/>\n- * Various {@link #toByteBuffer()}  methods convert a {@link ChannelBuffer} into\n- * one or more NIO buffers.  These methods avoid buffer allocation and memory\n- * copy whenever possible, but there's no guarantee that memory copy will not be\n- * involved.\n- * <p/>\n- * <h4>I/O Streams</h4>\n- * <p/>\n- * Please refer to {@link ChannelBufferInputStream} and {@link\n- * ChannelBufferOutputStream}.\n- *\n- *\n- */\n-public interface ChannelBuffer extends Comparable<ChannelBuffer> {\n-\n-    /**\n-     * Returns the number of bytes (octets) this buffer can contain.\n-     */\n-    int capacity();\n-\n-    /**\n-     * Sets the {@code readerIndex} and {@code writerIndex} of this buffer to\n-     * {@code 0}. This method is identical to {@link #setIndex(int, int)\n-     * setIndex(0, 0)}.\n-     * <p/>\n-     * Please note that the behavior of this method is different from that of\n-     * NIO buffer, which sets the {@code limit} to the {@code capacity} of the\n-     * buffer.\n-     */\n-    void clear();\n-\n-    /**\n-     * Returns a copy of this buffer's readable bytes.  Modifying the content of\n-     * the returned buffer or this buffer does not affect each other at all.\n-     * This method is identical to {@code buf.copy(buf.readerIndex(),\n-     * buf.readableBytes())}. This method does not modify {@code readerIndex} or\n-     * {@code writerIndex} of this buffer.\n-     */\n-    ChannelBuffer copy();\n-\n-    /**\n-     * Returns a copy of this buffer's sub-region.  Modifying the content of the\n-     * returned buffer or this buffer does not affect each other at all. This\n-     * method does not modify {@code readerIndex} or {@code writerIndex} of this\n-     * buffer.\n-     */\n-    ChannelBuffer copy(int index, int length);\n-\n-    /**\n-     * Discards the bytes between the 0th index and {@code readerIndex}. It\n-     * moves the bytes between {@code readerIndex} and {@code writerIndex} to\n-     * the 0th index, and sets {@code readerIndex} and {@code writerIndex} to\n-     * {@code 0} and {@code oldWriterIndex - oldReaderIndex} respectively.\n-     * <p/>\n-     * Please refer to the class documentation for more detailed explanation.\n-     */\n-    void discardReadBytes();\n-\n-    /**\n-     * Makes sure the number of {@linkplain #writableBytes() the writable bytes}\n-     * is equal to or greater than the specified value.  If there is enough\n-     * writable bytes in this buffer, this method returns with no side effect.\n-     * Otherwise: <ul> <li>a non-dynamic buffer will throw an {@link\n-     * IndexOutOfBoundsException}.</li> <li>a dynamic buffer will expand its\n-     * capacity so that the number of the {@link #writableBytes() writable\n-     * bytes} becomes equal to or greater than the specified value. The\n-     * expansion involves the reallocation of the internal buffer and\n-     * consequently memory copy.</li> </ul>\n-     *\n-     * @param writableBytes the expected minimum number of writable bytes\n-     * @throws IndexOutOfBoundsException if {@linkplain #writableBytes() the\n-     *                                   writable bytes} of this buffer is less\n-     *                                   than the specified value and if this\n-     *                                   buffer is not a dynamic buffer\n-     */\n-    void ensureWritableBytes(int writableBytes);\n-\n-    /**\n-     * Determines if the content of the specified buffer is identical to the\n-     * content of this array.  'Identical' here means: <ul> <li>the size of the\n-     * contents of the two buffers are same and</li> <li>every single byte of\n-     * the content of the two buffers are same.</li> </ul> Please note that it\n-     * does not compare {@link #readerIndex()} nor {@link #writerIndex()}.  This\n-     * method also returns {@code false} for {@code null} and an object which is\n-     * not an instance of {@link ChannelBuffer} type.\n-     */\n-    @Override\n-    boolean equals(Object o);\n-\n-    /**\n-     * Returns the factory which creates a {@link ChannelBuffer} whose type and\n-     * default {@link java.nio.ByteOrder} are same with this buffer.\n-     */\n-    ChannelBufferFactory factory();\n-\n-    /**\n-     * Gets a byte at the specified absolute {@code index} in this buffer. This\n-     * method does not modify {@code readerIndex} or {@code writerIndex} of this\n-     * buffer.\n-     *\n-     * @throws IndexOutOfBoundsException if the specified {@code index} is less\n-     *                                   than {@code 0} or {@code index + 1} is\n-     *                                   greater than {@code this.capacity}\n-     */\n-    byte getByte(int index);\n-\n-    /**\n-     * Transfers this buffer's data to the specified destination starting at the\n-     * specified absolute {@code index}. This method does not modify {@code\n-     * readerIndex} or {@code writerIndex} of this buffer\n-     *\n-     * @throws IndexOutOfBoundsException if the specified {@code index} is less\n-     *                                   than {@code 0} or if {@code index +\n-     *                                   dst.length} is greater than {@code\n-     *                                   this.capacity}\n-     */\n-    void getBytes(int index, byte[] dst);\n-\n-    /**\n-     * Transfers this buffer's data to the specified destination starting at the\n-     * specified absolute {@code index}. This method does not modify {@code\n-     * readerIndex} or {@code writerIndex} of this buffer.\n-     *\n-     * @param dstIndex the first index of the destination\n-     * @param length   the number of bytes to transfer\n-     * @throws IndexOutOfBoundsException if the specified {@code index} is less\n-     *                                   than {@code 0}, if the specified {@code\n-     *                                   dstIndex} is less than {@code 0}, if\n-     *                                   {@code index + length} is greater than\n-     *                                   {@code this.capacity}, or if {@code\n-     *                                   dstIndex + length} is greater than\n-     *                                   {@code dst.length}\n-     */\n-    void getBytes(int index, byte[] dst, int dstIndex, int length);\n-\n-    /**\n-     * Transfers this buffer's data to the specified destination starting at the\n-     * specified absolute {@code index} until the destination's position reaches\n-     * its limit. This method does not modify {@code readerIndex} or {@code\n-     * writerIndex} of this buffer while the destination's {@code position} will\n-     * be increased.\n-     *\n-     * @throws IndexOutOfBoundsException if the specified {@code index} is less\n-     *                                   than {@code 0} or if {@code index +\n-     *                                   dst.remaining()} is greater than {@code\n-     *                                   this.capacity}\n-     */\n-    void getBytes(int index, ByteBuffer dst);\n-\n-    /**\n-     * Transfers this buffer's data to the specified destination starting at the\n-     * specified absolute {@code index} until the destination becomes\n-     * non-writable.  This method is basically same with {@link #getBytes(int,\n-     * ChannelBuffer, int, int)}, except that this method increases the {@code\n-     * writerIndex} of the destination by the number of the transferred bytes\n-     * while {@link #getBytes(int, ChannelBuffer, int, int)} does not. This\n-     * method does not modify {@code readerIndex} or {@code writerIndex} of the\n-     * source buffer (i.e. {@code this}).\n-     *\n-     * @throws IndexOutOfBoundsException if the specified {@code index} is less\n-     *                                   than {@code 0} or if {@code index +\n-     *                                   dst.writableBytes} is greater than\n-     *                                   {@code this.capacity}\n-     */\n-    void getBytes(int index, ChannelBuffer dst);\n-\n-    /**\n-     * Transfers this buffer's data to the specified destination starting at the\n-     * specified absolute {@code index}.  This method is basically same with\n-     * {@link #getBytes(int, ChannelBuffer, int, int)}, except that this method\n-     * increases the {@code writerIndex} of the destination by the number of the\n-     * transferred bytes while {@link #getBytes(int, ChannelBuffer, int, int)}\n-     * does not. This method does not modify {@code readerIndex} or {@code\n-     * writerIndex} of the source buffer (i.e. {@code this}).\n-     *\n-     * @param length the number of bytes to transfer\n-     * @throws IndexOutOfBoundsException if the specified {@code index} is less\n-     *                                   than {@code 0}, if {@code index +\n-     *                                   length} is greater than {@code\n-     *                                   this.capacity}, or if {@code length} is\n-     *                                   greater than {@code dst.writableBytes}\n-     */\n-    void getBytes(int index, ChannelBuffer dst, int length);\n-\n-    /**\n-     * Transfers this buffer's data to the specified destination starting at the\n-     * specified absolute {@code index}. This method does not modify {@code\n-     * readerIndex} or {@code writerIndex} of both the source (i.e. {@code\n-     * this}) and the destination.\n-     *\n-     * @param dstIndex the first index of the destination\n-     * @param length   the number of bytes to transfer\n-     * @throws IndexOutOfBoundsException if the specified {@code index} is less\n-     *                                   than {@code 0}, if the specified {@code\n-     *                                   dstIndex} is less than {@code 0}, if\n-     *                                   {@code index + length} is greater than\n-     *                                   {@code this.capacity}, or if {@code\n-     *                                   dstIndex + length} is greater than\n-     *                                   {@code dst.capacity}\n-     */\n-    void getBytes(int index, ChannelBuffer dst, int dstIndex, int length);\n-\n-    /**\n-     * Transfers this buffer's data to the specified stream starting at the\n-     * specified absolute {@code index}. This method does not modify {@code\n-     * readerIndex} or {@code writerIndex} of this buffer.\n-     *\n-     * @param length the number of bytes to transfer\n-     * @throws IndexOutOfBoundsException if the specified {@code index} is less\n-     *                                   than {@code 0} or if {@code index +\n-     *                                   length} is greater than {@code\n-     *                                   this.capacity}\n-     * @throws IOException               if the specified stream threw an\n-     *                                   exception during I/O\n-     */\n-    void getBytes(int index, OutputStream dst, int length) throws IOException;\n-\n-    /**\n-     * Returns {@code true} if and only if this buffer is backed by an NIO\n-     * direct buffer.\n-     */\n-    boolean isDirect();\n-\n-    /**\n-     * Marks the current {@code readerIndex} in this buffer.  You can reposition\n-     * the current {@code readerIndex} to the marked {@code readerIndex} by\n-     * calling {@link #resetReaderIndex()}. The initial value of the marked\n-     * {@code readerIndex} is {@code 0}.\n-     */\n-    void markReaderIndex();\n-\n-    /**\n-     * Marks the current {@code writerIndex} in this buffer.  You can reposition\n-     * the current {@code writerIndex} to the marked {@code writerIndex} by\n-     * calling {@link #resetWriterIndex()}. The initial value of the marked\n-     * {@code writerIndex} is {@code 0}.\n-     */\n-    void markWriterIndex();\n-\n-    /**\n-     * Returns {@code true} if and only if {@code (this.writerIndex -\n-     * this.readerIndex)} is greater than {@code 0}.\n-     */\n-    boolean readable();\n-\n-    /**\n-     * Returns the number of readable bytes which is equal to {@code\n-     * (this.writerIndex - this.readerIndex)}.\n-     */\n-    int readableBytes();\n-\n-    /**\n-     * Gets a byte at the current {@code readerIndex} and increases the {@code\n-     * readerIndex} by {@code 1} in this buffer.\n-     *\n-     * @throws IndexOutOfBoundsException if {@code this.readableBytes} is less\n-     *                                   than {@code 1}\n-     */\n-    byte readByte();\n-\n-    /**\n-     * Transfers this buffer's data to the specified destination starting at the\n-     * current {@code readerIndex} and increases the {@code readerIndex} by the\n-     * number of the transferred bytes (= {@code dst.length}).\n-     *\n-     * @throws IndexOutOfBoundsException if {@code dst.length} is greater than\n-     *                                   {@code this.readableBytes}\n-     */\n-    void readBytes(byte[] dst);\n-\n-    /**\n-     * Transfers this buffer's data to the specified destination starting at the\n-     * current {@code readerIndex} and increases the {@code readerIndex} by the\n-     * number of the transferred bytes (= {@code length}).\n-     *\n-     * @param dstIndex the first index of the destination\n-     * @param length   the number of bytes to transfer\n-     * @throws IndexOutOfBoundsException if the specified {@code dstIndex} is\n-     *                                   less than {@code 0}, if {@code length}\n-     *                                   is greater than {@code this.readableBytes},\n-     *                                   or if {@code dstIndex + length} is\n-     *                                   greater than {@code dst.length}\n-     */\n-    void readBytes(byte[] dst, int dstIndex, int length);\n-\n-    /**\n-     * Transfers this buffer's data to the specified destination starting at the\n-     * current {@code readerIndex} until the destination's position reaches its\n-     * limit, and increases the {@code readerIndex} by the number of the\n-     * transferred bytes.\n-     *\n-     * @throws IndexOutOfBoundsException if {@code dst.remaining()} is greater\n-     *                                   than {@code this.readableBytes}\n-     */\n-    void readBytes(ByteBuffer dst);\n-\n-    /**\n-     * Transfers this buffer's data to the specified destination starting at the\n-     * current {@code readerIndex} until the destination becomes non-writable,\n-     * and increases the {@code readerIndex} by the number of the transferred\n-     * bytes.  This method is basically same with {@link\n-     * #readBytes(ChannelBuffer, int, int)}, except that this method increases\n-     * the {@code writerIndex} of the destination by the number of the\n-     * transferred bytes while {@link #readBytes(ChannelBuffer, int, int)} does\n-     * not.\n-     *\n-     * @throws IndexOutOfBoundsException if {@code dst.writableBytes} is greater\n-     *                                   than {@code this.readableBytes}\n-     */\n-    void readBytes(ChannelBuffer dst);\n-\n-    /**\n-     * Transfers this buffer's data to the specified destination starting at the\n-     * current {@code readerIndex} and increases the {@code readerIndex} by the\n-     * number of the transferred bytes (= {@code length}).  This method is\n-     * basically same with {@link #readBytes(ChannelBuffer, int, int)}, except\n-     * that this method increases the {@code writerIndex} of the destination by\n-     * the number of the transferred bytes (= {@code length}) while {@link\n-     * #readBytes(ChannelBuffer, int, int)} does not.\n-     *\n-     * @throws IndexOutOfBoundsException if {@code length} is greater than\n-     *                                   {@code this.readableBytes} or if {@code\n-     *                                   length} is greater than {@code\n-     *                                   dst.writableBytes}\n-     */\n-    void readBytes(ChannelBuffer dst, int length);\n-\n-    /**\n-     * Transfers this buffer's data to the specified destination starting at the\n-     * current {@code readerIndex} and increases the {@code readerIndex} by the\n-     * number of the transferred bytes (= {@code length}).\n-     *\n-     * @param dstIndex the first index of the destination\n-     * @param length   the number of bytes to transfer\n-     * @throws IndexOutOfBoundsException if the specified {@code dstIndex} is\n-     *                                   less than {@code 0}, if {@code length}\n-     *                                   is greater than {@code this.readableBytes},\n-     *                                   or if {@code dstIndex + length} is\n-     *                                   greater than {@code dst.capacity}\n-     */\n-    void readBytes(ChannelBuffer dst, int dstIndex, int length);\n-\n-    /**\n-     * Transfers this buffer's data to a newly created buffer starting at the\n-     * current {@code readerIndex} and increases the {@code readerIndex} by the\n-     * number of the transferred bytes (= {@code length}). The returned buffer's\n-     * {@code readerIndex} and {@code writerIndex} are {@code 0} and {@code\n-     * length} respectively.\n-     *\n-     * @param length the number of bytes to transfer\n-     * @return the newly created buffer which contains the transferred bytes\n-     * @throws IndexOutOfBoundsException if {@code length} is greater than\n-     *                                   {@code this.readableBytes}\n-     */\n-    ChannelBuffer readBytes(int length);\n-\n-    /**\n-     * Repositions the current {@code readerIndex} to the marked {@code\n-     * readerIndex} in this buffer.\n-     *\n-     * @throws IndexOutOfBoundsException if the current {@code writerIndex} is\n-     *                                   less than the marked {@code\n-     *                                   readerIndex}\n-     */\n-    void resetReaderIndex();\n-\n-    /**\n-     * Marks the current {@code writerIndex} in this buffer.  You can reposition\n-     * the current {@code writerIndex} to the marked {@code writerIndex} by\n-     * calling {@link #resetWriterIndex()}. The initial value of the marked\n-     * {@code writerIndex} is {@code 0}.\n-     */\n-    void resetWriterIndex();\n-\n-    /**\n-     * Returns the {@code readerIndex} of this buffer.\n-     */\n-    int readerIndex();\n-\n-    /**\n-     * Sets the {@code readerIndex} of this buffer.\n-     *\n-     * @throws IndexOutOfBoundsException if the specified {@code readerIndex} is\n-     *                                   less than {@code 0} or greater than\n-     *                                   {@code this.writerIndex}\n-     */\n-    void readerIndex(int readerIndex);\n-\n-    /**\n-     * Transfers this buffer's data to the specified stream starting at the\n-     * current {@code readerIndex}.\n-     *\n-     * @param length the number of bytes to transfer\n-     * @throws IndexOutOfBoundsException if {@code length} is greater than\n-     *                                   {@code this.readableBytes}\n-     * @throws IOException               if the specified stream threw an\n-     *                                   exception during I/O\n-     */\n-    void readBytes(OutputStream dst, int length) throws IOException;\n-\n-    /**\n-     * Sets the specified byte at the specified absolute {@code index} in this\n-     * buffer.  The 24 high-order bits of the specified value are ignored. This\n-     * method does not modify {@code readerIndex} or {@code writerIndex} of this\n-     * buffer.\n-     *\n-     * @throws IndexOutOfBoundsException if the specified {@code index} is less\n-     *                                   than {@code 0} or {@code index + 1} is\n-     *                                   greater than {@code this.capacity}\n-     */\n-    void setByte(int index, int value);\n-\n-    /**\n-     * Transfers the specified source array's data to this buffer starting at\n-     * the specified absolute {@code index}. This method does not modify {@code\n-     * readerIndex} or {@code writerIndex} of this buffer.\n-     *\n-     * @throws IndexOutOfBoundsException if the specified {@code index} is less\n-     *                                   than {@code 0} or if {@code index +\n-     *                                   src.length} is greater than {@code\n-     *                                   this.capacity}\n-     */\n-    void setBytes(int index, byte[] src);\n-\n-    /**\n-     * Transfers the specified source array's data to this buffer starting at\n-     * the specified absolute {@code index}. This method does not modify {@code\n-     * readerIndex} or {@code writerIndex} of this buffer.\n-     *\n-     * @throws IndexOutOfBoundsException if the specified {@code index} is less\n-     *                                   than {@code 0}, if the specified {@code\n-     *                                   srcIndex} is less than {@code 0}, if\n-     *                                   {@code index + length} is greater than\n-     *                                   {@code this.capacity}, or if {@code\n-     *                                   srcIndex + length} is greater than\n-     *                                   {@code src.length}\n-     */\n-    void setBytes(int index, byte[] src, int srcIndex, int length);\n-\n-    /**\n-     * Transfers the specified source buffer's data to this buffer starting at\n-     * the specified absolute {@code index} until the source buffer's position\n-     * reaches its limit. This method does not modify {@code readerIndex} or\n-     * {@code writerIndex} of this buffer.\n-     *\n-     * @throws IndexOutOfBoundsException if the specified {@code index} is less\n-     *                                   than {@code 0} or if {@code index +\n-     *                                   src.remaining()} is greater than {@code\n-     *                                   this.capacity}\n-     */\n-    void setBytes(int index, ByteBuffer src);\n-\n-    /**\n-     * Transfers the specified source buffer's data to this buffer starting at\n-     * the specified absolute {@code index} until the source buffer becomes\n-     * unreadable.  This method is basically same with {@link #setBytes(int,\n-     * ChannelBuffer, int, int)}, except that this method increases the {@code\n-     * readerIndex} of the source buffer by the number of the transferred bytes\n-     * while {@link #setBytes(int, ChannelBuffer, int, int)} does not. This\n-     * method does not modify {@code readerIndex} or {@code writerIndex} of the\n-     * source buffer (i.e. {@code this}).\n-     *\n-     * @throws IndexOutOfBoundsException if the specified {@code index} is less\n-     *                                   than {@code 0} or if {@code index +\n-     *                                   src.readableBytes} is greater than\n-     *                                   {@code this.capacity}\n-     */\n-    void setBytes(int index, ChannelBuffer src);\n-\n-    /**\n-     * Transfers the specified source buffer's data to this buffer starting at\n-     * the specified absolute {@code index}.  This method is basically same with\n-     * {@link #setBytes(int, ChannelBuffer, int, int)}, except that this method\n-     * increases the {@code readerIndex} of the source buffer by the number of\n-     * the transferred bytes while {@link #setBytes(int, ChannelBuffer, int,\n-     * int)} does not. This method does not modify {@code readerIndex} or {@code\n-     * writerIndex} of the source buffer (i.e. {@code this}).\n-     *\n-     * @param length the number of bytes to transfer\n-     * @throws IndexOutOfBoundsException if the specified {@code index} is less\n-     *                                   than {@code 0}, if {@code index +\n-     *                                   length} is greater than {@code\n-     *                                   this.capacity}, or if {@code length} is\n-     *                                   greater than {@code src.readableBytes}\n-     */\n-    void setBytes(int index, ChannelBuffer src, int length);\n-\n-    /**\n-     * Transfers the specified source buffer's data to this buffer starting at\n-     * the specified absolute {@code index}. This method does not modify {@code\n-     * readerIndex} or {@code writerIndex} of both the source (i.e. {@code\n-     * this}) and the destination.\n-     *\n-     * @param srcIndex the first index of the source\n-     * @param length   the number of bytes to transfer\n-     * @throws IndexOutOfBoundsException if the specified {@code index} is less\n-     *                                   than {@code 0}, if the specified {@code\n-     *                                   srcIndex} is less than {@code 0}, if\n-     *                                   {@code index + length} is greater than\n-     *                                   {@code this.capacity}, or if {@code\n-     *                                   srcIndex + length} is greater than\n-     *                                   {@code src.capacity}\n-     */\n-    void setBytes(int index, ChannelBuffer src, int srcIndex, int length);\n-\n-    /**\n-     * Transfers the content of the specified source stream to this buffer\n-     * starting at the specified absolute {@code index}. This method does not\n-     * modify {@code readerIndex} or {@code writerIndex} of this buffer.\n-     *\n-     * @param length the number of bytes to transfer\n-     * @return the actual number of bytes read in from the specified channel.\n-     * {@code -1} if the specified channel is closed.\n-     * @throws IndexOutOfBoundsException if the specified {@code index} is less\n-     *                                   than {@code 0} or if {@code index +\n-     *                                   length} is greater than {@code\n-     *                                   this.capacity}\n-     * @throws IOException               if the specified stream threw an\n-     *                                   exception during I/O\n-     */\n-    int setBytes(int index, InputStream src, int length) throws IOException;\n-\n-    /**\n-     * Sets the {@code readerIndex} and {@code writerIndex} of this buffer in\n-     * one shot.  This method is useful when you have to worry about the\n-     * invocation order of {@link #readerIndex(int)} and {@link\n-     * #writerIndex(int)} methods.  For example, the following code will fail:\n-     * <p/>\n-     * <pre>\n-     * // Create a buffer whose readerIndex, writerIndex and capacity are\n-     * // 0, 0 and 8 respectively.\n-     * {@link ChannelBuffer} buf = {@link ChannelBuffers}.buffer(8);\n-     *\n-     * // IndexOutOfBoundsException is thrown because the specified\n-     * // readerIndex (2) cannot be greater than the current writerIndex (0).\n-     * buf.readerIndex(2);\n-     * buf.writerIndex(4);\n-     * </pre>\n-     * <p/>\n-     * The following code will also fail:\n-     * <p/>\n-     * <pre>\n-     * // Create a buffer whose readerIndex, writerIndex and capacity are\n-     * // 0, 8 and 8 respectively.\n-     * {@link ChannelBuffer} buf = {@link ChannelBuffers}.wrappedBuffer(new\n-     * byte[8]);\n-     *\n-     * // readerIndex becomes 8.\n-     * buf.readLong();\n-     *\n-     * // IndexOutOfBoundsException is thrown because the specified\n-     * // writerIndex (4) cannot be less than the current readerIndex (8).\n-     * buf.writerIndex(4);\n-     * buf.readerIndex(2);\n-     * </pre>\n-     * <p/>\n-     * By contrast, {@link #setIndex(int, int)} guarantees that it never throws\n-     * an {@link IndexOutOfBoundsException} as long as the specified indexes\n-     * meet basic constraints, regardless what the current index values of the\n-     * buffer are:\n-     * <p/>\n-     * <pre>\n-     * // No matter what the current state of the buffer is, the following\n-     * // call always succeeds as long as the capacity of the buffer is not\n-     * // less than 4.\n-     * buf.setIndex(2, 4);\n-     * </pre>\n-     *\n-     * @throws IndexOutOfBoundsException if the specified {@code readerIndex} is\n-     *                                   less than 0, if the specified {@code\n-     *                                   writerIndex} is less than the specified\n-     *                                   {@code readerIndex} or if the specified\n-     *                                   {@code writerIndex} is greater than\n-     *                                   {@code this.capacity}\n-     */\n-    void setIndex(int readerIndex, int writerIndex);\n-\n-    /**\n-     * Increases the current {@code readerIndex} by the specified {@code length}\n-     * in this buffer.\n-     *\n-     * @throws IndexOutOfBoundsException if {@code length} is greater than\n-     *                                   {@code this.readableBytes}\n-     */\n-    void skipBytes(int length);\n-\n-    /**\n-     * Converts this buffer's readable bytes into a NIO buffer.  The returned\n-     * buffer might or might not share the content with this buffer, while they\n-     * have separate indexes and marks.  This method is identical to {@code\n-     * buf.toByteBuffer(buf.readerIndex(), buf.readableBytes())}. This method\n-     * does not modify {@code readerIndex} or {@code writerIndex} of this\n-     * buffer.\n-     */\n-    ByteBuffer toByteBuffer();\n-\n-    /**\n-     * Converts this buffer's sub-region into a NIO buffer.  The returned buffer\n-     * might or might not share the content with this buffer, while they have\n-     * separate indexes and marks. This method does not modify {@code\n-     * readerIndex} or {@code writerIndex} of this buffer.\n-     */\n-    ByteBuffer toByteBuffer(int index, int length);\n-\n-    /**\n-     * Returns {@code true} if and only if {@code (this.capacity -\n-     * this.writerIndex)} is greater than {@code 0}.\n-     */\n-    boolean writable();\n-\n-    /**\n-     * Returns the number of writable bytes which is equal to {@code\n-     * (this.capacity - this.writerIndex)}.\n-     */\n-    int writableBytes();\n-\n-    /**\n-     * Sets the specified byte at the current {@code writerIndex} and increases\n-     * the {@code writerIndex} by {@code 1} in this buffer. The 24 high-order\n-     * bits of the specified value are ignored.\n-     *\n-     * @throws IndexOutOfBoundsException if {@code this.writableBytes} is less\n-     *                                   than {@code 1}\n-     */\n-    void writeByte(int value);\n-\n-    /**\n-     * Transfers the specified source array's data to this buffer starting at\n-     * the current {@code writerIndex} and increases the {@code writerIndex} by\n-     * the number of the transferred bytes (= {@code src.length}).\n-     *\n-     * @throws IndexOutOfBoundsException if {@code src.length} is greater than\n-     *                                   {@code this.writableBytes}\n-     */\n-    void writeBytes(byte[] src);\n-\n-    /**\n-     * Transfers the specified source array's data to this buffer starting at\n-     * the current {@code writerIndex} and increases the {@code writerIndex} by\n-     * the number of the transferred bytes (= {@code length}).\n-     *\n-     * @param index  the first index of the source\n-     * @param length the number of bytes to transfer\n-     * @throws IndexOutOfBoundsException if the specified {@code srcIndex} is\n-     *                                   less than {@code 0}, if {@code srcIndex\n-     *                                   + length} is greater than {@code\n-     *                                   src.length}, or if {@code length} is\n-     *                                   greater than {@code this.writableBytes}\n-     */\n-    void writeBytes(byte[] src, int index, int length);\n-\n-    /**\n-     * Transfers the specified source buffer's data to this buffer starting at\n-     * the current {@code writerIndex} until the source buffer's position\n-     * reaches its limit, and increases the {@code writerIndex} by the number of\n-     * the transferred bytes.\n-     *\n-     * @throws IndexOutOfBoundsException if {@code src.remaining()} is greater\n-     *                                   than {@code this.writableBytes}\n-     */\n-    void writeBytes(ByteBuffer src);\n-\n-    /**\n-     * Transfers the specified source buffer's data to this buffer starting at\n-     * the current {@code writerIndex} until the source buffer becomes\n-     * unreadable, and increases the {@code writerIndex} by the number of the\n-     * transferred bytes.  This method is basically same with {@link\n-     * #writeBytes(ChannelBuffer, int, int)}, except that this method increases\n-     * the {@code readerIndex} of the source buffer by the number of the\n-     * transferred bytes while {@link #writeBytes(ChannelBuffer, int, int)} does\n-     * not.\n-     *\n-     * @throws IndexOutOfBoundsException if {@code src.readableBytes} is greater\n-     *                                   than {@code this.writableBytes}\n-     */\n-    void writeBytes(ChannelBuffer src);\n-\n-    /**\n-     * Transfers the specified source buffer's data to this buffer starting at\n-     * the current {@code writerIndex} and increases the {@code writerIndex} by\n-     * the number of the transferred bytes (= {@code length}).  This method is\n-     * basically same with {@link #writeBytes(ChannelBuffer, int, int)}, except\n-     * that this method increases the {@code readerIndex} of the source buffer\n-     * by the number of the transferred bytes (= {@code length}) while {@link\n-     * #writeBytes(ChannelBuffer, int, int)} does not.\n-     *\n-     * @param length the number of bytes to transfer\n-     * @throws IndexOutOfBoundsException if {@code length} is greater than\n-     *                                   {@code this.writableBytes} or if {@code\n-     *                                   length} is greater then {@code\n-     *                                   src.readableBytes}\n-     */\n-    void writeBytes(ChannelBuffer src, int length);\n-\n-    /**\n-     * Transfers the specified source buffer's data to this buffer starting at\n-     * the current {@code writerIndex} and increases the {@code writerIndex} by\n-     * the number of the transferred bytes (= {@code length}).\n-     *\n-     * @param srcIndex the first index of the source\n-     * @param length   the number of bytes to transfer\n-     * @throws IndexOutOfBoundsException if the specified {@code srcIndex} is\n-     *                                   less than {@code 0}, if {@code srcIndex\n-     *                                   + length} is greater than {@code\n-     *                                   src.capacity}, or if {@code length} is\n-     *                                   greater than {@code this.writableBytes}\n-     */\n-    void writeBytes(ChannelBuffer src, int srcIndex, int length);\n-\n-    /**\n-     * Transfers the content of the specified stream to this buffer starting at\n-     * the current {@code writerIndex} and increases the {@code writerIndex} by\n-     * the number of the transferred bytes.\n-     *\n-     * @param length the number of bytes to transfer\n-     * @return the actual number of bytes read in from the specified stream\n-     * @throws IndexOutOfBoundsException if {@code length} is greater than\n-     *                                   {@code this.writableBytes}\n-     * @throws IOException               if the specified stream threw an\n-     *                                   exception during I/O\n-     */\n-    int writeBytes(InputStream src, int length) throws IOException;\n-\n-    /**\n-     * Returns the {@code writerIndex} of this buffer.\n-     */\n-    int writerIndex();\n-\n-    /**\n-     * Sets the {@code writerIndex} of this buffer.\n-     *\n-     * @throws IndexOutOfBoundsException if the specified {@code writerIndex} is\n-     *                                   less than {@code this.readerIndex} or\n-     *                                   greater than {@code this.capacity}\n-     */\n-    void writerIndex(int writerIndex);\n-\n-    /**\n-     * Returns the backing byte array of this buffer.\n-     *\n-     * @throws UnsupportedOperationException if there no accessible backing byte\n-     *                                       array\n-     */\n-    byte[] array();\n-\n-    /**\n-     * Returns {@code true} if and only if this buffer has a backing byte array.\n-     * If this method returns true, you can safely call {@link #array()} and\n-     * {@link #arrayOffset()}.\n-     */\n-    boolean hasArray();\n-\n-    /**\n-     * Returns the offset of the first byte within the backing byte array of\n-     * this buffer.\n-     *\n-     * @throws UnsupportedOperationException if there no accessible backing byte\n-     *                                       array\n-     */\n-    int arrayOffset();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.remoting.buffer;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+import java.nio.ByteBuffer;\r\n+\r\n+/**\r\n+ * A random and sequential accessible sequence of zero or more bytes (octets).\r\n+ * This interface provides an abstract view for one or more primitive byte\r\n+ * arrays ({@code byte[]}) and {@linkplain ByteBuffer NIO buffers}.\r\n+ * <p/>\r\n+ * <h3>Creation of a buffer</h3>\r\n+ * <p/>\r\n+ * It is recommended to create a new buffer using the helper methods in {@link\r\n+ * ChannelBuffers} rather than calling an individual implementation's\r\n+ * constructor.\r\n+ * <p/>\r\n+ * <h3>Random Access Indexing</h3>\r\n+ * <p/>\r\n+ * Just like an ordinary primitive byte array, {@link ChannelBuffer} uses <a\r\n+ * href=\"http://en.wikipedia.org/wiki/Index_(information_technology)#Array_element_identifier\">zero-based\r\n+ * indexing</a>. It means the index of the first byte is always {@code 0} and\r\n+ * the index of the last byte is always {@link #capacity() capacity - 1}.  For\r\n+ * example, to iterate all bytes of a buffer, you can do the following,\r\n+ * regardless of its internal implementation:\r\n+ * <p/>\r\n+ * <pre>\r\n+ * {@link ChannelBuffer} buffer = ...;\r\n+ * for (int i = 0; i &lt; buffer.capacity(); i ++</strong>) {\r\n+ *     byte b = buffer.getByte(i);\r\n+ *     System.out.println((char) b);\r\n+ * }\r\n+ * </pre>\r\n+ * <p/>\r\n+ * <h3>Sequential Access Indexing</h3>\r\n+ * <p/>\r\n+ * {@link ChannelBuffer} provides two pointer variables to support sequential\r\n+ * read and write operations - {@link #readerIndex() readerIndex} for a read\r\n+ * operation and {@link #writerIndex() writerIndex} for a write operation\r\n+ * respectively.  The following diagram shows how a buffer is segmented into\r\n+ * three areas by the two pointers:\r\n+ * <p/>\r\n+ * <pre>\r\n+ *      +-------------------+------------------+------------------+\r\n+ *      | discardable bytes |  readable bytes  |  writable bytes  |\r\n+ *      |                   |     (CONTENT)    |                  |\r\n+ *      +-------------------+------------------+------------------+\r\n+ *      |                   |                  |                  |\r\n+ *      0      <=      readerIndex   <=   writerIndex    <=    capacity\r\n+ * </pre>\r\n+ * <p/>\r\n+ * <h4>Readable bytes (the actual content)</h4>\r\n+ * <p/>\r\n+ * This segment is where the actual data is stored.  Any operation whose name\r\n+ * starts with {@code read} or {@code skip} will get or skip the data at the\r\n+ * current {@link #readerIndex() readerIndex} and increase it by the number of\r\n+ * read bytes.  If the argument of the read operation is also a {@link\r\n+ * ChannelBuffer} and no destination index is specified, the specified buffer's\r\n+ * {@link #readerIndex() readerIndex} is increased together.\r\n+ * <p/>\r\n+ * If there's not enough content left, {@link IndexOutOfBoundsException} is\r\n+ * raised.  The default value of newly allocated, wrapped or copied buffer's\r\n+ * {@link #readerIndex() readerIndex} is {@code 0}.\r\n+ * <p/>\r\n+ * <pre>\r\n+ * // Iterates the readable bytes of a buffer.\r\n+ * {@link ChannelBuffer} buffer = ...;\r\n+ * while (buffer.readable()) {\r\n+ *     System.out.println(buffer.readByte());\r\n+ * }\r\n+ * </pre>\r\n+ * <p/>\r\n+ * <h4>Writable bytes</h4>\r\n+ * <p/>\r\n+ * This segment is a undefined space which needs to be filled.  Any operation\r\n+ * whose name ends with {@code write} will write the data at the current {@link\r\n+ * #writerIndex() writerIndex} and increase it by the number of written bytes.\r\n+ * If the argument of the write operation is also a {@link ChannelBuffer}, and\r\n+ * no source index is specified, the specified buffer's {@link #readerIndex()\r\n+ * readerIndex} is increased together.\r\n+ * <p/>\r\n+ * If there's not enough writable bytes left, {@link IndexOutOfBoundsException}\r\n+ * is raised.  The default value of newly allocated buffer's {@link\r\n+ * #writerIndex() writerIndex} is {@code 0}.  The default value of wrapped or\r\n+ * copied buffer's {@link #writerIndex() writerIndex} is the {@link #capacity()\r\n+ * capacity} of the buffer.\r\n+ * <p/>\r\n+ * <pre>\r\n+ * // Fills the writable bytes of a buffer with random integers.\r\n+ * {@link ChannelBuffer} buffer = ...;\r\n+ * while (buffer.writableBytes() >= 4) {\r\n+ *     buffer.writeInt(random.nextInt());\r\n+ * }\r\n+ * </pre>\r\n+ * <p/>\r\n+ * <h4>Discardable bytes</h4>\r\n+ * <p/>\r\n+ * This segment contains the bytes which were read already by a read operation.\r\n+ * Initially, the size of this segment is {@code 0}, but its size increases up\r\n+ * to the {@link #writerIndex() writerIndex} as read operations are executed.\r\n+ * The read bytes can be discarded by calling {@link #discardReadBytes()} to\r\n+ * reclaim unused area as depicted by the following diagram:\r\n+ * <p/>\r\n+ * <pre>\r\n+ *  BEFORE discardReadBytes()\r\n+ *\r\n+ *      +-------------------+------------------+------------------+\r\n+ *      | discardable bytes |  readable bytes  |  writable bytes  |\r\n+ *      +-------------------+------------------+------------------+\r\n+ *      |                   |                  |                  |\r\n+ *      0      <=      readerIndex   <=   writerIndex    <=    capacity\r\n+ *\r\n+ *\r\n+ *  AFTER discardReadBytes()\r\n+ *\r\n+ *      +------------------+--------------------------------------+\r\n+ *      |  readable bytes  |    writable bytes (got more space)   |\r\n+ *      +------------------+--------------------------------------+\r\n+ *      |                  |                                      |\r\n+ * readerIndex (0) <= writerIndex (decreased)        <=        capacity\r\n+ * </pre>\r\n+ * <p/>\r\n+ * Please note that there is no guarantee about the content of writable bytes\r\n+ * after calling {@link #discardReadBytes()}.  The writable bytes will not be\r\n+ * moved in most cases and could even be filled with completely different data\r\n+ * depending on the underlying buffer implementation.\r\n+ * <p/>\r\n+ * <h4>Clearing the buffer indexes</h4>\r\n+ * <p/>\r\n+ * You can set both {@link #readerIndex() readerIndex} and {@link #writerIndex()\r\n+ * writerIndex} to {@code 0} by calling {@link #clear()}. It does not clear the\r\n+ * buffer content (e.g. filling with {@code 0}) but just clears the two\r\n+ * pointers.  Please also note that the semantic of this operation is different\r\n+ * from {@link ByteBuffer#clear()}.\r\n+ * <p/>\r\n+ * <pre>\r\n+ *  BEFORE clear()\r\n+ *\r\n+ *      +-------------------+------------------+------------------+\r\n+ *      | discardable bytes |  readable bytes  |  writable bytes  |\r\n+ *      +-------------------+------------------+------------------+\r\n+ *      |                   |                  |                  |\r\n+ *      0      <=      readerIndex   <=   writerIndex    <=    capacity\r\n+ *\r\n+ *\r\n+ *  AFTER clear()\r\n+ *\r\n+ *      +---------------------------------------------------------+\r\n+ *      |             writable bytes (got more space)             |\r\n+ *      +---------------------------------------------------------+\r\n+ *      |                                                         |\r\n+ *      0 = readerIndex = writerIndex            <=            capacity\r\n+ * </pre>\r\n+ * <p/>\r\n+ * <h3>Mark and reset</h3>\r\n+ * <p/>\r\n+ * There are two marker indexes in every buffer. One is for storing {@link\r\n+ * #readerIndex() readerIndex} and the other is for storing {@link\r\n+ * #writerIndex() writerIndex}.  You can always reposition one of the two\r\n+ * indexes by calling a reset method.  It works in a similar fashion to the mark\r\n+ * and reset methods in {@link InputStream} except that there's no {@code\r\n+ * readlimit}.\r\n+ * <p/>\r\n+ * <h3>Conversion to existing JDK types</h3>\r\n+ * <p/>\r\n+ * <h4>Byte array</h4>\r\n+ * <p/>\r\n+ * If a {@link ChannelBuffer} is backed by a byte array (i.e. {@code byte[]}),\r\n+ * you can access it directly via the {@link #array()} method.  To determine if\r\n+ * a buffer is backed by a byte array, {@link #hasArray()} should be used.\r\n+ * <p/>\r\n+ * <h4>NIO Buffers</h4>\r\n+ * <p/>\r\n+ * Various {@link #toByteBuffer()}  methods convert a {@link ChannelBuffer} into\r\n+ * one or more NIO buffers.  These methods avoid buffer allocation and memory\r\n+ * copy whenever possible, but there's no guarantee that memory copy will not be\r\n+ * involved.\r\n+ * <p/>\r\n+ * <h4>I/O Streams</h4>\r\n+ * <p/>\r\n+ * Please refer to {@link ChannelBufferInputStream} and {@link\r\n+ * ChannelBufferOutputStream}.\r\n+ *\r\n+ *\r\n+ */\r\n+public interface ChannelBuffer extends Comparable<ChannelBuffer> {\r\n+\r\n+    /**\r\n+     * Returns the number of bytes (octets) this buffer can contain.\r\n+     */\r\n+    int capacity();\r\n+\r\n+    /**\r\n+     * Sets the {@code readerIndex} and {@code writerIndex} of this buffer to\r\n+     * {@code 0}. This method is identical to {@link #setIndex(int, int)\r\n+     * setIndex(0, 0)}.\r\n+     * <p/>\r\n+     * Please note that the behavior of this method is different from that of\r\n+     * NIO buffer, which sets the {@code limit} to the {@code capacity} of the\r\n+     * buffer.\r\n+     */\r\n+    void clear();\r\n+\r\n+    /**\r\n+     * Returns a copy of this buffer's readable bytes.  Modifying the content of\r\n+     * the returned buffer or this buffer does not affect each other at all.\r\n+     * This method is identical to {@code buf.copy(buf.readerIndex(),\r\n+     * buf.readableBytes())}. This method does not modify {@code readerIndex} or\r\n+     * {@code writerIndex} of this buffer.\r\n+     */\r\n+    ChannelBuffer copy();\r\n+\r\n+    /**\r\n+     * Returns a copy of this buffer's sub-region.  Modifying the content of the\r\n+     * returned buffer or this buffer does not affect each other at all. This\r\n+     * method does not modify {@code readerIndex} or {@code writerIndex} of this\r\n+     * buffer.\r\n+     */\r\n+    ChannelBuffer copy(int index, int length);\r\n+\r\n+    /**\r\n+     * Discards the bytes between the 0th index and {@code readerIndex}. It\r\n+     * moves the bytes between {@code readerIndex} and {@code writerIndex} to\r\n+     * the 0th index, and sets {@code readerIndex} and {@code writerIndex} to\r\n+     * {@code 0} and {@code oldWriterIndex - oldReaderIndex} respectively.\r\n+     * <p/>\r\n+     * Please refer to the class documentation for more detailed explanation.\r\n+     */\r\n+    void discardReadBytes();\r\n+\r\n+    /**\r\n+     * Makes sure the number of {@linkplain #writableBytes() the writable bytes}\r\n+     * is equal to or greater than the specified value.  If there is enough\r\n+     * writable bytes in this buffer, this method returns with no side effect.\r\n+     * Otherwise: <ul> <li>a non-dynamic buffer will throw an {@link\r\n+     * IndexOutOfBoundsException}.</li> <li>a dynamic buffer will expand its\r\n+     * capacity so that the number of the {@link #writableBytes() writable\r\n+     * bytes} becomes equal to or greater than the specified value. The\r\n+     * expansion involves the reallocation of the internal buffer and\r\n+     * consequently memory copy.</li> </ul>\r\n+     *\r\n+     * @param writableBytes the expected minimum number of writable bytes\r\n+     * @throws IndexOutOfBoundsException if {@linkplain #writableBytes() the\r\n+     *                                   writable bytes} of this buffer is less\r\n+     *                                   than the specified value and if this\r\n+     *                                   buffer is not a dynamic buffer\r\n+     */\r\n+    void ensureWritableBytes(int writableBytes);\r\n+\r\n+    /**\r\n+     * Determines if the content of the specified buffer is identical to the\r\n+     * content of this array.  'Identical' here means: <ul> <li>the size of the\r\n+     * contents of the two buffers are same and</li> <li>every single byte of\r\n+     * the content of the two buffers are same.</li> </ul> Please note that it\r\n+     * does not compare {@link #readerIndex()} nor {@link #writerIndex()}.  This\r\n+     * method also returns {@code false} for {@code null} and an object which is\r\n+     * not an instance of {@link ChannelBuffer} type.\r\n+     */\r\n+    @Override\r\n+    boolean equals(Object o);\r\n+\r\n+    /**\r\n+     * Returns the factory which creates a {@link ChannelBuffer} whose type and\r\n+     * default {@link java.nio.ByteOrder} are same with this buffer.\r\n+     */\r\n+    ChannelBufferFactory factory();\r\n+\r\n+    /**\r\n+     * Gets a byte at the specified absolute {@code index} in this buffer. This\r\n+     * method does not modify {@code readerIndex} or {@code writerIndex} of this\r\n+     * buffer.\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if the specified {@code index} is less\r\n+     *                                   than {@code 0} or {@code index + 1} is\r\n+     *                                   greater than {@code this.capacity}\r\n+     */\r\n+    byte getByte(int index);\r\n+\r\n+    /**\r\n+     * Transfers this buffer's data to the specified destination starting at the\r\n+     * specified absolute {@code index}. This method does not modify {@code\r\n+     * readerIndex} or {@code writerIndex} of this buffer\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if the specified {@code index} is less\r\n+     *                                   than {@code 0} or if {@code index +\r\n+     *                                   dst.length} is greater than {@code\r\n+     *                                   this.capacity}\r\n+     */\r\n+    void getBytes(int index, byte[] dst);\r\n+\r\n+    /**\r\n+     * Transfers this buffer's data to the specified destination starting at the\r\n+     * specified absolute {@code index}. This method does not modify {@code\r\n+     * readerIndex} or {@code writerIndex} of this buffer.\r\n+     *\r\n+     * @param dstIndex the first index of the destination\r\n+     * @param length   the number of bytes to transfer\r\n+     * @throws IndexOutOfBoundsException if the specified {@code index} is less\r\n+     *                                   than {@code 0}, if the specified {@code\r\n+     *                                   dstIndex} is less than {@code 0}, if\r\n+     *                                   {@code index + length} is greater than\r\n+     *                                   {@code this.capacity}, or if {@code\r\n+     *                                   dstIndex + length} is greater than\r\n+     *                                   {@code dst.length}\r\n+     */\r\n+    void getBytes(int index, byte[] dst, int dstIndex, int length);\r\n+\r\n+    /**\r\n+     * Transfers this buffer's data to the specified destination starting at the\r\n+     * specified absolute {@code index} until the destination's position reaches\r\n+     * its limit. This method does not modify {@code readerIndex} or {@code\r\n+     * writerIndex} of this buffer while the destination's {@code position} will\r\n+     * be increased.\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if the specified {@code index} is less\r\n+     *                                   than {@code 0} or if {@code index +\r\n+     *                                   dst.remaining()} is greater than {@code\r\n+     *                                   this.capacity}\r\n+     */\r\n+    void getBytes(int index, ByteBuffer dst);\r\n+\r\n+    /**\r\n+     * Transfers this buffer's data to the specified destination starting at the\r\n+     * specified absolute {@code index} until the destination becomes\r\n+     * non-writable.  This method is basically same with {@link #getBytes(int,\r\n+     * ChannelBuffer, int, int)}, except that this method increases the {@code\r\n+     * writerIndex} of the destination by the number of the transferred bytes\r\n+     * while {@link #getBytes(int, ChannelBuffer, int, int)} does not. This\r\n+     * method does not modify {@code readerIndex} or {@code writerIndex} of the\r\n+     * source buffer (i.e. {@code this}).\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if the specified {@code index} is less\r\n+     *                                   than {@code 0} or if {@code index +\r\n+     *                                   dst.writableBytes} is greater than\r\n+     *                                   {@code this.capacity}\r\n+     */\r\n+    void getBytes(int index, ChannelBuffer dst);\r\n+\r\n+    /**\r\n+     * Transfers this buffer's data to the specified destination starting at the\r\n+     * specified absolute {@code index}.  This method is basically same with\r\n+     * {@link #getBytes(int, ChannelBuffer, int, int)}, except that this method\r\n+     * increases the {@code writerIndex} of the destination by the number of the\r\n+     * transferred bytes while {@link #getBytes(int, ChannelBuffer, int, int)}\r\n+     * does not. This method does not modify {@code readerIndex} or {@code\r\n+     * writerIndex} of the source buffer (i.e. {@code this}).\r\n+     *\r\n+     * @param length the number of bytes to transfer\r\n+     * @throws IndexOutOfBoundsException if the specified {@code index} is less\r\n+     *                                   than {@code 0}, if {@code index +\r\n+     *                                   length} is greater than {@code\r\n+     *                                   this.capacity}, or if {@code length} is\r\n+     *                                   greater than {@code dst.writableBytes}\r\n+     */\r\n+    void getBytes(int index, ChannelBuffer dst, int length);\r\n+\r\n+    /**\r\n+     * Transfers this buffer's data to the specified destination starting at the\r\n+     * specified absolute {@code index}. This method does not modify {@code\r\n+     * readerIndex} or {@code writerIndex} of both the source (i.e. {@code\r\n+     * this}) and the destination.\r\n+     *\r\n+     * @param dstIndex the first index of the destination\r\n+     * @param length   the number of bytes to transfer\r\n+     * @throws IndexOutOfBoundsException if the specified {@code index} is less\r\n+     *                                   than {@code 0}, if the specified {@code\r\n+     *                                   dstIndex} is less than {@code 0}, if\r\n+     *                                   {@code index + length} is greater than\r\n+     *                                   {@code this.capacity}, or if {@code\r\n+     *                                   dstIndex + length} is greater than\r\n+     *                                   {@code dst.capacity}\r\n+     */\r\n+    void getBytes(int index, ChannelBuffer dst, int dstIndex, int length);\r\n+\r\n+    /**\r\n+     * Transfers this buffer's data to the specified stream starting at the\r\n+     * specified absolute {@code index}. This method does not modify {@code\r\n+     * readerIndex} or {@code writerIndex} of this buffer.\r\n+     *\r\n+     * @param length the number of bytes to transfer\r\n+     * @throws IndexOutOfBoundsException if the specified {@code index} is less\r\n+     *                                   than {@code 0} or if {@code index +\r\n+     *                                   length} is greater than {@code\r\n+     *                                   this.capacity}\r\n+     * @throws IOException               if the specified stream threw an\r\n+     *                                   exception during I/O\r\n+     */\r\n+    void getBytes(int index, OutputStream dst, int length) throws IOException;\r\n+\r\n+    /**\r\n+     * Returns {@code true} if and only if this buffer is backed by an NIO\r\n+     * direct buffer.\r\n+     */\r\n+    boolean isDirect();\r\n+\r\n+    /**\r\n+     * Marks the current {@code readerIndex} in this buffer.  You can reposition\r\n+     * the current {@code readerIndex} to the marked {@code readerIndex} by\r\n+     * calling {@link #resetReaderIndex()}. The initial value of the marked\r\n+     * {@code readerIndex} is {@code 0}.\r\n+     */\r\n+    void markReaderIndex();\r\n+\r\n+    /**\r\n+     * Marks the current {@code writerIndex} in this buffer.  You can reposition\r\n+     * the current {@code writerIndex} to the marked {@code writerIndex} by\r\n+     * calling {@link #resetWriterIndex()}. The initial value of the marked\r\n+     * {@code writerIndex} is {@code 0}.\r\n+     */\r\n+    void markWriterIndex();\r\n+\r\n+    /**\r\n+     * Returns {@code true} if and only if {@code (this.writerIndex -\r\n+     * this.readerIndex)} is greater than {@code 0}.\r\n+     */\r\n+    boolean readable();\r\n+\r\n+    /**\r\n+     * Returns the number of readable bytes which is equal to {@code\r\n+     * (this.writerIndex - this.readerIndex)}.\r\n+     */\r\n+    int readableBytes();\r\n+\r\n+    /**\r\n+     * Gets a byte at the current {@code readerIndex} and increases the {@code\r\n+     * readerIndex} by {@code 1} in this buffer.\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if {@code this.readableBytes} is less\r\n+     *                                   than {@code 1}\r\n+     */\r\n+    byte readByte();\r\n+\r\n+    /**\r\n+     * Transfers this buffer's data to the specified destination starting at the\r\n+     * current {@code readerIndex} and increases the {@code readerIndex} by the\r\n+     * number of the transferred bytes (= {@code dst.length}).\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if {@code dst.length} is greater than\r\n+     *                                   {@code this.readableBytes}\r\n+     */\r\n+    void readBytes(byte[] dst);\r\n+\r\n+    /**\r\n+     * Transfers this buffer's data to the specified destination starting at the\r\n+     * current {@code readerIndex} and increases the {@code readerIndex} by the\r\n+     * number of the transferred bytes (= {@code length}).\r\n+     *\r\n+     * @param dstIndex the first index of the destination\r\n+     * @param length   the number of bytes to transfer\r\n+     * @throws IndexOutOfBoundsException if the specified {@code dstIndex} is\r\n+     *                                   less than {@code 0}, if {@code length}\r\n+     *                                   is greater than {@code this.readableBytes},\r\n+     *                                   or if {@code dstIndex + length} is\r\n+     *                                   greater than {@code dst.length}\r\n+     */\r\n+    void readBytes(byte[] dst, int dstIndex, int length);\r\n+\r\n+    /**\r\n+     * Transfers this buffer's data to the specified destination starting at the\r\n+     * current {@code readerIndex} until the destination's position reaches its\r\n+     * limit, and increases the {@code readerIndex} by the number of the\r\n+     * transferred bytes.\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if {@code dst.remaining()} is greater\r\n+     *                                   than {@code this.readableBytes}\r\n+     */\r\n+    void readBytes(ByteBuffer dst);\r\n+\r\n+    /**\r\n+     * Transfers this buffer's data to the specified destination starting at the\r\n+     * current {@code readerIndex} until the destination becomes non-writable,\r\n+     * and increases the {@code readerIndex} by the number of the transferred\r\n+     * bytes.  This method is basically same with {@link\r\n+     * #readBytes(ChannelBuffer, int, int)}, except that this method increases\r\n+     * the {@code writerIndex} of the destination by the number of the\r\n+     * transferred bytes while {@link #readBytes(ChannelBuffer, int, int)} does\r\n+     * not.\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if {@code dst.writableBytes} is greater\r\n+     *                                   than {@code this.readableBytes}\r\n+     */\r\n+    void readBytes(ChannelBuffer dst);\r\n+\r\n+    /**\r\n+     * Transfers this buffer's data to the specified destination starting at the\r\n+     * current {@code readerIndex} and increases the {@code readerIndex} by the\r\n+     * number of the transferred bytes (= {@code length}).  This method is\r\n+     * basically same with {@link #readBytes(ChannelBuffer, int, int)}, except\r\n+     * that this method increases the {@code writerIndex} of the destination by\r\n+     * the number of the transferred bytes (= {@code length}) while {@link\r\n+     * #readBytes(ChannelBuffer, int, int)} does not.\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if {@code length} is greater than\r\n+     *                                   {@code this.readableBytes} or if {@code\r\n+     *                                   length} is greater than {@code\r\n+     *                                   dst.writableBytes}\r\n+     */\r\n+    void readBytes(ChannelBuffer dst, int length);\r\n+\r\n+    /**\r\n+     * Transfers this buffer's data to the specified destination starting at the\r\n+     * current {@code readerIndex} and increases the {@code readerIndex} by the\r\n+     * number of the transferred bytes (= {@code length}).\r\n+     *\r\n+     * @param dstIndex the first index of the destination\r\n+     * @param length   the number of bytes to transfer\r\n+     * @throws IndexOutOfBoundsException if the specified {@code dstIndex} is\r\n+     *                                   less than {@code 0}, if {@code length}\r\n+     *                                   is greater than {@code this.readableBytes},\r\n+     *                                   or if {@code dstIndex + length} is\r\n+     *                                   greater than {@code dst.capacity}\r\n+     */\r\n+    void readBytes(ChannelBuffer dst, int dstIndex, int length);\r\n+\r\n+    /**\r\n+     * Transfers this buffer's data to a newly created buffer starting at the\r\n+     * current {@code readerIndex} and increases the {@code readerIndex} by the\r\n+     * number of the transferred bytes (= {@code length}). The returned buffer's\r\n+     * {@code readerIndex} and {@code writerIndex} are {@code 0} and {@code\r\n+     * length} respectively.\r\n+     *\r\n+     * @param length the number of bytes to transfer\r\n+     * @return the newly created buffer which contains the transferred bytes\r\n+     * @throws IndexOutOfBoundsException if {@code length} is greater than\r\n+     *                                   {@code this.readableBytes}\r\n+     */\r\n+    ChannelBuffer readBytes(int length);\r\n+\r\n+    /**\r\n+     * Repositions the current {@code readerIndex} to the marked {@code\r\n+     * readerIndex} in this buffer.\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if the current {@code writerIndex} is\r\n+     *                                   less than the marked {@code\r\n+     *                                   readerIndex}\r\n+     */\r\n+    void resetReaderIndex();\r\n+\r\n+    /**\r\n+     * Marks the current {@code writerIndex} in this buffer.  You can reposition\r\n+     * the current {@code writerIndex} to the marked {@code writerIndex} by\r\n+     * calling {@link #resetWriterIndex()}. The initial value of the marked\r\n+     * {@code writerIndex} is {@code 0}.\r\n+     */\r\n+    void resetWriterIndex();\r\n+\r\n+    /**\r\n+     * Returns the {@code readerIndex} of this buffer.\r\n+     */\r\n+    int readerIndex();\r\n+\r\n+    /**\r\n+     * Sets the {@code readerIndex} of this buffer.\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if the specified {@code readerIndex} is\r\n+     *                                   less than {@code 0} or greater than\r\n+     *                                   {@code this.writerIndex}\r\n+     */\r\n+    void readerIndex(int readerIndex);\r\n+\r\n+    /**\r\n+     * Transfers this buffer's data to the specified stream starting at the\r\n+     * current {@code readerIndex}.\r\n+     *\r\n+     * @param length the number of bytes to transfer\r\n+     * @throws IndexOutOfBoundsException if {@code length} is greater than\r\n+     *                                   {@code this.readableBytes}\r\n+     * @throws IOException               if the specified stream threw an\r\n+     *                                   exception during I/O\r\n+     */\r\n+    void readBytes(OutputStream dst, int length) throws IOException;\r\n+\r\n+    /**\r\n+     * Sets the specified byte at the specified absolute {@code index} in this\r\n+     * buffer.  The 24 high-order bits of the specified value are ignored. This\r\n+     * method does not modify {@code readerIndex} or {@code writerIndex} of this\r\n+     * buffer.\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if the specified {@code index} is less\r\n+     *                                   than {@code 0} or {@code index + 1} is\r\n+     *                                   greater than {@code this.capacity}\r\n+     */\r\n+    void setByte(int index, int value);\r\n+\r\n+    /**\r\n+     * Transfers the specified source array's data to this buffer starting at\r\n+     * the specified absolute {@code index}. This method does not modify {@code\r\n+     * readerIndex} or {@code writerIndex} of this buffer.\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if the specified {@code index} is less\r\n+     *                                   than {@code 0} or if {@code index +\r\n+     *                                   src.length} is greater than {@code\r\n+     *                                   this.capacity}\r\n+     */\r\n+    void setBytes(int index, byte[] src);\r\n+\r\n+    /**\r\n+     * Transfers the specified source array's data to this buffer starting at\r\n+     * the specified absolute {@code index}. This method does not modify {@code\r\n+     * readerIndex} or {@code writerIndex} of this buffer.\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if the specified {@code index} is less\r\n+     *                                   than {@code 0}, if the specified {@code\r\n+     *                                   srcIndex} is less than {@code 0}, if\r\n+     *                                   {@code index + length} is greater than\r\n+     *                                   {@code this.capacity}, or if {@code\r\n+     *                                   srcIndex + length} is greater than\r\n+     *                                   {@code src.length}\r\n+     */\r\n+    void setBytes(int index, byte[] src, int srcIndex, int length);\r\n+\r\n+    /**\r\n+     * Transfers the specified source buffer's data to this buffer starting at\r\n+     * the specified absolute {@code index} until the source buffer's position\r\n+     * reaches its limit. This method does not modify {@code readerIndex} or\r\n+     * {@code writerIndex} of this buffer.\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if the specified {@code index} is less\r\n+     *                                   than {@code 0} or if {@code index +\r\n+     *                                   src.remaining()} is greater than {@code\r\n+     *                                   this.capacity}\r\n+     */\r\n+    void setBytes(int index, ByteBuffer src);\r\n+\r\n+    /**\r\n+     * Transfers the specified source buffer's data to this buffer starting at\r\n+     * the specified absolute {@code index} until the source buffer becomes\r\n+     * unreadable.  This method is basically same with {@link #setBytes(int,\r\n+     * ChannelBuffer, int, int)}, except that this method increases the {@code\r\n+     * readerIndex} of the source buffer by the number of the transferred bytes\r\n+     * while {@link #setBytes(int, ChannelBuffer, int, int)} does not. This\r\n+     * method does not modify {@code readerIndex} or {@code writerIndex} of the\r\n+     * source buffer (i.e. {@code this}).\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if the specified {@code index} is less\r\n+     *                                   than {@code 0} or if {@code index +\r\n+     *                                   src.readableBytes} is greater than\r\n+     *                                   {@code this.capacity}\r\n+     */\r\n+    void setBytes(int index, ChannelBuffer src);\r\n+\r\n+    /**\r\n+     * Transfers the specified source buffer's data to this buffer starting at\r\n+     * the specified absolute {@code index}.  This method is basically same with\r\n+     * {@link #setBytes(int, ChannelBuffer, int, int)}, except that this method\r\n+     * increases the {@code readerIndex} of the source buffer by the number of\r\n+     * the transferred bytes while {@link #setBytes(int, ChannelBuffer, int,\r\n+     * int)} does not. This method does not modify {@code readerIndex} or {@code\r\n+     * writerIndex} of the source buffer (i.e. {@code this}).\r\n+     *\r\n+     * @param length the number of bytes to transfer\r\n+     * @throws IndexOutOfBoundsException if the specified {@code index} is less\r\n+     *                                   than {@code 0}, if {@code index +\r\n+     *                                   length} is greater than {@code\r\n+     *                                   this.capacity}, or if {@code length} is\r\n+     *                                   greater than {@code src.readableBytes}\r\n+     */\r\n+    void setBytes(int index, ChannelBuffer src, int length);\r\n+\r\n+    /**\r\n+     * Transfers the specified source buffer's data to this buffer starting at\r\n+     * the specified absolute {@code index}. This method does not modify {@code\r\n+     * readerIndex} or {@code writerIndex} of both the source (i.e. {@code\r\n+     * this}) and the destination.\r\n+     *\r\n+     * @param srcIndex the first index of the source\r\n+     * @param length   the number of bytes to transfer\r\n+     * @throws IndexOutOfBoundsException if the specified {@code index} is less\r\n+     *                                   than {@code 0}, if the specified {@code\r\n+     *                                   srcIndex} is less than {@code 0}, if\r\n+     *                                   {@code index + length} is greater than\r\n+     *                                   {@code this.capacity}, or if {@code\r\n+     *                                   srcIndex + length} is greater than\r\n+     *                                   {@code src.capacity}\r\n+     */\r\n+    void setBytes(int index, ChannelBuffer src, int srcIndex, int length);\r\n+\r\n+    /**\r\n+     * Transfers the content of the specified source stream to this buffer\r\n+     * starting at the specified absolute {@code index}. This method does not\r\n+     * modify {@code readerIndex} or {@code writerIndex} of this buffer.\r\n+     *\r\n+     * @param length the number of bytes to transfer\r\n+     * @return the actual number of bytes read in from the specified channel.\r\n+     * {@code -1} if the specified channel is closed.\r\n+     * @throws IndexOutOfBoundsException if the specified {@code index} is less\r\n+     *                                   than {@code 0} or if {@code index +\r\n+     *                                   length} is greater than {@code\r\n+     *                                   this.capacity}\r\n+     * @throws IOException               if the specified stream threw an\r\n+     *                                   exception during I/O\r\n+     */\r\n+    int setBytes(int index, InputStream src, int length) throws IOException;\r\n+\r\n+    /**\r\n+     * Sets the {@code readerIndex} and {@code writerIndex} of this buffer in\r\n+     * one shot.  This method is useful when you have to worry about the\r\n+     * invocation order of {@link #readerIndex(int)} and {@link\r\n+     * #writerIndex(int)} methods.  For example, the following code will fail:\r\n+     * <p/>\r\n+     * <pre>\r\n+     * // Create a buffer whose readerIndex, writerIndex and capacity are\r\n+     * // 0, 0 and 8 respectively.\r\n+     * {@link ChannelBuffer} buf = {@link ChannelBuffers}.buffer(8);\r\n+     *\r\n+     * // IndexOutOfBoundsException is thrown because the specified\r\n+     * // readerIndex (2) cannot be greater than the current writerIndex (0).\r\n+     * buf.readerIndex(2);\r\n+     * buf.writerIndex(4);\r\n+     * </pre>\r\n+     * <p/>\r\n+     * The following code will also fail:\r\n+     * <p/>\r\n+     * <pre>\r\n+     * // Create a buffer whose readerIndex, writerIndex and capacity are\r\n+     * // 0, 8 and 8 respectively.\r\n+     * {@link ChannelBuffer} buf = {@link ChannelBuffers}.wrappedBuffer(new\r\n+     * byte[8]);\r\n+     *\r\n+     * // readerIndex becomes 8.\r\n+     * buf.readLong();\r\n+     *\r\n+     * // IndexOutOfBoundsException is thrown because the specified\r\n+     * // writerIndex (4) cannot be less than the current readerIndex (8).\r\n+     * buf.writerIndex(4);\r\n+     * buf.readerIndex(2);\r\n+     * </pre>\r\n+     * <p/>\r\n+     * By contrast, {@link #setIndex(int, int)} guarantees that it never throws\r\n+     * an {@link IndexOutOfBoundsException} as long as the specified indexes\r\n+     * meet basic constraints, regardless what the current index values of the\r\n+     * buffer are:\r\n+     * <p/>\r\n+     * <pre>\r\n+     * // No matter what the current state of the buffer is, the following\r\n+     * // call always succeeds as long as the capacity of the buffer is not\r\n+     * // less than 4.\r\n+     * buf.setIndex(2, 4);\r\n+     * </pre>\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if the specified {@code readerIndex} is\r\n+     *                                   less than 0, if the specified {@code\r\n+     *                                   writerIndex} is less than the specified\r\n+     *                                   {@code readerIndex} or if the specified\r\n+     *                                   {@code writerIndex} is greater than\r\n+     *                                   {@code this.capacity}\r\n+     */\r\n+    void setIndex(int readerIndex, int writerIndex);\r\n+\r\n+    /**\r\n+     * Increases the current {@code readerIndex} by the specified {@code length}\r\n+     * in this buffer.\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if {@code length} is greater than\r\n+     *                                   {@code this.readableBytes}\r\n+     */\r\n+    void skipBytes(int length);\r\n+\r\n+    /**\r\n+     * Converts this buffer's readable bytes into a NIO buffer.  The returned\r\n+     * buffer might or might not share the content with this buffer, while they\r\n+     * have separate indexes and marks.  This method is identical to {@code\r\n+     * buf.toByteBuffer(buf.readerIndex(), buf.readableBytes())}. This method\r\n+     * does not modify {@code readerIndex} or {@code writerIndex} of this\r\n+     * buffer.\r\n+     */\r\n+    ByteBuffer toByteBuffer();\r\n+\r\n+    /**\r\n+     * Converts this buffer's sub-region into a NIO buffer.  The returned buffer\r\n+     * might or might not share the content with this buffer, while they have\r\n+     * separate indexes and marks. This method does not modify {@code\r\n+     * readerIndex} or {@code writerIndex} of this buffer.\r\n+     */\r\n+    ByteBuffer toByteBuffer(int index, int length);\r\n+\r\n+    /**\r\n+     * Returns {@code true} if and only if {@code (this.capacity -\r\n+     * this.writerIndex)} is greater than {@code 0}.\r\n+     */\r\n+    boolean writable();\r\n+\r\n+    /**\r\n+     * Returns the number of writable bytes which is equal to {@code\r\n+     * (this.capacity - this.writerIndex)}.\r\n+     */\r\n+    int writableBytes();\r\n+\r\n+    /**\r\n+     * Sets the specified byte at the current {@code writerIndex} and increases\r\n+     * the {@code writerIndex} by {@code 1} in this buffer. The 24 high-order\r\n+     * bits of the specified value are ignored.\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if {@code this.writableBytes} is less\r\n+     *                                   than {@code 1}\r\n+     */\r\n+    void writeByte(int value);\r\n+\r\n+    /**\r\n+     * Transfers the specified source array's data to this buffer starting at\r\n+     * the current {@code writerIndex} and increases the {@code writerIndex} by\r\n+     * the number of the transferred bytes (= {@code src.length}).\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if {@code src.length} is greater than\r\n+     *                                   {@code this.writableBytes}\r\n+     */\r\n+    void writeBytes(byte[] src);\r\n+\r\n+    /**\r\n+     * Transfers the specified source array's data to this buffer starting at\r\n+     * the current {@code writerIndex} and increases the {@code writerIndex} by\r\n+     * the number of the transferred bytes (= {@code length}).\r\n+     *\r\n+     * @param index  the first index of the source\r\n+     * @param length the number of bytes to transfer\r\n+     * @throws IndexOutOfBoundsException if the specified {@code srcIndex} is\r\n+     *                                   less than {@code 0}, if {@code srcIndex\r\n+     *                                   + length} is greater than {@code\r\n+     *                                   src.length}, or if {@code length} is\r\n+     *                                   greater than {@code this.writableBytes}\r\n+     */\r\n+    void writeBytes(byte[] src, int index, int length);\r\n+\r\n+    /**\r\n+     * Transfers the specified source buffer's data to this buffer starting at\r\n+     * the current {@code writerIndex} until the source buffer's position\r\n+     * reaches its limit, and increases the {@code writerIndex} by the number of\r\n+     * the transferred bytes.\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if {@code src.remaining()} is greater\r\n+     *                                   than {@code this.writableBytes}\r\n+     */\r\n+    void writeBytes(ByteBuffer src);\r\n+\r\n+    /**\r\n+     * Transfers the specified source buffer's data to this buffer starting at\r\n+     * the current {@code writerIndex} until the source buffer becomes\r\n+     * unreadable, and increases the {@code writerIndex} by the number of the\r\n+     * transferred bytes.  This method is basically same with {@link\r\n+     * #writeBytes(ChannelBuffer, int, int)}, except that this method increases\r\n+     * the {@code readerIndex} of the source buffer by the number of the\r\n+     * transferred bytes while {@link #writeBytes(ChannelBuffer, int, int)} does\r\n+     * not.\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if {@code src.readableBytes} is greater\r\n+     *                                   than {@code this.writableBytes}\r\n+     */\r\n+    void writeBytes(ChannelBuffer src);\r\n+\r\n+    /**\r\n+     * Transfers the specified source buffer's data to this buffer starting at\r\n+     * the current {@code writerIndex} and increases the {@code writerIndex} by\r\n+     * the number of the transferred bytes (= {@code length}).  This method is\r\n+     * basically same with {@link #writeBytes(ChannelBuffer, int, int)}, except\r\n+     * that this method increases the {@code readerIndex} of the source buffer\r\n+     * by the number of the transferred bytes (= {@code length}) while {@link\r\n+     * #writeBytes(ChannelBuffer, int, int)} does not.\r\n+     *\r\n+     * @param length the number of bytes to transfer\r\n+     * @throws IndexOutOfBoundsException if {@code length} is greater than\r\n+     *                                   {@code this.writableBytes} or if {@code\r\n+     *                                   length} is greater then {@code\r\n+     *                                   src.readableBytes}\r\n+     */\r\n+    void writeBytes(ChannelBuffer src, int length);\r\n+\r\n+    /**\r\n+     * Transfers the specified source buffer's data to this buffer starting at\r\n+     * the current {@code writerIndex} and increases the {@code writerIndex} by\r\n+     * the number of the transferred bytes (= {@code length}).\r\n+     *\r\n+     * @param srcIndex the first index of the source\r\n+     * @param length   the number of bytes to transfer\r\n+     * @throws IndexOutOfBoundsException if the specified {@code srcIndex} is\r\n+     *                                   less than {@code 0}, if {@code srcIndex\r\n+     *                                   + length} is greater than {@code\r\n+     *                                   src.capacity}, or if {@code length} is\r\n+     *                                   greater than {@code this.writableBytes}\r\n+     */\r\n+    void writeBytes(ChannelBuffer src, int srcIndex, int length);\r\n+\r\n+    /**\r\n+     * Transfers the content of the specified stream to this buffer starting at\r\n+     * the current {@code writerIndex} and increases the {@code writerIndex} by\r\n+     * the number of the transferred bytes.\r\n+     *\r\n+     * @param length the number of bytes to transfer\r\n+     * @return the actual number of bytes read in from the specified stream\r\n+     * @throws IndexOutOfBoundsException if {@code length} is greater than\r\n+     *                                   {@code this.writableBytes}\r\n+     * @throws IOException               if the specified stream threw an\r\n+     *                                   exception during I/O\r\n+     */\r\n+    int writeBytes(InputStream src, int length) throws IOException;\r\n+\r\n+    /**\r\n+     * Returns the {@code writerIndex} of this buffer.\r\n+     */\r\n+    int writerIndex();\r\n+\r\n+    /**\r\n+     * Sets the {@code writerIndex} of this buffer.\r\n+     *\r\n+     * @throws IndexOutOfBoundsException if the specified {@code writerIndex} is\r\n+     *                                   less than {@code this.readerIndex} or\r\n+     *                                   greater than {@code this.capacity}\r\n+     */\r\n+    void writerIndex(int writerIndex);\r\n+\r\n+    /**\r\n+     * Returns the backing byte array of this buffer.\r\n+     *\r\n+     * @throws UnsupportedOperationException if there no accessible backing byte\r\n+     *                                       array\r\n+     */\r\n+    byte[] array();\r\n+\r\n+    /**\r\n+     * Returns {@code true} if and only if this buffer has a backing byte array.\r\n+     * If this method returns true, you can safely call {@link #array()} and\r\n+     * {@link #arrayOffset()}.\r\n+     */\r\n+    boolean hasArray();\r\n+\r\n+    /**\r\n+     * Returns the offset of the first byte within the backing byte array of\r\n+     * this buffer.\r\n+     *\r\n+     * @throws UnsupportedOperationException if there no accessible backing byte\r\n+     *                                       array\r\n+     */\r\n+    int arrayOffset();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/buffer/ChannelBuffers.java", "source2": "org/apache/dubbo/remoting/buffer/ChannelBuffers.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,156 +1,156 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.remoting.buffer;\n-\n-import java.nio.ByteBuffer;\n-\n-public final class ChannelBuffers {\n-\n-    public static final ChannelBuffer EMPTY_BUFFER = new HeapChannelBuffer(0);\n-\n-    private ChannelBuffers() {\n-    }\n-\n-    public static ChannelBuffer dynamicBuffer() {\n-        return dynamicBuffer(256);\n-    }\n-\n-    public static ChannelBuffer dynamicBuffer(int capacity) {\n-        return new DynamicChannelBuffer(capacity);\n-    }\n-\n-    public static ChannelBuffer dynamicBuffer(int capacity,\n-                                              ChannelBufferFactory factory) {\n-        return new DynamicChannelBuffer(capacity, factory);\n-    }\n-\n-    public static ChannelBuffer buffer(int capacity) {\n-        if (capacity < 0) {\n-            throw new IllegalArgumentException(\"capacity can not be negative\");\n-        }\n-        if (capacity == 0) {\n-            return EMPTY_BUFFER;\n-        }\n-        return new HeapChannelBuffer(capacity);\n-    }\n-\n-    public static ChannelBuffer wrappedBuffer(byte[] array, int offset, int length) {\n-        if (array == null) {\n-            throw new NullPointerException(\"array == null\");\n-        }\n-        byte[] dest = new byte[length];\n-        System.arraycopy(array, offset, dest, 0, length);\n-        return wrappedBuffer(dest);\n-    }\n-\n-    public static ChannelBuffer wrappedBuffer(byte[] array) {\n-        if (array == null) {\n-            throw new NullPointerException(\"array == null\");\n-        }\n-        if (array.length == 0) {\n-            return EMPTY_BUFFER;\n-        }\n-        return new HeapChannelBuffer(array);\n-    }\n-\n-    public static ChannelBuffer wrappedBuffer(ByteBuffer buffer) {\n-        if (!buffer.hasRemaining()) {\n-            return EMPTY_BUFFER;\n-        }\n-        if (buffer.hasArray()) {\n-            return wrappedBuffer(buffer.array(), buffer.arrayOffset() + buffer.position(), buffer.remaining());\n-        } else {\n-            return new ByteBufferBackedChannelBuffer(buffer);\n-        }\n-    }\n-\n-    public static ChannelBuffer directBuffer(int capacity) {\n-        if (capacity == 0) {\n-            return EMPTY_BUFFER;\n-        }\n-\n-        ChannelBuffer buffer = new ByteBufferBackedChannelBuffer(\n-                ByteBuffer.allocateDirect(capacity));\n-        buffer.clear();\n-        return buffer;\n-    }\n-\n-    public static boolean equals(ChannelBuffer bufferA, ChannelBuffer bufferB) {\n-        final int aLen = bufferA.readableBytes();\n-        if (aLen != bufferB.readableBytes()) {\n-            return false;\n-        }\n-\n-        final int byteCount = aLen & 7;\n-\n-        int aIndex = bufferA.readerIndex();\n-        int bIndex = bufferB.readerIndex();\n-\n-        for (int i = byteCount; i > 0; i--) {\n-            if (bufferA.getByte(aIndex) != bufferB.getByte(bIndex)) {\n-                return false;\n-            }\n-            aIndex++;\n-            bIndex++;\n-        }\n-\n-        return true;\n-    }\n-\n-    public static int hasCode(ChannelBuffer buffer){\n-        final int aLen = buffer.readableBytes();\n-        final int byteCount = aLen & 7;\n-\n-        int hashCode = 1;\n-        int arrayIndex = buffer.readerIndex();\n-\n-        for (int i = byteCount; i > 0; i--) {\n-            hashCode = 31 * hashCode + buffer.getByte(arrayIndex++);\n-        }\n-\n-        if (hashCode == 0) {\n-            hashCode = 1;\n-        }\n-\n-        return hashCode;\n-    }\n-\n-    public static int compare(ChannelBuffer bufferA, ChannelBuffer bufferB) {\n-        final int aLen = bufferA.readableBytes();\n-        final int bLen = bufferB.readableBytes();\n-        final int minLength = Math.min(aLen, bLen);\n-\n-        int aIndex = bufferA.readerIndex();\n-        int bIndex = bufferB.readerIndex();\n-\n-        for (int i = minLength; i > 0; i--) {\n-            byte va = bufferA.getByte(aIndex);\n-            byte vb = bufferB.getByte(bIndex);\n-            if (va > vb) {\n-                return 1;\n-            } else if (va < vb) {\n-                return -1;\n-            }\n-            aIndex++;\n-            bIndex++;\n-        }\n-\n-        return aLen - bLen;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.remoting.buffer;\r\n+\r\n+import java.nio.ByteBuffer;\r\n+\r\n+public final class ChannelBuffers {\r\n+\r\n+    public static final ChannelBuffer EMPTY_BUFFER = new HeapChannelBuffer(0);\r\n+\r\n+    private ChannelBuffers() {\r\n+    }\r\n+\r\n+    public static ChannelBuffer dynamicBuffer() {\r\n+        return dynamicBuffer(256);\r\n+    }\r\n+\r\n+    public static ChannelBuffer dynamicBuffer(int capacity) {\r\n+        return new DynamicChannelBuffer(capacity);\r\n+    }\r\n+\r\n+    public static ChannelBuffer dynamicBuffer(int capacity,\r\n+                                              ChannelBufferFactory factory) {\r\n+        return new DynamicChannelBuffer(capacity, factory);\r\n+    }\r\n+\r\n+    public static ChannelBuffer buffer(int capacity) {\r\n+        if (capacity < 0) {\r\n+            throw new IllegalArgumentException(\"capacity can not be negative\");\r\n+        }\r\n+        if (capacity == 0) {\r\n+            return EMPTY_BUFFER;\r\n+        }\r\n+        return new HeapChannelBuffer(capacity);\r\n+    }\r\n+\r\n+    public static ChannelBuffer wrappedBuffer(byte[] array, int offset, int length) {\r\n+        if (array == null) {\r\n+            throw new NullPointerException(\"array == null\");\r\n+        }\r\n+        byte[] dest = new byte[length];\r\n+        System.arraycopy(array, offset, dest, 0, length);\r\n+        return wrappedBuffer(dest);\r\n+    }\r\n+\r\n+    public static ChannelBuffer wrappedBuffer(byte[] array) {\r\n+        if (array == null) {\r\n+            throw new NullPointerException(\"array == null\");\r\n+        }\r\n+        if (array.length == 0) {\r\n+            return EMPTY_BUFFER;\r\n+        }\r\n+        return new HeapChannelBuffer(array);\r\n+    }\r\n+\r\n+    public static ChannelBuffer wrappedBuffer(ByteBuffer buffer) {\r\n+        if (!buffer.hasRemaining()) {\r\n+            return EMPTY_BUFFER;\r\n+        }\r\n+        if (buffer.hasArray()) {\r\n+            return wrappedBuffer(buffer.array(), buffer.arrayOffset() + buffer.position(), buffer.remaining());\r\n+        } else {\r\n+            return new ByteBufferBackedChannelBuffer(buffer);\r\n+        }\r\n+    }\r\n+\r\n+    public static ChannelBuffer directBuffer(int capacity) {\r\n+        if (capacity == 0) {\r\n+            return EMPTY_BUFFER;\r\n+        }\r\n+\r\n+        ChannelBuffer buffer = new ByteBufferBackedChannelBuffer(\r\n+                ByteBuffer.allocateDirect(capacity));\r\n+        buffer.clear();\r\n+        return buffer;\r\n+    }\r\n+\r\n+    public static boolean equals(ChannelBuffer bufferA, ChannelBuffer bufferB) {\r\n+        final int aLen = bufferA.readableBytes();\r\n+        if (aLen != bufferB.readableBytes()) {\r\n+            return false;\r\n+        }\r\n+\r\n+        final int byteCount = aLen & 7;\r\n+\r\n+        int aIndex = bufferA.readerIndex();\r\n+        int bIndex = bufferB.readerIndex();\r\n+\r\n+        for (int i = byteCount; i > 0; i--) {\r\n+            if (bufferA.getByte(aIndex) != bufferB.getByte(bIndex)) {\r\n+                return false;\r\n+            }\r\n+            aIndex++;\r\n+            bIndex++;\r\n+        }\r\n+\r\n+        return true;\r\n+    }\r\n+\r\n+    public static int hasCode(ChannelBuffer buffer){\r\n+        final int aLen = buffer.readableBytes();\r\n+        final int byteCount = aLen & 7;\r\n+\r\n+        int hashCode = 1;\r\n+        int arrayIndex = buffer.readerIndex();\r\n+\r\n+        for (int i = byteCount; i > 0; i--) {\r\n+            hashCode = 31 * hashCode + buffer.getByte(arrayIndex++);\r\n+        }\r\n+\r\n+        if (hashCode == 0) {\r\n+            hashCode = 1;\r\n+        }\r\n+\r\n+        return hashCode;\r\n+    }\r\n+\r\n+    public static int compare(ChannelBuffer bufferA, ChannelBuffer bufferB) {\r\n+        final int aLen = bufferA.readableBytes();\r\n+        final int bLen = bufferB.readableBytes();\r\n+        final int minLength = Math.min(aLen, bLen);\r\n+\r\n+        int aIndex = bufferA.readerIndex();\r\n+        int bIndex = bufferB.readerIndex();\r\n+\r\n+        for (int i = minLength; i > 0; i--) {\r\n+            byte va = bufferA.getByte(aIndex);\r\n+            byte vb = bufferB.getByte(bIndex);\r\n+            if (va > vb) {\r\n+                return 1;\r\n+            } else if (va < vb) {\r\n+                return -1;\r\n+            }\r\n+            aIndex++;\r\n+            bIndex++;\r\n+        }\r\n+\r\n+        return aLen - bLen;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/exchange/Request.java", "source2": "org/apache/dubbo/remoting/exchange/Request.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,145 +1,145 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.exchange;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import java.util.concurrent.atomic.AtomicLong;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\n-\n-/**\n- * Request.\n- */\n-public class Request {\n-\n-    private static final AtomicLong INVOKE_ID = new AtomicLong(0);\n-\n-    private final long mId;\n-\n-    private String mVersion;\n-\n-    private boolean mTwoWay = true;\n-\n-    private boolean mEvent = false;\n-\n-    private boolean mBroken = false;\n-\n-    private Object mData;\n-\n-    public Request() {\n-        mId = newId();\n-    }\n-\n-    public Request(long id) {\n-        mId = id;\n-    }\n-\n-    private static long newId() {\n-        // getAndIncrement() When it grows to MAX_VALUE, it will grow to MIN_VALUE, and the negative can be used as ID\n-        return INVOKE_ID.getAndIncrement();\n-    }\n-\n-    private static String safeToString(Object data) {\n-        if (data == null) {\n-            return null;\n-        }\n-        String dataStr;\n-        try {\n-            dataStr = data.toString();\n-        } catch (Throwable e) {\n-            dataStr = \"<Fail toString of \" + data.getClass() + \", cause: \" +\n-                    StringUtils.toString(e) + \">\";\n-        }\n-        return dataStr;\n-    }\n-\n-    public long getId() {\n-        return mId;\n-    }\n-\n-    public String getVersion() {\n-        return mVersion;\n-    }\n-\n-    public void setVersion(String version) {\n-        mVersion = version;\n-    }\n-\n-    public boolean isTwoWay() {\n-        return mTwoWay;\n-    }\n-\n-    public void setTwoWay(boolean twoWay) {\n-        mTwoWay = twoWay;\n-    }\n-\n-    public boolean isEvent() {\n-        return mEvent;\n-    }\n-\n-    public void setEvent(String event) {\n-        this.mEvent = true;\n-        this.mData = event;\n-    }\n-\n-    public void setEvent(boolean mEvent) {\n-        this.mEvent = mEvent;\n-    }\n-\n-    public boolean isBroken() {\n-        return mBroken;\n-    }\n-\n-    public void setBroken(boolean mBroken) {\n-        this.mBroken = mBroken;\n-    }\n-\n-    public Object getData() {\n-        return mData;\n-    }\n-\n-    public void setData(Object msg) {\n-        mData = msg;\n-    }\n-\n-    public boolean isHeartbeat() {\n-        return mEvent && HEARTBEAT_EVENT == mData;\n-    }\n-\n-    public void setHeartbeat(boolean isHeartbeat) {\n-        if (isHeartbeat) {\n-            setEvent(HEARTBEAT_EVENT);\n-        }\n-    }\n-\n-    public Request copy() {\n-        Request copy = new Request(mId);\n-        copy.mVersion = this.mVersion;\n-        copy.mTwoWay = this.mTwoWay;\n-        copy.mEvent = this.mEvent;\n-        copy.mBroken = this.mBroken;\n-        copy.mData = this.mData;\n-        return copy;\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"Request [id=\" + mId + \", version=\" + mVersion + \", twoway=\" + mTwoWay + \", event=\" + mEvent\n-                + \", broken=\" + mBroken + \", data=\" + (mData == this ? \"this\" : safeToString(mData)) + \"]\";\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.exchange;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import java.util.concurrent.atomic.AtomicLong;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\r\n+\r\n+/**\r\n+ * Request.\r\n+ */\r\n+public class Request {\r\n+\r\n+    private static final AtomicLong INVOKE_ID = new AtomicLong(0);\r\n+\r\n+    private final long mId;\r\n+\r\n+    private String mVersion;\r\n+\r\n+    private boolean mTwoWay = true;\r\n+\r\n+    private boolean mEvent = false;\r\n+\r\n+    private boolean mBroken = false;\r\n+\r\n+    private Object mData;\r\n+\r\n+    public Request() {\r\n+        mId = newId();\r\n+    }\r\n+\r\n+    public Request(long id) {\r\n+        mId = id;\r\n+    }\r\n+\r\n+    private static long newId() {\r\n+        // getAndIncrement() When it grows to MAX_VALUE, it will grow to MIN_VALUE, and the negative can be used as ID\r\n+        return INVOKE_ID.getAndIncrement();\r\n+    }\r\n+\r\n+    private static String safeToString(Object data) {\r\n+        if (data == null) {\r\n+            return null;\r\n+        }\r\n+        String dataStr;\r\n+        try {\r\n+            dataStr = data.toString();\r\n+        } catch (Throwable e) {\r\n+            dataStr = \"<Fail toString of \" + data.getClass() + \", cause: \" +\r\n+                    StringUtils.toString(e) + \">\";\r\n+        }\r\n+        return dataStr;\r\n+    }\r\n+\r\n+    public long getId() {\r\n+        return mId;\r\n+    }\r\n+\r\n+    public String getVersion() {\r\n+        return mVersion;\r\n+    }\r\n+\r\n+    public void setVersion(String version) {\r\n+        mVersion = version;\r\n+    }\r\n+\r\n+    public boolean isTwoWay() {\r\n+        return mTwoWay;\r\n+    }\r\n+\r\n+    public void setTwoWay(boolean twoWay) {\r\n+        mTwoWay = twoWay;\r\n+    }\r\n+\r\n+    public boolean isEvent() {\r\n+        return mEvent;\r\n+    }\r\n+\r\n+    public void setEvent(String event) {\r\n+        this.mEvent = true;\r\n+        this.mData = event;\r\n+    }\r\n+\r\n+    public void setEvent(boolean mEvent) {\r\n+        this.mEvent = mEvent;\r\n+    }\r\n+\r\n+    public boolean isBroken() {\r\n+        return mBroken;\r\n+    }\r\n+\r\n+    public void setBroken(boolean mBroken) {\r\n+        this.mBroken = mBroken;\r\n+    }\r\n+\r\n+    public Object getData() {\r\n+        return mData;\r\n+    }\r\n+\r\n+    public void setData(Object msg) {\r\n+        mData = msg;\r\n+    }\r\n+\r\n+    public boolean isHeartbeat() {\r\n+        return mEvent && HEARTBEAT_EVENT == mData;\r\n+    }\r\n+\r\n+    public void setHeartbeat(boolean isHeartbeat) {\r\n+        if (isHeartbeat) {\r\n+            setEvent(HEARTBEAT_EVENT);\r\n+        }\r\n+    }\r\n+\r\n+    public Request copy() {\r\n+        Request copy = new Request(mId);\r\n+        copy.mVersion = this.mVersion;\r\n+        copy.mTwoWay = this.mTwoWay;\r\n+        copy.mEvent = this.mEvent;\r\n+        copy.mBroken = this.mBroken;\r\n+        copy.mData = this.mData;\r\n+        return copy;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"Request [id=\" + mId + \", version=\" + mVersion + \", twoway=\" + mTwoWay + \", event=\" + mEvent\r\n+                + \", broken=\" + mBroken + \", data=\" + (mData == this ? \"this\" : safeToString(mData)) + \"]\";\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/exchange/support/DefaultFuture.java", "source2": "org/apache/dubbo/remoting/exchange/support/DefaultFuture.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,301 +1,301 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.exchange.support;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.threadpool.ThreadlessExecutor;\n-import org.apache.dubbo.common.timer.HashedWheelTimer;\n-import org.apache.dubbo.common.timer.Timeout;\n-import org.apache.dubbo.common.timer.Timer;\n-import org.apache.dubbo.common.timer.TimerTask;\n-import org.apache.dubbo.common.utils.NamedThreadFactory;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.TimeoutException;\n-import org.apache.dubbo.remoting.exchange.Request;\n-import org.apache.dubbo.remoting.exchange.Response;\n-\n-import java.text.SimpleDateFormat;\n-import java.util.Date;\n-import java.util.Map;\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.TimeUnit;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-\n-/**\n- * DefaultFuture.\n- */\n-public class DefaultFuture extends CompletableFuture<Object> {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(DefaultFuture.class);\n-\n-    private static final Map<Long, Channel> CHANNELS = new ConcurrentHashMap<>();\n-\n-    private static final Map<Long, DefaultFuture> FUTURES = new ConcurrentHashMap<>();\n-\n-    public static final Timer TIME_OUT_TIMER = new HashedWheelTimer(\n-            new NamedThreadFactory(\"dubbo-future-timeout\", true),\n-            30,\n-            TimeUnit.MILLISECONDS);\n-\n-    // invoke id.\n-    private final Long id;\n-    private final Channel channel;\n-    private final Request request;\n-    private final int timeout;\n-    private final long start = System.currentTimeMillis();\n-    private volatile long sent;\n-    private Timeout timeoutCheckTask;\n-\n-    private ExecutorService executor;\n-\n-    public ExecutorService getExecutor() {\n-        return executor;\n-    }\n-\n-    public void setExecutor(ExecutorService executor) {\n-        this.executor = executor;\n-    }\n-\n-    private DefaultFuture(Channel channel, Request request, int timeout) {\n-        this.channel = channel;\n-        this.request = request;\n-        this.id = request.getId();\n-        this.timeout = timeout > 0 ? timeout : channel.getUrl().getPositiveParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT);\n-        // put into waiting map.\n-        FUTURES.put(id, this);\n-        CHANNELS.put(id, channel);\n-    }\n-\n-    /**\n-     * check time out of the future\n-     */\n-    private static void timeoutCheck(DefaultFuture future) {\n-        TimeoutCheckTask task = new TimeoutCheckTask(future.getId());\n-        future.timeoutCheckTask = TIME_OUT_TIMER.newTimeout(task, future.getTimeout(), TimeUnit.MILLISECONDS);\n-    }\n-\n-    /**\n-     * init a DefaultFuture\n-     * 1.init a DefaultFuture\n-     * 2.timeout check\n-     *\n-     * @param channel channel\n-     * @param request the request\n-     * @param timeout timeout\n-     * @return a new DefaultFuture\n-     */\n-    public static DefaultFuture newFuture(Channel channel, Request request, int timeout, ExecutorService executor) {\n-        final DefaultFuture future = new DefaultFuture(channel, request, timeout);\n-        future.setExecutor(executor);\n-        // ThreadlessExecutor needs to hold the waiting future in case of circuit return.\n-        if (executor instanceof ThreadlessExecutor) {\n-            ((ThreadlessExecutor) executor).setWaitingFuture(future);\n-        }\n-        // timeout check\n-        timeoutCheck(future);\n-        return future;\n-    }\n-\n-    public static DefaultFuture getFuture(long id) {\n-        return FUTURES.get(id);\n-    }\n-\n-    public static boolean hasFuture(Channel channel) {\n-        return CHANNELS.containsValue(channel);\n-    }\n-\n-    public static void sent(Channel channel, Request request) {\n-        DefaultFuture future = FUTURES.get(request.getId());\n-        if (future != null) {\n-            future.doSent();\n-        }\n-    }\n-\n-    /**\n-     * close a channel when a channel is inactive\n-     * directly return the unfinished requests.\n-     *\n-     * @param channel channel to close\n-     */\n-    public static void closeChannel(Channel channel) {\n-        for (Map.Entry<Long, Channel> entry : CHANNELS.entrySet()) {\n-            if (channel.equals(entry.getValue())) {\n-                DefaultFuture future = getFuture(entry.getKey());\n-                if (future != null && !future.isDone()) {\n-                    ExecutorService futureExecutor = future.getExecutor();\n-                    if (futureExecutor != null && !futureExecutor.isTerminated()) {\n-                        futureExecutor.shutdownNow();\n-                    }\n-\n-                    Response disconnectResponse = new Response(future.getId());\n-                    disconnectResponse.setStatus(Response.CHANNEL_INACTIVE);\n-                    disconnectResponse.setErrorMessage(\"Channel \" +\n-                            channel +\n-                            \" is inactive. Directly return the unFinished request : \" +\n-                            future.getRequest());\n-                    DefaultFuture.received(channel, disconnectResponse);\n-                }\n-            }\n-        }\n-    }\n-\n-    public static void received(Channel channel, Response response) {\n-        received(channel, response, false);\n-    }\n-\n-    public static void received(Channel channel, Response response, boolean timeout) {\n-        try {\n-            DefaultFuture future = FUTURES.remove(response.getId());\n-            if (future != null) {\n-                Timeout t = future.timeoutCheckTask;\n-                if (!timeout) {\n-                    // decrease Time\n-                    t.cancel();\n-                }\n-                future.doReceived(response);\n-            } else {\n-                logger.warn(\"The timeout response finally returned at \"\n-                        + (new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss.SSS\").format(new Date()))\n-                        + \", response status is \" + response.getStatus()\n-                        + (channel == null ? \"\" : \", channel: \" + channel.getLocalAddress()\n-                        + \" -> \" + channel.getRemoteAddress()) + \", please check provider side for detailed result.\");\n-            }\n-        } finally {\n-            CHANNELS.remove(response.getId());\n-        }\n-    }\n-\n-    @Override\n-    public boolean cancel(boolean mayInterruptIfRunning) {\n-        Response errorResult = new Response(id);\n-        errorResult.setStatus(Response.CLIENT_ERROR);\n-        errorResult.setErrorMessage(\"request future has been canceled.\");\n-        this.doReceived(errorResult);\n-        FUTURES.remove(id);\n-        CHANNELS.remove(id);\n-        return true;\n-    }\n-\n-    public void cancel() {\n-        this.cancel(true);\n-    }\n-\n-    private void doReceived(Response res) {\n-        if (res == null) {\n-            throw new IllegalStateException(\"response cannot be null\");\n-        }\n-        if (res.getStatus() == Response.OK) {\n-            this.complete(res.getResult());\n-        } else if (res.getStatus() == Response.CLIENT_TIMEOUT || res.getStatus() == Response.SERVER_TIMEOUT) {\n-            this.completeExceptionally(new TimeoutException(res.getStatus() == Response.SERVER_TIMEOUT, channel, res.getErrorMessage()));\n-        } else {\n-            this.completeExceptionally(new RemotingException(channel, res.getErrorMessage()));\n-        }\n-\n-        // the result is returning, but the caller thread may still waiting\n-        // to avoid endless waiting for whatever reason, notify caller thread to return.\n-        if (executor != null && executor instanceof ThreadlessExecutor) {\n-            ThreadlessExecutor threadlessExecutor = (ThreadlessExecutor) executor;\n-            if (threadlessExecutor.isWaiting()) {\n-                threadlessExecutor.notifyReturn(new IllegalStateException(\"The result has returned, but the biz thread is still waiting\" +\n-                        \" which is not an expected state, interrupt the thread manually by returning an exception.\"));\n-            }\n-        }\n-    }\n-\n-    private long getId() {\n-        return id;\n-    }\n-\n-    private Channel getChannel() {\n-        return channel;\n-    }\n-\n-    private boolean isSent() {\n-        return sent > 0;\n-    }\n-\n-    public Request getRequest() {\n-        return request;\n-    }\n-\n-    private int getTimeout() {\n-        return timeout;\n-    }\n-\n-    private void doSent() {\n-        sent = System.currentTimeMillis();\n-    }\n-\n-    private String getTimeoutMessage(boolean scan) {\n-        long nowTimestamp = System.currentTimeMillis();\n-        return (sent > 0 ? \"Waiting server-side response timeout\" : \"Sending request timeout in client-side\")\n-                + (scan ? \" by scan timer\" : \"\") + \". start time: \"\n-                + (new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss.SSS\").format(new Date(start))) + \", end time: \"\n-                + (new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss.SSS\").format(new Date(nowTimestamp))) + \",\"\n-                + (sent > 0 ? \" client elapsed: \" + (sent - start)\n-                + \" ms, server elapsed: \" + (nowTimestamp - sent)\n-                : \" elapsed: \" + (nowTimestamp - start)) + \" ms, timeout: \"\n-                + timeout + \" ms, request: \" + (logger.isDebugEnabled() ? request : getRequestWithoutData()) + \", channel: \" + channel.getLocalAddress()\n-                + \" -> \" + channel.getRemoteAddress();\n-    }\n-\n-    private Request getRequestWithoutData() {\n-        Request newRequest = request.copy();\n-        newRequest.setData(null);\n-        return newRequest;\n-    }\n-\n-    private static class TimeoutCheckTask implements TimerTask {\n-\n-        private final Long requestID;\n-\n-        TimeoutCheckTask(Long requestID) {\n-            this.requestID = requestID;\n-        }\n-\n-        @Override\n-        public void run(Timeout timeout) {\n-            DefaultFuture future = DefaultFuture.getFuture(requestID);\n-            if (future == null || future.isDone()) {\n-                return;\n-            }\n-\n-            if (future.getExecutor() != null) {\n-                future.getExecutor().execute(() -> notifyTimeout(future));\n-            } else {\n-                notifyTimeout(future);\n-            }\n-        }\n-\n-        private void notifyTimeout(DefaultFuture future) {\n-            // create exception response.\n-            Response timeoutResponse = new Response(future.getId());\n-            // set timeout status.\n-            timeoutResponse.setStatus(future.isSent() ? Response.SERVER_TIMEOUT : Response.CLIENT_TIMEOUT);\n-            timeoutResponse.setErrorMessage(future.getTimeoutMessage(true));\n-            // handle response.\n-            DefaultFuture.received(future.getChannel(), timeoutResponse, true);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.exchange.support;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.threadpool.ThreadlessExecutor;\r\n+import org.apache.dubbo.common.timer.HashedWheelTimer;\r\n+import org.apache.dubbo.common.timer.Timeout;\r\n+import org.apache.dubbo.common.timer.Timer;\r\n+import org.apache.dubbo.common.timer.TimerTask;\r\n+import org.apache.dubbo.common.utils.NamedThreadFactory;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.TimeoutException;\r\n+import org.apache.dubbo.remoting.exchange.Request;\r\n+import org.apache.dubbo.remoting.exchange.Response;\r\n+\r\n+import java.text.SimpleDateFormat;\r\n+import java.util.Date;\r\n+import java.util.Map;\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+\r\n+/**\r\n+ * DefaultFuture.\r\n+ */\r\n+public class DefaultFuture extends CompletableFuture<Object> {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(DefaultFuture.class);\r\n+\r\n+    private static final Map<Long, Channel> CHANNELS = new ConcurrentHashMap<>();\r\n+\r\n+    private static final Map<Long, DefaultFuture> FUTURES = new ConcurrentHashMap<>();\r\n+\r\n+    public static final Timer TIME_OUT_TIMER = new HashedWheelTimer(\r\n+            new NamedThreadFactory(\"dubbo-future-timeout\", true),\r\n+            30,\r\n+            TimeUnit.MILLISECONDS);\r\n+\r\n+    // invoke id.\r\n+    private final Long id;\r\n+    private final Channel channel;\r\n+    private final Request request;\r\n+    private final int timeout;\r\n+    private final long start = System.currentTimeMillis();\r\n+    private volatile long sent;\r\n+    private Timeout timeoutCheckTask;\r\n+\r\n+    private ExecutorService executor;\r\n+\r\n+    public ExecutorService getExecutor() {\r\n+        return executor;\r\n+    }\r\n+\r\n+    public void setExecutor(ExecutorService executor) {\r\n+        this.executor = executor;\r\n+    }\r\n+\r\n+    private DefaultFuture(Channel channel, Request request, int timeout) {\r\n+        this.channel = channel;\r\n+        this.request = request;\r\n+        this.id = request.getId();\r\n+        this.timeout = timeout > 0 ? timeout : channel.getUrl().getPositiveParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT);\r\n+        // put into waiting map.\r\n+        FUTURES.put(id, this);\r\n+        CHANNELS.put(id, channel);\r\n+    }\r\n+\r\n+    /**\r\n+     * check time out of the future\r\n+     */\r\n+    private static void timeoutCheck(DefaultFuture future) {\r\n+        TimeoutCheckTask task = new TimeoutCheckTask(future.getId());\r\n+        future.timeoutCheckTask = TIME_OUT_TIMER.newTimeout(task, future.getTimeout(), TimeUnit.MILLISECONDS);\r\n+    }\r\n+\r\n+    /**\r\n+     * init a DefaultFuture\r\n+     * 1.init a DefaultFuture\r\n+     * 2.timeout check\r\n+     *\r\n+     * @param channel channel\r\n+     * @param request the request\r\n+     * @param timeout timeout\r\n+     * @return a new DefaultFuture\r\n+     */\r\n+    public static DefaultFuture newFuture(Channel channel, Request request, int timeout, ExecutorService executor) {\r\n+        final DefaultFuture future = new DefaultFuture(channel, request, timeout);\r\n+        future.setExecutor(executor);\r\n+        // ThreadlessExecutor needs to hold the waiting future in case of circuit return.\r\n+        if (executor instanceof ThreadlessExecutor) {\r\n+            ((ThreadlessExecutor) executor).setWaitingFuture(future);\r\n+        }\r\n+        // timeout check\r\n+        timeoutCheck(future);\r\n+        return future;\r\n+    }\r\n+\r\n+    public static DefaultFuture getFuture(long id) {\r\n+        return FUTURES.get(id);\r\n+    }\r\n+\r\n+    public static boolean hasFuture(Channel channel) {\r\n+        return CHANNELS.containsValue(channel);\r\n+    }\r\n+\r\n+    public static void sent(Channel channel, Request request) {\r\n+        DefaultFuture future = FUTURES.get(request.getId());\r\n+        if (future != null) {\r\n+            future.doSent();\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * close a channel when a channel is inactive\r\n+     * directly return the unfinished requests.\r\n+     *\r\n+     * @param channel channel to close\r\n+     */\r\n+    public static void closeChannel(Channel channel) {\r\n+        for (Map.Entry<Long, Channel> entry : CHANNELS.entrySet()) {\r\n+            if (channel.equals(entry.getValue())) {\r\n+                DefaultFuture future = getFuture(entry.getKey());\r\n+                if (future != null && !future.isDone()) {\r\n+                    ExecutorService futureExecutor = future.getExecutor();\r\n+                    if (futureExecutor != null && !futureExecutor.isTerminated()) {\r\n+                        futureExecutor.shutdownNow();\r\n+                    }\r\n+\r\n+                    Response disconnectResponse = new Response(future.getId());\r\n+                    disconnectResponse.setStatus(Response.CHANNEL_INACTIVE);\r\n+                    disconnectResponse.setErrorMessage(\"Channel \" +\r\n+                            channel +\r\n+                            \" is inactive. Directly return the unFinished request : \" +\r\n+                            future.getRequest());\r\n+                    DefaultFuture.received(channel, disconnectResponse);\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public static void received(Channel channel, Response response) {\r\n+        received(channel, response, false);\r\n+    }\r\n+\r\n+    public static void received(Channel channel, Response response, boolean timeout) {\r\n+        try {\r\n+            DefaultFuture future = FUTURES.remove(response.getId());\r\n+            if (future != null) {\r\n+                Timeout t = future.timeoutCheckTask;\r\n+                if (!timeout) {\r\n+                    // decrease Time\r\n+                    t.cancel();\r\n+                }\r\n+                future.doReceived(response);\r\n+            } else {\r\n+                logger.warn(\"The timeout response finally returned at \"\r\n+                        + (new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss.SSS\").format(new Date()))\r\n+                        + \", response status is \" + response.getStatus()\r\n+                        + (channel == null ? \"\" : \", channel: \" + channel.getLocalAddress()\r\n+                        + \" -> \" + channel.getRemoteAddress()) + \", please check provider side for detailed result.\");\r\n+            }\r\n+        } finally {\r\n+            CHANNELS.remove(response.getId());\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean cancel(boolean mayInterruptIfRunning) {\r\n+        Response errorResult = new Response(id);\r\n+        errorResult.setStatus(Response.CLIENT_ERROR);\r\n+        errorResult.setErrorMessage(\"request future has been canceled.\");\r\n+        this.doReceived(errorResult);\r\n+        FUTURES.remove(id);\r\n+        CHANNELS.remove(id);\r\n+        return true;\r\n+    }\r\n+\r\n+    public void cancel() {\r\n+        this.cancel(true);\r\n+    }\r\n+\r\n+    private void doReceived(Response res) {\r\n+        if (res == null) {\r\n+            throw new IllegalStateException(\"response cannot be null\");\r\n+        }\r\n+        if (res.getStatus() == Response.OK) {\r\n+            this.complete(res.getResult());\r\n+        } else if (res.getStatus() == Response.CLIENT_TIMEOUT || res.getStatus() == Response.SERVER_TIMEOUT) {\r\n+            this.completeExceptionally(new TimeoutException(res.getStatus() == Response.SERVER_TIMEOUT, channel, res.getErrorMessage()));\r\n+        } else {\r\n+            this.completeExceptionally(new RemotingException(channel, res.getErrorMessage()));\r\n+        }\r\n+\r\n+        // the result is returning, but the caller thread may still waiting\r\n+        // to avoid endless waiting for whatever reason, notify caller thread to return.\r\n+        if (executor != null && executor instanceof ThreadlessExecutor) {\r\n+            ThreadlessExecutor threadlessExecutor = (ThreadlessExecutor) executor;\r\n+            if (threadlessExecutor.isWaiting()) {\r\n+                threadlessExecutor.notifyReturn(new IllegalStateException(\"The result has returned, but the biz thread is still waiting\" +\r\n+                        \" which is not an expected state, interrupt the thread manually by returning an exception.\"));\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private long getId() {\r\n+        return id;\r\n+    }\r\n+\r\n+    private Channel getChannel() {\r\n+        return channel;\r\n+    }\r\n+\r\n+    private boolean isSent() {\r\n+        return sent > 0;\r\n+    }\r\n+\r\n+    public Request getRequest() {\r\n+        return request;\r\n+    }\r\n+\r\n+    private int getTimeout() {\r\n+        return timeout;\r\n+    }\r\n+\r\n+    private void doSent() {\r\n+        sent = System.currentTimeMillis();\r\n+    }\r\n+\r\n+    private String getTimeoutMessage(boolean scan) {\r\n+        long nowTimestamp = System.currentTimeMillis();\r\n+        return (sent > 0 ? \"Waiting server-side response timeout\" : \"Sending request timeout in client-side\")\r\n+                + (scan ? \" by scan timer\" : \"\") + \". start time: \"\r\n+                + (new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss.SSS\").format(new Date(start))) + \", end time: \"\r\n+                + (new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss.SSS\").format(new Date(nowTimestamp))) + \",\"\r\n+                + (sent > 0 ? \" client elapsed: \" + (sent - start)\r\n+                + \" ms, server elapsed: \" + (nowTimestamp - sent)\r\n+                : \" elapsed: \" + (nowTimestamp - start)) + \" ms, timeout: \"\r\n+                + timeout + \" ms, request: \" + (logger.isDebugEnabled() ? request : getRequestWithoutData()) + \", channel: \" + channel.getLocalAddress()\r\n+                + \" -> \" + channel.getRemoteAddress();\r\n+    }\r\n+\r\n+    private Request getRequestWithoutData() {\r\n+        Request newRequest = request.copy();\r\n+        newRequest.setData(null);\r\n+        return newRequest;\r\n+    }\r\n+\r\n+    private static class TimeoutCheckTask implements TimerTask {\r\n+\r\n+        private final Long requestID;\r\n+\r\n+        TimeoutCheckTask(Long requestID) {\r\n+            this.requestID = requestID;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void run(Timeout timeout) {\r\n+            DefaultFuture future = DefaultFuture.getFuture(requestID);\r\n+            if (future == null || future.isDone()) {\r\n+                return;\r\n+            }\r\n+\r\n+            if (future.getExecutor() != null) {\r\n+                future.getExecutor().execute(() -> notifyTimeout(future));\r\n+            } else {\r\n+                notifyTimeout(future);\r\n+            }\r\n+        }\r\n+\r\n+        private void notifyTimeout(DefaultFuture future) {\r\n+            // create exception response.\r\n+            Response timeoutResponse = new Response(future.getId());\r\n+            // set timeout status.\r\n+            timeoutResponse.setStatus(future.isSent() ? Response.SERVER_TIMEOUT : Response.CLIENT_TIMEOUT);\r\n+            timeoutResponse.setErrorMessage(future.getTimeoutMessage(true));\r\n+            // handle response.\r\n+            DefaultFuture.received(future.getChannel(), timeoutResponse, true);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/exchange/support/header/AbstractTimerTask.java", "source2": "org/apache/dubbo/remoting/exchange/support/header/AbstractTimerTask.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,97 +1,97 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.remoting.exchange.support.header;\n-\n-import org.apache.dubbo.common.timer.Timeout;\n-import org.apache.dubbo.common.timer.Timer;\n-import org.apache.dubbo.common.timer.TimerTask;\n-import org.apache.dubbo.remoting.Channel;\n-\n-import java.util.Collection;\n-import java.util.concurrent.TimeUnit;\n-\n-/**\n- * AbstractTimerTask\n- */\n-public abstract class AbstractTimerTask implements TimerTask {\n-\n-    private final ChannelProvider channelProvider;\n-\n-    private final Long tick;\n-\n-    protected volatile boolean cancel = false;\n-\n-    AbstractTimerTask(ChannelProvider channelProvider, Long tick) {\n-        if (channelProvider == null || tick == null) {\n-            throw new IllegalArgumentException();\n-        }\n-        this.tick = tick;\n-        this.channelProvider = channelProvider;\n-    }\n-\n-    static Long lastRead(Channel channel) {\n-        return (Long) channel.getAttribute(HeartbeatHandler.KEY_READ_TIMESTAMP);\n-    }\n-\n-    static Long lastWrite(Channel channel) {\n-        return (Long) channel.getAttribute(HeartbeatHandler.KEY_WRITE_TIMESTAMP);\n-    }\n-\n-    static Long now() {\n-        return System.currentTimeMillis();\n-    }\n-\n-    public void cancel() {\n-        this.cancel = true;\n-    }\n-\n-    private void reput(Timeout timeout, Long tick) {\n-        if (timeout == null || tick == null) {\n-            throw new IllegalArgumentException();\n-        }\n-\n-        if (cancel) {\n-            return;\n-        }\n-\n-        Timer timer = timeout.timer();\n-        if (timer.isStop() || timeout.isCancelled()) {\n-            return;\n-        }\n-\n-        timer.newTimeout(timeout.task(), tick, TimeUnit.MILLISECONDS);\n-    }\n-\n-    @Override\n-    public void run(Timeout timeout) throws Exception {\n-        Collection<Channel> c = channelProvider.getChannels();\n-        for (Channel channel : c) {\n-            if (channel.isClosed()) {\n-                continue;\n-            }\n-            doTask(channel);\n-        }\n-        reput(timeout, tick);\n-    }\n-\n-    protected abstract void doTask(Channel channel);\n-\n-    interface ChannelProvider {\n-        Collection<Channel> getChannels();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.remoting.exchange.support.header;\r\n+\r\n+import org.apache.dubbo.common.timer.Timeout;\r\n+import org.apache.dubbo.common.timer.Timer;\r\n+import org.apache.dubbo.common.timer.TimerTask;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+/**\r\n+ * AbstractTimerTask\r\n+ */\r\n+public abstract class AbstractTimerTask implements TimerTask {\r\n+\r\n+    private final ChannelProvider channelProvider;\r\n+\r\n+    private final Long tick;\r\n+\r\n+    protected volatile boolean cancel = false;\r\n+\r\n+    AbstractTimerTask(ChannelProvider channelProvider, Long tick) {\r\n+        if (channelProvider == null || tick == null) {\r\n+            throw new IllegalArgumentException();\r\n+        }\r\n+        this.tick = tick;\r\n+        this.channelProvider = channelProvider;\r\n+    }\r\n+\r\n+    static Long lastRead(Channel channel) {\r\n+        return (Long) channel.getAttribute(HeartbeatHandler.KEY_READ_TIMESTAMP);\r\n+    }\r\n+\r\n+    static Long lastWrite(Channel channel) {\r\n+        return (Long) channel.getAttribute(HeartbeatHandler.KEY_WRITE_TIMESTAMP);\r\n+    }\r\n+\r\n+    static Long now() {\r\n+        return System.currentTimeMillis();\r\n+    }\r\n+\r\n+    public void cancel() {\r\n+        this.cancel = true;\r\n+    }\r\n+\r\n+    private void reput(Timeout timeout, Long tick) {\r\n+        if (timeout == null || tick == null) {\r\n+            throw new IllegalArgumentException();\r\n+        }\r\n+\r\n+        if (cancel) {\r\n+            return;\r\n+        }\r\n+\r\n+        Timer timer = timeout.timer();\r\n+        if (timer.isStop() || timeout.isCancelled()) {\r\n+            return;\r\n+        }\r\n+\r\n+        timer.newTimeout(timeout.task(), tick, TimeUnit.MILLISECONDS);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void run(Timeout timeout) throws Exception {\r\n+        Collection<Channel> c = channelProvider.getChannels();\r\n+        for (Channel channel : c) {\r\n+            if (channel.isClosed()) {\r\n+                continue;\r\n+            }\r\n+            doTask(channel);\r\n+        }\r\n+        reput(timeout, tick);\r\n+    }\r\n+\r\n+    protected abstract void doTask(Channel channel);\r\n+\r\n+    interface ChannelProvider {\r\n+        Collection<Channel> getChannels();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/exchange/support/header/HeartbeatHandler.java", "source2": "org/apache/dubbo/remoting/exchange/support/header/HeartbeatHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,116 +1,116 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.remoting.exchange.support.header;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.exchange.Request;\n-import org.apache.dubbo.remoting.exchange.Response;\n-import org.apache.dubbo.remoting.transport.AbstractChannelHandlerDelegate;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\n-\n-public class HeartbeatHandler extends AbstractChannelHandlerDelegate {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(HeartbeatHandler.class);\n-\n-    public static final String KEY_READ_TIMESTAMP = \"READ_TIMESTAMP\";\n-\n-    public static final String KEY_WRITE_TIMESTAMP = \"WRITE_TIMESTAMP\";\n-\n-    public HeartbeatHandler(ChannelHandler handler) {\n-        super(handler);\n-    }\n-\n-    @Override\n-    public void connected(Channel channel) throws RemotingException {\n-        setReadTimestamp(channel);\n-        setWriteTimestamp(channel);\n-        handler.connected(channel);\n-    }\n-\n-    @Override\n-    public void disconnected(Channel channel) throws RemotingException {\n-        clearReadTimestamp(channel);\n-        clearWriteTimestamp(channel);\n-        handler.disconnected(channel);\n-    }\n-\n-    @Override\n-    public void sent(Channel channel, Object message) throws RemotingException {\n-        setWriteTimestamp(channel);\n-        handler.sent(channel, message);\n-    }\n-\n-    @Override\n-    public void received(Channel channel, Object message) throws RemotingException {\n-        setReadTimestamp(channel);\n-        if (isHeartbeatRequest(message)) {\n-            Request req = (Request) message;\n-            if (req.isTwoWay()) {\n-                Response res = new Response(req.getId(), req.getVersion());\n-                res.setEvent(HEARTBEAT_EVENT);\n-                channel.send(res);\n-                if (logger.isInfoEnabled()) {\n-                    int heartbeat = channel.getUrl().getParameter(Constants.HEARTBEAT_KEY, 0);\n-                    if (logger.isDebugEnabled()) {\n-                        logger.debug(\"Received heartbeat from remote channel \" + channel.getRemoteAddress()\n-                                + \", cause: The channel has no data-transmission exceeds a heartbeat period\"\n-                                + (heartbeat > 0 ? \": \" + heartbeat + \"ms\" : \"\"));\n-                    }\n-                }\n-            }\n-            return;\n-        }\n-        if (isHeartbeatResponse(message)) {\n-            if (logger.isDebugEnabled()) {\n-                logger.debug(\"Receive heartbeat response in thread \" + Thread.currentThread().getName());\n-            }\n-            return;\n-        }\n-        handler.received(channel, message);\n-    }\n-\n-    private void setReadTimestamp(Channel channel) {\n-        channel.setAttribute(KEY_READ_TIMESTAMP, System.currentTimeMillis());\n-    }\n-\n-    private void setWriteTimestamp(Channel channel) {\n-        channel.setAttribute(KEY_WRITE_TIMESTAMP, System.currentTimeMillis());\n-    }\n-\n-    private void clearReadTimestamp(Channel channel) {\n-        channel.removeAttribute(KEY_READ_TIMESTAMP);\n-    }\n-\n-    private void clearWriteTimestamp(Channel channel) {\n-        channel.removeAttribute(KEY_WRITE_TIMESTAMP);\n-    }\n-\n-    private boolean isHeartbeatRequest(Object message) {\n-        return message instanceof Request && ((Request) message).isHeartbeat();\n-    }\n-\n-    private boolean isHeartbeatResponse(Object message) {\n-        return message instanceof Response && ((Response) message).isHeartbeat();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.remoting.exchange.support.header;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.exchange.Request;\r\n+import org.apache.dubbo.remoting.exchange.Response;\r\n+import org.apache.dubbo.remoting.transport.AbstractChannelHandlerDelegate;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\r\n+\r\n+public class HeartbeatHandler extends AbstractChannelHandlerDelegate {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(HeartbeatHandler.class);\r\n+\r\n+    public static final String KEY_READ_TIMESTAMP = \"READ_TIMESTAMP\";\r\n+\r\n+    public static final String KEY_WRITE_TIMESTAMP = \"WRITE_TIMESTAMP\";\r\n+\r\n+    public HeartbeatHandler(ChannelHandler handler) {\r\n+        super(handler);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void connected(Channel channel) throws RemotingException {\r\n+        setReadTimestamp(channel);\r\n+        setWriteTimestamp(channel);\r\n+        handler.connected(channel);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void disconnected(Channel channel) throws RemotingException {\r\n+        clearReadTimestamp(channel);\r\n+        clearWriteTimestamp(channel);\r\n+        handler.disconnected(channel);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void sent(Channel channel, Object message) throws RemotingException {\r\n+        setWriteTimestamp(channel);\r\n+        handler.sent(channel, message);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void received(Channel channel, Object message) throws RemotingException {\r\n+        setReadTimestamp(channel);\r\n+        if (isHeartbeatRequest(message)) {\r\n+            Request req = (Request) message;\r\n+            if (req.isTwoWay()) {\r\n+                Response res = new Response(req.getId(), req.getVersion());\r\n+                res.setEvent(HEARTBEAT_EVENT);\r\n+                channel.send(res);\r\n+                if (logger.isInfoEnabled()) {\r\n+                    int heartbeat = channel.getUrl().getParameter(Constants.HEARTBEAT_KEY, 0);\r\n+                    if (logger.isDebugEnabled()) {\r\n+                        logger.debug(\"Received heartbeat from remote channel \" + channel.getRemoteAddress()\r\n+                                + \", cause: The channel has no data-transmission exceeds a heartbeat period\"\r\n+                                + (heartbeat > 0 ? \": \" + heartbeat + \"ms\" : \"\"));\r\n+                    }\r\n+                }\r\n+            }\r\n+            return;\r\n+        }\r\n+        if (isHeartbeatResponse(message)) {\r\n+            if (logger.isDebugEnabled()) {\r\n+                logger.debug(\"Receive heartbeat response in thread \" + Thread.currentThread().getName());\r\n+            }\r\n+            return;\r\n+        }\r\n+        handler.received(channel, message);\r\n+    }\r\n+\r\n+    private void setReadTimestamp(Channel channel) {\r\n+        channel.setAttribute(KEY_READ_TIMESTAMP, System.currentTimeMillis());\r\n+    }\r\n+\r\n+    private void setWriteTimestamp(Channel channel) {\r\n+        channel.setAttribute(KEY_WRITE_TIMESTAMP, System.currentTimeMillis());\r\n+    }\r\n+\r\n+    private void clearReadTimestamp(Channel channel) {\r\n+        channel.removeAttribute(KEY_READ_TIMESTAMP);\r\n+    }\r\n+\r\n+    private void clearWriteTimestamp(Channel channel) {\r\n+        channel.removeAttribute(KEY_WRITE_TIMESTAMP);\r\n+    }\r\n+\r\n+    private boolean isHeartbeatRequest(Object message) {\r\n+        return message instanceof Request && ((Request) message).isHeartbeat();\r\n+    }\r\n+\r\n+    private boolean isHeartbeatResponse(Object message) {\r\n+        return message instanceof Response && ((Response) message).isHeartbeat();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/exchange/support/header/HeartbeatTimerTask.java", "source2": "org/apache/dubbo/remoting/exchange/support/header/HeartbeatTimerTask.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,64 +1,64 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.remoting.exchange.support.header;\n-\n-import org.apache.dubbo.common.Version;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.exchange.Request;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\n-\n-/**\n- * HeartbeatTimerTask\n- */\n-public class HeartbeatTimerTask extends AbstractTimerTask {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(HeartbeatTimerTask.class);\n-\n-    private final int heartbeat;\n-\n-    HeartbeatTimerTask(ChannelProvider channelProvider, Long heartbeatTick, int heartbeat) {\n-        super(channelProvider, heartbeatTick);\n-        this.heartbeat = heartbeat;\n-    }\n-\n-    @Override\n-    protected void doTask(Channel channel) {\n-        try {\n-            Long lastRead = lastRead(channel);\n-            Long lastWrite = lastWrite(channel);\n-            if ((lastRead != null && now() - lastRead > heartbeat)\n-                    || (lastWrite != null && now() - lastWrite > heartbeat)) {\n-                Request req = new Request();\n-                req.setVersion(Version.getProtocolVersion());\n-                req.setTwoWay(true);\n-                req.setEvent(HEARTBEAT_EVENT);\n-                channel.send(req);\n-                if (logger.isDebugEnabled()) {\n-                    logger.debug(\"Send heartbeat to remote channel \" + channel.getRemoteAddress()\n-                            + \", cause: The channel has no data-transmission exceeds a heartbeat period: \"\n-                            + heartbeat + \"ms\");\n-                }\n-            }\n-        } catch (Throwable t) {\n-            logger.warn(\"Exception when heartbeat to remote channel \" + channel.getRemoteAddress(), t);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.remoting.exchange.support.header;\r\n+\r\n+import org.apache.dubbo.common.Version;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.exchange.Request;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\r\n+\r\n+/**\r\n+ * HeartbeatTimerTask\r\n+ */\r\n+public class HeartbeatTimerTask extends AbstractTimerTask {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(HeartbeatTimerTask.class);\r\n+\r\n+    private final int heartbeat;\r\n+\r\n+    HeartbeatTimerTask(ChannelProvider channelProvider, Long heartbeatTick, int heartbeat) {\r\n+        super(channelProvider, heartbeatTick);\r\n+        this.heartbeat = heartbeat;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doTask(Channel channel) {\r\n+        try {\r\n+            Long lastRead = lastRead(channel);\r\n+            Long lastWrite = lastWrite(channel);\r\n+            if ((lastRead != null && now() - lastRead > heartbeat)\r\n+                    || (lastWrite != null && now() - lastWrite > heartbeat)) {\r\n+                Request req = new Request();\r\n+                req.setVersion(Version.getProtocolVersion());\r\n+                req.setTwoWay(true);\r\n+                req.setEvent(HEARTBEAT_EVENT);\r\n+                channel.send(req);\r\n+                if (logger.isDebugEnabled()) {\r\n+                    logger.debug(\"Send heartbeat to remote channel \" + channel.getRemoteAddress()\r\n+                            + \", cause: The channel has no data-transmission exceeds a heartbeat period: \"\r\n+                            + heartbeat + \"ms\");\r\n+                }\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            logger.warn(\"Exception when heartbeat to remote channel \" + channel.getRemoteAddress(), t);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/telnet/support/command/LogTelnetHandler.java", "source2": "org/apache/dubbo/remoting/telnet/support/command/LogTelnetHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,95 +1,95 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.telnet.support.command;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.logger.Level;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.telnet.TelnetHandler;\n-import org.apache.dubbo.remoting.telnet.support.Help;\n-\n-import java.io.File;\n-import java.io.FileInputStream;\n-import java.nio.ByteBuffer;\n-import java.nio.channels.FileChannel;\n-import java.text.SimpleDateFormat;\n-import java.util.Date;\n-\n-/**\n- * LogTelnetHandler\n- */\n-@Activate\n-@Help(parameter = \"level\", summary = \"Change log level or show log \", detail = \"Change log level or show log\")\n-public class LogTelnetHandler implements TelnetHandler {\n-\n-    public static final String SERVICE_KEY = \"telnet.log\";\n-\n-    @Override\n-    public String telnet(Channel channel, String message) {\n-        long size = 0;\n-        File file = LoggerFactory.getFile();\n-        StringBuilder buf = new StringBuilder();\n-        if (message == null || message.trim().length() == 0) {\n-            buf.append(\"EXAMPLE: log error / log 100\");\n-        } else {\n-            String[] str = message.split(\" \");\n-            if (!StringUtils.isInteger(str[0])) {\n-                LoggerFactory.setLevel(Level.valueOf(message.toUpperCase()));\n-            } else {\n-                int showLogLength = Integer.parseInt(str[0]);\n-\n-                if (file != null && file.exists()) {\n-                    try {\n-                        try (FileInputStream fis = new FileInputStream(file)) {\n-                            try (FileChannel filechannel = fis.getChannel()) {\n-                                size = filechannel.size();\n-                                ByteBuffer bb;\n-                                if (size <= showLogLength) {\n-                                    bb = ByteBuffer.allocate((int) size);\n-                                    filechannel.read(bb, 0);\n-                                } else {\n-                                    int pos = (int) (size - showLogLength);\n-                                    bb = ByteBuffer.allocate(showLogLength);\n-                                    filechannel.read(bb, pos);\n-                                }\n-                                bb.flip();\n-                                String content = new String(bb.array()).replace(\"<\", \"&lt;\")\n-                                        .replace(\">\", \"&gt;\").replace(\"\\n\", \"<br/><br/>\");\n-                                buf.append(\"\\r\\ncontent:\" + content);\n-\n-                                buf.append(\"\\r\\nmodified:\" + (new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\")\n-                                        .format(new Date(file.lastModified()))));\n-                                buf.append(\"\\r\\nsize:\" + size + \"\\r\\n\");\n-                            }\n-                        }\n-                    } catch (Exception e) {\n-                        buf.append(e.getMessage());\n-                    }\n-                } else {\n-                    size = 0;\n-                    buf.append(\"\\r\\nMESSAGE: log file not exists or log appender is console .\");\n-                }\n-            }\n-        }\n-        buf.append(\"\\r\\nCURRENT LOG LEVEL:\" + LoggerFactory.getLevel())\n-                .append(\"\\r\\nCURRENT LOG APPENDER:\" + (file == null ? \"console\" : file.getAbsolutePath()));\n-        return buf.toString();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.telnet.support.command;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.logger.Level;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.telnet.TelnetHandler;\r\n+import org.apache.dubbo.remoting.telnet.support.Help;\r\n+\r\n+import java.io.File;\r\n+import java.io.FileInputStream;\r\n+import java.nio.ByteBuffer;\r\n+import java.nio.channels.FileChannel;\r\n+import java.text.SimpleDateFormat;\r\n+import java.util.Date;\r\n+\r\n+/**\r\n+ * LogTelnetHandler\r\n+ */\r\n+@Activate\r\n+@Help(parameter = \"level\", summary = \"Change log level or show log \", detail = \"Change log level or show log\")\r\n+public class LogTelnetHandler implements TelnetHandler {\r\n+\r\n+    public static final String SERVICE_KEY = \"telnet.log\";\r\n+\r\n+    @Override\r\n+    public String telnet(Channel channel, String message) {\r\n+        long size = 0;\r\n+        File file = LoggerFactory.getFile();\r\n+        StringBuilder buf = new StringBuilder();\r\n+        if (message == null || message.trim().length() == 0) {\r\n+            buf.append(\"EXAMPLE: log error / log 100\");\r\n+        } else {\r\n+            String[] str = message.split(\" \");\r\n+            if (!StringUtils.isInteger(str[0])) {\r\n+                LoggerFactory.setLevel(Level.valueOf(message.toUpperCase()));\r\n+            } else {\r\n+                int showLogLength = Integer.parseInt(str[0]);\r\n+\r\n+                if (file != null && file.exists()) {\r\n+                    try {\r\n+                        try (FileInputStream fis = new FileInputStream(file)) {\r\n+                            try (FileChannel filechannel = fis.getChannel()) {\r\n+                                size = filechannel.size();\r\n+                                ByteBuffer bb;\r\n+                                if (size <= showLogLength) {\r\n+                                    bb = ByteBuffer.allocate((int) size);\r\n+                                    filechannel.read(bb, 0);\r\n+                                } else {\r\n+                                    int pos = (int) (size - showLogLength);\r\n+                                    bb = ByteBuffer.allocate(showLogLength);\r\n+                                    filechannel.read(bb, pos);\r\n+                                }\r\n+                                bb.flip();\r\n+                                String content = new String(bb.array()).replace(\"<\", \"&lt;\")\r\n+                                        .replace(\">\", \"&gt;\").replace(\"\\n\", \"<br/><br/>\");\r\n+                                buf.append(\"\\r\\ncontent:\" + content);\r\n+\r\n+                                buf.append(\"\\r\\nmodified:\" + (new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\")\r\n+                                        .format(new Date(file.lastModified()))));\r\n+                                buf.append(\"\\r\\nsize:\" + size + \"\\r\\n\");\r\n+                            }\r\n+                        }\r\n+                    } catch (Exception e) {\r\n+                        buf.append(e.getMessage());\r\n+                    }\r\n+                } else {\r\n+                    size = 0;\r\n+                    buf.append(\"\\r\\nMESSAGE: log file not exists or log appender is console .\");\r\n+                }\r\n+            }\r\n+        }\r\n+        buf.append(\"\\r\\nCURRENT LOG LEVEL:\" + LoggerFactory.getLevel())\r\n+                .append(\"\\r\\nCURRENT LOG APPENDER:\" + (file == null ? \"console\" : file.getAbsolutePath()));\r\n+        return buf.toString();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/AbstractClient.java", "source2": "org/apache/dubbo/remoting/transport/AbstractClient.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,343 +1,343 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.Version;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.threadpool.manager.ExecutorRepository;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.Client;\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.transport.dispatcher.ChannelHandlers;\n-\n-import java.net.InetSocketAddress;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.locks.Lock;\n-import java.util.concurrent.locks.ReentrantLock;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_CLIENT_THREADPOOL;\n-import static org.apache.dubbo.common.constants.CommonConstants.THREADPOOL_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.THREAD_NAME_KEY;\n-\n-/**\n- * AbstractClient\n- */\n-public abstract class AbstractClient extends AbstractEndpoint implements Client {\n-\n-    protected static final String CLIENT_THREAD_POOL_NAME = \"DubboClientHandler\";\n-    private static final Logger logger = LoggerFactory.getLogger(AbstractClient.class);\n-    private final Lock connectLock = new ReentrantLock();\n-    private final boolean needReconnect;\n-    //issue-7054:Consumer's executor is sharing globally.\n-    protected volatile ExecutorService executor;\n-    private ExecutorRepository executorRepository = ExtensionLoader.getExtensionLoader(ExecutorRepository.class).getDefaultExtension();\n-\n-    public AbstractClient(URL url, ChannelHandler handler) throws RemotingException {\n-        super(url, handler);\n-\n-        needReconnect = url.getParameter(Constants.SEND_RECONNECT_KEY, false);\n-\n-        initExecutor(url);\n-\n-        try {\n-            doOpen();\n-        } catch (Throwable t) {\n-            close();\n-            throw new RemotingException(url.toInetSocketAddress(), null,\n-                    \"Failed to start \" + getClass().getSimpleName() + \" \" + NetUtils.getLocalAddress()\n-                            + \" connect to the server \" + getRemoteAddress() + \", cause: \" + t.getMessage(), t);\n-        }\n-\n-        try {\n-            // connect.\n-            connect();\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"Start \" + getClass().getSimpleName() + \" \" + NetUtils.getLocalAddress() + \" connect to the server \" + getRemoteAddress());\n-            }\n-        } catch (RemotingException t) {\n-            if (url.getParameter(Constants.CHECK_KEY, true)) {\n-                close();\n-                throw t;\n-            } else {\n-                logger.warn(\"Failed to start \" + getClass().getSimpleName() + \" \" + NetUtils.getLocalAddress()\n-                        + \" connect to the server \" + getRemoteAddress() + \" (check == false, ignore and retry later!), cause: \" + t.getMessage(), t);\n-            }\n-        } catch (Throwable t) {\n-            close();\n-            throw new RemotingException(url.toInetSocketAddress(), null,\n-                    \"Failed to start \" + getClass().getSimpleName() + \" \" + NetUtils.getLocalAddress()\n-                            + \" connect to the server \" + getRemoteAddress() + \", cause: \" + t.getMessage(), t);\n-        }\n-    }\n-\n-    private void initExecutor(URL url) {\n-        //issue-7054:Consumer's executor is sharing globally, thread name not require provider ip.\n-        url = url.addParameter(THREAD_NAME_KEY, CLIENT_THREAD_POOL_NAME);\n-        url = url.addParameterIfAbsent(THREADPOOL_KEY, DEFAULT_CLIENT_THREADPOOL);\n-        executor = executorRepository.createExecutorIfAbsent(url);\n-    }\n-\n-    protected static ChannelHandler wrapChannelHandler(URL url, ChannelHandler handler) {\n-        return ChannelHandlers.wrap(handler, url);\n-    }\n-\n-    public InetSocketAddress getConnectAddress() {\n-        return new InetSocketAddress(NetUtils.filterLocalHost(getUrl().getHost()), getUrl().getPort());\n-    }\n-\n-    @Override\n-    public InetSocketAddress getRemoteAddress() {\n-        Channel channel = getChannel();\n-        if (channel == null) {\n-            return getUrl().toInetSocketAddress();\n-        }\n-        return channel.getRemoteAddress();\n-    }\n-\n-    @Override\n-    public InetSocketAddress getLocalAddress() {\n-        Channel channel = getChannel();\n-        if (channel == null) {\n-            return InetSocketAddress.createUnresolved(NetUtils.getLocalHost(), 0);\n-        }\n-        return channel.getLocalAddress();\n-    }\n-\n-    @Override\n-    public boolean isConnected() {\n-        Channel channel = getChannel();\n-        if (channel == null) {\n-            return false;\n-        }\n-        return channel.isConnected();\n-    }\n-\n-    @Override\n-    public Object getAttribute(String key) {\n-        Channel channel = getChannel();\n-        if (channel == null) {\n-            return null;\n-        }\n-        return channel.getAttribute(key);\n-    }\n-\n-    @Override\n-    public void setAttribute(String key, Object value) {\n-        Channel channel = getChannel();\n-        if (channel == null) {\n-            return;\n-        }\n-        channel.setAttribute(key, value);\n-    }\n-\n-    @Override\n-    public void removeAttribute(String key) {\n-        Channel channel = getChannel();\n-        if (channel == null) {\n-            return;\n-        }\n-        channel.removeAttribute(key);\n-    }\n-\n-    @Override\n-    public boolean hasAttribute(String key) {\n-        Channel channel = getChannel();\n-        if (channel == null) {\n-            return false;\n-        }\n-        return channel.hasAttribute(key);\n-    }\n-\n-    @Override\n-    public void send(Object message, boolean sent) throws RemotingException {\n-        if (needReconnect && !isConnected()) {\n-            connect();\n-        }\n-        Channel channel = getChannel();\n-        //TODO Can the value returned by getChannel() be null? need improvement.\n-        if (channel == null || !channel.isConnected()) {\n-            throw new RemotingException(this, \"message can not send, because channel is closed . url:\" + getUrl());\n-        }\n-        channel.send(message, sent);\n-    }\n-\n-    protected void connect() throws RemotingException {\n-        connectLock.lock();\n-\n-        try {\n-            if (isConnected()) {\n-                return;\n-            }\n-\n-            if (isClosed() || isClosing()) {\n-                logger.warn(\"No need to connect to server \" + getRemoteAddress() + \" from \" + getClass().getSimpleName() + \" \"\n-                        + NetUtils.getLocalHost() + \" using dubbo version \" + Version.getVersion() + \", cause: client status is closed or closing.\");\n-                return;\n-            }\n-\n-            doConnect();\n-\n-            if (!isConnected()) {\n-                throw new RemotingException(this, \"Failed connect to server \" + getRemoteAddress() + \" from \" + getClass().getSimpleName() + \" \"\n-                                + NetUtils.getLocalHost() + \" using dubbo version \" + Version.getVersion()\n-                                + \", cause: Connect wait timeout: \" + getConnectTimeout() + \"ms.\");\n-\n-            } else {\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(\"Successed connect to server \" + getRemoteAddress() + \" from \" + getClass().getSimpleName() + \" \"\n-                                    + NetUtils.getLocalHost() + \" using dubbo version \" + Version.getVersion()\n-                                    + \", channel is \" + this.getChannel());\n-                }\n-            }\n-\n-        } catch (RemotingException e) {\n-            throw e;\n-\n-        } catch (Throwable e) {\n-            throw new RemotingException(this, \"Failed connect to server \" + getRemoteAddress() + \" from \" + getClass().getSimpleName() + \" \"\n-                            + NetUtils.getLocalHost() + \" using dubbo version \" + Version.getVersion()\n-                            + \", cause: \" + e.getMessage(), e);\n-\n-        } finally {\n-            connectLock.unlock();\n-        }\n-    }\n-\n-    public void disconnect() {\n-        connectLock.lock();\n-        try {\n-            try {\n-                Channel channel = getChannel();\n-                if (channel != null) {\n-                    channel.close();\n-                }\n-            } catch (Throwable e) {\n-                logger.warn(e.getMessage(), e);\n-            }\n-            try {\n-                doDisConnect();\n-            } catch (Throwable e) {\n-                logger.warn(e.getMessage(), e);\n-            }\n-        } finally {\n-            connectLock.unlock();\n-        }\n-    }\n-\n-    @Override\n-    public void reconnect() throws RemotingException {\n-        if (!isConnected()) {\n-            connectLock.lock();\n-            try {\n-                if (!isConnected()) {\n-                    disconnect();\n-                    connect();\n-                }\n-            } finally {\n-                connectLock.unlock();\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public void close() {\n-        if (isClosed()) {\n-            logger.warn(\"No need to close connection to server \" + getRemoteAddress() + \" from \" + getClass().getSimpleName() + \" \" + NetUtils.getLocalHost() + \" using dubbo version \" + Version.getVersion() + \", cause: the client status is closed.\");\n-            return;\n-        }\n-\n-        connectLock.lock();\n-        try {\n-            if (isClosed()) {\n-                logger.warn(\"No need to close connection to server \" + getRemoteAddress() + \" from \" + getClass().getSimpleName() + \" \" + NetUtils.getLocalHost() + \" using dubbo version \" + Version.getVersion() + \", cause: the client status is closed.\");\n-                return;\n-            }\n-\n-            try {\n-                super.close();\n-            } catch (Throwable e) {\n-                logger.warn(e.getMessage(), e);\n-            }\n-\n-            try {\n-                disconnect();\n-            } catch (Throwable e) {\n-                logger.warn(e.getMessage(), e);\n-            }\n-\n-            try {\n-                doClose();\n-            } catch (Throwable e) {\n-                logger.warn(e.getMessage(), e);\n-            }\n-\n-        } finally {\n-            connectLock.unlock();\n-        }\n-    }\n-\n-    @Override\n-    public void close(int timeout) {\n-        close();\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return getClass().getName() + \" [\" + getLocalAddress() + \" -> \" + getRemoteAddress() + \"]\";\n-    }\n-\n-    /**\n-     * Open client.\n-     *\n-     * @throws Throwable\n-     */\n-    protected abstract void doOpen() throws Throwable;\n-\n-    /**\n-     * Close client.\n-     *\n-     * @throws Throwable\n-     */\n-    protected abstract void doClose() throws Throwable;\n-\n-    /**\n-     * Connect to server.\n-     *\n-     * @throws Throwable\n-     */\n-    protected abstract void doConnect() throws Throwable;\n-\n-    /**\n-     * disConnect to server.\n-     *\n-     * @throws Throwable\n-     */\n-    protected abstract void doDisConnect() throws Throwable;\n-\n-    /**\n-     * Get the connected channel.\n-     *\n-     * @return channel\n-     */\n-    protected abstract Channel getChannel();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.Version;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.threadpool.manager.ExecutorRepository;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.Client;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.ChannelHandlers;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.locks.Lock;\r\n+import java.util.concurrent.locks.ReentrantLock;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_CLIENT_THREADPOOL;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.THREADPOOL_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.THREAD_NAME_KEY;\r\n+\r\n+/**\r\n+ * AbstractClient\r\n+ */\r\n+public abstract class AbstractClient extends AbstractEndpoint implements Client {\r\n+\r\n+    protected static final String CLIENT_THREAD_POOL_NAME = \"DubboClientHandler\";\r\n+    private static final Logger logger = LoggerFactory.getLogger(AbstractClient.class);\r\n+    private final Lock connectLock = new ReentrantLock();\r\n+    private final boolean needReconnect;\r\n+    //issue-7054:Consumer's executor is sharing globally.\r\n+    protected volatile ExecutorService executor;\r\n+    private ExecutorRepository executorRepository = ExtensionLoader.getExtensionLoader(ExecutorRepository.class).getDefaultExtension();\r\n+\r\n+    public AbstractClient(URL url, ChannelHandler handler) throws RemotingException {\r\n+        super(url, handler);\r\n+\r\n+        needReconnect = url.getParameter(Constants.SEND_RECONNECT_KEY, false);\r\n+\r\n+        initExecutor(url);\r\n+\r\n+        try {\r\n+            doOpen();\r\n+        } catch (Throwable t) {\r\n+            close();\r\n+            throw new RemotingException(url.toInetSocketAddress(), null,\r\n+                    \"Failed to start \" + getClass().getSimpleName() + \" \" + NetUtils.getLocalAddress()\r\n+                            + \" connect to the server \" + getRemoteAddress() + \", cause: \" + t.getMessage(), t);\r\n+        }\r\n+\r\n+        try {\r\n+            // connect.\r\n+            connect();\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"Start \" + getClass().getSimpleName() + \" \" + NetUtils.getLocalAddress() + \" connect to the server \" + getRemoteAddress());\r\n+            }\r\n+        } catch (RemotingException t) {\r\n+            if (url.getParameter(Constants.CHECK_KEY, true)) {\r\n+                close();\r\n+                throw t;\r\n+            } else {\r\n+                logger.warn(\"Failed to start \" + getClass().getSimpleName() + \" \" + NetUtils.getLocalAddress()\r\n+                        + \" connect to the server \" + getRemoteAddress() + \" (check == false, ignore and retry later!), cause: \" + t.getMessage(), t);\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            close();\r\n+            throw new RemotingException(url.toInetSocketAddress(), null,\r\n+                    \"Failed to start \" + getClass().getSimpleName() + \" \" + NetUtils.getLocalAddress()\r\n+                            + \" connect to the server \" + getRemoteAddress() + \", cause: \" + t.getMessage(), t);\r\n+        }\r\n+    }\r\n+\r\n+    private void initExecutor(URL url) {\r\n+        //issue-7054:Consumer's executor is sharing globally, thread name not require provider ip.\r\n+        url = url.addParameter(THREAD_NAME_KEY, CLIENT_THREAD_POOL_NAME);\r\n+        url = url.addParameterIfAbsent(THREADPOOL_KEY, DEFAULT_CLIENT_THREADPOOL);\r\n+        executor = executorRepository.createExecutorIfAbsent(url);\r\n+    }\r\n+\r\n+    protected static ChannelHandler wrapChannelHandler(URL url, ChannelHandler handler) {\r\n+        return ChannelHandlers.wrap(handler, url);\r\n+    }\r\n+\r\n+    public InetSocketAddress getConnectAddress() {\r\n+        return new InetSocketAddress(NetUtils.filterLocalHost(getUrl().getHost()), getUrl().getPort());\r\n+    }\r\n+\r\n+    @Override\r\n+    public InetSocketAddress getRemoteAddress() {\r\n+        Channel channel = getChannel();\r\n+        if (channel == null) {\r\n+            return getUrl().toInetSocketAddress();\r\n+        }\r\n+        return channel.getRemoteAddress();\r\n+    }\r\n+\r\n+    @Override\r\n+    public InetSocketAddress getLocalAddress() {\r\n+        Channel channel = getChannel();\r\n+        if (channel == null) {\r\n+            return InetSocketAddress.createUnresolved(NetUtils.getLocalHost(), 0);\r\n+        }\r\n+        return channel.getLocalAddress();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isConnected() {\r\n+        Channel channel = getChannel();\r\n+        if (channel == null) {\r\n+            return false;\r\n+        }\r\n+        return channel.isConnected();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getAttribute(String key) {\r\n+        Channel channel = getChannel();\r\n+        if (channel == null) {\r\n+            return null;\r\n+        }\r\n+        return channel.getAttribute(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setAttribute(String key, Object value) {\r\n+        Channel channel = getChannel();\r\n+        if (channel == null) {\r\n+            return;\r\n+        }\r\n+        channel.setAttribute(key, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeAttribute(String key) {\r\n+        Channel channel = getChannel();\r\n+        if (channel == null) {\r\n+            return;\r\n+        }\r\n+        channel.removeAttribute(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean hasAttribute(String key) {\r\n+        Channel channel = getChannel();\r\n+        if (channel == null) {\r\n+            return false;\r\n+        }\r\n+        return channel.hasAttribute(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void send(Object message, boolean sent) throws RemotingException {\r\n+        if (needReconnect && !isConnected()) {\r\n+            connect();\r\n+        }\r\n+        Channel channel = getChannel();\r\n+        //TODO Can the value returned by getChannel() be null? need improvement.\r\n+        if (channel == null || !channel.isConnected()) {\r\n+            throw new RemotingException(this, \"message can not send, because channel is closed . url:\" + getUrl());\r\n+        }\r\n+        channel.send(message, sent);\r\n+    }\r\n+\r\n+    protected void connect() throws RemotingException {\r\n+        connectLock.lock();\r\n+\r\n+        try {\r\n+            if (isConnected()) {\r\n+                return;\r\n+            }\r\n+\r\n+            if (isClosed() || isClosing()) {\r\n+                logger.warn(\"No need to connect to server \" + getRemoteAddress() + \" from \" + getClass().getSimpleName() + \" \"\r\n+                        + NetUtils.getLocalHost() + \" using dubbo version \" + Version.getVersion() + \", cause: client status is closed or closing.\");\r\n+                return;\r\n+            }\r\n+\r\n+            doConnect();\r\n+\r\n+            if (!isConnected()) {\r\n+                throw new RemotingException(this, \"Failed connect to server \" + getRemoteAddress() + \" from \" + getClass().getSimpleName() + \" \"\r\n+                                + NetUtils.getLocalHost() + \" using dubbo version \" + Version.getVersion()\r\n+                                + \", cause: Connect wait timeout: \" + getConnectTimeout() + \"ms.\");\r\n+\r\n+            } else {\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(\"Successed connect to server \" + getRemoteAddress() + \" from \" + getClass().getSimpleName() + \" \"\r\n+                                    + NetUtils.getLocalHost() + \" using dubbo version \" + Version.getVersion()\r\n+                                    + \", channel is \" + this.getChannel());\r\n+                }\r\n+            }\r\n+\r\n+        } catch (RemotingException e) {\r\n+            throw e;\r\n+\r\n+        } catch (Throwable e) {\r\n+            throw new RemotingException(this, \"Failed connect to server \" + getRemoteAddress() + \" from \" + getClass().getSimpleName() + \" \"\r\n+                            + NetUtils.getLocalHost() + \" using dubbo version \" + Version.getVersion()\r\n+                            + \", cause: \" + e.getMessage(), e);\r\n+\r\n+        } finally {\r\n+            connectLock.unlock();\r\n+        }\r\n+    }\r\n+\r\n+    public void disconnect() {\r\n+        connectLock.lock();\r\n+        try {\r\n+            try {\r\n+                Channel channel = getChannel();\r\n+                if (channel != null) {\r\n+                    channel.close();\r\n+                }\r\n+            } catch (Throwable e) {\r\n+                logger.warn(e.getMessage(), e);\r\n+            }\r\n+            try {\r\n+                doDisConnect();\r\n+            } catch (Throwable e) {\r\n+                logger.warn(e.getMessage(), e);\r\n+            }\r\n+        } finally {\r\n+            connectLock.unlock();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void reconnect() throws RemotingException {\r\n+        if (!isConnected()) {\r\n+            connectLock.lock();\r\n+            try {\r\n+                if (!isConnected()) {\r\n+                    disconnect();\r\n+                    connect();\r\n+                }\r\n+            } finally {\r\n+                connectLock.unlock();\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close() {\r\n+        if (isClosed()) {\r\n+            logger.warn(\"No need to close connection to server \" + getRemoteAddress() + \" from \" + getClass().getSimpleName() + \" \" + NetUtils.getLocalHost() + \" using dubbo version \" + Version.getVersion() + \", cause: the client status is closed.\");\r\n+            return;\r\n+        }\r\n+\r\n+        connectLock.lock();\r\n+        try {\r\n+            if (isClosed()) {\r\n+                logger.warn(\"No need to close connection to server \" + getRemoteAddress() + \" from \" + getClass().getSimpleName() + \" \" + NetUtils.getLocalHost() + \" using dubbo version \" + Version.getVersion() + \", cause: the client status is closed.\");\r\n+                return;\r\n+            }\r\n+\r\n+            try {\r\n+                super.close();\r\n+            } catch (Throwable e) {\r\n+                logger.warn(e.getMessage(), e);\r\n+            }\r\n+\r\n+            try {\r\n+                disconnect();\r\n+            } catch (Throwable e) {\r\n+                logger.warn(e.getMessage(), e);\r\n+            }\r\n+\r\n+            try {\r\n+                doClose();\r\n+            } catch (Throwable e) {\r\n+                logger.warn(e.getMessage(), e);\r\n+            }\r\n+\r\n+        } finally {\r\n+            connectLock.unlock();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close(int timeout) {\r\n+        close();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return getClass().getName() + \" [\" + getLocalAddress() + \" -> \" + getRemoteAddress() + \"]\";\r\n+    }\r\n+\r\n+    /**\r\n+     * Open client.\r\n+     *\r\n+     * @throws Throwable\r\n+     */\r\n+    protected abstract void doOpen() throws Throwable;\r\n+\r\n+    /**\r\n+     * Close client.\r\n+     *\r\n+     * @throws Throwable\r\n+     */\r\n+    protected abstract void doClose() throws Throwable;\r\n+\r\n+    /**\r\n+     * Connect to server.\r\n+     *\r\n+     * @throws Throwable\r\n+     */\r\n+    protected abstract void doConnect() throws Throwable;\r\n+\r\n+    /**\r\n+     * disConnect to server.\r\n+     *\r\n+     * @throws Throwable\r\n+     */\r\n+    protected abstract void doDisConnect() throws Throwable;\r\n+\r\n+    /**\r\n+     * Get the connected channel.\r\n+     *\r\n+     * @return channel\r\n+     */\r\n+    protected abstract Channel getChannel();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/AbstractCodec.java", "source2": "org/apache/dubbo/remoting/transport/AbstractCodec.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,107 +1,107 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.serialize.Serialization;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.Codec2;\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.remoting.exchange.Request;\n-import org.apache.dubbo.remoting.exchange.Response;\n-\n-import java.io.IOException;\n-import java.net.InetSocketAddress;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\n-\n-/**\n- * AbstractCodec\n- */\n-public abstract class AbstractCodec implements Codec2 {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(AbstractCodec.class);\n-\n-    private static final String CLIENT_SIDE = \"client\";\n-\n-    private static final String SERVER_SIDE = \"server\";\n-\n-    protected static void checkPayload(Channel channel, long size) throws IOException {\n-        int payload = getPayload(channel);\n-        boolean overPayload = isOverPayload(payload, size);\n-        if (overPayload) {\n-            ExceedPayloadLimitException e = new ExceedPayloadLimitException(\n-                    \"Data length too large: \" + size + \", max payload: \" + payload + \", channel: \" + channel);\n-            logger.error(e);\n-            throw e;\n-        }\n-    }\n-\n-    protected static int getPayload(Channel channel) {\n-        int payload = Constants.DEFAULT_PAYLOAD;\n-        if (channel != null && channel.getUrl() != null) {\n-            payload = channel.getUrl().getParameter(Constants.PAYLOAD_KEY, Constants.DEFAULT_PAYLOAD);\n-        }\n-        return payload;\n-    }\n-\n-    protected static boolean isOverPayload(int payload, long size) {\n-        if (payload > 0 && size > payload) {\n-            return true;\n-        }\n-        return false;\n-    }\n-\n-    protected Serialization getSerialization(Channel channel, Request req) {\n-        return CodecSupport.getSerialization(channel.getUrl());\n-    }\n-\n-    protected Serialization getSerialization(Channel channel, Response res) {\n-        return CodecSupport.getSerialization(channel.getUrl());\n-    }\n-\n-    protected Serialization getSerialization(Channel channel) {\n-        return CodecSupport.getSerialization(channel.getUrl());\n-    }\n-\n-    protected boolean isClientSide(Channel channel) {\n-        String side = (String) channel.getAttribute(SIDE_KEY);\n-        if (CLIENT_SIDE.equals(side)) {\n-            return true;\n-        } else if (SERVER_SIDE.equals(side)) {\n-            return false;\n-        } else {\n-            InetSocketAddress address = channel.getRemoteAddress();\n-            URL url = channel.getUrl();\n-            boolean isClient = url.getPort() == address.getPort()\n-                && NetUtils.filterLocalHost(url.getIp()).equals(\n-                NetUtils.filterLocalHost(address.getAddress()\n-                    .getHostAddress()));\n-            channel.setAttribute(SIDE_KEY, isClient ? CLIENT_SIDE\n-                : SERVER_SIDE);\n-            return isClient;\n-        }\n-    }\n-\n-    protected boolean isServerSide(Channel channel) {\n-        return !isClientSide(channel);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.Codec2;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.remoting.exchange.Request;\r\n+import org.apache.dubbo.remoting.exchange.Response;\r\n+\r\n+import java.io.IOException;\r\n+import java.net.InetSocketAddress;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\r\n+\r\n+/**\r\n+ * AbstractCodec\r\n+ */\r\n+public abstract class AbstractCodec implements Codec2 {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(AbstractCodec.class);\r\n+\r\n+    private static final String CLIENT_SIDE = \"client\";\r\n+\r\n+    private static final String SERVER_SIDE = \"server\";\r\n+\r\n+    protected static void checkPayload(Channel channel, long size) throws IOException {\r\n+        int payload = getPayload(channel);\r\n+        boolean overPayload = isOverPayload(payload, size);\r\n+        if (overPayload) {\r\n+            ExceedPayloadLimitException e = new ExceedPayloadLimitException(\r\n+                    \"Data length too large: \" + size + \", max payload: \" + payload + \", channel: \" + channel);\r\n+            logger.error(e);\r\n+            throw e;\r\n+        }\r\n+    }\r\n+\r\n+    protected static int getPayload(Channel channel) {\r\n+        int payload = Constants.DEFAULT_PAYLOAD;\r\n+        if (channel != null && channel.getUrl() != null) {\r\n+            payload = channel.getUrl().getParameter(Constants.PAYLOAD_KEY, Constants.DEFAULT_PAYLOAD);\r\n+        }\r\n+        return payload;\r\n+    }\r\n+\r\n+    protected static boolean isOverPayload(int payload, long size) {\r\n+        if (payload > 0 && size > payload) {\r\n+            return true;\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    protected Serialization getSerialization(Channel channel, Request req) {\r\n+        return CodecSupport.getSerialization(channel.getUrl());\r\n+    }\r\n+\r\n+    protected Serialization getSerialization(Channel channel, Response res) {\r\n+        return CodecSupport.getSerialization(channel.getUrl());\r\n+    }\r\n+\r\n+    protected Serialization getSerialization(Channel channel) {\r\n+        return CodecSupport.getSerialization(channel.getUrl());\r\n+    }\r\n+\r\n+    protected boolean isClientSide(Channel channel) {\r\n+        String side = (String) channel.getAttribute(SIDE_KEY);\r\n+        if (CLIENT_SIDE.equals(side)) {\r\n+            return true;\r\n+        } else if (SERVER_SIDE.equals(side)) {\r\n+            return false;\r\n+        } else {\r\n+            InetSocketAddress address = channel.getRemoteAddress();\r\n+            URL url = channel.getUrl();\r\n+            boolean isClient = url.getPort() == address.getPort()\r\n+                && NetUtils.filterLocalHost(url.getIp()).equals(\r\n+                NetUtils.filterLocalHost(address.getAddress()\r\n+                    .getHostAddress()));\r\n+            channel.setAttribute(SIDE_KEY, isClient ? CLIENT_SIDE\r\n+                : SERVER_SIDE);\r\n+            return isClient;\r\n+        }\r\n+    }\r\n+\r\n+    protected boolean isServerSide(Channel channel) {\r\n+        return !isClientSide(channel);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/AbstractEndpoint.java", "source2": "org/apache/dubbo/remoting/transport/AbstractEndpoint.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,115 +1,115 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport;\n-\n-import org.apache.dubbo.common.Resetable;\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.Codec;\n-import org.apache.dubbo.remoting.Codec2;\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.remoting.transport.codec.CodecAdapter;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-\n-/**\n- * AbstractEndpoint\n- */\n-public abstract class AbstractEndpoint extends AbstractPeer implements Resetable {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(AbstractEndpoint.class);\n-\n-    private Codec2 codec;\n-\n-    private int timeout;\n-\n-    private int connectTimeout;\n-\n-    public AbstractEndpoint(URL url, ChannelHandler handler) {\n-        super(url, handler);\n-        this.codec = getChannelCodec(url);\n-        this.timeout = url.getPositiveParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT);\n-        this.connectTimeout = url.getPositiveParameter(Constants.CONNECT_TIMEOUT_KEY, Constants.DEFAULT_CONNECT_TIMEOUT);\n-    }\n-\n-    protected static Codec2 getChannelCodec(URL url) {\n-        String codecName = url.getProtocol(); // codec extension name must stay the same with protocol name\n-        if (ExtensionLoader.getExtensionLoader(Codec2.class).hasExtension(codecName)) {\n-            return ExtensionLoader.getExtensionLoader(Codec2.class).getExtension(codecName);\n-        } else {\n-            return new CodecAdapter(ExtensionLoader.getExtensionLoader(Codec.class)\n-                    .getExtension(codecName));\n-        }\n-    }\n-\n-    @Override\n-    public void reset(URL url) {\n-        if (isClosed()) {\n-            throw new IllegalStateException(\"Failed to reset parameters \"\n-                    + url + \", cause: Channel closed. channel: \" + getLocalAddress());\n-        }\n-        try {\n-            if (url.hasParameter(TIMEOUT_KEY)) {\n-                int t = url.getParameter(TIMEOUT_KEY, 0);\n-                if (t > 0) {\n-                    this.timeout = t;\n-                }\n-            }\n-        } catch (Throwable t) {\n-            logger.error(t.getMessage(), t);\n-        }\n-        try {\n-            if (url.hasParameter(Constants.CONNECT_TIMEOUT_KEY)) {\n-                int t = url.getParameter(Constants.CONNECT_TIMEOUT_KEY, 0);\n-                if (t > 0) {\n-                    this.connectTimeout = t;\n-                }\n-            }\n-        } catch (Throwable t) {\n-            logger.error(t.getMessage(), t);\n-        }\n-        try {\n-            if (url.hasParameter(Constants.CODEC_KEY)) {\n-                this.codec = getChannelCodec(url);\n-            }\n-        } catch (Throwable t) {\n-            logger.error(t.getMessage(), t);\n-        }\n-    }\n-\n-    @Deprecated\n-    public void reset(org.apache.dubbo.common.Parameters parameters) {\n-        reset(getUrl().addParameters(parameters.getParameters()));\n-    }\n-\n-    protected Codec2 getCodec() {\n-        return codec;\n-    }\n-\n-    protected int getTimeout() {\n-        return timeout;\n-    }\n-\n-    protected int getConnectTimeout() {\n-        return connectTimeout;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport;\r\n+\r\n+import org.apache.dubbo.common.Resetable;\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.Codec;\r\n+import org.apache.dubbo.remoting.Codec2;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.remoting.transport.codec.CodecAdapter;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+\r\n+/**\r\n+ * AbstractEndpoint\r\n+ */\r\n+public abstract class AbstractEndpoint extends AbstractPeer implements Resetable {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(AbstractEndpoint.class);\r\n+\r\n+    private Codec2 codec;\r\n+\r\n+    private int timeout;\r\n+\r\n+    private int connectTimeout;\r\n+\r\n+    public AbstractEndpoint(URL url, ChannelHandler handler) {\r\n+        super(url, handler);\r\n+        this.codec = getChannelCodec(url);\r\n+        this.timeout = url.getPositiveParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT);\r\n+        this.connectTimeout = url.getPositiveParameter(Constants.CONNECT_TIMEOUT_KEY, Constants.DEFAULT_CONNECT_TIMEOUT);\r\n+    }\r\n+\r\n+    protected static Codec2 getChannelCodec(URL url) {\r\n+        String codecName = url.getProtocol(); // codec extension name must stay the same with protocol name\r\n+        if (ExtensionLoader.getExtensionLoader(Codec2.class).hasExtension(codecName)) {\r\n+            return ExtensionLoader.getExtensionLoader(Codec2.class).getExtension(codecName);\r\n+        } else {\r\n+            return new CodecAdapter(ExtensionLoader.getExtensionLoader(Codec.class)\r\n+                    .getExtension(codecName));\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void reset(URL url) {\r\n+        if (isClosed()) {\r\n+            throw new IllegalStateException(\"Failed to reset parameters \"\r\n+                    + url + \", cause: Channel closed. channel: \" + getLocalAddress());\r\n+        }\r\n+        try {\r\n+            if (url.hasParameter(TIMEOUT_KEY)) {\r\n+                int t = url.getParameter(TIMEOUT_KEY, 0);\r\n+                if (t > 0) {\r\n+                    this.timeout = t;\r\n+                }\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            logger.error(t.getMessage(), t);\r\n+        }\r\n+        try {\r\n+            if (url.hasParameter(Constants.CONNECT_TIMEOUT_KEY)) {\r\n+                int t = url.getParameter(Constants.CONNECT_TIMEOUT_KEY, 0);\r\n+                if (t > 0) {\r\n+                    this.connectTimeout = t;\r\n+                }\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            logger.error(t.getMessage(), t);\r\n+        }\r\n+        try {\r\n+            if (url.hasParameter(Constants.CODEC_KEY)) {\r\n+                this.codec = getChannelCodec(url);\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            logger.error(t.getMessage(), t);\r\n+        }\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void reset(org.apache.dubbo.common.Parameters parameters) {\r\n+        reset(getUrl().addParameters(parameters.getParameters()));\r\n+    }\r\n+\r\n+    protected Codec2 getCodec() {\r\n+        return codec;\r\n+    }\r\n+\r\n+    protected int getTimeout() {\r\n+        return timeout;\r\n+    }\r\n+\r\n+    protected int getConnectTimeout() {\r\n+        return connectTimeout;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/AbstractServer.java", "source2": "org/apache/dubbo/remoting/transport/AbstractServer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,192 +1,192 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.threadpool.manager.ExecutorRepository;\n-import org.apache.dubbo.common.utils.ExecutorUtil;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.RemotingServer;\n-\n-import java.net.InetSocketAddress;\n-import java.util.Collection;\n-import java.util.concurrent.ExecutorService;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_VALUE;\n-import static org.apache.dubbo.remoting.Constants.ACCEPTS_KEY;\n-import static org.apache.dubbo.remoting.Constants.DEFAULT_ACCEPTS;\n-import static org.apache.dubbo.remoting.Constants.DEFAULT_IDLE_TIMEOUT;\n-import static org.apache.dubbo.remoting.Constants.IDLE_TIMEOUT_KEY;\n-\n-/**\n- * AbstractServer\n- */\n-public abstract class AbstractServer extends AbstractEndpoint implements RemotingServer {\n-\n-    protected static final String SERVER_THREAD_POOL_NAME = \"DubboServerHandler\";\n-    private static final Logger logger = LoggerFactory.getLogger(AbstractServer.class);\n-    ExecutorService executor;\n-    private InetSocketAddress localAddress;\n-    private InetSocketAddress bindAddress;\n-    private int accepts;\n-    private int idleTimeout;\n-\n-    private ExecutorRepository executorRepository = ExtensionLoader.getExtensionLoader(ExecutorRepository.class).getDefaultExtension();\n-\n-    public AbstractServer(URL url, ChannelHandler handler) throws RemotingException {\n-        super(url, handler);\n-        localAddress = getUrl().toInetSocketAddress();\n-\n-        String bindIp = getUrl().getParameter(Constants.BIND_IP_KEY, getUrl().getHost());\n-        int bindPort = getUrl().getParameter(Constants.BIND_PORT_KEY, getUrl().getPort());\n-        if (url.getParameter(ANYHOST_KEY, false) || NetUtils.isInvalidLocalHost(bindIp)) {\n-            bindIp = ANYHOST_VALUE;\n-        }\n-        bindAddress = new InetSocketAddress(bindIp, bindPort);\n-        this.accepts = url.getParameter(ACCEPTS_KEY, DEFAULT_ACCEPTS);\n-        this.idleTimeout = url.getParameter(IDLE_TIMEOUT_KEY, DEFAULT_IDLE_TIMEOUT);\n-        try {\n-            doOpen();\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"Start \" + getClass().getSimpleName() + \" bind \" + getBindAddress() + \", export \" + getLocalAddress());\n-            }\n-        } catch (Throwable t) {\n-            throw new RemotingException(url.toInetSocketAddress(), null, \"Failed to bind \" + getClass().getSimpleName()\n-                    + \" on \" + getLocalAddress() + \", cause: \" + t.getMessage(), t);\n-        }\n-        executor = executorRepository.createExecutorIfAbsent(url);\n-    }\n-\n-    protected abstract void doOpen() throws Throwable;\n-\n-    protected abstract void doClose() throws Throwable;\n-\n-    @Override\n-    public void reset(URL url) {\n-        if (url == null) {\n-            return;\n-        }\n-        try {\n-            if (url.hasParameter(ACCEPTS_KEY)) {\n-                int a = url.getParameter(ACCEPTS_KEY, 0);\n-                if (a > 0) {\n-                    this.accepts = a;\n-                }\n-            }\n-        } catch (Throwable t) {\n-            logger.error(t.getMessage(), t);\n-        }\n-        try {\n-            if (url.hasParameter(IDLE_TIMEOUT_KEY)) {\n-                int t = url.getParameter(IDLE_TIMEOUT_KEY, 0);\n-                if (t > 0) {\n-                    this.idleTimeout = t;\n-                }\n-            }\n-        } catch (Throwable t) {\n-            logger.error(t.getMessage(), t);\n-        }\n-        executorRepository.updateThreadpool(url, executor);\n-        super.setUrl(getUrl().addParameters(url.getParameters()));\n-    }\n-\n-    @Override\n-    public void send(Object message, boolean sent) throws RemotingException {\n-        Collection<Channel> channels = getChannels();\n-        for (Channel channel : channels) {\n-            if (channel.isConnected()) {\n-                channel.send(message, sent);\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public void close() {\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"Close \" + getClass().getSimpleName() + \" bind \" + getBindAddress() + \", export \" + getLocalAddress());\n-        }\n-        ExecutorUtil.shutdownNow(executor, 100);\n-        try {\n-            super.close();\n-        } catch (Throwable e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-        try {\n-            doClose();\n-        } catch (Throwable e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-    }\n-\n-    @Override\n-    public void close(int timeout) {\n-        ExecutorUtil.gracefulShutdown(executor, timeout);\n-        close();\n-    }\n-\n-    @Override\n-    public InetSocketAddress getLocalAddress() {\n-        return localAddress;\n-    }\n-\n-    public InetSocketAddress getBindAddress() {\n-        return bindAddress;\n-    }\n-\n-    public int getAccepts() {\n-        return accepts;\n-    }\n-\n-    public int getIdleTimeout() {\n-        return idleTimeout;\n-    }\n-\n-    @Override\n-    public void connected(Channel ch) throws RemotingException {\n-        // If the server has entered the shutdown process, reject any new connection\n-        if (this.isClosing() || this.isClosed()) {\n-            logger.warn(\"Close new channel \" + ch + \", cause: server is closing or has been closed. For example, receive a new connect request while in shutdown process.\");\n-            ch.close();\n-            return;\n-        }\n-\n-        if (accepts > 0 && getChannels().size() > accepts) {\n-            logger.error(\"Close channel \" + ch + \", cause: The server \" + ch.getLocalAddress() + \" connections greater than max config \" + accepts);\n-            ch.close();\n-            return;\n-        }\n-        super.connected(ch);\n-    }\n-\n-    @Override\n-    public void disconnected(Channel ch) throws RemotingException {\n-        Collection<Channel> channels = getChannels();\n-        if (channels.isEmpty()) {\n-            logger.warn(\"All clients has disconnected from \" + ch.getLocalAddress() + \". You can graceful shutdown now.\");\n-        }\n-        super.disconnected(ch);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.threadpool.manager.ExecutorRepository;\r\n+import org.apache.dubbo.common.utils.ExecutorUtil;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.RemotingServer;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+import java.util.Collection;\r\n+import java.util.concurrent.ExecutorService;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_VALUE;\r\n+import static org.apache.dubbo.remoting.Constants.ACCEPTS_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.DEFAULT_ACCEPTS;\r\n+import static org.apache.dubbo.remoting.Constants.DEFAULT_IDLE_TIMEOUT;\r\n+import static org.apache.dubbo.remoting.Constants.IDLE_TIMEOUT_KEY;\r\n+\r\n+/**\r\n+ * AbstractServer\r\n+ */\r\n+public abstract class AbstractServer extends AbstractEndpoint implements RemotingServer {\r\n+\r\n+    protected static final String SERVER_THREAD_POOL_NAME = \"DubboServerHandler\";\r\n+    private static final Logger logger = LoggerFactory.getLogger(AbstractServer.class);\r\n+    ExecutorService executor;\r\n+    private InetSocketAddress localAddress;\r\n+    private InetSocketAddress bindAddress;\r\n+    private int accepts;\r\n+    private int idleTimeout;\r\n+\r\n+    private ExecutorRepository executorRepository = ExtensionLoader.getExtensionLoader(ExecutorRepository.class).getDefaultExtension();\r\n+\r\n+    public AbstractServer(URL url, ChannelHandler handler) throws RemotingException {\r\n+        super(url, handler);\r\n+        localAddress = getUrl().toInetSocketAddress();\r\n+\r\n+        String bindIp = getUrl().getParameter(Constants.BIND_IP_KEY, getUrl().getHost());\r\n+        int bindPort = getUrl().getParameter(Constants.BIND_PORT_KEY, getUrl().getPort());\r\n+        if (url.getParameter(ANYHOST_KEY, false) || NetUtils.isInvalidLocalHost(bindIp)) {\r\n+            bindIp = ANYHOST_VALUE;\r\n+        }\r\n+        bindAddress = new InetSocketAddress(bindIp, bindPort);\r\n+        this.accepts = url.getParameter(ACCEPTS_KEY, DEFAULT_ACCEPTS);\r\n+        this.idleTimeout = url.getParameter(IDLE_TIMEOUT_KEY, DEFAULT_IDLE_TIMEOUT);\r\n+        try {\r\n+            doOpen();\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"Start \" + getClass().getSimpleName() + \" bind \" + getBindAddress() + \", export \" + getLocalAddress());\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            throw new RemotingException(url.toInetSocketAddress(), null, \"Failed to bind \" + getClass().getSimpleName()\r\n+                    + \" on \" + getLocalAddress() + \", cause: \" + t.getMessage(), t);\r\n+        }\r\n+        executor = executorRepository.createExecutorIfAbsent(url);\r\n+    }\r\n+\r\n+    protected abstract void doOpen() throws Throwable;\r\n+\r\n+    protected abstract void doClose() throws Throwable;\r\n+\r\n+    @Override\r\n+    public void reset(URL url) {\r\n+        if (url == null) {\r\n+            return;\r\n+        }\r\n+        try {\r\n+            if (url.hasParameter(ACCEPTS_KEY)) {\r\n+                int a = url.getParameter(ACCEPTS_KEY, 0);\r\n+                if (a > 0) {\r\n+                    this.accepts = a;\r\n+                }\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            logger.error(t.getMessage(), t);\r\n+        }\r\n+        try {\r\n+            if (url.hasParameter(IDLE_TIMEOUT_KEY)) {\r\n+                int t = url.getParameter(IDLE_TIMEOUT_KEY, 0);\r\n+                if (t > 0) {\r\n+                    this.idleTimeout = t;\r\n+                }\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            logger.error(t.getMessage(), t);\r\n+        }\r\n+        executorRepository.updateThreadpool(url, executor);\r\n+        super.setUrl(getUrl().addParameters(url.getParameters()));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void send(Object message, boolean sent) throws RemotingException {\r\n+        Collection<Channel> channels = getChannels();\r\n+        for (Channel channel : channels) {\r\n+            if (channel.isConnected()) {\r\n+                channel.send(message, sent);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close() {\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"Close \" + getClass().getSimpleName() + \" bind \" + getBindAddress() + \", export \" + getLocalAddress());\r\n+        }\r\n+        ExecutorUtil.shutdownNow(executor, 100);\r\n+        try {\r\n+            super.close();\r\n+        } catch (Throwable e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+        try {\r\n+            doClose();\r\n+        } catch (Throwable e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close(int timeout) {\r\n+        ExecutorUtil.gracefulShutdown(executor, timeout);\r\n+        close();\r\n+    }\r\n+\r\n+    @Override\r\n+    public InetSocketAddress getLocalAddress() {\r\n+        return localAddress;\r\n+    }\r\n+\r\n+    public InetSocketAddress getBindAddress() {\r\n+        return bindAddress;\r\n+    }\r\n+\r\n+    public int getAccepts() {\r\n+        return accepts;\r\n+    }\r\n+\r\n+    public int getIdleTimeout() {\r\n+        return idleTimeout;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void connected(Channel ch) throws RemotingException {\r\n+        // If the server has entered the shutdown process, reject any new connection\r\n+        if (this.isClosing() || this.isClosed()) {\r\n+            logger.warn(\"Close new channel \" + ch + \", cause: server is closing or has been closed. For example, receive a new connect request while in shutdown process.\");\r\n+            ch.close();\r\n+            return;\r\n+        }\r\n+\r\n+        if (accepts > 0 && getChannels().size() > accepts) {\r\n+            logger.error(\"Close channel \" + ch + \", cause: The server \" + ch.getLocalAddress() + \" connections greater than max config \" + accepts);\r\n+            ch.close();\r\n+            return;\r\n+        }\r\n+        super.connected(ch);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void disconnected(Channel ch) throws RemotingException {\r\n+        Collection<Channel> channels = getChannels();\r\n+        if (channels.isEmpty()) {\r\n+            logger.warn(\"All clients has disconnected from \" + ch.getLocalAddress() + \". You can graceful shutdown now.\");\r\n+        }\r\n+        super.disconnected(ch);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/CodecSupport.java", "source2": "org/apache/dubbo/remoting/transport/CodecSupport.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,181 +1,181 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.remoting.transport;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.Serialization;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.ProviderModel;\n-import org.apache.dubbo.rpc.model.ServiceRepository;\n-\n-import java.io.ByteArrayOutputStream;\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.util.Arrays;\n-import java.util.HashMap;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-\n-public class CodecSupport {\n-    private static final Logger logger = LoggerFactory.getLogger(CodecSupport.class);\n-    private static Map<Byte, Serialization> ID_SERIALIZATION_MAP = new HashMap<Byte, Serialization>();\n-    private static Map<Byte, String> ID_SERIALIZATIONNAME_MAP = new HashMap<Byte, String>();\n-    private static Map<String, Byte> SERIALIZATIONNAME_ID_MAP = new HashMap<String, Byte>();\n-    // Cache null object serialize results, for heartbeat request/response serialize use.\n-    private static Map<Byte, byte[]> ID_NULLBYTES_MAP = new HashMap<Byte, byte[]>();\n-\n-    private static final ThreadLocal<byte[]> TL_BUFFER = ThreadLocal.withInitial(() -> new byte[1024]);\n-\n-    static {\n-        Set<String> supportedExtensions = ExtensionLoader.getExtensionLoader(Serialization.class).getSupportedExtensions();\n-        for (String name : supportedExtensions) {\n-            Serialization serialization = ExtensionLoader.getExtensionLoader(Serialization.class).getExtension(name);\n-            byte idByte = serialization.getContentTypeId();\n-            if (ID_SERIALIZATION_MAP.containsKey(idByte)) {\n-                logger.error(\"Serialization extension \" + serialization.getClass().getName()\n-                        + \" has duplicate id to Serialization extension \"\n-                        + ID_SERIALIZATION_MAP.get(idByte).getClass().getName()\n-                        + \", ignore this Serialization extension\");\n-                continue;\n-            }\n-            ID_SERIALIZATION_MAP.put(idByte, serialization);\n-            ID_SERIALIZATIONNAME_MAP.put(idByte, name);\n-            SERIALIZATIONNAME_ID_MAP.put(name, idByte);\n-        }\n-    }\n-\n-    private CodecSupport() {\n-    }\n-\n-    public static Serialization getSerializationById(Byte id) {\n-        return ID_SERIALIZATION_MAP.get(id);\n-    }\n-\n-    public static Byte getIDByName(String name) {\n-        return SERIALIZATIONNAME_ID_MAP.get(name);\n-    }\n-\n-    public static Serialization getSerialization(URL url) {\n-        return ExtensionLoader.getExtensionLoader(Serialization.class).getExtension(\n-                url.getParameter(Constants.SERIALIZATION_KEY, Constants.DEFAULT_REMOTING_SERIALIZATION));\n-    }\n-\n-    public static Serialization getSerialization(URL url, Byte id) throws IOException {\n-        Serialization result = getSerializationById(id);\n-        if (result == null) {\n-            throw new IOException(\"Unrecognized serialize type from consumer: \" + id);\n-        }\n-        return result;\n-    }\n-\n-    public static ObjectInput deserialize(URL url, InputStream is, byte proto) throws IOException {\n-        Serialization s = getSerialization(url, proto);\n-        return s.deserialize(url, is);\n-    }\n-\n-    /**\n-     * Get the null object serialize result byte[] of Serialization from the cache,\n-     * if not, generate it first.\n-     *\n-     * @param s Serialization Instances\n-     * @return serialize result of null object\n-     */\n-    public static byte[] getNullBytesOf(Serialization s) {\n-        return ID_NULLBYTES_MAP.computeIfAbsent(s.getContentTypeId(), k -> {\n-            //Pre-generated Null object bytes\n-            ByteArrayOutputStream baos = new ByteArrayOutputStream();\n-            byte[] nullBytes = new byte[0];\n-            try {\n-                ObjectOutput out = s.serialize(null, baos);\n-                out.writeObject(null);\n-                out.flushBuffer();\n-                nullBytes = baos.toByteArray();\n-                baos.close();\n-            } catch (Exception e) {\n-                logger.warn(\"Serialization extension \" + s.getClass().getName() + \" not support serializing null object, return an empty bytes instead.\");\n-            }\n-            return nullBytes;\n-        });\n-    }\n-\n-    /**\n-     * Read all payload to byte[]\n-     *\n-     * @param is\n-     * @return\n-     * @throws IOException\n-     */\n-    public static byte[] getPayload(InputStream is) throws IOException {\n-        ByteArrayOutputStream baos = new ByteArrayOutputStream();\n-        byte[] buffer = getBuffer(is.available());\n-        int len;\n-        while ((len = is.read(buffer)) > -1) {\n-            baos.write(buffer, 0, len);\n-        }\n-        baos.flush();\n-        return baos.toByteArray();\n-    }\n-\n-    private static byte[] getBuffer(int size) {\n-        byte[] bytes = TL_BUFFER.get();\n-        if (size <= bytes.length) {\n-            return bytes;\n-        }\n-        return new byte[size];\n-    }\n-\n-    /**\n-     * Check if payload is null object serialize result byte[] of serialization\n-     *\n-     * @param payload\n-     * @param proto\n-     * @return\n-     */\n-    public static boolean isHeartBeat(byte[] payload, byte proto) {\n-        return Arrays.equals(payload, getNullBytesOf(getSerializationById(proto)));\n-    }\n-\n-    public static void checkSerialization(String path, String version, Byte id) throws IOException {\n-        ServiceRepository repository = ApplicationModel.getServiceRepository();\n-        ProviderModel providerModel = repository.lookupExportedServiceWithoutGroup(path + \":\" + version);\n-        if (providerModel == null) {\n-            if (logger.isWarnEnabled()) {\n-                logger.warn(\"Serialization security check is enabled but cannot work as expected because \" +\n-                        \"there's no matched provider model for path \" + path + \", version \" + version);\n-            }\n-        } else {\n-            List<URL> urls = providerModel.getServiceConfig().getExportedUrls();\n-            if (CollectionUtils.isNotEmpty(urls)) {\n-                URL url = urls.get(0);\n-                String serializationName = url.getParameter(org.apache.dubbo.remoting.Constants.SERIALIZATION_KEY, Constants.DEFAULT_REMOTING_SERIALIZATION);\n-                Byte localId = SERIALIZATIONNAME_ID_MAP.get(serializationName);\n-                if (localId != null && !localId.equals(id)) {\n-                    throw new IOException(\"Unexpected serialization id:\" + id + \" received from network, please check if the peer send the right id.\");\n-                }\n-            }\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.remoting.transport;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.ProviderModel;\r\n+import org.apache.dubbo.rpc.model.ServiceRepository;\r\n+\r\n+import java.io.ByteArrayOutputStream;\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.util.Arrays;\r\n+import java.util.HashMap;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+\r\n+public class CodecSupport {\r\n+    private static final Logger logger = LoggerFactory.getLogger(CodecSupport.class);\r\n+    private static Map<Byte, Serialization> ID_SERIALIZATION_MAP = new HashMap<Byte, Serialization>();\r\n+    private static Map<Byte, String> ID_SERIALIZATIONNAME_MAP = new HashMap<Byte, String>();\r\n+    private static Map<String, Byte> SERIALIZATIONNAME_ID_MAP = new HashMap<String, Byte>();\r\n+    // Cache null object serialize results, for heartbeat request/response serialize use.\r\n+    private static Map<Byte, byte[]> ID_NULLBYTES_MAP = new HashMap<Byte, byte[]>();\r\n+\r\n+    private static final ThreadLocal<byte[]> TL_BUFFER = ThreadLocal.withInitial(() -> new byte[1024]);\r\n+\r\n+    static {\r\n+        Set<String> supportedExtensions = ExtensionLoader.getExtensionLoader(Serialization.class).getSupportedExtensions();\r\n+        for (String name : supportedExtensions) {\r\n+            Serialization serialization = ExtensionLoader.getExtensionLoader(Serialization.class).getExtension(name);\r\n+            byte idByte = serialization.getContentTypeId();\r\n+            if (ID_SERIALIZATION_MAP.containsKey(idByte)) {\r\n+                logger.error(\"Serialization extension \" + serialization.getClass().getName()\r\n+                        + \" has duplicate id to Serialization extension \"\r\n+                        + ID_SERIALIZATION_MAP.get(idByte).getClass().getName()\r\n+                        + \", ignore this Serialization extension\");\r\n+                continue;\r\n+            }\r\n+            ID_SERIALIZATION_MAP.put(idByte, serialization);\r\n+            ID_SERIALIZATIONNAME_MAP.put(idByte, name);\r\n+            SERIALIZATIONNAME_ID_MAP.put(name, idByte);\r\n+        }\r\n+    }\r\n+\r\n+    private CodecSupport() {\r\n+    }\r\n+\r\n+    public static Serialization getSerializationById(Byte id) {\r\n+        return ID_SERIALIZATION_MAP.get(id);\r\n+    }\r\n+\r\n+    public static Byte getIDByName(String name) {\r\n+        return SERIALIZATIONNAME_ID_MAP.get(name);\r\n+    }\r\n+\r\n+    public static Serialization getSerialization(URL url) {\r\n+        return ExtensionLoader.getExtensionLoader(Serialization.class).getExtension(\r\n+                url.getParameter(Constants.SERIALIZATION_KEY, Constants.DEFAULT_REMOTING_SERIALIZATION));\r\n+    }\r\n+\r\n+    public static Serialization getSerialization(URL url, Byte id) throws IOException {\r\n+        Serialization result = getSerializationById(id);\r\n+        if (result == null) {\r\n+            throw new IOException(\"Unrecognized serialize type from consumer: \" + id);\r\n+        }\r\n+        return result;\r\n+    }\r\n+\r\n+    public static ObjectInput deserialize(URL url, InputStream is, byte proto) throws IOException {\r\n+        Serialization s = getSerialization(url, proto);\r\n+        return s.deserialize(url, is);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the null object serialize result byte[] of Serialization from the cache,\r\n+     * if not, generate it first.\r\n+     *\r\n+     * @param s Serialization Instances\r\n+     * @return serialize result of null object\r\n+     */\r\n+    public static byte[] getNullBytesOf(Serialization s) {\r\n+        return ID_NULLBYTES_MAP.computeIfAbsent(s.getContentTypeId(), k -> {\r\n+            //Pre-generated Null object bytes\r\n+            ByteArrayOutputStream baos = new ByteArrayOutputStream();\r\n+            byte[] nullBytes = new byte[0];\r\n+            try {\r\n+                ObjectOutput out = s.serialize(null, baos);\r\n+                out.writeObject(null);\r\n+                out.flushBuffer();\r\n+                nullBytes = baos.toByteArray();\r\n+                baos.close();\r\n+            } catch (Exception e) {\r\n+                logger.warn(\"Serialization extension \" + s.getClass().getName() + \" not support serializing null object, return an empty bytes instead.\");\r\n+            }\r\n+            return nullBytes;\r\n+        });\r\n+    }\r\n+\r\n+    /**\r\n+     * Read all payload to byte[]\r\n+     *\r\n+     * @param is\r\n+     * @return\r\n+     * @throws IOException\r\n+     */\r\n+    public static byte[] getPayload(InputStream is) throws IOException {\r\n+        ByteArrayOutputStream baos = new ByteArrayOutputStream();\r\n+        byte[] buffer = getBuffer(is.available());\r\n+        int len;\r\n+        while ((len = is.read(buffer)) > -1) {\r\n+            baos.write(buffer, 0, len);\r\n+        }\r\n+        baos.flush();\r\n+        return baos.toByteArray();\r\n+    }\r\n+\r\n+    private static byte[] getBuffer(int size) {\r\n+        byte[] bytes = TL_BUFFER.get();\r\n+        if (size <= bytes.length) {\r\n+            return bytes;\r\n+        }\r\n+        return new byte[size];\r\n+    }\r\n+\r\n+    /**\r\n+     * Check if payload is null object serialize result byte[] of serialization\r\n+     *\r\n+     * @param payload\r\n+     * @param proto\r\n+     * @return\r\n+     */\r\n+    public static boolean isHeartBeat(byte[] payload, byte proto) {\r\n+        return Arrays.equals(payload, getNullBytesOf(getSerializationById(proto)));\r\n+    }\r\n+\r\n+    public static void checkSerialization(String path, String version, Byte id) throws IOException {\r\n+        ServiceRepository repository = ApplicationModel.getServiceRepository();\r\n+        ProviderModel providerModel = repository.lookupExportedServiceWithoutGroup(path + \":\" + version);\r\n+        if (providerModel == null) {\r\n+            if (logger.isWarnEnabled()) {\r\n+                logger.warn(\"Serialization security check is enabled but cannot work as expected because \" +\r\n+                        \"there's no matched provider model for path \" + path + \", version \" + version);\r\n+            }\r\n+        } else {\r\n+            List<URL> urls = providerModel.getServiceConfig().getExportedUrls();\r\n+            if (CollectionUtils.isNotEmpty(urls)) {\r\n+                URL url = urls.get(0);\r\n+                String serializationName = url.getParameter(org.apache.dubbo.remoting.Constants.SERIALIZATION_KEY, Constants.DEFAULT_REMOTING_SERIALIZATION);\r\n+                Byte localId = SERIALIZATIONNAME_ID_MAP.get(serializationName);\r\n+                if (localId != null && !localId.equals(id)) {\r\n+                    throw new IOException(\"Unexpected serialization id:\" + id + \" received from network, please check if the peer send the right id.\");\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/DecodeHandler.java", "source2": "org/apache/dubbo/remoting/transport/DecodeHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,69 +1,69 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.remoting.transport;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.Decodeable;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.exchange.Request;\n-import org.apache.dubbo.remoting.exchange.Response;\n-\n-public class DecodeHandler extends AbstractChannelHandlerDelegate {\n-\n-    private static final Logger log = LoggerFactory.getLogger(DecodeHandler.class);\n-\n-    public DecodeHandler(ChannelHandler handler) {\n-        super(handler);\n-    }\n-\n-    @Override\n-    public void received(Channel channel, Object message) throws RemotingException {\n-        if (message instanceof Decodeable) {\n-            decode(message);\n-        }\n-\n-        if (message instanceof Request) {\n-            decode(((Request) message).getData());\n-        }\n-\n-        if (message instanceof Response) {\n-            decode(((Response) message).getResult());\n-        }\n-\n-        handler.received(channel, message);\n-    }\n-\n-    private void decode(Object message) {\n-        if (message instanceof Decodeable) {\n-            try {\n-                ((Decodeable) message).decode();\n-                if (log.isDebugEnabled()) {\n-                    log.debug(\"Decode decodeable message \" + message.getClass().getName());\n-                }\n-            } catch (Throwable e) {\n-                if (log.isWarnEnabled()) {\n-                    log.warn(\"Call Decodeable.decode failed: \" + e.getMessage(), e);\n-                }\n-            } // ~ end of catch\n-        } // ~ end of if\n-    } // ~ end of method decode\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.remoting.transport;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.Decodeable;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.exchange.Request;\r\n+import org.apache.dubbo.remoting.exchange.Response;\r\n+\r\n+public class DecodeHandler extends AbstractChannelHandlerDelegate {\r\n+\r\n+    private static final Logger log = LoggerFactory.getLogger(DecodeHandler.class);\r\n+\r\n+    public DecodeHandler(ChannelHandler handler) {\r\n+        super(handler);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void received(Channel channel, Object message) throws RemotingException {\r\n+        if (message instanceof Decodeable) {\r\n+            decode(message);\r\n+        }\r\n+\r\n+        if (message instanceof Request) {\r\n+            decode(((Request) message).getData());\r\n+        }\r\n+\r\n+        if (message instanceof Response) {\r\n+            decode(((Response) message).getResult());\r\n+        }\r\n+\r\n+        handler.received(channel, message);\r\n+    }\r\n+\r\n+    private void decode(Object message) {\r\n+        if (message instanceof Decodeable) {\r\n+            try {\r\n+                ((Decodeable) message).decode();\r\n+                if (log.isDebugEnabled()) {\r\n+                    log.debug(\"Decode decodeable message \" + message.getClass().getName());\r\n+                }\r\n+            } catch (Throwable e) {\r\n+                if (log.isWarnEnabled()) {\r\n+                    log.warn(\"Call Decodeable.decode failed: \" + e.getMessage(), e);\r\n+                }\r\n+            } // ~ end of catch\r\n+        } // ~ end of if\r\n+    } // ~ end of method decode\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/dispatcher/WrappedChannelHandler.java", "source2": "org/apache/dubbo/remoting/transport/dispatcher/WrappedChannelHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,149 +1,149 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.dispatcher;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.threadpool.manager.ExecutorRepository;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.exchange.Request;\n-import org.apache.dubbo.remoting.exchange.Response;\n-import org.apache.dubbo.remoting.exchange.support.DefaultFuture;\n-import org.apache.dubbo.remoting.transport.ChannelHandlerDelegate;\n-\n-import java.util.concurrent.ExecutorService;\n-\n-public class WrappedChannelHandler implements ChannelHandlerDelegate {\n-\n-    protected static final Logger logger = LoggerFactory.getLogger(WrappedChannelHandler.class);\n-\n-    protected final ChannelHandler handler;\n-\n-    protected final URL url;\n-\n-    public WrappedChannelHandler(ChannelHandler handler, URL url) {\n-        this.handler = handler;\n-        this.url = url;\n-    }\n-\n-    public void close() {\n-\n-    }\n-\n-    @Override\n-    public void connected(Channel channel) throws RemotingException {\n-        handler.connected(channel);\n-    }\n-\n-    @Override\n-    public void disconnected(Channel channel) throws RemotingException {\n-        handler.disconnected(channel);\n-    }\n-\n-    @Override\n-    public void sent(Channel channel, Object message) throws RemotingException {\n-        handler.sent(channel, message);\n-    }\n-\n-    @Override\n-    public void received(Channel channel, Object message) throws RemotingException {\n-        handler.received(channel, message);\n-    }\n-\n-    @Override\n-    public void caught(Channel channel, Throwable exception) throws RemotingException {\n-        handler.caught(channel, exception);\n-    }\n-\n-    protected void sendFeedback(Channel channel, Request request, Throwable t) throws RemotingException {\n-        if (request.isTwoWay()) {\n-            String msg = \"Server side(\" + url.getIp() + \",\" + url.getPort()\n-                    + \") thread pool is exhausted, detail msg:\" + t.getMessage();\n-            Response response = new Response(request.getId(), request.getVersion());\n-            response.setStatus(Response.SERVER_THREADPOOL_EXHAUSTED_ERROR);\n-            response.setErrorMessage(msg);\n-            channel.send(response);\n-            return;\n-        }\n-    }\n-\n-    @Override\n-    public ChannelHandler getHandler() {\n-        if (handler instanceof ChannelHandlerDelegate) {\n-            return ((ChannelHandlerDelegate) handler).getHandler();\n-        } else {\n-            return handler;\n-        }\n-    }\n-\n-    public URL getUrl() {\n-        return url;\n-    }\n-\n-    /**\n-     * Currently, this method is mainly customized to facilitate the thread model on consumer side.\n-     * 1. Use ThreadlessExecutor, aka., delegate callback directly to the thread initiating the call.\n-     * 2. Use shared executor to execute the callback.\n-     *\n-     * @param msg\n-     * @return\n-     */\n-    public ExecutorService getPreferredExecutorService(Object msg) {\n-        if (msg instanceof Response) {\n-            Response response = (Response) msg;\n-            DefaultFuture responseFuture = DefaultFuture.getFuture(response.getId());\n-            // a typical scenario is the response returned after timeout, the timeout response may has completed the future\n-            if (responseFuture == null) {\n-                return getSharedExecutorService();\n-            } else {\n-                ExecutorService executor = responseFuture.getExecutor();\n-                if (executor == null || executor.isShutdown()) {\n-                    executor = getSharedExecutorService();\n-                }\n-                return executor;\n-            }\n-        } else {\n-            return getSharedExecutorService();\n-        }\n-    }\n-\n-    /**\n-     * get the shared executor for current Server or Client\n-     *\n-     * @return\n-     */\n-    public ExecutorService getSharedExecutorService() {\n-        ExecutorRepository executorRepository =\n-                ExtensionLoader.getExtensionLoader(ExecutorRepository.class).getDefaultExtension();\n-        ExecutorService executor = executorRepository.getExecutor(url);\n-        if (executor == null) {\n-            executor = executorRepository.createExecutorIfAbsent(url);\n-        }\n-        return executor;\n-    }\n-\n-    @Deprecated\n-    public ExecutorService getExecutorService() {\n-        return getSharedExecutorService();\n-    }\n-\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.dispatcher;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.threadpool.manager.ExecutorRepository;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.exchange.Request;\r\n+import org.apache.dubbo.remoting.exchange.Response;\r\n+import org.apache.dubbo.remoting.exchange.support.DefaultFuture;\r\n+import org.apache.dubbo.remoting.transport.ChannelHandlerDelegate;\r\n+\r\n+import java.util.concurrent.ExecutorService;\r\n+\r\n+public class WrappedChannelHandler implements ChannelHandlerDelegate {\r\n+\r\n+    protected static final Logger logger = LoggerFactory.getLogger(WrappedChannelHandler.class);\r\n+\r\n+    protected final ChannelHandler handler;\r\n+\r\n+    protected final URL url;\r\n+\r\n+    public WrappedChannelHandler(ChannelHandler handler, URL url) {\r\n+        this.handler = handler;\r\n+        this.url = url;\r\n+    }\r\n+\r\n+    public void close() {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public void connected(Channel channel) throws RemotingException {\r\n+        handler.connected(channel);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void disconnected(Channel channel) throws RemotingException {\r\n+        handler.disconnected(channel);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void sent(Channel channel, Object message) throws RemotingException {\r\n+        handler.sent(channel, message);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void received(Channel channel, Object message) throws RemotingException {\r\n+        handler.received(channel, message);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void caught(Channel channel, Throwable exception) throws RemotingException {\r\n+        handler.caught(channel, exception);\r\n+    }\r\n+\r\n+    protected void sendFeedback(Channel channel, Request request, Throwable t) throws RemotingException {\r\n+        if (request.isTwoWay()) {\r\n+            String msg = \"Server side(\" + url.getIp() + \",\" + url.getPort()\r\n+                    + \") thread pool is exhausted, detail msg:\" + t.getMessage();\r\n+            Response response = new Response(request.getId(), request.getVersion());\r\n+            response.setStatus(Response.SERVER_THREADPOOL_EXHAUSTED_ERROR);\r\n+            response.setErrorMessage(msg);\r\n+            channel.send(response);\r\n+            return;\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public ChannelHandler getHandler() {\r\n+        if (handler instanceof ChannelHandlerDelegate) {\r\n+            return ((ChannelHandlerDelegate) handler).getHandler();\r\n+        } else {\r\n+            return handler;\r\n+        }\r\n+    }\r\n+\r\n+    public URL getUrl() {\r\n+        return url;\r\n+    }\r\n+\r\n+    /**\r\n+     * Currently, this method is mainly customized to facilitate the thread model on consumer side.\r\n+     * 1. Use ThreadlessExecutor, aka., delegate callback directly to the thread initiating the call.\r\n+     * 2. Use shared executor to execute the callback.\r\n+     *\r\n+     * @param msg\r\n+     * @return\r\n+     */\r\n+    public ExecutorService getPreferredExecutorService(Object msg) {\r\n+        if (msg instanceof Response) {\r\n+            Response response = (Response) msg;\r\n+            DefaultFuture responseFuture = DefaultFuture.getFuture(response.getId());\r\n+            // a typical scenario is the response returned after timeout, the timeout response may has completed the future\r\n+            if (responseFuture == null) {\r\n+                return getSharedExecutorService();\r\n+            } else {\r\n+                ExecutorService executor = responseFuture.getExecutor();\r\n+                if (executor == null || executor.isShutdown()) {\r\n+                    executor = getSharedExecutorService();\r\n+                }\r\n+                return executor;\r\n+            }\r\n+        } else {\r\n+            return getSharedExecutorService();\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * get the shared executor for current Server or Client\r\n+     *\r\n+     * @return\r\n+     */\r\n+    public ExecutorService getSharedExecutorService() {\r\n+        ExecutorRepository executorRepository =\r\n+                ExtensionLoader.getExtensionLoader(ExecutorRepository.class).getDefaultExtension();\r\n+        ExecutorService executor = executorRepository.getExecutor(url);\r\n+        if (executor == null) {\r\n+            executor = executorRepository.createExecutorIfAbsent(url);\r\n+        }\r\n+        return executor;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public ExecutorService getExecutorService() {\r\n+        return getSharedExecutorService();\r\n+    }\r\n+\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/dispatcher/all/AllChannelHandler.java", "source2": "org/apache/dubbo/remoting/transport/dispatcher/all/AllChannelHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,81 +1,81 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.dispatcher.all;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.ExecutionException;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.exchange.Request;\n-import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable;\n-import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.ChannelState;\n-import org.apache.dubbo.remoting.transport.dispatcher.WrappedChannelHandler;\n-\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.RejectedExecutionException;\n-\n-public class AllChannelHandler extends WrappedChannelHandler {\n-\n-    public AllChannelHandler(ChannelHandler handler, URL url) {\n-        super(handler, url);\n-    }\n-\n-    @Override\n-    public void connected(Channel channel) throws RemotingException {\n-        ExecutorService executor = getExecutorService();\n-        try {\n-            executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.CONNECTED));\n-        } catch (Throwable t) {\n-            throw new ExecutionException(\"connect event\", channel, getClass() + \" error when process connected event .\", t);\n-        }\n-    }\n-\n-    @Override\n-    public void disconnected(Channel channel) throws RemotingException {\n-        ExecutorService executor = getExecutorService();\n-        try {\n-            executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.DISCONNECTED));\n-        } catch (Throwable t) {\n-            throw new ExecutionException(\"disconnect event\", channel, getClass() + \" error when process disconnected event .\", t);\n-        }\n-    }\n-\n-    @Override\n-    public void received(Channel channel, Object message) throws RemotingException {\n-        ExecutorService executor = getPreferredExecutorService(message);\n-        try {\n-            executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.RECEIVED, message));\n-        } catch (Throwable t) {\n-        \tif(message instanceof Request && t instanceof RejectedExecutionException){\n-                sendFeedback(channel, (Request) message, t);\n-                return;\n-        \t}\n-            throw new ExecutionException(message, channel, getClass() + \" error when process received event .\", t);\n-        }\n-    }\n-\n-    @Override\n-    public void caught(Channel channel, Throwable exception) throws RemotingException {\n-        ExecutorService executor = getExecutorService();\n-        try {\n-            executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.CAUGHT, exception));\n-        } catch (Throwable t) {\n-            throw new ExecutionException(\"caught event\", channel, getClass() + \" error when process caught event .\", t);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.dispatcher.all;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.ExecutionException;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.exchange.Request;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.ChannelState;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.WrappedChannelHandler;\r\n+\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.RejectedExecutionException;\r\n+\r\n+public class AllChannelHandler extends WrappedChannelHandler {\r\n+\r\n+    public AllChannelHandler(ChannelHandler handler, URL url) {\r\n+        super(handler, url);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void connected(Channel channel) throws RemotingException {\r\n+        ExecutorService executor = getExecutorService();\r\n+        try {\r\n+            executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.CONNECTED));\r\n+        } catch (Throwable t) {\r\n+            throw new ExecutionException(\"connect event\", channel, getClass() + \" error when process connected event .\", t);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void disconnected(Channel channel) throws RemotingException {\r\n+        ExecutorService executor = getExecutorService();\r\n+        try {\r\n+            executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.DISCONNECTED));\r\n+        } catch (Throwable t) {\r\n+            throw new ExecutionException(\"disconnect event\", channel, getClass() + \" error when process disconnected event .\", t);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void received(Channel channel, Object message) throws RemotingException {\r\n+        ExecutorService executor = getPreferredExecutorService(message);\r\n+        try {\r\n+            executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.RECEIVED, message));\r\n+        } catch (Throwable t) {\r\n+        \tif(message instanceof Request && t instanceof RejectedExecutionException){\r\n+                sendFeedback(channel, (Request) message, t);\r\n+                return;\r\n+        \t}\r\n+            throw new ExecutionException(message, channel, getClass() + \" error when process received event .\", t);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void caught(Channel channel, Throwable exception) throws RemotingException {\r\n+        ExecutorService executor = getExecutorService();\r\n+        try {\r\n+            executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.CAUGHT, exception));\r\n+        } catch (Throwable t) {\r\n+            throw new ExecutionException(\"caught event\", channel, getClass() + \" error when process caught event .\", t);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/dispatcher/connection/ConnectionOrderedChannelHandler.java", "source2": "org/apache/dubbo/remoting/transport/dispatcher/connection/ConnectionOrderedChannelHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,109 +1,109 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.dispatcher.connection;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport;\n-import org.apache.dubbo.common.utils.NamedThreadFactory;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.ExecutionException;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.exchange.Request;\n-import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable;\n-import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.ChannelState;\n-import org.apache.dubbo.remoting.transport.dispatcher.WrappedChannelHandler;\n-\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.LinkedBlockingQueue;\n-import java.util.concurrent.RejectedExecutionException;\n-import java.util.concurrent.ThreadPoolExecutor;\n-import java.util.concurrent.TimeUnit;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.THREAD_NAME_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_THREAD_NAME;\n-import static org.apache.dubbo.remoting.Constants.CONNECT_QUEUE_CAPACITY;\n-import static org.apache.dubbo.remoting.Constants.CONNECT_QUEUE_WARNING_SIZE;\n-import static org.apache.dubbo.remoting.Constants.DEFAULT_CONNECT_QUEUE_WARNING_SIZE;\n-\n-public class ConnectionOrderedChannelHandler extends WrappedChannelHandler {\n-\n-    protected final ThreadPoolExecutor connectionExecutor;\n-    private final int queuewarninglimit;\n-\n-    public ConnectionOrderedChannelHandler(ChannelHandler handler, URL url) {\n-        super(handler, url);\n-        String threadName = url.getParameter(THREAD_NAME_KEY, DEFAULT_THREAD_NAME);\n-        connectionExecutor = new ThreadPoolExecutor(1, 1,\n-                0L, TimeUnit.MILLISECONDS,\n-                new LinkedBlockingQueue<Runnable>(url.getPositiveParameter(CONNECT_QUEUE_CAPACITY, Integer.MAX_VALUE)),\n-                new NamedThreadFactory(threadName, true),\n-                new AbortPolicyWithReport(threadName, url)\n-        );  // FIXME There's no place to release connectionExecutor!\n-        queuewarninglimit = url.getParameter(CONNECT_QUEUE_WARNING_SIZE, DEFAULT_CONNECT_QUEUE_WARNING_SIZE);\n-    }\n-\n-    @Override\n-    public void connected(Channel channel) throws RemotingException {\n-        try {\n-            checkQueueLength();\n-            connectionExecutor.execute(new ChannelEventRunnable(channel, handler, ChannelState.CONNECTED));\n-        } catch (Throwable t) {\n-            throw new ExecutionException(\"connect event\", channel, getClass() + \" error when process connected event .\", t);\n-        }\n-    }\n-\n-    @Override\n-    public void disconnected(Channel channel) throws RemotingException {\n-        try {\n-            checkQueueLength();\n-            connectionExecutor.execute(new ChannelEventRunnable(channel, handler, ChannelState.DISCONNECTED));\n-        } catch (Throwable t) {\n-            throw new ExecutionException(\"disconnected event\", channel, getClass() + \" error when process disconnected event .\", t);\n-        }\n-    }\n-\n-    @Override\n-    public void received(Channel channel, Object message) throws RemotingException {\n-        ExecutorService executor = getPreferredExecutorService(message);\n-        try {\n-            executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.RECEIVED, message));\n-        } catch (Throwable t) {\n-            if (message instanceof Request && t instanceof RejectedExecutionException) {\n-                sendFeedback(channel, (Request) message, t);\n-                return;\n-            }\n-            throw new ExecutionException(message, channel, getClass() + \" error when process received event .\", t);\n-        }\n-    }\n-\n-    @Override\n-    public void caught(Channel channel, Throwable exception) throws RemotingException {\n-        ExecutorService executor = getExecutorService();\n-        try {\n-            executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.CAUGHT, exception));\n-        } catch (Throwable t) {\n-            throw new ExecutionException(\"caught event\", channel, getClass() + \" error when process caught event .\", t);\n-        }\n-    }\n-\n-    private void checkQueueLength() {\n-        if (connectionExecutor.getQueue().size() > queuewarninglimit) {\n-            logger.warn(new IllegalThreadStateException(\"connectionordered channel handler `queue size: \" + connectionExecutor.getQueue().size() + \" exceed the warning limit number :\" + queuewarninglimit));\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.dispatcher.connection;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.threadpool.support.AbortPolicyWithReport;\r\n+import org.apache.dubbo.common.utils.NamedThreadFactory;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.ExecutionException;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.exchange.Request;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.ChannelState;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.WrappedChannelHandler;\r\n+\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.LinkedBlockingQueue;\r\n+import java.util.concurrent.RejectedExecutionException;\r\n+import java.util.concurrent.ThreadPoolExecutor;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.THREAD_NAME_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_THREAD_NAME;\r\n+import static org.apache.dubbo.remoting.Constants.CONNECT_QUEUE_CAPACITY;\r\n+import static org.apache.dubbo.remoting.Constants.CONNECT_QUEUE_WARNING_SIZE;\r\n+import static org.apache.dubbo.remoting.Constants.DEFAULT_CONNECT_QUEUE_WARNING_SIZE;\r\n+\r\n+public class ConnectionOrderedChannelHandler extends WrappedChannelHandler {\r\n+\r\n+    protected final ThreadPoolExecutor connectionExecutor;\r\n+    private final int queuewarninglimit;\r\n+\r\n+    public ConnectionOrderedChannelHandler(ChannelHandler handler, URL url) {\r\n+        super(handler, url);\r\n+        String threadName = url.getParameter(THREAD_NAME_KEY, DEFAULT_THREAD_NAME);\r\n+        connectionExecutor = new ThreadPoolExecutor(1, 1,\r\n+                0L, TimeUnit.MILLISECONDS,\r\n+                new LinkedBlockingQueue<Runnable>(url.getPositiveParameter(CONNECT_QUEUE_CAPACITY, Integer.MAX_VALUE)),\r\n+                new NamedThreadFactory(threadName, true),\r\n+                new AbortPolicyWithReport(threadName, url)\r\n+        );  // FIXME There's no place to release connectionExecutor!\r\n+        queuewarninglimit = url.getParameter(CONNECT_QUEUE_WARNING_SIZE, DEFAULT_CONNECT_QUEUE_WARNING_SIZE);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void connected(Channel channel) throws RemotingException {\r\n+        try {\r\n+            checkQueueLength();\r\n+            connectionExecutor.execute(new ChannelEventRunnable(channel, handler, ChannelState.CONNECTED));\r\n+        } catch (Throwable t) {\r\n+            throw new ExecutionException(\"connect event\", channel, getClass() + \" error when process connected event .\", t);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void disconnected(Channel channel) throws RemotingException {\r\n+        try {\r\n+            checkQueueLength();\r\n+            connectionExecutor.execute(new ChannelEventRunnable(channel, handler, ChannelState.DISCONNECTED));\r\n+        } catch (Throwable t) {\r\n+            throw new ExecutionException(\"disconnected event\", channel, getClass() + \" error when process disconnected event .\", t);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void received(Channel channel, Object message) throws RemotingException {\r\n+        ExecutorService executor = getPreferredExecutorService(message);\r\n+        try {\r\n+            executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.RECEIVED, message));\r\n+        } catch (Throwable t) {\r\n+            if (message instanceof Request && t instanceof RejectedExecutionException) {\r\n+                sendFeedback(channel, (Request) message, t);\r\n+                return;\r\n+            }\r\n+            throw new ExecutionException(message, channel, getClass() + \" error when process received event .\", t);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void caught(Channel channel, Throwable exception) throws RemotingException {\r\n+        ExecutorService executor = getExecutorService();\r\n+        try {\r\n+            executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.CAUGHT, exception));\r\n+        } catch (Throwable t) {\r\n+            throw new ExecutionException(\"caught event\", channel, getClass() + \" error when process caught event .\", t);\r\n+        }\r\n+    }\r\n+\r\n+    private void checkQueueLength() {\r\n+        if (connectionExecutor.getQueue().size() > queuewarninglimit) {\r\n+            logger.warn(new IllegalThreadStateException(\"connectionordered channel handler `queue size: \" + connectionExecutor.getQueue().size() + \" exceed the warning limit number :\" + queuewarninglimit));\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/dispatcher/direct/DirectChannelHandler.java", "source2": "org/apache/dubbo/remoting/transport/dispatcher/direct/DirectChannelHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,51 +1,51 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.dispatcher.direct;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.threadpool.ThreadlessExecutor;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.ExecutionException;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable;\n-import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.ChannelState;\n-import org.apache.dubbo.remoting.transport.dispatcher.WrappedChannelHandler;\n-\n-import java.util.concurrent.ExecutorService;\n-\n-public class DirectChannelHandler extends WrappedChannelHandler {\n-\n-    public DirectChannelHandler(ChannelHandler handler, URL url) {\n-        super(handler, url);\n-    }\n-\n-    @Override\n-    public void received(Channel channel, Object message) throws RemotingException {\n-        ExecutorService executor = getPreferredExecutorService(message);\n-        if (executor instanceof ThreadlessExecutor) {\n-            try {\n-                executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.RECEIVED, message));\n-            } catch (Throwable t) {\n-                throw new ExecutionException(message, channel, getClass() + \" error when process received event .\", t);\n-            }\n-        } else {\n-            handler.received(channel, message);\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.dispatcher.direct;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.threadpool.ThreadlessExecutor;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.ExecutionException;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.ChannelState;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.WrappedChannelHandler;\r\n+\r\n+import java.util.concurrent.ExecutorService;\r\n+\r\n+public class DirectChannelHandler extends WrappedChannelHandler {\r\n+\r\n+    public DirectChannelHandler(ChannelHandler handler, URL url) {\r\n+        super(handler, url);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void received(Channel channel, Object message) throws RemotingException {\r\n+        ExecutorService executor = getPreferredExecutorService(message);\r\n+        if (executor instanceof ThreadlessExecutor) {\r\n+            try {\r\n+                executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.RECEIVED, message));\r\n+            } catch (Throwable t) {\r\n+                throw new ExecutionException(message, channel, getClass() + \" error when process received event .\", t);\r\n+            }\r\n+        } else {\r\n+            handler.received(channel, message);\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/dispatcher/direct/DirectDispatcher.java", "source2": "org/apache/dubbo/remoting/transport/dispatcher/direct/DirectDispatcher.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,35 +1,35 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.dispatcher.direct;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.Dispatcher;\n-\n-/**\n- * Direct dispatcher\n- */\n-public class DirectDispatcher implements Dispatcher {\n-\n-    public static final String NAME = \"direct\";\n-\n-    @Override\n-    public ChannelHandler dispatch(ChannelHandler handler, URL url) {\n-        return new DirectChannelHandler(handler, url);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.dispatcher.direct;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.Dispatcher;\r\n+\r\n+/**\r\n+ * Direct dispatcher\r\n+ */\r\n+public class DirectDispatcher implements Dispatcher {\r\n+\r\n+    public static final String NAME = \"direct\";\r\n+\r\n+    @Override\r\n+    public ChannelHandler dispatch(ChannelHandler handler, URL url) {\r\n+        return new DirectChannelHandler(handler, url);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/dispatcher/execution/ExecutionChannelHandler.java", "source2": "org/apache/dubbo/remoting/transport/dispatcher/execution/ExecutionChannelHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,65 +1,65 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.dispatcher.execution;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.threadpool.ThreadlessExecutor;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.ExecutionException;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.exchange.Request;\n-import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable;\n-import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.ChannelState;\n-import org.apache.dubbo.remoting.transport.dispatcher.WrappedChannelHandler;\n-\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.RejectedExecutionException;\n-\n-/**\n- * Only request message will be dispatched to thread pool. Other messages like response, connect, disconnect,\n- * heartbeat will be directly executed by I/O thread.\n- */\n-public class ExecutionChannelHandler extends WrappedChannelHandler {\n-\n-    public ExecutionChannelHandler(ChannelHandler handler, URL url) {\n-        super(handler, url);\n-    }\n-\n-    @Override\n-    public void received(Channel channel, Object message) throws RemotingException {\n-        ExecutorService executor = getPreferredExecutorService(message);\n-\n-        if (message instanceof Request) {\n-            try {\n-                executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.RECEIVED, message));\n-            } catch (Throwable t) {\n-                // FIXME: when the thread pool is full, SERVER_THREADPOOL_EXHAUSTED_ERROR cannot return properly,\n-                // therefore the consumer side has to wait until gets timeout. This is a temporary solution to prevent\n-                // this scenario from happening, but a better solution should be considered later.\n-                if (t instanceof RejectedExecutionException) {\n-                    sendFeedback(channel, (Request) message, t);\n-                }\n-                throw new ExecutionException(message, channel, getClass() + \" error when process received event.\", t);\n-            }\n-        } else if (executor instanceof ThreadlessExecutor) {\n-            executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.RECEIVED, message));\n-        } else {\n-            handler.received(channel, message);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.dispatcher.execution;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.threadpool.ThreadlessExecutor;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.ExecutionException;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.exchange.Request;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.ChannelState;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.WrappedChannelHandler;\r\n+\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.RejectedExecutionException;\r\n+\r\n+/**\r\n+ * Only request message will be dispatched to thread pool. Other messages like response, connect, disconnect,\r\n+ * heartbeat will be directly executed by I/O thread.\r\n+ */\r\n+public class ExecutionChannelHandler extends WrappedChannelHandler {\r\n+\r\n+    public ExecutionChannelHandler(ChannelHandler handler, URL url) {\r\n+        super(handler, url);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void received(Channel channel, Object message) throws RemotingException {\r\n+        ExecutorService executor = getPreferredExecutorService(message);\r\n+\r\n+        if (message instanceof Request) {\r\n+            try {\r\n+                executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.RECEIVED, message));\r\n+            } catch (Throwable t) {\r\n+                // FIXME: when the thread pool is full, SERVER_THREADPOOL_EXHAUSTED_ERROR cannot return properly,\r\n+                // therefore the consumer side has to wait until gets timeout. This is a temporary solution to prevent\r\n+                // this scenario from happening, but a better solution should be considered later.\r\n+                if (t instanceof RejectedExecutionException) {\r\n+                    sendFeedback(channel, (Request) message, t);\r\n+                }\r\n+                throw new ExecutionException(message, channel, getClass() + \" error when process received event.\", t);\r\n+            }\r\n+        } else if (executor instanceof ThreadlessExecutor) {\r\n+            executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.RECEIVED, message));\r\n+        } else {\r\n+            handler.received(channel, message);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/dispatcher/message/MessageOnlyChannelHandler.java", "source2": "org/apache/dubbo/remoting/transport/dispatcher/message/MessageOnlyChannelHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,52 +1,52 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.dispatcher.message;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.ExecutionException;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.exchange.Request;\n-import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable;\n-import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.ChannelState;\n-import org.apache.dubbo.remoting.transport.dispatcher.WrappedChannelHandler;\n-\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.RejectedExecutionException;\n-\n-public class MessageOnlyChannelHandler extends WrappedChannelHandler {\n-\n-    public MessageOnlyChannelHandler(ChannelHandler handler, URL url) {\n-        super(handler, url);\n-    }\n-\n-    @Override\n-    public void received(Channel channel, Object message) throws RemotingException {\n-        ExecutorService executor = getPreferredExecutorService(message);\n-        try {\n-            executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.RECEIVED, message));\n-        } catch (Throwable t) {\n-            if(message instanceof Request && t instanceof RejectedExecutionException){\n-                sendFeedback(channel, (Request) message, t);\n-                return;\n-            }\n-            throw new ExecutionException(message, channel, getClass() + \" error when process received event .\", t);\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.dispatcher.message;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.ExecutionException;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.exchange.Request;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.ChannelState;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.WrappedChannelHandler;\r\n+\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.RejectedExecutionException;\r\n+\r\n+public class MessageOnlyChannelHandler extends WrappedChannelHandler {\r\n+\r\n+    public MessageOnlyChannelHandler(ChannelHandler handler, URL url) {\r\n+        super(handler, url);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void received(Channel channel, Object message) throws RemotingException {\r\n+        ExecutorService executor = getPreferredExecutorService(message);\r\n+        try {\r\n+            executor.execute(new ChannelEventRunnable(channel, handler, ChannelState.RECEIVED, message));\r\n+        } catch (Throwable t) {\r\n+            if(message instanceof Request && t instanceof RejectedExecutionException){\r\n+                sendFeedback(channel, (Request) message, t);\r\n+                return;\r\n+            }\r\n+            throw new ExecutionException(message, channel, getClass() + \" error when process received event .\", t);\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/utils/PayloadDropper.java", "source2": "org/apache/dubbo/remoting/utils/PayloadDropper.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,48 +1,48 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.utils;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.remoting.exchange.Request;\n-import org.apache.dubbo.remoting.exchange.Response;\n-\n-public class PayloadDropper {\n-    private static Logger logger = LoggerFactory.getLogger(PayloadDropper.class);\n-\n-    /**\n-     * only log body in debugger mode for size & security consideration.\n-     *\n-     * @param message\n-     * @return\n-     */\n-    public static Object getRequestWithoutData(Object message) {\n-        if (logger.isDebugEnabled()) {\n-            return message;\n-        }\n-        if (message instanceof Request) {\n-            Request request = (Request) message;\n-            request.setData(null);\n-            return request;\n-        } else if (message instanceof Response) {\n-            Response response = (Response) message;\n-            response.setResult(null);\n-            return response;\n-        }\n-        return message;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.utils;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.remoting.exchange.Request;\r\n+import org.apache.dubbo.remoting.exchange.Response;\r\n+\r\n+public class PayloadDropper {\r\n+    private static Logger logger = LoggerFactory.getLogger(PayloadDropper.class);\r\n+\r\n+    /**\r\n+     * only log body in debugger mode for size & security consideration.\r\n+     *\r\n+     * @param message\r\n+     * @return\r\n+     */\r\n+    public static Object getRequestWithoutData(Object message) {\r\n+        if (logger.isDebugEnabled()) {\r\n+            return message;\r\n+        }\r\n+        if (message instanceof Request) {\r\n+            Request request = (Request) message;\r\n+            request.setData(null);\r\n+            return request;\r\n+        } else if (message instanceof Response) {\r\n+            Response response = (Response) message;\r\n+            response.setResult(null);\r\n+            return response;\r\n+        }\r\n+        return message;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/utils/UrlUtils.java", "source2": "org/apache/dubbo/remoting/utils/UrlUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,37 +1,37 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.remoting.utils;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.Constants;\n-\n-public class UrlUtils {\n-    public static int getIdleTimeout(URL url) {\n-        int heartBeat = getHeartbeat(url);\n-        // idleTimeout should be at least more than twice heartBeat because possible retries of client.\n-        int idleTimeout = url.getParameter(Constants.HEARTBEAT_TIMEOUT_KEY, heartBeat * 3);\n-        if (idleTimeout < heartBeat * 2) {\n-            throw new IllegalStateException(\"idleTimeout < heartbeatInterval * 2\");\n-        }\n-        return idleTimeout;\n-    }\n-\n-    public static int getHeartbeat(URL url) {\n-        return url.getParameter(Constants.HEARTBEAT_KEY, Constants.DEFAULT_HEARTBEAT);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.remoting.utils;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+\r\n+public class UrlUtils {\r\n+    public static int getIdleTimeout(URL url) {\r\n+        int heartBeat = getHeartbeat(url);\r\n+        // idleTimeout should be at least more than twice heartBeat because possible retries of client.\r\n+        int idleTimeout = url.getParameter(Constants.HEARTBEAT_TIMEOUT_KEY, heartBeat * 3);\r\n+        if (idleTimeout < heartBeat * 2) {\r\n+            throw new IllegalStateException(\"idleTimeout < heartbeatInterval * 2\");\r\n+        }\r\n+        return idleTimeout;\r\n+    }\r\n+\r\n+    public static int getHeartbeat(URL url) {\r\n+        return url.getParameter(Constants.HEARTBEAT_KEY, Constants.DEFAULT_HEARTBEAT);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/netty/NettyChannel.java", "source2": "org/apache/dubbo/remoting/transport/netty/NettyChannel.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,215 +1,215 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.netty;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.transport.AbstractChannel;\n-import org.apache.dubbo.remoting.utils.PayloadDropper;\n-\n-import org.jboss.netty.channel.ChannelFuture;\n-\n-import java.net.InetSocketAddress;\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-\n-/**\n- * NettyChannel.\n- */\n-final class NettyChannel extends AbstractChannel {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(NettyChannel.class);\n-\n-    private static final ConcurrentMap<org.jboss.netty.channel.Channel, NettyChannel> CHANNEL_MAP = new ConcurrentHashMap<org.jboss.netty.channel.Channel, NettyChannel>();\n-\n-    private final org.jboss.netty.channel.Channel channel;\n-\n-    private final Map<String, Object> attributes = new ConcurrentHashMap<String, Object>();\n-\n-    private NettyChannel(org.jboss.netty.channel.Channel channel, URL url, ChannelHandler handler) {\n-        super(url, handler);\n-        if (channel == null) {\n-            throw new IllegalArgumentException(\"netty channel == null;\");\n-        }\n-        this.channel = channel;\n-    }\n-\n-    static NettyChannel getOrAddChannel(org.jboss.netty.channel.Channel ch, URL url, ChannelHandler handler) {\n-        if (ch == null) {\n-            return null;\n-        }\n-        NettyChannel ret = CHANNEL_MAP.get(ch);\n-        if (ret == null) {\n-            NettyChannel nc = new NettyChannel(ch, url, handler);\n-            if (ch.isConnected()) {\n-                ret = CHANNEL_MAP.putIfAbsent(ch, nc);\n-            }\n-            if (ret == null) {\n-                ret = nc;\n-            }\n-        }\n-        return ret;\n-    }\n-\n-    static void removeChannelIfDisconnected(org.jboss.netty.channel.Channel ch) {\n-        if (ch != null && !ch.isConnected()) {\n-            CHANNEL_MAP.remove(ch);\n-        }\n-    }\n-\n-    @Override\n-    public InetSocketAddress getLocalAddress() {\n-        return (InetSocketAddress) channel.getLocalAddress();\n-    }\n-\n-    @Override\n-    public InetSocketAddress getRemoteAddress() {\n-        return (InetSocketAddress) channel.getRemoteAddress();\n-    }\n-\n-    @Override\n-    public boolean isConnected() {\n-        return channel.isConnected();\n-    }\n-\n-    @Override\n-    public void send(Object message, boolean sent) throws RemotingException {\n-        super.send(message, sent);\n-\n-        boolean success = true;\n-        int timeout = 0;\n-        try {\n-            ChannelFuture future = channel.write(message);\n-            if (sent) {\n-                timeout = getUrl().getPositiveParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT);\n-                success = future.await(timeout);\n-            }\n-            Throwable cause = future.getCause();\n-            if (cause != null) {\n-                throw cause;\n-            }\n-        } catch (Throwable e) {\n-            throw new RemotingException(this, \"Failed to send message \" + PayloadDropper.getRequestWithoutData(message) + \" to \" + getRemoteAddress() + \", cause: \" + e.getMessage(), e);\n-        }\n-\n-        if (!success) {\n-            throw new RemotingException(this, \"Failed to send message \" + PayloadDropper.getRequestWithoutData(message) + \" to \" + getRemoteAddress()\n-                    + \"in timeout(\" + timeout + \"ms) limit\");\n-        }\n-    }\n-\n-    @Override\n-    public void close() {\n-        try {\n-            super.close();\n-        } catch (Exception e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-        try {\n-            removeChannelIfDisconnected(channel);\n-        } catch (Exception e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-        try {\n-            attributes.clear();\n-        } catch (Exception e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-        try {\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"Close netty channel \" + channel);\n-            }\n-            channel.close();\n-        } catch (Exception e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-    }\n-\n-    @Override\n-    public boolean hasAttribute(String key) {\n-        return attributes.containsKey(key);\n-    }\n-\n-    @Override\n-    public Object getAttribute(String key) {\n-        return attributes.get(key);\n-    }\n-\n-    @Override\n-    public void setAttribute(String key, Object value) {\n-        if (value == null) { // The null value unallowed in the ConcurrentHashMap.\n-            attributes.remove(key);\n-        } else {\n-            attributes.put(key, value);\n-        }\n-    }\n-\n-    @Override\n-    public void removeAttribute(String key) {\n-        attributes.remove(key);\n-    }\n-\n-    @Override\n-    public int hashCode() {\n-        final int prime = 31;\n-        int result = 1;\n-        result = prime * result + ((channel == null) ? 0 : channel.hashCode());\n-        return result;\n-    }\n-\n-    @Override\n-    public boolean equals(Object obj) {\n-        if (this == obj) {\n-            return true;\n-        }\n-        if (obj == null) {\n-            return false;\n-        }\n-\n-        // FIXME: a hack to make org.apache.dubbo.remoting.exchange.support.DefaultFuture.closeChannel work\n-        if (obj instanceof NettyClient) {\n-            NettyClient client = (NettyClient) obj;\n-            return channel.equals(client.getNettyChannel());\n-        }\n-\n-        if (getClass() != obj.getClass()) {\n-            return false;\n-        }\n-        NettyChannel other = (NettyChannel) obj;\n-        if (channel == null) {\n-            if (other.channel != null) {\n-                return false;\n-            }\n-        } else if (!channel.equals(other.channel)) {\n-            return false;\n-        }\n-        return true;\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"NettyChannel [channel=\" + channel + \"]\";\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.netty;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.transport.AbstractChannel;\r\n+import org.apache.dubbo.remoting.utils.PayloadDropper;\r\n+\r\n+import org.jboss.netty.channel.ChannelFuture;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+\r\n+/**\r\n+ * NettyChannel.\r\n+ */\r\n+final class NettyChannel extends AbstractChannel {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(NettyChannel.class);\r\n+\r\n+    private static final ConcurrentMap<org.jboss.netty.channel.Channel, NettyChannel> CHANNEL_MAP = new ConcurrentHashMap<org.jboss.netty.channel.Channel, NettyChannel>();\r\n+\r\n+    private final org.jboss.netty.channel.Channel channel;\r\n+\r\n+    private final Map<String, Object> attributes = new ConcurrentHashMap<String, Object>();\r\n+\r\n+    private NettyChannel(org.jboss.netty.channel.Channel channel, URL url, ChannelHandler handler) {\r\n+        super(url, handler);\r\n+        if (channel == null) {\r\n+            throw new IllegalArgumentException(\"netty channel == null;\");\r\n+        }\r\n+        this.channel = channel;\r\n+    }\r\n+\r\n+    static NettyChannel getOrAddChannel(org.jboss.netty.channel.Channel ch, URL url, ChannelHandler handler) {\r\n+        if (ch == null) {\r\n+            return null;\r\n+        }\r\n+        NettyChannel ret = CHANNEL_MAP.get(ch);\r\n+        if (ret == null) {\r\n+            NettyChannel nc = new NettyChannel(ch, url, handler);\r\n+            if (ch.isConnected()) {\r\n+                ret = CHANNEL_MAP.putIfAbsent(ch, nc);\r\n+            }\r\n+            if (ret == null) {\r\n+                ret = nc;\r\n+            }\r\n+        }\r\n+        return ret;\r\n+    }\r\n+\r\n+    static void removeChannelIfDisconnected(org.jboss.netty.channel.Channel ch) {\r\n+        if (ch != null && !ch.isConnected()) {\r\n+            CHANNEL_MAP.remove(ch);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public InetSocketAddress getLocalAddress() {\r\n+        return (InetSocketAddress) channel.getLocalAddress();\r\n+    }\r\n+\r\n+    @Override\r\n+    public InetSocketAddress getRemoteAddress() {\r\n+        return (InetSocketAddress) channel.getRemoteAddress();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isConnected() {\r\n+        return channel.isConnected();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void send(Object message, boolean sent) throws RemotingException {\r\n+        super.send(message, sent);\r\n+\r\n+        boolean success = true;\r\n+        int timeout = 0;\r\n+        try {\r\n+            ChannelFuture future = channel.write(message);\r\n+            if (sent) {\r\n+                timeout = getUrl().getPositiveParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT);\r\n+                success = future.await(timeout);\r\n+            }\r\n+            Throwable cause = future.getCause();\r\n+            if (cause != null) {\r\n+                throw cause;\r\n+            }\r\n+        } catch (Throwable e) {\r\n+            throw new RemotingException(this, \"Failed to send message \" + PayloadDropper.getRequestWithoutData(message) + \" to \" + getRemoteAddress() + \", cause: \" + e.getMessage(), e);\r\n+        }\r\n+\r\n+        if (!success) {\r\n+            throw new RemotingException(this, \"Failed to send message \" + PayloadDropper.getRequestWithoutData(message) + \" to \" + getRemoteAddress()\r\n+                    + \"in timeout(\" + timeout + \"ms) limit\");\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close() {\r\n+        try {\r\n+            super.close();\r\n+        } catch (Exception e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+        try {\r\n+            removeChannelIfDisconnected(channel);\r\n+        } catch (Exception e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+        try {\r\n+            attributes.clear();\r\n+        } catch (Exception e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+        try {\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"Close netty channel \" + channel);\r\n+            }\r\n+            channel.close();\r\n+        } catch (Exception e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean hasAttribute(String key) {\r\n+        return attributes.containsKey(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getAttribute(String key) {\r\n+        return attributes.get(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setAttribute(String key, Object value) {\r\n+        if (value == null) { // The null value unallowed in the ConcurrentHashMap.\r\n+            attributes.remove(key);\r\n+        } else {\r\n+            attributes.put(key, value);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeAttribute(String key) {\r\n+        attributes.remove(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public int hashCode() {\r\n+        final int prime = 31;\r\n+        int result = 1;\r\n+        result = prime * result + ((channel == null) ? 0 : channel.hashCode());\r\n+        return result;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean equals(Object obj) {\r\n+        if (this == obj) {\r\n+            return true;\r\n+        }\r\n+        if (obj == null) {\r\n+            return false;\r\n+        }\r\n+\r\n+        // FIXME: a hack to make org.apache.dubbo.remoting.exchange.support.DefaultFuture.closeChannel work\r\n+        if (obj instanceof NettyClient) {\r\n+            NettyClient client = (NettyClient) obj;\r\n+            return channel.equals(client.getNettyChannel());\r\n+        }\r\n+\r\n+        if (getClass() != obj.getClass()) {\r\n+            return false;\r\n+        }\r\n+        NettyChannel other = (NettyChannel) obj;\r\n+        if (channel == null) {\r\n+            if (other.channel != null) {\r\n+                return false;\r\n+            }\r\n+        } else if (!channel.equals(other.channel)) {\r\n+            return false;\r\n+        }\r\n+        return true;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"NettyChannel [channel=\" + channel + \"]\";\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/netty/NettyCodecAdapter.java", "source2": "org/apache/dubbo/remoting/transport/netty/NettyCodecAdapter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,171 +1,171 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.netty;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.Codec2;\n-import org.apache.dubbo.remoting.buffer.DynamicChannelBuffer;\n-\n-import org.jboss.netty.buffer.ChannelBuffer;\n-import org.jboss.netty.buffer.ChannelBuffers;\n-import org.jboss.netty.channel.Channel;\n-import org.jboss.netty.channel.ChannelHandler;\n-import org.jboss.netty.channel.ChannelHandler.Sharable;\n-import org.jboss.netty.channel.ChannelHandlerContext;\n-import org.jboss.netty.channel.Channels;\n-import org.jboss.netty.channel.ExceptionEvent;\n-import org.jboss.netty.channel.MessageEvent;\n-import org.jboss.netty.channel.SimpleChannelUpstreamHandler;\n-import org.jboss.netty.handler.codec.oneone.OneToOneEncoder;\n-\n-import java.io.IOException;\n-\n-import static org.apache.dubbo.remoting.Constants.BUFFER_KEY;\n-import static org.apache.dubbo.remoting.Constants.DEFAULT_BUFFER_SIZE;\n-import static org.apache.dubbo.remoting.Constants.MAX_BUFFER_SIZE;\n-import static org.apache.dubbo.remoting.Constants.MIN_BUFFER_SIZE;\n-\n-/**\n- * NettyCodecAdapter.\n- */\n-final class NettyCodecAdapter {\n-\n-    private final ChannelHandler encoder = new InternalEncoder();\n-\n-    private final ChannelHandler decoder = new InternalDecoder();\n-\n-    private final Codec2 codec;\n-\n-    private final URL url;\n-\n-    private final int bufferSize;\n-\n-    private final org.apache.dubbo.remoting.ChannelHandler handler;\n-\n-    public NettyCodecAdapter(Codec2 codec, URL url, org.apache.dubbo.remoting.ChannelHandler handler) {\n-        this.codec = codec;\n-        this.url = url;\n-        this.handler = handler;\n-        int b = url.getPositiveParameter(BUFFER_KEY, DEFAULT_BUFFER_SIZE);\n-        this.bufferSize = b >= MIN_BUFFER_SIZE && b <= MAX_BUFFER_SIZE ? b : DEFAULT_BUFFER_SIZE;\n-    }\n-\n-    public ChannelHandler getEncoder() {\n-        return encoder;\n-    }\n-\n-    public ChannelHandler getDecoder() {\n-        return decoder;\n-    }\n-\n-    @Sharable\n-    private class InternalEncoder extends OneToOneEncoder {\n-\n-        @Override\n-        protected Object encode(ChannelHandlerContext ctx, Channel ch, Object msg) throws Exception {\n-            org.apache.dubbo.remoting.buffer.ChannelBuffer buffer =\n-                    org.apache.dubbo.remoting.buffer.ChannelBuffers.dynamicBuffer(1024);\n-            NettyChannel channel = NettyChannel.getOrAddChannel(ch, url, handler);\n-            try {\n-                codec.encode(channel, buffer, msg);\n-            } finally {\n-                NettyChannel.removeChannelIfDisconnected(ch);\n-            }\n-            return ChannelBuffers.wrappedBuffer(buffer.toByteBuffer());\n-        }\n-    }\n-\n-    private class InternalDecoder extends SimpleChannelUpstreamHandler {\n-\n-        private org.apache.dubbo.remoting.buffer.ChannelBuffer buffer =\n-                org.apache.dubbo.remoting.buffer.ChannelBuffers.EMPTY_BUFFER;\n-\n-        @Override\n-        public void messageReceived(ChannelHandlerContext ctx, MessageEvent event) throws Exception {\n-            Object o = event.getMessage();\n-            if (!(o instanceof ChannelBuffer)) {\n-                ctx.sendUpstream(event);\n-                return;\n-            }\n-\n-            ChannelBuffer input = (ChannelBuffer) o;\n-            int readable = input.readableBytes();\n-            if (readable <= 0) {\n-                return;\n-            }\n-\n-            org.apache.dubbo.remoting.buffer.ChannelBuffer message;\n-            if (buffer.readable()) {\n-                if (buffer instanceof DynamicChannelBuffer) {\n-                    buffer.writeBytes(input.toByteBuffer());\n-                    message = buffer;\n-                } else {\n-                    int size = buffer.readableBytes() + input.readableBytes();\n-                    message = org.apache.dubbo.remoting.buffer.ChannelBuffers.dynamicBuffer(\n-                            size > bufferSize ? size : bufferSize);\n-                    message.writeBytes(buffer, buffer.readableBytes());\n-                    message.writeBytes(input.toByteBuffer());\n-                }\n-            } else {\n-                message = org.apache.dubbo.remoting.buffer.ChannelBuffers.wrappedBuffer(\n-                        input.toByteBuffer());\n-            }\n-\n-            NettyChannel channel = NettyChannel.getOrAddChannel(ctx.getChannel(), url, handler);\n-            Object msg;\n-            int saveReaderIndex;\n-\n-            try {\n-                // decode object.\n-                do {\n-                    saveReaderIndex = message.readerIndex();\n-                    try {\n-                        msg = codec.decode(channel, message);\n-                    } catch (IOException e) {\n-                        buffer = org.apache.dubbo.remoting.buffer.ChannelBuffers.EMPTY_BUFFER;\n-                        throw e;\n-                    }\n-                    if (msg == Codec2.DecodeResult.NEED_MORE_INPUT) {\n-                        message.readerIndex(saveReaderIndex);\n-                        break;\n-                    } else {\n-                        if (saveReaderIndex == message.readerIndex()) {\n-                            buffer = org.apache.dubbo.remoting.buffer.ChannelBuffers.EMPTY_BUFFER;\n-                            throw new IOException(\"Decode without read data.\");\n-                        }\n-                        if (msg != null) {\n-                            Channels.fireMessageReceived(ctx, msg, event.getRemoteAddress());\n-                        }\n-                    }\n-                } while (message.readable());\n-            } finally {\n-                if (message.readable()) {\n-                    message.discardReadBytes();\n-                    buffer = message;\n-                } else {\n-                    buffer = org.apache.dubbo.remoting.buffer.ChannelBuffers.EMPTY_BUFFER;\n-                }\n-                NettyChannel.removeChannelIfDisconnected(ctx.getChannel());\n-            }\n-        }\n-\n-        @Override\n-        public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception {\n-            ctx.sendUpstream(e);\n-        }\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.netty;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.Codec2;\r\n+import org.apache.dubbo.remoting.buffer.DynamicChannelBuffer;\r\n+\r\n+import org.jboss.netty.buffer.ChannelBuffer;\r\n+import org.jboss.netty.buffer.ChannelBuffers;\r\n+import org.jboss.netty.channel.Channel;\r\n+import org.jboss.netty.channel.ChannelHandler;\r\n+import org.jboss.netty.channel.ChannelHandler.Sharable;\r\n+import org.jboss.netty.channel.ChannelHandlerContext;\r\n+import org.jboss.netty.channel.Channels;\r\n+import org.jboss.netty.channel.ExceptionEvent;\r\n+import org.jboss.netty.channel.MessageEvent;\r\n+import org.jboss.netty.channel.SimpleChannelUpstreamHandler;\r\n+import org.jboss.netty.handler.codec.oneone.OneToOneEncoder;\r\n+\r\n+import java.io.IOException;\r\n+\r\n+import static org.apache.dubbo.remoting.Constants.BUFFER_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.DEFAULT_BUFFER_SIZE;\r\n+import static org.apache.dubbo.remoting.Constants.MAX_BUFFER_SIZE;\r\n+import static org.apache.dubbo.remoting.Constants.MIN_BUFFER_SIZE;\r\n+\r\n+/**\r\n+ * NettyCodecAdapter.\r\n+ */\r\n+final class NettyCodecAdapter {\r\n+\r\n+    private final ChannelHandler encoder = new InternalEncoder();\r\n+\r\n+    private final ChannelHandler decoder = new InternalDecoder();\r\n+\r\n+    private final Codec2 codec;\r\n+\r\n+    private final URL url;\r\n+\r\n+    private final int bufferSize;\r\n+\r\n+    private final org.apache.dubbo.remoting.ChannelHandler handler;\r\n+\r\n+    public NettyCodecAdapter(Codec2 codec, URL url, org.apache.dubbo.remoting.ChannelHandler handler) {\r\n+        this.codec = codec;\r\n+        this.url = url;\r\n+        this.handler = handler;\r\n+        int b = url.getPositiveParameter(BUFFER_KEY, DEFAULT_BUFFER_SIZE);\r\n+        this.bufferSize = b >= MIN_BUFFER_SIZE && b <= MAX_BUFFER_SIZE ? b : DEFAULT_BUFFER_SIZE;\r\n+    }\r\n+\r\n+    public ChannelHandler getEncoder() {\r\n+        return encoder;\r\n+    }\r\n+\r\n+    public ChannelHandler getDecoder() {\r\n+        return decoder;\r\n+    }\r\n+\r\n+    @Sharable\r\n+    private class InternalEncoder extends OneToOneEncoder {\r\n+\r\n+        @Override\r\n+        protected Object encode(ChannelHandlerContext ctx, Channel ch, Object msg) throws Exception {\r\n+            org.apache.dubbo.remoting.buffer.ChannelBuffer buffer =\r\n+                    org.apache.dubbo.remoting.buffer.ChannelBuffers.dynamicBuffer(1024);\r\n+            NettyChannel channel = NettyChannel.getOrAddChannel(ch, url, handler);\r\n+            try {\r\n+                codec.encode(channel, buffer, msg);\r\n+            } finally {\r\n+                NettyChannel.removeChannelIfDisconnected(ch);\r\n+            }\r\n+            return ChannelBuffers.wrappedBuffer(buffer.toByteBuffer());\r\n+        }\r\n+    }\r\n+\r\n+    private class InternalDecoder extends SimpleChannelUpstreamHandler {\r\n+\r\n+        private org.apache.dubbo.remoting.buffer.ChannelBuffer buffer =\r\n+                org.apache.dubbo.remoting.buffer.ChannelBuffers.EMPTY_BUFFER;\r\n+\r\n+        @Override\r\n+        public void messageReceived(ChannelHandlerContext ctx, MessageEvent event) throws Exception {\r\n+            Object o = event.getMessage();\r\n+            if (!(o instanceof ChannelBuffer)) {\r\n+                ctx.sendUpstream(event);\r\n+                return;\r\n+            }\r\n+\r\n+            ChannelBuffer input = (ChannelBuffer) o;\r\n+            int readable = input.readableBytes();\r\n+            if (readable <= 0) {\r\n+                return;\r\n+            }\r\n+\r\n+            org.apache.dubbo.remoting.buffer.ChannelBuffer message;\r\n+            if (buffer.readable()) {\r\n+                if (buffer instanceof DynamicChannelBuffer) {\r\n+                    buffer.writeBytes(input.toByteBuffer());\r\n+                    message = buffer;\r\n+                } else {\r\n+                    int size = buffer.readableBytes() + input.readableBytes();\r\n+                    message = org.apache.dubbo.remoting.buffer.ChannelBuffers.dynamicBuffer(\r\n+                            size > bufferSize ? size : bufferSize);\r\n+                    message.writeBytes(buffer, buffer.readableBytes());\r\n+                    message.writeBytes(input.toByteBuffer());\r\n+                }\r\n+            } else {\r\n+                message = org.apache.dubbo.remoting.buffer.ChannelBuffers.wrappedBuffer(\r\n+                        input.toByteBuffer());\r\n+            }\r\n+\r\n+            NettyChannel channel = NettyChannel.getOrAddChannel(ctx.getChannel(), url, handler);\r\n+            Object msg;\r\n+            int saveReaderIndex;\r\n+\r\n+            try {\r\n+                // decode object.\r\n+                do {\r\n+                    saveReaderIndex = message.readerIndex();\r\n+                    try {\r\n+                        msg = codec.decode(channel, message);\r\n+                    } catch (IOException e) {\r\n+                        buffer = org.apache.dubbo.remoting.buffer.ChannelBuffers.EMPTY_BUFFER;\r\n+                        throw e;\r\n+                    }\r\n+                    if (msg == Codec2.DecodeResult.NEED_MORE_INPUT) {\r\n+                        message.readerIndex(saveReaderIndex);\r\n+                        break;\r\n+                    } else {\r\n+                        if (saveReaderIndex == message.readerIndex()) {\r\n+                            buffer = org.apache.dubbo.remoting.buffer.ChannelBuffers.EMPTY_BUFFER;\r\n+                            throw new IOException(\"Decode without read data.\");\r\n+                        }\r\n+                        if (msg != null) {\r\n+                            Channels.fireMessageReceived(ctx, msg, event.getRemoteAddress());\r\n+                        }\r\n+                    }\r\n+                } while (message.readable());\r\n+            } finally {\r\n+                if (message.readable()) {\r\n+                    message.discardReadBytes();\r\n+                    buffer = message;\r\n+                } else {\r\n+                    buffer = org.apache.dubbo.remoting.buffer.ChannelBuffers.EMPTY_BUFFER;\r\n+                }\r\n+                NettyChannel.removeChannelIfDisconnected(ctx.getChannel());\r\n+            }\r\n+        }\r\n+\r\n+        @Override\r\n+        public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception {\r\n+            ctx.sendUpstream(e);\r\n+        }\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/remoting/transport/netty/NettyHandler.java", "source2": "org/apache/dubbo/remoting/transport/netty/NettyHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,129 +1,129 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.netty;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-\n-import org.jboss.netty.channel.ChannelHandler.Sharable;\n-import org.jboss.netty.channel.ChannelHandlerContext;\n-import org.jboss.netty.channel.ChannelStateEvent;\n-import org.jboss.netty.channel.ExceptionEvent;\n-import org.jboss.netty.channel.MessageEvent;\n-import org.jboss.netty.channel.SimpleChannelHandler;\n-\n-import java.net.InetSocketAddress;\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-/**\n- * NettyHandler\n- */\n-@Sharable\n-public class NettyHandler extends SimpleChannelHandler {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(NettyHandler.class);\n-\n-    private final Map<String, Channel> channels = new ConcurrentHashMap<String, Channel>(); // <ip:port, channel>\n-\n-    private final URL url;\n-\n-    private final ChannelHandler handler;\n-\n-    public NettyHandler(URL url, ChannelHandler handler) {\n-        if (url == null) {\n-            throw new IllegalArgumentException(\"url == null\");\n-        }\n-        if (handler == null) {\n-            throw new IllegalArgumentException(\"handler == null\");\n-        }\n-        this.url = url;\n-        this.handler = handler;\n-    }\n-\n-    public Map<String, Channel> getChannels() {\n-        return channels;\n-    }\n-\n-    @Override\n-    public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {\n-        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.getChannel(), url, handler);\n-        try {\n-            if (channel != null) {\n-                channels.put(NetUtils.toAddressString((InetSocketAddress) ctx.getChannel().getRemoteAddress()), channel);\n-            }\n-            handler.connected(channel);\n-        } finally {\n-            NettyChannel.removeChannelIfDisconnected(ctx.getChannel());\n-        }\n-\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"The connection between \" + channel.getRemoteAddress() + \" and \" + channel.getLocalAddress() + \" is established\");\n-        }\n-    }\n-\n-    @Override\n-    public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {\n-        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.getChannel(), url, handler);\n-        try {\n-            channels.remove(NetUtils.toAddressString((InetSocketAddress) ctx.getChannel().getRemoteAddress()));\n-            handler.disconnected(channel);\n-        } finally {\n-            NettyChannel.removeChannelIfDisconnected(ctx.getChannel());\n-        }\n-\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"The connection between \" + channel.getRemoteAddress() + \" and \" + channel.getLocalAddress() + \" is disconnected\");\n-        }\n-    }\n-\n-    @Override\n-    public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {\n-        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.getChannel(), url, handler);\n-        try {\n-            handler.received(channel, e.getMessage());\n-        } finally {\n-            NettyChannel.removeChannelIfDisconnected(ctx.getChannel());\n-        }\n-    }\n-\n-    @Override\n-    public void writeRequested(ChannelHandlerContext ctx, MessageEvent e) throws Exception {\n-        super.writeRequested(ctx, e);\n-        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.getChannel(), url, handler);\n-        try {\n-            handler.sent(channel, e.getMessage());\n-        } finally {\n-            NettyChannel.removeChannelIfDisconnected(ctx.getChannel());\n-        }\n-    }\n-\n-    @Override\n-    public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception {\n-        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.getChannel(), url, handler);\n-        try {\n-            handler.caught(channel, e.getCause());\n-        } finally {\n-            NettyChannel.removeChannelIfDisconnected(ctx.getChannel());\n-        }\n-    }\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.netty;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+\r\n+import org.jboss.netty.channel.ChannelHandler.Sharable;\r\n+import org.jboss.netty.channel.ChannelHandlerContext;\r\n+import org.jboss.netty.channel.ChannelStateEvent;\r\n+import org.jboss.netty.channel.ExceptionEvent;\r\n+import org.jboss.netty.channel.MessageEvent;\r\n+import org.jboss.netty.channel.SimpleChannelHandler;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+/**\r\n+ * NettyHandler\r\n+ */\r\n+@Sharable\r\n+public class NettyHandler extends SimpleChannelHandler {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(NettyHandler.class);\r\n+\r\n+    private final Map<String, Channel> channels = new ConcurrentHashMap<String, Channel>(); // <ip:port, channel>\r\n+\r\n+    private final URL url;\r\n+\r\n+    private final ChannelHandler handler;\r\n+\r\n+    public NettyHandler(URL url, ChannelHandler handler) {\r\n+        if (url == null) {\r\n+            throw new IllegalArgumentException(\"url == null\");\r\n+        }\r\n+        if (handler == null) {\r\n+            throw new IllegalArgumentException(\"handler == null\");\r\n+        }\r\n+        this.url = url;\r\n+        this.handler = handler;\r\n+    }\r\n+\r\n+    public Map<String, Channel> getChannels() {\r\n+        return channels;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {\r\n+        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.getChannel(), url, handler);\r\n+        try {\r\n+            if (channel != null) {\r\n+                channels.put(NetUtils.toAddressString((InetSocketAddress) ctx.getChannel().getRemoteAddress()), channel);\r\n+            }\r\n+            handler.connected(channel);\r\n+        } finally {\r\n+            NettyChannel.removeChannelIfDisconnected(ctx.getChannel());\r\n+        }\r\n+\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"The connection between \" + channel.getRemoteAddress() + \" and \" + channel.getLocalAddress() + \" is established\");\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {\r\n+        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.getChannel(), url, handler);\r\n+        try {\r\n+            channels.remove(NetUtils.toAddressString((InetSocketAddress) ctx.getChannel().getRemoteAddress()));\r\n+            handler.disconnected(channel);\r\n+        } finally {\r\n+            NettyChannel.removeChannelIfDisconnected(ctx.getChannel());\r\n+        }\r\n+\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"The connection between \" + channel.getRemoteAddress() + \" and \" + channel.getLocalAddress() + \" is disconnected\");\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {\r\n+        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.getChannel(), url, handler);\r\n+        try {\r\n+            handler.received(channel, e.getMessage());\r\n+        } finally {\r\n+            NettyChannel.removeChannelIfDisconnected(ctx.getChannel());\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeRequested(ChannelHandlerContext ctx, MessageEvent e) throws Exception {\r\n+        super.writeRequested(ctx, e);\r\n+        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.getChannel(), url, handler);\r\n+        try {\r\n+            handler.sent(channel, e.getMessage());\r\n+        } finally {\r\n+            NettyChannel.removeChannelIfDisconnected(ctx.getChannel());\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception {\r\n+        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.getChannel(), url, handler);\r\n+        try {\r\n+            handler.caught(channel, e.getCause());\r\n+        } finally {\r\n+            NettyChannel.removeChannelIfDisconnected(ctx.getChannel());\r\n+        }\r\n+    }\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/remoting/transport/netty/NettyHelper.java", "source2": "org/apache/dubbo/remoting/transport/netty/NettyHelper.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,117 +1,117 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.netty;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-\n-import org.jboss.netty.logging.AbstractInternalLogger;\n-import org.jboss.netty.logging.InternalLogger;\n-import org.jboss.netty.logging.InternalLoggerFactory;\n-\n-final class NettyHelper {\n-\n-    public static void setNettyLoggerFactory() {\n-        InternalLoggerFactory factory = InternalLoggerFactory.getDefaultFactory();\n-        if (!(factory instanceof DubboLoggerFactory)) {\n-            InternalLoggerFactory.setDefaultFactory(new DubboLoggerFactory());\n-        }\n-    }\n-\n-    static class DubboLoggerFactory extends InternalLoggerFactory {\n-\n-        @Override\n-        public InternalLogger newInstance(String name) {\n-            return new DubboLogger(LoggerFactory.getLogger(name));\n-        }\n-    }\n-\n-    static class DubboLogger extends AbstractInternalLogger {\n-\n-        private Logger logger;\n-\n-        DubboLogger(Logger logger) {\n-            this.logger = logger;\n-        }\n-\n-        @Override\n-        public boolean isDebugEnabled() {\n-            return logger.isDebugEnabled();\n-        }\n-\n-        @Override\n-        public boolean isInfoEnabled() {\n-            return logger.isInfoEnabled();\n-        }\n-\n-        @Override\n-        public boolean isWarnEnabled() {\n-            return logger.isWarnEnabled();\n-        }\n-\n-        @Override\n-        public boolean isErrorEnabled() {\n-            return logger.isErrorEnabled();\n-        }\n-\n-        @Override\n-        public void debug(String msg) {\n-            logger.debug(msg);\n-        }\n-\n-        @Override\n-        public void debug(String msg, Throwable cause) {\n-            logger.debug(msg, cause);\n-        }\n-\n-        @Override\n-        public void info(String msg) {\n-            logger.info(msg);\n-        }\n-\n-        @Override\n-        public void info(String msg, Throwable cause) {\n-            logger.info(msg, cause);\n-        }\n-\n-        @Override\n-        public void warn(String msg) {\n-            logger.warn(msg);\n-        }\n-\n-        @Override\n-        public void warn(String msg, Throwable cause) {\n-            logger.warn(msg, cause);\n-        }\n-\n-        @Override\n-        public void error(String msg) {\n-            logger.error(msg);\n-        }\n-\n-        @Override\n-        public void error(String msg, Throwable cause) {\n-            logger.error(msg, cause);\n-        }\n-\n-        @Override\n-        public String toString() {\n-            return logger.toString();\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.netty;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+\r\n+import org.jboss.netty.logging.AbstractInternalLogger;\r\n+import org.jboss.netty.logging.InternalLogger;\r\n+import org.jboss.netty.logging.InternalLoggerFactory;\r\n+\r\n+final class NettyHelper {\r\n+\r\n+    public static void setNettyLoggerFactory() {\r\n+        InternalLoggerFactory factory = InternalLoggerFactory.getDefaultFactory();\r\n+        if (!(factory instanceof DubboLoggerFactory)) {\r\n+            InternalLoggerFactory.setDefaultFactory(new DubboLoggerFactory());\r\n+        }\r\n+    }\r\n+\r\n+    static class DubboLoggerFactory extends InternalLoggerFactory {\r\n+\r\n+        @Override\r\n+        public InternalLogger newInstance(String name) {\r\n+            return new DubboLogger(LoggerFactory.getLogger(name));\r\n+        }\r\n+    }\r\n+\r\n+    static class DubboLogger extends AbstractInternalLogger {\r\n+\r\n+        private Logger logger;\r\n+\r\n+        DubboLogger(Logger logger) {\r\n+            this.logger = logger;\r\n+        }\r\n+\r\n+        @Override\r\n+        public boolean isDebugEnabled() {\r\n+            return logger.isDebugEnabled();\r\n+        }\r\n+\r\n+        @Override\r\n+        public boolean isInfoEnabled() {\r\n+            return logger.isInfoEnabled();\r\n+        }\r\n+\r\n+        @Override\r\n+        public boolean isWarnEnabled() {\r\n+            return logger.isWarnEnabled();\r\n+        }\r\n+\r\n+        @Override\r\n+        public boolean isErrorEnabled() {\r\n+            return logger.isErrorEnabled();\r\n+        }\r\n+\r\n+        @Override\r\n+        public void debug(String msg) {\r\n+            logger.debug(msg);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void debug(String msg, Throwable cause) {\r\n+            logger.debug(msg, cause);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void info(String msg) {\r\n+            logger.info(msg);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void info(String msg, Throwable cause) {\r\n+            logger.info(msg, cause);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void warn(String msg) {\r\n+            logger.warn(msg);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void warn(String msg, Throwable cause) {\r\n+            logger.warn(msg, cause);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void error(String msg) {\r\n+            logger.error(msg);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void error(String msg, Throwable cause) {\r\n+            logger.error(msg, cause);\r\n+        }\r\n+\r\n+        @Override\r\n+        public String toString() {\r\n+            return logger.toString();\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/netty4/NettyChannel.java", "source2": "org/apache/dubbo/remoting/transport/netty4/NettyChannel.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,276 +1,276 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.netty4;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.transport.AbstractChannel;\n-import org.apache.dubbo.remoting.utils.PayloadDropper;\n-\n-import io.netty.channel.Channel;\n-import io.netty.channel.ChannelFuture;\n-\n-import java.net.InetSocketAddress;\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-import java.util.concurrent.atomic.AtomicBoolean;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-\n-/**\n- * NettyChannel maintains the cache of channel.\n- */\n-final class NettyChannel extends AbstractChannel {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(NettyChannel.class);\n-    /**\n-     * the cache for netty channel and dubbo channel\n-     */\n-    private static final ConcurrentMap<Channel, NettyChannel> CHANNEL_MAP = new ConcurrentHashMap<Channel, NettyChannel>();\n-    /**\n-     * netty channel\n-     */\n-    private final Channel channel;\n-\n-    private final Map<String, Object> attributes = new ConcurrentHashMap<String, Object>();\n-\n-    private final AtomicBoolean active = new AtomicBoolean(false);\n-\n-    /**\n-     * The constructor of NettyChannel.\n-     * It is private so NettyChannel usually create by {@link NettyChannel#getOrAddChannel(Channel, URL, ChannelHandler)}\n-     *\n-     * @param channel netty channel\n-     * @param url\n-     * @param handler dubbo handler that contain netty handler\n-     */\n-    private NettyChannel(Channel channel, URL url, ChannelHandler handler) {\n-        super(url, handler);\n-        if (channel == null) {\n-            throw new IllegalArgumentException(\"netty channel == null;\");\n-        }\n-        this.channel = channel;\n-    }\n-\n-    /**\n-     * Get dubbo channel by netty channel through channel cache.\n-     * Put netty channel into it if dubbo channel don't exist in the cache.\n-     *\n-     * @param ch      netty channel\n-     * @param url\n-     * @param handler dubbo handler that contain netty's handler\n-     * @return\n-     */\n-    static NettyChannel getOrAddChannel(Channel ch, URL url, ChannelHandler handler) {\n-        if (ch == null) {\n-            return null;\n-        }\n-        NettyChannel ret = CHANNEL_MAP.get(ch);\n-        if (ret == null) {\n-            NettyChannel nettyChannel = new NettyChannel(ch, url, handler);\n-            if (ch.isActive()) {\n-                nettyChannel.markActive(true);\n-                ret = CHANNEL_MAP.putIfAbsent(ch, nettyChannel);\n-            }\n-            if (ret == null) {\n-                ret = nettyChannel;\n-            }\n-        }\n-        return ret;\n-    }\n-\n-    /**\n-     * Remove the inactive channel.\n-     *\n-     * @param ch netty channel\n-     */\n-    static void removeChannelIfDisconnected(Channel ch) {\n-        if (ch != null && !ch.isActive()) {\n-            NettyChannel nettyChannel = CHANNEL_MAP.remove(ch);\n-            if (nettyChannel != null) {\n-                nettyChannel.markActive(false);\n-            }\n-        }\n-    }\n-\n-    static void removeChannel(Channel ch) {\n-        if (ch != null) {\n-            NettyChannel nettyChannel = CHANNEL_MAP.remove(ch);\n-            if (nettyChannel != null) {\n-                nettyChannel.markActive(false);\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public InetSocketAddress getLocalAddress() {\n-        return (InetSocketAddress) channel.localAddress();\n-    }\n-\n-    @Override\n-    public InetSocketAddress getRemoteAddress() {\n-        return (InetSocketAddress) channel.remoteAddress();\n-    }\n-\n-    @Override\n-    public boolean isConnected() {\n-        return !isClosed() && active.get();\n-    }\n-\n-    public boolean isActive() {\n-        return active.get();\n-    }\n-\n-    public void markActive(boolean isActive) {\n-        active.set(isActive);\n-    }\n-\n-    /**\n-     * Send message by netty and whether to wait the completion of the send.\n-     *\n-     * @param message message that need send.\n-     * @param sent    whether to ack async-sent\n-     * @throws RemotingException throw RemotingException if wait until timeout or any exception thrown by method body that surrounded by try-catch.\n-     */\n-    @Override\n-    public void send(Object message, boolean sent) throws RemotingException {\n-        // whether the channel is closed\n-        super.send(message, sent);\n-\n-        boolean success = true;\n-        int timeout = 0;\n-        try {\n-            ChannelFuture future = channel.writeAndFlush(message);\n-            if (sent) {\n-                // wait timeout ms\n-                timeout = getUrl().getPositiveParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT);\n-                success = future.await(timeout);\n-            }\n-            Throwable cause = future.cause();\n-            if (cause != null) {\n-                throw cause;\n-            }\n-        } catch (Throwable e) {\n-            removeChannelIfDisconnected(channel);\n-            throw new RemotingException(this, \"Failed to send message \" + PayloadDropper.getRequestWithoutData(message) + \" to \" + getRemoteAddress() + \", cause: \" + e.getMessage(), e);\n-        }\n-        if (!success) {\n-            throw new RemotingException(this, \"Failed to send message \" + PayloadDropper.getRequestWithoutData(message) + \" to \" + getRemoteAddress()\n-                    + \"in timeout(\" + timeout + \"ms) limit\");\n-        }\n-    }\n-\n-    @Override\n-    public void close() {\n-        try {\n-            super.close();\n-        } catch (Exception e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-        try {\n-            removeChannelIfDisconnected(channel);\n-        } catch (Exception e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-        try {\n-            attributes.clear();\n-        } catch (Exception e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-        try {\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"Close netty channel \" + channel);\n-            }\n-            channel.close();\n-        } catch (Exception e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-    }\n-\n-    @Override\n-    public boolean hasAttribute(String key) {\n-        return attributes.containsKey(key);\n-    }\n-\n-    @Override\n-    public Object getAttribute(String key) {\n-        return attributes.get(key);\n-    }\n-\n-    @Override\n-    public void setAttribute(String key, Object value) {\n-        // The null value is unallowed in the ConcurrentHashMap.\n-        if (value == null) {\n-            attributes.remove(key);\n-        } else {\n-            attributes.put(key, value);\n-        }\n-    }\n-\n-    @Override\n-    public void removeAttribute(String key) {\n-        attributes.remove(key);\n-    }\n-\n-    @Override\n-    public int hashCode() {\n-        final int prime = 31;\n-        int result = 1;\n-        result = prime * result + ((channel == null) ? 0 : channel.hashCode());\n-        return result;\n-    }\n-\n-    @Override\n-    public boolean equals(Object obj) {\n-        if (this == obj) {\n-            return true;\n-        }\n-        if (obj == null) {\n-            return false;\n-        }\n-\n-        // FIXME: a hack to make org.apache.dubbo.remoting.exchange.support.DefaultFuture.closeChannel work\n-        if (obj instanceof NettyClient) {\n-            NettyClient client = (NettyClient) obj;\n-            return channel.equals(client.getNettyChannel());\n-        }\n-\n-        if (getClass() != obj.getClass()) {\n-            return false;\n-        }\n-        NettyChannel other = (NettyChannel) obj;\n-        if (channel == null) {\n-            if (other.channel != null) {\n-                return false;\n-            }\n-        } else if (!channel.equals(other.channel)) {\n-            return false;\n-        }\n-        return true;\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"NettyChannel [channel=\" + channel + \"]\";\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.netty4;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.transport.AbstractChannel;\r\n+import org.apache.dubbo.remoting.utils.PayloadDropper;\r\n+\r\n+import io.netty.channel.Channel;\r\n+import io.netty.channel.ChannelFuture;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+\r\n+/**\r\n+ * NettyChannel maintains the cache of channel.\r\n+ */\r\n+final class NettyChannel extends AbstractChannel {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(NettyChannel.class);\r\n+    /**\r\n+     * the cache for netty channel and dubbo channel\r\n+     */\r\n+    private static final ConcurrentMap<Channel, NettyChannel> CHANNEL_MAP = new ConcurrentHashMap<Channel, NettyChannel>();\r\n+    /**\r\n+     * netty channel\r\n+     */\r\n+    private final Channel channel;\r\n+\r\n+    private final Map<String, Object> attributes = new ConcurrentHashMap<String, Object>();\r\n+\r\n+    private final AtomicBoolean active = new AtomicBoolean(false);\r\n+\r\n+    /**\r\n+     * The constructor of NettyChannel.\r\n+     * It is private so NettyChannel usually create by {@link NettyChannel#getOrAddChannel(Channel, URL, ChannelHandler)}\r\n+     *\r\n+     * @param channel netty channel\r\n+     * @param url\r\n+     * @param handler dubbo handler that contain netty handler\r\n+     */\r\n+    private NettyChannel(Channel channel, URL url, ChannelHandler handler) {\r\n+        super(url, handler);\r\n+        if (channel == null) {\r\n+            throw new IllegalArgumentException(\"netty channel == null;\");\r\n+        }\r\n+        this.channel = channel;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get dubbo channel by netty channel through channel cache.\r\n+     * Put netty channel into it if dubbo channel don't exist in the cache.\r\n+     *\r\n+     * @param ch      netty channel\r\n+     * @param url\r\n+     * @param handler dubbo handler that contain netty's handler\r\n+     * @return\r\n+     */\r\n+    static NettyChannel getOrAddChannel(Channel ch, URL url, ChannelHandler handler) {\r\n+        if (ch == null) {\r\n+            return null;\r\n+        }\r\n+        NettyChannel ret = CHANNEL_MAP.get(ch);\r\n+        if (ret == null) {\r\n+            NettyChannel nettyChannel = new NettyChannel(ch, url, handler);\r\n+            if (ch.isActive()) {\r\n+                nettyChannel.markActive(true);\r\n+                ret = CHANNEL_MAP.putIfAbsent(ch, nettyChannel);\r\n+            }\r\n+            if (ret == null) {\r\n+                ret = nettyChannel;\r\n+            }\r\n+        }\r\n+        return ret;\r\n+    }\r\n+\r\n+    /**\r\n+     * Remove the inactive channel.\r\n+     *\r\n+     * @param ch netty channel\r\n+     */\r\n+    static void removeChannelIfDisconnected(Channel ch) {\r\n+        if (ch != null && !ch.isActive()) {\r\n+            NettyChannel nettyChannel = CHANNEL_MAP.remove(ch);\r\n+            if (nettyChannel != null) {\r\n+                nettyChannel.markActive(false);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    static void removeChannel(Channel ch) {\r\n+        if (ch != null) {\r\n+            NettyChannel nettyChannel = CHANNEL_MAP.remove(ch);\r\n+            if (nettyChannel != null) {\r\n+                nettyChannel.markActive(false);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public InetSocketAddress getLocalAddress() {\r\n+        return (InetSocketAddress) channel.localAddress();\r\n+    }\r\n+\r\n+    @Override\r\n+    public InetSocketAddress getRemoteAddress() {\r\n+        return (InetSocketAddress) channel.remoteAddress();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isConnected() {\r\n+        return !isClosed() && active.get();\r\n+    }\r\n+\r\n+    public boolean isActive() {\r\n+        return active.get();\r\n+    }\r\n+\r\n+    public void markActive(boolean isActive) {\r\n+        active.set(isActive);\r\n+    }\r\n+\r\n+    /**\r\n+     * Send message by netty and whether to wait the completion of the send.\r\n+     *\r\n+     * @param message message that need send.\r\n+     * @param sent    whether to ack async-sent\r\n+     * @throws RemotingException throw RemotingException if wait until timeout or any exception thrown by method body that surrounded by try-catch.\r\n+     */\r\n+    @Override\r\n+    public void send(Object message, boolean sent) throws RemotingException {\r\n+        // whether the channel is closed\r\n+        super.send(message, sent);\r\n+\r\n+        boolean success = true;\r\n+        int timeout = 0;\r\n+        try {\r\n+            ChannelFuture future = channel.writeAndFlush(message);\r\n+            if (sent) {\r\n+                // wait timeout ms\r\n+                timeout = getUrl().getPositiveParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT);\r\n+                success = future.await(timeout);\r\n+            }\r\n+            Throwable cause = future.cause();\r\n+            if (cause != null) {\r\n+                throw cause;\r\n+            }\r\n+        } catch (Throwable e) {\r\n+            removeChannelIfDisconnected(channel);\r\n+            throw new RemotingException(this, \"Failed to send message \" + PayloadDropper.getRequestWithoutData(message) + \" to \" + getRemoteAddress() + \", cause: \" + e.getMessage(), e);\r\n+        }\r\n+        if (!success) {\r\n+            throw new RemotingException(this, \"Failed to send message \" + PayloadDropper.getRequestWithoutData(message) + \" to \" + getRemoteAddress()\r\n+                    + \"in timeout(\" + timeout + \"ms) limit\");\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close() {\r\n+        try {\r\n+            super.close();\r\n+        } catch (Exception e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+        try {\r\n+            removeChannelIfDisconnected(channel);\r\n+        } catch (Exception e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+        try {\r\n+            attributes.clear();\r\n+        } catch (Exception e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+        try {\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"Close netty channel \" + channel);\r\n+            }\r\n+            channel.close();\r\n+        } catch (Exception e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean hasAttribute(String key) {\r\n+        return attributes.containsKey(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getAttribute(String key) {\r\n+        return attributes.get(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setAttribute(String key, Object value) {\r\n+        // The null value is unallowed in the ConcurrentHashMap.\r\n+        if (value == null) {\r\n+            attributes.remove(key);\r\n+        } else {\r\n+            attributes.put(key, value);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeAttribute(String key) {\r\n+        attributes.remove(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public int hashCode() {\r\n+        final int prime = 31;\r\n+        int result = 1;\r\n+        result = prime * result + ((channel == null) ? 0 : channel.hashCode());\r\n+        return result;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean equals(Object obj) {\r\n+        if (this == obj) {\r\n+            return true;\r\n+        }\r\n+        if (obj == null) {\r\n+            return false;\r\n+        }\r\n+\r\n+        // FIXME: a hack to make org.apache.dubbo.remoting.exchange.support.DefaultFuture.closeChannel work\r\n+        if (obj instanceof NettyClient) {\r\n+            NettyClient client = (NettyClient) obj;\r\n+            return channel.equals(client.getNettyChannel());\r\n+        }\r\n+\r\n+        if (getClass() != obj.getClass()) {\r\n+            return false;\r\n+        }\r\n+        NettyChannel other = (NettyChannel) obj;\r\n+        if (channel == null) {\r\n+            if (other.channel != null) {\r\n+                return false;\r\n+            }\r\n+        } else if (!channel.equals(other.channel)) {\r\n+            return false;\r\n+        }\r\n+        return true;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"NettyChannel [channel=\" + channel + \"]\";\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/netty4/NettyClient.java", "source2": "org/apache/dubbo/remoting/transport/netty4/NettyClient.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,217 +1,217 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.netty4;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.Version;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ConfigUtils;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.transport.AbstractClient;\n-import org.apache.dubbo.remoting.utils.UrlUtils;\n-\n-import io.netty.bootstrap.Bootstrap;\n-import io.netty.buffer.PooledByteBufAllocator;\n-import io.netty.channel.Channel;\n-import io.netty.channel.ChannelFuture;\n-import io.netty.channel.ChannelInitializer;\n-import io.netty.channel.ChannelOption;\n-import io.netty.channel.EventLoopGroup;\n-import io.netty.channel.socket.SocketChannel;\n-import io.netty.handler.proxy.Socks5ProxyHandler;\n-import io.netty.handler.timeout.IdleStateHandler;\n-\n-import java.net.InetSocketAddress;\n-\n-import static java.util.concurrent.TimeUnit.MILLISECONDS;\n-import static org.apache.dubbo.common.constants.CommonConstants.SSL_ENABLED_KEY;\n-import static org.apache.dubbo.remoting.transport.netty4.NettyEventLoopFactory.eventLoopGroup;\n-import static org.apache.dubbo.remoting.transport.netty4.NettyEventLoopFactory.socketChannelClass;\n-\n-/**\n- * NettyClient.\n- */\n-public class NettyClient extends AbstractClient {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(NettyClient.class);\n-    /**\n-     * netty client bootstrap\n-     */\n-    private static final EventLoopGroup NIO_EVENT_LOOP_GROUP = eventLoopGroup(Constants.DEFAULT_IO_THREADS, \"NettyClientWorker\");\n-\n-    private static final String SOCKS_PROXY_HOST = \"socksProxyHost\";\n-\n-    private static final String SOCKS_PROXY_PORT = \"socksProxyPort\";\n-\n-    private static final String DEFAULT_SOCKS_PROXY_PORT = \"1080\";\n-\n-    private Bootstrap bootstrap;\n-\n-    /**\n-     * current channel. Each successful invocation of {@link NettyClient#doConnect()} will\n-     * replace this with new channel and close old channel.\n-     * <b>volatile, please copy reference to use.</b>\n-     */\n-    private volatile Channel channel;\n-\n-    /**\n-     * The constructor of NettyClient.\n-     * It wil init and start netty.\n-     */\n-    public NettyClient(final URL url, final ChannelHandler handler) throws RemotingException {\n-    \t// you can customize name and type of client thread pool by THREAD_NAME_KEY and THREADPOOL_KEY in CommonConstants.\n-    \t// the handler will be wrapped: MultiMessageHandler->HeartbeatHandler->handler\n-    \tsuper(url, wrapChannelHandler(url, handler));\n-    }\n-\n-    /**\n-     * Init bootstrap\n-     *\n-     * @throws Throwable\n-     */\n-    @Override\n-    protected void doOpen() throws Throwable {\n-        final NettyClientHandler nettyClientHandler = new NettyClientHandler(getUrl(), this);\n-        bootstrap = new Bootstrap();\n-        bootstrap.group(NIO_EVENT_LOOP_GROUP)\n-                .option(ChannelOption.SO_KEEPALIVE, true)\n-                .option(ChannelOption.TCP_NODELAY, true)\n-                .option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT)\n-                //.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, getTimeout())\n-                .channel(socketChannelClass());\n-\n-        bootstrap.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, Math.max(3000, getConnectTimeout()));\n-        bootstrap.handler(new ChannelInitializer<SocketChannel>() {\n-\n-            @Override\n-            protected void initChannel(SocketChannel ch) throws Exception {\n-                int heartbeatInterval = UrlUtils.getHeartbeat(getUrl());\n-\n-                if (getUrl().getParameter(SSL_ENABLED_KEY, false)) {\n-                    ch.pipeline().addLast(\"negotiation\", SslHandlerInitializer.sslClientHandler(getUrl(), nettyClientHandler));\n-                }\n-\n-                NettyCodecAdapter adapter = new NettyCodecAdapter(getCodec(), getUrl(), NettyClient.this);\n-                ch.pipeline()//.addLast(\"logging\",new LoggingHandler(LogLevel.INFO))//for debug\n-                        .addLast(\"decoder\", adapter.getDecoder())\n-                        .addLast(\"encoder\", adapter.getEncoder())\n-                        .addLast(\"client-idle-handler\", new IdleStateHandler(heartbeatInterval, 0, 0, MILLISECONDS))\n-                        .addLast(\"handler\", nettyClientHandler);\n-\n-                String socksProxyHost = ConfigUtils.getProperty(SOCKS_PROXY_HOST);\n-                if(socksProxyHost != null) {\n-                    int socksProxyPort = Integer.parseInt(ConfigUtils.getProperty(SOCKS_PROXY_PORT, DEFAULT_SOCKS_PROXY_PORT));\n-                    Socks5ProxyHandler socks5ProxyHandler = new Socks5ProxyHandler(new InetSocketAddress(socksProxyHost, socksProxyPort));\n-                    ch.pipeline().addFirst(socks5ProxyHandler);\n-                }\n-            }\n-        });\n-    }\n-\n-    @Override\n-    protected void doConnect() throws Throwable {\n-        long start = System.currentTimeMillis();\n-        ChannelFuture future = bootstrap.connect(getConnectAddress());\n-        try {\n-            boolean ret = future.awaitUninterruptibly(getConnectTimeout(), MILLISECONDS);\n-\n-            if (ret && future.isSuccess()) {\n-                Channel newChannel = future.channel();\n-                try {\n-                    // Close old channel\n-                    // copy reference\n-                    Channel oldChannel = NettyClient.this.channel;\n-                    if (oldChannel != null) {\n-                        try {\n-                            if (logger.isInfoEnabled()) {\n-                                logger.info(\"Close old netty channel \" + oldChannel + \" on create new netty channel \" + newChannel);\n-                            }\n-                            oldChannel.close();\n-                        } finally {\n-                            NettyChannel.removeChannelIfDisconnected(oldChannel);\n-                        }\n-                    }\n-                } finally {\n-                    if (NettyClient.this.isClosed()) {\n-                        try {\n-                            if (logger.isInfoEnabled()) {\n-                                logger.info(\"Close new netty channel \" + newChannel + \", because the client closed.\");\n-                            }\n-                            newChannel.close();\n-                        } finally {\n-                            NettyClient.this.channel = null;\n-                            NettyChannel.removeChannelIfDisconnected(newChannel);\n-                        }\n-                    } else {\n-                        NettyClient.this.channel = newChannel;\n-                    }\n-                }\n-            } else if (future.cause() != null) {\n-                throw new RemotingException(this, \"client(url: \" + getUrl() + \") failed to connect to server \"\n-                        + getRemoteAddress() + \", error message is:\" + future.cause().getMessage(), future.cause());\n-            } else {\n-                throw new RemotingException(this, \"client(url: \" + getUrl() + \") failed to connect to server \"\n-                        + getRemoteAddress() + \" client-side timeout \"\n-                        + getConnectTimeout() + \"ms (elapsed: \" + (System.currentTimeMillis() - start) + \"ms) from netty client \"\n-                        + NetUtils.getLocalHost() + \" using dubbo version \" + Version.getVersion());\n-            }\n-        } finally {\n-            // just add new valid channel to NettyChannel's cache\n-            if (!isConnected()) {\n-                //future.cancel(true);\n-            }\n-        }\n-    }\n-\n-    @Override\n-    protected void doDisConnect() throws Throwable {\n-        try {\n-            NettyChannel.removeChannelIfDisconnected(channel);\n-        } catch (Throwable t) {\n-            logger.warn(t.getMessage());\n-        }\n-    }\n-\n-    @Override\n-    protected void doClose() throws Throwable {\n-        // can't shutdown nioEventLoopGroup because the method will be invoked when closing one channel but not a client,\n-        // but when and how to close the nioEventLoopGroup ?\n-        // nioEventLoopGroup.shutdownGracefully();\n-    }\n-\n-    @Override\n-    protected org.apache.dubbo.remoting.Channel getChannel() {\n-        Channel c = channel;\n-        if (c == null) {\n-            return null;\n-        }\n-        return NettyChannel.getOrAddChannel(c, getUrl(), this);\n-    }\n-\n-    Channel getNettyChannel() {\n-        return channel;\n-    }\n-\n-    @Override\n-    public boolean canHandleIdle() {\n-        return true;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.netty4;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.Version;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ConfigUtils;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.transport.AbstractClient;\r\n+import org.apache.dubbo.remoting.utils.UrlUtils;\r\n+\r\n+import io.netty.bootstrap.Bootstrap;\r\n+import io.netty.buffer.PooledByteBufAllocator;\r\n+import io.netty.channel.Channel;\r\n+import io.netty.channel.ChannelFuture;\r\n+import io.netty.channel.ChannelInitializer;\r\n+import io.netty.channel.ChannelOption;\r\n+import io.netty.channel.EventLoopGroup;\r\n+import io.netty.channel.socket.SocketChannel;\r\n+import io.netty.handler.proxy.Socks5ProxyHandler;\r\n+import io.netty.handler.timeout.IdleStateHandler;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+\r\n+import static java.util.concurrent.TimeUnit.MILLISECONDS;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SSL_ENABLED_KEY;\r\n+import static org.apache.dubbo.remoting.transport.netty4.NettyEventLoopFactory.eventLoopGroup;\r\n+import static org.apache.dubbo.remoting.transport.netty4.NettyEventLoopFactory.socketChannelClass;\r\n+\r\n+/**\r\n+ * NettyClient.\r\n+ */\r\n+public class NettyClient extends AbstractClient {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(NettyClient.class);\r\n+    /**\r\n+     * netty client bootstrap\r\n+     */\r\n+    private static final EventLoopGroup NIO_EVENT_LOOP_GROUP = eventLoopGroup(Constants.DEFAULT_IO_THREADS, \"NettyClientWorker\");\r\n+\r\n+    private static final String SOCKS_PROXY_HOST = \"socksProxyHost\";\r\n+\r\n+    private static final String SOCKS_PROXY_PORT = \"socksProxyPort\";\r\n+\r\n+    private static final String DEFAULT_SOCKS_PROXY_PORT = \"1080\";\r\n+\r\n+    private Bootstrap bootstrap;\r\n+\r\n+    /**\r\n+     * current channel. Each successful invocation of {@link NettyClient#doConnect()} will\r\n+     * replace this with new channel and close old channel.\r\n+     * <b>volatile, please copy reference to use.</b>\r\n+     */\r\n+    private volatile Channel channel;\r\n+\r\n+    /**\r\n+     * The constructor of NettyClient.\r\n+     * It wil init and start netty.\r\n+     */\r\n+    public NettyClient(final URL url, final ChannelHandler handler) throws RemotingException {\r\n+    \t// you can customize name and type of client thread pool by THREAD_NAME_KEY and THREADPOOL_KEY in CommonConstants.\r\n+    \t// the handler will be wrapped: MultiMessageHandler->HeartbeatHandler->handler\r\n+    \tsuper(url, wrapChannelHandler(url, handler));\r\n+    }\r\n+\r\n+    /**\r\n+     * Init bootstrap\r\n+     *\r\n+     * @throws Throwable\r\n+     */\r\n+    @Override\r\n+    protected void doOpen() throws Throwable {\r\n+        final NettyClientHandler nettyClientHandler = new NettyClientHandler(getUrl(), this);\r\n+        bootstrap = new Bootstrap();\r\n+        bootstrap.group(NIO_EVENT_LOOP_GROUP)\r\n+                .option(ChannelOption.SO_KEEPALIVE, true)\r\n+                .option(ChannelOption.TCP_NODELAY, true)\r\n+                .option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT)\r\n+                //.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, getTimeout())\r\n+                .channel(socketChannelClass());\r\n+\r\n+        bootstrap.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, Math.max(3000, getConnectTimeout()));\r\n+        bootstrap.handler(new ChannelInitializer<SocketChannel>() {\r\n+\r\n+            @Override\r\n+            protected void initChannel(SocketChannel ch) throws Exception {\r\n+                int heartbeatInterval = UrlUtils.getHeartbeat(getUrl());\r\n+\r\n+                if (getUrl().getParameter(SSL_ENABLED_KEY, false)) {\r\n+                    ch.pipeline().addLast(\"negotiation\", SslHandlerInitializer.sslClientHandler(getUrl(), nettyClientHandler));\r\n+                }\r\n+\r\n+                NettyCodecAdapter adapter = new NettyCodecAdapter(getCodec(), getUrl(), NettyClient.this);\r\n+                ch.pipeline()//.addLast(\"logging\",new LoggingHandler(LogLevel.INFO))//for debug\r\n+                        .addLast(\"decoder\", adapter.getDecoder())\r\n+                        .addLast(\"encoder\", adapter.getEncoder())\r\n+                        .addLast(\"client-idle-handler\", new IdleStateHandler(heartbeatInterval, 0, 0, MILLISECONDS))\r\n+                        .addLast(\"handler\", nettyClientHandler);\r\n+\r\n+                String socksProxyHost = ConfigUtils.getProperty(SOCKS_PROXY_HOST);\r\n+                if(socksProxyHost != null) {\r\n+                    int socksProxyPort = Integer.parseInt(ConfigUtils.getProperty(SOCKS_PROXY_PORT, DEFAULT_SOCKS_PROXY_PORT));\r\n+                    Socks5ProxyHandler socks5ProxyHandler = new Socks5ProxyHandler(new InetSocketAddress(socksProxyHost, socksProxyPort));\r\n+                    ch.pipeline().addFirst(socks5ProxyHandler);\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doConnect() throws Throwable {\r\n+        long start = System.currentTimeMillis();\r\n+        ChannelFuture future = bootstrap.connect(getConnectAddress());\r\n+        try {\r\n+            boolean ret = future.awaitUninterruptibly(getConnectTimeout(), MILLISECONDS);\r\n+\r\n+            if (ret && future.isSuccess()) {\r\n+                Channel newChannel = future.channel();\r\n+                try {\r\n+                    // Close old channel\r\n+                    // copy reference\r\n+                    Channel oldChannel = NettyClient.this.channel;\r\n+                    if (oldChannel != null) {\r\n+                        try {\r\n+                            if (logger.isInfoEnabled()) {\r\n+                                logger.info(\"Close old netty channel \" + oldChannel + \" on create new netty channel \" + newChannel);\r\n+                            }\r\n+                            oldChannel.close();\r\n+                        } finally {\r\n+                            NettyChannel.removeChannelIfDisconnected(oldChannel);\r\n+                        }\r\n+                    }\r\n+                } finally {\r\n+                    if (NettyClient.this.isClosed()) {\r\n+                        try {\r\n+                            if (logger.isInfoEnabled()) {\r\n+                                logger.info(\"Close new netty channel \" + newChannel + \", because the client closed.\");\r\n+                            }\r\n+                            newChannel.close();\r\n+                        } finally {\r\n+                            NettyClient.this.channel = null;\r\n+                            NettyChannel.removeChannelIfDisconnected(newChannel);\r\n+                        }\r\n+                    } else {\r\n+                        NettyClient.this.channel = newChannel;\r\n+                    }\r\n+                }\r\n+            } else if (future.cause() != null) {\r\n+                throw new RemotingException(this, \"client(url: \" + getUrl() + \") failed to connect to server \"\r\n+                        + getRemoteAddress() + \", error message is:\" + future.cause().getMessage(), future.cause());\r\n+            } else {\r\n+                throw new RemotingException(this, \"client(url: \" + getUrl() + \") failed to connect to server \"\r\n+                        + getRemoteAddress() + \" client-side timeout \"\r\n+                        + getConnectTimeout() + \"ms (elapsed: \" + (System.currentTimeMillis() - start) + \"ms) from netty client \"\r\n+                        + NetUtils.getLocalHost() + \" using dubbo version \" + Version.getVersion());\r\n+            }\r\n+        } finally {\r\n+            // just add new valid channel to NettyChannel's cache\r\n+            if (!isConnected()) {\r\n+                //future.cancel(true);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doDisConnect() throws Throwable {\r\n+        try {\r\n+            NettyChannel.removeChannelIfDisconnected(channel);\r\n+        } catch (Throwable t) {\r\n+            logger.warn(t.getMessage());\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doClose() throws Throwable {\r\n+        // can't shutdown nioEventLoopGroup because the method will be invoked when closing one channel but not a client,\r\n+        // but when and how to close the nioEventLoopGroup ?\r\n+        // nioEventLoopGroup.shutdownGracefully();\r\n+    }\r\n+\r\n+    @Override\r\n+    protected org.apache.dubbo.remoting.Channel getChannel() {\r\n+        Channel c = channel;\r\n+        if (c == null) {\r\n+            return null;\r\n+        }\r\n+        return NettyChannel.getOrAddChannel(c, getUrl(), this);\r\n+    }\r\n+\r\n+    Channel getNettyChannel() {\r\n+        return channel;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean canHandleIdle() {\r\n+        return true;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/netty4/NettyClientHandler.java", "source2": "org/apache/dubbo/remoting/transport/netty4/NettyClientHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,161 +1,161 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.netty4;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.Version;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.exchange.Request;\n-import org.apache.dubbo.remoting.exchange.Response;\n-\n-import io.netty.channel.ChannelDuplexHandler;\n-import io.netty.channel.ChannelHandlerContext;\n-import io.netty.channel.ChannelPromise;\n-import io.netty.handler.timeout.IdleStateEvent;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\n-\n-/**\n- * NettyClientHandler\n- */\n-@io.netty.channel.ChannelHandler.Sharable\n-public class NettyClientHandler extends ChannelDuplexHandler {\n-    private static final Logger logger = LoggerFactory.getLogger(NettyClientHandler.class);\n-\n-    private final URL url;\n-\n-    private final ChannelHandler handler;\n-\n-    public NettyClientHandler(URL url, ChannelHandler handler) {\n-        if (url == null) {\n-            throw new IllegalArgumentException(\"url == null\");\n-        }\n-        if (handler == null) {\n-            throw new IllegalArgumentException(\"handler == null\");\n-        }\n-        this.url = url;\n-        this.handler = handler;\n-    }\n-\n-    @Override\n-    public void channelActive(ChannelHandlerContext ctx) throws Exception {\n-        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\n-        handler.connected(channel);\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"The connection of \" + channel.getLocalAddress() + \" -> \" + channel.getRemoteAddress() + \" is established.\");\n-        }\n-    }\n-\n-    @Override\n-    public void channelInactive(ChannelHandlerContext ctx) throws Exception {\n-        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\n-        try {\n-            handler.disconnected(channel);\n-        } finally {\n-            NettyChannel.removeChannel(ctx.channel());\n-        }\n-\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"The connection of \" + channel.getLocalAddress() + \" -> \" + channel.getRemoteAddress() + \" is disconnected.\");\n-        }\n-    }\n-\n-    @Override\n-    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {\n-        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\n-        handler.received(channel, msg);\n-    }\n-\n-    @Override\n-    public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {\n-        super.write(ctx, msg, promise);\n-        final NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\n-        final boolean isRequest = msg instanceof Request;\n-\n-        // We add listeners to make sure our out bound event is correct.\n-        // If our out bound event has an error (in most cases the encoder fails),\n-        // we need to have the request return directly instead of blocking the invoke process.\n-        promise.addListener(future -> {\n-            if (future.isSuccess()) {\n-                // if our future is success, mark the future to sent.\n-                handler.sent(channel, msg);\n-                return;\n-            }\n-\n-            Throwable t = future.cause();\n-            if (t != null && isRequest) {\n-                Request request = (Request) msg;\n-                Response response = buildErrorResponse(request, t);\n-                handler.received(channel, response);\n-            }\n-        });\n-    }\n-\n-    @Override\n-    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {\n-        // send heartbeat when read idle.\n-        if (evt instanceof IdleStateEvent) {\n-            try {\n-                NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\n-                if (logger.isDebugEnabled()) {\n-                    logger.debug(\"IdleStateEvent triggered, send heartbeat to channel \" + channel);\n-                }\n-                Request req = new Request();\n-                req.setVersion(Version.getProtocolVersion());\n-                req.setTwoWay(true);\n-                req.setEvent(HEARTBEAT_EVENT);\n-                channel.send(req);\n-            } finally {\n-                NettyChannel.removeChannelIfDisconnected(ctx.channel());\n-            }\n-        } else {\n-            super.userEventTriggered(ctx, evt);\n-        }\n-    }\n-\n-    @Override\n-    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause)\n-            throws Exception {\n-        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\n-        try {\n-            handler.caught(channel, cause);\n-        } finally {\n-            NettyChannel.removeChannelIfDisconnected(ctx.channel());\n-        }\n-    }\n-\n-    public void handshakeCompleted(SslHandlerInitializer.HandshakeCompletionEvent evt) {\n-        // TODO\n-    }\n-\n-    /**\n-     * build a bad request's response\n-     *\n-     * @param request the request\n-     * @param t       the throwable. In most cases, serialization fails.\n-     * @return the response\n-     */\n-    private static Response buildErrorResponse(Request request, Throwable t) {\n-        Response response = new Response(request.getId(), request.getVersion());\n-        response.setStatus(Response.BAD_REQUEST);\n-        response.setErrorMessage(StringUtils.toString(t));\n-        return response;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.netty4;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.Version;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.exchange.Request;\r\n+import org.apache.dubbo.remoting.exchange.Response;\r\n+\r\n+import io.netty.channel.ChannelDuplexHandler;\r\n+import io.netty.channel.ChannelHandlerContext;\r\n+import io.netty.channel.ChannelPromise;\r\n+import io.netty.handler.timeout.IdleStateEvent;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\r\n+\r\n+/**\r\n+ * NettyClientHandler\r\n+ */\r\n+@io.netty.channel.ChannelHandler.Sharable\r\n+public class NettyClientHandler extends ChannelDuplexHandler {\r\n+    private static final Logger logger = LoggerFactory.getLogger(NettyClientHandler.class);\r\n+\r\n+    private final URL url;\r\n+\r\n+    private final ChannelHandler handler;\r\n+\r\n+    public NettyClientHandler(URL url, ChannelHandler handler) {\r\n+        if (url == null) {\r\n+            throw new IllegalArgumentException(\"url == null\");\r\n+        }\r\n+        if (handler == null) {\r\n+            throw new IllegalArgumentException(\"handler == null\");\r\n+        }\r\n+        this.url = url;\r\n+        this.handler = handler;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void channelActive(ChannelHandlerContext ctx) throws Exception {\r\n+        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\r\n+        handler.connected(channel);\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"The connection of \" + channel.getLocalAddress() + \" -> \" + channel.getRemoteAddress() + \" is established.\");\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void channelInactive(ChannelHandlerContext ctx) throws Exception {\r\n+        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\r\n+        try {\r\n+            handler.disconnected(channel);\r\n+        } finally {\r\n+            NettyChannel.removeChannel(ctx.channel());\r\n+        }\r\n+\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"The connection of \" + channel.getLocalAddress() + \" -> \" + channel.getRemoteAddress() + \" is disconnected.\");\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {\r\n+        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\r\n+        handler.received(channel, msg);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {\r\n+        super.write(ctx, msg, promise);\r\n+        final NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\r\n+        final boolean isRequest = msg instanceof Request;\r\n+\r\n+        // We add listeners to make sure our out bound event is correct.\r\n+        // If our out bound event has an error (in most cases the encoder fails),\r\n+        // we need to have the request return directly instead of blocking the invoke process.\r\n+        promise.addListener(future -> {\r\n+            if (future.isSuccess()) {\r\n+                // if our future is success, mark the future to sent.\r\n+                handler.sent(channel, msg);\r\n+                return;\r\n+            }\r\n+\r\n+            Throwable t = future.cause();\r\n+            if (t != null && isRequest) {\r\n+                Request request = (Request) msg;\r\n+                Response response = buildErrorResponse(request, t);\r\n+                handler.received(channel, response);\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {\r\n+        // send heartbeat when read idle.\r\n+        if (evt instanceof IdleStateEvent) {\r\n+            try {\r\n+                NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\r\n+                if (logger.isDebugEnabled()) {\r\n+                    logger.debug(\"IdleStateEvent triggered, send heartbeat to channel \" + channel);\r\n+                }\r\n+                Request req = new Request();\r\n+                req.setVersion(Version.getProtocolVersion());\r\n+                req.setTwoWay(true);\r\n+                req.setEvent(HEARTBEAT_EVENT);\r\n+                channel.send(req);\r\n+            } finally {\r\n+                NettyChannel.removeChannelIfDisconnected(ctx.channel());\r\n+            }\r\n+        } else {\r\n+            super.userEventTriggered(ctx, evt);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause)\r\n+            throws Exception {\r\n+        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\r\n+        try {\r\n+            handler.caught(channel, cause);\r\n+        } finally {\r\n+            NettyChannel.removeChannelIfDisconnected(ctx.channel());\r\n+        }\r\n+    }\r\n+\r\n+    public void handshakeCompleted(SslHandlerInitializer.HandshakeCompletionEvent evt) {\r\n+        // TODO\r\n+    }\r\n+\r\n+    /**\r\n+     * build a bad request's response\r\n+     *\r\n+     * @param request the request\r\n+     * @param t       the throwable. In most cases, serialization fails.\r\n+     * @return the response\r\n+     */\r\n+    private static Response buildErrorResponse(Request request, Throwable t) {\r\n+        Response response = new Response(request.getId(), request.getVersion());\r\n+        response.setStatus(Response.BAD_REQUEST);\r\n+        response.setErrorMessage(StringUtils.toString(t));\r\n+        return response;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/netty4/NettyCodecAdapter.java", "source2": "org/apache/dubbo/remoting/transport/netty4/NettyCodecAdapter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,101 +1,101 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.netty4;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.Codec2;\n-import org.apache.dubbo.remoting.buffer.ChannelBuffer;\n-\n-import io.netty.buffer.ByteBuf;\n-import io.netty.channel.Channel;\n-import io.netty.channel.ChannelHandler;\n-import io.netty.channel.ChannelHandlerContext;\n-import io.netty.handler.codec.ByteToMessageDecoder;\n-import io.netty.handler.codec.MessageToByteEncoder;\n-\n-import java.io.IOException;\n-import java.util.List;\n-\n-/**\n- * NettyCodecAdapter.\n- */\n-final public class NettyCodecAdapter {\n-\n-    private final ChannelHandler encoder = new InternalEncoder();\n-\n-    private final ChannelHandler decoder = new InternalDecoder();\n-\n-    private final Codec2 codec;\n-\n-    private final URL url;\n-\n-    private final org.apache.dubbo.remoting.ChannelHandler handler;\n-\n-    public NettyCodecAdapter(Codec2 codec, URL url, org.apache.dubbo.remoting.ChannelHandler handler) {\n-        this.codec = codec;\n-        this.url = url;\n-        this.handler = handler;\n-    }\n-\n-    public ChannelHandler getEncoder() {\n-        return encoder;\n-    }\n-\n-    public ChannelHandler getDecoder() {\n-        return decoder;\n-    }\n-\n-    private class InternalEncoder extends MessageToByteEncoder {\n-\n-        @Override\n-        protected void encode(ChannelHandlerContext ctx, Object msg, ByteBuf out) throws Exception {\n-            org.apache.dubbo.remoting.buffer.ChannelBuffer buffer = new NettyBackedChannelBuffer(out);\n-            Channel ch = ctx.channel();\n-            NettyChannel channel = NettyChannel.getOrAddChannel(ch, url, handler);\n-            codec.encode(channel, buffer, msg);\n-        }\n-    }\n-\n-    private class InternalDecoder extends ByteToMessageDecoder {\n-\n-        @Override\n-        protected void decode(ChannelHandlerContext ctx, ByteBuf input, List<Object> out) throws Exception {\n-\n-            ChannelBuffer message = new NettyBackedChannelBuffer(input);\n-\n-            NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\n-\n-            // decode object.\n-            do {\n-                int saveReaderIndex = message.readerIndex();\n-                Object msg = codec.decode(channel, message);\n-                if (msg == Codec2.DecodeResult.NEED_MORE_INPUT) {\n-                    message.readerIndex(saveReaderIndex);\n-                    break;\n-                } else {\n-                    //is it possible to go here ?\n-                    if (saveReaderIndex == message.readerIndex()) {\n-                        throw new IOException(\"Decode without read data.\");\n-                    }\n-                    if (msg != null) {\n-                        out.add(msg);\n-                    }\n-                }\n-            } while (message.readable());\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.netty4;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.Codec2;\r\n+import org.apache.dubbo.remoting.buffer.ChannelBuffer;\r\n+\r\n+import io.netty.buffer.ByteBuf;\r\n+import io.netty.channel.Channel;\r\n+import io.netty.channel.ChannelHandler;\r\n+import io.netty.channel.ChannelHandlerContext;\r\n+import io.netty.handler.codec.ByteToMessageDecoder;\r\n+import io.netty.handler.codec.MessageToByteEncoder;\r\n+\r\n+import java.io.IOException;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * NettyCodecAdapter.\r\n+ */\r\n+final public class NettyCodecAdapter {\r\n+\r\n+    private final ChannelHandler encoder = new InternalEncoder();\r\n+\r\n+    private final ChannelHandler decoder = new InternalDecoder();\r\n+\r\n+    private final Codec2 codec;\r\n+\r\n+    private final URL url;\r\n+\r\n+    private final org.apache.dubbo.remoting.ChannelHandler handler;\r\n+\r\n+    public NettyCodecAdapter(Codec2 codec, URL url, org.apache.dubbo.remoting.ChannelHandler handler) {\r\n+        this.codec = codec;\r\n+        this.url = url;\r\n+        this.handler = handler;\r\n+    }\r\n+\r\n+    public ChannelHandler getEncoder() {\r\n+        return encoder;\r\n+    }\r\n+\r\n+    public ChannelHandler getDecoder() {\r\n+        return decoder;\r\n+    }\r\n+\r\n+    private class InternalEncoder extends MessageToByteEncoder {\r\n+\r\n+        @Override\r\n+        protected void encode(ChannelHandlerContext ctx, Object msg, ByteBuf out) throws Exception {\r\n+            org.apache.dubbo.remoting.buffer.ChannelBuffer buffer = new NettyBackedChannelBuffer(out);\r\n+            Channel ch = ctx.channel();\r\n+            NettyChannel channel = NettyChannel.getOrAddChannel(ch, url, handler);\r\n+            codec.encode(channel, buffer, msg);\r\n+        }\r\n+    }\r\n+\r\n+    private class InternalDecoder extends ByteToMessageDecoder {\r\n+\r\n+        @Override\r\n+        protected void decode(ChannelHandlerContext ctx, ByteBuf input, List<Object> out) throws Exception {\r\n+\r\n+            ChannelBuffer message = new NettyBackedChannelBuffer(input);\r\n+\r\n+            NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\r\n+\r\n+            // decode object.\r\n+            do {\r\n+                int saveReaderIndex = message.readerIndex();\r\n+                Object msg = codec.decode(channel, message);\r\n+                if (msg == Codec2.DecodeResult.NEED_MORE_INPUT) {\r\n+                    message.readerIndex(saveReaderIndex);\r\n+                    break;\r\n+                } else {\r\n+                    //is it possible to go here ?\r\n+                    if (saveReaderIndex == message.readerIndex()) {\r\n+                        throw new IOException(\"Decode without read data.\");\r\n+                    }\r\n+                    if (msg != null) {\r\n+                        out.add(msg);\r\n+                    }\r\n+                }\r\n+            } while (message.readable());\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/netty4/NettyEventLoopFactory.java", "source2": "org/apache/dubbo/remoting/transport/netty4/NettyEventLoopFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,60 +1,60 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.netty4;\n-\n-import org.apache.dubbo.common.config.Configuration;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-\n-import io.netty.channel.EventLoopGroup;\n-import io.netty.channel.epoll.Epoll;\n-import io.netty.channel.epoll.EpollEventLoopGroup;\n-import io.netty.channel.epoll.EpollServerSocketChannel;\n-import io.netty.channel.epoll.EpollSocketChannel;\n-import io.netty.channel.nio.NioEventLoopGroup;\n-import io.netty.channel.socket.ServerSocketChannel;\n-import io.netty.channel.socket.SocketChannel;\n-import io.netty.channel.socket.nio.NioServerSocketChannel;\n-import io.netty.channel.socket.nio.NioSocketChannel;\n-import io.netty.util.concurrent.DefaultThreadFactory;\n-\n-import java.util.concurrent.ThreadFactory;\n-\n-public class NettyEventLoopFactory {\n-    public static EventLoopGroup eventLoopGroup(int threads, String threadFactoryName) {\n-        ThreadFactory threadFactory = new DefaultThreadFactory(threadFactoryName, true);\n-        return shouldEpoll() ? new EpollEventLoopGroup(threads, threadFactory) :\n-                new NioEventLoopGroup(threads, threadFactory);\n-    }\n-\n-    public static Class<? extends SocketChannel> socketChannelClass() {\n-        return shouldEpoll() ? EpollSocketChannel.class : NioSocketChannel.class;\n-    }\n-\n-    public static Class<? extends ServerSocketChannel> serverSocketChannelClass() {\n-        return shouldEpoll() ? EpollServerSocketChannel.class : NioServerSocketChannel.class;\n-    }\n-\n-    private static boolean shouldEpoll() {\n-        Configuration configuration = ApplicationModel.getEnvironment().getConfiguration();\n-        if (configuration.getBoolean(\"netty.epoll.enable\", false)) {\n-            String osName = configuration.getString(\"os.name\");\n-            return osName.toLowerCase().contains(\"linux\") && Epoll.isAvailable();\n-        }\n-\n-        return false;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.netty4;\r\n+\r\n+import org.apache.dubbo.common.config.Configuration;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+\r\n+import io.netty.channel.EventLoopGroup;\r\n+import io.netty.channel.epoll.Epoll;\r\n+import io.netty.channel.epoll.EpollEventLoopGroup;\r\n+import io.netty.channel.epoll.EpollServerSocketChannel;\r\n+import io.netty.channel.epoll.EpollSocketChannel;\r\n+import io.netty.channel.nio.NioEventLoopGroup;\r\n+import io.netty.channel.socket.ServerSocketChannel;\r\n+import io.netty.channel.socket.SocketChannel;\r\n+import io.netty.channel.socket.nio.NioServerSocketChannel;\r\n+import io.netty.channel.socket.nio.NioSocketChannel;\r\n+import io.netty.util.concurrent.DefaultThreadFactory;\r\n+\r\n+import java.util.concurrent.ThreadFactory;\r\n+\r\n+public class NettyEventLoopFactory {\r\n+    public static EventLoopGroup eventLoopGroup(int threads, String threadFactoryName) {\r\n+        ThreadFactory threadFactory = new DefaultThreadFactory(threadFactoryName, true);\r\n+        return shouldEpoll() ? new EpollEventLoopGroup(threads, threadFactory) :\r\n+                new NioEventLoopGroup(threads, threadFactory);\r\n+    }\r\n+\r\n+    public static Class<? extends SocketChannel> socketChannelClass() {\r\n+        return shouldEpoll() ? EpollSocketChannel.class : NioSocketChannel.class;\r\n+    }\r\n+\r\n+    public static Class<? extends ServerSocketChannel> serverSocketChannelClass() {\r\n+        return shouldEpoll() ? EpollServerSocketChannel.class : NioServerSocketChannel.class;\r\n+    }\r\n+\r\n+    private static boolean shouldEpoll() {\r\n+        Configuration configuration = ApplicationModel.getEnvironment().getConfiguration();\r\n+        if (configuration.getBoolean(\"netty.epoll.enable\", false)) {\r\n+            String osName = configuration.getString(\"os.name\");\r\n+            return osName.toLowerCase().contains(\"linux\") && Epoll.isAvailable();\r\n+        }\r\n+\r\n+        return false;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/netty4/NettyServer.java", "source2": "org/apache/dubbo/remoting/transport/netty4/NettyServer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,202 +1,202 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.netty4;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ExecutorUtil;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.RemotingServer;\n-import org.apache.dubbo.remoting.transport.AbstractServer;\n-import org.apache.dubbo.remoting.transport.dispatcher.ChannelHandlers;\n-import org.apache.dubbo.remoting.utils.UrlUtils;\n-\n-import io.netty.bootstrap.ServerBootstrap;\n-import io.netty.buffer.PooledByteBufAllocator;\n-import io.netty.channel.ChannelFuture;\n-import io.netty.channel.ChannelInitializer;\n-import io.netty.channel.ChannelOption;\n-import io.netty.channel.EventLoopGroup;\n-import io.netty.channel.socket.SocketChannel;\n-import io.netty.handler.timeout.IdleStateHandler;\n-\n-import java.net.InetSocketAddress;\n-import java.util.ArrayList;\n-import java.util.Collection;\n-import java.util.Map;\n-\n-import static java.util.concurrent.TimeUnit.MILLISECONDS;\n-import static org.apache.dubbo.common.constants.CommonConstants.IO_THREADS_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.KEEP_ALIVE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.SSL_ENABLED_KEY;\n-\n-\n-/**\n- * NettyServer.\n- */\n-public class NettyServer extends AbstractServer implements RemotingServer {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(NettyServer.class);\n-    /**\n-     * the cache for alive worker channel.\n-     * <ip:port, dubbo channel>\n-     */\n-    private Map<String, Channel> channels;\n-    /**\n-     * netty server bootstrap.\n-     */\n-    private ServerBootstrap bootstrap;\n-    /**\n-     * the boss channel that receive connections and dispatch these to worker channel.\n-     */\n-\tprivate io.netty.channel.Channel channel;\n-\n-    private EventLoopGroup bossGroup;\n-    private EventLoopGroup workerGroup;\n-\n-    public NettyServer(URL url, ChannelHandler handler) throws RemotingException {\n-        // you can customize name and type of client thread pool by THREAD_NAME_KEY and THREADPOOL_KEY in CommonConstants.\n-        // the handler will be wrapped: MultiMessageHandler->HeartbeatHandler->handler\n-        super(ExecutorUtil.setThreadName(url, SERVER_THREAD_POOL_NAME), ChannelHandlers.wrap(handler, url));\n-    }\n-\n-    /**\n-     * Init and start netty server\n-     *\n-     * @throws Throwable\n-     */\n-    @Override\n-    protected void doOpen() throws Throwable {\n-        bootstrap = new ServerBootstrap();\n-\n-        bossGroup = NettyEventLoopFactory.eventLoopGroup(1, \"NettyServerBoss\");\n-        workerGroup = NettyEventLoopFactory.eventLoopGroup(\n-                getUrl().getPositiveParameter(IO_THREADS_KEY, Constants.DEFAULT_IO_THREADS),\n-                \"NettyServerWorker\");\n-\n-        final NettyServerHandler nettyServerHandler = new NettyServerHandler(getUrl(), this);\n-        channels = nettyServerHandler.getChannels();\n-\n-        boolean keepalive = getUrl().getParameter(KEEP_ALIVE_KEY, Boolean.FALSE);\n-\n-        bootstrap.group(bossGroup, workerGroup)\n-                .channel(NettyEventLoopFactory.serverSocketChannelClass())\n-                .option(ChannelOption.SO_REUSEADDR, Boolean.TRUE)\n-                .childOption(ChannelOption.TCP_NODELAY, Boolean.TRUE)\n-                .childOption(ChannelOption.SO_KEEPALIVE, keepalive)\n-                .childOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT)\n-                .childHandler(new ChannelInitializer<SocketChannel>() {\n-                    @Override\n-                    protected void initChannel(SocketChannel ch) throws Exception {\n-                        // FIXME: should we use getTimeout()?\n-                        int idleTimeout = UrlUtils.getIdleTimeout(getUrl());\n-                        NettyCodecAdapter adapter = new NettyCodecAdapter(getCodec(), getUrl(), NettyServer.this);\n-                        if (getUrl().getParameter(SSL_ENABLED_KEY, false)) {\n-                            ch.pipeline().addLast(\"negotiation\",\n-                                    SslHandlerInitializer.sslServerHandler(getUrl(), nettyServerHandler));\n-                        }\n-                        ch.pipeline()\n-                                .addLast(\"decoder\", adapter.getDecoder())\n-                                .addLast(\"encoder\", adapter.getEncoder())\n-                                .addLast(\"server-idle-handler\", new IdleStateHandler(0, 0, idleTimeout, MILLISECONDS))\n-                                .addLast(\"handler\", nettyServerHandler);\n-                    }\n-                });\n-        // bind\n-        ChannelFuture channelFuture = bootstrap.bind(getBindAddress());\n-        channelFuture.syncUninterruptibly();\n-        channel = channelFuture.channel();\n-\n-    }\n-\n-    @Override\n-    protected void doClose() throws Throwable {\n-        try {\n-            if (channel != null) {\n-                // unbind.\n-                channel.close();\n-            }\n-        } catch (Throwable e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-        try {\n-            Collection<org.apache.dubbo.remoting.Channel> channels = getChannels();\n-            if (channels != null && channels.size() > 0) {\n-                for (org.apache.dubbo.remoting.Channel channel : channels) {\n-                    try {\n-                        channel.close();\n-                    } catch (Throwable e) {\n-                        logger.warn(e.getMessage(), e);\n-                    }\n-                }\n-            }\n-        } catch (Throwable e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-        try {\n-            if (bootstrap != null) {\n-                bossGroup.shutdownGracefully().syncUninterruptibly();\n-                workerGroup.shutdownGracefully().syncUninterruptibly();\n-            }\n-        } catch (Throwable e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-        try {\n-            if (channels != null) {\n-                channels.clear();\n-            }\n-        } catch (Throwable e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-    }\n-\n-    @Override\n-    public Collection<Channel> getChannels() {\n-        Collection<Channel> chs = new ArrayList<>(this.channels.size());\n-        chs.addAll(this.channels.values());\n-        // check of connection status is unnecessary since we are using channels in NettyServerHandler\n-//        for (Channel channel : this.channels.values()) {\n-//            if (channel.isConnected()) {\n-//                chs.add(channel);\n-//            } else {\n-//                channels.remove(NetUtils.toAddressString(channel.getRemoteAddress()));\n-//            }\n-//        }\n-        return chs;\n-    }\n-\n-    @Override\n-    public Channel getChannel(InetSocketAddress remoteAddress) {\n-        return channels.get(NetUtils.toAddressString(remoteAddress));\n-    }\n-\n-    @Override\n-    public boolean canHandleIdle() {\n-        return true;\n-    }\n-\n-    @Override\n-    public boolean isBound() {\n-        return channel.isActive();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.netty4;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ExecutorUtil;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.RemotingServer;\r\n+import org.apache.dubbo.remoting.transport.AbstractServer;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.ChannelHandlers;\r\n+import org.apache.dubbo.remoting.utils.UrlUtils;\r\n+\r\n+import io.netty.bootstrap.ServerBootstrap;\r\n+import io.netty.buffer.PooledByteBufAllocator;\r\n+import io.netty.channel.ChannelFuture;\r\n+import io.netty.channel.ChannelInitializer;\r\n+import io.netty.channel.ChannelOption;\r\n+import io.netty.channel.EventLoopGroup;\r\n+import io.netty.channel.socket.SocketChannel;\r\n+import io.netty.handler.timeout.IdleStateHandler;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+import java.util.ArrayList;\r\n+import java.util.Collection;\r\n+import java.util.Map;\r\n+\r\n+import static java.util.concurrent.TimeUnit.MILLISECONDS;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.IO_THREADS_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.KEEP_ALIVE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SSL_ENABLED_KEY;\r\n+\r\n+\r\n+/**\r\n+ * NettyServer.\r\n+ */\r\n+public class NettyServer extends AbstractServer implements RemotingServer {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(NettyServer.class);\r\n+    /**\r\n+     * the cache for alive worker channel.\r\n+     * <ip:port, dubbo channel>\r\n+     */\r\n+    private Map<String, Channel> channels;\r\n+    /**\r\n+     * netty server bootstrap.\r\n+     */\r\n+    private ServerBootstrap bootstrap;\r\n+    /**\r\n+     * the boss channel that receive connections and dispatch these to worker channel.\r\n+     */\r\n+\tprivate io.netty.channel.Channel channel;\r\n+\r\n+    private EventLoopGroup bossGroup;\r\n+    private EventLoopGroup workerGroup;\r\n+\r\n+    public NettyServer(URL url, ChannelHandler handler) throws RemotingException {\r\n+        // you can customize name and type of client thread pool by THREAD_NAME_KEY and THREADPOOL_KEY in CommonConstants.\r\n+        // the handler will be wrapped: MultiMessageHandler->HeartbeatHandler->handler\r\n+        super(ExecutorUtil.setThreadName(url, SERVER_THREAD_POOL_NAME), ChannelHandlers.wrap(handler, url));\r\n+    }\r\n+\r\n+    /**\r\n+     * Init and start netty server\r\n+     *\r\n+     * @throws Throwable\r\n+     */\r\n+    @Override\r\n+    protected void doOpen() throws Throwable {\r\n+        bootstrap = new ServerBootstrap();\r\n+\r\n+        bossGroup = NettyEventLoopFactory.eventLoopGroup(1, \"NettyServerBoss\");\r\n+        workerGroup = NettyEventLoopFactory.eventLoopGroup(\r\n+                getUrl().getPositiveParameter(IO_THREADS_KEY, Constants.DEFAULT_IO_THREADS),\r\n+                \"NettyServerWorker\");\r\n+\r\n+        final NettyServerHandler nettyServerHandler = new NettyServerHandler(getUrl(), this);\r\n+        channels = nettyServerHandler.getChannels();\r\n+\r\n+        boolean keepalive = getUrl().getParameter(KEEP_ALIVE_KEY, Boolean.FALSE);\r\n+\r\n+        bootstrap.group(bossGroup, workerGroup)\r\n+                .channel(NettyEventLoopFactory.serverSocketChannelClass())\r\n+                .option(ChannelOption.SO_REUSEADDR, Boolean.TRUE)\r\n+                .childOption(ChannelOption.TCP_NODELAY, Boolean.TRUE)\r\n+                .childOption(ChannelOption.SO_KEEPALIVE, keepalive)\r\n+                .childOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT)\r\n+                .childHandler(new ChannelInitializer<SocketChannel>() {\r\n+                    @Override\r\n+                    protected void initChannel(SocketChannel ch) throws Exception {\r\n+                        // FIXME: should we use getTimeout()?\r\n+                        int idleTimeout = UrlUtils.getIdleTimeout(getUrl());\r\n+                        NettyCodecAdapter adapter = new NettyCodecAdapter(getCodec(), getUrl(), NettyServer.this);\r\n+                        if (getUrl().getParameter(SSL_ENABLED_KEY, false)) {\r\n+                            ch.pipeline().addLast(\"negotiation\",\r\n+                                    SslHandlerInitializer.sslServerHandler(getUrl(), nettyServerHandler));\r\n+                        }\r\n+                        ch.pipeline()\r\n+                                .addLast(\"decoder\", adapter.getDecoder())\r\n+                                .addLast(\"encoder\", adapter.getEncoder())\r\n+                                .addLast(\"server-idle-handler\", new IdleStateHandler(0, 0, idleTimeout, MILLISECONDS))\r\n+                                .addLast(\"handler\", nettyServerHandler);\r\n+                    }\r\n+                });\r\n+        // bind\r\n+        ChannelFuture channelFuture = bootstrap.bind(getBindAddress());\r\n+        channelFuture.syncUninterruptibly();\r\n+        channel = channelFuture.channel();\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doClose() throws Throwable {\r\n+        try {\r\n+            if (channel != null) {\r\n+                // unbind.\r\n+                channel.close();\r\n+            }\r\n+        } catch (Throwable e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+        try {\r\n+            Collection<org.apache.dubbo.remoting.Channel> channels = getChannels();\r\n+            if (channels != null && channels.size() > 0) {\r\n+                for (org.apache.dubbo.remoting.Channel channel : channels) {\r\n+                    try {\r\n+                        channel.close();\r\n+                    } catch (Throwable e) {\r\n+                        logger.warn(e.getMessage(), e);\r\n+                    }\r\n+                }\r\n+            }\r\n+        } catch (Throwable e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+        try {\r\n+            if (bootstrap != null) {\r\n+                bossGroup.shutdownGracefully().syncUninterruptibly();\r\n+                workerGroup.shutdownGracefully().syncUninterruptibly();\r\n+            }\r\n+        } catch (Throwable e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+        try {\r\n+            if (channels != null) {\r\n+                channels.clear();\r\n+            }\r\n+        } catch (Throwable e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public Collection<Channel> getChannels() {\r\n+        Collection<Channel> chs = new ArrayList<>(this.channels.size());\r\n+        chs.addAll(this.channels.values());\r\n+        // check of connection status is unnecessary since we are using channels in NettyServerHandler\r\n+//        for (Channel channel : this.channels.values()) {\r\n+//            if (channel.isConnected()) {\r\n+//                chs.add(channel);\r\n+//            } else {\r\n+//                channels.remove(NetUtils.toAddressString(channel.getRemoteAddress()));\r\n+//            }\r\n+//        }\r\n+        return chs;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Channel getChannel(InetSocketAddress remoteAddress) {\r\n+        return channels.get(NetUtils.toAddressString(remoteAddress));\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean canHandleIdle() {\r\n+        return true;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isBound() {\r\n+        return channel.isActive();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/netty4/NettyServerHandler.java", "source2": "org/apache/dubbo/remoting/transport/netty4/NettyServerHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,138 +1,138 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.netty4;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.transport.netty4.SslHandlerInitializer.HandshakeCompletionEvent;\n-\n-import io.netty.channel.ChannelDuplexHandler;\n-import io.netty.channel.ChannelHandlerContext;\n-import io.netty.channel.ChannelPromise;\n-import io.netty.handler.timeout.IdleStateEvent;\n-\n-import java.net.InetSocketAddress;\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-/**\n- * NettyServerHandler.\n- */\n-@io.netty.channel.ChannelHandler.Sharable\n-public class NettyServerHandler extends ChannelDuplexHandler {\n-    private static final Logger logger = LoggerFactory.getLogger(NettyServerHandler.class);\n-    /**\n-     * the cache for alive worker channel.\n-     * <ip:port, dubbo channel>\n-     */\n-    private final Map<String, Channel> channels = new ConcurrentHashMap<String, Channel>();\n-\n-    private final URL url;\n-\n-    private final ChannelHandler handler;\n-\n-    public NettyServerHandler(URL url, ChannelHandler handler) {\n-        if (url == null) {\n-            throw new IllegalArgumentException(\"url == null\");\n-        }\n-        if (handler == null) {\n-            throw new IllegalArgumentException(\"handler == null\");\n-        }\n-        this.url = url;\n-        this.handler = handler;\n-    }\n-\n-    public Map<String, Channel> getChannels() {\n-        return channels;\n-    }\n-\n-    @Override\n-    public void channelActive(ChannelHandlerContext ctx) throws Exception {\n-        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\n-        if (channel != null) {\n-            channels.put(NetUtils.toAddressString((InetSocketAddress) ctx.channel().remoteAddress()), channel);\n-        }\n-        handler.connected(channel);\n-\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"The connection of \" + channel.getRemoteAddress() + \" -> \" + channel.getLocalAddress() + \" is established.\");\n-        }\n-    }\n-\n-    @Override\n-    public void channelInactive(ChannelHandlerContext ctx) throws Exception {\n-        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\n-        try {\n-            channels.remove(NetUtils.toAddressString((InetSocketAddress) ctx.channel().remoteAddress()));\n-            handler.disconnected(channel);\n-        } finally {\n-            NettyChannel.removeChannel(ctx.channel());\n-        }\n-\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"The connection of \" + channel.getRemoteAddress() + \" -> \" + channel.getLocalAddress() + \" is disconnected.\");\n-        }\n-    }\n-\n-    @Override\n-    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {\n-        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\n-        handler.received(channel, msg);\n-    }\n-\n-\n-    @Override\n-    public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {\n-        super.write(ctx, msg, promise);\n-        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\n-        handler.sent(channel, msg);\n-    }\n-\n-    @Override\n-    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {\n-        // server will close channel when server don't receive any heartbeat from client util timeout.\n-        if (evt instanceof IdleStateEvent) {\n-            NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\n-            try {\n-                logger.info(\"IdleStateEvent triggered, close channel \" + channel);\n-                channel.close();\n-            } finally {\n-                NettyChannel.removeChannelIfDisconnected(ctx.channel());\n-            }\n-        }\n-        super.userEventTriggered(ctx, evt);\n-    }\n-\n-    @Override\n-    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause)\n-            throws Exception {\n-        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\n-        try {\n-            handler.caught(channel, cause);\n-        } finally {\n-            NettyChannel.removeChannelIfDisconnected(ctx.channel());\n-        }\n-    }\n-\n-    public void handshakeCompleted(HandshakeCompletionEvent evt) {\n-        // TODO\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.netty4;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.transport.netty4.SslHandlerInitializer.HandshakeCompletionEvent;\r\n+\r\n+import io.netty.channel.ChannelDuplexHandler;\r\n+import io.netty.channel.ChannelHandlerContext;\r\n+import io.netty.channel.ChannelPromise;\r\n+import io.netty.handler.timeout.IdleStateEvent;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+/**\r\n+ * NettyServerHandler.\r\n+ */\r\n+@io.netty.channel.ChannelHandler.Sharable\r\n+public class NettyServerHandler extends ChannelDuplexHandler {\r\n+    private static final Logger logger = LoggerFactory.getLogger(NettyServerHandler.class);\r\n+    /**\r\n+     * the cache for alive worker channel.\r\n+     * <ip:port, dubbo channel>\r\n+     */\r\n+    private final Map<String, Channel> channels = new ConcurrentHashMap<String, Channel>();\r\n+\r\n+    private final URL url;\r\n+\r\n+    private final ChannelHandler handler;\r\n+\r\n+    public NettyServerHandler(URL url, ChannelHandler handler) {\r\n+        if (url == null) {\r\n+            throw new IllegalArgumentException(\"url == null\");\r\n+        }\r\n+        if (handler == null) {\r\n+            throw new IllegalArgumentException(\"handler == null\");\r\n+        }\r\n+        this.url = url;\r\n+        this.handler = handler;\r\n+    }\r\n+\r\n+    public Map<String, Channel> getChannels() {\r\n+        return channels;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void channelActive(ChannelHandlerContext ctx) throws Exception {\r\n+        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\r\n+        if (channel != null) {\r\n+            channels.put(NetUtils.toAddressString((InetSocketAddress) ctx.channel().remoteAddress()), channel);\r\n+        }\r\n+        handler.connected(channel);\r\n+\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"The connection of \" + channel.getRemoteAddress() + \" -> \" + channel.getLocalAddress() + \" is established.\");\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void channelInactive(ChannelHandlerContext ctx) throws Exception {\r\n+        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\r\n+        try {\r\n+            channels.remove(NetUtils.toAddressString((InetSocketAddress) ctx.channel().remoteAddress()));\r\n+            handler.disconnected(channel);\r\n+        } finally {\r\n+            NettyChannel.removeChannel(ctx.channel());\r\n+        }\r\n+\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"The connection of \" + channel.getRemoteAddress() + \" -> \" + channel.getLocalAddress() + \" is disconnected.\");\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {\r\n+        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\r\n+        handler.received(channel, msg);\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {\r\n+        super.write(ctx, msg, promise);\r\n+        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\r\n+        handler.sent(channel, msg);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {\r\n+        // server will close channel when server don't receive any heartbeat from client util timeout.\r\n+        if (evt instanceof IdleStateEvent) {\r\n+            NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\r\n+            try {\r\n+                logger.info(\"IdleStateEvent triggered, close channel \" + channel);\r\n+                channel.close();\r\n+            } finally {\r\n+                NettyChannel.removeChannelIfDisconnected(ctx.channel());\r\n+            }\r\n+        }\r\n+        super.userEventTriggered(ctx, evt);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause)\r\n+            throws Exception {\r\n+        NettyChannel channel = NettyChannel.getOrAddChannel(ctx.channel(), url, handler);\r\n+        try {\r\n+            handler.caught(channel, cause);\r\n+        } finally {\r\n+            NettyChannel.removeChannelIfDisconnected(ctx.channel());\r\n+        }\r\n+    }\r\n+\r\n+    public void handshakeCompleted(HandshakeCompletionEvent evt) {\r\n+        // TODO\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/netty4/NettyTransporter.java", "source2": "org/apache/dubbo/remoting/transport/netty4/NettyTransporter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,43 +1,43 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.netty4;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.Client;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.RemotingServer;\n-import org.apache.dubbo.remoting.Transporter;\n-\n-/**\n- * Default extension of {@link Transporter} using netty4.x.\n- */\n-public class NettyTransporter implements Transporter {\n-\n-    public static final String NAME = \"netty\";\n-\n-    @Override\n-    public RemotingServer bind(URL url, ChannelHandler handler) throws RemotingException {\n-        return new NettyServer(url, handler);\n-    }\n-\n-    @Override\n-    public Client connect(URL url, ChannelHandler handler) throws RemotingException {\n-        return new NettyClient(url, handler);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.netty4;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.Client;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.RemotingServer;\r\n+import org.apache.dubbo.remoting.Transporter;\r\n+\r\n+/**\r\n+ * Default extension of {@link Transporter} using netty4.x.\r\n+ */\r\n+public class NettyTransporter implements Transporter {\r\n+\r\n+    public static final String NAME = \"netty\";\r\n+\r\n+    @Override\r\n+    public RemotingServer bind(URL url, ChannelHandler handler) throws RemotingException {\r\n+        return new NettyServer(url, handler);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Client connect(URL url, ChannelHandler handler) throws RemotingException {\r\n+        return new NettyClient(url, handler);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/netty4/SslContexts.java", "source2": "org/apache/dubbo/remoting/transport/netty4/SslContexts.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,121 +1,121 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.netty4;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.config.SslConfig;\n-import org.apache.dubbo.config.context.ConfigManager;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-\n-import io.netty.handler.ssl.ClientAuth;\n-import io.netty.handler.ssl.OpenSsl;\n-import io.netty.handler.ssl.SslContext;\n-import io.netty.handler.ssl.SslContextBuilder;\n-import io.netty.handler.ssl.SslProvider;\n-\n-import javax.net.ssl.SSLException;\n-import java.io.InputStream;\n-import java.security.Provider;\n-import java.security.Security;\n-\n-public class SslContexts {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(SslContexts.class);\n-\n-    public static SslContext buildServerSslContext(URL url) {\n-        ConfigManager globalConfigManager = ApplicationModel.getConfigManager();\n-        SslConfig sslConfig = globalConfigManager.getSsl().orElseThrow(() -> new IllegalStateException(\"Ssl enabled, but no ssl cert information provided!\"));\n-\n-        SslContextBuilder sslClientContextBuilder = null;\n-        try {\n-            String password = sslConfig.getServerKeyPassword();\n-            if (password != null) {\n-                sslClientContextBuilder = SslContextBuilder.forServer(sslConfig.getServerKeyCertChainPathStream(),\n-                        sslConfig.getServerPrivateKeyPathStream(), password);\n-            } else {\n-                sslClientContextBuilder = SslContextBuilder.forServer(sslConfig.getServerKeyCertChainPathStream(),\n-                        sslConfig.getServerPrivateKeyPathStream());\n-            }\n-\n-            if (sslConfig.getServerTrustCertCollectionPathStream() != null) {\n-                sslClientContextBuilder.trustManager(sslConfig.getServerTrustCertCollectionPathStream());\n-                sslClientContextBuilder.clientAuth(ClientAuth.REQUIRE);\n-            }\n-        } catch (Exception e) {\n-            throw new IllegalArgumentException(\"Could not find certificate file or the certificate is invalid.\", e);\n-        }\n-        try {\n-            return sslClientContextBuilder.sslProvider(findSslProvider()).build();\n-        } catch (SSLException e) {\n-            throw new IllegalStateException(\"Build SslSession failed.\", e);\n-        }\n-    }\n-\n-    public static SslContext buildClientSslContext(URL url) {\n-        ConfigManager globalConfigManager = ApplicationModel.getConfigManager();\n-        SslConfig sslConfig = globalConfigManager.getSsl().orElseThrow(() -> new IllegalStateException(\"Ssl enabled, but no ssl cert information provided!\"));\n-\n-        SslContextBuilder builder = SslContextBuilder.forClient();\n-        try {\n-            if (sslConfig.getClientTrustCertCollectionPathStream() != null) {\n-                builder.trustManager(sslConfig.getClientTrustCertCollectionPathStream());\n-            }\n-\n-            InputStream clientCertChainFilePath = sslConfig.getClientKeyCertChainPathStream();\n-            InputStream clientPrivateKeyFilePath = sslConfig.getClientPrivateKeyPathStream();\n-            if (clientCertChainFilePath != null && clientPrivateKeyFilePath != null) {\n-                String password = sslConfig.getClientKeyPassword();\n-                if (password != null) {\n-                    builder.keyManager(clientCertChainFilePath, clientPrivateKeyFilePath, password);\n-                } else {\n-                    builder.keyManager(clientCertChainFilePath, clientPrivateKeyFilePath);\n-                }\n-            }\n-        } catch (Exception e) {\n-            throw new IllegalArgumentException(\"Could not find certificate file or find invalid certificate.\", e);\n-        }\n-        try {\n-            return builder.sslProvider(findSslProvider()).build();\n-        } catch (SSLException e) {\n-            throw new IllegalStateException(\"Build SslSession failed.\", e);\n-        }\n-    }\n-\n-    /**\n-     * Returns OpenSSL if available, otherwise returns the JDK provider.\n-     */\n-    private static SslProvider findSslProvider() {\n-        if (OpenSsl.isAvailable()) {\n-            logger.info(\"Using OPENSSL provider.\");\n-            return SslProvider.OPENSSL;\n-        } else if (checkJdkProvider()) {\n-            logger.info(\"Using JDK provider.\");\n-            return SslProvider.JDK;\n-        }\n-        throw new IllegalStateException(\n-                \"Could not find any valid TLS provider, please check your dependency or deployment environment, \" +\n-                        \"usually netty-tcnative, Conscrypt, or Jetty NPN/ALPN is needed.\");\n-    }\n-\n-    private static boolean checkJdkProvider() {\n-        Provider[] jdkProviders = Security.getProviders(\"SSLContext.TLS\");\n-        return (jdkProviders != null && jdkProviders.length > 0);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.netty4;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.config.SslConfig;\r\n+import org.apache.dubbo.config.context.ConfigManager;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+\r\n+import io.netty.handler.ssl.ClientAuth;\r\n+import io.netty.handler.ssl.OpenSsl;\r\n+import io.netty.handler.ssl.SslContext;\r\n+import io.netty.handler.ssl.SslContextBuilder;\r\n+import io.netty.handler.ssl.SslProvider;\r\n+\r\n+import javax.net.ssl.SSLException;\r\n+import java.io.InputStream;\r\n+import java.security.Provider;\r\n+import java.security.Security;\r\n+\r\n+public class SslContexts {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(SslContexts.class);\r\n+\r\n+    public static SslContext buildServerSslContext(URL url) {\r\n+        ConfigManager globalConfigManager = ApplicationModel.getConfigManager();\r\n+        SslConfig sslConfig = globalConfigManager.getSsl().orElseThrow(() -> new IllegalStateException(\"Ssl enabled, but no ssl cert information provided!\"));\r\n+\r\n+        SslContextBuilder sslClientContextBuilder = null;\r\n+        try {\r\n+            String password = sslConfig.getServerKeyPassword();\r\n+            if (password != null) {\r\n+                sslClientContextBuilder = SslContextBuilder.forServer(sslConfig.getServerKeyCertChainPathStream(),\r\n+                        sslConfig.getServerPrivateKeyPathStream(), password);\r\n+            } else {\r\n+                sslClientContextBuilder = SslContextBuilder.forServer(sslConfig.getServerKeyCertChainPathStream(),\r\n+                        sslConfig.getServerPrivateKeyPathStream());\r\n+            }\r\n+\r\n+            if (sslConfig.getServerTrustCertCollectionPathStream() != null) {\r\n+                sslClientContextBuilder.trustManager(sslConfig.getServerTrustCertCollectionPathStream());\r\n+                sslClientContextBuilder.clientAuth(ClientAuth.REQUIRE);\r\n+            }\r\n+        } catch (Exception e) {\r\n+            throw new IllegalArgumentException(\"Could not find certificate file or the certificate is invalid.\", e);\r\n+        }\r\n+        try {\r\n+            return sslClientContextBuilder.sslProvider(findSslProvider()).build();\r\n+        } catch (SSLException e) {\r\n+            throw new IllegalStateException(\"Build SslSession failed.\", e);\r\n+        }\r\n+    }\r\n+\r\n+    public static SslContext buildClientSslContext(URL url) {\r\n+        ConfigManager globalConfigManager = ApplicationModel.getConfigManager();\r\n+        SslConfig sslConfig = globalConfigManager.getSsl().orElseThrow(() -> new IllegalStateException(\"Ssl enabled, but no ssl cert information provided!\"));\r\n+\r\n+        SslContextBuilder builder = SslContextBuilder.forClient();\r\n+        try {\r\n+            if (sslConfig.getClientTrustCertCollectionPathStream() != null) {\r\n+                builder.trustManager(sslConfig.getClientTrustCertCollectionPathStream());\r\n+            }\r\n+\r\n+            InputStream clientCertChainFilePath = sslConfig.getClientKeyCertChainPathStream();\r\n+            InputStream clientPrivateKeyFilePath = sslConfig.getClientPrivateKeyPathStream();\r\n+            if (clientCertChainFilePath != null && clientPrivateKeyFilePath != null) {\r\n+                String password = sslConfig.getClientKeyPassword();\r\n+                if (password != null) {\r\n+                    builder.keyManager(clientCertChainFilePath, clientPrivateKeyFilePath, password);\r\n+                } else {\r\n+                    builder.keyManager(clientCertChainFilePath, clientPrivateKeyFilePath);\r\n+                }\r\n+            }\r\n+        } catch (Exception e) {\r\n+            throw new IllegalArgumentException(\"Could not find certificate file or find invalid certificate.\", e);\r\n+        }\r\n+        try {\r\n+            return builder.sslProvider(findSslProvider()).build();\r\n+        } catch (SSLException e) {\r\n+            throw new IllegalStateException(\"Build SslSession failed.\", e);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Returns OpenSSL if available, otherwise returns the JDK provider.\r\n+     */\r\n+    private static SslProvider findSslProvider() {\r\n+        if (OpenSsl.isAvailable()) {\r\n+            logger.info(\"Using OPENSSL provider.\");\r\n+            return SslProvider.OPENSSL;\r\n+        } else if (checkJdkProvider()) {\r\n+            logger.info(\"Using JDK provider.\");\r\n+            return SslProvider.JDK;\r\n+        }\r\n+        throw new IllegalStateException(\r\n+                \"Could not find any valid TLS provider, please check your dependency or deployment environment, \" +\r\n+                        \"usually netty-tcnative, Conscrypt, or Jetty NPN/ALPN is needed.\");\r\n+    }\r\n+\r\n+    private static boolean checkJdkProvider() {\r\n+        Provider[] jdkProviders = Security.getProviders(\"SSLContext.TLS\");\r\n+        return (jdkProviders != null && jdkProviders.length > 0);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/netty4/SslHandlerInitializer.java", "source2": "org/apache/dubbo/remoting/transport/netty4/SslHandlerInitializer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,141 +1,141 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.netty4;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-\n-import io.netty.channel.ChannelHandlerContext;\n-import io.netty.channel.ChannelInboundHandler;\n-import io.netty.channel.ChannelInboundHandlerAdapter;\n-import io.netty.handler.ssl.SslContext;\n-import io.netty.handler.ssl.SslHandler;\n-import io.netty.handler.ssl.SslHandshakeCompletionEvent;\n-\n-import javax.net.ssl.SSLEngine;\n-import javax.net.ssl.SSLSession;\n-\n-/**\n- * Handshake, SSl and Protocol\n- */\n-public class SslHandlerInitializer {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(SslHandlerInitializer.class);\n-\n-    public static ChannelInboundHandler sslServerHandler(URL url, NettyServerHandler serverHandler) {\n-        // Decorate if necessary\n-        return new SslServerTlsHandler(url, serverHandler);\n-    }\n-\n-    public static ChannelInboundHandler sslClientHandler(URL url, NettyClientHandler clientHandler) {\n-        return new SslClientTlsHandler(url, clientHandler);\n-    }\n-\n-    public static class SslServerTlsHandler extends ChannelInboundHandlerAdapter {\n-\n-        private final SslContext sslContext;\n-        private final NettyServerHandler serverHandler;\n-\n-        SslServerTlsHandler(URL url, NettyServerHandler serverHandler) {\n-            this.sslContext = SslContexts.buildServerSslContext(url);\n-            this.serverHandler = serverHandler;\n-        }\n-\n-        @Override\n-        public void handlerAdded(ChannelHandlerContext ctx) throws Exception {\n-            super.handlerAdded(ctx);\n-\n-            SSLEngine sslEngine = sslContext.newEngine(ctx.alloc());\n-            ctx.pipeline().addFirst(new SslHandler(sslEngine, false));\n-        }\n-\n-        @Override\n-        public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {\n-            logger.error(\"TLS negotiation failed when trying to accept new connection.\", cause);\n-        }\n-\n-        @Override\n-        public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {\n-            if (evt instanceof SslHandshakeCompletionEvent) {\n-                SslHandshakeCompletionEvent handshakeEvent = (SslHandshakeCompletionEvent) evt;\n-                if (handshakeEvent.isSuccess()) {\n-                    SSLSession session = ctx.pipeline().get(SslHandler.class).engine().getSession();\n-                    logger.info(\"TLS negotiation succeed with session: \" + session);\n-                    serverHandler.handshakeCompleted(new HandshakeCompletionEvent(session, ctx));\n-                    // Remove after handshake success.\n-                    ctx.pipeline().remove(this);\n-                } else {\n-                    logger.error(\"TLS negotiation failed when trying to accept new connection.\", handshakeEvent.cause());\n-                    ctx.close();\n-                }\n-            }\n-            super.userEventTriggered(ctx, evt);\n-        }\n-    }\n-\n-    public static class SslClientTlsHandler extends ChannelInboundHandlerAdapter {\n-\n-        private final SslContext sslContext;\n-        private final NettyClientHandler clientHandler;\n-\n-        public SslClientTlsHandler(URL url, NettyClientHandler clientHandler) {\n-            this.sslContext = SslContexts.buildClientSslContext(url);\n-            this.clientHandler = clientHandler;\n-        }\n-\n-        @Override\n-        public void handlerAdded(ChannelHandlerContext ctx) {\n-            SSLEngine sslEngine = sslContext.newEngine(ctx.alloc());\n-            ctx.pipeline().addBefore(ctx.name(), null, new SslHandler(sslEngine, false));\n-        }\n-\n-        @Override\n-        public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {\n-            if (evt instanceof SslHandshakeCompletionEvent) {\n-                SslHandshakeCompletionEvent handshakeEvent = (SslHandshakeCompletionEvent) evt;\n-                if (handshakeEvent.isSuccess()) {\n-                    SSLSession session = ctx.pipeline().get(SslHandler.class).engine().getSession();\n-                    logger.info(\"TLS negotiation succeed with session: \" + session);\n-                    clientHandler.handshakeCompleted(new HandshakeCompletionEvent(session, ctx));\n-                    ctx.pipeline().remove(this);\n-                } else {\n-                    logger.error(\"TLS negotiation failed when trying to accept new connection.\", handshakeEvent.cause());\n-                    ctx.fireExceptionCaught(handshakeEvent.cause());\n-                }\n-            }\n-        }\n-    }\n-\n-    public static class HandshakeCompletionEvent {\n-        private final SSLSession sslSession;\n-        private final ChannelHandlerContext ctx;\n-\n-        public HandshakeCompletionEvent(SSLSession sslSession, ChannelHandlerContext ctx) {\n-            this.sslSession = sslSession;\n-            this.ctx = ctx;\n-        }\n-\n-        public SSLSession getSslSession() {\n-            return sslSession;\n-        }\n-\n-        public ChannelHandlerContext getCtx() {\n-            return ctx;\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.netty4;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+\r\n+import io.netty.channel.ChannelHandlerContext;\r\n+import io.netty.channel.ChannelInboundHandler;\r\n+import io.netty.channel.ChannelInboundHandlerAdapter;\r\n+import io.netty.handler.ssl.SslContext;\r\n+import io.netty.handler.ssl.SslHandler;\r\n+import io.netty.handler.ssl.SslHandshakeCompletionEvent;\r\n+\r\n+import javax.net.ssl.SSLEngine;\r\n+import javax.net.ssl.SSLSession;\r\n+\r\n+/**\r\n+ * Handshake, SSl and Protocol\r\n+ */\r\n+public class SslHandlerInitializer {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(SslHandlerInitializer.class);\r\n+\r\n+    public static ChannelInboundHandler sslServerHandler(URL url, NettyServerHandler serverHandler) {\r\n+        // Decorate if necessary\r\n+        return new SslServerTlsHandler(url, serverHandler);\r\n+    }\r\n+\r\n+    public static ChannelInboundHandler sslClientHandler(URL url, NettyClientHandler clientHandler) {\r\n+        return new SslClientTlsHandler(url, clientHandler);\r\n+    }\r\n+\r\n+    public static class SslServerTlsHandler extends ChannelInboundHandlerAdapter {\r\n+\r\n+        private final SslContext sslContext;\r\n+        private final NettyServerHandler serverHandler;\r\n+\r\n+        SslServerTlsHandler(URL url, NettyServerHandler serverHandler) {\r\n+            this.sslContext = SslContexts.buildServerSslContext(url);\r\n+            this.serverHandler = serverHandler;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void handlerAdded(ChannelHandlerContext ctx) throws Exception {\r\n+            super.handlerAdded(ctx);\r\n+\r\n+            SSLEngine sslEngine = sslContext.newEngine(ctx.alloc());\r\n+            ctx.pipeline().addFirst(new SslHandler(sslEngine, false));\r\n+        }\r\n+\r\n+        @Override\r\n+        public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {\r\n+            logger.error(\"TLS negotiation failed when trying to accept new connection.\", cause);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {\r\n+            if (evt instanceof SslHandshakeCompletionEvent) {\r\n+                SslHandshakeCompletionEvent handshakeEvent = (SslHandshakeCompletionEvent) evt;\r\n+                if (handshakeEvent.isSuccess()) {\r\n+                    SSLSession session = ctx.pipeline().get(SslHandler.class).engine().getSession();\r\n+                    logger.info(\"TLS negotiation succeed with session: \" + session);\r\n+                    serverHandler.handshakeCompleted(new HandshakeCompletionEvent(session, ctx));\r\n+                    // Remove after handshake success.\r\n+                    ctx.pipeline().remove(this);\r\n+                } else {\r\n+                    logger.error(\"TLS negotiation failed when trying to accept new connection.\", handshakeEvent.cause());\r\n+                    ctx.close();\r\n+                }\r\n+            }\r\n+            super.userEventTriggered(ctx, evt);\r\n+        }\r\n+    }\r\n+\r\n+    public static class SslClientTlsHandler extends ChannelInboundHandlerAdapter {\r\n+\r\n+        private final SslContext sslContext;\r\n+        private final NettyClientHandler clientHandler;\r\n+\r\n+        public SslClientTlsHandler(URL url, NettyClientHandler clientHandler) {\r\n+            this.sslContext = SslContexts.buildClientSslContext(url);\r\n+            this.clientHandler = clientHandler;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void handlerAdded(ChannelHandlerContext ctx) {\r\n+            SSLEngine sslEngine = sslContext.newEngine(ctx.alloc());\r\n+            ctx.pipeline().addBefore(ctx.name(), null, new SslHandler(sslEngine, false));\r\n+        }\r\n+\r\n+        @Override\r\n+        public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {\r\n+            if (evt instanceof SslHandshakeCompletionEvent) {\r\n+                SslHandshakeCompletionEvent handshakeEvent = (SslHandshakeCompletionEvent) evt;\r\n+                if (handshakeEvent.isSuccess()) {\r\n+                    SSLSession session = ctx.pipeline().get(SslHandler.class).engine().getSession();\r\n+                    logger.info(\"TLS negotiation succeed with session: \" + session);\r\n+                    clientHandler.handshakeCompleted(new HandshakeCompletionEvent(session, ctx));\r\n+                    ctx.pipeline().remove(this);\r\n+                } else {\r\n+                    logger.error(\"TLS negotiation failed when trying to accept new connection.\", handshakeEvent.cause());\r\n+                    ctx.fireExceptionCaught(handshakeEvent.cause());\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public static class HandshakeCompletionEvent {\r\n+        private final SSLSession sslSession;\r\n+        private final ChannelHandlerContext ctx;\r\n+\r\n+        public HandshakeCompletionEvent(SSLSession sslSession, ChannelHandlerContext ctx) {\r\n+            this.sslSession = sslSession;\r\n+            this.ctx = ctx;\r\n+        }\r\n+\r\n+        public SSLSession getSslSession() {\r\n+            return sslSession;\r\n+        }\r\n+\r\n+        public ChannelHandlerContext getCtx() {\r\n+            return ctx;\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/netty4/logging/MessageFormatter.java", "source2": "org/apache/dubbo/remoting/transport/netty4/logging/MessageFormatter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,410 +1,410 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.netty4.logging;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ArrayUtils;\n-\n-import java.text.MessageFormat;\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-// contributors: lizongbo: proposed special treatment of array parameter values\n-// Joern Huxhorn: pointed out double[] omission, suggested deep array copy\n-\n-/**\n- * Formats messages according to very simple substitution rules. Substitutions\n- * can be made 1, 2 or more arguments.\n- * <p/>\n- * <p/>\n- * For example,\n- * <p/>\n- * <pre>\n- * MessageFormatter.format(&quot;Hi {}.&quot;, &quot;there&quot;)\n- * </pre>\n- * <p/>\n- * will return the string \"Hi there.\".\n- * <p/>\n- * The {} pair is called the <em>formatting anchor</em>. It serves to designate\n- * the location where arguments need to be substituted within the message\n- * pattern.\n- * <p/>\n- * In case your message contains the '{' or the '}' character, you do not have\n- * to do anything special unless the '}' character immediately follows '{'. For\n- * example,\n- * <p/>\n- * <pre>\n- * MessageFormatter.format(&quot;Set {1,2,3} is not equal to {}.&quot;, &quot;1,2&quot;);\n- * </pre>\n- * <p/>\n- * will return the string \"Set {1,2,3} is not equal to 1,2.\".\n- * <p/>\n- * <p/>\n- * If for whatever reason you need to place the string \"{}\" in the message\n- * without its <em>formatting anchor</em> meaning, then you need to escape the\n- * '{' character with '\\', that is the backslash character. Only the '{'\n- * character should be escaped. There is no need to escape the '}' character.\n- * For example,\n- * <p/>\n- * <pre>\n- * MessageFormatter.format(&quot;Set \\\\{} is not equal to {}.&quot;, &quot;1,2&quot;);\n- * </pre>\n- * <p/>\n- * will return the string \"Set {} is not equal to 1,2.\".\n- * <p/>\n- * <p/>\n- * The escaping behavior just described can be overridden by escaping the escape\n- * character '\\'. Calling\n- * <p/>\n- * <pre>\n- * MessageFormatter.format(&quot;File name is C:\\\\\\\\{}.&quot;, &quot;file.zip&quot;);\n- * </pre>\n- * <p/>\n- * will return the string \"File name is C:\\file.zip\".\n- * <p/>\n- * <p/>\n- * The formatting conventions are different than those of {@link MessageFormat}\n- * which ships with the Java platform. This is justified by the fact that\n- * SLF4J's implementation is 10 times faster than that of {@link MessageFormat}.\n- * This local performance difference is both measurable and significant in the\n- * larger context of the complete logging processing chain.\n- * <p/>\n- * <p/>\n- * See also {@link #format(String, Object)},\n- * {@link #format(String, Object, Object)} and\n- * {@link #arrayFormat(String, Object[])} methods for more details.\n- */\n-final class MessageFormatter {\n-    private static final Logger logger = LoggerFactory.getLogger(MessageFormatter.class);\n-    static final char DELIM_START = '{';\n-    static final char DELIM_STOP = '}';\n-    static final String DELIM_STR = \"{}\";\n-    private static final char ESCAPE_CHAR = '\\\\';\n-\n-    /**\n-     * Performs single argument substitution for the 'messagePattern' passed as\n-     * parameter.\n-     * <p/>\n-     * For example,\n-     * <p/>\n-     * <pre>\n-     * MessageFormatter.format(&quot;Hi {}.&quot;, &quot;there&quot;);\n-     * </pre>\n-     * <p/>\n-     * will return the string \"Hi there.\".\n-     * <p/>\n-     *\n-     * @param messagePattern The message pattern which will be parsed and formatted\n-     * @param arg            The argument to be substituted in place of the formatting anchor\n-     * @return The formatted message\n-     */\n-    static FormattingTuple format(String messagePattern, Object arg) {\n-        return arrayFormat(messagePattern, new Object[]{arg});\n-    }\n-\n-    /**\n-     * Performs a two argument substitution for the 'messagePattern' passed as\n-     * parameter.\n-     * <p/>\n-     * For example,\n-     * <p/>\n-     * <pre>\n-     * MessageFormatter.format(&quot;Hi {}. My name is {}.&quot;, &quot;Alice&quot;, &quot;Bob&quot;);\n-     * </pre>\n-     * <p/>\n-     * will return the string \"Hi Alice. My name is Bob.\".\n-     *\n-     * @param messagePattern The message pattern which will be parsed and formatted\n-     * @param argA           The argument to be substituted in place of the first formatting\n-     *                       anchor\n-     * @param argB           The argument to be substituted in place of the second formatting\n-     *                       anchor\n-     * @return The formatted message\n-     */\n-    static FormattingTuple format(final String messagePattern,\n-                                  Object argA, Object argB) {\n-        return arrayFormat(messagePattern, new Object[]{argA, argB});\n-    }\n-\n-    static Throwable getThrowableCandidate(Object[] argArray) {\n-        if (ArrayUtils.isEmpty(argArray)) {\n-            return null;\n-        }\n-\n-        final Object lastEntry = argArray[argArray.length - 1];\n-        if (lastEntry instanceof Throwable) {\n-            return (Throwable) lastEntry;\n-        }\n-        return null;\n-    }\n-\n-    /**\n-     * Same principle as the {@link #format(String, Object)} and\n-     * {@link #format(String, Object, Object)} methods except that any number of\n-     * arguments can be passed in an array.\n-     *\n-     * @param messagePattern The message pattern which will be parsed and formatted\n-     * @param argArray       An array of arguments to be substituted in place of formatting\n-     *                       anchors\n-     * @return The formatted message\n-     */\n-    static FormattingTuple arrayFormat(final String messagePattern,\n-                                       final Object[] argArray) {\n-\n-        Throwable throwableCandidate = getThrowableCandidate(argArray);\n-\n-        if (messagePattern == null) {\n-            return new FormattingTuple(null, argArray, throwableCandidate);\n-        }\n-\n-        if (argArray == null) {\n-            return new FormattingTuple(messagePattern);\n-        }\n-\n-        int i = 0;\n-        int j;\n-        StringBuffer sbuf = new StringBuffer(messagePattern.length() + 50);\n-\n-        int l;\n-        for (l = 0; l < argArray.length; l++) {\n-\n-            j = messagePattern.indexOf(DELIM_STR, i);\n-\n-            if (j == -1) {\n-                // no more variables\n-                if (i == 0) { // this is a simple string\n-                    return new FormattingTuple(messagePattern, argArray,\n-                            throwableCandidate);\n-                } else { // add the tail string which contains no variables and return\n-                    // the result.\n-                    sbuf.append(messagePattern.substring(i));\n-                    return new FormattingTuple(sbuf.toString(), argArray,\n-                            throwableCandidate);\n-                }\n-            } else {\n-                if (isEscapedDelimiter(messagePattern, j)) {\n-                    if (!isDoubleEscaped(messagePattern, j)) {\n-                        l--; // DELIM_START was escaped, thus should not be incremented\n-                        sbuf.append(messagePattern, i, j - 1);\n-                        sbuf.append(DELIM_START);\n-                        i = j + 1;\n-                    } else {\n-                        // The escape character preceding the delimiter start is\n-                        // itself escaped: \"abc x:\\\\{}\"\n-                        // we have to consume one backward slash\n-                        sbuf.append(messagePattern, i, j - 1);\n-                        deeplyAppendParameter(sbuf, argArray[l], new HashMap<Object[], Void>());\n-                        i = j + 2;\n-                    }\n-                } else {\n-                    // normal case\n-                    sbuf.append(messagePattern, i, j);\n-                    deeplyAppendParameter(sbuf, argArray[l], new HashMap<Object[], Void>());\n-                    i = j + 2;\n-                }\n-            }\n-        }\n-        // append the characters following the last {} pair.\n-        sbuf.append(messagePattern.substring(i));\n-        if (l < argArray.length - 1) {\n-            return new FormattingTuple(sbuf.toString(), argArray, throwableCandidate);\n-        } else {\n-            return new FormattingTuple(sbuf.toString(), argArray, null);\n-        }\n-    }\n-\n-    static boolean isEscapedDelimiter(String messagePattern,\n-                                      int delimiterStartIndex) {\n-\n-        if (delimiterStartIndex == 0) {\n-            return false;\n-        }\n-        return messagePattern.charAt(delimiterStartIndex - 1) == ESCAPE_CHAR;\n-    }\n-\n-    static boolean isDoubleEscaped(String messagePattern,\n-                                   int delimiterStartIndex) {\n-        return delimiterStartIndex >= 2 && messagePattern.charAt(delimiterStartIndex - 2) == ESCAPE_CHAR;\n-    }\n-\n-    // special treatment of array values was suggested by 'lizongbo'\n-    private static void deeplyAppendParameter(StringBuffer sbuf, Object o,\n-                                              Map<Object[], Void> seenMap) {\n-        if (o == null) {\n-            sbuf.append(\"null\");\n-            return;\n-        }\n-        if (!o.getClass().isArray()) {\n-            safeObjectAppend(sbuf, o);\n-        } else {\n-            // check for primitive array types because they\n-            // unfortunately cannot be cast to Object[]\n-            if (o instanceof boolean[]) {\n-                booleanArrayAppend(sbuf, (boolean[]) o);\n-            } else if (o instanceof byte[]) {\n-                byteArrayAppend(sbuf, (byte[]) o);\n-            } else if (o instanceof char[]) {\n-                charArrayAppend(sbuf, (char[]) o);\n-            } else if (o instanceof short[]) {\n-                shortArrayAppend(sbuf, (short[]) o);\n-            } else if (o instanceof int[]) {\n-                intArrayAppend(sbuf, (int[]) o);\n-            } else if (o instanceof long[]) {\n-                longArrayAppend(sbuf, (long[]) o);\n-            } else if (o instanceof float[]) {\n-                floatArrayAppend(sbuf, (float[]) o);\n-            } else if (o instanceof double[]) {\n-                doubleArrayAppend(sbuf, (double[]) o);\n-            } else {\n-                objectArrayAppend(sbuf, (Object[]) o, seenMap);\n-            }\n-        }\n-    }\n-\n-    private static void safeObjectAppend(StringBuffer sbuf, Object o) {\n-        try {\n-            String oAsString = o.toString();\n-            sbuf.append(oAsString);\n-        } catch (Throwable t) {\n-            System.err\n-                    .println(\"SLF4J: Failed toString() invocation on an object of type [\"\n-                            + o.getClass().getName() + ']');\n-            logger.error(t.getMessage(), t);\n-            sbuf.append(\"[FAILED toString()]\");\n-        }\n-    }\n-\n-    private static void objectArrayAppend(StringBuffer sbuf, Object[] a,\n-                                          Map<Object[], Void> seenMap) {\n-        sbuf.append('[');\n-        if (!seenMap.containsKey(a)) {\n-            seenMap.put(a, null);\n-            final int len = a.length;\n-            for (int i = 0; i < len; i++) {\n-                deeplyAppendParameter(sbuf, a[i], seenMap);\n-                if (i != len - 1) {\n-                    sbuf.append(\", \");\n-                }\n-            }\n-            // allow repeats in siblings\n-            seenMap.remove(a);\n-        } else {\n-            sbuf.append(\"...\");\n-        }\n-        sbuf.append(']');\n-    }\n-\n-    private static void booleanArrayAppend(StringBuffer sbuf, boolean[] a) {\n-        sbuf.append('[');\n-        final int len = a.length;\n-        for (int i = 0; i < len; i++) {\n-            sbuf.append(a[i]);\n-            if (i != len - 1) {\n-                sbuf.append(\", \");\n-            }\n-        }\n-        sbuf.append(']');\n-    }\n-\n-    private static void byteArrayAppend(StringBuffer sbuf, byte[] a) {\n-        sbuf.append('[');\n-        final int len = a.length;\n-        for (int i = 0; i < len; i++) {\n-            sbuf.append(a[i]);\n-            if (i != len - 1) {\n-                sbuf.append(\", \");\n-            }\n-        }\n-        sbuf.append(']');\n-    }\n-\n-    private static void charArrayAppend(StringBuffer sbuf, char[] a) {\n-        sbuf.append('[');\n-        final int len = a.length;\n-        for (int i = 0; i < len; i++) {\n-            sbuf.append(a[i]);\n-            if (i != len - 1) {\n-                sbuf.append(\", \");\n-            }\n-        }\n-        sbuf.append(']');\n-    }\n-\n-    private static void shortArrayAppend(StringBuffer sbuf, short[] a) {\n-        sbuf.append('[');\n-        final int len = a.length;\n-        for (int i = 0; i < len; i++) {\n-            sbuf.append(a[i]);\n-            if (i != len - 1) {\n-                sbuf.append(\", \");\n-            }\n-        }\n-        sbuf.append(']');\n-    }\n-\n-    private static void intArrayAppend(StringBuffer sbuf, int[] a) {\n-        sbuf.append('[');\n-        final int len = a.length;\n-        for (int i = 0; i < len; i++) {\n-            sbuf.append(a[i]);\n-            if (i != len - 1) {\n-                sbuf.append(\", \");\n-            }\n-        }\n-        sbuf.append(']');\n-    }\n-\n-    private static void longArrayAppend(StringBuffer sbuf, long[] a) {\n-        sbuf.append('[');\n-        final int len = a.length;\n-        for (int i = 0; i < len; i++) {\n-            sbuf.append(a[i]);\n-            if (i != len - 1) {\n-                sbuf.append(\", \");\n-            }\n-        }\n-        sbuf.append(']');\n-    }\n-\n-    private static void floatArrayAppend(StringBuffer sbuf, float[] a) {\n-        sbuf.append('[');\n-        final int len = a.length;\n-        for (int i = 0; i < len; i++) {\n-            sbuf.append(a[i]);\n-            if (i != len - 1) {\n-                sbuf.append(\", \");\n-            }\n-        }\n-        sbuf.append(']');\n-    }\n-\n-    private static void doubleArrayAppend(StringBuffer sbuf, double[] a) {\n-        sbuf.append('[');\n-        final int len = a.length;\n-        for (int i = 0; i < len; i++) {\n-            sbuf.append(a[i]);\n-            if (i != len - 1) {\n-                sbuf.append(\", \");\n-            }\n-        }\n-        sbuf.append(']');\n-    }\n-\n-    private MessageFormatter() {\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.netty4.logging;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ArrayUtils;\r\n+\r\n+import java.text.MessageFormat;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+// contributors: lizongbo: proposed special treatment of array parameter values\r\n+// Joern Huxhorn: pointed out double[] omission, suggested deep array copy\r\n+\r\n+/**\r\n+ * Formats messages according to very simple substitution rules. Substitutions\r\n+ * can be made 1, 2 or more arguments.\r\n+ * <p/>\r\n+ * <p/>\r\n+ * For example,\r\n+ * <p/>\r\n+ * <pre>\r\n+ * MessageFormatter.format(&quot;Hi {}.&quot;, &quot;there&quot;)\r\n+ * </pre>\r\n+ * <p/>\r\n+ * will return the string \"Hi there.\".\r\n+ * <p/>\r\n+ * The {} pair is called the <em>formatting anchor</em>. It serves to designate\r\n+ * the location where arguments need to be substituted within the message\r\n+ * pattern.\r\n+ * <p/>\r\n+ * In case your message contains the '{' or the '}' character, you do not have\r\n+ * to do anything special unless the '}' character immediately follows '{'. For\r\n+ * example,\r\n+ * <p/>\r\n+ * <pre>\r\n+ * MessageFormatter.format(&quot;Set {1,2,3} is not equal to {}.&quot;, &quot;1,2&quot;);\r\n+ * </pre>\r\n+ * <p/>\r\n+ * will return the string \"Set {1,2,3} is not equal to 1,2.\".\r\n+ * <p/>\r\n+ * <p/>\r\n+ * If for whatever reason you need to place the string \"{}\" in the message\r\n+ * without its <em>formatting anchor</em> meaning, then you need to escape the\r\n+ * '{' character with '\\', that is the backslash character. Only the '{'\r\n+ * character should be escaped. There is no need to escape the '}' character.\r\n+ * For example,\r\n+ * <p/>\r\n+ * <pre>\r\n+ * MessageFormatter.format(&quot;Set \\\\{} is not equal to {}.&quot;, &quot;1,2&quot;);\r\n+ * </pre>\r\n+ * <p/>\r\n+ * will return the string \"Set {} is not equal to 1,2.\".\r\n+ * <p/>\r\n+ * <p/>\r\n+ * The escaping behavior just described can be overridden by escaping the escape\r\n+ * character '\\'. Calling\r\n+ * <p/>\r\n+ * <pre>\r\n+ * MessageFormatter.format(&quot;File name is C:\\\\\\\\{}.&quot;, &quot;file.zip&quot;);\r\n+ * </pre>\r\n+ * <p/>\r\n+ * will return the string \"File name is C:\\file.zip\".\r\n+ * <p/>\r\n+ * <p/>\r\n+ * The formatting conventions are different than those of {@link MessageFormat}\r\n+ * which ships with the Java platform. This is justified by the fact that\r\n+ * SLF4J's implementation is 10 times faster than that of {@link MessageFormat}.\r\n+ * This local performance difference is both measurable and significant in the\r\n+ * larger context of the complete logging processing chain.\r\n+ * <p/>\r\n+ * <p/>\r\n+ * See also {@link #format(String, Object)},\r\n+ * {@link #format(String, Object, Object)} and\r\n+ * {@link #arrayFormat(String, Object[])} methods for more details.\r\n+ */\r\n+final class MessageFormatter {\r\n+    private static final Logger logger = LoggerFactory.getLogger(MessageFormatter.class);\r\n+    static final char DELIM_START = '{';\r\n+    static final char DELIM_STOP = '}';\r\n+    static final String DELIM_STR = \"{}\";\r\n+    private static final char ESCAPE_CHAR = '\\\\';\r\n+\r\n+    /**\r\n+     * Performs single argument substitution for the 'messagePattern' passed as\r\n+     * parameter.\r\n+     * <p/>\r\n+     * For example,\r\n+     * <p/>\r\n+     * <pre>\r\n+     * MessageFormatter.format(&quot;Hi {}.&quot;, &quot;there&quot;);\r\n+     * </pre>\r\n+     * <p/>\r\n+     * will return the string \"Hi there.\".\r\n+     * <p/>\r\n+     *\r\n+     * @param messagePattern The message pattern which will be parsed and formatted\r\n+     * @param arg            The argument to be substituted in place of the formatting anchor\r\n+     * @return The formatted message\r\n+     */\r\n+    static FormattingTuple format(String messagePattern, Object arg) {\r\n+        return arrayFormat(messagePattern, new Object[]{arg});\r\n+    }\r\n+\r\n+    /**\r\n+     * Performs a two argument substitution for the 'messagePattern' passed as\r\n+     * parameter.\r\n+     * <p/>\r\n+     * For example,\r\n+     * <p/>\r\n+     * <pre>\r\n+     * MessageFormatter.format(&quot;Hi {}. My name is {}.&quot;, &quot;Alice&quot;, &quot;Bob&quot;);\r\n+     * </pre>\r\n+     * <p/>\r\n+     * will return the string \"Hi Alice. My name is Bob.\".\r\n+     *\r\n+     * @param messagePattern The message pattern which will be parsed and formatted\r\n+     * @param argA           The argument to be substituted in place of the first formatting\r\n+     *                       anchor\r\n+     * @param argB           The argument to be substituted in place of the second formatting\r\n+     *                       anchor\r\n+     * @return The formatted message\r\n+     */\r\n+    static FormattingTuple format(final String messagePattern,\r\n+                                  Object argA, Object argB) {\r\n+        return arrayFormat(messagePattern, new Object[]{argA, argB});\r\n+    }\r\n+\r\n+    static Throwable getThrowableCandidate(Object[] argArray) {\r\n+        if (ArrayUtils.isEmpty(argArray)) {\r\n+            return null;\r\n+        }\r\n+\r\n+        final Object lastEntry = argArray[argArray.length - 1];\r\n+        if (lastEntry instanceof Throwable) {\r\n+            return (Throwable) lastEntry;\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    /**\r\n+     * Same principle as the {@link #format(String, Object)} and\r\n+     * {@link #format(String, Object, Object)} methods except that any number of\r\n+     * arguments can be passed in an array.\r\n+     *\r\n+     * @param messagePattern The message pattern which will be parsed and formatted\r\n+     * @param argArray       An array of arguments to be substituted in place of formatting\r\n+     *                       anchors\r\n+     * @return The formatted message\r\n+     */\r\n+    static FormattingTuple arrayFormat(final String messagePattern,\r\n+                                       final Object[] argArray) {\r\n+\r\n+        Throwable throwableCandidate = getThrowableCandidate(argArray);\r\n+\r\n+        if (messagePattern == null) {\r\n+            return new FormattingTuple(null, argArray, throwableCandidate);\r\n+        }\r\n+\r\n+        if (argArray == null) {\r\n+            return new FormattingTuple(messagePattern);\r\n+        }\r\n+\r\n+        int i = 0;\r\n+        int j;\r\n+        StringBuffer sbuf = new StringBuffer(messagePattern.length() + 50);\r\n+\r\n+        int l;\r\n+        for (l = 0; l < argArray.length; l++) {\r\n+\r\n+            j = messagePattern.indexOf(DELIM_STR, i);\r\n+\r\n+            if (j == -1) {\r\n+                // no more variables\r\n+                if (i == 0) { // this is a simple string\r\n+                    return new FormattingTuple(messagePattern, argArray,\r\n+                            throwableCandidate);\r\n+                } else { // add the tail string which contains no variables and return\r\n+                    // the result.\r\n+                    sbuf.append(messagePattern.substring(i));\r\n+                    return new FormattingTuple(sbuf.toString(), argArray,\r\n+                            throwableCandidate);\r\n+                }\r\n+            } else {\r\n+                if (isEscapedDelimiter(messagePattern, j)) {\r\n+                    if (!isDoubleEscaped(messagePattern, j)) {\r\n+                        l--; // DELIM_START was escaped, thus should not be incremented\r\n+                        sbuf.append(messagePattern, i, j - 1);\r\n+                        sbuf.append(DELIM_START);\r\n+                        i = j + 1;\r\n+                    } else {\r\n+                        // The escape character preceding the delimiter start is\r\n+                        // itself escaped: \"abc x:\\\\{}\"\r\n+                        // we have to consume one backward slash\r\n+                        sbuf.append(messagePattern, i, j - 1);\r\n+                        deeplyAppendParameter(sbuf, argArray[l], new HashMap<Object[], Void>());\r\n+                        i = j + 2;\r\n+                    }\r\n+                } else {\r\n+                    // normal case\r\n+                    sbuf.append(messagePattern, i, j);\r\n+                    deeplyAppendParameter(sbuf, argArray[l], new HashMap<Object[], Void>());\r\n+                    i = j + 2;\r\n+                }\r\n+            }\r\n+        }\r\n+        // append the characters following the last {} pair.\r\n+        sbuf.append(messagePattern.substring(i));\r\n+        if (l < argArray.length - 1) {\r\n+            return new FormattingTuple(sbuf.toString(), argArray, throwableCandidate);\r\n+        } else {\r\n+            return new FormattingTuple(sbuf.toString(), argArray, null);\r\n+        }\r\n+    }\r\n+\r\n+    static boolean isEscapedDelimiter(String messagePattern,\r\n+                                      int delimiterStartIndex) {\r\n+\r\n+        if (delimiterStartIndex == 0) {\r\n+            return false;\r\n+        }\r\n+        return messagePattern.charAt(delimiterStartIndex - 1) == ESCAPE_CHAR;\r\n+    }\r\n+\r\n+    static boolean isDoubleEscaped(String messagePattern,\r\n+                                   int delimiterStartIndex) {\r\n+        return delimiterStartIndex >= 2 && messagePattern.charAt(delimiterStartIndex - 2) == ESCAPE_CHAR;\r\n+    }\r\n+\r\n+    // special treatment of array values was suggested by 'lizongbo'\r\n+    private static void deeplyAppendParameter(StringBuffer sbuf, Object o,\r\n+                                              Map<Object[], Void> seenMap) {\r\n+        if (o == null) {\r\n+            sbuf.append(\"null\");\r\n+            return;\r\n+        }\r\n+        if (!o.getClass().isArray()) {\r\n+            safeObjectAppend(sbuf, o);\r\n+        } else {\r\n+            // check for primitive array types because they\r\n+            // unfortunately cannot be cast to Object[]\r\n+            if (o instanceof boolean[]) {\r\n+                booleanArrayAppend(sbuf, (boolean[]) o);\r\n+            } else if (o instanceof byte[]) {\r\n+                byteArrayAppend(sbuf, (byte[]) o);\r\n+            } else if (o instanceof char[]) {\r\n+                charArrayAppend(sbuf, (char[]) o);\r\n+            } else if (o instanceof short[]) {\r\n+                shortArrayAppend(sbuf, (short[]) o);\r\n+            } else if (o instanceof int[]) {\r\n+                intArrayAppend(sbuf, (int[]) o);\r\n+            } else if (o instanceof long[]) {\r\n+                longArrayAppend(sbuf, (long[]) o);\r\n+            } else if (o instanceof float[]) {\r\n+                floatArrayAppend(sbuf, (float[]) o);\r\n+            } else if (o instanceof double[]) {\r\n+                doubleArrayAppend(sbuf, (double[]) o);\r\n+            } else {\r\n+                objectArrayAppend(sbuf, (Object[]) o, seenMap);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private static void safeObjectAppend(StringBuffer sbuf, Object o) {\r\n+        try {\r\n+            String oAsString = o.toString();\r\n+            sbuf.append(oAsString);\r\n+        } catch (Throwable t) {\r\n+            System.err\r\n+                    .println(\"SLF4J: Failed toString() invocation on an object of type [\"\r\n+                            + o.getClass().getName() + ']');\r\n+            logger.error(t.getMessage(), t);\r\n+            sbuf.append(\"[FAILED toString()]\");\r\n+        }\r\n+    }\r\n+\r\n+    private static void objectArrayAppend(StringBuffer sbuf, Object[] a,\r\n+                                          Map<Object[], Void> seenMap) {\r\n+        sbuf.append('[');\r\n+        if (!seenMap.containsKey(a)) {\r\n+            seenMap.put(a, null);\r\n+            final int len = a.length;\r\n+            for (int i = 0; i < len; i++) {\r\n+                deeplyAppendParameter(sbuf, a[i], seenMap);\r\n+                if (i != len - 1) {\r\n+                    sbuf.append(\", \");\r\n+                }\r\n+            }\r\n+            // allow repeats in siblings\r\n+            seenMap.remove(a);\r\n+        } else {\r\n+            sbuf.append(\"...\");\r\n+        }\r\n+        sbuf.append(']');\r\n+    }\r\n+\r\n+    private static void booleanArrayAppend(StringBuffer sbuf, boolean[] a) {\r\n+        sbuf.append('[');\r\n+        final int len = a.length;\r\n+        for (int i = 0; i < len; i++) {\r\n+            sbuf.append(a[i]);\r\n+            if (i != len - 1) {\r\n+                sbuf.append(\", \");\r\n+            }\r\n+        }\r\n+        sbuf.append(']');\r\n+    }\r\n+\r\n+    private static void byteArrayAppend(StringBuffer sbuf, byte[] a) {\r\n+        sbuf.append('[');\r\n+        final int len = a.length;\r\n+        for (int i = 0; i < len; i++) {\r\n+            sbuf.append(a[i]);\r\n+            if (i != len - 1) {\r\n+                sbuf.append(\", \");\r\n+            }\r\n+        }\r\n+        sbuf.append(']');\r\n+    }\r\n+\r\n+    private static void charArrayAppend(StringBuffer sbuf, char[] a) {\r\n+        sbuf.append('[');\r\n+        final int len = a.length;\r\n+        for (int i = 0; i < len; i++) {\r\n+            sbuf.append(a[i]);\r\n+            if (i != len - 1) {\r\n+                sbuf.append(\", \");\r\n+            }\r\n+        }\r\n+        sbuf.append(']');\r\n+    }\r\n+\r\n+    private static void shortArrayAppend(StringBuffer sbuf, short[] a) {\r\n+        sbuf.append('[');\r\n+        final int len = a.length;\r\n+        for (int i = 0; i < len; i++) {\r\n+            sbuf.append(a[i]);\r\n+            if (i != len - 1) {\r\n+                sbuf.append(\", \");\r\n+            }\r\n+        }\r\n+        sbuf.append(']');\r\n+    }\r\n+\r\n+    private static void intArrayAppend(StringBuffer sbuf, int[] a) {\r\n+        sbuf.append('[');\r\n+        final int len = a.length;\r\n+        for (int i = 0; i < len; i++) {\r\n+            sbuf.append(a[i]);\r\n+            if (i != len - 1) {\r\n+                sbuf.append(\", \");\r\n+            }\r\n+        }\r\n+        sbuf.append(']');\r\n+    }\r\n+\r\n+    private static void longArrayAppend(StringBuffer sbuf, long[] a) {\r\n+        sbuf.append('[');\r\n+        final int len = a.length;\r\n+        for (int i = 0; i < len; i++) {\r\n+            sbuf.append(a[i]);\r\n+            if (i != len - 1) {\r\n+                sbuf.append(\", \");\r\n+            }\r\n+        }\r\n+        sbuf.append(']');\r\n+    }\r\n+\r\n+    private static void floatArrayAppend(StringBuffer sbuf, float[] a) {\r\n+        sbuf.append('[');\r\n+        final int len = a.length;\r\n+        for (int i = 0; i < len; i++) {\r\n+            sbuf.append(a[i]);\r\n+            if (i != len - 1) {\r\n+                sbuf.append(\", \");\r\n+            }\r\n+        }\r\n+        sbuf.append(']');\r\n+    }\r\n+\r\n+    private static void doubleArrayAppend(StringBuffer sbuf, double[] a) {\r\n+        sbuf.append('[');\r\n+        final int len = a.length;\r\n+        for (int i = 0; i < len; i++) {\r\n+            sbuf.append(a[i]);\r\n+            if (i != len - 1) {\r\n+                sbuf.append(\", \");\r\n+            }\r\n+        }\r\n+        sbuf.append(']');\r\n+    }\r\n+\r\n+    private MessageFormatter() {\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/etcd/AbstractRetryPolicy.java", "source2": "org/apache/dubbo/remoting/etcd/AbstractRetryPolicy.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,45 +1,45 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.etcd;\n-\n-public abstract class AbstractRetryPolicy implements RetryPolicy {\n-\n-    private final int maxRetried;\n-\n-    protected AbstractRetryPolicy(int maxRetried) {\n-        this.maxRetried = maxRetried;\n-    }\n-\n-    @Override\n-    public boolean shouldRetry(int retried, long elapsed, boolean sleep) {\n-        if (retried < maxRetried) {\n-            try {\n-                if (sleep) {\n-                    Thread.sleep(getSleepTime(retried, elapsed));\n-                }\n-            } catch (InterruptedException e) {\n-                Thread.currentThread().interrupt();\n-                return false;\n-            }\n-            return true;\n-        }\n-        return false;\n-    }\n-\n-    protected abstract long getSleepTime(int retried, long elapsed);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.etcd;\r\n+\r\n+public abstract class AbstractRetryPolicy implements RetryPolicy {\r\n+\r\n+    private final int maxRetried;\r\n+\r\n+    protected AbstractRetryPolicy(int maxRetried) {\r\n+        this.maxRetried = maxRetried;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean shouldRetry(int retried, long elapsed, boolean sleep) {\r\n+        if (retried < maxRetried) {\r\n+            try {\r\n+                if (sleep) {\r\n+                    Thread.sleep(getSleepTime(retried, elapsed));\r\n+                }\r\n+            } catch (InterruptedException e) {\r\n+                Thread.currentThread().interrupt();\r\n+                return false;\r\n+            }\r\n+            return true;\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    protected abstract long getSleepTime(int retried, long elapsed);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/etcd/Constants.java", "source2": "org/apache/dubbo/remoting/etcd/Constants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,55 +1,55 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.remoting.etcd;\n-\n-import static org.apache.dubbo.remoting.Constants.DEFAULT_IO_THREADS;\n-\n-public interface Constants {\n-    String ETCD3_NOTIFY_MAXTHREADS_KEYS = \"etcd3.notify.maxthreads\";\n-\n-    int DEFAULT_ETCD3_NOTIFY_THREADS = DEFAULT_IO_THREADS;\n-\n-    String DEFAULT_ETCD3_NOTIFY_QUEUES_KEY = \"etcd3.notify.queues\";\n-\n-    int DEFAULT_GRPC_QUEUES = 300_0000;\n-\n-    String RETRY_PERIOD_KEY = \"retry.period\";\n-\n-    int DEFAULT_RETRY_PERIOD = 5 * 1000;\n-\n-    int DEFAULT_SESSION_TIMEOUT = 60 * 1000;\n-\n-    String HTTP_SUBFIX_KEY = \"://\";\n-\n-    String HTTP_KEY = \"http://\";\n-\n-    int DEFAULT_KEEPALIVE_TIMEOUT = DEFAULT_SESSION_TIMEOUT / 2;\n-\n-    String SESSION_TIMEOUT_KEY = \"session\";\n-\n-    int DEFAULT_RECONNECT_PERIOD = 3 * 1000;\n-\n-    String ROUTERS_CATEGORY = \"routers\";\n-\n-    String PROVIDERS_CATEGORY = \"providers\";\n-\n-    String CONSUMERS_CATEGORY = \"consumers\";\n-\n-    String CONFIGURATORS_CATEGORY = \"configurators\";\n-}\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.remoting.etcd;\r\n+\r\n+import static org.apache.dubbo.remoting.Constants.DEFAULT_IO_THREADS;\r\n+\r\n+public interface Constants {\r\n+    String ETCD3_NOTIFY_MAXTHREADS_KEYS = \"etcd3.notify.maxthreads\";\r\n+\r\n+    int DEFAULT_ETCD3_NOTIFY_THREADS = DEFAULT_IO_THREADS;\r\n+\r\n+    String DEFAULT_ETCD3_NOTIFY_QUEUES_KEY = \"etcd3.notify.queues\";\r\n+\r\n+    int DEFAULT_GRPC_QUEUES = 300_0000;\r\n+\r\n+    String RETRY_PERIOD_KEY = \"retry.period\";\r\n+\r\n+    int DEFAULT_RETRY_PERIOD = 5 * 1000;\r\n+\r\n+    int DEFAULT_SESSION_TIMEOUT = 60 * 1000;\r\n+\r\n+    String HTTP_SUBFIX_KEY = \"://\";\r\n+\r\n+    String HTTP_KEY = \"http://\";\r\n+\r\n+    int DEFAULT_KEEPALIVE_TIMEOUT = DEFAULT_SESSION_TIMEOUT / 2;\r\n+\r\n+    String SESSION_TIMEOUT_KEY = \"session\";\r\n+\r\n+    int DEFAULT_RECONNECT_PERIOD = 3 * 1000;\r\n+\r\n+    String ROUTERS_CATEGORY = \"routers\";\r\n+\r\n+    String PROVIDERS_CATEGORY = \"providers\";\r\n+\r\n+    String CONSUMERS_CATEGORY = \"consumers\";\r\n+\r\n+    String CONFIGURATORS_CATEGORY = \"configurators\";\r\n+}\r\n+\r\n"}, {"source1": "org/apache/dubbo/remoting/etcd/EtcdClient.java", "source2": "org/apache/dubbo/remoting/etcd/EtcdClient.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,191 +1,191 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.etcd;\n-\n-import org.apache.dubbo.common.URL;\n-\n-import java.util.List;\n-import java.util.concurrent.CancellationException;\n-import java.util.concurrent.ExecutionException;\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.TimeoutException;\n-\n-public interface EtcdClient {\n-\n-    /**\n-     * save the specified path to the etcd registry.\n-     *\n-     * @param path the path to be saved\n-     */\n-    void create(String path);\n-\n-    /**\n-     * save the specified path to the etcd registry.\n-     * if node disconnect from etcd, it will be deleted\n-     * automatically by etcd when session timeout.\n-     *\n-     * @param path the path to be saved\n-     * @return the lease of current path.\n-     */\n-    long createEphemeral(String path);\n-\n-    /**\n-     * remove the specified  from etcd registry.\n-     *\n-     * @param path the path to be removed\n-     */\n-    void delete(String path);\n-\n-    /**\n-     * find direct children directory, excluding path self,\n-     * Never return null.\n-     *\n-     * @param path the path to be found direct children.\n-     * @return direct children directory, contains zero element\n-     * list if children directory not exists.\n-     */\n-    List<String> getChildren(String path);\n-\n-    /**\n-     * register children listener for specified path.\n-     *\n-     * @param path     the path to be watched when children is added, delete or update.\n-     * @param listener when children is changed , listener will be triggered.\n-     * @return direct children directory, contains zero element\n-     * list if children directory not exists.\n-     */\n-    List<String> addChildListener(String path, ChildListener listener);\n-\n-    /**\n-     * find watcher of the children listener for specified path.\n-     *\n-     * @param path     the path to be watched when children is added, delete or update.\n-     * @param listener when children is changed , listener will be triggered.\n-     * @return watcher if find else null\n-     */\n-    <T> T getChildListener(String path, ChildListener listener);\n-\n-    /**\n-     * unregister children lister for specified path.\n-     *\n-     * @param path     the path to be unwatched .\n-     * @param listener when children is changed , lister will be triggered.\n-     */\n-    void removeChildListener(String path, ChildListener listener);\n-\n-    /**\n-     * support connection notify if connection state was changed.\n-     *\n-     * @param listener if state changed, listener will be triggered.\n-     */\n-    void addStateListener(StateListener listener);\n-\n-    /**\n-     * remove connection notify if connection state was changed.\n-     *\n-     * @param listener remove already registered listener, if listener\n-     *                 not exists nothing happened.\n-     */\n-    void removeStateListener(StateListener listener);\n-\n-    /**\n-     * test if current client is active.\n-     *\n-     * @return true if connection is active else false.\n-     */\n-    boolean isConnected();\n-\n-    /**\n-     * close current client and release all resourses.\n-     */\n-    void close();\n-\n-    URL getUrl();\n-\n-    /***\n-     * create new lease from specified second ,it should be waiting if failed.<p>\n-     *\n-     * @param second lease time (support second only).\n-     * @return lease id from etcd\n-     */\n-    long createLease(long second);\n-\n-    /***\n-     * create new lease from specified ttl second before waiting specified timeout.<p>\n-     *\n-     * @param ttl lease time (support second only).\n-     * @param timeout the maximum time to wait\n-     * @param unit the time unit of the timeout argument\n-     * @throws CancellationException if this future was cancelled\n-     * @throws ExecutionException if this future completed exceptionally\n-     * @throws InterruptedException if the current thread was interrupted\n-     * while waiting\n-     * @throws TimeoutException if the wait timed out\n-     * @return lease id from etcd\n-     */\n-    long createLease(long ttl, long timeout, TimeUnit unit)\n-            throws InterruptedException, ExecutionException, TimeoutException;\n-\n-    /**\n-     * revoke specified lease, any associated path will removed automatically.\n-     *\n-     * @param lease to be removed lease\n-     */\n-    void revokeLease(long lease);\n-\n-\n-    /**\n-     * Get the value of the specified key.\n-     * @param key the specified key\n-     * @return null if the value is not found\n-     */\n-    String getKVValue(String key);\n-\n-    /**\n-     * Put the key value pair to etcd\n-     * @param key the specified key\n-     * @param value the paired value\n-     * @return true if put success\n-     */\n-    boolean put(String key, String value);\n-\n-    /**\n-     * Put the key value pair to etcd (Ephemeral)\n-     * @param key the specified key\n-     * @param value the paired value\n-     * @return true if put success\n-     */\n-    boolean putEphemeral(String key, String value);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.etcd;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+\r\n+import java.util.List;\r\n+import java.util.concurrent.CancellationException;\r\n+import java.util.concurrent.ExecutionException;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.TimeoutException;\r\n+\r\n+public interface EtcdClient {\r\n+\r\n+    /**\r\n+     * save the specified path to the etcd registry.\r\n+     *\r\n+     * @param path the path to be saved\r\n+     */\r\n+    void create(String path);\r\n+\r\n+    /**\r\n+     * save the specified path to the etcd registry.\r\n+     * if node disconnect from etcd, it will be deleted\r\n+     * automatically by etcd when session timeout.\r\n+     *\r\n+     * @param path the path to be saved\r\n+     * @return the lease of current path.\r\n+     */\r\n+    long createEphemeral(String path);\r\n+\r\n+    /**\r\n+     * remove the specified  from etcd registry.\r\n+     *\r\n+     * @param path the path to be removed\r\n+     */\r\n+    void delete(String path);\r\n+\r\n+    /**\r\n+     * find direct children directory, excluding path self,\r\n+     * Never return null.\r\n+     *\r\n+     * @param path the path to be found direct children.\r\n+     * @return direct children directory, contains zero element\r\n+     * list if children directory not exists.\r\n+     */\r\n+    List<String> getChildren(String path);\r\n+\r\n+    /**\r\n+     * register children listener for specified path.\r\n+     *\r\n+     * @param path     the path to be watched when children is added, delete or update.\r\n+     * @param listener when children is changed , listener will be triggered.\r\n+     * @return direct children directory, contains zero element\r\n+     * list if children directory not exists.\r\n+     */\r\n+    List<String> addChildListener(String path, ChildListener listener);\r\n+\r\n+    /**\r\n+     * find watcher of the children listener for specified path.\r\n+     *\r\n+     * @param path     the path to be watched when children is added, delete or update.\r\n+     * @param listener when children is changed , listener will be triggered.\r\n+     * @return watcher if find else null\r\n+     */\r\n+    <T> T getChildListener(String path, ChildListener listener);\r\n+\r\n+    /**\r\n+     * unregister children lister for specified path.\r\n+     *\r\n+     * @param path     the path to be unwatched .\r\n+     * @param listener when children is changed , lister will be triggered.\r\n+     */\r\n+    void removeChildListener(String path, ChildListener listener);\r\n+\r\n+    /**\r\n+     * support connection notify if connection state was changed.\r\n+     *\r\n+     * @param listener if state changed, listener will be triggered.\r\n+     */\r\n+    void addStateListener(StateListener listener);\r\n+\r\n+    /**\r\n+     * remove connection notify if connection state was changed.\r\n+     *\r\n+     * @param listener remove already registered listener, if listener\r\n+     *                 not exists nothing happened.\r\n+     */\r\n+    void removeStateListener(StateListener listener);\r\n+\r\n+    /**\r\n+     * test if current client is active.\r\n+     *\r\n+     * @return true if connection is active else false.\r\n+     */\r\n+    boolean isConnected();\r\n+\r\n+    /**\r\n+     * close current client and release all resourses.\r\n+     */\r\n+    void close();\r\n+\r\n+    URL getUrl();\r\n+\r\n+    /***\r\n+     * create new lease from specified second ,it should be waiting if failed.<p>\r\n+     *\r\n+     * @param second lease time (support second only).\r\n+     * @return lease id from etcd\r\n+     */\r\n+    long createLease(long second);\r\n+\r\n+    /***\r\n+     * create new lease from specified ttl second before waiting specified timeout.<p>\r\n+     *\r\n+     * @param ttl lease time (support second only).\r\n+     * @param timeout the maximum time to wait\r\n+     * @param unit the time unit of the timeout argument\r\n+     * @throws CancellationException if this future was cancelled\r\n+     * @throws ExecutionException if this future completed exceptionally\r\n+     * @throws InterruptedException if the current thread was interrupted\r\n+     * while waiting\r\n+     * @throws TimeoutException if the wait timed out\r\n+     * @return lease id from etcd\r\n+     */\r\n+    long createLease(long ttl, long timeout, TimeUnit unit)\r\n+            throws InterruptedException, ExecutionException, TimeoutException;\r\n+\r\n+    /**\r\n+     * revoke specified lease, any associated path will removed automatically.\r\n+     *\r\n+     * @param lease to be removed lease\r\n+     */\r\n+    void revokeLease(long lease);\r\n+\r\n+\r\n+    /**\r\n+     * Get the value of the specified key.\r\n+     * @param key the specified key\r\n+     * @return null if the value is not found\r\n+     */\r\n+    String getKVValue(String key);\r\n+\r\n+    /**\r\n+     * Put the key value pair to etcd\r\n+     * @param key the specified key\r\n+     * @param value the paired value\r\n+     * @return true if put success\r\n+     */\r\n+    boolean put(String key, String value);\r\n+\r\n+    /**\r\n+     * Put the key value pair to etcd (Ephemeral)\r\n+     * @param key the specified key\r\n+     * @param value the paired value\r\n+     * @return true if put success\r\n+     */\r\n+    boolean putEphemeral(String key, String value);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/etcd/EtcdTransporter.java", "source2": "org/apache/dubbo/remoting/etcd/EtcdTransporter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,47 +1,47 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.etcd;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.Adaptive;\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.remoting.Constants;\n-\n-@SPI(\"jetcd\")\n-public interface EtcdTransporter {\n-\n-    @Adaptive({Constants.CLIENT_KEY, Constants.TRANSPORTER_KEY})\n-    EtcdClient connect(URL url);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.etcd;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.Adaptive;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+\r\n+@SPI(\"jetcd\")\r\n+public interface EtcdTransporter {\r\n+\r\n+    @Adaptive({Constants.CLIENT_KEY, Constants.TRANSPORTER_KEY})\r\n+    EtcdClient connect(URL url);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/etcd/RetryPolicy.java", "source2": "org/apache/dubbo/remoting/etcd/RetryPolicy.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,31 +1,31 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.etcd;\n-\n-public interface RetryPolicy {\n-\n-    /**\n-     * Whether retry is supported when operation fails.\n-     *\n-     * @param retried the number of times retried so far\n-     * @param elapsed the elapsed time in millisecond since the operation was attempted\n-     * @param sleep   should be sleep\n-     * @return true should be retry\n-     */\n-    boolean shouldRetry(int retried, long elapsed, boolean sleep);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.etcd;\r\n+\r\n+public interface RetryPolicy {\r\n+\r\n+    /**\r\n+     * Whether retry is supported when operation fails.\r\n+     *\r\n+     * @param retried the number of times retried so far\r\n+     * @param elapsed the elapsed time in millisecond since the operation was attempted\r\n+     * @param sleep   should be sleep\r\n+     * @return true should be retry\r\n+     */\r\n+    boolean shouldRetry(int retried, long elapsed, boolean sleep);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/etcd/jetcd/ConnectionStateListener.java", "source2": "org/apache/dubbo/remoting/etcd/jetcd/ConnectionStateListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,31 +1,31 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.remoting.etcd.jetcd;\n-\n-import io.etcd.jetcd.Client;\n-\n-public interface ConnectionStateListener {\n-\n-    /**\n-     * Called when there is a state change in the connection\n-     *\n-     * @param client   the client\n-     * @param newState the new state\n-     */\n-    void stateChanged(Client client, int newState);\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.remoting.etcd.jetcd;\r\n+\r\n+import io.etcd.jetcd.Client;\r\n+\r\n+public interface ConnectionStateListener {\r\n+\r\n+    /**\r\n+     * Called when there is a state change in the connection\r\n+     *\r\n+     * @param client   the client\r\n+     * @param newState the new state\r\n+     */\r\n+    void stateChanged(Client client, int newState);\r\n }\n"}, {"source1": "org/apache/dubbo/remoting/etcd/jetcd/JEtcdClient.java", "source2": "org/apache/dubbo/remoting/etcd/jetcd/JEtcdClient.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,473 +1,473 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.remoting.etcd.jetcd;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ExecutorUtil;\n-import org.apache.dubbo.common.utils.NamedThreadFactory;\n-import org.apache.dubbo.remoting.etcd.ChildListener;\n-import org.apache.dubbo.remoting.etcd.StateListener;\n-import org.apache.dubbo.remoting.etcd.option.OptionUtil;\n-import org.apache.dubbo.remoting.etcd.support.AbstractEtcdClient;\n-\n-import com.google.protobuf.ByteString;\n-import io.etcd.jetcd.ByteSequence;\n-import io.etcd.jetcd.api.Event;\n-import io.etcd.jetcd.api.KeyValue;\n-import io.etcd.jetcd.api.WatchCancelRequest;\n-import io.etcd.jetcd.api.WatchCreateRequest;\n-import io.etcd.jetcd.api.WatchGrpc;\n-import io.etcd.jetcd.api.WatchRequest;\n-import io.etcd.jetcd.api.WatchResponse;\n-import io.etcd.jetcd.common.exception.ClosedClientException;\n-import io.grpc.ManagedChannel;\n-import io.grpc.Status;\n-import io.grpc.stub.StreamObserver;\n-import io.netty.util.internal.ConcurrentSet;\n-\n-import java.util.ArrayList;\n-import java.util.Collections;\n-import java.util.Iterator;\n-import java.util.List;\n-import java.util.Random;\n-import java.util.Set;\n-import java.util.concurrent.ExecutionException;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.Executors;\n-import java.util.concurrent.LinkedBlockingQueue;\n-import java.util.concurrent.ScheduledExecutorService;\n-import java.util.concurrent.ThreadPoolExecutor;\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.TimeoutException;\n-import java.util.concurrent.locks.ReentrantLock;\n-\n-import static java.util.stream.Collectors.toList;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\n-import static org.apache.dubbo.remoting.etcd.Constants.DEFAULT_ETCD3_NOTIFY_QUEUES_KEY;\n-import static org.apache.dubbo.remoting.etcd.Constants.DEFAULT_ETCD3_NOTIFY_THREADS;\n-import static org.apache.dubbo.remoting.etcd.Constants.DEFAULT_GRPC_QUEUES;\n-import static org.apache.dubbo.remoting.etcd.Constants.DEFAULT_RETRY_PERIOD;\n-import static org.apache.dubbo.remoting.etcd.Constants.DEFAULT_SESSION_TIMEOUT;\n-import static org.apache.dubbo.remoting.etcd.Constants.ETCD3_NOTIFY_MAXTHREADS_KEYS;\n-import static org.apache.dubbo.remoting.etcd.Constants.RETRY_PERIOD_KEY;\n-import static org.apache.dubbo.remoting.etcd.jetcd.JEtcdClientWrapper.UTF_8;\n-\n-/**\n- * etcd3 client.\n- */\n-public class JEtcdClient extends AbstractEtcdClient<JEtcdClient.EtcdWatcher> {\n-\n-    private JEtcdClientWrapper clientWrapper;\n-    private ScheduledExecutorService reconnectSchedule;\n-\n-    private ExecutorService notifyExecutor;\n-\n-    private int delayPeriod;\n-    private Logger logger = LoggerFactory.getLogger(JEtcdClient.class);\n-\n-    public JEtcdClient(URL url) {\n-        super(url);\n-        try {\n-            clientWrapper = new JEtcdClientWrapper(url);\n-            clientWrapper.setConnectionStateListener((client, state) -> {\n-                if (state == StateListener.CONNECTED) {\n-                    JEtcdClient.this.stateChanged(StateListener.CONNECTED);\n-                } else if (state == StateListener.DISCONNECTED) {\n-                    JEtcdClient.this.stateChanged(StateListener.DISCONNECTED);\n-                }\n-            });\n-            delayPeriod = getUrl().getParameter(RETRY_PERIOD_KEY, DEFAULT_RETRY_PERIOD);\n-            reconnectSchedule = Executors.newScheduledThreadPool(1,\n-                    new NamedThreadFactory(\"etcd3-watch-auto-reconnect\"));\n-\n-            notifyExecutor = new ThreadPoolExecutor(\n-                    1\n-                    , url.getParameter(ETCD3_NOTIFY_MAXTHREADS_KEYS, DEFAULT_ETCD3_NOTIFY_THREADS)\n-                    , DEFAULT_SESSION_TIMEOUT\n-                    , TimeUnit.MILLISECONDS\n-                    , new LinkedBlockingQueue<Runnable>(url.getParameter(DEFAULT_ETCD3_NOTIFY_QUEUES_KEY, DEFAULT_GRPC_QUEUES * 3))\n-                    , new NamedThreadFactory(\"etcd3-notify\", true));\n-\n-            clientWrapper.start();\n-        } catch (Exception e) {\n-            throw new IllegalStateException(e.getMessage(), e);\n-        }\n-    }\n-\n-    @Override\n-    public void doCreatePersistent(String path) {\n-        clientWrapper.createPersistent(path);\n-    }\n-\n-    @Override\n-    public long doCreateEphemeral(String path) {\n-        return clientWrapper.createEphemeral(path);\n-    }\n-\n-    @Override\n-    public boolean checkExists(String path) {\n-        return clientWrapper.checkExists(path);\n-    }\n-\n-    @Override\n-    public EtcdWatcher createChildWatcherListener(String path, ChildListener listener) {\n-        return new EtcdWatcher(listener);\n-    }\n-\n-    @Override\n-    public List<String> addChildWatcherListener(String path, EtcdWatcher etcdWatcher) {\n-        return etcdWatcher.forPath(path);\n-    }\n-\n-    @Override\n-    public void removeChildWatcherListener(String path, EtcdWatcher etcdWatcher) {\n-        etcdWatcher.unwatch();\n-    }\n-\n-    @Override\n-    public List<String> getChildren(String path) {\n-        return clientWrapper.getChildren(path);\n-    }\n-\n-    @Override\n-    public boolean isConnected() {\n-        return clientWrapper.isConnected();\n-    }\n-\n-    @Override\n-    public long createLease(long second) {\n-        return clientWrapper.createLease(second);\n-    }\n-\n-    @Override\n-    public long createLease(long ttl, long timeout, TimeUnit unit)\n-            throws InterruptedException, ExecutionException, TimeoutException {\n-        return clientWrapper.createLease(ttl, timeout, unit);\n-    }\n-\n-    @Override\n-    public void delete(String path) {\n-        clientWrapper.delete(path);\n-    }\n-\n-    @Override\n-    public void revokeLease(long lease) {\n-        clientWrapper.revokeLease(lease);\n-    }\n-\n-    @Override\n-    public void doClose() {\n-        try {\n-            if (notifyExecutor != null) {\n-                ExecutorUtil.shutdownNow(notifyExecutor, 100);\n-            }\n-        } catch (Exception e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-\n-        try {\n-            if (reconnectSchedule != null) {\n-                ExecutorUtil.shutdownNow(reconnectSchedule, 100);\n-            }\n-        } catch (Exception e) {\n-            logger.warn(e.getMessage(), e);\n-        } finally {\n-            clientWrapper.doClose();\n-        }\n-    }\n-\n-    @Override\n-    public String getKVValue(String key) {\n-        return clientWrapper.getKVValue(key);\n-    }\n-\n-    @Override\n-    public boolean put(String key, String value) {\n-        return clientWrapper.put(key, value);\n-    }\n-\n-    @Override\n-    public boolean putEphemeral(String key, String value) {\n-        return clientWrapper.putEphemeral(key, value);\n-    }\n-\n-    public ManagedChannel getChannel() {\n-        return clientWrapper.getChannel();\n-    }\n-\n-    public class EtcdWatcher implements StreamObserver<WatchResponse> {\n-\n-        protected WatchGrpc.WatchStub watchStub;\n-        protected StreamObserver<WatchRequest> watchRequest;\n-        protected long watchId;\n-        protected String path;\n-        protected Throwable throwable;\n-        protected volatile Set<String> urls = new ConcurrentSet<>();\n-        private ChildListener listener;\n-\n-        protected ReentrantLock lock = new ReentrantLock(true);\n-\n-        public EtcdWatcher(ChildListener listener) {\n-            this.listener = listener;\n-        }\n-\n-        @Override\n-        public void onNext(WatchResponse response) {\n-\n-            // prevents grpc on sending watchResponse to a closed watch client.\n-            if (!isConnected()) {\n-                return;\n-            }\n-\n-            watchId = response.getWatchId();\n-\n-            if (listener != null) {\n-                int modified = 0;\n-                String service = null;\n-                Iterator<Event> iterator = response.getEventsList().iterator();\n-                while (iterator.hasNext()) {\n-                    Event event = iterator.next();\n-                    switch (event.getType()) {\n-                        case PUT: {\n-                            if (((service = find(event)) != null)\n-                                    && safeUpdate(service, true)) {\n-                                modified++;\n-                            }\n-                            break;\n-                        }\n-                        case DELETE: {\n-                            if (((service = find(event)) != null)\n-                                    && safeUpdate(service, false)) {\n-                                modified++;\n-                            }\n-                            break;\n-                        }\n-                        default:\n-                            break;\n-                    }\n-                }\n-                if (modified > 0) {\n-                    notifyExecutor.execute(() -> listener.childChanged(path, new ArrayList<>(urls)));\n-                }\n-\n-            }\n-        }\n-\n-        @Override\n-        public void onError(Throwable e) {\n-            tryReconnect(e);\n-        }\n-\n-        public void unwatch() {\n-\n-            // prevents grpc on sending watchResponse to a closed watch client.\n-            if (!isConnected()) {\n-                return;\n-            }\n-\n-            try {\n-                /**\n-                 * issue : https://github.com/apache/dubbo/issues/4115\n-                 *\n-                 * When the network is reconnected, the listener is empty\n-                 * and the data cannot be received.\n-                 */\n-                // this.listener = null;\n-\n-                if (watchRequest != null) {\n-                    WatchCancelRequest watchCancelRequest =\n-                            WatchCancelRequest.newBuilder().setWatchId(watchId).build();\n-                    WatchRequest cancelRequest = WatchRequest.newBuilder()\n-                            .setCancelRequest(watchCancelRequest).build();\n-                    this.watchRequest.onNext(cancelRequest);\n-                }\n-            } catch (Exception ignored) {\n-                logger.warn(\"Failed to cancel watch for path '\" + path + \"'\", ignored);\n-            }\n-        }\n-\n-        public List<String> forPath(String path) {\n-\n-            if (!isConnected()) {\n-                throw new ClosedClientException(\"watch client has been closed, path '\" + path + \"'\");\n-            }\n-            if (this.path != null) {\n-                unwatch();\n-            }\n-\n-            this.path = path;\n-\n-            lock.lock();\n-            try {\n-\n-                this.watchStub = WatchGrpc.newStub(clientWrapper.getChannel());\n-                this.watchRequest = watchStub.watch(this);\n-                this.watchRequest.onNext(nextRequest());\n-\n-                List<String> children = clientWrapper.getChildren(path);\n-                /**\n-                 * caching the current service\n-                 */\n-                if (!children.isEmpty()) {\n-                    this.urls.addAll(filterChildren(children));\n-                }\n-\n-                return new ArrayList<>(urls);\n-            } finally {\n-                lock.unlock();\n-            }\n-        }\n-\n-        private boolean safeUpdate(String service, boolean add) {\n-            lock.lock();\n-            try {\n-                /**\n-                 * If the collection already contains the specified service, do nothing\n-                 */\n-                return add ? this.urls.add(service) : this.urls.remove(service);\n-            } finally {\n-                lock.unlock();\n-            }\n-        }\n-\n-        private String find(Event event) {\n-            KeyValue keyValue = event.getKv();\n-            String key = keyValue.getKey().toStringUtf8();\n-\n-            int len = path.length(), index = len, count = 0;\n-            if (key.length() >= index) {\n-                for (; (index = key.indexOf(PATH_SEPARATOR, index)) != -1; ++index) {\n-                    if (count++ > 1) {\n-                        break;\n-                    }\n-                }\n-            }\n-\n-            /**\n-             * if children changed , we should refresh invokers\n-             */\n-            if (count == 1) {\n-                /**\n-                 * remove prefix\n-                 */\n-                return key.substring(len + 1);\n-            }\n-\n-            return null;\n-        }\n-\n-        private List<String> filterChildren(List<String> children) {\n-            if (children == null) {\n-                return Collections.emptyList();\n-            }\n-            if (children.size() <= 0) {\n-                return children;\n-            }\n-            final int len = path.length();\n-            return children.stream().parallel()\n-                    .filter(child -> {\n-                        int index = len, count = 0;\n-                        if (child.length() > len) {\n-                            for (; (index = child.indexOf(PATH_SEPARATOR, index)) != -1; ++index) {\n-                                if (count++ > 1) {\n-                                    break;\n-                                }\n-                            }\n-                        }\n-                        return count == 1;\n-                    })\n-                    .map(child -> child.substring(len + 1))\n-                    .collect(toList());\n-        }\n-\n-        /**\n-         * create new watching request for current path.\n-         */\n-        protected WatchRequest nextRequest() {\n-\n-            WatchCreateRequest.Builder builder = WatchCreateRequest.newBuilder()\n-                    .setKey(ByteString.copyFromUtf8(path))\n-                    .setRangeEnd(ByteString.copyFrom(\n-                            OptionUtil.prefixEndOf(ByteSequence.from(path, UTF_8)).getBytes()))\n-                    .setProgressNotify(true);\n-\n-            return WatchRequest.newBuilder().setCreateRequest(builder).build();\n-        }\n-\n-        public void tryReconnect(Throwable e) {\n-\n-            this.throwable = e;\n-\n-            logger.error(\"watcher client has error occurred, current path '\" + path + \"'\", e);\n-\n-            // prevents grpc on sending error to a closed watch client.\n-            if (!isConnected()) {\n-                return;\n-            }\n-\n-\n-            Status status = Status.fromThrowable(e);\n-            // system may be recover later, current connect won't be lost\n-            if (OptionUtil.isHaltError(status) || OptionUtil.isNoLeaderError(status)) {\n-                reconnectSchedule.schedule(this::reconnect, new Random().nextInt(delayPeriod), TimeUnit.MILLISECONDS);\n-                return;\n-            }\n-            // reconnect with a delay; avoiding immediate retry on a long connection downtime.\n-            reconnectSchedule.schedule(this::reconnect, new Random().nextInt(delayPeriod), TimeUnit.MILLISECONDS);\n-        }\n-\n-        protected synchronized void reconnect() {\n-            this.closeWatchRequest();\n-            this.recreateWatchRequest();\n-        }\n-\n-        protected void recreateWatchRequest() {\n-            if (watchRequest == null) {\n-                this.watchStub = WatchGrpc.newStub(clientWrapper.getChannel());\n-                this.watchRequest = watchStub.watch(this);\n-            }\n-            this.watchRequest.onNext(nextRequest());\n-            this.throwable = null;\n-            logger.warn(\"watch client retried connect for path '\" + path + \"', connection status : \" + isConnected());\n-        }\n-\n-        protected void closeWatchRequest() {\n-            if (this.watchRequest == null) {\n-                return;\n-            }\n-\n-            try {\n-                WatchCancelRequest watchCancelRequest =\n-                        WatchCancelRequest.newBuilder().setWatchId(watchId).build();\n-                WatchRequest cancelRequest = WatchRequest.newBuilder()\n-                        .setCancelRequest(watchCancelRequest).build();\n-                watchRequest.onNext(cancelRequest);\n-            } finally {\n-                this.watchRequest.onCompleted();\n-                this.watchRequest = null;\n-            }\n-        }\n-\n-        @Override\n-        public void onCompleted() {\n-            // do not touch this method, if you want terminate this stream.\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.remoting.etcd.jetcd;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ExecutorUtil;\r\n+import org.apache.dubbo.common.utils.NamedThreadFactory;\r\n+import org.apache.dubbo.remoting.etcd.ChildListener;\r\n+import org.apache.dubbo.remoting.etcd.StateListener;\r\n+import org.apache.dubbo.remoting.etcd.option.OptionUtil;\r\n+import org.apache.dubbo.remoting.etcd.support.AbstractEtcdClient;\r\n+\r\n+import com.google.protobuf.ByteString;\r\n+import io.etcd.jetcd.ByteSequence;\r\n+import io.etcd.jetcd.api.Event;\r\n+import io.etcd.jetcd.api.KeyValue;\r\n+import io.etcd.jetcd.api.WatchCancelRequest;\r\n+import io.etcd.jetcd.api.WatchCreateRequest;\r\n+import io.etcd.jetcd.api.WatchGrpc;\r\n+import io.etcd.jetcd.api.WatchRequest;\r\n+import io.etcd.jetcd.api.WatchResponse;\r\n+import io.etcd.jetcd.common.exception.ClosedClientException;\r\n+import io.grpc.ManagedChannel;\r\n+import io.grpc.Status;\r\n+import io.grpc.stub.StreamObserver;\r\n+import io.netty.util.internal.ConcurrentSet;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Collections;\r\n+import java.util.Iterator;\r\n+import java.util.List;\r\n+import java.util.Random;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ExecutionException;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.Executors;\r\n+import java.util.concurrent.LinkedBlockingQueue;\r\n+import java.util.concurrent.ScheduledExecutorService;\r\n+import java.util.concurrent.ThreadPoolExecutor;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.TimeoutException;\r\n+import java.util.concurrent.locks.ReentrantLock;\r\n+\r\n+import static java.util.stream.Collectors.toList;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\r\n+import static org.apache.dubbo.remoting.etcd.Constants.DEFAULT_ETCD3_NOTIFY_QUEUES_KEY;\r\n+import static org.apache.dubbo.remoting.etcd.Constants.DEFAULT_ETCD3_NOTIFY_THREADS;\r\n+import static org.apache.dubbo.remoting.etcd.Constants.DEFAULT_GRPC_QUEUES;\r\n+import static org.apache.dubbo.remoting.etcd.Constants.DEFAULT_RETRY_PERIOD;\r\n+import static org.apache.dubbo.remoting.etcd.Constants.DEFAULT_SESSION_TIMEOUT;\r\n+import static org.apache.dubbo.remoting.etcd.Constants.ETCD3_NOTIFY_MAXTHREADS_KEYS;\r\n+import static org.apache.dubbo.remoting.etcd.Constants.RETRY_PERIOD_KEY;\r\n+import static org.apache.dubbo.remoting.etcd.jetcd.JEtcdClientWrapper.UTF_8;\r\n+\r\n+/**\r\n+ * etcd3 client.\r\n+ */\r\n+public class JEtcdClient extends AbstractEtcdClient<JEtcdClient.EtcdWatcher> {\r\n+\r\n+    private JEtcdClientWrapper clientWrapper;\r\n+    private ScheduledExecutorService reconnectSchedule;\r\n+\r\n+    private ExecutorService notifyExecutor;\r\n+\r\n+    private int delayPeriod;\r\n+    private Logger logger = LoggerFactory.getLogger(JEtcdClient.class);\r\n+\r\n+    public JEtcdClient(URL url) {\r\n+        super(url);\r\n+        try {\r\n+            clientWrapper = new JEtcdClientWrapper(url);\r\n+            clientWrapper.setConnectionStateListener((client, state) -> {\r\n+                if (state == StateListener.CONNECTED) {\r\n+                    JEtcdClient.this.stateChanged(StateListener.CONNECTED);\r\n+                } else if (state == StateListener.DISCONNECTED) {\r\n+                    JEtcdClient.this.stateChanged(StateListener.DISCONNECTED);\r\n+                }\r\n+            });\r\n+            delayPeriod = getUrl().getParameter(RETRY_PERIOD_KEY, DEFAULT_RETRY_PERIOD);\r\n+            reconnectSchedule = Executors.newScheduledThreadPool(1,\r\n+                    new NamedThreadFactory(\"etcd3-watch-auto-reconnect\"));\r\n+\r\n+            notifyExecutor = new ThreadPoolExecutor(\r\n+                    1\r\n+                    , url.getParameter(ETCD3_NOTIFY_MAXTHREADS_KEYS, DEFAULT_ETCD3_NOTIFY_THREADS)\r\n+                    , DEFAULT_SESSION_TIMEOUT\r\n+                    , TimeUnit.MILLISECONDS\r\n+                    , new LinkedBlockingQueue<Runnable>(url.getParameter(DEFAULT_ETCD3_NOTIFY_QUEUES_KEY, DEFAULT_GRPC_QUEUES * 3))\r\n+                    , new NamedThreadFactory(\"etcd3-notify\", true));\r\n+\r\n+            clientWrapper.start();\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doCreatePersistent(String path) {\r\n+        clientWrapper.createPersistent(path);\r\n+    }\r\n+\r\n+    @Override\r\n+    public long doCreateEphemeral(String path) {\r\n+        return clientWrapper.createEphemeral(path);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean checkExists(String path) {\r\n+        return clientWrapper.checkExists(path);\r\n+    }\r\n+\r\n+    @Override\r\n+    public EtcdWatcher createChildWatcherListener(String path, ChildListener listener) {\r\n+        return new EtcdWatcher(listener);\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<String> addChildWatcherListener(String path, EtcdWatcher etcdWatcher) {\r\n+        return etcdWatcher.forPath(path);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeChildWatcherListener(String path, EtcdWatcher etcdWatcher) {\r\n+        etcdWatcher.unwatch();\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<String> getChildren(String path) {\r\n+        return clientWrapper.getChildren(path);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isConnected() {\r\n+        return clientWrapper.isConnected();\r\n+    }\r\n+\r\n+    @Override\r\n+    public long createLease(long second) {\r\n+        return clientWrapper.createLease(second);\r\n+    }\r\n+\r\n+    @Override\r\n+    public long createLease(long ttl, long timeout, TimeUnit unit)\r\n+            throws InterruptedException, ExecutionException, TimeoutException {\r\n+        return clientWrapper.createLease(ttl, timeout, unit);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void delete(String path) {\r\n+        clientWrapper.delete(path);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void revokeLease(long lease) {\r\n+        clientWrapper.revokeLease(lease);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doClose() {\r\n+        try {\r\n+            if (notifyExecutor != null) {\r\n+                ExecutorUtil.shutdownNow(notifyExecutor, 100);\r\n+            }\r\n+        } catch (Exception e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+\r\n+        try {\r\n+            if (reconnectSchedule != null) {\r\n+                ExecutorUtil.shutdownNow(reconnectSchedule, 100);\r\n+            }\r\n+        } catch (Exception e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        } finally {\r\n+            clientWrapper.doClose();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getKVValue(String key) {\r\n+        return clientWrapper.getKVValue(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean put(String key, String value) {\r\n+        return clientWrapper.put(key, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean putEphemeral(String key, String value) {\r\n+        return clientWrapper.putEphemeral(key, value);\r\n+    }\r\n+\r\n+    public ManagedChannel getChannel() {\r\n+        return clientWrapper.getChannel();\r\n+    }\r\n+\r\n+    public class EtcdWatcher implements StreamObserver<WatchResponse> {\r\n+\r\n+        protected WatchGrpc.WatchStub watchStub;\r\n+        protected StreamObserver<WatchRequest> watchRequest;\r\n+        protected long watchId;\r\n+        protected String path;\r\n+        protected Throwable throwable;\r\n+        protected volatile Set<String> urls = new ConcurrentSet<>();\r\n+        private ChildListener listener;\r\n+\r\n+        protected ReentrantLock lock = new ReentrantLock(true);\r\n+\r\n+        public EtcdWatcher(ChildListener listener) {\r\n+            this.listener = listener;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void onNext(WatchResponse response) {\r\n+\r\n+            // prevents grpc on sending watchResponse to a closed watch client.\r\n+            if (!isConnected()) {\r\n+                return;\r\n+            }\r\n+\r\n+            watchId = response.getWatchId();\r\n+\r\n+            if (listener != null) {\r\n+                int modified = 0;\r\n+                String service = null;\r\n+                Iterator<Event> iterator = response.getEventsList().iterator();\r\n+                while (iterator.hasNext()) {\r\n+                    Event event = iterator.next();\r\n+                    switch (event.getType()) {\r\n+                        case PUT: {\r\n+                            if (((service = find(event)) != null)\r\n+                                    && safeUpdate(service, true)) {\r\n+                                modified++;\r\n+                            }\r\n+                            break;\r\n+                        }\r\n+                        case DELETE: {\r\n+                            if (((service = find(event)) != null)\r\n+                                    && safeUpdate(service, false)) {\r\n+                                modified++;\r\n+                            }\r\n+                            break;\r\n+                        }\r\n+                        default:\r\n+                            break;\r\n+                    }\r\n+                }\r\n+                if (modified > 0) {\r\n+                    notifyExecutor.execute(() -> listener.childChanged(path, new ArrayList<>(urls)));\r\n+                }\r\n+\r\n+            }\r\n+        }\r\n+\r\n+        @Override\r\n+        public void onError(Throwable e) {\r\n+            tryReconnect(e);\r\n+        }\r\n+\r\n+        public void unwatch() {\r\n+\r\n+            // prevents grpc on sending watchResponse to a closed watch client.\r\n+            if (!isConnected()) {\r\n+                return;\r\n+            }\r\n+\r\n+            try {\r\n+                /**\r\n+                 * issue : https://github.com/apache/dubbo/issues/4115\r\n+                 *\r\n+                 * When the network is reconnected, the listener is empty\r\n+                 * and the data cannot be received.\r\n+                 */\r\n+                // this.listener = null;\r\n+\r\n+                if (watchRequest != null) {\r\n+                    WatchCancelRequest watchCancelRequest =\r\n+                            WatchCancelRequest.newBuilder().setWatchId(watchId).build();\r\n+                    WatchRequest cancelRequest = WatchRequest.newBuilder()\r\n+                            .setCancelRequest(watchCancelRequest).build();\r\n+                    this.watchRequest.onNext(cancelRequest);\r\n+                }\r\n+            } catch (Exception ignored) {\r\n+                logger.warn(\"Failed to cancel watch for path '\" + path + \"'\", ignored);\r\n+            }\r\n+        }\r\n+\r\n+        public List<String> forPath(String path) {\r\n+\r\n+            if (!isConnected()) {\r\n+                throw new ClosedClientException(\"watch client has been closed, path '\" + path + \"'\");\r\n+            }\r\n+            if (this.path != null) {\r\n+                unwatch();\r\n+            }\r\n+\r\n+            this.path = path;\r\n+\r\n+            lock.lock();\r\n+            try {\r\n+\r\n+                this.watchStub = WatchGrpc.newStub(clientWrapper.getChannel());\r\n+                this.watchRequest = watchStub.watch(this);\r\n+                this.watchRequest.onNext(nextRequest());\r\n+\r\n+                List<String> children = clientWrapper.getChildren(path);\r\n+                /**\r\n+                 * caching the current service\r\n+                 */\r\n+                if (!children.isEmpty()) {\r\n+                    this.urls.addAll(filterChildren(children));\r\n+                }\r\n+\r\n+                return new ArrayList<>(urls);\r\n+            } finally {\r\n+                lock.unlock();\r\n+            }\r\n+        }\r\n+\r\n+        private boolean safeUpdate(String service, boolean add) {\r\n+            lock.lock();\r\n+            try {\r\n+                /**\r\n+                 * If the collection already contains the specified service, do nothing\r\n+                 */\r\n+                return add ? this.urls.add(service) : this.urls.remove(service);\r\n+            } finally {\r\n+                lock.unlock();\r\n+            }\r\n+        }\r\n+\r\n+        private String find(Event event) {\r\n+            KeyValue keyValue = event.getKv();\r\n+            String key = keyValue.getKey().toStringUtf8();\r\n+\r\n+            int len = path.length(), index = len, count = 0;\r\n+            if (key.length() >= index) {\r\n+                for (; (index = key.indexOf(PATH_SEPARATOR, index)) != -1; ++index) {\r\n+                    if (count++ > 1) {\r\n+                        break;\r\n+                    }\r\n+                }\r\n+            }\r\n+\r\n+            /**\r\n+             * if children changed , we should refresh invokers\r\n+             */\r\n+            if (count == 1) {\r\n+                /**\r\n+                 * remove prefix\r\n+                 */\r\n+                return key.substring(len + 1);\r\n+            }\r\n+\r\n+            return null;\r\n+        }\r\n+\r\n+        private List<String> filterChildren(List<String> children) {\r\n+            if (children == null) {\r\n+                return Collections.emptyList();\r\n+            }\r\n+            if (children.size() <= 0) {\r\n+                return children;\r\n+            }\r\n+            final int len = path.length();\r\n+            return children.stream().parallel()\r\n+                    .filter(child -> {\r\n+                        int index = len, count = 0;\r\n+                        if (child.length() > len) {\r\n+                            for (; (index = child.indexOf(PATH_SEPARATOR, index)) != -1; ++index) {\r\n+                                if (count++ > 1) {\r\n+                                    break;\r\n+                                }\r\n+                            }\r\n+                        }\r\n+                        return count == 1;\r\n+                    })\r\n+                    .map(child -> child.substring(len + 1))\r\n+                    .collect(toList());\r\n+        }\r\n+\r\n+        /**\r\n+         * create new watching request for current path.\r\n+         */\r\n+        protected WatchRequest nextRequest() {\r\n+\r\n+            WatchCreateRequest.Builder builder = WatchCreateRequest.newBuilder()\r\n+                    .setKey(ByteString.copyFromUtf8(path))\r\n+                    .setRangeEnd(ByteString.copyFrom(\r\n+                            OptionUtil.prefixEndOf(ByteSequence.from(path, UTF_8)).getBytes()))\r\n+                    .setProgressNotify(true);\r\n+\r\n+            return WatchRequest.newBuilder().setCreateRequest(builder).build();\r\n+        }\r\n+\r\n+        public void tryReconnect(Throwable e) {\r\n+\r\n+            this.throwable = e;\r\n+\r\n+            logger.error(\"watcher client has error occurred, current path '\" + path + \"'\", e);\r\n+\r\n+            // prevents grpc on sending error to a closed watch client.\r\n+            if (!isConnected()) {\r\n+                return;\r\n+            }\r\n+\r\n+\r\n+            Status status = Status.fromThrowable(e);\r\n+            // system may be recover later, current connect won't be lost\r\n+            if (OptionUtil.isHaltError(status) || OptionUtil.isNoLeaderError(status)) {\r\n+                reconnectSchedule.schedule(this::reconnect, new Random().nextInt(delayPeriod), TimeUnit.MILLISECONDS);\r\n+                return;\r\n+            }\r\n+            // reconnect with a delay; avoiding immediate retry on a long connection downtime.\r\n+            reconnectSchedule.schedule(this::reconnect, new Random().nextInt(delayPeriod), TimeUnit.MILLISECONDS);\r\n+        }\r\n+\r\n+        protected synchronized void reconnect() {\r\n+            this.closeWatchRequest();\r\n+            this.recreateWatchRequest();\r\n+        }\r\n+\r\n+        protected void recreateWatchRequest() {\r\n+            if (watchRequest == null) {\r\n+                this.watchStub = WatchGrpc.newStub(clientWrapper.getChannel());\r\n+                this.watchRequest = watchStub.watch(this);\r\n+            }\r\n+            this.watchRequest.onNext(nextRequest());\r\n+            this.throwable = null;\r\n+            logger.warn(\"watch client retried connect for path '\" + path + \"', connection status : \" + isConnected());\r\n+        }\r\n+\r\n+        protected void closeWatchRequest() {\r\n+            if (this.watchRequest == null) {\r\n+                return;\r\n+            }\r\n+\r\n+            try {\r\n+                WatchCancelRequest watchCancelRequest =\r\n+                        WatchCancelRequest.newBuilder().setWatchId(watchId).build();\r\n+                WatchRequest cancelRequest = WatchRequest.newBuilder()\r\n+                        .setCancelRequest(watchCancelRequest).build();\r\n+                watchRequest.onNext(cancelRequest);\r\n+            } finally {\r\n+                this.watchRequest.onCompleted();\r\n+                this.watchRequest = null;\r\n+            }\r\n+        }\r\n+\r\n+        @Override\r\n+        public void onCompleted() {\r\n+            // do not touch this method, if you want terminate this stream.\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/etcd/jetcd/JEtcdClientWrapper.java", "source2": "org/apache/dubbo/remoting/etcd/jetcd/JEtcdClientWrapper.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,752 +1,752 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.remoting.etcd.jetcd;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ConcurrentHashSet;\n-import org.apache.dubbo.common.utils.NamedThreadFactory;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.etcd.RetryPolicy;\n-import org.apache.dubbo.remoting.etcd.StateListener;\n-\n-import io.etcd.jetcd.ByteSequence;\n-import io.etcd.jetcd.Client;\n-import io.etcd.jetcd.ClientBuilder;\n-import io.etcd.jetcd.KeyValue;\n-import io.etcd.jetcd.common.exception.ErrorCode;\n-import io.etcd.jetcd.common.exception.EtcdException;\n-import io.etcd.jetcd.kv.GetResponse;\n-import io.etcd.jetcd.kv.PutResponse;\n-import io.etcd.jetcd.lease.LeaseKeepAliveResponse;\n-import io.etcd.jetcd.options.GetOption;\n-import io.etcd.jetcd.options.PutOption;\n-import io.etcd.jetcd.support.CloseableClient;\n-import io.etcd.jetcd.support.Observers;\n-import io.grpc.ConnectivityState;\n-import io.grpc.ManagedChannel;\n-import io.grpc.Status;\n-import io.grpc.stub.StreamObserver;\n-\n-import java.lang.reflect.Field;\n-import java.lang.reflect.Method;\n-import java.nio.charset.Charset;\n-import java.nio.charset.StandardCharsets;\n-import java.util.Arrays;\n-import java.util.Collections;\n-import java.util.HashSet;\n-import java.util.List;\n-import java.util.Set;\n-import java.util.concurrent.Callable;\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.ExecutionException;\n-import java.util.concurrent.Executors;\n-import java.util.concurrent.ScheduledExecutorService;\n-import java.util.concurrent.ScheduledFuture;\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.TimeoutException;\n-import java.util.concurrent.atomic.AtomicReference;\n-import java.util.function.Consumer;\n-\n-import static java.util.stream.Collectors.toList;\n-import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SEPARATOR;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\n-import static org.apache.dubbo.remoting.etcd.Constants.DEFAULT_KEEPALIVE_TIMEOUT;\n-import static org.apache.dubbo.remoting.etcd.Constants.DEFAULT_RECONNECT_PERIOD;\n-import static org.apache.dubbo.remoting.etcd.Constants.DEFAULT_RETRY_PERIOD;\n-import static org.apache.dubbo.remoting.etcd.Constants.HTTP_KEY;\n-import static org.apache.dubbo.remoting.etcd.Constants.HTTP_SUBFIX_KEY;\n-import static org.apache.dubbo.remoting.etcd.Constants.RETRY_PERIOD_KEY;\n-import static org.apache.dubbo.remoting.etcd.Constants.SESSION_TIMEOUT_KEY;\n-\n-public class JEtcdClientWrapper {\n-\n-    private Logger logger = LoggerFactory.getLogger(JEtcdClientWrapper.class);\n-\n-    private final URL url;\n-    private volatile Client client;\n-    private volatile boolean started = false;\n-    private volatile boolean connectState = false;\n-    private ScheduledFuture future;\n-    private ScheduledExecutorService reconnectNotify;\n-    private AtomicReference<ManagedChannel> channel;\n-\n-    private ConnectionStateListener connectionStateListener;\n-\n-    private long expirePeriod;\n-\n-    private CompletableFuture<Client> completableFuture;\n-\n-    private RetryPolicy retryPolicy;\n-\n-    private RuntimeException failed;\n-\n-    private final ScheduledFuture<?> retryFuture;\n-    private final ScheduledExecutorService retryExecutor = Executors.newScheduledThreadPool(1,\n-            new NamedThreadFactory(\"Etcd3RegistryKeepAliveFailedRetryTimer\", true));\n-\n-    private final Set<String> failedRegistered = new ConcurrentHashSet<String>();\n-\n-    private final Set<String> registeredPaths = new ConcurrentHashSet<>();\n-    private volatile CloseableClient keepAlive = null;\n-\n-    /**\n-     * Support temporary nodes to reuse the same lease\n-     */\n-    private volatile long globalLeaseId;\n-\n-    private volatile boolean cancelKeepAlive = false;\n-\n-    public static final Charset UTF_8 = StandardCharsets.UTF_8;\n-\n-    public JEtcdClientWrapper(URL url) {\n-        this.url = url;\n-        this.expirePeriod = url.getParameter(SESSION_TIMEOUT_KEY, DEFAULT_KEEPALIVE_TIMEOUT) / 1000;\n-        if (expirePeriod <= 0) {\n-            this.expirePeriod = DEFAULT_KEEPALIVE_TIMEOUT / 1000;\n-        }\n-        this.channel = new AtomicReference<>();\n-        this.completableFuture = CompletableFuture.supplyAsync(() -> prepareClient(url));\n-        this.reconnectNotify = Executors.newScheduledThreadPool(1,\n-                new NamedThreadFactory(\"reconnectNotify\", true));\n-        this.retryPolicy = new RetryNTimes(1, 1000, TimeUnit.MILLISECONDS);\n-\n-        this.failed = new IllegalStateException(\"Etcd3 registry is not connected yet, url:\" + url);\n-        int retryPeriod = url.getParameter(RETRY_PERIOD_KEY, DEFAULT_RETRY_PERIOD);\n-\n-        this.retryFuture = retryExecutor.scheduleWithFixedDelay(() -> {\n-            try {\n-                retry();\n-            } catch (Throwable t) {\n-                logger.error(\"Unexpected error occur at failed retry, cause: \" + t.getMessage(), t);\n-            }\n-        }, retryPeriod, retryPeriod, TimeUnit.MILLISECONDS);\n-    }\n-\n-    private Client prepareClient(URL url) {\n-\n-        int maxInboundSize = DEFAULT_INBOUND_SIZE;\n-        if (StringUtils.isNotEmpty(System.getProperty(GRPC_MAX_INBOUND_SIZE_KEY))) {\n-            maxInboundSize = Integer.valueOf(System.getProperty(GRPC_MAX_INBOUND_SIZE_KEY));\n-        }\n-\n-        // TODO, uses default pick-first round robin.\n-        ClientBuilder clientBuilder = Client.builder()\n-                .endpoints(endPoints(url.getBackupAddress()))\n-                .maxInboundMessageSize(maxInboundSize);\n-\n-        return clientBuilder.build();\n-    }\n-\n-    public Client getClient() {\n-        return client;\n-    }\n-\n-    /**\n-     * try to get current connected channel.\n-     *\n-     * @return connected channel.\n-     */\n-    public ManagedChannel getChannel() {\n-        if (channel.get() == null || (channel.get().isShutdown() || channel.get().isTerminated())) {\n-            channel.set(newChannel(client));\n-        }\n-        return channel.get();\n-    }\n-\n-    /**\n-     * find direct children directory, excluding path self,\n-     * Never return null.\n-     *\n-     * @param path the path to be found direct children.\n-     * @return direct children directory, contains zero element\n-     * list if children directory not exists.\n-     */\n-    public List<String> getChildren(String path) {\n-        try {\n-            return RetryLoops.invokeWithRetry(\n-                    () -> {\n-                        requiredNotNull(client, failed);\n-                        int len = path.length();\n-                        return client.getKVClient()\n-                                .get(ByteSequence.from(path, UTF_8),\n-                                        GetOption.newBuilder().withPrefix(ByteSequence.from(path, UTF_8)).build())\n-                                .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS)\n-                                .getKvs().stream().parallel()\n-                                .filter(pair -> {\n-                                    String key = pair.getKey().toString(UTF_8);\n-                                    int index = len, count = 0;\n-                                    if (key.length() > len) {\n-                                        for (; (index = key.indexOf(PATH_SEPARATOR, index)) != -1; ++index) {\n-                                            if (count++ > 1) {\n-                                                break;\n-                                            }\n-                                        }\n-                                    }\n-                                    return count == 1;\n-                                })\n-                                .map(pair -> pair.getKey().toString(UTF_8))\n-                                .collect(toList());\n-                    }, retryPolicy);\n-        } catch (Exception e) {\n-            throw new IllegalStateException(e.getMessage(), e);\n-        }\n-    }\n-\n-    public boolean isConnected() {\n-        return ConnectivityState.READY == (getChannel().getState(false))\n-                || ConnectivityState.IDLE == (getChannel().getState(false));\n-    }\n-\n-    public long createLease(long second) {\n-        try {\n-            return RetryLoops.invokeWithRetry(\n-                    () -> {\n-                        requiredNotNull(client, failed);\n-                        return client.getLeaseClient()\n-                                .grant(second)\n-                                .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS)\n-                                .getID();\n-                    }, retryPolicy);\n-        } catch (Exception e) {\n-            throw new IllegalStateException(e.getMessage(), e);\n-        }\n-    }\n-\n-    public void revokeLease(long lease) {\n-        try {\n-            RetryLoops.invokeWithRetry(\n-                    (Callable<Void>) () -> {\n-                        requiredNotNull(client, failed);\n-                        client.getLeaseClient()\n-                                .revoke(lease)\n-                                .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS);\n-                        return null;\n-                    }, retryPolicy);\n-        } catch (Exception e) {\n-            throw new IllegalStateException(e.getMessage(), e);\n-        }\n-    }\n-\n-    public long createLease(long ttl, long timeout, TimeUnit unit)\n-            throws InterruptedException, ExecutionException, TimeoutException {\n-\n-        if (timeout <= 0) {\n-            return createLease(ttl);\n-        }\n-\n-        requiredNotNull(client, failed);\n-        return client.getLeaseClient()\n-                .grant(ttl)\n-                .get(timeout, unit).getID();\n-    }\n-\n-\n-    /**\n-     * try to check if path exists.\n-     */\n-    public boolean checkExists(String path) {\n-        try {\n-            return RetryLoops.invokeWithRetry(\n-                    () -> {\n-                        requiredNotNull(client, failed);\n-                        return client.getKVClient()\n-                                .get(ByteSequence.from(path, UTF_8), GetOption.newBuilder().withCountOnly(true).build())\n-                                .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS)\n-                                .getCount() > 0;\n-                    }, retryPolicy);\n-        } catch (Exception e) {\n-            throw new IllegalStateException(e.getMessage(), e);\n-        }\n-    }\n-\n-    /**\n-     * only internal use only, maybe change in the future\n-     */\n-    protected Long find(String path) {\n-        try {\n-            return RetryLoops.invokeWithRetry(\n-                    () -> {\n-                        requiredNotNull(client, failed);\n-                        return client.getKVClient()\n-                                .get(ByteSequence.from(path, UTF_8))\n-                                .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS)\n-                                .getKvs().stream()\n-                                .mapToLong(keyValue -> Long.valueOf(keyValue.getValue().toString(UTF_8)))\n-                                .findFirst().getAsLong();\n-                    }, retryPolicy);\n-        } catch (Exception e) {\n-            throw new IllegalStateException(e.getMessage(), e);\n-        }\n-    }\n-\n-    public void createPersistent(String path) {\n-        try {\n-            RetryLoops.invokeWithRetry(\n-                    (Callable<Void>) () -> {\n-                        requiredNotNull(client, failed);\n-                        client.getKVClient()\n-                                .put(ByteSequence.from(path, UTF_8),\n-                                        ByteSequence.from(String.valueOf(path.hashCode()), UTF_8))\n-                                .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS);\n-                        return null;\n-                    }, retryPolicy);\n-        } catch (Exception e) {\n-            throw new IllegalStateException(e.getMessage(), e);\n-        }\n-    }\n-\n-    /**\n-     * create new ephemeral path save to etcd .\n-     * if node disconnect from etcd, it will be deleted\n-     * automatically by etcd when session timeout.\n-     *\n-     * @param path the path to be saved\n-     * @return the lease of current path.\n-     */\n-    public long createEphemeral(String path) {\n-        try {\n-            return RetryLoops.invokeWithRetry(\n-                    () -> {\n-                        requiredNotNull(client, failed);\n-\n-                        registeredPaths.add(path);\n-                        keepAlive();\n-                        final long leaseId = globalLeaseId;\n-                        client.getKVClient()\n-                                .put(ByteSequence.from(path, UTF_8)\n-                                        , ByteSequence.from(String.valueOf(leaseId), UTF_8)\n-                                        , PutOption.newBuilder().withLeaseId(leaseId).build())\n-                                .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS);\n-                        return leaseId;\n-                    }, retryPolicy);\n-        } catch (Exception e) {\n-            throw new IllegalStateException(e.getMessage(), e);\n-        }\n-    }\n-\n-    // easy for mock\n-    public void keepAlive(long lease) {\n-        this.keepAlive(lease, null);\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    private <T> void keepAlive(long lease, Consumer<T> onFailed) {\n-        final StreamObserver<LeaseKeepAliveResponse> observer = new Observers.Builder()\n-                .onError((e) -> {\n-                    if (e instanceof EtcdException) {\n-                        EtcdException error = (EtcdException) e;\n-                        /**\n-                         * ttl has expired\n-                         */\n-                        if (error.getErrorCode() == ErrorCode.NOT_FOUND) {\n-                            keepAlive0(onFailed);\n-                        }\n-                    }\n-                }).onCompleted(() -> {\n-                    /**\n-                     * deadline reached.\n-                     */\n-                    keepAlive0(onFailed);\n-                }).build();\n-\n-        /**\n-         * If there is already a keepalive, cancel first\n-         */\n-        cancelKeepAlive();\n-\n-        /**\n-         * create and set new keepAlive to globalKeepAliveRef\n-         */\n-        this.keepAlive = client.getLeaseClient().keepAlive(lease, observer);\n-    }\n-\n-    private void keepAlive() throws Exception {\n-        if (keepAlive == null) {\n-            synchronized (this) {\n-                if (keepAlive == null) {\n-                    this.globalLeaseId = client.getLeaseClient()\n-                            .grant(expirePeriod)\n-                            .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS)\n-                            .getID();\n-                    /**\n-                     * If the keepAlive expires, the registration will be re-attempted\n-                     */\n-                    keepAlive(globalLeaseId, (NULL) -> recovery());\n-                }\n-            }\n-        }\n-    }\n-\n-    private <T> void keepAlive0(Consumer<T> onFailed) {\n-        if (onFailed != null) {\n-\n-            /**\n-             * The following two scenarios will cause the keep-alive failure\uff1a\n-             *\n-             * 1. Service is offline\n-             * 2. Local deadline check expired\n-             *\n-             * The multiplex lease cannot update the local deadline,\n-             * causing the extreme scene service to be dropped.\n-             *\n-             */\n-            long leaseId = globalLeaseId;\n-            try {\n-                if (logger.isWarnEnabled()) {\n-                    logger.warn(\"Failed to keep alive for global lease '\" + leaseId + \"', waiting for retry again.\");\n-                }\n-                onFailed.accept(null);\n-            } catch (Exception ignored) {\n-                logger.warn(\"Failed to recover from global lease expired or lease deadline exceeded. lease '\" + leaseId + \"'\", ignored);\n-            }\n-        }\n-    }\n-\n-    private void recovery() {\n-\n-        try {\n-            /**\n-             * The client is processing reconnection\n-             */\n-            if (cancelKeepAlive) {\n-                return;\n-            }\n-\n-            cancelKeepAlive();\n-\n-            Set<String> ephemeralPaths = new HashSet<String>(registeredPaths);\n-            if (!ephemeralPaths.isEmpty()) {\n-                for (String path : ephemeralPaths) {\n-                    try {\n-\n-                        /**\n-                         * The client is processing reconnection,\n-                         * cancel remaining service registration\n-                         */\n-                        if (cancelKeepAlive) {\n-                            return;\n-                        }\n-\n-                        createEphemeral(path);\n-                        failedRegistered.remove(path);\n-                    } catch (Exception e) {\n-\n-                        /**\n-                         * waiting for retry again\n-                         */\n-                        failedRegistered.add(path);\n-\n-                        Status status = Status.fromThrowable(e);\n-                        if (status.getCode() == Status.Code.NOT_FOUND) {\n-                            cancelKeepAlive();\n-                        }\n-                    }\n-                }\n-            }\n-        } catch (Throwable t) {\n-            logger.warn(\"Unexpected error, failed to recover from global lease expired or deadline exceeded.\", t);\n-        }\n-    }\n-\n-    public void delete(String path) {\n-        try {\n-            RetryLoops.invokeWithRetry(\n-                    (Callable<Void>) () -> {\n-                        requiredNotNull(client, failed);\n-                        client.getKVClient()\n-                                .delete(ByteSequence.from(path, UTF_8))\n-                                .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS);\n-                        registeredPaths.remove(path);\n-                        return null;\n-                    }, retryPolicy);\n-        } catch (Exception e) {\n-            throw new IllegalStateException(e.getMessage(), e);\n-        } finally {\n-            /**\n-             * Cancel retry\n-             */\n-            failedRegistered.remove(path);\n-        }\n-    }\n-\n-    public String[] endPoints(String backupAddress) {\n-        String[] endpoints = backupAddress.split(COMMA_SEPARATOR);\n-        List<String> addresses = Arrays.stream(endpoints)\n-                .map(address -> address.contains(HTTP_SUBFIX_KEY)\n-                        ? address\n-                        : HTTP_KEY + address)\n-                .collect(toList());\n-        Collections.shuffle(addresses);\n-        return addresses.toArray(new String[0]);\n-    }\n-\n-    /**\n-     * because jetcd's connection change callback not supported yet, we must\n-     * loop to test if connect or disconnect event happened or not. It will be changed\n-     * in the future if we found better choice.\n-     */\n-    public void start() {\n-        if (!started) {\n-            try {\n-                this.client = completableFuture.get(expirePeriod, TimeUnit.SECONDS);\n-                this.connectState = isConnected();\n-                this.started = true;\n-            } catch (Throwable t) {\n-                logger.error(\"Timeout! etcd3 server can not be connected in : \" + expirePeriod + \" seconds! url: \" + url, t);\n-\n-                completableFuture.whenComplete((c, e) -> {\n-                    this.client = c;\n-                    if (e != null) {\n-                        logger.error(\"Got an exception when trying to create etcd3 instance, can not connect to etcd3 server, url: \" + url, e);\n-                    }\n-                });\n-\n-            }\n-\n-            try {\n-                this.future = reconnectNotify.scheduleWithFixedDelay(() -> {\n-                    boolean connected = isConnected();\n-                    if (connectState != connected) {\n-                        int notifyState = connected ? StateListener.CONNECTED : StateListener.DISCONNECTED;\n-                        if (connectionStateListener != null) {\n-                            try {\n-                                if (connected) {\n-                                    clearKeepAlive();\n-                                }\n-                                connectionStateListener.stateChanged(getClient(), notifyState);\n-                            } finally {\n-                                cancelKeepAlive = false;\n-                            }\n-                        }\n-                        connectState = connected;\n-                    }\n-                }, DEFAULT_RECONNECT_PERIOD, DEFAULT_RECONNECT_PERIOD, TimeUnit.MILLISECONDS);\n-            } catch (Throwable t) {\n-                logger.error(\"monitor reconnect status failed.\", t);\n-            }\n-        }\n-    }\n-\n-    private void cancelKeepAlive() {\n-        try {\n-            if (keepAlive != null) {\n-                keepAlive.close();\n-            }\n-        } finally {\n-            // help for gc\n-            keepAlive = null;\n-        }\n-    }\n-\n-    private void clearKeepAlive() {\n-        cancelKeepAlive = true;\n-        failedRegistered.clear();\n-        cancelKeepAlive();\n-    }\n-\n-    protected void doClose() {\n-\n-        try {\n-            cancelKeepAlive = true;\n-            if (globalLeaseId != 0) {\n-                revokeLease(this.globalLeaseId);\n-            }\n-        } catch (Exception e) {\n-            logger.warn(\"revoke global lease '\" + globalLeaseId + \"' failed, registry: \" + url, e);\n-        }\n-\n-        try {\n-            if (started && future != null) {\n-                started = false;\n-                future.cancel(true);\n-                reconnectNotify.shutdownNow();\n-            }\n-        } catch (Exception e) {\n-            logger.warn(\"stop reconnect Notify failed, registry: \" + url, e);\n-        }\n-\n-        try {\n-            retryFuture.cancel(true);\n-            retryExecutor.shutdownNow();\n-        } catch (Throwable t) {\n-            logger.warn(t.getMessage(), t);\n-        }\n-\n-        if (getClient() != null) {\n-            getClient().close();\n-        }\n-    }\n-\n-    /**\n-     * try get client's shared channel, because all fields is private on jetcd,\n-     * we must using it by reflect, in the future, jetcd may provider better tools.\n-     *\n-     * @param client get channel from current client\n-     * @return current connection channel\n-     */\n-    private ManagedChannel newChannel(Client client) {\n-        try {\n-            Field connectionField = client.getClass().getDeclaredField(\"connectionManager\");\n-            ReflectUtils.makeAccessible(connectionField);\n-            Object connection = connectionField.get(client);\n-            Method channel = connection.getClass().getDeclaredMethod(\"getChannel\");\n-            ReflectUtils.makeAccessible(channel);\n-            return (ManagedChannel) channel.invoke(connection);\n-        } catch (Exception e) {\n-            throw new RuntimeException(\"Failed to obtain connection channel from \" + url.getBackupAddress(), e);\n-        }\n-    }\n-\n-    public ConnectionStateListener getConnectionStateListener() {\n-        return connectionStateListener;\n-    }\n-\n-    public void setConnectionStateListener(ConnectionStateListener connectionStateListener) {\n-        this.connectionStateListener = connectionStateListener;\n-    }\n-\n-    public static void requiredNotNull(Object obj, RuntimeException exception) {\n-        if (obj == null) {\n-            throw exception;\n-        }\n-    }\n-\n-    public String getKVValue(String key) {\n-        if (null == key) {\n-            return null;\n-        }\n-\n-        CompletableFuture<GetResponse> responseFuture = this.client.getKVClient().get(ByteSequence.from(key, UTF_8));\n-\n-        try {\n-            List<KeyValue> result = responseFuture.get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS).getKvs();\n-            if (!result.isEmpty()) {\n-                return result.get(0).getValue().toString(UTF_8);\n-            }\n-        } catch (Exception e) {\n-            // ignore\n-        }\n-\n-        return null;\n-    }\n-\n-\n-    public boolean put(String key, String value) {\n-        if (key == null || value == null) {\n-            return false;\n-        }\n-        CompletableFuture<PutResponse> putFuture =\n-                this.client.getKVClient().put(ByteSequence.from(key, UTF_8), ByteSequence.from(value, UTF_8));\n-        try {\n-            putFuture.get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS);\n-            return true;\n-        } catch (Exception e) {\n-            // ignore\n-        }\n-        return false;\n-    }\n-\n-    public boolean putEphemeral(final String key, String value) {\n-        try {\n-            return RetryLoops.invokeWithRetry(\n-                    () -> {\n-                        requiredNotNull(client, failed);\n-                        // recovery an retry\n-                        keepAlive();\n-                        final long leaseId = globalLeaseId;\n-                        client.getKVClient()\n-                                .put(ByteSequence.from(key, UTF_8)\n-                                        , ByteSequence.from(String.valueOf(value), UTF_8)\n-                                        , PutOption.newBuilder().withLeaseId(leaseId).build())\n-                                .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS);\n-                        return true;\n-                    }, retryPolicy);\n-        } catch (Exception e) {\n-            throw new IllegalStateException(e.getMessage(), e);\n-        }\n-    }\n-\n-    private void retry() {\n-        if (!failedRegistered.isEmpty()) {\n-            Set<String> failed = new HashSet<String>(failedRegistered);\n-            if (!failed.isEmpty()) {\n-\n-                if (cancelKeepAlive) {\n-                    return;\n-                }\n-\n-                if (logger.isWarnEnabled()) {\n-                    logger.warn(\"Retry failed register(keep alive) for path '\" + failed\n-                            + \"', path size: \" + failed.size());\n-                }\n-                try {\n-                    for (String path : failed) {\n-                        try {\n-\n-                            /**\n-                             * Is it currently reconnecting ?\n-                             */\n-                            if (cancelKeepAlive) {\n-                                return;\n-                            }\n-\n-                            createEphemeral(path);\n-                            failedRegistered.remove(path);\n-                        } catch (Throwable e) {\n-\n-                            failedRegistered.add(path);\n-\n-                            Status status = Status.fromThrowable(e);\n-                            if (status.getCode() == Status.Code.NOT_FOUND) {\n-                                cancelKeepAlive();\n-                            }\n-\n-                            logger.warn(\"Failed to retry register(keep alive) for path '\" + path + \"', waiting for again, cause: \" + e.getMessage(), e);\n-                        }\n-                    }\n-                } catch (Throwable t) {\n-                    logger.warn(\"Failed to retry register(keep alive) for path '\" + failed + \"', waiting for again, cause: \" + t.getMessage(), t);\n-                }\n-            }\n-        }\n-    }\n-\n-    /**\n-     * default request timeout\n-     */\n-    public static final long DEFAULT_REQUEST_TIMEOUT = obtainRequestTimeout();\n-\n-    public static final int DEFAULT_INBOUND_SIZE = 100 * 1024 * 1024;\n-\n-    public static final String GRPC_MAX_INBOUND_SIZE_KEY = \"grpc.max.inbound.size\";\n-\n-    public static final String ETCD_REQUEST_TIMEOUT_KEY = \"etcd.request.timeout\";\n-\n-    private static int obtainRequestTimeout() {\n-        if (StringUtils.isNotEmpty(System.getProperty(ETCD_REQUEST_TIMEOUT_KEY))) {\n-            return Integer.valueOf(System.getProperty(ETCD_REQUEST_TIMEOUT_KEY));\n-        }\n-        /**\n-         * 10 seconds.\n-         */\n-        return 10 * 1000;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.remoting.etcd.jetcd;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ConcurrentHashSet;\r\n+import org.apache.dubbo.common.utils.NamedThreadFactory;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.etcd.RetryPolicy;\r\n+import org.apache.dubbo.remoting.etcd.StateListener;\r\n+\r\n+import io.etcd.jetcd.ByteSequence;\r\n+import io.etcd.jetcd.Client;\r\n+import io.etcd.jetcd.ClientBuilder;\r\n+import io.etcd.jetcd.KeyValue;\r\n+import io.etcd.jetcd.common.exception.ErrorCode;\r\n+import io.etcd.jetcd.common.exception.EtcdException;\r\n+import io.etcd.jetcd.kv.GetResponse;\r\n+import io.etcd.jetcd.kv.PutResponse;\r\n+import io.etcd.jetcd.lease.LeaseKeepAliveResponse;\r\n+import io.etcd.jetcd.options.GetOption;\r\n+import io.etcd.jetcd.options.PutOption;\r\n+import io.etcd.jetcd.support.CloseableClient;\r\n+import io.etcd.jetcd.support.Observers;\r\n+import io.grpc.ConnectivityState;\r\n+import io.grpc.ManagedChannel;\r\n+import io.grpc.Status;\r\n+import io.grpc.stub.StreamObserver;\r\n+\r\n+import java.lang.reflect.Field;\r\n+import java.lang.reflect.Method;\r\n+import java.nio.charset.Charset;\r\n+import java.nio.charset.StandardCharsets;\r\n+import java.util.Arrays;\r\n+import java.util.Collections;\r\n+import java.util.HashSet;\r\n+import java.util.List;\r\n+import java.util.Set;\r\n+import java.util.concurrent.Callable;\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.ExecutionException;\r\n+import java.util.concurrent.Executors;\r\n+import java.util.concurrent.ScheduledExecutorService;\r\n+import java.util.concurrent.ScheduledFuture;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.TimeoutException;\r\n+import java.util.concurrent.atomic.AtomicReference;\r\n+import java.util.function.Consumer;\r\n+\r\n+import static java.util.stream.Collectors.toList;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SEPARATOR;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\r\n+import static org.apache.dubbo.remoting.etcd.Constants.DEFAULT_KEEPALIVE_TIMEOUT;\r\n+import static org.apache.dubbo.remoting.etcd.Constants.DEFAULT_RECONNECT_PERIOD;\r\n+import static org.apache.dubbo.remoting.etcd.Constants.DEFAULT_RETRY_PERIOD;\r\n+import static org.apache.dubbo.remoting.etcd.Constants.HTTP_KEY;\r\n+import static org.apache.dubbo.remoting.etcd.Constants.HTTP_SUBFIX_KEY;\r\n+import static org.apache.dubbo.remoting.etcd.Constants.RETRY_PERIOD_KEY;\r\n+import static org.apache.dubbo.remoting.etcd.Constants.SESSION_TIMEOUT_KEY;\r\n+\r\n+public class JEtcdClientWrapper {\r\n+\r\n+    private Logger logger = LoggerFactory.getLogger(JEtcdClientWrapper.class);\r\n+\r\n+    private final URL url;\r\n+    private volatile Client client;\r\n+    private volatile boolean started = false;\r\n+    private volatile boolean connectState = false;\r\n+    private ScheduledFuture future;\r\n+    private ScheduledExecutorService reconnectNotify;\r\n+    private AtomicReference<ManagedChannel> channel;\r\n+\r\n+    private ConnectionStateListener connectionStateListener;\r\n+\r\n+    private long expirePeriod;\r\n+\r\n+    private CompletableFuture<Client> completableFuture;\r\n+\r\n+    private RetryPolicy retryPolicy;\r\n+\r\n+    private RuntimeException failed;\r\n+\r\n+    private final ScheduledFuture<?> retryFuture;\r\n+    private final ScheduledExecutorService retryExecutor = Executors.newScheduledThreadPool(1,\r\n+            new NamedThreadFactory(\"Etcd3RegistryKeepAliveFailedRetryTimer\", true));\r\n+\r\n+    private final Set<String> failedRegistered = new ConcurrentHashSet<String>();\r\n+\r\n+    private final Set<String> registeredPaths = new ConcurrentHashSet<>();\r\n+    private volatile CloseableClient keepAlive = null;\r\n+\r\n+    /**\r\n+     * Support temporary nodes to reuse the same lease\r\n+     */\r\n+    private volatile long globalLeaseId;\r\n+\r\n+    private volatile boolean cancelKeepAlive = false;\r\n+\r\n+    public static final Charset UTF_8 = StandardCharsets.UTF_8;\r\n+\r\n+    public JEtcdClientWrapper(URL url) {\r\n+        this.url = url;\r\n+        this.expirePeriod = url.getParameter(SESSION_TIMEOUT_KEY, DEFAULT_KEEPALIVE_TIMEOUT) / 1000;\r\n+        if (expirePeriod <= 0) {\r\n+            this.expirePeriod = DEFAULT_KEEPALIVE_TIMEOUT / 1000;\r\n+        }\r\n+        this.channel = new AtomicReference<>();\r\n+        this.completableFuture = CompletableFuture.supplyAsync(() -> prepareClient(url));\r\n+        this.reconnectNotify = Executors.newScheduledThreadPool(1,\r\n+                new NamedThreadFactory(\"reconnectNotify\", true));\r\n+        this.retryPolicy = new RetryNTimes(1, 1000, TimeUnit.MILLISECONDS);\r\n+\r\n+        this.failed = new IllegalStateException(\"Etcd3 registry is not connected yet, url:\" + url);\r\n+        int retryPeriod = url.getParameter(RETRY_PERIOD_KEY, DEFAULT_RETRY_PERIOD);\r\n+\r\n+        this.retryFuture = retryExecutor.scheduleWithFixedDelay(() -> {\r\n+            try {\r\n+                retry();\r\n+            } catch (Throwable t) {\r\n+                logger.error(\"Unexpected error occur at failed retry, cause: \" + t.getMessage(), t);\r\n+            }\r\n+        }, retryPeriod, retryPeriod, TimeUnit.MILLISECONDS);\r\n+    }\r\n+\r\n+    private Client prepareClient(URL url) {\r\n+\r\n+        int maxInboundSize = DEFAULT_INBOUND_SIZE;\r\n+        if (StringUtils.isNotEmpty(System.getProperty(GRPC_MAX_INBOUND_SIZE_KEY))) {\r\n+            maxInboundSize = Integer.valueOf(System.getProperty(GRPC_MAX_INBOUND_SIZE_KEY));\r\n+        }\r\n+\r\n+        // TODO, uses default pick-first round robin.\r\n+        ClientBuilder clientBuilder = Client.builder()\r\n+                .endpoints(endPoints(url.getBackupAddress()))\r\n+                .maxInboundMessageSize(maxInboundSize);\r\n+\r\n+        return clientBuilder.build();\r\n+    }\r\n+\r\n+    public Client getClient() {\r\n+        return client;\r\n+    }\r\n+\r\n+    /**\r\n+     * try to get current connected channel.\r\n+     *\r\n+     * @return connected channel.\r\n+     */\r\n+    public ManagedChannel getChannel() {\r\n+        if (channel.get() == null || (channel.get().isShutdown() || channel.get().isTerminated())) {\r\n+            channel.set(newChannel(client));\r\n+        }\r\n+        return channel.get();\r\n+    }\r\n+\r\n+    /**\r\n+     * find direct children directory, excluding path self,\r\n+     * Never return null.\r\n+     *\r\n+     * @param path the path to be found direct children.\r\n+     * @return direct children directory, contains zero element\r\n+     * list if children directory not exists.\r\n+     */\r\n+    public List<String> getChildren(String path) {\r\n+        try {\r\n+            return RetryLoops.invokeWithRetry(\r\n+                    () -> {\r\n+                        requiredNotNull(client, failed);\r\n+                        int len = path.length();\r\n+                        return client.getKVClient()\r\n+                                .get(ByteSequence.from(path, UTF_8),\r\n+                                        GetOption.newBuilder().withPrefix(ByteSequence.from(path, UTF_8)).build())\r\n+                                .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS)\r\n+                                .getKvs().stream().parallel()\r\n+                                .filter(pair -> {\r\n+                                    String key = pair.getKey().toString(UTF_8);\r\n+                                    int index = len, count = 0;\r\n+                                    if (key.length() > len) {\r\n+                                        for (; (index = key.indexOf(PATH_SEPARATOR, index)) != -1; ++index) {\r\n+                                            if (count++ > 1) {\r\n+                                                break;\r\n+                                            }\r\n+                                        }\r\n+                                    }\r\n+                                    return count == 1;\r\n+                                })\r\n+                                .map(pair -> pair.getKey().toString(UTF_8))\r\n+                                .collect(toList());\r\n+                    }, retryPolicy);\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    public boolean isConnected() {\r\n+        return ConnectivityState.READY == (getChannel().getState(false))\r\n+                || ConnectivityState.IDLE == (getChannel().getState(false));\r\n+    }\r\n+\r\n+    public long createLease(long second) {\r\n+        try {\r\n+            return RetryLoops.invokeWithRetry(\r\n+                    () -> {\r\n+                        requiredNotNull(client, failed);\r\n+                        return client.getLeaseClient()\r\n+                                .grant(second)\r\n+                                .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS)\r\n+                                .getID();\r\n+                    }, retryPolicy);\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    public void revokeLease(long lease) {\r\n+        try {\r\n+            RetryLoops.invokeWithRetry(\r\n+                    (Callable<Void>) () -> {\r\n+                        requiredNotNull(client, failed);\r\n+                        client.getLeaseClient()\r\n+                                .revoke(lease)\r\n+                                .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS);\r\n+                        return null;\r\n+                    }, retryPolicy);\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    public long createLease(long ttl, long timeout, TimeUnit unit)\r\n+            throws InterruptedException, ExecutionException, TimeoutException {\r\n+\r\n+        if (timeout <= 0) {\r\n+            return createLease(ttl);\r\n+        }\r\n+\r\n+        requiredNotNull(client, failed);\r\n+        return client.getLeaseClient()\r\n+                .grant(ttl)\r\n+                .get(timeout, unit).getID();\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * try to check if path exists.\r\n+     */\r\n+    public boolean checkExists(String path) {\r\n+        try {\r\n+            return RetryLoops.invokeWithRetry(\r\n+                    () -> {\r\n+                        requiredNotNull(client, failed);\r\n+                        return client.getKVClient()\r\n+                                .get(ByteSequence.from(path, UTF_8), GetOption.newBuilder().withCountOnly(true).build())\r\n+                                .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS)\r\n+                                .getCount() > 0;\r\n+                    }, retryPolicy);\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * only internal use only, maybe change in the future\r\n+     */\r\n+    protected Long find(String path) {\r\n+        try {\r\n+            return RetryLoops.invokeWithRetry(\r\n+                    () -> {\r\n+                        requiredNotNull(client, failed);\r\n+                        return client.getKVClient()\r\n+                                .get(ByteSequence.from(path, UTF_8))\r\n+                                .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS)\r\n+                                .getKvs().stream()\r\n+                                .mapToLong(keyValue -> Long.valueOf(keyValue.getValue().toString(UTF_8)))\r\n+                                .findFirst().getAsLong();\r\n+                    }, retryPolicy);\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    public void createPersistent(String path) {\r\n+        try {\r\n+            RetryLoops.invokeWithRetry(\r\n+                    (Callable<Void>) () -> {\r\n+                        requiredNotNull(client, failed);\r\n+                        client.getKVClient()\r\n+                                .put(ByteSequence.from(path, UTF_8),\r\n+                                        ByteSequence.from(String.valueOf(path.hashCode()), UTF_8))\r\n+                                .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS);\r\n+                        return null;\r\n+                    }, retryPolicy);\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * create new ephemeral path save to etcd .\r\n+     * if node disconnect from etcd, it will be deleted\r\n+     * automatically by etcd when session timeout.\r\n+     *\r\n+     * @param path the path to be saved\r\n+     * @return the lease of current path.\r\n+     */\r\n+    public long createEphemeral(String path) {\r\n+        try {\r\n+            return RetryLoops.invokeWithRetry(\r\n+                    () -> {\r\n+                        requiredNotNull(client, failed);\r\n+\r\n+                        registeredPaths.add(path);\r\n+                        keepAlive();\r\n+                        final long leaseId = globalLeaseId;\r\n+                        client.getKVClient()\r\n+                                .put(ByteSequence.from(path, UTF_8)\r\n+                                        , ByteSequence.from(String.valueOf(leaseId), UTF_8)\r\n+                                        , PutOption.newBuilder().withLeaseId(leaseId).build())\r\n+                                .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS);\r\n+                        return leaseId;\r\n+                    }, retryPolicy);\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    // easy for mock\r\n+    public void keepAlive(long lease) {\r\n+        this.keepAlive(lease, null);\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    private <T> void keepAlive(long lease, Consumer<T> onFailed) {\r\n+        final StreamObserver<LeaseKeepAliveResponse> observer = new Observers.Builder()\r\n+                .onError((e) -> {\r\n+                    if (e instanceof EtcdException) {\r\n+                        EtcdException error = (EtcdException) e;\r\n+                        /**\r\n+                         * ttl has expired\r\n+                         */\r\n+                        if (error.getErrorCode() == ErrorCode.NOT_FOUND) {\r\n+                            keepAlive0(onFailed);\r\n+                        }\r\n+                    }\r\n+                }).onCompleted(() -> {\r\n+                    /**\r\n+                     * deadline reached.\r\n+                     */\r\n+                    keepAlive0(onFailed);\r\n+                }).build();\r\n+\r\n+        /**\r\n+         * If there is already a keepalive, cancel first\r\n+         */\r\n+        cancelKeepAlive();\r\n+\r\n+        /**\r\n+         * create and set new keepAlive to globalKeepAliveRef\r\n+         */\r\n+        this.keepAlive = client.getLeaseClient().keepAlive(lease, observer);\r\n+    }\r\n+\r\n+    private void keepAlive() throws Exception {\r\n+        if (keepAlive == null) {\r\n+            synchronized (this) {\r\n+                if (keepAlive == null) {\r\n+                    this.globalLeaseId = client.getLeaseClient()\r\n+                            .grant(expirePeriod)\r\n+                            .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS)\r\n+                            .getID();\r\n+                    /**\r\n+                     * If the keepAlive expires, the registration will be re-attempted\r\n+                     */\r\n+                    keepAlive(globalLeaseId, (NULL) -> recovery());\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private <T> void keepAlive0(Consumer<T> onFailed) {\r\n+        if (onFailed != null) {\r\n+\r\n+            /**\r\n+             * The following two scenarios will cause the keep-alive failure\uff1a\r\n+             *\r\n+             * 1. Service is offline\r\n+             * 2. Local deadline check expired\r\n+             *\r\n+             * The multiplex lease cannot update the local deadline,\r\n+             * causing the extreme scene service to be dropped.\r\n+             *\r\n+             */\r\n+            long leaseId = globalLeaseId;\r\n+            try {\r\n+                if (logger.isWarnEnabled()) {\r\n+                    logger.warn(\"Failed to keep alive for global lease '\" + leaseId + \"', waiting for retry again.\");\r\n+                }\r\n+                onFailed.accept(null);\r\n+            } catch (Exception ignored) {\r\n+                logger.warn(\"Failed to recover from global lease expired or lease deadline exceeded. lease '\" + leaseId + \"'\", ignored);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private void recovery() {\r\n+\r\n+        try {\r\n+            /**\r\n+             * The client is processing reconnection\r\n+             */\r\n+            if (cancelKeepAlive) {\r\n+                return;\r\n+            }\r\n+\r\n+            cancelKeepAlive();\r\n+\r\n+            Set<String> ephemeralPaths = new HashSet<String>(registeredPaths);\r\n+            if (!ephemeralPaths.isEmpty()) {\r\n+                for (String path : ephemeralPaths) {\r\n+                    try {\r\n+\r\n+                        /**\r\n+                         * The client is processing reconnection,\r\n+                         * cancel remaining service registration\r\n+                         */\r\n+                        if (cancelKeepAlive) {\r\n+                            return;\r\n+                        }\r\n+\r\n+                        createEphemeral(path);\r\n+                        failedRegistered.remove(path);\r\n+                    } catch (Exception e) {\r\n+\r\n+                        /**\r\n+                         * waiting for retry again\r\n+                         */\r\n+                        failedRegistered.add(path);\r\n+\r\n+                        Status status = Status.fromThrowable(e);\r\n+                        if (status.getCode() == Status.Code.NOT_FOUND) {\r\n+                            cancelKeepAlive();\r\n+                        }\r\n+                    }\r\n+                }\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            logger.warn(\"Unexpected error, failed to recover from global lease expired or deadline exceeded.\", t);\r\n+        }\r\n+    }\r\n+\r\n+    public void delete(String path) {\r\n+        try {\r\n+            RetryLoops.invokeWithRetry(\r\n+                    (Callable<Void>) () -> {\r\n+                        requiredNotNull(client, failed);\r\n+                        client.getKVClient()\r\n+                                .delete(ByteSequence.from(path, UTF_8))\r\n+                                .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS);\r\n+                        registeredPaths.remove(path);\r\n+                        return null;\r\n+                    }, retryPolicy);\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(e.getMessage(), e);\r\n+        } finally {\r\n+            /**\r\n+             * Cancel retry\r\n+             */\r\n+            failedRegistered.remove(path);\r\n+        }\r\n+    }\r\n+\r\n+    public String[] endPoints(String backupAddress) {\r\n+        String[] endpoints = backupAddress.split(COMMA_SEPARATOR);\r\n+        List<String> addresses = Arrays.stream(endpoints)\r\n+                .map(address -> address.contains(HTTP_SUBFIX_KEY)\r\n+                        ? address\r\n+                        : HTTP_KEY + address)\r\n+                .collect(toList());\r\n+        Collections.shuffle(addresses);\r\n+        return addresses.toArray(new String[0]);\r\n+    }\r\n+\r\n+    /**\r\n+     * because jetcd's connection change callback not supported yet, we must\r\n+     * loop to test if connect or disconnect event happened or not. It will be changed\r\n+     * in the future if we found better choice.\r\n+     */\r\n+    public void start() {\r\n+        if (!started) {\r\n+            try {\r\n+                this.client = completableFuture.get(expirePeriod, TimeUnit.SECONDS);\r\n+                this.connectState = isConnected();\r\n+                this.started = true;\r\n+            } catch (Throwable t) {\r\n+                logger.error(\"Timeout! etcd3 server can not be connected in : \" + expirePeriod + \" seconds! url: \" + url, t);\r\n+\r\n+                completableFuture.whenComplete((c, e) -> {\r\n+                    this.client = c;\r\n+                    if (e != null) {\r\n+                        logger.error(\"Got an exception when trying to create etcd3 instance, can not connect to etcd3 server, url: \" + url, e);\r\n+                    }\r\n+                });\r\n+\r\n+            }\r\n+\r\n+            try {\r\n+                this.future = reconnectNotify.scheduleWithFixedDelay(() -> {\r\n+                    boolean connected = isConnected();\r\n+                    if (connectState != connected) {\r\n+                        int notifyState = connected ? StateListener.CONNECTED : StateListener.DISCONNECTED;\r\n+                        if (connectionStateListener != null) {\r\n+                            try {\r\n+                                if (connected) {\r\n+                                    clearKeepAlive();\r\n+                                }\r\n+                                connectionStateListener.stateChanged(getClient(), notifyState);\r\n+                            } finally {\r\n+                                cancelKeepAlive = false;\r\n+                            }\r\n+                        }\r\n+                        connectState = connected;\r\n+                    }\r\n+                }, DEFAULT_RECONNECT_PERIOD, DEFAULT_RECONNECT_PERIOD, TimeUnit.MILLISECONDS);\r\n+            } catch (Throwable t) {\r\n+                logger.error(\"monitor reconnect status failed.\", t);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private void cancelKeepAlive() {\r\n+        try {\r\n+            if (keepAlive != null) {\r\n+                keepAlive.close();\r\n+            }\r\n+        } finally {\r\n+            // help for gc\r\n+            keepAlive = null;\r\n+        }\r\n+    }\r\n+\r\n+    private void clearKeepAlive() {\r\n+        cancelKeepAlive = true;\r\n+        failedRegistered.clear();\r\n+        cancelKeepAlive();\r\n+    }\r\n+\r\n+    protected void doClose() {\r\n+\r\n+        try {\r\n+            cancelKeepAlive = true;\r\n+            if (globalLeaseId != 0) {\r\n+                revokeLease(this.globalLeaseId);\r\n+            }\r\n+        } catch (Exception e) {\r\n+            logger.warn(\"revoke global lease '\" + globalLeaseId + \"' failed, registry: \" + url, e);\r\n+        }\r\n+\r\n+        try {\r\n+            if (started && future != null) {\r\n+                started = false;\r\n+                future.cancel(true);\r\n+                reconnectNotify.shutdownNow();\r\n+            }\r\n+        } catch (Exception e) {\r\n+            logger.warn(\"stop reconnect Notify failed, registry: \" + url, e);\r\n+        }\r\n+\r\n+        try {\r\n+            retryFuture.cancel(true);\r\n+            retryExecutor.shutdownNow();\r\n+        } catch (Throwable t) {\r\n+            logger.warn(t.getMessage(), t);\r\n+        }\r\n+\r\n+        if (getClient() != null) {\r\n+            getClient().close();\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * try get client's shared channel, because all fields is private on jetcd,\r\n+     * we must using it by reflect, in the future, jetcd may provider better tools.\r\n+     *\r\n+     * @param client get channel from current client\r\n+     * @return current connection channel\r\n+     */\r\n+    private ManagedChannel newChannel(Client client) {\r\n+        try {\r\n+            Field connectionField = client.getClass().getDeclaredField(\"connectionManager\");\r\n+            ReflectUtils.makeAccessible(connectionField);\r\n+            Object connection = connectionField.get(client);\r\n+            Method channel = connection.getClass().getDeclaredMethod(\"getChannel\");\r\n+            ReflectUtils.makeAccessible(channel);\r\n+            return (ManagedChannel) channel.invoke(connection);\r\n+        } catch (Exception e) {\r\n+            throw new RuntimeException(\"Failed to obtain connection channel from \" + url.getBackupAddress(), e);\r\n+        }\r\n+    }\r\n+\r\n+    public ConnectionStateListener getConnectionStateListener() {\r\n+        return connectionStateListener;\r\n+    }\r\n+\r\n+    public void setConnectionStateListener(ConnectionStateListener connectionStateListener) {\r\n+        this.connectionStateListener = connectionStateListener;\r\n+    }\r\n+\r\n+    public static void requiredNotNull(Object obj, RuntimeException exception) {\r\n+        if (obj == null) {\r\n+            throw exception;\r\n+        }\r\n+    }\r\n+\r\n+    public String getKVValue(String key) {\r\n+        if (null == key) {\r\n+            return null;\r\n+        }\r\n+\r\n+        CompletableFuture<GetResponse> responseFuture = this.client.getKVClient().get(ByteSequence.from(key, UTF_8));\r\n+\r\n+        try {\r\n+            List<KeyValue> result = responseFuture.get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS).getKvs();\r\n+            if (!result.isEmpty()) {\r\n+                return result.get(0).getValue().toString(UTF_8);\r\n+            }\r\n+        } catch (Exception e) {\r\n+            // ignore\r\n+        }\r\n+\r\n+        return null;\r\n+    }\r\n+\r\n+\r\n+    public boolean put(String key, String value) {\r\n+        if (key == null || value == null) {\r\n+            return false;\r\n+        }\r\n+        CompletableFuture<PutResponse> putFuture =\r\n+                this.client.getKVClient().put(ByteSequence.from(key, UTF_8), ByteSequence.from(value, UTF_8));\r\n+        try {\r\n+            putFuture.get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS);\r\n+            return true;\r\n+        } catch (Exception e) {\r\n+            // ignore\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    public boolean putEphemeral(final String key, String value) {\r\n+        try {\r\n+            return RetryLoops.invokeWithRetry(\r\n+                    () -> {\r\n+                        requiredNotNull(client, failed);\r\n+                        // recovery an retry\r\n+                        keepAlive();\r\n+                        final long leaseId = globalLeaseId;\r\n+                        client.getKVClient()\r\n+                                .put(ByteSequence.from(key, UTF_8)\r\n+                                        , ByteSequence.from(String.valueOf(value), UTF_8)\r\n+                                        , PutOption.newBuilder().withLeaseId(leaseId).build())\r\n+                                .get(DEFAULT_REQUEST_TIMEOUT, TimeUnit.MILLISECONDS);\r\n+                        return true;\r\n+                    }, retryPolicy);\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    private void retry() {\r\n+        if (!failedRegistered.isEmpty()) {\r\n+            Set<String> failed = new HashSet<String>(failedRegistered);\r\n+            if (!failed.isEmpty()) {\r\n+\r\n+                if (cancelKeepAlive) {\r\n+                    return;\r\n+                }\r\n+\r\n+                if (logger.isWarnEnabled()) {\r\n+                    logger.warn(\"Retry failed register(keep alive) for path '\" + failed\r\n+                            + \"', path size: \" + failed.size());\r\n+                }\r\n+                try {\r\n+                    for (String path : failed) {\r\n+                        try {\r\n+\r\n+                            /**\r\n+                             * Is it currently reconnecting ?\r\n+                             */\r\n+                            if (cancelKeepAlive) {\r\n+                                return;\r\n+                            }\r\n+\r\n+                            createEphemeral(path);\r\n+                            failedRegistered.remove(path);\r\n+                        } catch (Throwable e) {\r\n+\r\n+                            failedRegistered.add(path);\r\n+\r\n+                            Status status = Status.fromThrowable(e);\r\n+                            if (status.getCode() == Status.Code.NOT_FOUND) {\r\n+                                cancelKeepAlive();\r\n+                            }\r\n+\r\n+                            logger.warn(\"Failed to retry register(keep alive) for path '\" + path + \"', waiting for again, cause: \" + e.getMessage(), e);\r\n+                        }\r\n+                    }\r\n+                } catch (Throwable t) {\r\n+                    logger.warn(\"Failed to retry register(keep alive) for path '\" + failed + \"', waiting for again, cause: \" + t.getMessage(), t);\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * default request timeout\r\n+     */\r\n+    public static final long DEFAULT_REQUEST_TIMEOUT = obtainRequestTimeout();\r\n+\r\n+    public static final int DEFAULT_INBOUND_SIZE = 100 * 1024 * 1024;\r\n+\r\n+    public static final String GRPC_MAX_INBOUND_SIZE_KEY = \"grpc.max.inbound.size\";\r\n+\r\n+    public static final String ETCD_REQUEST_TIMEOUT_KEY = \"etcd.request.timeout\";\r\n+\r\n+    private static int obtainRequestTimeout() {\r\n+        if (StringUtils.isNotEmpty(System.getProperty(ETCD_REQUEST_TIMEOUT_KEY))) {\r\n+            return Integer.valueOf(System.getProperty(ETCD_REQUEST_TIMEOUT_KEY));\r\n+        }\r\n+        /**\r\n+         * 10 seconds.\r\n+         */\r\n+        return 10 * 1000;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/etcd/jetcd/JEtcdTransporter.java", "source2": "org/apache/dubbo/remoting/etcd/jetcd/JEtcdTransporter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,30 +1,30 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.etcd.jetcd;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.etcd.EtcdClient;\n-import org.apache.dubbo.remoting.etcd.EtcdTransporter;\n-\n-public class JEtcdTransporter implements EtcdTransporter {\n-\n-    @Override\n-    public EtcdClient connect(URL url) {\n-        return new JEtcdClient(url);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.etcd.jetcd;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.etcd.EtcdClient;\r\n+import org.apache.dubbo.remoting.etcd.EtcdTransporter;\r\n+\r\n+public class JEtcdTransporter implements EtcdTransporter {\r\n+\r\n+    @Override\r\n+    public EtcdClient connect(URL url) {\r\n+        return new JEtcdClient(url);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/etcd/jetcd/RetryLoops.java", "source2": "org/apache/dubbo/remoting/etcd/jetcd/RetryLoops.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,99 +1,99 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.etcd.jetcd;\n-\n-import io.grpc.Status;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.remoting.etcd.RetryPolicy;\n-import org.apache.dubbo.remoting.etcd.option.OptionUtil;\n-\n-import java.util.concurrent.Callable;\n-\n-public class RetryLoops {\n-\n-    private final long startTimeMs = System.currentTimeMillis();\n-    private boolean isDone = false;\n-    private int retriedCount = 0;\n-    private Logger logger = LoggerFactory.getLogger(RetryLoops.class);\n-\n-    public static <R> R invokeWithRetry(Callable<R> task, RetryPolicy retryPolicy) throws Exception {\n-        R result = null;\n-        RetryLoops retryLoop = new RetryLoops();\n-        while (retryLoop.shouldContinue()) {\n-            try {\n-                result = task.call();\n-                retryLoop.complete();\n-            } catch (Exception e) {\n-                retryLoop.fireException(e, retryPolicy);\n-            }\n-        }\n-        return result;\n-    }\n-\n-    public void fireException(Exception e, RetryPolicy retryPolicy) throws Exception {\n-\n-        if (e instanceof InterruptedException) {\n-            Thread.currentThread().interrupt();\n-        }\n-\n-        boolean rethrow = true;\n-        if (isRetryException(e)\n-                && retryPolicy.shouldRetry(retriedCount++, System.currentTimeMillis() - startTimeMs, true)) {\n-            rethrow = false;\n-        }\n-\n-        if (rethrow) {\n-            throw e;\n-        }\n-    }\n-\n-    private boolean isRetryException(Throwable e) {\n-        Status status = Status.fromThrowable(e);\n-        if (OptionUtil.isRecoverable(status)) {\n-            return true;\n-        }\n-\n-        return false;\n-    }\n-\n-    public boolean shouldContinue() {\n-        return !isDone;\n-    }\n-\n-    public void complete() {\n-        isDone = true;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.etcd.jetcd;\r\n+\r\n+import io.grpc.Status;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.remoting.etcd.RetryPolicy;\r\n+import org.apache.dubbo.remoting.etcd.option.OptionUtil;\r\n+\r\n+import java.util.concurrent.Callable;\r\n+\r\n+public class RetryLoops {\r\n+\r\n+    private final long startTimeMs = System.currentTimeMillis();\r\n+    private boolean isDone = false;\r\n+    private int retriedCount = 0;\r\n+    private Logger logger = LoggerFactory.getLogger(RetryLoops.class);\r\n+\r\n+    public static <R> R invokeWithRetry(Callable<R> task, RetryPolicy retryPolicy) throws Exception {\r\n+        R result = null;\r\n+        RetryLoops retryLoop = new RetryLoops();\r\n+        while (retryLoop.shouldContinue()) {\r\n+            try {\r\n+                result = task.call();\r\n+                retryLoop.complete();\r\n+            } catch (Exception e) {\r\n+                retryLoop.fireException(e, retryPolicy);\r\n+            }\r\n+        }\r\n+        return result;\r\n+    }\r\n+\r\n+    public void fireException(Exception e, RetryPolicy retryPolicy) throws Exception {\r\n+\r\n+        if (e instanceof InterruptedException) {\r\n+            Thread.currentThread().interrupt();\r\n+        }\r\n+\r\n+        boolean rethrow = true;\r\n+        if (isRetryException(e)\r\n+                && retryPolicy.shouldRetry(retriedCount++, System.currentTimeMillis() - startTimeMs, true)) {\r\n+            rethrow = false;\r\n+        }\r\n+\r\n+        if (rethrow) {\r\n+            throw e;\r\n+        }\r\n+    }\r\n+\r\n+    private boolean isRetryException(Throwable e) {\r\n+        Status status = Status.fromThrowable(e);\r\n+        if (OptionUtil.isRecoverable(status)) {\r\n+            return true;\r\n+        }\r\n+\r\n+        return false;\r\n+    }\r\n+\r\n+    public boolean shouldContinue() {\r\n+        return !isDone;\r\n+    }\r\n+\r\n+    public void complete() {\r\n+        isDone = true;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/etcd/option/OptionUtil.java", "source2": "org/apache/dubbo/remoting/etcd/option/OptionUtil.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,78 +1,78 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.etcd.option;\n-\n-import io.etcd.jetcd.ByteSequence;\n-import io.grpc.Status;\n-import io.netty.handler.codec.http2.Http2Exception;\n-\n-import java.util.Arrays;\n-\n-public class OptionUtil {\n-\n-    public static final byte[] NO_PREFIX_END = {0};\n-\n-    public static final ByteSequence prefixEndOf(ByteSequence prefix) {\n-        byte[] endKey = prefix.getBytes().clone();\n-        for (int i = endKey.length - 1; i >= 0; i--) {\n-            if (endKey[i] < 0xff) {\n-                endKey[i] = (byte) (endKey[i] + 1);\n-                return ByteSequence.from(Arrays.copyOf(endKey, i + 1));\n-            }\n-        }\n-\n-        return ByteSequence.from(NO_PREFIX_END);\n-    }\n-\n-    public static boolean isRecoverable(Status status) {\n-        return isHaltError(status)\n-                || isNoLeaderError(status)\n-                // ephemeral is expired\n-                || status.getCode() == Status.Code.NOT_FOUND;\n-    }\n-\n-    public static boolean isHaltError(Status status) {\n-        // Unavailable codes mean the system will be right back.\n-        // (e.g., can't connect, lost leader)\n-        // Treat Internal codes as if something failed, leaving the\n-        // system in an inconsistent state, but retrying could make progress.\n-        // (e.g., failed in middle of send, corrupted frame)\n-        return status.getCode() != Status.Code.UNAVAILABLE && status.getCode() != Status.Code.INTERNAL;\n-    }\n-\n-    public static boolean isNoLeaderError(Status status) {\n-        return status.getCode() == Status.Code.UNAVAILABLE\n-                && \"etcdserver: no leader\".equals(status.getDescription());\n-    }\n-\n-    public static boolean isProtocolError(Throwable e) {\n-        if (e == null) {\n-            return false;\n-        }\n-        Throwable cause = e.getCause();\n-        while (cause != null) {\n-            if (cause instanceof Http2Exception) {\n-                Http2Exception t = (Http2Exception) cause;\n-                if (\"PROTOCOL_ERROR\".equals(t.error().name())) {\n-                    return true;\n-                }\n-            }\n-            cause = cause.getCause();\n-        }\n-        return false;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.etcd.option;\r\n+\r\n+import io.etcd.jetcd.ByteSequence;\r\n+import io.grpc.Status;\r\n+import io.netty.handler.codec.http2.Http2Exception;\r\n+\r\n+import java.util.Arrays;\r\n+\r\n+public class OptionUtil {\r\n+\r\n+    public static final byte[] NO_PREFIX_END = {0};\r\n+\r\n+    public static final ByteSequence prefixEndOf(ByteSequence prefix) {\r\n+        byte[] endKey = prefix.getBytes().clone();\r\n+        for (int i = endKey.length - 1; i >= 0; i--) {\r\n+            if (endKey[i] < 0xff) {\r\n+                endKey[i] = (byte) (endKey[i] + 1);\r\n+                return ByteSequence.from(Arrays.copyOf(endKey, i + 1));\r\n+            }\r\n+        }\r\n+\r\n+        return ByteSequence.from(NO_PREFIX_END);\r\n+    }\r\n+\r\n+    public static boolean isRecoverable(Status status) {\r\n+        return isHaltError(status)\r\n+                || isNoLeaderError(status)\r\n+                // ephemeral is expired\r\n+                || status.getCode() == Status.Code.NOT_FOUND;\r\n+    }\r\n+\r\n+    public static boolean isHaltError(Status status) {\r\n+        // Unavailable codes mean the system will be right back.\r\n+        // (e.g., can't connect, lost leader)\r\n+        // Treat Internal codes as if something failed, leaving the\r\n+        // system in an inconsistent state, but retrying could make progress.\r\n+        // (e.g., failed in middle of send, corrupted frame)\r\n+        return status.getCode() != Status.Code.UNAVAILABLE && status.getCode() != Status.Code.INTERNAL;\r\n+    }\r\n+\r\n+    public static boolean isNoLeaderError(Status status) {\r\n+        return status.getCode() == Status.Code.UNAVAILABLE\r\n+                && \"etcdserver: no leader\".equals(status.getDescription());\r\n+    }\r\n+\r\n+    public static boolean isProtocolError(Throwable e) {\r\n+        if (e == null) {\r\n+            return false;\r\n+        }\r\n+        Throwable cause = e.getCause();\r\n+        while (cause != null) {\r\n+            if (cause instanceof Http2Exception) {\r\n+                Http2Exception t = (Http2Exception) cause;\r\n+                if (\"PROTOCOL_ERROR\".equals(t.error().name())) {\r\n+                    return true;\r\n+                }\r\n+            }\r\n+            cause = cause.getCause();\r\n+        }\r\n+        return false;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/etcd/support/AbstractEtcdClient.java", "source2": "org/apache/dubbo/remoting/etcd/support/AbstractEtcdClient.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,194 +1,194 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.etcd.support;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ConcurrentHashSet;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.etcd.ChildListener;\n-import org.apache.dubbo.remoting.etcd.EtcdClient;\n-import org.apache.dubbo.remoting.etcd.StateListener;\n-\n-import java.util.Arrays;\n-import java.util.List;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\n-import static org.apache.dubbo.remoting.etcd.Constants.CONFIGURATORS_CATEGORY;\n-import static org.apache.dubbo.remoting.etcd.Constants.CONSUMERS_CATEGORY;\n-import static org.apache.dubbo.remoting.etcd.Constants.PROVIDERS_CATEGORY;\n-import static org.apache.dubbo.remoting.etcd.Constants.ROUTERS_CATEGORY;\n-\n-public abstract class AbstractEtcdClient<WatcherListener> implements EtcdClient {\n-\n-    protected static final Logger logger = LoggerFactory.getLogger(AbstractEtcdClient.class);\n-\n-    private final URL url;\n-\n-    private final Set<StateListener> stateListeners = new ConcurrentHashSet<>();\n-\n-    private final ConcurrentMap<String, ConcurrentMap<ChildListener, WatcherListener>> childListeners = new ConcurrentHashMap<>();\n-    private final List<String> categories = Arrays.asList(PROVIDERS_CATEGORY, CONSUMERS_CATEGORY, ROUTERS_CATEGORY,\n-            CONFIGURATORS_CATEGORY);\n-    private volatile boolean closed = false;\n-\n-    public AbstractEtcdClient(URL url) {\n-        this.url = url;\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return url;\n-    }\n-\n-    @Override\n-    public void create(String path) {\n-        String fixedPath = fixNamespace(path);\n-        createParentIfAbsent(fixedPath);\n-        doCreatePersistent(fixedPath);\n-    }\n-\n-    @Override\n-    public long createEphemeral(String path) {\n-        String fixedPath = fixNamespace(path);\n-        createParentIfAbsent(fixedPath);\n-        return doCreateEphemeral(path);\n-    }\n-\n-    @Override\n-    public void addStateListener(StateListener listener) {\n-        stateListeners.add(listener);\n-    }\n-\n-    @Override\n-    public void removeStateListener(StateListener listener) {\n-        stateListeners.remove(listener);\n-    }\n-\n-    public Set<StateListener> getSessionListeners() {\n-        return stateListeners;\n-    }\n-\n-    @Override\n-    public List<String> addChildListener(String path, final ChildListener listener) {\n-        ConcurrentMap<ChildListener, WatcherListener> listeners = childListeners.computeIfAbsent(path, k -> new ConcurrentHashMap<>());\n-        WatcherListener targetListener = listeners.computeIfAbsent(listener, k -> createChildWatcherListener(path, k));\n-        return addChildWatcherListener(path, targetListener);\n-    }\n-\n-    @Override\n-    public WatcherListener getChildListener(String path, ChildListener listener) {\n-        ConcurrentMap<ChildListener, WatcherListener> listeners = childListeners.get(path);\n-        if (listeners == null) {\n-            return null;\n-        }\n-        return listeners.computeIfAbsent(listener, k -> createChildWatcherListener(path, k));\n-    }\n-\n-    @Override\n-    public void removeChildListener(String path, ChildListener listener) {\n-        ConcurrentMap<ChildListener, WatcherListener> listeners = childListeners.get(path);\n-        if (listeners != null) {\n-            WatcherListener targetListener = listeners.remove(listener);\n-            if (targetListener != null) {\n-                removeChildWatcherListener(path, targetListener);\n-            }\n-        }\n-    }\n-\n-    protected void stateChanged(int state) {\n-        for (StateListener sessionListener : getSessionListeners()) {\n-            sessionListener.stateChanged(state);\n-        }\n-    }\n-\n-    protected String fixNamespace(String path) {\n-        if (StringUtils.isEmpty(path)) {\n-            throw new IllegalArgumentException(\"path is required, actual null or ''\");\n-        }\n-        return (path.charAt(0) != '/') ? (PATH_SEPARATOR + path) : path;\n-    }\n-\n-    protected void createParentIfAbsent(String fixedPath) {\n-        int i = fixedPath.lastIndexOf('/');\n-        if (i > 0) {\n-            String parentPath = fixedPath.substring(0, i);\n-            if (categories.stream().anyMatch(c -> fixedPath.endsWith(c))) {\n-                if (!checkExists(parentPath)) {\n-                    this.doCreatePersistent(parentPath);\n-                }\n-            } else if (categories.stream().anyMatch(c -> parentPath.endsWith(c))) {\n-                String grandfather = parentPath.substring(0, parentPath.lastIndexOf('/'));\n-                if (!checkExists(grandfather)) {\n-                    this.doCreatePersistent(grandfather);\n-                }\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public void close() {\n-        if (closed) {\n-            return;\n-        }\n-        closed = true;\n-        try {\n-            doClose();\n-        } catch (Throwable t) {\n-            logger.warn(t.getMessage(), t);\n-        }\n-    }\n-\n-    public abstract void doClose();\n-\n-    public abstract void doCreatePersistent(String path);\n-\n-    public abstract long doCreateEphemeral(String path);\n-\n-    @Override\n-    public abstract void delete(String path);\n-\n-    public abstract boolean checkExists(String path);\n-\n-    public abstract WatcherListener createChildWatcherListener(String path, ChildListener listener);\n-\n-    public abstract List<String> addChildWatcherListener(String path, WatcherListener listener);\n-\n-    public abstract void removeChildWatcherListener(String path, WatcherListener listener);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.etcd.support;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ConcurrentHashSet;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.etcd.ChildListener;\r\n+import org.apache.dubbo.remoting.etcd.EtcdClient;\r\n+import org.apache.dubbo.remoting.etcd.StateListener;\r\n+\r\n+import java.util.Arrays;\r\n+import java.util.List;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\r\n+import static org.apache.dubbo.remoting.etcd.Constants.CONFIGURATORS_CATEGORY;\r\n+import static org.apache.dubbo.remoting.etcd.Constants.CONSUMERS_CATEGORY;\r\n+import static org.apache.dubbo.remoting.etcd.Constants.PROVIDERS_CATEGORY;\r\n+import static org.apache.dubbo.remoting.etcd.Constants.ROUTERS_CATEGORY;\r\n+\r\n+public abstract class AbstractEtcdClient<WatcherListener> implements EtcdClient {\r\n+\r\n+    protected static final Logger logger = LoggerFactory.getLogger(AbstractEtcdClient.class);\r\n+\r\n+    private final URL url;\r\n+\r\n+    private final Set<StateListener> stateListeners = new ConcurrentHashSet<>();\r\n+\r\n+    private final ConcurrentMap<String, ConcurrentMap<ChildListener, WatcherListener>> childListeners = new ConcurrentHashMap<>();\r\n+    private final List<String> categories = Arrays.asList(PROVIDERS_CATEGORY, CONSUMERS_CATEGORY, ROUTERS_CATEGORY,\r\n+            CONFIGURATORS_CATEGORY);\r\n+    private volatile boolean closed = false;\r\n+\r\n+    public AbstractEtcdClient(URL url) {\r\n+        this.url = url;\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return url;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void create(String path) {\r\n+        String fixedPath = fixNamespace(path);\r\n+        createParentIfAbsent(fixedPath);\r\n+        doCreatePersistent(fixedPath);\r\n+    }\r\n+\r\n+    @Override\r\n+    public long createEphemeral(String path) {\r\n+        String fixedPath = fixNamespace(path);\r\n+        createParentIfAbsent(fixedPath);\r\n+        return doCreateEphemeral(path);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addStateListener(StateListener listener) {\r\n+        stateListeners.add(listener);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeStateListener(StateListener listener) {\r\n+        stateListeners.remove(listener);\r\n+    }\r\n+\r\n+    public Set<StateListener> getSessionListeners() {\r\n+        return stateListeners;\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<String> addChildListener(String path, final ChildListener listener) {\r\n+        ConcurrentMap<ChildListener, WatcherListener> listeners = childListeners.computeIfAbsent(path, k -> new ConcurrentHashMap<>());\r\n+        WatcherListener targetListener = listeners.computeIfAbsent(listener, k -> createChildWatcherListener(path, k));\r\n+        return addChildWatcherListener(path, targetListener);\r\n+    }\r\n+\r\n+    @Override\r\n+    public WatcherListener getChildListener(String path, ChildListener listener) {\r\n+        ConcurrentMap<ChildListener, WatcherListener> listeners = childListeners.get(path);\r\n+        if (listeners == null) {\r\n+            return null;\r\n+        }\r\n+        return listeners.computeIfAbsent(listener, k -> createChildWatcherListener(path, k));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeChildListener(String path, ChildListener listener) {\r\n+        ConcurrentMap<ChildListener, WatcherListener> listeners = childListeners.get(path);\r\n+        if (listeners != null) {\r\n+            WatcherListener targetListener = listeners.remove(listener);\r\n+            if (targetListener != null) {\r\n+                removeChildWatcherListener(path, targetListener);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    protected void stateChanged(int state) {\r\n+        for (StateListener sessionListener : getSessionListeners()) {\r\n+            sessionListener.stateChanged(state);\r\n+        }\r\n+    }\r\n+\r\n+    protected String fixNamespace(String path) {\r\n+        if (StringUtils.isEmpty(path)) {\r\n+            throw new IllegalArgumentException(\"path is required, actual null or ''\");\r\n+        }\r\n+        return (path.charAt(0) != '/') ? (PATH_SEPARATOR + path) : path;\r\n+    }\r\n+\r\n+    protected void createParentIfAbsent(String fixedPath) {\r\n+        int i = fixedPath.lastIndexOf('/');\r\n+        if (i > 0) {\r\n+            String parentPath = fixedPath.substring(0, i);\r\n+            if (categories.stream().anyMatch(c -> fixedPath.endsWith(c))) {\r\n+                if (!checkExists(parentPath)) {\r\n+                    this.doCreatePersistent(parentPath);\r\n+                }\r\n+            } else if (categories.stream().anyMatch(c -> parentPath.endsWith(c))) {\r\n+                String grandfather = parentPath.substring(0, parentPath.lastIndexOf('/'));\r\n+                if (!checkExists(grandfather)) {\r\n+                    this.doCreatePersistent(grandfather);\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close() {\r\n+        if (closed) {\r\n+            return;\r\n+        }\r\n+        closed = true;\r\n+        try {\r\n+            doClose();\r\n+        } catch (Throwable t) {\r\n+            logger.warn(t.getMessage(), t);\r\n+        }\r\n+    }\r\n+\r\n+    public abstract void doClose();\r\n+\r\n+    public abstract void doCreatePersistent(String path);\r\n+\r\n+    public abstract long doCreateEphemeral(String path);\r\n+\r\n+    @Override\r\n+    public abstract void delete(String path);\r\n+\r\n+    public abstract boolean checkExists(String path);\r\n+\r\n+    public abstract WatcherListener createChildWatcherListener(String path, ChildListener listener);\r\n+\r\n+    public abstract List<String> addChildWatcherListener(String path, WatcherListener listener);\r\n+\r\n+    public abstract void removeChildWatcherListener(String path, WatcherListener listener);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/mina/MinaChannel.java", "source2": "org/apache/dubbo/remoting/transport/mina/MinaChannel.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,191 +1,191 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.mina;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.transport.AbstractChannel;\n-\n-import org.apache.mina.common.IoSession;\n-import org.apache.mina.common.WriteFuture;\n-\n-import java.net.InetSocketAddress;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-\n-/**\n- * MinaChannel\n- */\n-final class MinaChannel extends AbstractChannel {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(MinaChannel.class);\n-\n-    private static final String CHANNEL_KEY = MinaChannel.class.getName() + \".CHANNEL\";\n-\n-    private final IoSession session;\n-\n-    private MinaChannel(IoSession session, URL url, ChannelHandler handler) {\n-        super(url, handler);\n-        if (session == null) {\n-            throw new IllegalArgumentException(\"mina session == null\");\n-        }\n-        this.session = session;\n-    }\n-\n-    static MinaChannel getOrAddChannel(IoSession session, URL url, ChannelHandler handler) {\n-        if (session == null) {\n-            return null;\n-        }\n-        MinaChannel ret = (MinaChannel) session.getAttribute(CHANNEL_KEY);\n-        if (ret == null) {\n-            ret = new MinaChannel(session, url, handler);\n-            if (session.isConnected()) {\n-                MinaChannel old = (MinaChannel) session.setAttribute(CHANNEL_KEY, ret);\n-                if (old != null) {\n-                    session.setAttribute(CHANNEL_KEY, old);\n-                    ret = old;\n-                }\n-            }\n-        }\n-        return ret;\n-    }\n-\n-    static void removeChannelIfDisconnected(IoSession session) {\n-        if (session != null && !session.isConnected()) {\n-            session.removeAttribute(CHANNEL_KEY);\n-        }\n-    }\n-\n-    @Override\n-    public InetSocketAddress getLocalAddress() {\n-        return (InetSocketAddress) session.getLocalAddress();\n-    }\n-\n-    @Override\n-    public InetSocketAddress getRemoteAddress() {\n-        return (InetSocketAddress) session.getRemoteAddress();\n-    }\n-\n-    @Override\n-    public boolean isConnected() {\n-        return session.isConnected();\n-    }\n-\n-    @Override\n-    public void send(Object message, boolean sent) throws RemotingException {\n-        super.send(message, sent);\n-\n-        boolean success = true;\n-        int timeout = 0;\n-        try {\n-            WriteFuture future = session.write(message);\n-            if (sent) {\n-                timeout = getUrl().getPositiveParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT);\n-                success = future.join(timeout);\n-            }\n-        } catch (Throwable e) {\n-            throw new RemotingException(this, \"Failed to send message \" + message + \" to \" + getRemoteAddress() + \", cause: \" + e.getMessage(), e);\n-        }\n-\n-        if (!success) {\n-            throw new RemotingException(this, \"Failed to send message \" + message + \" to \" + getRemoteAddress()\n-                    + \"in timeout(\" + timeout + \"ms) limit\");\n-        }\n-    }\n-\n-    @Override\n-    public void close() {\n-        try {\n-            super.close();\n-        } catch (Exception e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-        try {\n-            removeChannelIfDisconnected(session);\n-        } catch (Exception e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-        try {\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"CLose mina channel \" + session);\n-            }\n-            session.close();\n-        } catch (Exception e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-    }\n-\n-    @Override\n-    public boolean hasAttribute(String key) {\n-        return session.containsAttribute(key);\n-    }\n-\n-    @Override\n-    public Object getAttribute(String key) {\n-        return session.getAttribute(key);\n-    }\n-\n-    @Override\n-    public void setAttribute(String key, Object value) {\n-        session.setAttribute(key, value);\n-    }\n-\n-    @Override\n-    public void removeAttribute(String key) {\n-        session.removeAttribute(key);\n-    }\n-\n-    @Override\n-    public int hashCode() {\n-        final int prime = 31;\n-        int result = 1;\n-        result = prime * result + ((session == null) ? 0 : session.hashCode());\n-        return result;\n-    }\n-\n-    @Override\n-    public boolean equals(Object obj) {\n-        if (this == obj) {\n-            return true;\n-        }\n-        if (obj == null) {\n-            return false;\n-        }\n-        if (getClass() != obj.getClass()) {\n-            return false;\n-        }\n-        MinaChannel other = (MinaChannel) obj;\n-        if (session == null) {\n-            if (other.session != null) {\n-                return false;\n-            }\n-        } else if (!session.equals(other.session)) {\n-            return false;\n-        }\n-        return true;\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"MinaChannel [session=\" + session + \"]\";\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.mina;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.transport.AbstractChannel;\r\n+\r\n+import org.apache.mina.common.IoSession;\r\n+import org.apache.mina.common.WriteFuture;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+\r\n+/**\r\n+ * MinaChannel\r\n+ */\r\n+final class MinaChannel extends AbstractChannel {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(MinaChannel.class);\r\n+\r\n+    private static final String CHANNEL_KEY = MinaChannel.class.getName() + \".CHANNEL\";\r\n+\r\n+    private final IoSession session;\r\n+\r\n+    private MinaChannel(IoSession session, URL url, ChannelHandler handler) {\r\n+        super(url, handler);\r\n+        if (session == null) {\r\n+            throw new IllegalArgumentException(\"mina session == null\");\r\n+        }\r\n+        this.session = session;\r\n+    }\r\n+\r\n+    static MinaChannel getOrAddChannel(IoSession session, URL url, ChannelHandler handler) {\r\n+        if (session == null) {\r\n+            return null;\r\n+        }\r\n+        MinaChannel ret = (MinaChannel) session.getAttribute(CHANNEL_KEY);\r\n+        if (ret == null) {\r\n+            ret = new MinaChannel(session, url, handler);\r\n+            if (session.isConnected()) {\r\n+                MinaChannel old = (MinaChannel) session.setAttribute(CHANNEL_KEY, ret);\r\n+                if (old != null) {\r\n+                    session.setAttribute(CHANNEL_KEY, old);\r\n+                    ret = old;\r\n+                }\r\n+            }\r\n+        }\r\n+        return ret;\r\n+    }\r\n+\r\n+    static void removeChannelIfDisconnected(IoSession session) {\r\n+        if (session != null && !session.isConnected()) {\r\n+            session.removeAttribute(CHANNEL_KEY);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public InetSocketAddress getLocalAddress() {\r\n+        return (InetSocketAddress) session.getLocalAddress();\r\n+    }\r\n+\r\n+    @Override\r\n+    public InetSocketAddress getRemoteAddress() {\r\n+        return (InetSocketAddress) session.getRemoteAddress();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isConnected() {\r\n+        return session.isConnected();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void send(Object message, boolean sent) throws RemotingException {\r\n+        super.send(message, sent);\r\n+\r\n+        boolean success = true;\r\n+        int timeout = 0;\r\n+        try {\r\n+            WriteFuture future = session.write(message);\r\n+            if (sent) {\r\n+                timeout = getUrl().getPositiveParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT);\r\n+                success = future.join(timeout);\r\n+            }\r\n+        } catch (Throwable e) {\r\n+            throw new RemotingException(this, \"Failed to send message \" + message + \" to \" + getRemoteAddress() + \", cause: \" + e.getMessage(), e);\r\n+        }\r\n+\r\n+        if (!success) {\r\n+            throw new RemotingException(this, \"Failed to send message \" + message + \" to \" + getRemoteAddress()\r\n+                    + \"in timeout(\" + timeout + \"ms) limit\");\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close() {\r\n+        try {\r\n+            super.close();\r\n+        } catch (Exception e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+        try {\r\n+            removeChannelIfDisconnected(session);\r\n+        } catch (Exception e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+        try {\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"CLose mina channel \" + session);\r\n+            }\r\n+            session.close();\r\n+        } catch (Exception e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean hasAttribute(String key) {\r\n+        return session.containsAttribute(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getAttribute(String key) {\r\n+        return session.getAttribute(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setAttribute(String key, Object value) {\r\n+        session.setAttribute(key, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeAttribute(String key) {\r\n+        session.removeAttribute(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public int hashCode() {\r\n+        final int prime = 31;\r\n+        int result = 1;\r\n+        result = prime * result + ((session == null) ? 0 : session.hashCode());\r\n+        return result;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean equals(Object obj) {\r\n+        if (this == obj) {\r\n+            return true;\r\n+        }\r\n+        if (obj == null) {\r\n+            return false;\r\n+        }\r\n+        if (getClass() != obj.getClass()) {\r\n+            return false;\r\n+        }\r\n+        MinaChannel other = (MinaChannel) obj;\r\n+        if (session == null) {\r\n+            if (other.session != null) {\r\n+                return false;\r\n+            }\r\n+        } else if (!session.equals(other.session)) {\r\n+            return false;\r\n+        }\r\n+        return true;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"MinaChannel [session=\" + session + \"]\";\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/mina/MinaClient.java", "source2": "org/apache/dubbo/remoting/transport/mina/MinaClient.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,174 +1,174 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.mina;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.Version;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.NamedThreadFactory;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.transport.AbstractClient;\n-\n-import org.apache.mina.common.ConnectFuture;\n-import org.apache.mina.common.IoFuture;\n-import org.apache.mina.common.IoFutureListener;\n-import org.apache.mina.common.IoSession;\n-import org.apache.mina.common.ThreadModel;\n-import org.apache.mina.filter.codec.ProtocolCodecFilter;\n-import org.apache.mina.transport.socket.nio.SocketConnector;\n-import org.apache.mina.transport.socket.nio.SocketConnectorConfig;\n-\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.CountDownLatch;\n-import java.util.concurrent.Executors;\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.atomic.AtomicReference;\n-\n-/**\n- * Mina client.\n- */\n-public class MinaClient extends AbstractClient {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(MinaClient.class);\n-\n-    private static final Map<String, SocketConnector> CONNECTORS = new ConcurrentHashMap<String, SocketConnector>();\n-\n-    private String connectorKey;\n-\n-    private SocketConnector connector;\n-\n-    private volatile IoSession session; // volatile, please copy reference to use\n-\n-    public MinaClient(final URL url, final ChannelHandler handler) throws RemotingException {\n-        super(url, wrapChannelHandler(url, handler));\n-    }\n-\n-    @Override\n-    protected void doOpen() throws Throwable {\n-        connectorKey = getUrl().toFullString();\n-        SocketConnector c = CONNECTORS.get(connectorKey);\n-        if (c != null) {\n-            connector = c;\n-        } else {\n-            // set thread pool.\n-            connector = new SocketConnector(Constants.DEFAULT_IO_THREADS,\n-                    Executors.newCachedThreadPool(new NamedThreadFactory(\"MinaClientWorker\", true)));\n-            // config\n-            SocketConnectorConfig cfg = (SocketConnectorConfig) connector.getDefaultConfig();\n-            cfg.setThreadModel(ThreadModel.MANUAL);\n-            cfg.getSessionConfig().setTcpNoDelay(true);\n-            cfg.getSessionConfig().setKeepAlive(true);\n-            int timeout = getConnectTimeout();\n-            cfg.setConnectTimeout(timeout < 1000 ? 1 : timeout / 1000);\n-            // set codec.\n-            connector.getFilterChain().addLast(\"codec\", new ProtocolCodecFilter(new MinaCodecAdapter(getCodec(), getUrl(), this)));\n-            CONNECTORS.put(connectorKey, connector);\n-        }\n-    }\n-\n-    @Override\n-    protected void doConnect() throws Throwable {\n-        ConnectFuture future = connector.connect(getConnectAddress(), new MinaHandler(getUrl(), this));\n-        long start = System.currentTimeMillis();\n-        final AtomicReference<Throwable> exception = new AtomicReference<Throwable>();\n-        final CountDownLatch finish = new CountDownLatch(1); // resolve future.awaitUninterruptibly() dead lock\n-        future.addListener(new IoFutureListener() {\n-            @Override\n-            public void operationComplete(IoFuture future) {\n-                try {\n-                    if (future.isReady()) {\n-                        IoSession newSession = future.getSession();\n-                        try {\n-                            // Close old channel\n-                            IoSession oldSession = MinaClient.this.session; // copy reference\n-                            if (oldSession != null) {\n-                                try {\n-                                    if (logger.isInfoEnabled()) {\n-                                        logger.info(\"Close old mina channel \" + oldSession + \" on create new mina channel \" + newSession);\n-                                    }\n-                                    oldSession.close();\n-                                } finally {\n-                                    MinaChannel.removeChannelIfDisconnected(oldSession);\n-                                }\n-                            }\n-                        } finally {\n-                            if (MinaClient.this.isClosed()) {\n-                                try {\n-                                    if (logger.isInfoEnabled()) {\n-                                        logger.info(\"Close new mina channel \" + newSession + \", because the client closed.\");\n-                                    }\n-                                    newSession.close();\n-                                } finally {\n-                                    MinaClient.this.session = null;\n-                                    MinaChannel.removeChannelIfDisconnected(newSession);\n-                                }\n-                            } else {\n-                                MinaClient.this.session = newSession;\n-                            }\n-                        }\n-                    }\n-                } catch (Exception e) {\n-                    exception.set(e);\n-                } finally {\n-                    finish.countDown();\n-                }\n-            }\n-        });\n-        try {\n-            finish.await(getConnectTimeout(), TimeUnit.MILLISECONDS);\n-        } catch (InterruptedException e) {\n-            throw new RemotingException(this, \"client(url: \" + getUrl() + \") failed to connect to server \" + getRemoteAddress() + \" client-side timeout \"\n-                    + getConnectTimeout() + \"ms (elapsed: \" + (System.currentTimeMillis() - start)\n-                    + \"ms) from netty client \" + NetUtils.getLocalHost() + \" using dubbo version \"\n-                    + Version.getVersion() + \", cause: \" + e.getMessage(), e);\n-        }\n-        Throwable e = exception.get();\n-        if (e != null) {\n-            throw e;\n-        }\n-    }\n-\n-    @Override\n-    protected void doDisConnect() throws Throwable {\n-        try {\n-            MinaChannel.removeChannelIfDisconnected(session);\n-        } catch (Throwable t) {\n-            logger.warn(t.getMessage());\n-        }\n-    }\n-\n-    @Override\n-    protected void doClose() throws Throwable {\n-        //release mina resources.\n-    }\n-\n-    @Override\n-    protected Channel getChannel() {\n-        IoSession s = session;\n-        if (s == null || !s.isConnected()) {\n-            return null;\n-        }\n-        return MinaChannel.getOrAddChannel(s, getUrl(), this);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.mina;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.Version;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.NamedThreadFactory;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.transport.AbstractClient;\r\n+\r\n+import org.apache.mina.common.ConnectFuture;\r\n+import org.apache.mina.common.IoFuture;\r\n+import org.apache.mina.common.IoFutureListener;\r\n+import org.apache.mina.common.IoSession;\r\n+import org.apache.mina.common.ThreadModel;\r\n+import org.apache.mina.filter.codec.ProtocolCodecFilter;\r\n+import org.apache.mina.transport.socket.nio.SocketConnector;\r\n+import org.apache.mina.transport.socket.nio.SocketConnectorConfig;\r\n+\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.CountDownLatch;\r\n+import java.util.concurrent.Executors;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.atomic.AtomicReference;\r\n+\r\n+/**\r\n+ * Mina client.\r\n+ */\r\n+public class MinaClient extends AbstractClient {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(MinaClient.class);\r\n+\r\n+    private static final Map<String, SocketConnector> CONNECTORS = new ConcurrentHashMap<String, SocketConnector>();\r\n+\r\n+    private String connectorKey;\r\n+\r\n+    private SocketConnector connector;\r\n+\r\n+    private volatile IoSession session; // volatile, please copy reference to use\r\n+\r\n+    public MinaClient(final URL url, final ChannelHandler handler) throws RemotingException {\r\n+        super(url, wrapChannelHandler(url, handler));\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doOpen() throws Throwable {\r\n+        connectorKey = getUrl().toFullString();\r\n+        SocketConnector c = CONNECTORS.get(connectorKey);\r\n+        if (c != null) {\r\n+            connector = c;\r\n+        } else {\r\n+            // set thread pool.\r\n+            connector = new SocketConnector(Constants.DEFAULT_IO_THREADS,\r\n+                    Executors.newCachedThreadPool(new NamedThreadFactory(\"MinaClientWorker\", true)));\r\n+            // config\r\n+            SocketConnectorConfig cfg = (SocketConnectorConfig) connector.getDefaultConfig();\r\n+            cfg.setThreadModel(ThreadModel.MANUAL);\r\n+            cfg.getSessionConfig().setTcpNoDelay(true);\r\n+            cfg.getSessionConfig().setKeepAlive(true);\r\n+            int timeout = getConnectTimeout();\r\n+            cfg.setConnectTimeout(timeout < 1000 ? 1 : timeout / 1000);\r\n+            // set codec.\r\n+            connector.getFilterChain().addLast(\"codec\", new ProtocolCodecFilter(new MinaCodecAdapter(getCodec(), getUrl(), this)));\r\n+            CONNECTORS.put(connectorKey, connector);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doConnect() throws Throwable {\r\n+        ConnectFuture future = connector.connect(getConnectAddress(), new MinaHandler(getUrl(), this));\r\n+        long start = System.currentTimeMillis();\r\n+        final AtomicReference<Throwable> exception = new AtomicReference<Throwable>();\r\n+        final CountDownLatch finish = new CountDownLatch(1); // resolve future.awaitUninterruptibly() dead lock\r\n+        future.addListener(new IoFutureListener() {\r\n+            @Override\r\n+            public void operationComplete(IoFuture future) {\r\n+                try {\r\n+                    if (future.isReady()) {\r\n+                        IoSession newSession = future.getSession();\r\n+                        try {\r\n+                            // Close old channel\r\n+                            IoSession oldSession = MinaClient.this.session; // copy reference\r\n+                            if (oldSession != null) {\r\n+                                try {\r\n+                                    if (logger.isInfoEnabled()) {\r\n+                                        logger.info(\"Close old mina channel \" + oldSession + \" on create new mina channel \" + newSession);\r\n+                                    }\r\n+                                    oldSession.close();\r\n+                                } finally {\r\n+                                    MinaChannel.removeChannelIfDisconnected(oldSession);\r\n+                                }\r\n+                            }\r\n+                        } finally {\r\n+                            if (MinaClient.this.isClosed()) {\r\n+                                try {\r\n+                                    if (logger.isInfoEnabled()) {\r\n+                                        logger.info(\"Close new mina channel \" + newSession + \", because the client closed.\");\r\n+                                    }\r\n+                                    newSession.close();\r\n+                                } finally {\r\n+                                    MinaClient.this.session = null;\r\n+                                    MinaChannel.removeChannelIfDisconnected(newSession);\r\n+                                }\r\n+                            } else {\r\n+                                MinaClient.this.session = newSession;\r\n+                            }\r\n+                        }\r\n+                    }\r\n+                } catch (Exception e) {\r\n+                    exception.set(e);\r\n+                } finally {\r\n+                    finish.countDown();\r\n+                }\r\n+            }\r\n+        });\r\n+        try {\r\n+            finish.await(getConnectTimeout(), TimeUnit.MILLISECONDS);\r\n+        } catch (InterruptedException e) {\r\n+            throw new RemotingException(this, \"client(url: \" + getUrl() + \") failed to connect to server \" + getRemoteAddress() + \" client-side timeout \"\r\n+                    + getConnectTimeout() + \"ms (elapsed: \" + (System.currentTimeMillis() - start)\r\n+                    + \"ms) from netty client \" + NetUtils.getLocalHost() + \" using dubbo version \"\r\n+                    + Version.getVersion() + \", cause: \" + e.getMessage(), e);\r\n+        }\r\n+        Throwable e = exception.get();\r\n+        if (e != null) {\r\n+            throw e;\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doDisConnect() throws Throwable {\r\n+        try {\r\n+            MinaChannel.removeChannelIfDisconnected(session);\r\n+        } catch (Throwable t) {\r\n+            logger.warn(t.getMessage());\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doClose() throws Throwable {\r\n+        //release mina resources.\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Channel getChannel() {\r\n+        IoSession s = session;\r\n+        if (s == null || !s.isConnected()) {\r\n+            return null;\r\n+        }\r\n+        return MinaChannel.getOrAddChannel(s, getUrl(), this);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/mina/MinaCodecAdapter.java", "source2": "org/apache/dubbo/remoting/transport/mina/MinaCodecAdapter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,167 +1,167 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.mina;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.Codec2;\n-import org.apache.dubbo.remoting.buffer.ChannelBuffer;\n-import org.apache.dubbo.remoting.buffer.ChannelBuffers;\n-import org.apache.dubbo.remoting.buffer.DynamicChannelBuffer;\n-\n-import org.apache.mina.common.ByteBuffer;\n-import org.apache.mina.common.IoSession;\n-import org.apache.mina.filter.codec.ProtocolCodecFactory;\n-import org.apache.mina.filter.codec.ProtocolDecoder;\n-import org.apache.mina.filter.codec.ProtocolDecoderOutput;\n-import org.apache.mina.filter.codec.ProtocolEncoder;\n-import org.apache.mina.filter.codec.ProtocolEncoderOutput;\n-\n-import static org.apache.dubbo.remoting.Constants.BUFFER_KEY;\n-import static org.apache.dubbo.remoting.Constants.DEFAULT_BUFFER_SIZE;\n-import static org.apache.dubbo.remoting.Constants.MAX_BUFFER_SIZE;\n-import static org.apache.dubbo.remoting.Constants.MIN_BUFFER_SIZE;\n-\n-/**\n- * MinaCodecAdapter.\n- */\n-final class MinaCodecAdapter implements ProtocolCodecFactory {\n-\n-    private final ProtocolEncoder encoder = new InternalEncoder();\n-\n-    private final ProtocolDecoder decoder = new InternalDecoder();\n-\n-    private final Codec2 codec;\n-\n-    private final URL url;\n-\n-    private final ChannelHandler handler;\n-\n-    private final int bufferSize;\n-\n-    public MinaCodecAdapter(Codec2 codec, URL url, ChannelHandler handler) {\n-        this.codec = codec;\n-        this.url = url;\n-        this.handler = handler;\n-        int b = url.getPositiveParameter(BUFFER_KEY, DEFAULT_BUFFER_SIZE);\n-        this.bufferSize = b >= MIN_BUFFER_SIZE && b <= MAX_BUFFER_SIZE ? b : DEFAULT_BUFFER_SIZE;\n-    }\n-\n-    @Override\n-    public ProtocolEncoder getEncoder() {\n-        return encoder;\n-    }\n-\n-    @Override\n-    public ProtocolDecoder getDecoder() {\n-        return decoder;\n-    }\n-\n-    private class InternalEncoder implements ProtocolEncoder {\n-\n-        @Override\n-        public void dispose(IoSession session) throws Exception {\n-        }\n-\n-        @Override\n-        public void encode(IoSession session, Object msg, ProtocolEncoderOutput out) throws Exception {\n-            ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(1024);\n-            MinaChannel channel = MinaChannel.getOrAddChannel(session, url, handler);\n-            try {\n-                codec.encode(channel, buffer, msg);\n-            } finally {\n-                MinaChannel.removeChannelIfDisconnected(session);\n-            }\n-            out.write(ByteBuffer.wrap(buffer.toByteBuffer()));\n-            out.flush();\n-        }\n-    }\n-\n-    private class InternalDecoder implements ProtocolDecoder {\n-\n-        private ChannelBuffer buffer = ChannelBuffers.EMPTY_BUFFER;\n-\n-        @Override\n-        public void decode(IoSession session, ByteBuffer in, ProtocolDecoderOutput out) throws Exception {\n-            int readable = in.limit();\n-            if (readable <= 0) {\n-                return;\n-            }\n-\n-            ChannelBuffer frame;\n-\n-            if (buffer.readable()) {\n-                if (buffer instanceof DynamicChannelBuffer) {\n-                    buffer.writeBytes(in.buf());\n-                    frame = buffer;\n-                } else {\n-                    int size = buffer.readableBytes() + in.remaining();\n-                    frame = ChannelBuffers.dynamicBuffer(size > bufferSize ? size : bufferSize);\n-                    frame.writeBytes(buffer, buffer.readableBytes());\n-                    frame.writeBytes(in.buf());\n-                }\n-            } else {\n-                frame = ChannelBuffers.wrappedBuffer(in.buf());\n-            }\n-\n-            Channel channel = MinaChannel.getOrAddChannel(session, url, handler);\n-            Object msg;\n-            int savedReadIndex;\n-\n-            try {\n-                do {\n-                    savedReadIndex = frame.readerIndex();\n-                    try {\n-                        msg = codec.decode(channel, frame);\n-                    } catch (Exception e) {\n-                        buffer = ChannelBuffers.EMPTY_BUFFER;\n-                        throw e;\n-                    }\n-                    if (msg == Codec2.DecodeResult.NEED_MORE_INPUT) {\n-                        frame.readerIndex(savedReadIndex);\n-                        break;\n-                    } else {\n-                        if (savedReadIndex == frame.readerIndex()) {\n-                            buffer = ChannelBuffers.EMPTY_BUFFER;\n-                            throw new Exception(\"Decode without read data.\");\n-                        }\n-                        if (msg != null) {\n-                            out.write(msg);\n-                        }\n-                    }\n-                } while (frame.readable());\n-            } finally {\n-                if (frame.readable()) {\n-                    frame.discardReadBytes();\n-                    buffer = frame;\n-                } else {\n-                    buffer = ChannelBuffers.EMPTY_BUFFER;\n-                }\n-                MinaChannel.removeChannelIfDisconnected(session);\n-            }\n-        }\n-\n-        @Override\n-        public void dispose(IoSession session) throws Exception {\n-        }\n-\n-        @Override\n-        public void finishDecode(IoSession session, ProtocolDecoderOutput out) throws Exception {\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.mina;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.Codec2;\r\n+import org.apache.dubbo.remoting.buffer.ChannelBuffer;\r\n+import org.apache.dubbo.remoting.buffer.ChannelBuffers;\r\n+import org.apache.dubbo.remoting.buffer.DynamicChannelBuffer;\r\n+\r\n+import org.apache.mina.common.ByteBuffer;\r\n+import org.apache.mina.common.IoSession;\r\n+import org.apache.mina.filter.codec.ProtocolCodecFactory;\r\n+import org.apache.mina.filter.codec.ProtocolDecoder;\r\n+import org.apache.mina.filter.codec.ProtocolDecoderOutput;\r\n+import org.apache.mina.filter.codec.ProtocolEncoder;\r\n+import org.apache.mina.filter.codec.ProtocolEncoderOutput;\r\n+\r\n+import static org.apache.dubbo.remoting.Constants.BUFFER_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.DEFAULT_BUFFER_SIZE;\r\n+import static org.apache.dubbo.remoting.Constants.MAX_BUFFER_SIZE;\r\n+import static org.apache.dubbo.remoting.Constants.MIN_BUFFER_SIZE;\r\n+\r\n+/**\r\n+ * MinaCodecAdapter.\r\n+ */\r\n+final class MinaCodecAdapter implements ProtocolCodecFactory {\r\n+\r\n+    private final ProtocolEncoder encoder = new InternalEncoder();\r\n+\r\n+    private final ProtocolDecoder decoder = new InternalDecoder();\r\n+\r\n+    private final Codec2 codec;\r\n+\r\n+    private final URL url;\r\n+\r\n+    private final ChannelHandler handler;\r\n+\r\n+    private final int bufferSize;\r\n+\r\n+    public MinaCodecAdapter(Codec2 codec, URL url, ChannelHandler handler) {\r\n+        this.codec = codec;\r\n+        this.url = url;\r\n+        this.handler = handler;\r\n+        int b = url.getPositiveParameter(BUFFER_KEY, DEFAULT_BUFFER_SIZE);\r\n+        this.bufferSize = b >= MIN_BUFFER_SIZE && b <= MAX_BUFFER_SIZE ? b : DEFAULT_BUFFER_SIZE;\r\n+    }\r\n+\r\n+    @Override\r\n+    public ProtocolEncoder getEncoder() {\r\n+        return encoder;\r\n+    }\r\n+\r\n+    @Override\r\n+    public ProtocolDecoder getDecoder() {\r\n+        return decoder;\r\n+    }\r\n+\r\n+    private class InternalEncoder implements ProtocolEncoder {\r\n+\r\n+        @Override\r\n+        public void dispose(IoSession session) throws Exception {\r\n+        }\r\n+\r\n+        @Override\r\n+        public void encode(IoSession session, Object msg, ProtocolEncoderOutput out) throws Exception {\r\n+            ChannelBuffer buffer = ChannelBuffers.dynamicBuffer(1024);\r\n+            MinaChannel channel = MinaChannel.getOrAddChannel(session, url, handler);\r\n+            try {\r\n+                codec.encode(channel, buffer, msg);\r\n+            } finally {\r\n+                MinaChannel.removeChannelIfDisconnected(session);\r\n+            }\r\n+            out.write(ByteBuffer.wrap(buffer.toByteBuffer()));\r\n+            out.flush();\r\n+        }\r\n+    }\r\n+\r\n+    private class InternalDecoder implements ProtocolDecoder {\r\n+\r\n+        private ChannelBuffer buffer = ChannelBuffers.EMPTY_BUFFER;\r\n+\r\n+        @Override\r\n+        public void decode(IoSession session, ByteBuffer in, ProtocolDecoderOutput out) throws Exception {\r\n+            int readable = in.limit();\r\n+            if (readable <= 0) {\r\n+                return;\r\n+            }\r\n+\r\n+            ChannelBuffer frame;\r\n+\r\n+            if (buffer.readable()) {\r\n+                if (buffer instanceof DynamicChannelBuffer) {\r\n+                    buffer.writeBytes(in.buf());\r\n+                    frame = buffer;\r\n+                } else {\r\n+                    int size = buffer.readableBytes() + in.remaining();\r\n+                    frame = ChannelBuffers.dynamicBuffer(size > bufferSize ? size : bufferSize);\r\n+                    frame.writeBytes(buffer, buffer.readableBytes());\r\n+                    frame.writeBytes(in.buf());\r\n+                }\r\n+            } else {\r\n+                frame = ChannelBuffers.wrappedBuffer(in.buf());\r\n+            }\r\n+\r\n+            Channel channel = MinaChannel.getOrAddChannel(session, url, handler);\r\n+            Object msg;\r\n+            int savedReadIndex;\r\n+\r\n+            try {\r\n+                do {\r\n+                    savedReadIndex = frame.readerIndex();\r\n+                    try {\r\n+                        msg = codec.decode(channel, frame);\r\n+                    } catch (Exception e) {\r\n+                        buffer = ChannelBuffers.EMPTY_BUFFER;\r\n+                        throw e;\r\n+                    }\r\n+                    if (msg == Codec2.DecodeResult.NEED_MORE_INPUT) {\r\n+                        frame.readerIndex(savedReadIndex);\r\n+                        break;\r\n+                    } else {\r\n+                        if (savedReadIndex == frame.readerIndex()) {\r\n+                            buffer = ChannelBuffers.EMPTY_BUFFER;\r\n+                            throw new Exception(\"Decode without read data.\");\r\n+                        }\r\n+                        if (msg != null) {\r\n+                            out.write(msg);\r\n+                        }\r\n+                    }\r\n+                } while (frame.readable());\r\n+            } finally {\r\n+                if (frame.readable()) {\r\n+                    frame.discardReadBytes();\r\n+                    buffer = frame;\r\n+                } else {\r\n+                    buffer = ChannelBuffers.EMPTY_BUFFER;\r\n+                }\r\n+                MinaChannel.removeChannelIfDisconnected(session);\r\n+            }\r\n+        }\r\n+\r\n+        @Override\r\n+        public void dispose(IoSession session) throws Exception {\r\n+        }\r\n+\r\n+        @Override\r\n+        public void finishDecode(IoSession session, ProtocolDecoderOutput out) throws Exception {\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/mina/MinaServer.java", "source2": "org/apache/dubbo/remoting/transport/mina/MinaServer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,112 +1,112 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.mina;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ExecutorUtil;\n-import org.apache.dubbo.common.utils.NamedThreadFactory;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.transport.AbstractServer;\n-import org.apache.dubbo.remoting.transport.dispatcher.ChannelHandlers;\n-\n-import org.apache.mina.common.IoSession;\n-import org.apache.mina.common.ThreadModel;\n-import org.apache.mina.filter.codec.ProtocolCodecFilter;\n-import org.apache.mina.transport.socket.nio.SocketAcceptor;\n-import org.apache.mina.transport.socket.nio.SocketAcceptorConfig;\n-\n-import java.net.InetSocketAddress;\n-import java.util.Collection;\n-import java.util.HashSet;\n-import java.util.Set;\n-import java.util.concurrent.Executors;\n-\n-import static org.apache.dubbo.remoting.Constants.DEFAULT_IO_THREADS;\n-import static org.apache.dubbo.common.constants.CommonConstants.IO_THREADS_KEY;\n-\n-/**\n- * MinaServer\n- */\n-public class MinaServer extends AbstractServer {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(MinaServer.class);\n-\n-    private SocketAcceptor acceptor;\n-\n-    public MinaServer(URL url, ChannelHandler handler) throws RemotingException {\n-        super(url, ChannelHandlers.wrap(handler, ExecutorUtil.setThreadName(url, SERVER_THREAD_POOL_NAME)));\n-    }\n-\n-    @Override\n-    protected void doOpen() throws Throwable {\n-        // set thread pool.\n-        acceptor = new SocketAcceptor(getUrl().getPositiveParameter(IO_THREADS_KEY, DEFAULT_IO_THREADS),\n-                Executors.newCachedThreadPool(new NamedThreadFactory(\"MinaServerWorker\",\n-                        true)));\n-        // config\n-        SocketAcceptorConfig cfg = acceptor.getDefaultConfig();\n-        cfg.setThreadModel(ThreadModel.MANUAL);\n-        // set codec.\n-        acceptor.getFilterChain().addLast(\"codec\", new ProtocolCodecFilter(new MinaCodecAdapter(getCodec(), getUrl(), this)));\n-\n-        acceptor.bind(getBindAddress(), new MinaHandler(getUrl(), this));\n-    }\n-\n-    @Override\n-    protected void doClose() throws Throwable {\n-        try {\n-            if (acceptor != null) {\n-                acceptor.unbind(getBindAddress());\n-            }\n-        } catch (Throwable e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-    }\n-\n-    @Override\n-    public Collection<Channel> getChannels() {\n-        Set<IoSession> sessions = acceptor.getManagedSessions(getBindAddress());\n-        Collection<Channel> channels = new HashSet<Channel>();\n-        for (IoSession session : sessions) {\n-            if (session.isConnected()) {\n-                channels.add(MinaChannel.getOrAddChannel(session, getUrl(), this));\n-            }\n-        }\n-        return channels;\n-    }\n-\n-    @Override\n-    public Channel getChannel(InetSocketAddress remoteAddress) {\n-        Set<IoSession> sessions = acceptor.getManagedSessions(getBindAddress());\n-        for (IoSession session : sessions) {\n-            if (session.getRemoteAddress().equals(remoteAddress)) {\n-                return MinaChannel.getOrAddChannel(session, getUrl(), this);\n-            }\n-        }\n-        return null;\n-    }\n-\n-    @Override\n-    public boolean isBound() {\n-        return acceptor.isManaged(getBindAddress());\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.mina;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ExecutorUtil;\r\n+import org.apache.dubbo.common.utils.NamedThreadFactory;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.transport.AbstractServer;\r\n+import org.apache.dubbo.remoting.transport.dispatcher.ChannelHandlers;\r\n+\r\n+import org.apache.mina.common.IoSession;\r\n+import org.apache.mina.common.ThreadModel;\r\n+import org.apache.mina.filter.codec.ProtocolCodecFilter;\r\n+import org.apache.mina.transport.socket.nio.SocketAcceptor;\r\n+import org.apache.mina.transport.socket.nio.SocketAcceptorConfig;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+import java.util.Collection;\r\n+import java.util.HashSet;\r\n+import java.util.Set;\r\n+import java.util.concurrent.Executors;\r\n+\r\n+import static org.apache.dubbo.remoting.Constants.DEFAULT_IO_THREADS;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.IO_THREADS_KEY;\r\n+\r\n+/**\r\n+ * MinaServer\r\n+ */\r\n+public class MinaServer extends AbstractServer {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(MinaServer.class);\r\n+\r\n+    private SocketAcceptor acceptor;\r\n+\r\n+    public MinaServer(URL url, ChannelHandler handler) throws RemotingException {\r\n+        super(url, ChannelHandlers.wrap(handler, ExecutorUtil.setThreadName(url, SERVER_THREAD_POOL_NAME)));\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doOpen() throws Throwable {\r\n+        // set thread pool.\r\n+        acceptor = new SocketAcceptor(getUrl().getPositiveParameter(IO_THREADS_KEY, DEFAULT_IO_THREADS),\r\n+                Executors.newCachedThreadPool(new NamedThreadFactory(\"MinaServerWorker\",\r\n+                        true)));\r\n+        // config\r\n+        SocketAcceptorConfig cfg = acceptor.getDefaultConfig();\r\n+        cfg.setThreadModel(ThreadModel.MANUAL);\r\n+        // set codec.\r\n+        acceptor.getFilterChain().addLast(\"codec\", new ProtocolCodecFilter(new MinaCodecAdapter(getCodec(), getUrl(), this)));\r\n+\r\n+        acceptor.bind(getBindAddress(), new MinaHandler(getUrl(), this));\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doClose() throws Throwable {\r\n+        try {\r\n+            if (acceptor != null) {\r\n+                acceptor.unbind(getBindAddress());\r\n+            }\r\n+        } catch (Throwable e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public Collection<Channel> getChannels() {\r\n+        Set<IoSession> sessions = acceptor.getManagedSessions(getBindAddress());\r\n+        Collection<Channel> channels = new HashSet<Channel>();\r\n+        for (IoSession session : sessions) {\r\n+            if (session.isConnected()) {\r\n+                channels.add(MinaChannel.getOrAddChannel(session, getUrl(), this));\r\n+            }\r\n+        }\r\n+        return channels;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Channel getChannel(InetSocketAddress remoteAddress) {\r\n+        Set<IoSession> sessions = acceptor.getManagedSessions(getBindAddress());\r\n+        for (IoSession session : sessions) {\r\n+            if (session.getRemoteAddress().equals(remoteAddress)) {\r\n+                return MinaChannel.getOrAddChannel(session, getUrl(), this);\r\n+            }\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isBound() {\r\n+        return acceptor.isManaged(getBindAddress());\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/transport/grizzly/GrizzlyCodecAdapter.java", "source2": "org/apache/dubbo/remoting/transport/grizzly/GrizzlyCodecAdapter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,143 +1,143 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.transport.grizzly;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.Codec2;\n-import org.apache.dubbo.remoting.buffer.ChannelBuffer;\n-import org.apache.dubbo.remoting.buffer.ChannelBuffers;\n-import org.apache.dubbo.remoting.buffer.DynamicChannelBuffer;\n-\n-import org.glassfish.grizzly.Buffer;\n-import org.glassfish.grizzly.Connection;\n-import org.glassfish.grizzly.filterchain.BaseFilter;\n-import org.glassfish.grizzly.filterchain.FilterChainContext;\n-import org.glassfish.grizzly.filterchain.NextAction;\n-\n-import java.io.IOException;\n-\n-import static org.apache.dubbo.remoting.Constants.BUFFER_KEY;\n-import static org.apache.dubbo.remoting.Constants.DEFAULT_BUFFER_SIZE;\n-import static org.apache.dubbo.remoting.Constants.MAX_BUFFER_SIZE;\n-import static org.apache.dubbo.remoting.Constants.MIN_BUFFER_SIZE;\n-\n-/**\n- * GrizzlyCodecAdapter\n- */\n-public class GrizzlyCodecAdapter extends BaseFilter {\n-\n-    private final Codec2 codec;\n-\n-    private final URL url;\n-\n-    private final ChannelHandler handler;\n-\n-    private final int bufferSize;\n-\n-    private ChannelBuffer previousData = ChannelBuffers.EMPTY_BUFFER;\n-\n-    public GrizzlyCodecAdapter(Codec2 codec, URL url, ChannelHandler handler) {\n-        this.codec = codec;\n-        this.url = url;\n-        this.handler = handler;\n-        int b = url.getPositiveParameter(BUFFER_KEY, DEFAULT_BUFFER_SIZE);\n-        this.bufferSize = b >= MIN_BUFFER_SIZE && b <= MAX_BUFFER_SIZE ? b : DEFAULT_BUFFER_SIZE;\n-    }\n-\n-    @Override\n-    public NextAction handleWrite(FilterChainContext context) throws IOException {\n-        Connection<?> connection = context.getConnection();\n-        GrizzlyChannel channel = GrizzlyChannel.getOrAddChannel(connection, url, handler);\n-        try {\n-            ChannelBuffer channelBuffer = ChannelBuffers.dynamicBuffer(1024); // Do not need to close\n-\n-            Object msg = context.getMessage();\n-            codec.encode(channel, channelBuffer, msg);\n-\n-            GrizzlyChannel.removeChannelIfDisconnected(connection);\n-            Buffer buffer = connection.getTransport().getMemoryManager().allocate(channelBuffer.readableBytes());\n-            buffer.put(channelBuffer.toByteBuffer());\n-            buffer.flip();\n-            buffer.allowBufferDispose(true);\n-            context.setMessage(buffer);\n-        } finally {\n-            GrizzlyChannel.removeChannelIfDisconnected(connection);\n-        }\n-        return context.getInvokeAction();\n-    }\n-\n-    @Override\n-    public NextAction handleRead(FilterChainContext context) throws IOException {\n-        Object message = context.getMessage();\n-        Connection<?> connection = context.getConnection();\n-        Channel channel = GrizzlyChannel.getOrAddChannel(connection, url, handler);\n-        try {\n-            if (message instanceof Buffer) { // receive a new packet\n-                Buffer grizzlyBuffer = (Buffer) message; // buffer\n-\n-                ChannelBuffer frame;\n-\n-                if (previousData.readable()) {\n-                    if (previousData instanceof DynamicChannelBuffer) {\n-                        previousData.writeBytes(grizzlyBuffer.toByteBuffer());\n-                        frame = previousData;\n-                    } else {\n-                        int size = previousData.readableBytes() + grizzlyBuffer.remaining();\n-                        frame = ChannelBuffers.dynamicBuffer(size > bufferSize ? size : bufferSize);\n-                        frame.writeBytes(previousData, previousData.readableBytes());\n-                        frame.writeBytes(grizzlyBuffer.toByteBuffer());\n-                    }\n-                } else {\n-                    frame = ChannelBuffers.wrappedBuffer(grizzlyBuffer.toByteBuffer());\n-                }\n-\n-                Object msg;\n-                int savedReadIndex;\n-\n-                do {\n-                    savedReadIndex = frame.readerIndex();\n-                    try {\n-                        msg = codec.decode(channel, frame);\n-                    } catch (Exception e) {\n-                        previousData = ChannelBuffers.EMPTY_BUFFER;\n-                        throw new IOException(e.getMessage(), e);\n-                    }\n-                    if (msg == Codec2.DecodeResult.NEED_MORE_INPUT) {\n-                        frame.readerIndex(savedReadIndex);\n-                        return context.getStopAction();\n-                    } else {\n-                        if (savedReadIndex == frame.readerIndex()) {\n-                            previousData = ChannelBuffers.EMPTY_BUFFER;\n-                            throw new IOException(\"Decode without read data.\");\n-                        }\n-                        if (msg != null) {\n-                            context.setMessage(msg);\n-                        }\n-                        return context.getInvokeAction();\n-                    }\n-                } while (frame.readable());\n-            } else { // Other events are passed down directly\n-                return context.getInvokeAction();\n-            }\n-        } finally {\n-            GrizzlyChannel.removeChannelIfDisconnected(connection);\n-        }\n-    }\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.transport.grizzly;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.Codec2;\r\n+import org.apache.dubbo.remoting.buffer.ChannelBuffer;\r\n+import org.apache.dubbo.remoting.buffer.ChannelBuffers;\r\n+import org.apache.dubbo.remoting.buffer.DynamicChannelBuffer;\r\n+\r\n+import org.glassfish.grizzly.Buffer;\r\n+import org.glassfish.grizzly.Connection;\r\n+import org.glassfish.grizzly.filterchain.BaseFilter;\r\n+import org.glassfish.grizzly.filterchain.FilterChainContext;\r\n+import org.glassfish.grizzly.filterchain.NextAction;\r\n+\r\n+import java.io.IOException;\r\n+\r\n+import static org.apache.dubbo.remoting.Constants.BUFFER_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.DEFAULT_BUFFER_SIZE;\r\n+import static org.apache.dubbo.remoting.Constants.MAX_BUFFER_SIZE;\r\n+import static org.apache.dubbo.remoting.Constants.MIN_BUFFER_SIZE;\r\n+\r\n+/**\r\n+ * GrizzlyCodecAdapter\r\n+ */\r\n+public class GrizzlyCodecAdapter extends BaseFilter {\r\n+\r\n+    private final Codec2 codec;\r\n+\r\n+    private final URL url;\r\n+\r\n+    private final ChannelHandler handler;\r\n+\r\n+    private final int bufferSize;\r\n+\r\n+    private ChannelBuffer previousData = ChannelBuffers.EMPTY_BUFFER;\r\n+\r\n+    public GrizzlyCodecAdapter(Codec2 codec, URL url, ChannelHandler handler) {\r\n+        this.codec = codec;\r\n+        this.url = url;\r\n+        this.handler = handler;\r\n+        int b = url.getPositiveParameter(BUFFER_KEY, DEFAULT_BUFFER_SIZE);\r\n+        this.bufferSize = b >= MIN_BUFFER_SIZE && b <= MAX_BUFFER_SIZE ? b : DEFAULT_BUFFER_SIZE;\r\n+    }\r\n+\r\n+    @Override\r\n+    public NextAction handleWrite(FilterChainContext context) throws IOException {\r\n+        Connection<?> connection = context.getConnection();\r\n+        GrizzlyChannel channel = GrizzlyChannel.getOrAddChannel(connection, url, handler);\r\n+        try {\r\n+            ChannelBuffer channelBuffer = ChannelBuffers.dynamicBuffer(1024); // Do not need to close\r\n+\r\n+            Object msg = context.getMessage();\r\n+            codec.encode(channel, channelBuffer, msg);\r\n+\r\n+            GrizzlyChannel.removeChannelIfDisconnected(connection);\r\n+            Buffer buffer = connection.getTransport().getMemoryManager().allocate(channelBuffer.readableBytes());\r\n+            buffer.put(channelBuffer.toByteBuffer());\r\n+            buffer.flip();\r\n+            buffer.allowBufferDispose(true);\r\n+            context.setMessage(buffer);\r\n+        } finally {\r\n+            GrizzlyChannel.removeChannelIfDisconnected(connection);\r\n+        }\r\n+        return context.getInvokeAction();\r\n+    }\r\n+\r\n+    @Override\r\n+    public NextAction handleRead(FilterChainContext context) throws IOException {\r\n+        Object message = context.getMessage();\r\n+        Connection<?> connection = context.getConnection();\r\n+        Channel channel = GrizzlyChannel.getOrAddChannel(connection, url, handler);\r\n+        try {\r\n+            if (message instanceof Buffer) { // receive a new packet\r\n+                Buffer grizzlyBuffer = (Buffer) message; // buffer\r\n+\r\n+                ChannelBuffer frame;\r\n+\r\n+                if (previousData.readable()) {\r\n+                    if (previousData instanceof DynamicChannelBuffer) {\r\n+                        previousData.writeBytes(grizzlyBuffer.toByteBuffer());\r\n+                        frame = previousData;\r\n+                    } else {\r\n+                        int size = previousData.readableBytes() + grizzlyBuffer.remaining();\r\n+                        frame = ChannelBuffers.dynamicBuffer(size > bufferSize ? size : bufferSize);\r\n+                        frame.writeBytes(previousData, previousData.readableBytes());\r\n+                        frame.writeBytes(grizzlyBuffer.toByteBuffer());\r\n+                    }\r\n+                } else {\r\n+                    frame = ChannelBuffers.wrappedBuffer(grizzlyBuffer.toByteBuffer());\r\n+                }\r\n+\r\n+                Object msg;\r\n+                int savedReadIndex;\r\n+\r\n+                do {\r\n+                    savedReadIndex = frame.readerIndex();\r\n+                    try {\r\n+                        msg = codec.decode(channel, frame);\r\n+                    } catch (Exception e) {\r\n+                        previousData = ChannelBuffers.EMPTY_BUFFER;\r\n+                        throw new IOException(e.getMessage(), e);\r\n+                    }\r\n+                    if (msg == Codec2.DecodeResult.NEED_MORE_INPUT) {\r\n+                        frame.readerIndex(savedReadIndex);\r\n+                        return context.getStopAction();\r\n+                    } else {\r\n+                        if (savedReadIndex == frame.readerIndex()) {\r\n+                            previousData = ChannelBuffers.EMPTY_BUFFER;\r\n+                            throw new IOException(\"Decode without read data.\");\r\n+                        }\r\n+                        if (msg != null) {\r\n+                            context.setMessage(msg);\r\n+                        }\r\n+                        return context.getInvokeAction();\r\n+                    }\r\n+                } while (frame.readable());\r\n+            } else { // Other events are passed down directly\r\n+                return context.getInvokeAction();\r\n+            }\r\n+        } finally {\r\n+            GrizzlyChannel.removeChannelIfDisconnected(connection);\r\n+        }\r\n+    }\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/remoting/http/servlet/ServletHttpBinder.java", "source2": "org/apache/dubbo/remoting/http/servlet/ServletHttpBinder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,34 +1,34 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.http.servlet;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.http.HttpBinder;\n-import org.apache.dubbo.remoting.http.HttpHandler;\n-import org.apache.dubbo.remoting.http.HttpServer;\n-\n-/**\n- * ServletHttpTransporter\n- */\n-public class ServletHttpBinder implements HttpBinder {\n-\n-    @Override\n-    public HttpServer bind(URL url, HttpHandler handler) {\n-        return new ServletHttpServer(url, handler);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.http.servlet;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.http.HttpBinder;\r\n+import org.apache.dubbo.remoting.http.HttpHandler;\r\n+import org.apache.dubbo.remoting.http.HttpServer;\r\n+\r\n+/**\r\n+ * ServletHttpTransporter\r\n+ */\r\n+public class ServletHttpBinder implements HttpBinder {\r\n+\r\n+    @Override\r\n+    public HttpServer bind(URL url, HttpHandler handler) {\r\n+        return new ServletHttpServer(url, handler);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/http/servlet/ServletManager.java", "source2": "org/apache/dubbo/remoting/http/servlet/ServletManager.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,50 +1,50 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.http.servlet;\n-\n-import javax.servlet.ServletContext;\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-/**\n- * TODO this may not be a pretty elegant solution,\n- *\n- */\n-public class ServletManager {\n-\n-    public static final int EXTERNAL_SERVER_PORT = -1234;\n-\n-    private static final ServletManager INSTANCE = new ServletManager();\n-\n-    private final Map<Integer, ServletContext> contextMap = new ConcurrentHashMap<Integer, ServletContext>();\n-\n-    public static ServletManager getInstance() {\n-        return INSTANCE;\n-    }\n-\n-    public void addServletContext(int port, ServletContext servletContext) {\n-        contextMap.put(port, servletContext);\n-    }\n-\n-    public void removeServletContext(int port) {\n-        contextMap.remove(port);\n-    }\n-\n-    public ServletContext getServletContext(int port) {\n-        return contextMap.get(port);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.http.servlet;\r\n+\r\n+import javax.servlet.ServletContext;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+/**\r\n+ * TODO this may not be a pretty elegant solution,\r\n+ *\r\n+ */\r\n+public class ServletManager {\r\n+\r\n+    public static final int EXTERNAL_SERVER_PORT = -1234;\r\n+\r\n+    private static final ServletManager INSTANCE = new ServletManager();\r\n+\r\n+    private final Map<Integer, ServletContext> contextMap = new ConcurrentHashMap<Integer, ServletContext>();\r\n+\r\n+    public static ServletManager getInstance() {\r\n+        return INSTANCE;\r\n+    }\r\n+\r\n+    public void addServletContext(int port, ServletContext servletContext) {\r\n+        contextMap.put(port, servletContext);\r\n+    }\r\n+\r\n+    public void removeServletContext(int port) {\r\n+        contextMap.remove(port);\r\n+    }\r\n+\r\n+    public ServletContext getServletContext(int port) {\r\n+        return contextMap.get(port);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/http/tomcat/TomcatHttpServer.java", "source2": "org/apache/dubbo/remoting/http/tomcat/TomcatHttpServer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,95 +1,95 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.http.tomcat;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.remoting.http.HttpHandler;\n-import org.apache.dubbo.remoting.http.servlet.DispatcherServlet;\n-import org.apache.dubbo.remoting.http.servlet.ServletManager;\n-import org.apache.dubbo.remoting.http.support.AbstractHttpServer;\n-\n-import org.apache.catalina.Context;\n-import org.apache.catalina.LifecycleException;\n-import org.apache.catalina.connector.Connector;\n-import org.apache.catalina.startup.Tomcat;\n-\n-import java.io.File;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_THREADS;\n-import static org.apache.dubbo.common.constants.CommonConstants.THREADS_KEY;\n-import static org.apache.dubbo.remoting.Constants.ACCEPTS_KEY;\n-\n-public class TomcatHttpServer extends AbstractHttpServer {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(TomcatHttpServer.class);\n-\n-    private final Tomcat tomcat;\n-\n-    private final URL url;\n-\n-    public TomcatHttpServer(URL url, final HttpHandler handler) {\n-        super(url, handler);\n-\n-        this.url = url;\n-        DispatcherServlet.addHttpHandler(url.getPort(), handler);\n-        String baseDir = new File(System.getProperty(\"java.io.tmpdir\")).getAbsolutePath();\n-        tomcat = new Tomcat();\n-\n-        Connector connector = tomcat.getConnector();\n-        connector.setPort(url.getPort());\n-        connector.setProperty(\"maxThreads\", String.valueOf(url.getParameter(THREADS_KEY, DEFAULT_THREADS)));\n-        connector.setProperty(\"maxConnections\", String.valueOf(url.getParameter(ACCEPTS_KEY, -1)));\n-        connector.setProperty(\"URIEncoding\", \"UTF-8\");\n-        connector.setProperty(\"connectionTimeout\", \"60000\");\n-        connector.setProperty(\"maxKeepAliveRequests\", \"-1\");\n-\n-        tomcat.setBaseDir(baseDir);\n-        tomcat.setPort(url.getPort());\n-\n-        Context context = tomcat.addContext(\"/\", baseDir);\n-        Tomcat.addServlet(context, \"dispatcher\", new DispatcherServlet());\n-        // Issue : https://github.com/apache/dubbo/issues/6418\n-        // addServletMapping method will be removed since Tomcat 9\n-        // context.addServletMapping(\"/*\", \"dispatcher\");\n-        context.addServletMappingDecoded(\"/*\", \"dispatcher\");\n-        ServletManager.getInstance().addServletContext(url.getPort(), context.getServletContext());\n-\n-        // tell tomcat to fail on startup failures.\n-        System.setProperty(\"org.apache.catalina.startup.EXIT_ON_INIT_FAILURE\", \"true\");\n-\n-        try {\n-            tomcat.start();\n-        } catch (LifecycleException e) {\n-            throw new IllegalStateException(\"Failed to start tomcat server at \" + url.getAddress(), e);\n-        }\n-    }\n-\n-    @Override\n-    public void close() {\n-        super.close();\n-\n-        ServletManager.getInstance().removeServletContext(url.getPort());\n-\n-        try {\n-            tomcat.stop();\n-        } catch (Exception e) {\n-            logger.warn(e.getMessage(), e);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.http.tomcat;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.remoting.http.HttpHandler;\r\n+import org.apache.dubbo.remoting.http.servlet.DispatcherServlet;\r\n+import org.apache.dubbo.remoting.http.servlet.ServletManager;\r\n+import org.apache.dubbo.remoting.http.support.AbstractHttpServer;\r\n+\r\n+import org.apache.catalina.Context;\r\n+import org.apache.catalina.LifecycleException;\r\n+import org.apache.catalina.connector.Connector;\r\n+import org.apache.catalina.startup.Tomcat;\r\n+\r\n+import java.io.File;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_THREADS;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.THREADS_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.ACCEPTS_KEY;\r\n+\r\n+public class TomcatHttpServer extends AbstractHttpServer {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(TomcatHttpServer.class);\r\n+\r\n+    private final Tomcat tomcat;\r\n+\r\n+    private final URL url;\r\n+\r\n+    public TomcatHttpServer(URL url, final HttpHandler handler) {\r\n+        super(url, handler);\r\n+\r\n+        this.url = url;\r\n+        DispatcherServlet.addHttpHandler(url.getPort(), handler);\r\n+        String baseDir = new File(System.getProperty(\"java.io.tmpdir\")).getAbsolutePath();\r\n+        tomcat = new Tomcat();\r\n+\r\n+        Connector connector = tomcat.getConnector();\r\n+        connector.setPort(url.getPort());\r\n+        connector.setProperty(\"maxThreads\", String.valueOf(url.getParameter(THREADS_KEY, DEFAULT_THREADS)));\r\n+        connector.setProperty(\"maxConnections\", String.valueOf(url.getParameter(ACCEPTS_KEY, -1)));\r\n+        connector.setProperty(\"URIEncoding\", \"UTF-8\");\r\n+        connector.setProperty(\"connectionTimeout\", \"60000\");\r\n+        connector.setProperty(\"maxKeepAliveRequests\", \"-1\");\r\n+\r\n+        tomcat.setBaseDir(baseDir);\r\n+        tomcat.setPort(url.getPort());\r\n+\r\n+        Context context = tomcat.addContext(\"/\", baseDir);\r\n+        Tomcat.addServlet(context, \"dispatcher\", new DispatcherServlet());\r\n+        // Issue : https://github.com/apache/dubbo/issues/6418\r\n+        // addServletMapping method will be removed since Tomcat 9\r\n+        // context.addServletMapping(\"/*\", \"dispatcher\");\r\n+        context.addServletMappingDecoded(\"/*\", \"dispatcher\");\r\n+        ServletManager.getInstance().addServletContext(url.getPort(), context.getServletContext());\r\n+\r\n+        // tell tomcat to fail on startup failures.\r\n+        System.setProperty(\"org.apache.catalina.startup.EXIT_ON_INIT_FAILURE\", \"true\");\r\n+\r\n+        try {\r\n+            tomcat.start();\r\n+        } catch (LifecycleException e) {\r\n+            throw new IllegalStateException(\"Failed to start tomcat server at \" + url.getAddress(), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close() {\r\n+        super.close();\r\n+\r\n+        ServletManager.getInstance().removeServletContext(url.getPort());\r\n+\r\n+        try {\r\n+            tomcat.stop();\r\n+        } catch (Exception e) {\r\n+            logger.warn(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/rpc/service/GenericException.java", "source2": "com/alibaba/dubbo/rpc/service/GenericException.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,62 +1,62 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.rpc.service;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-@Deprecated\n-public class GenericException extends RuntimeException {\n-\n-    private static final long serialVersionUID = -1182299763306599962L;\n-\n-    private String exceptionClass;\n-\n-    private String exceptionMessage;\n-\n-    public GenericException() {\n-    }\n-\n-    public GenericException(String exceptionClass, String exceptionMessage) {\n-        super(exceptionMessage);\n-        this.exceptionClass = exceptionClass;\n-        this.exceptionMessage = exceptionMessage;\n-    }\n-\n-    public GenericException(Throwable cause) {\n-        super(StringUtils.toString(cause));\n-        this.exceptionClass = cause.getClass().getName();\n-        this.exceptionMessage = cause.getMessage();\n-    }\n-\n-    public String getExceptionClass() {\n-        return exceptionClass;\n-    }\n-\n-    public void setExceptionClass(String exceptionClass) {\n-        this.exceptionClass = exceptionClass;\n-    }\n-\n-    public String getExceptionMessage() {\n-        return exceptionMessage;\n-    }\n-\n-    public void setExceptionMessage(String exceptionMessage) {\n-        this.exceptionMessage = exceptionMessage;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.rpc.service;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+@Deprecated\r\n+public class GenericException extends RuntimeException {\r\n+\r\n+    private static final long serialVersionUID = -1182299763306599962L;\r\n+\r\n+    private String exceptionClass;\r\n+\r\n+    private String exceptionMessage;\r\n+\r\n+    public GenericException() {\r\n+    }\r\n+\r\n+    public GenericException(String exceptionClass, String exceptionMessage) {\r\n+        super(exceptionMessage);\r\n+        this.exceptionClass = exceptionClass;\r\n+        this.exceptionMessage = exceptionMessage;\r\n+    }\r\n+\r\n+    public GenericException(Throwable cause) {\r\n+        super(StringUtils.toString(cause));\r\n+        this.exceptionClass = cause.getClass().getName();\r\n+        this.exceptionMessage = cause.getMessage();\r\n+    }\r\n+\r\n+    public String getExceptionClass() {\r\n+        return exceptionClass;\r\n+    }\r\n+\r\n+    public void setExceptionClass(String exceptionClass) {\r\n+        this.exceptionClass = exceptionClass;\r\n+    }\r\n+\r\n+    public String getExceptionMessage() {\r\n+        return exceptionMessage;\r\n+    }\r\n+\r\n+    public void setExceptionMessage(String exceptionMessage) {\r\n+        this.exceptionMessage = exceptionMessage;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/AppResponse.java", "source2": "org/apache/dubbo/rpc/AppResponse.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,255 +1,255 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc;\n-\n-\n-import org.apache.dubbo.rpc.proxy.InvokerInvocationHandler;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.ExecutionException;\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.TimeoutException;\n-import java.util.function.BiConsumer;\n-import java.util.function.Function;\n-\n-import static org.apache.dubbo.rpc.Constants.INVOCATION_KEY;\n-\n-/**\n- * {@link AsyncRpcResult} is introduced in 3.0.0 to replace RpcResult, and RpcResult is replaced with {@link AppResponse}:\n- * <ul>\n- *     <li>AsyncRpcResult is the object that is actually passed in the call chain</li>\n- *     <li>AppResponse only simply represents the business result</li>\n- * </ul>\n- * <p>\n- *  The relationship between them can be described as follow, an abstraction of the definition of AsyncRpcResult:\n- *  <pre>\n- *  {@code\n- *   Public class AsyncRpcResult implements CompletionStage<AppResponse> {\n- *       ......\n- *  }\n- * </pre>\n- * AsyncRpcResult is a future representing an unfinished RPC call, while AppResponse is the actual return type of this call.\n- * In theory, AppResponse doesn't have to implement the {@link Result} interface, this is done mainly for compatibility purpose.\n- *\n- * @serial Do not change the class name and properties.\n- */\n-public class AppResponse implements Result {\n-\n-    private static final long serialVersionUID = -6925924956850004727L;\n-\n-    private Object result;\n-\n-    private Throwable exception;\n-\n-    private Map<String, Object> attachments = new HashMap<>();\n-\n-    private Map<String, Object> attributes = new HashMap<>();\n-\n-    public AppResponse() {\n-    }\n-\n-    public AppResponse(Invocation invocation) {\n-        this.setAttribute(INVOCATION_KEY, invocation);\n-    }\n-\n-    public AppResponse(Object result) {\n-        this.result = result;\n-    }\n-\n-    public AppResponse(Throwable exception) {\n-        this.exception = exception;\n-    }\n-\n-    @Override\n-    public Object recreate() throws Throwable {\n-        if (exception != null) {\n-            // fix issue#619\n-            try {\n-                Object stackTrace = InvokerInvocationHandler.stackTraceField.get(exception);\n-                if (stackTrace == null) {\n-                    exception.setStackTrace(new StackTraceElement[0]);\n-                }\n-            } catch (Exception e) {\n-                // ignore\n-            }\n-            throw exception;\n-        }\n-        return result;\n-    }\n-\n-    @Override\n-    public Object getValue() {\n-        return result;\n-    }\n-\n-    @Override\n-    public void setValue(Object value) {\n-        this.result = value;\n-    }\n-\n-    @Override\n-    public Throwable getException() {\n-        return exception;\n-    }\n-\n-    @Override\n-    public void setException(Throwable e) {\n-        this.exception = e;\n-    }\n-\n-    @Override\n-    public boolean hasException() {\n-        return exception != null;\n-    }\n-\n-    @Override\n-    @Deprecated\n-    public Map<String, String> getAttachments() {\n-        return new AttachmentsAdapter.ObjectToStringMap(attachments);\n-    }\n-\n-    @Override\n-    public Map<String, Object> getObjectAttachments() {\n-        return attachments;\n-    }\n-\n-    /**\n-     * Append all items from the map into the attachment, if map is empty then nothing happens\n-     *\n-     * @param map contains all key-value pairs to append\n-     */\n-    public void setAttachments(Map<String, String> map) {\n-        this.attachments = map == null ? new HashMap<>() : new HashMap<>(map);\n-    }\n-\n-    @Override\n-    public void setObjectAttachments(Map<String, Object> map) {\n-        this.attachments = map == null ? new HashMap<>() : map;\n-    }\n-\n-    public void addAttachments(Map<String, String> map) {\n-        if (map == null) {\n-            return;\n-        }\n-        if (this.attachments == null) {\n-            this.attachments = new HashMap<>();\n-        }\n-        this.attachments.putAll(map);\n-    }\n-\n-    @Override\n-    public void addObjectAttachments(Map<String, Object> map) {\n-        if (map == null) {\n-            return;\n-        }\n-        if (this.attachments == null) {\n-            this.attachments = new HashMap<>();\n-        }\n-        this.attachments.putAll(map);\n-    }\n-\n-    @Override\n-    public String getAttachment(String key) {\n-        Object value = attachments.get(key);\n-        if (value instanceof String) {\n-            return (String) value;\n-        }\n-        return null;\n-    }\n-\n-    @Override\n-    public Object getObjectAttachment(String key) {\n-        return attachments.get(key);\n-    }\n-\n-    @Override\n-    public String getAttachment(String key, String defaultValue) {\n-        Object result = attachments.get(key);\n-        if (result == null) {\n-            return defaultValue;\n-        }\n-        if (result instanceof String) {\n-            return (String) result;\n-        }\n-        return defaultValue;\n-    }\n-\n-    @Override\n-    public Object getObjectAttachment(String key, Object defaultValue) {\n-        Object result = attachments.get(key);\n-        if (result == null) {\n-            result = defaultValue;\n-        }\n-        return result;\n-    }\n-\n-    @Override\n-    public void setAttachment(String key, String value) {\n-        setObjectAttachment(key, value);\n-    }\n-\n-    @Override\n-    public void setAttachment(String key, Object value) {\n-        setObjectAttachment(key, value);\n-    }\n-\n-    @Override\n-    public void setObjectAttachment(String key, Object value) {\n-        attachments.put(key, value);\n-    }\n-\n-    public Object getAttribute(String key) {\n-        return attributes.get(key);\n-    }\n-\n-    public void setAttribute(String key, Object value) {\n-        attributes.put(key, value);\n-    }\n-\n-    @Override\n-    public Result whenCompleteWithContext(BiConsumer<Result, Throwable> fn) {\n-        throw new UnsupportedOperationException(\"AppResponse represents an concrete business response, there will be no status changes, you should get internal values directly.\");\n-    }\n-\n-    @Override\n-    public <U> CompletableFuture<U> thenApply(Function<Result, ? extends U> fn) {\n-        throw new UnsupportedOperationException(\"AppResponse represents an concrete business response, there will be no status changes, you should get internal values directly.\");\n-    }\n-\n-    @Override\n-    public Result get() throws InterruptedException, ExecutionException {\n-        throw new UnsupportedOperationException(\"AppResponse represents an concrete business response, there will be no status changes, you should get internal values directly.\");\n-    }\n-\n-    @Override\n-    public Result get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {\n-        throw new UnsupportedOperationException(\"AppResponse represents an concrete business response, there will be no status changes, you should get internal values directly.\");\n-    }\n-\n-    public void clear() {\n-        this.result = null;\n-        this.exception = null;\n-        this.attachments.clear();\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"AppResponse [value=\" + result + \", exception=\" + exception + \"]\";\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc;\r\n+\r\n+\r\n+import org.apache.dubbo.rpc.proxy.InvokerInvocationHandler;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.ExecutionException;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.TimeoutException;\r\n+import java.util.function.BiConsumer;\r\n+import java.util.function.Function;\r\n+\r\n+import static org.apache.dubbo.rpc.Constants.INVOCATION_KEY;\r\n+\r\n+/**\r\n+ * {@link AsyncRpcResult} is introduced in 3.0.0 to replace RpcResult, and RpcResult is replaced with {@link AppResponse}:\r\n+ * <ul>\r\n+ *     <li>AsyncRpcResult is the object that is actually passed in the call chain</li>\r\n+ *     <li>AppResponse only simply represents the business result</li>\r\n+ * </ul>\r\n+ * <p>\r\n+ *  The relationship between them can be described as follow, an abstraction of the definition of AsyncRpcResult:\r\n+ *  <pre>\r\n+ *  {@code\r\n+ *   Public class AsyncRpcResult implements CompletionStage<AppResponse> {\r\n+ *       ......\r\n+ *  }\r\n+ * </pre>\r\n+ * AsyncRpcResult is a future representing an unfinished RPC call, while AppResponse is the actual return type of this call.\r\n+ * In theory, AppResponse doesn't have to implement the {@link Result} interface, this is done mainly for compatibility purpose.\r\n+ *\r\n+ * @serial Do not change the class name and properties.\r\n+ */\r\n+public class AppResponse implements Result {\r\n+\r\n+    private static final long serialVersionUID = -6925924956850004727L;\r\n+\r\n+    private Object result;\r\n+\r\n+    private Throwable exception;\r\n+\r\n+    private Map<String, Object> attachments = new HashMap<>();\r\n+\r\n+    private Map<String, Object> attributes = new HashMap<>();\r\n+\r\n+    public AppResponse() {\r\n+    }\r\n+\r\n+    public AppResponse(Invocation invocation) {\r\n+        this.setAttribute(INVOCATION_KEY, invocation);\r\n+    }\r\n+\r\n+    public AppResponse(Object result) {\r\n+        this.result = result;\r\n+    }\r\n+\r\n+    public AppResponse(Throwable exception) {\r\n+        this.exception = exception;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object recreate() throws Throwable {\r\n+        if (exception != null) {\r\n+            // fix issue#619\r\n+            try {\r\n+                Object stackTrace = InvokerInvocationHandler.stackTraceField.get(exception);\r\n+                if (stackTrace == null) {\r\n+                    exception.setStackTrace(new StackTraceElement[0]);\r\n+                }\r\n+            } catch (Exception e) {\r\n+                // ignore\r\n+            }\r\n+            throw exception;\r\n+        }\r\n+        return result;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getValue() {\r\n+        return result;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setValue(Object value) {\r\n+        this.result = value;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Throwable getException() {\r\n+        return exception;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setException(Throwable e) {\r\n+        this.exception = e;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean hasException() {\r\n+        return exception != null;\r\n+    }\r\n+\r\n+    @Override\r\n+    @Deprecated\r\n+    public Map<String, String> getAttachments() {\r\n+        return new AttachmentsAdapter.ObjectToStringMap(attachments);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Map<String, Object> getObjectAttachments() {\r\n+        return attachments;\r\n+    }\r\n+\r\n+    /**\r\n+     * Append all items from the map into the attachment, if map is empty then nothing happens\r\n+     *\r\n+     * @param map contains all key-value pairs to append\r\n+     */\r\n+    public void setAttachments(Map<String, String> map) {\r\n+        this.attachments = map == null ? new HashMap<>() : new HashMap<>(map);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setObjectAttachments(Map<String, Object> map) {\r\n+        this.attachments = map == null ? new HashMap<>() : map;\r\n+    }\r\n+\r\n+    public void addAttachments(Map<String, String> map) {\r\n+        if (map == null) {\r\n+            return;\r\n+        }\r\n+        if (this.attachments == null) {\r\n+            this.attachments = new HashMap<>();\r\n+        }\r\n+        this.attachments.putAll(map);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addObjectAttachments(Map<String, Object> map) {\r\n+        if (map == null) {\r\n+            return;\r\n+        }\r\n+        if (this.attachments == null) {\r\n+            this.attachments = new HashMap<>();\r\n+        }\r\n+        this.attachments.putAll(map);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getAttachment(String key) {\r\n+        Object value = attachments.get(key);\r\n+        if (value instanceof String) {\r\n+            return (String) value;\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getObjectAttachment(String key) {\r\n+        return attachments.get(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getAttachment(String key, String defaultValue) {\r\n+        Object result = attachments.get(key);\r\n+        if (result == null) {\r\n+            return defaultValue;\r\n+        }\r\n+        if (result instanceof String) {\r\n+            return (String) result;\r\n+        }\r\n+        return defaultValue;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getObjectAttachment(String key, Object defaultValue) {\r\n+        Object result = attachments.get(key);\r\n+        if (result == null) {\r\n+            result = defaultValue;\r\n+        }\r\n+        return result;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setAttachment(String key, String value) {\r\n+        setObjectAttachment(key, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setAttachment(String key, Object value) {\r\n+        setObjectAttachment(key, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setObjectAttachment(String key, Object value) {\r\n+        attachments.put(key, value);\r\n+    }\r\n+\r\n+    public Object getAttribute(String key) {\r\n+        return attributes.get(key);\r\n+    }\r\n+\r\n+    public void setAttribute(String key, Object value) {\r\n+        attributes.put(key, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Result whenCompleteWithContext(BiConsumer<Result, Throwable> fn) {\r\n+        throw new UnsupportedOperationException(\"AppResponse represents an concrete business response, there will be no status changes, you should get internal values directly.\");\r\n+    }\r\n+\r\n+    @Override\r\n+    public <U> CompletableFuture<U> thenApply(Function<Result, ? extends U> fn) {\r\n+        throw new UnsupportedOperationException(\"AppResponse represents an concrete business response, there will be no status changes, you should get internal values directly.\");\r\n+    }\r\n+\r\n+    @Override\r\n+    public Result get() throws InterruptedException, ExecutionException {\r\n+        throw new UnsupportedOperationException(\"AppResponse represents an concrete business response, there will be no status changes, you should get internal values directly.\");\r\n+    }\r\n+\r\n+    @Override\r\n+    public Result get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {\r\n+        throw new UnsupportedOperationException(\"AppResponse represents an concrete business response, there will be no status changes, you should get internal values directly.\");\r\n+    }\r\n+\r\n+    public void clear() {\r\n+        this.result = null;\r\n+        this.exception = null;\r\n+        this.attachments.clear();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"AppResponse [value=\" + result + \", exception=\" + exception + \"]\";\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/AsyncContextImpl.java", "source2": "org/apache/dubbo/rpc/AsyncContextImpl.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,78 +1,78 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc;\n-\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.atomic.AtomicBoolean;\n-\n-public class AsyncContextImpl implements AsyncContext {\n-\n-    private final AtomicBoolean started = new AtomicBoolean(false);\n-    private final AtomicBoolean stopped = new AtomicBoolean(false);\n-\n-    private CompletableFuture<Object> future;\n-\n-    private RpcContext storedContext;\n-    private RpcContext storedServerContext;\n-\n-    public AsyncContextImpl() {\n-        this.storedContext = RpcContext.getContext();\n-        this.storedServerContext = RpcContext.getServerContext();\n-    }\n-\n-    @Override\n-    public void write(Object value) {\n-        if (isAsyncStarted() && stop()) {\n-            if (value instanceof Throwable) {\n-                Throwable bizExe = (Throwable) value;\n-                future.completeExceptionally(bizExe);\n-            } else {\n-                future.complete(value);\n-            }\n-        } else {\n-            throw new IllegalStateException(\"The async response has probably been wrote back by another thread, or the asyncContext has been closed.\");\n-        }\n-    }\n-\n-    @Override\n-    public boolean isAsyncStarted() {\n-        return started.get();\n-    }\n-\n-    @Override\n-    public boolean stop() {\n-        return stopped.compareAndSet(false, true);\n-    }\n-\n-    @Override\n-    public void start() {\n-        if (this.started.compareAndSet(false, true)) {\n-            this.future = new CompletableFuture<>();\n-        }\n-    }\n-\n-    @Override\n-    public void signalContextSwitch() {\n-        RpcContext.restoreContext(storedContext);\n-        RpcContext.restoreServerContext(storedServerContext);\n-        // Restore any other contexts in here if necessary.\n-    }\n-\n-    public CompletableFuture<Object> getInternalFuture() {\n-        return future;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc;\r\n+\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+\r\n+public class AsyncContextImpl implements AsyncContext {\r\n+\r\n+    private final AtomicBoolean started = new AtomicBoolean(false);\r\n+    private final AtomicBoolean stopped = new AtomicBoolean(false);\r\n+\r\n+    private CompletableFuture<Object> future;\r\n+\r\n+    private RpcContext storedContext;\r\n+    private RpcContext storedServerContext;\r\n+\r\n+    public AsyncContextImpl() {\r\n+        this.storedContext = RpcContext.getContext();\r\n+        this.storedServerContext = RpcContext.getServerContext();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void write(Object value) {\r\n+        if (isAsyncStarted() && stop()) {\r\n+            if (value instanceof Throwable) {\r\n+                Throwable bizExe = (Throwable) value;\r\n+                future.completeExceptionally(bizExe);\r\n+            } else {\r\n+                future.complete(value);\r\n+            }\r\n+        } else {\r\n+            throw new IllegalStateException(\"The async response has probably been wrote back by another thread, or the asyncContext has been closed.\");\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAsyncStarted() {\r\n+        return started.get();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean stop() {\r\n+        return stopped.compareAndSet(false, true);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void start() {\r\n+        if (this.started.compareAndSet(false, true)) {\r\n+            this.future = new CompletableFuture<>();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void signalContextSwitch() {\r\n+        RpcContext.restoreContext(storedContext);\r\n+        RpcContext.restoreServerContext(storedServerContext);\r\n+        // Restore any other contexts in here if necessary.\r\n+    }\r\n+\r\n+    public CompletableFuture<Object> getInternalFuture() {\r\n+        return future;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/AsyncRpcResult.java", "source2": "org/apache/dubbo/rpc/AsyncRpcResult.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,337 +1,337 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.threadpool.ThreadlessExecutor;\n-import org.apache.dubbo.rpc.model.ConsumerMethodModel;\n-\n-import java.util.Map;\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.ExecutionException;\n-import java.util.concurrent.Executor;\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.TimeoutException;\n-import java.util.function.BiConsumer;\n-import java.util.function.Function;\n-\n-import static org.apache.dubbo.common.utils.ReflectUtils.defaultReturn;\n-\n-/**\n- * This class represents an unfinished RPC call, it will hold some context information for this call, for example RpcContext and Invocation,\n- * so that when the call finishes and the result returns, it can guarantee all the contexts being recovered as the same as when the call was made\n- * before any callback is invoked.\n- * <p>\n- * TODO if it's reasonable or even right to keep a reference to Invocation?\n- * <p>\n- * As {@link Result} implements CompletionStage, {@link AsyncRpcResult} allows you to easily build a async filter chain whose status will be\n- * driven entirely by the state of the underlying RPC call.\n- * <p>\n- * AsyncRpcResult does not contain any concrete value (except the underlying value bring by CompletableFuture), consider it as a status transfer node.\n- * {@link #getValue()} and {@link #getException()} are all inherited from {@link Result} interface, implementing them are mainly\n- * for compatibility consideration. Because many legacy {@link Filter} implementation are most possibly to call getValue directly.\n- */\n-public class AsyncRpcResult implements Result {\n-    private static final Logger logger = LoggerFactory.getLogger(AsyncRpcResult.class);\n-\n-    /**\n-     * RpcContext may already have been changed when callback happens, it happens when the same thread is used to execute another RPC call.\n-     * So we should keep the reference of current RpcContext instance and restore it before callback being executed.\n-     */\n-    private RpcContext storedContext;\n-    private RpcContext storedServerContext;\n-    private Executor executor;\n-\n-    private Invocation invocation;\n-\n-    private CompletableFuture<AppResponse> responseFuture;\n-\n-    public AsyncRpcResult(CompletableFuture<AppResponse> future, Invocation invocation) {\n-        this.responseFuture = future;\n-        this.invocation = invocation;\n-        this.storedContext = RpcContext.getContext();\n-        this.storedServerContext = RpcContext.getServerContext();\n-    }\n-\n-    /**\n-     * Notice the return type of {@link #getValue} is the actual type of the RPC method, not {@link AppResponse}\n-     *\n-     * @return\n-     */\n-    @Override\n-    public Object getValue() {\n-        return getAppResponse().getValue();\n-    }\n-\n-    /**\n-     * CompletableFuture can only be completed once, so try to update the result of one completed CompletableFuture will\n-     * has no effect. To avoid this problem, we check the complete status of this future before update it's value.\n-     *\n-     * But notice that trying to give an uncompleted CompletableFuture a new specified value may face a race condition,\n-     * because the background thread watching the real result will also change the status of this CompletableFuture.\n-     * The result is you may lose the value you expected to set.\n-     *\n-     * @param value\n-     */\n-    @Override\n-    public void setValue(Object value) {\n-        try {\n-            if (responseFuture.isDone()) {\n-                responseFuture.get().setValue(value);\n-            } else {\n-                AppResponse appResponse = new AppResponse(invocation);\n-                appResponse.setValue(value);\n-                responseFuture.complete(appResponse);\n-            }\n-        } catch (Exception e) {\n-            // This should not happen in normal request process;\n-            logger.error(\"Got exception when trying to fetch the underlying result from AsyncRpcResult.\");\n-            throw new RpcException(e);\n-        }\n-    }\n-\n-    @Override\n-    public Throwable getException() {\n-        return getAppResponse().getException();\n-    }\n-\n-    @Override\n-    public void setException(Throwable t) {\n-        try {\n-            if (responseFuture.isDone()) {\n-                responseFuture.get().setException(t);\n-            } else {\n-                AppResponse appResponse = new AppResponse(invocation);\n-                appResponse.setException(t);\n-                responseFuture.complete(appResponse);\n-            }\n-        } catch (Exception e) {\n-            // This should not happen in normal request process;\n-            logger.error(\"Got exception when trying to fetch the underlying result from AsyncRpcResult.\");\n-            throw new RpcException(e);\n-        }\n-    }\n-\n-    @Override\n-    public boolean hasException() {\n-        return getAppResponse().hasException();\n-    }\n-\n-    public CompletableFuture<AppResponse> getResponseFuture() {\n-        return responseFuture;\n-    }\n-\n-    public void setResponseFuture(CompletableFuture<AppResponse> responseFuture) {\n-        this.responseFuture = responseFuture;\n-    }\n-\n-    public Result getAppResponse() {\n-        try {\n-            if (responseFuture.isDone()) {\n-                return responseFuture.get();\n-            }\n-        } catch (Exception e) {\n-            // This should not happen in normal request process;\n-            logger.error(\"Got exception when trying to fetch the underlying result from AsyncRpcResult.\");\n-            throw new RpcException(e);\n-        }\n-\n-        return createDefaultValue(invocation);\n-    }\n-\n-    /**\n-     * This method will always return after a maximum 'timeout' waiting:\n-     * 1. if value returns before timeout, return normally.\n-     * 2. if no value returns after timeout, throw TimeoutException.\n-     *\n-     * @return\n-     * @throws InterruptedException\n-     * @throws ExecutionException\n-     */\n-    @Override\n-    public Result get() throws InterruptedException, ExecutionException {\n-        if (executor != null && executor instanceof ThreadlessExecutor) {\n-            ThreadlessExecutor threadlessExecutor = (ThreadlessExecutor) executor;\n-            threadlessExecutor.waitAndDrain();\n-        }\n-        return responseFuture.get();\n-    }\n-\n-    @Override\n-    public Result get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {\n-        if (executor != null && executor instanceof ThreadlessExecutor) {\n-            ThreadlessExecutor threadlessExecutor = (ThreadlessExecutor) executor;\n-            threadlessExecutor.waitAndDrain();\n-        }\n-        return responseFuture.get(timeout, unit);\n-    }\n-\n-    @Override\n-    public Object recreate() throws Throwable {\n-        RpcInvocation rpcInvocation = (RpcInvocation) invocation;\n-        if (InvokeMode.FUTURE == rpcInvocation.getInvokeMode()) {\n-            return RpcContext.getContext().getFuture();\n-        }\n-\n-        return getAppResponse().recreate();\n-    }\n-\n-    public Result whenCompleteWithContext(BiConsumer<Result, Throwable> fn) {\n-        this.responseFuture = this.responseFuture.whenComplete((v, t) -> {\n-            beforeContext.accept(v, t);\n-            fn.accept(v, t);\n-            afterContext.accept(v, t);\n-        });\n-        return this;\n-    }\n-\n-    @Override\n-    public <U> CompletableFuture<U> thenApply(Function<Result, ? extends U> fn) {\n-        return this.responseFuture.thenApply(fn);\n-    }\n-\n-    @Override\n-    @Deprecated\n-    public Map<String, String> getAttachments() {\n-        return getAppResponse().getAttachments();\n-    }\n-\n-    @Override\n-    public Map<String, Object> getObjectAttachments() {\n-        return getAppResponse().getObjectAttachments();\n-    }\n-\n-    @Override\n-    public void setAttachments(Map<String, String> map) {\n-        getAppResponse().setAttachments(map);\n-    }\n-\n-    @Override\n-    public void setObjectAttachments(Map<String, Object> map) {\n-        getAppResponse().setObjectAttachments(map);\n-    }\n-\n-    @Deprecated\n-    @Override\n-    public void addAttachments(Map<String, String> map) {\n-        getAppResponse().addAttachments(map);\n-    }\n-\n-    @Override\n-    public void addObjectAttachments(Map<String, Object> map) {\n-        getAppResponse().addObjectAttachments(map);\n-    }\n-\n-    @Override\n-    public String getAttachment(String key) {\n-        return getAppResponse().getAttachment(key);\n-    }\n-\n-    @Override\n-    public Object getObjectAttachment(String key) {\n-        return getAppResponse().getObjectAttachment(key);\n-    }\n-\n-    @Override\n-    public String getAttachment(String key, String defaultValue) {\n-        return getAppResponse().getAttachment(key, defaultValue);\n-    }\n-\n-    @Override\n-    public Object getObjectAttachment(String key, Object defaultValue) {\n-        return getAppResponse().getObjectAttachment(key, defaultValue);\n-    }\n-\n-    @Override\n-    public void setAttachment(String key, String value) {\n-        setObjectAttachment(key, value);\n-    }\n-\n-    @Override\n-    public void setAttachment(String key, Object value) {\n-        setObjectAttachment(key, value);\n-    }\n-\n-    @Override\n-    public void setObjectAttachment(String key, Object value) {\n-        getAppResponse().setAttachment(key, value);\n-    }\n-\n-    public Executor getExecutor() {\n-        return executor;\n-    }\n-\n-    public void setExecutor(Executor executor) {\n-        this.executor = executor;\n-    }\n-\n-    /**\n-     * tmp context to use when the thread switch to Dubbo thread.\n-     */\n-    private RpcContext tmpContext;\n-\n-    private RpcContext tmpServerContext;\n-    private BiConsumer<Result, Throwable> beforeContext = (appResponse, t) -> {\n-        tmpContext = RpcContext.getContext();\n-        tmpServerContext = RpcContext.getServerContext();\n-        RpcContext.restoreContext(storedContext);\n-        RpcContext.restoreServerContext(storedServerContext);\n-    };\n-\n-    private BiConsumer<Result, Throwable> afterContext = (appResponse, t) -> {\n-        RpcContext.restoreContext(tmpContext);\n-        RpcContext.restoreServerContext(tmpServerContext);\n-    };\n-\n-    /**\n-     * Some utility methods used to quickly generate default AsyncRpcResult instance.\n-     */\n-    public static AsyncRpcResult newDefaultAsyncResult(AppResponse appResponse, Invocation invocation) {\n-        return new AsyncRpcResult(CompletableFuture.completedFuture(appResponse), invocation);\n-    }\n-\n-    public static AsyncRpcResult newDefaultAsyncResult(Invocation invocation) {\n-        return newDefaultAsyncResult(null, null, invocation);\n-    }\n-\n-    public static AsyncRpcResult newDefaultAsyncResult(Object value, Invocation invocation) {\n-        return newDefaultAsyncResult(value, null, invocation);\n-    }\n-\n-    public static AsyncRpcResult newDefaultAsyncResult(Throwable t, Invocation invocation) {\n-        return newDefaultAsyncResult(null, t, invocation);\n-    }\n-\n-    public static AsyncRpcResult newDefaultAsyncResult(Object value, Throwable t, Invocation invocation) {\n-        CompletableFuture<AppResponse> future = new CompletableFuture<>();\n-        AppResponse result = new AppResponse(invocation);\n-        if (t != null) {\n-            result.setException(t);\n-        } else {\n-            result.setValue(value);\n-        }\n-        future.complete(result);\n-        return new AsyncRpcResult(future, invocation);\n-    }\n-\n-    private static Result createDefaultValue(Invocation invocation) {\n-        ConsumerMethodModel method = (ConsumerMethodModel) invocation.get(Constants.METHOD_MODEL);\n-        return method != null ? new AppResponse(defaultReturn(method.getReturnClass())) : new AppResponse();\n-    }\n-}\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.threadpool.ThreadlessExecutor;\r\n+import org.apache.dubbo.rpc.model.ConsumerMethodModel;\r\n+\r\n+import java.util.Map;\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.ExecutionException;\r\n+import java.util.concurrent.Executor;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.TimeoutException;\r\n+import java.util.function.BiConsumer;\r\n+import java.util.function.Function;\r\n+\r\n+import static org.apache.dubbo.common.utils.ReflectUtils.defaultReturn;\r\n+\r\n+/**\r\n+ * This class represents an unfinished RPC call, it will hold some context information for this call, for example RpcContext and Invocation,\r\n+ * so that when the call finishes and the result returns, it can guarantee all the contexts being recovered as the same as when the call was made\r\n+ * before any callback is invoked.\r\n+ * <p>\r\n+ * TODO if it's reasonable or even right to keep a reference to Invocation?\r\n+ * <p>\r\n+ * As {@link Result} implements CompletionStage, {@link AsyncRpcResult} allows you to easily build a async filter chain whose status will be\r\n+ * driven entirely by the state of the underlying RPC call.\r\n+ * <p>\r\n+ * AsyncRpcResult does not contain any concrete value (except the underlying value bring by CompletableFuture), consider it as a status transfer node.\r\n+ * {@link #getValue()} and {@link #getException()} are all inherited from {@link Result} interface, implementing them are mainly\r\n+ * for compatibility consideration. Because many legacy {@link Filter} implementation are most possibly to call getValue directly.\r\n+ */\r\n+public class AsyncRpcResult implements Result {\r\n+    private static final Logger logger = LoggerFactory.getLogger(AsyncRpcResult.class);\r\n+\r\n+    /**\r\n+     * RpcContext may already have been changed when callback happens, it happens when the same thread is used to execute another RPC call.\r\n+     * So we should keep the reference of current RpcContext instance and restore it before callback being executed.\r\n+     */\r\n+    private RpcContext storedContext;\r\n+    private RpcContext storedServerContext;\r\n+    private Executor executor;\r\n+\r\n+    private Invocation invocation;\r\n+\r\n+    private CompletableFuture<AppResponse> responseFuture;\r\n+\r\n+    public AsyncRpcResult(CompletableFuture<AppResponse> future, Invocation invocation) {\r\n+        this.responseFuture = future;\r\n+        this.invocation = invocation;\r\n+        this.storedContext = RpcContext.getContext();\r\n+        this.storedServerContext = RpcContext.getServerContext();\r\n+    }\r\n+\r\n+    /**\r\n+     * Notice the return type of {@link #getValue} is the actual type of the RPC method, not {@link AppResponse}\r\n+     *\r\n+     * @return\r\n+     */\r\n+    @Override\r\n+    public Object getValue() {\r\n+        return getAppResponse().getValue();\r\n+    }\r\n+\r\n+    /**\r\n+     * CompletableFuture can only be completed once, so try to update the result of one completed CompletableFuture will\r\n+     * has no effect. To avoid this problem, we check the complete status of this future before update it's value.\r\n+     *\r\n+     * But notice that trying to give an uncompleted CompletableFuture a new specified value may face a race condition,\r\n+     * because the background thread watching the real result will also change the status of this CompletableFuture.\r\n+     * The result is you may lose the value you expected to set.\r\n+     *\r\n+     * @param value\r\n+     */\r\n+    @Override\r\n+    public void setValue(Object value) {\r\n+        try {\r\n+            if (responseFuture.isDone()) {\r\n+                responseFuture.get().setValue(value);\r\n+            } else {\r\n+                AppResponse appResponse = new AppResponse(invocation);\r\n+                appResponse.setValue(value);\r\n+                responseFuture.complete(appResponse);\r\n+            }\r\n+        } catch (Exception e) {\r\n+            // This should not happen in normal request process;\r\n+            logger.error(\"Got exception when trying to fetch the underlying result from AsyncRpcResult.\");\r\n+            throw new RpcException(e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public Throwable getException() {\r\n+        return getAppResponse().getException();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setException(Throwable t) {\r\n+        try {\r\n+            if (responseFuture.isDone()) {\r\n+                responseFuture.get().setException(t);\r\n+            } else {\r\n+                AppResponse appResponse = new AppResponse(invocation);\r\n+                appResponse.setException(t);\r\n+                responseFuture.complete(appResponse);\r\n+            }\r\n+        } catch (Exception e) {\r\n+            // This should not happen in normal request process;\r\n+            logger.error(\"Got exception when trying to fetch the underlying result from AsyncRpcResult.\");\r\n+            throw new RpcException(e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean hasException() {\r\n+        return getAppResponse().hasException();\r\n+    }\r\n+\r\n+    public CompletableFuture<AppResponse> getResponseFuture() {\r\n+        return responseFuture;\r\n+    }\r\n+\r\n+    public void setResponseFuture(CompletableFuture<AppResponse> responseFuture) {\r\n+        this.responseFuture = responseFuture;\r\n+    }\r\n+\r\n+    public Result getAppResponse() {\r\n+        try {\r\n+            if (responseFuture.isDone()) {\r\n+                return responseFuture.get();\r\n+            }\r\n+        } catch (Exception e) {\r\n+            // This should not happen in normal request process;\r\n+            logger.error(\"Got exception when trying to fetch the underlying result from AsyncRpcResult.\");\r\n+            throw new RpcException(e);\r\n+        }\r\n+\r\n+        return createDefaultValue(invocation);\r\n+    }\r\n+\r\n+    /**\r\n+     * This method will always return after a maximum 'timeout' waiting:\r\n+     * 1. if value returns before timeout, return normally.\r\n+     * 2. if no value returns after timeout, throw TimeoutException.\r\n+     *\r\n+     * @return\r\n+     * @throws InterruptedException\r\n+     * @throws ExecutionException\r\n+     */\r\n+    @Override\r\n+    public Result get() throws InterruptedException, ExecutionException {\r\n+        if (executor != null && executor instanceof ThreadlessExecutor) {\r\n+            ThreadlessExecutor threadlessExecutor = (ThreadlessExecutor) executor;\r\n+            threadlessExecutor.waitAndDrain();\r\n+        }\r\n+        return responseFuture.get();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Result get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {\r\n+        if (executor != null && executor instanceof ThreadlessExecutor) {\r\n+            ThreadlessExecutor threadlessExecutor = (ThreadlessExecutor) executor;\r\n+            threadlessExecutor.waitAndDrain();\r\n+        }\r\n+        return responseFuture.get(timeout, unit);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object recreate() throws Throwable {\r\n+        RpcInvocation rpcInvocation = (RpcInvocation) invocation;\r\n+        if (InvokeMode.FUTURE == rpcInvocation.getInvokeMode()) {\r\n+            return RpcContext.getContext().getFuture();\r\n+        }\r\n+\r\n+        return getAppResponse().recreate();\r\n+    }\r\n+\r\n+    public Result whenCompleteWithContext(BiConsumer<Result, Throwable> fn) {\r\n+        this.responseFuture = this.responseFuture.whenComplete((v, t) -> {\r\n+            beforeContext.accept(v, t);\r\n+            fn.accept(v, t);\r\n+            afterContext.accept(v, t);\r\n+        });\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public <U> CompletableFuture<U> thenApply(Function<Result, ? extends U> fn) {\r\n+        return this.responseFuture.thenApply(fn);\r\n+    }\r\n+\r\n+    @Override\r\n+    @Deprecated\r\n+    public Map<String, String> getAttachments() {\r\n+        return getAppResponse().getAttachments();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Map<String, Object> getObjectAttachments() {\r\n+        return getAppResponse().getObjectAttachments();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setAttachments(Map<String, String> map) {\r\n+        getAppResponse().setAttachments(map);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setObjectAttachments(Map<String, Object> map) {\r\n+        getAppResponse().setObjectAttachments(map);\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    @Override\r\n+    public void addAttachments(Map<String, String> map) {\r\n+        getAppResponse().addAttachments(map);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addObjectAttachments(Map<String, Object> map) {\r\n+        getAppResponse().addObjectAttachments(map);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getAttachment(String key) {\r\n+        return getAppResponse().getAttachment(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getObjectAttachment(String key) {\r\n+        return getAppResponse().getObjectAttachment(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getAttachment(String key, String defaultValue) {\r\n+        return getAppResponse().getAttachment(key, defaultValue);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getObjectAttachment(String key, Object defaultValue) {\r\n+        return getAppResponse().getObjectAttachment(key, defaultValue);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setAttachment(String key, String value) {\r\n+        setObjectAttachment(key, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setAttachment(String key, Object value) {\r\n+        setObjectAttachment(key, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setObjectAttachment(String key, Object value) {\r\n+        getAppResponse().setAttachment(key, value);\r\n+    }\r\n+\r\n+    public Executor getExecutor() {\r\n+        return executor;\r\n+    }\r\n+\r\n+    public void setExecutor(Executor executor) {\r\n+        this.executor = executor;\r\n+    }\r\n+\r\n+    /**\r\n+     * tmp context to use when the thread switch to Dubbo thread.\r\n+     */\r\n+    private RpcContext tmpContext;\r\n+\r\n+    private RpcContext tmpServerContext;\r\n+    private BiConsumer<Result, Throwable> beforeContext = (appResponse, t) -> {\r\n+        tmpContext = RpcContext.getContext();\r\n+        tmpServerContext = RpcContext.getServerContext();\r\n+        RpcContext.restoreContext(storedContext);\r\n+        RpcContext.restoreServerContext(storedServerContext);\r\n+    };\r\n+\r\n+    private BiConsumer<Result, Throwable> afterContext = (appResponse, t) -> {\r\n+        RpcContext.restoreContext(tmpContext);\r\n+        RpcContext.restoreServerContext(tmpServerContext);\r\n+    };\r\n+\r\n+    /**\r\n+     * Some utility methods used to quickly generate default AsyncRpcResult instance.\r\n+     */\r\n+    public static AsyncRpcResult newDefaultAsyncResult(AppResponse appResponse, Invocation invocation) {\r\n+        return new AsyncRpcResult(CompletableFuture.completedFuture(appResponse), invocation);\r\n+    }\r\n+\r\n+    public static AsyncRpcResult newDefaultAsyncResult(Invocation invocation) {\r\n+        return newDefaultAsyncResult(null, null, invocation);\r\n+    }\r\n+\r\n+    public static AsyncRpcResult newDefaultAsyncResult(Object value, Invocation invocation) {\r\n+        return newDefaultAsyncResult(value, null, invocation);\r\n+    }\r\n+\r\n+    public static AsyncRpcResult newDefaultAsyncResult(Throwable t, Invocation invocation) {\r\n+        return newDefaultAsyncResult(null, t, invocation);\r\n+    }\r\n+\r\n+    public static AsyncRpcResult newDefaultAsyncResult(Object value, Throwable t, Invocation invocation) {\r\n+        CompletableFuture<AppResponse> future = new CompletableFuture<>();\r\n+        AppResponse result = new AppResponse(invocation);\r\n+        if (t != null) {\r\n+            result.setException(t);\r\n+        } else {\r\n+            result.setValue(value);\r\n+        }\r\n+        future.complete(result);\r\n+        return new AsyncRpcResult(future, invocation);\r\n+    }\r\n+\r\n+    private static Result createDefaultValue(Invocation invocation) {\r\n+        ConsumerMethodModel method = (ConsumerMethodModel) invocation.get(Constants.METHOD_MODEL);\r\n+        return method != null ? new AppResponse(defaultReturn(method.getReturnClass())) : new AppResponse();\r\n+    }\r\n+}\r\n+\r\n"}, {"source1": "org/apache/dubbo/rpc/AttachmentsAdapter.java", "source2": "org/apache/dubbo/rpc/AttachmentsAdapter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,72 +1,72 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-/**\n- * This class provides map adapters to support attachments in RpcContext, Invocation and Result switch from\n- * <String, String> to <String, Object>\n- */\n-public class AttachmentsAdapter {\n-\n-    public static class ObjectToStringMap extends HashMap<String, String> {\n-        private Map<String, Object> attachments;\n-\n-        public ObjectToStringMap(Map<String, Object> attachments) {\n-            for (Entry<String, Object> entry : attachments.entrySet()) {\n-                String convertResult = convert(entry.getValue());\n-                if (convertResult != null) {\n-                    super.put(entry.getKey(), convertResult);\n-                }\n-            }\n-            this.attachments = attachments;\n-        }\n-\n-        @Override\n-        public String put(String key, String value) {\n-            attachments.put(key, value);\n-            return super.put(key, value);\n-        }\n-\n-        @Override\n-        public String remove(Object key) {\n-            attachments.remove(key);\n-            return super.remove(key);\n-        }\n-\n-        private String convert(Object obj) {\n-            if (obj instanceof String) {\n-                return (String) obj;\n-            }\n-            return null; // or JSON.toString(obj);\n-        }\n-\n-        @Override\n-        public void clear() {\n-            attachments.clear();\n-            super.clear();\n-        }\n-\n-        @Override\n-        public void putAll(Map<? extends String, ? extends String> map) {\n-            attachments.putAll(map);\n-            super.putAll(map);\n-        }\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * This class provides map adapters to support attachments in RpcContext, Invocation and Result switch from\r\n+ * <String, String> to <String, Object>\r\n+ */\r\n+public class AttachmentsAdapter {\r\n+\r\n+    public static class ObjectToStringMap extends HashMap<String, String> {\r\n+        private Map<String, Object> attachments;\r\n+\r\n+        public ObjectToStringMap(Map<String, Object> attachments) {\r\n+            for (Entry<String, Object> entry : attachments.entrySet()) {\r\n+                String convertResult = convert(entry.getValue());\r\n+                if (convertResult != null) {\r\n+                    super.put(entry.getKey(), convertResult);\r\n+                }\r\n+            }\r\n+            this.attachments = attachments;\r\n+        }\r\n+\r\n+        @Override\r\n+        public String put(String key, String value) {\r\n+            attachments.put(key, value);\r\n+            return super.put(key, value);\r\n+        }\r\n+\r\n+        @Override\r\n+        public String remove(Object key) {\r\n+            attachments.remove(key);\r\n+            return super.remove(key);\r\n+        }\r\n+\r\n+        private String convert(Object obj) {\r\n+            if (obj instanceof String) {\r\n+                return (String) obj;\r\n+            }\r\n+            return null; // or JSON.toString(obj);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void clear() {\r\n+            attachments.clear();\r\n+            super.clear();\r\n+        }\r\n+\r\n+        @Override\r\n+        public void putAll(Map<? extends String, ? extends String> map) {\r\n+            attachments.putAll(map);\r\n+            super.putAll(map);\r\n+        }\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/rpc/Constants.java", "source2": "org/apache/dubbo/rpc/Constants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,97 +1,97 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.rpc;\n-\n-public interface Constants {\n-    String LOCAL_KEY = \"local\";\n-\n-    String STUB_KEY = \"stub\";\n-\n-    String MOCK_KEY = \"mock\";\n-\n-    String DEPRECATED_KEY = \"deprecated\";\n-\n-    String $ECHO = \"$echo\";\n-    String $ECHO_PARAMETER_DESC = \"Ljava/lang/Object;\";\n-\n-    String RETURN_PREFIX = \"return \";\n-\n-    String THROW_PREFIX = \"throw\";\n-\n-    String FAIL_PREFIX = \"fail:\";\n-\n-    String FORCE_PREFIX = \"force:\";\n-\n-    String MERGER_KEY = \"merger\";\n-\n-    String IS_SERVER_KEY = \"isserver\";\n-\n-    String FORCE_USE_TAG = \"dubbo.force.tag\";\n-\n-    String TPS_LIMIT_RATE_KEY = \"tps\";\n-\n-    String TPS_LIMIT_INTERVAL_KEY = \"tps.interval\";\n-\n-    long DEFAULT_TPS_LIMIT_INTERVAL = 60 * 1000;\n-\n-    String AUTO_ATTACH_INVOCATIONID_KEY = \"invocationid.autoattach\";\n-\n-    boolean DEFAULT_STUB_EVENT = false;\n-\n-    String STUB_EVENT_METHODS_KEY = \"dubbo.stub.event.methods\";\n-\n-    String PROXY_KEY = \"proxy\";\n-\n-    String EXECUTES_KEY = \"executes\";\n-\n-    String ACCESS_LOG_KEY = \"accesslog\";\n-\n-    String ACTIVES_KEY = \"actives\";\n-\n-    String ID_KEY = \"id\";\n-\n-    String ASYNC_KEY = \"async\";\n-\n-    String RETURN_KEY = \"return\";\n-\n-    String TOKEN_KEY = \"token\";\n-\n-    String INTERFACE = \"interface\";\n-\n-    String INTERFACES = \"interfaces\";\n-\n-    String GENERIC_KEY = \"generic\";\n-\n-    String LOCAL_PROTOCOL = \"injvm\";\n-\n-    String DEFAULT_REMOTING_SERVER = \"netty\";\n-\n-    String SCOPE_KEY = \"scope\";\n-    String SCOPE_LOCAL = \"local\";\n-    String SCOPE_REMOTE = \"remote\";\n-\n-    String INPUT_KEY = \"input\";\n-    String OUTPUT_KEY = \"output\";\n-\n-    String CONSUMER_MODEL = \"consumerModel\";\n-    String METHOD_MODEL = \"methodModel\";\n-\n-    String SERIALIZATION_SECURITY_CHECK_KEY = \"serialization.security.check\";\n-    String INVOCATION_KEY = \"invocation\";\n-    String SERIALIZATION_ID_KEY = \"serialization_id\";\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.rpc;\r\n+\r\n+public interface Constants {\r\n+    String LOCAL_KEY = \"local\";\r\n+\r\n+    String STUB_KEY = \"stub\";\r\n+\r\n+    String MOCK_KEY = \"mock\";\r\n+\r\n+    String DEPRECATED_KEY = \"deprecated\";\r\n+\r\n+    String $ECHO = \"$echo\";\r\n+    String $ECHO_PARAMETER_DESC = \"Ljava/lang/Object;\";\r\n+\r\n+    String RETURN_PREFIX = \"return \";\r\n+\r\n+    String THROW_PREFIX = \"throw\";\r\n+\r\n+    String FAIL_PREFIX = \"fail:\";\r\n+\r\n+    String FORCE_PREFIX = \"force:\";\r\n+\r\n+    String MERGER_KEY = \"merger\";\r\n+\r\n+    String IS_SERVER_KEY = \"isserver\";\r\n+\r\n+    String FORCE_USE_TAG = \"dubbo.force.tag\";\r\n+\r\n+    String TPS_LIMIT_RATE_KEY = \"tps\";\r\n+\r\n+    String TPS_LIMIT_INTERVAL_KEY = \"tps.interval\";\r\n+\r\n+    long DEFAULT_TPS_LIMIT_INTERVAL = 60 * 1000;\r\n+\r\n+    String AUTO_ATTACH_INVOCATIONID_KEY = \"invocationid.autoattach\";\r\n+\r\n+    boolean DEFAULT_STUB_EVENT = false;\r\n+\r\n+    String STUB_EVENT_METHODS_KEY = \"dubbo.stub.event.methods\";\r\n+\r\n+    String PROXY_KEY = \"proxy\";\r\n+\r\n+    String EXECUTES_KEY = \"executes\";\r\n+\r\n+    String ACCESS_LOG_KEY = \"accesslog\";\r\n+\r\n+    String ACTIVES_KEY = \"actives\";\r\n+\r\n+    String ID_KEY = \"id\";\r\n+\r\n+    String ASYNC_KEY = \"async\";\r\n+\r\n+    String RETURN_KEY = \"return\";\r\n+\r\n+    String TOKEN_KEY = \"token\";\r\n+\r\n+    String INTERFACE = \"interface\";\r\n+\r\n+    String INTERFACES = \"interfaces\";\r\n+\r\n+    String GENERIC_KEY = \"generic\";\r\n+\r\n+    String LOCAL_PROTOCOL = \"injvm\";\r\n+\r\n+    String DEFAULT_REMOTING_SERVER = \"netty\";\r\n+\r\n+    String SCOPE_KEY = \"scope\";\r\n+    String SCOPE_LOCAL = \"local\";\r\n+    String SCOPE_REMOTE = \"remote\";\r\n+\r\n+    String INPUT_KEY = \"input\";\r\n+    String OUTPUT_KEY = \"output\";\r\n+\r\n+    String CONSUMER_MODEL = \"consumerModel\";\r\n+    String METHOD_MODEL = \"methodModel\";\r\n+\r\n+    String SERIALIZATION_SECURITY_CHECK_KEY = \"serialization.security.check\";\r\n+    String INVOCATION_KEY = \"invocation\";\r\n+    String SERIALIZATION_ID_KEY = \"serialization_id\";\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/FutureContext.java", "source2": "org/apache/dubbo/rpc/FutureContext.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,108 +1,108 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc;\n-\n-import org.apache.dubbo.common.threadlocal.InternalThreadLocal;\n-import org.apache.dubbo.rpc.protocol.dubbo.FutureAdapter;\n-\n-import java.util.concurrent.CompletableFuture;\n-\n-/**\n- * Used for async call scenario. But if the method you are calling has a {@link CompletableFuture<?>} signature\n- * you do not need to use this class since you will get a Future response directly.\n- * <p>\n- * Remember to save the Future reference before making another call using the same thread, otherwise,\n- * the current Future will be override by the new one, which means you will lose the chance get the return value.\n- */\n-public class FutureContext {\n-\n-    private static InternalThreadLocal<FutureContext> futureTL = new InternalThreadLocal<FutureContext>() {\n-        @Override\n-        protected FutureContext initialValue() {\n-            return new FutureContext();\n-        }\n-    };\n-\n-    public static FutureContext getContext() {\n-        return futureTL.get();\n-    }\n-\n-    private CompletableFuture<?> future;\n-    private CompletableFuture<?> compatibleFuture;\n-\n-    /**\n-     * get future.\n-     *\n-     * @param <T>\n-     * @return future\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> CompletableFuture<T> getCompletableFuture() {\n-        return (CompletableFuture<T>) future;\n-    }\n-\n-    /**\n-     * set future.\n-     *\n-     * @param future\n-     */\n-    public void setFuture(CompletableFuture<?> future) {\n-        this.future = future;\n-    }\n-\n-    @Deprecated\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> CompletableFuture<T> getCompatibleCompletableFuture() {\n-        return (CompletableFuture<T>) compatibleFuture;\n-    }\n-\n-    /**\n-     * Guarantee 'using org.apache.dubbo.rpc.RpcContext.getFuture() before proxy returns' can work, a typical scenario is:\n-     * <pre>{@code\n-     *      public final class TracingFilter implements Filter {\n-     *          public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {\n-     *              Result result = invoker.invoke(invocation);\n-     *              Future<Object> future = rpcContext.getFuture();\n-     *              if (future instanceof FutureAdapter) {\n-     *                  ((FutureAdapter) future).getFuture().setCallback(new FinishSpanCallback(span));\n-     *               }\n-     *              ......\n-     *          }\n-     *      }\n-     * }</pre>\n-     *\n-     * Start from 2.7.3, you don't have to get Future from RpcContext, we recommend using Result directly:\n-     * <pre>{@code\n-     *      public final class TracingFilter implements Filter {\n-     *          public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {\n-     *              Result result = invoker.invoke(invocation);\n-     *              result.getResponseFuture().whenComplete(new FinishSpanCallback(span));\n-     *              ......\n-     *          }\n-     *      }\n-     * }</pre>\n-     *\n-     */\n-    @Deprecated\n-    public void setCompatibleFuture(CompletableFuture<?> compatibleFuture) {\n-        this.compatibleFuture = compatibleFuture;\n-        if (compatibleFuture != null) {\n-            this.setFuture(new FutureAdapter(compatibleFuture));\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc;\r\n+\r\n+import org.apache.dubbo.common.threadlocal.InternalThreadLocal;\r\n+import org.apache.dubbo.rpc.protocol.dubbo.FutureAdapter;\r\n+\r\n+import java.util.concurrent.CompletableFuture;\r\n+\r\n+/**\r\n+ * Used for async call scenario. But if the method you are calling has a {@link CompletableFuture<?>} signature\r\n+ * you do not need to use this class since you will get a Future response directly.\r\n+ * <p>\r\n+ * Remember to save the Future reference before making another call using the same thread, otherwise,\r\n+ * the current Future will be override by the new one, which means you will lose the chance get the return value.\r\n+ */\r\n+public class FutureContext {\r\n+\r\n+    private static InternalThreadLocal<FutureContext> futureTL = new InternalThreadLocal<FutureContext>() {\r\n+        @Override\r\n+        protected FutureContext initialValue() {\r\n+            return new FutureContext();\r\n+        }\r\n+    };\r\n+\r\n+    public static FutureContext getContext() {\r\n+        return futureTL.get();\r\n+    }\r\n+\r\n+    private CompletableFuture<?> future;\r\n+    private CompletableFuture<?> compatibleFuture;\r\n+\r\n+    /**\r\n+     * get future.\r\n+     *\r\n+     * @param <T>\r\n+     * @return future\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> CompletableFuture<T> getCompletableFuture() {\r\n+        return (CompletableFuture<T>) future;\r\n+    }\r\n+\r\n+    /**\r\n+     * set future.\r\n+     *\r\n+     * @param future\r\n+     */\r\n+    public void setFuture(CompletableFuture<?> future) {\r\n+        this.future = future;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> CompletableFuture<T> getCompatibleCompletableFuture() {\r\n+        return (CompletableFuture<T>) compatibleFuture;\r\n+    }\r\n+\r\n+    /**\r\n+     * Guarantee 'using org.apache.dubbo.rpc.RpcContext.getFuture() before proxy returns' can work, a typical scenario is:\r\n+     * <pre>{@code\r\n+     *      public final class TracingFilter implements Filter {\r\n+     *          public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {\r\n+     *              Result result = invoker.invoke(invocation);\r\n+     *              Future<Object> future = rpcContext.getFuture();\r\n+     *              if (future instanceof FutureAdapter) {\r\n+     *                  ((FutureAdapter) future).getFuture().setCallback(new FinishSpanCallback(span));\r\n+     *               }\r\n+     *              ......\r\n+     *          }\r\n+     *      }\r\n+     * }</pre>\r\n+     *\r\n+     * Start from 2.7.3, you don't have to get Future from RpcContext, we recommend using Result directly:\r\n+     * <pre>{@code\r\n+     *      public final class TracingFilter implements Filter {\r\n+     *          public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {\r\n+     *              Result result = invoker.invoke(invocation);\r\n+     *              result.getResponseFuture().whenComplete(new FinishSpanCallback(span));\r\n+     *              ......\r\n+     *          }\r\n+     *      }\r\n+     * }</pre>\r\n+     *\r\n+     */\r\n+    @Deprecated\r\n+    public void setCompatibleFuture(CompletableFuture<?> compatibleFuture) {\r\n+        this.compatibleFuture = compatibleFuture;\r\n+        if (compatibleFuture != null) {\r\n+            this.setFuture(new FutureAdapter(compatibleFuture));\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/Invocation.java", "source2": "org/apache/dubbo/rpc/Invocation.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,141 +1,141 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc;\n-\n-import org.apache.dubbo.common.Experimental;\n-\n-import java.util.Map;\n-import java.util.stream.Stream;\n-\n-/**\n- * Invocation. (API, Prototype, NonThreadSafe)\n- *\n- * @serial Don't change the class name and package name.\n- * @see org.apache.dubbo.rpc.Invoker#invoke(Invocation)\n- * @see org.apache.dubbo.rpc.RpcInvocation\n- */\n-public interface Invocation {\n-\n-    String getTargetServiceUniqueName();\n-\n-    String getProtocolServiceKey();\n-\n-    /**\n-     * get method name.\n-     *\n-     * @return method name.\n-     * @serial\n-     */\n-    String getMethodName();\n-\n-\n-    /**\n-     * get the interface name\n-     * @return\n-     */\n-    String getServiceName();\n-\n-    /**\n-     * get parameter types.\n-     *\n-     * @return parameter types.\n-     * @serial\n-     */\n-    Class<?>[] getParameterTypes();\n-\n-    /**\n-     * get parameter's signature, string representation of parameter types.\n-     *\n-     * @return parameter's signature\n-     */\n-    default String[] getCompatibleParamSignatures() {\n-        return Stream.of(getParameterTypes())\n-                .map(Class::getName)\n-                .toArray(String[]::new);\n-    }\n-\n-    /**\n-     * get arguments.\n-     *\n-     * @return arguments.\n-     * @serial\n-     */\n-    Object[] getArguments();\n-\n-    /**\n-     * get attachments.\n-     *\n-     * @return attachments.\n-     * @serial\n-     */\n-    Map<String, String> getAttachments();\n-\n-    @Experimental(\"Experiment api for supporting Object transmission\")\n-    Map<String, Object> getObjectAttachments();\n-\n-    void setAttachment(String key, String value);\n-\n-    @Experimental(\"Experiment api for supporting Object transmission\")\n-    void setAttachment(String key, Object value);\n-\n-    @Experimental(\"Experiment api for supporting Object transmission\")\n-    void setObjectAttachment(String key, Object value);\n-\n-    void setAttachmentIfAbsent(String key, String value);\n-\n-    @Experimental(\"Experiment api for supporting Object transmission\")\n-    void setAttachmentIfAbsent(String key, Object value);\n-\n-    @Experimental(\"Experiment api for supporting Object transmission\")\n-    void setObjectAttachmentIfAbsent(String key, Object value);\n-\n-    /**\n-     * get attachment by key.\n-     *\n-     * @return attachment value.\n-     * @serial\n-     */\n-    String getAttachment(String key);\n-\n-    @Experimental(\"Experiment api for supporting Object transmission\")\n-    Object getObjectAttachment(String key);\n-\n-    /**\n-     * get attachment by key with default value.\n-     *\n-     * @return attachment value.\n-     * @serial\n-     */\n-    String getAttachment(String key, String defaultValue);\n-\n-    @Experimental(\"Experiment api for supporting Object transmission\")\n-    Object getObjectAttachment(String key, Object defaultValue);\n-\n-    /**\n-     * get the invoker in current context.\n-     *\n-     * @return invoker.\n-     * @transient\n-     */\n-    Invoker<?> getInvoker();\n-\n-    Object put(Object key, Object value);\n-\n-    Object get(Object key);\n-\n-    Map<Object, Object> getAttributes();\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc;\r\n+\r\n+import org.apache.dubbo.common.Experimental;\r\n+\r\n+import java.util.Map;\r\n+import java.util.stream.Stream;\r\n+\r\n+/**\r\n+ * Invocation. (API, Prototype, NonThreadSafe)\r\n+ *\r\n+ * @serial Don't change the class name and package name.\r\n+ * @see org.apache.dubbo.rpc.Invoker#invoke(Invocation)\r\n+ * @see org.apache.dubbo.rpc.RpcInvocation\r\n+ */\r\n+public interface Invocation {\r\n+\r\n+    String getTargetServiceUniqueName();\r\n+\r\n+    String getProtocolServiceKey();\r\n+\r\n+    /**\r\n+     * get method name.\r\n+     *\r\n+     * @return method name.\r\n+     * @serial\r\n+     */\r\n+    String getMethodName();\r\n+\r\n+\r\n+    /**\r\n+     * get the interface name\r\n+     * @return\r\n+     */\r\n+    String getServiceName();\r\n+\r\n+    /**\r\n+     * get parameter types.\r\n+     *\r\n+     * @return parameter types.\r\n+     * @serial\r\n+     */\r\n+    Class<?>[] getParameterTypes();\r\n+\r\n+    /**\r\n+     * get parameter's signature, string representation of parameter types.\r\n+     *\r\n+     * @return parameter's signature\r\n+     */\r\n+    default String[] getCompatibleParamSignatures() {\r\n+        return Stream.of(getParameterTypes())\r\n+                .map(Class::getName)\r\n+                .toArray(String[]::new);\r\n+    }\r\n+\r\n+    /**\r\n+     * get arguments.\r\n+     *\r\n+     * @return arguments.\r\n+     * @serial\r\n+     */\r\n+    Object[] getArguments();\r\n+\r\n+    /**\r\n+     * get attachments.\r\n+     *\r\n+     * @return attachments.\r\n+     * @serial\r\n+     */\r\n+    Map<String, String> getAttachments();\r\n+\r\n+    @Experimental(\"Experiment api for supporting Object transmission\")\r\n+    Map<String, Object> getObjectAttachments();\r\n+\r\n+    void setAttachment(String key, String value);\r\n+\r\n+    @Experimental(\"Experiment api for supporting Object transmission\")\r\n+    void setAttachment(String key, Object value);\r\n+\r\n+    @Experimental(\"Experiment api for supporting Object transmission\")\r\n+    void setObjectAttachment(String key, Object value);\r\n+\r\n+    void setAttachmentIfAbsent(String key, String value);\r\n+\r\n+    @Experimental(\"Experiment api for supporting Object transmission\")\r\n+    void setAttachmentIfAbsent(String key, Object value);\r\n+\r\n+    @Experimental(\"Experiment api for supporting Object transmission\")\r\n+    void setObjectAttachmentIfAbsent(String key, Object value);\r\n+\r\n+    /**\r\n+     * get attachment by key.\r\n+     *\r\n+     * @return attachment value.\r\n+     * @serial\r\n+     */\r\n+    String getAttachment(String key);\r\n+\r\n+    @Experimental(\"Experiment api for supporting Object transmission\")\r\n+    Object getObjectAttachment(String key);\r\n+\r\n+    /**\r\n+     * get attachment by key with default value.\r\n+     *\r\n+     * @return attachment value.\r\n+     * @serial\r\n+     */\r\n+    String getAttachment(String key, String defaultValue);\r\n+\r\n+    @Experimental(\"Experiment api for supporting Object transmission\")\r\n+    Object getObjectAttachment(String key, Object defaultValue);\r\n+\r\n+    /**\r\n+     * get the invoker in current context.\r\n+     *\r\n+     * @return invoker.\r\n+     * @transient\r\n+     */\r\n+    Invoker<?> getInvoker();\r\n+\r\n+    Object put(Object key, Object value);\r\n+\r\n+    Object get(Object key);\r\n+\r\n+    Map<Object, Object> getAttributes();\r\n }\n"}, {"source1": "org/apache/dubbo/rpc/InvokeMode.java", "source2": "org/apache/dubbo/rpc/InvokeMode.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,23 +1,23 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc;\n-\n-public enum InvokeMode {\n-\n-    SYNC, ASYNC, FUTURE;\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc;\r\n+\r\n+public enum InvokeMode {\r\n+\r\n+    SYNC, ASYNC, FUTURE;\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/ListenableFilter.java", "source2": "org/apache/dubbo/rpc/ListenableFilter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,53 +1,53 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc;\n-\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-/**\n- * It's recommended to implement Filter.Listener directly for callback registration, check the default implementation,\n- * see {@link org.apache.dubbo.rpc.filter.ExceptionFilter}, for example.\n- * <p>\n- * If you do not want to share Listener instance between RPC calls. You can use ListenableFilter\n- * to keep a 'one Listener each RPC call' model.\n- */\n-public abstract class ListenableFilter implements Filter {\n-\n-    protected Listener listener = null;\n-    protected final ConcurrentMap<Invocation, Listener> listeners = new ConcurrentHashMap<>();\n-\n-    public Listener listener() {\n-        return listener;\n-    }\n-\n-    public Listener listener(Invocation invocation) {\n-        Listener invListener = listeners.get(invocation);\n-        if (invListener == null) {\n-            invListener = listener;\n-        }\n-        return invListener;\n-    }\n-\n-    public void addListener(Invocation invocation, Listener listener) {\n-        listeners.putIfAbsent(invocation, listener);\n-    }\n-\n-    public void removeListener(Invocation invocation) {\n-        listeners.remove(invocation);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc;\r\n+\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+/**\r\n+ * It's recommended to implement Filter.Listener directly for callback registration, check the default implementation,\r\n+ * see {@link org.apache.dubbo.rpc.filter.ExceptionFilter}, for example.\r\n+ * <p>\r\n+ * If you do not want to share Listener instance between RPC calls. You can use ListenableFilter\r\n+ * to keep a 'one Listener each RPC call' model.\r\n+ */\r\n+public abstract class ListenableFilter implements Filter {\r\n+\r\n+    protected Listener listener = null;\r\n+    protected final ConcurrentMap<Invocation, Listener> listeners = new ConcurrentHashMap<>();\r\n+\r\n+    public Listener listener() {\r\n+        return listener;\r\n+    }\r\n+\r\n+    public Listener listener(Invocation invocation) {\r\n+        Listener invListener = listeners.get(invocation);\r\n+        if (invListener == null) {\r\n+            invListener = listener;\r\n+        }\r\n+        return invListener;\r\n+    }\r\n+\r\n+    public void addListener(Invocation invocation, Listener listener) {\r\n+        listeners.putIfAbsent(invocation, listener);\r\n+    }\r\n+\r\n+    public void removeListener(Invocation invocation) {\r\n+        listeners.remove(invocation);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/ProtocolServer.java", "source2": "org/apache/dubbo/rpc/ProtocolServer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,47 +1,47 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.RemotingServer;\n-\n-/**\n- * Distinct from {@link RemotingServer}, each protocol holds one or more ProtocolServers(the number usually decides by port numbers),\n- * while each ProtocolServer holds zero or one RemotingServer.\n- */\n-public interface ProtocolServer {\n-\n-    default RemotingServer getRemotingServer() {\n-        return null;\n-    }\n-\n-    default void setRemotingServers(RemotingServer server) {\n-    }\n-\n-    String getAddress();\n-\n-    void setAddress(String address);\n-\n-    default URL getUrl() {\n-        return null;\n-    }\n-\n-    default void reset(URL url) {\n-    }\n-\n-    void close();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.RemotingServer;\r\n+\r\n+/**\r\n+ * Distinct from {@link RemotingServer}, each protocol holds one or more ProtocolServers(the number usually decides by port numbers),\r\n+ * while each ProtocolServer holds zero or one RemotingServer.\r\n+ */\r\n+public interface ProtocolServer {\r\n+\r\n+    default RemotingServer getRemotingServer() {\r\n+        return null;\r\n+    }\r\n+\r\n+    default void setRemotingServers(RemotingServer server) {\r\n+    }\r\n+\r\n+    String getAddress();\r\n+\r\n+    void setAddress(String address);\r\n+\r\n+    default URL getUrl() {\r\n+        return null;\r\n+    }\r\n+\r\n+    default void reset(URL url) {\r\n+    }\r\n+\r\n+    void close();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/ProxyFactory.java", "source2": "org/apache/dubbo/rpc/ProxyFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,61 +1,61 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.Adaptive;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-import static org.apache.dubbo.rpc.Constants.PROXY_KEY;\n-\n-/**\n- * ProxyFactory. (API/SPI, Singleton, ThreadSafe)\n- */\n-@SPI(\"javassist\")\n-public interface ProxyFactory {\n-\n-    /**\n-     * create proxy.\n-     *\n-     * @param invoker\n-     * @return proxy\n-     */\n-    @Adaptive({PROXY_KEY})\n-    <T> T getProxy(Invoker<T> invoker) throws RpcException;\n-\n-    /**\n-     * create proxy.\n-     *\n-     * @param invoker\n-     * @return proxy\n-     */\n-    @Adaptive({PROXY_KEY})\n-    <T> T getProxy(Invoker<T> invoker, boolean generic) throws RpcException;\n-\n-    /**\n-     * create invoker.\n-     *\n-     * @param <T>\n-     * @param proxy\n-     * @param type\n-     * @param url\n-     * @return invoker\n-     */\n-    @Adaptive({PROXY_KEY})\n-    <T> Invoker<T> getInvoker(T proxy, Class<T> type, URL url) throws RpcException;\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.Adaptive;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+import static org.apache.dubbo.rpc.Constants.PROXY_KEY;\r\n+\r\n+/**\r\n+ * ProxyFactory. (API/SPI, Singleton, ThreadSafe)\r\n+ */\r\n+@SPI(\"javassist\")\r\n+public interface ProxyFactory {\r\n+\r\n+    /**\r\n+     * create proxy.\r\n+     *\r\n+     * @param invoker\r\n+     * @return proxy\r\n+     */\r\n+    @Adaptive({PROXY_KEY})\r\n+    <T> T getProxy(Invoker<T> invoker) throws RpcException;\r\n+\r\n+    /**\r\n+     * create proxy.\r\n+     *\r\n+     * @param invoker\r\n+     * @return proxy\r\n+     */\r\n+    @Adaptive({PROXY_KEY})\r\n+    <T> T getProxy(Invoker<T> invoker, boolean generic) throws RpcException;\r\n+\r\n+    /**\r\n+     * create invoker.\r\n+     *\r\n+     * @param <T>\r\n+     * @param proxy\r\n+     * @param type\r\n+     * @param url\r\n+     * @return invoker\r\n+     */\r\n+    @Adaptive({PROXY_KEY})\r\n+    <T> Invoker<T> getInvoker(T proxy, Class<T> type, URL url) throws RpcException;\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/rpc/Result.java", "source2": "org/apache/dubbo/rpc/Result.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,189 +1,189 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc;\n-\n-import org.apache.dubbo.common.Experimental;\n-\n-import java.io.Serializable;\n-import java.util.Map;\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.CompletionStage;\n-import java.util.concurrent.ExecutionException;\n-import java.util.concurrent.Future;\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.TimeoutException;\n-import java.util.function.BiConsumer;\n-import java.util.function.Function;\n-\n-\n-/**\n- * (API, Prototype, NonThreadSafe)\n- *\n- * An RPC {@link Result}.\n- *\n- * Known implementations are:\n- * 1. {@link AsyncRpcResult}, it's a {@link CompletionStage} whose underlying value signifies the return value of an RPC call.\n- * 2. {@link AppResponse}, it inevitably inherits {@link CompletionStage} and {@link Future}, but you should never treat AppResponse as a type of Future,\n- *    instead, it is a normal concrete type.\n- *\n- * @serial Don't change the class name and package name.\n- * @see org.apache.dubbo.rpc.Invoker#invoke(Invocation)\n- * @see AppResponse\n- */\n-public interface Result extends Serializable {\n-\n-    /**\n-     * Get invoke result.\n-     *\n-     * @return result. if no result return null.\n-     */\n-    Object getValue();\n-\n-    void setValue(Object value);\n-\n-    /**\n-     * Get exception.\n-     *\n-     * @return exception. if no exception return null.\n-     */\n-    Throwable getException();\n-\n-    void setException(Throwable t);\n-\n-    /**\n-     * Has exception.\n-     *\n-     * @return has exception.\n-     */\n-    boolean hasException();\n-\n-    /**\n-     * Recreate.\n-     * <p>\n-     * <code>\n-     * if (hasException()) {\n-     * throw getException();\n-     * } else {\n-     * return getValue();\n-     * }\n-     * </code>\n-     *\n-     * @return result.\n-     * @throws if has exception throw it.\n-     */\n-    Object recreate() throws Throwable;\n-\n-    /**\n-     * get attachments.\n-     *\n-     * @return attachments.\n-     */\n-    Map<String, String> getAttachments();\n-\n-    /**\n-     * get attachments.\n-     *\n-     * @return attachments.\n-     */\n-    @Experimental(\"Experiment api for supporting Object transmission\")\n-    Map<String, Object> getObjectAttachments();\n-\n-    /**\n-     * Add the specified map to existing attachments in this instance.\n-     *\n-     * @param map\n-     */\n-    void addAttachments(Map<String, String> map);\n-\n-    /**\n-     * Add the specified map to existing attachments in this instance.\n-     *\n-     * @param map\n-     */\n-    @Experimental(\"Experiment api for supporting Object transmission\")\n-    void addObjectAttachments(Map<String, Object> map);\n-\n-    /**\n-     * Replace the existing attachments with the specified param.\n-     *\n-     * @param map\n-     */\n-    void setAttachments(Map<String, String> map);\n-\n-    /**\n-     * Replace the existing attachments with the specified param.\n-     *\n-     * @param map\n-     */\n-    @Experimental(\"Experiment api for supporting Object transmission\")\n-    void setObjectAttachments(Map<String, Object> map);\n-\n-    /**\n-     * get attachment by key.\n-     *\n-     * @return attachment value.\n-     */\n-    String getAttachment(String key);\n-\n-    /**\n-     * get attachment by key.\n-     *\n-     * @return attachment value.\n-     */\n-    @Experimental(\"Experiment api for supporting Object transmission\")\n-    Object getObjectAttachment(String key);\n-\n-    /**\n-     * get attachment by key with default value.\n-     *\n-     * @return attachment value.\n-     */\n-    String getAttachment(String key, String defaultValue);\n-\n-    /**\n-     * get attachment by key with default value.\n-     *\n-     * @return attachment value.\n-     */\n-    @Experimental(\"Experiment api for supporting Object transmission\")\n-    Object getObjectAttachment(String key, Object defaultValue);\n-\n-    void setAttachment(String key, String value);\n-\n-    @Experimental(\"Experiment api for supporting Object transmission\")\n-    void setAttachment(String key, Object value);\n-\n-    @Experimental(\"Experiment api for supporting Object transmission\")\n-    void setObjectAttachment(String key, Object value);\n-\n-    /**\n-     * Add a callback which can be triggered when the RPC call finishes.\n-     * <p>\n-     * Just as the method name implies, this method will guarantee the callback being triggered under the same context as when the call was started,\n-     * see implementation in {@link Result#whenCompleteWithContext(BiConsumer)}\n-     *\n-     * @param fn\n-     * @return\n-     */\n-    Result whenCompleteWithContext(BiConsumer<Result, Throwable> fn);\n-\n-    <U> CompletableFuture<U> thenApply(Function<Result, ? extends U> fn);\n-\n-    Result get() throws InterruptedException, ExecutionException;\n-\n-    Result get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException;\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc;\r\n+\r\n+import org.apache.dubbo.common.Experimental;\r\n+\r\n+import java.io.Serializable;\r\n+import java.util.Map;\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.CompletionStage;\r\n+import java.util.concurrent.ExecutionException;\r\n+import java.util.concurrent.Future;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.TimeoutException;\r\n+import java.util.function.BiConsumer;\r\n+import java.util.function.Function;\r\n+\r\n+\r\n+/**\r\n+ * (API, Prototype, NonThreadSafe)\r\n+ *\r\n+ * An RPC {@link Result}.\r\n+ *\r\n+ * Known implementations are:\r\n+ * 1. {@link AsyncRpcResult}, it's a {@link CompletionStage} whose underlying value signifies the return value of an RPC call.\r\n+ * 2. {@link AppResponse}, it inevitably inherits {@link CompletionStage} and {@link Future}, but you should never treat AppResponse as a type of Future,\r\n+ *    instead, it is a normal concrete type.\r\n+ *\r\n+ * @serial Don't change the class name and package name.\r\n+ * @see org.apache.dubbo.rpc.Invoker#invoke(Invocation)\r\n+ * @see AppResponse\r\n+ */\r\n+public interface Result extends Serializable {\r\n+\r\n+    /**\r\n+     * Get invoke result.\r\n+     *\r\n+     * @return result. if no result return null.\r\n+     */\r\n+    Object getValue();\r\n+\r\n+    void setValue(Object value);\r\n+\r\n+    /**\r\n+     * Get exception.\r\n+     *\r\n+     * @return exception. if no exception return null.\r\n+     */\r\n+    Throwable getException();\r\n+\r\n+    void setException(Throwable t);\r\n+\r\n+    /**\r\n+     * Has exception.\r\n+     *\r\n+     * @return has exception.\r\n+     */\r\n+    boolean hasException();\r\n+\r\n+    /**\r\n+     * Recreate.\r\n+     * <p>\r\n+     * <code>\r\n+     * if (hasException()) {\r\n+     * throw getException();\r\n+     * } else {\r\n+     * return getValue();\r\n+     * }\r\n+     * </code>\r\n+     *\r\n+     * @return result.\r\n+     * @throws if has exception throw it.\r\n+     */\r\n+    Object recreate() throws Throwable;\r\n+\r\n+    /**\r\n+     * get attachments.\r\n+     *\r\n+     * @return attachments.\r\n+     */\r\n+    Map<String, String> getAttachments();\r\n+\r\n+    /**\r\n+     * get attachments.\r\n+     *\r\n+     * @return attachments.\r\n+     */\r\n+    @Experimental(\"Experiment api for supporting Object transmission\")\r\n+    Map<String, Object> getObjectAttachments();\r\n+\r\n+    /**\r\n+     * Add the specified map to existing attachments in this instance.\r\n+     *\r\n+     * @param map\r\n+     */\r\n+    void addAttachments(Map<String, String> map);\r\n+\r\n+    /**\r\n+     * Add the specified map to existing attachments in this instance.\r\n+     *\r\n+     * @param map\r\n+     */\r\n+    @Experimental(\"Experiment api for supporting Object transmission\")\r\n+    void addObjectAttachments(Map<String, Object> map);\r\n+\r\n+    /**\r\n+     * Replace the existing attachments with the specified param.\r\n+     *\r\n+     * @param map\r\n+     */\r\n+    void setAttachments(Map<String, String> map);\r\n+\r\n+    /**\r\n+     * Replace the existing attachments with the specified param.\r\n+     *\r\n+     * @param map\r\n+     */\r\n+    @Experimental(\"Experiment api for supporting Object transmission\")\r\n+    void setObjectAttachments(Map<String, Object> map);\r\n+\r\n+    /**\r\n+     * get attachment by key.\r\n+     *\r\n+     * @return attachment value.\r\n+     */\r\n+    String getAttachment(String key);\r\n+\r\n+    /**\r\n+     * get attachment by key.\r\n+     *\r\n+     * @return attachment value.\r\n+     */\r\n+    @Experimental(\"Experiment api for supporting Object transmission\")\r\n+    Object getObjectAttachment(String key);\r\n+\r\n+    /**\r\n+     * get attachment by key with default value.\r\n+     *\r\n+     * @return attachment value.\r\n+     */\r\n+    String getAttachment(String key, String defaultValue);\r\n+\r\n+    /**\r\n+     * get attachment by key with default value.\r\n+     *\r\n+     * @return attachment value.\r\n+     */\r\n+    @Experimental(\"Experiment api for supporting Object transmission\")\r\n+    Object getObjectAttachment(String key, Object defaultValue);\r\n+\r\n+    void setAttachment(String key, String value);\r\n+\r\n+    @Experimental(\"Experiment api for supporting Object transmission\")\r\n+    void setAttachment(String key, Object value);\r\n+\r\n+    @Experimental(\"Experiment api for supporting Object transmission\")\r\n+    void setObjectAttachment(String key, Object value);\r\n+\r\n+    /**\r\n+     * Add a callback which can be triggered when the RPC call finishes.\r\n+     * <p>\r\n+     * Just as the method name implies, this method will guarantee the callback being triggered under the same context as when the call was started,\r\n+     * see implementation in {@link Result#whenCompleteWithContext(BiConsumer)}\r\n+     *\r\n+     * @param fn\r\n+     * @return\r\n+     */\r\n+    Result whenCompleteWithContext(BiConsumer<Result, Throwable> fn);\r\n+\r\n+    <U> CompletableFuture<U> thenApply(Function<Result, ? extends U> fn);\r\n+\r\n+    Result get() throws InterruptedException, ExecutionException;\r\n+\r\n+    Result get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException;\r\n }\n"}, {"source1": "org/apache/dubbo/rpc/RpcContext.java", "source2": "org/apache/dubbo/rpc/RpcContext.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,859 +1,859 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc;\n-\n-import org.apache.dubbo.common.Experimental;\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.threadlocal.InternalThreadLocal;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import java.net.InetSocketAddress;\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.HashMap;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.concurrent.Callable;\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.Future;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE;\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;\n-import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.rpc.Constants.ASYNC_KEY;\n-import static org.apache.dubbo.rpc.Constants.RETURN_KEY;\n-\n-\n-/**\n- * Thread local context. (API, ThreadLocal, ThreadSafe)\n- * <p>\n- * Note: RpcContext is a temporary state holder. States in RpcContext changes every time when request is sent or received.\n- * For example: A invokes B, then B invokes C. On service B, RpcContext saves invocation info from A to B before B\n- * starts invoking C, and saves invocation info from B to C after B invokes C.\n- *\n- * @export\n- * @see org.apache.dubbo.rpc.filter.ContextFilter\n- */\n-public class RpcContext {\n-\n-    /**\n-     * use internal thread local to improve performance\n-     */\n-    // FIXME REQUEST_CONTEXT\n-    private static final InternalThreadLocal<RpcContext> LOCAL = new InternalThreadLocal<RpcContext>() {\n-        @Override\n-        protected RpcContext initialValue() {\n-            return new RpcContext();\n-        }\n-    };\n-\n-    // FIXME RESPONSE_CONTEXT\n-    private static final InternalThreadLocal<RpcContext> SERVER_LOCAL = new InternalThreadLocal<RpcContext>() {\n-        @Override\n-        protected RpcContext initialValue() {\n-            return new RpcContext();\n-        }\n-    };\n-\n-    protected final Map<String, Object> attachments = new HashMap<>();\n-    private final Map<String, Object> values = new HashMap<String, Object>();\n-\n-    private List<URL> urls;\n-\n-    private URL url;\n-\n-    private String methodName;\n-\n-    private Class<?>[] parameterTypes;\n-\n-    private Object[] arguments;\n-\n-    private InetSocketAddress localAddress;\n-\n-    private InetSocketAddress remoteAddress;\n-\n-    private String remoteApplicationName;\n-\n-    @Deprecated\n-    private List<Invoker<?>> invokers;\n-    @Deprecated\n-    private Invoker<?> invoker;\n-    @Deprecated\n-    private Invocation invocation;\n-\n-    // now we don't use the 'values' map to hold these objects\n-    // we want these objects to be as generic as possible\n-    private Object request;\n-    private Object response;\n-    private AsyncContext asyncContext;\n-\n-    private boolean remove = true;\n-\n-\n-    protected RpcContext() {\n-    }\n-\n-    /**\n-     * get server side context.\n-     *\n-     * @return server context\n-     */\n-    public static RpcContext getServerContext() {\n-        return SERVER_LOCAL.get();\n-    }\n-\n-    public static void restoreServerContext(RpcContext oldServerContext) {\n-        SERVER_LOCAL.set(oldServerContext);\n-    }\n-\n-    /**\n-     * remove server side context.\n-     *\n-     * @see org.apache.dubbo.rpc.filter.ContextFilter\n-     */\n-    public static void removeServerContext() {\n-        SERVER_LOCAL.remove();\n-    }\n-\n-    /**\n-     * get context.\n-     *\n-     * @return context\n-     */\n-    public static RpcContext getContext() {\n-        return LOCAL.get();\n-    }\n-\n-    public boolean canRemove() {\n-        return remove;\n-    }\n-\n-    public void clearAfterEachInvoke(boolean remove) {\n-        this.remove = remove;\n-    }\n-\n-    public static void restoreContext(RpcContext oldContext) {\n-        LOCAL.set(oldContext);\n-    }\n-\n-    /**\n-     * remove context.\n-     *\n-     * @see org.apache.dubbo.rpc.filter.ContextFilter\n-     */\n-    public static void removeContext() {\n-        removeContext(false);\n-    }\n-\n-    /**\n-     * customized for internal use.\n-     *\n-     * @param checkCanRemove if need check before remove\n-     */\n-    public static void removeContext(boolean checkCanRemove) {\n-        if (LOCAL.get().canRemove()) {\n-            LOCAL.remove();\n-        }\n-    }\n-\n-    /**\n-     * Get the request object of the underlying RPC protocol, e.g. HttpServletRequest\n-     *\n-     * @return null if the underlying protocol doesn't provide support for getting request\n-     */\n-    public Object getRequest() {\n-        return request;\n-    }\n-\n-    public void setRequest(Object request) {\n-        this.request = request;\n-    }\n-\n-    /**\n-     * Get the request object of the underlying RPC protocol, e.g. HttpServletRequest\n-     *\n-     * @return null if the underlying protocol doesn't provide support for getting request or the request is not of the specified type\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> T getRequest(Class<T> clazz) {\n-        return (request != null && clazz.isAssignableFrom(request.getClass())) ? (T) request : null;\n-    }\n-\n-    /**\n-     * Get the response object of the underlying RPC protocol, e.g. HttpServletResponse\n-     *\n-     * @return null if the underlying protocol doesn't provide support for getting response\n-     */\n-    public Object getResponse() {\n-        return response;\n-    }\n-\n-    public void setResponse(Object response) {\n-        this.response = response;\n-    }\n-\n-    /**\n-     * Get the response object of the underlying RPC protocol, e.g. HttpServletResponse\n-     *\n-     * @return null if the underlying protocol doesn't provide support for getting response or the response is not of the specified type\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> T getResponse(Class<T> clazz) {\n-        return (response != null && clazz.isAssignableFrom(response.getClass())) ? (T) response : null;\n-    }\n-\n-    /**\n-     * is provider side.\n-     *\n-     * @return provider side.\n-     */\n-    public boolean isProviderSide() {\n-        return !isConsumerSide();\n-    }\n-\n-    /**\n-     * is consumer side.\n-     *\n-     * @return consumer side.\n-     */\n-    public boolean isConsumerSide() {\n-        return getUrl().getParameter(SIDE_KEY, PROVIDER_SIDE).equals(CONSUMER_SIDE);\n-    }\n-\n-    /**\n-     * get CompletableFuture.\n-     *\n-     * @param <T>\n-     * @return future\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> CompletableFuture<T> getCompletableFuture() {\n-        return FutureContext.getContext().getCompletableFuture();\n-    }\n-\n-    /**\n-     * get future.\n-     *\n-     * @param <T>\n-     * @return future\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> Future<T> getFuture() {\n-        return FutureContext.getContext().getCompletableFuture();\n-    }\n-\n-    /**\n-     * set future.\n-     *\n-     * @param future\n-     */\n-    public void setFuture(CompletableFuture<?> future) {\n-        FutureContext.getContext().setFuture(future);\n-    }\n-\n-    public List<URL> getUrls() {\n-        return urls == null && url != null ? (List<URL>) Arrays.asList(url) : urls;\n-    }\n-\n-    public void setUrls(List<URL> urls) {\n-        this.urls = urls;\n-    }\n-\n-    public URL getUrl() {\n-        return url;\n-    }\n-\n-    public void setUrl(URL url) {\n-        this.url = url;\n-    }\n-\n-    /**\n-     * get method name.\n-     *\n-     * @return method name.\n-     */\n-    public String getMethodName() {\n-        return methodName;\n-    }\n-\n-    public void setMethodName(String methodName) {\n-        this.methodName = methodName;\n-    }\n-\n-    /**\n-     * get parameter types.\n-     *\n-     * @serial\n-     */\n-    public Class<?>[] getParameterTypes() {\n-        return parameterTypes;\n-    }\n-\n-    public void setParameterTypes(Class<?>[] parameterTypes) {\n-        this.parameterTypes = parameterTypes;\n-    }\n-\n-    /**\n-     * get arguments.\n-     *\n-     * @return arguments.\n-     */\n-    public Object[] getArguments() {\n-        return arguments;\n-    }\n-\n-    public void setArguments(Object[] arguments) {\n-        this.arguments = arguments;\n-    }\n-\n-    /**\n-     * set local address.\n-     *\n-     * @param host\n-     * @param port\n-     * @return context\n-     */\n-    public RpcContext setLocalAddress(String host, int port) {\n-        if (port < 0) {\n-            port = 0;\n-        }\n-        this.localAddress = InetSocketAddress.createUnresolved(host, port);\n-        return this;\n-    }\n-\n-    /**\n-     * get local address.\n-     *\n-     * @return local address\n-     */\n-    public InetSocketAddress getLocalAddress() {\n-        return localAddress;\n-    }\n-\n-    /**\n-     * set local address.\n-     *\n-     * @param address\n-     * @return context\n-     */\n-    public RpcContext setLocalAddress(InetSocketAddress address) {\n-        this.localAddress = address;\n-        return this;\n-    }\n-\n-    public String getLocalAddressString() {\n-        return getLocalHost() + \":\" + getLocalPort();\n-    }\n-\n-    /**\n-     * get local host name.\n-     *\n-     * @return local host name\n-     */\n-    public String getLocalHostName() {\n-        String host = localAddress == null ? null : localAddress.getHostName();\n-        if (StringUtils.isEmpty(host)) {\n-            return getLocalHost();\n-        }\n-        return host;\n-    }\n-\n-    /**\n-     * set remote address.\n-     *\n-     * @param host\n-     * @param port\n-     * @return context\n-     */\n-    public RpcContext setRemoteAddress(String host, int port) {\n-        if (port < 0) {\n-            port = 0;\n-        }\n-        this.remoteAddress = InetSocketAddress.createUnresolved(host, port);\n-        return this;\n-    }\n-\n-    /**\n-     * get remote address.\n-     *\n-     * @return remote address\n-     */\n-    public InetSocketAddress getRemoteAddress() {\n-        return remoteAddress;\n-    }\n-\n-    /**\n-     * set remote address.\n-     *\n-     * @param address\n-     * @return context\n-     */\n-    public RpcContext setRemoteAddress(InetSocketAddress address) {\n-        this.remoteAddress = address;\n-        return this;\n-    }\n-\n-    public String getRemoteApplicationName() {\n-        return remoteApplicationName;\n-    }\n-\n-    public RpcContext setRemoteApplicationName(String remoteApplicationName) {\n-        this.remoteApplicationName = remoteApplicationName;\n-        return this;\n-    }\n-\n-    /**\n-     * get remote address string.\n-     *\n-     * @return remote address string.\n-     */\n-    public String getRemoteAddressString() {\n-        return getRemoteHost() + \":\" + getRemotePort();\n-    }\n-\n-    /**\n-     * get remote host name.\n-     *\n-     * @return remote host name\n-     */\n-    public String getRemoteHostName() {\n-        return remoteAddress == null ? null : remoteAddress.getHostName();\n-    }\n-\n-    /**\n-     * get local host.\n-     *\n-     * @return local host\n-     */\n-    public String getLocalHost() {\n-        String host = localAddress == null ? null :\n-                localAddress.getAddress() == null ? localAddress.getHostName()\n-                        : NetUtils.filterLocalHost(localAddress.getAddress().getHostAddress());\n-        if (host == null || host.length() == 0) {\n-            return NetUtils.getLocalHost();\n-        }\n-        return host;\n-    }\n-\n-    /**\n-     * get local port.\n-     *\n-     * @return port\n-     */\n-    public int getLocalPort() {\n-        return localAddress == null ? 0 : localAddress.getPort();\n-    }\n-\n-    /**\n-     * get remote host.\n-     *\n-     * @return remote host\n-     */\n-    public String getRemoteHost() {\n-        return remoteAddress == null ? null :\n-                remoteAddress.getAddress() == null ? remoteAddress.getHostName()\n-                        : NetUtils.filterLocalHost(remoteAddress.getAddress().getHostAddress());\n-    }\n-\n-    /**\n-     * get remote port.\n-     *\n-     * @return remote port\n-     */\n-    public int getRemotePort() {\n-        return remoteAddress == null ? 0 : remoteAddress.getPort();\n-    }\n-\n-    /**\n-     * also see {@link #getObjectAttachment(String)}.\n-     *\n-     * @param key\n-     * @return attachment\n-     */\n-    public String getAttachment(String key) {\n-        Object value = attachments.get(key);\n-        if (value instanceof String) {\n-            return (String) value;\n-        }\n-        return null; // or JSON.toString(value);\n-    }\n-\n-    /**\n-     * get attachment.\n-     *\n-     * @param key\n-     * @return attachment\n-     */\n-    @Experimental(\"Experiment api for supporting Object transmission\")\n-    public Object getObjectAttachment(String key) {\n-        return attachments.get(key);\n-    }\n-\n-    /**\n-     * set attachment.\n-     *\n-     * @param key\n-     * @param value\n-     * @return context\n-     */\n-    public RpcContext setAttachment(String key, String value) {\n-        return setObjectAttachment(key, (Object) value);\n-    }\n-\n-    public RpcContext setAttachment(String key, Object value) {\n-        return setObjectAttachment(key, value);\n-    }\n-\n-    @Experimental(\"Experiment api for supporting Object transmission\")\n-    public RpcContext setObjectAttachment(String key, Object value) {\n-        if (value == null) {\n-            attachments.remove(key);\n-        } else {\n-            attachments.put(key, value);\n-        }\n-        return this;\n-    }\n-\n-    /**\n-     * remove attachment.\n-     *\n-     * @param key\n-     * @return context\n-     */\n-    public RpcContext removeAttachment(String key) {\n-        attachments.remove(key);\n-        return this;\n-    }\n-\n-    /**\n-     * get attachments.\n-     *\n-     * @return attachments\n-     */\n-    @Deprecated\n-    public Map<String, String> getAttachments() {\n-        return new AttachmentsAdapter.ObjectToStringMap(this.getObjectAttachments());\n-    }\n-\n-    /**\n-     * get attachments.\n-     *\n-     * @return attachments\n-     */\n-    @Experimental(\"Experiment api for supporting Object transmission\")\n-    public Map<String, Object> getObjectAttachments() {\n-        return attachments;\n-    }\n-\n-    /**\n-     * set attachments\n-     *\n-     * @param attachment\n-     * @return context\n-     */\n-    public RpcContext setAttachments(Map<String, String> attachment) {\n-        this.attachments.clear();\n-        if (attachment != null && attachment.size() > 0) {\n-            this.attachments.putAll(attachment);\n-        }\n-        return this;\n-    }\n-\n-    /**\n-     * set attachments\n-     *\n-     * @param attachment\n-     * @return context\n-     */\n-    @Experimental(\"Experiment api for supporting Object transmission\")\n-    public RpcContext setObjectAttachments(Map<String, Object> attachment) {\n-        this.attachments.clear();\n-        if (attachment != null && attachment.size() > 0) {\n-            this.attachments.putAll(attachment);\n-        }\n-        return this;\n-    }\n-\n-    public void clearAttachments() {\n-        this.attachments.clear();\n-    }\n-\n-    /**\n-     * get values.\n-     *\n-     * @return values\n-     */\n-    public Map<String, Object> get() {\n-        return values;\n-    }\n-\n-    /**\n-     * set value.\n-     *\n-     * @param key\n-     * @param value\n-     * @return context\n-     */\n-    public RpcContext set(String key, Object value) {\n-        if (value == null) {\n-            values.remove(key);\n-        } else {\n-            values.put(key, value);\n-        }\n-        return this;\n-    }\n-\n-    /**\n-     * remove value.\n-     *\n-     * @param key\n-     * @return value\n-     */\n-    public RpcContext remove(String key) {\n-        values.remove(key);\n-        return this;\n-    }\n-\n-    /**\n-     * get value.\n-     *\n-     * @param key\n-     * @return value\n-     */\n-    public Object get(String key) {\n-        return values.get(key);\n-    }\n-\n-    /**\n-     * @deprecated Replace to isProviderSide()\n-     */\n-    @Deprecated\n-    public boolean isServerSide() {\n-        return isProviderSide();\n-    }\n-\n-    /**\n-     * @deprecated Replace to isConsumerSide()\n-     */\n-    @Deprecated\n-    public boolean isClientSide() {\n-        return isConsumerSide();\n-    }\n-\n-    /**\n-     * @deprecated Replace to getUrls()\n-     */\n-    @Deprecated\n-    @SuppressWarnings({\"unchecked\", \"rawtypes\"})\n-    public List<Invoker<?>> getInvokers() {\n-        return invokers == null && invoker != null ? (List) Arrays.asList(invoker) : invokers;\n-    }\n-\n-    public RpcContext setInvokers(List<Invoker<?>> invokers) {\n-        this.invokers = invokers;\n-        if (CollectionUtils.isNotEmpty(invokers)) {\n-            List<URL> urls = new ArrayList<URL>(invokers.size());\n-            for (Invoker<?> invoker : invokers) {\n-                urls.add(invoker.getUrl());\n-            }\n-            setUrls(urls);\n-        }\n-        return this;\n-    }\n-\n-    /**\n-     * @deprecated Replace to getUrl()\n-     */\n-    @Deprecated\n-    public Invoker<?> getInvoker() {\n-        return invoker;\n-    }\n-\n-    public RpcContext setInvoker(Invoker<?> invoker) {\n-        this.invoker = invoker;\n-        if (invoker != null) {\n-            setUrl(invoker.getUrl());\n-        }\n-        return this;\n-    }\n-\n-    /**\n-     * @deprecated Replace to getMethodName(), getParameterTypes(), getArguments()\n-     */\n-    @Deprecated\n-    public Invocation getInvocation() {\n-        return invocation;\n-    }\n-\n-    public RpcContext setInvocation(Invocation invocation) {\n-        this.invocation = invocation;\n-        if (invocation != null) {\n-            setMethodName(invocation.getMethodName());\n-            setParameterTypes(invocation.getParameterTypes());\n-            setArguments(invocation.getArguments());\n-        }\n-        return this;\n-    }\n-\n-    /**\n-     * Async invocation. Timeout will be handled even if <code>Future.get()</code> is not called.\n-     *\n-     * @param callable\n-     * @return get the return result from <code>future.get()</code>\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> CompletableFuture<T> asyncCall(Callable<T> callable) {\n-        try {\n-            try {\n-                setAttachment(ASYNC_KEY, Boolean.TRUE.toString());\n-                final T o = callable.call();\n-                //local invoke will return directly\n-                if (o != null) {\n-                    if (o instanceof CompletableFuture) {\n-                        return (CompletableFuture<T>) o;\n-                    }\n-                    return CompletableFuture.completedFuture(o);\n-                } else {\n-                    // The service has a normal sync method signature, should get future from RpcContext.\n-                }\n-            } catch (Exception e) {\n-                throw new RpcException(e);\n-            } finally {\n-                removeAttachment(ASYNC_KEY);\n-            }\n-        } catch (final RpcException e) {\n-            CompletableFuture<T> exceptionFuture = new CompletableFuture<>();\n-            exceptionFuture.completeExceptionally(e);\n-            return exceptionFuture;\n-        }\n-        return ((CompletableFuture<T>) getContext().getFuture());\n-    }\n-\n-    /**\n-     * one way async call, send request only, and result is not required\n-     *\n-     * @param runnable\n-     */\n-    public void asyncCall(Runnable runnable) {\n-        try {\n-            setAttachment(RETURN_KEY, Boolean.FALSE.toString());\n-            runnable.run();\n-        } catch (Throwable e) {\n-            // FIXME should put exception in future?\n-            throw new RpcException(\"oneway call error .\" + e.getMessage(), e);\n-        } finally {\n-            removeAttachment(RETURN_KEY);\n-        }\n-    }\n-\n-    /**\n-     * @return\n-     * @throws IllegalStateException\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    public static AsyncContext startAsync() throws IllegalStateException {\n-        RpcContext currentContext = getContext();\n-        if (currentContext.asyncContext == null) {\n-            currentContext.asyncContext = new AsyncContextImpl();\n-        }\n-        currentContext.asyncContext.start();\n-        return currentContext.asyncContext;\n-    }\n-\n-    protected void setAsyncContext(AsyncContext asyncContext) {\n-        this.asyncContext = asyncContext;\n-    }\n-\n-    public boolean isAsyncStarted() {\n-        if (this.asyncContext == null) {\n-            return false;\n-        }\n-        return asyncContext.isAsyncStarted();\n-    }\n-\n-    public boolean stopAsync() {\n-        return asyncContext.stop();\n-    }\n-\n-    public AsyncContext getAsyncContext() {\n-        return asyncContext;\n-    }\n-\n-    // RPC service context updated before each service call.\n-    private URL consumerUrl;\n-\n-    public String getGroup() {\n-        if (consumerUrl == null) {\n-            return null;\n-        }\n-        return consumerUrl.getParameter(GROUP_KEY);\n-    }\n-\n-    public String getVersion() {\n-        if (consumerUrl == null) {\n-            return null;\n-        }\n-        return consumerUrl.getParameter(VERSION_KEY);\n-    }\n-\n-    public String getInterfaceName() {\n-        if (consumerUrl == null) {\n-            return null;\n-        }\n-        return consumerUrl.getServiceInterface();\n-    }\n-\n-    public String getProtocol() {\n-        if (consumerUrl == null) {\n-            return null;\n-        }\n-        return consumerUrl.getParameter(PROTOCOL_KEY, DUBBO);\n-    }\n-\n-    public String getServiceKey() {\n-        if (consumerUrl == null) {\n-            return null;\n-        }\n-        return consumerUrl.getServiceKey();\n-    }\n-\n-    public String getProtocolServiceKey() {\n-        if (consumerUrl == null) {\n-            return null;\n-        }\n-        return consumerUrl.getProtocolServiceKey();\n-    }\n-\n-    public URL getConsumerUrl() {\n-        return consumerUrl;\n-    }\n-\n-    public void setConsumerUrl(URL consumerUrl) {\n-        this.consumerUrl = consumerUrl;\n-    }\n-\n-    public static void setRpcContext(URL url) {\n-        RpcContext rpcContext = RpcContext.getContext();\n-        rpcContext.setConsumerUrl(url);\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc;\r\n+\r\n+import org.apache.dubbo.common.Experimental;\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.threadlocal.InternalThreadLocal;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.HashMap;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.concurrent.Callable;\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.Future;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.ASYNC_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.RETURN_KEY;\r\n+\r\n+\r\n+/**\r\n+ * Thread local context. (API, ThreadLocal, ThreadSafe)\r\n+ * <p>\r\n+ * Note: RpcContext is a temporary state holder. States in RpcContext changes every time when request is sent or received.\r\n+ * For example: A invokes B, then B invokes C. On service B, RpcContext saves invocation info from A to B before B\r\n+ * starts invoking C, and saves invocation info from B to C after B invokes C.\r\n+ *\r\n+ * @export\r\n+ * @see org.apache.dubbo.rpc.filter.ContextFilter\r\n+ */\r\n+public class RpcContext {\r\n+\r\n+    /**\r\n+     * use internal thread local to improve performance\r\n+     */\r\n+    // FIXME REQUEST_CONTEXT\r\n+    private static final InternalThreadLocal<RpcContext> LOCAL = new InternalThreadLocal<RpcContext>() {\r\n+        @Override\r\n+        protected RpcContext initialValue() {\r\n+            return new RpcContext();\r\n+        }\r\n+    };\r\n+\r\n+    // FIXME RESPONSE_CONTEXT\r\n+    private static final InternalThreadLocal<RpcContext> SERVER_LOCAL = new InternalThreadLocal<RpcContext>() {\r\n+        @Override\r\n+        protected RpcContext initialValue() {\r\n+            return new RpcContext();\r\n+        }\r\n+    };\r\n+\r\n+    protected final Map<String, Object> attachments = new HashMap<>();\r\n+    private final Map<String, Object> values = new HashMap<String, Object>();\r\n+\r\n+    private List<URL> urls;\r\n+\r\n+    private URL url;\r\n+\r\n+    private String methodName;\r\n+\r\n+    private Class<?>[] parameterTypes;\r\n+\r\n+    private Object[] arguments;\r\n+\r\n+    private InetSocketAddress localAddress;\r\n+\r\n+    private InetSocketAddress remoteAddress;\r\n+\r\n+    private String remoteApplicationName;\r\n+\r\n+    @Deprecated\r\n+    private List<Invoker<?>> invokers;\r\n+    @Deprecated\r\n+    private Invoker<?> invoker;\r\n+    @Deprecated\r\n+    private Invocation invocation;\r\n+\r\n+    // now we don't use the 'values' map to hold these objects\r\n+    // we want these objects to be as generic as possible\r\n+    private Object request;\r\n+    private Object response;\r\n+    private AsyncContext asyncContext;\r\n+\r\n+    private boolean remove = true;\r\n+\r\n+\r\n+    protected RpcContext() {\r\n+    }\r\n+\r\n+    /**\r\n+     * get server side context.\r\n+     *\r\n+     * @return server context\r\n+     */\r\n+    public static RpcContext getServerContext() {\r\n+        return SERVER_LOCAL.get();\r\n+    }\r\n+\r\n+    public static void restoreServerContext(RpcContext oldServerContext) {\r\n+        SERVER_LOCAL.set(oldServerContext);\r\n+    }\r\n+\r\n+    /**\r\n+     * remove server side context.\r\n+     *\r\n+     * @see org.apache.dubbo.rpc.filter.ContextFilter\r\n+     */\r\n+    public static void removeServerContext() {\r\n+        SERVER_LOCAL.remove();\r\n+    }\r\n+\r\n+    /**\r\n+     * get context.\r\n+     *\r\n+     * @return context\r\n+     */\r\n+    public static RpcContext getContext() {\r\n+        return LOCAL.get();\r\n+    }\r\n+\r\n+    public boolean canRemove() {\r\n+        return remove;\r\n+    }\r\n+\r\n+    public void clearAfterEachInvoke(boolean remove) {\r\n+        this.remove = remove;\r\n+    }\r\n+\r\n+    public static void restoreContext(RpcContext oldContext) {\r\n+        LOCAL.set(oldContext);\r\n+    }\r\n+\r\n+    /**\r\n+     * remove context.\r\n+     *\r\n+     * @see org.apache.dubbo.rpc.filter.ContextFilter\r\n+     */\r\n+    public static void removeContext() {\r\n+        removeContext(false);\r\n+    }\r\n+\r\n+    /**\r\n+     * customized for internal use.\r\n+     *\r\n+     * @param checkCanRemove if need check before remove\r\n+     */\r\n+    public static void removeContext(boolean checkCanRemove) {\r\n+        if (LOCAL.get().canRemove()) {\r\n+            LOCAL.remove();\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the request object of the underlying RPC protocol, e.g. HttpServletRequest\r\n+     *\r\n+     * @return null if the underlying protocol doesn't provide support for getting request\r\n+     */\r\n+    public Object getRequest() {\r\n+        return request;\r\n+    }\r\n+\r\n+    public void setRequest(Object request) {\r\n+        this.request = request;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the request object of the underlying RPC protocol, e.g. HttpServletRequest\r\n+     *\r\n+     * @return null if the underlying protocol doesn't provide support for getting request or the request is not of the specified type\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> T getRequest(Class<T> clazz) {\r\n+        return (request != null && clazz.isAssignableFrom(request.getClass())) ? (T) request : null;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the response object of the underlying RPC protocol, e.g. HttpServletResponse\r\n+     *\r\n+     * @return null if the underlying protocol doesn't provide support for getting response\r\n+     */\r\n+    public Object getResponse() {\r\n+        return response;\r\n+    }\r\n+\r\n+    public void setResponse(Object response) {\r\n+        this.response = response;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the response object of the underlying RPC protocol, e.g. HttpServletResponse\r\n+     *\r\n+     * @return null if the underlying protocol doesn't provide support for getting response or the response is not of the specified type\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> T getResponse(Class<T> clazz) {\r\n+        return (response != null && clazz.isAssignableFrom(response.getClass())) ? (T) response : null;\r\n+    }\r\n+\r\n+    /**\r\n+     * is provider side.\r\n+     *\r\n+     * @return provider side.\r\n+     */\r\n+    public boolean isProviderSide() {\r\n+        return !isConsumerSide();\r\n+    }\r\n+\r\n+    /**\r\n+     * is consumer side.\r\n+     *\r\n+     * @return consumer side.\r\n+     */\r\n+    public boolean isConsumerSide() {\r\n+        return getUrl().getParameter(SIDE_KEY, PROVIDER_SIDE).equals(CONSUMER_SIDE);\r\n+    }\r\n+\r\n+    /**\r\n+     * get CompletableFuture.\r\n+     *\r\n+     * @param <T>\r\n+     * @return future\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> CompletableFuture<T> getCompletableFuture() {\r\n+        return FutureContext.getContext().getCompletableFuture();\r\n+    }\r\n+\r\n+    /**\r\n+     * get future.\r\n+     *\r\n+     * @param <T>\r\n+     * @return future\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> Future<T> getFuture() {\r\n+        return FutureContext.getContext().getCompletableFuture();\r\n+    }\r\n+\r\n+    /**\r\n+     * set future.\r\n+     *\r\n+     * @param future\r\n+     */\r\n+    public void setFuture(CompletableFuture<?> future) {\r\n+        FutureContext.getContext().setFuture(future);\r\n+    }\r\n+\r\n+    public List<URL> getUrls() {\r\n+        return urls == null && url != null ? (List<URL>) Arrays.asList(url) : urls;\r\n+    }\r\n+\r\n+    public void setUrls(List<URL> urls) {\r\n+        this.urls = urls;\r\n+    }\r\n+\r\n+    public URL getUrl() {\r\n+        return url;\r\n+    }\r\n+\r\n+    public void setUrl(URL url) {\r\n+        this.url = url;\r\n+    }\r\n+\r\n+    /**\r\n+     * get method name.\r\n+     *\r\n+     * @return method name.\r\n+     */\r\n+    public String getMethodName() {\r\n+        return methodName;\r\n+    }\r\n+\r\n+    public void setMethodName(String methodName) {\r\n+        this.methodName = methodName;\r\n+    }\r\n+\r\n+    /**\r\n+     * get parameter types.\r\n+     *\r\n+     * @serial\r\n+     */\r\n+    public Class<?>[] getParameterTypes() {\r\n+        return parameterTypes;\r\n+    }\r\n+\r\n+    public void setParameterTypes(Class<?>[] parameterTypes) {\r\n+        this.parameterTypes = parameterTypes;\r\n+    }\r\n+\r\n+    /**\r\n+     * get arguments.\r\n+     *\r\n+     * @return arguments.\r\n+     */\r\n+    public Object[] getArguments() {\r\n+        return arguments;\r\n+    }\r\n+\r\n+    public void setArguments(Object[] arguments) {\r\n+        this.arguments = arguments;\r\n+    }\r\n+\r\n+    /**\r\n+     * set local address.\r\n+     *\r\n+     * @param host\r\n+     * @param port\r\n+     * @return context\r\n+     */\r\n+    public RpcContext setLocalAddress(String host, int port) {\r\n+        if (port < 0) {\r\n+            port = 0;\r\n+        }\r\n+        this.localAddress = InetSocketAddress.createUnresolved(host, port);\r\n+        return this;\r\n+    }\r\n+\r\n+    /**\r\n+     * get local address.\r\n+     *\r\n+     * @return local address\r\n+     */\r\n+    public InetSocketAddress getLocalAddress() {\r\n+        return localAddress;\r\n+    }\r\n+\r\n+    /**\r\n+     * set local address.\r\n+     *\r\n+     * @param address\r\n+     * @return context\r\n+     */\r\n+    public RpcContext setLocalAddress(InetSocketAddress address) {\r\n+        this.localAddress = address;\r\n+        return this;\r\n+    }\r\n+\r\n+    public String getLocalAddressString() {\r\n+        return getLocalHost() + \":\" + getLocalPort();\r\n+    }\r\n+\r\n+    /**\r\n+     * get local host name.\r\n+     *\r\n+     * @return local host name\r\n+     */\r\n+    public String getLocalHostName() {\r\n+        String host = localAddress == null ? null : localAddress.getHostName();\r\n+        if (StringUtils.isEmpty(host)) {\r\n+            return getLocalHost();\r\n+        }\r\n+        return host;\r\n+    }\r\n+\r\n+    /**\r\n+     * set remote address.\r\n+     *\r\n+     * @param host\r\n+     * @param port\r\n+     * @return context\r\n+     */\r\n+    public RpcContext setRemoteAddress(String host, int port) {\r\n+        if (port < 0) {\r\n+            port = 0;\r\n+        }\r\n+        this.remoteAddress = InetSocketAddress.createUnresolved(host, port);\r\n+        return this;\r\n+    }\r\n+\r\n+    /**\r\n+     * get remote address.\r\n+     *\r\n+     * @return remote address\r\n+     */\r\n+    public InetSocketAddress getRemoteAddress() {\r\n+        return remoteAddress;\r\n+    }\r\n+\r\n+    /**\r\n+     * set remote address.\r\n+     *\r\n+     * @param address\r\n+     * @return context\r\n+     */\r\n+    public RpcContext setRemoteAddress(InetSocketAddress address) {\r\n+        this.remoteAddress = address;\r\n+        return this;\r\n+    }\r\n+\r\n+    public String getRemoteApplicationName() {\r\n+        return remoteApplicationName;\r\n+    }\r\n+\r\n+    public RpcContext setRemoteApplicationName(String remoteApplicationName) {\r\n+        this.remoteApplicationName = remoteApplicationName;\r\n+        return this;\r\n+    }\r\n+\r\n+    /**\r\n+     * get remote address string.\r\n+     *\r\n+     * @return remote address string.\r\n+     */\r\n+    public String getRemoteAddressString() {\r\n+        return getRemoteHost() + \":\" + getRemotePort();\r\n+    }\r\n+\r\n+    /**\r\n+     * get remote host name.\r\n+     *\r\n+     * @return remote host name\r\n+     */\r\n+    public String getRemoteHostName() {\r\n+        return remoteAddress == null ? null : remoteAddress.getHostName();\r\n+    }\r\n+\r\n+    /**\r\n+     * get local host.\r\n+     *\r\n+     * @return local host\r\n+     */\r\n+    public String getLocalHost() {\r\n+        String host = localAddress == null ? null :\r\n+                localAddress.getAddress() == null ? localAddress.getHostName()\r\n+                        : NetUtils.filterLocalHost(localAddress.getAddress().getHostAddress());\r\n+        if (host == null || host.length() == 0) {\r\n+            return NetUtils.getLocalHost();\r\n+        }\r\n+        return host;\r\n+    }\r\n+\r\n+    /**\r\n+     * get local port.\r\n+     *\r\n+     * @return port\r\n+     */\r\n+    public int getLocalPort() {\r\n+        return localAddress == null ? 0 : localAddress.getPort();\r\n+    }\r\n+\r\n+    /**\r\n+     * get remote host.\r\n+     *\r\n+     * @return remote host\r\n+     */\r\n+    public String getRemoteHost() {\r\n+        return remoteAddress == null ? null :\r\n+                remoteAddress.getAddress() == null ? remoteAddress.getHostName()\r\n+                        : NetUtils.filterLocalHost(remoteAddress.getAddress().getHostAddress());\r\n+    }\r\n+\r\n+    /**\r\n+     * get remote port.\r\n+     *\r\n+     * @return remote port\r\n+     */\r\n+    public int getRemotePort() {\r\n+        return remoteAddress == null ? 0 : remoteAddress.getPort();\r\n+    }\r\n+\r\n+    /**\r\n+     * also see {@link #getObjectAttachment(String)}.\r\n+     *\r\n+     * @param key\r\n+     * @return attachment\r\n+     */\r\n+    public String getAttachment(String key) {\r\n+        Object value = attachments.get(key);\r\n+        if (value instanceof String) {\r\n+            return (String) value;\r\n+        }\r\n+        return null; // or JSON.toString(value);\r\n+    }\r\n+\r\n+    /**\r\n+     * get attachment.\r\n+     *\r\n+     * @param key\r\n+     * @return attachment\r\n+     */\r\n+    @Experimental(\"Experiment api for supporting Object transmission\")\r\n+    public Object getObjectAttachment(String key) {\r\n+        return attachments.get(key);\r\n+    }\r\n+\r\n+    /**\r\n+     * set attachment.\r\n+     *\r\n+     * @param key\r\n+     * @param value\r\n+     * @return context\r\n+     */\r\n+    public RpcContext setAttachment(String key, String value) {\r\n+        return setObjectAttachment(key, (Object) value);\r\n+    }\r\n+\r\n+    public RpcContext setAttachment(String key, Object value) {\r\n+        return setObjectAttachment(key, value);\r\n+    }\r\n+\r\n+    @Experimental(\"Experiment api for supporting Object transmission\")\r\n+    public RpcContext setObjectAttachment(String key, Object value) {\r\n+        if (value == null) {\r\n+            attachments.remove(key);\r\n+        } else {\r\n+            attachments.put(key, value);\r\n+        }\r\n+        return this;\r\n+    }\r\n+\r\n+    /**\r\n+     * remove attachment.\r\n+     *\r\n+     * @param key\r\n+     * @return context\r\n+     */\r\n+    public RpcContext removeAttachment(String key) {\r\n+        attachments.remove(key);\r\n+        return this;\r\n+    }\r\n+\r\n+    /**\r\n+     * get attachments.\r\n+     *\r\n+     * @return attachments\r\n+     */\r\n+    @Deprecated\r\n+    public Map<String, String> getAttachments() {\r\n+        return new AttachmentsAdapter.ObjectToStringMap(this.getObjectAttachments());\r\n+    }\r\n+\r\n+    /**\r\n+     * get attachments.\r\n+     *\r\n+     * @return attachments\r\n+     */\r\n+    @Experimental(\"Experiment api for supporting Object transmission\")\r\n+    public Map<String, Object> getObjectAttachments() {\r\n+        return attachments;\r\n+    }\r\n+\r\n+    /**\r\n+     * set attachments\r\n+     *\r\n+     * @param attachment\r\n+     * @return context\r\n+     */\r\n+    public RpcContext setAttachments(Map<String, String> attachment) {\r\n+        this.attachments.clear();\r\n+        if (attachment != null && attachment.size() > 0) {\r\n+            this.attachments.putAll(attachment);\r\n+        }\r\n+        return this;\r\n+    }\r\n+\r\n+    /**\r\n+     * set attachments\r\n+     *\r\n+     * @param attachment\r\n+     * @return context\r\n+     */\r\n+    @Experimental(\"Experiment api for supporting Object transmission\")\r\n+    public RpcContext setObjectAttachments(Map<String, Object> attachment) {\r\n+        this.attachments.clear();\r\n+        if (attachment != null && attachment.size() > 0) {\r\n+            this.attachments.putAll(attachment);\r\n+        }\r\n+        return this;\r\n+    }\r\n+\r\n+    public void clearAttachments() {\r\n+        this.attachments.clear();\r\n+    }\r\n+\r\n+    /**\r\n+     * get values.\r\n+     *\r\n+     * @return values\r\n+     */\r\n+    public Map<String, Object> get() {\r\n+        return values;\r\n+    }\r\n+\r\n+    /**\r\n+     * set value.\r\n+     *\r\n+     * @param key\r\n+     * @param value\r\n+     * @return context\r\n+     */\r\n+    public RpcContext set(String key, Object value) {\r\n+        if (value == null) {\r\n+            values.remove(key);\r\n+        } else {\r\n+            values.put(key, value);\r\n+        }\r\n+        return this;\r\n+    }\r\n+\r\n+    /**\r\n+     * remove value.\r\n+     *\r\n+     * @param key\r\n+     * @return value\r\n+     */\r\n+    public RpcContext remove(String key) {\r\n+        values.remove(key);\r\n+        return this;\r\n+    }\r\n+\r\n+    /**\r\n+     * get value.\r\n+     *\r\n+     * @param key\r\n+     * @return value\r\n+     */\r\n+    public Object get(String key) {\r\n+        return values.get(key);\r\n+    }\r\n+\r\n+    /**\r\n+     * @deprecated Replace to isProviderSide()\r\n+     */\r\n+    @Deprecated\r\n+    public boolean isServerSide() {\r\n+        return isProviderSide();\r\n+    }\r\n+\r\n+    /**\r\n+     * @deprecated Replace to isConsumerSide()\r\n+     */\r\n+    @Deprecated\r\n+    public boolean isClientSide() {\r\n+        return isConsumerSide();\r\n+    }\r\n+\r\n+    /**\r\n+     * @deprecated Replace to getUrls()\r\n+     */\r\n+    @Deprecated\r\n+    @SuppressWarnings({\"unchecked\", \"rawtypes\"})\r\n+    public List<Invoker<?>> getInvokers() {\r\n+        return invokers == null && invoker != null ? (List) Arrays.asList(invoker) : invokers;\r\n+    }\r\n+\r\n+    public RpcContext setInvokers(List<Invoker<?>> invokers) {\r\n+        this.invokers = invokers;\r\n+        if (CollectionUtils.isNotEmpty(invokers)) {\r\n+            List<URL> urls = new ArrayList<URL>(invokers.size());\r\n+            for (Invoker<?> invoker : invokers) {\r\n+                urls.add(invoker.getUrl());\r\n+            }\r\n+            setUrls(urls);\r\n+        }\r\n+        return this;\r\n+    }\r\n+\r\n+    /**\r\n+     * @deprecated Replace to getUrl()\r\n+     */\r\n+    @Deprecated\r\n+    public Invoker<?> getInvoker() {\r\n+        return invoker;\r\n+    }\r\n+\r\n+    public RpcContext setInvoker(Invoker<?> invoker) {\r\n+        this.invoker = invoker;\r\n+        if (invoker != null) {\r\n+            setUrl(invoker.getUrl());\r\n+        }\r\n+        return this;\r\n+    }\r\n+\r\n+    /**\r\n+     * @deprecated Replace to getMethodName(), getParameterTypes(), getArguments()\r\n+     */\r\n+    @Deprecated\r\n+    public Invocation getInvocation() {\r\n+        return invocation;\r\n+    }\r\n+\r\n+    public RpcContext setInvocation(Invocation invocation) {\r\n+        this.invocation = invocation;\r\n+        if (invocation != null) {\r\n+            setMethodName(invocation.getMethodName());\r\n+            setParameterTypes(invocation.getParameterTypes());\r\n+            setArguments(invocation.getArguments());\r\n+        }\r\n+        return this;\r\n+    }\r\n+\r\n+    /**\r\n+     * Async invocation. Timeout will be handled even if <code>Future.get()</code> is not called.\r\n+     *\r\n+     * @param callable\r\n+     * @return get the return result from <code>future.get()</code>\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> CompletableFuture<T> asyncCall(Callable<T> callable) {\r\n+        try {\r\n+            try {\r\n+                setAttachment(ASYNC_KEY, Boolean.TRUE.toString());\r\n+                final T o = callable.call();\r\n+                //local invoke will return directly\r\n+                if (o != null) {\r\n+                    if (o instanceof CompletableFuture) {\r\n+                        return (CompletableFuture<T>) o;\r\n+                    }\r\n+                    return CompletableFuture.completedFuture(o);\r\n+                } else {\r\n+                    // The service has a normal sync method signature, should get future from RpcContext.\r\n+                }\r\n+            } catch (Exception e) {\r\n+                throw new RpcException(e);\r\n+            } finally {\r\n+                removeAttachment(ASYNC_KEY);\r\n+            }\r\n+        } catch (final RpcException e) {\r\n+            CompletableFuture<T> exceptionFuture = new CompletableFuture<>();\r\n+            exceptionFuture.completeExceptionally(e);\r\n+            return exceptionFuture;\r\n+        }\r\n+        return ((CompletableFuture<T>) getContext().getFuture());\r\n+    }\r\n+\r\n+    /**\r\n+     * one way async call, send request only, and result is not required\r\n+     *\r\n+     * @param runnable\r\n+     */\r\n+    public void asyncCall(Runnable runnable) {\r\n+        try {\r\n+            setAttachment(RETURN_KEY, Boolean.FALSE.toString());\r\n+            runnable.run();\r\n+        } catch (Throwable e) {\r\n+            // FIXME should put exception in future?\r\n+            throw new RpcException(\"oneway call error .\" + e.getMessage(), e);\r\n+        } finally {\r\n+            removeAttachment(RETURN_KEY);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * @return\r\n+     * @throws IllegalStateException\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public static AsyncContext startAsync() throws IllegalStateException {\r\n+        RpcContext currentContext = getContext();\r\n+        if (currentContext.asyncContext == null) {\r\n+            currentContext.asyncContext = new AsyncContextImpl();\r\n+        }\r\n+        currentContext.asyncContext.start();\r\n+        return currentContext.asyncContext;\r\n+    }\r\n+\r\n+    protected void setAsyncContext(AsyncContext asyncContext) {\r\n+        this.asyncContext = asyncContext;\r\n+    }\r\n+\r\n+    public boolean isAsyncStarted() {\r\n+        if (this.asyncContext == null) {\r\n+            return false;\r\n+        }\r\n+        return asyncContext.isAsyncStarted();\r\n+    }\r\n+\r\n+    public boolean stopAsync() {\r\n+        return asyncContext.stop();\r\n+    }\r\n+\r\n+    public AsyncContext getAsyncContext() {\r\n+        return asyncContext;\r\n+    }\r\n+\r\n+    // RPC service context updated before each service call.\r\n+    private URL consumerUrl;\r\n+\r\n+    public String getGroup() {\r\n+        if (consumerUrl == null) {\r\n+            return null;\r\n+        }\r\n+        return consumerUrl.getParameter(GROUP_KEY);\r\n+    }\r\n+\r\n+    public String getVersion() {\r\n+        if (consumerUrl == null) {\r\n+            return null;\r\n+        }\r\n+        return consumerUrl.getParameter(VERSION_KEY);\r\n+    }\r\n+\r\n+    public String getInterfaceName() {\r\n+        if (consumerUrl == null) {\r\n+            return null;\r\n+        }\r\n+        return consumerUrl.getServiceInterface();\r\n+    }\r\n+\r\n+    public String getProtocol() {\r\n+        if (consumerUrl == null) {\r\n+            return null;\r\n+        }\r\n+        return consumerUrl.getParameter(PROTOCOL_KEY, DUBBO);\r\n+    }\r\n+\r\n+    public String getServiceKey() {\r\n+        if (consumerUrl == null) {\r\n+            return null;\r\n+        }\r\n+        return consumerUrl.getServiceKey();\r\n+    }\r\n+\r\n+    public String getProtocolServiceKey() {\r\n+        if (consumerUrl == null) {\r\n+            return null;\r\n+        }\r\n+        return consumerUrl.getProtocolServiceKey();\r\n+    }\r\n+\r\n+    public URL getConsumerUrl() {\r\n+        return consumerUrl;\r\n+    }\r\n+\r\n+    public void setConsumerUrl(URL consumerUrl) {\r\n+        this.consumerUrl = consumerUrl;\r\n+    }\r\n+\r\n+    public static void setRpcContext(URL url) {\r\n+        RpcContext rpcContext = RpcContext.getContext();\r\n+        rpcContext.setConsumerUrl(url);\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/rpc/RpcException.java", "source2": "org/apache/dubbo/rpc/RpcException.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,117 +1,117 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc;\n-\n-import javax.naming.LimitExceededException;\n-\n-/**\n- * RPC Exception. (API, Prototype, ThreadSafe)\n- *\n- * @serial Don't change the class name and properties.\n- * @export\n- * @see org.apache.dubbo.rpc.Invoker#invoke(Invocation)\n- * @since 1.0\n- */\n-public /**final**/ class RpcException extends RuntimeException {\n-\n-    public static final int UNKNOWN_EXCEPTION = 0;\n-    public static final int NETWORK_EXCEPTION = 1;\n-    public static final int TIMEOUT_EXCEPTION = 2;\n-    public static final int BIZ_EXCEPTION = 3;\n-    public static final int FORBIDDEN_EXCEPTION = 4;\n-    public static final int SERIALIZATION_EXCEPTION = 5;\n-    public static final int NO_INVOKER_AVAILABLE_AFTER_FILTER = 6;\n-    public static final int LIMIT_EXCEEDED_EXCEPTION = 7;\n-    public static final int TIMEOUT_TERMINATE = 8;\n-    private static final long serialVersionUID = 7815426752583648734L;\n-    /**\n-     * RpcException cannot be extended, use error code for exception type to keep compatibility\n-     */\n-    private int code;\n-\n-    public RpcException() {\n-        super();\n-    }\n-\n-    public RpcException(String message, Throwable cause) {\n-        super(message, cause);\n-    }\n-\n-    public RpcException(String message) {\n-        super(message);\n-    }\n-\n-    public RpcException(Throwable cause) {\n-        super(cause);\n-    }\n-\n-    public RpcException(int code) {\n-        super();\n-        this.code = code;\n-    }\n-\n-    public RpcException(int code, String message, Throwable cause) {\n-        super(message, cause);\n-        this.code = code;\n-    }\n-\n-    public RpcException(int code, String message) {\n-        super(message);\n-        this.code = code;\n-    }\n-\n-    public RpcException(int code, Throwable cause) {\n-        super(cause);\n-        this.code = code;\n-    }\n-\n-    public int getCode() {\n-        return code;\n-    }\n-\n-    public void setCode(int code) {\n-        this.code = code;\n-    }\n-\n-    public boolean isBiz() {\n-        return code == BIZ_EXCEPTION;\n-    }\n-\n-    public boolean isForbidden() {\n-        return code == FORBIDDEN_EXCEPTION;\n-    }\n-\n-    public boolean isTimeout() {\n-        return code == TIMEOUT_EXCEPTION;\n-    }\n-\n-    public boolean isNetwork() {\n-        return code == NETWORK_EXCEPTION;\n-    }\n-\n-    public boolean isSerialization() {\n-        return code == SERIALIZATION_EXCEPTION;\n-    }\n-\n-    public boolean isNoInvokerAvailableAfterFilter() {\n-        return code == NO_INVOKER_AVAILABLE_AFTER_FILTER;\n-    }\n-\n-    public boolean isLimitExceed() {\n-        return code == LIMIT_EXCEEDED_EXCEPTION || getCause() instanceof LimitExceededException;\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc;\r\n+\r\n+import javax.naming.LimitExceededException;\r\n+\r\n+/**\r\n+ * RPC Exception. (API, Prototype, ThreadSafe)\r\n+ *\r\n+ * @serial Don't change the class name and properties.\r\n+ * @export\r\n+ * @see org.apache.dubbo.rpc.Invoker#invoke(Invocation)\r\n+ * @since 1.0\r\n+ */\r\n+public /**final**/ class RpcException extends RuntimeException {\r\n+\r\n+    public static final int UNKNOWN_EXCEPTION = 0;\r\n+    public static final int NETWORK_EXCEPTION = 1;\r\n+    public static final int TIMEOUT_EXCEPTION = 2;\r\n+    public static final int BIZ_EXCEPTION = 3;\r\n+    public static final int FORBIDDEN_EXCEPTION = 4;\r\n+    public static final int SERIALIZATION_EXCEPTION = 5;\r\n+    public static final int NO_INVOKER_AVAILABLE_AFTER_FILTER = 6;\r\n+    public static final int LIMIT_EXCEEDED_EXCEPTION = 7;\r\n+    public static final int TIMEOUT_TERMINATE = 8;\r\n+    private static final long serialVersionUID = 7815426752583648734L;\r\n+    /**\r\n+     * RpcException cannot be extended, use error code for exception type to keep compatibility\r\n+     */\r\n+    private int code;\r\n+\r\n+    public RpcException() {\r\n+        super();\r\n+    }\r\n+\r\n+    public RpcException(String message, Throwable cause) {\r\n+        super(message, cause);\r\n+    }\r\n+\r\n+    public RpcException(String message) {\r\n+        super(message);\r\n+    }\r\n+\r\n+    public RpcException(Throwable cause) {\r\n+        super(cause);\r\n+    }\r\n+\r\n+    public RpcException(int code) {\r\n+        super();\r\n+        this.code = code;\r\n+    }\r\n+\r\n+    public RpcException(int code, String message, Throwable cause) {\r\n+        super(message, cause);\r\n+        this.code = code;\r\n+    }\r\n+\r\n+    public RpcException(int code, String message) {\r\n+        super(message);\r\n+        this.code = code;\r\n+    }\r\n+\r\n+    public RpcException(int code, Throwable cause) {\r\n+        super(cause);\r\n+        this.code = code;\r\n+    }\r\n+\r\n+    public int getCode() {\r\n+        return code;\r\n+    }\r\n+\r\n+    public void setCode(int code) {\r\n+        this.code = code;\r\n+    }\r\n+\r\n+    public boolean isBiz() {\r\n+        return code == BIZ_EXCEPTION;\r\n+    }\r\n+\r\n+    public boolean isForbidden() {\r\n+        return code == FORBIDDEN_EXCEPTION;\r\n+    }\r\n+\r\n+    public boolean isTimeout() {\r\n+        return code == TIMEOUT_EXCEPTION;\r\n+    }\r\n+\r\n+    public boolean isNetwork() {\r\n+        return code == NETWORK_EXCEPTION;\r\n+    }\r\n+\r\n+    public boolean isSerialization() {\r\n+        return code == SERIALIZATION_EXCEPTION;\r\n+    }\r\n+\r\n+    public boolean isNoInvokerAvailableAfterFilter() {\r\n+        return code == NO_INVOKER_AVAILABLE_AFTER_FILTER;\r\n+    }\r\n+\r\n+    public boolean isLimitExceed() {\r\n+        return code == LIMIT_EXCEEDED_EXCEPTION || getCause() instanceof LimitExceededException;\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/rpc/RpcInvocation.java", "source2": "org/apache/dubbo/rpc/RpcInvocation.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,441 +1,441 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.MethodDescriptor;\n-import org.apache.dubbo.rpc.model.ServiceDescriptor;\n-import org.apache.dubbo.rpc.model.ServiceRepository;\n-import org.apache.dubbo.rpc.support.RpcUtils;\n-\n-import java.io.Serializable;\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Type;\n-import java.util.Arrays;\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.stream.Stream;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\n-\n-/**\n- * RPC Invocation.\n- *\n- * @serial Don't change the class name and properties.\n- */\n-public class RpcInvocation implements Invocation, Serializable {\n-\n-    private static final long serialVersionUID = -4355285085441097045L;\n-\n-    private String targetServiceUniqueName;\n-    private String protocolServiceKey;\n-\n-    private String methodName;\n-    private String serviceName;\n-\n-    private transient Class<?>[] parameterTypes;\n-    private String parameterTypesDesc;\n-    private String[] compatibleParamSignatures;\n-\n-    private Object[] arguments;\n-\n-    /**\n-     * Passed to the remote server during RPC call\n-     */\n-    private Map<String, Object> attachments;\n-\n-    /**\n-     * Only used on the caller side, will not appear on the wire.\n-     */\n-    private Map<Object, Object> attributes = new HashMap<>();\n-\n-    private transient Invoker<?> invoker;\n-\n-    private transient Class<?> returnType;\n-\n-    private transient Type[] returnTypes;\n-\n-    private transient InvokeMode invokeMode;\n-\n-    public RpcInvocation() {\n-    }\n-\n-    public RpcInvocation(Invocation invocation, Invoker<?> invoker) {\n-        this(invocation.getMethodName(), invocation.getServiceName(), invocation.getProtocolServiceKey(),\n-                invocation.getParameterTypes(), invocation.getArguments(), new HashMap<>(invocation.getObjectAttachments()),\n-                invocation.getInvoker(), invocation.getAttributes());\n-        if (invoker != null) {\n-            URL url = invoker.getUrl();\n-            setAttachment(PATH_KEY, url.getPath());\n-            if (url.hasParameter(INTERFACE_KEY)) {\n-                setAttachment(INTERFACE_KEY, url.getParameter(INTERFACE_KEY));\n-            }\n-            if (url.hasParameter(GROUP_KEY)) {\n-                setAttachment(GROUP_KEY, url.getParameter(GROUP_KEY));\n-            }\n-            if (url.hasParameter(VERSION_KEY)) {\n-                setAttachment(VERSION_KEY, url.getParameter(VERSION_KEY, \"0.0.0\"));\n-            }\n-            if (url.hasParameter(TIMEOUT_KEY)) {\n-                setAttachment(TIMEOUT_KEY, url.getParameter(TIMEOUT_KEY));\n-            }\n-            if (url.hasParameter(TOKEN_KEY)) {\n-                setAttachment(TOKEN_KEY, url.getParameter(TOKEN_KEY));\n-            }\n-            if (url.hasParameter(APPLICATION_KEY)) {\n-                setAttachment(APPLICATION_KEY, url.getParameter(APPLICATION_KEY));\n-            }\n-        }\n-        this.targetServiceUniqueName = invocation.getTargetServiceUniqueName();\n-        this.protocolServiceKey = invocation.getProtocolServiceKey();\n-    }\n-\n-    public RpcInvocation(Invocation invocation) {\n-        this(invocation.getMethodName(), invocation.getServiceName(), invocation.getProtocolServiceKey(), invocation.getParameterTypes(),\n-                invocation.getArguments(), invocation.getObjectAttachments(), invocation.getInvoker(), invocation.getAttributes());\n-        this.targetServiceUniqueName = invocation.getTargetServiceUniqueName();\n-    }\n-\n-    public RpcInvocation(Method method, String serviceName, String protocolServiceKey, Object[] arguments) {\n-        this(method, serviceName, protocolServiceKey, arguments, null, null);\n-    }\n-\n-    public RpcInvocation(Method method, String serviceName, String protocolServiceKey, Object[] arguments, Map<String, Object> attachment, Map<Object, Object> attributes) {\n-        this(method.getName(), serviceName, protocolServiceKey, method.getParameterTypes(), arguments, attachment, null, attributes);\n-        this.returnType = method.getReturnType();\n-    }\n-\n-    public RpcInvocation(String methodName, String serviceName, String protocolServiceKey, Class<?>[] parameterTypes, Object[] arguments) {\n-        this(methodName, serviceName, protocolServiceKey, parameterTypes, arguments, null, null, null);\n-    }\n-\n-    public RpcInvocation(String methodName, String serviceName, String protocolServiceKey, Class<?>[] parameterTypes, Object[] arguments, Map<String, Object> attachments) {\n-        this(methodName, serviceName, protocolServiceKey, parameterTypes, arguments, attachments, null, null);\n-    }\n-\n-    public RpcInvocation(String methodName, String serviceName, String protocolServiceKey, Class<?>[] parameterTypes, Object[] arguments,\n-                         Map<String, Object> attachments, Invoker<?> invoker, Map<Object, Object> attributes) {\n-        this.methodName = methodName;\n-        this.serviceName = serviceName;\n-        this.protocolServiceKey = protocolServiceKey;\n-        this.parameterTypes = parameterTypes == null ? new Class<?>[0] : parameterTypes;\n-        this.arguments = arguments == null ? new Object[0] : arguments;\n-        this.attachments = attachments == null ? new HashMap<>() : attachments;\n-        this.attributes = attributes == null ? new HashMap<>() : attributes;\n-        this.invoker = invoker;\n-        initParameterDesc();\n-    }\n-\n-    private void initParameterDesc() {\n-        ServiceRepository repository = ApplicationModel.getServiceRepository();\n-        if (StringUtils.isNotEmpty(serviceName)) {\n-            ServiceDescriptor serviceDescriptor = repository.lookupService(serviceName);\n-            if (serviceDescriptor != null) {\n-                MethodDescriptor methodDescriptor = serviceDescriptor.getMethod(methodName, parameterTypes);\n-                if (methodDescriptor != null) {\n-                    this.parameterTypesDesc = methodDescriptor.getParamDesc();\n-                    this.compatibleParamSignatures = methodDescriptor.getCompatibleParamSignatures();\n-                    this.returnTypes = methodDescriptor.getReturnTypes();\n-                }\n-            }\n-        }\n-\n-        if (parameterTypesDesc == null) {\n-            this.parameterTypesDesc = ReflectUtils.getDesc(this.getParameterTypes());\n-            this.compatibleParamSignatures = Stream.of(this.parameterTypes).map(Class::getName).toArray(String[]::new);\n-            this.returnTypes = RpcUtils.getReturnTypes(this);\n-        }\n-    }\n-\n-    @Override\n-    public Invoker<?> getInvoker() {\n-        return invoker;\n-    }\n-\n-    public void setInvoker(Invoker<?> invoker) {\n-        this.invoker = invoker;\n-    }\n-\n-    public Object put(Object key, Object value) {\n-        return attributes.put(key, value);\n-    }\n-\n-    public Object get(Object key) {\n-        return attributes.get(key);\n-    }\n-\n-    @Override\n-    public Map<Object, Object> getAttributes() {\n-        return attributes;\n-    }\n-\n-    @Override\n-    public String getTargetServiceUniqueName() {\n-        return targetServiceUniqueName;\n-    }\n-\n-    @Override\n-    public String getProtocolServiceKey() {\n-        return protocolServiceKey;\n-    }\n-\n-    public void setTargetServiceUniqueName(String targetServiceUniqueName) {\n-        this.targetServiceUniqueName = targetServiceUniqueName;\n-    }\n-\n-    @Override\n-    public String getMethodName() {\n-        return methodName;\n-    }\n-\n-    @Override\n-    public String getServiceName() {\n-        return serviceName;\n-    }\n-\n-    public void setServiceName(String serviceName) {\n-        this.serviceName = serviceName;\n-    }\n-\n-    public void setMethodName(String methodName) {\n-        this.methodName = methodName;\n-    }\n-\n-    @Override\n-    public Class<?>[] getParameterTypes() {\n-        return parameterTypes;\n-    }\n-\n-    public void setParameterTypes(Class<?>[] parameterTypes) {\n-        this.parameterTypes = parameterTypes == null ? new Class<?>[0] : parameterTypes;\n-    }\n-\n-    public String getParameterTypesDesc() {\n-        return parameterTypesDesc;\n-    }\n-\n-    public void setParameterTypesDesc(String parameterTypesDesc) {\n-        this.parameterTypesDesc = parameterTypesDesc;\n-    }\n-\n-    public String[] getCompatibleParamSignatures() {\n-        return compatibleParamSignatures;\n-    }\n-\n-    // parameter signatures can be set independently, it is useful when the service type is not found on caller side and\n-    // the invocation is not generic invocation either.\n-    public void setCompatibleParamSignatures(String[] compatibleParamSignatures) {\n-        this.compatibleParamSignatures = compatibleParamSignatures;\n-    }\n-\n-    @Override\n-    public Object[] getArguments() {\n-        return arguments;\n-    }\n-\n-    public void setArguments(Object[] arguments) {\n-        this.arguments = arguments == null ? new Object[0] : arguments;\n-    }\n-\n-    @Override\n-    public Map<String, Object> getObjectAttachments() {\n-        return attachments;\n-    }\n-\n-    @Override\n-    public void setAttachment(String key, String value) {\n-        setObjectAttachment(key, value);\n-    }\n-\n-    @Deprecated\n-    @Override\n-    public Map<String, String> getAttachments() {\n-        return new AttachmentsAdapter.ObjectToStringMap(attachments);\n-    }\n-\n-    @Deprecated\n-    public void setAttachments(Map<String, String> attachments) {\n-        this.attachments = attachments == null ? new HashMap<>() : new HashMap<>(attachments);\n-    }\n-\n-    public void setObjectAttachments(Map<String, Object> attachments) {\n-        this.attachments = attachments == null ? new HashMap<>() : attachments;\n-    }\n-\n-    public void setAttachment(String key, Object value) {\n-       setObjectAttachment(key, value);\n-    }\n-\n-    @Override\n-    public void setObjectAttachment(String key, Object value) {\n-        if (attachments == null) {\n-            attachments = new HashMap<>();\n-        }\n-        attachments.put(key, value);\n-    }\n-\n-    @Override\n-    public void setAttachmentIfAbsent(String key, String value) {\n-        setObjectAttachmentIfAbsent(key, value);\n-    }\n-\n-    public void setAttachmentIfAbsent(String key, Object value) {\n-        setObjectAttachmentIfAbsent(key, value);\n-    }\n-\n-    @Override\n-    public void setObjectAttachmentIfAbsent(String key, Object value) {\n-        if (attachments == null) {\n-            attachments = new HashMap<>();\n-        }\n-        if (!attachments.containsKey(key)) {\n-            attachments.put(key, value);\n-        }\n-    }\n-\n-    @Deprecated\n-    public void addAttachments(Map<String, String> attachments) {\n-        if (attachments == null) {\n-            return;\n-        }\n-        if (this.attachments == null) {\n-            this.attachments = new HashMap<>();\n-        }\n-        this.attachments.putAll(attachments);\n-    }\n-\n-    public void addObjectAttachments(Map<String, Object> attachments) {\n-        if (attachments == null) {\n-            return;\n-        }\n-        if (this.attachments == null) {\n-            this.attachments = new HashMap<>();\n-        }\n-        this.attachments.putAll(attachments);\n-    }\n-\n-    @Deprecated\n-    public void addAttachmentsIfAbsent(Map<String, String> attachments) {\n-        if (attachments == null) {\n-            return;\n-        }\n-        for (Map.Entry<String, String> entry : attachments.entrySet()) {\n-            setAttachmentIfAbsent(entry.getKey(), entry.getValue());\n-        }\n-    }\n-\n-    public void addObjectAttachmentsIfAbsent(Map<String, Object> attachments) {\n-        if (attachments == null) {\n-            return;\n-        }\n-        for (Map.Entry<String, Object> entry : attachments.entrySet()) {\n-            setAttachmentIfAbsent(entry.getKey(), entry.getValue());\n-        }\n-    }\n-\n-    @Override\n-    @Deprecated\n-    public String getAttachment(String key) {\n-        if (attachments == null) {\n-            return null;\n-        }\n-        Object value = attachments.get(key);\n-        if (value instanceof String) {\n-            return (String) value;\n-        }\n-        return null;\n-    }\n-\n-    @Override\n-    public Object getObjectAttachment(String key) {\n-        if (attachments == null) {\n-            return null;\n-        }\n-        return attachments.get(key);\n-    }\n-\n-    @Override\n-    @Deprecated\n-    public String getAttachment(String key, String defaultValue) {\n-        if (attachments == null) {\n-            return defaultValue;\n-        }\n-        Object value = attachments.get(key);\n-        if (value instanceof String) {\n-            String strValue = (String) value;\n-            if (StringUtils.isEmpty(strValue)) {\n-                return defaultValue;\n-            } else {\n-                return strValue;\n-            }\n-        }\n-        return null;\n-    }\n-\n-    @Deprecated\n-    public Object getObjectAttachment(String key, Object defaultValue) {\n-        if (attachments == null) {\n-            return defaultValue;\n-        }\n-        Object value = attachments.get(key);\n-        if (value == null) {\n-            return defaultValue;\n-        }\n-        return value;\n-    }\n-\n-    public Class<?> getReturnType() {\n-        return returnType;\n-    }\n-\n-    public void setReturnType(Class<?> returnType) {\n-        this.returnType = returnType;\n-    }\n-\n-    public Type[] getReturnTypes() {\n-        return returnTypes;\n-    }\n-\n-    public void setReturnTypes(Type[] returnTypes) {\n-        this.returnTypes = returnTypes;\n-    }\n-\n-    public InvokeMode getInvokeMode() {\n-        return invokeMode;\n-    }\n-\n-    public void setInvokeMode(InvokeMode invokeMode) {\n-        this.invokeMode = invokeMode;\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"RpcInvocation [methodName=\" + methodName + \", parameterTypes=\"\n-                + Arrays.toString(parameterTypes) + \", arguments=\" + Arrays.toString(arguments)\n-                + \", attachments=\" + attachments + \"]\";\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.MethodDescriptor;\r\n+import org.apache.dubbo.rpc.model.ServiceDescriptor;\r\n+import org.apache.dubbo.rpc.model.ServiceRepository;\r\n+import org.apache.dubbo.rpc.support.RpcUtils;\r\n+\r\n+import java.io.Serializable;\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Type;\r\n+import java.util.Arrays;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.stream.Stream;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\r\n+\r\n+/**\r\n+ * RPC Invocation.\r\n+ *\r\n+ * @serial Don't change the class name and properties.\r\n+ */\r\n+public class RpcInvocation implements Invocation, Serializable {\r\n+\r\n+    private static final long serialVersionUID = -4355285085441097045L;\r\n+\r\n+    private String targetServiceUniqueName;\r\n+    private String protocolServiceKey;\r\n+\r\n+    private String methodName;\r\n+    private String serviceName;\r\n+\r\n+    private transient Class<?>[] parameterTypes;\r\n+    private String parameterTypesDesc;\r\n+    private String[] compatibleParamSignatures;\r\n+\r\n+    private Object[] arguments;\r\n+\r\n+    /**\r\n+     * Passed to the remote server during RPC call\r\n+     */\r\n+    private Map<String, Object> attachments;\r\n+\r\n+    /**\r\n+     * Only used on the caller side, will not appear on the wire.\r\n+     */\r\n+    private Map<Object, Object> attributes = new HashMap<>();\r\n+\r\n+    private transient Invoker<?> invoker;\r\n+\r\n+    private transient Class<?> returnType;\r\n+\r\n+    private transient Type[] returnTypes;\r\n+\r\n+    private transient InvokeMode invokeMode;\r\n+\r\n+    public RpcInvocation() {\r\n+    }\r\n+\r\n+    public RpcInvocation(Invocation invocation, Invoker<?> invoker) {\r\n+        this(invocation.getMethodName(), invocation.getServiceName(), invocation.getProtocolServiceKey(),\r\n+                invocation.getParameterTypes(), invocation.getArguments(), new HashMap<>(invocation.getObjectAttachments()),\r\n+                invocation.getInvoker(), invocation.getAttributes());\r\n+        if (invoker != null) {\r\n+            URL url = invoker.getUrl();\r\n+            setAttachment(PATH_KEY, url.getPath());\r\n+            if (url.hasParameter(INTERFACE_KEY)) {\r\n+                setAttachment(INTERFACE_KEY, url.getParameter(INTERFACE_KEY));\r\n+            }\r\n+            if (url.hasParameter(GROUP_KEY)) {\r\n+                setAttachment(GROUP_KEY, url.getParameter(GROUP_KEY));\r\n+            }\r\n+            if (url.hasParameter(VERSION_KEY)) {\r\n+                setAttachment(VERSION_KEY, url.getParameter(VERSION_KEY, \"0.0.0\"));\r\n+            }\r\n+            if (url.hasParameter(TIMEOUT_KEY)) {\r\n+                setAttachment(TIMEOUT_KEY, url.getParameter(TIMEOUT_KEY));\r\n+            }\r\n+            if (url.hasParameter(TOKEN_KEY)) {\r\n+                setAttachment(TOKEN_KEY, url.getParameter(TOKEN_KEY));\r\n+            }\r\n+            if (url.hasParameter(APPLICATION_KEY)) {\r\n+                setAttachment(APPLICATION_KEY, url.getParameter(APPLICATION_KEY));\r\n+            }\r\n+        }\r\n+        this.targetServiceUniqueName = invocation.getTargetServiceUniqueName();\r\n+        this.protocolServiceKey = invocation.getProtocolServiceKey();\r\n+    }\r\n+\r\n+    public RpcInvocation(Invocation invocation) {\r\n+        this(invocation.getMethodName(), invocation.getServiceName(), invocation.getProtocolServiceKey(), invocation.getParameterTypes(),\r\n+                invocation.getArguments(), invocation.getObjectAttachments(), invocation.getInvoker(), invocation.getAttributes());\r\n+        this.targetServiceUniqueName = invocation.getTargetServiceUniqueName();\r\n+    }\r\n+\r\n+    public RpcInvocation(Method method, String serviceName, String protocolServiceKey, Object[] arguments) {\r\n+        this(method, serviceName, protocolServiceKey, arguments, null, null);\r\n+    }\r\n+\r\n+    public RpcInvocation(Method method, String serviceName, String protocolServiceKey, Object[] arguments, Map<String, Object> attachment, Map<Object, Object> attributes) {\r\n+        this(method.getName(), serviceName, protocolServiceKey, method.getParameterTypes(), arguments, attachment, null, attributes);\r\n+        this.returnType = method.getReturnType();\r\n+    }\r\n+\r\n+    public RpcInvocation(String methodName, String serviceName, String protocolServiceKey, Class<?>[] parameterTypes, Object[] arguments) {\r\n+        this(methodName, serviceName, protocolServiceKey, parameterTypes, arguments, null, null, null);\r\n+    }\r\n+\r\n+    public RpcInvocation(String methodName, String serviceName, String protocolServiceKey, Class<?>[] parameterTypes, Object[] arguments, Map<String, Object> attachments) {\r\n+        this(methodName, serviceName, protocolServiceKey, parameterTypes, arguments, attachments, null, null);\r\n+    }\r\n+\r\n+    public RpcInvocation(String methodName, String serviceName, String protocolServiceKey, Class<?>[] parameterTypes, Object[] arguments,\r\n+                         Map<String, Object> attachments, Invoker<?> invoker, Map<Object, Object> attributes) {\r\n+        this.methodName = methodName;\r\n+        this.serviceName = serviceName;\r\n+        this.protocolServiceKey = protocolServiceKey;\r\n+        this.parameterTypes = parameterTypes == null ? new Class<?>[0] : parameterTypes;\r\n+        this.arguments = arguments == null ? new Object[0] : arguments;\r\n+        this.attachments = attachments == null ? new HashMap<>() : attachments;\r\n+        this.attributes = attributes == null ? new HashMap<>() : attributes;\r\n+        this.invoker = invoker;\r\n+        initParameterDesc();\r\n+    }\r\n+\r\n+    private void initParameterDesc() {\r\n+        ServiceRepository repository = ApplicationModel.getServiceRepository();\r\n+        if (StringUtils.isNotEmpty(serviceName)) {\r\n+            ServiceDescriptor serviceDescriptor = repository.lookupService(serviceName);\r\n+            if (serviceDescriptor != null) {\r\n+                MethodDescriptor methodDescriptor = serviceDescriptor.getMethod(methodName, parameterTypes);\r\n+                if (methodDescriptor != null) {\r\n+                    this.parameterTypesDesc = methodDescriptor.getParamDesc();\r\n+                    this.compatibleParamSignatures = methodDescriptor.getCompatibleParamSignatures();\r\n+                    this.returnTypes = methodDescriptor.getReturnTypes();\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        if (parameterTypesDesc == null) {\r\n+            this.parameterTypesDesc = ReflectUtils.getDesc(this.getParameterTypes());\r\n+            this.compatibleParamSignatures = Stream.of(this.parameterTypes).map(Class::getName).toArray(String[]::new);\r\n+            this.returnTypes = RpcUtils.getReturnTypes(this);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public Invoker<?> getInvoker() {\r\n+        return invoker;\r\n+    }\r\n+\r\n+    public void setInvoker(Invoker<?> invoker) {\r\n+        this.invoker = invoker;\r\n+    }\r\n+\r\n+    public Object put(Object key, Object value) {\r\n+        return attributes.put(key, value);\r\n+    }\r\n+\r\n+    public Object get(Object key) {\r\n+        return attributes.get(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Map<Object, Object> getAttributes() {\r\n+        return attributes;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getTargetServiceUniqueName() {\r\n+        return targetServiceUniqueName;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getProtocolServiceKey() {\r\n+        return protocolServiceKey;\r\n+    }\r\n+\r\n+    public void setTargetServiceUniqueName(String targetServiceUniqueName) {\r\n+        this.targetServiceUniqueName = targetServiceUniqueName;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getMethodName() {\r\n+        return methodName;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getServiceName() {\r\n+        return serviceName;\r\n+    }\r\n+\r\n+    public void setServiceName(String serviceName) {\r\n+        this.serviceName = serviceName;\r\n+    }\r\n+\r\n+    public void setMethodName(String methodName) {\r\n+        this.methodName = methodName;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Class<?>[] getParameterTypes() {\r\n+        return parameterTypes;\r\n+    }\r\n+\r\n+    public void setParameterTypes(Class<?>[] parameterTypes) {\r\n+        this.parameterTypes = parameterTypes == null ? new Class<?>[0] : parameterTypes;\r\n+    }\r\n+\r\n+    public String getParameterTypesDesc() {\r\n+        return parameterTypesDesc;\r\n+    }\r\n+\r\n+    public void setParameterTypesDesc(String parameterTypesDesc) {\r\n+        this.parameterTypesDesc = parameterTypesDesc;\r\n+    }\r\n+\r\n+    public String[] getCompatibleParamSignatures() {\r\n+        return compatibleParamSignatures;\r\n+    }\r\n+\r\n+    // parameter signatures can be set independently, it is useful when the service type is not found on caller side and\r\n+    // the invocation is not generic invocation either.\r\n+    public void setCompatibleParamSignatures(String[] compatibleParamSignatures) {\r\n+        this.compatibleParamSignatures = compatibleParamSignatures;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object[] getArguments() {\r\n+        return arguments;\r\n+    }\r\n+\r\n+    public void setArguments(Object[] arguments) {\r\n+        this.arguments = arguments == null ? new Object[0] : arguments;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Map<String, Object> getObjectAttachments() {\r\n+        return attachments;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setAttachment(String key, String value) {\r\n+        setObjectAttachment(key, value);\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    @Override\r\n+    public Map<String, String> getAttachments() {\r\n+        return new AttachmentsAdapter.ObjectToStringMap(attachments);\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void setAttachments(Map<String, String> attachments) {\r\n+        this.attachments = attachments == null ? new HashMap<>() : new HashMap<>(attachments);\r\n+    }\r\n+\r\n+    public void setObjectAttachments(Map<String, Object> attachments) {\r\n+        this.attachments = attachments == null ? new HashMap<>() : attachments;\r\n+    }\r\n+\r\n+    public void setAttachment(String key, Object value) {\r\n+       setObjectAttachment(key, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setObjectAttachment(String key, Object value) {\r\n+        if (attachments == null) {\r\n+            attachments = new HashMap<>();\r\n+        }\r\n+        attachments.put(key, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setAttachmentIfAbsent(String key, String value) {\r\n+        setObjectAttachmentIfAbsent(key, value);\r\n+    }\r\n+\r\n+    public void setAttachmentIfAbsent(String key, Object value) {\r\n+        setObjectAttachmentIfAbsent(key, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setObjectAttachmentIfAbsent(String key, Object value) {\r\n+        if (attachments == null) {\r\n+            attachments = new HashMap<>();\r\n+        }\r\n+        if (!attachments.containsKey(key)) {\r\n+            attachments.put(key, value);\r\n+        }\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void addAttachments(Map<String, String> attachments) {\r\n+        if (attachments == null) {\r\n+            return;\r\n+        }\r\n+        if (this.attachments == null) {\r\n+            this.attachments = new HashMap<>();\r\n+        }\r\n+        this.attachments.putAll(attachments);\r\n+    }\r\n+\r\n+    public void addObjectAttachments(Map<String, Object> attachments) {\r\n+        if (attachments == null) {\r\n+            return;\r\n+        }\r\n+        if (this.attachments == null) {\r\n+            this.attachments = new HashMap<>();\r\n+        }\r\n+        this.attachments.putAll(attachments);\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public void addAttachmentsIfAbsent(Map<String, String> attachments) {\r\n+        if (attachments == null) {\r\n+            return;\r\n+        }\r\n+        for (Map.Entry<String, String> entry : attachments.entrySet()) {\r\n+            setAttachmentIfAbsent(entry.getKey(), entry.getValue());\r\n+        }\r\n+    }\r\n+\r\n+    public void addObjectAttachmentsIfAbsent(Map<String, Object> attachments) {\r\n+        if (attachments == null) {\r\n+            return;\r\n+        }\r\n+        for (Map.Entry<String, Object> entry : attachments.entrySet()) {\r\n+            setAttachmentIfAbsent(entry.getKey(), entry.getValue());\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    @Deprecated\r\n+    public String getAttachment(String key) {\r\n+        if (attachments == null) {\r\n+            return null;\r\n+        }\r\n+        Object value = attachments.get(key);\r\n+        if (value instanceof String) {\r\n+            return (String) value;\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getObjectAttachment(String key) {\r\n+        if (attachments == null) {\r\n+            return null;\r\n+        }\r\n+        return attachments.get(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    @Deprecated\r\n+    public String getAttachment(String key, String defaultValue) {\r\n+        if (attachments == null) {\r\n+            return defaultValue;\r\n+        }\r\n+        Object value = attachments.get(key);\r\n+        if (value instanceof String) {\r\n+            String strValue = (String) value;\r\n+            if (StringUtils.isEmpty(strValue)) {\r\n+                return defaultValue;\r\n+            } else {\r\n+                return strValue;\r\n+            }\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public Object getObjectAttachment(String key, Object defaultValue) {\r\n+        if (attachments == null) {\r\n+            return defaultValue;\r\n+        }\r\n+        Object value = attachments.get(key);\r\n+        if (value == null) {\r\n+            return defaultValue;\r\n+        }\r\n+        return value;\r\n+    }\r\n+\r\n+    public Class<?> getReturnType() {\r\n+        return returnType;\r\n+    }\r\n+\r\n+    public void setReturnType(Class<?> returnType) {\r\n+        this.returnType = returnType;\r\n+    }\r\n+\r\n+    public Type[] getReturnTypes() {\r\n+        return returnTypes;\r\n+    }\r\n+\r\n+    public void setReturnTypes(Type[] returnTypes) {\r\n+        this.returnTypes = returnTypes;\r\n+    }\r\n+\r\n+    public InvokeMode getInvokeMode() {\r\n+        return invokeMode;\r\n+    }\r\n+\r\n+    public void setInvokeMode(InvokeMode invokeMode) {\r\n+        this.invokeMode = invokeMode;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"RpcInvocation [methodName=\" + methodName + \", parameterTypes=\"\r\n+                + Arrays.toString(parameterTypes) + \", arguments=\" + Arrays.toString(arguments)\r\n+                + \", attachments=\" + attachments + \"]\";\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/TimeoutCountDown.java", "source2": "org/apache/dubbo/rpc/TimeoutCountDown.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,90 +1,90 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc;\n-\n-import java.util.concurrent.TimeUnit;\n-\n-public final class TimeoutCountDown implements Comparable<TimeoutCountDown> {\n-\n-  public static TimeoutCountDown newCountDown(long timeout, TimeUnit unit) {\n-    return new TimeoutCountDown(timeout, unit);\n-  }\n-\n-  private final long timeoutInMillis;\n-  private final long deadlineInNanos;\n-  private volatile boolean expired;\n-\n-  private TimeoutCountDown(long timeout, TimeUnit unit) {\n-    timeoutInMillis = TimeUnit.MILLISECONDS.convert(timeout, unit);\n-    deadlineInNanos = System.nanoTime() + TimeUnit.NANOSECONDS.convert(timeout, unit);\n-  }\n-\n-  public long getTimeoutInMilli() {\n-    return timeoutInMillis;\n-  }\n-\n-  public boolean isExpired() {\n-    if (!expired) {\n-      if (deadlineInNanos - System.nanoTime() <= 0) {\n-        expired = true;\n-      } else {\n-        return false;\n-      }\n-    }\n-    return true;\n-  }\n-\n-  public long timeRemaining(TimeUnit unit) {\n-    final long currentNanos = System.nanoTime();\n-    if (!expired && deadlineInNanos - currentNanos <= 0) {\n-      expired = true;\n-    }\n-    return unit.convert(deadlineInNanos - currentNanos, TimeUnit.NANOSECONDS);\n-  }\n-\n-  public long elapsedMillis() {\n-    if (isExpired()) {\n-      return timeoutInMillis + TimeUnit.MILLISECONDS.convert(System.nanoTime() - deadlineInNanos, TimeUnit.NANOSECONDS);\n-    } else {\n-      return TimeUnit.MILLISECONDS.convert(deadlineInNanos - System.nanoTime(), TimeUnit.NANOSECONDS);\n-    }\n-  }\n-\n-  @Override\n-  public String toString() {\n-    long timeoutMillis = TimeUnit.MILLISECONDS.convert(deadlineInNanos, TimeUnit.NANOSECONDS);\n-    long remainingMillis = timeRemaining(TimeUnit.MILLISECONDS);\n-\n-    StringBuilder buf = new StringBuilder();\n-    buf.append(\"Total timeout value - \");\n-    buf.append(timeoutMillis);\n-    buf.append(\", times remaining - \");\n-    buf.append(remainingMillis);\n-    return buf.toString();\n-  }\n-\n-  @Override\n-  public int compareTo(TimeoutCountDown another) {\n-    long delta = this.deadlineInNanos - another.deadlineInNanos;\n-    if (delta < 0) {\n-      return -1;\n-    } else if (delta > 0) {\n-      return 1;\n-    }\n-    return 0;\n-  }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc;\r\n+\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+public final class TimeoutCountDown implements Comparable<TimeoutCountDown> {\r\n+\r\n+  public static TimeoutCountDown newCountDown(long timeout, TimeUnit unit) {\r\n+    return new TimeoutCountDown(timeout, unit);\r\n+  }\r\n+\r\n+  private final long timeoutInMillis;\r\n+  private final long deadlineInNanos;\r\n+  private volatile boolean expired;\r\n+\r\n+  private TimeoutCountDown(long timeout, TimeUnit unit) {\r\n+    timeoutInMillis = TimeUnit.MILLISECONDS.convert(timeout, unit);\r\n+    deadlineInNanos = System.nanoTime() + TimeUnit.NANOSECONDS.convert(timeout, unit);\r\n+  }\r\n+\r\n+  public long getTimeoutInMilli() {\r\n+    return timeoutInMillis;\r\n+  }\r\n+\r\n+  public boolean isExpired() {\r\n+    if (!expired) {\r\n+      if (deadlineInNanos - System.nanoTime() <= 0) {\r\n+        expired = true;\r\n+      } else {\r\n+        return false;\r\n+      }\r\n+    }\r\n+    return true;\r\n+  }\r\n+\r\n+  public long timeRemaining(TimeUnit unit) {\r\n+    final long currentNanos = System.nanoTime();\r\n+    if (!expired && deadlineInNanos - currentNanos <= 0) {\r\n+      expired = true;\r\n+    }\r\n+    return unit.convert(deadlineInNanos - currentNanos, TimeUnit.NANOSECONDS);\r\n+  }\r\n+\r\n+  public long elapsedMillis() {\r\n+    if (isExpired()) {\r\n+      return timeoutInMillis + TimeUnit.MILLISECONDS.convert(System.nanoTime() - deadlineInNanos, TimeUnit.NANOSECONDS);\r\n+    } else {\r\n+      return TimeUnit.MILLISECONDS.convert(deadlineInNanos - System.nanoTime(), TimeUnit.NANOSECONDS);\r\n+    }\r\n+  }\r\n+\r\n+  @Override\r\n+  public String toString() {\r\n+    long timeoutMillis = TimeUnit.MILLISECONDS.convert(deadlineInNanos, TimeUnit.NANOSECONDS);\r\n+    long remainingMillis = timeRemaining(TimeUnit.MILLISECONDS);\r\n+\r\n+    StringBuilder buf = new StringBuilder();\r\n+    buf.append(\"Total timeout value - \");\r\n+    buf.append(timeoutMillis);\r\n+    buf.append(\", times remaining - \");\r\n+    buf.append(remainingMillis);\r\n+    return buf.toString();\r\n+  }\r\n+\r\n+  @Override\r\n+  public int compareTo(TimeoutCountDown another) {\r\n+    long delta = this.deadlineInNanos - another.deadlineInNanos;\r\n+    if (delta < 0) {\r\n+      return -1;\r\n+    } else if (delta > 0) {\r\n+      return 1;\r\n+    }\r\n+    return 0;\r\n+  }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/ZoneDetector.java", "source2": "org/apache/dubbo/rpc/ZoneDetector.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,32 +1,32 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-/**\n- * Extend and provide your own implementation if you want to distribute traffic around registries.\n- * Please, name it as 'default'\n- */\n-@SPI\n-public interface ZoneDetector {\n-\n-    String getZoneOfCurrentRequest(Invocation invocation);\n-\n-    String isZoneForcingEnabled(Invocation invocation, String zone);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+/**\r\n+ * Extend and provide your own implementation if you want to distribute traffic around registries.\r\n+ * Please, name it as 'default'\r\n+ */\r\n+@SPI\r\n+public interface ZoneDetector {\r\n+\r\n+    String getZoneOfCurrentRequest(Invocation invocation);\r\n+\r\n+    String isZoneForcingEnabled(Invocation invocation, String zone);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/filter/AccessLogFilter.java", "source2": "org/apache/dubbo/rpc/filter/AccessLogFilter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,194 +1,194 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.filter;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ConcurrentHashSet;\n-import org.apache.dubbo.common.utils.ConfigUtils;\n-import org.apache.dubbo.common.utils.NamedThreadFactory;\n-import org.apache.dubbo.rpc.Filter;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.support.AccessLogData;\n-\n-import java.io.File;\n-import java.io.FileWriter;\n-import java.io.IOException;\n-import java.text.DateFormat;\n-import java.text.SimpleDateFormat;\n-import java.util.Date;\n-import java.util.Iterator;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.Executors;\n-import java.util.concurrent.ScheduledExecutorService;\n-import java.util.concurrent.TimeUnit;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER;\n-import static org.apache.dubbo.rpc.Constants.ACCESS_LOG_KEY;\n-\n-/**\n- * Record access log for the service.\n- * <p>\n- * Logger key is <code><b>dubbo.accesslog</b></code>.\n- * In order to configure access log appear in the specified appender only, additivity need to be configured in log4j's\n- * config file, for example:\n- * <code>\n- * <pre>\n- * &lt;logger name=\"<b>dubbo.accesslog</b>\" <font color=\"red\">additivity=\"false\"</font>&gt;\n- *    &lt;level value=\"info\" /&gt;\n- *    &lt;appender-ref ref=\"foo\" /&gt;\n- * &lt;/logger&gt;\n- * </pre></code>\n- */\n-@Activate(group = PROVIDER, value = ACCESS_LOG_KEY)\n-public class AccessLogFilter implements Filter {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(AccessLogFilter.class);\n-\n-    private static final String LOG_KEY = \"dubbo.accesslog\";\n-\n-    private static final int LOG_MAX_BUFFER = 5000;\n-\n-    private static final long LOG_OUTPUT_INTERVAL = 5000;\n-\n-    private static final String FILE_DATE_FORMAT = \"yyyyMMdd\";\n-\n-    // It's safe to declare it as singleton since it runs on single thread only\n-    private static final DateFormat FILE_NAME_FORMATTER = new SimpleDateFormat(FILE_DATE_FORMAT);\n-\n-    private static final Map<String, Set<AccessLogData>> LOG_ENTRIES = new ConcurrentHashMap<>();\n-\n-    private static final ScheduledExecutorService LOG_SCHEDULED = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory(\"Dubbo-Access-Log\", true));\n-\n-    /**\n-     * Default constructor initialize demon thread for writing into access log file with names with access log key\n-     * defined in url <b>accesslog</b>\n-     */\n-    public AccessLogFilter() {\n-        LOG_SCHEDULED.scheduleWithFixedDelay(this::writeLogToFile, LOG_OUTPUT_INTERVAL, LOG_OUTPUT_INTERVAL, TimeUnit.MILLISECONDS);\n-    }\n-\n-    /**\n-     * This method logs the access log for service method invocation call.\n-     *\n-     * @param invoker service\n-     * @param inv     Invocation service method.\n-     * @return Result from service method.\n-     * @throws RpcException\n-     */\n-    @Override\n-    public Result invoke(Invoker<?> invoker, Invocation inv) throws RpcException {\n-        try {\n-            String accessLogKey = invoker.getUrl().getParameter(ACCESS_LOG_KEY);\n-            if (ConfigUtils.isNotEmpty(accessLogKey)) {\n-                AccessLogData logData = AccessLogData.newLogData(); \n-                logData.buildAccessLogData(invoker, inv);\n-                log(accessLogKey, logData);\n-            }\n-        } catch (Throwable t) {\n-            logger.warn(\"Exception in AccessLogFilter of service(\" + invoker + \" -> \" + inv + \")\", t);\n-        }\n-        return invoker.invoke(inv);\n-    }\n-\n-    private void log(String accessLog, AccessLogData accessLogData) {\n-        Set<AccessLogData> logSet = LOG_ENTRIES.computeIfAbsent(accessLog, k -> new ConcurrentHashSet<>());\n-\n-        if (logSet.size() < LOG_MAX_BUFFER) {\n-            logSet.add(accessLogData);\n-        } else {\n-            logger.warn(\"AccessLog buffer is full. Do a force writing to file to clear buffer.\");\n-            //just write current logSet to file.\n-            writeLogSetToFile(accessLog, logSet);\n-            //after force writing, add accessLogData to current logSet\n-            logSet.add(accessLogData);\n-        }\n-    }\n-\n-    private void writeLogSetToFile(String accessLog, Set<AccessLogData> logSet) {\n-        try {\n-            if (ConfigUtils.isDefault(accessLog)) {\n-                processWithServiceLogger(logSet);\n-            } else {\n-                File file = new File(accessLog);\n-                createIfLogDirAbsent(file);\n-                if (logger.isDebugEnabled()) {\n-                    logger.debug(\"Append log to \" + accessLog);\n-                }\n-                renameFile(file);\n-                processWithAccessKeyLogger(logSet, file);\n-            }\n-        } catch (Exception e) {\n-            logger.error(e.getMessage(), e);\n-        }\n-    }\n-\n-    private void writeLogToFile() {\n-        if (!LOG_ENTRIES.isEmpty()) {\n-            for (Map.Entry<String, Set<AccessLogData>> entry : LOG_ENTRIES.entrySet()) {\n-                String accessLog = entry.getKey();\n-                Set<AccessLogData> logSet = entry.getValue();\n-                writeLogSetToFile(accessLog, logSet);\n-            }\n-        }\n-    }\n-\n-    private void processWithAccessKeyLogger(Set<AccessLogData> logSet, File file) throws IOException {\n-        try (FileWriter writer = new FileWriter(file, true)) {\n-            for (Iterator<AccessLogData> iterator = logSet.iterator();\n-                 iterator.hasNext();\n-                 iterator.remove()) {\n-                writer.write(iterator.next().getLogMessage());\n-                writer.write(System.getProperty(\"line.separator\"));\n-            }\n-            writer.flush();\n-        }\n-    }\n-\n-    private void processWithServiceLogger(Set<AccessLogData> logSet) {\n-        for (Iterator<AccessLogData> iterator = logSet.iterator();\n-             iterator.hasNext();\n-             iterator.remove()) {\n-            AccessLogData logData = iterator.next();\n-            LoggerFactory.getLogger(LOG_KEY + \".\" + logData.getServiceName()).info(logData.getLogMessage());\n-        }\n-    }\n-\n-    private void createIfLogDirAbsent(File file) {\n-        File dir = file.getParentFile();\n-        if (null != dir && !dir.exists()) {\n-            dir.mkdirs();\n-        }\n-    }\n-\n-    private void renameFile(File file) {\n-        if (file.exists()) {\n-            String now = FILE_NAME_FORMATTER.format(new Date());\n-            String last = FILE_NAME_FORMATTER.format(new Date(file.lastModified()));\n-            if (!now.equals(last)) {\n-                File archive = new File(file.getAbsolutePath() + \".\" + last);\n-                file.renameTo(archive);\n-            }\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.filter;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ConcurrentHashSet;\r\n+import org.apache.dubbo.common.utils.ConfigUtils;\r\n+import org.apache.dubbo.common.utils.NamedThreadFactory;\r\n+import org.apache.dubbo.rpc.Filter;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.support.AccessLogData;\r\n+\r\n+import java.io.File;\r\n+import java.io.FileWriter;\r\n+import java.io.IOException;\r\n+import java.text.DateFormat;\r\n+import java.text.SimpleDateFormat;\r\n+import java.util.Date;\r\n+import java.util.Iterator;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.Executors;\r\n+import java.util.concurrent.ScheduledExecutorService;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER;\r\n+import static org.apache.dubbo.rpc.Constants.ACCESS_LOG_KEY;\r\n+\r\n+/**\r\n+ * Record access log for the service.\r\n+ * <p>\r\n+ * Logger key is <code><b>dubbo.accesslog</b></code>.\r\n+ * In order to configure access log appear in the specified appender only, additivity need to be configured in log4j's\r\n+ * config file, for example:\r\n+ * <code>\r\n+ * <pre>\r\n+ * &lt;logger name=\"<b>dubbo.accesslog</b>\" <font color=\"red\">additivity=\"false\"</font>&gt;\r\n+ *    &lt;level value=\"info\" /&gt;\r\n+ *    &lt;appender-ref ref=\"foo\" /&gt;\r\n+ * &lt;/logger&gt;\r\n+ * </pre></code>\r\n+ */\r\n+@Activate(group = PROVIDER, value = ACCESS_LOG_KEY)\r\n+public class AccessLogFilter implements Filter {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(AccessLogFilter.class);\r\n+\r\n+    private static final String LOG_KEY = \"dubbo.accesslog\";\r\n+\r\n+    private static final int LOG_MAX_BUFFER = 5000;\r\n+\r\n+    private static final long LOG_OUTPUT_INTERVAL = 5000;\r\n+\r\n+    private static final String FILE_DATE_FORMAT = \"yyyyMMdd\";\r\n+\r\n+    // It's safe to declare it as singleton since it runs on single thread only\r\n+    private static final DateFormat FILE_NAME_FORMATTER = new SimpleDateFormat(FILE_DATE_FORMAT);\r\n+\r\n+    private static final Map<String, Set<AccessLogData>> LOG_ENTRIES = new ConcurrentHashMap<>();\r\n+\r\n+    private static final ScheduledExecutorService LOG_SCHEDULED = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory(\"Dubbo-Access-Log\", true));\r\n+\r\n+    /**\r\n+     * Default constructor initialize demon thread for writing into access log file with names with access log key\r\n+     * defined in url <b>accesslog</b>\r\n+     */\r\n+    public AccessLogFilter() {\r\n+        LOG_SCHEDULED.scheduleWithFixedDelay(this::writeLogToFile, LOG_OUTPUT_INTERVAL, LOG_OUTPUT_INTERVAL, TimeUnit.MILLISECONDS);\r\n+    }\r\n+\r\n+    /**\r\n+     * This method logs the access log for service method invocation call.\r\n+     *\r\n+     * @param invoker service\r\n+     * @param inv     Invocation service method.\r\n+     * @return Result from service method.\r\n+     * @throws RpcException\r\n+     */\r\n+    @Override\r\n+    public Result invoke(Invoker<?> invoker, Invocation inv) throws RpcException {\r\n+        try {\r\n+            String accessLogKey = invoker.getUrl().getParameter(ACCESS_LOG_KEY);\r\n+            if (ConfigUtils.isNotEmpty(accessLogKey)) {\r\n+                AccessLogData logData = AccessLogData.newLogData(); \r\n+                logData.buildAccessLogData(invoker, inv);\r\n+                log(accessLogKey, logData);\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            logger.warn(\"Exception in AccessLogFilter of service(\" + invoker + \" -> \" + inv + \")\", t);\r\n+        }\r\n+        return invoker.invoke(inv);\r\n+    }\r\n+\r\n+    private void log(String accessLog, AccessLogData accessLogData) {\r\n+        Set<AccessLogData> logSet = LOG_ENTRIES.computeIfAbsent(accessLog, k -> new ConcurrentHashSet<>());\r\n+\r\n+        if (logSet.size() < LOG_MAX_BUFFER) {\r\n+            logSet.add(accessLogData);\r\n+        } else {\r\n+            logger.warn(\"AccessLog buffer is full. Do a force writing to file to clear buffer.\");\r\n+            //just write current logSet to file.\r\n+            writeLogSetToFile(accessLog, logSet);\r\n+            //after force writing, add accessLogData to current logSet\r\n+            logSet.add(accessLogData);\r\n+        }\r\n+    }\r\n+\r\n+    private void writeLogSetToFile(String accessLog, Set<AccessLogData> logSet) {\r\n+        try {\r\n+            if (ConfigUtils.isDefault(accessLog)) {\r\n+                processWithServiceLogger(logSet);\r\n+            } else {\r\n+                File file = new File(accessLog);\r\n+                createIfLogDirAbsent(file);\r\n+                if (logger.isDebugEnabled()) {\r\n+                    logger.debug(\"Append log to \" + accessLog);\r\n+                }\r\n+                renameFile(file);\r\n+                processWithAccessKeyLogger(logSet, file);\r\n+            }\r\n+        } catch (Exception e) {\r\n+            logger.error(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    private void writeLogToFile() {\r\n+        if (!LOG_ENTRIES.isEmpty()) {\r\n+            for (Map.Entry<String, Set<AccessLogData>> entry : LOG_ENTRIES.entrySet()) {\r\n+                String accessLog = entry.getKey();\r\n+                Set<AccessLogData> logSet = entry.getValue();\r\n+                writeLogSetToFile(accessLog, logSet);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private void processWithAccessKeyLogger(Set<AccessLogData> logSet, File file) throws IOException {\r\n+        try (FileWriter writer = new FileWriter(file, true)) {\r\n+            for (Iterator<AccessLogData> iterator = logSet.iterator();\r\n+                 iterator.hasNext();\r\n+                 iterator.remove()) {\r\n+                writer.write(iterator.next().getLogMessage());\r\n+                writer.write(System.getProperty(\"line.separator\"));\r\n+            }\r\n+            writer.flush();\r\n+        }\r\n+    }\r\n+\r\n+    private void processWithServiceLogger(Set<AccessLogData> logSet) {\r\n+        for (Iterator<AccessLogData> iterator = logSet.iterator();\r\n+             iterator.hasNext();\r\n+             iterator.remove()) {\r\n+            AccessLogData logData = iterator.next();\r\n+            LoggerFactory.getLogger(LOG_KEY + \".\" + logData.getServiceName()).info(logData.getLogMessage());\r\n+        }\r\n+    }\r\n+\r\n+    private void createIfLogDirAbsent(File file) {\r\n+        File dir = file.getParentFile();\r\n+        if (null != dir && !dir.exists()) {\r\n+            dir.mkdirs();\r\n+        }\r\n+    }\r\n+\r\n+    private void renameFile(File file) {\r\n+        if (file.exists()) {\r\n+            String now = FILE_NAME_FORMATTER.format(new Date());\r\n+            String last = FILE_NAME_FORMATTER.format(new Date(file.lastModified()));\r\n+            if (!now.equals(last)) {\r\n+                File archive = new File(file.getAbsolutePath() + \".\" + last);\r\n+                file.renameTo(archive);\r\n+            }\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/filter/ConsumerContextFilter.java", "source2": "org/apache/dubbo/rpc/filter/ConsumerContextFilter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,72 +1,72 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.filter;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.rpc.AsyncRpcResult;\n-import org.apache.dubbo.rpc.Filter;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-import org.apache.dubbo.rpc.TimeoutCountDown;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER;\n-import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_APPLICATION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIME_COUNTDOWN_KEY;\n-\n-/**\n- * ConsumerContextFilter set current RpcContext with invoker,invocation, local host, remote host and port\n- * for consumer invoker.It does it to make the requires info available to execution thread's RpcContext.\n- *\n- * @see org.apache.dubbo.rpc.Filter\n- * @see RpcContext\n- */\n-@Activate(group = CONSUMER, order = -10000)\n-public class ConsumerContextFilter implements Filter {\n-\n-    @Override\n-    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {\n-        RpcContext context = RpcContext.getContext();\n-        context.setInvoker(invoker)\n-                .setInvocation(invocation)\n-                .setLocalAddress(NetUtils.getLocalHost(), 0)\n-                .setRemoteAddress(invoker.getUrl().getHost(), invoker.getUrl().getPort())\n-                .setRemoteApplicationName(invoker.getUrl().getParameter(REMOTE_APPLICATION_KEY))\n-                .setAttachment(REMOTE_APPLICATION_KEY, invoker.getUrl().getParameter(APPLICATION_KEY));\n-        if (invocation instanceof RpcInvocation) {\n-            ((RpcInvocation) invocation).setInvoker(invoker);\n-        }\n-\n-        // pass default timeout set by end user (ReferenceConfig)\n-        Object countDown = context.get(TIME_COUNTDOWN_KEY);\n-        if (countDown != null) {\n-            TimeoutCountDown timeoutCountDown = (TimeoutCountDown) countDown;\n-            if (timeoutCountDown.isExpired()) {\n-                return AsyncRpcResult.newDefaultAsyncResult(new RpcException(RpcException.TIMEOUT_TERMINATE,\n-                        \"No time left for making the following call: \" + invocation.getServiceName() + \".\"\n-                                + invocation.getMethodName() + \", terminate directly.\"), invocation);\n-            }\n-        }\n-        return invoker.invoke(invocation);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.filter;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.rpc.AsyncRpcResult;\r\n+import org.apache.dubbo.rpc.Filter;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+import org.apache.dubbo.rpc.TimeoutCountDown;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_APPLICATION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIME_COUNTDOWN_KEY;\r\n+\r\n+/**\r\n+ * ConsumerContextFilter set current RpcContext with invoker,invocation, local host, remote host and port\r\n+ * for consumer invoker.It does it to make the requires info available to execution thread's RpcContext.\r\n+ *\r\n+ * @see org.apache.dubbo.rpc.Filter\r\n+ * @see RpcContext\r\n+ */\r\n+@Activate(group = CONSUMER, order = -10000)\r\n+public class ConsumerContextFilter implements Filter {\r\n+\r\n+    @Override\r\n+    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {\r\n+        RpcContext context = RpcContext.getContext();\r\n+        context.setInvoker(invoker)\r\n+                .setInvocation(invocation)\r\n+                .setLocalAddress(NetUtils.getLocalHost(), 0)\r\n+                .setRemoteAddress(invoker.getUrl().getHost(), invoker.getUrl().getPort())\r\n+                .setRemoteApplicationName(invoker.getUrl().getParameter(REMOTE_APPLICATION_KEY))\r\n+                .setAttachment(REMOTE_APPLICATION_KEY, invoker.getUrl().getParameter(APPLICATION_KEY));\r\n+        if (invocation instanceof RpcInvocation) {\r\n+            ((RpcInvocation) invocation).setInvoker(invoker);\r\n+        }\r\n+\r\n+        // pass default timeout set by end user (ReferenceConfig)\r\n+        Object countDown = context.get(TIME_COUNTDOWN_KEY);\r\n+        if (countDown != null) {\r\n+            TimeoutCountDown timeoutCountDown = (TimeoutCountDown) countDown;\r\n+            if (timeoutCountDown.isExpired()) {\r\n+                return AsyncRpcResult.newDefaultAsyncResult(new RpcException(RpcException.TIMEOUT_TERMINATE,\r\n+                        \"No time left for making the following call: \" + invocation.getServiceName() + \".\"\r\n+                                + invocation.getMethodName() + \", terminate directly.\"), invocation);\r\n+            }\r\n+        }\r\n+        return invoker.invoke(invocation);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/filter/ContextFilter.java", "source2": "org/apache/dubbo/rpc/filter/ContextFilter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,148 +1,148 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.filter;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.rpc.Filter;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-import org.apache.dubbo.rpc.TimeoutCountDown;\n-import org.apache.dubbo.rpc.support.RpcUtils;\n-\n-import java.util.HashMap;\n-import java.util.HashSet;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.concurrent.TimeUnit;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER;\n-import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_APPLICATION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_ATTACHMENT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIME_COUNTDOWN_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.rpc.Constants.ASYNC_KEY;\n-import static org.apache.dubbo.rpc.Constants.FORCE_USE_TAG;\n-import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\n-\n-\n-/**\n- * ContextFilter set the provider RpcContext with invoker, invocation, local port it is using and host for\n- * current execution thread.\n- *\n- * @see RpcContext\n- */\n-@Activate(group = PROVIDER, order = -10000)\n-public class ContextFilter implements Filter, Filter.Listener {\n-\n-    private static final String TAG_KEY = \"dubbo.tag\";\n-\n-    private static final Set<String> UNLOADING_KEYS;\n-\n-    static {\n-        UNLOADING_KEYS = new HashSet<>(128);\n-        UNLOADING_KEYS.add(PATH_KEY);\n-        UNLOADING_KEYS.add(INTERFACE_KEY);\n-        UNLOADING_KEYS.add(GROUP_KEY);\n-        UNLOADING_KEYS.add(VERSION_KEY);\n-        UNLOADING_KEYS.add(DUBBO_VERSION_KEY);\n-        UNLOADING_KEYS.add(TOKEN_KEY);\n-        UNLOADING_KEYS.add(TIMEOUT_KEY);\n-        UNLOADING_KEYS.add(TIMEOUT_ATTACHMENT_KEY);\n-\n-        // Remove async property to avoid being passed to the following invoke chain.\n-        UNLOADING_KEYS.add(ASYNC_KEY);\n-        UNLOADING_KEYS.add(TAG_KEY);\n-        UNLOADING_KEYS.add(FORCE_USE_TAG);\n-    }\n-\n-    @Override\n-    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {\n-        Map<String, Object> attachments = invocation.getObjectAttachments();\n-        if (attachments != null) {\n-            Map<String, Object> newAttach = new HashMap<>(attachments.size());\n-            for (Map.Entry<String, Object> entry : attachments.entrySet()) {\n-                String key = entry.getKey();\n-                if (!UNLOADING_KEYS.contains(key)) {\n-                    newAttach.put(key, entry.getValue());\n-                }\n-            }\n-            attachments = newAttach;\n-        }\n-\n-        RpcContext context = RpcContext.getContext();\n-        context.setInvoker(invoker)\n-                .setInvocation(invocation)\n-//                .setAttachments(attachments)  // merged from dubbox\n-                .setLocalAddress(invoker.getUrl().getHost(), invoker.getUrl().getPort());\n-        String remoteApplication = (String) invocation.getAttachment(REMOTE_APPLICATION_KEY);\n-        if (StringUtils.isNotEmpty(remoteApplication)) {\n-            context.setRemoteApplicationName(remoteApplication);\n-        } else {\n-            context.setRemoteApplicationName((String) context.getAttachment(REMOTE_APPLICATION_KEY));\n-        }\n-\n-        long timeout = RpcUtils.getTimeout(invocation, -1);\n-        if (timeout != -1) {\n-            context.set(TIME_COUNTDOWN_KEY, TimeoutCountDown.newCountDown(timeout, TimeUnit.MILLISECONDS));\n-        }\n-\n-        // merged from dubbox\n-        // we may already added some attachments into RpcContext before this filter (e.g. in rest protocol)\n-        if (attachments != null) {\n-            if (context.getObjectAttachments() != null) {\n-                context.getObjectAttachments().putAll(attachments);\n-            } else {\n-                context.setObjectAttachments(attachments);\n-            }\n-        }\n-\n-        if (invocation instanceof RpcInvocation) {\n-            ((RpcInvocation) invocation).setInvoker(invoker);\n-        }\n-\n-        try {\n-            context.clearAfterEachInvoke(false);\n-            return invoker.invoke(invocation);\n-        } finally {\n-            context.clearAfterEachInvoke(true);\n-            // IMPORTANT! For async scenario, we must remove context from current thread, so we always create a new RpcContext for the next invoke for the same thread.\n-            RpcContext.removeContext(true);\n-            RpcContext.removeServerContext();\n-        }\n-    }\n-\n-    @Override\n-    public void onResponse(Result appResponse, Invoker<?> invoker, Invocation invocation) {\n-        // pass attachments to result\n-        appResponse.addObjectAttachments(RpcContext.getServerContext().getObjectAttachments());\n-    }\n-\n-    @Override\n-    public void onError(Throwable t, Invoker<?> invoker, Invocation invocation) {\n-\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.filter;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.rpc.Filter;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+import org.apache.dubbo.rpc.TimeoutCountDown;\r\n+import org.apache.dubbo.rpc.support.RpcUtils;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.HashSet;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_APPLICATION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_ATTACHMENT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIME_COUNTDOWN_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.ASYNC_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.FORCE_USE_TAG;\r\n+import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\r\n+\r\n+\r\n+/**\r\n+ * ContextFilter set the provider RpcContext with invoker, invocation, local port it is using and host for\r\n+ * current execution thread.\r\n+ *\r\n+ * @see RpcContext\r\n+ */\r\n+@Activate(group = PROVIDER, order = -10000)\r\n+public class ContextFilter implements Filter, Filter.Listener {\r\n+\r\n+    private static final String TAG_KEY = \"dubbo.tag\";\r\n+\r\n+    private static final Set<String> UNLOADING_KEYS;\r\n+\r\n+    static {\r\n+        UNLOADING_KEYS = new HashSet<>(128);\r\n+        UNLOADING_KEYS.add(PATH_KEY);\r\n+        UNLOADING_KEYS.add(INTERFACE_KEY);\r\n+        UNLOADING_KEYS.add(GROUP_KEY);\r\n+        UNLOADING_KEYS.add(VERSION_KEY);\r\n+        UNLOADING_KEYS.add(DUBBO_VERSION_KEY);\r\n+        UNLOADING_KEYS.add(TOKEN_KEY);\r\n+        UNLOADING_KEYS.add(TIMEOUT_KEY);\r\n+        UNLOADING_KEYS.add(TIMEOUT_ATTACHMENT_KEY);\r\n+\r\n+        // Remove async property to avoid being passed to the following invoke chain.\r\n+        UNLOADING_KEYS.add(ASYNC_KEY);\r\n+        UNLOADING_KEYS.add(TAG_KEY);\r\n+        UNLOADING_KEYS.add(FORCE_USE_TAG);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {\r\n+        Map<String, Object> attachments = invocation.getObjectAttachments();\r\n+        if (attachments != null) {\r\n+            Map<String, Object> newAttach = new HashMap<>(attachments.size());\r\n+            for (Map.Entry<String, Object> entry : attachments.entrySet()) {\r\n+                String key = entry.getKey();\r\n+                if (!UNLOADING_KEYS.contains(key)) {\r\n+                    newAttach.put(key, entry.getValue());\r\n+                }\r\n+            }\r\n+            attachments = newAttach;\r\n+        }\r\n+\r\n+        RpcContext context = RpcContext.getContext();\r\n+        context.setInvoker(invoker)\r\n+                .setInvocation(invocation)\r\n+//                .setAttachments(attachments)  // merged from dubbox\r\n+                .setLocalAddress(invoker.getUrl().getHost(), invoker.getUrl().getPort());\r\n+        String remoteApplication = (String) invocation.getAttachment(REMOTE_APPLICATION_KEY);\r\n+        if (StringUtils.isNotEmpty(remoteApplication)) {\r\n+            context.setRemoteApplicationName(remoteApplication);\r\n+        } else {\r\n+            context.setRemoteApplicationName((String) context.getAttachment(REMOTE_APPLICATION_KEY));\r\n+        }\r\n+\r\n+        long timeout = RpcUtils.getTimeout(invocation, -1);\r\n+        if (timeout != -1) {\r\n+            context.set(TIME_COUNTDOWN_KEY, TimeoutCountDown.newCountDown(timeout, TimeUnit.MILLISECONDS));\r\n+        }\r\n+\r\n+        // merged from dubbox\r\n+        // we may already added some attachments into RpcContext before this filter (e.g. in rest protocol)\r\n+        if (attachments != null) {\r\n+            if (context.getObjectAttachments() != null) {\r\n+                context.getObjectAttachments().putAll(attachments);\r\n+            } else {\r\n+                context.setObjectAttachments(attachments);\r\n+            }\r\n+        }\r\n+\r\n+        if (invocation instanceof RpcInvocation) {\r\n+            ((RpcInvocation) invocation).setInvoker(invoker);\r\n+        }\r\n+\r\n+        try {\r\n+            context.clearAfterEachInvoke(false);\r\n+            return invoker.invoke(invocation);\r\n+        } finally {\r\n+            context.clearAfterEachInvoke(true);\r\n+            // IMPORTANT! For async scenario, we must remove context from current thread, so we always create a new RpcContext for the next invoke for the same thread.\r\n+            RpcContext.removeContext(true);\r\n+            RpcContext.removeServerContext();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void onResponse(Result appResponse, Invoker<?> invoker, Invocation invocation) {\r\n+        // pass attachments to result\r\n+        appResponse.addObjectAttachments(RpcContext.getServerContext().getObjectAttachments());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void onError(Throwable t, Invoker<?> invoker, Invocation invocation) {\r\n+\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/filter/GenericFilter.java", "source2": "org/apache/dubbo/rpc/filter/GenericFilter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,237 +1,237 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.filter;\n-\n-import org.apache.dubbo.common.beanutil.JavaBeanAccessor;\n-import org.apache.dubbo.common.beanutil.JavaBeanDescriptor;\n-import org.apache.dubbo.common.beanutil.JavaBeanSerializeUtil;\n-import org.apache.dubbo.common.config.Configuration;\n-import org.apache.dubbo.common.constants.CommonConstants;\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.io.UnsafeByteArrayInputStream;\n-import org.apache.dubbo.common.io.UnsafeByteArrayOutputStream;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.serialize.Serialization;\n-import org.apache.dubbo.common.utils.PojoUtils;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.rpc.Filter;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.service.GenericException;\n-import org.apache.dubbo.rpc.service.GenericService;\n-import org.apache.dubbo.rpc.support.ProtocolUtils;\n-\n-import java.io.IOException;\n-import java.lang.reflect.Method;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE;\n-import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE_ASYNC;\n-import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_SERIALIZATION_BEAN;\n-import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_SERIALIZATION_NATIVE_JAVA;\n-import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_SERIALIZATION_PROTOBUF;\n-import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;\n-\n-/**\n- * GenericInvokerFilter.\n- */\n-@Activate(group = CommonConstants.PROVIDER, order = -20000)\n-public class GenericFilter implements Filter, Filter.Listener {\n-    private static final Logger logger = LoggerFactory.getLogger(GenericFilter.class);\n-\n-    @Override\n-    public Result invoke(Invoker<?> invoker, Invocation inv) throws RpcException {\n-        if ((inv.getMethodName().equals($INVOKE) || inv.getMethodName().equals($INVOKE_ASYNC))\n-                && inv.getArguments() != null\n-                && inv.getArguments().length == 3\n-                && !GenericService.class.isAssignableFrom(invoker.getInterface())) {\n-            String name = ((String) inv.getArguments()[0]).trim();\n-            String[] types = (String[]) inv.getArguments()[1];\n-            Object[] args = (Object[]) inv.getArguments()[2];\n-            try {\n-                Method method = ReflectUtils.findMethodByMethodSignature(invoker.getInterface(), name, types);\n-                Class<?>[] params = method.getParameterTypes();\n-                if (args == null) {\n-                    args = new Object[params.length];\n-                }\n-\n-                if (types == null) {\n-                    types = new String[params.length];\n-                }\n-\n-                if (args.length != types.length) {\n-                    throw new RpcException(\"GenericFilter#invoke args.length != types.length, please check your \"\n-                            + \"params\");\n-                }\n-                String generic = inv.getAttachment(GENERIC_KEY);\n-\n-                if (StringUtils.isBlank(generic)) {\n-                    generic = RpcContext.getContext().getAttachment(GENERIC_KEY);\n-                }\n-\n-                if (StringUtils.isEmpty(generic)\n-                        || ProtocolUtils.isDefaultGenericSerialization(generic)\n-                        || ProtocolUtils.isGenericReturnRawResult(generic)) {\n-                    args = PojoUtils.realize(args, params, method.getGenericParameterTypes());\n-                } else if (ProtocolUtils.isJavaGenericSerialization(generic)) {\n-                    Configuration configuration = ApplicationModel.getEnvironment().getConfiguration();\n-                    if (!configuration.getBoolean(CommonConstants.ENABLE_NATIVE_JAVA_GENERIC_SERIALIZE, false)) {\n-                        String notice = \"Trigger the safety barrier! \" +\n-                                \"Native Java Serializer is not allowed by default.\" +\n-                                \"This means currently maybe being attacking by others. \" +\n-                                \"If you are sure this is a mistake, \" +\n-                                \"please set `\" + CommonConstants.ENABLE_NATIVE_JAVA_GENERIC_SERIALIZE + \"` enable in configuration! \" +\n-                                \"Before doing so, please make sure you have configure JEP290 to prevent serialization attack.\";\n-                        logger.error(notice);\n-                        throw new RpcException(new IllegalStateException(notice));\n-                    }\n-\n-                    for (int i = 0; i < args.length; i++) {\n-                        if (byte[].class == args[i].getClass()) {\n-                            try (UnsafeByteArrayInputStream is = new UnsafeByteArrayInputStream((byte[]) args[i])) {\n-                                args[i] = ExtensionLoader.getExtensionLoader(Serialization.class)\n-                                        .getExtension(GENERIC_SERIALIZATION_NATIVE_JAVA)\n-                                        .deserialize(null, is).readObject();\n-                            } catch (Exception e) {\n-                                throw new RpcException(\"Deserialize argument [\" + (i + 1) + \"] failed.\", e);\n-                            }\n-                        } else {\n-                            throw new RpcException(\n-                                    \"Generic serialization [\" +\n-                                            GENERIC_SERIALIZATION_NATIVE_JAVA +\n-                                            \"] only support message type \" +\n-                                            byte[].class +\n-                                            \" and your message type is \" +\n-                                            args[i].getClass());\n-                        }\n-                    }\n-                } else if (ProtocolUtils.isBeanGenericSerialization(generic)) {\n-                    for (int i = 0; i < args.length; i++) {\n-                        if (args[i] instanceof JavaBeanDescriptor) {\n-                            args[i] = JavaBeanSerializeUtil.deserialize((JavaBeanDescriptor) args[i]);\n-                        } else {\n-                            throw new RpcException(\n-                                    \"Generic serialization [\" +\n-                                            GENERIC_SERIALIZATION_BEAN +\n-                                            \"] only support message type \" +\n-                                            JavaBeanDescriptor.class.getName() +\n-                                            \" and your message type is \" +\n-                                            args[i].getClass().getName());\n-                        }\n-                    }\n-                } else if (ProtocolUtils.isProtobufGenericSerialization(generic)) {\n-                    // as proto3 only accept one protobuf parameter\n-                    if (args.length == 1 && args[0] instanceof String) {\n-                        try (UnsafeByteArrayInputStream is =\n-                                     new UnsafeByteArrayInputStream(((String) args[0]).getBytes())) {\n-                            args[0] = ExtensionLoader.getExtensionLoader(Serialization.class)\n-                                    .getExtension(GENERIC_SERIALIZATION_PROTOBUF)\n-                                    .deserialize(null, is).readObject(method.getParameterTypes()[0]);\n-                        } catch (Exception e) {\n-                            throw new RpcException(\"Deserialize argument failed.\", e);\n-                        }\n-                    } else {\n-                        throw new RpcException(\n-                                \"Generic serialization [\" +\n-                                        GENERIC_SERIALIZATION_PROTOBUF +\n-                                        \"] only support one \" + String.class.getName() +\n-                                        \" argument and your message size is \" +\n-                                        args.length + \" and type is\" +\n-                                        args[0].getClass().getName());\n-                    }\n-                }\n-\n-                RpcInvocation rpcInvocation = new RpcInvocation(method, invoker.getInterface().getName(), invoker.getUrl().getProtocolServiceKey(), args, inv.getObjectAttachments(), inv.getAttributes());\n-                rpcInvocation.setInvoker(inv.getInvoker());\n-                rpcInvocation.setTargetServiceUniqueName(inv.getTargetServiceUniqueName());\n-\n-                return invoker.invoke(rpcInvocation);\n-            } catch (NoSuchMethodException | ClassNotFoundException e) {\n-                throw new RpcException(e.getMessage(), e);\n-            }\n-        }\n-        return invoker.invoke(inv);\n-    }\n-\n-    @Override\n-    public void onResponse(Result appResponse, Invoker<?> invoker, Invocation inv) {\n-        if ((inv.getMethodName().equals($INVOKE) || inv.getMethodName().equals($INVOKE_ASYNC))\n-                && inv.getArguments() != null\n-                && inv.getArguments().length == 3\n-                && !GenericService.class.isAssignableFrom(invoker.getInterface())) {\n-\n-            String generic = inv.getAttachment(GENERIC_KEY);\n-            if (StringUtils.isBlank(generic)) {\n-                generic = RpcContext.getContext().getAttachment(GENERIC_KEY);\n-            }\n-\n-            if (appResponse.hasException()) {\n-                Throwable appException = appResponse.getException();\n-                if (appException instanceof GenericException) {\n-                    GenericException tmp = (GenericException) appException;\n-                    appException = new com.alibaba.dubbo.rpc.service.GenericException(tmp.getExceptionClass(), tmp.getExceptionMessage());\n-                }\n-                if (!(appException instanceof com.alibaba.dubbo.rpc.service.GenericException)) {\n-                    appException = new com.alibaba.dubbo.rpc.service.GenericException(appException);\n-                }\n-                appResponse.setException(appException);\n-            }\n-            if (ProtocolUtils.isJavaGenericSerialization(generic)) {\n-                try {\n-                    UnsafeByteArrayOutputStream os = new UnsafeByteArrayOutputStream(512);\n-                    ExtensionLoader.getExtensionLoader(Serialization.class).getExtension(GENERIC_SERIALIZATION_NATIVE_JAVA).serialize(null, os).writeObject(appResponse.getValue());\n-                    appResponse.setValue(os.toByteArray());\n-                } catch (IOException e) {\n-                    throw new RpcException(\n-                            \"Generic serialization [\" +\n-                                    GENERIC_SERIALIZATION_NATIVE_JAVA +\n-                                    \"] serialize result failed.\", e);\n-                }\n-            } else if (ProtocolUtils.isBeanGenericSerialization(generic)) {\n-                appResponse.setValue(JavaBeanSerializeUtil.serialize(appResponse.getValue(), JavaBeanAccessor.METHOD));\n-            } else if (ProtocolUtils.isProtobufGenericSerialization(generic)) {\n-                try {\n-                    UnsafeByteArrayOutputStream os = new UnsafeByteArrayOutputStream(512);\n-                    ExtensionLoader.getExtensionLoader(Serialization.class)\n-                            .getExtension(GENERIC_SERIALIZATION_PROTOBUF)\n-                            .serialize(null, os).writeObject(appResponse.getValue());\n-                    appResponse.setValue(os.toString());\n-                } catch (IOException e) {\n-                    throw new RpcException(\"Generic serialization [\" +\n-                            GENERIC_SERIALIZATION_PROTOBUF +\n-                            \"] serialize result failed.\", e);\n-                }\n-            } else if (ProtocolUtils.isGenericReturnRawResult(generic)) {\n-                return;\n-            } else {\n-                appResponse.setValue(PojoUtils.generalize(appResponse.getValue()));\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public void onError(Throwable t, Invoker<?> invoker, Invocation invocation) {\n-\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.filter;\r\n+\r\n+import org.apache.dubbo.common.beanutil.JavaBeanAccessor;\r\n+import org.apache.dubbo.common.beanutil.JavaBeanDescriptor;\r\n+import org.apache.dubbo.common.beanutil.JavaBeanSerializeUtil;\r\n+import org.apache.dubbo.common.config.Configuration;\r\n+import org.apache.dubbo.common.constants.CommonConstants;\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.io.UnsafeByteArrayInputStream;\r\n+import org.apache.dubbo.common.io.UnsafeByteArrayOutputStream;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+import org.apache.dubbo.common.utils.PojoUtils;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.rpc.Filter;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.service.GenericException;\r\n+import org.apache.dubbo.rpc.service.GenericService;\r\n+import org.apache.dubbo.rpc.support.ProtocolUtils;\r\n+\r\n+import java.io.IOException;\r\n+import java.lang.reflect.Method;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE_ASYNC;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_SERIALIZATION_BEAN;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_SERIALIZATION_NATIVE_JAVA;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_SERIALIZATION_PROTOBUF;\r\n+import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;\r\n+\r\n+/**\r\n+ * GenericInvokerFilter.\r\n+ */\r\n+@Activate(group = CommonConstants.PROVIDER, order = -20000)\r\n+public class GenericFilter implements Filter, Filter.Listener {\r\n+    private static final Logger logger = LoggerFactory.getLogger(GenericFilter.class);\r\n+\r\n+    @Override\r\n+    public Result invoke(Invoker<?> invoker, Invocation inv) throws RpcException {\r\n+        if ((inv.getMethodName().equals($INVOKE) || inv.getMethodName().equals($INVOKE_ASYNC))\r\n+                && inv.getArguments() != null\r\n+                && inv.getArguments().length == 3\r\n+                && !GenericService.class.isAssignableFrom(invoker.getInterface())) {\r\n+            String name = ((String) inv.getArguments()[0]).trim();\r\n+            String[] types = (String[]) inv.getArguments()[1];\r\n+            Object[] args = (Object[]) inv.getArguments()[2];\r\n+            try {\r\n+                Method method = ReflectUtils.findMethodByMethodSignature(invoker.getInterface(), name, types);\r\n+                Class<?>[] params = method.getParameterTypes();\r\n+                if (args == null) {\r\n+                    args = new Object[params.length];\r\n+                }\r\n+\r\n+                if (types == null) {\r\n+                    types = new String[params.length];\r\n+                }\r\n+\r\n+                if (args.length != types.length) {\r\n+                    throw new RpcException(\"GenericFilter#invoke args.length != types.length, please check your \"\r\n+                            + \"params\");\r\n+                }\r\n+                String generic = inv.getAttachment(GENERIC_KEY);\r\n+\r\n+                if (StringUtils.isBlank(generic)) {\r\n+                    generic = RpcContext.getContext().getAttachment(GENERIC_KEY);\r\n+                }\r\n+\r\n+                if (StringUtils.isEmpty(generic)\r\n+                        || ProtocolUtils.isDefaultGenericSerialization(generic)\r\n+                        || ProtocolUtils.isGenericReturnRawResult(generic)) {\r\n+                    args = PojoUtils.realize(args, params, method.getGenericParameterTypes());\r\n+                } else if (ProtocolUtils.isJavaGenericSerialization(generic)) {\r\n+                    Configuration configuration = ApplicationModel.getEnvironment().getConfiguration();\r\n+                    if (!configuration.getBoolean(CommonConstants.ENABLE_NATIVE_JAVA_GENERIC_SERIALIZE, false)) {\r\n+                        String notice = \"Trigger the safety barrier! \" +\r\n+                                \"Native Java Serializer is not allowed by default.\" +\r\n+                                \"This means currently maybe being attacking by others. \" +\r\n+                                \"If you are sure this is a mistake, \" +\r\n+                                \"please set `\" + CommonConstants.ENABLE_NATIVE_JAVA_GENERIC_SERIALIZE + \"` enable in configuration! \" +\r\n+                                \"Before doing so, please make sure you have configure JEP290 to prevent serialization attack.\";\r\n+                        logger.error(notice);\r\n+                        throw new RpcException(new IllegalStateException(notice));\r\n+                    }\r\n+\r\n+                    for (int i = 0; i < args.length; i++) {\r\n+                        if (byte[].class == args[i].getClass()) {\r\n+                            try (UnsafeByteArrayInputStream is = new UnsafeByteArrayInputStream((byte[]) args[i])) {\r\n+                                args[i] = ExtensionLoader.getExtensionLoader(Serialization.class)\r\n+                                        .getExtension(GENERIC_SERIALIZATION_NATIVE_JAVA)\r\n+                                        .deserialize(null, is).readObject();\r\n+                            } catch (Exception e) {\r\n+                                throw new RpcException(\"Deserialize argument [\" + (i + 1) + \"] failed.\", e);\r\n+                            }\r\n+                        } else {\r\n+                            throw new RpcException(\r\n+                                    \"Generic serialization [\" +\r\n+                                            GENERIC_SERIALIZATION_NATIVE_JAVA +\r\n+                                            \"] only support message type \" +\r\n+                                            byte[].class +\r\n+                                            \" and your message type is \" +\r\n+                                            args[i].getClass());\r\n+                        }\r\n+                    }\r\n+                } else if (ProtocolUtils.isBeanGenericSerialization(generic)) {\r\n+                    for (int i = 0; i < args.length; i++) {\r\n+                        if (args[i] instanceof JavaBeanDescriptor) {\r\n+                            args[i] = JavaBeanSerializeUtil.deserialize((JavaBeanDescriptor) args[i]);\r\n+                        } else {\r\n+                            throw new RpcException(\r\n+                                    \"Generic serialization [\" +\r\n+                                            GENERIC_SERIALIZATION_BEAN +\r\n+                                            \"] only support message type \" +\r\n+                                            JavaBeanDescriptor.class.getName() +\r\n+                                            \" and your message type is \" +\r\n+                                            args[i].getClass().getName());\r\n+                        }\r\n+                    }\r\n+                } else if (ProtocolUtils.isProtobufGenericSerialization(generic)) {\r\n+                    // as proto3 only accept one protobuf parameter\r\n+                    if (args.length == 1 && args[0] instanceof String) {\r\n+                        try (UnsafeByteArrayInputStream is =\r\n+                                     new UnsafeByteArrayInputStream(((String) args[0]).getBytes())) {\r\n+                            args[0] = ExtensionLoader.getExtensionLoader(Serialization.class)\r\n+                                    .getExtension(GENERIC_SERIALIZATION_PROTOBUF)\r\n+                                    .deserialize(null, is).readObject(method.getParameterTypes()[0]);\r\n+                        } catch (Exception e) {\r\n+                            throw new RpcException(\"Deserialize argument failed.\", e);\r\n+                        }\r\n+                    } else {\r\n+                        throw new RpcException(\r\n+                                \"Generic serialization [\" +\r\n+                                        GENERIC_SERIALIZATION_PROTOBUF +\r\n+                                        \"] only support one \" + String.class.getName() +\r\n+                                        \" argument and your message size is \" +\r\n+                                        args.length + \" and type is\" +\r\n+                                        args[0].getClass().getName());\r\n+                    }\r\n+                }\r\n+\r\n+                RpcInvocation rpcInvocation = new RpcInvocation(method, invoker.getInterface().getName(), invoker.getUrl().getProtocolServiceKey(), args, inv.getObjectAttachments(), inv.getAttributes());\r\n+                rpcInvocation.setInvoker(inv.getInvoker());\r\n+                rpcInvocation.setTargetServiceUniqueName(inv.getTargetServiceUniqueName());\r\n+\r\n+                return invoker.invoke(rpcInvocation);\r\n+            } catch (NoSuchMethodException | ClassNotFoundException e) {\r\n+                throw new RpcException(e.getMessage(), e);\r\n+            }\r\n+        }\r\n+        return invoker.invoke(inv);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void onResponse(Result appResponse, Invoker<?> invoker, Invocation inv) {\r\n+        if ((inv.getMethodName().equals($INVOKE) || inv.getMethodName().equals($INVOKE_ASYNC))\r\n+                && inv.getArguments() != null\r\n+                && inv.getArguments().length == 3\r\n+                && !GenericService.class.isAssignableFrom(invoker.getInterface())) {\r\n+\r\n+            String generic = inv.getAttachment(GENERIC_KEY);\r\n+            if (StringUtils.isBlank(generic)) {\r\n+                generic = RpcContext.getContext().getAttachment(GENERIC_KEY);\r\n+            }\r\n+\r\n+            if (appResponse.hasException()) {\r\n+                Throwable appException = appResponse.getException();\r\n+                if (appException instanceof GenericException) {\r\n+                    GenericException tmp = (GenericException) appException;\r\n+                    appException = new com.alibaba.dubbo.rpc.service.GenericException(tmp.getExceptionClass(), tmp.getExceptionMessage());\r\n+                }\r\n+                if (!(appException instanceof com.alibaba.dubbo.rpc.service.GenericException)) {\r\n+                    appException = new com.alibaba.dubbo.rpc.service.GenericException(appException);\r\n+                }\r\n+                appResponse.setException(appException);\r\n+            }\r\n+            if (ProtocolUtils.isJavaGenericSerialization(generic)) {\r\n+                try {\r\n+                    UnsafeByteArrayOutputStream os = new UnsafeByteArrayOutputStream(512);\r\n+                    ExtensionLoader.getExtensionLoader(Serialization.class).getExtension(GENERIC_SERIALIZATION_NATIVE_JAVA).serialize(null, os).writeObject(appResponse.getValue());\r\n+                    appResponse.setValue(os.toByteArray());\r\n+                } catch (IOException e) {\r\n+                    throw new RpcException(\r\n+                            \"Generic serialization [\" +\r\n+                                    GENERIC_SERIALIZATION_NATIVE_JAVA +\r\n+                                    \"] serialize result failed.\", e);\r\n+                }\r\n+            } else if (ProtocolUtils.isBeanGenericSerialization(generic)) {\r\n+                appResponse.setValue(JavaBeanSerializeUtil.serialize(appResponse.getValue(), JavaBeanAccessor.METHOD));\r\n+            } else if (ProtocolUtils.isProtobufGenericSerialization(generic)) {\r\n+                try {\r\n+                    UnsafeByteArrayOutputStream os = new UnsafeByteArrayOutputStream(512);\r\n+                    ExtensionLoader.getExtensionLoader(Serialization.class)\r\n+                            .getExtension(GENERIC_SERIALIZATION_PROTOBUF)\r\n+                            .serialize(null, os).writeObject(appResponse.getValue());\r\n+                    appResponse.setValue(os.toString());\r\n+                } catch (IOException e) {\r\n+                    throw new RpcException(\"Generic serialization [\" +\r\n+                            GENERIC_SERIALIZATION_PROTOBUF +\r\n+                            \"] serialize result failed.\", e);\r\n+                }\r\n+            } else if (ProtocolUtils.isGenericReturnRawResult(generic)) {\r\n+                return;\r\n+            } else {\r\n+                appResponse.setValue(PojoUtils.generalize(appResponse.getValue()));\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void onError(Throwable t, Invoker<?> invoker, Invocation invocation) {\r\n+\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/filter/TpsLimitFilter.java", "source2": "org/apache/dubbo/rpc/filter/TpsLimitFilter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,59 +1,59 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.rpc.filter;\n-\n-import org.apache.dubbo.common.constants.CommonConstants;\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.rpc.Filter;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.filter.tps.DefaultTPSLimiter;\n-import org.apache.dubbo.rpc.filter.tps.TPSLimiter;\n-\n-import static org.apache.dubbo.rpc.Constants.TPS_LIMIT_RATE_KEY;\n-\n-/**\n- * TpsLimitFilter limit the TPS (transaction per second) for all method of a service or a particular method.\n- * Service or method url can define <b>tps</b> or <b>tps.interval</b> to control this control.It use {@link DefaultTPSLimiter}\n- * as it limit checker. If a provider service method is configured with <b>tps</b>(optionally with <b>tps.interval</b>),then\n- * if invocation count exceed the configured <b>tps</b> value (default is -1 which means unlimited) then invocation will get\n- * RpcException.\n- * */\n-@Activate(group = CommonConstants.PROVIDER, value = TPS_LIMIT_RATE_KEY)\n-public class TpsLimitFilter implements Filter {\n-\n-    private final TPSLimiter tpsLimiter = new DefaultTPSLimiter();\n-\n-    @Override\n-    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {\n-\n-        if (!tpsLimiter.isAllowable(invoker.getUrl(), invocation)) {\n-            throw new RpcException(\n-                    \"Failed to invoke service \" +\n-                            invoker.getInterface().getName() +\n-                            \".\" +\n-                            invocation.getMethodName() +\n-                            \" because exceed max service tps.\");\n-        }\n-\n-        return invoker.invoke(invocation);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.rpc.filter;\r\n+\r\n+import org.apache.dubbo.common.constants.CommonConstants;\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.rpc.Filter;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.filter.tps.DefaultTPSLimiter;\r\n+import org.apache.dubbo.rpc.filter.tps.TPSLimiter;\r\n+\r\n+import static org.apache.dubbo.rpc.Constants.TPS_LIMIT_RATE_KEY;\r\n+\r\n+/**\r\n+ * TpsLimitFilter limit the TPS (transaction per second) for all method of a service or a particular method.\r\n+ * Service or method url can define <b>tps</b> or <b>tps.interval</b> to control this control.It use {@link DefaultTPSLimiter}\r\n+ * as it limit checker. If a provider service method is configured with <b>tps</b>(optionally with <b>tps.interval</b>),then\r\n+ * if invocation count exceed the configured <b>tps</b> value (default is -1 which means unlimited) then invocation will get\r\n+ * RpcException.\r\n+ * */\r\n+@Activate(group = CommonConstants.PROVIDER, value = TPS_LIMIT_RATE_KEY)\r\n+public class TpsLimitFilter implements Filter {\r\n+\r\n+    private final TPSLimiter tpsLimiter = new DefaultTPSLimiter();\r\n+\r\n+    @Override\r\n+    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {\r\n+\r\n+        if (!tpsLimiter.isAllowable(invoker.getUrl(), invocation)) {\r\n+            throw new RpcException(\r\n+                    \"Failed to invoke service \" +\r\n+                            invoker.getInterface().getName() +\r\n+                            \".\" +\r\n+                            invocation.getMethodName() +\r\n+                            \" because exceed max service tps.\");\r\n+        }\r\n+\r\n+        return invoker.invoke(invocation);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiter.java", "source2": "org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,67 +1,67 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.filter.tps;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.rpc.Invocation;\n-\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-import static org.apache.dubbo.rpc.Constants.TPS_LIMIT_RATE_KEY;\n-import static org.apache.dubbo.rpc.Constants.TPS_LIMIT_INTERVAL_KEY;\n-import static org.apache.dubbo.rpc.Constants.DEFAULT_TPS_LIMIT_INTERVAL;\n-\n-/**\n- * DefaultTPSLimiter is a default implementation for tps filter. It is an in memory based implementation for storing\n- * tps information. It internally use\n- *\n- * @see org.apache.dubbo.rpc.filter.TpsLimitFilter\n- */\n-public class DefaultTPSLimiter implements TPSLimiter {\n-\n-    private final ConcurrentMap<String, StatItem> stats = new ConcurrentHashMap<String, StatItem>();\n-\n-    @Override\n-    public boolean isAllowable(URL url, Invocation invocation) {\n-        int rate = url.getParameter(TPS_LIMIT_RATE_KEY, -1);\n-        long interval = url.getParameter(TPS_LIMIT_INTERVAL_KEY, DEFAULT_TPS_LIMIT_INTERVAL);\n-        String serviceKey = url.getServiceKey();\n-        if (rate > 0) {\n-            StatItem statItem = stats.get(serviceKey);\n-            if (statItem == null) {\n-                stats.putIfAbsent(serviceKey, new StatItem(serviceKey, rate, interval));\n-                statItem = stats.get(serviceKey);\n-            } else {\n-                //rate or interval has changed, rebuild\n-                if (statItem.getRate() != rate || statItem.getInterval() != interval) {\n-                    stats.put(serviceKey, new StatItem(serviceKey, rate, interval));\n-                    statItem = stats.get(serviceKey);\n-                }\n-            }\n-            return statItem.isAllowable();\n-        } else {\n-            StatItem statItem = stats.get(serviceKey);\n-            if (statItem != null) {\n-                stats.remove(serviceKey);\n-            }\n-        }\n-\n-        return true;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.filter.tps;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+import static org.apache.dubbo.rpc.Constants.TPS_LIMIT_RATE_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.TPS_LIMIT_INTERVAL_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.DEFAULT_TPS_LIMIT_INTERVAL;\r\n+\r\n+/**\r\n+ * DefaultTPSLimiter is a default implementation for tps filter. It is an in memory based implementation for storing\r\n+ * tps information. It internally use\r\n+ *\r\n+ * @see org.apache.dubbo.rpc.filter.TpsLimitFilter\r\n+ */\r\n+public class DefaultTPSLimiter implements TPSLimiter {\r\n+\r\n+    private final ConcurrentMap<String, StatItem> stats = new ConcurrentHashMap<String, StatItem>();\r\n+\r\n+    @Override\r\n+    public boolean isAllowable(URL url, Invocation invocation) {\r\n+        int rate = url.getParameter(TPS_LIMIT_RATE_KEY, -1);\r\n+        long interval = url.getParameter(TPS_LIMIT_INTERVAL_KEY, DEFAULT_TPS_LIMIT_INTERVAL);\r\n+        String serviceKey = url.getServiceKey();\r\n+        if (rate > 0) {\r\n+            StatItem statItem = stats.get(serviceKey);\r\n+            if (statItem == null) {\r\n+                stats.putIfAbsent(serviceKey, new StatItem(serviceKey, rate, interval));\r\n+                statItem = stats.get(serviceKey);\r\n+            } else {\r\n+                //rate or interval has changed, rebuild\r\n+                if (statItem.getRate() != rate || statItem.getInterval() != interval) {\r\n+                    stats.put(serviceKey, new StatItem(serviceKey, rate, interval));\r\n+                    statItem = stats.get(serviceKey);\r\n+                }\r\n+            }\r\n+            return statItem.isAllowable();\r\n+        } else {\r\n+            StatItem statItem = stats.get(serviceKey);\r\n+            if (statItem != null) {\r\n+                stats.remove(serviceKey);\r\n+            }\r\n+        }\r\n+\r\n+        return true;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/filter/tps/StatItem.java", "source2": "org/apache/dubbo/rpc/filter/tps/StatItem.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,92 +1,92 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.filter.tps;\n-\n-import java.util.concurrent.atomic.LongAdder;\n-\n-/**\n- * Judge whether a particular invocation of service provider method should be allowed within a configured time interval.\n- * As a state it contain name of key ( e.g. method), last invocation time, interval and rate count.\n- */\n-class StatItem {\n-\n-    private String name;\n-\n-    private long lastResetTime;\n-\n-    private long interval;\n-\n-    private LongAdder token;\n-\n-    private int rate;\n-\n-    StatItem(String name, int rate, long interval) {\n-        this.name = name;\n-        this.rate = rate;\n-        this.interval = interval;\n-        this.lastResetTime = System.currentTimeMillis();\n-        this.token = buildLongAdder(rate);\n-    }\n-\n-    public boolean isAllowable() {\n-        long now = System.currentTimeMillis();\n-        if (now > lastResetTime + interval) {\n-            token = buildLongAdder(rate);\n-            lastResetTime = now;\n-        }\n-\n-        if (token.sum() < 0) {\n-            return false;\n-        }\n-        token.decrement();\n-        return true;\n-    }\n-\n-    public long getInterval() {\n-        return interval;\n-    }\n-\n-\n-    public int getRate() {\n-        return rate;\n-    }\n-\n-\n-    long getLastResetTime() {\n-        return lastResetTime;\n-    }\n-\n-    long getToken() {\n-        return token.sum();\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return new StringBuilder(32).append(\"StatItem \")\n-                .append(\"[name=\").append(name).append(\", \")\n-                .append(\"rate = \").append(rate).append(\", \")\n-                .append(\"interval = \").append(interval).append(\"]\")\n-                .toString();\n-    }\n-\n-    private LongAdder buildLongAdder(int rate) {\n-        LongAdder adder = new LongAdder();\n-        adder.add(rate);\n-        return adder;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.filter.tps;\r\n+\r\n+import java.util.concurrent.atomic.LongAdder;\r\n+\r\n+/**\r\n+ * Judge whether a particular invocation of service provider method should be allowed within a configured time interval.\r\n+ * As a state it contain name of key ( e.g. method), last invocation time, interval and rate count.\r\n+ */\r\n+class StatItem {\r\n+\r\n+    private String name;\r\n+\r\n+    private long lastResetTime;\r\n+\r\n+    private long interval;\r\n+\r\n+    private LongAdder token;\r\n+\r\n+    private int rate;\r\n+\r\n+    StatItem(String name, int rate, long interval) {\r\n+        this.name = name;\r\n+        this.rate = rate;\r\n+        this.interval = interval;\r\n+        this.lastResetTime = System.currentTimeMillis();\r\n+        this.token = buildLongAdder(rate);\r\n+    }\r\n+\r\n+    public boolean isAllowable() {\r\n+        long now = System.currentTimeMillis();\r\n+        if (now > lastResetTime + interval) {\r\n+            token = buildLongAdder(rate);\r\n+            lastResetTime = now;\r\n+        }\r\n+\r\n+        if (token.sum() < 0) {\r\n+            return false;\r\n+        }\r\n+        token.decrement();\r\n+        return true;\r\n+    }\r\n+\r\n+    public long getInterval() {\r\n+        return interval;\r\n+    }\r\n+\r\n+\r\n+    public int getRate() {\r\n+        return rate;\r\n+    }\r\n+\r\n+\r\n+    long getLastResetTime() {\r\n+        return lastResetTime;\r\n+    }\r\n+\r\n+    long getToken() {\r\n+        return token.sum();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return new StringBuilder(32).append(\"StatItem \")\r\n+                .append(\"[name=\").append(name).append(\", \")\r\n+                .append(\"rate = \").append(rate).append(\", \")\r\n+                .append(\"interval = \").append(interval).append(\"]\")\r\n+                .toString();\r\n+    }\r\n+\r\n+    private LongAdder buildLongAdder(int rate) {\r\n+        LongAdder adder = new LongAdder();\r\n+        adder.add(rate);\r\n+        return adder;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/AbstractInvoker.java", "source2": "org/apache/dubbo/rpc/protocol/AbstractInvoker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,208 +1,208 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.Version;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.threadpool.ThreadlessExecutor;\n-import org.apache.dubbo.common.threadpool.manager.ExecutorRepository;\n-import org.apache.dubbo.common.utils.ArrayUtils;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.remoting.transport.CodecSupport;\n-import org.apache.dubbo.rpc.AsyncRpcResult;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.InvokeMode;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-import org.apache.dubbo.rpc.protocol.dubbo.FutureAdapter;\n-import org.apache.dubbo.rpc.support.RpcUtils;\n-\n-import java.lang.reflect.InvocationTargetException;\n-import java.util.Collections;\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.atomic.AtomicBoolean;\n-\n-import static org.apache.dubbo.remoting.Constants.DEFAULT_REMOTING_SERIALIZATION;\n-import static org.apache.dubbo.remoting.Constants.SERIALIZATION_KEY;\n-import static org.apache.dubbo.rpc.Constants.SERIALIZATION_ID_KEY;\n-\n-/**\n- * This Invoker works on Consumer side.\n- */\n-public abstract class AbstractInvoker<T> implements Invoker<T> {\n-\n-    protected final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    private final Class<T> type;\n-\n-    private final URL url;\n-\n-    private final Map<String, Object> attachment;\n-\n-    private volatile boolean available = true;\n-\n-    private AtomicBoolean destroyed = new AtomicBoolean(false);\n-\n-    public AbstractInvoker(Class<T> type, URL url) {\n-        this(type, url, (Map<String, Object>) null);\n-    }\n-\n-    public AbstractInvoker(Class<T> type, URL url, String[] keys) {\n-        this(type, url, convertAttachment(url, keys));\n-    }\n-\n-    public AbstractInvoker(Class<T> type, URL url, Map<String, Object> attachment) {\n-        if (type == null) {\n-            throw new IllegalArgumentException(\"service type == null\");\n-        }\n-        if (url == null) {\n-            throw new IllegalArgumentException(\"service url == null\");\n-        }\n-        this.type = type;\n-        this.url = url;\n-        this.attachment = attachment == null ? null : Collections.unmodifiableMap(attachment);\n-    }\n-\n-    private static Map<String, Object> convertAttachment(URL url, String[] keys) {\n-        if (ArrayUtils.isEmpty(keys)) {\n-            return null;\n-        }\n-        Map<String, Object> attachment = new HashMap<>();\n-        for (String key : keys) {\n-            String value = url.getParameter(key);\n-            if (value != null && value.length() > 0) {\n-                attachment.put(key, value);\n-            }\n-        }\n-        return attachment;\n-    }\n-\n-    @Override\n-    public Class<T> getInterface() {\n-        return type;\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return url;\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        return available;\n-    }\n-\n-    protected void setAvailable(boolean available) {\n-        this.available = available;\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        if (!destroyed.compareAndSet(false, true)) {\n-            return;\n-        }\n-        setAvailable(false);\n-    }\n-\n-    public boolean isDestroyed() {\n-        return destroyed.get();\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return getInterface() + \" -> \" + (getUrl() == null ? \"\" : getUrl().toString());\n-    }\n-\n-    @Override\n-    public Result invoke(Invocation inv) throws RpcException {\n-        // if invoker is destroyed due to address refresh from registry, let's allow the current invoke to proceed\n-        if (destroyed.get()) {\n-            logger.warn(\"Invoker for service \" + this + \" on consumer \" + NetUtils.getLocalHost() + \" is destroyed, \"\n-                    + \", dubbo version is \" + Version.getVersion() + \", this invoker should not be used any longer\");\n-        }\n-        RpcInvocation invocation = (RpcInvocation) inv;\n-        invocation.setInvoker(this);\n-        if (CollectionUtils.isNotEmptyMap(attachment)) {\n-            invocation.addObjectAttachmentsIfAbsent(attachment);\n-        }\n-\n-        Map<String, Object> contextAttachments = RpcContext.getContext().getObjectAttachments();\n-        if (CollectionUtils.isNotEmptyMap(contextAttachments)) {\n-            /**\n-             * invocation.addAttachmentsIfAbsent(context){@link RpcInvocation#addAttachmentsIfAbsent(Map)}should not be used here,\n-             * because the {@link RpcContext#setAttachment(String, String)} is passed in the Filter when the call is triggered\n-             * by the built-in retry mechanism of the Dubbo. The attachment to update RpcContext will no longer work, which is\n-             * a mistake in most cases (for example, through Filter to RpcContext output traceId and spanId and other information).\n-             */\n-            invocation.addObjectAttachments(contextAttachments);\n-        }\n-\n-        invocation.setInvokeMode(RpcUtils.getInvokeMode(url, invocation));\n-        RpcUtils.attachInvocationIdIfAsync(getUrl(), invocation);\n-\n-        Byte serializationId = CodecSupport.getIDByName(getUrl().getParameter(SERIALIZATION_KEY, DEFAULT_REMOTING_SERIALIZATION));\n-        if (serializationId != null) {\n-            invocation.put(SERIALIZATION_ID_KEY, serializationId);\n-        }\n-\n-        AsyncRpcResult asyncResult;\n-        try {\n-            asyncResult = (AsyncRpcResult) doInvoke(invocation);\n-        } catch (InvocationTargetException e) { // biz exception\n-            Throwable te = e.getTargetException();\n-            if (te == null) {\n-                asyncResult = AsyncRpcResult.newDefaultAsyncResult(null, e, invocation);\n-            } else {\n-                if (te instanceof RpcException) {\n-                    ((RpcException) te).setCode(RpcException.BIZ_EXCEPTION);\n-                }\n-                asyncResult = AsyncRpcResult.newDefaultAsyncResult(null, te, invocation);\n-            }\n-        } catch (RpcException e) {\n-            if (e.isBiz()) {\n-                asyncResult = AsyncRpcResult.newDefaultAsyncResult(null, e, invocation);\n-            } else {\n-                throw e;\n-            }\n-        } catch (Throwable e) {\n-            asyncResult = AsyncRpcResult.newDefaultAsyncResult(null, e, invocation);\n-        }\n-        RpcContext.getContext().setFuture(new FutureAdapter(asyncResult.getResponseFuture()));\n-        return asyncResult;\n-    }\n-\n-    protected ExecutorService getCallbackExecutor(URL url, Invocation inv) {\n-        ExecutorService sharedExecutor = ExtensionLoader.getExtensionLoader(ExecutorRepository.class).getDefaultExtension().getExecutor(url);\n-        if (InvokeMode.SYNC == RpcUtils.getInvokeMode(getUrl(), inv)) {\n-            return new ThreadlessExecutor(sharedExecutor);\n-        } else {\n-            return sharedExecutor;\n-        }\n-    }\n-\n-    protected abstract Result doInvoke(Invocation invocation) throws Throwable;\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.Version;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.threadpool.ThreadlessExecutor;\r\n+import org.apache.dubbo.common.threadpool.manager.ExecutorRepository;\r\n+import org.apache.dubbo.common.utils.ArrayUtils;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.remoting.transport.CodecSupport;\r\n+import org.apache.dubbo.rpc.AsyncRpcResult;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.InvokeMode;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+import org.apache.dubbo.rpc.protocol.dubbo.FutureAdapter;\r\n+import org.apache.dubbo.rpc.support.RpcUtils;\r\n+\r\n+import java.lang.reflect.InvocationTargetException;\r\n+import java.util.Collections;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+\r\n+import static org.apache.dubbo.remoting.Constants.DEFAULT_REMOTING_SERIALIZATION;\r\n+import static org.apache.dubbo.remoting.Constants.SERIALIZATION_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.SERIALIZATION_ID_KEY;\r\n+\r\n+/**\r\n+ * This Invoker works on Consumer side.\r\n+ */\r\n+public abstract class AbstractInvoker<T> implements Invoker<T> {\r\n+\r\n+    protected final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    private final Class<T> type;\r\n+\r\n+    private final URL url;\r\n+\r\n+    private final Map<String, Object> attachment;\r\n+\r\n+    private volatile boolean available = true;\r\n+\r\n+    private AtomicBoolean destroyed = new AtomicBoolean(false);\r\n+\r\n+    public AbstractInvoker(Class<T> type, URL url) {\r\n+        this(type, url, (Map<String, Object>) null);\r\n+    }\r\n+\r\n+    public AbstractInvoker(Class<T> type, URL url, String[] keys) {\r\n+        this(type, url, convertAttachment(url, keys));\r\n+    }\r\n+\r\n+    public AbstractInvoker(Class<T> type, URL url, Map<String, Object> attachment) {\r\n+        if (type == null) {\r\n+            throw new IllegalArgumentException(\"service type == null\");\r\n+        }\r\n+        if (url == null) {\r\n+            throw new IllegalArgumentException(\"service url == null\");\r\n+        }\r\n+        this.type = type;\r\n+        this.url = url;\r\n+        this.attachment = attachment == null ? null : Collections.unmodifiableMap(attachment);\r\n+    }\r\n+\r\n+    private static Map<String, Object> convertAttachment(URL url, String[] keys) {\r\n+        if (ArrayUtils.isEmpty(keys)) {\r\n+            return null;\r\n+        }\r\n+        Map<String, Object> attachment = new HashMap<>();\r\n+        for (String key : keys) {\r\n+            String value = url.getParameter(key);\r\n+            if (value != null && value.length() > 0) {\r\n+                attachment.put(key, value);\r\n+            }\r\n+        }\r\n+        return attachment;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Class<T> getInterface() {\r\n+        return type;\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return url;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        return available;\r\n+    }\r\n+\r\n+    protected void setAvailable(boolean available) {\r\n+        this.available = available;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        if (!destroyed.compareAndSet(false, true)) {\r\n+            return;\r\n+        }\r\n+        setAvailable(false);\r\n+    }\r\n+\r\n+    public boolean isDestroyed() {\r\n+        return destroyed.get();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return getInterface() + \" -> \" + (getUrl() == null ? \"\" : getUrl().toString());\r\n+    }\r\n+\r\n+    @Override\r\n+    public Result invoke(Invocation inv) throws RpcException {\r\n+        // if invoker is destroyed due to address refresh from registry, let's allow the current invoke to proceed\r\n+        if (destroyed.get()) {\r\n+            logger.warn(\"Invoker for service \" + this + \" on consumer \" + NetUtils.getLocalHost() + \" is destroyed, \"\r\n+                    + \", dubbo version is \" + Version.getVersion() + \", this invoker should not be used any longer\");\r\n+        }\r\n+        RpcInvocation invocation = (RpcInvocation) inv;\r\n+        invocation.setInvoker(this);\r\n+        if (CollectionUtils.isNotEmptyMap(attachment)) {\r\n+            invocation.addObjectAttachmentsIfAbsent(attachment);\r\n+        }\r\n+\r\n+        Map<String, Object> contextAttachments = RpcContext.getContext().getObjectAttachments();\r\n+        if (CollectionUtils.isNotEmptyMap(contextAttachments)) {\r\n+            /**\r\n+             * invocation.addAttachmentsIfAbsent(context){@link RpcInvocation#addAttachmentsIfAbsent(Map)}should not be used here,\r\n+             * because the {@link RpcContext#setAttachment(String, String)} is passed in the Filter when the call is triggered\r\n+             * by the built-in retry mechanism of the Dubbo. The attachment to update RpcContext will no longer work, which is\r\n+             * a mistake in most cases (for example, through Filter to RpcContext output traceId and spanId and other information).\r\n+             */\r\n+            invocation.addObjectAttachments(contextAttachments);\r\n+        }\r\n+\r\n+        invocation.setInvokeMode(RpcUtils.getInvokeMode(url, invocation));\r\n+        RpcUtils.attachInvocationIdIfAsync(getUrl(), invocation);\r\n+\r\n+        Byte serializationId = CodecSupport.getIDByName(getUrl().getParameter(SERIALIZATION_KEY, DEFAULT_REMOTING_SERIALIZATION));\r\n+        if (serializationId != null) {\r\n+            invocation.put(SERIALIZATION_ID_KEY, serializationId);\r\n+        }\r\n+\r\n+        AsyncRpcResult asyncResult;\r\n+        try {\r\n+            asyncResult = (AsyncRpcResult) doInvoke(invocation);\r\n+        } catch (InvocationTargetException e) { // biz exception\r\n+            Throwable te = e.getTargetException();\r\n+            if (te == null) {\r\n+                asyncResult = AsyncRpcResult.newDefaultAsyncResult(null, e, invocation);\r\n+            } else {\r\n+                if (te instanceof RpcException) {\r\n+                    ((RpcException) te).setCode(RpcException.BIZ_EXCEPTION);\r\n+                }\r\n+                asyncResult = AsyncRpcResult.newDefaultAsyncResult(null, te, invocation);\r\n+            }\r\n+        } catch (RpcException e) {\r\n+            if (e.isBiz()) {\r\n+                asyncResult = AsyncRpcResult.newDefaultAsyncResult(null, e, invocation);\r\n+            } else {\r\n+                throw e;\r\n+            }\r\n+        } catch (Throwable e) {\r\n+            asyncResult = AsyncRpcResult.newDefaultAsyncResult(null, e, invocation);\r\n+        }\r\n+        RpcContext.getContext().setFuture(new FutureAdapter(asyncResult.getResponseFuture()));\r\n+        return asyncResult;\r\n+    }\r\n+\r\n+    protected ExecutorService getCallbackExecutor(URL url, Invocation inv) {\r\n+        ExecutorService sharedExecutor = ExtensionLoader.getExtensionLoader(ExecutorRepository.class).getDefaultExtension().getExecutor(url);\r\n+        if (InvokeMode.SYNC == RpcUtils.getInvokeMode(getUrl(), inv)) {\r\n+            return new ThreadlessExecutor(sharedExecutor);\r\n+        } else {\r\n+            return sharedExecutor;\r\n+        }\r\n+    }\r\n+\r\n+    protected abstract Result doInvoke(Invocation invocation) throws Throwable;\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/AbstractProtocol.java", "source2": "org/apache/dubbo/rpc/protocol/AbstractProtocol.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,116 +1,116 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ConcurrentHashSet;\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.rpc.Exporter;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Protocol;\n-import org.apache.dubbo.rpc.ProtocolServer;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.support.ProtocolUtils;\n-\n-import java.util.ArrayList;\n-import java.util.Collection;\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-\n-/**\n- * abstract ProtocolSupport.\n- */\n-public abstract class AbstractProtocol implements Protocol {\n-\n-    protected final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    protected final Map<String, Exporter<?>> exporterMap = new ConcurrentHashMap<String, Exporter<?>>();\n-\n-    /**\n-     * <host:port, ProtocolServer>\n-     */\n-    protected final Map<String, ProtocolServer> serverMap = new ConcurrentHashMap<>();\n-\n-    //TODO SoftReference\n-    protected final Set<Invoker<?>> invokers = new ConcurrentHashSet<Invoker<?>>();\n-\n-    protected static String serviceKey(URL url) {\n-        int port = url.getParameter(Constants.BIND_PORT_KEY, url.getPort());\n-        return serviceKey(port, url.getPath(), url.getParameter(VERSION_KEY), url.getParameter(GROUP_KEY));\n-    }\n-\n-    protected static String serviceKey(int port, String serviceName, String serviceVersion, String serviceGroup) {\n-        return ProtocolUtils.serviceKey(port, serviceName, serviceVersion, serviceGroup);\n-    }\n-\n-    public List<ProtocolServer> getServers() {\n-        return Collections.unmodifiableList(new ArrayList<>(serverMap.values()));\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        for (Invoker<?> invoker : invokers) {\n-            if (invoker != null) {\n-                invokers.remove(invoker);\n-                try {\n-                    if (logger.isInfoEnabled()) {\n-                        logger.info(\"Destroy reference: \" + invoker.getUrl());\n-                    }\n-                    invoker.destroy();\n-                } catch (Throwable t) {\n-                    logger.warn(t.getMessage(), t);\n-                }\n-            }\n-        }\n-        for (String key : new ArrayList<String>(exporterMap.keySet())) {\n-            Exporter<?> exporter = exporterMap.remove(key);\n-            if (exporter != null) {\n-                try {\n-                    if (logger.isInfoEnabled()) {\n-                        logger.info(\"Unexport service: \" + exporter.getInvoker().getUrl());\n-                    }\n-                    exporter.unexport();\n-                } catch (Throwable t) {\n-                    logger.warn(t.getMessage(), t);\n-                }\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public <T> Invoker<T> refer(Class<T> type, URL url) throws RpcException {\n-        return new AsyncToSyncInvoker<>(protocolBindingRefer(type, url));\n-    }\n-\n-    protected abstract <T> Invoker<T> protocolBindingRefer(Class<T> type, URL url) throws RpcException;\n-\n-    public Map<String, Exporter<?>> getExporterMap() {\n-        return exporterMap;\n-    }\n-\n-    public Collection<Exporter<?>> getExporters() {\n-        return Collections.unmodifiableCollection(exporterMap.values());\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ConcurrentHashSet;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.rpc.Exporter;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Protocol;\r\n+import org.apache.dubbo.rpc.ProtocolServer;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.support.ProtocolUtils;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Collection;\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+\r\n+/**\r\n+ * abstract ProtocolSupport.\r\n+ */\r\n+public abstract class AbstractProtocol implements Protocol {\r\n+\r\n+    protected final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    protected final Map<String, Exporter<?>> exporterMap = new ConcurrentHashMap<String, Exporter<?>>();\r\n+\r\n+    /**\r\n+     * <host:port, ProtocolServer>\r\n+     */\r\n+    protected final Map<String, ProtocolServer> serverMap = new ConcurrentHashMap<>();\r\n+\r\n+    //TODO SoftReference\r\n+    protected final Set<Invoker<?>> invokers = new ConcurrentHashSet<Invoker<?>>();\r\n+\r\n+    protected static String serviceKey(URL url) {\r\n+        int port = url.getParameter(Constants.BIND_PORT_KEY, url.getPort());\r\n+        return serviceKey(port, url.getPath(), url.getParameter(VERSION_KEY), url.getParameter(GROUP_KEY));\r\n+    }\r\n+\r\n+    protected static String serviceKey(int port, String serviceName, String serviceVersion, String serviceGroup) {\r\n+        return ProtocolUtils.serviceKey(port, serviceName, serviceVersion, serviceGroup);\r\n+    }\r\n+\r\n+    public List<ProtocolServer> getServers() {\r\n+        return Collections.unmodifiableList(new ArrayList<>(serverMap.values()));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        for (Invoker<?> invoker : invokers) {\r\n+            if (invoker != null) {\r\n+                invokers.remove(invoker);\r\n+                try {\r\n+                    if (logger.isInfoEnabled()) {\r\n+                        logger.info(\"Destroy reference: \" + invoker.getUrl());\r\n+                    }\r\n+                    invoker.destroy();\r\n+                } catch (Throwable t) {\r\n+                    logger.warn(t.getMessage(), t);\r\n+                }\r\n+            }\r\n+        }\r\n+        for (String key : new ArrayList<String>(exporterMap.keySet())) {\r\n+            Exporter<?> exporter = exporterMap.remove(key);\r\n+            if (exporter != null) {\r\n+                try {\r\n+                    if (logger.isInfoEnabled()) {\r\n+                        logger.info(\"Unexport service: \" + exporter.getInvoker().getUrl());\r\n+                    }\r\n+                    exporter.unexport();\r\n+                } catch (Throwable t) {\r\n+                    logger.warn(t.getMessage(), t);\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> Invoker<T> refer(Class<T> type, URL url) throws RpcException {\r\n+        return new AsyncToSyncInvoker<>(protocolBindingRefer(type, url));\r\n+    }\r\n+\r\n+    protected abstract <T> Invoker<T> protocolBindingRefer(Class<T> type, URL url) throws RpcException;\r\n+\r\n+    public Map<String, Exporter<?>> getExporterMap() {\r\n+        return exporterMap;\r\n+    }\r\n+\r\n+    public Collection<Exporter<?>> getExporters() {\r\n+        return Collections.unmodifiableCollection(exporterMap.values());\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/AsyncToSyncInvoker.java", "source2": "org/apache/dubbo/rpc/protocol/AsyncToSyncInvoker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,102 +1,102 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.TimeoutException;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.InvokeMode;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-\n-import java.util.concurrent.ExecutionException;\n-import java.util.concurrent.TimeUnit;\n-\n-/**\n- * This class will work as a wrapper wrapping outside of each protocol invoker.\n- *\n- * @param <T>\n- */\n-public class AsyncToSyncInvoker<T> implements Invoker<T> {\n-\n-    private Invoker<T> invoker;\n-\n-    public AsyncToSyncInvoker(Invoker<T> invoker) {\n-        this.invoker = invoker;\n-    }\n-\n-    @Override\n-    public Class<T> getInterface() {\n-        return invoker.getInterface();\n-    }\n-\n-    @Override\n-    public Result invoke(Invocation invocation) throws RpcException {\n-        Result asyncResult = invoker.invoke(invocation);\n-\n-        try {\n-            if (InvokeMode.SYNC == ((RpcInvocation) invocation).getInvokeMode()) {\n-                /**\n-                 * NOTICE!\n-                 * must call {@link java.util.concurrent.CompletableFuture#get(long, TimeUnit)} because\n-                 * {@link java.util.concurrent.CompletableFuture#get()} was proved to have serious performance drop.\n-                 */\n-                asyncResult.get(Integer.MAX_VALUE, TimeUnit.MILLISECONDS);\n-            }\n-        } catch (InterruptedException e) {\n-            throw new RpcException(\"Interrupted unexpectedly while waiting for remote result to return!  method: \" +\n-                    invocation.getMethodName() + \", provider: \" + getUrl() + \", cause: \" + e.getMessage(), e);\n-        } catch (ExecutionException e) {\n-            Throwable t = e.getCause();\n-            if (t instanceof TimeoutException) {\n-                throw new RpcException(RpcException.TIMEOUT_EXCEPTION, \"Invoke remote method timeout. method: \" +\n-                        invocation.getMethodName() + \", provider: \" + getUrl() + \", cause: \" + e.getMessage(), e);\n-            } else if (t instanceof RemotingException) {\n-                throw new RpcException(RpcException.NETWORK_EXCEPTION, \"Failed to invoke remote method: \" +\n-                        invocation.getMethodName() + \", provider: \" + getUrl() + \", cause: \" + e.getMessage(), e);\n-            } else {\n-                throw new RpcException(RpcException.UNKNOWN_EXCEPTION, \"Fail to invoke remote method: \" +\n-                        invocation.getMethodName() + \", provider: \" + getUrl() + \", cause: \" + e.getMessage(), e);\n-            }\n-        } catch (Throwable e) {\n-            throw new RpcException(e.getMessage(), e);\n-        }\n-        return asyncResult;\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return invoker.getUrl();\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        return invoker.isAvailable();\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        invoker.destroy();\n-    }\n-\n-    public Invoker<T> getInvoker() {\n-        return invoker;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.TimeoutException;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.InvokeMode;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+\r\n+import java.util.concurrent.ExecutionException;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+/**\r\n+ * This class will work as a wrapper wrapping outside of each protocol invoker.\r\n+ *\r\n+ * @param <T>\r\n+ */\r\n+public class AsyncToSyncInvoker<T> implements Invoker<T> {\r\n+\r\n+    private Invoker<T> invoker;\r\n+\r\n+    public AsyncToSyncInvoker(Invoker<T> invoker) {\r\n+        this.invoker = invoker;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Class<T> getInterface() {\r\n+        return invoker.getInterface();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Result invoke(Invocation invocation) throws RpcException {\r\n+        Result asyncResult = invoker.invoke(invocation);\r\n+\r\n+        try {\r\n+            if (InvokeMode.SYNC == ((RpcInvocation) invocation).getInvokeMode()) {\r\n+                /**\r\n+                 * NOTICE!\r\n+                 * must call {@link java.util.concurrent.CompletableFuture#get(long, TimeUnit)} because\r\n+                 * {@link java.util.concurrent.CompletableFuture#get()} was proved to have serious performance drop.\r\n+                 */\r\n+                asyncResult.get(Integer.MAX_VALUE, TimeUnit.MILLISECONDS);\r\n+            }\r\n+        } catch (InterruptedException e) {\r\n+            throw new RpcException(\"Interrupted unexpectedly while waiting for remote result to return!  method: \" +\r\n+                    invocation.getMethodName() + \", provider: \" + getUrl() + \", cause: \" + e.getMessage(), e);\r\n+        } catch (ExecutionException e) {\r\n+            Throwable t = e.getCause();\r\n+            if (t instanceof TimeoutException) {\r\n+                throw new RpcException(RpcException.TIMEOUT_EXCEPTION, \"Invoke remote method timeout. method: \" +\r\n+                        invocation.getMethodName() + \", provider: \" + getUrl() + \", cause: \" + e.getMessage(), e);\r\n+            } else if (t instanceof RemotingException) {\r\n+                throw new RpcException(RpcException.NETWORK_EXCEPTION, \"Failed to invoke remote method: \" +\r\n+                        invocation.getMethodName() + \", provider: \" + getUrl() + \", cause: \" + e.getMessage(), e);\r\n+            } else {\r\n+                throw new RpcException(RpcException.UNKNOWN_EXCEPTION, \"Fail to invoke remote method: \" +\r\n+                        invocation.getMethodName() + \", provider: \" + getUrl() + \", cause: \" + e.getMessage(), e);\r\n+            }\r\n+        } catch (Throwable e) {\r\n+            throw new RpcException(e.getMessage(), e);\r\n+        }\r\n+        return asyncResult;\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return invoker.getUrl();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        return invoker.isAvailable();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        invoker.destroy();\r\n+    }\r\n+\r\n+    public Invoker<T> getInvoker() {\r\n+        return invoker;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/FilterNode.java", "source2": "org/apache/dubbo/rpc/protocol/FilterNode.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,117 +1,117 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.rpc.Filter;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.ListenableFilter;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcException;\n-\n-/**\n- * @see org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper\n- *\n- */\n-class FilterNode<T> implements Invoker<T>{\n-    private final Invoker<T> invoker;\n-    private final Invoker<T> next;\n-    private final Filter filter;\n-    \n-    public FilterNode(final Invoker<T> invoker, final Invoker<T> next, final Filter filter) {\n-        this.invoker = invoker;\n-        this.next = next;\n-        this.filter = filter;\n-    }\n-\n-    @Override\n-    public Class<T> getInterface() {\n-        return invoker.getInterface();\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return invoker.getUrl();\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        return invoker.isAvailable();\n-    }\n-\n-    @Override\n-    public Result invoke(Invocation invocation) throws RpcException {\n-        Result asyncResult;\n-        try {\n-            asyncResult = filter.invoke(next, invocation);\n-        } catch (Exception e) {\n-            if (filter instanceof ListenableFilter) {\n-                ListenableFilter listenableFilter = ((ListenableFilter) filter);\n-                try {\n-                    Filter.Listener listener = listenableFilter.listener(invocation);\n-                    if (listener != null) {\n-                        listener.onError(e, invoker, invocation);\n-                    }\n-                } finally {\n-                    listenableFilter.removeListener(invocation);\n-                }\n-            } else if (filter instanceof Filter.Listener) {\n-                Filter.Listener listener = (Filter.Listener) filter;\n-                listener.onError(e, invoker, invocation);\n-            }\n-            throw e;\n-        } finally {\n-\n-        }\n-        return asyncResult.whenCompleteWithContext((r, t) -> {\n-            if (filter instanceof ListenableFilter) {\n-                ListenableFilter listenableFilter = ((ListenableFilter) filter);\n-                Filter.Listener listener = listenableFilter.listener(invocation);\n-                try {\n-                    if (listener != null) {\n-                        if (t == null) {\n-                            listener.onResponse(r, invoker, invocation);\n-                        } else {\n-                            listener.onError(t, invoker, invocation);\n-                        }\n-                    }\n-                } finally {\n-                    listenableFilter.removeListener(invocation);\n-                }\n-            } else if (filter instanceof Filter.Listener) {\n-                Filter.Listener listener = (Filter.Listener) filter;\n-                if (t == null) {\n-                    listener.onResponse(r, invoker, invocation);\n-                } else {\n-                    listener.onError(t, invoker, invocation);\n-                }\n-            }\n-        });\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        invoker.destroy();\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return invoker.toString();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.rpc.Filter;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.ListenableFilter;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+\r\n+/**\r\n+ * @see org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper\r\n+ *\r\n+ */\r\n+class FilterNode<T> implements Invoker<T>{\r\n+    private final Invoker<T> invoker;\r\n+    private final Invoker<T> next;\r\n+    private final Filter filter;\r\n+    \r\n+    public FilterNode(final Invoker<T> invoker, final Invoker<T> next, final Filter filter) {\r\n+        this.invoker = invoker;\r\n+        this.next = next;\r\n+        this.filter = filter;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Class<T> getInterface() {\r\n+        return invoker.getInterface();\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return invoker.getUrl();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        return invoker.isAvailable();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Result invoke(Invocation invocation) throws RpcException {\r\n+        Result asyncResult;\r\n+        try {\r\n+            asyncResult = filter.invoke(next, invocation);\r\n+        } catch (Exception e) {\r\n+            if (filter instanceof ListenableFilter) {\r\n+                ListenableFilter listenableFilter = ((ListenableFilter) filter);\r\n+                try {\r\n+                    Filter.Listener listener = listenableFilter.listener(invocation);\r\n+                    if (listener != null) {\r\n+                        listener.onError(e, invoker, invocation);\r\n+                    }\r\n+                } finally {\r\n+                    listenableFilter.removeListener(invocation);\r\n+                }\r\n+            } else if (filter instanceof Filter.Listener) {\r\n+                Filter.Listener listener = (Filter.Listener) filter;\r\n+                listener.onError(e, invoker, invocation);\r\n+            }\r\n+            throw e;\r\n+        } finally {\r\n+\r\n+        }\r\n+        return asyncResult.whenCompleteWithContext((r, t) -> {\r\n+            if (filter instanceof ListenableFilter) {\r\n+                ListenableFilter listenableFilter = ((ListenableFilter) filter);\r\n+                Filter.Listener listener = listenableFilter.listener(invocation);\r\n+                try {\r\n+                    if (listener != null) {\r\n+                        if (t == null) {\r\n+                            listener.onResponse(r, invoker, invocation);\r\n+                        } else {\r\n+                            listener.onError(t, invoker, invocation);\r\n+                        }\r\n+                    }\r\n+                } finally {\r\n+                    listenableFilter.removeListener(invocation);\r\n+                }\r\n+            } else if (filter instanceof Filter.Listener) {\r\n+                Filter.Listener listener = (Filter.Listener) filter;\r\n+                if (t == null) {\r\n+                    listener.onResponse(r, invoker, invocation);\r\n+                } else {\r\n+                    listener.onError(t, invoker, invocation);\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        invoker.destroy();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return invoker.toString();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/FutureAdapter.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/FutureAdapter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,99 +1,99 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.dubbo;\n-\n-import org.apache.dubbo.rpc.AppResponse;\n-import org.apache.dubbo.rpc.RpcException;\n-\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.CompletionException;\n-import java.util.concurrent.ExecutionException;\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.TimeoutException;\n-\n-/**\n- * This is the type of the Future instance users get in an async call:\n- * 1. unwrap AppResponse in appResponseFuture and convert to plain biz result represented by FutureAdapter.\n- * 2. customized behaviors meaningful for RPC, for example, {@link #cancel(boolean)}\n- */\n-public class FutureAdapter<V> extends CompletableFuture<V> {\n-\n-    private CompletableFuture<AppResponse> appResponseFuture;\n-\n-    public FutureAdapter(CompletableFuture<AppResponse> future) {\n-        this.appResponseFuture = future;\n-        future.whenComplete((appResponse, t) -> {\n-            if (t != null) {\n-                if (t instanceof CompletionException) {\n-                    t = t.getCause();\n-                }\n-                this.completeExceptionally(t);\n-            } else {\n-                if (appResponse.hasException()) {\n-                    this.completeExceptionally(appResponse.getException());\n-                } else {\n-                    this.complete((V) appResponse.getValue());\n-                }\n-            }\n-        });\n-    }\n-\n-    // TODO figure out the meaning of cancel in DefaultFuture.\n-    @Override\n-    public boolean cancel(boolean mayInterruptIfRunning) {\n-//        Invocation invocation = invocationSoftReference.get();\n-//        if (invocation != null) {\n-//            invocation.getInvoker().invoke(cancel);\n-//        }\n-        return appResponseFuture.cancel(mayInterruptIfRunning);\n-    }\n-\n-    @Override\n-    public boolean isCancelled() {\n-        return appResponseFuture.isCancelled();\n-    }\n-\n-    @Override\n-    public boolean isDone() {\n-        return super.isDone();\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public V get() throws InterruptedException, ExecutionException {\n-        try {\n-            return super.get();\n-        } catch (ExecutionException | InterruptedException e) {\n-            throw e;\n-        } catch (Throwable e) {\n-            throw new RpcException(e);\n-        }\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {\n-        try {\n-            return super.get(timeout, unit);\n-        } catch (TimeoutException | ExecutionException | InterruptedException e) {\n-            throw e;\n-        } catch (Throwable e) {\n-            throw new RpcException(e);\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.dubbo;\r\n+\r\n+import org.apache.dubbo.rpc.AppResponse;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.CompletionException;\r\n+import java.util.concurrent.ExecutionException;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.TimeoutException;\r\n+\r\n+/**\r\n+ * This is the type of the Future instance users get in an async call:\r\n+ * 1. unwrap AppResponse in appResponseFuture and convert to plain biz result represented by FutureAdapter.\r\n+ * 2. customized behaviors meaningful for RPC, for example, {@link #cancel(boolean)}\r\n+ */\r\n+public class FutureAdapter<V> extends CompletableFuture<V> {\r\n+\r\n+    private CompletableFuture<AppResponse> appResponseFuture;\r\n+\r\n+    public FutureAdapter(CompletableFuture<AppResponse> future) {\r\n+        this.appResponseFuture = future;\r\n+        future.whenComplete((appResponse, t) -> {\r\n+            if (t != null) {\r\n+                if (t instanceof CompletionException) {\r\n+                    t = t.getCause();\r\n+                }\r\n+                this.completeExceptionally(t);\r\n+            } else {\r\n+                if (appResponse.hasException()) {\r\n+                    this.completeExceptionally(appResponse.getException());\r\n+                } else {\r\n+                    this.complete((V) appResponse.getValue());\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    // TODO figure out the meaning of cancel in DefaultFuture.\r\n+    @Override\r\n+    public boolean cancel(boolean mayInterruptIfRunning) {\r\n+//        Invocation invocation = invocationSoftReference.get();\r\n+//        if (invocation != null) {\r\n+//            invocation.getInvoker().invoke(cancel);\r\n+//        }\r\n+        return appResponseFuture.cancel(mayInterruptIfRunning);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isCancelled() {\r\n+        return appResponseFuture.isCancelled();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isDone() {\r\n+        return super.isDone();\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public V get() throws InterruptedException, ExecutionException {\r\n+        try {\r\n+            return super.get();\r\n+        } catch (ExecutionException | InterruptedException e) {\r\n+            throw e;\r\n+        } catch (Throwable e) {\r\n+            throw new RpcException(e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {\r\n+        try {\r\n+            return super.get(timeout, unit);\r\n+        } catch (TimeoutException | ExecutionException | InterruptedException e) {\r\n+            throw e;\r\n+        } catch (Throwable e) {\r\n+            throw new RpcException(e);\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/package-info.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/package-info.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,22 +1,22 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-/**\n- * {@link org.apache.dubbo.rpc.protocol.dubbo.FutureAdapter} was in dubbo-rpc-dubbo module,\n- * considering some users will use this class directly, keep the package not changed.\n- */\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+/**\r\n+ * {@link org.apache.dubbo.rpc.protocol.dubbo.FutureAdapter} was in dubbo-rpc-dubbo module,\r\n+ * considering some users will use this class directly, keep the package not changed.\r\n+ */\r\n package org.apache.dubbo.rpc.protocol.dubbo;\n"}, {"source1": "org/apache/dubbo/rpc/proxy/AbstractProxyInvoker.java", "source2": "org/apache/dubbo/rpc/proxy/AbstractProxyInvoker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,127 +1,127 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.proxy;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.rpc.AppResponse;\n-import org.apache.dubbo.rpc.AsyncContextImpl;\n-import org.apache.dubbo.rpc.AsyncRpcResult;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcException;\n-\n-import java.lang.reflect.InvocationTargetException;\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.CompletionException;\n-\n-/**\n- * This Invoker works on provider side, delegates RPC to interface implementation.\n- */\n-public abstract class AbstractProxyInvoker<T> implements Invoker<T> {\n-    Logger logger = LoggerFactory.getLogger(AbstractProxyInvoker.class);\n-\n-    private final T proxy;\n-\n-    private final Class<T> type;\n-\n-    private final URL url;\n-\n-    public AbstractProxyInvoker(T proxy, Class<T> type, URL url) {\n-        if (proxy == null) {\n-            throw new IllegalArgumentException(\"proxy == null\");\n-        }\n-        if (type == null) {\n-            throw new IllegalArgumentException(\"interface == null\");\n-        }\n-        if (!type.isInstance(proxy)) {\n-            throw new IllegalArgumentException(proxy.getClass().getName() + \" not implement interface \" + type);\n-        }\n-        this.proxy = proxy;\n-        this.type = type;\n-        this.url = url;\n-    }\n-\n-    @Override\n-    public Class<T> getInterface() {\n-        return type;\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return url;\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        return true;\n-    }\n-\n-    @Override\n-    public void destroy() {\n-    }\n-\n-    @Override\n-    public Result invoke(Invocation invocation) throws RpcException {\n-        try {\n-            Object value = doInvoke(proxy, invocation.getMethodName(), invocation.getParameterTypes(), invocation.getArguments());\n-            CompletableFuture<Object> future = wrapWithFuture(value);\n-            CompletableFuture<AppResponse> appResponseFuture = future.handle((obj, t) -> {\n-                AppResponse result = new AppResponse(invocation);\n-                if (t != null) {\n-                    if (t instanceof CompletionException) {\n-                        result.setException(t.getCause());\n-                    } else {\n-                        result.setException(t);\n-                    }\n-                } else {\n-                    result.setValue(obj);\n-                }\n-                return result;\n-            });\n-            return new AsyncRpcResult(appResponseFuture, invocation);\n-        } catch (InvocationTargetException e) {\n-            if (RpcContext.getContext().isAsyncStarted() && !RpcContext.getContext().stopAsync()) {\n-                logger.error(\"Provider async started, but got an exception from the original method, cannot write the exception back to consumer because an async result may have returned the new thread.\", e);\n-            }\n-            return AsyncRpcResult.newDefaultAsyncResult(null, e.getTargetException(), invocation);\n-        } catch (Throwable e) {\n-            throw new RpcException(\"Failed to invoke remote proxy method \" + invocation.getMethodName() + \" to \" + getUrl() + \", cause: \" + e.getMessage(), e);\n-        }\n-    }\n-\n-\tprivate CompletableFuture<Object> wrapWithFuture(Object value) {\n-        if (RpcContext.getContext().isAsyncStarted()) {\n-            return ((AsyncContextImpl)(RpcContext.getContext().getAsyncContext())).getInternalFuture();\n-        } else if (value instanceof CompletableFuture) {\n-            return (CompletableFuture<Object>) value;\n-        }\n-        return CompletableFuture.completedFuture(value);\n-    }\n-\n-    protected abstract Object doInvoke(T proxy, String methodName, Class<?>[] parameterTypes, Object[] arguments) throws Throwable;\n-\n-    @Override\n-    public String toString() {\n-        return getInterface() + \" -> \" + (getUrl() == null ? \" \" : getUrl().toString());\n-    }\n-\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.proxy;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.rpc.AppResponse;\r\n+import org.apache.dubbo.rpc.AsyncContextImpl;\r\n+import org.apache.dubbo.rpc.AsyncRpcResult;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+\r\n+import java.lang.reflect.InvocationTargetException;\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.CompletionException;\r\n+\r\n+/**\r\n+ * This Invoker works on provider side, delegates RPC to interface implementation.\r\n+ */\r\n+public abstract class AbstractProxyInvoker<T> implements Invoker<T> {\r\n+    Logger logger = LoggerFactory.getLogger(AbstractProxyInvoker.class);\r\n+\r\n+    private final T proxy;\r\n+\r\n+    private final Class<T> type;\r\n+\r\n+    private final URL url;\r\n+\r\n+    public AbstractProxyInvoker(T proxy, Class<T> type, URL url) {\r\n+        if (proxy == null) {\r\n+            throw new IllegalArgumentException(\"proxy == null\");\r\n+        }\r\n+        if (type == null) {\r\n+            throw new IllegalArgumentException(\"interface == null\");\r\n+        }\r\n+        if (!type.isInstance(proxy)) {\r\n+            throw new IllegalArgumentException(proxy.getClass().getName() + \" not implement interface \" + type);\r\n+        }\r\n+        this.proxy = proxy;\r\n+        this.type = type;\r\n+        this.url = url;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Class<T> getInterface() {\r\n+        return type;\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return url;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        return true;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+    }\r\n+\r\n+    @Override\r\n+    public Result invoke(Invocation invocation) throws RpcException {\r\n+        try {\r\n+            Object value = doInvoke(proxy, invocation.getMethodName(), invocation.getParameterTypes(), invocation.getArguments());\r\n+            CompletableFuture<Object> future = wrapWithFuture(value);\r\n+            CompletableFuture<AppResponse> appResponseFuture = future.handle((obj, t) -> {\r\n+                AppResponse result = new AppResponse(invocation);\r\n+                if (t != null) {\r\n+                    if (t instanceof CompletionException) {\r\n+                        result.setException(t.getCause());\r\n+                    } else {\r\n+                        result.setException(t);\r\n+                    }\r\n+                } else {\r\n+                    result.setValue(obj);\r\n+                }\r\n+                return result;\r\n+            });\r\n+            return new AsyncRpcResult(appResponseFuture, invocation);\r\n+        } catch (InvocationTargetException e) {\r\n+            if (RpcContext.getContext().isAsyncStarted() && !RpcContext.getContext().stopAsync()) {\r\n+                logger.error(\"Provider async started, but got an exception from the original method, cannot write the exception back to consumer because an async result may have returned the new thread.\", e);\r\n+            }\r\n+            return AsyncRpcResult.newDefaultAsyncResult(null, e.getTargetException(), invocation);\r\n+        } catch (Throwable e) {\r\n+            throw new RpcException(\"Failed to invoke remote proxy method \" + invocation.getMethodName() + \" to \" + getUrl() + \", cause: \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+\tprivate CompletableFuture<Object> wrapWithFuture(Object value) {\r\n+        if (RpcContext.getContext().isAsyncStarted()) {\r\n+            return ((AsyncContextImpl)(RpcContext.getContext().getAsyncContext())).getInternalFuture();\r\n+        } else if (value instanceof CompletableFuture) {\r\n+            return (CompletableFuture<Object>) value;\r\n+        }\r\n+        return CompletableFuture.completedFuture(value);\r\n+    }\r\n+\r\n+    protected abstract Object doInvoke(T proxy, String methodName, Class<?>[] parameterTypes, Object[] arguments) throws Throwable;\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return getInterface() + \" -> \" + (getUrl() == null ? \" \" : getUrl().toString());\r\n+    }\r\n+\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/proxy/InvokerInvocationHandler.java", "source2": "org/apache/dubbo/rpc/proxy/InvokerInvocationHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,98 +1,98 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.proxy;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.rpc.Constants;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.ConsumerModel;\n-\n-import java.lang.reflect.Field;\n-import java.lang.reflect.InvocationHandler;\n-import java.lang.reflect.Method;\n-\n-/**\n- * InvokerHandler\n- */\n-public class InvokerInvocationHandler implements InvocationHandler {\n-    private static final Logger logger = LoggerFactory.getLogger(InvokerInvocationHandler.class);\n-    private final Invoker<?> invoker;\n-    private ConsumerModel consumerModel;\n-    private URL url;\n-    private String protocolServiceKey;\n-\n-    public static Field stackTraceField;\n-\n-    static {\n-        try {\n-            stackTraceField = Throwable.class.getDeclaredField(\"stackTrace\");\n-            ReflectUtils.makeAccessible(stackTraceField);\n-        } catch (NoSuchFieldException e) {\n-            // ignore\n-        }\n-    }\n-\n-    public InvokerInvocationHandler(Invoker<?> handler) {\n-        this.invoker = handler;\n-        this.url = invoker.getUrl();\n-        String serviceKey = this.url.getServiceKey();\n-        this.protocolServiceKey = this.url.getProtocolServiceKey();\n-        if (serviceKey != null) {\n-            this.consumerModel = ApplicationModel.getConsumerModel(serviceKey);\n-        }\n-    }\n-\n-    @Override\n-    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {\n-        if (method.getDeclaringClass() == Object.class) {\n-            return method.invoke(invoker, args);\n-        }\n-        String methodName = method.getName();\n-        Class<?>[] parameterTypes = method.getParameterTypes();\n-        if (parameterTypes.length == 0) {\n-            if (\"toString\".equals(methodName)) {\n-                return invoker.toString();\n-            } else if (\"$destroy\".equals(methodName)) {\n-                invoker.destroy();\n-                return null;\n-            } else if (\"hashCode\".equals(methodName)) {\n-                return invoker.hashCode();\n-            }\n-        } else if (parameterTypes.length == 1 && \"equals\".equals(methodName)) {\n-            return invoker.equals(args[0]);\n-        }\n-        RpcInvocation rpcInvocation = new RpcInvocation(method, invoker.getInterface().getName(), protocolServiceKey, args);\n-        String serviceKey = invoker.getUrl().getServiceKey();\n-        rpcInvocation.setTargetServiceUniqueName(serviceKey);\n-\n-        // invoker.getUrl() returns consumer url.\n-        RpcContext.setRpcContext(invoker.getUrl());\n-\n-        if (consumerModel != null) {\n-            rpcInvocation.put(Constants.CONSUMER_MODEL, consumerModel);\n-            rpcInvocation.put(Constants.METHOD_MODEL, consumerModel.getMethodModel(method));\n-        }\n-\n-        return invoker.invoke(rpcInvocation).recreate();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.proxy;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.rpc.Constants;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.ConsumerModel;\r\n+\r\n+import java.lang.reflect.Field;\r\n+import java.lang.reflect.InvocationHandler;\r\n+import java.lang.reflect.Method;\r\n+\r\n+/**\r\n+ * InvokerHandler\r\n+ */\r\n+public class InvokerInvocationHandler implements InvocationHandler {\r\n+    private static final Logger logger = LoggerFactory.getLogger(InvokerInvocationHandler.class);\r\n+    private final Invoker<?> invoker;\r\n+    private ConsumerModel consumerModel;\r\n+    private URL url;\r\n+    private String protocolServiceKey;\r\n+\r\n+    public static Field stackTraceField;\r\n+\r\n+    static {\r\n+        try {\r\n+            stackTraceField = Throwable.class.getDeclaredField(\"stackTrace\");\r\n+            ReflectUtils.makeAccessible(stackTraceField);\r\n+        } catch (NoSuchFieldException e) {\r\n+            // ignore\r\n+        }\r\n+    }\r\n+\r\n+    public InvokerInvocationHandler(Invoker<?> handler) {\r\n+        this.invoker = handler;\r\n+        this.url = invoker.getUrl();\r\n+        String serviceKey = this.url.getServiceKey();\r\n+        this.protocolServiceKey = this.url.getProtocolServiceKey();\r\n+        if (serviceKey != null) {\r\n+            this.consumerModel = ApplicationModel.getConsumerModel(serviceKey);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {\r\n+        if (method.getDeclaringClass() == Object.class) {\r\n+            return method.invoke(invoker, args);\r\n+        }\r\n+        String methodName = method.getName();\r\n+        Class<?>[] parameterTypes = method.getParameterTypes();\r\n+        if (parameterTypes.length == 0) {\r\n+            if (\"toString\".equals(methodName)) {\r\n+                return invoker.toString();\r\n+            } else if (\"$destroy\".equals(methodName)) {\r\n+                invoker.destroy();\r\n+                return null;\r\n+            } else if (\"hashCode\".equals(methodName)) {\r\n+                return invoker.hashCode();\r\n+            }\r\n+        } else if (parameterTypes.length == 1 && \"equals\".equals(methodName)) {\r\n+            return invoker.equals(args[0]);\r\n+        }\r\n+        RpcInvocation rpcInvocation = new RpcInvocation(method, invoker.getInterface().getName(), protocolServiceKey, args);\r\n+        String serviceKey = invoker.getUrl().getServiceKey();\r\n+        rpcInvocation.setTargetServiceUniqueName(serviceKey);\r\n+\r\n+        // invoker.getUrl() returns consumer url.\r\n+        RpcContext.setRpcContext(invoker.getUrl());\r\n+\r\n+        if (consumerModel != null) {\r\n+            rpcInvocation.put(Constants.CONSUMER_MODEL, consumerModel);\r\n+            rpcInvocation.put(Constants.METHOD_MODEL, consumerModel.getMethodModel(method));\r\n+        }\r\n+\r\n+        return invoker.invoke(rpcInvocation).recreate();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/proxy/javassist/JavassistProxyFactory.java", "source2": "org/apache/dubbo/rpc/proxy/javassist/JavassistProxyFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,52 +1,52 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.proxy.javassist;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.bytecode.Proxy;\n-import org.apache.dubbo.common.bytecode.Wrapper;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.proxy.AbstractProxyFactory;\n-import org.apache.dubbo.rpc.proxy.AbstractProxyInvoker;\n-import org.apache.dubbo.rpc.proxy.InvokerInvocationHandler;\n-\n-/**\n- * JavassistRpcProxyFactory\n- */\n-public class JavassistProxyFactory extends AbstractProxyFactory {\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> T getProxy(Invoker<T> invoker, Class<?>[] interfaces) {\n-        return (T) Proxy.getProxy(interfaces).newInstance(new InvokerInvocationHandler(invoker));\n-    }\n-\n-    @Override\n-    public <T> Invoker<T> getInvoker(T proxy, Class<T> type, URL url) {\n-        // TODO Wrapper cannot handle this scenario correctly: the classname contains '$'\n-        final Wrapper wrapper = Wrapper.getWrapper(proxy.getClass().getName().indexOf('$') < 0 ? proxy.getClass() : type);\n-        return new AbstractProxyInvoker<T>(proxy, type, url) {\n-            @Override\n-            protected Object doInvoke(T proxy, String methodName,\n-                                      Class<?>[] parameterTypes,\n-                                      Object[] arguments) throws Throwable {\n-                return wrapper.invokeMethod(proxy, methodName, parameterTypes, arguments);\n-            }\n-        };\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.proxy.javassist;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.bytecode.Proxy;\r\n+import org.apache.dubbo.common.bytecode.Wrapper;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.proxy.AbstractProxyFactory;\r\n+import org.apache.dubbo.rpc.proxy.AbstractProxyInvoker;\r\n+import org.apache.dubbo.rpc.proxy.InvokerInvocationHandler;\r\n+\r\n+/**\r\n+ * JavassistRpcProxyFactory\r\n+ */\r\n+public class JavassistProxyFactory extends AbstractProxyFactory {\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> T getProxy(Invoker<T> invoker, Class<?>[] interfaces) {\r\n+        return (T) Proxy.getProxy(interfaces).newInstance(new InvokerInvocationHandler(invoker));\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> Invoker<T> getInvoker(T proxy, Class<T> type, URL url) {\r\n+        // TODO Wrapper cannot handle this scenario correctly: the classname contains '$'\r\n+        final Wrapper wrapper = Wrapper.getWrapper(proxy.getClass().getName().indexOf('$') < 0 ? proxy.getClass() : type);\r\n+        return new AbstractProxyInvoker<T>(proxy, type, url) {\r\n+            @Override\r\n+            protected Object doInvoke(T proxy, String methodName,\r\n+                                      Class<?>[] parameterTypes,\r\n+                                      Object[] arguments) throws Throwable {\r\n+                return wrapper.invokeMethod(proxy, methodName, parameterTypes, arguments);\r\n+            }\r\n+        };\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/support/AccessLogData.java", "source2": "org/apache/dubbo/rpc/support/AccessLogData.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,281 +1,281 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.support;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.RpcContext;\n-\n-import com.alibaba.fastjson.JSON;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-\n-import java.text.DateFormat;\n-import java.text.SimpleDateFormat;\n-import java.util.Arrays;\n-import java.util.Date;\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-/**\n- * AccessLogData is a container for log event data. In internally uses map and store each filed of log as value. It\n- * does not generate any dynamic value e.g. time stamp, local jmv machine host address etc. It does not allow any null\n- * or empty key.\n- *\n- * Note: since its date formatter is a singleton, make sure to run it in single thread only.\n- */\n-public final class AccessLogData {\n-\n-    private static final String MESSAGE_DATE_FORMAT = \"yyyy-MM-dd HH:mm:ss\";\n-    private static final DateFormat MESSAGE_DATE_FORMATTER = new SimpleDateFormat(MESSAGE_DATE_FORMAT);\n-\n-    private static final String VERSION = \"version\";\n-    private static final String GROUP = \"group\";\n-    private static final String SERVICE = \"service\";\n-    private static final String METHOD_NAME = \"method-name\";\n-    private static final String INVOCATION_TIME = \"invocation-time\";\n-    private static final String TYPES = \"types\";\n-    private static final String ARGUMENTS = \"arguments\";\n-    private static final String REMOTE_HOST = \"remote-host\";\n-    private static final String REMOTE_PORT = \"remote-port\";\n-    private static final String LOCAL_HOST = \"localhost\";\n-    private static final String LOCAL_PORT = \"local-port\";\n-\n-    /**\n-     * This is used to store log data in key val format.\n-     */\n-    private Map<String, Object> data;\n-\n-    /**\n-     * Default constructor.\n-     */\n-    private AccessLogData() {\n-        RpcContext context = RpcContext.getContext();\n-        data = new HashMap<>();\n-        setLocalHost(context.getLocalHost());\n-        setLocalPort(context.getLocalPort());\n-        setRemoteHost(context.getRemoteHost());\n-        setRemotePort(context.getRemotePort());\n-    }\n-\n-    /**\n-     * Get new instance of log data.\n-     *\n-     * @return instance of AccessLogData\n-     */\n-    public static AccessLogData newLogData() {\n-        return new AccessLogData();\n-    }\n-\n-\n-    /**\n-     * Add version information.\n-     *\n-     * @param version\n-     */\n-    public void setVersion(String version) {\n-        set(VERSION, version);\n-    }\n-\n-    /**\n-     * Add service name.\n-     *\n-     * @param serviceName\n-     */\n-    public void setServiceName(String serviceName) {\n-        set(SERVICE, serviceName);\n-    }\n-\n-    /**\n-     * Add group name\n-     *\n-     * @param group\n-     */\n-    public void setGroup(String group) {\n-        set(GROUP, group);\n-    }\n-\n-    /**\n-     * Set the invocation date. As an argument it accept date string.\n-     *\n-     * @param invocationTime\n-     */\n-    public void setInvocationTime(Date invocationTime) {\n-        set(INVOCATION_TIME, invocationTime);\n-    }\n-\n-    /**\n-     * Set caller remote host\n-     *\n-     * @param remoteHost\n-     */\n-    private void setRemoteHost(String remoteHost) {\n-        set(REMOTE_HOST, remoteHost);\n-    }\n-\n-    /**\n-     * Set caller remote port.\n-     *\n-     * @param remotePort\n-     */\n-    private void setRemotePort(Integer remotePort) {\n-        set(REMOTE_PORT, remotePort);\n-    }\n-\n-    /**\n-     * Set local host\n-     *\n-     * @param localHost\n-     */\n-    private void setLocalHost(String localHost) {\n-        set(LOCAL_HOST, localHost);\n-    }\n-\n-    /**\n-     * Set local port of exported service\n-     *\n-     * @param localPort\n-     */\n-    private void setLocalPort(Integer localPort) {\n-        set(LOCAL_PORT, localPort);\n-    }\n-\n-    /**\n-     * Set target method name.\n-     *\n-     * @param methodName\n-     */\n-    public void setMethodName(String methodName) {\n-        set(METHOD_NAME, methodName);\n-    }\n-\n-    /**\n-     * Set invocation's method's input parameter's types\n-     *\n-     * @param types\n-     */\n-    public void setTypes(Class[] types) {\n-        set(TYPES, types != null ? Arrays.copyOf(types, types.length) : null);\n-    }\n-\n-    /**\n-     * Sets invocation arguments\n-     *\n-     * @param arguments\n-     */\n-    public void setArguments(Object[] arguments) {\n-        set(ARGUMENTS, arguments != null ? Arrays.copyOf(arguments, arguments.length) : null);\n-    }\n-\n-    /**\n-     * Return gthe service of access log entry\n-     *\n-     * @return\n-     */\n-    public String getServiceName() {\n-        return get(SERVICE).toString();\n-    }\n-\n-\n-    public String getLogMessage() {\n-        StringBuilder sn = new StringBuilder();\n-\n-        sn.append(\"[\")\n-                .append(MESSAGE_DATE_FORMATTER.format(getInvocationTime()))\n-                .append(\"] \")\n-                .append(get(REMOTE_HOST))\n-                .append(\":\")\n-                .append(get(REMOTE_PORT))\n-                .append(\" -> \")\n-                .append(get(LOCAL_HOST))\n-                .append(\":\")\n-                .append(get(LOCAL_PORT))\n-                .append(\" - \");\n-\n-        String group = get(GROUP) != null ? get(GROUP).toString() : \"\";\n-        if (StringUtils.isNotEmpty(group)) {\n-            sn.append(group).append(\"/\");\n-        }\n-\n-        sn.append(get(SERVICE));\n-\n-        String version = get(VERSION) != null ? get(VERSION).toString() : \"\";\n-        if (StringUtils.isNotEmpty(version)) {\n-            sn.append(\":\").append(version);\n-        }\n-\n-        sn.append(\" \");\n-        sn.append(get(METHOD_NAME));\n-\n-        sn.append(\"(\");\n-        Class<?>[] types = get(TYPES) != null ? (Class<?>[]) get(TYPES) : new Class[0];\n-        boolean first = true;\n-        for (Class<?> type : types) {\n-            if (first) {\n-                first = false;\n-            } else {\n-                sn.append(\",\");\n-            }\n-            sn.append(type.getName());\n-        }\n-        sn.append(\") \");\n-\n-\n-        Object[] args = get(ARGUMENTS) != null ? (Object[]) get(ARGUMENTS) : null;\n-        if (args != null && args.length > 0) {\n-            sn.append(JSON.toJSONString(args));\n-        }\n-\n-        return sn.toString();\n-    }\n-\n-    private Date getInvocationTime() {\n-        return (Date)get(INVOCATION_TIME);\n-    }\n-    /**\n-     * Return value of key\n-     *\n-     * @param key\n-     * @return\n-     */\n-    private Object get(String key) {\n-        return data.get(key);\n-    }\n-\n-    /**\n-     * Add log key along with his value.\n-     *\n-     * @param key   Any not null or non empty string\n-     * @param value Any object including null.\n-     */\n-    private void set(String key, Object value) {\n-        data.put(key, value);\n-    }\n-    \n-    public void buildAccessLogData(Invoker<?> invoker, Invocation inv) {\n-        setServiceName(invoker.getInterface().getName());\n-        setMethodName(inv.getMethodName());\n-        setVersion(invoker.getUrl().getParameter(VERSION_KEY));\n-        setGroup(invoker.getUrl().getParameter(GROUP_KEY));\n-        setInvocationTime(new Date());\n-        setTypes(inv.getParameterTypes());\n-        setArguments(inv.getArguments());\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.support;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+\r\n+import com.alibaba.fastjson.JSON;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+\r\n+import java.text.DateFormat;\r\n+import java.text.SimpleDateFormat;\r\n+import java.util.Arrays;\r\n+import java.util.Date;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * AccessLogData is a container for log event data. In internally uses map and store each filed of log as value. It\r\n+ * does not generate any dynamic value e.g. time stamp, local jmv machine host address etc. It does not allow any null\r\n+ * or empty key.\r\n+ *\r\n+ * Note: since its date formatter is a singleton, make sure to run it in single thread only.\r\n+ */\r\n+public final class AccessLogData {\r\n+\r\n+    private static final String MESSAGE_DATE_FORMAT = \"yyyy-MM-dd HH:mm:ss\";\r\n+    private static final DateFormat MESSAGE_DATE_FORMATTER = new SimpleDateFormat(MESSAGE_DATE_FORMAT);\r\n+\r\n+    private static final String VERSION = \"version\";\r\n+    private static final String GROUP = \"group\";\r\n+    private static final String SERVICE = \"service\";\r\n+    private static final String METHOD_NAME = \"method-name\";\r\n+    private static final String INVOCATION_TIME = \"invocation-time\";\r\n+    private static final String TYPES = \"types\";\r\n+    private static final String ARGUMENTS = \"arguments\";\r\n+    private static final String REMOTE_HOST = \"remote-host\";\r\n+    private static final String REMOTE_PORT = \"remote-port\";\r\n+    private static final String LOCAL_HOST = \"localhost\";\r\n+    private static final String LOCAL_PORT = \"local-port\";\r\n+\r\n+    /**\r\n+     * This is used to store log data in key val format.\r\n+     */\r\n+    private Map<String, Object> data;\r\n+\r\n+    /**\r\n+     * Default constructor.\r\n+     */\r\n+    private AccessLogData() {\r\n+        RpcContext context = RpcContext.getContext();\r\n+        data = new HashMap<>();\r\n+        setLocalHost(context.getLocalHost());\r\n+        setLocalPort(context.getLocalPort());\r\n+        setRemoteHost(context.getRemoteHost());\r\n+        setRemotePort(context.getRemotePort());\r\n+    }\r\n+\r\n+    /**\r\n+     * Get new instance of log data.\r\n+     *\r\n+     * @return instance of AccessLogData\r\n+     */\r\n+    public static AccessLogData newLogData() {\r\n+        return new AccessLogData();\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * Add version information.\r\n+     *\r\n+     * @param version\r\n+     */\r\n+    public void setVersion(String version) {\r\n+        set(VERSION, version);\r\n+    }\r\n+\r\n+    /**\r\n+     * Add service name.\r\n+     *\r\n+     * @param serviceName\r\n+     */\r\n+    public void setServiceName(String serviceName) {\r\n+        set(SERVICE, serviceName);\r\n+    }\r\n+\r\n+    /**\r\n+     * Add group name\r\n+     *\r\n+     * @param group\r\n+     */\r\n+    public void setGroup(String group) {\r\n+        set(GROUP, group);\r\n+    }\r\n+\r\n+    /**\r\n+     * Set the invocation date. As an argument it accept date string.\r\n+     *\r\n+     * @param invocationTime\r\n+     */\r\n+    public void setInvocationTime(Date invocationTime) {\r\n+        set(INVOCATION_TIME, invocationTime);\r\n+    }\r\n+\r\n+    /**\r\n+     * Set caller remote host\r\n+     *\r\n+     * @param remoteHost\r\n+     */\r\n+    private void setRemoteHost(String remoteHost) {\r\n+        set(REMOTE_HOST, remoteHost);\r\n+    }\r\n+\r\n+    /**\r\n+     * Set caller remote port.\r\n+     *\r\n+     * @param remotePort\r\n+     */\r\n+    private void setRemotePort(Integer remotePort) {\r\n+        set(REMOTE_PORT, remotePort);\r\n+    }\r\n+\r\n+    /**\r\n+     * Set local host\r\n+     *\r\n+     * @param localHost\r\n+     */\r\n+    private void setLocalHost(String localHost) {\r\n+        set(LOCAL_HOST, localHost);\r\n+    }\r\n+\r\n+    /**\r\n+     * Set local port of exported service\r\n+     *\r\n+     * @param localPort\r\n+     */\r\n+    private void setLocalPort(Integer localPort) {\r\n+        set(LOCAL_PORT, localPort);\r\n+    }\r\n+\r\n+    /**\r\n+     * Set target method name.\r\n+     *\r\n+     * @param methodName\r\n+     */\r\n+    public void setMethodName(String methodName) {\r\n+        set(METHOD_NAME, methodName);\r\n+    }\r\n+\r\n+    /**\r\n+     * Set invocation's method's input parameter's types\r\n+     *\r\n+     * @param types\r\n+     */\r\n+    public void setTypes(Class[] types) {\r\n+        set(TYPES, types != null ? Arrays.copyOf(types, types.length) : null);\r\n+    }\r\n+\r\n+    /**\r\n+     * Sets invocation arguments\r\n+     *\r\n+     * @param arguments\r\n+     */\r\n+    public void setArguments(Object[] arguments) {\r\n+        set(ARGUMENTS, arguments != null ? Arrays.copyOf(arguments, arguments.length) : null);\r\n+    }\r\n+\r\n+    /**\r\n+     * Return gthe service of access log entry\r\n+     *\r\n+     * @return\r\n+     */\r\n+    public String getServiceName() {\r\n+        return get(SERVICE).toString();\r\n+    }\r\n+\r\n+\r\n+    public String getLogMessage() {\r\n+        StringBuilder sn = new StringBuilder();\r\n+\r\n+        sn.append(\"[\")\r\n+                .append(MESSAGE_DATE_FORMATTER.format(getInvocationTime()))\r\n+                .append(\"] \")\r\n+                .append(get(REMOTE_HOST))\r\n+                .append(\":\")\r\n+                .append(get(REMOTE_PORT))\r\n+                .append(\" -> \")\r\n+                .append(get(LOCAL_HOST))\r\n+                .append(\":\")\r\n+                .append(get(LOCAL_PORT))\r\n+                .append(\" - \");\r\n+\r\n+        String group = get(GROUP) != null ? get(GROUP).toString() : \"\";\r\n+        if (StringUtils.isNotEmpty(group)) {\r\n+            sn.append(group).append(\"/\");\r\n+        }\r\n+\r\n+        sn.append(get(SERVICE));\r\n+\r\n+        String version = get(VERSION) != null ? get(VERSION).toString() : \"\";\r\n+        if (StringUtils.isNotEmpty(version)) {\r\n+            sn.append(\":\").append(version);\r\n+        }\r\n+\r\n+        sn.append(\" \");\r\n+        sn.append(get(METHOD_NAME));\r\n+\r\n+        sn.append(\"(\");\r\n+        Class<?>[] types = get(TYPES) != null ? (Class<?>[]) get(TYPES) : new Class[0];\r\n+        boolean first = true;\r\n+        for (Class<?> type : types) {\r\n+            if (first) {\r\n+                first = false;\r\n+            } else {\r\n+                sn.append(\",\");\r\n+            }\r\n+            sn.append(type.getName());\r\n+        }\r\n+        sn.append(\") \");\r\n+\r\n+\r\n+        Object[] args = get(ARGUMENTS) != null ? (Object[]) get(ARGUMENTS) : null;\r\n+        if (args != null && args.length > 0) {\r\n+            sn.append(JSON.toJSONString(args));\r\n+        }\r\n+\r\n+        return sn.toString();\r\n+    }\r\n+\r\n+    private Date getInvocationTime() {\r\n+        return (Date)get(INVOCATION_TIME);\r\n+    }\r\n+    /**\r\n+     * Return value of key\r\n+     *\r\n+     * @param key\r\n+     * @return\r\n+     */\r\n+    private Object get(String key) {\r\n+        return data.get(key);\r\n+    }\r\n+\r\n+    /**\r\n+     * Add log key along with his value.\r\n+     *\r\n+     * @param key   Any not null or non empty string\r\n+     * @param value Any object including null.\r\n+     */\r\n+    private void set(String key, Object value) {\r\n+        data.put(key, value);\r\n+    }\r\n+    \r\n+    public void buildAccessLogData(Invoker<?> invoker, Invocation inv) {\r\n+        setServiceName(invoker.getInterface().getName());\r\n+        setMethodName(inv.getMethodName());\r\n+        setVersion(invoker.getUrl().getParameter(VERSION_KEY));\r\n+        setGroup(invoker.getUrl().getParameter(GROUP_KEY));\r\n+        setInvocationTime(new Date());\r\n+        setTypes(inv.getParameterTypes());\r\n+        setArguments(inv.getArguments());\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/support/RpcUtils.java", "source2": "org/apache/dubbo/rpc/support/RpcUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,273 +1,273 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.support;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.InvokeMode;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-import org.apache.dubbo.rpc.service.GenericService;\n-\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Type;\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.atomic.AtomicLong;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE;\n-import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE_ASYNC;\n-import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_PARAMETER_DESC;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_ATTACHMENT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-import static org.apache.dubbo.rpc.Constants.$ECHO;\n-import static org.apache.dubbo.rpc.Constants.$ECHO_PARAMETER_DESC;\n-import static org.apache.dubbo.rpc.Constants.ASYNC_KEY;\n-import static org.apache.dubbo.rpc.Constants.AUTO_ATTACH_INVOCATIONID_KEY;\n-import static org.apache.dubbo.rpc.Constants.ID_KEY;\n-import static org.apache.dubbo.rpc.Constants.RETURN_KEY;\n-\n-/**\n- * RpcUtils\n- */\n-public class RpcUtils {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(RpcUtils.class);\n-    private static final AtomicLong INVOKE_ID = new AtomicLong(0);\n-\n-    public static Class<?> getReturnType(Invocation invocation) {\n-        try {\n-            if (invocation != null && invocation.getInvoker() != null\n-                    && invocation.getInvoker().getUrl() != null\n-                    && invocation.getInvoker().getInterface() != GenericService.class\n-                    && !invocation.getMethodName().startsWith(\"$\")) {\n-                String service = invocation.getInvoker().getUrl().getServiceInterface();\n-                if (StringUtils.isNotEmpty(service)) {\n-                    Method method = getMethodByService(invocation, service);\n-                    return method.getReturnType();\n-                }\n-            }\n-        } catch (Throwable t) {\n-            logger.warn(t.getMessage(), t);\n-        }\n-        return null;\n-    }\n-\n-    public static Type[] getReturnTypes(Invocation invocation) {\n-        try {\n-            if (invocation != null && invocation.getInvoker() != null\n-                    && invocation.getInvoker().getUrl() != null\n-                    && invocation.getInvoker().getInterface() != GenericService.class\n-                    && !invocation.getMethodName().startsWith(\"$\")) {\n-                String service = invocation.getInvoker().getUrl().getServiceInterface();\n-                if (StringUtils.isNotEmpty(service)) {\n-                    Method method = getMethodByService(invocation, service);\n-                    return ReflectUtils.getReturnTypes(method);\n-                }\n-            }\n-        } catch (Throwable t) {\n-            logger.warn(t.getMessage(), t);\n-        }\n-        return null;\n-    }\n-\n-    public static Long getInvocationId(Invocation inv) {\n-        String id = inv.getAttachment(ID_KEY);\n-        return id == null ? null : new Long(id);\n-    }\n-\n-    /**\n-     * Idempotent operation: invocation id will be added in async operation by default\n-     *\n-     * @param url\n-     * @param inv\n-     */\n-    public static void attachInvocationIdIfAsync(URL url, Invocation inv) {\n-        if (isAttachInvocationId(url, inv) && getInvocationId(inv) == null && inv instanceof RpcInvocation) {\n-            inv.setAttachment(ID_KEY, String.valueOf(INVOKE_ID.getAndIncrement()));\n-        }\n-    }\n-\n-    private static boolean isAttachInvocationId(URL url, Invocation invocation) {\n-        String value = url.getMethodParameter(invocation.getMethodName(), AUTO_ATTACH_INVOCATIONID_KEY);\n-        if (value == null) {\n-            // add invocationid in async operation by default\n-            return isAsync(url, invocation);\n-        } else if (Boolean.TRUE.toString().equalsIgnoreCase(value)) {\n-            return true;\n-        } else {\n-            return false;\n-        }\n-    }\n-\n-    public static String getMethodName(Invocation invocation) {\n-        if ($INVOKE.equals(invocation.getMethodName())\n-                && invocation.getArguments() != null\n-                && invocation.getArguments().length > 0\n-                && invocation.getArguments()[0] instanceof String) {\n-            return (String) invocation.getArguments()[0];\n-        }\n-        return invocation.getMethodName();\n-    }\n-\n-    public static Object[] getArguments(Invocation invocation) {\n-        if ($INVOKE.equals(invocation.getMethodName())\n-                && invocation.getArguments() != null\n-                && invocation.getArguments().length > 2\n-                && invocation.getArguments()[2] instanceof Object[]) {\n-            return (Object[]) invocation.getArguments()[2];\n-        }\n-        return invocation.getArguments();\n-    }\n-\n-    public static Class<?>[] getParameterTypes(Invocation invocation) {\n-        if ($INVOKE.equals(invocation.getMethodName())\n-                && invocation.getArguments() != null\n-                && invocation.getArguments().length > 1\n-                && invocation.getArguments()[1] instanceof String[]) {\n-            String[] types = (String[]) invocation.getArguments()[1];\n-            if (types == null) {\n-                return new Class<?>[0];\n-            }\n-            Class<?>[] parameterTypes = new Class<?>[types.length];\n-            for (int i = 0; i < types.length; i++) {\n-                parameterTypes[i] = ReflectUtils.forName(types[0]);\n-            }\n-            return parameterTypes;\n-        }\n-        return invocation.getParameterTypes();\n-    }\n-\n-    public static boolean isAsync(URL url, Invocation inv) {\n-        boolean isAsync;\n-\n-        if (inv instanceof RpcInvocation) {\n-            RpcInvocation rpcInvocation = (RpcInvocation) inv;\n-            if (rpcInvocation.getInvokeMode() != null) {\n-                return rpcInvocation.getInvokeMode() == InvokeMode.ASYNC;\n-            }\n-        }\n-\n-        if (Boolean.TRUE.toString().equals(inv.getAttachment(ASYNC_KEY))) {\n-            isAsync = true;\n-        } else {\n-            isAsync = url.getMethodParameter(getMethodName(inv), ASYNC_KEY, false);\n-        }\n-        return isAsync;\n-    }\n-\n-    public static boolean isReturnTypeFuture(Invocation inv) {\n-        Class<?> clazz;\n-        if (inv instanceof RpcInvocation) {\n-            clazz = ((RpcInvocation) inv).getReturnType();\n-        } else {\n-            clazz = getReturnType(inv);\n-        }\n-        return (clazz != null && CompletableFuture.class.isAssignableFrom(clazz)) || isGenericAsync(inv);\n-    }\n-\n-    public static boolean isGenericAsync(Invocation inv) {\n-        return $INVOKE_ASYNC.equals(inv.getMethodName());\n-    }\n-\n-    // check parameterTypesDesc to fix CVE-2020-1948\n-    public static boolean isGenericCall(String parameterTypesDesc, String method) {\n-        return ($INVOKE.equals(method) || $INVOKE_ASYNC.equals(method)) && GENERIC_PARAMETER_DESC.equals(parameterTypesDesc);\n-    }\n-\n-    // check parameterTypesDesc to fix CVE-2020-1948\n-    public static boolean isEcho(String parameterTypesDesc, String method) {\n-        return $ECHO.equals(method) && $ECHO_PARAMETER_DESC.equals(parameterTypesDesc);\n-    }\n-\n-    public static InvokeMode getInvokeMode(URL url, Invocation inv) {\n-        if (inv instanceof RpcInvocation) {\n-            RpcInvocation rpcInvocation = (RpcInvocation) inv;\n-            if (rpcInvocation.getInvokeMode() != null) {\n-                return rpcInvocation.getInvokeMode();\n-            }\n-        }\n-\n-        if (isReturnTypeFuture(inv)) {\n-            return InvokeMode.FUTURE;\n-        } else if (isAsync(url, inv)) {\n-            return InvokeMode.ASYNC;\n-        } else {\n-            return InvokeMode.SYNC;\n-        }\n-    }\n-\n-    public static boolean isOneway(URL url, Invocation inv) {\n-        boolean isOneway;\n-        if (Boolean.FALSE.toString().equals(inv.getAttachment(RETURN_KEY))) {\n-            isOneway = true;\n-        } else {\n-            isOneway = !url.getMethodParameter(getMethodName(inv), RETURN_KEY, true);\n-        }\n-        return isOneway;\n-    }\n-\n-    private static Method getMethodByService(Invocation invocation, String service) throws NoSuchMethodException {\n-        Class<?> invokerInterface = invocation.getInvoker().getInterface();\n-        Class<?> cls = invokerInterface != null ? ReflectUtils.forName(invokerInterface.getClassLoader(), service)\n-                : ReflectUtils.forName(service);\n-        Method method = cls.getMethod(invocation.getMethodName(), invocation.getParameterTypes());\n-        if (method.getReturnType() == void.class) {\n-            return null;\n-        }\n-        return method;\n-    }\n-\n-    public static long getTimeout(Invocation invocation, long defaultTimeout) {\n-        long timeout = defaultTimeout;\n-        Object genericTimeout = invocation.getObjectAttachment(TIMEOUT_ATTACHMENT_KEY);\n-        if (genericTimeout != null) {\n-            timeout = convertToNumber(genericTimeout, defaultTimeout);\n-        }\n-        return timeout;\n-    }\n-\n-    public static long getTimeout(URL url, String methodName, RpcContext context, long defaultTimeout) {\n-        long timeout = defaultTimeout;\n-        Object genericTimeout = context.getObjectAttachment(TIMEOUT_KEY);\n-        if (genericTimeout != null) {\n-            timeout = convertToNumber(genericTimeout, defaultTimeout);\n-        } else if (url != null) {\n-            timeout = url.getMethodPositiveParameter(methodName, TIMEOUT_KEY, defaultTimeout);\n-        }\n-        return timeout;\n-    }\n-\n-    private static long convertToNumber(Object obj, long defaultTimeout) {\n-        long timeout = 0;\n-        try {\n-            if (obj instanceof String) {\n-                timeout = Long.parseLong((String) obj);\n-            } else if (obj instanceof Number) {\n-                timeout = ((Number) obj).longValue();\n-            } else {\n-                timeout = Long.parseLong(obj.toString());\n-            }\n-        } catch (Exception e) {\n-            // ignore\n-        }\n-        return timeout;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.support;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.InvokeMode;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+import org.apache.dubbo.rpc.service.GenericService;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Type;\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.atomic.AtomicLong;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE_ASYNC;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GENERIC_PARAMETER_DESC;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_ATTACHMENT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.$ECHO;\r\n+import static org.apache.dubbo.rpc.Constants.$ECHO_PARAMETER_DESC;\r\n+import static org.apache.dubbo.rpc.Constants.ASYNC_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.AUTO_ATTACH_INVOCATIONID_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.ID_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.RETURN_KEY;\r\n+\r\n+/**\r\n+ * RpcUtils\r\n+ */\r\n+public class RpcUtils {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(RpcUtils.class);\r\n+    private static final AtomicLong INVOKE_ID = new AtomicLong(0);\r\n+\r\n+    public static Class<?> getReturnType(Invocation invocation) {\r\n+        try {\r\n+            if (invocation != null && invocation.getInvoker() != null\r\n+                    && invocation.getInvoker().getUrl() != null\r\n+                    && invocation.getInvoker().getInterface() != GenericService.class\r\n+                    && !invocation.getMethodName().startsWith(\"$\")) {\r\n+                String service = invocation.getInvoker().getUrl().getServiceInterface();\r\n+                if (StringUtils.isNotEmpty(service)) {\r\n+                    Method method = getMethodByService(invocation, service);\r\n+                    return method.getReturnType();\r\n+                }\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            logger.warn(t.getMessage(), t);\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    public static Type[] getReturnTypes(Invocation invocation) {\r\n+        try {\r\n+            if (invocation != null && invocation.getInvoker() != null\r\n+                    && invocation.getInvoker().getUrl() != null\r\n+                    && invocation.getInvoker().getInterface() != GenericService.class\r\n+                    && !invocation.getMethodName().startsWith(\"$\")) {\r\n+                String service = invocation.getInvoker().getUrl().getServiceInterface();\r\n+                if (StringUtils.isNotEmpty(service)) {\r\n+                    Method method = getMethodByService(invocation, service);\r\n+                    return ReflectUtils.getReturnTypes(method);\r\n+                }\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            logger.warn(t.getMessage(), t);\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    public static Long getInvocationId(Invocation inv) {\r\n+        String id = inv.getAttachment(ID_KEY);\r\n+        return id == null ? null : new Long(id);\r\n+    }\r\n+\r\n+    /**\r\n+     * Idempotent operation: invocation id will be added in async operation by default\r\n+     *\r\n+     * @param url\r\n+     * @param inv\r\n+     */\r\n+    public static void attachInvocationIdIfAsync(URL url, Invocation inv) {\r\n+        if (isAttachInvocationId(url, inv) && getInvocationId(inv) == null && inv instanceof RpcInvocation) {\r\n+            inv.setAttachment(ID_KEY, String.valueOf(INVOKE_ID.getAndIncrement()));\r\n+        }\r\n+    }\r\n+\r\n+    private static boolean isAttachInvocationId(URL url, Invocation invocation) {\r\n+        String value = url.getMethodParameter(invocation.getMethodName(), AUTO_ATTACH_INVOCATIONID_KEY);\r\n+        if (value == null) {\r\n+            // add invocationid in async operation by default\r\n+            return isAsync(url, invocation);\r\n+        } else if (Boolean.TRUE.toString().equalsIgnoreCase(value)) {\r\n+            return true;\r\n+        } else {\r\n+            return false;\r\n+        }\r\n+    }\r\n+\r\n+    public static String getMethodName(Invocation invocation) {\r\n+        if ($INVOKE.equals(invocation.getMethodName())\r\n+                && invocation.getArguments() != null\r\n+                && invocation.getArguments().length > 0\r\n+                && invocation.getArguments()[0] instanceof String) {\r\n+            return (String) invocation.getArguments()[0];\r\n+        }\r\n+        return invocation.getMethodName();\r\n+    }\r\n+\r\n+    public static Object[] getArguments(Invocation invocation) {\r\n+        if ($INVOKE.equals(invocation.getMethodName())\r\n+                && invocation.getArguments() != null\r\n+                && invocation.getArguments().length > 2\r\n+                && invocation.getArguments()[2] instanceof Object[]) {\r\n+            return (Object[]) invocation.getArguments()[2];\r\n+        }\r\n+        return invocation.getArguments();\r\n+    }\r\n+\r\n+    public static Class<?>[] getParameterTypes(Invocation invocation) {\r\n+        if ($INVOKE.equals(invocation.getMethodName())\r\n+                && invocation.getArguments() != null\r\n+                && invocation.getArguments().length > 1\r\n+                && invocation.getArguments()[1] instanceof String[]) {\r\n+            String[] types = (String[]) invocation.getArguments()[1];\r\n+            if (types == null) {\r\n+                return new Class<?>[0];\r\n+            }\r\n+            Class<?>[] parameterTypes = new Class<?>[types.length];\r\n+            for (int i = 0; i < types.length; i++) {\r\n+                parameterTypes[i] = ReflectUtils.forName(types[0]);\r\n+            }\r\n+            return parameterTypes;\r\n+        }\r\n+        return invocation.getParameterTypes();\r\n+    }\r\n+\r\n+    public static boolean isAsync(URL url, Invocation inv) {\r\n+        boolean isAsync;\r\n+\r\n+        if (inv instanceof RpcInvocation) {\r\n+            RpcInvocation rpcInvocation = (RpcInvocation) inv;\r\n+            if (rpcInvocation.getInvokeMode() != null) {\r\n+                return rpcInvocation.getInvokeMode() == InvokeMode.ASYNC;\r\n+            }\r\n+        }\r\n+\r\n+        if (Boolean.TRUE.toString().equals(inv.getAttachment(ASYNC_KEY))) {\r\n+            isAsync = true;\r\n+        } else {\r\n+            isAsync = url.getMethodParameter(getMethodName(inv), ASYNC_KEY, false);\r\n+        }\r\n+        return isAsync;\r\n+    }\r\n+\r\n+    public static boolean isReturnTypeFuture(Invocation inv) {\r\n+        Class<?> clazz;\r\n+        if (inv instanceof RpcInvocation) {\r\n+            clazz = ((RpcInvocation) inv).getReturnType();\r\n+        } else {\r\n+            clazz = getReturnType(inv);\r\n+        }\r\n+        return (clazz != null && CompletableFuture.class.isAssignableFrom(clazz)) || isGenericAsync(inv);\r\n+    }\r\n+\r\n+    public static boolean isGenericAsync(Invocation inv) {\r\n+        return $INVOKE_ASYNC.equals(inv.getMethodName());\r\n+    }\r\n+\r\n+    // check parameterTypesDesc to fix CVE-2020-1948\r\n+    public static boolean isGenericCall(String parameterTypesDesc, String method) {\r\n+        return ($INVOKE.equals(method) || $INVOKE_ASYNC.equals(method)) && GENERIC_PARAMETER_DESC.equals(parameterTypesDesc);\r\n+    }\r\n+\r\n+    // check parameterTypesDesc to fix CVE-2020-1948\r\n+    public static boolean isEcho(String parameterTypesDesc, String method) {\r\n+        return $ECHO.equals(method) && $ECHO_PARAMETER_DESC.equals(parameterTypesDesc);\r\n+    }\r\n+\r\n+    public static InvokeMode getInvokeMode(URL url, Invocation inv) {\r\n+        if (inv instanceof RpcInvocation) {\r\n+            RpcInvocation rpcInvocation = (RpcInvocation) inv;\r\n+            if (rpcInvocation.getInvokeMode() != null) {\r\n+                return rpcInvocation.getInvokeMode();\r\n+            }\r\n+        }\r\n+\r\n+        if (isReturnTypeFuture(inv)) {\r\n+            return InvokeMode.FUTURE;\r\n+        } else if (isAsync(url, inv)) {\r\n+            return InvokeMode.ASYNC;\r\n+        } else {\r\n+            return InvokeMode.SYNC;\r\n+        }\r\n+    }\r\n+\r\n+    public static boolean isOneway(URL url, Invocation inv) {\r\n+        boolean isOneway;\r\n+        if (Boolean.FALSE.toString().equals(inv.getAttachment(RETURN_KEY))) {\r\n+            isOneway = true;\r\n+        } else {\r\n+            isOneway = !url.getMethodParameter(getMethodName(inv), RETURN_KEY, true);\r\n+        }\r\n+        return isOneway;\r\n+    }\r\n+\r\n+    private static Method getMethodByService(Invocation invocation, String service) throws NoSuchMethodException {\r\n+        Class<?> invokerInterface = invocation.getInvoker().getInterface();\r\n+        Class<?> cls = invokerInterface != null ? ReflectUtils.forName(invokerInterface.getClassLoader(), service)\r\n+                : ReflectUtils.forName(service);\r\n+        Method method = cls.getMethod(invocation.getMethodName(), invocation.getParameterTypes());\r\n+        if (method.getReturnType() == void.class) {\r\n+            return null;\r\n+        }\r\n+        return method;\r\n+    }\r\n+\r\n+    public static long getTimeout(Invocation invocation, long defaultTimeout) {\r\n+        long timeout = defaultTimeout;\r\n+        Object genericTimeout = invocation.getObjectAttachment(TIMEOUT_ATTACHMENT_KEY);\r\n+        if (genericTimeout != null) {\r\n+            timeout = convertToNumber(genericTimeout, defaultTimeout);\r\n+        }\r\n+        return timeout;\r\n+    }\r\n+\r\n+    public static long getTimeout(URL url, String methodName, RpcContext context, long defaultTimeout) {\r\n+        long timeout = defaultTimeout;\r\n+        Object genericTimeout = context.getObjectAttachment(TIMEOUT_KEY);\r\n+        if (genericTimeout != null) {\r\n+            timeout = convertToNumber(genericTimeout, defaultTimeout);\r\n+        } else if (url != null) {\r\n+            timeout = url.getMethodPositiveParameter(methodName, TIMEOUT_KEY, defaultTimeout);\r\n+        }\r\n+        return timeout;\r\n+    }\r\n+\r\n+    private static long convertToNumber(Object obj, long defaultTimeout) {\r\n+        long timeout = 0;\r\n+        try {\r\n+            if (obj instanceof String) {\r\n+                timeout = Long.parseLong((String) obj);\r\n+            } else if (obj instanceof Number) {\r\n+                timeout = ((Number) obj).longValue();\r\n+            } else {\r\n+                timeout = Long.parseLong(obj.toString());\r\n+            }\r\n+        } catch (Exception e) {\r\n+            // ignore\r\n+        }\r\n+        return timeout;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/CallbackServiceCodec.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,318 +1,318 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.dubbo;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.bytecode.Wrapper;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ConcurrentHashSet;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.rpc.Exporter;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.ProxyFactory;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker;\n-\n-import java.io.IOException;\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.Set;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.CALLBACK_INSTANCES_LIMIT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_CALLBACK_INSTANCES;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.METHODS_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.rpc.Constants.IS_SERVER_KEY;\n-import static org.apache.dubbo.rpc.protocol.dubbo.Constants.CALLBACK_SERVICE_KEY;\n-import static org.apache.dubbo.rpc.protocol.dubbo.Constants.CALLBACK_SERVICE_PROXY_KEY;\n-import static org.apache.dubbo.rpc.protocol.dubbo.Constants.CHANNEL_CALLBACK_KEY;\n-import static org.apache.dubbo.rpc.protocol.dubbo.Constants.IS_CALLBACK_SERVICE;\n-\n-/**\n- * callback service helper\n- */\n-class CallbackServiceCodec {\n-    private static final Logger logger = LoggerFactory.getLogger(CallbackServiceCodec.class);\n-\n-    private static final ProxyFactory PROXY_FACTORY = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();\n-    private static final DubboProtocol PROTOCOL = DubboProtocol.getDubboProtocol();\n-    private static final byte CALLBACK_NONE = 0x0;\n-    private static final byte CALLBACK_CREATE = 0x1;\n-    private static final byte CALLBACK_DESTROY = 0x2;\n-    private static final String INV_ATT_CALLBACK_KEY = \"sys_callback_arg-\";\n-\n-    private static byte isCallBack(URL url, String protocolServiceKey, String methodName, int argIndex) {\n-        // parameter callback rule: method-name.parameter-index(starting from 0).callback\n-        byte isCallback = CALLBACK_NONE;\n-        if (url != null && url.hasServiceMethodParameter(protocolServiceKey, methodName)) {\n-            String callback = url.getServiceParameter(protocolServiceKey, methodName + \".\" + argIndex + \".callback\");\n-            if (callback != null) {\n-                if (\"true\".equalsIgnoreCase(callback)) {\n-                    isCallback = CALLBACK_CREATE;\n-                } else if (\"false\".equalsIgnoreCase(callback)) {\n-                    isCallback = CALLBACK_DESTROY;\n-                }\n-            }\n-        }\n-        return isCallback;\n-    }\n-\n-    /**\n-     * export or unexport callback service on client side\n-     *\n-     * @param channel\n-     * @param url\n-     * @param clazz\n-     * @param inst\n-     * @param export\n-     * @throws IOException\n-     */\n-    @SuppressWarnings({\"unchecked\", \"rawtypes\"})\n-    private static String exportOrUnexportCallbackService(Channel channel, URL url, Class clazz, Object inst, Boolean export) throws IOException {\n-        int instid = System.identityHashCode(inst);\n-\n-        Map<String, String> params = new HashMap<>(3);\n-        // no need to new client again\n-        params.put(IS_SERVER_KEY, Boolean.FALSE.toString());\n-        // mark it's a callback, for troubleshooting\n-        params.put(IS_CALLBACK_SERVICE, Boolean.TRUE.toString());\n-        String group = (url == null ? null : url.getParameter(GROUP_KEY));\n-        if (group != null && group.length() > 0) {\n-            params.put(GROUP_KEY, group);\n-        }\n-        // add method, for verifying against method, automatic fallback (see dubbo protocol)\n-        params.put(METHODS_KEY, StringUtils.join(Wrapper.getWrapper(clazz).getDeclaredMethodNames(), \",\"));\n-\n-        Map<String, String> tmpMap = new HashMap<>();\n-        if (url != null) {\n-            Map<String, String> parameters = url.getParameters();\n-            if (parameters != null && !parameters.isEmpty()) {\n-                tmpMap.putAll(parameters);\n-            }\n-        }\n-        tmpMap.putAll(params);\n-        \n-        tmpMap.remove(VERSION_KEY);// doesn't need to distinguish version for callback\n-        tmpMap.remove(Constants.BIND_PORT_KEY); //callback doesn't needs bind.port\n-        tmpMap.put(INTERFACE_KEY, clazz.getName());\n-        URL exportUrl = new URL(DubboProtocol.NAME, channel.getLocalAddress().getAddress().getHostAddress(), channel.getLocalAddress().getPort(), clazz.getName() + \".\" + instid, tmpMap);\n-\n-        // no need to generate multiple exporters for different channel in the same JVM, cache key cannot collide.\n-        String cacheKey = getClientSideCallbackServiceCacheKey(instid);\n-        String countKey = getClientSideCountKey(clazz.getName());\n-        if (export) {\n-            // one channel can have multiple callback instances, no need to re-export for different instance.\n-            if (!channel.hasAttribute(cacheKey)) {\n-                if (!isInstancesOverLimit(channel, url, clazz.getName(), instid, false)) {\n-                    ApplicationModel.getServiceRepository().registerService(clazz);\n-                    Invoker<?> invoker = PROXY_FACTORY.getInvoker(inst, clazz, exportUrl);\n-                    // should destroy resource?\n-                    Exporter<?> exporter = PROTOCOL.export(invoker);\n-                    // this is used for tracing if instid has published service or not.\n-                    channel.setAttribute(cacheKey, exporter);\n-                    logger.info(\"Export a callback service :\" + exportUrl + \", on \" + channel + \", url is: \" + url);\n-                    increaseInstanceCount(channel, countKey);\n-                }\n-            }\n-        } else {\n-            if (channel.hasAttribute(cacheKey)) {\n-                Exporter<?> exporter = (Exporter<?>) channel.getAttribute(cacheKey);\n-                exporter.unexport();\n-                channel.removeAttribute(cacheKey);\n-                decreaseInstanceCount(channel, countKey);\n-            }\n-        }\n-        return String.valueOf(instid);\n-    }\n-\n-    /**\n-     * refer or destroy callback service on server side\n-     *\n-     * @param url\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    private static Object referOrDestroyCallbackService(Channel channel, URL url, Class<?> clazz, Invocation inv, int instid, boolean isRefer) {\n-        Object proxy;\n-        String invokerCacheKey = getServerSideCallbackInvokerCacheKey(channel, clazz.getName(), instid);\n-        String proxyCacheKey = getServerSideCallbackServiceCacheKey(channel, clazz.getName(), instid);\n-        proxy = channel.getAttribute(proxyCacheKey);\n-        String countkey = getServerSideCountKey(channel, clazz.getName());\n-        if (isRefer) {\n-            if (proxy == null) {\n-                URL referurl = URL.valueOf(\"callback://\" + url.getAddress() + \"/\" + clazz.getName() + \"?\" + INTERFACE_KEY + \"=\" + clazz.getName());\n-                referurl = referurl.addParametersIfAbsent(url.getParameters()).removeParameter(METHODS_KEY);\n-                if (!isInstancesOverLimit(channel, referurl, clazz.getName(), instid, true)) {\n-                    ApplicationModel.getServiceRepository().registerService(clazz);\n-                    @SuppressWarnings(\"rawtypes\")\n-                    Invoker<?> invoker = new ChannelWrappedInvoker(clazz, channel, referurl, String.valueOf(instid));\n-                    proxy = PROXY_FACTORY.getProxy(new AsyncToSyncInvoker<>(invoker));\n-                    channel.setAttribute(proxyCacheKey, proxy);\n-                    channel.setAttribute(invokerCacheKey, invoker);\n-                    increaseInstanceCount(channel, countkey);\n-\n-                    //convert error fail fast .\n-                    //ignore concurrent problem.\n-                    Set<Invoker<?>> callbackInvokers = (Set<Invoker<?>>) channel.getAttribute(CHANNEL_CALLBACK_KEY);\n-                    if (callbackInvokers == null) {\n-                        callbackInvokers = new ConcurrentHashSet<>(1);\n-                        channel.setAttribute(CHANNEL_CALLBACK_KEY, callbackInvokers);\n-                    }\n-                    callbackInvokers.add(invoker);\n-                    logger.info(\"method \" + inv.getMethodName() + \" include a callback service :\" + invoker.getUrl() + \", a proxy :\" + invoker + \" has been created.\");\n-                }\n-            }\n-        } else {\n-            if (proxy != null) {\n-                Invoker<?> invoker = (Invoker<?>) channel.getAttribute(invokerCacheKey);\n-                try {\n-                    Set<Invoker<?>> callbackInvokers = (Set<Invoker<?>>) channel.getAttribute(CHANNEL_CALLBACK_KEY);\n-                    if (callbackInvokers != null) {\n-                        callbackInvokers.remove(invoker);\n-                    }\n-                    invoker.destroy();\n-                } catch (Exception e) {\n-                    logger.error(e.getMessage(), e);\n-                }\n-                // cancel refer, directly remove from the map\n-                channel.removeAttribute(proxyCacheKey);\n-                channel.removeAttribute(invokerCacheKey);\n-                decreaseInstanceCount(channel, countkey);\n-            }\n-        }\n-        return proxy;\n-    }\n-\n-    private static String getClientSideCallbackServiceCacheKey(int instid) {\n-        return CALLBACK_SERVICE_KEY + \".\" + instid;\n-    }\n-\n-    private static String getServerSideCallbackServiceCacheKey(Channel channel, String interfaceClass, int instid) {\n-        return CALLBACK_SERVICE_PROXY_KEY + \".\" + System.identityHashCode(channel) + \".\" + interfaceClass + \".\" + instid;\n-    }\n-\n-    private static String getServerSideCallbackInvokerCacheKey(Channel channel, String interfaceClass, int instid) {\n-        return getServerSideCallbackServiceCacheKey(channel, interfaceClass, instid) + \".\" + \"invoker\";\n-    }\n-\n-    private static String getClientSideCountKey(String interfaceClass) {\n-        return CALLBACK_SERVICE_KEY + \".\" + interfaceClass + \".COUNT\";\n-    }\n-\n-    private static String getServerSideCountKey(Channel channel, String interfaceClass) {\n-        return CALLBACK_SERVICE_PROXY_KEY + \".\" + System.identityHashCode(channel) + \".\" + interfaceClass + \".COUNT\";\n-    }\n-\n-    private static boolean isInstancesOverLimit(Channel channel, URL url, String interfaceClass, int instid, boolean isServer) {\n-        Integer count = (Integer) channel.getAttribute(isServer ? getServerSideCountKey(channel, interfaceClass) : getClientSideCountKey(interfaceClass));\n-        int limit = url.getParameter(CALLBACK_INSTANCES_LIMIT_KEY, DEFAULT_CALLBACK_INSTANCES);\n-        if (count != null && count >= limit) {\n-            //client side error\n-            throw new IllegalStateException(\"interface \" + interfaceClass + \" `s callback instances num exceed providers limit :\" + limit\n-                    + \" ,current num: \" + (count + 1) + \". The new callback service will not work !!! you can cancle the callback service which exported before. channel :\" + channel);\n-        } else {\n-            return false;\n-        }\n-    }\n-\n-    private static void increaseInstanceCount(Channel channel, String countkey) {\n-        try {\n-            //ignore concurrent problem?\n-            Integer count = (Integer) channel.getAttribute(countkey);\n-            if (count == null) {\n-                count = 1;\n-            } else {\n-                count++;\n-            }\n-            channel.setAttribute(countkey, count);\n-        } catch (Exception e) {\n-            logger.error(e.getMessage(), e);\n-        }\n-    }\n-\n-    private static void decreaseInstanceCount(Channel channel, String countkey) {\n-        try {\n-            Integer count = (Integer) channel.getAttribute(countkey);\n-            if (count == null || count <= 0) {\n-                return;\n-            } else {\n-                count--;\n-            }\n-            channel.setAttribute(countkey, count);\n-        } catch (Exception e) {\n-            logger.error(e.getMessage(), e);\n-        }\n-    }\n-\n-    public static Object encodeInvocationArgument(Channel channel, RpcInvocation inv, int paraIndex) throws IOException {\n-        // get URL directly\n-        URL url = inv.getInvoker() == null ? null : inv.getInvoker().getUrl();\n-        byte callbackStatus = isCallBack(url, inv.getProtocolServiceKey(), inv.getMethodName(), paraIndex);\n-        Object[] args = inv.getArguments();\n-        Class<?>[] pts = inv.getParameterTypes();\n-        switch (callbackStatus) {\n-            case CallbackServiceCodec.CALLBACK_CREATE:\n-                inv.setAttachment(INV_ATT_CALLBACK_KEY + paraIndex, exportOrUnexportCallbackService(channel, url, pts[paraIndex], args[paraIndex], true));\n-                return null;\n-            case CallbackServiceCodec.CALLBACK_DESTROY:\n-                inv.setAttachment(INV_ATT_CALLBACK_KEY + paraIndex, exportOrUnexportCallbackService(channel, url, pts[paraIndex], args[paraIndex], false));\n-                return null;\n-            default:\n-                return args[paraIndex];\n-        }\n-    }\n-\n-    public static Object decodeInvocationArgument(Channel channel, RpcInvocation inv, Class<?>[] pts, int paraIndex, Object inObject) throws IOException {\n-        // if it's a callback, create proxy on client side, callback interface on client side can be invoked through channel\n-        // need get URL from channel and env when decode\n-        URL url = null;\n-        try {\n-            url = DubboProtocol.getDubboProtocol().getInvoker(channel, inv).getUrl();\n-        } catch (RemotingException e) {\n-            if (logger.isInfoEnabled()) {\n-                logger.info(e.getMessage(), e);\n-            }\n-            return inObject;\n-        }\n-        byte callbackstatus = isCallBack(url, inv.getProtocolServiceKey(), inv.getMethodName(), paraIndex);\n-        switch (callbackstatus) {\n-            case CallbackServiceCodec.CALLBACK_CREATE:\n-                try {\n-                    return referOrDestroyCallbackService(channel, url, pts[paraIndex], inv, Integer.parseInt(inv.getAttachment(INV_ATT_CALLBACK_KEY + paraIndex)), true);\n-                } catch (Exception e) {\n-                    logger.error(e.getMessage(), e);\n-                    throw new IOException(StringUtils.toString(e));\n-                }\n-            case CallbackServiceCodec.CALLBACK_DESTROY:\n-                try {\n-                    return referOrDestroyCallbackService(channel, url, pts[paraIndex], inv, Integer.parseInt(inv.getAttachment(INV_ATT_CALLBACK_KEY + paraIndex)), false);\n-                } catch (Exception e) {\n-                    throw new IOException(StringUtils.toString(e));\n-                }\n-            default:\n-                return inObject;\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.dubbo;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.bytecode.Wrapper;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ConcurrentHashSet;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.rpc.Exporter;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.ProxyFactory;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker;\r\n+\r\n+import java.io.IOException;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CALLBACK_INSTANCES_LIMIT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_CALLBACK_INSTANCES;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.METHODS_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.IS_SERVER_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.Constants.CALLBACK_SERVICE_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.Constants.CALLBACK_SERVICE_PROXY_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.Constants.CHANNEL_CALLBACK_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.Constants.IS_CALLBACK_SERVICE;\r\n+\r\n+/**\r\n+ * callback service helper\r\n+ */\r\n+class CallbackServiceCodec {\r\n+    private static final Logger logger = LoggerFactory.getLogger(CallbackServiceCodec.class);\r\n+\r\n+    private static final ProxyFactory PROXY_FACTORY = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();\r\n+    private static final DubboProtocol PROTOCOL = DubboProtocol.getDubboProtocol();\r\n+    private static final byte CALLBACK_NONE = 0x0;\r\n+    private static final byte CALLBACK_CREATE = 0x1;\r\n+    private static final byte CALLBACK_DESTROY = 0x2;\r\n+    private static final String INV_ATT_CALLBACK_KEY = \"sys_callback_arg-\";\r\n+\r\n+    private static byte isCallBack(URL url, String protocolServiceKey, String methodName, int argIndex) {\r\n+        // parameter callback rule: method-name.parameter-index(starting from 0).callback\r\n+        byte isCallback = CALLBACK_NONE;\r\n+        if (url != null && url.hasServiceMethodParameter(protocolServiceKey, methodName)) {\r\n+            String callback = url.getServiceParameter(protocolServiceKey, methodName + \".\" + argIndex + \".callback\");\r\n+            if (callback != null) {\r\n+                if (\"true\".equalsIgnoreCase(callback)) {\r\n+                    isCallback = CALLBACK_CREATE;\r\n+                } else if (\"false\".equalsIgnoreCase(callback)) {\r\n+                    isCallback = CALLBACK_DESTROY;\r\n+                }\r\n+            }\r\n+        }\r\n+        return isCallback;\r\n+    }\r\n+\r\n+    /**\r\n+     * export or unexport callback service on client side\r\n+     *\r\n+     * @param channel\r\n+     * @param url\r\n+     * @param clazz\r\n+     * @param inst\r\n+     * @param export\r\n+     * @throws IOException\r\n+     */\r\n+    @SuppressWarnings({\"unchecked\", \"rawtypes\"})\r\n+    private static String exportOrUnexportCallbackService(Channel channel, URL url, Class clazz, Object inst, Boolean export) throws IOException {\r\n+        int instid = System.identityHashCode(inst);\r\n+\r\n+        Map<String, String> params = new HashMap<>(3);\r\n+        // no need to new client again\r\n+        params.put(IS_SERVER_KEY, Boolean.FALSE.toString());\r\n+        // mark it's a callback, for troubleshooting\r\n+        params.put(IS_CALLBACK_SERVICE, Boolean.TRUE.toString());\r\n+        String group = (url == null ? null : url.getParameter(GROUP_KEY));\r\n+        if (group != null && group.length() > 0) {\r\n+            params.put(GROUP_KEY, group);\r\n+        }\r\n+        // add method, for verifying against method, automatic fallback (see dubbo protocol)\r\n+        params.put(METHODS_KEY, StringUtils.join(Wrapper.getWrapper(clazz).getDeclaredMethodNames(), \",\"));\r\n+\r\n+        Map<String, String> tmpMap = new HashMap<>();\r\n+        if (url != null) {\r\n+            Map<String, String> parameters = url.getParameters();\r\n+            if (parameters != null && !parameters.isEmpty()) {\r\n+                tmpMap.putAll(parameters);\r\n+            }\r\n+        }\r\n+        tmpMap.putAll(params);\r\n+        \r\n+        tmpMap.remove(VERSION_KEY);// doesn't need to distinguish version for callback\r\n+        tmpMap.remove(Constants.BIND_PORT_KEY); //callback doesn't needs bind.port\r\n+        tmpMap.put(INTERFACE_KEY, clazz.getName());\r\n+        URL exportUrl = new URL(DubboProtocol.NAME, channel.getLocalAddress().getAddress().getHostAddress(), channel.getLocalAddress().getPort(), clazz.getName() + \".\" + instid, tmpMap);\r\n+\r\n+        // no need to generate multiple exporters for different channel in the same JVM, cache key cannot collide.\r\n+        String cacheKey = getClientSideCallbackServiceCacheKey(instid);\r\n+        String countKey = getClientSideCountKey(clazz.getName());\r\n+        if (export) {\r\n+            // one channel can have multiple callback instances, no need to re-export for different instance.\r\n+            if (!channel.hasAttribute(cacheKey)) {\r\n+                if (!isInstancesOverLimit(channel, url, clazz.getName(), instid, false)) {\r\n+                    ApplicationModel.getServiceRepository().registerService(clazz);\r\n+                    Invoker<?> invoker = PROXY_FACTORY.getInvoker(inst, clazz, exportUrl);\r\n+                    // should destroy resource?\r\n+                    Exporter<?> exporter = PROTOCOL.export(invoker);\r\n+                    // this is used for tracing if instid has published service or not.\r\n+                    channel.setAttribute(cacheKey, exporter);\r\n+                    logger.info(\"Export a callback service :\" + exportUrl + \", on \" + channel + \", url is: \" + url);\r\n+                    increaseInstanceCount(channel, countKey);\r\n+                }\r\n+            }\r\n+        } else {\r\n+            if (channel.hasAttribute(cacheKey)) {\r\n+                Exporter<?> exporter = (Exporter<?>) channel.getAttribute(cacheKey);\r\n+                exporter.unexport();\r\n+                channel.removeAttribute(cacheKey);\r\n+                decreaseInstanceCount(channel, countKey);\r\n+            }\r\n+        }\r\n+        return String.valueOf(instid);\r\n+    }\r\n+\r\n+    /**\r\n+     * refer or destroy callback service on server side\r\n+     *\r\n+     * @param url\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    private static Object referOrDestroyCallbackService(Channel channel, URL url, Class<?> clazz, Invocation inv, int instid, boolean isRefer) {\r\n+        Object proxy;\r\n+        String invokerCacheKey = getServerSideCallbackInvokerCacheKey(channel, clazz.getName(), instid);\r\n+        String proxyCacheKey = getServerSideCallbackServiceCacheKey(channel, clazz.getName(), instid);\r\n+        proxy = channel.getAttribute(proxyCacheKey);\r\n+        String countkey = getServerSideCountKey(channel, clazz.getName());\r\n+        if (isRefer) {\r\n+            if (proxy == null) {\r\n+                URL referurl = URL.valueOf(\"callback://\" + url.getAddress() + \"/\" + clazz.getName() + \"?\" + INTERFACE_KEY + \"=\" + clazz.getName());\r\n+                referurl = referurl.addParametersIfAbsent(url.getParameters()).removeParameter(METHODS_KEY);\r\n+                if (!isInstancesOverLimit(channel, referurl, clazz.getName(), instid, true)) {\r\n+                    ApplicationModel.getServiceRepository().registerService(clazz);\r\n+                    @SuppressWarnings(\"rawtypes\")\r\n+                    Invoker<?> invoker = new ChannelWrappedInvoker(clazz, channel, referurl, String.valueOf(instid));\r\n+                    proxy = PROXY_FACTORY.getProxy(new AsyncToSyncInvoker<>(invoker));\r\n+                    channel.setAttribute(proxyCacheKey, proxy);\r\n+                    channel.setAttribute(invokerCacheKey, invoker);\r\n+                    increaseInstanceCount(channel, countkey);\r\n+\r\n+                    //convert error fail fast .\r\n+                    //ignore concurrent problem.\r\n+                    Set<Invoker<?>> callbackInvokers = (Set<Invoker<?>>) channel.getAttribute(CHANNEL_CALLBACK_KEY);\r\n+                    if (callbackInvokers == null) {\r\n+                        callbackInvokers = new ConcurrentHashSet<>(1);\r\n+                        channel.setAttribute(CHANNEL_CALLBACK_KEY, callbackInvokers);\r\n+                    }\r\n+                    callbackInvokers.add(invoker);\r\n+                    logger.info(\"method \" + inv.getMethodName() + \" include a callback service :\" + invoker.getUrl() + \", a proxy :\" + invoker + \" has been created.\");\r\n+                }\r\n+            }\r\n+        } else {\r\n+            if (proxy != null) {\r\n+                Invoker<?> invoker = (Invoker<?>) channel.getAttribute(invokerCacheKey);\r\n+                try {\r\n+                    Set<Invoker<?>> callbackInvokers = (Set<Invoker<?>>) channel.getAttribute(CHANNEL_CALLBACK_KEY);\r\n+                    if (callbackInvokers != null) {\r\n+                        callbackInvokers.remove(invoker);\r\n+                    }\r\n+                    invoker.destroy();\r\n+                } catch (Exception e) {\r\n+                    logger.error(e.getMessage(), e);\r\n+                }\r\n+                // cancel refer, directly remove from the map\r\n+                channel.removeAttribute(proxyCacheKey);\r\n+                channel.removeAttribute(invokerCacheKey);\r\n+                decreaseInstanceCount(channel, countkey);\r\n+            }\r\n+        }\r\n+        return proxy;\r\n+    }\r\n+\r\n+    private static String getClientSideCallbackServiceCacheKey(int instid) {\r\n+        return CALLBACK_SERVICE_KEY + \".\" + instid;\r\n+    }\r\n+\r\n+    private static String getServerSideCallbackServiceCacheKey(Channel channel, String interfaceClass, int instid) {\r\n+        return CALLBACK_SERVICE_PROXY_KEY + \".\" + System.identityHashCode(channel) + \".\" + interfaceClass + \".\" + instid;\r\n+    }\r\n+\r\n+    private static String getServerSideCallbackInvokerCacheKey(Channel channel, String interfaceClass, int instid) {\r\n+        return getServerSideCallbackServiceCacheKey(channel, interfaceClass, instid) + \".\" + \"invoker\";\r\n+    }\r\n+\r\n+    private static String getClientSideCountKey(String interfaceClass) {\r\n+        return CALLBACK_SERVICE_KEY + \".\" + interfaceClass + \".COUNT\";\r\n+    }\r\n+\r\n+    private static String getServerSideCountKey(Channel channel, String interfaceClass) {\r\n+        return CALLBACK_SERVICE_PROXY_KEY + \".\" + System.identityHashCode(channel) + \".\" + interfaceClass + \".COUNT\";\r\n+    }\r\n+\r\n+    private static boolean isInstancesOverLimit(Channel channel, URL url, String interfaceClass, int instid, boolean isServer) {\r\n+        Integer count = (Integer) channel.getAttribute(isServer ? getServerSideCountKey(channel, interfaceClass) : getClientSideCountKey(interfaceClass));\r\n+        int limit = url.getParameter(CALLBACK_INSTANCES_LIMIT_KEY, DEFAULT_CALLBACK_INSTANCES);\r\n+        if (count != null && count >= limit) {\r\n+            //client side error\r\n+            throw new IllegalStateException(\"interface \" + interfaceClass + \" `s callback instances num exceed providers limit :\" + limit\r\n+                    + \" ,current num: \" + (count + 1) + \". The new callback service will not work !!! you can cancle the callback service which exported before. channel :\" + channel);\r\n+        } else {\r\n+            return false;\r\n+        }\r\n+    }\r\n+\r\n+    private static void increaseInstanceCount(Channel channel, String countkey) {\r\n+        try {\r\n+            //ignore concurrent problem?\r\n+            Integer count = (Integer) channel.getAttribute(countkey);\r\n+            if (count == null) {\r\n+                count = 1;\r\n+            } else {\r\n+                count++;\r\n+            }\r\n+            channel.setAttribute(countkey, count);\r\n+        } catch (Exception e) {\r\n+            logger.error(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    private static void decreaseInstanceCount(Channel channel, String countkey) {\r\n+        try {\r\n+            Integer count = (Integer) channel.getAttribute(countkey);\r\n+            if (count == null || count <= 0) {\r\n+                return;\r\n+            } else {\r\n+                count--;\r\n+            }\r\n+            channel.setAttribute(countkey, count);\r\n+        } catch (Exception e) {\r\n+            logger.error(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    public static Object encodeInvocationArgument(Channel channel, RpcInvocation inv, int paraIndex) throws IOException {\r\n+        // get URL directly\r\n+        URL url = inv.getInvoker() == null ? null : inv.getInvoker().getUrl();\r\n+        byte callbackStatus = isCallBack(url, inv.getProtocolServiceKey(), inv.getMethodName(), paraIndex);\r\n+        Object[] args = inv.getArguments();\r\n+        Class<?>[] pts = inv.getParameterTypes();\r\n+        switch (callbackStatus) {\r\n+            case CallbackServiceCodec.CALLBACK_CREATE:\r\n+                inv.setAttachment(INV_ATT_CALLBACK_KEY + paraIndex, exportOrUnexportCallbackService(channel, url, pts[paraIndex], args[paraIndex], true));\r\n+                return null;\r\n+            case CallbackServiceCodec.CALLBACK_DESTROY:\r\n+                inv.setAttachment(INV_ATT_CALLBACK_KEY + paraIndex, exportOrUnexportCallbackService(channel, url, pts[paraIndex], args[paraIndex], false));\r\n+                return null;\r\n+            default:\r\n+                return args[paraIndex];\r\n+        }\r\n+    }\r\n+\r\n+    public static Object decodeInvocationArgument(Channel channel, RpcInvocation inv, Class<?>[] pts, int paraIndex, Object inObject) throws IOException {\r\n+        // if it's a callback, create proxy on client side, callback interface on client side can be invoked through channel\r\n+        // need get URL from channel and env when decode\r\n+        URL url = null;\r\n+        try {\r\n+            url = DubboProtocol.getDubboProtocol().getInvoker(channel, inv).getUrl();\r\n+        } catch (RemotingException e) {\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(e.getMessage(), e);\r\n+            }\r\n+            return inObject;\r\n+        }\r\n+        byte callbackstatus = isCallBack(url, inv.getProtocolServiceKey(), inv.getMethodName(), paraIndex);\r\n+        switch (callbackstatus) {\r\n+            case CallbackServiceCodec.CALLBACK_CREATE:\r\n+                try {\r\n+                    return referOrDestroyCallbackService(channel, url, pts[paraIndex], inv, Integer.parseInt(inv.getAttachment(INV_ATT_CALLBACK_KEY + paraIndex)), true);\r\n+                } catch (Exception e) {\r\n+                    logger.error(e.getMessage(), e);\r\n+                    throw new IOException(StringUtils.toString(e));\r\n+                }\r\n+            case CallbackServiceCodec.CALLBACK_DESTROY:\r\n+                try {\r\n+                    return referOrDestroyCallbackService(channel, url, pts[paraIndex], inv, Integer.parseInt(inv.getAttachment(INV_ATT_CALLBACK_KEY + paraIndex)), false);\r\n+                } catch (Exception e) {\r\n+                    throw new IOException(StringUtils.toString(e));\r\n+                }\r\n+            default:\r\n+                return inObject;\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/ChannelWrappedInvoker.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/ChannelWrappedInvoker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,183 +1,183 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.dubbo;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.TimeoutException;\n-import org.apache.dubbo.remoting.exchange.ExchangeClient;\n-import org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeClient;\n-import org.apache.dubbo.remoting.transport.ClientDelegate;\n-import org.apache.dubbo.rpc.AppResponse;\n-import org.apache.dubbo.rpc.AsyncRpcResult;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-import org.apache.dubbo.rpc.protocol.AbstractInvoker;\n-import org.apache.dubbo.rpc.support.RpcUtils;\n-\n-import java.net.InetSocketAddress;\n-import java.util.concurrent.CompletableFuture;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\n-import static org.apache.dubbo.remoting.Constants.SENT_KEY;\n-import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\n-import static org.apache.dubbo.rpc.protocol.dubbo.Constants.CALLBACK_SERVICE_KEY;\n-\n-/**\n- * Server push uses this Invoker to continuously push data to client.\n- * Wrap the existing invoker on the channel.\n- */\n-class ChannelWrappedInvoker<T> extends AbstractInvoker<T> {\n-\n-    private final Channel channel;\n-    private final String serviceKey;\n-    private final ExchangeClient currentClient;\n-\n-    ChannelWrappedInvoker(Class<T> serviceType, Channel channel, URL url, String serviceKey) {\n-        super(serviceType, url, new String[]{GROUP_KEY, TOKEN_KEY});\n-        this.channel = channel;\n-        this.serviceKey = serviceKey;\n-        this.currentClient = new HeaderExchangeClient(new ChannelWrapper(this.channel), false);\n-    }\n-\n-    @Override\n-    protected Result doInvoke(Invocation invocation) throws Throwable {\n-        RpcInvocation inv = (RpcInvocation) invocation;\n-        // use interface's name as service path to export if it's not found on client side\n-        inv.setAttachment(PATH_KEY, getInterface().getName());\n-        inv.setAttachment(CALLBACK_SERVICE_KEY, serviceKey);\n-\n-        try {\n-            if (RpcUtils.isOneway(getUrl(), inv)) { // may have concurrency issue\n-                currentClient.send(inv, getUrl().getMethodParameter(invocation.getMethodName(), SENT_KEY, false));\n-                return AsyncRpcResult.newDefaultAsyncResult(invocation);\n-            } else {\n-                CompletableFuture<AppResponse> appResponseFuture = currentClient.request(inv).thenApply(obj -> (AppResponse) obj);\n-                return new AsyncRpcResult(appResponseFuture, inv);\n-            }\n-        } catch (RpcException e) {\n-            throw e;\n-        } catch (TimeoutException e) {\n-            throw new RpcException(RpcException.TIMEOUT_EXCEPTION, e.getMessage(), e);\n-        } catch (RemotingException e) {\n-            throw new RpcException(RpcException.NETWORK_EXCEPTION, e.getMessage(), e);\n-        } catch (Throwable e) { // here is non-biz exception, wrap it.\n-            throw new RpcException(e.getMessage(), e);\n-        }\n-    }\n-\n-    @Override\n-    public void destroy() {\n-//        super.destroy();\n-//        try {\n-//            channel.close();\n-//        } catch (Throwable t) {\n-//            logger.warn(t.getMessage(), t);\n-//        }\n-    }\n-\n-    public static class ChannelWrapper extends ClientDelegate {\n-\n-        private final Channel channel;\n-        private final URL url;\n-\n-        ChannelWrapper(Channel channel) {\n-            this.channel = channel;\n-            this.url = channel.getUrl().addParameter(\"codec\", DubboCodec.NAME);\n-        }\n-\n-        @Override\n-        public URL getUrl() {\n-            return url;\n-        }\n-\n-        @Override\n-        public ChannelHandler getChannelHandler() {\n-            return channel.getChannelHandler();\n-        }\n-\n-        @Override\n-        public InetSocketAddress getLocalAddress() {\n-            return channel.getLocalAddress();\n-        }\n-\n-        @Override\n-        public void close() {\n-            channel.close();\n-        }\n-\n-        @Override\n-        public boolean isClosed() {\n-            return channel == null || channel.isClosed();\n-        }\n-\n-        @Override\n-        public void reset(URL url) {\n-            throw new RpcException(\"ChannelInvoker can not reset.\");\n-        }\n-\n-        @Override\n-        public InetSocketAddress getRemoteAddress() {\n-            return channel.getLocalAddress();\n-        }\n-\n-        @Override\n-        public boolean isConnected() {\n-            return channel != null && channel.isConnected();\n-        }\n-\n-        @Override\n-        public boolean hasAttribute(String key) {\n-            return channel.hasAttribute(key);\n-        }\n-\n-        @Override\n-        public Object getAttribute(String key) {\n-            return channel.getAttribute(key);\n-        }\n-\n-        @Override\n-        public void setAttribute(String key, Object value) {\n-            channel.setAttribute(key, value);\n-        }\n-\n-        @Override\n-        public void removeAttribute(String key) {\n-            channel.removeAttribute(key);\n-        }\n-\n-        @Override\n-        public void reconnect() throws RemotingException {\n-\n-        }\n-\n-        @Override\n-        public void send(Object message) throws RemotingException {\n-            channel.send(message);\n-        }\n-\n-        @Override\n-        public void send(Object message, boolean sent) throws RemotingException {\n-            channel.send(message, sent);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.dubbo;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.TimeoutException;\r\n+import org.apache.dubbo.remoting.exchange.ExchangeClient;\r\n+import org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeClient;\r\n+import org.apache.dubbo.remoting.transport.ClientDelegate;\r\n+import org.apache.dubbo.rpc.AppResponse;\r\n+import org.apache.dubbo.rpc.AsyncRpcResult;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+import org.apache.dubbo.rpc.protocol.AbstractInvoker;\r\n+import org.apache.dubbo.rpc.support.RpcUtils;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+import java.util.concurrent.CompletableFuture;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.SENT_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.Constants.CALLBACK_SERVICE_KEY;\r\n+\r\n+/**\r\n+ * Server push uses this Invoker to continuously push data to client.\r\n+ * Wrap the existing invoker on the channel.\r\n+ */\r\n+class ChannelWrappedInvoker<T> extends AbstractInvoker<T> {\r\n+\r\n+    private final Channel channel;\r\n+    private final String serviceKey;\r\n+    private final ExchangeClient currentClient;\r\n+\r\n+    ChannelWrappedInvoker(Class<T> serviceType, Channel channel, URL url, String serviceKey) {\r\n+        super(serviceType, url, new String[]{GROUP_KEY, TOKEN_KEY});\r\n+        this.channel = channel;\r\n+        this.serviceKey = serviceKey;\r\n+        this.currentClient = new HeaderExchangeClient(new ChannelWrapper(this.channel), false);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Result doInvoke(Invocation invocation) throws Throwable {\r\n+        RpcInvocation inv = (RpcInvocation) invocation;\r\n+        // use interface's name as service path to export if it's not found on client side\r\n+        inv.setAttachment(PATH_KEY, getInterface().getName());\r\n+        inv.setAttachment(CALLBACK_SERVICE_KEY, serviceKey);\r\n+\r\n+        try {\r\n+            if (RpcUtils.isOneway(getUrl(), inv)) { // may have concurrency issue\r\n+                currentClient.send(inv, getUrl().getMethodParameter(invocation.getMethodName(), SENT_KEY, false));\r\n+                return AsyncRpcResult.newDefaultAsyncResult(invocation);\r\n+            } else {\r\n+                CompletableFuture<AppResponse> appResponseFuture = currentClient.request(inv).thenApply(obj -> (AppResponse) obj);\r\n+                return new AsyncRpcResult(appResponseFuture, inv);\r\n+            }\r\n+        } catch (RpcException e) {\r\n+            throw e;\r\n+        } catch (TimeoutException e) {\r\n+            throw new RpcException(RpcException.TIMEOUT_EXCEPTION, e.getMessage(), e);\r\n+        } catch (RemotingException e) {\r\n+            throw new RpcException(RpcException.NETWORK_EXCEPTION, e.getMessage(), e);\r\n+        } catch (Throwable e) { // here is non-biz exception, wrap it.\r\n+            throw new RpcException(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+//        super.destroy();\r\n+//        try {\r\n+//            channel.close();\r\n+//        } catch (Throwable t) {\r\n+//            logger.warn(t.getMessage(), t);\r\n+//        }\r\n+    }\r\n+\r\n+    public static class ChannelWrapper extends ClientDelegate {\r\n+\r\n+        private final Channel channel;\r\n+        private final URL url;\r\n+\r\n+        ChannelWrapper(Channel channel) {\r\n+            this.channel = channel;\r\n+            this.url = channel.getUrl().addParameter(\"codec\", DubboCodec.NAME);\r\n+        }\r\n+\r\n+        @Override\r\n+        public URL getUrl() {\r\n+            return url;\r\n+        }\r\n+\r\n+        @Override\r\n+        public ChannelHandler getChannelHandler() {\r\n+            return channel.getChannelHandler();\r\n+        }\r\n+\r\n+        @Override\r\n+        public InetSocketAddress getLocalAddress() {\r\n+            return channel.getLocalAddress();\r\n+        }\r\n+\r\n+        @Override\r\n+        public void close() {\r\n+            channel.close();\r\n+        }\r\n+\r\n+        @Override\r\n+        public boolean isClosed() {\r\n+            return channel == null || channel.isClosed();\r\n+        }\r\n+\r\n+        @Override\r\n+        public void reset(URL url) {\r\n+            throw new RpcException(\"ChannelInvoker can not reset.\");\r\n+        }\r\n+\r\n+        @Override\r\n+        public InetSocketAddress getRemoteAddress() {\r\n+            return channel.getLocalAddress();\r\n+        }\r\n+\r\n+        @Override\r\n+        public boolean isConnected() {\r\n+            return channel != null && channel.isConnected();\r\n+        }\r\n+\r\n+        @Override\r\n+        public boolean hasAttribute(String key) {\r\n+            return channel.hasAttribute(key);\r\n+        }\r\n+\r\n+        @Override\r\n+        public Object getAttribute(String key) {\r\n+            return channel.getAttribute(key);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void setAttribute(String key, Object value) {\r\n+            channel.setAttribute(key, value);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void removeAttribute(String key) {\r\n+            channel.removeAttribute(key);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void reconnect() throws RemotingException {\r\n+\r\n+        }\r\n+\r\n+        @Override\r\n+        public void send(Object message) throws RemotingException {\r\n+            channel.send(message);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void send(Object message, boolean sent) throws RemotingException {\r\n+            channel.send(message, sent);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/Constants.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/Constants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,71 +1,71 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.rpc.protocol.dubbo;\n-\n-/**\n- *\n- */\n-public interface Constants {\n-\n-    String SHARE_CONNECTIONS_KEY = \"shareconnections\";\n-\n-    /**\n-     * By default, a consumer JVM instance and a provider JVM instance share a long TCP connection (except when connections are set),\n-     * which can set the number of long TCP connections shared to avoid the bottleneck of sharing a single long TCP connection.\n-     */\n-    String DEFAULT_SHARE_CONNECTIONS = \"1\";\n-\n-    String DECODE_IN_IO_THREAD_KEY = \"decode.in.io\";\n-\n-    boolean DEFAULT_DECODE_IN_IO_THREAD = false;\n-\n-    /**\n-     * callback inst id\n-     */\n-    String CALLBACK_SERVICE_KEY = \"callback.service.instid\";\n-\n-    String CALLBACK_SERVICE_PROXY_KEY = \"callback.service.proxy\";\n-\n-    String IS_CALLBACK_SERVICE = \"is_callback_service\";\n-\n-    /**\n-     * Invokers in channel's callback\n-     */\n-    String CHANNEL_CALLBACK_KEY = \"channel.callback.invokers.key\";\n-\n-    /**\n-     * The initial state for lazy connection\n-     */\n-    String LAZY_CONNECT_INITIAL_STATE_KEY = \"connect.lazy.initial.state\";\n-\n-    /**\n-     * The default value of lazy connection's initial state: true\n-     *\n-     * @see #LAZY_CONNECT_INITIAL_STATE_KEY\n-     */\n-    boolean DEFAULT_LAZY_CONNECT_INITIAL_STATE = true;\n-\n-    String OPTIMIZER_KEY = \"optimizer\";\n-\n-    String ON_CONNECT_KEY = \"onconnect\";\n-\n-    String ON_DISCONNECT_KEY = \"ondisconnect\";\n-\n-    String ASYNC_METHOD_INFO = \"async-method-info\";\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.rpc.protocol.dubbo;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+public interface Constants {\r\n+\r\n+    String SHARE_CONNECTIONS_KEY = \"shareconnections\";\r\n+\r\n+    /**\r\n+     * By default, a consumer JVM instance and a provider JVM instance share a long TCP connection (except when connections are set),\r\n+     * which can set the number of long TCP connections shared to avoid the bottleneck of sharing a single long TCP connection.\r\n+     */\r\n+    String DEFAULT_SHARE_CONNECTIONS = \"1\";\r\n+\r\n+    String DECODE_IN_IO_THREAD_KEY = \"decode.in.io\";\r\n+\r\n+    boolean DEFAULT_DECODE_IN_IO_THREAD = false;\r\n+\r\n+    /**\r\n+     * callback inst id\r\n+     */\r\n+    String CALLBACK_SERVICE_KEY = \"callback.service.instid\";\r\n+\r\n+    String CALLBACK_SERVICE_PROXY_KEY = \"callback.service.proxy\";\r\n+\r\n+    String IS_CALLBACK_SERVICE = \"is_callback_service\";\r\n+\r\n+    /**\r\n+     * Invokers in channel's callback\r\n+     */\r\n+    String CHANNEL_CALLBACK_KEY = \"channel.callback.invokers.key\";\r\n+\r\n+    /**\r\n+     * The initial state for lazy connection\r\n+     */\r\n+    String LAZY_CONNECT_INITIAL_STATE_KEY = \"connect.lazy.initial.state\";\r\n+\r\n+    /**\r\n+     * The default value of lazy connection's initial state: true\r\n+     *\r\n+     * @see #LAZY_CONNECT_INITIAL_STATE_KEY\r\n+     */\r\n+    boolean DEFAULT_LAZY_CONNECT_INITIAL_STATE = true;\r\n+\r\n+    String OPTIMIZER_KEY = \"optimizer\";\r\n+\r\n+    String ON_CONNECT_KEY = \"onconnect\";\r\n+\r\n+    String ON_DISCONNECT_KEY = \"ondisconnect\";\r\n+\r\n+    String ASYNC_METHOD_INFO = \"async-method-info\";\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcInvocation.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,195 +1,195 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.dubbo;\n-\n-\n-import org.apache.dubbo.common.config.ConfigurationUtils;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.serialize.Cleanable;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.utils.Assert;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.Codec;\n-import org.apache.dubbo.remoting.Decodeable;\n-import org.apache.dubbo.remoting.exchange.Request;\n-import org.apache.dubbo.remoting.transport.CodecSupport;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.MethodDescriptor;\n-import org.apache.dubbo.rpc.model.ServiceDescriptor;\n-import org.apache.dubbo.rpc.model.ServiceRepository;\n-import org.apache.dubbo.rpc.support.RpcUtils;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.URL.buildKey;\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.rpc.Constants.SERIALIZATION_ID_KEY;\n-import static org.apache.dubbo.rpc.Constants.SERIALIZATION_SECURITY_CHECK_KEY;\n-import static org.apache.dubbo.rpc.protocol.dubbo.CallbackServiceCodec.decodeInvocationArgument;\n-\n-public class DecodeableRpcInvocation extends RpcInvocation implements Codec, Decodeable {\n-\n-    private static final Logger log = LoggerFactory.getLogger(DecodeableRpcInvocation.class);\n-\n-    private Channel channel;\n-\n-    private byte serializationType;\n-\n-    private InputStream inputStream;\n-\n-    private Request request;\n-\n-    private volatile boolean hasDecoded;\n-\n-    public DecodeableRpcInvocation(Channel channel, Request request, InputStream is, byte id) {\n-        Assert.notNull(channel, \"channel == null\");\n-        Assert.notNull(request, \"request == null\");\n-        Assert.notNull(is, \"inputStream == null\");\n-        this.channel = channel;\n-        this.request = request;\n-        this.inputStream = is;\n-        this.serializationType = id;\n-    }\n-\n-    @Override\n-    public void decode() throws Exception {\n-        if (!hasDecoded && channel != null && inputStream != null) {\n-            try {\n-                decode(channel, inputStream);\n-            } catch (Throwable e) {\n-                if (log.isWarnEnabled()) {\n-                    log.warn(\"Decode rpc invocation failed: \" + e.getMessage(), e);\n-                }\n-                request.setBroken(true);\n-                request.setData(e);\n-            } finally {\n-                hasDecoded = true;\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public void encode(Channel channel, OutputStream output, Object message) throws IOException {\n-        throw new UnsupportedOperationException();\n-    }\n-\n-    private void checkSerializationTypeFromRemote() {\n-\n-    }\n-\n-    @Override\n-    public Object decode(Channel channel, InputStream input) throws IOException {\n-        ObjectInput in = CodecSupport.getSerialization(channel.getUrl(), serializationType)\n-                .deserialize(channel.getUrl(), input);\n-        this.put(SERIALIZATION_ID_KEY, serializationType);\n-\n-        String dubboVersion = in.readUTF();\n-        request.setVersion(dubboVersion);\n-        setAttachment(DUBBO_VERSION_KEY, dubboVersion);\n-\n-        String path = in.readUTF();\n-        setAttachment(PATH_KEY, path);\n-        String version = in.readUTF();\n-        setAttachment(VERSION_KEY, version);\n-\n-        setMethodName(in.readUTF());\n-\n-        String desc = in.readUTF();\n-        setParameterTypesDesc(desc);\n-\n-        try {\n-            if (ConfigurationUtils.getSystemConfiguration().getBoolean(SERIALIZATION_SECURITY_CHECK_KEY, false)) {\n-                CodecSupport.checkSerialization(path, version, serializationType);\n-            }\n-            Object[] args = DubboCodec.EMPTY_OBJECT_ARRAY;\n-            Class<?>[] pts = DubboCodec.EMPTY_CLASS_ARRAY;\n-            if (desc.length() > 0) {\n-//                if (RpcUtils.isGenericCall(path, getMethodName()) || RpcUtils.isEcho(path, getMethodName())) {\n-//                    pts = ReflectUtils.desc2classArray(desc);\n-//                } else {\n-                ServiceRepository repository = ApplicationModel.getServiceRepository();\n-                ServiceDescriptor serviceDescriptor = repository.lookupService(path);\n-                if (serviceDescriptor != null) {\n-                    MethodDescriptor methodDescriptor = serviceDescriptor.getMethod(getMethodName(), desc);\n-                    if (methodDescriptor != null) {\n-                        pts = methodDescriptor.getParameterClasses();\n-                        this.setReturnTypes(methodDescriptor.getReturnTypes());\n-                    }\n-                }\n-                if (pts == DubboCodec.EMPTY_CLASS_ARRAY) {\n-                    if (!RpcUtils.isGenericCall(desc, getMethodName()) && !RpcUtils.isEcho(desc, getMethodName())) {\n-                        throw new IllegalArgumentException(\"Service not found:\" + path + \", \" + getMethodName());\n-                    }\n-                    pts = ReflectUtils.desc2classArray(desc);\n-                }\n-//                }\n-\n-                args = new Object[pts.length];\n-                for (int i = 0; i < args.length; i++) {\n-                    try {\n-                        args[i] = in.readObject(pts[i]);\n-                    } catch (Exception e) {\n-                        if (log.isWarnEnabled()) {\n-                            log.warn(\"Decode argument failed: \" + e.getMessage(), e);\n-                        }\n-                    }\n-                }\n-            }\n-            setParameterTypes(pts);\n-\n-            Map<String, Object> map = in.readAttachments();\n-            if (map != null && map.size() > 0) {\n-                Map<String, Object> attachment = getObjectAttachments();\n-                if (attachment == null) {\n-                    attachment = new HashMap<>();\n-                }\n-                attachment.putAll(map);\n-                setObjectAttachments(attachment);\n-            }\n-\n-            //decode argument ,may be callback\n-            for (int i = 0; i < args.length; i++) {\n-                args[i] = decodeInvocationArgument(channel, this, pts, i, args[i]);\n-            }\n-\n-            setArguments(args);\n-            String targetServiceName = buildKey((String) getAttachment(PATH_KEY),\n-                    getAttachment(GROUP_KEY),\n-                    getAttachment(VERSION_KEY));\n-            setTargetServiceUniqueName(targetServiceName);\n-        } catch (ClassNotFoundException e) {\n-            throw new IOException(StringUtils.toString(\"Read invocation data failed.\", e));\n-        } finally {\n-            if (in instanceof Cleanable) {\n-                ((Cleanable) in).cleanup();\n-            }\n-        }\n-        return this;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.dubbo;\r\n+\r\n+\r\n+import org.apache.dubbo.common.config.ConfigurationUtils;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.serialize.Cleanable;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.utils.Assert;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.Codec;\r\n+import org.apache.dubbo.remoting.Decodeable;\r\n+import org.apache.dubbo.remoting.exchange.Request;\r\n+import org.apache.dubbo.remoting.transport.CodecSupport;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.MethodDescriptor;\r\n+import org.apache.dubbo.rpc.model.ServiceDescriptor;\r\n+import org.apache.dubbo.rpc.model.ServiceRepository;\r\n+import org.apache.dubbo.rpc.support.RpcUtils;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.URL.buildKey;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.SERIALIZATION_ID_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.SERIALIZATION_SECURITY_CHECK_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.CallbackServiceCodec.decodeInvocationArgument;\r\n+\r\n+public class DecodeableRpcInvocation extends RpcInvocation implements Codec, Decodeable {\r\n+\r\n+    private static final Logger log = LoggerFactory.getLogger(DecodeableRpcInvocation.class);\r\n+\r\n+    private Channel channel;\r\n+\r\n+    private byte serializationType;\r\n+\r\n+    private InputStream inputStream;\r\n+\r\n+    private Request request;\r\n+\r\n+    private volatile boolean hasDecoded;\r\n+\r\n+    public DecodeableRpcInvocation(Channel channel, Request request, InputStream is, byte id) {\r\n+        Assert.notNull(channel, \"channel == null\");\r\n+        Assert.notNull(request, \"request == null\");\r\n+        Assert.notNull(is, \"inputStream == null\");\r\n+        this.channel = channel;\r\n+        this.request = request;\r\n+        this.inputStream = is;\r\n+        this.serializationType = id;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void decode() throws Exception {\r\n+        if (!hasDecoded && channel != null && inputStream != null) {\r\n+            try {\r\n+                decode(channel, inputStream);\r\n+            } catch (Throwable e) {\r\n+                if (log.isWarnEnabled()) {\r\n+                    log.warn(\"Decode rpc invocation failed: \" + e.getMessage(), e);\r\n+                }\r\n+                request.setBroken(true);\r\n+                request.setData(e);\r\n+            } finally {\r\n+                hasDecoded = true;\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void encode(Channel channel, OutputStream output, Object message) throws IOException {\r\n+        throw new UnsupportedOperationException();\r\n+    }\r\n+\r\n+    private void checkSerializationTypeFromRemote() {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object decode(Channel channel, InputStream input) throws IOException {\r\n+        ObjectInput in = CodecSupport.getSerialization(channel.getUrl(), serializationType)\r\n+                .deserialize(channel.getUrl(), input);\r\n+        this.put(SERIALIZATION_ID_KEY, serializationType);\r\n+\r\n+        String dubboVersion = in.readUTF();\r\n+        request.setVersion(dubboVersion);\r\n+        setAttachment(DUBBO_VERSION_KEY, dubboVersion);\r\n+\r\n+        String path = in.readUTF();\r\n+        setAttachment(PATH_KEY, path);\r\n+        String version = in.readUTF();\r\n+        setAttachment(VERSION_KEY, version);\r\n+\r\n+        setMethodName(in.readUTF());\r\n+\r\n+        String desc = in.readUTF();\r\n+        setParameterTypesDesc(desc);\r\n+\r\n+        try {\r\n+            if (ConfigurationUtils.getSystemConfiguration().getBoolean(SERIALIZATION_SECURITY_CHECK_KEY, false)) {\r\n+                CodecSupport.checkSerialization(path, version, serializationType);\r\n+            }\r\n+            Object[] args = DubboCodec.EMPTY_OBJECT_ARRAY;\r\n+            Class<?>[] pts = DubboCodec.EMPTY_CLASS_ARRAY;\r\n+            if (desc.length() > 0) {\r\n+//                if (RpcUtils.isGenericCall(path, getMethodName()) || RpcUtils.isEcho(path, getMethodName())) {\r\n+//                    pts = ReflectUtils.desc2classArray(desc);\r\n+//                } else {\r\n+                ServiceRepository repository = ApplicationModel.getServiceRepository();\r\n+                ServiceDescriptor serviceDescriptor = repository.lookupService(path);\r\n+                if (serviceDescriptor != null) {\r\n+                    MethodDescriptor methodDescriptor = serviceDescriptor.getMethod(getMethodName(), desc);\r\n+                    if (methodDescriptor != null) {\r\n+                        pts = methodDescriptor.getParameterClasses();\r\n+                        this.setReturnTypes(methodDescriptor.getReturnTypes());\r\n+                    }\r\n+                }\r\n+                if (pts == DubboCodec.EMPTY_CLASS_ARRAY) {\r\n+                    if (!RpcUtils.isGenericCall(desc, getMethodName()) && !RpcUtils.isEcho(desc, getMethodName())) {\r\n+                        throw new IllegalArgumentException(\"Service not found:\" + path + \", \" + getMethodName());\r\n+                    }\r\n+                    pts = ReflectUtils.desc2classArray(desc);\r\n+                }\r\n+//                }\r\n+\r\n+                args = new Object[pts.length];\r\n+                for (int i = 0; i < args.length; i++) {\r\n+                    try {\r\n+                        args[i] = in.readObject(pts[i]);\r\n+                    } catch (Exception e) {\r\n+                        if (log.isWarnEnabled()) {\r\n+                            log.warn(\"Decode argument failed: \" + e.getMessage(), e);\r\n+                        }\r\n+                    }\r\n+                }\r\n+            }\r\n+            setParameterTypes(pts);\r\n+\r\n+            Map<String, Object> map = in.readAttachments();\r\n+            if (map != null && map.size() > 0) {\r\n+                Map<String, Object> attachment = getObjectAttachments();\r\n+                if (attachment == null) {\r\n+                    attachment = new HashMap<>();\r\n+                }\r\n+                attachment.putAll(map);\r\n+                setObjectAttachments(attachment);\r\n+            }\r\n+\r\n+            //decode argument ,may be callback\r\n+            for (int i = 0; i < args.length; i++) {\r\n+                args[i] = decodeInvocationArgument(channel, this, pts, i, args[i]);\r\n+            }\r\n+\r\n+            setArguments(args);\r\n+            String targetServiceName = buildKey((String) getAttachment(PATH_KEY),\r\n+                    getAttachment(GROUP_KEY),\r\n+                    getAttachment(VERSION_KEY));\r\n+            setTargetServiceUniqueName(targetServiceName);\r\n+        } catch (ClassNotFoundException e) {\r\n+            throw new IOException(StringUtils.toString(\"Read invocation data failed.\", e));\r\n+        } finally {\r\n+            if (in instanceof Cleanable) {\r\n+                ((Cleanable) in).cleanup();\r\n+            }\r\n+        }\r\n+        return this;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/DecodeableRpcResult.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,184 +1,184 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.dubbo;\n-\n-import org.apache.dubbo.common.config.ConfigurationUtils;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.serialize.Cleanable;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.utils.ArrayUtils;\n-import org.apache.dubbo.common.utils.Assert;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.Codec;\n-import org.apache.dubbo.remoting.Decodeable;\n-import org.apache.dubbo.remoting.exchange.Response;\n-import org.apache.dubbo.remoting.transport.CodecSupport;\n-import org.apache.dubbo.rpc.AppResponse;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-import org.apache.dubbo.rpc.support.RpcUtils;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-import java.lang.reflect.Type;\n-\n-import static org.apache.dubbo.rpc.Constants.SERIALIZATION_ID_KEY;\n-import static org.apache.dubbo.rpc.Constants.SERIALIZATION_SECURITY_CHECK_KEY;\n-\n-public class DecodeableRpcResult extends AppResponse implements Codec, Decodeable {\n-\n-    private static final Logger log = LoggerFactory.getLogger(DecodeableRpcResult.class);\n-\n-    private Channel channel;\n-\n-    private byte serializationType;\n-\n-    private InputStream inputStream;\n-\n-    private Response response;\n-\n-    private Invocation invocation;\n-\n-    private volatile boolean hasDecoded;\n-\n-    public DecodeableRpcResult(Channel channel, Response response, InputStream is, Invocation invocation, byte id) {\n-        Assert.notNull(channel, \"channel == null\");\n-        Assert.notNull(response, \"response == null\");\n-        Assert.notNull(is, \"inputStream == null\");\n-        this.channel = channel;\n-        this.response = response;\n-        this.inputStream = is;\n-        this.invocation = invocation;\n-        this.serializationType = id;\n-    }\n-\n-    @Override\n-    public void encode(Channel channel, OutputStream output, Object message) throws IOException {\n-        throw new UnsupportedOperationException();\n-    }\n-\n-    @Override\n-    public Object decode(Channel channel, InputStream input) throws IOException {\n-        if (log.isDebugEnabled()) {\n-            Thread thread = Thread.currentThread();\n-            log.debug(\"Decoding in thread -- [\" + thread.getName() + \"#\" + thread.getId() + \"]\");\n-        }\n-\n-        ObjectInput in = CodecSupport.getSerialization(channel.getUrl(), serializationType)\n-                .deserialize(channel.getUrl(), input);\n-\n-        byte flag = in.readByte();\n-        switch (flag) {\n-            case DubboCodec.RESPONSE_NULL_VALUE:\n-                break;\n-            case DubboCodec.RESPONSE_VALUE:\n-                handleValue(in);\n-                break;\n-            case DubboCodec.RESPONSE_WITH_EXCEPTION:\n-                handleException(in);\n-                break;\n-            case DubboCodec.RESPONSE_NULL_VALUE_WITH_ATTACHMENTS:\n-                handleAttachment(in);\n-                break;\n-            case DubboCodec.RESPONSE_VALUE_WITH_ATTACHMENTS:\n-                handleValue(in);\n-                handleAttachment(in);\n-                break;\n-            case DubboCodec.RESPONSE_WITH_EXCEPTION_WITH_ATTACHMENTS:\n-                handleException(in);\n-                handleAttachment(in);\n-                break;\n-            default:\n-                throw new IOException(\"Unknown result flag, expect '0' '1' '2' '3' '4' '5', but received: \" + flag);\n-        }\n-        if (in instanceof Cleanable) {\n-            ((Cleanable) in).cleanup();\n-        }\n-        return this;\n-    }\n-\n-    @Override\n-    public void decode() throws Exception {\n-        if (!hasDecoded && channel != null && inputStream != null) {\n-            try {\n-                if (ConfigurationUtils.getSystemConfiguration().getBoolean(SERIALIZATION_SECURITY_CHECK_KEY, false)) {\n-                    Object serializationType_obj = invocation.get(SERIALIZATION_ID_KEY);\n-                    if (serializationType_obj != null) {\n-                        if ((byte) serializationType_obj != serializationType) {\n-                            throw new IOException(\"Unexpected serialization id:\" + serializationType + \" received from network, please check if the peer send the right id.\");\n-                        }\n-                    }\n-                }\n-                decode(channel, inputStream);\n-            } catch (Throwable e) {\n-                if (log.isWarnEnabled()) {\n-                    log.warn(\"Decode rpc result failed: \" + e.getMessage(), e);\n-                }\n-                response.setStatus(Response.CLIENT_ERROR);\n-                response.setErrorMessage(StringUtils.toString(e));\n-            } finally {\n-                hasDecoded = true;\n-            }\n-        }\n-    }\n-\n-    private void handleValue(ObjectInput in) throws IOException {\n-        try {\n-            Type[] returnTypes;\n-            if (invocation instanceof RpcInvocation) {\n-                returnTypes = ((RpcInvocation) invocation).getReturnTypes();\n-            } else {\n-                returnTypes = RpcUtils.getReturnTypes(invocation);\n-            }\n-            Object value = null;\n-            if (ArrayUtils.isEmpty(returnTypes)) {\n-                // This almost never happens?\n-                value = in.readObject();\n-            } else if (returnTypes.length == 1) {\n-                value = in.readObject((Class<?>) returnTypes[0]);\n-            } else {\n-                value = in.readObject((Class<?>) returnTypes[0], returnTypes[1]);\n-            }\n-            setValue(value);\n-        } catch (ClassNotFoundException e) {\n-            rethrow(e);\n-        }\n-    }\n-\n-    private void handleException(ObjectInput in) throws IOException {\n-        try {\n-            setException(in.readThrowable());\n-        } catch (ClassNotFoundException e) {\n-            rethrow(e);\n-        }\n-    }\n-\n-    private void handleAttachment(ObjectInput in) throws IOException {\n-        try {\n-            addObjectAttachments(in.readAttachments());\n-        } catch (ClassNotFoundException e) {\n-            rethrow(e);\n-        }\n-    }\n-\n-    private void rethrow(Exception e) throws IOException {\n-        throw new IOException(StringUtils.toString(\"Read response data failed.\", e));\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.dubbo;\r\n+\r\n+import org.apache.dubbo.common.config.ConfigurationUtils;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.serialize.Cleanable;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.utils.ArrayUtils;\r\n+import org.apache.dubbo.common.utils.Assert;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.Codec;\r\n+import org.apache.dubbo.remoting.Decodeable;\r\n+import org.apache.dubbo.remoting.exchange.Response;\r\n+import org.apache.dubbo.remoting.transport.CodecSupport;\r\n+import org.apache.dubbo.rpc.AppResponse;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+import org.apache.dubbo.rpc.support.RpcUtils;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+import java.lang.reflect.Type;\r\n+\r\n+import static org.apache.dubbo.rpc.Constants.SERIALIZATION_ID_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.SERIALIZATION_SECURITY_CHECK_KEY;\r\n+\r\n+public class DecodeableRpcResult extends AppResponse implements Codec, Decodeable {\r\n+\r\n+    private static final Logger log = LoggerFactory.getLogger(DecodeableRpcResult.class);\r\n+\r\n+    private Channel channel;\r\n+\r\n+    private byte serializationType;\r\n+\r\n+    private InputStream inputStream;\r\n+\r\n+    private Response response;\r\n+\r\n+    private Invocation invocation;\r\n+\r\n+    private volatile boolean hasDecoded;\r\n+\r\n+    public DecodeableRpcResult(Channel channel, Response response, InputStream is, Invocation invocation, byte id) {\r\n+        Assert.notNull(channel, \"channel == null\");\r\n+        Assert.notNull(response, \"response == null\");\r\n+        Assert.notNull(is, \"inputStream == null\");\r\n+        this.channel = channel;\r\n+        this.response = response;\r\n+        this.inputStream = is;\r\n+        this.invocation = invocation;\r\n+        this.serializationType = id;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void encode(Channel channel, OutputStream output, Object message) throws IOException {\r\n+        throw new UnsupportedOperationException();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object decode(Channel channel, InputStream input) throws IOException {\r\n+        if (log.isDebugEnabled()) {\r\n+            Thread thread = Thread.currentThread();\r\n+            log.debug(\"Decoding in thread -- [\" + thread.getName() + \"#\" + thread.getId() + \"]\");\r\n+        }\r\n+\r\n+        ObjectInput in = CodecSupport.getSerialization(channel.getUrl(), serializationType)\r\n+                .deserialize(channel.getUrl(), input);\r\n+\r\n+        byte flag = in.readByte();\r\n+        switch (flag) {\r\n+            case DubboCodec.RESPONSE_NULL_VALUE:\r\n+                break;\r\n+            case DubboCodec.RESPONSE_VALUE:\r\n+                handleValue(in);\r\n+                break;\r\n+            case DubboCodec.RESPONSE_WITH_EXCEPTION:\r\n+                handleException(in);\r\n+                break;\r\n+            case DubboCodec.RESPONSE_NULL_VALUE_WITH_ATTACHMENTS:\r\n+                handleAttachment(in);\r\n+                break;\r\n+            case DubboCodec.RESPONSE_VALUE_WITH_ATTACHMENTS:\r\n+                handleValue(in);\r\n+                handleAttachment(in);\r\n+                break;\r\n+            case DubboCodec.RESPONSE_WITH_EXCEPTION_WITH_ATTACHMENTS:\r\n+                handleException(in);\r\n+                handleAttachment(in);\r\n+                break;\r\n+            default:\r\n+                throw new IOException(\"Unknown result flag, expect '0' '1' '2' '3' '4' '5', but received: \" + flag);\r\n+        }\r\n+        if (in instanceof Cleanable) {\r\n+            ((Cleanable) in).cleanup();\r\n+        }\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void decode() throws Exception {\r\n+        if (!hasDecoded && channel != null && inputStream != null) {\r\n+            try {\r\n+                if (ConfigurationUtils.getSystemConfiguration().getBoolean(SERIALIZATION_SECURITY_CHECK_KEY, false)) {\r\n+                    Object serializationType_obj = invocation.get(SERIALIZATION_ID_KEY);\r\n+                    if (serializationType_obj != null) {\r\n+                        if ((byte) serializationType_obj != serializationType) {\r\n+                            throw new IOException(\"Unexpected serialization id:\" + serializationType + \" received from network, please check if the peer send the right id.\");\r\n+                        }\r\n+                    }\r\n+                }\r\n+                decode(channel, inputStream);\r\n+            } catch (Throwable e) {\r\n+                if (log.isWarnEnabled()) {\r\n+                    log.warn(\"Decode rpc result failed: \" + e.getMessage(), e);\r\n+                }\r\n+                response.setStatus(Response.CLIENT_ERROR);\r\n+                response.setErrorMessage(StringUtils.toString(e));\r\n+            } finally {\r\n+                hasDecoded = true;\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private void handleValue(ObjectInput in) throws IOException {\r\n+        try {\r\n+            Type[] returnTypes;\r\n+            if (invocation instanceof RpcInvocation) {\r\n+                returnTypes = ((RpcInvocation) invocation).getReturnTypes();\r\n+            } else {\r\n+                returnTypes = RpcUtils.getReturnTypes(invocation);\r\n+            }\r\n+            Object value = null;\r\n+            if (ArrayUtils.isEmpty(returnTypes)) {\r\n+                // This almost never happens?\r\n+                value = in.readObject();\r\n+            } else if (returnTypes.length == 1) {\r\n+                value = in.readObject((Class<?>) returnTypes[0]);\r\n+            } else {\r\n+                value = in.readObject((Class<?>) returnTypes[0], returnTypes[1]);\r\n+            }\r\n+            setValue(value);\r\n+        } catch (ClassNotFoundException e) {\r\n+            rethrow(e);\r\n+        }\r\n+    }\r\n+\r\n+    private void handleException(ObjectInput in) throws IOException {\r\n+        try {\r\n+            setException(in.readThrowable());\r\n+        } catch (ClassNotFoundException e) {\r\n+            rethrow(e);\r\n+        }\r\n+    }\r\n+\r\n+    private void handleAttachment(ObjectInput in) throws IOException {\r\n+        try {\r\n+            addObjectAttachments(in.readAttachments());\r\n+        } catch (ClassNotFoundException e) {\r\n+            rethrow(e);\r\n+        }\r\n+    }\r\n+\r\n+    private void rethrow(Exception e) throws IOException {\r\n+        throw new IOException(StringUtils.toString(\"Read response data failed.\", e));\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/DubboCodec.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/DubboCodec.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,248 +1,248 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.dubbo;\n-\n-import org.apache.dubbo.common.Version;\n-import org.apache.dubbo.common.io.Bytes;\n-import org.apache.dubbo.common.io.UnsafeByteArrayInputStream;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.Serialization;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.exchange.Request;\n-import org.apache.dubbo.remoting.exchange.Response;\n-import org.apache.dubbo.remoting.exchange.codec.ExchangeCodec;\n-import org.apache.dubbo.remoting.transport.CodecSupport;\n-import org.apache.dubbo.rpc.AppResponse;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-\n-import java.io.ByteArrayInputStream;\n-import java.io.IOException;\n-import java.io.InputStream;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.rpc.protocol.dubbo.CallbackServiceCodec.encodeInvocationArgument;\n-import static org.apache.dubbo.rpc.protocol.dubbo.Constants.DECODE_IN_IO_THREAD_KEY;\n-import static org.apache.dubbo.rpc.protocol.dubbo.Constants.DEFAULT_DECODE_IN_IO_THREAD;\n-\n-/**\n- * Dubbo codec.\n- */\n-public class DubboCodec extends ExchangeCodec {\n-\n-    public static final String NAME = \"dubbo\";\n-    public static final String DUBBO_VERSION = Version.getProtocolVersion();\n-    public static final byte RESPONSE_WITH_EXCEPTION = 0;\n-    public static final byte RESPONSE_VALUE = 1;\n-    public static final byte RESPONSE_NULL_VALUE = 2;\n-    public static final byte RESPONSE_WITH_EXCEPTION_WITH_ATTACHMENTS = 3;\n-    public static final byte RESPONSE_VALUE_WITH_ATTACHMENTS = 4;\n-    public static final byte RESPONSE_NULL_VALUE_WITH_ATTACHMENTS = 5;\n-    public static final Object[] EMPTY_OBJECT_ARRAY = new Object[0];\n-    public static final Class<?>[] EMPTY_CLASS_ARRAY = new Class<?>[0];\n-    private static final Logger log = LoggerFactory.getLogger(DubboCodec.class);\n-\n-    @Override\n-    protected Object decodeBody(Channel channel, InputStream is, byte[] header) throws IOException {\n-        byte flag = header[2], proto = (byte) (flag & SERIALIZATION_MASK);\n-        // get request id.\n-        long id = Bytes.bytes2long(header, 4);\n-        if ((flag & FLAG_REQUEST) == 0) {\n-            // decode response.\n-            Response res = new Response(id);\n-            if ((flag & FLAG_EVENT) != 0) {\n-                res.setEvent(true);\n-            }\n-            // get status.\n-            byte status = header[3];\n-            res.setStatus(status);\n-            try {\n-                if (status == Response.OK) {\n-                    Object data;\n-                    if (res.isEvent()) {\n-                        byte[] eventPayload = CodecSupport.getPayload(is);\n-                        if (CodecSupport.isHeartBeat(eventPayload, proto)) {\n-                            // heart beat response data is always null;\n-                            data = null;\n-                        } else {\n-                            ObjectInput in = CodecSupport.deserialize(channel.getUrl(), new ByteArrayInputStream(eventPayload), proto);\n-                            data = decodeEventData(channel, in, eventPayload);\n-                        }\n-                    } else {\n-                        DecodeableRpcResult result;\n-                        if (channel.getUrl().getParameter(DECODE_IN_IO_THREAD_KEY, DEFAULT_DECODE_IN_IO_THREAD)) {\n-                            result = new DecodeableRpcResult(channel, res, is,\n-                                    (Invocation) getRequestData(id), proto);\n-                            result.decode();\n-                        } else {\n-                            result = new DecodeableRpcResult(channel, res,\n-                                    new UnsafeByteArrayInputStream(readMessageData(is)),\n-                                    (Invocation) getRequestData(id), proto);\n-                        }\n-                        data = result;\n-                    }\n-                    res.setResult(data);\n-                } else {\n-                    ObjectInput in = CodecSupport.deserialize(channel.getUrl(), is, proto);\n-                    res.setErrorMessage(in.readUTF());\n-                }\n-            } catch (Throwable t) {\n-                if (log.isWarnEnabled()) {\n-                    log.warn(\"Decode response failed: \" + t.getMessage(), t);\n-                }\n-                res.setStatus(Response.CLIENT_ERROR);\n-                res.setErrorMessage(StringUtils.toString(t));\n-            }\n-            return res;\n-        } else {\n-            // decode request.\n-            Request req = new Request(id);\n-            req.setVersion(Version.getProtocolVersion());\n-            req.setTwoWay((flag & FLAG_TWOWAY) != 0);\n-            if ((flag & FLAG_EVENT) != 0) {\n-                req.setEvent(true);\n-            }\n-            try {\n-                Object data;\n-                if (req.isEvent()) {\n-                    byte[] eventPayload = CodecSupport.getPayload(is);\n-                    if (CodecSupport.isHeartBeat(eventPayload, proto)) {\n-                        // heart beat response data is always null;\n-                        data = null;\n-                    } else {\n-                        ObjectInput in = CodecSupport.deserialize(channel.getUrl(), new ByteArrayInputStream(eventPayload), proto);\n-                        data = decodeEventData(channel, in, eventPayload);\n-                    }\n-                } else {\n-                    DecodeableRpcInvocation inv;\n-                    if (channel.getUrl().getParameter(DECODE_IN_IO_THREAD_KEY, DEFAULT_DECODE_IN_IO_THREAD)) {\n-                        inv = new DecodeableRpcInvocation(channel, req, is, proto);\n-                        inv.decode();\n-                    } else {\n-                        inv = new DecodeableRpcInvocation(channel, req,\n-                                new UnsafeByteArrayInputStream(readMessageData(is)), proto);\n-                    }\n-                    data = inv;\n-                }\n-                req.setData(data);\n-            } catch (Throwable t) {\n-                if (log.isWarnEnabled()) {\n-                    log.warn(\"Decode request failed: \" + t.getMessage(), t);\n-                }\n-                // bad request\n-                req.setBroken(true);\n-                req.setData(t);\n-            }\n-\n-            return req;\n-        }\n-    }\n-\n-    private byte[] readMessageData(InputStream is) throws IOException {\n-        if (is.available() > 0) {\n-            byte[] result = new byte[is.available()];\n-            is.read(result);\n-            return result;\n-        }\n-        return new byte[]{};\n-    }\n-\n-    @Override\n-    protected void encodeRequestData(Channel channel, ObjectOutput out, Object data) throws IOException {\n-        encodeRequestData(channel, out, data, DUBBO_VERSION);\n-    }\n-\n-    @Override\n-    protected void encodeResponseData(Channel channel, ObjectOutput out, Object data) throws IOException {\n-        encodeResponseData(channel, out, data, DUBBO_VERSION);\n-    }\n-\n-    @Override\n-    protected void encodeRequestData(Channel channel, ObjectOutput out, Object data, String version) throws IOException {\n-        RpcInvocation inv = (RpcInvocation) data;\n-\n-        out.writeUTF(version);\n-        // https://github.com/apache/dubbo/issues/6138\n-        String serviceName = inv.getAttachment(INTERFACE_KEY);\n-        if (serviceName == null) {\n-            serviceName = inv.getAttachment(PATH_KEY);\n-        }\n-        out.writeUTF(serviceName);\n-        out.writeUTF(inv.getAttachment(VERSION_KEY));\n-\n-        out.writeUTF(inv.getMethodName());\n-        out.writeUTF(inv.getParameterTypesDesc());\n-        Object[] args = inv.getArguments();\n-        if (args != null) {\n-            for (int i = 0; i < args.length; i++) {\n-                out.writeObject(encodeInvocationArgument(channel, inv, i));\n-            }\n-        }\n-        out.writeAttachments(inv.getObjectAttachments());\n-    }\n-\n-    @Override\n-    protected void encodeResponseData(Channel channel, ObjectOutput out, Object data, String version) throws IOException {\n-        Result result = (Result) data;\n-        // currently, the version value in Response records the version of Request\n-        boolean attach = Version.isSupportResponseAttachment(version);\n-        Throwable th = result.getException();\n-        if (th == null) {\n-            Object ret = result.getValue();\n-            if (ret == null) {\n-                out.writeByte(attach ? RESPONSE_NULL_VALUE_WITH_ATTACHMENTS : RESPONSE_NULL_VALUE);\n-            } else {\n-                out.writeByte(attach ? RESPONSE_VALUE_WITH_ATTACHMENTS : RESPONSE_VALUE);\n-                out.writeObject(ret);\n-            }\n-        } else {\n-            out.writeByte(attach ? RESPONSE_WITH_EXCEPTION_WITH_ATTACHMENTS : RESPONSE_WITH_EXCEPTION);\n-            out.writeThrowable(th);\n-        }\n-\n-        if (attach) {\n-            // returns current version of Response to consumer side.\n-            result.getObjectAttachments().put(DUBBO_VERSION_KEY, Version.getProtocolVersion());\n-            out.writeAttachments(result.getObjectAttachments());\n-        }\n-    }\n-\n-    @Override\n-    protected Serialization getSerialization(Channel channel, Request req) {\n-        if (!(req.getData() instanceof Invocation)) {\n-            return super.getSerialization(channel, req);\n-        }\n-        return DubboCodecSupport.getRequestSerialization(channel.getUrl(), (Invocation) req.getData());\n-    }\n-\n-    @Override\n-    protected Serialization getSerialization(Channel channel, Response res) {\n-        if (!(res.getResult() instanceof AppResponse)) {\n-            return super.getSerialization(channel, res);\n-        }\n-        return DubboCodecSupport.getResponseSerialization(channel.getUrl(), (AppResponse) res.getResult());\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.dubbo;\r\n+\r\n+import org.apache.dubbo.common.Version;\r\n+import org.apache.dubbo.common.io.Bytes;\r\n+import org.apache.dubbo.common.io.UnsafeByteArrayInputStream;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.exchange.Request;\r\n+import org.apache.dubbo.remoting.exchange.Response;\r\n+import org.apache.dubbo.remoting.exchange.codec.ExchangeCodec;\r\n+import org.apache.dubbo.remoting.transport.CodecSupport;\r\n+import org.apache.dubbo.rpc.AppResponse;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+\r\n+import java.io.ByteArrayInputStream;\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.CallbackServiceCodec.encodeInvocationArgument;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.Constants.DECODE_IN_IO_THREAD_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.Constants.DEFAULT_DECODE_IN_IO_THREAD;\r\n+\r\n+/**\r\n+ * Dubbo codec.\r\n+ */\r\n+public class DubboCodec extends ExchangeCodec {\r\n+\r\n+    public static final String NAME = \"dubbo\";\r\n+    public static final String DUBBO_VERSION = Version.getProtocolVersion();\r\n+    public static final byte RESPONSE_WITH_EXCEPTION = 0;\r\n+    public static final byte RESPONSE_VALUE = 1;\r\n+    public static final byte RESPONSE_NULL_VALUE = 2;\r\n+    public static final byte RESPONSE_WITH_EXCEPTION_WITH_ATTACHMENTS = 3;\r\n+    public static final byte RESPONSE_VALUE_WITH_ATTACHMENTS = 4;\r\n+    public static final byte RESPONSE_NULL_VALUE_WITH_ATTACHMENTS = 5;\r\n+    public static final Object[] EMPTY_OBJECT_ARRAY = new Object[0];\r\n+    public static final Class<?>[] EMPTY_CLASS_ARRAY = new Class<?>[0];\r\n+    private static final Logger log = LoggerFactory.getLogger(DubboCodec.class);\r\n+\r\n+    @Override\r\n+    protected Object decodeBody(Channel channel, InputStream is, byte[] header) throws IOException {\r\n+        byte flag = header[2], proto = (byte) (flag & SERIALIZATION_MASK);\r\n+        // get request id.\r\n+        long id = Bytes.bytes2long(header, 4);\r\n+        if ((flag & FLAG_REQUEST) == 0) {\r\n+            // decode response.\r\n+            Response res = new Response(id);\r\n+            if ((flag & FLAG_EVENT) != 0) {\r\n+                res.setEvent(true);\r\n+            }\r\n+            // get status.\r\n+            byte status = header[3];\r\n+            res.setStatus(status);\r\n+            try {\r\n+                if (status == Response.OK) {\r\n+                    Object data;\r\n+                    if (res.isEvent()) {\r\n+                        byte[] eventPayload = CodecSupport.getPayload(is);\r\n+                        if (CodecSupport.isHeartBeat(eventPayload, proto)) {\r\n+                            // heart beat response data is always null;\r\n+                            data = null;\r\n+                        } else {\r\n+                            ObjectInput in = CodecSupport.deserialize(channel.getUrl(), new ByteArrayInputStream(eventPayload), proto);\r\n+                            data = decodeEventData(channel, in, eventPayload);\r\n+                        }\r\n+                    } else {\r\n+                        DecodeableRpcResult result;\r\n+                        if (channel.getUrl().getParameter(DECODE_IN_IO_THREAD_KEY, DEFAULT_DECODE_IN_IO_THREAD)) {\r\n+                            result = new DecodeableRpcResult(channel, res, is,\r\n+                                    (Invocation) getRequestData(id), proto);\r\n+                            result.decode();\r\n+                        } else {\r\n+                            result = new DecodeableRpcResult(channel, res,\r\n+                                    new UnsafeByteArrayInputStream(readMessageData(is)),\r\n+                                    (Invocation) getRequestData(id), proto);\r\n+                        }\r\n+                        data = result;\r\n+                    }\r\n+                    res.setResult(data);\r\n+                } else {\r\n+                    ObjectInput in = CodecSupport.deserialize(channel.getUrl(), is, proto);\r\n+                    res.setErrorMessage(in.readUTF());\r\n+                }\r\n+            } catch (Throwable t) {\r\n+                if (log.isWarnEnabled()) {\r\n+                    log.warn(\"Decode response failed: \" + t.getMessage(), t);\r\n+                }\r\n+                res.setStatus(Response.CLIENT_ERROR);\r\n+                res.setErrorMessage(StringUtils.toString(t));\r\n+            }\r\n+            return res;\r\n+        } else {\r\n+            // decode request.\r\n+            Request req = new Request(id);\r\n+            req.setVersion(Version.getProtocolVersion());\r\n+            req.setTwoWay((flag & FLAG_TWOWAY) != 0);\r\n+            if ((flag & FLAG_EVENT) != 0) {\r\n+                req.setEvent(true);\r\n+            }\r\n+            try {\r\n+                Object data;\r\n+                if (req.isEvent()) {\r\n+                    byte[] eventPayload = CodecSupport.getPayload(is);\r\n+                    if (CodecSupport.isHeartBeat(eventPayload, proto)) {\r\n+                        // heart beat response data is always null;\r\n+                        data = null;\r\n+                    } else {\r\n+                        ObjectInput in = CodecSupport.deserialize(channel.getUrl(), new ByteArrayInputStream(eventPayload), proto);\r\n+                        data = decodeEventData(channel, in, eventPayload);\r\n+                    }\r\n+                } else {\r\n+                    DecodeableRpcInvocation inv;\r\n+                    if (channel.getUrl().getParameter(DECODE_IN_IO_THREAD_KEY, DEFAULT_DECODE_IN_IO_THREAD)) {\r\n+                        inv = new DecodeableRpcInvocation(channel, req, is, proto);\r\n+                        inv.decode();\r\n+                    } else {\r\n+                        inv = new DecodeableRpcInvocation(channel, req,\r\n+                                new UnsafeByteArrayInputStream(readMessageData(is)), proto);\r\n+                    }\r\n+                    data = inv;\r\n+                }\r\n+                req.setData(data);\r\n+            } catch (Throwable t) {\r\n+                if (log.isWarnEnabled()) {\r\n+                    log.warn(\"Decode request failed: \" + t.getMessage(), t);\r\n+                }\r\n+                // bad request\r\n+                req.setBroken(true);\r\n+                req.setData(t);\r\n+            }\r\n+\r\n+            return req;\r\n+        }\r\n+    }\r\n+\r\n+    private byte[] readMessageData(InputStream is) throws IOException {\r\n+        if (is.available() > 0) {\r\n+            byte[] result = new byte[is.available()];\r\n+            is.read(result);\r\n+            return result;\r\n+        }\r\n+        return new byte[]{};\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void encodeRequestData(Channel channel, ObjectOutput out, Object data) throws IOException {\r\n+        encodeRequestData(channel, out, data, DUBBO_VERSION);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void encodeResponseData(Channel channel, ObjectOutput out, Object data) throws IOException {\r\n+        encodeResponseData(channel, out, data, DUBBO_VERSION);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void encodeRequestData(Channel channel, ObjectOutput out, Object data, String version) throws IOException {\r\n+        RpcInvocation inv = (RpcInvocation) data;\r\n+\r\n+        out.writeUTF(version);\r\n+        // https://github.com/apache/dubbo/issues/6138\r\n+        String serviceName = inv.getAttachment(INTERFACE_KEY);\r\n+        if (serviceName == null) {\r\n+            serviceName = inv.getAttachment(PATH_KEY);\r\n+        }\r\n+        out.writeUTF(serviceName);\r\n+        out.writeUTF(inv.getAttachment(VERSION_KEY));\r\n+\r\n+        out.writeUTF(inv.getMethodName());\r\n+        out.writeUTF(inv.getParameterTypesDesc());\r\n+        Object[] args = inv.getArguments();\r\n+        if (args != null) {\r\n+            for (int i = 0; i < args.length; i++) {\r\n+                out.writeObject(encodeInvocationArgument(channel, inv, i));\r\n+            }\r\n+        }\r\n+        out.writeAttachments(inv.getObjectAttachments());\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void encodeResponseData(Channel channel, ObjectOutput out, Object data, String version) throws IOException {\r\n+        Result result = (Result) data;\r\n+        // currently, the version value in Response records the version of Request\r\n+        boolean attach = Version.isSupportResponseAttachment(version);\r\n+        Throwable th = result.getException();\r\n+        if (th == null) {\r\n+            Object ret = result.getValue();\r\n+            if (ret == null) {\r\n+                out.writeByte(attach ? RESPONSE_NULL_VALUE_WITH_ATTACHMENTS : RESPONSE_NULL_VALUE);\r\n+            } else {\r\n+                out.writeByte(attach ? RESPONSE_VALUE_WITH_ATTACHMENTS : RESPONSE_VALUE);\r\n+                out.writeObject(ret);\r\n+            }\r\n+        } else {\r\n+            out.writeByte(attach ? RESPONSE_WITH_EXCEPTION_WITH_ATTACHMENTS : RESPONSE_WITH_EXCEPTION);\r\n+            out.writeThrowable(th);\r\n+        }\r\n+\r\n+        if (attach) {\r\n+            // returns current version of Response to consumer side.\r\n+            result.getObjectAttachments().put(DUBBO_VERSION_KEY, Version.getProtocolVersion());\r\n+            out.writeAttachments(result.getObjectAttachments());\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Serialization getSerialization(Channel channel, Request req) {\r\n+        if (!(req.getData() instanceof Invocation)) {\r\n+            return super.getSerialization(channel, req);\r\n+        }\r\n+        return DubboCodecSupport.getRequestSerialization(channel.getUrl(), (Invocation) req.getData());\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Serialization getSerialization(Channel channel, Response res) {\r\n+        if (!(res.getResult() instanceof AppResponse)) {\r\n+            return super.getSerialization(channel, res);\r\n+        }\r\n+        return DubboCodecSupport.getResponseSerialization(channel.getUrl(), (AppResponse) res.getResult());\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/DubboCodecSupport.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/DubboCodecSupport.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,53 +1,53 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.dubbo;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.serialize.Serialization;\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.remoting.transport.CodecSupport;\n-import org.apache.dubbo.rpc.AppResponse;\n-import org.apache.dubbo.rpc.Invocation;\n-\n-import static org.apache.dubbo.rpc.Constants.INVOCATION_KEY;\n-import static org.apache.dubbo.rpc.Constants.SERIALIZATION_ID_KEY;\n-\n-public class DubboCodecSupport {\n-\n-    public static Serialization getRequestSerialization(URL url, Invocation invocation) {\n-        Object serializationType_obj = invocation.get(SERIALIZATION_ID_KEY);\n-        if (serializationType_obj != null) {\n-            return CodecSupport.getSerializationById((byte) serializationType_obj);\n-        }\n-        return ExtensionLoader.getExtensionLoader(Serialization.class).getExtension(\n-                url.getParameter(org.apache.dubbo.remoting.Constants.SERIALIZATION_KEY, Constants.DEFAULT_REMOTING_SERIALIZATION));\n-    }\n-\n-    public static Serialization getResponseSerialization(URL url, AppResponse appResponse) {\n-        Object invocation_obj = appResponse.getAttribute(INVOCATION_KEY);\n-        if (invocation_obj != null) {\n-            Invocation invocation = (Invocation) invocation_obj;\n-            Object serializationType_obj = invocation.get(SERIALIZATION_ID_KEY);\n-            if (serializationType_obj != null) {\n-                return CodecSupport.getSerializationById((byte) serializationType_obj);\n-            }\n-        }\n-        return ExtensionLoader.getExtensionLoader(Serialization.class).getExtension(\n-                url.getParameter(Constants.SERIALIZATION_KEY, Constants.DEFAULT_REMOTING_SERIALIZATION));\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.dubbo;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.remoting.transport.CodecSupport;\r\n+import org.apache.dubbo.rpc.AppResponse;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+\r\n+import static org.apache.dubbo.rpc.Constants.INVOCATION_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.SERIALIZATION_ID_KEY;\r\n+\r\n+public class DubboCodecSupport {\r\n+\r\n+    public static Serialization getRequestSerialization(URL url, Invocation invocation) {\r\n+        Object serializationType_obj = invocation.get(SERIALIZATION_ID_KEY);\r\n+        if (serializationType_obj != null) {\r\n+            return CodecSupport.getSerializationById((byte) serializationType_obj);\r\n+        }\r\n+        return ExtensionLoader.getExtensionLoader(Serialization.class).getExtension(\r\n+                url.getParameter(org.apache.dubbo.remoting.Constants.SERIALIZATION_KEY, Constants.DEFAULT_REMOTING_SERIALIZATION));\r\n+    }\r\n+\r\n+    public static Serialization getResponseSerialization(URL url, AppResponse appResponse) {\r\n+        Object invocation_obj = appResponse.getAttribute(INVOCATION_KEY);\r\n+        if (invocation_obj != null) {\r\n+            Invocation invocation = (Invocation) invocation_obj;\r\n+            Object serializationType_obj = invocation.get(SERIALIZATION_ID_KEY);\r\n+            if (serializationType_obj != null) {\r\n+                return CodecSupport.getSerializationById((byte) serializationType_obj);\r\n+            }\r\n+        }\r\n+        return ExtensionLoader.getExtensionLoader(Serialization.class).getExtension(\r\n+                url.getParameter(Constants.SERIALIZATION_KEY, Constants.DEFAULT_REMOTING_SERIALIZATION));\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/DubboCountCodec.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/DubboCountCodec.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,86 +1,86 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.rpc.protocol.dubbo;\n-\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.Codec2;\n-import org.apache.dubbo.remoting.buffer.ChannelBuffer;\n-import org.apache.dubbo.remoting.exchange.Request;\n-import org.apache.dubbo.remoting.exchange.Response;\n-import org.apache.dubbo.remoting.exchange.support.MultiMessage;\n-import org.apache.dubbo.rpc.AppResponse;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-\n-import java.io.IOException;\n-\n-import static org.apache.dubbo.rpc.Constants.INPUT_KEY;\n-import static org.apache.dubbo.rpc.Constants.OUTPUT_KEY;\n-\n-public final class DubboCountCodec implements Codec2 {\n-\n-    private DubboCodec codec = new DubboCodec();\n-\n-    @Override\n-    public void encode(Channel channel, ChannelBuffer buffer, Object msg) throws IOException {\n-        codec.encode(channel, buffer, msg);\n-    }\n-\n-    @Override\n-    public Object decode(Channel channel, ChannelBuffer buffer) throws IOException {\n-        int save = buffer.readerIndex();\n-        MultiMessage result = MultiMessage.create();\n-        do {\n-            Object obj = codec.decode(channel, buffer);\n-            if (Codec2.DecodeResult.NEED_MORE_INPUT == obj) {\n-                buffer.readerIndex(save);\n-                break;\n-            } else {\n-                result.addMessage(obj);\n-                logMessageLength(obj, buffer.readerIndex() - save);\n-                save = buffer.readerIndex();\n-            }\n-        } while (true);\n-        if (result.isEmpty()) {\n-            return Codec2.DecodeResult.NEED_MORE_INPUT;\n-        }\n-        if (result.size() == 1) {\n-            return result.get(0);\n-        }\n-        return result;\n-    }\n-\n-    private void logMessageLength(Object result, int bytes) {\n-        if (bytes <= 0) {\n-            return;\n-        }\n-        if (result instanceof Request) {\n-            try {\n-                ((RpcInvocation) ((Request) result).getData()).setAttachment(INPUT_KEY, String.valueOf(bytes));\n-            } catch (Throwable e) {\n-                /* ignore */\n-            }\n-        } else if (result instanceof Response) {\n-            try {\n-                ((AppResponse) ((Response) result).getResult()).setAttachment(OUTPUT_KEY, String.valueOf(bytes));\n-            } catch (Throwable e) {\n-                /* ignore */\n-            }\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.rpc.protocol.dubbo;\r\n+\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.Codec2;\r\n+import org.apache.dubbo.remoting.buffer.ChannelBuffer;\r\n+import org.apache.dubbo.remoting.exchange.Request;\r\n+import org.apache.dubbo.remoting.exchange.Response;\r\n+import org.apache.dubbo.remoting.exchange.support.MultiMessage;\r\n+import org.apache.dubbo.rpc.AppResponse;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+\r\n+import java.io.IOException;\r\n+\r\n+import static org.apache.dubbo.rpc.Constants.INPUT_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.OUTPUT_KEY;\r\n+\r\n+public final class DubboCountCodec implements Codec2 {\r\n+\r\n+    private DubboCodec codec = new DubboCodec();\r\n+\r\n+    @Override\r\n+    public void encode(Channel channel, ChannelBuffer buffer, Object msg) throws IOException {\r\n+        codec.encode(channel, buffer, msg);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object decode(Channel channel, ChannelBuffer buffer) throws IOException {\r\n+        int save = buffer.readerIndex();\r\n+        MultiMessage result = MultiMessage.create();\r\n+        do {\r\n+            Object obj = codec.decode(channel, buffer);\r\n+            if (Codec2.DecodeResult.NEED_MORE_INPUT == obj) {\r\n+                buffer.readerIndex(save);\r\n+                break;\r\n+            } else {\r\n+                result.addMessage(obj);\r\n+                logMessageLength(obj, buffer.readerIndex() - save);\r\n+                save = buffer.readerIndex();\r\n+            }\r\n+        } while (true);\r\n+        if (result.isEmpty()) {\r\n+            return Codec2.DecodeResult.NEED_MORE_INPUT;\r\n+        }\r\n+        if (result.size() == 1) {\r\n+            return result.get(0);\r\n+        }\r\n+        return result;\r\n+    }\r\n+\r\n+    private void logMessageLength(Object result, int bytes) {\r\n+        if (bytes <= 0) {\r\n+            return;\r\n+        }\r\n+        if (result instanceof Request) {\r\n+            try {\r\n+                ((RpcInvocation) ((Request) result).getData()).setAttachment(INPUT_KEY, String.valueOf(bytes));\r\n+            } catch (Throwable e) {\r\n+                /* ignore */\r\n+            }\r\n+        } else if (result instanceof Response) {\r\n+            try {\r\n+                ((AppResponse) ((Response) result).getResult()).setAttachment(OUTPUT_KEY, String.valueOf(bytes));\r\n+            } catch (Throwable e) {\r\n+                /* ignore */\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/DubboExporter.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/DubboExporter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,45 +1,45 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.dubbo;\n-\n-import org.apache.dubbo.rpc.Exporter;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.protocol.AbstractExporter;\n-\n-import java.util.Map;\n-\n-/**\n- * DubboExporter\n- */\n-public class DubboExporter<T> extends AbstractExporter<T> {\n-\n-    private final String key;\n-\n-    private final Map<String, Exporter<?>> exporterMap;\n-\n-    public DubboExporter(Invoker<T> invoker, String key, Map<String, Exporter<?>> exporterMap) {\n-        super(invoker);\n-        this.key = key;\n-        this.exporterMap = exporterMap;\n-    }\n-\n-    @Override\n-    public void afterUnExport() {\n-        exporterMap.remove(key);\n-    }\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.dubbo;\r\n+\r\n+import org.apache.dubbo.rpc.Exporter;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.protocol.AbstractExporter;\r\n+\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * DubboExporter\r\n+ */\r\n+public class DubboExporter<T> extends AbstractExporter<T> {\r\n+\r\n+    private final String key;\r\n+\r\n+    private final Map<String, Exporter<?>> exporterMap;\r\n+\r\n+    public DubboExporter(Invoker<T> invoker, String key, Map<String, Exporter<?>> exporterMap) {\r\n+        super(invoker);\r\n+        this.key = key;\r\n+        this.exporterMap = exporterMap;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void afterUnExport() {\r\n+        exporterMap.remove(key);\r\n+    }\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/DubboInvoker.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/DubboInvoker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,183 +1,183 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.dubbo;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.ConfigurationUtils;\n-import org.apache.dubbo.common.utils.AtomicPositiveInteger;\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.TimeoutException;\n-import org.apache.dubbo.remoting.exchange.ExchangeClient;\n-import org.apache.dubbo.rpc.AppResponse;\n-import org.apache.dubbo.rpc.AsyncRpcResult;\n-import org.apache.dubbo.rpc.FutureContext;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-import org.apache.dubbo.rpc.TimeoutCountDown;\n-import org.apache.dubbo.rpc.protocol.AbstractInvoker;\n-import org.apache.dubbo.rpc.support.RpcUtils;\n-\n-import java.util.Set;\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.locks.ReentrantLock;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_VERSION;\n-import static org.apache.dubbo.common.constants.CommonConstants.ENABLE_TIMEOUT_COUNTDOWN_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_ATTACHMENT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIME_COUNTDOWN_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\n-\n-/**\n- * DubboInvoker\n- */\n-public class DubboInvoker<T> extends AbstractInvoker<T> {\n-\n-    private final ExchangeClient[] clients;\n-\n-    private final AtomicPositiveInteger index = new AtomicPositiveInteger();\n-\n-    private final String version;\n-\n-    private final ReentrantLock destroyLock = new ReentrantLock();\n-\n-    private final Set<Invoker<?>> invokers;\n-\n-    public DubboInvoker(Class<T> serviceType, URL url, ExchangeClient[] clients) {\n-        this(serviceType, url, clients, null);\n-    }\n-\n-    public DubboInvoker(Class<T> serviceType, URL url, ExchangeClient[] clients, Set<Invoker<?>> invokers) {\n-        super(serviceType, url, new String[]{INTERFACE_KEY, GROUP_KEY, TOKEN_KEY});\n-        this.clients = clients;\n-        // get version.\n-        this.version = url.getParameter(VERSION_KEY, DEFAULT_VERSION);\n-        this.invokers = invokers;\n-    }\n-\n-    @Override\n-    protected Result doInvoke(final Invocation invocation) throws Throwable {\n-        RpcInvocation inv = (RpcInvocation) invocation;\n-        final String methodName = RpcUtils.getMethodName(invocation);\n-        inv.setAttachment(PATH_KEY, getUrl().getPath());\n-        inv.setAttachment(VERSION_KEY, version);\n-\n-        ExchangeClient currentClient;\n-        if (clients.length == 1) {\n-            currentClient = clients[0];\n-        } else {\n-            currentClient = clients[index.getAndIncrement() % clients.length];\n-        }\n-        try {\n-            boolean isOneway = RpcUtils.isOneway(getUrl(), invocation);\n-            int timeout = calculateTimeout(invocation, methodName);\n-            invocation.put(TIMEOUT_KEY, timeout);\n-            if (isOneway) {\n-                boolean isSent = getUrl().getMethodParameter(methodName, Constants.SENT_KEY, false);\n-                currentClient.send(inv, isSent);\n-                return AsyncRpcResult.newDefaultAsyncResult(invocation);\n-            } else {\n-                ExecutorService executor = getCallbackExecutor(getUrl(), inv);\n-                CompletableFuture<AppResponse> appResponseFuture =\n-                        currentClient.request(inv, timeout, executor).thenApply(obj -> (AppResponse) obj);\n-                // save for 2.6.x compatibility, for example, TraceFilter in Zipkin uses com.alibaba.xxx.FutureAdapter\n-                FutureContext.getContext().setCompatibleFuture(appResponseFuture);\n-                AsyncRpcResult result = new AsyncRpcResult(appResponseFuture, inv);\n-                result.setExecutor(executor);\n-                return result;\n-            }\n-        } catch (TimeoutException e) {\n-            throw new RpcException(RpcException.TIMEOUT_EXCEPTION, \"Invoke remote method timeout. method: \" + invocation.getMethodName() + \", provider: \" + getUrl() + \", cause: \" + e.getMessage(), e);\n-        } catch (RemotingException e) {\n-            throw new RpcException(RpcException.NETWORK_EXCEPTION, \"Failed to invoke remote method: \" + invocation.getMethodName() + \", provider: \" + getUrl() + \", cause: \" + e.getMessage(), e);\n-        }\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        if (!super.isAvailable()) {\n-            return false;\n-        }\n-        for (ExchangeClient client : clients) {\n-            if (client.isConnected() && !client.hasAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY)) {\n-                //cannot write == not Available ?\n-                return true;\n-            }\n-        }\n-        return false;\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        // in order to avoid closing a client multiple times, a counter is used in case of connection per jvm, every\n-        // time when client.close() is called, counter counts down once, and when counter reaches zero, client will be\n-        // closed.\n-        if (super.isDestroyed()) {\n-            return;\n-        } else {\n-            // double check to avoid dup close\n-            destroyLock.lock();\n-            try {\n-                if (super.isDestroyed()) {\n-                    return;\n-                }\n-                super.destroy();\n-                if (invokers != null) {\n-                    invokers.remove(this);\n-                }\n-                for (ExchangeClient client : clients) {\n-                    try {\n-                        client.close(ConfigurationUtils.getServerShutdownTimeout());\n-                    } catch (Throwable t) {\n-                        logger.warn(t.getMessage(), t);\n-                    }\n-                }\n-\n-            } finally {\n-                destroyLock.unlock();\n-            }\n-        }\n-    }\n-\n-    private int calculateTimeout(Invocation invocation, String methodName) {\n-        Object countdown = RpcContext.getContext().get(TIME_COUNTDOWN_KEY);\n-        int timeout = DEFAULT_TIMEOUT;\n-        if (countdown == null) {\n-            timeout = (int) RpcUtils.getTimeout(getUrl(), methodName, RpcContext.getContext(), DEFAULT_TIMEOUT);\n-            if (getUrl().getParameter(ENABLE_TIMEOUT_COUNTDOWN_KEY, false)) {\n-                invocation.setObjectAttachment(TIMEOUT_ATTACHMENT_KEY, timeout); // pass timeout to remote server\n-            }\n-        } else {\n-            TimeoutCountDown timeoutCountDown = (TimeoutCountDown) countdown;\n-            timeout = (int) timeoutCountDown.timeRemaining(TimeUnit.MILLISECONDS);\n-            invocation.setObjectAttachment(TIMEOUT_ATTACHMENT_KEY, timeout);// pass timeout to remote server\n-        }\n-        return timeout;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.dubbo;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.ConfigurationUtils;\r\n+import org.apache.dubbo.common.utils.AtomicPositiveInteger;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.TimeoutException;\r\n+import org.apache.dubbo.remoting.exchange.ExchangeClient;\r\n+import org.apache.dubbo.rpc.AppResponse;\r\n+import org.apache.dubbo.rpc.AsyncRpcResult;\r\n+import org.apache.dubbo.rpc.FutureContext;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+import org.apache.dubbo.rpc.TimeoutCountDown;\r\n+import org.apache.dubbo.rpc.protocol.AbstractInvoker;\r\n+import org.apache.dubbo.rpc.support.RpcUtils;\r\n+\r\n+import java.util.Set;\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.locks.ReentrantLock;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_VERSION;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ENABLE_TIMEOUT_COUNTDOWN_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_ATTACHMENT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIME_COUNTDOWN_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\r\n+\r\n+/**\r\n+ * DubboInvoker\r\n+ */\r\n+public class DubboInvoker<T> extends AbstractInvoker<T> {\r\n+\r\n+    private final ExchangeClient[] clients;\r\n+\r\n+    private final AtomicPositiveInteger index = new AtomicPositiveInteger();\r\n+\r\n+    private final String version;\r\n+\r\n+    private final ReentrantLock destroyLock = new ReentrantLock();\r\n+\r\n+    private final Set<Invoker<?>> invokers;\r\n+\r\n+    public DubboInvoker(Class<T> serviceType, URL url, ExchangeClient[] clients) {\r\n+        this(serviceType, url, clients, null);\r\n+    }\r\n+\r\n+    public DubboInvoker(Class<T> serviceType, URL url, ExchangeClient[] clients, Set<Invoker<?>> invokers) {\r\n+        super(serviceType, url, new String[]{INTERFACE_KEY, GROUP_KEY, TOKEN_KEY});\r\n+        this.clients = clients;\r\n+        // get version.\r\n+        this.version = url.getParameter(VERSION_KEY, DEFAULT_VERSION);\r\n+        this.invokers = invokers;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Result doInvoke(final Invocation invocation) throws Throwable {\r\n+        RpcInvocation inv = (RpcInvocation) invocation;\r\n+        final String methodName = RpcUtils.getMethodName(invocation);\r\n+        inv.setAttachment(PATH_KEY, getUrl().getPath());\r\n+        inv.setAttachment(VERSION_KEY, version);\r\n+\r\n+        ExchangeClient currentClient;\r\n+        if (clients.length == 1) {\r\n+            currentClient = clients[0];\r\n+        } else {\r\n+            currentClient = clients[index.getAndIncrement() % clients.length];\r\n+        }\r\n+        try {\r\n+            boolean isOneway = RpcUtils.isOneway(getUrl(), invocation);\r\n+            int timeout = calculateTimeout(invocation, methodName);\r\n+            invocation.put(TIMEOUT_KEY, timeout);\r\n+            if (isOneway) {\r\n+                boolean isSent = getUrl().getMethodParameter(methodName, Constants.SENT_KEY, false);\r\n+                currentClient.send(inv, isSent);\r\n+                return AsyncRpcResult.newDefaultAsyncResult(invocation);\r\n+            } else {\r\n+                ExecutorService executor = getCallbackExecutor(getUrl(), inv);\r\n+                CompletableFuture<AppResponse> appResponseFuture =\r\n+                        currentClient.request(inv, timeout, executor).thenApply(obj -> (AppResponse) obj);\r\n+                // save for 2.6.x compatibility, for example, TraceFilter in Zipkin uses com.alibaba.xxx.FutureAdapter\r\n+                FutureContext.getContext().setCompatibleFuture(appResponseFuture);\r\n+                AsyncRpcResult result = new AsyncRpcResult(appResponseFuture, inv);\r\n+                result.setExecutor(executor);\r\n+                return result;\r\n+            }\r\n+        } catch (TimeoutException e) {\r\n+            throw new RpcException(RpcException.TIMEOUT_EXCEPTION, \"Invoke remote method timeout. method: \" + invocation.getMethodName() + \", provider: \" + getUrl() + \", cause: \" + e.getMessage(), e);\r\n+        } catch (RemotingException e) {\r\n+            throw new RpcException(RpcException.NETWORK_EXCEPTION, \"Failed to invoke remote method: \" + invocation.getMethodName() + \", provider: \" + getUrl() + \", cause: \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        if (!super.isAvailable()) {\r\n+            return false;\r\n+        }\r\n+        for (ExchangeClient client : clients) {\r\n+            if (client.isConnected() && !client.hasAttribute(Constants.CHANNEL_ATTRIBUTE_READONLY_KEY)) {\r\n+                //cannot write == not Available ?\r\n+                return true;\r\n+            }\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        // in order to avoid closing a client multiple times, a counter is used in case of connection per jvm, every\r\n+        // time when client.close() is called, counter counts down once, and when counter reaches zero, client will be\r\n+        // closed.\r\n+        if (super.isDestroyed()) {\r\n+            return;\r\n+        } else {\r\n+            // double check to avoid dup close\r\n+            destroyLock.lock();\r\n+            try {\r\n+                if (super.isDestroyed()) {\r\n+                    return;\r\n+                }\r\n+                super.destroy();\r\n+                if (invokers != null) {\r\n+                    invokers.remove(this);\r\n+                }\r\n+                for (ExchangeClient client : clients) {\r\n+                    try {\r\n+                        client.close(ConfigurationUtils.getServerShutdownTimeout());\r\n+                    } catch (Throwable t) {\r\n+                        logger.warn(t.getMessage(), t);\r\n+                    }\r\n+                }\r\n+\r\n+            } finally {\r\n+                destroyLock.unlock();\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private int calculateTimeout(Invocation invocation, String methodName) {\r\n+        Object countdown = RpcContext.getContext().get(TIME_COUNTDOWN_KEY);\r\n+        int timeout = DEFAULT_TIMEOUT;\r\n+        if (countdown == null) {\r\n+            timeout = (int) RpcUtils.getTimeout(getUrl(), methodName, RpcContext.getContext(), DEFAULT_TIMEOUT);\r\n+            if (getUrl().getParameter(ENABLE_TIMEOUT_COUNTDOWN_KEY, false)) {\r\n+                invocation.setObjectAttachment(TIMEOUT_ATTACHMENT_KEY, timeout); // pass timeout to remote server\r\n+            }\r\n+        } else {\r\n+            TimeoutCountDown timeoutCountDown = (TimeoutCountDown) countdown;\r\n+            timeout = (int) timeoutCountDown.timeRemaining(TimeUnit.MILLISECONDS);\r\n+            invocation.setObjectAttachment(TIMEOUT_ATTACHMENT_KEY, timeout);// pass timeout to remote server\r\n+        }\r\n+        return timeout;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/DubboProtocol.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,686 +1,686 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.dubbo;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.URLBuilder;\n-import org.apache.dubbo.common.config.ConfigurationUtils;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.serialize.support.SerializableClassRegistry;\n-import org.apache.dubbo.common.serialize.support.SerializationOptimizer;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.ConcurrentHashSet;\n-import org.apache.dubbo.common.utils.ConfigUtils;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.RemotingServer;\n-import org.apache.dubbo.remoting.Transporter;\n-import org.apache.dubbo.remoting.exchange.ExchangeChannel;\n-import org.apache.dubbo.remoting.exchange.ExchangeClient;\n-import org.apache.dubbo.remoting.exchange.ExchangeHandler;\n-import org.apache.dubbo.remoting.exchange.ExchangeServer;\n-import org.apache.dubbo.remoting.exchange.Exchangers;\n-import org.apache.dubbo.remoting.exchange.support.ExchangeHandlerAdapter;\n-import org.apache.dubbo.rpc.Exporter;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Protocol;\n-import org.apache.dubbo.rpc.ProtocolServer;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-import org.apache.dubbo.rpc.protocol.AbstractProtocol;\n-\n-import java.net.InetSocketAddress;\n-import java.util.ArrayList;\n-import java.util.Collection;\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-import java.util.function.Function;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.LAZY_CONNECT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.STUB_EVENT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.remoting.Constants.CHANNEL_READONLYEVENT_SENT_KEY;\n-import static org.apache.dubbo.remoting.Constants.CLIENT_KEY;\n-import static org.apache.dubbo.remoting.Constants.CODEC_KEY;\n-import static org.apache.dubbo.remoting.Constants.CONNECTIONS_KEY;\n-import static org.apache.dubbo.remoting.Constants.DEFAULT_HEARTBEAT;\n-import static org.apache.dubbo.remoting.Constants.DEFAULT_REMOTING_CLIENT;\n-import static org.apache.dubbo.remoting.Constants.HEARTBEAT_KEY;\n-import static org.apache.dubbo.remoting.Constants.SERVER_KEY;\n-import static org.apache.dubbo.rpc.Constants.DEFAULT_REMOTING_SERVER;\n-import static org.apache.dubbo.rpc.Constants.DEFAULT_STUB_EVENT;\n-import static org.apache.dubbo.rpc.Constants.IS_SERVER_KEY;\n-import static org.apache.dubbo.rpc.Constants.STUB_EVENT_METHODS_KEY;\n-import static org.apache.dubbo.rpc.protocol.dubbo.Constants.CALLBACK_SERVICE_KEY;\n-import static org.apache.dubbo.rpc.protocol.dubbo.Constants.DEFAULT_SHARE_CONNECTIONS;\n-import static org.apache.dubbo.rpc.protocol.dubbo.Constants.IS_CALLBACK_SERVICE;\n-import static org.apache.dubbo.rpc.protocol.dubbo.Constants.ON_CONNECT_KEY;\n-import static org.apache.dubbo.rpc.protocol.dubbo.Constants.ON_DISCONNECT_KEY;\n-import static org.apache.dubbo.rpc.protocol.dubbo.Constants.OPTIMIZER_KEY;\n-import static org.apache.dubbo.rpc.protocol.dubbo.Constants.SHARE_CONNECTIONS_KEY;\n-\n-\n-/**\n- * dubbo protocol support.\n- */\n-public class DubboProtocol extends AbstractProtocol {\n-\n-    public static final String NAME = \"dubbo\";\n-\n-    public static final int DEFAULT_PORT = 20880;\n-    private static final String IS_CALLBACK_SERVICE_INVOKE = \"_isCallBackServiceInvoke\";\n-    private static DubboProtocol INSTANCE;\n-\n-    /**\n-     * <host:port,Exchanger>\n-     */\n-    private final Map<String, List<ReferenceCountExchangeClient>> referenceClientMap = new ConcurrentHashMap<>();\n-    private final ConcurrentMap<String, Object> locks = new ConcurrentHashMap<>();\n-    private final Set<String> optimizers = new ConcurrentHashSet<>();\n-\n-    private ExchangeHandler requestHandler = new ExchangeHandlerAdapter() {\n-\n-        @Override\n-        public CompletableFuture<Object> reply(ExchangeChannel channel, Object message) throws RemotingException {\n-\n-            if (!(message instanceof Invocation)) {\n-                throw new RemotingException(channel, \"Unsupported request: \"\n-                        + (message == null ? null : (message.getClass().getName() + \": \" + message))\n-                        + \", channel: consumer: \" + channel.getRemoteAddress() + \" --> provider: \" + channel.getLocalAddress());\n-            }\n-\n-            Invocation inv = (Invocation) message;\n-            Invoker<?> invoker = getInvoker(channel, inv);\n-            // need to consider backward-compatibility if it's a callback\n-            if (Boolean.TRUE.toString().equals(inv.getObjectAttachments().get(IS_CALLBACK_SERVICE_INVOKE))) {\n-                String methodsStr = invoker.getUrl().getParameters().get(\"methods\");\n-                boolean hasMethod = false;\n-                if (methodsStr == null || !methodsStr.contains(\",\")) {\n-                    hasMethod = inv.getMethodName().equals(methodsStr);\n-                } else {\n-                    String[] methods = methodsStr.split(\",\");\n-                    for (String method : methods) {\n-                        if (inv.getMethodName().equals(method)) {\n-                            hasMethod = true;\n-                            break;\n-                        }\n-                    }\n-                }\n-                if (!hasMethod) {\n-                    logger.warn(new IllegalStateException(\"The methodName \" + inv.getMethodName()\n-                            + \" not found in callback service interface ,invoke will be ignored.\"\n-                            + \" please update the api interface. url is:\"\n-                            + invoker.getUrl()) + \" ,invocation is :\" + inv);\n-                    return null;\n-                }\n-            }\n-            RpcContext.getContext().setRemoteAddress(channel.getRemoteAddress());\n-            Result result = invoker.invoke(inv);\n-            return result.thenApply(Function.identity());\n-        }\n-\n-        @Override\n-        public void received(Channel channel, Object message) throws RemotingException {\n-            if (message instanceof Invocation) {\n-                reply((ExchangeChannel) channel, message);\n-\n-            } else {\n-                super.received(channel, message);\n-            }\n-        }\n-\n-        @Override\n-        public void connected(Channel channel) throws RemotingException {\n-            invoke(channel, ON_CONNECT_KEY);\n-        }\n-\n-        @Override\n-        public void disconnected(Channel channel) throws RemotingException {\n-            if (logger.isDebugEnabled()) {\n-                logger.debug(\"disconnected from \" + channel.getRemoteAddress() + \",url:\" + channel.getUrl());\n-            }\n-            invoke(channel, ON_DISCONNECT_KEY);\n-        }\n-\n-        private void invoke(Channel channel, String methodKey) {\n-            Invocation invocation = createInvocation(channel, channel.getUrl(), methodKey);\n-            if (invocation != null) {\n-                try {\n-                    received(channel, invocation);\n-                } catch (Throwable t) {\n-                    logger.warn(\"Failed to invoke event method \" + invocation.getMethodName() + \"(), cause: \" + t.getMessage(), t);\n-                }\n-            }\n-        }\n-\n-        /**\n-         * FIXME channel.getUrl() always binds to a fixed service, and this service is random.\n-         * we can choose to use a common service to carry onConnect event if there's no easy way to get the specific\n-         * service this connection is binding to.\n-         * @param channel\n-         * @param url\n-         * @param methodKey\n-         * @return\n-         */\n-        private Invocation createInvocation(Channel channel, URL url, String methodKey) {\n-            String method = url.getParameter(methodKey);\n-            if (method == null || method.length() == 0) {\n-                return null;\n-            }\n-\n-            RpcInvocation invocation = new RpcInvocation(method, url.getParameter(INTERFACE_KEY), \"\", new Class<?>[0], new Object[0]);\n-            invocation.setAttachment(PATH_KEY, url.getPath());\n-            invocation.setAttachment(GROUP_KEY, url.getParameter(GROUP_KEY));\n-            invocation.setAttachment(INTERFACE_KEY, url.getParameter(INTERFACE_KEY));\n-            invocation.setAttachment(VERSION_KEY, url.getParameter(VERSION_KEY));\n-            if (url.getParameter(STUB_EVENT_KEY, false)) {\n-                invocation.setAttachment(STUB_EVENT_KEY, Boolean.TRUE.toString());\n-            }\n-\n-            return invocation;\n-        }\n-    };\n-\n-    public DubboProtocol() {\n-        INSTANCE = this;\n-    }\n-\n-    public static DubboProtocol getDubboProtocol() {\n-        if (INSTANCE == null) {\n-            // load\n-            ExtensionLoader.getExtensionLoader(Protocol.class).getExtension(DubboProtocol.NAME);\n-        }\n-\n-        return INSTANCE;\n-    }\n-\n-    @Override\n-    public Collection<Exporter<?>> getExporters() {\n-        return Collections.unmodifiableCollection(exporterMap.values());\n-    }\n-\n-    private boolean isClientSide(Channel channel) {\n-        InetSocketAddress address = channel.getRemoteAddress();\n-        URL url = channel.getUrl();\n-        return url.getPort() == address.getPort() &&\n-                NetUtils.filterLocalHost(channel.getUrl().getIp())\n-                        .equals(NetUtils.filterLocalHost(address.getAddress().getHostAddress()));\n-    }\n-\n-    Invoker<?> getInvoker(Channel channel, Invocation inv) throws RemotingException {\n-        boolean isCallBackServiceInvoke = false;\n-        boolean isStubServiceInvoke = false;\n-        int port = channel.getLocalAddress().getPort();\n-        String path = (String) inv.getObjectAttachments().get(PATH_KEY);\n-\n-        // if it's callback service on client side\n-        isStubServiceInvoke = Boolean.TRUE.toString().equals(inv.getObjectAttachments().get(STUB_EVENT_KEY));\n-        if (isStubServiceInvoke) {\n-            port = channel.getRemoteAddress().getPort();\n-        }\n-\n-        //callback\n-        isCallBackServiceInvoke = isClientSide(channel) && !isStubServiceInvoke;\n-        if (isCallBackServiceInvoke) {\n-            path += \".\" + inv.getObjectAttachments().get(CALLBACK_SERVICE_KEY);\n-            inv.getObjectAttachments().put(IS_CALLBACK_SERVICE_INVOKE, Boolean.TRUE.toString());\n-        }\n-\n-        String serviceKey = serviceKey(\n-                port,\n-                path,\n-                (String) inv.getObjectAttachments().get(VERSION_KEY),\n-                (String) inv.getObjectAttachments().get(GROUP_KEY)\n-        );\n-        DubboExporter<?> exporter = (DubboExporter<?>) exporterMap.get(serviceKey);\n-\n-        if (exporter == null) {\n-            throw new RemotingException(channel, \"Not found exported service: \" + serviceKey + \" in \" + exporterMap.keySet() + \", may be version or group mismatch \" +\n-                    \", channel: consumer: \" + channel.getRemoteAddress() + \" --> provider: \" + channel.getLocalAddress() + \", message:\" + getInvocationWithoutData(inv));\n-        }\n-\n-        return exporter.getInvoker();\n-    }\n-\n-    public Collection<Invoker<?>> getInvokers() {\n-        return Collections.unmodifiableCollection(invokers);\n-    }\n-\n-    @Override\n-    public int getDefaultPort() {\n-        return DEFAULT_PORT;\n-    }\n-\n-    @Override\n-    public <T> Exporter<T> export(Invoker<T> invoker) throws RpcException {\n-        URL url = invoker.getUrl();\n-\n-        // export service.\n-        String key = serviceKey(url);\n-        DubboExporter<T> exporter = new DubboExporter<T>(invoker, key, exporterMap);\n-        exporterMap.put(key, exporter);\n-\n-        //export an stub service for dispatching event\n-        Boolean isStubSupportEvent = url.getParameter(STUB_EVENT_KEY, DEFAULT_STUB_EVENT);\n-        Boolean isCallbackservice = url.getParameter(IS_CALLBACK_SERVICE, false);\n-        if (isStubSupportEvent && !isCallbackservice) {\n-            String stubServiceMethods = url.getParameter(STUB_EVENT_METHODS_KEY);\n-            if (stubServiceMethods == null || stubServiceMethods.length() == 0) {\n-                if (logger.isWarnEnabled()) {\n-                    logger.warn(new IllegalStateException(\"consumer [\" + url.getParameter(INTERFACE_KEY) +\n-                            \"], has set stubproxy support event ,but no stub methods founded.\"));\n-                }\n-\n-            }\n-        }\n-\n-        openServer(url);\n-        optimizeSerialization(url);\n-\n-        return exporter;\n-    }\n-\n-    private void openServer(URL url) {\n-        // find server.\n-        String key = url.getAddress();\n-        //client can export a service which's only for server to invoke\n-        boolean isServer = url.getParameter(IS_SERVER_KEY, true);\n-        if (isServer) {\n-            ProtocolServer server = serverMap.get(key);\n-            if (server == null) {\n-                synchronized (this) {\n-                    server = serverMap.get(key);\n-                    if (server == null) {\n-                        serverMap.put(key, createServer(url));\n-                    }\n-                }\n-            } else {\n-                // server supports reset, use together with override\n-                server.reset(url);\n-            }\n-        }\n-    }\n-\n-    private ProtocolServer createServer(URL url) {\n-        url = URLBuilder.from(url)\n-                // send readonly event when server closes, it's enabled by default\n-                .addParameterIfAbsent(CHANNEL_READONLYEVENT_SENT_KEY, Boolean.TRUE.toString())\n-                // enable heartbeat by default\n-                .addParameterIfAbsent(HEARTBEAT_KEY, String.valueOf(DEFAULT_HEARTBEAT))\n-                .addParameter(CODEC_KEY, DubboCodec.NAME)\n-                .build();\n-        String str = url.getParameter(SERVER_KEY, DEFAULT_REMOTING_SERVER);\n-\n-        if (str != null && str.length() > 0 && !ExtensionLoader.getExtensionLoader(Transporter.class).hasExtension(str)) {\n-            throw new RpcException(\"Unsupported server type: \" + str + \", url: \" + url);\n-        }\n-\n-        ExchangeServer server;\n-        try {\n-            server = Exchangers.bind(url, requestHandler);\n-        } catch (RemotingException e) {\n-            throw new RpcException(\"Fail to start server(url: \" + url + \") \" + e.getMessage(), e);\n-        }\n-\n-        str = url.getParameter(CLIENT_KEY);\n-        if (str != null && str.length() > 0) {\n-            Set<String> supportedTypes = ExtensionLoader.getExtensionLoader(Transporter.class).getSupportedExtensions();\n-            if (!supportedTypes.contains(str)) {\n-                throw new RpcException(\"Unsupported client type: \" + str);\n-            }\n-        }\n-\n-        return new DubboProtocolServer(server);\n-    }\n-\n-    private void optimizeSerialization(URL url) throws RpcException {\n-        String className = url.getParameter(OPTIMIZER_KEY, \"\");\n-        if (StringUtils.isEmpty(className) || optimizers.contains(className)) {\n-            return;\n-        }\n-\n-        logger.info(\"Optimizing the serialization process for Kryo, FST, etc...\");\n-\n-        try {\n-            Class clazz = Thread.currentThread().getContextClassLoader().loadClass(className);\n-            if (!SerializationOptimizer.class.isAssignableFrom(clazz)) {\n-                throw new RpcException(\"The serialization optimizer \" + className + \" isn't an instance of \" + SerializationOptimizer.class.getName());\n-            }\n-\n-            SerializationOptimizer optimizer = (SerializationOptimizer) clazz.newInstance();\n-\n-            if (optimizer.getSerializableClasses() == null) {\n-                return;\n-            }\n-\n-            for (Class c : optimizer.getSerializableClasses()) {\n-                SerializableClassRegistry.registerClass(c);\n-            }\n-\n-            optimizers.add(className);\n-\n-        } catch (ClassNotFoundException e) {\n-            throw new RpcException(\"Cannot find the serialization optimizer class: \" + className, e);\n-\n-        } catch (InstantiationException | IllegalAccessException e) {\n-            throw new RpcException(\"Cannot instantiate the serialization optimizer class: \" + className, e);\n-\n-        }\n-    }\n-\n-    @Override\n-    public <T> Invoker<T> protocolBindingRefer(Class<T> serviceType, URL url) throws RpcException {\n-        optimizeSerialization(url);\n-\n-        // create rpc invoker.\n-        DubboInvoker<T> invoker = new DubboInvoker<T>(serviceType, url, getClients(url), invokers);\n-        invokers.add(invoker);\n-\n-        return invoker;\n-    }\n-\n-    private ExchangeClient[] getClients(URL url) {\n-        // whether to share connection\n-\n-        boolean useShareConnect = false;\n-\n-        int connections = url.getParameter(CONNECTIONS_KEY, 0);\n-        List<ReferenceCountExchangeClient> shareClients = null;\n-        // if not configured, connection is shared, otherwise, one connection for one service\n-        if (connections == 0) {\n-            useShareConnect = true;\n-\n-            /*\n-             * The xml configuration should have a higher priority than properties.\n-             */\n-            String shareConnectionsStr = url.getParameter(SHARE_CONNECTIONS_KEY, (String) null);\n-            connections = Integer.parseInt(StringUtils.isBlank(shareConnectionsStr) ? ConfigUtils.getProperty(SHARE_CONNECTIONS_KEY,\n-                    DEFAULT_SHARE_CONNECTIONS) : shareConnectionsStr);\n-            shareClients = getSharedClient(url, connections);\n-        }\n-\n-        ExchangeClient[] clients = new ExchangeClient[connections];\n-        for (int i = 0; i < clients.length; i++) {\n-            if (useShareConnect) {\n-                clients[i] = shareClients.get(i);\n-\n-            } else {\n-                clients[i] = initClient(url);\n-            }\n-        }\n-\n-        return clients;\n-    }\n-\n-    /**\n-     * Get shared connection\n-     *\n-     * @param url\n-     * @param connectNum connectNum must be greater than or equal to 1\n-     */\n-    private List<ReferenceCountExchangeClient> getSharedClient(URL url, int connectNum) {\n-        String key = url.getAddress();\n-        List<ReferenceCountExchangeClient> clients = referenceClientMap.get(key);\n-\n-        if (checkClientCanUse(clients)) {\n-            batchClientRefIncr(clients);\n-            return clients;\n-        }\n-\n-        locks.putIfAbsent(key, new Object());\n-        synchronized (locks.get(key)) {\n-            clients = referenceClientMap.get(key);\n-            // double check\n-            if (checkClientCanUse(clients)) {\n-                batchClientRefIncr(clients);\n-                return clients;\n-            }\n-\n-            // connectNum must be greater than or equal to 1\n-            connectNum = Math.max(connectNum, 1);\n-\n-            // If the clients is empty, then the first initialization is\n-            if (CollectionUtils.isEmpty(clients)) {\n-                clients = buildReferenceCountExchangeClientList(url, connectNum);\n-                referenceClientMap.put(key, clients);\n-\n-            } else {\n-                for (int i = 0; i < clients.size(); i++) {\n-                    ReferenceCountExchangeClient referenceCountExchangeClient = clients.get(i);\n-                    // If there is a client in the list that is no longer available, create a new one to replace him.\n-                    if (referenceCountExchangeClient == null || referenceCountExchangeClient.isClosed()) {\n-                        clients.set(i, buildReferenceCountExchangeClient(url));\n-                        continue;\n-                    }\n-\n-                    referenceCountExchangeClient.incrementAndGetCount();\n-                }\n-            }\n-\n-            /*\n-             * I understand that the purpose of the remove operation here is to avoid the expired url key\n-             * always occupying this memory space.\n-             * But \"locks.remove(key);\" can lead to \"synchronized (locks.get(key)) {\" NPE, considering that the key of locks is \"IP + port\",\n-             * it will not lead to the expansion of \"locks\" in theory, so I will annotate it here.\n-             */\n-//            locks.remove(key);\n-\n-            return clients;\n-        }\n-    }\n-\n-    /**\n-     * Check if the client list is all available\n-     *\n-     * @param referenceCountExchangeClients\n-     * @return true-available\uff0cfalse-unavailable\n-     */\n-    private boolean checkClientCanUse(List<ReferenceCountExchangeClient> referenceCountExchangeClients) {\n-        if (CollectionUtils.isEmpty(referenceCountExchangeClients)) {\n-            return false;\n-        }\n-\n-        for (ReferenceCountExchangeClient referenceCountExchangeClient : referenceCountExchangeClients) {\n-            // As long as one client is not available, you need to replace the unavailable client with the available one.\n-            if (referenceCountExchangeClient == null || referenceCountExchangeClient.getCount() <= 0 || referenceCountExchangeClient.isClosed()) {\n-                return false;\n-            }\n-        }\n-\n-        return true;\n-    }\n-\n-    /**\n-     * Increase the reference Count if we create new invoker shares same connection, the connection will be closed without any reference.\n-     *\n-     * @param referenceCountExchangeClients\n-     */\n-    private void batchClientRefIncr(List<ReferenceCountExchangeClient> referenceCountExchangeClients) {\n-        if (CollectionUtils.isEmpty(referenceCountExchangeClients)) {\n-            return;\n-        }\n-\n-        for (ReferenceCountExchangeClient referenceCountExchangeClient : referenceCountExchangeClients) {\n-            if (referenceCountExchangeClient != null) {\n-                referenceCountExchangeClient.incrementAndGetCount();\n-            }\n-        }\n-    }\n-\n-    /**\n-     * Bulk build client\n-     *\n-     * @param url\n-     * @param connectNum\n-     * @return\n-     */\n-    private List<ReferenceCountExchangeClient> buildReferenceCountExchangeClientList(URL url, int connectNum) {\n-        List<ReferenceCountExchangeClient> clients = new ArrayList<>();\n-\n-        for (int i = 0; i < connectNum; i++) {\n-            clients.add(buildReferenceCountExchangeClient(url));\n-        }\n-\n-        return clients;\n-    }\n-\n-    /**\n-     * Build a single client\n-     *\n-     * @param url\n-     * @return\n-     */\n-    private ReferenceCountExchangeClient buildReferenceCountExchangeClient(URL url) {\n-        ExchangeClient exchangeClient = initClient(url);\n-\n-        return new ReferenceCountExchangeClient(exchangeClient);\n-    }\n-\n-    /**\n-     * Create new connection\n-     *\n-     * @param url\n-     */\n-    private ExchangeClient initClient(URL url) {\n-\n-        // client type setting.\n-        String str = url.getParameter(CLIENT_KEY, url.getParameter(SERVER_KEY, DEFAULT_REMOTING_CLIENT));\n-\n-        url = url.addParameter(CODEC_KEY, DubboCodec.NAME);\n-        // enable heartbeat by default\n-        url = url.addParameterIfAbsent(HEARTBEAT_KEY, String.valueOf(DEFAULT_HEARTBEAT));\n-\n-        // BIO is not allowed since it has severe performance issue.\n-        if (str != null && str.length() > 0 && !ExtensionLoader.getExtensionLoader(Transporter.class).hasExtension(str)) {\n-            throw new RpcException(\"Unsupported client type: \" + str + \",\" +\n-                    \" supported client type is \" + StringUtils.join(ExtensionLoader.getExtensionLoader(Transporter.class).getSupportedExtensions(), \" \"));\n-        }\n-\n-        ExchangeClient client;\n-        try {\n-            // connection should be lazy\n-            if (url.getParameter(LAZY_CONNECT_KEY, false)) {\n-                client = new LazyConnectExchangeClient(url, requestHandler);\n-\n-            } else {\n-                client = Exchangers.connect(url, requestHandler);\n-            }\n-\n-        } catch (RemotingException e) {\n-            throw new RpcException(\"Fail to create remoting client for service(\" + url + \"): \" + e.getMessage(), e);\n-        }\n-\n-        return client;\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        for (String key : new ArrayList<>(serverMap.keySet())) {\n-            ProtocolServer protocolServer = serverMap.remove(key);\n-\n-            if (protocolServer == null) {\n-                continue;\n-            }\n-\n-            RemotingServer server = protocolServer.getRemotingServer();\n-\n-            try {\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(\"Close dubbo server: \" + server.getLocalAddress());\n-                }\n-\n-                server.close(ConfigurationUtils.getServerShutdownTimeout());\n-\n-            } catch (Throwable t) {\n-                logger.warn(t.getMessage(), t);\n-            }\n-        }\n-\n-        for (String key : new ArrayList<>(referenceClientMap.keySet())) {\n-            List<ReferenceCountExchangeClient> clients = referenceClientMap.remove(key);\n-\n-            if (CollectionUtils.isEmpty(clients)) {\n-                continue;\n-            }\n-\n-            for (ReferenceCountExchangeClient client : clients) {\n-                closeReferenceCountExchangeClient(client);\n-            }\n-        }\n-\n-        super.destroy();\n-    }\n-\n-    /**\n-     * close ReferenceCountExchangeClient\n-     *\n-     * @param client\n-     */\n-    private void closeReferenceCountExchangeClient(ReferenceCountExchangeClient client) {\n-        if (client == null) {\n-            return;\n-        }\n-\n-        try {\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"Close dubbo connect: \" + client.getLocalAddress() + \"-->\" + client.getRemoteAddress());\n-            }\n-\n-            client.close(ConfigurationUtils.getServerShutdownTimeout());\n-\n-            // TODO\n-            /*\n-             * At this time, ReferenceCountExchangeClient#client has been replaced with LazyConnectExchangeClient.\n-             * Do you need to call client.close again to ensure that LazyConnectExchangeClient is also closed?\n-             */\n-\n-        } catch (Throwable t) {\n-            logger.warn(t.getMessage(), t);\n-        }\n-    }\n-\n-    /**\n-     * only log body in debugger mode for size & security consideration.\n-     *\n-     * @param invocation\n-     * @return\n-     */\n-    private Invocation getInvocationWithoutData(Invocation invocation) {\n-        if (logger.isDebugEnabled()) {\n-            return invocation;\n-        }\n-        if (invocation instanceof RpcInvocation) {\n-            RpcInvocation rpcInvocation = (RpcInvocation) invocation;\n-            rpcInvocation.setArguments(null);\n-            return rpcInvocation;\n-        }\n-        return invocation;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.dubbo;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.URLBuilder;\r\n+import org.apache.dubbo.common.config.ConfigurationUtils;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.serialize.support.SerializableClassRegistry;\r\n+import org.apache.dubbo.common.serialize.support.SerializationOptimizer;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.ConcurrentHashSet;\r\n+import org.apache.dubbo.common.utils.ConfigUtils;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.RemotingServer;\r\n+import org.apache.dubbo.remoting.Transporter;\r\n+import org.apache.dubbo.remoting.exchange.ExchangeChannel;\r\n+import org.apache.dubbo.remoting.exchange.ExchangeClient;\r\n+import org.apache.dubbo.remoting.exchange.ExchangeHandler;\r\n+import org.apache.dubbo.remoting.exchange.ExchangeServer;\r\n+import org.apache.dubbo.remoting.exchange.Exchangers;\r\n+import org.apache.dubbo.remoting.exchange.support.ExchangeHandlerAdapter;\r\n+import org.apache.dubbo.rpc.Exporter;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Protocol;\r\n+import org.apache.dubbo.rpc.ProtocolServer;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+import org.apache.dubbo.rpc.protocol.AbstractProtocol;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+import java.util.ArrayList;\r\n+import java.util.Collection;\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+import java.util.function.Function;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.LAZY_CONNECT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.STUB_EVENT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CHANNEL_READONLYEVENT_SENT_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CLIENT_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CODEC_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CONNECTIONS_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.DEFAULT_HEARTBEAT;\r\n+import static org.apache.dubbo.remoting.Constants.DEFAULT_REMOTING_CLIENT;\r\n+import static org.apache.dubbo.remoting.Constants.HEARTBEAT_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.SERVER_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.DEFAULT_REMOTING_SERVER;\r\n+import static org.apache.dubbo.rpc.Constants.DEFAULT_STUB_EVENT;\r\n+import static org.apache.dubbo.rpc.Constants.IS_SERVER_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.STUB_EVENT_METHODS_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.Constants.CALLBACK_SERVICE_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.Constants.DEFAULT_SHARE_CONNECTIONS;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.Constants.IS_CALLBACK_SERVICE;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.Constants.ON_CONNECT_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.Constants.ON_DISCONNECT_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.Constants.OPTIMIZER_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.Constants.SHARE_CONNECTIONS_KEY;\r\n+\r\n+\r\n+/**\r\n+ * dubbo protocol support.\r\n+ */\r\n+public class DubboProtocol extends AbstractProtocol {\r\n+\r\n+    public static final String NAME = \"dubbo\";\r\n+\r\n+    public static final int DEFAULT_PORT = 20880;\r\n+    private static final String IS_CALLBACK_SERVICE_INVOKE = \"_isCallBackServiceInvoke\";\r\n+    private static DubboProtocol INSTANCE;\r\n+\r\n+    /**\r\n+     * <host:port,Exchanger>\r\n+     */\r\n+    private final Map<String, List<ReferenceCountExchangeClient>> referenceClientMap = new ConcurrentHashMap<>();\r\n+    private final ConcurrentMap<String, Object> locks = new ConcurrentHashMap<>();\r\n+    private final Set<String> optimizers = new ConcurrentHashSet<>();\r\n+\r\n+    private ExchangeHandler requestHandler = new ExchangeHandlerAdapter() {\r\n+\r\n+        @Override\r\n+        public CompletableFuture<Object> reply(ExchangeChannel channel, Object message) throws RemotingException {\r\n+\r\n+            if (!(message instanceof Invocation)) {\r\n+                throw new RemotingException(channel, \"Unsupported request: \"\r\n+                        + (message == null ? null : (message.getClass().getName() + \": \" + message))\r\n+                        + \", channel: consumer: \" + channel.getRemoteAddress() + \" --> provider: \" + channel.getLocalAddress());\r\n+            }\r\n+\r\n+            Invocation inv = (Invocation) message;\r\n+            Invoker<?> invoker = getInvoker(channel, inv);\r\n+            // need to consider backward-compatibility if it's a callback\r\n+            if (Boolean.TRUE.toString().equals(inv.getObjectAttachments().get(IS_CALLBACK_SERVICE_INVOKE))) {\r\n+                String methodsStr = invoker.getUrl().getParameters().get(\"methods\");\r\n+                boolean hasMethod = false;\r\n+                if (methodsStr == null || !methodsStr.contains(\",\")) {\r\n+                    hasMethod = inv.getMethodName().equals(methodsStr);\r\n+                } else {\r\n+                    String[] methods = methodsStr.split(\",\");\r\n+                    for (String method : methods) {\r\n+                        if (inv.getMethodName().equals(method)) {\r\n+                            hasMethod = true;\r\n+                            break;\r\n+                        }\r\n+                    }\r\n+                }\r\n+                if (!hasMethod) {\r\n+                    logger.warn(new IllegalStateException(\"The methodName \" + inv.getMethodName()\r\n+                            + \" not found in callback service interface ,invoke will be ignored.\"\r\n+                            + \" please update the api interface. url is:\"\r\n+                            + invoker.getUrl()) + \" ,invocation is :\" + inv);\r\n+                    return null;\r\n+                }\r\n+            }\r\n+            RpcContext.getContext().setRemoteAddress(channel.getRemoteAddress());\r\n+            Result result = invoker.invoke(inv);\r\n+            return result.thenApply(Function.identity());\r\n+        }\r\n+\r\n+        @Override\r\n+        public void received(Channel channel, Object message) throws RemotingException {\r\n+            if (message instanceof Invocation) {\r\n+                reply((ExchangeChannel) channel, message);\r\n+\r\n+            } else {\r\n+                super.received(channel, message);\r\n+            }\r\n+        }\r\n+\r\n+        @Override\r\n+        public void connected(Channel channel) throws RemotingException {\r\n+            invoke(channel, ON_CONNECT_KEY);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void disconnected(Channel channel) throws RemotingException {\r\n+            if (logger.isDebugEnabled()) {\r\n+                logger.debug(\"disconnected from \" + channel.getRemoteAddress() + \",url:\" + channel.getUrl());\r\n+            }\r\n+            invoke(channel, ON_DISCONNECT_KEY);\r\n+        }\r\n+\r\n+        private void invoke(Channel channel, String methodKey) {\r\n+            Invocation invocation = createInvocation(channel, channel.getUrl(), methodKey);\r\n+            if (invocation != null) {\r\n+                try {\r\n+                    received(channel, invocation);\r\n+                } catch (Throwable t) {\r\n+                    logger.warn(\"Failed to invoke event method \" + invocation.getMethodName() + \"(), cause: \" + t.getMessage(), t);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        /**\r\n+         * FIXME channel.getUrl() always binds to a fixed service, and this service is random.\r\n+         * we can choose to use a common service to carry onConnect event if there's no easy way to get the specific\r\n+         * service this connection is binding to.\r\n+         * @param channel\r\n+         * @param url\r\n+         * @param methodKey\r\n+         * @return\r\n+         */\r\n+        private Invocation createInvocation(Channel channel, URL url, String methodKey) {\r\n+            String method = url.getParameter(methodKey);\r\n+            if (method == null || method.length() == 0) {\r\n+                return null;\r\n+            }\r\n+\r\n+            RpcInvocation invocation = new RpcInvocation(method, url.getParameter(INTERFACE_KEY), \"\", new Class<?>[0], new Object[0]);\r\n+            invocation.setAttachment(PATH_KEY, url.getPath());\r\n+            invocation.setAttachment(GROUP_KEY, url.getParameter(GROUP_KEY));\r\n+            invocation.setAttachment(INTERFACE_KEY, url.getParameter(INTERFACE_KEY));\r\n+            invocation.setAttachment(VERSION_KEY, url.getParameter(VERSION_KEY));\r\n+            if (url.getParameter(STUB_EVENT_KEY, false)) {\r\n+                invocation.setAttachment(STUB_EVENT_KEY, Boolean.TRUE.toString());\r\n+            }\r\n+\r\n+            return invocation;\r\n+        }\r\n+    };\r\n+\r\n+    public DubboProtocol() {\r\n+        INSTANCE = this;\r\n+    }\r\n+\r\n+    public static DubboProtocol getDubboProtocol() {\r\n+        if (INSTANCE == null) {\r\n+            // load\r\n+            ExtensionLoader.getExtensionLoader(Protocol.class).getExtension(DubboProtocol.NAME);\r\n+        }\r\n+\r\n+        return INSTANCE;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Collection<Exporter<?>> getExporters() {\r\n+        return Collections.unmodifiableCollection(exporterMap.values());\r\n+    }\r\n+\r\n+    private boolean isClientSide(Channel channel) {\r\n+        InetSocketAddress address = channel.getRemoteAddress();\r\n+        URL url = channel.getUrl();\r\n+        return url.getPort() == address.getPort() &&\r\n+                NetUtils.filterLocalHost(channel.getUrl().getIp())\r\n+                        .equals(NetUtils.filterLocalHost(address.getAddress().getHostAddress()));\r\n+    }\r\n+\r\n+    Invoker<?> getInvoker(Channel channel, Invocation inv) throws RemotingException {\r\n+        boolean isCallBackServiceInvoke = false;\r\n+        boolean isStubServiceInvoke = false;\r\n+        int port = channel.getLocalAddress().getPort();\r\n+        String path = (String) inv.getObjectAttachments().get(PATH_KEY);\r\n+\r\n+        // if it's callback service on client side\r\n+        isStubServiceInvoke = Boolean.TRUE.toString().equals(inv.getObjectAttachments().get(STUB_EVENT_KEY));\r\n+        if (isStubServiceInvoke) {\r\n+            port = channel.getRemoteAddress().getPort();\r\n+        }\r\n+\r\n+        //callback\r\n+        isCallBackServiceInvoke = isClientSide(channel) && !isStubServiceInvoke;\r\n+        if (isCallBackServiceInvoke) {\r\n+            path += \".\" + inv.getObjectAttachments().get(CALLBACK_SERVICE_KEY);\r\n+            inv.getObjectAttachments().put(IS_CALLBACK_SERVICE_INVOKE, Boolean.TRUE.toString());\r\n+        }\r\n+\r\n+        String serviceKey = serviceKey(\r\n+                port,\r\n+                path,\r\n+                (String) inv.getObjectAttachments().get(VERSION_KEY),\r\n+                (String) inv.getObjectAttachments().get(GROUP_KEY)\r\n+        );\r\n+        DubboExporter<?> exporter = (DubboExporter<?>) exporterMap.get(serviceKey);\r\n+\r\n+        if (exporter == null) {\r\n+            throw new RemotingException(channel, \"Not found exported service: \" + serviceKey + \" in \" + exporterMap.keySet() + \", may be version or group mismatch \" +\r\n+                    \", channel: consumer: \" + channel.getRemoteAddress() + \" --> provider: \" + channel.getLocalAddress() + \", message:\" + getInvocationWithoutData(inv));\r\n+        }\r\n+\r\n+        return exporter.getInvoker();\r\n+    }\r\n+\r\n+    public Collection<Invoker<?>> getInvokers() {\r\n+        return Collections.unmodifiableCollection(invokers);\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getDefaultPort() {\r\n+        return DEFAULT_PORT;\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> Exporter<T> export(Invoker<T> invoker) throws RpcException {\r\n+        URL url = invoker.getUrl();\r\n+\r\n+        // export service.\r\n+        String key = serviceKey(url);\r\n+        DubboExporter<T> exporter = new DubboExporter<T>(invoker, key, exporterMap);\r\n+        exporterMap.put(key, exporter);\r\n+\r\n+        //export an stub service for dispatching event\r\n+        Boolean isStubSupportEvent = url.getParameter(STUB_EVENT_KEY, DEFAULT_STUB_EVENT);\r\n+        Boolean isCallbackservice = url.getParameter(IS_CALLBACK_SERVICE, false);\r\n+        if (isStubSupportEvent && !isCallbackservice) {\r\n+            String stubServiceMethods = url.getParameter(STUB_EVENT_METHODS_KEY);\r\n+            if (stubServiceMethods == null || stubServiceMethods.length() == 0) {\r\n+                if (logger.isWarnEnabled()) {\r\n+                    logger.warn(new IllegalStateException(\"consumer [\" + url.getParameter(INTERFACE_KEY) +\r\n+                            \"], has set stubproxy support event ,but no stub methods founded.\"));\r\n+                }\r\n+\r\n+            }\r\n+        }\r\n+\r\n+        openServer(url);\r\n+        optimizeSerialization(url);\r\n+\r\n+        return exporter;\r\n+    }\r\n+\r\n+    private void openServer(URL url) {\r\n+        // find server.\r\n+        String key = url.getAddress();\r\n+        //client can export a service which's only for server to invoke\r\n+        boolean isServer = url.getParameter(IS_SERVER_KEY, true);\r\n+        if (isServer) {\r\n+            ProtocolServer server = serverMap.get(key);\r\n+            if (server == null) {\r\n+                synchronized (this) {\r\n+                    server = serverMap.get(key);\r\n+                    if (server == null) {\r\n+                        serverMap.put(key, createServer(url));\r\n+                    }\r\n+                }\r\n+            } else {\r\n+                // server supports reset, use together with override\r\n+                server.reset(url);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private ProtocolServer createServer(URL url) {\r\n+        url = URLBuilder.from(url)\r\n+                // send readonly event when server closes, it's enabled by default\r\n+                .addParameterIfAbsent(CHANNEL_READONLYEVENT_SENT_KEY, Boolean.TRUE.toString())\r\n+                // enable heartbeat by default\r\n+                .addParameterIfAbsent(HEARTBEAT_KEY, String.valueOf(DEFAULT_HEARTBEAT))\r\n+                .addParameter(CODEC_KEY, DubboCodec.NAME)\r\n+                .build();\r\n+        String str = url.getParameter(SERVER_KEY, DEFAULT_REMOTING_SERVER);\r\n+\r\n+        if (str != null && str.length() > 0 && !ExtensionLoader.getExtensionLoader(Transporter.class).hasExtension(str)) {\r\n+            throw new RpcException(\"Unsupported server type: \" + str + \", url: \" + url);\r\n+        }\r\n+\r\n+        ExchangeServer server;\r\n+        try {\r\n+            server = Exchangers.bind(url, requestHandler);\r\n+        } catch (RemotingException e) {\r\n+            throw new RpcException(\"Fail to start server(url: \" + url + \") \" + e.getMessage(), e);\r\n+        }\r\n+\r\n+        str = url.getParameter(CLIENT_KEY);\r\n+        if (str != null && str.length() > 0) {\r\n+            Set<String> supportedTypes = ExtensionLoader.getExtensionLoader(Transporter.class).getSupportedExtensions();\r\n+            if (!supportedTypes.contains(str)) {\r\n+                throw new RpcException(\"Unsupported client type: \" + str);\r\n+            }\r\n+        }\r\n+\r\n+        return new DubboProtocolServer(server);\r\n+    }\r\n+\r\n+    private void optimizeSerialization(URL url) throws RpcException {\r\n+        String className = url.getParameter(OPTIMIZER_KEY, \"\");\r\n+        if (StringUtils.isEmpty(className) || optimizers.contains(className)) {\r\n+            return;\r\n+        }\r\n+\r\n+        logger.info(\"Optimizing the serialization process for Kryo, FST, etc...\");\r\n+\r\n+        try {\r\n+            Class clazz = Thread.currentThread().getContextClassLoader().loadClass(className);\r\n+            if (!SerializationOptimizer.class.isAssignableFrom(clazz)) {\r\n+                throw new RpcException(\"The serialization optimizer \" + className + \" isn't an instance of \" + SerializationOptimizer.class.getName());\r\n+            }\r\n+\r\n+            SerializationOptimizer optimizer = (SerializationOptimizer) clazz.newInstance();\r\n+\r\n+            if (optimizer.getSerializableClasses() == null) {\r\n+                return;\r\n+            }\r\n+\r\n+            for (Class c : optimizer.getSerializableClasses()) {\r\n+                SerializableClassRegistry.registerClass(c);\r\n+            }\r\n+\r\n+            optimizers.add(className);\r\n+\r\n+        } catch (ClassNotFoundException e) {\r\n+            throw new RpcException(\"Cannot find the serialization optimizer class: \" + className, e);\r\n+\r\n+        } catch (InstantiationException | IllegalAccessException e) {\r\n+            throw new RpcException(\"Cannot instantiate the serialization optimizer class: \" + className, e);\r\n+\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> Invoker<T> protocolBindingRefer(Class<T> serviceType, URL url) throws RpcException {\r\n+        optimizeSerialization(url);\r\n+\r\n+        // create rpc invoker.\r\n+        DubboInvoker<T> invoker = new DubboInvoker<T>(serviceType, url, getClients(url), invokers);\r\n+        invokers.add(invoker);\r\n+\r\n+        return invoker;\r\n+    }\r\n+\r\n+    private ExchangeClient[] getClients(URL url) {\r\n+        // whether to share connection\r\n+\r\n+        boolean useShareConnect = false;\r\n+\r\n+        int connections = url.getParameter(CONNECTIONS_KEY, 0);\r\n+        List<ReferenceCountExchangeClient> shareClients = null;\r\n+        // if not configured, connection is shared, otherwise, one connection for one service\r\n+        if (connections == 0) {\r\n+            useShareConnect = true;\r\n+\r\n+            /*\r\n+             * The xml configuration should have a higher priority than properties.\r\n+             */\r\n+            String shareConnectionsStr = url.getParameter(SHARE_CONNECTIONS_KEY, (String) null);\r\n+            connections = Integer.parseInt(StringUtils.isBlank(shareConnectionsStr) ? ConfigUtils.getProperty(SHARE_CONNECTIONS_KEY,\r\n+                    DEFAULT_SHARE_CONNECTIONS) : shareConnectionsStr);\r\n+            shareClients = getSharedClient(url, connections);\r\n+        }\r\n+\r\n+        ExchangeClient[] clients = new ExchangeClient[connections];\r\n+        for (int i = 0; i < clients.length; i++) {\r\n+            if (useShareConnect) {\r\n+                clients[i] = shareClients.get(i);\r\n+\r\n+            } else {\r\n+                clients[i] = initClient(url);\r\n+            }\r\n+        }\r\n+\r\n+        return clients;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get shared connection\r\n+     *\r\n+     * @param url\r\n+     * @param connectNum connectNum must be greater than or equal to 1\r\n+     */\r\n+    private List<ReferenceCountExchangeClient> getSharedClient(URL url, int connectNum) {\r\n+        String key = url.getAddress();\r\n+        List<ReferenceCountExchangeClient> clients = referenceClientMap.get(key);\r\n+\r\n+        if (checkClientCanUse(clients)) {\r\n+            batchClientRefIncr(clients);\r\n+            return clients;\r\n+        }\r\n+\r\n+        locks.putIfAbsent(key, new Object());\r\n+        synchronized (locks.get(key)) {\r\n+            clients = referenceClientMap.get(key);\r\n+            // double check\r\n+            if (checkClientCanUse(clients)) {\r\n+                batchClientRefIncr(clients);\r\n+                return clients;\r\n+            }\r\n+\r\n+            // connectNum must be greater than or equal to 1\r\n+            connectNum = Math.max(connectNum, 1);\r\n+\r\n+            // If the clients is empty, then the first initialization is\r\n+            if (CollectionUtils.isEmpty(clients)) {\r\n+                clients = buildReferenceCountExchangeClientList(url, connectNum);\r\n+                referenceClientMap.put(key, clients);\r\n+\r\n+            } else {\r\n+                for (int i = 0; i < clients.size(); i++) {\r\n+                    ReferenceCountExchangeClient referenceCountExchangeClient = clients.get(i);\r\n+                    // If there is a client in the list that is no longer available, create a new one to replace him.\r\n+                    if (referenceCountExchangeClient == null || referenceCountExchangeClient.isClosed()) {\r\n+                        clients.set(i, buildReferenceCountExchangeClient(url));\r\n+                        continue;\r\n+                    }\r\n+\r\n+                    referenceCountExchangeClient.incrementAndGetCount();\r\n+                }\r\n+            }\r\n+\r\n+            /*\r\n+             * I understand that the purpose of the remove operation here is to avoid the expired url key\r\n+             * always occupying this memory space.\r\n+             * But \"locks.remove(key);\" can lead to \"synchronized (locks.get(key)) {\" NPE, considering that the key of locks is \"IP + port\",\r\n+             * it will not lead to the expansion of \"locks\" in theory, so I will annotate it here.\r\n+             */\r\n+//            locks.remove(key);\r\n+\r\n+            return clients;\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Check if the client list is all available\r\n+     *\r\n+     * @param referenceCountExchangeClients\r\n+     * @return true-available\uff0cfalse-unavailable\r\n+     */\r\n+    private boolean checkClientCanUse(List<ReferenceCountExchangeClient> referenceCountExchangeClients) {\r\n+        if (CollectionUtils.isEmpty(referenceCountExchangeClients)) {\r\n+            return false;\r\n+        }\r\n+\r\n+        for (ReferenceCountExchangeClient referenceCountExchangeClient : referenceCountExchangeClients) {\r\n+            // As long as one client is not available, you need to replace the unavailable client with the available one.\r\n+            if (referenceCountExchangeClient == null || referenceCountExchangeClient.getCount() <= 0 || referenceCountExchangeClient.isClosed()) {\r\n+                return false;\r\n+            }\r\n+        }\r\n+\r\n+        return true;\r\n+    }\r\n+\r\n+    /**\r\n+     * Increase the reference Count if we create new invoker shares same connection, the connection will be closed without any reference.\r\n+     *\r\n+     * @param referenceCountExchangeClients\r\n+     */\r\n+    private void batchClientRefIncr(List<ReferenceCountExchangeClient> referenceCountExchangeClients) {\r\n+        if (CollectionUtils.isEmpty(referenceCountExchangeClients)) {\r\n+            return;\r\n+        }\r\n+\r\n+        for (ReferenceCountExchangeClient referenceCountExchangeClient : referenceCountExchangeClients) {\r\n+            if (referenceCountExchangeClient != null) {\r\n+                referenceCountExchangeClient.incrementAndGetCount();\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Bulk build client\r\n+     *\r\n+     * @param url\r\n+     * @param connectNum\r\n+     * @return\r\n+     */\r\n+    private List<ReferenceCountExchangeClient> buildReferenceCountExchangeClientList(URL url, int connectNum) {\r\n+        List<ReferenceCountExchangeClient> clients = new ArrayList<>();\r\n+\r\n+        for (int i = 0; i < connectNum; i++) {\r\n+            clients.add(buildReferenceCountExchangeClient(url));\r\n+        }\r\n+\r\n+        return clients;\r\n+    }\r\n+\r\n+    /**\r\n+     * Build a single client\r\n+     *\r\n+     * @param url\r\n+     * @return\r\n+     */\r\n+    private ReferenceCountExchangeClient buildReferenceCountExchangeClient(URL url) {\r\n+        ExchangeClient exchangeClient = initClient(url);\r\n+\r\n+        return new ReferenceCountExchangeClient(exchangeClient);\r\n+    }\r\n+\r\n+    /**\r\n+     * Create new connection\r\n+     *\r\n+     * @param url\r\n+     */\r\n+    private ExchangeClient initClient(URL url) {\r\n+\r\n+        // client type setting.\r\n+        String str = url.getParameter(CLIENT_KEY, url.getParameter(SERVER_KEY, DEFAULT_REMOTING_CLIENT));\r\n+\r\n+        url = url.addParameter(CODEC_KEY, DubboCodec.NAME);\r\n+        // enable heartbeat by default\r\n+        url = url.addParameterIfAbsent(HEARTBEAT_KEY, String.valueOf(DEFAULT_HEARTBEAT));\r\n+\r\n+        // BIO is not allowed since it has severe performance issue.\r\n+        if (str != null && str.length() > 0 && !ExtensionLoader.getExtensionLoader(Transporter.class).hasExtension(str)) {\r\n+            throw new RpcException(\"Unsupported client type: \" + str + \",\" +\r\n+                    \" supported client type is \" + StringUtils.join(ExtensionLoader.getExtensionLoader(Transporter.class).getSupportedExtensions(), \" \"));\r\n+        }\r\n+\r\n+        ExchangeClient client;\r\n+        try {\r\n+            // connection should be lazy\r\n+            if (url.getParameter(LAZY_CONNECT_KEY, false)) {\r\n+                client = new LazyConnectExchangeClient(url, requestHandler);\r\n+\r\n+            } else {\r\n+                client = Exchangers.connect(url, requestHandler);\r\n+            }\r\n+\r\n+        } catch (RemotingException e) {\r\n+            throw new RpcException(\"Fail to create remoting client for service(\" + url + \"): \" + e.getMessage(), e);\r\n+        }\r\n+\r\n+        return client;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        for (String key : new ArrayList<>(serverMap.keySet())) {\r\n+            ProtocolServer protocolServer = serverMap.remove(key);\r\n+\r\n+            if (protocolServer == null) {\r\n+                continue;\r\n+            }\r\n+\r\n+            RemotingServer server = protocolServer.getRemotingServer();\r\n+\r\n+            try {\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(\"Close dubbo server: \" + server.getLocalAddress());\r\n+                }\r\n+\r\n+                server.close(ConfigurationUtils.getServerShutdownTimeout());\r\n+\r\n+            } catch (Throwable t) {\r\n+                logger.warn(t.getMessage(), t);\r\n+            }\r\n+        }\r\n+\r\n+        for (String key : new ArrayList<>(referenceClientMap.keySet())) {\r\n+            List<ReferenceCountExchangeClient> clients = referenceClientMap.remove(key);\r\n+\r\n+            if (CollectionUtils.isEmpty(clients)) {\r\n+                continue;\r\n+            }\r\n+\r\n+            for (ReferenceCountExchangeClient client : clients) {\r\n+                closeReferenceCountExchangeClient(client);\r\n+            }\r\n+        }\r\n+\r\n+        super.destroy();\r\n+    }\r\n+\r\n+    /**\r\n+     * close ReferenceCountExchangeClient\r\n+     *\r\n+     * @param client\r\n+     */\r\n+    private void closeReferenceCountExchangeClient(ReferenceCountExchangeClient client) {\r\n+        if (client == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        try {\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"Close dubbo connect: \" + client.getLocalAddress() + \"-->\" + client.getRemoteAddress());\r\n+            }\r\n+\r\n+            client.close(ConfigurationUtils.getServerShutdownTimeout());\r\n+\r\n+            // TODO\r\n+            /*\r\n+             * At this time, ReferenceCountExchangeClient#client has been replaced with LazyConnectExchangeClient.\r\n+             * Do you need to call client.close again to ensure that LazyConnectExchangeClient is also closed?\r\n+             */\r\n+\r\n+        } catch (Throwable t) {\r\n+            logger.warn(t.getMessage(), t);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * only log body in debugger mode for size & security consideration.\r\n+     *\r\n+     * @param invocation\r\n+     * @return\r\n+     */\r\n+    private Invocation getInvocationWithoutData(Invocation invocation) {\r\n+        if (logger.isDebugEnabled()) {\r\n+            return invocation;\r\n+        }\r\n+        if (invocation instanceof RpcInvocation) {\r\n+            RpcInvocation rpcInvocation = (RpcInvocation) invocation;\r\n+            rpcInvocation.setArguments(null);\r\n+            return rpcInvocation;\r\n+        }\r\n+        return invocation;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/DubboProtocolServer.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/DubboProtocolServer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,62 +1,62 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.dubbo;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.RemotingServer;\n-import org.apache.dubbo.rpc.ProtocolServer;\n-\n-public class DubboProtocolServer implements ProtocolServer {\n-\n-    private RemotingServer server;\n-    private String address;\n-\n-    public DubboProtocolServer(RemotingServer server) {\n-        this.server = server;\n-    }\n-\n-    @Override\n-    public RemotingServer getRemotingServer() {\n-        return server;\n-    }\n-\n-    @Override\n-    public String getAddress() {\n-        return StringUtils.isNotEmpty(address) ? address : server.getUrl().getAddress();\n-    }\n-\n-    @Override\n-    public void setAddress(String address) {\n-        this.address = address;\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return server.getUrl();\n-    }\n-\n-    @Override\n-    public void reset(URL url) {\n-        server.reset(url);\n-    }\n-\n-    @Override\n-    public void close() {\n-        server.close();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.dubbo;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.RemotingServer;\r\n+import org.apache.dubbo.rpc.ProtocolServer;\r\n+\r\n+public class DubboProtocolServer implements ProtocolServer {\r\n+\r\n+    private RemotingServer server;\r\n+    private String address;\r\n+\r\n+    public DubboProtocolServer(RemotingServer server) {\r\n+        this.server = server;\r\n+    }\r\n+\r\n+    @Override\r\n+    public RemotingServer getRemotingServer() {\r\n+        return server;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getAddress() {\r\n+        return StringUtils.isNotEmpty(address) ? address : server.getUrl().getAddress();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setAddress(String address) {\r\n+        this.address = address;\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return server.getUrl();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void reset(URL url) {\r\n+        server.reset(url);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close() {\r\n+        server.close();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/LazyConnectExchangeClient.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/LazyConnectExchangeClient.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,269 +1,269 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.dubbo;\n-\n-import org.apache.dubbo.common.Parameters;\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.exchange.ExchangeClient;\n-import org.apache.dubbo.remoting.exchange.ExchangeHandler;\n-import org.apache.dubbo.remoting.exchange.Exchangers;\n-\n-import java.net.InetSocketAddress;\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.atomic.AtomicLong;\n-import java.util.concurrent.locks.Lock;\n-import java.util.concurrent.locks.ReentrantLock;\n-\n-import static org.apache.dubbo.remoting.Constants.SEND_RECONNECT_KEY;\n-import static org.apache.dubbo.rpc.protocol.dubbo.Constants.DEFAULT_LAZY_CONNECT_INITIAL_STATE;\n-import static org.apache.dubbo.rpc.protocol.dubbo.Constants.LAZY_CONNECT_INITIAL_STATE_KEY;\n-\n-/**\n- * dubbo protocol support class.\n- */\n-@SuppressWarnings(\"deprecation\")\n-final class LazyConnectExchangeClient implements ExchangeClient {\n-\n-    /**\n-     * when this warning rises from invocation, program probably have bug.\n-     */\n-    protected static final String REQUEST_WITH_WARNING_KEY = \"lazyclient_request_with_warning\";\n-    private final static Logger logger = LoggerFactory.getLogger(LazyConnectExchangeClient.class);\n-    protected final boolean requestWithWarning;\n-    private final URL url;\n-    private final ExchangeHandler requestHandler;\n-    private final Lock connectLock = new ReentrantLock();\n-    private final int warning_period = 5000;\n-    /**\n-     * lazy connect, initial state for connection\n-     */\n-    private final boolean initialState;\n-    private volatile ExchangeClient client;\n-    private AtomicLong warningcount = new AtomicLong(0);\n-\n-    public LazyConnectExchangeClient(URL url, ExchangeHandler requestHandler) {\n-        // lazy connect, need set send.reconnect = true, to avoid channel bad status.\n-        this.url = url.addParameter(SEND_RECONNECT_KEY, Boolean.TRUE.toString());\n-        this.requestHandler = requestHandler;\n-        this.initialState = url.getParameter(LAZY_CONNECT_INITIAL_STATE_KEY, DEFAULT_LAZY_CONNECT_INITIAL_STATE);\n-        this.requestWithWarning = url.getParameter(REQUEST_WITH_WARNING_KEY, false);\n-    }\n-\n-    private void initClient() throws RemotingException {\n-        if (client != null) {\n-            return;\n-        }\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"Lazy connect to \" + url);\n-        }\n-        connectLock.lock();\n-        try {\n-            if (client != null) {\n-                return;\n-            }\n-            this.client = Exchangers.connect(url, requestHandler);\n-        } finally {\n-            connectLock.unlock();\n-        }\n-    }\n-\n-    @Override\n-    public CompletableFuture<Object> request(Object request) throws RemotingException {\n-        warning();\n-        initClient();\n-        return client.request(request);\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return url;\n-    }\n-\n-    @Override\n-    public InetSocketAddress getRemoteAddress() {\n-        if (client == null) {\n-            return InetSocketAddress.createUnresolved(url.getHost(), url.getPort());\n-        } else {\n-            return client.getRemoteAddress();\n-        }\n-    }\n-\n-    @Override\n-    public CompletableFuture<Object> request(Object request, int timeout) throws RemotingException {\n-        warning();\n-        initClient();\n-        return client.request(request, timeout);\n-    }\n-\n-    @Override\n-    public CompletableFuture<Object> request(Object request, ExecutorService executor) throws RemotingException {\n-        warning();\n-        initClient();\n-        return client.request(request, executor);\n-    }\n-\n-    @Override\n-    public CompletableFuture<Object> request(Object request, int timeout, ExecutorService executor) throws RemotingException {\n-        warning();\n-        initClient();\n-        return client.request(request, timeout, executor);\n-    }\n-\n-    /**\n-     * If {@link #REQUEST_WITH_WARNING_KEY} is configured, then warn once every 5000 invocations.\n-     */\n-    private void warning() {\n-        if (requestWithWarning) {\n-            if (warningcount.get() % warning_period == 0) {\n-                logger.warn(url.getAddress() + \" \" + url.getServiceKey() + \" safe guard client , should not be called ,must have a bug.\");\n-            }\n-            warningcount.incrementAndGet();\n-        }\n-    }\n-\n-    @Override\n-    public ChannelHandler getChannelHandler() {\n-        checkClient();\n-        return client.getChannelHandler();\n-    }\n-\n-    @Override\n-    public boolean isConnected() {\n-        if (client == null) {\n-            return initialState;\n-        } else {\n-            return client.isConnected();\n-        }\n-    }\n-\n-    @Override\n-    public InetSocketAddress getLocalAddress() {\n-        if (client == null) {\n-            return InetSocketAddress.createUnresolved(NetUtils.getLocalHost(), 0);\n-        } else {\n-            return client.getLocalAddress();\n-        }\n-    }\n-\n-    @Override\n-    public ExchangeHandler getExchangeHandler() {\n-        return requestHandler;\n-    }\n-\n-    @Override\n-    public void send(Object message) throws RemotingException {\n-        initClient();\n-        client.send(message);\n-    }\n-\n-    @Override\n-    public void send(Object message, boolean sent) throws RemotingException {\n-        initClient();\n-        client.send(message, sent);\n-    }\n-\n-    @Override\n-    public boolean isClosed() {\n-        if (client != null) {\n-            return client.isClosed();\n-        } else {\n-            return false;\n-        }\n-    }\n-\n-    @Override\n-    public void close() {\n-        if (client != null) {\n-            client.close();\n-        }\n-    }\n-\n-    @Override\n-    public void close(int timeout) {\n-        if (client != null) {\n-            client.close(timeout);\n-        }\n-    }\n-\n-    @Override\n-    public void startClose() {\n-        if (client != null) {\n-            client.startClose();\n-        }\n-    }\n-\n-    @Override\n-    public void reset(URL url) {\n-        checkClient();\n-        client.reset(url);\n-    }\n-\n-    @Override\n-    @Deprecated\n-    public void reset(Parameters parameters) {\n-        reset(getUrl().addParameters(parameters.getParameters()));\n-    }\n-\n-    @Override\n-    public void reconnect() throws RemotingException {\n-        checkClient();\n-        client.reconnect();\n-    }\n-\n-    @Override\n-    public Object getAttribute(String key) {\n-        if (client == null) {\n-            return null;\n-        } else {\n-            return client.getAttribute(key);\n-        }\n-    }\n-\n-    @Override\n-    public void setAttribute(String key, Object value) {\n-        checkClient();\n-        client.setAttribute(key, value);\n-    }\n-\n-    @Override\n-    public void removeAttribute(String key) {\n-        checkClient();\n-        client.removeAttribute(key);\n-    }\n-\n-    @Override\n-    public boolean hasAttribute(String key) {\n-        if (client == null) {\n-            return false;\n-        } else {\n-            return client.hasAttribute(key);\n-        }\n-    }\n-\n-    private void checkClient() {\n-        if (client == null) {\n-            throw new IllegalStateException(\n-                    \"LazyConnectExchangeClient state error. the client has not be init .url:\" + url);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.dubbo;\r\n+\r\n+import org.apache.dubbo.common.Parameters;\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.exchange.ExchangeClient;\r\n+import org.apache.dubbo.remoting.exchange.ExchangeHandler;\r\n+import org.apache.dubbo.remoting.exchange.Exchangers;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.atomic.AtomicLong;\r\n+import java.util.concurrent.locks.Lock;\r\n+import java.util.concurrent.locks.ReentrantLock;\r\n+\r\n+import static org.apache.dubbo.remoting.Constants.SEND_RECONNECT_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.Constants.DEFAULT_LAZY_CONNECT_INITIAL_STATE;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.Constants.LAZY_CONNECT_INITIAL_STATE_KEY;\r\n+\r\n+/**\r\n+ * dubbo protocol support class.\r\n+ */\r\n+@SuppressWarnings(\"deprecation\")\r\n+final class LazyConnectExchangeClient implements ExchangeClient {\r\n+\r\n+    /**\r\n+     * when this warning rises from invocation, program probably have bug.\r\n+     */\r\n+    protected static final String REQUEST_WITH_WARNING_KEY = \"lazyclient_request_with_warning\";\r\n+    private final static Logger logger = LoggerFactory.getLogger(LazyConnectExchangeClient.class);\r\n+    protected final boolean requestWithWarning;\r\n+    private final URL url;\r\n+    private final ExchangeHandler requestHandler;\r\n+    private final Lock connectLock = new ReentrantLock();\r\n+    private final int warning_period = 5000;\r\n+    /**\r\n+     * lazy connect, initial state for connection\r\n+     */\r\n+    private final boolean initialState;\r\n+    private volatile ExchangeClient client;\r\n+    private AtomicLong warningcount = new AtomicLong(0);\r\n+\r\n+    public LazyConnectExchangeClient(URL url, ExchangeHandler requestHandler) {\r\n+        // lazy connect, need set send.reconnect = true, to avoid channel bad status.\r\n+        this.url = url.addParameter(SEND_RECONNECT_KEY, Boolean.TRUE.toString());\r\n+        this.requestHandler = requestHandler;\r\n+        this.initialState = url.getParameter(LAZY_CONNECT_INITIAL_STATE_KEY, DEFAULT_LAZY_CONNECT_INITIAL_STATE);\r\n+        this.requestWithWarning = url.getParameter(REQUEST_WITH_WARNING_KEY, false);\r\n+    }\r\n+\r\n+    private void initClient() throws RemotingException {\r\n+        if (client != null) {\r\n+            return;\r\n+        }\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"Lazy connect to \" + url);\r\n+        }\r\n+        connectLock.lock();\r\n+        try {\r\n+            if (client != null) {\r\n+                return;\r\n+            }\r\n+            this.client = Exchangers.connect(url, requestHandler);\r\n+        } finally {\r\n+            connectLock.unlock();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public CompletableFuture<Object> request(Object request) throws RemotingException {\r\n+        warning();\r\n+        initClient();\r\n+        return client.request(request);\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return url;\r\n+    }\r\n+\r\n+    @Override\r\n+    public InetSocketAddress getRemoteAddress() {\r\n+        if (client == null) {\r\n+            return InetSocketAddress.createUnresolved(url.getHost(), url.getPort());\r\n+        } else {\r\n+            return client.getRemoteAddress();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public CompletableFuture<Object> request(Object request, int timeout) throws RemotingException {\r\n+        warning();\r\n+        initClient();\r\n+        return client.request(request, timeout);\r\n+    }\r\n+\r\n+    @Override\r\n+    public CompletableFuture<Object> request(Object request, ExecutorService executor) throws RemotingException {\r\n+        warning();\r\n+        initClient();\r\n+        return client.request(request, executor);\r\n+    }\r\n+\r\n+    @Override\r\n+    public CompletableFuture<Object> request(Object request, int timeout, ExecutorService executor) throws RemotingException {\r\n+        warning();\r\n+        initClient();\r\n+        return client.request(request, timeout, executor);\r\n+    }\r\n+\r\n+    /**\r\n+     * If {@link #REQUEST_WITH_WARNING_KEY} is configured, then warn once every 5000 invocations.\r\n+     */\r\n+    private void warning() {\r\n+        if (requestWithWarning) {\r\n+            if (warningcount.get() % warning_period == 0) {\r\n+                logger.warn(url.getAddress() + \" \" + url.getServiceKey() + \" safe guard client , should not be called ,must have a bug.\");\r\n+            }\r\n+            warningcount.incrementAndGet();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public ChannelHandler getChannelHandler() {\r\n+        checkClient();\r\n+        return client.getChannelHandler();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isConnected() {\r\n+        if (client == null) {\r\n+            return initialState;\r\n+        } else {\r\n+            return client.isConnected();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public InetSocketAddress getLocalAddress() {\r\n+        if (client == null) {\r\n+            return InetSocketAddress.createUnresolved(NetUtils.getLocalHost(), 0);\r\n+        } else {\r\n+            return client.getLocalAddress();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public ExchangeHandler getExchangeHandler() {\r\n+        return requestHandler;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void send(Object message) throws RemotingException {\r\n+        initClient();\r\n+        client.send(message);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void send(Object message, boolean sent) throws RemotingException {\r\n+        initClient();\r\n+        client.send(message, sent);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isClosed() {\r\n+        if (client != null) {\r\n+            return client.isClosed();\r\n+        } else {\r\n+            return false;\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close() {\r\n+        if (client != null) {\r\n+            client.close();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close(int timeout) {\r\n+        if (client != null) {\r\n+            client.close(timeout);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void startClose() {\r\n+        if (client != null) {\r\n+            client.startClose();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void reset(URL url) {\r\n+        checkClient();\r\n+        client.reset(url);\r\n+    }\r\n+\r\n+    @Override\r\n+    @Deprecated\r\n+    public void reset(Parameters parameters) {\r\n+        reset(getUrl().addParameters(parameters.getParameters()));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void reconnect() throws RemotingException {\r\n+        checkClient();\r\n+        client.reconnect();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getAttribute(String key) {\r\n+        if (client == null) {\r\n+            return null;\r\n+        } else {\r\n+            return client.getAttribute(key);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setAttribute(String key, Object value) {\r\n+        checkClient();\r\n+        client.setAttribute(key, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeAttribute(String key) {\r\n+        checkClient();\r\n+        client.removeAttribute(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean hasAttribute(String key) {\r\n+        if (client == null) {\r\n+            return false;\r\n+        } else {\r\n+            return client.hasAttribute(key);\r\n+        }\r\n+    }\r\n+\r\n+    private void checkClient() {\r\n+        if (client == null) {\r\n+            throw new IllegalStateException(\r\n+                    \"LazyConnectExchangeClient state error. the client has not be init .url:\" + url);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/ReferenceCountExchangeClient.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/ReferenceCountExchangeClient.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,211 +1,211 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.dubbo;\n-\n-\n-import org.apache.dubbo.common.Parameters;\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.ChannelHandler;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.exchange.ExchangeClient;\n-import org.apache.dubbo.remoting.exchange.ExchangeHandler;\n-\n-import java.net.InetSocketAddress;\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.atomic.AtomicInteger;\n-\n-import static org.apache.dubbo.remoting.Constants.SEND_RECONNECT_KEY;\n-import static org.apache.dubbo.rpc.protocol.dubbo.Constants.LAZY_CONNECT_INITIAL_STATE_KEY;\n-\n-/**\n- * dubbo protocol support class.\n- */\n-@SuppressWarnings(\"deprecation\")\n-final class ReferenceCountExchangeClient implements ExchangeClient {\n-\n-    private final URL url;\n-    private final AtomicInteger referenceCount = new AtomicInteger(0);\n-\n-    private ExchangeClient client;\n-\n-    public ReferenceCountExchangeClient(ExchangeClient client) {\n-        this.client = client;\n-        referenceCount.incrementAndGet();\n-        this.url = client.getUrl();\n-    }\n-\n-    @Override\n-    public void reset(URL url) {\n-        client.reset(url);\n-    }\n-\n-    @Override\n-    public CompletableFuture<Object> request(Object request) throws RemotingException {\n-        return client.request(request);\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return client.getUrl();\n-    }\n-\n-    @Override\n-    public InetSocketAddress getRemoteAddress() {\n-        return client.getRemoteAddress();\n-    }\n-\n-    @Override\n-    public ChannelHandler getChannelHandler() {\n-        return client.getChannelHandler();\n-    }\n-\n-    @Override\n-    public CompletableFuture<Object> request(Object request, int timeout) throws RemotingException {\n-        return client.request(request, timeout);\n-    }\n-\n-    @Override\n-    public CompletableFuture<Object> request(Object request, ExecutorService executor) throws RemotingException {\n-        return client.request(request, executor);\n-    }\n-\n-    @Override\n-    public CompletableFuture<Object> request(Object request, int timeout, ExecutorService executor) throws RemotingException {\n-        return client.request(request, timeout, executor);\n-    }\n-\n-    @Override\n-    public boolean isConnected() {\n-        return client.isConnected();\n-    }\n-\n-    @Override\n-    public void reconnect() throws RemotingException {\n-        client.reconnect();\n-    }\n-\n-    @Override\n-    public InetSocketAddress getLocalAddress() {\n-        return client.getLocalAddress();\n-    }\n-\n-    @Override\n-    public boolean hasAttribute(String key) {\n-        return client.hasAttribute(key);\n-    }\n-\n-    @Override\n-    public void reset(Parameters parameters) {\n-        client.reset(parameters);\n-    }\n-\n-    @Override\n-    public void send(Object message) throws RemotingException {\n-        client.send(message);\n-    }\n-\n-    @Override\n-    public ExchangeHandler getExchangeHandler() {\n-        return client.getExchangeHandler();\n-    }\n-\n-    @Override\n-    public Object getAttribute(String key) {\n-        return client.getAttribute(key);\n-    }\n-\n-    @Override\n-    public void send(Object message, boolean sent) throws RemotingException {\n-        client.send(message, sent);\n-    }\n-\n-    @Override\n-    public void setAttribute(String key, Object value) {\n-        client.setAttribute(key, value);\n-    }\n-\n-    @Override\n-    public void removeAttribute(String key) {\n-        client.removeAttribute(key);\n-    }\n-\n-    /**\n-     * close() is not idempotent any longer\n-     */\n-    @Override\n-    public void close() {\n-        close(0);\n-    }\n-\n-    @Override\n-    public void close(int timeout) {\n-        if (referenceCount.decrementAndGet() <= 0) {\n-            if (timeout == 0) {\n-                client.close();\n-\n-            } else {\n-                client.close(timeout);\n-            }\n-\n-            replaceWithLazyClient();\n-        }\n-    }\n-\n-    @Override\n-    public void startClose() {\n-        client.startClose();\n-    }\n-\n-    /**\n-     * when closing the client, the client needs to be set to LazyConnectExchangeClient, and if a new call is made,\n-     * the client will \"resurrect\".\n-     *\n-     * @return\n-     */\n-    private void replaceWithLazyClient() {\n-        // this is a defensive operation to avoid client is closed by accident, the initial state of the client is false\n-        URL lazyUrl = url.addParameter(LAZY_CONNECT_INITIAL_STATE_KEY, Boolean.TRUE)\n-                //.addParameter(RECONNECT_KEY, Boolean.FALSE)\n-                .addParameter(SEND_RECONNECT_KEY, Boolean.TRUE.toString())\n-                .addParameter(LazyConnectExchangeClient.REQUEST_WITH_WARNING_KEY, true);\n-\n-        /**\n-         * the order of judgment in the if statement cannot be changed.\n-         */\n-        if (!(client instanceof LazyConnectExchangeClient) || client.isClosed()) {\n-            client = new LazyConnectExchangeClient(lazyUrl, client.getExchangeHandler());\n-        }\n-    }\n-\n-    @Override\n-    public boolean isClosed() {\n-        return client.isClosed();\n-    }\n-\n-    /**\n-     * The reference count of current ExchangeClient, connection will be closed if all invokers destroyed.\n-     */\n-    public void incrementAndGetCount() {\n-        referenceCount.incrementAndGet();\n-    }\n-\n-    public int getCount() {\n-        return referenceCount.get();\n-    }\n-}\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.dubbo;\r\n+\r\n+\r\n+import org.apache.dubbo.common.Parameters;\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.ChannelHandler;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.exchange.ExchangeClient;\r\n+import org.apache.dubbo.remoting.exchange.ExchangeHandler;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.atomic.AtomicInteger;\r\n+\r\n+import static org.apache.dubbo.remoting.Constants.SEND_RECONNECT_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.Constants.LAZY_CONNECT_INITIAL_STATE_KEY;\r\n+\r\n+/**\r\n+ * dubbo protocol support class.\r\n+ */\r\n+@SuppressWarnings(\"deprecation\")\r\n+final class ReferenceCountExchangeClient implements ExchangeClient {\r\n+\r\n+    private final URL url;\r\n+    private final AtomicInteger referenceCount = new AtomicInteger(0);\r\n+\r\n+    private ExchangeClient client;\r\n+\r\n+    public ReferenceCountExchangeClient(ExchangeClient client) {\r\n+        this.client = client;\r\n+        referenceCount.incrementAndGet();\r\n+        this.url = client.getUrl();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void reset(URL url) {\r\n+        client.reset(url);\r\n+    }\r\n+\r\n+    @Override\r\n+    public CompletableFuture<Object> request(Object request) throws RemotingException {\r\n+        return client.request(request);\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return client.getUrl();\r\n+    }\r\n+\r\n+    @Override\r\n+    public InetSocketAddress getRemoteAddress() {\r\n+        return client.getRemoteAddress();\r\n+    }\r\n+\r\n+    @Override\r\n+    public ChannelHandler getChannelHandler() {\r\n+        return client.getChannelHandler();\r\n+    }\r\n+\r\n+    @Override\r\n+    public CompletableFuture<Object> request(Object request, int timeout) throws RemotingException {\r\n+        return client.request(request, timeout);\r\n+    }\r\n+\r\n+    @Override\r\n+    public CompletableFuture<Object> request(Object request, ExecutorService executor) throws RemotingException {\r\n+        return client.request(request, executor);\r\n+    }\r\n+\r\n+    @Override\r\n+    public CompletableFuture<Object> request(Object request, int timeout, ExecutorService executor) throws RemotingException {\r\n+        return client.request(request, timeout, executor);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isConnected() {\r\n+        return client.isConnected();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void reconnect() throws RemotingException {\r\n+        client.reconnect();\r\n+    }\r\n+\r\n+    @Override\r\n+    public InetSocketAddress getLocalAddress() {\r\n+        return client.getLocalAddress();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean hasAttribute(String key) {\r\n+        return client.hasAttribute(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void reset(Parameters parameters) {\r\n+        client.reset(parameters);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void send(Object message) throws RemotingException {\r\n+        client.send(message);\r\n+    }\r\n+\r\n+    @Override\r\n+    public ExchangeHandler getExchangeHandler() {\r\n+        return client.getExchangeHandler();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getAttribute(String key) {\r\n+        return client.getAttribute(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void send(Object message, boolean sent) throws RemotingException {\r\n+        client.send(message, sent);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setAttribute(String key, Object value) {\r\n+        client.setAttribute(key, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeAttribute(String key) {\r\n+        client.removeAttribute(key);\r\n+    }\r\n+\r\n+    /**\r\n+     * close() is not idempotent any longer\r\n+     */\r\n+    @Override\r\n+    public void close() {\r\n+        close(0);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close(int timeout) {\r\n+        if (referenceCount.decrementAndGet() <= 0) {\r\n+            if (timeout == 0) {\r\n+                client.close();\r\n+\r\n+            } else {\r\n+                client.close(timeout);\r\n+            }\r\n+\r\n+            replaceWithLazyClient();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void startClose() {\r\n+        client.startClose();\r\n+    }\r\n+\r\n+    /**\r\n+     * when closing the client, the client needs to be set to LazyConnectExchangeClient, and if a new call is made,\r\n+     * the client will \"resurrect\".\r\n+     *\r\n+     * @return\r\n+     */\r\n+    private void replaceWithLazyClient() {\r\n+        // this is a defensive operation to avoid client is closed by accident, the initial state of the client is false\r\n+        URL lazyUrl = url.addParameter(LAZY_CONNECT_INITIAL_STATE_KEY, Boolean.TRUE)\r\n+                //.addParameter(RECONNECT_KEY, Boolean.FALSE)\r\n+                .addParameter(SEND_RECONNECT_KEY, Boolean.TRUE.toString())\r\n+                .addParameter(LazyConnectExchangeClient.REQUEST_WITH_WARNING_KEY, true);\r\n+\r\n+        /**\r\n+         * the order of judgment in the if statement cannot be changed.\r\n+         */\r\n+        if (!(client instanceof LazyConnectExchangeClient) || client.isClosed()) {\r\n+            client = new LazyConnectExchangeClient(lazyUrl, client.getExchangeHandler());\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isClosed() {\r\n+        return client.isClosed();\r\n+    }\r\n+\r\n+    /**\r\n+     * The reference count of current ExchangeClient, connection will be closed if all invokers destroyed.\r\n+     */\r\n+    public void incrementAndGetCount() {\r\n+        referenceCount.incrementAndGet();\r\n+    }\r\n+\r\n+    public int getCount() {\r\n+        return referenceCount.get();\r\n+    }\r\n+}\r\n+\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/filter/FutureFilter.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/filter/FutureFilter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,203 +1,203 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.dubbo.filter;\n-\n-import org.apache.dubbo.common.constants.CommonConstants;\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.rpc.Filter;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.AsyncMethodInfo;\n-import org.apache.dubbo.rpc.model.ConsumerModel;\n-\n-import java.lang.reflect.InvocationTargetException;\n-import java.lang.reflect.Method;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE;\n-import static org.apache.dubbo.rpc.protocol.dubbo.Constants.ASYNC_METHOD_INFO;\n-\n-/**\n- * EventFilter\n- */\n-@Activate(group = CommonConstants.CONSUMER)\n-public class FutureFilter implements Filter, Filter.Listener {\n-\n-    protected static final Logger logger = LoggerFactory.getLogger(FutureFilter.class);\n-\n-    @Override\n-    public Result invoke(final Invoker<?> invoker, final Invocation invocation) throws RpcException {\n-        fireInvokeCallback(invoker, invocation);\n-        // need to configure if there's return value before the invocation in order to help invoker to judge if it's\n-        // necessary to return future.\n-        return invoker.invoke(invocation);\n-    }\n-\n-    @Override\n-    public void onResponse(Result result, Invoker<?> invoker, Invocation invocation) {\n-        if (result.hasException()) {\n-            fireThrowCallback(invoker, invocation, result.getException());\n-        } else {\n-            fireReturnCallback(invoker, invocation, result.getValue());\n-        }\n-    }\n-\n-    @Override\n-    public void onError(Throwable t, Invoker<?> invoker, Invocation invocation) {\n-        fireThrowCallback(invoker, invocation, t);\n-    }\n-\n-    private void fireInvokeCallback(final Invoker<?> invoker, final Invocation invocation) {\n-        final AsyncMethodInfo asyncMethodInfo = getAsyncMethodInfo(invoker, invocation);\n-        if (asyncMethodInfo == null) {\n-            return;\n-        }\n-        final Method onInvokeMethod = asyncMethodInfo.getOninvokeMethod();\n-        final Object onInvokeInst = asyncMethodInfo.getOninvokeInstance();\n-\n-        if (onInvokeMethod == null && onInvokeInst == null) {\n-            return;\n-        }\n-        if (onInvokeMethod == null || onInvokeInst == null) {\n-            throw new IllegalStateException(\"service:\" + invoker.getUrl().getServiceKey() + \" has a oninvoke callback config , but no such \" + (onInvokeMethod == null ? \"method\" : \"instance\") + \" found. url:\" + invoker.getUrl());\n-        }\n-\n-        ReflectUtils.makeAccessible(onInvokeMethod);\n-        Object[] params = invocation.getArguments();\n-        try {\n-            onInvokeMethod.invoke(onInvokeInst, params);\n-        } catch (InvocationTargetException e) {\n-            fireThrowCallback(invoker, invocation, e.getTargetException());\n-        } catch (Throwable e) {\n-            fireThrowCallback(invoker, invocation, e);\n-        }\n-    }\n-\n-    private void fireReturnCallback(final Invoker<?> invoker, final Invocation invocation, final Object result) {\n-        final AsyncMethodInfo asyncMethodInfo = getAsyncMethodInfo(invoker, invocation);\n-        if (asyncMethodInfo == null) {\n-            return;\n-        }\n-\n-        final Method onReturnMethod = asyncMethodInfo.getOnreturnMethod();\n-        final Object onReturnInst = asyncMethodInfo.getOnreturnInstance();\n-\n-        //not set onreturn callback\n-        if (onReturnMethod == null && onReturnInst == null) {\n-            return;\n-        }\n-\n-        if (onReturnMethod == null || onReturnInst == null) {\n-            throw new IllegalStateException(\"service:\" + invoker.getUrl().getServiceKey() + \" has a onreturn callback config , but no such \" + (onReturnMethod == null ? \"method\" : \"instance\") + \" found. url:\" + invoker.getUrl());\n-        }\n-        ReflectUtils.makeAccessible(onReturnMethod);\n-\n-        Object[] args = invocation.getArguments();\n-        Object[] params;\n-        Class<?>[] rParaTypes = onReturnMethod.getParameterTypes();\n-        if (rParaTypes.length > 1) {\n-            if (rParaTypes.length == 2 && rParaTypes[1].isAssignableFrom(Object[].class)) {\n-                params = new Object[2];\n-                params[0] = result;\n-                params[1] = args;\n-            } else {\n-                params = new Object[args.length + 1];\n-                params[0] = result;\n-                System.arraycopy(args, 0, params, 1, args.length);\n-            }\n-        } else {\n-            params = new Object[]{result};\n-        }\n-        try {\n-            onReturnMethod.invoke(onReturnInst, params);\n-        } catch (InvocationTargetException e) {\n-            fireThrowCallback(invoker, invocation, e.getTargetException());\n-        } catch (Throwable e) {\n-            fireThrowCallback(invoker, invocation, e);\n-        }\n-    }\n-\n-    private void fireThrowCallback(final Invoker<?> invoker, final Invocation invocation, final Throwable exception) {\n-        final AsyncMethodInfo asyncMethodInfo = getAsyncMethodInfo(invoker, invocation);\n-        if (asyncMethodInfo == null) {\n-            return;\n-        }\n-\n-        final Method onthrowMethod = asyncMethodInfo.getOnthrowMethod();\n-        final Object onthrowInst = asyncMethodInfo.getOnthrowInstance();\n-\n-        //onthrow callback not configured\n-        if (onthrowMethod == null && onthrowInst == null) {\n-            return;\n-        }\n-        if (onthrowMethod == null || onthrowInst == null) {\n-            throw new IllegalStateException(\"service:\" + invoker.getUrl().getServiceKey() + \" has a onthrow callback config , but no such \" + (onthrowMethod == null ? \"method\" : \"instance\") + \" found. url:\" + invoker.getUrl());\n-        }\n-        ReflectUtils.makeAccessible(onthrowMethod);\n-        Class<?>[] rParaTypes = onthrowMethod.getParameterTypes();\n-        if (rParaTypes[0].isAssignableFrom(exception.getClass())) {\n-            try {\n-                Object[] args = invocation.getArguments();\n-                Object[] params;\n-\n-                if (rParaTypes.length > 1) {\n-                    if (rParaTypes.length == 2 && rParaTypes[1].isAssignableFrom(Object[].class)) {\n-                        params = new Object[2];\n-                        params[0] = exception;\n-                        params[1] = args;\n-                    } else {\n-                        params = new Object[args.length + 1];\n-                        params[0] = exception;\n-                        System.arraycopy(args, 0, params, 1, args.length);\n-                    }\n-                } else {\n-                    params = new Object[]{exception};\n-                }\n-                onthrowMethod.invoke(onthrowInst, params);\n-            } catch (Throwable e) {\n-                logger.error(invocation.getMethodName() + \".call back method invoke error . callback method :\" + onthrowMethod + \", url:\" + invoker.getUrl(), e);\n-            }\n-        } else {\n-            logger.error(invocation.getMethodName() + \".call back method invoke error . callback method :\" + onthrowMethod + \", url:\" + invoker.getUrl(), exception);\n-        }\n-    }\n-\n-    private AsyncMethodInfo getAsyncMethodInfo(Invoker<?> invoker, Invocation invocation) {\n-        AsyncMethodInfo asyncMethodInfo = (AsyncMethodInfo) invocation.get(ASYNC_METHOD_INFO);\n-        if (asyncMethodInfo != null) {\n-            return asyncMethodInfo;\n-        }\n-\n-        ConsumerModel consumerModel = ApplicationModel.getConsumerModel(invoker.getUrl().getServiceKey());\n-        if (consumerModel == null) {\n-            return null;\n-        }\n-\n-        String methodName = invocation.getMethodName();\n-        if (methodName.equals($INVOKE)) {\n-            methodName = (String) invocation.getArguments()[0];\n-        }\n-\n-        return consumerModel.getAsyncInfo(methodName);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.dubbo.filter;\r\n+\r\n+import org.apache.dubbo.common.constants.CommonConstants;\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.rpc.Filter;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.AsyncMethodInfo;\r\n+import org.apache.dubbo.rpc.model.ConsumerModel;\r\n+\r\n+import java.lang.reflect.InvocationTargetException;\r\n+import java.lang.reflect.Method;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.$INVOKE;\r\n+import static org.apache.dubbo.rpc.protocol.dubbo.Constants.ASYNC_METHOD_INFO;\r\n+\r\n+/**\r\n+ * EventFilter\r\n+ */\r\n+@Activate(group = CommonConstants.CONSUMER)\r\n+public class FutureFilter implements Filter, Filter.Listener {\r\n+\r\n+    protected static final Logger logger = LoggerFactory.getLogger(FutureFilter.class);\r\n+\r\n+    @Override\r\n+    public Result invoke(final Invoker<?> invoker, final Invocation invocation) throws RpcException {\r\n+        fireInvokeCallback(invoker, invocation);\r\n+        // need to configure if there's return value before the invocation in order to help invoker to judge if it's\r\n+        // necessary to return future.\r\n+        return invoker.invoke(invocation);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void onResponse(Result result, Invoker<?> invoker, Invocation invocation) {\r\n+        if (result.hasException()) {\r\n+            fireThrowCallback(invoker, invocation, result.getException());\r\n+        } else {\r\n+            fireReturnCallback(invoker, invocation, result.getValue());\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void onError(Throwable t, Invoker<?> invoker, Invocation invocation) {\r\n+        fireThrowCallback(invoker, invocation, t);\r\n+    }\r\n+\r\n+    private void fireInvokeCallback(final Invoker<?> invoker, final Invocation invocation) {\r\n+        final AsyncMethodInfo asyncMethodInfo = getAsyncMethodInfo(invoker, invocation);\r\n+        if (asyncMethodInfo == null) {\r\n+            return;\r\n+        }\r\n+        final Method onInvokeMethod = asyncMethodInfo.getOninvokeMethod();\r\n+        final Object onInvokeInst = asyncMethodInfo.getOninvokeInstance();\r\n+\r\n+        if (onInvokeMethod == null && onInvokeInst == null) {\r\n+            return;\r\n+        }\r\n+        if (onInvokeMethod == null || onInvokeInst == null) {\r\n+            throw new IllegalStateException(\"service:\" + invoker.getUrl().getServiceKey() + \" has a oninvoke callback config , but no such \" + (onInvokeMethod == null ? \"method\" : \"instance\") + \" found. url:\" + invoker.getUrl());\r\n+        }\r\n+\r\n+        ReflectUtils.makeAccessible(onInvokeMethod);\r\n+        Object[] params = invocation.getArguments();\r\n+        try {\r\n+            onInvokeMethod.invoke(onInvokeInst, params);\r\n+        } catch (InvocationTargetException e) {\r\n+            fireThrowCallback(invoker, invocation, e.getTargetException());\r\n+        } catch (Throwable e) {\r\n+            fireThrowCallback(invoker, invocation, e);\r\n+        }\r\n+    }\r\n+\r\n+    private void fireReturnCallback(final Invoker<?> invoker, final Invocation invocation, final Object result) {\r\n+        final AsyncMethodInfo asyncMethodInfo = getAsyncMethodInfo(invoker, invocation);\r\n+        if (asyncMethodInfo == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        final Method onReturnMethod = asyncMethodInfo.getOnreturnMethod();\r\n+        final Object onReturnInst = asyncMethodInfo.getOnreturnInstance();\r\n+\r\n+        //not set onreturn callback\r\n+        if (onReturnMethod == null && onReturnInst == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        if (onReturnMethod == null || onReturnInst == null) {\r\n+            throw new IllegalStateException(\"service:\" + invoker.getUrl().getServiceKey() + \" has a onreturn callback config , but no such \" + (onReturnMethod == null ? \"method\" : \"instance\") + \" found. url:\" + invoker.getUrl());\r\n+        }\r\n+        ReflectUtils.makeAccessible(onReturnMethod);\r\n+\r\n+        Object[] args = invocation.getArguments();\r\n+        Object[] params;\r\n+        Class<?>[] rParaTypes = onReturnMethod.getParameterTypes();\r\n+        if (rParaTypes.length > 1) {\r\n+            if (rParaTypes.length == 2 && rParaTypes[1].isAssignableFrom(Object[].class)) {\r\n+                params = new Object[2];\r\n+                params[0] = result;\r\n+                params[1] = args;\r\n+            } else {\r\n+                params = new Object[args.length + 1];\r\n+                params[0] = result;\r\n+                System.arraycopy(args, 0, params, 1, args.length);\r\n+            }\r\n+        } else {\r\n+            params = new Object[]{result};\r\n+        }\r\n+        try {\r\n+            onReturnMethod.invoke(onReturnInst, params);\r\n+        } catch (InvocationTargetException e) {\r\n+            fireThrowCallback(invoker, invocation, e.getTargetException());\r\n+        } catch (Throwable e) {\r\n+            fireThrowCallback(invoker, invocation, e);\r\n+        }\r\n+    }\r\n+\r\n+    private void fireThrowCallback(final Invoker<?> invoker, final Invocation invocation, final Throwable exception) {\r\n+        final AsyncMethodInfo asyncMethodInfo = getAsyncMethodInfo(invoker, invocation);\r\n+        if (asyncMethodInfo == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        final Method onthrowMethod = asyncMethodInfo.getOnthrowMethod();\r\n+        final Object onthrowInst = asyncMethodInfo.getOnthrowInstance();\r\n+\r\n+        //onthrow callback not configured\r\n+        if (onthrowMethod == null && onthrowInst == null) {\r\n+            return;\r\n+        }\r\n+        if (onthrowMethod == null || onthrowInst == null) {\r\n+            throw new IllegalStateException(\"service:\" + invoker.getUrl().getServiceKey() + \" has a onthrow callback config , but no such \" + (onthrowMethod == null ? \"method\" : \"instance\") + \" found. url:\" + invoker.getUrl());\r\n+        }\r\n+        ReflectUtils.makeAccessible(onthrowMethod);\r\n+        Class<?>[] rParaTypes = onthrowMethod.getParameterTypes();\r\n+        if (rParaTypes[0].isAssignableFrom(exception.getClass())) {\r\n+            try {\r\n+                Object[] args = invocation.getArguments();\r\n+                Object[] params;\r\n+\r\n+                if (rParaTypes.length > 1) {\r\n+                    if (rParaTypes.length == 2 && rParaTypes[1].isAssignableFrom(Object[].class)) {\r\n+                        params = new Object[2];\r\n+                        params[0] = exception;\r\n+                        params[1] = args;\r\n+                    } else {\r\n+                        params = new Object[args.length + 1];\r\n+                        params[0] = exception;\r\n+                        System.arraycopy(args, 0, params, 1, args.length);\r\n+                    }\r\n+                } else {\r\n+                    params = new Object[]{exception};\r\n+                }\r\n+                onthrowMethod.invoke(onthrowInst, params);\r\n+            } catch (Throwable e) {\r\n+                logger.error(invocation.getMethodName() + \".call back method invoke error . callback method :\" + onthrowMethod + \", url:\" + invoker.getUrl(), e);\r\n+            }\r\n+        } else {\r\n+            logger.error(invocation.getMethodName() + \".call back method invoke error . callback method :\" + onthrowMethod + \", url:\" + invoker.getUrl(), exception);\r\n+        }\r\n+    }\r\n+\r\n+    private AsyncMethodInfo getAsyncMethodInfo(Invoker<?> invoker, Invocation invocation) {\r\n+        AsyncMethodInfo asyncMethodInfo = (AsyncMethodInfo) invocation.get(ASYNC_METHOD_INFO);\r\n+        if (asyncMethodInfo != null) {\r\n+            return asyncMethodInfo;\r\n+        }\r\n+\r\n+        ConsumerModel consumerModel = ApplicationModel.getConsumerModel(invoker.getUrl().getServiceKey());\r\n+        if (consumerModel == null) {\r\n+            return null;\r\n+        }\r\n+\r\n+        String methodName = invocation.getMethodName();\r\n+        if (methodName.equals($INVOKE)) {\r\n+            methodName = (String) invocation.getArguments()[0];\r\n+        }\r\n+\r\n+        return consumerModel.getAsyncInfo(methodName);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilter.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,127 +1,127 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.dubbo.filter;\n-\n-import org.apache.dubbo.common.constants.CommonConstants;\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.ConcurrentHashSet;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.rpc.Filter;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcException;\n-\n-import com.alibaba.fastjson.JSON;\n-\n-import java.util.ArrayList;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-import java.util.concurrent.atomic.AtomicInteger;\n-\n-/**\n- * TraceFilter\n- */\n-@Activate(group = CommonConstants.PROVIDER)\n-public class TraceFilter implements Filter {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(TraceFilter.class);\n-\n-    private static final String TRACE_MAX = \"trace.max\";\n-\n-    private static final String TRACE_COUNT = \"trace.count\";\n-\n-    private static final ConcurrentMap<String, Set<Channel>> TRACERS = new ConcurrentHashMap<>();\n-\n-    public static void addTracer(Class<?> type, String method, Channel channel, int max) {\n-        channel.setAttribute(TRACE_MAX, max);\n-        channel.setAttribute(TRACE_COUNT, new AtomicInteger());\n-        String key = method != null && method.length() > 0 ? type.getName() + \".\" + method : type.getName();\n-        Set<Channel> channels = TRACERS.computeIfAbsent(key, k -> new ConcurrentHashSet<>());\n-        channels.add(channel);\n-    }\n-\n-    public static void removeTracer(Class<?> type, String method, Channel channel) {\n-        channel.removeAttribute(TRACE_MAX);\n-        channel.removeAttribute(TRACE_COUNT);\n-        String key = method != null && method.length() > 0 ? type.getName() + \".\" + method : type.getName();\n-        Set<Channel> channels = TRACERS.get(key);\n-        if (channels != null) {\n-            channels.remove(channel);\n-        }\n-    }\n-\n-    @Override\n-    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {\n-        long start = System.currentTimeMillis();\n-        Result result = invoker.invoke(invocation);\n-        long end = System.currentTimeMillis();\n-        if (TRACERS.size() > 0) {\n-            String key = invoker.getInterface().getName() + \".\" + invocation.getMethodName();\n-            Set<Channel> channels = TRACERS.get(key);\n-            if (channels == null || channels.isEmpty()) {\n-                key = invoker.getInterface().getName();\n-                channels = TRACERS.get(key);\n-            }\n-            if (CollectionUtils.isNotEmpty(channels)) {\n-                for (Channel channel : new ArrayList<>(channels)) {\n-                    if (channel.isConnected()) {\n-                        try {\n-                            int max = 1;\n-                            Integer m = (Integer) channel.getAttribute(TRACE_MAX);\n-                            if (m != null) {\n-                                max = m;\n-                            }\n-                            int count = 0;\n-                            AtomicInteger c = (AtomicInteger) channel.getAttribute(TRACE_COUNT);\n-                            if (c == null) {\n-                                c = new AtomicInteger();\n-                                channel.setAttribute(TRACE_COUNT, c);\n-                            }\n-                            count = c.getAndIncrement();\n-                            if (count < max) {\n-                                String prompt = channel.getUrl().getParameter(Constants.PROMPT_KEY, Constants.DEFAULT_PROMPT);\n-                                channel.send(\"\\r\\n\" + RpcContext.getContext().getRemoteAddress() + \" -> \"\n-                                        + invoker.getInterface().getName()\n-                                        + \".\" + invocation.getMethodName()\n-                                        + \"(\" + JSON.toJSONString(invocation.getArguments()) + \")\" + \" -> \" + JSON.toJSONString(result.getValue())\n-                                        + \"\\r\\nelapsed: \" + (end - start) + \" ms.\"\n-                                        + \"\\r\\n\\r\\n\" + prompt);\n-                            }\n-                            if (count >= max - 1) {\n-                                channels.remove(channel);\n-                            }\n-                        } catch (Throwable e) {\n-                            channels.remove(channel);\n-                            logger.warn(e.getMessage(), e);\n-                        }\n-                    } else {\n-                        channels.remove(channel);\n-                    }\n-                }\n-            }\n-        }\n-        return result;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.dubbo.filter;\r\n+\r\n+import org.apache.dubbo.common.constants.CommonConstants;\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.ConcurrentHashSet;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.rpc.Filter;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+\r\n+import com.alibaba.fastjson.JSON;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+import java.util.concurrent.atomic.AtomicInteger;\r\n+\r\n+/**\r\n+ * TraceFilter\r\n+ */\r\n+@Activate(group = CommonConstants.PROVIDER)\r\n+public class TraceFilter implements Filter {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(TraceFilter.class);\r\n+\r\n+    private static final String TRACE_MAX = \"trace.max\";\r\n+\r\n+    private static final String TRACE_COUNT = \"trace.count\";\r\n+\r\n+    private static final ConcurrentMap<String, Set<Channel>> TRACERS = new ConcurrentHashMap<>();\r\n+\r\n+    public static void addTracer(Class<?> type, String method, Channel channel, int max) {\r\n+        channel.setAttribute(TRACE_MAX, max);\r\n+        channel.setAttribute(TRACE_COUNT, new AtomicInteger());\r\n+        String key = method != null && method.length() > 0 ? type.getName() + \".\" + method : type.getName();\r\n+        Set<Channel> channels = TRACERS.computeIfAbsent(key, k -> new ConcurrentHashSet<>());\r\n+        channels.add(channel);\r\n+    }\r\n+\r\n+    public static void removeTracer(Class<?> type, String method, Channel channel) {\r\n+        channel.removeAttribute(TRACE_MAX);\r\n+        channel.removeAttribute(TRACE_COUNT);\r\n+        String key = method != null && method.length() > 0 ? type.getName() + \".\" + method : type.getName();\r\n+        Set<Channel> channels = TRACERS.get(key);\r\n+        if (channels != null) {\r\n+            channels.remove(channel);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {\r\n+        long start = System.currentTimeMillis();\r\n+        Result result = invoker.invoke(invocation);\r\n+        long end = System.currentTimeMillis();\r\n+        if (TRACERS.size() > 0) {\r\n+            String key = invoker.getInterface().getName() + \".\" + invocation.getMethodName();\r\n+            Set<Channel> channels = TRACERS.get(key);\r\n+            if (channels == null || channels.isEmpty()) {\r\n+                key = invoker.getInterface().getName();\r\n+                channels = TRACERS.get(key);\r\n+            }\r\n+            if (CollectionUtils.isNotEmpty(channels)) {\r\n+                for (Channel channel : new ArrayList<>(channels)) {\r\n+                    if (channel.isConnected()) {\r\n+                        try {\r\n+                            int max = 1;\r\n+                            Integer m = (Integer) channel.getAttribute(TRACE_MAX);\r\n+                            if (m != null) {\r\n+                                max = m;\r\n+                            }\r\n+                            int count = 0;\r\n+                            AtomicInteger c = (AtomicInteger) channel.getAttribute(TRACE_COUNT);\r\n+                            if (c == null) {\r\n+                                c = new AtomicInteger();\r\n+                                channel.setAttribute(TRACE_COUNT, c);\r\n+                            }\r\n+                            count = c.getAndIncrement();\r\n+                            if (count < max) {\r\n+                                String prompt = channel.getUrl().getParameter(Constants.PROMPT_KEY, Constants.DEFAULT_PROMPT);\r\n+                                channel.send(\"\\r\\n\" + RpcContext.getContext().getRemoteAddress() + \" -> \"\r\n+                                        + invoker.getInterface().getName()\r\n+                                        + \".\" + invocation.getMethodName()\r\n+                                        + \"(\" + JSON.toJSONString(invocation.getArguments()) + \")\" + \" -> \" + JSON.toJSONString(result.getValue())\r\n+                                        + \"\\r\\nelapsed: \" + (end - start) + \" ms.\"\r\n+                                        + \"\\r\\n\\r\\n\" + prompt);\r\n+                            }\r\n+                            if (count >= max - 1) {\r\n+                                channels.remove(channel);\r\n+                            }\r\n+                        } catch (Throwable e) {\r\n+                            channels.remove(channel);\r\n+                            logger.warn(e.getMessage(), e);\r\n+                        }\r\n+                    } else {\r\n+                        channels.remove(channel);\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+        return result;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/status/ServerStatusChecker.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/status/ServerStatusChecker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,61 +1,61 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.dubbo.status;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.status.Status;\n-import org.apache.dubbo.common.status.StatusChecker;\n-import org.apache.dubbo.remoting.RemotingServer;\n-import org.apache.dubbo.rpc.ProtocolServer;\n-import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;\n-\n-import java.util.List;\n-\n-/**\n- * ServerStatusChecker\n- */\n-@Activate\n-public class ServerStatusChecker implements StatusChecker {\n-\n-    @Override\n-    public Status check() {\n-        List<ProtocolServer> servers = DubboProtocol.getDubboProtocol().getServers();\n-        if (servers == null || servers.isEmpty()) {\n-            return new Status(Status.Level.UNKNOWN);\n-        }\n-        Status.Level level = Status.Level.OK;\n-        StringBuilder buf = new StringBuilder();\n-        for (ProtocolServer protocolServer : servers) {\n-            RemotingServer server = protocolServer.getRemotingServer();\n-            if (!server.isBound()) {\n-                level = Status.Level.ERROR;\n-                buf.setLength(0);\n-                buf.append(server.getLocalAddress());\n-                break;\n-            }\n-            if (buf.length() > 0) {\n-                buf.append(\",\");\n-            }\n-            buf.append(server.getLocalAddress());\n-            buf.append(\"(clients:\");\n-            buf.append(server.getChannels().size());\n-            buf.append(\")\");\n-        }\n-        return new Status(level, buf.toString());\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.dubbo.status;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.status.Status;\r\n+import org.apache.dubbo.common.status.StatusChecker;\r\n+import org.apache.dubbo.remoting.RemotingServer;\r\n+import org.apache.dubbo.rpc.ProtocolServer;\r\n+import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;\r\n+\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * ServerStatusChecker\r\n+ */\r\n+@Activate\r\n+public class ServerStatusChecker implements StatusChecker {\r\n+\r\n+    @Override\r\n+    public Status check() {\r\n+        List<ProtocolServer> servers = DubboProtocol.getDubboProtocol().getServers();\r\n+        if (servers == null || servers.isEmpty()) {\r\n+            return new Status(Status.Level.UNKNOWN);\r\n+        }\r\n+        Status.Level level = Status.Level.OK;\r\n+        StringBuilder buf = new StringBuilder();\r\n+        for (ProtocolServer protocolServer : servers) {\r\n+            RemotingServer server = protocolServer.getRemotingServer();\r\n+            if (!server.isBound()) {\r\n+                level = Status.Level.ERROR;\r\n+                buf.setLength(0);\r\n+                buf.append(server.getLocalAddress());\r\n+                break;\r\n+            }\r\n+            if (buf.length() > 0) {\r\n+                buf.append(\",\");\r\n+            }\r\n+            buf.append(server.getLocalAddress());\r\n+            buf.append(\"(clients:\");\r\n+            buf.append(server.getChannels().size());\r\n+            buf.append(\")\");\r\n+        }\r\n+        return new Status(level, buf.toString());\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/dubbo/status/ThreadPoolStatusChecker.java", "source2": "org/apache/dubbo/rpc/protocol/dubbo/status/ThreadPoolStatusChecker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,67 +1,67 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.dubbo.status;\n-\n-import org.apache.dubbo.common.constants.CommonConstants;\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.status.Status;\n-import org.apache.dubbo.common.status.StatusChecker;\n-import org.apache.dubbo.common.store.DataStore;\n-\n-import java.util.Map;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.ThreadPoolExecutor;\n-\n-/**\n- * ThreadPoolStatusChecker\n- */\n-@Activate\n-public class ThreadPoolStatusChecker implements StatusChecker {\n-\n-    @Override\n-    public Status check() {\n-        DataStore dataStore = ExtensionLoader.getExtensionLoader(DataStore.class).getDefaultExtension();\n-        Map<String, Object> executors = dataStore.get(CommonConstants.EXECUTOR_SERVICE_COMPONENT_KEY);\n-\n-        StringBuilder msg = new StringBuilder();\n-        Status.Level level = Status.Level.OK;\n-        for (Map.Entry<String, Object> entry : executors.entrySet()) {\n-            String port = entry.getKey();\n-            ExecutorService executor = (ExecutorService) entry.getValue();\n-\n-            if (executor instanceof ThreadPoolExecutor) {\n-                ThreadPoolExecutor tp = (ThreadPoolExecutor) executor;\n-                boolean ok = tp.getActiveCount() < tp.getMaximumPoolSize() - 1;\n-                Status.Level lvl = Status.Level.OK;\n-                if (!ok) {\n-                    level = Status.Level.WARN;\n-                    lvl = Status.Level.WARN;\n-                }\n-\n-                if (msg.length() > 0) {\n-                    msg.append(\";\");\n-                }\n-                msg.append(\"Pool status:\").append(lvl).append(\", max:\").append(tp.getMaximumPoolSize()).append(\", core:\")\n-                        .append(tp.getCorePoolSize()).append(\", largest:\").append(tp.getLargestPoolSize()).append(\", active:\")\n-                        .append(tp.getActiveCount()).append(\", task:\").append(tp.getTaskCount()).append(\", service port: \").append(port);\n-            }\n-        }\n-        return msg.length() == 0 ? new Status(Status.Level.UNKNOWN) : new Status(level, msg.toString());\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.dubbo.status;\r\n+\r\n+import org.apache.dubbo.common.constants.CommonConstants;\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.status.Status;\r\n+import org.apache.dubbo.common.status.StatusChecker;\r\n+import org.apache.dubbo.common.store.DataStore;\r\n+\r\n+import java.util.Map;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.ThreadPoolExecutor;\r\n+\r\n+/**\r\n+ * ThreadPoolStatusChecker\r\n+ */\r\n+@Activate\r\n+public class ThreadPoolStatusChecker implements StatusChecker {\r\n+\r\n+    @Override\r\n+    public Status check() {\r\n+        DataStore dataStore = ExtensionLoader.getExtensionLoader(DataStore.class).getDefaultExtension();\r\n+        Map<String, Object> executors = dataStore.get(CommonConstants.EXECUTOR_SERVICE_COMPONENT_KEY);\r\n+\r\n+        StringBuilder msg = new StringBuilder();\r\n+        Status.Level level = Status.Level.OK;\r\n+        for (Map.Entry<String, Object> entry : executors.entrySet()) {\r\n+            String port = entry.getKey();\r\n+            ExecutorService executor = (ExecutorService) entry.getValue();\r\n+\r\n+            if (executor instanceof ThreadPoolExecutor) {\r\n+                ThreadPoolExecutor tp = (ThreadPoolExecutor) executor;\r\n+                boolean ok = tp.getActiveCount() < tp.getMaximumPoolSize() - 1;\r\n+                Status.Level lvl = Status.Level.OK;\r\n+                if (!ok) {\r\n+                    level = Status.Level.WARN;\r\n+                    lvl = Status.Level.WARN;\r\n+                }\r\n+\r\n+                if (msg.length() > 0) {\r\n+                    msg.append(\";\");\r\n+                }\r\n+                msg.append(\"Pool status:\").append(lvl).append(\", max:\").append(tp.getMaximumPoolSize()).append(\", core:\")\r\n+                        .append(tp.getCorePoolSize()).append(\", largest:\").append(tp.getLargestPoolSize()).append(\", active:\")\r\n+                        .append(tp.getActiveCount()).append(\", task:\").append(tp.getTaskCount()).append(\", service port: \").append(port);\r\n+            }\r\n+        }\r\n+        return msg.length() == 0 ? new Status(Status.Level.UNKNOWN) : new Status(level, msg.toString());\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/injvm/InjvmProtocol.java", "source2": "org/apache/dubbo/rpc/protocol/injvm/InjvmProtocol.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,120 +1,120 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.injvm;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.UrlUtils;\n-import org.apache.dubbo.rpc.Exporter;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Protocol;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.protocol.AbstractProtocol;\n-import org.apache.dubbo.rpc.support.ProtocolUtils;\n-\n-import java.util.Map;\n-\n-import static org.apache.dubbo.rpc.Constants.SCOPE_KEY;\n-import static org.apache.dubbo.rpc.Constants.SCOPE_LOCAL;\n-import static org.apache.dubbo.rpc.Constants.SCOPE_REMOTE;\n-import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;\n-import static org.apache.dubbo.rpc.Constants.LOCAL_PROTOCOL;\n-\n-/**\n- * InjvmProtocol\n- */\n-public class InjvmProtocol extends AbstractProtocol implements Protocol {\n-\n-    public static final String NAME = LOCAL_PROTOCOL;\n-\n-    public static final int DEFAULT_PORT = 0;\n-    private static InjvmProtocol INSTANCE;\n-\n-    public InjvmProtocol() {\n-        INSTANCE = this;\n-    }\n-\n-    public static InjvmProtocol getInjvmProtocol() {\n-        if (INSTANCE == null) {\n-            ExtensionLoader.getExtensionLoader(Protocol.class).getExtension(InjvmProtocol.NAME); // load\n-        }\n-        return INSTANCE;\n-    }\n-\n-    static Exporter<?> getExporter(Map<String, Exporter<?>> map, URL key) {\n-        Exporter<?> result = null;\n-\n-        if (!key.getServiceKey().contains(\"*\")) {\n-            result = map.get(key.getServiceKey());\n-        } else {\n-            if (CollectionUtils.isNotEmptyMap(map)) {\n-                for (Exporter<?> exporter : map.values()) {\n-                    if (UrlUtils.isServiceKeyMatch(key, exporter.getInvoker().getUrl())) {\n-                        result = exporter;\n-                        break;\n-                    }\n-                }\n-            }\n-        }\n-\n-        if (result == null) {\n-            return null;\n-        } else if (ProtocolUtils.isGeneric(\n-                result.getInvoker().getUrl().getParameter(GENERIC_KEY))) {\n-            return null;\n-        } else {\n-            return result;\n-        }\n-    }\n-\n-    @Override\n-    public int getDefaultPort() {\n-        return DEFAULT_PORT;\n-    }\n-\n-    @Override\n-    public <T> Exporter<T> export(Invoker<T> invoker) throws RpcException {\n-        return new InjvmExporter<T>(invoker, invoker.getUrl().getServiceKey(), exporterMap);\n-    }\n-\n-    @Override\n-    public <T> Invoker<T> protocolBindingRefer(Class<T> serviceType, URL url) throws RpcException {\n-        return new InjvmInvoker<T>(serviceType, url, url.getServiceKey(), exporterMap);\n-    }\n-\n-    public boolean isInjvmRefer(URL url) {\n-        String scope = url.getParameter(SCOPE_KEY);\n-        // Since injvm protocol is configured explicitly, we don't need to set any extra flag, use normal refer process.\n-        if (SCOPE_LOCAL.equals(scope) || (url.getParameter(LOCAL_PROTOCOL, false))) {\n-            // if it's declared as local reference\n-            // 'scope=local' is equivalent to 'injvm=true', injvm will be deprecated in the future release\n-            return true;\n-        } else if (SCOPE_REMOTE.equals(scope)) {\n-            // it's declared as remote reference\n-            return false;\n-        } else if (url.getParameter(GENERIC_KEY, false)) {\n-            // generic invocation is not local reference\n-            return false;\n-        } else if (getExporter(exporterMap, url) != null) {\n-            // by default, go through local reference if there's the service exposed locally\n-            return true;\n-        } else {\n-            return false;\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.injvm;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.UrlUtils;\r\n+import org.apache.dubbo.rpc.Exporter;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Protocol;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.protocol.AbstractProtocol;\r\n+import org.apache.dubbo.rpc.support.ProtocolUtils;\r\n+\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.rpc.Constants.SCOPE_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.SCOPE_LOCAL;\r\n+import static org.apache.dubbo.rpc.Constants.SCOPE_REMOTE;\r\n+import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.LOCAL_PROTOCOL;\r\n+\r\n+/**\r\n+ * InjvmProtocol\r\n+ */\r\n+public class InjvmProtocol extends AbstractProtocol implements Protocol {\r\n+\r\n+    public static final String NAME = LOCAL_PROTOCOL;\r\n+\r\n+    public static final int DEFAULT_PORT = 0;\r\n+    private static InjvmProtocol INSTANCE;\r\n+\r\n+    public InjvmProtocol() {\r\n+        INSTANCE = this;\r\n+    }\r\n+\r\n+    public static InjvmProtocol getInjvmProtocol() {\r\n+        if (INSTANCE == null) {\r\n+            ExtensionLoader.getExtensionLoader(Protocol.class).getExtension(InjvmProtocol.NAME); // load\r\n+        }\r\n+        return INSTANCE;\r\n+    }\r\n+\r\n+    static Exporter<?> getExporter(Map<String, Exporter<?>> map, URL key) {\r\n+        Exporter<?> result = null;\r\n+\r\n+        if (!key.getServiceKey().contains(\"*\")) {\r\n+            result = map.get(key.getServiceKey());\r\n+        } else {\r\n+            if (CollectionUtils.isNotEmptyMap(map)) {\r\n+                for (Exporter<?> exporter : map.values()) {\r\n+                    if (UrlUtils.isServiceKeyMatch(key, exporter.getInvoker().getUrl())) {\r\n+                        result = exporter;\r\n+                        break;\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        if (result == null) {\r\n+            return null;\r\n+        } else if (ProtocolUtils.isGeneric(\r\n+                result.getInvoker().getUrl().getParameter(GENERIC_KEY))) {\r\n+            return null;\r\n+        } else {\r\n+            return result;\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getDefaultPort() {\r\n+        return DEFAULT_PORT;\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> Exporter<T> export(Invoker<T> invoker) throws RpcException {\r\n+        return new InjvmExporter<T>(invoker, invoker.getUrl().getServiceKey(), exporterMap);\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> Invoker<T> protocolBindingRefer(Class<T> serviceType, URL url) throws RpcException {\r\n+        return new InjvmInvoker<T>(serviceType, url, url.getServiceKey(), exporterMap);\r\n+    }\r\n+\r\n+    public boolean isInjvmRefer(URL url) {\r\n+        String scope = url.getParameter(SCOPE_KEY);\r\n+        // Since injvm protocol is configured explicitly, we don't need to set any extra flag, use normal refer process.\r\n+        if (SCOPE_LOCAL.equals(scope) || (url.getParameter(LOCAL_PROTOCOL, false))) {\r\n+            // if it's declared as local reference\r\n+            // 'scope=local' is equivalent to 'injvm=true', injvm will be deprecated in the future release\r\n+            return true;\r\n+        } else if (SCOPE_REMOTE.equals(scope)) {\r\n+            // it's declared as remote reference\r\n+            return false;\r\n+        } else if (url.getParameter(GENERIC_KEY, false)) {\r\n+            // generic invocation is not local reference\r\n+            return false;\r\n+        } else if (getExporter(exporterMap, url) != null) {\r\n+            // by default, go through local reference if there's the service exposed locally\r\n+            return true;\r\n+        } else {\r\n+            return false;\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/http/HttpProtocol.java", "source2": "org/apache/dubbo/rpc/protocol/http/HttpProtocol.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,191 +1,191 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.http;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.RemotingServer;\n-import org.apache.dubbo.remoting.http.HttpBinder;\n-import org.apache.dubbo.remoting.http.HttpHandler;\n-import org.apache.dubbo.rpc.ProtocolServer;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.protocol.AbstractProxyProtocol;\n-\n-import com.googlecode.jsonrpc4j.HttpException;\n-import com.googlecode.jsonrpc4j.JsonRpcClientException;\n-import com.googlecode.jsonrpc4j.JsonRpcServer;\n-import com.googlecode.jsonrpc4j.spring.JsonProxyFactoryBean;\n-import org.apache.dubbo.rpc.service.GenericService;\n-import org.apache.dubbo.rpc.support.ProtocolUtils;\n-import org.springframework.remoting.RemoteAccessException;\n-import org.springframework.remoting.support.RemoteInvocation;\n-\n-import javax.servlet.ServletException;\n-import javax.servlet.http.HttpServletRequest;\n-import javax.servlet.http.HttpServletResponse;\n-import java.io.IOException;\n-import java.net.SocketTimeoutException;\n-import java.util.ArrayList;\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;\n-\n-public class HttpProtocol extends AbstractProxyProtocol {\n-    public static final String ACCESS_CONTROL_ALLOW_ORIGIN_HEADER = \"Access-Control-Allow-Origin\";\n-    public static final String ACCESS_CONTROL_ALLOW_METHODS_HEADER = \"Access-Control-Allow-Methods\";\n-    public static final String ACCESS_CONTROL_ALLOW_HEADERS_HEADER = \"Access-Control-Allow-Headers\";\n-\n-    private final Map<String, JsonRpcServer> skeletonMap = new ConcurrentHashMap<>();\n-\n-    private HttpBinder httpBinder;\n-\n-    public HttpProtocol() {\n-        super(HttpException.class, JsonRpcClientException.class);\n-    }\n-\n-    public void setHttpBinder(HttpBinder httpBinder) {\n-        this.httpBinder = httpBinder;\n-    }\n-\n-    @Override\n-    public int getDefaultPort() {\n-        return 80;\n-    }\n-\n-    private class InternalHandler implements HttpHandler {\n-\n-        private boolean cors;\n-\n-        public InternalHandler(boolean cors) {\n-            this.cors = cors;\n-        }\n-\n-        @Override\n-        public void handle(HttpServletRequest request, HttpServletResponse response)\n-                throws ServletException {\n-            String uri = request.getRequestURI();\n-            JsonRpcServer skeleton = skeletonMap.get(uri);\n-            if (cors) {\n-                response.setHeader(ACCESS_CONTROL_ALLOW_ORIGIN_HEADER, \"*\");\n-                response.setHeader(ACCESS_CONTROL_ALLOW_METHODS_HEADER, \"POST\");\n-                response.setHeader(ACCESS_CONTROL_ALLOW_HEADERS_HEADER, \"*\");\n-            }\n-            if (request.getMethod().equalsIgnoreCase(\"OPTIONS\")) {\n-                response.setStatus(200);\n-            } else if (request.getMethod().equalsIgnoreCase(\"POST\")) {\n-\n-                RpcContext.getContext().setRemoteAddress(request.getRemoteAddr(), request.getRemotePort());\n-                try {\n-                    skeleton.handle(request.getInputStream(), response.getOutputStream());\n-                } catch (Throwable e) {\n-                    throw new ServletException(e);\n-                }\n-            } else {\n-                response.setStatus(500);\n-            }\n-        }\n-\n-    }\n-\n-    @Override\n-    protected <T> Runnable doExport(final T impl, Class<T> type, URL url) throws RpcException {\n-        String addr = getAddr(url);\n-        ProtocolServer protocolServer = serverMap.get(addr);\n-        if (protocolServer == null) {\n-            RemotingServer remotingServer = httpBinder.bind(url, new InternalHandler(url.getParameter(\"cors\", false)));\n-            serverMap.put(addr, new ProxyProtocolServer(remotingServer));\n-        }\n-        final String path = url.getAbsolutePath();\n-        final String genericPath = path + \"/\" + GENERIC_KEY;\n-        JsonRpcServer skeleton = new JsonRpcServer(impl, type);\n-        JsonRpcServer genericServer = new JsonRpcServer(impl, GenericService.class);\n-        skeletonMap.put(path, skeleton);\n-        skeletonMap.put(genericPath, genericServer);\n-        return () -> {\n-            skeletonMap.remove(path);\n-            skeletonMap.remove(genericPath);\n-        };\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    @Override\n-    protected <T> T doRefer(final Class<T> serviceType, URL url) throws RpcException {\n-        final String generic = url.getParameter(GENERIC_KEY);\n-        final boolean isGeneric = ProtocolUtils.isGeneric(generic) || serviceType.equals(GenericService.class);\n-        JsonProxyFactoryBean jsonProxyFactoryBean = new JsonProxyFactoryBean();\n-        JsonRpcProxyFactoryBean jsonRpcProxyFactoryBean = new JsonRpcProxyFactoryBean(jsonProxyFactoryBean);\n-        jsonRpcProxyFactoryBean.setRemoteInvocationFactory((methodInvocation) -> {\n-            RemoteInvocation invocation = new JsonRemoteInvocation(methodInvocation);\n-            if (isGeneric) {\n-                invocation.addAttribute(GENERIC_KEY, generic);\n-            }\n-            return invocation;\n-        });\n-        String key = url.setProtocol(\"http\").toIdentityString();\n-        if (isGeneric) {\n-            key = key + \"/\" + GENERIC_KEY;\n-        }\n-\n-        jsonRpcProxyFactoryBean.setServiceUrl(key);\n-        jsonRpcProxyFactoryBean.setServiceInterface(serviceType);\n-\n-        jsonProxyFactoryBean.afterPropertiesSet();\n-        return (T) jsonProxyFactoryBean.getObject();\n-    }\n-\n-    protected int getErrorCode(Throwable e) {\n-        if (e instanceof RemoteAccessException) {\n-            e = e.getCause();\n-        }\n-        if (e != null) {\n-            Class<?> cls = e.getClass();\n-            if (SocketTimeoutException.class.equals(cls)) {\n-                return RpcException.TIMEOUT_EXCEPTION;\n-            } else if (IOException.class.isAssignableFrom(cls)) {\n-                return RpcException.NETWORK_EXCEPTION;\n-            } else if (ClassNotFoundException.class.isAssignableFrom(cls)) {\n-                return RpcException.SERIALIZATION_EXCEPTION;\n-            }\n-\n-            if (e instanceof HttpProtocolErrorCode) {\n-                return ((HttpProtocolErrorCode) e).getErrorCode();\n-            }\n-        }\n-        return super.getErrorCode(e);\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        super.destroy();\n-        for (String key : new ArrayList<>(serverMap.keySet())) {\n-            ProtocolServer server = serverMap.remove(key);\n-            if (server != null) {\n-                try {\n-                    if (logger.isInfoEnabled()) {\n-                        logger.info(\"Close jsonrpc server \" + server.getUrl());\n-                    }\n-                    server.close();\n-                } catch (Throwable t) {\n-                    logger.warn(t.getMessage(), t);\n-                }\n-            }\n-        }\n-    }\n-\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.http;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.RemotingServer;\r\n+import org.apache.dubbo.remoting.http.HttpBinder;\r\n+import org.apache.dubbo.remoting.http.HttpHandler;\r\n+import org.apache.dubbo.rpc.ProtocolServer;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.protocol.AbstractProxyProtocol;\r\n+\r\n+import com.googlecode.jsonrpc4j.HttpException;\r\n+import com.googlecode.jsonrpc4j.JsonRpcClientException;\r\n+import com.googlecode.jsonrpc4j.JsonRpcServer;\r\n+import com.googlecode.jsonrpc4j.spring.JsonProxyFactoryBean;\r\n+import org.apache.dubbo.rpc.service.GenericService;\r\n+import org.apache.dubbo.rpc.support.ProtocolUtils;\r\n+import org.springframework.remoting.RemoteAccessException;\r\n+import org.springframework.remoting.support.RemoteInvocation;\r\n+\r\n+import javax.servlet.ServletException;\r\n+import javax.servlet.http.HttpServletRequest;\r\n+import javax.servlet.http.HttpServletResponse;\r\n+import java.io.IOException;\r\n+import java.net.SocketTimeoutException;\r\n+import java.util.ArrayList;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;\r\n+\r\n+public class HttpProtocol extends AbstractProxyProtocol {\r\n+    public static final String ACCESS_CONTROL_ALLOW_ORIGIN_HEADER = \"Access-Control-Allow-Origin\";\r\n+    public static final String ACCESS_CONTROL_ALLOW_METHODS_HEADER = \"Access-Control-Allow-Methods\";\r\n+    public static final String ACCESS_CONTROL_ALLOW_HEADERS_HEADER = \"Access-Control-Allow-Headers\";\r\n+\r\n+    private final Map<String, JsonRpcServer> skeletonMap = new ConcurrentHashMap<>();\r\n+\r\n+    private HttpBinder httpBinder;\r\n+\r\n+    public HttpProtocol() {\r\n+        super(HttpException.class, JsonRpcClientException.class);\r\n+    }\r\n+\r\n+    public void setHttpBinder(HttpBinder httpBinder) {\r\n+        this.httpBinder = httpBinder;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getDefaultPort() {\r\n+        return 80;\r\n+    }\r\n+\r\n+    private class InternalHandler implements HttpHandler {\r\n+\r\n+        private boolean cors;\r\n+\r\n+        public InternalHandler(boolean cors) {\r\n+            this.cors = cors;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void handle(HttpServletRequest request, HttpServletResponse response)\r\n+                throws ServletException {\r\n+            String uri = request.getRequestURI();\r\n+            JsonRpcServer skeleton = skeletonMap.get(uri);\r\n+            if (cors) {\r\n+                response.setHeader(ACCESS_CONTROL_ALLOW_ORIGIN_HEADER, \"*\");\r\n+                response.setHeader(ACCESS_CONTROL_ALLOW_METHODS_HEADER, \"POST\");\r\n+                response.setHeader(ACCESS_CONTROL_ALLOW_HEADERS_HEADER, \"*\");\r\n+            }\r\n+            if (request.getMethod().equalsIgnoreCase(\"OPTIONS\")) {\r\n+                response.setStatus(200);\r\n+            } else if (request.getMethod().equalsIgnoreCase(\"POST\")) {\r\n+\r\n+                RpcContext.getContext().setRemoteAddress(request.getRemoteAddr(), request.getRemotePort());\r\n+                try {\r\n+                    skeleton.handle(request.getInputStream(), response.getOutputStream());\r\n+                } catch (Throwable e) {\r\n+                    throw new ServletException(e);\r\n+                }\r\n+            } else {\r\n+                response.setStatus(500);\r\n+            }\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    protected <T> Runnable doExport(final T impl, Class<T> type, URL url) throws RpcException {\r\n+        String addr = getAddr(url);\r\n+        ProtocolServer protocolServer = serverMap.get(addr);\r\n+        if (protocolServer == null) {\r\n+            RemotingServer remotingServer = httpBinder.bind(url, new InternalHandler(url.getParameter(\"cors\", false)));\r\n+            serverMap.put(addr, new ProxyProtocolServer(remotingServer));\r\n+        }\r\n+        final String path = url.getAbsolutePath();\r\n+        final String genericPath = path + \"/\" + GENERIC_KEY;\r\n+        JsonRpcServer skeleton = new JsonRpcServer(impl, type);\r\n+        JsonRpcServer genericServer = new JsonRpcServer(impl, GenericService.class);\r\n+        skeletonMap.put(path, skeleton);\r\n+        skeletonMap.put(genericPath, genericServer);\r\n+        return () -> {\r\n+            skeletonMap.remove(path);\r\n+            skeletonMap.remove(genericPath);\r\n+        };\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    @Override\r\n+    protected <T> T doRefer(final Class<T> serviceType, URL url) throws RpcException {\r\n+        final String generic = url.getParameter(GENERIC_KEY);\r\n+        final boolean isGeneric = ProtocolUtils.isGeneric(generic) || serviceType.equals(GenericService.class);\r\n+        JsonProxyFactoryBean jsonProxyFactoryBean = new JsonProxyFactoryBean();\r\n+        JsonRpcProxyFactoryBean jsonRpcProxyFactoryBean = new JsonRpcProxyFactoryBean(jsonProxyFactoryBean);\r\n+        jsonRpcProxyFactoryBean.setRemoteInvocationFactory((methodInvocation) -> {\r\n+            RemoteInvocation invocation = new JsonRemoteInvocation(methodInvocation);\r\n+            if (isGeneric) {\r\n+                invocation.addAttribute(GENERIC_KEY, generic);\r\n+            }\r\n+            return invocation;\r\n+        });\r\n+        String key = url.setProtocol(\"http\").toIdentityString();\r\n+        if (isGeneric) {\r\n+            key = key + \"/\" + GENERIC_KEY;\r\n+        }\r\n+\r\n+        jsonRpcProxyFactoryBean.setServiceUrl(key);\r\n+        jsonRpcProxyFactoryBean.setServiceInterface(serviceType);\r\n+\r\n+        jsonProxyFactoryBean.afterPropertiesSet();\r\n+        return (T) jsonProxyFactoryBean.getObject();\r\n+    }\r\n+\r\n+    protected int getErrorCode(Throwable e) {\r\n+        if (e instanceof RemoteAccessException) {\r\n+            e = e.getCause();\r\n+        }\r\n+        if (e != null) {\r\n+            Class<?> cls = e.getClass();\r\n+            if (SocketTimeoutException.class.equals(cls)) {\r\n+                return RpcException.TIMEOUT_EXCEPTION;\r\n+            } else if (IOException.class.isAssignableFrom(cls)) {\r\n+                return RpcException.NETWORK_EXCEPTION;\r\n+            } else if (ClassNotFoundException.class.isAssignableFrom(cls)) {\r\n+                return RpcException.SERIALIZATION_EXCEPTION;\r\n+            }\r\n+\r\n+            if (e instanceof HttpProtocolErrorCode) {\r\n+                return ((HttpProtocolErrorCode) e).getErrorCode();\r\n+            }\r\n+        }\r\n+        return super.getErrorCode(e);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        super.destroy();\r\n+        for (String key : new ArrayList<>(serverMap.keySet())) {\r\n+            ProtocolServer server = serverMap.remove(key);\r\n+            if (server != null) {\r\n+                try {\r\n+                    if (logger.isInfoEnabled()) {\r\n+                        logger.info(\"Close jsonrpc server \" + server.getUrl());\r\n+                    }\r\n+                    server.close();\r\n+                } catch (Throwable t) {\r\n+                    logger.warn(t.getMessage(), t);\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/rpc/protocol/http/JsonRemoteInvocation.java", "source2": "org/apache/dubbo/rpc/protocol/http/JsonRemoteInvocation.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,61 +1,61 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.rpc.protocol.http;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.rpc.RpcContext;\n-\n-import org.aopalliance.intercept.MethodInvocation;\n-import org.springframework.remoting.support.RemoteInvocation;\n-\n-import java.lang.reflect.InvocationTargetException;\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;\n-\n-/**\n- * JsonRemoteInvocation\n- */\n-public class JsonRemoteInvocation extends RemoteInvocation {\n-    private static final long serialVersionUID = 1L;\n-    private static final String DUBBO_ATTACHMENTS_ATTR_NAME = \"dubbo.attachments\";\n-\n-    public JsonRemoteInvocation(MethodInvocation methodInvocation) {\n-        super(methodInvocation);\n-        addAttribute(DUBBO_ATTACHMENTS_ATTR_NAME, new HashMap<>(RpcContext.getContext().getAttachments()));\n-    }\n-\n-    @Override\n-    public Object invoke(Object targetObject) throws NoSuchMethodException, IllegalAccessException,\n-            InvocationTargetException {\n-        RpcContext context = RpcContext.getContext();\n-        context.setAttachments((Map<String, String>) getAttribute(DUBBO_ATTACHMENTS_ATTR_NAME));\n-\n-        String generic = (String) getAttribute(GENERIC_KEY);\n-        if (StringUtils.isNotEmpty(generic)) {\n-            context.setAttachment(GENERIC_KEY, generic);\n-        }\n-        try {\n-            return super.invoke(targetObject);\n-        } finally {\n-            context.setAttachments(null);\n-\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.rpc.protocol.http;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+\r\n+import org.aopalliance.intercept.MethodInvocation;\r\n+import org.springframework.remoting.support.RemoteInvocation;\r\n+\r\n+import java.lang.reflect.InvocationTargetException;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;\r\n+\r\n+/**\r\n+ * JsonRemoteInvocation\r\n+ */\r\n+public class JsonRemoteInvocation extends RemoteInvocation {\r\n+    private static final long serialVersionUID = 1L;\r\n+    private static final String DUBBO_ATTACHMENTS_ATTR_NAME = \"dubbo.attachments\";\r\n+\r\n+    public JsonRemoteInvocation(MethodInvocation methodInvocation) {\r\n+        super(methodInvocation);\r\n+        addAttribute(DUBBO_ATTACHMENTS_ATTR_NAME, new HashMap<>(RpcContext.getContext().getAttachments()));\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object invoke(Object targetObject) throws NoSuchMethodException, IllegalAccessException,\r\n+            InvocationTargetException {\r\n+        RpcContext context = RpcContext.getContext();\r\n+        context.setAttachments((Map<String, String>) getAttribute(DUBBO_ATTACHMENTS_ATTR_NAME));\r\n+\r\n+        String generic = (String) getAttribute(GENERIC_KEY);\r\n+        if (StringUtils.isNotEmpty(generic)) {\r\n+            context.setAttachment(GENERIC_KEY, generic);\r\n+        }\r\n+        try {\r\n+            return super.invoke(targetObject);\r\n+        } finally {\r\n+            context.setAttachments(null);\r\n+\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/http/JsonRpcProxyFactoryBean.java", "source2": "org/apache/dubbo/rpc/protocol/http/JsonRpcProxyFactoryBean.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,86 +1,86 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.rpc.protocol.http;\n-\n-import com.googlecode.jsonrpc4j.spring.JsonProxyFactoryBean;\n-import org.aopalliance.intercept.MethodInterceptor;\n-import org.aopalliance.intercept.MethodInvocation;\n-import org.springframework.beans.factory.FactoryBean;\n-import org.springframework.beans.factory.InitializingBean;\n-import org.springframework.context.ApplicationContext;\n-import org.springframework.context.ApplicationContextAware;\n-import org.springframework.remoting.support.RemoteInvocationBasedAccessor;\n-\n-/**\n- * JsonRpcProxyFactoryBean\n- */\n-public class JsonRpcProxyFactoryBean extends RemoteInvocationBasedAccessor\n-        implements MethodInterceptor,\n-        InitializingBean,\n-        FactoryBean<Object>,\n-        ApplicationContextAware {\n-    private final JsonProxyFactoryBean jsonProxyFactoryBean;\n-\n-    public JsonRpcProxyFactoryBean(JsonProxyFactoryBean factoryBean) {\n-        this.jsonProxyFactoryBean = factoryBean;\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public void afterPropertiesSet() {\n-        jsonProxyFactoryBean.afterPropertiesSet();\n-    }\n-\n-    @Override\n-    public Object invoke(MethodInvocation invocation)\n-            throws Throwable {\n-\n-        return jsonProxyFactoryBean.invoke(invocation);\n-    }\n-\n-    @Override\n-    public Object getObject() {\n-        return jsonProxyFactoryBean.getObject();\n-    }\n-\n-    @Override\n-    public Class<?> getObjectType() {\n-        return jsonProxyFactoryBean.getObjectType();\n-    }\n-\n-    @Override\n-    public boolean isSingleton() {\n-        return jsonProxyFactoryBean.isSingleton();\n-    }\n-\n-    @Override\n-    public void setApplicationContext(ApplicationContext applicationContext) {\n-        jsonProxyFactoryBean.setApplicationContext(applicationContext);\n-    }\n-\n-    @Override\n-    public void setServiceUrl(String serviceUrl) {\n-        jsonProxyFactoryBean.setServiceUrl(serviceUrl);\n-    }\n-\n-    @Override\n-    public void setServiceInterface(Class<?> serviceInterface) {\n-        jsonProxyFactoryBean.setServiceInterface(serviceInterface);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.rpc.protocol.http;\r\n+\r\n+import com.googlecode.jsonrpc4j.spring.JsonProxyFactoryBean;\r\n+import org.aopalliance.intercept.MethodInterceptor;\r\n+import org.aopalliance.intercept.MethodInvocation;\r\n+import org.springframework.beans.factory.FactoryBean;\r\n+import org.springframework.beans.factory.InitializingBean;\r\n+import org.springframework.context.ApplicationContext;\r\n+import org.springframework.context.ApplicationContextAware;\r\n+import org.springframework.remoting.support.RemoteInvocationBasedAccessor;\r\n+\r\n+/**\r\n+ * JsonRpcProxyFactoryBean\r\n+ */\r\n+public class JsonRpcProxyFactoryBean extends RemoteInvocationBasedAccessor\r\n+        implements MethodInterceptor,\r\n+        InitializingBean,\r\n+        FactoryBean<Object>,\r\n+        ApplicationContextAware {\r\n+    private final JsonProxyFactoryBean jsonProxyFactoryBean;\r\n+\r\n+    public JsonRpcProxyFactoryBean(JsonProxyFactoryBean factoryBean) {\r\n+        this.jsonProxyFactoryBean = factoryBean;\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public void afterPropertiesSet() {\r\n+        jsonProxyFactoryBean.afterPropertiesSet();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object invoke(MethodInvocation invocation)\r\n+            throws Throwable {\r\n+\r\n+        return jsonProxyFactoryBean.invoke(invocation);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getObject() {\r\n+        return jsonProxyFactoryBean.getObject();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Class<?> getObjectType() {\r\n+        return jsonProxyFactoryBean.getObjectType();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isSingleton() {\r\n+        return jsonProxyFactoryBean.isSingleton();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setApplicationContext(ApplicationContext applicationContext) {\r\n+        jsonProxyFactoryBean.setApplicationContext(applicationContext);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setServiceUrl(String serviceUrl) {\r\n+        jsonProxyFactoryBean.setServiceUrl(serviceUrl);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setServiceInterface(Class<?> serviceInterface) {\r\n+        jsonProxyFactoryBean.setServiceInterface(serviceInterface);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/rpc/protocol/rmi/RmiRemoteInvocation.java", "source2": "com/alibaba/dubbo/rpc/protocol/rmi/RmiRemoteInvocation.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,39 +1,39 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package com.alibaba.dubbo.rpc.protocol.rmi;\n-\n-import org.aopalliance.intercept.MethodInvocation;\n-\n-/**\n- * This class is deprecated, please use {@link org.apache.dubbo.rpc.protocol.rmi.RmiRemoteInvocation}.\n- *\n- * @author chickenlj\n- * @deprecated\n- */\n-@Deprecated\n-public class RmiRemoteInvocation extends org.apache.dubbo.rpc.protocol.rmi.RmiRemoteInvocation {\n-    private static final long serialVersionUID = 1L;\n-\n-    /**\n-     * executed on consumer side\n-     *\n-     * @param methodInvocation\n-     */\n-    public RmiRemoteInvocation(MethodInvocation methodInvocation) {\n-        super(methodInvocation);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package com.alibaba.dubbo.rpc.protocol.rmi;\r\n+\r\n+import org.aopalliance.intercept.MethodInvocation;\r\n+\r\n+/**\r\n+ * This class is deprecated, please use {@link org.apache.dubbo.rpc.protocol.rmi.RmiRemoteInvocation}.\r\n+ *\r\n+ * @author chickenlj\r\n+ * @deprecated\r\n+ */\r\n+@Deprecated\r\n+public class RmiRemoteInvocation extends org.apache.dubbo.rpc.protocol.rmi.RmiRemoteInvocation {\r\n+    private static final long serialVersionUID = 1L;\r\n+\r\n+    /**\r\n+     * executed on consumer side\r\n+     *\r\n+     * @param methodInvocation\r\n+     */\r\n+    public RmiRemoteInvocation(MethodInvocation methodInvocation) {\r\n+        super(methodInvocation);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/rmi/RmiRemoteInvocation.java", "source2": "org/apache/dubbo/rpc/protocol/rmi/RmiRemoteInvocation.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,64 +1,64 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.rmi;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.rpc.RpcContext;\n-\n-import org.aopalliance.intercept.MethodInvocation;\n-import org.springframework.remoting.support.RemoteInvocation;\n-\n-import java.lang.reflect.InvocationTargetException;\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;\n-\n-public class RmiRemoteInvocation extends RemoteInvocation {\n-    private static final long serialVersionUID = 1L;\n-    private static final String DUBBO_ATTACHMENTS_ATTR_NAME = \"dubbo.attachments\";\n-\n-    /**\n-     * executed on consumer side\n-     */\n-    public RmiRemoteInvocation(MethodInvocation methodInvocation) {\n-        super(methodInvocation);\n-        addAttribute(DUBBO_ATTACHMENTS_ATTR_NAME, new HashMap<>(RpcContext.getContext().getObjectAttachments()));\n-    }\n-\n-    /**\n-     * Need to restore context on provider side (Though context will be overridden by Invocation's attachment\n-     * when ContextFilter gets executed, we will restore the attachment when Invocation is constructed, check more\n-     * from {@link org.apache.dubbo.rpc.proxy.InvokerInvocationHandler}\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    @Override\n-    public Object invoke(Object targetObject) throws NoSuchMethodException, IllegalAccessException,\n-            InvocationTargetException {\n-        RpcContext context = RpcContext.getContext();\n-        context.setObjectAttachments((Map<String, Object>) getAttribute(DUBBO_ATTACHMENTS_ATTR_NAME));\n-        String generic = (String) getAttribute(GENERIC_KEY);\n-        if (StringUtils.isNotEmpty(generic)) {\n-            context.setAttachment(GENERIC_KEY, generic);\n-        }\n-        try {\n-            return super.invoke(targetObject);\n-        } finally {\n-            context.setObjectAttachments(null);\n-        }\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.rmi;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+\r\n+import org.aopalliance.intercept.MethodInvocation;\r\n+import org.springframework.remoting.support.RemoteInvocation;\r\n+\r\n+import java.lang.reflect.InvocationTargetException;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;\r\n+\r\n+public class RmiRemoteInvocation extends RemoteInvocation {\r\n+    private static final long serialVersionUID = 1L;\r\n+    private static final String DUBBO_ATTACHMENTS_ATTR_NAME = \"dubbo.attachments\";\r\n+\r\n+    /**\r\n+     * executed on consumer side\r\n+     */\r\n+    public RmiRemoteInvocation(MethodInvocation methodInvocation) {\r\n+        super(methodInvocation);\r\n+        addAttribute(DUBBO_ATTACHMENTS_ATTR_NAME, new HashMap<>(RpcContext.getContext().getObjectAttachments()));\r\n+    }\r\n+\r\n+    /**\r\n+     * Need to restore context on provider side (Though context will be overridden by Invocation's attachment\r\n+     * when ContextFilter gets executed, we will restore the attachment when Invocation is constructed, check more\r\n+     * from {@link org.apache.dubbo.rpc.proxy.InvokerInvocationHandler}\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    @Override\r\n+    public Object invoke(Object targetObject) throws NoSuchMethodException, IllegalAccessException,\r\n+            InvocationTargetException {\r\n+        RpcContext context = RpcContext.getContext();\r\n+        context.setObjectAttachments((Map<String, Object>) getAttribute(DUBBO_ATTACHMENTS_ATTR_NAME));\r\n+        String generic = (String) getAttribute(GENERIC_KEY);\r\n+        if (StringUtils.isNotEmpty(generic)) {\r\n+            context.setAttachment(GENERIC_KEY, generic);\r\n+        }\r\n+        try {\r\n+            return super.invoke(targetObject);\r\n+        } finally {\r\n+            context.setObjectAttachments(null);\r\n+        }\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/rpc/protocol/hessian/Constants.java", "source2": "org/apache/dubbo/rpc/protocol/hessian/Constants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,35 +1,35 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.rpc.protocol.hessian;\n-\n-/**\n- *\n- */\n-public interface Constants {\n-\n-    String HESSIAN2_REQUEST_KEY = \"hessian2.request\";\n-\n-    boolean DEFAULT_HESSIAN2_REQUEST = false;\n-\n-    String HESSIAN_OVERLOAD_METHOD_KEY = \"hessian.overload.method\";\n-\n-    boolean DEFAULT_HESSIAN_OVERLOAD_METHOD = false;\n-\n-    String DEFAULT_HTTP_CLIENT = \"jdk\";\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.rpc.protocol.hessian;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+public interface Constants {\r\n+\r\n+    String HESSIAN2_REQUEST_KEY = \"hessian2.request\";\r\n+\r\n+    boolean DEFAULT_HESSIAN2_REQUEST = false;\r\n+\r\n+    String HESSIAN_OVERLOAD_METHOD_KEY = \"hessian.overload.method\";\r\n+\r\n+    boolean DEFAULT_HESSIAN_OVERLOAD_METHOD = false;\r\n+\r\n+    String DEFAULT_HTTP_CLIENT = \"jdk\";\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/hessian/DubboHessianURLConnectionFactory.java", "source2": "org/apache/dubbo/rpc/protocol/hessian/DubboHessianURLConnectionFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,41 +1,41 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.rpc.protocol.hessian;\n-\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.rpc.RpcContext;\n-\n-import com.caucho.hessian.client.HessianConnection;\n-import com.caucho.hessian.client.HessianURLConnectionFactory;\n-\n-import java.io.IOException;\n-import java.net.URL;\n-\n-public class DubboHessianURLConnectionFactory extends HessianURLConnectionFactory {\n-\n-    @Override\n-    public HessianConnection open(URL url) throws IOException {\n-        HessianConnection connection = super.open(url);\n-        RpcContext context = RpcContext.getContext();\n-        for (String key : context.getObjectAttachments().keySet()) {\n-            connection.addHeader(Constants.DEFAULT_EXCHANGER + key, context.getAttachment(key));\n-        }\n-\n-        return connection;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.rpc.protocol.hessian;\r\n+\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+\r\n+import com.caucho.hessian.client.HessianConnection;\r\n+import com.caucho.hessian.client.HessianURLConnectionFactory;\r\n+\r\n+import java.io.IOException;\r\n+import java.net.URL;\r\n+\r\n+public class DubboHessianURLConnectionFactory extends HessianURLConnectionFactory {\r\n+\r\n+    @Override\r\n+    public HessianConnection open(URL url) throws IOException {\r\n+        HessianConnection connection = super.open(url);\r\n+        RpcContext context = RpcContext.getContext();\r\n+        for (String key : context.getObjectAttachments().keySet()) {\r\n+            connection.addHeader(Constants.DEFAULT_EXCHANGER + key, context.getAttachment(key));\r\n+        }\r\n+\r\n+        return connection;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/hessian/HttpClientConnectionFactory.java", "source2": "org/apache/dubbo/rpc/protocol/hessian/HttpClientConnectionFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,58 +1,58 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.hessian;\n-\n-import org.apache.dubbo.rpc.RpcContext;\n-\n-import com.caucho.hessian.client.HessianConnection;\n-import com.caucho.hessian.client.HessianConnectionFactory;\n-import com.caucho.hessian.client.HessianProxyFactory;\n-import org.apache.http.client.HttpClient;\n-import org.apache.http.client.config.RequestConfig;\n-import org.apache.http.impl.client.HttpClientBuilder;\n-\n-import java.net.URL;\n-\n-import static org.apache.dubbo.remoting.Constants.DEFAULT_EXCHANGER;\n-\n-/**\n- * HttpClientConnectionFactory\n- * TODO, Consider using connection pool\n- */\n-public class HttpClientConnectionFactory implements HessianConnectionFactory {\n-\n-    private HttpClient httpClient;\n-\n-    @Override\n-    public void setHessianProxyFactory(HessianProxyFactory factory) {\n-        RequestConfig requestConfig = RequestConfig.custom()\n-                .setConnectionRequestTimeout((int) factory.getConnectTimeout())\n-                .setSocketTimeout((int) factory.getReadTimeout())\n-                .build();\n-        httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();\n-    }\n-\n-    @Override\n-    public HessianConnection open(URL url) {\n-        HttpClientConnection httpClientConnection = new HttpClientConnection(httpClient, url);\n-        RpcContext context = RpcContext.getContext();\n-        for (String key : context.getObjectAttachments().keySet()) {\n-            httpClientConnection.addHeader(DEFAULT_EXCHANGER + key, context.getAttachment(key));\n-        }\n-        return httpClientConnection;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.hessian;\r\n+\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+\r\n+import com.caucho.hessian.client.HessianConnection;\r\n+import com.caucho.hessian.client.HessianConnectionFactory;\r\n+import com.caucho.hessian.client.HessianProxyFactory;\r\n+import org.apache.http.client.HttpClient;\r\n+import org.apache.http.client.config.RequestConfig;\r\n+import org.apache.http.impl.client.HttpClientBuilder;\r\n+\r\n+import java.net.URL;\r\n+\r\n+import static org.apache.dubbo.remoting.Constants.DEFAULT_EXCHANGER;\r\n+\r\n+/**\r\n+ * HttpClientConnectionFactory\r\n+ * TODO, Consider using connection pool\r\n+ */\r\n+public class HttpClientConnectionFactory implements HessianConnectionFactory {\r\n+\r\n+    private HttpClient httpClient;\r\n+\r\n+    @Override\r\n+    public void setHessianProxyFactory(HessianProxyFactory factory) {\r\n+        RequestConfig requestConfig = RequestConfig.custom()\r\n+                .setConnectionRequestTimeout((int) factory.getConnectTimeout())\r\n+                .setSocketTimeout((int) factory.getReadTimeout())\r\n+                .build();\r\n+        httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build();\r\n+    }\r\n+\r\n+    @Override\r\n+    public HessianConnection open(URL url) {\r\n+        HttpClientConnection httpClientConnection = new HttpClientConnection(httpClient, url);\r\n+        RpcContext context = RpcContext.getContext();\r\n+        for (String key : context.getObjectAttachments().keySet()) {\r\n+            httpClientConnection.addHeader(DEFAULT_EXCHANGER + key, context.getAttachment(key));\r\n+        }\r\n+        return httpClientConnection;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/webservice/WebServiceProtocol.java", "source2": "org/apache/dubbo/rpc/protocol/webservice/WebServiceProtocol.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,211 +1,211 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.webservice;\n-\n-import org.apache.cxf.binding.soap.SoapTransportFactory;\n-import org.apache.cxf.common.util.StringUtils;\n-import org.apache.cxf.endpoint.Server;\n-import org.apache.cxf.service.model.OperationInfo;\n-import org.apache.cxf.transport.Destination;\n-\n-import org.apache.cxf.transport.http.HTTPConduit;\n-import org.apache.cxf.transport.http.AbstractHTTPDestination;\n-import org.apache.cxf.transport.http.DestinationRegistry;\n-import org.apache.cxf.transport.http.DestinationRegistryImpl;\n-import org.apache.cxf.transport.http.HttpDestinationFactory;\n-import org.apache.cxf.wsdl.service.factory.AbstractServiceConfiguration;\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.remoting.RemotingServer;\n-import org.apache.dubbo.remoting.http.HttpBinder;\n-import org.apache.dubbo.remoting.http.HttpHandler;\n-import org.apache.dubbo.remoting.http.servlet.DispatcherServlet;\n-import org.apache.dubbo.rpc.ProtocolServer;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.protocol.AbstractProxyProtocol;\n-\n-import org.apache.cxf.bus.extension.ExtensionManagerBus;\n-import org.apache.cxf.endpoint.Client;\n-import org.apache.cxf.frontend.ClientProxy;\n-import org.apache.cxf.frontend.ClientProxyFactoryBean;\n-import org.apache.cxf.frontend.ServerFactoryBean;\n-import org.apache.cxf.interceptor.Fault;\n-import org.apache.cxf.transport.servlet.ServletController;\n-import org.apache.cxf.transport.servlet.ServletDestinationFactory;\n-import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;\n-\n-import javax.servlet.ServletException;\n-import javax.servlet.http.HttpServlet;\n-import javax.servlet.http.HttpServletRequest;\n-import javax.servlet.http.HttpServletResponse;\n-import java.io.IOException;\n-import java.lang.reflect.Method;\n-import java.net.SocketTimeoutException;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.SERVICE_PATH_PREFIX;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_SERVER;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_SERVER_SERVLET;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-\n-/**\n- * WebServiceProtocol.\n- */\n-public class WebServiceProtocol extends AbstractProxyProtocol {\n-\n-    public static final int DEFAULT_PORT = 80;\n-\n-    private final ExtensionManagerBus bus = new ExtensionManagerBus();\n-\n-    private SoapTransportFactory transportFactory = null;\n-\n-    private ServerFactoryBean serverFactoryBean = null;\n-\n-    private DestinationRegistry destinationRegistry=null;\n-\n-    private HttpBinder httpBinder;\n-\n-    private Server server = null;\n-\n-    public WebServiceProtocol() {\n-        super(Fault.class);\n-        bus.setExtension(new ServletDestinationFactory(), HttpDestinationFactory.class);\n-    }\n-\n-    public void setHttpBinder(HttpBinder httpBinder) {\n-        this.httpBinder = httpBinder;\n-    }\n-\n-    @Override\n-    public int getDefaultPort() {\n-        return DEFAULT_PORT;\n-    }\n-\n-\n-    @Override\n-    protected <T> Runnable doExport(T impl, Class<T> type, URL url) throws RpcException {\n-        transportFactory = new SoapTransportFactory();\n-        destinationRegistry  = new DestinationRegistryImpl();\n-        String addr = getAddr(url);\n-        ProtocolServer protocolServer = serverMap.get(addr);\n-        if (protocolServer == null) {\n-            RemotingServer remotingServer = httpBinder.bind(url, new WebServiceHandler());\n-            serverMap.put(addr, new ProxyProtocolServer(remotingServer));\n-        }\n-        serverFactoryBean = new ServerFactoryBean();\n-        serverFactoryBean.setAddress(url.getAbsolutePath());\n-        serverFactoryBean.setServiceClass(type);\n-        serverFactoryBean.setServiceBean(impl);\n-        serverFactoryBean.setBus(bus);\n-        serverFactoryBean.setDestinationFactory(transportFactory);\n-        serverFactoryBean.getServiceFactory().getConfigurations().add(new URLHashMethodNameSoapActionServiceConfiguration());\n-        server = serverFactoryBean.create();\n-        return new Runnable() {\n-            @Override\n-            public void run() {\n-                if(serverFactoryBean.getServer()!= null) {\n-                    serverFactoryBean.getServer().destroy();\n-                }\n-                if(serverFactoryBean.getBus()!=null) {\n-                    serverFactoryBean.getBus().shutdown(true);\n-                }\n-                ProtocolServer httpServer = serverMap.get(addr);\n-                if(httpServer != null){\n-                    httpServer.close();\n-                    serverMap.remove(addr);\n-                }\n-            }\n-        };\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    protected <T> T doRefer(final Class<T> serviceType, URL url) throws RpcException {\n-        ClientProxyFactoryBean proxyFactoryBean = new ClientProxyFactoryBean();\n-        String servicePathPrefix = url.getParameter(SERVICE_PATH_PREFIX);\n-        if (!StringUtils.isEmpty(servicePathPrefix) && PROTOCOL_SERVER_SERVLET.equals(url.getParameter(PROTOCOL_SERVER))) {\n-            url = url.setPath(servicePathPrefix + \"/\" + url.getPath());\n-        }\n-        proxyFactoryBean.setAddress(url.setProtocol(\"http\").toIdentityString());\n-        proxyFactoryBean.setServiceClass(serviceType);\n-        proxyFactoryBean.setBus(bus);\n-        T ref = (T) proxyFactoryBean.create();\n-        Client proxy = ClientProxy.getClient(ref);\n-        HTTPConduit conduit = (HTTPConduit) proxy.getConduit();\n-        HTTPClientPolicy policy = new HTTPClientPolicy();\n-        policy.setConnectionTimeout(url.getParameter(Constants.CONNECT_TIMEOUT_KEY, Constants.DEFAULT_CONNECT_TIMEOUT));\n-        policy.setReceiveTimeout(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT));\n-        conduit.setClient(policy);\n-        return ref;\n-    }\n-\n-    @Override\n-    protected int getErrorCode(Throwable e) {\n-        if (e instanceof Fault) {\n-            e = e.getCause();\n-        }\n-        if (e instanceof SocketTimeoutException) {\n-            return RpcException.TIMEOUT_EXCEPTION;\n-        } else if (e instanceof IOException) {\n-            return RpcException.NETWORK_EXCEPTION;\n-        }\n-        return super.getErrorCode(e);\n-    }\n-\n-    private class WebServiceHandler implements HttpHandler {\n-\n-        private volatile ServletController servletController;\n-\n-        @Override\n-        public void handle(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {\n-            if (servletController == null) {\n-                HttpServlet httpServlet = DispatcherServlet.getInstance();\n-                if (httpServlet == null) {\n-                    response.sendError(500, \"No such DispatcherServlet instance.\");\n-                    return;\n-                }\n-                synchronized (this) {\n-                    if (servletController == null) {\n-\n-                        if(server == null){\n-                            server = WebServiceProtocol.this.serverFactoryBean.getServer();\n-                        }\n-                        Destination d = WebServiceProtocol.this.transportFactory.getDestination(server.getEndpoint().getEndpointInfo(),bus);\n-                        destinationRegistry.addDestination((AbstractHTTPDestination) d);\n-                        this.servletController = new ServletController(destinationRegistry, httpServlet.getServletConfig(), httpServlet);\n-                    }\n-                }\n-            }\n-            RpcContext.getContext().setRemoteAddress(request.getRemoteAddr(), request.getRemotePort());\n-            servletController.invoke(request, response);\n-        }\n-\n-    }\n-\n-    private class URLHashMethodNameSoapActionServiceConfiguration extends AbstractServiceConfiguration {\n-        public String getAction(OperationInfo op, Method method) {\n-            String uri = op.getName().getNamespaceURI();\n-            String action = op.getName().getLocalPart();\n-            if (StringUtils.isEmpty(action)) {\n-                action = method.getName();\n-            }\n-            return uri+\"#\"+action;\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.webservice;\r\n+\r\n+import org.apache.cxf.binding.soap.SoapTransportFactory;\r\n+import org.apache.cxf.common.util.StringUtils;\r\n+import org.apache.cxf.endpoint.Server;\r\n+import org.apache.cxf.service.model.OperationInfo;\r\n+import org.apache.cxf.transport.Destination;\r\n+\r\n+import org.apache.cxf.transport.http.HTTPConduit;\r\n+import org.apache.cxf.transport.http.AbstractHTTPDestination;\r\n+import org.apache.cxf.transport.http.DestinationRegistry;\r\n+import org.apache.cxf.transport.http.DestinationRegistryImpl;\r\n+import org.apache.cxf.transport.http.HttpDestinationFactory;\r\n+import org.apache.cxf.wsdl.service.factory.AbstractServiceConfiguration;\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.remoting.RemotingServer;\r\n+import org.apache.dubbo.remoting.http.HttpBinder;\r\n+import org.apache.dubbo.remoting.http.HttpHandler;\r\n+import org.apache.dubbo.remoting.http.servlet.DispatcherServlet;\r\n+import org.apache.dubbo.rpc.ProtocolServer;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.protocol.AbstractProxyProtocol;\r\n+\r\n+import org.apache.cxf.bus.extension.ExtensionManagerBus;\r\n+import org.apache.cxf.endpoint.Client;\r\n+import org.apache.cxf.frontend.ClientProxy;\r\n+import org.apache.cxf.frontend.ClientProxyFactoryBean;\r\n+import org.apache.cxf.frontend.ServerFactoryBean;\r\n+import org.apache.cxf.interceptor.Fault;\r\n+import org.apache.cxf.transport.servlet.ServletController;\r\n+import org.apache.cxf.transport.servlet.ServletDestinationFactory;\r\n+import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;\r\n+\r\n+import javax.servlet.ServletException;\r\n+import javax.servlet.http.HttpServlet;\r\n+import javax.servlet.http.HttpServletRequest;\r\n+import javax.servlet.http.HttpServletResponse;\r\n+import java.io.IOException;\r\n+import java.lang.reflect.Method;\r\n+import java.net.SocketTimeoutException;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SERVICE_PATH_PREFIX;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_SERVER;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_SERVER_SERVLET;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+\r\n+/**\r\n+ * WebServiceProtocol.\r\n+ */\r\n+public class WebServiceProtocol extends AbstractProxyProtocol {\r\n+\r\n+    public static final int DEFAULT_PORT = 80;\r\n+\r\n+    private final ExtensionManagerBus bus = new ExtensionManagerBus();\r\n+\r\n+    private SoapTransportFactory transportFactory = null;\r\n+\r\n+    private ServerFactoryBean serverFactoryBean = null;\r\n+\r\n+    private DestinationRegistry destinationRegistry=null;\r\n+\r\n+    private HttpBinder httpBinder;\r\n+\r\n+    private Server server = null;\r\n+\r\n+    public WebServiceProtocol() {\r\n+        super(Fault.class);\r\n+        bus.setExtension(new ServletDestinationFactory(), HttpDestinationFactory.class);\r\n+    }\r\n+\r\n+    public void setHttpBinder(HttpBinder httpBinder) {\r\n+        this.httpBinder = httpBinder;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getDefaultPort() {\r\n+        return DEFAULT_PORT;\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    protected <T> Runnable doExport(T impl, Class<T> type, URL url) throws RpcException {\r\n+        transportFactory = new SoapTransportFactory();\r\n+        destinationRegistry  = new DestinationRegistryImpl();\r\n+        String addr = getAddr(url);\r\n+        ProtocolServer protocolServer = serverMap.get(addr);\r\n+        if (protocolServer == null) {\r\n+            RemotingServer remotingServer = httpBinder.bind(url, new WebServiceHandler());\r\n+            serverMap.put(addr, new ProxyProtocolServer(remotingServer));\r\n+        }\r\n+        serverFactoryBean = new ServerFactoryBean();\r\n+        serverFactoryBean.setAddress(url.getAbsolutePath());\r\n+        serverFactoryBean.setServiceClass(type);\r\n+        serverFactoryBean.setServiceBean(impl);\r\n+        serverFactoryBean.setBus(bus);\r\n+        serverFactoryBean.setDestinationFactory(transportFactory);\r\n+        serverFactoryBean.getServiceFactory().getConfigurations().add(new URLHashMethodNameSoapActionServiceConfiguration());\r\n+        server = serverFactoryBean.create();\r\n+        return new Runnable() {\r\n+            @Override\r\n+            public void run() {\r\n+                if(serverFactoryBean.getServer()!= null) {\r\n+                    serverFactoryBean.getServer().destroy();\r\n+                }\r\n+                if(serverFactoryBean.getBus()!=null) {\r\n+                    serverFactoryBean.getBus().shutdown(true);\r\n+                }\r\n+                ProtocolServer httpServer = serverMap.get(addr);\r\n+                if(httpServer != null){\r\n+                    httpServer.close();\r\n+                    serverMap.remove(addr);\r\n+                }\r\n+            }\r\n+        };\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    protected <T> T doRefer(final Class<T> serviceType, URL url) throws RpcException {\r\n+        ClientProxyFactoryBean proxyFactoryBean = new ClientProxyFactoryBean();\r\n+        String servicePathPrefix = url.getParameter(SERVICE_PATH_PREFIX);\r\n+        if (!StringUtils.isEmpty(servicePathPrefix) && PROTOCOL_SERVER_SERVLET.equals(url.getParameter(PROTOCOL_SERVER))) {\r\n+            url = url.setPath(servicePathPrefix + \"/\" + url.getPath());\r\n+        }\r\n+        proxyFactoryBean.setAddress(url.setProtocol(\"http\").toIdentityString());\r\n+        proxyFactoryBean.setServiceClass(serviceType);\r\n+        proxyFactoryBean.setBus(bus);\r\n+        T ref = (T) proxyFactoryBean.create();\r\n+        Client proxy = ClientProxy.getClient(ref);\r\n+        HTTPConduit conduit = (HTTPConduit) proxy.getConduit();\r\n+        HTTPClientPolicy policy = new HTTPClientPolicy();\r\n+        policy.setConnectionTimeout(url.getParameter(Constants.CONNECT_TIMEOUT_KEY, Constants.DEFAULT_CONNECT_TIMEOUT));\r\n+        policy.setReceiveTimeout(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT));\r\n+        conduit.setClient(policy);\r\n+        return ref;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected int getErrorCode(Throwable e) {\r\n+        if (e instanceof Fault) {\r\n+            e = e.getCause();\r\n+        }\r\n+        if (e instanceof SocketTimeoutException) {\r\n+            return RpcException.TIMEOUT_EXCEPTION;\r\n+        } else if (e instanceof IOException) {\r\n+            return RpcException.NETWORK_EXCEPTION;\r\n+        }\r\n+        return super.getErrorCode(e);\r\n+    }\r\n+\r\n+    private class WebServiceHandler implements HttpHandler {\r\n+\r\n+        private volatile ServletController servletController;\r\n+\r\n+        @Override\r\n+        public void handle(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {\r\n+            if (servletController == null) {\r\n+                HttpServlet httpServlet = DispatcherServlet.getInstance();\r\n+                if (httpServlet == null) {\r\n+                    response.sendError(500, \"No such DispatcherServlet instance.\");\r\n+                    return;\r\n+                }\r\n+                synchronized (this) {\r\n+                    if (servletController == null) {\r\n+\r\n+                        if(server == null){\r\n+                            server = WebServiceProtocol.this.serverFactoryBean.getServer();\r\n+                        }\r\n+                        Destination d = WebServiceProtocol.this.transportFactory.getDestination(server.getEndpoint().getEndpointInfo(),bus);\r\n+                        destinationRegistry.addDestination((AbstractHTTPDestination) d);\r\n+                        this.servletController = new ServletController(destinationRegistry, httpServlet.getServletConfig(), httpServlet);\r\n+                    }\r\n+                }\r\n+            }\r\n+            RpcContext.getContext().setRemoteAddress(request.getRemoteAddr(), request.getRemotePort());\r\n+            servletController.invoke(request, response);\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    private class URLHashMethodNameSoapActionServiceConfiguration extends AbstractServiceConfiguration {\r\n+        public String getAction(OperationInfo op, Method method) {\r\n+            String uri = op.getName().getNamespaceURI();\r\n+            String action = op.getName().getLocalPart();\r\n+            if (StringUtils.isEmpty(action)) {\r\n+                action = method.getName();\r\n+            }\r\n+            return uri+\"#\"+action;\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/thrift/ClassNameGenerator.java", "source2": "org/apache/dubbo/rpc/protocol/thrift/ClassNameGenerator.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,31 +1,31 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.thrift;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-/**\n- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead\n- */\n-@Deprecated\n-@SPI(DubboClassNameGenerator.NAME)\n-public interface ClassNameGenerator {\n-\n-    String generateArgsClassName(String serviceName, String methodName);\n-\n-    String generateResultClassName(String serviceName, String methodName);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.thrift;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+/**\r\n+ * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead\r\n+ */\r\n+@Deprecated\r\n+@SPI(DubboClassNameGenerator.NAME)\r\n+public interface ClassNameGenerator {\r\n+\r\n+    String generateArgsClassName(String serviceName, String methodName);\r\n+\r\n+    String generateResultClassName(String serviceName, String methodName);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/thrift/DubboClassNameGenerator.java", "source2": "org/apache/dubbo/rpc/protocol/thrift/DubboClassNameGenerator.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,36 +1,36 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.thrift;\n-/**\n- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead\n- */\n-@Deprecated\n-public class DubboClassNameGenerator implements ClassNameGenerator {\n-\n-    public static final String NAME = \"dubbo\";\n-\n-    @Override\n-    public String generateArgsClassName(String serviceName, String methodName) {\n-        return ThriftUtils.generateMethodArgsClassName(serviceName, methodName);\n-    }\n-\n-    @Override\n-    public String generateResultClassName(String serviceName, String methodName) {\n-        return ThriftUtils.generateMethodResultClassName(serviceName, methodName);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.thrift;\r\n+/**\r\n+ * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead\r\n+ */\r\n+@Deprecated\r\n+public class DubboClassNameGenerator implements ClassNameGenerator {\r\n+\r\n+    public static final String NAME = \"dubbo\";\r\n+\r\n+    @Override\r\n+    public String generateArgsClassName(String serviceName, String methodName) {\r\n+        return ThriftUtils.generateMethodArgsClassName(serviceName, methodName);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String generateResultClassName(String serviceName, String methodName) {\r\n+        return ThriftUtils.generateMethodResultClassName(serviceName, methodName);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/thrift/ThriftCodec.java", "source2": "org/apache/dubbo/rpc/protocol/thrift/ThriftCodec.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,698 +1,698 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.thrift;\n-\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.utils.ClassUtils;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.Codec2;\n-import org.apache.dubbo.remoting.buffer.ChannelBuffer;\n-import org.apache.dubbo.remoting.buffer.ChannelBufferInputStream;\n-import org.apache.dubbo.remoting.exchange.Request;\n-import org.apache.dubbo.remoting.exchange.Response;\n-import org.apache.dubbo.rpc.AppResponse;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-import org.apache.dubbo.rpc.protocol.thrift.io.RandomAccessByteArrayOutputStream;\n-\n-import org.apache.thrift.TApplicationException;\n-import org.apache.thrift.TBase;\n-import org.apache.thrift.TException;\n-import org.apache.thrift.TFieldIdEnum;\n-import org.apache.thrift.protocol.TBinaryProtocol;\n-import org.apache.thrift.protocol.TMessage;\n-import org.apache.thrift.protocol.TMessageType;\n-import org.apache.thrift.protocol.TProtocol;\n-import org.apache.thrift.transport.TFramedTransport;\n-import org.apache.thrift.transport.TIOStreamTransport;\n-\n-import java.io.IOException;\n-import java.lang.reflect.Field;\n-import java.lang.reflect.InvocationTargetException;\n-import java.lang.reflect.Method;\n-import java.util.ArrayList;\n-import java.util.List;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-import java.util.concurrent.atomic.AtomicInteger;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\n-\n-/**\n- * Thrift framed protocol codec.\n- *\n- * <pre>\n- * |<-                                  message header                                  ->|<- message body ->|\n- * +----------------+----------------------+------------------+---------------------------+------------------+\n- * | magic (2 bytes)|message size (4 bytes)|head size(2 bytes)| version (1 byte) | header |   message body   |\n- * +----------------+----------------------+------------------+---------------------------+------------------+\n- * |<-                                               message size                                          ->|\n- * </pre>\n- *\n- * <p>\n- * <b>header fields in version 1</b>\n- * <ol>\n- * <li>string - service name</li>\n- * <li>long   - dubbo request id</li>\n- * </ol>\n- * </p>\n- */\n-\n-/**\n- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead\n- */\n-@Deprecated\n-public class ThriftCodec implements Codec2 {\n-\n-    public static final int MESSAGE_LENGTH_INDEX = 2;\n-    public static final int MESSAGE_HEADER_LENGTH_INDEX = 6;\n-    public static final int MESSAGE_SHORTEST_LENGTH = 10;\n-    public static final String NAME = \"thrift\";\n-    public static final String PARAMETER_CLASS_NAME_GENERATOR = \"class.name.generator\";\n-    public static final byte VERSION = (byte) 1;\n-    public static final short MAGIC = (short) 0xdabc;\n-    static final ConcurrentMap<Long, RequestData> CACHED_REQUEST =\n-            new ConcurrentHashMap<>();\n-    private static final AtomicInteger THRIFT_SEQ_ID = new AtomicInteger(0);\n-    private static final ConcurrentMap<String, Class<?>> CACHED_CLASS =\n-            new ConcurrentHashMap<>();\n-\n-    private static int nextSeqId() {\n-        return THRIFT_SEQ_ID.incrementAndGet();\n-    }\n-\n-    // just for test\n-    static int getSeqId() {\n-        return THRIFT_SEQ_ID.get();\n-    }\n-\n-    @Override\n-    public void encode(Channel channel, ChannelBuffer buffer, Object message)\n-            throws IOException {\n-\n-        if (message instanceof Request) {\n-            encodeRequest(channel, buffer, (Request) message);\n-        } else if (message instanceof Response) {\n-            encodeResponse(channel, buffer, (Response) message);\n-        } else {\n-            throw new UnsupportedOperationException(\"Thrift codec only support encode \"\n-                    + Request.class.getName() + \" and \" + Response.class.getName());\n-        }\n-\n-    }\n-\n-    @Override\n-    public Object decode(Channel channel, ChannelBuffer buffer) throws IOException {\n-\n-        int available = buffer.readableBytes();\n-\n-        if (available < MESSAGE_SHORTEST_LENGTH) {\n-\n-            return DecodeResult.NEED_MORE_INPUT;\n-\n-        } else {\n-\n-            TIOStreamTransport transport = new TIOStreamTransport(new ChannelBufferInputStream(buffer));\n-\n-            TBinaryProtocol protocol = new TBinaryProtocol(transport);\n-\n-            short magic;\n-            int messageLength;\n-\n-            try {\n-//                protocol.readI32(); // skip the first message length\n-                byte[] bytes = new byte[4];\n-                transport.read(bytes, 0, 4);\n-                magic = protocol.readI16();\n-                messageLength = protocol.readI32();\n-\n-            } catch (TException e) {\n-                throw new IOException(e.getMessage(), e);\n-            }\n-\n-            if (MAGIC != magic) {\n-                throw new IOException(\"Unknown magic code \" + magic);\n-            }\n-\n-            if (available < messageLength) {\n-                return DecodeResult.NEED_MORE_INPUT;\n-            }\n-\n-            return decode(protocol);\n-\n-        }\n-\n-    }\n-\n-    private Object decode(TProtocol protocol)\n-            throws IOException {\n-\n-        // version\n-        String serviceName;\n-        String path;\n-        long id;\n-\n-        TMessage message;\n-\n-        try {\n-            protocol.readI16();\n-            protocol.readByte();\n-            serviceName = protocol.readString();\n-            path = protocol.readString();\n-            id = protocol.readI64();\n-            message = protocol.readMessageBegin();\n-        } catch (TException e) {\n-            throw new IOException(e.getMessage(), e);\n-        }\n-\n-        if (message.type == TMessageType.CALL) {\n-\n-            RpcInvocation result = new RpcInvocation();\n-            result.setAttachment(INTERFACE_KEY, serviceName);\n-            result.setAttachment(PATH_KEY, path);\n-            result.setMethodName(message.name);\n-\n-            String argsClassName = ExtensionLoader.getExtensionLoader(ClassNameGenerator.class)\n-                    .getExtension(ThriftClassNameGenerator.NAME).generateArgsClassName(serviceName, message.name);\n-\n-            if (StringUtils.isEmpty(argsClassName)) {\n-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION,\n-                        \"The specified interface name incorrect.\");\n-            }\n-\n-            Class clazz = CACHED_CLASS.get(argsClassName);\n-\n-            if (clazz == null) {\n-                try {\n-\n-                    clazz = ClassUtils.forNameWithThreadContextClassLoader(argsClassName);\n-\n-                    CACHED_CLASS.putIfAbsent(argsClassName, clazz);\n-\n-                } catch (ClassNotFoundException e) {\n-                    throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-                }\n-            }\n-\n-            TBase args;\n-\n-            try {\n-                args = (TBase) clazz.newInstance();\n-            } catch (InstantiationException | IllegalAccessException e) {\n-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-            }\n-\n-            try {\n-                args.read(protocol);\n-                protocol.readMessageEnd();\n-            } catch (TException e) {\n-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-            }\n-\n-            List<Object> parameters = new ArrayList<>();\n-            List<Class<?>> parameterTypes = new ArrayList<>();\n-            int index = 1;\n-\n-            while (true) {\n-\n-                TFieldIdEnum fieldIdEnum = args.fieldForId(index++);\n-\n-                if (fieldIdEnum == null) {\n-                    break;\n-                }\n-\n-                String fieldName = fieldIdEnum.getFieldName();\n-\n-                String getMethodName = ThriftUtils.generateGetMethodName(fieldName);\n-\n-                Method getMethod;\n-\n-                try {\n-                    getMethod = clazz.getMethod(getMethodName);\n-                } catch (NoSuchMethodException e) {\n-                    throw new RpcException(\n-                            RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-                }\n-\n-                parameterTypes.add(getMethod.getReturnType());\n-                try {\n-                    parameters.add(getMethod.invoke(args));\n-                } catch (IllegalAccessException | InvocationTargetException e) {\n-                    throw new RpcException(\n-                            RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-                }\n-\n-            }\n-\n-            result.setArguments(parameters.toArray());\n-            result.setParameterTypes(parameterTypes.toArray(new Class[0]));\n-\n-            Request request = new Request(id);\n-            request.setData(result);\n-\n-            CACHED_REQUEST.putIfAbsent(id,\n-                    RequestData.create(message.seqid, serviceName, message.name));\n-\n-            return request;\n-\n-        } else if (message.type == TMessageType.EXCEPTION) {\n-\n-            TApplicationException exception;\n-\n-            try {\n-                exception = TApplicationException.readFrom(protocol);\n-                protocol.readMessageEnd();\n-            } catch (TException e) {\n-                throw new IOException(e.getMessage(), e);\n-            }\n-\n-            AppResponse result = new AppResponse();\n-\n-            result.setException(new RpcException(exception.getMessage()));\n-\n-            Response response = new Response();\n-\n-            response.setResult(result);\n-\n-            response.setId(id);\n-\n-            return response;\n-\n-        } else if (message.type == TMessageType.REPLY) {\n-\n-            String resultClassName = ExtensionLoader.getExtensionLoader(ClassNameGenerator.class)\n-                    .getExtension(ThriftClassNameGenerator.NAME).generateResultClassName(serviceName, message.name);\n-\n-            if (StringUtils.isEmpty(resultClassName)) {\n-                throw new IllegalArgumentException(\"Could not infer service result class name from service name \"\n-                        + serviceName + \", the service name you specified may not generated by thrift idl compiler\");\n-            }\n-\n-            Class<?> clazz = CACHED_CLASS.get(resultClassName);\n-\n-            if (clazz == null) {\n-\n-                try {\n-\n-                    clazz = ClassUtils.forNameWithThreadContextClassLoader(resultClassName);\n-\n-                    CACHED_CLASS.putIfAbsent(resultClassName, clazz);\n-\n-                } catch (ClassNotFoundException e) {\n-                    throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-                }\n-\n-            }\n-\n-            TBase<?, ? extends TFieldIdEnum> result;\n-            try {\n-                result = (TBase<?, ?>) clazz.newInstance();\n-            } catch (InstantiationException | IllegalAccessException e) {\n-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-            }\n-\n-            try {\n-                result.read(protocol);\n-                protocol.readMessageEnd();\n-            } catch (TException e) {\n-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-            }\n-\n-            Object realResult = null;\n-\n-            int index = 0;\n-\n-            while (true) {\n-\n-                TFieldIdEnum fieldIdEnum = result.fieldForId(index++);\n-\n-                if (fieldIdEnum == null) {\n-                    break;\n-                }\n-\n-                Field field;\n-\n-                try {\n-                    field = clazz.getDeclaredField(fieldIdEnum.getFieldName());\n-                    ReflectUtils.makeAccessible(field);\n-                } catch (NoSuchFieldException e) {\n-                    throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-                }\n-\n-                try {\n-                    realResult = field.get(result);\n-                } catch (IllegalAccessException e) {\n-                    throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-                }\n-\n-                if (realResult != null) {\n-                    break;\n-                }\n-\n-            }\n-\n-            Response response = new Response();\n-\n-            response.setId(id);\n-\n-            AppResponse appResponse = new AppResponse();\n-\n-            if (realResult instanceof Throwable) {\n-                appResponse.setException((Throwable) realResult);\n-            } else {\n-                appResponse.setValue(realResult);\n-            }\n-\n-            response.setResult(appResponse);\n-\n-            return response;\n-\n-        } else {\n-            // Impossible\n-            throw new IOException();\n-        }\n-\n-    }\n-\n-    private void encodeRequest(Channel channel, ChannelBuffer buffer, Request request)\n-            throws IOException {\n-\n-        RpcInvocation inv = (RpcInvocation) request.getData();\n-\n-        int seqId = nextSeqId();\n-\n-        String serviceName = inv.getAttachment(INTERFACE_KEY);\n-\n-        if (StringUtils.isEmpty(serviceName)) {\n-            throw new IllegalArgumentException(\"Could not find service name in attachment with key \"\n-                    + INTERFACE_KEY);\n-        }\n-\n-        TMessage message = new TMessage(\n-                inv.getMethodName(),\n-                TMessageType.CALL,\n-                seqId);\n-\n-        String methodArgs = ExtensionLoader.getExtensionLoader(ClassNameGenerator.class)\n-                .getExtension(channel.getUrl().getParameter(ThriftConstants.CLASS_NAME_GENERATOR_KEY, ThriftClassNameGenerator.NAME))\n-                .generateArgsClassName(serviceName, inv.getMethodName());\n-\n-        if (StringUtils.isEmpty(methodArgs)) {\n-            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION,\n-                    \"Could not encode request, the specified interface may be incorrect.\");\n-        }\n-\n-        Class<?> clazz = CACHED_CLASS.get(methodArgs);\n-\n-        if (clazz == null) {\n-\n-            try {\n-\n-                clazz = ClassUtils.forNameWithThreadContextClassLoader(methodArgs);\n-\n-                CACHED_CLASS.putIfAbsent(methodArgs, clazz);\n-\n-            } catch (ClassNotFoundException e) {\n-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-            }\n-\n-        }\n-\n-        TBase args;\n-\n-        try {\n-            args = (TBase) clazz.newInstance();\n-        } catch (InstantiationException | IllegalAccessException e) {\n-            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-        }\n-\n-        for (int i = 0; i < inv.getArguments().length; i++) {\n-\n-            Object obj = inv.getArguments()[i];\n-\n-            if (obj == null) {\n-                continue;\n-            }\n-\n-            TFieldIdEnum field = args.fieldForId(i + 1);\n-\n-            String setMethodName = ThriftUtils.generateSetMethodName(field.getFieldName());\n-\n-            Method method;\n-\n-            try {\n-                method = clazz.getMethod(setMethodName, inv.getParameterTypes()[i]);\n-            } catch (NoSuchMethodException e) {\n-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-            }\n-\n-            try {\n-                method.invoke(args, obj);\n-            } catch (IllegalAccessException | InvocationTargetException e) {\n-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-            }\n-\n-        }\n-\n-        RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream(1024);\n-\n-        TIOStreamTransport transport = new TIOStreamTransport(bos);\n-\n-        TBinaryProtocol protocol = new TBinaryProtocol(transport);\n-\n-        int headerLength, messageLength;\n-\n-        byte[] bytes = new byte[4];\n-        try {\n-            // magic\n-            protocol.writeI16(MAGIC);\n-            // message length placeholder\n-            protocol.writeI32(Integer.MAX_VALUE);\n-            // message header length placeholder\n-            protocol.writeI16(Short.MAX_VALUE);\n-            // version\n-            protocol.writeByte(VERSION);\n-            // service name\n-            protocol.writeString(serviceName);\n-            // path\n-            protocol.writeString(inv.getAttachment(PATH_KEY));\n-            // dubbo request id\n-            protocol.writeI64(request.getId());\n-            protocol.getTransport().flush();\n-            // header size\n-            headerLength = bos.size();\n-\n-            // message body\n-            protocol.writeMessageBegin(message);\n-            args.write(protocol);\n-            protocol.writeMessageEnd();\n-            protocol.getTransport().flush();\n-            int oldIndex = messageLength = bos.size();\n-\n-            // fill in message length and header length\n-            try {\n-                TFramedTransport.encodeFrameSize(messageLength, bytes);\n-                bos.setWriteIndex(MESSAGE_LENGTH_INDEX);\n-                protocol.writeI32(messageLength);\n-                bos.setWriteIndex(MESSAGE_HEADER_LENGTH_INDEX);\n-                protocol.writeI16((short) (0xffff & headerLength));\n-            } finally {\n-                bos.setWriteIndex(oldIndex);\n-            }\n-\n-        } catch (TException e) {\n-            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-        }\n-\n-        buffer.writeBytes(bytes);\n-        buffer.writeBytes(bos.toByteArray());\n-\n-    }\n-\n-    private void encodeResponse(Channel channel, ChannelBuffer buffer, Response response)\n-            throws IOException {\n-\n-        AppResponse result = (AppResponse) response.getResult();\n-\n-        RequestData rd = CACHED_REQUEST.get(response.getId());\n-\n-        String resultClassName = ExtensionLoader.getExtensionLoader(ClassNameGenerator.class).getExtension(\n-                channel.getUrl().getParameter(ThriftConstants.CLASS_NAME_GENERATOR_KEY, ThriftClassNameGenerator.NAME))\n-                .generateResultClassName(rd.serviceName, rd.methodName);\n-\n-        if (StringUtils.isEmpty(resultClassName)) {\n-            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION,\n-                    \"Could not encode response, the specified interface may be incorrect.\");\n-        }\n-\n-        Class clazz = CACHED_CLASS.get(resultClassName);\n-\n-        if (clazz == null) {\n-\n-            try {\n-                clazz = ClassUtils.forNameWithThreadContextClassLoader(resultClassName);\n-                CACHED_CLASS.putIfAbsent(resultClassName, clazz);\n-            } catch (ClassNotFoundException e) {\n-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-            }\n-\n-        }\n-\n-        TBase resultObj;\n-\n-        try {\n-            resultObj = (TBase) clazz.newInstance();\n-        } catch (InstantiationException | IllegalAccessException e) {\n-            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-        }\n-\n-        TApplicationException applicationException = null;\n-        TMessage message;\n-\n-        if (result.hasException()) {\n-            Throwable throwable = result.getException();\n-            int index = 1;\n-            boolean found = false;\n-            while (true) {\n-                TFieldIdEnum fieldIdEnum = resultObj.fieldForId(index++);\n-                if (fieldIdEnum == null) {\n-                    break;\n-                }\n-                String fieldName = fieldIdEnum.getFieldName();\n-                String getMethodName = ThriftUtils.generateGetMethodName(fieldName);\n-                String setMethodName = ThriftUtils.generateSetMethodName(fieldName);\n-                Method getMethod;\n-                Method setMethod;\n-                try {\n-                    getMethod = clazz.getMethod(getMethodName);\n-                    if (getMethod.getReturnType().equals(throwable.getClass())) {\n-                        found = true;\n-                        setMethod = clazz.getMethod(setMethodName, throwable.getClass());\n-                        setMethod.invoke(resultObj, throwable);\n-                    }\n-                } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {\n-                    throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-                }\n-            }\n-\n-            if (!found) {\n-                applicationException = new TApplicationException(throwable.getMessage());\n-            }\n-\n-        } else {\n-            Object realResult = result.getValue();\n-            // result field id is 0\n-            String fieldName = resultObj.fieldForId(0).getFieldName();\n-            String setMethodName = ThriftUtils.generateSetMethodName(fieldName);\n-            String getMethodName = ThriftUtils.generateGetMethodName(fieldName);\n-            Method getMethod;\n-            Method setMethod;\n-            try {\n-                getMethod = clazz.getMethod(getMethodName);\n-                setMethod = clazz.getMethod(setMethodName, getMethod.getReturnType());\n-                setMethod.invoke(resultObj, realResult);\n-            } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {\n-                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-            }\n-\n-        }\n-\n-        if (applicationException != null) {\n-            message = new TMessage(rd.methodName, TMessageType.EXCEPTION, rd.id);\n-        } else {\n-            message = new TMessage(rd.methodName, TMessageType.REPLY, rd.id);\n-        }\n-\n-        RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream(1024);\n-\n-        TIOStreamTransport transport = new TIOStreamTransport(bos);\n-\n-        TBinaryProtocol protocol = new TBinaryProtocol(transport);\n-\n-        int messageLength;\n-        int headerLength;\n-\n-        byte[] bytes = new byte[4];\n-        try {\n-            // magic\n-            protocol.writeI16(MAGIC);\n-            // message length\n-            protocol.writeI32(Integer.MAX_VALUE);\n-            // message header length\n-            protocol.writeI16(Short.MAX_VALUE);\n-            // version\n-            protocol.writeByte(VERSION);\n-            // service name\n-            protocol.writeString(rd.serviceName);\n-            // id\n-            protocol.writeI64(response.getId());\n-            protocol.getTransport().flush();\n-            headerLength = bos.size();\n-\n-            // message\n-            protocol.writeMessageBegin(message);\n-            switch (message.type) {\n-                case TMessageType.EXCEPTION:\n-                    applicationException.write(protocol);\n-                    break;\n-                case TMessageType.REPLY:\n-                    resultObj.write(protocol);\n-                    break;\n-                default:\n-            }\n-            protocol.writeMessageEnd();\n-            protocol.getTransport().flush();\n-            int oldIndex = messageLength = bos.size();\n-\n-            try {\n-                TFramedTransport.encodeFrameSize(messageLength, bytes);\n-                bos.setWriteIndex(MESSAGE_LENGTH_INDEX);\n-                protocol.writeI32(messageLength);\n-                bos.setWriteIndex(MESSAGE_HEADER_LENGTH_INDEX);\n-                protocol.writeI16((short) (0xffff & headerLength));\n-            } finally {\n-                bos.setWriteIndex(oldIndex);\n-            }\n-\n-        } catch (TException e) {\n-            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\n-        }\n-\n-        buffer.writeBytes(bytes);\n-        buffer.writeBytes(bos.toByteArray());\n-\n-    }\n-\n-    static class RequestData {\n-        int id;\n-        String serviceName;\n-        String methodName;\n-\n-        static RequestData create(int id, String sn, String mn) {\n-            RequestData result = new RequestData();\n-            result.id = id;\n-            result.serviceName = sn;\n-            result.methodName = mn;\n-            return result;\n-        }\n-\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.thrift;\r\n+\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.utils.ClassUtils;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.Codec2;\r\n+import org.apache.dubbo.remoting.buffer.ChannelBuffer;\r\n+import org.apache.dubbo.remoting.buffer.ChannelBufferInputStream;\r\n+import org.apache.dubbo.remoting.exchange.Request;\r\n+import org.apache.dubbo.remoting.exchange.Response;\r\n+import org.apache.dubbo.rpc.AppResponse;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+import org.apache.dubbo.rpc.protocol.thrift.io.RandomAccessByteArrayOutputStream;\r\n+\r\n+import org.apache.thrift.TApplicationException;\r\n+import org.apache.thrift.TBase;\r\n+import org.apache.thrift.TException;\r\n+import org.apache.thrift.TFieldIdEnum;\r\n+import org.apache.thrift.protocol.TBinaryProtocol;\r\n+import org.apache.thrift.protocol.TMessage;\r\n+import org.apache.thrift.protocol.TMessageType;\r\n+import org.apache.thrift.protocol.TProtocol;\r\n+import org.apache.thrift.transport.TFramedTransport;\r\n+import org.apache.thrift.transport.TIOStreamTransport;\r\n+\r\n+import java.io.IOException;\r\n+import java.lang.reflect.Field;\r\n+import java.lang.reflect.InvocationTargetException;\r\n+import java.lang.reflect.Method;\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+import java.util.concurrent.atomic.AtomicInteger;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\r\n+\r\n+/**\r\n+ * Thrift framed protocol codec.\r\n+ *\r\n+ * <pre>\r\n+ * |<-                                  message header                                  ->|<- message body ->|\r\n+ * +----------------+----------------------+------------------+---------------------------+------------------+\r\n+ * | magic (2 bytes)|message size (4 bytes)|head size(2 bytes)| version (1 byte) | header |   message body   |\r\n+ * +----------------+----------------------+------------------+---------------------------+------------------+\r\n+ * |<-                                               message size                                          ->|\r\n+ * </pre>\r\n+ *\r\n+ * <p>\r\n+ * <b>header fields in version 1</b>\r\n+ * <ol>\r\n+ * <li>string - service name</li>\r\n+ * <li>long   - dubbo request id</li>\r\n+ * </ol>\r\n+ * </p>\r\n+ */\r\n+\r\n+/**\r\n+ * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead\r\n+ */\r\n+@Deprecated\r\n+public class ThriftCodec implements Codec2 {\r\n+\r\n+    public static final int MESSAGE_LENGTH_INDEX = 2;\r\n+    public static final int MESSAGE_HEADER_LENGTH_INDEX = 6;\r\n+    public static final int MESSAGE_SHORTEST_LENGTH = 10;\r\n+    public static final String NAME = \"thrift\";\r\n+    public static final String PARAMETER_CLASS_NAME_GENERATOR = \"class.name.generator\";\r\n+    public static final byte VERSION = (byte) 1;\r\n+    public static final short MAGIC = (short) 0xdabc;\r\n+    static final ConcurrentMap<Long, RequestData> CACHED_REQUEST =\r\n+            new ConcurrentHashMap<>();\r\n+    private static final AtomicInteger THRIFT_SEQ_ID = new AtomicInteger(0);\r\n+    private static final ConcurrentMap<String, Class<?>> CACHED_CLASS =\r\n+            new ConcurrentHashMap<>();\r\n+\r\n+    private static int nextSeqId() {\r\n+        return THRIFT_SEQ_ID.incrementAndGet();\r\n+    }\r\n+\r\n+    // just for test\r\n+    static int getSeqId() {\r\n+        return THRIFT_SEQ_ID.get();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void encode(Channel channel, ChannelBuffer buffer, Object message)\r\n+            throws IOException {\r\n+\r\n+        if (message instanceof Request) {\r\n+            encodeRequest(channel, buffer, (Request) message);\r\n+        } else if (message instanceof Response) {\r\n+            encodeResponse(channel, buffer, (Response) message);\r\n+        } else {\r\n+            throw new UnsupportedOperationException(\"Thrift codec only support encode \"\r\n+                    + Request.class.getName() + \" and \" + Response.class.getName());\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object decode(Channel channel, ChannelBuffer buffer) throws IOException {\r\n+\r\n+        int available = buffer.readableBytes();\r\n+\r\n+        if (available < MESSAGE_SHORTEST_LENGTH) {\r\n+\r\n+            return DecodeResult.NEED_MORE_INPUT;\r\n+\r\n+        } else {\r\n+\r\n+            TIOStreamTransport transport = new TIOStreamTransport(new ChannelBufferInputStream(buffer));\r\n+\r\n+            TBinaryProtocol protocol = new TBinaryProtocol(transport);\r\n+\r\n+            short magic;\r\n+            int messageLength;\r\n+\r\n+            try {\r\n+//                protocol.readI32(); // skip the first message length\r\n+                byte[] bytes = new byte[4];\r\n+                transport.read(bytes, 0, 4);\r\n+                magic = protocol.readI16();\r\n+                messageLength = protocol.readI32();\r\n+\r\n+            } catch (TException e) {\r\n+                throw new IOException(e.getMessage(), e);\r\n+            }\r\n+\r\n+            if (MAGIC != magic) {\r\n+                throw new IOException(\"Unknown magic code \" + magic);\r\n+            }\r\n+\r\n+            if (available < messageLength) {\r\n+                return DecodeResult.NEED_MORE_INPUT;\r\n+            }\r\n+\r\n+            return decode(protocol);\r\n+\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    private Object decode(TProtocol protocol)\r\n+            throws IOException {\r\n+\r\n+        // version\r\n+        String serviceName;\r\n+        String path;\r\n+        long id;\r\n+\r\n+        TMessage message;\r\n+\r\n+        try {\r\n+            protocol.readI16();\r\n+            protocol.readByte();\r\n+            serviceName = protocol.readString();\r\n+            path = protocol.readString();\r\n+            id = protocol.readI64();\r\n+            message = protocol.readMessageBegin();\r\n+        } catch (TException e) {\r\n+            throw new IOException(e.getMessage(), e);\r\n+        }\r\n+\r\n+        if (message.type == TMessageType.CALL) {\r\n+\r\n+            RpcInvocation result = new RpcInvocation();\r\n+            result.setAttachment(INTERFACE_KEY, serviceName);\r\n+            result.setAttachment(PATH_KEY, path);\r\n+            result.setMethodName(message.name);\r\n+\r\n+            String argsClassName = ExtensionLoader.getExtensionLoader(ClassNameGenerator.class)\r\n+                    .getExtension(ThriftClassNameGenerator.NAME).generateArgsClassName(serviceName, message.name);\r\n+\r\n+            if (StringUtils.isEmpty(argsClassName)) {\r\n+                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION,\r\n+                        \"The specified interface name incorrect.\");\r\n+            }\r\n+\r\n+            Class clazz = CACHED_CLASS.get(argsClassName);\r\n+\r\n+            if (clazz == null) {\r\n+                try {\r\n+\r\n+                    clazz = ClassUtils.forNameWithThreadContextClassLoader(argsClassName);\r\n+\r\n+                    CACHED_CLASS.putIfAbsent(argsClassName, clazz);\r\n+\r\n+                } catch (ClassNotFoundException e) {\r\n+                    throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+                }\r\n+            }\r\n+\r\n+            TBase args;\r\n+\r\n+            try {\r\n+                args = (TBase) clazz.newInstance();\r\n+            } catch (InstantiationException | IllegalAccessException e) {\r\n+                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+            }\r\n+\r\n+            try {\r\n+                args.read(protocol);\r\n+                protocol.readMessageEnd();\r\n+            } catch (TException e) {\r\n+                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+            }\r\n+\r\n+            List<Object> parameters = new ArrayList<>();\r\n+            List<Class<?>> parameterTypes = new ArrayList<>();\r\n+            int index = 1;\r\n+\r\n+            while (true) {\r\n+\r\n+                TFieldIdEnum fieldIdEnum = args.fieldForId(index++);\r\n+\r\n+                if (fieldIdEnum == null) {\r\n+                    break;\r\n+                }\r\n+\r\n+                String fieldName = fieldIdEnum.getFieldName();\r\n+\r\n+                String getMethodName = ThriftUtils.generateGetMethodName(fieldName);\r\n+\r\n+                Method getMethod;\r\n+\r\n+                try {\r\n+                    getMethod = clazz.getMethod(getMethodName);\r\n+                } catch (NoSuchMethodException e) {\r\n+                    throw new RpcException(\r\n+                            RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+                }\r\n+\r\n+                parameterTypes.add(getMethod.getReturnType());\r\n+                try {\r\n+                    parameters.add(getMethod.invoke(args));\r\n+                } catch (IllegalAccessException | InvocationTargetException e) {\r\n+                    throw new RpcException(\r\n+                            RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+                }\r\n+\r\n+            }\r\n+\r\n+            result.setArguments(parameters.toArray());\r\n+            result.setParameterTypes(parameterTypes.toArray(new Class[0]));\r\n+\r\n+            Request request = new Request(id);\r\n+            request.setData(result);\r\n+\r\n+            CACHED_REQUEST.putIfAbsent(id,\r\n+                    RequestData.create(message.seqid, serviceName, message.name));\r\n+\r\n+            return request;\r\n+\r\n+        } else if (message.type == TMessageType.EXCEPTION) {\r\n+\r\n+            TApplicationException exception;\r\n+\r\n+            try {\r\n+                exception = TApplicationException.readFrom(protocol);\r\n+                protocol.readMessageEnd();\r\n+            } catch (TException e) {\r\n+                throw new IOException(e.getMessage(), e);\r\n+            }\r\n+\r\n+            AppResponse result = new AppResponse();\r\n+\r\n+            result.setException(new RpcException(exception.getMessage()));\r\n+\r\n+            Response response = new Response();\r\n+\r\n+            response.setResult(result);\r\n+\r\n+            response.setId(id);\r\n+\r\n+            return response;\r\n+\r\n+        } else if (message.type == TMessageType.REPLY) {\r\n+\r\n+            String resultClassName = ExtensionLoader.getExtensionLoader(ClassNameGenerator.class)\r\n+                    .getExtension(ThriftClassNameGenerator.NAME).generateResultClassName(serviceName, message.name);\r\n+\r\n+            if (StringUtils.isEmpty(resultClassName)) {\r\n+                throw new IllegalArgumentException(\"Could not infer service result class name from service name \"\r\n+                        + serviceName + \", the service name you specified may not generated by thrift idl compiler\");\r\n+            }\r\n+\r\n+            Class<?> clazz = CACHED_CLASS.get(resultClassName);\r\n+\r\n+            if (clazz == null) {\r\n+\r\n+                try {\r\n+\r\n+                    clazz = ClassUtils.forNameWithThreadContextClassLoader(resultClassName);\r\n+\r\n+                    CACHED_CLASS.putIfAbsent(resultClassName, clazz);\r\n+\r\n+                } catch (ClassNotFoundException e) {\r\n+                    throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+                }\r\n+\r\n+            }\r\n+\r\n+            TBase<?, ? extends TFieldIdEnum> result;\r\n+            try {\r\n+                result = (TBase<?, ?>) clazz.newInstance();\r\n+            } catch (InstantiationException | IllegalAccessException e) {\r\n+                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+            }\r\n+\r\n+            try {\r\n+                result.read(protocol);\r\n+                protocol.readMessageEnd();\r\n+            } catch (TException e) {\r\n+                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+            }\r\n+\r\n+            Object realResult = null;\r\n+\r\n+            int index = 0;\r\n+\r\n+            while (true) {\r\n+\r\n+                TFieldIdEnum fieldIdEnum = result.fieldForId(index++);\r\n+\r\n+                if (fieldIdEnum == null) {\r\n+                    break;\r\n+                }\r\n+\r\n+                Field field;\r\n+\r\n+                try {\r\n+                    field = clazz.getDeclaredField(fieldIdEnum.getFieldName());\r\n+                    ReflectUtils.makeAccessible(field);\r\n+                } catch (NoSuchFieldException e) {\r\n+                    throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+                }\r\n+\r\n+                try {\r\n+                    realResult = field.get(result);\r\n+                } catch (IllegalAccessException e) {\r\n+                    throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+                }\r\n+\r\n+                if (realResult != null) {\r\n+                    break;\r\n+                }\r\n+\r\n+            }\r\n+\r\n+            Response response = new Response();\r\n+\r\n+            response.setId(id);\r\n+\r\n+            AppResponse appResponse = new AppResponse();\r\n+\r\n+            if (realResult instanceof Throwable) {\r\n+                appResponse.setException((Throwable) realResult);\r\n+            } else {\r\n+                appResponse.setValue(realResult);\r\n+            }\r\n+\r\n+            response.setResult(appResponse);\r\n+\r\n+            return response;\r\n+\r\n+        } else {\r\n+            // Impossible\r\n+            throw new IOException();\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    private void encodeRequest(Channel channel, ChannelBuffer buffer, Request request)\r\n+            throws IOException {\r\n+\r\n+        RpcInvocation inv = (RpcInvocation) request.getData();\r\n+\r\n+        int seqId = nextSeqId();\r\n+\r\n+        String serviceName = inv.getAttachment(INTERFACE_KEY);\r\n+\r\n+        if (StringUtils.isEmpty(serviceName)) {\r\n+            throw new IllegalArgumentException(\"Could not find service name in attachment with key \"\r\n+                    + INTERFACE_KEY);\r\n+        }\r\n+\r\n+        TMessage message = new TMessage(\r\n+                inv.getMethodName(),\r\n+                TMessageType.CALL,\r\n+                seqId);\r\n+\r\n+        String methodArgs = ExtensionLoader.getExtensionLoader(ClassNameGenerator.class)\r\n+                .getExtension(channel.getUrl().getParameter(ThriftConstants.CLASS_NAME_GENERATOR_KEY, ThriftClassNameGenerator.NAME))\r\n+                .generateArgsClassName(serviceName, inv.getMethodName());\r\n+\r\n+        if (StringUtils.isEmpty(methodArgs)) {\r\n+            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION,\r\n+                    \"Could not encode request, the specified interface may be incorrect.\");\r\n+        }\r\n+\r\n+        Class<?> clazz = CACHED_CLASS.get(methodArgs);\r\n+\r\n+        if (clazz == null) {\r\n+\r\n+            try {\r\n+\r\n+                clazz = ClassUtils.forNameWithThreadContextClassLoader(methodArgs);\r\n+\r\n+                CACHED_CLASS.putIfAbsent(methodArgs, clazz);\r\n+\r\n+            } catch (ClassNotFoundException e) {\r\n+                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+            }\r\n+\r\n+        }\r\n+\r\n+        TBase args;\r\n+\r\n+        try {\r\n+            args = (TBase) clazz.newInstance();\r\n+        } catch (InstantiationException | IllegalAccessException e) {\r\n+            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+        }\r\n+\r\n+        for (int i = 0; i < inv.getArguments().length; i++) {\r\n+\r\n+            Object obj = inv.getArguments()[i];\r\n+\r\n+            if (obj == null) {\r\n+                continue;\r\n+            }\r\n+\r\n+            TFieldIdEnum field = args.fieldForId(i + 1);\r\n+\r\n+            String setMethodName = ThriftUtils.generateSetMethodName(field.getFieldName());\r\n+\r\n+            Method method;\r\n+\r\n+            try {\r\n+                method = clazz.getMethod(setMethodName, inv.getParameterTypes()[i]);\r\n+            } catch (NoSuchMethodException e) {\r\n+                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+            }\r\n+\r\n+            try {\r\n+                method.invoke(args, obj);\r\n+            } catch (IllegalAccessException | InvocationTargetException e) {\r\n+                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+            }\r\n+\r\n+        }\r\n+\r\n+        RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream(1024);\r\n+\r\n+        TIOStreamTransport transport = new TIOStreamTransport(bos);\r\n+\r\n+        TBinaryProtocol protocol = new TBinaryProtocol(transport);\r\n+\r\n+        int headerLength, messageLength;\r\n+\r\n+        byte[] bytes = new byte[4];\r\n+        try {\r\n+            // magic\r\n+            protocol.writeI16(MAGIC);\r\n+            // message length placeholder\r\n+            protocol.writeI32(Integer.MAX_VALUE);\r\n+            // message header length placeholder\r\n+            protocol.writeI16(Short.MAX_VALUE);\r\n+            // version\r\n+            protocol.writeByte(VERSION);\r\n+            // service name\r\n+            protocol.writeString(serviceName);\r\n+            // path\r\n+            protocol.writeString(inv.getAttachment(PATH_KEY));\r\n+            // dubbo request id\r\n+            protocol.writeI64(request.getId());\r\n+            protocol.getTransport().flush();\r\n+            // header size\r\n+            headerLength = bos.size();\r\n+\r\n+            // message body\r\n+            protocol.writeMessageBegin(message);\r\n+            args.write(protocol);\r\n+            protocol.writeMessageEnd();\r\n+            protocol.getTransport().flush();\r\n+            int oldIndex = messageLength = bos.size();\r\n+\r\n+            // fill in message length and header length\r\n+            try {\r\n+                TFramedTransport.encodeFrameSize(messageLength, bytes);\r\n+                bos.setWriteIndex(MESSAGE_LENGTH_INDEX);\r\n+                protocol.writeI32(messageLength);\r\n+                bos.setWriteIndex(MESSAGE_HEADER_LENGTH_INDEX);\r\n+                protocol.writeI16((short) (0xffff & headerLength));\r\n+            } finally {\r\n+                bos.setWriteIndex(oldIndex);\r\n+            }\r\n+\r\n+        } catch (TException e) {\r\n+            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+        }\r\n+\r\n+        buffer.writeBytes(bytes);\r\n+        buffer.writeBytes(bos.toByteArray());\r\n+\r\n+    }\r\n+\r\n+    private void encodeResponse(Channel channel, ChannelBuffer buffer, Response response)\r\n+            throws IOException {\r\n+\r\n+        AppResponse result = (AppResponse) response.getResult();\r\n+\r\n+        RequestData rd = CACHED_REQUEST.get(response.getId());\r\n+\r\n+        String resultClassName = ExtensionLoader.getExtensionLoader(ClassNameGenerator.class).getExtension(\r\n+                channel.getUrl().getParameter(ThriftConstants.CLASS_NAME_GENERATOR_KEY, ThriftClassNameGenerator.NAME))\r\n+                .generateResultClassName(rd.serviceName, rd.methodName);\r\n+\r\n+        if (StringUtils.isEmpty(resultClassName)) {\r\n+            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION,\r\n+                    \"Could not encode response, the specified interface may be incorrect.\");\r\n+        }\r\n+\r\n+        Class clazz = CACHED_CLASS.get(resultClassName);\r\n+\r\n+        if (clazz == null) {\r\n+\r\n+            try {\r\n+                clazz = ClassUtils.forNameWithThreadContextClassLoader(resultClassName);\r\n+                CACHED_CLASS.putIfAbsent(resultClassName, clazz);\r\n+            } catch (ClassNotFoundException e) {\r\n+                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+            }\r\n+\r\n+        }\r\n+\r\n+        TBase resultObj;\r\n+\r\n+        try {\r\n+            resultObj = (TBase) clazz.newInstance();\r\n+        } catch (InstantiationException | IllegalAccessException e) {\r\n+            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+        }\r\n+\r\n+        TApplicationException applicationException = null;\r\n+        TMessage message;\r\n+\r\n+        if (result.hasException()) {\r\n+            Throwable throwable = result.getException();\r\n+            int index = 1;\r\n+            boolean found = false;\r\n+            while (true) {\r\n+                TFieldIdEnum fieldIdEnum = resultObj.fieldForId(index++);\r\n+                if (fieldIdEnum == null) {\r\n+                    break;\r\n+                }\r\n+                String fieldName = fieldIdEnum.getFieldName();\r\n+                String getMethodName = ThriftUtils.generateGetMethodName(fieldName);\r\n+                String setMethodName = ThriftUtils.generateSetMethodName(fieldName);\r\n+                Method getMethod;\r\n+                Method setMethod;\r\n+                try {\r\n+                    getMethod = clazz.getMethod(getMethodName);\r\n+                    if (getMethod.getReturnType().equals(throwable.getClass())) {\r\n+                        found = true;\r\n+                        setMethod = clazz.getMethod(setMethodName, throwable.getClass());\r\n+                        setMethod.invoke(resultObj, throwable);\r\n+                    }\r\n+                } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {\r\n+                    throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+                }\r\n+            }\r\n+\r\n+            if (!found) {\r\n+                applicationException = new TApplicationException(throwable.getMessage());\r\n+            }\r\n+\r\n+        } else {\r\n+            Object realResult = result.getValue();\r\n+            // result field id is 0\r\n+            String fieldName = resultObj.fieldForId(0).getFieldName();\r\n+            String setMethodName = ThriftUtils.generateSetMethodName(fieldName);\r\n+            String getMethodName = ThriftUtils.generateGetMethodName(fieldName);\r\n+            Method getMethod;\r\n+            Method setMethod;\r\n+            try {\r\n+                getMethod = clazz.getMethod(getMethodName);\r\n+                setMethod = clazz.getMethod(setMethodName, getMethod.getReturnType());\r\n+                setMethod.invoke(resultObj, realResult);\r\n+            } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {\r\n+                throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+            }\r\n+\r\n+        }\r\n+\r\n+        if (applicationException != null) {\r\n+            message = new TMessage(rd.methodName, TMessageType.EXCEPTION, rd.id);\r\n+        } else {\r\n+            message = new TMessage(rd.methodName, TMessageType.REPLY, rd.id);\r\n+        }\r\n+\r\n+        RandomAccessByteArrayOutputStream bos = new RandomAccessByteArrayOutputStream(1024);\r\n+\r\n+        TIOStreamTransport transport = new TIOStreamTransport(bos);\r\n+\r\n+        TBinaryProtocol protocol = new TBinaryProtocol(transport);\r\n+\r\n+        int messageLength;\r\n+        int headerLength;\r\n+\r\n+        byte[] bytes = new byte[4];\r\n+        try {\r\n+            // magic\r\n+            protocol.writeI16(MAGIC);\r\n+            // message length\r\n+            protocol.writeI32(Integer.MAX_VALUE);\r\n+            // message header length\r\n+            protocol.writeI16(Short.MAX_VALUE);\r\n+            // version\r\n+            protocol.writeByte(VERSION);\r\n+            // service name\r\n+            protocol.writeString(rd.serviceName);\r\n+            // id\r\n+            protocol.writeI64(response.getId());\r\n+            protocol.getTransport().flush();\r\n+            headerLength = bos.size();\r\n+\r\n+            // message\r\n+            protocol.writeMessageBegin(message);\r\n+            switch (message.type) {\r\n+                case TMessageType.EXCEPTION:\r\n+                    applicationException.write(protocol);\r\n+                    break;\r\n+                case TMessageType.REPLY:\r\n+                    resultObj.write(protocol);\r\n+                    break;\r\n+                default:\r\n+            }\r\n+            protocol.writeMessageEnd();\r\n+            protocol.getTransport().flush();\r\n+            int oldIndex = messageLength = bos.size();\r\n+\r\n+            try {\r\n+                TFramedTransport.encodeFrameSize(messageLength, bytes);\r\n+                bos.setWriteIndex(MESSAGE_LENGTH_INDEX);\r\n+                protocol.writeI32(messageLength);\r\n+                bos.setWriteIndex(MESSAGE_HEADER_LENGTH_INDEX);\r\n+                protocol.writeI16((short) (0xffff & headerLength));\r\n+            } finally {\r\n+                bos.setWriteIndex(oldIndex);\r\n+            }\r\n+\r\n+        } catch (TException e) {\r\n+            throw new RpcException(RpcException.SERIALIZATION_EXCEPTION, e.getMessage(), e);\r\n+        }\r\n+\r\n+        buffer.writeBytes(bytes);\r\n+        buffer.writeBytes(bos.toByteArray());\r\n+\r\n+    }\r\n+\r\n+    static class RequestData {\r\n+        int id;\r\n+        String serviceName;\r\n+        String methodName;\r\n+\r\n+        static RequestData create(int id, String sn, String mn) {\r\n+            RequestData result = new RequestData();\r\n+            result.id = id;\r\n+            result.serviceName = sn;\r\n+            result.methodName = mn;\r\n+            return result;\r\n+        }\r\n+\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/thrift/ThriftConstants.java", "source2": "org/apache/dubbo/rpc/protocol/thrift/ThriftConstants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,32 +1,32 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.thrift;\n-/**\n- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead\n- */\n-@Deprecated\n-public final class ThriftConstants {\n-\n-    public static final String THRIFT_PROTOCOL_KEY = \"thrift.protocol\";\n-    public static final String BINARY_THRIFT_PROTOCOL = \"binary\";\n-    public static final String CLASS_NAME_GENERATOR_KEY = \"class.name.generator\";\n-    public static final String DEFAULT_PROTOCOL = BINARY_THRIFT_PROTOCOL;\n-\n-    private ThriftConstants() {\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.thrift;\r\n+/**\r\n+ * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead\r\n+ */\r\n+@Deprecated\r\n+public final class ThriftConstants {\r\n+\r\n+    public static final String THRIFT_PROTOCOL_KEY = \"thrift.protocol\";\r\n+    public static final String BINARY_THRIFT_PROTOCOL = \"binary\";\r\n+    public static final String CLASS_NAME_GENERATOR_KEY = \"class.name.generator\";\r\n+    public static final String DEFAULT_PROTOCOL = BINARY_THRIFT_PROTOCOL;\r\n+\r\n+    private ThriftConstants() {\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/thrift/ThriftInvoker.java", "source2": "org/apache/dubbo/rpc/protocol/thrift/ThriftInvoker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,171 +1,171 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.thrift;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.AtomicPositiveInteger;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.TimeoutException;\n-import org.apache.dubbo.remoting.exchange.ExchangeClient;\n-import org.apache.dubbo.rpc.AppResponse;\n-import org.apache.dubbo.rpc.AsyncRpcResult;\n-import org.apache.dubbo.rpc.FutureContext;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.RpcInvocation;\n-import org.apache.dubbo.rpc.protocol.AbstractInvoker;\n-\n-import java.util.Set;\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.locks.ReentrantLock;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-import static org.apache.dubbo.remoting.Constants.CHANNEL_ATTRIBUTE_READONLY_KEY;\n-import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\n-\n-\n-/**\n- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead\n- */\n-@Deprecated\n-public class ThriftInvoker<T> extends AbstractInvoker<T> {\n-\n-    private final ExchangeClient[] clients;\n-\n-    private final AtomicPositiveInteger index = new AtomicPositiveInteger();\n-\n-    private final ReentrantLock destroyLock = new ReentrantLock();\n-\n-    private final Set<Invoker<?>> invokers;\n-\n-    public ThriftInvoker(Class<T> service, URL url, ExchangeClient[] clients) {\n-        this(service, url, clients, null);\n-    }\n-\n-    public ThriftInvoker(Class<T> type, URL url, ExchangeClient[] clients, Set<Invoker<?>> invokers) {\n-        super(type, url, new String[]{INTERFACE_KEY, GROUP_KEY, TOKEN_KEY});\n-        this.clients = clients;\n-        this.invokers = invokers;\n-    }\n-\n-    @Override\n-    protected Result doInvoke(Invocation invocation) throws Throwable {\n-\n-        RpcInvocation inv = (RpcInvocation) invocation;\n-\n-        final String methodName;\n-\n-        methodName = invocation.getMethodName();\n-\n-        inv.setAttachment(PATH_KEY, getUrl().getPath());\n-\n-        // for thrift codec\n-        inv.setAttachment(ThriftCodec.PARAMETER_CLASS_NAME_GENERATOR, getUrl().getParameter(\n-                ThriftCodec.PARAMETER_CLASS_NAME_GENERATOR, DubboClassNameGenerator.NAME));\n-\n-        ExchangeClient currentClient;\n-\n-        if (clients.length == 1) {\n-            currentClient = clients[0];\n-        } else {\n-            currentClient = clients[index.getAndIncrement() % clients.length];\n-        }\n-\n-        try {\n-            int timeout = getUrl().getMethodParameter(methodName, TIMEOUT_KEY, DEFAULT_TIMEOUT);\n-\n-            ExecutorService executor = getCallbackExecutor(getUrl(), inv);\n-            CompletableFuture<AppResponse> appResponseFuture = currentClient.request(inv, timeout, executor).thenApply(obj -> (AppResponse) obj);\n-            // save for 2.6.x compatibility, for example, TraceFilter in Zipkin uses com.alibaba.xxx.FutureAdapter\n-            FutureContext.getContext().setCompatibleFuture(appResponseFuture);\n-            AsyncRpcResult result = new AsyncRpcResult(appResponseFuture, invocation);\n-            result.setExecutor(executor);\n-            return result;\n-        } catch (TimeoutException e) {\n-            throw new RpcException(RpcException.TIMEOUT_EXCEPTION, e.getMessage(), e);\n-        } catch (RemotingException e) {\n-            throw new RpcException(RpcException.NETWORK_EXCEPTION, e.getMessage(), e);\n-        }\n-\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-\n-        if (!super.isAvailable()) {\n-            return false;\n-        }\n-\n-        for (ExchangeClient client : clients) {\n-            if (client.isConnected()\n-                    && !client.hasAttribute(CHANNEL_ATTRIBUTE_READONLY_KEY)) {\n-                //cannot write == not Available ?\n-                return true;\n-            }\n-        }\n-        return false;\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        // in order to avoid closing a client multiple times, a counter is used in case of connection per jvm, every\n-        // time when client.close() is called, counter counts down once, and when counter reaches zero, client will be\n-        // closed.\n-        if (super.isDestroyed()) {\n-            return;\n-        } else {\n-            // double check to avoid dup close\n-            destroyLock.lock();\n-\n-            try {\n-\n-                if (super.isDestroyed()) {\n-                    return;\n-                }\n-\n-                super.destroy();\n-\n-                if (invokers != null) {\n-                    invokers.remove(this);\n-                }\n-\n-                for (ExchangeClient client : clients) {\n-\n-                    try {\n-                        client.close();\n-                    } catch (Throwable t) {\n-                        logger.warn(t.getMessage(), t);\n-                    }\n-\n-                }\n-\n-            } finally {\n-                destroyLock.unlock();\n-            }\n-\n-        }\n-\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.thrift;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.AtomicPositiveInteger;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.TimeoutException;\r\n+import org.apache.dubbo.remoting.exchange.ExchangeClient;\r\n+import org.apache.dubbo.rpc.AppResponse;\r\n+import org.apache.dubbo.rpc.AsyncRpcResult;\r\n+import org.apache.dubbo.rpc.FutureContext;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.RpcInvocation;\r\n+import org.apache.dubbo.rpc.protocol.AbstractInvoker;\r\n+\r\n+import java.util.Set;\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.locks.ReentrantLock;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CHANNEL_ATTRIBUTE_READONLY_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\r\n+\r\n+\r\n+/**\r\n+ * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead\r\n+ */\r\n+@Deprecated\r\n+public class ThriftInvoker<T> extends AbstractInvoker<T> {\r\n+\r\n+    private final ExchangeClient[] clients;\r\n+\r\n+    private final AtomicPositiveInteger index = new AtomicPositiveInteger();\r\n+\r\n+    private final ReentrantLock destroyLock = new ReentrantLock();\r\n+\r\n+    private final Set<Invoker<?>> invokers;\r\n+\r\n+    public ThriftInvoker(Class<T> service, URL url, ExchangeClient[] clients) {\r\n+        this(service, url, clients, null);\r\n+    }\r\n+\r\n+    public ThriftInvoker(Class<T> type, URL url, ExchangeClient[] clients, Set<Invoker<?>> invokers) {\r\n+        super(type, url, new String[]{INTERFACE_KEY, GROUP_KEY, TOKEN_KEY});\r\n+        this.clients = clients;\r\n+        this.invokers = invokers;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Result doInvoke(Invocation invocation) throws Throwable {\r\n+\r\n+        RpcInvocation inv = (RpcInvocation) invocation;\r\n+\r\n+        final String methodName;\r\n+\r\n+        methodName = invocation.getMethodName();\r\n+\r\n+        inv.setAttachment(PATH_KEY, getUrl().getPath());\r\n+\r\n+        // for thrift codec\r\n+        inv.setAttachment(ThriftCodec.PARAMETER_CLASS_NAME_GENERATOR, getUrl().getParameter(\r\n+                ThriftCodec.PARAMETER_CLASS_NAME_GENERATOR, DubboClassNameGenerator.NAME));\r\n+\r\n+        ExchangeClient currentClient;\r\n+\r\n+        if (clients.length == 1) {\r\n+            currentClient = clients[0];\r\n+        } else {\r\n+            currentClient = clients[index.getAndIncrement() % clients.length];\r\n+        }\r\n+\r\n+        try {\r\n+            int timeout = getUrl().getMethodParameter(methodName, TIMEOUT_KEY, DEFAULT_TIMEOUT);\r\n+\r\n+            ExecutorService executor = getCallbackExecutor(getUrl(), inv);\r\n+            CompletableFuture<AppResponse> appResponseFuture = currentClient.request(inv, timeout, executor).thenApply(obj -> (AppResponse) obj);\r\n+            // save for 2.6.x compatibility, for example, TraceFilter in Zipkin uses com.alibaba.xxx.FutureAdapter\r\n+            FutureContext.getContext().setCompatibleFuture(appResponseFuture);\r\n+            AsyncRpcResult result = new AsyncRpcResult(appResponseFuture, invocation);\r\n+            result.setExecutor(executor);\r\n+            return result;\r\n+        } catch (TimeoutException e) {\r\n+            throw new RpcException(RpcException.TIMEOUT_EXCEPTION, e.getMessage(), e);\r\n+        } catch (RemotingException e) {\r\n+            throw new RpcException(RpcException.NETWORK_EXCEPTION, e.getMessage(), e);\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+\r\n+        if (!super.isAvailable()) {\r\n+            return false;\r\n+        }\r\n+\r\n+        for (ExchangeClient client : clients) {\r\n+            if (client.isConnected()\r\n+                    && !client.hasAttribute(CHANNEL_ATTRIBUTE_READONLY_KEY)) {\r\n+                //cannot write == not Available ?\r\n+                return true;\r\n+            }\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        // in order to avoid closing a client multiple times, a counter is used in case of connection per jvm, every\r\n+        // time when client.close() is called, counter counts down once, and when counter reaches zero, client will be\r\n+        // closed.\r\n+        if (super.isDestroyed()) {\r\n+            return;\r\n+        } else {\r\n+            // double check to avoid dup close\r\n+            destroyLock.lock();\r\n+\r\n+            try {\r\n+\r\n+                if (super.isDestroyed()) {\r\n+                    return;\r\n+                }\r\n+\r\n+                super.destroy();\r\n+\r\n+                if (invokers != null) {\r\n+                    invokers.remove(this);\r\n+                }\r\n+\r\n+                for (ExchangeClient client : clients) {\r\n+\r\n+                    try {\r\n+                        client.close();\r\n+                    } catch (Throwable t) {\r\n+                        logger.warn(t.getMessage(), t);\r\n+                    }\r\n+\r\n+                }\r\n+\r\n+            } finally {\r\n+                destroyLock.unlock();\r\n+            }\r\n+\r\n+        }\r\n+\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/thrift/ThriftNativeCodec.java", "source2": "org/apache/dubbo/rpc/protocol/thrift/ThriftNativeCodec.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,96 +1,96 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.thrift;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.Codec2;\n-import org.apache.dubbo.remoting.buffer.ChannelBuffer;\n-import org.apache.dubbo.remoting.buffer.ChannelBufferOutputStream;\n-import org.apache.dubbo.remoting.exchange.Request;\n-import org.apache.dubbo.remoting.exchange.Response;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.thrift.TException;\n-import org.apache.thrift.protocol.TBinaryProtocol;\n-import org.apache.thrift.protocol.TMessage;\n-import org.apache.thrift.protocol.TMessageType;\n-import org.apache.thrift.protocol.TProtocol;\n-import org.apache.thrift.protocol.TStruct;\n-import org.apache.thrift.transport.TIOStreamTransport;\n-\n-import java.io.IOException;\n-import java.util.concurrent.atomic.AtomicInteger;\n-/**\n- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead\n- */\n-@Deprecated\n-public class ThriftNativeCodec implements Codec2 {\n-\n-    private final AtomicInteger thriftSeq = new AtomicInteger(0);\n-\n-    protected static TProtocol newProtocol(URL url, ChannelBuffer buffer) throws IOException {\n-        String protocol = url.getParameter(ThriftConstants.THRIFT_PROTOCOL_KEY,\n-                ThriftConstants.DEFAULT_PROTOCOL);\n-        if (ThriftConstants.BINARY_THRIFT_PROTOCOL.equals(protocol)) {\n-            return new TBinaryProtocol(new TIOStreamTransport(new ChannelBufferOutputStream(buffer)));\n-        }\n-        throw new IOException(\"Unsupported protocol type \" + protocol);\n-    }\n-\n-    @Override\n-    public void encode(Channel channel, ChannelBuffer buffer, Object message)\n-            throws IOException {\n-        if (message instanceof Request) {\n-            encodeRequest(channel, buffer, (Request) message);\n-        } else if (message instanceof Response) {\n-            encodeResponse(channel, buffer, (Response) message);\n-        } else {\n-            throw new IOException(\"Unsupported message type \"\n-                    + message.getClass().getName());\n-        }\n-    }\n-\n-    protected void encodeRequest(Channel channel, ChannelBuffer buffer, Request request)\n-            throws IOException {\n-        Invocation invocation = (Invocation) request.getData();\n-        TProtocol protocol = newProtocol(channel.getUrl(), buffer);\n-        try {\n-            protocol.writeMessageBegin(new TMessage(\n-                    invocation.getMethodName(), TMessageType.CALL,\n-                    thriftSeq.getAndIncrement()));\n-            protocol.writeStructBegin(new TStruct(invocation.getMethodName() + \"_args\"));\n-            for (int i = 0; i < invocation.getParameterTypes().length; i++) {\n-                Class<?> type = invocation.getParameterTypes()[i];\n-\n-            }\n-        } catch (TException e) {\n-            throw new IOException(e.getMessage(), e);\n-        }\n-\n-    }\n-\n-    protected void encodeResponse(Channel channel, ChannelBuffer buffer, Response response)\n-            throws IOException {\n-\n-    }\n-\n-    @Override\n-    public Object decode(Channel channel, ChannelBuffer buffer) throws IOException {\n-        return null;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.thrift;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.Codec2;\r\n+import org.apache.dubbo.remoting.buffer.ChannelBuffer;\r\n+import org.apache.dubbo.remoting.buffer.ChannelBufferOutputStream;\r\n+import org.apache.dubbo.remoting.exchange.Request;\r\n+import org.apache.dubbo.remoting.exchange.Response;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.thrift.TException;\r\n+import org.apache.thrift.protocol.TBinaryProtocol;\r\n+import org.apache.thrift.protocol.TMessage;\r\n+import org.apache.thrift.protocol.TMessageType;\r\n+import org.apache.thrift.protocol.TProtocol;\r\n+import org.apache.thrift.protocol.TStruct;\r\n+import org.apache.thrift.transport.TIOStreamTransport;\r\n+\r\n+import java.io.IOException;\r\n+import java.util.concurrent.atomic.AtomicInteger;\r\n+/**\r\n+ * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead\r\n+ */\r\n+@Deprecated\r\n+public class ThriftNativeCodec implements Codec2 {\r\n+\r\n+    private final AtomicInteger thriftSeq = new AtomicInteger(0);\r\n+\r\n+    protected static TProtocol newProtocol(URL url, ChannelBuffer buffer) throws IOException {\r\n+        String protocol = url.getParameter(ThriftConstants.THRIFT_PROTOCOL_KEY,\r\n+                ThriftConstants.DEFAULT_PROTOCOL);\r\n+        if (ThriftConstants.BINARY_THRIFT_PROTOCOL.equals(protocol)) {\r\n+            return new TBinaryProtocol(new TIOStreamTransport(new ChannelBufferOutputStream(buffer)));\r\n+        }\r\n+        throw new IOException(\"Unsupported protocol type \" + protocol);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void encode(Channel channel, ChannelBuffer buffer, Object message)\r\n+            throws IOException {\r\n+        if (message instanceof Request) {\r\n+            encodeRequest(channel, buffer, (Request) message);\r\n+        } else if (message instanceof Response) {\r\n+            encodeResponse(channel, buffer, (Response) message);\r\n+        } else {\r\n+            throw new IOException(\"Unsupported message type \"\r\n+                    + message.getClass().getName());\r\n+        }\r\n+    }\r\n+\r\n+    protected void encodeRequest(Channel channel, ChannelBuffer buffer, Request request)\r\n+            throws IOException {\r\n+        Invocation invocation = (Invocation) request.getData();\r\n+        TProtocol protocol = newProtocol(channel.getUrl(), buffer);\r\n+        try {\r\n+            protocol.writeMessageBegin(new TMessage(\r\n+                    invocation.getMethodName(), TMessageType.CALL,\r\n+                    thriftSeq.getAndIncrement()));\r\n+            protocol.writeStructBegin(new TStruct(invocation.getMethodName() + \"_args\"));\r\n+            for (int i = 0; i < invocation.getParameterTypes().length; i++) {\r\n+                Class<?> type = invocation.getParameterTypes()[i];\r\n+\r\n+            }\r\n+        } catch (TException e) {\r\n+            throw new IOException(e.getMessage(), e);\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    protected void encodeResponse(Channel channel, ChannelBuffer buffer, Response response)\r\n+            throws IOException {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object decode(Channel channel, ChannelBuffer buffer) throws IOException {\r\n+        return null;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/thrift/ThriftProtocol.java", "source2": "org/apache/dubbo/rpc/protocol/thrift/ThriftProtocol.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,272 +1,272 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.thrift;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.ConfigurationUtils;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.RemotingServer;\n-import org.apache.dubbo.remoting.Transporter;\n-import org.apache.dubbo.remoting.exchange.ExchangeChannel;\n-import org.apache.dubbo.remoting.exchange.ExchangeClient;\n-import org.apache.dubbo.remoting.exchange.ExchangeHandler;\n-import org.apache.dubbo.remoting.exchange.ExchangeServer;\n-import org.apache.dubbo.remoting.exchange.Exchangers;\n-import org.apache.dubbo.remoting.exchange.support.ExchangeHandlerAdapter;\n-import org.apache.dubbo.rpc.Exporter;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.ProtocolServer;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.protocol.AbstractProtocol;\n-import org.apache.dubbo.rpc.protocol.dubbo.DubboExporter;\n-\n-import java.util.ArrayList;\n-import java.util.Set;\n-import java.util.concurrent.CompletableFuture;\n-import java.util.function.Function;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\n-import static org.apache.dubbo.remoting.Constants.CHANNEL_READONLYEVENT_SENT_KEY;\n-import static org.apache.dubbo.remoting.Constants.CLIENT_KEY;\n-import static org.apache.dubbo.remoting.Constants.CODEC_KEY;\n-import static org.apache.dubbo.remoting.Constants.CONNECTIONS_KEY;\n-import static org.apache.dubbo.remoting.Constants.SERVER_KEY;\n-import static org.apache.dubbo.rpc.Constants.IS_SERVER_KEY;\n-\n-/**\n- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead\n- */\n-@Deprecated\n-public class ThriftProtocol extends AbstractProtocol {\n-\n-    public static final int DEFAULT_PORT = 40880;\n-\n-    public static final String NAME = \"thrift\";\n-\n-    private ExchangeHandler handler = new ExchangeHandlerAdapter() {\n-\n-        @Override\n-        public CompletableFuture<Object> reply(ExchangeChannel channel, Object msg) throws RemotingException {\n-\n-            if (msg instanceof Invocation) {\n-                Invocation inv = (Invocation) msg;\n-                String path = (String) inv.getObjectAttachments().get(PATH_KEY);\n-                String serviceKey = serviceKey(channel.getLocalAddress().getPort(),\n-                        path, null, null);\n-                DubboExporter<?> exporter = (DubboExporter<?>) exporterMap.get(serviceKey);\n-                if (exporter == null) {\n-                    throw new RemotingException(channel,\n-                            \"Not found exported service: \"\n-                                    + serviceKey\n-                                    + \" in \"\n-                                    + exporterMap.keySet()\n-                                    + \", may be version or group mismatch \"\n-                                    + \", channel: consumer: \"\n-                                    + channel.getRemoteAddress()\n-                                    + \" --> provider: \"\n-                                    + channel.getLocalAddress()\n-                                    + \", message:\" + msg);\n-                }\n-\n-                RpcContext.getContext().setRemoteAddress(channel.getRemoteAddress());\n-\n-                Result result = exporter.getInvoker().invoke(inv);\n-                return result.thenApply(Function.identity());\n-            }\n-\n-            throw new RemotingException(channel,\n-                    \"Unsupported request: \"\n-                            + (msg.getClass().getName() + \": \" + msg)\n-                            + \", channel: consumer: \"\n-                            + channel.getRemoteAddress()\n-                            + \" --> provider: \"\n-                            + channel.getLocalAddress());\n-        }\n-\n-        @Override\n-        public void received(Channel channel, Object message) throws RemotingException {\n-            if (message instanceof Invocation) {\n-                reply((ExchangeChannel) channel, message);\n-            } else {\n-                super.received(channel, message);\n-            }\n-        }\n-\n-    };\n-\n-    @Override\n-    public int getDefaultPort() {\n-        return DEFAULT_PORT;\n-    }\n-\n-    @Override\n-    public <T> Exporter<T> export(Invoker<T> invoker) throws RpcException {\n-\n-        // can use thrift codec only\n-        URL url = invoker.getUrl().addParameter(CODEC_KEY, ThriftCodec.NAME);\n-        // find server.\n-        String key = url.getAddress();\n-        // client can expose a service for server to invoke only.\n-        boolean isServer = url.getParameter(IS_SERVER_KEY, true);\n-        if (isServer && !serverMap.containsKey(key)) {\n-            serverMap.put(key, getServer(url));\n-        }\n-        // export service.\n-        key = serviceKey(url);\n-        DubboExporter<T> exporter = new DubboExporter<T>(invoker, key, exporterMap);\n-        exporterMap.put(key, exporter);\n-\n-        return exporter;\n-    }\n-\n-    @Override\n-    public void destroy() {\n-\n-        super.destroy();\n-\n-        for (String key : new ArrayList<String>(serverMap.keySet())) {\n-\n-            ProtocolServer protocolServer = serverMap.remove(key);\n-\n-            if (protocolServer != null) {\n-                RemotingServer server = protocolServer.getRemotingServer();\n-                try {\n-                    if (logger.isInfoEnabled()) {\n-                        logger.info(\"Close dubbo server: \" + server.getLocalAddress());\n-                    }\n-                    server.close(ConfigurationUtils.getServerShutdownTimeout());\n-                } catch (Throwable t) {\n-                    logger.warn(t.getMessage(), t);\n-                }\n-            } // ~ end of if ( server != null )\n-\n-        } // ~ end of loop serverMap\n-\n-    } // ~ end of method destroy\n-\n-    @Override\n-    protected <T> Invoker<T> protocolBindingRefer(Class<T> type, URL url) throws RpcException {\n-\n-        ThriftInvoker<T> invoker = new ThriftInvoker<T>(type, url, getClients(url), invokers);\n-\n-        invokers.add(invoker);\n-\n-        return invoker;\n-\n-    }\n-\n-    private ExchangeClient[] getClients(URL url) {\n-\n-        int connections = url.getParameter(CONNECTIONS_KEY, 1);\n-\n-        ExchangeClient[] clients = new ExchangeClient[connections];\n-\n-        for (int i = 0; i < clients.length; i++) {\n-            clients[i] = initClient(url);\n-        }\n-        return clients;\n-    }\n-\n-    private ExchangeClient initClient(URL url) {\n-\n-        ExchangeClient client;\n-\n-//        url = url.addParameter(CODEC_KEY, ThriftCodec.NAME);\n-\n-        try {\n-            client = Exchangers.connect(url);\n-        } catch (RemotingException e) {\n-            throw new RpcException(\"Fail to create remoting client for service(\" + url\n-                    + \"): \" + e.getMessage(), e);\n-        }\n-\n-        return client;\n-\n-    }\n-\n-    private ProtocolServer getServer(URL url) {\n-        // enable sending readonly event when server closes by default\n-        url = url.addParameterIfAbsent(CHANNEL_READONLYEVENT_SENT_KEY, Boolean.TRUE.toString());\n-        String str = url.getParameter(SERVER_KEY, org.apache.dubbo.rpc.Constants.DEFAULT_REMOTING_SERVER);\n-\n-        if (str != null && str.length() > 0 && !ExtensionLoader.getExtensionLoader(Transporter.class).hasExtension(str)) {\n-            throw new RpcException(\"Unsupported server type: \" + str + \", url: \" + url);\n-        }\n-\n-        ExchangeServer server;\n-        try {\n-            server = Exchangers.bind(url, handler);\n-        } catch (RemotingException e) {\n-            throw new RpcException(\"Fail to start server(url: \" + url + \") \" + e.getMessage(), e);\n-        }\n-        str = url.getParameter(CLIENT_KEY);\n-        if (str != null && str.length() > 0) {\n-            Set<String> supportedTypes = ExtensionLoader.getExtensionLoader(Transporter.class).getSupportedExtensions();\n-            if (!supportedTypes.contains(str)) {\n-                throw new RpcException(\"Unsupported client type: \" + str);\n-            }\n-        }\n-        return new ThriftProtocolServer(server);\n-    }\n-\n-    private class ThriftProtocolServer implements ProtocolServer {\n-\n-        private ExchangeServer server;\n-        private String address;\n-\n-        public ThriftProtocolServer(ExchangeServer server) {\n-            this.server = server;\n-        }\n-\n-        @Override\n-        public RemotingServer getRemotingServer() {\n-            return server;\n-        }\n-\n-        @Override\n-        public String getAddress() {\n-            return StringUtils.isNotEmpty(address) ? address : server.getUrl().getAddress();\n-        }\n-\n-        @Override\n-        public void setAddress(String address) {\n-            this.address = address;\n-        }\n-\n-        @Override\n-        public URL getUrl() {\n-            return server.getUrl();\n-        }\n-\n-        @Override\n-        public void reset(URL url) {\n-            server.reset(url);\n-        }\n-\n-        @Override\n-        public void close() {\n-            server.close();\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.thrift;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.ConfigurationUtils;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.RemotingServer;\r\n+import org.apache.dubbo.remoting.Transporter;\r\n+import org.apache.dubbo.remoting.exchange.ExchangeChannel;\r\n+import org.apache.dubbo.remoting.exchange.ExchangeClient;\r\n+import org.apache.dubbo.remoting.exchange.ExchangeHandler;\r\n+import org.apache.dubbo.remoting.exchange.ExchangeServer;\r\n+import org.apache.dubbo.remoting.exchange.Exchangers;\r\n+import org.apache.dubbo.remoting.exchange.support.ExchangeHandlerAdapter;\r\n+import org.apache.dubbo.rpc.Exporter;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.ProtocolServer;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.protocol.AbstractProtocol;\r\n+import org.apache.dubbo.rpc.protocol.dubbo.DubboExporter;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Set;\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.function.Function;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CHANNEL_READONLYEVENT_SENT_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CLIENT_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CODEC_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CONNECTIONS_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.SERVER_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.IS_SERVER_KEY;\r\n+\r\n+/**\r\n+ * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead\r\n+ */\r\n+@Deprecated\r\n+public class ThriftProtocol extends AbstractProtocol {\r\n+\r\n+    public static final int DEFAULT_PORT = 40880;\r\n+\r\n+    public static final String NAME = \"thrift\";\r\n+\r\n+    private ExchangeHandler handler = new ExchangeHandlerAdapter() {\r\n+\r\n+        @Override\r\n+        public CompletableFuture<Object> reply(ExchangeChannel channel, Object msg) throws RemotingException {\r\n+\r\n+            if (msg instanceof Invocation) {\r\n+                Invocation inv = (Invocation) msg;\r\n+                String path = (String) inv.getObjectAttachments().get(PATH_KEY);\r\n+                String serviceKey = serviceKey(channel.getLocalAddress().getPort(),\r\n+                        path, null, null);\r\n+                DubboExporter<?> exporter = (DubboExporter<?>) exporterMap.get(serviceKey);\r\n+                if (exporter == null) {\r\n+                    throw new RemotingException(channel,\r\n+                            \"Not found exported service: \"\r\n+                                    + serviceKey\r\n+                                    + \" in \"\r\n+                                    + exporterMap.keySet()\r\n+                                    + \", may be version or group mismatch \"\r\n+                                    + \", channel: consumer: \"\r\n+                                    + channel.getRemoteAddress()\r\n+                                    + \" --> provider: \"\r\n+                                    + channel.getLocalAddress()\r\n+                                    + \", message:\" + msg);\r\n+                }\r\n+\r\n+                RpcContext.getContext().setRemoteAddress(channel.getRemoteAddress());\r\n+\r\n+                Result result = exporter.getInvoker().invoke(inv);\r\n+                return result.thenApply(Function.identity());\r\n+            }\r\n+\r\n+            throw new RemotingException(channel,\r\n+                    \"Unsupported request: \"\r\n+                            + (msg.getClass().getName() + \": \" + msg)\r\n+                            + \", channel: consumer: \"\r\n+                            + channel.getRemoteAddress()\r\n+                            + \" --> provider: \"\r\n+                            + channel.getLocalAddress());\r\n+        }\r\n+\r\n+        @Override\r\n+        public void received(Channel channel, Object message) throws RemotingException {\r\n+            if (message instanceof Invocation) {\r\n+                reply((ExchangeChannel) channel, message);\r\n+            } else {\r\n+                super.received(channel, message);\r\n+            }\r\n+        }\r\n+\r\n+    };\r\n+\r\n+    @Override\r\n+    public int getDefaultPort() {\r\n+        return DEFAULT_PORT;\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> Exporter<T> export(Invoker<T> invoker) throws RpcException {\r\n+\r\n+        // can use thrift codec only\r\n+        URL url = invoker.getUrl().addParameter(CODEC_KEY, ThriftCodec.NAME);\r\n+        // find server.\r\n+        String key = url.getAddress();\r\n+        // client can expose a service for server to invoke only.\r\n+        boolean isServer = url.getParameter(IS_SERVER_KEY, true);\r\n+        if (isServer && !serverMap.containsKey(key)) {\r\n+            serverMap.put(key, getServer(url));\r\n+        }\r\n+        // export service.\r\n+        key = serviceKey(url);\r\n+        DubboExporter<T> exporter = new DubboExporter<T>(invoker, key, exporterMap);\r\n+        exporterMap.put(key, exporter);\r\n+\r\n+        return exporter;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+\r\n+        super.destroy();\r\n+\r\n+        for (String key : new ArrayList<String>(serverMap.keySet())) {\r\n+\r\n+            ProtocolServer protocolServer = serverMap.remove(key);\r\n+\r\n+            if (protocolServer != null) {\r\n+                RemotingServer server = protocolServer.getRemotingServer();\r\n+                try {\r\n+                    if (logger.isInfoEnabled()) {\r\n+                        logger.info(\"Close dubbo server: \" + server.getLocalAddress());\r\n+                    }\r\n+                    server.close(ConfigurationUtils.getServerShutdownTimeout());\r\n+                } catch (Throwable t) {\r\n+                    logger.warn(t.getMessage(), t);\r\n+                }\r\n+            } // ~ end of if ( server != null )\r\n+\r\n+        } // ~ end of loop serverMap\r\n+\r\n+    } // ~ end of method destroy\r\n+\r\n+    @Override\r\n+    protected <T> Invoker<T> protocolBindingRefer(Class<T> type, URL url) throws RpcException {\r\n+\r\n+        ThriftInvoker<T> invoker = new ThriftInvoker<T>(type, url, getClients(url), invokers);\r\n+\r\n+        invokers.add(invoker);\r\n+\r\n+        return invoker;\r\n+\r\n+    }\r\n+\r\n+    private ExchangeClient[] getClients(URL url) {\r\n+\r\n+        int connections = url.getParameter(CONNECTIONS_KEY, 1);\r\n+\r\n+        ExchangeClient[] clients = new ExchangeClient[connections];\r\n+\r\n+        for (int i = 0; i < clients.length; i++) {\r\n+            clients[i] = initClient(url);\r\n+        }\r\n+        return clients;\r\n+    }\r\n+\r\n+    private ExchangeClient initClient(URL url) {\r\n+\r\n+        ExchangeClient client;\r\n+\r\n+//        url = url.addParameter(CODEC_KEY, ThriftCodec.NAME);\r\n+\r\n+        try {\r\n+            client = Exchangers.connect(url);\r\n+        } catch (RemotingException e) {\r\n+            throw new RpcException(\"Fail to create remoting client for service(\" + url\r\n+                    + \"): \" + e.getMessage(), e);\r\n+        }\r\n+\r\n+        return client;\r\n+\r\n+    }\r\n+\r\n+    private ProtocolServer getServer(URL url) {\r\n+        // enable sending readonly event when server closes by default\r\n+        url = url.addParameterIfAbsent(CHANNEL_READONLYEVENT_SENT_KEY, Boolean.TRUE.toString());\r\n+        String str = url.getParameter(SERVER_KEY, org.apache.dubbo.rpc.Constants.DEFAULT_REMOTING_SERVER);\r\n+\r\n+        if (str != null && str.length() > 0 && !ExtensionLoader.getExtensionLoader(Transporter.class).hasExtension(str)) {\r\n+            throw new RpcException(\"Unsupported server type: \" + str + \", url: \" + url);\r\n+        }\r\n+\r\n+        ExchangeServer server;\r\n+        try {\r\n+            server = Exchangers.bind(url, handler);\r\n+        } catch (RemotingException e) {\r\n+            throw new RpcException(\"Fail to start server(url: \" + url + \") \" + e.getMessage(), e);\r\n+        }\r\n+        str = url.getParameter(CLIENT_KEY);\r\n+        if (str != null && str.length() > 0) {\r\n+            Set<String> supportedTypes = ExtensionLoader.getExtensionLoader(Transporter.class).getSupportedExtensions();\r\n+            if (!supportedTypes.contains(str)) {\r\n+                throw new RpcException(\"Unsupported client type: \" + str);\r\n+            }\r\n+        }\r\n+        return new ThriftProtocolServer(server);\r\n+    }\r\n+\r\n+    private class ThriftProtocolServer implements ProtocolServer {\r\n+\r\n+        private ExchangeServer server;\r\n+        private String address;\r\n+\r\n+        public ThriftProtocolServer(ExchangeServer server) {\r\n+            this.server = server;\r\n+        }\r\n+\r\n+        @Override\r\n+        public RemotingServer getRemotingServer() {\r\n+            return server;\r\n+        }\r\n+\r\n+        @Override\r\n+        public String getAddress() {\r\n+            return StringUtils.isNotEmpty(address) ? address : server.getUrl().getAddress();\r\n+        }\r\n+\r\n+        @Override\r\n+        public void setAddress(String address) {\r\n+            this.address = address;\r\n+        }\r\n+\r\n+        @Override\r\n+        public URL getUrl() {\r\n+            return server.getUrl();\r\n+        }\r\n+\r\n+        @Override\r\n+        public void reset(URL url) {\r\n+            server.reset(url);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void close() {\r\n+            server.close();\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/thrift/ThriftType.java", "source2": "org/apache/dubbo/rpc/protocol/thrift/ThriftType.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,51 +1,51 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.thrift;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-/**\n- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead\n- */\n-@Deprecated\n-public enum ThriftType {\n-\n-    BOOL, BYTE, I16, I32, I64, DOUBLE, STRING;\n-\n-    private static final Map<Class<?>, ThriftType> TYPES =\n-            new HashMap<Class<?>, ThriftType>();\n-\n-    static {\n-        put(boolean.class, BOOL);\n-        put(Boolean.class, BOOL);\n-        put(byte.class, BYTE);\n-        put(Byte.class, BYTE);\n-        put(short.class, I16);\n-    }\n-\n-    public static ThriftType get(Class<?> key) {\n-        if (key != null) {\n-            return TYPES.get(key);\n-        }\n-        throw new NullPointerException(\"key == null\");\n-    }\n-\n-    private static void put(Class<?> key, ThriftType value) {\n-        TYPES.put(key, value);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.thrift;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+/**\r\n+ * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead\r\n+ */\r\n+@Deprecated\r\n+public enum ThriftType {\r\n+\r\n+    BOOL, BYTE, I16, I32, I64, DOUBLE, STRING;\r\n+\r\n+    private static final Map<Class<?>, ThriftType> TYPES =\r\n+            new HashMap<Class<?>, ThriftType>();\r\n+\r\n+    static {\r\n+        put(boolean.class, BOOL);\r\n+        put(Boolean.class, BOOL);\r\n+        put(byte.class, BYTE);\r\n+        put(Byte.class, BYTE);\r\n+        put(short.class, I16);\r\n+    }\r\n+\r\n+    public static ThriftType get(Class<?> key) {\r\n+        if (key != null) {\r\n+            return TYPES.get(key);\r\n+        }\r\n+        throw new NullPointerException(\"key == null\");\r\n+    }\r\n+\r\n+    private static void put(Class<?> key, ThriftType value) {\r\n+        TYPES.put(key, value);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/thrift/ThriftUtils.java", "source2": "org/apache/dubbo/rpc/protocol/thrift/ThriftUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,135 +1,135 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.thrift;\n-/**\n- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead\n- */\n-@Deprecated\n-public class ThriftUtils {\n-\n-    /**\n-     * Generate class name which represents service arguments.\n-     *\n-     * @param serviceName service name\n-     * @param methodName method name\n-     * @return method args class name or null\n-     */\n-    public static String generateMethodArgsClassName(String serviceName, String methodName) {\n-\n-        int index = serviceName.lastIndexOf(\".\");\n-\n-        if (index > 0) {\n-\n-            return new StringBuilder(32)\n-                    .append(serviceName, 0, index + 1)\n-                    .append(\"$__\")\n-                    .append(serviceName.substring(index + 1))\n-                    .append(\"Stub$\")\n-                    .append(methodName)\n-                    .append(\"_args\")\n-                    .toString();\n-\n-        } else {\n-            return new StringBuffer(32)\n-                    .append(\"$__\")\n-                    .append(serviceName)\n-                    .append(\"Stub$\")\n-                    .append(methodName)\n-                    .append(\"_args\")\n-                    .toString();\n-        }\n-\n-    }\n-\n-    public static String generateMethodResultClassName(String serviceName, String method) {\n-\n-        int index = serviceName.lastIndexOf(\".\");\n-\n-        if (index > 0) {\n-\n-            return new StringBuilder(32)\n-                    .append(serviceName, 0, index + 1)\n-                    .append(\"$__\")\n-                    .append(serviceName.substring(index + 1))\n-                    .append(\"Stub$\")\n-                    .append(method)\n-                    .append(\"_result\")\n-                    .toString();\n-\n-        } else {\n-            return new StringBuilder(32)\n-                    .append(\"$__\")\n-                    .append(serviceName)\n-                    .append(\"Stub$\")\n-                    .append(method)\n-                    .append(\"_result\")\n-                    .toString();\n-        }\n-\n-    }\n-\n-    public static String generateSetMethodName(String fieldName) {\n-\n-        return new StringBuilder(16)\n-                .append(\"set\")\n-                .append(Character.toUpperCase(fieldName.charAt(0)))\n-                .append(fieldName.substring(1))\n-                .toString();\n-\n-    }\n-\n-    public static String generateGetMethodName(String fieldName) {\n-        return new StringBuffer(16)\n-                .append(\"get\")\n-                .append(Character.toUpperCase(fieldName.charAt(0)))\n-                .append(fieldName.substring(1))\n-                .toString();\n-    }\n-\n-    public static String generateMethodArgsClassNameThrift(String serviceName, String methodName) {\n-\n-        int index = serviceName.indexOf(\"$\");\n-\n-        if (index > 0) {\n-            return new StringBuilder(32)\n-                    .append(serviceName, 0, index + 1)\n-                    .append(methodName)\n-                    .append(\"_args\")\n-                    .toString();\n-        }\n-\n-        return null;\n-\n-    }\n-\n-    public static String generateMethodResultClassNameThrift(String serviceName, String methodName) {\n-\n-        int index = serviceName.indexOf(\"$\");\n-\n-        if (index > 0) {\n-            return new StringBuilder(32)\n-                    .append(serviceName, 0, index + 1)\n-                    .append(methodName)\n-                    .append(\"_result\")\n-                    .toString();\n-        }\n-\n-        return null;\n-\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.thrift;\r\n+/**\r\n+ * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift instead\r\n+ */\r\n+@Deprecated\r\n+public class ThriftUtils {\r\n+\r\n+    /**\r\n+     * Generate class name which represents service arguments.\r\n+     *\r\n+     * @param serviceName service name\r\n+     * @param methodName method name\r\n+     * @return method args class name or null\r\n+     */\r\n+    public static String generateMethodArgsClassName(String serviceName, String methodName) {\r\n+\r\n+        int index = serviceName.lastIndexOf(\".\");\r\n+\r\n+        if (index > 0) {\r\n+\r\n+            return new StringBuilder(32)\r\n+                    .append(serviceName, 0, index + 1)\r\n+                    .append(\"$__\")\r\n+                    .append(serviceName.substring(index + 1))\r\n+                    .append(\"Stub$\")\r\n+                    .append(methodName)\r\n+                    .append(\"_args\")\r\n+                    .toString();\r\n+\r\n+        } else {\r\n+            return new StringBuffer(32)\r\n+                    .append(\"$__\")\r\n+                    .append(serviceName)\r\n+                    .append(\"Stub$\")\r\n+                    .append(methodName)\r\n+                    .append(\"_args\")\r\n+                    .toString();\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    public static String generateMethodResultClassName(String serviceName, String method) {\r\n+\r\n+        int index = serviceName.lastIndexOf(\".\");\r\n+\r\n+        if (index > 0) {\r\n+\r\n+            return new StringBuilder(32)\r\n+                    .append(serviceName, 0, index + 1)\r\n+                    .append(\"$__\")\r\n+                    .append(serviceName.substring(index + 1))\r\n+                    .append(\"Stub$\")\r\n+                    .append(method)\r\n+                    .append(\"_result\")\r\n+                    .toString();\r\n+\r\n+        } else {\r\n+            return new StringBuilder(32)\r\n+                    .append(\"$__\")\r\n+                    .append(serviceName)\r\n+                    .append(\"Stub$\")\r\n+                    .append(method)\r\n+                    .append(\"_result\")\r\n+                    .toString();\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    public static String generateSetMethodName(String fieldName) {\r\n+\r\n+        return new StringBuilder(16)\r\n+                .append(\"set\")\r\n+                .append(Character.toUpperCase(fieldName.charAt(0)))\r\n+                .append(fieldName.substring(1))\r\n+                .toString();\r\n+\r\n+    }\r\n+\r\n+    public static String generateGetMethodName(String fieldName) {\r\n+        return new StringBuffer(16)\r\n+                .append(\"get\")\r\n+                .append(Character.toUpperCase(fieldName.charAt(0)))\r\n+                .append(fieldName.substring(1))\r\n+                .toString();\r\n+    }\r\n+\r\n+    public static String generateMethodArgsClassNameThrift(String serviceName, String methodName) {\r\n+\r\n+        int index = serviceName.indexOf(\"$\");\r\n+\r\n+        if (index > 0) {\r\n+            return new StringBuilder(32)\r\n+                    .append(serviceName, 0, index + 1)\r\n+                    .append(methodName)\r\n+                    .append(\"_args\")\r\n+                    .toString();\r\n+        }\r\n+\r\n+        return null;\r\n+\r\n+    }\r\n+\r\n+    public static String generateMethodResultClassNameThrift(String serviceName, String methodName) {\r\n+\r\n+        int index = serviceName.indexOf(\"$\");\r\n+\r\n+        if (index > 0) {\r\n+            return new StringBuilder(32)\r\n+                    .append(serviceName, 0, index + 1)\r\n+                    .append(methodName)\r\n+                    .append(\"_result\")\r\n+                    .toString();\r\n+        }\r\n+\r\n+        return null;\r\n+\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/thrift/ext/MultiServiceProcessor.java", "source2": "org/apache/dubbo/rpc/protocol/thrift/ext/MultiServiceProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,121 +1,121 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.thrift.ext;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.rpc.protocol.thrift.ThriftCodec;\n-import org.apache.thrift.TException;\n-import org.apache.thrift.TProcessor;\n-import org.apache.thrift.protocol.TBinaryProtocol;\n-import org.apache.thrift.protocol.TProtocol;\n-import org.apache.thrift.protocol.TProtocolFactory;\n-import org.apache.thrift.transport.TIOStreamTransport;\n-\n-import java.io.ByteArrayOutputStream;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-/**\n- * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift to instead of this module\n- */\n-@Deprecated\n-public class MultiServiceProcessor implements TProcessor {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(MultiServiceProcessor.class);\n-\n-    private ConcurrentMap<String, TProcessor> processorMap = new ConcurrentHashMap<String, TProcessor>();\n-\n-    private TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();\n-\n-    public MultiServiceProcessor() {\n-    }\n-\n-    @Override\n-    public boolean process(TProtocol in, TProtocol out) throws TException {\n-\n-        short magic = in.readI16();\n-\n-        if (magic != ThriftCodec.MAGIC) {\n-            logger.error(\"Unsupported magic \" + magic);\n-            return false;\n-        }\n-\n-        in.readI32();\n-        in.readI16();\n-        byte version = in.readByte();\n-        String serviceName = in.readString();\n-        long id = in.readI64();\n-\n-        ByteArrayOutputStream bos = new ByteArrayOutputStream(1024);\n-\n-        TIOStreamTransport transport = new TIOStreamTransport(bos);\n-\n-        TProtocol protocol = protocolFactory.getProtocol(transport);\n-\n-        TProcessor processor = processorMap.get(serviceName);\n-\n-        if (processor == null) {\n-            logger.error(\"Could not find processor for service \" + serviceName);\n-            return false;\n-        }\n-\n-        // todo if exception\n-        boolean result = processor.process(in, protocol);\n-\n-        ByteArrayOutputStream header = new ByteArrayOutputStream(512);\n-\n-        TIOStreamTransport headerTransport = new TIOStreamTransport(header);\n-\n-        TProtocol headerProtocol = protocolFactory.getProtocol(headerTransport);\n-\n-        headerProtocol.writeI16(magic);\n-        headerProtocol.writeI32(Integer.MAX_VALUE);\n-        headerProtocol.writeI16(Short.MAX_VALUE);\n-        headerProtocol.writeByte(version);\n-        headerProtocol.writeString(serviceName);\n-        headerProtocol.writeI64(id);\n-        headerProtocol.getTransport().flush();\n-\n-        out.writeI16(magic);\n-        out.writeI32(bos.size() + header.size());\n-        out.writeI16((short) (0xffff & header.size()));\n-        out.writeByte(version);\n-        out.writeString(serviceName);\n-        out.writeI64(id);\n-\n-        out.getTransport().write(bos.toByteArray());\n-        out.getTransport().flush();\n-\n-        return result;\n-\n-    }\n-\n-    public TProcessor addProcessor(Class service, TProcessor processor) {\n-        if (service != null && processor != null) {\n-            return processorMap.putIfAbsent(service.getName(), processor);\n-        }\n-        return processor;\n-    }\n-\n-    public void setProtocolFactory(TProtocolFactory factory) {\n-        if (factory != null) {\n-            this.protocolFactory = factory;\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.thrift.ext;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.rpc.protocol.thrift.ThriftCodec;\r\n+import org.apache.thrift.TException;\r\n+import org.apache.thrift.TProcessor;\r\n+import org.apache.thrift.protocol.TBinaryProtocol;\r\n+import org.apache.thrift.protocol.TProtocol;\r\n+import org.apache.thrift.protocol.TProtocolFactory;\r\n+import org.apache.thrift.transport.TIOStreamTransport;\r\n+\r\n+import java.io.ByteArrayOutputStream;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+/**\r\n+ * @since 2.7.0, use https://github.com/dubbo/dubbo-rpc-native-thrift to instead of this module\r\n+ */\r\n+@Deprecated\r\n+public class MultiServiceProcessor implements TProcessor {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(MultiServiceProcessor.class);\r\n+\r\n+    private ConcurrentMap<String, TProcessor> processorMap = new ConcurrentHashMap<String, TProcessor>();\r\n+\r\n+    private TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();\r\n+\r\n+    public MultiServiceProcessor() {\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean process(TProtocol in, TProtocol out) throws TException {\r\n+\r\n+        short magic = in.readI16();\r\n+\r\n+        if (magic != ThriftCodec.MAGIC) {\r\n+            logger.error(\"Unsupported magic \" + magic);\r\n+            return false;\r\n+        }\r\n+\r\n+        in.readI32();\r\n+        in.readI16();\r\n+        byte version = in.readByte();\r\n+        String serviceName = in.readString();\r\n+        long id = in.readI64();\r\n+\r\n+        ByteArrayOutputStream bos = new ByteArrayOutputStream(1024);\r\n+\r\n+        TIOStreamTransport transport = new TIOStreamTransport(bos);\r\n+\r\n+        TProtocol protocol = protocolFactory.getProtocol(transport);\r\n+\r\n+        TProcessor processor = processorMap.get(serviceName);\r\n+\r\n+        if (processor == null) {\r\n+            logger.error(\"Could not find processor for service \" + serviceName);\r\n+            return false;\r\n+        }\r\n+\r\n+        // todo if exception\r\n+        boolean result = processor.process(in, protocol);\r\n+\r\n+        ByteArrayOutputStream header = new ByteArrayOutputStream(512);\r\n+\r\n+        TIOStreamTransport headerTransport = new TIOStreamTransport(header);\r\n+\r\n+        TProtocol headerProtocol = protocolFactory.getProtocol(headerTransport);\r\n+\r\n+        headerProtocol.writeI16(magic);\r\n+        headerProtocol.writeI32(Integer.MAX_VALUE);\r\n+        headerProtocol.writeI16(Short.MAX_VALUE);\r\n+        headerProtocol.writeByte(version);\r\n+        headerProtocol.writeString(serviceName);\r\n+        headerProtocol.writeI64(id);\r\n+        headerProtocol.getTransport().flush();\r\n+\r\n+        out.writeI16(magic);\r\n+        out.writeI32(bos.size() + header.size());\r\n+        out.writeI16((short) (0xffff & header.size()));\r\n+        out.writeByte(version);\r\n+        out.writeString(serviceName);\r\n+        out.writeI64(id);\r\n+\r\n+        out.getTransport().write(bos.toByteArray());\r\n+        out.getTransport().flush();\r\n+\r\n+        return result;\r\n+\r\n+    }\r\n+\r\n+    public TProcessor addProcessor(Class service, TProcessor processor) {\r\n+        if (service != null && processor != null) {\r\n+            return processorMap.putIfAbsent(service.getName(), processor);\r\n+        }\r\n+        return processor;\r\n+    }\r\n+\r\n+    public void setProtocolFactory(TProtocolFactory factory) {\r\n+        if (factory != null) {\r\n+            this.protocolFactory = factory;\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/thrift/io/RandomAccessByteArrayOutputStream.java", "source2": "org/apache/dubbo/rpc/protocol/thrift/io/RandomAccessByteArrayOutputStream.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,117 +1,117 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.thrift.io;\n-\n-import org.apache.dubbo.common.io.Bytes;\n-\n-import java.io.IOException;\n-import java.io.OutputStream;\n-import java.io.UnsupportedEncodingException;\n-import java.nio.ByteBuffer;\n-@Deprecated\n-public class RandomAccessByteArrayOutputStream extends OutputStream {\n-\n-    protected byte[] buffer;\n-\n-    protected int count;\n-\n-    public RandomAccessByteArrayOutputStream() {\n-\n-        this(32);\n-    }\n-\n-    public RandomAccessByteArrayOutputStream(int size) {\n-\n-        if (size < 0) {\n-            throw new IllegalArgumentException(\"Negative initial size: \" + size);\n-        }\n-        buffer = new byte[size];\n-    }\n-\n-    @Override\n-    public void write(int b) {\n-\n-        int newcount = count + 1;\n-        if (newcount > buffer.length) {\n-            buffer = Bytes.copyOf(buffer, Math.max(buffer.length << 1, newcount));\n-        }\n-        buffer[count] = (byte) b;\n-        count = newcount;\n-    }\n-\n-    @Override\n-    public void write(byte[] b, int off, int len) {\n-\n-        if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) > b.length) || ((off + len) < 0)) {\n-            throw new IndexOutOfBoundsException();\n-        }\n-        if (len == 0) {\n-            return;\n-        }\n-        int newcount = count + len;\n-        if (newcount > buffer.length) {\n-            buffer = Bytes.copyOf(buffer, Math.max(buffer.length << 1, newcount));\n-        }\n-        System.arraycopy(b, off, buffer, count, len);\n-        count = newcount;\n-    }\n-\n-    public int size() {\n-\n-        return count;\n-    }\n-\n-    public void setWriteIndex(int index) {\n-        count = index;\n-    }\n-\n-    public void reset() {\n-\n-        count = 0;\n-    }\n-\n-    public byte[] toByteArray() {\n-\n-        return Bytes.copyOf(buffer, count);\n-    }\n-\n-    public ByteBuffer toByteBuffer() {\n-\n-        return ByteBuffer.wrap(buffer, 0, count);\n-    }\n-\n-    public void writeTo(OutputStream out) throws IOException {\n-\n-        out.write(buffer, 0, count);\n-    }\n-\n-    @Override\n-    public String toString() {\n-\n-        return new String(buffer, 0, count);\n-    }\n-\n-    public String toString(String charset) throws UnsupportedEncodingException {\n-\n-        return new String(buffer, 0, count, charset);\n-    }\n-\n-    @Override\n-    public void close() throws IOException {\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.thrift.io;\r\n+\r\n+import org.apache.dubbo.common.io.Bytes;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.OutputStream;\r\n+import java.io.UnsupportedEncodingException;\r\n+import java.nio.ByteBuffer;\r\n+@Deprecated\r\n+public class RandomAccessByteArrayOutputStream extends OutputStream {\r\n+\r\n+    protected byte[] buffer;\r\n+\r\n+    protected int count;\r\n+\r\n+    public RandomAccessByteArrayOutputStream() {\r\n+\r\n+        this(32);\r\n+    }\r\n+\r\n+    public RandomAccessByteArrayOutputStream(int size) {\r\n+\r\n+        if (size < 0) {\r\n+            throw new IllegalArgumentException(\"Negative initial size: \" + size);\r\n+        }\r\n+        buffer = new byte[size];\r\n+    }\r\n+\r\n+    @Override\r\n+    public void write(int b) {\r\n+\r\n+        int newcount = count + 1;\r\n+        if (newcount > buffer.length) {\r\n+            buffer = Bytes.copyOf(buffer, Math.max(buffer.length << 1, newcount));\r\n+        }\r\n+        buffer[count] = (byte) b;\r\n+        count = newcount;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void write(byte[] b, int off, int len) {\r\n+\r\n+        if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) > b.length) || ((off + len) < 0)) {\r\n+            throw new IndexOutOfBoundsException();\r\n+        }\r\n+        if (len == 0) {\r\n+            return;\r\n+        }\r\n+        int newcount = count + len;\r\n+        if (newcount > buffer.length) {\r\n+            buffer = Bytes.copyOf(buffer, Math.max(buffer.length << 1, newcount));\r\n+        }\r\n+        System.arraycopy(b, off, buffer, count, len);\r\n+        count = newcount;\r\n+    }\r\n+\r\n+    public int size() {\r\n+\r\n+        return count;\r\n+    }\r\n+\r\n+    public void setWriteIndex(int index) {\r\n+        count = index;\r\n+    }\r\n+\r\n+    public void reset() {\r\n+\r\n+        count = 0;\r\n+    }\r\n+\r\n+    public byte[] toByteArray() {\r\n+\r\n+        return Bytes.copyOf(buffer, count);\r\n+    }\r\n+\r\n+    public ByteBuffer toByteBuffer() {\r\n+\r\n+        return ByteBuffer.wrap(buffer, 0, count);\r\n+    }\r\n+\r\n+    public void writeTo(OutputStream out) throws IOException {\r\n+\r\n+        out.write(buffer, 0, count);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+\r\n+        return new String(buffer, 0, count);\r\n+    }\r\n+\r\n+    public String toString(String charset) throws UnsupportedEncodingException {\r\n+\r\n+        return new String(buffer, 0, count, charset);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close() throws IOException {\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/nativethrift/ThriftProtocol.java", "source2": "org/apache/dubbo/rpc/protocol/nativethrift/ThriftProtocol.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,189 +1,189 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.nativethrift;\n-\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.protocol.AbstractProxyProtocol;\n-\n-import org.apache.thrift.TException;\n-import org.apache.thrift.TMultiplexedProcessor;\n-import org.apache.thrift.TProcessor;\n-import org.apache.thrift.protocol.TCompactProtocol;\n-import org.apache.thrift.protocol.TMultiplexedProtocol;\n-import org.apache.thrift.protocol.TProtocol;\n-import org.apache.thrift.server.TServer;\n-import org.apache.thrift.server.TThreadedSelectorServer;\n-import org.apache.thrift.transport.TFramedTransport;\n-import org.apache.thrift.transport.TNonblockingServerSocket;\n-import org.apache.thrift.transport.TSocket;\n-import org.apache.thrift.transport.TTransport;\n-\n-import java.lang.reflect.Constructor;\n-import java.net.InetSocketAddress;\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_VALUE;\n-\n-/**\n- * native thrift protocol\n- */\n-public class ThriftProtocol extends AbstractProxyProtocol {\n-\n-    public static final int DEFAULT_PORT = 40880;\n-\n-    public static final String NAME = \"native-thrift\";\n-    public static final String THRIFT_IFACE = \"$Iface\";\n-    public static final String THRIFT_PROCESSOR = \"$Processor\";\n-    public static final String THRIFT_CLIENT = \"$Client\";\n-\n-    private static final Map<String, TServer> SERVER_MAP = new HashMap<>();\n-    private TMultiplexedProcessor processor = new TMultiplexedProcessor();\n-\n-    public ThriftProtocol() {\n-        super(TException.class, RpcException.class);\n-    }\n-\n-    public ThriftProtocol(Class<?>... exceptions) {\n-        super(exceptions);\n-    }\n-\n-    @Override\n-    public int getDefaultPort() {\n-        return DEFAULT_PORT;\n-    }\n-\n-    @Override\n-    protected <T> Runnable doExport(T impl, Class<T> type, URL url) throws RpcException {\n-        return exportThreadedSelectorServer(impl, type, url);\n-    }\n-\n-    @Override\n-    protected <T> T doRefer(Class<T> type, URL url) throws RpcException {\n-        return doReferFrameAndCompact(type, url);\n-    }\n-\n-    private <T> Runnable exportThreadedSelectorServer(T impl, Class<T> type, URL url) throws RpcException {\n-\n-        TThreadedSelectorServer.Args tArgs = null;\n-        String typeName = type.getName();\n-\n-        if (typeName.endsWith(THRIFT_IFACE)) {\n-            String processorClsName = typeName.substring(0, typeName.indexOf(THRIFT_IFACE)) + THRIFT_PROCESSOR;\n-            try {\n-                Class<?> clazz = Class.forName(processorClsName);\n-                Constructor constructor = clazz.getConstructor(type);\n-                try {\n-                    TProcessor tprocessor = (TProcessor) constructor.newInstance(impl);\n-                    processor.registerProcessor(typeName, tprocessor);\n-\n-                    if (SERVER_MAP.get(url.getAddress()) == null) {\n-\n-                        /**Solve the problem of only 50 of the default number of concurrent connections*/\n-                        TNonblockingServerSocket.NonblockingAbstractServerSocketArgs args = new TNonblockingServerSocket.NonblockingAbstractServerSocketArgs();\n-                        /**1000 connections*/\n-                        args.backlog(1000);\n-\n-                        String bindIp = url.getParameter(Constants.BIND_IP_KEY, url.getHost());\n-                        if (url.getParameter(ANYHOST_KEY, false)) {\n-                            bindIp = ANYHOST_VALUE;\n-                        }\n-                        int bindPort = url.getParameter(Constants.BIND_PORT_KEY, url.getPort());\n-                        args.bindAddr(new InetSocketAddress(bindIp, bindPort));\n-\n-                        /**timeout: 10s */\n-                        args.clientTimeout(10000);\n-\n-                        TNonblockingServerSocket transport = new TNonblockingServerSocket(args);\n-\n-                        tArgs = new TThreadedSelectorServer.Args(transport);\n-                        tArgs.workerThreads(200);\n-                        tArgs.selectorThreads(4);\n-                        tArgs.acceptQueueSizePerThread(256);\n-                        tArgs.processor(processor);\n-                        tArgs.transportFactory(new TFramedTransport.Factory());\n-                        tArgs.protocolFactory(new TCompactProtocol.Factory());\n-                    } else {\n-                        return null; // if server is starting, return and do nothing here\n-                    }\n-                } catch (Exception e) {\n-                    logger.error(e.getMessage(), e);\n-                    throw new RpcException(\"Fail to create nativethrift server(\" + url + \") : \" + e.getMessage(), e);\n-                }\n-            } catch (Exception e) {\n-                logger.error(e.getMessage(), e);\n-                throw new RpcException(\"Fail to create nativethrift server(\" + url + \") : \" + e.getMessage(), e);\n-            }\n-        }\n-\n-        if (tArgs == null) {\n-            logger.error(\"Fail to create nativethrift server(\" + url + \") due to null args\");\n-            throw new RpcException(\"Fail to create nativethrift server(\" + url + \") due to null args\");\n-        }\n-        final TServer thriftServer = new TThreadedSelectorServer(tArgs);\n-        SERVER_MAP.put(url.getAddress(), thriftServer);\n-\n-        new Thread(() -> {\n-            logger.info(\"Start Thrift ThreadedSelectorServer\");\n-            thriftServer.serve();\n-            logger.info(\"Thrift ThreadedSelectorServer started.\");\n-        }).start();\n-\n-        return () -> {\n-            try {\n-                logger.info(\"Close Thrift NonblockingServer\");\n-                thriftServer.stop();\n-            } catch (Throwable e) {\n-                logger.warn(e.getMessage(), e);\n-            }\n-        };\n-    }\n-\n-    private <T> T doReferFrameAndCompact(Class<T> type, URL url) throws RpcException {\n-\n-        try {\n-            T thriftClient = null;\n-            String typeName = type.getName();\n-            if (typeName.endsWith(THRIFT_IFACE)) {\n-                String clientClsName = typeName.substring(0, typeName.indexOf(THRIFT_IFACE)) + THRIFT_CLIENT;\n-                Class<?> clazz = Class.forName(clientClsName);\n-                Constructor constructor = clazz.getConstructor(TProtocol.class);\n-                try {\n-                    TSocket tSocket = new TSocket(url.getHost(), url.getPort());\n-                    TTransport transport = new TFramedTransport(tSocket);\n-                    TProtocol tprotocol = new TCompactProtocol(transport);\n-                    TMultiplexedProtocol protocol = new TMultiplexedProtocol(tprotocol, typeName);\n-                    thriftClient = (T) constructor.newInstance(protocol);\n-                    transport.open();\n-                    logger.info(\"nativethrift client opened for service(\" + url + \")\");\n-                } catch (Exception e) {\n-                    logger.error(e.getMessage(), e);\n-                    throw new RpcException(\"Fail to create remote client:\" + e.getMessage(), e);\n-                }\n-            }\n-            return thriftClient;\n-        } catch (Exception e) {\n-            logger.error(e.getMessage(), e);\n-            throw new RpcException(\"Fail to create remote client for service(\" + url + \"): \" + e.getMessage(), e);\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.nativethrift;\r\n+\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.protocol.AbstractProxyProtocol;\r\n+\r\n+import org.apache.thrift.TException;\r\n+import org.apache.thrift.TMultiplexedProcessor;\r\n+import org.apache.thrift.TProcessor;\r\n+import org.apache.thrift.protocol.TCompactProtocol;\r\n+import org.apache.thrift.protocol.TMultiplexedProtocol;\r\n+import org.apache.thrift.protocol.TProtocol;\r\n+import org.apache.thrift.server.TServer;\r\n+import org.apache.thrift.server.TThreadedSelectorServer;\r\n+import org.apache.thrift.transport.TFramedTransport;\r\n+import org.apache.thrift.transport.TNonblockingServerSocket;\r\n+import org.apache.thrift.transport.TSocket;\r\n+import org.apache.thrift.transport.TTransport;\r\n+\r\n+import java.lang.reflect.Constructor;\r\n+import java.net.InetSocketAddress;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_VALUE;\r\n+\r\n+/**\r\n+ * native thrift protocol\r\n+ */\r\n+public class ThriftProtocol extends AbstractProxyProtocol {\r\n+\r\n+    public static final int DEFAULT_PORT = 40880;\r\n+\r\n+    public static final String NAME = \"native-thrift\";\r\n+    public static final String THRIFT_IFACE = \"$Iface\";\r\n+    public static final String THRIFT_PROCESSOR = \"$Processor\";\r\n+    public static final String THRIFT_CLIENT = \"$Client\";\r\n+\r\n+    private static final Map<String, TServer> SERVER_MAP = new HashMap<>();\r\n+    private TMultiplexedProcessor processor = new TMultiplexedProcessor();\r\n+\r\n+    public ThriftProtocol() {\r\n+        super(TException.class, RpcException.class);\r\n+    }\r\n+\r\n+    public ThriftProtocol(Class<?>... exceptions) {\r\n+        super(exceptions);\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getDefaultPort() {\r\n+        return DEFAULT_PORT;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected <T> Runnable doExport(T impl, Class<T> type, URL url) throws RpcException {\r\n+        return exportThreadedSelectorServer(impl, type, url);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected <T> T doRefer(Class<T> type, URL url) throws RpcException {\r\n+        return doReferFrameAndCompact(type, url);\r\n+    }\r\n+\r\n+    private <T> Runnable exportThreadedSelectorServer(T impl, Class<T> type, URL url) throws RpcException {\r\n+\r\n+        TThreadedSelectorServer.Args tArgs = null;\r\n+        String typeName = type.getName();\r\n+\r\n+        if (typeName.endsWith(THRIFT_IFACE)) {\r\n+            String processorClsName = typeName.substring(0, typeName.indexOf(THRIFT_IFACE)) + THRIFT_PROCESSOR;\r\n+            try {\r\n+                Class<?> clazz = Class.forName(processorClsName);\r\n+                Constructor constructor = clazz.getConstructor(type);\r\n+                try {\r\n+                    TProcessor tprocessor = (TProcessor) constructor.newInstance(impl);\r\n+                    processor.registerProcessor(typeName, tprocessor);\r\n+\r\n+                    if (SERVER_MAP.get(url.getAddress()) == null) {\r\n+\r\n+                        /**Solve the problem of only 50 of the default number of concurrent connections*/\r\n+                        TNonblockingServerSocket.NonblockingAbstractServerSocketArgs args = new TNonblockingServerSocket.NonblockingAbstractServerSocketArgs();\r\n+                        /**1000 connections*/\r\n+                        args.backlog(1000);\r\n+\r\n+                        String bindIp = url.getParameter(Constants.BIND_IP_KEY, url.getHost());\r\n+                        if (url.getParameter(ANYHOST_KEY, false)) {\r\n+                            bindIp = ANYHOST_VALUE;\r\n+                        }\r\n+                        int bindPort = url.getParameter(Constants.BIND_PORT_KEY, url.getPort());\r\n+                        args.bindAddr(new InetSocketAddress(bindIp, bindPort));\r\n+\r\n+                        /**timeout: 10s */\r\n+                        args.clientTimeout(10000);\r\n+\r\n+                        TNonblockingServerSocket transport = new TNonblockingServerSocket(args);\r\n+\r\n+                        tArgs = new TThreadedSelectorServer.Args(transport);\r\n+                        tArgs.workerThreads(200);\r\n+                        tArgs.selectorThreads(4);\r\n+                        tArgs.acceptQueueSizePerThread(256);\r\n+                        tArgs.processor(processor);\r\n+                        tArgs.transportFactory(new TFramedTransport.Factory());\r\n+                        tArgs.protocolFactory(new TCompactProtocol.Factory());\r\n+                    } else {\r\n+                        return null; // if server is starting, return and do nothing here\r\n+                    }\r\n+                } catch (Exception e) {\r\n+                    logger.error(e.getMessage(), e);\r\n+                    throw new RpcException(\"Fail to create nativethrift server(\" + url + \") : \" + e.getMessage(), e);\r\n+                }\r\n+            } catch (Exception e) {\r\n+                logger.error(e.getMessage(), e);\r\n+                throw new RpcException(\"Fail to create nativethrift server(\" + url + \") : \" + e.getMessage(), e);\r\n+            }\r\n+        }\r\n+\r\n+        if (tArgs == null) {\r\n+            logger.error(\"Fail to create nativethrift server(\" + url + \") due to null args\");\r\n+            throw new RpcException(\"Fail to create nativethrift server(\" + url + \") due to null args\");\r\n+        }\r\n+        final TServer thriftServer = new TThreadedSelectorServer(tArgs);\r\n+        SERVER_MAP.put(url.getAddress(), thriftServer);\r\n+\r\n+        new Thread(() -> {\r\n+            logger.info(\"Start Thrift ThreadedSelectorServer\");\r\n+            thriftServer.serve();\r\n+            logger.info(\"Thrift ThreadedSelectorServer started.\");\r\n+        }).start();\r\n+\r\n+        return () -> {\r\n+            try {\r\n+                logger.info(\"Close Thrift NonblockingServer\");\r\n+                thriftServer.stop();\r\n+            } catch (Throwable e) {\r\n+                logger.warn(e.getMessage(), e);\r\n+            }\r\n+        };\r\n+    }\r\n+\r\n+    private <T> T doReferFrameAndCompact(Class<T> type, URL url) throws RpcException {\r\n+\r\n+        try {\r\n+            T thriftClient = null;\r\n+            String typeName = type.getName();\r\n+            if (typeName.endsWith(THRIFT_IFACE)) {\r\n+                String clientClsName = typeName.substring(0, typeName.indexOf(THRIFT_IFACE)) + THRIFT_CLIENT;\r\n+                Class<?> clazz = Class.forName(clientClsName);\r\n+                Constructor constructor = clazz.getConstructor(TProtocol.class);\r\n+                try {\r\n+                    TSocket tSocket = new TSocket(url.getHost(), url.getPort());\r\n+                    TTransport transport = new TFramedTransport(tSocket);\r\n+                    TProtocol tprotocol = new TCompactProtocol(transport);\r\n+                    TMultiplexedProtocol protocol = new TMultiplexedProtocol(tprotocol, typeName);\r\n+                    thriftClient = (T) constructor.newInstance(protocol);\r\n+                    transport.open();\r\n+                    logger.info(\"nativethrift client opened for service(\" + url + \")\");\r\n+                } catch (Exception e) {\r\n+                    logger.error(e.getMessage(), e);\r\n+                    throw new RpcException(\"Fail to create remote client:\" + e.getMessage(), e);\r\n+                }\r\n+            }\r\n+            return thriftClient;\r\n+        } catch (Exception e) {\r\n+            logger.error(e.getMessage(), e);\r\n+            throw new RpcException(\"Fail to create remote client for service(\" + url + \"): \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/rest/BaseRestProtocolServer.java", "source2": "org/apache/dubbo/rpc/protocol/rest/BaseRestProtocolServer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,80 +1,80 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.rest;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import org.jboss.resteasy.spi.ResteasyDeployment;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\n-import static org.apache.dubbo.rpc.protocol.rest.Constants.EXTENSION_KEY;\n-\n-public abstract class BaseRestProtocolServer implements RestProtocolServer {\n-\n-    private String address;\n-\n-    @Override\n-    public void start(URL url) {\n-        getDeployment().getMediaTypeMappings().put(\"json\", \"application/json\");\n-        getDeployment().getMediaTypeMappings().put(\"xml\", \"text/xml\");\n-//        server.getDeployment().getMediaTypeMappings().put(\"xml\", \"application/xml\");\n-        getDeployment().getProviderClasses().add(RpcContextFilter.class.getName());\n-        // TODO users can override this mapper, but we just rely on the current priority strategy of resteasy\n-        getDeployment().getProviderClasses().add(RpcExceptionMapper.class.getName());\n-\n-        loadProviders(url.getParameter(EXTENSION_KEY, \"\"));\n-\n-        doStart(url);\n-    }\n-\n-    @Override\n-    public void deploy(Class resourceDef, Object resourceInstance, String contextPath) {\n-        if (StringUtils.isEmpty(contextPath)) {\n-            getDeployment().getRegistry().addResourceFactory(new DubboResourceFactory(resourceInstance, resourceDef));\n-        } else {\n-            getDeployment().getRegistry().addResourceFactory(new DubboResourceFactory(resourceInstance, resourceDef), contextPath);\n-        }\n-    }\n-\n-    @Override\n-    public void undeploy(Class resourceDef) {\n-        getDeployment().getRegistry().removeRegistrations(resourceDef);\n-    }\n-\n-    @Override\n-    public String getAddress() {\n-        return address;\n-    }\n-\n-    @Override\n-    public void setAddress(String address) {\n-        this.address = address;\n-    }\n-\n-    protected void loadProviders(String value) {\n-        for (String clazz : COMMA_SPLIT_PATTERN.split(value)) {\n-            if (!StringUtils.isEmpty(clazz)) {\n-                getDeployment().getProviderClasses().add(clazz.trim());\n-            }\n-        }\n-    }\n-\n-    protected abstract ResteasyDeployment getDeployment();\n-\n-    protected abstract void doStart(URL url);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.rest;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import org.jboss.resteasy.spi.ResteasyDeployment;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\r\n+import static org.apache.dubbo.rpc.protocol.rest.Constants.EXTENSION_KEY;\r\n+\r\n+public abstract class BaseRestProtocolServer implements RestProtocolServer {\r\n+\r\n+    private String address;\r\n+\r\n+    @Override\r\n+    public void start(URL url) {\r\n+        getDeployment().getMediaTypeMappings().put(\"json\", \"application/json\");\r\n+        getDeployment().getMediaTypeMappings().put(\"xml\", \"text/xml\");\r\n+//        server.getDeployment().getMediaTypeMappings().put(\"xml\", \"application/xml\");\r\n+        getDeployment().getProviderClasses().add(RpcContextFilter.class.getName());\r\n+        // TODO users can override this mapper, but we just rely on the current priority strategy of resteasy\r\n+        getDeployment().getProviderClasses().add(RpcExceptionMapper.class.getName());\r\n+\r\n+        loadProviders(url.getParameter(EXTENSION_KEY, \"\"));\r\n+\r\n+        doStart(url);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void deploy(Class resourceDef, Object resourceInstance, String contextPath) {\r\n+        if (StringUtils.isEmpty(contextPath)) {\r\n+            getDeployment().getRegistry().addResourceFactory(new DubboResourceFactory(resourceInstance, resourceDef));\r\n+        } else {\r\n+            getDeployment().getRegistry().addResourceFactory(new DubboResourceFactory(resourceInstance, resourceDef), contextPath);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void undeploy(Class resourceDef) {\r\n+        getDeployment().getRegistry().removeRegistrations(resourceDef);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getAddress() {\r\n+        return address;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setAddress(String address) {\r\n+        this.address = address;\r\n+    }\r\n+\r\n+    protected void loadProviders(String value) {\r\n+        for (String clazz : COMMA_SPLIT_PATTERN.split(value)) {\r\n+            if (!StringUtils.isEmpty(clazz)) {\r\n+                getDeployment().getProviderClasses().add(clazz.trim());\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    protected abstract ResteasyDeployment getDeployment();\r\n+\r\n+    protected abstract void doStart(URL url);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/rest/Constants.java", "source2": "org/apache/dubbo/rpc/protocol/rest/Constants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,29 +1,29 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.rpc.protocol.rest;\n-\n-/**\n- *\n- */\n-public interface Constants {\n-    String KEEP_ALIVE_KEY = \"keepalive\";\n-\n-    boolean DEFAULT_KEEP_ALIVE = true;\n-\n-    String EXTENSION_KEY = \"extension\";\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.rpc.protocol.rest;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+public interface Constants {\r\n+    String KEEP_ALIVE_KEY = \"keepalive\";\r\n+\r\n+    boolean DEFAULT_KEEP_ALIVE = true;\r\n+\r\n+    String EXTENSION_KEY = \"extension\";\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/rest/DubboHttpProtocolServer.java", "source2": "org/apache/dubbo/rpc/protocol/rest/DubboHttpProtocolServer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,131 +1,131 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.rest;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.http.HttpBinder;\n-import org.apache.dubbo.remoting.http.HttpHandler;\n-import org.apache.dubbo.remoting.http.HttpServer;\n-import org.apache.dubbo.remoting.http.servlet.BootstrapListener;\n-import org.apache.dubbo.remoting.http.servlet.ServletManager;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcException;\n-\n-import org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher;\n-import org.jboss.resteasy.spi.ResteasyDeployment;\n-\n-import javax.servlet.ServletConfig;\n-import javax.servlet.ServletContext;\n-import javax.servlet.ServletException;\n-import javax.servlet.http.HttpServletRequest;\n-import javax.servlet.http.HttpServletResponse;\n-import java.io.IOException;\n-import java.util.Enumeration;\n-\n-public class DubboHttpProtocolServer extends BaseRestProtocolServer {\n-\n-    private final HttpServletDispatcher dispatcher = new HttpServletDispatcher();\n-    private final ResteasyDeployment deployment = new ResteasyDeployment();\n-    private HttpBinder httpBinder;\n-    private HttpServer httpServer;\n-//    private boolean isExternalServer;\n-\n-    public DubboHttpProtocolServer(HttpBinder httpBinder) {\n-        this.httpBinder = httpBinder;\n-    }\n-\n-    @Override\n-    protected void doStart(URL url) {\n-        // TODO jetty will by default enable keepAlive so the xml config has no effect now\n-        httpServer = httpBinder.bind(url, new RestHandler());\n-\n-        ServletContext servletContext = ServletManager.getInstance().getServletContext(url.getPort());\n-        if (servletContext == null) {\n-            servletContext = ServletManager.getInstance().getServletContext(ServletManager.EXTERNAL_SERVER_PORT);\n-        }\n-        if (servletContext == null) {\n-            throw new RpcException(\"No servlet context found. If you are using server='servlet', \" +\n-                    \"make sure that you've configured \" + BootstrapListener.class.getName() + \" in web.xml\");\n-        }\n-\n-        servletContext.setAttribute(ResteasyDeployment.class.getName(), deployment);\n-\n-        try {\n-            dispatcher.init(new SimpleServletConfig(servletContext));\n-        } catch (ServletException e) {\n-            throw new RpcException(e);\n-        }\n-    }\n-\n-    @Override\n-    public void close() {\n-        httpServer.close();\n-    }\n-\n-    @Override\n-    protected ResteasyDeployment getDeployment() {\n-        return deployment;\n-    }\n-\n-    private class RestHandler implements HttpHandler {\n-\n-        @Override\n-        public void handle(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {\n-            RpcContext.getContext().setRemoteAddress(request.getRemoteAddr(), request.getRemotePort());\n-            dispatcher.service(request, response);\n-        }\n-    }\n-\n-    private static class SimpleServletConfig implements ServletConfig {\n-\n-        private final ServletContext servletContext;\n-\n-        public SimpleServletConfig(ServletContext servletContext) {\n-            this.servletContext = servletContext;\n-        }\n-\n-        @Override\n-        public String getServletName() {\n-            return \"DispatcherServlet\";\n-        }\n-\n-        @Override\n-        public ServletContext getServletContext() {\n-            return servletContext;\n-        }\n-\n-        @Override\n-        public String getInitParameter(String s) {\n-            return null;\n-        }\n-\n-        @Override\n-        public Enumeration getInitParameterNames() {\n-            return new Enumeration() {\n-                @Override\n-                public boolean hasMoreElements() {\n-                    return false;\n-                }\n-\n-                @Override\n-                public Object nextElement() {\n-                    return null;\n-                }\n-            };\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.rest;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.http.HttpBinder;\r\n+import org.apache.dubbo.remoting.http.HttpHandler;\r\n+import org.apache.dubbo.remoting.http.HttpServer;\r\n+import org.apache.dubbo.remoting.http.servlet.BootstrapListener;\r\n+import org.apache.dubbo.remoting.http.servlet.ServletManager;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+\r\n+import org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher;\r\n+import org.jboss.resteasy.spi.ResteasyDeployment;\r\n+\r\n+import javax.servlet.ServletConfig;\r\n+import javax.servlet.ServletContext;\r\n+import javax.servlet.ServletException;\r\n+import javax.servlet.http.HttpServletRequest;\r\n+import javax.servlet.http.HttpServletResponse;\r\n+import java.io.IOException;\r\n+import java.util.Enumeration;\r\n+\r\n+public class DubboHttpProtocolServer extends BaseRestProtocolServer {\r\n+\r\n+    private final HttpServletDispatcher dispatcher = new HttpServletDispatcher();\r\n+    private final ResteasyDeployment deployment = new ResteasyDeployment();\r\n+    private HttpBinder httpBinder;\r\n+    private HttpServer httpServer;\r\n+//    private boolean isExternalServer;\r\n+\r\n+    public DubboHttpProtocolServer(HttpBinder httpBinder) {\r\n+        this.httpBinder = httpBinder;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doStart(URL url) {\r\n+        // TODO jetty will by default enable keepAlive so the xml config has no effect now\r\n+        httpServer = httpBinder.bind(url, new RestHandler());\r\n+\r\n+        ServletContext servletContext = ServletManager.getInstance().getServletContext(url.getPort());\r\n+        if (servletContext == null) {\r\n+            servletContext = ServletManager.getInstance().getServletContext(ServletManager.EXTERNAL_SERVER_PORT);\r\n+        }\r\n+        if (servletContext == null) {\r\n+            throw new RpcException(\"No servlet context found. If you are using server='servlet', \" +\r\n+                    \"make sure that you've configured \" + BootstrapListener.class.getName() + \" in web.xml\");\r\n+        }\r\n+\r\n+        servletContext.setAttribute(ResteasyDeployment.class.getName(), deployment);\r\n+\r\n+        try {\r\n+            dispatcher.init(new SimpleServletConfig(servletContext));\r\n+        } catch (ServletException e) {\r\n+            throw new RpcException(e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close() {\r\n+        httpServer.close();\r\n+    }\r\n+\r\n+    @Override\r\n+    protected ResteasyDeployment getDeployment() {\r\n+        return deployment;\r\n+    }\r\n+\r\n+    private class RestHandler implements HttpHandler {\r\n+\r\n+        @Override\r\n+        public void handle(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {\r\n+            RpcContext.getContext().setRemoteAddress(request.getRemoteAddr(), request.getRemotePort());\r\n+            dispatcher.service(request, response);\r\n+        }\r\n+    }\r\n+\r\n+    private static class SimpleServletConfig implements ServletConfig {\r\n+\r\n+        private final ServletContext servletContext;\r\n+\r\n+        public SimpleServletConfig(ServletContext servletContext) {\r\n+            this.servletContext = servletContext;\r\n+        }\r\n+\r\n+        @Override\r\n+        public String getServletName() {\r\n+            return \"DispatcherServlet\";\r\n+        }\r\n+\r\n+        @Override\r\n+        public ServletContext getServletContext() {\r\n+            return servletContext;\r\n+        }\r\n+\r\n+        @Override\r\n+        public String getInitParameter(String s) {\r\n+            return null;\r\n+        }\r\n+\r\n+        @Override\r\n+        public Enumeration getInitParameterNames() {\r\n+            return new Enumeration() {\r\n+                @Override\r\n+                public boolean hasMoreElements() {\r\n+                    return false;\r\n+                }\r\n+\r\n+                @Override\r\n+                public Object nextElement() {\r\n+                    return null;\r\n+                }\r\n+            };\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/rest/NettyRestProtocolServer.java", "source2": "org/apache/dubbo/rpc/protocol/rest/NettyRestProtocolServer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,73 +1,73 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.rest;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.NetUtils;\n-\n-import io.netty.channel.ChannelOption;\n-import org.jboss.resteasy.plugins.server.netty.NettyJaxrsServer;\n-import org.jboss.resteasy.spi.ResteasyDeployment;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_THREADS;\n-import static org.apache.dubbo.common.constants.CommonConstants.IO_THREADS_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.THREADS_KEY;\n-import static org.apache.dubbo.remoting.Constants.BIND_IP_KEY;\n-import static org.apache.dubbo.remoting.Constants.BIND_PORT_KEY;\n-import static org.apache.dubbo.remoting.Constants.DEFAULT_IO_THREADS;\n-import static org.apache.dubbo.remoting.Constants.DEFAULT_PAYLOAD;\n-import static org.apache.dubbo.remoting.Constants.PAYLOAD_KEY;\n-import static org.apache.dubbo.rpc.protocol.rest.Constants.DEFAULT_KEEP_ALIVE;\n-import static org.apache.dubbo.rpc.protocol.rest.Constants.KEEP_ALIVE_KEY;\n-\n-/**\n- * Netty server can't support @Context injection of servlet objects since it's not a servlet container\n- *\n- */\n-public class NettyRestProtocolServer extends BaseRestProtocolServer {\n-\n-    private final NettyJaxrsServer server = new NettyJaxrsServer();\n-\n-    @Override\n-    protected void doStart(URL url) {\n-        String bindIp = url.getParameter(BIND_IP_KEY, url.getHost());\n-        if (!url.isAnyHost() && NetUtils.isValidLocalHost(bindIp)) {\n-            server.setHostname(bindIp);\n-        }\n-        server.setPort(url.getParameter(BIND_PORT_KEY, url.getPort()));\n-        Map<ChannelOption, Object> channelOption = new HashMap<ChannelOption, Object>();\n-        channelOption.put(ChannelOption.SO_KEEPALIVE, url.getParameter(KEEP_ALIVE_KEY, DEFAULT_KEEP_ALIVE));\n-        server.setChildChannelOptions(channelOption);\n-        server.setExecutorThreadCount(url.getParameter(THREADS_KEY, DEFAULT_THREADS));\n-        server.setIoWorkerCount(url.getParameter(IO_THREADS_KEY, DEFAULT_IO_THREADS));\n-        server.setMaxRequestSize(url.getParameter(PAYLOAD_KEY, DEFAULT_PAYLOAD));\n-        server.start();\n-    }\n-\n-    @Override\n-    public void close() {\n-        server.stop();\n-    }\n-\n-    @Override\n-    protected ResteasyDeployment getDeployment() {\n-        return server.getDeployment();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.rest;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+\r\n+import io.netty.channel.ChannelOption;\r\n+import org.jboss.resteasy.plugins.server.netty.NettyJaxrsServer;\r\n+import org.jboss.resteasy.spi.ResteasyDeployment;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_THREADS;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.IO_THREADS_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.THREADS_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.BIND_IP_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.BIND_PORT_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.DEFAULT_IO_THREADS;\r\n+import static org.apache.dubbo.remoting.Constants.DEFAULT_PAYLOAD;\r\n+import static org.apache.dubbo.remoting.Constants.PAYLOAD_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.rest.Constants.DEFAULT_KEEP_ALIVE;\r\n+import static org.apache.dubbo.rpc.protocol.rest.Constants.KEEP_ALIVE_KEY;\r\n+\r\n+/**\r\n+ * Netty server can't support @Context injection of servlet objects since it's not a servlet container\r\n+ *\r\n+ */\r\n+public class NettyRestProtocolServer extends BaseRestProtocolServer {\r\n+\r\n+    private final NettyJaxrsServer server = new NettyJaxrsServer();\r\n+\r\n+    @Override\r\n+    protected void doStart(URL url) {\r\n+        String bindIp = url.getParameter(BIND_IP_KEY, url.getHost());\r\n+        if (!url.isAnyHost() && NetUtils.isValidLocalHost(bindIp)) {\r\n+            server.setHostname(bindIp);\r\n+        }\r\n+        server.setPort(url.getParameter(BIND_PORT_KEY, url.getPort()));\r\n+        Map<ChannelOption, Object> channelOption = new HashMap<ChannelOption, Object>();\r\n+        channelOption.put(ChannelOption.SO_KEEPALIVE, url.getParameter(KEEP_ALIVE_KEY, DEFAULT_KEEP_ALIVE));\r\n+        server.setChildChannelOptions(channelOption);\r\n+        server.setExecutorThreadCount(url.getParameter(THREADS_KEY, DEFAULT_THREADS));\r\n+        server.setIoWorkerCount(url.getParameter(IO_THREADS_KEY, DEFAULT_IO_THREADS));\r\n+        server.setMaxRequestSize(url.getParameter(PAYLOAD_KEY, DEFAULT_PAYLOAD));\r\n+        server.start();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void close() {\r\n+        server.stop();\r\n+    }\r\n+\r\n+    @Override\r\n+    protected ResteasyDeployment getDeployment() {\r\n+        return server.getDeployment();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/rest/RestProtocol.java", "source2": "org/apache/dubbo/rpc/protocol/rest/RestProtocol.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,295 +1,295 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.rest;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.http.HttpBinder;\n-import org.apache.dubbo.remoting.http.servlet.BootstrapListener;\n-import org.apache.dubbo.remoting.http.servlet.ServletManager;\n-import org.apache.dubbo.rpc.ProtocolServer;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.protocol.AbstractProxyProtocol;\n-\n-import org.apache.http.HeaderElement;\n-import org.apache.http.HeaderElementIterator;\n-import org.apache.http.client.config.RequestConfig;\n-import org.apache.http.config.SocketConfig;\n-import org.apache.http.impl.client.CloseableHttpClient;\n-import org.apache.http.impl.client.HttpClientBuilder;\n-import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;\n-import org.apache.http.message.BasicHeaderElementIterator;\n-import org.apache.http.protocol.HTTP;\n-import org.jboss.resteasy.client.jaxrs.ResteasyClient;\n-import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;\n-import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;\n-import org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine;\n-import org.jboss.resteasy.util.GetRestful;\n-\n-import javax.servlet.ServletContext;\n-import javax.ws.rs.ProcessingException;\n-import javax.ws.rs.WebApplicationException;\n-import java.util.Collections;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.concurrent.TimeUnit;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-import static org.apache.dubbo.remoting.Constants.CONNECTIONS_KEY;\n-import static org.apache.dubbo.remoting.Constants.CONNECT_TIMEOUT_KEY;\n-import static org.apache.dubbo.remoting.Constants.DEFAULT_CONNECT_TIMEOUT;\n-import static org.apache.dubbo.remoting.Constants.SERVER_KEY;\n-import static org.apache.dubbo.rpc.protocol.rest.Constants.EXTENSION_KEY;\n-\n-public class RestProtocol extends AbstractProxyProtocol {\n-\n-    private static final int DEFAULT_PORT = 80;\n-    private static final String DEFAULT_SERVER = \"jetty\";\n-\n-    private static final int HTTPCLIENTCONNECTIONMANAGER_MAXPERROUTE = 20;\n-    private static final int HTTPCLIENTCONNECTIONMANAGER_MAXTOTAL = 20;\n-    private static final int HTTPCLIENT_KEEPALIVEDURATION = 30 * 1000;\n-    private static final int HTTPCLIENTCONNECTIONMANAGER_CLOSEWAITTIME_MS = 1000;\n-    private static final int HTTPCLIENTCONNECTIONMANAGER_CLOSEIDLETIME_S = 30;\n-\n-    private final RestServerFactory serverFactory = new RestServerFactory();\n-\n-    // TODO in the future maybe we can just use a single rest client and connection manager\n-    private final List<ResteasyClient> clients = Collections.synchronizedList(new LinkedList<>());\n-\n-    private volatile ConnectionMonitor connectionMonitor;\n-\n-    public RestProtocol() {\n-        super(WebApplicationException.class, ProcessingException.class);\n-    }\n-\n-    public void setHttpBinder(HttpBinder httpBinder) {\n-        serverFactory.setHttpBinder(httpBinder);\n-    }\n-\n-    @Override\n-    public int getDefaultPort() {\n-        return DEFAULT_PORT;\n-    }\n-\n-    @Override\n-    protected <T> Runnable doExport(T impl, Class<T> type, URL url) throws RpcException {\n-        String addr = getAddr(url);\n-        Class implClass = ApplicationModel.getProviderModel(url.getServiceKey()).getServiceInstance().getClass();\n-        RestProtocolServer server = (RestProtocolServer) serverMap.computeIfAbsent(addr, restServer -> {\n-            RestProtocolServer s = serverFactory.createServer(url.getParameter(SERVER_KEY, DEFAULT_SERVER));\n-            s.setAddress(url.getAddress());\n-            s.start(url);\n-            return s;\n-        });\n-\n-        String contextPath = getContextPath(url);\n-        if (\"servlet\".equalsIgnoreCase(url.getParameter(SERVER_KEY, DEFAULT_SERVER))) {\n-            ServletContext servletContext = ServletManager.getInstance().getServletContext(ServletManager.EXTERNAL_SERVER_PORT);\n-            if (servletContext == null) {\n-                throw new RpcException(\"No servlet context found. Since you are using server='servlet', \" +\n-                        \"make sure that you've configured \" + BootstrapListener.class.getName() + \" in web.xml\");\n-            }\n-            String webappPath = servletContext.getContextPath();\n-            if (StringUtils.isNotEmpty(webappPath)) {\n-                webappPath = webappPath.substring(1);\n-                if (!contextPath.startsWith(webappPath)) {\n-                    throw new RpcException(\"Since you are using server='servlet', \" +\n-                            \"make sure that the 'contextpath' property starts with the path of external webapp\");\n-                }\n-                contextPath = contextPath.substring(webappPath.length());\n-                if (contextPath.startsWith(\"/\")) {\n-                    contextPath = contextPath.substring(1);\n-                }\n-            }\n-        }\n-\n-        final Class resourceDef = GetRestful.getRootResourceClass(implClass) != null ? implClass : type;\n-\n-        server.deploy(resourceDef, impl, contextPath);\n-\n-        final RestProtocolServer s = server;\n-        return () -> {\n-            // TODO due to dubbo's current architecture,\n-            // it will be called from registry protocol in the shutdown process and won't appear in logs\n-            s.undeploy(resourceDef);\n-        };\n-    }\n-\n-    @Override\n-    protected <T> T doRefer(Class<T> serviceType, URL url) throws RpcException {\n-\n-        // TODO more configs to add\n-        PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();\n-        // 20 is the default maxTotal of current PoolingClientConnectionManager\n-        connectionManager.setMaxTotal(url.getParameter(CONNECTIONS_KEY, HTTPCLIENTCONNECTIONMANAGER_MAXTOTAL));\n-        connectionManager.setDefaultMaxPerRoute(url.getParameter(CONNECTIONS_KEY, HTTPCLIENTCONNECTIONMANAGER_MAXPERROUTE));\n-\n-        if (connectionMonitor == null) {\n-            connectionMonitor = new ConnectionMonitor();\n-            connectionMonitor.start();\n-        }\n-        connectionMonitor.addConnectionManager(connectionManager);\n-        RequestConfig requestConfig = RequestConfig.custom()\n-                .setConnectTimeout(url.getParameter(CONNECT_TIMEOUT_KEY, DEFAULT_CONNECT_TIMEOUT))\n-                .setSocketTimeout(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT))\n-                .build();\n-\n-        SocketConfig socketConfig = SocketConfig.custom()\n-                .setSoKeepAlive(true)\n-                .setTcpNoDelay(true)\n-                .build();\n-\n-        CloseableHttpClient httpClient = HttpClientBuilder.create()\n-                .setConnectionManager(connectionManager)\n-                .setKeepAliveStrategy((response, context) -> {\n-                    HeaderElementIterator it = new BasicHeaderElementIterator(response.headerIterator(HTTP.CONN_KEEP_ALIVE));\n-                    while (it.hasNext()) {\n-                        HeaderElement he = it.nextElement();\n-                        String param = he.getName();\n-                        String value = he.getValue();\n-                        if (value != null && param.equalsIgnoreCase(TIMEOUT_KEY)) {\n-                            return Long.parseLong(value) * 1000;\n-                        }\n-                    }\n-                    return HTTPCLIENT_KEEPALIVEDURATION;\n-                })\n-                .setDefaultRequestConfig(requestConfig)\n-                .setDefaultSocketConfig(socketConfig)\n-                .build();\n-\n-        ApacheHttpClient4Engine engine = new ApacheHttpClient4Engine(httpClient/*, localContext*/);\n-\n-        ResteasyClient client = new ResteasyClientBuilder().httpEngine(engine).build();\n-        clients.add(client);\n-\n-        client.register(RpcContextFilter.class);\n-        for (String clazz : COMMA_SPLIT_PATTERN.split(url.getParameter(EXTENSION_KEY, \"\"))) {\n-            if (!StringUtils.isEmpty(clazz)) {\n-                try {\n-                    client.register(Thread.currentThread().getContextClassLoader().loadClass(clazz.trim()));\n-                } catch (ClassNotFoundException e) {\n-                    throw new RpcException(\"Error loading JAX-RS extension class: \" + clazz.trim(), e);\n-                }\n-            }\n-        }\n-\n-        // TODO protocol\n-        ResteasyWebTarget target = client.target(\"http://\" + url.getHost() + \":\" + url.getPort() + \"/\" + getContextPath(url));\n-        return target.proxy(serviceType);\n-    }\n-\n-    @Override\n-    protected int getErrorCode(Throwable e) {\n-        // TODO\n-        return super.getErrorCode(e);\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        super.destroy();\n-\n-        if (connectionMonitor != null) {\n-            connectionMonitor.shutdown();\n-        }\n-\n-        for (Map.Entry<String, ProtocolServer> entry : serverMap.entrySet()) {\n-            try {\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(\"Closing the rest server at \" + entry.getKey());\n-                }\n-                entry.getValue().close();\n-            } catch (Throwable t) {\n-                logger.warn(\"Error closing rest server\", t);\n-            }\n-        }\n-        serverMap.clear();\n-\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"Closing rest clients\");\n-        }\n-        for (ResteasyClient client : clients) {\n-            try {\n-                client.close();\n-            } catch (Throwable t) {\n-                logger.warn(\"Error closing rest client\", t);\n-            }\n-        }\n-        clients.clear();\n-    }\n-\n-    /**\n-     *  getPath() will return: [contextpath + \"/\" +] path\n-     *  1. contextpath is empty if user does not set through ProtocolConfig or ProviderConfig\n-     *  2. path will never be empty, it's default value is the interface name.\n-     *\n-     * @return return path only if user has explicitly gave then a value.\n-     */\n-    protected String getContextPath(URL url) {\n-        String contextPath = url.getPath();\n-        if (contextPath != null) {\n-            if (contextPath.equalsIgnoreCase(url.getParameter(INTERFACE_KEY))) {\n-                return \"\";\n-            }\n-            if (contextPath.endsWith(url.getParameter(INTERFACE_KEY))) {\n-                contextPath = contextPath.substring(0, contextPath.lastIndexOf(url.getParameter(INTERFACE_KEY)));\n-            }\n-            return contextPath.endsWith(\"/\") ? contextPath.substring(0, contextPath.length() - 1) : contextPath;\n-        } else {\n-            return \"\";\n-        }\n-    }\n-\n-    protected class ConnectionMonitor extends Thread {\n-        private volatile boolean shutdown;\n-        private final List<PoolingHttpClientConnectionManager> connectionManagers = Collections.synchronizedList(new LinkedList<>());\n-\n-        public void addConnectionManager(PoolingHttpClientConnectionManager connectionManager) {\n-            connectionManagers.add(connectionManager);\n-        }\n-\n-        @Override\n-        public void run() {\n-            try {\n-                while (!shutdown) {\n-                    synchronized (this) {\n-                        wait(HTTPCLIENTCONNECTIONMANAGER_CLOSEWAITTIME_MS);\n-                        for (PoolingHttpClientConnectionManager connectionManager : connectionManagers) {\n-                            connectionManager.closeExpiredConnections();\n-                            connectionManager.closeIdleConnections(HTTPCLIENTCONNECTIONMANAGER_CLOSEIDLETIME_S, TimeUnit.SECONDS);\n-                        }\n-                    }\n-                }\n-            } catch (InterruptedException ex) {\n-                shutdown();\n-            }\n-        }\n-\n-        public void shutdown() {\n-            shutdown = true;\n-            connectionManagers.clear();\n-            synchronized (this) {\n-                notifyAll();\n-            }\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.rest;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.http.HttpBinder;\r\n+import org.apache.dubbo.remoting.http.servlet.BootstrapListener;\r\n+import org.apache.dubbo.remoting.http.servlet.ServletManager;\r\n+import org.apache.dubbo.rpc.ProtocolServer;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.protocol.AbstractProxyProtocol;\r\n+\r\n+import org.apache.http.HeaderElement;\r\n+import org.apache.http.HeaderElementIterator;\r\n+import org.apache.http.client.config.RequestConfig;\r\n+import org.apache.http.config.SocketConfig;\r\n+import org.apache.http.impl.client.CloseableHttpClient;\r\n+import org.apache.http.impl.client.HttpClientBuilder;\r\n+import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;\r\n+import org.apache.http.message.BasicHeaderElementIterator;\r\n+import org.apache.http.protocol.HTTP;\r\n+import org.jboss.resteasy.client.jaxrs.ResteasyClient;\r\n+import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;\r\n+import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;\r\n+import org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine;\r\n+import org.jboss.resteasy.util.GetRestful;\r\n+\r\n+import javax.servlet.ServletContext;\r\n+import javax.ws.rs.ProcessingException;\r\n+import javax.ws.rs.WebApplicationException;\r\n+import java.util.Collections;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CONNECTIONS_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CONNECT_TIMEOUT_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.DEFAULT_CONNECT_TIMEOUT;\r\n+import static org.apache.dubbo.remoting.Constants.SERVER_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.rest.Constants.EXTENSION_KEY;\r\n+\r\n+public class RestProtocol extends AbstractProxyProtocol {\r\n+\r\n+    private static final int DEFAULT_PORT = 80;\r\n+    private static final String DEFAULT_SERVER = \"jetty\";\r\n+\r\n+    private static final int HTTPCLIENTCONNECTIONMANAGER_MAXPERROUTE = 20;\r\n+    private static final int HTTPCLIENTCONNECTIONMANAGER_MAXTOTAL = 20;\r\n+    private static final int HTTPCLIENT_KEEPALIVEDURATION = 30 * 1000;\r\n+    private static final int HTTPCLIENTCONNECTIONMANAGER_CLOSEWAITTIME_MS = 1000;\r\n+    private static final int HTTPCLIENTCONNECTIONMANAGER_CLOSEIDLETIME_S = 30;\r\n+\r\n+    private final RestServerFactory serverFactory = new RestServerFactory();\r\n+\r\n+    // TODO in the future maybe we can just use a single rest client and connection manager\r\n+    private final List<ResteasyClient> clients = Collections.synchronizedList(new LinkedList<>());\r\n+\r\n+    private volatile ConnectionMonitor connectionMonitor;\r\n+\r\n+    public RestProtocol() {\r\n+        super(WebApplicationException.class, ProcessingException.class);\r\n+    }\r\n+\r\n+    public void setHttpBinder(HttpBinder httpBinder) {\r\n+        serverFactory.setHttpBinder(httpBinder);\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getDefaultPort() {\r\n+        return DEFAULT_PORT;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected <T> Runnable doExport(T impl, Class<T> type, URL url) throws RpcException {\r\n+        String addr = getAddr(url);\r\n+        Class implClass = ApplicationModel.getProviderModel(url.getServiceKey()).getServiceInstance().getClass();\r\n+        RestProtocolServer server = (RestProtocolServer) serverMap.computeIfAbsent(addr, restServer -> {\r\n+            RestProtocolServer s = serverFactory.createServer(url.getParameter(SERVER_KEY, DEFAULT_SERVER));\r\n+            s.setAddress(url.getAddress());\r\n+            s.start(url);\r\n+            return s;\r\n+        });\r\n+\r\n+        String contextPath = getContextPath(url);\r\n+        if (\"servlet\".equalsIgnoreCase(url.getParameter(SERVER_KEY, DEFAULT_SERVER))) {\r\n+            ServletContext servletContext = ServletManager.getInstance().getServletContext(ServletManager.EXTERNAL_SERVER_PORT);\r\n+            if (servletContext == null) {\r\n+                throw new RpcException(\"No servlet context found. Since you are using server='servlet', \" +\r\n+                        \"make sure that you've configured \" + BootstrapListener.class.getName() + \" in web.xml\");\r\n+            }\r\n+            String webappPath = servletContext.getContextPath();\r\n+            if (StringUtils.isNotEmpty(webappPath)) {\r\n+                webappPath = webappPath.substring(1);\r\n+                if (!contextPath.startsWith(webappPath)) {\r\n+                    throw new RpcException(\"Since you are using server='servlet', \" +\r\n+                            \"make sure that the 'contextpath' property starts with the path of external webapp\");\r\n+                }\r\n+                contextPath = contextPath.substring(webappPath.length());\r\n+                if (contextPath.startsWith(\"/\")) {\r\n+                    contextPath = contextPath.substring(1);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        final Class resourceDef = GetRestful.getRootResourceClass(implClass) != null ? implClass : type;\r\n+\r\n+        server.deploy(resourceDef, impl, contextPath);\r\n+\r\n+        final RestProtocolServer s = server;\r\n+        return () -> {\r\n+            // TODO due to dubbo's current architecture,\r\n+            // it will be called from registry protocol in the shutdown process and won't appear in logs\r\n+            s.undeploy(resourceDef);\r\n+        };\r\n+    }\r\n+\r\n+    @Override\r\n+    protected <T> T doRefer(Class<T> serviceType, URL url) throws RpcException {\r\n+\r\n+        // TODO more configs to add\r\n+        PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();\r\n+        // 20 is the default maxTotal of current PoolingClientConnectionManager\r\n+        connectionManager.setMaxTotal(url.getParameter(CONNECTIONS_KEY, HTTPCLIENTCONNECTIONMANAGER_MAXTOTAL));\r\n+        connectionManager.setDefaultMaxPerRoute(url.getParameter(CONNECTIONS_KEY, HTTPCLIENTCONNECTIONMANAGER_MAXPERROUTE));\r\n+\r\n+        if (connectionMonitor == null) {\r\n+            connectionMonitor = new ConnectionMonitor();\r\n+            connectionMonitor.start();\r\n+        }\r\n+        connectionMonitor.addConnectionManager(connectionManager);\r\n+        RequestConfig requestConfig = RequestConfig.custom()\r\n+                .setConnectTimeout(url.getParameter(CONNECT_TIMEOUT_KEY, DEFAULT_CONNECT_TIMEOUT))\r\n+                .setSocketTimeout(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT))\r\n+                .build();\r\n+\r\n+        SocketConfig socketConfig = SocketConfig.custom()\r\n+                .setSoKeepAlive(true)\r\n+                .setTcpNoDelay(true)\r\n+                .build();\r\n+\r\n+        CloseableHttpClient httpClient = HttpClientBuilder.create()\r\n+                .setConnectionManager(connectionManager)\r\n+                .setKeepAliveStrategy((response, context) -> {\r\n+                    HeaderElementIterator it = new BasicHeaderElementIterator(response.headerIterator(HTTP.CONN_KEEP_ALIVE));\r\n+                    while (it.hasNext()) {\r\n+                        HeaderElement he = it.nextElement();\r\n+                        String param = he.getName();\r\n+                        String value = he.getValue();\r\n+                        if (value != null && param.equalsIgnoreCase(TIMEOUT_KEY)) {\r\n+                            return Long.parseLong(value) * 1000;\r\n+                        }\r\n+                    }\r\n+                    return HTTPCLIENT_KEEPALIVEDURATION;\r\n+                })\r\n+                .setDefaultRequestConfig(requestConfig)\r\n+                .setDefaultSocketConfig(socketConfig)\r\n+                .build();\r\n+\r\n+        ApacheHttpClient4Engine engine = new ApacheHttpClient4Engine(httpClient/*, localContext*/);\r\n+\r\n+        ResteasyClient client = new ResteasyClientBuilder().httpEngine(engine).build();\r\n+        clients.add(client);\r\n+\r\n+        client.register(RpcContextFilter.class);\r\n+        for (String clazz : COMMA_SPLIT_PATTERN.split(url.getParameter(EXTENSION_KEY, \"\"))) {\r\n+            if (!StringUtils.isEmpty(clazz)) {\r\n+                try {\r\n+                    client.register(Thread.currentThread().getContextClassLoader().loadClass(clazz.trim()));\r\n+                } catch (ClassNotFoundException e) {\r\n+                    throw new RpcException(\"Error loading JAX-RS extension class: \" + clazz.trim(), e);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        // TODO protocol\r\n+        ResteasyWebTarget target = client.target(\"http://\" + url.getHost() + \":\" + url.getPort() + \"/\" + getContextPath(url));\r\n+        return target.proxy(serviceType);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected int getErrorCode(Throwable e) {\r\n+        // TODO\r\n+        return super.getErrorCode(e);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        super.destroy();\r\n+\r\n+        if (connectionMonitor != null) {\r\n+            connectionMonitor.shutdown();\r\n+        }\r\n+\r\n+        for (Map.Entry<String, ProtocolServer> entry : serverMap.entrySet()) {\r\n+            try {\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(\"Closing the rest server at \" + entry.getKey());\r\n+                }\r\n+                entry.getValue().close();\r\n+            } catch (Throwable t) {\r\n+                logger.warn(\"Error closing rest server\", t);\r\n+            }\r\n+        }\r\n+        serverMap.clear();\r\n+\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"Closing rest clients\");\r\n+        }\r\n+        for (ResteasyClient client : clients) {\r\n+            try {\r\n+                client.close();\r\n+            } catch (Throwable t) {\r\n+                logger.warn(\"Error closing rest client\", t);\r\n+            }\r\n+        }\r\n+        clients.clear();\r\n+    }\r\n+\r\n+    /**\r\n+     *  getPath() will return: [contextpath + \"/\" +] path\r\n+     *  1. contextpath is empty if user does not set through ProtocolConfig or ProviderConfig\r\n+     *  2. path will never be empty, it's default value is the interface name.\r\n+     *\r\n+     * @return return path only if user has explicitly gave then a value.\r\n+     */\r\n+    protected String getContextPath(URL url) {\r\n+        String contextPath = url.getPath();\r\n+        if (contextPath != null) {\r\n+            if (contextPath.equalsIgnoreCase(url.getParameter(INTERFACE_KEY))) {\r\n+                return \"\";\r\n+            }\r\n+            if (contextPath.endsWith(url.getParameter(INTERFACE_KEY))) {\r\n+                contextPath = contextPath.substring(0, contextPath.lastIndexOf(url.getParameter(INTERFACE_KEY)));\r\n+            }\r\n+            return contextPath.endsWith(\"/\") ? contextPath.substring(0, contextPath.length() - 1) : contextPath;\r\n+        } else {\r\n+            return \"\";\r\n+        }\r\n+    }\r\n+\r\n+    protected class ConnectionMonitor extends Thread {\r\n+        private volatile boolean shutdown;\r\n+        private final List<PoolingHttpClientConnectionManager> connectionManagers = Collections.synchronizedList(new LinkedList<>());\r\n+\r\n+        public void addConnectionManager(PoolingHttpClientConnectionManager connectionManager) {\r\n+            connectionManagers.add(connectionManager);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void run() {\r\n+            try {\r\n+                while (!shutdown) {\r\n+                    synchronized (this) {\r\n+                        wait(HTTPCLIENTCONNECTIONMANAGER_CLOSEWAITTIME_MS);\r\n+                        for (PoolingHttpClientConnectionManager connectionManager : connectionManagers) {\r\n+                            connectionManager.closeExpiredConnections();\r\n+                            connectionManager.closeIdleConnections(HTTPCLIENTCONNECTIONMANAGER_CLOSEIDLETIME_S, TimeUnit.SECONDS);\r\n+                        }\r\n+                    }\r\n+                }\r\n+            } catch (InterruptedException ex) {\r\n+                shutdown();\r\n+            }\r\n+        }\r\n+\r\n+        public void shutdown() {\r\n+            shutdown = true;\r\n+            connectionManagers.clear();\r\n+            synchronized (this) {\r\n+                notifyAll();\r\n+            }\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/rest/RestProtocolServer.java", "source2": "org/apache/dubbo/rpc/protocol/rest/RestProtocolServer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.rest;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.rpc.ProtocolServer;\n-\n-public interface RestProtocolServer extends ProtocolServer {\n-\n-    void start(URL url);\n-\n-    /**\n-     * @param resourceDef it could be either resource interface or resource impl\n-     */\n-    void deploy(Class resourceDef, Object resourceInstance, String contextPath);\n-\n-    void undeploy(Class resourceDef);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.rest;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.rpc.ProtocolServer;\r\n+\r\n+public interface RestProtocolServer extends ProtocolServer {\r\n+\r\n+    void start(URL url);\r\n+\r\n+    /**\r\n+     * @param resourceDef it could be either resource interface or resource impl\r\n+     */\r\n+    void deploy(Class resourceDef, Object resourceInstance, String contextPath);\r\n+\r\n+    void undeploy(Class resourceDef);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/rest/RestServerFactory.java", "source2": "org/apache/dubbo/rpc/protocol/rest/RestServerFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,44 +1,44 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.rest;\n-\n-import org.apache.dubbo.remoting.http.HttpBinder;\n-\n-/**\n- * Only the server that implements servlet container\n- * could support something like @Context injection of servlet objects.\n- *\n- */\n-public class RestServerFactory {\n-\n-    private HttpBinder httpBinder;\n-\n-    public void setHttpBinder(HttpBinder httpBinder) {\n-        this.httpBinder = httpBinder;\n-    }\n-\n-    public RestProtocolServer createServer(String name) {\n-        // TODO move names to Constants\n-        if (\"servlet\".equalsIgnoreCase(name) || \"jetty\".equalsIgnoreCase(name) || \"tomcat\".equalsIgnoreCase(name)) {\n-            return new DubboHttpProtocolServer(httpBinder);\n-        } else if (\"netty\".equalsIgnoreCase(name)) {\n-            return new NettyRestProtocolServer();\n-        } else {\n-            throw new IllegalArgumentException(\"Unrecognized server name: \" + name);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.rest;\r\n+\r\n+import org.apache.dubbo.remoting.http.HttpBinder;\r\n+\r\n+/**\r\n+ * Only the server that implements servlet container\r\n+ * could support something like @Context injection of servlet objects.\r\n+ *\r\n+ */\r\n+public class RestServerFactory {\r\n+\r\n+    private HttpBinder httpBinder;\r\n+\r\n+    public void setHttpBinder(HttpBinder httpBinder) {\r\n+        this.httpBinder = httpBinder;\r\n+    }\r\n+\r\n+    public RestProtocolServer createServer(String name) {\r\n+        // TODO move names to Constants\r\n+        if (\"servlet\".equalsIgnoreCase(name) || \"jetty\".equalsIgnoreCase(name) || \"tomcat\".equalsIgnoreCase(name)) {\r\n+            return new DubboHttpProtocolServer(httpBinder);\r\n+        } else if (\"netty\".equalsIgnoreCase(name)) {\r\n+            return new NettyRestProtocolServer();\r\n+        } else {\r\n+            throw new IllegalArgumentException(\"Unrecognized server name: \" + name);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/rest/RpcContextFilter.java", "source2": "org/apache/dubbo/rpc/protocol/rest/RpcContextFilter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,106 +1,106 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.rest;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.rpc.RpcContext;\n-\n-import org.jboss.resteasy.spi.ResteasyProviderFactory;\n-\n-import javax.annotation.Priority;\n-import javax.servlet.http.HttpServletRequest;\n-import javax.servlet.http.HttpServletResponse;\n-import javax.ws.rs.client.ClientRequestContext;\n-import javax.ws.rs.client.ClientRequestFilter;\n-import javax.ws.rs.container.ContainerRequestContext;\n-import javax.ws.rs.container.ContainerRequestFilter;\n-import java.io.IOException;\n-import java.nio.charset.StandardCharsets;\n-import java.util.Map;\n-\n-@Priority(Integer.MIN_VALUE + 1)\n-public class RpcContextFilter implements ContainerRequestFilter, ClientRequestFilter {\n-\n-    private static final String DUBBO_ATTACHMENT_HEADER = \"Dubbo-Attachments\";\n-\n-    // currently we use a single header to hold the attachments so that the total attachment size limit is about 8k\n-    private static final int MAX_HEADER_SIZE = 8 * 1024;\n-\n-    @Override\n-    public void filter(ContainerRequestContext requestContext) throws IOException {\n-        HttpServletRequest request = ResteasyProviderFactory.getContextData(HttpServletRequest.class);\n-        RpcContext.getContext().setRequest(request);\n-\n-        // this only works for servlet containers\n-        if (request != null && RpcContext.getContext().getRemoteAddress() == null) {\n-            RpcContext.getContext().setRemoteAddress(request.getRemoteAddr(), request.getRemotePort());\n-        }\n-\n-        RpcContext.getContext().setResponse(ResteasyProviderFactory.getContextData(HttpServletResponse.class));\n-\n-        String headers = requestContext.getHeaderString(DUBBO_ATTACHMENT_HEADER);\n-        if (headers != null) {\n-            for (String header : headers.split(\",\")) {\n-                int index = header.indexOf(\"=\");\n-                if (index > 0) {\n-                    String key = header.substring(0, index);\n-                    String value = header.substring(index + 1);\n-                    if (!StringUtils.isEmpty(key)) {\n-                        RpcContext.getContext().setAttachment(key.trim(), value.trim());\n-                    }\n-                }\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public void filter(ClientRequestContext requestContext) throws IOException {\n-        int size = 0;\n-        for (Map.Entry<String, Object> entry : RpcContext.getContext().getObjectAttachments().entrySet()) {\n-            String key = entry.getKey();\n-            String value = (String) entry.getValue();\n-            if (illegalHttpHeaderKey(key) || illegalHttpHeaderValue(value)) {\n-                throw new IllegalArgumentException(\"The attachments of \" + RpcContext.class.getSimpleName() + \" must not contain ',' or '=' when using rest protocol\");\n-            }\n-\n-            // TODO for now we don't consider the differences of encoding and server limit\n-            if (value != null) {\n-                size += value.getBytes(StandardCharsets.UTF_8).length;\n-            }\n-            if (size > MAX_HEADER_SIZE) {\n-                throw new IllegalArgumentException(\"The attachments of \" + RpcContext.class.getSimpleName() + \" is too big\");\n-            }\n-\n-            String attachments = key + \"=\" + value;\n-            requestContext.getHeaders().add(DUBBO_ATTACHMENT_HEADER, attachments);\n-        }\n-    }\n-\n-    private boolean illegalHttpHeaderKey(String key) {\n-        if (StringUtils.isNotEmpty(key)) {\n-            return key.contains(\",\") || key.contains(\"=\");\n-        }\n-        return false;\n-    }\n-\n-    private boolean illegalHttpHeaderValue(String value) {\n-        if (StringUtils.isNotEmpty(value)) {\n-            return value.contains(\",\");\n-        }\n-        return false;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.rest;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+\r\n+import org.jboss.resteasy.spi.ResteasyProviderFactory;\r\n+\r\n+import javax.annotation.Priority;\r\n+import javax.servlet.http.HttpServletRequest;\r\n+import javax.servlet.http.HttpServletResponse;\r\n+import javax.ws.rs.client.ClientRequestContext;\r\n+import javax.ws.rs.client.ClientRequestFilter;\r\n+import javax.ws.rs.container.ContainerRequestContext;\r\n+import javax.ws.rs.container.ContainerRequestFilter;\r\n+import java.io.IOException;\r\n+import java.nio.charset.StandardCharsets;\r\n+import java.util.Map;\r\n+\r\n+@Priority(Integer.MIN_VALUE + 1)\r\n+public class RpcContextFilter implements ContainerRequestFilter, ClientRequestFilter {\r\n+\r\n+    private static final String DUBBO_ATTACHMENT_HEADER = \"Dubbo-Attachments\";\r\n+\r\n+    // currently we use a single header to hold the attachments so that the total attachment size limit is about 8k\r\n+    private static final int MAX_HEADER_SIZE = 8 * 1024;\r\n+\r\n+    @Override\r\n+    public void filter(ContainerRequestContext requestContext) throws IOException {\r\n+        HttpServletRequest request = ResteasyProviderFactory.getContextData(HttpServletRequest.class);\r\n+        RpcContext.getContext().setRequest(request);\r\n+\r\n+        // this only works for servlet containers\r\n+        if (request != null && RpcContext.getContext().getRemoteAddress() == null) {\r\n+            RpcContext.getContext().setRemoteAddress(request.getRemoteAddr(), request.getRemotePort());\r\n+        }\r\n+\r\n+        RpcContext.getContext().setResponse(ResteasyProviderFactory.getContextData(HttpServletResponse.class));\r\n+\r\n+        String headers = requestContext.getHeaderString(DUBBO_ATTACHMENT_HEADER);\r\n+        if (headers != null) {\r\n+            for (String header : headers.split(\",\")) {\r\n+                int index = header.indexOf(\"=\");\r\n+                if (index > 0) {\r\n+                    String key = header.substring(0, index);\r\n+                    String value = header.substring(index + 1);\r\n+                    if (!StringUtils.isEmpty(key)) {\r\n+                        RpcContext.getContext().setAttachment(key.trim(), value.trim());\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void filter(ClientRequestContext requestContext) throws IOException {\r\n+        int size = 0;\r\n+        for (Map.Entry<String, Object> entry : RpcContext.getContext().getObjectAttachments().entrySet()) {\r\n+            String key = entry.getKey();\r\n+            String value = (String) entry.getValue();\r\n+            if (illegalHttpHeaderKey(key) || illegalHttpHeaderValue(value)) {\r\n+                throw new IllegalArgumentException(\"The attachments of \" + RpcContext.class.getSimpleName() + \" must not contain ',' or '=' when using rest protocol\");\r\n+            }\r\n+\r\n+            // TODO for now we don't consider the differences of encoding and server limit\r\n+            if (value != null) {\r\n+                size += value.getBytes(StandardCharsets.UTF_8).length;\r\n+            }\r\n+            if (size > MAX_HEADER_SIZE) {\r\n+                throw new IllegalArgumentException(\"The attachments of \" + RpcContext.class.getSimpleName() + \" is too big\");\r\n+            }\r\n+\r\n+            String attachments = key + \"=\" + value;\r\n+            requestContext.getHeaders().add(DUBBO_ATTACHMENT_HEADER, attachments);\r\n+        }\r\n+    }\r\n+\r\n+    private boolean illegalHttpHeaderKey(String key) {\r\n+        if (StringUtils.isNotEmpty(key)) {\r\n+            return key.contains(\",\") || key.contains(\"=\");\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    private boolean illegalHttpHeaderValue(String value) {\r\n+        if (StringUtils.isNotEmpty(value)) {\r\n+            return value.contains(\",\");\r\n+        }\r\n+        return false;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/rest/integration/swagger/DubboSwaggerService.java", "source2": "org/apache/dubbo/rpc/protocol/rest/integration/swagger/DubboSwaggerService.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,43 +1,43 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.rest.integration.swagger;\n-\n-import com.fasterxml.jackson.core.JsonProcessingException;\n-\n-import javax.servlet.ServletConfig;\n-import javax.ws.rs.Consumes;\n-import javax.ws.rs.GET;\n-import javax.ws.rs.Path;\n-import javax.ws.rs.Produces;\n-import javax.ws.rs.core.Application;\n-import javax.ws.rs.core.Context;\n-import javax.ws.rs.core.HttpHeaders;\n-import javax.ws.rs.core.MediaType;\n-import javax.ws.rs.core.Response;\n-import javax.ws.rs.core.UriInfo;\n-\n-\n-@Path(\"dubbo\")\n-@Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})\n-@Produces({MediaType.APPLICATION_JSON + \"; \" + \"charset=UTF-8\", MediaType.TEXT_XML + \"; \" + \"charset=UTF-8\"})\n-public interface DubboSwaggerService {\n-\n-    @GET\n-    @Path(\"swagger\")\n-    Response getListingJson(@Context Application app, @Context ServletConfig sc,\n-                            @Context HttpHeaders headers, @Context UriInfo uriInfo) throws JsonProcessingException;\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.rest.integration.swagger;\r\n+\r\n+import com.fasterxml.jackson.core.JsonProcessingException;\r\n+\r\n+import javax.servlet.ServletConfig;\r\n+import javax.ws.rs.Consumes;\r\n+import javax.ws.rs.GET;\r\n+import javax.ws.rs.Path;\r\n+import javax.ws.rs.Produces;\r\n+import javax.ws.rs.core.Application;\r\n+import javax.ws.rs.core.Context;\r\n+import javax.ws.rs.core.HttpHeaders;\r\n+import javax.ws.rs.core.MediaType;\r\n+import javax.ws.rs.core.Response;\r\n+import javax.ws.rs.core.UriInfo;\r\n+\r\n+\r\n+@Path(\"dubbo\")\r\n+@Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})\r\n+@Produces({MediaType.APPLICATION_JSON + \"; \" + \"charset=UTF-8\", MediaType.TEXT_XML + \"; \" + \"charset=UTF-8\"})\r\n+public interface DubboSwaggerService {\r\n+\r\n+    @GET\r\n+    @Path(\"swagger\")\r\n+    Response getListingJson(@Context Application app, @Context ServletConfig sc,\r\n+                            @Context HttpHeaders headers, @Context UriInfo uriInfo) throws JsonProcessingException;\r\n }\n"}, {"source1": "org/apache/dubbo/rpc/protocol/rest/support/LoggingFilter.java", "source2": "org/apache/dubbo/rpc/protocol/rest/support/LoggingFilter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,148 +1,148 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.rest.support;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-\n-import org.apache.commons.io.IOUtils;\n-\n-import javax.annotation.Priority;\n-import javax.ws.rs.WebApplicationException;\n-import javax.ws.rs.client.ClientRequestContext;\n-import javax.ws.rs.client.ClientRequestFilter;\n-import javax.ws.rs.client.ClientResponseContext;\n-import javax.ws.rs.client.ClientResponseFilter;\n-import javax.ws.rs.container.ContainerRequestContext;\n-import javax.ws.rs.container.ContainerRequestFilter;\n-import javax.ws.rs.container.ContainerResponseContext;\n-import javax.ws.rs.container.ContainerResponseFilter;\n-import javax.ws.rs.core.MultivaluedMap;\n-import javax.ws.rs.ext.ReaderInterceptor;\n-import javax.ws.rs.ext.ReaderInterceptorContext;\n-import javax.ws.rs.ext.WriterInterceptor;\n-import javax.ws.rs.ext.WriterInterceptorContext;\n-import java.io.ByteArrayInputStream;\n-import java.io.ByteArrayOutputStream;\n-import java.io.IOException;\n-import java.io.OutputStream;\n-import java.nio.charset.StandardCharsets;\n-import java.util.List;\n-import java.util.Map;\n-\n-/**\n- * This logging filter is not highly optimized for now\n- *\n- */\n-@Priority(Integer.MIN_VALUE)\n-public class LoggingFilter implements ContainerRequestFilter, ClientRequestFilter, ContainerResponseFilter, ClientResponseFilter, WriterInterceptor, ReaderInterceptor {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(LoggingFilter.class);\n-\n-    @Override\n-    public void filter(ClientRequestContext context) throws IOException {\n-        logHttpHeaders(context.getStringHeaders());\n-    }\n-\n-    @Override\n-    public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {\n-        logHttpHeaders(responseContext.getHeaders());\n-    }\n-\n-    @Override\n-    public void filter(ContainerRequestContext context) throws IOException {\n-        logHttpHeaders(context.getHeaders());\n-    }\n-\n-    @Override\n-    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {\n-        logHttpHeaders(responseContext.getStringHeaders());\n-    }\n-\n-    @Override\n-    public Object aroundReadFrom(ReaderInterceptorContext context) throws IOException, WebApplicationException {\n-        byte[] buffer = IOUtils.toByteArray(context.getInputStream());\n-        logger.info(\"The contents of request body is: \\n\" + new String(buffer, StandardCharsets.UTF_8) + \"\\n\");\n-        context.setInputStream(new ByteArrayInputStream(buffer));\n-        return context.proceed();\n-    }\n-\n-    @Override\n-    public void aroundWriteTo(WriterInterceptorContext context) throws IOException, WebApplicationException {\n-        OutputStreamWrapper wrapper = new OutputStreamWrapper(context.getOutputStream());\n-        context.setOutputStream(wrapper);\n-        context.proceed();\n-        logger.info(\"The contents of response body is: \\n\" + new String(wrapper.getBytes(), StandardCharsets.UTF_8) + \"\\n\");\n-    }\n-\n-    protected void logHttpHeaders(MultivaluedMap<String, String> headers) {\n-        StringBuilder msg = new StringBuilder(\"The HTTP headers are: \\n\");\n-        for (Map.Entry<String, List<String>> entry : headers.entrySet()) {\n-            msg.append(entry.getKey()).append(\": \");\n-            for (int i = 0; i < entry.getValue().size(); i++) {\n-                msg.append(entry.getValue().get(i));\n-                if (i < entry.getValue().size() - 1) {\n-                    msg.append(\", \");\n-                }\n-            }\n-            msg.append(\"\\n\");\n-        }\n-        logger.info(msg.toString());\n-    }\n-\n-    protected static class OutputStreamWrapper extends OutputStream {\n-\n-        private final ByteArrayOutputStream buffer = new ByteArrayOutputStream();\n-        private final OutputStream output;\n-\n-        private OutputStreamWrapper(OutputStream output) {\n-            this.output = output;\n-        }\n-\n-        @Override\n-        public void write(int i) throws IOException {\n-            buffer.write(i);\n-            output.write(i);\n-        }\n-\n-        @Override\n-        public void write(byte[] b) throws IOException {\n-            buffer.write(b);\n-            output.write(b);\n-        }\n-\n-        @Override\n-        public void write(byte[] b, int off, int len) throws IOException {\n-            buffer.write(b, off, len);\n-            output.write(b, off, len);\n-        }\n-\n-        @Override\n-        public void flush() throws IOException {\n-            output.flush();\n-        }\n-\n-        @Override\n-        public void close() throws IOException {\n-            output.close();\n-        }\n-\n-        public byte[] getBytes() {\n-            return buffer.toByteArray();\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.rest.support;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+\r\n+import org.apache.commons.io.IOUtils;\r\n+\r\n+import javax.annotation.Priority;\r\n+import javax.ws.rs.WebApplicationException;\r\n+import javax.ws.rs.client.ClientRequestContext;\r\n+import javax.ws.rs.client.ClientRequestFilter;\r\n+import javax.ws.rs.client.ClientResponseContext;\r\n+import javax.ws.rs.client.ClientResponseFilter;\r\n+import javax.ws.rs.container.ContainerRequestContext;\r\n+import javax.ws.rs.container.ContainerRequestFilter;\r\n+import javax.ws.rs.container.ContainerResponseContext;\r\n+import javax.ws.rs.container.ContainerResponseFilter;\r\n+import javax.ws.rs.core.MultivaluedMap;\r\n+import javax.ws.rs.ext.ReaderInterceptor;\r\n+import javax.ws.rs.ext.ReaderInterceptorContext;\r\n+import javax.ws.rs.ext.WriterInterceptor;\r\n+import javax.ws.rs.ext.WriterInterceptorContext;\r\n+import java.io.ByteArrayInputStream;\r\n+import java.io.ByteArrayOutputStream;\r\n+import java.io.IOException;\r\n+import java.io.OutputStream;\r\n+import java.nio.charset.StandardCharsets;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * This logging filter is not highly optimized for now\r\n+ *\r\n+ */\r\n+@Priority(Integer.MIN_VALUE)\r\n+public class LoggingFilter implements ContainerRequestFilter, ClientRequestFilter, ContainerResponseFilter, ClientResponseFilter, WriterInterceptor, ReaderInterceptor {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(LoggingFilter.class);\r\n+\r\n+    @Override\r\n+    public void filter(ClientRequestContext context) throws IOException {\r\n+        logHttpHeaders(context.getStringHeaders());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {\r\n+        logHttpHeaders(responseContext.getHeaders());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void filter(ContainerRequestContext context) throws IOException {\r\n+        logHttpHeaders(context.getHeaders());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {\r\n+        logHttpHeaders(responseContext.getStringHeaders());\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object aroundReadFrom(ReaderInterceptorContext context) throws IOException, WebApplicationException {\r\n+        byte[] buffer = IOUtils.toByteArray(context.getInputStream());\r\n+        logger.info(\"The contents of request body is: \\n\" + new String(buffer, StandardCharsets.UTF_8) + \"\\n\");\r\n+        context.setInputStream(new ByteArrayInputStream(buffer));\r\n+        return context.proceed();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void aroundWriteTo(WriterInterceptorContext context) throws IOException, WebApplicationException {\r\n+        OutputStreamWrapper wrapper = new OutputStreamWrapper(context.getOutputStream());\r\n+        context.setOutputStream(wrapper);\r\n+        context.proceed();\r\n+        logger.info(\"The contents of response body is: \\n\" + new String(wrapper.getBytes(), StandardCharsets.UTF_8) + \"\\n\");\r\n+    }\r\n+\r\n+    protected void logHttpHeaders(MultivaluedMap<String, String> headers) {\r\n+        StringBuilder msg = new StringBuilder(\"The HTTP headers are: \\n\");\r\n+        for (Map.Entry<String, List<String>> entry : headers.entrySet()) {\r\n+            msg.append(entry.getKey()).append(\": \");\r\n+            for (int i = 0; i < entry.getValue().size(); i++) {\r\n+                msg.append(entry.getValue().get(i));\r\n+                if (i < entry.getValue().size() - 1) {\r\n+                    msg.append(\", \");\r\n+                }\r\n+            }\r\n+            msg.append(\"\\n\");\r\n+        }\r\n+        logger.info(msg.toString());\r\n+    }\r\n+\r\n+    protected static class OutputStreamWrapper extends OutputStream {\r\n+\r\n+        private final ByteArrayOutputStream buffer = new ByteArrayOutputStream();\r\n+        private final OutputStream output;\r\n+\r\n+        private OutputStreamWrapper(OutputStream output) {\r\n+            this.output = output;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void write(int i) throws IOException {\r\n+            buffer.write(i);\r\n+            output.write(i);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void write(byte[] b) throws IOException {\r\n+            buffer.write(b);\r\n+            output.write(b);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void write(byte[] b, int off, int len) throws IOException {\r\n+            buffer.write(b, off, len);\r\n+            output.write(b, off, len);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void flush() throws IOException {\r\n+            output.flush();\r\n+        }\r\n+\r\n+        @Override\r\n+        public void close() throws IOException {\r\n+            output.close();\r\n+        }\r\n+\r\n+        public byte[] getBytes() {\r\n+            return buffer.toByteArray();\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/xml/rpc/protocol/xmlrpc/XmlRpcProtocol.java", "source2": "org/apache/dubbo/xml/rpc/protocol/xmlrpc/XmlRpcProtocol.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,196 +1,196 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.xml.rpc.protocol.xmlrpc;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.remoting.RemotingServer;\n-import org.apache.dubbo.remoting.http.HttpBinder;\n-import org.apache.dubbo.remoting.http.HttpHandler;\n-import org.apache.dubbo.rpc.ProtocolServer;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.protocol.AbstractProxyProtocol;\n-\n-import org.apache.xmlrpc.XmlRpcException;\n-import org.apache.xmlrpc.XmlRpcRequest;\n-import org.apache.xmlrpc.server.PropertyHandlerMapping;\n-import org.apache.xmlrpc.server.RequestProcessorFactoryFactory;\n-import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;\n-import org.apache.xmlrpc.webserver.XmlRpcServletServer;\n-import org.springframework.remoting.RemoteAccessException;\n-\n-import javax.servlet.ServletException;\n-import javax.servlet.http.HttpServletRequest;\n-import javax.servlet.http.HttpServletResponse;\n-import java.io.IOException;\n-import java.net.SocketTimeoutException;\n-import java.util.ArrayList;\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-public class XmlRpcProtocol extends AbstractProxyProtocol {\n-\n-    public static final String ACCESS_CONTROL_ALLOW_ORIGIN_HEADER = \"Access-Control-Allow-Origin\";\n-    public static final String ACCESS_CONTROL_ALLOW_METHODS_HEADER = \"Access-Control-Allow-Methods\";\n-    public static final String ACCESS_CONTROL_ALLOW_HEADERS_HEADER = \"Access-Control-Allow-Headers\";\n-\n-    private final Map<String, XmlRpcServletServer> skeletonMap = new ConcurrentHashMap<>();\n-\n-    private HttpBinder httpBinder;\n-\n-    public XmlRpcProtocol() {\n-        super(XmlRpcException.class);\n-    }\n-\n-    public void setHttpBinder(HttpBinder httpBinder) {\n-        this.httpBinder = httpBinder;\n-    }\n-\n-    @Override\n-    public int getDefaultPort() {\n-        return 80;\n-    }\n-\n-    private class InternalHandler implements HttpHandler {\n-\n-        private boolean cors;\n-\n-        public InternalHandler(boolean cors) {\n-            this.cors = cors;\n-        }\n-\n-        @Override\n-        public void handle(HttpServletRequest request, HttpServletResponse response)\n-                throws IOException, ServletException {\n-            String uri = request.getRequestURI();\n-            XmlRpcServletServer xmlrpc = skeletonMap.get(uri);\n-            if (cors) {\n-                response.setHeader(ACCESS_CONTROL_ALLOW_ORIGIN_HEADER, \"*\");\n-                response.setHeader(ACCESS_CONTROL_ALLOW_METHODS_HEADER, \"POST\");\n-                response.setHeader(ACCESS_CONTROL_ALLOW_HEADERS_HEADER, \"*\");\n-            }\n-            if (\"OPTIONS\".equalsIgnoreCase(request.getMethod())) {\n-                response.setStatus(200);\n-            } else if (\"POST\".equalsIgnoreCase(request.getMethod())) {\n-\n-                RpcContext.getContext().setRemoteAddress(request.getRemoteAddr(), request.getRemotePort());\n-                try {\n-                    xmlrpc.execute(request, response);\n-                } catch (Throwable e) {\n-                    throw new ServletException(e);\n-                }\n-            } else {\n-                response.setStatus(500);\n-            }\n-        }\n-\n-    }\n-\n-    @Override\n-    protected <T> Runnable doExport(T impl, Class<T> type, URL url) throws RpcException {\n-        final URL httpUrl = url.setProtocol(\"http\");\n-        String addr = httpUrl.getIp() + \":\" + httpUrl.getPort();\n-        ProtocolServer protocolServer = serverMap.get(addr);\n-        if (protocolServer == null) {\n-            RemotingServer remotingServer = httpBinder.bind(httpUrl, new InternalHandler(httpUrl.getParameter(\"cors\", false)));\n-            serverMap.put(addr, new ProxyProtocolServer(remotingServer));\n-        }\n-        final String path = httpUrl.getAbsolutePath();\n-\n-        XmlRpcServletServer xmlRpcServer = new XmlRpcServletServer();\n-\n-        PropertyHandlerMapping propertyHandlerMapping = new PropertyHandlerMapping();\n-        try {\n-\n-            propertyHandlerMapping.setRequestProcessorFactoryFactory(new RequestProcessorFactoryFactory() {\n-                @Override\n-                public RequestProcessorFactory getRequestProcessorFactory(Class pClass) throws XmlRpcException {\n-                    return new RequestProcessorFactory() {\n-                        @Override\n-                        public Object getRequestProcessor(XmlRpcRequest pRequest) throws XmlRpcException {\n-                            return impl;\n-                        }\n-                    };\n-                }\n-            });\n-\n-            propertyHandlerMapping.addHandler(XmlRpcProxyFactoryBean.replace(type.getName()), type);\n-\n-        } catch (Exception e) {\n-            throw new RpcException(e);\n-        }\n-        xmlRpcServer.setHandlerMapping(propertyHandlerMapping);\n-\n-        XmlRpcServerConfigImpl xmlRpcServerConfig = (XmlRpcServerConfigImpl) xmlRpcServer.getConfig();\n-        xmlRpcServerConfig.setEnabledForExceptions(true);\n-        xmlRpcServerConfig.setContentLengthOptional(false);\n-\n-        skeletonMap.put(path, xmlRpcServer);\n-        return new Runnable() {\n-            @Override\n-            public void run() {\n-                skeletonMap.remove(path);\n-            }\n-        };\n-    }\n-\n-    @Override\n-    protected <T> T doRefer(final Class<T> serviceType, URL url) throws RpcException {\n-    @SuppressWarnings(\"unchecked\")\n-        XmlRpcProxyFactoryBean xmlRpcProxyFactoryBean = new XmlRpcProxyFactoryBean();\n-        xmlRpcProxyFactoryBean.setServiceUrl(url.setProtocol(\"http\").toIdentityString());\n-        xmlRpcProxyFactoryBean.setServiceInterface(serviceType);\n-        xmlRpcProxyFactoryBean.afterPropertiesSet();\n-        return (T) xmlRpcProxyFactoryBean.getObject();\n-    }\n-\n-    @Override\n-    protected int getErrorCode(Throwable e) {\n-        if (e instanceof RemoteAccessException) {\n-            e = e.getCause();\n-        }\n-        if (e != null) {\n-            Class<?> cls = e.getClass();\n-            if (SocketTimeoutException.class.equals(cls)) {\n-                return RpcException.TIMEOUT_EXCEPTION;\n-            } else if (IOException.class.isAssignableFrom(cls)) {\n-                return RpcException.NETWORK_EXCEPTION;\n-            } else if (ClassNotFoundException.class.isAssignableFrom(cls)) {\n-                return RpcException.SERIALIZATION_EXCEPTION;\n-            }\n-        }\n-        return super.getErrorCode(e);\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        super.destroy();\n-        for (String key : new ArrayList<>(serverMap.keySet())) {\n-            ProtocolServer server = serverMap.remove(key);\n-            if (server != null) {\n-                try {\n-                    if (logger.isInfoEnabled()) {\n-                        logger.info(\"Close xml server \" + server.getUrl());\n-                    }\n-                    server.close();\n-                } catch (Throwable t) {\n-                    logger.warn(t.getMessage(), t);\n-                }\n-            }\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.xml.rpc.protocol.xmlrpc;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.remoting.RemotingServer;\r\n+import org.apache.dubbo.remoting.http.HttpBinder;\r\n+import org.apache.dubbo.remoting.http.HttpHandler;\r\n+import org.apache.dubbo.rpc.ProtocolServer;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.protocol.AbstractProxyProtocol;\r\n+\r\n+import org.apache.xmlrpc.XmlRpcException;\r\n+import org.apache.xmlrpc.XmlRpcRequest;\r\n+import org.apache.xmlrpc.server.PropertyHandlerMapping;\r\n+import org.apache.xmlrpc.server.RequestProcessorFactoryFactory;\r\n+import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;\r\n+import org.apache.xmlrpc.webserver.XmlRpcServletServer;\r\n+import org.springframework.remoting.RemoteAccessException;\r\n+\r\n+import javax.servlet.ServletException;\r\n+import javax.servlet.http.HttpServletRequest;\r\n+import javax.servlet.http.HttpServletResponse;\r\n+import java.io.IOException;\r\n+import java.net.SocketTimeoutException;\r\n+import java.util.ArrayList;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+public class XmlRpcProtocol extends AbstractProxyProtocol {\r\n+\r\n+    public static final String ACCESS_CONTROL_ALLOW_ORIGIN_HEADER = \"Access-Control-Allow-Origin\";\r\n+    public static final String ACCESS_CONTROL_ALLOW_METHODS_HEADER = \"Access-Control-Allow-Methods\";\r\n+    public static final String ACCESS_CONTROL_ALLOW_HEADERS_HEADER = \"Access-Control-Allow-Headers\";\r\n+\r\n+    private final Map<String, XmlRpcServletServer> skeletonMap = new ConcurrentHashMap<>();\r\n+\r\n+    private HttpBinder httpBinder;\r\n+\r\n+    public XmlRpcProtocol() {\r\n+        super(XmlRpcException.class);\r\n+    }\r\n+\r\n+    public void setHttpBinder(HttpBinder httpBinder) {\r\n+        this.httpBinder = httpBinder;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getDefaultPort() {\r\n+        return 80;\r\n+    }\r\n+\r\n+    private class InternalHandler implements HttpHandler {\r\n+\r\n+        private boolean cors;\r\n+\r\n+        public InternalHandler(boolean cors) {\r\n+            this.cors = cors;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void handle(HttpServletRequest request, HttpServletResponse response)\r\n+                throws IOException, ServletException {\r\n+            String uri = request.getRequestURI();\r\n+            XmlRpcServletServer xmlrpc = skeletonMap.get(uri);\r\n+            if (cors) {\r\n+                response.setHeader(ACCESS_CONTROL_ALLOW_ORIGIN_HEADER, \"*\");\r\n+                response.setHeader(ACCESS_CONTROL_ALLOW_METHODS_HEADER, \"POST\");\r\n+                response.setHeader(ACCESS_CONTROL_ALLOW_HEADERS_HEADER, \"*\");\r\n+            }\r\n+            if (\"OPTIONS\".equalsIgnoreCase(request.getMethod())) {\r\n+                response.setStatus(200);\r\n+            } else if (\"POST\".equalsIgnoreCase(request.getMethod())) {\r\n+\r\n+                RpcContext.getContext().setRemoteAddress(request.getRemoteAddr(), request.getRemotePort());\r\n+                try {\r\n+                    xmlrpc.execute(request, response);\r\n+                } catch (Throwable e) {\r\n+                    throw new ServletException(e);\r\n+                }\r\n+            } else {\r\n+                response.setStatus(500);\r\n+            }\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    protected <T> Runnable doExport(T impl, Class<T> type, URL url) throws RpcException {\r\n+        final URL httpUrl = url.setProtocol(\"http\");\r\n+        String addr = httpUrl.getIp() + \":\" + httpUrl.getPort();\r\n+        ProtocolServer protocolServer = serverMap.get(addr);\r\n+        if (protocolServer == null) {\r\n+            RemotingServer remotingServer = httpBinder.bind(httpUrl, new InternalHandler(httpUrl.getParameter(\"cors\", false)));\r\n+            serverMap.put(addr, new ProxyProtocolServer(remotingServer));\r\n+        }\r\n+        final String path = httpUrl.getAbsolutePath();\r\n+\r\n+        XmlRpcServletServer xmlRpcServer = new XmlRpcServletServer();\r\n+\r\n+        PropertyHandlerMapping propertyHandlerMapping = new PropertyHandlerMapping();\r\n+        try {\r\n+\r\n+            propertyHandlerMapping.setRequestProcessorFactoryFactory(new RequestProcessorFactoryFactory() {\r\n+                @Override\r\n+                public RequestProcessorFactory getRequestProcessorFactory(Class pClass) throws XmlRpcException {\r\n+                    return new RequestProcessorFactory() {\r\n+                        @Override\r\n+                        public Object getRequestProcessor(XmlRpcRequest pRequest) throws XmlRpcException {\r\n+                            return impl;\r\n+                        }\r\n+                    };\r\n+                }\r\n+            });\r\n+\r\n+            propertyHandlerMapping.addHandler(XmlRpcProxyFactoryBean.replace(type.getName()), type);\r\n+\r\n+        } catch (Exception e) {\r\n+            throw new RpcException(e);\r\n+        }\r\n+        xmlRpcServer.setHandlerMapping(propertyHandlerMapping);\r\n+\r\n+        XmlRpcServerConfigImpl xmlRpcServerConfig = (XmlRpcServerConfigImpl) xmlRpcServer.getConfig();\r\n+        xmlRpcServerConfig.setEnabledForExceptions(true);\r\n+        xmlRpcServerConfig.setContentLengthOptional(false);\r\n+\r\n+        skeletonMap.put(path, xmlRpcServer);\r\n+        return new Runnable() {\r\n+            @Override\r\n+            public void run() {\r\n+                skeletonMap.remove(path);\r\n+            }\r\n+        };\r\n+    }\r\n+\r\n+    @Override\r\n+    protected <T> T doRefer(final Class<T> serviceType, URL url) throws RpcException {\r\n+    @SuppressWarnings(\"unchecked\")\r\n+        XmlRpcProxyFactoryBean xmlRpcProxyFactoryBean = new XmlRpcProxyFactoryBean();\r\n+        xmlRpcProxyFactoryBean.setServiceUrl(url.setProtocol(\"http\").toIdentityString());\r\n+        xmlRpcProxyFactoryBean.setServiceInterface(serviceType);\r\n+        xmlRpcProxyFactoryBean.afterPropertiesSet();\r\n+        return (T) xmlRpcProxyFactoryBean.getObject();\r\n+    }\r\n+\r\n+    @Override\r\n+    protected int getErrorCode(Throwable e) {\r\n+        if (e instanceof RemoteAccessException) {\r\n+            e = e.getCause();\r\n+        }\r\n+        if (e != null) {\r\n+            Class<?> cls = e.getClass();\r\n+            if (SocketTimeoutException.class.equals(cls)) {\r\n+                return RpcException.TIMEOUT_EXCEPTION;\r\n+            } else if (IOException.class.isAssignableFrom(cls)) {\r\n+                return RpcException.NETWORK_EXCEPTION;\r\n+            } else if (ClassNotFoundException.class.isAssignableFrom(cls)) {\r\n+                return RpcException.SERIALIZATION_EXCEPTION;\r\n+            }\r\n+        }\r\n+        return super.getErrorCode(e);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        super.destroy();\r\n+        for (String key : new ArrayList<>(serverMap.keySet())) {\r\n+            ProtocolServer server = serverMap.remove(key);\r\n+            if (server != null) {\r\n+                try {\r\n+                    if (logger.isInfoEnabled()) {\r\n+                        logger.info(\"Close xml server \" + server.getUrl());\r\n+                    }\r\n+                    server.close();\r\n+                } catch (Throwable t) {\r\n+                    logger.warn(t.getMessage(), t);\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/xml/rpc/protocol/xmlrpc/XmlRpcProxyFactoryBean.java", "source2": "org/apache/dubbo/xml/rpc/protocol/xmlrpc/XmlRpcProxyFactoryBean.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,142 +1,142 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.xml.rpc.protocol.xmlrpc;\n-\n-import org.apache.dubbo.rpc.RpcException;\n-\n-import org.aopalliance.intercept.MethodInterceptor;\n-import org.aopalliance.intercept.MethodInvocation;\n-import org.apache.xmlrpc.client.XmlRpcClient;\n-import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;\n-import org.springframework.aop.framework.ProxyFactory;\n-import org.springframework.beans.factory.FactoryBean;\n-import org.springframework.beans.factory.InitializingBean;\n-import org.springframework.context.ApplicationContext;\n-import org.springframework.context.ApplicationContextAware;\n-import org.springframework.remoting.support.UrlBasedRemoteAccessor;\n-\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Type;\n-import java.net.MalformedURLException;\n-import java.net.URL;\n-\n-public class XmlRpcProxyFactoryBean extends UrlBasedRemoteAccessor\n-        implements MethodInterceptor,\n-        InitializingBean,\n-        FactoryBean<Object>,\n-        ApplicationContextAware {\n-\n-    private Object\t\t\t\tproxyObject\t\t\t= null;\n-    private XmlRpcClient xmlRpcClient\t= null;\n-//    private Map<String, String> extraHttpHeaders\t= new HashMap<String, String>();\n-\n-\n-    private ApplicationContext applicationContext;\n-\n-    /**\n-     * {@inheritDoc}\n-     */\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public void afterPropertiesSet() {\n-        super.afterPropertiesSet();\n-\n-        // create proxy\n-        proxyObject = ProxyFactory.getProxy(getServiceInterface(), this);\n-\n-        // create XmlRpcHttpClient\n-        try {\n-            xmlRpcClient = new XmlRpcClient();\n-\n-            XmlRpcClientConfigImpl xmlRpcClientConfig = new XmlRpcClientConfigImpl();\n-            xmlRpcClientConfig.setServerURL(new URL(getServiceUrl()));\n-            xmlRpcClient.setConfig(xmlRpcClientConfig);\n-\n-        } catch (MalformedURLException mue) {\n-            throw new RpcException(mue);\n-        }\n-    }\n-\n-    /**\n-     * {@inheritDoc}\n-     */\n-    @Override\n-    public Object invoke(MethodInvocation invocation)\n-            throws Throwable {\n-\n-        // handle toString()\n-        Method method = invocation.getMethod();\n-        if (method.getDeclaringClass() == Object.class && \"toString\".equals(method.getName())) {\n-            return proxyObject.getClass().getName() + \"@\" + System.identityHashCode(proxyObject);\n-        }\n-\n-        // get return type\n-        Type retType = (invocation.getMethod().getGenericReturnType() != null)\n-                ? invocation.getMethod().getGenericReturnType()\n-                : invocation.getMethod().getReturnType();\n-\n-        return xmlRpcClient.execute(replace(method.getDeclaringClass().getName())+\".\"\n-                +invocation.getMethod().getName(),invocation.getArguments());\n-\n-//        // get arguments\n-//        Object arguments = ReflectionUtil.parseArguments(\n-//                invocation.getMethod(), invocation.getArguments(), useNamedParams);\n-//\n-//        // invoke it\n-//        return jsonRpcHttpClient.invoke(\n-//                invocation.getMethod().getName(),\n-//                arguments,\n-//                retType, extraHttpHeaders);\n-    }\n-\n-    /**\n-     * {@inheritDoc}\n-     */\n-    @Override\n-    public Object getObject() {\n-        return proxyObject;\n-    }\n-\n-    /**\n-     * {@inheritDoc}\n-     */\n-    @Override\n-    public Class<?> getObjectType() {\n-        return getServiceInterface();\n-    }\n-\n-    /**\n-     * {@inheritDoc}\n-     */\n-    @Override\n-    public boolean isSingleton() {\n-        return true;\n-    }\n-\n-    /**\n-     * {@inheritDoc}\n-     */\n-    @Override\n-    public void setApplicationContext(ApplicationContext applicationContext) {\n-        this.applicationContext = applicationContext;\n-    }\n-\n-    public static final String replace(String name) {\n-        return name.replaceAll(\"\\\\.\",\"_\");\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.xml.rpc.protocol.xmlrpc;\r\n+\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+\r\n+import org.aopalliance.intercept.MethodInterceptor;\r\n+import org.aopalliance.intercept.MethodInvocation;\r\n+import org.apache.xmlrpc.client.XmlRpcClient;\r\n+import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;\r\n+import org.springframework.aop.framework.ProxyFactory;\r\n+import org.springframework.beans.factory.FactoryBean;\r\n+import org.springframework.beans.factory.InitializingBean;\r\n+import org.springframework.context.ApplicationContext;\r\n+import org.springframework.context.ApplicationContextAware;\r\n+import org.springframework.remoting.support.UrlBasedRemoteAccessor;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Type;\r\n+import java.net.MalformedURLException;\r\n+import java.net.URL;\r\n+\r\n+public class XmlRpcProxyFactoryBean extends UrlBasedRemoteAccessor\r\n+        implements MethodInterceptor,\r\n+        InitializingBean,\r\n+        FactoryBean<Object>,\r\n+        ApplicationContextAware {\r\n+\r\n+    private Object\t\t\t\tproxyObject\t\t\t= null;\r\n+    private XmlRpcClient xmlRpcClient\t= null;\r\n+//    private Map<String, String> extraHttpHeaders\t= new HashMap<String, String>();\r\n+\r\n+\r\n+    private ApplicationContext applicationContext;\r\n+\r\n+    /**\r\n+     * {@inheritDoc}\r\n+     */\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public void afterPropertiesSet() {\r\n+        super.afterPropertiesSet();\r\n+\r\n+        // create proxy\r\n+        proxyObject = ProxyFactory.getProxy(getServiceInterface(), this);\r\n+\r\n+        // create XmlRpcHttpClient\r\n+        try {\r\n+            xmlRpcClient = new XmlRpcClient();\r\n+\r\n+            XmlRpcClientConfigImpl xmlRpcClientConfig = new XmlRpcClientConfigImpl();\r\n+            xmlRpcClientConfig.setServerURL(new URL(getServiceUrl()));\r\n+            xmlRpcClient.setConfig(xmlRpcClientConfig);\r\n+\r\n+        } catch (MalformedURLException mue) {\r\n+            throw new RpcException(mue);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * {@inheritDoc}\r\n+     */\r\n+    @Override\r\n+    public Object invoke(MethodInvocation invocation)\r\n+            throws Throwable {\r\n+\r\n+        // handle toString()\r\n+        Method method = invocation.getMethod();\r\n+        if (method.getDeclaringClass() == Object.class && \"toString\".equals(method.getName())) {\r\n+            return proxyObject.getClass().getName() + \"@\" + System.identityHashCode(proxyObject);\r\n+        }\r\n+\r\n+        // get return type\r\n+        Type retType = (invocation.getMethod().getGenericReturnType() != null)\r\n+                ? invocation.getMethod().getGenericReturnType()\r\n+                : invocation.getMethod().getReturnType();\r\n+\r\n+        return xmlRpcClient.execute(replace(method.getDeclaringClass().getName())+\".\"\r\n+                +invocation.getMethod().getName(),invocation.getArguments());\r\n+\r\n+//        // get arguments\r\n+//        Object arguments = ReflectionUtil.parseArguments(\r\n+//                invocation.getMethod(), invocation.getArguments(), useNamedParams);\r\n+//\r\n+//        // invoke it\r\n+//        return jsonRpcHttpClient.invoke(\r\n+//                invocation.getMethod().getName(),\r\n+//                arguments,\r\n+//                retType, extraHttpHeaders);\r\n+    }\r\n+\r\n+    /**\r\n+     * {@inheritDoc}\r\n+     */\r\n+    @Override\r\n+    public Object getObject() {\r\n+        return proxyObject;\r\n+    }\r\n+\r\n+    /**\r\n+     * {@inheritDoc}\r\n+     */\r\n+    @Override\r\n+    public Class<?> getObjectType() {\r\n+        return getServiceInterface();\r\n+    }\r\n+\r\n+    /**\r\n+     * {@inheritDoc}\r\n+     */\r\n+    @Override\r\n+    public boolean isSingleton() {\r\n+        return true;\r\n+    }\r\n+\r\n+    /**\r\n+     * {@inheritDoc}\r\n+     */\r\n+    @Override\r\n+    public void setApplicationContext(ApplicationContext applicationContext) {\r\n+        this.applicationContext = applicationContext;\r\n+    }\r\n+\r\n+    public static final String replace(String name) {\r\n+        return name.replaceAll(\"\\\\.\",\"_\");\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/DubboHandlerRegistry.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/DubboHandlerRegistry.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,73 +1,73 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc;\n-\n-import io.grpc.BindableService;\n-import io.grpc.HandlerRegistry;\n-import io.grpc.ServerMethodDefinition;\n-import io.grpc.ServerServiceDefinition;\n-\n-import javax.annotation.Nullable;\n-import java.util.ArrayList;\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-/**\n- *\n- */\n-public class DubboHandlerRegistry extends HandlerRegistry {\n-\n-    private final Map<String, ServerServiceDefinition> services = new ConcurrentHashMap<>();\n-    private final Map<String, ServerMethodDefinition<?, ?>> methods = new ConcurrentHashMap<>();\n-\n-    public DubboHandlerRegistry() {\n-    }\n-\n-    /**\n-     * Returns the service definitions in this registry.\n-     */\n-    @Override\n-    public List<ServerServiceDefinition> getServices() {\n-        return Collections.unmodifiableList(new ArrayList<>(services.values()));\n-    }\n-\n-    @Nullable\n-    @Override\n-    public ServerMethodDefinition<?, ?> lookupMethod(String methodName, @Nullable String authority) {\n-        // TODO (carl-mastrangelo): honor authority header.\n-        return methods.get(methodName);\n-    }\n-\n-    void addService(BindableService bindableService, String key) {\n-        ServerServiceDefinition service = bindableService.bindService();\n-        services.put(key, service);\n-        for (ServerMethodDefinition<?, ?> method : service.getMethods()) {\n-            methods.put(method.getMethodDescriptor().getFullMethodName(), method);\n-        }\n-    }\n-\n-    void removeService(String serviceKey) {\n-        ServerServiceDefinition service = services.remove(serviceKey);\n-        if (null != service) {\n-            for (ServerMethodDefinition<?, ?> method : service.getMethods()) {\n-                methods.remove(method.getMethodDescriptor().getFullMethodName(), method);\n-            }\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc;\r\n+\r\n+import io.grpc.BindableService;\r\n+import io.grpc.HandlerRegistry;\r\n+import io.grpc.ServerMethodDefinition;\r\n+import io.grpc.ServerServiceDefinition;\r\n+\r\n+import javax.annotation.Nullable;\r\n+import java.util.ArrayList;\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+public class DubboHandlerRegistry extends HandlerRegistry {\r\n+\r\n+    private final Map<String, ServerServiceDefinition> services = new ConcurrentHashMap<>();\r\n+    private final Map<String, ServerMethodDefinition<?, ?>> methods = new ConcurrentHashMap<>();\r\n+\r\n+    public DubboHandlerRegistry() {\r\n+    }\r\n+\r\n+    /**\r\n+     * Returns the service definitions in this registry.\r\n+     */\r\n+    @Override\r\n+    public List<ServerServiceDefinition> getServices() {\r\n+        return Collections.unmodifiableList(new ArrayList<>(services.values()));\r\n+    }\r\n+\r\n+    @Nullable\r\n+    @Override\r\n+    public ServerMethodDefinition<?, ?> lookupMethod(String methodName, @Nullable String authority) {\r\n+        // TODO (carl-mastrangelo): honor authority header.\r\n+        return methods.get(methodName);\r\n+    }\r\n+\r\n+    void addService(BindableService bindableService, String key) {\r\n+        ServerServiceDefinition service = bindableService.bindService();\r\n+        services.put(key, service);\r\n+        for (ServerMethodDefinition<?, ?> method : service.getMethods()) {\r\n+            methods.put(method.getMethodDescriptor().getFullMethodName(), method);\r\n+        }\r\n+    }\r\n+\r\n+    void removeService(String serviceKey) {\r\n+        ServerServiceDefinition service = services.remove(serviceKey);\r\n+        if (null != service) {\r\n+            for (ServerMethodDefinition<?, ?> method : service.getMethods()) {\r\n+                methods.remove(method.getMethodDescriptor().getFullMethodName(), method);\r\n+            }\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/GrpcConfig.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/GrpcConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,21 +1,21 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc;\n-\n-public class GrpcConfig {\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc;\r\n+\r\n+public class GrpcConfig {\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/GrpcConstants.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/GrpcConstants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,41 +1,41 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc;\n-\n-\n-public class GrpcConstants {\n-\n-    public static final String DIERCTOR_KEY = \"grpc.director\";\n-    public static final String HANDSHAKE_TIMEOUT = \"grpc.handshakeTimeout\";\n-    public static final String MAX_INBOUND_MESSAGE_SIZE = \"grpc.maxInboundMessageSize\";\n-    public static final String MAX_INBOUND_METADATA_SIZE = \"grpc.maxOutboundMessageSize\";\n-    public static final String FLOWCONTROL_WINDOW = \"grpc.flowControlWindow\";\n-    public static final String MAX_CONCURRENT_CALLS_PER_CONNECTION = \"grpc.maxConcurrentCallsPerConnection\";\n-\n-    public static final String WORKER_THREAD_NUM = \"grpc.io.num\";\n-    public static final String BOSS_THREAD_NUM = \"grpc.boss.num\";\n-    public static final String CHANNEL_TYPE = \"grpc.channel.type\";\n-\n-    public static final String SERVER_INTERCEPTORS = \"grpc.serverInterceptors\";\n-    public static final String CLIENT_INTERCEPTORS = \"grpc.clientInterceptors\";\n-    public static final String TRANSPORT_FILTERS = \"grpc.transportFilters\";\n-\n-    public static final String EXECUTOR = \"grpc.executor\";\n-\n-    public static final String CONFIGURATOR = \"grpc.configurator\";\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc;\r\n+\r\n+\r\n+public class GrpcConstants {\r\n+\r\n+    public static final String DIERCTOR_KEY = \"grpc.director\";\r\n+    public static final String HANDSHAKE_TIMEOUT = \"grpc.handshakeTimeout\";\r\n+    public static final String MAX_INBOUND_MESSAGE_SIZE = \"grpc.maxInboundMessageSize\";\r\n+    public static final String MAX_INBOUND_METADATA_SIZE = \"grpc.maxOutboundMessageSize\";\r\n+    public static final String FLOWCONTROL_WINDOW = \"grpc.flowControlWindow\";\r\n+    public static final String MAX_CONCURRENT_CALLS_PER_CONNECTION = \"grpc.maxConcurrentCallsPerConnection\";\r\n+\r\n+    public static final String WORKER_THREAD_NUM = \"grpc.io.num\";\r\n+    public static final String BOSS_THREAD_NUM = \"grpc.boss.num\";\r\n+    public static final String CHANNEL_TYPE = \"grpc.channel.type\";\r\n+\r\n+    public static final String SERVER_INTERCEPTORS = \"grpc.serverInterceptors\";\r\n+    public static final String CLIENT_INTERCEPTORS = \"grpc.clientInterceptors\";\r\n+    public static final String TRANSPORT_FILTERS = \"grpc.transportFilters\";\r\n+\r\n+    public static final String EXECUTOR = \"grpc.executor\";\r\n+\r\n+    public static final String CONFIGURATOR = \"grpc.configurator\";\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/GrpcInvoker.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/GrpcInvoker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,118 +1,118 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.protocol.AbstractInvoker;\n-\n-import io.grpc.Status;\n-import io.grpc.StatusException;\n-\n-import java.util.concurrent.locks.ReentrantLock;\n-\n-public class GrpcInvoker<T> extends AbstractInvoker<T> {\n-    private final ReentrantLock destroyLock = new ReentrantLock();\n-\n-    private final Invoker<T> target;\n-    private ReferenceCountManagedChannel channel;\n-\n-//    private static List<Exception> grpcExceptions = new ArrayList<>();\n-//    static {\n-//        grpcExceptions.add();\n-//    }\n-\n-    public GrpcInvoker(Class<T> type, URL url, Invoker<T> target, ReferenceCountManagedChannel channel) {\n-        super(type, url);\n-        this.target = target;\n-        this.channel = channel;\n-    }\n-\n-    @Override\n-    protected Result doInvoke(Invocation invocation) throws Throwable {\n-        try {\n-            Result result = target.invoke(invocation);\n-            // FIXME result is an AsyncRpcResult instance.\n-            Throwable e = result.getException();\n-            if (e != null) {\n-                throw getRpcException(getInterface(), getUrl(), invocation, e);\n-            }\n-            return result;\n-        } catch (RpcException e) {\n-            if (e.getCode() == RpcException.UNKNOWN_EXCEPTION) {\n-                e.setCode(getErrorCode(e.getCause()));\n-            }\n-            throw e;\n-        } catch (Throwable e) {\n-            throw getRpcException(getInterface(), getUrl(), invocation, e);\n-        }\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        return super.isAvailable() && !channel.isShutdown() && !channel.isTerminated();\n-    }\n-\n-    @Override\n-    public boolean isDestroyed() {\n-        return super.isDestroyed() || channel.isShutdown() || channel.isTerminated();\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        if (!super.isDestroyed()) {\n-            // double check to avoid dup close\n-            destroyLock.lock();\n-            try {\n-                if (super.isDestroyed()) {\n-                    return;\n-                }\n-                super.destroy();\n-                channel.shutdown();\n-            } finally {\n-                destroyLock.unlock();\n-            }\n-        }\n-    }\n-\n-    private RpcException getRpcException(Class<?> type, URL url, Invocation invocation, Throwable e) {\n-        RpcException re = new RpcException(\"Failed to invoke remote service: \" + type + \", method: \"\n-                + invocation.getMethodName() + \", cause: \" + e.getMessage(), e);\n-        re.setCode(getErrorCode(e));\n-        return re;\n-    }\n-\n-    /**\n-     * FIXME, convert gRPC exceptions to equivalent Dubbo exceptions.\n-     *\n-     * @param e\n-     * @return\n-     */\n-    private int getErrorCode(Throwable e) {\n-        if (e instanceof StatusException) {\n-            StatusException statusException = (StatusException) e;\n-            Status status = statusException.getStatus();\n-            if (status.getCode() == Status.Code.DEADLINE_EXCEEDED) {\n-                return RpcException.TIMEOUT_EXCEPTION;\n-            }\n-        }\n-        return RpcException.UNKNOWN_EXCEPTION;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.protocol.AbstractInvoker;\r\n+\r\n+import io.grpc.Status;\r\n+import io.grpc.StatusException;\r\n+\r\n+import java.util.concurrent.locks.ReentrantLock;\r\n+\r\n+public class GrpcInvoker<T> extends AbstractInvoker<T> {\r\n+    private final ReentrantLock destroyLock = new ReentrantLock();\r\n+\r\n+    private final Invoker<T> target;\r\n+    private ReferenceCountManagedChannel channel;\r\n+\r\n+//    private static List<Exception> grpcExceptions = new ArrayList<>();\r\n+//    static {\r\n+//        grpcExceptions.add();\r\n+//    }\r\n+\r\n+    public GrpcInvoker(Class<T> type, URL url, Invoker<T> target, ReferenceCountManagedChannel channel) {\r\n+        super(type, url);\r\n+        this.target = target;\r\n+        this.channel = channel;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Result doInvoke(Invocation invocation) throws Throwable {\r\n+        try {\r\n+            Result result = target.invoke(invocation);\r\n+            // FIXME result is an AsyncRpcResult instance.\r\n+            Throwable e = result.getException();\r\n+            if (e != null) {\r\n+                throw getRpcException(getInterface(), getUrl(), invocation, e);\r\n+            }\r\n+            return result;\r\n+        } catch (RpcException e) {\r\n+            if (e.getCode() == RpcException.UNKNOWN_EXCEPTION) {\r\n+                e.setCode(getErrorCode(e.getCause()));\r\n+            }\r\n+            throw e;\r\n+        } catch (Throwable e) {\r\n+            throw getRpcException(getInterface(), getUrl(), invocation, e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        return super.isAvailable() && !channel.isShutdown() && !channel.isTerminated();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isDestroyed() {\r\n+        return super.isDestroyed() || channel.isShutdown() || channel.isTerminated();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        if (!super.isDestroyed()) {\r\n+            // double check to avoid dup close\r\n+            destroyLock.lock();\r\n+            try {\r\n+                if (super.isDestroyed()) {\r\n+                    return;\r\n+                }\r\n+                super.destroy();\r\n+                channel.shutdown();\r\n+            } finally {\r\n+                destroyLock.unlock();\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private RpcException getRpcException(Class<?> type, URL url, Invocation invocation, Throwable e) {\r\n+        RpcException re = new RpcException(\"Failed to invoke remote service: \" + type + \", method: \"\r\n+                + invocation.getMethodName() + \", cause: \" + e.getMessage(), e);\r\n+        re.setCode(getErrorCode(e));\r\n+        return re;\r\n+    }\r\n+\r\n+    /**\r\n+     * FIXME, convert gRPC exceptions to equivalent Dubbo exceptions.\r\n+     *\r\n+     * @param e\r\n+     * @return\r\n+     */\r\n+    private int getErrorCode(Throwable e) {\r\n+        if (e instanceof StatusException) {\r\n+            StatusException statusException = (StatusException) e;\r\n+            Status status = statusException.getStatus();\r\n+            if (status.getCode() == Status.Code.DEADLINE_EXCEEDED) {\r\n+                return RpcException.TIMEOUT_EXCEPTION;\r\n+            }\r\n+        }\r\n+        return RpcException.UNKNOWN_EXCEPTION;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/GrpcOptionsUtils.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/GrpcOptionsUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,225 +1,225 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.threadpool.ThreadPool;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.config.SslConfig;\n-import org.apache.dubbo.config.context.ConfigManager;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.protocol.grpc.interceptors.ClientInterceptor;\n-import org.apache.dubbo.rpc.protocol.grpc.interceptors.GrpcConfigurator;\n-import org.apache.dubbo.rpc.protocol.grpc.interceptors.ServerInterceptor;\n-import org.apache.dubbo.rpc.protocol.grpc.interceptors.ServerTransportFilter;\n-\n-import io.grpc.CallOptions;\n-import io.grpc.ManagedChannel;\n-import io.grpc.ServerBuilder;\n-import io.grpc.netty.GrpcSslContexts;\n-import io.grpc.netty.NettyChannelBuilder;\n-import io.grpc.netty.NettyServerBuilder;\n-import io.netty.handler.ssl.ClientAuth;\n-import io.netty.handler.ssl.SslContext;\n-import io.netty.handler.ssl.SslContextBuilder;\n-\n-import javax.net.ssl.SSLException;\n-import java.io.InputStream;\n-import java.util.ArrayList;\n-import java.util.List;\n-import java.util.Optional;\n-import java.util.Set;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;\n-import static org.apache.dubbo.common.constants.CommonConstants.SSL_ENABLED_KEY;\n-import static org.apache.dubbo.remoting.Constants.DISPATCHER_KEY;\n-import static org.apache.dubbo.rpc.Constants.EXECUTES_KEY;\n-import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.CLIENT_INTERCEPTORS;\n-import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.EXECUTOR;\n-import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.MAX_CONCURRENT_CALLS_PER_CONNECTION;\n-import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.MAX_INBOUND_MESSAGE_SIZE;\n-import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.MAX_INBOUND_METADATA_SIZE;\n-import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.SERVER_INTERCEPTORS;\n-import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.TRANSPORT_FILTERS;\n-\n-/**\n- * Support gRPC configs in a Dubbo specific way.\n- */\n-public class GrpcOptionsUtils {\n-\n-    static ServerBuilder buildServerBuilder(URL url, NettyServerBuilder builder) {\n-\n-        int maxInboundMessageSize = url.getParameter(MAX_INBOUND_MESSAGE_SIZE, 0);\n-        if (maxInboundMessageSize > 0) {\n-            builder.maxInboundMessageSize(maxInboundMessageSize);\n-        }\n-\n-        int maxInboundMetadataSize = url.getParameter(MAX_INBOUND_METADATA_SIZE, 0);\n-        if (maxInboundMetadataSize > 0) {\n-            builder.maxInboundMetadataSize(maxInboundMetadataSize);\n-        }\n-\n-        if (url.getParameter(SSL_ENABLED_KEY, false)) {\n-            builder.sslContext(buildServerSslContext(url));\n-        }\n-\n-        int flowControlWindow = url.getParameter(MAX_INBOUND_MESSAGE_SIZE, 0);\n-        if (flowControlWindow > 0) {\n-            builder.flowControlWindow(flowControlWindow);\n-        }\n-\n-        int maxCalls = url.getParameter(MAX_CONCURRENT_CALLS_PER_CONNECTION, url.getParameter(EXECUTES_KEY, 0));\n-        if (maxCalls > 0) {\n-            builder.maxConcurrentCallsPerConnection(maxCalls);\n-        }\n-\n-        // server interceptors\n-        List<ServerInterceptor> serverInterceptors = ExtensionLoader.getExtensionLoader(ServerInterceptor.class)\n-                .getActivateExtension(url, SERVER_INTERCEPTORS, PROVIDER_SIDE);\n-        for (ServerInterceptor serverInterceptor : serverInterceptors) {\n-            builder.intercept(serverInterceptor);\n-        }\n-\n-        // server filters\n-        List<ServerTransportFilter> transportFilters = ExtensionLoader.getExtensionLoader(ServerTransportFilter.class)\n-                .getActivateExtension(url, TRANSPORT_FILTERS, PROVIDER_SIDE);\n-        for (ServerTransportFilter transportFilter : transportFilters) {\n-            builder.addTransportFilter(transportFilter.grpcTransportFilter());\n-        }\n-\n-        String thread = url.getParameter(EXECUTOR, url.getParameter(DISPATCHER_KEY));\n-        if (\"direct\".equals(thread)) {\n-            builder.directExecutor();\n-        } else {\n-            builder.executor(ExtensionLoader.getExtensionLoader(ThreadPool.class).getAdaptiveExtension().getExecutor(url));\n-        }\n-\n-        // Give users the chance to customize ServerBuilder\n-        return getConfigurator()\n-                .map(configurator -> configurator.configureServerBuilder(builder, url))\n-                .orElse(builder);\n-    }\n-\n-    static ManagedChannel buildManagedChannel(URL url) {\n-\n-        NettyChannelBuilder builder = NettyChannelBuilder.forAddress(url.getHost(), url.getPort());\n-        if (url.getParameter(SSL_ENABLED_KEY, false)) {\n-            builder.sslContext(buildClientSslContext(url));\n-        } else {\n-            builder.usePlaintext();\n-        }\n-\n-        builder.disableRetry();\n-//        builder.directExecutor();\n-\n-        // client interceptors\n-        List<io.grpc.ClientInterceptor> interceptors = new ArrayList<>(\n-                ExtensionLoader.getExtensionLoader(ClientInterceptor.class)\n-                        .getActivateExtension(url, CLIENT_INTERCEPTORS, CONSUMER_SIDE)\n-        );\n-\n-        builder.intercept(interceptors);\n-\n-        return getConfigurator()\n-                .map(configurator -> configurator.configureChannelBuilder(builder, url))\n-                .orElse(builder)\n-                .build();\n-    }\n-\n-    static CallOptions buildCallOptions(URL url) {\n-        // gRPC Deadline starts counting when it's created, so we need to create and add a new Deadline for each RPC call.\n-//        CallOptions callOptions = CallOptions.DEFAULT\n-//                .withDeadline(Deadline.after(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS));\n-        CallOptions callOptions = CallOptions.DEFAULT;\n-        return getConfigurator()\n-                .map(configurator -> configurator.configureCallOptions(callOptions, url))\n-                .orElse(callOptions);\n-    }\n-\n-    private static SslContext buildServerSslContext(URL url) {\n-        ConfigManager globalConfigManager = ApplicationModel.getConfigManager();\n-        SslConfig sslConfig = globalConfigManager.getSsl().orElseThrow(() -> new IllegalStateException(\"Ssl enabled, but no ssl cert information provided!\"));\n-\n-        SslContextBuilder sslClientContextBuilder = null;\n-        try {\n-            String password = sslConfig.getServerKeyPassword();\n-            if (password != null) {\n-                sslClientContextBuilder = GrpcSslContexts.forServer(sslConfig.getServerKeyCertChainPathStream(),\n-                        sslConfig.getServerPrivateKeyPathStream(), password);\n-            } else {\n-                sslClientContextBuilder = GrpcSslContexts.forServer(sslConfig.getServerKeyCertChainPathStream(),\n-                        sslConfig.getServerPrivateKeyPathStream());\n-            }\n-\n-            InputStream trustCertCollectionFilePath = sslConfig.getServerTrustCertCollectionPathStream();\n-            if (trustCertCollectionFilePath != null) {\n-                sslClientContextBuilder.trustManager(trustCertCollectionFilePath);\n-                sslClientContextBuilder.clientAuth(ClientAuth.REQUIRE);\n-            }\n-        } catch (Exception e) {\n-            throw new IllegalArgumentException(\"Could not find certificate file or the certificate is invalid.\", e);\n-        }\n-        try {\n-            return sslClientContextBuilder.build();\n-        } catch (SSLException e) {\n-            throw new IllegalStateException(\"Build SslSession failed.\", e);\n-        }\n-    }\n-\n-    private static SslContext buildClientSslContext(URL url) {\n-        ConfigManager globalConfigManager = ApplicationModel.getConfigManager();\n-        SslConfig sslConfig = globalConfigManager.getSsl().orElseThrow(() -> new IllegalStateException(\"Ssl enabled, but no ssl cert information provided!\"));\n-\n-\n-        SslContextBuilder builder = GrpcSslContexts.forClient();\n-        try {\n-            InputStream trustCertCollectionFilePath = sslConfig.getClientTrustCertCollectionPathStream();\n-            if (trustCertCollectionFilePath != null) {\n-                builder.trustManager(trustCertCollectionFilePath);\n-            }\n-            InputStream clientCertChainFilePath = sslConfig.getClientKeyCertChainPathStream();\n-            InputStream clientPrivateKeyFilePath = sslConfig.getClientPrivateKeyPathStream();\n-            if (clientCertChainFilePath != null && clientPrivateKeyFilePath != null) {\n-                String password = sslConfig.getClientKeyPassword();\n-                if (password != null) {\n-                    builder.keyManager(clientCertChainFilePath, clientPrivateKeyFilePath, password);\n-                } else {\n-                    builder.keyManager(clientCertChainFilePath, clientPrivateKeyFilePath);\n-                }\n-            }\n-        } catch (Exception e) {\n-            throw new IllegalArgumentException(\"Could not find certificate file or find invalid certificate.\", e);\n-        }\n-        try {\n-            return builder.build();\n-        } catch (SSLException e) {\n-            throw new IllegalStateException(\"Build SslSession failed.\", e);\n-        }\n-    }\n-\n-    private static Optional<GrpcConfigurator> getConfigurator() {\n-        // Give users the chance to customize ServerBuilder\n-        Set<GrpcConfigurator> configurators = ExtensionLoader.getExtensionLoader(GrpcConfigurator.class)\n-                .getSupportedExtensionInstances();\n-        if (CollectionUtils.isNotEmpty(configurators)) {\n-            return Optional.of(configurators.iterator().next());\n-        }\n-        return Optional.empty();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.threadpool.ThreadPool;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.config.SslConfig;\r\n+import org.apache.dubbo.config.context.ConfigManager;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.protocol.grpc.interceptors.ClientInterceptor;\r\n+import org.apache.dubbo.rpc.protocol.grpc.interceptors.GrpcConfigurator;\r\n+import org.apache.dubbo.rpc.protocol.grpc.interceptors.ServerInterceptor;\r\n+import org.apache.dubbo.rpc.protocol.grpc.interceptors.ServerTransportFilter;\r\n+\r\n+import io.grpc.CallOptions;\r\n+import io.grpc.ManagedChannel;\r\n+import io.grpc.ServerBuilder;\r\n+import io.grpc.netty.GrpcSslContexts;\r\n+import io.grpc.netty.NettyChannelBuilder;\r\n+import io.grpc.netty.NettyServerBuilder;\r\n+import io.netty.handler.ssl.ClientAuth;\r\n+import io.netty.handler.ssl.SslContext;\r\n+import io.netty.handler.ssl.SslContextBuilder;\r\n+\r\n+import javax.net.ssl.SSLException;\r\n+import java.io.InputStream;\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+import java.util.Optional;\r\n+import java.util.Set;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SSL_ENABLED_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.DISPATCHER_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.EXECUTES_KEY;\r\n+import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.CLIENT_INTERCEPTORS;\r\n+import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.EXECUTOR;\r\n+import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.MAX_CONCURRENT_CALLS_PER_CONNECTION;\r\n+import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.MAX_INBOUND_MESSAGE_SIZE;\r\n+import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.MAX_INBOUND_METADATA_SIZE;\r\n+import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.SERVER_INTERCEPTORS;\r\n+import static org.apache.dubbo.rpc.protocol.grpc.GrpcConstants.TRANSPORT_FILTERS;\r\n+\r\n+/**\r\n+ * Support gRPC configs in a Dubbo specific way.\r\n+ */\r\n+public class GrpcOptionsUtils {\r\n+\r\n+    static ServerBuilder buildServerBuilder(URL url, NettyServerBuilder builder) {\r\n+\r\n+        int maxInboundMessageSize = url.getParameter(MAX_INBOUND_MESSAGE_SIZE, 0);\r\n+        if (maxInboundMessageSize > 0) {\r\n+            builder.maxInboundMessageSize(maxInboundMessageSize);\r\n+        }\r\n+\r\n+        int maxInboundMetadataSize = url.getParameter(MAX_INBOUND_METADATA_SIZE, 0);\r\n+        if (maxInboundMetadataSize > 0) {\r\n+            builder.maxInboundMetadataSize(maxInboundMetadataSize);\r\n+        }\r\n+\r\n+        if (url.getParameter(SSL_ENABLED_KEY, false)) {\r\n+            builder.sslContext(buildServerSslContext(url));\r\n+        }\r\n+\r\n+        int flowControlWindow = url.getParameter(MAX_INBOUND_MESSAGE_SIZE, 0);\r\n+        if (flowControlWindow > 0) {\r\n+            builder.flowControlWindow(flowControlWindow);\r\n+        }\r\n+\r\n+        int maxCalls = url.getParameter(MAX_CONCURRENT_CALLS_PER_CONNECTION, url.getParameter(EXECUTES_KEY, 0));\r\n+        if (maxCalls > 0) {\r\n+            builder.maxConcurrentCallsPerConnection(maxCalls);\r\n+        }\r\n+\r\n+        // server interceptors\r\n+        List<ServerInterceptor> serverInterceptors = ExtensionLoader.getExtensionLoader(ServerInterceptor.class)\r\n+                .getActivateExtension(url, SERVER_INTERCEPTORS, PROVIDER_SIDE);\r\n+        for (ServerInterceptor serverInterceptor : serverInterceptors) {\r\n+            builder.intercept(serverInterceptor);\r\n+        }\r\n+\r\n+        // server filters\r\n+        List<ServerTransportFilter> transportFilters = ExtensionLoader.getExtensionLoader(ServerTransportFilter.class)\r\n+                .getActivateExtension(url, TRANSPORT_FILTERS, PROVIDER_SIDE);\r\n+        for (ServerTransportFilter transportFilter : transportFilters) {\r\n+            builder.addTransportFilter(transportFilter.grpcTransportFilter());\r\n+        }\r\n+\r\n+        String thread = url.getParameter(EXECUTOR, url.getParameter(DISPATCHER_KEY));\r\n+        if (\"direct\".equals(thread)) {\r\n+            builder.directExecutor();\r\n+        } else {\r\n+            builder.executor(ExtensionLoader.getExtensionLoader(ThreadPool.class).getAdaptiveExtension().getExecutor(url));\r\n+        }\r\n+\r\n+        // Give users the chance to customize ServerBuilder\r\n+        return getConfigurator()\r\n+                .map(configurator -> configurator.configureServerBuilder(builder, url))\r\n+                .orElse(builder);\r\n+    }\r\n+\r\n+    static ManagedChannel buildManagedChannel(URL url) {\r\n+\r\n+        NettyChannelBuilder builder = NettyChannelBuilder.forAddress(url.getHost(), url.getPort());\r\n+        if (url.getParameter(SSL_ENABLED_KEY, false)) {\r\n+            builder.sslContext(buildClientSslContext(url));\r\n+        } else {\r\n+            builder.usePlaintext();\r\n+        }\r\n+\r\n+        builder.disableRetry();\r\n+//        builder.directExecutor();\r\n+\r\n+        // client interceptors\r\n+        List<io.grpc.ClientInterceptor> interceptors = new ArrayList<>(\r\n+                ExtensionLoader.getExtensionLoader(ClientInterceptor.class)\r\n+                        .getActivateExtension(url, CLIENT_INTERCEPTORS, CONSUMER_SIDE)\r\n+        );\r\n+\r\n+        builder.intercept(interceptors);\r\n+\r\n+        return getConfigurator()\r\n+                .map(configurator -> configurator.configureChannelBuilder(builder, url))\r\n+                .orElse(builder)\r\n+                .build();\r\n+    }\r\n+\r\n+    static CallOptions buildCallOptions(URL url) {\r\n+        // gRPC Deadline starts counting when it's created, so we need to create and add a new Deadline for each RPC call.\r\n+//        CallOptions callOptions = CallOptions.DEFAULT\r\n+//                .withDeadline(Deadline.after(url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS));\r\n+        CallOptions callOptions = CallOptions.DEFAULT;\r\n+        return getConfigurator()\r\n+                .map(configurator -> configurator.configureCallOptions(callOptions, url))\r\n+                .orElse(callOptions);\r\n+    }\r\n+\r\n+    private static SslContext buildServerSslContext(URL url) {\r\n+        ConfigManager globalConfigManager = ApplicationModel.getConfigManager();\r\n+        SslConfig sslConfig = globalConfigManager.getSsl().orElseThrow(() -> new IllegalStateException(\"Ssl enabled, but no ssl cert information provided!\"));\r\n+\r\n+        SslContextBuilder sslClientContextBuilder = null;\r\n+        try {\r\n+            String password = sslConfig.getServerKeyPassword();\r\n+            if (password != null) {\r\n+                sslClientContextBuilder = GrpcSslContexts.forServer(sslConfig.getServerKeyCertChainPathStream(),\r\n+                        sslConfig.getServerPrivateKeyPathStream(), password);\r\n+            } else {\r\n+                sslClientContextBuilder = GrpcSslContexts.forServer(sslConfig.getServerKeyCertChainPathStream(),\r\n+                        sslConfig.getServerPrivateKeyPathStream());\r\n+            }\r\n+\r\n+            InputStream trustCertCollectionFilePath = sslConfig.getServerTrustCertCollectionPathStream();\r\n+            if (trustCertCollectionFilePath != null) {\r\n+                sslClientContextBuilder.trustManager(trustCertCollectionFilePath);\r\n+                sslClientContextBuilder.clientAuth(ClientAuth.REQUIRE);\r\n+            }\r\n+        } catch (Exception e) {\r\n+            throw new IllegalArgumentException(\"Could not find certificate file or the certificate is invalid.\", e);\r\n+        }\r\n+        try {\r\n+            return sslClientContextBuilder.build();\r\n+        } catch (SSLException e) {\r\n+            throw new IllegalStateException(\"Build SslSession failed.\", e);\r\n+        }\r\n+    }\r\n+\r\n+    private static SslContext buildClientSslContext(URL url) {\r\n+        ConfigManager globalConfigManager = ApplicationModel.getConfigManager();\r\n+        SslConfig sslConfig = globalConfigManager.getSsl().orElseThrow(() -> new IllegalStateException(\"Ssl enabled, but no ssl cert information provided!\"));\r\n+\r\n+\r\n+        SslContextBuilder builder = GrpcSslContexts.forClient();\r\n+        try {\r\n+            InputStream trustCertCollectionFilePath = sslConfig.getClientTrustCertCollectionPathStream();\r\n+            if (trustCertCollectionFilePath != null) {\r\n+                builder.trustManager(trustCertCollectionFilePath);\r\n+            }\r\n+            InputStream clientCertChainFilePath = sslConfig.getClientKeyCertChainPathStream();\r\n+            InputStream clientPrivateKeyFilePath = sslConfig.getClientPrivateKeyPathStream();\r\n+            if (clientCertChainFilePath != null && clientPrivateKeyFilePath != null) {\r\n+                String password = sslConfig.getClientKeyPassword();\r\n+                if (password != null) {\r\n+                    builder.keyManager(clientCertChainFilePath, clientPrivateKeyFilePath, password);\r\n+                } else {\r\n+                    builder.keyManager(clientCertChainFilePath, clientPrivateKeyFilePath);\r\n+                }\r\n+            }\r\n+        } catch (Exception e) {\r\n+            throw new IllegalArgumentException(\"Could not find certificate file or find invalid certificate.\", e);\r\n+        }\r\n+        try {\r\n+            return builder.build();\r\n+        } catch (SSLException e) {\r\n+            throw new IllegalStateException(\"Build SslSession failed.\", e);\r\n+        }\r\n+    }\r\n+\r\n+    private static Optional<GrpcConfigurator> getConfigurator() {\r\n+        // Give users the chance to customize ServerBuilder\r\n+        Set<GrpcConfigurator> configurators = ExtensionLoader.getExtensionLoader(GrpcConfigurator.class)\r\n+                .getSupportedExtensionInstances();\r\n+        if (CollectionUtils.isNotEmpty(configurators)) {\r\n+            return Optional.of(configurators.iterator().next());\r\n+        }\r\n+        return Optional.empty();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/GrpcProtocol.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/GrpcProtocol.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,235 +1,235 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.config.ReferenceConfigBase;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.ProtocolServer;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.ProviderModel;\n-import org.apache.dubbo.rpc.model.ServiceRepository;\n-import org.apache.dubbo.rpc.protocol.AbstractProxyProtocol;\n-\n-import io.grpc.BindableService;\n-import io.grpc.CallOptions;\n-import io.grpc.Channel;\n-import io.grpc.ManagedChannel;\n-import io.grpc.Server;\n-import io.grpc.netty.NettyServerBuilder;\n-\n-import java.io.IOException;\n-import java.lang.reflect.InvocationTargetException;\n-import java.lang.reflect.Method;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-/**\n- *\n- */\n-public class GrpcProtocol extends AbstractProxyProtocol {\n-\n-    public final static int DEFAULT_PORT = 50051;\n-\n-    /* <address, gRPC channels> */\n-    private final ConcurrentMap<String, ReferenceCountManagedChannel> channelMap = new ConcurrentHashMap<>();\n-    private final Object lock = new Object();\n-\n-    @Override\n-    protected <T> Runnable doExport(T proxiedImpl, Class<T> type, URL url) throws RpcException {\n-        String key = url.getAddress();\n-        ProtocolServer protocolServer = serverMap.computeIfAbsent(key, k -> {\n-            DubboHandlerRegistry registry = new DubboHandlerRegistry();\n-\n-            NettyServerBuilder builder =\n-                    NettyServerBuilder\n-                    .forPort(url.getPort())\n-                            .fallbackHandlerRegistry(registry);\n-\n-            Server originalServer = GrpcOptionsUtils.buildServerBuilder(url, builder).build();\n-            GrpcRemotingServer remotingServer = new GrpcRemotingServer(originalServer, registry);\n-            return new ProxyProtocolServer(remotingServer);\n-        });\n-\n-        GrpcRemotingServer grpcServer = (GrpcRemotingServer) protocolServer.getRemotingServer();\n-\n-        ServiceRepository serviceRepository = ApplicationModel.getServiceRepository();\n-        ProviderModel providerModel = serviceRepository.lookupExportedService(url.getServiceKey());\n-        if (providerModel == null) {\n-            throw new IllegalStateException(\"Service \" + url.getServiceKey() + \"should have already been stored in service repository, \" +\n-                    \"but failed to find it.\");\n-        }\n-        Object originalImpl = providerModel.getServiceInstance();\n-\n-        Class<?> implClass = originalImpl.getClass();\n-        try {\n-            Method method = implClass.getMethod(\"setProxiedImpl\", type);\n-            method.invoke(originalImpl, proxiedImpl);\n-        } catch (Exception e) {\n-            throw new IllegalStateException(\"Failed to set dubbo proxied service impl to stub, please make sure your stub \" +\n-                    \"was generated by the dubbo-protoc-compiler.\", e);\n-        }\n-        grpcServer.getRegistry().addService((BindableService) originalImpl, url.getServiceKey());\n-\n-        if (!grpcServer.isStarted()) {\n-            grpcServer.start();\n-        }\n-\n-        return () -> grpcServer.getRegistry().removeService(url.getServiceKey());\n-    }\n-\n-    @Override\n-    protected <T> Invoker<T> protocolBindingRefer(final Class<T> type, final URL url) throws RpcException {\n-        Class<?> enclosingClass = type.getEnclosingClass();\n-\n-        if (enclosingClass == null) {\n-            throw new IllegalArgumentException(type.getName() + \" must be declared inside protobuf generated classes, \" +\n-                    \"should be something like ServiceNameGrpc.IServiceName.\");\n-        }\n-\n-        final Method dubboStubMethod;\n-        try {\n-            dubboStubMethod = enclosingClass.getDeclaredMethod(\"getDubboStub\", Channel.class, CallOptions.class,\n-                    URL.class, ReferenceConfigBase.class);\n-        } catch (NoSuchMethodException e) {\n-            throw new IllegalArgumentException(\"Does not find getDubboStub in \" + enclosingClass.getName() + \", please use the customized protoc-gen-dubbo-java to update the generated classes.\");\n-        }\n-\n-        // Channel\n-        ReferenceCountManagedChannel channel = getSharedChannel(url);\n-\n-        // CallOptions\n-        try {\n-            @SuppressWarnings(\"unchecked\") final T stub = (T) dubboStubMethod.invoke(null,\n-                    channel,\n-                    GrpcOptionsUtils.buildCallOptions(url),\n-                    url,\n-                    ApplicationModel.getConsumerModel(url.getServiceKey()).getReferenceConfig()\n-            );\n-            final Invoker<T> target = proxyFactory.getInvoker(stub, type, url);\n-            GrpcInvoker<T> grpcInvoker = new GrpcInvoker<>(type, url, target, channel);\n-            invokers.add(grpcInvoker);\n-            return grpcInvoker;\n-        } catch (IllegalAccessException | InvocationTargetException e) {\n-            throw new IllegalStateException(\"Could not create stub through reflection.\", e);\n-        }\n-    }\n-\n-    /**\n-     * not used\n-     *\n-     * @param type\n-     * @param url\n-     * @param <T>\n-     * @return\n-     * @throws RpcException\n-     */\n-    @Override\n-    protected <T> T doRefer(Class<T> type, URL url) throws RpcException {\n-        throw new UnsupportedOperationException(\"not used\");\n-    }\n-\n-    /**\n-     * Get shared channel connection\n-     */\n-    private ReferenceCountManagedChannel getSharedChannel(URL url) {\n-        String key = url.getAddress();\n-        ReferenceCountManagedChannel channel = channelMap.get(key);\n-\n-        if (channel != null && !channel.isTerminated()) {\n-            channel.incrementAndGetCount();\n-            return channel;\n-        }\n-\n-        synchronized (lock) {\n-            channel = channelMap.get(key);\n-            // dubbo check\n-            if (channel != null && !channel.isTerminated()) {\n-                channel.incrementAndGetCount();\n-            } else {\n-                channel = new ReferenceCountManagedChannel(initChannel(url));\n-                channelMap.put(key, channel);\n-            }\n-        }\n-\n-        return channel;\n-    }\n-\n-    /**\n-     * Create new connection\n-     *\n-     * @param url\n-     */\n-    private ManagedChannel initChannel(URL url) {\n-        return GrpcOptionsUtils.buildManagedChannel(url);\n-    }\n-\n-    @Override\n-    public int getDefaultPort() {\n-        return DEFAULT_PORT;\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        serverMap.values().forEach(ProtocolServer::close);\n-        channelMap.values().forEach(ReferenceCountManagedChannel::shutdown);\n-        serverMap.clear();\n-        channelMap.clear();\n-        super.destroy();\n-    }\n-\n-    public class GrpcRemotingServer extends RemotingServerAdapter {\n-\n-        private Server originalServer;\n-        private DubboHandlerRegistry handlerRegistry;\n-        private volatile boolean started;\n-\n-        public GrpcRemotingServer(Server server, DubboHandlerRegistry handlerRegistry) {\n-            this.originalServer = server;\n-            this.handlerRegistry = handlerRegistry;\n-        }\n-\n-        public void start() throws RpcException {\n-            try {\n-                originalServer.start();\n-                started = true;\n-            } catch (IOException e) {\n-                throw new RpcException(\"Starting gRPC server failed. \", e);\n-            }\n-        }\n-\n-        public DubboHandlerRegistry getRegistry() {\n-            return handlerRegistry;\n-        }\n-\n-        @Override\n-        public Object getDelegateServer() {\n-            return originalServer;\n-        }\n-\n-        public boolean isStarted() {\n-            return started;\n-        }\n-\n-        @Override\n-        public void close() {\n-            originalServer.shutdown();\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.config.ReferenceConfigBase;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.ProtocolServer;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.ProviderModel;\r\n+import org.apache.dubbo.rpc.model.ServiceRepository;\r\n+import org.apache.dubbo.rpc.protocol.AbstractProxyProtocol;\r\n+\r\n+import io.grpc.BindableService;\r\n+import io.grpc.CallOptions;\r\n+import io.grpc.Channel;\r\n+import io.grpc.ManagedChannel;\r\n+import io.grpc.Server;\r\n+import io.grpc.netty.NettyServerBuilder;\r\n+\r\n+import java.io.IOException;\r\n+import java.lang.reflect.InvocationTargetException;\r\n+import java.lang.reflect.Method;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+public class GrpcProtocol extends AbstractProxyProtocol {\r\n+\r\n+    public final static int DEFAULT_PORT = 50051;\r\n+\r\n+    /* <address, gRPC channels> */\r\n+    private final ConcurrentMap<String, ReferenceCountManagedChannel> channelMap = new ConcurrentHashMap<>();\r\n+    private final Object lock = new Object();\r\n+\r\n+    @Override\r\n+    protected <T> Runnable doExport(T proxiedImpl, Class<T> type, URL url) throws RpcException {\r\n+        String key = url.getAddress();\r\n+        ProtocolServer protocolServer = serverMap.computeIfAbsent(key, k -> {\r\n+            DubboHandlerRegistry registry = new DubboHandlerRegistry();\r\n+\r\n+            NettyServerBuilder builder =\r\n+                    NettyServerBuilder\r\n+                    .forPort(url.getPort())\r\n+                            .fallbackHandlerRegistry(registry);\r\n+\r\n+            Server originalServer = GrpcOptionsUtils.buildServerBuilder(url, builder).build();\r\n+            GrpcRemotingServer remotingServer = new GrpcRemotingServer(originalServer, registry);\r\n+            return new ProxyProtocolServer(remotingServer);\r\n+        });\r\n+\r\n+        GrpcRemotingServer grpcServer = (GrpcRemotingServer) protocolServer.getRemotingServer();\r\n+\r\n+        ServiceRepository serviceRepository = ApplicationModel.getServiceRepository();\r\n+        ProviderModel providerModel = serviceRepository.lookupExportedService(url.getServiceKey());\r\n+        if (providerModel == null) {\r\n+            throw new IllegalStateException(\"Service \" + url.getServiceKey() + \"should have already been stored in service repository, \" +\r\n+                    \"but failed to find it.\");\r\n+        }\r\n+        Object originalImpl = providerModel.getServiceInstance();\r\n+\r\n+        Class<?> implClass = originalImpl.getClass();\r\n+        try {\r\n+            Method method = implClass.getMethod(\"setProxiedImpl\", type);\r\n+            method.invoke(originalImpl, proxiedImpl);\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(\"Failed to set dubbo proxied service impl to stub, please make sure your stub \" +\r\n+                    \"was generated by the dubbo-protoc-compiler.\", e);\r\n+        }\r\n+        grpcServer.getRegistry().addService((BindableService) originalImpl, url.getServiceKey());\r\n+\r\n+        if (!grpcServer.isStarted()) {\r\n+            grpcServer.start();\r\n+        }\r\n+\r\n+        return () -> grpcServer.getRegistry().removeService(url.getServiceKey());\r\n+    }\r\n+\r\n+    @Override\r\n+    protected <T> Invoker<T> protocolBindingRefer(final Class<T> type, final URL url) throws RpcException {\r\n+        Class<?> enclosingClass = type.getEnclosingClass();\r\n+\r\n+        if (enclosingClass == null) {\r\n+            throw new IllegalArgumentException(type.getName() + \" must be declared inside protobuf generated classes, \" +\r\n+                    \"should be something like ServiceNameGrpc.IServiceName.\");\r\n+        }\r\n+\r\n+        final Method dubboStubMethod;\r\n+        try {\r\n+            dubboStubMethod = enclosingClass.getDeclaredMethod(\"getDubboStub\", Channel.class, CallOptions.class,\r\n+                    URL.class, ReferenceConfigBase.class);\r\n+        } catch (NoSuchMethodException e) {\r\n+            throw new IllegalArgumentException(\"Does not find getDubboStub in \" + enclosingClass.getName() + \", please use the customized protoc-gen-dubbo-java to update the generated classes.\");\r\n+        }\r\n+\r\n+        // Channel\r\n+        ReferenceCountManagedChannel channel = getSharedChannel(url);\r\n+\r\n+        // CallOptions\r\n+        try {\r\n+            @SuppressWarnings(\"unchecked\") final T stub = (T) dubboStubMethod.invoke(null,\r\n+                    channel,\r\n+                    GrpcOptionsUtils.buildCallOptions(url),\r\n+                    url,\r\n+                    ApplicationModel.getConsumerModel(url.getServiceKey()).getReferenceConfig()\r\n+            );\r\n+            final Invoker<T> target = proxyFactory.getInvoker(stub, type, url);\r\n+            GrpcInvoker<T> grpcInvoker = new GrpcInvoker<>(type, url, target, channel);\r\n+            invokers.add(grpcInvoker);\r\n+            return grpcInvoker;\r\n+        } catch (IllegalAccessException | InvocationTargetException e) {\r\n+            throw new IllegalStateException(\"Could not create stub through reflection.\", e);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * not used\r\n+     *\r\n+     * @param type\r\n+     * @param url\r\n+     * @param <T>\r\n+     * @return\r\n+     * @throws RpcException\r\n+     */\r\n+    @Override\r\n+    protected <T> T doRefer(Class<T> type, URL url) throws RpcException {\r\n+        throw new UnsupportedOperationException(\"not used\");\r\n+    }\r\n+\r\n+    /**\r\n+     * Get shared channel connection\r\n+     */\r\n+    private ReferenceCountManagedChannel getSharedChannel(URL url) {\r\n+        String key = url.getAddress();\r\n+        ReferenceCountManagedChannel channel = channelMap.get(key);\r\n+\r\n+        if (channel != null && !channel.isTerminated()) {\r\n+            channel.incrementAndGetCount();\r\n+            return channel;\r\n+        }\r\n+\r\n+        synchronized (lock) {\r\n+            channel = channelMap.get(key);\r\n+            // dubbo check\r\n+            if (channel != null && !channel.isTerminated()) {\r\n+                channel.incrementAndGetCount();\r\n+            } else {\r\n+                channel = new ReferenceCountManagedChannel(initChannel(url));\r\n+                channelMap.put(key, channel);\r\n+            }\r\n+        }\r\n+\r\n+        return channel;\r\n+    }\r\n+\r\n+    /**\r\n+     * Create new connection\r\n+     *\r\n+     * @param url\r\n+     */\r\n+    private ManagedChannel initChannel(URL url) {\r\n+        return GrpcOptionsUtils.buildManagedChannel(url);\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getDefaultPort() {\r\n+        return DEFAULT_PORT;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        serverMap.values().forEach(ProtocolServer::close);\r\n+        channelMap.values().forEach(ReferenceCountManagedChannel::shutdown);\r\n+        serverMap.clear();\r\n+        channelMap.clear();\r\n+        super.destroy();\r\n+    }\r\n+\r\n+    public class GrpcRemotingServer extends RemotingServerAdapter {\r\n+\r\n+        private Server originalServer;\r\n+        private DubboHandlerRegistry handlerRegistry;\r\n+        private volatile boolean started;\r\n+\r\n+        public GrpcRemotingServer(Server server, DubboHandlerRegistry handlerRegistry) {\r\n+            this.originalServer = server;\r\n+            this.handlerRegistry = handlerRegistry;\r\n+        }\r\n+\r\n+        public void start() throws RpcException {\r\n+            try {\r\n+                originalServer.start();\r\n+                started = true;\r\n+            } catch (IOException e) {\r\n+                throw new RpcException(\"Starting gRPC server failed. \", e);\r\n+            }\r\n+        }\r\n+\r\n+        public DubboHandlerRegistry getRegistry() {\r\n+            return handlerRegistry;\r\n+        }\r\n+\r\n+        @Override\r\n+        public Object getDelegateServer() {\r\n+            return originalServer;\r\n+        }\r\n+\r\n+        public boolean isStarted() {\r\n+            return started;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void close() {\r\n+            originalServer.shutdown();\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/ReferenceCountManagedChannel.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/ReferenceCountManagedChannel.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,85 +1,85 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc;\n-\n-import io.grpc.CallOptions;\n-import io.grpc.ClientCall;\n-import io.grpc.ManagedChannel;\n-import io.grpc.MethodDescriptor;\n-\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.atomic.AtomicInteger;\n-\n-/**\n- * Also see ReferenceCountExchangeClient\n- */\n-public class ReferenceCountManagedChannel extends ManagedChannel {\n-\n-    private final AtomicInteger referenceCount = new AtomicInteger(0);\n-\n-    private ManagedChannel grpcChannel;\n-\n-    public ReferenceCountManagedChannel(ManagedChannel delegated) {\n-        this.grpcChannel = delegated;\n-    }\n-\n-    /**\n-     * The reference count of current ExchangeClient, connection will be closed if all invokers destroyed.\n-     */\n-    public void incrementAndGetCount() {\n-        referenceCount.incrementAndGet();\n-    }\n-\n-    @Override\n-    public ManagedChannel shutdown() {\n-        if (referenceCount.decrementAndGet() <= 0) {\n-            return grpcChannel.shutdown();\n-        }\n-        return grpcChannel;\n-    }\n-\n-    @Override\n-    public boolean isShutdown() {\n-        return grpcChannel.isShutdown();\n-    }\n-\n-    @Override\n-    public boolean isTerminated() {\n-        return grpcChannel.isTerminated();\n-    }\n-\n-    @Override\n-    public ManagedChannel shutdownNow() {\n-        // TODO\n-        return shutdown();\n-    }\n-\n-    @Override\n-    public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {\n-        return grpcChannel.awaitTermination(timeout, unit);\n-    }\n-\n-    @Override\n-    public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall(MethodDescriptor<RequestT, ResponseT> methodDescriptor, CallOptions callOptions) {\n-        return grpcChannel.newCall(methodDescriptor, callOptions);\n-    }\n-\n-    @Override\n-    public String authority() {\n-        return grpcChannel.authority();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc;\r\n+\r\n+import io.grpc.CallOptions;\r\n+import io.grpc.ClientCall;\r\n+import io.grpc.ManagedChannel;\r\n+import io.grpc.MethodDescriptor;\r\n+\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.atomic.AtomicInteger;\r\n+\r\n+/**\r\n+ * Also see ReferenceCountExchangeClient\r\n+ */\r\n+public class ReferenceCountManagedChannel extends ManagedChannel {\r\n+\r\n+    private final AtomicInteger referenceCount = new AtomicInteger(0);\r\n+\r\n+    private ManagedChannel grpcChannel;\r\n+\r\n+    public ReferenceCountManagedChannel(ManagedChannel delegated) {\r\n+        this.grpcChannel = delegated;\r\n+    }\r\n+\r\n+    /**\r\n+     * The reference count of current ExchangeClient, connection will be closed if all invokers destroyed.\r\n+     */\r\n+    public void incrementAndGetCount() {\r\n+        referenceCount.incrementAndGet();\r\n+    }\r\n+\r\n+    @Override\r\n+    public ManagedChannel shutdown() {\r\n+        if (referenceCount.decrementAndGet() <= 0) {\r\n+            return grpcChannel.shutdown();\r\n+        }\r\n+        return grpcChannel;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isShutdown() {\r\n+        return grpcChannel.isShutdown();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isTerminated() {\r\n+        return grpcChannel.isTerminated();\r\n+    }\r\n+\r\n+    @Override\r\n+    public ManagedChannel shutdownNow() {\r\n+        // TODO\r\n+        return shutdown();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {\r\n+        return grpcChannel.awaitTermination(timeout, unit);\r\n+    }\r\n+\r\n+    @Override\r\n+    public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall(MethodDescriptor<RequestT, ResponseT> methodDescriptor, CallOptions callOptions) {\r\n+        return grpcChannel.newCall(methodDescriptor, callOptions);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String authority() {\r\n+        return grpcChannel.authority();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/interceptors/ClientInterceptor.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/interceptors/ClientInterceptor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,26 +1,26 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc.interceptors;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-/**\n- * Adapt to the standard Dubbo SPI, so that we can leverage the advantages of Dubbo ExtensionLoader.\n- */\n-@SPI\n-public interface ClientInterceptor extends io.grpc.ClientInterceptor {\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc.interceptors;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+/**\r\n+ * Adapt to the standard Dubbo SPI, so that we can leverage the advantages of Dubbo ExtensionLoader.\r\n+ */\r\n+@SPI\r\n+public interface ClientInterceptor extends io.grpc.ClientInterceptor {\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/interceptors/GrpcConfigurator.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/interceptors/GrpcConfigurator.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,41 +1,41 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc.interceptors;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-import io.grpc.CallOptions;\n-import io.grpc.netty.NettyChannelBuilder;\n-import io.grpc.netty.NettyServerBuilder;\n-\n-@SPI\n-public interface GrpcConfigurator {\n-\n-    default NettyServerBuilder configureServerBuilder(NettyServerBuilder builder, URL url) {\n-        return builder;\n-    }\n-\n-    default NettyChannelBuilder configureChannelBuilder(NettyChannelBuilder builder, URL url) {\n-        return builder;\n-    }\n-\n-    default CallOptions configureCallOptions(CallOptions options, URL url) {\n-        return options;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc.interceptors;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+import io.grpc.CallOptions;\r\n+import io.grpc.netty.NettyChannelBuilder;\r\n+import io.grpc.netty.NettyServerBuilder;\r\n+\r\n+@SPI\r\n+public interface GrpcConfigurator {\r\n+\r\n+    default NettyServerBuilder configureServerBuilder(NettyServerBuilder builder, URL url) {\r\n+        return builder;\r\n+    }\r\n+\r\n+    default NettyChannelBuilder configureChannelBuilder(NettyChannelBuilder builder, URL url) {\r\n+        return builder;\r\n+    }\r\n+\r\n+    default CallOptions configureCallOptions(CallOptions options, URL url) {\r\n+        return options;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/interceptors/RpcContextInterceptor.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/interceptors/RpcContextInterceptor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,100 +1,100 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc.interceptors;\n-\n-import io.grpc.CallOptions;\n-import io.grpc.Channel;\n-import io.grpc.ClientCall;\n-import io.grpc.ForwardingClientCall;\n-import io.grpc.ForwardingServerCallListener;\n-import io.grpc.Metadata;\n-import io.grpc.MethodDescriptor;\n-import io.grpc.ServerCall;\n-import io.grpc.ServerCallHandler;\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.rpc.RpcContext;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.Set;\n-\n-import static io.grpc.Metadata.ASCII_STRING_MARSHALLER;\n-import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER;\n-\n-/**\n- * Hand over context information from Dubbo to gRPC.\n- */\n-@Activate(group = {PROVIDER, CONSUMER})\n-public class RpcContextInterceptor implements ClientInterceptor, ServerInterceptor {\n-\n-    private static final String DUBBO = \"D-\";\n-\n-    @Override\n-    public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(MethodDescriptor<ReqT, RespT> method, CallOptions callOptions, Channel next) {\n-        RpcContext rpcContext = RpcContext.getContext();\n-        Map<String, Object> attachments = new HashMap<>(rpcContext.getObjectAttachments());\n-\n-        return new ForwardingClientCall.SimpleForwardingClientCall<ReqT, RespT>(next.newCall(method, callOptions)) {\n-            @Override\n-            public void start(Listener<RespT> responseListener, Metadata headers) {\n-                if (!attachments.isEmpty()) {\n-                    for (Map.Entry<String, Object> entry : attachments.entrySet()) {\n-                        // only used for string\n-                        if (entry.getValue() instanceof String) {\n-                            headers.put(Metadata.Key.of(DUBBO + entry.getKey(), ASCII_STRING_MARSHALLER), ((String) entry.getValue()));\n-                        }\n-                    }\n-                }\n-                super.start(responseListener, headers);\n-            }\n-        };\n-    }\n-\n-    @Override\n-    public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> call, Metadata headers, ServerCallHandler<ReqT, RespT> next) {\n-        Set<String> keys = headers.keys();\n-        Map<String, Object> attachments = new HashMap<>();\n-        // filter out all dubbo attachments and save in map\n-        if (keys != null) {\n-            keys.stream().filter(k -> k.toUpperCase().startsWith(DUBBO)).forEach(k ->\n-                    attachments.put(k.substring(DUBBO.length()), headers.get(Metadata.Key.of(k, Metadata.ASCII_STRING_MARSHALLER)))\n-            );\n-        }\n-\n-        return new ForwardingServerCallListener.SimpleForwardingServerCallListener<ReqT>(next.startCall(call, headers)) {\n-            @Override\n-            public void onHalfClose() {\n-                // the client completed all message sending and server will call the biz method if client is not the streaming\n-                if (call.getMethodDescriptor().getType().clientSendsOneMessage()) {\n-                    RpcContext.getContext().setObjectAttachments(attachments);\n-                }\n-                super.onHalfClose();\n-            }\n-\n-            @Override\n-            public void onMessage(ReqT message) {\n-                //server receive the request from client and call the biz method if client is streaming\n-                if (!call.getMethodDescriptor().getType().clientSendsOneMessage()) {\n-                    RpcContext.getContext().setObjectAttachments(attachments);\n-                }\n-                super.onMessage(message);\n-            }\n-        };\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc.interceptors;\r\n+\r\n+import io.grpc.CallOptions;\r\n+import io.grpc.Channel;\r\n+import io.grpc.ClientCall;\r\n+import io.grpc.ForwardingClientCall;\r\n+import io.grpc.ForwardingServerCallListener;\r\n+import io.grpc.Metadata;\r\n+import io.grpc.MethodDescriptor;\r\n+import io.grpc.ServerCall;\r\n+import io.grpc.ServerCallHandler;\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+\r\n+import static io.grpc.Metadata.ASCII_STRING_MARSHALLER;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER;\r\n+\r\n+/**\r\n+ * Hand over context information from Dubbo to gRPC.\r\n+ */\r\n+@Activate(group = {PROVIDER, CONSUMER})\r\n+public class RpcContextInterceptor implements ClientInterceptor, ServerInterceptor {\r\n+\r\n+    private static final String DUBBO = \"D-\";\r\n+\r\n+    @Override\r\n+    public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(MethodDescriptor<ReqT, RespT> method, CallOptions callOptions, Channel next) {\r\n+        RpcContext rpcContext = RpcContext.getContext();\r\n+        Map<String, Object> attachments = new HashMap<>(rpcContext.getObjectAttachments());\r\n+\r\n+        return new ForwardingClientCall.SimpleForwardingClientCall<ReqT, RespT>(next.newCall(method, callOptions)) {\r\n+            @Override\r\n+            public void start(Listener<RespT> responseListener, Metadata headers) {\r\n+                if (!attachments.isEmpty()) {\r\n+                    for (Map.Entry<String, Object> entry : attachments.entrySet()) {\r\n+                        // only used for string\r\n+                        if (entry.getValue() instanceof String) {\r\n+                            headers.put(Metadata.Key.of(DUBBO + entry.getKey(), ASCII_STRING_MARSHALLER), ((String) entry.getValue()));\r\n+                        }\r\n+                    }\r\n+                }\r\n+                super.start(responseListener, headers);\r\n+            }\r\n+        };\r\n+    }\r\n+\r\n+    @Override\r\n+    public <ReqT, RespT> ServerCall.Listener<ReqT> interceptCall(ServerCall<ReqT, RespT> call, Metadata headers, ServerCallHandler<ReqT, RespT> next) {\r\n+        Set<String> keys = headers.keys();\r\n+        Map<String, Object> attachments = new HashMap<>();\r\n+        // filter out all dubbo attachments and save in map\r\n+        if (keys != null) {\r\n+            keys.stream().filter(k -> k.toUpperCase().startsWith(DUBBO)).forEach(k ->\r\n+                    attachments.put(k.substring(DUBBO.length()), headers.get(Metadata.Key.of(k, Metadata.ASCII_STRING_MARSHALLER)))\r\n+            );\r\n+        }\r\n+\r\n+        return new ForwardingServerCallListener.SimpleForwardingServerCallListener<ReqT>(next.startCall(call, headers)) {\r\n+            @Override\r\n+            public void onHalfClose() {\r\n+                // the client completed all message sending and server will call the biz method if client is not the streaming\r\n+                if (call.getMethodDescriptor().getType().clientSendsOneMessage()) {\r\n+                    RpcContext.getContext().setObjectAttachments(attachments);\r\n+                }\r\n+                super.onHalfClose();\r\n+            }\r\n+\r\n+            @Override\r\n+            public void onMessage(ReqT message) {\r\n+                //server receive the request from client and call the biz method if client is streaming\r\n+                if (!call.getMethodDescriptor().getType().clientSendsOneMessage()) {\r\n+                    RpcContext.getContext().setObjectAttachments(attachments);\r\n+                }\r\n+                super.onMessage(message);\r\n+            }\r\n+        };\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/interceptors/ServerInterceptor.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/interceptors/ServerInterceptor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,26 +1,26 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc.interceptors;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-/**\n- * Adapt to the standard Dubbo SPI, so that we can leverage the advantages of Dubbo ExtensionLoader.\n- */\n-@SPI\n-public interface ServerInterceptor extends io.grpc.ServerInterceptor {\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc.interceptors;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+/**\r\n+ * Adapt to the standard Dubbo SPI, so that we can leverage the advantages of Dubbo ExtensionLoader.\r\n+ */\r\n+@SPI\r\n+public interface ServerInterceptor extends io.grpc.ServerInterceptor {\r\n+}\r\n"}, {"source1": "org/apache/dubbo/rpc/protocol/grpc/interceptors/ServerTransportFilter.java", "source2": "org/apache/dubbo/rpc/protocol/grpc/interceptors/ServerTransportFilter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,27 +1,27 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.rpc.protocol.grpc.interceptors;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-/**\n- * Adapt to the standard Dubbo SPI, so that we can leverage the advantages of Dubbo ExtensionLoader.\n- */\n-@SPI\n-public interface ServerTransportFilter {\n-    io.grpc.ServerTransportFilter grpcTransportFilter();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.rpc.protocol.grpc.interceptors;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+/**\r\n+ * Adapt to the standard Dubbo SPI, so that we can leverage the advantages of Dubbo ExtensionLoader.\r\n+ */\r\n+@SPI\r\n+public interface ServerTransportFilter {\r\n+    io.grpc.ServerTransportFilter grpcTransportFilter();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/AddressListener.java", "source2": "org/apache/dubbo/registry/AddressListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,37 +1,37 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.rpc.cluster.Directory;\n-\n-import java.util.List;\n-\n-@SPI\n-public interface AddressListener {\n-\n-    /**\n-     * processing when receiving the address list\n-     *\n-     * @param addresses            provider address list\n-     * @param consumerUrl\n-     * @param registryDirectory\n-     */\n-    List<URL> notify(List<URL> addresses, URL consumerUrl, Directory registryDirectory);\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.rpc.cluster.Directory;\r\n+\r\n+import java.util.List;\r\n+\r\n+@SPI\r\n+public interface AddressListener {\r\n+\r\n+    /**\r\n+     * processing when receiving the address list\r\n+     *\r\n+     * @param addresses            provider address list\r\n+     * @param consumerUrl\r\n+     * @param registryDirectory\r\n+     */\r\n+    List<URL> notify(List<URL> addresses, URL consumerUrl, Directory registryDirectory);\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/registry/Constants.java", "source2": "org/apache/dubbo/registry/Constants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,96 +1,96 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.registry;\n-\n-public interface Constants {\n-    String REGISTER_IP_KEY = \"register.ip\";\n-\n-    String REGISTER_KEY = \"register\";\n-\n-    String SUBSCRIBE_KEY = \"subscribe\";\n-\n-    String DEFAULT_REGISTRY = \"dubbo\";\n-\n-    String REGISTER = \"register\";\n-\n-    String UNREGISTER = \"unregister\";\n-\n-    String SUBSCRIBE = \"subscribe\";\n-\n-    String UNSUBSCRIBE = \"unsubscribe\";\n-\n-    String CONFIGURATORS_SUFFIX = \".configurators\";\n-\n-    String ADMIN_PROTOCOL = \"admin\";\n-\n-    String PROVIDER_PROTOCOL = \"provider\";\n-\n-    String CONSUMER_PROTOCOL = \"consumer\";\n-\n-    String SCRIPT_PROTOCOL = \"script\";\n-\n-    String CONDITION_PROTOCOL = \"condition\";\n-    String TRACE_PROTOCOL = \"trace\";\n-    /**\n-     * simple the registry for provider.\n-     *\n-     * @since 2.7.0\n-     */\n-    String SIMPLIFIED_KEY = \"simplified\";\n-\n-    /**\n-     * To decide whether register center saves file synchronously, the default value is asynchronously\n-     */\n-    String REGISTRY_FILESAVE_SYNC_KEY = \"save.file\";\n-\n-    /**\n-     * Whether to cache locally, default is true\n-     */\n-    String REGISTRY__LOCAL_FILE_CACHE_ENABLED = \"file.cache\";\n-\n-    /**\n-     * Reconnection period in milliseconds for register center\n-     */\n-    String REGISTRY_RECONNECT_PERIOD_KEY = \"reconnect.period\";\n-\n-    int DEFAULT_SESSION_TIMEOUT = 60 * 1000;\n-\n-    /**\n-     * Default value for the times of retry: 3\n-     */\n-    int DEFAULT_REGISTRY_RETRY_TIMES = 3;\n-\n-    int DEFAULT_REGISTRY_RECONNECT_PERIOD = 3 * 1000;\n-\n-    /**\n-     * Default value for the period of retry interval in milliseconds: 5000\n-     */\n-    int DEFAULT_REGISTRY_RETRY_PERIOD = 5 * 1000;\n-\n-    /**\n-     * Most retry times\n-     */\n-    String REGISTRY_RETRY_TIMES_KEY = \"retry.times\";\n-\n-    /**\n-     * Period of registry center's retry interval\n-     */\n-    String REGISTRY_RETRY_PERIOD_KEY = \"retry.period\";\n-\n-    String SESSION_TIMEOUT_KEY = \"session\";\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.registry;\r\n+\r\n+public interface Constants {\r\n+    String REGISTER_IP_KEY = \"register.ip\";\r\n+\r\n+    String REGISTER_KEY = \"register\";\r\n+\r\n+    String SUBSCRIBE_KEY = \"subscribe\";\r\n+\r\n+    String DEFAULT_REGISTRY = \"dubbo\";\r\n+\r\n+    String REGISTER = \"register\";\r\n+\r\n+    String UNREGISTER = \"unregister\";\r\n+\r\n+    String SUBSCRIBE = \"subscribe\";\r\n+\r\n+    String UNSUBSCRIBE = \"unsubscribe\";\r\n+\r\n+    String CONFIGURATORS_SUFFIX = \".configurators\";\r\n+\r\n+    String ADMIN_PROTOCOL = \"admin\";\r\n+\r\n+    String PROVIDER_PROTOCOL = \"provider\";\r\n+\r\n+    String CONSUMER_PROTOCOL = \"consumer\";\r\n+\r\n+    String SCRIPT_PROTOCOL = \"script\";\r\n+\r\n+    String CONDITION_PROTOCOL = \"condition\";\r\n+    String TRACE_PROTOCOL = \"trace\";\r\n+    /**\r\n+     * simple the registry for provider.\r\n+     *\r\n+     * @since 2.7.0\r\n+     */\r\n+    String SIMPLIFIED_KEY = \"simplified\";\r\n+\r\n+    /**\r\n+     * To decide whether register center saves file synchronously, the default value is asynchronously\r\n+     */\r\n+    String REGISTRY_FILESAVE_SYNC_KEY = \"save.file\";\r\n+\r\n+    /**\r\n+     * Whether to cache locally, default is true\r\n+     */\r\n+    String REGISTRY__LOCAL_FILE_CACHE_ENABLED = \"file.cache\";\r\n+\r\n+    /**\r\n+     * Reconnection period in milliseconds for register center\r\n+     */\r\n+    String REGISTRY_RECONNECT_PERIOD_KEY = \"reconnect.period\";\r\n+\r\n+    int DEFAULT_SESSION_TIMEOUT = 60 * 1000;\r\n+\r\n+    /**\r\n+     * Default value for the times of retry: 3\r\n+     */\r\n+    int DEFAULT_REGISTRY_RETRY_TIMES = 3;\r\n+\r\n+    int DEFAULT_REGISTRY_RECONNECT_PERIOD = 3 * 1000;\r\n+\r\n+    /**\r\n+     * Default value for the period of retry interval in milliseconds: 5000\r\n+     */\r\n+    int DEFAULT_REGISTRY_RETRY_PERIOD = 5 * 1000;\r\n+\r\n+    /**\r\n+     * Most retry times\r\n+     */\r\n+    String REGISTRY_RETRY_TIMES_KEY = \"retry.times\";\r\n+\r\n+    /**\r\n+     * Period of registry center's retry interval\r\n+     */\r\n+    String REGISTRY_RETRY_PERIOD_KEY = \"retry.period\";\r\n+\r\n+    String SESSION_TIMEOUT_KEY = \"session\";\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/ListenerRegistryWrapper.java", "source2": "org/apache/dubbo/registry/ListenerRegistryWrapper.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,158 +1,158 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.registry;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-\n-import java.util.List;\n-\n-public class ListenerRegistryWrapper implements Registry {\n-    private static final Logger logger = LoggerFactory.getLogger(ListenerRegistryWrapper.class);\n-\n-    private final Registry registry;\n-    private final List<RegistryServiceListener> listeners;\n-\n-\n-    public ListenerRegistryWrapper(Registry registry, List<RegistryServiceListener> listeners) {\n-        this.registry = registry;\n-        this.listeners = listeners;\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return registry.getUrl();\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        return registry.isAvailable();\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        registry.destroy();\n-    }\n-\n-    @Override\n-    public void register(URL url) {\n-        try {\n-            registry.register(url);\n-        } finally {\n-            if (CollectionUtils.isNotEmpty(listeners)) {\n-                RuntimeException exception = null;\n-                for (RegistryServiceListener listener : listeners) {\n-                    if (listener != null) {\n-                        try {\n-                            listener.onRegister(url);\n-                        } catch (RuntimeException t) {\n-                            logger.error(t.getMessage(), t);\n-                            exception = t;\n-                        }\n-                    }\n-                }\n-                if (exception != null) {\n-                    throw exception;\n-                }\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public void unregister(URL url) {\n-        try {\n-            registry.unregister(url);\n-        } finally {\n-            if (CollectionUtils.isNotEmpty(listeners)) {\n-                RuntimeException exception = null;\n-                for (RegistryServiceListener listener : listeners) {\n-                    if (listener != null) {\n-                        try {\n-                            listener.onUnregister(url);\n-                        } catch (RuntimeException t) {\n-                            logger.error(t.getMessage(), t);\n-                            exception = t;\n-                        }\n-                    }\n-                }\n-                if (exception != null) {\n-                    throw exception;\n-                }\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public void subscribe(URL url, NotifyListener listener) {\n-        try {\n-            registry.subscribe(url, listener);\n-        } finally {\n-            if (CollectionUtils.isNotEmpty(listeners)) {\n-                RuntimeException exception = null;\n-                for (RegistryServiceListener registryListener : listeners) {\n-                    if (registryListener != null) {\n-                        try {\n-                            registryListener.onSubscribe(url);\n-                        } catch (RuntimeException t) {\n-                            logger.error(t.getMessage(), t);\n-                            exception = t;\n-                        }\n-                    }\n-                }\n-                if (exception != null) {\n-                    throw exception;\n-                }\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public void unsubscribe(URL url, NotifyListener listener) {\n-        try {\n-            registry.unsubscribe(url, listener);\n-        } finally {\n-            if (CollectionUtils.isNotEmpty(listeners)) {\n-                RuntimeException exception = null;\n-                for (RegistryServiceListener registryListener : listeners) {\n-                    if (registryListener != null) {\n-                        try {\n-                            registryListener.onUnsubscribe(url);\n-                        } catch (RuntimeException t) {\n-                            logger.error(t.getMessage(), t);\n-                            exception = t;\n-                        }\n-                    }\n-                }\n-                if (exception != null) {\n-                    throw exception;\n-                }\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public List<URL> lookup(URL url) {\n-        return registry.lookup(url);\n-    }\n-\n-    public Registry getRegistry() {\n-        return registry;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.registry;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+\r\n+import java.util.List;\r\n+\r\n+public class ListenerRegistryWrapper implements Registry {\r\n+    private static final Logger logger = LoggerFactory.getLogger(ListenerRegistryWrapper.class);\r\n+\r\n+    private final Registry registry;\r\n+    private final List<RegistryServiceListener> listeners;\r\n+\r\n+\r\n+    public ListenerRegistryWrapper(Registry registry, List<RegistryServiceListener> listeners) {\r\n+        this.registry = registry;\r\n+        this.listeners = listeners;\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return registry.getUrl();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        return registry.isAvailable();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        registry.destroy();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void register(URL url) {\r\n+        try {\r\n+            registry.register(url);\r\n+        } finally {\r\n+            if (CollectionUtils.isNotEmpty(listeners)) {\r\n+                RuntimeException exception = null;\r\n+                for (RegistryServiceListener listener : listeners) {\r\n+                    if (listener != null) {\r\n+                        try {\r\n+                            listener.onRegister(url);\r\n+                        } catch (RuntimeException t) {\r\n+                            logger.error(t.getMessage(), t);\r\n+                            exception = t;\r\n+                        }\r\n+                    }\r\n+                }\r\n+                if (exception != null) {\r\n+                    throw exception;\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unregister(URL url) {\r\n+        try {\r\n+            registry.unregister(url);\r\n+        } finally {\r\n+            if (CollectionUtils.isNotEmpty(listeners)) {\r\n+                RuntimeException exception = null;\r\n+                for (RegistryServiceListener listener : listeners) {\r\n+                    if (listener != null) {\r\n+                        try {\r\n+                            listener.onUnregister(url);\r\n+                        } catch (RuntimeException t) {\r\n+                            logger.error(t.getMessage(), t);\r\n+                            exception = t;\r\n+                        }\r\n+                    }\r\n+                }\r\n+                if (exception != null) {\r\n+                    throw exception;\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void subscribe(URL url, NotifyListener listener) {\r\n+        try {\r\n+            registry.subscribe(url, listener);\r\n+        } finally {\r\n+            if (CollectionUtils.isNotEmpty(listeners)) {\r\n+                RuntimeException exception = null;\r\n+                for (RegistryServiceListener registryListener : listeners) {\r\n+                    if (registryListener != null) {\r\n+                        try {\r\n+                            registryListener.onSubscribe(url);\r\n+                        } catch (RuntimeException t) {\r\n+                            logger.error(t.getMessage(), t);\r\n+                            exception = t;\r\n+                        }\r\n+                    }\r\n+                }\r\n+                if (exception != null) {\r\n+                    throw exception;\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unsubscribe(URL url, NotifyListener listener) {\r\n+        try {\r\n+            registry.unsubscribe(url, listener);\r\n+        } finally {\r\n+            if (CollectionUtils.isNotEmpty(listeners)) {\r\n+                RuntimeException exception = null;\r\n+                for (RegistryServiceListener registryListener : listeners) {\r\n+                    if (registryListener != null) {\r\n+                        try {\r\n+                            registryListener.onUnsubscribe(url);\r\n+                        } catch (RuntimeException t) {\r\n+                            logger.error(t.getMessage(), t);\r\n+                            exception = t;\r\n+                        }\r\n+                    }\r\n+                }\r\n+                if (exception != null) {\r\n+                    throw exception;\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<URL> lookup(URL url) {\r\n+        return registry.lookup(url);\r\n+    }\r\n+\r\n+    public Registry getRegistry() {\r\n+        return registry;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/RegistryFactoryWrapper.java", "source2": "org/apache/dubbo/registry/RegistryFactoryWrapper.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,38 +1,38 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.registry;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-\n-import java.util.Collections;\n-\n-public class RegistryFactoryWrapper implements RegistryFactory {\n-    private RegistryFactory registryFactory;\n-\n-    public RegistryFactoryWrapper(RegistryFactory registryFactory) {\n-        this.registryFactory = registryFactory;\n-    }\n-\n-    @Override\n-    public Registry getRegistry(URL url) {\n-        return new ListenerRegistryWrapper(registryFactory.getRegistry(url),\n-                Collections.unmodifiableList(ExtensionLoader.getExtensionLoader(RegistryServiceListener.class)\n-                        .getActivateExtension(url, \"registry.listeners\")));\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.registry;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+\r\n+import java.util.Collections;\r\n+\r\n+public class RegistryFactoryWrapper implements RegistryFactory {\r\n+    private RegistryFactory registryFactory;\r\n+\r\n+    public RegistryFactoryWrapper(RegistryFactory registryFactory) {\r\n+        this.registryFactory = registryFactory;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Registry getRegistry(URL url) {\r\n+        return new ListenerRegistryWrapper(registryFactory.getRegistry(url),\r\n+                Collections.unmodifiableList(ExtensionLoader.getExtensionLoader(RegistryServiceListener.class)\r\n+                        .getActivateExtension(url, \"registry.listeners\")));\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/RegistryServiceListener.java", "source2": "org/apache/dubbo/registry/RegistryServiceListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,41 +1,41 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.registry;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-@SPI\n-public interface RegistryServiceListener {\n-    default void onRegister(URL url) {\n-\n-    }\n-\n-\n-    default void onUnregister(URL url) {\n-\n-    }\n-\n-    default void onSubscribe(URL url) {\n-\n-    }\n-\n-    default void onUnsubscribe(URL url) {\n-\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.registry;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+@SPI\r\n+public interface RegistryServiceListener {\r\n+    default void onRegister(URL url) {\r\n+\r\n+    }\r\n+\r\n+\r\n+    default void onUnregister(URL url) {\r\n+\r\n+    }\r\n+\r\n+    default void onSubscribe(URL url) {\r\n+\r\n+    }\r\n+\r\n+    default void onUnsubscribe(URL url) {\r\n+\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/AbstractServiceDiscovery.java", "source2": "org/apache/dubbo/registry/client/AbstractServiceDiscovery.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,56 +1,56 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client;\n-\n-import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.isInstanceUpdated;\n-import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.resetInstanceUpdateKey;\n-\n-public abstract class AbstractServiceDiscovery implements ServiceDiscovery {\n-\n-    protected ServiceInstance serviceInstance;\n-\n-    @Override\n-    public ServiceInstance getLocalInstance() {\n-        return serviceInstance;\n-    }\n-\n-    @Override\n-    public final void register(ServiceInstance serviceInstance) throws RuntimeException {\n-        this.serviceInstance = serviceInstance;\n-        doRegister(serviceInstance);\n-    }\n-\n-    /**\n-     * It should be implement in kinds of service discovers.\n-     */\n-    public abstract void doRegister(ServiceInstance serviceInstance);\n-\n-    @Override\n-    public final void update(ServiceInstance serviceInstance) throws RuntimeException {\n-        if (!isInstanceUpdated(serviceInstance)) {\n-            return;\n-        }\n-        this.serviceInstance = serviceInstance;\n-        doUpdate(serviceInstance);\n-        resetInstanceUpdateKey(serviceInstance);\n-    }\n-\n-    /**\n-     * It should be implement in kinds of service discovers.\n-     */\n-    public abstract void doUpdate(ServiceInstance serviceInstance);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client;\r\n+\r\n+import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.isInstanceUpdated;\r\n+import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.resetInstanceUpdateKey;\r\n+\r\n+public abstract class AbstractServiceDiscovery implements ServiceDiscovery {\r\n+\r\n+    protected ServiceInstance serviceInstance;\r\n+\r\n+    @Override\r\n+    public ServiceInstance getLocalInstance() {\r\n+        return serviceInstance;\r\n+    }\r\n+\r\n+    @Override\r\n+    public final void register(ServiceInstance serviceInstance) throws RuntimeException {\r\n+        this.serviceInstance = serviceInstance;\r\n+        doRegister(serviceInstance);\r\n+    }\r\n+\r\n+    /**\r\n+     * It should be implement in kinds of service discovers.\r\n+     */\r\n+    public abstract void doRegister(ServiceInstance serviceInstance);\r\n+\r\n+    @Override\r\n+    public final void update(ServiceInstance serviceInstance) throws RuntimeException {\r\n+        if (!isInstanceUpdated(serviceInstance)) {\r\n+            return;\r\n+        }\r\n+        this.serviceInstance = serviceInstance;\r\n+        doUpdate(serviceInstance);\r\n+        resetInstanceUpdateKey(serviceInstance);\r\n+    }\r\n+\r\n+    /**\r\n+     * It should be implement in kinds of service discovers.\r\n+     */\r\n+    public abstract void doUpdate(ServiceInstance serviceInstance);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/AbstractServiceDiscoveryFactory.java", "source2": "org/apache/dubbo/registry/client/AbstractServiceDiscoveryFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,42 +1,42 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client;\n-\n-import org.apache.dubbo.common.URL;\n-\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-/**\n- * Abstract {@link ServiceDiscoveryFactory} implementation with cache, the subclass\n- * should implement {@link #createDiscovery(URL)} method to create an instance of {@link ServiceDiscovery}\n- *\n- * @see ServiceDiscoveryFactory\n- * @since 2.7.5\n- */\n-public abstract class AbstractServiceDiscoveryFactory implements ServiceDiscoveryFactory {\n-\n-    private final ConcurrentMap<String, ServiceDiscovery> discoveries = new ConcurrentHashMap<>();\n-\n-    @Override\n-    public ServiceDiscovery getServiceDiscovery(URL registryURL) {\n-        String key = registryURL.toServiceStringWithoutResolving();\n-        return discoveries.computeIfAbsent(key, k -> createDiscovery(registryURL));\n-    }\n-\n-    protected abstract ServiceDiscovery createDiscovery(URL registryURL);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+/**\r\n+ * Abstract {@link ServiceDiscoveryFactory} implementation with cache, the subclass\r\n+ * should implement {@link #createDiscovery(URL)} method to create an instance of {@link ServiceDiscovery}\r\n+ *\r\n+ * @see ServiceDiscoveryFactory\r\n+ * @since 2.7.5\r\n+ */\r\n+public abstract class AbstractServiceDiscoveryFactory implements ServiceDiscoveryFactory {\r\n+\r\n+    private final ConcurrentMap<String, ServiceDiscovery> discoveries = new ConcurrentHashMap<>();\r\n+\r\n+    @Override\r\n+    public ServiceDiscovery getServiceDiscovery(URL registryURL) {\r\n+        String key = registryURL.toServiceStringWithoutResolving();\r\n+        return discoveries.computeIfAbsent(key, k -> createDiscovery(registryURL));\r\n+    }\r\n+\r\n+    protected abstract ServiceDiscovery createDiscovery(URL registryURL);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/DefaultRegistryClusterIdentifier.java", "source2": "org/apache/dubbo/registry/client/DefaultRegistryClusterIdentifier.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,34 +1,34 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client;\n-\n-import org.apache.dubbo.common.URL;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_CLUSTER_KEY;\n-\n-public class DefaultRegistryClusterIdentifier implements RegistryClusterIdentifier {\n-    @Override\n-    public String providerKey(URL url) {\n-        return url.getParameter(REGISTRY_CLUSTER_KEY, DEFAULT_KEY);\n-    }\n-\n-    @Override\n-    public String consumerKey(URL url) {\n-        return url.getParameter(REGISTRY_CLUSTER_KEY);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_CLUSTER_KEY;\r\n+\r\n+public class DefaultRegistryClusterIdentifier implements RegistryClusterIdentifier {\r\n+    @Override\r\n+    public String providerKey(URL url) {\r\n+        return url.getParameter(REGISTRY_CLUSTER_KEY, DEFAULT_KEY);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String consumerKey(URL url) {\r\n+        return url.getParameter(REGISTRY_CLUSTER_KEY);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/DefaultServiceDiscoveryFactory.java", "source2": "org/apache/dubbo/registry/client/DefaultServiceDiscoveryFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,49 +1,49 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\n-\n-/**\n- * The default {@link SPI} implementation of {@link ServiceDiscoveryFactory} to {@link #getServiceDiscovery(URL) get the\n- * instance of ServiceDiscovery} via the {@link URL#getProtocol() protocol} from the {@link URL} that will connect\n- * the infrastructure of Service registration and discovery. The {@link URL#getProtocol() protocol} will be used as the\n- * extension name by which the {@link ServiceDiscovery} instance is loaded.\n- *\n- * @see AbstractServiceDiscoveryFactory\n- * @see EventPublishingServiceDiscovery\n- * @since 2.7.5\n- */\n-public class DefaultServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\n-\n-    /**\n-     * Create the {@link ServiceDiscovery} by {@link URL#getProtocol() the protocol} from {@link URL connection URL}\n-     *\n-     * @param registryURL\n-     * @return\n-     */\n-    @Override\n-    protected ServiceDiscovery createDiscovery(URL registryURL) {\n-        String protocol = registryURL.getProtocol();\n-        ExtensionLoader<ServiceDiscovery> loader = getExtensionLoader(ServiceDiscovery.class);\n-        return loader.getExtension(protocol);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\r\n+\r\n+/**\r\n+ * The default {@link SPI} implementation of {@link ServiceDiscoveryFactory} to {@link #getServiceDiscovery(URL) get the\r\n+ * instance of ServiceDiscovery} via the {@link URL#getProtocol() protocol} from the {@link URL} that will connect\r\n+ * the infrastructure of Service registration and discovery. The {@link URL#getProtocol() protocol} will be used as the\r\n+ * extension name by which the {@link ServiceDiscovery} instance is loaded.\r\n+ *\r\n+ * @see AbstractServiceDiscoveryFactory\r\n+ * @see EventPublishingServiceDiscovery\r\n+ * @since 2.7.5\r\n+ */\r\n+public class DefaultServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\r\n+\r\n+    /**\r\n+     * Create the {@link ServiceDiscovery} by {@link URL#getProtocol() the protocol} from {@link URL connection URL}\r\n+     *\r\n+     * @param registryURL\r\n+     * @return\r\n+     */\r\n+    @Override\r\n+    protected ServiceDiscovery createDiscovery(URL registryURL) {\r\n+        String protocol = registryURL.getProtocol();\r\n+        ExtensionLoader<ServiceDiscovery> loader = getExtensionLoader(ServiceDiscovery.class);\r\n+        return loader.getExtension(protocol);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/DefaultServiceInstance.java", "source2": "org/apache/dubbo/registry/client/DefaultServiceInstance.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,221 +1,221 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client;\n-\n-import org.apache.dubbo.metadata.MetadataInfo;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.Objects;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.REVISION_KEY;\n-\n-/**\n- * The default implementation of {@link ServiceInstance}.\n- *\n- * @since 2.7.5\n- */\n-public class DefaultServiceInstance implements ServiceInstance {\n-\n-    private static final long serialVersionUID = 1149677083747278100L;\n-\n-    private String id;\n-\n-    private String serviceName;\n-\n-    private String host;\n-\n-    private Integer port;\n-\n-    private boolean enabled;\n-\n-    private boolean healthy;\n-\n-    private Map<String, String> metadata = new HashMap<>();\n-\n-    private transient String address;\n-    private transient MetadataInfo serviceMetadata;\n-    // used at runtime\n-    private transient Map<String, String> extendParams = new HashMap<>();\n-\n-    public DefaultServiceInstance() {\n-    }\n-\n-    public DefaultServiceInstance(String id, String serviceName, String host, Integer port) {\n-        if (port != null && port.intValue() < 1) {\n-            throw new IllegalArgumentException(\"The port must be greater than zero!\");\n-        }\n-        this.id = id;\n-        this.serviceName = serviceName;\n-        this.host = host;\n-        this.port = port;\n-        this.enabled = true;\n-        this.healthy = true;\n-    }\n-\n-    public DefaultServiceInstance(String serviceName, String host, Integer port) {\n-        this(host + \":\" + port, serviceName, host, port);\n-    }\n-\n-    public void setId(String id) {\n-        this.id = id;\n-    }\n-\n-    public void setServiceName(String serviceName) {\n-        this.serviceName = serviceName;\n-    }\n-\n-    public void setHost(String host) {\n-        this.host = host;\n-    }\n-\n-    @Override\n-    public String getId() {\n-        return id;\n-    }\n-\n-    @Override\n-    public String getServiceName() {\n-        return serviceName;\n-    }\n-\n-    @Override\n-    public String getHost() {\n-        return host;\n-    }\n-\n-    public void setPort(Integer port) {\n-        this.port = port;\n-    }\n-\n-    @Override\n-    public Integer getPort() {\n-        return port;\n-    }\n-\n-    @Override\n-    public String getAddress() {\n-        if (address == null) {\n-            address = getAddress(host, port);\n-        }\n-        return address;\n-    }\n-\n-    private static String getAddress(String host, int port) {\n-        return port <= 0 ? host : host + ':' + port;\n-    }\n-\n-    @Override\n-    public boolean isEnabled() {\n-        return enabled;\n-    }\n-\n-    public void setEnabled(boolean enabled) {\n-        this.enabled = enabled;\n-    }\n-\n-    @Override\n-    public boolean isHealthy() {\n-        return healthy;\n-    }\n-\n-    public void setHealthy(boolean healthy) {\n-        this.healthy = healthy;\n-    }\n-\n-    @Override\n-    public Map<String, String> getMetadata() {\n-        return metadata;\n-    }\n-\n-    @Override\n-    public Map<String, String> getExtendParams() {\n-        return extendParams;\n-    }\n-\n-    @Override\n-    public Map<String, String> getAllParams() {\n-        Map<String, String> allParams = new HashMap<>((int) ((metadata.size() + extendParams.size()) / 0.75f + 1));\n-        allParams.putAll(metadata);\n-        allParams.putAll(extendParams);\n-        return allParams;\n-    }\n-\n-    public void setMetadata(Map<String, String> metadata) {\n-        this.metadata = metadata;\n-    }\n-\n-    public MetadataInfo getServiceMetadata() {\n-        return serviceMetadata;\n-    }\n-\n-    public void setServiceMetadata(MetadataInfo serviceMetadata) {\n-        this.serviceMetadata = serviceMetadata;\n-    }\n-\n-    @Override\n-    public InstanceAddressURL toURL() {\n-        return new InstanceAddressURL(this, serviceMetadata);\n-    }\n-\n-    @Override\n-    public boolean equals(Object o) {\n-        if (this == o) {\n-            return true;\n-        }\n-        if (!(o instanceof DefaultServiceInstance)) {\n-            return false;\n-        }\n-        DefaultServiceInstance that = (DefaultServiceInstance) o;\n-        boolean equals = Objects.equals(getServiceName(), that.getServiceName()) &&\n-                Objects.equals(getHost(), that.getHost()) &&\n-                Objects.equals(getPort(), that.getPort());\n-        for (Map.Entry<String, String> entry : this.getMetadata().entrySet()) {\n-            if (entry.getKey().equals(REVISION_KEY)) {\n-                continue;\n-            }\n-            equals = equals && entry.getValue().equals(that.getMetadata().get(entry.getKey()));\n-        }\n-\n-        return equals;\n-    }\n-\n-    @Override\n-    public int hashCode() {\n-        int result = Objects.hash(getServiceName(), getHost(), getPort());\n-        for (Map.Entry<String, String> entry : this.getMetadata().entrySet()) {\n-            if (entry.getKey().equals(REVISION_KEY)) {\n-                continue;\n-            }\n-            result = 31 * result + (entry.getValue() == null ? 0 : entry.getValue().hashCode());\n-        }\n-        return result;\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"DefaultServiceInstance{\" +\n-                \"id='\" + id + '\\'' +\n-                \", serviceName='\" + serviceName + '\\'' +\n-                \", host='\" + host + '\\'' +\n-                \", port=\" + port +\n-                \", enabled=\" + enabled +\n-                \", healthy=\" + healthy +\n-                \", metadata=\" + metadata +\n-                '}';\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client;\r\n+\r\n+import org.apache.dubbo.metadata.MetadataInfo;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.Objects;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REVISION_KEY;\r\n+\r\n+/**\r\n+ * The default implementation of {@link ServiceInstance}.\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class DefaultServiceInstance implements ServiceInstance {\r\n+\r\n+    private static final long serialVersionUID = 1149677083747278100L;\r\n+\r\n+    private String id;\r\n+\r\n+    private String serviceName;\r\n+\r\n+    private String host;\r\n+\r\n+    private Integer port;\r\n+\r\n+    private boolean enabled;\r\n+\r\n+    private boolean healthy;\r\n+\r\n+    private Map<String, String> metadata = new HashMap<>();\r\n+\r\n+    private transient String address;\r\n+    private transient MetadataInfo serviceMetadata;\r\n+    // used at runtime\r\n+    private transient Map<String, String> extendParams = new HashMap<>();\r\n+\r\n+    public DefaultServiceInstance() {\r\n+    }\r\n+\r\n+    public DefaultServiceInstance(String id, String serviceName, String host, Integer port) {\r\n+        if (port != null && port.intValue() < 1) {\r\n+            throw new IllegalArgumentException(\"The port must be greater than zero!\");\r\n+        }\r\n+        this.id = id;\r\n+        this.serviceName = serviceName;\r\n+        this.host = host;\r\n+        this.port = port;\r\n+        this.enabled = true;\r\n+        this.healthy = true;\r\n+    }\r\n+\r\n+    public DefaultServiceInstance(String serviceName, String host, Integer port) {\r\n+        this(host + \":\" + port, serviceName, host, port);\r\n+    }\r\n+\r\n+    public void setId(String id) {\r\n+        this.id = id;\r\n+    }\r\n+\r\n+    public void setServiceName(String serviceName) {\r\n+        this.serviceName = serviceName;\r\n+    }\r\n+\r\n+    public void setHost(String host) {\r\n+        this.host = host;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getId() {\r\n+        return id;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getServiceName() {\r\n+        return serviceName;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getHost() {\r\n+        return host;\r\n+    }\r\n+\r\n+    public void setPort(Integer port) {\r\n+        this.port = port;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Integer getPort() {\r\n+        return port;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getAddress() {\r\n+        if (address == null) {\r\n+            address = getAddress(host, port);\r\n+        }\r\n+        return address;\r\n+    }\r\n+\r\n+    private static String getAddress(String host, int port) {\r\n+        return port <= 0 ? host : host + ':' + port;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isEnabled() {\r\n+        return enabled;\r\n+    }\r\n+\r\n+    public void setEnabled(boolean enabled) {\r\n+        this.enabled = enabled;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isHealthy() {\r\n+        return healthy;\r\n+    }\r\n+\r\n+    public void setHealthy(boolean healthy) {\r\n+        this.healthy = healthy;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Map<String, String> getMetadata() {\r\n+        return metadata;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Map<String, String> getExtendParams() {\r\n+        return extendParams;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Map<String, String> getAllParams() {\r\n+        Map<String, String> allParams = new HashMap<>((int) ((metadata.size() + extendParams.size()) / 0.75f + 1));\r\n+        allParams.putAll(metadata);\r\n+        allParams.putAll(extendParams);\r\n+        return allParams;\r\n+    }\r\n+\r\n+    public void setMetadata(Map<String, String> metadata) {\r\n+        this.metadata = metadata;\r\n+    }\r\n+\r\n+    public MetadataInfo getServiceMetadata() {\r\n+        return serviceMetadata;\r\n+    }\r\n+\r\n+    public void setServiceMetadata(MetadataInfo serviceMetadata) {\r\n+        this.serviceMetadata = serviceMetadata;\r\n+    }\r\n+\r\n+    @Override\r\n+    public InstanceAddressURL toURL() {\r\n+        return new InstanceAddressURL(this, serviceMetadata);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean equals(Object o) {\r\n+        if (this == o) {\r\n+            return true;\r\n+        }\r\n+        if (!(o instanceof DefaultServiceInstance)) {\r\n+            return false;\r\n+        }\r\n+        DefaultServiceInstance that = (DefaultServiceInstance) o;\r\n+        boolean equals = Objects.equals(getServiceName(), that.getServiceName()) &&\r\n+                Objects.equals(getHost(), that.getHost()) &&\r\n+                Objects.equals(getPort(), that.getPort());\r\n+        for (Map.Entry<String, String> entry : this.getMetadata().entrySet()) {\r\n+            if (entry.getKey().equals(REVISION_KEY)) {\r\n+                continue;\r\n+            }\r\n+            equals = equals && entry.getValue().equals(that.getMetadata().get(entry.getKey()));\r\n+        }\r\n+\r\n+        return equals;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int hashCode() {\r\n+        int result = Objects.hash(getServiceName(), getHost(), getPort());\r\n+        for (Map.Entry<String, String> entry : this.getMetadata().entrySet()) {\r\n+            if (entry.getKey().equals(REVISION_KEY)) {\r\n+                continue;\r\n+            }\r\n+            result = 31 * result + (entry.getValue() == null ? 0 : entry.getValue().hashCode());\r\n+        }\r\n+        return result;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"DefaultServiceInstance{\" +\r\n+                \"id='\" + id + '\\'' +\r\n+                \", serviceName='\" + serviceName + '\\'' +\r\n+                \", host='\" + host + '\\'' +\r\n+                \", port=\" + port +\r\n+                \", enabled=\" + enabled +\r\n+                \", healthy=\" + healthy +\r\n+                \", metadata=\" + metadata +\r\n+                '}';\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/EventPublishingServiceDiscovery.java", "source2": "org/apache/dubbo/registry/client/EventPublishingServiceDiscovery.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,315 +1,315 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.function.ThrowableAction;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.Page;\n-import org.apache.dubbo.event.Event;\n-import org.apache.dubbo.event.EventDispatcher;\n-import org.apache.dubbo.registry.client.event.ServiceDiscoveryDestroyedEvent;\n-import org.apache.dubbo.registry.client.event.ServiceDiscoveryDestroyingEvent;\n-import org.apache.dubbo.registry.client.event.ServiceDiscoveryExceptionEvent;\n-import org.apache.dubbo.registry.client.event.ServiceDiscoveryInitializedEvent;\n-import org.apache.dubbo.registry.client.event.ServiceDiscoveryInitializingEvent;\n-import org.apache.dubbo.registry.client.event.ServiceInstancePreRegisteredEvent;\n-import org.apache.dubbo.registry.client.event.ServiceInstancePreUnregisteredEvent;\n-import org.apache.dubbo.registry.client.event.ServiceInstanceRegisteredEvent;\n-import org.apache.dubbo.registry.client.event.ServiceInstanceUnregisteredEvent;\n-import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\n-\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Optional;\n-import java.util.Set;\n-import java.util.concurrent.atomic.AtomicBoolean;\n-\n-import static java.util.Optional.empty;\n-import static java.util.Optional.of;\n-\n-/**\n- * The decorating implementation of {@link ServiceDiscovery} to published the {@link Event Dubbo event} when some actions are\n- * executing, including:\n- * <ul>\n- * <li>Lifecycle actions:</li>\n- * <table cellpadding=\"0\" cellspacing=\"0\" border=\"1\">\n- * <thead>\n- * <tr>\n- * <th>Action</th>\n- * <th>before</th>\n- * <th>After</th>\n- * </tr>\n- * </thead>\n- * <tbody>\n- * <tr>\n- * <td>{@link #INITIALIZE_ACTION start}</td>\n- * <td>{@link ServiceDiscoveryInitializingEvent}</td>\n- * <td>{@link ServiceDiscoveryInitializedEvent}</td>\n- * </tr>\n- * <tr>\n- * <td>{@link #DESTROY_ACTION stop}</td>\n- * <td>{@link ServiceDiscoveryDestroyingEvent}</td>\n- * <td>{@link ServiceDiscoveryDestroyedEvent}</td>\n- * </tr>\n- * </tbody>\n- * </table>\n- * <li>Registration actions:</li>\n- * <table cellpadding=\"0\" cellspacing=\"0\" border=\"1\">\n- * <thead>\n- * <tr>\n- * <th>Action</th>\n- * <th>before</th>\n- * <th>After</th>\n- * </tr>\n- * </thead>\n- * <tbody>\n- * <tr>\n- * <td>{@link #REGISTER_ACTION register}</td>\n- * <td>{@link ServiceInstancePreRegisteredEvent}</td>\n- * <td>{@link ServiceInstanceRegisteredEvent}</td>\n- * </tr>\n- * <tr>\n- * <td>{@link #UPDATE_ACTION update}</td>\n- * <td>N/A</td>\n- * <td>N/A</td>\n- * </tr>\n- * <tr>\n- * <td>{@link #UNREGISTER_ACTION unregister}</td>\n- * <td>N/A</td>\n- * <td>N/A</td>\n- * </tr>\n- * </tbody>\n- * </table>\n- * </ul>\n- *\n- * @see ServiceDiscovery\n- * @see ServiceDiscoveryInitializingEvent\n- * @see ServiceDiscoveryInitializedEvent\n- * @see ServiceInstancePreRegisteredEvent\n- * @see ServiceInstanceRegisteredEvent\n- * @see ServiceDiscoveryDestroyingEvent\n- * @see ServiceDiscoveryDestroyedEvent\n- * @since 2.7.5\n- */\n-final class EventPublishingServiceDiscovery implements ServiceDiscovery {\n-\n-    /**\n-     * @see ServiceInstancePreRegisteredEvent\n-     * @see ServiceInstanceRegisteredEvent\n-     */\n-    protected static final String REGISTER_ACTION = \"register\";\n-\n-    protected static final String UPDATE_ACTION = \"update\";\n-\n-    protected static final String UNREGISTER_ACTION = \"unregister\";\n-\n-    /**\n-     * @see ServiceDiscoveryInitializingEvent\n-     * @see ServiceDiscoveryInitializedEvent\n-     */\n-    protected static final String INITIALIZE_ACTION = \"initialize\";\n-\n-    /**\n-     * @see ServiceDiscoveryDestroyingEvent\n-     * @see ServiceDiscoveryDestroyedEvent\n-     */\n-    protected static final String DESTROY_ACTION = \"destroy\";\n-\n-    protected final EventDispatcher eventDispatcher = EventDispatcher.getDefaultExtension();\n-\n-    protected final AtomicBoolean initialized = new AtomicBoolean(false);\n-\n-    protected final AtomicBoolean destroyed = new AtomicBoolean(false);\n-\n-    protected final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    private final ServiceDiscovery serviceDiscovery;\n-\n-    protected EventPublishingServiceDiscovery(ServiceDiscovery serviceDiscovery) {\n-        if (serviceDiscovery == null) {\n-            throw new NullPointerException(\"The ServiceDiscovery argument must not be null!\");\n-        }\n-        this.serviceDiscovery = serviceDiscovery;\n-    }\n-\n-    @Override\n-    public final void register(ServiceInstance serviceInstance) throws RuntimeException {\n-\n-        assertDestroyed(REGISTER_ACTION);\n-        assertInitialized(REGISTER_ACTION);\n-\n-        executeWithEvents(\n-                of(new ServiceInstancePreRegisteredEvent(serviceDiscovery, serviceInstance)),\n-                () -> serviceDiscovery.register(serviceInstance),\n-                of(new ServiceInstanceRegisteredEvent(serviceDiscovery, serviceInstance))\n-        );\n-    }\n-\n-    @Override\n-    public final void update(ServiceInstance serviceInstance) throws RuntimeException {\n-\n-        assertDestroyed(UPDATE_ACTION);\n-        assertInitialized(UPDATE_ACTION);\n-\n-        executeWithEvents(\n-                empty(),\n-                () -> serviceDiscovery.update(serviceInstance),\n-                empty()\n-        );\n-    }\n-\n-    @Override\n-    public final void unregister(ServiceInstance serviceInstance) throws RuntimeException {\n-\n-        assertDestroyed(UNREGISTER_ACTION);\n-        assertInitialized(UNREGISTER_ACTION);\n-\n-        executeWithEvents(\n-                of(new ServiceInstancePreUnregisteredEvent(this, serviceInstance)),\n-                () -> serviceDiscovery.unregister(serviceInstance),\n-                of(new ServiceInstanceUnregisteredEvent(this, serviceInstance))\n-        );\n-    }\n-\n-    @Override\n-    public Set<String> getServices() {\n-        return serviceDiscovery.getServices();\n-    }\n-\n-    @Override\n-    public List<ServiceInstance> getInstances(String serviceName) throws NullPointerException {\n-        return serviceDiscovery.getInstances(serviceName);\n-    }\n-\n-    @Override\n-    public Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize) throws NullPointerException, IllegalArgumentException {\n-        return serviceDiscovery.getInstances(serviceName, offset, pageSize);\n-    }\n-\n-    @Override\n-    public Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize, boolean healthyOnly) throws NullPointerException, IllegalArgumentException {\n-        return serviceDiscovery.getInstances(serviceName, offset, pageSize, healthyOnly);\n-    }\n-\n-    @Override\n-    public Map<String, Page<ServiceInstance>> getInstances(Iterable<String> serviceNames, int offset, int requestSize) throws NullPointerException, IllegalArgumentException {\n-        return serviceDiscovery.getInstances(serviceNames, offset, requestSize);\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return serviceDiscovery.toString();\n-    }\n-\n-    @Override\n-    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws NullPointerException, IllegalArgumentException {\n-        serviceDiscovery.addServiceInstancesChangedListener(listener);\n-        eventDispatcher.addEventListener(listener);\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return serviceDiscovery.getUrl();\n-    }\n-\n-    @Override\n-    public ServiceInstance getLocalInstance() {\n-        return serviceDiscovery.getLocalInstance();\n-    }\n-\n-    @Override\n-    public void initialize(URL registryURL) {\n-\n-        assertInitialized(INITIALIZE_ACTION);\n-\n-        if (isInitialized()) {\n-            if (logger.isWarnEnabled()) {\n-                logger.warn(\"It's ignored to start current ServiceDiscovery, because it has been started.\");\n-            }\n-            return;\n-        }\n-\n-        executeWithEvents(\n-                of(new ServiceDiscoveryInitializingEvent(this, serviceDiscovery)),\n-                () -> serviceDiscovery.initialize(registryURL),\n-                of(new ServiceDiscoveryInitializedEvent(this, serviceDiscovery))\n-        );\n-\n-        // doesn't start -> started\n-        initialized.compareAndSet(false, true);\n-    }\n-\n-    @Override\n-    public void destroy() {\n-\n-        assertDestroyed(DESTROY_ACTION);\n-\n-        if (isDestroyed()) {\n-            if (logger.isWarnEnabled()) {\n-                logger.warn(\"It's ignored to stop current ServiceDiscovery, because it has been stopped.\");\n-            }\n-            return;\n-        }\n-\n-        executeWithEvents(\n-                of(new ServiceDiscoveryDestroyingEvent(this, serviceDiscovery)),\n-                serviceDiscovery::destroy,\n-                of(new ServiceDiscoveryDestroyedEvent(this, serviceDiscovery))\n-        );\n-\n-        // doesn't stop -> stopped\n-        destroyed.compareAndSet(false, true);\n-    }\n-\n-    protected final void executeWithEvents(Optional<? extends Event> beforeEvent,\n-                                           ThrowableAction action,\n-                                           Optional<? extends Event> afterEvent) {\n-        beforeEvent.ifPresent(this::dispatchEvent);\n-        try {\n-            action.execute();\n-        } catch (Throwable e) {\n-            dispatchEvent(new ServiceDiscoveryExceptionEvent(this, serviceDiscovery, e));\n-        }\n-        afterEvent.ifPresent(this::dispatchEvent);\n-    }\n-\n-    private void dispatchEvent(Event event) {\n-        eventDispatcher.dispatch(event);\n-    }\n-\n-    public final boolean isInitialized() {\n-        return initialized.get();\n-    }\n-\n-    public final boolean isDestroyed() {\n-        return destroyed.get();\n-    }\n-\n-    protected void assertDestroyed(String action) throws IllegalStateException {\n-        if (!isInitialized()) {\n-            throw new IllegalStateException(\"The action[\" + action + \"] is rejected, because the ServiceDiscovery is not initialized yet.\");\n-        }\n-    }\n-\n-    protected void assertInitialized(String action) throws IllegalStateException {\n-        if (isDestroyed()) {\n-            throw new IllegalStateException(\"The action[\" + action + \"] is rejected, because the ServiceDiscovery is destroyed already.\");\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.function.ThrowableAction;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.Page;\r\n+import org.apache.dubbo.event.Event;\r\n+import org.apache.dubbo.event.EventDispatcher;\r\n+import org.apache.dubbo.registry.client.event.ServiceDiscoveryDestroyedEvent;\r\n+import org.apache.dubbo.registry.client.event.ServiceDiscoveryDestroyingEvent;\r\n+import org.apache.dubbo.registry.client.event.ServiceDiscoveryExceptionEvent;\r\n+import org.apache.dubbo.registry.client.event.ServiceDiscoveryInitializedEvent;\r\n+import org.apache.dubbo.registry.client.event.ServiceDiscoveryInitializingEvent;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstancePreRegisteredEvent;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstancePreUnregisteredEvent;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstanceRegisteredEvent;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstanceUnregisteredEvent;\r\n+import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\r\n+\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Optional;\r\n+import java.util.Set;\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+\r\n+import static java.util.Optional.empty;\r\n+import static java.util.Optional.of;\r\n+\r\n+/**\r\n+ * The decorating implementation of {@link ServiceDiscovery} to published the {@link Event Dubbo event} when some actions are\r\n+ * executing, including:\r\n+ * <ul>\r\n+ * <li>Lifecycle actions:</li>\r\n+ * <table cellpadding=\"0\" cellspacing=\"0\" border=\"1\">\r\n+ * <thead>\r\n+ * <tr>\r\n+ * <th>Action</th>\r\n+ * <th>before</th>\r\n+ * <th>After</th>\r\n+ * </tr>\r\n+ * </thead>\r\n+ * <tbody>\r\n+ * <tr>\r\n+ * <td>{@link #INITIALIZE_ACTION start}</td>\r\n+ * <td>{@link ServiceDiscoveryInitializingEvent}</td>\r\n+ * <td>{@link ServiceDiscoveryInitializedEvent}</td>\r\n+ * </tr>\r\n+ * <tr>\r\n+ * <td>{@link #DESTROY_ACTION stop}</td>\r\n+ * <td>{@link ServiceDiscoveryDestroyingEvent}</td>\r\n+ * <td>{@link ServiceDiscoveryDestroyedEvent}</td>\r\n+ * </tr>\r\n+ * </tbody>\r\n+ * </table>\r\n+ * <li>Registration actions:</li>\r\n+ * <table cellpadding=\"0\" cellspacing=\"0\" border=\"1\">\r\n+ * <thead>\r\n+ * <tr>\r\n+ * <th>Action</th>\r\n+ * <th>before</th>\r\n+ * <th>After</th>\r\n+ * </tr>\r\n+ * </thead>\r\n+ * <tbody>\r\n+ * <tr>\r\n+ * <td>{@link #REGISTER_ACTION register}</td>\r\n+ * <td>{@link ServiceInstancePreRegisteredEvent}</td>\r\n+ * <td>{@link ServiceInstanceRegisteredEvent}</td>\r\n+ * </tr>\r\n+ * <tr>\r\n+ * <td>{@link #UPDATE_ACTION update}</td>\r\n+ * <td>N/A</td>\r\n+ * <td>N/A</td>\r\n+ * </tr>\r\n+ * <tr>\r\n+ * <td>{@link #UNREGISTER_ACTION unregister}</td>\r\n+ * <td>N/A</td>\r\n+ * <td>N/A</td>\r\n+ * </tr>\r\n+ * </tbody>\r\n+ * </table>\r\n+ * </ul>\r\n+ *\r\n+ * @see ServiceDiscovery\r\n+ * @see ServiceDiscoveryInitializingEvent\r\n+ * @see ServiceDiscoveryInitializedEvent\r\n+ * @see ServiceInstancePreRegisteredEvent\r\n+ * @see ServiceInstanceRegisteredEvent\r\n+ * @see ServiceDiscoveryDestroyingEvent\r\n+ * @see ServiceDiscoveryDestroyedEvent\r\n+ * @since 2.7.5\r\n+ */\r\n+final class EventPublishingServiceDiscovery implements ServiceDiscovery {\r\n+\r\n+    /**\r\n+     * @see ServiceInstancePreRegisteredEvent\r\n+     * @see ServiceInstanceRegisteredEvent\r\n+     */\r\n+    protected static final String REGISTER_ACTION = \"register\";\r\n+\r\n+    protected static final String UPDATE_ACTION = \"update\";\r\n+\r\n+    protected static final String UNREGISTER_ACTION = \"unregister\";\r\n+\r\n+    /**\r\n+     * @see ServiceDiscoveryInitializingEvent\r\n+     * @see ServiceDiscoveryInitializedEvent\r\n+     */\r\n+    protected static final String INITIALIZE_ACTION = \"initialize\";\r\n+\r\n+    /**\r\n+     * @see ServiceDiscoveryDestroyingEvent\r\n+     * @see ServiceDiscoveryDestroyedEvent\r\n+     */\r\n+    protected static final String DESTROY_ACTION = \"destroy\";\r\n+\r\n+    protected final EventDispatcher eventDispatcher = EventDispatcher.getDefaultExtension();\r\n+\r\n+    protected final AtomicBoolean initialized = new AtomicBoolean(false);\r\n+\r\n+    protected final AtomicBoolean destroyed = new AtomicBoolean(false);\r\n+\r\n+    protected final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    private final ServiceDiscovery serviceDiscovery;\r\n+\r\n+    protected EventPublishingServiceDiscovery(ServiceDiscovery serviceDiscovery) {\r\n+        if (serviceDiscovery == null) {\r\n+            throw new NullPointerException(\"The ServiceDiscovery argument must not be null!\");\r\n+        }\r\n+        this.serviceDiscovery = serviceDiscovery;\r\n+    }\r\n+\r\n+    @Override\r\n+    public final void register(ServiceInstance serviceInstance) throws RuntimeException {\r\n+\r\n+        assertDestroyed(REGISTER_ACTION);\r\n+        assertInitialized(REGISTER_ACTION);\r\n+\r\n+        executeWithEvents(\r\n+                of(new ServiceInstancePreRegisteredEvent(serviceDiscovery, serviceInstance)),\r\n+                () -> serviceDiscovery.register(serviceInstance),\r\n+                of(new ServiceInstanceRegisteredEvent(serviceDiscovery, serviceInstance))\r\n+        );\r\n+    }\r\n+\r\n+    @Override\r\n+    public final void update(ServiceInstance serviceInstance) throws RuntimeException {\r\n+\r\n+        assertDestroyed(UPDATE_ACTION);\r\n+        assertInitialized(UPDATE_ACTION);\r\n+\r\n+        executeWithEvents(\r\n+                empty(),\r\n+                () -> serviceDiscovery.update(serviceInstance),\r\n+                empty()\r\n+        );\r\n+    }\r\n+\r\n+    @Override\r\n+    public final void unregister(ServiceInstance serviceInstance) throws RuntimeException {\r\n+\r\n+        assertDestroyed(UNREGISTER_ACTION);\r\n+        assertInitialized(UNREGISTER_ACTION);\r\n+\r\n+        executeWithEvents(\r\n+                of(new ServiceInstancePreUnregisteredEvent(this, serviceInstance)),\r\n+                () -> serviceDiscovery.unregister(serviceInstance),\r\n+                of(new ServiceInstanceUnregisteredEvent(this, serviceInstance))\r\n+        );\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<String> getServices() {\r\n+        return serviceDiscovery.getServices();\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<ServiceInstance> getInstances(String serviceName) throws NullPointerException {\r\n+        return serviceDiscovery.getInstances(serviceName);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize) throws NullPointerException, IllegalArgumentException {\r\n+        return serviceDiscovery.getInstances(serviceName, offset, pageSize);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize, boolean healthyOnly) throws NullPointerException, IllegalArgumentException {\r\n+        return serviceDiscovery.getInstances(serviceName, offset, pageSize, healthyOnly);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Map<String, Page<ServiceInstance>> getInstances(Iterable<String> serviceNames, int offset, int requestSize) throws NullPointerException, IllegalArgumentException {\r\n+        return serviceDiscovery.getInstances(serviceNames, offset, requestSize);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return serviceDiscovery.toString();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws NullPointerException, IllegalArgumentException {\r\n+        serviceDiscovery.addServiceInstancesChangedListener(listener);\r\n+        eventDispatcher.addEventListener(listener);\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return serviceDiscovery.getUrl();\r\n+    }\r\n+\r\n+    @Override\r\n+    public ServiceInstance getLocalInstance() {\r\n+        return serviceDiscovery.getLocalInstance();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void initialize(URL registryURL) {\r\n+\r\n+        assertInitialized(INITIALIZE_ACTION);\r\n+\r\n+        if (isInitialized()) {\r\n+            if (logger.isWarnEnabled()) {\r\n+                logger.warn(\"It's ignored to start current ServiceDiscovery, because it has been started.\");\r\n+            }\r\n+            return;\r\n+        }\r\n+\r\n+        executeWithEvents(\r\n+                of(new ServiceDiscoveryInitializingEvent(this, serviceDiscovery)),\r\n+                () -> serviceDiscovery.initialize(registryURL),\r\n+                of(new ServiceDiscoveryInitializedEvent(this, serviceDiscovery))\r\n+        );\r\n+\r\n+        // doesn't start -> started\r\n+        initialized.compareAndSet(false, true);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+\r\n+        assertDestroyed(DESTROY_ACTION);\r\n+\r\n+        if (isDestroyed()) {\r\n+            if (logger.isWarnEnabled()) {\r\n+                logger.warn(\"It's ignored to stop current ServiceDiscovery, because it has been stopped.\");\r\n+            }\r\n+            return;\r\n+        }\r\n+\r\n+        executeWithEvents(\r\n+                of(new ServiceDiscoveryDestroyingEvent(this, serviceDiscovery)),\r\n+                serviceDiscovery::destroy,\r\n+                of(new ServiceDiscoveryDestroyedEvent(this, serviceDiscovery))\r\n+        );\r\n+\r\n+        // doesn't stop -> stopped\r\n+        destroyed.compareAndSet(false, true);\r\n+    }\r\n+\r\n+    protected final void executeWithEvents(Optional<? extends Event> beforeEvent,\r\n+                                           ThrowableAction action,\r\n+                                           Optional<? extends Event> afterEvent) {\r\n+        beforeEvent.ifPresent(this::dispatchEvent);\r\n+        try {\r\n+            action.execute();\r\n+        } catch (Throwable e) {\r\n+            dispatchEvent(new ServiceDiscoveryExceptionEvent(this, serviceDiscovery, e));\r\n+        }\r\n+        afterEvent.ifPresent(this::dispatchEvent);\r\n+    }\r\n+\r\n+    private void dispatchEvent(Event event) {\r\n+        eventDispatcher.dispatch(event);\r\n+    }\r\n+\r\n+    public final boolean isInitialized() {\r\n+        return initialized.get();\r\n+    }\r\n+\r\n+    public final boolean isDestroyed() {\r\n+        return destroyed.get();\r\n+    }\r\n+\r\n+    protected void assertDestroyed(String action) throws IllegalStateException {\r\n+        if (!isInitialized()) {\r\n+            throw new IllegalStateException(\"The action[\" + action + \"] is rejected, because the ServiceDiscovery is not initialized yet.\");\r\n+        }\r\n+    }\r\n+\r\n+    protected void assertInitialized(String action) throws IllegalStateException {\r\n+        if (isDestroyed()) {\r\n+            throw new IllegalStateException(\"The action[\" + action + \"] is rejected, because the ServiceDiscovery is destroyed already.\");\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/FileSystemServiceDiscovery.java", "source2": "org/apache/dubbo/registry/client/FileSystemServiceDiscovery.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,221 +1,221 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\n-import org.apache.dubbo.common.config.configcenter.file.FileSystemDynamicConfiguration;\n-import org.apache.dubbo.common.lang.ShutdownHookCallbacks;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.event.EventListener;\n-import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\n-\n-import com.alibaba.fastjson.JSON;\n-import org.apache.commons.io.FileUtils;\n-\n-import java.io.File;\n-import java.io.IOException;\n-import java.nio.channels.FileChannel;\n-import java.nio.channels.FileLock;\n-import java.nio.file.LinkOption;\n-import java.nio.file.Path;\n-import java.nio.file.StandardOpenOption;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.stream.Collectors;\n-\n-import static com.alibaba.fastjson.JSON.toJSONString;\n-import static java.lang.String.format;\n-import static java.nio.channels.FileChannel.open;\n-import static org.apache.dubbo.common.config.configcenter.DynamicConfiguration.DEFAULT_GROUP;\n-import static org.apache.dubbo.common.config.configcenter.file.FileSystemDynamicConfiguration.CONFIG_CENTER_DIR_PARAM_NAME;\n-\n-/**\n- * File System {@link ServiceDiscovery} implementation\n- *\n- * @see FileSystemDynamicConfiguration\n- * @since 2.7.5\n- */\n-public class FileSystemServiceDiscovery extends AbstractServiceDiscovery implements EventListener<ServiceInstancesChangedEvent> {\n-\n-    private final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    private final Map<File, FileLock> fileLocksCache = new ConcurrentHashMap<>();\n-\n-    private FileSystemDynamicConfiguration dynamicConfiguration;\n-\n-    @Override\n-    public void onEvent(ServiceInstancesChangedEvent event) {\n-\n-    }\n-\n-    @Override\n-    public void initialize(URL registryURL) throws Exception {\n-        dynamicConfiguration = createDynamicConfiguration(registryURL);\n-        registerDubboShutdownHook();\n-        registerListener();\n-    }\n-\n-    private void registerDubboShutdownHook() {\n-        ShutdownHookCallbacks.INSTANCE.addCallback(this::destroy);\n-    }\n-\n-    private void registerListener() {\n-        getServices().forEach(serviceName -> {\n-            dynamicConfiguration.getConfigKeys(DEFAULT_GROUP).forEach(serviceInstanceId -> {\n-                dynamicConfiguration.addListener(serviceInstanceId, serviceName, this::onConfigChanged);\n-            });\n-        });\n-    }\n-\n-    public void onConfigChanged(ConfigChangedEvent event) {\n-\n-    }\n-\n-    @Override\n-    public void destroy() throws Exception {\n-        dynamicConfiguration.close();\n-        releaseAndRemoveRegistrationFiles();\n-    }\n-\n-    private void releaseAndRemoveRegistrationFiles() {\n-        fileLocksCache.keySet().forEach(file -> {\n-            releaseFileLock(file);\n-            removeFile(file);\n-        });\n-    }\n-\n-    private void removeFile(File file) {\n-        FileUtils.deleteQuietly(file);\n-    }\n-\n-    private String getServiceInstanceId(ServiceInstance serviceInstance) {\n-        String id = serviceInstance.getId();\n-        if (StringUtils.isBlank(id)) {\n-            return serviceInstance.getHost() + \".\" + serviceInstance.getPort();\n-        }\n-        return id;\n-    }\n-\n-    private String getServiceName(ServiceInstance serviceInstance) {\n-        return serviceInstance.getServiceName();\n-    }\n-\n-    @Override\n-    public List<ServiceInstance> getInstances(String serviceName) {\n-        return dynamicConfiguration.getConfigKeys(DEFAULT_GROUP)\n-                .stream()\n-                .map(serviceInstanceId -> dynamicConfiguration.getConfig(serviceInstanceId, serviceName))\n-                .map(content -> JSON.parseObject(content, DefaultServiceInstance.class))\n-                .collect(Collectors.toList());\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return null;\n-    }\n-\n-    @Override\n-    public void doRegister(ServiceInstance serviceInstance) {\n-        String serviceInstanceId = getServiceInstanceId(serviceInstance);\n-        String serviceName = getServiceName(serviceInstance);\n-        String content = toJSONString(serviceInstance);\n-        if (dynamicConfiguration.publishConfig(serviceInstanceId, serviceName, content)) {\n-            lockFile(serviceInstanceId, serviceName);\n-        }\n-    }\n-\n-    private void lockFile(String serviceInstanceId, String serviceName) {\n-        File serviceInstanceFile = serviceInstanceFile(serviceInstanceId, serviceName);\n-        Path serviceInstanceFilePath = serviceInstanceFile.toPath();\n-\n-        fileLocksCache.computeIfAbsent(serviceInstanceFile, file -> {\n-            FileLock fileLock = null;\n-            try {\n-                FileChannel fileChannel = open(serviceInstanceFilePath, StandardOpenOption.READ, StandardOpenOption.WRITE, LinkOption.NOFOLLOW_LINKS);\n-                fileLock = fileChannel.tryLock();\n-            } catch (IOException e) {\n-                if (logger.isErrorEnabled()) {\n-                    logger.error(e.getMessage(), e);\n-                }\n-            }\n-            if (fileLock != null) {\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(format(\"%s has been locked\", serviceInstanceFilePath.toAbsolutePath()));\n-                }\n-            }\n-            return fileLock;\n-        });\n-    }\n-\n-\n-    @Override\n-    public void doUpdate(ServiceInstance serviceInstance) {\n-        register(serviceInstance);\n-    }\n-\n-    @Override\n-    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\n-        String key = getServiceInstanceId(serviceInstance);\n-        String group = getServiceName(serviceInstance);\n-        releaseFileLock(key, group);\n-        dynamicConfiguration.removeConfig(key, group);\n-    }\n-\n-    private void releaseFileLock(String serviceInstanceId, String serviceName) {\n-        File serviceInstanceFile = serviceInstanceFile(serviceInstanceId, serviceName);\n-        releaseFileLock(serviceInstanceFile);\n-    }\n-\n-    private void releaseFileLock(File serviceInstanceFile) {\n-        fileLocksCache.computeIfPresent(serviceInstanceFile, (f, fileLock) -> {\n-            releaseFileLock(fileLock);\n-            if (logger.isInfoEnabled()) {\n-                logger.info(format(\"The file[%s] has been released\", serviceInstanceFile.getAbsolutePath()));\n-            }\n-            return null;\n-        });\n-    }\n-\n-    private void releaseFileLock(FileLock fileLock) {\n-        try (FileChannel fileChannel = fileLock.channel()) {\n-            fileLock.release();\n-        } catch (IOException e) {\n-            if (logger.isErrorEnabled()) {\n-                logger.error(e.getMessage(), e);\n-            }\n-        }\n-    }\n-\n-    private File serviceInstanceFile(String serviceInstanceId, String serviceName) {\n-        return dynamicConfiguration.configFile(serviceInstanceId, serviceName);\n-    }\n-\n-    @Override\n-    public Set<String> getServices() {\n-        return dynamicConfiguration.getConfigGroups();\n-    }\n-\n-    private static FileSystemDynamicConfiguration createDynamicConfiguration(URL connectionURL) {\n-        String path = System.getProperty(\"user.home\") + File.separator + \".dubbo\" + File.separator + \"registry\";\n-        return new FileSystemDynamicConfiguration(connectionURL.addParameter(CONFIG_CENTER_DIR_PARAM_NAME, path));\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\r\n+import org.apache.dubbo.common.config.configcenter.file.FileSystemDynamicConfiguration;\r\n+import org.apache.dubbo.common.lang.ShutdownHookCallbacks;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.event.EventListener;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\r\n+\r\n+import com.alibaba.fastjson.JSON;\r\n+import org.apache.commons.io.FileUtils;\r\n+\r\n+import java.io.File;\r\n+import java.io.IOException;\r\n+import java.nio.channels.FileChannel;\r\n+import java.nio.channels.FileLock;\r\n+import java.nio.file.LinkOption;\r\n+import java.nio.file.Path;\r\n+import java.nio.file.StandardOpenOption;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.stream.Collectors;\r\n+\r\n+import static com.alibaba.fastjson.JSON.toJSONString;\r\n+import static java.lang.String.format;\r\n+import static java.nio.channels.FileChannel.open;\r\n+import static org.apache.dubbo.common.config.configcenter.DynamicConfiguration.DEFAULT_GROUP;\r\n+import static org.apache.dubbo.common.config.configcenter.file.FileSystemDynamicConfiguration.CONFIG_CENTER_DIR_PARAM_NAME;\r\n+\r\n+/**\r\n+ * File System {@link ServiceDiscovery} implementation\r\n+ *\r\n+ * @see FileSystemDynamicConfiguration\r\n+ * @since 2.7.5\r\n+ */\r\n+public class FileSystemServiceDiscovery extends AbstractServiceDiscovery implements EventListener<ServiceInstancesChangedEvent> {\r\n+\r\n+    private final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    private final Map<File, FileLock> fileLocksCache = new ConcurrentHashMap<>();\r\n+\r\n+    private FileSystemDynamicConfiguration dynamicConfiguration;\r\n+\r\n+    @Override\r\n+    public void onEvent(ServiceInstancesChangedEvent event) {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public void initialize(URL registryURL) throws Exception {\r\n+        dynamicConfiguration = createDynamicConfiguration(registryURL);\r\n+        registerDubboShutdownHook();\r\n+        registerListener();\r\n+    }\r\n+\r\n+    private void registerDubboShutdownHook() {\r\n+        ShutdownHookCallbacks.INSTANCE.addCallback(this::destroy);\r\n+    }\r\n+\r\n+    private void registerListener() {\r\n+        getServices().forEach(serviceName -> {\r\n+            dynamicConfiguration.getConfigKeys(DEFAULT_GROUP).forEach(serviceInstanceId -> {\r\n+                dynamicConfiguration.addListener(serviceInstanceId, serviceName, this::onConfigChanged);\r\n+            });\r\n+        });\r\n+    }\r\n+\r\n+    public void onConfigChanged(ConfigChangedEvent event) {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() throws Exception {\r\n+        dynamicConfiguration.close();\r\n+        releaseAndRemoveRegistrationFiles();\r\n+    }\r\n+\r\n+    private void releaseAndRemoveRegistrationFiles() {\r\n+        fileLocksCache.keySet().forEach(file -> {\r\n+            releaseFileLock(file);\r\n+            removeFile(file);\r\n+        });\r\n+    }\r\n+\r\n+    private void removeFile(File file) {\r\n+        FileUtils.deleteQuietly(file);\r\n+    }\r\n+\r\n+    private String getServiceInstanceId(ServiceInstance serviceInstance) {\r\n+        String id = serviceInstance.getId();\r\n+        if (StringUtils.isBlank(id)) {\r\n+            return serviceInstance.getHost() + \".\" + serviceInstance.getPort();\r\n+        }\r\n+        return id;\r\n+    }\r\n+\r\n+    private String getServiceName(ServiceInstance serviceInstance) {\r\n+        return serviceInstance.getServiceName();\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<ServiceInstance> getInstances(String serviceName) {\r\n+        return dynamicConfiguration.getConfigKeys(DEFAULT_GROUP)\r\n+                .stream()\r\n+                .map(serviceInstanceId -> dynamicConfiguration.getConfig(serviceInstanceId, serviceName))\r\n+                .map(content -> JSON.parseObject(content, DefaultServiceInstance.class))\r\n+                .collect(Collectors.toList());\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doRegister(ServiceInstance serviceInstance) {\r\n+        String serviceInstanceId = getServiceInstanceId(serviceInstance);\r\n+        String serviceName = getServiceName(serviceInstance);\r\n+        String content = toJSONString(serviceInstance);\r\n+        if (dynamicConfiguration.publishConfig(serviceInstanceId, serviceName, content)) {\r\n+            lockFile(serviceInstanceId, serviceName);\r\n+        }\r\n+    }\r\n+\r\n+    private void lockFile(String serviceInstanceId, String serviceName) {\r\n+        File serviceInstanceFile = serviceInstanceFile(serviceInstanceId, serviceName);\r\n+        Path serviceInstanceFilePath = serviceInstanceFile.toPath();\r\n+\r\n+        fileLocksCache.computeIfAbsent(serviceInstanceFile, file -> {\r\n+            FileLock fileLock = null;\r\n+            try {\r\n+                FileChannel fileChannel = open(serviceInstanceFilePath, StandardOpenOption.READ, StandardOpenOption.WRITE, LinkOption.NOFOLLOW_LINKS);\r\n+                fileLock = fileChannel.tryLock();\r\n+            } catch (IOException e) {\r\n+                if (logger.isErrorEnabled()) {\r\n+                    logger.error(e.getMessage(), e);\r\n+                }\r\n+            }\r\n+            if (fileLock != null) {\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(format(\"%s has been locked\", serviceInstanceFilePath.toAbsolutePath()));\r\n+                }\r\n+            }\r\n+            return fileLock;\r\n+        });\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public void doUpdate(ServiceInstance serviceInstance) {\r\n+        register(serviceInstance);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\r\n+        String key = getServiceInstanceId(serviceInstance);\r\n+        String group = getServiceName(serviceInstance);\r\n+        releaseFileLock(key, group);\r\n+        dynamicConfiguration.removeConfig(key, group);\r\n+    }\r\n+\r\n+    private void releaseFileLock(String serviceInstanceId, String serviceName) {\r\n+        File serviceInstanceFile = serviceInstanceFile(serviceInstanceId, serviceName);\r\n+        releaseFileLock(serviceInstanceFile);\r\n+    }\r\n+\r\n+    private void releaseFileLock(File serviceInstanceFile) {\r\n+        fileLocksCache.computeIfPresent(serviceInstanceFile, (f, fileLock) -> {\r\n+            releaseFileLock(fileLock);\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(format(\"The file[%s] has been released\", serviceInstanceFile.getAbsolutePath()));\r\n+            }\r\n+            return null;\r\n+        });\r\n+    }\r\n+\r\n+    private void releaseFileLock(FileLock fileLock) {\r\n+        try (FileChannel fileChannel = fileLock.channel()) {\r\n+            fileLock.release();\r\n+        } catch (IOException e) {\r\n+            if (logger.isErrorEnabled()) {\r\n+                logger.error(e.getMessage(), e);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private File serviceInstanceFile(String serviceInstanceId, String serviceName) {\r\n+        return dynamicConfiguration.configFile(serviceInstanceId, serviceName);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<String> getServices() {\r\n+        return dynamicConfiguration.getConfigGroups();\r\n+    }\r\n+\r\n+    private static FileSystemDynamicConfiguration createDynamicConfiguration(URL connectionURL) {\r\n+        String path = System.getProperty(\"user.home\") + File.separator + \".dubbo\" + File.separator + \"registry\";\r\n+        return new FileSystemDynamicConfiguration(connectionURL.addParameter(CONFIG_CENTER_DIR_PARAM_NAME, path));\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/InstanceAddressURL.java", "source2": "org/apache/dubbo/registry/client/InstanceAddressURL.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,379 +1,379 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.metadata.MetadataInfo;\n-import org.apache.dubbo.rpc.RpcContext;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_APPLICATION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-\n-public class InstanceAddressURL extends URL {\n-    private ServiceInstance instance;\n-    private MetadataInfo metadataInfo;\n-\n-    // cached numbers\n-    private volatile transient Map<String, Number> numbers;\n-    private volatile transient Map<String, Map<String, Number>> methodNumbers;\n-\n-    public InstanceAddressURL() {\n-    }\n-\n-    public InstanceAddressURL(\n-            ServiceInstance instance,\n-            MetadataInfo metadataInfo\n-    ) {\n-        this.instance = instance;\n-        this.metadataInfo = metadataInfo;\n-        this.host = instance.getHost();\n-        this.port = instance.getPort();\n-    }\n-\n-    public ServiceInstance getInstance() {\n-        return instance;\n-    }\n-\n-    public MetadataInfo getMetadataInfo() {\n-        return metadataInfo;\n-    }\n-\n-    @Override\n-    public String getServiceInterface() {\n-        return RpcContext.getContext().getInterfaceName();\n-    }\n-\n-    public String getGroup() {\n-        return RpcContext.getContext().getGroup();\n-    }\n-\n-    public String getVersion() {\n-        return RpcContext.getContext().getVersion();\n-    }\n-\n-    @Override\n-    public String getProtocol() {\n-        return RpcContext.getContext().getProtocol();\n-    }\n-\n-    @Override\n-    public String getProtocolServiceKey() {\n-        return RpcContext.getContext().getProtocolServiceKey();\n-    }\n-\n-    @Override\n-    public String getServiceKey() {\n-        return RpcContext.getContext().getServiceKey();\n-    }\n-\n-    @Override\n-    public String getAddress() {\n-        return instance.getAddress();\n-    }\n-\n-    @Override\n-    public String getPath() {\n-        MetadataInfo.ServiceInfo serviceInfo = metadataInfo.getServiceInfo(getProtocolServiceKey());\n-        return serviceInfo.getPath();\n-    }\n-\n-    @Override\n-    public String getParameter(String key) {\n-        if (VERSION_KEY.equals(key)) {\n-            return getVersion();\n-        } else if (GROUP_KEY.equals(key)) {\n-            return getGroup();\n-        } else if (INTERFACE_KEY.equals(key)) {\n-            return getServiceInterface();\n-        } else if (REMOTE_APPLICATION_KEY.equals(key)) {\n-            return instance.getServiceName();\n-        }\n-\n-        String protocolServiceKey = getProtocolServiceKey();\n-        if (protocolServiceKey == null) {\n-            return getInstanceParameter(key);\n-        }\n-        return getServiceParameter(protocolServiceKey, key);\n-    }\n-\n-    @Override\n-    public String getServiceParameter(String service, String key) {\n-        String value = getInstanceParameter(key);\n-        if (StringUtils.isEmpty(value) && metadataInfo != null) {\n-            value = metadataInfo.getParameter(key, service);\n-        }\n-        return value;\n-    }\n-\n-    /**\n-     * method parameter only exists in ServiceInfo\n-     *\n-     * @param method\n-     * @param key\n-     * @return\n-     */\n-    @Override\n-    public String getServiceMethodParameter(String protocolServiceKey, String method, String key) {\n-        MetadataInfo.ServiceInfo serviceInfo = metadataInfo.getServiceInfo(protocolServiceKey);\n-        String value = serviceInfo.getMethodParameter(method, key, null);\n-        if (StringUtils.isNotEmpty(value)) {\n-            return value;\n-        }\n-        return getParameter(key);\n-    }\n-\n-    @Override\n-    public String getMethodParameter(String method, String key) {\n-        String protocolServiceKey = getProtocolServiceKey();\n-        if (protocolServiceKey == null) {\n-            return null;\n-        }\n-        return getServiceMethodParameter(protocolServiceKey, method, key);\n-    }\n-\n-    /**\n-     * method parameter only exists in ServiceInfo\n-     *\n-     * @param method\n-     * @param key\n-     * @return\n-     */\n-    @Override\n-    public boolean hasServiceMethodParameter(String protocolServiceKey, String method, String key) {\n-        MetadataInfo.ServiceInfo serviceInfo = metadataInfo.getServiceInfo(protocolServiceKey);\n-\n-        if (method == null) {\n-            String suffix = \".\" + key;\n-            for (String fullKey : getParameters().keySet()) {\n-                if (fullKey.endsWith(suffix)) {\n-                    return true;\n-                }\n-            }\n-            return false;\n-        }\n-        if (key == null) {\n-            String prefix = method + \".\";\n-            for (String fullKey : getParameters().keySet()) {\n-                if (fullKey.startsWith(prefix)) {\n-                    return true;\n-                }\n-            }\n-            return false;\n-        }\n-\n-        return serviceInfo.hasMethodParameter(method, key);\n-    }\n-\n-    @Override\n-    public boolean hasMethodParameter(String method, String key) {\n-        String protocolServiceKey = getProtocolServiceKey();\n-        if (protocolServiceKey == null) {\n-            return false;\n-        }\n-        return hasServiceMethodParameter(protocolServiceKey, method, key);\n-    }\n-\n-    /**\n-     * method parameter only exists in ServiceInfo\n-     *\n-     * @param method\n-     * @return\n-     */\n-    @Override\n-    public boolean hasServiceMethodParameter(String protocolServiceKey, String method) {\n-        MetadataInfo.ServiceInfo serviceInfo = metadataInfo.getServiceInfo(protocolServiceKey);\n-        return serviceInfo.hasMethodParameter(method);\n-    }\n-\n-    @Override\n-    public boolean hasMethodParameter(String method) {\n-        String protocolServiceKey = getProtocolServiceKey();\n-        if (protocolServiceKey == null) {\n-            return false;\n-        }\n-        return hasServiceMethodParameter(protocolServiceKey, method);\n-    }\n-\n-    /**\n-     * Avoid calling this method in RPC call.\n-     *\n-     * @return\n-     */\n-    @Override\n-    public Map<String, String> getServiceParameters(String protocolServiceKey) {\n-        Map<String, String> instanceParams = getInstanceMetadata();\n-        Map<String, String> metadataParams = (metadataInfo == null ? new HashMap<>() : metadataInfo.getParameters(protocolServiceKey));\n-        int i = instanceParams == null ? 0 : instanceParams.size();\n-        int j = metadataParams == null ? 0 : metadataParams.size();\n-        Map<String, String> params = new HashMap<>((int) ((i + j) / 0.75) + 1);\n-        if (instanceParams != null) {\n-            params.putAll(instanceParams);\n-        }\n-        if (metadataParams != null) {\n-            params.putAll(metadataParams);\n-        }\n-        return params;\n-    }\n-\n-    @Override\n-    public Map<String, String> getParameters() {\n-        String protocolServiceKey = getProtocolServiceKey();\n-        if (protocolServiceKey == null) {\n-            return getInstance().getAllParams();\n-        }\n-        return getServiceParameters(protocolServiceKey);\n-    }\n-\n-    @Override\n-    public URL addParameter(String key, String value) {\n-        if (StringUtils.isEmpty(key) || StringUtils.isEmpty(value)) {\n-            return this;\n-        }\n-\n-        getInstance().getExtendParams().put(key, value);\n-        return this;\n-    }\n-\n-    @Override\n-    public URL addParameterIfAbsent(String key, String value) {\n-        if (StringUtils.isEmpty(key) || StringUtils.isEmpty(value)) {\n-            return this;\n-        }\n-\n-        getInstance().getExtendParams().putIfAbsent(key, value);\n-        return this;\n-    }\n-\n-    public URL addServiceParameter(String protocolServiceKey, String key, String value) {\n-        if (StringUtils.isEmpty(key) || StringUtils.isEmpty(value)) {\n-            return this;\n-        }\n-\n-        getMetadataInfo().getServiceInfo(protocolServiceKey).addParameter(key, value);\n-        return this;\n-    }\n-\n-    public URL addServiceParameterIfAbsent(String protocolServiceKey, String key, String value) {\n-        if (StringUtils.isEmpty(key) || StringUtils.isEmpty(value)) {\n-            return this;\n-        }\n-\n-        getMetadataInfo().getServiceInfo(protocolServiceKey).addParameterIfAbsent(key, value);\n-        return this;\n-    }\n-\n-    public URL addConsumerParams(String protocolServiceKey, Map<String, String> params) {\n-        getMetadataInfo().getServiceInfo(protocolServiceKey).addConsumerParams(params);\n-        return this;\n-    }\n-\n-    @Override\n-    protected Map<String, Number> getServiceNumbers(String protocolServiceKey) {\n-        return getServiceInfo(protocolServiceKey).getNumbers();\n-    }\n-\n-    @Override\n-    protected Map<String, Number> getNumbers() {\n-        String protocolServiceKey = getProtocolServiceKey();\n-        if (protocolServiceKey == null) {\n-            if (numbers == null) { // concurrent initialization is tolerant\n-                numbers = new ConcurrentHashMap<>();\n-            }\n-            return numbers;\n-        }\n-        return getServiceNumbers(protocolServiceKey);\n-    }\n-\n-    @Override\n-    protected Map<String, Map<String, Number>> getServiceMethodNumbers(String protocolServiceKey) {\n-        return getServiceInfo(protocolServiceKey).getMethodNumbers();\n-    }\n-\n-    @Override\n-    protected Map<String, Map<String, Number>> getMethodNumbers() {\n-        String protocolServiceKey = getProtocolServiceKey();\n-        if (protocolServiceKey == null) {\n-            if (methodNumbers == null) { // concurrent initialization is tolerant\n-                methodNumbers = new ConcurrentHashMap<>();\n-            }\n-            return methodNumbers;\n-        }\n-        return getServiceMethodNumbers(protocolServiceKey);\n-    }\n-\n-    private MetadataInfo.ServiceInfo getServiceInfo(String protocolServiceKey) {\n-        return metadataInfo.getServiceInfo(protocolServiceKey);\n-    }\n-\n-    private String getInstanceParameter(String key) {\n-        String value = this.instance.getMetadata().get(key);\n-        if (StringUtils.isNotEmpty(value)) {\n-            return value;\n-        }\n-        return this.instance.getExtendParams().get(key);\n-    }\n-\n-    private Map<String, String> getInstanceMetadata() {\n-        return this.instance.getMetadata();\n-    }\n-\n-    @Override\n-    public boolean equals(Object obj) {\n-        // instance metadata equals\n-        if (obj == null) {\n-            return false;\n-        }\n-        if (!(obj instanceof InstanceAddressURL)) {\n-            return false;\n-        }\n-\n-        InstanceAddressURL that = (InstanceAddressURL) obj;\n-\n-        return this.getInstance().equals(that.getInstance());\n-    }\n-\n-    @Override\n-    public int hashCode() {\n-        return getInstance().hashCode();\n-    }\n-\n-    public String getServiceString(String service) {\n-        MetadataInfo.ServiceInfo serviceInfo = metadataInfo.getServiceInfo(service);\n-        if (serviceInfo == null) {\n-            return instance.toString();\n-        }\n-        return instance.toString() + serviceInfo.toString();\n-    }\n-\n-    @Override\n-    public String toString() {\n-        if (instance == null) {\n-            return \"{}\";\n-        }\n-        if (metadataInfo == null) {\n-            return instance.toString();\n-        }\n-        return instance.toString() + metadataInfo.toString();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.metadata.MetadataInfo;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_APPLICATION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+\r\n+public class InstanceAddressURL extends URL {\r\n+    private ServiceInstance instance;\r\n+    private MetadataInfo metadataInfo;\r\n+\r\n+    // cached numbers\r\n+    private volatile transient Map<String, Number> numbers;\r\n+    private volatile transient Map<String, Map<String, Number>> methodNumbers;\r\n+\r\n+    public InstanceAddressURL() {\r\n+    }\r\n+\r\n+    public InstanceAddressURL(\r\n+            ServiceInstance instance,\r\n+            MetadataInfo metadataInfo\r\n+    ) {\r\n+        this.instance = instance;\r\n+        this.metadataInfo = metadataInfo;\r\n+        this.host = instance.getHost();\r\n+        this.port = instance.getPort();\r\n+    }\r\n+\r\n+    public ServiceInstance getInstance() {\r\n+        return instance;\r\n+    }\r\n+\r\n+    public MetadataInfo getMetadataInfo() {\r\n+        return metadataInfo;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getServiceInterface() {\r\n+        return RpcContext.getContext().getInterfaceName();\r\n+    }\r\n+\r\n+    public String getGroup() {\r\n+        return RpcContext.getContext().getGroup();\r\n+    }\r\n+\r\n+    public String getVersion() {\r\n+        return RpcContext.getContext().getVersion();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getProtocol() {\r\n+        return RpcContext.getContext().getProtocol();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getProtocolServiceKey() {\r\n+        return RpcContext.getContext().getProtocolServiceKey();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getServiceKey() {\r\n+        return RpcContext.getContext().getServiceKey();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getAddress() {\r\n+        return instance.getAddress();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getPath() {\r\n+        MetadataInfo.ServiceInfo serviceInfo = metadataInfo.getServiceInfo(getProtocolServiceKey());\r\n+        return serviceInfo.getPath();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getParameter(String key) {\r\n+        if (VERSION_KEY.equals(key)) {\r\n+            return getVersion();\r\n+        } else if (GROUP_KEY.equals(key)) {\r\n+            return getGroup();\r\n+        } else if (INTERFACE_KEY.equals(key)) {\r\n+            return getServiceInterface();\r\n+        } else if (REMOTE_APPLICATION_KEY.equals(key)) {\r\n+            return instance.getServiceName();\r\n+        }\r\n+\r\n+        String protocolServiceKey = getProtocolServiceKey();\r\n+        if (protocolServiceKey == null) {\r\n+            return getInstanceParameter(key);\r\n+        }\r\n+        return getServiceParameter(protocolServiceKey, key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getServiceParameter(String service, String key) {\r\n+        String value = getInstanceParameter(key);\r\n+        if (StringUtils.isEmpty(value) && metadataInfo != null) {\r\n+            value = metadataInfo.getParameter(key, service);\r\n+        }\r\n+        return value;\r\n+    }\r\n+\r\n+    /**\r\n+     * method parameter only exists in ServiceInfo\r\n+     *\r\n+     * @param method\r\n+     * @param key\r\n+     * @return\r\n+     */\r\n+    @Override\r\n+    public String getServiceMethodParameter(String protocolServiceKey, String method, String key) {\r\n+        MetadataInfo.ServiceInfo serviceInfo = metadataInfo.getServiceInfo(protocolServiceKey);\r\n+        String value = serviceInfo.getMethodParameter(method, key, null);\r\n+        if (StringUtils.isNotEmpty(value)) {\r\n+            return value;\r\n+        }\r\n+        return getParameter(key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getMethodParameter(String method, String key) {\r\n+        String protocolServiceKey = getProtocolServiceKey();\r\n+        if (protocolServiceKey == null) {\r\n+            return null;\r\n+        }\r\n+        return getServiceMethodParameter(protocolServiceKey, method, key);\r\n+    }\r\n+\r\n+    /**\r\n+     * method parameter only exists in ServiceInfo\r\n+     *\r\n+     * @param method\r\n+     * @param key\r\n+     * @return\r\n+     */\r\n+    @Override\r\n+    public boolean hasServiceMethodParameter(String protocolServiceKey, String method, String key) {\r\n+        MetadataInfo.ServiceInfo serviceInfo = metadataInfo.getServiceInfo(protocolServiceKey);\r\n+\r\n+        if (method == null) {\r\n+            String suffix = \".\" + key;\r\n+            for (String fullKey : getParameters().keySet()) {\r\n+                if (fullKey.endsWith(suffix)) {\r\n+                    return true;\r\n+                }\r\n+            }\r\n+            return false;\r\n+        }\r\n+        if (key == null) {\r\n+            String prefix = method + \".\";\r\n+            for (String fullKey : getParameters().keySet()) {\r\n+                if (fullKey.startsWith(prefix)) {\r\n+                    return true;\r\n+                }\r\n+            }\r\n+            return false;\r\n+        }\r\n+\r\n+        return serviceInfo.hasMethodParameter(method, key);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean hasMethodParameter(String method, String key) {\r\n+        String protocolServiceKey = getProtocolServiceKey();\r\n+        if (protocolServiceKey == null) {\r\n+            return false;\r\n+        }\r\n+        return hasServiceMethodParameter(protocolServiceKey, method, key);\r\n+    }\r\n+\r\n+    /**\r\n+     * method parameter only exists in ServiceInfo\r\n+     *\r\n+     * @param method\r\n+     * @return\r\n+     */\r\n+    @Override\r\n+    public boolean hasServiceMethodParameter(String protocolServiceKey, String method) {\r\n+        MetadataInfo.ServiceInfo serviceInfo = metadataInfo.getServiceInfo(protocolServiceKey);\r\n+        return serviceInfo.hasMethodParameter(method);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean hasMethodParameter(String method) {\r\n+        String protocolServiceKey = getProtocolServiceKey();\r\n+        if (protocolServiceKey == null) {\r\n+            return false;\r\n+        }\r\n+        return hasServiceMethodParameter(protocolServiceKey, method);\r\n+    }\r\n+\r\n+    /**\r\n+     * Avoid calling this method in RPC call.\r\n+     *\r\n+     * @return\r\n+     */\r\n+    @Override\r\n+    public Map<String, String> getServiceParameters(String protocolServiceKey) {\r\n+        Map<String, String> instanceParams = getInstanceMetadata();\r\n+        Map<String, String> metadataParams = (metadataInfo == null ? new HashMap<>() : metadataInfo.getParameters(protocolServiceKey));\r\n+        int i = instanceParams == null ? 0 : instanceParams.size();\r\n+        int j = metadataParams == null ? 0 : metadataParams.size();\r\n+        Map<String, String> params = new HashMap<>((int) ((i + j) / 0.75) + 1);\r\n+        if (instanceParams != null) {\r\n+            params.putAll(instanceParams);\r\n+        }\r\n+        if (metadataParams != null) {\r\n+            params.putAll(metadataParams);\r\n+        }\r\n+        return params;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Map<String, String> getParameters() {\r\n+        String protocolServiceKey = getProtocolServiceKey();\r\n+        if (protocolServiceKey == null) {\r\n+            return getInstance().getAllParams();\r\n+        }\r\n+        return getServiceParameters(protocolServiceKey);\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL addParameter(String key, String value) {\r\n+        if (StringUtils.isEmpty(key) || StringUtils.isEmpty(value)) {\r\n+            return this;\r\n+        }\r\n+\r\n+        getInstance().getExtendParams().put(key, value);\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL addParameterIfAbsent(String key, String value) {\r\n+        if (StringUtils.isEmpty(key) || StringUtils.isEmpty(value)) {\r\n+            return this;\r\n+        }\r\n+\r\n+        getInstance().getExtendParams().putIfAbsent(key, value);\r\n+        return this;\r\n+    }\r\n+\r\n+    public URL addServiceParameter(String protocolServiceKey, String key, String value) {\r\n+        if (StringUtils.isEmpty(key) || StringUtils.isEmpty(value)) {\r\n+            return this;\r\n+        }\r\n+\r\n+        getMetadataInfo().getServiceInfo(protocolServiceKey).addParameter(key, value);\r\n+        return this;\r\n+    }\r\n+\r\n+    public URL addServiceParameterIfAbsent(String protocolServiceKey, String key, String value) {\r\n+        if (StringUtils.isEmpty(key) || StringUtils.isEmpty(value)) {\r\n+            return this;\r\n+        }\r\n+\r\n+        getMetadataInfo().getServiceInfo(protocolServiceKey).addParameterIfAbsent(key, value);\r\n+        return this;\r\n+    }\r\n+\r\n+    public URL addConsumerParams(String protocolServiceKey, Map<String, String> params) {\r\n+        getMetadataInfo().getServiceInfo(protocolServiceKey).addConsumerParams(params);\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Map<String, Number> getServiceNumbers(String protocolServiceKey) {\r\n+        return getServiceInfo(protocolServiceKey).getNumbers();\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Map<String, Number> getNumbers() {\r\n+        String protocolServiceKey = getProtocolServiceKey();\r\n+        if (protocolServiceKey == null) {\r\n+            if (numbers == null) { // concurrent initialization is tolerant\r\n+                numbers = new ConcurrentHashMap<>();\r\n+            }\r\n+            return numbers;\r\n+        }\r\n+        return getServiceNumbers(protocolServiceKey);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Map<String, Map<String, Number>> getServiceMethodNumbers(String protocolServiceKey) {\r\n+        return getServiceInfo(protocolServiceKey).getMethodNumbers();\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Map<String, Map<String, Number>> getMethodNumbers() {\r\n+        String protocolServiceKey = getProtocolServiceKey();\r\n+        if (protocolServiceKey == null) {\r\n+            if (methodNumbers == null) { // concurrent initialization is tolerant\r\n+                methodNumbers = new ConcurrentHashMap<>();\r\n+            }\r\n+            return methodNumbers;\r\n+        }\r\n+        return getServiceMethodNumbers(protocolServiceKey);\r\n+    }\r\n+\r\n+    private MetadataInfo.ServiceInfo getServiceInfo(String protocolServiceKey) {\r\n+        return metadataInfo.getServiceInfo(protocolServiceKey);\r\n+    }\r\n+\r\n+    private String getInstanceParameter(String key) {\r\n+        String value = this.instance.getMetadata().get(key);\r\n+        if (StringUtils.isNotEmpty(value)) {\r\n+            return value;\r\n+        }\r\n+        return this.instance.getExtendParams().get(key);\r\n+    }\r\n+\r\n+    private Map<String, String> getInstanceMetadata() {\r\n+        return this.instance.getMetadata();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean equals(Object obj) {\r\n+        // instance metadata equals\r\n+        if (obj == null) {\r\n+            return false;\r\n+        }\r\n+        if (!(obj instanceof InstanceAddressURL)) {\r\n+            return false;\r\n+        }\r\n+\r\n+        InstanceAddressURL that = (InstanceAddressURL) obj;\r\n+\r\n+        return this.getInstance().equals(that.getInstance());\r\n+    }\r\n+\r\n+    @Override\r\n+    public int hashCode() {\r\n+        return getInstance().hashCode();\r\n+    }\r\n+\r\n+    public String getServiceString(String service) {\r\n+        MetadataInfo.ServiceInfo serviceInfo = metadataInfo.getServiceInfo(service);\r\n+        if (serviceInfo == null) {\r\n+            return instance.toString();\r\n+        }\r\n+        return instance.toString() + serviceInfo.toString();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        if (instance == null) {\r\n+            return \"{}\";\r\n+        }\r\n+        if (metadataInfo == null) {\r\n+            return instance.toString();\r\n+        }\r\n+        return instance.toString() + metadataInfo.toString();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/RegistryClusterIdentifier.java", "source2": "org/apache/dubbo/registry/client/RegistryClusterIdentifier.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,36 +1,36 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_CLUSTER_TYPE_KEY;\n-\n-@SPI\n-public interface RegistryClusterIdentifier {\n-    String providerKey(URL url);\n-\n-    String consumerKey(URL url);\n-\n-    static RegistryClusterIdentifier getExtension(URL url) {\n-        ExtensionLoader<RegistryClusterIdentifier> loader\n-                = ExtensionLoader.getExtensionLoader(RegistryClusterIdentifier.class);\n-        return loader.getExtension(url.getParameter(REGISTRY_CLUSTER_TYPE_KEY, \"default\"));\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_CLUSTER_TYPE_KEY;\r\n+\r\n+@SPI\r\n+public interface RegistryClusterIdentifier {\r\n+    String providerKey(URL url);\r\n+\r\n+    String consumerKey(URL url);\r\n+\r\n+    static RegistryClusterIdentifier getExtension(URL url) {\r\n+        ExtensionLoader<RegistryClusterIdentifier> loader\r\n+                = ExtensionLoader.getExtensionLoader(RegistryClusterIdentifier.class);\r\n+        return loader.getExtension(url.getParameter(REGISTRY_CLUSTER_TYPE_KEY, \"default\"));\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/ServiceDiscovery.java", "source2": "org/apache/dubbo/registry/client/ServiceDiscovery.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,287 +1,287 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.common.lang.Prioritized;\n-import org.apache.dubbo.common.utils.Page;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.event.EventDispatcher;\n-import org.apache.dubbo.event.EventListener;\n-import org.apache.dubbo.registry.NotifyListener;\n-import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\n-import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\n-\n-import java.util.LinkedHashMap;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.stream.Stream;\n-\n-import static java.util.Collections.unmodifiableList;\n-import static java.util.Collections.unmodifiableMap;\n-import static org.apache.dubbo.event.EventDispatcher.getDefaultExtension;\n-\n-/**\n- * The common operations of Service Discovery\n- *\n- * @since 2.7.5\n- */\n-@SPI(\"zookeeper\")\n-public interface ServiceDiscovery extends Prioritized {\n-\n-    // ==================================== Lifecycle ==================================== //\n-\n-    /**\n-     * Initializes the {@link ServiceDiscovery}\n-     *\n-     * @param registryURL the {@link URL url} to connect service registry\n-     * @throws Exception If met with error\n-     */\n-    void initialize(URL registryURL) throws Exception;\n-\n-    /**\n-     * Destroy the {@link ServiceDiscovery}\n-     *\n-     * @throws Exception If met with error\n-     */\n-    void destroy() throws Exception;\n-\n-    // ==================================================================================== //\n-\n-    // =================================== Registration =================================== //\n-\n-    /**\n-     * Registers an instance of {@link ServiceInstance}.\n-     *\n-     * @param serviceInstance an instance of {@link ServiceInstance} to be registered\n-     * @throws RuntimeException if failed\n-     */\n-    void register(ServiceInstance serviceInstance) throws RuntimeException;\n-\n-    /**\n-     * Updates the registered {@link ServiceInstance}.\n-     *\n-     * @param serviceInstance the registered {@link ServiceInstance}\n-     * @throws RuntimeException if failed\n-     */\n-    void update(ServiceInstance serviceInstance) throws RuntimeException;\n-\n-    /**\n-     * Unregisters an instance of {@link ServiceInstance}.\n-     *\n-     * @param serviceInstance an instance of {@link ServiceInstance} to be unregistered\n-     * @throws RuntimeException if failed\n-     */\n-    void unregister(ServiceInstance serviceInstance) throws RuntimeException;\n-\n-    // ==================================================================================== //\n-\n-    // ==================================== Discovery ===================================== //\n-\n-    /**\n-     * Get the default size of pagination query\n-     *\n-     * @return the default value is 100\n-     */\n-    default int getDefaultPageSize() {\n-        return 100;\n-    }\n-\n-    /**\n-     * Gets all service names\n-     *\n-     * @return non-null read-only {@link Set}\n-     */\n-    Set<String> getServices();\n-\n-    /**\n-     * Gets all {@link ServiceInstance service instances} by the specified service name.\n-     *\n-     * @param serviceName the service name\n-     * @return non-null {@link List}\n-     * @throws NullPointerException if <code>serviceName</code> is <code>null</code>\n-     */\n-    default List<ServiceInstance> getInstances(String serviceName) throws NullPointerException {\n-\n-        List<ServiceInstance> allInstances = new LinkedList<>();\n-\n-        int offset = 0;\n-\n-        int pageSize = getDefaultPageSize();\n-\n-        Page<ServiceInstance> page = getInstances(serviceName, offset, pageSize);\n-\n-        allInstances.addAll(page.getData());\n-\n-        while (page.hasNext()) {\n-            offset += page.getDataSize();\n-            page = getInstances(serviceName, offset, pageSize);\n-            allInstances.addAll(page.getData());\n-        }\n-\n-        return unmodifiableList(allInstances);\n-    }\n-\n-    /**\n-     * Gets the {@link Page pagination} of {@link ServiceInstance service instances} by the specified service name.\n-     * It's equal to {@link #getInstances(String, int, int, boolean)} with <code>healthyOnly == true</code>\n-     *\n-     * @param serviceName the service name\n-     * @param offset      the offset of request , the number \"0\" indicates first page\n-     * @param pageSize    the number of request, the {@link Integer#MAX_VALUE max value} indicates the range is unlimited\n-     * @return non-null {@link Page} object\n-     * @throws NullPointerException          if <code>serviceName</code> is <code>null</code>\n-     * @throws IllegalArgumentException      if <code>offset</code> or <code>pageSize</code> is negative number\n-     * @throws UnsupportedOperationException if not supported\n-     */\n-    default Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize) throws NullPointerException,\n-            IllegalArgumentException {\n-        return getInstances(serviceName, offset, pageSize, false);\n-    }\n-\n-    /**\n-     * Get the {@link Page pagination} of {@link ServiceInstance service instances} by the specified service name.\n-     * If <code>healthyOnly == true</code>, filter healthy instances only.\n-     *\n-     * @param serviceName the service name\n-     * @param offset      the offset of request , the number \"0\" indicates first page\n-     * @param pageSize    the number of request, the {@link Integer#MAX_VALUE max value} indicates the range is unlimited\n-     * @param healthyOnly if <code>true</code> , filter healthy instances only\n-     * @return non-null {@link Page} object\n-     * @throws NullPointerException          if <code>serviceName</code> is <code>null</code>\n-     * @throws IllegalArgumentException      if <code>offset</code> or <code>pageSize</code> is negative number\n-     * @throws UnsupportedOperationException if not supported\n-     */\n-    default Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize, boolean healthyOnly) throws\n-            NullPointerException, IllegalArgumentException, UnsupportedOperationException {\n-        throw new UnsupportedOperationException(\"Current implementation does not support pagination query method.\");\n-    }\n-\n-    /**\n-     * batch-get all {@link ServiceInstance service instances} by the specified service names\n-     *\n-     * @param serviceNames the multiple service names\n-     * @param offset       the offset of request , the number \"0\" indicates first page\n-     * @param requestSize  the number of request, the {@link Integer#MAX_VALUE max value} indicates the range is unlimited\n-     * @return non-null read-only {@link Map} whose key is the service name and value is\n-     * the {@link Page pagination} of {@link ServiceInstance service instances}\n-     * @throws NullPointerException          if <code>serviceName</code> is <code>null</code>\n-     * @throws IllegalArgumentException      if <code>offset</code> or <code>requestSize</code> is negative number\n-     * @throws UnsupportedOperationException if not supported\n-     */\n-    default Map<String, Page<ServiceInstance>> getInstances(Iterable<String> serviceNames, int offset, int requestSize) throws\n-            NullPointerException, IllegalArgumentException {\n-        Map<String, Page<ServiceInstance>> instances = new LinkedHashMap<>();\n-        for (String serviceName : serviceNames) {\n-            instances.put(serviceName, getInstances(serviceName, offset, requestSize));\n-        }\n-        return unmodifiableMap(instances);\n-    }\n-\n-    /**\n-     * Add an instance of {@link ServiceInstancesChangedListener} for specified service\n-     * <p>\n-     * Default, current method will be invoked by {@link ServiceDiscoveryRegistry#subscribe(URL, NotifyListener)\n-     * the ServiceDiscoveryRegistry on the subscription}, and it's mandatory to\n-     * {@link EventDispatcher#addEventListener(EventListener) add} the {@link ServiceInstancesChangedListener} argument\n-     * into {@link EventDispatcher} whether the subclass implements same approach or not, thus this method is used to\n-     * trigger or adapt the vendor's change notification mechanism typically, like Zookeeper Watcher,\n-     * Nacos EventListener. If the registry observes the change, It's suggested that the implementation could invoke\n-     * {@link #dispatchServiceInstancesChangedEvent(String)} method or variants\n-     *\n-     * @param listener an instance of {@link ServiceInstancesChangedListener}\n-     * @throws NullPointerException\n-     * @throws IllegalArgumentException\n-     * @see EventPublishingServiceDiscovery\n-     * @see EventDispatcher\n-     */\n-    default void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener)\n-            throws NullPointerException, IllegalArgumentException {\n-    }\n-\n-    /**\n-     * unsubscribe to instances change event.\n-     * @param listener\n-     * @throws IllegalArgumentException\n-     */\n-    default void removeServiceInstancesChangedListener(ServiceInstancesChangedListener listener)\n-            throws IllegalArgumentException {\n-    }\n-\n-    /**\n-     * Dispatch the {@link ServiceInstancesChangedEvent}\n-     *\n-     * @param serviceName the name of service whose service instances have been changed\n-     */\n-    default void dispatchServiceInstancesChangedEvent(String serviceName) {\n-        dispatchServiceInstancesChangedEvent(serviceName, getInstances(serviceName));\n-    }\n-\n-    /**\n-     * Dispatch the {@link ServiceInstancesChangedEvent}\n-     *\n-     * @param serviceName       the name of service whose service instances have been changed\n-     * @param otherServiceNames the names of other services\n-     */\n-    default void dispatchServiceInstancesChangedEvent(String serviceName, String... otherServiceNames) {\n-        dispatchServiceInstancesChangedEvent(serviceName, getInstances(serviceName));\n-        if (otherServiceNames != null) {\n-            Stream.of(otherServiceNames)\n-                    .filter(StringUtils::isNotEmpty)\n-                    .forEach(this::dispatchServiceInstancesChangedEvent);\n-        }\n-    }\n-\n-    /**\n-     * Dispatch the {@link ServiceInstancesChangedEvent}\n-     *\n-     * @param serviceName      the name of service whose service instances have been changed\n-     * @param serviceInstances the service instances have been changed\n-     */\n-    default void dispatchServiceInstancesChangedEvent(String serviceName, List<ServiceInstance> serviceInstances) {\n-        dispatchServiceInstancesChangedEvent(new ServiceInstancesChangedEvent(serviceName, serviceInstances));\n-    }\n-\n-    /**\n-     * Dispatch the {@link ServiceInstancesChangedEvent}\n-     *\n-     * @param event the {@link ServiceInstancesChangedEvent}\n-     */\n-    default void dispatchServiceInstancesChangedEvent(ServiceInstancesChangedEvent event) {\n-        getDefaultExtension().dispatch(event);\n-    }\n-\n-    // ==================================================================================== //\n-\n-//    String getKey(URL exportedURL);\n-\n-    default URL getUrl() {\n-        return null;\n-    }\n-\n-    ServiceInstance getLocalInstance();\n-\n-    /**\n-     * A human-readable description of the implementation\n-     *\n-     * @return The description.\n-     */\n-    String toString();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.common.lang.Prioritized;\r\n+import org.apache.dubbo.common.utils.Page;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.event.EventDispatcher;\r\n+import org.apache.dubbo.event.EventListener;\r\n+import org.apache.dubbo.registry.NotifyListener;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\r\n+import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\r\n+\r\n+import java.util.LinkedHashMap;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.stream.Stream;\r\n+\r\n+import static java.util.Collections.unmodifiableList;\r\n+import static java.util.Collections.unmodifiableMap;\r\n+import static org.apache.dubbo.event.EventDispatcher.getDefaultExtension;\r\n+\r\n+/**\r\n+ * The common operations of Service Discovery\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+@SPI(\"zookeeper\")\r\n+public interface ServiceDiscovery extends Prioritized {\r\n+\r\n+    // ==================================== Lifecycle ==================================== //\r\n+\r\n+    /**\r\n+     * Initializes the {@link ServiceDiscovery}\r\n+     *\r\n+     * @param registryURL the {@link URL url} to connect service registry\r\n+     * @throws Exception If met with error\r\n+     */\r\n+    void initialize(URL registryURL) throws Exception;\r\n+\r\n+    /**\r\n+     * Destroy the {@link ServiceDiscovery}\r\n+     *\r\n+     * @throws Exception If met with error\r\n+     */\r\n+    void destroy() throws Exception;\r\n+\r\n+    // ==================================================================================== //\r\n+\r\n+    // =================================== Registration =================================== //\r\n+\r\n+    /**\r\n+     * Registers an instance of {@link ServiceInstance}.\r\n+     *\r\n+     * @param serviceInstance an instance of {@link ServiceInstance} to be registered\r\n+     * @throws RuntimeException if failed\r\n+     */\r\n+    void register(ServiceInstance serviceInstance) throws RuntimeException;\r\n+\r\n+    /**\r\n+     * Updates the registered {@link ServiceInstance}.\r\n+     *\r\n+     * @param serviceInstance the registered {@link ServiceInstance}\r\n+     * @throws RuntimeException if failed\r\n+     */\r\n+    void update(ServiceInstance serviceInstance) throws RuntimeException;\r\n+\r\n+    /**\r\n+     * Unregisters an instance of {@link ServiceInstance}.\r\n+     *\r\n+     * @param serviceInstance an instance of {@link ServiceInstance} to be unregistered\r\n+     * @throws RuntimeException if failed\r\n+     */\r\n+    void unregister(ServiceInstance serviceInstance) throws RuntimeException;\r\n+\r\n+    // ==================================================================================== //\r\n+\r\n+    // ==================================== Discovery ===================================== //\r\n+\r\n+    /**\r\n+     * Get the default size of pagination query\r\n+     *\r\n+     * @return the default value is 100\r\n+     */\r\n+    default int getDefaultPageSize() {\r\n+        return 100;\r\n+    }\r\n+\r\n+    /**\r\n+     * Gets all service names\r\n+     *\r\n+     * @return non-null read-only {@link Set}\r\n+     */\r\n+    Set<String> getServices();\r\n+\r\n+    /**\r\n+     * Gets all {@link ServiceInstance service instances} by the specified service name.\r\n+     *\r\n+     * @param serviceName the service name\r\n+     * @return non-null {@link List}\r\n+     * @throws NullPointerException if <code>serviceName</code> is <code>null</code>\r\n+     */\r\n+    default List<ServiceInstance> getInstances(String serviceName) throws NullPointerException {\r\n+\r\n+        List<ServiceInstance> allInstances = new LinkedList<>();\r\n+\r\n+        int offset = 0;\r\n+\r\n+        int pageSize = getDefaultPageSize();\r\n+\r\n+        Page<ServiceInstance> page = getInstances(serviceName, offset, pageSize);\r\n+\r\n+        allInstances.addAll(page.getData());\r\n+\r\n+        while (page.hasNext()) {\r\n+            offset += page.getDataSize();\r\n+            page = getInstances(serviceName, offset, pageSize);\r\n+            allInstances.addAll(page.getData());\r\n+        }\r\n+\r\n+        return unmodifiableList(allInstances);\r\n+    }\r\n+\r\n+    /**\r\n+     * Gets the {@link Page pagination} of {@link ServiceInstance service instances} by the specified service name.\r\n+     * It's equal to {@link #getInstances(String, int, int, boolean)} with <code>healthyOnly == true</code>\r\n+     *\r\n+     * @param serviceName the service name\r\n+     * @param offset      the offset of request , the number \"0\" indicates first page\r\n+     * @param pageSize    the number of request, the {@link Integer#MAX_VALUE max value} indicates the range is unlimited\r\n+     * @return non-null {@link Page} object\r\n+     * @throws NullPointerException          if <code>serviceName</code> is <code>null</code>\r\n+     * @throws IllegalArgumentException      if <code>offset</code> or <code>pageSize</code> is negative number\r\n+     * @throws UnsupportedOperationException if not supported\r\n+     */\r\n+    default Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize) throws NullPointerException,\r\n+            IllegalArgumentException {\r\n+        return getInstances(serviceName, offset, pageSize, false);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the {@link Page pagination} of {@link ServiceInstance service instances} by the specified service name.\r\n+     * If <code>healthyOnly == true</code>, filter healthy instances only.\r\n+     *\r\n+     * @param serviceName the service name\r\n+     * @param offset      the offset of request , the number \"0\" indicates first page\r\n+     * @param pageSize    the number of request, the {@link Integer#MAX_VALUE max value} indicates the range is unlimited\r\n+     * @param healthyOnly if <code>true</code> , filter healthy instances only\r\n+     * @return non-null {@link Page} object\r\n+     * @throws NullPointerException          if <code>serviceName</code> is <code>null</code>\r\n+     * @throws IllegalArgumentException      if <code>offset</code> or <code>pageSize</code> is negative number\r\n+     * @throws UnsupportedOperationException if not supported\r\n+     */\r\n+    default Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize, boolean healthyOnly) throws\r\n+            NullPointerException, IllegalArgumentException, UnsupportedOperationException {\r\n+        throw new UnsupportedOperationException(\"Current implementation does not support pagination query method.\");\r\n+    }\r\n+\r\n+    /**\r\n+     * batch-get all {@link ServiceInstance service instances} by the specified service names\r\n+     *\r\n+     * @param serviceNames the multiple service names\r\n+     * @param offset       the offset of request , the number \"0\" indicates first page\r\n+     * @param requestSize  the number of request, the {@link Integer#MAX_VALUE max value} indicates the range is unlimited\r\n+     * @return non-null read-only {@link Map} whose key is the service name and value is\r\n+     * the {@link Page pagination} of {@link ServiceInstance service instances}\r\n+     * @throws NullPointerException          if <code>serviceName</code> is <code>null</code>\r\n+     * @throws IllegalArgumentException      if <code>offset</code> or <code>requestSize</code> is negative number\r\n+     * @throws UnsupportedOperationException if not supported\r\n+     */\r\n+    default Map<String, Page<ServiceInstance>> getInstances(Iterable<String> serviceNames, int offset, int requestSize) throws\r\n+            NullPointerException, IllegalArgumentException {\r\n+        Map<String, Page<ServiceInstance>> instances = new LinkedHashMap<>();\r\n+        for (String serviceName : serviceNames) {\r\n+            instances.put(serviceName, getInstances(serviceName, offset, requestSize));\r\n+        }\r\n+        return unmodifiableMap(instances);\r\n+    }\r\n+\r\n+    /**\r\n+     * Add an instance of {@link ServiceInstancesChangedListener} for specified service\r\n+     * <p>\r\n+     * Default, current method will be invoked by {@link ServiceDiscoveryRegistry#subscribe(URL, NotifyListener)\r\n+     * the ServiceDiscoveryRegistry on the subscription}, and it's mandatory to\r\n+     * {@link EventDispatcher#addEventListener(EventListener) add} the {@link ServiceInstancesChangedListener} argument\r\n+     * into {@link EventDispatcher} whether the subclass implements same approach or not, thus this method is used to\r\n+     * trigger or adapt the vendor's change notification mechanism typically, like Zookeeper Watcher,\r\n+     * Nacos EventListener. If the registry observes the change, It's suggested that the implementation could invoke\r\n+     * {@link #dispatchServiceInstancesChangedEvent(String)} method or variants\r\n+     *\r\n+     * @param listener an instance of {@link ServiceInstancesChangedListener}\r\n+     * @throws NullPointerException\r\n+     * @throws IllegalArgumentException\r\n+     * @see EventPublishingServiceDiscovery\r\n+     * @see EventDispatcher\r\n+     */\r\n+    default void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener)\r\n+            throws NullPointerException, IllegalArgumentException {\r\n+    }\r\n+\r\n+    /**\r\n+     * unsubscribe to instances change event.\r\n+     * @param listener\r\n+     * @throws IllegalArgumentException\r\n+     */\r\n+    default void removeServiceInstancesChangedListener(ServiceInstancesChangedListener listener)\r\n+            throws IllegalArgumentException {\r\n+    }\r\n+\r\n+    /**\r\n+     * Dispatch the {@link ServiceInstancesChangedEvent}\r\n+     *\r\n+     * @param serviceName the name of service whose service instances have been changed\r\n+     */\r\n+    default void dispatchServiceInstancesChangedEvent(String serviceName) {\r\n+        dispatchServiceInstancesChangedEvent(serviceName, getInstances(serviceName));\r\n+    }\r\n+\r\n+    /**\r\n+     * Dispatch the {@link ServiceInstancesChangedEvent}\r\n+     *\r\n+     * @param serviceName       the name of service whose service instances have been changed\r\n+     * @param otherServiceNames the names of other services\r\n+     */\r\n+    default void dispatchServiceInstancesChangedEvent(String serviceName, String... otherServiceNames) {\r\n+        dispatchServiceInstancesChangedEvent(serviceName, getInstances(serviceName));\r\n+        if (otherServiceNames != null) {\r\n+            Stream.of(otherServiceNames)\r\n+                    .filter(StringUtils::isNotEmpty)\r\n+                    .forEach(this::dispatchServiceInstancesChangedEvent);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Dispatch the {@link ServiceInstancesChangedEvent}\r\n+     *\r\n+     * @param serviceName      the name of service whose service instances have been changed\r\n+     * @param serviceInstances the service instances have been changed\r\n+     */\r\n+    default void dispatchServiceInstancesChangedEvent(String serviceName, List<ServiceInstance> serviceInstances) {\r\n+        dispatchServiceInstancesChangedEvent(new ServiceInstancesChangedEvent(serviceName, serviceInstances));\r\n+    }\r\n+\r\n+    /**\r\n+     * Dispatch the {@link ServiceInstancesChangedEvent}\r\n+     *\r\n+     * @param event the {@link ServiceInstancesChangedEvent}\r\n+     */\r\n+    default void dispatchServiceInstancesChangedEvent(ServiceInstancesChangedEvent event) {\r\n+        getDefaultExtension().dispatch(event);\r\n+    }\r\n+\r\n+    // ==================================================================================== //\r\n+\r\n+//    String getKey(URL exportedURL);\r\n+\r\n+    default URL getUrl() {\r\n+        return null;\r\n+    }\r\n+\r\n+    ServiceInstance getLocalInstance();\r\n+\r\n+    /**\r\n+     * A human-readable description of the implementation\r\n+     *\r\n+     * @return The description.\r\n+     */\r\n+    String toString();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/ServiceDiscoveryFactory.java", "source2": "org/apache/dubbo/registry/client/ServiceDiscoveryFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,53 +1,53 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\n-\n-/**\n- * The factory to create {@link ServiceDiscovery}\n- *\n- * @see ServiceDiscovery\n- * @since 2.7.5\n- */\n-@SPI(\"default\")\n-public interface ServiceDiscoveryFactory {\n-\n-    /**\n-     * Get the instance of {@link ServiceDiscovery}\n-     *\n-     * @param registryURL the {@link URL} to connect the registry\n-     * @return non-null\n-     */\n-    ServiceDiscovery getServiceDiscovery(URL registryURL);\n-\n-    /**\n-     * Get the extension instance of {@link ServiceDiscoveryFactory} by {@link URL#getProtocol() the protocol}\n-     *\n-     * @param registryURL the {@link URL} to connect the registry\n-     * @return non-null\n-     */\n-    static ServiceDiscoveryFactory getExtension(URL registryURL) {\n-        String protocol = registryURL.getProtocol();\n-        ExtensionLoader<ServiceDiscoveryFactory> loader = getExtensionLoader(ServiceDiscoveryFactory.class);\n-        return loader.getOrDefaultExtension(protocol);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\r\n+\r\n+/**\r\n+ * The factory to create {@link ServiceDiscovery}\r\n+ *\r\n+ * @see ServiceDiscovery\r\n+ * @since 2.7.5\r\n+ */\r\n+@SPI(\"default\")\r\n+public interface ServiceDiscoveryFactory {\r\n+\r\n+    /**\r\n+     * Get the instance of {@link ServiceDiscovery}\r\n+     *\r\n+     * @param registryURL the {@link URL} to connect the registry\r\n+     * @return non-null\r\n+     */\r\n+    ServiceDiscovery getServiceDiscovery(URL registryURL);\r\n+\r\n+    /**\r\n+     * Get the extension instance of {@link ServiceDiscoveryFactory} by {@link URL#getProtocol() the protocol}\r\n+     *\r\n+     * @param registryURL the {@link URL} to connect the registry\r\n+     * @return non-null\r\n+     */\r\n+    static ServiceDiscoveryFactory getExtension(URL registryURL) {\r\n+        String protocol = registryURL.getProtocol();\r\n+        ExtensionLoader<ServiceDiscoveryFactory> loader = getExtensionLoader(ServiceDiscoveryFactory.class);\r\n+        return loader.getOrDefaultExtension(protocol);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java", "source2": "org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,498 +1,498 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.metadata.MappingChangedEvent;\n-import org.apache.dubbo.metadata.MappingListener;\n-import org.apache.dubbo.metadata.ServiceNameMapping;\n-import org.apache.dubbo.metadata.WritableMetadataService;\n-import org.apache.dubbo.registry.NotifyListener;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\n-import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\n-import org.apache.dubbo.registry.client.metadata.SubscribedURLsSynthesizer;\n-import org.apache.dubbo.registry.support.AbstractRegistryFactory;\n-import org.apache.dubbo.registry.support.FailbackRegistry;\n-\n-import java.util.ArrayList;\n-import java.util.Collections;\n-import java.util.HashMap;\n-import java.util.LinkedHashMap;\n-import java.util.LinkedHashSet;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Objects;\n-import java.util.Set;\n-import java.util.TreeSet;\n-import java.util.stream.Collectors;\n-\n-import static java.lang.String.format;\n-import static java.util.Collections.emptySet;\n-import static java.util.Collections.unmodifiableSet;\n-import static java.util.stream.Collectors.toSet;\n-import static java.util.stream.Stream.of;\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_CHAR_SEPARATOR;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.MAPPING_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;\n-import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.PROVIDED_BY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_CLUSTER_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_TYPE_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.SERVICE_REGISTRY_TYPE;\n-import static org.apache.dubbo.common.constants.RegistryConstants.SUBSCRIBED_SERVICE_NAMES_KEY;\n-import static org.apache.dubbo.common.function.ThrowableAction.execute;\n-import static org.apache.dubbo.common.utils.CollectionUtils.isEmpty;\n-import static org.apache.dubbo.common.utils.StringUtils.isBlank;\n-import static org.apache.dubbo.registry.client.ServiceDiscoveryFactory.getExtension;\n-import static org.apache.dubbo.rpc.Constants.ID_KEY;\n-\n-/**\n- * Being different to the traditional registry, {@link ServiceDiscoveryRegistry} that is a new service-oriented\n- * {@link Registry} based on {@link ServiceDiscovery}, it will not interact in the external registry directly,\n- * but store the {@link URL urls} that Dubbo services exported and referenced into {@link WritableMetadataService}\n- * when {@link #register(URL)} and {@link #subscribe(URL, NotifyListener)} methods are executed. After that the exported\n- * {@link URL urls} can be get from {@link WritableMetadataService#getExportedURLs()} and its variant methods. In contrast,\n- * {@link WritableMetadataService#getSubscribedURLs()} method offers the subscribed {@link URL URLs}.\n- * <p>\n- * Every {@link ServiceDiscoveryRegistry} object has its own {@link ServiceDiscovery} instance that was initialized\n- * under {@link #ServiceDiscoveryRegistry(URL) the construction}. As the primary argument of constructor , the\n- * {@link URL} of connection the registry decides what the kind of ServiceDiscovery is. Generally, each\n- * protocol associates with a kind of {@link ServiceDiscovery}'s implementation if present, or the\n- * {@link FileSystemServiceDiscovery} will be the default one. Obviously, it's also allowed to extend\n- * {@link ServiceDiscovery} using {@link SPI the Dubbo SPI}.\n- * In contrast, current {@link ServiceInstance service instance} will not be registered to the registry whether any\n- * Dubbo service is exported or not.\n- * <p>\n- *\n- * @see ServiceDiscovery\n- * @see FailbackRegistry\n- * @see WritableMetadataService\n- * @since 2.7.5\n- */\n-public class ServiceDiscoveryRegistry implements Registry {\n-\n-    protected final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    private final ServiceDiscovery serviceDiscovery;\n-\n-    private final Set<String> subscribedServices;\n-\n-    private final ServiceNameMapping serviceNameMapping;\n-\n-    private final WritableMetadataService writableMetadataService;\n-\n-    private final Set<String> registeredListeners = new LinkedHashSet<>();\n-\n-    /* apps - listener */\n-    private final Map<String, ServiceInstancesChangedListener> serviceListeners = new HashMap<>();\n-    private final Map<String, String> serviceToAppsMapping = new HashMap<>();\n-\n-    private URL registryURL;\n-\n-    /**\n-     * A cache for all URLs of services that the subscribed services exported\n-     * The key is the service name\n-     * The value is a nested {@link Map} whose key is the revision and value is all URLs of services\n-     */\n-    private final Map<String, Map<String, List<URL>>> serviceRevisionExportedURLsCache = new LinkedHashMap<>();\n-\n-    public ServiceDiscoveryRegistry(URL registryURL) {\n-        this.registryURL = registryURL;\n-        this.serviceDiscovery = createServiceDiscovery(registryURL);\n-        this.subscribedServices = parseServices(registryURL.getParameter(SUBSCRIBED_SERVICE_NAMES_KEY));\n-        this.serviceNameMapping = ServiceNameMapping.getExtension(registryURL.getParameter(MAPPING_KEY));\n-        this.writableMetadataService = WritableMetadataService.getDefaultExtension();\n-    }\n-\n-    public ServiceDiscovery getServiceDiscovery() {\n-        return serviceDiscovery;\n-    }\n-\n-    /**\n-     * Create the {@link ServiceDiscovery} from the registry {@link URL}\n-     *\n-     * @param registryURL the {@link URL} to connect the registry\n-     * @return non-null\n-     */\n-    protected ServiceDiscovery createServiceDiscovery(URL registryURL) {\n-        ServiceDiscovery originalServiceDiscovery = getServiceDiscovery(registryURL);\n-        ServiceDiscovery serviceDiscovery = enhanceEventPublishing(originalServiceDiscovery);\n-        execute(() -> {\n-            serviceDiscovery.initialize(registryURL.addParameter(INTERFACE_KEY, ServiceDiscovery.class.getName())\n-                    .removeParameter(REGISTRY_TYPE_KEY));\n-        });\n-        return serviceDiscovery;\n-    }\n-\n-    private List<SubscribedURLsSynthesizer> initSubscribedURLsSynthesizers() {\n-        ExtensionLoader<SubscribedURLsSynthesizer> loader = ExtensionLoader.getExtensionLoader(SubscribedURLsSynthesizer.class);\n-        return Collections.unmodifiableList(new ArrayList<>(loader.getSupportedExtensionInstances()));\n-    }\n-\n-    /**\n-     * Get the instance {@link ServiceDiscovery} from the registry {@link URL} using\n-     * {@link ServiceDiscoveryFactory} SPI\n-     *\n-     * @param registryURL the {@link URL} to connect the registry\n-     * @return\n-     */\n-    private ServiceDiscovery getServiceDiscovery(URL registryURL) {\n-        ServiceDiscoveryFactory factory = getExtension(registryURL);\n-        return factory.getServiceDiscovery(registryURL);\n-    }\n-\n-    /**\n-     * Enhance the original {@link ServiceDiscovery} with event publishing feature\n-     *\n-     * @param original the original {@link ServiceDiscovery}\n-     * @return {@link EventPublishingServiceDiscovery} instance\n-     */\n-    private ServiceDiscovery enhanceEventPublishing(ServiceDiscovery original) {\n-        return new EventPublishingServiceDiscovery(original);\n-    }\n-\n-    protected boolean shouldRegister(URL providerURL) {\n-\n-        String side = providerURL.getParameter(SIDE_KEY);\n-\n-        boolean should = PROVIDER_SIDE.equals(side); // Only register the Provider.\n-\n-        if (!should) {\n-            if (logger.isDebugEnabled()) {\n-                logger.debug(String.format(\"The URL[%s] should not be registered.\", providerURL.toString()));\n-            }\n-        }\n-\n-        return should;\n-    }\n-\n-    protected boolean shouldSubscribe(URL subscribedURL) {\n-        return !shouldRegister(subscribedURL);\n-    }\n-\n-    @Override\n-    public final void register(URL url) {\n-        if (!shouldRegister(url)) { // Should Not Register\n-            return;\n-        }\n-        doRegister(url);\n-    }\n-\n-    public void doRegister(URL url) {\n-        String registryCluster = serviceDiscovery.getUrl().getParameter(ID_KEY);\n-        if (registryCluster != null && url.getParameter(REGISTRY_CLUSTER_KEY) == null) {\n-            url = url.addParameter(REGISTRY_CLUSTER_KEY, registryCluster);\n-        }\n-        if (writableMetadataService.exportURL(url)) {\n-            if (logger.isInfoEnabled()) {\n-                logger.info(format(\"The URL[%s] registered successfully.\", url.toString()));\n-            }\n-        } else {\n-            if (logger.isWarnEnabled()) {\n-                logger.info(format(\"The URL[%s] has been registered.\", url.toString()));\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public final void unregister(URL url) {\n-        if (!shouldRegister(url)) {\n-            return;\n-        }\n-        doUnregister(url);\n-    }\n-\n-    public void doUnregister(URL url) {\n-        String registryCluster = serviceDiscovery.getUrl().getParameter(ID_KEY);\n-        if (registryCluster != null && url.getParameter(REGISTRY_CLUSTER_KEY) == null) {\n-            url = url.addParameter(REGISTRY_CLUSTER_KEY, registryCluster);\n-        }\n-        if (writableMetadataService.unexportURL(url)) {\n-            if (logger.isInfoEnabled()) {\n-                logger.info(format(\"The URL[%s] deregistered successfully.\", url.toString()));\n-            }\n-        } else {\n-            if (logger.isWarnEnabled()) {\n-                logger.info(format(\"The URL[%s] has been deregistered.\", url.toString()));\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public final void subscribe(URL url, NotifyListener listener) {\n-        if (!shouldSubscribe(url)) { // Should Not Subscribe\n-            return;\n-        }\n-        String registryCluster = serviceDiscovery.getUrl().getParameter(ID_KEY);\n-        if (registryCluster != null && url.getParameter(REGISTRY_CLUSTER_KEY) == null) {\n-            url = url.addParameter(REGISTRY_CLUSTER_KEY, registryCluster);\n-        }\n-        doSubscribe(url, listener);\n-    }\n-\n-    public void doSubscribe(URL url, NotifyListener listener) {\n-        writableMetadataService.subscribeURL(url);\n-\n-        Set<String> serviceNames = getServices(url, listener);\n-\n-        if (CollectionUtils.isEmpty(serviceNames)) {\n-            logger.warn(\"Should has at least one way to know which services this interface belongs to, subscription url: \" + url);\n-            return;\n-        }\n-\n-        subscribeURLs(url, listener, serviceNames);\n-    }\n-\n-    @Override\n-    public final void unsubscribe(URL url, NotifyListener listener) {\n-        if (!shouldSubscribe(url)) { // Should Not Subscribe\n-            return;\n-        }\n-        String registryCluster = serviceDiscovery.getUrl().getParameter(ID_KEY);\n-        if (registryCluster != null && url.getParameter(REGISTRY_CLUSTER_KEY) == null) {\n-            url = url.addParameter(REGISTRY_CLUSTER_KEY, registryCluster);\n-        }\n-        doUnsubscribe(url, listener);\n-    }\n-\n-    public void doUnsubscribe(URL url, NotifyListener listener) {\n-        writableMetadataService.unsubscribeURL(url);\n-        String protocolServiceKey = url.getServiceKey() + GROUP_CHAR_SEPARATOR + url.getParameter(PROTOCOL_KEY, DUBBO);\n-        String serviceNamesKey = serviceToAppsMapping.remove(protocolServiceKey);\n-        ServiceInstancesChangedListener instancesChangedListener = serviceListeners.get(serviceNamesKey);\n-        instancesChangedListener.removeListener(protocolServiceKey);\n-    }\n-\n-    @Override\n-    public List<URL> lookup(URL url) {\n-        throw new UnsupportedOperationException(\"\");\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return registryURL;\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        return !serviceDiscovery.getServices().isEmpty();\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        AbstractRegistryFactory.removeDestroyedRegistry(this);\n-        execute(() -> {\n-            // stop ServiceDiscovery\n-            serviceDiscovery.destroy();\n-        });\n-    }\n-\n-    protected void subscribeURLs(URL url, NotifyListener listener, Set<String> serviceNames) {\n-        String serviceNamesKey = serviceNames.toString();\n-        String protocolServiceKey = url.getServiceKey() + GROUP_CHAR_SEPARATOR + url.getParameter(PROTOCOL_KEY, DUBBO);\n-        serviceToAppsMapping.put(protocolServiceKey, serviceNamesKey);\n-\n-        // register ServiceInstancesChangedListener\n-        ServiceInstancesChangedListener serviceListener = serviceListeners.computeIfAbsent(serviceNamesKey,\n-                k -> new ServiceInstancesChangedListener(serviceNames, serviceDiscovery));\n-        serviceListener.setUrl(url);\n-        listener.addServiceListener(serviceListener);\n-\n-        serviceListener.addListener(protocolServiceKey, listener);\n-        registerServiceInstancesChangedListener(url, serviceListener);\n-\n-        // FIXME: This will cause redundant duplicate notifications\n-        serviceNames.forEach(serviceName -> {\n-            List<ServiceInstance> serviceInstances = serviceDiscovery.getInstances(serviceName);\n-            if (CollectionUtils.isNotEmpty(serviceInstances)) {\n-                serviceListener.onEvent(new ServiceInstancesChangedEvent(serviceName, serviceInstances));\n-            } else {\n-                logger.info(\"getInstances by serviceName=\" + serviceName + \" is empty, waiting for serviceListener callback. url=\" + url);\n-            }\n-        });\n-\n-        listener.notify(serviceListener.getUrls(protocolServiceKey));\n-\n-    }\n-\n-    /**\n-     * Register the {@link ServiceInstancesChangedListener} If absent\n-     *\n-     * @param url      {@link URL}\n-     * @param listener the {@link ServiceInstancesChangedListener}\n-     */\n-    private void registerServiceInstancesChangedListener(URL url, ServiceInstancesChangedListener listener) {\n-        String listenerId = createListenerId(url, listener);\n-        if (registeredListeners.add(listenerId)) {\n-            serviceDiscovery.addServiceInstancesChangedListener(listener);\n-        }\n-    }\n-\n-    private String createListenerId(URL url, ServiceInstancesChangedListener listener) {\n-        return listener.getServiceNames() + \":\" + url.toString(VERSION_KEY, GROUP_KEY, PROTOCOL_KEY);\n-    }\n-\n-    /**\n-     * 1.developer explicitly specifies the application name this interface belongs to\n-     * 2.check Interface-App mapping\n-     * 3.use the services specified in registry url.\n-     *\n-     * @param subscribedURL\n-     * @return\n-     */\n-    protected Set<String> getServices(URL subscribedURL, final NotifyListener listener) {\n-        Set<String> subscribedServices = new TreeSet<>();\n-\n-        String serviceNames = subscribedURL.getParameter(PROVIDED_BY);\n-        if (StringUtils.isNotEmpty(serviceNames)) {\n-            logger.info(subscribedURL.getServiceInterface() + \" mapping to \" + serviceNames + \" instructed by provided-by set by user.\");\n-            subscribedServices.addAll(parseServices(serviceNames));\n-        }\n-\n-        if (isEmpty(subscribedServices)) {\n-            Set<String> mappedServices = findMappedServices(subscribedURL, new DefaultMappingListener(subscribedURL, subscribedServices, listener));\n-            logger.info(subscribedURL.getServiceInterface() + \" mapping to \" + serviceNames + \" instructed by remote metadata center.\");\n-            subscribedServices.addAll(mappedServices);\n-            if (isEmpty(subscribedServices)) {\n-                logger.info(subscribedURL.getServiceInterface() + \" mapping to \" + serviceNames + \" by default.\");\n-                subscribedServices.addAll(getSubscribedServices());\n-            }\n-        }\n-        return subscribedServices;\n-    }\n-\n-    public static Set<String> parseServices(String literalServices) {\n-        return isBlank(literalServices) ? emptySet() :\n-                unmodifiableSet(of(literalServices.split(\",\"))\n-                        .map(String::trim)\n-                        .filter(StringUtils::isNotEmpty)\n-                        .collect(toSet()));\n-    }\n-\n-    /**\n-     * Get the subscribed service names\n-     *\n-     * @return non-null\n-     */\n-    public Set<String> getSubscribedServices() {\n-        return subscribedServices;\n-    }\n-\n-    /**\n-     * Get the mapped services name by the specified {@link URL}\n-     *\n-     * @param subscribedURL\n-     * @return\n-     */\n-    protected Set<String> findMappedServices(URL subscribedURL, MappingListener listener) {\n-        return serviceNameMapping.getAndListen(subscribedURL, listener);\n-    }\n-\n-    /**\n-     * Create an instance of {@link ServiceDiscoveryRegistry} if supported\n-     *\n-     * @param registryURL the {@link URL url} of registry\n-     * @return <code>null</code> if not supported\n-     */\n-    public static ServiceDiscoveryRegistry create(URL registryURL) {\n-        return supports(registryURL) ? new ServiceDiscoveryRegistry(registryURL) : null;\n-    }\n-\n-    /**\n-     * Supports or not ?\n-     *\n-     * @param registryURL the {@link URL url} of registry\n-     * @return if supported, return <code>true</code>, or <code>false</code>\n-     */\n-    public static boolean supports(URL registryURL) {\n-        return SERVICE_REGISTRY_TYPE.equalsIgnoreCase(registryURL.getParameter(REGISTRY_TYPE_KEY));\n-    }\n-\n-    private static List<URL> filterSubscribedURLs(URL subscribedURL, List<URL> exportedURLs) {\n-        return exportedURLs.stream()\n-                .filter(url -> isSameServiceInterface(subscribedURL, url))\n-                .filter(url -> isSameParameter(subscribedURL, url, VERSION_KEY))\n-                .filter(url -> isSameParameter(subscribedURL, url, GROUP_KEY))\n-                .filter(url -> isCompatibleProtocol(subscribedURL, url))\n-                .collect(Collectors.toList());\n-    }\n-\n-    private static boolean isSameServiceInterface(URL one, URL another) {\n-        return Objects.equals(one.getServiceInterface(), another.getServiceInterface());\n-    }\n-\n-    private static boolean isSameParameter(URL one, URL another, String key) {\n-        return Objects.equals(one.getParameter(key), another.getParameter(key));\n-    }\n-\n-    private static boolean isCompatibleProtocol(URL one, URL another) {\n-        String protocol = one.getParameter(PROTOCOL_KEY);\n-        return isCompatibleProtocol(protocol, another);\n-    }\n-\n-    private static boolean isCompatibleProtocol(String protocol, URL targetURL) {\n-        return protocol == null || Objects.equals(protocol, targetURL.getParameter(PROTOCOL_KEY))\n-                || Objects.equals(protocol, targetURL.getProtocol());\n-    }\n-\n-    private class DefaultMappingListener implements MappingListener {\n-        private URL url;\n-        private Set<String> oldApps;\n-        private NotifyListener listener;\n-\n-        public DefaultMappingListener(URL subscribedURL, Set<String> serviceNames, NotifyListener listener) {\n-            this.url = subscribedURL;\n-            this.oldApps = serviceNames;\n-            this.listener = listener;\n-        }\n-\n-        @Override\n-        public void onEvent(MappingChangedEvent event) {\n-            Set<String> newApps = event.getApps();\n-            Set<String> tempOldApps = oldApps;\n-            oldApps = newApps;\n-\n-            if (CollectionUtils.isEmpty(newApps)) {\n-                return;\n-            }\n-\n-            if (CollectionUtils.isEmpty(tempOldApps) && newApps.size() > 0) {\n-                subscribeURLs(url, listener, newApps);\n-                return;\n-            }\n-\n-            for (String newAppName : newApps) {\n-                if (!tempOldApps.contains(newAppName)) {\n-                    subscribeURLs(url, listener, newApps);\n-                    return;\n-                }\n-            }\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.metadata.MappingChangedEvent;\r\n+import org.apache.dubbo.metadata.MappingListener;\r\n+import org.apache.dubbo.metadata.ServiceNameMapping;\r\n+import org.apache.dubbo.metadata.WritableMetadataService;\r\n+import org.apache.dubbo.registry.NotifyListener;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\r\n+import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\r\n+import org.apache.dubbo.registry.client.metadata.SubscribedURLsSynthesizer;\r\n+import org.apache.dubbo.registry.support.AbstractRegistryFactory;\r\n+import org.apache.dubbo.registry.support.FailbackRegistry;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Collections;\r\n+import java.util.HashMap;\r\n+import java.util.LinkedHashMap;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Objects;\r\n+import java.util.Set;\r\n+import java.util.TreeSet;\r\n+import java.util.stream.Collectors;\r\n+\r\n+import static java.lang.String.format;\r\n+import static java.util.Collections.emptySet;\r\n+import static java.util.Collections.unmodifiableSet;\r\n+import static java.util.stream.Collectors.toSet;\r\n+import static java.util.stream.Stream.of;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_CHAR_SEPARATOR;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.MAPPING_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.PROVIDED_BY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_CLUSTER_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_TYPE_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.SERVICE_REGISTRY_TYPE;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.SUBSCRIBED_SERVICE_NAMES_KEY;\r\n+import static org.apache.dubbo.common.function.ThrowableAction.execute;\r\n+import static org.apache.dubbo.common.utils.CollectionUtils.isEmpty;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isBlank;\r\n+import static org.apache.dubbo.registry.client.ServiceDiscoveryFactory.getExtension;\r\n+import static org.apache.dubbo.rpc.Constants.ID_KEY;\r\n+\r\n+/**\r\n+ * Being different to the traditional registry, {@link ServiceDiscoveryRegistry} that is a new service-oriented\r\n+ * {@link Registry} based on {@link ServiceDiscovery}, it will not interact in the external registry directly,\r\n+ * but store the {@link URL urls} that Dubbo services exported and referenced into {@link WritableMetadataService}\r\n+ * when {@link #register(URL)} and {@link #subscribe(URL, NotifyListener)} methods are executed. After that the exported\r\n+ * {@link URL urls} can be get from {@link WritableMetadataService#getExportedURLs()} and its variant methods. In contrast,\r\n+ * {@link WritableMetadataService#getSubscribedURLs()} method offers the subscribed {@link URL URLs}.\r\n+ * <p>\r\n+ * Every {@link ServiceDiscoveryRegistry} object has its own {@link ServiceDiscovery} instance that was initialized\r\n+ * under {@link #ServiceDiscoveryRegistry(URL) the construction}. As the primary argument of constructor , the\r\n+ * {@link URL} of connection the registry decides what the kind of ServiceDiscovery is. Generally, each\r\n+ * protocol associates with a kind of {@link ServiceDiscovery}'s implementation if present, or the\r\n+ * {@link FileSystemServiceDiscovery} will be the default one. Obviously, it's also allowed to extend\r\n+ * {@link ServiceDiscovery} using {@link SPI the Dubbo SPI}.\r\n+ * In contrast, current {@link ServiceInstance service instance} will not be registered to the registry whether any\r\n+ * Dubbo service is exported or not.\r\n+ * <p>\r\n+ *\r\n+ * @see ServiceDiscovery\r\n+ * @see FailbackRegistry\r\n+ * @see WritableMetadataService\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ServiceDiscoveryRegistry implements Registry {\r\n+\r\n+    protected final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    private final ServiceDiscovery serviceDiscovery;\r\n+\r\n+    private final Set<String> subscribedServices;\r\n+\r\n+    private final ServiceNameMapping serviceNameMapping;\r\n+\r\n+    private final WritableMetadataService writableMetadataService;\r\n+\r\n+    private final Set<String> registeredListeners = new LinkedHashSet<>();\r\n+\r\n+    /* apps - listener */\r\n+    private final Map<String, ServiceInstancesChangedListener> serviceListeners = new HashMap<>();\r\n+    private final Map<String, String> serviceToAppsMapping = new HashMap<>();\r\n+\r\n+    private URL registryURL;\r\n+\r\n+    /**\r\n+     * A cache for all URLs of services that the subscribed services exported\r\n+     * The key is the service name\r\n+     * The value is a nested {@link Map} whose key is the revision and value is all URLs of services\r\n+     */\r\n+    private final Map<String, Map<String, List<URL>>> serviceRevisionExportedURLsCache = new LinkedHashMap<>();\r\n+\r\n+    public ServiceDiscoveryRegistry(URL registryURL) {\r\n+        this.registryURL = registryURL;\r\n+        this.serviceDiscovery = createServiceDiscovery(registryURL);\r\n+        this.subscribedServices = parseServices(registryURL.getParameter(SUBSCRIBED_SERVICE_NAMES_KEY));\r\n+        this.serviceNameMapping = ServiceNameMapping.getExtension(registryURL.getParameter(MAPPING_KEY));\r\n+        this.writableMetadataService = WritableMetadataService.getDefaultExtension();\r\n+    }\r\n+\r\n+    public ServiceDiscovery getServiceDiscovery() {\r\n+        return serviceDiscovery;\r\n+    }\r\n+\r\n+    /**\r\n+     * Create the {@link ServiceDiscovery} from the registry {@link URL}\r\n+     *\r\n+     * @param registryURL the {@link URL} to connect the registry\r\n+     * @return non-null\r\n+     */\r\n+    protected ServiceDiscovery createServiceDiscovery(URL registryURL) {\r\n+        ServiceDiscovery originalServiceDiscovery = getServiceDiscovery(registryURL);\r\n+        ServiceDiscovery serviceDiscovery = enhanceEventPublishing(originalServiceDiscovery);\r\n+        execute(() -> {\r\n+            serviceDiscovery.initialize(registryURL.addParameter(INTERFACE_KEY, ServiceDiscovery.class.getName())\r\n+                    .removeParameter(REGISTRY_TYPE_KEY));\r\n+        });\r\n+        return serviceDiscovery;\r\n+    }\r\n+\r\n+    private List<SubscribedURLsSynthesizer> initSubscribedURLsSynthesizers() {\r\n+        ExtensionLoader<SubscribedURLsSynthesizer> loader = ExtensionLoader.getExtensionLoader(SubscribedURLsSynthesizer.class);\r\n+        return Collections.unmodifiableList(new ArrayList<>(loader.getSupportedExtensionInstances()));\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the instance {@link ServiceDiscovery} from the registry {@link URL} using\r\n+     * {@link ServiceDiscoveryFactory} SPI\r\n+     *\r\n+     * @param registryURL the {@link URL} to connect the registry\r\n+     * @return\r\n+     */\r\n+    private ServiceDiscovery getServiceDiscovery(URL registryURL) {\r\n+        ServiceDiscoveryFactory factory = getExtension(registryURL);\r\n+        return factory.getServiceDiscovery(registryURL);\r\n+    }\r\n+\r\n+    /**\r\n+     * Enhance the original {@link ServiceDiscovery} with event publishing feature\r\n+     *\r\n+     * @param original the original {@link ServiceDiscovery}\r\n+     * @return {@link EventPublishingServiceDiscovery} instance\r\n+     */\r\n+    private ServiceDiscovery enhanceEventPublishing(ServiceDiscovery original) {\r\n+        return new EventPublishingServiceDiscovery(original);\r\n+    }\r\n+\r\n+    protected boolean shouldRegister(URL providerURL) {\r\n+\r\n+        String side = providerURL.getParameter(SIDE_KEY);\r\n+\r\n+        boolean should = PROVIDER_SIDE.equals(side); // Only register the Provider.\r\n+\r\n+        if (!should) {\r\n+            if (logger.isDebugEnabled()) {\r\n+                logger.debug(String.format(\"The URL[%s] should not be registered.\", providerURL.toString()));\r\n+            }\r\n+        }\r\n+\r\n+        return should;\r\n+    }\r\n+\r\n+    protected boolean shouldSubscribe(URL subscribedURL) {\r\n+        return !shouldRegister(subscribedURL);\r\n+    }\r\n+\r\n+    @Override\r\n+    public final void register(URL url) {\r\n+        if (!shouldRegister(url)) { // Should Not Register\r\n+            return;\r\n+        }\r\n+        doRegister(url);\r\n+    }\r\n+\r\n+    public void doRegister(URL url) {\r\n+        String registryCluster = serviceDiscovery.getUrl().getParameter(ID_KEY);\r\n+        if (registryCluster != null && url.getParameter(REGISTRY_CLUSTER_KEY) == null) {\r\n+            url = url.addParameter(REGISTRY_CLUSTER_KEY, registryCluster);\r\n+        }\r\n+        if (writableMetadataService.exportURL(url)) {\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(format(\"The URL[%s] registered successfully.\", url.toString()));\r\n+            }\r\n+        } else {\r\n+            if (logger.isWarnEnabled()) {\r\n+                logger.info(format(\"The URL[%s] has been registered.\", url.toString()));\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public final void unregister(URL url) {\r\n+        if (!shouldRegister(url)) {\r\n+            return;\r\n+        }\r\n+        doUnregister(url);\r\n+    }\r\n+\r\n+    public void doUnregister(URL url) {\r\n+        String registryCluster = serviceDiscovery.getUrl().getParameter(ID_KEY);\r\n+        if (registryCluster != null && url.getParameter(REGISTRY_CLUSTER_KEY) == null) {\r\n+            url = url.addParameter(REGISTRY_CLUSTER_KEY, registryCluster);\r\n+        }\r\n+        if (writableMetadataService.unexportURL(url)) {\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(format(\"The URL[%s] deregistered successfully.\", url.toString()));\r\n+            }\r\n+        } else {\r\n+            if (logger.isWarnEnabled()) {\r\n+                logger.info(format(\"The URL[%s] has been deregistered.\", url.toString()));\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public final void subscribe(URL url, NotifyListener listener) {\r\n+        if (!shouldSubscribe(url)) { // Should Not Subscribe\r\n+            return;\r\n+        }\r\n+        String registryCluster = serviceDiscovery.getUrl().getParameter(ID_KEY);\r\n+        if (registryCluster != null && url.getParameter(REGISTRY_CLUSTER_KEY) == null) {\r\n+            url = url.addParameter(REGISTRY_CLUSTER_KEY, registryCluster);\r\n+        }\r\n+        doSubscribe(url, listener);\r\n+    }\r\n+\r\n+    public void doSubscribe(URL url, NotifyListener listener) {\r\n+        writableMetadataService.subscribeURL(url);\r\n+\r\n+        Set<String> serviceNames = getServices(url, listener);\r\n+\r\n+        if (CollectionUtils.isEmpty(serviceNames)) {\r\n+            logger.warn(\"Should has at least one way to know which services this interface belongs to, subscription url: \" + url);\r\n+            return;\r\n+        }\r\n+\r\n+        subscribeURLs(url, listener, serviceNames);\r\n+    }\r\n+\r\n+    @Override\r\n+    public final void unsubscribe(URL url, NotifyListener listener) {\r\n+        if (!shouldSubscribe(url)) { // Should Not Subscribe\r\n+            return;\r\n+        }\r\n+        String registryCluster = serviceDiscovery.getUrl().getParameter(ID_KEY);\r\n+        if (registryCluster != null && url.getParameter(REGISTRY_CLUSTER_KEY) == null) {\r\n+            url = url.addParameter(REGISTRY_CLUSTER_KEY, registryCluster);\r\n+        }\r\n+        doUnsubscribe(url, listener);\r\n+    }\r\n+\r\n+    public void doUnsubscribe(URL url, NotifyListener listener) {\r\n+        writableMetadataService.unsubscribeURL(url);\r\n+        String protocolServiceKey = url.getServiceKey() + GROUP_CHAR_SEPARATOR + url.getParameter(PROTOCOL_KEY, DUBBO);\r\n+        String serviceNamesKey = serviceToAppsMapping.remove(protocolServiceKey);\r\n+        ServiceInstancesChangedListener instancesChangedListener = serviceListeners.get(serviceNamesKey);\r\n+        instancesChangedListener.removeListener(protocolServiceKey);\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<URL> lookup(URL url) {\r\n+        throw new UnsupportedOperationException(\"\");\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return registryURL;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        return !serviceDiscovery.getServices().isEmpty();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        AbstractRegistryFactory.removeDestroyedRegistry(this);\r\n+        execute(() -> {\r\n+            // stop ServiceDiscovery\r\n+            serviceDiscovery.destroy();\r\n+        });\r\n+    }\r\n+\r\n+    protected void subscribeURLs(URL url, NotifyListener listener, Set<String> serviceNames) {\r\n+        String serviceNamesKey = serviceNames.toString();\r\n+        String protocolServiceKey = url.getServiceKey() + GROUP_CHAR_SEPARATOR + url.getParameter(PROTOCOL_KEY, DUBBO);\r\n+        serviceToAppsMapping.put(protocolServiceKey, serviceNamesKey);\r\n+\r\n+        // register ServiceInstancesChangedListener\r\n+        ServiceInstancesChangedListener serviceListener = serviceListeners.computeIfAbsent(serviceNamesKey,\r\n+                k -> new ServiceInstancesChangedListener(serviceNames, serviceDiscovery));\r\n+        serviceListener.setUrl(url);\r\n+        listener.addServiceListener(serviceListener);\r\n+\r\n+        serviceListener.addListener(protocolServiceKey, listener);\r\n+        registerServiceInstancesChangedListener(url, serviceListener);\r\n+\r\n+        // FIXME: This will cause redundant duplicate notifications\r\n+        serviceNames.forEach(serviceName -> {\r\n+            List<ServiceInstance> serviceInstances = serviceDiscovery.getInstances(serviceName);\r\n+            if (CollectionUtils.isNotEmpty(serviceInstances)) {\r\n+                serviceListener.onEvent(new ServiceInstancesChangedEvent(serviceName, serviceInstances));\r\n+            } else {\r\n+                logger.info(\"getInstances by serviceName=\" + serviceName + \" is empty, waiting for serviceListener callback. url=\" + url);\r\n+            }\r\n+        });\r\n+\r\n+        listener.notify(serviceListener.getUrls(protocolServiceKey));\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * Register the {@link ServiceInstancesChangedListener} If absent\r\n+     *\r\n+     * @param url      {@link URL}\r\n+     * @param listener the {@link ServiceInstancesChangedListener}\r\n+     */\r\n+    private void registerServiceInstancesChangedListener(URL url, ServiceInstancesChangedListener listener) {\r\n+        String listenerId = createListenerId(url, listener);\r\n+        if (registeredListeners.add(listenerId)) {\r\n+            serviceDiscovery.addServiceInstancesChangedListener(listener);\r\n+        }\r\n+    }\r\n+\r\n+    private String createListenerId(URL url, ServiceInstancesChangedListener listener) {\r\n+        return listener.getServiceNames() + \":\" + url.toString(VERSION_KEY, GROUP_KEY, PROTOCOL_KEY);\r\n+    }\r\n+\r\n+    /**\r\n+     * 1.developer explicitly specifies the application name this interface belongs to\r\n+     * 2.check Interface-App mapping\r\n+     * 3.use the services specified in registry url.\r\n+     *\r\n+     * @param subscribedURL\r\n+     * @return\r\n+     */\r\n+    protected Set<String> getServices(URL subscribedURL, final NotifyListener listener) {\r\n+        Set<String> subscribedServices = new TreeSet<>();\r\n+\r\n+        String serviceNames = subscribedURL.getParameter(PROVIDED_BY);\r\n+        if (StringUtils.isNotEmpty(serviceNames)) {\r\n+            logger.info(subscribedURL.getServiceInterface() + \" mapping to \" + serviceNames + \" instructed by provided-by set by user.\");\r\n+            subscribedServices.addAll(parseServices(serviceNames));\r\n+        }\r\n+\r\n+        if (isEmpty(subscribedServices)) {\r\n+            Set<String> mappedServices = findMappedServices(subscribedURL, new DefaultMappingListener(subscribedURL, subscribedServices, listener));\r\n+            logger.info(subscribedURL.getServiceInterface() + \" mapping to \" + serviceNames + \" instructed by remote metadata center.\");\r\n+            subscribedServices.addAll(mappedServices);\r\n+            if (isEmpty(subscribedServices)) {\r\n+                logger.info(subscribedURL.getServiceInterface() + \" mapping to \" + serviceNames + \" by default.\");\r\n+                subscribedServices.addAll(getSubscribedServices());\r\n+            }\r\n+        }\r\n+        return subscribedServices;\r\n+    }\r\n+\r\n+    public static Set<String> parseServices(String literalServices) {\r\n+        return isBlank(literalServices) ? emptySet() :\r\n+                unmodifiableSet(of(literalServices.split(\",\"))\r\n+                        .map(String::trim)\r\n+                        .filter(StringUtils::isNotEmpty)\r\n+                        .collect(toSet()));\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the subscribed service names\r\n+     *\r\n+     * @return non-null\r\n+     */\r\n+    public Set<String> getSubscribedServices() {\r\n+        return subscribedServices;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the mapped services name by the specified {@link URL}\r\n+     *\r\n+     * @param subscribedURL\r\n+     * @return\r\n+     */\r\n+    protected Set<String> findMappedServices(URL subscribedURL, MappingListener listener) {\r\n+        return serviceNameMapping.getAndListen(subscribedURL, listener);\r\n+    }\r\n+\r\n+    /**\r\n+     * Create an instance of {@link ServiceDiscoveryRegistry} if supported\r\n+     *\r\n+     * @param registryURL the {@link URL url} of registry\r\n+     * @return <code>null</code> if not supported\r\n+     */\r\n+    public static ServiceDiscoveryRegistry create(URL registryURL) {\r\n+        return supports(registryURL) ? new ServiceDiscoveryRegistry(registryURL) : null;\r\n+    }\r\n+\r\n+    /**\r\n+     * Supports or not ?\r\n+     *\r\n+     * @param registryURL the {@link URL url} of registry\r\n+     * @return if supported, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    public static boolean supports(URL registryURL) {\r\n+        return SERVICE_REGISTRY_TYPE.equalsIgnoreCase(registryURL.getParameter(REGISTRY_TYPE_KEY));\r\n+    }\r\n+\r\n+    private static List<URL> filterSubscribedURLs(URL subscribedURL, List<URL> exportedURLs) {\r\n+        return exportedURLs.stream()\r\n+                .filter(url -> isSameServiceInterface(subscribedURL, url))\r\n+                .filter(url -> isSameParameter(subscribedURL, url, VERSION_KEY))\r\n+                .filter(url -> isSameParameter(subscribedURL, url, GROUP_KEY))\r\n+                .filter(url -> isCompatibleProtocol(subscribedURL, url))\r\n+                .collect(Collectors.toList());\r\n+    }\r\n+\r\n+    private static boolean isSameServiceInterface(URL one, URL another) {\r\n+        return Objects.equals(one.getServiceInterface(), another.getServiceInterface());\r\n+    }\r\n+\r\n+    private static boolean isSameParameter(URL one, URL another, String key) {\r\n+        return Objects.equals(one.getParameter(key), another.getParameter(key));\r\n+    }\r\n+\r\n+    private static boolean isCompatibleProtocol(URL one, URL another) {\r\n+        String protocol = one.getParameter(PROTOCOL_KEY);\r\n+        return isCompatibleProtocol(protocol, another);\r\n+    }\r\n+\r\n+    private static boolean isCompatibleProtocol(String protocol, URL targetURL) {\r\n+        return protocol == null || Objects.equals(protocol, targetURL.getParameter(PROTOCOL_KEY))\r\n+                || Objects.equals(protocol, targetURL.getProtocol());\r\n+    }\r\n+\r\n+    private class DefaultMappingListener implements MappingListener {\r\n+        private URL url;\r\n+        private Set<String> oldApps;\r\n+        private NotifyListener listener;\r\n+\r\n+        public DefaultMappingListener(URL subscribedURL, Set<String> serviceNames, NotifyListener listener) {\r\n+            this.url = subscribedURL;\r\n+            this.oldApps = serviceNames;\r\n+            this.listener = listener;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void onEvent(MappingChangedEvent event) {\r\n+            Set<String> newApps = event.getApps();\r\n+            Set<String> tempOldApps = oldApps;\r\n+            oldApps = newApps;\r\n+\r\n+            if (CollectionUtils.isEmpty(newApps)) {\r\n+                return;\r\n+            }\r\n+\r\n+            if (CollectionUtils.isEmpty(tempOldApps) && newApps.size() > 0) {\r\n+                subscribeURLs(url, listener, newApps);\r\n+                return;\r\n+            }\r\n+\r\n+            for (String newAppName : newApps) {\r\n+                if (!tempOldApps.contains(newAppName)) {\r\n+                    subscribeURLs(url, listener, newApps);\r\n+                    return;\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java", "source2": "org/apache/dubbo/registry/client/ServiceDiscoveryRegistryDirectory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,265 +1,265 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.Assert;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.registry.AddressListener;\n-import org.apache.dubbo.registry.NotifyListener;\n-import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\n-import org.apache.dubbo.registry.integration.DynamicDirectory;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Protocol;\n-import org.apache.dubbo.rpc.RpcContext;\n-\n-import java.util.ArrayList;\n-import java.util.Collection;\n-import java.util.Collections;\n-import java.util.HashMap;\n-import java.util.List;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DISABLED_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.ENABLED_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.EMPTY_PROTOCOL;\n-\n-public class ServiceDiscoveryRegistryDirectory<T> extends DynamicDirectory<T> implements NotifyListener {\n-    private static final Logger logger = LoggerFactory.getLogger(ServiceDiscoveryRegistryDirectory.class);\n-\n-    // instance address to invoker mapping.\n-    private volatile Map<String, Invoker<T>> urlInvokerMap; // The initial value is null and the midway may be assigned to null, please use the local variable reference\n-\n-    private ServiceInstancesChangedListener listener;\n-\n-    public ServiceDiscoveryRegistryDirectory(Class<T> serviceType, URL url) {\n-        super(serviceType, url);\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        if (isDestroyed()) {\n-            return false;\n-        }\n-        Map<String, Invoker<T>> localUrlInvokerMap = urlInvokerMap;\n-        if (localUrlInvokerMap != null && localUrlInvokerMap.size() > 0) {\n-            for (Invoker<T> invoker : new ArrayList<>(localUrlInvokerMap.values())) {\n-                if (invoker.isAvailable()) {\n-                    return true;\n-                }\n-            }\n-        }\n-        return false;\n-    }\n-\n-    @Override\n-    public synchronized void notify(List<URL> instanceUrls) {\n-        // Set the context of the address notification thread.\n-        RpcContext.setRpcContext(getConsumerUrl());\n-\n-        /**\n-         * 3.x added for extend URL address\n-         */\n-        ExtensionLoader<AddressListener> addressListenerExtensionLoader = ExtensionLoader.getExtensionLoader(AddressListener.class);\n-        List<AddressListener> supportedListeners = addressListenerExtensionLoader.getActivateExtension(getUrl(), (String[]) null);\n-        if (supportedListeners != null && !supportedListeners.isEmpty()) {\n-            for (AddressListener addressListener : supportedListeners) {\n-                instanceUrls = addressListener.notify(instanceUrls, getConsumerUrl(), this);\n-            }\n-        }\n-\n-        refreshInvoker(instanceUrls);\n-    }\n-\n-    private void refreshInvoker(List<URL> invokerUrls) {\n-        Assert.notNull(invokerUrls, \"invokerUrls should not be null, use empty url list to clear address.\");\n-\n-        if (invokerUrls.size() == 0) {\n-            this.forbidden = true; // Forbid to access\n-            this.invokers = Collections.emptyList();\n-            routerChain.setInvokers(this.invokers);\n-            destroyAllInvokers(); // Close all invokers\n-            return;\n-        }\n-\n-        this.forbidden = false; // Allow to access\n-        Map<String, Invoker<T>> oldUrlInvokerMap = this.urlInvokerMap; // local reference\n-        if (CollectionUtils.isEmpty(invokerUrls)) {\n-            return;\n-        }\n-\n-        Map<String, Invoker<T>> newUrlInvokerMap = toInvokers(invokerUrls);// Translate url list to Invoker map\n-\n-        if (CollectionUtils.isEmptyMap(newUrlInvokerMap)) {\n-            logger.error(new IllegalStateException(\"Cannot create invokers from url address list (total \" + invokerUrls.size() + \")\"));\n-            return;\n-        }\n-\n-        List<Invoker<T>> newInvokers = Collections.unmodifiableList(new ArrayList<>(newUrlInvokerMap.values()));\n-        // pre-route and build cache, notice that route cache should build on original Invoker list.\n-        // toMergeMethodInvokerMap() will wrap some invokers having different groups, those wrapped invokers not should be routed.\n-        routerChain.setInvokers(newInvokers);\n-        this.invokers = multiGroup ? toMergeInvokerList(newInvokers) : newInvokers;\n-        this.urlInvokerMap = newUrlInvokerMap;\n-\n-        if (oldUrlInvokerMap != null) {\n-            try {\n-                destroyUnusedInvokers(oldUrlInvokerMap, newUrlInvokerMap); // Close the unused Invoker\n-            } catch (Exception e) {\n-                logger.warn(\"destroyUnusedInvokers error. \", e);\n-            }\n-        }\n-\n-        // notify invokers refreshed\n-        this.invokersChanged();\n-    }\n-\n-    /**\n-     * Turn urls into invokers, and if url has been refer, will not re-reference.\n-     *\n-     * @param urls\n-     * @return invokers\n-     */\n-    private Map<String, Invoker<T>> toInvokers(List<URL> urls) {\n-        Map<String, Invoker<T>> newUrlInvokerMap = new HashMap<>();\n-        if (urls == null || urls.isEmpty()) {\n-            return newUrlInvokerMap;\n-        }\n-        for (URL url : urls) {\n-            InstanceAddressURL instanceAddressURL = (InstanceAddressURL) url;\n-            if (EMPTY_PROTOCOL.equals(instanceAddressURL.getProtocol())) {\n-                continue;\n-            }\n-            if (!ExtensionLoader.getExtensionLoader(Protocol.class).hasExtension(instanceAddressURL.getProtocol())) {\n-                logger.error(new IllegalStateException(\"Unsupported protocol \" + instanceAddressURL.getProtocol() +\n-                        \" in notified url: \" + instanceAddressURL + \" from registry \" + getUrl().getAddress() +\n-                        \" to consumer \" + NetUtils.getLocalHost() + \", supported protocol: \" +\n-                        ExtensionLoader.getExtensionLoader(Protocol.class).getSupportedExtensions()));\n-                continue;\n-            }\n-\n-            // FIXME, some keys may need to be removed.\n-            instanceAddressURL.addConsumerParams(getConsumerUrl().getProtocolServiceKey(), queryMap);\n-\n-            Invoker<T> invoker = urlInvokerMap == null ? null : urlInvokerMap.get(instanceAddressURL.getAddress());\n-            if (invoker == null || urlChanged(invoker, instanceAddressURL)) { // Not in the cache, refer again\n-                try {\n-                    boolean enabled = true;\n-                    if (instanceAddressURL.hasParameter(DISABLED_KEY)) {\n-                        enabled = !instanceAddressURL.getParameter(DISABLED_KEY, false);\n-                    } else {\n-                        enabled = instanceAddressURL.getParameter(ENABLED_KEY, true);\n-                    }\n-                    if (enabled) {\n-                        invoker = protocol.refer(serviceType, instanceAddressURL);\n-                    }\n-                } catch (Throwable t) {\n-                    logger.error(\"Failed to refer invoker for interface:\" + serviceType + \",url:(\" + instanceAddressURL + \")\" + t.getMessage(), t);\n-                }\n-                if (invoker != null) { // Put new invoker in cache\n-                    newUrlInvokerMap.put(instanceAddressURL.getAddress(), invoker);\n-                }\n-            } else {\n-                newUrlInvokerMap.put(instanceAddressURL.getAddress(), invoker);\n-            }\n-        }\n-        return newUrlInvokerMap;\n-    }\n-\n-    private boolean urlChanged(Invoker<T> invoker, InstanceAddressURL newURL) {\n-        InstanceAddressURL oldURL = (InstanceAddressURL) invoker.getUrl();\n-\n-        if (!newURL.getInstance().equals(oldURL.getInstance())) {\n-            return true;\n-        }\n-\n-        return !oldURL.getMetadataInfo().getServiceInfo(getConsumerUrl().getProtocolServiceKey())\n-                .equals(newURL.getMetadataInfo().getServiceInfo(getConsumerUrl().getProtocolServiceKey()));\n-    }\n-\n-    private List<Invoker<T>> toMergeInvokerList(List<Invoker<T>> invokers) {\n-        return invokers;\n-    }\n-\n-    /**\n-     * Close all invokers\n-     */\n-    @Override\n-    protected void destroyAllInvokers() {\n-        Map<String, Invoker<T>> localUrlInvokerMap = this.urlInvokerMap; // local reference\n-        if (localUrlInvokerMap != null) {\n-            for (Invoker<T> invoker : new ArrayList<>(localUrlInvokerMap.values())) {\n-                try {\n-                    invoker.destroy();\n-                } catch (Throwable t) {\n-                    logger.warn(\"Failed to destroy service \" + serviceKey + \" to provider \" + invoker.getUrl(), t);\n-                }\n-            }\n-            localUrlInvokerMap.clear();\n-        }\n-        invokers = null;\n-    }\n-\n-    /**\n-     * Check whether the invoker in the cache needs to be destroyed\n-     * If set attribute of url: refer.autodestroy=false, the invokers will only increase without decreasing,there may be a refer leak\n-     *\n-     * @param oldUrlInvokerMap\n-     * @param newUrlInvokerMap\n-     */\n-    private void destroyUnusedInvokers(Map<String, Invoker<T>> oldUrlInvokerMap, Map<String, Invoker<T>> newUrlInvokerMap) {\n-        if (newUrlInvokerMap == null || newUrlInvokerMap.size() == 0) {\n-            destroyAllInvokers();\n-            return;\n-        }\n-        // check deleted invoker\n-        List<String> deleted = null;\n-        if (oldUrlInvokerMap != null) {\n-            Collection<Invoker<T>> newInvokers = newUrlInvokerMap.values();\n-            for (Map.Entry<String, Invoker<T>> entry : oldUrlInvokerMap.entrySet()) {\n-                if (!newInvokers.contains(entry.getValue())) {\n-                    if (deleted == null) {\n-                        deleted = new ArrayList<>();\n-                    }\n-                    deleted.add(entry.getKey());\n-                }\n-            }\n-        }\n-\n-        if (deleted != null) {\n-            for (String addressKey : deleted) {\n-                if (addressKey != null) {\n-                    Invoker<T> invoker = oldUrlInvokerMap.remove(addressKey);\n-                    if (invoker != null) {\n-                        try {\n-                            invoker.destroy();\n-                            if (logger.isDebugEnabled()) {\n-                                logger.debug(\"destroy invoker[\" + invoker.getUrl() + \"] success. \");\n-                            }\n-                        } catch (Exception e) {\n-                            logger.warn(\"destroy invoker[\" + invoker.getUrl() + \"] failed. \" + e.getMessage(), e);\n-                        }\n-                    }\n-                }\n-            }\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.Assert;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.registry.AddressListener;\r\n+import org.apache.dubbo.registry.NotifyListener;\r\n+import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\r\n+import org.apache.dubbo.registry.integration.DynamicDirectory;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Protocol;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Collection;\r\n+import java.util.Collections;\r\n+import java.util.HashMap;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DISABLED_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ENABLED_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.EMPTY_PROTOCOL;\r\n+\r\n+public class ServiceDiscoveryRegistryDirectory<T> extends DynamicDirectory<T> implements NotifyListener {\r\n+    private static final Logger logger = LoggerFactory.getLogger(ServiceDiscoveryRegistryDirectory.class);\r\n+\r\n+    // instance address to invoker mapping.\r\n+    private volatile Map<String, Invoker<T>> urlInvokerMap; // The initial value is null and the midway may be assigned to null, please use the local variable reference\r\n+\r\n+    private ServiceInstancesChangedListener listener;\r\n+\r\n+    public ServiceDiscoveryRegistryDirectory(Class<T> serviceType, URL url) {\r\n+        super(serviceType, url);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        if (isDestroyed()) {\r\n+            return false;\r\n+        }\r\n+        Map<String, Invoker<T>> localUrlInvokerMap = urlInvokerMap;\r\n+        if (localUrlInvokerMap != null && localUrlInvokerMap.size() > 0) {\r\n+            for (Invoker<T> invoker : new ArrayList<>(localUrlInvokerMap.values())) {\r\n+                if (invoker.isAvailable()) {\r\n+                    return true;\r\n+                }\r\n+            }\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    @Override\r\n+    public synchronized void notify(List<URL> instanceUrls) {\r\n+        // Set the context of the address notification thread.\r\n+        RpcContext.setRpcContext(getConsumerUrl());\r\n+\r\n+        /**\r\n+         * 3.x added for extend URL address\r\n+         */\r\n+        ExtensionLoader<AddressListener> addressListenerExtensionLoader = ExtensionLoader.getExtensionLoader(AddressListener.class);\r\n+        List<AddressListener> supportedListeners = addressListenerExtensionLoader.getActivateExtension(getUrl(), (String[]) null);\r\n+        if (supportedListeners != null && !supportedListeners.isEmpty()) {\r\n+            for (AddressListener addressListener : supportedListeners) {\r\n+                instanceUrls = addressListener.notify(instanceUrls, getConsumerUrl(), this);\r\n+            }\r\n+        }\r\n+\r\n+        refreshInvoker(instanceUrls);\r\n+    }\r\n+\r\n+    private void refreshInvoker(List<URL> invokerUrls) {\r\n+        Assert.notNull(invokerUrls, \"invokerUrls should not be null, use empty url list to clear address.\");\r\n+\r\n+        if (invokerUrls.size() == 0) {\r\n+            this.forbidden = true; // Forbid to access\r\n+            this.invokers = Collections.emptyList();\r\n+            routerChain.setInvokers(this.invokers);\r\n+            destroyAllInvokers(); // Close all invokers\r\n+            return;\r\n+        }\r\n+\r\n+        this.forbidden = false; // Allow to access\r\n+        Map<String, Invoker<T>> oldUrlInvokerMap = this.urlInvokerMap; // local reference\r\n+        if (CollectionUtils.isEmpty(invokerUrls)) {\r\n+            return;\r\n+        }\r\n+\r\n+        Map<String, Invoker<T>> newUrlInvokerMap = toInvokers(invokerUrls);// Translate url list to Invoker map\r\n+\r\n+        if (CollectionUtils.isEmptyMap(newUrlInvokerMap)) {\r\n+            logger.error(new IllegalStateException(\"Cannot create invokers from url address list (total \" + invokerUrls.size() + \")\"));\r\n+            return;\r\n+        }\r\n+\r\n+        List<Invoker<T>> newInvokers = Collections.unmodifiableList(new ArrayList<>(newUrlInvokerMap.values()));\r\n+        // pre-route and build cache, notice that route cache should build on original Invoker list.\r\n+        // toMergeMethodInvokerMap() will wrap some invokers having different groups, those wrapped invokers not should be routed.\r\n+        routerChain.setInvokers(newInvokers);\r\n+        this.invokers = multiGroup ? toMergeInvokerList(newInvokers) : newInvokers;\r\n+        this.urlInvokerMap = newUrlInvokerMap;\r\n+\r\n+        if (oldUrlInvokerMap != null) {\r\n+            try {\r\n+                destroyUnusedInvokers(oldUrlInvokerMap, newUrlInvokerMap); // Close the unused Invoker\r\n+            } catch (Exception e) {\r\n+                logger.warn(\"destroyUnusedInvokers error. \", e);\r\n+            }\r\n+        }\r\n+\r\n+        // notify invokers refreshed\r\n+        this.invokersChanged();\r\n+    }\r\n+\r\n+    /**\r\n+     * Turn urls into invokers, and if url has been refer, will not re-reference.\r\n+     *\r\n+     * @param urls\r\n+     * @return invokers\r\n+     */\r\n+    private Map<String, Invoker<T>> toInvokers(List<URL> urls) {\r\n+        Map<String, Invoker<T>> newUrlInvokerMap = new HashMap<>();\r\n+        if (urls == null || urls.isEmpty()) {\r\n+            return newUrlInvokerMap;\r\n+        }\r\n+        for (URL url : urls) {\r\n+            InstanceAddressURL instanceAddressURL = (InstanceAddressURL) url;\r\n+            if (EMPTY_PROTOCOL.equals(instanceAddressURL.getProtocol())) {\r\n+                continue;\r\n+            }\r\n+            if (!ExtensionLoader.getExtensionLoader(Protocol.class).hasExtension(instanceAddressURL.getProtocol())) {\r\n+                logger.error(new IllegalStateException(\"Unsupported protocol \" + instanceAddressURL.getProtocol() +\r\n+                        \" in notified url: \" + instanceAddressURL + \" from registry \" + getUrl().getAddress() +\r\n+                        \" to consumer \" + NetUtils.getLocalHost() + \", supported protocol: \" +\r\n+                        ExtensionLoader.getExtensionLoader(Protocol.class).getSupportedExtensions()));\r\n+                continue;\r\n+            }\r\n+\r\n+            // FIXME, some keys may need to be removed.\r\n+            instanceAddressURL.addConsumerParams(getConsumerUrl().getProtocolServiceKey(), queryMap);\r\n+\r\n+            Invoker<T> invoker = urlInvokerMap == null ? null : urlInvokerMap.get(instanceAddressURL.getAddress());\r\n+            if (invoker == null || urlChanged(invoker, instanceAddressURL)) { // Not in the cache, refer again\r\n+                try {\r\n+                    boolean enabled = true;\r\n+                    if (instanceAddressURL.hasParameter(DISABLED_KEY)) {\r\n+                        enabled = !instanceAddressURL.getParameter(DISABLED_KEY, false);\r\n+                    } else {\r\n+                        enabled = instanceAddressURL.getParameter(ENABLED_KEY, true);\r\n+                    }\r\n+                    if (enabled) {\r\n+                        invoker = protocol.refer(serviceType, instanceAddressURL);\r\n+                    }\r\n+                } catch (Throwable t) {\r\n+                    logger.error(\"Failed to refer invoker for interface:\" + serviceType + \",url:(\" + instanceAddressURL + \")\" + t.getMessage(), t);\r\n+                }\r\n+                if (invoker != null) { // Put new invoker in cache\r\n+                    newUrlInvokerMap.put(instanceAddressURL.getAddress(), invoker);\r\n+                }\r\n+            } else {\r\n+                newUrlInvokerMap.put(instanceAddressURL.getAddress(), invoker);\r\n+            }\r\n+        }\r\n+        return newUrlInvokerMap;\r\n+    }\r\n+\r\n+    private boolean urlChanged(Invoker<T> invoker, InstanceAddressURL newURL) {\r\n+        InstanceAddressURL oldURL = (InstanceAddressURL) invoker.getUrl();\r\n+\r\n+        if (!newURL.getInstance().equals(oldURL.getInstance())) {\r\n+            return true;\r\n+        }\r\n+\r\n+        return !oldURL.getMetadataInfo().getServiceInfo(getConsumerUrl().getProtocolServiceKey())\r\n+                .equals(newURL.getMetadataInfo().getServiceInfo(getConsumerUrl().getProtocolServiceKey()));\r\n+    }\r\n+\r\n+    private List<Invoker<T>> toMergeInvokerList(List<Invoker<T>> invokers) {\r\n+        return invokers;\r\n+    }\r\n+\r\n+    /**\r\n+     * Close all invokers\r\n+     */\r\n+    @Override\r\n+    protected void destroyAllInvokers() {\r\n+        Map<String, Invoker<T>> localUrlInvokerMap = this.urlInvokerMap; // local reference\r\n+        if (localUrlInvokerMap != null) {\r\n+            for (Invoker<T> invoker : new ArrayList<>(localUrlInvokerMap.values())) {\r\n+                try {\r\n+                    invoker.destroy();\r\n+                } catch (Throwable t) {\r\n+                    logger.warn(\"Failed to destroy service \" + serviceKey + \" to provider \" + invoker.getUrl(), t);\r\n+                }\r\n+            }\r\n+            localUrlInvokerMap.clear();\r\n+        }\r\n+        invokers = null;\r\n+    }\r\n+\r\n+    /**\r\n+     * Check whether the invoker in the cache needs to be destroyed\r\n+     * If set attribute of url: refer.autodestroy=false, the invokers will only increase without decreasing,there may be a refer leak\r\n+     *\r\n+     * @param oldUrlInvokerMap\r\n+     * @param newUrlInvokerMap\r\n+     */\r\n+    private void destroyUnusedInvokers(Map<String, Invoker<T>> oldUrlInvokerMap, Map<String, Invoker<T>> newUrlInvokerMap) {\r\n+        if (newUrlInvokerMap == null || newUrlInvokerMap.size() == 0) {\r\n+            destroyAllInvokers();\r\n+            return;\r\n+        }\r\n+        // check deleted invoker\r\n+        List<String> deleted = null;\r\n+        if (oldUrlInvokerMap != null) {\r\n+            Collection<Invoker<T>> newInvokers = newUrlInvokerMap.values();\r\n+            for (Map.Entry<String, Invoker<T>> entry : oldUrlInvokerMap.entrySet()) {\r\n+                if (!newInvokers.contains(entry.getValue())) {\r\n+                    if (deleted == null) {\r\n+                        deleted = new ArrayList<>();\r\n+                    }\r\n+                    deleted.add(entry.getKey());\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        if (deleted != null) {\r\n+            for (String addressKey : deleted) {\r\n+                if (addressKey != null) {\r\n+                    Invoker<T> invoker = oldUrlInvokerMap.remove(addressKey);\r\n+                    if (invoker != null) {\r\n+                        try {\r\n+                            invoker.destroy();\r\n+                            if (logger.isDebugEnabled()) {\r\n+                                logger.debug(\"destroy invoker[\" + invoker.getUrl() + \"] success. \");\r\n+                            }\r\n+                        } catch (Exception e) {\r\n+                            logger.warn(\"destroy invoker[\" + invoker.getUrl() + \"] failed. \" + e.getMessage(), e);\r\n+                        }\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/ServiceDiscoveryRegistryFactory.java", "source2": "org/apache/dubbo/registry/client/ServiceDiscoveryRegistryFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,38 +1,38 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.support.AbstractRegistryFactory;\n-\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.SERVICE_REGISTRY_PROTOCOL;\n-import static org.apache.dubbo.registry.Constants.DEFAULT_REGISTRY;\n-\n-public class ServiceDiscoveryRegistryFactory extends AbstractRegistryFactory {\n-\n-    @Override\n-    protected Registry createRegistry(URL url) {\n-        if (SERVICE_REGISTRY_PROTOCOL.equalsIgnoreCase(url.getProtocol())) {\n-            String protocol = url.getParameter(REGISTRY_KEY, DEFAULT_REGISTRY);\n-            url = url.setProtocol(protocol).removeParameter(REGISTRY_KEY);\n-        }\n-        return new ServiceDiscoveryRegistry(url);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.support.AbstractRegistryFactory;\r\n+\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.SERVICE_REGISTRY_PROTOCOL;\r\n+import static org.apache.dubbo.registry.Constants.DEFAULT_REGISTRY;\r\n+\r\n+public class ServiceDiscoveryRegistryFactory extends AbstractRegistryFactory {\r\n+\r\n+    @Override\r\n+    protected Registry createRegistry(URL url) {\r\n+        if (SERVICE_REGISTRY_PROTOCOL.equalsIgnoreCase(url.getProtocol())) {\r\n+            String protocol = url.getParameter(REGISTRY_KEY, DEFAULT_REGISTRY);\r\n+            url = url.setProtocol(protocol).removeParameter(REGISTRY_KEY);\r\n+        }\r\n+        return new ServiceDiscoveryRegistry(url);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/ServiceInstance.java", "source2": "org/apache/dubbo/registry/client/ServiceInstance.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,126 +1,126 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client;\n-\n-import java.io.Serializable;\n-import java.util.Map;\n-\n-/**\n- * The model class of an instance of a service, which is used for service registration and discovery.\n- * <p>\n- *\n- * @since 2.7.5\n- */\n-public interface ServiceInstance extends Serializable {\n-\n-    /**\n-     * The id of the registered service instance.\n-     *\n-     * @return nullable\n-     */\n-    String getId();\n-\n-    /**\n-     * The name of service that current instance belongs to.\n-     *\n-     * @return non-null\n-     */\n-    String getServiceName();\n-\n-    /**\n-     * The hostname of the registered service instance.\n-     *\n-     * @return non-null\n-     */\n-    String getHost();\n-\n-    /**\n-     * The port of the registered service instance.\n-     *\n-     * @return the positive integer if present\n-     */\n-    Integer getPort();\n-\n-    String getAddress();\n-\n-    /**\n-     * The enable status of the registered service instance.\n-     *\n-     * @return if <code>true</code>, indicates current instance is enabled, or disable, the client should remove this one.\n-     * The default value is <code>true</code>\n-     */\n-    default boolean isEnabled() {\n-        return true;\n-    }\n-\n-    /**\n-     * The registered service instance is health or not.\n-     *\n-     * @return if <code>true</code>, indicates current instance is enabled, or disable, the client may ignore this one.\n-     * The default value is <code>true</code>\n-     */\n-    default boolean isHealthy() {\n-        return true;\n-    }\n-\n-    /**\n-     * The key / value pair metadata associated with the service instance.\n-     *\n-     * @return non-null, mutable and unsorted {@link Map}\n-     */\n-    Map<String, String> getMetadata();\n-\n-    Map<String, String> getExtendParams();\n-\n-    Map<String, String> getAllParams();\n-\n-    /**\n-     * Get the value of metadata by the specified name\n-     *\n-     * @param name the specified name\n-     * @return the value of metadata if found, or <code>null</code>\n-     * @since 2.7.8\n-     */\n-    default String getMetadata(String name) {\n-        return getMetadata(name, null);\n-    }\n-\n-    /**\n-     * Get the value of metadata by the specified name\n-     *\n-     * @param name the specified name\n-     * @return the value of metadata if found, or <code>defaultValue</code>\n-     * @since 2.7.8\n-     */\n-    default String getMetadata(String name, String defaultValue) {\n-        return getMetadata().getOrDefault(name, defaultValue);\n-    }\n-\n-    /**\n-     * @return the hash code of current instance.\n-     */\n-    int hashCode();\n-\n-    /**\n-     * @param another another {@link ServiceInstance}\n-     * @return if equals , return <code>true</code>, or <code>false</code>\n-     */\n-    boolean equals(Object another);\n-\n-    InstanceAddressURL toURL();\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client;\r\n+\r\n+import java.io.Serializable;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * The model class of an instance of a service, which is used for service registration and discovery.\r\n+ * <p>\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public interface ServiceInstance extends Serializable {\r\n+\r\n+    /**\r\n+     * The id of the registered service instance.\r\n+     *\r\n+     * @return nullable\r\n+     */\r\n+    String getId();\r\n+\r\n+    /**\r\n+     * The name of service that current instance belongs to.\r\n+     *\r\n+     * @return non-null\r\n+     */\r\n+    String getServiceName();\r\n+\r\n+    /**\r\n+     * The hostname of the registered service instance.\r\n+     *\r\n+     * @return non-null\r\n+     */\r\n+    String getHost();\r\n+\r\n+    /**\r\n+     * The port of the registered service instance.\r\n+     *\r\n+     * @return the positive integer if present\r\n+     */\r\n+    Integer getPort();\r\n+\r\n+    String getAddress();\r\n+\r\n+    /**\r\n+     * The enable status of the registered service instance.\r\n+     *\r\n+     * @return if <code>true</code>, indicates current instance is enabled, or disable, the client should remove this one.\r\n+     * The default value is <code>true</code>\r\n+     */\r\n+    default boolean isEnabled() {\r\n+        return true;\r\n+    }\r\n+\r\n+    /**\r\n+     * The registered service instance is health or not.\r\n+     *\r\n+     * @return if <code>true</code>, indicates current instance is enabled, or disable, the client may ignore this one.\r\n+     * The default value is <code>true</code>\r\n+     */\r\n+    default boolean isHealthy() {\r\n+        return true;\r\n+    }\r\n+\r\n+    /**\r\n+     * The key / value pair metadata associated with the service instance.\r\n+     *\r\n+     * @return non-null, mutable and unsorted {@link Map}\r\n+     */\r\n+    Map<String, String> getMetadata();\r\n+\r\n+    Map<String, String> getExtendParams();\r\n+\r\n+    Map<String, String> getAllParams();\r\n+\r\n+    /**\r\n+     * Get the value of metadata by the specified name\r\n+     *\r\n+     * @param name the specified name\r\n+     * @return the value of metadata if found, or <code>null</code>\r\n+     * @since 2.7.8\r\n+     */\r\n+    default String getMetadata(String name) {\r\n+        return getMetadata(name, null);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the value of metadata by the specified name\r\n+     *\r\n+     * @param name the specified name\r\n+     * @return the value of metadata if found, or <code>defaultValue</code>\r\n+     * @since 2.7.8\r\n+     */\r\n+    default String getMetadata(String name, String defaultValue) {\r\n+        return getMetadata().getOrDefault(name, defaultValue);\r\n+    }\r\n+\r\n+    /**\r\n+     * @return the hash code of current instance.\r\n+     */\r\n+    int hashCode();\r\n+\r\n+    /**\r\n+     * @param another another {@link ServiceInstance}\r\n+     * @return if equals , return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    boolean equals(Object another);\r\n+\r\n+    InstanceAddressURL toURL();\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/ServiceInstanceCustomizer.java", "source2": "org/apache/dubbo/registry/client/ServiceInstanceCustomizer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,38 +1,38 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.common.lang.Prioritized;\n-import org.apache.dubbo.registry.client.event.ServiceInstancePreRegisteredEvent;\n-\n-/**\n- * The interface to customize {@link ServiceInstance the service instance} on {@link ServiceInstancePreRegisteredEvent}\n- *\n- * @see ServiceInstance#getMetadata()\n- * @since 2.7.5\n- */\n-@SPI\n-public interface ServiceInstanceCustomizer extends Prioritized {\n-\n-    /**\n-     * Customizes {@link ServiceInstance the service instance}\n-     *\n-     * @param serviceInstance {@link ServiceInstance the service instance}\n-     */\n-    void customize(ServiceInstance serviceInstance);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.common.lang.Prioritized;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstancePreRegisteredEvent;\r\n+\r\n+/**\r\n+ * The interface to customize {@link ServiceInstance the service instance} on {@link ServiceInstancePreRegisteredEvent}\r\n+ *\r\n+ * @see ServiceInstance#getMetadata()\r\n+ * @since 2.7.5\r\n+ */\r\n+@SPI\r\n+public interface ServiceInstanceCustomizer extends Prioritized {\r\n+\r\n+    /**\r\n+     * Customizes {@link ServiceInstance the service instance}\r\n+     *\r\n+     * @param serviceInstance {@link ServiceInstance the service instance}\r\n+     */\r\n+    void customize(ServiceInstance serviceInstance);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/event/ServiceDiscoveryDestroyedEvent.java", "source2": "org/apache/dubbo/registry/client/event/ServiceDiscoveryDestroyedEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.event;\n-\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-\n-/**\n- * An event raised after the {@link ServiceDiscovery Service Discovery} destroyed.\n- *\n- * @see ServiceDiscovery#destroy()\n- * @since 2.7.5\n- */\n-public class ServiceDiscoveryDestroyedEvent extends ServiceDiscoveryEvent {\n-\n-    public ServiceDiscoveryDestroyedEvent(ServiceDiscovery source, ServiceDiscovery original) {\n-        super(source, original);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.event;\r\n+\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+\r\n+/**\r\n+ * An event raised after the {@link ServiceDiscovery Service Discovery} destroyed.\r\n+ *\r\n+ * @see ServiceDiscovery#destroy()\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ServiceDiscoveryDestroyedEvent extends ServiceDiscoveryEvent {\r\n+\r\n+    public ServiceDiscoveryDestroyedEvent(ServiceDiscovery source, ServiceDiscovery original) {\r\n+        super(source, original);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/event/ServiceDiscoveryDestroyingEvent.java", "source2": "org/apache/dubbo/registry/client/event/ServiceDiscoveryDestroyingEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.event;\n-\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-\n-/**\n- * An event raised when the {@link ServiceDiscovery Service Discovery} is destroying.\n- *\n- * @see ServiceDiscovery#destroy()\n- * @since 2.7.5\n- */\n-public class ServiceDiscoveryDestroyingEvent extends ServiceDiscoveryEvent {\n-\n-    public ServiceDiscoveryDestroyingEvent(ServiceDiscovery source, ServiceDiscovery original) {\n-        super(source, original);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.event;\r\n+\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+\r\n+/**\r\n+ * An event raised when the {@link ServiceDiscovery Service Discovery} is destroying.\r\n+ *\r\n+ * @see ServiceDiscovery#destroy()\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ServiceDiscoveryDestroyingEvent extends ServiceDiscoveryEvent {\r\n+\r\n+    public ServiceDiscoveryDestroyingEvent(ServiceDiscovery source, ServiceDiscovery original) {\r\n+        super(source, original);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/event/ServiceDiscoveryEvent.java", "source2": "org/apache/dubbo/registry/client/event/ServiceDiscoveryEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,67 +1,67 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.event;\n-\n-import org.apache.dubbo.event.Event;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-\n-/**\n- * An abstract {@link Event} class for {@link ServiceDiscovery}\n- *\n- * @see Event\n- * @see ServiceDiscovery\n- * @since 2.7.5\n- */\n-public abstract class ServiceDiscoveryEvent extends Event {\n-\n-    private final ServiceDiscovery original;\n-\n-    /**\n-     * Constructs a prototypical Event.\n-     *\n-     * @param source   The object on which the Event initially occurred.\n-     * @param original The original {@link ServiceDiscovery}\n-     * @throws IllegalArgumentException if source is null.\n-     */\n-    public ServiceDiscoveryEvent(ServiceDiscovery source, ServiceDiscovery original) {\n-        super(source);\n-        this.original = original;\n-    }\n-\n-    @Override\n-    public ServiceDiscovery getSource() {\n-        return (ServiceDiscovery) super.getSource();\n-    }\n-\n-    /**\n-     * Get the {@link ServiceDiscovery} on which the Event initially occurred.\n-     *\n-     * @return {@link ServiceDiscovery} instance\n-     */\n-    public final ServiceDiscovery getServiceDiscovery() {\n-        return getSource();\n-    }\n-\n-    /**\n-     * Get the original {@link ServiceDiscovery}\n-     *\n-     * @return the original {@link ServiceDiscovery}\n-     */\n-    public final ServiceDiscovery getOriginal() {\n-        return original;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.event;\r\n+\r\n+import org.apache.dubbo.event.Event;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+\r\n+/**\r\n+ * An abstract {@link Event} class for {@link ServiceDiscovery}\r\n+ *\r\n+ * @see Event\r\n+ * @see ServiceDiscovery\r\n+ * @since 2.7.5\r\n+ */\r\n+public abstract class ServiceDiscoveryEvent extends Event {\r\n+\r\n+    private final ServiceDiscovery original;\r\n+\r\n+    /**\r\n+     * Constructs a prototypical Event.\r\n+     *\r\n+     * @param source   The object on which the Event initially occurred.\r\n+     * @param original The original {@link ServiceDiscovery}\r\n+     * @throws IllegalArgumentException if source is null.\r\n+     */\r\n+    public ServiceDiscoveryEvent(ServiceDiscovery source, ServiceDiscovery original) {\r\n+        super(source);\r\n+        this.original = original;\r\n+    }\r\n+\r\n+    @Override\r\n+    public ServiceDiscovery getSource() {\r\n+        return (ServiceDiscovery) super.getSource();\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the {@link ServiceDiscovery} on which the Event initially occurred.\r\n+     *\r\n+     * @return {@link ServiceDiscovery} instance\r\n+     */\r\n+    public final ServiceDiscovery getServiceDiscovery() {\r\n+        return getSource();\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the original {@link ServiceDiscovery}\r\n+     *\r\n+     * @return the original {@link ServiceDiscovery}\r\n+     */\r\n+    public final ServiceDiscovery getOriginal() {\r\n+        return original;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/event/ServiceDiscoveryExceptionEvent.java", "source2": "org/apache/dubbo/registry/client/event/ServiceDiscoveryExceptionEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,48 +1,48 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.event;\n-\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-\n-/**\n- * An event raised when the {@link ServiceDiscovery Service Discovery} met with some exception\n- *\n- * @see ServiceDiscovery\n- * @see org.apache.dubbo.event.Event\n- * @since 2.7.5\n- */\n-public class ServiceDiscoveryExceptionEvent extends ServiceDiscoveryEvent {\n-\n-    private final Throwable cause;\n-\n-    public ServiceDiscoveryExceptionEvent(ServiceDiscovery source, ServiceDiscovery original, Throwable cause) {\n-        super(source, original);\n-        if (cause == null) {\n-            throw new NullPointerException(\"The cause of Exception must not null\");\n-        }\n-        this.cause = cause;\n-    }\n-\n-    /**\n-     * The cause of {@link Throwable}\n-     *\n-     * @return non-nul\n-     */\n-    public Throwable getCause() {\n-        return cause;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.event;\r\n+\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+\r\n+/**\r\n+ * An event raised when the {@link ServiceDiscovery Service Discovery} met with some exception\r\n+ *\r\n+ * @see ServiceDiscovery\r\n+ * @see org.apache.dubbo.event.Event\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ServiceDiscoveryExceptionEvent extends ServiceDiscoveryEvent {\r\n+\r\n+    private final Throwable cause;\r\n+\r\n+    public ServiceDiscoveryExceptionEvent(ServiceDiscovery source, ServiceDiscovery original, Throwable cause) {\r\n+        super(source, original);\r\n+        if (cause == null) {\r\n+            throw new NullPointerException(\"The cause of Exception must not null\");\r\n+        }\r\n+        this.cause = cause;\r\n+    }\r\n+\r\n+    /**\r\n+     * The cause of {@link Throwable}\r\n+     *\r\n+     * @return non-nul\r\n+     */\r\n+    public Throwable getCause() {\r\n+        return cause;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/event/ServiceDiscoveryInitializedEvent.java", "source2": "org/apache/dubbo/registry/client/event/ServiceDiscoveryInitializedEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.event;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-\n-/**\n- * An event raised after the {@link ServiceDiscovery Service Discovery} initialized\n- *\n- * @see ServiceDiscovery#initialize(URL)\n- * @since 2.7.5\n- */\n-public class ServiceDiscoveryInitializedEvent extends ServiceDiscoveryEvent {\n-\n-    public ServiceDiscoveryInitializedEvent(ServiceDiscovery source, ServiceDiscovery original) {\n-        super(source, original);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.event;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+\r\n+/**\r\n+ * An event raised after the {@link ServiceDiscovery Service Discovery} initialized\r\n+ *\r\n+ * @see ServiceDiscovery#initialize(URL)\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ServiceDiscoveryInitializedEvent extends ServiceDiscoveryEvent {\r\n+\r\n+    public ServiceDiscoveryInitializedEvent(ServiceDiscovery source, ServiceDiscovery original) {\r\n+        super(source, original);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/event/ServiceDiscoveryInitializingEvent.java", "source2": "org/apache/dubbo/registry/client/event/ServiceDiscoveryInitializingEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.event;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-\n-/**\n- * An event raised when the {@link ServiceDiscovery Service Discovery} is initializing.\n- *\n- * @see ServiceDiscovery#initialize(URL)\n- * @since 2.7.5\n- */\n-public class ServiceDiscoveryInitializingEvent extends ServiceDiscoveryEvent {\n-\n-    public ServiceDiscoveryInitializingEvent(ServiceDiscovery source, ServiceDiscovery original) {\n-        super(source, original);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.event;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+\r\n+/**\r\n+ * An event raised when the {@link ServiceDiscovery Service Discovery} is initializing.\r\n+ *\r\n+ * @see ServiceDiscovery#initialize(URL)\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ServiceDiscoveryInitializingEvent extends ServiceDiscoveryEvent {\r\n+\r\n+    public ServiceDiscoveryInitializingEvent(ServiceDiscovery source, ServiceDiscovery original) {\r\n+        super(source, original);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/event/ServiceInstanceEvent.java", "source2": "org/apache/dubbo/registry/client/event/ServiceInstanceEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,47 +1,47 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.event;\n-\n-import org.apache.dubbo.event.Event;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-\n-/**\n- * The {@link Event Dubbo event} for {@link ServiceInstance an service instance}\n- *\n- * @since 2.7.5\n- */\n-public abstract class ServiceInstanceEvent extends Event {\n-\n-    private final ServiceInstance serviceInstance;\n-\n-    /**\n-     * @param serviceInstance {@link ServiceInstance an service instance}\n-     */\n-    public ServiceInstanceEvent(Object source, ServiceInstance serviceInstance) {\n-        super(source);\n-        this.serviceInstance = serviceInstance;\n-    }\n-\n-    /**\n-     * Get current {@link ServiceInstance service instance}\n-     *\n-     * @return current {@link ServiceInstance service instance}\n-     */\n-    public ServiceInstance getServiceInstance() {\n-        return serviceInstance;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.event;\r\n+\r\n+import org.apache.dubbo.event.Event;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+\r\n+/**\r\n+ * The {@link Event Dubbo event} for {@link ServiceInstance an service instance}\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public abstract class ServiceInstanceEvent extends Event {\r\n+\r\n+    private final ServiceInstance serviceInstance;\r\n+\r\n+    /**\r\n+     * @param serviceInstance {@link ServiceInstance an service instance}\r\n+     */\r\n+    public ServiceInstanceEvent(Object source, ServiceInstance serviceInstance) {\r\n+        super(source);\r\n+        this.serviceInstance = serviceInstance;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get current {@link ServiceInstance service instance}\r\n+     *\r\n+     * @return current {@link ServiceInstance service instance}\r\n+     */\r\n+    public ServiceInstance getServiceInstance() {\r\n+        return serviceInstance;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/event/ServiceInstancePreRegisteredEvent.java", "source2": "org/apache/dubbo/registry/client/event/ServiceInstancePreRegisteredEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,34 +1,34 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.event;\n-\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-\n-\n-/**\n- * An event raised before a {@link ServiceInstance service instance}\n- * {@link ServiceDiscovery#register(ServiceInstance) registered}\n- *\n- * @since 2.7.5\n- */\n-public class ServiceInstancePreRegisteredEvent extends ServiceInstanceEvent {\n-\n-    public ServiceInstancePreRegisteredEvent(Object source, ServiceInstance serviceInstance) {\n-        super(source, serviceInstance);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.event;\r\n+\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+\r\n+\r\n+/**\r\n+ * An event raised before a {@link ServiceInstance service instance}\r\n+ * {@link ServiceDiscovery#register(ServiceInstance) registered}\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ServiceInstancePreRegisteredEvent extends ServiceInstanceEvent {\r\n+\r\n+    public ServiceInstancePreRegisteredEvent(Object source, ServiceInstance serviceInstance) {\r\n+        super(source, serviceInstance);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/event/ServiceInstancePreUnregisteredEvent.java", "source2": "org/apache/dubbo/registry/client/event/ServiceInstancePreUnregisteredEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,34 +1,34 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.event;\n-\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-\n-\n-/**\n- * An event raised before a {@link ServiceInstance service instance}\n- * {@link ServiceDiscovery#unregister(ServiceInstance) unregistered}\n- *\n- * @since 2.7.5\n- */\n-public class ServiceInstancePreUnregisteredEvent extends ServiceInstanceEvent {\n-\n-    public ServiceInstancePreUnregisteredEvent(Object source, ServiceInstance serviceInstance) {\n-        super(source, serviceInstance);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.event;\r\n+\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+\r\n+\r\n+/**\r\n+ * An event raised before a {@link ServiceInstance service instance}\r\n+ * {@link ServiceDiscovery#unregister(ServiceInstance) unregistered}\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ServiceInstancePreUnregisteredEvent extends ServiceInstanceEvent {\r\n+\r\n+    public ServiceInstancePreUnregisteredEvent(Object source, ServiceInstance serviceInstance) {\r\n+        super(source, serviceInstance);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/event/ServiceInstanceRegisteredEvent.java", "source2": "org/apache/dubbo/registry/client/event/ServiceInstanceRegisteredEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,34 +1,34 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.event;\n-\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-\n-\n-/**\n- * An event raised after a {@link ServiceInstance service instance}\n- * {@link ServiceDiscovery#register(ServiceInstance) registered}\n- *\n- * @since 2.7.5\n- */\n-public class ServiceInstanceRegisteredEvent extends ServiceInstanceEvent {\n-\n-    public ServiceInstanceRegisteredEvent(Object source, ServiceInstance serviceInstance) {\n-        super(source, serviceInstance);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.event;\r\n+\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+\r\n+\r\n+/**\r\n+ * An event raised after a {@link ServiceInstance service instance}\r\n+ * {@link ServiceDiscovery#register(ServiceInstance) registered}\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ServiceInstanceRegisteredEvent extends ServiceInstanceEvent {\r\n+\r\n+    public ServiceInstanceRegisteredEvent(Object source, ServiceInstance serviceInstance) {\r\n+        super(source, serviceInstance);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/event/ServiceInstanceUnregisteredEvent.java", "source2": "org/apache/dubbo/registry/client/event/ServiceInstanceUnregisteredEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,35 +1,35 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.event;\n-\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-\n-\n-/**\n- * An event raised after a {@link ServiceInstance service instance}\n- * {@link ServiceDiscovery#unregister(ServiceInstance) unregistered}\n- *\n- * @see ServiceInstanceEvent\n- * @since 2.7.5\n- */\n-public class ServiceInstanceUnregisteredEvent extends ServiceInstanceEvent {\n-\n-    public ServiceInstanceUnregisteredEvent(Object source, ServiceInstance serviceInstance) {\n-        super(source, serviceInstance);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.event;\r\n+\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+\r\n+\r\n+/**\r\n+ * An event raised after a {@link ServiceInstance service instance}\r\n+ * {@link ServiceDiscovery#unregister(ServiceInstance) unregistered}\r\n+ *\r\n+ * @see ServiceInstanceEvent\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ServiceInstanceUnregisteredEvent extends ServiceInstanceEvent {\r\n+\r\n+    public ServiceInstanceUnregisteredEvent(Object source, ServiceInstance serviceInstance) {\r\n+        super(source, serviceInstance);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/event/ServiceInstancesChangedEvent.java", "source2": "org/apache/dubbo/registry/client/event/ServiceInstancesChangedEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,65 +1,65 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.event;\n-\n-import org.apache.dubbo.event.Event;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\n-\n-import java.util.List;\n-\n-import static java.util.Collections.unmodifiableList;\n-\n-/**\n- * An event raised after the {@link ServiceInstance instances} of one service has been changed.\n- *\n- * @see ServiceInstancesChangedListener\n- * @since 2.7.5\n- */\n-public class ServiceInstancesChangedEvent extends Event {\n-\n-    private final String serviceName;\n-\n-    private final List<ServiceInstance> serviceInstances;\n-\n-    /**\n-     * @param serviceName      The name of service that was changed\n-     * @param serviceInstances all {@link ServiceInstance service instances}\n-     * @throws IllegalArgumentException if source is null.\n-     */\n-    public ServiceInstancesChangedEvent(String serviceName, List<ServiceInstance> serviceInstances) {\n-        super(serviceName);\n-        this.serviceName = serviceName;\n-        this.serviceInstances = unmodifiableList(serviceInstances);\n-    }\n-\n-    /**\n-     * @return The name of service that was changed\n-     */\n-    public String getServiceName() {\n-        return serviceName;\n-    }\n-\n-\n-    /**\n-     * @return all {@link ServiceInstance service instances}\n-     */\n-    public List<ServiceInstance> getServiceInstances() {\n-        return serviceInstances;\n-    }\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.event;\r\n+\r\n+import org.apache.dubbo.event.Event;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\r\n+\r\n+import java.util.List;\r\n+\r\n+import static java.util.Collections.unmodifiableList;\r\n+\r\n+/**\r\n+ * An event raised after the {@link ServiceInstance instances} of one service has been changed.\r\n+ *\r\n+ * @see ServiceInstancesChangedListener\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ServiceInstancesChangedEvent extends Event {\r\n+\r\n+    private final String serviceName;\r\n+\r\n+    private final List<ServiceInstance> serviceInstances;\r\n+\r\n+    /**\r\n+     * @param serviceName      The name of service that was changed\r\n+     * @param serviceInstances all {@link ServiceInstance service instances}\r\n+     * @throws IllegalArgumentException if source is null.\r\n+     */\r\n+    public ServiceInstancesChangedEvent(String serviceName, List<ServiceInstance> serviceInstances) {\r\n+        super(serviceName);\r\n+        this.serviceName = serviceName;\r\n+        this.serviceInstances = unmodifiableList(serviceInstances);\r\n+    }\r\n+\r\n+    /**\r\n+     * @return The name of service that was changed\r\n+     */\r\n+    public String getServiceName() {\r\n+        return serviceName;\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * @return all {@link ServiceInstance service instances}\r\n+     */\r\n+    public List<ServiceInstance> getServiceInstances() {\r\n+        return serviceInstances;\r\n+    }\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/registry/client/event/listener/LoggingEventListener.java", "source2": "org/apache/dubbo/registry/client/event/listener/LoggingEventListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,85 +1,85 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.event.listener;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.event.Event;\n-import org.apache.dubbo.event.GenericEventListener;\n-import org.apache.dubbo.registry.client.event.ServiceDiscoveryDestroyedEvent;\n-import org.apache.dubbo.registry.client.event.ServiceDiscoveryDestroyingEvent;\n-import org.apache.dubbo.registry.client.event.ServiceDiscoveryInitializedEvent;\n-import org.apache.dubbo.registry.client.event.ServiceDiscoveryInitializingEvent;\n-import org.apache.dubbo.registry.client.event.ServiceInstancePreRegisteredEvent;\n-import org.apache.dubbo.registry.client.event.ServiceInstancePreUnregisteredEvent;\n-import org.apache.dubbo.registry.client.event.ServiceInstanceRegisteredEvent;\n-import org.apache.dubbo.registry.client.event.ServiceInstanceUnregisteredEvent;\n-import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\n-\n-import static java.lang.String.format;\n-\n-/**\n- * A listener for logging the {@link Event Dubbo event}\n- *\n- * @since 2.7.5\n- */\n-public class LoggingEventListener extends GenericEventListener {\n-\n-    private final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    public void onEvent(ServiceDiscoveryInitializingEvent event) {\n-        info(\"%s is initializing...\", event.getServiceDiscovery());\n-    }\n-\n-    public void onEvent(ServiceDiscoveryInitializedEvent event) {\n-        info(\"%s is initialized.\", event.getServiceDiscovery());\n-    }\n-\n-    public void onEvent(ServiceInstancePreRegisteredEvent event) {\n-        info(\"%s is registering into %s...\", event.getServiceInstance(), event.getSource());\n-    }\n-\n-    public void onEvent(ServiceInstanceRegisteredEvent event) {\n-        info(\"%s has been registered into %s.\", event.getServiceInstance(), event.getSource());\n-    }\n-\n-    public void onEvent(ServiceInstancesChangedEvent event) {\n-        info(\"The service[name : %s] instances[size : %s] has been changed.\", event.getServiceName(), event.getServiceInstances().size());\n-    }\n-\n-    public void onEvent(ServiceInstancePreUnregisteredEvent event) {\n-        info(\"%s is unregistering from %s...\", event.getServiceInstance(), event.getSource());\n-    }\n-\n-    public void onEvent(ServiceInstanceUnregisteredEvent event) {\n-        info(\"%s has been unregistered from %s.\", event.getServiceInstance(), event.getSource());\n-    }\n-\n-    public void onEvent(ServiceDiscoveryDestroyingEvent event) {\n-        info(\"%s is stopping...\", event.getServiceDiscovery());\n-    }\n-\n-    public void onEvent(ServiceDiscoveryDestroyedEvent event) {\n-        info(\"%s is stopped.\", event.getServiceDiscovery());\n-    }\n-\n-    private void info(String pattern, Object... args) {\n-        if (logger.isInfoEnabled()) {\n-            logger.info(format(pattern, args));\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.event.listener;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.event.Event;\r\n+import org.apache.dubbo.event.GenericEventListener;\r\n+import org.apache.dubbo.registry.client.event.ServiceDiscoveryDestroyedEvent;\r\n+import org.apache.dubbo.registry.client.event.ServiceDiscoveryDestroyingEvent;\r\n+import org.apache.dubbo.registry.client.event.ServiceDiscoveryInitializedEvent;\r\n+import org.apache.dubbo.registry.client.event.ServiceDiscoveryInitializingEvent;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstancePreRegisteredEvent;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstancePreUnregisteredEvent;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstanceRegisteredEvent;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstanceUnregisteredEvent;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\r\n+\r\n+import static java.lang.String.format;\r\n+\r\n+/**\r\n+ * A listener for logging the {@link Event Dubbo event}\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class LoggingEventListener extends GenericEventListener {\r\n+\r\n+    private final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    public void onEvent(ServiceDiscoveryInitializingEvent event) {\r\n+        info(\"%s is initializing...\", event.getServiceDiscovery());\r\n+    }\r\n+\r\n+    public void onEvent(ServiceDiscoveryInitializedEvent event) {\r\n+        info(\"%s is initialized.\", event.getServiceDiscovery());\r\n+    }\r\n+\r\n+    public void onEvent(ServiceInstancePreRegisteredEvent event) {\r\n+        info(\"%s is registering into %s...\", event.getServiceInstance(), event.getSource());\r\n+    }\r\n+\r\n+    public void onEvent(ServiceInstanceRegisteredEvent event) {\r\n+        info(\"%s has been registered into %s.\", event.getServiceInstance(), event.getSource());\r\n+    }\r\n+\r\n+    public void onEvent(ServiceInstancesChangedEvent event) {\r\n+        info(\"The service[name : %s] instances[size : %s] has been changed.\", event.getServiceName(), event.getServiceInstances().size());\r\n+    }\r\n+\r\n+    public void onEvent(ServiceInstancePreUnregisteredEvent event) {\r\n+        info(\"%s is unregistering from %s...\", event.getServiceInstance(), event.getSource());\r\n+    }\r\n+\r\n+    public void onEvent(ServiceInstanceUnregisteredEvent event) {\r\n+        info(\"%s has been unregistered from %s.\", event.getServiceInstance(), event.getSource());\r\n+    }\r\n+\r\n+    public void onEvent(ServiceDiscoveryDestroyingEvent event) {\r\n+        info(\"%s is stopping...\", event.getServiceDiscovery());\r\n+    }\r\n+\r\n+    public void onEvent(ServiceDiscoveryDestroyedEvent event) {\r\n+        info(\"%s is stopped.\", event.getServiceDiscovery());\r\n+    }\r\n+\r\n+    private void info(String pattern, Object... args) {\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(format(pattern, args));\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java", "source2": "org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,268 +1,268 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.event.listener;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.event.ConditionalEventListener;\n-import org.apache.dubbo.event.EventListener;\n-import org.apache.dubbo.metadata.MetadataInfo;\n-import org.apache.dubbo.metadata.MetadataInfo.ServiceInfo;\n-import org.apache.dubbo.metadata.MetadataService;\n-import org.apache.dubbo.registry.NotifyListener;\n-import org.apache.dubbo.registry.client.DefaultServiceInstance;\n-import org.apache.dubbo.registry.client.RegistryClusterIdentifier;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\n-import org.apache.dubbo.registry.client.metadata.MetadataUtils;\n-import org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils;\n-import org.apache.dubbo.registry.client.metadata.store.RemoteMetadataServiceImpl;\n-\n-import java.util.ArrayList;\n-import java.util.Collections;\n-import java.util.HashMap;\n-import java.util.HashSet;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Objects;\n-import java.util.Set;\n-import java.util.TreeSet;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE;\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_CLUSTER_KEY;\n-import static org.apache.dubbo.metadata.MetadataInfo.DEFAULT_REVISION;\n-import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.getExportedServicesRevision;\n-\n-/**\n- * The Service Discovery Changed {@link EventListener Event Listener}\n- *\n- * @see ServiceInstancesChangedEvent\n- * @since 2.7.5\n- */\n-public class ServiceInstancesChangedListener implements ConditionalEventListener<ServiceInstancesChangedEvent> {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(ServiceInstancesChangedListener.class);\n-\n-    private final Set<String> serviceNames;\n-    private final ServiceDiscovery serviceDiscovery;\n-    private final String registryId;\n-    private URL url;\n-    private Map<String, Set<NotifyListener>> listeners;\n-\n-    private Map<String, List<ServiceInstance>> allInstances;\n-\n-    private Map<String, List<URL>> serviceUrls;\n-\n-    private Map<String, MetadataInfo> revisionToMetadata;\n-\n-    public ServiceInstancesChangedListener(Set<String> serviceNames, ServiceDiscovery serviceDiscovery) {\n-        this.serviceNames = serviceNames;\n-        this.serviceDiscovery = serviceDiscovery;\n-        this.registryId = serviceDiscovery.getUrl().getParameter(\"id\");\n-        this.listeners = new HashMap<>();\n-        this.allInstances = new HashMap<>();\n-        this.serviceUrls = new HashMap<>();\n-        this.revisionToMetadata = new HashMap<>();\n-    }\n-\n-    /**\n-     * On {@link ServiceInstancesChangedEvent the service instances change event}\n-     *\n-     * @param event {@link ServiceInstancesChangedEvent}\n-     */\n-    public synchronized void onEvent(ServiceInstancesChangedEvent event) {\n-        logger.info(\"Received instance notification, serviceName: \" + event.getServiceName() + \", instances: \" + event.getServiceInstances().size());\n-        String appName = event.getServiceName();\n-        allInstances.put(appName, event.getServiceInstances());\n-        if (logger.isDebugEnabled()) {\n-            logger.debug(event.getServiceInstances().toString());\n-        }\n-\n-        Map<String, List<ServiceInstance>> revisionToInstances = new HashMap<>();\n-        Map<String, Set<String>> localServiceToRevisions = new HashMap<>();\n-        Map<Set<String>, List<URL>> revisionsToUrls = new HashMap();\n-        Map<String, List<URL>> tmpServiceUrls = new HashMap<>();\n-        for (Map.Entry<String, List<ServiceInstance>> entry : allInstances.entrySet()) {\n-            List<ServiceInstance> instances = entry.getValue();\n-            for (ServiceInstance instance : instances) {\n-                String revision = getExportedServicesRevision(instance);\n-                if (DEFAULT_REVISION.equals(revision)) {\n-                    logger.info(\"Find instance without valid service metadata: \" + instance.getAddress());\n-                    continue;\n-                }\n-                List<ServiceInstance> subInstances = revisionToInstances.computeIfAbsent(revision, r -> new LinkedList<>());\n-                subInstances.add(instance);\n-\n-                MetadataInfo metadata = revisionToMetadata.get(revision);\n-                if (metadata == null) {\n-                    metadata = getMetadataInfo(instance);\n-                    logger.info(\"MetadataInfo for instance \" + instance.getAddress() + \"?revision=\" + revision + \" is \" + metadata);\n-                    if (metadata != null) {\n-                        revisionToMetadata.put(revision, metadata);\n-                    } else {\n-\n-                    }\n-                }\n-\n-                if (metadata != null) {\n-                    parseMetadata(revision, metadata, localServiceToRevisions);\n-                    ((DefaultServiceInstance) instance).setServiceMetadata(metadata);\n-                }\n-//                else {\n-//                    logger.error(\"Failed to load service metadata for instance \" + instance);\n-//                    Set<String> set = localServiceToRevisions.computeIfAbsent(url.getServiceKey(), k -> new TreeSet<>());\n-//                    set.add(revision);\n-//                }\n-            }\n-\n-            localServiceToRevisions.forEach((serviceKey, revisions) -> {\n-                List<URL> urls = revisionsToUrls.get(revisions);\n-                if (urls != null) {\n-                    tmpServiceUrls.put(serviceKey, urls);\n-                } else {\n-                    urls = new ArrayList<>();\n-                    for (String r : revisions) {\n-                        for (ServiceInstance i : revisionToInstances.get(r)) {\n-                            urls.add(i.toURL());\n-                        }\n-                    }\n-                    revisionsToUrls.put(revisions, urls);\n-                    tmpServiceUrls.put(serviceKey, urls);\n-                }\n-            });\n-        }\n-\n-        this.serviceUrls = tmpServiceUrls;\n-        this.notifyAddressChanged();\n-    }\n-\n-    private Map<String, Set<String>> parseMetadata(String revision, MetadataInfo metadata, Map<String, Set<String>> localServiceToRevisions) {\n-        Map<String, ServiceInfo> serviceInfos = metadata.getServices();\n-        for (Map.Entry<String, ServiceInfo> entry : serviceInfos.entrySet()) {\n-            Set<String> set = localServiceToRevisions.computeIfAbsent(entry.getKey(), k -> new TreeSet<>());\n-            set.add(revision);\n-        }\n-\n-        return localServiceToRevisions;\n-    }\n-\n-    private MetadataInfo getMetadataInfo(ServiceInstance instance) {\n-        String metadataType = ServiceInstanceMetadataUtils.getMetadataStorageType(instance);\n-        // FIXME, check \"REGISTRY_CLUSTER_KEY\" must be set by every registry implementation.\n-        instance.getExtendParams().putIfAbsent(REGISTRY_CLUSTER_KEY, RegistryClusterIdentifier.getExtension(url).consumerKey(url));\n-        MetadataInfo metadataInfo;\n-        try {\n-            if (logger.isDebugEnabled()) {\n-                logger.info(\"Instance \" + instance.getAddress() + \" is using metadata type \" + metadataType);\n-            }\n-            if (REMOTE_METADATA_STORAGE_TYPE.equals(metadataType)) {\n-                RemoteMetadataServiceImpl remoteMetadataService = MetadataUtils.getRemoteMetadataService();\n-                metadataInfo = remoteMetadataService.getMetadata(instance);\n-            } else {\n-                MetadataService metadataServiceProxy = MetadataUtils.getMetadataServiceProxy(instance, serviceDiscovery);\n-                metadataInfo = metadataServiceProxy.getMetadataInfo(ServiceInstanceMetadataUtils.getExportedServicesRevision(instance));\n-            }\n-            if (logger.isDebugEnabled()) {\n-                logger.info(\"Metadata \" + metadataInfo.toString());\n-            }\n-        } catch (Exception e) {\n-            logger.error(\"Failed to load service metadata, metadata type is \" + metadataType, e);\n-            metadataInfo = null;\n-            // TODO, load metadata backup. Stop getting metadata after x times of failure for one revision?\n-        }\n-        return metadataInfo;\n-    }\n-\n-    private void notifyAddressChanged() {\n-        listeners.forEach((key, notifyListeners) -> {\n-            notifyListeners.forEach(notifyListener -> {\n-                notifyListener.notify(toUrlsWithEmpty(serviceUrls.get(key)));\n-            });\n-        });\n-    }\n-\n-    private List<URL> toUrlsWithEmpty(List<URL> urls) {\n-        if (urls == null) {\n-            urls = Collections.emptyList();\n-        }\n-        return urls;\n-    }\n-\n-    public void addListener(String serviceKey, NotifyListener listener) {\n-        this.listeners.computeIfAbsent(serviceKey, k -> new HashSet<>()).add(listener);\n-    }\n-\n-    public void removeListener(String serviceKey) {\n-        listeners.remove(serviceKey);\n-        if (listeners.isEmpty()) {\n-            serviceDiscovery.removeServiceInstancesChangedListener(this);\n-        }\n-    }\n-\n-    public List<URL> getUrls(String serviceKey) {\n-        return toUrlsWithEmpty(serviceUrls.get(serviceKey));\n-    }\n-\n-    /**\n-     * Get the correlative service name\n-     *\n-     * @return the correlative service name\n-     */\n-    public final Set<String> getServiceNames() {\n-        return serviceNames;\n-    }\n-\n-    public void setUrl(URL url) {\n-        this.url = url;\n-    }\n-\n-    public URL getUrl() {\n-        return url;\n-    }\n-\n-    /**\n-     * @param event {@link ServiceInstancesChangedEvent event}\n-     * @return If service name matches, return <code>true</code>, or <code>false</code>\n-     */\n-    public final boolean accept(ServiceInstancesChangedEvent event) {\n-        return serviceNames.contains(event.getServiceName());\n-    }\n-\n-    public String getRegistryId() {\n-        return registryId;\n-    }\n-\n-    @Override\n-    public boolean equals(Object o) {\n-        if (this == o) {\n-            return true;\n-        }\n-        if (!(o instanceof ServiceInstancesChangedListener)) {\n-            return false;\n-        }\n-        ServiceInstancesChangedListener that = (ServiceInstancesChangedListener) o;\n-        return Objects.equals(getServiceNames(), that.getServiceNames()) && Objects.equals(getRegistryId(), that.getRegistryId());\n-    }\n-\n-    @Override\n-    public int hashCode() {\n-        return Objects.hash(getClass(), getServiceNames(), getRegistryId());\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.event.listener;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.event.ConditionalEventListener;\r\n+import org.apache.dubbo.event.EventListener;\r\n+import org.apache.dubbo.metadata.MetadataInfo;\r\n+import org.apache.dubbo.metadata.MetadataInfo.ServiceInfo;\r\n+import org.apache.dubbo.metadata.MetadataService;\r\n+import org.apache.dubbo.registry.NotifyListener;\r\n+import org.apache.dubbo.registry.client.DefaultServiceInstance;\r\n+import org.apache.dubbo.registry.client.RegistryClusterIdentifier;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\r\n+import org.apache.dubbo.registry.client.metadata.MetadataUtils;\r\n+import org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils;\r\n+import org.apache.dubbo.registry.client.metadata.store.RemoteMetadataServiceImpl;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Collections;\r\n+import java.util.HashMap;\r\n+import java.util.HashSet;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Objects;\r\n+import java.util.Set;\r\n+import java.util.TreeSet;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_CLUSTER_KEY;\r\n+import static org.apache.dubbo.metadata.MetadataInfo.DEFAULT_REVISION;\r\n+import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.getExportedServicesRevision;\r\n+\r\n+/**\r\n+ * The Service Discovery Changed {@link EventListener Event Listener}\r\n+ *\r\n+ * @see ServiceInstancesChangedEvent\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ServiceInstancesChangedListener implements ConditionalEventListener<ServiceInstancesChangedEvent> {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(ServiceInstancesChangedListener.class);\r\n+\r\n+    private final Set<String> serviceNames;\r\n+    private final ServiceDiscovery serviceDiscovery;\r\n+    private final String registryId;\r\n+    private URL url;\r\n+    private Map<String, Set<NotifyListener>> listeners;\r\n+\r\n+    private Map<String, List<ServiceInstance>> allInstances;\r\n+\r\n+    private Map<String, List<URL>> serviceUrls;\r\n+\r\n+    private Map<String, MetadataInfo> revisionToMetadata;\r\n+\r\n+    public ServiceInstancesChangedListener(Set<String> serviceNames, ServiceDiscovery serviceDiscovery) {\r\n+        this.serviceNames = serviceNames;\r\n+        this.serviceDiscovery = serviceDiscovery;\r\n+        this.registryId = serviceDiscovery.getUrl().getParameter(\"id\");\r\n+        this.listeners = new HashMap<>();\r\n+        this.allInstances = new HashMap<>();\r\n+        this.serviceUrls = new HashMap<>();\r\n+        this.revisionToMetadata = new HashMap<>();\r\n+    }\r\n+\r\n+    /**\r\n+     * On {@link ServiceInstancesChangedEvent the service instances change event}\r\n+     *\r\n+     * @param event {@link ServiceInstancesChangedEvent}\r\n+     */\r\n+    public synchronized void onEvent(ServiceInstancesChangedEvent event) {\r\n+        logger.info(\"Received instance notification, serviceName: \" + event.getServiceName() + \", instances: \" + event.getServiceInstances().size());\r\n+        String appName = event.getServiceName();\r\n+        allInstances.put(appName, event.getServiceInstances());\r\n+        if (logger.isDebugEnabled()) {\r\n+            logger.debug(event.getServiceInstances().toString());\r\n+        }\r\n+\r\n+        Map<String, List<ServiceInstance>> revisionToInstances = new HashMap<>();\r\n+        Map<String, Set<String>> localServiceToRevisions = new HashMap<>();\r\n+        Map<Set<String>, List<URL>> revisionsToUrls = new HashMap();\r\n+        Map<String, List<URL>> tmpServiceUrls = new HashMap<>();\r\n+        for (Map.Entry<String, List<ServiceInstance>> entry : allInstances.entrySet()) {\r\n+            List<ServiceInstance> instances = entry.getValue();\r\n+            for (ServiceInstance instance : instances) {\r\n+                String revision = getExportedServicesRevision(instance);\r\n+                if (DEFAULT_REVISION.equals(revision)) {\r\n+                    logger.info(\"Find instance without valid service metadata: \" + instance.getAddress());\r\n+                    continue;\r\n+                }\r\n+                List<ServiceInstance> subInstances = revisionToInstances.computeIfAbsent(revision, r -> new LinkedList<>());\r\n+                subInstances.add(instance);\r\n+\r\n+                MetadataInfo metadata = revisionToMetadata.get(revision);\r\n+                if (metadata == null) {\r\n+                    metadata = getMetadataInfo(instance);\r\n+                    logger.info(\"MetadataInfo for instance \" + instance.getAddress() + \"?revision=\" + revision + \" is \" + metadata);\r\n+                    if (metadata != null) {\r\n+                        revisionToMetadata.put(revision, metadata);\r\n+                    } else {\r\n+\r\n+                    }\r\n+                }\r\n+\r\n+                if (metadata != null) {\r\n+                    parseMetadata(revision, metadata, localServiceToRevisions);\r\n+                    ((DefaultServiceInstance) instance).setServiceMetadata(metadata);\r\n+                }\r\n+//                else {\r\n+//                    logger.error(\"Failed to load service metadata for instance \" + instance);\r\n+//                    Set<String> set = localServiceToRevisions.computeIfAbsent(url.getServiceKey(), k -> new TreeSet<>());\r\n+//                    set.add(revision);\r\n+//                }\r\n+            }\r\n+\r\n+            localServiceToRevisions.forEach((serviceKey, revisions) -> {\r\n+                List<URL> urls = revisionsToUrls.get(revisions);\r\n+                if (urls != null) {\r\n+                    tmpServiceUrls.put(serviceKey, urls);\r\n+                } else {\r\n+                    urls = new ArrayList<>();\r\n+                    for (String r : revisions) {\r\n+                        for (ServiceInstance i : revisionToInstances.get(r)) {\r\n+                            urls.add(i.toURL());\r\n+                        }\r\n+                    }\r\n+                    revisionsToUrls.put(revisions, urls);\r\n+                    tmpServiceUrls.put(serviceKey, urls);\r\n+                }\r\n+            });\r\n+        }\r\n+\r\n+        this.serviceUrls = tmpServiceUrls;\r\n+        this.notifyAddressChanged();\r\n+    }\r\n+\r\n+    private Map<String, Set<String>> parseMetadata(String revision, MetadataInfo metadata, Map<String, Set<String>> localServiceToRevisions) {\r\n+        Map<String, ServiceInfo> serviceInfos = metadata.getServices();\r\n+        for (Map.Entry<String, ServiceInfo> entry : serviceInfos.entrySet()) {\r\n+            Set<String> set = localServiceToRevisions.computeIfAbsent(entry.getKey(), k -> new TreeSet<>());\r\n+            set.add(revision);\r\n+        }\r\n+\r\n+        return localServiceToRevisions;\r\n+    }\r\n+\r\n+    private MetadataInfo getMetadataInfo(ServiceInstance instance) {\r\n+        String metadataType = ServiceInstanceMetadataUtils.getMetadataStorageType(instance);\r\n+        // FIXME, check \"REGISTRY_CLUSTER_KEY\" must be set by every registry implementation.\r\n+        instance.getExtendParams().putIfAbsent(REGISTRY_CLUSTER_KEY, RegistryClusterIdentifier.getExtension(url).consumerKey(url));\r\n+        MetadataInfo metadataInfo;\r\n+        try {\r\n+            if (logger.isDebugEnabled()) {\r\n+                logger.info(\"Instance \" + instance.getAddress() + \" is using metadata type \" + metadataType);\r\n+            }\r\n+            if (REMOTE_METADATA_STORAGE_TYPE.equals(metadataType)) {\r\n+                RemoteMetadataServiceImpl remoteMetadataService = MetadataUtils.getRemoteMetadataService();\r\n+                metadataInfo = remoteMetadataService.getMetadata(instance);\r\n+            } else {\r\n+                MetadataService metadataServiceProxy = MetadataUtils.getMetadataServiceProxy(instance, serviceDiscovery);\r\n+                metadataInfo = metadataServiceProxy.getMetadataInfo(ServiceInstanceMetadataUtils.getExportedServicesRevision(instance));\r\n+            }\r\n+            if (logger.isDebugEnabled()) {\r\n+                logger.info(\"Metadata \" + metadataInfo.toString());\r\n+            }\r\n+        } catch (Exception e) {\r\n+            logger.error(\"Failed to load service metadata, metadata type is \" + metadataType, e);\r\n+            metadataInfo = null;\r\n+            // TODO, load metadata backup. Stop getting metadata after x times of failure for one revision?\r\n+        }\r\n+        return metadataInfo;\r\n+    }\r\n+\r\n+    private void notifyAddressChanged() {\r\n+        listeners.forEach((key, notifyListeners) -> {\r\n+            notifyListeners.forEach(notifyListener -> {\r\n+                notifyListener.notify(toUrlsWithEmpty(serviceUrls.get(key)));\r\n+            });\r\n+        });\r\n+    }\r\n+\r\n+    private List<URL> toUrlsWithEmpty(List<URL> urls) {\r\n+        if (urls == null) {\r\n+            urls = Collections.emptyList();\r\n+        }\r\n+        return urls;\r\n+    }\r\n+\r\n+    public void addListener(String serviceKey, NotifyListener listener) {\r\n+        this.listeners.computeIfAbsent(serviceKey, k -> new HashSet<>()).add(listener);\r\n+    }\r\n+\r\n+    public void removeListener(String serviceKey) {\r\n+        listeners.remove(serviceKey);\r\n+        if (listeners.isEmpty()) {\r\n+            serviceDiscovery.removeServiceInstancesChangedListener(this);\r\n+        }\r\n+    }\r\n+\r\n+    public List<URL> getUrls(String serviceKey) {\r\n+        return toUrlsWithEmpty(serviceUrls.get(serviceKey));\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the correlative service name\r\n+     *\r\n+     * @return the correlative service name\r\n+     */\r\n+    public final Set<String> getServiceNames() {\r\n+        return serviceNames;\r\n+    }\r\n+\r\n+    public void setUrl(URL url) {\r\n+        this.url = url;\r\n+    }\r\n+\r\n+    public URL getUrl() {\r\n+        return url;\r\n+    }\r\n+\r\n+    /**\r\n+     * @param event {@link ServiceInstancesChangedEvent event}\r\n+     * @return If service name matches, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    public final boolean accept(ServiceInstancesChangedEvent event) {\r\n+        return serviceNames.contains(event.getServiceName());\r\n+    }\r\n+\r\n+    public String getRegistryId() {\r\n+        return registryId;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean equals(Object o) {\r\n+        if (this == o) {\r\n+            return true;\r\n+        }\r\n+        if (!(o instanceof ServiceInstancesChangedListener)) {\r\n+            return false;\r\n+        }\r\n+        ServiceInstancesChangedListener that = (ServiceInstancesChangedListener) o;\r\n+        return Objects.equals(getServiceNames(), that.getServiceNames()) && Objects.equals(getRegistryId(), that.getRegistryId());\r\n+    }\r\n+\r\n+    @Override\r\n+    public int hashCode() {\r\n+        return Objects.hash(getClass(), getServiceNames(), getRegistryId());\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/metadata/MetadataServiceNameMapping.java", "source2": "org/apache/dubbo/registry/client/metadata/MetadataServiceNameMapping.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,86 +1,86 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.metadata;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.metadata.MappingListener;\n-import org.apache.dubbo.metadata.MetadataService;\n-import org.apache.dubbo.metadata.ServiceNameMapping;\n-import org.apache.dubbo.metadata.report.MetadataReport;\n-import org.apache.dubbo.metadata.report.MetadataReportInstance;\n-import org.apache.dubbo.registry.client.RegistryClusterIdentifier;\n-\n-import java.util.LinkedHashSet;\n-import java.util.List;\n-import java.util.Set;\n-\n-import static java.util.Arrays.asList;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.rpc.model.ApplicationModel.getName;\n-\n-public class MetadataServiceNameMapping implements ServiceNameMapping {\n-    private static final List<String> IGNORED_SERVICE_INTERFACES = asList(MetadataService.class.getName());\n-\n-    @Override\n-    public void map(URL url) {\n-        String serviceInterface = url.getServiceInterface();\n-        String group = url.getParameter(GROUP_KEY);\n-        String version = url.getParameter(VERSION_KEY);\n-        String protocol = url.getProtocol();\n-\n-        if (IGNORED_SERVICE_INTERFACES.contains(serviceInterface)) {\n-            return;\n-        }\n-        String registryCluster = getRegistryCluster(url);\n-        MetadataReport metadataReport = MetadataReportInstance.getMetadataReport(registryCluster);\n-        metadataReport.registerServiceAppMapping(ServiceNameMapping.buildGroup(serviceInterface, group, version, protocol), getName(), url);\n-    }\n-\n-    @Override\n-    public Set<String> getAndListen(URL url, MappingListener mappingListener) {\n-        String serviceInterface = url.getServiceInterface();\n-        String group = url.getParameter(GROUP_KEY);\n-        String version = url.getParameter(VERSION_KEY);\n-        String protocol = url.getProtocol();\n-\n-        String mappingKey = ServiceNameMapping.buildGroup(serviceInterface, group, version, protocol);\n-        Set<String> serviceNames = new LinkedHashSet<>();\n-        String registryCluster = getRegistryCluster(url);\n-        MetadataReport metadataReport = MetadataReportInstance.getMetadataReport(registryCluster);\n-        Set<String> apps = metadataReport.getServiceAppMapping(\n-                mappingKey,\n-                mappingListener,\n-                url);\n-        if (CollectionUtils.isNotEmpty(apps)) {\n-            serviceNames.addAll(apps);\n-        }\n-\n-        return serviceNames;\n-    }\n-\n-    protected String getRegistryCluster(URL url) {\n-        String registryCluster = RegistryClusterIdentifier.getExtension(url).providerKey(url);\n-\n-        int i = registryCluster.indexOf(\",\");\n-        if (i > 0) {\n-            registryCluster = registryCluster.substring(0, i);\n-        }\n-        return registryCluster;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.metadata;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.metadata.MappingListener;\r\n+import org.apache.dubbo.metadata.MetadataService;\r\n+import org.apache.dubbo.metadata.ServiceNameMapping;\r\n+import org.apache.dubbo.metadata.report.MetadataReport;\r\n+import org.apache.dubbo.metadata.report.MetadataReportInstance;\r\n+import org.apache.dubbo.registry.client.RegistryClusterIdentifier;\r\n+\r\n+import java.util.LinkedHashSet;\r\n+import java.util.List;\r\n+import java.util.Set;\r\n+\r\n+import static java.util.Arrays.asList;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.rpc.model.ApplicationModel.getName;\r\n+\r\n+public class MetadataServiceNameMapping implements ServiceNameMapping {\r\n+    private static final List<String> IGNORED_SERVICE_INTERFACES = asList(MetadataService.class.getName());\r\n+\r\n+    @Override\r\n+    public void map(URL url) {\r\n+        String serviceInterface = url.getServiceInterface();\r\n+        String group = url.getParameter(GROUP_KEY);\r\n+        String version = url.getParameter(VERSION_KEY);\r\n+        String protocol = url.getProtocol();\r\n+\r\n+        if (IGNORED_SERVICE_INTERFACES.contains(serviceInterface)) {\r\n+            return;\r\n+        }\r\n+        String registryCluster = getRegistryCluster(url);\r\n+        MetadataReport metadataReport = MetadataReportInstance.getMetadataReport(registryCluster);\r\n+        metadataReport.registerServiceAppMapping(ServiceNameMapping.buildGroup(serviceInterface, group, version, protocol), getName(), url);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<String> getAndListen(URL url, MappingListener mappingListener) {\r\n+        String serviceInterface = url.getServiceInterface();\r\n+        String group = url.getParameter(GROUP_KEY);\r\n+        String version = url.getParameter(VERSION_KEY);\r\n+        String protocol = url.getProtocol();\r\n+\r\n+        String mappingKey = ServiceNameMapping.buildGroup(serviceInterface, group, version, protocol);\r\n+        Set<String> serviceNames = new LinkedHashSet<>();\r\n+        String registryCluster = getRegistryCluster(url);\r\n+        MetadataReport metadataReport = MetadataReportInstance.getMetadataReport(registryCluster);\r\n+        Set<String> apps = metadataReport.getServiceAppMapping(\r\n+                mappingKey,\r\n+                mappingListener,\r\n+                url);\r\n+        if (CollectionUtils.isNotEmpty(apps)) {\r\n+            serviceNames.addAll(apps);\r\n+        }\r\n+\r\n+        return serviceNames;\r\n+    }\r\n+\r\n+    protected String getRegistryCluster(URL url) {\r\n+        String registryCluster = RegistryClusterIdentifier.getExtension(url).providerKey(url);\r\n+\r\n+        int i = registryCluster.indexOf(\",\");\r\n+        if (i > 0) {\r\n+            registryCluster = registryCluster.substring(0, i);\r\n+        }\r\n+        return registryCluster;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/metadata/MetadataServiceURLBuilder.java", "source2": "org/apache/dubbo/registry/client/metadata/MetadataServiceURLBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,40 +1,40 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.metadata;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-\n-import java.util.List;\n-\n-/**\n- * Used to build metadata service url from ServiceInstance.\n- *\n- * @since 2.7.5\n- */\n-@SPI\n-public interface MetadataServiceURLBuilder {\n-\n-    /**\n-     * Build the {@link URL URLs} from the specified {@link ServiceInstance}\n-     *\n-     * @param serviceInstance {@link ServiceInstance}\n-     * @return TODO, usually, we generate one metadata url from one instance. There's no scenario to return a metadata url list.\n-     */\n-    List<URL> build(ServiceInstance serviceInstance);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.metadata;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * Used to build metadata service url from ServiceInstance.\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+@SPI\r\n+public interface MetadataServiceURLBuilder {\r\n+\r\n+    /**\r\n+     * Build the {@link URL URLs} from the specified {@link ServiceInstance}\r\n+     *\r\n+     * @param serviceInstance {@link ServiceInstance}\r\n+     * @return TODO, usually, we generate one metadata url from one instance. There's no scenario to return a metadata url list.\r\n+     */\r\n+    List<URL> build(ServiceInstance serviceInstance);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/metadata/MetadataServiceURLParamsMetadataCustomizer.java", "source2": "org/apache/dubbo/registry/client/metadata/MetadataServiceURLParamsMetadataCustomizer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,65 +1,65 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.metadata;\n-\n-import org.apache.dubbo.metadata.MetadataService;\n-import org.apache.dubbo.metadata.WritableMetadataService;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.ServiceInstanceCustomizer;\n-\n-import java.util.Map;\n-import java.util.SortedSet;\n-\n-import static org.apache.dubbo.common.utils.StringUtils.isBlank;\n-import static org.apache.dubbo.metadata.MetadataService.toURLs;\n-import static org.apache.dubbo.metadata.WritableMetadataService.getDefaultExtension;\n-import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME;\n-import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.getMetadataServiceParameter;\n-\n-public class MetadataServiceURLParamsMetadataCustomizer implements ServiceInstanceCustomizer {\n-\n-    @Override\n-    public void customize(ServiceInstance serviceInstance) {\n-\n-        Map<String, String> metadata = serviceInstance.getMetadata();\n-\n-        String propertyName = resolveMetadataPropertyName(serviceInstance);\n-        String propertyValue = resolveMetadataPropertyValue(serviceInstance);\n-\n-        if (!isBlank(propertyName) && !isBlank(propertyValue)) {\n-            metadata.put(propertyName, propertyValue);\n-        }\n-    }\n-\n-    private String resolveMetadataPropertyName(ServiceInstance serviceInstance) {\n-        return METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME;\n-    }\n-\n-    private String resolveMetadataPropertyValue(ServiceInstance serviceInstance) {\n-        WritableMetadataService writableMetadataService = getDefaultExtension();\n-\n-        String serviceInterface = MetadataService.class.getName();\n-\n-        String group = serviceInstance.getServiceName();\n-\n-        String version = MetadataService.VERSION;\n-\n-        SortedSet<String> urls = writableMetadataService.getExportedURLs(serviceInterface, group, version);\n-\n-        return getMetadataServiceParameter(toURLs(urls));\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.metadata;\r\n+\r\n+import org.apache.dubbo.metadata.MetadataService;\r\n+import org.apache.dubbo.metadata.WritableMetadataService;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.ServiceInstanceCustomizer;\r\n+\r\n+import java.util.Map;\r\n+import java.util.SortedSet;\r\n+\r\n+import static org.apache.dubbo.common.utils.StringUtils.isBlank;\r\n+import static org.apache.dubbo.metadata.MetadataService.toURLs;\r\n+import static org.apache.dubbo.metadata.WritableMetadataService.getDefaultExtension;\r\n+import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME;\r\n+import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.getMetadataServiceParameter;\r\n+\r\n+public class MetadataServiceURLParamsMetadataCustomizer implements ServiceInstanceCustomizer {\r\n+\r\n+    @Override\r\n+    public void customize(ServiceInstance serviceInstance) {\r\n+\r\n+        Map<String, String> metadata = serviceInstance.getMetadata();\r\n+\r\n+        String propertyName = resolveMetadataPropertyName(serviceInstance);\r\n+        String propertyValue = resolveMetadataPropertyValue(serviceInstance);\r\n+\r\n+        if (!isBlank(propertyName) && !isBlank(propertyValue)) {\r\n+            metadata.put(propertyName, propertyValue);\r\n+        }\r\n+    }\r\n+\r\n+    private String resolveMetadataPropertyName(ServiceInstance serviceInstance) {\r\n+        return METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME;\r\n+    }\r\n+\r\n+    private String resolveMetadataPropertyValue(ServiceInstance serviceInstance) {\r\n+        WritableMetadataService writableMetadataService = getDefaultExtension();\r\n+\r\n+        String serviceInterface = MetadataService.class.getName();\r\n+\r\n+        String group = serviceInstance.getServiceName();\r\n+\r\n+        String version = MetadataService.VERSION;\r\n+\r\n+        SortedSet<String> urls = writableMetadataService.getExportedURLs(serviceInterface, group, version);\r\n+\r\n+        return getMetadataServiceParameter(toURLs(urls));\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/metadata/MetadataUtils.java", "source2": "org/apache/dubbo/registry/client/metadata/MetadataUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,102 +1,102 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.metadata;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.metadata.MetadataService;\n-import org.apache.dubbo.metadata.WritableMetadataService;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.metadata.store.RemoteMetadataServiceImpl;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Protocol;\n-import org.apache.dubbo.rpc.ProxyFactory;\n-\n-import java.util.List;\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.METADATA_SERVICE_URLS_PROPERTY_NAME;\n-\n-public class MetadataUtils {\n-\n-    private static final Object REMOTE_LOCK = new Object();\n-\n-    public static ConcurrentMap<String, MetadataService> metadataServiceProxies = new ConcurrentHashMap<>();\n-\n-    private static final ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();\n-\n-    private static final Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();\n-\n-    public static RemoteMetadataServiceImpl remoteMetadataService;\n-\n-    public static WritableMetadataService localMetadataService;\n-\n-    public static RemoteMetadataServiceImpl getRemoteMetadataService() {\n-        if (remoteMetadataService == null) {\n-            synchronized (REMOTE_LOCK) {\n-                if (remoteMetadataService == null) {\n-                    remoteMetadataService = new RemoteMetadataServiceImpl(WritableMetadataService.getDefaultExtension());\n-                }\n-            }\n-        }\n-        return remoteMetadataService;\n-    }\n-\n-    public static void publishServiceDefinition(URL url) {\n-        // store in local\n-        WritableMetadataService.getDefaultExtension().publishServiceDefinition(url);\n-        // send to remote\n-//        if (REMOTE_METADATA_STORAGE_TYPE.equals(url.getParameter(METADATA_KEY))) {\n-        getRemoteMetadataService().publishServiceDefinition(url);\n-//        }\n-    }\n-\n-    public static MetadataService getMetadataServiceProxy(ServiceInstance instance, ServiceDiscovery serviceDiscovery) {\n-        String key = instance.getServiceName() + \"##\" +\n-                ServiceInstanceMetadataUtils.getExportedServicesRevision(instance);\n-        return metadataServiceProxies.computeIfAbsent(key, k -> {\n-            MetadataServiceURLBuilder builder = null;\n-            ExtensionLoader<MetadataServiceURLBuilder> loader\n-                    = ExtensionLoader.getExtensionLoader(MetadataServiceURLBuilder.class);\n-\n-            Map<String, String> metadata = instance.getMetadata();\n-            // METADATA_SERVICE_URLS_PROPERTY_NAME is a unique key exists only on instances of spring-cloud-alibaba.\n-            String dubboURLsJSON = metadata.get(METADATA_SERVICE_URLS_PROPERTY_NAME);\n-            if (StringUtils.isNotEmpty(dubboURLsJSON)) {\n-                builder = loader.getExtension(SpringCloudMetadataServiceURLBuilder.NAME);\n-            } else {\n-                builder = loader.getExtension(StandardMetadataServiceURLBuilder.NAME);\n-            }\n-\n-            List<URL> urls = builder.build(instance);\n-            if (CollectionUtils.isEmpty(urls)) {\n-                throw new IllegalStateException(\"You have enabled introspection service discovery mode for instance \"\n-                        + instance + \", but no metadata service can build from it.\");\n-            }\n-\n-            // Simply rely on the first metadata url, as stated in MetadataServiceURLBuilder.\n-            Invoker<MetadataService> invoker = protocol.refer(MetadataService.class, urls.get(0));\n-\n-            return proxyFactory.getProxy(invoker);\n-        });\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.metadata;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.metadata.MetadataService;\r\n+import org.apache.dubbo.metadata.WritableMetadataService;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.metadata.store.RemoteMetadataServiceImpl;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Protocol;\r\n+import org.apache.dubbo.rpc.ProxyFactory;\r\n+\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.METADATA_SERVICE_URLS_PROPERTY_NAME;\r\n+\r\n+public class MetadataUtils {\r\n+\r\n+    private static final Object REMOTE_LOCK = new Object();\r\n+\r\n+    public static ConcurrentMap<String, MetadataService> metadataServiceProxies = new ConcurrentHashMap<>();\r\n+\r\n+    private static final ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();\r\n+\r\n+    private static final Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();\r\n+\r\n+    public static RemoteMetadataServiceImpl remoteMetadataService;\r\n+\r\n+    public static WritableMetadataService localMetadataService;\r\n+\r\n+    public static RemoteMetadataServiceImpl getRemoteMetadataService() {\r\n+        if (remoteMetadataService == null) {\r\n+            synchronized (REMOTE_LOCK) {\r\n+                if (remoteMetadataService == null) {\r\n+                    remoteMetadataService = new RemoteMetadataServiceImpl(WritableMetadataService.getDefaultExtension());\r\n+                }\r\n+            }\r\n+        }\r\n+        return remoteMetadataService;\r\n+    }\r\n+\r\n+    public static void publishServiceDefinition(URL url) {\r\n+        // store in local\r\n+        WritableMetadataService.getDefaultExtension().publishServiceDefinition(url);\r\n+        // send to remote\r\n+//        if (REMOTE_METADATA_STORAGE_TYPE.equals(url.getParameter(METADATA_KEY))) {\r\n+        getRemoteMetadataService().publishServiceDefinition(url);\r\n+//        }\r\n+    }\r\n+\r\n+    public static MetadataService getMetadataServiceProxy(ServiceInstance instance, ServiceDiscovery serviceDiscovery) {\r\n+        String key = instance.getServiceName() + \"##\" +\r\n+                ServiceInstanceMetadataUtils.getExportedServicesRevision(instance);\r\n+        return metadataServiceProxies.computeIfAbsent(key, k -> {\r\n+            MetadataServiceURLBuilder builder = null;\r\n+            ExtensionLoader<MetadataServiceURLBuilder> loader\r\n+                    = ExtensionLoader.getExtensionLoader(MetadataServiceURLBuilder.class);\r\n+\r\n+            Map<String, String> metadata = instance.getMetadata();\r\n+            // METADATA_SERVICE_URLS_PROPERTY_NAME is a unique key exists only on instances of spring-cloud-alibaba.\r\n+            String dubboURLsJSON = metadata.get(METADATA_SERVICE_URLS_PROPERTY_NAME);\r\n+            if (StringUtils.isNotEmpty(dubboURLsJSON)) {\r\n+                builder = loader.getExtension(SpringCloudMetadataServiceURLBuilder.NAME);\r\n+            } else {\r\n+                builder = loader.getExtension(StandardMetadataServiceURLBuilder.NAME);\r\n+            }\r\n+\r\n+            List<URL> urls = builder.build(instance);\r\n+            if (CollectionUtils.isEmpty(urls)) {\r\n+                throw new IllegalStateException(\"You have enabled introspection service discovery mode for instance \"\r\n+                        + instance + \", but no metadata service can build from it.\");\r\n+            }\r\n+\r\n+            // Simply rely on the first metadata url, as stated in MetadataServiceURLBuilder.\r\n+            Invoker<MetadataService> invoker = protocol.refer(MetadataService.class, urls.get(0));\r\n+\r\n+            return proxyFactory.getProxy(invoker);\r\n+        });\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizer.java", "source2": "org/apache/dubbo/registry/client/metadata/ProtocolPortsMetadataCustomizer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,55 +1,55 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.metadata;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.metadata.MetadataService;\n-import org.apache.dubbo.metadata.WritableMetadataService;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.ServiceInstanceCustomizer;\n-import org.apache.dubbo.rpc.Protocol;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.setEndpoints;\n-\n-/**\n- * A Class to customize the ports of {@link Protocol protocols} into\n- * {@link ServiceInstance#getMetadata() the metadata of service instance}\n- *\n- * @since 2.7.5\n- */\n-public class ProtocolPortsMetadataCustomizer implements ServiceInstanceCustomizer {\n-\n-    @Override\n-    public void customize(ServiceInstance serviceInstance) {\n-        WritableMetadataService writableMetadataService = WritableMetadataService.getDefaultExtension();\n-\n-        Map<String, Integer> protocols = new HashMap<>();\n-        writableMetadataService.getExportedURLs()\n-                .stream()\n-                .map(URL::valueOf)\n-                .filter(url -> !MetadataService.class.getName().equals(url.getServiceInterface()))\n-                .forEach(url -> {\n-                    // TODO, same protocol listen on different ports will override with each other.\n-                    protocols.put(url.getProtocol(), url.getPort());\n-                });\n-\n-        setEndpoints(serviceInstance, protocols);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.metadata;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.metadata.MetadataService;\r\n+import org.apache.dubbo.metadata.WritableMetadataService;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.ServiceInstanceCustomizer;\r\n+import org.apache.dubbo.rpc.Protocol;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.setEndpoints;\r\n+\r\n+/**\r\n+ * A Class to customize the ports of {@link Protocol protocols} into\r\n+ * {@link ServiceInstance#getMetadata() the metadata of service instance}\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ProtocolPortsMetadataCustomizer implements ServiceInstanceCustomizer {\r\n+\r\n+    @Override\r\n+    public void customize(ServiceInstance serviceInstance) {\r\n+        WritableMetadataService writableMetadataService = WritableMetadataService.getDefaultExtension();\r\n+\r\n+        Map<String, Integer> protocols = new HashMap<>();\r\n+        writableMetadataService.getExportedURLs()\r\n+                .stream()\r\n+                .map(URL::valueOf)\r\n+                .filter(url -> !MetadataService.class.getName().equals(url.getServiceInterface()))\r\n+                .forEach(url -> {\r\n+                    // TODO, same protocol listen on different ports will override with each other.\r\n+                    protocols.put(url.getProtocol(), url.getPort());\r\n+                });\r\n+\r\n+        setEndpoints(serviceInstance, protocols);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/metadata/RestProtocolSubscribedURLsSynthesizer.java", "source2": "org/apache/dubbo/registry/client/metadata/RestProtocolSubscribedURLsSynthesizer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,67 +1,67 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.metadata;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.URLBuilder;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.rpc.Protocol;\n-\n-import java.util.Collection;\n-import java.util.List;\n-import java.util.stream.Collectors;\n-\n-import static java.lang.Boolean.TRUE;\n-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER;\n-import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\n-import static org.apache.dubbo.registry.Constants.REGISTER_KEY;\n-\n-/**\n- * {@link SubscribedURLsSynthesizer} implementation for REST {@link Protocol protocol}\n- *\n- * @since 2.7.5\n- */\n-public class RestProtocolSubscribedURLsSynthesizer implements SubscribedURLsSynthesizer {\n-\n-    @Override\n-    public boolean supports(URL subscribedURL) {\n-        return \"rest\".equals(subscribedURL.getProtocol()) ||\n-                \"rest\".equals(subscribedURL.getParameter(PROTOCOL_KEY));\n-    }\n-\n-    @Override\n-    public List<URL> synthesize(URL subscribedURL, Collection<ServiceInstance> serviceInstances) {\n-\n-        String protocol = subscribedURL.getParameter(PROTOCOL_KEY);\n-\n-        return serviceInstances.stream().map(serviceInstance -> {\n-            URLBuilder urlBuilder = new URLBuilder()\n-                    .setProtocol(protocol)\n-                    .setHost(serviceInstance.getHost())\n-                    .setPort(serviceInstance.getPort())\n-                    .setPath(subscribedURL.getServiceInterface())\n-                    .addParameter(SIDE_KEY, PROVIDER)\n-                    .addParameter(APPLICATION_KEY, serviceInstance.getServiceName())\n-                    .addParameter(REGISTER_KEY, TRUE.toString());\n-\n-            return urlBuilder.build();\n-        }).collect(Collectors.toList());\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.metadata;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.URLBuilder;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.rpc.Protocol;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.List;\r\n+import java.util.stream.Collectors;\r\n+\r\n+import static java.lang.Boolean.TRUE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\r\n+import static org.apache.dubbo.registry.Constants.REGISTER_KEY;\r\n+\r\n+/**\r\n+ * {@link SubscribedURLsSynthesizer} implementation for REST {@link Protocol protocol}\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class RestProtocolSubscribedURLsSynthesizer implements SubscribedURLsSynthesizer {\r\n+\r\n+    @Override\r\n+    public boolean supports(URL subscribedURL) {\r\n+        return \"rest\".equals(subscribedURL.getProtocol()) ||\r\n+                \"rest\".equals(subscribedURL.getParameter(PROTOCOL_KEY));\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<URL> synthesize(URL subscribedURL, Collection<ServiceInstance> serviceInstances) {\r\n+\r\n+        String protocol = subscribedURL.getParameter(PROTOCOL_KEY);\r\n+\r\n+        return serviceInstances.stream().map(serviceInstance -> {\r\n+            URLBuilder urlBuilder = new URLBuilder()\r\n+                    .setProtocol(protocol)\r\n+                    .setHost(serviceInstance.getHost())\r\n+                    .setPort(serviceInstance.getPort())\r\n+                    .setPath(subscribedURL.getServiceInterface())\r\n+                    .addParameter(SIDE_KEY, PROVIDER)\r\n+                    .addParameter(APPLICATION_KEY, serviceInstance.getServiceName())\r\n+                    .addParameter(REGISTER_KEY, TRUE.toString());\r\n+\r\n+            return urlBuilder.build();\r\n+        }).collect(Collectors.toList());\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java", "source2": "org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataCustomizer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,88 +1,88 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.metadata;\n-\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.infra.InfraAdapter;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.metadata.MetadataInfo;\n-import org.apache.dubbo.metadata.MetadataParamsFilter;\n-import org.apache.dubbo.metadata.WritableMetadataService;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.ServiceInstanceCustomizer;\n-import org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.Set;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\n-\n-/**\n- *\n- */\n-public class ServiceInstanceMetadataCustomizer implements ServiceInstanceCustomizer {\n-\n-    @Override\n-    public void customize(ServiceInstance serviceInstance) {\n-        Map<String, String> params = new HashMap<>();\n-\n-        ExtensionLoader<MetadataParamsFilter> loader = ExtensionLoader.getExtensionLoader(MetadataParamsFilter.class);\n-        Set<MetadataParamsFilter> paramsFilters = loader.getSupportedExtensionInstances();\n-\n-        InMemoryWritableMetadataService localMetadataService\n-                = (InMemoryWritableMetadataService) WritableMetadataService.getDefaultExtension();\n-        // pick the first interface metadata available.\n-        // FIXME, check the same key in different urls has the same value\n-        MetadataInfo metadataInfo = localMetadataService.getMetadataInfos().values().iterator().next();\n-        MetadataInfo.ServiceInfo serviceInfo = metadataInfo.getServices().values().iterator().next();\n-        Map<String, String> allParams = new HashMap<>(serviceInfo.getUrl().getParameters());\n-\n-        // load instance params users want to load.\n-        // TODO, duplicate logic with that in ApplicationConfig\n-        Set<InfraAdapter> adapters = ExtensionLoader.getExtensionLoader(InfraAdapter.class).getSupportedExtensionInstances();\n-        if (CollectionUtils.isNotEmpty(adapters)) {\n-            Map<String, String> inputParameters = new HashMap<>();\n-            inputParameters.put(APPLICATION_KEY, ApplicationModel.getName());\n-            for (InfraAdapter adapter : adapters) {\n-                Map<String, String> extraParameters = adapter.getExtraAttributes(inputParameters);\n-                if (CollectionUtils.isNotEmptyMap(extraParameters)) {\n-                    extraParameters.forEach(allParams::putIfAbsent);\n-                }\n-            }\n-        }\n-\n-        if (CollectionUtils.isEmpty(paramsFilters)) {\n-            serviceInstance.getMetadata().putAll(allParams);\n-            return;\n-        }\n-\n-        paramsFilters.forEach(filter -> {\n-            String[] included = filter.instanceParamsIncluded();\n-            if (included == null) {\n-                serviceInstance.getMetadata().putAll(allParams);\n-            } else {\n-                for (String p : included) {\n-                    if (allParams.get(p) != null) {\n-                        serviceInstance.getMetadata().put(p, allParams.get(p));\n-                    }\n-                }\n-            }\n-        });\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.metadata;\r\n+\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.infra.InfraAdapter;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.metadata.MetadataInfo;\r\n+import org.apache.dubbo.metadata.MetadataParamsFilter;\r\n+import org.apache.dubbo.metadata.WritableMetadataService;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.ServiceInstanceCustomizer;\r\n+import org.apache.dubbo.registry.client.metadata.store.InMemoryWritableMetadataService;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+public class ServiceInstanceMetadataCustomizer implements ServiceInstanceCustomizer {\r\n+\r\n+    @Override\r\n+    public void customize(ServiceInstance serviceInstance) {\r\n+        Map<String, String> params = new HashMap<>();\r\n+\r\n+        ExtensionLoader<MetadataParamsFilter> loader = ExtensionLoader.getExtensionLoader(MetadataParamsFilter.class);\r\n+        Set<MetadataParamsFilter> paramsFilters = loader.getSupportedExtensionInstances();\r\n+\r\n+        InMemoryWritableMetadataService localMetadataService\r\n+                = (InMemoryWritableMetadataService) WritableMetadataService.getDefaultExtension();\r\n+        // pick the first interface metadata available.\r\n+        // FIXME, check the same key in different urls has the same value\r\n+        MetadataInfo metadataInfo = localMetadataService.getMetadataInfos().values().iterator().next();\r\n+        MetadataInfo.ServiceInfo serviceInfo = metadataInfo.getServices().values().iterator().next();\r\n+        Map<String, String> allParams = new HashMap<>(serviceInfo.getUrl().getParameters());\r\n+\r\n+        // load instance params users want to load.\r\n+        // TODO, duplicate logic with that in ApplicationConfig\r\n+        Set<InfraAdapter> adapters = ExtensionLoader.getExtensionLoader(InfraAdapter.class).getSupportedExtensionInstances();\r\n+        if (CollectionUtils.isNotEmpty(adapters)) {\r\n+            Map<String, String> inputParameters = new HashMap<>();\r\n+            inputParameters.put(APPLICATION_KEY, ApplicationModel.getName());\r\n+            for (InfraAdapter adapter : adapters) {\r\n+                Map<String, String> extraParameters = adapter.getExtraAttributes(inputParameters);\r\n+                if (CollectionUtils.isNotEmptyMap(extraParameters)) {\r\n+                    extraParameters.forEach(allParams::putIfAbsent);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        if (CollectionUtils.isEmpty(paramsFilters)) {\r\n+            serviceInstance.getMetadata().putAll(allParams);\r\n+            return;\r\n+        }\r\n+\r\n+        paramsFilters.forEach(filter -> {\r\n+            String[] included = filter.instanceParamsIncluded();\r\n+            if (included == null) {\r\n+                serviceInstance.getMetadata().putAll(allParams);\r\n+            } else {\r\n+                for (String p : included) {\r\n+                    if (allParams.get(p) != null) {\r\n+                        serviceInstance.getMetadata().put(p, allParams.get(p));\r\n+                    }\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataUtils.java", "source2": "org/apache/dubbo/registry/client/metadata/ServiceInstanceMetadataUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,318 +1,318 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.metadata;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.metadata.MetadataInfo;\n-import org.apache.dubbo.metadata.MetadataService;\n-import org.apache.dubbo.metadata.WritableMetadataService;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.metadata.store.RemoteMetadataServiceImpl;\n-import org.apache.dubbo.registry.support.AbstractRegistryFactory;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-\n-import com.alibaba.fastjson.JSON;\n-\n-import java.util.ArrayList;\n-import java.util.HashMap;\n-import java.util.LinkedHashMap;\n-import java.util.List;\n-import java.util.Map;\n-\n-import static java.util.Collections.emptyMap;\n-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PORT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMESTAMP_KEY;\n-import static org.apache.dubbo.common.utils.StringUtils.isBlank;\n-import static org.apache.dubbo.registry.integration.InterfaceCompatibleRegistryProtocol.DEFAULT_REGISTER_PROVIDER_KEYS;\n-import static org.apache.dubbo.rpc.Constants.DEPRECATED_KEY;\n-import static org.apache.dubbo.rpc.Constants.ID_KEY;\n-\n-/**\n- * The Utilities class for the {@link ServiceInstance#getMetadata() metadata of the service instance}\n- *\n- * @see StandardMetadataServiceURLBuilder\n- * @see ServiceInstance#getMetadata()\n- * @see MetadataService\n- * @see URL\n- * @since 2.7.5\n- */\n-public class ServiceInstanceMetadataUtils {\n-\n-    /**\n-     * The prefix of {@link MetadataService} : \"dubbo.metadata-service.\"\n-     */\n-    public static final String METADATA_SERVICE_PREFIX = \"dubbo.metadata-service.\";\n-\n-    public static final String ENDPOINTS = \"dubbo.endpoints\";\n-\n-    /**\n-     * The property name of metadata JSON of {@link MetadataService}'s {@link URL}\n-     */\n-    public static String METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME = METADATA_SERVICE_PREFIX + \"url-params\";\n-\n-    /**\n-     * The {@link URL URLs} property name of {@link MetadataService} :\n-     * \"dubbo.metadata-service.urls\", which is used to be compatible with Dubbo Spring Cloud and\n-     * discovery the metadata of instance\n-     */\n-    public static final String METADATA_SERVICE_URLS_PROPERTY_NAME = METADATA_SERVICE_PREFIX + \"urls\";\n-\n-    /**\n-     * The property name of The revision for all exported Dubbo services.\n-     */\n-    public static String EXPORTED_SERVICES_REVISION_PROPERTY_NAME = \"dubbo.metadata.revision\";\n-\n-    /**\n-     * The property name of metadata storage type.\n-     */\n-    public static String METADATA_STORAGE_TYPE_PROPERTY_NAME = \"dubbo.metadata.storage-type\";\n-\n-    public static String METADATA_CLUSTER_PROPERTY_NAME = \"dubbo.metadata.cluster\";\n-\n-    public static String INSTANCE_REVISION_UPDATED_KEY = \"dubbo.instance.revision.updated\";\n-\n-    /**\n-     * Get the multiple {@link URL urls'} parameters of {@link MetadataService MetadataService's} Metadata\n-     *\n-     * @param serviceInstance the instance of {@link ServiceInstance}\n-     * @return non-null {@link Map}, the key is {@link URL#getProtocol() the protocol of URL}, the value is\n-     * {@link #getMetadataServiceURLParams(ServiceInstance, String)}\n-     */\n-    public static Map<String, Map<String, String>> getMetadataServiceURLsParams(ServiceInstance serviceInstance) {\n-        Map<String, String> metadata = serviceInstance.getMetadata();\n-        String param = metadata.get(METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME);\n-        return isBlank(param) ? emptyMap() : (Map) JSON.parse(param);\n-    }\n-\n-    /**\n-     * Get the {@link URL url's} parameters of {@link MetadataService MetadataService's} Metadata\n-     *\n-     * @param serviceInstance the instance of {@link ServiceInstance}\n-     * @return non-null {@link Map}\n-     */\n-    public static Map<String, String> getMetadataServiceURLParams(ServiceInstance serviceInstance, String protocol) {\n-        Map<String, Map<String, String>> params = getMetadataServiceURLsParams(serviceInstance);\n-        return params.getOrDefault(protocol, emptyMap());\n-    }\n-\n-    public static String getMetadataServiceParameter(List<URL> urls) {\n-\n-        Map<String, Map<String, String>> params = new HashMap<>();\n-\n-        urls.stream()\n-                // remove APPLICATION_KEY because service name must be present\n-                .map(url -> url.removeParameter(APPLICATION_KEY))\n-                // remove GROUP_KEY, always uses application name.\n-                .map(url -> url.removeParameter(GROUP_KEY))\n-                // remove DEPRECATED_KEY because it's always false\n-                .map(url -> url.removeParameter(DEPRECATED_KEY))\n-                // remove TIMESTAMP_KEY because it's nonsense\n-                .map(url -> url.removeParameter(TIMESTAMP_KEY))\n-                .forEach(url -> {\n-                    String protocol = url.getProtocol();\n-                    params.put(protocol, getParams(url));\n-                });\n-\n-        if (params.isEmpty()) {\n-            return null;\n-        }\n-\n-        return JSON.toJSONString(params);\n-    }\n-\n-    private static Map<String, String> getParams(URL providerURL) {\n-        Map<String, String> params = new LinkedHashMap<>();\n-        setDefaultParams(params, providerURL);\n-        params.put(PORT_KEY, String.valueOf(providerURL.getPort()));\n-        return params;\n-    }\n-\n-    /**\n-     * The revision for all exported Dubbo services from the specified {@link ServiceInstance}.\n-     *\n-     * @param serviceInstance the specified {@link ServiceInstance}\n-     * @return <code>null</code> if not exits\n-     */\n-    public static String getExportedServicesRevision(ServiceInstance serviceInstance) {\n-        Map<String, String> metadata = serviceInstance.getMetadata();\n-        return metadata.get(EXPORTED_SERVICES_REVISION_PROPERTY_NAME);\n-    }\n-\n-    /**\n-     * Get metadata's storage type\n-     *\n-     * @param registryURL the {@link URL} to connect the registry\n-     * @return if not found in {@link URL#getParameters() parameters} of {@link URL registry URL}, return\n-     */\n-    public static String getMetadataStorageType(URL registryURL) {\n-        return registryURL.getParameter(METADATA_STORAGE_TYPE_PROPERTY_NAME, DEFAULT_METADATA_STORAGE_TYPE);\n-    }\n-\n-    /**\n-     * Get the metadata's storage type is used to which {@link WritableMetadataService} instance.\n-     *\n-     * @param serviceInstance the specified {@link ServiceInstance}\n-     * @return if not found in {@link ServiceInstance#getMetadata() metadata} of {@link ServiceInstance}, return\n-     */\n-    public static String getMetadataStorageType(ServiceInstance serviceInstance) {\n-        Map<String, String> metadata = serviceInstance.getMetadata();\n-        return metadata.getOrDefault(METADATA_STORAGE_TYPE_PROPERTY_NAME, DEFAULT_METADATA_STORAGE_TYPE);\n-    }\n-\n-    /**\n-     * Set the metadata storage type in specified {@link ServiceInstance service instance}\n-     *\n-     * @param serviceInstance {@link ServiceInstance service instance}\n-     * @param metadataType    remote or local\n-     */\n-    public static void setMetadataStorageType(ServiceInstance serviceInstance, String metadataType) {\n-        Map<String, String> metadata = serviceInstance.getMetadata();\n-        metadata.put(METADATA_STORAGE_TYPE_PROPERTY_NAME, metadataType);\n-    }\n-\n-    public static String getRemoteCluster(ServiceInstance serviceInstance) {\n-        Map<String, String> metadata = serviceInstance.getMetadata();\n-        return metadata.get(METADATA_CLUSTER_PROPERTY_NAME);\n-    }\n-\n-    /**\n-     * Is Dubbo Service instance or not\n-     *\n-     * @param serviceInstance {@link ServiceInstance service instance}\n-     * @return if Dubbo Service instance, return <code>true</code>, or <code>false</code>\n-     */\n-    public static boolean isDubboServiceInstance(ServiceInstance serviceInstance) {\n-        Map<String, String> metadata = serviceInstance.getMetadata();\n-        return metadata.containsKey(METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME)\n-                || metadata.containsKey(METADATA_SERVICE_URLS_PROPERTY_NAME);\n-    }\n-\n-    public static void setEndpoints(ServiceInstance serviceInstance, Map<String, Integer> protocolPorts) {\n-        Map<String, String> metadata = serviceInstance.getMetadata();\n-        List<Endpoint> endpoints = new ArrayList<>();\n-        protocolPorts.forEach((k, v) -> {\n-            Endpoint endpoint = new Endpoint(v, k);\n-            endpoints.add(endpoint);\n-        });\n-\n-        metadata.put(ENDPOINTS, JSON.toJSONString(endpoints));\n-    }\n-\n-    /**\n-     * Get the property value of port by the specified {@link ServiceInstance#getMetadata() the metadata of\n-     * service instance} and protocol\n-     *\n-     * @param serviceInstance {@link ServiceInstance service instance}\n-     * @param protocol        the name of protocol, e.g, dubbo, rest, and so on\n-     * @return if not found, return <code>null</code>\n-     */\n-    public static Integer getProtocolPort(ServiceInstance serviceInstance, String protocol) {\n-        Map<String, String> metadata = serviceInstance.getMetadata();\n-        String rawEndpoints = metadata.get(ENDPOINTS);\n-        if (StringUtils.isNotEmpty(rawEndpoints)) {\n-            List<Endpoint> endpoints = JSON.parseArray(rawEndpoints, Endpoint.class);\n-            for (Endpoint endpoint : endpoints) {\n-                if (endpoint.getProtocol().equals(protocol)) {\n-                    return endpoint.getPort();\n-                }\n-            }\n-        }\n-        return null;\n-    }\n-\n-    public static void calInstanceRevision(ServiceDiscovery serviceDiscovery, ServiceInstance instance) {\n-        String registryCluster = serviceDiscovery.getUrl().getParameter(ID_KEY);\n-        if (registryCluster == null) {\n-            return;\n-        }\n-        MetadataInfo metadataInfo = WritableMetadataService.getDefaultExtension().getMetadataInfos().get(registryCluster);\n-        if (metadataInfo != null) {\n-            String existingInstanceRevision = instance.getMetadata().get(EXPORTED_SERVICES_REVISION_PROPERTY_NAME);\n-            if (!metadataInfo.calAndGetRevision().equals(existingInstanceRevision)) {\n-                instance.getMetadata().put(EXPORTED_SERVICES_REVISION_PROPERTY_NAME, metadataInfo.calAndGetRevision());\n-                if (existingInstanceRevision != null) {// skip the first registration.\n-                    instance.getExtendParams().put(INSTANCE_REVISION_UPDATED_KEY, \"true\");\n-                }\n-            }\n-        }\n-    }\n-\n-    public static boolean isInstanceUpdated(ServiceInstance instance) {\n-        return \"true\".equals(instance.getExtendParams().get(INSTANCE_REVISION_UPDATED_KEY));\n-    }\n-\n-    public static void resetInstanceUpdateKey(ServiceInstance instance) {\n-        instance.getExtendParams().remove(INSTANCE_REVISION_UPDATED_KEY);\n-    }\n-\n-    public static void refreshMetadataAndInstance() {\n-        RemoteMetadataServiceImpl remoteMetadataService = MetadataUtils.getRemoteMetadataService();\n-        remoteMetadataService.publishMetadata(ApplicationModel.getName());\n-\n-        AbstractRegistryFactory.getServiceDiscoveries().forEach(serviceDiscovery -> {\n-            calInstanceRevision(serviceDiscovery, serviceDiscovery.getLocalInstance());\n-            // update service instance revision\n-            serviceDiscovery.update(serviceDiscovery.getLocalInstance());\n-        });\n-    }\n-\n-    /**\n-     * Set the default parameters via the specified {@link URL providerURL}\n-     *\n-     * @param params      the parameters\n-     * @param providerURL the provider's {@link URL}\n-     */\n-    private static void setDefaultParams(Map<String, String> params, URL providerURL) {\n-        for (String parameterName : DEFAULT_REGISTER_PROVIDER_KEYS) {\n-            String parameterValue = providerURL.getParameter(parameterName);\n-            if (!isBlank(parameterValue)) {\n-                params.put(parameterName, parameterValue);\n-            }\n-        }\n-    }\n-\n-    public static class Endpoint {\n-        Integer port;\n-        String protocol;\n-\n-        public Endpoint(Integer port, String protocol) {\n-            this.port = port;\n-            this.protocol = protocol;\n-        }\n-\n-        public Integer getPort() {\n-            return port;\n-        }\n-\n-        public void setPort(Integer port) {\n-            this.port = port;\n-        }\n-\n-        public String getProtocol() {\n-            return protocol;\n-        }\n-\n-        public void setProtocol(String protocol) {\n-            this.protocol = protocol;\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.metadata;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.metadata.MetadataInfo;\r\n+import org.apache.dubbo.metadata.MetadataService;\r\n+import org.apache.dubbo.metadata.WritableMetadataService;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.metadata.store.RemoteMetadataServiceImpl;\r\n+import org.apache.dubbo.registry.support.AbstractRegistryFactory;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+\r\n+import com.alibaba.fastjson.JSON;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.HashMap;\r\n+import java.util.LinkedHashMap;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+\r\n+import static java.util.Collections.emptyMap;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PORT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMESTAMP_KEY;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isBlank;\r\n+import static org.apache.dubbo.registry.integration.InterfaceCompatibleRegistryProtocol.DEFAULT_REGISTER_PROVIDER_KEYS;\r\n+import static org.apache.dubbo.rpc.Constants.DEPRECATED_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.ID_KEY;\r\n+\r\n+/**\r\n+ * The Utilities class for the {@link ServiceInstance#getMetadata() metadata of the service instance}\r\n+ *\r\n+ * @see StandardMetadataServiceURLBuilder\r\n+ * @see ServiceInstance#getMetadata()\r\n+ * @see MetadataService\r\n+ * @see URL\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ServiceInstanceMetadataUtils {\r\n+\r\n+    /**\r\n+     * The prefix of {@link MetadataService} : \"dubbo.metadata-service.\"\r\n+     */\r\n+    public static final String METADATA_SERVICE_PREFIX = \"dubbo.metadata-service.\";\r\n+\r\n+    public static final String ENDPOINTS = \"dubbo.endpoints\";\r\n+\r\n+    /**\r\n+     * The property name of metadata JSON of {@link MetadataService}'s {@link URL}\r\n+     */\r\n+    public static String METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME = METADATA_SERVICE_PREFIX + \"url-params\";\r\n+\r\n+    /**\r\n+     * The {@link URL URLs} property name of {@link MetadataService} :\r\n+     * \"dubbo.metadata-service.urls\", which is used to be compatible with Dubbo Spring Cloud and\r\n+     * discovery the metadata of instance\r\n+     */\r\n+    public static final String METADATA_SERVICE_URLS_PROPERTY_NAME = METADATA_SERVICE_PREFIX + \"urls\";\r\n+\r\n+    /**\r\n+     * The property name of The revision for all exported Dubbo services.\r\n+     */\r\n+    public static String EXPORTED_SERVICES_REVISION_PROPERTY_NAME = \"dubbo.metadata.revision\";\r\n+\r\n+    /**\r\n+     * The property name of metadata storage type.\r\n+     */\r\n+    public static String METADATA_STORAGE_TYPE_PROPERTY_NAME = \"dubbo.metadata.storage-type\";\r\n+\r\n+    public static String METADATA_CLUSTER_PROPERTY_NAME = \"dubbo.metadata.cluster\";\r\n+\r\n+    public static String INSTANCE_REVISION_UPDATED_KEY = \"dubbo.instance.revision.updated\";\r\n+\r\n+    /**\r\n+     * Get the multiple {@link URL urls'} parameters of {@link MetadataService MetadataService's} Metadata\r\n+     *\r\n+     * @param serviceInstance the instance of {@link ServiceInstance}\r\n+     * @return non-null {@link Map}, the key is {@link URL#getProtocol() the protocol of URL}, the value is\r\n+     * {@link #getMetadataServiceURLParams(ServiceInstance, String)}\r\n+     */\r\n+    public static Map<String, Map<String, String>> getMetadataServiceURLsParams(ServiceInstance serviceInstance) {\r\n+        Map<String, String> metadata = serviceInstance.getMetadata();\r\n+        String param = metadata.get(METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME);\r\n+        return isBlank(param) ? emptyMap() : (Map) JSON.parse(param);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the {@link URL url's} parameters of {@link MetadataService MetadataService's} Metadata\r\n+     *\r\n+     * @param serviceInstance the instance of {@link ServiceInstance}\r\n+     * @return non-null {@link Map}\r\n+     */\r\n+    public static Map<String, String> getMetadataServiceURLParams(ServiceInstance serviceInstance, String protocol) {\r\n+        Map<String, Map<String, String>> params = getMetadataServiceURLsParams(serviceInstance);\r\n+        return params.getOrDefault(protocol, emptyMap());\r\n+    }\r\n+\r\n+    public static String getMetadataServiceParameter(List<URL> urls) {\r\n+\r\n+        Map<String, Map<String, String>> params = new HashMap<>();\r\n+\r\n+        urls.stream()\r\n+                // remove APPLICATION_KEY because service name must be present\r\n+                .map(url -> url.removeParameter(APPLICATION_KEY))\r\n+                // remove GROUP_KEY, always uses application name.\r\n+                .map(url -> url.removeParameter(GROUP_KEY))\r\n+                // remove DEPRECATED_KEY because it's always false\r\n+                .map(url -> url.removeParameter(DEPRECATED_KEY))\r\n+                // remove TIMESTAMP_KEY because it's nonsense\r\n+                .map(url -> url.removeParameter(TIMESTAMP_KEY))\r\n+                .forEach(url -> {\r\n+                    String protocol = url.getProtocol();\r\n+                    params.put(protocol, getParams(url));\r\n+                });\r\n+\r\n+        if (params.isEmpty()) {\r\n+            return null;\r\n+        }\r\n+\r\n+        return JSON.toJSONString(params);\r\n+    }\r\n+\r\n+    private static Map<String, String> getParams(URL providerURL) {\r\n+        Map<String, String> params = new LinkedHashMap<>();\r\n+        setDefaultParams(params, providerURL);\r\n+        params.put(PORT_KEY, String.valueOf(providerURL.getPort()));\r\n+        return params;\r\n+    }\r\n+\r\n+    /**\r\n+     * The revision for all exported Dubbo services from the specified {@link ServiceInstance}.\r\n+     *\r\n+     * @param serviceInstance the specified {@link ServiceInstance}\r\n+     * @return <code>null</code> if not exits\r\n+     */\r\n+    public static String getExportedServicesRevision(ServiceInstance serviceInstance) {\r\n+        Map<String, String> metadata = serviceInstance.getMetadata();\r\n+        return metadata.get(EXPORTED_SERVICES_REVISION_PROPERTY_NAME);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get metadata's storage type\r\n+     *\r\n+     * @param registryURL the {@link URL} to connect the registry\r\n+     * @return if not found in {@link URL#getParameters() parameters} of {@link URL registry URL}, return\r\n+     */\r\n+    public static String getMetadataStorageType(URL registryURL) {\r\n+        return registryURL.getParameter(METADATA_STORAGE_TYPE_PROPERTY_NAME, DEFAULT_METADATA_STORAGE_TYPE);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the metadata's storage type is used to which {@link WritableMetadataService} instance.\r\n+     *\r\n+     * @param serviceInstance the specified {@link ServiceInstance}\r\n+     * @return if not found in {@link ServiceInstance#getMetadata() metadata} of {@link ServiceInstance}, return\r\n+     */\r\n+    public static String getMetadataStorageType(ServiceInstance serviceInstance) {\r\n+        Map<String, String> metadata = serviceInstance.getMetadata();\r\n+        return metadata.getOrDefault(METADATA_STORAGE_TYPE_PROPERTY_NAME, DEFAULT_METADATA_STORAGE_TYPE);\r\n+    }\r\n+\r\n+    /**\r\n+     * Set the metadata storage type in specified {@link ServiceInstance service instance}\r\n+     *\r\n+     * @param serviceInstance {@link ServiceInstance service instance}\r\n+     * @param metadataType    remote or local\r\n+     */\r\n+    public static void setMetadataStorageType(ServiceInstance serviceInstance, String metadataType) {\r\n+        Map<String, String> metadata = serviceInstance.getMetadata();\r\n+        metadata.put(METADATA_STORAGE_TYPE_PROPERTY_NAME, metadataType);\r\n+    }\r\n+\r\n+    public static String getRemoteCluster(ServiceInstance serviceInstance) {\r\n+        Map<String, String> metadata = serviceInstance.getMetadata();\r\n+        return metadata.get(METADATA_CLUSTER_PROPERTY_NAME);\r\n+    }\r\n+\r\n+    /**\r\n+     * Is Dubbo Service instance or not\r\n+     *\r\n+     * @param serviceInstance {@link ServiceInstance service instance}\r\n+     * @return if Dubbo Service instance, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    public static boolean isDubboServiceInstance(ServiceInstance serviceInstance) {\r\n+        Map<String, String> metadata = serviceInstance.getMetadata();\r\n+        return metadata.containsKey(METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME)\r\n+                || metadata.containsKey(METADATA_SERVICE_URLS_PROPERTY_NAME);\r\n+    }\r\n+\r\n+    public static void setEndpoints(ServiceInstance serviceInstance, Map<String, Integer> protocolPorts) {\r\n+        Map<String, String> metadata = serviceInstance.getMetadata();\r\n+        List<Endpoint> endpoints = new ArrayList<>();\r\n+        protocolPorts.forEach((k, v) -> {\r\n+            Endpoint endpoint = new Endpoint(v, k);\r\n+            endpoints.add(endpoint);\r\n+        });\r\n+\r\n+        metadata.put(ENDPOINTS, JSON.toJSONString(endpoints));\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the property value of port by the specified {@link ServiceInstance#getMetadata() the metadata of\r\n+     * service instance} and protocol\r\n+     *\r\n+     * @param serviceInstance {@link ServiceInstance service instance}\r\n+     * @param protocol        the name of protocol, e.g, dubbo, rest, and so on\r\n+     * @return if not found, return <code>null</code>\r\n+     */\r\n+    public static Integer getProtocolPort(ServiceInstance serviceInstance, String protocol) {\r\n+        Map<String, String> metadata = serviceInstance.getMetadata();\r\n+        String rawEndpoints = metadata.get(ENDPOINTS);\r\n+        if (StringUtils.isNotEmpty(rawEndpoints)) {\r\n+            List<Endpoint> endpoints = JSON.parseArray(rawEndpoints, Endpoint.class);\r\n+            for (Endpoint endpoint : endpoints) {\r\n+                if (endpoint.getProtocol().equals(protocol)) {\r\n+                    return endpoint.getPort();\r\n+                }\r\n+            }\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    public static void calInstanceRevision(ServiceDiscovery serviceDiscovery, ServiceInstance instance) {\r\n+        String registryCluster = serviceDiscovery.getUrl().getParameter(ID_KEY);\r\n+        if (registryCluster == null) {\r\n+            return;\r\n+        }\r\n+        MetadataInfo metadataInfo = WritableMetadataService.getDefaultExtension().getMetadataInfos().get(registryCluster);\r\n+        if (metadataInfo != null) {\r\n+            String existingInstanceRevision = instance.getMetadata().get(EXPORTED_SERVICES_REVISION_PROPERTY_NAME);\r\n+            if (!metadataInfo.calAndGetRevision().equals(existingInstanceRevision)) {\r\n+                instance.getMetadata().put(EXPORTED_SERVICES_REVISION_PROPERTY_NAME, metadataInfo.calAndGetRevision());\r\n+                if (existingInstanceRevision != null) {// skip the first registration.\r\n+                    instance.getExtendParams().put(INSTANCE_REVISION_UPDATED_KEY, \"true\");\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public static boolean isInstanceUpdated(ServiceInstance instance) {\r\n+        return \"true\".equals(instance.getExtendParams().get(INSTANCE_REVISION_UPDATED_KEY));\r\n+    }\r\n+\r\n+    public static void resetInstanceUpdateKey(ServiceInstance instance) {\r\n+        instance.getExtendParams().remove(INSTANCE_REVISION_UPDATED_KEY);\r\n+    }\r\n+\r\n+    public static void refreshMetadataAndInstance() {\r\n+        RemoteMetadataServiceImpl remoteMetadataService = MetadataUtils.getRemoteMetadataService();\r\n+        remoteMetadataService.publishMetadata(ApplicationModel.getName());\r\n+\r\n+        AbstractRegistryFactory.getServiceDiscoveries().forEach(serviceDiscovery -> {\r\n+            calInstanceRevision(serviceDiscovery, serviceDiscovery.getLocalInstance());\r\n+            // update service instance revision\r\n+            serviceDiscovery.update(serviceDiscovery.getLocalInstance());\r\n+        });\r\n+    }\r\n+\r\n+    /**\r\n+     * Set the default parameters via the specified {@link URL providerURL}\r\n+     *\r\n+     * @param params      the parameters\r\n+     * @param providerURL the provider's {@link URL}\r\n+     */\r\n+    private static void setDefaultParams(Map<String, String> params, URL providerURL) {\r\n+        for (String parameterName : DEFAULT_REGISTER_PROVIDER_KEYS) {\r\n+            String parameterValue = providerURL.getParameter(parameterName);\r\n+            if (!isBlank(parameterValue)) {\r\n+                params.put(parameterName, parameterValue);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public static class Endpoint {\r\n+        Integer port;\r\n+        String protocol;\r\n+\r\n+        public Endpoint(Integer port, String protocol) {\r\n+            this.port = port;\r\n+            this.protocol = protocol;\r\n+        }\r\n+\r\n+        public Integer getPort() {\r\n+            return port;\r\n+        }\r\n+\r\n+        public void setPort(Integer port) {\r\n+            this.port = port;\r\n+        }\r\n+\r\n+        public String getProtocol() {\r\n+            return protocol;\r\n+        }\r\n+\r\n+        public void setProtocol(String protocol) {\r\n+            this.protocol = protocol;\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/metadata/SpringCloudMetadataServiceURLBuilder.java", "source2": "org/apache/dubbo/registry/client/metadata/SpringCloudMetadataServiceURLBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,51 +1,51 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.metadata;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-\n-import com.alibaba.fastjson.JSON;\n-\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.stream.Collectors;\n-\n-import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.METADATA_SERVICE_URLS_PROPERTY_NAME;\n-\n-/**\n- * Supporting interaction with Dubbo Spring Cloud at https://github.com/alibaba/spring-cloud-alibaba\n- * Dubbo Spring Cloud is a Dubbo extension that favours a per instance registry model and exposes metadata service.\n- *\n- * @since 2.7.5\n- */\n-public class SpringCloudMetadataServiceURLBuilder implements MetadataServiceURLBuilder {\n-    public static final String NAME = \"spring-cloud\";\n-\n-    @Override\n-    public List<URL> build(ServiceInstance serviceInstance) {\n-        Map<String, String> metadata = serviceInstance.getMetadata();\n-        String dubboURLsJSON = metadata.get(METADATA_SERVICE_URLS_PROPERTY_NAME);\n-        if (StringUtils.isBlank(dubboURLsJSON)) {\n-            return Collections.emptyList();\n-        }\n-        List<String> urlStrings = JSON.parseArray(dubboURLsJSON, String.class);\n-        return urlStrings.stream().map(URL::valueOf).collect(Collectors.toList());\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.metadata;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+\r\n+import com.alibaba.fastjson.JSON;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.stream.Collectors;\r\n+\r\n+import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.METADATA_SERVICE_URLS_PROPERTY_NAME;\r\n+\r\n+/**\r\n+ * Supporting interaction with Dubbo Spring Cloud at https://github.com/alibaba/spring-cloud-alibaba\r\n+ * Dubbo Spring Cloud is a Dubbo extension that favours a per instance registry model and exposes metadata service.\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class SpringCloudMetadataServiceURLBuilder implements MetadataServiceURLBuilder {\r\n+    public static final String NAME = \"spring-cloud\";\r\n+\r\n+    @Override\r\n+    public List<URL> build(ServiceInstance serviceInstance) {\r\n+        Map<String, String> metadata = serviceInstance.getMetadata();\r\n+        String dubboURLsJSON = metadata.get(METADATA_SERVICE_URLS_PROPERTY_NAME);\r\n+        if (StringUtils.isBlank(dubboURLsJSON)) {\r\n+            return Collections.emptyList();\r\n+        }\r\n+        List<String> urlStrings = JSON.parseArray(dubboURLsJSON, String.class);\r\n+        return urlStrings.stream().map(URL::valueOf).collect(Collectors.toList());\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilder.java", "source2": "org/apache/dubbo/registry/client/metadata/StandardMetadataServiceURLBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,89 +1,89 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.metadata;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.URLBuilder;\n-import org.apache.dubbo.common.config.ConfigurationUtils;\n-import org.apache.dubbo.metadata.MetadataService;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-import java.util.Map;\n-\n-import static java.lang.String.valueOf;\n-import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PORT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-import static org.apache.dubbo.metadata.MetadataConstants.DEFAULT_METADATA_TIMEOUT_VALUE;\n-import static org.apache.dubbo.metadata.MetadataConstants.METADATA_PROXY_TIMEOUT_KEY;\n-import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.getMetadataServiceURLsParams;\n-\n-/**\n- * Standard Dubbo provider enabling introspection service discovery mode.\n- *\n- * @see MetadataService\n- * @since 2.7.5\n- */\n-public class StandardMetadataServiceURLBuilder implements MetadataServiceURLBuilder {\n-    \n-    public static final String NAME = \"standard\";\n-\n-    /**\n-     * Build the {@link URL urls} from {@link ServiceInstance#getMetadata() the metadata} of {@link ServiceInstance}\n-     *\n-     * @param serviceInstance {@link ServiceInstance}\n-     * @return the not-null {@link List}\n-     */\n-    @Override\n-    public List<URL> build(ServiceInstance serviceInstance) {\n-\n-        Map<String, Map<String, String>> paramsMap = getMetadataServiceURLsParams(serviceInstance);\n-\n-        List<URL> urls = new ArrayList<>(paramsMap.size());\n-\n-        String serviceName = serviceInstance.getServiceName();\n-\n-        String host = serviceInstance.getHost();\n-\n-        for (Map.Entry<String, Map<String, String>> entry : paramsMap.entrySet()) {\n-            String protocol = entry.getKey();\n-            Map<String, String> params = entry.getValue();\n-            int port = Integer.parseInt(params.get(PORT_KEY));\n-            URLBuilder urlBuilder = new URLBuilder()\n-                    .setHost(host)\n-                    .setPort(port)\n-                    .setProtocol(protocol)\n-                    .setPath(MetadataService.class.getName())\n-                    .addParameter(TIMEOUT_KEY, ConfigurationUtils.get(METADATA_PROXY_TIMEOUT_KEY, DEFAULT_METADATA_TIMEOUT_VALUE))\n-                    .addParameter(SIDE_KEY, CONSUMER);\n-\n-            // add parameters\n-            params.forEach((name, value) -> urlBuilder.addParameter(name, valueOf(value)));\n-\n-            // add the default parameters\n-            urlBuilder.addParameter(GROUP_KEY, serviceName);\n-\n-            urls.add(urlBuilder.build());\n-        }\n-\n-        return urls;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.metadata;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.URLBuilder;\r\n+import org.apache.dubbo.common.config.ConfigurationUtils;\r\n+import org.apache.dubbo.metadata.MetadataService;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+\r\n+import static java.lang.String.valueOf;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PORT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+import static org.apache.dubbo.metadata.MetadataConstants.DEFAULT_METADATA_TIMEOUT_VALUE;\r\n+import static org.apache.dubbo.metadata.MetadataConstants.METADATA_PROXY_TIMEOUT_KEY;\r\n+import static org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.getMetadataServiceURLsParams;\r\n+\r\n+/**\r\n+ * Standard Dubbo provider enabling introspection service discovery mode.\r\n+ *\r\n+ * @see MetadataService\r\n+ * @since 2.7.5\r\n+ */\r\n+public class StandardMetadataServiceURLBuilder implements MetadataServiceURLBuilder {\r\n+    \r\n+    public static final String NAME = \"standard\";\r\n+\r\n+    /**\r\n+     * Build the {@link URL urls} from {@link ServiceInstance#getMetadata() the metadata} of {@link ServiceInstance}\r\n+     *\r\n+     * @param serviceInstance {@link ServiceInstance}\r\n+     * @return the not-null {@link List}\r\n+     */\r\n+    @Override\r\n+    public List<URL> build(ServiceInstance serviceInstance) {\r\n+\r\n+        Map<String, Map<String, String>> paramsMap = getMetadataServiceURLsParams(serviceInstance);\r\n+\r\n+        List<URL> urls = new ArrayList<>(paramsMap.size());\r\n+\r\n+        String serviceName = serviceInstance.getServiceName();\r\n+\r\n+        String host = serviceInstance.getHost();\r\n+\r\n+        for (Map.Entry<String, Map<String, String>> entry : paramsMap.entrySet()) {\r\n+            String protocol = entry.getKey();\r\n+            Map<String, String> params = entry.getValue();\r\n+            int port = Integer.parseInt(params.get(PORT_KEY));\r\n+            URLBuilder urlBuilder = new URLBuilder()\r\n+                    .setHost(host)\r\n+                    .setPort(port)\r\n+                    .setProtocol(protocol)\r\n+                    .setPath(MetadataService.class.getName())\r\n+                    .addParameter(TIMEOUT_KEY, ConfigurationUtils.get(METADATA_PROXY_TIMEOUT_KEY, DEFAULT_METADATA_TIMEOUT_VALUE))\r\n+                    .addParameter(SIDE_KEY, CONSUMER);\r\n+\r\n+            // add parameters\r\n+            params.forEach((name, value) -> urlBuilder.addParameter(name, valueOf(value)));\r\n+\r\n+            // add the default parameters\r\n+            urlBuilder.addParameter(GROUP_KEY, serviceName);\r\n+\r\n+            urls.add(urlBuilder.build());\r\n+        }\r\n+\r\n+        return urls;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/metadata/SubscribedURLsSynthesizer.java", "source2": "org/apache/dubbo/registry/client/metadata/SubscribedURLsSynthesizer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,55 +1,55 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.metadata;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.common.lang.Prioritized;\n-import org.apache.dubbo.registry.NotifyListener;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-\n-import java.util.Collection;\n-import java.util.List;\n-\n-/**\n- * The interface to synthesize the subscribed {@link URL URLs}\n- *\n- * @since 2.7.5\n- */\n-@SPI\n-public interface SubscribedURLsSynthesizer extends Prioritized {\n-\n-    /**\n-     * Supports the synthesis of the subscribed {@link URL URLs} or not\n-     *\n-     * @param subscribedURL the original subscribed {@link URL} from the execution of`\n-     *                      {@link Registry#subscribe(URL, NotifyListener)} method\n-     * @return if supports, return <code>true</code>, or <code>false</code>\n-     */\n-    boolean supports(URL subscribedURL);\n-\n-    /**\n-     * synthesize the subscribed {@link URL URLs}\n-     *\n-     * @param subscribedURL    the original subscribed {@link URL} from the execution of`\n-     *                         {@link Registry#subscribe(URL, NotifyListener)} method\n-     * @param serviceInstances\n-     * @return\n-     */\n-    List<URL> synthesize(URL subscribedURL, Collection<ServiceInstance> serviceInstances);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.metadata;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.common.lang.Prioritized;\r\n+import org.apache.dubbo.registry.NotifyListener;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * The interface to synthesize the subscribed {@link URL URLs}\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+@SPI\r\n+public interface SubscribedURLsSynthesizer extends Prioritized {\r\n+\r\n+    /**\r\n+     * Supports the synthesis of the subscribed {@link URL URLs} or not\r\n+     *\r\n+     * @param subscribedURL the original subscribed {@link URL} from the execution of`\r\n+     *                      {@link Registry#subscribe(URL, NotifyListener)} method\r\n+     * @return if supports, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    boolean supports(URL subscribedURL);\r\n+\r\n+    /**\r\n+     * synthesize the subscribed {@link URL URLs}\r\n+     *\r\n+     * @param subscribedURL    the original subscribed {@link URL} from the execution of`\r\n+     *                         {@link Registry#subscribe(URL, NotifyListener)} method\r\n+     * @param serviceInstances\r\n+     * @return\r\n+     */\r\n+    List<URL> synthesize(URL subscribedURL, Collection<ServiceInstance> serviceInstances);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/metadata/store/InMemoryWritableMetadataService.java", "source2": "org/apache/dubbo/registry/client/metadata/store/InMemoryWritableMetadataService.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,301 +1,301 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.metadata.store;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.metadata.MetadataInfo;\n-import org.apache.dubbo.metadata.MetadataInfo.ServiceInfo;\n-import org.apache.dubbo.metadata.MetadataService;\n-import org.apache.dubbo.metadata.WritableMetadataService;\n-import org.apache.dubbo.metadata.definition.ServiceDefinitionBuilder;\n-import org.apache.dubbo.metadata.definition.model.ServiceDefinition;\n-import org.apache.dubbo.registry.client.RegistryClusterIdentifier;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.support.ProtocolUtils;\n-\n-import com.google.gson.Gson;\n-\n-import java.util.Comparator;\n-import java.util.Map;\n-import java.util.SortedSet;\n-import java.util.TreeSet;\n-import java.util.concurrent.Callable;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-import java.util.concurrent.ConcurrentNavigableMap;\n-import java.util.concurrent.ConcurrentSkipListMap;\n-import java.util.concurrent.Semaphore;\n-import java.util.concurrent.locks.Lock;\n-import java.util.concurrent.locks.ReentrantLock;\n-\n-import static java.util.Collections.emptySortedSet;\n-import static java.util.Collections.unmodifiableSortedSet;\n-import static org.apache.dubbo.common.URL.buildKey;\n-import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\n-import static org.apache.dubbo.common.utils.CollectionUtils.isEmpty;\n-import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;\n-\n-/**\n- * The {@link WritableMetadataService} implementation stores the metadata of Dubbo services in memory locally when they\n- * exported. It is used by server (provider).\n- *\n- * @see MetadataService\n- * @see WritableMetadataService\n- * @since 2.7.5\n- */\n-public class InMemoryWritableMetadataService implements WritableMetadataService {\n-\n-    final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    private final Lock lock = new ReentrantLock();\n-\n-    // =================================== Registration =================================== //\n-\n-    /**\n-     * All exported {@link URL urls} {@link Map} whose key is the return value of {@link URL#getServiceKey()} method\n-     * and value is the {@link SortedSet sorted set} of the {@link URL URLs}\n-     */\n-    ConcurrentNavigableMap<String, SortedSet<URL>> exportedServiceURLs = new ConcurrentSkipListMap<>();\n-    ConcurrentMap<String, MetadataInfo> metadataInfos;\n-    final Semaphore metadataSemaphore = new Semaphore(1);\n-\n-    // ==================================================================================== //\n-\n-    // =================================== Subscription =================================== //\n-\n-    /**\n-     * The subscribed {@link URL urls} {@link Map} of {@link MetadataService},\n-     * whose key is the return value of {@link URL#getServiceKey()} method and value is\n-     * the {@link SortedSet sorted set} of the {@link URL URLs}\n-     */\n-    ConcurrentNavigableMap<String, SortedSet<URL>> subscribedServiceURLs = new ConcurrentSkipListMap<>();\n-\n-    ConcurrentNavigableMap<String, String> serviceDefinitions = new ConcurrentSkipListMap<>();\n-\n-    public InMemoryWritableMetadataService() {\n-        this.metadataInfos = new ConcurrentHashMap<>();\n-    }\n-\n-    @Override\n-    public SortedSet<String> getSubscribedURLs() {\n-        return getAllUnmodifiableServiceURLs(subscribedServiceURLs);\n-    }\n-\n-    private SortedSet<String> getAllUnmodifiableServiceURLs(Map<String, SortedSet<URL>> serviceURLs) {\n-        SortedSet<URL> bizURLs = new TreeSet<>(InMemoryWritableMetadataService.URLComparator.INSTANCE);\n-        for (Map.Entry<String, SortedSet<URL>> entry : serviceURLs.entrySet()) {\n-            SortedSet<URL> urls = entry.getValue();\n-            if (urls != null) {\n-                for (URL url : urls) {\n-                    if (!MetadataService.class.getName().equals(url.getServiceInterface())) {\n-                        bizURLs.add(url);\n-                    }\n-                }\n-            }\n-        }\n-        return MetadataService.toSortedStrings(bizURLs);\n-    }\n-\n-    @Override\n-    public SortedSet<String> getExportedURLs(String serviceInterface, String group, String version, String protocol) {\n-        if (ALL_SERVICE_INTERFACES.equals(serviceInterface)) {\n-            return getAllUnmodifiableServiceURLs(exportedServiceURLs);\n-        }\n-        String serviceKey = buildKey(serviceInterface, group, version);\n-        return unmodifiableSortedSet(getServiceURLs(exportedServiceURLs, serviceKey, protocol));\n-    }\n-\n-    @Override\n-    public boolean exportURL(URL url) {\n-        String registryCluster = RegistryClusterIdentifier.getExtension(url).providerKey(url);\n-        String[] clusters = registryCluster.split(\",\");\n-        for (String cluster : clusters) {\n-            MetadataInfo metadataInfo = metadataInfos.computeIfAbsent(cluster, k -> {\n-                return new MetadataInfo(ApplicationModel.getName());\n-            });\n-            metadataInfo.addService(new ServiceInfo(url));\n-        }\n-        metadataSemaphore.release();\n-        return addURL(exportedServiceURLs, url);\n-    }\n-\n-    @Override\n-    public boolean unexportURL(URL url) {\n-        String registryCluster = RegistryClusterIdentifier.getExtension(url).providerKey(url);\n-        String[] clusters = registryCluster.split(\",\");\n-        for (String cluster : clusters) {\n-            MetadataInfo metadataInfo = metadataInfos.get(cluster);\n-            metadataInfo.removeService(url.getProtocolServiceKey());\n-            if (metadataInfo.getServices().isEmpty()) {\n-                metadataInfos.remove(cluster);\n-            }\n-        }\n-        metadataSemaphore.release();\n-        return removeURL(exportedServiceURLs, url);\n-    }\n-\n-    @Override\n-    public boolean subscribeURL(URL url) {\n-        return addURL(subscribedServiceURLs, url);\n-    }\n-\n-    @Override\n-    public boolean unsubscribeURL(URL url) {\n-        return removeURL(subscribedServiceURLs, url);\n-    }\n-\n-    @Override\n-    public void publishServiceDefinition(URL providerUrl) {\n-        try {\n-            if (!ProtocolUtils.isGeneric(providerUrl.getParameter(GENERIC_KEY))) {\n-                String interfaceName = providerUrl.getParameter(INTERFACE_KEY);\n-                if (StringUtils.isNotEmpty(interfaceName)) {\n-                    Class interfaceClass = Class.forName(interfaceName);\n-                    ServiceDefinition serviceDefinition = ServiceDefinitionBuilder.build(interfaceClass);\n-                    Gson gson = new Gson();\n-                    String data = gson.toJson(serviceDefinition);\n-                    serviceDefinitions.put(providerUrl.getServiceKey(), data);\n-                    return;\n-                }\n-                logger.error(\"publishProvider interfaceName is empty . providerUrl: \" + providerUrl.toFullString());\n-            } else if (CONSUMER_SIDE.equalsIgnoreCase(providerUrl.getParameter(SIDE_KEY))) {\n-                //to avoid consumer generic invoke style error\n-                return;\n-            }\n-        } catch (ClassNotFoundException e) {\n-            //ignore error\n-            logger.error(\"publishProvider getServiceDescriptor error. providerUrl: \" + providerUrl.toFullString(), e);\n-        }\n-    }\n-\n-    @Override\n-    public String getServiceDefinition(String interfaceName, String version, String group) {\n-        return serviceDefinitions.get(URL.buildKey(interfaceName, group, version));\n-    }\n-\n-    @Override\n-    public String getServiceDefinition(String serviceKey) {\n-        return serviceDefinitions.get(serviceKey);\n-    }\n-\n-    @Override\n-    public MetadataInfo getMetadataInfo(String revision) {\n-        if (StringUtils.isEmpty(revision)) {\n-            return null;\n-        }\n-        for (Map.Entry<String, MetadataInfo> entry : metadataInfos.entrySet()) {\n-            MetadataInfo metadataInfo = entry.getValue();\n-            if (revision.equals(metadataInfo.calAndGetRevision())) {\n-                return metadataInfo;\n-            }\n-        }\n-        return null;\n-    }\n-\n-    public void blockUntilUpdated() {\n-        try {\n-            metadataSemaphore.acquire();\n-        } catch (InterruptedException e) {\n-            logger.warn(\"metadata refresh thread has been interrupted unexpectedly while waiting for update.\", e);\n-        }\n-    }\n-\n-    public Map<String, MetadataInfo> getMetadataInfos() {\n-        return metadataInfos;\n-    }\n-\n-    boolean addURL(Map<String, SortedSet<URL>> serviceURLs, URL url) {\n-        return executeMutually(() -> {\n-            SortedSet<URL> urls = serviceURLs.computeIfAbsent(url.getServiceKey(), this::newSortedURLs);\n-            // make sure the parameters of tmpUrl is variable\n-            return urls.add(url);\n-        });\n-    }\n-\n-    boolean removeURL(Map<String, SortedSet<URL>> serviceURLs, URL url) {\n-        return executeMutually(() -> {\n-            String key = url.getServiceKey();\n-            SortedSet<URL> urls = serviceURLs.getOrDefault(key, null);\n-            if (urls == null) {\n-                return true;\n-            }\n-            boolean r = urls.remove(url);\n-            // if it is empty\n-            if (urls.isEmpty()) {\n-                serviceURLs.remove(key);\n-            }\n-            return r;\n-        });\n-    }\n-\n-    private SortedSet<URL> newSortedURLs(String serviceKey) {\n-        return new TreeSet<>(InMemoryWritableMetadataService.URLComparator.INSTANCE);\n-    }\n-\n-    boolean executeMutually(Callable<Boolean> callable) {\n-        boolean success = false;\n-        try {\n-            lock.lock();\n-            try {\n-                success = callable.call();\n-            } catch (Exception e) {\n-                if (logger.isErrorEnabled()) {\n-                    logger.error(e);\n-                }\n-            }\n-        } finally {\n-            lock.unlock();\n-        }\n-        return success;\n-    }\n-\n-    private SortedSet<String> getServiceURLs(Map<String, SortedSet<URL>> exportedServiceURLs, String serviceKey,\n-                                             String protocol) {\n-\n-        SortedSet<URL> serviceURLs = exportedServiceURLs.get(serviceKey);\n-\n-        if (isEmpty(serviceURLs)) {\n-            return emptySortedSet();\n-        }\n-\n-        return MetadataService.toSortedStrings(serviceURLs.stream().filter(url -> isAcceptableProtocol(protocol, url)));\n-    }\n-\n-    private boolean isAcceptableProtocol(String protocol, URL url) {\n-        return protocol == null\n-                || protocol.equals(url.getParameter(PROTOCOL_KEY))\n-                || protocol.equals(url.getProtocol());\n-    }\n-\n-\n-    static class URLComparator implements Comparator<URL> {\n-\n-        public static final URLComparator INSTANCE = new URLComparator();\n-\n-        @Override\n-        public int compare(URL o1, URL o2) {\n-            return o1.toFullString().compareTo(o2.toFullString());\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.metadata.store;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.metadata.MetadataInfo;\r\n+import org.apache.dubbo.metadata.MetadataInfo.ServiceInfo;\r\n+import org.apache.dubbo.metadata.MetadataService;\r\n+import org.apache.dubbo.metadata.WritableMetadataService;\r\n+import org.apache.dubbo.metadata.definition.ServiceDefinitionBuilder;\r\n+import org.apache.dubbo.metadata.definition.model.ServiceDefinition;\r\n+import org.apache.dubbo.registry.client.RegistryClusterIdentifier;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.support.ProtocolUtils;\r\n+\r\n+import com.google.gson.Gson;\r\n+\r\n+import java.util.Comparator;\r\n+import java.util.Map;\r\n+import java.util.SortedSet;\r\n+import java.util.TreeSet;\r\n+import java.util.concurrent.Callable;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+import java.util.concurrent.ConcurrentNavigableMap;\r\n+import java.util.concurrent.ConcurrentSkipListMap;\r\n+import java.util.concurrent.Semaphore;\r\n+import java.util.concurrent.locks.Lock;\r\n+import java.util.concurrent.locks.ReentrantLock;\r\n+\r\n+import static java.util.Collections.emptySortedSet;\r\n+import static java.util.Collections.unmodifiableSortedSet;\r\n+import static org.apache.dubbo.common.URL.buildKey;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\r\n+import static org.apache.dubbo.common.utils.CollectionUtils.isEmpty;\r\n+import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;\r\n+\r\n+/**\r\n+ * The {@link WritableMetadataService} implementation stores the metadata of Dubbo services in memory locally when they\r\n+ * exported. It is used by server (provider).\r\n+ *\r\n+ * @see MetadataService\r\n+ * @see WritableMetadataService\r\n+ * @since 2.7.5\r\n+ */\r\n+public class InMemoryWritableMetadataService implements WritableMetadataService {\r\n+\r\n+    final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    private final Lock lock = new ReentrantLock();\r\n+\r\n+    // =================================== Registration =================================== //\r\n+\r\n+    /**\r\n+     * All exported {@link URL urls} {@link Map} whose key is the return value of {@link URL#getServiceKey()} method\r\n+     * and value is the {@link SortedSet sorted set} of the {@link URL URLs}\r\n+     */\r\n+    ConcurrentNavigableMap<String, SortedSet<URL>> exportedServiceURLs = new ConcurrentSkipListMap<>();\r\n+    ConcurrentMap<String, MetadataInfo> metadataInfos;\r\n+    final Semaphore metadataSemaphore = new Semaphore(1);\r\n+\r\n+    // ==================================================================================== //\r\n+\r\n+    // =================================== Subscription =================================== //\r\n+\r\n+    /**\r\n+     * The subscribed {@link URL urls} {@link Map} of {@link MetadataService},\r\n+     * whose key is the return value of {@link URL#getServiceKey()} method and value is\r\n+     * the {@link SortedSet sorted set} of the {@link URL URLs}\r\n+     */\r\n+    ConcurrentNavigableMap<String, SortedSet<URL>> subscribedServiceURLs = new ConcurrentSkipListMap<>();\r\n+\r\n+    ConcurrentNavigableMap<String, String> serviceDefinitions = new ConcurrentSkipListMap<>();\r\n+\r\n+    public InMemoryWritableMetadataService() {\r\n+        this.metadataInfos = new ConcurrentHashMap<>();\r\n+    }\r\n+\r\n+    @Override\r\n+    public SortedSet<String> getSubscribedURLs() {\r\n+        return getAllUnmodifiableServiceURLs(subscribedServiceURLs);\r\n+    }\r\n+\r\n+    private SortedSet<String> getAllUnmodifiableServiceURLs(Map<String, SortedSet<URL>> serviceURLs) {\r\n+        SortedSet<URL> bizURLs = new TreeSet<>(InMemoryWritableMetadataService.URLComparator.INSTANCE);\r\n+        for (Map.Entry<String, SortedSet<URL>> entry : serviceURLs.entrySet()) {\r\n+            SortedSet<URL> urls = entry.getValue();\r\n+            if (urls != null) {\r\n+                for (URL url : urls) {\r\n+                    if (!MetadataService.class.getName().equals(url.getServiceInterface())) {\r\n+                        bizURLs.add(url);\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+        return MetadataService.toSortedStrings(bizURLs);\r\n+    }\r\n+\r\n+    @Override\r\n+    public SortedSet<String> getExportedURLs(String serviceInterface, String group, String version, String protocol) {\r\n+        if (ALL_SERVICE_INTERFACES.equals(serviceInterface)) {\r\n+            return getAllUnmodifiableServiceURLs(exportedServiceURLs);\r\n+        }\r\n+        String serviceKey = buildKey(serviceInterface, group, version);\r\n+        return unmodifiableSortedSet(getServiceURLs(exportedServiceURLs, serviceKey, protocol));\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean exportURL(URL url) {\r\n+        String registryCluster = RegistryClusterIdentifier.getExtension(url).providerKey(url);\r\n+        String[] clusters = registryCluster.split(\",\");\r\n+        for (String cluster : clusters) {\r\n+            MetadataInfo metadataInfo = metadataInfos.computeIfAbsent(cluster, k -> {\r\n+                return new MetadataInfo(ApplicationModel.getName());\r\n+            });\r\n+            metadataInfo.addService(new ServiceInfo(url));\r\n+        }\r\n+        metadataSemaphore.release();\r\n+        return addURL(exportedServiceURLs, url);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean unexportURL(URL url) {\r\n+        String registryCluster = RegistryClusterIdentifier.getExtension(url).providerKey(url);\r\n+        String[] clusters = registryCluster.split(\",\");\r\n+        for (String cluster : clusters) {\r\n+            MetadataInfo metadataInfo = metadataInfos.get(cluster);\r\n+            metadataInfo.removeService(url.getProtocolServiceKey());\r\n+            if (metadataInfo.getServices().isEmpty()) {\r\n+                metadataInfos.remove(cluster);\r\n+            }\r\n+        }\r\n+        metadataSemaphore.release();\r\n+        return removeURL(exportedServiceURLs, url);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean subscribeURL(URL url) {\r\n+        return addURL(subscribedServiceURLs, url);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean unsubscribeURL(URL url) {\r\n+        return removeURL(subscribedServiceURLs, url);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void publishServiceDefinition(URL providerUrl) {\r\n+        try {\r\n+            if (!ProtocolUtils.isGeneric(providerUrl.getParameter(GENERIC_KEY))) {\r\n+                String interfaceName = providerUrl.getParameter(INTERFACE_KEY);\r\n+                if (StringUtils.isNotEmpty(interfaceName)) {\r\n+                    Class interfaceClass = Class.forName(interfaceName);\r\n+                    ServiceDefinition serviceDefinition = ServiceDefinitionBuilder.build(interfaceClass);\r\n+                    Gson gson = new Gson();\r\n+                    String data = gson.toJson(serviceDefinition);\r\n+                    serviceDefinitions.put(providerUrl.getServiceKey(), data);\r\n+                    return;\r\n+                }\r\n+                logger.error(\"publishProvider interfaceName is empty . providerUrl: \" + providerUrl.toFullString());\r\n+            } else if (CONSUMER_SIDE.equalsIgnoreCase(providerUrl.getParameter(SIDE_KEY))) {\r\n+                //to avoid consumer generic invoke style error\r\n+                return;\r\n+            }\r\n+        } catch (ClassNotFoundException e) {\r\n+            //ignore error\r\n+            logger.error(\"publishProvider getServiceDescriptor error. providerUrl: \" + providerUrl.toFullString(), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getServiceDefinition(String interfaceName, String version, String group) {\r\n+        return serviceDefinitions.get(URL.buildKey(interfaceName, group, version));\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getServiceDefinition(String serviceKey) {\r\n+        return serviceDefinitions.get(serviceKey);\r\n+    }\r\n+\r\n+    @Override\r\n+    public MetadataInfo getMetadataInfo(String revision) {\r\n+        if (StringUtils.isEmpty(revision)) {\r\n+            return null;\r\n+        }\r\n+        for (Map.Entry<String, MetadataInfo> entry : metadataInfos.entrySet()) {\r\n+            MetadataInfo metadataInfo = entry.getValue();\r\n+            if (revision.equals(metadataInfo.calAndGetRevision())) {\r\n+                return metadataInfo;\r\n+            }\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    public void blockUntilUpdated() {\r\n+        try {\r\n+            metadataSemaphore.acquire();\r\n+        } catch (InterruptedException e) {\r\n+            logger.warn(\"metadata refresh thread has been interrupted unexpectedly while waiting for update.\", e);\r\n+        }\r\n+    }\r\n+\r\n+    public Map<String, MetadataInfo> getMetadataInfos() {\r\n+        return metadataInfos;\r\n+    }\r\n+\r\n+    boolean addURL(Map<String, SortedSet<URL>> serviceURLs, URL url) {\r\n+        return executeMutually(() -> {\r\n+            SortedSet<URL> urls = serviceURLs.computeIfAbsent(url.getServiceKey(), this::newSortedURLs);\r\n+            // make sure the parameters of tmpUrl is variable\r\n+            return urls.add(url);\r\n+        });\r\n+    }\r\n+\r\n+    boolean removeURL(Map<String, SortedSet<URL>> serviceURLs, URL url) {\r\n+        return executeMutually(() -> {\r\n+            String key = url.getServiceKey();\r\n+            SortedSet<URL> urls = serviceURLs.getOrDefault(key, null);\r\n+            if (urls == null) {\r\n+                return true;\r\n+            }\r\n+            boolean r = urls.remove(url);\r\n+            // if it is empty\r\n+            if (urls.isEmpty()) {\r\n+                serviceURLs.remove(key);\r\n+            }\r\n+            return r;\r\n+        });\r\n+    }\r\n+\r\n+    private SortedSet<URL> newSortedURLs(String serviceKey) {\r\n+        return new TreeSet<>(InMemoryWritableMetadataService.URLComparator.INSTANCE);\r\n+    }\r\n+\r\n+    boolean executeMutually(Callable<Boolean> callable) {\r\n+        boolean success = false;\r\n+        try {\r\n+            lock.lock();\r\n+            try {\r\n+                success = callable.call();\r\n+            } catch (Exception e) {\r\n+                if (logger.isErrorEnabled()) {\r\n+                    logger.error(e);\r\n+                }\r\n+            }\r\n+        } finally {\r\n+            lock.unlock();\r\n+        }\r\n+        return success;\r\n+    }\r\n+\r\n+    private SortedSet<String> getServiceURLs(Map<String, SortedSet<URL>> exportedServiceURLs, String serviceKey,\r\n+                                             String protocol) {\r\n+\r\n+        SortedSet<URL> serviceURLs = exportedServiceURLs.get(serviceKey);\r\n+\r\n+        if (isEmpty(serviceURLs)) {\r\n+            return emptySortedSet();\r\n+        }\r\n+\r\n+        return MetadataService.toSortedStrings(serviceURLs.stream().filter(url -> isAcceptableProtocol(protocol, url)));\r\n+    }\r\n+\r\n+    private boolean isAcceptableProtocol(String protocol, URL url) {\r\n+        return protocol == null\r\n+                || protocol.equals(url.getParameter(PROTOCOL_KEY))\r\n+                || protocol.equals(url.getProtocol());\r\n+    }\r\n+\r\n+\r\n+    static class URLComparator implements Comparator<URL> {\r\n+\r\n+        public static final URLComparator INSTANCE = new URLComparator();\r\n+\r\n+        @Override\r\n+        public int compare(URL o1, URL o2) {\r\n+            return o1.toFullString().compareTo(o2.toFullString());\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/metadata/store/RemoteMetadataServiceImpl.java", "source2": "org/apache/dubbo/registry/client/metadata/store/RemoteMetadataServiceImpl.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,143 +1,143 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.metadata.store;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.metadata.MetadataInfo;\n-import org.apache.dubbo.metadata.WritableMetadataService;\n-import org.apache.dubbo.metadata.definition.ServiceDefinitionBuilder;\n-import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;\n-import org.apache.dubbo.metadata.report.MetadataReport;\n-import org.apache.dubbo.metadata.report.MetadataReportInstance;\n-import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils;\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.rpc.RpcException;\n-\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PID_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;\n-import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMESTAMP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_CLUSTER_KEY;\n-\n-public class RemoteMetadataServiceImpl {\n-    protected final Logger logger = LoggerFactory.getLogger(getClass());\n-    private WritableMetadataService localMetadataService;\n-\n-    public RemoteMetadataServiceImpl(WritableMetadataService writableMetadataService) {\n-        this.localMetadataService = writableMetadataService;\n-    }\n-\n-    public Map<String, MetadataReport> getMetadataReports() {\n-        return MetadataReportInstance.getMetadataReports(false);\n-    }\n-\n-    public void publishMetadata(String serviceName) {\n-        Map<String, MetadataInfo> metadataInfos = localMetadataService.getMetadataInfos();\n-        metadataInfos.forEach((registryCluster, metadataInfo) -> {\n-            if (!metadataInfo.hasReported()) {\n-                SubscriberMetadataIdentifier identifier = new SubscriberMetadataIdentifier(serviceName, metadataInfo.calAndGetRevision());\n-                metadataInfo.calAndGetRevision();\n-                metadataInfo.getExtendParams().put(REGISTRY_CLUSTER_KEY, registryCluster);\n-                MetadataReport metadataReport = getMetadataReports().get(registryCluster);\n-                if (metadataReport == null) {\n-                    metadataReport = getMetadataReports().entrySet().iterator().next().getValue();\n-                }\n-                logger.info(\"Publishing metadata to \" + metadataReport.getClass().getSimpleName());\n-                if (logger.isDebugEnabled()) {\n-                    logger.debug(metadataInfo.toString());\n-                }\n-                metadataReport.publishAppMetadata(identifier, metadataInfo);\n-                metadataInfo.markReported();\n-            }\n-        });\n-    }\n-\n-    public MetadataInfo getMetadata(ServiceInstance instance) {\n-        SubscriberMetadataIdentifier identifier = new SubscriberMetadataIdentifier(instance.getServiceName(),\n-                ServiceInstanceMetadataUtils.getExportedServicesRevision(instance));\n-\n-        String registryCluster = instance.getExtendParams().get(REGISTRY_CLUSTER_KEY);\n-\n-        MetadataReport metadataReport = getMetadataReports().get(registryCluster);\n-        if (metadataReport == null) {\n-            metadataReport = getMetadataReports().entrySet().iterator().next().getValue();\n-        }\n-        return metadataReport.getAppMetadata(identifier, instance.getExtendParams());\n-    }\n-\n-    public void publishServiceDefinition(URL url) {\n-        String side = url.getParameter(SIDE_KEY);\n-        if (PROVIDER_SIDE.equalsIgnoreCase(side)) {\n-            //TODO, the params part is duplicate with that stored by exportURL(url), can be further optimized in the future.\n-            publishProvider(url);\n-        } else {\n-            //TODO, only useful for ops showing the url parameters, this is duplicate with subscribeURL(url), can be removed in the future.\n-            publishConsumer(url);\n-        }\n-    }\n-\n-    private void publishProvider(URL providerUrl) throws RpcException {\n-        //first add into the list\n-        // remove the individual param\n-        providerUrl = providerUrl.removeParameters(PID_KEY, TIMESTAMP_KEY, Constants.BIND_IP_KEY,\n-                Constants.BIND_PORT_KEY, TIMESTAMP_KEY);\n-\n-        try {\n-            String interfaceName = providerUrl.getParameter(INTERFACE_KEY);\n-            if (StringUtils.isNotEmpty(interfaceName)) {\n-                Class interfaceClass = Class.forName(interfaceName);\n-                FullServiceDefinition fullServiceDefinition = ServiceDefinitionBuilder.buildFullDefinition(interfaceClass,\n-                        providerUrl.getParameters());\n-                for (Map.Entry<String, MetadataReport> entry : getMetadataReports().entrySet()) {\n-                    MetadataReport metadataReport = entry.getValue();\n-                    metadataReport.storeProviderMetadata(new MetadataIdentifier(providerUrl.getServiceInterface(),\n-                            providerUrl.getParameter(VERSION_KEY), providerUrl.getParameter(GROUP_KEY),\n-                            PROVIDER_SIDE, providerUrl.getParameter(APPLICATION_KEY)), fullServiceDefinition);\n-                }\n-                return;\n-            }\n-            logger.error(\"publishProvider interfaceName is empty . providerUrl: \" + providerUrl.toFullString());\n-        } catch (ClassNotFoundException e) {\n-            //ignore error\n-            logger.error(\"publishProvider getServiceDescriptor error. providerUrl: \" + providerUrl.toFullString(), e);\n-        }\n-    }\n-\n-    private void publishConsumer(URL consumerURL) throws RpcException {\n-        final URL url = consumerURL.removeParameters(PID_KEY, TIMESTAMP_KEY, Constants.BIND_IP_KEY,\n-                Constants.BIND_PORT_KEY, TIMESTAMP_KEY);\n-        getMetadataReports().forEach((registryKey, config) -> {\n-            config.storeConsumerMetadata(new MetadataIdentifier(url.getServiceInterface(),\n-                    url.getParameter(VERSION_KEY), url.getParameter(GROUP_KEY), CONSUMER_SIDE,\n-                    url.getParameter(APPLICATION_KEY)), url.getParameters());\n-        });\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.metadata.store;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.metadata.MetadataInfo;\r\n+import org.apache.dubbo.metadata.WritableMetadataService;\r\n+import org.apache.dubbo.metadata.definition.ServiceDefinitionBuilder;\r\n+import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;\r\n+import org.apache.dubbo.metadata.report.MetadataReport;\r\n+import org.apache.dubbo.metadata.report.MetadataReportInstance;\r\n+import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PID_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMESTAMP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_CLUSTER_KEY;\r\n+\r\n+public class RemoteMetadataServiceImpl {\r\n+    protected final Logger logger = LoggerFactory.getLogger(getClass());\r\n+    private WritableMetadataService localMetadataService;\r\n+\r\n+    public RemoteMetadataServiceImpl(WritableMetadataService writableMetadataService) {\r\n+        this.localMetadataService = writableMetadataService;\r\n+    }\r\n+\r\n+    public Map<String, MetadataReport> getMetadataReports() {\r\n+        return MetadataReportInstance.getMetadataReports(false);\r\n+    }\r\n+\r\n+    public void publishMetadata(String serviceName) {\r\n+        Map<String, MetadataInfo> metadataInfos = localMetadataService.getMetadataInfos();\r\n+        metadataInfos.forEach((registryCluster, metadataInfo) -> {\r\n+            if (!metadataInfo.hasReported()) {\r\n+                SubscriberMetadataIdentifier identifier = new SubscriberMetadataIdentifier(serviceName, metadataInfo.calAndGetRevision());\r\n+                metadataInfo.calAndGetRevision();\r\n+                metadataInfo.getExtendParams().put(REGISTRY_CLUSTER_KEY, registryCluster);\r\n+                MetadataReport metadataReport = getMetadataReports().get(registryCluster);\r\n+                if (metadataReport == null) {\r\n+                    metadataReport = getMetadataReports().entrySet().iterator().next().getValue();\r\n+                }\r\n+                logger.info(\"Publishing metadata to \" + metadataReport.getClass().getSimpleName());\r\n+                if (logger.isDebugEnabled()) {\r\n+                    logger.debug(metadataInfo.toString());\r\n+                }\r\n+                metadataReport.publishAppMetadata(identifier, metadataInfo);\r\n+                metadataInfo.markReported();\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    public MetadataInfo getMetadata(ServiceInstance instance) {\r\n+        SubscriberMetadataIdentifier identifier = new SubscriberMetadataIdentifier(instance.getServiceName(),\r\n+                ServiceInstanceMetadataUtils.getExportedServicesRevision(instance));\r\n+\r\n+        String registryCluster = instance.getExtendParams().get(REGISTRY_CLUSTER_KEY);\r\n+\r\n+        MetadataReport metadataReport = getMetadataReports().get(registryCluster);\r\n+        if (metadataReport == null) {\r\n+            metadataReport = getMetadataReports().entrySet().iterator().next().getValue();\r\n+        }\r\n+        return metadataReport.getAppMetadata(identifier, instance.getExtendParams());\r\n+    }\r\n+\r\n+    public void publishServiceDefinition(URL url) {\r\n+        String side = url.getParameter(SIDE_KEY);\r\n+        if (PROVIDER_SIDE.equalsIgnoreCase(side)) {\r\n+            //TODO, the params part is duplicate with that stored by exportURL(url), can be further optimized in the future.\r\n+            publishProvider(url);\r\n+        } else {\r\n+            //TODO, only useful for ops showing the url parameters, this is duplicate with subscribeURL(url), can be removed in the future.\r\n+            publishConsumer(url);\r\n+        }\r\n+    }\r\n+\r\n+    private void publishProvider(URL providerUrl) throws RpcException {\r\n+        //first add into the list\r\n+        // remove the individual param\r\n+        providerUrl = providerUrl.removeParameters(PID_KEY, TIMESTAMP_KEY, Constants.BIND_IP_KEY,\r\n+                Constants.BIND_PORT_KEY, TIMESTAMP_KEY);\r\n+\r\n+        try {\r\n+            String interfaceName = providerUrl.getParameter(INTERFACE_KEY);\r\n+            if (StringUtils.isNotEmpty(interfaceName)) {\r\n+                Class interfaceClass = Class.forName(interfaceName);\r\n+                FullServiceDefinition fullServiceDefinition = ServiceDefinitionBuilder.buildFullDefinition(interfaceClass,\r\n+                        providerUrl.getParameters());\r\n+                for (Map.Entry<String, MetadataReport> entry : getMetadataReports().entrySet()) {\r\n+                    MetadataReport metadataReport = entry.getValue();\r\n+                    metadataReport.storeProviderMetadata(new MetadataIdentifier(providerUrl.getServiceInterface(),\r\n+                            providerUrl.getParameter(VERSION_KEY), providerUrl.getParameter(GROUP_KEY),\r\n+                            PROVIDER_SIDE, providerUrl.getParameter(APPLICATION_KEY)), fullServiceDefinition);\r\n+                }\r\n+                return;\r\n+            }\r\n+            logger.error(\"publishProvider interfaceName is empty . providerUrl: \" + providerUrl.toFullString());\r\n+        } catch (ClassNotFoundException e) {\r\n+            //ignore error\r\n+            logger.error(\"publishProvider getServiceDescriptor error. providerUrl: \" + providerUrl.toFullString(), e);\r\n+        }\r\n+    }\r\n+\r\n+    private void publishConsumer(URL consumerURL) throws RpcException {\r\n+        final URL url = consumerURL.removeParameters(PID_KEY, TIMESTAMP_KEY, Constants.BIND_IP_KEY,\r\n+                Constants.BIND_PORT_KEY, TIMESTAMP_KEY);\r\n+        getMetadataReports().forEach((registryKey, config) -> {\r\n+            config.storeConsumerMetadata(new MetadataIdentifier(url.getServiceInterface(),\r\n+                    url.getParameter(VERSION_KEY), url.getParameter(GROUP_KEY), CONSUMER_SIDE,\r\n+                    url.getParameter(APPLICATION_KEY)), url.getParameters());\r\n+        });\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/migration/DefaultMigrationAddressComparator.java", "source2": "org/apache/dubbo/registry/client/migration/DefaultMigrationAddressComparator.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,74 +1,74 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.migration;\n-\n-import org.apache.dubbo.common.config.ConfigurationUtils;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.cluster.ClusterInvoker;\n-\n-import java.util.List;\n-\n-public class DefaultMigrationAddressComparator implements MigrationAddressComparator {\n-    private static final Logger logger = LoggerFactory.getLogger(DefaultMigrationAddressComparator.class);\n-    private static final String MIGRATION_THRESHOLD = \"dubbo.application.migration.threshold\";\n-    private static final String DEFAULT_THRESHOLD_STRING = \"0.8\";\n-    private static final float DEFAULT_THREAD = 0.8f;\n-\n-    @Override\n-    public <T> boolean shouldMigrate(ClusterInvoker<T> serviceDiscoveryInvoker, ClusterInvoker<T> invoker) {\n-        if (!serviceDiscoveryInvoker.isAvailable()) {\n-            logger.info(\"No instance address available, will not migrate.\");\n-            return false;\n-        }\n-        if (!invoker.isAvailable()) {\n-            logger.info(\"No interface address available, will migrate.\");\n-            return true;\n-        }\n-\n-        List<Invoker<T>> invokers1 = serviceDiscoveryInvoker.getDirectory().getAllInvokers();\n-        List<Invoker<T>> invokers2 = invoker.getDirectory().getAllInvokers();\n-\n-        int newAddressSize = CollectionUtils.isNotEmpty(invokers1) ? invokers1.size() : 0;\n-        int oldAddressSize = CollectionUtils.isNotEmpty(invokers2) ? invokers2.size() : 0;\n-\n-        String rawThreshold = ConfigurationUtils.getDynamicProperty(MIGRATION_THRESHOLD, DEFAULT_THRESHOLD_STRING);\n-        float threshold;\n-        try {\n-            threshold = Float.parseFloat(rawThreshold);\n-        } catch (Exception e) {\n-            logger.error(\"Invalid migration threshold \" + rawThreshold);\n-            threshold = DEFAULT_THREAD;\n-        }\n-\n-        logger.info(\"Instance address size \" + newAddressSize + \", interface address size \" + oldAddressSize + \", threshold \" + threshold);\n-\n-        if (newAddressSize != 0 && oldAddressSize == 0) {\n-            return true;\n-        }\n-        if (newAddressSize == 0 && oldAddressSize == 0) {\n-            return false;\n-        }\n-\n-        if (((float)newAddressSize / (float)oldAddressSize) >= threshold) {\n-            return true;\n-        }\n-        return false;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.migration;\r\n+\r\n+import org.apache.dubbo.common.config.ConfigurationUtils;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.cluster.ClusterInvoker;\r\n+\r\n+import java.util.List;\r\n+\r\n+public class DefaultMigrationAddressComparator implements MigrationAddressComparator {\r\n+    private static final Logger logger = LoggerFactory.getLogger(DefaultMigrationAddressComparator.class);\r\n+    private static final String MIGRATION_THRESHOLD = \"dubbo.application.migration.threshold\";\r\n+    private static final String DEFAULT_THRESHOLD_STRING = \"0.8\";\r\n+    private static final float DEFAULT_THREAD = 0.8f;\r\n+\r\n+    @Override\r\n+    public <T> boolean shouldMigrate(ClusterInvoker<T> serviceDiscoveryInvoker, ClusterInvoker<T> invoker) {\r\n+        if (!serviceDiscoveryInvoker.isAvailable()) {\r\n+            logger.info(\"No instance address available, will not migrate.\");\r\n+            return false;\r\n+        }\r\n+        if (!invoker.isAvailable()) {\r\n+            logger.info(\"No interface address available, will migrate.\");\r\n+            return true;\r\n+        }\r\n+\r\n+        List<Invoker<T>> invokers1 = serviceDiscoveryInvoker.getDirectory().getAllInvokers();\r\n+        List<Invoker<T>> invokers2 = invoker.getDirectory().getAllInvokers();\r\n+\r\n+        int newAddressSize = CollectionUtils.isNotEmpty(invokers1) ? invokers1.size() : 0;\r\n+        int oldAddressSize = CollectionUtils.isNotEmpty(invokers2) ? invokers2.size() : 0;\r\n+\r\n+        String rawThreshold = ConfigurationUtils.getDynamicProperty(MIGRATION_THRESHOLD, DEFAULT_THRESHOLD_STRING);\r\n+        float threshold;\r\n+        try {\r\n+            threshold = Float.parseFloat(rawThreshold);\r\n+        } catch (Exception e) {\r\n+            logger.error(\"Invalid migration threshold \" + rawThreshold);\r\n+            threshold = DEFAULT_THREAD;\r\n+        }\r\n+\r\n+        logger.info(\"Instance address size \" + newAddressSize + \", interface address size \" + oldAddressSize + \", threshold \" + threshold);\r\n+\r\n+        if (newAddressSize != 0 && oldAddressSize == 0) {\r\n+            return true;\r\n+        }\r\n+        if (newAddressSize == 0 && oldAddressSize == 0) {\r\n+            return false;\r\n+        }\r\n+\r\n+        if (((float)newAddressSize / (float)oldAddressSize) >= threshold) {\r\n+            return true;\r\n+        }\r\n+        return false;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/migration/InvokersChangedListener.java", "source2": "org/apache/dubbo/registry/client/migration/InvokersChangedListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,21 +1,21 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.migration;\n-\n-public interface InvokersChangedListener {\n-    void onChange();\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.migration;\r\n+\r\n+public interface InvokersChangedListener {\r\n+    void onChange();\r\n }\n"}, {"source1": "org/apache/dubbo/registry/client/migration/MigrationAddressComparator.java", "source2": "org/apache/dubbo/registry/client/migration/MigrationAddressComparator.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,25 +1,25 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.migration;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.rpc.cluster.ClusterInvoker;\n-\n-@SPI\n-public interface MigrationAddressComparator {\n-    <T> boolean shouldMigrate(ClusterInvoker<T> serviceDiscoveryInvoker, ClusterInvoker<T> invoker);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.migration;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.rpc.cluster.ClusterInvoker;\r\n+\r\n+@SPI\r\n+public interface MigrationAddressComparator {\r\n+    <T> boolean shouldMigrate(ClusterInvoker<T> serviceDiscoveryInvoker, ClusterInvoker<T> invoker);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/migration/MigrationInvoker.java", "source2": "org/apache/dubbo/registry/client/migration/MigrationInvoker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,390 +1,390 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.migration;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.constants.RegistryConstants;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.integration.DynamicDirectory;\n-import org.apache.dubbo.registry.integration.RegistryProtocol;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.cluster.Cluster;\n-import org.apache.dubbo.rpc.cluster.ClusterInvoker;\n-import org.apache.dubbo.rpc.cluster.Directory;\n-import org.apache.dubbo.rpc.cluster.support.migration.MigrationClusterInvoker;\n-import org.apache.dubbo.rpc.cluster.support.migration.MigrationRule;\n-\n-import java.util.Set;\n-import java.util.concurrent.atomic.AtomicBoolean;\n-\n-import static org.apache.dubbo.rpc.cluster.Constants.REFER_KEY;\n-\n-public class MigrationInvoker<T> implements MigrationClusterInvoker<T> {\n-    private Logger logger = LoggerFactory.getLogger(MigrationInvoker.class);\n-\n-    private URL url;\n-    private URL consumerUrl;\n-    private Cluster cluster;\n-    private Registry registry;\n-    private Class<T> type;\n-    private RegistryProtocol registryProtocol;\n-\n-    private volatile ClusterInvoker<T> invoker;\n-    private volatile ClusterInvoker<T> serviceDiscoveryInvoker;\n-    private volatile ClusterInvoker<T> currentAvailableInvoker;\n-\n-    private MigrationRule rule;\n-\n-    private boolean migrationMultiRegistry;\n-\n-    public MigrationInvoker(RegistryProtocol registryProtocol,\n-                            Cluster cluster,\n-                            Registry registry,\n-                            Class<T> type,\n-                            URL url,\n-                            URL consumerUrl) {\n-        this(null, null, registryProtocol, cluster, registry, type, url, consumerUrl);\n-    }\n-\n-    public MigrationInvoker(ClusterInvoker<T> invoker,\n-                            ClusterInvoker<T> serviceDiscoveryInvoker,\n-                            RegistryProtocol registryProtocol,\n-                            Cluster cluster,\n-                            Registry registry,\n-                            Class<T> type,\n-                            URL url,\n-                            URL consumerUrl) {\n-        this.invoker = invoker;\n-        this.serviceDiscoveryInvoker = serviceDiscoveryInvoker;\n-        this.registryProtocol = registryProtocol;\n-        this.cluster = cluster;\n-        this.registry = registry;\n-        this.type = type;\n-        this.url = url;\n-        this.consumerUrl = consumerUrl;\n-        this.migrationMultiRegistry = url.getParameter(RegistryConstants.MIGRATION_MULTI_REGISTRY, false);\n-    }\n-\n-    public ClusterInvoker<T> getInvoker() {\n-        return invoker;\n-    }\n-\n-    public void setInvoker(ClusterInvoker<T> invoker) {\n-        this.invoker = invoker;\n-    }\n-\n-    public ClusterInvoker<T> getServiceDiscoveryInvoker() {\n-        return serviceDiscoveryInvoker;\n-    }\n-\n-    public void setServiceDiscoveryInvoker(ClusterInvoker<T> serviceDiscoveryInvoker) {\n-        this.serviceDiscoveryInvoker = serviceDiscoveryInvoker;\n-    }\n-\n-    @Override\n-    public Class<T> getInterface() {\n-        return type;\n-    }\n-\n-    @Override\n-    public synchronized void migrateToServiceDiscoveryInvoker(boolean forceMigrate) {\n-        if (!forceMigrate) {\n-            refreshServiceDiscoveryInvoker();\n-            refreshInterfaceInvoker();\n-            setListener(invoker, () -> {\n-                this.compareAddresses(serviceDiscoveryInvoker, invoker);\n-            });\n-            setListener(serviceDiscoveryInvoker, () -> {\n-                this.compareAddresses(serviceDiscoveryInvoker, invoker);\n-            });\n-        } else {\n-            refreshServiceDiscoveryInvoker();\n-            setListener(serviceDiscoveryInvoker, () -> {\n-                this.destroyInterfaceInvoker(this.invoker);\n-            });\n-        }\n-    }\n-\n-    @Override\n-    public void reRefer(URL newSubscribeUrl) {\n-        // update url to prepare for migration refresh\n-        this.url = url.addParameter(REFER_KEY, StringUtils.toQueryString(newSubscribeUrl.getParameters()));\n-\n-        // re-subscribe immediately\n-        if (invoker != null && !invoker.isDestroyed()) {\n-            doReSubscribe(invoker, newSubscribeUrl);\n-        }\n-        if (serviceDiscoveryInvoker != null && !serviceDiscoveryInvoker.isDestroyed()) {\n-            doReSubscribe(serviceDiscoveryInvoker, newSubscribeUrl);\n-        }\n-    }\n-\n-    private void doReSubscribe(ClusterInvoker<T> invoker, URL newSubscribeUrl) {\n-        DynamicDirectory<T> directory = (DynamicDirectory<T>) invoker.getDirectory();\n-        URL oldSubscribeUrl = directory.getRegisteredConsumerUrl();\n-        Registry registry = directory.getRegistry();\n-        registry.unregister(directory.getRegisteredConsumerUrl());\n-        directory.unSubscribe(RegistryProtocol.toSubscribeUrl(oldSubscribeUrl));\n-        registry.register(directory.getRegisteredConsumerUrl());\n-\n-        directory.setRegisteredConsumerUrl(newSubscribeUrl);\n-        directory.buildRouterChain(newSubscribeUrl);\n-        directory.subscribe(RegistryProtocol.toSubscribeUrl(newSubscribeUrl));\n-    }\n-\n-    @Override\n-    public synchronized void fallbackToInterfaceInvoker() {\n-        refreshInterfaceInvoker();\n-        setListener(invoker, () -> {\n-            this.destroyServiceDiscoveryInvoker(this.serviceDiscoveryInvoker);\n-        });\n-    }\n-\n-    @Override\n-    public Result invoke(Invocation invocation) throws RpcException {\n-        if (!checkInvokerAvailable(serviceDiscoveryInvoker)) {\n-            if (logger.isDebugEnabled()) {\n-                logger.debug(\"Using interface addresses to handle invocation, interface \" + type.getName() + \", total address size \" + (invoker.getDirectory().getAllInvokers() == null ? \"is null\" : invoker.getDirectory().getAllInvokers().size()));\n-            }\n-            return invoker.invoke(invocation);\n-        }\n-\n-        if (!checkInvokerAvailable(invoker)) {\n-            if (logger.isDebugEnabled()) {\n-                logger.debug(\"Using instance addresses to handle invocation, interface \" + type.getName() + \", total address size \" + (serviceDiscoveryInvoker.getDirectory().getAllInvokers() == null ? \" is null \" : serviceDiscoveryInvoker.getDirectory().getAllInvokers().size()));\n-            }\n-            return serviceDiscoveryInvoker.invoke(invocation);\n-        }\n-\n-        return currentAvailableInvoker.invoke(invocation);\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        return (invoker != null && invoker.isAvailable())\n-                || (serviceDiscoveryInvoker != null && serviceDiscoveryInvoker.isAvailable());\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        if (invoker != null) {\n-            invoker.destroy();\n-        }\n-        if (serviceDiscoveryInvoker != null) {\n-            serviceDiscoveryInvoker.destroy();\n-        }\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        if (invoker != null) {\n-            return invoker.getUrl();\n-        } else if (serviceDiscoveryInvoker != null) {\n-            return serviceDiscoveryInvoker.getUrl();\n-        }\n-\n-        return consumerUrl;\n-    }\n-\n-    @Override\n-    public URL getRegistryUrl() {\n-        if (invoker != null) {\n-            return invoker.getRegistryUrl();\n-        } else if (serviceDiscoveryInvoker != null) {\n-            serviceDiscoveryInvoker.getRegistryUrl();\n-        }\n-        return url;\n-    }\n-\n-    @Override\n-    public Directory<T> getDirectory() {\n-        if (invoker != null) {\n-            return invoker.getDirectory();\n-        } else if (serviceDiscoveryInvoker != null) {\n-            return serviceDiscoveryInvoker.getDirectory();\n-        }\n-        return null;\n-    }\n-\n-    @Override\n-    public boolean isDestroyed() {\n-        return (invoker == null || invoker.isDestroyed())\n-                && (serviceDiscoveryInvoker == null || serviceDiscoveryInvoker.isDestroyed());\n-    }\n-\n-\n-    @Override\n-    public AtomicBoolean invokersChanged() {\n-        return invokersChanged;\n-    }\n-\n-    private volatile AtomicBoolean invokersChanged = new AtomicBoolean(true);\n-\n-    private synchronized void compareAddresses(ClusterInvoker<T> serviceDiscoveryInvoker, ClusterInvoker<T> invoker) {\n-        this.invokersChanged.set(true);\n-        if (logger.isDebugEnabled()) {\n-            logger.info(invoker.getDirectory().getAllInvokers() == null ? \"null\" : invoker.getDirectory().getAllInvokers().size() + \"\");\n-        }\n-\n-        Set<MigrationAddressComparator> detectors = ExtensionLoader.getExtensionLoader(MigrationAddressComparator.class).getSupportedExtensionInstances();\n-        if (detectors != null && detectors.stream().allMatch(migrationDetector -> migrationDetector.shouldMigrate(serviceDiscoveryInvoker, invoker))) {\n-            discardInterfaceInvokerAddress(invoker);\n-        } else {\n-            discardServiceDiscoveryInvokerAddress(serviceDiscoveryInvoker);\n-        }\n-    }\n-\n-    private synchronized void setAddressChanged() {\n-        this.invokersChanged.set(true);\n-    }\n-\n-    public synchronized void destroyServiceDiscoveryInvoker(ClusterInvoker<?> serviceDiscoveryInvoker) {\n-        if (checkInvokerAvailable(this.invoker)) {\n-            this.currentAvailableInvoker = this.invoker;\n-        }\n-        if (serviceDiscoveryInvoker != null) {\n-            if (logger.isDebugEnabled()) {\n-                logger.debug(\"Destroying instance address invokers, will not listen for address changes until re-subscribed, \" + type.getName());\n-            }\n-            serviceDiscoveryInvoker.destroy();\n-        }\n-    }\n-\n-    public synchronized void discardServiceDiscoveryInvokerAddress(ClusterInvoker<?> serviceDiscoveryInvoker) {\n-        if (checkInvokerAvailable(this.invoker)) {\n-            this.currentAvailableInvoker = this.invoker;\n-        }\n-        if (serviceDiscoveryInvoker != null) {\n-            if (logger.isDebugEnabled()) {\n-                logger.debug(\"Discarding instance addresses, total size \" + (null == serviceDiscoveryInvoker.getDirectory().getAllInvokers() ? \"null\" : serviceDiscoveryInvoker.getDirectory().getAllInvokers().size()));\n-            }\n-            serviceDiscoveryInvoker.getDirectory().discordAddresses();\n-        }\n-    }\n-\n-    public synchronized void refreshServiceDiscoveryInvoker() {\n-        clearListener(serviceDiscoveryInvoker);\n-        if (needRefresh(serviceDiscoveryInvoker)) {\n-            if (logger.isDebugEnabled()) {\n-                logger.debug(\"Re-subscribing instance addresses, current interface \" + type.getName());\n-            }\n-            serviceDiscoveryInvoker = registryProtocol.getServiceDiscoveryInvoker(cluster, registry, type, url);\n-\n-            if (migrationMultiRegistry) {\n-                setListener(serviceDiscoveryInvoker, () -> {\n-                    this.setAddressChanged();\n-                });\n-            }\n-        }\n-    }\n-\n-    private void clearListener(ClusterInvoker<T> invoker) {\n-        if (migrationMultiRegistry) {\n-            return;\n-        }\n-\n-        if (invoker == null) {\n-            return;\n-        }\n-        DynamicDirectory<T> directory = (DynamicDirectory<T>) invoker.getDirectory();\n-        directory.setInvokersChangedListener(null);\n-    }\n-\n-    private void setListener(ClusterInvoker<T> invoker, InvokersChangedListener listener) {\n-        if (invoker == null) {\n-            return;\n-        }\n-        DynamicDirectory<T> directory = (DynamicDirectory<T>) invoker.getDirectory();\n-        directory.setInvokersChangedListener(listener);\n-    }\n-\n-    public synchronized void refreshInterfaceInvoker() {\n-        clearListener(invoker);\n-        if (needRefresh(invoker)) {\n-            // FIXME invoker.destroy();\n-            if (logger.isDebugEnabled()) {\n-                logger.debug(\"Re-subscribing interface addresses for interface \" + type.getName());\n-            }\n-            invoker = registryProtocol.getInvoker(cluster, registry, type, url);\n-\n-            if (migrationMultiRegistry) {\n-                setListener(serviceDiscoveryInvoker, () -> {\n-                    this.setAddressChanged();\n-                });\n-            }\n-        }\n-    }\n-\n-    public synchronized void destroyInterfaceInvoker(ClusterInvoker<T> invoker) {\n-        if (checkInvokerAvailable(this.serviceDiscoveryInvoker)) {\n-            this.currentAvailableInvoker = this.serviceDiscoveryInvoker;\n-        }\n-        if (invoker != null) {\n-            if (logger.isDebugEnabled()) {\n-                logger.debug(\"Destroying interface address invokers, will not listen for address changes until re-subscribed, \" + type.getName());\n-            }\n-            invoker.destroy();\n-        }\n-    }\n-\n-    public synchronized void discardInterfaceInvokerAddress(ClusterInvoker<T> invoker) {\n-        if (this.serviceDiscoveryInvoker != null) {\n-            this.currentAvailableInvoker = this.serviceDiscoveryInvoker;\n-        }\n-        if (invoker != null) {\n-            if (logger.isDebugEnabled()) {\n-                logger.debug(\"Discarding interface addresses, total address size \" + (null == invoker.getDirectory().getAllInvokers() ? \"null\" : invoker.getDirectory().getAllInvokers().size()));\n-            }\n-            invoker.getDirectory().discordAddresses();\n-        }\n-    }\n-\n-    private boolean needRefresh(ClusterInvoker<T> invoker) {\n-        return invoker == null || invoker.isDestroyed();\n-    }\n-\n-    public boolean checkInvokerAvailable(ClusterInvoker<T> invoker) {\n-        return invoker != null && !invoker.isDestroyed() && invoker.isAvailable();\n-    }\n-\n-    @Override\n-    public boolean isServiceInvoker() {\n-        return false;\n-    }\n-\n-    @Override\n-    public MigrationRule getMigrationRule() {\n-        return rule;\n-    }\n-\n-    @Override\n-    public void setMigrationRule(MigrationRule rule) {\n-        this.rule = rule;\n-    }\n-\n-    @Override\n-    public boolean isMigrationMultiRegistry() {\n-        return migrationMultiRegistry;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.migration;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.constants.RegistryConstants;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.integration.DynamicDirectory;\r\n+import org.apache.dubbo.registry.integration.RegistryProtocol;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.cluster.Cluster;\r\n+import org.apache.dubbo.rpc.cluster.ClusterInvoker;\r\n+import org.apache.dubbo.rpc.cluster.Directory;\r\n+import org.apache.dubbo.rpc.cluster.support.migration.MigrationClusterInvoker;\r\n+import org.apache.dubbo.rpc.cluster.support.migration.MigrationRule;\r\n+\r\n+import java.util.Set;\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+\r\n+import static org.apache.dubbo.rpc.cluster.Constants.REFER_KEY;\r\n+\r\n+public class MigrationInvoker<T> implements MigrationClusterInvoker<T> {\r\n+    private Logger logger = LoggerFactory.getLogger(MigrationInvoker.class);\r\n+\r\n+    private URL url;\r\n+    private URL consumerUrl;\r\n+    private Cluster cluster;\r\n+    private Registry registry;\r\n+    private Class<T> type;\r\n+    private RegistryProtocol registryProtocol;\r\n+\r\n+    private volatile ClusterInvoker<T> invoker;\r\n+    private volatile ClusterInvoker<T> serviceDiscoveryInvoker;\r\n+    private volatile ClusterInvoker<T> currentAvailableInvoker;\r\n+\r\n+    private MigrationRule rule;\r\n+\r\n+    private boolean migrationMultiRegistry;\r\n+\r\n+    public MigrationInvoker(RegistryProtocol registryProtocol,\r\n+                            Cluster cluster,\r\n+                            Registry registry,\r\n+                            Class<T> type,\r\n+                            URL url,\r\n+                            URL consumerUrl) {\r\n+        this(null, null, registryProtocol, cluster, registry, type, url, consumerUrl);\r\n+    }\r\n+\r\n+    public MigrationInvoker(ClusterInvoker<T> invoker,\r\n+                            ClusterInvoker<T> serviceDiscoveryInvoker,\r\n+                            RegistryProtocol registryProtocol,\r\n+                            Cluster cluster,\r\n+                            Registry registry,\r\n+                            Class<T> type,\r\n+                            URL url,\r\n+                            URL consumerUrl) {\r\n+        this.invoker = invoker;\r\n+        this.serviceDiscoveryInvoker = serviceDiscoveryInvoker;\r\n+        this.registryProtocol = registryProtocol;\r\n+        this.cluster = cluster;\r\n+        this.registry = registry;\r\n+        this.type = type;\r\n+        this.url = url;\r\n+        this.consumerUrl = consumerUrl;\r\n+        this.migrationMultiRegistry = url.getParameter(RegistryConstants.MIGRATION_MULTI_REGISTRY, false);\r\n+    }\r\n+\r\n+    public ClusterInvoker<T> getInvoker() {\r\n+        return invoker;\r\n+    }\r\n+\r\n+    public void setInvoker(ClusterInvoker<T> invoker) {\r\n+        this.invoker = invoker;\r\n+    }\r\n+\r\n+    public ClusterInvoker<T> getServiceDiscoveryInvoker() {\r\n+        return serviceDiscoveryInvoker;\r\n+    }\r\n+\r\n+    public void setServiceDiscoveryInvoker(ClusterInvoker<T> serviceDiscoveryInvoker) {\r\n+        this.serviceDiscoveryInvoker = serviceDiscoveryInvoker;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Class<T> getInterface() {\r\n+        return type;\r\n+    }\r\n+\r\n+    @Override\r\n+    public synchronized void migrateToServiceDiscoveryInvoker(boolean forceMigrate) {\r\n+        if (!forceMigrate) {\r\n+            refreshServiceDiscoveryInvoker();\r\n+            refreshInterfaceInvoker();\r\n+            setListener(invoker, () -> {\r\n+                this.compareAddresses(serviceDiscoveryInvoker, invoker);\r\n+            });\r\n+            setListener(serviceDiscoveryInvoker, () -> {\r\n+                this.compareAddresses(serviceDiscoveryInvoker, invoker);\r\n+            });\r\n+        } else {\r\n+            refreshServiceDiscoveryInvoker();\r\n+            setListener(serviceDiscoveryInvoker, () -> {\r\n+                this.destroyInterfaceInvoker(this.invoker);\r\n+            });\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void reRefer(URL newSubscribeUrl) {\r\n+        // update url to prepare for migration refresh\r\n+        this.url = url.addParameter(REFER_KEY, StringUtils.toQueryString(newSubscribeUrl.getParameters()));\r\n+\r\n+        // re-subscribe immediately\r\n+        if (invoker != null && !invoker.isDestroyed()) {\r\n+            doReSubscribe(invoker, newSubscribeUrl);\r\n+        }\r\n+        if (serviceDiscoveryInvoker != null && !serviceDiscoveryInvoker.isDestroyed()) {\r\n+            doReSubscribe(serviceDiscoveryInvoker, newSubscribeUrl);\r\n+        }\r\n+    }\r\n+\r\n+    private void doReSubscribe(ClusterInvoker<T> invoker, URL newSubscribeUrl) {\r\n+        DynamicDirectory<T> directory = (DynamicDirectory<T>) invoker.getDirectory();\r\n+        URL oldSubscribeUrl = directory.getRegisteredConsumerUrl();\r\n+        Registry registry = directory.getRegistry();\r\n+        registry.unregister(directory.getRegisteredConsumerUrl());\r\n+        directory.unSubscribe(RegistryProtocol.toSubscribeUrl(oldSubscribeUrl));\r\n+        registry.register(directory.getRegisteredConsumerUrl());\r\n+\r\n+        directory.setRegisteredConsumerUrl(newSubscribeUrl);\r\n+        directory.buildRouterChain(newSubscribeUrl);\r\n+        directory.subscribe(RegistryProtocol.toSubscribeUrl(newSubscribeUrl));\r\n+    }\r\n+\r\n+    @Override\r\n+    public synchronized void fallbackToInterfaceInvoker() {\r\n+        refreshInterfaceInvoker();\r\n+        setListener(invoker, () -> {\r\n+            this.destroyServiceDiscoveryInvoker(this.serviceDiscoveryInvoker);\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public Result invoke(Invocation invocation) throws RpcException {\r\n+        if (!checkInvokerAvailable(serviceDiscoveryInvoker)) {\r\n+            if (logger.isDebugEnabled()) {\r\n+                logger.debug(\"Using interface addresses to handle invocation, interface \" + type.getName() + \", total address size \" + (invoker.getDirectory().getAllInvokers() == null ? \"is null\" : invoker.getDirectory().getAllInvokers().size()));\r\n+            }\r\n+            return invoker.invoke(invocation);\r\n+        }\r\n+\r\n+        if (!checkInvokerAvailable(invoker)) {\r\n+            if (logger.isDebugEnabled()) {\r\n+                logger.debug(\"Using instance addresses to handle invocation, interface \" + type.getName() + \", total address size \" + (serviceDiscoveryInvoker.getDirectory().getAllInvokers() == null ? \" is null \" : serviceDiscoveryInvoker.getDirectory().getAllInvokers().size()));\r\n+            }\r\n+            return serviceDiscoveryInvoker.invoke(invocation);\r\n+        }\r\n+\r\n+        return currentAvailableInvoker.invoke(invocation);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        return (invoker != null && invoker.isAvailable())\r\n+                || (serviceDiscoveryInvoker != null && serviceDiscoveryInvoker.isAvailable());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        if (invoker != null) {\r\n+            invoker.destroy();\r\n+        }\r\n+        if (serviceDiscoveryInvoker != null) {\r\n+            serviceDiscoveryInvoker.destroy();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        if (invoker != null) {\r\n+            return invoker.getUrl();\r\n+        } else if (serviceDiscoveryInvoker != null) {\r\n+            return serviceDiscoveryInvoker.getUrl();\r\n+        }\r\n+\r\n+        return consumerUrl;\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getRegistryUrl() {\r\n+        if (invoker != null) {\r\n+            return invoker.getRegistryUrl();\r\n+        } else if (serviceDiscoveryInvoker != null) {\r\n+            serviceDiscoveryInvoker.getRegistryUrl();\r\n+        }\r\n+        return url;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Directory<T> getDirectory() {\r\n+        if (invoker != null) {\r\n+            return invoker.getDirectory();\r\n+        } else if (serviceDiscoveryInvoker != null) {\r\n+            return serviceDiscoveryInvoker.getDirectory();\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isDestroyed() {\r\n+        return (invoker == null || invoker.isDestroyed())\r\n+                && (serviceDiscoveryInvoker == null || serviceDiscoveryInvoker.isDestroyed());\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public AtomicBoolean invokersChanged() {\r\n+        return invokersChanged;\r\n+    }\r\n+\r\n+    private volatile AtomicBoolean invokersChanged = new AtomicBoolean(true);\r\n+\r\n+    private synchronized void compareAddresses(ClusterInvoker<T> serviceDiscoveryInvoker, ClusterInvoker<T> invoker) {\r\n+        this.invokersChanged.set(true);\r\n+        if (logger.isDebugEnabled()) {\r\n+            logger.info(invoker.getDirectory().getAllInvokers() == null ? \"null\" : invoker.getDirectory().getAllInvokers().size() + \"\");\r\n+        }\r\n+\r\n+        Set<MigrationAddressComparator> detectors = ExtensionLoader.getExtensionLoader(MigrationAddressComparator.class).getSupportedExtensionInstances();\r\n+        if (detectors != null && detectors.stream().allMatch(migrationDetector -> migrationDetector.shouldMigrate(serviceDiscoveryInvoker, invoker))) {\r\n+            discardInterfaceInvokerAddress(invoker);\r\n+        } else {\r\n+            discardServiceDiscoveryInvokerAddress(serviceDiscoveryInvoker);\r\n+        }\r\n+    }\r\n+\r\n+    private synchronized void setAddressChanged() {\r\n+        this.invokersChanged.set(true);\r\n+    }\r\n+\r\n+    public synchronized void destroyServiceDiscoveryInvoker(ClusterInvoker<?> serviceDiscoveryInvoker) {\r\n+        if (checkInvokerAvailable(this.invoker)) {\r\n+            this.currentAvailableInvoker = this.invoker;\r\n+        }\r\n+        if (serviceDiscoveryInvoker != null) {\r\n+            if (logger.isDebugEnabled()) {\r\n+                logger.debug(\"Destroying instance address invokers, will not listen for address changes until re-subscribed, \" + type.getName());\r\n+            }\r\n+            serviceDiscoveryInvoker.destroy();\r\n+        }\r\n+    }\r\n+\r\n+    public synchronized void discardServiceDiscoveryInvokerAddress(ClusterInvoker<?> serviceDiscoveryInvoker) {\r\n+        if (checkInvokerAvailable(this.invoker)) {\r\n+            this.currentAvailableInvoker = this.invoker;\r\n+        }\r\n+        if (serviceDiscoveryInvoker != null) {\r\n+            if (logger.isDebugEnabled()) {\r\n+                logger.debug(\"Discarding instance addresses, total size \" + (null == serviceDiscoveryInvoker.getDirectory().getAllInvokers() ? \"null\" : serviceDiscoveryInvoker.getDirectory().getAllInvokers().size()));\r\n+            }\r\n+            serviceDiscoveryInvoker.getDirectory().discordAddresses();\r\n+        }\r\n+    }\r\n+\r\n+    public synchronized void refreshServiceDiscoveryInvoker() {\r\n+        clearListener(serviceDiscoveryInvoker);\r\n+        if (needRefresh(serviceDiscoveryInvoker)) {\r\n+            if (logger.isDebugEnabled()) {\r\n+                logger.debug(\"Re-subscribing instance addresses, current interface \" + type.getName());\r\n+            }\r\n+            serviceDiscoveryInvoker = registryProtocol.getServiceDiscoveryInvoker(cluster, registry, type, url);\r\n+\r\n+            if (migrationMultiRegistry) {\r\n+                setListener(serviceDiscoveryInvoker, () -> {\r\n+                    this.setAddressChanged();\r\n+                });\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private void clearListener(ClusterInvoker<T> invoker) {\r\n+        if (migrationMultiRegistry) {\r\n+            return;\r\n+        }\r\n+\r\n+        if (invoker == null) {\r\n+            return;\r\n+        }\r\n+        DynamicDirectory<T> directory = (DynamicDirectory<T>) invoker.getDirectory();\r\n+        directory.setInvokersChangedListener(null);\r\n+    }\r\n+\r\n+    private void setListener(ClusterInvoker<T> invoker, InvokersChangedListener listener) {\r\n+        if (invoker == null) {\r\n+            return;\r\n+        }\r\n+        DynamicDirectory<T> directory = (DynamicDirectory<T>) invoker.getDirectory();\r\n+        directory.setInvokersChangedListener(listener);\r\n+    }\r\n+\r\n+    public synchronized void refreshInterfaceInvoker() {\r\n+        clearListener(invoker);\r\n+        if (needRefresh(invoker)) {\r\n+            // FIXME invoker.destroy();\r\n+            if (logger.isDebugEnabled()) {\r\n+                logger.debug(\"Re-subscribing interface addresses for interface \" + type.getName());\r\n+            }\r\n+            invoker = registryProtocol.getInvoker(cluster, registry, type, url);\r\n+\r\n+            if (migrationMultiRegistry) {\r\n+                setListener(serviceDiscoveryInvoker, () -> {\r\n+                    this.setAddressChanged();\r\n+                });\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public synchronized void destroyInterfaceInvoker(ClusterInvoker<T> invoker) {\r\n+        if (checkInvokerAvailable(this.serviceDiscoveryInvoker)) {\r\n+            this.currentAvailableInvoker = this.serviceDiscoveryInvoker;\r\n+        }\r\n+        if (invoker != null) {\r\n+            if (logger.isDebugEnabled()) {\r\n+                logger.debug(\"Destroying interface address invokers, will not listen for address changes until re-subscribed, \" + type.getName());\r\n+            }\r\n+            invoker.destroy();\r\n+        }\r\n+    }\r\n+\r\n+    public synchronized void discardInterfaceInvokerAddress(ClusterInvoker<T> invoker) {\r\n+        if (this.serviceDiscoveryInvoker != null) {\r\n+            this.currentAvailableInvoker = this.serviceDiscoveryInvoker;\r\n+        }\r\n+        if (invoker != null) {\r\n+            if (logger.isDebugEnabled()) {\r\n+                logger.debug(\"Discarding interface addresses, total address size \" + (null == invoker.getDirectory().getAllInvokers() ? \"null\" : invoker.getDirectory().getAllInvokers().size()));\r\n+            }\r\n+            invoker.getDirectory().discordAddresses();\r\n+        }\r\n+    }\r\n+\r\n+    private boolean needRefresh(ClusterInvoker<T> invoker) {\r\n+        return invoker == null || invoker.isDestroyed();\r\n+    }\r\n+\r\n+    public boolean checkInvokerAvailable(ClusterInvoker<T> invoker) {\r\n+        return invoker != null && !invoker.isDestroyed() && invoker.isAvailable();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isServiceInvoker() {\r\n+        return false;\r\n+    }\r\n+\r\n+    @Override\r\n+    public MigrationRule getMigrationRule() {\r\n+        return rule;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void setMigrationRule(MigrationRule rule) {\r\n+        this.rule = rule;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isMigrationMultiRegistry() {\r\n+        return migrationMultiRegistry;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/migration/MigrationRuleHandler.java", "source2": "org/apache/dubbo/registry/client/migration/MigrationRuleHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,71 +1,71 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.migration;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.rpc.cluster.support.migration.MigrationRule;\n-import org.apache.dubbo.rpc.cluster.support.migration.MigrationStep;\n-\n-@Activate\n-public class MigrationRuleHandler<T> {\n-    private static final Logger logger = LoggerFactory.getLogger(MigrationRuleHandler.class);\n-\n-    private MigrationInvoker<T> migrationInvoker;\n-\n-    public MigrationRuleHandler(MigrationInvoker<T> invoker) {\n-        this.migrationInvoker = invoker;\n-    }\n-\n-    private MigrationStep currentStep;\n-\n-    public void doMigrate(String rawRule) {\n-        MigrationRule rule = MigrationRule.parse(rawRule);\n-\n-        if (null != currentStep && currentStep.equals(rule.getStep())) {\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"Migration step is not change. rule.getStep is \" + currentStep.name());\n-            }\n-            return;\n-        } else {\n-            currentStep = rule.getStep();\n-        }\n-\n-        migrationInvoker.setMigrationRule(rule);\n-\n-        if (migrationInvoker.isMigrationMultiRegistry()) {\n-            if (migrationInvoker.isServiceInvoker()) {\n-                migrationInvoker.refreshServiceDiscoveryInvoker();\n-            } else {\n-                migrationInvoker.refreshInterfaceInvoker();\n-            }\n-        } else {\n-            switch (rule.getStep()) {\n-                case APPLICATION_FIRST:\n-                    migrationInvoker.migrateToServiceDiscoveryInvoker(false);\n-                    break;\n-                case FORCE_APPLICATION:\n-                    migrationInvoker.migrateToServiceDiscoveryInvoker(true);\n-                    break;\n-                case FORCE_INTERFACE:\n-                default:\n-                    migrationInvoker.fallbackToInterfaceInvoker();\n-            }\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.migration;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.rpc.cluster.support.migration.MigrationRule;\r\n+import org.apache.dubbo.rpc.cluster.support.migration.MigrationStep;\r\n+\r\n+@Activate\r\n+public class MigrationRuleHandler<T> {\r\n+    private static final Logger logger = LoggerFactory.getLogger(MigrationRuleHandler.class);\r\n+\r\n+    private MigrationInvoker<T> migrationInvoker;\r\n+\r\n+    public MigrationRuleHandler(MigrationInvoker<T> invoker) {\r\n+        this.migrationInvoker = invoker;\r\n+    }\r\n+\r\n+    private MigrationStep currentStep;\r\n+\r\n+    public void doMigrate(String rawRule) {\r\n+        MigrationRule rule = MigrationRule.parse(rawRule);\r\n+\r\n+        if (null != currentStep && currentStep.equals(rule.getStep())) {\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"Migration step is not change. rule.getStep is \" + currentStep.name());\r\n+            }\r\n+            return;\r\n+        } else {\r\n+            currentStep = rule.getStep();\r\n+        }\r\n+\r\n+        migrationInvoker.setMigrationRule(rule);\r\n+\r\n+        if (migrationInvoker.isMigrationMultiRegistry()) {\r\n+            if (migrationInvoker.isServiceInvoker()) {\r\n+                migrationInvoker.refreshServiceDiscoveryInvoker();\r\n+            } else {\r\n+                migrationInvoker.refreshInterfaceInvoker();\r\n+            }\r\n+        } else {\r\n+            switch (rule.getStep()) {\r\n+                case APPLICATION_FIRST:\r\n+                    migrationInvoker.migrateToServiceDiscoveryInvoker(false);\r\n+                    break;\r\n+                case FORCE_APPLICATION:\r\n+                    migrationInvoker.migrateToServiceDiscoveryInvoker(true);\r\n+                    break;\r\n+                case FORCE_INTERFACE:\r\n+                default:\r\n+                    migrationInvoker.fallbackToInterfaceInvoker();\r\n+            }\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/migration/MigrationRuleListener.java", "source2": "org/apache/dubbo/registry/client/migration/MigrationRuleListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,112 +1,112 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.migration;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\n-import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.ConcurrentHashSet;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.registry.integration.RegistryProtocol;\n-import org.apache.dubbo.registry.integration.RegistryProtocolListener;\n-import org.apache.dubbo.rpc.Exporter;\n-import org.apache.dubbo.rpc.cluster.ClusterInvoker;\n-import org.apache.dubbo.rpc.cluster.support.migration.MigrationRule;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-\n-import java.util.Optional;\n-import java.util.Set;\n-\n-import static org.apache.dubbo.common.constants.RegistryConstants.INIT;\n-\n-@Activate\n-public class MigrationRuleListener implements RegistryProtocolListener, ConfigurationListener {\n-    private static final Logger logger = LoggerFactory.getLogger(MigrationRuleListener.class);\n-\n-    private Set<MigrationRuleHandler> listeners = new ConcurrentHashSet<>();\n-    private DynamicConfiguration configuration;\n-\n-    private volatile String rawRule;\n-\n-    public MigrationRuleListener() {\n-        Optional<DynamicConfiguration> optional =  ApplicationModel.getEnvironment().getDynamicConfiguration();\n-\n-        if (optional.isPresent()) {\n-            this.configuration = optional.get();\n-\n-            logger.info(\"Listening for migration rules on dataId-\" + MigrationRule.RULE_KEY + \" group-\" + MigrationRule.DUBBO_SERVICEDISCOVERY_MIGRATION_GROUP);\n-            configuration.addListener(MigrationRule.RULE_KEY, MigrationRule.DUBBO_SERVICEDISCOVERY_MIGRATION_GROUP, this);\n-\n-            rawRule = configuration.getConfig(MigrationRule.RULE_KEY, MigrationRule.DUBBO_SERVICEDISCOVERY_MIGRATION_GROUP);\n-            if (StringUtils.isEmpty(rawRule)) {\n-                rawRule = INIT;\n-            }\n-\n-        } else {\n-            if (logger.isWarnEnabled()) {\n-                logger.warn(\"config center is not configured!\");\n-            }\n-\n-            rawRule = INIT;\n-        }\n-\n-        process(new ConfigChangedEvent(MigrationRule.RULE_KEY, MigrationRule.DUBBO_SERVICEDISCOVERY_MIGRATION_GROUP, rawRule));\n-    }\n-\n-    @Override\n-    public synchronized void process(ConfigChangedEvent event) {\n-        rawRule = event.getContent();\n-        if (StringUtils.isEmpty(rawRule)) {\n-            logger.warn(\"Received empty migration rule, will ignore.\");\n-            return;\n-        }\n-\n-        logger.info(\"Using the following migration rule to migrate:\");\n-        logger.info(rawRule);\n-\n-        if (CollectionUtils.isNotEmpty(listeners)) {\n-            listeners.forEach(listener -> listener.doMigrate(rawRule));\n-        }\n-    }\n-\n-    @Override\n-    public synchronized void onExport(RegistryProtocol registryProtocol, Exporter<?> exporter) {\n-\n-    }\n-\n-    @Override\n-    public synchronized  void onRefer(RegistryProtocol registryProtocol, ClusterInvoker<?> invoker, URL url) {\n-        MigrationInvoker<?> migrationInvoker = (MigrationInvoker<?>) invoker;\n-\n-        MigrationRuleHandler<?> migrationListener = new MigrationRuleHandler<>(migrationInvoker);\n-        listeners.add(migrationListener);\n-\n-        migrationListener.doMigrate(rawRule);\n-    }\n-\n-    @Override\n-    public void onDestroy() {\n-        if (null != configuration) {\n-            configuration.removeListener(MigrationRule.RULE_KEY, this);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.migration;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.ConcurrentHashSet;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.registry.integration.RegistryProtocol;\r\n+import org.apache.dubbo.registry.integration.RegistryProtocolListener;\r\n+import org.apache.dubbo.rpc.Exporter;\r\n+import org.apache.dubbo.rpc.cluster.ClusterInvoker;\r\n+import org.apache.dubbo.rpc.cluster.support.migration.MigrationRule;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+\r\n+import java.util.Optional;\r\n+import java.util.Set;\r\n+\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.INIT;\r\n+\r\n+@Activate\r\n+public class MigrationRuleListener implements RegistryProtocolListener, ConfigurationListener {\r\n+    private static final Logger logger = LoggerFactory.getLogger(MigrationRuleListener.class);\r\n+\r\n+    private Set<MigrationRuleHandler> listeners = new ConcurrentHashSet<>();\r\n+    private DynamicConfiguration configuration;\r\n+\r\n+    private volatile String rawRule;\r\n+\r\n+    public MigrationRuleListener() {\r\n+        Optional<DynamicConfiguration> optional =  ApplicationModel.getEnvironment().getDynamicConfiguration();\r\n+\r\n+        if (optional.isPresent()) {\r\n+            this.configuration = optional.get();\r\n+\r\n+            logger.info(\"Listening for migration rules on dataId-\" + MigrationRule.RULE_KEY + \" group-\" + MigrationRule.DUBBO_SERVICEDISCOVERY_MIGRATION_GROUP);\r\n+            configuration.addListener(MigrationRule.RULE_KEY, MigrationRule.DUBBO_SERVICEDISCOVERY_MIGRATION_GROUP, this);\r\n+\r\n+            rawRule = configuration.getConfig(MigrationRule.RULE_KEY, MigrationRule.DUBBO_SERVICEDISCOVERY_MIGRATION_GROUP);\r\n+            if (StringUtils.isEmpty(rawRule)) {\r\n+                rawRule = INIT;\r\n+            }\r\n+\r\n+        } else {\r\n+            if (logger.isWarnEnabled()) {\r\n+                logger.warn(\"config center is not configured!\");\r\n+            }\r\n+\r\n+            rawRule = INIT;\r\n+        }\r\n+\r\n+        process(new ConfigChangedEvent(MigrationRule.RULE_KEY, MigrationRule.DUBBO_SERVICEDISCOVERY_MIGRATION_GROUP, rawRule));\r\n+    }\r\n+\r\n+    @Override\r\n+    public synchronized void process(ConfigChangedEvent event) {\r\n+        rawRule = event.getContent();\r\n+        if (StringUtils.isEmpty(rawRule)) {\r\n+            logger.warn(\"Received empty migration rule, will ignore.\");\r\n+            return;\r\n+        }\r\n+\r\n+        logger.info(\"Using the following migration rule to migrate:\");\r\n+        logger.info(rawRule);\r\n+\r\n+        if (CollectionUtils.isNotEmpty(listeners)) {\r\n+            listeners.forEach(listener -> listener.doMigrate(rawRule));\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public synchronized void onExport(RegistryProtocol registryProtocol, Exporter<?> exporter) {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public synchronized  void onRefer(RegistryProtocol registryProtocol, ClusterInvoker<?> invoker, URL url) {\r\n+        MigrationInvoker<?> migrationInvoker = (MigrationInvoker<?>) invoker;\r\n+\r\n+        MigrationRuleHandler<?> migrationListener = new MigrationRuleHandler<>(migrationInvoker);\r\n+        listeners.add(migrationListener);\r\n+\r\n+        migrationListener.doMigrate(rawRule);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void onDestroy() {\r\n+        if (null != configuration) {\r\n+            configuration.removeListener(MigrationRule.RULE_KEY, this);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/migration/ServiceDiscoveryMigrationInvoker.java", "source2": "org/apache/dubbo/registry/client/migration/ServiceDiscoveryMigrationInvoker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,61 +1,61 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.migration;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.integration.RegistryProtocol;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.cluster.Cluster;\n-import org.apache.dubbo.rpc.cluster.ClusterInvoker;\n-\n-public class ServiceDiscoveryMigrationInvoker<T> extends MigrationInvoker<T> {\n-    private static final Logger logger = LoggerFactory.getLogger(ServiceDiscoveryMigrationInvoker.class);\n-\n-    public ServiceDiscoveryMigrationInvoker(RegistryProtocol registryProtocol, Cluster cluster, Registry registry, Class<T> type, URL url, URL consumerUrl) {\n-        super(registryProtocol, cluster, registry, type, url, consumerUrl);\n-    }\n-\n-    @Override\n-    public boolean isServiceInvoker() {\n-        return true;\n-    }\n-\n-    @Override\n-    public synchronized void fallbackToInterfaceInvoker() {\n-        logger.error(\"Service discovery registry type does not support discovery of interface level addresses, \" + getRegistryUrl());\n-        migrateToServiceDiscoveryInvoker(true);\n-    }\n-\n-    @Override\n-    public synchronized void migrateToServiceDiscoveryInvoker(boolean forceMigrate) {\n-        refreshServiceDiscoveryInvoker();\n-    }\n-\n-    @Override\n-    public Result invoke(Invocation invocation) throws RpcException {\n-        ClusterInvoker<T> invoker = getServiceDiscoveryInvoker();\n-        if (invoker == null) {\n-            throw new IllegalStateException(\"There's no service discovery invoker available for service \" + invocation.getServiceName());\n-        }\n-        return invoker.invoke(invocation);\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.migration;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.integration.RegistryProtocol;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.cluster.Cluster;\r\n+import org.apache.dubbo.rpc.cluster.ClusterInvoker;\r\n+\r\n+public class ServiceDiscoveryMigrationInvoker<T> extends MigrationInvoker<T> {\r\n+    private static final Logger logger = LoggerFactory.getLogger(ServiceDiscoveryMigrationInvoker.class);\r\n+\r\n+    public ServiceDiscoveryMigrationInvoker(RegistryProtocol registryProtocol, Cluster cluster, Registry registry, Class<T> type, URL url, URL consumerUrl) {\r\n+        super(registryProtocol, cluster, registry, type, url, consumerUrl);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isServiceInvoker() {\r\n+        return true;\r\n+    }\r\n+\r\n+    @Override\r\n+    public synchronized void fallbackToInterfaceInvoker() {\r\n+        logger.error(\"Service discovery registry type does not support discovery of interface level addresses, \" + getRegistryUrl());\r\n+        migrateToServiceDiscoveryInvoker(true);\r\n+    }\r\n+\r\n+    @Override\r\n+    public synchronized void migrateToServiceDiscoveryInvoker(boolean forceMigrate) {\r\n+        refreshServiceDiscoveryInvoker();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Result invoke(Invocation invocation) throws RpcException {\r\n+        ClusterInvoker<T> invoker = getServiceDiscoveryInvoker();\r\n+        if (invoker == null) {\r\n+            throw new IllegalStateException(\"There's no service discovery invoker available for service \" + invocation.getServiceName());\r\n+        }\r\n+        return invoker.invoke(invocation);\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/registry/client/package-info.java", "source2": "org/apache/dubbo/registry/client/package-info.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,23 +1,23 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-/**\n- * * The inspiration of service registration and discovery comes from\n- * <a href=\"https://spring.io/projects/spring-cloud-commons\">Spring Cloud Commons</a>.\n- *\n- * @since 2.7.5\n- */\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+/**\r\n+ * * The inspiration of service registration and discovery comes from\r\n+ * <a href=\"https://spring.io/projects/spring-cloud-commons\">Spring Cloud Commons</a>.\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n package org.apache.dubbo.registry.client;\n"}, {"source1": "org/apache/dubbo/registry/client/selector/RandomServiceInstanceSelector.java", "source2": "org/apache/dubbo/registry/client/selector/RandomServiceInstanceSelector.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,47 +1,47 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.selector;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-\n-import java.util.List;\n-import java.util.concurrent.ThreadLocalRandom;\n-\n-/**\n- * The {@link ServiceInstanceSelector} implementation based on Random algorithm\n- *\n- * @see ThreadLocalRandom\n- * @see ServiceInstanceSelector\n- * @since 2.7.5\n- */\n-public class RandomServiceInstanceSelector implements ServiceInstanceSelector {\n-\n-    @Override\n-    public ServiceInstance select(URL registryURL, List<ServiceInstance> serviceInstances) {\n-        int size = serviceInstances.size();\n-        if (size < 1) {\n-            return null;\n-        }\n-        int index = size == 1 ? 0 : selectIndexRandomly(size);\n-        return serviceInstances.get(index);\n-    }\n-\n-    protected int selectIndexRandomly(int size) {\n-        return ThreadLocalRandom.current().nextInt(size);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.selector;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+\r\n+import java.util.List;\r\n+import java.util.concurrent.ThreadLocalRandom;\r\n+\r\n+/**\r\n+ * The {@link ServiceInstanceSelector} implementation based on Random algorithm\r\n+ *\r\n+ * @see ThreadLocalRandom\r\n+ * @see ServiceInstanceSelector\r\n+ * @since 2.7.5\r\n+ */\r\n+public class RandomServiceInstanceSelector implements ServiceInstanceSelector {\r\n+\r\n+    @Override\r\n+    public ServiceInstance select(URL registryURL, List<ServiceInstance> serviceInstances) {\r\n+        int size = serviceInstances.size();\r\n+        if (size < 1) {\r\n+            return null;\r\n+        }\r\n+        int index = size == 1 ? 0 : selectIndexRandomly(size);\r\n+        return serviceInstances.get(index);\r\n+    }\r\n+\r\n+    protected int selectIndexRandomly(int size) {\r\n+        return ThreadLocalRandom.current().nextInt(size);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/client/selector/ServiceInstanceSelector.java", "source2": "org/apache/dubbo/registry/client/selector/ServiceInstanceSelector.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,43 +1,43 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.client.selector;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.Adaptive;\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-\n-import java.util.List;\n-\n-/**\n- * The {@link ServiceInstance} Selector\n- *\n- * @since 2.7.5\n- */\n-@SPI(\"random\")\n-public interface ServiceInstanceSelector {\n-\n-    /**\n-     * Select an instance of {@link ServiceInstance} by the specified {@link ServiceInstance service instances}\n-     *\n-     * @param registryURL      The {@link URL url} of registry\n-     * @param serviceInstances the specified {@link ServiceInstance service instances}\n-     * @return an instance of {@link ServiceInstance} if available, or <code>null</code>\n-     */\n-    @Adaptive(\"service-instance-selector\")\n-    ServiceInstance select(URL registryURL, List<ServiceInstance> serviceInstances);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.client.selector;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.Adaptive;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * The {@link ServiceInstance} Selector\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+@SPI(\"random\")\r\n+public interface ServiceInstanceSelector {\r\n+\r\n+    /**\r\n+     * Select an instance of {@link ServiceInstance} by the specified {@link ServiceInstance service instances}\r\n+     *\r\n+     * @param registryURL      The {@link URL url} of registry\r\n+     * @param serviceInstances the specified {@link ServiceInstance service instances}\r\n+     * @return an instance of {@link ServiceInstance} if available, or <code>null</code>\r\n+     */\r\n+    @Adaptive(\"service-instance-selector\")\r\n+    ServiceInstance select(URL registryURL, List<ServiceInstance> serviceInstances);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/integration/AbstractConfiguratorListener.java", "source2": "org/apache/dubbo/registry/integration/AbstractConfiguratorListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,97 +1,97 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.integration;\n-\n-import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\n-import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.rpc.cluster.Configurator;\n-import org.apache.dubbo.rpc.cluster.configurator.parser.ConfigParser;\n-import org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository;\n-\n-import java.util.Collections;\n-import java.util.List;\n-\n-/**\n- * AbstractConfiguratorListener\n- */\n-public abstract class AbstractConfiguratorListener implements ConfigurationListener {\n-    private static final Logger logger = LoggerFactory.getLogger(AbstractConfiguratorListener.class);\n-\n-    protected List<Configurator> configurators = Collections.emptyList();\n-    protected GovernanceRuleRepository ruleRepository = ExtensionLoader.getExtensionLoader(\n-            GovernanceRuleRepository.class).getDefaultExtension();\n-\n-    protected final void initWith(String key) {\n-        ruleRepository.addListener(key, this);\n-        String rawConfig = ruleRepository.getRule(key, DynamicConfiguration.DEFAULT_GROUP);\n-        if (!StringUtils.isEmpty(rawConfig)) {\n-            genConfiguratorsFromRawRule(rawConfig);\n-        }\n-    }\n-\n-    protected final void stopListen(String key) {\n-        ruleRepository.removeListener(key, this);\n-    }\n-\n-    @Override\n-    public void process(ConfigChangedEvent event) {\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"Notification of overriding rule, change type is: \" + event.getChangeType() +\n-                    \", raw config content is:\\n \" + event.getContent());\n-        }\n-\n-        if (event.getChangeType().equals(ConfigChangeType.DELETED)) {\n-            configurators.clear();\n-        } else {\n-            if (!genConfiguratorsFromRawRule(event.getContent())) {\n-                return;\n-            }\n-        }\n-\n-        notifyOverrides();\n-    }\n-\n-    private boolean genConfiguratorsFromRawRule(String rawConfig) {\n-        boolean parseSuccess = true;\n-        try {\n-            // parseConfigurators will recognize app/service config automatically.\n-            configurators = Configurator.toConfigurators(ConfigParser.parseConfigurators(rawConfig))\n-                    .orElse(configurators);\n-        } catch (Exception e) {\n-            logger.error(\"Failed to parse raw dynamic config and it will not take effect, the raw config is: \" +\n-                    rawConfig, e);\n-            parseSuccess = false;\n-        }\n-        return parseSuccess;\n-    }\n-\n-    protected abstract void notifyOverrides();\n-\n-    public List<Configurator> getConfigurators() {\n-        return configurators;\n-    }\n-\n-    public void setConfigurators(List<Configurator> configurators) {\n-        this.configurators = configurators;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.integration;\r\n+\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.rpc.cluster.Configurator;\r\n+import org.apache.dubbo.rpc.cluster.configurator.parser.ConfigParser;\r\n+import org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * AbstractConfiguratorListener\r\n+ */\r\n+public abstract class AbstractConfiguratorListener implements ConfigurationListener {\r\n+    private static final Logger logger = LoggerFactory.getLogger(AbstractConfiguratorListener.class);\r\n+\r\n+    protected List<Configurator> configurators = Collections.emptyList();\r\n+    protected GovernanceRuleRepository ruleRepository = ExtensionLoader.getExtensionLoader(\r\n+            GovernanceRuleRepository.class).getDefaultExtension();\r\n+\r\n+    protected final void initWith(String key) {\r\n+        ruleRepository.addListener(key, this);\r\n+        String rawConfig = ruleRepository.getRule(key, DynamicConfiguration.DEFAULT_GROUP);\r\n+        if (!StringUtils.isEmpty(rawConfig)) {\r\n+            genConfiguratorsFromRawRule(rawConfig);\r\n+        }\r\n+    }\r\n+\r\n+    protected final void stopListen(String key) {\r\n+        ruleRepository.removeListener(key, this);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void process(ConfigChangedEvent event) {\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"Notification of overriding rule, change type is: \" + event.getChangeType() +\r\n+                    \", raw config content is:\\n \" + event.getContent());\r\n+        }\r\n+\r\n+        if (event.getChangeType().equals(ConfigChangeType.DELETED)) {\r\n+            configurators.clear();\r\n+        } else {\r\n+            if (!genConfiguratorsFromRawRule(event.getContent())) {\r\n+                return;\r\n+            }\r\n+        }\r\n+\r\n+        notifyOverrides();\r\n+    }\r\n+\r\n+    private boolean genConfiguratorsFromRawRule(String rawConfig) {\r\n+        boolean parseSuccess = true;\r\n+        try {\r\n+            // parseConfigurators will recognize app/service config automatically.\r\n+            configurators = Configurator.toConfigurators(ConfigParser.parseConfigurators(rawConfig))\r\n+                    .orElse(configurators);\r\n+        } catch (Exception e) {\r\n+            logger.error(\"Failed to parse raw dynamic config and it will not take effect, the raw config is: \" +\r\n+                    rawConfig, e);\r\n+            parseSuccess = false;\r\n+        }\r\n+        return parseSuccess;\r\n+    }\r\n+\r\n+    protected abstract void notifyOverrides();\r\n+\r\n+    public List<Configurator> getConfigurators() {\r\n+        return configurators;\r\n+    }\r\n+\r\n+    public void setConfigurators(List<Configurator> configurators) {\r\n+        this.configurators = configurators;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/integration/DynamicDirectory.java", "source2": "org/apache/dubbo/registry/integration/DynamicDirectory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,285 +1,285 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.integration;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.URLBuilder;\n-import org.apache.dubbo.common.Version;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.registry.NotifyListener;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\n-import org.apache.dubbo.registry.client.migration.InvokersChangedListener;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Protocol;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.cluster.Cluster;\n-import org.apache.dubbo.rpc.cluster.Configurator;\n-import org.apache.dubbo.rpc.cluster.RouterChain;\n-import org.apache.dubbo.rpc.cluster.RouterFactory;\n-import org.apache.dubbo.rpc.cluster.directory.AbstractDirectory;\n-\n-import java.util.Collections;\n-import java.util.List;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.MONITOR_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.CATEGORY_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.CONSUMERS_CATEGORY;\n-import static org.apache.dubbo.registry.Constants.REGISTER_IP_KEY;\n-import static org.apache.dubbo.registry.Constants.REGISTER_KEY;\n-import static org.apache.dubbo.registry.Constants.SIMPLIFIED_KEY;\n-import static org.apache.dubbo.registry.integration.RegistryProtocol.DEFAULT_REGISTER_CONSUMER_KEYS;\n-import static org.apache.dubbo.remoting.Constants.CHECK_KEY;\n-\n-\n-/**\n- * RegistryDirectory\n- */\n-public abstract class DynamicDirectory<T> extends AbstractDirectory<T> implements NotifyListener {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(DynamicDirectory.class);\n-\n-    protected static final Cluster CLUSTER = ExtensionLoader.getExtensionLoader(Cluster.class).getAdaptiveExtension();\n-\n-    protected static final RouterFactory ROUTER_FACTORY = ExtensionLoader.getExtensionLoader(RouterFactory.class)\n-            .getAdaptiveExtension();\n-\n-    protected final String serviceKey; // Initialization at construction time, assertion not null\n-    protected final Class<T> serviceType; // Initialization at construction time, assertion not null\n-    protected final URL directoryUrl; // Initialization at construction time, assertion not null, and always assign non null value\n-    protected final boolean multiGroup;\n-    protected Protocol protocol; // Initialization at the time of injection, the assertion is not null\n-    protected Registry registry; // Initialization at the time of injection, the assertion is not null\n-    protected volatile boolean forbidden = false;\n-    protected boolean shouldRegister;\n-    protected boolean shouldSimplified;\n-\n-    protected volatile URL overrideDirectoryUrl; // Initialization at construction time, assertion not null, and always assign non null value\n-\n-    protected volatile URL registeredConsumerUrl;\n-\n-    /**\n-     * override rules\n-     * Priority: override>-D>consumer>provider\n-     * Rule one: for a certain provider <ip:port,timeout=100>\n-     * Rule two: for all providers <* ,timeout=5000>\n-     */\n-    protected volatile List<Configurator> configurators; // The initial value is null and the midway may be assigned to null, please use the local variable reference\n-\n-    protected volatile List<Invoker<T>> invokers;\n-    // Set<invokerUrls> cache invokeUrls to invokers mapping.\n-\n-    protected ServiceInstancesChangedListener serviceListener;\n-\n-    public DynamicDirectory(Class<T> serviceType, URL url) {\n-        super(url, true);\n-        if (serviceType == null) {\n-            throw new IllegalArgumentException(\"service type is null.\");\n-        }\n-\n-        shouldRegister = !ANY_VALUE.equals(url.getServiceInterface()) && url.getParameter(REGISTER_KEY, true);\n-        shouldSimplified = url.getParameter(SIMPLIFIED_KEY, false);\n-        if (url.getServiceKey() == null || url.getServiceKey().length() == 0) {\n-            throw new IllegalArgumentException(\"registry serviceKey is null.\");\n-        }\n-        this.serviceType = serviceType;\n-        this.serviceKey = super.getConsumerUrl().getServiceKey();\n-\n-        this.overrideDirectoryUrl = this.directoryUrl = turnRegistryUrlToConsumerUrl(url);\n-        String group = directoryUrl.getParameter(GROUP_KEY, \"\");\n-        this.multiGroup = group != null && (ANY_VALUE.equals(group) || group.contains(\",\"));\n-    }\n-\n-    @Override\n-    public void addServiceListener(ServiceInstancesChangedListener instanceListener) {\n-        this.serviceListener = instanceListener;\n-    }\n-\n-    private URL turnRegistryUrlToConsumerUrl(URL url) {\n-        return URLBuilder.from(url)\n-                .setHost(queryMap.get(REGISTER_IP_KEY) == null ? url.getHost() : queryMap.get(REGISTER_IP_KEY))\n-                .setPort(0)\n-                .setProtocol(queryMap.get(PROTOCOL_KEY) == null ? DUBBO : queryMap.get(PROTOCOL_KEY))\n-                .setPath(queryMap.get(INTERFACE_KEY))\n-                .clearParameters()\n-                .addParameters(queryMap)\n-                .removeParameter(MONITOR_KEY)\n-                .build();\n-    }\n-\n-    public void setProtocol(Protocol protocol) {\n-        this.protocol = protocol;\n-    }\n-\n-    public void setRegistry(Registry registry) {\n-        this.registry = registry;\n-    }\n-\n-    public Registry getRegistry() {\n-        return registry;\n-    }\n-\n-    public boolean isShouldRegister() {\n-        return shouldRegister;\n-    }\n-\n-    public void subscribe(URL url) {\n-        setConsumerUrl(url);\n-        registry.subscribe(url, this);\n-    }\n-\n-    public void unSubscribe(URL url) {\n-        setConsumerUrl(null);\n-        registry.unsubscribe(url, this);\n-    }\n-\n-    @Override\n-    public List<Invoker<T>> doList(Invocation invocation) {\n-        if (forbidden) {\n-            // 1. No service provider 2. Service providers are disabled\n-            throw new RpcException(RpcException.FORBIDDEN_EXCEPTION, \"No provider available from registry \" +\n-                    getUrl().getAddress() + \" for service \" + getConsumerUrl().getServiceKey() + \" on consumer \" +\n-                    NetUtils.getLocalHost() + \" use dubbo version \" + Version.getVersion() +\n-                    \", please check status of providers(disabled, not registered or in blacklist).\");\n-        }\n-\n-        if (multiGroup) {\n-            return this.invokers == null ? Collections.emptyList() : this.invokers;\n-        }\n-\n-        List<Invoker<T>> invokers = null;\n-        try {\n-            // Get invokers from cache, only runtime routers will be executed.\n-            invokers = routerChain.route(getConsumerUrl(), invocation);\n-        } catch (Throwable t) {\n-            logger.error(\"Failed to execute router: \" + getUrl() + \", cause: \" + t.getMessage(), t);\n-        }\n-\n-        return invokers == null ? Collections.emptyList() : invokers;\n-    }\n-\n-    @Override\n-    public Class<T> getInterface() {\n-        return serviceType;\n-    }\n-\n-    @Override\n-    public List<Invoker<T>> getAllInvokers() {\n-        return invokers;\n-    }\n-\n-    @Override\n-    public URL getConsumerUrl() {\n-        return this.overrideDirectoryUrl;\n-    }\n-\n-    public URL getRegisteredConsumerUrl() {\n-        return registeredConsumerUrl;\n-    }\n-\n-    public void setRegisteredConsumerUrl(URL url) {\n-        if (!shouldSimplified) {\n-            this.registeredConsumerUrl = url.addParameters(CATEGORY_KEY, CONSUMERS_CATEGORY, CHECK_KEY,\n-                    String.valueOf(false));\n-        } else {\n-            this.registeredConsumerUrl = URL.valueOf(url, DEFAULT_REGISTER_CONSUMER_KEYS, null).addParameters(\n-                    CATEGORY_KEY, CONSUMERS_CATEGORY, CHECK_KEY, String.valueOf(false));\n-        }\n-    }\n-\n-    public void buildRouterChain(URL url) {\n-        this.setRouterChain(RouterChain.buildChain(url));\n-    }\n-\n-    public List<Invoker<T>> getInvokers() {\n-        return invokers;\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        if (isDestroyed()) {\n-            return;\n-        }\n-\n-        // unregister.\n-        try {\n-            if (getRegisteredConsumerUrl() != null && registry != null && registry.isAvailable()) {\n-                registry.unregister(getRegisteredConsumerUrl());\n-            }\n-        } catch (Throwable t) {\n-            logger.warn(\"unexpected error when unregister service \" + serviceKey + \"from registry\" + registry.getUrl(), t);\n-        }\n-        // unsubscribe.\n-        try {\n-            if (getConsumerUrl() != null && registry != null && registry.isAvailable()) {\n-                registry.unsubscribe(getConsumerUrl(), this);\n-            }\n-        } catch (Throwable t) {\n-            logger.warn(\"unexpected error when unsubscribe service \" + serviceKey + \"from registry\" + registry.getUrl(), t);\n-        }\n-        super.destroy(); // must be executed after unsubscribing\n-        try {\n-            destroyAllInvokers();\n-        } catch (Throwable t) {\n-            logger.warn(\"Failed to destroy service \" + serviceKey, t);\n-        }\n-\n-        invokersChangedListener = null;\n-    }\n-\n-    @Override\n-    public void discordAddresses() {\n-        try {\n-            destroyAllInvokers();\n-        } catch (Throwable t) {\n-            logger.warn(\"Failed to destroy service \" + serviceKey, t);\n-        }\n-    }\n-\n-    private volatile InvokersChangedListener invokersChangedListener;\n-    private volatile boolean addressChanged;\n-\n-    public void setInvokersChangedListener(InvokersChangedListener listener) {\n-        this.invokersChangedListener = listener;\n-        if (addressChanged) {\n-            if (invokersChangedListener != null) {\n-                invokersChangedListener.onChange();\n-                this.addressChanged = false;\n-            }\n-        }\n-    }\n-\n-    protected void invokersChanged() {\n-        if (invokersChangedListener != null) {\n-            invokersChangedListener.onChange();\n-            this.addressChanged = false;\n-        } else {\n-            this.addressChanged = true;\n-        }\n-    }\n-\n-    protected abstract void destroyAllInvokers();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.integration;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.URLBuilder;\r\n+import org.apache.dubbo.common.Version;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.registry.NotifyListener;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\r\n+import org.apache.dubbo.registry.client.migration.InvokersChangedListener;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Protocol;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.cluster.Cluster;\r\n+import org.apache.dubbo.rpc.cluster.Configurator;\r\n+import org.apache.dubbo.rpc.cluster.RouterChain;\r\n+import org.apache.dubbo.rpc.cluster.RouterFactory;\r\n+import org.apache.dubbo.rpc.cluster.directory.AbstractDirectory;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.MONITOR_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.CATEGORY_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.CONSUMERS_CATEGORY;\r\n+import static org.apache.dubbo.registry.Constants.REGISTER_IP_KEY;\r\n+import static org.apache.dubbo.registry.Constants.REGISTER_KEY;\r\n+import static org.apache.dubbo.registry.Constants.SIMPLIFIED_KEY;\r\n+import static org.apache.dubbo.registry.integration.RegistryProtocol.DEFAULT_REGISTER_CONSUMER_KEYS;\r\n+import static org.apache.dubbo.remoting.Constants.CHECK_KEY;\r\n+\r\n+\r\n+/**\r\n+ * RegistryDirectory\r\n+ */\r\n+public abstract class DynamicDirectory<T> extends AbstractDirectory<T> implements NotifyListener {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(DynamicDirectory.class);\r\n+\r\n+    protected static final Cluster CLUSTER = ExtensionLoader.getExtensionLoader(Cluster.class).getAdaptiveExtension();\r\n+\r\n+    protected static final RouterFactory ROUTER_FACTORY = ExtensionLoader.getExtensionLoader(RouterFactory.class)\r\n+            .getAdaptiveExtension();\r\n+\r\n+    protected final String serviceKey; // Initialization at construction time, assertion not null\r\n+    protected final Class<T> serviceType; // Initialization at construction time, assertion not null\r\n+    protected final URL directoryUrl; // Initialization at construction time, assertion not null, and always assign non null value\r\n+    protected final boolean multiGroup;\r\n+    protected Protocol protocol; // Initialization at the time of injection, the assertion is not null\r\n+    protected Registry registry; // Initialization at the time of injection, the assertion is not null\r\n+    protected volatile boolean forbidden = false;\r\n+    protected boolean shouldRegister;\r\n+    protected boolean shouldSimplified;\r\n+\r\n+    protected volatile URL overrideDirectoryUrl; // Initialization at construction time, assertion not null, and always assign non null value\r\n+\r\n+    protected volatile URL registeredConsumerUrl;\r\n+\r\n+    /**\r\n+     * override rules\r\n+     * Priority: override>-D>consumer>provider\r\n+     * Rule one: for a certain provider <ip:port,timeout=100>\r\n+     * Rule two: for all providers <* ,timeout=5000>\r\n+     */\r\n+    protected volatile List<Configurator> configurators; // The initial value is null and the midway may be assigned to null, please use the local variable reference\r\n+\r\n+    protected volatile List<Invoker<T>> invokers;\r\n+    // Set<invokerUrls> cache invokeUrls to invokers mapping.\r\n+\r\n+    protected ServiceInstancesChangedListener serviceListener;\r\n+\r\n+    public DynamicDirectory(Class<T> serviceType, URL url) {\r\n+        super(url, true);\r\n+        if (serviceType == null) {\r\n+            throw new IllegalArgumentException(\"service type is null.\");\r\n+        }\r\n+\r\n+        shouldRegister = !ANY_VALUE.equals(url.getServiceInterface()) && url.getParameter(REGISTER_KEY, true);\r\n+        shouldSimplified = url.getParameter(SIMPLIFIED_KEY, false);\r\n+        if (url.getServiceKey() == null || url.getServiceKey().length() == 0) {\r\n+            throw new IllegalArgumentException(\"registry serviceKey is null.\");\r\n+        }\r\n+        this.serviceType = serviceType;\r\n+        this.serviceKey = super.getConsumerUrl().getServiceKey();\r\n+\r\n+        this.overrideDirectoryUrl = this.directoryUrl = turnRegistryUrlToConsumerUrl(url);\r\n+        String group = directoryUrl.getParameter(GROUP_KEY, \"\");\r\n+        this.multiGroup = group != null && (ANY_VALUE.equals(group) || group.contains(\",\"));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addServiceListener(ServiceInstancesChangedListener instanceListener) {\r\n+        this.serviceListener = instanceListener;\r\n+    }\r\n+\r\n+    private URL turnRegistryUrlToConsumerUrl(URL url) {\r\n+        return URLBuilder.from(url)\r\n+                .setHost(queryMap.get(REGISTER_IP_KEY) == null ? url.getHost() : queryMap.get(REGISTER_IP_KEY))\r\n+                .setPort(0)\r\n+                .setProtocol(queryMap.get(PROTOCOL_KEY) == null ? DUBBO : queryMap.get(PROTOCOL_KEY))\r\n+                .setPath(queryMap.get(INTERFACE_KEY))\r\n+                .clearParameters()\r\n+                .addParameters(queryMap)\r\n+                .removeParameter(MONITOR_KEY)\r\n+                .build();\r\n+    }\r\n+\r\n+    public void setProtocol(Protocol protocol) {\r\n+        this.protocol = protocol;\r\n+    }\r\n+\r\n+    public void setRegistry(Registry registry) {\r\n+        this.registry = registry;\r\n+    }\r\n+\r\n+    public Registry getRegistry() {\r\n+        return registry;\r\n+    }\r\n+\r\n+    public boolean isShouldRegister() {\r\n+        return shouldRegister;\r\n+    }\r\n+\r\n+    public void subscribe(URL url) {\r\n+        setConsumerUrl(url);\r\n+        registry.subscribe(url, this);\r\n+    }\r\n+\r\n+    public void unSubscribe(URL url) {\r\n+        setConsumerUrl(null);\r\n+        registry.unsubscribe(url, this);\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<Invoker<T>> doList(Invocation invocation) {\r\n+        if (forbidden) {\r\n+            // 1. No service provider 2. Service providers are disabled\r\n+            throw new RpcException(RpcException.FORBIDDEN_EXCEPTION, \"No provider available from registry \" +\r\n+                    getUrl().getAddress() + \" for service \" + getConsumerUrl().getServiceKey() + \" on consumer \" +\r\n+                    NetUtils.getLocalHost() + \" use dubbo version \" + Version.getVersion() +\r\n+                    \", please check status of providers(disabled, not registered or in blacklist).\");\r\n+        }\r\n+\r\n+        if (multiGroup) {\r\n+            return this.invokers == null ? Collections.emptyList() : this.invokers;\r\n+        }\r\n+\r\n+        List<Invoker<T>> invokers = null;\r\n+        try {\r\n+            // Get invokers from cache, only runtime routers will be executed.\r\n+            invokers = routerChain.route(getConsumerUrl(), invocation);\r\n+        } catch (Throwable t) {\r\n+            logger.error(\"Failed to execute router: \" + getUrl() + \", cause: \" + t.getMessage(), t);\r\n+        }\r\n+\r\n+        return invokers == null ? Collections.emptyList() : invokers;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Class<T> getInterface() {\r\n+        return serviceType;\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<Invoker<T>> getAllInvokers() {\r\n+        return invokers;\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getConsumerUrl() {\r\n+        return this.overrideDirectoryUrl;\r\n+    }\r\n+\r\n+    public URL getRegisteredConsumerUrl() {\r\n+        return registeredConsumerUrl;\r\n+    }\r\n+\r\n+    public void setRegisteredConsumerUrl(URL url) {\r\n+        if (!shouldSimplified) {\r\n+            this.registeredConsumerUrl = url.addParameters(CATEGORY_KEY, CONSUMERS_CATEGORY, CHECK_KEY,\r\n+                    String.valueOf(false));\r\n+        } else {\r\n+            this.registeredConsumerUrl = URL.valueOf(url, DEFAULT_REGISTER_CONSUMER_KEYS, null).addParameters(\r\n+                    CATEGORY_KEY, CONSUMERS_CATEGORY, CHECK_KEY, String.valueOf(false));\r\n+        }\r\n+    }\r\n+\r\n+    public void buildRouterChain(URL url) {\r\n+        this.setRouterChain(RouterChain.buildChain(url));\r\n+    }\r\n+\r\n+    public List<Invoker<T>> getInvokers() {\r\n+        return invokers;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        if (isDestroyed()) {\r\n+            return;\r\n+        }\r\n+\r\n+        // unregister.\r\n+        try {\r\n+            if (getRegisteredConsumerUrl() != null && registry != null && registry.isAvailable()) {\r\n+                registry.unregister(getRegisteredConsumerUrl());\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            logger.warn(\"unexpected error when unregister service \" + serviceKey + \"from registry\" + registry.getUrl(), t);\r\n+        }\r\n+        // unsubscribe.\r\n+        try {\r\n+            if (getConsumerUrl() != null && registry != null && registry.isAvailable()) {\r\n+                registry.unsubscribe(getConsumerUrl(), this);\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            logger.warn(\"unexpected error when unsubscribe service \" + serviceKey + \"from registry\" + registry.getUrl(), t);\r\n+        }\r\n+        super.destroy(); // must be executed after unsubscribing\r\n+        try {\r\n+            destroyAllInvokers();\r\n+        } catch (Throwable t) {\r\n+            logger.warn(\"Failed to destroy service \" + serviceKey, t);\r\n+        }\r\n+\r\n+        invokersChangedListener = null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void discordAddresses() {\r\n+        try {\r\n+            destroyAllInvokers();\r\n+        } catch (Throwable t) {\r\n+            logger.warn(\"Failed to destroy service \" + serviceKey, t);\r\n+        }\r\n+    }\r\n+\r\n+    private volatile InvokersChangedListener invokersChangedListener;\r\n+    private volatile boolean addressChanged;\r\n+\r\n+    public void setInvokersChangedListener(InvokersChangedListener listener) {\r\n+        this.invokersChangedListener = listener;\r\n+        if (addressChanged) {\r\n+            if (invokersChangedListener != null) {\r\n+                invokersChangedListener.onChange();\r\n+                this.addressChanged = false;\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    protected void invokersChanged() {\r\n+        if (invokersChangedListener != null) {\r\n+            invokersChangedListener.onChange();\r\n+            this.addressChanged = false;\r\n+        } else {\r\n+            this.addressChanged = true;\r\n+        }\r\n+    }\r\n+\r\n+    protected abstract void destroyAllInvokers();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/integration/InterfaceCompatibleRegistryProtocol.java", "source2": "org/apache/dubbo/registry/integration/InterfaceCompatibleRegistryProtocol.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,73 +1,73 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.integration;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.URLBuilder;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory;\n-import org.apache.dubbo.registry.client.migration.MigrationInvoker;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.cluster.Cluster;\n-import org.apache.dubbo.rpc.cluster.ClusterInvoker;\n-\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_PROTOCOL;\n-import static org.apache.dubbo.registry.Constants.DEFAULT_REGISTRY;\n-\n-/**\n- * RegistryProtocol\n- */\n-public class InterfaceCompatibleRegistryProtocol extends RegistryProtocol {\n-\n-    @Override\n-    protected URL getRegistryUrl(Invoker<?> originInvoker) {\n-        URL registryUrl = originInvoker.getUrl();\n-        if (REGISTRY_PROTOCOL.equals(registryUrl.getProtocol())) {\n-            String protocol = registryUrl.getParameter(REGISTRY_KEY, DEFAULT_REGISTRY);\n-            registryUrl = registryUrl.setProtocol(protocol).removeParameter(REGISTRY_KEY);\n-        }\n-        return registryUrl;\n-    }\n-\n-    @Override\n-    protected URL getRegistryUrl(URL url) {\n-        return URLBuilder.from(url)\n-                .setProtocol(url.getParameter(REGISTRY_KEY, DEFAULT_REGISTRY))\n-                .removeParameter(REGISTRY_KEY)\n-                .build();\n-    }\n-\n-    @Override\n-    public <T> ClusterInvoker<T> getInvoker(Cluster cluster, Registry registry, Class<T> type, URL url) {\n-        DynamicDirectory<T> directory = new RegistryDirectory<>(type, url);\n-        return doCreateInvoker(directory, cluster, registry, type);\n-    }\n-\n-    @Override\n-    public <T> ClusterInvoker<T> getServiceDiscoveryInvoker(Cluster cluster, Registry registry, Class<T> type, URL url) {\n-        registry = registryFactory.getRegistry(super.getRegistryUrl(url));\n-        DynamicDirectory<T> directory = new ServiceDiscoveryRegistryDirectory<>(type, url);\n-        return doCreateInvoker(directory, cluster, registry, type);\n-    }\n-\n-    protected <T> ClusterInvoker<T> getMigrationInvoker(RegistryProtocol registryProtocol, Cluster cluster, Registry registry, Class<T> type, URL url, URL consumerUrl) {\n-//        ClusterInvoker<T> invoker = getInvoker(cluster, registry, type, url);\n-        return new MigrationInvoker<T>(registryProtocol, cluster, registry, type, url, consumerUrl);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.integration;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.URLBuilder;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory;\r\n+import org.apache.dubbo.registry.client.migration.MigrationInvoker;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.cluster.Cluster;\r\n+import org.apache.dubbo.rpc.cluster.ClusterInvoker;\r\n+\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_PROTOCOL;\r\n+import static org.apache.dubbo.registry.Constants.DEFAULT_REGISTRY;\r\n+\r\n+/**\r\n+ * RegistryProtocol\r\n+ */\r\n+public class InterfaceCompatibleRegistryProtocol extends RegistryProtocol {\r\n+\r\n+    @Override\r\n+    protected URL getRegistryUrl(Invoker<?> originInvoker) {\r\n+        URL registryUrl = originInvoker.getUrl();\r\n+        if (REGISTRY_PROTOCOL.equals(registryUrl.getProtocol())) {\r\n+            String protocol = registryUrl.getParameter(REGISTRY_KEY, DEFAULT_REGISTRY);\r\n+            registryUrl = registryUrl.setProtocol(protocol).removeParameter(REGISTRY_KEY);\r\n+        }\r\n+        return registryUrl;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected URL getRegistryUrl(URL url) {\r\n+        return URLBuilder.from(url)\r\n+                .setProtocol(url.getParameter(REGISTRY_KEY, DEFAULT_REGISTRY))\r\n+                .removeParameter(REGISTRY_KEY)\r\n+                .build();\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> ClusterInvoker<T> getInvoker(Cluster cluster, Registry registry, Class<T> type, URL url) {\r\n+        DynamicDirectory<T> directory = new RegistryDirectory<>(type, url);\r\n+        return doCreateInvoker(directory, cluster, registry, type);\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> ClusterInvoker<T> getServiceDiscoveryInvoker(Cluster cluster, Registry registry, Class<T> type, URL url) {\r\n+        registry = registryFactory.getRegistry(super.getRegistryUrl(url));\r\n+        DynamicDirectory<T> directory = new ServiceDiscoveryRegistryDirectory<>(type, url);\r\n+        return doCreateInvoker(directory, cluster, registry, type);\r\n+    }\r\n+\r\n+    protected <T> ClusterInvoker<T> getMigrationInvoker(RegistryProtocol registryProtocol, Cluster cluster, Registry registry, Class<T> type, URL url, URL consumerUrl) {\r\n+//        ClusterInvoker<T> invoker = getInvoker(cluster, registry, type, url);\r\n+        return new MigrationInvoker<T>(registryProtocol, cluster, registry, type, url, consumerUrl);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/integration/InvokersChangedListener.java", "source2": "org/apache/dubbo/registry/integration/InvokersChangedListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,21 +1,21 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.integration;\n-\n-public interface InvokersChangedListener {\n-    void onChange();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.integration;\r\n+\r\n+public interface InvokersChangedListener {\r\n+    void onChange();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/integration/RegistryProtocol.java", "source2": "org/apache/dubbo/registry/integration/RegistryProtocol.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,843 +1,843 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.integration;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.ConfigurationUtils;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.timer.HashedWheelTimer;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.NamedThreadFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.common.utils.UrlUtils;\n-import org.apache.dubbo.registry.NotifyListener;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.RegistryFactory;\n-import org.apache.dubbo.registry.RegistryService;\n-import org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory;\n-import org.apache.dubbo.registry.client.migration.ServiceDiscoveryMigrationInvoker;\n-import org.apache.dubbo.registry.retry.ReExportTask;\n-import org.apache.dubbo.registry.support.SkipFailbackWrapperException;\n-import org.apache.dubbo.rpc.Exporter;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Protocol;\n-import org.apache.dubbo.rpc.ProtocolServer;\n-import org.apache.dubbo.rpc.ProxyFactory;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.cluster.Cluster;\n-import org.apache.dubbo.rpc.cluster.ClusterInvoker;\n-import org.apache.dubbo.rpc.cluster.Configurator;\n-import org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository;\n-import org.apache.dubbo.rpc.cluster.support.MergeableCluster;\n-import org.apache.dubbo.rpc.cluster.support.migration.MigrationClusterInvoker;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.ProviderModel;\n-import org.apache.dubbo.rpc.protocol.InvokerWrapper;\n-\n-import java.util.ArrayList;\n-import java.util.HashMap;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.TimeUnit;\n-\n-import static java.util.concurrent.Executors.newSingleThreadExecutor;\n-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.EXTRA_KEYS_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.HIDDEN_KEY_PREFIX;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.LOADBALANCE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.METHODS_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.MONITOR_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.RELEASE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMESTAMP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.ON_CONNECT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.ON_DISCONNECT_KEY;\n-import static org.apache.dubbo.common.constants.FilterConstants.VALIDATION_KEY;\n-import static org.apache.dubbo.common.constants.QosConstants.ACCEPT_FOREIGN_IP;\n-import static org.apache.dubbo.common.constants.QosConstants.QOS_ENABLE;\n-import static org.apache.dubbo.common.constants.QosConstants.QOS_HOST;\n-import static org.apache.dubbo.common.constants.QosConstants.QOS_PORT;\n-import static org.apache.dubbo.common.constants.RegistryConstants.CATEGORY_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.CONFIGURATORS_CATEGORY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.OVERRIDE_PROTOCOL;\n-import static org.apache.dubbo.common.constants.RegistryConstants.PROVIDERS_CATEGORY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_PROTOCOL;\n-import static org.apache.dubbo.common.constants.RegistryConstants.ROUTERS_CATEGORY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.SERVICE_REGISTRY_PROTOCOL;\n-import static org.apache.dubbo.common.utils.UrlUtils.classifyUrls;\n-import static org.apache.dubbo.registry.Constants.CONFIGURATORS_SUFFIX;\n-import static org.apache.dubbo.registry.Constants.CONSUMER_PROTOCOL;\n-import static org.apache.dubbo.registry.Constants.DEFAULT_REGISTRY_RETRY_PERIOD;\n-import static org.apache.dubbo.registry.Constants.PROVIDER_PROTOCOL;\n-import static org.apache.dubbo.registry.Constants.REGISTER_IP_KEY;\n-import static org.apache.dubbo.registry.Constants.REGISTER_KEY;\n-import static org.apache.dubbo.registry.Constants.REGISTRY_RETRY_PERIOD_KEY;\n-import static org.apache.dubbo.registry.Constants.SIMPLIFIED_KEY;\n-import static org.apache.dubbo.remoting.Constants.BIND_IP_KEY;\n-import static org.apache.dubbo.remoting.Constants.BIND_PORT_KEY;\n-import static org.apache.dubbo.remoting.Constants.CHECK_KEY;\n-import static org.apache.dubbo.remoting.Constants.CODEC_KEY;\n-import static org.apache.dubbo.remoting.Constants.CONNECTIONS_KEY;\n-import static org.apache.dubbo.remoting.Constants.EXCHANGER_KEY;\n-import static org.apache.dubbo.remoting.Constants.SERIALIZATION_KEY;\n-import static org.apache.dubbo.rpc.Constants.DEPRECATED_KEY;\n-import static org.apache.dubbo.rpc.Constants.INTERFACES;\n-import static org.apache.dubbo.rpc.Constants.MOCK_KEY;\n-import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\n-import static org.apache.dubbo.rpc.cluster.Constants.EXPORT_KEY;\n-import static org.apache.dubbo.rpc.cluster.Constants.REFER_KEY;\n-import static org.apache.dubbo.rpc.cluster.Constants.WARMUP_KEY;\n-import static org.apache.dubbo.rpc.cluster.Constants.WEIGHT_KEY;\n-\n-/**\n- * TODO, replace RegistryProtocol completely in the future.\n- */\n-public class RegistryProtocol implements Protocol {\n-    public static final String[] DEFAULT_REGISTER_PROVIDER_KEYS = {\n-            APPLICATION_KEY, CODEC_KEY, EXCHANGER_KEY, SERIALIZATION_KEY, CLUSTER_KEY, CONNECTIONS_KEY, DEPRECATED_KEY,\n-            GROUP_KEY, LOADBALANCE_KEY, MOCK_KEY, PATH_KEY, TIMEOUT_KEY, TOKEN_KEY, VERSION_KEY, WARMUP_KEY,\n-            WEIGHT_KEY, TIMESTAMP_KEY, DUBBO_VERSION_KEY, RELEASE_KEY\n-    };\n-\n-    public static final String[] DEFAULT_REGISTER_CONSUMER_KEYS = {\n-            APPLICATION_KEY, VERSION_KEY, GROUP_KEY, DUBBO_VERSION_KEY, RELEASE_KEY\n-    };\n-\n-    private final static Logger logger = LoggerFactory.getLogger(InterfaceCompatibleRegistryProtocol.class);\n-    private final Map<URL, NotifyListener> overrideListeners = new ConcurrentHashMap<>();\n-    private final Map<String, ServiceConfigurationListener> serviceConfigurationListeners = new ConcurrentHashMap<>();\n-    private final ProviderConfigurationListener providerConfigurationListener = new ProviderConfigurationListener();\n-    // To solve the problem of RMI repeated exposure port conflicts, the services that have been exposed are no longer exposed.\n-    // providerurl <--> exporter\n-    private final ConcurrentMap<String, ExporterChangeableWrapper<?>> bounds = new ConcurrentHashMap<>();\n-    protected Protocol protocol;\n-    protected RegistryFactory registryFactory;\n-    protected ProxyFactory proxyFactory;\n-\n-    private ConcurrentMap<URL, ReExportTask> reExportFailedTasks = new ConcurrentHashMap<>();\n-    private HashedWheelTimer retryTimer = new HashedWheelTimer(new NamedThreadFactory(\"DubboReexportTimer\", true), DEFAULT_REGISTRY_RETRY_PERIOD, TimeUnit.MILLISECONDS, 128);\n-\n-    // get the parameters which shouldn't been displayed in url string(Starting with .)\n-    private static String[] getHiddenKeys(URL url) {\n-        Map<String, String> params = url.getParameters();\n-        if (CollectionUtils.isNotEmptyMap(params)) {\n-            return params.keySet().stream()\n-                    .filter(k -> k.startsWith(HIDDEN_KEY_PREFIX))\n-                    .toArray(String[]::new);\n-        } else {\n-            return new String[0];\n-        }\n-    }\n-\n-    public void setProtocol(Protocol protocol) {\n-        this.protocol = protocol;\n-    }\n-\n-    public void setRegistryFactory(RegistryFactory registryFactory) {\n-        this.registryFactory = registryFactory;\n-    }\n-\n-    public void setProxyFactory(ProxyFactory proxyFactory) {\n-        this.proxyFactory = proxyFactory;\n-    }\n-\n-    @Override\n-    public int getDefaultPort() {\n-        return 9090;\n-    }\n-\n-    public Map<URL, NotifyListener> getOverrideListeners() {\n-        return overrideListeners;\n-    }\n-\n-    private void registerStatedUrl(URL registryUrl, URL registeredProviderUrl, boolean registered) {\n-        ProviderModel model = ApplicationModel.getProviderModel(registeredProviderUrl.getServiceKey());\n-        model.addStatedUrl(new ProviderModel.RegisterStatedURL(\n-                registeredProviderUrl,\n-                registryUrl,\n-                registered));\n-    }\n-\n-    @Override\n-    public <T> Exporter<T> export(final Invoker<T> originInvoker) throws RpcException {\n-        URL registryUrl = getRegistryUrl(originInvoker);\n-        // url to export locally\n-        URL providerUrl = getProviderUrl(originInvoker);\n-\n-        // Subscribe the override data\n-        // FIXME When the provider subscribes, it will affect the scene : a certain JVM exposes the service and call\n-        //  the same service. Because the subscribed is cached key with the name of the service, it causes the\n-        //  subscription information to cover.\n-        final URL overrideSubscribeUrl = getSubscribedOverrideUrl(providerUrl);\n-        final OverrideListener overrideSubscribeListener = new OverrideListener(overrideSubscribeUrl, originInvoker);\n-        overrideListeners.put(overrideSubscribeUrl, overrideSubscribeListener);\n-\n-        providerUrl = overrideUrlWithConfig(providerUrl, overrideSubscribeListener);\n-        // export invoker\n-        final ExporterChangeableWrapper<T> exporter = doLocalExport(originInvoker, providerUrl);\n-\n-        // url to registry\n-        final Registry registry = getRegistry(originInvoker);\n-        final URL registeredProviderUrl = getUrlToRegistry(providerUrl, registryUrl);\n-\n-        // decide if we need to delay publish\n-        boolean register = providerUrl.getParameter(REGISTER_KEY, true);\n-        if (register) {\n-            registry.register(registeredProviderUrl);\n-        }\n-\n-        // register stated url on provider model\n-        registerStatedUrl(registryUrl, registeredProviderUrl, register);\n-\n-\n-        exporter.setRegisterUrl(registeredProviderUrl);\n-        exporter.setSubscribeUrl(overrideSubscribeUrl);\n-\n-        // Deprecated! Subscribe to override rules in 2.6.x or before.\n-        registry.subscribe(overrideSubscribeUrl, overrideSubscribeListener);\n-\n-        notifyExport(exporter);\n-        //Ensure that a new exporter instance is returned every time export\n-        return new DestroyableExporter<>(exporter);\n-    }\n-\n-    private <T> void notifyExport(ExporterChangeableWrapper<T> exporter) {\n-        List<RegistryProtocolListener> listeners = ExtensionLoader.getExtensionLoader(RegistryProtocolListener.class)\n-                .getActivateExtension(exporter.getOriginInvoker().getUrl(), \"registry.protocol.listener\");\n-        if (CollectionUtils.isNotEmpty(listeners)) {\n-            for (RegistryProtocolListener listener : listeners) {\n-                listener.onExport(this, exporter);\n-            }\n-        }\n-    }\n-\n-    private URL overrideUrlWithConfig(URL providerUrl, OverrideListener listener) {\n-        providerUrl = providerConfigurationListener.overrideUrl(providerUrl);\n-        ServiceConfigurationListener serviceConfigurationListener = new ServiceConfigurationListener(providerUrl, listener);\n-        serviceConfigurationListeners.put(providerUrl.getServiceKey(), serviceConfigurationListener);\n-        return serviceConfigurationListener.overrideUrl(providerUrl);\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    private <T> ExporterChangeableWrapper<T> doLocalExport(final Invoker<T> originInvoker, URL providerUrl) {\n-        String key = getCacheKey(originInvoker);\n-\n-        return (ExporterChangeableWrapper<T>) bounds.computeIfAbsent(key, s -> {\n-            Invoker<?> invokerDelegate = new InvokerDelegate<>(originInvoker, providerUrl);\n-            return new ExporterChangeableWrapper<>((Exporter<T>) protocol.export(invokerDelegate), originInvoker);\n-        });\n-    }\n-\n-    public <T> void reExport(Exporter<T> exporter, URL newInvokerUrl) {\n-        if (exporter instanceof ExporterChangeableWrapper) {\n-            ExporterChangeableWrapper<T> exporterWrapper = (ExporterChangeableWrapper<T>) exporter;\n-            Invoker<T> originInvoker = exporterWrapper.getOriginInvoker();\n-            reExport(originInvoker, newInvokerUrl);\n-        }\n-    }\n-\n-    /**\n-     * Reexport the invoker of the modified url\n-     *\n-     * @param originInvoker\n-     * @param newInvokerUrl\n-     * @param <T>\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> void reExport(final Invoker<T> originInvoker, URL newInvokerUrl) {\n-        String key = getCacheKey(originInvoker);\n-        ExporterChangeableWrapper<T> exporter = (ExporterChangeableWrapper<T>) bounds.get(key);\n-        URL registeredUrl = exporter.getRegisterUrl();\n-\n-        URL registryUrl = getRegistryUrl(originInvoker);\n-        URL newProviderUrl = getUrlToRegistry(newInvokerUrl, registryUrl);\n-\n-        // update local exporter\n-        Invoker<T> invokerDelegate = new InvokerDelegate<T>(originInvoker, newInvokerUrl);\n-        exporter.setExporter(protocol.export(invokerDelegate));\n-\n-        // update registry\n-        if (!newProviderUrl.equals(registeredUrl)) {\n-            try {\n-                doReExport(originInvoker, exporter, registryUrl, registeredUrl, newProviderUrl);\n-            } catch (Exception e) {\n-                ReExportTask oldTask = reExportFailedTasks.get(registeredUrl);\n-                if (oldTask != null) {\n-                    return;\n-                }\n-                ReExportTask task = new ReExportTask(\n-                        () -> doReExport(originInvoker, exporter, registryUrl, registeredUrl, newProviderUrl),\n-                        registeredUrl,\n-                        null\n-                );\n-                oldTask = reExportFailedTasks.putIfAbsent(registeredUrl, task);\n-                if (oldTask == null) {\n-                    // never has a retry task. then start a new task for retry.\n-                    retryTimer.newTimeout(task, registryUrl.getParameter(REGISTRY_RETRY_PERIOD_KEY, DEFAULT_REGISTRY_RETRY_PERIOD), TimeUnit.MILLISECONDS);\n-                }\n-            }\n-        }\n-    }\n-\n-    private <T> void doReExport(final Invoker<T> originInvoker, ExporterChangeableWrapper<T> exporter,\n-                                URL registryUrl, URL oldProviderUrl, URL newProviderUrl) {\n-        if (getProviderUrl(originInvoker).getParameter(REGISTER_KEY, true)) {\n-            Registry registry = null;\n-            try {\n-                registry = getRegistry(originInvoker);\n-            } catch (Exception e) {\n-                throw new SkipFailbackWrapperException(e);\n-            }\n-\n-            logger.info(\"Try to unregister old url: \" + oldProviderUrl);\n-            registry.reExportUnregister(oldProviderUrl);\n-\n-            logger.info(\"Try to register new url: \" + newProviderUrl);\n-            registry.reExportRegister(newProviderUrl);\n-        }\n-        try {\n-            ProviderModel.RegisterStatedURL statedUrl = getStatedUrl(registryUrl, newProviderUrl);\n-            statedUrl.setProviderUrl(newProviderUrl);\n-            exporter.setRegisterUrl(newProviderUrl);\n-        } catch (Exception e) {\n-            throw new SkipFailbackWrapperException(e);\n-        }\n-    }\n-\n-    private ProviderModel.RegisterStatedURL getStatedUrl(URL registryUrl, URL providerUrl) {\n-        ProviderModel providerModel = ApplicationModel.getServiceRepository()\n-                .lookupExportedService(providerUrl.getServiceKey());\n-\n-        List<ProviderModel.RegisterStatedURL> statedUrls = providerModel.getStatedUrl();\n-        return statedUrls.stream()\n-                .filter(u -> u.getRegistryUrl().equals(registryUrl)\n-                        && u.getProviderUrl().getProtocol().equals(providerUrl.getProtocol()))\n-                .findFirst().orElseThrow(() -> new IllegalStateException(\"There should have at least one registered url.\"));\n-    }\n-\n-    /**\n-     * Get an instance of registry based on the address of invoker\n-     *\n-     * @param originInvoker\n-     * @return\n-     */\n-    protected Registry getRegistry(final Invoker<?> originInvoker) {\n-        URL registryUrl = getRegistryUrl(originInvoker);\n-        return registryFactory.getRegistry(registryUrl);\n-    }\n-\n-    protected URL getRegistryUrl(Invoker<?> originInvoker) {\n-        return originInvoker.getUrl();\n-    }\n-\n-    protected URL getRegistryUrl(URL url) {\n-        if (SERVICE_REGISTRY_PROTOCOL.equals(url.getProtocol())) {\n-            return url;\n-        }\n-        return url.addParameter(REGISTRY_KEY, url.getProtocol()).setProtocol(SERVICE_REGISTRY_PROTOCOL);\n-    }\n-\n-    /**\n-     * Return the url that is registered to the registry and filter the url parameter once\n-     *\n-     * @param providerUrl\n-     * @return url to registry.\n-     */\n-    private URL getUrlToRegistry(final URL providerUrl, final URL registryUrl) {\n-\n-        URL registeredProviderUrl = removeUselessParameters(providerUrl);\n-\n-        //The address you see at the registry\n-        if (!registryUrl.getParameter(SIMPLIFIED_KEY, false)) {\n-            return registeredProviderUrl.removeParameters(getHiddenKeys(registeredProviderUrl)).removeParameters(\n-                    MONITOR_KEY, BIND_IP_KEY, BIND_PORT_KEY, QOS_ENABLE, QOS_HOST, QOS_PORT, ACCEPT_FOREIGN_IP, VALIDATION_KEY,\n-                    INTERFACES);\n-        } else {\n-            String extraKeys = registryUrl.getParameter(EXTRA_KEYS_KEY, \"\");\n-            // if path is not the same as interface name then we should keep INTERFACE_KEY,\n-            // otherwise, the registry structure of zookeeper would be '/dubbo/path/providers',\n-            // but what we expect is '/dubbo/interface/providers'\n-            if (!registeredProviderUrl.getPath().equals(registeredProviderUrl.getParameter(INTERFACE_KEY))) {\n-                if (StringUtils.isNotEmpty(extraKeys)) {\n-                    extraKeys += \",\";\n-                }\n-                extraKeys += INTERFACE_KEY;\n-            }\n-            String[] paramsToRegistry = getParamsToRegistry(DEFAULT_REGISTER_PROVIDER_KEYS\n-                    , COMMA_SPLIT_PATTERN.split(extraKeys));\n-            return URL.valueOf(registeredProviderUrl, paramsToRegistry, registeredProviderUrl.getParameter(METHODS_KEY, (String[]) null));\n-        }\n-\n-    }\n-\n-    /**\n-     * Remove information that does not require registration\n-     * @param providerUrl\n-     * @return\n-     */\n-    private URL removeUselessParameters(URL providerUrl) {\n-        return providerUrl.removeParameters(ON_CONNECT_KEY, ON_DISCONNECT_KEY);\n-    }\n-\n-    private URL getSubscribedOverrideUrl(URL registeredProviderUrl) {\n-        return registeredProviderUrl.setProtocol(PROVIDER_PROTOCOL)\n-                .addParameters(CATEGORY_KEY, CONFIGURATORS_CATEGORY, CHECK_KEY, String.valueOf(false));\n-    }\n-\n-    /**\n-     * Get the address of the providerUrl through the url of the invoker\n-     *\n-     * @param originInvoker\n-     * @return\n-     */\n-    private URL getProviderUrl(final Invoker<?> originInvoker) {\n-        String export = originInvoker.getUrl().getParameterAndDecoded(EXPORT_KEY);\n-        if (export == null || export.length() == 0) {\n-            throw new IllegalArgumentException(\"The registry export url is null! registry: \" + originInvoker.getUrl());\n-        }\n-        return URL.valueOf(export);\n-    }\n-\n-    /**\n-     * Get the key cached in bounds by invoker\n-     *\n-     * @param originInvoker\n-     * @return\n-     */\n-    private String getCacheKey(final Invoker<?> originInvoker) {\n-        URL providerUrl = getProviderUrl(originInvoker);\n-        String key = providerUrl.removeParameters(\"dynamic\", \"enabled\").toFullString();\n-        return key;\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> Invoker<T> refer(Class<T> type, URL url) throws RpcException {\n-        url = getRegistryUrl(url);\n-        Registry registry = registryFactory.getRegistry(url);\n-        if (RegistryService.class.equals(type)) {\n-            return proxyFactory.getInvoker((T) registry, type, url);\n-        }\n-\n-        // group=\"a,b\" or group=\"*\"\n-        Map<String, String> qs = StringUtils.parseQueryString(url.getParameterAndDecoded(REFER_KEY));\n-        String group = qs.get(GROUP_KEY);\n-        if (group != null && group.length() > 0) {\n-            if ((COMMA_SPLIT_PATTERN.split(group)).length > 1 || \"*\".equals(group)) {\n-                return doRefer(Cluster.getCluster(MergeableCluster.NAME), registry, type, url, qs);\n-            }\n-        }\n-\n-        Cluster cluster = Cluster.getCluster(qs.get(CLUSTER_KEY));\n-        return doRefer(cluster, registry, type, url, qs);\n-    }\n-\n-    protected <T> Invoker<T> doRefer(Cluster cluster, Registry registry, Class<T> type, URL url, Map<String, String> parameters) {\n-        URL consumerUrl = new URL(CONSUMER_PROTOCOL, parameters.remove(REGISTER_IP_KEY), 0, type.getName(), parameters);\n-        ClusterInvoker<T> migrationInvoker = getMigrationInvoker(this, cluster, registry, type, url, consumerUrl);\n-        return interceptInvoker(migrationInvoker, url, consumerUrl);\n-    }\n-\n-    protected <T> ClusterInvoker<T> getMigrationInvoker(RegistryProtocol registryProtocol, Cluster cluster, Registry registry, Class<T> type, URL url, URL consumerUrl) {\n-        return new ServiceDiscoveryMigrationInvoker<T>(registryProtocol, cluster, registry, type, url, consumerUrl);\n-    }\n-\n-    protected <T> Invoker<T> interceptInvoker(ClusterInvoker<T> invoker, URL url, URL consumerUrl) {\n-        List<RegistryProtocolListener> listeners = findRegistryProtocolListeners(url);\n-        if (CollectionUtils.isEmpty(listeners)) {\n-            return invoker;\n-        }\n-\n-        for (RegistryProtocolListener listener : listeners) {\n-            listener.onRefer(this, invoker, consumerUrl);\n-        }\n-        return invoker;\n-    }\n-\n-    public <T> ClusterInvoker<T> getServiceDiscoveryInvoker(Cluster cluster, Registry registry, Class<T> type, URL url) {\n-        DynamicDirectory<T> directory = new ServiceDiscoveryRegistryDirectory<>(type, url);\n-        return doCreateInvoker(directory, cluster, registry, type);\n-    }\n-\n-    public <T> ClusterInvoker<T> getInvoker(Cluster cluster, Registry registry, Class<T> type, URL url) {\n-        // FIXME, this method is currently not used, create the right registry before enable.\n-        DynamicDirectory<T> directory = new RegistryDirectory<>(type, url);\n-        return doCreateInvoker(directory, cluster, registry, type);\n-    }\n-\n-    protected <T> ClusterInvoker<T> doCreateInvoker(DynamicDirectory<T> directory, Cluster cluster, Registry registry, Class<T> type) {\n-        directory.setRegistry(registry);\n-        directory.setProtocol(protocol);\n-        // all attributes of REFER_KEY\n-        Map<String, String> parameters = new HashMap<String, String>(directory.getConsumerUrl().getParameters());\n-        URL urlToRegistry = new URL(CONSUMER_PROTOCOL, parameters.remove(REGISTER_IP_KEY), 0, type.getName(), parameters);\n-        if (directory.isShouldRegister()) {\n-            directory.setRegisteredConsumerUrl(urlToRegistry);\n-            registry.register(directory.getRegisteredConsumerUrl());\n-        }\n-        directory.buildRouterChain(urlToRegistry);\n-        directory.subscribe(toSubscribeUrl(urlToRegistry));\n-\n-        return (ClusterInvoker<T>) cluster.join(directory);\n-    }\n-\n-    public <T> void reRefer(ClusterInvoker<?> invoker, URL newSubscribeUrl) {\n-        if (!(invoker instanceof MigrationClusterInvoker)) {\n-            logger.error(\"Only invoker type of MigrationClusterInvoker supports reRefer, current invoker is \" + invoker.getClass());\n-            return;\n-        }\n-\n-        MigrationClusterInvoker<?> migrationClusterInvoker = (MigrationClusterInvoker<?>)invoker;\n-        migrationClusterInvoker.reRefer(newSubscribeUrl);\n-    }\n-\n-    public static URL toSubscribeUrl(URL url) {\n-        return url.addParameter(CATEGORY_KEY, PROVIDERS_CATEGORY + \",\" + CONFIGURATORS_CATEGORY + \",\" + ROUTERS_CATEGORY);\n-    }\n-\n-    protected List<RegistryProtocolListener> findRegistryProtocolListeners(URL url) {\n-        return ExtensionLoader.getExtensionLoader(RegistryProtocolListener.class)\n-                .getActivateExtension(url, \"registry.protocol.listener\");\n-    }\n-\n-    // available to test\n-    public String[] getParamsToRegistry(String[] defaultKeys, String[] additionalParameterKeys) {\n-        int additionalLen = additionalParameterKeys.length;\n-        String[] registryParams = new String[defaultKeys.length + additionalLen];\n-        System.arraycopy(defaultKeys, 0, registryParams, 0, defaultKeys.length);\n-        System.arraycopy(additionalParameterKeys, 0, registryParams, defaultKeys.length, additionalLen);\n-        return registryParams;\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        List<RegistryProtocolListener> listeners = ExtensionLoader.getExtensionLoader(RegistryProtocolListener.class)\n-                .getLoadedExtensionInstances();\n-        if (CollectionUtils.isNotEmpty(listeners)) {\n-            for (RegistryProtocolListener listener : listeners) {\n-                listener.onDestroy();\n-            }\n-        }\n-\n-        List<Exporter<?>> exporters = new ArrayList<Exporter<?>>(bounds.values());\n-        for (Exporter<?> exporter : exporters) {\n-            exporter.unexport();\n-        }\n-        bounds.clear();\n-\n-        ExtensionLoader.getExtensionLoader(GovernanceRuleRepository.class).getDefaultExtension()\n-                .removeListener(ApplicationModel.getApplication() + CONFIGURATORS_SUFFIX, providerConfigurationListener);\n-    }\n-\n-    @Override\n-    public List<ProtocolServer> getServers() {\n-        return protocol.getServers();\n-    }\n-\n-    // merge the urls of configurators\n-    private static URL getConfiguredInvokerUrl(List<Configurator> configurators, URL url) {\n-        if (configurators != null && configurators.size() > 0) {\n-            for (Configurator configurator : configurators) {\n-                url = configurator.configure(url);\n-            }\n-        }\n-        return url;\n-    }\n-\n-    public static class InvokerDelegate<T> extends InvokerWrapper<T> {\n-        private final Invoker<T> invoker;\n-\n-        /**\n-         * @param invoker\n-         * @param url     invoker.getUrl return this value\n-         */\n-        public InvokerDelegate(Invoker<T> invoker, URL url) {\n-            super(invoker, url);\n-            this.invoker = invoker;\n-        }\n-\n-        public Invoker<T> getInvoker() {\n-            if (invoker instanceof InvokerDelegate) {\n-                return ((InvokerDelegate<T>) invoker).getInvoker();\n-            } else {\n-                return invoker;\n-            }\n-        }\n-    }\n-\n-    private static class DestroyableExporter<T> implements Exporter<T> {\n-\n-        private Exporter<T> exporter;\n-\n-        public DestroyableExporter(Exporter<T> exporter) {\n-            this.exporter = exporter;\n-        }\n-\n-        @Override\n-        public Invoker<T> getInvoker() {\n-            return exporter.getInvoker();\n-        }\n-\n-        @Override\n-        public void unexport() {\n-            exporter.unexport();\n-        }\n-    }\n-\n-    /**\n-     * Reexport: the exporter destroy problem in protocol\n-     * 1.Ensure that the exporter returned by registryprotocol can be normal destroyed\n-     * 2.No need to re-register to the registry after notify\n-     * 3.The invoker passed by the export method , would better to be the invoker of exporter\n-     */\n-    private class OverrideListener implements NotifyListener {\n-        private final URL subscribeUrl;\n-        private final Invoker originInvoker;\n-\n-\n-        private List<Configurator> configurators;\n-\n-        public OverrideListener(URL subscribeUrl, Invoker originalInvoker) {\n-            this.subscribeUrl = subscribeUrl;\n-            this.originInvoker = originalInvoker;\n-        }\n-\n-        /**\n-         * @param urls The list of registered information, is always not empty, The meaning is the same as the\n-         *             return value of {@link org.apache.dubbo.registry.RegistryService#lookup(URL)}.\n-         */\n-        @Override\n-        public synchronized void notify(List<URL> urls) {\n-            logger.debug(\"original override urls: \" + urls);\n-\n-            List<URL> matchedUrls = getMatchedUrls(urls, subscribeUrl.addParameter(CATEGORY_KEY,\n-                    CONFIGURATORS_CATEGORY));\n-            logger.debug(\"subscribe url: \" + subscribeUrl + \", override urls: \" + matchedUrls);\n-\n-            // No matching results\n-            if (matchedUrls.isEmpty()) {\n-                return;\n-            }\n-\n-            this.configurators = Configurator.toConfigurators(classifyUrls(matchedUrls, UrlUtils::isConfigurator))\n-                    .orElse(configurators);\n-\n-            doOverrideIfNecessary();\n-        }\n-\n-        public synchronized void doOverrideIfNecessary() {\n-            final Invoker<?> invoker;\n-            if (originInvoker instanceof InvokerDelegate) {\n-                invoker = ((InvokerDelegate<?>) originInvoker).getInvoker();\n-            } else {\n-                invoker = originInvoker;\n-            }\n-            //The origin invoker\n-            URL originUrl = RegistryProtocol.this.getProviderUrl(invoker);\n-            String key = getCacheKey(originInvoker);\n-            ExporterChangeableWrapper<?> exporter = bounds.get(key);\n-            if (exporter == null) {\n-                logger.warn(new IllegalStateException(\"error state, exporter should not be null\"));\n-                return;\n-            }\n-            //The current, may have been merged many times\n-            URL currentUrl = exporter.getInvoker().getUrl();\n-            //Merged with this configuration\n-            URL newUrl = getConfiguredInvokerUrl(configurators, currentUrl);\n-            newUrl = getConfiguredInvokerUrl(providerConfigurationListener.getConfigurators(), newUrl);\n-            newUrl = getConfiguredInvokerUrl(serviceConfigurationListeners.get(originUrl.getServiceKey())\n-                    .getConfigurators(), newUrl);\n-            if (!currentUrl.equals(newUrl)) {\n-                RegistryProtocol.this.reExport(originInvoker, newUrl);\n-                logger.info(\"exported provider url changed, origin url: \" + originUrl +\n-                        \", old export url: \" + currentUrl + \", new export url: \" + newUrl);\n-            }\n-        }\n-\n-        private List<URL> getMatchedUrls(List<URL> configuratorUrls, URL currentSubscribe) {\n-            List<URL> result = new ArrayList<URL>();\n-            for (URL url : configuratorUrls) {\n-                URL overrideUrl = url;\n-                // Compatible with the old version\n-                if (url.getParameter(CATEGORY_KEY) == null && OVERRIDE_PROTOCOL.equals(url.getProtocol())) {\n-                    overrideUrl = url.addParameter(CATEGORY_KEY, CONFIGURATORS_CATEGORY);\n-                }\n-\n-                // Check whether url is to be applied to the current service\n-                if (UrlUtils.isMatch(currentSubscribe, overrideUrl)) {\n-                    result.add(url);\n-                }\n-            }\n-            return result;\n-        }\n-    }\n-\n-    private class ServiceConfigurationListener extends AbstractConfiguratorListener {\n-        private URL providerUrl;\n-        private OverrideListener notifyListener;\n-\n-        public ServiceConfigurationListener(URL providerUrl, OverrideListener notifyListener) {\n-            this.providerUrl = providerUrl;\n-            this.notifyListener = notifyListener;\n-            this.initWith(DynamicConfiguration.getRuleKey(providerUrl) + CONFIGURATORS_SUFFIX);\n-        }\n-\n-        private <T> URL overrideUrl(URL providerUrl) {\n-            return RegistryProtocol.getConfiguredInvokerUrl(configurators, providerUrl);\n-        }\n-\n-        @Override\n-        protected void notifyOverrides() {\n-            notifyListener.doOverrideIfNecessary();\n-        }\n-    }\n-\n-    private class ProviderConfigurationListener extends AbstractConfiguratorListener {\n-\n-        public ProviderConfigurationListener() {\n-            this.initWith(ApplicationModel.getApplication() + CONFIGURATORS_SUFFIX);\n-        }\n-\n-        /**\n-         * Get existing configuration rule and override provider url before exporting.\n-         *\n-         * @param providerUrl\n-         * @param <T>\n-         * @return\n-         */\n-        private <T> URL overrideUrl(URL providerUrl) {\n-            return RegistryProtocol.getConfiguredInvokerUrl(configurators, providerUrl);\n-        }\n-\n-        @Override\n-        protected void notifyOverrides() {\n-            overrideListeners.values().forEach(listener -> ((OverrideListener) listener).doOverrideIfNecessary());\n-        }\n-    }\n-\n-    /**\n-     * exporter proxy, establish the corresponding relationship between the returned exporter and the exporter\n-     * exported by the protocol, and can modify the relationship at the time of override.\n-     *\n-     * @param <T>\n-     */\n-    private class ExporterChangeableWrapper<T> implements Exporter<T> {\n-\n-        private final ExecutorService executor = newSingleThreadExecutor(new NamedThreadFactory(\"Exporter-Unexport\", true));\n-\n-        private final Invoker<T> originInvoker;\n-        private Exporter<T> exporter;\n-        private URL subscribeUrl;\n-        private URL registerUrl;\n-\n-        public ExporterChangeableWrapper(Exporter<T> exporter, Invoker<T> originInvoker) {\n-            this.exporter = exporter;\n-            this.originInvoker = originInvoker;\n-        }\n-\n-        public Invoker<T> getOriginInvoker() {\n-            return originInvoker;\n-        }\n-\n-        @Override\n-        public Invoker<T> getInvoker() {\n-            return exporter.getInvoker();\n-        }\n-\n-        public void setExporter(Exporter<T> exporter) {\n-            this.exporter = exporter;\n-        }\n-\n-        @Override\n-        public void unexport() {\n-            String key = getCacheKey(this.originInvoker);\n-            bounds.remove(key);\n-\n-            Registry registry = RegistryProtocol.this.getRegistry(originInvoker);\n-            try {\n-                registry.unregister(registerUrl);\n-            } catch (Throwable t) {\n-                logger.warn(t.getMessage(), t);\n-            }\n-            try {\n-                NotifyListener listener = RegistryProtocol.this.overrideListeners.remove(subscribeUrl);\n-                registry.unsubscribe(subscribeUrl, listener);\n-                ExtensionLoader.getExtensionLoader(GovernanceRuleRepository.class).getDefaultExtension()\n-                        .removeListener(subscribeUrl.getServiceKey() + CONFIGURATORS_SUFFIX,\n-                                serviceConfigurationListeners.get(subscribeUrl.getServiceKey()));\n-            } catch (Throwable t) {\n-                logger.warn(t.getMessage(), t);\n-            }\n-\n-            executor.submit(() -> {\n-                try {\n-                    int timeout = ConfigurationUtils.getServerShutdownTimeout();\n-                    if (timeout > 0) {\n-                        logger.info(\"Waiting \" + timeout + \"ms for registry to notify all consumers before unexport. \" +\n-                                \"Usually, this is called when you use dubbo API\");\n-                        Thread.sleep(timeout);\n-                    }\n-                    exporter.unexport();\n-                } catch (Throwable t) {\n-                    logger.warn(t.getMessage(), t);\n-                }\n-            });\n-        }\n-\n-        public void setSubscribeUrl(URL subscribeUrl) {\n-            this.subscribeUrl = subscribeUrl;\n-        }\n-\n-        public void setRegisterUrl(URL registerUrl) {\n-            this.registerUrl = registerUrl;\n-        }\n-\n-        public URL getRegisterUrl() {\n-            return registerUrl;\n-        }\n-    }\n-\n-    // for unit test\n-    private static RegistryProtocol INSTANCE;\n-\n-    // for unit test\n-    public RegistryProtocol() {\n-        INSTANCE = this;\n-    }\n-\n-    // for unit test\n-    public static RegistryProtocol getRegistryProtocol() {\n-        if (INSTANCE == null) {\n-            ExtensionLoader.getExtensionLoader(Protocol.class).getExtension(REGISTRY_PROTOCOL); // load\n-        }\n-        return INSTANCE;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.integration;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.ConfigurationUtils;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.timer.HashedWheelTimer;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.NamedThreadFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.common.utils.UrlUtils;\r\n+import org.apache.dubbo.registry.NotifyListener;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.RegistryFactory;\r\n+import org.apache.dubbo.registry.RegistryService;\r\n+import org.apache.dubbo.registry.client.ServiceDiscoveryRegistryDirectory;\r\n+import org.apache.dubbo.registry.client.migration.ServiceDiscoveryMigrationInvoker;\r\n+import org.apache.dubbo.registry.retry.ReExportTask;\r\n+import org.apache.dubbo.registry.support.SkipFailbackWrapperException;\r\n+import org.apache.dubbo.rpc.Exporter;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Protocol;\r\n+import org.apache.dubbo.rpc.ProtocolServer;\r\n+import org.apache.dubbo.rpc.ProxyFactory;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.cluster.Cluster;\r\n+import org.apache.dubbo.rpc.cluster.ClusterInvoker;\r\n+import org.apache.dubbo.rpc.cluster.Configurator;\r\n+import org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository;\r\n+import org.apache.dubbo.rpc.cluster.support.MergeableCluster;\r\n+import org.apache.dubbo.rpc.cluster.support.migration.MigrationClusterInvoker;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.ProviderModel;\r\n+import org.apache.dubbo.rpc.protocol.InvokerWrapper;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.HashMap;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+import static java.util.concurrent.Executors.newSingleThreadExecutor;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.EXTRA_KEYS_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.HIDDEN_KEY_PREFIX;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.LOADBALANCE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.METHODS_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.MONITOR_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.RELEASE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMESTAMP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ON_CONNECT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ON_DISCONNECT_KEY;\r\n+import static org.apache.dubbo.common.constants.FilterConstants.VALIDATION_KEY;\r\n+import static org.apache.dubbo.common.constants.QosConstants.ACCEPT_FOREIGN_IP;\r\n+import static org.apache.dubbo.common.constants.QosConstants.QOS_ENABLE;\r\n+import static org.apache.dubbo.common.constants.QosConstants.QOS_HOST;\r\n+import static org.apache.dubbo.common.constants.QosConstants.QOS_PORT;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.CATEGORY_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.CONFIGURATORS_CATEGORY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.OVERRIDE_PROTOCOL;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.PROVIDERS_CATEGORY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.REGISTRY_PROTOCOL;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.ROUTERS_CATEGORY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.SERVICE_REGISTRY_PROTOCOL;\r\n+import static org.apache.dubbo.common.utils.UrlUtils.classifyUrls;\r\n+import static org.apache.dubbo.registry.Constants.CONFIGURATORS_SUFFIX;\r\n+import static org.apache.dubbo.registry.Constants.CONSUMER_PROTOCOL;\r\n+import static org.apache.dubbo.registry.Constants.DEFAULT_REGISTRY_RETRY_PERIOD;\r\n+import static org.apache.dubbo.registry.Constants.PROVIDER_PROTOCOL;\r\n+import static org.apache.dubbo.registry.Constants.REGISTER_IP_KEY;\r\n+import static org.apache.dubbo.registry.Constants.REGISTER_KEY;\r\n+import static org.apache.dubbo.registry.Constants.REGISTRY_RETRY_PERIOD_KEY;\r\n+import static org.apache.dubbo.registry.Constants.SIMPLIFIED_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.BIND_IP_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.BIND_PORT_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CHECK_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CODEC_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CONNECTIONS_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.EXCHANGER_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.SERIALIZATION_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.DEPRECATED_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.INTERFACES;\r\n+import static org.apache.dubbo.rpc.Constants.MOCK_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.EXPORT_KEY;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.REFER_KEY;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.WARMUP_KEY;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.WEIGHT_KEY;\r\n+\r\n+/**\r\n+ * TODO, replace RegistryProtocol completely in the future.\r\n+ */\r\n+public class RegistryProtocol implements Protocol {\r\n+    public static final String[] DEFAULT_REGISTER_PROVIDER_KEYS = {\r\n+            APPLICATION_KEY, CODEC_KEY, EXCHANGER_KEY, SERIALIZATION_KEY, CLUSTER_KEY, CONNECTIONS_KEY, DEPRECATED_KEY,\r\n+            GROUP_KEY, LOADBALANCE_KEY, MOCK_KEY, PATH_KEY, TIMEOUT_KEY, TOKEN_KEY, VERSION_KEY, WARMUP_KEY,\r\n+            WEIGHT_KEY, TIMESTAMP_KEY, DUBBO_VERSION_KEY, RELEASE_KEY\r\n+    };\r\n+\r\n+    public static final String[] DEFAULT_REGISTER_CONSUMER_KEYS = {\r\n+            APPLICATION_KEY, VERSION_KEY, GROUP_KEY, DUBBO_VERSION_KEY, RELEASE_KEY\r\n+    };\r\n+\r\n+    private final static Logger logger = LoggerFactory.getLogger(InterfaceCompatibleRegistryProtocol.class);\r\n+    private final Map<URL, NotifyListener> overrideListeners = new ConcurrentHashMap<>();\r\n+    private final Map<String, ServiceConfigurationListener> serviceConfigurationListeners = new ConcurrentHashMap<>();\r\n+    private final ProviderConfigurationListener providerConfigurationListener = new ProviderConfigurationListener();\r\n+    // To solve the problem of RMI repeated exposure port conflicts, the services that have been exposed are no longer exposed.\r\n+    // providerurl <--> exporter\r\n+    private final ConcurrentMap<String, ExporterChangeableWrapper<?>> bounds = new ConcurrentHashMap<>();\r\n+    protected Protocol protocol;\r\n+    protected RegistryFactory registryFactory;\r\n+    protected ProxyFactory proxyFactory;\r\n+\r\n+    private ConcurrentMap<URL, ReExportTask> reExportFailedTasks = new ConcurrentHashMap<>();\r\n+    private HashedWheelTimer retryTimer = new HashedWheelTimer(new NamedThreadFactory(\"DubboReexportTimer\", true), DEFAULT_REGISTRY_RETRY_PERIOD, TimeUnit.MILLISECONDS, 128);\r\n+\r\n+    // get the parameters which shouldn't been displayed in url string(Starting with .)\r\n+    private static String[] getHiddenKeys(URL url) {\r\n+        Map<String, String> params = url.getParameters();\r\n+        if (CollectionUtils.isNotEmptyMap(params)) {\r\n+            return params.keySet().stream()\r\n+                    .filter(k -> k.startsWith(HIDDEN_KEY_PREFIX))\r\n+                    .toArray(String[]::new);\r\n+        } else {\r\n+            return new String[0];\r\n+        }\r\n+    }\r\n+\r\n+    public void setProtocol(Protocol protocol) {\r\n+        this.protocol = protocol;\r\n+    }\r\n+\r\n+    public void setRegistryFactory(RegistryFactory registryFactory) {\r\n+        this.registryFactory = registryFactory;\r\n+    }\r\n+\r\n+    public void setProxyFactory(ProxyFactory proxyFactory) {\r\n+        this.proxyFactory = proxyFactory;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getDefaultPort() {\r\n+        return 9090;\r\n+    }\r\n+\r\n+    public Map<URL, NotifyListener> getOverrideListeners() {\r\n+        return overrideListeners;\r\n+    }\r\n+\r\n+    private void registerStatedUrl(URL registryUrl, URL registeredProviderUrl, boolean registered) {\r\n+        ProviderModel model = ApplicationModel.getProviderModel(registeredProviderUrl.getServiceKey());\r\n+        model.addStatedUrl(new ProviderModel.RegisterStatedURL(\r\n+                registeredProviderUrl,\r\n+                registryUrl,\r\n+                registered));\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> Exporter<T> export(final Invoker<T> originInvoker) throws RpcException {\r\n+        URL registryUrl = getRegistryUrl(originInvoker);\r\n+        // url to export locally\r\n+        URL providerUrl = getProviderUrl(originInvoker);\r\n+\r\n+        // Subscribe the override data\r\n+        // FIXME When the provider subscribes, it will affect the scene : a certain JVM exposes the service and call\r\n+        //  the same service. Because the subscribed is cached key with the name of the service, it causes the\r\n+        //  subscription information to cover.\r\n+        final URL overrideSubscribeUrl = getSubscribedOverrideUrl(providerUrl);\r\n+        final OverrideListener overrideSubscribeListener = new OverrideListener(overrideSubscribeUrl, originInvoker);\r\n+        overrideListeners.put(overrideSubscribeUrl, overrideSubscribeListener);\r\n+\r\n+        providerUrl = overrideUrlWithConfig(providerUrl, overrideSubscribeListener);\r\n+        // export invoker\r\n+        final ExporterChangeableWrapper<T> exporter = doLocalExport(originInvoker, providerUrl);\r\n+\r\n+        // url to registry\r\n+        final Registry registry = getRegistry(originInvoker);\r\n+        final URL registeredProviderUrl = getUrlToRegistry(providerUrl, registryUrl);\r\n+\r\n+        // decide if we need to delay publish\r\n+        boolean register = providerUrl.getParameter(REGISTER_KEY, true);\r\n+        if (register) {\r\n+            registry.register(registeredProviderUrl);\r\n+        }\r\n+\r\n+        // register stated url on provider model\r\n+        registerStatedUrl(registryUrl, registeredProviderUrl, register);\r\n+\r\n+\r\n+        exporter.setRegisterUrl(registeredProviderUrl);\r\n+        exporter.setSubscribeUrl(overrideSubscribeUrl);\r\n+\r\n+        // Deprecated! Subscribe to override rules in 2.6.x or before.\r\n+        registry.subscribe(overrideSubscribeUrl, overrideSubscribeListener);\r\n+\r\n+        notifyExport(exporter);\r\n+        //Ensure that a new exporter instance is returned every time export\r\n+        return new DestroyableExporter<>(exporter);\r\n+    }\r\n+\r\n+    private <T> void notifyExport(ExporterChangeableWrapper<T> exporter) {\r\n+        List<RegistryProtocolListener> listeners = ExtensionLoader.getExtensionLoader(RegistryProtocolListener.class)\r\n+                .getActivateExtension(exporter.getOriginInvoker().getUrl(), \"registry.protocol.listener\");\r\n+        if (CollectionUtils.isNotEmpty(listeners)) {\r\n+            for (RegistryProtocolListener listener : listeners) {\r\n+                listener.onExport(this, exporter);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private URL overrideUrlWithConfig(URL providerUrl, OverrideListener listener) {\r\n+        providerUrl = providerConfigurationListener.overrideUrl(providerUrl);\r\n+        ServiceConfigurationListener serviceConfigurationListener = new ServiceConfigurationListener(providerUrl, listener);\r\n+        serviceConfigurationListeners.put(providerUrl.getServiceKey(), serviceConfigurationListener);\r\n+        return serviceConfigurationListener.overrideUrl(providerUrl);\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    private <T> ExporterChangeableWrapper<T> doLocalExport(final Invoker<T> originInvoker, URL providerUrl) {\r\n+        String key = getCacheKey(originInvoker);\r\n+\r\n+        return (ExporterChangeableWrapper<T>) bounds.computeIfAbsent(key, s -> {\r\n+            Invoker<?> invokerDelegate = new InvokerDelegate<>(originInvoker, providerUrl);\r\n+            return new ExporterChangeableWrapper<>((Exporter<T>) protocol.export(invokerDelegate), originInvoker);\r\n+        });\r\n+    }\r\n+\r\n+    public <T> void reExport(Exporter<T> exporter, URL newInvokerUrl) {\r\n+        if (exporter instanceof ExporterChangeableWrapper) {\r\n+            ExporterChangeableWrapper<T> exporterWrapper = (ExporterChangeableWrapper<T>) exporter;\r\n+            Invoker<T> originInvoker = exporterWrapper.getOriginInvoker();\r\n+            reExport(originInvoker, newInvokerUrl);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Reexport the invoker of the modified url\r\n+     *\r\n+     * @param originInvoker\r\n+     * @param newInvokerUrl\r\n+     * @param <T>\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> void reExport(final Invoker<T> originInvoker, URL newInvokerUrl) {\r\n+        String key = getCacheKey(originInvoker);\r\n+        ExporterChangeableWrapper<T> exporter = (ExporterChangeableWrapper<T>) bounds.get(key);\r\n+        URL registeredUrl = exporter.getRegisterUrl();\r\n+\r\n+        URL registryUrl = getRegistryUrl(originInvoker);\r\n+        URL newProviderUrl = getUrlToRegistry(newInvokerUrl, registryUrl);\r\n+\r\n+        // update local exporter\r\n+        Invoker<T> invokerDelegate = new InvokerDelegate<T>(originInvoker, newInvokerUrl);\r\n+        exporter.setExporter(protocol.export(invokerDelegate));\r\n+\r\n+        // update registry\r\n+        if (!newProviderUrl.equals(registeredUrl)) {\r\n+            try {\r\n+                doReExport(originInvoker, exporter, registryUrl, registeredUrl, newProviderUrl);\r\n+            } catch (Exception e) {\r\n+                ReExportTask oldTask = reExportFailedTasks.get(registeredUrl);\r\n+                if (oldTask != null) {\r\n+                    return;\r\n+                }\r\n+                ReExportTask task = new ReExportTask(\r\n+                        () -> doReExport(originInvoker, exporter, registryUrl, registeredUrl, newProviderUrl),\r\n+                        registeredUrl,\r\n+                        null\r\n+                );\r\n+                oldTask = reExportFailedTasks.putIfAbsent(registeredUrl, task);\r\n+                if (oldTask == null) {\r\n+                    // never has a retry task. then start a new task for retry.\r\n+                    retryTimer.newTimeout(task, registryUrl.getParameter(REGISTRY_RETRY_PERIOD_KEY, DEFAULT_REGISTRY_RETRY_PERIOD), TimeUnit.MILLISECONDS);\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private <T> void doReExport(final Invoker<T> originInvoker, ExporterChangeableWrapper<T> exporter,\r\n+                                URL registryUrl, URL oldProviderUrl, URL newProviderUrl) {\r\n+        if (getProviderUrl(originInvoker).getParameter(REGISTER_KEY, true)) {\r\n+            Registry registry = null;\r\n+            try {\r\n+                registry = getRegistry(originInvoker);\r\n+            } catch (Exception e) {\r\n+                throw new SkipFailbackWrapperException(e);\r\n+            }\r\n+\r\n+            logger.info(\"Try to unregister old url: \" + oldProviderUrl);\r\n+            registry.reExportUnregister(oldProviderUrl);\r\n+\r\n+            logger.info(\"Try to register new url: \" + newProviderUrl);\r\n+            registry.reExportRegister(newProviderUrl);\r\n+        }\r\n+        try {\r\n+            ProviderModel.RegisterStatedURL statedUrl = getStatedUrl(registryUrl, newProviderUrl);\r\n+            statedUrl.setProviderUrl(newProviderUrl);\r\n+            exporter.setRegisterUrl(newProviderUrl);\r\n+        } catch (Exception e) {\r\n+            throw new SkipFailbackWrapperException(e);\r\n+        }\r\n+    }\r\n+\r\n+    private ProviderModel.RegisterStatedURL getStatedUrl(URL registryUrl, URL providerUrl) {\r\n+        ProviderModel providerModel = ApplicationModel.getServiceRepository()\r\n+                .lookupExportedService(providerUrl.getServiceKey());\r\n+\r\n+        List<ProviderModel.RegisterStatedURL> statedUrls = providerModel.getStatedUrl();\r\n+        return statedUrls.stream()\r\n+                .filter(u -> u.getRegistryUrl().equals(registryUrl)\r\n+                        && u.getProviderUrl().getProtocol().equals(providerUrl.getProtocol()))\r\n+                .findFirst().orElseThrow(() -> new IllegalStateException(\"There should have at least one registered url.\"));\r\n+    }\r\n+\r\n+    /**\r\n+     * Get an instance of registry based on the address of invoker\r\n+     *\r\n+     * @param originInvoker\r\n+     * @return\r\n+     */\r\n+    protected Registry getRegistry(final Invoker<?> originInvoker) {\r\n+        URL registryUrl = getRegistryUrl(originInvoker);\r\n+        return registryFactory.getRegistry(registryUrl);\r\n+    }\r\n+\r\n+    protected URL getRegistryUrl(Invoker<?> originInvoker) {\r\n+        return originInvoker.getUrl();\r\n+    }\r\n+\r\n+    protected URL getRegistryUrl(URL url) {\r\n+        if (SERVICE_REGISTRY_PROTOCOL.equals(url.getProtocol())) {\r\n+            return url;\r\n+        }\r\n+        return url.addParameter(REGISTRY_KEY, url.getProtocol()).setProtocol(SERVICE_REGISTRY_PROTOCOL);\r\n+    }\r\n+\r\n+    /**\r\n+     * Return the url that is registered to the registry and filter the url parameter once\r\n+     *\r\n+     * @param providerUrl\r\n+     * @return url to registry.\r\n+     */\r\n+    private URL getUrlToRegistry(final URL providerUrl, final URL registryUrl) {\r\n+\r\n+        URL registeredProviderUrl = removeUselessParameters(providerUrl);\r\n+\r\n+        //The address you see at the registry\r\n+        if (!registryUrl.getParameter(SIMPLIFIED_KEY, false)) {\r\n+            return registeredProviderUrl.removeParameters(getHiddenKeys(registeredProviderUrl)).removeParameters(\r\n+                    MONITOR_KEY, BIND_IP_KEY, BIND_PORT_KEY, QOS_ENABLE, QOS_HOST, QOS_PORT, ACCEPT_FOREIGN_IP, VALIDATION_KEY,\r\n+                    INTERFACES);\r\n+        } else {\r\n+            String extraKeys = registryUrl.getParameter(EXTRA_KEYS_KEY, \"\");\r\n+            // if path is not the same as interface name then we should keep INTERFACE_KEY,\r\n+            // otherwise, the registry structure of zookeeper would be '/dubbo/path/providers',\r\n+            // but what we expect is '/dubbo/interface/providers'\r\n+            if (!registeredProviderUrl.getPath().equals(registeredProviderUrl.getParameter(INTERFACE_KEY))) {\r\n+                if (StringUtils.isNotEmpty(extraKeys)) {\r\n+                    extraKeys += \",\";\r\n+                }\r\n+                extraKeys += INTERFACE_KEY;\r\n+            }\r\n+            String[] paramsToRegistry = getParamsToRegistry(DEFAULT_REGISTER_PROVIDER_KEYS\r\n+                    , COMMA_SPLIT_PATTERN.split(extraKeys));\r\n+            return URL.valueOf(registeredProviderUrl, paramsToRegistry, registeredProviderUrl.getParameter(METHODS_KEY, (String[]) null));\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * Remove information that does not require registration\r\n+     * @param providerUrl\r\n+     * @return\r\n+     */\r\n+    private URL removeUselessParameters(URL providerUrl) {\r\n+        return providerUrl.removeParameters(ON_CONNECT_KEY, ON_DISCONNECT_KEY);\r\n+    }\r\n+\r\n+    private URL getSubscribedOverrideUrl(URL registeredProviderUrl) {\r\n+        return registeredProviderUrl.setProtocol(PROVIDER_PROTOCOL)\r\n+                .addParameters(CATEGORY_KEY, CONFIGURATORS_CATEGORY, CHECK_KEY, String.valueOf(false));\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the address of the providerUrl through the url of the invoker\r\n+     *\r\n+     * @param originInvoker\r\n+     * @return\r\n+     */\r\n+    private URL getProviderUrl(final Invoker<?> originInvoker) {\r\n+        String export = originInvoker.getUrl().getParameterAndDecoded(EXPORT_KEY);\r\n+        if (export == null || export.length() == 0) {\r\n+            throw new IllegalArgumentException(\"The registry export url is null! registry: \" + originInvoker.getUrl());\r\n+        }\r\n+        return URL.valueOf(export);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the key cached in bounds by invoker\r\n+     *\r\n+     * @param originInvoker\r\n+     * @return\r\n+     */\r\n+    private String getCacheKey(final Invoker<?> originInvoker) {\r\n+        URL providerUrl = getProviderUrl(originInvoker);\r\n+        String key = providerUrl.removeParameters(\"dynamic\", \"enabled\").toFullString();\r\n+        return key;\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> Invoker<T> refer(Class<T> type, URL url) throws RpcException {\r\n+        url = getRegistryUrl(url);\r\n+        Registry registry = registryFactory.getRegistry(url);\r\n+        if (RegistryService.class.equals(type)) {\r\n+            return proxyFactory.getInvoker((T) registry, type, url);\r\n+        }\r\n+\r\n+        // group=\"a,b\" or group=\"*\"\r\n+        Map<String, String> qs = StringUtils.parseQueryString(url.getParameterAndDecoded(REFER_KEY));\r\n+        String group = qs.get(GROUP_KEY);\r\n+        if (group != null && group.length() > 0) {\r\n+            if ((COMMA_SPLIT_PATTERN.split(group)).length > 1 || \"*\".equals(group)) {\r\n+                return doRefer(Cluster.getCluster(MergeableCluster.NAME), registry, type, url, qs);\r\n+            }\r\n+        }\r\n+\r\n+        Cluster cluster = Cluster.getCluster(qs.get(CLUSTER_KEY));\r\n+        return doRefer(cluster, registry, type, url, qs);\r\n+    }\r\n+\r\n+    protected <T> Invoker<T> doRefer(Cluster cluster, Registry registry, Class<T> type, URL url, Map<String, String> parameters) {\r\n+        URL consumerUrl = new URL(CONSUMER_PROTOCOL, parameters.remove(REGISTER_IP_KEY), 0, type.getName(), parameters);\r\n+        ClusterInvoker<T> migrationInvoker = getMigrationInvoker(this, cluster, registry, type, url, consumerUrl);\r\n+        return interceptInvoker(migrationInvoker, url, consumerUrl);\r\n+    }\r\n+\r\n+    protected <T> ClusterInvoker<T> getMigrationInvoker(RegistryProtocol registryProtocol, Cluster cluster, Registry registry, Class<T> type, URL url, URL consumerUrl) {\r\n+        return new ServiceDiscoveryMigrationInvoker<T>(registryProtocol, cluster, registry, type, url, consumerUrl);\r\n+    }\r\n+\r\n+    protected <T> Invoker<T> interceptInvoker(ClusterInvoker<T> invoker, URL url, URL consumerUrl) {\r\n+        List<RegistryProtocolListener> listeners = findRegistryProtocolListeners(url);\r\n+        if (CollectionUtils.isEmpty(listeners)) {\r\n+            return invoker;\r\n+        }\r\n+\r\n+        for (RegistryProtocolListener listener : listeners) {\r\n+            listener.onRefer(this, invoker, consumerUrl);\r\n+        }\r\n+        return invoker;\r\n+    }\r\n+\r\n+    public <T> ClusterInvoker<T> getServiceDiscoveryInvoker(Cluster cluster, Registry registry, Class<T> type, URL url) {\r\n+        DynamicDirectory<T> directory = new ServiceDiscoveryRegistryDirectory<>(type, url);\r\n+        return doCreateInvoker(directory, cluster, registry, type);\r\n+    }\r\n+\r\n+    public <T> ClusterInvoker<T> getInvoker(Cluster cluster, Registry registry, Class<T> type, URL url) {\r\n+        // FIXME, this method is currently not used, create the right registry before enable.\r\n+        DynamicDirectory<T> directory = new RegistryDirectory<>(type, url);\r\n+        return doCreateInvoker(directory, cluster, registry, type);\r\n+    }\r\n+\r\n+    protected <T> ClusterInvoker<T> doCreateInvoker(DynamicDirectory<T> directory, Cluster cluster, Registry registry, Class<T> type) {\r\n+        directory.setRegistry(registry);\r\n+        directory.setProtocol(protocol);\r\n+        // all attributes of REFER_KEY\r\n+        Map<String, String> parameters = new HashMap<String, String>(directory.getConsumerUrl().getParameters());\r\n+        URL urlToRegistry = new URL(CONSUMER_PROTOCOL, parameters.remove(REGISTER_IP_KEY), 0, type.getName(), parameters);\r\n+        if (directory.isShouldRegister()) {\r\n+            directory.setRegisteredConsumerUrl(urlToRegistry);\r\n+            registry.register(directory.getRegisteredConsumerUrl());\r\n+        }\r\n+        directory.buildRouterChain(urlToRegistry);\r\n+        directory.subscribe(toSubscribeUrl(urlToRegistry));\r\n+\r\n+        return (ClusterInvoker<T>) cluster.join(directory);\r\n+    }\r\n+\r\n+    public <T> void reRefer(ClusterInvoker<?> invoker, URL newSubscribeUrl) {\r\n+        if (!(invoker instanceof MigrationClusterInvoker)) {\r\n+            logger.error(\"Only invoker type of MigrationClusterInvoker supports reRefer, current invoker is \" + invoker.getClass());\r\n+            return;\r\n+        }\r\n+\r\n+        MigrationClusterInvoker<?> migrationClusterInvoker = (MigrationClusterInvoker<?>)invoker;\r\n+        migrationClusterInvoker.reRefer(newSubscribeUrl);\r\n+    }\r\n+\r\n+    public static URL toSubscribeUrl(URL url) {\r\n+        return url.addParameter(CATEGORY_KEY, PROVIDERS_CATEGORY + \",\" + CONFIGURATORS_CATEGORY + \",\" + ROUTERS_CATEGORY);\r\n+    }\r\n+\r\n+    protected List<RegistryProtocolListener> findRegistryProtocolListeners(URL url) {\r\n+        return ExtensionLoader.getExtensionLoader(RegistryProtocolListener.class)\r\n+                .getActivateExtension(url, \"registry.protocol.listener\");\r\n+    }\r\n+\r\n+    // available to test\r\n+    public String[] getParamsToRegistry(String[] defaultKeys, String[] additionalParameterKeys) {\r\n+        int additionalLen = additionalParameterKeys.length;\r\n+        String[] registryParams = new String[defaultKeys.length + additionalLen];\r\n+        System.arraycopy(defaultKeys, 0, registryParams, 0, defaultKeys.length);\r\n+        System.arraycopy(additionalParameterKeys, 0, registryParams, defaultKeys.length, additionalLen);\r\n+        return registryParams;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        List<RegistryProtocolListener> listeners = ExtensionLoader.getExtensionLoader(RegistryProtocolListener.class)\r\n+                .getLoadedExtensionInstances();\r\n+        if (CollectionUtils.isNotEmpty(listeners)) {\r\n+            for (RegistryProtocolListener listener : listeners) {\r\n+                listener.onDestroy();\r\n+            }\r\n+        }\r\n+\r\n+        List<Exporter<?>> exporters = new ArrayList<Exporter<?>>(bounds.values());\r\n+        for (Exporter<?> exporter : exporters) {\r\n+            exporter.unexport();\r\n+        }\r\n+        bounds.clear();\r\n+\r\n+        ExtensionLoader.getExtensionLoader(GovernanceRuleRepository.class).getDefaultExtension()\r\n+                .removeListener(ApplicationModel.getApplication() + CONFIGURATORS_SUFFIX, providerConfigurationListener);\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<ProtocolServer> getServers() {\r\n+        return protocol.getServers();\r\n+    }\r\n+\r\n+    // merge the urls of configurators\r\n+    private static URL getConfiguredInvokerUrl(List<Configurator> configurators, URL url) {\r\n+        if (configurators != null && configurators.size() > 0) {\r\n+            for (Configurator configurator : configurators) {\r\n+                url = configurator.configure(url);\r\n+            }\r\n+        }\r\n+        return url;\r\n+    }\r\n+\r\n+    public static class InvokerDelegate<T> extends InvokerWrapper<T> {\r\n+        private final Invoker<T> invoker;\r\n+\r\n+        /**\r\n+         * @param invoker\r\n+         * @param url     invoker.getUrl return this value\r\n+         */\r\n+        public InvokerDelegate(Invoker<T> invoker, URL url) {\r\n+            super(invoker, url);\r\n+            this.invoker = invoker;\r\n+        }\r\n+\r\n+        public Invoker<T> getInvoker() {\r\n+            if (invoker instanceof InvokerDelegate) {\r\n+                return ((InvokerDelegate<T>) invoker).getInvoker();\r\n+            } else {\r\n+                return invoker;\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private static class DestroyableExporter<T> implements Exporter<T> {\r\n+\r\n+        private Exporter<T> exporter;\r\n+\r\n+        public DestroyableExporter(Exporter<T> exporter) {\r\n+            this.exporter = exporter;\r\n+        }\r\n+\r\n+        @Override\r\n+        public Invoker<T> getInvoker() {\r\n+            return exporter.getInvoker();\r\n+        }\r\n+\r\n+        @Override\r\n+        public void unexport() {\r\n+            exporter.unexport();\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Reexport: the exporter destroy problem in protocol\r\n+     * 1.Ensure that the exporter returned by registryprotocol can be normal destroyed\r\n+     * 2.No need to re-register to the registry after notify\r\n+     * 3.The invoker passed by the export method , would better to be the invoker of exporter\r\n+     */\r\n+    private class OverrideListener implements NotifyListener {\r\n+        private final URL subscribeUrl;\r\n+        private final Invoker originInvoker;\r\n+\r\n+\r\n+        private List<Configurator> configurators;\r\n+\r\n+        public OverrideListener(URL subscribeUrl, Invoker originalInvoker) {\r\n+            this.subscribeUrl = subscribeUrl;\r\n+            this.originInvoker = originalInvoker;\r\n+        }\r\n+\r\n+        /**\r\n+         * @param urls The list of registered information, is always not empty, The meaning is the same as the\r\n+         *             return value of {@link org.apache.dubbo.registry.RegistryService#lookup(URL)}.\r\n+         */\r\n+        @Override\r\n+        public synchronized void notify(List<URL> urls) {\r\n+            logger.debug(\"original override urls: \" + urls);\r\n+\r\n+            List<URL> matchedUrls = getMatchedUrls(urls, subscribeUrl.addParameter(CATEGORY_KEY,\r\n+                    CONFIGURATORS_CATEGORY));\r\n+            logger.debug(\"subscribe url: \" + subscribeUrl + \", override urls: \" + matchedUrls);\r\n+\r\n+            // No matching results\r\n+            if (matchedUrls.isEmpty()) {\r\n+                return;\r\n+            }\r\n+\r\n+            this.configurators = Configurator.toConfigurators(classifyUrls(matchedUrls, UrlUtils::isConfigurator))\r\n+                    .orElse(configurators);\r\n+\r\n+            doOverrideIfNecessary();\r\n+        }\r\n+\r\n+        public synchronized void doOverrideIfNecessary() {\r\n+            final Invoker<?> invoker;\r\n+            if (originInvoker instanceof InvokerDelegate) {\r\n+                invoker = ((InvokerDelegate<?>) originInvoker).getInvoker();\r\n+            } else {\r\n+                invoker = originInvoker;\r\n+            }\r\n+            //The origin invoker\r\n+            URL originUrl = RegistryProtocol.this.getProviderUrl(invoker);\r\n+            String key = getCacheKey(originInvoker);\r\n+            ExporterChangeableWrapper<?> exporter = bounds.get(key);\r\n+            if (exporter == null) {\r\n+                logger.warn(new IllegalStateException(\"error state, exporter should not be null\"));\r\n+                return;\r\n+            }\r\n+            //The current, may have been merged many times\r\n+            URL currentUrl = exporter.getInvoker().getUrl();\r\n+            //Merged with this configuration\r\n+            URL newUrl = getConfiguredInvokerUrl(configurators, currentUrl);\r\n+            newUrl = getConfiguredInvokerUrl(providerConfigurationListener.getConfigurators(), newUrl);\r\n+            newUrl = getConfiguredInvokerUrl(serviceConfigurationListeners.get(originUrl.getServiceKey())\r\n+                    .getConfigurators(), newUrl);\r\n+            if (!currentUrl.equals(newUrl)) {\r\n+                RegistryProtocol.this.reExport(originInvoker, newUrl);\r\n+                logger.info(\"exported provider url changed, origin url: \" + originUrl +\r\n+                        \", old export url: \" + currentUrl + \", new export url: \" + newUrl);\r\n+            }\r\n+        }\r\n+\r\n+        private List<URL> getMatchedUrls(List<URL> configuratorUrls, URL currentSubscribe) {\r\n+            List<URL> result = new ArrayList<URL>();\r\n+            for (URL url : configuratorUrls) {\r\n+                URL overrideUrl = url;\r\n+                // Compatible with the old version\r\n+                if (url.getParameter(CATEGORY_KEY) == null && OVERRIDE_PROTOCOL.equals(url.getProtocol())) {\r\n+                    overrideUrl = url.addParameter(CATEGORY_KEY, CONFIGURATORS_CATEGORY);\r\n+                }\r\n+\r\n+                // Check whether url is to be applied to the current service\r\n+                if (UrlUtils.isMatch(currentSubscribe, overrideUrl)) {\r\n+                    result.add(url);\r\n+                }\r\n+            }\r\n+            return result;\r\n+        }\r\n+    }\r\n+\r\n+    private class ServiceConfigurationListener extends AbstractConfiguratorListener {\r\n+        private URL providerUrl;\r\n+        private OverrideListener notifyListener;\r\n+\r\n+        public ServiceConfigurationListener(URL providerUrl, OverrideListener notifyListener) {\r\n+            this.providerUrl = providerUrl;\r\n+            this.notifyListener = notifyListener;\r\n+            this.initWith(DynamicConfiguration.getRuleKey(providerUrl) + CONFIGURATORS_SUFFIX);\r\n+        }\r\n+\r\n+        private <T> URL overrideUrl(URL providerUrl) {\r\n+            return RegistryProtocol.getConfiguredInvokerUrl(configurators, providerUrl);\r\n+        }\r\n+\r\n+        @Override\r\n+        protected void notifyOverrides() {\r\n+            notifyListener.doOverrideIfNecessary();\r\n+        }\r\n+    }\r\n+\r\n+    private class ProviderConfigurationListener extends AbstractConfiguratorListener {\r\n+\r\n+        public ProviderConfigurationListener() {\r\n+            this.initWith(ApplicationModel.getApplication() + CONFIGURATORS_SUFFIX);\r\n+        }\r\n+\r\n+        /**\r\n+         * Get existing configuration rule and override provider url before exporting.\r\n+         *\r\n+         * @param providerUrl\r\n+         * @param <T>\r\n+         * @return\r\n+         */\r\n+        private <T> URL overrideUrl(URL providerUrl) {\r\n+            return RegistryProtocol.getConfiguredInvokerUrl(configurators, providerUrl);\r\n+        }\r\n+\r\n+        @Override\r\n+        protected void notifyOverrides() {\r\n+            overrideListeners.values().forEach(listener -> ((OverrideListener) listener).doOverrideIfNecessary());\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * exporter proxy, establish the corresponding relationship between the returned exporter and the exporter\r\n+     * exported by the protocol, and can modify the relationship at the time of override.\r\n+     *\r\n+     * @param <T>\r\n+     */\r\n+    private class ExporterChangeableWrapper<T> implements Exporter<T> {\r\n+\r\n+        private final ExecutorService executor = newSingleThreadExecutor(new NamedThreadFactory(\"Exporter-Unexport\", true));\r\n+\r\n+        private final Invoker<T> originInvoker;\r\n+        private Exporter<T> exporter;\r\n+        private URL subscribeUrl;\r\n+        private URL registerUrl;\r\n+\r\n+        public ExporterChangeableWrapper(Exporter<T> exporter, Invoker<T> originInvoker) {\r\n+            this.exporter = exporter;\r\n+            this.originInvoker = originInvoker;\r\n+        }\r\n+\r\n+        public Invoker<T> getOriginInvoker() {\r\n+            return originInvoker;\r\n+        }\r\n+\r\n+        @Override\r\n+        public Invoker<T> getInvoker() {\r\n+            return exporter.getInvoker();\r\n+        }\r\n+\r\n+        public void setExporter(Exporter<T> exporter) {\r\n+            this.exporter = exporter;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void unexport() {\r\n+            String key = getCacheKey(this.originInvoker);\r\n+            bounds.remove(key);\r\n+\r\n+            Registry registry = RegistryProtocol.this.getRegistry(originInvoker);\r\n+            try {\r\n+                registry.unregister(registerUrl);\r\n+            } catch (Throwable t) {\r\n+                logger.warn(t.getMessage(), t);\r\n+            }\r\n+            try {\r\n+                NotifyListener listener = RegistryProtocol.this.overrideListeners.remove(subscribeUrl);\r\n+                registry.unsubscribe(subscribeUrl, listener);\r\n+                ExtensionLoader.getExtensionLoader(GovernanceRuleRepository.class).getDefaultExtension()\r\n+                        .removeListener(subscribeUrl.getServiceKey() + CONFIGURATORS_SUFFIX,\r\n+                                serviceConfigurationListeners.get(subscribeUrl.getServiceKey()));\r\n+            } catch (Throwable t) {\r\n+                logger.warn(t.getMessage(), t);\r\n+            }\r\n+\r\n+            executor.submit(() -> {\r\n+                try {\r\n+                    int timeout = ConfigurationUtils.getServerShutdownTimeout();\r\n+                    if (timeout > 0) {\r\n+                        logger.info(\"Waiting \" + timeout + \"ms for registry to notify all consumers before unexport. \" +\r\n+                                \"Usually, this is called when you use dubbo API\");\r\n+                        Thread.sleep(timeout);\r\n+                    }\r\n+                    exporter.unexport();\r\n+                } catch (Throwable t) {\r\n+                    logger.warn(t.getMessage(), t);\r\n+                }\r\n+            });\r\n+        }\r\n+\r\n+        public void setSubscribeUrl(URL subscribeUrl) {\r\n+            this.subscribeUrl = subscribeUrl;\r\n+        }\r\n+\r\n+        public void setRegisterUrl(URL registerUrl) {\r\n+            this.registerUrl = registerUrl;\r\n+        }\r\n+\r\n+        public URL getRegisterUrl() {\r\n+            return registerUrl;\r\n+        }\r\n+    }\r\n+\r\n+    // for unit test\r\n+    private static RegistryProtocol INSTANCE;\r\n+\r\n+    // for unit test\r\n+    public RegistryProtocol() {\r\n+        INSTANCE = this;\r\n+    }\r\n+\r\n+    // for unit test\r\n+    public static RegistryProtocol getRegistryProtocol() {\r\n+        if (INSTANCE == null) {\r\n+            ExtensionLoader.getExtensionLoader(Protocol.class).getExtension(REGISTRY_PROTOCOL); // load\r\n+        }\r\n+        return INSTANCE;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/integration/RegistryProtocolListener.java", "source2": "org/apache/dubbo/registry/integration/RegistryProtocolListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,53 +1,53 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.integration;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.rpc.Exporter;\n-import org.apache.dubbo.rpc.cluster.ClusterInvoker;\n-\n-/**\n- * RegistryProtocol listener is introduced to provide a chance to user to customize or change export and refer behavior\n- * of RegistryProtocol. For example: re-export or re-refer on the fly when certain condition meets.\n- */\n-@SPI\n-public interface RegistryProtocolListener {\n-    /**\n-     * Notify RegistryProtocol's listeners when a service is registered\n-     *\n-     * @param registryProtocol RegistryProtocol instance\n-     * @param exporter         exporter\n-     * @see RegistryProtocol#export(org.apache.dubbo.rpc.Invoker)\n-     */\n-    void onExport(RegistryProtocol registryProtocol, Exporter<?> exporter);\n-\n-    /**\n-     * Notify RegistryProtocol's listeners when a service is subscribed\n-     *\n-     * @param registryProtocol RegistryProtocol instance\n-     * @param invoker          invoker\n-     * @param url\n-     * @see RegistryProtocol#refer(Class, URL)\n-     */\n-    void onRefer(RegistryProtocol registryProtocol, ClusterInvoker<?> invoker, URL url);\n-\n-    /**\n-     * Notify RegistryProtocol's listeners when the protocol is destroyed\n-     */\n-    void onDestroy();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.integration;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.rpc.Exporter;\r\n+import org.apache.dubbo.rpc.cluster.ClusterInvoker;\r\n+\r\n+/**\r\n+ * RegistryProtocol listener is introduced to provide a chance to user to customize or change export and refer behavior\r\n+ * of RegistryProtocol. For example: re-export or re-refer on the fly when certain condition meets.\r\n+ */\r\n+@SPI\r\n+public interface RegistryProtocolListener {\r\n+    /**\r\n+     * Notify RegistryProtocol's listeners when a service is registered\r\n+     *\r\n+     * @param registryProtocol RegistryProtocol instance\r\n+     * @param exporter         exporter\r\n+     * @see RegistryProtocol#export(org.apache.dubbo.rpc.Invoker)\r\n+     */\r\n+    void onExport(RegistryProtocol registryProtocol, Exporter<?> exporter);\r\n+\r\n+    /**\r\n+     * Notify RegistryProtocol's listeners when a service is subscribed\r\n+     *\r\n+     * @param registryProtocol RegistryProtocol instance\r\n+     * @param invoker          invoker\r\n+     * @param url\r\n+     * @see RegistryProtocol#refer(Class, URL)\r\n+     */\r\n+    void onRefer(RegistryProtocol registryProtocol, ClusterInvoker<?> invoker, URL url);\r\n+\r\n+    /**\r\n+     * Notify RegistryProtocol's listeners when the protocol is destroyed\r\n+     */\r\n+    void onDestroy();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/retry/AbstractRetryTask.java", "source2": "org/apache/dubbo/registry/retry/AbstractRetryTask.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,133 +1,133 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.registry.retry;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.timer.Timeout;\n-import org.apache.dubbo.common.timer.Timer;\n-import org.apache.dubbo.common.timer.TimerTask;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.registry.support.FailbackRegistry;\n-\n-import java.util.concurrent.TimeUnit;\n-\n-import static org.apache.dubbo.registry.Constants.DEFAULT_REGISTRY_RETRY_PERIOD;\n-import static org.apache.dubbo.registry.Constants.DEFAULT_REGISTRY_RETRY_TIMES;\n-import static org.apache.dubbo.registry.Constants.REGISTRY_RETRY_PERIOD_KEY;\n-import static org.apache.dubbo.registry.Constants.REGISTRY_RETRY_TIMES_KEY;\n-\n-/**\n- * AbstractRetryTask\n- */\n-public abstract class AbstractRetryTask implements TimerTask {\n-\n-    protected final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    /**\n-     * url for retry task\n-     */\n-    protected final URL url;\n-\n-    /**\n-     * registry for this task\n-     */\n-    protected final FailbackRegistry registry;\n-\n-    /**\n-     * retry period\n-     */\n-    final long retryPeriod;\n-\n-    /**\n-     * define the most retry times\n-     */\n-    private final int retryTimes;\n-\n-    /**\n-     * task name for this task\n-     */\n-    private final String taskName;\n-\n-    /**\n-     * times of retry.\n-     * retry task is execute in single thread so that the times is not need volatile.\n-     */\n-    private int times = 1;\n-\n-    private volatile boolean cancel;\n-\n-    AbstractRetryTask(URL url, FailbackRegistry registry, String taskName) {\n-        if (url == null || StringUtils.isBlank(taskName)) {\n-            throw new IllegalArgumentException();\n-        }\n-        this.url = url;\n-        this.registry = registry;\n-        this.taskName = taskName;\n-        cancel = false;\n-        this.retryPeriod = url.getParameter(REGISTRY_RETRY_PERIOD_KEY, DEFAULT_REGISTRY_RETRY_PERIOD);\n-        this.retryTimes = url.getParameter(REGISTRY_RETRY_TIMES_KEY, DEFAULT_REGISTRY_RETRY_TIMES);\n-    }\n-\n-    public void cancel() {\n-        cancel = true;\n-    }\n-\n-    public boolean isCancel() {\n-        return cancel;\n-    }\n-\n-    protected void reput(Timeout timeout, long tick) {\n-        if (timeout == null) {\n-            throw new IllegalArgumentException();\n-        }\n-\n-        Timer timer = timeout.timer();\n-        if (timer.isStop() || timeout.isCancelled() || isCancel()) {\n-            return;\n-        }\n-        times++;\n-        timer.newTimeout(timeout.task(), tick, TimeUnit.MILLISECONDS);\n-    }\n-\n-    @Override\n-    public void run(Timeout timeout) throws Exception {\n-        if (timeout.isCancelled() || timeout.timer().isStop() || isCancel()) {\n-            // other thread cancel this timeout or stop the timer.\n-            return;\n-        }\n-        if (times > retryTimes) {\n-            // reach the most times of retry.\n-            logger.warn(\"Final failed to execute task \" + taskName + \", url: \" + url + \", retry \" + retryTimes + \" times.\");\n-            return;\n-        }\n-        if (logger.isInfoEnabled()) {\n-            logger.info(taskName + \" : \" + url);\n-        }\n-        try {\n-            doRetry(url, registry, timeout);\n-        } catch (Throwable t) { // Ignore all the exceptions and wait for the next retry\n-            logger.warn(\"Failed to execute task \" + taskName + \", url: \" + url + \", waiting for again, cause:\" + t.getMessage(), t);\n-            // reput this task when catch exception.\n-            reput(timeout, retryPeriod);\n-        }\n-    }\n-\n-    protected abstract void doRetry(URL url, FailbackRegistry registry, Timeout timeout);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.registry.retry;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.timer.Timeout;\r\n+import org.apache.dubbo.common.timer.Timer;\r\n+import org.apache.dubbo.common.timer.TimerTask;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.registry.support.FailbackRegistry;\r\n+\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+import static org.apache.dubbo.registry.Constants.DEFAULT_REGISTRY_RETRY_PERIOD;\r\n+import static org.apache.dubbo.registry.Constants.DEFAULT_REGISTRY_RETRY_TIMES;\r\n+import static org.apache.dubbo.registry.Constants.REGISTRY_RETRY_PERIOD_KEY;\r\n+import static org.apache.dubbo.registry.Constants.REGISTRY_RETRY_TIMES_KEY;\r\n+\r\n+/**\r\n+ * AbstractRetryTask\r\n+ */\r\n+public abstract class AbstractRetryTask implements TimerTask {\r\n+\r\n+    protected final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    /**\r\n+     * url for retry task\r\n+     */\r\n+    protected final URL url;\r\n+\r\n+    /**\r\n+     * registry for this task\r\n+     */\r\n+    protected final FailbackRegistry registry;\r\n+\r\n+    /**\r\n+     * retry period\r\n+     */\r\n+    final long retryPeriod;\r\n+\r\n+    /**\r\n+     * define the most retry times\r\n+     */\r\n+    private final int retryTimes;\r\n+\r\n+    /**\r\n+     * task name for this task\r\n+     */\r\n+    private final String taskName;\r\n+\r\n+    /**\r\n+     * times of retry.\r\n+     * retry task is execute in single thread so that the times is not need volatile.\r\n+     */\r\n+    private int times = 1;\r\n+\r\n+    private volatile boolean cancel;\r\n+\r\n+    AbstractRetryTask(URL url, FailbackRegistry registry, String taskName) {\r\n+        if (url == null || StringUtils.isBlank(taskName)) {\r\n+            throw new IllegalArgumentException();\r\n+        }\r\n+        this.url = url;\r\n+        this.registry = registry;\r\n+        this.taskName = taskName;\r\n+        cancel = false;\r\n+        this.retryPeriod = url.getParameter(REGISTRY_RETRY_PERIOD_KEY, DEFAULT_REGISTRY_RETRY_PERIOD);\r\n+        this.retryTimes = url.getParameter(REGISTRY_RETRY_TIMES_KEY, DEFAULT_REGISTRY_RETRY_TIMES);\r\n+    }\r\n+\r\n+    public void cancel() {\r\n+        cancel = true;\r\n+    }\r\n+\r\n+    public boolean isCancel() {\r\n+        return cancel;\r\n+    }\r\n+\r\n+    protected void reput(Timeout timeout, long tick) {\r\n+        if (timeout == null) {\r\n+            throw new IllegalArgumentException();\r\n+        }\r\n+\r\n+        Timer timer = timeout.timer();\r\n+        if (timer.isStop() || timeout.isCancelled() || isCancel()) {\r\n+            return;\r\n+        }\r\n+        times++;\r\n+        timer.newTimeout(timeout.task(), tick, TimeUnit.MILLISECONDS);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void run(Timeout timeout) throws Exception {\r\n+        if (timeout.isCancelled() || timeout.timer().isStop() || isCancel()) {\r\n+            // other thread cancel this timeout or stop the timer.\r\n+            return;\r\n+        }\r\n+        if (times > retryTimes) {\r\n+            // reach the most times of retry.\r\n+            logger.warn(\"Final failed to execute task \" + taskName + \", url: \" + url + \", retry \" + retryTimes + \" times.\");\r\n+            return;\r\n+        }\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(taskName + \" : \" + url);\r\n+        }\r\n+        try {\r\n+            doRetry(url, registry, timeout);\r\n+        } catch (Throwable t) { // Ignore all the exceptions and wait for the next retry\r\n+            logger.warn(\"Failed to execute task \" + taskName + \", url: \" + url + \", waiting for again, cause:\" + t.getMessage(), t);\r\n+            // reput this task when catch exception.\r\n+            reput(timeout, retryPeriod);\r\n+        }\r\n+    }\r\n+\r\n+    protected abstract void doRetry(URL url, FailbackRegistry registry, Timeout timeout);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/retry/ReExportTask.java", "source2": "org/apache/dubbo/registry/retry/ReExportTask.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,41 +1,41 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.retry;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.timer.Timeout;\n-import org.apache.dubbo.registry.support.FailbackRegistry;\n-\n-/**\n- *\n- */\n-public class ReExportTask extends AbstractRetryTask {\n-\n-    private static final String NAME = \"retry re-export\";\n-\n-    private Runnable runnable;\n-\n-    public ReExportTask(Runnable runnable, URL oldUrl, FailbackRegistry registry) {\n-        super(oldUrl, registry, NAME);\n-        this.runnable = runnable;\n-    }\n-\n-    @Override\n-    protected void doRetry(URL oldUrl, FailbackRegistry registry, Timeout timeout) {\n-        runnable.run();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.retry;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.timer.Timeout;\r\n+import org.apache.dubbo.registry.support.FailbackRegistry;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+public class ReExportTask extends AbstractRetryTask {\r\n+\r\n+    private static final String NAME = \"retry re-export\";\r\n+\r\n+    private Runnable runnable;\r\n+\r\n+    public ReExportTask(Runnable runnable, URL oldUrl, FailbackRegistry registry) {\r\n+        super(oldUrl, registry, NAME);\r\n+        this.runnable = runnable;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doRetry(URL oldUrl, FailbackRegistry registry, Timeout timeout) {\r\n+        runnable.run();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/multicast/MulticastServiceDiscovery.java", "source2": "org/apache/dubbo/registry/multicast/MulticastServiceDiscovery.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,66 +1,66 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.multicast;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-\n-import java.util.Collections;\n-import java.util.Set;\n-\n-/**\n- * TODO: make multicast protocol support Service Discovery\n- */\n-public class MulticastServiceDiscovery extends AbstractServiceDiscovery {\n-    private URL registryURL;\n-\n-    @Override\n-    public void initialize(URL registryURL) throws Exception {\n-        this.registryURL = registryURL;\n-    }\n-\n-    @Override\n-    public void destroy() throws Exception {\n-\n-    }\n-\n-    @Override\n-    public void doRegister(ServiceInstance serviceInstance) {\n-\n-    }\n-\n-    @Override\n-    public void doUpdate(ServiceInstance serviceInstance) {\n-\n-    }\n-\n-    @Override\n-    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\n-        this.serviceInstance = null;\n-    }\n-\n-    @Override\n-    public Set<String> getServices() {\n-        return Collections.singleton(\"Unsupported Operation\");\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return registryURL;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.multicast;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.Set;\r\n+\r\n+/**\r\n+ * TODO: make multicast protocol support Service Discovery\r\n+ */\r\n+public class MulticastServiceDiscovery extends AbstractServiceDiscovery {\r\n+    private URL registryURL;\r\n+\r\n+    @Override\r\n+    public void initialize(URL registryURL) throws Exception {\r\n+        this.registryURL = registryURL;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() throws Exception {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doRegister(ServiceInstance serviceInstance) {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUpdate(ServiceInstance serviceInstance) {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\r\n+        this.serviceInstance = null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<String> getServices() {\r\n+        return Collections.singleton(\"Unsupported Operation\");\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return registryURL;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/zookeeper/ZookeeperInstance.java", "source2": "org/apache/dubbo/registry/zookeeper/ZookeeperInstance.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,77 +1,77 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.zookeeper;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-/**\n- * Represents the default payload of a registered service in Zookeeper.\n- * <p>\n- * It's compatible with Spring Cloud\n- *\n- * @since 2.7.5\n- */\n-public class ZookeeperInstance {\n-\n-    private String id;\n-\n-    private String name;\n-\n-    private Map<String, String> metadata = new HashMap<>();\n-\n-    @SuppressWarnings(\"unused\")\n-    private ZookeeperInstance() {\n-    }\n-\n-    public ZookeeperInstance(String id, String name, Map<String, String> metadata) {\n-        this.id = id;\n-        this.name = name;\n-        this.metadata = metadata;\n-    }\n-\n-    public String getId() {\n-        return this.id;\n-    }\n-\n-    public String getName() {\n-        return this.name;\n-    }\n-\n-    public void setId(String id) {\n-        this.id = id;\n-    }\n-\n-    public void setName(String name) {\n-        this.name = name;\n-    }\n-\n-    public Map<String, String> getMetadata() {\n-        return this.metadata;\n-    }\n-\n-    public void setMetadata(Map<String, String> metadata) {\n-        this.metadata = metadata;\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"ZookeeperInstance{\" + \"id='\" + this.id + '\\'' + \", name='\" + this.name\n-                + '\\'' + \", metadata=\" + this.metadata + '}';\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.zookeeper;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * Represents the default payload of a registered service in Zookeeper.\r\n+ * <p>\r\n+ * It's compatible with Spring Cloud\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ZookeeperInstance {\r\n+\r\n+    private String id;\r\n+\r\n+    private String name;\r\n+\r\n+    private Map<String, String> metadata = new HashMap<>();\r\n+\r\n+    @SuppressWarnings(\"unused\")\r\n+    private ZookeeperInstance() {\r\n+    }\r\n+\r\n+    public ZookeeperInstance(String id, String name, Map<String, String> metadata) {\r\n+        this.id = id;\r\n+        this.name = name;\r\n+        this.metadata = metadata;\r\n+    }\r\n+\r\n+    public String getId() {\r\n+        return this.id;\r\n+    }\r\n+\r\n+    public String getName() {\r\n+        return this.name;\r\n+    }\r\n+\r\n+    public void setId(String id) {\r\n+        this.id = id;\r\n+    }\r\n+\r\n+    public void setName(String name) {\r\n+        this.name = name;\r\n+    }\r\n+\r\n+    public Map<String, String> getMetadata() {\r\n+        return this.metadata;\r\n+    }\r\n+\r\n+    public void setMetadata(Map<String, String> metadata) {\r\n+        this.metadata = metadata;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"ZookeeperInstance{\" + \"id='\" + this.id + '\\'' + \", name='\" + this.name\r\n+                + '\\'' + \", metadata=\" + this.metadata + '}';\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscovery.java", "source2": "org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscovery.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,211 +1,211 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.zookeeper;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.function.ThrowableConsumer;\n-import org.apache.dubbo.common.function.ThrowableFunction;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.DefaultPage;\n-import org.apache.dubbo.common.utils.Page;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\n-\n-import org.apache.curator.framework.CuratorFramework;\n-import org.apache.curator.framework.api.CuratorWatcher;\n-import org.apache.zookeeper.KeeperException;\n-\n-import java.util.Iterator;\n-import java.util.LinkedHashSet;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-import static org.apache.dubbo.common.function.ThrowableFunction.execute;\n-import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.ROOT_PATH;\n-import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkUtils.build;\n-import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkUtils.buildCuratorFramework;\n-import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkUtils.buildServiceDiscovery;\n-\n-/**\n- * Zookeeper {@link ServiceDiscovery} implementation based on\n- * <a href=\"https://curator.apache.org/curator-x-discovery/index.html\">Apache Curator X Discovery</a>\n- */\n-public class ZookeeperServiceDiscovery extends AbstractServiceDiscovery {\n-\n-    private final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    private URL registryURL;\n-\n-    private CuratorFramework curatorFramework;\n-\n-    private String rootPath;\n-\n-    private org.apache.curator.x.discovery.ServiceDiscovery<ZookeeperInstance> serviceDiscovery;\n-\n-    /**\n-     * The Key is watched Zookeeper path, the value is an instance of {@link CuratorWatcher}\n-     */\n-    private final Map<String, ZookeeperServiceDiscoveryChangeWatcher> watcherCaches = new ConcurrentHashMap<>();\n-\n-    @Override\n-    public void initialize(URL registryURL) throws Exception {\n-        this.registryURL = registryURL;\n-        this.curatorFramework = buildCuratorFramework(registryURL);\n-        this.rootPath = ROOT_PATH.getParameterValue(registryURL);\n-        this.serviceDiscovery = buildServiceDiscovery(curatorFramework, rootPath);\n-        this.serviceDiscovery.start();\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return registryURL;\n-    }\n-\n-    public void destroy() throws Exception {\n-        serviceDiscovery.close();\n-    }\n-\n-    @Override\n-    public void doRegister(ServiceInstance serviceInstance) {\n-        doInServiceRegistry(serviceDiscovery -> {\n-            serviceDiscovery.registerService(build(serviceInstance));\n-        });\n-    }\n-\n-    @Override\n-    public void doUpdate(ServiceInstance serviceInstance) {\n-        doInServiceRegistry(serviceDiscovery -> {\n-            serviceDiscovery.updateService(build(serviceInstance));\n-        });\n-    }\n-\n-    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\n-        doInServiceRegistry(serviceDiscovery -> {\n-            serviceDiscovery.unregisterService(build(serviceInstance));\n-        });\n-    }\n-\n-    @Override\n-    public Set<String> getServices() {\n-        return doInServiceDiscovery(s -> new LinkedHashSet<>(s.queryForNames()));\n-    }\n-\n-    @Override\n-    public List<ServiceInstance> getInstances(String serviceName) throws NullPointerException {\n-        return doInServiceDiscovery(s -> build(s.queryForInstances(serviceName)));\n-    }\n-\n-    @Override\n-    public Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize, boolean healthyOnly) {\n-        String path = buildServicePath(serviceName);\n-\n-        return execute(path, p -> {\n-\n-            List<ServiceInstance> serviceInstances = new LinkedList<>();\n-\n-            int totalSize = 0;\n-            try {\n-                List<String> serviceIds = new LinkedList<>(curatorFramework.getChildren().forPath(p));\n-\n-                totalSize = serviceIds.size();\n-\n-                Iterator<String> iterator = serviceIds.iterator();\n-\n-                for (int i = 0; i < offset; i++) {\n-                    if (iterator.hasNext()) { // remove the elements from 0 to offset\n-                        iterator.next();\n-                        iterator.remove();\n-                    }\n-                }\n-\n-                for (int i = 0; i < pageSize; i++) {\n-                    if (iterator.hasNext()) {\n-                        String serviceId = iterator.next();\n-                        ServiceInstance serviceInstance = build(serviceDiscovery.queryForInstance(serviceName, serviceId));\n-                        serviceInstances.add(serviceInstance);\n-                    }\n-                }\n-            } catch (KeeperException.NoNodeException e) {\n-                logger.warn(p + \" path not exist.\", e);\n-            }\n-\n-            return new DefaultPage<>(offset, pageSize, serviceInstances, totalSize);\n-        });\n-    }\n-\n-    @Override\n-    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener)\n-            throws NullPointerException, IllegalArgumentException {\n-        listener.getServiceNames().forEach(serviceName -> registerServiceWatcher(serviceName, listener));\n-    }\n-\n-    @Override\n-    public void removeServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws IllegalArgumentException {\n-        listener.getServiceNames().forEach(serviceName -> {\n-            ZookeeperServiceDiscoveryChangeWatcher watcher = watcherCaches.remove(serviceName);\n-            watcher.stopWatching();\n-        });\n-    }\n-\n-    private void doInServiceRegistry(ThrowableConsumer<org.apache.curator.x.discovery.ServiceDiscovery> consumer) {\n-        ThrowableConsumer.execute(serviceDiscovery, s -> {\n-            consumer.accept(s);\n-        });\n-    }\n-\n-    private <R> R doInServiceDiscovery(ThrowableFunction<org.apache.curator.x.discovery.ServiceDiscovery, R> function) {\n-        return execute(serviceDiscovery, function);\n-    }\n-\n-    protected void registerServiceWatcher(String serviceName, ServiceInstancesChangedListener listener) {\n-        String path = buildServicePath(serviceName);\n-        try {\n-            curatorFramework.create().creatingParentsIfNeeded().forPath(path);\n-        } catch (KeeperException.NodeExistsException e) {\n-            // ignored\n-            if (logger.isDebugEnabled()) {\n-\n-                logger.debug(e);\n-            }\n-        } catch (Exception e) {\n-            throw new IllegalStateException(\"registerServiceWatcher create path=\" + path + \" fail.\", e);\n-        }\n-\n-        CuratorWatcher watcher = watcherCaches.computeIfAbsent(path, key ->\n-                new ZookeeperServiceDiscoveryChangeWatcher(this, serviceName, listener));\n-        try {\n-            curatorFramework.getChildren().usingWatcher(watcher).forPath(path);\n-        } catch (KeeperException.NoNodeException e) {\n-            // ignored\n-            if (logger.isErrorEnabled()) {\n-                logger.error(e.getMessage());\n-            }\n-        } catch (Exception e) {\n-            throw new IllegalStateException(e.getMessage(), e);\n-        }\n-    }\n-\n-    private String buildServicePath(String serviceName) {\n-        return rootPath + \"/\" + serviceName;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.zookeeper;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.function.ThrowableConsumer;\r\n+import org.apache.dubbo.common.function.ThrowableFunction;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.DefaultPage;\r\n+import org.apache.dubbo.common.utils.Page;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\r\n+\r\n+import org.apache.curator.framework.CuratorFramework;\r\n+import org.apache.curator.framework.api.CuratorWatcher;\r\n+import org.apache.zookeeper.KeeperException;\r\n+\r\n+import java.util.Iterator;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+import static org.apache.dubbo.common.function.ThrowableFunction.execute;\r\n+import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.ROOT_PATH;\r\n+import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkUtils.build;\r\n+import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkUtils.buildCuratorFramework;\r\n+import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkUtils.buildServiceDiscovery;\r\n+\r\n+/**\r\n+ * Zookeeper {@link ServiceDiscovery} implementation based on\r\n+ * <a href=\"https://curator.apache.org/curator-x-discovery/index.html\">Apache Curator X Discovery</a>\r\n+ */\r\n+public class ZookeeperServiceDiscovery extends AbstractServiceDiscovery {\r\n+\r\n+    private final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    private URL registryURL;\r\n+\r\n+    private CuratorFramework curatorFramework;\r\n+\r\n+    private String rootPath;\r\n+\r\n+    private org.apache.curator.x.discovery.ServiceDiscovery<ZookeeperInstance> serviceDiscovery;\r\n+\r\n+    /**\r\n+     * The Key is watched Zookeeper path, the value is an instance of {@link CuratorWatcher}\r\n+     */\r\n+    private final Map<String, ZookeeperServiceDiscoveryChangeWatcher> watcherCaches = new ConcurrentHashMap<>();\r\n+\r\n+    @Override\r\n+    public void initialize(URL registryURL) throws Exception {\r\n+        this.registryURL = registryURL;\r\n+        this.curatorFramework = buildCuratorFramework(registryURL);\r\n+        this.rootPath = ROOT_PATH.getParameterValue(registryURL);\r\n+        this.serviceDiscovery = buildServiceDiscovery(curatorFramework, rootPath);\r\n+        this.serviceDiscovery.start();\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return registryURL;\r\n+    }\r\n+\r\n+    public void destroy() throws Exception {\r\n+        serviceDiscovery.close();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doRegister(ServiceInstance serviceInstance) {\r\n+        doInServiceRegistry(serviceDiscovery -> {\r\n+            serviceDiscovery.registerService(build(serviceInstance));\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUpdate(ServiceInstance serviceInstance) {\r\n+        doInServiceRegistry(serviceDiscovery -> {\r\n+            serviceDiscovery.updateService(build(serviceInstance));\r\n+        });\r\n+    }\r\n+\r\n+    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\r\n+        doInServiceRegistry(serviceDiscovery -> {\r\n+            serviceDiscovery.unregisterService(build(serviceInstance));\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<String> getServices() {\r\n+        return doInServiceDiscovery(s -> new LinkedHashSet<>(s.queryForNames()));\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<ServiceInstance> getInstances(String serviceName) throws NullPointerException {\r\n+        return doInServiceDiscovery(s -> build(s.queryForInstances(serviceName)));\r\n+    }\r\n+\r\n+    @Override\r\n+    public Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize, boolean healthyOnly) {\r\n+        String path = buildServicePath(serviceName);\r\n+\r\n+        return execute(path, p -> {\r\n+\r\n+            List<ServiceInstance> serviceInstances = new LinkedList<>();\r\n+\r\n+            int totalSize = 0;\r\n+            try {\r\n+                List<String> serviceIds = new LinkedList<>(curatorFramework.getChildren().forPath(p));\r\n+\r\n+                totalSize = serviceIds.size();\r\n+\r\n+                Iterator<String> iterator = serviceIds.iterator();\r\n+\r\n+                for (int i = 0; i < offset; i++) {\r\n+                    if (iterator.hasNext()) { // remove the elements from 0 to offset\r\n+                        iterator.next();\r\n+                        iterator.remove();\r\n+                    }\r\n+                }\r\n+\r\n+                for (int i = 0; i < pageSize; i++) {\r\n+                    if (iterator.hasNext()) {\r\n+                        String serviceId = iterator.next();\r\n+                        ServiceInstance serviceInstance = build(serviceDiscovery.queryForInstance(serviceName, serviceId));\r\n+                        serviceInstances.add(serviceInstance);\r\n+                    }\r\n+                }\r\n+            } catch (KeeperException.NoNodeException e) {\r\n+                logger.warn(p + \" path not exist.\", e);\r\n+            }\r\n+\r\n+            return new DefaultPage<>(offset, pageSize, serviceInstances, totalSize);\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener)\r\n+            throws NullPointerException, IllegalArgumentException {\r\n+        listener.getServiceNames().forEach(serviceName -> registerServiceWatcher(serviceName, listener));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws IllegalArgumentException {\r\n+        listener.getServiceNames().forEach(serviceName -> {\r\n+            ZookeeperServiceDiscoveryChangeWatcher watcher = watcherCaches.remove(serviceName);\r\n+            watcher.stopWatching();\r\n+        });\r\n+    }\r\n+\r\n+    private void doInServiceRegistry(ThrowableConsumer<org.apache.curator.x.discovery.ServiceDiscovery> consumer) {\r\n+        ThrowableConsumer.execute(serviceDiscovery, s -> {\r\n+            consumer.accept(s);\r\n+        });\r\n+    }\r\n+\r\n+    private <R> R doInServiceDiscovery(ThrowableFunction<org.apache.curator.x.discovery.ServiceDiscovery, R> function) {\r\n+        return execute(serviceDiscovery, function);\r\n+    }\r\n+\r\n+    protected void registerServiceWatcher(String serviceName, ServiceInstancesChangedListener listener) {\r\n+        String path = buildServicePath(serviceName);\r\n+        try {\r\n+            curatorFramework.create().creatingParentsIfNeeded().forPath(path);\r\n+        } catch (KeeperException.NodeExistsException e) {\r\n+            // ignored\r\n+            if (logger.isDebugEnabled()) {\r\n+\r\n+                logger.debug(e);\r\n+            }\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(\"registerServiceWatcher create path=\" + path + \" fail.\", e);\r\n+        }\r\n+\r\n+        CuratorWatcher watcher = watcherCaches.computeIfAbsent(path, key ->\r\n+                new ZookeeperServiceDiscoveryChangeWatcher(this, serviceName, listener));\r\n+        try {\r\n+            curatorFramework.getChildren().usingWatcher(watcher).forPath(path);\r\n+        } catch (KeeperException.NoNodeException e) {\r\n+            // ignored\r\n+            if (logger.isErrorEnabled()) {\r\n+                logger.error(e.getMessage());\r\n+            }\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    private String buildServicePath(String serviceName) {\r\n+        return rootPath + \"/\" + serviceName;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryChangeWatcher.java", "source2": "org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryChangeWatcher.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,75 +1,75 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.zookeeper;\n-\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\n-import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\n-\n-import org.apache.curator.framework.api.CuratorWatcher;\n-import org.apache.zookeeper.WatchedEvent;\n-import org.apache.zookeeper.Watcher;\n-\n-import static org.apache.zookeeper.Watcher.Event.EventType.NodeChildrenChanged;\n-import static org.apache.zookeeper.Watcher.Event.EventType.NodeDataChanged;\n-\n-/**\n- * Zookeeper {@link ServiceDiscovery} Change {@link CuratorWatcher watcher} only interests in\n- * {@link Watcher.Event.EventType#NodeChildrenChanged} and {@link Watcher.Event.EventType#NodeDataChanged} event types,\n- * which will multicast a {@link ServiceInstancesChangedEvent} when the service node has been changed.\n- *\n- * @since 2.7.5\n- */\n-public class ZookeeperServiceDiscoveryChangeWatcher implements CuratorWatcher {\n-    private ServiceInstancesChangedListener listener;\n-\n-    private final ZookeeperServiceDiscovery zookeeperServiceDiscovery;\n-\n-    private boolean keepWatching = true;\n-\n-    private final String serviceName;\n-\n-    public ZookeeperServiceDiscoveryChangeWatcher(ZookeeperServiceDiscovery zookeeperServiceDiscovery,\n-                                                  String serviceName,\n-                                                  ServiceInstancesChangedListener listener) {\n-        this.zookeeperServiceDiscovery = zookeeperServiceDiscovery;\n-        this.serviceName = serviceName;\n-        this.listener = listener;\n-    }\n-\n-    @Override\n-    public void process(WatchedEvent event) throws Exception {\n-\n-        Watcher.Event.EventType eventType = event.getType();\n-\n-        if (NodeChildrenChanged.equals(eventType) || NodeDataChanged.equals(eventType)) {\n-            if (shouldKeepWatching()) {\n-                listener.onEvent(new ServiceInstancesChangedEvent(serviceName, zookeeperServiceDiscovery.getInstances(serviceName)));\n-                zookeeperServiceDiscovery.registerServiceWatcher(serviceName, listener);\n-                zookeeperServiceDiscovery.dispatchServiceInstancesChangedEvent(serviceName);\n-            }\n-        }\n-    }\n-\n-    public boolean shouldKeepWatching() {\n-        return keepWatching;\n-    }\n-\n-    public void stopWatching() {\n-        this.keepWatching = false;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.zookeeper;\r\n+\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\r\n+import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\r\n+\r\n+import org.apache.curator.framework.api.CuratorWatcher;\r\n+import org.apache.zookeeper.WatchedEvent;\r\n+import org.apache.zookeeper.Watcher;\r\n+\r\n+import static org.apache.zookeeper.Watcher.Event.EventType.NodeChildrenChanged;\r\n+import static org.apache.zookeeper.Watcher.Event.EventType.NodeDataChanged;\r\n+\r\n+/**\r\n+ * Zookeeper {@link ServiceDiscovery} Change {@link CuratorWatcher watcher} only interests in\r\n+ * {@link Watcher.Event.EventType#NodeChildrenChanged} and {@link Watcher.Event.EventType#NodeDataChanged} event types,\r\n+ * which will multicast a {@link ServiceInstancesChangedEvent} when the service node has been changed.\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class ZookeeperServiceDiscoveryChangeWatcher implements CuratorWatcher {\r\n+    private ServiceInstancesChangedListener listener;\r\n+\r\n+    private final ZookeeperServiceDiscovery zookeeperServiceDiscovery;\r\n+\r\n+    private boolean keepWatching = true;\r\n+\r\n+    private final String serviceName;\r\n+\r\n+    public ZookeeperServiceDiscoveryChangeWatcher(ZookeeperServiceDiscovery zookeeperServiceDiscovery,\r\n+                                                  String serviceName,\r\n+                                                  ServiceInstancesChangedListener listener) {\r\n+        this.zookeeperServiceDiscovery = zookeeperServiceDiscovery;\r\n+        this.serviceName = serviceName;\r\n+        this.listener = listener;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void process(WatchedEvent event) throws Exception {\r\n+\r\n+        Watcher.Event.EventType eventType = event.getType();\r\n+\r\n+        if (NodeChildrenChanged.equals(eventType) || NodeDataChanged.equals(eventType)) {\r\n+            if (shouldKeepWatching()) {\r\n+                listener.onEvent(new ServiceInstancesChangedEvent(serviceName, zookeeperServiceDiscovery.getInstances(serviceName)));\r\n+                zookeeperServiceDiscovery.registerServiceWatcher(serviceName, listener);\r\n+                zookeeperServiceDiscovery.dispatchServiceInstancesChangedEvent(serviceName);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public boolean shouldKeepWatching() {\r\n+        return keepWatching;\r\n+    }\r\n+\r\n+    public void stopWatching() {\r\n+        this.keepWatching = false;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryFactory.java", "source2": "org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,29 +1,29 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.zookeeper;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-\n-public class ZookeeperServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\n-\n-    @Override\n-    protected ServiceDiscovery createDiscovery(URL registryURL) {\n-        return new ZookeeperServiceDiscovery();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.zookeeper;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+\r\n+public class ZookeeperServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\r\n+\r\n+    @Override\r\n+    protected ServiceDiscovery createDiscovery(URL registryURL) {\r\n+        return new ZookeeperServiceDiscovery();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkParams.java", "source2": "org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkParams.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,102 +1,102 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.zookeeper.util;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-\n-import org.apache.curator.framework.CuratorFramework;\n-\n-import java.util.concurrent.TimeUnit;\n-import java.util.function.Function;\n-\n-/**\n- * The enumeration for the parameters  of {@link CuratorFramework}\n- *\n- * @see CuratorFramework\n- * @since 2.7.5\n- */\n-public enum CuratorFrameworkParams {\n-\n-    /**\n-     * The root path of Dubbo Service\n-     */\n-    ROOT_PATH(\"rootPath\", \"/services\", value -> value),\n-\n-    /**\n-     * The host of current {@link ServiceInstance service instance} that will be registered\n-     */\n-    INSTANCE_HOST(\"instanceHost\", null, value -> value),\n-\n-    /**\n-     * The port of current {@link ServiceInstance service instance} that will be registered\n-     */\n-    INSTANCE_PORT(\"instancePort\", null, value -> value),\n-\n-    /**\n-     * Initial amount of time to wait between retries\n-     */\n-    BASE_SLEEP_TIME(\"baseSleepTimeMs\", 50, Integer::valueOf),\n-\n-    /**\n-     * Max number of times to retry.\n-     */\n-    MAX_RETRIES(\"maxRetries\", 10, Integer::valueOf),\n-\n-    /**\n-     * Max time in ms to sleep on each retry.\n-     */\n-    MAX_SLEEP(\"maxSleepMs\", 500, Integer::valueOf),\n-\n-    /**\n-     * Wait time to block on connection to Zookeeper.\n-     */\n-    BLOCK_UNTIL_CONNECTED_WAIT(\"blockUntilConnectedWait\", 10, Integer::valueOf),\n-\n-    /**\n-     * The unit of time related to blocking on connection to Zookeeper.\n-     */\n-    BLOCK_UNTIL_CONNECTED_UNIT(\"blockUntilConnectedUnit\", TimeUnit.SECONDS, TimeUnit::valueOf),\n-\n-    ;\n-\n-    private final String name;\n-\n-    private final Object defaultValue;\n-\n-    private final Function<String, Object> converter;\n-\n-    <T> CuratorFrameworkParams(String name, T defaultValue, Function<String, T> converter) {\n-        this.name = name;\n-        this.defaultValue = defaultValue;\n-        this.converter = (Function<String, Object>) converter;\n-    }\n-\n-    /**\n-     * Get the parameter value from the specified {@link URL}\n-     *\n-     * @param url the Dubbo registry {@link URL}\n-     * @param <T> the type of value\n-     * @return the parameter value if present, or return <code>null</code>\n-     */\n-    public <T> T getParameterValue(URL url) {\n-        String param = url.getParameter(name);\n-        Object value = param != null ? converter.apply(param) : defaultValue;\n-        return (T) value;\n-    }\n-}\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.zookeeper.util;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+\r\n+import org.apache.curator.framework.CuratorFramework;\r\n+\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.function.Function;\r\n+\r\n+/**\r\n+ * The enumeration for the parameters  of {@link CuratorFramework}\r\n+ *\r\n+ * @see CuratorFramework\r\n+ * @since 2.7.5\r\n+ */\r\n+public enum CuratorFrameworkParams {\r\n+\r\n+    /**\r\n+     * The root path of Dubbo Service\r\n+     */\r\n+    ROOT_PATH(\"rootPath\", \"/services\", value -> value),\r\n+\r\n+    /**\r\n+     * The host of current {@link ServiceInstance service instance} that will be registered\r\n+     */\r\n+    INSTANCE_HOST(\"instanceHost\", null, value -> value),\r\n+\r\n+    /**\r\n+     * The port of current {@link ServiceInstance service instance} that will be registered\r\n+     */\r\n+    INSTANCE_PORT(\"instancePort\", null, value -> value),\r\n+\r\n+    /**\r\n+     * Initial amount of time to wait between retries\r\n+     */\r\n+    BASE_SLEEP_TIME(\"baseSleepTimeMs\", 50, Integer::valueOf),\r\n+\r\n+    /**\r\n+     * Max number of times to retry.\r\n+     */\r\n+    MAX_RETRIES(\"maxRetries\", 10, Integer::valueOf),\r\n+\r\n+    /**\r\n+     * Max time in ms to sleep on each retry.\r\n+     */\r\n+    MAX_SLEEP(\"maxSleepMs\", 500, Integer::valueOf),\r\n+\r\n+    /**\r\n+     * Wait time to block on connection to Zookeeper.\r\n+     */\r\n+    BLOCK_UNTIL_CONNECTED_WAIT(\"blockUntilConnectedWait\", 10, Integer::valueOf),\r\n+\r\n+    /**\r\n+     * The unit of time related to blocking on connection to Zookeeper.\r\n+     */\r\n+    BLOCK_UNTIL_CONNECTED_UNIT(\"blockUntilConnectedUnit\", TimeUnit.SECONDS, TimeUnit::valueOf),\r\n+\r\n+    ;\r\n+\r\n+    private final String name;\r\n+\r\n+    private final Object defaultValue;\r\n+\r\n+    private final Function<String, Object> converter;\r\n+\r\n+    <T> CuratorFrameworkParams(String name, T defaultValue, Function<String, T> converter) {\r\n+        this.name = name;\r\n+        this.defaultValue = defaultValue;\r\n+        this.converter = (Function<String, Object>) converter;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the parameter value from the specified {@link URL}\r\n+     *\r\n+     * @param url the Dubbo registry {@link URL}\r\n+     * @param <T> the type of value\r\n+     * @return the parameter value if present, or return <code>null</code>\r\n+     */\r\n+    public <T> T getParameterValue(URL url) {\r\n+        String param = url.getParameter(name);\r\n+        Object value = param != null ? converter.apply(param) : defaultValue;\r\n+        return (T) value;\r\n+    }\r\n+}\r\n+\r\n"}, {"source1": "org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtils.java", "source2": "org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,117 +1,117 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.zookeeper.util;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.DefaultServiceInstance;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.zookeeper.ZookeeperInstance;\n-\n-import org.apache.curator.RetryPolicy;\n-import org.apache.curator.framework.CuratorFramework;\n-import org.apache.curator.framework.CuratorFrameworkFactory;\n-import org.apache.curator.retry.ExponentialBackoffRetry;\n-import org.apache.curator.x.discovery.ServiceDiscovery;\n-import org.apache.curator.x.discovery.ServiceDiscoveryBuilder;\n-import org.apache.curator.x.discovery.ServiceInstanceBuilder;\n-\n-import java.util.Collection;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.stream.Collectors;\n-\n-import static org.apache.curator.x.discovery.ServiceInstance.builder;\n-import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.BASE_SLEEP_TIME;\n-import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.BLOCK_UNTIL_CONNECTED_UNIT;\n-import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.BLOCK_UNTIL_CONNECTED_WAIT;\n-import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.MAX_RETRIES;\n-import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.MAX_SLEEP;\n-\n-/**\n- * Curator Framework Utilities Class\n- *\n- * @since 2.7.5\n- */\n-public abstract class CuratorFrameworkUtils {\n-\n-    public static ServiceDiscovery<ZookeeperInstance> buildServiceDiscovery(CuratorFramework curatorFramework,\n-                                                                            String basePath) {\n-        return ServiceDiscoveryBuilder.builder(ZookeeperInstance.class)\n-                .client(curatorFramework)\n-                .basePath(basePath)\n-                .build();\n-    }\n-\n-    public static CuratorFramework buildCuratorFramework(URL connectionURL) throws Exception {\n-        CuratorFramework curatorFramework = CuratorFrameworkFactory.builder()\n-                .connectString(connectionURL.getIp() + \":\" + connectionURL.getPort())\n-                .retryPolicy(buildRetryPolicy(connectionURL))\n-                .build();\n-        curatorFramework.start();\n-        curatorFramework.blockUntilConnected(BLOCK_UNTIL_CONNECTED_WAIT.getParameterValue(connectionURL),\n-                BLOCK_UNTIL_CONNECTED_UNIT.getParameterValue(connectionURL));\n-        return curatorFramework;\n-    }\n-\n-    public static RetryPolicy buildRetryPolicy(URL connectionURL) {\n-        int baseSleepTimeMs = BASE_SLEEP_TIME.getParameterValue(connectionURL);\n-        int maxRetries = MAX_RETRIES.getParameterValue(connectionURL);\n-        int getMaxSleepMs = MAX_SLEEP.getParameterValue(connectionURL);\n-        return new ExponentialBackoffRetry(baseSleepTimeMs, maxRetries, getMaxSleepMs);\n-    }\n-\n-\n-    public static List<ServiceInstance> build(Collection<org.apache.curator.x.discovery.ServiceInstance<ZookeeperInstance>>\n-                                                      instances) {\n-        return instances.stream().map(CuratorFrameworkUtils::build).collect(Collectors.toList());\n-    }\n-\n-    public static ServiceInstance build(org.apache.curator.x.discovery.ServiceInstance<ZookeeperInstance> instance) {\n-        String name = instance.getName();\n-        String host = instance.getAddress();\n-        int port = instance.getPort();\n-        ZookeeperInstance zookeeperInstance = instance.getPayload();\n-        DefaultServiceInstance serviceInstance = new DefaultServiceInstance(instance.getId(), name, host, port);\n-        serviceInstance.setMetadata(zookeeperInstance.getMetadata());\n-        return serviceInstance;\n-    }\n-\n-    public static org.apache.curator.x.discovery.ServiceInstance<ZookeeperInstance> build(ServiceInstance serviceInstance) {\n-        ServiceInstanceBuilder builder = null;\n-        String serviceName = serviceInstance.getServiceName();\n-        String host = serviceInstance.getHost();\n-        int port = serviceInstance.getPort();\n-        Map<String, String> metadata = serviceInstance.getMetadata();\n-        String id = generateId(host, port);\n-        ZookeeperInstance zookeeperInstance = new ZookeeperInstance(null, serviceName, metadata);\n-        try {\n-            builder = builder()\n-                    .id(id)\n-                    .name(serviceName)\n-                    .address(host)\n-                    .port(port)\n-                    .payload(zookeeperInstance);\n-        } catch (Exception e) {\n-            throw new RuntimeException(e);\n-        }\n-        return builder.build();\n-    }\n-\n-    public static final String generateId(String host, int port) {\n-        return host + \":\" + port;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.zookeeper.util;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.DefaultServiceInstance;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.zookeeper.ZookeeperInstance;\r\n+\r\n+import org.apache.curator.RetryPolicy;\r\n+import org.apache.curator.framework.CuratorFramework;\r\n+import org.apache.curator.framework.CuratorFrameworkFactory;\r\n+import org.apache.curator.retry.ExponentialBackoffRetry;\r\n+import org.apache.curator.x.discovery.ServiceDiscovery;\r\n+import org.apache.curator.x.discovery.ServiceDiscoveryBuilder;\r\n+import org.apache.curator.x.discovery.ServiceInstanceBuilder;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.stream.Collectors;\r\n+\r\n+import static org.apache.curator.x.discovery.ServiceInstance.builder;\r\n+import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.BASE_SLEEP_TIME;\r\n+import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.BLOCK_UNTIL_CONNECTED_UNIT;\r\n+import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.BLOCK_UNTIL_CONNECTED_WAIT;\r\n+import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.MAX_RETRIES;\r\n+import static org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.MAX_SLEEP;\r\n+\r\n+/**\r\n+ * Curator Framework Utilities Class\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public abstract class CuratorFrameworkUtils {\r\n+\r\n+    public static ServiceDiscovery<ZookeeperInstance> buildServiceDiscovery(CuratorFramework curatorFramework,\r\n+                                                                            String basePath) {\r\n+        return ServiceDiscoveryBuilder.builder(ZookeeperInstance.class)\r\n+                .client(curatorFramework)\r\n+                .basePath(basePath)\r\n+                .build();\r\n+    }\r\n+\r\n+    public static CuratorFramework buildCuratorFramework(URL connectionURL) throws Exception {\r\n+        CuratorFramework curatorFramework = CuratorFrameworkFactory.builder()\r\n+                .connectString(connectionURL.getIp() + \":\" + connectionURL.getPort())\r\n+                .retryPolicy(buildRetryPolicy(connectionURL))\r\n+                .build();\r\n+        curatorFramework.start();\r\n+        curatorFramework.blockUntilConnected(BLOCK_UNTIL_CONNECTED_WAIT.getParameterValue(connectionURL),\r\n+                BLOCK_UNTIL_CONNECTED_UNIT.getParameterValue(connectionURL));\r\n+        return curatorFramework;\r\n+    }\r\n+\r\n+    public static RetryPolicy buildRetryPolicy(URL connectionURL) {\r\n+        int baseSleepTimeMs = BASE_SLEEP_TIME.getParameterValue(connectionURL);\r\n+        int maxRetries = MAX_RETRIES.getParameterValue(connectionURL);\r\n+        int getMaxSleepMs = MAX_SLEEP.getParameterValue(connectionURL);\r\n+        return new ExponentialBackoffRetry(baseSleepTimeMs, maxRetries, getMaxSleepMs);\r\n+    }\r\n+\r\n+\r\n+    public static List<ServiceInstance> build(Collection<org.apache.curator.x.discovery.ServiceInstance<ZookeeperInstance>>\r\n+                                                      instances) {\r\n+        return instances.stream().map(CuratorFrameworkUtils::build).collect(Collectors.toList());\r\n+    }\r\n+\r\n+    public static ServiceInstance build(org.apache.curator.x.discovery.ServiceInstance<ZookeeperInstance> instance) {\r\n+        String name = instance.getName();\r\n+        String host = instance.getAddress();\r\n+        int port = instance.getPort();\r\n+        ZookeeperInstance zookeeperInstance = instance.getPayload();\r\n+        DefaultServiceInstance serviceInstance = new DefaultServiceInstance(instance.getId(), name, host, port);\r\n+        serviceInstance.setMetadata(zookeeperInstance.getMetadata());\r\n+        return serviceInstance;\r\n+    }\r\n+\r\n+    public static org.apache.curator.x.discovery.ServiceInstance<ZookeeperInstance> build(ServiceInstance serviceInstance) {\r\n+        ServiceInstanceBuilder builder = null;\r\n+        String serviceName = serviceInstance.getServiceName();\r\n+        String host = serviceInstance.getHost();\r\n+        int port = serviceInstance.getPort();\r\n+        Map<String, String> metadata = serviceInstance.getMetadata();\r\n+        String id = generateId(host, port);\r\n+        ZookeeperInstance zookeeperInstance = new ZookeeperInstance(null, serviceName, metadata);\r\n+        try {\r\n+            builder = builder()\r\n+                    .id(id)\r\n+                    .name(serviceName)\r\n+                    .address(host)\r\n+                    .port(port)\r\n+                    .payload(zookeeperInstance);\r\n+        } catch (Exception e) {\r\n+            throw new RuntimeException(e);\r\n+        }\r\n+        return builder.build();\r\n+    }\r\n+\r\n+    public static final String generateId(String host, int port) {\r\n+        return host + \":\" + port;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/zookeeper/DataListener.java", "source2": "org/apache/dubbo/remoting/zookeeper/DataListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,25 +1,25 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.zookeeper;\n-\n-/**\n- * 2019-02-26\n- */\n-public interface DataListener {\n-\n-    void dataChanged(String path, Object value, EventType eventType);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.zookeeper;\r\n+\r\n+/**\r\n+ * 2019-02-26\r\n+ */\r\n+public interface DataListener {\r\n+\r\n+    void dataChanged(String path, Object value, EventType eventType);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/zookeeper/EventType.java", "source2": "org/apache/dubbo/remoting/zookeeper/EventType.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,65 +1,65 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.zookeeper;\n-\n-import org.apache.zookeeper.Watcher;\n-\n-/**\n- * 2019-02-26\n- */\n-public enum EventType {\n-    None(-1),\n-    NodeCreated(1),\n-    NodeDeleted(2),\n-    NodeDataChanged(3),\n-    NodeChildrenChanged(4),\n-    CONNECTION_SUSPENDED(11),\n-    CONNECTION_RECONNECTED(12),\n-    CONNECTION_LOST(12),\n-    INITIALIZED(10);\n-\n-\n-\n-    private final int intValue;     // Integer representation of value\n-    // for sending over wire\n-\n-    EventType(int intValue) {\n-        this.intValue = intValue;\n-    }\n-\n-    public int getIntValue() {\n-        return intValue;\n-    }\n-\n-    public static Watcher.Event.EventType fromInt(int intValue) {\n-        switch (intValue) {\n-            case -1:\n-                return Watcher.Event.EventType.None;\n-            case 1:\n-                return Watcher.Event.EventType.NodeCreated;\n-            case 2:\n-                return Watcher.Event.EventType.NodeDeleted;\n-            case 3:\n-                return Watcher.Event.EventType.NodeDataChanged;\n-            case 4:\n-                return Watcher.Event.EventType.NodeChildrenChanged;\n-\n-            default:\n-                throw new RuntimeException(\"Invalid integer value for conversion to EventType\");\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.zookeeper;\r\n+\r\n+import org.apache.zookeeper.Watcher;\r\n+\r\n+/**\r\n+ * 2019-02-26\r\n+ */\r\n+public enum EventType {\r\n+    None(-1),\r\n+    NodeCreated(1),\r\n+    NodeDeleted(2),\r\n+    NodeDataChanged(3),\r\n+    NodeChildrenChanged(4),\r\n+    CONNECTION_SUSPENDED(11),\r\n+    CONNECTION_RECONNECTED(12),\r\n+    CONNECTION_LOST(12),\r\n+    INITIALIZED(10);\r\n+\r\n+\r\n+\r\n+    private final int intValue;     // Integer representation of value\r\n+    // for sending over wire\r\n+\r\n+    EventType(int intValue) {\r\n+        this.intValue = intValue;\r\n+    }\r\n+\r\n+    public int getIntValue() {\r\n+        return intValue;\r\n+    }\r\n+\r\n+    public static Watcher.Event.EventType fromInt(int intValue) {\r\n+        switch (intValue) {\r\n+            case -1:\r\n+                return Watcher.Event.EventType.None;\r\n+            case 1:\r\n+                return Watcher.Event.EventType.NodeCreated;\r\n+            case 2:\r\n+                return Watcher.Event.EventType.NodeDeleted;\r\n+            case 3:\r\n+                return Watcher.Event.EventType.NodeDataChanged;\r\n+            case 4:\r\n+                return Watcher.Event.EventType.NodeChildrenChanged;\r\n+\r\n+            default:\r\n+                throw new RuntimeException(\"Invalid integer value for conversion to EventType\");\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/zookeeper/StateListener.java", "source2": "org/apache/dubbo/remoting/zookeeper/StateListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.zookeeper;\n-\n-public interface StateListener {\n-\n-    int SESSION_LOST = 0;\n-\n-    int CONNECTED = 1;\n-\n-    int RECONNECTED = 2;\n-\n-    int SUSPENDED = 3;\n-\n-    int NEW_SESSION_CREATED = 4;\n-\n-    void stateChanged(int connected);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.zookeeper;\r\n+\r\n+public interface StateListener {\r\n+\r\n+    int SESSION_LOST = 0;\r\n+\r\n+    int CONNECTED = 1;\r\n+\r\n+    int RECONNECTED = 2;\r\n+\r\n+    int SUSPENDED = 3;\r\n+\r\n+    int NEW_SESSION_CREATED = 4;\r\n+\r\n+    void stateChanged(int connected);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/zookeeper/ZookeeperClient.java", "source2": "org/apache/dubbo/remoting/zookeeper/ZookeeperClient.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,67 +1,67 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.zookeeper;\n-\n-import org.apache.dubbo.common.URL;\n-\n-import java.util.List;\n-import java.util.concurrent.Executor;\n-\n-public interface ZookeeperClient {\n-\n-    void create(String path, boolean ephemeral);\n-\n-    void delete(String path);\n-\n-    List<String> getChildren(String path);\n-\n-    List<String> addChildListener(String path, ChildListener listener);\n-\n-    /**\n-     * @param path:    directory. All of child of path will be listened.\n-     * @param listener\n-     */\n-    void addDataListener(String path, DataListener listener);\n-\n-    /**\n-     * @param path:    directory. All of child of path will be listened.\n-     * @param listener\n-     * @param executor another thread\n-     */\n-    void addDataListener(String path, DataListener listener, Executor executor);\n-\n-    void removeDataListener(String path, DataListener listener);\n-\n-    void removeChildListener(String path, ChildListener listener);\n-\n-    void addStateListener(StateListener listener);\n-\n-    void removeStateListener(StateListener listener);\n-\n-    boolean isConnected();\n-\n-    void close();\n-\n-    URL getUrl();\n-\n-    void create(String path, String content, boolean ephemeral);\n-\n-    String getContent(String path);\n-\n-    boolean checkExists(String path);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.zookeeper;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+\r\n+import java.util.List;\r\n+import java.util.concurrent.Executor;\r\n+\r\n+public interface ZookeeperClient {\r\n+\r\n+    void create(String path, boolean ephemeral);\r\n+\r\n+    void delete(String path);\r\n+\r\n+    List<String> getChildren(String path);\r\n+\r\n+    List<String> addChildListener(String path, ChildListener listener);\r\n+\r\n+    /**\r\n+     * @param path:    directory. All of child of path will be listened.\r\n+     * @param listener\r\n+     */\r\n+    void addDataListener(String path, DataListener listener);\r\n+\r\n+    /**\r\n+     * @param path:    directory. All of child of path will be listened.\r\n+     * @param listener\r\n+     * @param executor another thread\r\n+     */\r\n+    void addDataListener(String path, DataListener listener, Executor executor);\r\n+\r\n+    void removeDataListener(String path, DataListener listener);\r\n+\r\n+    void removeChildListener(String path, ChildListener listener);\r\n+\r\n+    void addStateListener(StateListener listener);\r\n+\r\n+    void removeStateListener(StateListener listener);\r\n+\r\n+    boolean isConnected();\r\n+\r\n+    void close();\r\n+\r\n+    URL getUrl();\r\n+\r\n+    void create(String path, String content, boolean ephemeral);\r\n+\r\n+    String getContent(String path);\r\n+\r\n+    boolean checkExists(String path);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/zookeeper/ZookeeperTransporter.java", "source2": "org/apache/dubbo/remoting/zookeeper/ZookeeperTransporter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,30 +1,30 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.zookeeper;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.Adaptive;\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.remoting.Constants;\n-\n-@SPI(\"curator\")\n-public interface ZookeeperTransporter {\n-\n-    @Adaptive({Constants.CLIENT_KEY, Constants.TRANSPORTER_KEY})\n-    ZookeeperClient connect(URL url);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.zookeeper;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.Adaptive;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+\r\n+@SPI(\"curator\")\r\n+public interface ZookeeperTransporter {\r\n+\r\n+    @Adaptive({Constants.CLIENT_KEY, Constants.TRANSPORTER_KEY})\r\n+    ZookeeperClient connect(URL url);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/remoting/zookeeper/support/AbstractZookeeperTransporter.java", "source2": "org/apache/dubbo/remoting/zookeeper/support/AbstractZookeeperTransporter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,182 +1,182 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.remoting.zookeeper.support;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.constants.RemotingConstants;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.zookeeper.ZookeeperClient;\n-import org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter;\n-\n-import java.util.ArrayList;\n-import java.util.Collections;\n-import java.util.HashMap;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-\n-/**\n- * AbstractZookeeperTransporter is abstract implements of ZookeeperTransporter.\n- * <p>\n- * If you want to extends this, implements createZookeeperClient.\n- */\n-public abstract class AbstractZookeeperTransporter implements ZookeeperTransporter {\n-    private static final Logger logger = LoggerFactory.getLogger(ZookeeperTransporter.class);\n-    private final Map<String, ZookeeperClient> zookeeperClientMap = new ConcurrentHashMap<>();\n-\n-    /**\n-     * share connect for registry, metadata, etc..\n-     * <p>\n-     * Make sure the connection is connected.\n-     *\n-     * @param url\n-     * @return\n-     */\n-    @Override\n-    public ZookeeperClient connect(URL url) {\n-        ZookeeperClient zookeeperClient;\n-        // address format: {[username:password@]address}\n-        List<String> addressList = getURLBackupAddress(url);\n-        // The field define the zookeeper server , including protocol, host, port, username, password\n-        if ((zookeeperClient = fetchAndUpdateZookeeperClientCache(addressList)) != null && zookeeperClient.isConnected()) {\n-            logger.info(\"find valid zookeeper client from the cache for address: \" + url);\n-            return zookeeperClient;\n-        }\n-        // avoid creating too many connections\uff0c so add lock\n-        synchronized (zookeeperClientMap) {\n-            if ((zookeeperClient = fetchAndUpdateZookeeperClientCache(addressList)) != null && zookeeperClient.isConnected()) {\n-                logger.info(\"find valid zookeeper client from the cache for address: \" + url);\n-                return zookeeperClient;\n-            }\n-\n-            zookeeperClient = createZookeeperClient(url);\n-            logger.info(\"No valid zookeeper client found from cache, therefore create a new client for url. \" + url);\n-            writeToClientMap(addressList, zookeeperClient);\n-        }\n-        return zookeeperClient;\n-    }\n-\n-    /**\n-     * @param url the url that will create zookeeper connection .\n-     *            The url in AbstractZookeeperTransporter#connect parameter is rewritten by this one.\n-     *            such as: zookeeper://127.0.0.1:2181/org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter\n-     * @return\n-     */\n-    protected abstract ZookeeperClient createZookeeperClient(URL url);\n-\n-    /**\n-     * get the ZookeeperClient from cache, the ZookeeperClient must be connected.\n-     * <p>\n-     * It is not private method for unit test.\n-     *\n-     * @param addressList\n-     * @return\n-     */\n-    ZookeeperClient fetchAndUpdateZookeeperClientCache(List<String> addressList) {\n-\n-        ZookeeperClient zookeeperClient = null;\n-        for (String address : addressList) {\n-            if ((zookeeperClient = zookeeperClientMap.get(address)) != null && zookeeperClient.isConnected()) {\n-                break;\n-            }\n-        }\n-        if (zookeeperClient != null && zookeeperClient.isConnected()) {\n-            writeToClientMap(addressList, zookeeperClient);\n-        }\n-        return zookeeperClient;\n-    }\n-\n-    /**\n-     * get all zookeeper urls (such as :zookeeper://127.0.0.1:2181?127.0.0.1:8989,127.0.0.1:9999)\n-     *\n-     * @param url such as:zookeeper://127.0.0.1:2181?127.0.0.1:8989,127.0.0.1:9999\n-     * @return such as 127.0.0.1:2181,127.0.0.1:8989,127.0.0.1:9999\n-     */\n-    List<String> getURLBackupAddress(URL url) {\n-        List<String> addressList = new ArrayList<String>();\n-        addressList.add(url.getAddress());\n-        addressList.addAll(url.getParameter(RemotingConstants.BACKUP_KEY, Collections.EMPTY_LIST));\n-\n-        String authPrefix = null;\n-        if (StringUtils.isNotEmpty(url.getUsername())) {\n-            StringBuilder buf = new StringBuilder();\n-            buf.append(url.getUsername());\n-            if (StringUtils.isNotEmpty(url.getPassword())) {\n-                buf.append(\":\");\n-                buf.append(url.getPassword());\n-            }\n-            buf.append(\"@\");\n-            authPrefix = buf.toString();\n-        }\n-\n-        if (StringUtils.isNotEmpty(authPrefix)) {\n-            List<String> authedAddressList = new ArrayList<>(addressList.size());\n-            for (String addr : addressList) {\n-                authedAddressList.add(authPrefix + addr);\n-            }\n-            return authedAddressList;\n-        }\n-\n-\n-        return addressList;\n-    }\n-\n-    /**\n-     * write address-ZookeeperClient relationship to Map\n-     *\n-     * @param addressList\n-     * @param zookeeperClient\n-     */\n-    void writeToClientMap(List<String> addressList, ZookeeperClient zookeeperClient) {\n-        for (String address : addressList) {\n-            zookeeperClientMap.put(address, zookeeperClient);\n-        }\n-    }\n-\n-    /**\n-     * redefine the url for zookeeper. just keep protocol, username, password, host, port, and individual parameter.\n-     *\n-     * @param url\n-     * @return\n-     */\n-    URL toClientURL(URL url) {\n-        Map<String, String> parameterMap = new HashMap<>();\n-        // for CuratorZookeeperClient\n-        if (url.getParameter(TIMEOUT_KEY) != null) {\n-            parameterMap.put(TIMEOUT_KEY, url.getParameter(TIMEOUT_KEY));\n-        }\n-        if (url.getParameter(RemotingConstants.BACKUP_KEY) != null) {\n-            parameterMap.put(RemotingConstants.BACKUP_KEY, url.getParameter(RemotingConstants.BACKUP_KEY));\n-        }\n-\n-        return new URL(url.getProtocol(), url.getUsername(), url.getPassword(), url.getHost(), url.getPort(),\n-                ZookeeperTransporter.class.getName(), parameterMap);\n-    }\n-\n-    /**\n-     * for unit test\n-     *\n-     * @return\n-     */\n-    Map<String, ZookeeperClient> getZookeeperClientMap() {\n-        return zookeeperClientMap;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.remoting.zookeeper.support;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.constants.RemotingConstants;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.zookeeper.ZookeeperClient;\r\n+import org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Collections;\r\n+import java.util.HashMap;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+\r\n+/**\r\n+ * AbstractZookeeperTransporter is abstract implements of ZookeeperTransporter.\r\n+ * <p>\r\n+ * If you want to extends this, implements createZookeeperClient.\r\n+ */\r\n+public abstract class AbstractZookeeperTransporter implements ZookeeperTransporter {\r\n+    private static final Logger logger = LoggerFactory.getLogger(ZookeeperTransporter.class);\r\n+    private final Map<String, ZookeeperClient> zookeeperClientMap = new ConcurrentHashMap<>();\r\n+\r\n+    /**\r\n+     * share connect for registry, metadata, etc..\r\n+     * <p>\r\n+     * Make sure the connection is connected.\r\n+     *\r\n+     * @param url\r\n+     * @return\r\n+     */\r\n+    @Override\r\n+    public ZookeeperClient connect(URL url) {\r\n+        ZookeeperClient zookeeperClient;\r\n+        // address format: {[username:password@]address}\r\n+        List<String> addressList = getURLBackupAddress(url);\r\n+        // The field define the zookeeper server , including protocol, host, port, username, password\r\n+        if ((zookeeperClient = fetchAndUpdateZookeeperClientCache(addressList)) != null && zookeeperClient.isConnected()) {\r\n+            logger.info(\"find valid zookeeper client from the cache for address: \" + url);\r\n+            return zookeeperClient;\r\n+        }\r\n+        // avoid creating too many connections\uff0c so add lock\r\n+        synchronized (zookeeperClientMap) {\r\n+            if ((zookeeperClient = fetchAndUpdateZookeeperClientCache(addressList)) != null && zookeeperClient.isConnected()) {\r\n+                logger.info(\"find valid zookeeper client from the cache for address: \" + url);\r\n+                return zookeeperClient;\r\n+            }\r\n+\r\n+            zookeeperClient = createZookeeperClient(url);\r\n+            logger.info(\"No valid zookeeper client found from cache, therefore create a new client for url. \" + url);\r\n+            writeToClientMap(addressList, zookeeperClient);\r\n+        }\r\n+        return zookeeperClient;\r\n+    }\r\n+\r\n+    /**\r\n+     * @param url the url that will create zookeeper connection .\r\n+     *            The url in AbstractZookeeperTransporter#connect parameter is rewritten by this one.\r\n+     *            such as: zookeeper://127.0.0.1:2181/org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter\r\n+     * @return\r\n+     */\r\n+    protected abstract ZookeeperClient createZookeeperClient(URL url);\r\n+\r\n+    /**\r\n+     * get the ZookeeperClient from cache, the ZookeeperClient must be connected.\r\n+     * <p>\r\n+     * It is not private method for unit test.\r\n+     *\r\n+     * @param addressList\r\n+     * @return\r\n+     */\r\n+    ZookeeperClient fetchAndUpdateZookeeperClientCache(List<String> addressList) {\r\n+\r\n+        ZookeeperClient zookeeperClient = null;\r\n+        for (String address : addressList) {\r\n+            if ((zookeeperClient = zookeeperClientMap.get(address)) != null && zookeeperClient.isConnected()) {\r\n+                break;\r\n+            }\r\n+        }\r\n+        if (zookeeperClient != null && zookeeperClient.isConnected()) {\r\n+            writeToClientMap(addressList, zookeeperClient);\r\n+        }\r\n+        return zookeeperClient;\r\n+    }\r\n+\r\n+    /**\r\n+     * get all zookeeper urls (such as :zookeeper://127.0.0.1:2181?127.0.0.1:8989,127.0.0.1:9999)\r\n+     *\r\n+     * @param url such as:zookeeper://127.0.0.1:2181?127.0.0.1:8989,127.0.0.1:9999\r\n+     * @return such as 127.0.0.1:2181,127.0.0.1:8989,127.0.0.1:9999\r\n+     */\r\n+    List<String> getURLBackupAddress(URL url) {\r\n+        List<String> addressList = new ArrayList<String>();\r\n+        addressList.add(url.getAddress());\r\n+        addressList.addAll(url.getParameter(RemotingConstants.BACKUP_KEY, Collections.EMPTY_LIST));\r\n+\r\n+        String authPrefix = null;\r\n+        if (StringUtils.isNotEmpty(url.getUsername())) {\r\n+            StringBuilder buf = new StringBuilder();\r\n+            buf.append(url.getUsername());\r\n+            if (StringUtils.isNotEmpty(url.getPassword())) {\r\n+                buf.append(\":\");\r\n+                buf.append(url.getPassword());\r\n+            }\r\n+            buf.append(\"@\");\r\n+            authPrefix = buf.toString();\r\n+        }\r\n+\r\n+        if (StringUtils.isNotEmpty(authPrefix)) {\r\n+            List<String> authedAddressList = new ArrayList<>(addressList.size());\r\n+            for (String addr : addressList) {\r\n+                authedAddressList.add(authPrefix + addr);\r\n+            }\r\n+            return authedAddressList;\r\n+        }\r\n+\r\n+\r\n+        return addressList;\r\n+    }\r\n+\r\n+    /**\r\n+     * write address-ZookeeperClient relationship to Map\r\n+     *\r\n+     * @param addressList\r\n+     * @param zookeeperClient\r\n+     */\r\n+    void writeToClientMap(List<String> addressList, ZookeeperClient zookeeperClient) {\r\n+        for (String address : addressList) {\r\n+            zookeeperClientMap.put(address, zookeeperClient);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * redefine the url for zookeeper. just keep protocol, username, password, host, port, and individual parameter.\r\n+     *\r\n+     * @param url\r\n+     * @return\r\n+     */\r\n+    URL toClientURL(URL url) {\r\n+        Map<String, String> parameterMap = new HashMap<>();\r\n+        // for CuratorZookeeperClient\r\n+        if (url.getParameter(TIMEOUT_KEY) != null) {\r\n+            parameterMap.put(TIMEOUT_KEY, url.getParameter(TIMEOUT_KEY));\r\n+        }\r\n+        if (url.getParameter(RemotingConstants.BACKUP_KEY) != null) {\r\n+            parameterMap.put(RemotingConstants.BACKUP_KEY, url.getParameter(RemotingConstants.BACKUP_KEY));\r\n+        }\r\n+\r\n+        return new URL(url.getProtocol(), url.getUsername(), url.getPassword(), url.getHost(), url.getPort(),\r\n+                ZookeeperTransporter.class.getName(), parameterMap);\r\n+    }\r\n+\r\n+    /**\r\n+     * for unit test\r\n+     *\r\n+     * @return\r\n+     */\r\n+    Map<String, ZookeeperClient> getZookeeperClientMap() {\r\n+        return zookeeperClientMap;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/redis/RedisServiceDiscovery.java", "source2": "org/apache/dubbo/registry/redis/RedisServiceDiscovery.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,64 +1,64 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.redis;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-\n-import java.util.Collections;\n-import java.util.Set;\n-\n-public class RedisServiceDiscovery extends AbstractServiceDiscovery {\n-    private URL registryURL;\n-\n-    @Override\n-    public void initialize(URL registryURL) throws Exception {\n-        this.registryURL = registryURL;\n-    }\n-\n-    @Override\n-    public void destroy() throws Exception {\n-\n-    }\n-\n-    @Override\n-    public void doRegister(ServiceInstance serviceInstance) {\n-\n-    }\n-\n-    @Override\n-    public void doUpdate(ServiceInstance serviceInstance) {\n-\n-    }\n-\n-    @Override\n-    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\n-        this.serviceInstance = null;\n-    }\n-\n-    @Override\n-    public Set<String> getServices() {\n-        return Collections.singleton(\"Unsupported Operation\");\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return registryURL;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.redis;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.Set;\r\n+\r\n+public class RedisServiceDiscovery extends AbstractServiceDiscovery {\r\n+    private URL registryURL;\r\n+\r\n+    @Override\r\n+    public void initialize(URL registryURL) throws Exception {\r\n+        this.registryURL = registryURL;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() throws Exception {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doRegister(ServiceInstance serviceInstance) {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUpdate(ServiceInstance serviceInstance) {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\r\n+        this.serviceInstance = null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<String> getServices() {\r\n+        return Collections.singleton(\"Unsupported Operation\");\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return registryURL;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/redis/RedisServiceDiscoveryFactory.java", "source2": "org/apache/dubbo/registry/redis/RedisServiceDiscoveryFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,30 +1,30 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.redis;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-\n-public class RedisServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\n-\n-    @Override\n-    protected ServiceDiscovery createDiscovery(URL registryURL) {\n-        return new RedisServiceDiscovery();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.redis;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+\r\n+public class RedisServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\r\n+\r\n+    @Override\r\n+    protected ServiceDiscovery createDiscovery(URL registryURL) {\r\n+        return new RedisServiceDiscovery();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/consul/AbstractConsulRegistry.java", "source2": "org/apache/dubbo/registry/consul/AbstractConsulRegistry.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,39 +1,39 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.consul;\n-\n-/**\n- * @author cvictory ON 2019-08-02\n- */\n-public class AbstractConsulRegistry {\n-\n-    static final String SERVICE_TAG = \"dubbo\";\n-    static final String URL_META_KEY = \"url\";\n-    static final String WATCH_TIMEOUT = \"consul-watch-timeout\";\n-    static final String CHECK_PASS_INTERVAL = \"consul-check-pass-interval\";\n-    static final String DEREGISTER_AFTER = \"consul-deregister-critical-service-after\";\n-\n-    static final int DEFAULT_PORT = 8500;\n-    // default watch timeout in millisecond\n-    static final int DEFAULT_WATCH_TIMEOUT = 60 * 1000;\n-    // default time-to-live in millisecond\n-    static final long DEFAULT_CHECK_PASS_INTERVAL = 16000L;\n-    // default deregister critical server after\n-    static final String DEFAULT_DEREGISTER_TIME = \"20s\";\n-\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.consul;\r\n+\r\n+/**\r\n+ * @author cvictory ON 2019-08-02\r\n+ */\r\n+public class AbstractConsulRegistry {\r\n+\r\n+    static final String SERVICE_TAG = \"dubbo\";\r\n+    static final String URL_META_KEY = \"url\";\r\n+    static final String WATCH_TIMEOUT = \"consul-watch-timeout\";\r\n+    static final String CHECK_PASS_INTERVAL = \"consul-check-pass-interval\";\r\n+    static final String DEREGISTER_AFTER = \"consul-deregister-critical-service-after\";\r\n+\r\n+    static final int DEFAULT_PORT = 8500;\r\n+    // default watch timeout in millisecond\r\n+    static final int DEFAULT_WATCH_TIMEOUT = 60 * 1000;\r\n+    // default time-to-live in millisecond\r\n+    static final long DEFAULT_CHECK_PASS_INTERVAL = 16000L;\r\n+    // default deregister critical server after\r\n+    static final String DEFAULT_DEREGISTER_TIME = \"20s\";\r\n+\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/consul/ConsulParameter.java", "source2": "org/apache/dubbo/registry/consul/ConsulParameter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,87 +1,87 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.consul;\n-\n-import org.apache.dubbo.common.URL;\n-\n-import static org.apache.dubbo.common.utils.StringUtils.isBlank;\n-\n-/**\n- * The enumeration for the Consul's parameters on the {@link URL}\n- *\n- * @see URL#getParameters()\n- * @since 2.7.8\n- */\n-public enum ConsulParameter {\n-\n-    ACL_TOKEN,\n-\n-    TAGS,\n-\n-    INSTANCE_ZONE,\n-\n-    DEFAULT_ZONE_METADATA_NAME(\"zone\"),\n-\n-    INSTANCE_GROUP,\n-\n-    CONSISTENCY_MODE,\n-\n-    ;\n-\n-    private final String name;\n-\n-    private final String defaultValue;\n-\n-    ConsulParameter() {\n-        this(null);\n-    }\n-\n-    ConsulParameter(String defaultValue) {\n-        this(null, defaultValue);\n-    }\n-\n-    ConsulParameter(String name, String defaultValue) {\n-        this.name = isBlank(name) ? defaultName() : name;\n-        this.defaultValue = defaultValue;\n-    }\n-\n-    private String defaultName() {\n-        return name().toLowerCase().replace('_', '-');\n-    }\n-\n-    /**\n-     * The parameter value from the specified registry {@link URL}\n-     *\n-     * @param registryURL the specified registry {@link URL}\n-     * @return <code>defaultValue</code> if not found\n-     */\n-    public String getValue(URL registryURL) {\n-        return registryURL.getParameter(name, defaultValue);\n-    }\n-\n-    /**\n-     * The parameter value from the specified registry {@link URL}\n-     *\n-     * @param registryURL  the specified registry {@link URL}\n-     * @param valueType    the type of parameter value\n-     * @param defaultValue the default value if parameter is absent\n-     * @return <code>defaultValue</code> if not found\n-     */\n-    public <T> T getValue(URL registryURL, Class<T> valueType, T defaultValue) {\n-        return registryURL.getParameter(name, valueType, defaultValue);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.consul;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+\r\n+import static org.apache.dubbo.common.utils.StringUtils.isBlank;\r\n+\r\n+/**\r\n+ * The enumeration for the Consul's parameters on the {@link URL}\r\n+ *\r\n+ * @see URL#getParameters()\r\n+ * @since 2.7.8\r\n+ */\r\n+public enum ConsulParameter {\r\n+\r\n+    ACL_TOKEN,\r\n+\r\n+    TAGS,\r\n+\r\n+    INSTANCE_ZONE,\r\n+\r\n+    DEFAULT_ZONE_METADATA_NAME(\"zone\"),\r\n+\r\n+    INSTANCE_GROUP,\r\n+\r\n+    CONSISTENCY_MODE,\r\n+\r\n+    ;\r\n+\r\n+    private final String name;\r\n+\r\n+    private final String defaultValue;\r\n+\r\n+    ConsulParameter() {\r\n+        this(null);\r\n+    }\r\n+\r\n+    ConsulParameter(String defaultValue) {\r\n+        this(null, defaultValue);\r\n+    }\r\n+\r\n+    ConsulParameter(String name, String defaultValue) {\r\n+        this.name = isBlank(name) ? defaultName() : name;\r\n+        this.defaultValue = defaultValue;\r\n+    }\r\n+\r\n+    private String defaultName() {\r\n+        return name().toLowerCase().replace('_', '-');\r\n+    }\r\n+\r\n+    /**\r\n+     * The parameter value from the specified registry {@link URL}\r\n+     *\r\n+     * @param registryURL the specified registry {@link URL}\r\n+     * @return <code>defaultValue</code> if not found\r\n+     */\r\n+    public String getValue(URL registryURL) {\r\n+        return registryURL.getParameter(name, defaultValue);\r\n+    }\r\n+\r\n+    /**\r\n+     * The parameter value from the specified registry {@link URL}\r\n+     *\r\n+     * @param registryURL  the specified registry {@link URL}\r\n+     * @param valueType    the type of parameter value\r\n+     * @param defaultValue the default value if parameter is absent\r\n+     * @return <code>defaultValue</code> if not found\r\n+     */\r\n+    public <T> T getValue(URL registryURL, Class<T> valueType, T defaultValue) {\r\n+        return registryURL.getParameter(name, valueType, defaultValue);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/consul/ConsulRegistry.java", "source2": "org/apache/dubbo/registry/consul/ConsulRegistry.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,380 +1,380 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.registry.consul;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.URLBuilder;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.NamedThreadFactory;\n-import org.apache.dubbo.common.utils.UrlUtils;\n-import org.apache.dubbo.registry.NotifyListener;\n-import org.apache.dubbo.registry.support.FailbackRegistry;\n-import org.apache.dubbo.rpc.RpcException;\n-\n-import com.ecwid.consul.v1.ConsulClient;\n-import com.ecwid.consul.v1.QueryParams;\n-import com.ecwid.consul.v1.Response;\n-import com.ecwid.consul.v1.agent.model.NewService;\n-import com.ecwid.consul.v1.catalog.CatalogServicesRequest;\n-import com.ecwid.consul.v1.health.HealthServicesRequest;\n-import com.ecwid.consul.v1.health.model.HealthService;\n-\n-import java.util.ArrayList;\n-import java.util.Collection;\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Objects;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.ScheduledExecutorService;\n-import java.util.concurrent.ScheduledThreadPoolExecutor;\n-import java.util.concurrent.TimeUnit;\n-import java.util.stream.Collectors;\n-\n-import static java.util.concurrent.Executors.newCachedThreadPool;\n-import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;\n-import static org.apache.dubbo.common.constants.RegistryConstants.CATEGORY_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.EMPTY_PROTOCOL;\n-import static org.apache.dubbo.registry.Constants.CONSUMER_PROTOCOL;\n-import static org.apache.dubbo.registry.Constants.PROVIDER_PROTOCOL;\n-import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.CHECK_PASS_INTERVAL;\n-import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEFAULT_CHECK_PASS_INTERVAL;\n-import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEFAULT_DEREGISTER_TIME;\n-import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEFAULT_PORT;\n-import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEFAULT_WATCH_TIMEOUT;\n-import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEREGISTER_AFTER;\n-import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.SERVICE_TAG;\n-import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.URL_META_KEY;\n-import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.WATCH_TIMEOUT;\n-import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\n-\n-/**\n- * registry center implementation for consul\n- */\n-public class ConsulRegistry extends FailbackRegistry {\n-    private static final Logger logger = LoggerFactory.getLogger(ConsulRegistry.class);\n-\n-    private ConsulClient client;\n-    private long checkPassInterval;\n-    private ExecutorService notifierExecutor = newCachedThreadPool(\n-            new NamedThreadFactory(\"dubbo-consul-notifier\", true));\n-    private ConcurrentMap<URL, ConsulNotifier> notifiers = new ConcurrentHashMap<>();\n-    private ScheduledExecutorService ttlConsulCheckExecutor;\n-    /**\n-     * The ACL token\n-     */\n-    private String token;\n-\n-\n-    public ConsulRegistry(URL url) {\n-        super(url);\n-        token = url.getParameter(TOKEN_KEY, (String) null);\n-        String host = url.getHost();\n-        int port = url.getPort() != 0 ? url.getPort() : DEFAULT_PORT;\n-        client = new ConsulClient(host, port);\n-        checkPassInterval = url.getParameter(CHECK_PASS_INTERVAL, DEFAULT_CHECK_PASS_INTERVAL);\n-        ttlConsulCheckExecutor = new ScheduledThreadPoolExecutor(1, new NamedThreadFactory(\"Ttl-Consul-Check-Executor\", true));\n-        ttlConsulCheckExecutor.scheduleAtFixedRate(this::checkPass, checkPassInterval / 8,\n-                checkPassInterval / 8, TimeUnit.MILLISECONDS);\n-    }\n-\n-    @Override\n-    public void register(URL url) {\n-        if (isConsumerSide(url)) {\n-            return;\n-        }\n-\n-        super.register(url);\n-    }\n-\n-    @Override\n-    public void doRegister(URL url) {\n-        if (token == null) {\n-            client.agentServiceRegister(buildService(url));\n-        } else {\n-            client.agentServiceRegister(buildService(url), token);\n-        }\n-    }\n-\n-    @Override\n-    public void unregister(URL url) {\n-        if (isConsumerSide(url)) {\n-            return;\n-        }\n-\n-        super.unregister(url);\n-    }\n-\n-    @Override\n-    public void doUnregister(URL url) {\n-        if (token == null) {\n-            client.agentServiceDeregister(buildId(url));\n-        } else {\n-            client.agentServiceDeregister(buildId(url), token);\n-        }\n-    }\n-\n-    @Override\n-    public void subscribe(URL url, NotifyListener listener) {\n-        if (isProviderSide(url)) {\n-            return;\n-        }\n-\n-        super.subscribe(url, listener);\n-    }\n-\n-    @Override\n-    public void doSubscribe(URL url, NotifyListener listener) {\n-        Long index;\n-        List<URL> urls;\n-        if (ANY_VALUE.equals(url.getServiceInterface())) {\n-            Response<Map<String, List<String>>> response = getAllServices(-1, buildWatchTimeout(url));\n-            index = response.getConsulIndex();\n-            List<HealthService> services = getHealthServices(response.getValue());\n-            urls = convert(services, url);\n-        } else {\n-            String service = url.getServiceInterface();\n-            Response<List<HealthService>> response = getHealthServices(service, -1, buildWatchTimeout(url));\n-            index = response.getConsulIndex();\n-            urls = convert(response.getValue(), url);\n-        }\n-\n-        notify(url, listener, urls);\n-        ConsulNotifier notifier = notifiers.computeIfAbsent(url, k -> new ConsulNotifier(url, index));\n-        notifierExecutor.submit(notifier);\n-    }\n-\n-    @Override\n-    public void unsubscribe(URL url, NotifyListener listener) {\n-        if (isProviderSide(url)) {\n-            return;\n-        }\n-\n-        super.unsubscribe(url, listener);\n-    }\n-\n-    @Override\n-    public void doUnsubscribe(URL url, NotifyListener listener) {\n-        ConsulNotifier notifier = notifiers.remove(url);\n-        notifier.stop();\n-    }\n-\n-    @Override\n-    public List<URL> lookup(URL url) {\n-        if (url == null) {\n-            throw new IllegalArgumentException(\"lookup url == null\");\n-        }\n-        try {\n-            String service = url.getServiceKey();\n-            Response<List<HealthService>> result = getHealthServices(service, -1, buildWatchTimeout(url));\n-            if (result == null || result.getValue() == null || result.getValue().isEmpty()) {\n-                return new ArrayList<>();\n-            } else {\n-                return convert(result.getValue(), url);\n-            }\n-        } catch (Throwable e) {\n-            throw new RpcException(\"Failed to lookup \" + url + \" from consul \" + getUrl() + \", cause: \" + e.getMessage(), e);\n-        }\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        return client.getAgentSelf() != null;\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        super.destroy();\n-        notifierExecutor.shutdown();\n-        ttlConsulCheckExecutor.shutdown();\n-    }\n-\n-    private void checkPass() {\n-        for (URL url : getRegistered()) {\n-            String checkId = buildId(url);\n-            try {\n-                if (token == null) {\n-                    client.agentCheckPass(\"service:\" + checkId);\n-                } else {\n-                    client.agentCheckPass(\"service:\" + checkId, null, token);\n-                }\n-                if (logger.isDebugEnabled()) {\n-                    logger.debug(\"check pass for url: \" + url + \" with check id: \" + checkId);\n-                }\n-            } catch (Throwable t) {\n-                logger.warn(\"fail to check pass for url: \" + url + \", check id is: \" + checkId, t);\n-            }\n-        }\n-    }\n-\n-    private Response<List<HealthService>> getHealthServices(String service, long index, int watchTimeout) {\n-        HealthServicesRequest request = HealthServicesRequest.newBuilder()\n-                .setTag(SERVICE_TAG)\n-                .setQueryParams(new QueryParams(watchTimeout, index))\n-                .setPassing(true)\n-                .setToken(token)\n-                .build();\n-        return client.getHealthServices(service, request);\n-    }\n-\n-    private Response<Map<String, List<String>>> getAllServices(long index, int watchTimeout) {\n-        CatalogServicesRequest request = CatalogServicesRequest.newBuilder()\n-                .setQueryParams(new QueryParams(watchTimeout, index))\n-                .setToken(token)\n-                .build();\n-        return client.getCatalogServices(request);\n-    }\n-\n-    private List<HealthService> getHealthServices(Map<String, List<String>> services) {\n-        return services.entrySet().stream()\n-                .filter(s -> s.getValue().contains(SERVICE_TAG))\n-                .map(s -> getHealthServices(s.getKey(), -1, -1).getValue())\n-                .flatMap(Collection::stream)\n-                .collect(Collectors.toList());\n-    }\n-\n-\n-    private boolean isConsumerSide(URL url) {\n-        return url.getProtocol().equals(CONSUMER_PROTOCOL);\n-    }\n-\n-    private boolean isProviderSide(URL url) {\n-        return url.getProtocol().equals(PROVIDER_PROTOCOL);\n-    }\n-\n-    private List<URL> convert(List<HealthService> services, URL consumerURL) {\n-        if (CollectionUtils.isEmpty(services)) {\n-            return emptyURL(consumerURL);\n-        }\n-        return services.stream()\n-                .map(HealthService::getService)\n-                .filter(Objects::nonNull)\n-                .map(HealthService.Service::getMeta)\n-                .filter(m -> m != null && m.containsKey(URL_META_KEY))\n-                .map(m -> m.get(URL_META_KEY))\n-                .map(URL::valueOf)\n-                .filter(url -> UrlUtils.isMatch(consumerURL, url))\n-                .collect(Collectors.toList());\n-    }\n-\n-    private List<URL> emptyURL(URL consumerURL) {\n-        // No Category Parameter\n-        URL empty = URLBuilder.from(consumerURL)\n-                .setProtocol(EMPTY_PROTOCOL)\n-                .removeParameter(CATEGORY_KEY)\n-                .build();\n-        List<URL> result = new ArrayList<URL>();\n-        result.add(empty);\n-        return result;\n-    }\n-\n-    private NewService buildService(URL url) {\n-        NewService service = new NewService();\n-        service.setAddress(url.getHost());\n-        service.setPort(url.getPort());\n-        service.setId(buildId(url));\n-        service.setName(url.getServiceInterface());\n-        service.setCheck(buildCheck(url));\n-        service.setTags(buildTags(url));\n-        service.setMeta(Collections.singletonMap(URL_META_KEY, url.toFullString()));\n-        return service;\n-    }\n-\n-    private List<String> buildTags(URL url) {\n-        Map<String, String> params = url.getParameters();\n-        List<String> tags = params.entrySet().stream()\n-                .map(k -> k.getKey() + \"=\" + k.getValue())\n-                .collect(Collectors.toList());\n-        tags.add(SERVICE_TAG);\n-        return tags;\n-    }\n-\n-    private String buildId(URL url) {\n-        // let's simply use url's hashcode to generate unique service id for now\n-        return Integer.toHexString(url.hashCode());\n-    }\n-\n-    private NewService.Check buildCheck(URL url) {\n-        NewService.Check check = new NewService.Check();\n-        check.setTtl((checkPassInterval / 1000) + \"s\");\n-        check.setDeregisterCriticalServiceAfter(url.getParameter(DEREGISTER_AFTER, DEFAULT_DEREGISTER_TIME));\n-        return check;\n-    }\n-\n-    private int buildWatchTimeout(URL url) {\n-        return url.getParameter(WATCH_TIMEOUT, DEFAULT_WATCH_TIMEOUT) / 1000;\n-    }\n-\n-    private class ConsulNotifier implements Runnable {\n-        private URL url;\n-        private long consulIndex;\n-        private boolean running;\n-\n-        ConsulNotifier(URL url, long consulIndex) {\n-            this.url = url;\n-            this.consulIndex = consulIndex;\n-            this.running = true;\n-        }\n-\n-        @Override\n-        public void run() {\n-            while (this.running) {\n-                if (ANY_VALUE.equals(url.getServiceInterface())) {\n-                    processServices();\n-                } else {\n-                    processService();\n-                }\n-            }\n-        }\n-\n-        private void processService() {\n-            String service = url.getServiceKey();\n-            Response<List<HealthService>> response = getHealthServices(service, consulIndex, buildWatchTimeout(url));\n-            Long currentIndex = response.getConsulIndex();\n-            if (currentIndex != null && currentIndex > consulIndex) {\n-                consulIndex = currentIndex;\n-                List<HealthService> services = response.getValue();\n-                List<URL> urls = convert(services, url);\n-                for (NotifyListener listener : getSubscribed().get(url)) {\n-                    doNotify(url, listener, urls);\n-                }\n-            }\n-        }\n-\n-        private void processServices() {\n-            Response<Map<String, List<String>>> response = getAllServices(consulIndex, buildWatchTimeout(url));\n-            Long currentIndex = response.getConsulIndex();\n-            if (currentIndex != null && currentIndex > consulIndex) {\n-                consulIndex = currentIndex;\n-                List<HealthService> services = getHealthServices(response.getValue());\n-                List<URL> urls = convert(services, url);\n-                for (NotifyListener listener : getSubscribed().get(url)) {\n-                    doNotify(url, listener, urls);\n-                }\n-            }\n-        }\n-\n-        void stop() {\n-            this.running = false;\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.registry.consul;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.URLBuilder;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.NamedThreadFactory;\r\n+import org.apache.dubbo.common.utils.UrlUtils;\r\n+import org.apache.dubbo.registry.NotifyListener;\r\n+import org.apache.dubbo.registry.support.FailbackRegistry;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+\r\n+import com.ecwid.consul.v1.ConsulClient;\r\n+import com.ecwid.consul.v1.QueryParams;\r\n+import com.ecwid.consul.v1.Response;\r\n+import com.ecwid.consul.v1.agent.model.NewService;\r\n+import com.ecwid.consul.v1.catalog.CatalogServicesRequest;\r\n+import com.ecwid.consul.v1.health.HealthServicesRequest;\r\n+import com.ecwid.consul.v1.health.model.HealthService;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Collection;\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Objects;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.ScheduledExecutorService;\r\n+import java.util.concurrent.ScheduledThreadPoolExecutor;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.stream.Collectors;\r\n+\r\n+import static java.util.concurrent.Executors.newCachedThreadPool;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.CATEGORY_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.EMPTY_PROTOCOL;\r\n+import static org.apache.dubbo.registry.Constants.CONSUMER_PROTOCOL;\r\n+import static org.apache.dubbo.registry.Constants.PROVIDER_PROTOCOL;\r\n+import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.CHECK_PASS_INTERVAL;\r\n+import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEFAULT_CHECK_PASS_INTERVAL;\r\n+import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEFAULT_DEREGISTER_TIME;\r\n+import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEFAULT_PORT;\r\n+import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEFAULT_WATCH_TIMEOUT;\r\n+import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEREGISTER_AFTER;\r\n+import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.SERVICE_TAG;\r\n+import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.URL_META_KEY;\r\n+import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.WATCH_TIMEOUT;\r\n+import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\r\n+\r\n+/**\r\n+ * registry center implementation for consul\r\n+ */\r\n+public class ConsulRegistry extends FailbackRegistry {\r\n+    private static final Logger logger = LoggerFactory.getLogger(ConsulRegistry.class);\r\n+\r\n+    private ConsulClient client;\r\n+    private long checkPassInterval;\r\n+    private ExecutorService notifierExecutor = newCachedThreadPool(\r\n+            new NamedThreadFactory(\"dubbo-consul-notifier\", true));\r\n+    private ConcurrentMap<URL, ConsulNotifier> notifiers = new ConcurrentHashMap<>();\r\n+    private ScheduledExecutorService ttlConsulCheckExecutor;\r\n+    /**\r\n+     * The ACL token\r\n+     */\r\n+    private String token;\r\n+\r\n+\r\n+    public ConsulRegistry(URL url) {\r\n+        super(url);\r\n+        token = url.getParameter(TOKEN_KEY, (String) null);\r\n+        String host = url.getHost();\r\n+        int port = url.getPort() != 0 ? url.getPort() : DEFAULT_PORT;\r\n+        client = new ConsulClient(host, port);\r\n+        checkPassInterval = url.getParameter(CHECK_PASS_INTERVAL, DEFAULT_CHECK_PASS_INTERVAL);\r\n+        ttlConsulCheckExecutor = new ScheduledThreadPoolExecutor(1, new NamedThreadFactory(\"Ttl-Consul-Check-Executor\", true));\r\n+        ttlConsulCheckExecutor.scheduleAtFixedRate(this::checkPass, checkPassInterval / 8,\r\n+                checkPassInterval / 8, TimeUnit.MILLISECONDS);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void register(URL url) {\r\n+        if (isConsumerSide(url)) {\r\n+            return;\r\n+        }\r\n+\r\n+        super.register(url);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doRegister(URL url) {\r\n+        if (token == null) {\r\n+            client.agentServiceRegister(buildService(url));\r\n+        } else {\r\n+            client.agentServiceRegister(buildService(url), token);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unregister(URL url) {\r\n+        if (isConsumerSide(url)) {\r\n+            return;\r\n+        }\r\n+\r\n+        super.unregister(url);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUnregister(URL url) {\r\n+        if (token == null) {\r\n+            client.agentServiceDeregister(buildId(url));\r\n+        } else {\r\n+            client.agentServiceDeregister(buildId(url), token);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void subscribe(URL url, NotifyListener listener) {\r\n+        if (isProviderSide(url)) {\r\n+            return;\r\n+        }\r\n+\r\n+        super.subscribe(url, listener);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doSubscribe(URL url, NotifyListener listener) {\r\n+        Long index;\r\n+        List<URL> urls;\r\n+        if (ANY_VALUE.equals(url.getServiceInterface())) {\r\n+            Response<Map<String, List<String>>> response = getAllServices(-1, buildWatchTimeout(url));\r\n+            index = response.getConsulIndex();\r\n+            List<HealthService> services = getHealthServices(response.getValue());\r\n+            urls = convert(services, url);\r\n+        } else {\r\n+            String service = url.getServiceInterface();\r\n+            Response<List<HealthService>> response = getHealthServices(service, -1, buildWatchTimeout(url));\r\n+            index = response.getConsulIndex();\r\n+            urls = convert(response.getValue(), url);\r\n+        }\r\n+\r\n+        notify(url, listener, urls);\r\n+        ConsulNotifier notifier = notifiers.computeIfAbsent(url, k -> new ConsulNotifier(url, index));\r\n+        notifierExecutor.submit(notifier);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unsubscribe(URL url, NotifyListener listener) {\r\n+        if (isProviderSide(url)) {\r\n+            return;\r\n+        }\r\n+\r\n+        super.unsubscribe(url, listener);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUnsubscribe(URL url, NotifyListener listener) {\r\n+        ConsulNotifier notifier = notifiers.remove(url);\r\n+        notifier.stop();\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<URL> lookup(URL url) {\r\n+        if (url == null) {\r\n+            throw new IllegalArgumentException(\"lookup url == null\");\r\n+        }\r\n+        try {\r\n+            String service = url.getServiceKey();\r\n+            Response<List<HealthService>> result = getHealthServices(service, -1, buildWatchTimeout(url));\r\n+            if (result == null || result.getValue() == null || result.getValue().isEmpty()) {\r\n+                return new ArrayList<>();\r\n+            } else {\r\n+                return convert(result.getValue(), url);\r\n+            }\r\n+        } catch (Throwable e) {\r\n+            throw new RpcException(\"Failed to lookup \" + url + \" from consul \" + getUrl() + \", cause: \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        return client.getAgentSelf() != null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        super.destroy();\r\n+        notifierExecutor.shutdown();\r\n+        ttlConsulCheckExecutor.shutdown();\r\n+    }\r\n+\r\n+    private void checkPass() {\r\n+        for (URL url : getRegistered()) {\r\n+            String checkId = buildId(url);\r\n+            try {\r\n+                if (token == null) {\r\n+                    client.agentCheckPass(\"service:\" + checkId);\r\n+                } else {\r\n+                    client.agentCheckPass(\"service:\" + checkId, null, token);\r\n+                }\r\n+                if (logger.isDebugEnabled()) {\r\n+                    logger.debug(\"check pass for url: \" + url + \" with check id: \" + checkId);\r\n+                }\r\n+            } catch (Throwable t) {\r\n+                logger.warn(\"fail to check pass for url: \" + url + \", check id is: \" + checkId, t);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private Response<List<HealthService>> getHealthServices(String service, long index, int watchTimeout) {\r\n+        HealthServicesRequest request = HealthServicesRequest.newBuilder()\r\n+                .setTag(SERVICE_TAG)\r\n+                .setQueryParams(new QueryParams(watchTimeout, index))\r\n+                .setPassing(true)\r\n+                .setToken(token)\r\n+                .build();\r\n+        return client.getHealthServices(service, request);\r\n+    }\r\n+\r\n+    private Response<Map<String, List<String>>> getAllServices(long index, int watchTimeout) {\r\n+        CatalogServicesRequest request = CatalogServicesRequest.newBuilder()\r\n+                .setQueryParams(new QueryParams(watchTimeout, index))\r\n+                .setToken(token)\r\n+                .build();\r\n+        return client.getCatalogServices(request);\r\n+    }\r\n+\r\n+    private List<HealthService> getHealthServices(Map<String, List<String>> services) {\r\n+        return services.entrySet().stream()\r\n+                .filter(s -> s.getValue().contains(SERVICE_TAG))\r\n+                .map(s -> getHealthServices(s.getKey(), -1, -1).getValue())\r\n+                .flatMap(Collection::stream)\r\n+                .collect(Collectors.toList());\r\n+    }\r\n+\r\n+\r\n+    private boolean isConsumerSide(URL url) {\r\n+        return url.getProtocol().equals(CONSUMER_PROTOCOL);\r\n+    }\r\n+\r\n+    private boolean isProviderSide(URL url) {\r\n+        return url.getProtocol().equals(PROVIDER_PROTOCOL);\r\n+    }\r\n+\r\n+    private List<URL> convert(List<HealthService> services, URL consumerURL) {\r\n+        if (CollectionUtils.isEmpty(services)) {\r\n+            return emptyURL(consumerURL);\r\n+        }\r\n+        return services.stream()\r\n+                .map(HealthService::getService)\r\n+                .filter(Objects::nonNull)\r\n+                .map(HealthService.Service::getMeta)\r\n+                .filter(m -> m != null && m.containsKey(URL_META_KEY))\r\n+                .map(m -> m.get(URL_META_KEY))\r\n+                .map(URL::valueOf)\r\n+                .filter(url -> UrlUtils.isMatch(consumerURL, url))\r\n+                .collect(Collectors.toList());\r\n+    }\r\n+\r\n+    private List<URL> emptyURL(URL consumerURL) {\r\n+        // No Category Parameter\r\n+        URL empty = URLBuilder.from(consumerURL)\r\n+                .setProtocol(EMPTY_PROTOCOL)\r\n+                .removeParameter(CATEGORY_KEY)\r\n+                .build();\r\n+        List<URL> result = new ArrayList<URL>();\r\n+        result.add(empty);\r\n+        return result;\r\n+    }\r\n+\r\n+    private NewService buildService(URL url) {\r\n+        NewService service = new NewService();\r\n+        service.setAddress(url.getHost());\r\n+        service.setPort(url.getPort());\r\n+        service.setId(buildId(url));\r\n+        service.setName(url.getServiceInterface());\r\n+        service.setCheck(buildCheck(url));\r\n+        service.setTags(buildTags(url));\r\n+        service.setMeta(Collections.singletonMap(URL_META_KEY, url.toFullString()));\r\n+        return service;\r\n+    }\r\n+\r\n+    private List<String> buildTags(URL url) {\r\n+        Map<String, String> params = url.getParameters();\r\n+        List<String> tags = params.entrySet().stream()\r\n+                .map(k -> k.getKey() + \"=\" + k.getValue())\r\n+                .collect(Collectors.toList());\r\n+        tags.add(SERVICE_TAG);\r\n+        return tags;\r\n+    }\r\n+\r\n+    private String buildId(URL url) {\r\n+        // let's simply use url's hashcode to generate unique service id for now\r\n+        return Integer.toHexString(url.hashCode());\r\n+    }\r\n+\r\n+    private NewService.Check buildCheck(URL url) {\r\n+        NewService.Check check = new NewService.Check();\r\n+        check.setTtl((checkPassInterval / 1000) + \"s\");\r\n+        check.setDeregisterCriticalServiceAfter(url.getParameter(DEREGISTER_AFTER, DEFAULT_DEREGISTER_TIME));\r\n+        return check;\r\n+    }\r\n+\r\n+    private int buildWatchTimeout(URL url) {\r\n+        return url.getParameter(WATCH_TIMEOUT, DEFAULT_WATCH_TIMEOUT) / 1000;\r\n+    }\r\n+\r\n+    private class ConsulNotifier implements Runnable {\r\n+        private URL url;\r\n+        private long consulIndex;\r\n+        private boolean running;\r\n+\r\n+        ConsulNotifier(URL url, long consulIndex) {\r\n+            this.url = url;\r\n+            this.consulIndex = consulIndex;\r\n+            this.running = true;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void run() {\r\n+            while (this.running) {\r\n+                if (ANY_VALUE.equals(url.getServiceInterface())) {\r\n+                    processServices();\r\n+                } else {\r\n+                    processService();\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        private void processService() {\r\n+            String service = url.getServiceKey();\r\n+            Response<List<HealthService>> response = getHealthServices(service, consulIndex, buildWatchTimeout(url));\r\n+            Long currentIndex = response.getConsulIndex();\r\n+            if (currentIndex != null && currentIndex > consulIndex) {\r\n+                consulIndex = currentIndex;\r\n+                List<HealthService> services = response.getValue();\r\n+                List<URL> urls = convert(services, url);\r\n+                for (NotifyListener listener : getSubscribed().get(url)) {\r\n+                    doNotify(url, listener, urls);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        private void processServices() {\r\n+            Response<Map<String, List<String>>> response = getAllServices(consulIndex, buildWatchTimeout(url));\r\n+            Long currentIndex = response.getConsulIndex();\r\n+            if (currentIndex != null && currentIndex > consulIndex) {\r\n+                consulIndex = currentIndex;\r\n+                List<HealthService> services = getHealthServices(response.getValue());\r\n+                List<URL> urls = convert(services, url);\r\n+                for (NotifyListener listener : getSubscribed().get(url)) {\r\n+                    doNotify(url, listener, urls);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        void stop() {\r\n+            this.running = false;\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/consul/ConsulRegistryFactory.java", "source2": "org/apache/dubbo/registry/consul/ConsulRegistryFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,32 +1,32 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.registry.consul;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.support.AbstractRegistryFactory;\n-\n-/**\n- * registry center factory implementation for consul\n- */\n-public class ConsulRegistryFactory extends AbstractRegistryFactory {\n-    @Override\n-    protected Registry createRegistry(URL url) {\n-        return new ConsulRegistry(url);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.registry.consul;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.support.AbstractRegistryFactory;\r\n+\r\n+/**\r\n+ * registry center factory implementation for consul\r\n+ */\r\n+public class ConsulRegistryFactory extends AbstractRegistryFactory {\r\n+    @Override\r\n+    protected Registry createRegistry(URL url) {\r\n+        return new ConsulRegistry(url);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/consul/ConsulServiceDiscovery.java", "source2": "org/apache/dubbo/registry/consul/ConsulServiceDiscovery.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,481 +1,481 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.consul;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.NamedThreadFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.event.EventListener;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\n-import org.apache.dubbo.registry.client.DefaultServiceInstance;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\n-import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\n-\n-import com.ecwid.consul.v1.ConsistencyMode;\n-import com.ecwid.consul.v1.ConsulClient;\n-import com.ecwid.consul.v1.QueryParams;\n-import com.ecwid.consul.v1.Response;\n-import com.ecwid.consul.v1.agent.model.NewService;\n-import com.ecwid.consul.v1.catalog.CatalogServicesRequest;\n-import com.ecwid.consul.v1.health.HealthServicesRequest;\n-import com.ecwid.consul.v1.health.model.HealthService;\n-\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.Base64;\n-import java.util.HashMap;\n-import java.util.LinkedHashMap;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.Executors;\n-import java.util.concurrent.ScheduledExecutorService;\n-import java.util.concurrent.ScheduledFuture;\n-import java.util.concurrent.TimeUnit;\n-import java.util.stream.Collectors;\n-\n-import static java.util.concurrent.Executors.newCachedThreadPool;\n-import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SEPARATOR_CHAR;\n-import static org.apache.dubbo.common.constants.CommonConstants.SEMICOLON_SPLIT_PATTERN;\n-import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.CHECK_PASS_INTERVAL;\n-import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEFAULT_CHECK_PASS_INTERVAL;\n-import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEFAULT_DEREGISTER_TIME;\n-import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEFAULT_PORT;\n-import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEFAULT_WATCH_TIMEOUT;\n-import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEREGISTER_AFTER;\n-import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.WATCH_TIMEOUT;\n-import static org.apache.dubbo.registry.consul.ConsulParameter.ACL_TOKEN;\n-import static org.apache.dubbo.registry.consul.ConsulParameter.CONSISTENCY_MODE;\n-import static org.apache.dubbo.registry.consul.ConsulParameter.DEFAULT_ZONE_METADATA_NAME;\n-import static org.apache.dubbo.registry.consul.ConsulParameter.INSTANCE_GROUP;\n-import static org.apache.dubbo.registry.consul.ConsulParameter.INSTANCE_ZONE;\n-import static org.apache.dubbo.registry.consul.ConsulParameter.TAGS;\n-\n-/**\n- * 2019-07-31\n- */\n-public class ConsulServiceDiscovery extends AbstractServiceDiscovery implements EventListener<ServiceInstancesChangedEvent> {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(ConsulServiceDiscovery.class);\n-\n-    private static final String QUERY_TAG = \"consul_query_tag\";\n-    private static final String REGISTER_TAG = \"consul_register_tag\";\n-\n-    private List<String> registeringTags = new ArrayList<>();\n-    private String tag;\n-    private ConsulClient client;\n-    private ExecutorService notifierExecutor = newCachedThreadPool(\n-            new NamedThreadFactory(\"dubbo-service-discovery-consul-notifier\", true));\n-    private Map<String, ConsulNotifier> notifiers = new ConcurrentHashMap<>();\n-    private TtlScheduler ttlScheduler;\n-    private long checkPassInterval;\n-    private URL url;\n-\n-    private String aclToken;\n-\n-    private List<String> tags;\n-\n-    private ConsistencyMode consistencyMode;\n-\n-    private String defaultZoneMetadataName;\n-\n-    /**\n-     * Service instance zone.\n-     */\n-    private String instanceZone;\n-\n-    /**\n-     * Service instance group.\n-     */\n-    private String instanceGroup;\n-\n-\n-    @Override\n-    public void onEvent(ServiceInstancesChangedEvent event) {\n-\n-    }\n-\n-    @Override\n-    public void initialize(URL registryURL) throws Exception {\n-        this.url = registryURL;\n-        String host = url.getHost();\n-        int port = url.getPort() != 0 ? url.getPort() : DEFAULT_PORT;\n-        checkPassInterval = url.getParameter(CHECK_PASS_INTERVAL, DEFAULT_CHECK_PASS_INTERVAL);\n-        client = new ConsulClient(host, port);\n-        ttlScheduler = new TtlScheduler(checkPassInterval, client);\n-        this.tag = registryURL.getParameter(QUERY_TAG);\n-        this.registeringTags.addAll(getRegisteringTags(url));\n-        this.aclToken = ACL_TOKEN.getValue(registryURL);\n-        this.tags = getTags(registryURL);\n-        this.consistencyMode = getConsistencyMode(registryURL);\n-        this.defaultZoneMetadataName = DEFAULT_ZONE_METADATA_NAME.getValue(registryURL);\n-        this.instanceZone = INSTANCE_ZONE.getValue(registryURL);\n-        this.instanceGroup = INSTANCE_GROUP.getValue(registryURL);\n-    }\n-\n-    /**\n-     * Get the {@link ConsistencyMode}\n-     *\n-     * @param registryURL the {@link URL} of registry\n-     * @return non-null, {@link ConsistencyMode#DEFAULT} as default\n-     * @sine 2.7.8\n-     */\n-    private ConsistencyMode getConsistencyMode(URL registryURL) {\n-        String value = CONSISTENCY_MODE.getValue(registryURL);\n-        if (StringUtils.isNotEmpty(value)) {\n-            return ConsistencyMode.valueOf(value);\n-        }\n-        return ConsistencyMode.DEFAULT;\n-    }\n-\n-    /**\n-     * Get the \"tags\" from the {@link URL} of registry\n-     *\n-     * @param registryURL the {@link URL} of registry\n-     * @return non-null\n-     * @sine 2.7.8\n-     */\n-    private List<String> getTags(URL registryURL) {\n-        String value = TAGS.getValue(registryURL);\n-        return StringUtils.splitToList(value, COMMA_SEPARATOR_CHAR);\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return url;\n-    }\n-\n-    private List<String> getRegisteringTags(URL url) {\n-        List<String> tags = new ArrayList<>();\n-        String rawTag = url.getParameter(REGISTER_TAG);\n-        if (StringUtils.isNotEmpty(rawTag)) {\n-            tags.addAll(Arrays.asList(SEMICOLON_SPLIT_PATTERN.split(rawTag)));\n-        }\n-        return tags;\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        notifiers.forEach((_k, notifier) -> {\n-            if (notifier != null) {\n-                notifier.stop();\n-            }\n-        });\n-        notifiers.clear();\n-        notifierExecutor.shutdownNow();\n-        ttlScheduler.stop();\n-    }\n-\n-    @Override\n-    public void doRegister(ServiceInstance serviceInstance) {\n-        NewService consulService = buildService(serviceInstance);\n-        ttlScheduler.add(consulService.getId());\n-        client.agentServiceRegister(consulService, aclToken);\n-    }\n-\n-    @Override\n-    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws NullPointerException, IllegalArgumentException {\n-        Set<String> serviceNames = listener.getServiceNames();\n-        for (String serviceName : serviceNames) {\n-            ConsulNotifier notifier = notifiers.get(serviceName);\n-            if (notifier == null) {\n-                Response<List<HealthService>> response = getHealthServices(serviceName, -1, buildWatchTimeout());\n-                Long consulIndex = response.getConsulIndex();\n-                notifier = new ConsulNotifier(serviceName, consulIndex);\n-            }\n-            notifierExecutor.execute(notifier);\n-        }\n-    }\n-\n-    @Override\n-    public void doUpdate(ServiceInstance serviceInstance) {\n-        // TODO\n-        // client.catalogRegister(buildCatalogService(serviceInstance));\n-    }\n-\n-    @Override\n-    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\n-        String id = buildId(serviceInstance);\n-        ttlScheduler.remove(id);\n-        client.agentServiceDeregister(id, aclToken);\n-    }\n-\n-    @Override\n-    public Set<String> getServices() {\n-        CatalogServicesRequest request = CatalogServicesRequest.newBuilder()\n-                .setQueryParams(QueryParams.DEFAULT)\n-                .setToken(aclToken)\n-                .build();\n-        return this.client.getCatalogServices(request).getValue().keySet();\n-    }\n-\n-    @Override\n-    public List<ServiceInstance> getInstances(String serviceName) throws NullPointerException {\n-        Response<List<HealthService>> response = getHealthServices(serviceName, -1, buildWatchTimeout());\n-        Long consulIndex = response.getConsulIndex();\n-        ConsulNotifier notifier = notifiers.get(serviceName);\n-        if (notifier == null) {\n-            notifier = new ConsulNotifier(serviceName, consulIndex);\n-            notifiers.put(serviceName, notifier);\n-        }\n-        return convert(response.getValue());\n-    }\n-\n-    private List<ServiceInstance> convert(List<HealthService> services) {\n-        return services.stream()\n-                .map(HealthService::getService)\n-                .map(service -> {\n-                    ServiceInstance instance = new DefaultServiceInstance(\n-                            service.getId(),\n-                            service.getService(),\n-                            service.getAddress(),\n-                            service.getPort());\n-                    instance.getMetadata().putAll(getMetadata(service));\n-                    return instance;\n-                })\n-                .collect(Collectors.toList());\n-    }\n-\n-    private Response<List<HealthService>> getHealthServices(String service, long index, int watchTimeout) {\n-        HealthServicesRequest request = HealthServicesRequest.newBuilder()\n-                .setTag(tag)\n-                .setQueryParams(new QueryParams(watchTimeout, index))\n-                .setPassing(true)\n-                .build();\n-        return client.getHealthServices(service, request);\n-    }\n-\n-    private Map<String, String> getMetadata(HealthService.Service service) {\n-        Map<String, String> metadata = service.getMeta();\n-        metadata = decodeMetadata(metadata);\n-        if (CollectionUtils.isEmptyMap(metadata)) {\n-            metadata = getScCompatibleMetadata(service.getTags());\n-        }\n-        return metadata;\n-    }\n-\n-    private Map<String, String> getScCompatibleMetadata(List<String> tags) {\n-        LinkedHashMap<String, String> metadata = new LinkedHashMap<>();\n-        if (tags != null) {\n-            for (String tag : tags) {\n-                String[] parts = StringUtils.delimitedListToStringArray(tag, \"=\");\n-                switch (parts.length) {\n-                    case 0:\n-                        break;\n-                    case 1:\n-                        metadata.put(parts[0], parts[0]);\n-                        break;\n-                    case 2:\n-                        metadata.put(parts[0], parts[1]);\n-                        break;\n-                    default:\n-                        String[] end = Arrays.copyOfRange(parts, 1, parts.length);\n-                        metadata.put(parts[0], StringUtils.arrayToDelimitedString(end, \"=\"));\n-                        break;\n-                }\n-\n-            }\n-        }\n-\n-        return metadata;\n-    }\n-\n-    private NewService buildService(ServiceInstance serviceInstance) {\n-        NewService service = new NewService();\n-        service.setAddress(serviceInstance.getHost());\n-        service.setPort(serviceInstance.getPort());\n-        service.setId(buildId(serviceInstance));\n-        service.setName(serviceInstance.getServiceName());\n-        service.setCheck(buildCheck(serviceInstance));\n-        service.setTags(buildTags(serviceInstance));\n-        return service;\n-    }\n-\n-    private String buildId(ServiceInstance serviceInstance) {\n-        return Integer.toHexString(serviceInstance.hashCode());\n-    }\n-\n-    private List<String> buildTags(ServiceInstance serviceInstance) {\n-        List<String> tags = new LinkedList<>(this.tags);\n-\n-        if (StringUtils.isNotEmpty(instanceZone)) {\n-            tags.add(defaultZoneMetadataName + \"=\" + instanceZone);\n-        }\n-\n-        if (StringUtils.isNotEmpty(instanceGroup)) {\n-            tags.add(\"group=\" + instanceGroup);\n-        }\n-\n-        Map<String, String> params = serviceInstance.getMetadata();\n-        params.keySet().stream()\n-                .map(k -> k + \"=\" + params.get(k))\n-                .forEach(tags::add);\n-\n-        tags.addAll(registeringTags);\n-        return tags;\n-    }\n-\n-    private Map<String, String> buildMetadata(ServiceInstance serviceInstance) {\n-        Map<String, String> metadata = new LinkedHashMap<>();\n-        metadata.putAll(getScCompatibleMetadata(registeringTags));\n-        if (CollectionUtils.isNotEmptyMap(serviceInstance.getMetadata())) {\n-            metadata.putAll(serviceInstance.getMetadata());\n-        }\n-        metadata = encodeMetadata(metadata);\n-        return metadata;\n-    }\n-\n-    private Map<String, String> encodeMetadata(Map<String, String> metadata) {\n-        if (metadata == null) {\n-            return metadata;\n-        }\n-        Map<String, String> encoded = new HashMap<>(metadata.size());\n-        metadata.forEach((k, v) -> encoded.put(Base64.getEncoder().encodeToString(k.getBytes()), v));\n-        return encoded;\n-    }\n-\n-    private Map<String, String> decodeMetadata(Map<String, String> metadata) {\n-        if (metadata == null) {\n-            return metadata;\n-        }\n-        Map<String, String> decoded = new HashMap<>(metadata.size());\n-        metadata.forEach((k, v) -> decoded.put(new String(Base64.getDecoder().decode(k)), v));\n-        return decoded;\n-    }\n-\n-    private NewService.Check buildCheck(ServiceInstance serviceInstance) {\n-        NewService.Check check = new NewService.Check();\n-        check.setTtl((checkPassInterval / 1000) + \"s\");\n-        String deregister = serviceInstance.getMetadata().get(DEREGISTER_AFTER);\n-        check.setDeregisterCriticalServiceAfter(deregister == null ? DEFAULT_DEREGISTER_TIME : deregister);\n-        return check;\n-    }\n-\n-    private int buildWatchTimeout() {\n-        return url.getParameter(WATCH_TIMEOUT, DEFAULT_WATCH_TIMEOUT) / 1000;\n-    }\n-\n-    private class ConsulNotifier implements Runnable {\n-        private String serviceName;\n-        private long consulIndex;\n-        private boolean running;\n-\n-        ConsulNotifier(String serviceName, long consulIndex) {\n-            this.serviceName = serviceName;\n-            this.consulIndex = consulIndex;\n-            this.running = true;\n-        }\n-\n-        @Override\n-        public void run() {\n-            while (this.running) {\n-                processService();\n-            }\n-        }\n-\n-        private void processService() {\n-            Response<List<HealthService>> response = getHealthServices(serviceName, consulIndex, Integer.MAX_VALUE);\n-            Long currentIndex = response.getConsulIndex();\n-            if (currentIndex != null && currentIndex > consulIndex) {\n-                consulIndex = currentIndex;\n-                List<HealthService> services = response.getValue();\n-                List<ServiceInstance> serviceInstances = convert(services);\n-                dispatchServiceInstancesChangedEvent(serviceName, serviceInstances);\n-            }\n-        }\n-\n-        void stop() {\n-            this.running = false;\n-        }\n-    }\n-\n-    private static class TtlScheduler {\n-\n-        private static final Logger logger = LoggerFactory.getLogger(TtlScheduler.class);\n-\n-        private final Map<String, ScheduledFuture> serviceHeartbeats = new ConcurrentHashMap<>();\n-\n-        private ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();\n-\n-        private long checkInterval;\n-\n-        private ConsulClient client;\n-\n-        public TtlScheduler(long checkInterval, ConsulClient client) {\n-            this.checkInterval = checkInterval;\n-            this.client = client;\n-        }\n-\n-        /**\n-         * Add a service to the checks loop.\n-         *\n-         * @param instanceId instance id\n-         */\n-        public void add(String instanceId) {\n-            ScheduledFuture task = this.scheduler.scheduleAtFixedRate(\n-                    new ConsulHeartbeatTask(instanceId),\n-                    checkInterval / 8,\n-                    checkInterval / 8,\n-                    TimeUnit.MILLISECONDS);\n-            ScheduledFuture previousTask = this.serviceHeartbeats.put(instanceId, task);\n-            if (previousTask != null) {\n-                previousTask.cancel(true);\n-            }\n-        }\n-\n-        public void remove(String instanceId) {\n-            ScheduledFuture task = this.serviceHeartbeats.get(instanceId);\n-            if (task != null) {\n-                task.cancel(true);\n-            }\n-            this.serviceHeartbeats.remove(instanceId);\n-        }\n-\n-        private class ConsulHeartbeatTask implements Runnable {\n-\n-            private String checkId;\n-\n-            ConsulHeartbeatTask(String serviceId) {\n-                this.checkId = serviceId;\n-                if (!this.checkId.startsWith(\"service:\")) {\n-                    this.checkId = \"service:\" + this.checkId;\n-                }\n-            }\n-\n-            @Override\n-            public void run() {\n-                TtlScheduler.this.client.agentCheckPass(this.checkId);\n-                if (logger.isDebugEnabled()) {\n-                    logger.debug(\"Sending consul heartbeat for: \" + this.checkId);\n-                }\n-            }\n-\n-        }\n-\n-        public void stop() {\n-            scheduler.shutdownNow();\n-        }\n-\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.consul;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.NamedThreadFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.event.EventListener;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.DefaultServiceInstance;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\r\n+import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\r\n+\r\n+import com.ecwid.consul.v1.ConsistencyMode;\r\n+import com.ecwid.consul.v1.ConsulClient;\r\n+import com.ecwid.consul.v1.QueryParams;\r\n+import com.ecwid.consul.v1.Response;\r\n+import com.ecwid.consul.v1.agent.model.NewService;\r\n+import com.ecwid.consul.v1.catalog.CatalogServicesRequest;\r\n+import com.ecwid.consul.v1.health.HealthServicesRequest;\r\n+import com.ecwid.consul.v1.health.model.HealthService;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.Base64;\r\n+import java.util.HashMap;\r\n+import java.util.LinkedHashMap;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.Executors;\r\n+import java.util.concurrent.ScheduledExecutorService;\r\n+import java.util.concurrent.ScheduledFuture;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.stream.Collectors;\r\n+\r\n+import static java.util.concurrent.Executors.newCachedThreadPool;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SEPARATOR_CHAR;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SEMICOLON_SPLIT_PATTERN;\r\n+import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.CHECK_PASS_INTERVAL;\r\n+import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEFAULT_CHECK_PASS_INTERVAL;\r\n+import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEFAULT_DEREGISTER_TIME;\r\n+import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEFAULT_PORT;\r\n+import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEFAULT_WATCH_TIMEOUT;\r\n+import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.DEREGISTER_AFTER;\r\n+import static org.apache.dubbo.registry.consul.AbstractConsulRegistry.WATCH_TIMEOUT;\r\n+import static org.apache.dubbo.registry.consul.ConsulParameter.ACL_TOKEN;\r\n+import static org.apache.dubbo.registry.consul.ConsulParameter.CONSISTENCY_MODE;\r\n+import static org.apache.dubbo.registry.consul.ConsulParameter.DEFAULT_ZONE_METADATA_NAME;\r\n+import static org.apache.dubbo.registry.consul.ConsulParameter.INSTANCE_GROUP;\r\n+import static org.apache.dubbo.registry.consul.ConsulParameter.INSTANCE_ZONE;\r\n+import static org.apache.dubbo.registry.consul.ConsulParameter.TAGS;\r\n+\r\n+/**\r\n+ * 2019-07-31\r\n+ */\r\n+public class ConsulServiceDiscovery extends AbstractServiceDiscovery implements EventListener<ServiceInstancesChangedEvent> {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(ConsulServiceDiscovery.class);\r\n+\r\n+    private static final String QUERY_TAG = \"consul_query_tag\";\r\n+    private static final String REGISTER_TAG = \"consul_register_tag\";\r\n+\r\n+    private List<String> registeringTags = new ArrayList<>();\r\n+    private String tag;\r\n+    private ConsulClient client;\r\n+    private ExecutorService notifierExecutor = newCachedThreadPool(\r\n+            new NamedThreadFactory(\"dubbo-service-discovery-consul-notifier\", true));\r\n+    private Map<String, ConsulNotifier> notifiers = new ConcurrentHashMap<>();\r\n+    private TtlScheduler ttlScheduler;\r\n+    private long checkPassInterval;\r\n+    private URL url;\r\n+\r\n+    private String aclToken;\r\n+\r\n+    private List<String> tags;\r\n+\r\n+    private ConsistencyMode consistencyMode;\r\n+\r\n+    private String defaultZoneMetadataName;\r\n+\r\n+    /**\r\n+     * Service instance zone.\r\n+     */\r\n+    private String instanceZone;\r\n+\r\n+    /**\r\n+     * Service instance group.\r\n+     */\r\n+    private String instanceGroup;\r\n+\r\n+\r\n+    @Override\r\n+    public void onEvent(ServiceInstancesChangedEvent event) {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public void initialize(URL registryURL) throws Exception {\r\n+        this.url = registryURL;\r\n+        String host = url.getHost();\r\n+        int port = url.getPort() != 0 ? url.getPort() : DEFAULT_PORT;\r\n+        checkPassInterval = url.getParameter(CHECK_PASS_INTERVAL, DEFAULT_CHECK_PASS_INTERVAL);\r\n+        client = new ConsulClient(host, port);\r\n+        ttlScheduler = new TtlScheduler(checkPassInterval, client);\r\n+        this.tag = registryURL.getParameter(QUERY_TAG);\r\n+        this.registeringTags.addAll(getRegisteringTags(url));\r\n+        this.aclToken = ACL_TOKEN.getValue(registryURL);\r\n+        this.tags = getTags(registryURL);\r\n+        this.consistencyMode = getConsistencyMode(registryURL);\r\n+        this.defaultZoneMetadataName = DEFAULT_ZONE_METADATA_NAME.getValue(registryURL);\r\n+        this.instanceZone = INSTANCE_ZONE.getValue(registryURL);\r\n+        this.instanceGroup = INSTANCE_GROUP.getValue(registryURL);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the {@link ConsistencyMode}\r\n+     *\r\n+     * @param registryURL the {@link URL} of registry\r\n+     * @return non-null, {@link ConsistencyMode#DEFAULT} as default\r\n+     * @sine 2.7.8\r\n+     */\r\n+    private ConsistencyMode getConsistencyMode(URL registryURL) {\r\n+        String value = CONSISTENCY_MODE.getValue(registryURL);\r\n+        if (StringUtils.isNotEmpty(value)) {\r\n+            return ConsistencyMode.valueOf(value);\r\n+        }\r\n+        return ConsistencyMode.DEFAULT;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the \"tags\" from the {@link URL} of registry\r\n+     *\r\n+     * @param registryURL the {@link URL} of registry\r\n+     * @return non-null\r\n+     * @sine 2.7.8\r\n+     */\r\n+    private List<String> getTags(URL registryURL) {\r\n+        String value = TAGS.getValue(registryURL);\r\n+        return StringUtils.splitToList(value, COMMA_SEPARATOR_CHAR);\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return url;\r\n+    }\r\n+\r\n+    private List<String> getRegisteringTags(URL url) {\r\n+        List<String> tags = new ArrayList<>();\r\n+        String rawTag = url.getParameter(REGISTER_TAG);\r\n+        if (StringUtils.isNotEmpty(rawTag)) {\r\n+            tags.addAll(Arrays.asList(SEMICOLON_SPLIT_PATTERN.split(rawTag)));\r\n+        }\r\n+        return tags;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        notifiers.forEach((_k, notifier) -> {\r\n+            if (notifier != null) {\r\n+                notifier.stop();\r\n+            }\r\n+        });\r\n+        notifiers.clear();\r\n+        notifierExecutor.shutdownNow();\r\n+        ttlScheduler.stop();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doRegister(ServiceInstance serviceInstance) {\r\n+        NewService consulService = buildService(serviceInstance);\r\n+        ttlScheduler.add(consulService.getId());\r\n+        client.agentServiceRegister(consulService, aclToken);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws NullPointerException, IllegalArgumentException {\r\n+        Set<String> serviceNames = listener.getServiceNames();\r\n+        for (String serviceName : serviceNames) {\r\n+            ConsulNotifier notifier = notifiers.get(serviceName);\r\n+            if (notifier == null) {\r\n+                Response<List<HealthService>> response = getHealthServices(serviceName, -1, buildWatchTimeout());\r\n+                Long consulIndex = response.getConsulIndex();\r\n+                notifier = new ConsulNotifier(serviceName, consulIndex);\r\n+            }\r\n+            notifierExecutor.execute(notifier);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUpdate(ServiceInstance serviceInstance) {\r\n+        // TODO\r\n+        // client.catalogRegister(buildCatalogService(serviceInstance));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\r\n+        String id = buildId(serviceInstance);\r\n+        ttlScheduler.remove(id);\r\n+        client.agentServiceDeregister(id, aclToken);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<String> getServices() {\r\n+        CatalogServicesRequest request = CatalogServicesRequest.newBuilder()\r\n+                .setQueryParams(QueryParams.DEFAULT)\r\n+                .setToken(aclToken)\r\n+                .build();\r\n+        return this.client.getCatalogServices(request).getValue().keySet();\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<ServiceInstance> getInstances(String serviceName) throws NullPointerException {\r\n+        Response<List<HealthService>> response = getHealthServices(serviceName, -1, buildWatchTimeout());\r\n+        Long consulIndex = response.getConsulIndex();\r\n+        ConsulNotifier notifier = notifiers.get(serviceName);\r\n+        if (notifier == null) {\r\n+            notifier = new ConsulNotifier(serviceName, consulIndex);\r\n+            notifiers.put(serviceName, notifier);\r\n+        }\r\n+        return convert(response.getValue());\r\n+    }\r\n+\r\n+    private List<ServiceInstance> convert(List<HealthService> services) {\r\n+        return services.stream()\r\n+                .map(HealthService::getService)\r\n+                .map(service -> {\r\n+                    ServiceInstance instance = new DefaultServiceInstance(\r\n+                            service.getId(),\r\n+                            service.getService(),\r\n+                            service.getAddress(),\r\n+                            service.getPort());\r\n+                    instance.getMetadata().putAll(getMetadata(service));\r\n+                    return instance;\r\n+                })\r\n+                .collect(Collectors.toList());\r\n+    }\r\n+\r\n+    private Response<List<HealthService>> getHealthServices(String service, long index, int watchTimeout) {\r\n+        HealthServicesRequest request = HealthServicesRequest.newBuilder()\r\n+                .setTag(tag)\r\n+                .setQueryParams(new QueryParams(watchTimeout, index))\r\n+                .setPassing(true)\r\n+                .build();\r\n+        return client.getHealthServices(service, request);\r\n+    }\r\n+\r\n+    private Map<String, String> getMetadata(HealthService.Service service) {\r\n+        Map<String, String> metadata = service.getMeta();\r\n+        metadata = decodeMetadata(metadata);\r\n+        if (CollectionUtils.isEmptyMap(metadata)) {\r\n+            metadata = getScCompatibleMetadata(service.getTags());\r\n+        }\r\n+        return metadata;\r\n+    }\r\n+\r\n+    private Map<String, String> getScCompatibleMetadata(List<String> tags) {\r\n+        LinkedHashMap<String, String> metadata = new LinkedHashMap<>();\r\n+        if (tags != null) {\r\n+            for (String tag : tags) {\r\n+                String[] parts = StringUtils.delimitedListToStringArray(tag, \"=\");\r\n+                switch (parts.length) {\r\n+                    case 0:\r\n+                        break;\r\n+                    case 1:\r\n+                        metadata.put(parts[0], parts[0]);\r\n+                        break;\r\n+                    case 2:\r\n+                        metadata.put(parts[0], parts[1]);\r\n+                        break;\r\n+                    default:\r\n+                        String[] end = Arrays.copyOfRange(parts, 1, parts.length);\r\n+                        metadata.put(parts[0], StringUtils.arrayToDelimitedString(end, \"=\"));\r\n+                        break;\r\n+                }\r\n+\r\n+            }\r\n+        }\r\n+\r\n+        return metadata;\r\n+    }\r\n+\r\n+    private NewService buildService(ServiceInstance serviceInstance) {\r\n+        NewService service = new NewService();\r\n+        service.setAddress(serviceInstance.getHost());\r\n+        service.setPort(serviceInstance.getPort());\r\n+        service.setId(buildId(serviceInstance));\r\n+        service.setName(serviceInstance.getServiceName());\r\n+        service.setCheck(buildCheck(serviceInstance));\r\n+        service.setTags(buildTags(serviceInstance));\r\n+        return service;\r\n+    }\r\n+\r\n+    private String buildId(ServiceInstance serviceInstance) {\r\n+        return Integer.toHexString(serviceInstance.hashCode());\r\n+    }\r\n+\r\n+    private List<String> buildTags(ServiceInstance serviceInstance) {\r\n+        List<String> tags = new LinkedList<>(this.tags);\r\n+\r\n+        if (StringUtils.isNotEmpty(instanceZone)) {\r\n+            tags.add(defaultZoneMetadataName + \"=\" + instanceZone);\r\n+        }\r\n+\r\n+        if (StringUtils.isNotEmpty(instanceGroup)) {\r\n+            tags.add(\"group=\" + instanceGroup);\r\n+        }\r\n+\r\n+        Map<String, String> params = serviceInstance.getMetadata();\r\n+        params.keySet().stream()\r\n+                .map(k -> k + \"=\" + params.get(k))\r\n+                .forEach(tags::add);\r\n+\r\n+        tags.addAll(registeringTags);\r\n+        return tags;\r\n+    }\r\n+\r\n+    private Map<String, String> buildMetadata(ServiceInstance serviceInstance) {\r\n+        Map<String, String> metadata = new LinkedHashMap<>();\r\n+        metadata.putAll(getScCompatibleMetadata(registeringTags));\r\n+        if (CollectionUtils.isNotEmptyMap(serviceInstance.getMetadata())) {\r\n+            metadata.putAll(serviceInstance.getMetadata());\r\n+        }\r\n+        metadata = encodeMetadata(metadata);\r\n+        return metadata;\r\n+    }\r\n+\r\n+    private Map<String, String> encodeMetadata(Map<String, String> metadata) {\r\n+        if (metadata == null) {\r\n+            return metadata;\r\n+        }\r\n+        Map<String, String> encoded = new HashMap<>(metadata.size());\r\n+        metadata.forEach((k, v) -> encoded.put(Base64.getEncoder().encodeToString(k.getBytes()), v));\r\n+        return encoded;\r\n+    }\r\n+\r\n+    private Map<String, String> decodeMetadata(Map<String, String> metadata) {\r\n+        if (metadata == null) {\r\n+            return metadata;\r\n+        }\r\n+        Map<String, String> decoded = new HashMap<>(metadata.size());\r\n+        metadata.forEach((k, v) -> decoded.put(new String(Base64.getDecoder().decode(k)), v));\r\n+        return decoded;\r\n+    }\r\n+\r\n+    private NewService.Check buildCheck(ServiceInstance serviceInstance) {\r\n+        NewService.Check check = new NewService.Check();\r\n+        check.setTtl((checkPassInterval / 1000) + \"s\");\r\n+        String deregister = serviceInstance.getMetadata().get(DEREGISTER_AFTER);\r\n+        check.setDeregisterCriticalServiceAfter(deregister == null ? DEFAULT_DEREGISTER_TIME : deregister);\r\n+        return check;\r\n+    }\r\n+\r\n+    private int buildWatchTimeout() {\r\n+        return url.getParameter(WATCH_TIMEOUT, DEFAULT_WATCH_TIMEOUT) / 1000;\r\n+    }\r\n+\r\n+    private class ConsulNotifier implements Runnable {\r\n+        private String serviceName;\r\n+        private long consulIndex;\r\n+        private boolean running;\r\n+\r\n+        ConsulNotifier(String serviceName, long consulIndex) {\r\n+            this.serviceName = serviceName;\r\n+            this.consulIndex = consulIndex;\r\n+            this.running = true;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void run() {\r\n+            while (this.running) {\r\n+                processService();\r\n+            }\r\n+        }\r\n+\r\n+        private void processService() {\r\n+            Response<List<HealthService>> response = getHealthServices(serviceName, consulIndex, Integer.MAX_VALUE);\r\n+            Long currentIndex = response.getConsulIndex();\r\n+            if (currentIndex != null && currentIndex > consulIndex) {\r\n+                consulIndex = currentIndex;\r\n+                List<HealthService> services = response.getValue();\r\n+                List<ServiceInstance> serviceInstances = convert(services);\r\n+                dispatchServiceInstancesChangedEvent(serviceName, serviceInstances);\r\n+            }\r\n+        }\r\n+\r\n+        void stop() {\r\n+            this.running = false;\r\n+        }\r\n+    }\r\n+\r\n+    private static class TtlScheduler {\r\n+\r\n+        private static final Logger logger = LoggerFactory.getLogger(TtlScheduler.class);\r\n+\r\n+        private final Map<String, ScheduledFuture> serviceHeartbeats = new ConcurrentHashMap<>();\r\n+\r\n+        private ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();\r\n+\r\n+        private long checkInterval;\r\n+\r\n+        private ConsulClient client;\r\n+\r\n+        public TtlScheduler(long checkInterval, ConsulClient client) {\r\n+            this.checkInterval = checkInterval;\r\n+            this.client = client;\r\n+        }\r\n+\r\n+        /**\r\n+         * Add a service to the checks loop.\r\n+         *\r\n+         * @param instanceId instance id\r\n+         */\r\n+        public void add(String instanceId) {\r\n+            ScheduledFuture task = this.scheduler.scheduleAtFixedRate(\r\n+                    new ConsulHeartbeatTask(instanceId),\r\n+                    checkInterval / 8,\r\n+                    checkInterval / 8,\r\n+                    TimeUnit.MILLISECONDS);\r\n+            ScheduledFuture previousTask = this.serviceHeartbeats.put(instanceId, task);\r\n+            if (previousTask != null) {\r\n+                previousTask.cancel(true);\r\n+            }\r\n+        }\r\n+\r\n+        public void remove(String instanceId) {\r\n+            ScheduledFuture task = this.serviceHeartbeats.get(instanceId);\r\n+            if (task != null) {\r\n+                task.cancel(true);\r\n+            }\r\n+            this.serviceHeartbeats.remove(instanceId);\r\n+        }\r\n+\r\n+        private class ConsulHeartbeatTask implements Runnable {\r\n+\r\n+            private String checkId;\r\n+\r\n+            ConsulHeartbeatTask(String serviceId) {\r\n+                this.checkId = serviceId;\r\n+                if (!this.checkId.startsWith(\"service:\")) {\r\n+                    this.checkId = \"service:\" + this.checkId;\r\n+                }\r\n+            }\r\n+\r\n+            @Override\r\n+            public void run() {\r\n+                TtlScheduler.this.client.agentCheckPass(this.checkId);\r\n+                if (logger.isDebugEnabled()) {\r\n+                    logger.debug(\"Sending consul heartbeat for: \" + this.checkId);\r\n+                }\r\n+            }\r\n+\r\n+        }\r\n+\r\n+        public void stop() {\r\n+            scheduler.shutdownNow();\r\n+        }\r\n+\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/consul/ConsulServiceDiscoveryFactory.java", "source2": "org/apache/dubbo/registry/consul/ConsulServiceDiscoveryFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,30 +1,30 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.consul;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-\n-public class ConsulServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\n-\n-    @Override\n-    protected ServiceDiscovery createDiscovery(URL registryURL) {\n-        return new ConsulServiceDiscovery();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.consul;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+\r\n+public class ConsulServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\r\n+\r\n+    @Override\r\n+    protected ServiceDiscovery createDiscovery(URL registryURL) {\r\n+        return new ConsulServiceDiscovery();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/consul/ConsulServiceDiscoveryFactory.java~HEAD", "source2": "org/apache/dubbo/registry/consul/ConsulServiceDiscoveryFactory.java~HEAD", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,30 +1,30 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.consul;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-\n-public class ConsulServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\n-\n-    @Override\n-    protected ServiceDiscovery createDiscovery(URL registryURL) {\n-        return new ConsulServiceDiscovery();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.consul;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+\r\n+public class ConsulServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\r\n+\r\n+    @Override\r\n+    protected ServiceDiscovery createDiscovery(URL registryURL) {\r\n+        return new ConsulServiceDiscovery();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/consul/ConsulServiceDiscoveryFactory.java~dubbo-master", "source2": "org/apache/dubbo/registry/consul/ConsulServiceDiscoveryFactory.java~dubbo-master", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,30 +1,30 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.consul;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-\n-public class ConsulServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\n-\n-    @Override\n-    protected ServiceDiscovery createDiscovery(URL registryURL) {\n-        return new ConsulServiceDiscovery();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.consul;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+\r\n+public class ConsulServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\r\n+\r\n+    @Override\r\n+    protected ServiceDiscovery createDiscovery(URL registryURL) {\r\n+        return new ConsulServiceDiscovery();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/etcd/EtcdRegistry.java", "source2": "org/apache/dubbo/registry/etcd/EtcdRegistry.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,355 +1,355 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.etcd;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.ConcurrentHashSet;\n-import org.apache.dubbo.common.utils.UrlUtils;\n-import org.apache.dubbo.registry.NotifyListener;\n-import org.apache.dubbo.registry.support.FailbackRegistry;\n-import org.apache.dubbo.remoting.etcd.ChildListener;\n-import org.apache.dubbo.remoting.etcd.Constants;\n-import org.apache.dubbo.remoting.etcd.EtcdClient;\n-import org.apache.dubbo.remoting.etcd.EtcdTransporter;\n-import org.apache.dubbo.remoting.etcd.StateListener;\n-import org.apache.dubbo.remoting.etcd.option.OptionUtil;\n-import org.apache.dubbo.rpc.RpcException;\n-\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.List;\n-import java.util.Optional;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\n-import static org.apache.dubbo.common.constants.RegistryConstants.CATEGORY_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.CONFIGURATORS_CATEGORY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.CONSUMERS_CATEGORY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.DEFAULT_CATEGORY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.DYNAMIC_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.EMPTY_PROTOCOL;\n-import static org.apache.dubbo.common.constants.RegistryConstants.PROVIDERS_CATEGORY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.ROUTERS_CATEGORY;\n-import static org.apache.dubbo.remoting.Constants.CHECK_KEY;\n-\n-\n-/**\n- * Support for ectd3 registry.\n- */\n-public class EtcdRegistry extends FailbackRegistry {\n-\n-    private final static int DEFAULT_ETCD_PORT = 2379;\n-\n-    private final static String DEFAULT_ROOT = \"dubbo\";\n-\n-    private final String root;\n-\n-    private final Set<String> anyServices = new ConcurrentHashSet<>();\n-\n-    private final ConcurrentMap<URL, ConcurrentMap<NotifyListener, ChildListener>> etcdListeners = new ConcurrentHashMap<>();\n-    private final EtcdClient etcdClient;\n-\n-    public EtcdRegistry(URL url, EtcdTransporter etcdTransporter) {\n-        super(url);\n-        if (url.isAnyHost()) {\n-            throw new IllegalStateException(\"registry address is invalid, actual: '\" + url.getHost() + \"'\");\n-        }\n-        String group = url.getParameter(GROUP_KEY, DEFAULT_ROOT);\n-        if (!group.startsWith(PATH_SEPARATOR)) {\n-            group = PATH_SEPARATOR + group;\n-        }\n-        this.root = group;\n-        etcdClient = etcdTransporter.connect(url);\n-\n-        etcdClient.addStateListener(state -> {\n-            if (state == StateListener.CONNECTED) {\n-                try {\n-                    recover();\n-                } catch (Exception e) {\n-                    logger.error(e.getMessage(), e);\n-                }\n-            }\n-        });\n-    }\n-\n-    protected static String appendDefaultPort(String address) {\n-        if (address != null && address.length() > 0) {\n-            int i = address.indexOf(':');\n-            if (i < 0) {\n-                return address + \":\" + DEFAULT_ETCD_PORT;\n-            } else if (Integer.parseInt(address.substring(i + 1)) == 0) {\n-                return address.substring(0, i + 1) + DEFAULT_ETCD_PORT;\n-            }\n-        }\n-        return address;\n-    }\n-\n-    @Override\n-    public void doRegister(URL url) {\n-        try {\n-            String path = toUrlPath(url);\n-            if (url.getParameter(DYNAMIC_KEY, true)) {\n-                etcdClient.createEphemeral(path);\n-                return;\n-            }\n-            etcdClient.create(path);\n-        } catch (Throwable e) {\n-            throw new RpcException(\"Failed to register \" + url + \" to etcd \" + getUrl()\n-                    + \", cause: \" + (OptionUtil.isProtocolError(e)\n-                    ? \"etcd3 registry may not be supported yet or etcd3 registry is not available.\"\n-                    : e.getMessage()), e);\n-        }\n-    }\n-\n-    @Override\n-    public void doUnregister(URL url) {\n-        try {\n-            String path = toUrlPath(url);\n-            etcdClient.delete(path);\n-        } catch (Throwable e) {\n-            throw new RpcException(\"Failed to unregister \" + url + \" to etcd \" + getUrl() + \", cause: \" + e.getMessage(), e);\n-        }\n-    }\n-\n-    @Override\n-    public void doSubscribe(URL url, NotifyListener listener) {\n-        try {\n-            if (ANY_VALUE.equals(url.getServiceInterface())) {\n-                String root = toRootPath();\n-\n-                /*\n-                 *  if we are interested in all interfaces,\n-                 *  find out the current container or create one for the url, put or get only once.\n-                 */\n-                ConcurrentMap<NotifyListener, ChildListener> listeners =\n-                        Optional.ofNullable(etcdListeners.get(url))\n-                                .orElseGet(() -> {\n-                                    ConcurrentMap<NotifyListener, ChildListener> container, prev;\n-                                    prev = etcdListeners.putIfAbsent(url, container = new ConcurrentHashMap<>());\n-                                    return prev != null ? prev : container;\n-                                });\n-\n-                /*\n-                 *  if we have no interface watcher listener,\n-                 *  find the current listener or create one for the current root, put or get only once.\n-                 */\n-                ChildListener interfaceListener =\n-                        Optional.ofNullable(listeners.get(listener))\n-                                .orElseGet(() -> {\n-                                    ChildListener childListener, prev;\n-                                    prev = listeners.putIfAbsent(listener, childListener = (parentPath, currentChildren) -> {\n-                                        /*\n-                                         *  because etcd3 does not support direct children watch events,\n-                                         *  we should filter not interface events. if we watch /dubbo\n-                                         *  and /dubbo/interface, when we put a key-value pair {/dubbo/interface/hello hello},\n-                                         *  we will got events in watching path /dubbo.\n-                                         */\n-                                        for (String child : currentChildren) {\n-                                            child = URL.decode(child);\n-                                            if (!anyServices.contains(child)) {\n-                                                anyServices.add(child);\n-                                                /*\n-                                                 *  if new interface event arrived, we watch their direct children,\n-                                                 *  eg: /dubbo/interface, /dubbo/interface and so on.\n-                                                 */\n-                                                subscribe(url.setPath(child).addParameters(INTERFACE_KEY, child,\n-                                                        CHECK_KEY, String.valueOf(false)), listener);\n-                                            }\n-                                        }\n-                                    });\n-                                    return prev != null ? prev : childListener;\n-                                });\n-\n-                etcdClient.create(root);\n-                /*\n-                 * at the first time, we want to pull already interface and then watch their direct children,\n-                 *  eg: /dubbo/interface, /dubbo/interface and so on.\n-                 */\n-                List<String> services = etcdClient.addChildListener(root, interfaceListener);\n-                for (String service : services) {\n-                    service = URL.decode(service);\n-                    anyServices.add(service);\n-                    subscribe(url.setPath(service).addParameters(INTERFACE_KEY, service,\n-                            CHECK_KEY, String.valueOf(false)), listener);\n-                }\n-            } else {\n-                List<URL> urls = new ArrayList<>();\n-                for (String path : toCategoriesPath(url)) {\n-\n-                    /*\n-                     *  if we are interested in special categories (providers, consumers, routers and so on),\n-                     *  we find out the current container or create one for the url, put or get only once.\n-                     */\n-                    ConcurrentMap<NotifyListener, ChildListener> listeners =\n-                            Optional.ofNullable(etcdListeners.get(url))\n-                                    .orElseGet(() -> {\n-                                        ConcurrentMap<NotifyListener, ChildListener> container, prev;\n-                                        prev = etcdListeners.putIfAbsent(url,\n-                                                container = new ConcurrentHashMap<>());\n-                                        return prev != null ? prev : container;\n-                                    });\n-\n-                    /*\n-                     *  if we have no category watcher listener,\n-                     *  we find out the current listener or create one for the current category, put or get only once.\n-                     */\n-                    ChildListener childListener =\n-                            Optional.ofNullable(listeners.get(listener))\n-                                    .orElseGet(() -> {\n-                                        ChildListener watchListener, prev;\n-                                        prev = listeners.putIfAbsent(listener, watchListener = (parentPath, currentChildren) -> EtcdRegistry.this.notify(url, listener,\n-                                                toUrlsWithEmpty(url, parentPath, currentChildren)));\n-                                        return prev != null ? prev : watchListener;\n-                                    });\n-\n-                    etcdClient.create(path);\n-                    /*\n-                     * at the first time, we want to pull already category and then watch their direct children,\n-                     *  eg: /dubbo/interface/providers, /dubbo/interface/consumers and so on.\n-                     */\n-                    List<String> children = etcdClient.addChildListener(path, childListener);\n-                    if (children != null) {\n-                        urls.addAll(toUrlsWithEmpty(url, path, children));\n-                    }\n-                }\n-                notify(url, listener, urls);\n-            }\n-        } catch (Throwable e) {\n-            throw new RpcException(\"Failed to subscribe \" + url + \" to etcd \" + getUrl()\n-                    + \", cause: \" + (OptionUtil.isProtocolError(e)\n-                    ? \"etcd3 registry may not be supported yet or etcd3 registry is not available.\"\n-                    : e.getMessage()), e);\n-        }\n-    }\n-\n-    @Override\n-    public void doUnsubscribe(URL url, NotifyListener listener) {\n-        ConcurrentMap<NotifyListener, ChildListener> listeners = etcdListeners.get(url);\n-        if (listeners != null) {\n-            ChildListener etcdListener = listeners.get(listener);\n-            if (etcdListener != null) {\n-                // maybe url has many subscribed paths\n-                for (String path : toUnsubscribedPath(url)) {\n-                    etcdClient.removeChildListener(path, etcdListener);\n-                }\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        return etcdClient.isConnected();\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        super.destroy();\n-        try {\n-            etcdClient.close();\n-        } catch (Exception e) {\n-            logger.warn(\"Failed to close etcd client \" + getUrl() + \", cause: \" + e.getMessage(), e);\n-        }\n-    }\n-\n-    protected String toRootDir() {\n-        if (root.startsWith(PATH_SEPARATOR)) {\n-            return root;\n-        }\n-        return PATH_SEPARATOR + root;\n-    }\n-\n-    protected String toRootPath() {\n-        return root;\n-    }\n-\n-    protected String toServicePath(URL url) {\n-        String name = url.getServiceInterface();\n-        if (ANY_VALUE.equals(name)) {\n-            return toRootPath();\n-        }\n-        return toRootDir() + PATH_SEPARATOR + URL.encode(name);\n-    }\n-\n-    protected String[] toCategoriesPath(URL url) {\n-        String[] categories;\n-        if (ANY_VALUE.equals(url.getParameter(CATEGORY_KEY))) {\n-            categories = new String[]{PROVIDERS_CATEGORY, CONSUMERS_CATEGORY, ROUTERS_CATEGORY, CONFIGURATORS_CATEGORY};\n-        } else {\n-            categories = url.getParameter(CATEGORY_KEY, new String[]{DEFAULT_CATEGORY});\n-        }\n-        String[] paths = new String[categories.length];\n-        for (int i = 0; i < categories.length; i++) {\n-            paths[i] = toServicePath(url) + PATH_SEPARATOR + categories[i];\n-        }\n-        return paths;\n-    }\n-\n-    protected String toCategoryPath(URL url) {\n-        return toServicePath(url) + PATH_SEPARATOR + url.getParameter(CATEGORY_KEY, DEFAULT_CATEGORY);\n-    }\n-\n-    protected String toUrlPath(URL url) {\n-        return toCategoryPath(url) + PATH_SEPARATOR + URL.encode(url.toFullString());\n-    }\n-\n-    protected List<String> toUnsubscribedPath(URL url) {\n-        List<String> categories = new ArrayList<>();\n-        if (ANY_VALUE.equals(url.getServiceInterface())) {\n-            String group = url.getParameter(GROUP_KEY, DEFAULT_ROOT);\n-            if (!group.startsWith(PATH_SEPARATOR)) {\n-                group = PATH_SEPARATOR + group;\n-            }\n-            categories.add(group);\n-            return categories;\n-        } else {\n-            categories.addAll(Arrays.asList(toCategoriesPath(url)));\n-        }\n-        return categories;\n-    }\n-\n-    protected List<URL> toUrlsWithoutEmpty(URL consumer, List<String> providers) {\n-        List<URL> urls = new ArrayList<>();\n-        if (providers != null && providers.size() > 0) {\n-            for (String provider : providers) {\n-                provider = URL.decode(provider);\n-                if (provider.contains(Constants.HTTP_SUBFIX_KEY)) {\n-                    URL url = URL.valueOf(provider);\n-                    if (UrlUtils.isMatch(consumer, url)) {\n-                        urls.add(url);\n-                    }\n-                }\n-            }\n-        }\n-        return urls;\n-    }\n-\n-    protected List<URL> toUrlsWithEmpty(URL consumer, String path, List<String> providers) {\n-        List<URL> urls = toUrlsWithoutEmpty(consumer, providers);\n-        if (urls == null || urls.isEmpty()) {\n-            int i = path.lastIndexOf('/');\n-            String category = i < 0 ? path : path.substring(i + 1);\n-            URL empty = consumer.setProtocol(EMPTY_PROTOCOL).addParameter(CATEGORY_KEY, category);\n-            urls.add(empty);\n-        }\n-        return urls;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.etcd;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.ConcurrentHashSet;\r\n+import org.apache.dubbo.common.utils.UrlUtils;\r\n+import org.apache.dubbo.registry.NotifyListener;\r\n+import org.apache.dubbo.registry.support.FailbackRegistry;\r\n+import org.apache.dubbo.remoting.etcd.ChildListener;\r\n+import org.apache.dubbo.remoting.etcd.Constants;\r\n+import org.apache.dubbo.remoting.etcd.EtcdClient;\r\n+import org.apache.dubbo.remoting.etcd.EtcdTransporter;\r\n+import org.apache.dubbo.remoting.etcd.StateListener;\r\n+import org.apache.dubbo.remoting.etcd.option.OptionUtil;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.List;\r\n+import java.util.Optional;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.CATEGORY_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.CONFIGURATORS_CATEGORY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.CONSUMERS_CATEGORY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.DEFAULT_CATEGORY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.DYNAMIC_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.EMPTY_PROTOCOL;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.PROVIDERS_CATEGORY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.ROUTERS_CATEGORY;\r\n+import static org.apache.dubbo.remoting.Constants.CHECK_KEY;\r\n+\r\n+\r\n+/**\r\n+ * Support for ectd3 registry.\r\n+ */\r\n+public class EtcdRegistry extends FailbackRegistry {\r\n+\r\n+    private final static int DEFAULT_ETCD_PORT = 2379;\r\n+\r\n+    private final static String DEFAULT_ROOT = \"dubbo\";\r\n+\r\n+    private final String root;\r\n+\r\n+    private final Set<String> anyServices = new ConcurrentHashSet<>();\r\n+\r\n+    private final ConcurrentMap<URL, ConcurrentMap<NotifyListener, ChildListener>> etcdListeners = new ConcurrentHashMap<>();\r\n+    private final EtcdClient etcdClient;\r\n+\r\n+    public EtcdRegistry(URL url, EtcdTransporter etcdTransporter) {\r\n+        super(url);\r\n+        if (url.isAnyHost()) {\r\n+            throw new IllegalStateException(\"registry address is invalid, actual: '\" + url.getHost() + \"'\");\r\n+        }\r\n+        String group = url.getParameter(GROUP_KEY, DEFAULT_ROOT);\r\n+        if (!group.startsWith(PATH_SEPARATOR)) {\r\n+            group = PATH_SEPARATOR + group;\r\n+        }\r\n+        this.root = group;\r\n+        etcdClient = etcdTransporter.connect(url);\r\n+\r\n+        etcdClient.addStateListener(state -> {\r\n+            if (state == StateListener.CONNECTED) {\r\n+                try {\r\n+                    recover();\r\n+                } catch (Exception e) {\r\n+                    logger.error(e.getMessage(), e);\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    protected static String appendDefaultPort(String address) {\r\n+        if (address != null && address.length() > 0) {\r\n+            int i = address.indexOf(':');\r\n+            if (i < 0) {\r\n+                return address + \":\" + DEFAULT_ETCD_PORT;\r\n+            } else if (Integer.parseInt(address.substring(i + 1)) == 0) {\r\n+                return address.substring(0, i + 1) + DEFAULT_ETCD_PORT;\r\n+            }\r\n+        }\r\n+        return address;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doRegister(URL url) {\r\n+        try {\r\n+            String path = toUrlPath(url);\r\n+            if (url.getParameter(DYNAMIC_KEY, true)) {\r\n+                etcdClient.createEphemeral(path);\r\n+                return;\r\n+            }\r\n+            etcdClient.create(path);\r\n+        } catch (Throwable e) {\r\n+            throw new RpcException(\"Failed to register \" + url + \" to etcd \" + getUrl()\r\n+                    + \", cause: \" + (OptionUtil.isProtocolError(e)\r\n+                    ? \"etcd3 registry may not be supported yet or etcd3 registry is not available.\"\r\n+                    : e.getMessage()), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUnregister(URL url) {\r\n+        try {\r\n+            String path = toUrlPath(url);\r\n+            etcdClient.delete(path);\r\n+        } catch (Throwable e) {\r\n+            throw new RpcException(\"Failed to unregister \" + url + \" to etcd \" + getUrl() + \", cause: \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doSubscribe(URL url, NotifyListener listener) {\r\n+        try {\r\n+            if (ANY_VALUE.equals(url.getServiceInterface())) {\r\n+                String root = toRootPath();\r\n+\r\n+                /*\r\n+                 *  if we are interested in all interfaces,\r\n+                 *  find out the current container or create one for the url, put or get only once.\r\n+                 */\r\n+                ConcurrentMap<NotifyListener, ChildListener> listeners =\r\n+                        Optional.ofNullable(etcdListeners.get(url))\r\n+                                .orElseGet(() -> {\r\n+                                    ConcurrentMap<NotifyListener, ChildListener> container, prev;\r\n+                                    prev = etcdListeners.putIfAbsent(url, container = new ConcurrentHashMap<>());\r\n+                                    return prev != null ? prev : container;\r\n+                                });\r\n+\r\n+                /*\r\n+                 *  if we have no interface watcher listener,\r\n+                 *  find the current listener or create one for the current root, put or get only once.\r\n+                 */\r\n+                ChildListener interfaceListener =\r\n+                        Optional.ofNullable(listeners.get(listener))\r\n+                                .orElseGet(() -> {\r\n+                                    ChildListener childListener, prev;\r\n+                                    prev = listeners.putIfAbsent(listener, childListener = (parentPath, currentChildren) -> {\r\n+                                        /*\r\n+                                         *  because etcd3 does not support direct children watch events,\r\n+                                         *  we should filter not interface events. if we watch /dubbo\r\n+                                         *  and /dubbo/interface, when we put a key-value pair {/dubbo/interface/hello hello},\r\n+                                         *  we will got events in watching path /dubbo.\r\n+                                         */\r\n+                                        for (String child : currentChildren) {\r\n+                                            child = URL.decode(child);\r\n+                                            if (!anyServices.contains(child)) {\r\n+                                                anyServices.add(child);\r\n+                                                /*\r\n+                                                 *  if new interface event arrived, we watch their direct children,\r\n+                                                 *  eg: /dubbo/interface, /dubbo/interface and so on.\r\n+                                                 */\r\n+                                                subscribe(url.setPath(child).addParameters(INTERFACE_KEY, child,\r\n+                                                        CHECK_KEY, String.valueOf(false)), listener);\r\n+                                            }\r\n+                                        }\r\n+                                    });\r\n+                                    return prev != null ? prev : childListener;\r\n+                                });\r\n+\r\n+                etcdClient.create(root);\r\n+                /*\r\n+                 * at the first time, we want to pull already interface and then watch their direct children,\r\n+                 *  eg: /dubbo/interface, /dubbo/interface and so on.\r\n+                 */\r\n+                List<String> services = etcdClient.addChildListener(root, interfaceListener);\r\n+                for (String service : services) {\r\n+                    service = URL.decode(service);\r\n+                    anyServices.add(service);\r\n+                    subscribe(url.setPath(service).addParameters(INTERFACE_KEY, service,\r\n+                            CHECK_KEY, String.valueOf(false)), listener);\r\n+                }\r\n+            } else {\r\n+                List<URL> urls = new ArrayList<>();\r\n+                for (String path : toCategoriesPath(url)) {\r\n+\r\n+                    /*\r\n+                     *  if we are interested in special categories (providers, consumers, routers and so on),\r\n+                     *  we find out the current container or create one for the url, put or get only once.\r\n+                     */\r\n+                    ConcurrentMap<NotifyListener, ChildListener> listeners =\r\n+                            Optional.ofNullable(etcdListeners.get(url))\r\n+                                    .orElseGet(() -> {\r\n+                                        ConcurrentMap<NotifyListener, ChildListener> container, prev;\r\n+                                        prev = etcdListeners.putIfAbsent(url,\r\n+                                                container = new ConcurrentHashMap<>());\r\n+                                        return prev != null ? prev : container;\r\n+                                    });\r\n+\r\n+                    /*\r\n+                     *  if we have no category watcher listener,\r\n+                     *  we find out the current listener or create one for the current category, put or get only once.\r\n+                     */\r\n+                    ChildListener childListener =\r\n+                            Optional.ofNullable(listeners.get(listener))\r\n+                                    .orElseGet(() -> {\r\n+                                        ChildListener watchListener, prev;\r\n+                                        prev = listeners.putIfAbsent(listener, watchListener = (parentPath, currentChildren) -> EtcdRegistry.this.notify(url, listener,\r\n+                                                toUrlsWithEmpty(url, parentPath, currentChildren)));\r\n+                                        return prev != null ? prev : watchListener;\r\n+                                    });\r\n+\r\n+                    etcdClient.create(path);\r\n+                    /*\r\n+                     * at the first time, we want to pull already category and then watch their direct children,\r\n+                     *  eg: /dubbo/interface/providers, /dubbo/interface/consumers and so on.\r\n+                     */\r\n+                    List<String> children = etcdClient.addChildListener(path, childListener);\r\n+                    if (children != null) {\r\n+                        urls.addAll(toUrlsWithEmpty(url, path, children));\r\n+                    }\r\n+                }\r\n+                notify(url, listener, urls);\r\n+            }\r\n+        } catch (Throwable e) {\r\n+            throw new RpcException(\"Failed to subscribe \" + url + \" to etcd \" + getUrl()\r\n+                    + \", cause: \" + (OptionUtil.isProtocolError(e)\r\n+                    ? \"etcd3 registry may not be supported yet or etcd3 registry is not available.\"\r\n+                    : e.getMessage()), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUnsubscribe(URL url, NotifyListener listener) {\r\n+        ConcurrentMap<NotifyListener, ChildListener> listeners = etcdListeners.get(url);\r\n+        if (listeners != null) {\r\n+            ChildListener etcdListener = listeners.get(listener);\r\n+            if (etcdListener != null) {\r\n+                // maybe url has many subscribed paths\r\n+                for (String path : toUnsubscribedPath(url)) {\r\n+                    etcdClient.removeChildListener(path, etcdListener);\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        return etcdClient.isConnected();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        super.destroy();\r\n+        try {\r\n+            etcdClient.close();\r\n+        } catch (Exception e) {\r\n+            logger.warn(\"Failed to close etcd client \" + getUrl() + \", cause: \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    protected String toRootDir() {\r\n+        if (root.startsWith(PATH_SEPARATOR)) {\r\n+            return root;\r\n+        }\r\n+        return PATH_SEPARATOR + root;\r\n+    }\r\n+\r\n+    protected String toRootPath() {\r\n+        return root;\r\n+    }\r\n+\r\n+    protected String toServicePath(URL url) {\r\n+        String name = url.getServiceInterface();\r\n+        if (ANY_VALUE.equals(name)) {\r\n+            return toRootPath();\r\n+        }\r\n+        return toRootDir() + PATH_SEPARATOR + URL.encode(name);\r\n+    }\r\n+\r\n+    protected String[] toCategoriesPath(URL url) {\r\n+        String[] categories;\r\n+        if (ANY_VALUE.equals(url.getParameter(CATEGORY_KEY))) {\r\n+            categories = new String[]{PROVIDERS_CATEGORY, CONSUMERS_CATEGORY, ROUTERS_CATEGORY, CONFIGURATORS_CATEGORY};\r\n+        } else {\r\n+            categories = url.getParameter(CATEGORY_KEY, new String[]{DEFAULT_CATEGORY});\r\n+        }\r\n+        String[] paths = new String[categories.length];\r\n+        for (int i = 0; i < categories.length; i++) {\r\n+            paths[i] = toServicePath(url) + PATH_SEPARATOR + categories[i];\r\n+        }\r\n+        return paths;\r\n+    }\r\n+\r\n+    protected String toCategoryPath(URL url) {\r\n+        return toServicePath(url) + PATH_SEPARATOR + url.getParameter(CATEGORY_KEY, DEFAULT_CATEGORY);\r\n+    }\r\n+\r\n+    protected String toUrlPath(URL url) {\r\n+        return toCategoryPath(url) + PATH_SEPARATOR + URL.encode(url.toFullString());\r\n+    }\r\n+\r\n+    protected List<String> toUnsubscribedPath(URL url) {\r\n+        List<String> categories = new ArrayList<>();\r\n+        if (ANY_VALUE.equals(url.getServiceInterface())) {\r\n+            String group = url.getParameter(GROUP_KEY, DEFAULT_ROOT);\r\n+            if (!group.startsWith(PATH_SEPARATOR)) {\r\n+                group = PATH_SEPARATOR + group;\r\n+            }\r\n+            categories.add(group);\r\n+            return categories;\r\n+        } else {\r\n+            categories.addAll(Arrays.asList(toCategoriesPath(url)));\r\n+        }\r\n+        return categories;\r\n+    }\r\n+\r\n+    protected List<URL> toUrlsWithoutEmpty(URL consumer, List<String> providers) {\r\n+        List<URL> urls = new ArrayList<>();\r\n+        if (providers != null && providers.size() > 0) {\r\n+            for (String provider : providers) {\r\n+                provider = URL.decode(provider);\r\n+                if (provider.contains(Constants.HTTP_SUBFIX_KEY)) {\r\n+                    URL url = URL.valueOf(provider);\r\n+                    if (UrlUtils.isMatch(consumer, url)) {\r\n+                        urls.add(url);\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+        return urls;\r\n+    }\r\n+\r\n+    protected List<URL> toUrlsWithEmpty(URL consumer, String path, List<String> providers) {\r\n+        List<URL> urls = toUrlsWithoutEmpty(consumer, providers);\r\n+        if (urls == null || urls.isEmpty()) {\r\n+            int i = path.lastIndexOf('/');\r\n+            String category = i < 0 ? path : path.substring(i + 1);\r\n+            URL empty = consumer.setProtocol(EMPTY_PROTOCOL).addParameter(CATEGORY_KEY, category);\r\n+            urls.add(empty);\r\n+        }\r\n+        return urls;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/etcd/EtcdRegistryFactory.java", "source2": "org/apache/dubbo/registry/etcd/EtcdRegistryFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,36 +1,36 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.etcd;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.support.AbstractRegistryFactory;\n-import org.apache.dubbo.remoting.etcd.EtcdTransporter;\n-\n-public class EtcdRegistryFactory extends AbstractRegistryFactory {\n-\n-    private EtcdTransporter etcdTransporter;\n-\n-    @Override\n-    protected Registry createRegistry(URL url) {\n-        return new EtcdRegistry(url, etcdTransporter);\n-    }\n-\n-    public void setEtcdTransporter(EtcdTransporter etcdTransporter) {\n-        this.etcdTransporter = etcdTransporter;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.etcd;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.support.AbstractRegistryFactory;\r\n+import org.apache.dubbo.remoting.etcd.EtcdTransporter;\r\n+\r\n+public class EtcdRegistryFactory extends AbstractRegistryFactory {\r\n+\r\n+    private EtcdTransporter etcdTransporter;\r\n+\r\n+    @Override\r\n+    protected Registry createRegistry(URL url) {\r\n+        return new EtcdRegistry(url, etcdTransporter);\r\n+    }\r\n+\r\n+    public void setEtcdTransporter(EtcdTransporter etcdTransporter) {\r\n+        this.etcdTransporter = etcdTransporter;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/etcd/EtcdServiceDiscovery.java", "source2": "org/apache/dubbo/registry/etcd/EtcdServiceDiscovery.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,206 +1,206 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.etcd;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.ConcurrentHashSet;\n-import org.apache.dubbo.event.EventDispatcher;\n-import org.apache.dubbo.event.EventListener;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\n-import org.apache.dubbo.registry.client.DefaultServiceInstance;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\n-import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\n-import org.apache.dubbo.remoting.etcd.ChildListener;\n-import org.apache.dubbo.remoting.etcd.EtcdClient;\n-import org.apache.dubbo.remoting.etcd.EtcdTransporter;\n-import org.apache.dubbo.remoting.etcd.StateListener;\n-import org.apache.dubbo.remoting.etcd.option.OptionUtil;\n-import org.apache.dubbo.rpc.RpcException;\n-\n-import com.google.gson.Gson;\n-\n-import java.io.File;\n-import java.util.ArrayList;\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Optional;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-/**\n- * 2019-07-08\n- */\n-public class EtcdServiceDiscovery extends AbstractServiceDiscovery implements EventListener<ServiceInstancesChangedEvent> {\n-\n-    private final static Logger logger = LoggerFactory.getLogger(EtcdServiceDiscovery.class);\n-\n-    private final String root = \"/services\";\n-\n-    private final Set<String> services = new ConcurrentHashSet<>();\n-    private final Map<String, ChildListener> childListenerMap = new ConcurrentHashMap<>();\n-\n-    EtcdClient etcdClient;\n-    EventDispatcher dispatcher;\n-\n-    @Override\n-    public void onEvent(ServiceInstancesChangedEvent event) {\n-        registerServiceWatcher(event.getServiceName());\n-    }\n-\n-    @Override\n-    public void initialize(URL registryURL) throws Exception {\n-\n-        EtcdTransporter etcdTransporter = ExtensionLoader.getExtensionLoader(EtcdTransporter.class).getAdaptiveExtension();\n-\n-        if (registryURL.isAnyHost()) {\n-            throw new IllegalStateException(\"Service discovery address is invalid, actual: '\" + registryURL.getHost() + \"'\");\n-        }\n-\n-        etcdClient = etcdTransporter.connect(registryURL);\n-\n-        etcdClient.addStateListener(state -> {\n-            if (state == StateListener.CONNECTED) {\n-                try {\n-                    recover();\n-                } catch (Exception e) {\n-                    logger.error(e.getMessage(), e);\n-                }\n-            }\n-        });\n-\n-        this.dispatcher = EventDispatcher.getDefaultExtension();\n-        this.dispatcher.addEventListener(this);\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        if (etcdClient != null && etcdClient.isConnected()) {\n-            etcdClient.close();\n-        }\n-    }\n-\n-    @Override\n-    public void doRegister(ServiceInstance serviceInstance) {\n-        try {\n-            String path = toPath(serviceInstance);\n-//            etcdClient.createEphemeral(path);\n-            etcdClient.putEphemeral(path, new Gson().toJson(serviceInstance));\n-            services.add(serviceInstance.getServiceName());\n-        } catch (Throwable e) {\n-            throw new RpcException(\"Failed to register \" + serviceInstance + \" to etcd \" + etcdClient.getUrl()\n-                    + \", cause: \" + (OptionUtil.isProtocolError(e)\n-                    ? \"etcd3 registry may not be supported yet or etcd3 registry is not available.\"\n-                    : e.getMessage()), e);\n-        }\n-    }\n-\n-    String toPath(ServiceInstance serviceInstance) {\n-        return root + File.separator + serviceInstance.getServiceName() + File.separator + serviceInstance.getHost()\n-                + \":\" + serviceInstance.getPort();\n-    }\n-\n-    String toParentPath(String serviceName) {\n-        return root + File.separator + serviceName;\n-    }\n-\n-    @Override\n-    public void doUpdate(ServiceInstance serviceInstance) {\n-        try {\n-            String path = toPath(serviceInstance);\n-            etcdClient.putEphemeral(path, new Gson().toJson(serviceInstance));\n-            services.add(serviceInstance.getServiceName());\n-        } catch (Throwable e) {\n-            throw new RpcException(\"Failed to register \" + serviceInstance + \" to etcd \" + etcdClient.getUrl()\n-                    + \", cause: \" + (OptionUtil.isProtocolError(e)\n-                    ? \"etcd3 registry may not be supported yet or etcd3 registry is not available.\"\n-                    : e.getMessage()), e);\n-        }\n-    }\n-\n-    @Override\n-    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\n-        try {\n-            String path = toPath(serviceInstance);\n-            etcdClient.delete(path);\n-            services.remove(serviceInstance.getServiceName());\n-            this.serviceInstance = null;\n-        } catch (Throwable e) {\n-            throw new RpcException(\"Failed to unregister \" + serviceInstance + \" to etcd \" + etcdClient.getUrl() + \", cause: \" + e.getMessage(), e);\n-        }\n-    }\n-\n-    @Override\n-    public Set<String> getServices() {\n-        return Collections.unmodifiableSet(services);\n-    }\n-\n-    @Override\n-    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws NullPointerException, IllegalArgumentException {\n-        listener.getServiceNames().forEach(serviceName -> registerServiceWatcher(serviceName));\n-    }\n-\n-    @Override\n-    public List<ServiceInstance> getInstances(String serviceName) {\n-        List<String> children = etcdClient.getChildren(toParentPath(serviceName));\n-        if (CollectionUtils.isEmpty(children)) {\n-            return Collections.EMPTY_LIST;\n-        }\n-        List<ServiceInstance> list = new ArrayList<>(children.size());\n-        for (String child : children) {\n-            ServiceInstance serviceInstance = new Gson().fromJson(etcdClient.getKVValue(child), DefaultServiceInstance.class);\n-            list.add(serviceInstance);\n-        }\n-        return list;\n-    }\n-\n-\n-    protected void registerServiceWatcher(String serviceName) {\n-        String path = root + File.separator + serviceName;\n-        /*\n-         *  if we have no category watcher listener,\n-         *  we find out the current listener or create one for the current category, put or get only once.\n-         */\n-        ChildListener childListener =\n-                Optional.ofNullable(childListenerMap.get(serviceName))\n-                        .orElseGet(() -> {\n-                            ChildListener watchListener, prev;\n-                            prev = childListenerMap.putIfAbsent(serviceName, watchListener = (parentPath, currentChildren) ->\n-                                    dispatchServiceInstancesChangedEvent(serviceName));\n-                            return prev != null ? prev : watchListener;\n-                        });\n-\n-        etcdClient.create(path);\n-\n-        etcdClient.addChildListener(path, childListener);\n-    }\n-\n-    private void recover() throws Exception {\n-        // register\n-        if (serviceInstance != null) {\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"Recover application register: \" + serviceInstance);\n-            }\n-            register(serviceInstance);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.etcd;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.ConcurrentHashSet;\r\n+import org.apache.dubbo.event.EventDispatcher;\r\n+import org.apache.dubbo.event.EventListener;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.DefaultServiceInstance;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\r\n+import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\r\n+import org.apache.dubbo.remoting.etcd.ChildListener;\r\n+import org.apache.dubbo.remoting.etcd.EtcdClient;\r\n+import org.apache.dubbo.remoting.etcd.EtcdTransporter;\r\n+import org.apache.dubbo.remoting.etcd.StateListener;\r\n+import org.apache.dubbo.remoting.etcd.option.OptionUtil;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+\r\n+import com.google.gson.Gson;\r\n+\r\n+import java.io.File;\r\n+import java.util.ArrayList;\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Optional;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+/**\r\n+ * 2019-07-08\r\n+ */\r\n+public class EtcdServiceDiscovery extends AbstractServiceDiscovery implements EventListener<ServiceInstancesChangedEvent> {\r\n+\r\n+    private final static Logger logger = LoggerFactory.getLogger(EtcdServiceDiscovery.class);\r\n+\r\n+    private final String root = \"/services\";\r\n+\r\n+    private final Set<String> services = new ConcurrentHashSet<>();\r\n+    private final Map<String, ChildListener> childListenerMap = new ConcurrentHashMap<>();\r\n+\r\n+    EtcdClient etcdClient;\r\n+    EventDispatcher dispatcher;\r\n+\r\n+    @Override\r\n+    public void onEvent(ServiceInstancesChangedEvent event) {\r\n+        registerServiceWatcher(event.getServiceName());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void initialize(URL registryURL) throws Exception {\r\n+\r\n+        EtcdTransporter etcdTransporter = ExtensionLoader.getExtensionLoader(EtcdTransporter.class).getAdaptiveExtension();\r\n+\r\n+        if (registryURL.isAnyHost()) {\r\n+            throw new IllegalStateException(\"Service discovery address is invalid, actual: '\" + registryURL.getHost() + \"'\");\r\n+        }\r\n+\r\n+        etcdClient = etcdTransporter.connect(registryURL);\r\n+\r\n+        etcdClient.addStateListener(state -> {\r\n+            if (state == StateListener.CONNECTED) {\r\n+                try {\r\n+                    recover();\r\n+                } catch (Exception e) {\r\n+                    logger.error(e.getMessage(), e);\r\n+                }\r\n+            }\r\n+        });\r\n+\r\n+        this.dispatcher = EventDispatcher.getDefaultExtension();\r\n+        this.dispatcher.addEventListener(this);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        if (etcdClient != null && etcdClient.isConnected()) {\r\n+            etcdClient.close();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doRegister(ServiceInstance serviceInstance) {\r\n+        try {\r\n+            String path = toPath(serviceInstance);\r\n+//            etcdClient.createEphemeral(path);\r\n+            etcdClient.putEphemeral(path, new Gson().toJson(serviceInstance));\r\n+            services.add(serviceInstance.getServiceName());\r\n+        } catch (Throwable e) {\r\n+            throw new RpcException(\"Failed to register \" + serviceInstance + \" to etcd \" + etcdClient.getUrl()\r\n+                    + \", cause: \" + (OptionUtil.isProtocolError(e)\r\n+                    ? \"etcd3 registry may not be supported yet or etcd3 registry is not available.\"\r\n+                    : e.getMessage()), e);\r\n+        }\r\n+    }\r\n+\r\n+    String toPath(ServiceInstance serviceInstance) {\r\n+        return root + File.separator + serviceInstance.getServiceName() + File.separator + serviceInstance.getHost()\r\n+                + \":\" + serviceInstance.getPort();\r\n+    }\r\n+\r\n+    String toParentPath(String serviceName) {\r\n+        return root + File.separator + serviceName;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUpdate(ServiceInstance serviceInstance) {\r\n+        try {\r\n+            String path = toPath(serviceInstance);\r\n+            etcdClient.putEphemeral(path, new Gson().toJson(serviceInstance));\r\n+            services.add(serviceInstance.getServiceName());\r\n+        } catch (Throwable e) {\r\n+            throw new RpcException(\"Failed to register \" + serviceInstance + \" to etcd \" + etcdClient.getUrl()\r\n+                    + \", cause: \" + (OptionUtil.isProtocolError(e)\r\n+                    ? \"etcd3 registry may not be supported yet or etcd3 registry is not available.\"\r\n+                    : e.getMessage()), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\r\n+        try {\r\n+            String path = toPath(serviceInstance);\r\n+            etcdClient.delete(path);\r\n+            services.remove(serviceInstance.getServiceName());\r\n+            this.serviceInstance = null;\r\n+        } catch (Throwable e) {\r\n+            throw new RpcException(\"Failed to unregister \" + serviceInstance + \" to etcd \" + etcdClient.getUrl() + \", cause: \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<String> getServices() {\r\n+        return Collections.unmodifiableSet(services);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws NullPointerException, IllegalArgumentException {\r\n+        listener.getServiceNames().forEach(serviceName -> registerServiceWatcher(serviceName));\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<ServiceInstance> getInstances(String serviceName) {\r\n+        List<String> children = etcdClient.getChildren(toParentPath(serviceName));\r\n+        if (CollectionUtils.isEmpty(children)) {\r\n+            return Collections.EMPTY_LIST;\r\n+        }\r\n+        List<ServiceInstance> list = new ArrayList<>(children.size());\r\n+        for (String child : children) {\r\n+            ServiceInstance serviceInstance = new Gson().fromJson(etcdClient.getKVValue(child), DefaultServiceInstance.class);\r\n+            list.add(serviceInstance);\r\n+        }\r\n+        return list;\r\n+    }\r\n+\r\n+\r\n+    protected void registerServiceWatcher(String serviceName) {\r\n+        String path = root + File.separator + serviceName;\r\n+        /*\r\n+         *  if we have no category watcher listener,\r\n+         *  we find out the current listener or create one for the current category, put or get only once.\r\n+         */\r\n+        ChildListener childListener =\r\n+                Optional.ofNullable(childListenerMap.get(serviceName))\r\n+                        .orElseGet(() -> {\r\n+                            ChildListener watchListener, prev;\r\n+                            prev = childListenerMap.putIfAbsent(serviceName, watchListener = (parentPath, currentChildren) ->\r\n+                                    dispatchServiceInstancesChangedEvent(serviceName));\r\n+                            return prev != null ? prev : watchListener;\r\n+                        });\r\n+\r\n+        etcdClient.create(path);\r\n+\r\n+        etcdClient.addChildListener(path, childListener);\r\n+    }\r\n+\r\n+    private void recover() throws Exception {\r\n+        // register\r\n+        if (serviceInstance != null) {\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"Recover application register: \" + serviceInstance);\r\n+            }\r\n+            register(serviceInstance);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/eureka/ConfigurableEurekaInstanceConfig.java", "source2": "org/apache/dubbo/registry/eureka/ConfigurableEurekaInstanceConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,369 +1,369 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.eureka;\n-\n-import com.netflix.appinfo.DataCenterInfo;\n-import com.netflix.appinfo.EurekaInstanceConfig;\n-import com.netflix.appinfo.InstanceInfo;\n-import com.netflix.appinfo.MyDataCenterInfo;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-/**\n- * Configurable {@link EurekaInstanceConfig} implementation\n- */\n-class ConfigurableEurekaInstanceConfig implements EurekaInstanceConfig {\n-\n-    private String appname;\n-\n-    private String appGroupName;\n-\n-    private boolean instanceEnabledOnit;\n-\n-    private int nonSecurePort;\n-\n-    private int securePort;\n-\n-    private boolean nonSecurePortEnabled = true;\n-\n-    private boolean securePortEnabled;\n-\n-    private int leaseRenewalIntervalInSeconds = 30;\n-\n-    private int leaseExpirationDurationInSeconds = 90;\n-\n-    private String virtualHostName = \"unknown\";\n-\n-    private String instanceId;\n-\n-    private String secureVirtualHostName = \"unknown\";\n-\n-    private String aSGName;\n-\n-    private Map<String, String> metadataMap = new HashMap<>();\n-\n-    private DataCenterInfo dataCenterInfo = new MyDataCenterInfo(DataCenterInfo.Name.MyOwn);\n-\n-    private String ipAddress;\n-\n-    private String statusPageUrlPath;\n-\n-    private String statusPageUrl;\n-\n-    private String homePageUrlPath = \"/\";\n-\n-    private String homePageUrl;\n-\n-    private String healthCheckUrlPath;\n-\n-    private String healthCheckUrl;\n-\n-    private String secureHealthCheckUrl;\n-\n-    private String namespace = \"eureka\";\n-\n-    private String hostname;\n-\n-    private boolean preferIpAddress = false;\n-\n-    private InstanceInfo.InstanceStatus initialStatus = InstanceInfo.InstanceStatus.UP;\n-\n-    private String[] defaultAddressResolutionOrder = new String[0];\n-\n-    @Override\n-    public String getAppname() {\n-        return appname;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setAppname(String appname) {\n-        this.appname = appname;\n-        return this;\n-    }\n-\n-    @Override\n-    public String getAppGroupName() {\n-        return appGroupName;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setAppGroupName(String appGroupName) {\n-        this.appGroupName = appGroupName;\n-        return this;\n-    }\n-\n-    @Override\n-    public boolean isInstanceEnabledOnit() {\n-        return instanceEnabledOnit;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setInstanceEnabledOnit(boolean instanceEnabledOnit) {\n-        this.instanceEnabledOnit = instanceEnabledOnit;\n-        return this;\n-    }\n-\n-    @Override\n-    public int getNonSecurePort() {\n-        return nonSecurePort;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setNonSecurePort(int nonSecurePort) {\n-        this.nonSecurePort = nonSecurePort;\n-        return this;\n-    }\n-\n-    @Override\n-    public int getSecurePort() {\n-        return securePort;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setSecurePort(int securePort) {\n-        this.securePort = securePort;\n-        return this;\n-    }\n-\n-    @Override\n-    public boolean isNonSecurePortEnabled() {\n-        return nonSecurePortEnabled;\n-    }\n-\n-    @Override\n-    public boolean getSecurePortEnabled() {\n-        return securePortEnabled;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setNonSecurePortEnabled(boolean nonSecurePortEnabled) {\n-        this.nonSecurePortEnabled = nonSecurePortEnabled;\n-        return this;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setSecurePortEnabled(boolean securePortEnabled) {\n-        this.securePortEnabled = securePortEnabled;\n-        return this;\n-    }\n-\n-    @Override\n-    public int getLeaseRenewalIntervalInSeconds() {\n-        return leaseRenewalIntervalInSeconds;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setLeaseRenewalIntervalInSeconds(int leaseRenewalIntervalInSeconds) {\n-        this.leaseRenewalIntervalInSeconds = leaseRenewalIntervalInSeconds;\n-        return this;\n-    }\n-\n-    @Override\n-    public int getLeaseExpirationDurationInSeconds() {\n-        return leaseExpirationDurationInSeconds;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setLeaseExpirationDurationInSeconds(int leaseExpirationDurationInSeconds) {\n-        this.leaseExpirationDurationInSeconds = leaseExpirationDurationInSeconds;\n-        return this;\n-    }\n-\n-    @Override\n-    public String getVirtualHostName() {\n-        return virtualHostName;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setVirtualHostName(String virtualHostName) {\n-        this.virtualHostName = virtualHostName;\n-        return this;\n-    }\n-\n-    @Override\n-    public String getInstanceId() {\n-        return instanceId;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setInstanceId(String instanceId) {\n-        this.instanceId = instanceId;\n-        return this;\n-    }\n-\n-    @Override\n-    public String getSecureVirtualHostName() {\n-        return secureVirtualHostName;\n-    }\n-\n-    @Override\n-    public String getASGName() {\n-        return aSGName;\n-    }\n-\n-    @Override\n-    public String getHostName(boolean refresh) {\n-        return null;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setSecureVirtualHostName(String secureVirtualHostName) {\n-        this.secureVirtualHostName = secureVirtualHostName;\n-        return this;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setASGName(String aSGName) {\n-        this.aSGName = aSGName;\n-        return this;\n-    }\n-\n-    @Override\n-    public Map<String, String> getMetadataMap() {\n-        return metadataMap;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setMetadataMap(Map<String, String> metadataMap) {\n-        this.metadataMap = metadataMap;\n-        return this;\n-    }\n-\n-    @Override\n-    public DataCenterInfo getDataCenterInfo() {\n-        return dataCenterInfo;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setDataCenterInfo(DataCenterInfo dataCenterInfo) {\n-        this.dataCenterInfo = dataCenterInfo;\n-        return this;\n-    }\n-\n-    @Override\n-    public String getIpAddress() {\n-        return ipAddress;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setIpAddress(String ipAddress) {\n-        this.ipAddress = ipAddress;\n-        return this;\n-    }\n-\n-    @Override\n-    public String getStatusPageUrlPath() {\n-        return statusPageUrlPath;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setStatusPageUrlPath(String statusPageUrlPath) {\n-        this.statusPageUrlPath = statusPageUrlPath;\n-        return this;\n-    }\n-\n-    @Override\n-    public String getStatusPageUrl() {\n-        return statusPageUrl;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setStatusPageUrl(String statusPageUrl) {\n-        this.statusPageUrl = statusPageUrl;\n-        return this;\n-    }\n-\n-    @Override\n-    public String getHomePageUrlPath() {\n-        return homePageUrlPath;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setHomePageUrlPath(String homePageUrlPath) {\n-        this.homePageUrlPath = homePageUrlPath;\n-        return this;\n-    }\n-\n-    @Override\n-    public String getHomePageUrl() {\n-        return homePageUrl;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setHomePageUrl(String homePageUrl) {\n-        this.homePageUrl = homePageUrl;\n-        return this;\n-    }\n-\n-    @Override\n-    public String getHealthCheckUrlPath() {\n-        return healthCheckUrlPath;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setHealthCheckUrlPath(String healthCheckUrlPath) {\n-        this.healthCheckUrlPath = healthCheckUrlPath;\n-        return this;\n-    }\n-\n-    @Override\n-    public String getHealthCheckUrl() {\n-        return healthCheckUrl;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setHealthCheckUrl(String healthCheckUrl) {\n-        this.healthCheckUrl = healthCheckUrl;\n-        return this;\n-    }\n-\n-    @Override\n-    public String getSecureHealthCheckUrl() {\n-        return secureHealthCheckUrl;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setSecureHealthCheckUrl(String secureHealthCheckUrl) {\n-        this.secureHealthCheckUrl = secureHealthCheckUrl;\n-        return this;\n-    }\n-\n-    @Override\n-    public String getNamespace() {\n-        return namespace;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setNamespace(String namespace) {\n-        this.namespace = namespace;\n-        return this;\n-    }\n-\n-    public String getHostname() {\n-        return hostname;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setHostname(String hostname) {\n-        this.hostname = hostname;\n-        return this;\n-    }\n-\n-    public boolean isPreferIpAddress() {\n-        return preferIpAddress;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setPreferIpAddress(boolean preferIpAddress) {\n-        this.preferIpAddress = preferIpAddress;\n-        return this;\n-    }\n-\n-    public InstanceInfo.InstanceStatus getInitialStatus() {\n-        return initialStatus;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setInitialStatus(InstanceInfo.InstanceStatus initialStatus) {\n-        this.initialStatus = initialStatus;\n-        return this;\n-    }\n-\n-    @Override\n-    public String[] getDefaultAddressResolutionOrder() {\n-        return defaultAddressResolutionOrder;\n-    }\n-\n-    public ConfigurableEurekaInstanceConfig setDefaultAddressResolutionOrder(String[] defaultAddressResolutionOrder) {\n-        this.defaultAddressResolutionOrder = defaultAddressResolutionOrder;\n-        return this;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.eureka;\r\n+\r\n+import com.netflix.appinfo.DataCenterInfo;\r\n+import com.netflix.appinfo.EurekaInstanceConfig;\r\n+import com.netflix.appinfo.InstanceInfo;\r\n+import com.netflix.appinfo.MyDataCenterInfo;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * Configurable {@link EurekaInstanceConfig} implementation\r\n+ */\r\n+class ConfigurableEurekaInstanceConfig implements EurekaInstanceConfig {\r\n+\r\n+    private String appname;\r\n+\r\n+    private String appGroupName;\r\n+\r\n+    private boolean instanceEnabledOnit;\r\n+\r\n+    private int nonSecurePort;\r\n+\r\n+    private int securePort;\r\n+\r\n+    private boolean nonSecurePortEnabled = true;\r\n+\r\n+    private boolean securePortEnabled;\r\n+\r\n+    private int leaseRenewalIntervalInSeconds = 30;\r\n+\r\n+    private int leaseExpirationDurationInSeconds = 90;\r\n+\r\n+    private String virtualHostName = \"unknown\";\r\n+\r\n+    private String instanceId;\r\n+\r\n+    private String secureVirtualHostName = \"unknown\";\r\n+\r\n+    private String aSGName;\r\n+\r\n+    private Map<String, String> metadataMap = new HashMap<>();\r\n+\r\n+    private DataCenterInfo dataCenterInfo = new MyDataCenterInfo(DataCenterInfo.Name.MyOwn);\r\n+\r\n+    private String ipAddress;\r\n+\r\n+    private String statusPageUrlPath;\r\n+\r\n+    private String statusPageUrl;\r\n+\r\n+    private String homePageUrlPath = \"/\";\r\n+\r\n+    private String homePageUrl;\r\n+\r\n+    private String healthCheckUrlPath;\r\n+\r\n+    private String healthCheckUrl;\r\n+\r\n+    private String secureHealthCheckUrl;\r\n+\r\n+    private String namespace = \"eureka\";\r\n+\r\n+    private String hostname;\r\n+\r\n+    private boolean preferIpAddress = false;\r\n+\r\n+    private InstanceInfo.InstanceStatus initialStatus = InstanceInfo.InstanceStatus.UP;\r\n+\r\n+    private String[] defaultAddressResolutionOrder = new String[0];\r\n+\r\n+    @Override\r\n+    public String getAppname() {\r\n+        return appname;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setAppname(String appname) {\r\n+        this.appname = appname;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getAppGroupName() {\r\n+        return appGroupName;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setAppGroupName(String appGroupName) {\r\n+        this.appGroupName = appGroupName;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isInstanceEnabledOnit() {\r\n+        return instanceEnabledOnit;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setInstanceEnabledOnit(boolean instanceEnabledOnit) {\r\n+        this.instanceEnabledOnit = instanceEnabledOnit;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getNonSecurePort() {\r\n+        return nonSecurePort;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setNonSecurePort(int nonSecurePort) {\r\n+        this.nonSecurePort = nonSecurePort;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getSecurePort() {\r\n+        return securePort;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setSecurePort(int securePort) {\r\n+        this.securePort = securePort;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isNonSecurePortEnabled() {\r\n+        return nonSecurePortEnabled;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean getSecurePortEnabled() {\r\n+        return securePortEnabled;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setNonSecurePortEnabled(boolean nonSecurePortEnabled) {\r\n+        this.nonSecurePortEnabled = nonSecurePortEnabled;\r\n+        return this;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setSecurePortEnabled(boolean securePortEnabled) {\r\n+        this.securePortEnabled = securePortEnabled;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getLeaseRenewalIntervalInSeconds() {\r\n+        return leaseRenewalIntervalInSeconds;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setLeaseRenewalIntervalInSeconds(int leaseRenewalIntervalInSeconds) {\r\n+        this.leaseRenewalIntervalInSeconds = leaseRenewalIntervalInSeconds;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getLeaseExpirationDurationInSeconds() {\r\n+        return leaseExpirationDurationInSeconds;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setLeaseExpirationDurationInSeconds(int leaseExpirationDurationInSeconds) {\r\n+        this.leaseExpirationDurationInSeconds = leaseExpirationDurationInSeconds;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getVirtualHostName() {\r\n+        return virtualHostName;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setVirtualHostName(String virtualHostName) {\r\n+        this.virtualHostName = virtualHostName;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getInstanceId() {\r\n+        return instanceId;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setInstanceId(String instanceId) {\r\n+        this.instanceId = instanceId;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getSecureVirtualHostName() {\r\n+        return secureVirtualHostName;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getASGName() {\r\n+        return aSGName;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getHostName(boolean refresh) {\r\n+        return null;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setSecureVirtualHostName(String secureVirtualHostName) {\r\n+        this.secureVirtualHostName = secureVirtualHostName;\r\n+        return this;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setASGName(String aSGName) {\r\n+        this.aSGName = aSGName;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Map<String, String> getMetadataMap() {\r\n+        return metadataMap;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setMetadataMap(Map<String, String> metadataMap) {\r\n+        this.metadataMap = metadataMap;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public DataCenterInfo getDataCenterInfo() {\r\n+        return dataCenterInfo;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setDataCenterInfo(DataCenterInfo dataCenterInfo) {\r\n+        this.dataCenterInfo = dataCenterInfo;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getIpAddress() {\r\n+        return ipAddress;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setIpAddress(String ipAddress) {\r\n+        this.ipAddress = ipAddress;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getStatusPageUrlPath() {\r\n+        return statusPageUrlPath;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setStatusPageUrlPath(String statusPageUrlPath) {\r\n+        this.statusPageUrlPath = statusPageUrlPath;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getStatusPageUrl() {\r\n+        return statusPageUrl;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setStatusPageUrl(String statusPageUrl) {\r\n+        this.statusPageUrl = statusPageUrl;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getHomePageUrlPath() {\r\n+        return homePageUrlPath;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setHomePageUrlPath(String homePageUrlPath) {\r\n+        this.homePageUrlPath = homePageUrlPath;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getHomePageUrl() {\r\n+        return homePageUrl;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setHomePageUrl(String homePageUrl) {\r\n+        this.homePageUrl = homePageUrl;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getHealthCheckUrlPath() {\r\n+        return healthCheckUrlPath;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setHealthCheckUrlPath(String healthCheckUrlPath) {\r\n+        this.healthCheckUrlPath = healthCheckUrlPath;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getHealthCheckUrl() {\r\n+        return healthCheckUrl;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setHealthCheckUrl(String healthCheckUrl) {\r\n+        this.healthCheckUrl = healthCheckUrl;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getSecureHealthCheckUrl() {\r\n+        return secureHealthCheckUrl;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setSecureHealthCheckUrl(String secureHealthCheckUrl) {\r\n+        this.secureHealthCheckUrl = secureHealthCheckUrl;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getNamespace() {\r\n+        return namespace;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setNamespace(String namespace) {\r\n+        this.namespace = namespace;\r\n+        return this;\r\n+    }\r\n+\r\n+    public String getHostname() {\r\n+        return hostname;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setHostname(String hostname) {\r\n+        this.hostname = hostname;\r\n+        return this;\r\n+    }\r\n+\r\n+    public boolean isPreferIpAddress() {\r\n+        return preferIpAddress;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setPreferIpAddress(boolean preferIpAddress) {\r\n+        this.preferIpAddress = preferIpAddress;\r\n+        return this;\r\n+    }\r\n+\r\n+    public InstanceInfo.InstanceStatus getInitialStatus() {\r\n+        return initialStatus;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setInitialStatus(InstanceInfo.InstanceStatus initialStatus) {\r\n+        this.initialStatus = initialStatus;\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String[] getDefaultAddressResolutionOrder() {\r\n+        return defaultAddressResolutionOrder;\r\n+    }\r\n+\r\n+    public ConfigurableEurekaInstanceConfig setDefaultAddressResolutionOrder(String[] defaultAddressResolutionOrder) {\r\n+        this.defaultAddressResolutionOrder = defaultAddressResolutionOrder;\r\n+        return this;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/eureka/EurekaServiceDiscovery.java", "source2": "org/apache/dubbo/registry/eureka/EurekaServiceDiscovery.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,281 +1,281 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.eureka;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.event.EventDispatcher;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\n-import org.apache.dubbo.registry.client.DefaultServiceInstance;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\n-\n-import com.netflix.appinfo.ApplicationInfoManager;\n-import com.netflix.appinfo.EurekaInstanceConfig;\n-import com.netflix.appinfo.InstanceInfo;\n-import com.netflix.config.ConfigurationManager;\n-import com.netflix.discovery.CacheRefreshedEvent;\n-import com.netflix.discovery.DefaultEurekaClientConfig;\n-import com.netflix.discovery.DiscoveryClient;\n-import com.netflix.discovery.EurekaClient;\n-import com.netflix.discovery.EurekaClientConfig;\n-import com.netflix.discovery.EurekaEvent;\n-import com.netflix.discovery.shared.Application;\n-import com.netflix.discovery.shared.Applications;\n-\n-import java.util.ArrayList;\n-import java.util.Collections;\n-import java.util.LinkedHashSet;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Objects;\n-import java.util.Properties;\n-import java.util.Set;\n-\n-import static java.util.Collections.emptyList;\n-import static org.apache.dubbo.common.constants.RegistryConstants.SUBSCRIBED_SERVICE_NAMES_KEY;\n-import static org.apache.dubbo.event.EventDispatcher.getDefaultExtension;\n-import static org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.parseServices;\n-\n-/**\n- * Eureka {@link ServiceDiscovery} implementation based on Eureka API\n- */\n-public class EurekaServiceDiscovery extends AbstractServiceDiscovery {\n-\n-    private final EventDispatcher eventDispatcher = getDefaultExtension();\n-\n-    private ApplicationInfoManager applicationInfoManager;\n-\n-    private EurekaClient eurekaClient;\n-\n-    private Set<String> subscribedServices;\n-\n-    /**\n-     * last apps hash code is used to identify the {@link Applications} is changed or not\n-     */\n-    private String lastAppsHashCode;\n-\n-    @Override\n-    public void initialize(URL registryURL) throws Exception {\n-        Properties eurekaConfigProperties = buildEurekaConfigProperties(registryURL);\n-        initConfigurationManager(eurekaConfigProperties);\n-        initSubscribedServices(registryURL);\n-    }\n-\n-    /**\n-     * Build the Properties whose {@link java.util.Map.Entry entries} are retrieved from\n-     * {@link URL#getParameters() the parameters of the specified URL}, which will be used in the Eureka's {@link ConfigurationManager}\n-     *\n-     * @param registryURL the {@link URL url} to connect Eureka\n-     * @return non-null\n-     */\n-    private Properties buildEurekaConfigProperties(URL registryURL) {\n-        Properties properties = new Properties();\n-        Map<String, String> parameters = registryURL.getParameters();\n-        setDefaultProperties(registryURL, properties);\n-        parameters.entrySet().stream()\n-                .filter(this::filterEurekaProperty)\n-                .forEach(propertyEntry -> {\n-                    properties.setProperty(propertyEntry.getKey(), propertyEntry.getValue());\n-                });\n-        return properties;\n-    }\n-\n-    /**\n-     * Initialize {@link #subscribedServices} property\n-     *\n-     * @param registryURL the {@link URL url} to connect Eureka\n-     */\n-    private void initSubscribedServices(URL registryURL) {\n-        this.subscribedServices = parseServices(registryURL.getParameter(SUBSCRIBED_SERVICE_NAMES_KEY));\n-        ;\n-    }\n-\n-    private boolean filterEurekaProperty(Map.Entry<String, String> propertyEntry) {\n-        String propertyName = propertyEntry.getKey();\n-        return propertyName.startsWith(\"eureka.\");\n-    }\n-\n-    private void setDefaultProperties(URL registryURL, Properties properties) {\n-        setDefaultServiceURL(registryURL, properties);\n-        setDefaultInitialInstanceInfoReplicationIntervalSeconds(properties);\n-    }\n-\n-    private void setDefaultServiceURL(URL registryURL, Properties properties) {\n-        StringBuilder defaultServiceURLBuilder = new StringBuilder(\"http://\")\n-                .append(registryURL.getHost())\n-                .append(\":\")\n-                .append(registryURL.getPort())\n-                .append(\"/eureka\");\n-        properties.setProperty(\"eureka.serviceUrl.default\", defaultServiceURLBuilder.toString());\n-    }\n-\n-    /**\n-     * Set the default property for {@link EurekaClientConfig#getInitialInstanceInfoReplicationIntervalSeconds()}\n-     * which means do register immediately\n-     *\n-     * @param properties {@link Properties}\n-     */\n-    private void setDefaultInitialInstanceInfoReplicationIntervalSeconds(Properties properties) {\n-        properties.setProperty(\"eureka.appinfo.initial.replicate.time\", \"0\");\n-    }\n-\n-    /**\n-     * Initialize {@link ConfigurationManager}\n-     *\n-     * @param eurekaConfigProperties the Eureka's {@link ConfigurationManager}\n-     */\n-    private void initConfigurationManager(Properties eurekaConfigProperties) {\n-        ConfigurationManager.loadProperties(eurekaConfigProperties);\n-    }\n-\n-    private void initApplicationInfoManager(ServiceInstance serviceInstance) {\n-        EurekaInstanceConfig eurekaInstanceConfig = buildEurekaInstanceConfig(serviceInstance);\n-        this.applicationInfoManager = new ApplicationInfoManager(eurekaInstanceConfig, (ApplicationInfoManager.OptionalArgs) null);\n-    }\n-\n-    /**\n-     * Initialize {@link #eurekaClient} property\n-     *\n-     * @param serviceInstance {@link ServiceInstance}\n-     */\n-    private void initEurekaClient(ServiceInstance serviceInstance) {\n-        if (eurekaClient != null) {\n-            return;\n-        }\n-        initApplicationInfoManager(serviceInstance);\n-        EurekaClient eurekaClient = createEurekaClient();\n-        registerEurekaEventListener(eurekaClient);\n-        // set eurekaClient\n-        this.eurekaClient = eurekaClient;\n-    }\n-\n-    private void registerEurekaEventListener(EurekaClient eurekaClient) {\n-        eurekaClient.registerEventListener(this::onEurekaEvent);\n-    }\n-\n-    private void onEurekaEvent(EurekaEvent event) {\n-        if (event instanceof CacheRefreshedEvent) {\n-            onCacheRefreshedEvent(CacheRefreshedEvent.class.cast(event));\n-        }\n-    }\n-\n-    private void onCacheRefreshedEvent(CacheRefreshedEvent event) {\n-        synchronized (this) { // Make sure thread-safe in async execution\n-            Applications applications = eurekaClient.getApplications();\n-            String appsHashCode = applications.getAppsHashCode();\n-            if (!Objects.equals(lastAppsHashCode, appsHashCode)) { // Changed\n-                // Dispatch Events\n-                dispatchServiceInstancesChangedEvent();\n-                lastAppsHashCode = appsHashCode; // update current result\n-            }\n-        }\n-    }\n-\n-    private void dispatchServiceInstancesChangedEvent() {\n-        subscribedServices.forEach((serviceName) -> {\n-            eventDispatcher.dispatch(new ServiceInstancesChangedEvent(serviceName, getInstances(serviceName)));\n-        });\n-    }\n-\n-    private EurekaClient createEurekaClient() {\n-        EurekaClientConfig eurekaClientConfig = new DefaultEurekaClientConfig();\n-        DiscoveryClient eurekaClient = new DiscoveryClient(applicationInfoManager, eurekaClientConfig);\n-        return eurekaClient;\n-    }\n-\n-    @Override\n-    public void destroy() throws Exception {\n-        if (eurekaClient != null) {\n-            this.eurekaClient.shutdown();\n-        }\n-    }\n-\n-    @Override\n-    public void doRegister(ServiceInstance serviceInstance) {\n-        initEurekaClient(serviceInstance);\n-        setInstanceStatus(InstanceInfo.InstanceStatus.UP);\n-    }\n-\n-    private void setInstanceStatus(InstanceInfo.InstanceStatus status) {\n-        if (applicationInfoManager != null) {\n-            this.applicationInfoManager.setInstanceStatus(status);\n-        }\n-    }\n-\n-    @Override\n-    public void doUpdate(ServiceInstance serviceInstance) {\n-        setInstanceStatus(serviceInstance.isHealthy() ? InstanceInfo.InstanceStatus.UP :\n-                InstanceInfo.InstanceStatus.UNKNOWN);\n-    }\n-\n-    @Override\n-    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\n-        setInstanceStatus(InstanceInfo.InstanceStatus.OUT_OF_SERVICE);\n-    }\n-\n-    @Override\n-    public Set<String> getServices() {\n-        Applications applications = this.eurekaClient.getApplications();\n-        if (applications == null) {\n-            return Collections.emptySet();\n-        }\n-        List<Application> registered = applications.getRegisteredApplications();\n-        Set<String> names = new LinkedHashSet<>();\n-        for (Application app : registered) {\n-            if (app.getInstances().isEmpty()) {\n-                continue;\n-            }\n-            names.add(app.getName().toLowerCase());\n-        }\n-        return names;\n-    }\n-\n-    @Override\n-    public List<ServiceInstance> getInstances(String serviceName) throws NullPointerException {\n-        Application application = this.eurekaClient.getApplication(serviceName);\n-\n-        if (application == null) {\n-            return emptyList();\n-        }\n-\n-        List<InstanceInfo> infos = application.getInstances();\n-        List<ServiceInstance> instances = new ArrayList<>();\n-        for (InstanceInfo info : infos) {\n-            instances.add(buildServiceInstance(info));\n-        }\n-        return instances;\n-    }\n-\n-    private ServiceInstance buildServiceInstance(InstanceInfo instance) {\n-        DefaultServiceInstance serviceInstance = new DefaultServiceInstance(instance.getId(), instance.getAppName(),\n-                instance.getHostName(),\n-                instance.isPortEnabled(InstanceInfo.PortType.SECURE) ? instance.getSecurePort() : instance.getPort());\n-        serviceInstance.setMetadata(instance.getMetadata());\n-        return serviceInstance;\n-    }\n-\n-    private EurekaInstanceConfig buildEurekaInstanceConfig(ServiceInstance serviceInstance) {\n-        ConfigurableEurekaInstanceConfig eurekaInstanceConfig = new ConfigurableEurekaInstanceConfig()\n-                .setInstanceId(serviceInstance.getId())\n-                .setAppname(serviceInstance.getServiceName())\n-                .setIpAddress(serviceInstance.getHost())\n-                .setNonSecurePort(serviceInstance.getPort())\n-                .setMetadataMap(serviceInstance.getMetadata());\n-        return eurekaInstanceConfig;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.eureka;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.event.EventDispatcher;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.DefaultServiceInstance;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\r\n+\r\n+import com.netflix.appinfo.ApplicationInfoManager;\r\n+import com.netflix.appinfo.EurekaInstanceConfig;\r\n+import com.netflix.appinfo.InstanceInfo;\r\n+import com.netflix.config.ConfigurationManager;\r\n+import com.netflix.discovery.CacheRefreshedEvent;\r\n+import com.netflix.discovery.DefaultEurekaClientConfig;\r\n+import com.netflix.discovery.DiscoveryClient;\r\n+import com.netflix.discovery.EurekaClient;\r\n+import com.netflix.discovery.EurekaClientConfig;\r\n+import com.netflix.discovery.EurekaEvent;\r\n+import com.netflix.discovery.shared.Application;\r\n+import com.netflix.discovery.shared.Applications;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Collections;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Objects;\r\n+import java.util.Properties;\r\n+import java.util.Set;\r\n+\r\n+import static java.util.Collections.emptyList;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.SUBSCRIBED_SERVICE_NAMES_KEY;\r\n+import static org.apache.dubbo.event.EventDispatcher.getDefaultExtension;\r\n+import static org.apache.dubbo.registry.client.ServiceDiscoveryRegistry.parseServices;\r\n+\r\n+/**\r\n+ * Eureka {@link ServiceDiscovery} implementation based on Eureka API\r\n+ */\r\n+public class EurekaServiceDiscovery extends AbstractServiceDiscovery {\r\n+\r\n+    private final EventDispatcher eventDispatcher = getDefaultExtension();\r\n+\r\n+    private ApplicationInfoManager applicationInfoManager;\r\n+\r\n+    private EurekaClient eurekaClient;\r\n+\r\n+    private Set<String> subscribedServices;\r\n+\r\n+    /**\r\n+     * last apps hash code is used to identify the {@link Applications} is changed or not\r\n+     */\r\n+    private String lastAppsHashCode;\r\n+\r\n+    @Override\r\n+    public void initialize(URL registryURL) throws Exception {\r\n+        Properties eurekaConfigProperties = buildEurekaConfigProperties(registryURL);\r\n+        initConfigurationManager(eurekaConfigProperties);\r\n+        initSubscribedServices(registryURL);\r\n+    }\r\n+\r\n+    /**\r\n+     * Build the Properties whose {@link java.util.Map.Entry entries} are retrieved from\r\n+     * {@link URL#getParameters() the parameters of the specified URL}, which will be used in the Eureka's {@link ConfigurationManager}\r\n+     *\r\n+     * @param registryURL the {@link URL url} to connect Eureka\r\n+     * @return non-null\r\n+     */\r\n+    private Properties buildEurekaConfigProperties(URL registryURL) {\r\n+        Properties properties = new Properties();\r\n+        Map<String, String> parameters = registryURL.getParameters();\r\n+        setDefaultProperties(registryURL, properties);\r\n+        parameters.entrySet().stream()\r\n+                .filter(this::filterEurekaProperty)\r\n+                .forEach(propertyEntry -> {\r\n+                    properties.setProperty(propertyEntry.getKey(), propertyEntry.getValue());\r\n+                });\r\n+        return properties;\r\n+    }\r\n+\r\n+    /**\r\n+     * Initialize {@link #subscribedServices} property\r\n+     *\r\n+     * @param registryURL the {@link URL url} to connect Eureka\r\n+     */\r\n+    private void initSubscribedServices(URL registryURL) {\r\n+        this.subscribedServices = parseServices(registryURL.getParameter(SUBSCRIBED_SERVICE_NAMES_KEY));\r\n+        ;\r\n+    }\r\n+\r\n+    private boolean filterEurekaProperty(Map.Entry<String, String> propertyEntry) {\r\n+        String propertyName = propertyEntry.getKey();\r\n+        return propertyName.startsWith(\"eureka.\");\r\n+    }\r\n+\r\n+    private void setDefaultProperties(URL registryURL, Properties properties) {\r\n+        setDefaultServiceURL(registryURL, properties);\r\n+        setDefaultInitialInstanceInfoReplicationIntervalSeconds(properties);\r\n+    }\r\n+\r\n+    private void setDefaultServiceURL(URL registryURL, Properties properties) {\r\n+        StringBuilder defaultServiceURLBuilder = new StringBuilder(\"http://\")\r\n+                .append(registryURL.getHost())\r\n+                .append(\":\")\r\n+                .append(registryURL.getPort())\r\n+                .append(\"/eureka\");\r\n+        properties.setProperty(\"eureka.serviceUrl.default\", defaultServiceURLBuilder.toString());\r\n+    }\r\n+\r\n+    /**\r\n+     * Set the default property for {@link EurekaClientConfig#getInitialInstanceInfoReplicationIntervalSeconds()}\r\n+     * which means do register immediately\r\n+     *\r\n+     * @param properties {@link Properties}\r\n+     */\r\n+    private void setDefaultInitialInstanceInfoReplicationIntervalSeconds(Properties properties) {\r\n+        properties.setProperty(\"eureka.appinfo.initial.replicate.time\", \"0\");\r\n+    }\r\n+\r\n+    /**\r\n+     * Initialize {@link ConfigurationManager}\r\n+     *\r\n+     * @param eurekaConfigProperties the Eureka's {@link ConfigurationManager}\r\n+     */\r\n+    private void initConfigurationManager(Properties eurekaConfigProperties) {\r\n+        ConfigurationManager.loadProperties(eurekaConfigProperties);\r\n+    }\r\n+\r\n+    private void initApplicationInfoManager(ServiceInstance serviceInstance) {\r\n+        EurekaInstanceConfig eurekaInstanceConfig = buildEurekaInstanceConfig(serviceInstance);\r\n+        this.applicationInfoManager = new ApplicationInfoManager(eurekaInstanceConfig, (ApplicationInfoManager.OptionalArgs) null);\r\n+    }\r\n+\r\n+    /**\r\n+     * Initialize {@link #eurekaClient} property\r\n+     *\r\n+     * @param serviceInstance {@link ServiceInstance}\r\n+     */\r\n+    private void initEurekaClient(ServiceInstance serviceInstance) {\r\n+        if (eurekaClient != null) {\r\n+            return;\r\n+        }\r\n+        initApplicationInfoManager(serviceInstance);\r\n+        EurekaClient eurekaClient = createEurekaClient();\r\n+        registerEurekaEventListener(eurekaClient);\r\n+        // set eurekaClient\r\n+        this.eurekaClient = eurekaClient;\r\n+    }\r\n+\r\n+    private void registerEurekaEventListener(EurekaClient eurekaClient) {\r\n+        eurekaClient.registerEventListener(this::onEurekaEvent);\r\n+    }\r\n+\r\n+    private void onEurekaEvent(EurekaEvent event) {\r\n+        if (event instanceof CacheRefreshedEvent) {\r\n+            onCacheRefreshedEvent(CacheRefreshedEvent.class.cast(event));\r\n+        }\r\n+    }\r\n+\r\n+    private void onCacheRefreshedEvent(CacheRefreshedEvent event) {\r\n+        synchronized (this) { // Make sure thread-safe in async execution\r\n+            Applications applications = eurekaClient.getApplications();\r\n+            String appsHashCode = applications.getAppsHashCode();\r\n+            if (!Objects.equals(lastAppsHashCode, appsHashCode)) { // Changed\r\n+                // Dispatch Events\r\n+                dispatchServiceInstancesChangedEvent();\r\n+                lastAppsHashCode = appsHashCode; // update current result\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private void dispatchServiceInstancesChangedEvent() {\r\n+        subscribedServices.forEach((serviceName) -> {\r\n+            eventDispatcher.dispatch(new ServiceInstancesChangedEvent(serviceName, getInstances(serviceName)));\r\n+        });\r\n+    }\r\n+\r\n+    private EurekaClient createEurekaClient() {\r\n+        EurekaClientConfig eurekaClientConfig = new DefaultEurekaClientConfig();\r\n+        DiscoveryClient eurekaClient = new DiscoveryClient(applicationInfoManager, eurekaClientConfig);\r\n+        return eurekaClient;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() throws Exception {\r\n+        if (eurekaClient != null) {\r\n+            this.eurekaClient.shutdown();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doRegister(ServiceInstance serviceInstance) {\r\n+        initEurekaClient(serviceInstance);\r\n+        setInstanceStatus(InstanceInfo.InstanceStatus.UP);\r\n+    }\r\n+\r\n+    private void setInstanceStatus(InstanceInfo.InstanceStatus status) {\r\n+        if (applicationInfoManager != null) {\r\n+            this.applicationInfoManager.setInstanceStatus(status);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUpdate(ServiceInstance serviceInstance) {\r\n+        setInstanceStatus(serviceInstance.isHealthy() ? InstanceInfo.InstanceStatus.UP :\r\n+                InstanceInfo.InstanceStatus.UNKNOWN);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\r\n+        setInstanceStatus(InstanceInfo.InstanceStatus.OUT_OF_SERVICE);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<String> getServices() {\r\n+        Applications applications = this.eurekaClient.getApplications();\r\n+        if (applications == null) {\r\n+            return Collections.emptySet();\r\n+        }\r\n+        List<Application> registered = applications.getRegisteredApplications();\r\n+        Set<String> names = new LinkedHashSet<>();\r\n+        for (Application app : registered) {\r\n+            if (app.getInstances().isEmpty()) {\r\n+                continue;\r\n+            }\r\n+            names.add(app.getName().toLowerCase());\r\n+        }\r\n+        return names;\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<ServiceInstance> getInstances(String serviceName) throws NullPointerException {\r\n+        Application application = this.eurekaClient.getApplication(serviceName);\r\n+\r\n+        if (application == null) {\r\n+            return emptyList();\r\n+        }\r\n+\r\n+        List<InstanceInfo> infos = application.getInstances();\r\n+        List<ServiceInstance> instances = new ArrayList<>();\r\n+        for (InstanceInfo info : infos) {\r\n+            instances.add(buildServiceInstance(info));\r\n+        }\r\n+        return instances;\r\n+    }\r\n+\r\n+    private ServiceInstance buildServiceInstance(InstanceInfo instance) {\r\n+        DefaultServiceInstance serviceInstance = new DefaultServiceInstance(instance.getId(), instance.getAppName(),\r\n+                instance.getHostName(),\r\n+                instance.isPortEnabled(InstanceInfo.PortType.SECURE) ? instance.getSecurePort() : instance.getPort());\r\n+        serviceInstance.setMetadata(instance.getMetadata());\r\n+        return serviceInstance;\r\n+    }\r\n+\r\n+    private EurekaInstanceConfig buildEurekaInstanceConfig(ServiceInstance serviceInstance) {\r\n+        ConfigurableEurekaInstanceConfig eurekaInstanceConfig = new ConfigurableEurekaInstanceConfig()\r\n+                .setInstanceId(serviceInstance.getId())\r\n+                .setAppname(serviceInstance.getServiceName())\r\n+                .setIpAddress(serviceInstance.getHost())\r\n+                .setNonSecurePort(serviceInstance.getPort())\r\n+                .setMetadataMap(serviceInstance.getMetadata());\r\n+        return eurekaInstanceConfig;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/eureka/package-info.java", "source2": "org/apache/dubbo/registry/eureka/package-info.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,22 +1,22 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-/**\n- * The package contains the registry implementations for Netflix Eureka\n- *\n- * @since 2.7.5\n- */\n-package org.apache.dubbo.registry.eureka;\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+/**\r\n+ * The package contains the registry implementations for Netflix Eureka\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+package org.apache.dubbo.registry.eureka;\r\n"}, {"source1": "org/apache/dubbo/registry/nacos/NacosNamingServiceWrapper.java", "source2": "org/apache/dubbo/registry/nacos/NacosNamingServiceWrapper.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,87 +1,87 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.nacos;\n-\n-import com.alibaba.nacos.api.exception.NacosException;\n-import com.alibaba.nacos.api.naming.NamingService;\n-import com.alibaba.nacos.api.naming.listener.EventListener;\n-import com.alibaba.nacos.api.naming.pojo.Instance;\n-import com.alibaba.nacos.api.naming.pojo.ListView;\n-\n-import java.util.List;\n-\n-public class NacosNamingServiceWrapper {\n-\n-    private static final String INNERCLASS_SYMBOL = \"$\";\n-\n-    private static final String INNERCLASS_COMPATIBLE_SYMBOL = \"___\";\n-\n-    private NamingService namingService;\n-\n-    public NacosNamingServiceWrapper(NamingService namingService) {\n-        this.namingService = namingService;\n-    }\n-\n-\n-    public String getServerStatus() {\n-        return namingService.getServerStatus();\n-    }\n-\n-    public void subscribe(String serviceName, EventListener eventListener) throws NacosException {\n-        namingService.subscribe(handleInnerSymbol(serviceName), eventListener);\n-    }\n-\n-    public void subscribe(String serviceName, String group, EventListener eventListener) throws NacosException {\n-        namingService.subscribe(handleInnerSymbol(serviceName), group, eventListener);\n-    }\n-\n-    public List<Instance> getAllInstances(String serviceName, String group) throws NacosException {\n-        return namingService.getAllInstances(handleInnerSymbol(serviceName), group);\n-    }\n-\n-    public void registerInstance(String serviceName, String group, Instance instance) throws NacosException {\n-        namingService.registerInstance(handleInnerSymbol(serviceName), group, instance);\n-    }\n-\n-    public void deregisterInstance(String serviceName, String group, String ip, int port) throws NacosException {\n-        namingService.deregisterInstance(handleInnerSymbol(serviceName), group, ip, port);\n-    }\n-\n-\n-    public void deregisterInstance(String serviceName, String group, Instance instance) throws NacosException {\n-        namingService.deregisterInstance(handleInnerSymbol(serviceName), group, instance);\n-    }\n-\n-    public ListView<String> getServicesOfServer(int pageNo, int pageSize, String parameter) throws NacosException {\n-        return namingService.getServicesOfServer(pageNo, pageSize, parameter);\n-    }\n-\n-    public List<Instance> selectInstances(String serviceName, boolean healthy) throws NacosException {\n-        return namingService.selectInstances(handleInnerSymbol(serviceName), healthy);\n-    }\n-\n-    /**\n-     * see https://github.com/apache/dubbo/issues/7129\n-     * nacos service name just support `0-9a-zA-Z-._:`, grpc interface is inner interface, need compatible.\n-     */\n-    private String handleInnerSymbol(String serviceName) {\n-        if (serviceName == null) {\n-            return null;\n-        }\n-        return serviceName.replace(INNERCLASS_SYMBOL, INNERCLASS_COMPATIBLE_SYMBOL);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.nacos;\r\n+\r\n+import com.alibaba.nacos.api.exception.NacosException;\r\n+import com.alibaba.nacos.api.naming.NamingService;\r\n+import com.alibaba.nacos.api.naming.listener.EventListener;\r\n+import com.alibaba.nacos.api.naming.pojo.Instance;\r\n+import com.alibaba.nacos.api.naming.pojo.ListView;\r\n+\r\n+import java.util.List;\r\n+\r\n+public class NacosNamingServiceWrapper {\r\n+\r\n+    private static final String INNERCLASS_SYMBOL = \"$\";\r\n+\r\n+    private static final String INNERCLASS_COMPATIBLE_SYMBOL = \"___\";\r\n+\r\n+    private NamingService namingService;\r\n+\r\n+    public NacosNamingServiceWrapper(NamingService namingService) {\r\n+        this.namingService = namingService;\r\n+    }\r\n+\r\n+\r\n+    public String getServerStatus() {\r\n+        return namingService.getServerStatus();\r\n+    }\r\n+\r\n+    public void subscribe(String serviceName, EventListener eventListener) throws NacosException {\r\n+        namingService.subscribe(handleInnerSymbol(serviceName), eventListener);\r\n+    }\r\n+\r\n+    public void subscribe(String serviceName, String group, EventListener eventListener) throws NacosException {\r\n+        namingService.subscribe(handleInnerSymbol(serviceName), group, eventListener);\r\n+    }\r\n+\r\n+    public List<Instance> getAllInstances(String serviceName, String group) throws NacosException {\r\n+        return namingService.getAllInstances(handleInnerSymbol(serviceName), group);\r\n+    }\r\n+\r\n+    public void registerInstance(String serviceName, String group, Instance instance) throws NacosException {\r\n+        namingService.registerInstance(handleInnerSymbol(serviceName), group, instance);\r\n+    }\r\n+\r\n+    public void deregisterInstance(String serviceName, String group, String ip, int port) throws NacosException {\r\n+        namingService.deregisterInstance(handleInnerSymbol(serviceName), group, ip, port);\r\n+    }\r\n+\r\n+\r\n+    public void deregisterInstance(String serviceName, String group, Instance instance) throws NacosException {\r\n+        namingService.deregisterInstance(handleInnerSymbol(serviceName), group, instance);\r\n+    }\r\n+\r\n+    public ListView<String> getServicesOfServer(int pageNo, int pageSize, String parameter) throws NacosException {\r\n+        return namingService.getServicesOfServer(pageNo, pageSize, parameter);\r\n+    }\r\n+\r\n+    public List<Instance> selectInstances(String serviceName, boolean healthy) throws NacosException {\r\n+        return namingService.selectInstances(handleInnerSymbol(serviceName), healthy);\r\n+    }\r\n+\r\n+    /**\r\n+     * see https://github.com/apache/dubbo/issues/7129\r\n+     * nacos service name just support `0-9a-zA-Z-._:`, grpc interface is inner interface, need compatible.\r\n+     */\r\n+    private String handleInnerSymbol(String serviceName) {\r\n+        if (serviceName == null) {\r\n+            return null;\r\n+        }\r\n+        return serviceName.replace(INNERCLASS_SYMBOL, INNERCLASS_COMPATIBLE_SYMBOL);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/nacos/NacosRegistry.java", "source2": "org/apache/dubbo/registry/nacos/NacosRegistry.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,624 +1,624 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.nacos;\n-\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.URLBuilder;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.common.utils.UrlUtils;\n-import org.apache.dubbo.registry.NotifyListener;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.nacos.util.NacosInstanceManageUtil;\n-import org.apache.dubbo.registry.nacos.util.NacosNamingServiceUtils;\n-import org.apache.dubbo.registry.support.FailbackRegistry;\n-\n-import com.alibaba.nacos.api.common.Constants;\n-import com.alibaba.nacos.api.exception.NacosException;\n-import com.alibaba.nacos.api.naming.NamingService;\n-import com.alibaba.nacos.api.naming.listener.EventListener;\n-import com.alibaba.nacos.api.naming.listener.NamingEvent;\n-import com.alibaba.nacos.api.naming.pojo.Instance;\n-import com.alibaba.nacos.api.naming.pojo.ListView;\n-import com.google.common.collect.Lists;\n-\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.Collection;\n-import java.util.HashMap;\n-import java.util.LinkedHashSet;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.concurrent.Executors;\n-import java.util.concurrent.ScheduledExecutorService;\n-import java.util.concurrent.TimeUnit;\n-import java.util.stream.Collectors;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.CATEGORY_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.CONFIGURATORS_CATEGORY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.CONSUMERS_CATEGORY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.DEFAULT_CATEGORY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.EMPTY_PROTOCOL;\n-import static org.apache.dubbo.common.constants.RegistryConstants.PROVIDERS_CATEGORY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.ROUTERS_CATEGORY;\n-import static org.apache.dubbo.registry.Constants.ADMIN_PROTOCOL;\n-import static org.apache.dubbo.registry.nacos.NacosServiceName.valueOf;\n-\n-/**\n- * Nacos {@link Registry}\n- *\n- * @see #SERVICE_NAME_SEPARATOR\n- * @see #PAGINATION_SIZE\n- * @see #LOOKUP_INTERVAL\n- * @since 2.6.5\n- */\n-public class NacosRegistry extends FailbackRegistry {\n-\n-    /**\n-     * All supported categories\n-     */\n-    private static final List<String> ALL_SUPPORTED_CATEGORIES = Arrays.asList(\n-            PROVIDERS_CATEGORY,\n-            CONSUMERS_CATEGORY,\n-            ROUTERS_CATEGORY,\n-            CONFIGURATORS_CATEGORY\n-    );\n-\n-    private static final int CATEGORY_INDEX = 0;\n-\n-    private static final int SERVICE_INTERFACE_INDEX = 1;\n-\n-    private static final int SERVICE_VERSION_INDEX = 2;\n-\n-    private static final int SERVICE_GROUP_INDEX = 3;\n-\n-    private static final String WILDCARD = \"*\";\n-\n-    /**\n-     * The separator for service name\n-     * Change a constant to be configurable, it's designed for Windows file name that is compatible with old\n-     * Nacos binary release(< 0.6.1)\n-     */\n-    private static final String SERVICE_NAME_SEPARATOR = System.getProperty(\"nacos.service.name.separator\", \":\");\n-\n-    /**\n-     * The pagination size of query for Nacos service names(only for Dubbo-OPS)\n-     */\n-    private static final int PAGINATION_SIZE = Integer.getInteger(\"nacos.service.names.pagination.size\", 100);\n-\n-    /**\n-     * The interval in second of lookup Nacos service names(only for Dubbo-OPS)\n-     */\n-    private static final long LOOKUP_INTERVAL = Long.getLong(\"nacos.service.names.lookup.interval\", 30);\n-\n-    /**\n-     * {@link ScheduledExecutorService} lookup Nacos service names(only for Dubbo-OPS)\n-     */\n-    private volatile ScheduledExecutorService scheduledExecutorService;\n-\n-    private final NacosNamingServiceWrapper namingService;\n-\n-    public NacosRegistry(URL url, NacosNamingServiceWrapper namingService) {\n-        super(url);\n-        this.namingService = namingService;\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        return \"UP\".equals(namingService.getServerStatus());\n-    }\n-\n-    @Override\n-    public List<URL> lookup(final URL url) {\n-        final List<URL> urls = new LinkedList<>();\n-        execute(namingService -> {\n-            Set<String> serviceNames = getServiceNames(url, null);\n-            for (String serviceName : serviceNames) {\n-                List<Instance> instances = namingService.getAllInstances(serviceName,\n-                        getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP));\n-                urls.addAll(buildURLs(url, instances));\n-            }\n-        });\n-        return urls;\n-    }\n-\n-    @Override\n-    public void doRegister(URL url) {\n-        final String serviceName = getServiceName(url);\n-\n-        final Instance instance = createInstance(url);\n-        /**\n-         *  namingService.registerInstance with {@link org.apache.dubbo.registry.support.AbstractRegistry#registryUrl}\n-         *  default {@link DEFAULT_GROUP}\n-         *\n-         * in https://github.com/apache/dubbo/issues/5978\n-         */\n-        execute(namingService -> namingService.registerInstance(serviceName,\n-                getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP), instance));\n-    }\n-\n-    @Override\n-    public void doUnregister(final URL url) {\n-        execute(namingService -> {\n-            String serviceName = getServiceName(url);\n-            Instance instance = createInstance(url);\n-            namingService.deregisterInstance(serviceName,\n-                    getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP),\n-                    instance.getIp(),\n-                    instance.getPort());\n-        });\n-    }\n-\n-    @Override\n-    public void doSubscribe(final URL url, final NotifyListener listener) {\n-        Set<String> serviceNames = getServiceNames(url, listener);\n-\n-        //Set corresponding serviceNames for easy search later\n-        if (isServiceNamesWithCompatibleMode(url)) {\n-            for (String serviceName : serviceNames) {\n-                NacosInstanceManageUtil.setCorrespondingServiceNames(serviceName, serviceNames);\n-            }\n-        }\n-\n-        doSubscribe(url, listener, serviceNames);\n-    }\n-\n-    private void doSubscribe(final URL url, final NotifyListener listener, final Set<String> serviceNames) {\n-        execute(namingService -> {\n-            if (isServiceNamesWithCompatibleMode(url)) {\n-                List<Instance> allCorrespondingInstanceList = Lists.newArrayList();\n-\n-                /**\n-                 * Get all instances with serviceNames to avoid instance overwrite and but with empty instance mentioned\n-                 * in https://github.com/apache/dubbo/issues/5885 and https://github.com/apache/dubbo/issues/5899\n-                 *\n-                 * namingService.getAllInstances with {@link org.apache.dubbo.registry.support.AbstractRegistry#registryUrl}\n-                 * default {@link DEFAULT_GROUP}\n-                 *\n-                 * in https://github.com/apache/dubbo/issues/5978\n-                 */\n-                for (String serviceName : serviceNames) {\n-                    List<Instance> instances = namingService.getAllInstances(serviceName,\n-                            getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP));\n-                    NacosInstanceManageUtil.initOrRefreshServiceInstanceList(serviceName, instances);\n-                    allCorrespondingInstanceList.addAll(instances);\n-                }\n-                notifySubscriber(url, listener, allCorrespondingInstanceList);\n-                for (String serviceName : serviceNames) {\n-                    subscribeEventListener(serviceName, url, listener);\n-                }\n-            } else {\n-                List<Instance> instances = new LinkedList<>();\n-                for (String serviceName : serviceNames) {\n-                    instances.addAll(namingService.getAllInstances(serviceName\n-                            , getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP)));\n-                    notifySubscriber(url, listener, instances);\n-                    subscribeEventListener(serviceName, url, listener);\n-                }\n-            }\n-\n-        });\n-    }\n-\n-    /**\n-     * Since 2.7.6 the legacy service name will be added to serviceNames\n-     * to fix bug with https://github.com/apache/dubbo/issues/5442\n-     *\n-     * @param url\n-     * @return\n-     */\n-    private boolean isServiceNamesWithCompatibleMode(final URL url) {\n-        return !isAdminProtocol(url) && createServiceName(url).isConcrete();\n-    }\n-\n-    @Override\n-    public void doUnsubscribe(URL url, NotifyListener listener) {\n-        if (isAdminProtocol(url)) {\n-            shutdownServiceNamesLookup();\n-        }\n-    }\n-\n-    private void shutdownServiceNamesLookup() {\n-        if (scheduledExecutorService != null) {\n-            scheduledExecutorService.shutdown();\n-        }\n-    }\n-\n-    /**\n-     * Get the service names from the specified {@link URL url}\n-     *\n-     * @param url      {@link URL}\n-     * @param listener {@link NotifyListener}\n-     * @return non-null\n-     */\n-    private Set<String> getServiceNames(URL url, NotifyListener listener) {\n-        if (isAdminProtocol(url)) {\n-            scheduleServiceNamesLookup(url, listener);\n-            return getServiceNamesForOps(url);\n-        } else {\n-            return getServiceNames0(url);\n-        }\n-    }\n-\n-    private Set<String> getServiceNames0(URL url) {\n-        NacosServiceName serviceName = createServiceName(url);\n-\n-        final Set<String> serviceNames;\n-\n-        if (serviceName.isConcrete()) { // is the concrete service name\n-            serviceNames = new LinkedHashSet<>();\n-            serviceNames.add(serviceName.toString());\n-            // Add the legacy service name since 2.7.6\n-            String legacySubscribedServiceName = getLegacySubscribedServiceName(url);\n-            if (!serviceName.toString().equals(legacySubscribedServiceName)) {\n-                //avoid duplicated service names\n-                serviceNames.add(legacySubscribedServiceName);\n-            }\n-        } else {\n-            serviceNames = filterServiceNames(serviceName);\n-        }\n-\n-        return serviceNames;\n-    }\n-\n-    private Set<String> filterServiceNames(NacosServiceName serviceName) {\n-        Set<String> serviceNames = new LinkedHashSet<>();\n-\n-        execute(namingService -> {\n-\n-            serviceNames.addAll(namingService.getServicesOfServer(1, Integer.MAX_VALUE,\n-                    getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP)).getData()\n-                    .stream()\n-                    .map(NacosServiceName::new)\n-                    .filter(serviceName::isCompatible)\n-                    .map(NacosServiceName::toString)\n-                    .collect(Collectors.toList()));\n-\n-        });\n-\n-        return serviceNames;\n-    }\n-\n-    /**\n-     * Get the legacy subscribed service name for compatible with Dubbo 2.7.3 and below\n-     *\n-     * @param url {@link URL}\n-     * @return non-null\n-     * @since 2.7.6\n-     */\n-    private String getLegacySubscribedServiceName(URL url) {\n-        StringBuilder serviceNameBuilder = new StringBuilder(DEFAULT_CATEGORY);\n-        appendIfPresent(serviceNameBuilder, url, INTERFACE_KEY);\n-        appendIfPresent(serviceNameBuilder, url, VERSION_KEY);\n-        appendIfPresent(serviceNameBuilder, url, GROUP_KEY);\n-        return serviceNameBuilder.toString();\n-    }\n-\n-    private void appendIfPresent(StringBuilder target, URL url, String parameterName) {\n-        String parameterValue = url.getParameter(parameterName);\n-        if (!StringUtils.isBlank(parameterValue)) {\n-            target.append(SERVICE_NAME_SEPARATOR).append(parameterValue);\n-        }\n-    }\n-\n-\n-    private boolean isAdminProtocol(URL url) {\n-        return ADMIN_PROTOCOL.equals(url.getProtocol());\n-    }\n-\n-    private void scheduleServiceNamesLookup(final URL url, final NotifyListener listener) {\n-        if (scheduledExecutorService == null) {\n-            scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();\n-            scheduledExecutorService.scheduleAtFixedRate(() -> {\n-                Set<String> serviceNames = getAllServiceNames();\n-                filterData(serviceNames, serviceName -> {\n-                    boolean accepted = false;\n-                    for (String category : ALL_SUPPORTED_CATEGORIES) {\n-                        String prefix = category + SERVICE_NAME_SEPARATOR;\n-                        if (serviceName != null && serviceName.startsWith(prefix)) {\n-                            accepted = true;\n-                            break;\n-                        }\n-                    }\n-                    return accepted;\n-                });\n-                doSubscribe(url, listener, serviceNames);\n-            }, LOOKUP_INTERVAL, LOOKUP_INTERVAL, TimeUnit.SECONDS);\n-        }\n-    }\n-\n-    /**\n-     * Get the service names for Dubbo OPS\n-     *\n-     * @param url {@link URL}\n-     * @return non-null\n-     */\n-    private Set<String> getServiceNamesForOps(URL url) {\n-        Set<String> serviceNames = getAllServiceNames();\n-        filterServiceNames(serviceNames, url);\n-        return serviceNames;\n-    }\n-\n-    private Set<String> getAllServiceNames() {\n-\n-        final Set<String> serviceNames = new LinkedHashSet<>();\n-\n-        execute(namingService -> {\n-\n-            int pageIndex = 1;\n-            ListView<String> listView = namingService.getServicesOfServer(pageIndex, PAGINATION_SIZE,\n-                    getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP));\n-            // First page data\n-            List<String> firstPageData = listView.getData();\n-            // Append first page into list\n-            serviceNames.addAll(firstPageData);\n-            // the total count\n-            int count = listView.getCount();\n-            // the number of pages\n-            int pageNumbers = count / PAGINATION_SIZE;\n-            int remainder = count % PAGINATION_SIZE;\n-            // remain\n-            if (remainder > 0) {\n-                pageNumbers += 1;\n-            }\n-            // If more than 1 page\n-            while (pageIndex < pageNumbers) {\n-                listView = namingService.getServicesOfServer(++pageIndex, PAGINATION_SIZE,\n-                        getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP));\n-                serviceNames.addAll(listView.getData());\n-            }\n-\n-        });\n-\n-        return serviceNames;\n-    }\n-\n-    private void filterServiceNames(Set<String> serviceNames, URL url) {\n-\n-        final List<String> categories = getCategories(url);\n-\n-        final String targetServiceInterface = url.getServiceInterface();\n-\n-        final String targetVersion = url.getParameter(VERSION_KEY, \"\");\n-\n-        final String targetGroup = url.getParameter(GROUP_KEY, \"\");\n-\n-        filterData(serviceNames, serviceName -> {\n-            // split service name to segments\n-            // (required) segments[0] = category\n-            // (required) segments[1] = serviceInterface\n-            // (optional) segments[2] = version\n-            // (optional) segments[3] = group\n-            String[] segments = serviceName.split(SERVICE_NAME_SEPARATOR, -1);\n-            int length = segments.length;\n-            if (length != 4) { // must present 4 segments\n-                return false;\n-            }\n-\n-            String category = segments[CATEGORY_INDEX];\n-            if (!categories.contains(category)) { // no match category\n-                return false;\n-            }\n-\n-            String serviceInterface = segments[SERVICE_INTERFACE_INDEX];\n-            // no match service interface\n-            if (!WILDCARD.equals(targetServiceInterface) &&\n-                    !StringUtils.isEquals(targetServiceInterface, serviceInterface)) {\n-                return false;\n-            }\n-\n-            // no match service version\n-            String version = segments[SERVICE_VERSION_INDEX];\n-            if (!WILDCARD.equals(targetVersion) && !StringUtils.isEquals(targetVersion, version)) {\n-                return false;\n-            }\n-\n-            String group = segments[SERVICE_GROUP_INDEX];\n-            return group == null || WILDCARD.equals(targetGroup) || StringUtils.isEquals(targetGroup, group);\n-        });\n-    }\n-\n-    private <T> void filterData(Collection<T> collection, NacosDataFilter<T> filter) {\n-        // remove if not accept\n-        collection.removeIf(data -> !filter.accept(data));\n-    }\n-\n-    @Deprecated\n-    private List<String> doGetServiceNames(URL url) {\n-        List<String> categories = getCategories(url);\n-        List<String> serviceNames = new ArrayList<>(categories.size());\n-        for (String category : categories) {\n-            final String serviceName = getServiceName(url, category);\n-            serviceNames.add(serviceName);\n-        }\n-        return serviceNames;\n-    }\n-\n-    private List<URL> toUrlWithEmpty(URL consumerURL, Collection<Instance> instances) {\n-        List<URL> urls = buildURLs(consumerURL, instances);\n-        if (urls.size() == 0) {\n-            URL empty = URLBuilder.from(consumerURL)\n-                    .setProtocol(EMPTY_PROTOCOL)\n-                    .addParameter(CATEGORY_KEY, DEFAULT_CATEGORY)\n-                    .build();\n-            urls.add(empty);\n-        }\n-        return urls;\n-    }\n-\n-    private List<URL> buildURLs(URL consumerURL, Collection<Instance> instances) {\n-        List<URL> urls = new LinkedList<>();\n-        if (instances != null && !instances.isEmpty()) {\n-            for (Instance instance : instances) {\n-                URL url = buildURL(instance);\n-                if (UrlUtils.isMatch(consumerURL, url)) {\n-                    urls.add(url);\n-                }\n-            }\n-        }\n-        return urls;\n-    }\n-\n-    private void subscribeEventListener(String serviceName, final URL url, final NotifyListener listener)\n-            throws NacosException {\n-        EventListener eventListener = event -> {\n-            if (event instanceof NamingEvent) {\n-                NamingEvent e = (NamingEvent) event;\n-                List<Instance> instances = e.getInstances();\n-\n-\n-                if (isServiceNamesWithCompatibleMode(url)) {\n-                    /**\n-                     * Get all instances with corresponding serviceNames to avoid instance overwrite and but with empty instance mentioned\n-                     * in https://github.com/apache/dubbo/issues/5885 and https://github.com/apache/dubbo/issues/5899\n-                     */\n-                    NacosInstanceManageUtil.initOrRefreshServiceInstanceList(serviceName, instances);\n-                    instances = NacosInstanceManageUtil.getAllCorrespondingServiceInstanceList(serviceName);\n-                }\n-\n-                notifySubscriber(url, listener, instances);\n-            }\n-        };\n-        namingService.subscribe(serviceName,\n-                getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP),\n-                eventListener);\n-    }\n-\n-    /**\n-     * Notify the Enabled {@link Instance instances} to subscriber.\n-     *\n-     * @param url       {@link URL}\n-     * @param listener  {@link NotifyListener}\n-     * @param instances all {@link Instance instances}\n-     */\n-    private void notifySubscriber(URL url, NotifyListener listener, Collection<Instance> instances) {\n-        List<Instance> enabledInstances = new LinkedList<>(instances);\n-        if (enabledInstances.size() > 0) {\n-            //  Instances\n-            filterEnabledInstances(enabledInstances);\n-        }\n-        List<URL> urls = toUrlWithEmpty(url, enabledInstances);\n-        NacosRegistry.this.notify(url, listener, urls);\n-    }\n-\n-    /**\n-     * Get the categories from {@link URL}\n-     *\n-     * @param url {@link URL}\n-     * @return non-null array\n-     */\n-    private List<String> getCategories(URL url) {\n-        return ANY_VALUE.equals(url.getServiceInterface()) ?\n-                ALL_SUPPORTED_CATEGORIES : Arrays.asList(DEFAULT_CATEGORY);\n-    }\n-\n-    private URL buildURL(Instance instance) {\n-        Map<String, String> metadata = instance.getMetadata();\n-        String protocol = metadata.get(PROTOCOL_KEY);\n-        String path = metadata.get(PATH_KEY);\n-        return new URL(protocol,\n-                instance.getIp(),\n-                instance.getPort(),\n-                path,\n-                instance.getMetadata());\n-    }\n-\n-    private Instance createInstance(URL url) {\n-        // Append default category if absent\n-        String category = url.getParameter(CATEGORY_KEY, DEFAULT_CATEGORY);\n-        URL newURL = url.addParameter(CATEGORY_KEY, category);\n-        newURL = newURL.addParameter(PROTOCOL_KEY, url.getProtocol());\n-        newURL = newURL.addParameter(PATH_KEY, url.getPath());\n-        newURL = newURL.addParameters(NacosNamingServiceUtils.getNacosPreservedParam(getUrl()));\n-        String ip = url.getHost();\n-        int port = url.getPort();\n-        Instance instance = new Instance();\n-        instance.setIp(ip);\n-        instance.setPort(port);\n-        instance.setMetadata(new HashMap<>(newURL.getParameters()));\n-        return instance;\n-    }\n-\n-    private NacosServiceName createServiceName(URL url) {\n-        return valueOf(url);\n-    }\n-\n-    private String getServiceName(URL url) {\n-        return getServiceName(url, url.getParameter(CATEGORY_KEY, DEFAULT_CATEGORY));\n-    }\n-\n-    private String getServiceName(URL url, String category) {\n-        return category + SERVICE_NAME_SEPARATOR + url.getColonSeparatedKey();\n-    }\n-\n-    private void execute(NamingServiceCallback callback) {\n-        try {\n-            callback.callback(namingService);\n-        } catch (NacosException e) {\n-            if (logger.isErrorEnabled()) {\n-                logger.error(e.getErrMsg(), e);\n-            }\n-        }\n-    }\n-\n-    private void filterEnabledInstances(Collection<Instance> instances) {\n-        filterData(instances, Instance::isEnabled);\n-    }\n-\n-    /**\n-     * A filter for Nacos data\n-     *\n-     * @since 2.6.5\n-     */\n-    private interface NacosDataFilter<T> {\n-\n-        /**\n-         * Tests whether or not the specified data should be accepted.\n-         *\n-         * @param data The data to be tested\n-         * @return <code>true</code> if and only if <code>data</code>\n-         * should be accepted\n-         */\n-        boolean accept(T data);\n-\n-    }\n-\n-    /**\n-     * {@link NamingService} Callback\n-     *\n-     * @since 2.6.5\n-     */\n-    interface NamingServiceCallback {\n-\n-        /**\n-         * Callback\n-         *\n-         * @param namingService {@link NamingService}\n-         * @throws NacosException\n-         */\n-        void callback(NacosNamingServiceWrapper namingService) throws NacosException;\n-\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.nacos;\r\n+\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.URLBuilder;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.common.utils.UrlUtils;\r\n+import org.apache.dubbo.registry.NotifyListener;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.nacos.util.NacosInstanceManageUtil;\r\n+import org.apache.dubbo.registry.nacos.util.NacosNamingServiceUtils;\r\n+import org.apache.dubbo.registry.support.FailbackRegistry;\r\n+\r\n+import com.alibaba.nacos.api.common.Constants;\r\n+import com.alibaba.nacos.api.exception.NacosException;\r\n+import com.alibaba.nacos.api.naming.NamingService;\r\n+import com.alibaba.nacos.api.naming.listener.EventListener;\r\n+import com.alibaba.nacos.api.naming.listener.NamingEvent;\r\n+import com.alibaba.nacos.api.naming.pojo.Instance;\r\n+import com.alibaba.nacos.api.naming.pojo.ListView;\r\n+import com.google.common.collect.Lists;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.Collection;\r\n+import java.util.HashMap;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.concurrent.Executors;\r\n+import java.util.concurrent.ScheduledExecutorService;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.stream.Collectors;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.CATEGORY_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.CONFIGURATORS_CATEGORY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.CONSUMERS_CATEGORY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.DEFAULT_CATEGORY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.EMPTY_PROTOCOL;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.PROVIDERS_CATEGORY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.ROUTERS_CATEGORY;\r\n+import static org.apache.dubbo.registry.Constants.ADMIN_PROTOCOL;\r\n+import static org.apache.dubbo.registry.nacos.NacosServiceName.valueOf;\r\n+\r\n+/**\r\n+ * Nacos {@link Registry}\r\n+ *\r\n+ * @see #SERVICE_NAME_SEPARATOR\r\n+ * @see #PAGINATION_SIZE\r\n+ * @see #LOOKUP_INTERVAL\r\n+ * @since 2.6.5\r\n+ */\r\n+public class NacosRegistry extends FailbackRegistry {\r\n+\r\n+    /**\r\n+     * All supported categories\r\n+     */\r\n+    private static final List<String> ALL_SUPPORTED_CATEGORIES = Arrays.asList(\r\n+            PROVIDERS_CATEGORY,\r\n+            CONSUMERS_CATEGORY,\r\n+            ROUTERS_CATEGORY,\r\n+            CONFIGURATORS_CATEGORY\r\n+    );\r\n+\r\n+    private static final int CATEGORY_INDEX = 0;\r\n+\r\n+    private static final int SERVICE_INTERFACE_INDEX = 1;\r\n+\r\n+    private static final int SERVICE_VERSION_INDEX = 2;\r\n+\r\n+    private static final int SERVICE_GROUP_INDEX = 3;\r\n+\r\n+    private static final String WILDCARD = \"*\";\r\n+\r\n+    /**\r\n+     * The separator for service name\r\n+     * Change a constant to be configurable, it's designed for Windows file name that is compatible with old\r\n+     * Nacos binary release(< 0.6.1)\r\n+     */\r\n+    private static final String SERVICE_NAME_SEPARATOR = System.getProperty(\"nacos.service.name.separator\", \":\");\r\n+\r\n+    /**\r\n+     * The pagination size of query for Nacos service names(only for Dubbo-OPS)\r\n+     */\r\n+    private static final int PAGINATION_SIZE = Integer.getInteger(\"nacos.service.names.pagination.size\", 100);\r\n+\r\n+    /**\r\n+     * The interval in second of lookup Nacos service names(only for Dubbo-OPS)\r\n+     */\r\n+    private static final long LOOKUP_INTERVAL = Long.getLong(\"nacos.service.names.lookup.interval\", 30);\r\n+\r\n+    /**\r\n+     * {@link ScheduledExecutorService} lookup Nacos service names(only for Dubbo-OPS)\r\n+     */\r\n+    private volatile ScheduledExecutorService scheduledExecutorService;\r\n+\r\n+    private final NacosNamingServiceWrapper namingService;\r\n+\r\n+    public NacosRegistry(URL url, NacosNamingServiceWrapper namingService) {\r\n+        super(url);\r\n+        this.namingService = namingService;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        return \"UP\".equals(namingService.getServerStatus());\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<URL> lookup(final URL url) {\r\n+        final List<URL> urls = new LinkedList<>();\r\n+        execute(namingService -> {\r\n+            Set<String> serviceNames = getServiceNames(url, null);\r\n+            for (String serviceName : serviceNames) {\r\n+                List<Instance> instances = namingService.getAllInstances(serviceName,\r\n+                        getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP));\r\n+                urls.addAll(buildURLs(url, instances));\r\n+            }\r\n+        });\r\n+        return urls;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doRegister(URL url) {\r\n+        final String serviceName = getServiceName(url);\r\n+\r\n+        final Instance instance = createInstance(url);\r\n+        /**\r\n+         *  namingService.registerInstance with {@link org.apache.dubbo.registry.support.AbstractRegistry#registryUrl}\r\n+         *  default {@link DEFAULT_GROUP}\r\n+         *\r\n+         * in https://github.com/apache/dubbo/issues/5978\r\n+         */\r\n+        execute(namingService -> namingService.registerInstance(serviceName,\r\n+                getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP), instance));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUnregister(final URL url) {\r\n+        execute(namingService -> {\r\n+            String serviceName = getServiceName(url);\r\n+            Instance instance = createInstance(url);\r\n+            namingService.deregisterInstance(serviceName,\r\n+                    getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP),\r\n+                    instance.getIp(),\r\n+                    instance.getPort());\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doSubscribe(final URL url, final NotifyListener listener) {\r\n+        Set<String> serviceNames = getServiceNames(url, listener);\r\n+\r\n+        //Set corresponding serviceNames for easy search later\r\n+        if (isServiceNamesWithCompatibleMode(url)) {\r\n+            for (String serviceName : serviceNames) {\r\n+                NacosInstanceManageUtil.setCorrespondingServiceNames(serviceName, serviceNames);\r\n+            }\r\n+        }\r\n+\r\n+        doSubscribe(url, listener, serviceNames);\r\n+    }\r\n+\r\n+    private void doSubscribe(final URL url, final NotifyListener listener, final Set<String> serviceNames) {\r\n+        execute(namingService -> {\r\n+            if (isServiceNamesWithCompatibleMode(url)) {\r\n+                List<Instance> allCorrespondingInstanceList = Lists.newArrayList();\r\n+\r\n+                /**\r\n+                 * Get all instances with serviceNames to avoid instance overwrite and but with empty instance mentioned\r\n+                 * in https://github.com/apache/dubbo/issues/5885 and https://github.com/apache/dubbo/issues/5899\r\n+                 *\r\n+                 * namingService.getAllInstances with {@link org.apache.dubbo.registry.support.AbstractRegistry#registryUrl}\r\n+                 * default {@link DEFAULT_GROUP}\r\n+                 *\r\n+                 * in https://github.com/apache/dubbo/issues/5978\r\n+                 */\r\n+                for (String serviceName : serviceNames) {\r\n+                    List<Instance> instances = namingService.getAllInstances(serviceName,\r\n+                            getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP));\r\n+                    NacosInstanceManageUtil.initOrRefreshServiceInstanceList(serviceName, instances);\r\n+                    allCorrespondingInstanceList.addAll(instances);\r\n+                }\r\n+                notifySubscriber(url, listener, allCorrespondingInstanceList);\r\n+                for (String serviceName : serviceNames) {\r\n+                    subscribeEventListener(serviceName, url, listener);\r\n+                }\r\n+            } else {\r\n+                List<Instance> instances = new LinkedList<>();\r\n+                for (String serviceName : serviceNames) {\r\n+                    instances.addAll(namingService.getAllInstances(serviceName\r\n+                            , getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP)));\r\n+                    notifySubscriber(url, listener, instances);\r\n+                    subscribeEventListener(serviceName, url, listener);\r\n+                }\r\n+            }\r\n+\r\n+        });\r\n+    }\r\n+\r\n+    /**\r\n+     * Since 2.7.6 the legacy service name will be added to serviceNames\r\n+     * to fix bug with https://github.com/apache/dubbo/issues/5442\r\n+     *\r\n+     * @param url\r\n+     * @return\r\n+     */\r\n+    private boolean isServiceNamesWithCompatibleMode(final URL url) {\r\n+        return !isAdminProtocol(url) && createServiceName(url).isConcrete();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUnsubscribe(URL url, NotifyListener listener) {\r\n+        if (isAdminProtocol(url)) {\r\n+            shutdownServiceNamesLookup();\r\n+        }\r\n+    }\r\n+\r\n+    private void shutdownServiceNamesLookup() {\r\n+        if (scheduledExecutorService != null) {\r\n+            scheduledExecutorService.shutdown();\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the service names from the specified {@link URL url}\r\n+     *\r\n+     * @param url      {@link URL}\r\n+     * @param listener {@link NotifyListener}\r\n+     * @return non-null\r\n+     */\r\n+    private Set<String> getServiceNames(URL url, NotifyListener listener) {\r\n+        if (isAdminProtocol(url)) {\r\n+            scheduleServiceNamesLookup(url, listener);\r\n+            return getServiceNamesForOps(url);\r\n+        } else {\r\n+            return getServiceNames0(url);\r\n+        }\r\n+    }\r\n+\r\n+    private Set<String> getServiceNames0(URL url) {\r\n+        NacosServiceName serviceName = createServiceName(url);\r\n+\r\n+        final Set<String> serviceNames;\r\n+\r\n+        if (serviceName.isConcrete()) { // is the concrete service name\r\n+            serviceNames = new LinkedHashSet<>();\r\n+            serviceNames.add(serviceName.toString());\r\n+            // Add the legacy service name since 2.7.6\r\n+            String legacySubscribedServiceName = getLegacySubscribedServiceName(url);\r\n+            if (!serviceName.toString().equals(legacySubscribedServiceName)) {\r\n+                //avoid duplicated service names\r\n+                serviceNames.add(legacySubscribedServiceName);\r\n+            }\r\n+        } else {\r\n+            serviceNames = filterServiceNames(serviceName);\r\n+        }\r\n+\r\n+        return serviceNames;\r\n+    }\r\n+\r\n+    private Set<String> filterServiceNames(NacosServiceName serviceName) {\r\n+        Set<String> serviceNames = new LinkedHashSet<>();\r\n+\r\n+        execute(namingService -> {\r\n+\r\n+            serviceNames.addAll(namingService.getServicesOfServer(1, Integer.MAX_VALUE,\r\n+                    getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP)).getData()\r\n+                    .stream()\r\n+                    .map(NacosServiceName::new)\r\n+                    .filter(serviceName::isCompatible)\r\n+                    .map(NacosServiceName::toString)\r\n+                    .collect(Collectors.toList()));\r\n+\r\n+        });\r\n+\r\n+        return serviceNames;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the legacy subscribed service name for compatible with Dubbo 2.7.3 and below\r\n+     *\r\n+     * @param url {@link URL}\r\n+     * @return non-null\r\n+     * @since 2.7.6\r\n+     */\r\n+    private String getLegacySubscribedServiceName(URL url) {\r\n+        StringBuilder serviceNameBuilder = new StringBuilder(DEFAULT_CATEGORY);\r\n+        appendIfPresent(serviceNameBuilder, url, INTERFACE_KEY);\r\n+        appendIfPresent(serviceNameBuilder, url, VERSION_KEY);\r\n+        appendIfPresent(serviceNameBuilder, url, GROUP_KEY);\r\n+        return serviceNameBuilder.toString();\r\n+    }\r\n+\r\n+    private void appendIfPresent(StringBuilder target, URL url, String parameterName) {\r\n+        String parameterValue = url.getParameter(parameterName);\r\n+        if (!StringUtils.isBlank(parameterValue)) {\r\n+            target.append(SERVICE_NAME_SEPARATOR).append(parameterValue);\r\n+        }\r\n+    }\r\n+\r\n+\r\n+    private boolean isAdminProtocol(URL url) {\r\n+        return ADMIN_PROTOCOL.equals(url.getProtocol());\r\n+    }\r\n+\r\n+    private void scheduleServiceNamesLookup(final URL url, final NotifyListener listener) {\r\n+        if (scheduledExecutorService == null) {\r\n+            scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();\r\n+            scheduledExecutorService.scheduleAtFixedRate(() -> {\r\n+                Set<String> serviceNames = getAllServiceNames();\r\n+                filterData(serviceNames, serviceName -> {\r\n+                    boolean accepted = false;\r\n+                    for (String category : ALL_SUPPORTED_CATEGORIES) {\r\n+                        String prefix = category + SERVICE_NAME_SEPARATOR;\r\n+                        if (serviceName != null && serviceName.startsWith(prefix)) {\r\n+                            accepted = true;\r\n+                            break;\r\n+                        }\r\n+                    }\r\n+                    return accepted;\r\n+                });\r\n+                doSubscribe(url, listener, serviceNames);\r\n+            }, LOOKUP_INTERVAL, LOOKUP_INTERVAL, TimeUnit.SECONDS);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the service names for Dubbo OPS\r\n+     *\r\n+     * @param url {@link URL}\r\n+     * @return non-null\r\n+     */\r\n+    private Set<String> getServiceNamesForOps(URL url) {\r\n+        Set<String> serviceNames = getAllServiceNames();\r\n+        filterServiceNames(serviceNames, url);\r\n+        return serviceNames;\r\n+    }\r\n+\r\n+    private Set<String> getAllServiceNames() {\r\n+\r\n+        final Set<String> serviceNames = new LinkedHashSet<>();\r\n+\r\n+        execute(namingService -> {\r\n+\r\n+            int pageIndex = 1;\r\n+            ListView<String> listView = namingService.getServicesOfServer(pageIndex, PAGINATION_SIZE,\r\n+                    getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP));\r\n+            // First page data\r\n+            List<String> firstPageData = listView.getData();\r\n+            // Append first page into list\r\n+            serviceNames.addAll(firstPageData);\r\n+            // the total count\r\n+            int count = listView.getCount();\r\n+            // the number of pages\r\n+            int pageNumbers = count / PAGINATION_SIZE;\r\n+            int remainder = count % PAGINATION_SIZE;\r\n+            // remain\r\n+            if (remainder > 0) {\r\n+                pageNumbers += 1;\r\n+            }\r\n+            // If more than 1 page\r\n+            while (pageIndex < pageNumbers) {\r\n+                listView = namingService.getServicesOfServer(++pageIndex, PAGINATION_SIZE,\r\n+                        getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP));\r\n+                serviceNames.addAll(listView.getData());\r\n+            }\r\n+\r\n+        });\r\n+\r\n+        return serviceNames;\r\n+    }\r\n+\r\n+    private void filterServiceNames(Set<String> serviceNames, URL url) {\r\n+\r\n+        final List<String> categories = getCategories(url);\r\n+\r\n+        final String targetServiceInterface = url.getServiceInterface();\r\n+\r\n+        final String targetVersion = url.getParameter(VERSION_KEY, \"\");\r\n+\r\n+        final String targetGroup = url.getParameter(GROUP_KEY, \"\");\r\n+\r\n+        filterData(serviceNames, serviceName -> {\r\n+            // split service name to segments\r\n+            // (required) segments[0] = category\r\n+            // (required) segments[1] = serviceInterface\r\n+            // (optional) segments[2] = version\r\n+            // (optional) segments[3] = group\r\n+            String[] segments = serviceName.split(SERVICE_NAME_SEPARATOR, -1);\r\n+            int length = segments.length;\r\n+            if (length != 4) { // must present 4 segments\r\n+                return false;\r\n+            }\r\n+\r\n+            String category = segments[CATEGORY_INDEX];\r\n+            if (!categories.contains(category)) { // no match category\r\n+                return false;\r\n+            }\r\n+\r\n+            String serviceInterface = segments[SERVICE_INTERFACE_INDEX];\r\n+            // no match service interface\r\n+            if (!WILDCARD.equals(targetServiceInterface) &&\r\n+                    !StringUtils.isEquals(targetServiceInterface, serviceInterface)) {\r\n+                return false;\r\n+            }\r\n+\r\n+            // no match service version\r\n+            String version = segments[SERVICE_VERSION_INDEX];\r\n+            if (!WILDCARD.equals(targetVersion) && !StringUtils.isEquals(targetVersion, version)) {\r\n+                return false;\r\n+            }\r\n+\r\n+            String group = segments[SERVICE_GROUP_INDEX];\r\n+            return group == null || WILDCARD.equals(targetGroup) || StringUtils.isEquals(targetGroup, group);\r\n+        });\r\n+    }\r\n+\r\n+    private <T> void filterData(Collection<T> collection, NacosDataFilter<T> filter) {\r\n+        // remove if not accept\r\n+        collection.removeIf(data -> !filter.accept(data));\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    private List<String> doGetServiceNames(URL url) {\r\n+        List<String> categories = getCategories(url);\r\n+        List<String> serviceNames = new ArrayList<>(categories.size());\r\n+        for (String category : categories) {\r\n+            final String serviceName = getServiceName(url, category);\r\n+            serviceNames.add(serviceName);\r\n+        }\r\n+        return serviceNames;\r\n+    }\r\n+\r\n+    private List<URL> toUrlWithEmpty(URL consumerURL, Collection<Instance> instances) {\r\n+        List<URL> urls = buildURLs(consumerURL, instances);\r\n+        if (urls.size() == 0) {\r\n+            URL empty = URLBuilder.from(consumerURL)\r\n+                    .setProtocol(EMPTY_PROTOCOL)\r\n+                    .addParameter(CATEGORY_KEY, DEFAULT_CATEGORY)\r\n+                    .build();\r\n+            urls.add(empty);\r\n+        }\r\n+        return urls;\r\n+    }\r\n+\r\n+    private List<URL> buildURLs(URL consumerURL, Collection<Instance> instances) {\r\n+        List<URL> urls = new LinkedList<>();\r\n+        if (instances != null && !instances.isEmpty()) {\r\n+            for (Instance instance : instances) {\r\n+                URL url = buildURL(instance);\r\n+                if (UrlUtils.isMatch(consumerURL, url)) {\r\n+                    urls.add(url);\r\n+                }\r\n+            }\r\n+        }\r\n+        return urls;\r\n+    }\r\n+\r\n+    private void subscribeEventListener(String serviceName, final URL url, final NotifyListener listener)\r\n+            throws NacosException {\r\n+        EventListener eventListener = event -> {\r\n+            if (event instanceof NamingEvent) {\r\n+                NamingEvent e = (NamingEvent) event;\r\n+                List<Instance> instances = e.getInstances();\r\n+\r\n+\r\n+                if (isServiceNamesWithCompatibleMode(url)) {\r\n+                    /**\r\n+                     * Get all instances with corresponding serviceNames to avoid instance overwrite and but with empty instance mentioned\r\n+                     * in https://github.com/apache/dubbo/issues/5885 and https://github.com/apache/dubbo/issues/5899\r\n+                     */\r\n+                    NacosInstanceManageUtil.initOrRefreshServiceInstanceList(serviceName, instances);\r\n+                    instances = NacosInstanceManageUtil.getAllCorrespondingServiceInstanceList(serviceName);\r\n+                }\r\n+\r\n+                notifySubscriber(url, listener, instances);\r\n+            }\r\n+        };\r\n+        namingService.subscribe(serviceName,\r\n+                getUrl().getParameter(GROUP_KEY, Constants.DEFAULT_GROUP),\r\n+                eventListener);\r\n+    }\r\n+\r\n+    /**\r\n+     * Notify the Enabled {@link Instance instances} to subscriber.\r\n+     *\r\n+     * @param url       {@link URL}\r\n+     * @param listener  {@link NotifyListener}\r\n+     * @param instances all {@link Instance instances}\r\n+     */\r\n+    private void notifySubscriber(URL url, NotifyListener listener, Collection<Instance> instances) {\r\n+        List<Instance> enabledInstances = new LinkedList<>(instances);\r\n+        if (enabledInstances.size() > 0) {\r\n+            //  Instances\r\n+            filterEnabledInstances(enabledInstances);\r\n+        }\r\n+        List<URL> urls = toUrlWithEmpty(url, enabledInstances);\r\n+        NacosRegistry.this.notify(url, listener, urls);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the categories from {@link URL}\r\n+     *\r\n+     * @param url {@link URL}\r\n+     * @return non-null array\r\n+     */\r\n+    private List<String> getCategories(URL url) {\r\n+        return ANY_VALUE.equals(url.getServiceInterface()) ?\r\n+                ALL_SUPPORTED_CATEGORIES : Arrays.asList(DEFAULT_CATEGORY);\r\n+    }\r\n+\r\n+    private URL buildURL(Instance instance) {\r\n+        Map<String, String> metadata = instance.getMetadata();\r\n+        String protocol = metadata.get(PROTOCOL_KEY);\r\n+        String path = metadata.get(PATH_KEY);\r\n+        return new URL(protocol,\r\n+                instance.getIp(),\r\n+                instance.getPort(),\r\n+                path,\r\n+                instance.getMetadata());\r\n+    }\r\n+\r\n+    private Instance createInstance(URL url) {\r\n+        // Append default category if absent\r\n+        String category = url.getParameter(CATEGORY_KEY, DEFAULT_CATEGORY);\r\n+        URL newURL = url.addParameter(CATEGORY_KEY, category);\r\n+        newURL = newURL.addParameter(PROTOCOL_KEY, url.getProtocol());\r\n+        newURL = newURL.addParameter(PATH_KEY, url.getPath());\r\n+        newURL = newURL.addParameters(NacosNamingServiceUtils.getNacosPreservedParam(getUrl()));\r\n+        String ip = url.getHost();\r\n+        int port = url.getPort();\r\n+        Instance instance = new Instance();\r\n+        instance.setIp(ip);\r\n+        instance.setPort(port);\r\n+        instance.setMetadata(new HashMap<>(newURL.getParameters()));\r\n+        return instance;\r\n+    }\r\n+\r\n+    private NacosServiceName createServiceName(URL url) {\r\n+        return valueOf(url);\r\n+    }\r\n+\r\n+    private String getServiceName(URL url) {\r\n+        return getServiceName(url, url.getParameter(CATEGORY_KEY, DEFAULT_CATEGORY));\r\n+    }\r\n+\r\n+    private String getServiceName(URL url, String category) {\r\n+        return category + SERVICE_NAME_SEPARATOR + url.getColonSeparatedKey();\r\n+    }\r\n+\r\n+    private void execute(NamingServiceCallback callback) {\r\n+        try {\r\n+            callback.callback(namingService);\r\n+        } catch (NacosException e) {\r\n+            if (logger.isErrorEnabled()) {\r\n+                logger.error(e.getErrMsg(), e);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private void filterEnabledInstances(Collection<Instance> instances) {\r\n+        filterData(instances, Instance::isEnabled);\r\n+    }\r\n+\r\n+    /**\r\n+     * A filter for Nacos data\r\n+     *\r\n+     * @since 2.6.5\r\n+     */\r\n+    private interface NacosDataFilter<T> {\r\n+\r\n+        /**\r\n+         * Tests whether or not the specified data should be accepted.\r\n+         *\r\n+         * @param data The data to be tested\r\n+         * @return <code>true</code> if and only if <code>data</code>\r\n+         * should be accepted\r\n+         */\r\n+        boolean accept(T data);\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * {@link NamingService} Callback\r\n+     *\r\n+     * @since 2.6.5\r\n+     */\r\n+    interface NamingServiceCallback {\r\n+\r\n+        /**\r\n+         * Callback\r\n+         *\r\n+         * @param namingService {@link NamingService}\r\n+         * @throws NacosException\r\n+         */\r\n+        void callback(NacosNamingServiceWrapper namingService) throws NacosException;\r\n+\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/nacos/NacosRegistryFactory.java", "source2": "org/apache/dubbo/registry/nacos/NacosRegistryFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,49 +1,49 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.nacos;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.RegistryFactory;\n-import org.apache.dubbo.registry.support.AbstractRegistryFactory;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.CONFIG_NAMESPACE_KEY;\n-import static org.apache.dubbo.registry.nacos.util.NacosNamingServiceUtils.createNamingService;\n-\n-/**\n- * Nacos {@link RegistryFactory}\n- *\n- * @since 2.6.5\n- */\n-public class NacosRegistryFactory extends AbstractRegistryFactory {\n-\n-    @Override\n-    protected String createRegistryCacheKey(URL url) {\n-        String namespace = url.getParameter(CONFIG_NAMESPACE_KEY);\n-        url = URL.valueOf(url.toServiceStringWithoutResolving());\n-        if (StringUtils.isNotEmpty(namespace)) {\n-            url = url.addParameter(CONFIG_NAMESPACE_KEY, namespace);\n-        }\n-        return url.toFullString();\n-    }\n-\n-    @Override\n-    protected Registry createRegistry(URL url) {\n-        return new NacosRegistry(url, createNamingService(url));\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.nacos;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.RegistryFactory;\r\n+import org.apache.dubbo.registry.support.AbstractRegistryFactory;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONFIG_NAMESPACE_KEY;\r\n+import static org.apache.dubbo.registry.nacos.util.NacosNamingServiceUtils.createNamingService;\r\n+\r\n+/**\r\n+ * Nacos {@link RegistryFactory}\r\n+ *\r\n+ * @since 2.6.5\r\n+ */\r\n+public class NacosRegistryFactory extends AbstractRegistryFactory {\r\n+\r\n+    @Override\r\n+    protected String createRegistryCacheKey(URL url) {\r\n+        String namespace = url.getParameter(CONFIG_NAMESPACE_KEY);\r\n+        url = URL.valueOf(url.toServiceStringWithoutResolving());\r\n+        if (StringUtils.isNotEmpty(namespace)) {\r\n+            url = url.addParameter(CONFIG_NAMESPACE_KEY, namespace);\r\n+        }\r\n+        return url.toFullString();\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Registry createRegistry(URL url) {\r\n+        return new NacosRegistry(url, createNamingService(url));\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java", "source2": "org/apache/dubbo/registry/nacos/NacosServiceDiscovery.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,154 +1,154 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.nacos;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.function.ThrowableFunction;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\n-import org.apache.dubbo.registry.nacos.util.NacosNamingServiceUtils;\n-\n-import com.alibaba.nacos.api.exception.NacosException;\n-import com.alibaba.nacos.api.naming.listener.NamingEvent;\n-import com.alibaba.nacos.api.naming.pojo.Instance;\n-import com.alibaba.nacos.api.naming.pojo.ListView;\n-\n-import java.util.LinkedHashSet;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.stream.Collectors;\n-\n-import static org.apache.dubbo.common.function.ThrowableConsumer.execute;\n-import static org.apache.dubbo.registry.nacos.util.NacosNamingServiceUtils.createNamingService;\n-import static org.apache.dubbo.registry.nacos.util.NacosNamingServiceUtils.getGroup;\n-import static org.apache.dubbo.registry.nacos.util.NacosNamingServiceUtils.toInstance;\n-\n-/**\n- * Nacos {@link ServiceDiscovery} implementation\n- *\n- * @see ServiceDiscovery\n- * @since 2.7.5\n- */\n-public class NacosServiceDiscovery extends AbstractServiceDiscovery {\n-\n-    private final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    private String group;\n-\n-    private NacosNamingServiceWrapper namingService;\n-\n-    private URL registryURL;\n-\n-    @Override\n-    public void initialize(URL registryURL) throws Exception {\n-        this.namingService = createNamingService(registryURL);\n-        this.group = getGroup(registryURL);\n-        this.registryURL = registryURL;\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        this.namingService = null;\n-    }\n-\n-    @Override\n-    public void doRegister(ServiceInstance serviceInstance) {\n-        execute(namingService, service -> {\n-            Instance instance = toInstance(serviceInstance);\n-            appendPreservedParam(instance);\n-            service.registerInstance(instance.getServiceName(), group, instance);\n-        });\n-    }\n-\n-    @Override\n-    public void doUpdate(ServiceInstance serviceInstance) {\n-        if (this.serviceInstance == null) {\n-            register(serviceInstance);\n-        } else {\n-            unregister(serviceInstance);\n-            register(serviceInstance);\n-        }\n-    }\n-\n-    @Override\n-    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\n-        execute(namingService, service -> {\n-            Instance instance = toInstance(serviceInstance);\n-            service.deregisterInstance(instance.getServiceName(), group, instance);\n-        });\n-    }\n-\n-    @Override\n-    public Set<String> getServices() {\n-        return ThrowableFunction.execute(namingService, service -> {\n-            ListView<String> view = service.getServicesOfServer(0, Integer.MAX_VALUE, group);\n-            return new LinkedHashSet<>(view.getData());\n-        });\n-    }\n-\n-    @Override\n-    public List<ServiceInstance> getInstances(String serviceName) throws NullPointerException {\n-        return ThrowableFunction.execute(namingService, service ->\n-                service.selectInstances(serviceName, true)\n-                        .stream().map(NacosNamingServiceUtils::toServiceInstance)\n-                        .collect(Collectors.toList())\n-        );\n-    }\n-\n-    @Override\n-    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener)\n-            throws NullPointerException, IllegalArgumentException {\n-        execute(namingService, service -> {\n-            listener.getServiceNames().forEach(serviceName -> {\n-                try {\n-                    service.subscribe(serviceName, e -> { // Register Nacos EventListener\n-                        if (e instanceof NamingEvent) {\n-                            NamingEvent event = (NamingEvent) e;\n-                            handleEvent(event, listener);\n-                        }\n-                    });\n-                } catch (NacosException e) {\n-                    e.printStackTrace();\n-                }\n-            });\n-        });\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return registryURL;\n-    }\n-\n-    private void handleEvent(NamingEvent event, ServiceInstancesChangedListener listener) {\n-        String serviceName = event.getServiceName();\n-        List<ServiceInstance> serviceInstances = event.getInstances()\n-                .stream()\n-                .map(NacosNamingServiceUtils::toServiceInstance)\n-                .collect(Collectors.toList());\n-        dispatchServiceInstancesChangedEvent(serviceName, serviceInstances);\n-    }\n-\n-    private void appendPreservedParam(Instance instance) {\n-        Map<String, String> preservedParam = NacosNamingServiceUtils.getNacosPreservedParam(getUrl());\n-        instance.getMetadata().putAll(preservedParam);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.nacos;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.function.ThrowableFunction;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\r\n+import org.apache.dubbo.registry.nacos.util.NacosNamingServiceUtils;\r\n+\r\n+import com.alibaba.nacos.api.exception.NacosException;\r\n+import com.alibaba.nacos.api.naming.listener.NamingEvent;\r\n+import com.alibaba.nacos.api.naming.pojo.Instance;\r\n+import com.alibaba.nacos.api.naming.pojo.ListView;\r\n+\r\n+import java.util.LinkedHashSet;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.stream.Collectors;\r\n+\r\n+import static org.apache.dubbo.common.function.ThrowableConsumer.execute;\r\n+import static org.apache.dubbo.registry.nacos.util.NacosNamingServiceUtils.createNamingService;\r\n+import static org.apache.dubbo.registry.nacos.util.NacosNamingServiceUtils.getGroup;\r\n+import static org.apache.dubbo.registry.nacos.util.NacosNamingServiceUtils.toInstance;\r\n+\r\n+/**\r\n+ * Nacos {@link ServiceDiscovery} implementation\r\n+ *\r\n+ * @see ServiceDiscovery\r\n+ * @since 2.7.5\r\n+ */\r\n+public class NacosServiceDiscovery extends AbstractServiceDiscovery {\r\n+\r\n+    private final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    private String group;\r\n+\r\n+    private NacosNamingServiceWrapper namingService;\r\n+\r\n+    private URL registryURL;\r\n+\r\n+    @Override\r\n+    public void initialize(URL registryURL) throws Exception {\r\n+        this.namingService = createNamingService(registryURL);\r\n+        this.group = getGroup(registryURL);\r\n+        this.registryURL = registryURL;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        this.namingService = null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doRegister(ServiceInstance serviceInstance) {\r\n+        execute(namingService, service -> {\r\n+            Instance instance = toInstance(serviceInstance);\r\n+            appendPreservedParam(instance);\r\n+            service.registerInstance(instance.getServiceName(), group, instance);\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUpdate(ServiceInstance serviceInstance) {\r\n+        if (this.serviceInstance == null) {\r\n+            register(serviceInstance);\r\n+        } else {\r\n+            unregister(serviceInstance);\r\n+            register(serviceInstance);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\r\n+        execute(namingService, service -> {\r\n+            Instance instance = toInstance(serviceInstance);\r\n+            service.deregisterInstance(instance.getServiceName(), group, instance);\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<String> getServices() {\r\n+        return ThrowableFunction.execute(namingService, service -> {\r\n+            ListView<String> view = service.getServicesOfServer(0, Integer.MAX_VALUE, group);\r\n+            return new LinkedHashSet<>(view.getData());\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<ServiceInstance> getInstances(String serviceName) throws NullPointerException {\r\n+        return ThrowableFunction.execute(namingService, service ->\r\n+                service.selectInstances(serviceName, true)\r\n+                        .stream().map(NacosNamingServiceUtils::toServiceInstance)\r\n+                        .collect(Collectors.toList())\r\n+        );\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener)\r\n+            throws NullPointerException, IllegalArgumentException {\r\n+        execute(namingService, service -> {\r\n+            listener.getServiceNames().forEach(serviceName -> {\r\n+                try {\r\n+                    service.subscribe(serviceName, e -> { // Register Nacos EventListener\r\n+                        if (e instanceof NamingEvent) {\r\n+                            NamingEvent event = (NamingEvent) e;\r\n+                            handleEvent(event, listener);\r\n+                        }\r\n+                    });\r\n+                } catch (NacosException e) {\r\n+                    e.printStackTrace();\r\n+                }\r\n+            });\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return registryURL;\r\n+    }\r\n+\r\n+    private void handleEvent(NamingEvent event, ServiceInstancesChangedListener listener) {\r\n+        String serviceName = event.getServiceName();\r\n+        List<ServiceInstance> serviceInstances = event.getInstances()\r\n+                .stream()\r\n+                .map(NacosNamingServiceUtils::toServiceInstance)\r\n+                .collect(Collectors.toList());\r\n+        dispatchServiceInstancesChangedEvent(serviceName, serviceInstances);\r\n+    }\r\n+\r\n+    private void appendPreservedParam(Instance instance) {\r\n+        Map<String, String> preservedParam = NacosNamingServiceUtils.getNacosPreservedParam(getUrl());\r\n+        instance.getMetadata().putAll(preservedParam);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/nacos/NacosServiceDiscoveryFactory.java", "source2": "org/apache/dubbo/registry/nacos/NacosServiceDiscoveryFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.nacos;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-\n-/**\n- *\n- */\n-public class NacosServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\n-\n-    @Override\n-    protected ServiceDiscovery createDiscovery(URL registryURL) {\n-        return new NacosServiceDiscovery();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.nacos;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+public class NacosServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\r\n+\r\n+    @Override\r\n+    protected ServiceDiscovery createDiscovery(URL registryURL) {\r\n+        return new NacosServiceDiscovery();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/nacos/NacosServiceName.java", "source2": "org/apache/dubbo/registry/nacos/NacosServiceName.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,234 +1,234 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.nacos;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import java.util.Arrays;\n-import java.util.Objects;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.CATEGORY_KEY;\n-import static org.apache.dubbo.common.constants.RegistryConstants.DEFAULT_CATEGORY;\n-import static org.apache.dubbo.common.utils.StringUtils.isBlank;\n-\n-/**\n- * The service name of Nacos\n- *\n- * @since 2.7.3\n- */\n-public class NacosServiceName {\n-\n-    public static final String NAME_SEPARATOR = \":\";\n-\n-    public static final String VALUE_SEPARATOR = \",\";\n-\n-    public static final String WILDCARD = \"*\";\n-\n-    public static final String DEFAULT_PARAM_VALUE = \"\";\n-\n-    private static final int CATEGORY_INDEX = 0;\n-\n-    private static final int SERVICE_INTERFACE_INDEX = 1;\n-\n-    private static final int SERVICE_VERSION_INDEX = 2;\n-\n-    private static final int SERVICE_GROUP_INDEX = 3;\n-\n-    private String category;\n-\n-    private String serviceInterface;\n-\n-    private String version;\n-\n-    private String group;\n-\n-    private String value;\n-\n-    public NacosServiceName() {\n-    }\n-\n-    public NacosServiceName(URL url) {\n-        serviceInterface = url.getParameter(INTERFACE_KEY);\n-        category = isConcrete(serviceInterface) ? DEFAULT_CATEGORY : url.getParameter(CATEGORY_KEY);\n-        version = url.getParameter(VERSION_KEY, DEFAULT_PARAM_VALUE);\n-        group = url.getParameter(GROUP_KEY, DEFAULT_PARAM_VALUE);\n-        value = toValue();\n-    }\n-\n-    public NacosServiceName(String value) {\n-        this.value = value;\n-        String[] segments = value.split(NAME_SEPARATOR, -1);\n-        this.category = segments[CATEGORY_INDEX];\n-        this.serviceInterface = segments[SERVICE_INTERFACE_INDEX];\n-        this.version = segments[SERVICE_VERSION_INDEX];\n-        this.group = segments[SERVICE_GROUP_INDEX];\n-    }\n-\n-    /**\n-     * Build an instance of {@link NacosServiceName}\n-     *\n-     * @param url\n-     * @return\n-     */\n-    public static NacosServiceName valueOf(URL url) {\n-        return new NacosServiceName(url);\n-    }\n-\n-    /**\n-     * Is the concrete service name or not\n-     *\n-     * @return if concrete , return <code>true</code>, or <code>false</code>\n-     */\n-    public boolean isConcrete() {\n-        return isConcrete(serviceInterface) && isConcrete(version) && isConcrete(group);\n-    }\n-\n-    public boolean isCompatible(NacosServiceName concreteServiceName) {\n-\n-        if (!concreteServiceName.isConcrete()) { // The argument must be the concrete NacosServiceName\n-            return false;\n-        }\n-\n-        // Not match comparison\n-        if (!StringUtils.isEquals(this.category, concreteServiceName.category)\n-                && !matchRange(this.category, concreteServiceName.category)) {\n-            return false;\n-        }\n-\n-        if (!StringUtils.isEquals(this.serviceInterface, concreteServiceName.serviceInterface)) {\n-            return false;\n-        }\n-\n-        // wildcard condition\n-        if (isWildcard(this.version)) {\n-            return true;\n-        }\n-\n-        if (isWildcard(this.group)) {\n-            return true;\n-        }\n-\n-        // range condition\n-        if (!StringUtils.isEquals(this.version, concreteServiceName.version)\n-                && !matchRange(this.version, concreteServiceName.version)) {\n-            return false;\n-        }\n-\n-        if (!StringUtils.isEquals(this.group, concreteServiceName.group) &&\n-                !matchRange(this.group, concreteServiceName.group)) {\n-            return false;\n-        }\n-\n-        return true;\n-    }\n-\n-    private boolean matchRange(String range, String value) {\n-        if (isBlank(range)) {\n-            return true;\n-        }\n-        if (!isRange(range)) {\n-            return false;\n-        }\n-        String[] values = range.split(VALUE_SEPARATOR);\n-        return Arrays.asList(values).contains(value);\n-    }\n-\n-    private boolean isConcrete(String value) {\n-        return !isWildcard(value) && !isRange(value);\n-    }\n-\n-    private boolean isWildcard(String value) {\n-        return WILDCARD.equals(value);\n-    }\n-\n-    private boolean isRange(String value) {\n-        return value != null && value.indexOf(VALUE_SEPARATOR) > -1 && value.split(VALUE_SEPARATOR).length > 1;\n-    }\n-\n-    public String getCategory() {\n-        return category;\n-    }\n-\n-    public void setCategory(String category) {\n-        this.category = category;\n-    }\n-\n-    public String getServiceInterface() {\n-        return serviceInterface;\n-    }\n-\n-    public void setServiceInterface(String serviceInterface) {\n-        this.serviceInterface = serviceInterface;\n-    }\n-\n-    public String getVersion() {\n-        return version;\n-    }\n-\n-    public void setVersion(String version) {\n-        this.version = version;\n-    }\n-\n-    public String getGroup() {\n-        return group;\n-    }\n-\n-    public void setGroup(String group) {\n-        this.group = group;\n-    }\n-\n-    public String getValue() {\n-        if (value == null) {\n-            value = toValue();\n-        }\n-        return value;\n-    }\n-\n-    private String toValue() {\n-        return new StringBuilder(category)\n-                .append(NAME_SEPARATOR).append(serviceInterface)\n-                .append(NAME_SEPARATOR).append(version)\n-                .append(NAME_SEPARATOR).append(group)\n-                .toString();\n-    }\n-\n-    @Override\n-    public boolean equals(Object o) {\n-        if (this == o) {\n-            return true;\n-        }\n-        if (!(o instanceof NacosServiceName)) {\n-            return false;\n-        }\n-        NacosServiceName that = (NacosServiceName) o;\n-        return Objects.equals(getValue(), that.getValue());\n-    }\n-\n-    @Override\n-    public int hashCode() {\n-        return Objects.hash(getValue());\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return getValue();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.nacos;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import java.util.Arrays;\r\n+import java.util.Objects;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.CATEGORY_KEY;\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.DEFAULT_CATEGORY;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isBlank;\r\n+\r\n+/**\r\n+ * The service name of Nacos\r\n+ *\r\n+ * @since 2.7.3\r\n+ */\r\n+public class NacosServiceName {\r\n+\r\n+    public static final String NAME_SEPARATOR = \":\";\r\n+\r\n+    public static final String VALUE_SEPARATOR = \",\";\r\n+\r\n+    public static final String WILDCARD = \"*\";\r\n+\r\n+    public static final String DEFAULT_PARAM_VALUE = \"\";\r\n+\r\n+    private static final int CATEGORY_INDEX = 0;\r\n+\r\n+    private static final int SERVICE_INTERFACE_INDEX = 1;\r\n+\r\n+    private static final int SERVICE_VERSION_INDEX = 2;\r\n+\r\n+    private static final int SERVICE_GROUP_INDEX = 3;\r\n+\r\n+    private String category;\r\n+\r\n+    private String serviceInterface;\r\n+\r\n+    private String version;\r\n+\r\n+    private String group;\r\n+\r\n+    private String value;\r\n+\r\n+    public NacosServiceName() {\r\n+    }\r\n+\r\n+    public NacosServiceName(URL url) {\r\n+        serviceInterface = url.getParameter(INTERFACE_KEY);\r\n+        category = isConcrete(serviceInterface) ? DEFAULT_CATEGORY : url.getParameter(CATEGORY_KEY);\r\n+        version = url.getParameter(VERSION_KEY, DEFAULT_PARAM_VALUE);\r\n+        group = url.getParameter(GROUP_KEY, DEFAULT_PARAM_VALUE);\r\n+        value = toValue();\r\n+    }\r\n+\r\n+    public NacosServiceName(String value) {\r\n+        this.value = value;\r\n+        String[] segments = value.split(NAME_SEPARATOR, -1);\r\n+        this.category = segments[CATEGORY_INDEX];\r\n+        this.serviceInterface = segments[SERVICE_INTERFACE_INDEX];\r\n+        this.version = segments[SERVICE_VERSION_INDEX];\r\n+        this.group = segments[SERVICE_GROUP_INDEX];\r\n+    }\r\n+\r\n+    /**\r\n+     * Build an instance of {@link NacosServiceName}\r\n+     *\r\n+     * @param url\r\n+     * @return\r\n+     */\r\n+    public static NacosServiceName valueOf(URL url) {\r\n+        return new NacosServiceName(url);\r\n+    }\r\n+\r\n+    /**\r\n+     * Is the concrete service name or not\r\n+     *\r\n+     * @return if concrete , return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    public boolean isConcrete() {\r\n+        return isConcrete(serviceInterface) && isConcrete(version) && isConcrete(group);\r\n+    }\r\n+\r\n+    public boolean isCompatible(NacosServiceName concreteServiceName) {\r\n+\r\n+        if (!concreteServiceName.isConcrete()) { // The argument must be the concrete NacosServiceName\r\n+            return false;\r\n+        }\r\n+\r\n+        // Not match comparison\r\n+        if (!StringUtils.isEquals(this.category, concreteServiceName.category)\r\n+                && !matchRange(this.category, concreteServiceName.category)) {\r\n+            return false;\r\n+        }\r\n+\r\n+        if (!StringUtils.isEquals(this.serviceInterface, concreteServiceName.serviceInterface)) {\r\n+            return false;\r\n+        }\r\n+\r\n+        // wildcard condition\r\n+        if (isWildcard(this.version)) {\r\n+            return true;\r\n+        }\r\n+\r\n+        if (isWildcard(this.group)) {\r\n+            return true;\r\n+        }\r\n+\r\n+        // range condition\r\n+        if (!StringUtils.isEquals(this.version, concreteServiceName.version)\r\n+                && !matchRange(this.version, concreteServiceName.version)) {\r\n+            return false;\r\n+        }\r\n+\r\n+        if (!StringUtils.isEquals(this.group, concreteServiceName.group) &&\r\n+                !matchRange(this.group, concreteServiceName.group)) {\r\n+            return false;\r\n+        }\r\n+\r\n+        return true;\r\n+    }\r\n+\r\n+    private boolean matchRange(String range, String value) {\r\n+        if (isBlank(range)) {\r\n+            return true;\r\n+        }\r\n+        if (!isRange(range)) {\r\n+            return false;\r\n+        }\r\n+        String[] values = range.split(VALUE_SEPARATOR);\r\n+        return Arrays.asList(values).contains(value);\r\n+    }\r\n+\r\n+    private boolean isConcrete(String value) {\r\n+        return !isWildcard(value) && !isRange(value);\r\n+    }\r\n+\r\n+    private boolean isWildcard(String value) {\r\n+        return WILDCARD.equals(value);\r\n+    }\r\n+\r\n+    private boolean isRange(String value) {\r\n+        return value != null && value.indexOf(VALUE_SEPARATOR) > -1 && value.split(VALUE_SEPARATOR).length > 1;\r\n+    }\r\n+\r\n+    public String getCategory() {\r\n+        return category;\r\n+    }\r\n+\r\n+    public void setCategory(String category) {\r\n+        this.category = category;\r\n+    }\r\n+\r\n+    public String getServiceInterface() {\r\n+        return serviceInterface;\r\n+    }\r\n+\r\n+    public void setServiceInterface(String serviceInterface) {\r\n+        this.serviceInterface = serviceInterface;\r\n+    }\r\n+\r\n+    public String getVersion() {\r\n+        return version;\r\n+    }\r\n+\r\n+    public void setVersion(String version) {\r\n+        this.version = version;\r\n+    }\r\n+\r\n+    public String getGroup() {\r\n+        return group;\r\n+    }\r\n+\r\n+    public void setGroup(String group) {\r\n+        this.group = group;\r\n+    }\r\n+\r\n+    public String getValue() {\r\n+        if (value == null) {\r\n+            value = toValue();\r\n+        }\r\n+        return value;\r\n+    }\r\n+\r\n+    private String toValue() {\r\n+        return new StringBuilder(category)\r\n+                .append(NAME_SEPARATOR).append(serviceInterface)\r\n+                .append(NAME_SEPARATOR).append(version)\r\n+                .append(NAME_SEPARATOR).append(group)\r\n+                .toString();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean equals(Object o) {\r\n+        if (this == o) {\r\n+            return true;\r\n+        }\r\n+        if (!(o instanceof NacosServiceName)) {\r\n+            return false;\r\n+        }\r\n+        NacosServiceName that = (NacosServiceName) o;\r\n+        return Objects.equals(getValue(), that.getValue());\r\n+    }\r\n+\r\n+    @Override\r\n+    public int hashCode() {\r\n+        return Objects.hash(getValue());\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return getValue();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/nacos/util/NacosInstanceManageUtil.java", "source2": "org/apache/dubbo/registry/nacos/util/NacosInstanceManageUtil.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,67 +1,67 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.nacos.util;\n-\n-import com.alibaba.nacos.api.naming.pojo.Instance;\n-import com.google.common.collect.Lists;\n-import com.google.common.collect.Maps;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-\n-/**\n- * Instance manage util for multiple serviceNames\n- * To resolve bug with https://github.com/apache/dubbo/issues/5885 and https://github.com/apache/dubbo/issues/5899\n- *\n- * @since 2.7.6\n- */\n-public class NacosInstanceManageUtil {\n-\n-    /**\n-     * serviceName -> refreshed instance list\n-     */\n-    private static final Map<String, List<Instance>> SERVICE_INSTANCE_LIST_MAP = Maps.newConcurrentMap();\n-\n-    /**\n-     * serviceName -> corresponding serviceName list\n-     */\n-    private static final Map<String, Set<String>> CORRESPONDING_SERVICE_NAMES_MAP = Maps.newConcurrentMap();\n-\n-    public static void setCorrespondingServiceNames(String serviceName, Set<String> serviceNames) {\n-        CORRESPONDING_SERVICE_NAMES_MAP.put(serviceName, serviceNames);\n-    }\n-\n-    public static void initOrRefreshServiceInstanceList(String serviceName, List<Instance> instanceList) {\n-        SERVICE_INSTANCE_LIST_MAP.put(serviceName, instanceList);\n-    }\n-\n-    public static List<Instance> getAllCorrespondingServiceInstanceList(String serviceName) {\n-        if (!CORRESPONDING_SERVICE_NAMES_MAP.containsKey(serviceName)) {\n-            return Lists.newArrayList();\n-        }\n-        List<Instance> allInstances = Lists.newArrayList();\n-        for (String correspondingServiceName : CORRESPONDING_SERVICE_NAMES_MAP.get(serviceName)) {\n-            if (SERVICE_INSTANCE_LIST_MAP.containsKey(correspondingServiceName) && CollectionUtils.isNotEmpty(SERVICE_INSTANCE_LIST_MAP.get(correspondingServiceName))) {\n-                allInstances.addAll(SERVICE_INSTANCE_LIST_MAP.get(correspondingServiceName));\n-            }\n-        }\n-        return allInstances;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.nacos.util;\r\n+\r\n+import com.alibaba.nacos.api.naming.pojo.Instance;\r\n+import com.google.common.collect.Lists;\r\n+import com.google.common.collect.Maps;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+\r\n+/**\r\n+ * Instance manage util for multiple serviceNames\r\n+ * To resolve bug with https://github.com/apache/dubbo/issues/5885 and https://github.com/apache/dubbo/issues/5899\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class NacosInstanceManageUtil {\r\n+\r\n+    /**\r\n+     * serviceName -> refreshed instance list\r\n+     */\r\n+    private static final Map<String, List<Instance>> SERVICE_INSTANCE_LIST_MAP = Maps.newConcurrentMap();\r\n+\r\n+    /**\r\n+     * serviceName -> corresponding serviceName list\r\n+     */\r\n+    private static final Map<String, Set<String>> CORRESPONDING_SERVICE_NAMES_MAP = Maps.newConcurrentMap();\r\n+\r\n+    public static void setCorrespondingServiceNames(String serviceName, Set<String> serviceNames) {\r\n+        CORRESPONDING_SERVICE_NAMES_MAP.put(serviceName, serviceNames);\r\n+    }\r\n+\r\n+    public static void initOrRefreshServiceInstanceList(String serviceName, List<Instance> instanceList) {\r\n+        SERVICE_INSTANCE_LIST_MAP.put(serviceName, instanceList);\r\n+    }\r\n+\r\n+    public static List<Instance> getAllCorrespondingServiceInstanceList(String serviceName) {\r\n+        if (!CORRESPONDING_SERVICE_NAMES_MAP.containsKey(serviceName)) {\r\n+            return Lists.newArrayList();\r\n+        }\r\n+        List<Instance> allInstances = Lists.newArrayList();\r\n+        for (String correspondingServiceName : CORRESPONDING_SERVICE_NAMES_MAP.get(serviceName)) {\r\n+            if (SERVICE_INSTANCE_LIST_MAP.containsKey(correspondingServiceName) && CollectionUtils.isNotEmpty(SERVICE_INSTANCE_LIST_MAP.get(correspondingServiceName))) {\r\n+                allInstances.addAll(SERVICE_INSTANCE_LIST_MAP.get(correspondingServiceName));\r\n+            }\r\n+        }\r\n+        return allInstances;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/nacos/util/NacosNamingServiceUtils.java", "source2": "org/apache/dubbo/registry/nacos/util/NacosNamingServiceUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,189 +1,189 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.nacos.util;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.registry.client.DefaultServiceInstance;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.nacos.NacosNamingServiceWrapper;\n-\n-import com.alibaba.nacos.api.NacosFactory;\n-import com.alibaba.nacos.api.PropertyKeyConst;\n-import com.alibaba.nacos.api.exception.NacosException;\n-import com.alibaba.nacos.api.naming.NamingService;\n-import com.alibaba.nacos.api.naming.PreservedMetadataKeys;\n-import com.alibaba.nacos.api.naming.pojo.Instance;\n-import com.alibaba.nacos.api.naming.utils.NamingUtils;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.Properties;\n-\n-import static com.alibaba.nacos.api.PropertyKeyConst.NAMING_LOAD_CACHE_AT_START;\n-import static com.alibaba.nacos.api.PropertyKeyConst.SERVER_ADDR;\n-import static com.alibaba.nacos.api.common.Constants.DEFAULT_GROUP;\n-import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY;\n-import static org.apache.dubbo.common.utils.StringConstantFieldValuePredicate.of;\n-\n-/**\n- * The utilities class for {@link NamingService}\n- *\n- * @since 2.7.5\n- */\n-public class NacosNamingServiceUtils {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(NacosNamingServiceUtils.class);\n-\n-    /**\n-     * Convert the {@link ServiceInstance} to {@link Instance}\n-     *\n-     * @param serviceInstance {@link ServiceInstance}\n-     * @return non-null\n-     * @since 2.7.5\n-     */\n-    public static Instance toInstance(ServiceInstance serviceInstance) {\n-        Instance instance = new Instance();\n-        instance.setInstanceId(serviceInstance.getId());\n-        instance.setServiceName(serviceInstance.getServiceName());\n-        instance.setIp(serviceInstance.getHost());\n-        instance.setPort(serviceInstance.getPort());\n-        instance.setMetadata(serviceInstance.getMetadata());\n-        instance.setEnabled(serviceInstance.isEnabled());\n-        instance.setHealthy(serviceInstance.isHealthy());\n-        return instance;\n-    }\n-\n-    /**\n-     * Convert the {@link Instance} to {@link ServiceInstance}\n-     *\n-     * @param instance {@link Instance}\n-     * @return non-null\n-     * @since 2.7.5\n-     */\n-    public static ServiceInstance toServiceInstance(Instance instance) {\n-        DefaultServiceInstance serviceInstance = new DefaultServiceInstance(instance.getInstanceId(),\n-                NamingUtils.getServiceName(instance.getServiceName()), instance.getIp(), instance.getPort());\n-        serviceInstance.setMetadata(instance.getMetadata());\n-        serviceInstance.setEnabled(instance.isEnabled());\n-        serviceInstance.setHealthy(instance.isHealthy());\n-        return serviceInstance;\n-    }\n-\n-    /**\n-     * The group of {@link NamingService} to register\n-     *\n-     * @param connectionURL {@link URL connection url}\n-     * @return non-null, \"default\" as default\n-     * @since 2.7.5\n-     */\n-    public static String getGroup(URL connectionURL) {\n-        return connectionURL.getParameter(\"nacos.group\", DEFAULT_GROUP);\n-    }\n-\n-    /**\n-     * Create an instance of {@link NamingService} from specified {@link URL connection url}\n-     *\n-     * @param connectionURL {@link URL connection url}\n-     * @return {@link NamingService}\n-     * @since 2.7.5\n-     */\n-    public static NacosNamingServiceWrapper createNamingService(URL connectionURL) {\n-        Properties nacosProperties = buildNacosProperties(connectionURL);\n-        NamingService namingService;\n-        try {\n-            namingService = NacosFactory.createNamingService(nacosProperties);\n-        } catch (NacosException e) {\n-            if (logger.isErrorEnabled()) {\n-                logger.error(e.getErrMsg(), e);\n-            }\n-            throw new IllegalStateException(e);\n-        }\n-        return new NacosNamingServiceWrapper(namingService);\n-    }\n-\n-    private static Properties buildNacosProperties(URL url) {\n-        Properties properties = new Properties();\n-        setServerAddr(url, properties);\n-        setProperties(url, properties);\n-        return properties;\n-    }\n-\n-    private static void setServerAddr(URL url, Properties properties) {\n-        StringBuilder serverAddrBuilder =\n-                new StringBuilder(url.getHost()) // Host\n-                        .append(\":\")\n-                        .append(url.getPort()); // Port\n-\n-        // Append backup parameter as other servers\n-        String backup = url.getParameter(BACKUP_KEY);\n-        if (backup != null) {\n-            serverAddrBuilder.append(\",\").append(backup);\n-        }\n-\n-        String serverAddr = serverAddrBuilder.toString();\n-        properties.put(SERVER_ADDR, serverAddr);\n-    }\n-\n-    private static void setProperties(URL url, Properties properties) {\n-        // @since 2.7.8 : Refactoring\n-        // Get the parameters from constants\n-        Map<String, String> parameters = url.getParameters(of(PropertyKeyConst.class));\n-        // Put all parameters\n-        properties.putAll(parameters);\n-\n-        putPropertyIfAbsent(url, properties, NAMING_LOAD_CACHE_AT_START, \"true\");\n-    }\n-\n-    private static void putPropertyIfAbsent(URL url, Properties properties, String propertyName) {\n-        String propertyValue = url.getParameter(propertyName);\n-        if (StringUtils.isNotEmpty(propertyValue)) {\n-            properties.setProperty(propertyName, propertyValue);\n-        }\n-    }\n-\n-    private static void putPropertyIfAbsent(URL url, Properties properties, String propertyName, String defaultValue) {\n-        String propertyValue = url.getParameter(propertyName);\n-        if (StringUtils.isNotEmpty(propertyValue)) {\n-            properties.setProperty(propertyName, propertyValue);\n-        } else {\n-            properties.setProperty(propertyName, defaultValue);\n-        }\n-    }\n-\n-    public static Map<String, String> getNacosPreservedParam(URL registryUrl) {\n-        Map<String, String> map = new HashMap<>();\n-        if (registryUrl.getParameter(PreservedMetadataKeys.REGISTER_SOURCE) != null) {\n-            map.put(PreservedMetadataKeys.REGISTER_SOURCE, registryUrl.getParameter(PreservedMetadataKeys.REGISTER_SOURCE));\n-        }\n-        if (registryUrl.getParameter(PreservedMetadataKeys.HEART_BEAT_TIMEOUT) != null) {\n-            map.put(PreservedMetadataKeys.HEART_BEAT_TIMEOUT, registryUrl.getParameter(PreservedMetadataKeys.HEART_BEAT_TIMEOUT));\n-        }\n-        if (registryUrl.getParameter(PreservedMetadataKeys.IP_DELETE_TIMEOUT) != null) {\n-            map.put(PreservedMetadataKeys.IP_DELETE_TIMEOUT, registryUrl.getParameter(PreservedMetadataKeys.IP_DELETE_TIMEOUT));\n-        }\n-        if (registryUrl.getParameter(PreservedMetadataKeys.HEART_BEAT_INTERVAL) != null) {\n-            map.put(PreservedMetadataKeys.HEART_BEAT_INTERVAL, registryUrl.getParameter(PreservedMetadataKeys.HEART_BEAT_INTERVAL));\n-        }\n-        if (registryUrl.getParameter(PreservedMetadataKeys.INSTANCE_ID_GENERATOR) != null) {\n-            map.put(PreservedMetadataKeys.INSTANCE_ID_GENERATOR, registryUrl.getParameter(PreservedMetadataKeys.INSTANCE_ID_GENERATOR));\n-        }\n-        return map;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.nacos.util;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.registry.client.DefaultServiceInstance;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.nacos.NacosNamingServiceWrapper;\r\n+\r\n+import com.alibaba.nacos.api.NacosFactory;\r\n+import com.alibaba.nacos.api.PropertyKeyConst;\r\n+import com.alibaba.nacos.api.exception.NacosException;\r\n+import com.alibaba.nacos.api.naming.NamingService;\r\n+import com.alibaba.nacos.api.naming.PreservedMetadataKeys;\r\n+import com.alibaba.nacos.api.naming.pojo.Instance;\r\n+import com.alibaba.nacos.api.naming.utils.NamingUtils;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.Properties;\r\n+\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.NAMING_LOAD_CACHE_AT_START;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.SERVER_ADDR;\r\n+import static com.alibaba.nacos.api.common.Constants.DEFAULT_GROUP;\r\n+import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY;\r\n+import static org.apache.dubbo.common.utils.StringConstantFieldValuePredicate.of;\r\n+\r\n+/**\r\n+ * The utilities class for {@link NamingService}\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+public class NacosNamingServiceUtils {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(NacosNamingServiceUtils.class);\r\n+\r\n+    /**\r\n+     * Convert the {@link ServiceInstance} to {@link Instance}\r\n+     *\r\n+     * @param serviceInstance {@link ServiceInstance}\r\n+     * @return non-null\r\n+     * @since 2.7.5\r\n+     */\r\n+    public static Instance toInstance(ServiceInstance serviceInstance) {\r\n+        Instance instance = new Instance();\r\n+        instance.setInstanceId(serviceInstance.getId());\r\n+        instance.setServiceName(serviceInstance.getServiceName());\r\n+        instance.setIp(serviceInstance.getHost());\r\n+        instance.setPort(serviceInstance.getPort());\r\n+        instance.setMetadata(serviceInstance.getMetadata());\r\n+        instance.setEnabled(serviceInstance.isEnabled());\r\n+        instance.setHealthy(serviceInstance.isHealthy());\r\n+        return instance;\r\n+    }\r\n+\r\n+    /**\r\n+     * Convert the {@link Instance} to {@link ServiceInstance}\r\n+     *\r\n+     * @param instance {@link Instance}\r\n+     * @return non-null\r\n+     * @since 2.7.5\r\n+     */\r\n+    public static ServiceInstance toServiceInstance(Instance instance) {\r\n+        DefaultServiceInstance serviceInstance = new DefaultServiceInstance(instance.getInstanceId(),\r\n+                NamingUtils.getServiceName(instance.getServiceName()), instance.getIp(), instance.getPort());\r\n+        serviceInstance.setMetadata(instance.getMetadata());\r\n+        serviceInstance.setEnabled(instance.isEnabled());\r\n+        serviceInstance.setHealthy(instance.isHealthy());\r\n+        return serviceInstance;\r\n+    }\r\n+\r\n+    /**\r\n+     * The group of {@link NamingService} to register\r\n+     *\r\n+     * @param connectionURL {@link URL connection url}\r\n+     * @return non-null, \"default\" as default\r\n+     * @since 2.7.5\r\n+     */\r\n+    public static String getGroup(URL connectionURL) {\r\n+        return connectionURL.getParameter(\"nacos.group\", DEFAULT_GROUP);\r\n+    }\r\n+\r\n+    /**\r\n+     * Create an instance of {@link NamingService} from specified {@link URL connection url}\r\n+     *\r\n+     * @param connectionURL {@link URL connection url}\r\n+     * @return {@link NamingService}\r\n+     * @since 2.7.5\r\n+     */\r\n+    public static NacosNamingServiceWrapper createNamingService(URL connectionURL) {\r\n+        Properties nacosProperties = buildNacosProperties(connectionURL);\r\n+        NamingService namingService;\r\n+        try {\r\n+            namingService = NacosFactory.createNamingService(nacosProperties);\r\n+        } catch (NacosException e) {\r\n+            if (logger.isErrorEnabled()) {\r\n+                logger.error(e.getErrMsg(), e);\r\n+            }\r\n+            throw new IllegalStateException(e);\r\n+        }\r\n+        return new NacosNamingServiceWrapper(namingService);\r\n+    }\r\n+\r\n+    private static Properties buildNacosProperties(URL url) {\r\n+        Properties properties = new Properties();\r\n+        setServerAddr(url, properties);\r\n+        setProperties(url, properties);\r\n+        return properties;\r\n+    }\r\n+\r\n+    private static void setServerAddr(URL url, Properties properties) {\r\n+        StringBuilder serverAddrBuilder =\r\n+                new StringBuilder(url.getHost()) // Host\r\n+                        .append(\":\")\r\n+                        .append(url.getPort()); // Port\r\n+\r\n+        // Append backup parameter as other servers\r\n+        String backup = url.getParameter(BACKUP_KEY);\r\n+        if (backup != null) {\r\n+            serverAddrBuilder.append(\",\").append(backup);\r\n+        }\r\n+\r\n+        String serverAddr = serverAddrBuilder.toString();\r\n+        properties.put(SERVER_ADDR, serverAddr);\r\n+    }\r\n+\r\n+    private static void setProperties(URL url, Properties properties) {\r\n+        // @since 2.7.8 : Refactoring\r\n+        // Get the parameters from constants\r\n+        Map<String, String> parameters = url.getParameters(of(PropertyKeyConst.class));\r\n+        // Put all parameters\r\n+        properties.putAll(parameters);\r\n+\r\n+        putPropertyIfAbsent(url, properties, NAMING_LOAD_CACHE_AT_START, \"true\");\r\n+    }\r\n+\r\n+    private static void putPropertyIfAbsent(URL url, Properties properties, String propertyName) {\r\n+        String propertyValue = url.getParameter(propertyName);\r\n+        if (StringUtils.isNotEmpty(propertyValue)) {\r\n+            properties.setProperty(propertyName, propertyValue);\r\n+        }\r\n+    }\r\n+\r\n+    private static void putPropertyIfAbsent(URL url, Properties properties, String propertyName, String defaultValue) {\r\n+        String propertyValue = url.getParameter(propertyName);\r\n+        if (StringUtils.isNotEmpty(propertyValue)) {\r\n+            properties.setProperty(propertyName, propertyValue);\r\n+        } else {\r\n+            properties.setProperty(propertyName, defaultValue);\r\n+        }\r\n+    }\r\n+\r\n+    public static Map<String, String> getNacosPreservedParam(URL registryUrl) {\r\n+        Map<String, String> map = new HashMap<>();\r\n+        if (registryUrl.getParameter(PreservedMetadataKeys.REGISTER_SOURCE) != null) {\r\n+            map.put(PreservedMetadataKeys.REGISTER_SOURCE, registryUrl.getParameter(PreservedMetadataKeys.REGISTER_SOURCE));\r\n+        }\r\n+        if (registryUrl.getParameter(PreservedMetadataKeys.HEART_BEAT_TIMEOUT) != null) {\r\n+            map.put(PreservedMetadataKeys.HEART_BEAT_TIMEOUT, registryUrl.getParameter(PreservedMetadataKeys.HEART_BEAT_TIMEOUT));\r\n+        }\r\n+        if (registryUrl.getParameter(PreservedMetadataKeys.IP_DELETE_TIMEOUT) != null) {\r\n+            map.put(PreservedMetadataKeys.IP_DELETE_TIMEOUT, registryUrl.getParameter(PreservedMetadataKeys.IP_DELETE_TIMEOUT));\r\n+        }\r\n+        if (registryUrl.getParameter(PreservedMetadataKeys.HEART_BEAT_INTERVAL) != null) {\r\n+            map.put(PreservedMetadataKeys.HEART_BEAT_INTERVAL, registryUrl.getParameter(PreservedMetadataKeys.HEART_BEAT_INTERVAL));\r\n+        }\r\n+        if (registryUrl.getParameter(PreservedMetadataKeys.INSTANCE_ID_GENERATOR) != null) {\r\n+            map.put(PreservedMetadataKeys.INSTANCE_ID_GENERATOR, registryUrl.getParameter(PreservedMetadataKeys.INSTANCE_ID_GENERATOR));\r\n+        }\r\n+        return map;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/sofa/SofaRegistry.java", "source2": "org/apache/dubbo/registry/sofa/SofaRegistry.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,296 +1,296 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.sofa;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.ConfigUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.registry.NotifyListener;\n-import org.apache.dubbo.registry.support.FailbackRegistry;\n-\n-import com.alipay.sofa.registry.client.api.RegistryClient;\n-import com.alipay.sofa.registry.client.api.RegistryClientConfig;\n-import com.alipay.sofa.registry.client.api.Subscriber;\n-import com.alipay.sofa.registry.client.api.model.RegistryType;\n-import com.alipay.sofa.registry.client.api.model.UserData;\n-import com.alipay.sofa.registry.client.api.registration.PublisherRegistration;\n-import com.alipay.sofa.registry.client.api.registration.SubscriberRegistration;\n-import com.alipay.sofa.registry.client.provider.DefaultRegistryClient;\n-import com.alipay.sofa.registry.client.provider.DefaultRegistryClientConfigBuilder;\n-import com.alipay.sofa.registry.core.model.ScopeEnum;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.CountDownLatch;\n-import java.util.concurrent.TimeUnit;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.registry.Constants.CONSUMER_PROTOCOL;\n-import static org.apache.dubbo.registry.Constants.PROVIDER_PROTOCOL;\n-import static org.apache.dubbo.registry.Constants.REGISTER_KEY;\n-import static org.apache.dubbo.registry.Constants.SUBSCRIBE_KEY;\n-import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.ADDRESS_WAIT_TIME_KEY;\n-import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.DEFAULT_GROUP;\n-import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.LOCAL_DATA_CENTER;\n-import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.LOCAL_REGION;\n-\n-/**\n- * The Sofa registry.\n- *\n- * @since 2.7.2\n- */\n-public class SofaRegistry extends FailbackRegistry {\n-\n-    /**\n-     * Cache subscriber by dataId\n-     */\n-    private final Map<String, Subscriber> subscribers = new ConcurrentHashMap<>();\n-\n-    /**\n-     * Direct registry client\n-     */\n-    private RegistryClient registryClient;\n-    /**\n-     * wait address from registry\n-     */\n-    private int waitAddressTimeout;\n-\n-    /**\n-     * Instantiates a new Sofa registry.\n-     *\n-     * @param url the url\n-     */\n-    public SofaRegistry(URL url) {\n-        super(url);\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"Build sofa registry by url:\" + url);\n-        }\n-        this.registryClient = buildClient(url);\n-        this.waitAddressTimeout = Integer.parseInt(ConfigUtils.getProperty(ADDRESS_WAIT_TIME_KEY, \"5000\"));\n-    }\n-\n-    /**\n-     * Build client registry client.\n-     *\n-     * @param url the url\n-     * @return the registry client\n-     */\n-    protected RegistryClient buildClient(URL url) {\n-        RegistryClientConfig config = DefaultRegistryClientConfigBuilder.start()\n-                .setDataCenter(LOCAL_DATA_CENTER)\n-                .setZone(LOCAL_REGION)\n-                .setRegistryEndpoint(url.getHost())\n-                .setRegistryEndpointPort(url.getPort()).build();\n-\n-        DefaultRegistryClient registryClient = new DefaultRegistryClient(config);\n-        registryClient.init();\n-        return registryClient;\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        return true;\n-    }\n-\n-    @Override\n-    public void doRegister(URL url) {\n-        if (!url.getParameter(REGISTER_KEY, true)\n-                || CONSUMER_PROTOCOL.equals(url.getProtocol())) {\n-            return;\n-        }\n-\n-        String serviceName = buildServiceName(url);\n-        String serviceData = url.toFullString();\n-\n-        PublisherRegistration registration = new PublisherRegistration(serviceName);\n-        addAttributesForPub(registration);\n-\n-        registryClient.register(registration, serviceData);\n-    }\n-\n-    /**\n-     * Add attributes for pub.\n-     *\n-     * @param publisherRegistration the publisher registration\n-     */\n-    protected void addAttributesForPub(PublisherRegistration publisherRegistration) {\n-        publisherRegistration.setGroup(DEFAULT_GROUP);\n-    }\n-\n-    @Override\n-    public void doUnregister(URL url) {\n-        if (!url.getParameter(REGISTER_KEY, true)\n-                || CONSUMER_PROTOCOL.equals(url.getProtocol())) {\n-            return;\n-        }\n-        String serviceName = buildServiceName(url);\n-        registryClient.unregister(serviceName, DEFAULT_GROUP, RegistryType.PUBLISHER);\n-    }\n-\n-    @Override\n-    public void doSubscribe(URL url, final NotifyListener listener) {\n-        if (!url.getParameter(SUBSCRIBE_KEY, true)\n-                || PROVIDER_PROTOCOL.equals(url.getProtocol())) {\n-            return;\n-        }\n-\n-        String serviceName = buildServiceName(url);\n-        // com.alipay.test.TestService:1.0:group@dubbo\n-        Subscriber listSubscriber = subscribers.get(serviceName);\n-\n-        if (listSubscriber != null) {\n-            logger.warn(\"Service name [\" + serviceName + \"] have bean registered in SOFARegistry.\");\n-\n-            CountDownLatch countDownLatch = new CountDownLatch(1);\n-            handleRegistryData(listSubscriber.peekData(), listener, countDownLatch);\n-            waitAddress(serviceName, countDownLatch);\n-            return;\n-        }\n-\n-        final CountDownLatch latch = new CountDownLatch(1);\n-        SubscriberRegistration subscriberRegistration = new SubscriberRegistration(serviceName,\n-                (dataId, data) -> {\n-                    //record change\n-                    printAddressData(dataId, data);\n-                    handleRegistryData(data, listener, latch);\n-                });\n-\n-        addAttributesForSub(subscriberRegistration);\n-        listSubscriber = registryClient.register(subscriberRegistration);\n-\n-        subscribers.put(serviceName, listSubscriber);\n-\n-        waitAddress(serviceName, latch);\n-    }\n-\n-    private void waitAddress(String serviceName, CountDownLatch countDownLatch) {\n-        try {\n-            if (!countDownLatch.await(waitAddressTimeout, TimeUnit.MILLISECONDS)) {\n-                logger.warn(\"Subscribe data failed by dataId \" + serviceName);\n-            }\n-        } catch (Exception e) {\n-            logger.error(\"Error when wait Address!\", e);\n-        }\n-    }\n-\n-    @Override\n-    public void doUnsubscribe(URL url, NotifyListener listener) {\n-        if (!url.getParameter(SUBSCRIBE_KEY, true)\n-                || PROVIDER_PROTOCOL.equals(url.getProtocol())) {\n-            return;\n-        }\n-        String serviceName = buildServiceName(url);\n-\n-        registryClient.unregister(serviceName, DEFAULT_GROUP, RegistryType.SUBSCRIBER);\n-    }\n-\n-    private void handleRegistryData(UserData data, NotifyListener notifyListener,\n-                                    CountDownLatch latch) {\n-        try {\n-            List<URL> urls = new ArrayList<>();\n-            if (null != data) {\n-\n-                List<String> datas = flatUserData(data);\n-                for (String serviceUrl : datas) {\n-                    URL url = URL.valueOf(serviceUrl);\n-                    String serverApplication = url.getParameter(APPLICATION_KEY);\n-                    if (StringUtils.isNotEmpty(serverApplication)) {\n-                        url = url.addParameter(\"dstApp\", serverApplication);\n-                    }\n-                    urls.add(url);\n-                }\n-            }\n-            notifyListener.notify(urls);\n-        } finally {\n-            latch.countDown();\n-        }\n-    }\n-\n-    private String buildServiceName(URL url) {\n-        // return url.getServiceKey();\n-        StringBuilder buf = new StringBuilder();\n-        buf.append(url.getServiceInterface());\n-        String version = url.getParameter(VERSION_KEY);\n-        if (StringUtils.isNotEmpty(version)) {\n-            buf.append(\":\").append(version);\n-        }\n-        String group = url.getParameter(GROUP_KEY);\n-        if (StringUtils.isNotEmpty(group)) {\n-            buf.append(\":\").append(group);\n-        }\n-        buf.append(\"@\").append(DUBBO);\n-        return buf.toString();\n-    }\n-\n-    /**\n-     * Print address data.\n-     *\n-     * @param dataId   the data id\n-     * @param userData the user data\n-     */\n-    protected void printAddressData(String dataId, UserData userData) {\n-\n-        List<String> datas;\n-        if (userData == null) {\n-            datas = new ArrayList<>(0);\n-        } else {\n-            datas = flatUserData(userData);\n-        }\n-\n-        StringBuilder sb = new StringBuilder();\n-        for (String provider : datas) {\n-            sb.append(\"  >>> \").append(provider).append(\"\\n\");\n-        }\n-        if (logger.isInfoEnabled()) {\n-            logger.info(\"Receive updated RPC service addresses: service[\" + dataId\n-                    + \"]\\n  .Available target addresses size [\" + datas.size() + \"]\\n\"\n-                    + sb.toString());\n-        }\n-    }\n-\n-    /**\n-     * Add attributes for sub.\n-     *\n-     * @param subscriberRegistration the subscriber registration\n-     */\n-    protected void addAttributesForSub(SubscriberRegistration subscriberRegistration) {\n-        subscriberRegistration.setGroup(DEFAULT_GROUP);\n-        subscriberRegistration.setScopeEnum(ScopeEnum.global);\n-    }\n-\n-    /**\n-     * Flat user data list.\n-     *\n-     * @param userData the user data\n-     * @return the list\n-     */\n-    protected List<String> flatUserData(UserData userData) {\n-        List<String> result = new ArrayList<>();\n-        Map<String, List<String>> zoneData = userData.getZoneData();\n-\n-        for (Map.Entry<String, List<String>> entry : zoneData.entrySet()) {\n-            result.addAll(entry.getValue());\n-        }\n-\n-        return result;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.sofa;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.ConfigUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.registry.NotifyListener;\r\n+import org.apache.dubbo.registry.support.FailbackRegistry;\r\n+\r\n+import com.alipay.sofa.registry.client.api.RegistryClient;\r\n+import com.alipay.sofa.registry.client.api.RegistryClientConfig;\r\n+import com.alipay.sofa.registry.client.api.Subscriber;\r\n+import com.alipay.sofa.registry.client.api.model.RegistryType;\r\n+import com.alipay.sofa.registry.client.api.model.UserData;\r\n+import com.alipay.sofa.registry.client.api.registration.PublisherRegistration;\r\n+import com.alipay.sofa.registry.client.api.registration.SubscriberRegistration;\r\n+import com.alipay.sofa.registry.client.provider.DefaultRegistryClient;\r\n+import com.alipay.sofa.registry.client.provider.DefaultRegistryClientConfigBuilder;\r\n+import com.alipay.sofa.registry.core.model.ScopeEnum;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.CountDownLatch;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.registry.Constants.CONSUMER_PROTOCOL;\r\n+import static org.apache.dubbo.registry.Constants.PROVIDER_PROTOCOL;\r\n+import static org.apache.dubbo.registry.Constants.REGISTER_KEY;\r\n+import static org.apache.dubbo.registry.Constants.SUBSCRIBE_KEY;\r\n+import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.ADDRESS_WAIT_TIME_KEY;\r\n+import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.DEFAULT_GROUP;\r\n+import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.LOCAL_DATA_CENTER;\r\n+import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.LOCAL_REGION;\r\n+\r\n+/**\r\n+ * The Sofa registry.\r\n+ *\r\n+ * @since 2.7.2\r\n+ */\r\n+public class SofaRegistry extends FailbackRegistry {\r\n+\r\n+    /**\r\n+     * Cache subscriber by dataId\r\n+     */\r\n+    private final Map<String, Subscriber> subscribers = new ConcurrentHashMap<>();\r\n+\r\n+    /**\r\n+     * Direct registry client\r\n+     */\r\n+    private RegistryClient registryClient;\r\n+    /**\r\n+     * wait address from registry\r\n+     */\r\n+    private int waitAddressTimeout;\r\n+\r\n+    /**\r\n+     * Instantiates a new Sofa registry.\r\n+     *\r\n+     * @param url the url\r\n+     */\r\n+    public SofaRegistry(URL url) {\r\n+        super(url);\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"Build sofa registry by url:\" + url);\r\n+        }\r\n+        this.registryClient = buildClient(url);\r\n+        this.waitAddressTimeout = Integer.parseInt(ConfigUtils.getProperty(ADDRESS_WAIT_TIME_KEY, \"5000\"));\r\n+    }\r\n+\r\n+    /**\r\n+     * Build client registry client.\r\n+     *\r\n+     * @param url the url\r\n+     * @return the registry client\r\n+     */\r\n+    protected RegistryClient buildClient(URL url) {\r\n+        RegistryClientConfig config = DefaultRegistryClientConfigBuilder.start()\r\n+                .setDataCenter(LOCAL_DATA_CENTER)\r\n+                .setZone(LOCAL_REGION)\r\n+                .setRegistryEndpoint(url.getHost())\r\n+                .setRegistryEndpointPort(url.getPort()).build();\r\n+\r\n+        DefaultRegistryClient registryClient = new DefaultRegistryClient(config);\r\n+        registryClient.init();\r\n+        return registryClient;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        return true;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doRegister(URL url) {\r\n+        if (!url.getParameter(REGISTER_KEY, true)\r\n+                || CONSUMER_PROTOCOL.equals(url.getProtocol())) {\r\n+            return;\r\n+        }\r\n+\r\n+        String serviceName = buildServiceName(url);\r\n+        String serviceData = url.toFullString();\r\n+\r\n+        PublisherRegistration registration = new PublisherRegistration(serviceName);\r\n+        addAttributesForPub(registration);\r\n+\r\n+        registryClient.register(registration, serviceData);\r\n+    }\r\n+\r\n+    /**\r\n+     * Add attributes for pub.\r\n+     *\r\n+     * @param publisherRegistration the publisher registration\r\n+     */\r\n+    protected void addAttributesForPub(PublisherRegistration publisherRegistration) {\r\n+        publisherRegistration.setGroup(DEFAULT_GROUP);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUnregister(URL url) {\r\n+        if (!url.getParameter(REGISTER_KEY, true)\r\n+                || CONSUMER_PROTOCOL.equals(url.getProtocol())) {\r\n+            return;\r\n+        }\r\n+        String serviceName = buildServiceName(url);\r\n+        registryClient.unregister(serviceName, DEFAULT_GROUP, RegistryType.PUBLISHER);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doSubscribe(URL url, final NotifyListener listener) {\r\n+        if (!url.getParameter(SUBSCRIBE_KEY, true)\r\n+                || PROVIDER_PROTOCOL.equals(url.getProtocol())) {\r\n+            return;\r\n+        }\r\n+\r\n+        String serviceName = buildServiceName(url);\r\n+        // com.alipay.test.TestService:1.0:group@dubbo\r\n+        Subscriber listSubscriber = subscribers.get(serviceName);\r\n+\r\n+        if (listSubscriber != null) {\r\n+            logger.warn(\"Service name [\" + serviceName + \"] have bean registered in SOFARegistry.\");\r\n+\r\n+            CountDownLatch countDownLatch = new CountDownLatch(1);\r\n+            handleRegistryData(listSubscriber.peekData(), listener, countDownLatch);\r\n+            waitAddress(serviceName, countDownLatch);\r\n+            return;\r\n+        }\r\n+\r\n+        final CountDownLatch latch = new CountDownLatch(1);\r\n+        SubscriberRegistration subscriberRegistration = new SubscriberRegistration(serviceName,\r\n+                (dataId, data) -> {\r\n+                    //record change\r\n+                    printAddressData(dataId, data);\r\n+                    handleRegistryData(data, listener, latch);\r\n+                });\r\n+\r\n+        addAttributesForSub(subscriberRegistration);\r\n+        listSubscriber = registryClient.register(subscriberRegistration);\r\n+\r\n+        subscribers.put(serviceName, listSubscriber);\r\n+\r\n+        waitAddress(serviceName, latch);\r\n+    }\r\n+\r\n+    private void waitAddress(String serviceName, CountDownLatch countDownLatch) {\r\n+        try {\r\n+            if (!countDownLatch.await(waitAddressTimeout, TimeUnit.MILLISECONDS)) {\r\n+                logger.warn(\"Subscribe data failed by dataId \" + serviceName);\r\n+            }\r\n+        } catch (Exception e) {\r\n+            logger.error(\"Error when wait Address!\", e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUnsubscribe(URL url, NotifyListener listener) {\r\n+        if (!url.getParameter(SUBSCRIBE_KEY, true)\r\n+                || PROVIDER_PROTOCOL.equals(url.getProtocol())) {\r\n+            return;\r\n+        }\r\n+        String serviceName = buildServiceName(url);\r\n+\r\n+        registryClient.unregister(serviceName, DEFAULT_GROUP, RegistryType.SUBSCRIBER);\r\n+    }\r\n+\r\n+    private void handleRegistryData(UserData data, NotifyListener notifyListener,\r\n+                                    CountDownLatch latch) {\r\n+        try {\r\n+            List<URL> urls = new ArrayList<>();\r\n+            if (null != data) {\r\n+\r\n+                List<String> datas = flatUserData(data);\r\n+                for (String serviceUrl : datas) {\r\n+                    URL url = URL.valueOf(serviceUrl);\r\n+                    String serverApplication = url.getParameter(APPLICATION_KEY);\r\n+                    if (StringUtils.isNotEmpty(serverApplication)) {\r\n+                        url = url.addParameter(\"dstApp\", serverApplication);\r\n+                    }\r\n+                    urls.add(url);\r\n+                }\r\n+            }\r\n+            notifyListener.notify(urls);\r\n+        } finally {\r\n+            latch.countDown();\r\n+        }\r\n+    }\r\n+\r\n+    private String buildServiceName(URL url) {\r\n+        // return url.getServiceKey();\r\n+        StringBuilder buf = new StringBuilder();\r\n+        buf.append(url.getServiceInterface());\r\n+        String version = url.getParameter(VERSION_KEY);\r\n+        if (StringUtils.isNotEmpty(version)) {\r\n+            buf.append(\":\").append(version);\r\n+        }\r\n+        String group = url.getParameter(GROUP_KEY);\r\n+        if (StringUtils.isNotEmpty(group)) {\r\n+            buf.append(\":\").append(group);\r\n+        }\r\n+        buf.append(\"@\").append(DUBBO);\r\n+        return buf.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * Print address data.\r\n+     *\r\n+     * @param dataId   the data id\r\n+     * @param userData the user data\r\n+     */\r\n+    protected void printAddressData(String dataId, UserData userData) {\r\n+\r\n+        List<String> datas;\r\n+        if (userData == null) {\r\n+            datas = new ArrayList<>(0);\r\n+        } else {\r\n+            datas = flatUserData(userData);\r\n+        }\r\n+\r\n+        StringBuilder sb = new StringBuilder();\r\n+        for (String provider : datas) {\r\n+            sb.append(\"  >>> \").append(provider).append(\"\\n\");\r\n+        }\r\n+        if (logger.isInfoEnabled()) {\r\n+            logger.info(\"Receive updated RPC service addresses: service[\" + dataId\r\n+                    + \"]\\n  .Available target addresses size [\" + datas.size() + \"]\\n\"\r\n+                    + sb.toString());\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Add attributes for sub.\r\n+     *\r\n+     * @param subscriberRegistration the subscriber registration\r\n+     */\r\n+    protected void addAttributesForSub(SubscriberRegistration subscriberRegistration) {\r\n+        subscriberRegistration.setGroup(DEFAULT_GROUP);\r\n+        subscriberRegistration.setScopeEnum(ScopeEnum.global);\r\n+    }\r\n+\r\n+    /**\r\n+     * Flat user data list.\r\n+     *\r\n+     * @param userData the user data\r\n+     * @return the list\r\n+     */\r\n+    protected List<String> flatUserData(UserData userData) {\r\n+        List<String> result = new ArrayList<>();\r\n+        Map<String, List<String>> zoneData = userData.getZoneData();\r\n+\r\n+        for (Map.Entry<String, List<String>> entry : zoneData.entrySet()) {\r\n+            result.addAll(entry.getValue());\r\n+        }\r\n+\r\n+        return result;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/sofa/SofaRegistryConstants.java", "source2": "org/apache/dubbo/registry/sofa/SofaRegistryConstants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,43 +1,43 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.sofa;\n-\n-/**\n- * @since 2.7.2\n- */\n-public class SofaRegistryConstants {\n-\n-    /**\n-     * Default data center\n-     */\n-    public static final String LOCAL_DATA_CENTER = \"DefaultDataCenter\";\n-\n-    /**\n-     * Default region\n-     */\n-    public static final String LOCAL_REGION = \"DEFAULT_ZONE\";\n-\n-    /**\n-     * Default group\n-     */\n-    public static final String DEFAULT_GROUP = \"SOFA\";\n-\n-    /**\n-     * parameter for address.wait.time of rpc reference\n-     */\n-    public static final String ADDRESS_WAIT_TIME_KEY = \"rpc.reference.address.wait.time\";\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.sofa;\r\n+\r\n+/**\r\n+ * @since 2.7.2\r\n+ */\r\n+public class SofaRegistryConstants {\r\n+\r\n+    /**\r\n+     * Default data center\r\n+     */\r\n+    public static final String LOCAL_DATA_CENTER = \"DefaultDataCenter\";\r\n+\r\n+    /**\r\n+     * Default region\r\n+     */\r\n+    public static final String LOCAL_REGION = \"DEFAULT_ZONE\";\r\n+\r\n+    /**\r\n+     * Default group\r\n+     */\r\n+    public static final String DEFAULT_GROUP = \"SOFA\";\r\n+\r\n+    /**\r\n+     * parameter for address.wait.time of rpc reference\r\n+     */\r\n+    public static final String ADDRESS_WAIT_TIME_KEY = \"rpc.reference.address.wait.time\";\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/sofa/SofaRegistryFactory.java", "source2": "org/apache/dubbo/registry/sofa/SofaRegistryFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,41 +1,41 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.sofa;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.support.AbstractRegistryFactory;\n-\n-/**\n- * @since 2.7.2\n- */\n-public class SofaRegistryFactory extends AbstractRegistryFactory {\n-\n-    @Override\n-    protected Registry createRegistry(URL url) {\n-        initEnvironment(url);\n-        return new SofaRegistry(url);\n-    }\n-\n-    /**\n-     * For extension, such as load zone/accessKey/secretKey/...\n-     * \n-     * @param url URL\n-     */\n-    protected void initEnvironment(URL url) {\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.sofa;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.support.AbstractRegistryFactory;\r\n+\r\n+/**\r\n+ * @since 2.7.2\r\n+ */\r\n+public class SofaRegistryFactory extends AbstractRegistryFactory {\r\n+\r\n+    @Override\r\n+    protected Registry createRegistry(URL url) {\r\n+        initEnvironment(url);\r\n+        return new SofaRegistry(url);\r\n+    }\r\n+\r\n+    /**\r\n+     * For extension, such as load zone/accessKey/secretKey/...\r\n+     * \r\n+     * @param url URL\r\n+     */\r\n+    protected void initEnvironment(URL url) {\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/sofa/SofaRegistryInstance.java", "source2": "org/apache/dubbo/registry/sofa/SofaRegistryInstance.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,90 +1,90 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.sofa;\n-\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-public class SofaRegistryInstance {\n-    private String id;\n-\n-    private String host;\n-\n-    private int port;\n-\n-    private String name;\n-\n-    private Map<String, String> metadata = new HashMap<>();\n-\n-    private SofaRegistryInstance() {\n-    }\n-\n-    public SofaRegistryInstance(String id, String host, int port, String name, Map<String, String> metadata) {\n-        this.id = id;\n-        this.host = host;\n-        this.port = port;\n-        this.name = name;\n-        this.metadata = metadata;\n-    }\n-\n-    public String getHost() {\n-        return host;\n-    }\n-\n-    public void setHost(String host) {\n-        this.host = host;\n-    }\n-\n-    public int getPort() {\n-        return port;\n-    }\n-\n-    public void setPort(int port) {\n-        this.port = port;\n-    }\n-\n-    public String getId() {\n-        return id;\n-    }\n-\n-    public void setId(String id) {\n-        this.id = id;\n-    }\n-\n-    public String getName() {\n-        return this.name;\n-    }\n-\n-    public void setName(String name) {\n-        this.name = name;\n-    }\n-\n-    public Map<String, String> getMetadata() {\n-        return this.metadata;\n-    }\n-\n-    public void setMetadata(Map<String, String> metadata) {\n-        this.metadata = metadata;\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"SofaRegistryInstance{\" + \"id='\" + this.id + '\\''+ \"host='\" + this.host + '\\'' + \"port='\" + this.port + '\\''+ \", name='\" + this.name\n-                + '\\'' + \", metadata=\" + this.metadata + '}';\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.sofa;\r\n+\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+public class SofaRegistryInstance {\r\n+    private String id;\r\n+\r\n+    private String host;\r\n+\r\n+    private int port;\r\n+\r\n+    private String name;\r\n+\r\n+    private Map<String, String> metadata = new HashMap<>();\r\n+\r\n+    private SofaRegistryInstance() {\r\n+    }\r\n+\r\n+    public SofaRegistryInstance(String id, String host, int port, String name, Map<String, String> metadata) {\r\n+        this.id = id;\r\n+        this.host = host;\r\n+        this.port = port;\r\n+        this.name = name;\r\n+        this.metadata = metadata;\r\n+    }\r\n+\r\n+    public String getHost() {\r\n+        return host;\r\n+    }\r\n+\r\n+    public void setHost(String host) {\r\n+        this.host = host;\r\n+    }\r\n+\r\n+    public int getPort() {\r\n+        return port;\r\n+    }\r\n+\r\n+    public void setPort(int port) {\r\n+        this.port = port;\r\n+    }\r\n+\r\n+    public String getId() {\r\n+        return id;\r\n+    }\r\n+\r\n+    public void setId(String id) {\r\n+        this.id = id;\r\n+    }\r\n+\r\n+    public String getName() {\r\n+        return this.name;\r\n+    }\r\n+\r\n+    public void setName(String name) {\r\n+        this.name = name;\r\n+    }\r\n+\r\n+    public Map<String, String> getMetadata() {\r\n+        return this.metadata;\r\n+    }\r\n+\r\n+    public void setMetadata(Map<String, String> metadata) {\r\n+        this.metadata = metadata;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"SofaRegistryInstance{\" + \"id='\" + this.id + '\\''+ \"host='\" + this.host + '\\'' + \"port='\" + this.port + '\\''+ \", name='\" + this.name\r\n+                + '\\'' + \", metadata=\" + this.metadata + '}';\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/sofa/SofaRegistryServiceDiscovery.java", "source2": "org/apache/dubbo/registry/sofa/SofaRegistryServiceDiscovery.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,254 +1,254 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.sofa;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ConfigUtils;\n-import org.apache.dubbo.common.utils.DefaultPage;\n-import org.apache.dubbo.common.utils.Page;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\n-import org.apache.dubbo.registry.client.DefaultServiceInstance;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\n-import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\n-import org.apache.dubbo.rpc.RpcException;\n-\n-import com.alipay.sofa.registry.client.api.Publisher;\n-import com.alipay.sofa.registry.client.api.RegistryClientConfig;\n-import com.alipay.sofa.registry.client.api.Subscriber;\n-import com.alipay.sofa.registry.client.api.model.RegistryType;\n-import com.alipay.sofa.registry.client.api.model.UserData;\n-import com.alipay.sofa.registry.client.api.registration.PublisherRegistration;\n-import com.alipay.sofa.registry.client.api.registration.SubscriberRegistration;\n-import com.alipay.sofa.registry.client.provider.DefaultRegistryClient;\n-import com.alipay.sofa.registry.client.provider.DefaultRegistryClientConfigBuilder;\n-import com.alipay.sofa.registry.core.model.ScopeEnum;\n-import com.google.gson.Gson;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.CountDownLatch;\n-import java.util.concurrent.TimeUnit;\n-\n-import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.ADDRESS_WAIT_TIME_KEY;\n-import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.LOCAL_DATA_CENTER;\n-import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.LOCAL_REGION;\n-\n-\n-public class SofaRegistryServiceDiscovery extends AbstractServiceDiscovery {\n-\n-    private static final Logger LOGGER = LoggerFactory.getLogger(SofaRegistryServiceDiscovery.class);\n-\n-    private static final String DEFAULT_GROUP = \"dubbo\";\n-\n-    private URL registryURL;\n-\n-    private DefaultRegistryClient registryClient;\n-\n-    private int waitAddressTimeout;\n-\n-    private RegistryClientConfig registryClientConfig;\n-\n-    private final Map<String, Publisher> publishers = new ConcurrentHashMap<>();\n-\n-    private final Map<String, Subscriber> subscribers = new ConcurrentHashMap<>();\n-\n-    private ServiceInstance serviceInstance;\n-\n-    private Gson gson = new Gson();\n-\n-    @Override\n-    public void initialize(URL registryURL) throws Exception {\n-        this.registryURL = registryURL;\n-\n-        this.registryClientConfig = DefaultRegistryClientConfigBuilder.start()\n-                .setDataCenter(LOCAL_DATA_CENTER)\n-                .setZone(LOCAL_REGION)\n-                .setRegistryEndpoint(registryURL.getHost())\n-                .setRegistryEndpointPort(registryURL.getPort()).build();\n-\n-        registryClient = new DefaultRegistryClient(this.registryClientConfig);\n-        registryClient.init();\n-\n-        this.waitAddressTimeout = Integer.parseInt(ConfigUtils.getProperty(ADDRESS_WAIT_TIME_KEY, \"5000\"));\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return registryURL;\n-    }\n-\n-    @Override\n-    public void destroy() throws Exception {\n-    }\n-\n-    @Override\n-    public void doRegister(ServiceInstance serviceInstance) {\n-        SofaRegistryInstance sofaRegistryInstance = new SofaRegistryInstance(serviceInstance.getId(), serviceInstance.getHost(), serviceInstance.getPort(), serviceInstance.getServiceName(), serviceInstance.getMetadata());\n-        Publisher publisher = publishers.get(serviceInstance.getServiceName());\n-        this.serviceInstance = serviceInstance;\n-        if (null == publisher) {\n-            PublisherRegistration registration = new PublisherRegistration(serviceInstance.getServiceName());\n-            registration.setGroup(DEFAULT_GROUP);\n-            publisher = registryClient.register(registration, gson.toJson(sofaRegistryInstance));\n-\n-            publishers.put(serviceInstance.getServiceName(), publisher);\n-        } else {\n-            publisher.republish(gson.toJson(sofaRegistryInstance));\n-        }\n-    }\n-\n-    @Override\n-    public void doUpdate(ServiceInstance serviceInstance) {\n-        register(serviceInstance);\n-    }\n-\n-    @Override\n-    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\n-        registryClient.unregister(serviceInstance.getServiceName(), DEFAULT_GROUP, RegistryType.PUBLISHER);\n-    }\n-\n-    @Override\n-    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws NullPointerException, IllegalArgumentException {\n-        listener.getServiceNames().forEach(serviceName -> registerServiceWatcher(serviceName, listener));\n-    }\n-\n-    protected void registerServiceWatcher(String serviceName, ServiceInstancesChangedListener listener) {\n-        Subscriber subscriber = subscribers.get(serviceName);\n-\n-        if (null == subscriber) {\n-            final CountDownLatch latch = new CountDownLatch(1);\n-            SubscriberRegistration subscriberRegistration = new SubscriberRegistration(serviceName, (dataId, data) -> {\n-                handleRegistryData(dataId, data, listener, latch);\n-            });\n-            subscriberRegistration.setGroup(DEFAULT_GROUP);\n-            subscriberRegistration.setScopeEnum(ScopeEnum.global);\n-\n-            subscriber = registryClient.register(subscriberRegistration);\n-            subscribers.put(serviceName, subscriber);\n-            waitAddress(serviceName, latch);\n-        }\n-    }\n-\n-    @Override\n-    public Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize, boolean healthyOnly)\n-            throws NullPointerException, IllegalArgumentException, UnsupportedOperationException {\n-        Subscriber subscriber = subscribers.get(serviceName);\n-\n-        if (null != subscriber) {\n-            List<ServiceInstance> serviceInstanceList = handleRegistryData(serviceName, subscriber.peekData(), null, null);\n-            return new DefaultPage<>(offset, pageSize, serviceInstanceList, serviceInstanceList.size());\n-        }\n-\n-        throw new RpcException(\"getInstances error!\");\n-    }\n-\n-    private List<ServiceInstance> handleRegistryData(String dataId, UserData userData, ServiceInstancesChangedListener listener, CountDownLatch latch) {\n-        try {\n-            List<String> datas = getUserData(dataId, userData);\n-            List<ServiceInstance> serviceInstances = new ArrayList<>(datas.size());\n-\n-            for (String serviceData : datas) {\n-                SofaRegistryInstance sri = gson.fromJson(serviceData, SofaRegistryInstance.class);\n-\n-                DefaultServiceInstance serviceInstance = new DefaultServiceInstance(sri.getId(), dataId, sri.getHost(), sri.getPort());\n-                serviceInstance.setMetadata(sri.getMetadata());\n-                serviceInstances.add(serviceInstance);\n-            }\n-\n-            if (null != listener) {\n-                listener.onEvent(new ServiceInstancesChangedEvent(dataId, serviceInstances));\n-            }\n-\n-            return serviceInstances;\n-        } finally {\n-            if (null != latch) {\n-                latch.countDown();\n-            }\n-        }\n-    }\n-\n-    private void waitAddress(String serviceName, CountDownLatch countDownLatch) {\n-        try {\n-            if (!countDownLatch.await(waitAddressTimeout, TimeUnit.MILLISECONDS)) {\n-                LOGGER.warn(\"Subscribe data failed by dataId \" + serviceName);\n-            }\n-        } catch (Exception e) {\n-            LOGGER.error(\"Error when wait Address!\", e);\n-        }\n-    }\n-\n-    /**\n-     * Print address data.\n-     *\n-     * @param dataId   the data id\n-     * @param userData the user data\n-     */\n-    protected List<String> getUserData(String dataId, UserData userData) {\n-\n-        List<String> datas = null;\n-        if (userData == null) {\n-            datas = new ArrayList<>(0);\n-        } else {\n-            datas = flatUserData(userData);\n-        }\n-\n-        StringBuilder sb = new StringBuilder();\n-        for (String provider : datas) {\n-            sb.append(\"  >>> \").append(provider).append(\"\\n\");\n-        }\n-        if (LOGGER.isInfoEnabled()) {\n-            LOGGER.info(\"Receive updated RPC service addresses: service[\" + dataId\n-                    + \"]\\n  .Available target addresses size [\" + datas.size() + \"]\\n\"\n-                    + sb.toString());\n-        }\n-\n-        return datas;\n-    }\n-\n-    /**\n-     * Flat user data list.\n-     *\n-     * @param userData the user data\n-     * @return the list\n-     */\n-    protected List<String> flatUserData(UserData userData) {\n-        List<String> result = new ArrayList<>();\n-        Map<String, List<String>> zoneData = userData.getZoneData();\n-\n-        for (Map.Entry<String, List<String>> entry : zoneData.entrySet()) {\n-            result.addAll(entry.getValue());\n-        }\n-\n-        return result;\n-    }\n-\n-    /**\n-     * @return\n-     * @TODO \u540e\u7eed\u786e\u8ba4\u4e0b\n-     */\n-    @Override\n-    public Set<String> getServices() {\n-        return subscribers.keySet();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.sofa;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ConfigUtils;\r\n+import org.apache.dubbo.common.utils.DefaultPage;\r\n+import org.apache.dubbo.common.utils.Page;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.DefaultServiceInstance;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\r\n+import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+\r\n+import com.alipay.sofa.registry.client.api.Publisher;\r\n+import com.alipay.sofa.registry.client.api.RegistryClientConfig;\r\n+import com.alipay.sofa.registry.client.api.Subscriber;\r\n+import com.alipay.sofa.registry.client.api.model.RegistryType;\r\n+import com.alipay.sofa.registry.client.api.model.UserData;\r\n+import com.alipay.sofa.registry.client.api.registration.PublisherRegistration;\r\n+import com.alipay.sofa.registry.client.api.registration.SubscriberRegistration;\r\n+import com.alipay.sofa.registry.client.provider.DefaultRegistryClient;\r\n+import com.alipay.sofa.registry.client.provider.DefaultRegistryClientConfigBuilder;\r\n+import com.alipay.sofa.registry.core.model.ScopeEnum;\r\n+import com.google.gson.Gson;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.CountDownLatch;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.ADDRESS_WAIT_TIME_KEY;\r\n+import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.LOCAL_DATA_CENTER;\r\n+import static org.apache.dubbo.registry.sofa.SofaRegistryConstants.LOCAL_REGION;\r\n+\r\n+\r\n+public class SofaRegistryServiceDiscovery extends AbstractServiceDiscovery {\r\n+\r\n+    private static final Logger LOGGER = LoggerFactory.getLogger(SofaRegistryServiceDiscovery.class);\r\n+\r\n+    private static final String DEFAULT_GROUP = \"dubbo\";\r\n+\r\n+    private URL registryURL;\r\n+\r\n+    private DefaultRegistryClient registryClient;\r\n+\r\n+    private int waitAddressTimeout;\r\n+\r\n+    private RegistryClientConfig registryClientConfig;\r\n+\r\n+    private final Map<String, Publisher> publishers = new ConcurrentHashMap<>();\r\n+\r\n+    private final Map<String, Subscriber> subscribers = new ConcurrentHashMap<>();\r\n+\r\n+    private ServiceInstance serviceInstance;\r\n+\r\n+    private Gson gson = new Gson();\r\n+\r\n+    @Override\r\n+    public void initialize(URL registryURL) throws Exception {\r\n+        this.registryURL = registryURL;\r\n+\r\n+        this.registryClientConfig = DefaultRegistryClientConfigBuilder.start()\r\n+                .setDataCenter(LOCAL_DATA_CENTER)\r\n+                .setZone(LOCAL_REGION)\r\n+                .setRegistryEndpoint(registryURL.getHost())\r\n+                .setRegistryEndpointPort(registryURL.getPort()).build();\r\n+\r\n+        registryClient = new DefaultRegistryClient(this.registryClientConfig);\r\n+        registryClient.init();\r\n+\r\n+        this.waitAddressTimeout = Integer.parseInt(ConfigUtils.getProperty(ADDRESS_WAIT_TIME_KEY, \"5000\"));\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return registryURL;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() throws Exception {\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doRegister(ServiceInstance serviceInstance) {\r\n+        SofaRegistryInstance sofaRegistryInstance = new SofaRegistryInstance(serviceInstance.getId(), serviceInstance.getHost(), serviceInstance.getPort(), serviceInstance.getServiceName(), serviceInstance.getMetadata());\r\n+        Publisher publisher = publishers.get(serviceInstance.getServiceName());\r\n+        this.serviceInstance = serviceInstance;\r\n+        if (null == publisher) {\r\n+            PublisherRegistration registration = new PublisherRegistration(serviceInstance.getServiceName());\r\n+            registration.setGroup(DEFAULT_GROUP);\r\n+            publisher = registryClient.register(registration, gson.toJson(sofaRegistryInstance));\r\n+\r\n+            publishers.put(serviceInstance.getServiceName(), publisher);\r\n+        } else {\r\n+            publisher.republish(gson.toJson(sofaRegistryInstance));\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUpdate(ServiceInstance serviceInstance) {\r\n+        register(serviceInstance);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\r\n+        registryClient.unregister(serviceInstance.getServiceName(), DEFAULT_GROUP, RegistryType.PUBLISHER);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws NullPointerException, IllegalArgumentException {\r\n+        listener.getServiceNames().forEach(serviceName -> registerServiceWatcher(serviceName, listener));\r\n+    }\r\n+\r\n+    protected void registerServiceWatcher(String serviceName, ServiceInstancesChangedListener listener) {\r\n+        Subscriber subscriber = subscribers.get(serviceName);\r\n+\r\n+        if (null == subscriber) {\r\n+            final CountDownLatch latch = new CountDownLatch(1);\r\n+            SubscriberRegistration subscriberRegistration = new SubscriberRegistration(serviceName, (dataId, data) -> {\r\n+                handleRegistryData(dataId, data, listener, latch);\r\n+            });\r\n+            subscriberRegistration.setGroup(DEFAULT_GROUP);\r\n+            subscriberRegistration.setScopeEnum(ScopeEnum.global);\r\n+\r\n+            subscriber = registryClient.register(subscriberRegistration);\r\n+            subscribers.put(serviceName, subscriber);\r\n+            waitAddress(serviceName, latch);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize, boolean healthyOnly)\r\n+            throws NullPointerException, IllegalArgumentException, UnsupportedOperationException {\r\n+        Subscriber subscriber = subscribers.get(serviceName);\r\n+\r\n+        if (null != subscriber) {\r\n+            List<ServiceInstance> serviceInstanceList = handleRegistryData(serviceName, subscriber.peekData(), null, null);\r\n+            return new DefaultPage<>(offset, pageSize, serviceInstanceList, serviceInstanceList.size());\r\n+        }\r\n+\r\n+        throw new RpcException(\"getInstances error!\");\r\n+    }\r\n+\r\n+    private List<ServiceInstance> handleRegistryData(String dataId, UserData userData, ServiceInstancesChangedListener listener, CountDownLatch latch) {\r\n+        try {\r\n+            List<String> datas = getUserData(dataId, userData);\r\n+            List<ServiceInstance> serviceInstances = new ArrayList<>(datas.size());\r\n+\r\n+            for (String serviceData : datas) {\r\n+                SofaRegistryInstance sri = gson.fromJson(serviceData, SofaRegistryInstance.class);\r\n+\r\n+                DefaultServiceInstance serviceInstance = new DefaultServiceInstance(sri.getId(), dataId, sri.getHost(), sri.getPort());\r\n+                serviceInstance.setMetadata(sri.getMetadata());\r\n+                serviceInstances.add(serviceInstance);\r\n+            }\r\n+\r\n+            if (null != listener) {\r\n+                listener.onEvent(new ServiceInstancesChangedEvent(dataId, serviceInstances));\r\n+            }\r\n+\r\n+            return serviceInstances;\r\n+        } finally {\r\n+            if (null != latch) {\r\n+                latch.countDown();\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private void waitAddress(String serviceName, CountDownLatch countDownLatch) {\r\n+        try {\r\n+            if (!countDownLatch.await(waitAddressTimeout, TimeUnit.MILLISECONDS)) {\r\n+                LOGGER.warn(\"Subscribe data failed by dataId \" + serviceName);\r\n+            }\r\n+        } catch (Exception e) {\r\n+            LOGGER.error(\"Error when wait Address!\", e);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Print address data.\r\n+     *\r\n+     * @param dataId   the data id\r\n+     * @param userData the user data\r\n+     */\r\n+    protected List<String> getUserData(String dataId, UserData userData) {\r\n+\r\n+        List<String> datas = null;\r\n+        if (userData == null) {\r\n+            datas = new ArrayList<>(0);\r\n+        } else {\r\n+            datas = flatUserData(userData);\r\n+        }\r\n+\r\n+        StringBuilder sb = new StringBuilder();\r\n+        for (String provider : datas) {\r\n+            sb.append(\"  >>> \").append(provider).append(\"\\n\");\r\n+        }\r\n+        if (LOGGER.isInfoEnabled()) {\r\n+            LOGGER.info(\"Receive updated RPC service addresses: service[\" + dataId\r\n+                    + \"]\\n  .Available target addresses size [\" + datas.size() + \"]\\n\"\r\n+                    + sb.toString());\r\n+        }\r\n+\r\n+        return datas;\r\n+    }\r\n+\r\n+    /**\r\n+     * Flat user data list.\r\n+     *\r\n+     * @param userData the user data\r\n+     * @return the list\r\n+     */\r\n+    protected List<String> flatUserData(UserData userData) {\r\n+        List<String> result = new ArrayList<>();\r\n+        Map<String, List<String>> zoneData = userData.getZoneData();\r\n+\r\n+        for (Map.Entry<String, List<String>> entry : zoneData.entrySet()) {\r\n+            result.addAll(entry.getValue());\r\n+        }\r\n+\r\n+        return result;\r\n+    }\r\n+\r\n+    /**\r\n+     * @return\r\n+     * @TODO \u540e\u7eed\u786e\u8ba4\u4e0b\r\n+     */\r\n+    @Override\r\n+    public Set<String> getServices() {\r\n+        return subscribers.keySet();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/sofa/SofaRegistryServiceDiscoveryFactory.java", "source2": "org/apache/dubbo/registry/sofa/SofaRegistryServiceDiscoveryFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,28 +1,28 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.sofa;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-\n-public class SofaRegistryServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\n-    @Override\n-    protected ServiceDiscovery createDiscovery(URL registryURL) {\n-        return new SofaRegistryServiceDiscovery();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.sofa;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+\r\n+public class SofaRegistryServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory {\r\n+    @Override\r\n+    protected ServiceDiscovery createDiscovery(URL registryURL) {\r\n+        return new SofaRegistryServiceDiscovery();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/multiple/MultipleRegistry.java", "source2": "org/apache/dubbo/registry/multiple/MultipleRegistry.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,337 +1,337 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.multiple;\n-\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.constants.CommonConstants;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.registry.NotifyListener;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.RegistryFactory;\n-import org.apache.dubbo.registry.support.AbstractRegistry;\n-\n-import java.util.ArrayList;\n-import java.util.HashMap;\n-import java.util.HashSet;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-import static org.apache.dubbo.common.constants.RegistryConstants.EMPTY_PROTOCOL;\n-\n-/**\n- * MultipleRegistry\n- */\n-public class MultipleRegistry extends AbstractRegistry {\n-\n-    public static final String REGISTRY_FOR_SERVICE = \"service-registry\";\n-    public static final String REGISTRY_FOR_REFERENCE = \"reference-registry\";\n-\n-    protected RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();\n-    private final Map<String, Registry> serviceRegistries = new ConcurrentHashMap<>(4);\n-    private final Map<String, Registry> referenceRegistries = new ConcurrentHashMap<String, Registry>(4);\n-    private final Map<NotifyListener, MultipleNotifyListenerWrapper> multipleNotifyListenerMap = new ConcurrentHashMap<NotifyListener, MultipleNotifyListenerWrapper>(32);\n-    protected List<String> origServiceRegistryURLs;\n-    protected List<String> origReferenceRegistryURLs;\n-    protected List<String> effectServiceRegistryURLs;\n-    protected List<String> effectReferenceRegistryURLs;\n-    private URL registryUrl;\n-    private String applicationName;\n-\n-    public MultipleRegistry(URL url) {\n-        this(url, true, true);\n-\n-        boolean defaultRegistry = url.getParameter(CommonConstants.DEFAULT_KEY, true);\n-        if (defaultRegistry && effectServiceRegistryURLs.isEmpty() && effectReferenceRegistryURLs.isEmpty()) {\n-            throw new IllegalArgumentException(\"Illegal registry url. You need to configure parameter \" +\n-                    REGISTRY_FOR_SERVICE + \" or \" + REGISTRY_FOR_REFERENCE);\n-        }\n-    }\n-\n-    public MultipleRegistry(URL url, boolean initServiceRegistry, boolean initReferenceRegistry) {\n-        super(url);\n-        this.registryUrl = url;\n-        this.applicationName = url.getParameter(CommonConstants.APPLICATION_KEY);\n-        init();\n-        checkApplicationName(this.applicationName);\n-        // This urls contain parameter and it do not inherit from the parameter of url in MultipleRegistry\n-\n-        Map<String, Registry> registryMap = new HashMap<>();\n-        if (initServiceRegistry) {\n-            initServiceRegistry(url, registryMap);\n-        }\n-        if (initReferenceRegistry) {\n-            initReferenceRegistry(url, registryMap);\n-        }\n-    }\n-\n-    protected void initServiceRegistry(URL url, Map<String, Registry> registryMap) {\n-        origServiceRegistryURLs = url.getParameter(REGISTRY_FOR_SERVICE, new ArrayList<String>());\n-        effectServiceRegistryURLs = this.filterServiceRegistry(origServiceRegistryURLs);\n-        for (String tmpUrl : effectServiceRegistryURLs) {\n-            if (registryMap.get(tmpUrl) != null) {\n-                serviceRegistries.put(tmpUrl, registryMap.get(tmpUrl));\n-                continue;\n-            }\n-            Registry registry = registryFactory.getRegistry(URL.valueOf(tmpUrl));\n-            registryMap.put(tmpUrl, registry);\n-            serviceRegistries.put(tmpUrl, registry);\n-        }\n-    }\n-\n-    protected void initReferenceRegistry(URL url, Map<String, Registry> registryMap) {\n-        origReferenceRegistryURLs = url.getParameter(REGISTRY_FOR_REFERENCE, new ArrayList<String>());\n-        effectReferenceRegistryURLs = this.filterReferenceRegistry(origReferenceRegistryURLs);\n-        for (String tmpUrl : effectReferenceRegistryURLs) {\n-            if (registryMap.get(tmpUrl) != null) {\n-                referenceRegistries.put(tmpUrl, registryMap.get(tmpUrl));\n-                continue;\n-            }\n-            Registry registry = registryFactory.getRegistry(URL.valueOf(tmpUrl));\n-            registryMap.put(tmpUrl, registry);\n-            referenceRegistries.put(tmpUrl, registry);\n-        }\n-    }\n-\n-\n-    @Override\n-    public URL getUrl() {\n-        return registryUrl;\n-    }\n-\n-    @Override\n-    public boolean isAvailable() {\n-        boolean available = serviceRegistries.isEmpty();\n-        for (Registry serviceRegistry : serviceRegistries.values()) {\n-            if (serviceRegistry.isAvailable()) {\n-                available = true;\n-            }\n-        }\n-        if (!available) {\n-            return false;\n-        }\n-\n-        available = referenceRegistries.isEmpty();\n-        for (Registry referenceRegistry : referenceRegistries.values()) {\n-            if (referenceRegistry.isAvailable()) {\n-                available = true;\n-            }\n-        }\n-        if (!available) {\n-            return false;\n-        }\n-        return true;\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        Set<Registry> registries = new HashSet<Registry>(serviceRegistries.values());\n-        registries.addAll(referenceRegistries.values());\n-        for (Registry registry : registries) {\n-            registry.destroy();\n-        }\n-    }\n-\n-    @Override\n-    public void register(URL url) {\n-        super.register(url);\n-        for (Registry registry : serviceRegistries.values()) {\n-            registry.register(url);\n-        }\n-    }\n-\n-    @Override\n-    public void unregister(URL url) {\n-        super.unregister(url);\n-        for (Registry registry : serviceRegistries.values()) {\n-            registry.unregister(url);\n-        }\n-    }\n-\n-    @Override\n-    public void subscribe(URL url, NotifyListener listener) {\n-        MultipleNotifyListenerWrapper multipleNotifyListenerWrapper = new MultipleNotifyListenerWrapper(listener);\n-        multipleNotifyListenerMap.put(listener, multipleNotifyListenerWrapper);\n-        for (Registry registry : referenceRegistries.values()) {\n-            SingleNotifyListener singleNotifyListener = new SingleNotifyListener(multipleNotifyListenerWrapper, registry);\n-            multipleNotifyListenerWrapper.putRegistryMap(registry.getUrl(), singleNotifyListener);\n-            registry.subscribe(url, singleNotifyListener);\n-        }\n-        super.subscribe(url, multipleNotifyListenerWrapper);\n-    }\n-\n-    @Override\n-    public void unsubscribe(URL url, NotifyListener listener) {\n-        MultipleNotifyListenerWrapper notifyListener = multipleNotifyListenerMap.remove(listener);\n-        for (Registry registry : referenceRegistries.values()) {\n-            SingleNotifyListener singleNotifyListener = notifyListener.registryMap.get(registry.getUrl());\n-            registry.unsubscribe(url, singleNotifyListener);\n-        }\n-\n-        if (notifyListener != null) {\n-            super.unsubscribe(url, notifyListener);\n-            notifyListener.destroy();\n-        }\n-    }\n-\n-    @Override\n-    public List<URL> lookup(URL url) {\n-        List<URL> urls = new ArrayList<URL>();\n-        for (Registry registry : referenceRegistries.values()) {\n-            List<URL> tmpUrls = registry.lookup(url);\n-            if (!CollectionUtils.isEmpty(tmpUrls)) {\n-                urls.addAll(tmpUrls);\n-            }\n-        }\n-        return urls;\n-    }\n-\n-    protected void init() {\n-    }\n-\n-    protected List<String> filterServiceRegistry(List<String> serviceRegistryURLs) {\n-        return serviceRegistryURLs;\n-    }\n-\n-    protected List<String> filterReferenceRegistry(List<String> referenceRegistryURLs) {\n-        return referenceRegistryURLs;\n-    }\n-\n-\n-    protected void checkApplicationName(String applicationName) {\n-    }\n-\n-    protected String getApplicationName() {\n-        return applicationName;\n-    }\n-\n-    public Map<String, Registry> getServiceRegistries() {\n-        return serviceRegistries;\n-    }\n-\n-    public Map<String, Registry> getReferenceRegistries() {\n-        return referenceRegistries;\n-    }\n-\n-    public List<String> getOrigServiceRegistryURLs() {\n-        return origServiceRegistryURLs;\n-    }\n-\n-    public List<String> getOrigReferenceRegistryURLs() {\n-        return origReferenceRegistryURLs;\n-    }\n-\n-    public List<String> getEffectServiceRegistryURLs() {\n-        return effectServiceRegistryURLs;\n-    }\n-\n-    public List<String> getEffectReferenceRegistryURLs() {\n-        return effectReferenceRegistryURLs;\n-    }\n-\n-    static protected class MultipleNotifyListenerWrapper implements NotifyListener {\n-\n-        Map<URL, SingleNotifyListener> registryMap = new ConcurrentHashMap<URL, SingleNotifyListener>(4);\n-        NotifyListener sourceNotifyListener;\n-\n-        public MultipleNotifyListenerWrapper(NotifyListener sourceNotifyListener) {\n-            this.sourceNotifyListener = sourceNotifyListener;\n-        }\n-\n-        public void putRegistryMap(URL registryURL, SingleNotifyListener singleNotifyListener) {\n-            this.registryMap.put(registryURL, singleNotifyListener);\n-        }\n-\n-        public void destroy() {\n-            for (SingleNotifyListener singleNotifyListener : registryMap.values()) {\n-                if (singleNotifyListener != null) {\n-                    singleNotifyListener.destroy();\n-                }\n-            }\n-            registryMap.clear();\n-            sourceNotifyListener = null;\n-        }\n-\n-        public synchronized void notifySourceListener() {\n-            List<URL> notifyURLs = new ArrayList<URL>();\n-            URL emptyURL = null;\n-            for (SingleNotifyListener singleNotifyListener : registryMap.values()) {\n-                List<URL> tmpUrls = singleNotifyListener.getUrlList();\n-                if (CollectionUtils.isEmpty(tmpUrls)) {\n-                    continue;\n-                }\n-                // empty protocol\n-                if (tmpUrls.size() == 1\n-                        && tmpUrls.get(0) != null\n-                        && EMPTY_PROTOCOL.equals(tmpUrls.get(0).getProtocol())) {\n-                    // if only one empty\n-                    if (emptyURL == null) {\n-                        emptyURL = tmpUrls.get(0);\n-                    }\n-                    continue;\n-                }\n-                notifyURLs.addAll(tmpUrls);\n-            }\n-            // if no notify URL, add empty protocol URL\n-            if (emptyURL != null && notifyURLs.isEmpty()) {\n-                notifyURLs.add(emptyURL);\n-            }\n-            this.notify(notifyURLs);\n-        }\n-\n-        @Override\n-        public void notify(List<URL> urls) {\n-            sourceNotifyListener.notify(urls);\n-        }\n-\n-        public Map<URL, SingleNotifyListener> getRegistryMap() {\n-            return registryMap;\n-        }\n-    }\n-\n-    static protected class SingleNotifyListener implements NotifyListener {\n-\n-        MultipleNotifyListenerWrapper multipleNotifyListenerWrapper;\n-        Registry registry;\n-        volatile List<URL> urlList;\n-\n-        public SingleNotifyListener(MultipleNotifyListenerWrapper multipleNotifyListenerWrapper, Registry registry) {\n-            this.registry = registry;\n-            this.multipleNotifyListenerWrapper = multipleNotifyListenerWrapper;\n-        }\n-\n-        @Override\n-        public synchronized void notify(List<URL> urls) {\n-            this.urlList = urls;\n-            if (multipleNotifyListenerWrapper != null) {\n-                this.multipleNotifyListenerWrapper.notifySourceListener();\n-            }\n-        }\n-\n-        public void destroy() {\n-            this.multipleNotifyListenerWrapper = null;\n-            this.registry = null;\n-        }\n-\n-        public List<URL> getUrlList() {\n-            return urlList;\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.multiple;\r\n+\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.constants.CommonConstants;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.registry.NotifyListener;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.RegistryFactory;\r\n+import org.apache.dubbo.registry.support.AbstractRegistry;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.HashMap;\r\n+import java.util.HashSet;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+import static org.apache.dubbo.common.constants.RegistryConstants.EMPTY_PROTOCOL;\r\n+\r\n+/**\r\n+ * MultipleRegistry\r\n+ */\r\n+public class MultipleRegistry extends AbstractRegistry {\r\n+\r\n+    public static final String REGISTRY_FOR_SERVICE = \"service-registry\";\r\n+    public static final String REGISTRY_FOR_REFERENCE = \"reference-registry\";\r\n+\r\n+    protected RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();\r\n+    private final Map<String, Registry> serviceRegistries = new ConcurrentHashMap<>(4);\r\n+    private final Map<String, Registry> referenceRegistries = new ConcurrentHashMap<String, Registry>(4);\r\n+    private final Map<NotifyListener, MultipleNotifyListenerWrapper> multipleNotifyListenerMap = new ConcurrentHashMap<NotifyListener, MultipleNotifyListenerWrapper>(32);\r\n+    protected List<String> origServiceRegistryURLs;\r\n+    protected List<String> origReferenceRegistryURLs;\r\n+    protected List<String> effectServiceRegistryURLs;\r\n+    protected List<String> effectReferenceRegistryURLs;\r\n+    private URL registryUrl;\r\n+    private String applicationName;\r\n+\r\n+    public MultipleRegistry(URL url) {\r\n+        this(url, true, true);\r\n+\r\n+        boolean defaultRegistry = url.getParameter(CommonConstants.DEFAULT_KEY, true);\r\n+        if (defaultRegistry && effectServiceRegistryURLs.isEmpty() && effectReferenceRegistryURLs.isEmpty()) {\r\n+            throw new IllegalArgumentException(\"Illegal registry url. You need to configure parameter \" +\r\n+                    REGISTRY_FOR_SERVICE + \" or \" + REGISTRY_FOR_REFERENCE);\r\n+        }\r\n+    }\r\n+\r\n+    public MultipleRegistry(URL url, boolean initServiceRegistry, boolean initReferenceRegistry) {\r\n+        super(url);\r\n+        this.registryUrl = url;\r\n+        this.applicationName = url.getParameter(CommonConstants.APPLICATION_KEY);\r\n+        init();\r\n+        checkApplicationName(this.applicationName);\r\n+        // This urls contain parameter and it do not inherit from the parameter of url in MultipleRegistry\r\n+\r\n+        Map<String, Registry> registryMap = new HashMap<>();\r\n+        if (initServiceRegistry) {\r\n+            initServiceRegistry(url, registryMap);\r\n+        }\r\n+        if (initReferenceRegistry) {\r\n+            initReferenceRegistry(url, registryMap);\r\n+        }\r\n+    }\r\n+\r\n+    protected void initServiceRegistry(URL url, Map<String, Registry> registryMap) {\r\n+        origServiceRegistryURLs = url.getParameter(REGISTRY_FOR_SERVICE, new ArrayList<String>());\r\n+        effectServiceRegistryURLs = this.filterServiceRegistry(origServiceRegistryURLs);\r\n+        for (String tmpUrl : effectServiceRegistryURLs) {\r\n+            if (registryMap.get(tmpUrl) != null) {\r\n+                serviceRegistries.put(tmpUrl, registryMap.get(tmpUrl));\r\n+                continue;\r\n+            }\r\n+            Registry registry = registryFactory.getRegistry(URL.valueOf(tmpUrl));\r\n+            registryMap.put(tmpUrl, registry);\r\n+            serviceRegistries.put(tmpUrl, registry);\r\n+        }\r\n+    }\r\n+\r\n+    protected void initReferenceRegistry(URL url, Map<String, Registry> registryMap) {\r\n+        origReferenceRegistryURLs = url.getParameter(REGISTRY_FOR_REFERENCE, new ArrayList<String>());\r\n+        effectReferenceRegistryURLs = this.filterReferenceRegistry(origReferenceRegistryURLs);\r\n+        for (String tmpUrl : effectReferenceRegistryURLs) {\r\n+            if (registryMap.get(tmpUrl) != null) {\r\n+                referenceRegistries.put(tmpUrl, registryMap.get(tmpUrl));\r\n+                continue;\r\n+            }\r\n+            Registry registry = registryFactory.getRegistry(URL.valueOf(tmpUrl));\r\n+            registryMap.put(tmpUrl, registry);\r\n+            referenceRegistries.put(tmpUrl, registry);\r\n+        }\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return registryUrl;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isAvailable() {\r\n+        boolean available = serviceRegistries.isEmpty();\r\n+        for (Registry serviceRegistry : serviceRegistries.values()) {\r\n+            if (serviceRegistry.isAvailable()) {\r\n+                available = true;\r\n+            }\r\n+        }\r\n+        if (!available) {\r\n+            return false;\r\n+        }\r\n+\r\n+        available = referenceRegistries.isEmpty();\r\n+        for (Registry referenceRegistry : referenceRegistries.values()) {\r\n+            if (referenceRegistry.isAvailable()) {\r\n+                available = true;\r\n+            }\r\n+        }\r\n+        if (!available) {\r\n+            return false;\r\n+        }\r\n+        return true;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        Set<Registry> registries = new HashSet<Registry>(serviceRegistries.values());\r\n+        registries.addAll(referenceRegistries.values());\r\n+        for (Registry registry : registries) {\r\n+            registry.destroy();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void register(URL url) {\r\n+        super.register(url);\r\n+        for (Registry registry : serviceRegistries.values()) {\r\n+            registry.register(url);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unregister(URL url) {\r\n+        super.unregister(url);\r\n+        for (Registry registry : serviceRegistries.values()) {\r\n+            registry.unregister(url);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void subscribe(URL url, NotifyListener listener) {\r\n+        MultipleNotifyListenerWrapper multipleNotifyListenerWrapper = new MultipleNotifyListenerWrapper(listener);\r\n+        multipleNotifyListenerMap.put(listener, multipleNotifyListenerWrapper);\r\n+        for (Registry registry : referenceRegistries.values()) {\r\n+            SingleNotifyListener singleNotifyListener = new SingleNotifyListener(multipleNotifyListenerWrapper, registry);\r\n+            multipleNotifyListenerWrapper.putRegistryMap(registry.getUrl(), singleNotifyListener);\r\n+            registry.subscribe(url, singleNotifyListener);\r\n+        }\r\n+        super.subscribe(url, multipleNotifyListenerWrapper);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unsubscribe(URL url, NotifyListener listener) {\r\n+        MultipleNotifyListenerWrapper notifyListener = multipleNotifyListenerMap.remove(listener);\r\n+        for (Registry registry : referenceRegistries.values()) {\r\n+            SingleNotifyListener singleNotifyListener = notifyListener.registryMap.get(registry.getUrl());\r\n+            registry.unsubscribe(url, singleNotifyListener);\r\n+        }\r\n+\r\n+        if (notifyListener != null) {\r\n+            super.unsubscribe(url, notifyListener);\r\n+            notifyListener.destroy();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<URL> lookup(URL url) {\r\n+        List<URL> urls = new ArrayList<URL>();\r\n+        for (Registry registry : referenceRegistries.values()) {\r\n+            List<URL> tmpUrls = registry.lookup(url);\r\n+            if (!CollectionUtils.isEmpty(tmpUrls)) {\r\n+                urls.addAll(tmpUrls);\r\n+            }\r\n+        }\r\n+        return urls;\r\n+    }\r\n+\r\n+    protected void init() {\r\n+    }\r\n+\r\n+    protected List<String> filterServiceRegistry(List<String> serviceRegistryURLs) {\r\n+        return serviceRegistryURLs;\r\n+    }\r\n+\r\n+    protected List<String> filterReferenceRegistry(List<String> referenceRegistryURLs) {\r\n+        return referenceRegistryURLs;\r\n+    }\r\n+\r\n+\r\n+    protected void checkApplicationName(String applicationName) {\r\n+    }\r\n+\r\n+    protected String getApplicationName() {\r\n+        return applicationName;\r\n+    }\r\n+\r\n+    public Map<String, Registry> getServiceRegistries() {\r\n+        return serviceRegistries;\r\n+    }\r\n+\r\n+    public Map<String, Registry> getReferenceRegistries() {\r\n+        return referenceRegistries;\r\n+    }\r\n+\r\n+    public List<String> getOrigServiceRegistryURLs() {\r\n+        return origServiceRegistryURLs;\r\n+    }\r\n+\r\n+    public List<String> getOrigReferenceRegistryURLs() {\r\n+        return origReferenceRegistryURLs;\r\n+    }\r\n+\r\n+    public List<String> getEffectServiceRegistryURLs() {\r\n+        return effectServiceRegistryURLs;\r\n+    }\r\n+\r\n+    public List<String> getEffectReferenceRegistryURLs() {\r\n+        return effectReferenceRegistryURLs;\r\n+    }\r\n+\r\n+    static protected class MultipleNotifyListenerWrapper implements NotifyListener {\r\n+\r\n+        Map<URL, SingleNotifyListener> registryMap = new ConcurrentHashMap<URL, SingleNotifyListener>(4);\r\n+        NotifyListener sourceNotifyListener;\r\n+\r\n+        public MultipleNotifyListenerWrapper(NotifyListener sourceNotifyListener) {\r\n+            this.sourceNotifyListener = sourceNotifyListener;\r\n+        }\r\n+\r\n+        public void putRegistryMap(URL registryURL, SingleNotifyListener singleNotifyListener) {\r\n+            this.registryMap.put(registryURL, singleNotifyListener);\r\n+        }\r\n+\r\n+        public void destroy() {\r\n+            for (SingleNotifyListener singleNotifyListener : registryMap.values()) {\r\n+                if (singleNotifyListener != null) {\r\n+                    singleNotifyListener.destroy();\r\n+                }\r\n+            }\r\n+            registryMap.clear();\r\n+            sourceNotifyListener = null;\r\n+        }\r\n+\r\n+        public synchronized void notifySourceListener() {\r\n+            List<URL> notifyURLs = new ArrayList<URL>();\r\n+            URL emptyURL = null;\r\n+            for (SingleNotifyListener singleNotifyListener : registryMap.values()) {\r\n+                List<URL> tmpUrls = singleNotifyListener.getUrlList();\r\n+                if (CollectionUtils.isEmpty(tmpUrls)) {\r\n+                    continue;\r\n+                }\r\n+                // empty protocol\r\n+                if (tmpUrls.size() == 1\r\n+                        && tmpUrls.get(0) != null\r\n+                        && EMPTY_PROTOCOL.equals(tmpUrls.get(0).getProtocol())) {\r\n+                    // if only one empty\r\n+                    if (emptyURL == null) {\r\n+                        emptyURL = tmpUrls.get(0);\r\n+                    }\r\n+                    continue;\r\n+                }\r\n+                notifyURLs.addAll(tmpUrls);\r\n+            }\r\n+            // if no notify URL, add empty protocol URL\r\n+            if (emptyURL != null && notifyURLs.isEmpty()) {\r\n+                notifyURLs.add(emptyURL);\r\n+            }\r\n+            this.notify(notifyURLs);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void notify(List<URL> urls) {\r\n+            sourceNotifyListener.notify(urls);\r\n+        }\r\n+\r\n+        public Map<URL, SingleNotifyListener> getRegistryMap() {\r\n+            return registryMap;\r\n+        }\r\n+    }\r\n+\r\n+    static protected class SingleNotifyListener implements NotifyListener {\r\n+\r\n+        MultipleNotifyListenerWrapper multipleNotifyListenerWrapper;\r\n+        Registry registry;\r\n+        volatile List<URL> urlList;\r\n+\r\n+        public SingleNotifyListener(MultipleNotifyListenerWrapper multipleNotifyListenerWrapper, Registry registry) {\r\n+            this.registry = registry;\r\n+            this.multipleNotifyListenerWrapper = multipleNotifyListenerWrapper;\r\n+        }\r\n+\r\n+        @Override\r\n+        public synchronized void notify(List<URL> urls) {\r\n+            this.urlList = urls;\r\n+            if (multipleNotifyListenerWrapper != null) {\r\n+                this.multipleNotifyListenerWrapper.notifySourceListener();\r\n+            }\r\n+        }\r\n+\r\n+        public void destroy() {\r\n+            this.multipleNotifyListenerWrapper = null;\r\n+            this.registry = null;\r\n+        }\r\n+\r\n+        public List<URL> getUrlList() {\r\n+            return urlList;\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/multiple/MultipleRegistryFactory.java", "source2": "org/apache/dubbo/registry/multiple/MultipleRegistryFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.multiple;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.support.AbstractRegistryFactory;\n-\n-/**\n- * MultipleRegistryFactory\n- */\n-public class MultipleRegistryFactory extends AbstractRegistryFactory {\n-\n-    @Override\n-    protected Registry createRegistry(URL url) {\n-        return new MultipleRegistry(url);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.multiple;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.support.AbstractRegistryFactory;\r\n+\r\n+/**\r\n+ * MultipleRegistryFactory\r\n+ */\r\n+public class MultipleRegistryFactory extends AbstractRegistryFactory {\r\n+\r\n+    @Override\r\n+    protected Registry createRegistry(URL url) {\r\n+        return new MultipleRegistry(url);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/multiple/MultipleRegistryServiceDiscovery.java", "source2": "org/apache/dubbo/registry/multiple/MultipleRegistryServiceDiscovery.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,171 +1,171 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.multiple;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.constants.CommonConstants;\n-import org.apache.dubbo.common.utils.DefaultPage;\n-import org.apache.dubbo.common.utils.Page;\n-import org.apache.dubbo.event.ConditionalEventListener;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-import org.apache.dubbo.registry.client.ServiceDiscoveryFactory;\n-import org.apache.dubbo.registry.client.ServiceInstance;\n-import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\n-import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\n-\n-import java.util.ArrayList;\n-import java.util.HashSet;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-public class MultipleRegistryServiceDiscovery extends AbstractServiceDiscovery {\n-    public static final String REGISTRY_PREFIX_KEY = \"child.\";\n-    private final Map<String, ServiceDiscovery> serviceDiscoveries = new ConcurrentHashMap<>();\n-    private URL registryURL;\n-    private String applicationName;\n-\n-    @Override\n-    public void initialize(URL registryURL) throws Exception {\n-        this.registryURL = registryURL;\n-        this.applicationName = registryURL.getParameter(CommonConstants.APPLICATION_KEY);\n-\n-        Map<String, String> parameters = registryURL.getParameters();\n-        for (String key : parameters.keySet()) {\n-            if (key.startsWith(REGISTRY_PREFIX_KEY)) {\n-                URL url = URL.valueOf(registryURL.getParameter(key)).addParameter(CommonConstants.APPLICATION_KEY, applicationName)\n-                        .addParameter(\"registry-type\", \"service\");\n-                ServiceDiscovery serviceDiscovery = ServiceDiscoveryFactory.getExtension(url).getServiceDiscovery(url);\n-                serviceDiscovery.initialize(url);\n-                serviceDiscoveries.put(key, serviceDiscovery);\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return registryURL;\n-    }\n-\n-    @Override\n-    public void destroy() throws Exception {\n-        for (ServiceDiscovery serviceDiscovery : serviceDiscoveries.values()) {\n-            serviceDiscovery.destroy();\n-        }\n-    }\n-\n-    @Override\n-    public void doRegister(ServiceInstance serviceInstance) {\n-        serviceDiscoveries.values().forEach(serviceDiscovery -> serviceDiscovery.register(serviceInstance));\n-    }\n-\n-    @Override\n-    public void doUpdate(ServiceInstance serviceInstance) {\n-        serviceDiscoveries.values().forEach(serviceDiscovery -> serviceDiscovery.update(serviceInstance));\n-    }\n-\n-    @Override\n-    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\n-        serviceDiscoveries.values().forEach(serviceDiscovery -> serviceDiscovery.unregister(serviceInstance));\n-    }\n-\n-    @Override\n-    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws NullPointerException, IllegalArgumentException {\n-        MultiServiceInstancesChangedListener multiListener = new MultiServiceInstancesChangedListener(listener);\n-\n-        for (String registryKey : serviceDiscoveries.keySet()) {\n-            SingleServiceInstancesChangedListener singleListener = new SingleServiceInstancesChangedListener(listener.getServiceNames(), serviceDiscoveries.get(registryKey), multiListener);\n-            multiListener.putSingleListener(registryKey, singleListener);\n-            serviceDiscoveries.get(registryKey).addServiceInstancesChangedListener(singleListener);\n-        }\n-    }\n-\n-    @Override\n-    public Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize, boolean healthyOnly) throws NullPointerException, IllegalArgumentException, UnsupportedOperationException {\n-\n-        List<ServiceInstance> serviceInstanceList = new ArrayList<>();\n-        for (ServiceDiscovery serviceDiscovery : serviceDiscoveries.values()) {\n-            Page<ServiceInstance> serviceInstancePage = serviceDiscovery.getInstances(serviceName, offset, pageSize, healthyOnly);\n-            serviceInstanceList.addAll(serviceInstancePage.getData());\n-        }\n-\n-        return new DefaultPage<>(offset, pageSize, serviceInstanceList, serviceInstanceList.size());\n-    }\n-\n-    @Override\n-    public Set<String> getServices() {\n-        Set<String> services = new HashSet<>();\n-        for (ServiceDiscovery serviceDiscovery : serviceDiscoveries.values()) {\n-            services.addAll(serviceDiscovery.getServices());\n-        }\n-        return services;\n-    }\n-\n-    protected static class MultiServiceInstancesChangedListener implements ConditionalEventListener<ServiceInstancesChangedEvent> {\n-        private final ServiceInstancesChangedListener sourceListener;\n-        private final Map<String, SingleServiceInstancesChangedListener> singleListenerMap = new ConcurrentHashMap<>();\n-\n-        public MultiServiceInstancesChangedListener(ServiceInstancesChangedListener sourceListener) {\n-            this.sourceListener = sourceListener;\n-        }\n-\n-        @Override\n-        public boolean accept(ServiceInstancesChangedEvent event) {\n-            return sourceListener.getServiceNames().contains(event.getServiceName());\n-        }\n-\n-        @Override\n-        public void onEvent(ServiceInstancesChangedEvent event) {\n-            List<ServiceInstance> serviceInstances = new ArrayList<>();\n-            for (SingleServiceInstancesChangedListener singleListener : singleListenerMap.values()) {\n-                if (null != singleListener.event && null != singleListener.event.getServiceInstances()) {\n-                    for (ServiceInstance serviceInstance : singleListener.event.getServiceInstances()) {\n-                        if (!serviceInstances.contains(serviceInstance)) {\n-                            serviceInstances.add(serviceInstance);\n-                        }\n-                    }\n-                }\n-            }\n-\n-            sourceListener.onEvent(new ServiceInstancesChangedEvent(event.getServiceName(), serviceInstances));\n-        }\n-\n-        public void putSingleListener(String registryKey, SingleServiceInstancesChangedListener singleListener) {\n-            singleListenerMap.put(registryKey, singleListener);\n-        }\n-    }\n-\n-    protected static class SingleServiceInstancesChangedListener extends ServiceInstancesChangedListener {\n-        private final MultiServiceInstancesChangedListener multiListener;\n-        volatile ServiceInstancesChangedEvent event;\n-\n-        public SingleServiceInstancesChangedListener(Set<String> serviceNames, ServiceDiscovery serviceDiscovery, MultiServiceInstancesChangedListener multiListener) {\n-            super(serviceNames, serviceDiscovery);\n-            this.multiListener = multiListener;\n-        }\n-\n-        @Override\n-        public void onEvent(ServiceInstancesChangedEvent event) {\n-            this.event = event;\n-            if (multiListener != null) {\n-                multiListener.onEvent(event);\n-            }\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.multiple;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.constants.CommonConstants;\r\n+import org.apache.dubbo.common.utils.DefaultPage;\r\n+import org.apache.dubbo.common.utils.Page;\r\n+import org.apache.dubbo.event.ConditionalEventListener;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+import org.apache.dubbo.registry.client.ServiceDiscoveryFactory;\r\n+import org.apache.dubbo.registry.client.ServiceInstance;\r\n+import org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;\r\n+import org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.HashSet;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+public class MultipleRegistryServiceDiscovery extends AbstractServiceDiscovery {\r\n+    public static final String REGISTRY_PREFIX_KEY = \"child.\";\r\n+    private final Map<String, ServiceDiscovery> serviceDiscoveries = new ConcurrentHashMap<>();\r\n+    private URL registryURL;\r\n+    private String applicationName;\r\n+\r\n+    @Override\r\n+    public void initialize(URL registryURL) throws Exception {\r\n+        this.registryURL = registryURL;\r\n+        this.applicationName = registryURL.getParameter(CommonConstants.APPLICATION_KEY);\r\n+\r\n+        Map<String, String> parameters = registryURL.getParameters();\r\n+        for (String key : parameters.keySet()) {\r\n+            if (key.startsWith(REGISTRY_PREFIX_KEY)) {\r\n+                URL url = URL.valueOf(registryURL.getParameter(key)).addParameter(CommonConstants.APPLICATION_KEY, applicationName)\r\n+                        .addParameter(\"registry-type\", \"service\");\r\n+                ServiceDiscovery serviceDiscovery = ServiceDiscoveryFactory.getExtension(url).getServiceDiscovery(url);\r\n+                serviceDiscovery.initialize(url);\r\n+                serviceDiscoveries.put(key, serviceDiscovery);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return registryURL;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() throws Exception {\r\n+        for (ServiceDiscovery serviceDiscovery : serviceDiscoveries.values()) {\r\n+            serviceDiscovery.destroy();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doRegister(ServiceInstance serviceInstance) {\r\n+        serviceDiscoveries.values().forEach(serviceDiscovery -> serviceDiscovery.register(serviceInstance));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void doUpdate(ServiceInstance serviceInstance) {\r\n+        serviceDiscoveries.values().forEach(serviceDiscovery -> serviceDiscovery.update(serviceInstance));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unregister(ServiceInstance serviceInstance) throws RuntimeException {\r\n+        serviceDiscoveries.values().forEach(serviceDiscovery -> serviceDiscovery.unregister(serviceInstance));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addServiceInstancesChangedListener(ServiceInstancesChangedListener listener) throws NullPointerException, IllegalArgumentException {\r\n+        MultiServiceInstancesChangedListener multiListener = new MultiServiceInstancesChangedListener(listener);\r\n+\r\n+        for (String registryKey : serviceDiscoveries.keySet()) {\r\n+            SingleServiceInstancesChangedListener singleListener = new SingleServiceInstancesChangedListener(listener.getServiceNames(), serviceDiscoveries.get(registryKey), multiListener);\r\n+            multiListener.putSingleListener(registryKey, singleListener);\r\n+            serviceDiscoveries.get(registryKey).addServiceInstancesChangedListener(singleListener);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public Page<ServiceInstance> getInstances(String serviceName, int offset, int pageSize, boolean healthyOnly) throws NullPointerException, IllegalArgumentException, UnsupportedOperationException {\r\n+\r\n+        List<ServiceInstance> serviceInstanceList = new ArrayList<>();\r\n+        for (ServiceDiscovery serviceDiscovery : serviceDiscoveries.values()) {\r\n+            Page<ServiceInstance> serviceInstancePage = serviceDiscovery.getInstances(serviceName, offset, pageSize, healthyOnly);\r\n+            serviceInstanceList.addAll(serviceInstancePage.getData());\r\n+        }\r\n+\r\n+        return new DefaultPage<>(offset, pageSize, serviceInstanceList, serviceInstanceList.size());\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<String> getServices() {\r\n+        Set<String> services = new HashSet<>();\r\n+        for (ServiceDiscovery serviceDiscovery : serviceDiscoveries.values()) {\r\n+            services.addAll(serviceDiscovery.getServices());\r\n+        }\r\n+        return services;\r\n+    }\r\n+\r\n+    protected static class MultiServiceInstancesChangedListener implements ConditionalEventListener<ServiceInstancesChangedEvent> {\r\n+        private final ServiceInstancesChangedListener sourceListener;\r\n+        private final Map<String, SingleServiceInstancesChangedListener> singleListenerMap = new ConcurrentHashMap<>();\r\n+\r\n+        public MultiServiceInstancesChangedListener(ServiceInstancesChangedListener sourceListener) {\r\n+            this.sourceListener = sourceListener;\r\n+        }\r\n+\r\n+        @Override\r\n+        public boolean accept(ServiceInstancesChangedEvent event) {\r\n+            return sourceListener.getServiceNames().contains(event.getServiceName());\r\n+        }\r\n+\r\n+        @Override\r\n+        public void onEvent(ServiceInstancesChangedEvent event) {\r\n+            List<ServiceInstance> serviceInstances = new ArrayList<>();\r\n+            for (SingleServiceInstancesChangedListener singleListener : singleListenerMap.values()) {\r\n+                if (null != singleListener.event && null != singleListener.event.getServiceInstances()) {\r\n+                    for (ServiceInstance serviceInstance : singleListener.event.getServiceInstances()) {\r\n+                        if (!serviceInstances.contains(serviceInstance)) {\r\n+                            serviceInstances.add(serviceInstance);\r\n+                        }\r\n+                    }\r\n+                }\r\n+            }\r\n+\r\n+            sourceListener.onEvent(new ServiceInstancesChangedEvent(event.getServiceName(), serviceInstances));\r\n+        }\r\n+\r\n+        public void putSingleListener(String registryKey, SingleServiceInstancesChangedListener singleListener) {\r\n+            singleListenerMap.put(registryKey, singleListener);\r\n+        }\r\n+    }\r\n+\r\n+    protected static class SingleServiceInstancesChangedListener extends ServiceInstancesChangedListener {\r\n+        private final MultiServiceInstancesChangedListener multiListener;\r\n+        volatile ServiceInstancesChangedEvent event;\r\n+\r\n+        public SingleServiceInstancesChangedListener(Set<String> serviceNames, ServiceDiscovery serviceDiscovery, MultiServiceInstancesChangedListener multiListener) {\r\n+            super(serviceNames, serviceDiscovery);\r\n+            this.multiListener = multiListener;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void onEvent(ServiceInstancesChangedEvent event) {\r\n+            this.event = event;\r\n+            if (multiListener != null) {\r\n+                multiListener.onEvent(event);\r\n+            }\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/registry/multiple/MultipleRegistryServiceDiscoveryFactory.java", "source2": "org/apache/dubbo/registry/multiple/MultipleRegistryServiceDiscoveryFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,28 +1,28 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.registry.multiple;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\n-import org.apache.dubbo.registry.client.ServiceDiscovery;\n-\n-public class MultipleRegistryServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory  {\n-    @Override\n-    protected ServiceDiscovery createDiscovery(URL registryURL) {\n-        return new MultipleRegistryServiceDiscovery();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.registry.multiple;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.client.AbstractServiceDiscoveryFactory;\r\n+import org.apache.dubbo.registry.client.ServiceDiscovery;\r\n+\r\n+public class MultipleRegistryServiceDiscoveryFactory extends AbstractServiceDiscoveryFactory  {\r\n+    @Override\r\n+    protected ServiceDiscovery createDiscovery(URL registryURL) {\r\n+        return new MultipleRegistryServiceDiscovery();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/monitor/Constants.java", "source2": "org/apache/dubbo/monitor/Constants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,30 +1,30 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.monitor;\n-\n-public interface Constants {\n-    String DUBBO_PROVIDER = \"dubbo.provider\";\n-    String DUBBO_CONSUMER = \"dubbo.consumer\";\n-    String DUBBO_PROVIDER_METHOD = \"dubbo.provider.method\";\n-    String DUBBO_CONSUMER_METHOD = \"dubbo.consumer.method\";\n-    String SERVICE = \"service\";\n-    String METHOD = \"method\";\n-    String DUBBO_GROUP = \"dubbo\";\n-    String METRICS_KEY = \"metrics\";\n-    String LOGSTAT_PROTOCOL = \"logstat\";\n-    String COUNT_PROTOCOL = \"count\";\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.monitor;\r\n+\r\n+public interface Constants {\r\n+    String DUBBO_PROVIDER = \"dubbo.provider\";\r\n+    String DUBBO_CONSUMER = \"dubbo.consumer\";\r\n+    String DUBBO_PROVIDER_METHOD = \"dubbo.provider.method\";\r\n+    String DUBBO_CONSUMER_METHOD = \"dubbo.consumer.method\";\r\n+    String SERVICE = \"service\";\r\n+    String METHOD = \"method\";\r\n+    String DUBBO_GROUP = \"dubbo\";\r\n+    String METRICS_KEY = \"metrics\";\r\n+    String LOGSTAT_PROTOCOL = \"logstat\";\r\n+    String COUNT_PROTOCOL = \"count\";\r\n+}\r\n"}, {"source1": "org/apache/dubbo/monitor/MetricsService.java", "source2": "org/apache/dubbo/monitor/MetricsService.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,22 +1,22 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.monitor;\n-\n-public interface MetricsService {\n-    String getMetricsByGroup(String group);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.monitor;\r\n+\r\n+public interface MetricsService {\r\n+    String getMetricsByGroup(String group);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/monitor/support/MetricsServiceDetector.java", "source2": "org/apache/dubbo/monitor/support/MetricsServiceDetector.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,29 +1,29 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.monitor.support;\n-\n-import org.apache.dubbo.monitor.MetricsService;\n-import org.apache.dubbo.rpc.model.BuiltinServiceDetector;\n-\n-public class MetricsServiceDetector implements BuiltinServiceDetector {\n-\n-    @Override\n-    public Class<?> getService() {\n-        return MetricsService.class;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.monitor.support;\r\n+\r\n+import org.apache.dubbo.monitor.MetricsService;\r\n+import org.apache.dubbo.rpc.model.BuiltinServiceDetector;\r\n+\r\n+public class MetricsServiceDetector implements BuiltinServiceDetector {\r\n+\r\n+    @Override\r\n+    public Class<?> getService() {\r\n+        return MetricsService.class;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/monitor/support/MonitorServiceDetector.java", "source2": "org/apache/dubbo/monitor/support/MonitorServiceDetector.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,29 +1,29 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.monitor.support;\n-\n-import org.apache.dubbo.monitor.MonitorService;\n-import org.apache.dubbo.rpc.model.BuiltinServiceDetector;\n-\n-public class MonitorServiceDetector implements BuiltinServiceDetector {\n-\n-    @Override\n-    public Class<?> getService() {\n-        return MonitorService.class;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.monitor.support;\r\n+\r\n+import org.apache.dubbo.monitor.MonitorService;\r\n+import org.apache.dubbo.rpc.model.BuiltinServiceDetector;\r\n+\r\n+public class MonitorServiceDetector implements BuiltinServiceDetector {\r\n+\r\n+    @Override\r\n+    public Class<?> getService() {\r\n+        return MonitorService.class;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/monitor/dubbo/DubboMonitorFactory.java", "source2": "org/apache/dubbo/monitor/dubbo/DubboMonitorFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,71 +1,71 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.monitor.dubbo;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.URLBuilder;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.monitor.Monitor;\n-import org.apache.dubbo.monitor.MonitorService;\n-import org.apache.dubbo.monitor.support.AbstractMonitorFactory;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Protocol;\n-import org.apache.dubbo.rpc.ProxyFactory;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_PROTOCOL;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.REFERENCE_FILTER_KEY;\n-import static org.apache.dubbo.remoting.Constants.CHECK_KEY;\n-\n-/**\n- * DefaultMonitorFactory\n- */\n-public class DubboMonitorFactory extends AbstractMonitorFactory {\n-\n-    private Protocol protocol;\n-\n-    private ProxyFactory proxyFactory;\n-\n-    public void setProtocol(Protocol protocol) {\n-        this.protocol = protocol;\n-    }\n-\n-    public void setProxyFactory(ProxyFactory proxyFactory) {\n-        this.proxyFactory = proxyFactory;\n-    }\n-\n-    @Override\n-    protected Monitor createMonitor(URL url) {\n-        URLBuilder urlBuilder = URLBuilder.from(url);\n-        urlBuilder.setProtocol(url.getParameter(PROTOCOL_KEY, DUBBO_PROTOCOL));\n-        if (StringUtils.isEmpty(url.getPath())) {\n-            urlBuilder.setPath(MonitorService.class.getName());\n-        }\n-        String filter = url.getParameter(REFERENCE_FILTER_KEY);\n-        if (StringUtils.isEmpty(filter)) {\n-            filter = \"\";\n-        } else {\n-            filter = filter + \",\";\n-        }\n-        urlBuilder.addParameters(CHECK_KEY, String.valueOf(false),\n-                REFERENCE_FILTER_KEY, filter + \"-monitor\");\n-        Invoker<MonitorService> monitorInvoker = protocol.refer(MonitorService.class, urlBuilder.build());\n-        MonitorService monitorService = proxyFactory.getProxy(monitorInvoker);\n-        return new DubboMonitor(monitorInvoker, monitorService);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.monitor.dubbo;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.URLBuilder;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.monitor.Monitor;\r\n+import org.apache.dubbo.monitor.MonitorService;\r\n+import org.apache.dubbo.monitor.support.AbstractMonitorFactory;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Protocol;\r\n+import org.apache.dubbo.rpc.ProxyFactory;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_PROTOCOL;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROTOCOL_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REFERENCE_FILTER_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CHECK_KEY;\r\n+\r\n+/**\r\n+ * DefaultMonitorFactory\r\n+ */\r\n+public class DubboMonitorFactory extends AbstractMonitorFactory {\r\n+\r\n+    private Protocol protocol;\r\n+\r\n+    private ProxyFactory proxyFactory;\r\n+\r\n+    public void setProtocol(Protocol protocol) {\r\n+        this.protocol = protocol;\r\n+    }\r\n+\r\n+    public void setProxyFactory(ProxyFactory proxyFactory) {\r\n+        this.proxyFactory = proxyFactory;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Monitor createMonitor(URL url) {\r\n+        URLBuilder urlBuilder = URLBuilder.from(url);\r\n+        urlBuilder.setProtocol(url.getParameter(PROTOCOL_KEY, DUBBO_PROTOCOL));\r\n+        if (StringUtils.isEmpty(url.getPath())) {\r\n+            urlBuilder.setPath(MonitorService.class.getName());\r\n+        }\r\n+        String filter = url.getParameter(REFERENCE_FILTER_KEY);\r\n+        if (StringUtils.isEmpty(filter)) {\r\n+            filter = \"\";\r\n+        } else {\r\n+            filter = filter + \",\";\r\n+        }\r\n+        urlBuilder.addParameters(CHECK_KEY, String.valueOf(false),\r\n+                REFERENCE_FILTER_KEY, filter + \"-monitor\");\r\n+        Invoker<MonitorService> monitorInvoker = protocol.refer(MonitorService.class, urlBuilder.build());\r\n+        MonitorService monitorService = proxyFactory.getProxy(monitorInvoker);\r\n+        return new DubboMonitor(monitorInvoker, monitorService);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/monitor/dubbo/MetricsFilter.java", "source2": "org/apache/dubbo/monitor/dubbo/MetricsFilter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,261 +1,261 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.monitor.dubbo;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.store.DataStore;\n-import org.apache.dubbo.common.utils.NetUtils;\n-import org.apache.dubbo.monitor.MetricsService;\n-import org.apache.dubbo.rpc.AsyncRpcResult;\n-import org.apache.dubbo.rpc.Filter;\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Protocol;\n-import org.apache.dubbo.rpc.Result;\n-import org.apache.dubbo.rpc.RpcContext;\n-import org.apache.dubbo.rpc.RpcException;\n-import org.apache.dubbo.rpc.support.RpcUtils;\n-\n-import com.alibaba.fastjson.JSON;\n-import com.alibaba.metrics.FastCompass;\n-import com.alibaba.metrics.MetricLevel;\n-import com.alibaba.metrics.MetricManager;\n-import com.alibaba.metrics.MetricName;\n-import com.alibaba.metrics.MetricRegistry;\n-import com.alibaba.metrics.common.CollectLevel;\n-import com.alibaba.metrics.common.MetricObject;\n-import com.alibaba.metrics.common.MetricsCollector;\n-import com.alibaba.metrics.common.MetricsCollectorFactory;\n-\n-import java.util.ArrayList;\n-import java.util.Collections;\n-import java.util.HashMap;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.SortedMap;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.ThreadPoolExecutor;\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.atomic.AtomicBoolean;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_PROTOCOL;\n-import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_SERVICE_COMPONENT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.METRICS_PORT;\n-import static org.apache.dubbo.common.constants.CommonConstants.METRICS_PROTOCOL;\n-import static org.apache.dubbo.monitor.Constants.DUBBO_CONSUMER;\n-import static org.apache.dubbo.monitor.Constants.DUBBO_CONSUMER_METHOD;\n-import static org.apache.dubbo.monitor.Constants.DUBBO_GROUP;\n-import static org.apache.dubbo.monitor.Constants.DUBBO_PROVIDER;\n-import static org.apache.dubbo.monitor.Constants.DUBBO_PROVIDER_METHOD;\n-import static org.apache.dubbo.monitor.Constants.METHOD;\n-import static org.apache.dubbo.monitor.Constants.SERVICE;\n-\n-public class MetricsFilter implements Filter {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(MetricsFilter.class);\n-    private static volatile AtomicBoolean exported = new AtomicBoolean(false);\n-    private Integer port;\n-    private String protocolName;\n-\n-    @Override\n-    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {\n-        if (exported.compareAndSet(false, true)) {\n-            this.protocolName = invoker.getUrl().getParameter(METRICS_PROTOCOL) == null ?\n-                    DEFAULT_PROTOCOL : invoker.getUrl().getParameter(METRICS_PROTOCOL);\n-\n-            Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getExtension(protocolName);\n-\n-            this.port = invoker.getUrl().getParameter(METRICS_PORT) == null ?\n-                    protocol.getDefaultPort() : Integer.valueOf(invoker.getUrl().getParameter(METRICS_PORT));\n-\n-            Invoker<MetricsService> metricsInvoker = initMetricsInvoker();\n-\n-            try {\n-                protocol.export(metricsInvoker);\n-            } catch (RuntimeException e) {\n-                logger.error(\"Metrics Service need to be configured\" +\n-                        \" when multiple processes are running on a host\" + e.getMessage());\n-            }\n-        }\n-\n-        RpcContext context = RpcContext.getContext();\n-        boolean isProvider = context.isProviderSide();\n-        long start = System.currentTimeMillis();\n-        try {\n-            Result result = invoker.invoke(invocation); // proceed invocation chain\n-            long duration = System.currentTimeMillis() - start;\n-            reportMetrics(invoker, invocation, duration, \"success\", isProvider);\n-            return result;\n-        } catch (RpcException e) {\n-            long duration = System.currentTimeMillis() - start;\n-            String result = \"error\";\n-            if (e.isTimeout()) {\n-                result = \"timeoutError\";\n-            }\n-            if (e.isBiz()) {\n-                result = \"bisError\";\n-            }\n-            if (e.isNetwork()) {\n-                result = \"networkError\";\n-            }\n-            if (e.isSerialization()) {\n-                result = \"serializationError\";\n-            }\n-            reportMetrics(invoker, invocation, duration, result, isProvider);\n-            throw e;\n-        }\n-    }\n-\n-    private String buildMethodName(Invocation invocation) {\n-        String methodName = RpcUtils.getMethodName(invocation);\n-        StringBuilder method = new StringBuilder(methodName);\n-        Class<?>[] argTypes = RpcUtils.getParameterTypes(invocation);\n-\n-        method.append(\"(\");\n-\n-        for (int i = 0; i < argTypes.length; i++) {\n-            method.append((i == 0 ? \"\" : \", \") + argTypes[i].getSimpleName());\n-        }\n-        method.append(\")\");\n-        Class<?> returnType = RpcUtils.getReturnType(invocation);\n-        String typeName = null;\n-        if(returnType != null) {\n-            typeName = returnType.getTypeName();\n-            typeName = typeName.substring(typeName.lastIndexOf(\".\") + 1);\n-        }\n-\n-        return (typeName == null ? \"void\" : typeName) + \" \" + method;\n-    }\n-\n-    private void reportMetrics(Invoker<?> invoker, Invocation invocation, long duration, String result, boolean isProvider) {\n-        String serviceName = invoker.getInterface().getName();\n-        String methodName = buildMethodName(invocation);\n-        MetricName global;\n-        MetricName method;\n-        if (isProvider) {\n-            global = new MetricName(DUBBO_PROVIDER, MetricLevel.MAJOR);\n-            method = new MetricName(DUBBO_PROVIDER_METHOD, new HashMap<String, String>(4) {\n-                {\n-                    put(SERVICE, serviceName);\n-                    put(METHOD, methodName);\n-                }\n-            }, MetricLevel.NORMAL);\n-        } else {\n-            global = new MetricName(DUBBO_CONSUMER, MetricLevel.MAJOR);\n-            method = new MetricName(DUBBO_CONSUMER_METHOD, new HashMap<String, String>(4) {\n-                {\n-                    put(SERVICE, serviceName);\n-                    put(METHOD, methodName);\n-                }\n-            }, MetricLevel.NORMAL);\n-        }\n-        setCompassQuantity(DUBBO_GROUP, result, duration, global, method);\n-    }\n-\n-    private void setCompassQuantity(String groupName, String result, long duration, MetricName... metricNames) {\n-        for (MetricName metricName : metricNames) {\n-            FastCompass compass = MetricManager.getFastCompass(groupName, metricName);\n-            compass.record(duration, result);\n-        }\n-    }\n-\n-    private List<MetricObject> getThreadPoolMessage() {\n-        DataStore dataStore = ExtensionLoader.getExtensionLoader(DataStore.class).getDefaultExtension();\n-        Map<String, Object> executors = dataStore.get(EXECUTOR_SERVICE_COMPONENT_KEY);\n-\n-        List<MetricObject> threadPoolMtricList = new ArrayList<>();\n-        for (Map.Entry<String, Object> entry : executors.entrySet()) {\n-            String port = entry.getKey();\n-            ExecutorService executor = (ExecutorService) entry.getValue();\n-            if (executor instanceof ThreadPoolExecutor) {\n-                ThreadPoolExecutor tp = (ThreadPoolExecutor) executor;\n-\n-                threadPoolMtricList.add(value2MetricObject(\"threadPool.active\", tp.getActiveCount(), MetricLevel.MAJOR));\n-                threadPoolMtricList.add(value2MetricObject(\"threadPool.core\", tp.getCorePoolSize(), MetricLevel.MAJOR));\n-                threadPoolMtricList.add(value2MetricObject(\"threadPool.max\", tp.getMaximumPoolSize(), MetricLevel.MAJOR));\n-                threadPoolMtricList.add(value2MetricObject(\"threadPool.current\", tp.getPoolSize(), MetricLevel.MAJOR));\n-            }\n-        }\n-\n-        return threadPoolMtricList;\n-    }\n-\n-    private MetricObject value2MetricObject(String metric, Integer value, MetricLevel level) {\n-        if (metric == null || value == null || level == null) {\n-            return null;\n-        }\n-\n-        return new MetricObject\n-                .Builder(metric)\n-                .withValue(value)\n-                .withLevel(level)\n-                .build();\n-    }\n-\n-    private Invoker<MetricsService> initMetricsInvoker() {\n-        Invoker<MetricsService> metricsInvoker = new Invoker<MetricsService>() {\n-            @Override\n-            public Class<MetricsService> getInterface() {\n-                return MetricsService.class;\n-            }\n-\n-            @Override\n-            public Result invoke(Invocation invocation) throws RpcException {\n-                String group = invocation.getArguments()[0].toString();\n-                MetricRegistry registry = MetricManager.getIMetricManager().getMetricRegistryByGroup(group);\n-\n-                SortedMap<MetricName, FastCompass> fastCompasses = registry.getFastCompasses();\n-\n-                long timestamp = System.currentTimeMillis();\n-                double rateFactor = TimeUnit.SECONDS.toSeconds(1);\n-                double durationFactor = 1.0 / TimeUnit.MILLISECONDS.toNanos(1);\n-\n-\n-                MetricsCollector collector = MetricsCollectorFactory.createNew(\n-                        CollectLevel.NORMAL, Collections.EMPTY_MAP, rateFactor, durationFactor, null);\n-\n-                for (Map.Entry<MetricName, FastCompass> entry : fastCompasses.entrySet()) {\n-                    collector.collect(entry.getKey(), entry.getValue(), timestamp);\n-                }\n-\n-                List res = collector.build();\n-                res.addAll(getThreadPoolMessage());\n-                return AsyncRpcResult.newDefaultAsyncResult(JSON.toJSONString(res), invocation);\n-            }\n-\n-            @Override\n-            public URL getUrl() {\n-                return URL.valueOf(protocolName + \"://\" + NetUtils.getIpByConfig() + \":\" + port + \"/\" + MetricsService.class.getName());\n-            }\n-\n-            @Override\n-            public boolean isAvailable() {\n-                return false;\n-            }\n-\n-            @Override\n-            public void destroy() {\n-\n-            }\n-        };\n-\n-        return metricsInvoker;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.monitor.dubbo;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.store.DataStore;\r\n+import org.apache.dubbo.common.utils.NetUtils;\r\n+import org.apache.dubbo.monitor.MetricsService;\r\n+import org.apache.dubbo.rpc.AsyncRpcResult;\r\n+import org.apache.dubbo.rpc.Filter;\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Protocol;\r\n+import org.apache.dubbo.rpc.Result;\r\n+import org.apache.dubbo.rpc.RpcContext;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+import org.apache.dubbo.rpc.support.RpcUtils;\r\n+\r\n+import com.alibaba.fastjson.JSON;\r\n+import com.alibaba.metrics.FastCompass;\r\n+import com.alibaba.metrics.MetricLevel;\r\n+import com.alibaba.metrics.MetricManager;\r\n+import com.alibaba.metrics.MetricName;\r\n+import com.alibaba.metrics.MetricRegistry;\r\n+import com.alibaba.metrics.common.CollectLevel;\r\n+import com.alibaba.metrics.common.MetricObject;\r\n+import com.alibaba.metrics.common.MetricsCollector;\r\n+import com.alibaba.metrics.common.MetricsCollectorFactory;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Collections;\r\n+import java.util.HashMap;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.SortedMap;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.ThreadPoolExecutor;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_PROTOCOL;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_SERVICE_COMPONENT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.METRICS_PORT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.METRICS_PROTOCOL;\r\n+import static org.apache.dubbo.monitor.Constants.DUBBO_CONSUMER;\r\n+import static org.apache.dubbo.monitor.Constants.DUBBO_CONSUMER_METHOD;\r\n+import static org.apache.dubbo.monitor.Constants.DUBBO_GROUP;\r\n+import static org.apache.dubbo.monitor.Constants.DUBBO_PROVIDER;\r\n+import static org.apache.dubbo.monitor.Constants.DUBBO_PROVIDER_METHOD;\r\n+import static org.apache.dubbo.monitor.Constants.METHOD;\r\n+import static org.apache.dubbo.monitor.Constants.SERVICE;\r\n+\r\n+public class MetricsFilter implements Filter {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(MetricsFilter.class);\r\n+    private static volatile AtomicBoolean exported = new AtomicBoolean(false);\r\n+    private Integer port;\r\n+    private String protocolName;\r\n+\r\n+    @Override\r\n+    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {\r\n+        if (exported.compareAndSet(false, true)) {\r\n+            this.protocolName = invoker.getUrl().getParameter(METRICS_PROTOCOL) == null ?\r\n+                    DEFAULT_PROTOCOL : invoker.getUrl().getParameter(METRICS_PROTOCOL);\r\n+\r\n+            Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getExtension(protocolName);\r\n+\r\n+            this.port = invoker.getUrl().getParameter(METRICS_PORT) == null ?\r\n+                    protocol.getDefaultPort() : Integer.valueOf(invoker.getUrl().getParameter(METRICS_PORT));\r\n+\r\n+            Invoker<MetricsService> metricsInvoker = initMetricsInvoker();\r\n+\r\n+            try {\r\n+                protocol.export(metricsInvoker);\r\n+            } catch (RuntimeException e) {\r\n+                logger.error(\"Metrics Service need to be configured\" +\r\n+                        \" when multiple processes are running on a host\" + e.getMessage());\r\n+            }\r\n+        }\r\n+\r\n+        RpcContext context = RpcContext.getContext();\r\n+        boolean isProvider = context.isProviderSide();\r\n+        long start = System.currentTimeMillis();\r\n+        try {\r\n+            Result result = invoker.invoke(invocation); // proceed invocation chain\r\n+            long duration = System.currentTimeMillis() - start;\r\n+            reportMetrics(invoker, invocation, duration, \"success\", isProvider);\r\n+            return result;\r\n+        } catch (RpcException e) {\r\n+            long duration = System.currentTimeMillis() - start;\r\n+            String result = \"error\";\r\n+            if (e.isTimeout()) {\r\n+                result = \"timeoutError\";\r\n+            }\r\n+            if (e.isBiz()) {\r\n+                result = \"bisError\";\r\n+            }\r\n+            if (e.isNetwork()) {\r\n+                result = \"networkError\";\r\n+            }\r\n+            if (e.isSerialization()) {\r\n+                result = \"serializationError\";\r\n+            }\r\n+            reportMetrics(invoker, invocation, duration, result, isProvider);\r\n+            throw e;\r\n+        }\r\n+    }\r\n+\r\n+    private String buildMethodName(Invocation invocation) {\r\n+        String methodName = RpcUtils.getMethodName(invocation);\r\n+        StringBuilder method = new StringBuilder(methodName);\r\n+        Class<?>[] argTypes = RpcUtils.getParameterTypes(invocation);\r\n+\r\n+        method.append(\"(\");\r\n+\r\n+        for (int i = 0; i < argTypes.length; i++) {\r\n+            method.append((i == 0 ? \"\" : \", \") + argTypes[i].getSimpleName());\r\n+        }\r\n+        method.append(\")\");\r\n+        Class<?> returnType = RpcUtils.getReturnType(invocation);\r\n+        String typeName = null;\r\n+        if(returnType != null) {\r\n+            typeName = returnType.getTypeName();\r\n+            typeName = typeName.substring(typeName.lastIndexOf(\".\") + 1);\r\n+        }\r\n+\r\n+        return (typeName == null ? \"void\" : typeName) + \" \" + method;\r\n+    }\r\n+\r\n+    private void reportMetrics(Invoker<?> invoker, Invocation invocation, long duration, String result, boolean isProvider) {\r\n+        String serviceName = invoker.getInterface().getName();\r\n+        String methodName = buildMethodName(invocation);\r\n+        MetricName global;\r\n+        MetricName method;\r\n+        if (isProvider) {\r\n+            global = new MetricName(DUBBO_PROVIDER, MetricLevel.MAJOR);\r\n+            method = new MetricName(DUBBO_PROVIDER_METHOD, new HashMap<String, String>(4) {\r\n+                {\r\n+                    put(SERVICE, serviceName);\r\n+                    put(METHOD, methodName);\r\n+                }\r\n+            }, MetricLevel.NORMAL);\r\n+        } else {\r\n+            global = new MetricName(DUBBO_CONSUMER, MetricLevel.MAJOR);\r\n+            method = new MetricName(DUBBO_CONSUMER_METHOD, new HashMap<String, String>(4) {\r\n+                {\r\n+                    put(SERVICE, serviceName);\r\n+                    put(METHOD, methodName);\r\n+                }\r\n+            }, MetricLevel.NORMAL);\r\n+        }\r\n+        setCompassQuantity(DUBBO_GROUP, result, duration, global, method);\r\n+    }\r\n+\r\n+    private void setCompassQuantity(String groupName, String result, long duration, MetricName... metricNames) {\r\n+        for (MetricName metricName : metricNames) {\r\n+            FastCompass compass = MetricManager.getFastCompass(groupName, metricName);\r\n+            compass.record(duration, result);\r\n+        }\r\n+    }\r\n+\r\n+    private List<MetricObject> getThreadPoolMessage() {\r\n+        DataStore dataStore = ExtensionLoader.getExtensionLoader(DataStore.class).getDefaultExtension();\r\n+        Map<String, Object> executors = dataStore.get(EXECUTOR_SERVICE_COMPONENT_KEY);\r\n+\r\n+        List<MetricObject> threadPoolMtricList = new ArrayList<>();\r\n+        for (Map.Entry<String, Object> entry : executors.entrySet()) {\r\n+            String port = entry.getKey();\r\n+            ExecutorService executor = (ExecutorService) entry.getValue();\r\n+            if (executor instanceof ThreadPoolExecutor) {\r\n+                ThreadPoolExecutor tp = (ThreadPoolExecutor) executor;\r\n+\r\n+                threadPoolMtricList.add(value2MetricObject(\"threadPool.active\", tp.getActiveCount(), MetricLevel.MAJOR));\r\n+                threadPoolMtricList.add(value2MetricObject(\"threadPool.core\", tp.getCorePoolSize(), MetricLevel.MAJOR));\r\n+                threadPoolMtricList.add(value2MetricObject(\"threadPool.max\", tp.getMaximumPoolSize(), MetricLevel.MAJOR));\r\n+                threadPoolMtricList.add(value2MetricObject(\"threadPool.current\", tp.getPoolSize(), MetricLevel.MAJOR));\r\n+            }\r\n+        }\r\n+\r\n+        return threadPoolMtricList;\r\n+    }\r\n+\r\n+    private MetricObject value2MetricObject(String metric, Integer value, MetricLevel level) {\r\n+        if (metric == null || value == null || level == null) {\r\n+            return null;\r\n+        }\r\n+\r\n+        return new MetricObject\r\n+                .Builder(metric)\r\n+                .withValue(value)\r\n+                .withLevel(level)\r\n+                .build();\r\n+    }\r\n+\r\n+    private Invoker<MetricsService> initMetricsInvoker() {\r\n+        Invoker<MetricsService> metricsInvoker = new Invoker<MetricsService>() {\r\n+            @Override\r\n+            public Class<MetricsService> getInterface() {\r\n+                return MetricsService.class;\r\n+            }\r\n+\r\n+            @Override\r\n+            public Result invoke(Invocation invocation) throws RpcException {\r\n+                String group = invocation.getArguments()[0].toString();\r\n+                MetricRegistry registry = MetricManager.getIMetricManager().getMetricRegistryByGroup(group);\r\n+\r\n+                SortedMap<MetricName, FastCompass> fastCompasses = registry.getFastCompasses();\r\n+\r\n+                long timestamp = System.currentTimeMillis();\r\n+                double rateFactor = TimeUnit.SECONDS.toSeconds(1);\r\n+                double durationFactor = 1.0 / TimeUnit.MILLISECONDS.toNanos(1);\r\n+\r\n+\r\n+                MetricsCollector collector = MetricsCollectorFactory.createNew(\r\n+                        CollectLevel.NORMAL, Collections.EMPTY_MAP, rateFactor, durationFactor, null);\r\n+\r\n+                for (Map.Entry<MetricName, FastCompass> entry : fastCompasses.entrySet()) {\r\n+                    collector.collect(entry.getKey(), entry.getValue(), timestamp);\r\n+                }\r\n+\r\n+                List res = collector.build();\r\n+                res.addAll(getThreadPoolMessage());\r\n+                return AsyncRpcResult.newDefaultAsyncResult(JSON.toJSONString(res), invocation);\r\n+            }\r\n+\r\n+            @Override\r\n+            public URL getUrl() {\r\n+                return URL.valueOf(protocolName + \"://\" + NetUtils.getIpByConfig() + \":\" + port + \"/\" + MetricsService.class.getName());\r\n+            }\r\n+\r\n+            @Override\r\n+            public boolean isAvailable() {\r\n+                return false;\r\n+            }\r\n+\r\n+            @Override\r\n+            public void destroy() {\r\n+\r\n+            }\r\n+        };\r\n+\r\n+        return metricsInvoker;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/command/impl/Ls.java", "source2": "org/apache/dubbo/qos/command/impl/Ls.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,88 +1,88 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.command.impl;\n-\n-import org.apache.dubbo.qos.command.BaseCommand;\n-import org.apache.dubbo.qos.command.CommandContext;\n-import org.apache.dubbo.qos.command.annotation.Cmd;\n-import org.apache.dubbo.qos.command.util.ServiceCheckUtils;\n-import org.apache.dubbo.qos.textui.TTable;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.ConsumerModel;\n-import org.apache.dubbo.rpc.model.ProviderModel;\n-\n-import java.util.Collection;\n-\n-@Cmd(name = \"ls\", summary = \"ls service\", example = {\n-        \"ls\"\n-})\n-public class Ls implements BaseCommand {\n-    @Override\n-    public String execute(CommandContext commandContext, String[] args) {\n-        StringBuilder result = new StringBuilder();\n-        result.append(listProvider());\n-        result.append(listConsumer());\n-\n-        return result.toString();\n-    }\n-\n-    public String listProvider() {\n-        StringBuilder stringBuilder = new StringBuilder();\n-        stringBuilder.append(\"As Provider side:\" + System.lineSeparator());\n-        Collection<ProviderModel> providerModelList = ApplicationModel.allProviderModels();\n-\n-        TTable tTable = new TTable(new TTable.ColumnDefine[]{\n-                new TTable.ColumnDefine(TTable.Align.MIDDLE),\n-                new TTable.ColumnDefine(TTable.Align.MIDDLE)\n-        });\n-\n-        //Header\n-        tTable.addRow(\"Provider Service Name\", \"PUB\");\n-\n-        //Content\n-        for (ProviderModel providerModel : providerModelList) {\n-            tTable.addRow(providerModel.getServiceKey(), ServiceCheckUtils.isRegistered(providerModel) ? \"Y\" : \"N\");\n-        }\n-        stringBuilder.append(tTable.rendering());\n-\n-        return stringBuilder.toString();\n-    }\n-\n-    public String listConsumer() {\n-        StringBuilder stringBuilder = new StringBuilder();\n-        stringBuilder.append(\"As Consumer side:\" + System.lineSeparator());\n-        Collection<ConsumerModel> consumerModelList = ApplicationModel.allConsumerModels();\n-\n-        TTable tTable = new TTable(new TTable.ColumnDefine[]{\n-                new TTable.ColumnDefine(TTable.Align.MIDDLE),\n-                new TTable.ColumnDefine(TTable.Align.MIDDLE)\n-        });\n-\n-        //Header\n-        tTable.addRow(\"Consumer Service Name\", \"NUM\");\n-\n-        //Content\n-        //TODO to calculate consumerAddressNum\n-        for (ConsumerModel consumerModel : consumerModelList) {\n-            tTable.addRow(consumerModel.getServiceKey(), ServiceCheckUtils.getConsumerAddressNum(consumerModel));\n-        }\n-\n-        stringBuilder.append(tTable.rendering());\n-\n-        return stringBuilder.toString();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.command.impl;\r\n+\r\n+import org.apache.dubbo.qos.command.BaseCommand;\r\n+import org.apache.dubbo.qos.command.CommandContext;\r\n+import org.apache.dubbo.qos.command.annotation.Cmd;\r\n+import org.apache.dubbo.qos.command.util.ServiceCheckUtils;\r\n+import org.apache.dubbo.qos.textui.TTable;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.ConsumerModel;\r\n+import org.apache.dubbo.rpc.model.ProviderModel;\r\n+\r\n+import java.util.Collection;\r\n+\r\n+@Cmd(name = \"ls\", summary = \"ls service\", example = {\r\n+        \"ls\"\r\n+})\r\n+public class Ls implements BaseCommand {\r\n+    @Override\r\n+    public String execute(CommandContext commandContext, String[] args) {\r\n+        StringBuilder result = new StringBuilder();\r\n+        result.append(listProvider());\r\n+        result.append(listConsumer());\r\n+\r\n+        return result.toString();\r\n+    }\r\n+\r\n+    public String listProvider() {\r\n+        StringBuilder stringBuilder = new StringBuilder();\r\n+        stringBuilder.append(\"As Provider side:\" + System.lineSeparator());\r\n+        Collection<ProviderModel> providerModelList = ApplicationModel.allProviderModels();\r\n+\r\n+        TTable tTable = new TTable(new TTable.ColumnDefine[]{\r\n+                new TTable.ColumnDefine(TTable.Align.MIDDLE),\r\n+                new TTable.ColumnDefine(TTable.Align.MIDDLE)\r\n+        });\r\n+\r\n+        //Header\r\n+        tTable.addRow(\"Provider Service Name\", \"PUB\");\r\n+\r\n+        //Content\r\n+        for (ProviderModel providerModel : providerModelList) {\r\n+            tTable.addRow(providerModel.getServiceKey(), ServiceCheckUtils.isRegistered(providerModel) ? \"Y\" : \"N\");\r\n+        }\r\n+        stringBuilder.append(tTable.rendering());\r\n+\r\n+        return stringBuilder.toString();\r\n+    }\r\n+\r\n+    public String listConsumer() {\r\n+        StringBuilder stringBuilder = new StringBuilder();\r\n+        stringBuilder.append(\"As Consumer side:\" + System.lineSeparator());\r\n+        Collection<ConsumerModel> consumerModelList = ApplicationModel.allConsumerModels();\r\n+\r\n+        TTable tTable = new TTable(new TTable.ColumnDefine[]{\r\n+                new TTable.ColumnDefine(TTable.Align.MIDDLE),\r\n+                new TTable.ColumnDefine(TTable.Align.MIDDLE)\r\n+        });\r\n+\r\n+        //Header\r\n+        tTable.addRow(\"Consumer Service Name\", \"NUM\");\r\n+\r\n+        //Content\r\n+        //TODO to calculate consumerAddressNum\r\n+        for (ConsumerModel consumerModel : consumerModelList) {\r\n+            tTable.addRow(consumerModel.getServiceKey(), ServiceCheckUtils.getConsumerAddressNum(consumerModel));\r\n+        }\r\n+\r\n+        stringBuilder.append(tTable.rendering());\r\n+\r\n+        return stringBuilder.toString();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/command/impl/Offline.java", "source2": "org/apache/dubbo/qos/command/impl/Offline.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,80 +1,80 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.command.impl;\n-\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.qos.command.BaseCommand;\n-import org.apache.dubbo.qos.command.CommandContext;\n-import org.apache.dubbo.qos.command.annotation.Cmd;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.RegistryFactory;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.ProviderModel;\n-import org.apache.dubbo.rpc.model.ServiceRepository;\n-\n-import java.util.Collection;\n-import java.util.List;\n-\n-@Cmd(name = \"offline\", summary = \"offline dubbo\", example = {\n-        \"offline dubbo\",\n-        \"offline xx.xx.xxx.service\"\n-})\n-public class Offline implements BaseCommand {\n-    private Logger logger = LoggerFactory.getLogger(Offline.class);\n-    private static RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();\n-    private static ServiceRepository serviceRepository = ApplicationModel.getServiceRepository();\n-\n-    @Override\n-    public String execute(CommandContext commandContext, String[] args) {\n-        logger.info(\"receive offline command\");\n-        String servicePattern = \".*\";\n-        if (args != null && args.length > 0) {\n-            servicePattern = args[0];\n-        }\n-\n-        boolean hasService = offline(servicePattern);\n-\n-        if (hasService) {\n-            return \"OK\";\n-        } else {\n-            return \"service not found\";\n-        }\n-    }\n-\n-    public static boolean offline(String servicePattern) {\n-        boolean hasService = false;\n-\n-        Collection<ProviderModel> providerModelList = serviceRepository.getExportedServices();\n-        for (ProviderModel providerModel : providerModelList) {\n-            if (providerModel.getServiceMetadata().getDisplayServiceKey().matches(servicePattern)) {\n-                hasService = true;\n-                List<ProviderModel.RegisterStatedURL> statedUrls = providerModel.getStatedUrl();\n-                for (ProviderModel.RegisterStatedURL statedURL : statedUrls) {\n-                    if (statedURL.isRegistered()) {\n-                        Registry registry = registryFactory.getRegistry(statedURL.getRegistryUrl());\n-                        registry.unregister(statedURL.getProviderUrl());\n-                        statedURL.setRegistered(false);\n-                    }\n-                }\n-            }\n-        }\n-\n-        return hasService;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.command.impl;\r\n+\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.qos.command.BaseCommand;\r\n+import org.apache.dubbo.qos.command.CommandContext;\r\n+import org.apache.dubbo.qos.command.annotation.Cmd;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.RegistryFactory;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.ProviderModel;\r\n+import org.apache.dubbo.rpc.model.ServiceRepository;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.List;\r\n+\r\n+@Cmd(name = \"offline\", summary = \"offline dubbo\", example = {\r\n+        \"offline dubbo\",\r\n+        \"offline xx.xx.xxx.service\"\r\n+})\r\n+public class Offline implements BaseCommand {\r\n+    private Logger logger = LoggerFactory.getLogger(Offline.class);\r\n+    private static RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();\r\n+    private static ServiceRepository serviceRepository = ApplicationModel.getServiceRepository();\r\n+\r\n+    @Override\r\n+    public String execute(CommandContext commandContext, String[] args) {\r\n+        logger.info(\"receive offline command\");\r\n+        String servicePattern = \".*\";\r\n+        if (args != null && args.length > 0) {\r\n+            servicePattern = args[0];\r\n+        }\r\n+\r\n+        boolean hasService = offline(servicePattern);\r\n+\r\n+        if (hasService) {\r\n+            return \"OK\";\r\n+        } else {\r\n+            return \"service not found\";\r\n+        }\r\n+    }\r\n+\r\n+    public static boolean offline(String servicePattern) {\r\n+        boolean hasService = false;\r\n+\r\n+        Collection<ProviderModel> providerModelList = serviceRepository.getExportedServices();\r\n+        for (ProviderModel providerModel : providerModelList) {\r\n+            if (providerModel.getServiceMetadata().getDisplayServiceKey().matches(servicePattern)) {\r\n+                hasService = true;\r\n+                List<ProviderModel.RegisterStatedURL> statedUrls = providerModel.getStatedUrl();\r\n+                for (ProviderModel.RegisterStatedURL statedURL : statedUrls) {\r\n+                    if (statedURL.isRegistered()) {\r\n+                        Registry registry = registryFactory.getRegistry(statedURL.getRegistryUrl());\r\n+                        registry.unregister(statedURL.getProviderUrl());\r\n+                        statedURL.setRegistered(false);\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        return hasService;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/command/impl/Online.java", "source2": "org/apache/dubbo/qos/command/impl/Online.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,80 +1,80 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.command.impl;\n-\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ArrayUtils;\n-import org.apache.dubbo.qos.command.BaseCommand;\n-import org.apache.dubbo.qos.command.CommandContext;\n-import org.apache.dubbo.qos.command.annotation.Cmd;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.RegistryFactory;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.ProviderModel;\n-import org.apache.dubbo.rpc.model.ServiceRepository;\n-\n-import java.util.Collection;\n-import java.util.List;\n-\n-@Cmd(name = \"online\", summary = \"online dubbo\", example = {\n-        \"online dubbo\",\n-        \"online xx.xx.xxx.service\"\n-})\n-public class Online implements BaseCommand {\n-    private static final Logger logger = LoggerFactory.getLogger(Online.class);\n-    private static RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();\n-    private static ServiceRepository serviceRepository = ApplicationModel.getServiceRepository();\n-\n-    @Override\n-    public String execute(CommandContext commandContext, String[] args) {\n-        logger.info(\"receive online command\");\n-        String servicePattern = \".*\";\n-        if (ArrayUtils.isNotEmpty(args)) {\n-            servicePattern = \"\" + args[0];\n-        }\n-\n-        boolean hasService = online(servicePattern);\n-        if (hasService) {\n-            return \"OK\";\n-        } else {\n-            return \"service not found\";\n-        }\n-    }\n-\n-    public static boolean online(String servicePattern) {\n-        boolean hasService = false;\n-\n-        Collection<ProviderModel> providerModelList = serviceRepository.getExportedServices();\n-        for (ProviderModel providerModel : providerModelList) {\n-            if (providerModel.getServiceMetadata().getDisplayServiceKey().matches(servicePattern)) {\n-                hasService = true;\n-                List<ProviderModel.RegisterStatedURL> statedUrls = providerModel.getStatedUrl();\n-                for (ProviderModel.RegisterStatedURL statedURL : statedUrls) {\n-                    if (!statedURL.isRegistered()) {\n-                        Registry registry = registryFactory.getRegistry(statedURL.getRegistryUrl());\n-                        registry.register(statedURL.getProviderUrl());\n-                        statedURL.setRegistered(true);\n-                    }\n-                }\n-            }\n-        }\n-\n-        return hasService;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.command.impl;\r\n+\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ArrayUtils;\r\n+import org.apache.dubbo.qos.command.BaseCommand;\r\n+import org.apache.dubbo.qos.command.CommandContext;\r\n+import org.apache.dubbo.qos.command.annotation.Cmd;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.RegistryFactory;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.ProviderModel;\r\n+import org.apache.dubbo.rpc.model.ServiceRepository;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.List;\r\n+\r\n+@Cmd(name = \"online\", summary = \"online dubbo\", example = {\r\n+        \"online dubbo\",\r\n+        \"online xx.xx.xxx.service\"\r\n+})\r\n+public class Online implements BaseCommand {\r\n+    private static final Logger logger = LoggerFactory.getLogger(Online.class);\r\n+    private static RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();\r\n+    private static ServiceRepository serviceRepository = ApplicationModel.getServiceRepository();\r\n+\r\n+    @Override\r\n+    public String execute(CommandContext commandContext, String[] args) {\r\n+        logger.info(\"receive online command\");\r\n+        String servicePattern = \".*\";\r\n+        if (ArrayUtils.isNotEmpty(args)) {\r\n+            servicePattern = \"\" + args[0];\r\n+        }\r\n+\r\n+        boolean hasService = online(servicePattern);\r\n+        if (hasService) {\r\n+            return \"OK\";\r\n+        } else {\r\n+            return \"service not found\";\r\n+        }\r\n+    }\r\n+\r\n+    public static boolean online(String servicePattern) {\r\n+        boolean hasService = false;\r\n+\r\n+        Collection<ProviderModel> providerModelList = serviceRepository.getExportedServices();\r\n+        for (ProviderModel providerModel : providerModelList) {\r\n+            if (providerModel.getServiceMetadata().getDisplayServiceKey().matches(servicePattern)) {\r\n+                hasService = true;\r\n+                List<ProviderModel.RegisterStatedURL> statedUrls = providerModel.getStatedUrl();\r\n+                for (ProviderModel.RegisterStatedURL statedURL : statedUrls) {\r\n+                    if (!statedURL.isRegistered()) {\r\n+                        Registry registry = registryFactory.getRegistry(statedURL.getRegistryUrl());\r\n+                        registry.register(statedURL.getProviderUrl());\r\n+                        statedURL.setRegistered(true);\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        return hasService;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/command/impl/PublishMetadata.java", "source2": "org/apache/dubbo/qos/command/impl/PublishMetadata.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,63 +1,63 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.command.impl;\n-\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.threadpool.manager.ExecutorRepository;\n-import org.apache.dubbo.common.utils.ArrayUtils;\n-import org.apache.dubbo.qos.command.BaseCommand;\n-import org.apache.dubbo.qos.command.CommandContext;\n-import org.apache.dubbo.qos.command.annotation.Cmd;\n-import org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils;\n-\n-import java.util.concurrent.ScheduledFuture;\n-import java.util.concurrent.TimeUnit;\n-\n-@Cmd(name = \"publishMetadata\", summary = \"update service metadata and service instance\", example = {\n-        \"publishMetadata\",\n-        \"publishMetadata 5\"\n-})\n-public class PublishMetadata implements BaseCommand {\n-    private static final Logger logger = LoggerFactory.getLogger(PublishMetadata.class);\n-    private final ExecutorRepository executorRepository = ExtensionLoader.getExtensionLoader(ExecutorRepository.class).getDefaultExtension();\n-    private ScheduledFuture future;\n-\n-    @Override\n-    public String execute(CommandContext commandContext, String[] args) {\n-        logger.info(\"received publishMetadata command.\");\n-\n-        if (ArrayUtils.isEmpty(args)) {\n-            ServiceInstanceMetadataUtils.refreshMetadataAndInstance();\n-            return \"publish metadata succeeded.\";\n-        }\n-\n-        try {\n-            int delay = Integer.parseInt(args[0]);\n-            if (future == null || future.isDone() || future.isCancelled()) {\n-                future = executorRepository.nextScheduledExecutor()\n-                        .scheduleWithFixedDelay(ServiceInstanceMetadataUtils::refreshMetadataAndInstance, 0, delay, TimeUnit.MILLISECONDS);\n-            }\n-        } catch (NumberFormatException e) {\n-            logger.error(\"Wrong delay param\", e);\n-            return \"publishMetadata failed! Wrong delay param!\";\n-        }\n-        return \"publish task submitted, will publish in \" + args[0] + \" seconds.\";\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.command.impl;\r\n+\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.threadpool.manager.ExecutorRepository;\r\n+import org.apache.dubbo.common.utils.ArrayUtils;\r\n+import org.apache.dubbo.qos.command.BaseCommand;\r\n+import org.apache.dubbo.qos.command.CommandContext;\r\n+import org.apache.dubbo.qos.command.annotation.Cmd;\r\n+import org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils;\r\n+\r\n+import java.util.concurrent.ScheduledFuture;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+@Cmd(name = \"publishMetadata\", summary = \"update service metadata and service instance\", example = {\r\n+        \"publishMetadata\",\r\n+        \"publishMetadata 5\"\r\n+})\r\n+public class PublishMetadata implements BaseCommand {\r\n+    private static final Logger logger = LoggerFactory.getLogger(PublishMetadata.class);\r\n+    private final ExecutorRepository executorRepository = ExtensionLoader.getExtensionLoader(ExecutorRepository.class).getDefaultExtension();\r\n+    private ScheduledFuture future;\r\n+\r\n+    @Override\r\n+    public String execute(CommandContext commandContext, String[] args) {\r\n+        logger.info(\"received publishMetadata command.\");\r\n+\r\n+        if (ArrayUtils.isEmpty(args)) {\r\n+            ServiceInstanceMetadataUtils.refreshMetadataAndInstance();\r\n+            return \"publish metadata succeeded.\";\r\n+        }\r\n+\r\n+        try {\r\n+            int delay = Integer.parseInt(args[0]);\r\n+            if (future == null || future.isDone() || future.isCancelled()) {\r\n+                future = executorRepository.nextScheduledExecutor()\r\n+                        .scheduleWithFixedDelay(ServiceInstanceMetadataUtils::refreshMetadataAndInstance, 0, delay, TimeUnit.MILLISECONDS);\r\n+            }\r\n+        } catch (NumberFormatException e) {\r\n+            logger.error(\"Wrong delay param\", e);\r\n+            return \"publishMetadata failed! Wrong delay param!\";\r\n+        }\r\n+        return \"publish task submitted, will publish in \" + args[0] + \" seconds.\";\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/command/impl/Ready.java", "source2": "org/apache/dubbo/qos/command/impl/Ready.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,95 +1,95 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.command.impl;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.bootstrap.DubboBootstrap;\n-import org.apache.dubbo.config.utils.ConfigValidationUtils;\n-import org.apache.dubbo.qos.command.BaseCommand;\n-import org.apache.dubbo.qos.command.CommandContext;\n-import org.apache.dubbo.qos.command.annotation.Cmd;\n-import org.apache.dubbo.qos.textui.TTable;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.ProviderModel;\n-\n-import java.util.HashMap;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.stream.Collectors;\n-\n-@Cmd(name = \"ready\",summary = \"Judge if application or service has started? \")\n-public class Ready implements BaseCommand {\n-\n-    @Override\n-    public String execute(CommandContext commandContext, String[] args) {\n-        String serviceName = args.length > 0 ? args[0] : null;\n-        if (StringUtils.isEmpty(serviceName)) {\n-            // judge application has started\n-            return DubboBootstrap.getInstance().isReady() ? \"true\" : \"false\";\n-        } else {\n-            // judge service has started\n-            Map<String, Boolean> serviceReadyMap = isServiceReady(serviceName);\n-            if (serviceReadyMap == null || serviceReadyMap.size() <= 0) {\n-                return \"can't match service=\" + serviceName;\n-            }\n-            return buildUiText(serviceReadyMap);\n-        }\n-    }\n-\n-    private String buildUiText(Map<String, Boolean> serviceReadyMap) {\n-        TTable tTable = new TTable(new TTable.ColumnDefine[]{\n-                new TTable.ColumnDefine(TTable.Align.MIDDLE),\n-                new TTable.ColumnDefine(TTable.Align.MIDDLE)\n-        });\n-\n-        //Header\n-        tTable.addRow(\"Provider Service Name\", \"STATUS\");\n-        for (Map.Entry<String, Boolean> entry : serviceReadyMap.entrySet()) {\n-            String status = Boolean.TRUE.equals(entry.getValue()) ? \"TRUE\" : \"FALSE\";\n-            tTable.addRow(entry.getKey(),status);\n-        }\n-        return tTable.rendering();\n-    }\n-\n-    /**\n-     * judge service provider is started\n-     * @param serviceName service name,eg: org.apache.dubbo.demo.DemoService\n-     * @return Map[serviceKey,isStarted] eg:[org.apache.dubbo.demo.DemoService,true] or [group1/org.apache.dubbo.demo.DemoService,false]\n-     */\n-    private Map<String,Boolean> isServiceReady(String serviceName) {\n-        Map<String,Boolean> res = new HashMap<>();\n-        for (ProviderModel providerModel : ApplicationModel.allProviderModels()) {\n-            String serviceKey = providerModel.getServiceKey();\n-            String interfaceName = providerModel.getServiceConfig().getInterface();\n-            if (interfaceName.equals(serviceName)) {\n-                List<URL> needRegistryURLs = ConfigValidationUtils.loadRegistries(providerModel.getServiceConfig(), true);\n-                List<URL> registeredRegistryURLs = providerModel.getStatedUrl().stream()\n-                        .filter(x -> Boolean.TRUE.equals(x.isRegistered()))\n-                        .map(ProviderModel.RegisterStatedURL::getRegistryUrl)\n-                        .collect(Collectors.toList());\n-                if (needRegistryURLs.size() == registeredRegistryURLs.size()) {\n-                    res.put(serviceKey,true);\n-                } else {\n-                    res.put(serviceKey,false);\n-                }\n-            }\n-        }\n-        return res;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.command.impl;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.bootstrap.DubboBootstrap;\r\n+import org.apache.dubbo.config.utils.ConfigValidationUtils;\r\n+import org.apache.dubbo.qos.command.BaseCommand;\r\n+import org.apache.dubbo.qos.command.CommandContext;\r\n+import org.apache.dubbo.qos.command.annotation.Cmd;\r\n+import org.apache.dubbo.qos.textui.TTable;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.ProviderModel;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.stream.Collectors;\r\n+\r\n+@Cmd(name = \"ready\",summary = \"Judge if application or service has started? \")\r\n+public class Ready implements BaseCommand {\r\n+\r\n+    @Override\r\n+    public String execute(CommandContext commandContext, String[] args) {\r\n+        String serviceName = args.length > 0 ? args[0] : null;\r\n+        if (StringUtils.isEmpty(serviceName)) {\r\n+            // judge application has started\r\n+            return DubboBootstrap.getInstance().isReady() ? \"true\" : \"false\";\r\n+        } else {\r\n+            // judge service has started\r\n+            Map<String, Boolean> serviceReadyMap = isServiceReady(serviceName);\r\n+            if (serviceReadyMap == null || serviceReadyMap.size() <= 0) {\r\n+                return \"can't match service=\" + serviceName;\r\n+            }\r\n+            return buildUiText(serviceReadyMap);\r\n+        }\r\n+    }\r\n+\r\n+    private String buildUiText(Map<String, Boolean> serviceReadyMap) {\r\n+        TTable tTable = new TTable(new TTable.ColumnDefine[]{\r\n+                new TTable.ColumnDefine(TTable.Align.MIDDLE),\r\n+                new TTable.ColumnDefine(TTable.Align.MIDDLE)\r\n+        });\r\n+\r\n+        //Header\r\n+        tTable.addRow(\"Provider Service Name\", \"STATUS\");\r\n+        for (Map.Entry<String, Boolean> entry : serviceReadyMap.entrySet()) {\r\n+            String status = Boolean.TRUE.equals(entry.getValue()) ? \"TRUE\" : \"FALSE\";\r\n+            tTable.addRow(entry.getKey(),status);\r\n+        }\r\n+        return tTable.rendering();\r\n+    }\r\n+\r\n+    /**\r\n+     * judge service provider is started\r\n+     * @param serviceName service name,eg: org.apache.dubbo.demo.DemoService\r\n+     * @return Map[serviceKey,isStarted] eg:[org.apache.dubbo.demo.DemoService,true] or [group1/org.apache.dubbo.demo.DemoService,false]\r\n+     */\r\n+    private Map<String,Boolean> isServiceReady(String serviceName) {\r\n+        Map<String,Boolean> res = new HashMap<>();\r\n+        for (ProviderModel providerModel : ApplicationModel.allProviderModels()) {\r\n+            String serviceKey = providerModel.getServiceKey();\r\n+            String interfaceName = providerModel.getServiceConfig().getInterface();\r\n+            if (interfaceName.equals(serviceName)) {\r\n+                List<URL> needRegistryURLs = ConfigValidationUtils.loadRegistries(providerModel.getServiceConfig(), true);\r\n+                List<URL> registeredRegistryURLs = providerModel.getStatedUrl().stream()\r\n+                        .filter(x -> Boolean.TRUE.equals(x.isRegistered()))\r\n+                        .map(ProviderModel.RegisterStatedURL::getRegistryUrl)\r\n+                        .collect(Collectors.toList());\r\n+                if (needRegistryURLs.size() == registeredRegistryURLs.size()) {\r\n+                    res.put(serviceKey,true);\r\n+                } else {\r\n+                    res.put(serviceKey,false);\r\n+                }\r\n+            }\r\n+        }\r\n+        return res;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/command/impl/Version.java", "source2": "org/apache/dubbo/qos/command/impl/Version.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,37 +1,37 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.command.impl;\n-\n-import org.apache.dubbo.qos.command.BaseCommand;\n-import org.apache.dubbo.qos.command.CommandContext;\n-import org.apache.dubbo.qos.command.annotation.Cmd;\n-\n-@Cmd(name = \"version\", summary = \"version command(show dubbo version)\", example = {\n-        \"version\"\n-})\n-public class Version implements BaseCommand {\n-\n-    @Override\n-    public String execute(CommandContext commandContext, String[] args) {\n-        StringBuilder versionDescBuilder = new StringBuilder();\n-        versionDescBuilder.append(\"dubbo version \\\"\");\n-        versionDescBuilder.append(org.apache.dubbo.common.Version.getVersion());\n-        versionDescBuilder.append(\"\\\"\");\n-        return versionDescBuilder.toString();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.command.impl;\r\n+\r\n+import org.apache.dubbo.qos.command.BaseCommand;\r\n+import org.apache.dubbo.qos.command.CommandContext;\r\n+import org.apache.dubbo.qos.command.annotation.Cmd;\r\n+\r\n+@Cmd(name = \"version\", summary = \"version command(show dubbo version)\", example = {\r\n+        \"version\"\r\n+})\r\n+public class Version implements BaseCommand {\r\n+\r\n+    @Override\r\n+    public String execute(CommandContext commandContext, String[] args) {\r\n+        StringBuilder versionDescBuilder = new StringBuilder();\r\n+        versionDescBuilder.append(\"dubbo version \\\"\");\r\n+        versionDescBuilder.append(org.apache.dubbo.common.Version.getVersion());\r\n+        versionDescBuilder.append(\"\\\"\");\r\n+        return versionDescBuilder.toString();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/command/util/CommandHelper.java", "source2": "org/apache/dubbo/qos/command/util/CommandHelper.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,64 +1,64 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.command.util;\n-\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.qos.command.BaseCommand;\n-\n-import java.util.ArrayList;\n-import java.util.List;\n-import java.util.Set;\n-\n-public class CommandHelper {\n-\n-    private CommandHelper() {\n-    }\n-\n-    public static boolean hasCommand(String commandName) {\n-\n-        BaseCommand command = null;\n-        try {\n-            command = ExtensionLoader.getExtensionLoader(BaseCommand.class).getExtension(commandName);\n-        } catch (Throwable throwable) {\n-            return false;\n-        }\n-\n-        return command != null;\n-\n-    }\n-\n-    public static List<Class<?>> getAllCommandClass() {\n-        final Set<String> commandList = ExtensionLoader.getExtensionLoader(BaseCommand.class).getSupportedExtensions();\n-        final List<Class<?>> classes = new ArrayList<Class<?>>();\n-\n-        for (String commandName : commandList) {\n-            BaseCommand command = ExtensionLoader.getExtensionLoader(BaseCommand.class).getExtension(commandName);\n-            classes.add(command.getClass());\n-        }\n-\n-        return classes;\n-    }\n-\n-\n-    public static Class<?> getCommandClass(String commandName) {\n-        if (hasCommand(commandName)) {\n-            return ExtensionLoader.getExtensionLoader(BaseCommand.class).getExtension(commandName).getClass();\n-        } else {\n-            return null;\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.command.util;\r\n+\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.qos.command.BaseCommand;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+import java.util.Set;\r\n+\r\n+public class CommandHelper {\r\n+\r\n+    private CommandHelper() {\r\n+    }\r\n+\r\n+    public static boolean hasCommand(String commandName) {\r\n+\r\n+        BaseCommand command = null;\r\n+        try {\r\n+            command = ExtensionLoader.getExtensionLoader(BaseCommand.class).getExtension(commandName);\r\n+        } catch (Throwable throwable) {\r\n+            return false;\r\n+        }\r\n+\r\n+        return command != null;\r\n+\r\n+    }\r\n+\r\n+    public static List<Class<?>> getAllCommandClass() {\r\n+        final Set<String> commandList = ExtensionLoader.getExtensionLoader(BaseCommand.class).getSupportedExtensions();\r\n+        final List<Class<?>> classes = new ArrayList<Class<?>>();\r\n+\r\n+        for (String commandName : commandList) {\r\n+            BaseCommand command = ExtensionLoader.getExtensionLoader(BaseCommand.class).getExtension(commandName);\r\n+            classes.add(command.getClass());\r\n+        }\r\n+\r\n+        return classes;\r\n+    }\r\n+\r\n+\r\n+    public static Class<?> getCommandClass(String commandName) {\r\n+        if (hasCommand(commandName)) {\r\n+            return ExtensionLoader.getExtensionLoader(BaseCommand.class).getExtension(commandName).getClass();\r\n+        } else {\r\n+            return null;\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/command/util/ServiceCheckUtils.java", "source2": "org/apache/dubbo/qos/command/util/ServiceCheckUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,62 +1,62 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.command.util;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.registry.Registry;\n-import org.apache.dubbo.registry.support.AbstractRegistry;\n-import org.apache.dubbo.registry.support.AbstractRegistryFactory;\n-import org.apache.dubbo.rpc.model.ConsumerModel;\n-import org.apache.dubbo.rpc.model.ProviderModel;\n-\n-import java.util.Collection;\n-import java.util.List;\n-import java.util.Map;\n-\n-public class ServiceCheckUtils {\n-\n-    public static boolean isRegistered(ProviderModel providerModel) {\n-        // TODO, only check the status of one registry and no protocol now.\n-        Collection<Registry> registries = AbstractRegistryFactory.getRegistries();\n-        if (CollectionUtils.isNotEmpty(registries)) {\n-            AbstractRegistry abstractRegistry = (AbstractRegistry) registries.iterator().next();\n-            if (abstractRegistry.getRegistered().stream().anyMatch(url -> url.getServiceKey().equals(providerModel.getServiceKey()))) {\n-                return true;\n-            }\n-        }\n-        return false;\n-    }\n-\n-    public static int getConsumerAddressNum(ConsumerModel consumerModel) {\n-        // TODO, only check one registry by default.\n-        int num = 0;\n-\n-        Collection<Registry> registries = AbstractRegistryFactory.getRegistries();\n-        if (CollectionUtils.isNotEmpty(registries)) {\n-            AbstractRegistry abstractRegistry = (AbstractRegistry) registries.iterator().next();\n-            for (Map.Entry<URL, Map<String, List<URL>>> entry : abstractRegistry.getNotified().entrySet()) {\n-                if (entry.getKey().getServiceKey().equals(consumerModel.getServiceKey())) {\n-                    if (CollectionUtils.isNotEmptyMap(entry.getValue())) {\n-                        num = entry.getValue().size();\n-                    }\n-                }\n-            }\n-        }\n-        return num;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.command.util;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.registry.Registry;\r\n+import org.apache.dubbo.registry.support.AbstractRegistry;\r\n+import org.apache.dubbo.registry.support.AbstractRegistryFactory;\r\n+import org.apache.dubbo.rpc.model.ConsumerModel;\r\n+import org.apache.dubbo.rpc.model.ProviderModel;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+\r\n+public class ServiceCheckUtils {\r\n+\r\n+    public static boolean isRegistered(ProviderModel providerModel) {\r\n+        // TODO, only check the status of one registry and no protocol now.\r\n+        Collection<Registry> registries = AbstractRegistryFactory.getRegistries();\r\n+        if (CollectionUtils.isNotEmpty(registries)) {\r\n+            AbstractRegistry abstractRegistry = (AbstractRegistry) registries.iterator().next();\r\n+            if (abstractRegistry.getRegistered().stream().anyMatch(url -> url.getServiceKey().equals(providerModel.getServiceKey()))) {\r\n+                return true;\r\n+            }\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    public static int getConsumerAddressNum(ConsumerModel consumerModel) {\r\n+        // TODO, only check one registry by default.\r\n+        int num = 0;\r\n+\r\n+        Collection<Registry> registries = AbstractRegistryFactory.getRegistries();\r\n+        if (CollectionUtils.isNotEmpty(registries)) {\r\n+            AbstractRegistry abstractRegistry = (AbstractRegistry) registries.iterator().next();\r\n+            for (Map.Entry<URL, Map<String, List<URL>>> entry : abstractRegistry.getNotified().entrySet()) {\r\n+                if (entry.getKey().getServiceKey().equals(consumerModel.getServiceKey())) {\r\n+                    if (CollectionUtils.isNotEmptyMap(entry.getValue())) {\r\n+                        num = entry.getValue().size();\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+        return num;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/legacy/ChangeTelnetHandler.java", "source2": "org/apache/dubbo/qos/legacy/ChangeTelnetHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,65 +1,65 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.legacy;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.telnet.TelnetHandler;\n-import org.apache.dubbo.remoting.telnet.support.Help;\n-import org.apache.dubbo.rpc.Exporter;\n-import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;\n-\n-/**\n- * ChangeServiceTelnetHandler\n- */\n-@Activate\n-@Help(parameter = \"[service]\", summary = \"Change default service.\", detail = \"Change default service.\")\n-public class ChangeTelnetHandler implements TelnetHandler {\n-\n-    public static final String SERVICE_KEY = \"telnet.service\";\n-\n-    @Override\n-    public String telnet(Channel channel, String message) {\n-        if (message == null || message.length() == 0) {\n-            return \"Please input service name, eg: \\r\\ncd XxxService\\r\\ncd com.xxx.XxxService\";\n-        }\n-        StringBuilder buf = new StringBuilder();\n-        if (\"/\".equals(message) || \"..\".equals(message)) {\n-            String service = (String) channel.getAttribute(SERVICE_KEY);\n-            channel.removeAttribute(SERVICE_KEY);\n-            buf.append(\"Cancelled default service \").append(service).append(\".\");\n-        } else {\n-            boolean found = false;\n-            for (Exporter<?> exporter : DubboProtocol.getDubboProtocol().getExporters()) {\n-                if (message.equals(exporter.getInvoker().getInterface().getSimpleName())\n-                        || message.equals(exporter.getInvoker().getInterface().getName())\n-                        || message.equals(exporter.getInvoker().getUrl().getPath())) {\n-                    found = true;\n-                    break;\n-                }\n-            }\n-            if (found) {\n-                channel.setAttribute(SERVICE_KEY, message);\n-                buf.append(\"Used the \").append(message).append(\" as default.\\r\\nYou can cancel default service by command: cd /\");\n-            } else {\n-                buf.append(\"No such service \").append(message);\n-            }\n-        }\n-        return buf.toString();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.legacy;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.telnet.TelnetHandler;\r\n+import org.apache.dubbo.remoting.telnet.support.Help;\r\n+import org.apache.dubbo.rpc.Exporter;\r\n+import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;\r\n+\r\n+/**\r\n+ * ChangeServiceTelnetHandler\r\n+ */\r\n+@Activate\r\n+@Help(parameter = \"[service]\", summary = \"Change default service.\", detail = \"Change default service.\")\r\n+public class ChangeTelnetHandler implements TelnetHandler {\r\n+\r\n+    public static final String SERVICE_KEY = \"telnet.service\";\r\n+\r\n+    @Override\r\n+    public String telnet(Channel channel, String message) {\r\n+        if (message == null || message.length() == 0) {\r\n+            return \"Please input service name, eg: \\r\\ncd XxxService\\r\\ncd com.xxx.XxxService\";\r\n+        }\r\n+        StringBuilder buf = new StringBuilder();\r\n+        if (\"/\".equals(message) || \"..\".equals(message)) {\r\n+            String service = (String) channel.getAttribute(SERVICE_KEY);\r\n+            channel.removeAttribute(SERVICE_KEY);\r\n+            buf.append(\"Cancelled default service \").append(service).append(\".\");\r\n+        } else {\r\n+            boolean found = false;\r\n+            for (Exporter<?> exporter : DubboProtocol.getDubboProtocol().getExporters()) {\r\n+                if (message.equals(exporter.getInvoker().getInterface().getSimpleName())\r\n+                        || message.equals(exporter.getInvoker().getInterface().getName())\r\n+                        || message.equals(exporter.getInvoker().getUrl().getPath())) {\r\n+                    found = true;\r\n+                    break;\r\n+                }\r\n+            }\r\n+            if (found) {\r\n+                channel.setAttribute(SERVICE_KEY, message);\r\n+                buf.append(\"Used the \").append(message).append(\" as default.\\r\\nYou can cancel default service by command: cd /\");\r\n+            } else {\r\n+                buf.append(\"No such service \").append(message);\r\n+            }\r\n+        }\r\n+        return buf.toString();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/legacy/CountTelnetHandler.java", "source2": "org/apache/dubbo/qos/legacy/CountTelnetHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,163 +1,163 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.legacy;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.telnet.TelnetHandler;\n-import org.apache.dubbo.remoting.telnet.support.Help;\n-import org.apache.dubbo.remoting.telnet.support.TelnetUtils;\n-import org.apache.dubbo.rpc.Exporter;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.RpcStatus;\n-import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;\n-\n-import java.lang.reflect.Method;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * CountTelnetHandler\n- */\n-@Activate\n-@Help(parameter = \"[service] [method] [times]\", summary = \"Count the service.\", detail = \"Count the service.\")\n-public class CountTelnetHandler implements TelnetHandler {\n-\n-    @Override\n-    public String telnet(final Channel channel, String message) {\n-        String service = (String) channel.getAttribute(ChangeTelnetHandler.SERVICE_KEY);\n-        if ((service == null || service.length() == 0)\n-                && (message == null || message.length() == 0)) {\n-            return \"Please input service name, eg: \\r\\ncount XxxService\\r\\ncount XxxService xxxMethod\\r\\ncount XxxService xxxMethod 10\\r\\nor \\\"cd XxxService\\\" firstly.\";\n-        }\n-        StringBuilder buf = new StringBuilder();\n-        if (service != null && service.length() > 0) {\n-            buf.append(\"Use default service \").append(service).append(\".\\r\\n\");\n-        }\n-        String[] parts = message.split(\"\\\\s+\");\n-        String method;\n-        String times;\n-        if (service == null || service.length() == 0) {\n-            service = parts.length > 0 ? parts[0] : null;\n-            method = parts.length > 1 ? parts[1] : null;\n-        } else {\n-            method = parts.length > 0 ? parts[0] : null;\n-        }\n-        if (StringUtils.isInteger(method)) {\n-            times = method;\n-            method = null;\n-        } else {\n-            times = parts.length > 2 ? parts[2] : \"1\";\n-        }\n-        if (!StringUtils.isInteger(times)) {\n-            return \"Illegal times \" + times + \", must be integer.\";\n-        }\n-        final int t = Integer.parseInt(times);\n-        Invoker<?> invoker = null;\n-        for (Exporter<?> exporter : DubboProtocol.getDubboProtocol().getExporters()) {\n-            if (service.equals(exporter.getInvoker().getInterface().getSimpleName())\n-                    || service.equals(exporter.getInvoker().getInterface().getName())\n-                    || service.equals(exporter.getInvoker().getUrl().getPath())) {\n-                invoker = exporter.getInvoker();\n-                break;\n-            }\n-        }\n-        if (invoker != null) {\n-            if (t > 0) {\n-                final String mtd = method;\n-                final Invoker<?> inv = invoker;\n-                final String prompt = channel.getUrl().getParameter(\"prompt\", \"telnet\");\n-                Thread thread = new Thread(new Runnable() {\n-                    @Override\n-                    public void run() {\n-                        for (int i = 0; i < t; i++) {\n-                            String result = count(inv, mtd);\n-                            try {\n-                                channel.send(\"\\r\\n\" + result);\n-                            } catch (RemotingException e1) {\n-                                return;\n-                            }\n-                            if (i < t - 1) {\n-                                try {\n-                                    Thread.sleep(1000);\n-                                } catch (InterruptedException e) {\n-                                }\n-                            }\n-                        }\n-                        try {\n-                            channel.send(\"\\r\\n\" + prompt + \"> \");\n-                        } catch (RemotingException e1) {\n-                            return;\n-                        }\n-                    }\n-                }, \"TelnetCount\");\n-                thread.setDaemon(true);\n-                thread.start();\n-            }\n-        } else {\n-            buf.append(\"No such service \").append(service);\n-        }\n-        return buf.toString();\n-    }\n-\n-    private String count(Invoker<?> invoker, String method) {\n-        URL url = invoker.getUrl();\n-        List<List<String>> table = new ArrayList<List<String>>();\n-        List<String> header = new ArrayList<String>();\n-        header.add(\"method\");\n-        header.add(\"total\");\n-        header.add(\"failed\");\n-        header.add(\"active\");\n-        header.add(\"average\");\n-        header.add(\"max\");\n-        if (method == null || method.length() == 0) {\n-            for (Method m : invoker.getInterface().getMethods()) {\n-                RpcStatus count = RpcStatus.getStatus(url, m.getName());\n-                table.add(createRow(m.getName(),count));\n-            }\n-        } else {\n-            boolean found = false;\n-            for (Method m : invoker.getInterface().getMethods()) {\n-                if (m.getName().equals(method)) {\n-                    found = true;\n-                    break;\n-                }\n-            }\n-            if (found) {\n-                RpcStatus count = RpcStatus.getStatus(url, method);\n-                table.add(createRow(method,count));\n-            } else {\n-                return \"No such method \" + method + \" in class \" + invoker.getInterface().getName();\n-            }\n-        }\n-        return TelnetUtils.toTable(header, table);\n-    }\n-\n-    private List<String> createRow(String methodName,RpcStatus count) {\n-        List<String> row = new ArrayList<String>();\n-        row.add(methodName);\n-        row.add(String.valueOf(count.getTotal()));\n-        row.add(String.valueOf(count.getFailed()));\n-        row.add(String.valueOf(count.getActive()));\n-        row.add(count.getSucceededAverageElapsed() + \"ms\");\n-        row.add(count.getSucceededMaxElapsed() + \"ms\");\n-        return row;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.legacy;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.telnet.TelnetHandler;\r\n+import org.apache.dubbo.remoting.telnet.support.Help;\r\n+import org.apache.dubbo.remoting.telnet.support.TelnetUtils;\r\n+import org.apache.dubbo.rpc.Exporter;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.RpcStatus;\r\n+import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * CountTelnetHandler\r\n+ */\r\n+@Activate\r\n+@Help(parameter = \"[service] [method] [times]\", summary = \"Count the service.\", detail = \"Count the service.\")\r\n+public class CountTelnetHandler implements TelnetHandler {\r\n+\r\n+    @Override\r\n+    public String telnet(final Channel channel, String message) {\r\n+        String service = (String) channel.getAttribute(ChangeTelnetHandler.SERVICE_KEY);\r\n+        if ((service == null || service.length() == 0)\r\n+                && (message == null || message.length() == 0)) {\r\n+            return \"Please input service name, eg: \\r\\ncount XxxService\\r\\ncount XxxService xxxMethod\\r\\ncount XxxService xxxMethod 10\\r\\nor \\\"cd XxxService\\\" firstly.\";\r\n+        }\r\n+        StringBuilder buf = new StringBuilder();\r\n+        if (service != null && service.length() > 0) {\r\n+            buf.append(\"Use default service \").append(service).append(\".\\r\\n\");\r\n+        }\r\n+        String[] parts = message.split(\"\\\\s+\");\r\n+        String method;\r\n+        String times;\r\n+        if (service == null || service.length() == 0) {\r\n+            service = parts.length > 0 ? parts[0] : null;\r\n+            method = parts.length > 1 ? parts[1] : null;\r\n+        } else {\r\n+            method = parts.length > 0 ? parts[0] : null;\r\n+        }\r\n+        if (StringUtils.isInteger(method)) {\r\n+            times = method;\r\n+            method = null;\r\n+        } else {\r\n+            times = parts.length > 2 ? parts[2] : \"1\";\r\n+        }\r\n+        if (!StringUtils.isInteger(times)) {\r\n+            return \"Illegal times \" + times + \", must be integer.\";\r\n+        }\r\n+        final int t = Integer.parseInt(times);\r\n+        Invoker<?> invoker = null;\r\n+        for (Exporter<?> exporter : DubboProtocol.getDubboProtocol().getExporters()) {\r\n+            if (service.equals(exporter.getInvoker().getInterface().getSimpleName())\r\n+                    || service.equals(exporter.getInvoker().getInterface().getName())\r\n+                    || service.equals(exporter.getInvoker().getUrl().getPath())) {\r\n+                invoker = exporter.getInvoker();\r\n+                break;\r\n+            }\r\n+        }\r\n+        if (invoker != null) {\r\n+            if (t > 0) {\r\n+                final String mtd = method;\r\n+                final Invoker<?> inv = invoker;\r\n+                final String prompt = channel.getUrl().getParameter(\"prompt\", \"telnet\");\r\n+                Thread thread = new Thread(new Runnable() {\r\n+                    @Override\r\n+                    public void run() {\r\n+                        for (int i = 0; i < t; i++) {\r\n+                            String result = count(inv, mtd);\r\n+                            try {\r\n+                                channel.send(\"\\r\\n\" + result);\r\n+                            } catch (RemotingException e1) {\r\n+                                return;\r\n+                            }\r\n+                            if (i < t - 1) {\r\n+                                try {\r\n+                                    Thread.sleep(1000);\r\n+                                } catch (InterruptedException e) {\r\n+                                }\r\n+                            }\r\n+                        }\r\n+                        try {\r\n+                            channel.send(\"\\r\\n\" + prompt + \"> \");\r\n+                        } catch (RemotingException e1) {\r\n+                            return;\r\n+                        }\r\n+                    }\r\n+                }, \"TelnetCount\");\r\n+                thread.setDaemon(true);\r\n+                thread.start();\r\n+            }\r\n+        } else {\r\n+            buf.append(\"No such service \").append(service);\r\n+        }\r\n+        return buf.toString();\r\n+    }\r\n+\r\n+    private String count(Invoker<?> invoker, String method) {\r\n+        URL url = invoker.getUrl();\r\n+        List<List<String>> table = new ArrayList<List<String>>();\r\n+        List<String> header = new ArrayList<String>();\r\n+        header.add(\"method\");\r\n+        header.add(\"total\");\r\n+        header.add(\"failed\");\r\n+        header.add(\"active\");\r\n+        header.add(\"average\");\r\n+        header.add(\"max\");\r\n+        if (method == null || method.length() == 0) {\r\n+            for (Method m : invoker.getInterface().getMethods()) {\r\n+                RpcStatus count = RpcStatus.getStatus(url, m.getName());\r\n+                table.add(createRow(m.getName(),count));\r\n+            }\r\n+        } else {\r\n+            boolean found = false;\r\n+            for (Method m : invoker.getInterface().getMethods()) {\r\n+                if (m.getName().equals(method)) {\r\n+                    found = true;\r\n+                    break;\r\n+                }\r\n+            }\r\n+            if (found) {\r\n+                RpcStatus count = RpcStatus.getStatus(url, method);\r\n+                table.add(createRow(method,count));\r\n+            } else {\r\n+                return \"No such method \" + method + \" in class \" + invoker.getInterface().getName();\r\n+            }\r\n+        }\r\n+        return TelnetUtils.toTable(header, table);\r\n+    }\r\n+\r\n+    private List<String> createRow(String methodName,RpcStatus count) {\r\n+        List<String> row = new ArrayList<String>();\r\n+        row.add(methodName);\r\n+        row.add(String.valueOf(count.getTotal()));\r\n+        row.add(String.valueOf(count.getFailed()));\r\n+        row.add(String.valueOf(count.getActive()));\r\n+        row.add(count.getSucceededAverageElapsed() + \"ms\");\r\n+        row.add(count.getSucceededMaxElapsed() + \"ms\");\r\n+        return row;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/legacy/CurrentTelnetHandler.java", "source2": "org/apache/dubbo/qos/legacy/CurrentTelnetHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,46 +1,46 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.legacy;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.telnet.TelnetHandler;\n-import org.apache.dubbo.remoting.telnet.support.Help;\n-\n-/**\n- * CurrentServiceTelnetHandler\n- */\n-@Activate\n-@Help(parameter = \"\", summary = \"Print working default service.\", detail = \"Print working default service.\")\n-public class CurrentTelnetHandler implements TelnetHandler {\n-\n-    @Override\n-    public String telnet(Channel channel, String message) {\n-        if (message.length() > 0) {\n-            return \"Unsupported parameter \" + message + \" for pwd.\";\n-        }\n-        String service = (String) channel.getAttribute(ChangeTelnetHandler.SERVICE_KEY);\n-        StringBuilder buf = new StringBuilder();\n-        if (service == null || service.length() == 0) {\n-            buf.append(\"/\");\n-        } else {\n-            buf.append(service);\n-        }\n-        return buf.toString();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.legacy;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.telnet.TelnetHandler;\r\n+import org.apache.dubbo.remoting.telnet.support.Help;\r\n+\r\n+/**\r\n+ * CurrentServiceTelnetHandler\r\n+ */\r\n+@Activate\r\n+@Help(parameter = \"\", summary = \"Print working default service.\", detail = \"Print working default service.\")\r\n+public class CurrentTelnetHandler implements TelnetHandler {\r\n+\r\n+    @Override\r\n+    public String telnet(Channel channel, String message) {\r\n+        if (message.length() > 0) {\r\n+            return \"Unsupported parameter \" + message + \" for pwd.\";\r\n+        }\r\n+        String service = (String) channel.getAttribute(ChangeTelnetHandler.SERVICE_KEY);\r\n+        StringBuilder buf = new StringBuilder();\r\n+        if (service == null || service.length() == 0) {\r\n+            buf.append(\"/\");\r\n+        } else {\r\n+            buf.append(service);\r\n+        }\r\n+        return buf.toString();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/legacy/InvokeTelnetHandler.java", "source2": "org/apache/dubbo/qos/legacy/InvokeTelnetHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,261 +1,261 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.legacy;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.telnet.TelnetHandler;\n-import org.apache.dubbo.remoting.telnet.support.Help;\n-import org.apache.dubbo.rpc.AppResponse;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.MethodDescriptor;\n-import org.apache.dubbo.rpc.model.ProviderModel;\n-\n-import com.alibaba.fastjson.JSON;\n-\n-import java.lang.reflect.Method;\n-import java.util.ArrayList;\n-import java.util.Collection;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-\n-import static org.apache.dubbo.common.utils.PojoUtils.realize;\n-\n-/**\n- * InvokeTelnetHandler\n- */\n-@Activate\n-@Help(parameter = \"[service.]method(args) \", summary = \"Invoke the service method.\",\n-        detail = \"Invoke the service method.\")\n-public class InvokeTelnetHandler implements TelnetHandler {\n-\n-    public static final String INVOKE_MESSAGE_KEY = \"telnet.invoke.method.message\";\n-    public static final String INVOKE_METHOD_LIST_KEY = \"telnet.invoke.method.list\";\n-    public static final String INVOKE_METHOD_PROVIDER_KEY = \"telnet.invoke.method.provider\";\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public String telnet(Channel channel, String message) {\n-        if (StringUtils.isEmpty(message)) {\n-            return \"Please input method name, eg: \\r\\ninvoke xxxMethod(1234, \\\"abcd\\\", {\\\"prop\\\" : \\\"value\\\"})\\r\\n\" +\n-                    \"invoke XxxService.xxxMethod(1234, \\\"abcd\\\", {\\\"prop\\\" : \\\"value\\\"})\\r\\n\" +\n-                    \"invoke com.xxx.XxxService.xxxMethod(1234, \\\"abcd\\\", {\\\"prop\\\" : \\\"value\\\"})\";\n-        }\n-\n-        String service = (String) channel.getAttribute(ChangeTelnetHandler.SERVICE_KEY);\n-\n-        int i = message.indexOf(\"(\");\n-\n-        if (i < 0 || !message.endsWith(\")\")) {\n-            return \"Invalid parameters, format: service.method(args)\";\n-        }\n-\n-        String method = message.substring(0, i).trim();\n-        String args = message.substring(i + 1, message.length() - 1).trim();\n-        i = method.lastIndexOf(\".\");\n-        if (i >= 0) {\n-            service = method.substring(0, i).trim();\n-            method = method.substring(i + 1).trim();\n-        }\n-\n-        List<Object> list;\n-        try {\n-            list = JSON.parseArray(\"[\" + args + \"]\", Object.class);\n-        } catch (Throwable t) {\n-            return \"Invalid json argument, cause: \" + t.getMessage();\n-        }\n-        StringBuilder buf = new StringBuilder();\n-        Method invokeMethod = null;\n-        ProviderModel selectedProvider = null;\n-        if (isInvokedSelectCommand(channel)) {\n-            selectedProvider = (ProviderModel) channel.getAttribute(INVOKE_METHOD_PROVIDER_KEY);\n-            invokeMethod = (Method) channel.getAttribute(SelectTelnetHandler.SELECT_METHOD_KEY);\n-        } else {\n-            for (ProviderModel provider : ApplicationModel.allProviderModels()) {\n-                if (isServiceMatch(service, provider)) {\n-                    selectedProvider = provider;\n-                    List<Method> methodList = findSameSignatureMethod(provider.getAllMethods(), method, list);\n-                    if (CollectionUtils.isNotEmpty(methodList)) {\n-                        if (methodList.size() == 1) {\n-                            invokeMethod = methodList.get(0);\n-                        } else {\n-                            List<Method> matchMethods = findMatchMethods(methodList, list);\n-                            if (CollectionUtils.isNotEmpty(matchMethods)) {\n-                                if (matchMethods.size() == 1) {\n-                                    invokeMethod = matchMethods.get(0);\n-                                } else { //exist overridden method\n-                                    channel.setAttribute(INVOKE_METHOD_PROVIDER_KEY, provider);\n-                                    channel.setAttribute(INVOKE_METHOD_LIST_KEY, matchMethods);\n-                                    channel.setAttribute(INVOKE_MESSAGE_KEY, message);\n-                                    printSelectMessage(buf, matchMethods);\n-                                    return buf.toString();\n-                                }\n-                            }\n-                        }\n-                    }\n-                    break;\n-                }\n-            }\n-        }\n-\n-\n-        if (!StringUtils.isEmpty(service)) {\n-            buf.append(\"Use default service \").append(service).append(\".\");\n-        }\n-        if (selectedProvider != null) {\n-            if (invokeMethod != null) {\n-                try {\n-                    Object[] array = realize(list.toArray(), invokeMethod.getParameterTypes(),\n-                            invokeMethod.getGenericParameterTypes());\n-                    long start = System.currentTimeMillis();\n-                    AppResponse result = new AppResponse();\n-                    try {\n-                        Object o = invokeMethod.invoke(selectedProvider.getServiceInstance(), array);\n-                        result.setValue(o);\n-                    } catch (Throwable t) {\n-                        result.setException(t);\n-                    }\n-                    long end = System.currentTimeMillis();\n-                    buf.append(\"\\r\\nresult: \");\n-                    buf.append(JSON.toJSONString(result.recreate()));\n-                    buf.append(\"\\r\\nelapsed: \");\n-                    buf.append(end - start);\n-                    buf.append(\" ms.\");\n-                } catch (Throwable t) {\n-                    return \"Failed to invoke method \" + invokeMethod.getName() + \", cause: \" + StringUtils.toString(t);\n-                }\n-            } else {\n-                buf.append(\"\\r\\nNo such method \").append(method).append(\" in service \").append(service);\n-            }\n-        } else {\n-            buf.append(\"\\r\\nNo such service \").append(service);\n-        }\n-        return buf.toString();\n-    }\n-\n-\n-    private boolean isServiceMatch(String service, ProviderModel provider) {\n-        return provider.getServiceKey().equalsIgnoreCase(service)\n-                || provider.getServiceInterfaceClass().getSimpleName().equalsIgnoreCase(service)\n-                || provider.getServiceInterfaceClass().getName().equalsIgnoreCase(service)\n-                || StringUtils.isEmpty(service);\n-    }\n-\n-    private List<Method> findSameSignatureMethod(Set<MethodDescriptor> methods, String lookupMethodName, List<Object> args) {\n-        List<Method> sameSignatureMethods = new ArrayList<>();\n-        for (MethodDescriptor model : methods) {\n-            Method method = model.getMethod();\n-            if (method.getName().equals(lookupMethodName) && method.getParameterTypes().length == args.size()) {\n-                sameSignatureMethods.add(method);\n-            }\n-        }\n-        return sameSignatureMethods;\n-    }\n-\n-    private List<Method> findMatchMethods(List<Method> methods, List<Object> args) {\n-        List<Method> matchMethod = new ArrayList<>();\n-        for (Method method : methods) {\n-            if (isMatch(method, args)) {\n-                matchMethod.add(method);\n-            }\n-        }\n-        return matchMethod;\n-    }\n-\n-    private static boolean isMatch(Method method, List<Object> args) {\n-        Class<?>[] types = method.getParameterTypes();\n-        if (types.length != args.size()) {\n-            return false;\n-        }\n-        for (int i = 0; i < types.length; i++) {\n-            Class<?> type = types[i];\n-            Object arg = args.get(i);\n-\n-            if (arg == null) {\n-                if (type.isPrimitive()) {\n-                    return false;\n-                }\n-\n-                // if the type is not primitive, we choose to believe what the invoker want is a null value\n-                continue;\n-            }\n-\n-            if (ReflectUtils.isPrimitive(arg.getClass())) {\n-                // allow string arg to enum type, @see PojoUtils.realize0()\n-                if (arg instanceof String && type.isEnum()) {\n-                    continue;\n-                }\n-\n-                if (!ReflectUtils.isPrimitive(type)) {\n-                    return false;\n-                }\n-\n-                if (!ReflectUtils.isCompatible(type, arg)) {\n-                    return false;\n-                }\n-            } else if (arg instanceof Map) {\n-                String name = (String) ((Map<?, ?>) arg).get(\"class\");\n-                if (StringUtils.isNotEmpty(name)) {\n-                    Class<?> cls = ReflectUtils.forName(name);\n-                    if (!type.isAssignableFrom(cls)) {\n-                        return false;\n-                    }\n-                } else {\n-                    return true;\n-                }\n-            } else if (arg instanceof Collection) {\n-                if (!type.isArray() && !type.isAssignableFrom(arg.getClass())) {\n-                    return false;\n-                }\n-            } else {\n-                if (!type.isAssignableFrom(arg.getClass())) {\n-                    return false;\n-                }\n-            }\n-        }\n-        return true;\n-    }\n-\n-    private void printSelectMessage(StringBuilder buf, List<Method> methods) {\n-        buf.append(\"Methods:\\r\\n\");\n-        for (int i = 0; i < methods.size(); i++) {\n-            Method method = methods.get(i);\n-            buf.append(i + 1).append(\". \").append(method.getName()).append(\"(\");\n-            Class<?>[] parameterTypes = method.getParameterTypes();\n-            for (int n = 0; n < parameterTypes.length; n++) {\n-                buf.append(parameterTypes[n].getSimpleName());\n-                if (n != parameterTypes.length - 1) {\n-                    buf.append(\",\");\n-                }\n-            }\n-            buf.append(\")\\r\\n\");\n-        }\n-        buf.append(\"Please use the select command to select the method you want to invoke. eg: select 1\");\n-    }\n-\n-    private boolean isInvokedSelectCommand(Channel channel) {\n-        if (channel.hasAttribute(SelectTelnetHandler.SELECT_KEY)) {\n-            channel.removeAttribute(SelectTelnetHandler.SELECT_KEY);\n-            return true;\n-        }\n-        return false;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.legacy;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.telnet.TelnetHandler;\r\n+import org.apache.dubbo.remoting.telnet.support.Help;\r\n+import org.apache.dubbo.rpc.AppResponse;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.MethodDescriptor;\r\n+import org.apache.dubbo.rpc.model.ProviderModel;\r\n+\r\n+import com.alibaba.fastjson.JSON;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.util.ArrayList;\r\n+import java.util.Collection;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+\r\n+import static org.apache.dubbo.common.utils.PojoUtils.realize;\r\n+\r\n+/**\r\n+ * InvokeTelnetHandler\r\n+ */\r\n+@Activate\r\n+@Help(parameter = \"[service.]method(args) \", summary = \"Invoke the service method.\",\r\n+        detail = \"Invoke the service method.\")\r\n+public class InvokeTelnetHandler implements TelnetHandler {\r\n+\r\n+    public static final String INVOKE_MESSAGE_KEY = \"telnet.invoke.method.message\";\r\n+    public static final String INVOKE_METHOD_LIST_KEY = \"telnet.invoke.method.list\";\r\n+    public static final String INVOKE_METHOD_PROVIDER_KEY = \"telnet.invoke.method.provider\";\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public String telnet(Channel channel, String message) {\r\n+        if (StringUtils.isEmpty(message)) {\r\n+            return \"Please input method name, eg: \\r\\ninvoke xxxMethod(1234, \\\"abcd\\\", {\\\"prop\\\" : \\\"value\\\"})\\r\\n\" +\r\n+                    \"invoke XxxService.xxxMethod(1234, \\\"abcd\\\", {\\\"prop\\\" : \\\"value\\\"})\\r\\n\" +\r\n+                    \"invoke com.xxx.XxxService.xxxMethod(1234, \\\"abcd\\\", {\\\"prop\\\" : \\\"value\\\"})\";\r\n+        }\r\n+\r\n+        String service = (String) channel.getAttribute(ChangeTelnetHandler.SERVICE_KEY);\r\n+\r\n+        int i = message.indexOf(\"(\");\r\n+\r\n+        if (i < 0 || !message.endsWith(\")\")) {\r\n+            return \"Invalid parameters, format: service.method(args)\";\r\n+        }\r\n+\r\n+        String method = message.substring(0, i).trim();\r\n+        String args = message.substring(i + 1, message.length() - 1).trim();\r\n+        i = method.lastIndexOf(\".\");\r\n+        if (i >= 0) {\r\n+            service = method.substring(0, i).trim();\r\n+            method = method.substring(i + 1).trim();\r\n+        }\r\n+\r\n+        List<Object> list;\r\n+        try {\r\n+            list = JSON.parseArray(\"[\" + args + \"]\", Object.class);\r\n+        } catch (Throwable t) {\r\n+            return \"Invalid json argument, cause: \" + t.getMessage();\r\n+        }\r\n+        StringBuilder buf = new StringBuilder();\r\n+        Method invokeMethod = null;\r\n+        ProviderModel selectedProvider = null;\r\n+        if (isInvokedSelectCommand(channel)) {\r\n+            selectedProvider = (ProviderModel) channel.getAttribute(INVOKE_METHOD_PROVIDER_KEY);\r\n+            invokeMethod = (Method) channel.getAttribute(SelectTelnetHandler.SELECT_METHOD_KEY);\r\n+        } else {\r\n+            for (ProviderModel provider : ApplicationModel.allProviderModels()) {\r\n+                if (isServiceMatch(service, provider)) {\r\n+                    selectedProvider = provider;\r\n+                    List<Method> methodList = findSameSignatureMethod(provider.getAllMethods(), method, list);\r\n+                    if (CollectionUtils.isNotEmpty(methodList)) {\r\n+                        if (methodList.size() == 1) {\r\n+                            invokeMethod = methodList.get(0);\r\n+                        } else {\r\n+                            List<Method> matchMethods = findMatchMethods(methodList, list);\r\n+                            if (CollectionUtils.isNotEmpty(matchMethods)) {\r\n+                                if (matchMethods.size() == 1) {\r\n+                                    invokeMethod = matchMethods.get(0);\r\n+                                } else { //exist overridden method\r\n+                                    channel.setAttribute(INVOKE_METHOD_PROVIDER_KEY, provider);\r\n+                                    channel.setAttribute(INVOKE_METHOD_LIST_KEY, matchMethods);\r\n+                                    channel.setAttribute(INVOKE_MESSAGE_KEY, message);\r\n+                                    printSelectMessage(buf, matchMethods);\r\n+                                    return buf.toString();\r\n+                                }\r\n+                            }\r\n+                        }\r\n+                    }\r\n+                    break;\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+\r\n+        if (!StringUtils.isEmpty(service)) {\r\n+            buf.append(\"Use default service \").append(service).append(\".\");\r\n+        }\r\n+        if (selectedProvider != null) {\r\n+            if (invokeMethod != null) {\r\n+                try {\r\n+                    Object[] array = realize(list.toArray(), invokeMethod.getParameterTypes(),\r\n+                            invokeMethod.getGenericParameterTypes());\r\n+                    long start = System.currentTimeMillis();\r\n+                    AppResponse result = new AppResponse();\r\n+                    try {\r\n+                        Object o = invokeMethod.invoke(selectedProvider.getServiceInstance(), array);\r\n+                        result.setValue(o);\r\n+                    } catch (Throwable t) {\r\n+                        result.setException(t);\r\n+                    }\r\n+                    long end = System.currentTimeMillis();\r\n+                    buf.append(\"\\r\\nresult: \");\r\n+                    buf.append(JSON.toJSONString(result.recreate()));\r\n+                    buf.append(\"\\r\\nelapsed: \");\r\n+                    buf.append(end - start);\r\n+                    buf.append(\" ms.\");\r\n+                } catch (Throwable t) {\r\n+                    return \"Failed to invoke method \" + invokeMethod.getName() + \", cause: \" + StringUtils.toString(t);\r\n+                }\r\n+            } else {\r\n+                buf.append(\"\\r\\nNo such method \").append(method).append(\" in service \").append(service);\r\n+            }\r\n+        } else {\r\n+            buf.append(\"\\r\\nNo such service \").append(service);\r\n+        }\r\n+        return buf.toString();\r\n+    }\r\n+\r\n+\r\n+    private boolean isServiceMatch(String service, ProviderModel provider) {\r\n+        return provider.getServiceKey().equalsIgnoreCase(service)\r\n+                || provider.getServiceInterfaceClass().getSimpleName().equalsIgnoreCase(service)\r\n+                || provider.getServiceInterfaceClass().getName().equalsIgnoreCase(service)\r\n+                || StringUtils.isEmpty(service);\r\n+    }\r\n+\r\n+    private List<Method> findSameSignatureMethod(Set<MethodDescriptor> methods, String lookupMethodName, List<Object> args) {\r\n+        List<Method> sameSignatureMethods = new ArrayList<>();\r\n+        for (MethodDescriptor model : methods) {\r\n+            Method method = model.getMethod();\r\n+            if (method.getName().equals(lookupMethodName) && method.getParameterTypes().length == args.size()) {\r\n+                sameSignatureMethods.add(method);\r\n+            }\r\n+        }\r\n+        return sameSignatureMethods;\r\n+    }\r\n+\r\n+    private List<Method> findMatchMethods(List<Method> methods, List<Object> args) {\r\n+        List<Method> matchMethod = new ArrayList<>();\r\n+        for (Method method : methods) {\r\n+            if (isMatch(method, args)) {\r\n+                matchMethod.add(method);\r\n+            }\r\n+        }\r\n+        return matchMethod;\r\n+    }\r\n+\r\n+    private static boolean isMatch(Method method, List<Object> args) {\r\n+        Class<?>[] types = method.getParameterTypes();\r\n+        if (types.length != args.size()) {\r\n+            return false;\r\n+        }\r\n+        for (int i = 0; i < types.length; i++) {\r\n+            Class<?> type = types[i];\r\n+            Object arg = args.get(i);\r\n+\r\n+            if (arg == null) {\r\n+                if (type.isPrimitive()) {\r\n+                    return false;\r\n+                }\r\n+\r\n+                // if the type is not primitive, we choose to believe what the invoker want is a null value\r\n+                continue;\r\n+            }\r\n+\r\n+            if (ReflectUtils.isPrimitive(arg.getClass())) {\r\n+                // allow string arg to enum type, @see PojoUtils.realize0()\r\n+                if (arg instanceof String && type.isEnum()) {\r\n+                    continue;\r\n+                }\r\n+\r\n+                if (!ReflectUtils.isPrimitive(type)) {\r\n+                    return false;\r\n+                }\r\n+\r\n+                if (!ReflectUtils.isCompatible(type, arg)) {\r\n+                    return false;\r\n+                }\r\n+            } else if (arg instanceof Map) {\r\n+                String name = (String) ((Map<?, ?>) arg).get(\"class\");\r\n+                if (StringUtils.isNotEmpty(name)) {\r\n+                    Class<?> cls = ReflectUtils.forName(name);\r\n+                    if (!type.isAssignableFrom(cls)) {\r\n+                        return false;\r\n+                    }\r\n+                } else {\r\n+                    return true;\r\n+                }\r\n+            } else if (arg instanceof Collection) {\r\n+                if (!type.isArray() && !type.isAssignableFrom(arg.getClass())) {\r\n+                    return false;\r\n+                }\r\n+            } else {\r\n+                if (!type.isAssignableFrom(arg.getClass())) {\r\n+                    return false;\r\n+                }\r\n+            }\r\n+        }\r\n+        return true;\r\n+    }\r\n+\r\n+    private void printSelectMessage(StringBuilder buf, List<Method> methods) {\r\n+        buf.append(\"Methods:\\r\\n\");\r\n+        for (int i = 0; i < methods.size(); i++) {\r\n+            Method method = methods.get(i);\r\n+            buf.append(i + 1).append(\". \").append(method.getName()).append(\"(\");\r\n+            Class<?>[] parameterTypes = method.getParameterTypes();\r\n+            for (int n = 0; n < parameterTypes.length; n++) {\r\n+                buf.append(parameterTypes[n].getSimpleName());\r\n+                if (n != parameterTypes.length - 1) {\r\n+                    buf.append(\",\");\r\n+                }\r\n+            }\r\n+            buf.append(\")\\r\\n\");\r\n+        }\r\n+        buf.append(\"Please use the select command to select the method you want to invoke. eg: select 1\");\r\n+    }\r\n+\r\n+    private boolean isInvokedSelectCommand(Channel channel) {\r\n+        if (channel.hasAttribute(SelectTelnetHandler.SELECT_KEY)) {\r\n+            channel.removeAttribute(SelectTelnetHandler.SELECT_KEY);\r\n+            return true;\r\n+        }\r\n+        return false;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/legacy/ListTelnetHandler.java", "source2": "org/apache/dubbo/qos/legacy/ListTelnetHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,166 +1,166 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.legacy;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.qos.command.util.ServiceCheckUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.telnet.TelnetHandler;\n-import org.apache.dubbo.remoting.telnet.support.Help;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-import org.apache.dubbo.rpc.model.ConsumerModel;\n-import org.apache.dubbo.rpc.model.MethodDescriptor;\n-import org.apache.dubbo.rpc.model.ProviderModel;\n-import org.apache.dubbo.rpc.model.ServiceRepository;\n-\n-import java.lang.reflect.Method;\n-import java.util.List;\n-\n-/**\n- * ListTelnetHandler handler list services and its methods details.\n- */\n-@Activate\n-@Help(parameter = \"[-l] [service]\", summary = \"List services and methods.\", detail = \"List services and methods.\")\n-public class ListTelnetHandler implements TelnetHandler {\n-\n-    private ServiceRepository serviceRepository = ApplicationModel.getServiceRepository();\n-\n-    @Override\n-    public String telnet(Channel channel, String message) {\n-        StringBuilder buf = new StringBuilder();\n-        String service = null;\n-        boolean detail = false;\n-        if (message.length() > 0) {\n-            String[] parts = message.split(\"\\\\s+\");\n-            for (String part : parts) {\n-                if (\"-l\".equals(part)) {\n-                    detail = true;\n-                } else {\n-                    if (!StringUtils.isEmpty(service)) {\n-                        return \"Invalid parameter \" + part;\n-                    }\n-                    service = part;\n-                }\n-            }\n-        } else {\n-            service = (String) channel.getAttribute(ChangeTelnetHandler.SERVICE_KEY);\n-            if (StringUtils.isNotEmpty(service)) {\n-                buf.append(\"Use default service \").append(service).append(\".\\r\\n\");\n-            }\n-        }\n-\n-        if (StringUtils.isEmpty(service)) {\n-            printAllServices(buf, detail);\n-        } else {\n-            printSpecifiedService(service, buf, detail);\n-\n-            if (buf.length() == 0) {\n-                buf.append(\"No such service: \").append(service);\n-            }\n-        }\n-        return buf.toString();\n-    }\n-\n-    private void printAllServices(StringBuilder buf, boolean detail) {\n-        printAllProvidedServices(buf, detail);\n-        printAllReferredServices(buf, detail);\n-    }\n-\n-    private void printAllProvidedServices(StringBuilder buf, boolean detail) {\n-        List<ProviderModel> providerModels = serviceRepository.getExportedServices();\n-        if (!providerModels.isEmpty()) {\n-            buf.append(\"PROVIDER:\\r\\n\");\n-        }\n-\n-        for (ProviderModel provider : providerModels) {\n-            buf.append(provider.getServiceKey());\n-            if (detail) {\n-                buf.append(\" -> \");\n-                buf.append(\" published: \");\n-                buf.append(ServiceCheckUtils.isRegistered(provider) ? \"Y\" : \"N\");\n-            }\n-            buf.append(\"\\r\\n\");\n-        }\n-    }\n-\n-    private void printAllReferredServices(StringBuilder buf, boolean detail) {\n-        List<ConsumerModel> consumerModels = serviceRepository.getReferredServices();\n-        if (!consumerModels.isEmpty()) {\n-            buf.append(\"CONSUMER:\\r\\n\");\n-        }\n-\n-        for (ConsumerModel consumer : consumerModels) {\n-            buf.append(consumer.getServiceKey());\n-            if (detail) {\n-                buf.append(\" -> \");\n-                buf.append(\" addresses: \");\n-                buf.append(ServiceCheckUtils.getConsumerAddressNum(consumer));\n-            }\n-            buf.append(\"\\r\\n\");\n-        }\n-    }\n-\n-    private void printSpecifiedService(String service, StringBuilder buf, boolean detail) {\n-        printSpecifiedProvidedService(service, buf, detail);\n-        printSpecifiedReferredService(service, buf, detail);\n-    }\n-\n-    private void printSpecifiedProvidedService(String service, StringBuilder buf, boolean detail) {\n-        for (ProviderModel provider : ApplicationModel.allProviderModels()) {\n-            if (isProviderMatched(service,provider)) {\n-                buf.append(provider.getServiceKey()).append(\" (as provider):\\r\\n\");\n-                for (MethodDescriptor method : provider.getAllMethods()) {\n-                    printMethod(method.getMethod(), buf, detail);\n-                }\n-            }\n-        }\n-    }\n-\n-    private void printSpecifiedReferredService(String service, StringBuilder buf, boolean detail) {\n-        for (ConsumerModel consumer : ApplicationModel.allConsumerModels()) {\n-            if (isConsumerMatcher(service,consumer)) {\n-                buf.append(consumer.getServiceKey()).append(\" (as consumer):\\r\\n\");\n-                for (MethodDescriptor method : consumer.getAllMethods()) {\n-                    printMethod(method.getMethod(), buf, detail);\n-                }\n-            }\n-        }\n-    }\n-\n-    private void printMethod(Method method, StringBuilder buf, boolean detail) {\n-        if (detail) {\n-            buf.append('\\t').append(ReflectUtils.getName(method));\n-        } else {\n-            buf.append('\\t').append(method.getName());\n-        }\n-        buf.append(\"\\r\\n\");\n-    }\n-\n-    private boolean isProviderMatched(String service, ProviderModel provider) {\n-        return service.equalsIgnoreCase(provider.getServiceKey())\n-                || service.equalsIgnoreCase(provider.getServiceInterfaceClass().getName())\n-                || service.equalsIgnoreCase(provider.getServiceInterfaceClass().getSimpleName());\n-    }\n-\n-    private boolean isConsumerMatcher(String service,ConsumerModel consumer) {\n-        return service.equalsIgnoreCase(consumer.getServiceKey())\n-                || service.equalsIgnoreCase(consumer.getServiceInterfaceClass().getName())\n-                || service.equalsIgnoreCase(consumer.getServiceInterfaceClass().getSimpleName());\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.legacy;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.qos.command.util.ServiceCheckUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.telnet.TelnetHandler;\r\n+import org.apache.dubbo.remoting.telnet.support.Help;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+import org.apache.dubbo.rpc.model.ConsumerModel;\r\n+import org.apache.dubbo.rpc.model.MethodDescriptor;\r\n+import org.apache.dubbo.rpc.model.ProviderModel;\r\n+import org.apache.dubbo.rpc.model.ServiceRepository;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * ListTelnetHandler handler list services and its methods details.\r\n+ */\r\n+@Activate\r\n+@Help(parameter = \"[-l] [service]\", summary = \"List services and methods.\", detail = \"List services and methods.\")\r\n+public class ListTelnetHandler implements TelnetHandler {\r\n+\r\n+    private ServiceRepository serviceRepository = ApplicationModel.getServiceRepository();\r\n+\r\n+    @Override\r\n+    public String telnet(Channel channel, String message) {\r\n+        StringBuilder buf = new StringBuilder();\r\n+        String service = null;\r\n+        boolean detail = false;\r\n+        if (message.length() > 0) {\r\n+            String[] parts = message.split(\"\\\\s+\");\r\n+            for (String part : parts) {\r\n+                if (\"-l\".equals(part)) {\r\n+                    detail = true;\r\n+                } else {\r\n+                    if (!StringUtils.isEmpty(service)) {\r\n+                        return \"Invalid parameter \" + part;\r\n+                    }\r\n+                    service = part;\r\n+                }\r\n+            }\r\n+        } else {\r\n+            service = (String) channel.getAttribute(ChangeTelnetHandler.SERVICE_KEY);\r\n+            if (StringUtils.isNotEmpty(service)) {\r\n+                buf.append(\"Use default service \").append(service).append(\".\\r\\n\");\r\n+            }\r\n+        }\r\n+\r\n+        if (StringUtils.isEmpty(service)) {\r\n+            printAllServices(buf, detail);\r\n+        } else {\r\n+            printSpecifiedService(service, buf, detail);\r\n+\r\n+            if (buf.length() == 0) {\r\n+                buf.append(\"No such service: \").append(service);\r\n+            }\r\n+        }\r\n+        return buf.toString();\r\n+    }\r\n+\r\n+    private void printAllServices(StringBuilder buf, boolean detail) {\r\n+        printAllProvidedServices(buf, detail);\r\n+        printAllReferredServices(buf, detail);\r\n+    }\r\n+\r\n+    private void printAllProvidedServices(StringBuilder buf, boolean detail) {\r\n+        List<ProviderModel> providerModels = serviceRepository.getExportedServices();\r\n+        if (!providerModels.isEmpty()) {\r\n+            buf.append(\"PROVIDER:\\r\\n\");\r\n+        }\r\n+\r\n+        for (ProviderModel provider : providerModels) {\r\n+            buf.append(provider.getServiceKey());\r\n+            if (detail) {\r\n+                buf.append(\" -> \");\r\n+                buf.append(\" published: \");\r\n+                buf.append(ServiceCheckUtils.isRegistered(provider) ? \"Y\" : \"N\");\r\n+            }\r\n+            buf.append(\"\\r\\n\");\r\n+        }\r\n+    }\r\n+\r\n+    private void printAllReferredServices(StringBuilder buf, boolean detail) {\r\n+        List<ConsumerModel> consumerModels = serviceRepository.getReferredServices();\r\n+        if (!consumerModels.isEmpty()) {\r\n+            buf.append(\"CONSUMER:\\r\\n\");\r\n+        }\r\n+\r\n+        for (ConsumerModel consumer : consumerModels) {\r\n+            buf.append(consumer.getServiceKey());\r\n+            if (detail) {\r\n+                buf.append(\" -> \");\r\n+                buf.append(\" addresses: \");\r\n+                buf.append(ServiceCheckUtils.getConsumerAddressNum(consumer));\r\n+            }\r\n+            buf.append(\"\\r\\n\");\r\n+        }\r\n+    }\r\n+\r\n+    private void printSpecifiedService(String service, StringBuilder buf, boolean detail) {\r\n+        printSpecifiedProvidedService(service, buf, detail);\r\n+        printSpecifiedReferredService(service, buf, detail);\r\n+    }\r\n+\r\n+    private void printSpecifiedProvidedService(String service, StringBuilder buf, boolean detail) {\r\n+        for (ProviderModel provider : ApplicationModel.allProviderModels()) {\r\n+            if (isProviderMatched(service,provider)) {\r\n+                buf.append(provider.getServiceKey()).append(\" (as provider):\\r\\n\");\r\n+                for (MethodDescriptor method : provider.getAllMethods()) {\r\n+                    printMethod(method.getMethod(), buf, detail);\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private void printSpecifiedReferredService(String service, StringBuilder buf, boolean detail) {\r\n+        for (ConsumerModel consumer : ApplicationModel.allConsumerModels()) {\r\n+            if (isConsumerMatcher(service,consumer)) {\r\n+                buf.append(consumer.getServiceKey()).append(\" (as consumer):\\r\\n\");\r\n+                for (MethodDescriptor method : consumer.getAllMethods()) {\r\n+                    printMethod(method.getMethod(), buf, detail);\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private void printMethod(Method method, StringBuilder buf, boolean detail) {\r\n+        if (detail) {\r\n+            buf.append('\\t').append(ReflectUtils.getName(method));\r\n+        } else {\r\n+            buf.append('\\t').append(method.getName());\r\n+        }\r\n+        buf.append(\"\\r\\n\");\r\n+    }\r\n+\r\n+    private boolean isProviderMatched(String service, ProviderModel provider) {\r\n+        return service.equalsIgnoreCase(provider.getServiceKey())\r\n+                || service.equalsIgnoreCase(provider.getServiceInterfaceClass().getName())\r\n+                || service.equalsIgnoreCase(provider.getServiceInterfaceClass().getSimpleName());\r\n+    }\r\n+\r\n+    private boolean isConsumerMatcher(String service,ConsumerModel consumer) {\r\n+        return service.equalsIgnoreCase(consumer.getServiceKey())\r\n+                || service.equalsIgnoreCase(consumer.getServiceInterfaceClass().getName())\r\n+                || service.equalsIgnoreCase(consumer.getServiceInterfaceClass().getSimpleName());\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/legacy/LogTelnetHandler.java", "source2": "org/apache/dubbo/qos/legacy/LogTelnetHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,91 +1,91 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.legacy;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.logger.Level;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.telnet.TelnetHandler;\n-import org.apache.dubbo.remoting.telnet.support.Help;\n-\n-import java.io.File;\n-import java.io.FileInputStream;\n-import java.nio.ByteBuffer;\n-import java.nio.channels.FileChannel;\n-import java.text.SimpleDateFormat;\n-import java.util.Date;\n-\n-/**\n- * LogTelnetHandler\n- */\n-@Activate\n-@Help(parameter = \"level\", summary = \"Change log level or show log \", detail = \"Change log level or show log\")\n-public class LogTelnetHandler implements TelnetHandler {\n-\n-    public static final String SERVICE_KEY = \"telnet.log\";\n-\n-    @Override\n-    public String telnet(Channel channel, String message) {\n-        long size;\n-        File file = LoggerFactory.getFile();\n-        StringBuilder buf = new StringBuilder();\n-        if (message == null || message.trim().length() == 0) {\n-            buf.append(\"EXAMPLE: log error / log 100\");\n-        } else {\n-            String[] str = message.split(\" \");\n-            if (!StringUtils.isInteger(str[0])) {\n-                LoggerFactory.setLevel(Level.valueOf(message.toUpperCase()));\n-            } else {\n-                int showLogLength = Integer.parseInt(str[0]);\n-\n-                if (file != null && file.exists()) {\n-                    try(FileInputStream fis = new FileInputStream(file)) {\n-                        FileChannel filechannel = fis.getChannel();\n-                        size = filechannel.size();\n-                        ByteBuffer bb;\n-                        if (size <= showLogLength) {\n-                            bb = ByteBuffer.allocate((int) size);\n-                            filechannel.read(bb, 0);\n-                        } else {\n-                            int pos = (int) (size - showLogLength);\n-                            bb = ByteBuffer.allocate(showLogLength);\n-                            filechannel.read(bb, pos);\n-                        }\n-                        bb.flip();\n-                        String content = new String(bb.array()).replace(\"<\", \"&lt;\")\n-                                .replace(\">\", \"&gt;\").replace(\"\\n\", \"<br/><br/>\");\n-                        buf.append(\"\\r\\ncontent:\").append(content);\n-\n-                        buf.append(\"\\r\\nmodified:\").append(new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\")\n-                                .format(new Date(file.lastModified())));\n-                        buf.append(\"\\r\\nsize:\").append(size).append(\"\\r\\n\");\n-                    } catch (Exception e) {\n-                        buf.append(e.getMessage());\n-                    }\n-                } else {\n-                    buf.append(\"\\r\\nMESSAGE: log file not exists or log appender is console .\");\n-                }\n-            }\n-        }\n-        buf.append(\"\\r\\nCURRENT LOG LEVEL:\").append(LoggerFactory.getLevel()).append(\"\\r\\nCURRENT LOG APPENDER:\")\n-                .append(file == null ? \"console\" : file.getAbsolutePath());\n-        return buf.toString();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.legacy;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.logger.Level;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.telnet.TelnetHandler;\r\n+import org.apache.dubbo.remoting.telnet.support.Help;\r\n+\r\n+import java.io.File;\r\n+import java.io.FileInputStream;\r\n+import java.nio.ByteBuffer;\r\n+import java.nio.channels.FileChannel;\r\n+import java.text.SimpleDateFormat;\r\n+import java.util.Date;\r\n+\r\n+/**\r\n+ * LogTelnetHandler\r\n+ */\r\n+@Activate\r\n+@Help(parameter = \"level\", summary = \"Change log level or show log \", detail = \"Change log level or show log\")\r\n+public class LogTelnetHandler implements TelnetHandler {\r\n+\r\n+    public static final String SERVICE_KEY = \"telnet.log\";\r\n+\r\n+    @Override\r\n+    public String telnet(Channel channel, String message) {\r\n+        long size;\r\n+        File file = LoggerFactory.getFile();\r\n+        StringBuilder buf = new StringBuilder();\r\n+        if (message == null || message.trim().length() == 0) {\r\n+            buf.append(\"EXAMPLE: log error / log 100\");\r\n+        } else {\r\n+            String[] str = message.split(\" \");\r\n+            if (!StringUtils.isInteger(str[0])) {\r\n+                LoggerFactory.setLevel(Level.valueOf(message.toUpperCase()));\r\n+            } else {\r\n+                int showLogLength = Integer.parseInt(str[0]);\r\n+\r\n+                if (file != null && file.exists()) {\r\n+                    try(FileInputStream fis = new FileInputStream(file)) {\r\n+                        FileChannel filechannel = fis.getChannel();\r\n+                        size = filechannel.size();\r\n+                        ByteBuffer bb;\r\n+                        if (size <= showLogLength) {\r\n+                            bb = ByteBuffer.allocate((int) size);\r\n+                            filechannel.read(bb, 0);\r\n+                        } else {\r\n+                            int pos = (int) (size - showLogLength);\r\n+                            bb = ByteBuffer.allocate(showLogLength);\r\n+                            filechannel.read(bb, pos);\r\n+                        }\r\n+                        bb.flip();\r\n+                        String content = new String(bb.array()).replace(\"<\", \"&lt;\")\r\n+                                .replace(\">\", \"&gt;\").replace(\"\\n\", \"<br/><br/>\");\r\n+                        buf.append(\"\\r\\ncontent:\").append(content);\r\n+\r\n+                        buf.append(\"\\r\\nmodified:\").append(new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\")\r\n+                                .format(new Date(file.lastModified())));\r\n+                        buf.append(\"\\r\\nsize:\").append(size).append(\"\\r\\n\");\r\n+                    } catch (Exception e) {\r\n+                        buf.append(e.getMessage());\r\n+                    }\r\n+                } else {\r\n+                    buf.append(\"\\r\\nMESSAGE: log file not exists or log appender is console .\");\r\n+                }\r\n+            }\r\n+        }\r\n+        buf.append(\"\\r\\nCURRENT LOG LEVEL:\").append(LoggerFactory.getLevel()).append(\"\\r\\nCURRENT LOG APPENDER:\")\r\n+                .append(file == null ? \"console\" : file.getAbsolutePath());\r\n+        return buf.toString();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/legacy/PortTelnetHandler.java", "source2": "org/apache/dubbo/qos/legacy/PortTelnetHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,96 +1,96 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.legacy;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.exchange.ExchangeChannel;\n-import org.apache.dubbo.remoting.exchange.ExchangeServer;\n-import org.apache.dubbo.remoting.telnet.TelnetHandler;\n-import org.apache.dubbo.remoting.telnet.support.Help;\n-import org.apache.dubbo.rpc.ProtocolServer;\n-import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;\n-\n-import java.util.Collection;\n-\n-/**\n- * ServerTelnetHandler\n- */\n-@Activate\n-@Help(parameter = \"[-l] [port]\", summary = \"Print server ports and connections.\", detail = \"Print server ports and connections.\")\n-public class PortTelnetHandler implements TelnetHandler {\n-\n-    @Override\n-    public String telnet(Channel channel, String message) {\n-        StringBuilder buf = new StringBuilder();\n-        String port = null;\n-        boolean detail = false;\n-        if (message.length() > 0) {\n-            String[] parts = message.split(\"\\\\s+\");\n-            for (String part : parts) {\n-                if (\"-l\".equals(part)) {\n-                    detail = true;\n-                } else {\n-                    if (!StringUtils.isInteger(part)) {\n-                        return \"Illegal port \" + part + \", must be integer.\";\n-                    }\n-                    port = part;\n-                }\n-            }\n-        }\n-        if (port == null || port.length() == 0) {\n-            for (ProtocolServer server : DubboProtocol.getDubboProtocol().getServers()) {\n-                if (buf.length() > 0) {\n-                    buf.append(\"\\r\\n\");\n-                }\n-                if (detail) {\n-                    buf.append(server.getUrl().getProtocol()).append(\"://\").append(server.getUrl().getAddress());\n-                } else {\n-                    buf.append(server.getUrl().getPort());\n-                }\n-            }\n-        } else {\n-            int p = Integer.parseInt(port);\n-            ProtocolServer protocolServer = null;\n-            for (ProtocolServer s : DubboProtocol.getDubboProtocol().getServers()) {\n-                if (p == s.getUrl().getPort()) {\n-                    protocolServer = s;\n-                    break;\n-                }\n-            }\n-            if (protocolServer != null) {\n-                ExchangeServer server = (ExchangeServer) protocolServer.getRemotingServer();\n-                Collection<ExchangeChannel> channels = server.getExchangeChannels();\n-                for (ExchangeChannel c : channels) {\n-                    if (buf.length() > 0) {\n-                        buf.append(\"\\r\\n\");\n-                    }\n-                    if (detail) {\n-                        buf.append(c.getRemoteAddress()).append(\" -> \").append(c.getLocalAddress());\n-                    } else {\n-                        buf.append(c.getRemoteAddress());\n-                    }\n-                }\n-            } else {\n-                buf.append(\"No such port \").append(port);\n-            }\n-        }\n-        return buf.toString();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.legacy;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.exchange.ExchangeChannel;\r\n+import org.apache.dubbo.remoting.exchange.ExchangeServer;\r\n+import org.apache.dubbo.remoting.telnet.TelnetHandler;\r\n+import org.apache.dubbo.remoting.telnet.support.Help;\r\n+import org.apache.dubbo.rpc.ProtocolServer;\r\n+import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;\r\n+\r\n+import java.util.Collection;\r\n+\r\n+/**\r\n+ * ServerTelnetHandler\r\n+ */\r\n+@Activate\r\n+@Help(parameter = \"[-l] [port]\", summary = \"Print server ports and connections.\", detail = \"Print server ports and connections.\")\r\n+public class PortTelnetHandler implements TelnetHandler {\r\n+\r\n+    @Override\r\n+    public String telnet(Channel channel, String message) {\r\n+        StringBuilder buf = new StringBuilder();\r\n+        String port = null;\r\n+        boolean detail = false;\r\n+        if (message.length() > 0) {\r\n+            String[] parts = message.split(\"\\\\s+\");\r\n+            for (String part : parts) {\r\n+                if (\"-l\".equals(part)) {\r\n+                    detail = true;\r\n+                } else {\r\n+                    if (!StringUtils.isInteger(part)) {\r\n+                        return \"Illegal port \" + part + \", must be integer.\";\r\n+                    }\r\n+                    port = part;\r\n+                }\r\n+            }\r\n+        }\r\n+        if (port == null || port.length() == 0) {\r\n+            for (ProtocolServer server : DubboProtocol.getDubboProtocol().getServers()) {\r\n+                if (buf.length() > 0) {\r\n+                    buf.append(\"\\r\\n\");\r\n+                }\r\n+                if (detail) {\r\n+                    buf.append(server.getUrl().getProtocol()).append(\"://\").append(server.getUrl().getAddress());\r\n+                } else {\r\n+                    buf.append(server.getUrl().getPort());\r\n+                }\r\n+            }\r\n+        } else {\r\n+            int p = Integer.parseInt(port);\r\n+            ProtocolServer protocolServer = null;\r\n+            for (ProtocolServer s : DubboProtocol.getDubboProtocol().getServers()) {\r\n+                if (p == s.getUrl().getPort()) {\r\n+                    protocolServer = s;\r\n+                    break;\r\n+                }\r\n+            }\r\n+            if (protocolServer != null) {\r\n+                ExchangeServer server = (ExchangeServer) protocolServer.getRemotingServer();\r\n+                Collection<ExchangeChannel> channels = server.getExchangeChannels();\r\n+                for (ExchangeChannel c : channels) {\r\n+                    if (buf.length() > 0) {\r\n+                        buf.append(\"\\r\\n\");\r\n+                    }\r\n+                    if (detail) {\r\n+                        buf.append(c.getRemoteAddress()).append(\" -> \").append(c.getLocalAddress());\r\n+                    } else {\r\n+                        buf.append(c.getRemoteAddress());\r\n+                    }\r\n+                }\r\n+            } else {\r\n+                buf.append(\"No such port \").append(port);\r\n+            }\r\n+        }\r\n+        return buf.toString();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/legacy/SelectTelnetHandler.java", "source2": "org/apache/dubbo/qos/legacy/SelectTelnetHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,60 +1,60 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.legacy;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.telnet.TelnetHandler;\n-import org.apache.dubbo.remoting.telnet.support.Help;\n-\n-import java.lang.reflect.Method;\n-import java.util.List;\n-\n-/**\n- * SelectTelnetHandler\n- */\n-@Activate\n-@Help(parameter = \"[index]\", summary = \"Select the index of the method you want to invoke.\",\n-        detail = \"Select the index of the method you want to invoke.\")\n-public class SelectTelnetHandler implements TelnetHandler {\n-    public static final String SELECT_METHOD_KEY = \"telnet.select.method\";\n-    public static final String SELECT_KEY = \"telnet.select\";\n-\n-    private InvokeTelnetHandler invokeTelnetHandler = new InvokeTelnetHandler();\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public String telnet(Channel channel, String message) {\n-        if (message == null || message.length() == 0) {\n-            return \"Please input the index of the method you want to invoke, eg: \\r\\n select 1\";\n-        }\n-        List<Method> methodList = (List<Method>) channel.getAttribute(InvokeTelnetHandler.INVOKE_METHOD_LIST_KEY);\n-        if (CollectionUtils.isEmpty(methodList)) {\n-            return \"Please use the invoke command first.\";\n-        }\n-        if (!StringUtils.isInteger(message) || Integer.parseInt(message) < 1 || Integer.parseInt(message) > methodList.size()) {\n-            return \"Illegal index ,please input select 1~\" + methodList.size();\n-        }\n-        Method method = methodList.get(Integer.parseInt(message) - 1);\n-        channel.setAttribute(SELECT_METHOD_KEY, method);\n-        channel.setAttribute(SELECT_KEY, Boolean.TRUE);\n-        String invokeMessage = (String) channel.getAttribute(InvokeTelnetHandler.INVOKE_MESSAGE_KEY);\n-        return invokeTelnetHandler.telnet(channel, invokeMessage);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.legacy;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.telnet.TelnetHandler;\r\n+import org.apache.dubbo.remoting.telnet.support.Help;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * SelectTelnetHandler\r\n+ */\r\n+@Activate\r\n+@Help(parameter = \"[index]\", summary = \"Select the index of the method you want to invoke.\",\r\n+        detail = \"Select the index of the method you want to invoke.\")\r\n+public class SelectTelnetHandler implements TelnetHandler {\r\n+    public static final String SELECT_METHOD_KEY = \"telnet.select.method\";\r\n+    public static final String SELECT_KEY = \"telnet.select\";\r\n+\r\n+    private InvokeTelnetHandler invokeTelnetHandler = new InvokeTelnetHandler();\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public String telnet(Channel channel, String message) {\r\n+        if (message == null || message.length() == 0) {\r\n+            return \"Please input the index of the method you want to invoke, eg: \\r\\n select 1\";\r\n+        }\r\n+        List<Method> methodList = (List<Method>) channel.getAttribute(InvokeTelnetHandler.INVOKE_METHOD_LIST_KEY);\r\n+        if (CollectionUtils.isEmpty(methodList)) {\r\n+            return \"Please use the invoke command first.\";\r\n+        }\r\n+        if (!StringUtils.isInteger(message) || Integer.parseInt(message) < 1 || Integer.parseInt(message) > methodList.size()) {\r\n+            return \"Illegal index ,please input select 1~\" + methodList.size();\r\n+        }\r\n+        Method method = methodList.get(Integer.parseInt(message) - 1);\r\n+        channel.setAttribute(SELECT_METHOD_KEY, method);\r\n+        channel.setAttribute(SELECT_KEY, Boolean.TRUE);\r\n+        String invokeMessage = (String) channel.getAttribute(InvokeTelnetHandler.INVOKE_MESSAGE_KEY);\r\n+        return invokeTelnetHandler.telnet(channel, invokeMessage);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/legacy/ShutdownTelnetHandler.java", "source2": "org/apache/dubbo/qos/legacy/ShutdownTelnetHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,63 +1,63 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.legacy;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.config.DubboShutdownHook;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.RemotingException;\n-import org.apache.dubbo.remoting.telnet.TelnetHandler;\n-import org.apache.dubbo.remoting.telnet.support.Help;\n-\n-/**\n- * ShutdownTelnetHandler\n- */\n-@Activate\n-@Help(parameter = \"[-t <milliseconds>]\", summary = \"Shutdown Dubbo Application.\", detail = \"Shutdown Dubbo Application.\")\n-public class ShutdownTelnetHandler implements TelnetHandler {\n-    @Override\n-    public String telnet(Channel channel, String message) throws RemotingException {\n-\n-        int sleepMilliseconds = 0;\n-        if (StringUtils.isNotEmpty(message)) {\n-            String[] parameters = message.split(\"\\\\s+\");\n-            if (parameters.length == 2 && \"-t\".equals(parameters[0]) && StringUtils.isInteger(parameters[1])) {\n-                sleepMilliseconds = Integer.parseInt(parameters[1]);\n-            } else {\n-                return \"Invalid parameter,please input like shutdown -t 10000\";\n-            }\n-        }\n-        long start = System.currentTimeMillis();\n-        if (sleepMilliseconds > 0) {\n-            try {\n-                Thread.sleep(sleepMilliseconds);\n-            } catch (InterruptedException e) {\n-                return \"Failed to invoke shutdown command, cause: \" + e.getMessage();\n-            }\n-        }\n-        StringBuilder buf = new StringBuilder();\n-        DubboShutdownHook.getDubboShutdownHook().unregister();\n-        DubboShutdownHook.getDubboShutdownHook().doDestroy();\n-        long end = System.currentTimeMillis();\n-        buf.append(\"Application has shutdown successfully\");\n-        buf.append(\"\\r\\nelapsed: \");\n-        buf.append(end - start);\n-        buf.append(\" ms.\");\n-        return buf.toString();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.legacy;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.config.DubboShutdownHook;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.RemotingException;\r\n+import org.apache.dubbo.remoting.telnet.TelnetHandler;\r\n+import org.apache.dubbo.remoting.telnet.support.Help;\r\n+\r\n+/**\r\n+ * ShutdownTelnetHandler\r\n+ */\r\n+@Activate\r\n+@Help(parameter = \"[-t <milliseconds>]\", summary = \"Shutdown Dubbo Application.\", detail = \"Shutdown Dubbo Application.\")\r\n+public class ShutdownTelnetHandler implements TelnetHandler {\r\n+    @Override\r\n+    public String telnet(Channel channel, String message) throws RemotingException {\r\n+\r\n+        int sleepMilliseconds = 0;\r\n+        if (StringUtils.isNotEmpty(message)) {\r\n+            String[] parameters = message.split(\"\\\\s+\");\r\n+            if (parameters.length == 2 && \"-t\".equals(parameters[0]) && StringUtils.isInteger(parameters[1])) {\r\n+                sleepMilliseconds = Integer.parseInt(parameters[1]);\r\n+            } else {\r\n+                return \"Invalid parameter,please input like shutdown -t 10000\";\r\n+            }\r\n+        }\r\n+        long start = System.currentTimeMillis();\r\n+        if (sleepMilliseconds > 0) {\r\n+            try {\r\n+                Thread.sleep(sleepMilliseconds);\r\n+            } catch (InterruptedException e) {\r\n+                return \"Failed to invoke shutdown command, cause: \" + e.getMessage();\r\n+            }\r\n+        }\r\n+        StringBuilder buf = new StringBuilder();\r\n+        DubboShutdownHook.getDubboShutdownHook().unregister();\r\n+        DubboShutdownHook.getDubboShutdownHook().doDestroy();\r\n+        long end = System.currentTimeMillis();\r\n+        buf.append(\"Application has shutdown successfully\");\r\n+        buf.append(\"\\r\\nelapsed: \");\r\n+        buf.append(end - start);\r\n+        buf.append(\" ms.\");\r\n+        return buf.toString();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/legacy/TraceTelnetHandler.java", "source2": "org/apache/dubbo/qos/legacy/TraceTelnetHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,93 +1,93 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.legacy;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.Channel;\n-import org.apache.dubbo.remoting.telnet.TelnetHandler;\n-import org.apache.dubbo.remoting.telnet.support.Help;\n-import org.apache.dubbo.rpc.Exporter;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;\n-import org.apache.dubbo.rpc.protocol.dubbo.filter.TraceFilter;\n-\n-import java.lang.reflect.Method;\n-\n-/**\n- * TraceTelnetHandler\n- */\n-@Activate\n-@Help(parameter = \"[service] [method] [times]\", summary = \"Trace the service.\", detail = \"Trace the service.\")\n-public class TraceTelnetHandler implements TelnetHandler {\n-\n-    @Override\n-    public String telnet(Channel channel, String message) {\n-        String service = (String) channel.getAttribute(ChangeTelnetHandler.SERVICE_KEY);\n-        if ((service == null || service.length() == 0)\n-                && (message == null || message.length() == 0)) {\n-            return \"Please input service name, eg: \\r\\ntrace XxxService\\r\\ntrace XxxService xxxMethod\\r\\ntrace XxxService xxxMethod 10\\r\\nor \\\"cd XxxService\\\" firstly.\";\n-        }\n-        String[] parts = message.split(\"\\\\s+\");\n-        String method;\n-        String times;\n-        // message like : XxxService , XxxService 10 , XxxService xxxMethod , XxxService xxxMethod 10\n-        if (StringUtils.isEmpty(service)) {\n-            service = parts.length > 0 ? parts[0] : null;\n-            method = parts.length > 1 ? parts[1] : null;\n-            times = parts.length > 2 ? parts[2] : \"1\";\n-        } else {  //message like : xxxMethod, xxxMethod 10\n-            method = parts.length > 0 ? parts[0] : null;\n-            times = parts.length > 1 ? parts[1] : \"1\";\n-        }\n-        if (StringUtils.isInteger(method)) {\n-            times = method;\n-            method = null;\n-        }\n-        if (!StringUtils.isInteger(times)) {\n-            return \"Illegal times \" + times + \", must be integer.\";\n-        }\n-        Invoker<?> invoker = null;\n-        for (Exporter<?> exporter : DubboProtocol.getDubboProtocol().getExporters()) {\n-            if (service.equals(exporter.getInvoker().getInterface().getSimpleName())\n-                    || service.equals(exporter.getInvoker().getInterface().getName())\n-                    || service.equals(exporter.getInvoker().getUrl().getPath())) {\n-                invoker = exporter.getInvoker();\n-                break;\n-            }\n-        }\n-        if (invoker != null) {\n-            if (method != null && method.length() > 0) {\n-                boolean found = false;\n-                for (Method m : invoker.getInterface().getMethods()) {\n-                    if (m.getName().equals(method)) {\n-                        found = true;\n-                        break;\n-                    }\n-                }\n-                if (!found) {\n-                    return \"No such method \" + method + \" in class \" + invoker.getInterface().getName();\n-                }\n-            }\n-            TraceFilter.addTracer(invoker.getInterface(), method, channel, Integer.parseInt(times));\n-        } else {\n-            return \"No such service \" + service;\n-        }\n-        return null;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.legacy;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.Channel;\r\n+import org.apache.dubbo.remoting.telnet.TelnetHandler;\r\n+import org.apache.dubbo.remoting.telnet.support.Help;\r\n+import org.apache.dubbo.rpc.Exporter;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;\r\n+import org.apache.dubbo.rpc.protocol.dubbo.filter.TraceFilter;\r\n+\r\n+import java.lang.reflect.Method;\r\n+\r\n+/**\r\n+ * TraceTelnetHandler\r\n+ */\r\n+@Activate\r\n+@Help(parameter = \"[service] [method] [times]\", summary = \"Trace the service.\", detail = \"Trace the service.\")\r\n+public class TraceTelnetHandler implements TelnetHandler {\r\n+\r\n+    @Override\r\n+    public String telnet(Channel channel, String message) {\r\n+        String service = (String) channel.getAttribute(ChangeTelnetHandler.SERVICE_KEY);\r\n+        if ((service == null || service.length() == 0)\r\n+                && (message == null || message.length() == 0)) {\r\n+            return \"Please input service name, eg: \\r\\ntrace XxxService\\r\\ntrace XxxService xxxMethod\\r\\ntrace XxxService xxxMethod 10\\r\\nor \\\"cd XxxService\\\" firstly.\";\r\n+        }\r\n+        String[] parts = message.split(\"\\\\s+\");\r\n+        String method;\r\n+        String times;\r\n+        // message like : XxxService , XxxService 10 , XxxService xxxMethod , XxxService xxxMethod 10\r\n+        if (StringUtils.isEmpty(service)) {\r\n+            service = parts.length > 0 ? parts[0] : null;\r\n+            method = parts.length > 1 ? parts[1] : null;\r\n+            times = parts.length > 2 ? parts[2] : \"1\";\r\n+        } else {  //message like : xxxMethod, xxxMethod 10\r\n+            method = parts.length > 0 ? parts[0] : null;\r\n+            times = parts.length > 1 ? parts[1] : \"1\";\r\n+        }\r\n+        if (StringUtils.isInteger(method)) {\r\n+            times = method;\r\n+            method = null;\r\n+        }\r\n+        if (!StringUtils.isInteger(times)) {\r\n+            return \"Illegal times \" + times + \", must be integer.\";\r\n+        }\r\n+        Invoker<?> invoker = null;\r\n+        for (Exporter<?> exporter : DubboProtocol.getDubboProtocol().getExporters()) {\r\n+            if (service.equals(exporter.getInvoker().getInterface().getSimpleName())\r\n+                    || service.equals(exporter.getInvoker().getInterface().getName())\r\n+                    || service.equals(exporter.getInvoker().getUrl().getPath())) {\r\n+                invoker = exporter.getInvoker();\r\n+                break;\r\n+            }\r\n+        }\r\n+        if (invoker != null) {\r\n+            if (method != null && method.length() > 0) {\r\n+                boolean found = false;\r\n+                for (Method m : invoker.getInterface().getMethods()) {\r\n+                    if (m.getName().equals(method)) {\r\n+                        found = true;\r\n+                        break;\r\n+                    }\r\n+                }\r\n+                if (!found) {\r\n+                    return \"No such method \" + method + \" in class \" + invoker.getInterface().getName();\r\n+                }\r\n+            }\r\n+            TraceFilter.addTracer(invoker.getInterface(), method, channel, Integer.parseInt(times));\r\n+        } else {\r\n+            return \"No such service \" + service;\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/protocol/QosProtocolWrapper.java", "source2": "org/apache/dubbo/qos/protocol/QosProtocolWrapper.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,123 +1,123 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.protocol;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.UrlUtils;\n-import org.apache.dubbo.qos.common.QosConstants;\n-import org.apache.dubbo.qos.server.Server;\n-import org.apache.dubbo.rpc.Exporter;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.Protocol;\n-import org.apache.dubbo.rpc.ProtocolServer;\n-import org.apache.dubbo.rpc.RpcException;\n-\n-import java.util.List;\n-import java.util.concurrent.atomic.AtomicBoolean;\n-\n-import static org.apache.dubbo.common.constants.QosConstants.ACCEPT_FOREIGN_IP;\n-import static org.apache.dubbo.common.constants.QosConstants.QOS_ENABLE;\n-import static org.apache.dubbo.common.constants.QosConstants.QOS_HOST;\n-import static org.apache.dubbo.common.constants.QosConstants.QOS_PORT;\n-\n-\n-public class QosProtocolWrapper implements Protocol {\n-\n-    private final Logger logger = LoggerFactory.getLogger(QosProtocolWrapper.class);\n-\n-    private static AtomicBoolean hasStarted = new AtomicBoolean(false);\n-\n-    private Protocol protocol;\n-\n-    public QosProtocolWrapper(Protocol protocol) {\n-        if (protocol == null) {\n-            throw new IllegalArgumentException(\"protocol == null\");\n-        }\n-        this.protocol = protocol;\n-    }\n-\n-    @Override\n-    public int getDefaultPort() {\n-        return protocol.getDefaultPort();\n-    }\n-\n-    @Override\n-    public <T> Exporter<T> export(Invoker<T> invoker) throws RpcException {\n-        if (UrlUtils.isRegistry(invoker.getUrl())) {\n-            startQosServer(invoker.getUrl());\n-            return protocol.export(invoker);\n-        }\n-        return protocol.export(invoker);\n-    }\n-\n-    @Override\n-    public <T> Invoker<T> refer(Class<T> type, URL url) throws RpcException {\n-        if (UrlUtils.isRegistry(url)) {\n-            startQosServer(url);\n-            return protocol.refer(type, url);\n-        }\n-        return protocol.refer(type, url);\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        protocol.destroy();\n-        stopServer();\n-    }\n-\n-    @Override\n-    public List<ProtocolServer> getServers() {\n-        return protocol.getServers();\n-    }\n-\n-    private void startQosServer(URL url) {\n-        try {\n-            if (!hasStarted.compareAndSet(false, true)) {\n-                return;\n-            }\n-\n-            boolean qosEnable = url.getParameter(QOS_ENABLE, true);\n-            if (!qosEnable) {\n-                logger.info(\"qos won't be started because it is disabled. \" +\n-                        \"Please check dubbo.application.qos.enable is configured either in system property, \" +\n-                        \"dubbo.properties or XML/spring-boot configuration.\");\n-                return;\n-            }\n-\n-            String host = url.getParameter(QOS_HOST);\n-            int port = url.getParameter(QOS_PORT, QosConstants.DEFAULT_PORT);\n-            boolean acceptForeignIp = Boolean.parseBoolean(url.getParameter(ACCEPT_FOREIGN_IP, \"false\"));\n-            Server server = Server.getInstance();\n-            server.setHost(host);\n-            server.setPort(port);\n-            server.setAcceptForeignIp(acceptForeignIp);\n-            server.start();\n-\n-        } catch (Throwable throwable) {\n-            logger.warn(\"Fail to start qos server: \", throwable);\n-        }\n-    }\n-\n-    /*package*/ void stopServer() {\n-        if (hasStarted.compareAndSet(true, false)) {\n-            Server server = Server.getInstance();\n-            server.stop();\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.protocol;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.UrlUtils;\r\n+import org.apache.dubbo.qos.common.QosConstants;\r\n+import org.apache.dubbo.qos.server.Server;\r\n+import org.apache.dubbo.rpc.Exporter;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.Protocol;\r\n+import org.apache.dubbo.rpc.ProtocolServer;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+\r\n+import java.util.List;\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+\r\n+import static org.apache.dubbo.common.constants.QosConstants.ACCEPT_FOREIGN_IP;\r\n+import static org.apache.dubbo.common.constants.QosConstants.QOS_ENABLE;\r\n+import static org.apache.dubbo.common.constants.QosConstants.QOS_HOST;\r\n+import static org.apache.dubbo.common.constants.QosConstants.QOS_PORT;\r\n+\r\n+\r\n+public class QosProtocolWrapper implements Protocol {\r\n+\r\n+    private final Logger logger = LoggerFactory.getLogger(QosProtocolWrapper.class);\r\n+\r\n+    private static AtomicBoolean hasStarted = new AtomicBoolean(false);\r\n+\r\n+    private Protocol protocol;\r\n+\r\n+    public QosProtocolWrapper(Protocol protocol) {\r\n+        if (protocol == null) {\r\n+            throw new IllegalArgumentException(\"protocol == null\");\r\n+        }\r\n+        this.protocol = protocol;\r\n+    }\r\n+\r\n+    @Override\r\n+    public int getDefaultPort() {\r\n+        return protocol.getDefaultPort();\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> Exporter<T> export(Invoker<T> invoker) throws RpcException {\r\n+        if (UrlUtils.isRegistry(invoker.getUrl())) {\r\n+            startQosServer(invoker.getUrl());\r\n+            return protocol.export(invoker);\r\n+        }\r\n+        return protocol.export(invoker);\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> Invoker<T> refer(Class<T> type, URL url) throws RpcException {\r\n+        if (UrlUtils.isRegistry(url)) {\r\n+            startQosServer(url);\r\n+            return protocol.refer(type, url);\r\n+        }\r\n+        return protocol.refer(type, url);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        protocol.destroy();\r\n+        stopServer();\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<ProtocolServer> getServers() {\r\n+        return protocol.getServers();\r\n+    }\r\n+\r\n+    private void startQosServer(URL url) {\r\n+        try {\r\n+            if (!hasStarted.compareAndSet(false, true)) {\r\n+                return;\r\n+            }\r\n+\r\n+            boolean qosEnable = url.getParameter(QOS_ENABLE, true);\r\n+            if (!qosEnable) {\r\n+                logger.info(\"qos won't be started because it is disabled. \" +\r\n+                        \"Please check dubbo.application.qos.enable is configured either in system property, \" +\r\n+                        \"dubbo.properties or XML/spring-boot configuration.\");\r\n+                return;\r\n+            }\r\n+\r\n+            String host = url.getParameter(QOS_HOST);\r\n+            int port = url.getParameter(QOS_PORT, QosConstants.DEFAULT_PORT);\r\n+            boolean acceptForeignIp = Boolean.parseBoolean(url.getParameter(ACCEPT_FOREIGN_IP, \"false\"));\r\n+            Server server = Server.getInstance();\r\n+            server.setHost(host);\r\n+            server.setPort(port);\r\n+            server.setAcceptForeignIp(acceptForeignIp);\r\n+            server.start();\r\n+\r\n+        } catch (Throwable throwable) {\r\n+            logger.warn(\"Fail to start qos server: \", throwable);\r\n+        }\r\n+    }\r\n+\r\n+    /*package*/ void stopServer() {\r\n+        if (hasStarted.compareAndSet(true, false)) {\r\n+            Server server = Server.getInstance();\r\n+            server.stop();\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/server/DubboLogo.java", "source2": "org/apache/dubbo/qos/server/DubboLogo.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,25 +1,25 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.server;\n-\n-public class DubboLogo {\n-    public static final String DUBBO =\n-                    \"   ___   __  __ ___   ___   ____     \" + System.lineSeparator() +\n-                    \"  / _ \\\\ / / / // _ ) / _ ) / __ \\\\  \" + System.lineSeparator() +\n-                    \" / // // /_/ // _  |/ _  |/ /_/ /    \" + System.lineSeparator() +\n-                    \"/____/ \\\\____//____//____/ \\\\____/   \" + System.lineSeparator();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.server;\r\n+\r\n+public class DubboLogo {\r\n+    public static final String DUBBO =\r\n+                    \"   ___   __  __ ___   ___   ____     \" + System.lineSeparator() +\r\n+                    \"  / _ \\\\ / / / // _ ) / _ ) / __ \\\\  \" + System.lineSeparator() +\r\n+                    \" / // // /_/ // _  |/ _  |/ /_/ /    \" + System.lineSeparator() +\r\n+                    \"/____/ \\\\____//____//____/ \\\\____/   \" + System.lineSeparator();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/server/Server.java", "source2": "org/apache/dubbo/qos/server/Server.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,156 +1,156 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.server;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.qos.server.handler.QosProcessHandler;\n-\n-import io.netty.bootstrap.ServerBootstrap;\n-import io.netty.channel.Channel;\n-import io.netty.channel.ChannelInitializer;\n-import io.netty.channel.ChannelOption;\n-import io.netty.channel.EventLoopGroup;\n-import io.netty.channel.nio.NioEventLoopGroup;\n-import io.netty.channel.socket.nio.NioServerSocketChannel;\n-import io.netty.util.concurrent.DefaultThreadFactory;\n-\n-import java.util.concurrent.atomic.AtomicBoolean;\n-\n-/**\n- * A server serves for both telnet access and http access\n- * <ul>\n- * <li>static initialize server</li>\n- * <li>start server and bind port</li>\n- * <li>close server</li>\n- * </ul>\n- */\n-public class Server {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(Server.class);\n-    private static final Server INSTANCE = new Server();\n-\n-    public static final Server getInstance() {\n-        return INSTANCE;\n-    }\n-\n-    private String host;\n-\n-    private int port;\n-\n-    private boolean acceptForeignIp = true;\n-\n-    private EventLoopGroup boss;\n-\n-    private EventLoopGroup worker;\n-\n-    private Server() {\n-        this.welcome = DubboLogo.DUBBO;\n-    }\n-\n-    private String welcome;\n-\n-    private AtomicBoolean started = new AtomicBoolean();\n-\n-    /**\n-     * welcome message\n-     */\n-    public void setWelcome(String welcome) {\n-        this.welcome = welcome;\n-    }\n-\n-    public int getPort() {\n-        return port;\n-    }\n-\n-    /**\n-     * start server, bind port\n-     */\n-    public void start() throws Throwable {\n-        if (!started.compareAndSet(false, true)) {\n-            return;\n-        }\n-        boss = new NioEventLoopGroup(1, new DefaultThreadFactory(\"qos-boss\", true));\n-        worker = new NioEventLoopGroup(0, new DefaultThreadFactory(\"qos-worker\", true));\n-        ServerBootstrap serverBootstrap = new ServerBootstrap();\n-        serverBootstrap.group(boss, worker);\n-        serverBootstrap.channel(NioServerSocketChannel.class);\n-        serverBootstrap.option(ChannelOption.SO_REUSEADDR, true);\n-        serverBootstrap.childOption(ChannelOption.TCP_NODELAY, true);\n-        serverBootstrap.childHandler(new ChannelInitializer<Channel>() {\n-\n-            @Override\n-            protected void initChannel(Channel ch) throws Exception {\n-                ch.pipeline().addLast(new QosProcessHandler(welcome, acceptForeignIp));\n-            }\n-        });\n-        try {\n-            if (StringUtils.isBlank(host)) {\n-                serverBootstrap.bind(port).sync();\n-            } else {\n-                serverBootstrap.bind(host, port).sync();\n-            }\n-\n-            logger.info(\"qos-server bind localhost:\" + port);\n-        } catch (Throwable throwable) {\n-            logger.error(\"qos-server can not bind localhost:\" + port, throwable);\n-            throw throwable;\n-        }\n-    }\n-\n-    /**\n-     * close server\n-     */\n-    public void stop() {\n-        logger.info(\"qos-server stopped.\");\n-        if (boss != null) {\n-            boss.shutdownGracefully();\n-        }\n-        if (worker != null) {\n-            worker.shutdownGracefully();\n-        }\n-    }\n-\n-    public String getHost() {\n-        return host;\n-    }\n-\n-    public void setHost(String host) {\n-        this.host = host;\n-    }\n-\n-    public void setPort(int port) {\n-        this.port = port;\n-    }\n-\n-    public boolean isAcceptForeignIp() {\n-        return acceptForeignIp;\n-    }\n-\n-    public void setAcceptForeignIp(boolean acceptForeignIp) {\n-        this.acceptForeignIp = acceptForeignIp;\n-    }\n-\n-    public String getWelcome() {\n-        return welcome;\n-    }\n-\n-    public boolean isStarted() {\n-        return started.get();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.server;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.qos.server.handler.QosProcessHandler;\r\n+\r\n+import io.netty.bootstrap.ServerBootstrap;\r\n+import io.netty.channel.Channel;\r\n+import io.netty.channel.ChannelInitializer;\r\n+import io.netty.channel.ChannelOption;\r\n+import io.netty.channel.EventLoopGroup;\r\n+import io.netty.channel.nio.NioEventLoopGroup;\r\n+import io.netty.channel.socket.nio.NioServerSocketChannel;\r\n+import io.netty.util.concurrent.DefaultThreadFactory;\r\n+\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+\r\n+/**\r\n+ * A server serves for both telnet access and http access\r\n+ * <ul>\r\n+ * <li>static initialize server</li>\r\n+ * <li>start server and bind port</li>\r\n+ * <li>close server</li>\r\n+ * </ul>\r\n+ */\r\n+public class Server {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(Server.class);\r\n+    private static final Server INSTANCE = new Server();\r\n+\r\n+    public static final Server getInstance() {\r\n+        return INSTANCE;\r\n+    }\r\n+\r\n+    private String host;\r\n+\r\n+    private int port;\r\n+\r\n+    private boolean acceptForeignIp = true;\r\n+\r\n+    private EventLoopGroup boss;\r\n+\r\n+    private EventLoopGroup worker;\r\n+\r\n+    private Server() {\r\n+        this.welcome = DubboLogo.DUBBO;\r\n+    }\r\n+\r\n+    private String welcome;\r\n+\r\n+    private AtomicBoolean started = new AtomicBoolean();\r\n+\r\n+    /**\r\n+     * welcome message\r\n+     */\r\n+    public void setWelcome(String welcome) {\r\n+        this.welcome = welcome;\r\n+    }\r\n+\r\n+    public int getPort() {\r\n+        return port;\r\n+    }\r\n+\r\n+    /**\r\n+     * start server, bind port\r\n+     */\r\n+    public void start() throws Throwable {\r\n+        if (!started.compareAndSet(false, true)) {\r\n+            return;\r\n+        }\r\n+        boss = new NioEventLoopGroup(1, new DefaultThreadFactory(\"qos-boss\", true));\r\n+        worker = new NioEventLoopGroup(0, new DefaultThreadFactory(\"qos-worker\", true));\r\n+        ServerBootstrap serverBootstrap = new ServerBootstrap();\r\n+        serverBootstrap.group(boss, worker);\r\n+        serverBootstrap.channel(NioServerSocketChannel.class);\r\n+        serverBootstrap.option(ChannelOption.SO_REUSEADDR, true);\r\n+        serverBootstrap.childOption(ChannelOption.TCP_NODELAY, true);\r\n+        serverBootstrap.childHandler(new ChannelInitializer<Channel>() {\r\n+\r\n+            @Override\r\n+            protected void initChannel(Channel ch) throws Exception {\r\n+                ch.pipeline().addLast(new QosProcessHandler(welcome, acceptForeignIp));\r\n+            }\r\n+        });\r\n+        try {\r\n+            if (StringUtils.isBlank(host)) {\r\n+                serverBootstrap.bind(port).sync();\r\n+            } else {\r\n+                serverBootstrap.bind(host, port).sync();\r\n+            }\r\n+\r\n+            logger.info(\"qos-server bind localhost:\" + port);\r\n+        } catch (Throwable throwable) {\r\n+            logger.error(\"qos-server can not bind localhost:\" + port, throwable);\r\n+            throw throwable;\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * close server\r\n+     */\r\n+    public void stop() {\r\n+        logger.info(\"qos-server stopped.\");\r\n+        if (boss != null) {\r\n+            boss.shutdownGracefully();\r\n+        }\r\n+        if (worker != null) {\r\n+            worker.shutdownGracefully();\r\n+        }\r\n+    }\r\n+\r\n+    public String getHost() {\r\n+        return host;\r\n+    }\r\n+\r\n+    public void setHost(String host) {\r\n+        this.host = host;\r\n+    }\r\n+\r\n+    public void setPort(int port) {\r\n+        this.port = port;\r\n+    }\r\n+\r\n+    public boolean isAcceptForeignIp() {\r\n+        return acceptForeignIp;\r\n+    }\r\n+\r\n+    public void setAcceptForeignIp(boolean acceptForeignIp) {\r\n+        this.acceptForeignIp = acceptForeignIp;\r\n+    }\r\n+\r\n+    public String getWelcome() {\r\n+        return welcome;\r\n+    }\r\n+\r\n+    public boolean isStarted() {\r\n+        return started.get();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/server/handler/QosProcessHandler.java", "source2": "org/apache/dubbo/qos/server/handler/QosProcessHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,111 +1,111 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.server.handler;\n-\n-import io.netty.buffer.ByteBuf;\n-import io.netty.buffer.Unpooled;\n-import io.netty.channel.ChannelHandlerContext;\n-import io.netty.channel.ChannelPipeline;\n-import io.netty.handler.codec.ByteToMessageDecoder;\n-import io.netty.handler.codec.LineBasedFrameDecoder;\n-import io.netty.handler.codec.http.HttpObjectAggregator;\n-import io.netty.handler.codec.http.HttpServerCodec;\n-import io.netty.handler.codec.string.StringDecoder;\n-import io.netty.handler.codec.string.StringEncoder;\n-import io.netty.handler.timeout.IdleStateEvent;\n-import io.netty.handler.timeout.IdleStateHandler;\n-import io.netty.util.CharsetUtil;\n-import io.netty.util.concurrent.ScheduledFuture;\n-import org.apache.dubbo.common.utils.ExecutorUtil;\n-\n-import java.util.List;\n-import java.util.concurrent.TimeUnit;\n-\n-public class QosProcessHandler extends ByteToMessageDecoder {\n-\n-    private ScheduledFuture<?> welcomeFuture;\n-\n-    private String welcome;\n-    // true means to accept foreign IP\n-    private boolean acceptForeignIp;\n-\n-    public static final String PROMPT = \"dubbo>\";\n-\n-    public QosProcessHandler(String welcome, boolean acceptForeignIp) {\n-        this.welcome = welcome;\n-        this.acceptForeignIp = acceptForeignIp;\n-    }\n-\n-    @Override\n-    public void channelActive(final ChannelHandlerContext ctx) throws Exception {\n-        welcomeFuture = ctx.executor().schedule(new Runnable() {\n-\n-            @Override\n-            public void run() {\n-                if (welcome != null) {\n-                    ctx.write(Unpooled.wrappedBuffer(welcome.getBytes()));\n-                    ctx.writeAndFlush(Unpooled.wrappedBuffer(PROMPT.getBytes()));\n-                }\n-            }\n-\n-        }, 500, TimeUnit.MILLISECONDS);\n-    }\n-\n-    @Override\n-    protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {\n-        if (in.readableBytes() < 1) {\n-            return;\n-        }\n-\n-        // read one byte to guess protocol\n-        final int magic = in.getByte(in.readerIndex());\n-\n-        ChannelPipeline p = ctx.pipeline();\n-        p.addLast(new LocalHostPermitHandler(acceptForeignIp));\n-        if (isHttp(magic)) {\n-            // no welcome output for http protocol\n-            if (welcomeFuture != null && welcomeFuture.isCancellable()) {\n-                welcomeFuture.cancel(false);\n-            }\n-            p.addLast(new HttpServerCodec());\n-            p.addLast(new HttpObjectAggregator(1048576));\n-            p.addLast(new HttpProcessHandler());\n-            p.remove(this);\n-        } else {\n-            p.addLast(new LineBasedFrameDecoder(2048));\n-            p.addLast(new StringDecoder(CharsetUtil.UTF_8));\n-            p.addLast(new StringEncoder(CharsetUtil.UTF_8));\n-            p.addLast(new IdleStateHandler(0, 0, 5 * 60));\n-            p.addLast(new TelnetIdleEventHandler());\n-            p.addLast(new TelnetProcessHandler());\n-            p.remove(this);\n-        }\n-    }\n-\n-    @Override\n-    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {\n-        if (evt instanceof IdleStateEvent) {\n-            ExecutorUtil.cancelScheduledFuture(welcomeFuture);\n-            ctx.close();\n-        }\n-    }\n-\n-    // G for GET, and P for POST\n-    private static boolean isHttp(int magic) {\n-        return magic == 'G' || magic == 'P';\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.server.handler;\r\n+\r\n+import io.netty.buffer.ByteBuf;\r\n+import io.netty.buffer.Unpooled;\r\n+import io.netty.channel.ChannelHandlerContext;\r\n+import io.netty.channel.ChannelPipeline;\r\n+import io.netty.handler.codec.ByteToMessageDecoder;\r\n+import io.netty.handler.codec.LineBasedFrameDecoder;\r\n+import io.netty.handler.codec.http.HttpObjectAggregator;\r\n+import io.netty.handler.codec.http.HttpServerCodec;\r\n+import io.netty.handler.codec.string.StringDecoder;\r\n+import io.netty.handler.codec.string.StringEncoder;\r\n+import io.netty.handler.timeout.IdleStateEvent;\r\n+import io.netty.handler.timeout.IdleStateHandler;\r\n+import io.netty.util.CharsetUtil;\r\n+import io.netty.util.concurrent.ScheduledFuture;\r\n+import org.apache.dubbo.common.utils.ExecutorUtil;\r\n+\r\n+import java.util.List;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+public class QosProcessHandler extends ByteToMessageDecoder {\r\n+\r\n+    private ScheduledFuture<?> welcomeFuture;\r\n+\r\n+    private String welcome;\r\n+    // true means to accept foreign IP\r\n+    private boolean acceptForeignIp;\r\n+\r\n+    public static final String PROMPT = \"dubbo>\";\r\n+\r\n+    public QosProcessHandler(String welcome, boolean acceptForeignIp) {\r\n+        this.welcome = welcome;\r\n+        this.acceptForeignIp = acceptForeignIp;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void channelActive(final ChannelHandlerContext ctx) throws Exception {\r\n+        welcomeFuture = ctx.executor().schedule(new Runnable() {\r\n+\r\n+            @Override\r\n+            public void run() {\r\n+                if (welcome != null) {\r\n+                    ctx.write(Unpooled.wrappedBuffer(welcome.getBytes()));\r\n+                    ctx.writeAndFlush(Unpooled.wrappedBuffer(PROMPT.getBytes()));\r\n+                }\r\n+            }\r\n+\r\n+        }, 500, TimeUnit.MILLISECONDS);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {\r\n+        if (in.readableBytes() < 1) {\r\n+            return;\r\n+        }\r\n+\r\n+        // read one byte to guess protocol\r\n+        final int magic = in.getByte(in.readerIndex());\r\n+\r\n+        ChannelPipeline p = ctx.pipeline();\r\n+        p.addLast(new LocalHostPermitHandler(acceptForeignIp));\r\n+        if (isHttp(magic)) {\r\n+            // no welcome output for http protocol\r\n+            if (welcomeFuture != null && welcomeFuture.isCancellable()) {\r\n+                welcomeFuture.cancel(false);\r\n+            }\r\n+            p.addLast(new HttpServerCodec());\r\n+            p.addLast(new HttpObjectAggregator(1048576));\r\n+            p.addLast(new HttpProcessHandler());\r\n+            p.remove(this);\r\n+        } else {\r\n+            p.addLast(new LineBasedFrameDecoder(2048));\r\n+            p.addLast(new StringDecoder(CharsetUtil.UTF_8));\r\n+            p.addLast(new StringEncoder(CharsetUtil.UTF_8));\r\n+            p.addLast(new IdleStateHandler(0, 0, 5 * 60));\r\n+            p.addLast(new TelnetIdleEventHandler());\r\n+            p.addLast(new TelnetProcessHandler());\r\n+            p.remove(this);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {\r\n+        if (evt instanceof IdleStateEvent) {\r\n+            ExecutorUtil.cancelScheduledFuture(welcomeFuture);\r\n+            ctx.close();\r\n+        }\r\n+    }\r\n+\r\n+    // G for GET, and P for POST\r\n+    private static boolean isHttp(int magic) {\r\n+        return magic == 'G' || magic == 'P';\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/server/handler/TelnetIdleEventHandler.java", "source2": "org/apache/dubbo/qos/server/handler/TelnetIdleEventHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,41 +1,41 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.server.handler;\n-\n-import io.netty.channel.Channel;\n-import io.netty.channel.ChannelDuplexHandler;\n-import io.netty.channel.ChannelHandlerContext;\n-import io.netty.handler.timeout.IdleStateEvent;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-\n-public class TelnetIdleEventHandler extends ChannelDuplexHandler {\n-    private static final Logger log = LoggerFactory.getLogger(TelnetIdleEventHandler.class);\n-\n-    @Override\n-    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {\n-        // server will close channel when server don't receive any request from client util timeout.\n-        if (evt instanceof IdleStateEvent) {\n-            Channel channel = ctx.channel();\n-            log.info(\"IdleStateEvent triggered, close channel \" + channel);\n-            channel.close();\n-        } else {\n-            super.userEventTriggered(ctx, evt);\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.server.handler;\r\n+\r\n+import io.netty.channel.Channel;\r\n+import io.netty.channel.ChannelDuplexHandler;\r\n+import io.netty.channel.ChannelHandlerContext;\r\n+import io.netty.handler.timeout.IdleStateEvent;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+\r\n+public class TelnetIdleEventHandler extends ChannelDuplexHandler {\r\n+    private static final Logger log = LoggerFactory.getLogger(TelnetIdleEventHandler.class);\r\n+\r\n+    @Override\r\n+    public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {\r\n+        // server will close channel when server don't receive any request from client util timeout.\r\n+        if (evt instanceof IdleStateEvent) {\r\n+            Channel channel = ctx.channel();\r\n+            log.info(\"IdleStateEvent triggered, close channel \" + channel);\r\n+            channel.close();\r\n+        } else {\r\n+            super.userEventTriggered(ctx, evt);\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/server/handler/TelnetProcessHandler.java", "source2": "org/apache/dubbo/qos/server/handler/TelnetProcessHandler.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,73 +1,73 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.server.handler;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.qos.command.CommandContext;\n-import org.apache.dubbo.qos.command.CommandExecutor;\n-import org.apache.dubbo.qos.command.DefaultCommandExecutor;\n-import org.apache.dubbo.qos.command.NoSuchCommandException;\n-import org.apache.dubbo.qos.command.decoder.TelnetCommandDecoder;\n-import org.apache.dubbo.qos.common.QosConstants;\n-\n-import io.netty.channel.ChannelFutureListener;\n-import io.netty.channel.ChannelHandlerContext;\n-import io.netty.channel.SimpleChannelInboundHandler;\n-\n-/**\n- * Telnet process handler\n- */\n-public class TelnetProcessHandler extends SimpleChannelInboundHandler<String> {\n-\n-    private static final Logger log = LoggerFactory.getLogger(TelnetProcessHandler.class);\n-    private static CommandExecutor commandExecutor = new DefaultCommandExecutor();\n-\n-    @Override\n-    protected void channelRead0(ChannelHandlerContext ctx, String msg) throws Exception {\n-\n-        if (StringUtils.isBlank(msg)) {\n-            ctx.writeAndFlush(QosProcessHandler.PROMPT);\n-        } else {\n-            CommandContext commandContext = TelnetCommandDecoder.decode(msg);\n-            commandContext.setRemote(ctx.channel());\n-\n-            try {\n-                String result = commandExecutor.execute(commandContext);\n-                if (StringUtils.isEquals(QosConstants.CLOSE, result)) {\n-                    ctx.writeAndFlush(getByeLabel()).addListener(ChannelFutureListener.CLOSE);\n-                } else {\n-                    ctx.writeAndFlush(result + QosConstants.BR_STR + QosProcessHandler.PROMPT);\n-                }\n-            } catch (NoSuchCommandException ex) {\n-                ctx.writeAndFlush(msg + \" :no such command\");\n-                ctx.writeAndFlush(QosConstants.BR_STR + QosProcessHandler.PROMPT);\n-                log.error(\"can not found command \" + commandContext, ex);\n-            } catch (Exception ex) {\n-                ctx.writeAndFlush(msg + \" :fail to execute commandContext by \" + ex.getMessage());\n-                ctx.writeAndFlush(QosConstants.BR_STR + QosProcessHandler.PROMPT);\n-                log.error(\"execute commandContext got exception \" + commandContext, ex);\n-            }\n-        }\n-    }\n-\n-    private String getByeLabel() {\n-        return \"BYE!\\n\";\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.server.handler;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.qos.command.CommandContext;\r\n+import org.apache.dubbo.qos.command.CommandExecutor;\r\n+import org.apache.dubbo.qos.command.DefaultCommandExecutor;\r\n+import org.apache.dubbo.qos.command.NoSuchCommandException;\r\n+import org.apache.dubbo.qos.command.decoder.TelnetCommandDecoder;\r\n+import org.apache.dubbo.qos.common.QosConstants;\r\n+\r\n+import io.netty.channel.ChannelFutureListener;\r\n+import io.netty.channel.ChannelHandlerContext;\r\n+import io.netty.channel.SimpleChannelInboundHandler;\r\n+\r\n+/**\r\n+ * Telnet process handler\r\n+ */\r\n+public class TelnetProcessHandler extends SimpleChannelInboundHandler<String> {\r\n+\r\n+    private static final Logger log = LoggerFactory.getLogger(TelnetProcessHandler.class);\r\n+    private static CommandExecutor commandExecutor = new DefaultCommandExecutor();\r\n+\r\n+    @Override\r\n+    protected void channelRead0(ChannelHandlerContext ctx, String msg) throws Exception {\r\n+\r\n+        if (StringUtils.isBlank(msg)) {\r\n+            ctx.writeAndFlush(QosProcessHandler.PROMPT);\r\n+        } else {\r\n+            CommandContext commandContext = TelnetCommandDecoder.decode(msg);\r\n+            commandContext.setRemote(ctx.channel());\r\n+\r\n+            try {\r\n+                String result = commandExecutor.execute(commandContext);\r\n+                if (StringUtils.isEquals(QosConstants.CLOSE, result)) {\r\n+                    ctx.writeAndFlush(getByeLabel()).addListener(ChannelFutureListener.CLOSE);\r\n+                } else {\r\n+                    ctx.writeAndFlush(result + QosConstants.BR_STR + QosProcessHandler.PROMPT);\r\n+                }\r\n+            } catch (NoSuchCommandException ex) {\r\n+                ctx.writeAndFlush(msg + \" :no such command\");\r\n+                ctx.writeAndFlush(QosConstants.BR_STR + QosProcessHandler.PROMPT);\r\n+                log.error(\"can not found command \" + commandContext, ex);\r\n+            } catch (Exception ex) {\r\n+                ctx.writeAndFlush(msg + \" :fail to execute commandContext by \" + ex.getMessage());\r\n+                ctx.writeAndFlush(QosConstants.BR_STR + QosProcessHandler.PROMPT);\r\n+                log.error(\"execute commandContext got exception \" + commandContext, ex);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private String getByeLabel() {\r\n+        return \"BYE!\\n\";\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/textui/TTable.java", "source2": "org/apache/dubbo/qos/textui/TTable.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,566 +1,566 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.textui;\n-\n-import java.io.StringReader;\n-import java.util.ArrayList;\n-import java.util.List;\n-import java.util.Scanner;\n-\n-import static java.lang.Math.abs;\n-import static java.lang.Math.max;\n-import static java.lang.String.format;\n-import static org.apache.dubbo.common.utils.StringUtils.EMPTY_STRING;\n-import static org.apache.dubbo.common.utils.StringUtils.length;\n-import static org.apache.dubbo.common.utils.StringUtils.repeat;\n-import static org.apache.dubbo.common.utils.StringUtils.replace;\n-\n-/**\n- * Table\n- */\n-public class TTable implements TComponent {\n-\n-    // column definition\n-    private final ColumnDefine[] columnDefineArray;\n-\n-    // border\n-    private final Border border = new Border();\n-\n-    // padding\n-    private int padding;\n-\n-    public TTable(ColumnDefine[] columnDefineArray) {\n-        this.columnDefineArray = null == columnDefineArray\n-                ? new ColumnDefine[0]\n-                : columnDefineArray;\n-    }\n-\n-    public TTable(int columnNum) {\n-        this.columnDefineArray = new ColumnDefine[columnNum];\n-        for (int index = 0; index < this.columnDefineArray.length; index++) {\n-            columnDefineArray[index] = new ColumnDefine();\n-        }\n-    }\n-\n-\n-    @Override\n-    public String rendering() {\n-        final StringBuilder tableSB = new StringBuilder();\n-\n-        // process width cache\n-        final int[] widthCacheArray = new int[getColumnCount()];\n-        for (int index = 0; index < widthCacheArray.length; index++) {\n-            widthCacheArray[index] = abs(columnDefineArray[index].getWidth());\n-        }\n-\n-        final int rowCount = getRowCount();\n-        for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n-\n-            final boolean isFirstRow = rowIndex == 0;\n-            final boolean isLastRow = rowIndex == rowCount - 1;\n-\n-            // print first separation line\n-            if (isFirstRow\n-                    && border.has(Border.BORDER_OUTER_TOP)) {\n-                tableSB.append(drawSeparationLine(widthCacheArray)).append(System.lineSeparator());\n-            }\n-\n-            // print inner separation lines\n-            if (!isFirstRow\n-                    && border.has(Border.BORDER_INNER_H)) {\n-                tableSB.append(drawSeparationLine(widthCacheArray)).append(System.lineSeparator());\n-            }\n-\n-            // draw one line\n-            tableSB.append(drawRow(widthCacheArray, rowIndex));\n-\n-\n-            // print ending separation line\n-            if (isLastRow\n-                    && border.has(Border.BORDER_OUTER_BOTTOM)) {\n-                tableSB.append(drawSeparationLine(widthCacheArray)).append(System.lineSeparator());\n-            }\n-\n-        }\n-\n-\n-        return tableSB.toString();\n-    }\n-\n-\n-    private String drawRow(int[] widthCacheArray, int rowIndex) {\n-\n-        final StringBuilder rowSB = new StringBuilder();\n-        final Scanner[] scannerArray = new Scanner[getColumnCount()];\n-        try {\n-            boolean hasNextLine;\n-            do {\n-\n-                hasNextLine = false;\n-                final StringBuilder segmentSB = new StringBuilder();\n-\n-                for (int colIndex = 0; colIndex < getColumnCount(); colIndex++) {\n-\n-\n-                    final int width = widthCacheArray[colIndex];\n-                    final boolean isFirstColOfRow = colIndex == 0;\n-                    final boolean isLastColOfRow = colIndex == widthCacheArray.length - 1;\n-\n-                    final String borderChar;\n-                    if (isFirstColOfRow\n-                            && border.has(Border.BORDER_OUTER_LEFT)) {\n-                        borderChar = \"|\";\n-                    } else if (!isFirstColOfRow\n-                            && border.has(Border.BORDER_INNER_V)) {\n-                        borderChar = \"|\";\n-                    } else {\n-                        borderChar = EMPTY_STRING;\n-                    }\n-\n-\n-                    if (null == scannerArray[colIndex]) {\n-                        scannerArray[colIndex] = new Scanner(\n-                                new StringReader(wrap(getData(rowIndex, columnDefineArray[colIndex]), width)));\n-                    }\n-                    final Scanner scanner = scannerArray[colIndex];\n-\n-                    final String data;\n-                    if (scanner.hasNextLine()) {\n-                        data = scanner.nextLine();\n-                        hasNextLine = true;\n-                    } else {\n-                        data = EMPTY_STRING;\n-                    }\n-\n-                    if (width > 0) {\n-                        final ColumnDefine columnDefine = columnDefineArray[colIndex];\n-                        final String dataFormat = getDataFormat(columnDefine, width, data);\n-                        final String paddingChar = repeat(\" \", padding);\n-                        segmentSB.append(format(borderChar + paddingChar + dataFormat + paddingChar, data));\n-                    }\n-\n-                    if (isLastColOfRow) {\n-                        if (border.has(Border.BORDER_OUTER_RIGHT)) {\n-                            segmentSB.append(\"|\");\n-                        }\n-                        segmentSB.append(System.lineSeparator());\n-                    }\n-\n-                }\n-\n-                if (hasNextLine) {\n-                    rowSB.append(segmentSB);\n-                }\n-\n-            } while (hasNextLine);\n-\n-            return rowSB.toString();\n-        } finally {\n-            for (Scanner scanner : scannerArray) {\n-                if (null != scanner) {\n-                    scanner.close();\n-                }\n-            }\n-        }\n-\n-    }\n-\n-    private String getData(int rowIndex, ColumnDefine columnDefine) {\n-        return columnDefine.getRowCount() <= rowIndex\n-                ? EMPTY_STRING\n-                : columnDefine.rows.get(rowIndex);\n-    }\n-\n-    private String getDataFormat(ColumnDefine columnDefine, int width, String data) {\n-        switch (columnDefine.align) {\n-            case MIDDLE: {\n-                final int length = length(data);\n-                final int diff = width - length;\n-                final int left = diff / 2;\n-                return repeat(\" \", diff - left) + \"%s\" + repeat(\" \", left);\n-            }\n-            case RIGHT: {\n-                return \"%\" + width + \"s\";\n-            }\n-            case LEFT:\n-            default: {\n-                return \"%-\" + width + \"s\";\n-            }\n-        }\n-    }\n-\n-    /**\n-     * get row count\n-     */\n-    private int getRowCount() {\n-        int rowCount = 0;\n-        for (ColumnDefine columnDefine : columnDefineArray) {\n-            rowCount = max(rowCount, columnDefine.getRowCount());\n-        }\n-        return rowCount;\n-    }\n-\n-    /**\n-     * position to last column\n-     */\n-    private int indexLastCol(final int[] widthCacheArray) {\n-        for (int colIndex = widthCacheArray.length - 1; colIndex >= 0; colIndex--) {\n-            final int width = widthCacheArray[colIndex];\n-            if (width <= 0) {\n-                continue;\n-            }\n-            return colIndex;\n-        }\n-        return 0;\n-    }\n-\n-    /**\n-     * draw separation line\n-     */\n-    private String drawSeparationLine(final int[] widthCacheArray) {\n-        final StringBuilder separationLineSB = new StringBuilder();\n-\n-        final int lastCol = indexLastCol(widthCacheArray);\n-        final int colCount = widthCacheArray.length;\n-        for (int colIndex = 0; colIndex < colCount; colIndex++) {\n-            final int width = widthCacheArray[colIndex];\n-            if (width <= 0) {\n-                continue;\n-            }\n-\n-            final boolean isFirstCol = colIndex == 0;\n-            final boolean isLastCol = colIndex == lastCol;\n-\n-            if (isFirstCol\n-                    && border.has(Border.BORDER_OUTER_LEFT)) {\n-                separationLineSB.append(\"+\");\n-            }\n-\n-            if (!isFirstCol\n-                    && border.has(Border.BORDER_INNER_V)) {\n-                separationLineSB.append(\"+\");\n-            }\n-\n-            separationLineSB.append(repeat(\"-\", width + 2 * padding));\n-\n-            if (isLastCol\n-                    && border.has(Border.BORDER_OUTER_RIGHT)) {\n-                separationLineSB.append(\"+\");\n-            }\n-\n-        }\n-        return separationLineSB.toString();\n-    }\n-\n-    /**\n-     * Add a row\n-     */\n-    public TTable addRow(Object... columnDataArray) {\n-\n-        if (null != columnDataArray) {\n-            for (int index = 0; index < columnDefineArray.length; index++) {\n-                final ColumnDefine columnDefine = columnDefineArray[index];\n-                if (index < columnDataArray.length\n-                        && null != columnDataArray[index]) {\n-                    columnDefine.rows.add(replaceTab(columnDataArray[index].toString()));\n-                } else {\n-                    columnDefine.rows.add(EMPTY_STRING);\n-                }\n-            }\n-        }\n-\n-        return this;\n-    }\n-\n-\n-    /**\n-     * alignment\n-     */\n-    public enum Align {\n-\n-        /**\n-         * left-alignment\n-         */\n-        LEFT,\n-\n-        /**\n-         * right-alignment\n-         */\n-        RIGHT,\n-\n-        /**\n-         * middle-alignment\n-         */\n-        MIDDLE\n-    }\n-\n-    /**\n-     * column definition\n-     */\n-    public static class ColumnDefine {\n-\n-        // column width\n-        private final int width;\n-\n-        // whether to auto resize\n-        private final boolean isAutoResize;\n-\n-        // alignment\n-        private final Align align;\n-\n-        // data rows\n-        private final List<String> rows = new ArrayList<String>();\n-\n-        public ColumnDefine(int width, boolean isAutoResize, Align align) {\n-            this.width = width;\n-            this.isAutoResize = isAutoResize;\n-            this.align = align;\n-        }\n-\n-        public ColumnDefine(Align align) {\n-            this(0, true, align);\n-        }\n-\n-        public ColumnDefine(int width) {\n-            this(width, false, Align.LEFT);\n-        }\n-\n-        public ColumnDefine(int width, Align align) {\n-            this(width, false, align);\n-        }\n-\n-        public ColumnDefine() {\n-            this(Align.LEFT);\n-        }\n-\n-        /**\n-         * get current width\n-         *\n-         * @return width\n-         */\n-        public int getWidth() {\n-\n-            // if not auto resize, return preset width\n-            if (!isAutoResize) {\n-                return width;\n-            }\n-\n-            // if it's auto resize, then calculate the possible max width\n-            int maxWidth = 0;\n-            for (String data : rows) {\n-                maxWidth = max(width(data), maxWidth);\n-            }\n-\n-            return maxWidth;\n-        }\n-\n-        /**\n-         * get rows for the current column\n-         *\n-         * @return current column's rows\n-         */\n-        public int getRowCount() {\n-            return rows.size();\n-        }\n-\n-    }\n-\n-    /**\n-     * set padding\n-     *\n-     * @param padding padding\n-     */\n-    public TTable padding(int padding) {\n-        this.padding = padding;\n-        return this;\n-    }\n-\n-    /**\n-     * get column count\n-     *\n-     * @return column count\n-     */\n-    public int getColumnCount() {\n-        return columnDefineArray.length;\n-    }\n-\n-\n-    /**\n-     * replace tab to four spaces\n-     *\n-     * @param string the original string\n-     * @return the replaced string\n-     */\n-    private static String replaceTab(String string) {\n-        return replace(string, \"\\t\", \"    \");\n-    }\n-\n-    /**\n-     * visible width for the given string.\n-     *\n-     * for example: \"abc\\n1234\"'s width is 4.\n-     *\n-     * @param string the given string\n-     * @return visible width\n-     */\n-    private static int width(String string) {\n-        int maxWidth = 0;\n-        try (Scanner scanner = new Scanner(new StringReader(string))) {\n-            while (scanner.hasNextLine()) {\n-                maxWidth = max(length(scanner.nextLine()), maxWidth);\n-            }\n-        }\n-        return maxWidth;\n-    }\n-\n-    /**\n-     * get border\n-     *\n-     * @return table border\n-     */\n-    public Border getBorder() {\n-        return border;\n-    }\n-\n-    /**\n-     * border style\n-     */\n-    public class Border {\n-\n-        private int borders = BORDER_OUTER | BORDER_INNER;\n-\n-        /**\n-         * border outer top\n-         */\n-        public static final int BORDER_OUTER_TOP = 1 << 0;\n-\n-        /**\n-         * border outer right\n-         */\n-        public static final int BORDER_OUTER_RIGHT = 1 << 1;\n-\n-        /**\n-         * border outer bottom\n-         */\n-        public static final int BORDER_OUTER_BOTTOM = 1 << 2;\n-\n-        /**\n-         * border outer left\n-         */\n-        public static final int BORDER_OUTER_LEFT = 1 << 3;\n-\n-        /**\n-         * inner border: horizon\n-         */\n-        public static final int BORDER_INNER_H = 1 << 4;\n-\n-        /**\n-         * inner border: vertical\n-         */\n-        public static final int BORDER_INNER_V = 1 << 5;\n-\n-        /**\n-         * outer border\n-         */\n-        public static final int BORDER_OUTER = BORDER_OUTER_TOP | BORDER_OUTER_BOTTOM | BORDER_OUTER_LEFT | BORDER_OUTER_RIGHT;\n-\n-        /**\n-         * inner border\n-         */\n-        public static final int BORDER_INNER = BORDER_INNER_H | BORDER_INNER_V;\n-\n-        /**\n-         * no border\n-         */\n-        public static final int BORDER_NON = 0;\n-\n-        /**\n-         * whether has one of the specified border styles\n-         *\n-         * @param borderArray border styles\n-         * @return whether has one of the specified border styles\n-         */\n-        public boolean has(int... borderArray) {\n-            if (null == borderArray) {\n-                return false;\n-            }\n-            for (int b : borderArray) {\n-                if ((this.borders & b) == b) {\n-                    return true;\n-                }\n-            }\n-            return false;\n-        }\n-\n-        /**\n-         * get border style\n-         *\n-         * @return border style\n-         */\n-        public int get() {\n-            return borders;\n-        }\n-\n-        /**\n-         * set border style\n-         *\n-         * @param border border style\n-         * @return this\n-         */\n-        public Border set(int border) {\n-            this.borders = border;\n-            return this;\n-        }\n-\n-        public Border add(int border) {\n-            return set(get() | border);\n-        }\n-\n-        public Border remove(int border) {\n-            return set(get() ^ border);\n-        }\n-\n-    }\n-\n-\n-    public static String wrap(String string, int width) {\n-        final StringBuilder sb = new StringBuilder();\n-        final char[] buffer = string.toCharArray();\n-        int count = 0;\n-        for (char c : buffer) {\n-\n-            if (count == width) {\n-                count = 0;\n-                sb.append('\\n');\n-                if (c == '\\n') {\n-                    continue;\n-                }\n-            }\n-\n-            if (c == '\\n') {\n-                count = 0;\n-            } else {\n-                count++;\n-            }\n-\n-            sb.append(c);\n-\n-        }\n-        return sb.toString();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.textui;\r\n+\r\n+import java.io.StringReader;\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+import java.util.Scanner;\r\n+\r\n+import static java.lang.Math.abs;\r\n+import static java.lang.Math.max;\r\n+import static java.lang.String.format;\r\n+import static org.apache.dubbo.common.utils.StringUtils.EMPTY_STRING;\r\n+import static org.apache.dubbo.common.utils.StringUtils.length;\r\n+import static org.apache.dubbo.common.utils.StringUtils.repeat;\r\n+import static org.apache.dubbo.common.utils.StringUtils.replace;\r\n+\r\n+/**\r\n+ * Table\r\n+ */\r\n+public class TTable implements TComponent {\r\n+\r\n+    // column definition\r\n+    private final ColumnDefine[] columnDefineArray;\r\n+\r\n+    // border\r\n+    private final Border border = new Border();\r\n+\r\n+    // padding\r\n+    private int padding;\r\n+\r\n+    public TTable(ColumnDefine[] columnDefineArray) {\r\n+        this.columnDefineArray = null == columnDefineArray\r\n+                ? new ColumnDefine[0]\r\n+                : columnDefineArray;\r\n+    }\r\n+\r\n+    public TTable(int columnNum) {\r\n+        this.columnDefineArray = new ColumnDefine[columnNum];\r\n+        for (int index = 0; index < this.columnDefineArray.length; index++) {\r\n+            columnDefineArray[index] = new ColumnDefine();\r\n+        }\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public String rendering() {\r\n+        final StringBuilder tableSB = new StringBuilder();\r\n+\r\n+        // process width cache\r\n+        final int[] widthCacheArray = new int[getColumnCount()];\r\n+        for (int index = 0; index < widthCacheArray.length; index++) {\r\n+            widthCacheArray[index] = abs(columnDefineArray[index].getWidth());\r\n+        }\r\n+\r\n+        final int rowCount = getRowCount();\r\n+        for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) {\r\n+\r\n+            final boolean isFirstRow = rowIndex == 0;\r\n+            final boolean isLastRow = rowIndex == rowCount - 1;\r\n+\r\n+            // print first separation line\r\n+            if (isFirstRow\r\n+                    && border.has(Border.BORDER_OUTER_TOP)) {\r\n+                tableSB.append(drawSeparationLine(widthCacheArray)).append(System.lineSeparator());\r\n+            }\r\n+\r\n+            // print inner separation lines\r\n+            if (!isFirstRow\r\n+                    && border.has(Border.BORDER_INNER_H)) {\r\n+                tableSB.append(drawSeparationLine(widthCacheArray)).append(System.lineSeparator());\r\n+            }\r\n+\r\n+            // draw one line\r\n+            tableSB.append(drawRow(widthCacheArray, rowIndex));\r\n+\r\n+\r\n+            // print ending separation line\r\n+            if (isLastRow\r\n+                    && border.has(Border.BORDER_OUTER_BOTTOM)) {\r\n+                tableSB.append(drawSeparationLine(widthCacheArray)).append(System.lineSeparator());\r\n+            }\r\n+\r\n+        }\r\n+\r\n+\r\n+        return tableSB.toString();\r\n+    }\r\n+\r\n+\r\n+    private String drawRow(int[] widthCacheArray, int rowIndex) {\r\n+\r\n+        final StringBuilder rowSB = new StringBuilder();\r\n+        final Scanner[] scannerArray = new Scanner[getColumnCount()];\r\n+        try {\r\n+            boolean hasNextLine;\r\n+            do {\r\n+\r\n+                hasNextLine = false;\r\n+                final StringBuilder segmentSB = new StringBuilder();\r\n+\r\n+                for (int colIndex = 0; colIndex < getColumnCount(); colIndex++) {\r\n+\r\n+\r\n+                    final int width = widthCacheArray[colIndex];\r\n+                    final boolean isFirstColOfRow = colIndex == 0;\r\n+                    final boolean isLastColOfRow = colIndex == widthCacheArray.length - 1;\r\n+\r\n+                    final String borderChar;\r\n+                    if (isFirstColOfRow\r\n+                            && border.has(Border.BORDER_OUTER_LEFT)) {\r\n+                        borderChar = \"|\";\r\n+                    } else if (!isFirstColOfRow\r\n+                            && border.has(Border.BORDER_INNER_V)) {\r\n+                        borderChar = \"|\";\r\n+                    } else {\r\n+                        borderChar = EMPTY_STRING;\r\n+                    }\r\n+\r\n+\r\n+                    if (null == scannerArray[colIndex]) {\r\n+                        scannerArray[colIndex] = new Scanner(\r\n+                                new StringReader(wrap(getData(rowIndex, columnDefineArray[colIndex]), width)));\r\n+                    }\r\n+                    final Scanner scanner = scannerArray[colIndex];\r\n+\r\n+                    final String data;\r\n+                    if (scanner.hasNextLine()) {\r\n+                        data = scanner.nextLine();\r\n+                        hasNextLine = true;\r\n+                    } else {\r\n+                        data = EMPTY_STRING;\r\n+                    }\r\n+\r\n+                    if (width > 0) {\r\n+                        final ColumnDefine columnDefine = columnDefineArray[colIndex];\r\n+                        final String dataFormat = getDataFormat(columnDefine, width, data);\r\n+                        final String paddingChar = repeat(\" \", padding);\r\n+                        segmentSB.append(format(borderChar + paddingChar + dataFormat + paddingChar, data));\r\n+                    }\r\n+\r\n+                    if (isLastColOfRow) {\r\n+                        if (border.has(Border.BORDER_OUTER_RIGHT)) {\r\n+                            segmentSB.append(\"|\");\r\n+                        }\r\n+                        segmentSB.append(System.lineSeparator());\r\n+                    }\r\n+\r\n+                }\r\n+\r\n+                if (hasNextLine) {\r\n+                    rowSB.append(segmentSB);\r\n+                }\r\n+\r\n+            } while (hasNextLine);\r\n+\r\n+            return rowSB.toString();\r\n+        } finally {\r\n+            for (Scanner scanner : scannerArray) {\r\n+                if (null != scanner) {\r\n+                    scanner.close();\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    private String getData(int rowIndex, ColumnDefine columnDefine) {\r\n+        return columnDefine.getRowCount() <= rowIndex\r\n+                ? EMPTY_STRING\r\n+                : columnDefine.rows.get(rowIndex);\r\n+    }\r\n+\r\n+    private String getDataFormat(ColumnDefine columnDefine, int width, String data) {\r\n+        switch (columnDefine.align) {\r\n+            case MIDDLE: {\r\n+                final int length = length(data);\r\n+                final int diff = width - length;\r\n+                final int left = diff / 2;\r\n+                return repeat(\" \", diff - left) + \"%s\" + repeat(\" \", left);\r\n+            }\r\n+            case RIGHT: {\r\n+                return \"%\" + width + \"s\";\r\n+            }\r\n+            case LEFT:\r\n+            default: {\r\n+                return \"%-\" + width + \"s\";\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * get row count\r\n+     */\r\n+    private int getRowCount() {\r\n+        int rowCount = 0;\r\n+        for (ColumnDefine columnDefine : columnDefineArray) {\r\n+            rowCount = max(rowCount, columnDefine.getRowCount());\r\n+        }\r\n+        return rowCount;\r\n+    }\r\n+\r\n+    /**\r\n+     * position to last column\r\n+     */\r\n+    private int indexLastCol(final int[] widthCacheArray) {\r\n+        for (int colIndex = widthCacheArray.length - 1; colIndex >= 0; colIndex--) {\r\n+            final int width = widthCacheArray[colIndex];\r\n+            if (width <= 0) {\r\n+                continue;\r\n+            }\r\n+            return colIndex;\r\n+        }\r\n+        return 0;\r\n+    }\r\n+\r\n+    /**\r\n+     * draw separation line\r\n+     */\r\n+    private String drawSeparationLine(final int[] widthCacheArray) {\r\n+        final StringBuilder separationLineSB = new StringBuilder();\r\n+\r\n+        final int lastCol = indexLastCol(widthCacheArray);\r\n+        final int colCount = widthCacheArray.length;\r\n+        for (int colIndex = 0; colIndex < colCount; colIndex++) {\r\n+            final int width = widthCacheArray[colIndex];\r\n+            if (width <= 0) {\r\n+                continue;\r\n+            }\r\n+\r\n+            final boolean isFirstCol = colIndex == 0;\r\n+            final boolean isLastCol = colIndex == lastCol;\r\n+\r\n+            if (isFirstCol\r\n+                    && border.has(Border.BORDER_OUTER_LEFT)) {\r\n+                separationLineSB.append(\"+\");\r\n+            }\r\n+\r\n+            if (!isFirstCol\r\n+                    && border.has(Border.BORDER_INNER_V)) {\r\n+                separationLineSB.append(\"+\");\r\n+            }\r\n+\r\n+            separationLineSB.append(repeat(\"-\", width + 2 * padding));\r\n+\r\n+            if (isLastCol\r\n+                    && border.has(Border.BORDER_OUTER_RIGHT)) {\r\n+                separationLineSB.append(\"+\");\r\n+            }\r\n+\r\n+        }\r\n+        return separationLineSB.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * Add a row\r\n+     */\r\n+    public TTable addRow(Object... columnDataArray) {\r\n+\r\n+        if (null != columnDataArray) {\r\n+            for (int index = 0; index < columnDefineArray.length; index++) {\r\n+                final ColumnDefine columnDefine = columnDefineArray[index];\r\n+                if (index < columnDataArray.length\r\n+                        && null != columnDataArray[index]) {\r\n+                    columnDefine.rows.add(replaceTab(columnDataArray[index].toString()));\r\n+                } else {\r\n+                    columnDefine.rows.add(EMPTY_STRING);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        return this;\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * alignment\r\n+     */\r\n+    public enum Align {\r\n+\r\n+        /**\r\n+         * left-alignment\r\n+         */\r\n+        LEFT,\r\n+\r\n+        /**\r\n+         * right-alignment\r\n+         */\r\n+        RIGHT,\r\n+\r\n+        /**\r\n+         * middle-alignment\r\n+         */\r\n+        MIDDLE\r\n+    }\r\n+\r\n+    /**\r\n+     * column definition\r\n+     */\r\n+    public static class ColumnDefine {\r\n+\r\n+        // column width\r\n+        private final int width;\r\n+\r\n+        // whether to auto resize\r\n+        private final boolean isAutoResize;\r\n+\r\n+        // alignment\r\n+        private final Align align;\r\n+\r\n+        // data rows\r\n+        private final List<String> rows = new ArrayList<String>();\r\n+\r\n+        public ColumnDefine(int width, boolean isAutoResize, Align align) {\r\n+            this.width = width;\r\n+            this.isAutoResize = isAutoResize;\r\n+            this.align = align;\r\n+        }\r\n+\r\n+        public ColumnDefine(Align align) {\r\n+            this(0, true, align);\r\n+        }\r\n+\r\n+        public ColumnDefine(int width) {\r\n+            this(width, false, Align.LEFT);\r\n+        }\r\n+\r\n+        public ColumnDefine(int width, Align align) {\r\n+            this(width, false, align);\r\n+        }\r\n+\r\n+        public ColumnDefine() {\r\n+            this(Align.LEFT);\r\n+        }\r\n+\r\n+        /**\r\n+         * get current width\r\n+         *\r\n+         * @return width\r\n+         */\r\n+        public int getWidth() {\r\n+\r\n+            // if not auto resize, return preset width\r\n+            if (!isAutoResize) {\r\n+                return width;\r\n+            }\r\n+\r\n+            // if it's auto resize, then calculate the possible max width\r\n+            int maxWidth = 0;\r\n+            for (String data : rows) {\r\n+                maxWidth = max(width(data), maxWidth);\r\n+            }\r\n+\r\n+            return maxWidth;\r\n+        }\r\n+\r\n+        /**\r\n+         * get rows for the current column\r\n+         *\r\n+         * @return current column's rows\r\n+         */\r\n+        public int getRowCount() {\r\n+            return rows.size();\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * set padding\r\n+     *\r\n+     * @param padding padding\r\n+     */\r\n+    public TTable padding(int padding) {\r\n+        this.padding = padding;\r\n+        return this;\r\n+    }\r\n+\r\n+    /**\r\n+     * get column count\r\n+     *\r\n+     * @return column count\r\n+     */\r\n+    public int getColumnCount() {\r\n+        return columnDefineArray.length;\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * replace tab to four spaces\r\n+     *\r\n+     * @param string the original string\r\n+     * @return the replaced string\r\n+     */\r\n+    private static String replaceTab(String string) {\r\n+        return replace(string, \"\\t\", \"    \");\r\n+    }\r\n+\r\n+    /**\r\n+     * visible width for the given string.\r\n+     *\r\n+     * for example: \"abc\\n1234\"'s width is 4.\r\n+     *\r\n+     * @param string the given string\r\n+     * @return visible width\r\n+     */\r\n+    private static int width(String string) {\r\n+        int maxWidth = 0;\r\n+        try (Scanner scanner = new Scanner(new StringReader(string))) {\r\n+            while (scanner.hasNextLine()) {\r\n+                maxWidth = max(length(scanner.nextLine()), maxWidth);\r\n+            }\r\n+        }\r\n+        return maxWidth;\r\n+    }\r\n+\r\n+    /**\r\n+     * get border\r\n+     *\r\n+     * @return table border\r\n+     */\r\n+    public Border getBorder() {\r\n+        return border;\r\n+    }\r\n+\r\n+    /**\r\n+     * border style\r\n+     */\r\n+    public class Border {\r\n+\r\n+        private int borders = BORDER_OUTER | BORDER_INNER;\r\n+\r\n+        /**\r\n+         * border outer top\r\n+         */\r\n+        public static final int BORDER_OUTER_TOP = 1 << 0;\r\n+\r\n+        /**\r\n+         * border outer right\r\n+         */\r\n+        public static final int BORDER_OUTER_RIGHT = 1 << 1;\r\n+\r\n+        /**\r\n+         * border outer bottom\r\n+         */\r\n+        public static final int BORDER_OUTER_BOTTOM = 1 << 2;\r\n+\r\n+        /**\r\n+         * border outer left\r\n+         */\r\n+        public static final int BORDER_OUTER_LEFT = 1 << 3;\r\n+\r\n+        /**\r\n+         * inner border: horizon\r\n+         */\r\n+        public static final int BORDER_INNER_H = 1 << 4;\r\n+\r\n+        /**\r\n+         * inner border: vertical\r\n+         */\r\n+        public static final int BORDER_INNER_V = 1 << 5;\r\n+\r\n+        /**\r\n+         * outer border\r\n+         */\r\n+        public static final int BORDER_OUTER = BORDER_OUTER_TOP | BORDER_OUTER_BOTTOM | BORDER_OUTER_LEFT | BORDER_OUTER_RIGHT;\r\n+\r\n+        /**\r\n+         * inner border\r\n+         */\r\n+        public static final int BORDER_INNER = BORDER_INNER_H | BORDER_INNER_V;\r\n+\r\n+        /**\r\n+         * no border\r\n+         */\r\n+        public static final int BORDER_NON = 0;\r\n+\r\n+        /**\r\n+         * whether has one of the specified border styles\r\n+         *\r\n+         * @param borderArray border styles\r\n+         * @return whether has one of the specified border styles\r\n+         */\r\n+        public boolean has(int... borderArray) {\r\n+            if (null == borderArray) {\r\n+                return false;\r\n+            }\r\n+            for (int b : borderArray) {\r\n+                if ((this.borders & b) == b) {\r\n+                    return true;\r\n+                }\r\n+            }\r\n+            return false;\r\n+        }\r\n+\r\n+        /**\r\n+         * get border style\r\n+         *\r\n+         * @return border style\r\n+         */\r\n+        public int get() {\r\n+            return borders;\r\n+        }\r\n+\r\n+        /**\r\n+         * set border style\r\n+         *\r\n+         * @param border border style\r\n+         * @return this\r\n+         */\r\n+        public Border set(int border) {\r\n+            this.borders = border;\r\n+            return this;\r\n+        }\r\n+\r\n+        public Border add(int border) {\r\n+            return set(get() | border);\r\n+        }\r\n+\r\n+        public Border remove(int border) {\r\n+            return set(get() ^ border);\r\n+        }\r\n+\r\n+    }\r\n+\r\n+\r\n+    public static String wrap(String string, int width) {\r\n+        final StringBuilder sb = new StringBuilder();\r\n+        final char[] buffer = string.toCharArray();\r\n+        int count = 0;\r\n+        for (char c : buffer) {\r\n+\r\n+            if (count == width) {\r\n+                count = 0;\r\n+                sb.append('\\n');\r\n+                if (c == '\\n') {\r\n+                    continue;\r\n+                }\r\n+            }\r\n+\r\n+            if (c == '\\n') {\r\n+                count = 0;\r\n+            } else {\r\n+                count++;\r\n+            }\r\n+\r\n+            sb.append(c);\r\n+\r\n+        }\r\n+        return sb.toString();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/qos/textui/TTree.java", "source2": "org/apache/dubbo/qos/textui/TTree.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,266 +1,266 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.qos.textui;\n-\n-import java.io.StringReader;\n-import java.util.ArrayList;\n-import java.util.List;\n-import java.util.Scanner;\n-\n-import static java.lang.System.currentTimeMillis;\n-import static org.apache.dubbo.common.utils.StringUtils.EMPTY_STRING;\n-import static org.apache.dubbo.common.utils.StringUtils.length;\n-import static org.apache.dubbo.common.utils.StringUtils.repeat;\n-\n-/**\n- * tree\n- */\n-public class TTree implements TComponent {\n-\n-    private static final String STEP_FIRST_CHAR = \"`---\";\n-    private static final String STEP_NORMAL_CHAR = \"+---\";\n-    private static final String STEP_HAS_BOARD = \"|   \";\n-    private static final String STEP_EMPTY_BOARD = \"    \";\n-\n-    // should output cost or not\n-    private final boolean isPrintCost;\n-\n-    // tree node\n-    private final Node root;\n-\n-    // current node\n-    private Node current;\n-\n-\n-    public TTree(boolean isPrintCost, String title) {\n-        this.root = new Node(title).markBegin().markEnd();\n-        this.current = root;\n-        this.isPrintCost = isPrintCost;\n-    }\n-\n-\n-    @Override\n-    public String rendering() {\n-\n-        final StringBuilder treeSB = new StringBuilder();\n-        recursive(0, true, \"\", root, new Callback() {\n-\n-            @Override\n-            public void callback(int deep, boolean isLast, String prefix, Node node) {\n-\n-                final boolean hasChild = !node.children.isEmpty();\n-                final String stepString = isLast ? STEP_FIRST_CHAR : STEP_NORMAL_CHAR;\n-                final int stepStringLength = length(stepString);\n-                treeSB.append(prefix).append(stepString);\n-\n-                int costPrefixLength = 0;\n-                if (hasChild) {\n-                    treeSB.append(\"+\");\n-                }\n-                if (isPrintCost\n-                        && !node.isRoot()) {\n-                    final String costPrefix = String.format(\"[%s,%sms]\", (node.endTimestamp - root.beginTimestamp), (node.endTimestamp - node.beginTimestamp));\n-                    costPrefixLength = length(costPrefix);\n-                    treeSB.append(costPrefix);\n-                }\n-\n-                try (Scanner scanner = new Scanner(new StringReader(node.data.toString()))) {\n-                    boolean isFirst = true;\n-                    while (scanner.hasNextLine()) {\n-                        if (isFirst) {\n-                            treeSB.append(scanner.nextLine()).append(\"\\n\");\n-                            isFirst = false;\n-                        } else {\n-                            treeSB.append(prefix)\n-                                    .append(repeat(' ', stepStringLength))\n-                                    .append(hasChild ? \"|\" : EMPTY_STRING)\n-                                    .append(repeat(' ', costPrefixLength))\n-                                    .append(scanner.nextLine())\n-                                    .append(System.lineSeparator());\n-                        }\n-                    }\n-                }\n-\n-            }\n-\n-        });\n-\n-        return treeSB.toString();\n-    }\n-\n-    /**\n-     * recursive visit\n-     */\n-    private void recursive(int deep, boolean isLast, String prefix, Node node, Callback callback) {\n-        callback.callback(deep, isLast, prefix, node);\n-        if (!node.isLeaf()) {\n-            final int size = node.children.size();\n-            for (int index = 0; index < size; index++) {\n-                final boolean isLastFlag = index == size - 1;\n-                final String currentPrefix = isLast ? prefix + STEP_EMPTY_BOARD : prefix + STEP_HAS_BOARD;\n-                recursive(\n-                        deep + 1,\n-                        isLastFlag,\n-                        currentPrefix,\n-                        node.children.get(index),\n-                        callback\n-                );\n-            }\n-        }\n-    }\n-\n-    public boolean isTop() {\n-        return current.isRoot();\n-    }\n-\n-    /**\n-     * create a branch node\n-     *\n-     * @param data node data\n-     * @return this\n-     */\n-    public TTree begin(Object data) {\n-        current = new Node(current, data);\n-        current.markBegin();\n-        return this;\n-    }\n-\n-    public TTree begin() {\n-        return begin(null);\n-    }\n-\n-    public Object get() {\n-        if (current.isRoot()) {\n-            throw new IllegalStateException(\"current node is root.\");\n-        }\n-        return current.data;\n-    }\n-\n-    public TTree set(Object data) {\n-        if (current.isRoot()) {\n-            throw new IllegalStateException(\"current node is root.\");\n-        }\n-        current.data = data;\n-        return this;\n-    }\n-\n-    /**\n-     * end a branch node\n-     *\n-     * @return this\n-     */\n-    public TTree end() {\n-        if (current.isRoot()) {\n-            throw new IllegalStateException(\"current node is root.\");\n-        }\n-        current.markEnd();\n-        current = current.parent;\n-        return this;\n-    }\n-\n-\n-    /**\n-     * tree node\n-     */\n-    private static class Node {\n-\n-        /**\n-         * parent node\n-         */\n-        final Node parent;\n-\n-        /**\n-         * node data\n-         */\n-        Object data;\n-\n-        /**\n-         * child nodes\n-         */\n-        final List<Node> children = new ArrayList<Node>();\n-\n-        /**\n-         * begin timestamp\n-         */\n-        private long beginTimestamp;\n-\n-        /**\n-         * end timestamp\n-         */\n-        private long endTimestamp;\n-\n-        /**\n-         * construct root node\n-         */\n-        private Node(Object data) {\n-            this.parent = null;\n-            this.data = data;\n-        }\n-\n-        /**\n-         * construct a regular node\n-         *\n-         * @param parent parent node\n-         * @param data   node data\n-         */\n-        private Node(Node parent, Object data) {\n-            this.parent = parent;\n-            this.data = data;\n-            parent.children.add(this);\n-        }\n-\n-        /**\n-         * is the current node the root node\n-         *\n-         * @return true / false\n-         */\n-        boolean isRoot() {\n-            return null == parent;\n-        }\n-\n-        /**\n-         * if the current node the leaf node\n-         *\n-         * @return true / false\n-         */\n-        boolean isLeaf() {\n-            return children.isEmpty();\n-        }\n-\n-        Node markBegin() {\n-            beginTimestamp = currentTimeMillis();\n-            return this;\n-        }\n-\n-        Node markEnd() {\n-            endTimestamp = currentTimeMillis();\n-            return this;\n-        }\n-\n-    }\n-\n-\n-    /**\n-     * callback interface for recursive visit\n-     */\n-    private interface Callback {\n-\n-        void callback(int deep, boolean isLast, String prefix, Node node);\n-\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.qos.textui;\r\n+\r\n+import java.io.StringReader;\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+import java.util.Scanner;\r\n+\r\n+import static java.lang.System.currentTimeMillis;\r\n+import static org.apache.dubbo.common.utils.StringUtils.EMPTY_STRING;\r\n+import static org.apache.dubbo.common.utils.StringUtils.length;\r\n+import static org.apache.dubbo.common.utils.StringUtils.repeat;\r\n+\r\n+/**\r\n+ * tree\r\n+ */\r\n+public class TTree implements TComponent {\r\n+\r\n+    private static final String STEP_FIRST_CHAR = \"`---\";\r\n+    private static final String STEP_NORMAL_CHAR = \"+---\";\r\n+    private static final String STEP_HAS_BOARD = \"|   \";\r\n+    private static final String STEP_EMPTY_BOARD = \"    \";\r\n+\r\n+    // should output cost or not\r\n+    private final boolean isPrintCost;\r\n+\r\n+    // tree node\r\n+    private final Node root;\r\n+\r\n+    // current node\r\n+    private Node current;\r\n+\r\n+\r\n+    public TTree(boolean isPrintCost, String title) {\r\n+        this.root = new Node(title).markBegin().markEnd();\r\n+        this.current = root;\r\n+        this.isPrintCost = isPrintCost;\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public String rendering() {\r\n+\r\n+        final StringBuilder treeSB = new StringBuilder();\r\n+        recursive(0, true, \"\", root, new Callback() {\r\n+\r\n+            @Override\r\n+            public void callback(int deep, boolean isLast, String prefix, Node node) {\r\n+\r\n+                final boolean hasChild = !node.children.isEmpty();\r\n+                final String stepString = isLast ? STEP_FIRST_CHAR : STEP_NORMAL_CHAR;\r\n+                final int stepStringLength = length(stepString);\r\n+                treeSB.append(prefix).append(stepString);\r\n+\r\n+                int costPrefixLength = 0;\r\n+                if (hasChild) {\r\n+                    treeSB.append(\"+\");\r\n+                }\r\n+                if (isPrintCost\r\n+                        && !node.isRoot()) {\r\n+                    final String costPrefix = String.format(\"[%s,%sms]\", (node.endTimestamp - root.beginTimestamp), (node.endTimestamp - node.beginTimestamp));\r\n+                    costPrefixLength = length(costPrefix);\r\n+                    treeSB.append(costPrefix);\r\n+                }\r\n+\r\n+                try (Scanner scanner = new Scanner(new StringReader(node.data.toString()))) {\r\n+                    boolean isFirst = true;\r\n+                    while (scanner.hasNextLine()) {\r\n+                        if (isFirst) {\r\n+                            treeSB.append(scanner.nextLine()).append(\"\\n\");\r\n+                            isFirst = false;\r\n+                        } else {\r\n+                            treeSB.append(prefix)\r\n+                                    .append(repeat(' ', stepStringLength))\r\n+                                    .append(hasChild ? \"|\" : EMPTY_STRING)\r\n+                                    .append(repeat(' ', costPrefixLength))\r\n+                                    .append(scanner.nextLine())\r\n+                                    .append(System.lineSeparator());\r\n+                        }\r\n+                    }\r\n+                }\r\n+\r\n+            }\r\n+\r\n+        });\r\n+\r\n+        return treeSB.toString();\r\n+    }\r\n+\r\n+    /**\r\n+     * recursive visit\r\n+     */\r\n+    private void recursive(int deep, boolean isLast, String prefix, Node node, Callback callback) {\r\n+        callback.callback(deep, isLast, prefix, node);\r\n+        if (!node.isLeaf()) {\r\n+            final int size = node.children.size();\r\n+            for (int index = 0; index < size; index++) {\r\n+                final boolean isLastFlag = index == size - 1;\r\n+                final String currentPrefix = isLast ? prefix + STEP_EMPTY_BOARD : prefix + STEP_HAS_BOARD;\r\n+                recursive(\r\n+                        deep + 1,\r\n+                        isLastFlag,\r\n+                        currentPrefix,\r\n+                        node.children.get(index),\r\n+                        callback\r\n+                );\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public boolean isTop() {\r\n+        return current.isRoot();\r\n+    }\r\n+\r\n+    /**\r\n+     * create a branch node\r\n+     *\r\n+     * @param data node data\r\n+     * @return this\r\n+     */\r\n+    public TTree begin(Object data) {\r\n+        current = new Node(current, data);\r\n+        current.markBegin();\r\n+        return this;\r\n+    }\r\n+\r\n+    public TTree begin() {\r\n+        return begin(null);\r\n+    }\r\n+\r\n+    public Object get() {\r\n+        if (current.isRoot()) {\r\n+            throw new IllegalStateException(\"current node is root.\");\r\n+        }\r\n+        return current.data;\r\n+    }\r\n+\r\n+    public TTree set(Object data) {\r\n+        if (current.isRoot()) {\r\n+            throw new IllegalStateException(\"current node is root.\");\r\n+        }\r\n+        current.data = data;\r\n+        return this;\r\n+    }\r\n+\r\n+    /**\r\n+     * end a branch node\r\n+     *\r\n+     * @return this\r\n+     */\r\n+    public TTree end() {\r\n+        if (current.isRoot()) {\r\n+            throw new IllegalStateException(\"current node is root.\");\r\n+        }\r\n+        current.markEnd();\r\n+        current = current.parent;\r\n+        return this;\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * tree node\r\n+     */\r\n+    private static class Node {\r\n+\r\n+        /**\r\n+         * parent node\r\n+         */\r\n+        final Node parent;\r\n+\r\n+        /**\r\n+         * node data\r\n+         */\r\n+        Object data;\r\n+\r\n+        /**\r\n+         * child nodes\r\n+         */\r\n+        final List<Node> children = new ArrayList<Node>();\r\n+\r\n+        /**\r\n+         * begin timestamp\r\n+         */\r\n+        private long beginTimestamp;\r\n+\r\n+        /**\r\n+         * end timestamp\r\n+         */\r\n+        private long endTimestamp;\r\n+\r\n+        /**\r\n+         * construct root node\r\n+         */\r\n+        private Node(Object data) {\r\n+            this.parent = null;\r\n+            this.data = data;\r\n+        }\r\n+\r\n+        /**\r\n+         * construct a regular node\r\n+         *\r\n+         * @param parent parent node\r\n+         * @param data   node data\r\n+         */\r\n+        private Node(Node parent, Object data) {\r\n+            this.parent = parent;\r\n+            this.data = data;\r\n+            parent.children.add(this);\r\n+        }\r\n+\r\n+        /**\r\n+         * is the current node the root node\r\n+         *\r\n+         * @return true / false\r\n+         */\r\n+        boolean isRoot() {\r\n+            return null == parent;\r\n+        }\r\n+\r\n+        /**\r\n+         * if the current node the leaf node\r\n+         *\r\n+         * @return true / false\r\n+         */\r\n+        boolean isLeaf() {\r\n+            return children.isEmpty();\r\n+        }\r\n+\r\n+        Node markBegin() {\r\n+            beginTimestamp = currentTimeMillis();\r\n+            return this;\r\n+        }\r\n+\r\n+        Node markEnd() {\r\n+            endTimestamp = currentTimeMillis();\r\n+            return this;\r\n+        }\r\n+\r\n+    }\r\n+\r\n+\r\n+    /**\r\n+     * callback interface for recursive visit\r\n+     */\r\n+    private interface Callback {\r\n+\r\n+        void callback(int deep, boolean isLast, String prefix, Node node);\r\n+\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/Constants.java", "source2": "org/apache/dubbo/common/serialize/Constants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,36 +1,36 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.serialize;\n-\n-public interface Constants {\n-    byte HESSIAN2_SERIALIZATION_ID = 2;\n-    byte JAVA_SERIALIZATION_ID = 3;\n-    byte COMPACTED_JAVA_SERIALIZATION_ID = 4;\n-    byte FASTJSON_SERIALIZATION_ID = 6;\n-    byte NATIVE_JAVA_SERIALIZATION_ID = 7;\n-    byte KRYO_SERIALIZATION_ID = 8;\n-    byte FST_SERIALIZATION_ID = 9;\n-    byte NATIVE_HESSIAN_SERIALIZATION_ID = 10;\n-    byte PROTOSTUFF_SERIALIZATION_ID = 12;\n-    byte AVRO_SERIALIZATION_ID = 11;\n-    byte GSON_SERIALIZATION_ID = 16;\n-    byte PROTOBUF_JSON_SERIALIZATION_ID = 21;\n-\n-    byte PROTOBUF_SERIALIZATION_ID = 22;\n-    byte KRYO_SERIALIZATION2_ID = 25;\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.serialize;\r\n+\r\n+public interface Constants {\r\n+    byte HESSIAN2_SERIALIZATION_ID = 2;\r\n+    byte JAVA_SERIALIZATION_ID = 3;\r\n+    byte COMPACTED_JAVA_SERIALIZATION_ID = 4;\r\n+    byte FASTJSON_SERIALIZATION_ID = 6;\r\n+    byte NATIVE_JAVA_SERIALIZATION_ID = 7;\r\n+    byte KRYO_SERIALIZATION_ID = 8;\r\n+    byte FST_SERIALIZATION_ID = 9;\r\n+    byte NATIVE_HESSIAN_SERIALIZATION_ID = 10;\r\n+    byte PROTOSTUFF_SERIALIZATION_ID = 12;\r\n+    byte AVRO_SERIALIZATION_ID = 11;\r\n+    byte GSON_SERIALIZATION_ID = 16;\r\n+    byte PROTOBUF_JSON_SERIALIZATION_ID = 21;\r\n+\r\n+    byte PROTOBUF_SERIALIZATION_ID = 22;\r\n+    byte KRYO_SERIALIZATION2_ID = 25;\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/ObjectInput.java", "source2": "org/apache/dubbo/common/serialize/ObjectInput.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,89 +1,89 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize;\n-\n-import java.io.IOException;\n-import java.lang.reflect.Type;\n-import java.util.Map;\n-\n-/**\n- * Object input interface.\n- */\n-public interface ObjectInput extends DataInput {\n-\n-    /**\n-     * Consider use {@link #readObject(Class)} or {@link #readObject(Class, Type)} where possible\n-     *\n-     * @return object\n-     * @throws IOException if an I/O error occurs\n-     * @throws ClassNotFoundException if an ClassNotFoundException occurs\n-     */\n-    @Deprecated\n-    Object readObject() throws IOException, ClassNotFoundException;\n-\n-    /**\n-     * read object\n-     *\n-     * @param cls object class\n-     * @return object\n-     * @throws IOException if an I/O error occurs\n-     * @throws ClassNotFoundException if an ClassNotFoundException occurs\n-     */\n-    <T> T readObject(Class<T> cls) throws IOException, ClassNotFoundException;\n-\n-    /**\n-     * read object\n-     *\n-     * @param cls object class\n-     * @param type object type\n-     * @return object\n-     * @throws IOException if an I/O error occurs\n-     * @throws ClassNotFoundException if an ClassNotFoundException occurs\n-     */\n-    <T> T readObject(Class<T> cls, Type type) throws IOException, ClassNotFoundException;\n-\n-\n-    /**\n-     * The following methods are customized for the requirement of Dubbo's RPC protocol implementation. Legacy protocol\n-     * implementation will try to write Map, Throwable and Null value directly to the stream, which does not meet the\n-     * restrictions of all serialization protocols.\n-     *\n-     * <p>\n-     * See how ProtobufSerialization, KryoSerialization implemented these methods for more details.\n-     * <p>\n-     * <p>\n-     * The binding of RPC protocol and biz serialization protocol is not a good practice. Encoding of RPC protocol\n-     * should be highly independent and portable, easy to cross platforms and languages, for example, like the http headers,\n-     * restricting the content of headers / attachments to Ascii strings and uses ISO_8859_1 to encode them.\n-     * https://tools.ietf.org/html/rfc7540#section-8.1.2\n-     */\n-    default Throwable readThrowable() throws IOException, ClassNotFoundException {\n-        Object obj = readObject();\n-        if (!(obj instanceof Throwable)) {\n-            throw new IOException(\"Response data error, expect Throwable, but get \" + obj);\n-        }\n-        return (Throwable) obj;\n-    }\n-\n-    default Object readEvent() throws IOException, ClassNotFoundException {\n-        return readObject();\n-    }\n-\n-    default Map<String, Object> readAttachments() throws IOException, ClassNotFoundException {\n-        return readObject(Map.class);\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize;\r\n+\r\n+import java.io.IOException;\r\n+import java.lang.reflect.Type;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * Object input interface.\r\n+ */\r\n+public interface ObjectInput extends DataInput {\r\n+\r\n+    /**\r\n+     * Consider use {@link #readObject(Class)} or {@link #readObject(Class, Type)} where possible\r\n+     *\r\n+     * @return object\r\n+     * @throws IOException if an I/O error occurs\r\n+     * @throws ClassNotFoundException if an ClassNotFoundException occurs\r\n+     */\r\n+    @Deprecated\r\n+    Object readObject() throws IOException, ClassNotFoundException;\r\n+\r\n+    /**\r\n+     * read object\r\n+     *\r\n+     * @param cls object class\r\n+     * @return object\r\n+     * @throws IOException if an I/O error occurs\r\n+     * @throws ClassNotFoundException if an ClassNotFoundException occurs\r\n+     */\r\n+    <T> T readObject(Class<T> cls) throws IOException, ClassNotFoundException;\r\n+\r\n+    /**\r\n+     * read object\r\n+     *\r\n+     * @param cls object class\r\n+     * @param type object type\r\n+     * @return object\r\n+     * @throws IOException if an I/O error occurs\r\n+     * @throws ClassNotFoundException if an ClassNotFoundException occurs\r\n+     */\r\n+    <T> T readObject(Class<T> cls, Type type) throws IOException, ClassNotFoundException;\r\n+\r\n+\r\n+    /**\r\n+     * The following methods are customized for the requirement of Dubbo's RPC protocol implementation. Legacy protocol\r\n+     * implementation will try to write Map, Throwable and Null value directly to the stream, which does not meet the\r\n+     * restrictions of all serialization protocols.\r\n+     *\r\n+     * <p>\r\n+     * See how ProtobufSerialization, KryoSerialization implemented these methods for more details.\r\n+     * <p>\r\n+     * <p>\r\n+     * The binding of RPC protocol and biz serialization protocol is not a good practice. Encoding of RPC protocol\r\n+     * should be highly independent and portable, easy to cross platforms and languages, for example, like the http headers,\r\n+     * restricting the content of headers / attachments to Ascii strings and uses ISO_8859_1 to encode them.\r\n+     * https://tools.ietf.org/html/rfc7540#section-8.1.2\r\n+     */\r\n+    default Throwable readThrowable() throws IOException, ClassNotFoundException {\r\n+        Object obj = readObject();\r\n+        if (!(obj instanceof Throwable)) {\r\n+            throw new IOException(\"Response data error, expect Throwable, but get \" + obj);\r\n+        }\r\n+        return (Throwable) obj;\r\n+    }\r\n+\r\n+    default Object readEvent() throws IOException, ClassNotFoundException {\r\n+        return readObject();\r\n+    }\r\n+\r\n+    default Map<String, Object> readAttachments() throws IOException, ClassNotFoundException {\r\n+        return readObject(Map.class);\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/common/serialize/ObjectOutput.java", "source2": "org/apache/dubbo/common/serialize/ObjectOutput.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,60 +1,60 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize;\n-\n-import java.io.IOException;\n-import java.util.Map;\n-\n-/**\n- * Object output interface.\n- */\n-public interface ObjectOutput extends DataOutput {\n-\n-    /**\n-     * write object.\n-     *\n-     * @param obj object.\n-     */\n-    void writeObject(Object obj) throws IOException;\n-\n-    /**\n-     * The following methods are customized for the requirement of Dubbo's RPC protocol implementation. Legacy protocol\n-     * implementation will try to write Map, Throwable and Null value directly to the stream, which does not meet the\n-     * restrictions of all serialization protocols.\n-     *\n-     * <p>\n-     * See how ProtobufSerialization, KryoSerialization implemented these methods for more details.\n-     * <p>\n-     *\n-     * The binding of RPC protocol and biz serialization protocol is not a good practice. Encoding of RPC protocol\n-     * should be highly independent and portable, easy to cross platforms and languages, for example, like the http headers,\n-     * restricting the content of headers / attachments to Ascii strings and uses ISO_8859_1 to encode them.\n-     * https://tools.ietf.org/html/rfc7540#section-8.1.2\n-     */\n-    default void writeThrowable(Object obj) throws IOException {\n-        writeObject(obj);\n-    }\n-\n-    default void writeEvent(Object data) throws IOException {\n-        writeObject(data);\n-    }\n-\n-    default void writeAttachments(Map<String, Object> attachments) throws IOException {\n-        writeObject(attachments);\n-    }\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize;\r\n+\r\n+import java.io.IOException;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * Object output interface.\r\n+ */\r\n+public interface ObjectOutput extends DataOutput {\r\n+\r\n+    /**\r\n+     * write object.\r\n+     *\r\n+     * @param obj object.\r\n+     */\r\n+    void writeObject(Object obj) throws IOException;\r\n+\r\n+    /**\r\n+     * The following methods are customized for the requirement of Dubbo's RPC protocol implementation. Legacy protocol\r\n+     * implementation will try to write Map, Throwable and Null value directly to the stream, which does not meet the\r\n+     * restrictions of all serialization protocols.\r\n+     *\r\n+     * <p>\r\n+     * See how ProtobufSerialization, KryoSerialization implemented these methods for more details.\r\n+     * <p>\r\n+     *\r\n+     * The binding of RPC protocol and biz serialization protocol is not a good practice. Encoding of RPC protocol\r\n+     * should be highly independent and portable, easy to cross platforms and languages, for example, like the http headers,\r\n+     * restricting the content of headers / attachments to Ascii strings and uses ISO_8859_1 to encode them.\r\n+     * https://tools.ietf.org/html/rfc7540#section-8.1.2\r\n+     */\r\n+    default void writeThrowable(Object obj) throws IOException {\r\n+        writeObject(obj);\r\n+    }\r\n+\r\n+    default void writeEvent(Object data) throws IOException {\r\n+        writeObject(data);\r\n+    }\r\n+\r\n+    default void writeAttachments(Map<String, Object> attachments) throws IOException {\r\n+        writeObject(attachments);\r\n+    }\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/common/serialize/Serialization.java", "source2": "org/apache/dubbo/common/serialize/Serialization.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,76 +1,76 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.Adaptive;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-\n-/**\n- * Serialization strategy interface that specifies a serializer. (SPI, Singleton, ThreadSafe)\n- *\n- * The default extension is hessian2 and the default serialization implementation of the dubbo protocol.\n- * <pre>\n- *     e.g. &lt;dubbo:protocol serialization=\"xxx\" /&gt;\n- * </pre>\n- */\n-@SPI(\"hessian2\")\n-public interface Serialization {\n-\n-    /**\n-     * Get content type unique id, recommended that custom implementations use values different with\n-     * any value of {@link Constants} and don't greater than ExchangeCodec.SERIALIZATION_MASK (31) \n-     * because dubbo protocol use 5 bits to record serialization ID in header.\n-     *\n-     * @return content type id\n-     */\n-    byte getContentTypeId();\n-\n-    /**\n-     * Get content type\n-     *\n-     * @return content type\n-     */\n-    String getContentType();\n-\n-    /**\n-     * Get a serialization implementation instance\n-     *\n-     * @param url URL address for the remote service\n-     * @param output the underlying output stream\n-     * @return serializer\n-     * @throws IOException\n-     */\n-    @Adaptive\n-    ObjectOutput serialize(URL url, OutputStream output) throws IOException;\n-\n-    /**\n-     * Get a deserialization implementation instance\n-     *\n-     * @param url URL address for the remote service\n-     * @param input the underlying input stream\n-     * @return deserializer\n-     * @throws IOException\n-     */\n-    @Adaptive\n-    ObjectInput deserialize(URL url, InputStream input) throws IOException;\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.Adaptive;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+\r\n+/**\r\n+ * Serialization strategy interface that specifies a serializer. (SPI, Singleton, ThreadSafe)\r\n+ *\r\n+ * The default extension is hessian2 and the default serialization implementation of the dubbo protocol.\r\n+ * <pre>\r\n+ *     e.g. &lt;dubbo:protocol serialization=\"xxx\" /&gt;\r\n+ * </pre>\r\n+ */\r\n+@SPI(\"hessian2\")\r\n+public interface Serialization {\r\n+\r\n+    /**\r\n+     * Get content type unique id, recommended that custom implementations use values different with\r\n+     * any value of {@link Constants} and don't greater than ExchangeCodec.SERIALIZATION_MASK (31) \r\n+     * because dubbo protocol use 5 bits to record serialization ID in header.\r\n+     *\r\n+     * @return content type id\r\n+     */\r\n+    byte getContentTypeId();\r\n+\r\n+    /**\r\n+     * Get content type\r\n+     *\r\n+     * @return content type\r\n+     */\r\n+    String getContentType();\r\n+\r\n+    /**\r\n+     * Get a serialization implementation instance\r\n+     *\r\n+     * @param url URL address for the remote service\r\n+     * @param output the underlying output stream\r\n+     * @return serializer\r\n+     * @throws IOException\r\n+     */\r\n+    @Adaptive\r\n+    ObjectOutput serialize(URL url, OutputStream output) throws IOException;\r\n+\r\n+    /**\r\n+     * Get a deserialization implementation instance\r\n+     *\r\n+     * @param url URL address for the remote service\r\n+     * @param input the underlying input stream\r\n+     * @return deserializer\r\n+     * @throws IOException\r\n+     */\r\n+    @Adaptive\r\n+    ObjectInput deserialize(URL url, InputStream input) throws IOException;\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/support/SerializableClassRegistry.java", "source2": "org/apache/dubbo/common/serialize/support/SerializableClassRegistry.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,61 +1,61 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.support;\n-\n-import java.util.LinkedHashMap;\n-import java.util.Map;\n-\n-/**\n- * Provide a unified serialization registry, this class used for {@code dubbo-serialization-fst}\n- * and {@code dubbo-serialization-kryo}, it will register some classes at startup time (for example {@link AbstractKryoFactory#create})\n- */\n-public abstract class SerializableClassRegistry {\n-\n-\n-    private static final Map<Class<?>, Object> REGISTRATIONS = new LinkedHashMap<>();\n-\n-    /**\n-     * only supposed to be called at startup time\n-     *\n-     * @param clazz object type\n-     */\n-    public static void registerClass(Class<?> clazz) {\n-        registerClass(clazz, null);\n-    }\n-\n-    /**\n-     * only supposed to be called at startup time\n-     *\n-     * @param clazz object type\n-     * @param serializer object serializer\n-     */\n-    public static void registerClass(Class<?> clazz, Object serializer) {\n-        if (clazz == null) {\n-            throw new IllegalArgumentException(\"Class registered to kryo cannot be null!\");\n-        }\n-        REGISTRATIONS.put(clazz, serializer);\n-    }\n-\n-    /**\n-     * get registered classes\n-     *\n-     * @return class serializer\n-     * */\n-    public static Map<Class<?>, Object> getRegisteredClasses() {\n-        return REGISTRATIONS;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.support;\r\n+\r\n+import java.util.LinkedHashMap;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * Provide a unified serialization registry, this class used for {@code dubbo-serialization-fst}\r\n+ * and {@code dubbo-serialization-kryo}, it will register some classes at startup time (for example {@link AbstractKryoFactory#create})\r\n+ */\r\n+public abstract class SerializableClassRegistry {\r\n+\r\n+\r\n+    private static final Map<Class<?>, Object> REGISTRATIONS = new LinkedHashMap<>();\r\n+\r\n+    /**\r\n+     * only supposed to be called at startup time\r\n+     *\r\n+     * @param clazz object type\r\n+     */\r\n+    public static void registerClass(Class<?> clazz) {\r\n+        registerClass(clazz, null);\r\n+    }\r\n+\r\n+    /**\r\n+     * only supposed to be called at startup time\r\n+     *\r\n+     * @param clazz object type\r\n+     * @param serializer object serializer\r\n+     */\r\n+    public static void registerClass(Class<?> clazz, Object serializer) {\r\n+        if (clazz == null) {\r\n+            throw new IllegalArgumentException(\"Class registered to kryo cannot be null!\");\r\n+        }\r\n+        REGISTRATIONS.put(clazz, serializer);\r\n+    }\r\n+\r\n+    /**\r\n+     * get registered classes\r\n+     *\r\n+     * @return class serializer\r\n+     * */\r\n+    public static Map<Class<?>, Object> getRegisteredClasses() {\r\n+        return REGISTRATIONS;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/support/SerializationOptimizer.java", "source2": "org/apache/dubbo/common/serialize/support/SerializationOptimizer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,32 +1,32 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.support;\n-\n-import java.util.Collection;\n-\n-/**\n- * Interface defining serialization optimizer, there are nothing implementations for now.\n- */\n-public interface SerializationOptimizer {\n-\n-    /**\n-     * Get serializable classes\n-     *\n-     * @return serializable classes\n-     * */\n-    Collection<Class<?>> getSerializableClasses();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.support;\r\n+\r\n+import java.util.Collection;\r\n+\r\n+/**\r\n+ * Interface defining serialization optimizer, there are nothing implementations for now.\r\n+ */\r\n+public interface SerializationOptimizer {\r\n+\r\n+    /**\r\n+     * Get serializable classes\r\n+     *\r\n+     * @return serializable classes\r\n+     * */\r\n+    Collection<Class<?>> getSerializableClasses();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/fastjson/FastJsonObjectInput.java", "source2": "org/apache/dubbo/common/serialize/fastjson/FastJsonObjectInput.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,121 +1,121 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.fastjson;\n-\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-\n-import com.alibaba.fastjson.JSON;\n-\n-import java.io.BufferedReader;\n-import java.io.EOFException;\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.InputStreamReader;\n-import java.io.Reader;\n-import java.lang.reflect.Type;\n-\n-/**\n- * FastJson object input implementation\n- */\n-public class FastJsonObjectInput implements ObjectInput {\n-\n-    private final BufferedReader reader;\n-\n-    public FastJsonObjectInput(InputStream in) {\n-        this(new InputStreamReader(in));\n-    }\n-\n-    public FastJsonObjectInput(Reader reader) {\n-        this.reader = new BufferedReader(reader);\n-    }\n-\n-    @Override\n-    public boolean readBool() throws IOException {\n-        return read(boolean.class);\n-    }\n-\n-    @Override\n-    public byte readByte() throws IOException {\n-        return read(byte.class);\n-    }\n-\n-    @Override\n-    public short readShort() throws IOException {\n-        return read(short.class);\n-    }\n-\n-    @Override\n-    public int readInt() throws IOException {\n-        return read(int.class);\n-    }\n-\n-    @Override\n-    public long readLong() throws IOException {\n-        return read(long.class);\n-    }\n-\n-    @Override\n-    public float readFloat() throws IOException {\n-        return read(float.class);\n-    }\n-\n-    @Override\n-    public double readDouble() throws IOException {\n-        return read(double.class);\n-    }\n-\n-    @Override\n-    public String readUTF() throws IOException {\n-        return read(String.class);\n-    }\n-\n-    @Override\n-    public byte[] readBytes() throws IOException {\n-        return readLine().getBytes();\n-    }\n-\n-    @Override\n-    public Object readObject() throws IOException, ClassNotFoundException {\n-        String json = readLine();\n-        return JSON.parse(json);\n-    }\n-\n-    @Override\n-    public <T> T readObject(Class<T> cls) throws IOException, ClassNotFoundException {\n-        return read(cls);\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> T readObject(Class<T> cls, Type type) throws IOException, ClassNotFoundException {\n-        String json = readLine();\n-        return (T) JSON.parseObject(json, type);\n-    }\n-\n-    private String readLine() throws IOException, EOFException {\n-        String line = reader.readLine();\n-        if (line == null || line.trim().length() == 0) {\n-            throw new EOFException();\n-        }\n-        return line;\n-    }\n-\n-    private <T> T read(Class<T> cls) throws IOException {\n-        String json = readLine();\n-        return JSON.parseObject(json, cls);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.fastjson;\r\n+\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+\r\n+import com.alibaba.fastjson.JSON;\r\n+\r\n+import java.io.BufferedReader;\r\n+import java.io.EOFException;\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.InputStreamReader;\r\n+import java.io.Reader;\r\n+import java.lang.reflect.Type;\r\n+\r\n+/**\r\n+ * FastJson object input implementation\r\n+ */\r\n+public class FastJsonObjectInput implements ObjectInput {\r\n+\r\n+    private final BufferedReader reader;\r\n+\r\n+    public FastJsonObjectInput(InputStream in) {\r\n+        this(new InputStreamReader(in));\r\n+    }\r\n+\r\n+    public FastJsonObjectInput(Reader reader) {\r\n+        this.reader = new BufferedReader(reader);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean readBool() throws IOException {\r\n+        return read(boolean.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte readByte() throws IOException {\r\n+        return read(byte.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public short readShort() throws IOException {\r\n+        return read(short.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public int readInt() throws IOException {\r\n+        return read(int.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public long readLong() throws IOException {\r\n+        return read(long.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public float readFloat() throws IOException {\r\n+        return read(float.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public double readDouble() throws IOException {\r\n+        return read(double.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String readUTF() throws IOException {\r\n+        return read(String.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte[] readBytes() throws IOException {\r\n+        return readLine().getBytes();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object readObject() throws IOException, ClassNotFoundException {\r\n+        String json = readLine();\r\n+        return JSON.parse(json);\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> T readObject(Class<T> cls) throws IOException, ClassNotFoundException {\r\n+        return read(cls);\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> T readObject(Class<T> cls, Type type) throws IOException, ClassNotFoundException {\r\n+        String json = readLine();\r\n+        return (T) JSON.parseObject(json, type);\r\n+    }\r\n+\r\n+    private String readLine() throws IOException, EOFException {\r\n+        String line = reader.readLine();\r\n+        if (line == null || line.trim().length() == 0) {\r\n+            throw new EOFException();\r\n+        }\r\n+        return line;\r\n+    }\r\n+\r\n+    private <T> T read(Class<T> cls) throws IOException {\r\n+        String json = readLine();\r\n+        return JSON.parseObject(json, cls);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/fastjson/FastJsonSerialization.java", "source2": "org/apache/dubbo/common/serialize/fastjson/FastJsonSerialization.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,59 +1,59 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.fastjson;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.Serialization;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-\n-import static org.apache.dubbo.common.serialize.Constants.FASTJSON_SERIALIZATION_ID;\n-\n-/**\n- * FastJson serialization implementation\n- *\n- * <pre>\n- *     e.g. &lt;dubbo:protocol serialization=\"fastjson\" /&gt;\n- * </pre>\n- */\n-public class FastJsonSerialization implements Serialization {\n-\n-    @Override\n-    public byte getContentTypeId() {\n-        return FASTJSON_SERIALIZATION_ID;\n-    }\n-\n-    @Override\n-    public String getContentType() {\n-        return \"text/json\";\n-    }\n-\n-    @Override\n-    public ObjectOutput serialize(URL url, OutputStream output) throws IOException {\n-        return new FastJsonObjectOutput(output);\n-    }\n-\n-    @Override\n-    public ObjectInput deserialize(URL url, InputStream input) throws IOException {\n-        return new FastJsonObjectInput(input);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.fastjson;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+\r\n+import static org.apache.dubbo.common.serialize.Constants.FASTJSON_SERIALIZATION_ID;\r\n+\r\n+/**\r\n+ * FastJson serialization implementation\r\n+ *\r\n+ * <pre>\r\n+ *     e.g. &lt;dubbo:protocol serialization=\"fastjson\" /&gt;\r\n+ * </pre>\r\n+ */\r\n+public class FastJsonSerialization implements Serialization {\r\n+\r\n+    @Override\r\n+    public byte getContentTypeId() {\r\n+        return FASTJSON_SERIALIZATION_ID;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getContentType() {\r\n+        return \"text/json\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectOutput serialize(URL url, OutputStream output) throws IOException {\r\n+        return new FastJsonObjectOutput(output);\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectInput deserialize(URL url, InputStream input) throws IOException {\r\n+        return new FastJsonObjectInput(input);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/fst/FstFactory.java", "source2": "org/apache/dubbo/common/serialize/fst/FstFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,53 +1,53 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.fst;\n-\n-import org.apache.dubbo.common.serialize.support.SerializableClassRegistry;\n-\n-import org.nustaq.serialization.FSTConfiguration;\n-import org.nustaq.serialization.FSTObjectInput;\n-import org.nustaq.serialization.FSTObjectOutput;\n-\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-\n-/**\n- * Fst object input/output factory\n- */\n-public class FstFactory {\n-\n-    private static final FstFactory FACTORY = new FstFactory();\n-\n-    private final FSTConfiguration conf = FSTConfiguration.createDefaultConfiguration();\n-\n-\n-    public static FstFactory getDefaultFactory() {\n-        return FACTORY;\n-    }\n-\n-    public FstFactory() {\n-        SerializableClassRegistry.getRegisteredClasses().keySet().forEach(conf::registerClass);\n-    }\n-\n-    public FSTObjectOutput getObjectOutput(OutputStream outputStream) {\n-        return conf.getObjectOutput(outputStream);\n-    }\n-\n-    public FSTObjectInput getObjectInput(InputStream inputStream) {\n-        return conf.getObjectInput(inputStream);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.fst;\r\n+\r\n+import org.apache.dubbo.common.serialize.support.SerializableClassRegistry;\r\n+\r\n+import org.nustaq.serialization.FSTConfiguration;\r\n+import org.nustaq.serialization.FSTObjectInput;\r\n+import org.nustaq.serialization.FSTObjectOutput;\r\n+\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+\r\n+/**\r\n+ * Fst object input/output factory\r\n+ */\r\n+public class FstFactory {\r\n+\r\n+    private static final FstFactory FACTORY = new FstFactory();\r\n+\r\n+    private final FSTConfiguration conf = FSTConfiguration.createDefaultConfiguration();\r\n+\r\n+\r\n+    public static FstFactory getDefaultFactory() {\r\n+        return FACTORY;\r\n+    }\r\n+\r\n+    public FstFactory() {\r\n+        SerializableClassRegistry.getRegisteredClasses().keySet().forEach(conf::registerClass);\r\n+    }\r\n+\r\n+    public FSTObjectOutput getObjectOutput(OutputStream outputStream) {\r\n+        return conf.getObjectOutput(outputStream);\r\n+    }\r\n+\r\n+    public FSTObjectInput getObjectInput(InputStream inputStream) {\r\n+        return conf.getObjectInput(inputStream);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/fst/FstSerialization.java", "source2": "org/apache/dubbo/common/serialize/fst/FstSerialization.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,58 +1,58 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.fst;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.Serialization;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-\n-import static org.apache.dubbo.common.serialize.Constants.FST_SERIALIZATION_ID;\n-\n-/**\n- * Fst serialization implementation\n- *\n- * <pre>\n- *     e.g. &lt;dubbo:protocol serialization=\"fst\" /&gt;\n- * </pre>\n- */\n-public class FstSerialization implements Serialization {\n-\n-    @Override\n-    public byte getContentTypeId() {\n-        return FST_SERIALIZATION_ID;\n-    }\n-\n-    @Override\n-    public String getContentType() {\n-        return \"x-application/fst\";\n-    }\n-\n-    @Override\n-    public ObjectOutput serialize(URL url, OutputStream out) throws IOException {\n-        return new FstObjectOutput(out);\n-    }\n-\n-    @Override\n-    public ObjectInput deserialize(URL url, InputStream is) throws IOException {\n-        return new FstObjectInput(is);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.fst;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+\r\n+import static org.apache.dubbo.common.serialize.Constants.FST_SERIALIZATION_ID;\r\n+\r\n+/**\r\n+ * Fst serialization implementation\r\n+ *\r\n+ * <pre>\r\n+ *     e.g. &lt;dubbo:protocol serialization=\"fst\" /&gt;\r\n+ * </pre>\r\n+ */\r\n+public class FstSerialization implements Serialization {\r\n+\r\n+    @Override\r\n+    public byte getContentTypeId() {\r\n+        return FST_SERIALIZATION_ID;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getContentType() {\r\n+        return \"x-application/fst\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectOutput serialize(URL url, OutputStream out) throws IOException {\r\n+        return new FstObjectOutput(out);\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectInput deserialize(URL url, InputStream is) throws IOException {\r\n+        return new FstObjectInput(is);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/hessian2/Hessian2ObjectInput.java", "source2": "org/apache/dubbo/common/serialize/hessian2/Hessian2ObjectInput.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,120 +1,120 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.hessian2;\n-\n-import org.apache.dubbo.common.serialize.Cleanable;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.hessian2.dubbo.Hessian2FactoryInitializer;\n-\n-import com.alibaba.com.caucho.hessian.io.Hessian2Input;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.lang.reflect.Type;\n-\n-/**\n- * Hessian2 object input implementation\n- */\n-public class Hessian2ObjectInput implements ObjectInput, Cleanable {\n-\n-    private static ThreadLocal<Hessian2Input> INPUT_TL = ThreadLocal.withInitial(() -> {\n-        Hessian2Input h2i = new Hessian2Input(null);\n-        h2i.setSerializerFactory(Hessian2FactoryInitializer.getInstance().getSerializerFactory());\n-        h2i.setCloseStreamOnClose(true);\n-        return h2i;\n-    });\n-\n-    private final Hessian2Input mH2i;\n-\n-    public Hessian2ObjectInput(InputStream is) {\n-        mH2i = INPUT_TL.get();\n-        mH2i.init(is);\n-    }\n-\n-    @Override\n-    public boolean readBool() throws IOException {\n-        return mH2i.readBoolean();\n-    }\n-\n-    @Override\n-    public byte readByte() throws IOException {\n-        return (byte) mH2i.readInt();\n-    }\n-\n-    @Override\n-    public short readShort() throws IOException {\n-        return (short) mH2i.readInt();\n-    }\n-\n-    @Override\n-    public int readInt() throws IOException {\n-        return mH2i.readInt();\n-    }\n-\n-    @Override\n-    public long readLong() throws IOException {\n-        return mH2i.readLong();\n-    }\n-\n-    @Override\n-    public float readFloat() throws IOException {\n-        return (float) mH2i.readDouble();\n-    }\n-\n-    @Override\n-    public double readDouble() throws IOException {\n-        return mH2i.readDouble();\n-    }\n-\n-    @Override\n-    public byte[] readBytes() throws IOException {\n-        return mH2i.readBytes();\n-    }\n-\n-    @Override\n-    public String readUTF() throws IOException {\n-        return mH2i.readString();\n-    }\n-\n-    @Override\n-    public Object readObject() throws IOException {\n-        return mH2i.readObject();\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> T readObject(Class<T> cls) throws IOException,\n-            ClassNotFoundException {\n-        return (T) mH2i.readObject(cls);\n-    }\n-\n-    @Override\n-    public <T> T readObject(Class<T> cls, Type type) throws IOException, ClassNotFoundException {\n-        return readObject(cls);\n-    }\n-\n-    public InputStream readInputStream() throws IOException {\n-        return mH2i.readInputStream();\n-    }\n-\n-    @Override\n-    public void cleanup() {\n-        if(mH2i != null) {\n-            mH2i.reset();\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.hessian2;\r\n+\r\n+import org.apache.dubbo.common.serialize.Cleanable;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.hessian2.dubbo.Hessian2FactoryInitializer;\r\n+\r\n+import com.alibaba.com.caucho.hessian.io.Hessian2Input;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.lang.reflect.Type;\r\n+\r\n+/**\r\n+ * Hessian2 object input implementation\r\n+ */\r\n+public class Hessian2ObjectInput implements ObjectInput, Cleanable {\r\n+\r\n+    private static ThreadLocal<Hessian2Input> INPUT_TL = ThreadLocal.withInitial(() -> {\r\n+        Hessian2Input h2i = new Hessian2Input(null);\r\n+        h2i.setSerializerFactory(Hessian2FactoryInitializer.getInstance().getSerializerFactory());\r\n+        h2i.setCloseStreamOnClose(true);\r\n+        return h2i;\r\n+    });\r\n+\r\n+    private final Hessian2Input mH2i;\r\n+\r\n+    public Hessian2ObjectInput(InputStream is) {\r\n+        mH2i = INPUT_TL.get();\r\n+        mH2i.init(is);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean readBool() throws IOException {\r\n+        return mH2i.readBoolean();\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte readByte() throws IOException {\r\n+        return (byte) mH2i.readInt();\r\n+    }\r\n+\r\n+    @Override\r\n+    public short readShort() throws IOException {\r\n+        return (short) mH2i.readInt();\r\n+    }\r\n+\r\n+    @Override\r\n+    public int readInt() throws IOException {\r\n+        return mH2i.readInt();\r\n+    }\r\n+\r\n+    @Override\r\n+    public long readLong() throws IOException {\r\n+        return mH2i.readLong();\r\n+    }\r\n+\r\n+    @Override\r\n+    public float readFloat() throws IOException {\r\n+        return (float) mH2i.readDouble();\r\n+    }\r\n+\r\n+    @Override\r\n+    public double readDouble() throws IOException {\r\n+        return mH2i.readDouble();\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte[] readBytes() throws IOException {\r\n+        return mH2i.readBytes();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String readUTF() throws IOException {\r\n+        return mH2i.readString();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object readObject() throws IOException {\r\n+        return mH2i.readObject();\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> T readObject(Class<T> cls) throws IOException,\r\n+            ClassNotFoundException {\r\n+        return (T) mH2i.readObject(cls);\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> T readObject(Class<T> cls, Type type) throws IOException, ClassNotFoundException {\r\n+        return readObject(cls);\r\n+    }\r\n+\r\n+    public InputStream readInputStream() throws IOException {\r\n+        return mH2i.readInputStream();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void cleanup() {\r\n+        if(mH2i != null) {\r\n+            mH2i.reset();\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/hessian2/Hessian2ObjectOutput.java", "source2": "org/apache/dubbo/common/serialize/hessian2/Hessian2ObjectOutput.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,117 +1,117 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.hessian2;\n-\n-import org.apache.dubbo.common.serialize.Cleanable;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.hessian2.dubbo.Hessian2FactoryInitializer;\n-\n-import com.alibaba.com.caucho.hessian.io.Hessian2Output;\n-\n-import java.io.IOException;\n-import java.io.OutputStream;\n-\n-/**\n- * Hessian2 object output implementation\n- */\n-public class Hessian2ObjectOutput implements ObjectOutput, Cleanable {\n-\n-    private static ThreadLocal<Hessian2Output> OUTPUT_TL = ThreadLocal.withInitial(() -> {\n-        Hessian2Output h2o = new Hessian2Output(null);\n-        h2o.setSerializerFactory(Hessian2FactoryInitializer.getInstance().getSerializerFactory());\n-        h2o.setCloseStreamOnClose(true);\n-        return h2o;\n-    });\n-\n-    private final Hessian2Output mH2o;\n-\n-    public Hessian2ObjectOutput(OutputStream os) {\n-        mH2o = OUTPUT_TL.get();\n-        mH2o.init(os);\n-    }\n-\n-    @Override\n-    public void writeBool(boolean v) throws IOException {\n-        mH2o.writeBoolean(v);\n-    }\n-\n-    @Override\n-    public void writeByte(byte v) throws IOException {\n-        mH2o.writeInt(v);\n-    }\n-\n-    @Override\n-    public void writeShort(short v) throws IOException {\n-        mH2o.writeInt(v);\n-    }\n-\n-    @Override\n-    public void writeInt(int v) throws IOException {\n-        mH2o.writeInt(v);\n-    }\n-\n-    @Override\n-    public void writeLong(long v) throws IOException {\n-        mH2o.writeLong(v);\n-    }\n-\n-    @Override\n-    public void writeFloat(float v) throws IOException {\n-        mH2o.writeDouble(v);\n-    }\n-\n-    @Override\n-    public void writeDouble(double v) throws IOException {\n-        mH2o.writeDouble(v);\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] b) throws IOException {\n-        mH2o.writeBytes(b);\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] b, int off, int len) throws IOException {\n-        mH2o.writeBytes(b, off, len);\n-    }\n-\n-    @Override\n-    public void writeUTF(String v) throws IOException {\n-        mH2o.writeString(v);\n-    }\n-\n-    @Override\n-    public void writeObject(Object obj) throws IOException {\n-        mH2o.writeObject(obj);\n-    }\n-\n-    @Override\n-    public void flushBuffer() throws IOException {\n-        mH2o.flushBuffer();\n-    }\n-\n-    public OutputStream getOutputStream() throws IOException {\n-        return mH2o.getBytesOutputStream();\n-    }\n-\n-    @Override\n-    public void cleanup() {\n-        if(mH2o != null) {\n-            mH2o.reset();\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.hessian2;\r\n+\r\n+import org.apache.dubbo.common.serialize.Cleanable;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.hessian2.dubbo.Hessian2FactoryInitializer;\r\n+\r\n+import com.alibaba.com.caucho.hessian.io.Hessian2Output;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.OutputStream;\r\n+\r\n+/**\r\n+ * Hessian2 object output implementation\r\n+ */\r\n+public class Hessian2ObjectOutput implements ObjectOutput, Cleanable {\r\n+\r\n+    private static ThreadLocal<Hessian2Output> OUTPUT_TL = ThreadLocal.withInitial(() -> {\r\n+        Hessian2Output h2o = new Hessian2Output(null);\r\n+        h2o.setSerializerFactory(Hessian2FactoryInitializer.getInstance().getSerializerFactory());\r\n+        h2o.setCloseStreamOnClose(true);\r\n+        return h2o;\r\n+    });\r\n+\r\n+    private final Hessian2Output mH2o;\r\n+\r\n+    public Hessian2ObjectOutput(OutputStream os) {\r\n+        mH2o = OUTPUT_TL.get();\r\n+        mH2o.init(os);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBool(boolean v) throws IOException {\r\n+        mH2o.writeBoolean(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeByte(byte v) throws IOException {\r\n+        mH2o.writeInt(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeShort(short v) throws IOException {\r\n+        mH2o.writeInt(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeInt(int v) throws IOException {\r\n+        mH2o.writeInt(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeLong(long v) throws IOException {\r\n+        mH2o.writeLong(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeFloat(float v) throws IOException {\r\n+        mH2o.writeDouble(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeDouble(double v) throws IOException {\r\n+        mH2o.writeDouble(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] b) throws IOException {\r\n+        mH2o.writeBytes(b);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] b, int off, int len) throws IOException {\r\n+        mH2o.writeBytes(b, off, len);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeUTF(String v) throws IOException {\r\n+        mH2o.writeString(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeObject(Object obj) throws IOException {\r\n+        mH2o.writeObject(obj);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void flushBuffer() throws IOException {\r\n+        mH2o.flushBuffer();\r\n+    }\r\n+\r\n+    public OutputStream getOutputStream() throws IOException {\r\n+        return mH2o.getBytesOutputStream();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void cleanup() {\r\n+        if(mH2o != null) {\r\n+            mH2o.reset();\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/hessian2/Hessian2Serialization.java", "source2": "org/apache/dubbo/common/serialize/hessian2/Hessian2Serialization.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,59 +1,59 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.hessian2;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.Serialization;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-\n-import static org.apache.dubbo.common.serialize.Constants.HESSIAN2_SERIALIZATION_ID;\n-\n-/**\n- * Hessian2 serialization implementation, hessian2 is the default serialization protocol for dubbo\n- *\n- * <pre>\n- *     e.g. &lt;dubbo:protocol serialization=\"hessian2\" /&gt;\n- * </pre>\n- */\n-public class Hessian2Serialization implements Serialization {\n-\n-    @Override\n-    public byte getContentTypeId() {\n-        return HESSIAN2_SERIALIZATION_ID;\n-    }\n-\n-    @Override\n-    public String getContentType() {\n-        return \"x-application/hessian2\";\n-    }\n-\n-    @Override\n-    public ObjectOutput serialize(URL url, OutputStream out) throws IOException {\n-        return new Hessian2ObjectOutput(out);\n-    }\n-\n-    @Override\n-    public ObjectInput deserialize(URL url, InputStream is) throws IOException {\n-        return new Hessian2ObjectInput(is);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.hessian2;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+\r\n+import static org.apache.dubbo.common.serialize.Constants.HESSIAN2_SERIALIZATION_ID;\r\n+\r\n+/**\r\n+ * Hessian2 serialization implementation, hessian2 is the default serialization protocol for dubbo\r\n+ *\r\n+ * <pre>\r\n+ *     e.g. &lt;dubbo:protocol serialization=\"hessian2\" /&gt;\r\n+ * </pre>\r\n+ */\r\n+public class Hessian2Serialization implements Serialization {\r\n+\r\n+    @Override\r\n+    public byte getContentTypeId() {\r\n+        return HESSIAN2_SERIALIZATION_ID;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getContentType() {\r\n+        return \"x-application/hessian2\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectOutput serialize(URL url, OutputStream out) throws IOException {\r\n+        return new Hessian2ObjectOutput(out);\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectInput deserialize(URL url, InputStream is) throws IOException {\r\n+        return new Hessian2ObjectInput(is);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/hessian2/Hessian2SerializerFactory.java", "source2": "org/apache/dubbo/common/serialize/hessian2/Hessian2SerializerFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,31 +1,31 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.hessian2;\n-\n-import com.alibaba.com.caucho.hessian.io.SerializerFactory;\n-\n-public class Hessian2SerializerFactory extends SerializerFactory {\n-\n-    public Hessian2SerializerFactory() {\n-    }\n-\n-    @Override\n-    public ClassLoader getClassLoader() {\n-        return Thread.currentThread().getContextClassLoader();\n-    }\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.hessian2;\r\n+\r\n+import com.alibaba.com.caucho.hessian.io.SerializerFactory;\r\n+\r\n+public class Hessian2SerializerFactory extends SerializerFactory {\r\n+\r\n+    public Hessian2SerializerFactory() {\r\n+    }\r\n+\r\n+    @Override\r\n+    public ClassLoader getClassLoader() {\r\n+        return Thread.currentThread().getContextClassLoader();\r\n+    }\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/common/serialize/hessian2/dubbo/AbstractHessian2FactoryInitializer.java", "source2": "org/apache/dubbo/common/serialize/hessian2/dubbo/AbstractHessian2FactoryInitializer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,36 +1,36 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.hessian2.dubbo;\n-\n-import com.alibaba.com.caucho.hessian.io.SerializerFactory;\n-\n-public abstract class AbstractHessian2FactoryInitializer implements Hessian2FactoryInitializer {\n-    private static SerializerFactory SERIALIZER_FACTORY;\n-\n-    @Override\n-    public SerializerFactory getSerializerFactory() {\n-        if (SERIALIZER_FACTORY != null) {\n-            return SERIALIZER_FACTORY;\n-        }\n-        synchronized (this) {\n-            SERIALIZER_FACTORY = createSerializerFactory();\n-        }\n-        return SERIALIZER_FACTORY;\n-    }\n-\n-    protected abstract SerializerFactory createSerializerFactory();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.hessian2.dubbo;\r\n+\r\n+import com.alibaba.com.caucho.hessian.io.SerializerFactory;\r\n+\r\n+public abstract class AbstractHessian2FactoryInitializer implements Hessian2FactoryInitializer {\r\n+    private static SerializerFactory SERIALIZER_FACTORY;\r\n+\r\n+    @Override\r\n+    public SerializerFactory getSerializerFactory() {\r\n+        if (SERIALIZER_FACTORY != null) {\r\n+            return SERIALIZER_FACTORY;\r\n+        }\r\n+        synchronized (this) {\r\n+            SERIALIZER_FACTORY = createSerializerFactory();\r\n+        }\r\n+        return SERIALIZER_FACTORY;\r\n+    }\r\n+\r\n+    protected abstract SerializerFactory createSerializerFactory();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/hessian2/dubbo/DefaultHessian2FactoryInitializer.java", "source2": "org/apache/dubbo/common/serialize/hessian2/dubbo/DefaultHessian2FactoryInitializer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,28 +1,28 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.hessian2.dubbo;\n-\n-import org.apache.dubbo.common.serialize.hessian2.Hessian2SerializerFactory;\n-\n-import com.alibaba.com.caucho.hessian.io.SerializerFactory;\n-\n-public class DefaultHessian2FactoryInitializer extends AbstractHessian2FactoryInitializer {\n-    @Override\n-    protected SerializerFactory createSerializerFactory() {\n-        return new Hessian2SerializerFactory();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.hessian2.dubbo;\r\n+\r\n+import org.apache.dubbo.common.serialize.hessian2.Hessian2SerializerFactory;\r\n+\r\n+import com.alibaba.com.caucho.hessian.io.SerializerFactory;\r\n+\r\n+public class DefaultHessian2FactoryInitializer extends AbstractHessian2FactoryInitializer {\r\n+    @Override\r\n+    protected SerializerFactory createSerializerFactory() {\r\n+        return new Hessian2SerializerFactory();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/hessian2/dubbo/Hessian2FactoryInitializer.java", "source2": "org/apache/dubbo/common/serialize/hessian2/dubbo/Hessian2FactoryInitializer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,43 +1,43 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.hessian2.dubbo;\n-\n-import org.apache.dubbo.common.config.ConfigurationUtils;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import com.alibaba.com.caucho.hessian.io.SerializerFactory;\n-\n-@SPI(\"default\")\n-public interface Hessian2FactoryInitializer {\n-    String WHITELIST = \"dubbo.application.hessian2.whitelist\";\n-    String ALLOW = \"dubbo.application.hessian2.allow\";\n-    String DENY = \"dubbo.application.hessian2.deny\";\n-    ExtensionLoader<Hessian2FactoryInitializer> loader = ExtensionLoader.getExtensionLoader(Hessian2FactoryInitializer.class);\n-\n-    SerializerFactory getSerializerFactory();\n-\n-    static Hessian2FactoryInitializer getInstance() {\n-        String whitelist = ConfigurationUtils.getProperty(WHITELIST);\n-        if (StringUtils.isNotEmpty(whitelist)) {\n-            return loader.getExtension(\"whitelist\");\n-        }\n-        return loader.getDefaultExtension();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.hessian2.dubbo;\r\n+\r\n+import org.apache.dubbo.common.config.ConfigurationUtils;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import com.alibaba.com.caucho.hessian.io.SerializerFactory;\r\n+\r\n+@SPI(\"default\")\r\n+public interface Hessian2FactoryInitializer {\r\n+    String WHITELIST = \"dubbo.application.hessian2.whitelist\";\r\n+    String ALLOW = \"dubbo.application.hessian2.allow\";\r\n+    String DENY = \"dubbo.application.hessian2.deny\";\r\n+    ExtensionLoader<Hessian2FactoryInitializer> loader = ExtensionLoader.getExtensionLoader(Hessian2FactoryInitializer.class);\r\n+\r\n+    SerializerFactory getSerializerFactory();\r\n+\r\n+    static Hessian2FactoryInitializer getInstance() {\r\n+        String whitelist = ConfigurationUtils.getProperty(WHITELIST);\r\n+        if (StringUtils.isNotEmpty(whitelist)) {\r\n+            return loader.getExtension(\"whitelist\");\r\n+        }\r\n+        return loader.getDefaultExtension();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/hessian2/dubbo/WhitelistHessian2FactoryInitializer.java", "source2": "org/apache/dubbo/common/serialize/hessian2/dubbo/WhitelistHessian2FactoryInitializer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,50 +1,50 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.hessian2.dubbo;\n-\n-import org.apache.dubbo.common.config.ConfigurationUtils;\n-import org.apache.dubbo.common.serialize.hessian2.Hessian2SerializerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import com.alibaba.com.caucho.hessian.io.SerializerFactory;\n-\n-/**\n- * see https://github.com/ebourg/hessian/commit/cf851f5131707891e723f7f6a9718c2461aed826\n- */\n-public class WhitelistHessian2FactoryInitializer extends AbstractHessian2FactoryInitializer {\n-\n-    @Override\n-    public SerializerFactory createSerializerFactory() {\n-        SerializerFactory serializerFactory = new Hessian2SerializerFactory();\n-        String whiteList = ConfigurationUtils.getProperty(WHITELIST);\n-        if (\"true\".equals(whiteList)) {\n-            serializerFactory.getClassFactory().setWhitelist(true);\n-            String allowPattern = ConfigurationUtils.getProperty(ALLOW);\n-            if (StringUtils.isNotEmpty(allowPattern)) {\n-                serializerFactory.getClassFactory().allow(allowPattern);\n-            }\n-        } else {\n-            serializerFactory.getClassFactory().setWhitelist(false);\n-            String denyPattern = ConfigurationUtils.getProperty(DENY);\n-            if (StringUtils.isNotEmpty(denyPattern)) {\n-                serializerFactory.getClassFactory().deny(denyPattern);\n-            }\n-        }\n-        return serializerFactory;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.hessian2.dubbo;\r\n+\r\n+import org.apache.dubbo.common.config.ConfigurationUtils;\r\n+import org.apache.dubbo.common.serialize.hessian2.Hessian2SerializerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import com.alibaba.com.caucho.hessian.io.SerializerFactory;\r\n+\r\n+/**\r\n+ * see https://github.com/ebourg/hessian/commit/cf851f5131707891e723f7f6a9718c2461aed826\r\n+ */\r\n+public class WhitelistHessian2FactoryInitializer extends AbstractHessian2FactoryInitializer {\r\n+\r\n+    @Override\r\n+    public SerializerFactory createSerializerFactory() {\r\n+        SerializerFactory serializerFactory = new Hessian2SerializerFactory();\r\n+        String whiteList = ConfigurationUtils.getProperty(WHITELIST);\r\n+        if (\"true\".equals(whiteList)) {\r\n+            serializerFactory.getClassFactory().setWhitelist(true);\r\n+            String allowPattern = ConfigurationUtils.getProperty(ALLOW);\r\n+            if (StringUtils.isNotEmpty(allowPattern)) {\r\n+                serializerFactory.getClassFactory().allow(allowPattern);\r\n+            }\r\n+        } else {\r\n+            serializerFactory.getClassFactory().setWhitelist(false);\r\n+            String denyPattern = ConfigurationUtils.getProperty(DENY);\r\n+            if (StringUtils.isNotEmpty(denyPattern)) {\r\n+                serializerFactory.getClassFactory().deny(denyPattern);\r\n+            }\r\n+        }\r\n+        return serializerFactory;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.common.serialize.hessian2.dubbo.Hessian2FactoryInitializer", "source2": "META-INF/dubbo/internal/org.apache.dubbo.common.serialize.hessian2.dubbo.Hessian2FactoryInitializer", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,2 +1,2 @@\n-default=org.apache.dubbo.common.serialize.hessian2.dubbo.DefaultHessian2FactoryInitializer\n+default=org.apache.dubbo.common.serialize.hessian2.dubbo.DefaultHessian2FactoryInitializer\r\n whitelist=org.apache.dubbo.common.serialize.hessian2.dubbo.WhitelistHessian2FactoryInitializer\n"}, {"source1": "org/apache/dubbo/serialize/hessian/Hessian2ObjectInput.java", "source2": "org/apache/dubbo/serialize/hessian/Hessian2ObjectInput.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,98 +1,98 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.serialize.hessian;\n-\n-import com.caucho.hessian.io.Hessian2Input;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.lang.reflect.Type;\n-\n-/**\n- * Hessian2 Object input.\n- */\n-public class Hessian2ObjectInput implements ObjectInput {\n-    private final Hessian2Input input;\n-\n-    public Hessian2ObjectInput(InputStream is) {\n-        input = new Hessian2Input(is);\n-        input.setSerializerFactory(Hessian2SerializerFactory.INSTANCE);\n-    }\n-\n-    @Override\n-    public boolean readBool() throws IOException {\n-        return input.readBoolean();\n-    }\n-\n-    @Override\n-    public byte readByte() throws IOException {\n-        return (byte) input.readInt();\n-    }\n-\n-    @Override\n-    public short readShort() throws IOException {\n-        return (short) input.readInt();\n-    }\n-\n-    @Override\n-    public int readInt() throws IOException {\n-        return input.readInt();\n-    }\n-\n-    @Override\n-    public long readLong() throws IOException {\n-        return input.readLong();\n-    }\n-\n-    @Override\n-    public float readFloat() throws IOException {\n-        return (float) input.readDouble();\n-    }\n-\n-    @Override\n-    public double readDouble() throws IOException {\n-        return input.readDouble();\n-    }\n-\n-    @Override\n-    public byte[] readBytes() throws IOException {\n-        return input.readBytes();\n-    }\n-\n-    @Override\n-    public String readUTF() throws IOException {\n-        return input.readString();\n-    }\n-\n-    @Override\n-    public Object readObject() throws IOException {\n-        return input.readObject();\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> T readObject(Class<T> cls) throws IOException {\n-        return (T) input.readObject(cls);\n-    }\n-\n-    @Override\n-    public <T> T readObject(Class<T> cls, Type type) throws IOException {\n-        return readObject(cls);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.serialize.hessian;\r\n+\r\n+import com.caucho.hessian.io.Hessian2Input;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.lang.reflect.Type;\r\n+\r\n+/**\r\n+ * Hessian2 Object input.\r\n+ */\r\n+public class Hessian2ObjectInput implements ObjectInput {\r\n+    private final Hessian2Input input;\r\n+\r\n+    public Hessian2ObjectInput(InputStream is) {\r\n+        input = new Hessian2Input(is);\r\n+        input.setSerializerFactory(Hessian2SerializerFactory.INSTANCE);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean readBool() throws IOException {\r\n+        return input.readBoolean();\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte readByte() throws IOException {\r\n+        return (byte) input.readInt();\r\n+    }\r\n+\r\n+    @Override\r\n+    public short readShort() throws IOException {\r\n+        return (short) input.readInt();\r\n+    }\r\n+\r\n+    @Override\r\n+    public int readInt() throws IOException {\r\n+        return input.readInt();\r\n+    }\r\n+\r\n+    @Override\r\n+    public long readLong() throws IOException {\r\n+        return input.readLong();\r\n+    }\r\n+\r\n+    @Override\r\n+    public float readFloat() throws IOException {\r\n+        return (float) input.readDouble();\r\n+    }\r\n+\r\n+    @Override\r\n+    public double readDouble() throws IOException {\r\n+        return input.readDouble();\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte[] readBytes() throws IOException {\r\n+        return input.readBytes();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String readUTF() throws IOException {\r\n+        return input.readString();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object readObject() throws IOException {\r\n+        return input.readObject();\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> T readObject(Class<T> cls) throws IOException {\r\n+        return (T) input.readObject(cls);\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> T readObject(Class<T> cls, Type type) throws IOException {\r\n+        return readObject(cls);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/Hessian2ObjectOutput.java", "source2": "org/apache/dubbo/serialize/hessian/Hessian2ObjectOutput.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,95 +1,95 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.serialize.hessian;\n-\n-import com.caucho.hessian.io.Hessian2Output;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-\n-import java.io.IOException;\n-import java.io.OutputStream;\n-\n-/**\n- * Hessian2 Object output.\n- */\n-public class Hessian2ObjectOutput implements ObjectOutput {\n-    private final Hessian2Output output;\n-\n-    public Hessian2ObjectOutput(OutputStream os) {\n-        output = new Hessian2Output(os);\n-        output.setSerializerFactory(Hessian2SerializerFactory.INSTANCE);\n-    }\n-\n-    @Override\n-    public void writeBool(boolean v) throws IOException {\n-        output.writeBoolean(v);\n-    }\n-\n-    @Override\n-    public void writeByte(byte v) throws IOException {\n-        output.writeInt(v);\n-    }\n-\n-    @Override\n-    public void writeShort(short v) throws IOException {\n-        output.writeInt(v);\n-    }\n-\n-    @Override\n-    public void writeInt(int v) throws IOException {\n-        output.writeInt(v);\n-    }\n-\n-    @Override\n-    public void writeLong(long v) throws IOException {\n-        output.writeLong(v);\n-    }\n-\n-    @Override\n-    public void writeFloat(float v) throws IOException {\n-        output.writeDouble(v);\n-    }\n-\n-    @Override\n-    public void writeDouble(double v) throws IOException {\n-        output.writeDouble(v);\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] b) throws IOException {\n-        output.writeBytes(b);\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] b, int off, int len) throws IOException {\n-        output.writeBytes(b, off, len);\n-    }\n-\n-    @Override\n-    public void writeUTF(String v) throws IOException {\n-        output.writeString(v);\n-    }\n-\n-    @Override\n-    public void writeObject(Object obj) throws IOException {\n-        output.writeObject(obj);\n-    }\n-\n-    @Override\n-    public void flushBuffer() throws IOException {\n-        output.flushBuffer();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.serialize.hessian;\r\n+\r\n+import com.caucho.hessian.io.Hessian2Output;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.OutputStream;\r\n+\r\n+/**\r\n+ * Hessian2 Object output.\r\n+ */\r\n+public class Hessian2ObjectOutput implements ObjectOutput {\r\n+    private final Hessian2Output output;\r\n+\r\n+    public Hessian2ObjectOutput(OutputStream os) {\r\n+        output = new Hessian2Output(os);\r\n+        output.setSerializerFactory(Hessian2SerializerFactory.INSTANCE);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBool(boolean v) throws IOException {\r\n+        output.writeBoolean(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeByte(byte v) throws IOException {\r\n+        output.writeInt(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeShort(short v) throws IOException {\r\n+        output.writeInt(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeInt(int v) throws IOException {\r\n+        output.writeInt(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeLong(long v) throws IOException {\r\n+        output.writeLong(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeFloat(float v) throws IOException {\r\n+        output.writeDouble(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeDouble(double v) throws IOException {\r\n+        output.writeDouble(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] b) throws IOException {\r\n+        output.writeBytes(b);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] b, int off, int len) throws IOException {\r\n+        output.writeBytes(b, off, len);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeUTF(String v) throws IOException {\r\n+        output.writeString(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeObject(Object obj) throws IOException {\r\n+        output.writeObject(obj);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void flushBuffer() throws IOException {\r\n+        output.flushBuffer();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/Hessian2Serialization.java", "source2": "org/apache/dubbo/serialize/hessian/Hessian2Serialization.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,53 +1,53 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.serialize.hessian;\n-\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.Serialization;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-\n-import static org.apache.dubbo.common.serialize.Constants.NATIVE_HESSIAN_SERIALIZATION_ID;\n-\n-public class Hessian2Serialization implements Serialization {\n-\n-    @Override\n-    public byte getContentTypeId() {\n-        return NATIVE_HESSIAN_SERIALIZATION_ID;\n-    }\n-\n-    @Override\n-    public String getContentType() {\n-        return \"x-application/native-hessian\";\n-    }\n-\n-    @Override\n-    public ObjectOutput serialize(URL url, OutputStream out) throws IOException {\n-        return new Hessian2ObjectOutput(out);\n-    }\n-\n-    @Override\n-    public ObjectInput deserialize(URL url, InputStream is) throws IOException {\n-        return new Hessian2ObjectInput(is);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.serialize.hessian;\r\n+\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+\r\n+import static org.apache.dubbo.common.serialize.Constants.NATIVE_HESSIAN_SERIALIZATION_ID;\r\n+\r\n+public class Hessian2Serialization implements Serialization {\r\n+\r\n+    @Override\r\n+    public byte getContentTypeId() {\r\n+        return NATIVE_HESSIAN_SERIALIZATION_ID;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getContentType() {\r\n+        return \"x-application/native-hessian\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectOutput serialize(URL url, OutputStream out) throws IOException {\r\n+        return new Hessian2ObjectOutput(out);\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectInput deserialize(URL url, InputStream is) throws IOException {\r\n+        return new Hessian2ObjectInput(is);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/Hessian2SerializerFactory.java", "source2": "org/apache/dubbo/serialize/hessian/Hessian2SerializerFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,42 +1,42 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.serialize.hessian;\n-\n-import com.caucho.hessian.io.Deserializer;\n-import com.caucho.hessian.io.HessianProtocolException;\n-import com.caucho.hessian.io.Serializer;\n-import com.caucho.hessian.io.SerializerFactory;\n-\n-public class Hessian2SerializerFactory extends SerializerFactory {\n-    public static final SerializerFactory INSTANCE = new Hessian2SerializerFactory();\n-\n-    private Hessian2SerializerFactory() {\n-        super();\n-    }\n-\n-    @Override\n-    protected Serializer loadSerializer(Class<?> cl) throws HessianProtocolException {\n-        Serializer serializer = Java8SerializerFactory.INSTANCE.getSerializer(cl);\n-        return serializer != null ? serializer : super.loadSerializer(cl);\n-    }\n-\n-    @Override\n-    protected Deserializer loadDeserializer(Class cl) throws HessianProtocolException {\n-        Deserializer deserializer = Java8SerializerFactory.INSTANCE.getDeserializer(cl);\n-        return deserializer != null ? deserializer : super.loadDeserializer(cl);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.serialize.hessian;\r\n+\r\n+import com.caucho.hessian.io.Deserializer;\r\n+import com.caucho.hessian.io.HessianProtocolException;\r\n+import com.caucho.hessian.io.Serializer;\r\n+import com.caucho.hessian.io.SerializerFactory;\r\n+\r\n+public class Hessian2SerializerFactory extends SerializerFactory {\r\n+    public static final SerializerFactory INSTANCE = new Hessian2SerializerFactory();\r\n+\r\n+    private Hessian2SerializerFactory() {\r\n+        super();\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Serializer loadSerializer(Class<?> cl) throws HessianProtocolException {\r\n+        Serializer serializer = Java8SerializerFactory.INSTANCE.getSerializer(cl);\r\n+        return serializer != null ? serializer : super.loadSerializer(cl);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Deserializer loadDeserializer(Class cl) throws HessianProtocolException {\r\n+        Deserializer deserializer = Java8SerializerFactory.INSTANCE.getDeserializer(cl);\r\n+        return deserializer != null ? deserializer : super.loadDeserializer(cl);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/Java8SerializerFactory.java", "source2": "org/apache/dubbo/serialize/hessian/Java8SerializerFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,88 +1,88 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.serialize.hessian;\n-\n-\n-import com.caucho.hessian.io.AbstractSerializerFactory;\n-import com.caucho.hessian.io.ExtSerializerFactory;\n-import com.caucho.hessian.io.HessianProtocolException;\n-import com.caucho.hessian.io.Serializer;\n-import org.apache.dubbo.serialize.hessian.serializer.java8.DurationHandle;\n-import org.apache.dubbo.serialize.hessian.serializer.java8.InstantHandle;\n-import org.apache.dubbo.serialize.hessian.serializer.java8.LocalDateHandle;\n-import org.apache.dubbo.serialize.hessian.serializer.java8.LocalDateTimeHandle;\n-import org.apache.dubbo.serialize.hessian.serializer.java8.LocalTimeHandle;\n-import org.apache.dubbo.serialize.hessian.serializer.java8.MonthDayHandle;\n-import org.apache.dubbo.serialize.hessian.serializer.java8.OffsetDateTimeHandle;\n-import org.apache.dubbo.serialize.hessian.serializer.java8.OffsetTimeHandle;\n-import org.apache.dubbo.serialize.hessian.serializer.java8.PeriodHandle;\n-import org.apache.dubbo.serialize.hessian.serializer.java8.YearHandle;\n-import org.apache.dubbo.serialize.hessian.serializer.java8.YearMonthHandle;\n-import org.apache.dubbo.serialize.hessian.serializer.java8.ZoneIdSerializer;\n-import org.apache.dubbo.serialize.hessian.serializer.java8.ZoneOffsetHandle;\n-import org.apache.dubbo.serialize.hessian.serializer.java8.ZonedDateTimeHandle;\n-\n-import static org.apache.dubbo.serialize.hessian.serializer.java8.Java8TimeSerializer.create;\n-\n-\n-public class Java8SerializerFactory extends ExtSerializerFactory {\n-    public static final AbstractSerializerFactory INSTANCE = new Java8SerializerFactory();\n-\n-    private Java8SerializerFactory() {\n-        if (isJava8()) {\n-            try {\n-                this.addSerializer(Class.forName(\"java.time.LocalTime\"), create(LocalTimeHandle.class));\n-                this.addSerializer(Class.forName(\"java.time.LocalDate\"), create(LocalDateHandle.class));\n-                this.addSerializer(Class.forName(\"java.time.LocalDateTime\"), create(LocalDateTimeHandle.class));\n-\n-                this.addSerializer(Class.forName(\"java.time.Instant\"), create(InstantHandle.class));\n-                this.addSerializer(Class.forName(\"java.time.Duration\"), create(DurationHandle.class));\n-                this.addSerializer(Class.forName(\"java.time.Period\"), create(PeriodHandle.class));\n-\n-                this.addSerializer(Class.forName(\"java.time.Year\"), create(YearHandle.class));\n-                this.addSerializer(Class.forName(\"java.time.YearMonth\"), create(YearMonthHandle.class));\n-                this.addSerializer(Class.forName(\"java.time.MonthDay\"), create(MonthDayHandle.class));\n-\n-                this.addSerializer(Class.forName(\"java.time.OffsetDateTime\"), create(OffsetDateTimeHandle.class));\n-                this.addSerializer(Class.forName(\"java.time.ZoneOffset\"), create(ZoneOffsetHandle.class));\n-                this.addSerializer(Class.forName(\"java.time.OffsetTime\"), create(OffsetTimeHandle.class));\n-                this.addSerializer(Class.forName(\"java.time.ZonedDateTime\"), create(ZonedDateTimeHandle.class));\n-            } catch (ClassNotFoundException e) {\n-                // ignore\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public Serializer getSerializer(Class cl) throws HessianProtocolException {\n-        return isZoneId(cl) ? ZoneIdSerializer.getInstance() : super.getSerializer(cl);\n-    }\n-\n-    private static boolean isZoneId(Class cl) {\n-        try {\n-            return isJava8() && Class.forName(\"java.time.ZoneId\").isAssignableFrom(cl);\n-        } catch (ClassNotFoundException e) {\n-            // ignore\n-        }\n-        return false;\n-    }\n-\n-    private static boolean isJava8() {\n-        String javaVersion = System.getProperty(\"java.specification.version\");\n-        return Double.valueOf(javaVersion) >= 1.8;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.serialize.hessian;\r\n+\r\n+\r\n+import com.caucho.hessian.io.AbstractSerializerFactory;\r\n+import com.caucho.hessian.io.ExtSerializerFactory;\r\n+import com.caucho.hessian.io.HessianProtocolException;\r\n+import com.caucho.hessian.io.Serializer;\r\n+import org.apache.dubbo.serialize.hessian.serializer.java8.DurationHandle;\r\n+import org.apache.dubbo.serialize.hessian.serializer.java8.InstantHandle;\r\n+import org.apache.dubbo.serialize.hessian.serializer.java8.LocalDateHandle;\r\n+import org.apache.dubbo.serialize.hessian.serializer.java8.LocalDateTimeHandle;\r\n+import org.apache.dubbo.serialize.hessian.serializer.java8.LocalTimeHandle;\r\n+import org.apache.dubbo.serialize.hessian.serializer.java8.MonthDayHandle;\r\n+import org.apache.dubbo.serialize.hessian.serializer.java8.OffsetDateTimeHandle;\r\n+import org.apache.dubbo.serialize.hessian.serializer.java8.OffsetTimeHandle;\r\n+import org.apache.dubbo.serialize.hessian.serializer.java8.PeriodHandle;\r\n+import org.apache.dubbo.serialize.hessian.serializer.java8.YearHandle;\r\n+import org.apache.dubbo.serialize.hessian.serializer.java8.YearMonthHandle;\r\n+import org.apache.dubbo.serialize.hessian.serializer.java8.ZoneIdSerializer;\r\n+import org.apache.dubbo.serialize.hessian.serializer.java8.ZoneOffsetHandle;\r\n+import org.apache.dubbo.serialize.hessian.serializer.java8.ZonedDateTimeHandle;\r\n+\r\n+import static org.apache.dubbo.serialize.hessian.serializer.java8.Java8TimeSerializer.create;\r\n+\r\n+\r\n+public class Java8SerializerFactory extends ExtSerializerFactory {\r\n+    public static final AbstractSerializerFactory INSTANCE = new Java8SerializerFactory();\r\n+\r\n+    private Java8SerializerFactory() {\r\n+        if (isJava8()) {\r\n+            try {\r\n+                this.addSerializer(Class.forName(\"java.time.LocalTime\"), create(LocalTimeHandle.class));\r\n+                this.addSerializer(Class.forName(\"java.time.LocalDate\"), create(LocalDateHandle.class));\r\n+                this.addSerializer(Class.forName(\"java.time.LocalDateTime\"), create(LocalDateTimeHandle.class));\r\n+\r\n+                this.addSerializer(Class.forName(\"java.time.Instant\"), create(InstantHandle.class));\r\n+                this.addSerializer(Class.forName(\"java.time.Duration\"), create(DurationHandle.class));\r\n+                this.addSerializer(Class.forName(\"java.time.Period\"), create(PeriodHandle.class));\r\n+\r\n+                this.addSerializer(Class.forName(\"java.time.Year\"), create(YearHandle.class));\r\n+                this.addSerializer(Class.forName(\"java.time.YearMonth\"), create(YearMonthHandle.class));\r\n+                this.addSerializer(Class.forName(\"java.time.MonthDay\"), create(MonthDayHandle.class));\r\n+\r\n+                this.addSerializer(Class.forName(\"java.time.OffsetDateTime\"), create(OffsetDateTimeHandle.class));\r\n+                this.addSerializer(Class.forName(\"java.time.ZoneOffset\"), create(ZoneOffsetHandle.class));\r\n+                this.addSerializer(Class.forName(\"java.time.OffsetTime\"), create(OffsetTimeHandle.class));\r\n+                this.addSerializer(Class.forName(\"java.time.ZonedDateTime\"), create(ZonedDateTimeHandle.class));\r\n+            } catch (ClassNotFoundException e) {\r\n+                // ignore\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public Serializer getSerializer(Class cl) throws HessianProtocolException {\r\n+        return isZoneId(cl) ? ZoneIdSerializer.getInstance() : super.getSerializer(cl);\r\n+    }\r\n+\r\n+    private static boolean isZoneId(Class cl) {\r\n+        try {\r\n+            return isJava8() && Class.forName(\"java.time.ZoneId\").isAssignableFrom(cl);\r\n+        } catch (ClassNotFoundException e) {\r\n+            // ignore\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    private static boolean isJava8() {\r\n+        String javaVersion = System.getProperty(\"java.specification.version\");\r\n+        return Double.valueOf(javaVersion) >= 1.8;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/serializer/java8/DurationHandle.java", "source2": "org/apache/dubbo/serialize/hessian/serializer/java8/DurationHandle.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,53 +1,53 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.serialize.hessian.serializer.java8;\n-\n-\n-import com.caucho.hessian.io.HessianHandle;\n-\n-import java.io.Serializable;\n-import java.time.Duration;\n-\n-public class DurationHandle implements HessianHandle, Serializable {\n-    private static final long serialVersionUID = -4367309317780077156L;\n-\n-    private long seconds;\n-    private int nanos;\n-\n-    public DurationHandle() {\n-    }\n-\n-    public DurationHandle(Object o) {\n-        try {\n-            Duration duration = (Duration) o;\n-            this.seconds = duration.getSeconds();\n-            this.nanos = duration.getNano();\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-    }\n-\n-    private Object readResolve() {\n-        try {\n-            return Duration.ofSeconds(seconds, nanos);\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-        return null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.serialize.hessian.serializer.java8;\r\n+\r\n+\r\n+import com.caucho.hessian.io.HessianHandle;\r\n+\r\n+import java.io.Serializable;\r\n+import java.time.Duration;\r\n+\r\n+public class DurationHandle implements HessianHandle, Serializable {\r\n+    private static final long serialVersionUID = -4367309317780077156L;\r\n+\r\n+    private long seconds;\r\n+    private int nanos;\r\n+\r\n+    public DurationHandle() {\r\n+    }\r\n+\r\n+    public DurationHandle(Object o) {\r\n+        try {\r\n+            Duration duration = (Duration) o;\r\n+            this.seconds = duration.getSeconds();\r\n+            this.nanos = duration.getNano();\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+    }\r\n+\r\n+    private Object readResolve() {\r\n+        try {\r\n+            return Duration.ofSeconds(seconds, nanos);\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+        return null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/serializer/java8/InstantHandle.java", "source2": "org/apache/dubbo/serialize/hessian/serializer/java8/InstantHandle.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,54 +1,54 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.serialize.hessian.serializer.java8;\n-\n-\n-import com.caucho.hessian.io.HessianHandle;\n-\n-import java.io.Serializable;\n-import java.time.Instant;\n-\n-public class InstantHandle implements HessianHandle, Serializable {\n-    private static final long serialVersionUID = -4367309317780077156L;\n-\n-    private long seconds;\n-    private int nanos;\n-\n-    public InstantHandle() {\n-    }\n-\n-    public InstantHandle(Object o) {\n-        try {\n-            Instant instant = (Instant) o;\n-            this.seconds = instant.getEpochSecond();\n-            this.nanos = instant.getNano();\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-    }\n-\n-\n-    private Object readResolve() {\n-        try {\n-            return Instant.ofEpochSecond(seconds, nanos);\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-        return null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.serialize.hessian.serializer.java8;\r\n+\r\n+\r\n+import com.caucho.hessian.io.HessianHandle;\r\n+\r\n+import java.io.Serializable;\r\n+import java.time.Instant;\r\n+\r\n+public class InstantHandle implements HessianHandle, Serializable {\r\n+    private static final long serialVersionUID = -4367309317780077156L;\r\n+\r\n+    private long seconds;\r\n+    private int nanos;\r\n+\r\n+    public InstantHandle() {\r\n+    }\r\n+\r\n+    public InstantHandle(Object o) {\r\n+        try {\r\n+            Instant instant = (Instant) o;\r\n+            this.seconds = instant.getEpochSecond();\r\n+            this.nanos = instant.getNano();\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+    }\r\n+\r\n+\r\n+    private Object readResolve() {\r\n+        try {\r\n+            return Instant.ofEpochSecond(seconds, nanos);\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+        return null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/serializer/java8/Java8TimeSerializer.java", "source2": "org/apache/dubbo/serialize/hessian/serializer/java8/Java8TimeSerializer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,57 +1,57 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.serialize.hessian.serializer.java8;\n-\n-\n-import com.caucho.hessian.io.AbstractHessianOutput;\n-import com.caucho.hessian.io.AbstractSerializer;\n-\n-import java.io.IOException;\n-import java.lang.reflect.Constructor;\n-\n-public class Java8TimeSerializer<T> extends AbstractSerializer {\n-\n-    // Type of handle\n-    private Class<T> handleType;\n-\n-    private Java8TimeSerializer(Class<T> handleType) {\n-        this.handleType = handleType;\n-    }\n-\n-    public static <T> Java8TimeSerializer<T> create(Class<T> handleType) {\n-        return new Java8TimeSerializer<T>(handleType);\n-    }\n-\n-    @Override\n-    public void writeObject(Object obj, AbstractHessianOutput out) throws IOException {\n-        if (obj == null) {\n-            out.writeNull();\n-            return;\n-        }\n-\n-        T handle = null;\n-        try {\n-            Constructor<T> constructor = handleType.getConstructor(Object.class);\n-            handle = constructor.newInstance(obj);\n-        } catch (Exception e) {\n-            throw new RuntimeException(\"the class :\" + handleType.getName() + \" construct failed:\" + e.getMessage(), e);\n-        }\n-\n-        out.writeObject(handle);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.serialize.hessian.serializer.java8;\r\n+\r\n+\r\n+import com.caucho.hessian.io.AbstractHessianOutput;\r\n+import com.caucho.hessian.io.AbstractSerializer;\r\n+\r\n+import java.io.IOException;\r\n+import java.lang.reflect.Constructor;\r\n+\r\n+public class Java8TimeSerializer<T> extends AbstractSerializer {\r\n+\r\n+    // Type of handle\r\n+    private Class<T> handleType;\r\n+\r\n+    private Java8TimeSerializer(Class<T> handleType) {\r\n+        this.handleType = handleType;\r\n+    }\r\n+\r\n+    public static <T> Java8TimeSerializer<T> create(Class<T> handleType) {\r\n+        return new Java8TimeSerializer<T>(handleType);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeObject(Object obj, AbstractHessianOutput out) throws IOException {\r\n+        if (obj == null) {\r\n+            out.writeNull();\r\n+            return;\r\n+        }\r\n+\r\n+        T handle = null;\r\n+        try {\r\n+            Constructor<T> constructor = handleType.getConstructor(Object.class);\r\n+            handle = constructor.newInstance(obj);\r\n+        } catch (Exception e) {\r\n+            throw new RuntimeException(\"the class :\" + handleType.getName() + \" construct failed:\" + e.getMessage(), e);\r\n+        }\r\n+\r\n+        out.writeObject(handle);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/serializer/java8/LocalDateHandle.java", "source2": "org/apache/dubbo/serialize/hessian/serializer/java8/LocalDateHandle.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,55 +1,55 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.serialize.hessian.serializer.java8;\n-\n-\n-import com.caucho.hessian.io.HessianHandle;\n-\n-import java.io.Serializable;\n-import java.time.LocalDate;\n-\n-public class LocalDateHandle implements HessianHandle, Serializable {\n-    private static final long serialVersionUID = 166018689500019951L;\n-\n-    private int year;\n-    private int month;\n-    private int day;\n-\n-    public LocalDateHandle() {\n-    }\n-\n-    public LocalDateHandle(Object o) {\n-        try {\n-            LocalDate localDate = (LocalDate) o;\n-            this.year = localDate.getYear();\n-            this.month = localDate.getMonthValue();\n-            this.day = localDate.getDayOfMonth();\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-    }\n-\n-    public Object readResolve() {\n-        try {\n-            return LocalDate.of(year, month, day);\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-        return null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.serialize.hessian.serializer.java8;\r\n+\r\n+\r\n+import com.caucho.hessian.io.HessianHandle;\r\n+\r\n+import java.io.Serializable;\r\n+import java.time.LocalDate;\r\n+\r\n+public class LocalDateHandle implements HessianHandle, Serializable {\r\n+    private static final long serialVersionUID = 166018689500019951L;\r\n+\r\n+    private int year;\r\n+    private int month;\r\n+    private int day;\r\n+\r\n+    public LocalDateHandle() {\r\n+    }\r\n+\r\n+    public LocalDateHandle(Object o) {\r\n+        try {\r\n+            LocalDate localDate = (LocalDate) o;\r\n+            this.year = localDate.getYear();\r\n+            this.month = localDate.getMonthValue();\r\n+            this.day = localDate.getDayOfMonth();\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+    }\r\n+\r\n+    public Object readResolve() {\r\n+        try {\r\n+            return LocalDate.of(year, month, day);\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+        return null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/serializer/java8/LocalDateTimeHandle.java", "source2": "org/apache/dubbo/serialize/hessian/serializer/java8/LocalDateTimeHandle.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,55 +1,55 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.serialize.hessian.serializer.java8;\n-\n-\n-import com.caucho.hessian.io.HessianHandle;\n-\n-import java.io.Serializable;\n-import java.time.LocalDate;\n-import java.time.LocalDateTime;\n-import java.time.LocalTime;\n-\n-public class LocalDateTimeHandle implements HessianHandle, Serializable {\n-    private static final long serialVersionUID = 7563825215275989361L;\n-\n-    private LocalDate date;\n-    private LocalTime time;\n-\n-    public LocalDateTimeHandle() {\n-    }\n-\n-    public LocalDateTimeHandle(Object o) {\n-        try {\n-            LocalDateTime localDateTime = (LocalDateTime) o;\n-            date = localDateTime.toLocalDate();\n-            time = localDateTime.toLocalTime();\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-    }\n-\n-    private Object readResolve() {\n-        try {\n-            return LocalDateTime.of(date, time);\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-        return null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.serialize.hessian.serializer.java8;\r\n+\r\n+\r\n+import com.caucho.hessian.io.HessianHandle;\r\n+\r\n+import java.io.Serializable;\r\n+import java.time.LocalDate;\r\n+import java.time.LocalDateTime;\r\n+import java.time.LocalTime;\r\n+\r\n+public class LocalDateTimeHandle implements HessianHandle, Serializable {\r\n+    private static final long serialVersionUID = 7563825215275989361L;\r\n+\r\n+    private LocalDate date;\r\n+    private LocalTime time;\r\n+\r\n+    public LocalDateTimeHandle() {\r\n+    }\r\n+\r\n+    public LocalDateTimeHandle(Object o) {\r\n+        try {\r\n+            LocalDateTime localDateTime = (LocalDateTime) o;\r\n+            date = localDateTime.toLocalDate();\r\n+            time = localDateTime.toLocalTime();\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+    }\r\n+\r\n+    private Object readResolve() {\r\n+        try {\r\n+            return LocalDateTime.of(date, time);\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+        return null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/serializer/java8/LocalTimeHandle.java", "source2": "org/apache/dubbo/serialize/hessian/serializer/java8/LocalTimeHandle.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,57 +1,57 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.serialize.hessian.serializer.java8;\n-\n-\n-import com.caucho.hessian.io.HessianHandle;\n-\n-import java.io.Serializable;\n-import java.time.LocalTime;\n-\n-public class LocalTimeHandle implements HessianHandle, Serializable {\n-    private static final long serialVersionUID = -5892919085390462315L;\n-\n-    private int hour;\n-    private int minute;\n-    private int second;\n-    private int nano;\n-\n-    public LocalTimeHandle() {\n-    }\n-\n-    public LocalTimeHandle(Object o) {\n-        try {\n-            LocalTime localTime = (LocalTime) o;\n-            this.hour = localTime.getHour();\n-            this.minute = localTime.getMinute();\n-            this.second = localTime.getSecond();\n-            this.nano = localTime.getNano();\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-    }\n-\n-    private Object readResolve() {\n-        try {\n-            return LocalTime.of(hour, minute, second, nano);\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-        return null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.serialize.hessian.serializer.java8;\r\n+\r\n+\r\n+import com.caucho.hessian.io.HessianHandle;\r\n+\r\n+import java.io.Serializable;\r\n+import java.time.LocalTime;\r\n+\r\n+public class LocalTimeHandle implements HessianHandle, Serializable {\r\n+    private static final long serialVersionUID = -5892919085390462315L;\r\n+\r\n+    private int hour;\r\n+    private int minute;\r\n+    private int second;\r\n+    private int nano;\r\n+\r\n+    public LocalTimeHandle() {\r\n+    }\r\n+\r\n+    public LocalTimeHandle(Object o) {\r\n+        try {\r\n+            LocalTime localTime = (LocalTime) o;\r\n+            this.hour = localTime.getHour();\r\n+            this.minute = localTime.getMinute();\r\n+            this.second = localTime.getSecond();\r\n+            this.nano = localTime.getNano();\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+    }\r\n+\r\n+    private Object readResolve() {\r\n+        try {\r\n+            return LocalTime.of(hour, minute, second, nano);\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+        return null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/serializer/java8/MonthDayHandle.java", "source2": "org/apache/dubbo/serialize/hessian/serializer/java8/MonthDayHandle.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,53 +1,53 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.serialize.hessian.serializer.java8;\n-\n-\n-import com.caucho.hessian.io.HessianHandle;\n-\n-import java.io.Serializable;\n-import java.time.MonthDay;\n-\n-public class MonthDayHandle implements HessianHandle, Serializable {\n-    private static final long serialVersionUID = 5288238558666577745L;\n-\n-    private int month;\n-    private int day;\n-\n-    public MonthDayHandle() {\n-    }\n-\n-    public MonthDayHandle(Object o) {\n-        try {\n-            MonthDay monthDay = (MonthDay) o;\n-            this.month = monthDay.getMonthValue();\n-            this.day = monthDay.getDayOfMonth();\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-    }\n-\n-    private Object readResolve() {\n-        try {\n-            return MonthDay.of(month, day);\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-        return null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.serialize.hessian.serializer.java8;\r\n+\r\n+\r\n+import com.caucho.hessian.io.HessianHandle;\r\n+\r\n+import java.io.Serializable;\r\n+import java.time.MonthDay;\r\n+\r\n+public class MonthDayHandle implements HessianHandle, Serializable {\r\n+    private static final long serialVersionUID = 5288238558666577745L;\r\n+\r\n+    private int month;\r\n+    private int day;\r\n+\r\n+    public MonthDayHandle() {\r\n+    }\r\n+\r\n+    public MonthDayHandle(Object o) {\r\n+        try {\r\n+            MonthDay monthDay = (MonthDay) o;\r\n+            this.month = monthDay.getMonthValue();\r\n+            this.day = monthDay.getDayOfMonth();\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+    }\r\n+\r\n+    private Object readResolve() {\r\n+        try {\r\n+            return MonthDay.of(month, day);\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+        return null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/serializer/java8/OffsetDateTimeHandle.java", "source2": "org/apache/dubbo/serialize/hessian/serializer/java8/OffsetDateTimeHandle.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,55 +1,55 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.serialize.hessian.serializer.java8;\n-\n-\n-import com.caucho.hessian.io.HessianHandle;\n-\n-import java.io.Serializable;\n-import java.time.LocalDateTime;\n-import java.time.OffsetDateTime;\n-import java.time.ZoneOffset;\n-\n-public class OffsetDateTimeHandle implements HessianHandle, Serializable {\n-    private static final long serialVersionUID = -7823900532640515312L;\n-\n-    private LocalDateTime dateTime;\n-    private ZoneOffset offset;\n-\n-    public OffsetDateTimeHandle() {\n-    }\n-\n-    public OffsetDateTimeHandle(Object o) {\n-        try {\n-            OffsetDateTime offsetDateTime = (OffsetDateTime) o;\n-            this.dateTime = offsetDateTime.toLocalDateTime();\n-            this.offset = offsetDateTime.getOffset();\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-    }\n-\n-    private Object readResolve() {\n-        try {\n-            return OffsetDateTime.of(dateTime, offset);\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-        return null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.serialize.hessian.serializer.java8;\r\n+\r\n+\r\n+import com.caucho.hessian.io.HessianHandle;\r\n+\r\n+import java.io.Serializable;\r\n+import java.time.LocalDateTime;\r\n+import java.time.OffsetDateTime;\r\n+import java.time.ZoneOffset;\r\n+\r\n+public class OffsetDateTimeHandle implements HessianHandle, Serializable {\r\n+    private static final long serialVersionUID = -7823900532640515312L;\r\n+\r\n+    private LocalDateTime dateTime;\r\n+    private ZoneOffset offset;\r\n+\r\n+    public OffsetDateTimeHandle() {\r\n+    }\r\n+\r\n+    public OffsetDateTimeHandle(Object o) {\r\n+        try {\r\n+            OffsetDateTime offsetDateTime = (OffsetDateTime) o;\r\n+            this.dateTime = offsetDateTime.toLocalDateTime();\r\n+            this.offset = offsetDateTime.getOffset();\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+    }\r\n+\r\n+    private Object readResolve() {\r\n+        try {\r\n+            return OffsetDateTime.of(dateTime, offset);\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+        return null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/serializer/java8/OffsetTimeHandle.java", "source2": "org/apache/dubbo/serialize/hessian/serializer/java8/OffsetTimeHandle.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,55 +1,55 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.serialize.hessian.serializer.java8;\n-\n-\n-import com.caucho.hessian.io.HessianHandle;\n-\n-import java.io.Serializable;\n-import java.time.LocalTime;\n-import java.time.OffsetTime;\n-import java.time.ZoneOffset;\n-\n-public class OffsetTimeHandle implements HessianHandle, Serializable {\n-    private static final long serialVersionUID = -3269846941421652860L;\n-\n-    private LocalTime localTime;\n-    private ZoneOffset zoneOffset;\n-\n-    public OffsetTimeHandle() {\n-    }\n-\n-    public OffsetTimeHandle(Object o) {\n-        try {\n-            OffsetTime offsetTime = (OffsetTime) o;\n-            this.zoneOffset = offsetTime.getOffset();\n-            this.localTime = offsetTime.toLocalTime();\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-    }\n-\n-    private Object readResolve() {\n-        try {\n-            return OffsetTime.of(localTime, zoneOffset);\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-        return null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.serialize.hessian.serializer.java8;\r\n+\r\n+\r\n+import com.caucho.hessian.io.HessianHandle;\r\n+\r\n+import java.io.Serializable;\r\n+import java.time.LocalTime;\r\n+import java.time.OffsetTime;\r\n+import java.time.ZoneOffset;\r\n+\r\n+public class OffsetTimeHandle implements HessianHandle, Serializable {\r\n+    private static final long serialVersionUID = -3269846941421652860L;\r\n+\r\n+    private LocalTime localTime;\r\n+    private ZoneOffset zoneOffset;\r\n+\r\n+    public OffsetTimeHandle() {\r\n+    }\r\n+\r\n+    public OffsetTimeHandle(Object o) {\r\n+        try {\r\n+            OffsetTime offsetTime = (OffsetTime) o;\r\n+            this.zoneOffset = offsetTime.getOffset();\r\n+            this.localTime = offsetTime.toLocalTime();\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+    }\r\n+\r\n+    private Object readResolve() {\r\n+        try {\r\n+            return OffsetTime.of(localTime, zoneOffset);\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+        return null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/serializer/java8/PeriodHandle.java", "source2": "org/apache/dubbo/serialize/hessian/serializer/java8/PeriodHandle.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,56 +1,56 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.serialize.hessian.serializer.java8;\n-\n-\n-import com.caucho.hessian.io.HessianHandle;\n-\n-import java.io.Serializable;\n-import java.time.Period;\n-\n-\n-public class PeriodHandle implements HessianHandle, Serializable {\n-    private static final long serialVersionUID = 4399720381283781186L;\n-\n-    private int years;\n-    private int months;\n-    private int days;\n-\n-    public PeriodHandle() {\n-    }\n-\n-    public PeriodHandle(Object o) {\n-        try {\n-            Period period = (Period) o;\n-            this.years = period.getYears();\n-            this.months = period.getMonths();\n-            this.days = period.getDays();\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-    }\n-\n-    private Object readResolve() {\n-        try {\n-            return Period.of(years, months, days);\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-        return null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.serialize.hessian.serializer.java8;\r\n+\r\n+\r\n+import com.caucho.hessian.io.HessianHandle;\r\n+\r\n+import java.io.Serializable;\r\n+import java.time.Period;\r\n+\r\n+\r\n+public class PeriodHandle implements HessianHandle, Serializable {\r\n+    private static final long serialVersionUID = 4399720381283781186L;\r\n+\r\n+    private int years;\r\n+    private int months;\r\n+    private int days;\r\n+\r\n+    public PeriodHandle() {\r\n+    }\r\n+\r\n+    public PeriodHandle(Object o) {\r\n+        try {\r\n+            Period period = (Period) o;\r\n+            this.years = period.getYears();\r\n+            this.months = period.getMonths();\r\n+            this.days = period.getDays();\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+    }\r\n+\r\n+    private Object readResolve() {\r\n+        try {\r\n+            return Period.of(years, months, days);\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+        return null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/serializer/java8/YearHandle.java", "source2": "org/apache/dubbo/serialize/hessian/serializer/java8/YearHandle.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,52 +1,52 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.serialize.hessian.serializer.java8;\n-\n-\n-import com.caucho.hessian.io.HessianHandle;\n-\n-import java.io.Serializable;\n-import java.time.Year;\n-\n-public class YearHandle implements HessianHandle, Serializable {\n-    private static final long serialVersionUID = -6299552890287487926L;\n-\n-    private int year;\n-\n-    public YearHandle() {\n-    }\n-\n-    public YearHandle(Object o) {\n-        try {\n-            Year y = (Year) o;\n-            this.year = y.getValue();\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-\n-    }\n-\n-    private Object readResolve() {\n-        try {\n-            return Year.of(year);\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-        return null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.serialize.hessian.serializer.java8;\r\n+\r\n+\r\n+import com.caucho.hessian.io.HessianHandle;\r\n+\r\n+import java.io.Serializable;\r\n+import java.time.Year;\r\n+\r\n+public class YearHandle implements HessianHandle, Serializable {\r\n+    private static final long serialVersionUID = -6299552890287487926L;\r\n+\r\n+    private int year;\r\n+\r\n+    public YearHandle() {\r\n+    }\r\n+\r\n+    public YearHandle(Object o) {\r\n+        try {\r\n+            Year y = (Year) o;\r\n+            this.year = y.getValue();\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+\r\n+    }\r\n+\r\n+    private Object readResolve() {\r\n+        try {\r\n+            return Year.of(year);\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+        return null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/serializer/java8/YearMonthHandle.java", "source2": "org/apache/dubbo/serialize/hessian/serializer/java8/YearMonthHandle.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,53 +1,53 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.serialize.hessian.serializer.java8;\n-\n-\n-import com.caucho.hessian.io.HessianHandle;\n-\n-import java.io.Serializable;\n-import java.time.YearMonth;\n-\n-public class YearMonthHandle implements HessianHandle, Serializable {\n-    private static final long serialVersionUID = -4150786187896925314L;\n-\n-    private int year;\n-    private int month;\n-\n-    public YearMonthHandle() {\n-    }\n-\n-    public YearMonthHandle(Object o) {\n-        try {\n-            YearMonth yearMonth = (YearMonth) o;\n-            this.year = yearMonth.getYear();\n-            this.month = yearMonth.getMonthValue();\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-    }\n-\n-    private Object readResolve() {\n-        try {\n-            return YearMonth.of(year, month);\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-        return null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.serialize.hessian.serializer.java8;\r\n+\r\n+\r\n+import com.caucho.hessian.io.HessianHandle;\r\n+\r\n+import java.io.Serializable;\r\n+import java.time.YearMonth;\r\n+\r\n+public class YearMonthHandle implements HessianHandle, Serializable {\r\n+    private static final long serialVersionUID = -4150786187896925314L;\r\n+\r\n+    private int year;\r\n+    private int month;\r\n+\r\n+    public YearMonthHandle() {\r\n+    }\r\n+\r\n+    public YearMonthHandle(Object o) {\r\n+        try {\r\n+            YearMonth yearMonth = (YearMonth) o;\r\n+            this.year = yearMonth.getYear();\r\n+            this.month = yearMonth.getMonthValue();\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+    }\r\n+\r\n+    private Object readResolve() {\r\n+        try {\r\n+            return YearMonth.of(year, month);\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+        return null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/serializer/java8/ZoneIdHandle.java", "source2": "org/apache/dubbo/serialize/hessian/serializer/java8/ZoneIdHandle.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,52 +1,52 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.serialize.hessian.serializer.java8;\n-\n-\n-import com.caucho.hessian.io.HessianHandle;\n-\n-import java.io.Serializable;\n-import java.time.ZoneId;\n-\n-public class ZoneIdHandle implements HessianHandle, Serializable {\n-\n-    private static final long serialVersionUID = 8789182864066905552L;\n-\n-    private String zoneId;\n-\n-    public ZoneIdHandle() {\n-    }\n-\n-    public ZoneIdHandle(Object o) {\n-        try {\n-            ZoneId zoneId = (ZoneId) o;\n-            this.zoneId = zoneId.getId();\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-    }\n-\n-    private Object readResolve() {\n-        try {\n-            return ZoneId.of(this.zoneId);\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-        return null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.serialize.hessian.serializer.java8;\r\n+\r\n+\r\n+import com.caucho.hessian.io.HessianHandle;\r\n+\r\n+import java.io.Serializable;\r\n+import java.time.ZoneId;\r\n+\r\n+public class ZoneIdHandle implements HessianHandle, Serializable {\r\n+\r\n+    private static final long serialVersionUID = 8789182864066905552L;\r\n+\r\n+    private String zoneId;\r\n+\r\n+    public ZoneIdHandle() {\r\n+    }\r\n+\r\n+    public ZoneIdHandle(Object o) {\r\n+        try {\r\n+            ZoneId zoneId = (ZoneId) o;\r\n+            this.zoneId = zoneId.getId();\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+    }\r\n+\r\n+    private Object readResolve() {\r\n+        try {\r\n+            return ZoneId.of(this.zoneId);\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+        return null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/serializer/java8/ZoneIdSerializer.java", "source2": "org/apache/dubbo/serialize/hessian/serializer/java8/ZoneIdSerializer.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,43 +1,43 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.serialize.hessian.serializer.java8;\n-\n-\n-import com.caucho.hessian.io.AbstractHessianOutput;\n-import com.caucho.hessian.io.AbstractSerializer;\n-\n-import java.io.IOException;\n-\n-public class ZoneIdSerializer extends AbstractSerializer {\n-\n-    private static final ZoneIdSerializer SERIALIZER = new ZoneIdSerializer();\n-\n-    public static ZoneIdSerializer getInstance() {\n-        return SERIALIZER;\n-    }\n-\n-    @Override\n-    public void writeObject(Object obj, AbstractHessianOutput out) throws IOException {\n-        if (obj == null) {\n-            out.writeNull();\n-        } else {\n-            out.writeObject(new ZoneIdHandle(obj));\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.serialize.hessian.serializer.java8;\r\n+\r\n+\r\n+import com.caucho.hessian.io.AbstractHessianOutput;\r\n+import com.caucho.hessian.io.AbstractSerializer;\r\n+\r\n+import java.io.IOException;\r\n+\r\n+public class ZoneIdSerializer extends AbstractSerializer {\r\n+\r\n+    private static final ZoneIdSerializer SERIALIZER = new ZoneIdSerializer();\r\n+\r\n+    public static ZoneIdSerializer getInstance() {\r\n+        return SERIALIZER;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeObject(Object obj, AbstractHessianOutput out) throws IOException {\r\n+        if (obj == null) {\r\n+            out.writeNull();\r\n+        } else {\r\n+            out.writeObject(new ZoneIdHandle(obj));\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/serializer/java8/ZoneOffsetHandle.java", "source2": "org/apache/dubbo/serialize/hessian/serializer/java8/ZoneOffsetHandle.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,51 +1,51 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.serialize.hessian.serializer.java8;\n-\n-\n-import com.caucho.hessian.io.HessianHandle;\n-\n-import java.io.Serializable;\n-import java.time.ZoneOffset;\n-\n-public class ZoneOffsetHandle implements HessianHandle, Serializable {\n-    private static final long serialVersionUID = 8841589723587858789L;\n-\n-    private int seconds;\n-\n-    public ZoneOffsetHandle() {\n-    }\n-\n-    public ZoneOffsetHandle(Object o) {\n-        try {\n-            ZoneOffset zoneOffset = (ZoneOffset) o;\n-            this.seconds = zoneOffset.getTotalSeconds();\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-    }\n-\n-    private Object readResolve() {\n-        try {\n-            return ZoneOffset.ofTotalSeconds(seconds);\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-        return null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.serialize.hessian.serializer.java8;\r\n+\r\n+\r\n+import com.caucho.hessian.io.HessianHandle;\r\n+\r\n+import java.io.Serializable;\r\n+import java.time.ZoneOffset;\r\n+\r\n+public class ZoneOffsetHandle implements HessianHandle, Serializable {\r\n+    private static final long serialVersionUID = 8841589723587858789L;\r\n+\r\n+    private int seconds;\r\n+\r\n+    public ZoneOffsetHandle() {\r\n+    }\r\n+\r\n+    public ZoneOffsetHandle(Object o) {\r\n+        try {\r\n+            ZoneOffset zoneOffset = (ZoneOffset) o;\r\n+            this.seconds = zoneOffset.getTotalSeconds();\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+    }\r\n+\r\n+    private Object readResolve() {\r\n+        try {\r\n+            return ZoneOffset.ofTotalSeconds(seconds);\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+        return null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/serialize/hessian/serializer/java8/ZonedDateTimeHandle.java", "source2": "org/apache/dubbo/serialize/hessian/serializer/java8/ZonedDateTimeHandle.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,62 +1,62 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.serialize.hessian.serializer.java8;\n-\n-\n-import com.caucho.hessian.io.HessianHandle;\n-\n-import java.io.Serializable;\n-import java.time.LocalDateTime;\n-import java.time.ZoneId;\n-import java.time.ZoneOffset;\n-import java.time.ZonedDateTime;\n-\n-public class ZonedDateTimeHandle implements HessianHandle, Serializable {\n-    private static final long serialVersionUID = -6933460123278647569L;\n-\n-    private LocalDateTime dateTime;\n-    private ZoneOffset offset;\n-    private String zoneId;\n-\n-\n-    public ZonedDateTimeHandle() {\n-    }\n-\n-    public ZonedDateTimeHandle(Object o) {\n-        try {\n-            ZonedDateTime zonedDateTime = (ZonedDateTime) o;\n-            this.dateTime = zonedDateTime.toLocalDateTime();\n-            this.offset = zonedDateTime.getOffset();\n-            ZoneId zone = zonedDateTime.getZone();\n-            if (zone != null) {\n-                this.zoneId = zone.getId();\n-            }\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-    }\n-\n-    private Object readResolve() {\n-        try {\n-            return ZonedDateTime.ofLocal(dateTime, ZoneId.of(zoneId), offset);\n-        } catch (Throwable t) {\n-            // ignore\n-        }\n-        return null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.serialize.hessian.serializer.java8;\r\n+\r\n+\r\n+import com.caucho.hessian.io.HessianHandle;\r\n+\r\n+import java.io.Serializable;\r\n+import java.time.LocalDateTime;\r\n+import java.time.ZoneId;\r\n+import java.time.ZoneOffset;\r\n+import java.time.ZonedDateTime;\r\n+\r\n+public class ZonedDateTimeHandle implements HessianHandle, Serializable {\r\n+    private static final long serialVersionUID = -6933460123278647569L;\r\n+\r\n+    private LocalDateTime dateTime;\r\n+    private ZoneOffset offset;\r\n+    private String zoneId;\r\n+\r\n+\r\n+    public ZonedDateTimeHandle() {\r\n+    }\r\n+\r\n+    public ZonedDateTimeHandle(Object o) {\r\n+        try {\r\n+            ZonedDateTime zonedDateTime = (ZonedDateTime) o;\r\n+            this.dateTime = zonedDateTime.toLocalDateTime();\r\n+            this.offset = zonedDateTime.getOffset();\r\n+            ZoneId zone = zonedDateTime.getZone();\r\n+            if (zone != null) {\r\n+                this.zoneId = zone.getId();\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+    }\r\n+\r\n+    private Object readResolve() {\r\n+        try {\r\n+            return ZonedDateTime.ofLocal(dateTime, ZoneId.of(zoneId), offset);\r\n+        } catch (Throwable t) {\r\n+            // ignore\r\n+        }\r\n+        return null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/java/CompactedJavaSerialization.java", "source2": "org/apache/dubbo/common/serialize/java/CompactedJavaSerialization.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,59 +1,59 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.java;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.Serialization;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-\n-import static org.apache.dubbo.common.serialize.Constants.COMPACTED_JAVA_SERIALIZATION_ID;\n-\n-/**\n- * Compacted java serialization implementation\n- *\n- * <pre>\n- *     e.g. &lt;dubbo:protocol serialization=\"compactedjava\" /&gt;\n- * </pre>\n- */\n-public class CompactedJavaSerialization implements Serialization {\n-\n-    @Override\n-    public byte getContentTypeId() {\n-        return COMPACTED_JAVA_SERIALIZATION_ID;\n-    }\n-\n-    @Override\n-    public String getContentType() {\n-        return \"x-application/compactedjava\";\n-    }\n-\n-    @Override\n-    public ObjectOutput serialize(URL url, OutputStream out) throws IOException {\n-        return new JavaObjectOutput(out, true);\n-    }\n-\n-    @Override\n-    public ObjectInput deserialize(URL url, InputStream is) throws IOException {\n-        return new JavaObjectInput(is, true);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.java;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+\r\n+import static org.apache.dubbo.common.serialize.Constants.COMPACTED_JAVA_SERIALIZATION_ID;\r\n+\r\n+/**\r\n+ * Compacted java serialization implementation\r\n+ *\r\n+ * <pre>\r\n+ *     e.g. &lt;dubbo:protocol serialization=\"compactedjava\" /&gt;\r\n+ * </pre>\r\n+ */\r\n+public class CompactedJavaSerialization implements Serialization {\r\n+\r\n+    @Override\r\n+    public byte getContentTypeId() {\r\n+        return COMPACTED_JAVA_SERIALIZATION_ID;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getContentType() {\r\n+        return \"x-application/compactedjava\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectOutput serialize(URL url, OutputStream out) throws IOException {\r\n+        return new JavaObjectOutput(out, true);\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectInput deserialize(URL url, InputStream is) throws IOException {\r\n+        return new JavaObjectInput(is, true);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/java/CompactedObjectInputStream.java", "source2": "org/apache/dubbo/common/serialize/java/CompactedObjectInputStream.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,64 +1,64 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.java;\n-\n-\n-import org.apache.dubbo.common.utils.ClassUtils;\n-\n-import java.io.EOFException;\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.ObjectInputStream;\n-import java.io.ObjectStreamClass;\n-import java.io.StreamCorruptedException;\n-\n-/**\n- * Compacted java object input implementation\n- */\n-public class CompactedObjectInputStream extends ObjectInputStream {\n-    private ClassLoader mClassLoader;\n-\n-    public CompactedObjectInputStream(InputStream in) throws IOException {\n-        this(in, Thread.currentThread().getContextClassLoader());\n-    }\n-\n-    public CompactedObjectInputStream(InputStream in, ClassLoader cl) throws IOException {\n-        super(in);\n-        mClassLoader = cl == null ? ClassUtils.getClassLoader() : cl;\n-    }\n-\n-    @Override\n-    protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException {\n-        int type = read();\n-        if (type < 0) {\n-            throw new EOFException();\n-        }\n-        switch (type) {\n-            case 0:\n-                return super.readClassDescriptor();\n-            case 1:\n-                Class<?> clazz = loadClass(readUTF());\n-                return ObjectStreamClass.lookup(clazz);\n-            default:\n-                throw new StreamCorruptedException(\"Unexpected class descriptor type: \" + type);\n-        }\n-    }\n-\n-    private Class<?> loadClass(String className) throws ClassNotFoundException {\n-        return mClassLoader.loadClass(className);\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.java;\r\n+\r\n+\r\n+import org.apache.dubbo.common.utils.ClassUtils;\r\n+\r\n+import java.io.EOFException;\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.ObjectInputStream;\r\n+import java.io.ObjectStreamClass;\r\n+import java.io.StreamCorruptedException;\r\n+\r\n+/**\r\n+ * Compacted java object input implementation\r\n+ */\r\n+public class CompactedObjectInputStream extends ObjectInputStream {\r\n+    private ClassLoader mClassLoader;\r\n+\r\n+    public CompactedObjectInputStream(InputStream in) throws IOException {\r\n+        this(in, Thread.currentThread().getContextClassLoader());\r\n+    }\r\n+\r\n+    public CompactedObjectInputStream(InputStream in, ClassLoader cl) throws IOException {\r\n+        super(in);\r\n+        mClassLoader = cl == null ? ClassUtils.getClassLoader() : cl;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException {\r\n+        int type = read();\r\n+        if (type < 0) {\r\n+            throw new EOFException();\r\n+        }\r\n+        switch (type) {\r\n+            case 0:\r\n+                return super.readClassDescriptor();\r\n+            case 1:\r\n+                Class<?> clazz = loadClass(readUTF());\r\n+                return ObjectStreamClass.lookup(clazz);\r\n+            default:\r\n+                throw new StreamCorruptedException(\"Unexpected class descriptor type: \" + type);\r\n+        }\r\n+    }\r\n+\r\n+    private Class<?> loadClass(String className) throws ClassNotFoundException {\r\n+        return mClassLoader.loadClass(className);\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/common/serialize/java/JavaSerialization.java", "source2": "org/apache/dubbo/common/serialize/java/JavaSerialization.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,59 +1,59 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.java;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.Serialization;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-\n-import static org.apache.dubbo.common.serialize.Constants.JAVA_SERIALIZATION_ID;\n-\n-/**\n- * Java serialization implementation\n- *\n- * <pre>\n- *     e.g. &lt;dubbo:protocol serialization=\"java\" /&gt;\n- * </pre>\n- */\n-public class JavaSerialization implements Serialization {\n-\n-    @Override\n-    public byte getContentTypeId() {\n-        return JAVA_SERIALIZATION_ID;\n-    }\n-\n-    @Override\n-    public String getContentType() {\n-        return \"x-application/java\";\n-    }\n-\n-    @Override\n-    public ObjectOutput serialize(URL url, OutputStream out) throws IOException {\n-        return new JavaObjectOutput(out);\n-    }\n-\n-    @Override\n-    public ObjectInput deserialize(URL url, InputStream is) throws IOException {\n-        return new JavaObjectInput(is);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.java;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+\r\n+import static org.apache.dubbo.common.serialize.Constants.JAVA_SERIALIZATION_ID;\r\n+\r\n+/**\r\n+ * Java serialization implementation\r\n+ *\r\n+ * <pre>\r\n+ *     e.g. &lt;dubbo:protocol serialization=\"java\" /&gt;\r\n+ * </pre>\r\n+ */\r\n+public class JavaSerialization implements Serialization {\r\n+\r\n+    @Override\r\n+    public byte getContentTypeId() {\r\n+        return JAVA_SERIALIZATION_ID;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getContentType() {\r\n+        return \"x-application/java\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectOutput serialize(URL url, OutputStream out) throws IOException {\r\n+        return new JavaObjectOutput(out);\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectInput deserialize(URL url, InputStream is) throws IOException {\r\n+        return new JavaObjectInput(is);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/nativejava/NativeJavaSerialization.java", "source2": "org/apache/dubbo/common/serialize/nativejava/NativeJavaSerialization.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,60 +1,60 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.serialize.nativejava;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.Serialization;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-\n-import static org.apache.dubbo.common.serialize.Constants.NATIVE_JAVA_SERIALIZATION_ID;\n-\n-/**\n- * Native java serialization implementation\n- *\n- * <pre>\n- *     e.g. &lt;dubbo:protocol serialization=\"nativejava\" /&gt;\n- * </pre>\n- */\n-public class NativeJavaSerialization implements Serialization {\n-\n-\n-    @Override\n-    public byte getContentTypeId() {\n-        return NATIVE_JAVA_SERIALIZATION_ID;\n-    }\n-\n-    @Override\n-    public String getContentType() {\n-        return \"x-application/nativejava\";\n-    }\n-\n-    @Override\n-    public ObjectOutput serialize(URL url, OutputStream output) throws IOException {\n-        return new NativeJavaObjectOutput(output);\n-    }\n-\n-    @Override\n-    public ObjectInput deserialize(URL url, InputStream input) throws IOException {\n-        return new NativeJavaObjectInput(input);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.serialize.nativejava;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+\r\n+import static org.apache.dubbo.common.serialize.Constants.NATIVE_JAVA_SERIALIZATION_ID;\r\n+\r\n+/**\r\n+ * Native java serialization implementation\r\n+ *\r\n+ * <pre>\r\n+ *     e.g. &lt;dubbo:protocol serialization=\"nativejava\" /&gt;\r\n+ * </pre>\r\n+ */\r\n+public class NativeJavaSerialization implements Serialization {\r\n+\r\n+\r\n+    @Override\r\n+    public byte getContentTypeId() {\r\n+        return NATIVE_JAVA_SERIALIZATION_ID;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getContentType() {\r\n+        return \"x-application/nativejava\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectOutput serialize(URL url, OutputStream output) throws IOException {\r\n+        return new NativeJavaObjectOutput(output);\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectInput deserialize(URL url, InputStream input) throws IOException {\r\n+        return new NativeJavaObjectInput(input);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/kryo/CompatibleKryo.java", "source2": "org/apache/dubbo/common/serialize/kryo/CompatibleKryo.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,54 +1,54 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.kryo;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-\n-import com.esotericsoftware.kryo.Kryo;\n-import com.esotericsoftware.kryo.Serializer;\n-import com.esotericsoftware.kryo.serializers.JavaSerializer;\n-\n-public class CompatibleKryo extends Kryo {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(CompatibleKryo.class);\n-\n-    @Override\n-    public Serializer getDefaultSerializer(Class type) {\n-        if (type == null) {\n-            throw new IllegalArgumentException(\"type cannot be null.\");\n-        }\n-\n-        /**\n-         * Kryo requires every class to provide a zero argument constructor. For any class does not match this condition, kryo have two ways:\n-         * 1. Use JavaSerializer,\n-         * 2. Set 'kryo.setInstantiatorStrategy(new DefaultInstantiatorStrategy(new StdInstantiatorStrategy()));', StdInstantiatorStrategy can generate an instance bypassing the constructor.\n-         *\n-         * In practice, it's not possible for Dubbo users to register kryo Serializer for every customized class. So in most cases, customized classes with/without zero argument constructor will\n-         * default to the default serializer.\n-         * It is the responsibility of kryo to handle with every standard jdk classes, so we will just escape these classes.\n-         */\n-        if (!ReflectUtils.isJdk(type) && !type.isArray() && !type.isEnum() && !ReflectUtils.checkZeroArgConstructor(type)) {\n-            if (logger.isWarnEnabled()) {\n-                logger.warn(type + \" has no zero-arg constructor and this will affect the serialization performance\");\n-            }\n-            return new JavaSerializer();\n-        }\n-        return super.getDefaultSerializer(type);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.kryo;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+\r\n+import com.esotericsoftware.kryo.Kryo;\r\n+import com.esotericsoftware.kryo.Serializer;\r\n+import com.esotericsoftware.kryo.serializers.JavaSerializer;\r\n+\r\n+public class CompatibleKryo extends Kryo {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(CompatibleKryo.class);\r\n+\r\n+    @Override\r\n+    public Serializer getDefaultSerializer(Class type) {\r\n+        if (type == null) {\r\n+            throw new IllegalArgumentException(\"type cannot be null.\");\r\n+        }\r\n+\r\n+        /**\r\n+         * Kryo requires every class to provide a zero argument constructor. For any class does not match this condition, kryo have two ways:\r\n+         * 1. Use JavaSerializer,\r\n+         * 2. Set 'kryo.setInstantiatorStrategy(new DefaultInstantiatorStrategy(new StdInstantiatorStrategy()));', StdInstantiatorStrategy can generate an instance bypassing the constructor.\r\n+         *\r\n+         * In practice, it's not possible for Dubbo users to register kryo Serializer for every customized class. So in most cases, customized classes with/without zero argument constructor will\r\n+         * default to the default serializer.\r\n+         * It is the responsibility of kryo to handle with every standard jdk classes, so we will just escape these classes.\r\n+         */\r\n+        if (!ReflectUtils.isJdk(type) && !type.isArray() && !type.isEnum() && !ReflectUtils.checkZeroArgConstructor(type)) {\r\n+            if (logger.isWarnEnabled()) {\r\n+                logger.warn(type + \" has no zero-arg constructor and this will affect the serialization performance\");\r\n+            }\r\n+            return new JavaSerializer();\r\n+        }\r\n+        return super.getDefaultSerializer(type);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/kryo/KryoSerialization.java", "source2": "org/apache/dubbo/common/serialize/kryo/KryoSerialization.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,58 +1,58 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.kryo;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.Serialization;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-\n-import static org.apache.dubbo.common.serialize.Constants.KRYO_SERIALIZATION_ID;\n-\n-/**\n- * TODO for now kryo serialization doesn't deny classes that don't implement the serializable interface\n- *\n- * <pre>\n- *     e.g. &lt;dubbo:protocol serialization=\"kryo\" /&gt;\n- * </pre>\n- */\n-public class KryoSerialization implements Serialization {\n-\n-    @Override\n-    public byte getContentTypeId() {\n-        return KRYO_SERIALIZATION_ID;\n-    }\n-\n-    @Override\n-    public String getContentType() {\n-        return \"x-application/kryo\";\n-    }\n-\n-    @Override\n-    public ObjectOutput serialize(URL url, OutputStream out) throws IOException {\n-        return new KryoObjectOutput(out);\n-    }\n-\n-    @Override\n-    public ObjectInput deserialize(URL url, InputStream is) throws IOException {\n-        return new KryoObjectInput(is);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.kryo;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+\r\n+import static org.apache.dubbo.common.serialize.Constants.KRYO_SERIALIZATION_ID;\r\n+\r\n+/**\r\n+ * TODO for now kryo serialization doesn't deny classes that don't implement the serializable interface\r\n+ *\r\n+ * <pre>\r\n+ *     e.g. &lt;dubbo:protocol serialization=\"kryo\" /&gt;\r\n+ * </pre>\r\n+ */\r\n+public class KryoSerialization implements Serialization {\r\n+\r\n+    @Override\r\n+    public byte getContentTypeId() {\r\n+        return KRYO_SERIALIZATION_ID;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getContentType() {\r\n+        return \"x-application/kryo\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectOutput serialize(URL url, OutputStream out) throws IOException {\r\n+        return new KryoObjectOutput(out);\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectInput deserialize(URL url, InputStream is) throws IOException {\r\n+        return new KryoObjectInput(is);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/kryo/optimized/KryoObjectInput2.java", "source2": "org/apache/dubbo/common/serialize/kryo/optimized/KryoObjectInput2.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,168 +1,168 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.kryo.optimized;\n-\n-import org.apache.dubbo.common.serialize.Cleanable;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.kryo.utils.KryoUtils;\n-\n-import com.esotericsoftware.kryo.Kryo;\n-import com.esotericsoftware.kryo.KryoException;\n-import com.esotericsoftware.kryo.io.Input;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.lang.reflect.Type;\n-\n-/**\n- * Kryo object input implementation, kryo object can be clean\n- */\n-public class KryoObjectInput2 implements ObjectInput, Cleanable {\n-\n-    private Kryo kryo;\n-    private Input input;\n-\n-    public KryoObjectInput2(InputStream inputStream) {\n-        input = new Input(inputStream);\n-        this.kryo = KryoUtils.get();\n-    }\n-\n-    @Override\n-    public boolean readBool() throws IOException {\n-        try {\n-            return input.readBoolean();\n-        } catch (KryoException e) {\n-            throw new IOException(e);\n-        }\n-    }\n-\n-    @Override\n-    public byte readByte() throws IOException {\n-        try {\n-            return input.readByte();\n-        } catch (KryoException e) {\n-            throw new IOException(e);\n-        }\n-    }\n-\n-    @Override\n-    public short readShort() throws IOException {\n-        try {\n-            return input.readShort();\n-        } catch (KryoException e) {\n-            throw new IOException(e);\n-        }\n-    }\n-\n-    @Override\n-    public int readInt() throws IOException {\n-        try {\n-            return input.readInt();\n-        } catch (KryoException e) {\n-            throw new IOException(e);\n-        }\n-    }\n-\n-    @Override\n-    public long readLong() throws IOException {\n-        try {\n-            return input.readLong();\n-        } catch (KryoException e) {\n-            throw new IOException(e);\n-        }\n-    }\n-\n-    @Override\n-    public float readFloat() throws IOException {\n-        try {\n-            return input.readFloat();\n-        } catch (KryoException e) {\n-            throw new IOException(e);\n-        }\n-    }\n-\n-    @Override\n-    public double readDouble() throws IOException {\n-        try {\n-            return input.readDouble();\n-        } catch (KryoException e) {\n-            throw new IOException(e);\n-        }\n-    }\n-\n-    @Override\n-    public byte[] readBytes() throws IOException {\n-        try {\n-            int len = input.readInt();\n-            if (len < 0) {\n-                return null;\n-            } else if (len == 0) {\n-                return new byte[]{};\n-            } else {\n-                return input.readBytes(len);\n-            }\n-        } catch (KryoException e) {\n-            throw new IOException(e);\n-        }\n-    }\n-\n-    @Override\n-    public String readUTF() throws IOException {\n-        try {\n-            return input.readString();\n-        } catch (KryoException e) {\n-            throw new IOException(e);\n-        }\n-    }\n-\n-    @Override\n-    public Object readObject() throws IOException, ClassNotFoundException {\n-        try {\n-            return kryo.readObjectOrNull(input, String.class);\n-        } catch (KryoException e) {\n-            throw new UnsupportedOperationException(\"Kryo serialization must know the input type when deserialize.\", e);\n-        }\n-    }\n-\n-    @Override\n-    public Throwable readThrowable() throws IOException, ClassNotFoundException {\n-        return (Throwable) kryo.readClassAndObject(input);\n-    }\n-\n-    @Override\n-    public Object readEvent() throws IOException, ClassNotFoundException {\n-        return kryo.readObjectOrNull(input, String.class);\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> T readObject(Class<T> clazz) throws IOException, ClassNotFoundException {\n-        return kryo.readObjectOrNull(input, clazz);\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> T readObject(Class<T> clazz, Type type) throws IOException, ClassNotFoundException {\n-        return readObject(clazz);\n-    }\n-\n-    @Override\n-    public void cleanup() {\n-        KryoUtils.release(kryo);\n-        kryo = null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.kryo.optimized;\r\n+\r\n+import org.apache.dubbo.common.serialize.Cleanable;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.kryo.utils.KryoUtils;\r\n+\r\n+import com.esotericsoftware.kryo.Kryo;\r\n+import com.esotericsoftware.kryo.KryoException;\r\n+import com.esotericsoftware.kryo.io.Input;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.lang.reflect.Type;\r\n+\r\n+/**\r\n+ * Kryo object input implementation, kryo object can be clean\r\n+ */\r\n+public class KryoObjectInput2 implements ObjectInput, Cleanable {\r\n+\r\n+    private Kryo kryo;\r\n+    private Input input;\r\n+\r\n+    public KryoObjectInput2(InputStream inputStream) {\r\n+        input = new Input(inputStream);\r\n+        this.kryo = KryoUtils.get();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean readBool() throws IOException {\r\n+        try {\r\n+            return input.readBoolean();\r\n+        } catch (KryoException e) {\r\n+            throw new IOException(e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte readByte() throws IOException {\r\n+        try {\r\n+            return input.readByte();\r\n+        } catch (KryoException e) {\r\n+            throw new IOException(e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public short readShort() throws IOException {\r\n+        try {\r\n+            return input.readShort();\r\n+        } catch (KryoException e) {\r\n+            throw new IOException(e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public int readInt() throws IOException {\r\n+        try {\r\n+            return input.readInt();\r\n+        } catch (KryoException e) {\r\n+            throw new IOException(e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public long readLong() throws IOException {\r\n+        try {\r\n+            return input.readLong();\r\n+        } catch (KryoException e) {\r\n+            throw new IOException(e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public float readFloat() throws IOException {\r\n+        try {\r\n+            return input.readFloat();\r\n+        } catch (KryoException e) {\r\n+            throw new IOException(e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public double readDouble() throws IOException {\r\n+        try {\r\n+            return input.readDouble();\r\n+        } catch (KryoException e) {\r\n+            throw new IOException(e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte[] readBytes() throws IOException {\r\n+        try {\r\n+            int len = input.readInt();\r\n+            if (len < 0) {\r\n+                return null;\r\n+            } else if (len == 0) {\r\n+                return new byte[]{};\r\n+            } else {\r\n+                return input.readBytes(len);\r\n+            }\r\n+        } catch (KryoException e) {\r\n+            throw new IOException(e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public String readUTF() throws IOException {\r\n+        try {\r\n+            return input.readString();\r\n+        } catch (KryoException e) {\r\n+            throw new IOException(e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object readObject() throws IOException, ClassNotFoundException {\r\n+        try {\r\n+            return kryo.readObjectOrNull(input, String.class);\r\n+        } catch (KryoException e) {\r\n+            throw new UnsupportedOperationException(\"Kryo serialization must know the input type when deserialize.\", e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public Throwable readThrowable() throws IOException, ClassNotFoundException {\r\n+        return (Throwable) kryo.readClassAndObject(input);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object readEvent() throws IOException, ClassNotFoundException {\r\n+        return kryo.readObjectOrNull(input, String.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> T readObject(Class<T> clazz) throws IOException, ClassNotFoundException {\r\n+        return kryo.readObjectOrNull(input, clazz);\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> T readObject(Class<T> clazz, Type type) throws IOException, ClassNotFoundException {\r\n+        return readObject(clazz);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void cleanup() {\r\n+        KryoUtils.release(kryo);\r\n+        kryo = null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/kryo/optimized/KryoObjectOutput2.java", "source2": "org/apache/dubbo/common/serialize/kryo/optimized/KryoObjectOutput2.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,122 +1,122 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.kryo.optimized;\n-\n-import org.apache.dubbo.common.serialize.Cleanable;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.kryo.utils.KryoUtils;\n-\n-import com.esotericsoftware.kryo.Kryo;\n-import com.esotericsoftware.kryo.io.Output;\n-\n-import java.io.IOException;\n-import java.io.OutputStream;\n-\n-/**\n- * Kryo object output implementation, kryo object can be clean\n- */\n-public class KryoObjectOutput2 implements ObjectOutput, Cleanable {\n-\n-    private Output output;\n-    private Kryo kryo;\n-\n-    public KryoObjectOutput2(OutputStream outputStream) {\n-        output = new Output(outputStream);\n-        this.kryo = KryoUtils.get();\n-    }\n-\n-    @Override\n-    public void writeBool(boolean v) throws IOException {\n-        output.writeBoolean(v);\n-    }\n-\n-    @Override\n-    public void writeByte(byte v) throws IOException {\n-        output.writeByte(v);\n-    }\n-\n-    @Override\n-    public void writeShort(short v) throws IOException {\n-        output.writeShort(v);\n-    }\n-\n-    @Override\n-    public void writeInt(int v) throws IOException {\n-        output.writeInt(v);\n-    }\n-\n-    @Override\n-    public void writeLong(long v) throws IOException {\n-        output.writeLong(v);\n-    }\n-\n-    @Override\n-    public void writeFloat(float v) throws IOException {\n-        output.writeFloat(v);\n-    }\n-\n-    @Override\n-    public void writeDouble(double v) throws IOException {\n-        output.writeDouble(v);\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] v) throws IOException {\n-        if (v == null) {\n-            output.writeInt(-1);\n-        } else {\n-            writeBytes(v, 0, v.length);\n-        }\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] v, int off, int len) throws IOException {\n-        if (v == null) {\n-            output.writeInt(-1);\n-        } else {\n-            output.writeInt(len);\n-            output.write(v, off, len);\n-        }\n-    }\n-\n-\n-    @Override\n-    public void writeUTF(String v) throws IOException {\n-        output.writeString(v);\n-    }\n-\n-    @Override\n-    public void writeObject(Object v) throws IOException {\n-        kryo.writeObjectOrNull(output, v, v.getClass());\n-    }\n-\n-    @Override\n-    public void writeThrowable(Object v) throws IOException {\n-        kryo.writeClassAndObject(output, v);\n-    }\n-\n-    @Override\n-    public void flushBuffer() throws IOException {\n-        output.flush();\n-    }\n-\n-    @Override\n-    public void cleanup() {\n-        KryoUtils.release(kryo);\n-        kryo = null;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.kryo.optimized;\r\n+\r\n+import org.apache.dubbo.common.serialize.Cleanable;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.kryo.utils.KryoUtils;\r\n+\r\n+import com.esotericsoftware.kryo.Kryo;\r\n+import com.esotericsoftware.kryo.io.Output;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.OutputStream;\r\n+\r\n+/**\r\n+ * Kryo object output implementation, kryo object can be clean\r\n+ */\r\n+public class KryoObjectOutput2 implements ObjectOutput, Cleanable {\r\n+\r\n+    private Output output;\r\n+    private Kryo kryo;\r\n+\r\n+    public KryoObjectOutput2(OutputStream outputStream) {\r\n+        output = new Output(outputStream);\r\n+        this.kryo = KryoUtils.get();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBool(boolean v) throws IOException {\r\n+        output.writeBoolean(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeByte(byte v) throws IOException {\r\n+        output.writeByte(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeShort(short v) throws IOException {\r\n+        output.writeShort(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeInt(int v) throws IOException {\r\n+        output.writeInt(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeLong(long v) throws IOException {\r\n+        output.writeLong(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeFloat(float v) throws IOException {\r\n+        output.writeFloat(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeDouble(double v) throws IOException {\r\n+        output.writeDouble(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] v) throws IOException {\r\n+        if (v == null) {\r\n+            output.writeInt(-1);\r\n+        } else {\r\n+            writeBytes(v, 0, v.length);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] v, int off, int len) throws IOException {\r\n+        if (v == null) {\r\n+            output.writeInt(-1);\r\n+        } else {\r\n+            output.writeInt(len);\r\n+            output.write(v, off, len);\r\n+        }\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public void writeUTF(String v) throws IOException {\r\n+        output.writeString(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeObject(Object v) throws IOException {\r\n+        kryo.writeObjectOrNull(output, v, v.getClass());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeThrowable(Object v) throws IOException {\r\n+        kryo.writeClassAndObject(output, v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void flushBuffer() throws IOException {\r\n+        output.flush();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void cleanup() {\r\n+        KryoUtils.release(kryo);\r\n+        kryo = null;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/kryo/optimized/KryoSerialization2.java", "source2": "org/apache/dubbo/common/serialize/kryo/optimized/KryoSerialization2.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,57 +1,57 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.kryo.optimized;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.serialize.Constants;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.Serialization;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-\n-/**\n- * TODO for now kryo serialization doesn't deny classes that don't implement the serializable interface\n- *\n- * <pre>\n- *     e.g. &lt;dubbo:protocol serialization=\"kryo\" /&gt;\n- * </pre>\n- */\n-public class KryoSerialization2 implements Serialization {\n-\n-    @Override\n-    public byte getContentTypeId() {\n-        return Constants.KRYO_SERIALIZATION2_ID;\n-    }\n-\n-    @Override\n-    public String getContentType() {\n-        return \"x-application/kryo\";\n-    }\n-\n-    @Override\n-    public ObjectOutput serialize(URL url, OutputStream out) throws IOException {\n-        return new KryoObjectOutput2(out);\n-    }\n-\n-    @Override\n-    public ObjectInput deserialize(URL url, InputStream is) throws IOException {\n-        return new KryoObjectInput2(is);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.kryo.optimized;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.serialize.Constants;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+\r\n+/**\r\n+ * TODO for now kryo serialization doesn't deny classes that don't implement the serializable interface\r\n+ *\r\n+ * <pre>\r\n+ *     e.g. &lt;dubbo:protocol serialization=\"kryo\" /&gt;\r\n+ * </pre>\r\n+ */\r\n+public class KryoSerialization2 implements Serialization {\r\n+\r\n+    @Override\r\n+    public byte getContentTypeId() {\r\n+        return Constants.KRYO_SERIALIZATION2_ID;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getContentType() {\r\n+        return \"x-application/kryo\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectOutput serialize(URL url, OutputStream out) throws IOException {\r\n+        return new KryoObjectOutput2(out);\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectInput deserialize(URL url, InputStream is) throws IOException {\r\n+        return new KryoObjectInput2(is);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/kryo/utils/AbstractKryoFactory.java", "source2": "org/apache/dubbo/common/serialize/kryo/utils/AbstractKryoFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,158 +1,158 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.kryo.utils;\n-\n-import com.esotericsoftware.kryo.serializers.JavaSerializer;\n-import org.apache.dubbo.common.serialize.kryo.CompatibleKryo;\n-import org.apache.dubbo.common.serialize.support.SerializableClassRegistry;\n-\n-import com.esotericsoftware.kryo.Kryo;\n-import com.esotericsoftware.kryo.Serializer;\n-import com.esotericsoftware.kryo.pool.KryoFactory;\n-import com.esotericsoftware.kryo.serializers.DefaultSerializers;\n-import de.javakaffee.kryoserializers.ArraysAsListSerializer;\n-import de.javakaffee.kryoserializers.BitSetSerializer;\n-import de.javakaffee.kryoserializers.GregorianCalendarSerializer;\n-import de.javakaffee.kryoserializers.JdkProxySerializer;\n-import de.javakaffee.kryoserializers.RegexSerializer;\n-import de.javakaffee.kryoserializers.SynchronizedCollectionsSerializer;\n-import de.javakaffee.kryoserializers.URISerializer;\n-import de.javakaffee.kryoserializers.UUIDSerializer;\n-import de.javakaffee.kryoserializers.UnmodifiableCollectionsSerializer;\n-\n-import java.lang.reflect.InvocationHandler;\n-import java.math.BigDecimal;\n-import java.math.BigInteger;\n-import java.net.URI;\n-import java.text.SimpleDateFormat;\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.BitSet;\n-import java.util.Calendar;\n-import java.util.Date;\n-import java.util.GregorianCalendar;\n-import java.util.HashMap;\n-import java.util.HashSet;\n-import java.util.Hashtable;\n-import java.util.LinkedHashSet;\n-import java.util.LinkedList;\n-import java.util.Set;\n-import java.util.TreeSet;\n-import java.util.UUID;\n-import java.util.Vector;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.regex.Pattern;\n-\n-public abstract class AbstractKryoFactory implements KryoFactory {\n-\n-    private final Set<Class> registrations = new LinkedHashSet<Class>();\n-\n-    private boolean registrationRequired;\n-\n-    private volatile boolean kryoCreated;\n-\n-    public AbstractKryoFactory() {\n-\n-    }\n-\n-    /**\n-     * only supposed to be called at startup time\n-     *\n-     *  later may consider adding support for custom serializer, custom id, etc\n-     */\n-    public void registerClass(Class clazz) {\n-\n-        if (kryoCreated) {\n-            throw new IllegalStateException(\"Can't register class after creating kryo instance\");\n-        }\n-        registrations.add(clazz);\n-    }\n-\n-    @Override\n-    public Kryo create() {\n-        if (!kryoCreated) {\n-            kryoCreated = true;\n-        }\n-\n-        Kryo kryo = new CompatibleKryo();\n-\n-        // TODO\n-//        kryo.setReferences(false);\n-        kryo.setRegistrationRequired(registrationRequired);\n-\n-        kryo.addDefaultSerializer(Throwable.class, new JavaSerializer());\n-        kryo.register(Arrays.asList(\"\").getClass(), new ArraysAsListSerializer());\n-        kryo.register(GregorianCalendar.class, new GregorianCalendarSerializer());\n-        kryo.register(InvocationHandler.class, new JdkProxySerializer());\n-        kryo.register(BigDecimal.class, new DefaultSerializers.BigDecimalSerializer());\n-        kryo.register(BigInteger.class, new DefaultSerializers.BigIntegerSerializer());\n-        kryo.register(Pattern.class, new RegexSerializer());\n-        kryo.register(BitSet.class, new BitSetSerializer());\n-        kryo.register(URI.class, new URISerializer());\n-        kryo.register(UUID.class, new UUIDSerializer());\n-        UnmodifiableCollectionsSerializer.registerSerializers(kryo);\n-        SynchronizedCollectionsSerializer.registerSerializers(kryo);\n-\n-        // now just added some very common classes\n-        // TODO optimization\n-        kryo.register(HashMap.class);\n-        kryo.register(ArrayList.class);\n-        kryo.register(LinkedList.class);\n-        kryo.register(HashSet.class);\n-        kryo.register(TreeSet.class);\n-        kryo.register(Hashtable.class);\n-        kryo.register(Date.class);\n-        kryo.register(Calendar.class);\n-        kryo.register(ConcurrentHashMap.class);\n-        kryo.register(SimpleDateFormat.class);\n-        kryo.register(GregorianCalendar.class);\n-        kryo.register(Vector.class);\n-        kryo.register(BitSet.class);\n-        kryo.register(StringBuffer.class);\n-        kryo.register(StringBuilder.class);\n-        kryo.register(Object.class);\n-        kryo.register(Object[].class);\n-        kryo.register(String[].class);\n-        kryo.register(byte[].class);\n-        kryo.register(char[].class);\n-        kryo.register(int[].class);\n-        kryo.register(float[].class);\n-        kryo.register(double[].class);\n-\n-        for (Class clazz : registrations) {\n-            kryo.register(clazz);\n-        }\n-\n-        SerializableClassRegistry.getRegisteredClasses().forEach((clazz, ser) -> {\n-            if (ser == null) {\n-                kryo.register(clazz);\n-            } else {\n-                kryo.register(clazz, (Serializer) ser);\n-            }\n-        });\n-\n-        return kryo;\n-    }\n-\n-    public void setRegistrationRequired(boolean registrationRequired) {\n-        this.registrationRequired = registrationRequired;\n-    }\n-\n-    public abstract void returnKryo(Kryo kryo);\n-\n-    public abstract Kryo getKryo();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.kryo.utils;\r\n+\r\n+import com.esotericsoftware.kryo.serializers.JavaSerializer;\r\n+import org.apache.dubbo.common.serialize.kryo.CompatibleKryo;\r\n+import org.apache.dubbo.common.serialize.support.SerializableClassRegistry;\r\n+\r\n+import com.esotericsoftware.kryo.Kryo;\r\n+import com.esotericsoftware.kryo.Serializer;\r\n+import com.esotericsoftware.kryo.pool.KryoFactory;\r\n+import com.esotericsoftware.kryo.serializers.DefaultSerializers;\r\n+import de.javakaffee.kryoserializers.ArraysAsListSerializer;\r\n+import de.javakaffee.kryoserializers.BitSetSerializer;\r\n+import de.javakaffee.kryoserializers.GregorianCalendarSerializer;\r\n+import de.javakaffee.kryoserializers.JdkProxySerializer;\r\n+import de.javakaffee.kryoserializers.RegexSerializer;\r\n+import de.javakaffee.kryoserializers.SynchronizedCollectionsSerializer;\r\n+import de.javakaffee.kryoserializers.URISerializer;\r\n+import de.javakaffee.kryoserializers.UUIDSerializer;\r\n+import de.javakaffee.kryoserializers.UnmodifiableCollectionsSerializer;\r\n+\r\n+import java.lang.reflect.InvocationHandler;\r\n+import java.math.BigDecimal;\r\n+import java.math.BigInteger;\r\n+import java.net.URI;\r\n+import java.text.SimpleDateFormat;\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.BitSet;\r\n+import java.util.Calendar;\r\n+import java.util.Date;\r\n+import java.util.GregorianCalendar;\r\n+import java.util.HashMap;\r\n+import java.util.HashSet;\r\n+import java.util.Hashtable;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.LinkedList;\r\n+import java.util.Set;\r\n+import java.util.TreeSet;\r\n+import java.util.UUID;\r\n+import java.util.Vector;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.regex.Pattern;\r\n+\r\n+public abstract class AbstractKryoFactory implements KryoFactory {\r\n+\r\n+    private final Set<Class> registrations = new LinkedHashSet<Class>();\r\n+\r\n+    private boolean registrationRequired;\r\n+\r\n+    private volatile boolean kryoCreated;\r\n+\r\n+    public AbstractKryoFactory() {\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * only supposed to be called at startup time\r\n+     *\r\n+     *  later may consider adding support for custom serializer, custom id, etc\r\n+     */\r\n+    public void registerClass(Class clazz) {\r\n+\r\n+        if (kryoCreated) {\r\n+            throw new IllegalStateException(\"Can't register class after creating kryo instance\");\r\n+        }\r\n+        registrations.add(clazz);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Kryo create() {\r\n+        if (!kryoCreated) {\r\n+            kryoCreated = true;\r\n+        }\r\n+\r\n+        Kryo kryo = new CompatibleKryo();\r\n+\r\n+        // TODO\r\n+//        kryo.setReferences(false);\r\n+        kryo.setRegistrationRequired(registrationRequired);\r\n+\r\n+        kryo.addDefaultSerializer(Throwable.class, new JavaSerializer());\r\n+        kryo.register(Arrays.asList(\"\").getClass(), new ArraysAsListSerializer());\r\n+        kryo.register(GregorianCalendar.class, new GregorianCalendarSerializer());\r\n+        kryo.register(InvocationHandler.class, new JdkProxySerializer());\r\n+        kryo.register(BigDecimal.class, new DefaultSerializers.BigDecimalSerializer());\r\n+        kryo.register(BigInteger.class, new DefaultSerializers.BigIntegerSerializer());\r\n+        kryo.register(Pattern.class, new RegexSerializer());\r\n+        kryo.register(BitSet.class, new BitSetSerializer());\r\n+        kryo.register(URI.class, new URISerializer());\r\n+        kryo.register(UUID.class, new UUIDSerializer());\r\n+        UnmodifiableCollectionsSerializer.registerSerializers(kryo);\r\n+        SynchronizedCollectionsSerializer.registerSerializers(kryo);\r\n+\r\n+        // now just added some very common classes\r\n+        // TODO optimization\r\n+        kryo.register(HashMap.class);\r\n+        kryo.register(ArrayList.class);\r\n+        kryo.register(LinkedList.class);\r\n+        kryo.register(HashSet.class);\r\n+        kryo.register(TreeSet.class);\r\n+        kryo.register(Hashtable.class);\r\n+        kryo.register(Date.class);\r\n+        kryo.register(Calendar.class);\r\n+        kryo.register(ConcurrentHashMap.class);\r\n+        kryo.register(SimpleDateFormat.class);\r\n+        kryo.register(GregorianCalendar.class);\r\n+        kryo.register(Vector.class);\r\n+        kryo.register(BitSet.class);\r\n+        kryo.register(StringBuffer.class);\r\n+        kryo.register(StringBuilder.class);\r\n+        kryo.register(Object.class);\r\n+        kryo.register(Object[].class);\r\n+        kryo.register(String[].class);\r\n+        kryo.register(byte[].class);\r\n+        kryo.register(char[].class);\r\n+        kryo.register(int[].class);\r\n+        kryo.register(float[].class);\r\n+        kryo.register(double[].class);\r\n+\r\n+        for (Class clazz : registrations) {\r\n+            kryo.register(clazz);\r\n+        }\r\n+\r\n+        SerializableClassRegistry.getRegisteredClasses().forEach((clazz, ser) -> {\r\n+            if (ser == null) {\r\n+                kryo.register(clazz);\r\n+            } else {\r\n+                kryo.register(clazz, (Serializer) ser);\r\n+            }\r\n+        });\r\n+\r\n+        return kryo;\r\n+    }\r\n+\r\n+    public void setRegistrationRequired(boolean registrationRequired) {\r\n+        this.registrationRequired = registrationRequired;\r\n+    }\r\n+\r\n+    public abstract void returnKryo(Kryo kryo);\r\n+\r\n+    public abstract Kryo getKryo();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/kryo/utils/PrototypeKryoFactory.java", "source2": "org/apache/dubbo/common/serialize/kryo/utils/PrototypeKryoFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,32 +1,32 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.kryo.utils;\n-\n-import com.esotericsoftware.kryo.Kryo;\n-\n-public class PrototypeKryoFactory extends AbstractKryoFactory {\n-\n-    @Override\n-    public void returnKryo(Kryo kryo) {\n-        // do nothing\n-    }\n-\n-    @Override\n-    public Kryo getKryo() {\n-        return create();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.kryo.utils;\r\n+\r\n+import com.esotericsoftware.kryo.Kryo;\r\n+\r\n+public class PrototypeKryoFactory extends AbstractKryoFactory {\r\n+\r\n+    @Override\r\n+    public void returnKryo(Kryo kryo) {\r\n+        // do nothing\r\n+    }\r\n+\r\n+    @Override\r\n+    public Kryo getKryo() {\r\n+        return create();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/kryo/utils/ThreadLocalKryoFactory.java", "source2": "org/apache/dubbo/common/serialize/kryo/utils/ThreadLocalKryoFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,39 +1,39 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.kryo.utils;\n-\n-import com.esotericsoftware.kryo.Kryo;\n-\n-public class ThreadLocalKryoFactory extends AbstractKryoFactory {\n-\n-    private final ThreadLocal<Kryo> holder = new ThreadLocal<Kryo>() {\n-        @Override\n-        protected Kryo initialValue() {\n-            return create();\n-        }\n-    };\n-\n-    @Override\n-    public void returnKryo(Kryo kryo) {\n-        // do nothing\n-    }\n-\n-    @Override\n-    public Kryo getKryo() {\n-        return holder.get();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.kryo.utils;\r\n+\r\n+import com.esotericsoftware.kryo.Kryo;\r\n+\r\n+public class ThreadLocalKryoFactory extends AbstractKryoFactory {\r\n+\r\n+    private final ThreadLocal<Kryo> holder = new ThreadLocal<Kryo>() {\r\n+        @Override\r\n+        protected Kryo initialValue() {\r\n+            return create();\r\n+        }\r\n+    };\r\n+\r\n+    @Override\r\n+    public void returnKryo(Kryo kryo) {\r\n+        // do nothing\r\n+    }\r\n+\r\n+    @Override\r\n+    public Kryo getKryo() {\r\n+        return holder.get();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/protostuff/ProtostuffObjectOutput.java", "source2": "org/apache/dubbo/common/serialize/protostuff/ProtostuffObjectOutput.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,130 +1,130 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.serialize.protostuff;\n-\n-import io.protostuff.GraphIOUtil;\n-import io.protostuff.LinkedBuffer;\n-import io.protostuff.Schema;\n-import io.protostuff.runtime.RuntimeSchema;\n-import java.io.DataOutputStream;\n-import java.io.IOException;\n-import java.io.OutputStream;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.protostuff.utils.WrapperUtils;\n-\n-/**\n- * Protostuff object output implementation\n- */\n-public class ProtostuffObjectOutput implements ObjectOutput {\n-\n-    private LinkedBuffer buffer = LinkedBuffer.allocate();\n-    private DataOutputStream dos;\n-\n-    public ProtostuffObjectOutput(OutputStream outputStream) {\n-        dos = new DataOutputStream(outputStream);\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    @Override\n-    public void writeObject(Object obj) throws IOException {\n-\n-        byte[] bytes;\n-        byte[] classNameBytes;\n-\n-        try {\n-            if (obj == null || WrapperUtils.needWrapper(obj)) {\n-                Schema<Wrapper> schema = RuntimeSchema.getSchema(Wrapper.class);\n-                Wrapper wrapper = new Wrapper(obj);\n-                bytes = GraphIOUtil.toByteArray(wrapper, schema, buffer);\n-                classNameBytes = Wrapper.class.getName().getBytes();\n-            } else {\n-                Schema schema = RuntimeSchema.getSchema(obj.getClass());\n-                bytes = GraphIOUtil.toByteArray(obj, schema, buffer);\n-                classNameBytes = obj.getClass().getName().getBytes();\n-            }\n-        } finally {\n-            buffer.clear();\n-        }\n-\n-        dos.writeInt(classNameBytes.length);\n-        dos.writeInt(bytes.length);\n-        dos.write(classNameBytes);\n-        dos.write(bytes);\n-    }\n-\n-    @Override\n-    public void writeBool(boolean v) throws IOException {\n-        dos.writeBoolean(v);\n-    }\n-\n-    @Override\n-    public void writeByte(byte v) throws IOException {\n-        dos.writeByte(v);\n-    }\n-\n-    @Override\n-    public void writeShort(short v) throws IOException {\n-        dos.writeShort(v);\n-    }\n-\n-    @Override\n-    public void writeInt(int v) throws IOException {\n-        dos.writeInt(v);\n-    }\n-\n-    @Override\n-    public void writeLong(long v) throws IOException {\n-        dos.writeLong(v);\n-    }\n-\n-    @Override\n-    public void writeFloat(float v) throws IOException {\n-        dos.writeFloat(v);\n-    }\n-\n-    @Override\n-    public void writeDouble(double v) throws IOException {\n-        dos.writeDouble(v);\n-    }\n-\n-    @Override\n-    public void writeUTF(String v) throws IOException {\n-        byte[] bytes = v.getBytes();\n-        dos.writeInt(bytes.length);\n-        dos.write(bytes);\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] v) throws IOException {\n-        dos.writeInt(v.length);\n-        dos.write(v);\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] v, int off, int len) throws IOException {\n-        dos.writeInt(len);\n-        byte[] bytes = new byte[len];\n-        System.arraycopy(v, off, bytes, 0, len);\n-        dos.write(bytes);\n-    }\n-\n-    @Override\n-    public void flushBuffer() throws IOException {\n-        dos.flush();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.serialize.protostuff;\r\n+\r\n+import io.protostuff.GraphIOUtil;\r\n+import io.protostuff.LinkedBuffer;\r\n+import io.protostuff.Schema;\r\n+import io.protostuff.runtime.RuntimeSchema;\r\n+import java.io.DataOutputStream;\r\n+import java.io.IOException;\r\n+import java.io.OutputStream;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.protostuff.utils.WrapperUtils;\r\n+\r\n+/**\r\n+ * Protostuff object output implementation\r\n+ */\r\n+public class ProtostuffObjectOutput implements ObjectOutput {\r\n+\r\n+    private LinkedBuffer buffer = LinkedBuffer.allocate();\r\n+    private DataOutputStream dos;\r\n+\r\n+    public ProtostuffObjectOutput(OutputStream outputStream) {\r\n+        dos = new DataOutputStream(outputStream);\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    @Override\r\n+    public void writeObject(Object obj) throws IOException {\r\n+\r\n+        byte[] bytes;\r\n+        byte[] classNameBytes;\r\n+\r\n+        try {\r\n+            if (obj == null || WrapperUtils.needWrapper(obj)) {\r\n+                Schema<Wrapper> schema = RuntimeSchema.getSchema(Wrapper.class);\r\n+                Wrapper wrapper = new Wrapper(obj);\r\n+                bytes = GraphIOUtil.toByteArray(wrapper, schema, buffer);\r\n+                classNameBytes = Wrapper.class.getName().getBytes();\r\n+            } else {\r\n+                Schema schema = RuntimeSchema.getSchema(obj.getClass());\r\n+                bytes = GraphIOUtil.toByteArray(obj, schema, buffer);\r\n+                classNameBytes = obj.getClass().getName().getBytes();\r\n+            }\r\n+        } finally {\r\n+            buffer.clear();\r\n+        }\r\n+\r\n+        dos.writeInt(classNameBytes.length);\r\n+        dos.writeInt(bytes.length);\r\n+        dos.write(classNameBytes);\r\n+        dos.write(bytes);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBool(boolean v) throws IOException {\r\n+        dos.writeBoolean(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeByte(byte v) throws IOException {\r\n+        dos.writeByte(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeShort(short v) throws IOException {\r\n+        dos.writeShort(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeInt(int v) throws IOException {\r\n+        dos.writeInt(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeLong(long v) throws IOException {\r\n+        dos.writeLong(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeFloat(float v) throws IOException {\r\n+        dos.writeFloat(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeDouble(double v) throws IOException {\r\n+        dos.writeDouble(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeUTF(String v) throws IOException {\r\n+        byte[] bytes = v.getBytes();\r\n+        dos.writeInt(bytes.length);\r\n+        dos.write(bytes);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] v) throws IOException {\r\n+        dos.writeInt(v.length);\r\n+        dos.write(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] v, int off, int len) throws IOException {\r\n+        dos.writeInt(len);\r\n+        byte[] bytes = new byte[len];\r\n+        System.arraycopy(v, off, bytes, 0, len);\r\n+        dos.write(bytes);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void flushBuffer() throws IOException {\r\n+        dos.flush();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/protostuff/ProtostuffSerialization.java", "source2": "org/apache/dubbo/common/serialize/protostuff/ProtostuffSerialization.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,58 +1,58 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.serialize.protostuff;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.Serialization;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-\n-import static org.apache.dubbo.common.serialize.Constants.PROTOSTUFF_SERIALIZATION_ID;\n-\n-/**\n- * Protostuff serialization implementation\n- *\n- * <pre>\n- *     e.g. &lt;dubbo:protocol serialization=\"protostuff\" /&gt;\n- * </pre>\n- */\n-public class ProtostuffSerialization implements Serialization {\n-    @Override\n-    public byte getContentTypeId() {\n-        return PROTOSTUFF_SERIALIZATION_ID;\n-    }\n-\n-    @Override\n-    public String getContentType() {\n-        return \"x-application/protostuff\";\n-    }\n-\n-    @Override\n-    public ObjectOutput serialize(URL url, OutputStream output) throws IOException {\n-        return new ProtostuffObjectOutput(output);\n-    }\n-\n-    @Override\n-    public ObjectInput deserialize(URL url, InputStream input) throws IOException {\n-        return new ProtostuffObjectInput(input);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.serialize.protostuff;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+\r\n+import static org.apache.dubbo.common.serialize.Constants.PROTOSTUFF_SERIALIZATION_ID;\r\n+\r\n+/**\r\n+ * Protostuff serialization implementation\r\n+ *\r\n+ * <pre>\r\n+ *     e.g. &lt;dubbo:protocol serialization=\"protostuff\" /&gt;\r\n+ * </pre>\r\n+ */\r\n+public class ProtostuffSerialization implements Serialization {\r\n+    @Override\r\n+    public byte getContentTypeId() {\r\n+        return PROTOSTUFF_SERIALIZATION_ID;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getContentType() {\r\n+        return \"x-application/protostuff\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectOutput serialize(URL url, OutputStream output) throws IOException {\r\n+        return new ProtostuffObjectOutput(output);\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectInput deserialize(URL url, InputStream input) throws IOException {\r\n+        return new ProtostuffObjectInput(input);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/protostuff/delegate/SqlDateDelegate.java", "source2": "org/apache/dubbo/common/serialize/protostuff/delegate/SqlDateDelegate.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,55 +1,55 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.protostuff.delegate;\n-\n-import io.protostuff.Input;\n-import io.protostuff.Output;\n-import io.protostuff.Pipe;\n-import io.protostuff.WireFormat;\n-import io.protostuff.runtime.Delegate;\n-\n-import java.io.IOException;\n-\n-/**\n- * Custom {@link java.sql.Date} delegate\n- */\n-public class SqlDateDelegate implements Delegate<java.sql.Date> {\n-    @Override\n-    public WireFormat.FieldType getFieldType() {\n-        return WireFormat.FieldType.FIXED64;\n-    }\n-\n-    @Override\n-    public java.sql.Date readFrom(Input input) throws IOException {\n-        return new java.sql.Date(input.readFixed64());\n-    }\n-\n-    @Override\n-    public void writeTo(Output output, int number, java.sql.Date value, boolean repeated) throws IOException {\n-        output.writeFixed64(number, value.getTime(), repeated);\n-    }\n-\n-    @Override\n-    public void transfer(Pipe pipe, Input input, Output output, int number, boolean repeated) throws IOException {\n-        output.writeFixed64(number, input.readFixed64(), repeated);\n-    }\n-\n-    @Override\n-    public Class<?> typeClass() {\n-        return java.sql.Date.class;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.protostuff.delegate;\r\n+\r\n+import io.protostuff.Input;\r\n+import io.protostuff.Output;\r\n+import io.protostuff.Pipe;\r\n+import io.protostuff.WireFormat;\r\n+import io.protostuff.runtime.Delegate;\r\n+\r\n+import java.io.IOException;\r\n+\r\n+/**\r\n+ * Custom {@link java.sql.Date} delegate\r\n+ */\r\n+public class SqlDateDelegate implements Delegate<java.sql.Date> {\r\n+    @Override\r\n+    public WireFormat.FieldType getFieldType() {\r\n+        return WireFormat.FieldType.FIXED64;\r\n+    }\r\n+\r\n+    @Override\r\n+    public java.sql.Date readFrom(Input input) throws IOException {\r\n+        return new java.sql.Date(input.readFixed64());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeTo(Output output, int number, java.sql.Date value, boolean repeated) throws IOException {\r\n+        output.writeFixed64(number, value.getTime(), repeated);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void transfer(Pipe pipe, Input input, Output output, int number, boolean repeated) throws IOException {\r\n+        output.writeFixed64(number, input.readFixed64(), repeated);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Class<?> typeClass() {\r\n+        return java.sql.Date.class;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/protostuff/delegate/TimestampDelegate.java", "source2": "org/apache/dubbo/common/serialize/protostuff/delegate/TimestampDelegate.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,57 +1,57 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.protostuff.delegate;\n-\n-import io.protostuff.Input;\n-import io.protostuff.Output;\n-import io.protostuff.Pipe;\n-import io.protostuff.WireFormat.FieldType;\n-import io.protostuff.runtime.Delegate;\n-\n-import java.io.IOException;\n-import java.sql.Timestamp;\n-\n-/**\n- * Custom {@link Timestamp} delegate\n- */\n-public class TimestampDelegate implements Delegate<Timestamp> {\n-\n-    @Override\n-    public FieldType getFieldType() {\n-        return FieldType.FIXED64;\n-    }\n-\n-    @Override\n-    public Timestamp readFrom(Input input) throws IOException {\n-        return new Timestamp(input.readFixed64());\n-    }\n-\n-    @Override\n-    public void writeTo(Output output, int number, Timestamp value, boolean repeated) throws IOException {\n-        output.writeFixed64(number, value.getTime(), repeated);\n-    }\n-\n-    @Override\n-    public void transfer(Pipe pipe, Input input, Output output, int number, boolean repeated) throws IOException {\n-        output.writeFixed64(number, input.readFixed64(), repeated);\n-    }\n-\n-    @Override\n-    public Class<?> typeClass() {\n-        return Timestamp.class;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.protostuff.delegate;\r\n+\r\n+import io.protostuff.Input;\r\n+import io.protostuff.Output;\r\n+import io.protostuff.Pipe;\r\n+import io.protostuff.WireFormat.FieldType;\r\n+import io.protostuff.runtime.Delegate;\r\n+\r\n+import java.io.IOException;\r\n+import java.sql.Timestamp;\r\n+\r\n+/**\r\n+ * Custom {@link Timestamp} delegate\r\n+ */\r\n+public class TimestampDelegate implements Delegate<Timestamp> {\r\n+\r\n+    @Override\r\n+    public FieldType getFieldType() {\r\n+        return FieldType.FIXED64;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Timestamp readFrom(Input input) throws IOException {\r\n+        return new Timestamp(input.readFixed64());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeTo(Output output, int number, Timestamp value, boolean repeated) throws IOException {\r\n+        output.writeFixed64(number, value.getTime(), repeated);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void transfer(Pipe pipe, Input input, Output output, int number, boolean repeated) throws IOException {\r\n+        output.writeFixed64(number, input.readFixed64(), repeated);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Class<?> typeClass() {\r\n+        return Timestamp.class;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/protostuff/utils/WrapperUtils.java", "source2": "org/apache/dubbo/common/serialize/protostuff/utils/WrapperUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,115 +1,115 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.serialize.protostuff.utils;\n-\n-import org.apache.dubbo.common.serialize.protostuff.Wrapper;\n-import org.apache.dubbo.common.serialize.protostuff.delegate.SqlDateDelegate;\n-import org.apache.dubbo.common.serialize.protostuff.delegate.TimeDelegate;\n-import org.apache.dubbo.common.serialize.protostuff.delegate.TimestampDelegate;\n-\n-import io.protostuff.runtime.DefaultIdStrategy;\n-import io.protostuff.runtime.RuntimeEnv;\n-\n-import java.math.BigDecimal;\n-import java.sql.Time;\n-import java.sql.Timestamp;\n-import java.util.ArrayList;\n-import java.util.BitSet;\n-import java.util.Calendar;\n-import java.util.Date;\n-import java.util.HashMap;\n-import java.util.HashSet;\n-import java.util.Hashtable;\n-import java.util.LinkedHashMap;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.SortedMap;\n-import java.util.TreeMap;\n-import java.util.TreeSet;\n-import java.util.Vector;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-/**\n- * Use WrapperUtils to wrap object to {@link Wrapper}\n- */\n-public class WrapperUtils {\n-    private static final Set<Class<?>> WRAPPER_SET = new HashSet<>();\n-\n-    static {\n-        if (RuntimeEnv.ID_STRATEGY instanceof DefaultIdStrategy) {\n-            ((DefaultIdStrategy) RuntimeEnv.ID_STRATEGY).registerDelegate(new TimeDelegate());\n-            ((DefaultIdStrategy) RuntimeEnv.ID_STRATEGY).registerDelegate(new TimestampDelegate());\n-            ((DefaultIdStrategy) RuntimeEnv.ID_STRATEGY).registerDelegate(new SqlDateDelegate());\n-        }\n-\n-        WRAPPER_SET.add(Map.class);\n-        WRAPPER_SET.add(HashMap.class);\n-        WRAPPER_SET.add(TreeMap.class);\n-        WRAPPER_SET.add(Hashtable.class);\n-        WRAPPER_SET.add(SortedMap.class);\n-        WRAPPER_SET.add(LinkedHashMap.class);\n-        WRAPPER_SET.add(ConcurrentHashMap.class);\n-\n-        WRAPPER_SET.add(List.class);\n-        WRAPPER_SET.add(ArrayList.class);\n-        WRAPPER_SET.add(LinkedList.class);\n-\n-        WRAPPER_SET.add(Vector.class);\n-\n-        WRAPPER_SET.add(Set.class);\n-        WRAPPER_SET.add(HashSet.class);\n-        WRAPPER_SET.add(TreeSet.class);\n-        WRAPPER_SET.add(BitSet.class);\n-\n-        WRAPPER_SET.add(StringBuffer.class);\n-        WRAPPER_SET.add(StringBuilder.class);\n-\n-        WRAPPER_SET.add(BigDecimal.class);\n-        WRAPPER_SET.add(Date.class);\n-        WRAPPER_SET.add(Calendar.class);\n-        WRAPPER_SET.add(Time.class);\n-        WRAPPER_SET.add(Timestamp.class);\n-        WRAPPER_SET.add(java.sql.Date.class);\n-\n-        WRAPPER_SET.add(Wrapper.class);\n-\n-    }\n-\n-    /**\n-     * Determine if the object needs wrap\n-     *\n-     * @param clazz object type\n-     * @return need wrap\n-     */\n-    public static boolean needWrapper(Class<?> clazz) {\n-        return WrapperUtils.WRAPPER_SET.contains(clazz) || clazz.isArray() || clazz.isEnum();\n-    }\n-\n-    /**\n-     * Determine if the object needs wrap\n-     *\n-     * @param obj object\n-     * @return need wrap\n-     */\n-    public static boolean needWrapper(Object obj) {\n-        return needWrapper(obj.getClass());\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.serialize.protostuff.utils;\r\n+\r\n+import org.apache.dubbo.common.serialize.protostuff.Wrapper;\r\n+import org.apache.dubbo.common.serialize.protostuff.delegate.SqlDateDelegate;\r\n+import org.apache.dubbo.common.serialize.protostuff.delegate.TimeDelegate;\r\n+import org.apache.dubbo.common.serialize.protostuff.delegate.TimestampDelegate;\r\n+\r\n+import io.protostuff.runtime.DefaultIdStrategy;\r\n+import io.protostuff.runtime.RuntimeEnv;\r\n+\r\n+import java.math.BigDecimal;\r\n+import java.sql.Time;\r\n+import java.sql.Timestamp;\r\n+import java.util.ArrayList;\r\n+import java.util.BitSet;\r\n+import java.util.Calendar;\r\n+import java.util.Date;\r\n+import java.util.HashMap;\r\n+import java.util.HashSet;\r\n+import java.util.Hashtable;\r\n+import java.util.LinkedHashMap;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.SortedMap;\r\n+import java.util.TreeMap;\r\n+import java.util.TreeSet;\r\n+import java.util.Vector;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+/**\r\n+ * Use WrapperUtils to wrap object to {@link Wrapper}\r\n+ */\r\n+public class WrapperUtils {\r\n+    private static final Set<Class<?>> WRAPPER_SET = new HashSet<>();\r\n+\r\n+    static {\r\n+        if (RuntimeEnv.ID_STRATEGY instanceof DefaultIdStrategy) {\r\n+            ((DefaultIdStrategy) RuntimeEnv.ID_STRATEGY).registerDelegate(new TimeDelegate());\r\n+            ((DefaultIdStrategy) RuntimeEnv.ID_STRATEGY).registerDelegate(new TimestampDelegate());\r\n+            ((DefaultIdStrategy) RuntimeEnv.ID_STRATEGY).registerDelegate(new SqlDateDelegate());\r\n+        }\r\n+\r\n+        WRAPPER_SET.add(Map.class);\r\n+        WRAPPER_SET.add(HashMap.class);\r\n+        WRAPPER_SET.add(TreeMap.class);\r\n+        WRAPPER_SET.add(Hashtable.class);\r\n+        WRAPPER_SET.add(SortedMap.class);\r\n+        WRAPPER_SET.add(LinkedHashMap.class);\r\n+        WRAPPER_SET.add(ConcurrentHashMap.class);\r\n+\r\n+        WRAPPER_SET.add(List.class);\r\n+        WRAPPER_SET.add(ArrayList.class);\r\n+        WRAPPER_SET.add(LinkedList.class);\r\n+\r\n+        WRAPPER_SET.add(Vector.class);\r\n+\r\n+        WRAPPER_SET.add(Set.class);\r\n+        WRAPPER_SET.add(HashSet.class);\r\n+        WRAPPER_SET.add(TreeSet.class);\r\n+        WRAPPER_SET.add(BitSet.class);\r\n+\r\n+        WRAPPER_SET.add(StringBuffer.class);\r\n+        WRAPPER_SET.add(StringBuilder.class);\r\n+\r\n+        WRAPPER_SET.add(BigDecimal.class);\r\n+        WRAPPER_SET.add(Date.class);\r\n+        WRAPPER_SET.add(Calendar.class);\r\n+        WRAPPER_SET.add(Time.class);\r\n+        WRAPPER_SET.add(Timestamp.class);\r\n+        WRAPPER_SET.add(java.sql.Date.class);\r\n+\r\n+        WRAPPER_SET.add(Wrapper.class);\r\n+\r\n+    }\r\n+\r\n+    /**\r\n+     * Determine if the object needs wrap\r\n+     *\r\n+     * @param clazz object type\r\n+     * @return need wrap\r\n+     */\r\n+    public static boolean needWrapper(Class<?> clazz) {\r\n+        return WrapperUtils.WRAPPER_SET.contains(clazz) || clazz.isArray() || clazz.isEnum();\r\n+    }\r\n+\r\n+    /**\r\n+     * Determine if the object needs wrap\r\n+     *\r\n+     * @param obj object\r\n+     * @return need wrap\r\n+     */\r\n+    public static boolean needWrapper(Object obj) {\r\n+        return needWrapper(obj.getClass());\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/gson/GsonJsonObjectInput.java", "source2": "org/apache/dubbo/common/serialize/gson/GsonJsonObjectInput.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,121 +1,121 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.serialize.gson;\n-\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.utils.PojoUtils;\n-\n-import com.google.gson.Gson;\n-\n-import java.io.BufferedReader;\n-import java.io.EOFException;\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.InputStreamReader;\n-import java.io.Reader;\n-import java.lang.reflect.Type;\n-\n-public class GsonJsonObjectInput implements ObjectInput {\n-    private final BufferedReader reader;\n-    private Gson gson;\n-\n-    public GsonJsonObjectInput(InputStream in) {\n-        this(new InputStreamReader(in));\n-    }\n-\n-    public GsonJsonObjectInput(Reader reader) {\n-        this.reader = new BufferedReader(reader);\n-        gson = new Gson();\n-    }\n-\n-    @Override\n-    public boolean readBool() throws IOException {\n-        return read(boolean.class);\n-    }\n-\n-    @Override\n-    public byte readByte() throws IOException {\n-        return read(byte.class);\n-    }\n-\n-    @Override\n-    public short readShort() throws IOException {\n-        return read(short.class);\n-    }\n-\n-    @Override\n-    public int readInt() throws IOException {\n-        return read(int.class);\n-    }\n-\n-    @Override\n-    public long readLong() throws IOException {\n-        return read(long.class);\n-    }\n-\n-    @Override\n-    public float readFloat() throws IOException {\n-        return read(float.class);\n-    }\n-\n-    @Override\n-    public double readDouble() throws IOException {\n-        return read(double.class);\n-    }\n-\n-    @Override\n-    public String readUTF() throws IOException {\n-        return read(String.class);\n-    }\n-\n-    @Override\n-    public byte[] readBytes() throws IOException {\n-        return readLine().getBytes();\n-    }\n-\n-    @Override\n-    public Object readObject() throws IOException, ClassNotFoundException {\n-        String json = readLine();\n-        return gson.fromJson(json, Object.class);\n-    }\n-\n-    @Override\n-    public <T> T readObject(Class<T> cls) throws IOException, ClassNotFoundException {\n-        return read(cls);\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> T readObject(Class<T> cls, Type type) throws IOException, ClassNotFoundException {\n-        Object value = readObject(cls);\n-        return (T) PojoUtils.realize(value, cls, type);\n-    }\n-\n-    private String readLine() throws IOException {\n-        String line = reader.readLine();\n-        if (line == null || line.trim().length() == 0) {\n-            throw new EOFException();\n-        }\n-        return line;\n-    }\n-\n-    private <T> T read(Class<T> cls) throws IOException {\n-        String json = readLine();\n-        return gson.fromJson(json, cls);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.serialize.gson;\r\n+\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.utils.PojoUtils;\r\n+\r\n+import com.google.gson.Gson;\r\n+\r\n+import java.io.BufferedReader;\r\n+import java.io.EOFException;\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.InputStreamReader;\r\n+import java.io.Reader;\r\n+import java.lang.reflect.Type;\r\n+\r\n+public class GsonJsonObjectInput implements ObjectInput {\r\n+    private final BufferedReader reader;\r\n+    private Gson gson;\r\n+\r\n+    public GsonJsonObjectInput(InputStream in) {\r\n+        this(new InputStreamReader(in));\r\n+    }\r\n+\r\n+    public GsonJsonObjectInput(Reader reader) {\r\n+        this.reader = new BufferedReader(reader);\r\n+        gson = new Gson();\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean readBool() throws IOException {\r\n+        return read(boolean.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte readByte() throws IOException {\r\n+        return read(byte.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public short readShort() throws IOException {\r\n+        return read(short.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public int readInt() throws IOException {\r\n+        return read(int.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public long readLong() throws IOException {\r\n+        return read(long.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public float readFloat() throws IOException {\r\n+        return read(float.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public double readDouble() throws IOException {\r\n+        return read(double.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String readUTF() throws IOException {\r\n+        return read(String.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte[] readBytes() throws IOException {\r\n+        return readLine().getBytes();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object readObject() throws IOException, ClassNotFoundException {\r\n+        String json = readLine();\r\n+        return gson.fromJson(json, Object.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> T readObject(Class<T> cls) throws IOException, ClassNotFoundException {\r\n+        return read(cls);\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> T readObject(Class<T> cls, Type type) throws IOException, ClassNotFoundException {\r\n+        Object value = readObject(cls);\r\n+        return (T) PojoUtils.realize(value, cls, type);\r\n+    }\r\n+\r\n+    private String readLine() throws IOException {\r\n+        String line = reader.readLine();\r\n+        if (line == null || line.trim().length() == 0) {\r\n+            throw new EOFException();\r\n+        }\r\n+        return line;\r\n+    }\r\n+\r\n+    private <T> T read(Class<T> cls) throws IOException {\r\n+        String json = readLine();\r\n+        return gson.fromJson(json, cls);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/gson/GsonJsonObjectOutput.java", "source2": "org/apache/dubbo/common/serialize/gson/GsonJsonObjectOutput.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,108 +1,108 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.serialize.gson;\n-\n-import com.google.gson.Gson;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-\n-import java.io.OutputStream;\n-import java.io.OutputStreamWriter;\n-import java.io.PrintWriter;\n-import java.io.Writer;\n-import java.io.IOException;\n-\n-\n-public class GsonJsonObjectOutput implements ObjectOutput {\n-\n-    private final PrintWriter writer;\n-    private Gson gson = null;\n-\n-    public GsonJsonObjectOutput(OutputStream out) {\n-        this(new OutputStreamWriter(out));\n-    }\n-\n-    public GsonJsonObjectOutput(Writer writer) {\n-        this.gson = new Gson();\n-        this.writer = new PrintWriter(writer);\n-    }\n-\n-    @Override\n-    public void writeBool(boolean v) throws IOException {\n-        writeObject(v);\n-    }\n-\n-    @Override\n-    public void writeByte(byte v) throws IOException {\n-        writeObject(v);\n-    }\n-\n-    @Override\n-    public void writeShort(short v) throws IOException {\n-        writeObject(v);\n-    }\n-\n-    @Override\n-    public void writeInt(int v) throws IOException {\n-        writeObject(v);\n-    }\n-\n-    @Override\n-    public void writeLong(long v) throws IOException {\n-        writeObject(v);\n-    }\n-\n-    @Override\n-    public void writeFloat(float v) throws IOException {\n-        writeObject(v);\n-    }\n-\n-    @Override\n-    public void writeDouble(double v) throws IOException {\n-        writeObject(v);\n-    }\n-\n-    @Override\n-    public void writeUTF(String v) throws IOException {\n-        writeObject(v);\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] b) throws IOException {\n-        writer.println(new String(b));\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] b, int off, int len) throws IOException {\n-        writer.println(new String(b, off, len));\n-    }\n-\n-    @Override\n-    public void writeObject(Object obj) throws IOException {\n-        char[] json = gson.toJson(obj).toCharArray();\n-        writer.write(json, 0, json.length);\n-        writer.println();\n-        writer.flush();\n-        json = null;\n-    }\n-\n-    @Override\n-    public void flushBuffer() throws IOException {\n-        writer.flush();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.serialize.gson;\r\n+\r\n+import com.google.gson.Gson;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+\r\n+import java.io.OutputStream;\r\n+import java.io.OutputStreamWriter;\r\n+import java.io.PrintWriter;\r\n+import java.io.Writer;\r\n+import java.io.IOException;\r\n+\r\n+\r\n+public class GsonJsonObjectOutput implements ObjectOutput {\r\n+\r\n+    private final PrintWriter writer;\r\n+    private Gson gson = null;\r\n+\r\n+    public GsonJsonObjectOutput(OutputStream out) {\r\n+        this(new OutputStreamWriter(out));\r\n+    }\r\n+\r\n+    public GsonJsonObjectOutput(Writer writer) {\r\n+        this.gson = new Gson();\r\n+        this.writer = new PrintWriter(writer);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBool(boolean v) throws IOException {\r\n+        writeObject(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeByte(byte v) throws IOException {\r\n+        writeObject(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeShort(short v) throws IOException {\r\n+        writeObject(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeInt(int v) throws IOException {\r\n+        writeObject(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeLong(long v) throws IOException {\r\n+        writeObject(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeFloat(float v) throws IOException {\r\n+        writeObject(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeDouble(double v) throws IOException {\r\n+        writeObject(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeUTF(String v) throws IOException {\r\n+        writeObject(v);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] b) throws IOException {\r\n+        writer.println(new String(b));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] b, int off, int len) throws IOException {\r\n+        writer.println(new String(b, off, len));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeObject(Object obj) throws IOException {\r\n+        char[] json = gson.toJson(obj).toCharArray();\r\n+        writer.write(json, 0, json.length);\r\n+        writer.println();\r\n+        writer.flush();\r\n+        json = null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void flushBuffer() throws IOException {\r\n+        writer.flush();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/gson/GsonSerialization.java", "source2": "org/apache/dubbo/common/serialize/gson/GsonSerialization.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,53 +1,53 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.common.serialize.gson;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.Serialization;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-\n-import static org.apache.dubbo.common.serialize.Constants.GSON_SERIALIZATION_ID;\n-\n-public class GsonSerialization implements Serialization {\n-\n-\n-    @Override\n-    public byte getContentTypeId() {\n-        return GSON_SERIALIZATION_ID;\n-    }\n-\n-    @Override\n-    public String getContentType() {\n-        return \"text/json\";\n-    }\n-\n-    @Override\n-    public ObjectOutput serialize(URL url, OutputStream output) throws IOException {\n-        return new GsonJsonObjectOutput(output);\n-    }\n-\n-    @Override\n-    public ObjectInput deserialize(URL url, InputStream input) throws IOException {\n-        return new GsonJsonObjectInput(input);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.common.serialize.gson;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+\r\n+import static org.apache.dubbo.common.serialize.Constants.GSON_SERIALIZATION_ID;\r\n+\r\n+public class GsonSerialization implements Serialization {\r\n+\r\n+\r\n+    @Override\r\n+    public byte getContentTypeId() {\r\n+        return GSON_SERIALIZATION_ID;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getContentType() {\r\n+        return \"text/json\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectOutput serialize(URL url, OutputStream output) throws IOException {\r\n+        return new GsonJsonObjectOutput(output);\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectInput deserialize(URL url, InputStream input) throws IOException {\r\n+        return new GsonJsonObjectInput(input);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonObjectInput.java", "source2": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonObjectInput.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,164 +1,164 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.protobuf.support;\n-\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB;\n-\n-import com.google.protobuf.BoolValue;\n-import com.google.protobuf.BytesValue;\n-import com.google.protobuf.DoubleValue;\n-import com.google.protobuf.FloatValue;\n-import com.google.protobuf.Int32Value;\n-import com.google.protobuf.Int64Value;\n-import com.google.protobuf.StringValue;\n-\n-import java.io.BufferedReader;\n-import java.io.EOFException;\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.InputStreamReader;\n-import java.lang.reflect.Type;\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\n-import static org.apache.dubbo.common.constants.CommonConstants.MOCK_HEARTBEAT_EVENT;\n-\n-/**\n- * GenericGoogleProtobuf object input implementation\n- */\n-public class GenericProtobufJsonObjectInput implements ObjectInput {\n-    private final BufferedReader reader;\n-\n-    public GenericProtobufJsonObjectInput(InputStream in) {\n-        this.reader = new BufferedReader(new InputStreamReader(in));\n-    }\n-\n-    @Override\n-    public boolean readBool() throws IOException {\n-        return read(BoolValue.class).getValue();\n-    }\n-\n-    @Override\n-    public byte readByte() throws IOException {\n-        return (byte) read(Int32Value.class).getValue();\n-    }\n-\n-    @Override\n-    public short readShort() throws IOException {\n-        return (short) read(Int32Value.class).getValue();\n-    }\n-\n-    @Override\n-    public int readInt() throws IOException {\n-        return read(Int32Value.class).getValue();\n-    }\n-\n-    @Override\n-    public long readLong() throws IOException {\n-        return read(Int64Value.class).getValue();\n-    }\n-\n-    @Override\n-    public float readFloat() throws IOException {\n-        return read(FloatValue.class).getValue();\n-    }\n-\n-    @Override\n-    public double readDouble() throws IOException {\n-        return read(DoubleValue.class).getValue();\n-    }\n-\n-    @Override\n-    public String readUTF() throws IOException {\n-        return read(StringValue.class).getValue();\n-    }\n-\n-    @Override\n-    public byte[] readBytes() throws IOException {\n-        return read(BytesValue.class).getValue().toByteArray();\n-    }\n-\n-    @Override\n-    public Object readObject() {\n-        throw new UnsupportedOperationException(\"Provide the protobuf message type you want to read.\");\n-    }\n-\n-    @Override\n-    public <T> T readObject(Class<T> cls) throws IOException {\n-        return read(cls);\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> T readObject(Class<T> cls, Type type) throws IOException {\n-        return readObject(cls);\n-    }\n-\n-    private String readLine() throws IOException {\n-        String line = reader.readLine();\n-        if (line == null || line.trim().length() == 0) {\n-            throw new EOFException();\n-        }\n-        return line;\n-    }\n-\n-    private <T> T read(Class<T> cls) throws IOException {\n-        if (!ProtobufUtils.isSupported(cls)) {\n-            throw new IllegalArgumentException(\"This serialization only support google protobuf entity, the class is :\" + cls.getName());\n-        }\n-\n-        String json = readLine();\n-        return ProtobufUtils.deserializeJson(json, cls);\n-    }\n-\n-    @Override\n-    public Throwable readThrowable() throws IOException {\n-        String json = readLine();\n-        ThrowablePB.ThrowableProto throwableProto = ProtobufUtils.deserializeJson(json, ThrowablePB.ThrowableProto.class);\n-        return ProtobufUtils.convertToException(throwableProto);\n-    }\n-\n-    /**\n-     * FIXME, only supports transmission of String values.\n-     *\n-     * @return\n-     * @throws IOException\n-     * @throws ClassNotFoundException\n-     */\n-    @Override\n-    public Map<String, Object> readAttachments() throws IOException, ClassNotFoundException {\n-        String json = readLine();\n-        Map<String, String> attachments = ProtobufUtils.deserializeJson(json, MapValue.Map.class).getAttachmentsMap();\n-        Map<String, Object> genericAttachments = new HashMap<>();\n-        attachments.forEach((k, v) -> {\n-            genericAttachments.put(k, v);\n-        });\n-        return genericAttachments;\n-    }\n-\n-    @Override\n-    public Object readEvent() throws IOException, ClassNotFoundException {\n-        String eventData = readUTF();\n-        if (eventData.equals(MOCK_HEARTBEAT_EVENT)) {\n-            eventData = HEARTBEAT_EVENT;\n-        }\n-        return eventData;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.protobuf.support;\r\n+\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB;\r\n+\r\n+import com.google.protobuf.BoolValue;\r\n+import com.google.protobuf.BytesValue;\r\n+import com.google.protobuf.DoubleValue;\r\n+import com.google.protobuf.FloatValue;\r\n+import com.google.protobuf.Int32Value;\r\n+import com.google.protobuf.Int64Value;\r\n+import com.google.protobuf.StringValue;\r\n+\r\n+import java.io.BufferedReader;\r\n+import java.io.EOFException;\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.InputStreamReader;\r\n+import java.lang.reflect.Type;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.MOCK_HEARTBEAT_EVENT;\r\n+\r\n+/**\r\n+ * GenericGoogleProtobuf object input implementation\r\n+ */\r\n+public class GenericProtobufJsonObjectInput implements ObjectInput {\r\n+    private final BufferedReader reader;\r\n+\r\n+    public GenericProtobufJsonObjectInput(InputStream in) {\r\n+        this.reader = new BufferedReader(new InputStreamReader(in));\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean readBool() throws IOException {\r\n+        return read(BoolValue.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte readByte() throws IOException {\r\n+        return (byte) read(Int32Value.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public short readShort() throws IOException {\r\n+        return (short) read(Int32Value.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public int readInt() throws IOException {\r\n+        return read(Int32Value.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public long readLong() throws IOException {\r\n+        return read(Int64Value.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public float readFloat() throws IOException {\r\n+        return read(FloatValue.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public double readDouble() throws IOException {\r\n+        return read(DoubleValue.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String readUTF() throws IOException {\r\n+        return read(StringValue.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte[] readBytes() throws IOException {\r\n+        return read(BytesValue.class).getValue().toByteArray();\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object readObject() {\r\n+        throw new UnsupportedOperationException(\"Provide the protobuf message type you want to read.\");\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> T readObject(Class<T> cls) throws IOException {\r\n+        return read(cls);\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> T readObject(Class<T> cls, Type type) throws IOException {\r\n+        return readObject(cls);\r\n+    }\r\n+\r\n+    private String readLine() throws IOException {\r\n+        String line = reader.readLine();\r\n+        if (line == null || line.trim().length() == 0) {\r\n+            throw new EOFException();\r\n+        }\r\n+        return line;\r\n+    }\r\n+\r\n+    private <T> T read(Class<T> cls) throws IOException {\r\n+        if (!ProtobufUtils.isSupported(cls)) {\r\n+            throw new IllegalArgumentException(\"This serialization only support google protobuf entity, the class is :\" + cls.getName());\r\n+        }\r\n+\r\n+        String json = readLine();\r\n+        return ProtobufUtils.deserializeJson(json, cls);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Throwable readThrowable() throws IOException {\r\n+        String json = readLine();\r\n+        ThrowablePB.ThrowableProto throwableProto = ProtobufUtils.deserializeJson(json, ThrowablePB.ThrowableProto.class);\r\n+        return ProtobufUtils.convertToException(throwableProto);\r\n+    }\r\n+\r\n+    /**\r\n+     * FIXME, only supports transmission of String values.\r\n+     *\r\n+     * @return\r\n+     * @throws IOException\r\n+     * @throws ClassNotFoundException\r\n+     */\r\n+    @Override\r\n+    public Map<String, Object> readAttachments() throws IOException, ClassNotFoundException {\r\n+        String json = readLine();\r\n+        Map<String, String> attachments = ProtobufUtils.deserializeJson(json, MapValue.Map.class).getAttachmentsMap();\r\n+        Map<String, Object> genericAttachments = new HashMap<>();\r\n+        attachments.forEach((k, v) -> {\r\n+            genericAttachments.put(k, v);\r\n+        });\r\n+        return genericAttachments;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object readEvent() throws IOException, ClassNotFoundException {\r\n+        String eventData = readUTF();\r\n+        if (eventData.equals(MOCK_HEARTBEAT_EVENT)) {\r\n+            eventData = HEARTBEAT_EVENT;\r\n+        }\r\n+        return eventData;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonObjectOutput.java", "source2": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonObjectOutput.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,161 +1,161 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.protobuf.support;\n-\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\n-\n-import com.google.protobuf.BoolValue;\n-import com.google.protobuf.ByteString;\n-import com.google.protobuf.BytesValue;\n-import com.google.protobuf.DoubleValue;\n-import com.google.protobuf.FloatValue;\n-import com.google.protobuf.Int32Value;\n-import com.google.protobuf.Int64Value;\n-import com.google.protobuf.StringValue;\n-\n-import java.io.IOException;\n-import java.io.OutputStream;\n-import java.io.OutputStreamWriter;\n-import java.io.PrintWriter;\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\n-import static org.apache.dubbo.common.constants.CommonConstants.MOCK_HEARTBEAT_EVENT;\n-\n-/**\n- * GenericGoogleProtobuf object output implementation\n- */\n-public class GenericProtobufJsonObjectOutput implements ObjectOutput {\n-\n-    private final PrintWriter writer;\n-\n-    public GenericProtobufJsonObjectOutput(OutputStream out) {\n-        this.writer = new PrintWriter(new OutputStreamWriter(out));\n-    }\n-\n-    @Override\n-    public void writeBool(boolean v) throws IOException {\n-\n-        writeObject(BoolValue.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeByte(byte v) throws IOException {\n-        writeObject(Int32Value.newBuilder().setValue((v)).build());\n-    }\n-\n-    @Override\n-    public void writeShort(short v) throws IOException {\n-        writeObject(Int32Value.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeInt(int v) throws IOException {\n-        writeObject(Int32Value.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeLong(long v) throws IOException {\n-        writeObject(Int64Value.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeFloat(float v) throws IOException {\n-        writeObject(FloatValue.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeDouble(double v) throws IOException {\n-        writeObject(DoubleValue.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeUTF(String v) throws IOException {\n-        writeObject(StringValue.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] b) throws IOException {\n-        writeObject(BytesValue.newBuilder().setValue(ByteString.copyFrom(b)).build());\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] b, int off, int len) throws IOException {\n-        writeObject(BytesValue.newBuilder().setValue(ByteString.copyFrom(b, off, len)).build());\n-    }\n-\n-\n-    @Override\n-    public void writeObject(Object obj) throws IOException {\n-        if (obj == null) {\n-            throw new IllegalArgumentException(\"This serialization only support google protobuf object, the object is : null\");\n-        }\n-        if (!ProtobufUtils.isSupported(obj.getClass())) {\n-            throw new IllegalArgumentException(\"This serialization only support google protobuf object, the object class is: \" + obj.getClass().getName());\n-        }\n-\n-        writer.write(ProtobufUtils.serializeJson(obj));\n-        writer.println();\n-        writer.flush();\n-    }\n-\n-    @Override\n-    public void writeThrowable(Object th) throws IOException {\n-        if (th instanceof Throwable && !ProtobufUtils.isSupported(th.getClass())) {\n-            th = ProtobufUtils.convertToThrowableProto((Throwable) th);\n-        }\n-        writer.write(ProtobufUtils.serializeJson(th));\n-        writer.println();\n-        writer.flush();\n-    }\n-\n-    @Override\n-    public void writeEvent(Object data) throws IOException {\n-        if (data == HEARTBEAT_EVENT) {\n-            data = MOCK_HEARTBEAT_EVENT;\n-        }\n-        writeUTF((String) data);\n-    }\n-\n-    /**\n-     * FIXME, only supports transmission of String values.\n-     *\n-     * @param attachments\n-     * @throws IOException\n-     */\n-    @Override\n-    public void writeAttachments(Map<String, Object> attachments) throws IOException {\n-        if (attachments == null) {\n-            return;\n-        }\n-\n-        Map<String, String> stringAttachments = new HashMap<>();\n-        attachments.forEach((k, v) -> stringAttachments.put(k, (String) v));\n-        MapValue.Map proto = MapValue.Map.newBuilder().putAllAttachments(stringAttachments).build();\n-        writer.write(ProtobufUtils.serializeJson(proto));\n-        writer.println();\n-        writer.flush();\n-    }\n-\n-    @Override\n-    public void flushBuffer() {\n-        writer.flush();\n-    }\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.protobuf.support;\r\n+\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\r\n+\r\n+import com.google.protobuf.BoolValue;\r\n+import com.google.protobuf.ByteString;\r\n+import com.google.protobuf.BytesValue;\r\n+import com.google.protobuf.DoubleValue;\r\n+import com.google.protobuf.FloatValue;\r\n+import com.google.protobuf.Int32Value;\r\n+import com.google.protobuf.Int64Value;\r\n+import com.google.protobuf.StringValue;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.OutputStream;\r\n+import java.io.OutputStreamWriter;\r\n+import java.io.PrintWriter;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.MOCK_HEARTBEAT_EVENT;\r\n+\r\n+/**\r\n+ * GenericGoogleProtobuf object output implementation\r\n+ */\r\n+public class GenericProtobufJsonObjectOutput implements ObjectOutput {\r\n+\r\n+    private final PrintWriter writer;\r\n+\r\n+    public GenericProtobufJsonObjectOutput(OutputStream out) {\r\n+        this.writer = new PrintWriter(new OutputStreamWriter(out));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBool(boolean v) throws IOException {\r\n+\r\n+        writeObject(BoolValue.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeByte(byte v) throws IOException {\r\n+        writeObject(Int32Value.newBuilder().setValue((v)).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeShort(short v) throws IOException {\r\n+        writeObject(Int32Value.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeInt(int v) throws IOException {\r\n+        writeObject(Int32Value.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeLong(long v) throws IOException {\r\n+        writeObject(Int64Value.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeFloat(float v) throws IOException {\r\n+        writeObject(FloatValue.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeDouble(double v) throws IOException {\r\n+        writeObject(DoubleValue.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeUTF(String v) throws IOException {\r\n+        writeObject(StringValue.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] b) throws IOException {\r\n+        writeObject(BytesValue.newBuilder().setValue(ByteString.copyFrom(b)).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] b, int off, int len) throws IOException {\r\n+        writeObject(BytesValue.newBuilder().setValue(ByteString.copyFrom(b, off, len)).build());\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public void writeObject(Object obj) throws IOException {\r\n+        if (obj == null) {\r\n+            throw new IllegalArgumentException(\"This serialization only support google protobuf object, the object is : null\");\r\n+        }\r\n+        if (!ProtobufUtils.isSupported(obj.getClass())) {\r\n+            throw new IllegalArgumentException(\"This serialization only support google protobuf object, the object class is: \" + obj.getClass().getName());\r\n+        }\r\n+\r\n+        writer.write(ProtobufUtils.serializeJson(obj));\r\n+        writer.println();\r\n+        writer.flush();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeThrowable(Object th) throws IOException {\r\n+        if (th instanceof Throwable && !ProtobufUtils.isSupported(th.getClass())) {\r\n+            th = ProtobufUtils.convertToThrowableProto((Throwable) th);\r\n+        }\r\n+        writer.write(ProtobufUtils.serializeJson(th));\r\n+        writer.println();\r\n+        writer.flush();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeEvent(Object data) throws IOException {\r\n+        if (data == HEARTBEAT_EVENT) {\r\n+            data = MOCK_HEARTBEAT_EVENT;\r\n+        }\r\n+        writeUTF((String) data);\r\n+    }\r\n+\r\n+    /**\r\n+     * FIXME, only supports transmission of String values.\r\n+     *\r\n+     * @param attachments\r\n+     * @throws IOException\r\n+     */\r\n+    @Override\r\n+    public void writeAttachments(Map<String, Object> attachments) throws IOException {\r\n+        if (attachments == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        Map<String, String> stringAttachments = new HashMap<>();\r\n+        attachments.forEach((k, v) -> stringAttachments.put(k, (String) v));\r\n+        MapValue.Map proto = MapValue.Map.newBuilder().putAllAttachments(stringAttachments).build();\r\n+        writer.write(ProtobufUtils.serializeJson(proto));\r\n+        writer.println();\r\n+        writer.flush();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void flushBuffer() {\r\n+        writer.flush();\r\n+    }\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonSerialization.java", "source2": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufJsonSerialization.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,54 +1,54 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.protobuf.support;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.Serialization;\n-\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-\n-import static org.apache.dubbo.common.serialize.Constants.PROTOBUF_JSON_SERIALIZATION_ID;\n-\n-/**\n- * This serialization is use for google protobuf generic reference.\n- * The entity be transported between client and server by json string.\n- */\n-public class GenericProtobufJsonSerialization implements Serialization {\n-\n-    @Override\n-    public byte getContentTypeId() {\n-        return PROTOBUF_JSON_SERIALIZATION_ID;\n-    }\n-\n-    @Override\n-    public String getContentType() {\n-        return \"text/json\";\n-    }\n-\n-    @Override\n-    public ObjectOutput serialize(URL url, OutputStream output) {\n-        return new GenericProtobufJsonObjectOutput(output);\n-    }\n-\n-    @Override\n-    public ObjectInput deserialize(URL url, InputStream input) {\n-        return new GenericProtobufJsonObjectInput(input);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.protobuf.support;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+\r\n+import static org.apache.dubbo.common.serialize.Constants.PROTOBUF_JSON_SERIALIZATION_ID;\r\n+\r\n+/**\r\n+ * This serialization is use for google protobuf generic reference.\r\n+ * The entity be transported between client and server by json string.\r\n+ */\r\n+public class GenericProtobufJsonSerialization implements Serialization {\r\n+\r\n+    @Override\r\n+    public byte getContentTypeId() {\r\n+        return PROTOBUF_JSON_SERIALIZATION_ID;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getContentType() {\r\n+        return \"text/json\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectOutput serialize(URL url, OutputStream output) {\r\n+        return new GenericProtobufJsonObjectOutput(output);\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectInput deserialize(URL url, InputStream input) {\r\n+        return new GenericProtobufJsonObjectInput(input);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufObjectInput.java", "source2": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufObjectInput.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,146 +1,146 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.protobuf.support;\n-\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB;\n-\n-import com.google.protobuf.BoolValue;\n-import com.google.protobuf.BytesValue;\n-import com.google.protobuf.DoubleValue;\n-import com.google.protobuf.FloatValue;\n-import com.google.protobuf.Int32Value;\n-import com.google.protobuf.Int64Value;\n-import com.google.protobuf.StringValue;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.lang.reflect.Type;\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\n-import static org.apache.dubbo.common.constants.CommonConstants.MOCK_HEARTBEAT_EVENT;\n-\n-public class GenericProtobufObjectInput implements ObjectInput {\n-    private final InputStream is;\n-\n-    public GenericProtobufObjectInput(InputStream is) {\n-        this.is = is;\n-    }\n-\n-    @Override\n-    public boolean readBool() throws IOException {\n-        return read(BoolValue.class).getValue();\n-    }\n-\n-    @Override\n-    public byte readByte() throws IOException {\n-        return (byte) read(Int32Value.class).getValue();\n-    }\n-\n-    @Override\n-    public short readShort() throws IOException {\n-        return (short) read(Int32Value.class).getValue();\n-    }\n-\n-    @Override\n-    public int readInt() throws IOException {\n-        return read(Int32Value.class).getValue();\n-    }\n-\n-    @Override\n-    public long readLong() throws IOException {\n-        return read(Int64Value.class).getValue();\n-    }\n-\n-    @Override\n-    public float readFloat() throws IOException {\n-        return read(FloatValue.class).getValue();\n-    }\n-\n-    @Override\n-    public double readDouble() throws IOException {\n-        return read(DoubleValue.class).getValue();\n-    }\n-\n-    @Override\n-    public String readUTF() throws IOException {\n-        return read(StringValue.class).getValue();\n-    }\n-\n-    @Override\n-    public byte[] readBytes() throws IOException {\n-        return read(BytesValue.class).getValue().toByteArray();\n-    }\n-\n-    /**\n-     * Avoid using readObject, always try to pass the target class type for the data you want to read.\n-     *\n-     * @return\n-     */\n-    @Override\n-    public Object readObject() {\n-        throw new UnsupportedOperationException(\"Provide the protobuf message type you want to read.\");\n-    }\n-\n-    @Override\n-    public <T> T readObject(Class<T> cls) throws IOException {\n-        return read(cls);\n-    }\n-\n-    @Override\n-    public <T> T readObject(Class<T> cls, Type type) throws IOException {\n-        return readObject(cls);\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    private <T> T read(Class<T> cls) throws IOException {\n-        if (!ProtobufUtils.isSupported(cls)) {\n-            throw new IllegalArgumentException(\"This serialization only support google protobuf messages, but the actual input type is :\" + cls.getName());\n-        }\n-\n-        return ProtobufUtils.deserialize(is, cls);\n-    }\n-\n-    @Override\n-    public Throwable readThrowable() throws IOException {\n-        ThrowablePB.ThrowableProto throwableProto = ProtobufUtils.deserialize(is, ThrowablePB.ThrowableProto.class);\n-        return ProtobufUtils.convertToException(throwableProto);\n-    }\n-\n-    @Override\n-    public Object readEvent() throws IOException {\n-        String eventData = readUTF();\n-        if (eventData.equals(MOCK_HEARTBEAT_EVENT)) {\n-            eventData = HEARTBEAT_EVENT;\n-        }\n-        return eventData;\n-    }\n-\n-    @Override\n-    public Map<String, Object> readAttachments() throws IOException {\n-        Map<String, String> stringAttachments = ProtobufUtils.deserialize(is, MapValue.Map.class).getAttachmentsMap();\n-        Map<String, Object> attachments = new HashMap<>();\n-\n-        if (stringAttachments != null) {\n-            stringAttachments.forEach((k, v) -> attachments.put(k, v));\n-        }\n-        return attachments;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.protobuf.support;\r\n+\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB;\r\n+\r\n+import com.google.protobuf.BoolValue;\r\n+import com.google.protobuf.BytesValue;\r\n+import com.google.protobuf.DoubleValue;\r\n+import com.google.protobuf.FloatValue;\r\n+import com.google.protobuf.Int32Value;\r\n+import com.google.protobuf.Int64Value;\r\n+import com.google.protobuf.StringValue;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.lang.reflect.Type;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.MOCK_HEARTBEAT_EVENT;\r\n+\r\n+public class GenericProtobufObjectInput implements ObjectInput {\r\n+    private final InputStream is;\r\n+\r\n+    public GenericProtobufObjectInput(InputStream is) {\r\n+        this.is = is;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean readBool() throws IOException {\r\n+        return read(BoolValue.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte readByte() throws IOException {\r\n+        return (byte) read(Int32Value.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public short readShort() throws IOException {\r\n+        return (short) read(Int32Value.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public int readInt() throws IOException {\r\n+        return read(Int32Value.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public long readLong() throws IOException {\r\n+        return read(Int64Value.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public float readFloat() throws IOException {\r\n+        return read(FloatValue.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public double readDouble() throws IOException {\r\n+        return read(DoubleValue.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String readUTF() throws IOException {\r\n+        return read(StringValue.class).getValue();\r\n+    }\r\n+\r\n+    @Override\r\n+    public byte[] readBytes() throws IOException {\r\n+        return read(BytesValue.class).getValue().toByteArray();\r\n+    }\r\n+\r\n+    /**\r\n+     * Avoid using readObject, always try to pass the target class type for the data you want to read.\r\n+     *\r\n+     * @return\r\n+     */\r\n+    @Override\r\n+    public Object readObject() {\r\n+        throw new UnsupportedOperationException(\"Provide the protobuf message type you want to read.\");\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> T readObject(Class<T> cls) throws IOException {\r\n+        return read(cls);\r\n+    }\r\n+\r\n+    @Override\r\n+    public <T> T readObject(Class<T> cls, Type type) throws IOException {\r\n+        return readObject(cls);\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    private <T> T read(Class<T> cls) throws IOException {\r\n+        if (!ProtobufUtils.isSupported(cls)) {\r\n+            throw new IllegalArgumentException(\"This serialization only support google protobuf messages, but the actual input type is :\" + cls.getName());\r\n+        }\r\n+\r\n+        return ProtobufUtils.deserialize(is, cls);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Throwable readThrowable() throws IOException {\r\n+        ThrowablePB.ThrowableProto throwableProto = ProtobufUtils.deserialize(is, ThrowablePB.ThrowableProto.class);\r\n+        return ProtobufUtils.convertToException(throwableProto);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object readEvent() throws IOException {\r\n+        String eventData = readUTF();\r\n+        if (eventData.equals(MOCK_HEARTBEAT_EVENT)) {\r\n+            eventData = HEARTBEAT_EVENT;\r\n+        }\r\n+        return eventData;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Map<String, Object> readAttachments() throws IOException {\r\n+        Map<String, String> stringAttachments = ProtobufUtils.deserialize(is, MapValue.Map.class).getAttachmentsMap();\r\n+        Map<String, Object> attachments = new HashMap<>();\r\n+\r\n+        if (stringAttachments != null) {\r\n+            stringAttachments.forEach((k, v) -> attachments.put(k, v));\r\n+        }\r\n+        return attachments;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufObjectOutput.java", "source2": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufObjectOutput.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,157 +1,157 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.protobuf.support;\n-\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\n-\n-import com.google.protobuf.BoolValue;\n-import com.google.protobuf.ByteString;\n-import com.google.protobuf.BytesValue;\n-import com.google.protobuf.DoubleValue;\n-import com.google.protobuf.FloatValue;\n-import com.google.protobuf.Int32Value;\n-import com.google.protobuf.Int64Value;\n-import com.google.protobuf.MessageLite;\n-import com.google.protobuf.StringValue;\n-\n-import java.io.IOException;\n-import java.io.OutputStream;\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\n-import static org.apache.dubbo.common.constants.CommonConstants.MOCK_HEARTBEAT_EVENT;\n-\n-/**\n- * GenericGoogleProtobuf object output implementation\n- */\n-public class GenericProtobufObjectOutput implements ObjectOutput {\n-\n-    private final OutputStream os;\n-\n-    public GenericProtobufObjectOutput(OutputStream os) {\n-        this.os = os;\n-    }\n-\n-    @Override\n-    public void writeBool(boolean v) throws IOException {\n-\n-        writeObject(BoolValue.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeByte(byte v) throws IOException {\n-        writeObject(Int32Value.newBuilder().setValue((v)).build());\n-    }\n-\n-    @Override\n-    public void writeShort(short v) throws IOException {\n-        writeObject(Int32Value.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeInt(int v) throws IOException {\n-        writeObject(Int32Value.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeLong(long v) throws IOException {\n-        writeObject(Int64Value.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeFloat(float v) throws IOException {\n-        writeObject(FloatValue.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeDouble(double v) throws IOException {\n-        writeObject(DoubleValue.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeUTF(String v) throws IOException {\n-        writeObject(StringValue.newBuilder().setValue(v).build());\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] b) throws IOException {\n-        writeObject(BytesValue.newBuilder().setValue(ByteString.copyFrom(b)).build());\n-    }\n-\n-    @Override\n-    public void writeBytes(byte[] b, int off, int len) throws IOException {\n-        writeObject(BytesValue.newBuilder().setValue(ByteString.copyFrom(b, off, len)).build());\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    @Override\n-    public void writeObject(Object obj) throws IOException {\n-        /**\n-         * Protobuf does not allow writing of non-protobuf generated messages, including null value.\n-         * Writing of null value from developers should be denied immediately by throwing exception.\n-         */\n-        if (obj == null) {\n-            throw new IllegalStateException(\"This serialization only supports google protobuf objects, \" +\n-                    \"please use com.google.protobuf.Empty instead if you want to transmit null values.\");\n-            // obj = ProtobufUtils.convertNullToEmpty();\n-        }\n-        if (!ProtobufUtils.isSupported(obj.getClass())) {\n-            throw new IllegalArgumentException(\"This serialization only supports google protobuf objects, current object class is: \" + obj.getClass().getName());\n-        }\n-\n-        ProtobufUtils.serialize(obj, os);\n-        os.flush();\n-    }\n-\n-    @Override\n-    public void writeEvent(Object data) throws IOException {\n-        if (data == HEARTBEAT_EVENT) {\n-            data = MOCK_HEARTBEAT_EVENT;\n-        }\n-        writeUTF((String) data);\n-    }\n-\n-    @Override\n-    public void writeThrowable(Object obj) throws IOException {\n-        if (obj instanceof Throwable && !(obj instanceof MessageLite)) {\n-            obj = ProtobufUtils.convertToThrowableProto((Throwable) obj);\n-        }\n-        ProtobufUtils.serialize(obj, os);\n-        os.flush();\n-    }\n-\n-    @Override\n-    public void writeAttachments(Map<String, Object> attachments) throws IOException {\n-        if (attachments == null) {\n-            return;\n-        }\n-\n-        Map<String, String> stringAttachments = new HashMap<>();\n-        attachments.forEach((k, v) -> stringAttachments.put(k, (String) v));\n-\n-        ProtobufUtils.serialize(MapValue.Map.newBuilder().putAllAttachments(stringAttachments).build(), os);\n-        os.flush();\n-    }\n-\n-    @Override\n-    public void flushBuffer() throws IOException {\n-        os.flush();\n-    }\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.protobuf.support;\r\n+\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\r\n+\r\n+import com.google.protobuf.BoolValue;\r\n+import com.google.protobuf.ByteString;\r\n+import com.google.protobuf.BytesValue;\r\n+import com.google.protobuf.DoubleValue;\r\n+import com.google.protobuf.FloatValue;\r\n+import com.google.protobuf.Int32Value;\r\n+import com.google.protobuf.Int64Value;\r\n+import com.google.protobuf.MessageLite;\r\n+import com.google.protobuf.StringValue;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.OutputStream;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.HEARTBEAT_EVENT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.MOCK_HEARTBEAT_EVENT;\r\n+\r\n+/**\r\n+ * GenericGoogleProtobuf object output implementation\r\n+ */\r\n+public class GenericProtobufObjectOutput implements ObjectOutput {\r\n+\r\n+    private final OutputStream os;\r\n+\r\n+    public GenericProtobufObjectOutput(OutputStream os) {\r\n+        this.os = os;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBool(boolean v) throws IOException {\r\n+\r\n+        writeObject(BoolValue.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeByte(byte v) throws IOException {\r\n+        writeObject(Int32Value.newBuilder().setValue((v)).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeShort(short v) throws IOException {\r\n+        writeObject(Int32Value.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeInt(int v) throws IOException {\r\n+        writeObject(Int32Value.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeLong(long v) throws IOException {\r\n+        writeObject(Int64Value.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeFloat(float v) throws IOException {\r\n+        writeObject(FloatValue.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeDouble(double v) throws IOException {\r\n+        writeObject(DoubleValue.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeUTF(String v) throws IOException {\r\n+        writeObject(StringValue.newBuilder().setValue(v).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] b) throws IOException {\r\n+        writeObject(BytesValue.newBuilder().setValue(ByteString.copyFrom(b)).build());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeBytes(byte[] b, int off, int len) throws IOException {\r\n+        writeObject(BytesValue.newBuilder().setValue(ByteString.copyFrom(b, off, len)).build());\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    @Override\r\n+    public void writeObject(Object obj) throws IOException {\r\n+        /**\r\n+         * Protobuf does not allow writing of non-protobuf generated messages, including null value.\r\n+         * Writing of null value from developers should be denied immediately by throwing exception.\r\n+         */\r\n+        if (obj == null) {\r\n+            throw new IllegalStateException(\"This serialization only supports google protobuf objects, \" +\r\n+                    \"please use com.google.protobuf.Empty instead if you want to transmit null values.\");\r\n+            // obj = ProtobufUtils.convertNullToEmpty();\r\n+        }\r\n+        if (!ProtobufUtils.isSupported(obj.getClass())) {\r\n+            throw new IllegalArgumentException(\"This serialization only supports google protobuf objects, current object class is: \" + obj.getClass().getName());\r\n+        }\r\n+\r\n+        ProtobufUtils.serialize(obj, os);\r\n+        os.flush();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeEvent(Object data) throws IOException {\r\n+        if (data == HEARTBEAT_EVENT) {\r\n+            data = MOCK_HEARTBEAT_EVENT;\r\n+        }\r\n+        writeUTF((String) data);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeThrowable(Object obj) throws IOException {\r\n+        if (obj instanceof Throwable && !(obj instanceof MessageLite)) {\r\n+            obj = ProtobufUtils.convertToThrowableProto((Throwable) obj);\r\n+        }\r\n+        ProtobufUtils.serialize(obj, os);\r\n+        os.flush();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void writeAttachments(Map<String, Object> attachments) throws IOException {\r\n+        if (attachments == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        Map<String, String> stringAttachments = new HashMap<>();\r\n+        attachments.forEach((k, v) -> stringAttachments.put(k, (String) v));\r\n+\r\n+        ProtobufUtils.serialize(MapValue.Map.newBuilder().putAllAttachments(stringAttachments).build(), os);\r\n+        os.flush();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void flushBuffer() throws IOException {\r\n+        os.flush();\r\n+    }\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufSerialization.java", "source2": "org/apache/dubbo/common/serialize/protobuf/support/GenericProtobufSerialization.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,63 +1,63 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.protobuf.support;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.serialize.Constants;\n-import org.apache.dubbo.common.serialize.ObjectInput;\n-import org.apache.dubbo.common.serialize.ObjectOutput;\n-import org.apache.dubbo.common.serialize.Serialization;\n-\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-\n-/**\n- * <p>\n- * Currently, the Dubbo protocol / framework data, such as attachments, event data, etc.,\n- * depends on business layer serialization protocol to do serialization before transmitted.\n- * That's a problem when using Protobuf as business serialization protocol, because Protobuf does not support raw java Object types,\n- * to solve it, we can use one of the following methods:\n- *\n- * <ul>\n- *     <li>1. Package these data with Protobuf so that they can be serialized.</li>\n- *     <li>2. Separate the serialization of Dubbo protocol/framework and the service args (easy to cross-platform, cross-language serialization) to avoid the binding of this part and serialization protocol.</li>\n- * </ul>\n- *\n- * </p>\n- */\n-public class GenericProtobufSerialization implements Serialization {\n-\n-    @Override\n-    public byte getContentTypeId() {\n-        return Constants.PROTOBUF_SERIALIZATION_ID;\n-    }\n-\n-    @Override\n-    public String getContentType() {\n-        return \"text/json\";\n-    }\n-\n-    @Override\n-    public ObjectOutput serialize(URL url, OutputStream output) {\n-        return new GenericProtobufObjectOutput(output);\n-    }\n-\n-    @Override\n-    public ObjectInput deserialize(URL url, InputStream input) {\n-        return new GenericProtobufObjectInput(input);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.protobuf.support;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.serialize.Constants;\r\n+import org.apache.dubbo.common.serialize.ObjectInput;\r\n+import org.apache.dubbo.common.serialize.ObjectOutput;\r\n+import org.apache.dubbo.common.serialize.Serialization;\r\n+\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+\r\n+/**\r\n+ * <p>\r\n+ * Currently, the Dubbo protocol / framework data, such as attachments, event data, etc.,\r\n+ * depends on business layer serialization protocol to do serialization before transmitted.\r\n+ * That's a problem when using Protobuf as business serialization protocol, because Protobuf does not support raw java Object types,\r\n+ * to solve it, we can use one of the following methods:\r\n+ *\r\n+ * <ul>\r\n+ *     <li>1. Package these data with Protobuf so that they can be serialized.</li>\r\n+ *     <li>2. Separate the serialization of Dubbo protocol/framework and the service args (easy to cross-platform, cross-language serialization) to avoid the binding of this part and serialization protocol.</li>\r\n+ * </ul>\r\n+ *\r\n+ * </p>\r\n+ */\r\n+public class GenericProtobufSerialization implements Serialization {\r\n+\r\n+    @Override\r\n+    public byte getContentTypeId() {\r\n+        return Constants.PROTOBUF_SERIALIZATION_ID;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getContentType() {\r\n+        return \"text/json\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectOutput serialize(URL url, OutputStream output) {\r\n+        return new GenericProtobufObjectOutput(output);\r\n+    }\r\n+\r\n+    @Override\r\n+    public ObjectInput deserialize(URL url, InputStream input) {\r\n+        return new GenericProtobufObjectInput(input);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/common/serialize/protobuf/support/ProtobufUtils.java", "source2": "org/apache/dubbo/common/serialize/protobuf/support/ProtobufUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,206 +1,206 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.protobuf.support;\n-\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto;\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto;\n-\n-import com.google.common.base.Strings;\n-import com.google.protobuf.BoolValue;\n-import com.google.protobuf.BytesValue;\n-import com.google.protobuf.CodedInputStream;\n-import com.google.protobuf.DoubleValue;\n-import com.google.protobuf.Empty;\n-import com.google.protobuf.ExtensionRegistryLite;\n-import com.google.protobuf.FloatValue;\n-import com.google.protobuf.GeneratedMessageV3.Builder;\n-import com.google.protobuf.Int32Value;\n-import com.google.protobuf.Int64Value;\n-import com.google.protobuf.InvalidProtocolBufferException;\n-import com.google.protobuf.MessageLite;\n-import com.google.protobuf.MessageOrBuilder;\n-import com.google.protobuf.Parser;\n-import com.google.protobuf.StringValue;\n-import com.google.protobuf.util.JsonFormat;\n-import com.google.protobuf.util.JsonFormat.Printer;\n-\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.OutputStream;\n-import java.lang.reflect.Method;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-public class ProtobufUtils {\n-\n-    static boolean isSupported(Class<?> clazz) {\n-        if (clazz == null) {\n-            return false;\n-        }\n-\n-        if (MessageLite.class.isAssignableFrom(clazz)) {\n-            return true;\n-        }\n-        return false;\n-    }\n-\n-    /* Protobuf json */\n-\n-    static <T> T deserializeJson(String json, Class<T> requestClass) throws InvalidProtocolBufferException {\n-        Builder builder;\n-        try {\n-            builder = getMessageBuilder(requestClass);\n-        } catch (Exception e) {\n-            throw new IllegalArgumentException(\"Get google protobuf message builder from \" + requestClass.getName() + \"failed\", e);\n-        }\n-        JsonFormat.parser().merge(json, builder);\n-        return (T) builder.build();\n-    }\n-\n-    static String serializeJson(Object value) throws InvalidProtocolBufferException {\n-        Printer printer = JsonFormat.printer().omittingInsignificantWhitespace();\n-        return printer.print((MessageOrBuilder) value);\n-    }\n-\n-    private static Builder getMessageBuilder(Class<?> requestType) throws Exception {\n-        Method method = requestType.getMethod(\"newBuilder\");\n-        return (Builder) method.invoke(null, null);\n-    }\n-\n-\n-    /* Protobuf */\n-\n-    private static ConcurrentMap<Class<? extends MessageLite>, MessageMarshaller> marshallers =\n-            new ConcurrentHashMap<>();\n-\n-    private static volatile ExtensionRegistryLite globalRegistry =\n-            ExtensionRegistryLite.getEmptyRegistry();\n-\n-    static {\n-        // Built-in types need to be registered in advance\n-        marshaller(MapValue.Map.getDefaultInstance());\n-        marshaller(Empty.getDefaultInstance());\n-        marshaller(ThrowableProto.getDefaultInstance());\n-        marshaller(BoolValue.getDefaultInstance());\n-        marshaller(Int32Value.getDefaultInstance());\n-        marshaller(Int64Value.getDefaultInstance());\n-        marshaller(FloatValue.getDefaultInstance());\n-        marshaller(DoubleValue.getDefaultInstance());\n-        marshaller(BytesValue.getDefaultInstance());\n-        marshaller(StringValue.getDefaultInstance());\n-    }\n-\n-    public static <T extends MessageLite> void marshaller(T defaultInstance) {\n-        marshallers.put(defaultInstance.getClass(), new MessageMarshaller<>(defaultInstance));\n-    }\n-\n-    static void serialize(Object value, OutputStream os) throws IOException {\n-        MessageLite messageLite = (MessageLite) value;\n-        messageLite.writeDelimitedTo(os);\n-    }\n-\n-    @SuppressWarnings(\"unchecked\")\n-    static <T> T deserialize(InputStream is, Class<T> requestClass) throws InvalidProtocolBufferException {\n-        MessageMarshaller<?> marshaller = marshallers.get(requestClass);\n-        if (marshaller == null) {\n-            throw new IllegalStateException(String.format(\"Protobuf classes should be registered in advance before \" +\n-                    \"do serialization, class name: %s\", requestClass.getName()));\n-        }\n-        return (T) marshaller.parse(is);\n-    }\n-\n-    public static Empty convertNullToEmpty() {\n-        return Empty.newBuilder().build();\n-    }\n-\n-    public static Object convertEmptyToNull(Empty empty) {\n-        return null;\n-    }\n-\n-    public static ThrowableProto convertToThrowableProto(Throwable throwable) {\n-        final ThrowableProto.Builder builder = ThrowableProto.newBuilder();\n-        builder.setOriginalClassName(throwable.getClass().getCanonicalName());\n-        builder.setOriginalMessage(Strings.nullToEmpty(throwable.getMessage()));\n-\n-        for (StackTraceElement e : throwable.getStackTrace()) {\n-            builder.addStackTrace(toStackTraceElement(e));\n-        }\n-\n-        if (throwable.getCause() != null) {\n-            builder.setCause(convertToThrowableProto(throwable.getCause()));\n-        }\n-        return builder.build();\n-    }\n-\n-    public static Throwable convertToException(ThrowableProto throwableProto) {\n-        return new ProtobufWrappedException(throwableProto);\n-    }\n-\n-    private static StackTraceElementProto toStackTraceElement(StackTraceElement element) {\n-        final StackTraceElementProto.Builder builder =\n-                StackTraceElementProto.newBuilder()\n-                        .setClassName(element.getClassName())\n-                        .setMethodName(element.getMethodName())\n-                        .setLineNumber(element.getLineNumber());\n-        if (element.getFileName() != null) {\n-            builder.setFileName(element.getFileName());\n-        }\n-        return builder.build();\n-    }\n-\n-    private static final class MessageMarshaller<T extends MessageLite> {\n-        private final Parser<T> parser;\n-        private final T defaultInstance;\n-\n-        @SuppressWarnings(\"unchecked\")\n-        MessageMarshaller(T defaultInstance) {\n-            this.defaultInstance = defaultInstance;\n-            parser = (Parser<T>) defaultInstance.getParserForType();\n-        }\n-\n-        @SuppressWarnings(\"unchecked\")\n-        public Class<T> getMessageClass() {\n-            // Precisely T since protobuf doesn't let messages extend other messages.\n-            return (Class<T>) defaultInstance.getClass();\n-        }\n-\n-        public T getMessagePrototype() {\n-            return defaultInstance;\n-        }\n-\n-        public T parse(InputStream stream) throws InvalidProtocolBufferException {\n-            return parser.parseDelimitedFrom(stream, globalRegistry);\n-//            CodedInputStream cis = CodedInputStream.newInstance(stream);\n-//            // Pre-create the CodedInputStream so that we can remove the size limit restriction\n-//            // when parsing.\n-//            cis.setSizeLimit(Integer.MAX_VALUE);\n-//            return parseFrom(cis);\n-        }\n-\n-        private T parseFrom(CodedInputStream stream) throws InvalidProtocolBufferException {\n-            T message = parser.parseFrom(stream, globalRegistry);\n-            try {\n-                stream.checkLastTagWas(0);\n-                return message;\n-            } catch (InvalidProtocolBufferException e) {\n-                e.setUnfinishedMessage(message);\n-                throw e;\n-            }\n-        }\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.protobuf.support;\r\n+\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.MapValue;\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto;\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto;\r\n+\r\n+import com.google.common.base.Strings;\r\n+import com.google.protobuf.BoolValue;\r\n+import com.google.protobuf.BytesValue;\r\n+import com.google.protobuf.CodedInputStream;\r\n+import com.google.protobuf.DoubleValue;\r\n+import com.google.protobuf.Empty;\r\n+import com.google.protobuf.ExtensionRegistryLite;\r\n+import com.google.protobuf.FloatValue;\r\n+import com.google.protobuf.GeneratedMessageV3.Builder;\r\n+import com.google.protobuf.Int32Value;\r\n+import com.google.protobuf.Int64Value;\r\n+import com.google.protobuf.InvalidProtocolBufferException;\r\n+import com.google.protobuf.MessageLite;\r\n+import com.google.protobuf.MessageOrBuilder;\r\n+import com.google.protobuf.Parser;\r\n+import com.google.protobuf.StringValue;\r\n+import com.google.protobuf.util.JsonFormat;\r\n+import com.google.protobuf.util.JsonFormat.Printer;\r\n+\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.OutputStream;\r\n+import java.lang.reflect.Method;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+public class ProtobufUtils {\r\n+\r\n+    static boolean isSupported(Class<?> clazz) {\r\n+        if (clazz == null) {\r\n+            return false;\r\n+        }\r\n+\r\n+        if (MessageLite.class.isAssignableFrom(clazz)) {\r\n+            return true;\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    /* Protobuf json */\r\n+\r\n+    static <T> T deserializeJson(String json, Class<T> requestClass) throws InvalidProtocolBufferException {\r\n+        Builder builder;\r\n+        try {\r\n+            builder = getMessageBuilder(requestClass);\r\n+        } catch (Exception e) {\r\n+            throw new IllegalArgumentException(\"Get google protobuf message builder from \" + requestClass.getName() + \"failed\", e);\r\n+        }\r\n+        JsonFormat.parser().merge(json, builder);\r\n+        return (T) builder.build();\r\n+    }\r\n+\r\n+    static String serializeJson(Object value) throws InvalidProtocolBufferException {\r\n+        Printer printer = JsonFormat.printer().omittingInsignificantWhitespace();\r\n+        return printer.print((MessageOrBuilder) value);\r\n+    }\r\n+\r\n+    private static Builder getMessageBuilder(Class<?> requestType) throws Exception {\r\n+        Method method = requestType.getMethod(\"newBuilder\");\r\n+        return (Builder) method.invoke(null, null);\r\n+    }\r\n+\r\n+\r\n+    /* Protobuf */\r\n+\r\n+    private static ConcurrentMap<Class<? extends MessageLite>, MessageMarshaller> marshallers =\r\n+            new ConcurrentHashMap<>();\r\n+\r\n+    private static volatile ExtensionRegistryLite globalRegistry =\r\n+            ExtensionRegistryLite.getEmptyRegistry();\r\n+\r\n+    static {\r\n+        // Built-in types need to be registered in advance\r\n+        marshaller(MapValue.Map.getDefaultInstance());\r\n+        marshaller(Empty.getDefaultInstance());\r\n+        marshaller(ThrowableProto.getDefaultInstance());\r\n+        marshaller(BoolValue.getDefaultInstance());\r\n+        marshaller(Int32Value.getDefaultInstance());\r\n+        marshaller(Int64Value.getDefaultInstance());\r\n+        marshaller(FloatValue.getDefaultInstance());\r\n+        marshaller(DoubleValue.getDefaultInstance());\r\n+        marshaller(BytesValue.getDefaultInstance());\r\n+        marshaller(StringValue.getDefaultInstance());\r\n+    }\r\n+\r\n+    public static <T extends MessageLite> void marshaller(T defaultInstance) {\r\n+        marshallers.put(defaultInstance.getClass(), new MessageMarshaller<>(defaultInstance));\r\n+    }\r\n+\r\n+    static void serialize(Object value, OutputStream os) throws IOException {\r\n+        MessageLite messageLite = (MessageLite) value;\r\n+        messageLite.writeDelimitedTo(os);\r\n+    }\r\n+\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    static <T> T deserialize(InputStream is, Class<T> requestClass) throws InvalidProtocolBufferException {\r\n+        MessageMarshaller<?> marshaller = marshallers.get(requestClass);\r\n+        if (marshaller == null) {\r\n+            throw new IllegalStateException(String.format(\"Protobuf classes should be registered in advance before \" +\r\n+                    \"do serialization, class name: %s\", requestClass.getName()));\r\n+        }\r\n+        return (T) marshaller.parse(is);\r\n+    }\r\n+\r\n+    public static Empty convertNullToEmpty() {\r\n+        return Empty.newBuilder().build();\r\n+    }\r\n+\r\n+    public static Object convertEmptyToNull(Empty empty) {\r\n+        return null;\r\n+    }\r\n+\r\n+    public static ThrowableProto convertToThrowableProto(Throwable throwable) {\r\n+        final ThrowableProto.Builder builder = ThrowableProto.newBuilder();\r\n+        builder.setOriginalClassName(throwable.getClass().getCanonicalName());\r\n+        builder.setOriginalMessage(Strings.nullToEmpty(throwable.getMessage()));\r\n+\r\n+        for (StackTraceElement e : throwable.getStackTrace()) {\r\n+            builder.addStackTrace(toStackTraceElement(e));\r\n+        }\r\n+\r\n+        if (throwable.getCause() != null) {\r\n+            builder.setCause(convertToThrowableProto(throwable.getCause()));\r\n+        }\r\n+        return builder.build();\r\n+    }\r\n+\r\n+    public static Throwable convertToException(ThrowableProto throwableProto) {\r\n+        return new ProtobufWrappedException(throwableProto);\r\n+    }\r\n+\r\n+    private static StackTraceElementProto toStackTraceElement(StackTraceElement element) {\r\n+        final StackTraceElementProto.Builder builder =\r\n+                StackTraceElementProto.newBuilder()\r\n+                        .setClassName(element.getClassName())\r\n+                        .setMethodName(element.getMethodName())\r\n+                        .setLineNumber(element.getLineNumber());\r\n+        if (element.getFileName() != null) {\r\n+            builder.setFileName(element.getFileName());\r\n+        }\r\n+        return builder.build();\r\n+    }\r\n+\r\n+    private static final class MessageMarshaller<T extends MessageLite> {\r\n+        private final Parser<T> parser;\r\n+        private final T defaultInstance;\r\n+\r\n+        @SuppressWarnings(\"unchecked\")\r\n+        MessageMarshaller(T defaultInstance) {\r\n+            this.defaultInstance = defaultInstance;\r\n+            parser = (Parser<T>) defaultInstance.getParserForType();\r\n+        }\r\n+\r\n+        @SuppressWarnings(\"unchecked\")\r\n+        public Class<T> getMessageClass() {\r\n+            // Precisely T since protobuf doesn't let messages extend other messages.\r\n+            return (Class<T>) defaultInstance.getClass();\r\n+        }\r\n+\r\n+        public T getMessagePrototype() {\r\n+            return defaultInstance;\r\n+        }\r\n+\r\n+        public T parse(InputStream stream) throws InvalidProtocolBufferException {\r\n+            return parser.parseDelimitedFrom(stream, globalRegistry);\r\n+//            CodedInputStream cis = CodedInputStream.newInstance(stream);\r\n+//            // Pre-create the CodedInputStream so that we can remove the size limit restriction\r\n+//            // when parsing.\r\n+//            cis.setSizeLimit(Integer.MAX_VALUE);\r\n+//            return parseFrom(cis);\r\n+        }\r\n+\r\n+        private T parseFrom(CodedInputStream stream) throws InvalidProtocolBufferException {\r\n+            T message = parser.parseFrom(stream, globalRegistry);\r\n+            try {\r\n+                stream.checkLastTagWas(0);\r\n+                return message;\r\n+            } catch (InvalidProtocolBufferException e) {\r\n+                e.setUnfinishedMessage(message);\r\n+                throw e;\r\n+            }\r\n+        }\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/common/serialize/protobuf/support/ProtobufWrappedException.java", "source2": "org/apache/dubbo/common/serialize/protobuf/support/ProtobufWrappedException.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,68 +1,68 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.common.serialize.protobuf.support;\n-\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB;\n-import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto;\n-\n-import com.google.common.base.Strings;\n-\n-/**\n- * For protobuf, all server side exceptions should be wrapped using this specific one.\n- */\n-public class ProtobufWrappedException extends RuntimeException {\n-\n-    private static final long serialVersionUID = -1792808536714102039L;\n-\n-    private String originalClassName;\n-    private String originalMessage;\n-\n-    public ProtobufWrappedException(ThrowableProto throwableProto) {\n-        super(throwableProto.getOriginalClassName() + \": \" + throwableProto.getOriginalMessage());\n-\n-        originalClassName = throwableProto.getOriginalClassName();\n-        originalMessage = throwableProto.getOriginalMessage();\n-\n-        if (throwableProto.getStackTraceCount() > 0) {\n-            setStackTrace(throwableProto.getStackTraceList().stream()\n-                    .map(ProtobufWrappedException::toStackTraceElement)\n-                    .toArray(StackTraceElement[]::new));\n-        }\n-\n-        if (throwableProto.hasCause()) {\n-            initCause(new ProtobufWrappedException(throwableProto.getCause()));\n-        }\n-    }\n-\n-    public String getOriginalClassName() {\n-        return originalClassName;\n-    }\n-\n-    public String getOriginalMessage() {\n-        return originalMessage;\n-    }\n-\n-    private static StackTraceElement toStackTraceElement(ThrowablePB.StackTraceElementProto proto) {\n-        return new StackTraceElement(\n-                proto.getClassName(),\n-                proto.getMethodName(),\n-                Strings.emptyToNull(proto.getFileName()),\n-                proto.getLineNumber());\n-    }\n-\n-}\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.common.serialize.protobuf.support;\r\n+\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB;\r\n+import org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto;\r\n+\r\n+import com.google.common.base.Strings;\r\n+\r\n+/**\r\n+ * For protobuf, all server side exceptions should be wrapped using this specific one.\r\n+ */\r\n+public class ProtobufWrappedException extends RuntimeException {\r\n+\r\n+    private static final long serialVersionUID = -1792808536714102039L;\r\n+\r\n+    private String originalClassName;\r\n+    private String originalMessage;\r\n+\r\n+    public ProtobufWrappedException(ThrowableProto throwableProto) {\r\n+        super(throwableProto.getOriginalClassName() + \": \" + throwableProto.getOriginalMessage());\r\n+\r\n+        originalClassName = throwableProto.getOriginalClassName();\r\n+        originalMessage = throwableProto.getOriginalMessage();\r\n+\r\n+        if (throwableProto.getStackTraceCount() > 0) {\r\n+            setStackTrace(throwableProto.getStackTraceList().stream()\r\n+                    .map(ProtobufWrappedException::toStackTraceElement)\r\n+                    .toArray(StackTraceElement[]::new));\r\n+        }\r\n+\r\n+        if (throwableProto.hasCause()) {\r\n+            initCause(new ProtobufWrappedException(throwableProto.getCause()));\r\n+        }\r\n+    }\r\n+\r\n+    public String getOriginalClassName() {\r\n+        return originalClassName;\r\n+    }\r\n+\r\n+    public String getOriginalMessage() {\r\n+        return originalMessage;\r\n+    }\r\n+\r\n+    private static StackTraceElement toStackTraceElement(ThrowablePB.StackTraceElementProto proto) {\r\n+        return new StackTraceElement(\r\n+                proto.getClassName(),\r\n+                proto.getMethodName(),\r\n+                Strings.emptyToNull(proto.getFileName()),\r\n+                proto.getLineNumber());\r\n+    }\r\n+\r\n+}\r\n+\r\n"}, {"source1": "org/apache/dubbo/common/serialize/protobuf/support/wrapper/ThrowablePB.java", "source2": "org/apache/dubbo/common/serialize/protobuf/support/wrapper/ThrowablePB.java", "unified_diff": "@@ -16,87 +16,88 @@\n   }\n   public interface StackTraceElementProtoOrBuilder extends\n       // @@protoc_insertion_point(interface_extends:org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto)\n       com.google.protobuf.MessageOrBuilder {\n \n     /**\n      * <pre>\n-     * The fully qualified name of the class containing the execution point\n-     * represented by the stack trace element.\n+     * The fully qualified name of the class containing the execution point\r\n+     * represented by the stack trace element.\r\n      * </pre>\n      *\n      * <code>string class_name = 1;</code>\n      */\n     java.lang.String getClassName();\n     /**\n      * <pre>\n-     * The fully qualified name of the class containing the execution point\n-     * represented by the stack trace element.\n+     * The fully qualified name of the class containing the execution point\r\n+     * represented by the stack trace element.\r\n      * </pre>\n      *\n      * <code>string class_name = 1;</code>\n      */\n     com.google.protobuf.ByteString\n         getClassNameBytes();\n \n     /**\n      * <pre>\n-     * The name of the method containing the execution point represented by the\n-     * stack trace element\n+     * The name of the method containing the execution point represented by the\r\n+     * stack trace element\r\n      * </pre>\n      *\n      * <code>string method_name = 2;</code>\n      */\n     java.lang.String getMethodName();\n     /**\n      * <pre>\n-     * The name of the method containing the execution point represented by the\n-     * stack trace element\n+     * The name of the method containing the execution point represented by the\r\n+     * stack trace element\r\n      * </pre>\n      *\n      * <code>string method_name = 2;</code>\n      */\n     com.google.protobuf.ByteString\n         getMethodNameBytes();\n \n     /**\n      * <pre>\n-     * The name of the file containing the execution point represented by the\n-     * stack trace element, or null if this information is unavailable.\n+     * The name of the file containing the execution point represented by the\r\n+     * stack trace element, or null if this information is unavailable.\r\n      * </pre>\n      *\n      * <code>string file_name = 3;</code>\n      */\n     java.lang.String getFileName();\n     /**\n      * <pre>\n-     * The name of the file containing the execution point represented by the\n-     * stack trace element, or null if this information is unavailable.\n+     * The name of the file containing the execution point represented by the\r\n+     * stack trace element, or null if this information is unavailable.\r\n      * </pre>\n      *\n      * <code>string file_name = 3;</code>\n      */\n     com.google.protobuf.ByteString\n         getFileNameBytes();\n \n     /**\n      * <pre>\n-     * The line number of the source line containing the execution point represented\n-     * by this stack trace element, or a negative number if this information is\n-     * unavailable.\n+     * The line number of the source line containing the execution point represented\r\n+     * by this stack trace element, or a negative number if this information is\r\n+     * unavailable.\r\n      * </pre>\n      *\n      * <code>int32 line_number = 4;</code>\n      */\n     int getLineNumber();\n   }\n   /**\n    * <pre>\n-   * An element in a stack trace, based on the Java type of the same name.\n-   * See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StackTraceElement.html\n+   * An element in a stack trace, based on the Java type of the same name.\r\n+   *\r\n+   * See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StackTraceElement.html\r\n    * </pre>\n    *\n    * Protobuf type {@code org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto}\n    */\n   public  static final class StackTraceElementProto extends\n       com.google.protobuf.GeneratedMessageV3 implements\n       // @@protoc_insertion_point(message_implements:org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto)\n@@ -191,16 +192,16 @@\n               org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.class, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.Builder.class);\n     }\n \n     public static final int CLASS_NAME_FIELD_NUMBER = 1;\n     private volatile java.lang.Object className_;\n     /**\n      * <pre>\n-     * The fully qualified name of the class containing the execution point\n-     * represented by the stack trace element.\n+     * The fully qualified name of the class containing the execution point\r\n+     * represented by the stack trace element.\r\n      * </pre>\n      *\n      * <code>string class_name = 1;</code>\n      */\n     public java.lang.String getClassName() {\n       java.lang.Object ref = className_;\n       if (ref instanceof java.lang.String) {\n@@ -211,16 +212,16 @@\n         java.lang.String s = bs.toStringUtf8();\n         className_ = s;\n         return s;\n       }\n     }\n     /**\n      * <pre>\n-     * The fully qualified name of the class containing the execution point\n-     * represented by the stack trace element.\n+     * The fully qualified name of the class containing the execution point\r\n+     * represented by the stack trace element.\r\n      * </pre>\n      *\n      * <code>string class_name = 1;</code>\n      */\n     public com.google.protobuf.ByteString\n         getClassNameBytes() {\n       java.lang.Object ref = className_;\n@@ -235,16 +236,16 @@\n       }\n     }\n \n     public static final int METHOD_NAME_FIELD_NUMBER = 2;\n     private volatile java.lang.Object methodName_;\n     /**\n      * <pre>\n-     * The name of the method containing the execution point represented by the\n-     * stack trace element\n+     * The name of the method containing the execution point represented by the\r\n+     * stack trace element\r\n      * </pre>\n      *\n      * <code>string method_name = 2;</code>\n      */\n     public java.lang.String getMethodName() {\n       java.lang.Object ref = methodName_;\n       if (ref instanceof java.lang.String) {\n@@ -255,16 +256,16 @@\n         java.lang.String s = bs.toStringUtf8();\n         methodName_ = s;\n         return s;\n       }\n     }\n     /**\n      * <pre>\n-     * The name of the method containing the execution point represented by the\n-     * stack trace element\n+     * The name of the method containing the execution point represented by the\r\n+     * stack trace element\r\n      * </pre>\n      *\n      * <code>string method_name = 2;</code>\n      */\n     public com.google.protobuf.ByteString\n         getMethodNameBytes() {\n       java.lang.Object ref = methodName_;\n@@ -279,16 +280,16 @@\n       }\n     }\n \n     public static final int FILE_NAME_FIELD_NUMBER = 3;\n     private volatile java.lang.Object fileName_;\n     /**\n      * <pre>\n-     * The name of the file containing the execution point represented by the\n-     * stack trace element, or null if this information is unavailable.\n+     * The name of the file containing the execution point represented by the\r\n+     * stack trace element, or null if this information is unavailable.\r\n      * </pre>\n      *\n      * <code>string file_name = 3;</code>\n      */\n     public java.lang.String getFileName() {\n       java.lang.Object ref = fileName_;\n       if (ref instanceof java.lang.String) {\n@@ -299,16 +300,16 @@\n         java.lang.String s = bs.toStringUtf8();\n         fileName_ = s;\n         return s;\n       }\n     }\n     /**\n      * <pre>\n-     * The name of the file containing the execution point represented by the\n-     * stack trace element, or null if this information is unavailable.\n+     * The name of the file containing the execution point represented by the\r\n+     * stack trace element, or null if this information is unavailable.\r\n      * </pre>\n      *\n      * <code>string file_name = 3;</code>\n      */\n     public com.google.protobuf.ByteString\n         getFileNameBytes() {\n       java.lang.Object ref = fileName_;\n@@ -323,17 +324,17 @@\n       }\n     }\n \n     public static final int LINE_NUMBER_FIELD_NUMBER = 4;\n     private int lineNumber_;\n     /**\n      * <pre>\n-     * The line number of the source line containing the execution point represented\n-     * by this stack trace element, or a negative number if this information is\n-     * unavailable.\n+     * The line number of the source line containing the execution point represented\r\n+     * by this stack trace element, or a negative number if this information is\r\n+     * unavailable.\r\n      * </pre>\n      *\n      * <code>int32 line_number = 4;</code>\n      */\n     public int getLineNumber() {\n       return lineNumber_;\n     }\n@@ -521,16 +522,17 @@\n     protected Builder newBuilderForType(\n         com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {\n       Builder builder = new Builder(parent);\n       return builder;\n     }\n     /**\n      * <pre>\n-     * An element in a stack trace, based on the Java type of the same name.\n-     * See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StackTraceElement.html\n+     * An element in a stack trace, based on the Java type of the same name.\r\n+     *\r\n+     * See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/StackTraceElement.html\r\n      * </pre>\n      *\n      * Protobuf type {@code org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto}\n      */\n     public static final class Builder extends\n         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements\n         // @@protoc_insertion_point(builder_implements:org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto)\n@@ -695,16 +697,16 @@\n         }\n         return this;\n       }\n \n       private java.lang.Object className_ = \"\";\n       /**\n        * <pre>\n-       * The fully qualified name of the class containing the execution point\n-       * represented by the stack trace element.\n+       * The fully qualified name of the class containing the execution point\r\n+       * represented by the stack trace element.\r\n        * </pre>\n        *\n        * <code>string class_name = 1;</code>\n        */\n       public java.lang.String getClassName() {\n         java.lang.Object ref = className_;\n         if (!(ref instanceof java.lang.String)) {\n@@ -715,16 +717,16 @@\n           return s;\n         } else {\n           return (java.lang.String) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The fully qualified name of the class containing the execution point\n-       * represented by the stack trace element.\n+       * The fully qualified name of the class containing the execution point\r\n+       * represented by the stack trace element.\r\n        * </pre>\n        *\n        * <code>string class_name = 1;</code>\n        */\n       public com.google.protobuf.ByteString\n           getClassNameBytes() {\n         java.lang.Object ref = className_;\n@@ -736,16 +738,16 @@\n           return b;\n         } else {\n           return (com.google.protobuf.ByteString) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The fully qualified name of the class containing the execution point\n-       * represented by the stack trace element.\n+       * The fully qualified name of the class containing the execution point\r\n+       * represented by the stack trace element.\r\n        * </pre>\n        *\n        * <code>string class_name = 1;</code>\n        */\n       public Builder setClassName(\n           java.lang.String value) {\n         if (value == null) {\n@@ -754,30 +756,30 @@\n   \n         className_ = value;\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The fully qualified name of the class containing the execution point\n-       * represented by the stack trace element.\n+       * The fully qualified name of the class containing the execution point\r\n+       * represented by the stack trace element.\r\n        * </pre>\n        *\n        * <code>string class_name = 1;</code>\n        */\n       public Builder clearClassName() {\n         \n         className_ = getDefaultInstance().getClassName();\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The fully qualified name of the class containing the execution point\n-       * represented by the stack trace element.\n+       * The fully qualified name of the class containing the execution point\r\n+       * represented by the stack trace element.\r\n        * </pre>\n        *\n        * <code>string class_name = 1;</code>\n        */\n       public Builder setClassNameBytes(\n           com.google.protobuf.ByteString value) {\n         if (value == null) {\n@@ -789,16 +791,16 @@\n         onChanged();\n         return this;\n       }\n \n       private java.lang.Object methodName_ = \"\";\n       /**\n        * <pre>\n-       * The name of the method containing the execution point represented by the\n-       * stack trace element\n+       * The name of the method containing the execution point represented by the\r\n+       * stack trace element\r\n        * </pre>\n        *\n        * <code>string method_name = 2;</code>\n        */\n       public java.lang.String getMethodName() {\n         java.lang.Object ref = methodName_;\n         if (!(ref instanceof java.lang.String)) {\n@@ -809,16 +811,16 @@\n           return s;\n         } else {\n           return (java.lang.String) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The name of the method containing the execution point represented by the\n-       * stack trace element\n+       * The name of the method containing the execution point represented by the\r\n+       * stack trace element\r\n        * </pre>\n        *\n        * <code>string method_name = 2;</code>\n        */\n       public com.google.protobuf.ByteString\n           getMethodNameBytes() {\n         java.lang.Object ref = methodName_;\n@@ -830,16 +832,16 @@\n           return b;\n         } else {\n           return (com.google.protobuf.ByteString) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The name of the method containing the execution point represented by the\n-       * stack trace element\n+       * The name of the method containing the execution point represented by the\r\n+       * stack trace element\r\n        * </pre>\n        *\n        * <code>string method_name = 2;</code>\n        */\n       public Builder setMethodName(\n           java.lang.String value) {\n         if (value == null) {\n@@ -848,30 +850,30 @@\n   \n         methodName_ = value;\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The name of the method containing the execution point represented by the\n-       * stack trace element\n+       * The name of the method containing the execution point represented by the\r\n+       * stack trace element\r\n        * </pre>\n        *\n        * <code>string method_name = 2;</code>\n        */\n       public Builder clearMethodName() {\n         \n         methodName_ = getDefaultInstance().getMethodName();\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The name of the method containing the execution point represented by the\n-       * stack trace element\n+       * The name of the method containing the execution point represented by the\r\n+       * stack trace element\r\n        * </pre>\n        *\n        * <code>string method_name = 2;</code>\n        */\n       public Builder setMethodNameBytes(\n           com.google.protobuf.ByteString value) {\n         if (value == null) {\n@@ -883,16 +885,16 @@\n         onChanged();\n         return this;\n       }\n \n       private java.lang.Object fileName_ = \"\";\n       /**\n        * <pre>\n-       * The name of the file containing the execution point represented by the\n-       * stack trace element, or null if this information is unavailable.\n+       * The name of the file containing the execution point represented by the\r\n+       * stack trace element, or null if this information is unavailable.\r\n        * </pre>\n        *\n        * <code>string file_name = 3;</code>\n        */\n       public java.lang.String getFileName() {\n         java.lang.Object ref = fileName_;\n         if (!(ref instanceof java.lang.String)) {\n@@ -903,16 +905,16 @@\n           return s;\n         } else {\n           return (java.lang.String) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The name of the file containing the execution point represented by the\n-       * stack trace element, or null if this information is unavailable.\n+       * The name of the file containing the execution point represented by the\r\n+       * stack trace element, or null if this information is unavailable.\r\n        * </pre>\n        *\n        * <code>string file_name = 3;</code>\n        */\n       public com.google.protobuf.ByteString\n           getFileNameBytes() {\n         java.lang.Object ref = fileName_;\n@@ -924,16 +926,16 @@\n           return b;\n         } else {\n           return (com.google.protobuf.ByteString) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The name of the file containing the execution point represented by the\n-       * stack trace element, or null if this information is unavailable.\n+       * The name of the file containing the execution point represented by the\r\n+       * stack trace element, or null if this information is unavailable.\r\n        * </pre>\n        *\n        * <code>string file_name = 3;</code>\n        */\n       public Builder setFileName(\n           java.lang.String value) {\n         if (value == null) {\n@@ -942,30 +944,30 @@\n   \n         fileName_ = value;\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The name of the file containing the execution point represented by the\n-       * stack trace element, or null if this information is unavailable.\n+       * The name of the file containing the execution point represented by the\r\n+       * stack trace element, or null if this information is unavailable.\r\n        * </pre>\n        *\n        * <code>string file_name = 3;</code>\n        */\n       public Builder clearFileName() {\n         \n         fileName_ = getDefaultInstance().getFileName();\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The name of the file containing the execution point represented by the\n-       * stack trace element, or null if this information is unavailable.\n+       * The name of the file containing the execution point represented by the\r\n+       * stack trace element, or null if this information is unavailable.\r\n        * </pre>\n        *\n        * <code>string file_name = 3;</code>\n        */\n       public Builder setFileNameBytes(\n           com.google.protobuf.ByteString value) {\n         if (value == null) {\n@@ -977,44 +979,44 @@\n         onChanged();\n         return this;\n       }\n \n       private int lineNumber_ ;\n       /**\n        * <pre>\n-       * The line number of the source line containing the execution point represented\n-       * by this stack trace element, or a negative number if this information is\n-       * unavailable.\n+       * The line number of the source line containing the execution point represented\r\n+       * by this stack trace element, or a negative number if this information is\r\n+       * unavailable.\r\n        * </pre>\n        *\n        * <code>int32 line_number = 4;</code>\n        */\n       public int getLineNumber() {\n         return lineNumber_;\n       }\n       /**\n        * <pre>\n-       * The line number of the source line containing the execution point represented\n-       * by this stack trace element, or a negative number if this information is\n-       * unavailable.\n+       * The line number of the source line containing the execution point represented\r\n+       * by this stack trace element, or a negative number if this information is\r\n+       * unavailable.\r\n        * </pre>\n        *\n        * <code>int32 line_number = 4;</code>\n        */\n       public Builder setLineNumber(int value) {\n         \n         lineNumber_ = value;\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The line number of the source line containing the execution point represented\n-       * by this stack trace element, or a negative number if this information is\n-       * unavailable.\n+       * The line number of the source line containing the execution point represented\r\n+       * by this stack trace element, or a negative number if this information is\r\n+       * unavailable.\r\n        * </pre>\n        *\n        * <code>int32 line_number = 4;</code>\n        */\n       public Builder clearLineNumber() {\n         \n         lineNumber_ = 0;\n@@ -1076,125 +1078,126 @@\n \n   public interface ThrowableProtoOrBuilder extends\n       // @@protoc_insertion_point(interface_extends:org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto)\n       com.google.protobuf.MessageOrBuilder {\n \n     /**\n      * <pre>\n-     * The name of the class of the exception that was actually thrown. Downstream readers\n-     * of this message may or may not have the actual class available to initialize, so\n-     * this is just used to prefix the message of a generic exception type.\n+     * The name of the class of the exception that was actually thrown. Downstream readers\r\n+     * of this message may or may not have the actual class available to initialize, so\r\n+     * this is just used to prefix the message of a generic exception type.\r\n      * </pre>\n      *\n      * <code>string original_class_name = 1;</code>\n      */\n     java.lang.String getOriginalClassName();\n     /**\n      * <pre>\n-     * The name of the class of the exception that was actually thrown. Downstream readers\n-     * of this message may or may not have the actual class available to initialize, so\n-     * this is just used to prefix the message of a generic exception type.\n+     * The name of the class of the exception that was actually thrown. Downstream readers\r\n+     * of this message may or may not have the actual class available to initialize, so\r\n+     * this is just used to prefix the message of a generic exception type.\r\n      * </pre>\n      *\n      * <code>string original_class_name = 1;</code>\n      */\n     com.google.protobuf.ByteString\n         getOriginalClassNameBytes();\n \n     /**\n      * <pre>\n-     * The message of this throwable. Not filled if there is no message.\n+     * The message of this throwable. Not filled if there is no message.\r\n      * </pre>\n      *\n      * <code>string original_message = 2;</code>\n      */\n     java.lang.String getOriginalMessage();\n     /**\n      * <pre>\n-     * The message of this throwable. Not filled if there is no message.\n+     * The message of this throwable. Not filled if there is no message.\r\n      * </pre>\n      *\n      * <code>string original_message = 2;</code>\n      */\n     com.google.protobuf.ByteString\n         getOriginalMessageBytes();\n \n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     java.util.List<org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto> \n         getStackTraceList();\n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto getStackTrace(int index);\n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     int getStackTraceCount();\n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     java.util.List<? extends org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProtoOrBuilder> \n         getStackTraceOrBuilderList();\n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProtoOrBuilder getStackTraceOrBuilder(\n         int index);\n \n     /**\n      * <pre>\n-     * The cause of this Throwable. Not filled if there is no cause.\n+     * The cause of this Throwable. Not filled if there is no cause.\r\n      * </pre>\n      *\n      * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n      */\n     boolean hasCause();\n     /**\n      * <pre>\n-     * The cause of this Throwable. Not filled if there is no cause.\n+     * The cause of this Throwable. Not filled if there is no cause.\r\n      * </pre>\n      *\n      * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n      */\n     org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto getCause();\n     /**\n      * <pre>\n-     * The cause of this Throwable. Not filled if there is no cause.\n+     * The cause of this Throwable. Not filled if there is no cause.\r\n      * </pre>\n      *\n      * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n      */\n     org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProtoOrBuilder getCauseOrBuilder();\n   }\n   /**\n    * <pre>\n-   * An exception that was thrown by some code, based on the Java type of the same name.\n-   * See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html\n+   * An exception that was thrown by some code, based on the Java type of the same name.\r\n+   *\r\n+   * See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html\r\n    * </pre>\n    *\n    * Protobuf type {@code org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto}\n    */\n   public  static final class ThrowableProto extends\n       com.google.protobuf.GeneratedMessageV3 implements\n       // @@protoc_insertion_point(message_implements:org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto)\n@@ -1304,17 +1307,17 @@\n     }\n \n     private int bitField0_;\n     public static final int ORIGINAL_CLASS_NAME_FIELD_NUMBER = 1;\n     private volatile java.lang.Object originalClassName_;\n     /**\n      * <pre>\n-     * The name of the class of the exception that was actually thrown. Downstream readers\n-     * of this message may or may not have the actual class available to initialize, so\n-     * this is just used to prefix the message of a generic exception type.\n+     * The name of the class of the exception that was actually thrown. Downstream readers\r\n+     * of this message may or may not have the actual class available to initialize, so\r\n+     * this is just used to prefix the message of a generic exception type.\r\n      * </pre>\n      *\n      * <code>string original_class_name = 1;</code>\n      */\n     public java.lang.String getOriginalClassName() {\n       java.lang.Object ref = originalClassName_;\n       if (ref instanceof java.lang.String) {\n@@ -1325,17 +1328,17 @@\n         java.lang.String s = bs.toStringUtf8();\n         originalClassName_ = s;\n         return s;\n       }\n     }\n     /**\n      * <pre>\n-     * The name of the class of the exception that was actually thrown. Downstream readers\n-     * of this message may or may not have the actual class available to initialize, so\n-     * this is just used to prefix the message of a generic exception type.\n+     * The name of the class of the exception that was actually thrown. Downstream readers\r\n+     * of this message may or may not have the actual class available to initialize, so\r\n+     * this is just used to prefix the message of a generic exception type.\r\n      * </pre>\n      *\n      * <code>string original_class_name = 1;</code>\n      */\n     public com.google.protobuf.ByteString\n         getOriginalClassNameBytes() {\n       java.lang.Object ref = originalClassName_;\n@@ -1350,15 +1353,15 @@\n       }\n     }\n \n     public static final int ORIGINAL_MESSAGE_FIELD_NUMBER = 2;\n     private volatile java.lang.Object originalMessage_;\n     /**\n      * <pre>\n-     * The message of this throwable. Not filled if there is no message.\n+     * The message of this throwable. Not filled if there is no message.\r\n      * </pre>\n      *\n      * <code>string original_message = 2;</code>\n      */\n     public java.lang.String getOriginalMessage() {\n       java.lang.Object ref = originalMessage_;\n       if (ref instanceof java.lang.String) {\n@@ -1369,15 +1372,15 @@\n         java.lang.String s = bs.toStringUtf8();\n         originalMessage_ = s;\n         return s;\n       }\n     }\n     /**\n      * <pre>\n-     * The message of this throwable. Not filled if there is no message.\n+     * The message of this throwable. Not filled if there is no message.\r\n      * </pre>\n      *\n      * <code>string original_message = 2;</code>\n      */\n     public com.google.protobuf.ByteString\n         getOriginalMessageBytes() {\n       java.lang.Object ref = originalMessage_;\n@@ -1392,90 +1395,90 @@\n       }\n     }\n \n     public static final int STACK_TRACE_FIELD_NUMBER = 3;\n     private java.util.List<org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto> stackTrace_;\n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     public java.util.List<org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto> getStackTraceList() {\n       return stackTrace_;\n     }\n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     public java.util.List<? extends org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProtoOrBuilder> \n         getStackTraceOrBuilderList() {\n       return stackTrace_;\n     }\n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     public int getStackTraceCount() {\n       return stackTrace_.size();\n     }\n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto getStackTrace(int index) {\n       return stackTrace_.get(index);\n     }\n     /**\n      * <pre>\n-     * The stack trace of this Throwable.\n+     * The stack trace of this Throwable.\r\n      * </pre>\n      *\n      * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n      */\n     public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProtoOrBuilder getStackTraceOrBuilder(\n         int index) {\n       return stackTrace_.get(index);\n     }\n \n     public static final int CAUSE_FIELD_NUMBER = 4;\n     private org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto cause_;\n     /**\n      * <pre>\n-     * The cause of this Throwable. Not filled if there is no cause.\n+     * The cause of this Throwable. Not filled if there is no cause.\r\n      * </pre>\n      *\n      * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n      */\n     public boolean hasCause() {\n       return cause_ != null;\n     }\n     /**\n      * <pre>\n-     * The cause of this Throwable. Not filled if there is no cause.\n+     * The cause of this Throwable. Not filled if there is no cause.\r\n      * </pre>\n      *\n      * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n      */\n     public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto getCause() {\n       return cause_ == null ? org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto.getDefaultInstance() : cause_;\n     }\n     /**\n      * <pre>\n-     * The cause of this Throwable. Not filled if there is no cause.\n+     * The cause of this Throwable. Not filled if there is no cause.\r\n      * </pre>\n      *\n      * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n      */\n     public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProtoOrBuilder getCauseOrBuilder() {\n       return getCause();\n     }\n@@ -1671,16 +1674,17 @@\n     protected Builder newBuilderForType(\n         com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {\n       Builder builder = new Builder(parent);\n       return builder;\n     }\n     /**\n      * <pre>\n-     * An exception that was thrown by some code, based on the Java type of the same name.\n-     * See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html\n+     * An exception that was thrown by some code, based on the Java type of the same name.\r\n+     *\r\n+     * See: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Throwable.html\r\n      * </pre>\n      *\n      * Protobuf type {@code org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto}\n      */\n     public static final class Builder extends\n         com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements\n         // @@protoc_insertion_point(builder_implements:org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto)\n@@ -1892,17 +1896,17 @@\n         return this;\n       }\n       private int bitField0_;\n \n       private java.lang.Object originalClassName_ = \"\";\n       /**\n        * <pre>\n-       * The name of the class of the exception that was actually thrown. Downstream readers\n-       * of this message may or may not have the actual class available to initialize, so\n-       * this is just used to prefix the message of a generic exception type.\n+       * The name of the class of the exception that was actually thrown. Downstream readers\r\n+       * of this message may or may not have the actual class available to initialize, so\r\n+       * this is just used to prefix the message of a generic exception type.\r\n        * </pre>\n        *\n        * <code>string original_class_name = 1;</code>\n        */\n       public java.lang.String getOriginalClassName() {\n         java.lang.Object ref = originalClassName_;\n         if (!(ref instanceof java.lang.String)) {\n@@ -1913,17 +1917,17 @@\n           return s;\n         } else {\n           return (java.lang.String) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The name of the class of the exception that was actually thrown. Downstream readers\n-       * of this message may or may not have the actual class available to initialize, so\n-       * this is just used to prefix the message of a generic exception type.\n+       * The name of the class of the exception that was actually thrown. Downstream readers\r\n+       * of this message may or may not have the actual class available to initialize, so\r\n+       * this is just used to prefix the message of a generic exception type.\r\n        * </pre>\n        *\n        * <code>string original_class_name = 1;</code>\n        */\n       public com.google.protobuf.ByteString\n           getOriginalClassNameBytes() {\n         java.lang.Object ref = originalClassName_;\n@@ -1935,17 +1939,17 @@\n           return b;\n         } else {\n           return (com.google.protobuf.ByteString) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The name of the class of the exception that was actually thrown. Downstream readers\n-       * of this message may or may not have the actual class available to initialize, so\n-       * this is just used to prefix the message of a generic exception type.\n+       * The name of the class of the exception that was actually thrown. Downstream readers\r\n+       * of this message may or may not have the actual class available to initialize, so\r\n+       * this is just used to prefix the message of a generic exception type.\r\n        * </pre>\n        *\n        * <code>string original_class_name = 1;</code>\n        */\n       public Builder setOriginalClassName(\n           java.lang.String value) {\n         if (value == null) {\n@@ -1954,32 +1958,32 @@\n   \n         originalClassName_ = value;\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The name of the class of the exception that was actually thrown. Downstream readers\n-       * of this message may or may not have the actual class available to initialize, so\n-       * this is just used to prefix the message of a generic exception type.\n+       * The name of the class of the exception that was actually thrown. Downstream readers\r\n+       * of this message may or may not have the actual class available to initialize, so\r\n+       * this is just used to prefix the message of a generic exception type.\r\n        * </pre>\n        *\n        * <code>string original_class_name = 1;</code>\n        */\n       public Builder clearOriginalClassName() {\n         \n         originalClassName_ = getDefaultInstance().getOriginalClassName();\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The name of the class of the exception that was actually thrown. Downstream readers\n-       * of this message may or may not have the actual class available to initialize, so\n-       * this is just used to prefix the message of a generic exception type.\n+       * The name of the class of the exception that was actually thrown. Downstream readers\r\n+       * of this message may or may not have the actual class available to initialize, so\r\n+       * this is just used to prefix the message of a generic exception type.\r\n        * </pre>\n        *\n        * <code>string original_class_name = 1;</code>\n        */\n       public Builder setOriginalClassNameBytes(\n           com.google.protobuf.ByteString value) {\n         if (value == null) {\n@@ -1991,15 +1995,15 @@\n         onChanged();\n         return this;\n       }\n \n       private java.lang.Object originalMessage_ = \"\";\n       /**\n        * <pre>\n-       * The message of this throwable. Not filled if there is no message.\n+       * The message of this throwable. Not filled if there is no message.\r\n        * </pre>\n        *\n        * <code>string original_message = 2;</code>\n        */\n       public java.lang.String getOriginalMessage() {\n         java.lang.Object ref = originalMessage_;\n         if (!(ref instanceof java.lang.String)) {\n@@ -2010,15 +2014,15 @@\n           return s;\n         } else {\n           return (java.lang.String) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The message of this throwable. Not filled if there is no message.\n+       * The message of this throwable. Not filled if there is no message.\r\n        * </pre>\n        *\n        * <code>string original_message = 2;</code>\n        */\n       public com.google.protobuf.ByteString\n           getOriginalMessageBytes() {\n         java.lang.Object ref = originalMessage_;\n@@ -2030,15 +2034,15 @@\n           return b;\n         } else {\n           return (com.google.protobuf.ByteString) ref;\n         }\n       }\n       /**\n        * <pre>\n-       * The message of this throwable. Not filled if there is no message.\n+       * The message of this throwable. Not filled if there is no message.\r\n        * </pre>\n        *\n        * <code>string original_message = 2;</code>\n        */\n       public Builder setOriginalMessage(\n           java.lang.String value) {\n         if (value == null) {\n@@ -2047,28 +2051,28 @@\n   \n         originalMessage_ = value;\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The message of this throwable. Not filled if there is no message.\n+       * The message of this throwable. Not filled if there is no message.\r\n        * </pre>\n        *\n        * <code>string original_message = 2;</code>\n        */\n       public Builder clearOriginalMessage() {\n         \n         originalMessage_ = getDefaultInstance().getOriginalMessage();\n         onChanged();\n         return this;\n       }\n       /**\n        * <pre>\n-       * The message of this throwable. Not filled if there is no message.\n+       * The message of this throwable. Not filled if there is no message.\r\n        * </pre>\n        *\n        * <code>string original_message = 2;</code>\n        */\n       public Builder setOriginalMessageBytes(\n           com.google.protobuf.ByteString value) {\n         if (value == null) {\n@@ -2091,57 +2095,57 @@\n       }\n \n       private com.google.protobuf.RepeatedFieldBuilderV3<\n           org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.Builder, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProtoOrBuilder> stackTraceBuilder_;\n \n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public java.util.List<org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto> getStackTraceList() {\n         if (stackTraceBuilder_ == null) {\n           return java.util.Collections.unmodifiableList(stackTrace_);\n         } else {\n           return stackTraceBuilder_.getMessageList();\n         }\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public int getStackTraceCount() {\n         if (stackTraceBuilder_ == null) {\n           return stackTrace_.size();\n         } else {\n           return stackTraceBuilder_.getCount();\n         }\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto getStackTrace(int index) {\n         if (stackTraceBuilder_ == null) {\n           return stackTrace_.get(index);\n         } else {\n           return stackTraceBuilder_.getMessage(index);\n         }\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public Builder setStackTrace(\n           int index, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto value) {\n         if (stackTraceBuilder_ == null) {\n@@ -2154,15 +2158,15 @@\n         } else {\n           stackTraceBuilder_.setMessage(index, value);\n         }\n         return this;\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public Builder setStackTrace(\n           int index, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.Builder builderForValue) {\n         if (stackTraceBuilder_ == null) {\n@@ -2172,15 +2176,15 @@\n         } else {\n           stackTraceBuilder_.setMessage(index, builderForValue.build());\n         }\n         return this;\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public Builder addStackTrace(org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto value) {\n         if (stackTraceBuilder_ == null) {\n           if (value == null) {\n@@ -2192,15 +2196,15 @@\n         } else {\n           stackTraceBuilder_.addMessage(value);\n         }\n         return this;\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public Builder addStackTrace(\n           int index, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto value) {\n         if (stackTraceBuilder_ == null) {\n@@ -2213,15 +2217,15 @@\n         } else {\n           stackTraceBuilder_.addMessage(index, value);\n         }\n         return this;\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public Builder addStackTrace(\n           org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.Builder builderForValue) {\n         if (stackTraceBuilder_ == null) {\n@@ -2231,15 +2235,15 @@\n         } else {\n           stackTraceBuilder_.addMessage(builderForValue.build());\n         }\n         return this;\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public Builder addStackTrace(\n           int index, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.Builder builderForValue) {\n         if (stackTraceBuilder_ == null) {\n@@ -2249,15 +2253,15 @@\n         } else {\n           stackTraceBuilder_.addMessage(index, builderForValue.build());\n         }\n         return this;\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public Builder addAllStackTrace(\n           java.lang.Iterable<? extends org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto> values) {\n         if (stackTraceBuilder_ == null) {\n@@ -2268,15 +2272,15 @@\n         } else {\n           stackTraceBuilder_.addAllMessages(values);\n         }\n         return this;\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public Builder clearStackTrace() {\n         if (stackTraceBuilder_ == null) {\n           stackTrace_ = java.util.Collections.emptyList();\n@@ -2285,15 +2289,15 @@\n         } else {\n           stackTraceBuilder_.clear();\n         }\n         return this;\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public Builder removeStackTrace(int index) {\n         if (stackTraceBuilder_ == null) {\n           ensureStackTraceIsMutable();\n@@ -2302,78 +2306,78 @@\n         } else {\n           stackTraceBuilder_.remove(index);\n         }\n         return this;\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.Builder getStackTraceBuilder(\n           int index) {\n         return getStackTraceFieldBuilder().getBuilder(index);\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProtoOrBuilder getStackTraceOrBuilder(\n           int index) {\n         if (stackTraceBuilder_ == null) {\n           return stackTrace_.get(index);  } else {\n           return stackTraceBuilder_.getMessageOrBuilder(index);\n         }\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public java.util.List<? extends org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProtoOrBuilder> \n            getStackTraceOrBuilderList() {\n         if (stackTraceBuilder_ != null) {\n           return stackTraceBuilder_.getMessageOrBuilderList();\n         } else {\n           return java.util.Collections.unmodifiableList(stackTrace_);\n         }\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.Builder addStackTraceBuilder() {\n         return getStackTraceFieldBuilder().addBuilder(\n             org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.getDefaultInstance());\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.Builder addStackTraceBuilder(\n           int index) {\n         return getStackTraceFieldBuilder().addBuilder(\n             index, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.getDefaultInstance());\n       }\n       /**\n        * <pre>\n-       * The stack trace of this Throwable.\n+       * The stack trace of this Throwable.\r\n        * </pre>\n        *\n        * <code>repeated .org.apache.dubbo.common.serialize.protobuf.support.wrapper.StackTraceElementProto stack_trace = 3;</code>\n        */\n       public java.util.List<org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.StackTraceElementProto.Builder> \n            getStackTraceBuilderList() {\n         return getStackTraceFieldBuilder().getBuilderList();\n@@ -2394,39 +2398,39 @@\n       }\n \n       private org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto cause_;\n       private com.google.protobuf.SingleFieldBuilderV3<\n           org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto.Builder, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProtoOrBuilder> causeBuilder_;\n       /**\n        * <pre>\n-       * The cause of this Throwable. Not filled if there is no cause.\n+       * The cause of this Throwable. Not filled if there is no cause.\r\n        * </pre>\n        *\n        * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n        */\n       public boolean hasCause() {\n         return causeBuilder_ != null || cause_ != null;\n       }\n       /**\n        * <pre>\n-       * The cause of this Throwable. Not filled if there is no cause.\n+       * The cause of this Throwable. Not filled if there is no cause.\r\n        * </pre>\n        *\n        * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n        */\n       public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto getCause() {\n         if (causeBuilder_ == null) {\n           return cause_ == null ? org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto.getDefaultInstance() : cause_;\n         } else {\n           return causeBuilder_.getMessage();\n         }\n       }\n       /**\n        * <pre>\n-       * The cause of this Throwable. Not filled if there is no cause.\n+       * The cause of this Throwable. Not filled if there is no cause.\r\n        * </pre>\n        *\n        * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n        */\n       public Builder setCause(org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto value) {\n         if (causeBuilder_ == null) {\n           if (value == null) {\n@@ -2438,15 +2442,15 @@\n           causeBuilder_.setMessage(value);\n         }\n \n         return this;\n       }\n       /**\n        * <pre>\n-       * The cause of this Throwable. Not filled if there is no cause.\n+       * The cause of this Throwable. Not filled if there is no cause.\r\n        * </pre>\n        *\n        * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n        */\n       public Builder setCause(\n           org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto.Builder builderForValue) {\n         if (causeBuilder_ == null) {\n@@ -2456,15 +2460,15 @@\n           causeBuilder_.setMessage(builderForValue.build());\n         }\n \n         return this;\n       }\n       /**\n        * <pre>\n-       * The cause of this Throwable. Not filled if there is no cause.\n+       * The cause of this Throwable. Not filled if there is no cause.\r\n        * </pre>\n        *\n        * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n        */\n       public Builder mergeCause(org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto value) {\n         if (causeBuilder_ == null) {\n           if (cause_ != null) {\n@@ -2478,15 +2482,15 @@\n           causeBuilder_.mergeFrom(value);\n         }\n \n         return this;\n       }\n       /**\n        * <pre>\n-       * The cause of this Throwable. Not filled if there is no cause.\n+       * The cause of this Throwable. Not filled if there is no cause.\r\n        * </pre>\n        *\n        * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n        */\n       public Builder clearCause() {\n         if (causeBuilder_ == null) {\n           cause_ = null;\n@@ -2496,42 +2500,42 @@\n           causeBuilder_ = null;\n         }\n \n         return this;\n       }\n       /**\n        * <pre>\n-       * The cause of this Throwable. Not filled if there is no cause.\n+       * The cause of this Throwable. Not filled if there is no cause.\r\n        * </pre>\n        *\n        * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n        */\n       public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto.Builder getCauseBuilder() {\n         \n         onChanged();\n         return getCauseFieldBuilder().getBuilder();\n       }\n       /**\n        * <pre>\n-       * The cause of this Throwable. Not filled if there is no cause.\n+       * The cause of this Throwable. Not filled if there is no cause.\r\n        * </pre>\n        *\n        * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n        */\n       public org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProtoOrBuilder getCauseOrBuilder() {\n         if (causeBuilder_ != null) {\n           return causeBuilder_.getMessageOrBuilder();\n         } else {\n           return cause_ == null ?\n               org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto.getDefaultInstance() : cause_;\n         }\n       }\n       /**\n        * <pre>\n-       * The cause of this Throwable. Not filled if there is no cause.\n+       * The cause of this Throwable. Not filled if there is no cause.\r\n        * </pre>\n        *\n        * <code>.org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowableProto cause = 4;</code>\n        */\n       private com.google.protobuf.SingleFieldBuilderV3<\n           org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProto.Builder, org.apache.dubbo.common.serialize.protobuf.support.wrapper.ThrowablePB.ThrowableProtoOrBuilder> \n           getCauseFieldBuilder() {\n"}, {"source1": "org/apache/dubbo/configcenter/support/zookeeper/CacheListener.java", "source2": "org/apache/dubbo/configcenter/support/zookeeper/CacheListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,134 +1,134 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.configcenter.support.zookeeper;\n-\n-import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\n-import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.zookeeper.DataListener;\n-import org.apache.dubbo.remoting.zookeeper.EventType;\n-\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.CopyOnWriteArraySet;\n-import java.util.concurrent.CountDownLatch;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DOT_SEPARATOR;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\n-\n-/**\n- *\n- */\n-\n-public class CacheListener implements DataListener {\n-    private static final int MIN_PATH_DEPTH = 5;\n-\n-    private Map<String, Set<ConfigurationListener>> keyListeners = new ConcurrentHashMap<>();\n-    private CountDownLatch initializedLatch;\n-    private String rootPath;\n-\n-    public CacheListener(String rootPath, CountDownLatch initializedLatch) {\n-        this.rootPath = rootPath;\n-        this.initializedLatch = initializedLatch;\n-    }\n-\n-    public void addListener(String key, ConfigurationListener configurationListener) {\n-        Set<ConfigurationListener> listeners = this.keyListeners.computeIfAbsent(key, k -> new CopyOnWriteArraySet<>());\n-        listeners.add(configurationListener);\n-    }\n-\n-    public void removeListener(String key, ConfigurationListener configurationListener) {\n-        Set<ConfigurationListener> listeners = this.keyListeners.get(key);\n-        if (listeners != null) {\n-            listeners.remove(configurationListener);\n-        }\n-    }\n-\n-    /**\n-     * This is used to convert a configuration nodePath into a key\n-     * TODO doc\n-     *\n-     * @param path\n-     * @return key (nodePath less the config root path)\n-     */\n-    private String pathToKey(String path) {\n-        if (StringUtils.isEmpty(path)) {\n-            return path;\n-        }\n-        String groupKey = path.replace(rootPath + PATH_SEPARATOR, \"\").replaceAll(PATH_SEPARATOR, DOT_SEPARATOR);\n-        return groupKey.substring(groupKey.indexOf(DOT_SEPARATOR) + 1);\n-    }\n-\n-    private String getGroup(String path) {\n-        if (!StringUtils.isEmpty(path)) {\n-            int beginIndex = path.indexOf(rootPath + PATH_SEPARATOR);\n-            if (beginIndex > -1) {\n-                int endIndex = path.indexOf(PATH_SEPARATOR, beginIndex);\n-                if (endIndex > beginIndex) {\n-                    return path.substring(beginIndex, endIndex);\n-                }\n-            }\n-        }\n-        return path;\n-    }\n-\n-\n-    @Override\n-    public void dataChanged(String path, Object value, EventType eventType) {\n-        if (eventType == null) {\n-            return;\n-        }\n-\n-        if (eventType == EventType.INITIALIZED) {\n-            initializedLatch.countDown();\n-            return;\n-        }\n-\n-        if (path == null || (value == null && eventType != EventType.NodeDeleted)) {\n-            return;\n-        }\n-\n-        // TODO We only care the changes happened on a specific path level, for example\n-        //  /dubbo/config/dubbo/configurators, other config changes not in this level will be ignored,\n-        if (path.split(\"/\").length >= MIN_PATH_DEPTH) {\n-            String key = pathToKey(path);\n-            ConfigChangeType changeType;\n-            switch (eventType) {\n-                case NodeCreated:\n-                    changeType = ConfigChangeType.ADDED;\n-                    break;\n-                case NodeDeleted:\n-                    changeType = ConfigChangeType.DELETED;\n-                    break;\n-                case NodeDataChanged:\n-                    changeType = ConfigChangeType.MODIFIED;\n-                    break;\n-                default:\n-                    return;\n-            }\n-\n-            ConfigChangedEvent configChangeEvent = new ConfigChangedEvent(key, getGroup(path), (String) value, changeType);\n-            Set<ConfigurationListener> listeners = keyListeners.get(path);\n-            if (CollectionUtils.isNotEmpty(listeners)) {\n-                listeners.forEach(listener -> listener.process(configChangeEvent));\n-            }\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.configcenter.support.zookeeper;\r\n+\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.zookeeper.DataListener;\r\n+import org.apache.dubbo.remoting.zookeeper.EventType;\r\n+\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.CopyOnWriteArraySet;\r\n+import java.util.concurrent.CountDownLatch;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DOT_SEPARATOR;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+\r\n+public class CacheListener implements DataListener {\r\n+    private static final int MIN_PATH_DEPTH = 5;\r\n+\r\n+    private Map<String, Set<ConfigurationListener>> keyListeners = new ConcurrentHashMap<>();\r\n+    private CountDownLatch initializedLatch;\r\n+    private String rootPath;\r\n+\r\n+    public CacheListener(String rootPath, CountDownLatch initializedLatch) {\r\n+        this.rootPath = rootPath;\r\n+        this.initializedLatch = initializedLatch;\r\n+    }\r\n+\r\n+    public void addListener(String key, ConfigurationListener configurationListener) {\r\n+        Set<ConfigurationListener> listeners = this.keyListeners.computeIfAbsent(key, k -> new CopyOnWriteArraySet<>());\r\n+        listeners.add(configurationListener);\r\n+    }\r\n+\r\n+    public void removeListener(String key, ConfigurationListener configurationListener) {\r\n+        Set<ConfigurationListener> listeners = this.keyListeners.get(key);\r\n+        if (listeners != null) {\r\n+            listeners.remove(configurationListener);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * This is used to convert a configuration nodePath into a key\r\n+     * TODO doc\r\n+     *\r\n+     * @param path\r\n+     * @return key (nodePath less the config root path)\r\n+     */\r\n+    private String pathToKey(String path) {\r\n+        if (StringUtils.isEmpty(path)) {\r\n+            return path;\r\n+        }\r\n+        String groupKey = path.replace(rootPath + PATH_SEPARATOR, \"\").replaceAll(PATH_SEPARATOR, DOT_SEPARATOR);\r\n+        return groupKey.substring(groupKey.indexOf(DOT_SEPARATOR) + 1);\r\n+    }\r\n+\r\n+    private String getGroup(String path) {\r\n+        if (!StringUtils.isEmpty(path)) {\r\n+            int beginIndex = path.indexOf(rootPath + PATH_SEPARATOR);\r\n+            if (beginIndex > -1) {\r\n+                int endIndex = path.indexOf(PATH_SEPARATOR, beginIndex);\r\n+                if (endIndex > beginIndex) {\r\n+                    return path.substring(beginIndex, endIndex);\r\n+                }\r\n+            }\r\n+        }\r\n+        return path;\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public void dataChanged(String path, Object value, EventType eventType) {\r\n+        if (eventType == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        if (eventType == EventType.INITIALIZED) {\r\n+            initializedLatch.countDown();\r\n+            return;\r\n+        }\r\n+\r\n+        if (path == null || (value == null && eventType != EventType.NodeDeleted)) {\r\n+            return;\r\n+        }\r\n+\r\n+        // TODO We only care the changes happened on a specific path level, for example\r\n+        //  /dubbo/config/dubbo/configurators, other config changes not in this level will be ignored,\r\n+        if (path.split(\"/\").length >= MIN_PATH_DEPTH) {\r\n+            String key = pathToKey(path);\r\n+            ConfigChangeType changeType;\r\n+            switch (eventType) {\r\n+                case NodeCreated:\r\n+                    changeType = ConfigChangeType.ADDED;\r\n+                    break;\r\n+                case NodeDeleted:\r\n+                    changeType = ConfigChangeType.DELETED;\r\n+                    break;\r\n+                case NodeDataChanged:\r\n+                    changeType = ConfigChangeType.MODIFIED;\r\n+                    break;\r\n+                default:\r\n+                    return;\r\n+            }\r\n+\r\n+            ConfigChangedEvent configChangeEvent = new ConfigChangedEvent(key, getGroup(path), (String) value, changeType);\r\n+            Set<ConfigurationListener> listeners = keyListeners.get(path);\r\n+            if (CollectionUtils.isNotEmpty(listeners)) {\r\n+                listeners.forEach(listener -> listener.process(configChangeEvent));\r\n+            }\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java", "source2": "org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfiguration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,116 +1,116 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.configcenter.support.zookeeper;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\n-import org.apache.dubbo.common.config.configcenter.TreePathDynamicConfiguration;\n-import org.apache.dubbo.common.utils.NamedThreadFactory;\n-import org.apache.dubbo.remoting.zookeeper.ZookeeperClient;\n-import org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter;\n-\n-import java.util.Collection;\n-import java.util.concurrent.CountDownLatch;\n-import java.util.concurrent.Executor;\n-import java.util.concurrent.Executors;\n-import java.util.concurrent.TimeUnit;\n-\n-/**\n- *\n- */\n-public class ZookeeperDynamicConfiguration extends TreePathDynamicConfiguration {\n-\n-    private Executor executor;\n-    // The final root path would be: /configRootPath/\"config\"\n-    private String rootPath;\n-    private final ZookeeperClient zkClient;\n-    private CountDownLatch initializedLatch;\n-\n-    private CacheListener cacheListener;\n-    private URL url;\n-\n-\n-    ZookeeperDynamicConfiguration(URL url, ZookeeperTransporter zookeeperTransporter) {\n-        super(url);\n-        this.url = url;\n-        rootPath = getRootPath(url);\n-\n-        initializedLatch = new CountDownLatch(1);\n-        this.cacheListener = new CacheListener(rootPath, initializedLatch);\n-        this.executor = Executors.newFixedThreadPool(1, new NamedThreadFactory(this.getClass().getSimpleName(), true));\n-\n-        zkClient = zookeeperTransporter.connect(url);\n-        zkClient.addDataListener(rootPath, cacheListener, executor);\n-        try {\n-            // Wait for connection\n-            long timeout = url.getParameter(\"init.timeout\", 5000);\n-            boolean isCountDown = this.initializedLatch.await(timeout, TimeUnit.MILLISECONDS);\n-            if (!isCountDown) {\n-                throw new IllegalStateException(\"Failed to receive INITIALIZED event from zookeeper, pls. check if url \"\n-                        + url + \" is correct\");\n-            }\n-        } catch (InterruptedException e) {\n-            logger.warn(\"Failed to build local cache for config center (zookeeper).\" + url);\n-        }\n-    }\n-\n-    /**\n-     * @param key e.g., {service}.configurators, {service}.tagrouters, {group}.dubbo.properties\n-     * @return\n-     */\n-    @Override\n-    public String getInternalProperty(String key) {\n-        return zkClient.getContent(buildPathKey(\"\",key));\n-    }\n-\n-    @Override\n-    protected void doClose() throws Exception {\n-        zkClient.close();\n-    }\n-\n-    @Override\n-    protected boolean doPublishConfig(String pathKey, String content) throws Exception {\n-        zkClient.create(pathKey, content, false);\n-        return true;\n-    }\n-\n-    @Override\n-    protected String doGetConfig(String pathKey) throws Exception {\n-        return zkClient.getContent(pathKey);\n-    }\n-\n-    @Override\n-    protected boolean doRemoveConfig(String pathKey) throws Exception {\n-        zkClient.delete(pathKey);\n-        return true;\n-    }\n-\n-    @Override\n-    protected Collection<String> doGetConfigKeys(String groupPath) {\n-        return zkClient.getChildren(groupPath);\n-    }\n-\n-    @Override\n-    protected void doAddListener(String pathKey, ConfigurationListener listener) {\n-        cacheListener.addListener(pathKey, listener);\n-    }\n-\n-    @Override\n-    protected void doRemoveListener(String pathKey, ConfigurationListener listener) {\n-        cacheListener.removeListener(pathKey, listener);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.configcenter.support.zookeeper;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\r\n+import org.apache.dubbo.common.config.configcenter.TreePathDynamicConfiguration;\r\n+import org.apache.dubbo.common.utils.NamedThreadFactory;\r\n+import org.apache.dubbo.remoting.zookeeper.ZookeeperClient;\r\n+import org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.concurrent.CountDownLatch;\r\n+import java.util.concurrent.Executor;\r\n+import java.util.concurrent.Executors;\r\n+import java.util.concurrent.TimeUnit;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+public class ZookeeperDynamicConfiguration extends TreePathDynamicConfiguration {\r\n+\r\n+    private Executor executor;\r\n+    // The final root path would be: /configRootPath/\"config\"\r\n+    private String rootPath;\r\n+    private final ZookeeperClient zkClient;\r\n+    private CountDownLatch initializedLatch;\r\n+\r\n+    private CacheListener cacheListener;\r\n+    private URL url;\r\n+\r\n+\r\n+    ZookeeperDynamicConfiguration(URL url, ZookeeperTransporter zookeeperTransporter) {\r\n+        super(url);\r\n+        this.url = url;\r\n+        rootPath = getRootPath(url);\r\n+\r\n+        initializedLatch = new CountDownLatch(1);\r\n+        this.cacheListener = new CacheListener(rootPath, initializedLatch);\r\n+        this.executor = Executors.newFixedThreadPool(1, new NamedThreadFactory(this.getClass().getSimpleName(), true));\r\n+\r\n+        zkClient = zookeeperTransporter.connect(url);\r\n+        zkClient.addDataListener(rootPath, cacheListener, executor);\r\n+        try {\r\n+            // Wait for connection\r\n+            long timeout = url.getParameter(\"init.timeout\", 5000);\r\n+            boolean isCountDown = this.initializedLatch.await(timeout, TimeUnit.MILLISECONDS);\r\n+            if (!isCountDown) {\r\n+                throw new IllegalStateException(\"Failed to receive INITIALIZED event from zookeeper, pls. check if url \"\r\n+                        + url + \" is correct\");\r\n+            }\r\n+        } catch (InterruptedException e) {\r\n+            logger.warn(\"Failed to build local cache for config center (zookeeper).\" + url);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * @param key e.g., {service}.configurators, {service}.tagrouters, {group}.dubbo.properties\r\n+     * @return\r\n+     */\r\n+    @Override\r\n+    public String getInternalProperty(String key) {\r\n+        return zkClient.getContent(buildPathKey(\"\",key));\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doClose() throws Exception {\r\n+        zkClient.close();\r\n+    }\r\n+\r\n+    @Override\r\n+    protected boolean doPublishConfig(String pathKey, String content) throws Exception {\r\n+        zkClient.create(pathKey, content, false);\r\n+        return true;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String doGetConfig(String pathKey) throws Exception {\r\n+        return zkClient.getContent(pathKey);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected boolean doRemoveConfig(String pathKey) throws Exception {\r\n+        zkClient.delete(pathKey);\r\n+        return true;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Collection<String> doGetConfigKeys(String groupPath) {\r\n+        return zkClient.getChildren(groupPath);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doAddListener(String pathKey, ConfigurationListener listener) {\r\n+        cacheListener.addListener(pathKey, listener);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doRemoveListener(String pathKey, ConfigurationListener listener) {\r\n+        cacheListener.removeListener(pathKey, listener);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfigurationFactory.java", "source2": "org/apache/dubbo/configcenter/support/zookeeper/ZookeeperDynamicConfigurationFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,39 +1,39 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.configcenter.support.zookeeper;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-import org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter;\n-\n-/**\n- *\n- */\n-public class ZookeeperDynamicConfigurationFactory extends AbstractDynamicConfigurationFactory {\n-\n-    private ZookeeperTransporter zookeeperTransporter;\n-\n-    public void setZookeeperTransporter(ZookeeperTransporter zookeeperTransporter) {\n-        this.zookeeperTransporter = zookeeperTransporter;\n-    }\n-\n-    @Override\n-    protected DynamicConfiguration createDynamicConfiguration(URL url) {\n-        return new ZookeeperDynamicConfiguration(url, zookeeperTransporter);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.configcenter.support.zookeeper;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+import org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+public class ZookeeperDynamicConfigurationFactory extends AbstractDynamicConfigurationFactory {\r\n+\r\n+    private ZookeeperTransporter zookeeperTransporter;\r\n+\r\n+    public void setZookeeperTransporter(ZookeeperTransporter zookeeperTransporter) {\r\n+        this.zookeeperTransporter = zookeeperTransporter;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected DynamicConfiguration createDynamicConfiguration(URL url) {\r\n+        return new ZookeeperDynamicConfiguration(url, zookeeperTransporter);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfiguration.java", "source2": "org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfiguration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,258 +1,258 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.configcenter.support.apollo;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\n-import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import com.ctrip.framework.apollo.Config;\n-import com.ctrip.framework.apollo.ConfigChangeListener;\n-import com.ctrip.framework.apollo.ConfigFile;\n-import com.ctrip.framework.apollo.ConfigService;\n-import com.ctrip.framework.apollo.core.enums.ConfigFileFormat;\n-import com.ctrip.framework.apollo.enums.ConfigSourceType;\n-import com.ctrip.framework.apollo.enums.PropertyChangeType;\n-import com.ctrip.framework.apollo.model.ConfigChange;\n-\n-import java.util.Arrays;\n-import java.util.Collections;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-import java.util.concurrent.CopyOnWriteArraySet;\n-import java.util.stream.Collectors;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.CONFIG_NAMESPACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_VALUE;\n-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.CHECK_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-\n-/**\n- * Apollo implementation, https://github.com/ctripcorp/apollo\n- *\n- * Apollo will be used for management of both governance rules and .properties files, by default, these two different\n- * kinds of data share the same namespace 'dubbo'. To gain better performance, we recommend separate them by giving\n- * namespace and group different values, for example:\n- *\n- * <dubbo:config-center namespace=\"governance\" group=\"dubbo\" />, 'dubbo=governance' is for governance rules while\n- * 'group=dubbo' is for properties files.\n- *\n- * Please see http://dubbo.apache.org/zh-cn/docs/user/configuration/config-center.html for details.\n- */\n-public class ApolloDynamicConfiguration implements DynamicConfiguration {\n-    private static final Logger logger = LoggerFactory.getLogger(ApolloDynamicConfiguration.class);\n-    private static final String APOLLO_ENV_KEY = \"env\";\n-    private static final String APOLLO_ADDR_KEY = \"apollo.meta\";\n-    private static final String APOLLO_CLUSTER_KEY = \"apollo.cluster\";\n-    private static final String APOLLO_PROTOCOL_PREFIX = \"http://\";\n-    private static final String APOLLO_APPLICATION_KEY = \"application\";\n-    private static final String APOLLO_APPID_KEY = \"app.id\";\n-\n-    private URL url;\n-    private Config dubboConfig;\n-    private ConfigFile dubboConfigFile;\n-    private ConcurrentMap<String, ApolloListener> listeners = new ConcurrentHashMap<>();\n-\n-    ApolloDynamicConfiguration(URL url) {\n-        this.url = url;\n-        // Instead of using Dubbo's configuration, I would suggest use the original configuration method Apollo provides.\n-        String configEnv = url.getParameter(APOLLO_ENV_KEY);\n-        String configAddr = getAddressWithProtocolPrefix(url);\n-        String configCluster = url.getParameter(CLUSTER_KEY);\n-        String configAppId = url.getParameter(APOLLO_APPID_KEY);\n-        if (StringUtils.isEmpty(System.getProperty(APOLLO_ENV_KEY)) && configEnv != null) {\n-            System.setProperty(APOLLO_ENV_KEY, configEnv);\n-        }\n-        if (StringUtils.isEmpty(System.getProperty(APOLLO_ADDR_KEY)) && !ANYHOST_VALUE.equals(url.getHost())) {\n-            System.setProperty(APOLLO_ADDR_KEY, configAddr);\n-        }\n-        if (StringUtils.isEmpty(System.getProperty(APOLLO_CLUSTER_KEY)) && configCluster != null) {\n-            System.setProperty(APOLLO_CLUSTER_KEY, configCluster);\n-        }\n-        if (StringUtils.isEmpty(System.getProperty(APOLLO_APPID_KEY)) && configAppId != null) {\n-            System.setProperty(APOLLO_APPID_KEY, configAppId);\n-        }\n-\n-        String namespace = url.getParameter(CONFIG_NAMESPACE_KEY, DEFAULT_GROUP);\n-        String apolloNamespace = StringUtils.isEmpty(namespace) ? url.getParameter(GROUP_KEY, DEFAULT_GROUP) : namespace;\n-        dubboConfig = ConfigService.getConfig(apolloNamespace);\n-        dubboConfigFile = ConfigService.getConfigFile(apolloNamespace, ConfigFileFormat.Properties);\n-\n-        // Decide to fail or to continue when failed to connect to remote server.\n-        boolean check = url.getParameter(CHECK_KEY, true);\n-        if (dubboConfig.getSourceType() != ConfigSourceType.REMOTE) {\n-            if (check) {\n-                throw new IllegalStateException(\"Failed to connect to config center, the config center is Apollo, \" +\n-                        \"the address is: \" + (StringUtils.isNotEmpty(configAddr) ? configAddr : configEnv));\n-            } else {\n-                logger.warn(\"Failed to connect to config center, the config center is Apollo, \" +\n-                        \"the address is: \" + (StringUtils.isNotEmpty(configAddr) ? configAddr : configEnv) +\n-                        \", will use the local cache value instead before eventually the connection is established.\");\n-            }\n-        }\n-    }\n-\n-    private String getAddressWithProtocolPrefix(URL url) {\n-        String address = url.getBackupAddress();\n-        if (StringUtils.isNotEmpty(address)) {\n-            address = Arrays.stream(COMMA_SPLIT_PATTERN.split(address))\n-                    .map(addr -> {\n-                        if (addr.startsWith(APOLLO_PROTOCOL_PREFIX)) {\n-                            return addr;\n-                        }\n-                        return APOLLO_PROTOCOL_PREFIX + addr;\n-                    })\n-                    .collect(Collectors.joining(\",\"));\n-        }\n-        return address;\n-    }\n-\n-    /**\n-     * Since all governance rules will lay under dubbo group, this method now always uses the default dubboConfig and\n-     * ignores the group parameter.\n-     */\n-    @Override\n-    public void addListener(String key, String group, ConfigurationListener listener) {\n-        ApolloListener apolloListener = listeners.computeIfAbsent(group + key, k -> createTargetListener(key, group));\n-        apolloListener.addListener(listener);\n-        dubboConfig.addChangeListener(apolloListener, Collections.singleton(key));\n-    }\n-\n-    @Override\n-    public void removeListener(String key, String group, ConfigurationListener listener) {\n-        ApolloListener apolloListener = listeners.get(group + key);\n-        if (apolloListener != null) {\n-            apolloListener.removeListener(listener);\n-            if (!apolloListener.hasInternalListener()) {\n-                dubboConfig.removeChangeListener(apolloListener);\n-            }\n-        }\n-    }\n-\n-    @Override\n-    public String getConfig(String key, String group, long timeout) throws IllegalStateException {\n-        if (StringUtils.isNotEmpty(group)) {\n-            if (group.equals(url.getParameter(APPLICATION_KEY))) {\n-                return ConfigService.getAppConfig().getProperty(key, null);\n-            } else {\n-                return ConfigService.getConfig(group).getProperty(key, null);\n-            }\n-        }\n-        return dubboConfig.getProperty(key, null);\n-    }\n-\n-    /**\n-     * Recommend specify namespace and group when using Apollo.\n-     * <p>\n-     * <dubbo:config-center namespace=\"governance\" group=\"dubbo\" />, 'dubbo=governance' is for governance rules while\n-     * 'group=dubbo' is for properties files.\n-     *\n-     * @param key     default value is 'dubbo.properties', currently useless for Apollo.\n-     * @param group\n-     * @param timeout\n-     * @return\n-     * @throws IllegalStateException\n-     */\n-    @Override\n-    public String getProperties(String key, String group, long timeout) throws IllegalStateException {\n-        if (StringUtils.isEmpty(group)) {\n-            return dubboConfigFile.getContent();\n-        }\n-        if (group.equals(url.getParameter(APPLICATION_KEY))) {\n-            return ConfigService.getConfigFile(APOLLO_APPLICATION_KEY, ConfigFileFormat.Properties).getContent();\n-        }\n-\n-        ConfigFile configFile = ConfigService.getConfigFile(group, ConfigFileFormat.Properties);\n-        if (configFile == null) {\n-            throw new IllegalStateException(\"There is no namespace named \" + group + \" in Apollo.\");\n-        }\n-        return configFile.getContent();\n-    }\n-\n-    /**\n-     * This method will be used by Configuration to get valid value at runtime.\n-     * The group is expected to be 'app level', which can be fetched from the 'config.appnamespace' in url if necessary.\n-     * But I think Apollo's inheritance feature of namespace can solve the problem .\n-     */\n-    @Override\n-    public String getInternalProperty(String key) {\n-        return dubboConfig.getProperty(key, null);\n-    }\n-\n-    /**\n-     * Ignores the group parameter.\n-     *\n-     * @param key   property key the native listener will listen on\n-     * @param group to distinguish different set of properties\n-     * @return\n-     */\n-    private ApolloListener createTargetListener(String key, String group) {\n-        return new ApolloListener();\n-    }\n-\n-    public class ApolloListener implements ConfigChangeListener {\n-\n-        private Set<ConfigurationListener> listeners = new CopyOnWriteArraySet<>();\n-\n-        ApolloListener() {\n-        }\n-\n-        @Override\n-        public void onChange(com.ctrip.framework.apollo.model.ConfigChangeEvent changeEvent) {\n-            for (String key : changeEvent.changedKeys()) {\n-                ConfigChange change = changeEvent.getChange(key);\n-                if (\"\".equals(change.getNewValue())) {\n-                    logger.warn(\"an empty rule is received for \" + key + \", the current working rule is \" +\n-                            change.getOldValue() + \", the empty rule will not take effect.\");\n-                    return;\n-                }\n-\n-                ConfigChangedEvent event = new ConfigChangedEvent(key, change.getNamespace(), change.getNewValue(), getChangeType(change));\n-                listeners.forEach(listener -> listener.process(event));\n-            }\n-        }\n-\n-        private ConfigChangeType getChangeType(ConfigChange change) {\n-            if (change.getChangeType() == PropertyChangeType.DELETED) {\n-                return ConfigChangeType.DELETED;\n-            }\n-            return ConfigChangeType.MODIFIED;\n-        }\n-\n-        void addListener(ConfigurationListener configurationListener) {\n-            this.listeners.add(configurationListener);\n-        }\n-\n-        void removeListener(ConfigurationListener configurationListener) {\n-            this.listeners.remove(configurationListener);\n-        }\n-\n-        boolean hasInternalListener() {\n-            return listeners != null && listeners.size() > 0;\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.configcenter.support.apollo;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import com.ctrip.framework.apollo.Config;\r\n+import com.ctrip.framework.apollo.ConfigChangeListener;\r\n+import com.ctrip.framework.apollo.ConfigFile;\r\n+import com.ctrip.framework.apollo.ConfigService;\r\n+import com.ctrip.framework.apollo.core.enums.ConfigFileFormat;\r\n+import com.ctrip.framework.apollo.enums.ConfigSourceType;\r\n+import com.ctrip.framework.apollo.enums.PropertyChangeType;\r\n+import com.ctrip.framework.apollo.model.ConfigChange;\r\n+\r\n+import java.util.Arrays;\r\n+import java.util.Collections;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+import java.util.concurrent.CopyOnWriteArraySet;\r\n+import java.util.stream.Collectors;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONFIG_NAMESPACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ANYHOST_VALUE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CHECK_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+\r\n+/**\r\n+ * Apollo implementation, https://github.com/ctripcorp/apollo\r\n+ *\r\n+ * Apollo will be used for management of both governance rules and .properties files, by default, these two different\r\n+ * kinds of data share the same namespace 'dubbo'. To gain better performance, we recommend separate them by giving\r\n+ * namespace and group different values, for example:\r\n+ *\r\n+ * <dubbo:config-center namespace=\"governance\" group=\"dubbo\" />, 'dubbo=governance' is for governance rules while\r\n+ * 'group=dubbo' is for properties files.\r\n+ *\r\n+ * Please see http://dubbo.apache.org/zh-cn/docs/user/configuration/config-center.html for details.\r\n+ */\r\n+public class ApolloDynamicConfiguration implements DynamicConfiguration {\r\n+    private static final Logger logger = LoggerFactory.getLogger(ApolloDynamicConfiguration.class);\r\n+    private static final String APOLLO_ENV_KEY = \"env\";\r\n+    private static final String APOLLO_ADDR_KEY = \"apollo.meta\";\r\n+    private static final String APOLLO_CLUSTER_KEY = \"apollo.cluster\";\r\n+    private static final String APOLLO_PROTOCOL_PREFIX = \"http://\";\r\n+    private static final String APOLLO_APPLICATION_KEY = \"application\";\r\n+    private static final String APOLLO_APPID_KEY = \"app.id\";\r\n+\r\n+    private URL url;\r\n+    private Config dubboConfig;\r\n+    private ConfigFile dubboConfigFile;\r\n+    private ConcurrentMap<String, ApolloListener> listeners = new ConcurrentHashMap<>();\r\n+\r\n+    ApolloDynamicConfiguration(URL url) {\r\n+        this.url = url;\r\n+        // Instead of using Dubbo's configuration, I would suggest use the original configuration method Apollo provides.\r\n+        String configEnv = url.getParameter(APOLLO_ENV_KEY);\r\n+        String configAddr = getAddressWithProtocolPrefix(url);\r\n+        String configCluster = url.getParameter(CLUSTER_KEY);\r\n+        String configAppId = url.getParameter(APOLLO_APPID_KEY);\r\n+        if (StringUtils.isEmpty(System.getProperty(APOLLO_ENV_KEY)) && configEnv != null) {\r\n+            System.setProperty(APOLLO_ENV_KEY, configEnv);\r\n+        }\r\n+        if (StringUtils.isEmpty(System.getProperty(APOLLO_ADDR_KEY)) && !ANYHOST_VALUE.equals(url.getHost())) {\r\n+            System.setProperty(APOLLO_ADDR_KEY, configAddr);\r\n+        }\r\n+        if (StringUtils.isEmpty(System.getProperty(APOLLO_CLUSTER_KEY)) && configCluster != null) {\r\n+            System.setProperty(APOLLO_CLUSTER_KEY, configCluster);\r\n+        }\r\n+        if (StringUtils.isEmpty(System.getProperty(APOLLO_APPID_KEY)) && configAppId != null) {\r\n+            System.setProperty(APOLLO_APPID_KEY, configAppId);\r\n+        }\r\n+\r\n+        String namespace = url.getParameter(CONFIG_NAMESPACE_KEY, DEFAULT_GROUP);\r\n+        String apolloNamespace = StringUtils.isEmpty(namespace) ? url.getParameter(GROUP_KEY, DEFAULT_GROUP) : namespace;\r\n+        dubboConfig = ConfigService.getConfig(apolloNamespace);\r\n+        dubboConfigFile = ConfigService.getConfigFile(apolloNamespace, ConfigFileFormat.Properties);\r\n+\r\n+        // Decide to fail or to continue when failed to connect to remote server.\r\n+        boolean check = url.getParameter(CHECK_KEY, true);\r\n+        if (dubboConfig.getSourceType() != ConfigSourceType.REMOTE) {\r\n+            if (check) {\r\n+                throw new IllegalStateException(\"Failed to connect to config center, the config center is Apollo, \" +\r\n+                        \"the address is: \" + (StringUtils.isNotEmpty(configAddr) ? configAddr : configEnv));\r\n+            } else {\r\n+                logger.warn(\"Failed to connect to config center, the config center is Apollo, \" +\r\n+                        \"the address is: \" + (StringUtils.isNotEmpty(configAddr) ? configAddr : configEnv) +\r\n+                        \", will use the local cache value instead before eventually the connection is established.\");\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private String getAddressWithProtocolPrefix(URL url) {\r\n+        String address = url.getBackupAddress();\r\n+        if (StringUtils.isNotEmpty(address)) {\r\n+            address = Arrays.stream(COMMA_SPLIT_PATTERN.split(address))\r\n+                    .map(addr -> {\r\n+                        if (addr.startsWith(APOLLO_PROTOCOL_PREFIX)) {\r\n+                            return addr;\r\n+                        }\r\n+                        return APOLLO_PROTOCOL_PREFIX + addr;\r\n+                    })\r\n+                    .collect(Collectors.joining(\",\"));\r\n+        }\r\n+        return address;\r\n+    }\r\n+\r\n+    /**\r\n+     * Since all governance rules will lay under dubbo group, this method now always uses the default dubboConfig and\r\n+     * ignores the group parameter.\r\n+     */\r\n+    @Override\r\n+    public void addListener(String key, String group, ConfigurationListener listener) {\r\n+        ApolloListener apolloListener = listeners.computeIfAbsent(group + key, k -> createTargetListener(key, group));\r\n+        apolloListener.addListener(listener);\r\n+        dubboConfig.addChangeListener(apolloListener, Collections.singleton(key));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeListener(String key, String group, ConfigurationListener listener) {\r\n+        ApolloListener apolloListener = listeners.get(group + key);\r\n+        if (apolloListener != null) {\r\n+            apolloListener.removeListener(listener);\r\n+            if (!apolloListener.hasInternalListener()) {\r\n+                dubboConfig.removeChangeListener(apolloListener);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getConfig(String key, String group, long timeout) throws IllegalStateException {\r\n+        if (StringUtils.isNotEmpty(group)) {\r\n+            if (group.equals(url.getParameter(APPLICATION_KEY))) {\r\n+                return ConfigService.getAppConfig().getProperty(key, null);\r\n+            } else {\r\n+                return ConfigService.getConfig(group).getProperty(key, null);\r\n+            }\r\n+        }\r\n+        return dubboConfig.getProperty(key, null);\r\n+    }\r\n+\r\n+    /**\r\n+     * Recommend specify namespace and group when using Apollo.\r\n+     * <p>\r\n+     * <dubbo:config-center namespace=\"governance\" group=\"dubbo\" />, 'dubbo=governance' is for governance rules while\r\n+     * 'group=dubbo' is for properties files.\r\n+     *\r\n+     * @param key     default value is 'dubbo.properties', currently useless for Apollo.\r\n+     * @param group\r\n+     * @param timeout\r\n+     * @return\r\n+     * @throws IllegalStateException\r\n+     */\r\n+    @Override\r\n+    public String getProperties(String key, String group, long timeout) throws IllegalStateException {\r\n+        if (StringUtils.isEmpty(group)) {\r\n+            return dubboConfigFile.getContent();\r\n+        }\r\n+        if (group.equals(url.getParameter(APPLICATION_KEY))) {\r\n+            return ConfigService.getConfigFile(APOLLO_APPLICATION_KEY, ConfigFileFormat.Properties).getContent();\r\n+        }\r\n+\r\n+        ConfigFile configFile = ConfigService.getConfigFile(group, ConfigFileFormat.Properties);\r\n+        if (configFile == null) {\r\n+            throw new IllegalStateException(\"There is no namespace named \" + group + \" in Apollo.\");\r\n+        }\r\n+        return configFile.getContent();\r\n+    }\r\n+\r\n+    /**\r\n+     * This method will be used by Configuration to get valid value at runtime.\r\n+     * The group is expected to be 'app level', which can be fetched from the 'config.appnamespace' in url if necessary.\r\n+     * But I think Apollo's inheritance feature of namespace can solve the problem .\r\n+     */\r\n+    @Override\r\n+    public String getInternalProperty(String key) {\r\n+        return dubboConfig.getProperty(key, null);\r\n+    }\r\n+\r\n+    /**\r\n+     * Ignores the group parameter.\r\n+     *\r\n+     * @param key   property key the native listener will listen on\r\n+     * @param group to distinguish different set of properties\r\n+     * @return\r\n+     */\r\n+    private ApolloListener createTargetListener(String key, String group) {\r\n+        return new ApolloListener();\r\n+    }\r\n+\r\n+    public class ApolloListener implements ConfigChangeListener {\r\n+\r\n+        private Set<ConfigurationListener> listeners = new CopyOnWriteArraySet<>();\r\n+\r\n+        ApolloListener() {\r\n+        }\r\n+\r\n+        @Override\r\n+        public void onChange(com.ctrip.framework.apollo.model.ConfigChangeEvent changeEvent) {\r\n+            for (String key : changeEvent.changedKeys()) {\r\n+                ConfigChange change = changeEvent.getChange(key);\r\n+                if (\"\".equals(change.getNewValue())) {\r\n+                    logger.warn(\"an empty rule is received for \" + key + \", the current working rule is \" +\r\n+                            change.getOldValue() + \", the empty rule will not take effect.\");\r\n+                    return;\r\n+                }\r\n+\r\n+                ConfigChangedEvent event = new ConfigChangedEvent(key, change.getNamespace(), change.getNewValue(), getChangeType(change));\r\n+                listeners.forEach(listener -> listener.process(event));\r\n+            }\r\n+        }\r\n+\r\n+        private ConfigChangeType getChangeType(ConfigChange change) {\r\n+            if (change.getChangeType() == PropertyChangeType.DELETED) {\r\n+                return ConfigChangeType.DELETED;\r\n+            }\r\n+            return ConfigChangeType.MODIFIED;\r\n+        }\r\n+\r\n+        void addListener(ConfigurationListener configurationListener) {\r\n+            this.listeners.add(configurationListener);\r\n+        }\r\n+\r\n+        void removeListener(ConfigurationListener configurationListener) {\r\n+            this.listeners.remove(configurationListener);\r\n+        }\r\n+\r\n+        boolean hasInternalListener() {\r\n+            return listeners != null && listeners.size() > 0;\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfigurationFactory.java", "source2": "org/apache/dubbo/configcenter/support/apollo/ApolloDynamicConfigurationFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,31 +1,31 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.configcenter.support.apollo;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-\n-/**\n- *\n- */\n-public class ApolloDynamicConfigurationFactory extends AbstractDynamicConfigurationFactory {\n-    @Override\n-    protected DynamicConfiguration createDynamicConfiguration(URL url) {\n-        return new ApolloDynamicConfiguration(url);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.configcenter.support.apollo;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+public class ApolloDynamicConfigurationFactory extends AbstractDynamicConfigurationFactory {\r\n+    @Override\r\n+    protected DynamicConfiguration createDynamicConfiguration(URL url) {\r\n+        return new ApolloDynamicConfiguration(url);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/configcenter/support/nacos/NacosConfigServiceWrapper.java", "source2": "org/apache/dubbo/configcenter/support/nacos/NacosConfigServiceWrapper.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,65 +1,65 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.configcenter.support.nacos;\n-\n-import com.alibaba.nacos.api.config.ConfigService;\n-import com.alibaba.nacos.api.config.listener.Listener;\n-import com.alibaba.nacos.api.exception.NacosException;\n-\n-public class NacosConfigServiceWrapper {\n-\n-    private static final String INNERCLASS_SYMBOL = \"$\";\n-\n-    private static final String INNERCLASS_COMPATIBLE_SYMBOL = \"___\";\n-\n-    private ConfigService configService;\n-\n-\n-    public NacosConfigServiceWrapper(ConfigService configService) {\n-        this.configService = configService;\n-    }\n-\n-    public ConfigService getConfigService() {\n-        return configService;\n-    }\n-\n-    public void addListener(String dataId, String group, Listener listener) throws NacosException {\n-        configService.addListener(handleInnerSymbol(dataId), handleInnerSymbol(group), listener);\n-    }\n-\n-    public String getConfig(String dataId, String group, long timeout) throws NacosException {\n-        return configService.getConfig(handleInnerSymbol(dataId), handleInnerSymbol(group), timeout);\n-    }\n-\n-    public boolean publishConfig(String dataId, String group, String content) throws NacosException {\n-        return configService.publishConfig(handleInnerSymbol(dataId), handleInnerSymbol(group), content);\n-    }\n-\n-    public boolean removeConfig(String dataId, String group) throws NacosException {\n-        return configService.removeConfig(handleInnerSymbol(dataId), handleInnerSymbol(group));\n-    }\n-\n-    /**\n-     * see {@link com.alibaba.nacos.client.config.utils.ParamUtils#isValid(java.lang.String)}\n-     */\n-    private String handleInnerSymbol(String dataId) {\n-        if (dataId == null) {\n-            return null;\n-        }\n-        return dataId.replace(INNERCLASS_SYMBOL, INNERCLASS_COMPATIBLE_SYMBOL);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.configcenter.support.nacos;\r\n+\r\n+import com.alibaba.nacos.api.config.ConfigService;\r\n+import com.alibaba.nacos.api.config.listener.Listener;\r\n+import com.alibaba.nacos.api.exception.NacosException;\r\n+\r\n+public class NacosConfigServiceWrapper {\r\n+\r\n+    private static final String INNERCLASS_SYMBOL = \"$\";\r\n+\r\n+    private static final String INNERCLASS_COMPATIBLE_SYMBOL = \"___\";\r\n+\r\n+    private ConfigService configService;\r\n+\r\n+\r\n+    public NacosConfigServiceWrapper(ConfigService configService) {\r\n+        this.configService = configService;\r\n+    }\r\n+\r\n+    public ConfigService getConfigService() {\r\n+        return configService;\r\n+    }\r\n+\r\n+    public void addListener(String dataId, String group, Listener listener) throws NacosException {\r\n+        configService.addListener(handleInnerSymbol(dataId), handleInnerSymbol(group), listener);\r\n+    }\r\n+\r\n+    public String getConfig(String dataId, String group, long timeout) throws NacosException {\r\n+        return configService.getConfig(handleInnerSymbol(dataId), handleInnerSymbol(group), timeout);\r\n+    }\r\n+\r\n+    public boolean publishConfig(String dataId, String group, String content) throws NacosException {\r\n+        return configService.publishConfig(handleInnerSymbol(dataId), handleInnerSymbol(group), content);\r\n+    }\r\n+\r\n+    public boolean removeConfig(String dataId, String group) throws NacosException {\r\n+        return configService.removeConfig(handleInnerSymbol(dataId), handleInnerSymbol(group));\r\n+    }\r\n+\r\n+    /**\r\n+     * see {@link com.alibaba.nacos.client.config.utils.ParamUtils#isValid(java.lang.String)}\r\n+     */\r\n+    private String handleInnerSymbol(String dataId) {\r\n+        if (dataId == null) {\r\n+            return null;\r\n+        }\r\n+        return dataId.replace(INNERCLASS_SYMBOL, INNERCLASS_COMPATIBLE_SYMBOL);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java", "source2": "org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfiguration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,366 +1,366 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.configcenter.support.nacos;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\n-import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.ReflectUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import com.alibaba.fastjson.JSON;\n-import com.alibaba.fastjson.JSONArray;\n-import com.alibaba.fastjson.JSONObject;\n-import com.alibaba.nacos.api.NacosFactory;\n-import com.alibaba.nacos.api.PropertyKeyConst;\n-import com.alibaba.nacos.api.config.ConfigService;\n-import com.alibaba.nacos.api.config.listener.AbstractSharedListener;\n-import com.alibaba.nacos.api.exception.NacosException;\n-import com.alibaba.nacos.client.config.http.HttpAgent;\n-import com.alibaba.nacos.client.config.impl.HttpSimpleClient;\n-\n-import java.io.IOException;\n-import java.lang.reflect.Field;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Properties;\n-import java.util.Set;\n-import java.util.SortedSet;\n-import java.util.TreeSet;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-import java.util.concurrent.CopyOnWriteArraySet;\n-import java.util.concurrent.Executor;\n-import java.util.stream.Stream;\n-\n-import static com.alibaba.nacos.api.PropertyKeyConst.ENCODE;\n-import static com.alibaba.nacos.api.PropertyKeyConst.NAMING_LOAD_CACHE_AT_START;\n-import static com.alibaba.nacos.api.PropertyKeyConst.SERVER_ADDR;\n-import static com.alibaba.nacos.client.naming.utils.UtilAndComs.NACOS_NAMING_LOG_NAME;\n-import static java.util.Arrays.asList;\n-import static java.util.Collections.emptyList;\n-import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY;\n-import static org.apache.dubbo.common.utils.StringConstantFieldValuePredicate.of;\n-import static org.apache.dubbo.common.utils.StringUtils.HYPHEN_CHAR;\n-import static org.apache.dubbo.common.utils.StringUtils.SLASH_CHAR;\n-import static org.apache.dubbo.common.utils.StringUtils.isBlank;\n-\n-/**\n- * The nacos implementation of {@link DynamicConfiguration}\n- */\n-public class NacosDynamicConfiguration implements DynamicConfiguration {\n-\n-    private static final String GET_CONFIG_KEYS_PATH = \"/v1/cs/configs\";\n-\n-    private final Logger logger = LoggerFactory.getLogger(getClass());\n-    /**\n-     * the default timeout in millis to get config from nacos\n-     */\n-    private static final long DEFAULT_TIMEOUT = 5000L;\n-\n-    private Properties nacosProperties;\n-\n-    /**\n-     * The nacos configService\n-     */\n-    private final NacosConfigServiceWrapper configService;\n-\n-    private HttpAgent httpAgent;\n-\n-    /**\n-     * The map store the key to {@link NacosConfigListener} mapping\n-     */\n-    private final ConcurrentMap<String, NacosConfigListener> watchListenerMap;\n-\n-    NacosDynamicConfiguration(URL url) {\n-        this.nacosProperties = buildNacosProperties(url);\n-        this.configService = buildConfigService(url);\n-        this.httpAgent = getHttpAgent(configService.getConfigService());\n-        watchListenerMap = new ConcurrentHashMap<>();\n-    }\n-\n-    private NacosConfigServiceWrapper buildConfigService(URL url) {\n-        ConfigService configService = null;\n-        try {\n-            configService = NacosFactory.createConfigService(nacosProperties);\n-        } catch (NacosException e) {\n-            if (logger.isErrorEnabled()) {\n-                logger.error(e.getErrMsg(), e);\n-            }\n-            throw new IllegalStateException(e);\n-        }\n-        return new NacosConfigServiceWrapper(configService);\n-    }\n-\n-    private HttpAgent getHttpAgent(ConfigService configService) {\n-        HttpAgent agent = null;\n-        try {\n-            Field field = configService.getClass().getDeclaredField(\"agent\");\n-            ReflectUtils.makeAccessible(field);\n-            agent = (HttpAgent) field.get(configService);\n-        } catch (Exception e) {\n-            throw new IllegalStateException(e);\n-        }\n-        return agent;\n-    }\n-\n-    private Properties buildNacosProperties(URL url) {\n-        Properties properties = new Properties();\n-        setServerAddr(url, properties);\n-        setProperties(url, properties);\n-        return properties;\n-    }\n-\n-    private void setServerAddr(URL url, Properties properties) {\n-        StringBuilder serverAddrBuilder =\n-                new StringBuilder(url.getHost()) // Host\n-                        .append(\":\")\n-                        .append(url.getPort()); // Port\n-\n-        // Append backup parameter as other servers\n-        String backup = url.getParameter(BACKUP_KEY);\n-        if (backup != null) {\n-            serverAddrBuilder.append(\",\").append(backup);\n-        }\n-        String serverAddr = serverAddrBuilder.toString();\n-        properties.put(SERVER_ADDR, serverAddr);\n-    }\n-\n-    private static void setProperties(URL url, Properties properties) {\n-        putPropertyIfAbsent(url, properties, NACOS_NAMING_LOG_NAME);\n-\n-        // Get the parameters from constants\n-        Map<String, String> parameters = url.getParameters(of(PropertyKeyConst.class));\n-        // Put all parameters\n-        properties.putAll(parameters);\n-\n-        putPropertyIfAbsent(url, properties, NAMING_LOAD_CACHE_AT_START, \"true\");\n-    }\n-\n-    private static void putPropertyIfAbsent(URL url, Properties properties, String propertyName) {\n-        String propertyValue = url.getParameter(propertyName);\n-        if (StringUtils.isNotEmpty(propertyValue)) {\n-            properties.setProperty(propertyName, propertyValue);\n-        }\n-    }\n-\n-    private static void putPropertyIfAbsent(URL url, Properties properties, String propertyName, String defaultValue) {\n-        String propertyValue = url.getParameter(propertyName);\n-        if (StringUtils.isNotEmpty(propertyValue)) {\n-            properties.setProperty(propertyName, propertyValue);\n-        } else {\n-            properties.setProperty(propertyName, defaultValue);\n-        }\n-    }\n-\n-    /**\n-     * Ignores the group parameter.\n-     *\n-     * @param key   property key the native listener will listen on\n-     * @param group to distinguish different set of properties\n-     * @return\n-     */\n-    private NacosConfigListener createTargetListener(String key, String group) {\n-        NacosConfigListener configListener = new NacosConfigListener();\n-        configListener.fillContext(key, group);\n-        return configListener;\n-    }\n-\n-    @Override\n-    public void addListener(String key, String group, ConfigurationListener listener) {\n-        String resolvedGroup = resolveGroup(group);\n-        String listenerKey = buildListenerKey(key, group);\n-        NacosConfigListener nacosConfigListener = watchListenerMap.computeIfAbsent(listenerKey, k -> createTargetListener(key, resolvedGroup));\n-        nacosConfigListener.addListener(listener);\n-        try {\n-            configService.addListener(key, resolvedGroup, nacosConfigListener);\n-        } catch (NacosException e) {\n-            logger.error(e.getMessage());\n-        }\n-    }\n-\n-    @Override\n-    public void removeListener(String key, String group, ConfigurationListener listener) {\n-        String listenerKey = buildListenerKey(key, group);\n-        NacosConfigListener eventListener = watchListenerMap.get(listenerKey);\n-        if (eventListener != null) {\n-            eventListener.removeListener(listener);\n-        }\n-    }\n-\n-    @Override\n-    public String getConfig(String key, String group, long timeout) throws IllegalStateException {\n-        String resolvedGroup = resolveGroup(group);\n-        try {\n-            long nacosTimeout = timeout < 0 ? getDefaultTimeout() : timeout;\n-            if (StringUtils.isEmpty(resolvedGroup)) {\n-                resolvedGroup = DEFAULT_GROUP;\n-            }\n-            return configService.getConfig(key, resolvedGroup, nacosTimeout);\n-        } catch (NacosException e) {\n-            logger.error(e.getMessage());\n-        }\n-        return null;\n-    }\n-\n-    @Override\n-    public Object getInternalProperty(String key) {\n-        try {\n-            return configService.getConfig(key, DEFAULT_GROUP, getDefaultTimeout());\n-        } catch (NacosException e) {\n-            logger.error(e.getMessage());\n-        }\n-        return null;\n-    }\n-\n-    @Override\n-    public boolean publishConfig(String key, String group, String content) {\n-        boolean published = false;\n-        String resolvedGroup = resolveGroup(group);\n-        try {\n-            published = configService.publishConfig(key, resolvedGroup, content);\n-        } catch (NacosException e) {\n-            logger.error(e.getErrMsg(), e);\n-        }\n-        return published;\n-    }\n-\n-    @Override\n-    public long getDefaultTimeout() {\n-        return DEFAULT_TIMEOUT;\n-    }\n-\n-    /**\n-     * TODO Nacos does not support atomic update of the value mapped to a key.\n-     *\n-     * @param group the specified group\n-     * @return\n-     */\n-    @Override\n-    public SortedSet<String> getConfigKeys(String group) {\n-        // TODO use Nacos Client API to replace HTTP Open API\n-        SortedSet<String> keys = new TreeSet<>();\n-        try {\n-            List<String> paramsValues = asList(\n-                    \"search\", \"accurate\",\n-                    \"dataId\", \"\",\n-                    \"group\", resolveGroup(group),\n-                    \"pageNo\", \"1\",\n-                    \"pageSize\", String.valueOf(Integer.MAX_VALUE)\n-            );\n-            String encoding = getProperty(ENCODE, \"UTF-8\");\n-            HttpSimpleClient.HttpResult result = httpAgent.httpGet(GET_CONFIG_KEYS_PATH, emptyList(), paramsValues, encoding, 5 * 1000);\n-            Stream<String> keysStream = toKeysStream(result.content);\n-            keysStream.forEach(keys::add);\n-        } catch (IOException e) {\n-            if (logger.isErrorEnabled()) {\n-                logger.error(e.getMessage(), e);\n-            }\n-        }\n-        return keys;\n-    }\n-\n-    @Override\n-    public boolean removeConfig(String key, String group) {\n-        boolean removed = false;\n-        try {\n-            removed = configService.removeConfig(key, group);\n-        } catch (NacosException e) {\n-            if (logger.isErrorEnabled()) {\n-                logger.error(e.getMessage(), e);\n-            }\n-        }\n-        return removed;\n-    }\n-\n-    private Stream<String> toKeysStream(String content) {\n-        JSONObject jsonObject = JSON.parseObject(content);\n-        JSONArray pageItems = jsonObject.getJSONArray(\"pageItems\");\n-        return pageItems.stream()\n-                .map(object -> (JSONObject) object)\n-                .map(json -> json.getString(\"dataId\"));\n-    }\n-\n-    private String getProperty(String name, String defaultValue) {\n-        return nacosProperties.getProperty(name, defaultValue);\n-    }\n-\n-    public class NacosConfigListener extends AbstractSharedListener {\n-\n-        private Set<ConfigurationListener> listeners = new CopyOnWriteArraySet<>();\n-        /**\n-         * cache data to store old value\n-         */\n-        private Map<String, String> cacheData = new ConcurrentHashMap<>();\n-\n-        @Override\n-        public Executor getExecutor() {\n-            return null;\n-        }\n-\n-        /**\n-         * receive\n-         *\n-         * @param dataId     data ID\n-         * @param group      group\n-         * @param configInfo content\n-         */\n-        @Override\n-        public void innerReceive(String dataId, String group, String configInfo) {\n-            String oldValue = cacheData.get(dataId);\n-            ConfigChangedEvent event = new ConfigChangedEvent(dataId, group, configInfo, getChangeType(configInfo, oldValue));\n-            if (configInfo == null) {\n-                cacheData.remove(dataId);\n-            } else {\n-                cacheData.put(dataId, configInfo);\n-            }\n-            listeners.forEach(listener -> listener.process(event));\n-        }\n-\n-        void addListener(ConfigurationListener configurationListener) {\n-\n-            this.listeners.add(configurationListener);\n-        }\n-\n-        void removeListener(ConfigurationListener configurationListener) {\n-            this.listeners.remove(configurationListener);\n-        }\n-\n-        private ConfigChangeType getChangeType(String configInfo, String oldValue) {\n-            if (StringUtils.isBlank(configInfo)) {\n-                return ConfigChangeType.DELETED;\n-            }\n-            if (StringUtils.isBlank(oldValue)) {\n-                return ConfigChangeType.ADDED;\n-            }\n-            return ConfigChangeType.MODIFIED;\n-        }\n-    }\n-\n-    protected String buildListenerKey(String key, String group) {\n-        return key + HYPHEN_CHAR + resolveGroup(group);\n-    }\n-\n-    protected String resolveGroup(String group) {\n-        return isBlank(group) ? group : group.replace(SLASH_CHAR, HYPHEN_CHAR);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.configcenter.support.nacos;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.ReflectUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import com.alibaba.fastjson.JSON;\r\n+import com.alibaba.fastjson.JSONArray;\r\n+import com.alibaba.fastjson.JSONObject;\r\n+import com.alibaba.nacos.api.NacosFactory;\r\n+import com.alibaba.nacos.api.PropertyKeyConst;\r\n+import com.alibaba.nacos.api.config.ConfigService;\r\n+import com.alibaba.nacos.api.config.listener.AbstractSharedListener;\r\n+import com.alibaba.nacos.api.exception.NacosException;\r\n+import com.alibaba.nacos.client.config.http.HttpAgent;\r\n+import com.alibaba.nacos.client.config.impl.HttpSimpleClient;\r\n+\r\n+import java.io.IOException;\r\n+import java.lang.reflect.Field;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Properties;\r\n+import java.util.Set;\r\n+import java.util.SortedSet;\r\n+import java.util.TreeSet;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+import java.util.concurrent.CopyOnWriteArraySet;\r\n+import java.util.concurrent.Executor;\r\n+import java.util.stream.Stream;\r\n+\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.ENCODE;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.NAMING_LOAD_CACHE_AT_START;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.SERVER_ADDR;\r\n+import static com.alibaba.nacos.client.naming.utils.UtilAndComs.NACOS_NAMING_LOG_NAME;\r\n+import static java.util.Arrays.asList;\r\n+import static java.util.Collections.emptyList;\r\n+import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY;\r\n+import static org.apache.dubbo.common.utils.StringConstantFieldValuePredicate.of;\r\n+import static org.apache.dubbo.common.utils.StringUtils.HYPHEN_CHAR;\r\n+import static org.apache.dubbo.common.utils.StringUtils.SLASH_CHAR;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isBlank;\r\n+\r\n+/**\r\n+ * The nacos implementation of {@link DynamicConfiguration}\r\n+ */\r\n+public class NacosDynamicConfiguration implements DynamicConfiguration {\r\n+\r\n+    private static final String GET_CONFIG_KEYS_PATH = \"/v1/cs/configs\";\r\n+\r\n+    private final Logger logger = LoggerFactory.getLogger(getClass());\r\n+    /**\r\n+     * the default timeout in millis to get config from nacos\r\n+     */\r\n+    private static final long DEFAULT_TIMEOUT = 5000L;\r\n+\r\n+    private Properties nacosProperties;\r\n+\r\n+    /**\r\n+     * The nacos configService\r\n+     */\r\n+    private final NacosConfigServiceWrapper configService;\r\n+\r\n+    private HttpAgent httpAgent;\r\n+\r\n+    /**\r\n+     * The map store the key to {@link NacosConfigListener} mapping\r\n+     */\r\n+    private final ConcurrentMap<String, NacosConfigListener> watchListenerMap;\r\n+\r\n+    NacosDynamicConfiguration(URL url) {\r\n+        this.nacosProperties = buildNacosProperties(url);\r\n+        this.configService = buildConfigService(url);\r\n+        this.httpAgent = getHttpAgent(configService.getConfigService());\r\n+        watchListenerMap = new ConcurrentHashMap<>();\r\n+    }\r\n+\r\n+    private NacosConfigServiceWrapper buildConfigService(URL url) {\r\n+        ConfigService configService = null;\r\n+        try {\r\n+            configService = NacosFactory.createConfigService(nacosProperties);\r\n+        } catch (NacosException e) {\r\n+            if (logger.isErrorEnabled()) {\r\n+                logger.error(e.getErrMsg(), e);\r\n+            }\r\n+            throw new IllegalStateException(e);\r\n+        }\r\n+        return new NacosConfigServiceWrapper(configService);\r\n+    }\r\n+\r\n+    private HttpAgent getHttpAgent(ConfigService configService) {\r\n+        HttpAgent agent = null;\r\n+        try {\r\n+            Field field = configService.getClass().getDeclaredField(\"agent\");\r\n+            ReflectUtils.makeAccessible(field);\r\n+            agent = (HttpAgent) field.get(configService);\r\n+        } catch (Exception e) {\r\n+            throw new IllegalStateException(e);\r\n+        }\r\n+        return agent;\r\n+    }\r\n+\r\n+    private Properties buildNacosProperties(URL url) {\r\n+        Properties properties = new Properties();\r\n+        setServerAddr(url, properties);\r\n+        setProperties(url, properties);\r\n+        return properties;\r\n+    }\r\n+\r\n+    private void setServerAddr(URL url, Properties properties) {\r\n+        StringBuilder serverAddrBuilder =\r\n+                new StringBuilder(url.getHost()) // Host\r\n+                        .append(\":\")\r\n+                        .append(url.getPort()); // Port\r\n+\r\n+        // Append backup parameter as other servers\r\n+        String backup = url.getParameter(BACKUP_KEY);\r\n+        if (backup != null) {\r\n+            serverAddrBuilder.append(\",\").append(backup);\r\n+        }\r\n+        String serverAddr = serverAddrBuilder.toString();\r\n+        properties.put(SERVER_ADDR, serverAddr);\r\n+    }\r\n+\r\n+    private static void setProperties(URL url, Properties properties) {\r\n+        putPropertyIfAbsent(url, properties, NACOS_NAMING_LOG_NAME);\r\n+\r\n+        // Get the parameters from constants\r\n+        Map<String, String> parameters = url.getParameters(of(PropertyKeyConst.class));\r\n+        // Put all parameters\r\n+        properties.putAll(parameters);\r\n+\r\n+        putPropertyIfAbsent(url, properties, NAMING_LOAD_CACHE_AT_START, \"true\");\r\n+    }\r\n+\r\n+    private static void putPropertyIfAbsent(URL url, Properties properties, String propertyName) {\r\n+        String propertyValue = url.getParameter(propertyName);\r\n+        if (StringUtils.isNotEmpty(propertyValue)) {\r\n+            properties.setProperty(propertyName, propertyValue);\r\n+        }\r\n+    }\r\n+\r\n+    private static void putPropertyIfAbsent(URL url, Properties properties, String propertyName, String defaultValue) {\r\n+        String propertyValue = url.getParameter(propertyName);\r\n+        if (StringUtils.isNotEmpty(propertyValue)) {\r\n+            properties.setProperty(propertyName, propertyValue);\r\n+        } else {\r\n+            properties.setProperty(propertyName, defaultValue);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Ignores the group parameter.\r\n+     *\r\n+     * @param key   property key the native listener will listen on\r\n+     * @param group to distinguish different set of properties\r\n+     * @return\r\n+     */\r\n+    private NacosConfigListener createTargetListener(String key, String group) {\r\n+        NacosConfigListener configListener = new NacosConfigListener();\r\n+        configListener.fillContext(key, group);\r\n+        return configListener;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addListener(String key, String group, ConfigurationListener listener) {\r\n+        String resolvedGroup = resolveGroup(group);\r\n+        String listenerKey = buildListenerKey(key, group);\r\n+        NacosConfigListener nacosConfigListener = watchListenerMap.computeIfAbsent(listenerKey, k -> createTargetListener(key, resolvedGroup));\r\n+        nacosConfigListener.addListener(listener);\r\n+        try {\r\n+            configService.addListener(key, resolvedGroup, nacosConfigListener);\r\n+        } catch (NacosException e) {\r\n+            logger.error(e.getMessage());\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeListener(String key, String group, ConfigurationListener listener) {\r\n+        String listenerKey = buildListenerKey(key, group);\r\n+        NacosConfigListener eventListener = watchListenerMap.get(listenerKey);\r\n+        if (eventListener != null) {\r\n+            eventListener.removeListener(listener);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getConfig(String key, String group, long timeout) throws IllegalStateException {\r\n+        String resolvedGroup = resolveGroup(group);\r\n+        try {\r\n+            long nacosTimeout = timeout < 0 ? getDefaultTimeout() : timeout;\r\n+            if (StringUtils.isEmpty(resolvedGroup)) {\r\n+                resolvedGroup = DEFAULT_GROUP;\r\n+            }\r\n+            return configService.getConfig(key, resolvedGroup, nacosTimeout);\r\n+        } catch (NacosException e) {\r\n+            logger.error(e.getMessage());\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Object getInternalProperty(String key) {\r\n+        try {\r\n+            return configService.getConfig(key, DEFAULT_GROUP, getDefaultTimeout());\r\n+        } catch (NacosException e) {\r\n+            logger.error(e.getMessage());\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean publishConfig(String key, String group, String content) {\r\n+        boolean published = false;\r\n+        String resolvedGroup = resolveGroup(group);\r\n+        try {\r\n+            published = configService.publishConfig(key, resolvedGroup, content);\r\n+        } catch (NacosException e) {\r\n+            logger.error(e.getErrMsg(), e);\r\n+        }\r\n+        return published;\r\n+    }\r\n+\r\n+    @Override\r\n+    public long getDefaultTimeout() {\r\n+        return DEFAULT_TIMEOUT;\r\n+    }\r\n+\r\n+    /**\r\n+     * TODO Nacos does not support atomic update of the value mapped to a key.\r\n+     *\r\n+     * @param group the specified group\r\n+     * @return\r\n+     */\r\n+    @Override\r\n+    public SortedSet<String> getConfigKeys(String group) {\r\n+        // TODO use Nacos Client API to replace HTTP Open API\r\n+        SortedSet<String> keys = new TreeSet<>();\r\n+        try {\r\n+            List<String> paramsValues = asList(\r\n+                    \"search\", \"accurate\",\r\n+                    \"dataId\", \"\",\r\n+                    \"group\", resolveGroup(group),\r\n+                    \"pageNo\", \"1\",\r\n+                    \"pageSize\", String.valueOf(Integer.MAX_VALUE)\r\n+            );\r\n+            String encoding = getProperty(ENCODE, \"UTF-8\");\r\n+            HttpSimpleClient.HttpResult result = httpAgent.httpGet(GET_CONFIG_KEYS_PATH, emptyList(), paramsValues, encoding, 5 * 1000);\r\n+            Stream<String> keysStream = toKeysStream(result.content);\r\n+            keysStream.forEach(keys::add);\r\n+        } catch (IOException e) {\r\n+            if (logger.isErrorEnabled()) {\r\n+                logger.error(e.getMessage(), e);\r\n+            }\r\n+        }\r\n+        return keys;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean removeConfig(String key, String group) {\r\n+        boolean removed = false;\r\n+        try {\r\n+            removed = configService.removeConfig(key, group);\r\n+        } catch (NacosException e) {\r\n+            if (logger.isErrorEnabled()) {\r\n+                logger.error(e.getMessage(), e);\r\n+            }\r\n+        }\r\n+        return removed;\r\n+    }\r\n+\r\n+    private Stream<String> toKeysStream(String content) {\r\n+        JSONObject jsonObject = JSON.parseObject(content);\r\n+        JSONArray pageItems = jsonObject.getJSONArray(\"pageItems\");\r\n+        return pageItems.stream()\r\n+                .map(object -> (JSONObject) object)\r\n+                .map(json -> json.getString(\"dataId\"));\r\n+    }\r\n+\r\n+    private String getProperty(String name, String defaultValue) {\r\n+        return nacosProperties.getProperty(name, defaultValue);\r\n+    }\r\n+\r\n+    public class NacosConfigListener extends AbstractSharedListener {\r\n+\r\n+        private Set<ConfigurationListener> listeners = new CopyOnWriteArraySet<>();\r\n+        /**\r\n+         * cache data to store old value\r\n+         */\r\n+        private Map<String, String> cacheData = new ConcurrentHashMap<>();\r\n+\r\n+        @Override\r\n+        public Executor getExecutor() {\r\n+            return null;\r\n+        }\r\n+\r\n+        /**\r\n+         * receive\r\n+         *\r\n+         * @param dataId     data ID\r\n+         * @param group      group\r\n+         * @param configInfo content\r\n+         */\r\n+        @Override\r\n+        public void innerReceive(String dataId, String group, String configInfo) {\r\n+            String oldValue = cacheData.get(dataId);\r\n+            ConfigChangedEvent event = new ConfigChangedEvent(dataId, group, configInfo, getChangeType(configInfo, oldValue));\r\n+            if (configInfo == null) {\r\n+                cacheData.remove(dataId);\r\n+            } else {\r\n+                cacheData.put(dataId, configInfo);\r\n+            }\r\n+            listeners.forEach(listener -> listener.process(event));\r\n+        }\r\n+\r\n+        void addListener(ConfigurationListener configurationListener) {\r\n+\r\n+            this.listeners.add(configurationListener);\r\n+        }\r\n+\r\n+        void removeListener(ConfigurationListener configurationListener) {\r\n+            this.listeners.remove(configurationListener);\r\n+        }\r\n+\r\n+        private ConfigChangeType getChangeType(String configInfo, String oldValue) {\r\n+            if (StringUtils.isBlank(configInfo)) {\r\n+                return ConfigChangeType.DELETED;\r\n+            }\r\n+            if (StringUtils.isBlank(oldValue)) {\r\n+                return ConfigChangeType.ADDED;\r\n+            }\r\n+            return ConfigChangeType.MODIFIED;\r\n+        }\r\n+    }\r\n+\r\n+    protected String buildListenerKey(String key, String group) {\r\n+        return key + HYPHEN_CHAR + resolveGroup(group);\r\n+    }\r\n+\r\n+    protected String resolveGroup(String group) {\r\n+        return isBlank(group) ? group : group.replace(SLASH_CHAR, HYPHEN_CHAR);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfigurationFactory.java", "source2": "org/apache/dubbo/configcenter/support/nacos/NacosDynamicConfigurationFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,41 +1,41 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.configcenter.support.nacos;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-import org.apache.dubbo.common.constants.CommonConstants;\n-\n-import com.alibaba.nacos.api.PropertyKeyConst;\n-\n-/**\n- * The nacos implementation of {@link AbstractDynamicConfigurationFactory}\n- */\n-public class NacosDynamicConfigurationFactory extends AbstractDynamicConfigurationFactory {\n-\n-    @Override\n-    protected DynamicConfiguration createDynamicConfiguration(URL url) {\n-        URL nacosURL = url;\n-        if (CommonConstants.DUBBO.equals(url.getParameter(PropertyKeyConst.NAMESPACE))) {\n-            // Nacos use empty string as default name space, replace default namespace \"dubbo\" to \"\"\n-            nacosURL = url.removeParameter(PropertyKeyConst.NAMESPACE);\n-        }\n-        return new NacosDynamicConfiguration(nacosURL);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.configcenter.support.nacos;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+import org.apache.dubbo.common.constants.CommonConstants;\r\n+\r\n+import com.alibaba.nacos.api.PropertyKeyConst;\r\n+\r\n+/**\r\n+ * The nacos implementation of {@link AbstractDynamicConfigurationFactory}\r\n+ */\r\n+public class NacosDynamicConfigurationFactory extends AbstractDynamicConfigurationFactory {\r\n+\r\n+    @Override\r\n+    protected DynamicConfiguration createDynamicConfiguration(URL url) {\r\n+        URL nacosURL = url;\r\n+        if (CommonConstants.DUBBO.equals(url.getParameter(PropertyKeyConst.NAMESPACE))) {\r\n+            // Nacos use empty string as default name space, replace default namespace \"dubbo\" to \"\"\r\n+            nacosURL = url.removeParameter(PropertyKeyConst.NAMESPACE);\r\n+        }\r\n+        return new NacosDynamicConfiguration(nacosURL);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/configcenter/consul/ConsulDynamicConfiguration.java", "source2": "org/apache/dubbo/configcenter/consul/ConsulDynamicConfiguration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,181 +1,181 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.configcenter.consul;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\n-import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\n-import org.apache.dubbo.common.config.configcenter.TreePathDynamicConfiguration;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-\n-import com.google.common.base.Charsets;\n-import com.google.common.net.HostAndPort;\n-import com.orbitz.consul.Consul;\n-import com.orbitz.consul.KeyValueClient;\n-import com.orbitz.consul.cache.KVCache;\n-import com.orbitz.consul.model.kv.Value;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import java.util.Collection;\n-import java.util.LinkedHashSet;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Optional;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\n-\n-/**\n- * config center implementation for consul\n- */\n-public class ConsulDynamicConfiguration extends TreePathDynamicConfiguration {\n-    private static final Logger logger = LoggerFactory.getLogger(ConsulDynamicConfiguration.class);\n-\n-    private static final int DEFAULT_PORT = 8500;\n-    private static final int DEFAULT_WATCH_TIMEOUT = 60 * 1000;\n-    private static final String WATCH_TIMEOUT = \"consul-watch-timeout\";\n-\n-    private final Consul client;\n-\n-    private final KeyValueClient kvClient;\n-\n-    private final int watchTimeout;\n-\n-    private final ConcurrentMap<String, ConsulListener> watchers = new ConcurrentHashMap<>();\n-\n-    public ConsulDynamicConfiguration(URL url) {\n-        super(url);\n-        watchTimeout = url.getParameter(WATCH_TIMEOUT, DEFAULT_WATCH_TIMEOUT);\n-        String host = url.getHost();\n-        int port = url.getPort() != 0 ? url.getPort() : DEFAULT_PORT;\n-        Consul.Builder builder = Consul.builder()\n-                .withHostAndPort(HostAndPort.fromParts(host, port));\n-        String token = url.getParameter(\"token\", (String) null);\n-        if (StringUtils.isNotEmpty(token)) {\n-            builder.withAclToken(token);\n-        }\n-        client = builder.build();\n-        this.kvClient = client.keyValueClient();\n-    }\n-\n-    @Override\n-    public String getInternalProperty(String key) {\n-        logger.info(\"getting config from: \" + key);\n-        return kvClient.getValueAsString(key, Charsets.UTF_8).orElse(null);\n-    }\n-\n-    @Override\n-    protected boolean doPublishConfig(String pathKey, String content) throws Exception {\n-        return kvClient.putValue(pathKey, content);\n-    }\n-\n-    @Override\n-    protected String doGetConfig(String pathKey) throws Exception {\n-        return getInternalProperty(pathKey);\n-    }\n-\n-    @Override\n-    protected boolean doRemoveConfig(String pathKey) throws Exception {\n-        kvClient.deleteKey(pathKey);\n-        return true;\n-    }\n-\n-    @Override\n-    protected Collection<String> doGetConfigKeys(String groupPath) {\n-        List<String> keys = kvClient.getKeys(groupPath);\n-        List<String> configKeys = new LinkedList<>();\n-        if (CollectionUtils.isNotEmpty(keys)) {\n-            keys.stream()\n-                    .filter(k -> !k.equals(groupPath))\n-                    .map(k -> k.substring(k.lastIndexOf(PATH_SEPARATOR) + 1))\n-                    .forEach(configKeys::add);\n-        }\n-        return configKeys;\n-    }\n-\n-    @Override\n-    protected void doAddListener(String pathKey, ConfigurationListener listener) {\n-        logger.info(\"register listener \" + listener.getClass() + \" for config with key: \" + pathKey);\n-        ConsulListener watcher = watchers.computeIfAbsent(pathKey, k -> new ConsulListener(pathKey));\n-        watcher.addListener(listener);\n-    }\n-\n-    @Override\n-    protected void doRemoveListener(String pathKey, ConfigurationListener listener) {\n-        logger.info(\"unregister listener \" + listener.getClass() + \" for config with key: \" + pathKey);\n-        ConsulListener watcher = watchers.get(pathKey);\n-        if (watcher != null) {\n-            watcher.removeListener(listener);\n-        }\n-    }\n-\n-    @Override\n-    protected void doClose() throws Exception {\n-        client.destroy();\n-    }\n-\n-    private class ConsulListener implements KVCache.Listener<String, Value> {\n-\n-        private KVCache kvCache;\n-        private final Set<ConfigurationListener> listeners = new LinkedHashSet<>();\n-        private final String normalizedKey;\n-\n-        public ConsulListener(String normalizedKey) {\n-            this.normalizedKey = normalizedKey;\n-            initKVCache();\n-        }\n-\n-        private void initKVCache() {\n-            this.kvCache = KVCache.newCache(kvClient, normalizedKey, watchTimeout);\n-            kvCache.addListener(this);\n-            kvCache.start();\n-        }\n-\n-        @Override\n-        public void notify(Map<String, Value> newValues) {\n-            // Cache notifies all paths with \"foo\" the root path\n-            // If you want to watch only \"foo\" value, you must filter other paths\n-            Optional<Value> newValue = newValues.values().stream()\n-                    .filter(value -> value.getKey().equals(normalizedKey))\n-                    .findAny();\n-\n-            newValue.ifPresent(value -> {\n-                // Values are encoded in key/value store, decode it if needed\n-                Optional<String> decodedValue = newValue.get().getValueAsString();\n-                decodedValue.ifPresent(v -> listeners.forEach(l -> {\n-                    ConfigChangedEvent event = new ConfigChangedEvent(normalizedKey, getGroup(), v, ConfigChangeType.MODIFIED);\n-                    l.process(event);\n-                }));\n-            });\n-        }\n-\n-        private void addListener(ConfigurationListener listener) {\n-            this.listeners.add(listener);\n-        }\n-\n-        private void removeListener(ConfigurationListener listener) {\n-            this.listeners.remove(listener);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.configcenter.consul;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\r\n+import org.apache.dubbo.common.config.configcenter.TreePathDynamicConfiguration;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+\r\n+import com.google.common.base.Charsets;\r\n+import com.google.common.net.HostAndPort;\r\n+import com.orbitz.consul.Consul;\r\n+import com.orbitz.consul.KeyValueClient;\r\n+import com.orbitz.consul.cache.KVCache;\r\n+import com.orbitz.consul.model.kv.Value;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import java.util.Collection;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Optional;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\r\n+\r\n+/**\r\n+ * config center implementation for consul\r\n+ */\r\n+public class ConsulDynamicConfiguration extends TreePathDynamicConfiguration {\r\n+    private static final Logger logger = LoggerFactory.getLogger(ConsulDynamicConfiguration.class);\r\n+\r\n+    private static final int DEFAULT_PORT = 8500;\r\n+    private static final int DEFAULT_WATCH_TIMEOUT = 60 * 1000;\r\n+    private static final String WATCH_TIMEOUT = \"consul-watch-timeout\";\r\n+\r\n+    private final Consul client;\r\n+\r\n+    private final KeyValueClient kvClient;\r\n+\r\n+    private final int watchTimeout;\r\n+\r\n+    private final ConcurrentMap<String, ConsulListener> watchers = new ConcurrentHashMap<>();\r\n+\r\n+    public ConsulDynamicConfiguration(URL url) {\r\n+        super(url);\r\n+        watchTimeout = url.getParameter(WATCH_TIMEOUT, DEFAULT_WATCH_TIMEOUT);\r\n+        String host = url.getHost();\r\n+        int port = url.getPort() != 0 ? url.getPort() : DEFAULT_PORT;\r\n+        Consul.Builder builder = Consul.builder()\r\n+                .withHostAndPort(HostAndPort.fromParts(host, port));\r\n+        String token = url.getParameter(\"token\", (String) null);\r\n+        if (StringUtils.isNotEmpty(token)) {\r\n+            builder.withAclToken(token);\r\n+        }\r\n+        client = builder.build();\r\n+        this.kvClient = client.keyValueClient();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getInternalProperty(String key) {\r\n+        logger.info(\"getting config from: \" + key);\r\n+        return kvClient.getValueAsString(key, Charsets.UTF_8).orElse(null);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected boolean doPublishConfig(String pathKey, String content) throws Exception {\r\n+        return kvClient.putValue(pathKey, content);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String doGetConfig(String pathKey) throws Exception {\r\n+        return getInternalProperty(pathKey);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected boolean doRemoveConfig(String pathKey) throws Exception {\r\n+        kvClient.deleteKey(pathKey);\r\n+        return true;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected Collection<String> doGetConfigKeys(String groupPath) {\r\n+        List<String> keys = kvClient.getKeys(groupPath);\r\n+        List<String> configKeys = new LinkedList<>();\r\n+        if (CollectionUtils.isNotEmpty(keys)) {\r\n+            keys.stream()\r\n+                    .filter(k -> !k.equals(groupPath))\r\n+                    .map(k -> k.substring(k.lastIndexOf(PATH_SEPARATOR) + 1))\r\n+                    .forEach(configKeys::add);\r\n+        }\r\n+        return configKeys;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doAddListener(String pathKey, ConfigurationListener listener) {\r\n+        logger.info(\"register listener \" + listener.getClass() + \" for config with key: \" + pathKey);\r\n+        ConsulListener watcher = watchers.computeIfAbsent(pathKey, k -> new ConsulListener(pathKey));\r\n+        watcher.addListener(listener);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doRemoveListener(String pathKey, ConfigurationListener listener) {\r\n+        logger.info(\"unregister listener \" + listener.getClass() + \" for config with key: \" + pathKey);\r\n+        ConsulListener watcher = watchers.get(pathKey);\r\n+        if (watcher != null) {\r\n+            watcher.removeListener(listener);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doClose() throws Exception {\r\n+        client.destroy();\r\n+    }\r\n+\r\n+    private class ConsulListener implements KVCache.Listener<String, Value> {\r\n+\r\n+        private KVCache kvCache;\r\n+        private final Set<ConfigurationListener> listeners = new LinkedHashSet<>();\r\n+        private final String normalizedKey;\r\n+\r\n+        public ConsulListener(String normalizedKey) {\r\n+            this.normalizedKey = normalizedKey;\r\n+            initKVCache();\r\n+        }\r\n+\r\n+        private void initKVCache() {\r\n+            this.kvCache = KVCache.newCache(kvClient, normalizedKey, watchTimeout);\r\n+            kvCache.addListener(this);\r\n+            kvCache.start();\r\n+        }\r\n+\r\n+        @Override\r\n+        public void notify(Map<String, Value> newValues) {\r\n+            // Cache notifies all paths with \"foo\" the root path\r\n+            // If you want to watch only \"foo\" value, you must filter other paths\r\n+            Optional<Value> newValue = newValues.values().stream()\r\n+                    .filter(value -> value.getKey().equals(normalizedKey))\r\n+                    .findAny();\r\n+\r\n+            newValue.ifPresent(value -> {\r\n+                // Values are encoded in key/value store, decode it if needed\r\n+                Optional<String> decodedValue = newValue.get().getValueAsString();\r\n+                decodedValue.ifPresent(v -> listeners.forEach(l -> {\r\n+                    ConfigChangedEvent event = new ConfigChangedEvent(normalizedKey, getGroup(), v, ConfigChangeType.MODIFIED);\r\n+                    l.process(event);\r\n+                }));\r\n+            });\r\n+        }\r\n+\r\n+        private void addListener(ConfigurationListener listener) {\r\n+            this.listeners.add(listener);\r\n+        }\r\n+\r\n+        private void removeListener(ConfigurationListener listener) {\r\n+            this.listeners.remove(listener);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/configcenter/consul/ConsulDynamicConfigurationFactory.java", "source2": "org/apache/dubbo/configcenter/consul/ConsulDynamicConfigurationFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,32 +1,32 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.configcenter.consul;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-\n-/**\n- * Config center factory for consul\n- */\n-public class ConsulDynamicConfigurationFactory extends AbstractDynamicConfigurationFactory {\n-    @Override\n-    protected DynamicConfiguration createDynamicConfiguration(URL url) {\n-        return new ConsulDynamicConfiguration(url);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.configcenter.consul;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+\r\n+/**\r\n+ * Config center factory for consul\r\n+ */\r\n+public class ConsulDynamicConfigurationFactory extends AbstractDynamicConfigurationFactory {\r\n+    @Override\r\n+    protected DynamicConfiguration createDynamicConfiguration(URL url) {\r\n+        return new ConsulDynamicConfiguration(url);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfiguration.java", "source2": "org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfiguration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,197 +1,197 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.configcenter.support.etcd;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\n-import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.etcd.StateListener;\n-import org.apache.dubbo.remoting.etcd.jetcd.JEtcdClient;\n-\n-import com.google.protobuf.ByteString;\n-import io.etcd.jetcd.api.Event;\n-import io.etcd.jetcd.api.WatchCancelRequest;\n-import io.etcd.jetcd.api.WatchCreateRequest;\n-import io.etcd.jetcd.api.WatchGrpc;\n-import io.etcd.jetcd.api.WatchRequest;\n-import io.etcd.jetcd.api.WatchResponse;\n-import io.grpc.ManagedChannel;\n-import io.grpc.stub.StreamObserver;\n-\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-import static java.nio.charset.StandardCharsets.UTF_8;\n-import static org.apache.dubbo.common.constants.CommonConstants.CONFIG_NAMESPACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\n-\n-/**\n- * The etcd implementation of {@link DynamicConfiguration}\n- */\n-public class EtcdDynamicConfiguration implements DynamicConfiguration {\n-\n-    /**\n-     * The final root path would be: /$NAME_SPACE/config\n-     */\n-    private String rootPath;\n-\n-    /**\n-     * The etcd client\n-     */\n-    private final JEtcdClient etcdClient;\n-\n-    /**\n-     * The map store the key to {@link EtcdConfigWatcher} mapping\n-     */\n-    private final ConcurrentMap<ConfigurationListener, EtcdConfigWatcher> watchListenerMap;\n-\n-    EtcdDynamicConfiguration(URL url) {\n-        rootPath = PATH_SEPARATOR + url.getParameter(CONFIG_NAMESPACE_KEY, DEFAULT_GROUP) + \"/config\";\n-        etcdClient = new JEtcdClient(url);\n-        etcdClient.addStateListener(state -> {\n-            if (state == StateListener.CONNECTED) {\n-                try {\n-                    recover();\n-                } catch (Exception e) {\n-                    // ignore\n-                }\n-            }\n-        });\n-        watchListenerMap = new ConcurrentHashMap<>();\n-    }\n-\n-    @Override\n-    public void addListener(String key, String group, ConfigurationListener listener) {\n-        if (watchListenerMap.get(listener) == null) {\n-            EtcdConfigWatcher watcher = new EtcdConfigWatcher(key, group, listener);\n-            watchListenerMap.put(listener, watcher);\n-            watcher.watch();\n-        }\n-    }\n-\n-    @Override\n-    public void removeListener(String key, String group, ConfigurationListener listener) {\n-        EtcdConfigWatcher watcher = watchListenerMap.get(listener);\n-        watcher.cancelWatch();\n-    }\n-\n-    @Override\n-    public String getConfig(String key, String group, long timeout) throws IllegalStateException {\n-        return (String) getInternalProperty(convertKey(group, key));\n-    }\n-\n-//    @Override\n-//    public String getConfigs(String key, String group, long timeout) throws IllegalStateException {\n-//        if (StringUtils.isEmpty(group)) {\n-//            group = DEFAULT_GROUP;\n-//        }\n-//        return (String) getInternalProperty(convertKey(group, key));\n-//    }\n-\n-    @Override\n-    public Object getInternalProperty(String key) {\n-        return etcdClient.getKVValue(key);\n-    }\n-\n-    private String buildPath(String group) {\n-        String actualGroup = StringUtils.isEmpty(group) ? DEFAULT_GROUP : group;\n-        return rootPath + PATH_SEPARATOR + actualGroup;\n-    }\n-\n-    private String convertKey(String group, String key) {\n-        return buildPath(group) + PATH_SEPARATOR + key;\n-    }\n-\n-    private void recover() {\n-        for (EtcdConfigWatcher watcher : watchListenerMap.values()) {\n-            watcher.watch();\n-        }\n-    }\n-\n-    public class EtcdConfigWatcher implements StreamObserver<WatchResponse> {\n-\n-        private ConfigurationListener listener;\n-        protected WatchGrpc.WatchStub watchStub;\n-        private StreamObserver<WatchRequest> observer;\n-        protected long watchId;\n-        private ManagedChannel channel;\n-\n-        private final String key;\n-\n-        private final String group;\n-\n-        private String normalizedKey;\n-\n-        public EtcdConfigWatcher(String key, String group, ConfigurationListener listener) {\n-            this.key = key;\n-            this.group = group;\n-            this.normalizedKey = convertKey(group, key);\n-            this.listener = listener;\n-            this.channel = etcdClient.getChannel();\n-        }\n-\n-        @Override\n-        public void onNext(WatchResponse watchResponse) {\n-            this.watchId = watchResponse.getWatchId();\n-            for (Event etcdEvent : watchResponse.getEventsList()) {\n-                ConfigChangeType type = ConfigChangeType.MODIFIED;\n-                if (etcdEvent.getType() == Event.EventType.DELETE) {\n-                    type = ConfigChangeType.DELETED;\n-                }\n-                ConfigChangedEvent event = new ConfigChangedEvent(key, group,\n-                        etcdEvent.getKv().getValue().toString(UTF_8), type);\n-                listener.process(event);\n-            }\n-        }\n-\n-        @Override\n-        public void onError(Throwable throwable) {\n-            // ignore\n-        }\n-\n-        @Override\n-        public void onCompleted() {\n-            // ignore\n-        }\n-\n-        public long getWatchId() {\n-            return watchId;\n-        }\n-\n-        private void watch() {\n-            watchStub = WatchGrpc.newStub(channel);\n-            observer = watchStub.watch(this);\n-            WatchCreateRequest.Builder builder = WatchCreateRequest.newBuilder()\n-                    .setKey(ByteString.copyFromUtf8(normalizedKey))\n-                    .setProgressNotify(true);\n-            WatchRequest req = WatchRequest.newBuilder().setCreateRequest(builder).build();\n-            observer.onNext(req);\n-        }\n-\n-        private void cancelWatch() {\n-            WatchCancelRequest watchCancelRequest =\n-                    WatchCancelRequest.newBuilder().setWatchId(watchId).build();\n-            WatchRequest cancelRequest = WatchRequest.newBuilder()\n-                    .setCancelRequest(watchCancelRequest).build();\n-            observer.onNext(cancelRequest);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.configcenter.support.etcd;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.etcd.StateListener;\r\n+import org.apache.dubbo.remoting.etcd.jetcd.JEtcdClient;\r\n+\r\n+import com.google.protobuf.ByteString;\r\n+import io.etcd.jetcd.api.Event;\r\n+import io.etcd.jetcd.api.WatchCancelRequest;\r\n+import io.etcd.jetcd.api.WatchCreateRequest;\r\n+import io.etcd.jetcd.api.WatchGrpc;\r\n+import io.etcd.jetcd.api.WatchRequest;\r\n+import io.etcd.jetcd.api.WatchResponse;\r\n+import io.grpc.ManagedChannel;\r\n+import io.grpc.stub.StreamObserver;\r\n+\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+import static java.nio.charset.StandardCharsets.UTF_8;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONFIG_NAMESPACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\r\n+\r\n+/**\r\n+ * The etcd implementation of {@link DynamicConfiguration}\r\n+ */\r\n+public class EtcdDynamicConfiguration implements DynamicConfiguration {\r\n+\r\n+    /**\r\n+     * The final root path would be: /$NAME_SPACE/config\r\n+     */\r\n+    private String rootPath;\r\n+\r\n+    /**\r\n+     * The etcd client\r\n+     */\r\n+    private final JEtcdClient etcdClient;\r\n+\r\n+    /**\r\n+     * The map store the key to {@link EtcdConfigWatcher} mapping\r\n+     */\r\n+    private final ConcurrentMap<ConfigurationListener, EtcdConfigWatcher> watchListenerMap;\r\n+\r\n+    EtcdDynamicConfiguration(URL url) {\r\n+        rootPath = PATH_SEPARATOR + url.getParameter(CONFIG_NAMESPACE_KEY, DEFAULT_GROUP) + \"/config\";\r\n+        etcdClient = new JEtcdClient(url);\r\n+        etcdClient.addStateListener(state -> {\r\n+            if (state == StateListener.CONNECTED) {\r\n+                try {\r\n+                    recover();\r\n+                } catch (Exception e) {\r\n+                    // ignore\r\n+                }\r\n+            }\r\n+        });\r\n+        watchListenerMap = new ConcurrentHashMap<>();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addListener(String key, String group, ConfigurationListener listener) {\r\n+        if (watchListenerMap.get(listener) == null) {\r\n+            EtcdConfigWatcher watcher = new EtcdConfigWatcher(key, group, listener);\r\n+            watchListenerMap.put(listener, watcher);\r\n+            watcher.watch();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeListener(String key, String group, ConfigurationListener listener) {\r\n+        EtcdConfigWatcher watcher = watchListenerMap.get(listener);\r\n+        watcher.cancelWatch();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getConfig(String key, String group, long timeout) throws IllegalStateException {\r\n+        return (String) getInternalProperty(convertKey(group, key));\r\n+    }\r\n+\r\n+//    @Override\r\n+//    public String getConfigs(String key, String group, long timeout) throws IllegalStateException {\r\n+//        if (StringUtils.isEmpty(group)) {\r\n+//            group = DEFAULT_GROUP;\r\n+//        }\r\n+//        return (String) getInternalProperty(convertKey(group, key));\r\n+//    }\r\n+\r\n+    @Override\r\n+    public Object getInternalProperty(String key) {\r\n+        return etcdClient.getKVValue(key);\r\n+    }\r\n+\r\n+    private String buildPath(String group) {\r\n+        String actualGroup = StringUtils.isEmpty(group) ? DEFAULT_GROUP : group;\r\n+        return rootPath + PATH_SEPARATOR + actualGroup;\r\n+    }\r\n+\r\n+    private String convertKey(String group, String key) {\r\n+        return buildPath(group) + PATH_SEPARATOR + key;\r\n+    }\r\n+\r\n+    private void recover() {\r\n+        for (EtcdConfigWatcher watcher : watchListenerMap.values()) {\r\n+            watcher.watch();\r\n+        }\r\n+    }\r\n+\r\n+    public class EtcdConfigWatcher implements StreamObserver<WatchResponse> {\r\n+\r\n+        private ConfigurationListener listener;\r\n+        protected WatchGrpc.WatchStub watchStub;\r\n+        private StreamObserver<WatchRequest> observer;\r\n+        protected long watchId;\r\n+        private ManagedChannel channel;\r\n+\r\n+        private final String key;\r\n+\r\n+        private final String group;\r\n+\r\n+        private String normalizedKey;\r\n+\r\n+        public EtcdConfigWatcher(String key, String group, ConfigurationListener listener) {\r\n+            this.key = key;\r\n+            this.group = group;\r\n+            this.normalizedKey = convertKey(group, key);\r\n+            this.listener = listener;\r\n+            this.channel = etcdClient.getChannel();\r\n+        }\r\n+\r\n+        @Override\r\n+        public void onNext(WatchResponse watchResponse) {\r\n+            this.watchId = watchResponse.getWatchId();\r\n+            for (Event etcdEvent : watchResponse.getEventsList()) {\r\n+                ConfigChangeType type = ConfigChangeType.MODIFIED;\r\n+                if (etcdEvent.getType() == Event.EventType.DELETE) {\r\n+                    type = ConfigChangeType.DELETED;\r\n+                }\r\n+                ConfigChangedEvent event = new ConfigChangedEvent(key, group,\r\n+                        etcdEvent.getKv().getValue().toString(UTF_8), type);\r\n+                listener.process(event);\r\n+            }\r\n+        }\r\n+\r\n+        @Override\r\n+        public void onError(Throwable throwable) {\r\n+            // ignore\r\n+        }\r\n+\r\n+        @Override\r\n+        public void onCompleted() {\r\n+            // ignore\r\n+        }\r\n+\r\n+        public long getWatchId() {\r\n+            return watchId;\r\n+        }\r\n+\r\n+        private void watch() {\r\n+            watchStub = WatchGrpc.newStub(channel);\r\n+            observer = watchStub.watch(this);\r\n+            WatchCreateRequest.Builder builder = WatchCreateRequest.newBuilder()\r\n+                    .setKey(ByteString.copyFromUtf8(normalizedKey))\r\n+                    .setProgressNotify(true);\r\n+            WatchRequest req = WatchRequest.newBuilder().setCreateRequest(builder).build();\r\n+            observer.onNext(req);\r\n+        }\r\n+\r\n+        private void cancelWatch() {\r\n+            WatchCancelRequest watchCancelRequest =\r\n+                    WatchCancelRequest.newBuilder().setWatchId(watchId).build();\r\n+            WatchRequest cancelRequest = WatchRequest.newBuilder()\r\n+                    .setCancelRequest(watchCancelRequest).build();\r\n+            observer.onNext(cancelRequest);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfigurationFactory.java", "source2": "org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfigurationFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.configcenter.support.etcd;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-\n-/**\n- * The etcd implementation of {@link AbstractDynamicConfigurationFactory}\n- */\n-public class EtcdDynamicConfigurationFactory extends AbstractDynamicConfigurationFactory {\n-\n-    @Override\n-    protected DynamicConfiguration createDynamicConfiguration(URL url) {\n-        return new EtcdDynamicConfiguration(url);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.configcenter.support.etcd;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+\r\n+/**\r\n+ * The etcd implementation of {@link AbstractDynamicConfigurationFactory}\r\n+ */\r\n+public class EtcdDynamicConfigurationFactory extends AbstractDynamicConfigurationFactory {\r\n+\r\n+    @Override\r\n+    protected DynamicConfiguration createDynamicConfiguration(URL url) {\r\n+        return new EtcdDynamicConfiguration(url);\r\n+    }\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/cache/support/AbstractCacheFactory.java", "source2": "com/alibaba/dubbo/cache/support/AbstractCacheFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,53 +1,53 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.cache.support;\n-\n-import com.alibaba.dubbo.cache.Cache;\n-import com.alibaba.dubbo.cache.CacheFactory;\n-import com.alibaba.dubbo.common.URL;\n-import com.alibaba.dubbo.rpc.Invocation;\n-\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.METHOD_KEY;\n-\n-@Deprecated\n-public abstract class AbstractCacheFactory implements CacheFactory {\n-\n-    private final ConcurrentMap<String, Cache> caches = new ConcurrentHashMap<String, Cache>();\n-\n-    @Override\n-    public Cache getCache(URL url, Invocation invocation) {\n-        url = url.addParameter(METHOD_KEY, invocation.getMethodName());\n-        String key = url.toFullString();\n-        Cache cache = caches.get(key);\n-        if (cache == null) {\n-            caches.put(key, createCache(url));\n-            cache = caches.get(key);\n-        }\n-        return cache;\n-    }\n-\n-    protected abstract Cache createCache(URL url);\n-\n-    @Override\n-    public org.apache.dubbo.cache.Cache getCache(org.apache.dubbo.common.URL url, org.apache.dubbo.rpc.Invocation invocation) {\n-        return getCache(new URL(url), new Invocation.CompatibleInvocation(invocation));\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.cache.support;\r\n+\r\n+import com.alibaba.dubbo.cache.Cache;\r\n+import com.alibaba.dubbo.cache.CacheFactory;\r\n+import com.alibaba.dubbo.common.URL;\r\n+import com.alibaba.dubbo.rpc.Invocation;\r\n+\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.METHOD_KEY;\r\n+\r\n+@Deprecated\r\n+public abstract class AbstractCacheFactory implements CacheFactory {\r\n+\r\n+    private final ConcurrentMap<String, Cache> caches = new ConcurrentHashMap<String, Cache>();\r\n+\r\n+    @Override\r\n+    public Cache getCache(URL url, Invocation invocation) {\r\n+        url = url.addParameter(METHOD_KEY, invocation.getMethodName());\r\n+        String key = url.toFullString();\r\n+        Cache cache = caches.get(key);\r\n+        if (cache == null) {\r\n+            caches.put(key, createCache(url));\r\n+            cache = caches.get(key);\r\n+        }\r\n+        return cache;\r\n+    }\r\n+\r\n+    protected abstract Cache createCache(URL url);\r\n+\r\n+    @Override\r\n+    public org.apache.dubbo.cache.Cache getCache(org.apache.dubbo.common.URL url, org.apache.dubbo.rpc.Invocation invocation) {\r\n+        return getCache(new URL(url), new Invocation.CompatibleInvocation(invocation));\r\n+    }\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/common/Constants.java", "source2": "com/alibaba/dubbo/common/Constants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,43 +1,43 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.common;\n-\n-import org.apache.dubbo.common.constants.CommonConstants;\n-import org.apache.dubbo.common.constants.FilterConstants;\n-import org.apache.dubbo.common.constants.QosConstants;\n-import org.apache.dubbo.common.constants.RegistryConstants;\n-import org.apache.dubbo.common.constants.RemotingConstants;\n-\n-@Deprecated\n-public class Constants implements CommonConstants,\n-        QosConstants,\n-        FilterConstants,\n-        RegistryConstants,\n-        RemotingConstants,\n-        org.apache.dubbo.config.Constants,\n-        org.apache.dubbo.remoting.Constants,\n-        org.apache.dubbo.rpc.cluster.Constants,\n-        org.apache.dubbo.monitor.Constants,\n-        org.apache.dubbo.rpc.Constants,\n-        org.apache.dubbo.rpc.protocol.dubbo.Constants,\n-        org.apache.dubbo.common.serialize.Constants,\n-        org.apache.dubbo.common.config.configcenter.Constants,\n-        org.apache.dubbo.metadata.report.support.Constants ,\n-        org.apache.dubbo.rpc.protocol.rest.Constants,\n-        org.apache.dubbo.registry.Constants {\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.common;\r\n+\r\n+import org.apache.dubbo.common.constants.CommonConstants;\r\n+import org.apache.dubbo.common.constants.FilterConstants;\r\n+import org.apache.dubbo.common.constants.QosConstants;\r\n+import org.apache.dubbo.common.constants.RegistryConstants;\r\n+import org.apache.dubbo.common.constants.RemotingConstants;\r\n+\r\n+@Deprecated\r\n+public class Constants implements CommonConstants,\r\n+        QosConstants,\r\n+        FilterConstants,\r\n+        RegistryConstants,\r\n+        RemotingConstants,\r\n+        org.apache.dubbo.config.Constants,\r\n+        org.apache.dubbo.remoting.Constants,\r\n+        org.apache.dubbo.rpc.cluster.Constants,\r\n+        org.apache.dubbo.monitor.Constants,\r\n+        org.apache.dubbo.rpc.Constants,\r\n+        org.apache.dubbo.rpc.protocol.dubbo.Constants,\r\n+        org.apache.dubbo.common.serialize.Constants,\r\n+        org.apache.dubbo.common.config.configcenter.Constants,\r\n+        org.apache.dubbo.metadata.report.support.Constants ,\r\n+        org.apache.dubbo.rpc.protocol.rest.Constants,\r\n+        org.apache.dubbo.registry.Constants {\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/common/extension/ExtensionFactory.java", "source2": "com/alibaba/dubbo/common/extension/ExtensionFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,25 +1,25 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package com.alibaba.dubbo.common.extension;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-@Deprecated\n-@SPI\n-public interface ExtensionFactory extends org.apache.dubbo.common.extension.ExtensionFactory {\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package com.alibaba.dubbo.common.extension;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+@Deprecated\r\n+@SPI\r\n+public interface ExtensionFactory extends org.apache.dubbo.common.extension.ExtensionFactory {\r\n+\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/common/utils/UrlUtils.java", "source2": "com/alibaba/dubbo/common/utils/UrlUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,110 +1,110 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package com.alibaba.dubbo.common.utils;\n-\n-import com.alibaba.dubbo.common.URL;\n-\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.stream.Collectors;\n-\n-/**\n- * 2019-04-17\n- */\n-@Deprecated\n-public class UrlUtils {\n-\n-    public static URL parseURL(String address, Map<String, String> defaults) {\n-        return new URL(org.apache.dubbo.common.utils.UrlUtils.parseURL(address, defaults));\n-    }\n-\n-    public static List<URL> parseURLs(String address, Map<String, String> defaults) {\n-        return org.apache.dubbo.common.utils.UrlUtils.parseURLs(address, defaults).stream().map(e -> new URL(e)).collect(Collectors.toList());\n-    }\n-\n-    public static Map<String, Map<String, String>> convertRegister(Map<String, Map<String, String>> register) {\n-        return org.apache.dubbo.common.utils.UrlUtils.convertRegister(register);\n-    }\n-\n-    public static Map<String, String> convertSubscribe(Map<String, String> subscribe) {\n-        return org.apache.dubbo.common.utils.UrlUtils.convertSubscribe(subscribe);\n-    }\n-\n-    public static Map<String, Map<String, String>> revertRegister(Map<String, Map<String, String>> register) {\n-        return org.apache.dubbo.common.utils.UrlUtils.revertRegister(register);\n-    }\n-\n-    public static Map<String, String> revertSubscribe(Map<String, String> subscribe) {\n-        return org.apache.dubbo.common.utils.UrlUtils.revertSubscribe(subscribe);\n-    }\n-\n-    public static Map<String, Map<String, String>> revertNotify(Map<String, Map<String, String>> notify) {\n-        return org.apache.dubbo.common.utils.UrlUtils.revertNotify(notify);\n-    }\n-\n-    //compatible for dubbo-2.0.0\n-    public static List<String> revertForbid(List<String> forbid, Set<URL> subscribed) {\n-        Set<org.apache.dubbo.common.URL> urls = subscribed.stream().map(e -> e.getOriginalURL()).collect(Collectors.toSet());\n-        return org.apache.dubbo.common.utils.UrlUtils.revertForbid(forbid, urls);\n-    }\n-\n-    public static URL getEmptyUrl(String service, String category) {\n-        return new URL(org.apache.dubbo.common.utils.UrlUtils.getEmptyUrl(service, category));\n-    }\n-\n-    public static boolean isMatchCategory(String category, String categories) {\n-        return org.apache.dubbo.common.utils.UrlUtils.isMatchCategory(category, categories);\n-    }\n-\n-    public static boolean isMatch(URL consumerUrl, URL providerUrl) {\n-        return org.apache.dubbo.common.utils.UrlUtils.isMatch(consumerUrl.getOriginalURL(), providerUrl.getOriginalURL());\n-    }\n-\n-    public static boolean isMatchGlobPattern(String pattern, String value, URL param) {\n-        return org.apache.dubbo.common.utils.UrlUtils.isMatchGlobPattern(pattern, value, param.getOriginalURL());\n-    }\n-\n-    public static boolean isMatchGlobPattern(String pattern, String value) {\n-        return org.apache.dubbo.common.utils.UrlUtils.isMatchGlobPattern(pattern, value);\n-    }\n-\n-    public static boolean isServiceKeyMatch(URL pattern, URL value) {\n-        return org.apache.dubbo.common.utils.UrlUtils.isServiceKeyMatch(pattern.getOriginalURL(), value.getOriginalURL());\n-    }\n-\n-\n-    public static boolean isConfigurator(URL url) {\n-        return org.apache.dubbo.common.utils.UrlUtils.isConfigurator(url.getOriginalURL());\n-    }\n-\n-    public static boolean isRoute(URL url) {\n-        return org.apache.dubbo.common.utils.UrlUtils.isRoute(url.getOriginalURL());\n-    }\n-\n-    public static boolean isProvider(URL url) {\n-        return org.apache.dubbo.common.utils.UrlUtils.isProvider(url.getOriginalURL());\n-    }\n-\n-    public static int getHeartbeat(URL url) {\n-        return org.apache.dubbo.remoting.utils.UrlUtils.getHeartbeat(url.getOriginalURL());\n-    }\n-\n-    public static int getIdleTimeout(URL url) {\n-        return org.apache.dubbo.remoting.utils.UrlUtils.getIdleTimeout(url.getOriginalURL());\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package com.alibaba.dubbo.common.utils;\r\n+\r\n+import com.alibaba.dubbo.common.URL;\r\n+\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.stream.Collectors;\r\n+\r\n+/**\r\n+ * 2019-04-17\r\n+ */\r\n+@Deprecated\r\n+public class UrlUtils {\r\n+\r\n+    public static URL parseURL(String address, Map<String, String> defaults) {\r\n+        return new URL(org.apache.dubbo.common.utils.UrlUtils.parseURL(address, defaults));\r\n+    }\r\n+\r\n+    public static List<URL> parseURLs(String address, Map<String, String> defaults) {\r\n+        return org.apache.dubbo.common.utils.UrlUtils.parseURLs(address, defaults).stream().map(e -> new URL(e)).collect(Collectors.toList());\r\n+    }\r\n+\r\n+    public static Map<String, Map<String, String>> convertRegister(Map<String, Map<String, String>> register) {\r\n+        return org.apache.dubbo.common.utils.UrlUtils.convertRegister(register);\r\n+    }\r\n+\r\n+    public static Map<String, String> convertSubscribe(Map<String, String> subscribe) {\r\n+        return org.apache.dubbo.common.utils.UrlUtils.convertSubscribe(subscribe);\r\n+    }\r\n+\r\n+    public static Map<String, Map<String, String>> revertRegister(Map<String, Map<String, String>> register) {\r\n+        return org.apache.dubbo.common.utils.UrlUtils.revertRegister(register);\r\n+    }\r\n+\r\n+    public static Map<String, String> revertSubscribe(Map<String, String> subscribe) {\r\n+        return org.apache.dubbo.common.utils.UrlUtils.revertSubscribe(subscribe);\r\n+    }\r\n+\r\n+    public static Map<String, Map<String, String>> revertNotify(Map<String, Map<String, String>> notify) {\r\n+        return org.apache.dubbo.common.utils.UrlUtils.revertNotify(notify);\r\n+    }\r\n+\r\n+    //compatible for dubbo-2.0.0\r\n+    public static List<String> revertForbid(List<String> forbid, Set<URL> subscribed) {\r\n+        Set<org.apache.dubbo.common.URL> urls = subscribed.stream().map(e -> e.getOriginalURL()).collect(Collectors.toSet());\r\n+        return org.apache.dubbo.common.utils.UrlUtils.revertForbid(forbid, urls);\r\n+    }\r\n+\r\n+    public static URL getEmptyUrl(String service, String category) {\r\n+        return new URL(org.apache.dubbo.common.utils.UrlUtils.getEmptyUrl(service, category));\r\n+    }\r\n+\r\n+    public static boolean isMatchCategory(String category, String categories) {\r\n+        return org.apache.dubbo.common.utils.UrlUtils.isMatchCategory(category, categories);\r\n+    }\r\n+\r\n+    public static boolean isMatch(URL consumerUrl, URL providerUrl) {\r\n+        return org.apache.dubbo.common.utils.UrlUtils.isMatch(consumerUrl.getOriginalURL(), providerUrl.getOriginalURL());\r\n+    }\r\n+\r\n+    public static boolean isMatchGlobPattern(String pattern, String value, URL param) {\r\n+        return org.apache.dubbo.common.utils.UrlUtils.isMatchGlobPattern(pattern, value, param.getOriginalURL());\r\n+    }\r\n+\r\n+    public static boolean isMatchGlobPattern(String pattern, String value) {\r\n+        return org.apache.dubbo.common.utils.UrlUtils.isMatchGlobPattern(pattern, value);\r\n+    }\r\n+\r\n+    public static boolean isServiceKeyMatch(URL pattern, URL value) {\r\n+        return org.apache.dubbo.common.utils.UrlUtils.isServiceKeyMatch(pattern.getOriginalURL(), value.getOriginalURL());\r\n+    }\r\n+\r\n+\r\n+    public static boolean isConfigurator(URL url) {\r\n+        return org.apache.dubbo.common.utils.UrlUtils.isConfigurator(url.getOriginalURL());\r\n+    }\r\n+\r\n+    public static boolean isRoute(URL url) {\r\n+        return org.apache.dubbo.common.utils.UrlUtils.isRoute(url.getOriginalURL());\r\n+    }\r\n+\r\n+    public static boolean isProvider(URL url) {\r\n+        return org.apache.dubbo.common.utils.UrlUtils.isProvider(url.getOriginalURL());\r\n+    }\r\n+\r\n+    public static int getHeartbeat(URL url) {\r\n+        return org.apache.dubbo.remoting.utils.UrlUtils.getHeartbeat(url.getOriginalURL());\r\n+    }\r\n+\r\n+    public static int getIdleTimeout(URL url) {\r\n+        return org.apache.dubbo.remoting.utils.UrlUtils.getIdleTimeout(url.getOriginalURL());\r\n+    }\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/config/ReferenceConfig.java", "source2": "com/alibaba/dubbo/config/ReferenceConfig.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.config;\n-\n-import org.apache.dubbo.config.annotation.Reference;\n-\n-@Deprecated\n-public class ReferenceConfig<T> extends org.apache.dubbo.config.ReferenceConfig<T> {\n-\n-    public ReferenceConfig() {\n-    }\n-\n-    public ReferenceConfig(Reference reference) {\n-        super(reference);\n-    }\n-\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.config;\r\n+\r\n+import org.apache.dubbo.config.annotation.Reference;\r\n+\r\n+@Deprecated\r\n+public class ReferenceConfig<T> extends org.apache.dubbo.config.ReferenceConfig<T> {\r\n+\r\n+    public ReferenceConfig() {\r\n+    }\r\n+\r\n+    public ReferenceConfig(Reference reference) {\r\n+        super(reference);\r\n+    }\r\n+\r\n+\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/config/spring/context/annotation/EnableDubbo.java", "source2": "com/alibaba/dubbo/config/spring/context/annotation/EnableDubbo.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,75 +1,75 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.config.spring.context.annotation;\n-\n-import org.apache.dubbo.config.AbstractConfig;\n-import org.apache.dubbo.config.spring.context.annotation.DubboComponentScan;\n-import org.apache.dubbo.config.spring.context.annotation.EnableDubboConfig;\n-\n-import org.springframework.core.annotation.AliasFor;\n-\n-import java.lang.annotation.Documented;\n-import java.lang.annotation.ElementType;\n-import java.lang.annotation.Inherited;\n-import java.lang.annotation.Retention;\n-import java.lang.annotation.RetentionPolicy;\n-import java.lang.annotation.Target;\n-\n-@Deprecated\n-@Target({ElementType.TYPE})\n-@Retention(RetentionPolicy.RUNTIME)\n-@Inherited\n-@Documented\n-@EnableDubboConfig\n-@DubboComponentScan\n-public @interface EnableDubbo {\n-\n-    /**\n-     * Base packages to scan for annotated @Service classes.\n-     * <p>\n-     * Use {@link #scanBasePackageClasses()} for a type-safe alternative to String-based\n-     * package names.\n-     *\n-     * @return the base packages to scan\n-     * @see DubboComponentScan#basePackages()\n-     */\n-    @AliasFor(annotation = DubboComponentScan.class, attribute = \"basePackages\")\n-    String[] scanBasePackages() default {};\n-\n-    /**\n-     * Type-safe alternative to {@link #scanBasePackages()} for specifying the packages to\n-     * scan for annotated @Service classes. The package of each class specified will be\n-     * scanned.\n-     *\n-     * @return classes from the base packages to scan\n-     * @see DubboComponentScan#basePackageClasses\n-     */\n-    @AliasFor(annotation = DubboComponentScan.class, attribute = \"basePackageClasses\")\n-    Class<?>[] scanBasePackageClasses() default {};\n-\n-\n-    /**\n-     * It indicates whether {@link AbstractConfig} binding to multiple Spring Beans.\n-     *\n-     * @return the default value is <code>false</code>\n-     * @see EnableDubboConfig#multiple()\n-     */\n-    @AliasFor(annotation = EnableDubboConfig.class, attribute = \"multiple\")\n-    boolean multipleConfig() default false;\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.config.spring.context.annotation;\r\n+\r\n+import org.apache.dubbo.config.AbstractConfig;\r\n+import org.apache.dubbo.config.spring.context.annotation.DubboComponentScan;\r\n+import org.apache.dubbo.config.spring.context.annotation.EnableDubboConfig;\r\n+\r\n+import org.springframework.core.annotation.AliasFor;\r\n+\r\n+import java.lang.annotation.Documented;\r\n+import java.lang.annotation.ElementType;\r\n+import java.lang.annotation.Inherited;\r\n+import java.lang.annotation.Retention;\r\n+import java.lang.annotation.RetentionPolicy;\r\n+import java.lang.annotation.Target;\r\n+\r\n+@Deprecated\r\n+@Target({ElementType.TYPE})\r\n+@Retention(RetentionPolicy.RUNTIME)\r\n+@Inherited\r\n+@Documented\r\n+@EnableDubboConfig\r\n+@DubboComponentScan\r\n+public @interface EnableDubbo {\r\n+\r\n+    /**\r\n+     * Base packages to scan for annotated @Service classes.\r\n+     * <p>\r\n+     * Use {@link #scanBasePackageClasses()} for a type-safe alternative to String-based\r\n+     * package names.\r\n+     *\r\n+     * @return the base packages to scan\r\n+     * @see DubboComponentScan#basePackages()\r\n+     */\r\n+    @AliasFor(annotation = DubboComponentScan.class, attribute = \"basePackages\")\r\n+    String[] scanBasePackages() default {};\r\n+\r\n+    /**\r\n+     * Type-safe alternative to {@link #scanBasePackages()} for specifying the packages to\r\n+     * scan for annotated @Service classes. The package of each class specified will be\r\n+     * scanned.\r\n+     *\r\n+     * @return classes from the base packages to scan\r\n+     * @see DubboComponentScan#basePackageClasses\r\n+     */\r\n+    @AliasFor(annotation = DubboComponentScan.class, attribute = \"basePackageClasses\")\r\n+    Class<?>[] scanBasePackageClasses() default {};\r\n+\r\n+\r\n+    /**\r\n+     * It indicates whether {@link AbstractConfig} binding to multiple Spring Beans.\r\n+     *\r\n+     * @return the default value is <code>false</code>\r\n+     * @see EnableDubboConfig#multiple()\r\n+     */\r\n+    @AliasFor(annotation = EnableDubboConfig.class, attribute = \"multiple\")\r\n+    boolean multipleConfig() default false;\r\n+\r\n }\n"}, {"source1": "com/alibaba/dubbo/registry/NotifyListener.java", "source2": "com/alibaba/dubbo/registry/NotifyListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,61 +1,61 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.registry;\n-\n-import com.alibaba.dubbo.common.URL;\n-\n-import java.util.List;\n-import java.util.stream.Collectors;\n-\n-@Deprecated\n-public interface NotifyListener {\n-\n-    void notify(List<URL> urls);\n-\n-    class CompatibleNotifyListener implements NotifyListener {\n-\n-        private org.apache.dubbo.registry.NotifyListener listener;\n-\n-        public CompatibleNotifyListener(org.apache.dubbo.registry.NotifyListener listener) {\n-            this.listener = listener;\n-        }\n-\n-        @Override\n-        public void notify(List<URL> urls) {\n-            if (listener != null) {\n-                listener.notify(urls.stream().map(url -> url.getOriginalURL()).collect(Collectors.toList()));\n-            }\n-        }\n-    }\n-\n-    class ReverseCompatibleNotifyListener implements org.apache.dubbo.registry.NotifyListener {\n-\n-        private NotifyListener listener;\n-\n-        public ReverseCompatibleNotifyListener(NotifyListener listener) {\n-            this.listener = listener;\n-        }\n-\n-        @Override\n-        public void notify(List<org.apache.dubbo.common.URL> urls) {\n-            if (listener != null) {\n-                listener.notify(urls.stream().map(url -> new URL(url)).collect(Collectors.toList()));\n-            }\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.registry;\r\n+\r\n+import com.alibaba.dubbo.common.URL;\r\n+\r\n+import java.util.List;\r\n+import java.util.stream.Collectors;\r\n+\r\n+@Deprecated\r\n+public interface NotifyListener {\r\n+\r\n+    void notify(List<URL> urls);\r\n+\r\n+    class CompatibleNotifyListener implements NotifyListener {\r\n+\r\n+        private org.apache.dubbo.registry.NotifyListener listener;\r\n+\r\n+        public CompatibleNotifyListener(org.apache.dubbo.registry.NotifyListener listener) {\r\n+            this.listener = listener;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void notify(List<URL> urls) {\r\n+            if (listener != null) {\r\n+                listener.notify(urls.stream().map(url -> url.getOriginalURL()).collect(Collectors.toList()));\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    class ReverseCompatibleNotifyListener implements org.apache.dubbo.registry.NotifyListener {\r\n+\r\n+        private NotifyListener listener;\r\n+\r\n+        public ReverseCompatibleNotifyListener(NotifyListener listener) {\r\n+            this.listener = listener;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void notify(List<org.apache.dubbo.common.URL> urls) {\r\n+            if (listener != null) {\r\n+                listener.notify(urls.stream().map(url -> new URL(url)).collect(Collectors.toList()));\r\n+            }\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/registry/support/AbstractRegistry.java", "source2": "com/alibaba/dubbo/registry/support/AbstractRegistry.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,147 +1,147 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package com.alibaba.dubbo.registry.support;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.NotifyListener;\n-import org.apache.dubbo.registry.Registry;\n-\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.stream.Collectors;\n-\n-/**\n- * 2019-04-16\n- */\n-@Deprecated\n-public abstract class AbstractRegistry implements Registry {\n-\n-    private CompatibleAbstractRegistry abstractRegistry;\n-\n-    public AbstractRegistry(com.alibaba.dubbo.common.URL url) {\n-        abstractRegistry = new CompatibleAbstractRegistry(url.getOriginalURL());\n-    }\n-\n-    @Override\n-    public com.alibaba.dubbo.common.URL getUrl() {\n-        return new com.alibaba.dubbo.common.URL(abstractRegistry.getUrl());\n-    }\n-\n-    protected void setUrl(com.alibaba.dubbo.common.URL url) {\n-        abstractRegistry.setUrl(url.getOriginalURL());\n-    }\n-\n-    public Set<com.alibaba.dubbo.common.URL> getRegistered() {\n-        return abstractRegistry.getRegistered().stream().map(url -> new com.alibaba.dubbo.common.URL(url)).collect(Collectors.toSet());\n-    }\n-\n-    public Map<com.alibaba.dubbo.common.URL, Set<com.alibaba.dubbo.registry.NotifyListener>> getSubscribed() {\n-        return abstractRegistry.getSubscribed().entrySet()\n-                .stream()\n-                .collect(Collectors.toMap(entry -> new com.alibaba.dubbo.common.URL(entry.getKey()),\n-                        entry -> convertToNotifyListeners(entry.getValue())));\n-    }\n-\n-    public Map<com.alibaba.dubbo.common.URL, Map<String, List<com.alibaba.dubbo.common.URL>>> getNotified() {\n-        return abstractRegistry.getNotified().entrySet().stream()\n-                .collect(Collectors.toMap(entry -> new com.alibaba.dubbo.common.URL(entry.getKey()),\n-                        entry -> {\n-                            return entry.getValue().entrySet()\n-                                    .stream()\n-                                    .collect(Collectors.toMap(e -> e.getKey(), e -> {\n-                                        return e.getValue().stream().map(url -> new com.alibaba.dubbo.common.URL(url)).collect(Collectors.toList());\n-                                    }));\n-                        }));\n-    }\n-\n-\n-    public List<com.alibaba.dubbo.common.URL> getCacheUrls(com.alibaba.dubbo.common.URL url) {\n-        return abstractRegistry.lookup(url.getOriginalURL()).stream().map(tmpUrl -> new com.alibaba.dubbo.common.URL(tmpUrl)).collect(Collectors.toList());\n-    }\n-\n-    public List<com.alibaba.dubbo.common.URL> lookup(com.alibaba.dubbo.common.URL url) {\n-        return abstractRegistry.lookup(url.getOriginalURL()).stream().map(tmpUrl -> new com.alibaba.dubbo.common.URL(tmpUrl)).collect(Collectors.toList());\n-    }\n-\n-    protected void notify(com.alibaba.dubbo.common.URL url, com.alibaba.dubbo.registry.NotifyListener listener, List<com.alibaba.dubbo.common.URL> urls) {\n-        abstractRegistry.notify(url.getOriginalURL(), new com.alibaba.dubbo.registry.NotifyListener.ReverseCompatibleNotifyListener(listener), urls.stream().map(tmpUrl -> tmpUrl.getOriginalURL()).collect(Collectors.toList()));\n-    }\n-\n-    public void register(com.alibaba.dubbo.common.URL url) {\n-        abstractRegistry.register(url.getOriginalURL());\n-    }\n-\n-    public void unregister(com.alibaba.dubbo.common.URL url) {\n-        abstractRegistry.unregister(url.getOriginalURL());\n-    }\n-\n-    public void subscribe(com.alibaba.dubbo.common.URL url, com.alibaba.dubbo.registry.NotifyListener listener) {\n-        abstractRegistry.subscribe(url.getOriginalURL(), new com.alibaba.dubbo.registry.NotifyListener.ReverseCompatibleNotifyListener(listener));\n-    }\n-\n-    public void unsubscribe(com.alibaba.dubbo.common.URL url, com.alibaba.dubbo.registry.NotifyListener listener) {\n-        abstractRegistry.unsubscribe(url.getOriginalURL(), new com.alibaba.dubbo.registry.NotifyListener.ReverseCompatibleNotifyListener(listener));\n-    }\n-\n-\n-    @Override\n-    public void register(URL url) {\n-        this.register(new com.alibaba.dubbo.common.URL(url));\n-    }\n-\n-    @Override\n-    public void unregister(URL url) {\n-        this.unregister(new com.alibaba.dubbo.common.URL(url));\n-    }\n-\n-    @Override\n-    public void subscribe(URL url, NotifyListener listener) {\n-        this.subscribe(new com.alibaba.dubbo.common.URL(url), new com.alibaba.dubbo.registry.NotifyListener.CompatibleNotifyListener(listener));\n-    }\n-\n-    @Override\n-    public void unsubscribe(URL url, NotifyListener listener) {\n-        this.unsubscribe(new com.alibaba.dubbo.common.URL(url), new com.alibaba.dubbo.registry.NotifyListener.CompatibleNotifyListener(listener));\n-    }\n-\n-    final Set<com.alibaba.dubbo.registry.NotifyListener> convertToNotifyListeners(Set<NotifyListener> notifyListeners) {\n-        return notifyListeners.stream().map(listener -> new com.alibaba.dubbo.registry.NotifyListener.CompatibleNotifyListener(listener)).collect(Collectors.toSet());\n-    }\n-\n-\n-    static class CompatibleAbstractRegistry extends org.apache.dubbo.registry.support.AbstractRegistry {\n-        public CompatibleAbstractRegistry(URL url) {\n-            super(url);\n-        }\n-\n-        @Override\n-        public boolean isAvailable() {\n-            return false;\n-        }\n-\n-        @Override\n-        public void notify(URL url, NotifyListener listener, List<URL> urls) {\n-            super.notify(url, listener, urls);\n-        }\n-\n-        @Override\n-        public void setUrl(URL url) {\n-            super.setUrl(url);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package com.alibaba.dubbo.registry.support;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.NotifyListener;\r\n+import org.apache.dubbo.registry.Registry;\r\n+\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.stream.Collectors;\r\n+\r\n+/**\r\n+ * 2019-04-16\r\n+ */\r\n+@Deprecated\r\n+public abstract class AbstractRegistry implements Registry {\r\n+\r\n+    private CompatibleAbstractRegistry abstractRegistry;\r\n+\r\n+    public AbstractRegistry(com.alibaba.dubbo.common.URL url) {\r\n+        abstractRegistry = new CompatibleAbstractRegistry(url.getOriginalURL());\r\n+    }\r\n+\r\n+    @Override\r\n+    public com.alibaba.dubbo.common.URL getUrl() {\r\n+        return new com.alibaba.dubbo.common.URL(abstractRegistry.getUrl());\r\n+    }\r\n+\r\n+    protected void setUrl(com.alibaba.dubbo.common.URL url) {\r\n+        abstractRegistry.setUrl(url.getOriginalURL());\r\n+    }\r\n+\r\n+    public Set<com.alibaba.dubbo.common.URL> getRegistered() {\r\n+        return abstractRegistry.getRegistered().stream().map(url -> new com.alibaba.dubbo.common.URL(url)).collect(Collectors.toSet());\r\n+    }\r\n+\r\n+    public Map<com.alibaba.dubbo.common.URL, Set<com.alibaba.dubbo.registry.NotifyListener>> getSubscribed() {\r\n+        return abstractRegistry.getSubscribed().entrySet()\r\n+                .stream()\r\n+                .collect(Collectors.toMap(entry -> new com.alibaba.dubbo.common.URL(entry.getKey()),\r\n+                        entry -> convertToNotifyListeners(entry.getValue())));\r\n+    }\r\n+\r\n+    public Map<com.alibaba.dubbo.common.URL, Map<String, List<com.alibaba.dubbo.common.URL>>> getNotified() {\r\n+        return abstractRegistry.getNotified().entrySet().stream()\r\n+                .collect(Collectors.toMap(entry -> new com.alibaba.dubbo.common.URL(entry.getKey()),\r\n+                        entry -> {\r\n+                            return entry.getValue().entrySet()\r\n+                                    .stream()\r\n+                                    .collect(Collectors.toMap(e -> e.getKey(), e -> {\r\n+                                        return e.getValue().stream().map(url -> new com.alibaba.dubbo.common.URL(url)).collect(Collectors.toList());\r\n+                                    }));\r\n+                        }));\r\n+    }\r\n+\r\n+\r\n+    public List<com.alibaba.dubbo.common.URL> getCacheUrls(com.alibaba.dubbo.common.URL url) {\r\n+        return abstractRegistry.lookup(url.getOriginalURL()).stream().map(tmpUrl -> new com.alibaba.dubbo.common.URL(tmpUrl)).collect(Collectors.toList());\r\n+    }\r\n+\r\n+    public List<com.alibaba.dubbo.common.URL> lookup(com.alibaba.dubbo.common.URL url) {\r\n+        return abstractRegistry.lookup(url.getOriginalURL()).stream().map(tmpUrl -> new com.alibaba.dubbo.common.URL(tmpUrl)).collect(Collectors.toList());\r\n+    }\r\n+\r\n+    protected void notify(com.alibaba.dubbo.common.URL url, com.alibaba.dubbo.registry.NotifyListener listener, List<com.alibaba.dubbo.common.URL> urls) {\r\n+        abstractRegistry.notify(url.getOriginalURL(), new com.alibaba.dubbo.registry.NotifyListener.ReverseCompatibleNotifyListener(listener), urls.stream().map(tmpUrl -> tmpUrl.getOriginalURL()).collect(Collectors.toList()));\r\n+    }\r\n+\r\n+    public void register(com.alibaba.dubbo.common.URL url) {\r\n+        abstractRegistry.register(url.getOriginalURL());\r\n+    }\r\n+\r\n+    public void unregister(com.alibaba.dubbo.common.URL url) {\r\n+        abstractRegistry.unregister(url.getOriginalURL());\r\n+    }\r\n+\r\n+    public void subscribe(com.alibaba.dubbo.common.URL url, com.alibaba.dubbo.registry.NotifyListener listener) {\r\n+        abstractRegistry.subscribe(url.getOriginalURL(), new com.alibaba.dubbo.registry.NotifyListener.ReverseCompatibleNotifyListener(listener));\r\n+    }\r\n+\r\n+    public void unsubscribe(com.alibaba.dubbo.common.URL url, com.alibaba.dubbo.registry.NotifyListener listener) {\r\n+        abstractRegistry.unsubscribe(url.getOriginalURL(), new com.alibaba.dubbo.registry.NotifyListener.ReverseCompatibleNotifyListener(listener));\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public void register(URL url) {\r\n+        this.register(new com.alibaba.dubbo.common.URL(url));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unregister(URL url) {\r\n+        this.unregister(new com.alibaba.dubbo.common.URL(url));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void subscribe(URL url, NotifyListener listener) {\r\n+        this.subscribe(new com.alibaba.dubbo.common.URL(url), new com.alibaba.dubbo.registry.NotifyListener.CompatibleNotifyListener(listener));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unsubscribe(URL url, NotifyListener listener) {\r\n+        this.unsubscribe(new com.alibaba.dubbo.common.URL(url), new com.alibaba.dubbo.registry.NotifyListener.CompatibleNotifyListener(listener));\r\n+    }\r\n+\r\n+    final Set<com.alibaba.dubbo.registry.NotifyListener> convertToNotifyListeners(Set<NotifyListener> notifyListeners) {\r\n+        return notifyListeners.stream().map(listener -> new com.alibaba.dubbo.registry.NotifyListener.CompatibleNotifyListener(listener)).collect(Collectors.toSet());\r\n+    }\r\n+\r\n+\r\n+    static class CompatibleAbstractRegistry extends org.apache.dubbo.registry.support.AbstractRegistry {\r\n+        public CompatibleAbstractRegistry(URL url) {\r\n+            super(url);\r\n+        }\r\n+\r\n+        @Override\r\n+        public boolean isAvailable() {\r\n+            return false;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void notify(URL url, NotifyListener listener, List<URL> urls) {\r\n+            super.notify(url, listener, urls);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void setUrl(URL url) {\r\n+            super.setUrl(url);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/registry/support/AbstractRegistryFactory.java", "source2": "com/alibaba/dubbo/registry/support/AbstractRegistryFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,35 +1,35 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package com.alibaba.dubbo.registry.support;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.registry.Registry;\n-\n-/**\n- * 2019-04-16\n- */\n-@Deprecated\n-public abstract class AbstractRegistryFactory extends org.apache.dubbo.registry.support.AbstractRegistryFactory {\n-\n-\n-    protected abstract com.alibaba.dubbo.registry.Registry createRegistry(com.alibaba.dubbo.common.URL url);\n-\n-    @Override\n-    protected Registry createRegistry(URL url) {\n-        return createRegistry(new com.alibaba.dubbo.common.URL(url));\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package com.alibaba.dubbo.registry.support;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.registry.Registry;\r\n+\r\n+/**\r\n+ * 2019-04-16\r\n+ */\r\n+@Deprecated\r\n+public abstract class AbstractRegistryFactory extends org.apache.dubbo.registry.support.AbstractRegistryFactory {\r\n+\r\n+\r\n+    protected abstract com.alibaba.dubbo.registry.Registry createRegistry(com.alibaba.dubbo.common.URL url);\r\n+\r\n+    @Override\r\n+    protected Registry createRegistry(URL url) {\r\n+        return createRegistry(new com.alibaba.dubbo.common.URL(url));\r\n+    }\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/registry/support/FailbackRegistry.java", "source2": "com/alibaba/dubbo/registry/support/FailbackRegistry.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,189 +1,189 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package com.alibaba.dubbo.registry.support;\n-\n-import com.alibaba.dubbo.common.URL;\n-import com.alibaba.dubbo.registry.NotifyListener;\n-import com.alibaba.dubbo.registry.Registry;\n-\n-import java.util.List;\n-import java.util.stream.Collectors;\n-\n-/**\n- * 2019-04-17\n- */\n-@Deprecated\n-public abstract class FailbackRegistry implements org.apache.dubbo.registry.Registry, Registry {\n-\n-    private CompatibleFailbackRegistry failbackRegistry;\n-\n-    public FailbackRegistry(URL url) {\n-        failbackRegistry = new CompatibleFailbackRegistry(url.getOriginalURL(), this);\n-    }\n-\n-    public void removeFailedRegisteredTask(URL url) {\n-        failbackRegistry.removeFailedRegisteredTask(url.getOriginalURL());\n-    }\n-\n-    public void removeFailedUnregisteredTask(URL url) {\n-        failbackRegistry.removeFailedUnregisteredTask(url.getOriginalURL());\n-    }\n-\n-    public void removeFailedSubscribedTask(URL url, NotifyListener listener) {\n-        failbackRegistry.removeFailedSubscribedTask(url.getOriginalURL(), new NotifyListener.ReverseCompatibleNotifyListener(listener));\n-    }\n-\n-    public void removeFailedUnsubscribedTask(URL url, NotifyListener listener) {\n-        failbackRegistry.removeFailedUnsubscribedTask(url.getOriginalURL(), new NotifyListener.ReverseCompatibleNotifyListener(listener));\n-    }\n-\n-    @Override\n-    public void register(URL url) {\n-        failbackRegistry.register(url.getOriginalURL());\n-    }\n-\n-    @Override\n-    public void unregister(URL url) {\n-        failbackRegistry.unregister(url.getOriginalURL());\n-    }\n-\n-    @Override\n-    public void subscribe(URL url, NotifyListener listener) {\n-        failbackRegistry.subscribe(url.getOriginalURL(), new com.alibaba.dubbo.registry.NotifyListener.ReverseCompatibleNotifyListener(listener));\n-    }\n-\n-    @Override\n-    public void unsubscribe(URL url, NotifyListener listener) {\n-        failbackRegistry.unsubscribe(url.getOriginalURL(), new com.alibaba.dubbo.registry.NotifyListener.ReverseCompatibleNotifyListener(listener));\n-    }\n-\n-    protected void notify(URL url, NotifyListener listener, List<URL> urls) {\n-        List<org.apache.dubbo.common.URL> urlResult = urls.stream().map(URL::getOriginalURL).collect(Collectors.toList());\n-        failbackRegistry.notify(url.getOriginalURL(), new com.alibaba.dubbo.registry.NotifyListener.ReverseCompatibleNotifyListener(listener), urlResult);\n-    }\n-\n-    protected void doNotify(URL url, NotifyListener listener, List<URL> urls) {\n-        List<org.apache.dubbo.common.URL> urlResult = urls.stream().map(URL::getOriginalURL).collect(Collectors.toList());\n-        failbackRegistry.doNotify(url.getOriginalURL(), new com.alibaba.dubbo.registry.NotifyListener.ReverseCompatibleNotifyListener(listener), urlResult);\n-    }\n-\n-    protected void recover() throws Exception {\n-        failbackRegistry.recover();\n-    }\n-\n-    @Override\n-    public List<URL> lookup(URL url) {\n-        return failbackRegistry.lookup(url.getOriginalURL()).stream().map(e -> new URL(e)).collect(Collectors.toList());\n-    }\n-\n-    @Override\n-    public URL getUrl() {\n-        return new URL(failbackRegistry.getUrl());\n-    }\n-\n-    @Override\n-    public void destroy() {\n-        failbackRegistry.destroy();\n-    }\n-\n-    // ==== Template method ====\n-\n-    public abstract void doRegister(URL url);\n-\n-    public abstract void doUnregister(URL url);\n-\n-    public abstract void doSubscribe(URL url, NotifyListener listener);\n-\n-    public abstract void doUnsubscribe(URL url, NotifyListener listener);\n-\n-    @Override\n-    public void register(org.apache.dubbo.common.URL url) {\n-        this.register(new URL(url));\n-    }\n-\n-    @Override\n-    public void unregister(org.apache.dubbo.common.URL url) {\n-        this.unregister(new URL(url));\n-    }\n-\n-    @Override\n-    public void subscribe(org.apache.dubbo.common.URL url, org.apache.dubbo.registry.NotifyListener listener) {\n-        this.subscribe(new URL(url), new NotifyListener.CompatibleNotifyListener(listener));\n-    }\n-\n-    @Override\n-    public void unsubscribe(org.apache.dubbo.common.URL url, org.apache.dubbo.registry.NotifyListener listener) {\n-        this.unsubscribe(new URL(url), new NotifyListener.CompatibleNotifyListener(listener));\n-    }\n-\n-    @Override\n-    public List<org.apache.dubbo.common.URL> lookup(org.apache.dubbo.common.URL url) {\n-        return failbackRegistry.lookup(url);\n-    }\n-\n-\n-    static class CompatibleFailbackRegistry extends org.apache.dubbo.registry.support.FailbackRegistry {\n-\n-        private FailbackRegistry compatibleFailbackRegistry;\n-\n-        public CompatibleFailbackRegistry(org.apache.dubbo.common.URL url, FailbackRegistry compatibleFailbackRegistry) {\n-            super(url);\n-            this.compatibleFailbackRegistry = compatibleFailbackRegistry;\n-        }\n-\n-        @Override\n-        public void doRegister(org.apache.dubbo.common.URL url) {\n-            this.compatibleFailbackRegistry.doRegister(new URL(url));\n-        }\n-\n-        @Override\n-        public void doUnregister(org.apache.dubbo.common.URL url) {\n-            this.compatibleFailbackRegistry.doUnregister(new URL(url));\n-        }\n-\n-        @Override\n-        public void doSubscribe(org.apache.dubbo.common.URL url, org.apache.dubbo.registry.NotifyListener listener) {\n-            this.compatibleFailbackRegistry.doSubscribe(new URL(url), new NotifyListener.CompatibleNotifyListener(listener));\n-        }\n-\n-        @Override\n-        public void doUnsubscribe(org.apache.dubbo.common.URL url, org.apache.dubbo.registry.NotifyListener listener) {\n-            this.compatibleFailbackRegistry.doUnsubscribe(new URL(url), new NotifyListener.CompatibleNotifyListener(listener));\n-        }\n-\n-        @Override\n-        public void notify(org.apache.dubbo.common.URL url, org.apache.dubbo.registry.NotifyListener listener, List<org.apache.dubbo.common.URL> urls) {\n-            super.notify(url, listener, urls);\n-        }\n-\n-        @Override\n-        public void doNotify(org.apache.dubbo.common.URL url, org.apache.dubbo.registry.NotifyListener listener, List<org.apache.dubbo.common.URL> urls) {\n-            super.doNotify(url, listener, urls);\n-        }\n-\n-        @Override\n-        public boolean isAvailable() {\n-            return false;\n-        }\n-\n-        @Override\n-        public void recover() throws Exception {\n-            super.recover();\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package com.alibaba.dubbo.registry.support;\r\n+\r\n+import com.alibaba.dubbo.common.URL;\r\n+import com.alibaba.dubbo.registry.NotifyListener;\r\n+import com.alibaba.dubbo.registry.Registry;\r\n+\r\n+import java.util.List;\r\n+import java.util.stream.Collectors;\r\n+\r\n+/**\r\n+ * 2019-04-17\r\n+ */\r\n+@Deprecated\r\n+public abstract class FailbackRegistry implements org.apache.dubbo.registry.Registry, Registry {\r\n+\r\n+    private CompatibleFailbackRegistry failbackRegistry;\r\n+\r\n+    public FailbackRegistry(URL url) {\r\n+        failbackRegistry = new CompatibleFailbackRegistry(url.getOriginalURL(), this);\r\n+    }\r\n+\r\n+    public void removeFailedRegisteredTask(URL url) {\r\n+        failbackRegistry.removeFailedRegisteredTask(url.getOriginalURL());\r\n+    }\r\n+\r\n+    public void removeFailedUnregisteredTask(URL url) {\r\n+        failbackRegistry.removeFailedUnregisteredTask(url.getOriginalURL());\r\n+    }\r\n+\r\n+    public void removeFailedSubscribedTask(URL url, NotifyListener listener) {\r\n+        failbackRegistry.removeFailedSubscribedTask(url.getOriginalURL(), new NotifyListener.ReverseCompatibleNotifyListener(listener));\r\n+    }\r\n+\r\n+    public void removeFailedUnsubscribedTask(URL url, NotifyListener listener) {\r\n+        failbackRegistry.removeFailedUnsubscribedTask(url.getOriginalURL(), new NotifyListener.ReverseCompatibleNotifyListener(listener));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void register(URL url) {\r\n+        failbackRegistry.register(url.getOriginalURL());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unregister(URL url) {\r\n+        failbackRegistry.unregister(url.getOriginalURL());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void subscribe(URL url, NotifyListener listener) {\r\n+        failbackRegistry.subscribe(url.getOriginalURL(), new com.alibaba.dubbo.registry.NotifyListener.ReverseCompatibleNotifyListener(listener));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unsubscribe(URL url, NotifyListener listener) {\r\n+        failbackRegistry.unsubscribe(url.getOriginalURL(), new com.alibaba.dubbo.registry.NotifyListener.ReverseCompatibleNotifyListener(listener));\r\n+    }\r\n+\r\n+    protected void notify(URL url, NotifyListener listener, List<URL> urls) {\r\n+        List<org.apache.dubbo.common.URL> urlResult = urls.stream().map(URL::getOriginalURL).collect(Collectors.toList());\r\n+        failbackRegistry.notify(url.getOriginalURL(), new com.alibaba.dubbo.registry.NotifyListener.ReverseCompatibleNotifyListener(listener), urlResult);\r\n+    }\r\n+\r\n+    protected void doNotify(URL url, NotifyListener listener, List<URL> urls) {\r\n+        List<org.apache.dubbo.common.URL> urlResult = urls.stream().map(URL::getOriginalURL).collect(Collectors.toList());\r\n+        failbackRegistry.doNotify(url.getOriginalURL(), new com.alibaba.dubbo.registry.NotifyListener.ReverseCompatibleNotifyListener(listener), urlResult);\r\n+    }\r\n+\r\n+    protected void recover() throws Exception {\r\n+        failbackRegistry.recover();\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<URL> lookup(URL url) {\r\n+        return failbackRegistry.lookup(url.getOriginalURL()).stream().map(e -> new URL(e)).collect(Collectors.toList());\r\n+    }\r\n+\r\n+    @Override\r\n+    public URL getUrl() {\r\n+        return new URL(failbackRegistry.getUrl());\r\n+    }\r\n+\r\n+    @Override\r\n+    public void destroy() {\r\n+        failbackRegistry.destroy();\r\n+    }\r\n+\r\n+    // ==== Template method ====\r\n+\r\n+    public abstract void doRegister(URL url);\r\n+\r\n+    public abstract void doUnregister(URL url);\r\n+\r\n+    public abstract void doSubscribe(URL url, NotifyListener listener);\r\n+\r\n+    public abstract void doUnsubscribe(URL url, NotifyListener listener);\r\n+\r\n+    @Override\r\n+    public void register(org.apache.dubbo.common.URL url) {\r\n+        this.register(new URL(url));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unregister(org.apache.dubbo.common.URL url) {\r\n+        this.unregister(new URL(url));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void subscribe(org.apache.dubbo.common.URL url, org.apache.dubbo.registry.NotifyListener listener) {\r\n+        this.subscribe(new URL(url), new NotifyListener.CompatibleNotifyListener(listener));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void unsubscribe(org.apache.dubbo.common.URL url, org.apache.dubbo.registry.NotifyListener listener) {\r\n+        this.unsubscribe(new URL(url), new NotifyListener.CompatibleNotifyListener(listener));\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<org.apache.dubbo.common.URL> lookup(org.apache.dubbo.common.URL url) {\r\n+        return failbackRegistry.lookup(url);\r\n+    }\r\n+\r\n+\r\n+    static class CompatibleFailbackRegistry extends org.apache.dubbo.registry.support.FailbackRegistry {\r\n+\r\n+        private FailbackRegistry compatibleFailbackRegistry;\r\n+\r\n+        public CompatibleFailbackRegistry(org.apache.dubbo.common.URL url, FailbackRegistry compatibleFailbackRegistry) {\r\n+            super(url);\r\n+            this.compatibleFailbackRegistry = compatibleFailbackRegistry;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void doRegister(org.apache.dubbo.common.URL url) {\r\n+            this.compatibleFailbackRegistry.doRegister(new URL(url));\r\n+        }\r\n+\r\n+        @Override\r\n+        public void doUnregister(org.apache.dubbo.common.URL url) {\r\n+            this.compatibleFailbackRegistry.doUnregister(new URL(url));\r\n+        }\r\n+\r\n+        @Override\r\n+        public void doSubscribe(org.apache.dubbo.common.URL url, org.apache.dubbo.registry.NotifyListener listener) {\r\n+            this.compatibleFailbackRegistry.doSubscribe(new URL(url), new NotifyListener.CompatibleNotifyListener(listener));\r\n+        }\r\n+\r\n+        @Override\r\n+        public void doUnsubscribe(org.apache.dubbo.common.URL url, org.apache.dubbo.registry.NotifyListener listener) {\r\n+            this.compatibleFailbackRegistry.doUnsubscribe(new URL(url), new NotifyListener.CompatibleNotifyListener(listener));\r\n+        }\r\n+\r\n+        @Override\r\n+        public void notify(org.apache.dubbo.common.URL url, org.apache.dubbo.registry.NotifyListener listener, List<org.apache.dubbo.common.URL> urls) {\r\n+            super.notify(url, listener, urls);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void doNotify(org.apache.dubbo.common.URL url, org.apache.dubbo.registry.NotifyListener listener, List<org.apache.dubbo.common.URL> urls) {\r\n+            super.doNotify(url, listener, urls);\r\n+        }\r\n+\r\n+        @Override\r\n+        public boolean isAvailable() {\r\n+            return false;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void recover() throws Exception {\r\n+            super.recover();\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/remoting/RemotingException.java", "source2": "com/alibaba/dubbo/remoting/RemotingException.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,54 +1,54 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.remoting;\n-\n-import org.apache.dubbo.remoting.Channel;\n-\n-import java.net.InetSocketAddress;\n-\n-@Deprecated\n-public class RemotingException extends org.apache.dubbo.remoting.RemotingException {\n-\n-    public RemotingException(Channel channel, String msg) {\n-        super(channel, msg);\n-    }\n-\n-    public RemotingException(InetSocketAddress localAddress, InetSocketAddress remoteAddress, String message) {\n-        super(localAddress, remoteAddress, message);\n-    }\n-\n-    public RemotingException(Channel channel, Throwable cause) {\n-        super(channel, cause);\n-    }\n-\n-    public RemotingException(InetSocketAddress localAddress, InetSocketAddress remoteAddress, Throwable cause) {\n-        super(localAddress, remoteAddress, cause);\n-    }\n-\n-    public RemotingException(Channel channel, String message, Throwable cause) {\n-        super(channel, message, cause);\n-    }\n-\n-    public RemotingException(InetSocketAddress localAddress, InetSocketAddress remoteAddress, String message, Throwable cause) {\n-        super(localAddress, remoteAddress, message, cause);\n-    }\n-\n-    public RemotingException(Exception e){\n-        super(null, e.getMessage());\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.remoting;\r\n+\r\n+import org.apache.dubbo.remoting.Channel;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+\r\n+@Deprecated\r\n+public class RemotingException extends org.apache.dubbo.remoting.RemotingException {\r\n+\r\n+    public RemotingException(Channel channel, String msg) {\r\n+        super(channel, msg);\r\n+    }\r\n+\r\n+    public RemotingException(InetSocketAddress localAddress, InetSocketAddress remoteAddress, String message) {\r\n+        super(localAddress, remoteAddress, message);\r\n+    }\r\n+\r\n+    public RemotingException(Channel channel, Throwable cause) {\r\n+        super(channel, cause);\r\n+    }\r\n+\r\n+    public RemotingException(InetSocketAddress localAddress, InetSocketAddress remoteAddress, Throwable cause) {\r\n+        super(localAddress, remoteAddress, cause);\r\n+    }\r\n+\r\n+    public RemotingException(Channel channel, String message, Throwable cause) {\r\n+        super(channel, message, cause);\r\n+    }\r\n+\r\n+    public RemotingException(InetSocketAddress localAddress, InetSocketAddress remoteAddress, String message, Throwable cause) {\r\n+        super(localAddress, remoteAddress, message, cause);\r\n+    }\r\n+\r\n+    public RemotingException(Exception e){\r\n+        super(null, e.getMessage());\r\n+    }\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/remoting/Server.java", "source2": "com/alibaba/dubbo/remoting/Server.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,23 +1,23 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package com.alibaba.dubbo.remoting;\n-\n-import org.apache.dubbo.remoting.RemotingServer;\n-\n-@Deprecated\n-public interface Server extends RemotingServer {\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package com.alibaba.dubbo.remoting;\r\n+\r\n+import org.apache.dubbo.remoting.RemotingServer;\r\n+\r\n+@Deprecated\r\n+public interface Server extends RemotingServer {\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/remoting/Transporter.java", "source2": "com/alibaba/dubbo/remoting/Transporter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,82 +1,82 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.remoting;\n-\n-import org.apache.dubbo.common.extension.Adaptive;\n-import org.apache.dubbo.remoting.Constants;\n-import org.apache.dubbo.remoting.RemotingServer;\n-\n-import com.alibaba.dubbo.common.URL;\n-\n-@Deprecated\n-public interface Transporter extends org.apache.dubbo.remoting.Transporter {\n-\n-    @Adaptive({Constants.SERVER_KEY, Constants.TRANSPORTER_KEY})\n-    Server bind(URL url, ChannelHandler handler) throws RemotingException;\n-\n-    @Override\n-    default RemotingServer bind(org.apache.dubbo.common.URL url, org.apache.dubbo.remoting.ChannelHandler handler)\n-            throws org.apache.dubbo.remoting.RemotingException {\n-        return bind(new URL(url), new ChannelHandler() {\n-            @Override\n-            public void connected(Channel channel) throws RemotingException {\n-                try {\n-                    handler.connected(channel);\n-                } catch (org.apache.dubbo.remoting.RemotingException e) {\n-                    throw new RemotingException(e);\n-                }\n-            }\n-\n-            @Override\n-            public void disconnected(Channel channel) throws RemotingException {\n-                try {\n-                    handler.disconnected(channel);\n-                } catch (org.apache.dubbo.remoting.RemotingException e) {\n-                    throw new RemotingException(e);\n-                }\n-            }\n-\n-            @Override\n-            public void sent(Channel channel, Object message) throws RemotingException {\n-                try {\n-                    handler.sent(channel, message);\n-                } catch (org.apache.dubbo.remoting.RemotingException e) {\n-                    throw new RemotingException(e);\n-                }\n-            }\n-\n-            @Override\n-            public void received(Channel channel, Object message) throws RemotingException {\n-                try {\n-                    handler.received(channel, message);\n-                } catch (org.apache.dubbo.remoting.RemotingException e) {\n-                    throw new RemotingException(e);\n-                }\n-            }\n-\n-            @Override\n-            public void caught(Channel channel, Throwable exception) throws RemotingException {\n-                try {\n-                    handler.caught(channel, exception);\n-                } catch (org.apache.dubbo.remoting.RemotingException e) {\n-                    throw new RemotingException(e);\n-                }\n-            }\n-        });\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.remoting;\r\n+\r\n+import org.apache.dubbo.common.extension.Adaptive;\r\n+import org.apache.dubbo.remoting.Constants;\r\n+import org.apache.dubbo.remoting.RemotingServer;\r\n+\r\n+import com.alibaba.dubbo.common.URL;\r\n+\r\n+@Deprecated\r\n+public interface Transporter extends org.apache.dubbo.remoting.Transporter {\r\n+\r\n+    @Adaptive({Constants.SERVER_KEY, Constants.TRANSPORTER_KEY})\r\n+    Server bind(URL url, ChannelHandler handler) throws RemotingException;\r\n+\r\n+    @Override\r\n+    default RemotingServer bind(org.apache.dubbo.common.URL url, org.apache.dubbo.remoting.ChannelHandler handler)\r\n+            throws org.apache.dubbo.remoting.RemotingException {\r\n+        return bind(new URL(url), new ChannelHandler() {\r\n+            @Override\r\n+            public void connected(Channel channel) throws RemotingException {\r\n+                try {\r\n+                    handler.connected(channel);\r\n+                } catch (org.apache.dubbo.remoting.RemotingException e) {\r\n+                    throw new RemotingException(e);\r\n+                }\r\n+            }\r\n+\r\n+            @Override\r\n+            public void disconnected(Channel channel) throws RemotingException {\r\n+                try {\r\n+                    handler.disconnected(channel);\r\n+                } catch (org.apache.dubbo.remoting.RemotingException e) {\r\n+                    throw new RemotingException(e);\r\n+                }\r\n+            }\r\n+\r\n+            @Override\r\n+            public void sent(Channel channel, Object message) throws RemotingException {\r\n+                try {\r\n+                    handler.sent(channel, message);\r\n+                } catch (org.apache.dubbo.remoting.RemotingException e) {\r\n+                    throw new RemotingException(e);\r\n+                }\r\n+            }\r\n+\r\n+            @Override\r\n+            public void received(Channel channel, Object message) throws RemotingException {\r\n+                try {\r\n+                    handler.received(channel, message);\r\n+                } catch (org.apache.dubbo.remoting.RemotingException e) {\r\n+                    throw new RemotingException(e);\r\n+                }\r\n+            }\r\n+\r\n+            @Override\r\n+            public void caught(Channel channel, Throwable exception) throws RemotingException {\r\n+                try {\r\n+                    handler.caught(channel, exception);\r\n+                } catch (org.apache.dubbo.remoting.RemotingException e) {\r\n+                    throw new RemotingException(e);\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/remoting/exchange/ResponseCallback.java", "source2": "com/alibaba/dubbo/remoting/exchange/ResponseCallback.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,39 +1,39 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.remoting.exchange;\n-\n-/**\n- * 2019-06-20\n- */\n-@Deprecated\n-public interface ResponseCallback {\n-    /**\n-     * done.\n-     *\n-     * @param response\n-     */\n-    void done(Object response);\n-\n-    /**\n-     * caught exception.\n-     *\n-     * @param exception\n-     */\n-    void caught(Throwable exception);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.remoting.exchange;\r\n+\r\n+/**\r\n+ * 2019-06-20\r\n+ */\r\n+@Deprecated\r\n+public interface ResponseCallback {\r\n+    /**\r\n+     * done.\r\n+     *\r\n+     * @param response\r\n+     */\r\n+    void done(Object response);\r\n+\r\n+    /**\r\n+     * caught exception.\r\n+     *\r\n+     * @param exception\r\n+     */\r\n+    void caught(Throwable exception);\r\n+\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/remoting/exchange/ResponseFuture.java", "source2": "com/alibaba/dubbo/remoting/exchange/ResponseFuture.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,56 +1,56 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.remoting.exchange;\n-\n-\n-import com.alibaba.dubbo.remoting.RemotingException;\n-\n-/**\n- * 2019-06-20\n- */\n-@Deprecated\n-public interface ResponseFuture {\n-    /**\n-     * get result.\n-     *\n-     * @return result.\n-     */\n-    Object get() throws RemotingException;\n-\n-    /**\n-     * get result with the specified timeout.\n-     *\n-     * @param timeoutInMillis timeout.\n-     * @return result.\n-     */\n-    Object get(int timeoutInMillis) throws RemotingException;\n-\n-    /**\n-     * set callback.\n-     *\n-     * @param callback\n-     */\n-    void setCallback(ResponseCallback callback);\n-\n-    /**\n-     * check is done.\n-     *\n-     * @return done or not.\n-     */\n-    boolean isDone();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.remoting.exchange;\r\n+\r\n+\r\n+import com.alibaba.dubbo.remoting.RemotingException;\r\n+\r\n+/**\r\n+ * 2019-06-20\r\n+ */\r\n+@Deprecated\r\n+public interface ResponseFuture {\r\n+    /**\r\n+     * get result.\r\n+     *\r\n+     * @return result.\r\n+     */\r\n+    Object get() throws RemotingException;\r\n+\r\n+    /**\r\n+     * get result with the specified timeout.\r\n+     *\r\n+     * @param timeoutInMillis timeout.\r\n+     * @return result.\r\n+     */\r\n+    Object get(int timeoutInMillis) throws RemotingException;\r\n+\r\n+    /**\r\n+     * set callback.\r\n+     *\r\n+     * @param callback\r\n+     */\r\n+    void setCallback(ResponseCallback callback);\r\n+\r\n+    /**\r\n+     * check is done.\r\n+     *\r\n+     * @return done or not.\r\n+     */\r\n+    boolean isDone();\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/rpc/Invocation.java", "source2": "com/alibaba/dubbo/rpc/Invocation.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,180 +1,180 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.rpc;\n-\n-import java.util.Collections;\n-import java.util.Map;\n-\n-@Deprecated\n-public interface Invocation extends org.apache.dubbo.rpc.Invocation {\n-\n-    @Override\n-    Invoker<?> getInvoker();\n-\n-    default org.apache.dubbo.rpc.Invocation getOriginal() {\n-        return null;\n-    }\n-\n-    @Override\n-    default void setAttachment(String key, String value) {\n-        setObjectAttachment(key, value);\n-    }\n-\n-    @Override\n-    default void setAttachmentIfAbsent(String key, String value) {\n-        setObjectAttachmentIfAbsent(key, value);\n-    }\n-\n-    @Override\n-    default void setObjectAttachmentIfAbsent(String key, Object value) {\n-    }\n-\n-    @Override\n-    default void setObjectAttachment(String key, Object value) {\n-\n-    }\n-\n-    @Override\n-    default void setAttachment(String key, Object value) {\n-        setObjectAttachment(key, value);\n-    }\n-\n-    @Override\n-    default void setAttachmentIfAbsent(String key, Object value) {\n-        setObjectAttachmentIfAbsent(key, value);\n-    }\n-\n-    @Override\n-    default String getServiceName() {\n-        return null;\n-    }\n-\n-    @Override\n-    default String getTargetServiceUniqueName() {\n-        return null;\n-    }\n-\n-    @Override\n-    default String getAttachment(String key, String defaultValue) {\n-        return null;\n-    }\n-\n-    @Override\n-    default Object put(Object key, Object value) {\n-        return null;\n-    }\n-\n-    @Override\n-    default Object get(Object key) {\n-        return null;\n-    }\n-\n-    @Override\n-    default Map<Object, Object> getAttributes() {\n-        return null;\n-    }\n-\n-    @Override\n-    default Map<String, Object> getObjectAttachments() {\n-        return Collections.emptyMap();\n-    }\n-\n-    @Override\n-    default Object getObjectAttachment(String key) {\n-        return null;\n-    }\n-\n-    @Override\n-    default Object getObjectAttachment(String key, Object defaultValue) {\n-        return null;\n-    }\n-\n-    class CompatibleInvocation implements Invocation {\n-\n-        private org.apache.dubbo.rpc.Invocation delegate;\n-\n-        public CompatibleInvocation(org.apache.dubbo.rpc.Invocation invocation) {\n-            this.delegate = invocation;\n-        }\n-\n-        @Override\n-        public String getTargetServiceUniqueName() {\n-            return delegate.getTargetServiceUniqueName();\n-        }\n-\n-        @Override\n-        public String getProtocolServiceKey() {\n-            return delegate.getProtocolServiceKey();\n-        }\n-\n-        @Override\n-        public String getMethodName() {\n-            return delegate.getMethodName();\n-        }\n-\n-        @Override\n-        public Class<?>[] getParameterTypes() {\n-            return delegate.getParameterTypes();\n-        }\n-\n-        @Override\n-        public Object[] getArguments() {\n-            return delegate.getArguments();\n-        }\n-\n-        @Override\n-        public Map<String, String> getAttachments() {\n-            return delegate.getAttachments();\n-        }\n-\n-        @Override\n-        public String getAttachment(String key) {\n-            return delegate.getAttachment(key);\n-        }\n-\n-        @Override\n-        public String getAttachment(String key, String defaultValue) {\n-            return delegate.getAttachment(key, defaultValue);\n-        }\n-\n-        @Override\n-        public Invoker<?> getInvoker() {\n-            return new Invoker.CompatibleInvoker(delegate.getInvoker());\n-        }\n-\n-        @Override\n-        public Object put(Object key, Object value) {\n-            return delegate.put(key, value);\n-        }\n-\n-        @Override\n-        public Object get(Object key) {\n-            return delegate.get(key);\n-        }\n-\n-        @Override\n-        public Map<Object, Object> getAttributes() {\n-            return delegate.getAttributes();\n-        }\n-\n-        @Override\n-        public org.apache.dubbo.rpc.Invocation getOriginal() {\n-            return delegate;\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.rpc;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.Map;\r\n+\r\n+@Deprecated\r\n+public interface Invocation extends org.apache.dubbo.rpc.Invocation {\r\n+\r\n+    @Override\r\n+    Invoker<?> getInvoker();\r\n+\r\n+    default org.apache.dubbo.rpc.Invocation getOriginal() {\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    default void setAttachment(String key, String value) {\r\n+        setObjectAttachment(key, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    default void setAttachmentIfAbsent(String key, String value) {\r\n+        setObjectAttachmentIfAbsent(key, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    default void setObjectAttachmentIfAbsent(String key, Object value) {\r\n+    }\r\n+\r\n+    @Override\r\n+    default void setObjectAttachment(String key, Object value) {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    default void setAttachment(String key, Object value) {\r\n+        setObjectAttachment(key, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    default void setAttachmentIfAbsent(String key, Object value) {\r\n+        setObjectAttachmentIfAbsent(key, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    default String getServiceName() {\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    default String getTargetServiceUniqueName() {\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    default String getAttachment(String key, String defaultValue) {\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    default Object put(Object key, Object value) {\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    default Object get(Object key) {\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    default Map<Object, Object> getAttributes() {\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    default Map<String, Object> getObjectAttachments() {\r\n+        return Collections.emptyMap();\r\n+    }\r\n+\r\n+    @Override\r\n+    default Object getObjectAttachment(String key) {\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    default Object getObjectAttachment(String key, Object defaultValue) {\r\n+        return null;\r\n+    }\r\n+\r\n+    class CompatibleInvocation implements Invocation {\r\n+\r\n+        private org.apache.dubbo.rpc.Invocation delegate;\r\n+\r\n+        public CompatibleInvocation(org.apache.dubbo.rpc.Invocation invocation) {\r\n+            this.delegate = invocation;\r\n+        }\r\n+\r\n+        @Override\r\n+        public String getTargetServiceUniqueName() {\r\n+            return delegate.getTargetServiceUniqueName();\r\n+        }\r\n+\r\n+        @Override\r\n+        public String getProtocolServiceKey() {\r\n+            return delegate.getProtocolServiceKey();\r\n+        }\r\n+\r\n+        @Override\r\n+        public String getMethodName() {\r\n+            return delegate.getMethodName();\r\n+        }\r\n+\r\n+        @Override\r\n+        public Class<?>[] getParameterTypes() {\r\n+            return delegate.getParameterTypes();\r\n+        }\r\n+\r\n+        @Override\r\n+        public Object[] getArguments() {\r\n+            return delegate.getArguments();\r\n+        }\r\n+\r\n+        @Override\r\n+        public Map<String, String> getAttachments() {\r\n+            return delegate.getAttachments();\r\n+        }\r\n+\r\n+        @Override\r\n+        public String getAttachment(String key) {\r\n+            return delegate.getAttachment(key);\r\n+        }\r\n+\r\n+        @Override\r\n+        public String getAttachment(String key, String defaultValue) {\r\n+            return delegate.getAttachment(key, defaultValue);\r\n+        }\r\n+\r\n+        @Override\r\n+        public Invoker<?> getInvoker() {\r\n+            return new Invoker.CompatibleInvoker(delegate.getInvoker());\r\n+        }\r\n+\r\n+        @Override\r\n+        public Object put(Object key, Object value) {\r\n+            return delegate.put(key, value);\r\n+        }\r\n+\r\n+        @Override\r\n+        public Object get(Object key) {\r\n+            return delegate.get(key);\r\n+        }\r\n+\r\n+        @Override\r\n+        public Map<Object, Object> getAttributes() {\r\n+            return delegate.getAttributes();\r\n+        }\r\n+\r\n+        @Override\r\n+        public org.apache.dubbo.rpc.Invocation getOriginal() {\r\n+            return delegate;\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/rpc/Invoker.java", "source2": "com/alibaba/dubbo/rpc/Invoker.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,78 +1,78 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.rpc;\n-\n-import com.alibaba.dubbo.common.URL;\n-\n-@Deprecated\n-public interface Invoker<T> extends org.apache.dubbo.rpc.Invoker<T> {\n-\n-    Result invoke(Invocation invocation) throws RpcException;\n-\n-    @Override\n-    URL getUrl();\n-\n-    default org.apache.dubbo.rpc.Invoker<T> getOriginal() {\n-        return null;\n-    }\n-\n-    // This method will never be called for a legacy invoker.\n-    @Override\n-    default org.apache.dubbo.rpc.Result invoke(org.apache.dubbo.rpc.Invocation invocation) throws org.apache.dubbo.rpc.RpcException {\n-        return null;\n-    }\n-\n-    class CompatibleInvoker<T> implements Invoker<T> {\n-\n-        private org.apache.dubbo.rpc.Invoker<T> invoker;\n-\n-        public CompatibleInvoker(org.apache.dubbo.rpc.Invoker<T> invoker) {\n-            this.invoker = invoker;\n-        }\n-\n-        @Override\n-        public Class<T> getInterface() {\n-            return invoker.getInterface();\n-        }\n-\n-        @Override\n-        public Result invoke(Invocation invocation) throws RpcException {\n-            return new Result.CompatibleResult(invoker.invoke(invocation.getOriginal()));\n-        }\n-\n-        @Override\n-        public URL getUrl() {\n-            return new URL(invoker.getUrl());\n-        }\n-\n-        @Override\n-        public boolean isAvailable() {\n-            return invoker.isAvailable();\n-        }\n-\n-        @Override\n-        public void destroy() {\n-            invoker.destroy();\n-        }\n-\n-        @Override\n-        public org.apache.dubbo.rpc.Invoker<T> getOriginal() {\n-            return invoker;\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.rpc;\r\n+\r\n+import com.alibaba.dubbo.common.URL;\r\n+\r\n+@Deprecated\r\n+public interface Invoker<T> extends org.apache.dubbo.rpc.Invoker<T> {\r\n+\r\n+    Result invoke(Invocation invocation) throws RpcException;\r\n+\r\n+    @Override\r\n+    URL getUrl();\r\n+\r\n+    default org.apache.dubbo.rpc.Invoker<T> getOriginal() {\r\n+        return null;\r\n+    }\r\n+\r\n+    // This method will never be called for a legacy invoker.\r\n+    @Override\r\n+    default org.apache.dubbo.rpc.Result invoke(org.apache.dubbo.rpc.Invocation invocation) throws org.apache.dubbo.rpc.RpcException {\r\n+        return null;\r\n+    }\r\n+\r\n+    class CompatibleInvoker<T> implements Invoker<T> {\r\n+\r\n+        private org.apache.dubbo.rpc.Invoker<T> invoker;\r\n+\r\n+        public CompatibleInvoker(org.apache.dubbo.rpc.Invoker<T> invoker) {\r\n+            this.invoker = invoker;\r\n+        }\r\n+\r\n+        @Override\r\n+        public Class<T> getInterface() {\r\n+            return invoker.getInterface();\r\n+        }\r\n+\r\n+        @Override\r\n+        public Result invoke(Invocation invocation) throws RpcException {\r\n+            return new Result.CompatibleResult(invoker.invoke(invocation.getOriginal()));\r\n+        }\r\n+\r\n+        @Override\r\n+        public URL getUrl() {\r\n+            return new URL(invoker.getUrl());\r\n+        }\r\n+\r\n+        @Override\r\n+        public boolean isAvailable() {\r\n+            return invoker.isAvailable();\r\n+        }\r\n+\r\n+        @Override\r\n+        public void destroy() {\r\n+            invoker.destroy();\r\n+        }\r\n+\r\n+        @Override\r\n+        public org.apache.dubbo.rpc.Invoker<T> getOriginal() {\r\n+            return invoker;\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/rpc/Protocol.java", "source2": "com/alibaba/dubbo/rpc/Protocol.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,48 +1,48 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.rpc;\n-\n-import org.apache.dubbo.rpc.ProtocolServer;\n-\n-import com.alibaba.dubbo.common.URL;\n-\n-import java.util.Collections;\n-import java.util.List;\n-\n-@Deprecated\n-public interface Protocol extends org.apache.dubbo.rpc.Protocol {\n-\n-    <T> Exporter<T> export(Invoker<T> invoker) throws RpcException;\n-\n-    <T> Invoker<T> refer(Class<T> aClass, URL url) throws RpcException;\n-\n-    @Override\n-    default <T> org.apache.dubbo.rpc.Exporter<T> export(org.apache.dubbo.rpc.Invoker<T> invoker) throws RpcException {\n-        return this.export(new Invoker.CompatibleInvoker<>(invoker));\n-    }\n-\n-    @Override\n-    default <T> org.apache.dubbo.rpc.Invoker<T> refer(Class<T> aClass, org.apache.dubbo.common.URL url) throws RpcException {\n-        return this.refer(aClass, new URL(url));\n-    }\n-\n-    @Override\n-    default List<ProtocolServer> getServers() {\n-        return Collections.emptyList();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.rpc;\r\n+\r\n+import org.apache.dubbo.rpc.ProtocolServer;\r\n+\r\n+import com.alibaba.dubbo.common.URL;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+\r\n+@Deprecated\r\n+public interface Protocol extends org.apache.dubbo.rpc.Protocol {\r\n+\r\n+    <T> Exporter<T> export(Invoker<T> invoker) throws RpcException;\r\n+\r\n+    <T> Invoker<T> refer(Class<T> aClass, URL url) throws RpcException;\r\n+\r\n+    @Override\r\n+    default <T> org.apache.dubbo.rpc.Exporter<T> export(org.apache.dubbo.rpc.Invoker<T> invoker) throws RpcException {\r\n+        return this.export(new Invoker.CompatibleInvoker<>(invoker));\r\n+    }\r\n+\r\n+    @Override\r\n+    default <T> org.apache.dubbo.rpc.Invoker<T> refer(Class<T> aClass, org.apache.dubbo.common.URL url) throws RpcException {\r\n+        return this.refer(aClass, new URL(url));\r\n+    }\r\n+\r\n+    @Override\r\n+    default List<ProtocolServer> getServers() {\r\n+        return Collections.emptyList();\r\n+    }\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/rpc/Result.java", "source2": "com/alibaba/dubbo/rpc/Result.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,176 +1,176 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.rpc;\n-\n-import java.util.Collections;\n-import java.util.Map;\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.ExecutionException;\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.TimeoutException;\n-import java.util.function.BiConsumer;\n-import java.util.function.Function;\n-\n-@Deprecated\n-public interface Result extends org.apache.dubbo.rpc.Result {\n-\n-    @Override\n-    default void setValue(Object value) {\n-\n-    }\n-\n-    @Override\n-    default void setException(Throwable t) {\n-\n-    }\n-\n-    @Override\n-    default Map<String, Object> getObjectAttachments() {\n-        return Collections.emptyMap();\n-    }\n-\n-    @Override\n-    default void addObjectAttachments(Map<String, Object> map) {\n-\n-    }\n-\n-    @Override\n-    default void setObjectAttachments(Map<String, Object> map) {\n-\n-    }\n-\n-    @Override\n-    default Object getObjectAttachment(String key) {\n-        return null;\n-    }\n-\n-    @Override\n-    default Object getObjectAttachment(String key, Object defaultValue) {\n-        return null;\n-    }\n-\n-    abstract class AbstractResult implements Result {\n-\n-        @Override\n-        public void setValue(Object value) {\n-\n-        }\n-\n-        @Override\n-        public org.apache.dubbo.rpc.Result whenCompleteWithContext(BiConsumer<org.apache.dubbo.rpc.Result, Throwable> fn) {\n-            return null;\n-        }\n-\n-        @Override\n-        public <U> CompletableFuture<U> thenApply(Function<org.apache.dubbo.rpc.Result, ? extends U> fn) {\n-            return null;\n-        }\n-\n-        @Override\n-        public org.apache.dubbo.rpc.Result get() throws InterruptedException, ExecutionException {\n-            return null;\n-        }\n-\n-        @Override\n-        public org.apache.dubbo.rpc.Result get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {\n-            return null;\n-        }\n-    }\n-\n-    class CompatibleResult extends AbstractResult {\n-        private org.apache.dubbo.rpc.Result delegate;\n-\n-        public CompatibleResult(org.apache.dubbo.rpc.Result result) {\n-            this.delegate = result;\n-        }\n-\n-        public org.apache.dubbo.rpc.Result getDelegate() {\n-            return delegate;\n-        }\n-\n-        @Override\n-        public Object getValue() {\n-            return delegate.getValue();\n-        }\n-\n-        @Override\n-        public void setValue(Object value) {\n-            delegate.setValue(value);\n-        }\n-\n-        @Override\n-        public Throwable getException() {\n-            return delegate.getException();\n-        }\n-\n-        @Override\n-        public void setException(Throwable t) {\n-            delegate.setException(t);\n-        }\n-\n-        @Override\n-        public boolean hasException() {\n-            return delegate.hasException();\n-        }\n-\n-        @Override\n-        public Object recreate() throws Throwable {\n-            return delegate.recreate();\n-        }\n-\n-        @Override\n-        public Map<String, String> getAttachments() {\n-            return delegate.getAttachments();\n-        }\n-\n-        @Override\n-        public void addAttachments(Map<String, String> map) {\n-            delegate.addAttachments(map);\n-        }\n-\n-        @Override\n-        public void setAttachments(Map<String, String> map) {\n-            delegate.setAttachments(map);\n-        }\n-\n-        @Override\n-        public String getAttachment(String key) {\n-            return delegate.getAttachment(key);\n-        }\n-\n-        @Override\n-        public String getAttachment(String key, String defaultValue) {\n-            return delegate.getAttachment(key, defaultValue);\n-        }\n-\n-        @Override\n-        public void setAttachment(String key, String value) {\n-            delegate.setAttachment(key, value);\n-        }\n-\n-        @Override\n-        public void setAttachment(String key, Object value) {\n-            delegate.setAttachment(key, value);\n-        }\n-\n-        @Override\n-        public void setObjectAttachment(String key, Object value) {\n-            delegate.setObjectAttachment(key, value);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.rpc;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.Map;\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.ExecutionException;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.TimeoutException;\r\n+import java.util.function.BiConsumer;\r\n+import java.util.function.Function;\r\n+\r\n+@Deprecated\r\n+public interface Result extends org.apache.dubbo.rpc.Result {\r\n+\r\n+    @Override\r\n+    default void setValue(Object value) {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    default void setException(Throwable t) {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    default Map<String, Object> getObjectAttachments() {\r\n+        return Collections.emptyMap();\r\n+    }\r\n+\r\n+    @Override\r\n+    default void addObjectAttachments(Map<String, Object> map) {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    default void setObjectAttachments(Map<String, Object> map) {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    default Object getObjectAttachment(String key) {\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    default Object getObjectAttachment(String key, Object defaultValue) {\r\n+        return null;\r\n+    }\r\n+\r\n+    abstract class AbstractResult implements Result {\r\n+\r\n+        @Override\r\n+        public void setValue(Object value) {\r\n+\r\n+        }\r\n+\r\n+        @Override\r\n+        public org.apache.dubbo.rpc.Result whenCompleteWithContext(BiConsumer<org.apache.dubbo.rpc.Result, Throwable> fn) {\r\n+            return null;\r\n+        }\r\n+\r\n+        @Override\r\n+        public <U> CompletableFuture<U> thenApply(Function<org.apache.dubbo.rpc.Result, ? extends U> fn) {\r\n+            return null;\r\n+        }\r\n+\r\n+        @Override\r\n+        public org.apache.dubbo.rpc.Result get() throws InterruptedException, ExecutionException {\r\n+            return null;\r\n+        }\r\n+\r\n+        @Override\r\n+        public org.apache.dubbo.rpc.Result get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {\r\n+            return null;\r\n+        }\r\n+    }\r\n+\r\n+    class CompatibleResult extends AbstractResult {\r\n+        private org.apache.dubbo.rpc.Result delegate;\r\n+\r\n+        public CompatibleResult(org.apache.dubbo.rpc.Result result) {\r\n+            this.delegate = result;\r\n+        }\r\n+\r\n+        public org.apache.dubbo.rpc.Result getDelegate() {\r\n+            return delegate;\r\n+        }\r\n+\r\n+        @Override\r\n+        public Object getValue() {\r\n+            return delegate.getValue();\r\n+        }\r\n+\r\n+        @Override\r\n+        public void setValue(Object value) {\r\n+            delegate.setValue(value);\r\n+        }\r\n+\r\n+        @Override\r\n+        public Throwable getException() {\r\n+            return delegate.getException();\r\n+        }\r\n+\r\n+        @Override\r\n+        public void setException(Throwable t) {\r\n+            delegate.setException(t);\r\n+        }\r\n+\r\n+        @Override\r\n+        public boolean hasException() {\r\n+            return delegate.hasException();\r\n+        }\r\n+\r\n+        @Override\r\n+        public Object recreate() throws Throwable {\r\n+            return delegate.recreate();\r\n+        }\r\n+\r\n+        @Override\r\n+        public Map<String, String> getAttachments() {\r\n+            return delegate.getAttachments();\r\n+        }\r\n+\r\n+        @Override\r\n+        public void addAttachments(Map<String, String> map) {\r\n+            delegate.addAttachments(map);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void setAttachments(Map<String, String> map) {\r\n+            delegate.setAttachments(map);\r\n+        }\r\n+\r\n+        @Override\r\n+        public String getAttachment(String key) {\r\n+            return delegate.getAttachment(key);\r\n+        }\r\n+\r\n+        @Override\r\n+        public String getAttachment(String key, String defaultValue) {\r\n+            return delegate.getAttachment(key, defaultValue);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void setAttachment(String key, String value) {\r\n+            delegate.setAttachment(key, value);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void setAttachment(String key, Object value) {\r\n+            delegate.setAttachment(key, value);\r\n+        }\r\n+\r\n+        @Override\r\n+        public void setObjectAttachment(String key, Object value) {\r\n+            delegate.setObjectAttachment(key, value);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/rpc/RpcContext.java", "source2": "com/alibaba/dubbo/rpc/RpcContext.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,396 +1,396 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.rpc;\n-\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.rpc.FutureContext;\n-\n-import com.alibaba.dubbo.common.Constants;\n-import com.alibaba.dubbo.common.URL;\n-import com.alibaba.dubbo.rpc.protocol.dubbo.FutureAdapter;\n-\n-import java.net.InetSocketAddress;\n-import java.util.ArrayList;\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.concurrent.Callable;\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.ExecutionException;\n-import java.util.concurrent.Future;\n-import java.util.concurrent.FutureTask;\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.TimeoutException;\n-\n-@Deprecated\n-public class RpcContext {\n-\n-    public static RpcContext getContext() {\n-        return new RpcContext(org.apache.dubbo.rpc.RpcContext.getContext());\n-    }\n-\n-    public static RpcContext getServerContext() {\n-        return new RpcContext(org.apache.dubbo.rpc.RpcContext.getServerContext());\n-    }\n-\n-    public static void removeServerContext() {\n-        org.apache.dubbo.rpc.RpcContext.removeServerContext();\n-    }\n-\n-    public static void removeContext() {\n-        org.apache.dubbo.rpc.RpcContext.removeContext();\n-    }\n-\n-    private org.apache.dubbo.rpc.RpcContext newRpcContext;\n-\n-    public RpcContext(org.apache.dubbo.rpc.RpcContext newRpcContext) {\n-        this.newRpcContext = newRpcContext;\n-    }\n-\n-    public Object getRequest() {\n-        return newRpcContext.getRequest();\n-    }\n-\n-    public <T> T getRequest(Class<T> clazz) {\n-        return newRpcContext.getRequest(clazz);\n-    }\n-\n-\n-    public void setRequest(Object request) {\n-        newRpcContext.setRequest(request);\n-    }\n-\n-    /**\n-     * Get the response object of the underlying RPC protocol, e.g. HttpServletResponse\n-     *\n-     * @return null if the underlying protocol doesn't provide support for getting response\n-     */\n-    public Object getResponse() {\n-        return newRpcContext.getResponse();\n-    }\n-\n-    /**\n-     * Get the response object of the underlying RPC protocol, e.g. HttpServletResponse\n-     *\n-     * @return null if the underlying protocol doesn't provide support for getting response or the response is not of the specified type\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> T getResponse(Class<T> clazz) {\n-        return newRpcContext.getResponse(clazz);\n-    }\n-\n-    public void setResponse(Object response) {\n-        newRpcContext.setResponse(response);\n-    }\n-\n-    /**\n-     * is provider side.\n-     *\n-     * @return provider side.\n-     */\n-    public boolean isProviderSide() {\n-        return newRpcContext.isProviderSide();\n-    }\n-\n-    /**\n-     * is consumer side.\n-     *\n-     * @return consumer side.\n-     */\n-    public boolean isConsumerSide() {\n-        return newRpcContext.isConsumerSide();\n-    }\n-\n-    public List<URL> getUrls() {\n-        List<org.apache.dubbo.common.URL> newUrls = newRpcContext.getUrls();\n-        if (CollectionUtils.isNotEmpty(newUrls)) {\n-            List<URL> urls = new ArrayList<>(newUrls.size());\n-            for (org.apache.dubbo.common.URL newUrl : newUrls) {\n-                urls.add(new URL(newUrl));\n-            }\n-            return urls;\n-        }\n-        return Collections.emptyList();\n-    }\n-\n-    public void setUrls(List<URL> urls) {\n-        if (CollectionUtils.isNotEmpty(urls)) {\n-            List<org.apache.dubbo.common.URL> newUrls = new ArrayList<>(urls.size());\n-            for (URL url : urls) {\n-                newUrls.add(url.getOriginalURL());\n-            }\n-            newRpcContext.setUrls(newUrls);\n-        }\n-    }\n-\n-    public URL getUrl() {\n-        return new URL(newRpcContext.getUrl());\n-    }\n-\n-    public void setUrl(URL url) {\n-        newRpcContext.setUrl(url.getOriginalURL());\n-    }\n-\n-    public String getMethodName() {\n-        return newRpcContext.getMethodName();\n-    }\n-\n-    public void setMethodName(String methodName) {\n-        newRpcContext.setMethodName(methodName);\n-    }\n-\n-    public Class<?>[] getParameterTypes() {\n-        return newRpcContext.getParameterTypes();\n-    }\n-\n-    public void setParameterTypes(Class<?>[] parameterTypes) {\n-        newRpcContext.setParameterTypes(parameterTypes);\n-    }\n-\n-    public Object[] getArguments() {\n-        return newRpcContext.getArguments();\n-    }\n-\n-    public void setArguments(Object[] arguments) {\n-        newRpcContext.setArguments(arguments);\n-    }\n-\n-    public RpcContext setLocalAddress(String host, int port) {\n-        newRpcContext.setLocalAddress(host, port);\n-        return this;\n-    }\n-\n-    /**\n-     * get local address.\n-     *\n-     * @return local address\n-     */\n-    public InetSocketAddress getLocalAddress() {\n-        return newRpcContext.getLocalAddress();\n-    }\n-\n-    public RpcContext setLocalAddress(InetSocketAddress address) {\n-        newRpcContext.setLocalAddress(address);\n-        return this;\n-    }\n-\n-    public String getLocalAddressString() {\n-        return newRpcContext.getLocalAddressString();\n-    }\n-\n-    public String getLocalHostName() {\n-        return newRpcContext.getLocalHostName();\n-    }\n-\n-    public RpcContext setRemoteAddress(String host, int port) {\n-        newRpcContext.setRemoteAddress(host, port);\n-        return this;\n-    }\n-\n-    public InetSocketAddress getRemoteAddress() {\n-        return newRpcContext.getRemoteAddress();\n-    }\n-\n-    public RpcContext setRemoteAddress(InetSocketAddress address) {\n-        newRpcContext.setRemoteAddress(address);\n-        return this;\n-    }\n-\n-    public String getRemoteAddressString() {\n-        return newRpcContext.getRemoteAddressString();\n-    }\n-\n-    public String getRemoteHostName() {\n-        return newRpcContext.getRemoteHostName();\n-    }\n-\n-    public String getLocalHost() {\n-        return newRpcContext.getLocalHost();\n-    }\n-\n-    public int getLocalPort() {\n-        return newRpcContext.getLocalPort();\n-    }\n-\n-    public String getRemoteHost() {\n-        return newRpcContext.getRemoteHost();\n-    }\n-\n-    public int getRemotePort() {\n-        return newRpcContext.getRemotePort();\n-    }\n-\n-    public String getAttachment(String key) {\n-        return newRpcContext.getAttachment(key);\n-    }\n-\n-    public RpcContext setAttachment(String key, String value) {\n-        newRpcContext.setAttachment(key, value);\n-        return this;\n-    }\n-\n-    public RpcContext removeAttachment(String key) {\n-        newRpcContext.removeAttachment(key);\n-        return this;\n-    }\n-\n-    public Map<String, String> getAttachments() {\n-        return newRpcContext.getAttachments();\n-    }\n-\n-    public RpcContext setAttachments(Map<String, String> attachment) {\n-        newRpcContext.setAttachments(attachment);\n-        return this;\n-    }\n-\n-    public void clearAttachments() {\n-        newRpcContext.clearAttachments();\n-    }\n-\n-    /**\n-     * get values.\n-     *\n-     * @return values\n-     */\n-    public Map<String, Object> get() {\n-        return newRpcContext.get();\n-    }\n-\n-    /**\n-     * set value.\n-     *\n-     * @param key\n-     * @param value\n-     * @return context\n-     */\n-    public RpcContext set(String key, Object value) {\n-        newRpcContext.set(key, value);\n-        return this;\n-    }\n-\n-    public RpcContext remove(String key) {\n-        newRpcContext.remove(key);\n-        return this;\n-    }\n-\n-    public Object get(String key) {\n-        return newRpcContext.get(key);\n-    }\n-\n-    @Deprecated\n-    public boolean isServerSide() {\n-        return isProviderSide();\n-    }\n-\n-    @Deprecated\n-    public boolean isClientSide() {\n-        return isConsumerSide();\n-    }\n-\n-    /**\n-     * Async invocation. Timeout will be handled even if <code>Future.get()</code> is not called.\n-     *\n-     * @param callable\n-     * @return get the return result from <code>future.get()</code>\n-     */\n-    @SuppressWarnings(\"unchecked\")\n-    public <T> Future<T> asyncCall(Callable<T> callable) {\n-        try {\n-            try {\n-                setAttachment(Constants.ASYNC_KEY, Boolean.TRUE.toString());\n-                final T o = callable.call();\n-                //local invoke will return directly\n-                if (o != null) {\n-                    FutureTask<T> f = new FutureTask<T>(new Callable<T>() {\n-                        @Override\n-                        public T call() throws Exception {\n-                            return o;\n-                        }\n-                    });\n-                    f.run();\n-                    return f;\n-                } else {\n-\n-                }\n-            } catch (Exception e) {\n-                throw new RpcException(e);\n-            } finally {\n-                removeAttachment(Constants.ASYNC_KEY);\n-            }\n-        } catch (final RpcException e) {\n-            return new Future<T>() {\n-                @Override\n-                public boolean cancel(boolean mayInterruptIfRunning) {\n-                    return false;\n-                }\n-\n-                @Override\n-                public boolean isCancelled() {\n-                    return false;\n-                }\n-\n-                @Override\n-                public boolean isDone() {\n-                    return true;\n-                }\n-\n-                @Override\n-                public T get() throws InterruptedException, ExecutionException {\n-                    throw new ExecutionException(e.getCause());\n-                }\n-\n-                @Override\n-                public T get(long timeout, TimeUnit unit)\n-                        throws InterruptedException, ExecutionException,\n-                        TimeoutException {\n-                    return get();\n-                }\n-            };\n-        }\n-        return ((Future<T>) getContext().getFuture());\n-    }\n-\n-    /**\n-     * one way async call, send request only, and result is not required\n-     *\n-     * @param runnable\n-     */\n-    public void asyncCall(Runnable runnable) {\n-        try {\n-            setAttachment(Constants.RETURN_KEY, Boolean.FALSE.toString());\n-            runnable.run();\n-        } catch (Throwable e) {\n-            // FIXME should put exception in future?\n-            throw new RpcException(\"oneway call error .\" + e.getMessage(), e);\n-        } finally {\n-            removeAttachment(Constants.RETURN_KEY);\n-        }\n-    }\n-\n-    public <T> Future<T> getFuture() {\n-        CompletableFuture completableFuture = FutureContext.getContext().getCompatibleCompletableFuture();\n-        if (completableFuture == null) {\n-            return null;\n-        }\n-        return new FutureAdapter(completableFuture);\n-    }\n-\n-    public void setFuture(CompletableFuture<?> future) {\n-        FutureContext.getContext().setCompatibleFuture(future);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.rpc;\r\n+\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.rpc.FutureContext;\r\n+\r\n+import com.alibaba.dubbo.common.Constants;\r\n+import com.alibaba.dubbo.common.URL;\r\n+import com.alibaba.dubbo.rpc.protocol.dubbo.FutureAdapter;\r\n+\r\n+import java.net.InetSocketAddress;\r\n+import java.util.ArrayList;\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.concurrent.Callable;\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.ExecutionException;\r\n+import java.util.concurrent.Future;\r\n+import java.util.concurrent.FutureTask;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.TimeoutException;\r\n+\r\n+@Deprecated\r\n+public class RpcContext {\r\n+\r\n+    public static RpcContext getContext() {\r\n+        return new RpcContext(org.apache.dubbo.rpc.RpcContext.getContext());\r\n+    }\r\n+\r\n+    public static RpcContext getServerContext() {\r\n+        return new RpcContext(org.apache.dubbo.rpc.RpcContext.getServerContext());\r\n+    }\r\n+\r\n+    public static void removeServerContext() {\r\n+        org.apache.dubbo.rpc.RpcContext.removeServerContext();\r\n+    }\r\n+\r\n+    public static void removeContext() {\r\n+        org.apache.dubbo.rpc.RpcContext.removeContext();\r\n+    }\r\n+\r\n+    private org.apache.dubbo.rpc.RpcContext newRpcContext;\r\n+\r\n+    public RpcContext(org.apache.dubbo.rpc.RpcContext newRpcContext) {\r\n+        this.newRpcContext = newRpcContext;\r\n+    }\r\n+\r\n+    public Object getRequest() {\r\n+        return newRpcContext.getRequest();\r\n+    }\r\n+\r\n+    public <T> T getRequest(Class<T> clazz) {\r\n+        return newRpcContext.getRequest(clazz);\r\n+    }\r\n+\r\n+\r\n+    public void setRequest(Object request) {\r\n+        newRpcContext.setRequest(request);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the response object of the underlying RPC protocol, e.g. HttpServletResponse\r\n+     *\r\n+     * @return null if the underlying protocol doesn't provide support for getting response\r\n+     */\r\n+    public Object getResponse() {\r\n+        return newRpcContext.getResponse();\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the response object of the underlying RPC protocol, e.g. HttpServletResponse\r\n+     *\r\n+     * @return null if the underlying protocol doesn't provide support for getting response or the response is not of the specified type\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> T getResponse(Class<T> clazz) {\r\n+        return newRpcContext.getResponse(clazz);\r\n+    }\r\n+\r\n+    public void setResponse(Object response) {\r\n+        newRpcContext.setResponse(response);\r\n+    }\r\n+\r\n+    /**\r\n+     * is provider side.\r\n+     *\r\n+     * @return provider side.\r\n+     */\r\n+    public boolean isProviderSide() {\r\n+        return newRpcContext.isProviderSide();\r\n+    }\r\n+\r\n+    /**\r\n+     * is consumer side.\r\n+     *\r\n+     * @return consumer side.\r\n+     */\r\n+    public boolean isConsumerSide() {\r\n+        return newRpcContext.isConsumerSide();\r\n+    }\r\n+\r\n+    public List<URL> getUrls() {\r\n+        List<org.apache.dubbo.common.URL> newUrls = newRpcContext.getUrls();\r\n+        if (CollectionUtils.isNotEmpty(newUrls)) {\r\n+            List<URL> urls = new ArrayList<>(newUrls.size());\r\n+            for (org.apache.dubbo.common.URL newUrl : newUrls) {\r\n+                urls.add(new URL(newUrl));\r\n+            }\r\n+            return urls;\r\n+        }\r\n+        return Collections.emptyList();\r\n+    }\r\n+\r\n+    public void setUrls(List<URL> urls) {\r\n+        if (CollectionUtils.isNotEmpty(urls)) {\r\n+            List<org.apache.dubbo.common.URL> newUrls = new ArrayList<>(urls.size());\r\n+            for (URL url : urls) {\r\n+                newUrls.add(url.getOriginalURL());\r\n+            }\r\n+            newRpcContext.setUrls(newUrls);\r\n+        }\r\n+    }\r\n+\r\n+    public URL getUrl() {\r\n+        return new URL(newRpcContext.getUrl());\r\n+    }\r\n+\r\n+    public void setUrl(URL url) {\r\n+        newRpcContext.setUrl(url.getOriginalURL());\r\n+    }\r\n+\r\n+    public String getMethodName() {\r\n+        return newRpcContext.getMethodName();\r\n+    }\r\n+\r\n+    public void setMethodName(String methodName) {\r\n+        newRpcContext.setMethodName(methodName);\r\n+    }\r\n+\r\n+    public Class<?>[] getParameterTypes() {\r\n+        return newRpcContext.getParameterTypes();\r\n+    }\r\n+\r\n+    public void setParameterTypes(Class<?>[] parameterTypes) {\r\n+        newRpcContext.setParameterTypes(parameterTypes);\r\n+    }\r\n+\r\n+    public Object[] getArguments() {\r\n+        return newRpcContext.getArguments();\r\n+    }\r\n+\r\n+    public void setArguments(Object[] arguments) {\r\n+        newRpcContext.setArguments(arguments);\r\n+    }\r\n+\r\n+    public RpcContext setLocalAddress(String host, int port) {\r\n+        newRpcContext.setLocalAddress(host, port);\r\n+        return this;\r\n+    }\r\n+\r\n+    /**\r\n+     * get local address.\r\n+     *\r\n+     * @return local address\r\n+     */\r\n+    public InetSocketAddress getLocalAddress() {\r\n+        return newRpcContext.getLocalAddress();\r\n+    }\r\n+\r\n+    public RpcContext setLocalAddress(InetSocketAddress address) {\r\n+        newRpcContext.setLocalAddress(address);\r\n+        return this;\r\n+    }\r\n+\r\n+    public String getLocalAddressString() {\r\n+        return newRpcContext.getLocalAddressString();\r\n+    }\r\n+\r\n+    public String getLocalHostName() {\r\n+        return newRpcContext.getLocalHostName();\r\n+    }\r\n+\r\n+    public RpcContext setRemoteAddress(String host, int port) {\r\n+        newRpcContext.setRemoteAddress(host, port);\r\n+        return this;\r\n+    }\r\n+\r\n+    public InetSocketAddress getRemoteAddress() {\r\n+        return newRpcContext.getRemoteAddress();\r\n+    }\r\n+\r\n+    public RpcContext setRemoteAddress(InetSocketAddress address) {\r\n+        newRpcContext.setRemoteAddress(address);\r\n+        return this;\r\n+    }\r\n+\r\n+    public String getRemoteAddressString() {\r\n+        return newRpcContext.getRemoteAddressString();\r\n+    }\r\n+\r\n+    public String getRemoteHostName() {\r\n+        return newRpcContext.getRemoteHostName();\r\n+    }\r\n+\r\n+    public String getLocalHost() {\r\n+        return newRpcContext.getLocalHost();\r\n+    }\r\n+\r\n+    public int getLocalPort() {\r\n+        return newRpcContext.getLocalPort();\r\n+    }\r\n+\r\n+    public String getRemoteHost() {\r\n+        return newRpcContext.getRemoteHost();\r\n+    }\r\n+\r\n+    public int getRemotePort() {\r\n+        return newRpcContext.getRemotePort();\r\n+    }\r\n+\r\n+    public String getAttachment(String key) {\r\n+        return newRpcContext.getAttachment(key);\r\n+    }\r\n+\r\n+    public RpcContext setAttachment(String key, String value) {\r\n+        newRpcContext.setAttachment(key, value);\r\n+        return this;\r\n+    }\r\n+\r\n+    public RpcContext removeAttachment(String key) {\r\n+        newRpcContext.removeAttachment(key);\r\n+        return this;\r\n+    }\r\n+\r\n+    public Map<String, String> getAttachments() {\r\n+        return newRpcContext.getAttachments();\r\n+    }\r\n+\r\n+    public RpcContext setAttachments(Map<String, String> attachment) {\r\n+        newRpcContext.setAttachments(attachment);\r\n+        return this;\r\n+    }\r\n+\r\n+    public void clearAttachments() {\r\n+        newRpcContext.clearAttachments();\r\n+    }\r\n+\r\n+    /**\r\n+     * get values.\r\n+     *\r\n+     * @return values\r\n+     */\r\n+    public Map<String, Object> get() {\r\n+        return newRpcContext.get();\r\n+    }\r\n+\r\n+    /**\r\n+     * set value.\r\n+     *\r\n+     * @param key\r\n+     * @param value\r\n+     * @return context\r\n+     */\r\n+    public RpcContext set(String key, Object value) {\r\n+        newRpcContext.set(key, value);\r\n+        return this;\r\n+    }\r\n+\r\n+    public RpcContext remove(String key) {\r\n+        newRpcContext.remove(key);\r\n+        return this;\r\n+    }\r\n+\r\n+    public Object get(String key) {\r\n+        return newRpcContext.get(key);\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public boolean isServerSide() {\r\n+        return isProviderSide();\r\n+    }\r\n+\r\n+    @Deprecated\r\n+    public boolean isClientSide() {\r\n+        return isConsumerSide();\r\n+    }\r\n+\r\n+    /**\r\n+     * Async invocation. Timeout will be handled even if <code>Future.get()</code> is not called.\r\n+     *\r\n+     * @param callable\r\n+     * @return get the return result from <code>future.get()</code>\r\n+     */\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public <T> Future<T> asyncCall(Callable<T> callable) {\r\n+        try {\r\n+            try {\r\n+                setAttachment(Constants.ASYNC_KEY, Boolean.TRUE.toString());\r\n+                final T o = callable.call();\r\n+                //local invoke will return directly\r\n+                if (o != null) {\r\n+                    FutureTask<T> f = new FutureTask<T>(new Callable<T>() {\r\n+                        @Override\r\n+                        public T call() throws Exception {\r\n+                            return o;\r\n+                        }\r\n+                    });\r\n+                    f.run();\r\n+                    return f;\r\n+                } else {\r\n+\r\n+                }\r\n+            } catch (Exception e) {\r\n+                throw new RpcException(e);\r\n+            } finally {\r\n+                removeAttachment(Constants.ASYNC_KEY);\r\n+            }\r\n+        } catch (final RpcException e) {\r\n+            return new Future<T>() {\r\n+                @Override\r\n+                public boolean cancel(boolean mayInterruptIfRunning) {\r\n+                    return false;\r\n+                }\r\n+\r\n+                @Override\r\n+                public boolean isCancelled() {\r\n+                    return false;\r\n+                }\r\n+\r\n+                @Override\r\n+                public boolean isDone() {\r\n+                    return true;\r\n+                }\r\n+\r\n+                @Override\r\n+                public T get() throws InterruptedException, ExecutionException {\r\n+                    throw new ExecutionException(e.getCause());\r\n+                }\r\n+\r\n+                @Override\r\n+                public T get(long timeout, TimeUnit unit)\r\n+                        throws InterruptedException, ExecutionException,\r\n+                        TimeoutException {\r\n+                    return get();\r\n+                }\r\n+            };\r\n+        }\r\n+        return ((Future<T>) getContext().getFuture());\r\n+    }\r\n+\r\n+    /**\r\n+     * one way async call, send request only, and result is not required\r\n+     *\r\n+     * @param runnable\r\n+     */\r\n+    public void asyncCall(Runnable runnable) {\r\n+        try {\r\n+            setAttachment(Constants.RETURN_KEY, Boolean.FALSE.toString());\r\n+            runnable.run();\r\n+        } catch (Throwable e) {\r\n+            // FIXME should put exception in future?\r\n+            throw new RpcException(\"oneway call error .\" + e.getMessage(), e);\r\n+        } finally {\r\n+            removeAttachment(Constants.RETURN_KEY);\r\n+        }\r\n+    }\r\n+\r\n+    public <T> Future<T> getFuture() {\r\n+        CompletableFuture completableFuture = FutureContext.getContext().getCompatibleCompletableFuture();\r\n+        if (completableFuture == null) {\r\n+            return null;\r\n+        }\r\n+        return new FutureAdapter(completableFuture);\r\n+    }\r\n+\r\n+    public void setFuture(CompletableFuture<?> future) {\r\n+        FutureContext.getContext().setCompatibleFuture(future);\r\n+    }\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/rpc/RpcInvocation.java", "source2": "com/alibaba/dubbo/rpc/RpcInvocation.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,208 +1,208 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.rpc;\n-\n-import com.alibaba.dubbo.common.Constants;\n-import com.alibaba.dubbo.common.URL;\n-\n-import java.io.Serializable;\n-import java.lang.reflect.Method;\n-import java.util.Arrays;\n-import java.util.HashMap;\n-import java.util.Map;\n-\n-public class RpcInvocation implements Invocation, Serializable {\n-\n-    private static final long serialVersionUID = -4355285085441097045L;\n-\n-    private String methodName;\n-\n-    private Class<?>[] parameterTypes;\n-\n-    private Object[] arguments;\n-\n-    private Map<String, String> attachments;\n-\n-    private transient Invoker<?> invoker;\n-\n-    public RpcInvocation() {\n-    }\n-\n-    public RpcInvocation(Invocation invocation, Invoker<?> invoker) {\n-        this(invocation.getMethodName(), invocation.getParameterTypes(),\n-                invocation.getArguments(), new HashMap<String, String>(invocation.getAttachments()),\n-                invocation.getInvoker());\n-        if (invoker != null) {\n-            URL url = invoker.getUrl();\n-            setAttachment(Constants.PATH_KEY, url.getPath());\n-            if (url.hasParameter(Constants.INTERFACE_KEY)) {\n-                setAttachment(Constants.INTERFACE_KEY, url.getParameter(Constants.INTERFACE_KEY));\n-            }\n-            if (url.hasParameter(Constants.GROUP_KEY)) {\n-                setAttachment(Constants.GROUP_KEY, url.getParameter(Constants.GROUP_KEY));\n-            }\n-            if (url.hasParameter(Constants.VERSION_KEY)) {\n-                setAttachment(Constants.VERSION_KEY, url.getParameter(Constants.VERSION_KEY, \"0.0.0\"));\n-            }\n-            if (url.hasParameter(Constants.TIMEOUT_KEY)) {\n-                setAttachment(Constants.TIMEOUT_KEY, url.getParameter(Constants.TIMEOUT_KEY));\n-            }\n-            if (url.hasParameter(Constants.TOKEN_KEY)) {\n-                setAttachment(Constants.TOKEN_KEY, url.getParameter(Constants.TOKEN_KEY));\n-            }\n-            if (url.hasParameter(Constants.APPLICATION_KEY)) {\n-                setAttachment(Constants.APPLICATION_KEY, url.getParameter(Constants.APPLICATION_KEY));\n-            }\n-        }\n-    }\n-\n-    public RpcInvocation(Invocation invocation) {\n-        this(invocation.getMethodName(), invocation.getParameterTypes(),\n-                invocation.getArguments(), invocation.getAttachments(), invocation.getInvoker());\n-    }\n-\n-    public RpcInvocation(Method method, Object[] arguments) {\n-        this(method.getName(), method.getParameterTypes(), arguments, null, null);\n-    }\n-\n-    public RpcInvocation(Method method, Object[] arguments, Map<String, String> attachment) {\n-        this(method.getName(), method.getParameterTypes(), arguments, attachment, null);\n-    }\n-\n-    public RpcInvocation(String methodName, Class<?>[] parameterTypes, Object[] arguments) {\n-        this(methodName, parameterTypes, arguments, null, null);\n-    }\n-\n-    public RpcInvocation(String methodName, Class<?>[] parameterTypes, Object[] arguments, Map<String, String> attachments) {\n-        this(methodName, parameterTypes, arguments, attachments, null);\n-    }\n-\n-    public RpcInvocation(String methodName, Class<?>[] parameterTypes, Object[] arguments, Map<String, String> attachments, Invoker<?> invoker) {\n-        this.methodName = methodName;\n-        this.parameterTypes = parameterTypes == null ? new Class<?>[0] : parameterTypes;\n-        this.arguments = arguments == null ? new Object[0] : arguments;\n-        this.attachments = attachments == null ? new HashMap<String, String>() : attachments;\n-        this.invoker = invoker;\n-    }\n-\n-    public Invoker<?> getInvoker() {\n-        return invoker;\n-    }\n-\n-    public void setInvoker(Invoker<?> invoker) {\n-        this.invoker = invoker;\n-    }\n-\n-    @Override\n-    public String getProtocolServiceKey() {\n-        return null;\n-    }\n-\n-    public String getMethodName() {\n-        return methodName;\n-    }\n-\n-    public void setMethodName(String methodName) {\n-        this.methodName = methodName;\n-    }\n-\n-    public Class<?>[] getParameterTypes() {\n-        return parameterTypes;\n-    }\n-\n-    public void setParameterTypes(Class<?>[] parameterTypes) {\n-        this.parameterTypes = parameterTypes == null ? new Class<?>[0] : parameterTypes;\n-    }\n-\n-    public Object[] getArguments() {\n-        return arguments;\n-    }\n-\n-    public void setArguments(Object[] arguments) {\n-        this.arguments = arguments == null ? new Object[0] : arguments;\n-    }\n-\n-    public Map<String, String> getAttachments() {\n-        return attachments;\n-    }\n-\n-    public void setAttachments(Map<String, String> attachments) {\n-        this.attachments = attachments == null ? new HashMap<String, String>() : attachments;\n-    }\n-\n-    public void setAttachment(String key, String value) {\n-        if (attachments == null) {\n-            attachments = new HashMap<String, String>();\n-        }\n-        attachments.put(key, value);\n-    }\n-\n-    public void setAttachmentIfAbsent(String key, String value) {\n-        if (attachments == null) {\n-            attachments = new HashMap<String, String>();\n-        }\n-        if (!attachments.containsKey(key)) {\n-            attachments.put(key, value);\n-        }\n-    }\n-\n-    public void addAttachments(Map<String, String> attachments) {\n-        if (attachments == null) {\n-            return;\n-        }\n-        if (this.attachments == null) {\n-            this.attachments = new HashMap<String, String>();\n-        }\n-        this.attachments.putAll(attachments);\n-    }\n-\n-    public void addAttachmentsIfAbsent(Map<String, String> attachments) {\n-        if (attachments == null) {\n-            return;\n-        }\n-        for (Map.Entry<String, String> entry : attachments.entrySet()) {\n-            setAttachmentIfAbsent(entry.getKey(), entry.getValue());\n-        }\n-    }\n-\n-    public String getAttachment(String key) {\n-        if (attachments == null) {\n-            return null;\n-        }\n-        return (String) attachments.get(key);\n-    }\n-\n-    public String getAttachment(String key, String defaultValue) {\n-        if (attachments == null) {\n-            return defaultValue;\n-        }\n-        String value = (String) attachments.get(key);\n-        if (value == null || value.length() == 0) {\n-            return defaultValue;\n-        }\n-        return value;\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"RpcInvocation [methodName=\" + methodName + \", parameterTypes=\"\n-                + Arrays.toString(parameterTypes) + \", arguments=\" + Arrays.toString(arguments)\n-                + \", attachments=\" + attachments + \"]\";\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.rpc;\r\n+\r\n+import com.alibaba.dubbo.common.Constants;\r\n+import com.alibaba.dubbo.common.URL;\r\n+\r\n+import java.io.Serializable;\r\n+import java.lang.reflect.Method;\r\n+import java.util.Arrays;\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+\r\n+public class RpcInvocation implements Invocation, Serializable {\r\n+\r\n+    private static final long serialVersionUID = -4355285085441097045L;\r\n+\r\n+    private String methodName;\r\n+\r\n+    private Class<?>[] parameterTypes;\r\n+\r\n+    private Object[] arguments;\r\n+\r\n+    private Map<String, String> attachments;\r\n+\r\n+    private transient Invoker<?> invoker;\r\n+\r\n+    public RpcInvocation() {\r\n+    }\r\n+\r\n+    public RpcInvocation(Invocation invocation, Invoker<?> invoker) {\r\n+        this(invocation.getMethodName(), invocation.getParameterTypes(),\r\n+                invocation.getArguments(), new HashMap<String, String>(invocation.getAttachments()),\r\n+                invocation.getInvoker());\r\n+        if (invoker != null) {\r\n+            URL url = invoker.getUrl();\r\n+            setAttachment(Constants.PATH_KEY, url.getPath());\r\n+            if (url.hasParameter(Constants.INTERFACE_KEY)) {\r\n+                setAttachment(Constants.INTERFACE_KEY, url.getParameter(Constants.INTERFACE_KEY));\r\n+            }\r\n+            if (url.hasParameter(Constants.GROUP_KEY)) {\r\n+                setAttachment(Constants.GROUP_KEY, url.getParameter(Constants.GROUP_KEY));\r\n+            }\r\n+            if (url.hasParameter(Constants.VERSION_KEY)) {\r\n+                setAttachment(Constants.VERSION_KEY, url.getParameter(Constants.VERSION_KEY, \"0.0.0\"));\r\n+            }\r\n+            if (url.hasParameter(Constants.TIMEOUT_KEY)) {\r\n+                setAttachment(Constants.TIMEOUT_KEY, url.getParameter(Constants.TIMEOUT_KEY));\r\n+            }\r\n+            if (url.hasParameter(Constants.TOKEN_KEY)) {\r\n+                setAttachment(Constants.TOKEN_KEY, url.getParameter(Constants.TOKEN_KEY));\r\n+            }\r\n+            if (url.hasParameter(Constants.APPLICATION_KEY)) {\r\n+                setAttachment(Constants.APPLICATION_KEY, url.getParameter(Constants.APPLICATION_KEY));\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public RpcInvocation(Invocation invocation) {\r\n+        this(invocation.getMethodName(), invocation.getParameterTypes(),\r\n+                invocation.getArguments(), invocation.getAttachments(), invocation.getInvoker());\r\n+    }\r\n+\r\n+    public RpcInvocation(Method method, Object[] arguments) {\r\n+        this(method.getName(), method.getParameterTypes(), arguments, null, null);\r\n+    }\r\n+\r\n+    public RpcInvocation(Method method, Object[] arguments, Map<String, String> attachment) {\r\n+        this(method.getName(), method.getParameterTypes(), arguments, attachment, null);\r\n+    }\r\n+\r\n+    public RpcInvocation(String methodName, Class<?>[] parameterTypes, Object[] arguments) {\r\n+        this(methodName, parameterTypes, arguments, null, null);\r\n+    }\r\n+\r\n+    public RpcInvocation(String methodName, Class<?>[] parameterTypes, Object[] arguments, Map<String, String> attachments) {\r\n+        this(methodName, parameterTypes, arguments, attachments, null);\r\n+    }\r\n+\r\n+    public RpcInvocation(String methodName, Class<?>[] parameterTypes, Object[] arguments, Map<String, String> attachments, Invoker<?> invoker) {\r\n+        this.methodName = methodName;\r\n+        this.parameterTypes = parameterTypes == null ? new Class<?>[0] : parameterTypes;\r\n+        this.arguments = arguments == null ? new Object[0] : arguments;\r\n+        this.attachments = attachments == null ? new HashMap<String, String>() : attachments;\r\n+        this.invoker = invoker;\r\n+    }\r\n+\r\n+    public Invoker<?> getInvoker() {\r\n+        return invoker;\r\n+    }\r\n+\r\n+    public void setInvoker(Invoker<?> invoker) {\r\n+        this.invoker = invoker;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getProtocolServiceKey() {\r\n+        return null;\r\n+    }\r\n+\r\n+    public String getMethodName() {\r\n+        return methodName;\r\n+    }\r\n+\r\n+    public void setMethodName(String methodName) {\r\n+        this.methodName = methodName;\r\n+    }\r\n+\r\n+    public Class<?>[] getParameterTypes() {\r\n+        return parameterTypes;\r\n+    }\r\n+\r\n+    public void setParameterTypes(Class<?>[] parameterTypes) {\r\n+        this.parameterTypes = parameterTypes == null ? new Class<?>[0] : parameterTypes;\r\n+    }\r\n+\r\n+    public Object[] getArguments() {\r\n+        return arguments;\r\n+    }\r\n+\r\n+    public void setArguments(Object[] arguments) {\r\n+        this.arguments = arguments == null ? new Object[0] : arguments;\r\n+    }\r\n+\r\n+    public Map<String, String> getAttachments() {\r\n+        return attachments;\r\n+    }\r\n+\r\n+    public void setAttachments(Map<String, String> attachments) {\r\n+        this.attachments = attachments == null ? new HashMap<String, String>() : attachments;\r\n+    }\r\n+\r\n+    public void setAttachment(String key, String value) {\r\n+        if (attachments == null) {\r\n+            attachments = new HashMap<String, String>();\r\n+        }\r\n+        attachments.put(key, value);\r\n+    }\r\n+\r\n+    public void setAttachmentIfAbsent(String key, String value) {\r\n+        if (attachments == null) {\r\n+            attachments = new HashMap<String, String>();\r\n+        }\r\n+        if (!attachments.containsKey(key)) {\r\n+            attachments.put(key, value);\r\n+        }\r\n+    }\r\n+\r\n+    public void addAttachments(Map<String, String> attachments) {\r\n+        if (attachments == null) {\r\n+            return;\r\n+        }\r\n+        if (this.attachments == null) {\r\n+            this.attachments = new HashMap<String, String>();\r\n+        }\r\n+        this.attachments.putAll(attachments);\r\n+    }\r\n+\r\n+    public void addAttachmentsIfAbsent(Map<String, String> attachments) {\r\n+        if (attachments == null) {\r\n+            return;\r\n+        }\r\n+        for (Map.Entry<String, String> entry : attachments.entrySet()) {\r\n+            setAttachmentIfAbsent(entry.getKey(), entry.getValue());\r\n+        }\r\n+    }\r\n+\r\n+    public String getAttachment(String key) {\r\n+        if (attachments == null) {\r\n+            return null;\r\n+        }\r\n+        return (String) attachments.get(key);\r\n+    }\r\n+\r\n+    public String getAttachment(String key, String defaultValue) {\r\n+        if (attachments == null) {\r\n+            return defaultValue;\r\n+        }\r\n+        String value = (String) attachments.get(key);\r\n+        if (value == null || value.length() == 0) {\r\n+            return defaultValue;\r\n+        }\r\n+        return value;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"RpcInvocation [methodName=\" + methodName + \", parameterTypes=\"\r\n+                + Arrays.toString(parameterTypes) + \", arguments=\" + Arrays.toString(arguments)\r\n+                + \", attachments=\" + attachments + \"]\";\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/rpc/cluster/Directory.java", "source2": "com/alibaba/dubbo/rpc/cluster/Directory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,42 +1,42 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.rpc.cluster;\n-\n-import org.apache.dubbo.rpc.Invocation;\n-import org.apache.dubbo.rpc.Invoker;\n-import org.apache.dubbo.rpc.RpcException;\n-\n-import com.alibaba.dubbo.common.URL;\n-\n-import java.util.List;\n-import java.util.stream.Collectors;\n-\n-@Deprecated\n-public interface Directory<T> extends org.apache.dubbo.rpc.cluster.Directory<T> {\n-\n-    @Override\n-    URL getUrl();\n-\n-    List<com.alibaba.dubbo.rpc.Invoker<T>> list(com.alibaba.dubbo.rpc.Invocation invocation) throws com.alibaba.dubbo.rpc.RpcException;\n-\n-    @Override\n-    default List<Invoker<T>> list(Invocation invocation) throws RpcException {\n-        List<com.alibaba.dubbo.rpc.Invoker<T>> res = this.list(new com.alibaba.dubbo.rpc.Invocation.CompatibleInvocation(invocation));\n-        return res.stream().map(com.alibaba.dubbo.rpc.Invoker::getOriginal).collect(Collectors.toList());\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.rpc.cluster;\r\n+\r\n+import org.apache.dubbo.rpc.Invocation;\r\n+import org.apache.dubbo.rpc.Invoker;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+\r\n+import com.alibaba.dubbo.common.URL;\r\n+\r\n+import java.util.List;\r\n+import java.util.stream.Collectors;\r\n+\r\n+@Deprecated\r\n+public interface Directory<T> extends org.apache.dubbo.rpc.cluster.Directory<T> {\r\n+\r\n+    @Override\r\n+    URL getUrl();\r\n+\r\n+    List<com.alibaba.dubbo.rpc.Invoker<T>> list(com.alibaba.dubbo.rpc.Invocation invocation) throws com.alibaba.dubbo.rpc.RpcException;\r\n+\r\n+    @Override\r\n+    default List<Invoker<T>> list(Invocation invocation) throws RpcException {\r\n+        List<com.alibaba.dubbo.rpc.Invoker<T>> res = this.list(new com.alibaba.dubbo.rpc.Invocation.CompatibleInvocation(invocation));\r\n+        return res.stream().map(com.alibaba.dubbo.rpc.Invoker::getOriginal).collect(Collectors.toList());\r\n+    }\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/rpc/protocol/dubbo/FutureAdapter.java", "source2": "com/alibaba/dubbo/rpc/protocol/dubbo/FutureAdapter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,156 +1,156 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.rpc.protocol.dubbo;\n-\n-import org.apache.dubbo.rpc.AppResponse;\n-import org.apache.dubbo.rpc.Result;\n-\n-import com.alibaba.dubbo.remoting.RemotingException;\n-import com.alibaba.dubbo.remoting.exchange.ResponseCallback;\n-import com.alibaba.dubbo.remoting.exchange.ResponseFuture;\n-import com.alibaba.dubbo.rpc.RpcException;\n-\n-import java.util.concurrent.CompletableFuture;\n-import java.util.concurrent.CompletionException;\n-import java.util.concurrent.ExecutionException;\n-import java.util.concurrent.Future;\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.TimeoutException;\n-import java.util.function.BiConsumer;\n-\n-/**\n- * 2019-06-20\n- */\n-@Deprecated\n-public class FutureAdapter<V> implements Future<V> {\n-\n-    private CompletableFuture<Object> future;\n-\n-    public FutureAdapter(CompletableFuture<Object> future) {\n-        this.future = future;\n-    }\n-\n-    public FutureAdapter(ResponseFuture responseFuture) {\n-        this.future = new CompletableFuture<>();\n-        responseFuture.setCallback(new ResponseCallback() {\n-            @Override\n-            public void done(Object response) {\n-                future.complete(response);\n-            }\n-\n-            @Override\n-            public void caught(Throwable exception) {\n-                future.completeExceptionally(exception);\n-            }\n-        });\n-    }\n-\n-    public ResponseFuture getFuture() {\n-        return new ResponseFuture() {\n-            @Override\n-            public Object get() throws RemotingException {\n-                try {\n-                    return future.get();\n-                } catch (InterruptedException | ExecutionException e) {\n-                    throw new RemotingException(e);\n-                }\n-            }\n-\n-            @Override\n-            public Object get(int timeoutInMillis) throws RemotingException {\n-                try {\n-                    return future.get(timeoutInMillis, TimeUnit.MILLISECONDS);\n-                } catch (InterruptedException | TimeoutException | ExecutionException e) {\n-                    throw new RemotingException(e);\n-                }\n-            }\n-\n-            @Override\n-            public void setCallback(ResponseCallback callback) {\n-                FutureAdapter.this.setCallback(callback);\n-            }\n-\n-            @Override\n-            public boolean isDone() {\n-                return future.isDone();\n-            }\n-        };\n-    }\n-\n-    void setCallback(ResponseCallback callback) {\n-        BiConsumer<Object, ? super Throwable> biConsumer = new BiConsumer<Object, Throwable>() {\n-\n-            @Override\n-            public void accept(Object obj, Throwable t) {\n-                if (t != null) {\n-                    if (t instanceof CompletionException) {\n-                        t = t.getCause();\n-                    }\n-                    callback.caught(t);\n-                } else {\n-                    AppResponse appResponse = (AppResponse)obj;\n-                    if (appResponse.hasException()) {\n-                        callback.caught(appResponse.getException());\n-                    } else {\n-                        callback.done((V) appResponse.getValue());\n-                    }\n-                }\n-            }\n-        };\n-        future.whenComplete(biConsumer);\n-    }\n-\n-    @Override\n-    public boolean cancel(boolean mayInterruptIfRunning) {\n-        return false;\n-    }\n-\n-    @Override\n-    public boolean isCancelled() {\n-        return false;\n-    }\n-\n-    @Override\n-    public boolean isDone() {\n-        return future.isDone();\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public V get() throws InterruptedException, ExecutionException {\n-        try {\n-            return (V) (((Result) future.get()).recreate());\n-        } catch (InterruptedException | ExecutionException e)  {\n-            throw e;\n-        } catch (Throwable e) {\n-            throw new RpcException(e);\n-        }\n-    }\n-\n-    @Override\n-    @SuppressWarnings(\"unchecked\")\n-    public V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {\n-        try {\n-            return (V) (((Result) future.get(timeout, unit)).recreate());\n-        } catch (InterruptedException | ExecutionException | TimeoutException e)  {\n-            throw e;\n-        } catch (Throwable e) {\n-            throw new RpcException(e);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.rpc.protocol.dubbo;\r\n+\r\n+import org.apache.dubbo.rpc.AppResponse;\r\n+import org.apache.dubbo.rpc.Result;\r\n+\r\n+import com.alibaba.dubbo.remoting.RemotingException;\r\n+import com.alibaba.dubbo.remoting.exchange.ResponseCallback;\r\n+import com.alibaba.dubbo.remoting.exchange.ResponseFuture;\r\n+import com.alibaba.dubbo.rpc.RpcException;\r\n+\r\n+import java.util.concurrent.CompletableFuture;\r\n+import java.util.concurrent.CompletionException;\r\n+import java.util.concurrent.ExecutionException;\r\n+import java.util.concurrent.Future;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.TimeoutException;\r\n+import java.util.function.BiConsumer;\r\n+\r\n+/**\r\n+ * 2019-06-20\r\n+ */\r\n+@Deprecated\r\n+public class FutureAdapter<V> implements Future<V> {\r\n+\r\n+    private CompletableFuture<Object> future;\r\n+\r\n+    public FutureAdapter(CompletableFuture<Object> future) {\r\n+        this.future = future;\r\n+    }\r\n+\r\n+    public FutureAdapter(ResponseFuture responseFuture) {\r\n+        this.future = new CompletableFuture<>();\r\n+        responseFuture.setCallback(new ResponseCallback() {\r\n+            @Override\r\n+            public void done(Object response) {\r\n+                future.complete(response);\r\n+            }\r\n+\r\n+            @Override\r\n+            public void caught(Throwable exception) {\r\n+                future.completeExceptionally(exception);\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    public ResponseFuture getFuture() {\r\n+        return new ResponseFuture() {\r\n+            @Override\r\n+            public Object get() throws RemotingException {\r\n+                try {\r\n+                    return future.get();\r\n+                } catch (InterruptedException | ExecutionException e) {\r\n+                    throw new RemotingException(e);\r\n+                }\r\n+            }\r\n+\r\n+            @Override\r\n+            public Object get(int timeoutInMillis) throws RemotingException {\r\n+                try {\r\n+                    return future.get(timeoutInMillis, TimeUnit.MILLISECONDS);\r\n+                } catch (InterruptedException | TimeoutException | ExecutionException e) {\r\n+                    throw new RemotingException(e);\r\n+                }\r\n+            }\r\n+\r\n+            @Override\r\n+            public void setCallback(ResponseCallback callback) {\r\n+                FutureAdapter.this.setCallback(callback);\r\n+            }\r\n+\r\n+            @Override\r\n+            public boolean isDone() {\r\n+                return future.isDone();\r\n+            }\r\n+        };\r\n+    }\r\n+\r\n+    void setCallback(ResponseCallback callback) {\r\n+        BiConsumer<Object, ? super Throwable> biConsumer = new BiConsumer<Object, Throwable>() {\r\n+\r\n+            @Override\r\n+            public void accept(Object obj, Throwable t) {\r\n+                if (t != null) {\r\n+                    if (t instanceof CompletionException) {\r\n+                        t = t.getCause();\r\n+                    }\r\n+                    callback.caught(t);\r\n+                } else {\r\n+                    AppResponse appResponse = (AppResponse)obj;\r\n+                    if (appResponse.hasException()) {\r\n+                        callback.caught(appResponse.getException());\r\n+                    } else {\r\n+                        callback.done((V) appResponse.getValue());\r\n+                    }\r\n+                }\r\n+            }\r\n+        };\r\n+        future.whenComplete(biConsumer);\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean cancel(boolean mayInterruptIfRunning) {\r\n+        return false;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isCancelled() {\r\n+        return false;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean isDone() {\r\n+        return future.isDone();\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public V get() throws InterruptedException, ExecutionException {\r\n+        try {\r\n+            return (V) (((Result) future.get()).recreate());\r\n+        } catch (InterruptedException | ExecutionException e)  {\r\n+            throw e;\r\n+        } catch (Throwable e) {\r\n+            throw new RpcException(e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    @SuppressWarnings(\"unchecked\")\r\n+    public V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {\r\n+        try {\r\n+            return (V) (((Result) future.get(timeout, unit)).recreate());\r\n+        } catch (InterruptedException | ExecutionException | TimeoutException e)  {\r\n+            throw e;\r\n+        } catch (Throwable e) {\r\n+            throw new RpcException(e);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "com/alibaba/dubbo/rpc/support/RpcUtils.java", "source2": "com/alibaba/dubbo/rpc/support/RpcUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,78 +1,78 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package com.alibaba.dubbo.rpc.support;\n-\n-import com.alibaba.dubbo.common.URL;\n-import com.alibaba.dubbo.rpc.Invocation;\n-\n-import java.lang.reflect.Type;\n-\n-/**\n- * 2019-04-18\n- */\n-public class RpcUtils extends org.apache.dubbo.rpc.support.RpcUtils {\n-\n-\n-    public static Class<?> getReturnType(Invocation invocation) {\n-        return org.apache.dubbo.rpc.support.RpcUtils.getReturnType(invocation);\n-    }\n-\n-    // TODO why not get return type when initialize Invocation?\n-    public static Type[] getReturnTypes(Invocation invocation) {\n-        return org.apache.dubbo.rpc.support.RpcUtils.getReturnTypes(invocation);\n-    }\n-\n-    public static Long getInvocationId(Invocation inv) {\n-        return org.apache.dubbo.rpc.support.RpcUtils.getInvocationId(inv);\n-    }\n-\n-    /**\n-     * Idempotent operation: invocation id will be added in async operation by default\n-     *\n-     * @param url\n-     * @param inv\n-     */\n-    public static void attachInvocationIdIfAsync(URL url, Invocation inv) {\n-        org.apache.dubbo.rpc.support.RpcUtils.attachInvocationIdIfAsync(url.getOriginalURL(), inv);\n-    }\n-\n-\n-    public static String getMethodName(Invocation invocation) {\n-        return org.apache.dubbo.rpc.support.RpcUtils.getMethodName(invocation);\n-    }\n-\n-    public static Object[] getArguments(Invocation invocation) {\n-        return org.apache.dubbo.rpc.support.RpcUtils.getArguments(invocation);\n-    }\n-\n-    public static Class<?>[] getParameterTypes(Invocation invocation) {\n-        return org.apache.dubbo.rpc.support.RpcUtils.getParameterTypes(invocation);\n-    }\n-\n-    public static boolean isAsync(URL url, Invocation inv) {\n-        return org.apache.dubbo.rpc.support.RpcUtils.isAsync(url.getOriginalURL(), inv);\n-    }\n-\n-    public static boolean isReturnTypeFuture(Invocation inv) {\n-        return org.apache.dubbo.rpc.support.RpcUtils.isReturnTypeFuture(inv);\n-    }\n-\n-    public static boolean isOneway(URL url, Invocation inv) {\n-        return org.apache.dubbo.rpc.support.RpcUtils.isOneway(url.getOriginalURL(), inv);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package com.alibaba.dubbo.rpc.support;\r\n+\r\n+import com.alibaba.dubbo.common.URL;\r\n+import com.alibaba.dubbo.rpc.Invocation;\r\n+\r\n+import java.lang.reflect.Type;\r\n+\r\n+/**\r\n+ * 2019-04-18\r\n+ */\r\n+public class RpcUtils extends org.apache.dubbo.rpc.support.RpcUtils {\r\n+\r\n+\r\n+    public static Class<?> getReturnType(Invocation invocation) {\r\n+        return org.apache.dubbo.rpc.support.RpcUtils.getReturnType(invocation);\r\n+    }\r\n+\r\n+    // TODO why not get return type when initialize Invocation?\r\n+    public static Type[] getReturnTypes(Invocation invocation) {\r\n+        return org.apache.dubbo.rpc.support.RpcUtils.getReturnTypes(invocation);\r\n+    }\r\n+\r\n+    public static Long getInvocationId(Invocation inv) {\r\n+        return org.apache.dubbo.rpc.support.RpcUtils.getInvocationId(inv);\r\n+    }\r\n+\r\n+    /**\r\n+     * Idempotent operation: invocation id will be added in async operation by default\r\n+     *\r\n+     * @param url\r\n+     * @param inv\r\n+     */\r\n+    public static void attachInvocationIdIfAsync(URL url, Invocation inv) {\r\n+        org.apache.dubbo.rpc.support.RpcUtils.attachInvocationIdIfAsync(url.getOriginalURL(), inv);\r\n+    }\r\n+\r\n+\r\n+    public static String getMethodName(Invocation invocation) {\r\n+        return org.apache.dubbo.rpc.support.RpcUtils.getMethodName(invocation);\r\n+    }\r\n+\r\n+    public static Object[] getArguments(Invocation invocation) {\r\n+        return org.apache.dubbo.rpc.support.RpcUtils.getArguments(invocation);\r\n+    }\r\n+\r\n+    public static Class<?>[] getParameterTypes(Invocation invocation) {\r\n+        return org.apache.dubbo.rpc.support.RpcUtils.getParameterTypes(invocation);\r\n+    }\r\n+\r\n+    public static boolean isAsync(URL url, Invocation inv) {\r\n+        return org.apache.dubbo.rpc.support.RpcUtils.isAsync(url.getOriginalURL(), inv);\r\n+    }\r\n+\r\n+    public static boolean isReturnTypeFuture(Invocation inv) {\r\n+        return org.apache.dubbo.rpc.support.RpcUtils.isReturnTypeFuture(inv);\r\n+    }\r\n+\r\n+    public static boolean isOneway(URL url, Invocation inv) {\r\n+        return org.apache.dubbo.rpc.support.RpcUtils.isOneway(url.getOriginalURL(), inv);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/DefaultMetadataParamsFilter.java", "source2": "org/apache/dubbo/metadata/DefaultMetadataParamsFilter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,55 +1,55 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata;\n-\n-import org.apache.dubbo.common.extension.Activate;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.LOADBALANCE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.RELEASE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.remoting.Constants.CODEC_KEY;\n-import static org.apache.dubbo.remoting.Constants.CONNECTIONS_KEY;\n-import static org.apache.dubbo.remoting.Constants.EXCHANGER_KEY;\n-import static org.apache.dubbo.remoting.Constants.SERIALIZATION_KEY;\n-import static org.apache.dubbo.rpc.Constants.DEPRECATED_KEY;\n-import static org.apache.dubbo.rpc.Constants.MOCK_KEY;\n-import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\n-import static org.apache.dubbo.rpc.cluster.Constants.WARMUP_KEY;\n-import static org.apache.dubbo.rpc.cluster.Constants.WEIGHT_KEY;\n-\n-@Activate\n-public class DefaultMetadataParamsFilter implements MetadataParamsFilter {\n-    @Override\n-    public String[] serviceParamsIncluded() {\n-        return new String[]{\n-                CODEC_KEY, EXCHANGER_KEY, SERIALIZATION_KEY, CLUSTER_KEY, CONNECTIONS_KEY, DEPRECATED_KEY,\n-                GROUP_KEY, LOADBALANCE_KEY, MOCK_KEY, PATH_KEY, TIMEOUT_KEY, TOKEN_KEY, VERSION_KEY, WARMUP_KEY,\n-                WEIGHT_KEY, DUBBO_VERSION_KEY, RELEASE_KEY\n-        };\n-    }\n-\n-\n-    @Override\n-    public String[] instanceParamsIncluded() {\n-        return new String[0];\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata;\r\n+\r\n+import org.apache.dubbo.common.extension.Activate;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.LOADBALANCE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.RELEASE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CODEC_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.CONNECTIONS_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.EXCHANGER_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.SERIALIZATION_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.DEPRECATED_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.MOCK_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.TOKEN_KEY;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.WARMUP_KEY;\r\n+import static org.apache.dubbo.rpc.cluster.Constants.WEIGHT_KEY;\r\n+\r\n+@Activate\r\n+public class DefaultMetadataParamsFilter implements MetadataParamsFilter {\r\n+    @Override\r\n+    public String[] serviceParamsIncluded() {\r\n+        return new String[]{\r\n+                CODEC_KEY, EXCHANGER_KEY, SERIALIZATION_KEY, CLUSTER_KEY, CONNECTIONS_KEY, DEPRECATED_KEY,\r\n+                GROUP_KEY, LOADBALANCE_KEY, MOCK_KEY, PATH_KEY, TIMEOUT_KEY, TOKEN_KEY, VERSION_KEY, WARMUP_KEY,\r\n+                WEIGHT_KEY, DUBBO_VERSION_KEY, RELEASE_KEY\r\n+        };\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public String[] instanceParamsIncluded() {\r\n+        return new String[0];\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/DynamicConfigurationServiceNameMapping.java", "source2": "org/apache/dubbo/metadata/DynamicConfigurationServiceNameMapping.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,103 +1,103 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-\n-import java.util.Collections;\n-import java.util.LinkedHashSet;\n-import java.util.List;\n-import java.util.Set;\n-\n-import static java.lang.String.valueOf;\n-import static java.util.Arrays.asList;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.rpc.model.ApplicationModel.getName;\n-\n-/**\n- * The {@link ServiceNameMapping} implementation based on {@link DynamicConfiguration}\n- */\n-public class DynamicConfigurationServiceNameMapping implements ServiceNameMapping {\n-\n-    public static String DEFAULT_MAPPING_GROUP = \"mapping\";\n-\n-    private static final List<String> IGNORED_SERVICE_INTERFACES = asList(MetadataService.class.getName());\n-\n-    private final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    @Override\n-    public void map(URL url) {\n-        String serviceInterface = url.getServiceInterface();\n-        String group = url.getParameter(GROUP_KEY);\n-        String version = url.getParameter(VERSION_KEY);\n-        String protocol = url.getProtocol();\n-\n-        if (IGNORED_SERVICE_INTERFACES.contains(serviceInterface)) {\n-            return;\n-        }\n-\n-        DynamicConfiguration dynamicConfiguration = DynamicConfiguration.getDynamicConfiguration();\n-\n-        // the Dubbo Service Key as group\n-        // the service(application) name as key\n-        // It does matter whatever the content is, we just need a record\n-        String key = getName();\n-        String content = valueOf(System.currentTimeMillis());\n-\n-        execute(() -> {\n-            dynamicConfiguration.publishConfig(key, ServiceNameMapping.buildGroup(serviceInterface, group, version, protocol), content);\n-            if (logger.isInfoEnabled()) {\n-                logger.info(String.format(\"Dubbo service[%s] mapped to interface name[%s].\",\n-                        group, serviceInterface));\n-            }\n-        });\n-    }\n-\n-    @Override\n-    public Set<String> getAndListen(URL url, MappingListener mappingListener) {\n-        String serviceInterface = url.getServiceInterface();\n-        String group = url.getParameter(GROUP_KEY);\n-        String version = url.getParameter(VERSION_KEY);\n-        String protocol = url.getProtocol();\n-        DynamicConfiguration dynamicConfiguration = DynamicConfiguration.getDynamicConfiguration();\n-\n-        Set<String> serviceNames = new LinkedHashSet<>();\n-        execute(() -> {\n-            Set<String> keys = dynamicConfiguration\n-                    .getConfigKeys(ServiceNameMapping.buildGroup(serviceInterface, group, version, protocol));\n-            if (CollectionUtils.isNotEmpty(keys)) {\n-                serviceNames.addAll(keys);\n-            }\n-        });\n-        return Collections.unmodifiableSet(serviceNames);\n-    }\n-\n-    private void execute(Runnable runnable) {\n-        try {\n-            runnable.run();\n-        } catch (Throwable e) {\n-            if (logger.isWarnEnabled()) {\n-                logger.warn(e.getMessage(), e);\n-            }\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.List;\r\n+import java.util.Set;\r\n+\r\n+import static java.lang.String.valueOf;\r\n+import static java.util.Arrays.asList;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.rpc.model.ApplicationModel.getName;\r\n+\r\n+/**\r\n+ * The {@link ServiceNameMapping} implementation based on {@link DynamicConfiguration}\r\n+ */\r\n+public class DynamicConfigurationServiceNameMapping implements ServiceNameMapping {\r\n+\r\n+    public static String DEFAULT_MAPPING_GROUP = \"mapping\";\r\n+\r\n+    private static final List<String> IGNORED_SERVICE_INTERFACES = asList(MetadataService.class.getName());\r\n+\r\n+    private final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    @Override\r\n+    public void map(URL url) {\r\n+        String serviceInterface = url.getServiceInterface();\r\n+        String group = url.getParameter(GROUP_KEY);\r\n+        String version = url.getParameter(VERSION_KEY);\r\n+        String protocol = url.getProtocol();\r\n+\r\n+        if (IGNORED_SERVICE_INTERFACES.contains(serviceInterface)) {\r\n+            return;\r\n+        }\r\n+\r\n+        DynamicConfiguration dynamicConfiguration = DynamicConfiguration.getDynamicConfiguration();\r\n+\r\n+        // the Dubbo Service Key as group\r\n+        // the service(application) name as key\r\n+        // It does matter whatever the content is, we just need a record\r\n+        String key = getName();\r\n+        String content = valueOf(System.currentTimeMillis());\r\n+\r\n+        execute(() -> {\r\n+            dynamicConfiguration.publishConfig(key, ServiceNameMapping.buildGroup(serviceInterface, group, version, protocol), content);\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(String.format(\"Dubbo service[%s] mapped to interface name[%s].\",\r\n+                        group, serviceInterface));\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<String> getAndListen(URL url, MappingListener mappingListener) {\r\n+        String serviceInterface = url.getServiceInterface();\r\n+        String group = url.getParameter(GROUP_KEY);\r\n+        String version = url.getParameter(VERSION_KEY);\r\n+        String protocol = url.getProtocol();\r\n+        DynamicConfiguration dynamicConfiguration = DynamicConfiguration.getDynamicConfiguration();\r\n+\r\n+        Set<String> serviceNames = new LinkedHashSet<>();\r\n+        execute(() -> {\r\n+            Set<String> keys = dynamicConfiguration\r\n+                    .getConfigKeys(ServiceNameMapping.buildGroup(serviceInterface, group, version, protocol));\r\n+            if (CollectionUtils.isNotEmpty(keys)) {\r\n+                serviceNames.addAll(keys);\r\n+            }\r\n+        });\r\n+        return Collections.unmodifiableSet(serviceNames);\r\n+    }\r\n+\r\n+    private void execute(Runnable runnable) {\r\n+        try {\r\n+            runnable.run();\r\n+        } catch (Throwable e) {\r\n+            if (logger.isWarnEnabled()) {\r\n+                logger.warn(e.getMessage(), e);\r\n+            }\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/MappingChangedEvent.java", "source2": "org/apache/dubbo/metadata/MappingChangedEvent.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,41 +1,41 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata;\n-\n-import java.util.Set;\n-\n-public class MappingChangedEvent {\n-    private String serviceKey;\n-    private Set<String> apps;\n-\n-    public String getServiceKey() {\n-        return serviceKey;\n-    }\n-\n-    public void setServiceKey(String serviceKey) {\n-        this.serviceKey = serviceKey;\n-    }\n-\n-    public Set<String> getApps() {\n-        return apps;\n-    }\n-\n-    public void setApps(Set<String> apps) {\n-        this.apps = apps;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata;\r\n+\r\n+import java.util.Set;\r\n+\r\n+public class MappingChangedEvent {\r\n+    private String serviceKey;\r\n+    private Set<String> apps;\r\n+\r\n+    public String getServiceKey() {\r\n+        return serviceKey;\r\n+    }\r\n+\r\n+    public void setServiceKey(String serviceKey) {\r\n+        this.serviceKey = serviceKey;\r\n+    }\r\n+\r\n+    public Set<String> getApps() {\r\n+        return apps;\r\n+    }\r\n+\r\n+    public void setApps(Set<String> apps) {\r\n+        this.apps = apps;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/MappingListener.java", "source2": "org/apache/dubbo/metadata/MappingListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,21 +1,21 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata;\n-\n-public interface MappingListener {\n-    void onEvent(MappingChangedEvent event);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata;\r\n+\r\n+public interface MappingListener {\r\n+    void onEvent(MappingChangedEvent event);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/MetadataChangeListener.java", "source2": "org/apache/dubbo/metadata/MetadataChangeListener.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,35 +1,35 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata;\n-\n-public interface MetadataChangeListener {\n-    /**\n-     * Call when metadata in provider side update <p/>\n-     * Used to notify consumer to update metadata of ServiceInstance\n-     *\n-     * @param metadata latest metadata\n-     */\n-    void onEvent(String metadata);\n-\n-    /**\n-     * Echo test\n-     * Used to check consumer still online\n-     */\n-    default String echo(String msg) {\n-        return msg;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata;\r\n+\r\n+public interface MetadataChangeListener {\r\n+    /**\r\n+     * Call when metadata in provider side update <p/>\r\n+     * Used to notify consumer to update metadata of ServiceInstance\r\n+     *\r\n+     * @param metadata latest metadata\r\n+     */\r\n+    void onEvent(String metadata);\r\n+\r\n+    /**\r\n+     * Echo test\r\n+     * Used to check consumer still online\r\n+     */\r\n+    default String echo(String msg) {\r\n+        return msg;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/MetadataConstants.java", "source2": "org/apache/dubbo/metadata/MetadataConstants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,30 +1,30 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata;\n-\n-public class MetadataConstants {\n-    public static final String KEY_SEPARATOR = \":\";\n-    public static final String DEFAULT_PATH_TAG = \"metadata\";\n-    public static final String KEY_REVISION_PREFIX = \"revision\";\n-    public static final String META_DATA_STORE_TAG = \".metaData\";\n-    public static final String SERVICE_META_DATA_STORE_TAG = \".smd\";\n-    public static final String CONSUMER_META_DATA_STORE_TAG = \".cmd\";\n-    public static final String METADATA_PUBLISH_DELAY_KEY = \"dubbo.application.metadata.delay\";\n-    public static final int DEFAULT_METADATA_PUBLISH_DELAY = 5000;\n-    public static final String METADATA_PROXY_TIMEOUT_KEY = \"dubbo.application.metadata.delay\";\n-    public static final int DEFAULT_METADATA_TIMEOUT_VALUE = 5000;\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata;\r\n+\r\n+public class MetadataConstants {\r\n+    public static final String KEY_SEPARATOR = \":\";\r\n+    public static final String DEFAULT_PATH_TAG = \"metadata\";\r\n+    public static final String KEY_REVISION_PREFIX = \"revision\";\r\n+    public static final String META_DATA_STORE_TAG = \".metaData\";\r\n+    public static final String SERVICE_META_DATA_STORE_TAG = \".smd\";\r\n+    public static final String CONSUMER_META_DATA_STORE_TAG = \".cmd\";\r\n+    public static final String METADATA_PUBLISH_DELAY_KEY = \"dubbo.application.metadata.delay\";\r\n+    public static final int DEFAULT_METADATA_PUBLISH_DELAY = 5000;\r\n+    public static final String METADATA_PROXY_TIMEOUT_KEY = \"dubbo.application.metadata.delay\";\r\n+    public static final int DEFAULT_METADATA_TIMEOUT_VALUE = 5000;\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/MetadataInfo.java", "source2": "org/apache/dubbo/metadata/MetadataInfo.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,449 +1,449 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.compiler.support.ClassUtils;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.utils.ArrayUtils;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import java.io.Serializable;\n-import java.lang.reflect.Method;\n-import java.util.Collections;\n-import java.util.HashMap;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Objects;\n-import java.util.SortedSet;\n-import java.util.TreeSet;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.atomic.AtomicBoolean;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DOT_SEPARATOR;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_CHAR_SEPARATOR;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.METHODS_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-\n-public class MetadataInfo implements Serializable {\n-    public static String DEFAULT_REVISION = \"0\";\n-    private String app;\n-    private String revision;\n-    private Map<String, ServiceInfo> services;\n-\n-    // used at runtime\n-    private transient Map<String, String> extendParams;\n-    private transient AtomicBoolean reported = new AtomicBoolean(false);\n-\n-    public MetadataInfo(String app) {\n-        this(app, null, null);\n-    }\n-\n-    public MetadataInfo(String app, String revision, Map<String, ServiceInfo> services) {\n-        this.app = app;\n-        this.revision = revision;\n-        this.services = services == null ? new HashMap<>() : services;\n-        this.extendParams = new HashMap<>();\n-    }\n-\n-    public void addService(ServiceInfo serviceInfo) {\n-        if (serviceInfo == null) {\n-            return;\n-        }\n-        this.services.put(serviceInfo.getMatchKey(), serviceInfo);\n-        markChanged();\n-    }\n-\n-    public void removeService(ServiceInfo serviceInfo) {\n-        if (serviceInfo == null) {\n-            return;\n-        }\n-        this.services.remove(serviceInfo.getMatchKey());\n-        markChanged();\n-    }\n-\n-    public void removeService(String key) {\n-        if (key == null) {\n-            return;\n-        }\n-        this.services.remove(key);\n-        markChanged();\n-    }\n-\n-    public String calAndGetRevision() {\n-        if (revision != null && hasReported()) {\n-            return revision;\n-        }\n-\n-        if (CollectionUtils.isEmptyMap(services)) {\n-            return DEFAULT_REVISION;\n-        }\n-\n-        StringBuilder sb = new StringBuilder();\n-        sb.append(app);\n-        for (Map.Entry<String, ServiceInfo> entry : services.entrySet()) {\n-            sb.append(entry.getValue().toDescString());\n-        }\n-        this.revision = RevisionResolver.calRevision(sb.toString());\n-        return revision;\n-    }\n-\n-    public void setRevision(String revision) {\n-        this.revision = revision;\n-    }\n-\n-    public boolean hasReported() {\n-        return reported.get();\n-    }\n-\n-    public void markReported() {\n-        reported.compareAndSet(false, true);\n-    }\n-\n-    public void markChanged() {\n-        reported.compareAndSet(true, false);\n-    }\n-\n-    public String getApp() {\n-        return app;\n-    }\n-\n-    public void setApp(String app) {\n-        this.app = app;\n-    }\n-\n-    public Map<String, ServiceInfo> getServices() {\n-        return services;\n-    }\n-\n-    public void setServices(Map<String, ServiceInfo> services) {\n-        this.services = services;\n-    }\n-\n-    public ServiceInfo getServiceInfo(String serviceKey) {\n-        return services.get(serviceKey);\n-    }\n-\n-    public Map<String, String> getExtendParams() {\n-        return extendParams;\n-    }\n-\n-    public String getParameter(String key, String serviceKey) {\n-        ServiceInfo serviceInfo = services.get(serviceKey);\n-        if (serviceInfo == null) {\n-            return null;\n-        }\n-        return serviceInfo.getParameter(key);\n-    }\n-\n-    public Map<String, String> getParameters(String serviceKey) {\n-        ServiceInfo serviceInfo = services.get(serviceKey);\n-        if (serviceInfo == null) {\n-            return Collections.emptyMap();\n-        }\n-        return serviceInfo.getAllParams();\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"metadata{\" +\n-                \"app='\" + app + \"',\" +\n-                \"revision='\" + revision + \"',\" +\n-                \"services=\" + services +\n-                \"}\";\n-    }\n-\n-    public static class ServiceInfo implements Serializable {\n-        private static ExtensionLoader<MetadataParamsFilter> loader = ExtensionLoader.getExtensionLoader(MetadataParamsFilter.class);\n-        private String name;\n-        private String group;\n-        private String version;\n-        private String protocol;\n-        private String path; // most of the time, path is the same with the interface name.\n-        private Map<String, String> params;\n-\n-        // params configured on consumer side,\n-        private transient Map<String, String> consumerParams;\n-        // cached method params\n-        private transient Map<String, Map<String, String>> methodParams;\n-        private transient Map<String, Map<String, String>> consumerMethodParams;\n-        // cached numbers\n-        private transient Map<String, Number> numbers;\n-        private transient Map<String, Map<String, Number>> methodNumbers;\n-        // service + group + version\n-        private transient String serviceKey;\n-        // service + group + version + protocol\n-        private transient String matchKey;\n-\n-        private transient URL url;\n-\n-        public ServiceInfo() {\n-        }\n-\n-        public ServiceInfo(URL url) {\n-            this(url.getServiceInterface(), url.getParameter(GROUP_KEY), url.getParameter(VERSION_KEY), url.getProtocol(), url.getPath(), null);\n-\n-            this.url = url;\n-            Map<String, String> params = new HashMap<>();\n-            List<MetadataParamsFilter> filters = loader.getActivateExtension(url, \"params-filter\");\n-            for (MetadataParamsFilter filter : filters) {\n-                String[] paramsIncluded = filter.serviceParamsIncluded();\n-                if (ArrayUtils.isNotEmpty(paramsIncluded)) {\n-                    for (String p : paramsIncluded) {\n-                        String value = url.getParameter(p);\n-                        if (StringUtils.isNotEmpty(value) && params.get(p) == null) {\n-                            params.put(p, value);\n-                        }\n-                        String[] methods = url.getParameter(METHODS_KEY, (String[]) null);\n-                        if (methods != null) {\n-                            for (String method : methods) {\n-                                String mValue = url.getMethodParameterStrict(method, p);\n-                                if (StringUtils.isNotEmpty(mValue)) {\n-                                    params.put(method + DOT_SEPARATOR + p, mValue);\n-                                }\n-                            }\n-                        }\n-                    }\n-                }\n-            }\n-            this.params = params;\n-        }\n-\n-        public ServiceInfo(String name, String group, String version, String protocol, String path, Map<String, String> params) {\n-            this.name = name;\n-            this.group = group;\n-            this.version = version;\n-            this.protocol = protocol;\n-            this.path = path;\n-            this.params = params == null ? new HashMap<>() : params;\n-\n-            this.serviceKey = URL.buildKey(name, group, version);\n-            this.matchKey = buildMatchKey();\n-        }\n-\n-        public String getMatchKey() {\n-            if (matchKey != null) {\n-                return matchKey;\n-            }\n-            buildMatchKey();\n-            return matchKey;\n-        }\n-\n-        private String buildMatchKey() {\n-            matchKey = getServiceKey();\n-            if (StringUtils.isNotEmpty(protocol)) {\n-                matchKey = getServiceKey() + GROUP_CHAR_SEPARATOR + protocol;\n-            }\n-            return matchKey;\n-        }\n-\n-        public String getServiceKey() {\n-            if (serviceKey != null) {\n-                return serviceKey;\n-            }\n-            this.serviceKey = URL.buildKey(name, group, version);\n-            return serviceKey;\n-        }\n-\n-        public String getName() {\n-            return name;\n-        }\n-\n-        public void setName(String name) {\n-            this.name = name;\n-        }\n-\n-        public String getGroup() {\n-            return group;\n-        }\n-\n-        public void setGroup(String group) {\n-            this.group = group;\n-        }\n-\n-        public String getVersion() {\n-            return version;\n-        }\n-\n-        public void setVersion(String version) {\n-            this.version = version;\n-        }\n-\n-        public String getPath() {\n-            return path;\n-        }\n-\n-        public void setPath(String path) {\n-            this.path = path;\n-        }\n-\n-        public Map<String, String> getParams() {\n-            if (params == null) {\n-                return Collections.emptyMap();\n-            }\n-            return params;\n-        }\n-\n-        public void setParams(Map<String, String> params) {\n-            this.params = params;\n-        }\n-\n-        public Map<String, String> getAllParams() {\n-            if (consumerParams != null) {\n-                Map<String, String> allParams = new HashMap<>((int) ((params.size() + consumerParams.size()) / 0.75f + 1));\n-                allParams.putAll(params);\n-                allParams.putAll(consumerParams);\n-                return allParams;\n-            }\n-            return params;\n-        }\n-\n-        public String getParameter(String key) {\n-            if (consumerParams != null) {\n-                String value = consumerParams.get(key);\n-                if (value != null) {\n-                    return value;\n-                }\n-            }\n-            return params.get(key);\n-        }\n-\n-        public String getMethodParameter(String method, String key, String defaultValue) {\n-            if (methodParams == null) {\n-                methodParams = URL.toMethodParameters(params);\n-                consumerMethodParams = URL.toMethodParameters(consumerParams);\n-            }\n-\n-            String value = getMethodParameter(method, key, consumerMethodParams);\n-            if (value != null) {\n-                return value;\n-            }\n-            value = getMethodParameter(method, key, methodParams);\n-            return value == null ? defaultValue : value;\n-        }\n-\n-        private String getMethodParameter(String method, String key, Map<String, Map<String, String>> map) {\n-            Map<String, String> keyMap = map.get(method);\n-            String value = null;\n-            if (keyMap != null) {\n-                value = keyMap.get(key);\n-            }\n-            if (StringUtils.isEmpty(value)) {\n-                value = getParameter(key);\n-            }\n-            return value;\n-        }\n-\n-        public boolean hasMethodParameter(String method, String key) {\n-            String value = this.getMethodParameter(method, key, (String) null);\n-            return StringUtils.isNotEmpty(value);\n-        }\n-\n-        public boolean hasMethodParameter(String method) {\n-            if (methodParams == null) {\n-                methodParams = URL.toMethodParameters(params);\n-                consumerMethodParams = URL.toMethodParameters(consumerParams);\n-            }\n-\n-            return consumerMethodParams.containsKey(method) || methodParams.containsKey(method);\n-        }\n-\n-        public String toDescString() {\n-            return this.getMatchKey() + getMethodSignaturesString() + getParams();\n-        }\n-\n-        private String getMethodSignaturesString() {\n-            SortedSet<String> methodStrings = new TreeSet();\n-\n-            Method[] methods = ClassUtils.forName(name).getMethods();\n-            for (Method method : methods) {\n-                methodStrings.add(method.toString());\n-            }\n-            return methodStrings.toString();\n-        }\n-\n-        public void addParameter(String key, String value) {\n-            if (consumerParams != null) {\n-                this.consumerParams.put(key, value);\n-            }\n-        }\n-\n-        public void addParameterIfAbsent(String key, String value) {\n-            if (consumerParams != null) {\n-                this.consumerParams.putIfAbsent(key, value);\n-            }\n-        }\n-\n-        public void addConsumerParams(Map<String, String> params) {\n-            // copy once for one service subscription\n-            if (consumerParams == null) {\n-                consumerParams = new HashMap<>(params);\n-            }\n-        }\n-\n-        public Map<String, Number> getNumbers() {\n-            // concurrent initialization is tolerant\n-            if (numbers == null) {\n-                numbers = new ConcurrentHashMap<>();\n-            }\n-            return numbers;\n-        }\n-\n-        public Map<String, Map<String, Number>> getMethodNumbers() {\n-            if (methodNumbers == null) { // concurrent initialization is tolerant\n-                methodNumbers = new ConcurrentHashMap<>();\n-            }\n-            return methodNumbers;\n-        }\n-\n-        public URL getUrl() {\n-            return url;\n-        }\n-\n-        @Override\n-        public boolean equals(Object obj) {\n-            if (obj == null) {\n-                return false;\n-            }\n-            if (!(obj instanceof ServiceInfo)) {\n-                return false;\n-            }\n-\n-            ServiceInfo serviceInfo = (ServiceInfo) obj;\n-            return this.getMatchKey().equals(serviceInfo.getMatchKey()) && this.getParams().equals(serviceInfo.getParams());\n-        }\n-\n-        @Override\n-        public int hashCode() {\n-            return Objects.hash(getMatchKey(), getParams());\n-        }\n-\n-        @Override\n-        public String toString() {\n-            return \"service{\" +\n-                    \"name='\" + name + \"',\" +\n-                    \"group='\" + group + \"',\" +\n-                    \"version='\" + version + \"',\" +\n-                    \"protocol='\" + protocol + \"',\" +\n-                    \"params=\" + params + \",\" +\n-                    \"consumerParams=\" + consumerParams +\n-                    \"}\";\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.compiler.support.ClassUtils;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.utils.ArrayUtils;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import java.io.Serializable;\r\n+import java.lang.reflect.Method;\r\n+import java.util.Collections;\r\n+import java.util.HashMap;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Objects;\r\n+import java.util.SortedSet;\r\n+import java.util.TreeSet;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DOT_SEPARATOR;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_CHAR_SEPARATOR;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.METHODS_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+\r\n+public class MetadataInfo implements Serializable {\r\n+    public static String DEFAULT_REVISION = \"0\";\r\n+    private String app;\r\n+    private String revision;\r\n+    private Map<String, ServiceInfo> services;\r\n+\r\n+    // used at runtime\r\n+    private transient Map<String, String> extendParams;\r\n+    private transient AtomicBoolean reported = new AtomicBoolean(false);\r\n+\r\n+    public MetadataInfo(String app) {\r\n+        this(app, null, null);\r\n+    }\r\n+\r\n+    public MetadataInfo(String app, String revision, Map<String, ServiceInfo> services) {\r\n+        this.app = app;\r\n+        this.revision = revision;\r\n+        this.services = services == null ? new HashMap<>() : services;\r\n+        this.extendParams = new HashMap<>();\r\n+    }\r\n+\r\n+    public void addService(ServiceInfo serviceInfo) {\r\n+        if (serviceInfo == null) {\r\n+            return;\r\n+        }\r\n+        this.services.put(serviceInfo.getMatchKey(), serviceInfo);\r\n+        markChanged();\r\n+    }\r\n+\r\n+    public void removeService(ServiceInfo serviceInfo) {\r\n+        if (serviceInfo == null) {\r\n+            return;\r\n+        }\r\n+        this.services.remove(serviceInfo.getMatchKey());\r\n+        markChanged();\r\n+    }\r\n+\r\n+    public void removeService(String key) {\r\n+        if (key == null) {\r\n+            return;\r\n+        }\r\n+        this.services.remove(key);\r\n+        markChanged();\r\n+    }\r\n+\r\n+    public String calAndGetRevision() {\r\n+        if (revision != null && hasReported()) {\r\n+            return revision;\r\n+        }\r\n+\r\n+        if (CollectionUtils.isEmptyMap(services)) {\r\n+            return DEFAULT_REVISION;\r\n+        }\r\n+\r\n+        StringBuilder sb = new StringBuilder();\r\n+        sb.append(app);\r\n+        for (Map.Entry<String, ServiceInfo> entry : services.entrySet()) {\r\n+            sb.append(entry.getValue().toDescString());\r\n+        }\r\n+        this.revision = RevisionResolver.calRevision(sb.toString());\r\n+        return revision;\r\n+    }\r\n+\r\n+    public void setRevision(String revision) {\r\n+        this.revision = revision;\r\n+    }\r\n+\r\n+    public boolean hasReported() {\r\n+        return reported.get();\r\n+    }\r\n+\r\n+    public void markReported() {\r\n+        reported.compareAndSet(false, true);\r\n+    }\r\n+\r\n+    public void markChanged() {\r\n+        reported.compareAndSet(true, false);\r\n+    }\r\n+\r\n+    public String getApp() {\r\n+        return app;\r\n+    }\r\n+\r\n+    public void setApp(String app) {\r\n+        this.app = app;\r\n+    }\r\n+\r\n+    public Map<String, ServiceInfo> getServices() {\r\n+        return services;\r\n+    }\r\n+\r\n+    public void setServices(Map<String, ServiceInfo> services) {\r\n+        this.services = services;\r\n+    }\r\n+\r\n+    public ServiceInfo getServiceInfo(String serviceKey) {\r\n+        return services.get(serviceKey);\r\n+    }\r\n+\r\n+    public Map<String, String> getExtendParams() {\r\n+        return extendParams;\r\n+    }\r\n+\r\n+    public String getParameter(String key, String serviceKey) {\r\n+        ServiceInfo serviceInfo = services.get(serviceKey);\r\n+        if (serviceInfo == null) {\r\n+            return null;\r\n+        }\r\n+        return serviceInfo.getParameter(key);\r\n+    }\r\n+\r\n+    public Map<String, String> getParameters(String serviceKey) {\r\n+        ServiceInfo serviceInfo = services.get(serviceKey);\r\n+        if (serviceInfo == null) {\r\n+            return Collections.emptyMap();\r\n+        }\r\n+        return serviceInfo.getAllParams();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"metadata{\" +\r\n+                \"app='\" + app + \"',\" +\r\n+                \"revision='\" + revision + \"',\" +\r\n+                \"services=\" + services +\r\n+                \"}\";\r\n+    }\r\n+\r\n+    public static class ServiceInfo implements Serializable {\r\n+        private static ExtensionLoader<MetadataParamsFilter> loader = ExtensionLoader.getExtensionLoader(MetadataParamsFilter.class);\r\n+        private String name;\r\n+        private String group;\r\n+        private String version;\r\n+        private String protocol;\r\n+        private String path; // most of the time, path is the same with the interface name.\r\n+        private Map<String, String> params;\r\n+\r\n+        // params configured on consumer side,\r\n+        private transient Map<String, String> consumerParams;\r\n+        // cached method params\r\n+        private transient Map<String, Map<String, String>> methodParams;\r\n+        private transient Map<String, Map<String, String>> consumerMethodParams;\r\n+        // cached numbers\r\n+        private transient Map<String, Number> numbers;\r\n+        private transient Map<String, Map<String, Number>> methodNumbers;\r\n+        // service + group + version\r\n+        private transient String serviceKey;\r\n+        // service + group + version + protocol\r\n+        private transient String matchKey;\r\n+\r\n+        private transient URL url;\r\n+\r\n+        public ServiceInfo() {\r\n+        }\r\n+\r\n+        public ServiceInfo(URL url) {\r\n+            this(url.getServiceInterface(), url.getParameter(GROUP_KEY), url.getParameter(VERSION_KEY), url.getProtocol(), url.getPath(), null);\r\n+\r\n+            this.url = url;\r\n+            Map<String, String> params = new HashMap<>();\r\n+            List<MetadataParamsFilter> filters = loader.getActivateExtension(url, \"params-filter\");\r\n+            for (MetadataParamsFilter filter : filters) {\r\n+                String[] paramsIncluded = filter.serviceParamsIncluded();\r\n+                if (ArrayUtils.isNotEmpty(paramsIncluded)) {\r\n+                    for (String p : paramsIncluded) {\r\n+                        String value = url.getParameter(p);\r\n+                        if (StringUtils.isNotEmpty(value) && params.get(p) == null) {\r\n+                            params.put(p, value);\r\n+                        }\r\n+                        String[] methods = url.getParameter(METHODS_KEY, (String[]) null);\r\n+                        if (methods != null) {\r\n+                            for (String method : methods) {\r\n+                                String mValue = url.getMethodParameterStrict(method, p);\r\n+                                if (StringUtils.isNotEmpty(mValue)) {\r\n+                                    params.put(method + DOT_SEPARATOR + p, mValue);\r\n+                                }\r\n+                            }\r\n+                        }\r\n+                    }\r\n+                }\r\n+            }\r\n+            this.params = params;\r\n+        }\r\n+\r\n+        public ServiceInfo(String name, String group, String version, String protocol, String path, Map<String, String> params) {\r\n+            this.name = name;\r\n+            this.group = group;\r\n+            this.version = version;\r\n+            this.protocol = protocol;\r\n+            this.path = path;\r\n+            this.params = params == null ? new HashMap<>() : params;\r\n+\r\n+            this.serviceKey = URL.buildKey(name, group, version);\r\n+            this.matchKey = buildMatchKey();\r\n+        }\r\n+\r\n+        public String getMatchKey() {\r\n+            if (matchKey != null) {\r\n+                return matchKey;\r\n+            }\r\n+            buildMatchKey();\r\n+            return matchKey;\r\n+        }\r\n+\r\n+        private String buildMatchKey() {\r\n+            matchKey = getServiceKey();\r\n+            if (StringUtils.isNotEmpty(protocol)) {\r\n+                matchKey = getServiceKey() + GROUP_CHAR_SEPARATOR + protocol;\r\n+            }\r\n+            return matchKey;\r\n+        }\r\n+\r\n+        public String getServiceKey() {\r\n+            if (serviceKey != null) {\r\n+                return serviceKey;\r\n+            }\r\n+            this.serviceKey = URL.buildKey(name, group, version);\r\n+            return serviceKey;\r\n+        }\r\n+\r\n+        public String getName() {\r\n+            return name;\r\n+        }\r\n+\r\n+        public void setName(String name) {\r\n+            this.name = name;\r\n+        }\r\n+\r\n+        public String getGroup() {\r\n+            return group;\r\n+        }\r\n+\r\n+        public void setGroup(String group) {\r\n+            this.group = group;\r\n+        }\r\n+\r\n+        public String getVersion() {\r\n+            return version;\r\n+        }\r\n+\r\n+        public void setVersion(String version) {\r\n+            this.version = version;\r\n+        }\r\n+\r\n+        public String getPath() {\r\n+            return path;\r\n+        }\r\n+\r\n+        public void setPath(String path) {\r\n+            this.path = path;\r\n+        }\r\n+\r\n+        public Map<String, String> getParams() {\r\n+            if (params == null) {\r\n+                return Collections.emptyMap();\r\n+            }\r\n+            return params;\r\n+        }\r\n+\r\n+        public void setParams(Map<String, String> params) {\r\n+            this.params = params;\r\n+        }\r\n+\r\n+        public Map<String, String> getAllParams() {\r\n+            if (consumerParams != null) {\r\n+                Map<String, String> allParams = new HashMap<>((int) ((params.size() + consumerParams.size()) / 0.75f + 1));\r\n+                allParams.putAll(params);\r\n+                allParams.putAll(consumerParams);\r\n+                return allParams;\r\n+            }\r\n+            return params;\r\n+        }\r\n+\r\n+        public String getParameter(String key) {\r\n+            if (consumerParams != null) {\r\n+                String value = consumerParams.get(key);\r\n+                if (value != null) {\r\n+                    return value;\r\n+                }\r\n+            }\r\n+            return params.get(key);\r\n+        }\r\n+\r\n+        public String getMethodParameter(String method, String key, String defaultValue) {\r\n+            if (methodParams == null) {\r\n+                methodParams = URL.toMethodParameters(params);\r\n+                consumerMethodParams = URL.toMethodParameters(consumerParams);\r\n+            }\r\n+\r\n+            String value = getMethodParameter(method, key, consumerMethodParams);\r\n+            if (value != null) {\r\n+                return value;\r\n+            }\r\n+            value = getMethodParameter(method, key, methodParams);\r\n+            return value == null ? defaultValue : value;\r\n+        }\r\n+\r\n+        private String getMethodParameter(String method, String key, Map<String, Map<String, String>> map) {\r\n+            Map<String, String> keyMap = map.get(method);\r\n+            String value = null;\r\n+            if (keyMap != null) {\r\n+                value = keyMap.get(key);\r\n+            }\r\n+            if (StringUtils.isEmpty(value)) {\r\n+                value = getParameter(key);\r\n+            }\r\n+            return value;\r\n+        }\r\n+\r\n+        public boolean hasMethodParameter(String method, String key) {\r\n+            String value = this.getMethodParameter(method, key, (String) null);\r\n+            return StringUtils.isNotEmpty(value);\r\n+        }\r\n+\r\n+        public boolean hasMethodParameter(String method) {\r\n+            if (methodParams == null) {\r\n+                methodParams = URL.toMethodParameters(params);\r\n+                consumerMethodParams = URL.toMethodParameters(consumerParams);\r\n+            }\r\n+\r\n+            return consumerMethodParams.containsKey(method) || methodParams.containsKey(method);\r\n+        }\r\n+\r\n+        public String toDescString() {\r\n+            return this.getMatchKey() + getMethodSignaturesString() + getParams();\r\n+        }\r\n+\r\n+        private String getMethodSignaturesString() {\r\n+            SortedSet<String> methodStrings = new TreeSet();\r\n+\r\n+            Method[] methods = ClassUtils.forName(name).getMethods();\r\n+            for (Method method : methods) {\r\n+                methodStrings.add(method.toString());\r\n+            }\r\n+            return methodStrings.toString();\r\n+        }\r\n+\r\n+        public void addParameter(String key, String value) {\r\n+            if (consumerParams != null) {\r\n+                this.consumerParams.put(key, value);\r\n+            }\r\n+        }\r\n+\r\n+        public void addParameterIfAbsent(String key, String value) {\r\n+            if (consumerParams != null) {\r\n+                this.consumerParams.putIfAbsent(key, value);\r\n+            }\r\n+        }\r\n+\r\n+        public void addConsumerParams(Map<String, String> params) {\r\n+            // copy once for one service subscription\r\n+            if (consumerParams == null) {\r\n+                consumerParams = new HashMap<>(params);\r\n+            }\r\n+        }\r\n+\r\n+        public Map<String, Number> getNumbers() {\r\n+            // concurrent initialization is tolerant\r\n+            if (numbers == null) {\r\n+                numbers = new ConcurrentHashMap<>();\r\n+            }\r\n+            return numbers;\r\n+        }\r\n+\r\n+        public Map<String, Map<String, Number>> getMethodNumbers() {\r\n+            if (methodNumbers == null) { // concurrent initialization is tolerant\r\n+                methodNumbers = new ConcurrentHashMap<>();\r\n+            }\r\n+            return methodNumbers;\r\n+        }\r\n+\r\n+        public URL getUrl() {\r\n+            return url;\r\n+        }\r\n+\r\n+        @Override\r\n+        public boolean equals(Object obj) {\r\n+            if (obj == null) {\r\n+                return false;\r\n+            }\r\n+            if (!(obj instanceof ServiceInfo)) {\r\n+                return false;\r\n+            }\r\n+\r\n+            ServiceInfo serviceInfo = (ServiceInfo) obj;\r\n+            return this.getMatchKey().equals(serviceInfo.getMatchKey()) && this.getParams().equals(serviceInfo.getParams());\r\n+        }\r\n+\r\n+        @Override\r\n+        public int hashCode() {\r\n+            return Objects.hash(getMatchKey(), getParams());\r\n+        }\r\n+\r\n+        @Override\r\n+        public String toString() {\r\n+            return \"service{\" +\r\n+                    \"name='\" + name + \"',\" +\r\n+                    \"group='\" + group + \"',\" +\r\n+                    \"version='\" + version + \"',\" +\r\n+                    \"protocol='\" + protocol + \"',\" +\r\n+                    \"params=\" + params + \",\" +\r\n+                    \"consumerParams=\" + consumerParams +\r\n+                    \"}\";\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/MetadataParamsFilter.java", "source2": "org/apache/dubbo/metadata/MetadataParamsFilter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,37 +1,37 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-@SPI\n-public interface MetadataParamsFilter {\n-\n-   /**\n-    * params that need to be sent to metadata center\n-    *\n-    * @return arrays of keys\n-    */\n-   String[] serviceParamsIncluded();\n-\n-   /**\n-    * params that need to be sent to registry center\n-    *\n-    * @return arrays of keys\n-    */\n-   String[] instanceParamsIncluded();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+@SPI\r\n+public interface MetadataParamsFilter {\r\n+\r\n+   /**\r\n+    * params that need to be sent to metadata center\r\n+    *\r\n+    * @return arrays of keys\r\n+    */\r\n+   String[] serviceParamsIncluded();\r\n+\r\n+   /**\r\n+    * params that need to be sent to registry center\r\n+    *\r\n+    * @return arrays of keys\r\n+    */\r\n+   String[] instanceParamsIncluded();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/MetadataService.java", "source2": "org/apache/dubbo/metadata/MetadataService.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,273 +1,273 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata;\n-\n-import org.apache.dubbo.common.URL;\n-\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.SortedSet;\n-import java.util.TreeSet;\n-import java.util.stream.Collectors;\n-import java.util.stream.Stream;\n-import java.util.stream.StreamSupport;\n-\n-import static java.util.Collections.unmodifiableSortedSet;\n-import static java.util.stream.StreamSupport.stream;\n-import static org.apache.dubbo.common.URL.buildKey;\n-\n-/**\n- * A framework interface of Dubbo Metadata Service defines the contract of Dubbo Services registration and subscription\n- * between Dubbo service providers and its consumers. The implementation will be exported as a normal Dubbo service that\n- * the clients would subscribe, whose version comes from the {@link #version()} method and group gets from\n- * {@link #serviceName()}, that means, The different Dubbo service(application) will export the different\n- * {@link MetadataService} that persists all the exported and subscribed metadata, they are present by\n- * {@link #getExportedURLs()} and {@link #getSubscribedURLs()} respectively. What's more, {@link MetadataService}\n- * also providers the fine-grain methods for the precise queries.\n- *\n- * @see WritableMetadataService\n- * @since 2.7.5\n- */\n-public interface MetadataService {\n-\n-    //FIXME the value is default, it was used by testing temporarily\n-    static final String DEFAULT_EXTENSION = \"default\";\n-\n-    /**\n-     * The value of all service names\n-     */\n-    String ALL_SERVICE_NAMES = \"*\";\n-\n-    /**\n-     * The value of All service instances\n-     */\n-    String ALL_SERVICE_INTERFACES = \"*\";\n-\n-    /**\n-     * The service interface name of {@link MetadataService}\n-     */\n-    String SERVICE_INTERFACE_NAME = MetadataService.class.getName();\n-\n-    /**\n-     * The contract version of {@link MetadataService}, the future update must make sure compatible.\n-     */\n-    String VERSION = \"1.0.0\";\n-\n-    /**\n-     * Gets the current Dubbo Service name\n-     *\n-     * @return non-null\n-     */\n-    String serviceName();\n-\n-    /**\n-     * Gets the version of {@link MetadataService} that always equals {@link #VERSION}\n-     *\n-     * @return non-null\n-     * @see #VERSION\n-     */\n-    default String version() {\n-        return VERSION;\n-    }\n-\n-    /**\n-     * the list of String that presents all Dubbo subscribed {@link URL urls}\n-     *\n-     * @return the non-null read-only {@link SortedSet sorted set} of {@link URL#toFullString() strings} presenting the {@link URL URLs}\n-     * @see #toSortedStrings(Stream)\n-     * @see URL#toFullString()\n-     */\n-    default SortedSet<String> getSubscribedURLs() {\n-        throw new UnsupportedOperationException(\"This operation is not supported for consumer.\");\n-    }\n-\n-    /**\n-     * Get the {@link SortedSet sorted set} of String that presents all Dubbo exported {@link URL urls}\n-     *\n-     * @return the non-null read-only {@link SortedSet sorted set} of {@link URL#toFullString() strings} presenting the {@link URL URLs}\n-     * @see #toSortedStrings(Stream)\n-     * @see URL#toFullString()\n-     */\n-    default SortedSet<String> getExportedURLs() {\n-        return getExportedURLs(ALL_SERVICE_INTERFACES);\n-    }\n-\n-    /**\n-     * Get the {@link SortedSet sorted set} of String that presents the specified Dubbo exported {@link URL urls} by the <code>serviceInterface</code>\n-     *\n-     * @param serviceInterface The class name of Dubbo service interface\n-     * @return the non-null read-only {@link SortedSet sorted set} of {@link URL#toFullString() strings} presenting the {@link URL URLs}\n-     * @see #toSortedStrings(Stream)\n-     * @see URL#toFullString()\n-     */\n-    default SortedSet<String> getExportedURLs(String serviceInterface) {\n-        return getExportedURLs(serviceInterface, null);\n-    }\n-\n-    /**\n-     * Get the {@link SortedSet sorted set} of String that presents the specified Dubbo exported {@link URL urls} by the\n-     * <code>serviceInterface</code> and <code>group</code>\n-     *\n-     * @param serviceInterface The class name of Dubbo service interface\n-     * @param group            the Dubbo Service Group (optional)\n-     * @return the non-null read-only {@link SortedSet sorted set} of {@link URL#toFullString() strings} presenting the {@link URL URLs}\n-     * @see #toSortedStrings(Stream)\n-     * @see URL#toFullString()\n-     */\n-    default SortedSet<String> getExportedURLs(String serviceInterface, String group) {\n-        return getExportedURLs(serviceInterface, group, null);\n-    }\n-\n-    /**\n-     * Get the {@link SortedSet sorted set} of String that presents the specified Dubbo exported {@link URL urls} by the\n-     * <code>serviceInterface</code>, <code>group</code> and <code>version</code>\n-     *\n-     * @param serviceInterface The class name of Dubbo service interface\n-     * @param group            the Dubbo Service Group (optional)\n-     * @param version          the Dubbo Service Version (optional)\n-     * @return the non-null read-only {@link SortedSet sorted set} of {@link URL#toFullString() strings} presenting the {@link URL URLs}\n-     * @see #toSortedStrings(Stream)\n-     * @see URL#toFullString()\n-     */\n-    default SortedSet<String> getExportedURLs(String serviceInterface, String group, String version) {\n-        return getExportedURLs(serviceInterface, group, version, null);\n-    }\n-\n-    /**\n-     * Get the sorted set of String that presents the specified Dubbo exported {@link URL urls} by the\n-     * <code>serviceInterface</code>, <code>group</code>, <code>version</code> and <code>protocol</code>\n-     *\n-     * @param serviceInterface The class name of Dubbo service interface\n-     * @param group            the Dubbo Service Group (optional)\n-     * @param version          the Dubbo Service Version (optional)\n-     * @param protocol         the Dubbo Service Protocol (optional)\n-     * @return the non-null read-only {@link SortedSet sorted set} of {@link URL#toFullString() strings} presenting the {@link URL URLs}\n-     * @see #toSortedStrings(Stream)\n-     * @see URL#toFullString()\n-     */\n-    SortedSet<String> getExportedURLs(String serviceInterface, String group, String version, String protocol);\n-\n-    /**\n-     * Interface definition.\n-     *\n-     * @return\n-     */\n-    default String getServiceDefinition(String interfaceName, String version, String group) {\n-        return getServiceDefinition(buildKey(interfaceName, group, version));\n-    }\n-\n-    /**\n-     * Interface definition.\n-     *\n-     * @return\n-     */\n-    String getServiceDefinition(String serviceKey);\n-\n-    MetadataInfo getMetadataInfo(String revision);\n-\n-    Map<String, MetadataInfo> getMetadataInfos();\n-\n-    /**\n-     * Is the {@link URL} for the {@link MetadataService} or not?\n-     *\n-     * @param url {@link URL url}\n-     * @return\n-     */\n-    static boolean isMetadataServiceURL(URL url) {\n-        String serviceInterface = url.getServiceInterface();\n-        return SERVICE_INTERFACE_NAME.equals(serviceInterface);\n-    }\n-\n-    /**\n-     * Convert the multiple {@link URL urls} to a {@link List list} of {@link URL urls}\n-     *\n-     * @param urls the strings presents the {@link URL Dubbo URLs}\n-     * @return non-null\n-     */\n-    static List<URL> toURLs(Iterable<String> urls) {\n-        return stream(urls.spliterator(), false)\n-                .map(URL::valueOf)\n-                .collect(Collectors.toList());\n-    }\n-\n-    /**\n-     * Convert the specified {@link Iterable} of {@link URL URLs} to be the {@link URL#toFullString() strings} presenting\n-     * the {@link URL URLs}\n-     *\n-     * @param iterable {@link Iterable} of {@link URL}\n-     * @return the non-null read-only {@link SortedSet sorted set} of {@link URL#toFullString() strings} presenting\n-     * @see URL#toFullString()\n-     */\n-    static SortedSet<String> toSortedStrings(Iterable<URL> iterable) {\n-        return toSortedStrings(StreamSupport.stream(iterable.spliterator(), false));\n-    }\n-\n-    /**\n-     * Convert the specified {@link Stream} of {@link URL URLs} to be the {@link URL#toFullString() strings} presenting\n-     * the {@link URL URLs}\n-     *\n-     * @param stream {@link Stream} of {@link URL}\n-     * @return the non-null read-only {@link SortedSet sorted set} of {@link URL#toFullString() strings} presenting\n-     * @see URL#toFullString()\n-     */\n-    static SortedSet<String> toSortedStrings(Stream<URL> stream) {\n-        return unmodifiableSortedSet(stream.map(URL::toFullString).collect(TreeSet::new, Set::add, Set::addAll));\n-    }\n-\n-    /**\n-     * Export Metadata in Service Instance of Service Discovery\n-     * <p>\n-     * Used for consumer to get Service Instance Metadata\n-     * if Registry is unsupported with publishing metadata\n-     *\n-     * @param metadata {@link Map} of provider Service Instance Metadata\n-     * @since 3.0\n-     */\n-    default void exportServiceDiscoveryMetadata(String metadata) {\n-        throw new UnsupportedOperationException(\"This operation is not supported for consumer.\");\n-    }\n-\n-    /**\n-     * Get all Metadata listener from local\n-     * <p>\n-     * Used for consumer to get Service Instance Metadata\n-     * if Registry is unsupported with publishing metadata\n-     *\n-     * @return {@link Map} of {@link MetadataChangeListener}\n-     * @since 3.0\n-     */\n-    default Map<String, MetadataChangeListener> getMetadataChangeListenerMap() {\n-        throw new UnsupportedOperationException(\"This operation is not supported for consumer.\");\n-    }\n-\n-    /**\n-     * 1. Fetch Metadata in Service Instance of Service Discovery\n-     * 2. Add a metadata change listener\n-     * <p>\n-     * Used for consumer to get Service Instance Metadata\n-     * if Registry is unsupported with publishing metadata\n-     *\n-     * @param consumerId consumerId\n-     * @param listener   {@link MetadataChangeListener} used to notify event\n-     * @return {@link Map} of provider Service Instance Metadata\n-     * @since 3.0\n-     */\n-    default String getAndListenServiceDiscoveryMetadata(String consumerId, MetadataChangeListener listener) {\n-        throw new UnsupportedOperationException(\"This operation is not supported for consumer.\");\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.SortedSet;\r\n+import java.util.TreeSet;\r\n+import java.util.stream.Collectors;\r\n+import java.util.stream.Stream;\r\n+import java.util.stream.StreamSupport;\r\n+\r\n+import static java.util.Collections.unmodifiableSortedSet;\r\n+import static java.util.stream.StreamSupport.stream;\r\n+import static org.apache.dubbo.common.URL.buildKey;\r\n+\r\n+/**\r\n+ * A framework interface of Dubbo Metadata Service defines the contract of Dubbo Services registration and subscription\r\n+ * between Dubbo service providers and its consumers. The implementation will be exported as a normal Dubbo service that\r\n+ * the clients would subscribe, whose version comes from the {@link #version()} method and group gets from\r\n+ * {@link #serviceName()}, that means, The different Dubbo service(application) will export the different\r\n+ * {@link MetadataService} that persists all the exported and subscribed metadata, they are present by\r\n+ * {@link #getExportedURLs()} and {@link #getSubscribedURLs()} respectively. What's more, {@link MetadataService}\r\n+ * also providers the fine-grain methods for the precise queries.\r\n+ *\r\n+ * @see WritableMetadataService\r\n+ * @since 2.7.5\r\n+ */\r\n+public interface MetadataService {\r\n+\r\n+    //FIXME the value is default, it was used by testing temporarily\r\n+    static final String DEFAULT_EXTENSION = \"default\";\r\n+\r\n+    /**\r\n+     * The value of all service names\r\n+     */\r\n+    String ALL_SERVICE_NAMES = \"*\";\r\n+\r\n+    /**\r\n+     * The value of All service instances\r\n+     */\r\n+    String ALL_SERVICE_INTERFACES = \"*\";\r\n+\r\n+    /**\r\n+     * The service interface name of {@link MetadataService}\r\n+     */\r\n+    String SERVICE_INTERFACE_NAME = MetadataService.class.getName();\r\n+\r\n+    /**\r\n+     * The contract version of {@link MetadataService}, the future update must make sure compatible.\r\n+     */\r\n+    String VERSION = \"1.0.0\";\r\n+\r\n+    /**\r\n+     * Gets the current Dubbo Service name\r\n+     *\r\n+     * @return non-null\r\n+     */\r\n+    String serviceName();\r\n+\r\n+    /**\r\n+     * Gets the version of {@link MetadataService} that always equals {@link #VERSION}\r\n+     *\r\n+     * @return non-null\r\n+     * @see #VERSION\r\n+     */\r\n+    default String version() {\r\n+        return VERSION;\r\n+    }\r\n+\r\n+    /**\r\n+     * the list of String that presents all Dubbo subscribed {@link URL urls}\r\n+     *\r\n+     * @return the non-null read-only {@link SortedSet sorted set} of {@link URL#toFullString() strings} presenting the {@link URL URLs}\r\n+     * @see #toSortedStrings(Stream)\r\n+     * @see URL#toFullString()\r\n+     */\r\n+    default SortedSet<String> getSubscribedURLs() {\r\n+        throw new UnsupportedOperationException(\"This operation is not supported for consumer.\");\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the {@link SortedSet sorted set} of String that presents all Dubbo exported {@link URL urls}\r\n+     *\r\n+     * @return the non-null read-only {@link SortedSet sorted set} of {@link URL#toFullString() strings} presenting the {@link URL URLs}\r\n+     * @see #toSortedStrings(Stream)\r\n+     * @see URL#toFullString()\r\n+     */\r\n+    default SortedSet<String> getExportedURLs() {\r\n+        return getExportedURLs(ALL_SERVICE_INTERFACES);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the {@link SortedSet sorted set} of String that presents the specified Dubbo exported {@link URL urls} by the <code>serviceInterface</code>\r\n+     *\r\n+     * @param serviceInterface The class name of Dubbo service interface\r\n+     * @return the non-null read-only {@link SortedSet sorted set} of {@link URL#toFullString() strings} presenting the {@link URL URLs}\r\n+     * @see #toSortedStrings(Stream)\r\n+     * @see URL#toFullString()\r\n+     */\r\n+    default SortedSet<String> getExportedURLs(String serviceInterface) {\r\n+        return getExportedURLs(serviceInterface, null);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the {@link SortedSet sorted set} of String that presents the specified Dubbo exported {@link URL urls} by the\r\n+     * <code>serviceInterface</code> and <code>group</code>\r\n+     *\r\n+     * @param serviceInterface The class name of Dubbo service interface\r\n+     * @param group            the Dubbo Service Group (optional)\r\n+     * @return the non-null read-only {@link SortedSet sorted set} of {@link URL#toFullString() strings} presenting the {@link URL URLs}\r\n+     * @see #toSortedStrings(Stream)\r\n+     * @see URL#toFullString()\r\n+     */\r\n+    default SortedSet<String> getExportedURLs(String serviceInterface, String group) {\r\n+        return getExportedURLs(serviceInterface, group, null);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the {@link SortedSet sorted set} of String that presents the specified Dubbo exported {@link URL urls} by the\r\n+     * <code>serviceInterface</code>, <code>group</code> and <code>version</code>\r\n+     *\r\n+     * @param serviceInterface The class name of Dubbo service interface\r\n+     * @param group            the Dubbo Service Group (optional)\r\n+     * @param version          the Dubbo Service Version (optional)\r\n+     * @return the non-null read-only {@link SortedSet sorted set} of {@link URL#toFullString() strings} presenting the {@link URL URLs}\r\n+     * @see #toSortedStrings(Stream)\r\n+     * @see URL#toFullString()\r\n+     */\r\n+    default SortedSet<String> getExportedURLs(String serviceInterface, String group, String version) {\r\n+        return getExportedURLs(serviceInterface, group, version, null);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the sorted set of String that presents the specified Dubbo exported {@link URL urls} by the\r\n+     * <code>serviceInterface</code>, <code>group</code>, <code>version</code> and <code>protocol</code>\r\n+     *\r\n+     * @param serviceInterface The class name of Dubbo service interface\r\n+     * @param group            the Dubbo Service Group (optional)\r\n+     * @param version          the Dubbo Service Version (optional)\r\n+     * @param protocol         the Dubbo Service Protocol (optional)\r\n+     * @return the non-null read-only {@link SortedSet sorted set} of {@link URL#toFullString() strings} presenting the {@link URL URLs}\r\n+     * @see #toSortedStrings(Stream)\r\n+     * @see URL#toFullString()\r\n+     */\r\n+    SortedSet<String> getExportedURLs(String serviceInterface, String group, String version, String protocol);\r\n+\r\n+    /**\r\n+     * Interface definition.\r\n+     *\r\n+     * @return\r\n+     */\r\n+    default String getServiceDefinition(String interfaceName, String version, String group) {\r\n+        return getServiceDefinition(buildKey(interfaceName, group, version));\r\n+    }\r\n+\r\n+    /**\r\n+     * Interface definition.\r\n+     *\r\n+     * @return\r\n+     */\r\n+    String getServiceDefinition(String serviceKey);\r\n+\r\n+    MetadataInfo getMetadataInfo(String revision);\r\n+\r\n+    Map<String, MetadataInfo> getMetadataInfos();\r\n+\r\n+    /**\r\n+     * Is the {@link URL} for the {@link MetadataService} or not?\r\n+     *\r\n+     * @param url {@link URL url}\r\n+     * @return\r\n+     */\r\n+    static boolean isMetadataServiceURL(URL url) {\r\n+        String serviceInterface = url.getServiceInterface();\r\n+        return SERVICE_INTERFACE_NAME.equals(serviceInterface);\r\n+    }\r\n+\r\n+    /**\r\n+     * Convert the multiple {@link URL urls} to a {@link List list} of {@link URL urls}\r\n+     *\r\n+     * @param urls the strings presents the {@link URL Dubbo URLs}\r\n+     * @return non-null\r\n+     */\r\n+    static List<URL> toURLs(Iterable<String> urls) {\r\n+        return stream(urls.spliterator(), false)\r\n+                .map(URL::valueOf)\r\n+                .collect(Collectors.toList());\r\n+    }\r\n+\r\n+    /**\r\n+     * Convert the specified {@link Iterable} of {@link URL URLs} to be the {@link URL#toFullString() strings} presenting\r\n+     * the {@link URL URLs}\r\n+     *\r\n+     * @param iterable {@link Iterable} of {@link URL}\r\n+     * @return the non-null read-only {@link SortedSet sorted set} of {@link URL#toFullString() strings} presenting\r\n+     * @see URL#toFullString()\r\n+     */\r\n+    static SortedSet<String> toSortedStrings(Iterable<URL> iterable) {\r\n+        return toSortedStrings(StreamSupport.stream(iterable.spliterator(), false));\r\n+    }\r\n+\r\n+    /**\r\n+     * Convert the specified {@link Stream} of {@link URL URLs} to be the {@link URL#toFullString() strings} presenting\r\n+     * the {@link URL URLs}\r\n+     *\r\n+     * @param stream {@link Stream} of {@link URL}\r\n+     * @return the non-null read-only {@link SortedSet sorted set} of {@link URL#toFullString() strings} presenting\r\n+     * @see URL#toFullString()\r\n+     */\r\n+    static SortedSet<String> toSortedStrings(Stream<URL> stream) {\r\n+        return unmodifiableSortedSet(stream.map(URL::toFullString).collect(TreeSet::new, Set::add, Set::addAll));\r\n+    }\r\n+\r\n+    /**\r\n+     * Export Metadata in Service Instance of Service Discovery\r\n+     * <p>\r\n+     * Used for consumer to get Service Instance Metadata\r\n+     * if Registry is unsupported with publishing metadata\r\n+     *\r\n+     * @param metadata {@link Map} of provider Service Instance Metadata\r\n+     * @since 3.0\r\n+     */\r\n+    default void exportServiceDiscoveryMetadata(String metadata) {\r\n+        throw new UnsupportedOperationException(\"This operation is not supported for consumer.\");\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all Metadata listener from local\r\n+     * <p>\r\n+     * Used for consumer to get Service Instance Metadata\r\n+     * if Registry is unsupported with publishing metadata\r\n+     *\r\n+     * @return {@link Map} of {@link MetadataChangeListener}\r\n+     * @since 3.0\r\n+     */\r\n+    default Map<String, MetadataChangeListener> getMetadataChangeListenerMap() {\r\n+        throw new UnsupportedOperationException(\"This operation is not supported for consumer.\");\r\n+    }\r\n+\r\n+    /**\r\n+     * 1. Fetch Metadata in Service Instance of Service Discovery\r\n+     * 2. Add a metadata change listener\r\n+     * <p>\r\n+     * Used for consumer to get Service Instance Metadata\r\n+     * if Registry is unsupported with publishing metadata\r\n+     *\r\n+     * @param consumerId consumerId\r\n+     * @param listener   {@link MetadataChangeListener} used to notify event\r\n+     * @return {@link Map} of provider Service Instance Metadata\r\n+     * @since 3.0\r\n+     */\r\n+    default String getAndListenServiceDiscoveryMetadata(String consumerId, MetadataChangeListener listener) {\r\n+        throw new UnsupportedOperationException(\"This operation is not supported for consumer.\");\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/MetadataServiceExporter.java", "source2": "org/apache/dubbo/metadata/MetadataServiceExporter.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,100 +1,100 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.common.lang.Prioritized;\n-\n-import java.util.List;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;\n-import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\n-\n-/**\n- * The exporter of {@link MetadataService}\n- *\n- * @see MetadataService\n- * @see #export()\n- * @see #unexport()\n- * @since 2.7.5\n- */\n-@SPI(DEFAULT_METADATA_STORAGE_TYPE)\n-public interface MetadataServiceExporter extends Prioritized {\n-\n-    /**\n-     * Exports the {@link MetadataService} as a Dubbo service\n-     *\n-     * @return {@link MetadataServiceExporter itself}\n-     */\n-    MetadataServiceExporter export();\n-\n-    /**\n-     * Unexports the {@link MetadataService}\n-     *\n-     * @return {@link MetadataServiceExporter itself}\n-     */\n-    MetadataServiceExporter unexport();\n-\n-    /**\n-     * Get the {@link URL URLs} that were exported\n-     *\n-     * @return non-null\n-     */\n-    List<URL> getExportedURLs();\n-\n-    /**\n-     * {@link MetadataService} is export or not\n-     *\n-     * @return if {@link #export()} was executed, return <code>true</code>, or <code>false</code>\n-     */\n-    boolean isExported();\n-\n-    /**\n-     * Does current implementation support the specified metadata type?\n-     *\n-     * @param metadataType the specified metadata type\n-     * @return If supports, return <code>true</code>, or <code>false</code>\n-     * @since 2.7.8\n-     */\n-    default boolean supports(String metadataType) {\n-        return true;\n-    }\n-\n-    /**\n-     * Get the extension of {@link MetadataServiceExporter} by the type.\n-     * If not found, return the default implementation\n-     *\n-     * @param metadataType the metadata type\n-     * @return non-null\n-     * @since 2.7.8\n-     */\n-    static MetadataServiceExporter getExtension(String metadataType) {\n-        return getExtensionLoader(MetadataServiceExporter.class).getOrDefaultExtension(metadataType);\n-    }\n-\n-    /**\n-     * Get the default extension of {@link MetadataServiceExporter}\n-     *\n-     * @return non-null\n-     * @since 2.7.8\n-     */\n-    static MetadataServiceExporter getDefaultExtension() {\n-        return getExtension(DEFAULT_METADATA_STORAGE_TYPE);\n-    }\n-}\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.common.lang.Prioritized;\r\n+\r\n+import java.util.List;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;\r\n+import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\r\n+\r\n+/**\r\n+ * The exporter of {@link MetadataService}\r\n+ *\r\n+ * @see MetadataService\r\n+ * @see #export()\r\n+ * @see #unexport()\r\n+ * @since 2.7.5\r\n+ */\r\n+@SPI(DEFAULT_METADATA_STORAGE_TYPE)\r\n+public interface MetadataServiceExporter extends Prioritized {\r\n+\r\n+    /**\r\n+     * Exports the {@link MetadataService} as a Dubbo service\r\n+     *\r\n+     * @return {@link MetadataServiceExporter itself}\r\n+     */\r\n+    MetadataServiceExporter export();\r\n+\r\n+    /**\r\n+     * Unexports the {@link MetadataService}\r\n+     *\r\n+     * @return {@link MetadataServiceExporter itself}\r\n+     */\r\n+    MetadataServiceExporter unexport();\r\n+\r\n+    /**\r\n+     * Get the {@link URL URLs} that were exported\r\n+     *\r\n+     * @return non-null\r\n+     */\r\n+    List<URL> getExportedURLs();\r\n+\r\n+    /**\r\n+     * {@link MetadataService} is export or not\r\n+     *\r\n+     * @return if {@link #export()} was executed, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    boolean isExported();\r\n+\r\n+    /**\r\n+     * Does current implementation support the specified metadata type?\r\n+     *\r\n+     * @param metadataType the specified metadata type\r\n+     * @return If supports, return <code>true</code>, or <code>false</code>\r\n+     * @since 2.7.8\r\n+     */\r\n+    default boolean supports(String metadataType) {\r\n+        return true;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the extension of {@link MetadataServiceExporter} by the type.\r\n+     * If not found, return the default implementation\r\n+     *\r\n+     * @param metadataType the metadata type\r\n+     * @return non-null\r\n+     * @since 2.7.8\r\n+     */\r\n+    static MetadataServiceExporter getExtension(String metadataType) {\r\n+        return getExtensionLoader(MetadataServiceExporter.class).getOrDefaultExtension(metadataType);\r\n+    }\r\n+\r\n+    /**\r\n+     * Get the default extension of {@link MetadataServiceExporter}\r\n+     *\r\n+     * @return non-null\r\n+     * @since 2.7.8\r\n+     */\r\n+    static MetadataServiceExporter getDefaultExtension() {\r\n+        return getExtension(DEFAULT_METADATA_STORAGE_TYPE);\r\n+    }\r\n+}\r\n+\r\n"}, {"source1": "org/apache/dubbo/metadata/MetadataServiceType.java", "source2": "org/apache/dubbo/metadata/MetadataServiceType.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,72 +1,72 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.COMPOSITE_METADATA_STORAGE_TYPE;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;\n-import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE;\n-\n-/**\n- * The type enumerations of {@link MetadataService}\n- *\n- * @see MetadataService\n- * @since 2.7.8\n- */\n-public enum MetadataServiceType {\n-\n-    /**\n-     * The default type of {@link MetadataService}\n-     */\n-    DEFAULT(DEFAULT_METADATA_STORAGE_TYPE),\n-\n-    /**\n-     * The remote type of {@link MetadataService}\n-     */\n-    REMOTE(REMOTE_METADATA_STORAGE_TYPE),\n-\n-    /**\n-     * The composite type of {@link MetadataService}\n-     */\n-    COMPOSITE(COMPOSITE_METADATA_STORAGE_TYPE);\n-\n-    /**\n-     * The {@link String} value of type\n-     */\n-    private final String value;\n-\n-    MetadataServiceType(String value) {\n-        this.value = value;\n-    }\n-\n-    public String getValue() {\n-        return value;\n-    }\n-\n-    public static MetadataServiceType getOrDefault(String value) {\n-        MetadataServiceType targetType = null;\n-        for (MetadataServiceType type : values()) {\n-            if (type.getValue().equals(value)) {\n-                targetType = type;\n-                break;\n-            }\n-        }\n-        if (targetType == null) {\n-            targetType = DEFAULT;\n-        }\n-        return targetType;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.COMPOSITE_METADATA_STORAGE_TYPE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_METADATA_STORAGE_TYPE;\r\n+\r\n+/**\r\n+ * The type enumerations of {@link MetadataService}\r\n+ *\r\n+ * @see MetadataService\r\n+ * @since 2.7.8\r\n+ */\r\n+public enum MetadataServiceType {\r\n+\r\n+    /**\r\n+     * The default type of {@link MetadataService}\r\n+     */\r\n+    DEFAULT(DEFAULT_METADATA_STORAGE_TYPE),\r\n+\r\n+    /**\r\n+     * The remote type of {@link MetadataService}\r\n+     */\r\n+    REMOTE(REMOTE_METADATA_STORAGE_TYPE),\r\n+\r\n+    /**\r\n+     * The composite type of {@link MetadataService}\r\n+     */\r\n+    COMPOSITE(COMPOSITE_METADATA_STORAGE_TYPE);\r\n+\r\n+    /**\r\n+     * The {@link String} value of type\r\n+     */\r\n+    private final String value;\r\n+\r\n+    MetadataServiceType(String value) {\r\n+        this.value = value;\r\n+    }\r\n+\r\n+    public String getValue() {\r\n+        return value;\r\n+    }\r\n+\r\n+    public static MetadataServiceType getOrDefault(String value) {\r\n+        MetadataServiceType targetType = null;\r\n+        for (MetadataServiceType type : values()) {\r\n+            if (type.getValue().equals(value)) {\r\n+                targetType = type;\r\n+                break;\r\n+            }\r\n+        }\r\n+        if (targetType == null) {\r\n+            targetType = DEFAULT;\r\n+        }\r\n+        return targetType;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/RevisionResolver.java", "source2": "org/apache/dubbo/metadata/RevisionResolver.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,59 +1,59 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata;\n-\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-\n-import java.security.MessageDigest;\n-import java.security.NoSuchAlgorithmException;\n-\n-import static java.nio.charset.StandardCharsets.UTF_8;\n-\n-public class RevisionResolver {\n-    private static final Logger logger = LoggerFactory.getLogger(RevisionResolver.class);\n-    private static char hexDigits[] = {\n-            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'\n-    };\n-\n-    private static MessageDigest mdInst;\n-\n-    static {\n-        try {\n-            mdInst = MessageDigest.getInstance(\"MD5\");\n-        } catch (NoSuchAlgorithmException e) {\n-            logger.error(\"Failed to calculate metadata revision\", e);\n-        }\n-    }\n-\n-    public static String calRevision(String metadata) {\n-        mdInst.update(metadata.getBytes(UTF_8));\n-        byte[] md5 = mdInst.digest();\n-\n-        int j = md5.length;\n-        char str[] = new char[j * 2];\n-        int k = 0;\n-        for (int i = 0; i < j; i++) {\n-            byte byte0 = md5[i];\n-            str[k++] = hexDigits[byte0 >>> 4 & 0xf];\n-            str[k++] = hexDigits[byte0 & 0xf];\n-        }\n-        return new String(str);\n-    }\n-\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata;\r\n+\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+\r\n+import java.security.MessageDigest;\r\n+import java.security.NoSuchAlgorithmException;\r\n+\r\n+import static java.nio.charset.StandardCharsets.UTF_8;\r\n+\r\n+public class RevisionResolver {\r\n+    private static final Logger logger = LoggerFactory.getLogger(RevisionResolver.class);\r\n+    private static char hexDigits[] = {\r\n+            '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'\r\n+    };\r\n+\r\n+    private static MessageDigest mdInst;\r\n+\r\n+    static {\r\n+        try {\r\n+            mdInst = MessageDigest.getInstance(\"MD5\");\r\n+        } catch (NoSuchAlgorithmException e) {\r\n+            logger.error(\"Failed to calculate metadata revision\", e);\r\n+        }\r\n+    }\r\n+\r\n+    public static String calRevision(String metadata) {\r\n+        mdInst.update(metadata.getBytes(UTF_8));\r\n+        byte[] md5 = mdInst.digest();\r\n+\r\n+        int j = md5.length;\r\n+        char str[] = new char[j * 2];\r\n+        int k = 0;\r\n+        for (int i = 0; i < j; i++) {\r\n+            byte byte0 = md5[i];\r\n+            str[k++] = hexDigits[byte0 >>> 4 & 0xf];\r\n+            str[k++] = hexDigits[byte0 & 0xf];\r\n+        }\r\n+        return new String(str);\r\n+    }\r\n+\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/ServiceNameMapping.java", "source2": "org/apache/dubbo/metadata/ServiceNameMapping.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,72 +1,72 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-import java.util.Set;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.CONFIG_MAPPING_TYPE;\n-import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\n-import static org.apache.dubbo.common.utils.StringUtils.SLASH;\n-import static org.apache.dubbo.metadata.DynamicConfigurationServiceNameMapping.DEFAULT_MAPPING_GROUP;\n-\n-/**\n- * The interface for Dubbo service name Mapping\n- *\n- * @since 2.7.5\n- */\n-@SPI(\"config\")\n-public interface ServiceNameMapping {\n-\n-    /**\n-     * Map the specified Dubbo service interface, group, version and protocol to current Dubbo service name\n-     */\n-    void map(URL url);\n-\n-    /**\n-     * Get the service names from the specified Dubbo service interface, group, version and protocol\n-     *\n-     * @return\n-     */\n-    Set<String> getAndListen(URL url, MappingListener mappingListener);\n-\n-    /**\n-     * Get the default extension of {@link ServiceNameMapping}\n-     *\n-     * @return non-null {@link ServiceNameMapping}\n-     * @see DynamicConfigurationServiceNameMapping\n-     */\n-    static ServiceNameMapping getDefaultExtension() {\n-        return getExtensionLoader(ServiceNameMapping.class).getDefaultExtension();\n-    }\n-\n-    static ServiceNameMapping getExtension(String name) {\n-        return getExtensionLoader(ServiceNameMapping.class).getExtension(name == null ? CONFIG_MAPPING_TYPE : name);\n-    }\n-\n-    static String buildGroup(String serviceInterface, String group, String version, String protocol) {\n-        //        the issue : https://github.com/apache/dubbo/issues/4671\n-        //        StringBuilder groupBuilder = new StringBuilder(serviceInterface)\n-        //                .append(KEY_SEPARATOR).append(defaultString(group))\n-        //                .append(KEY_SEPARATOR).append(defaultString(version))\n-        //                .append(KEY_SEPARATOR).append(defaultString(protocol));\n-        //        return groupBuilder.toString();\n-        return DEFAULT_MAPPING_GROUP + SLASH + serviceInterface;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+import java.util.Set;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONFIG_MAPPING_TYPE;\r\n+import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\r\n+import static org.apache.dubbo.common.utils.StringUtils.SLASH;\r\n+import static org.apache.dubbo.metadata.DynamicConfigurationServiceNameMapping.DEFAULT_MAPPING_GROUP;\r\n+\r\n+/**\r\n+ * The interface for Dubbo service name Mapping\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+@SPI(\"config\")\r\n+public interface ServiceNameMapping {\r\n+\r\n+    /**\r\n+     * Map the specified Dubbo service interface, group, version and protocol to current Dubbo service name\r\n+     */\r\n+    void map(URL url);\r\n+\r\n+    /**\r\n+     * Get the service names from the specified Dubbo service interface, group, version and protocol\r\n+     *\r\n+     * @return\r\n+     */\r\n+    Set<String> getAndListen(URL url, MappingListener mappingListener);\r\n+\r\n+    /**\r\n+     * Get the default extension of {@link ServiceNameMapping}\r\n+     *\r\n+     * @return non-null {@link ServiceNameMapping}\r\n+     * @see DynamicConfigurationServiceNameMapping\r\n+     */\r\n+    static ServiceNameMapping getDefaultExtension() {\r\n+        return getExtensionLoader(ServiceNameMapping.class).getDefaultExtension();\r\n+    }\r\n+\r\n+    static ServiceNameMapping getExtension(String name) {\r\n+        return getExtensionLoader(ServiceNameMapping.class).getExtension(name == null ? CONFIG_MAPPING_TYPE : name);\r\n+    }\r\n+\r\n+    static String buildGroup(String serviceInterface, String group, String version, String protocol) {\r\n+        //        the issue : https://github.com/apache/dubbo/issues/4671\r\n+        //        StringBuilder groupBuilder = new StringBuilder(serviceInterface)\r\n+        //                .append(KEY_SEPARATOR).append(defaultString(group))\r\n+        //                .append(KEY_SEPARATOR).append(defaultString(version))\r\n+        //                .append(KEY_SEPARATOR).append(defaultString(protocol));\r\n+        //        return groupBuilder.toString();\r\n+        return DEFAULT_MAPPING_GROUP + SLASH + serviceInterface;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/WritableMetadataService.java", "source2": "org/apache/dubbo/metadata/WritableMetadataService.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,87 +1,87 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-\n-import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\n-\n-/**\n- * Local {@link MetadataService} that extends {@link MetadataService} and provides the modification, which is used for\n- * Dubbo's consumers and providers.\n- *\n- * @since 2.7.5\n- */\n-@SPI(\"default\")\n-public interface WritableMetadataService extends MetadataService {\n-    /**\n-     * Gets the current Dubbo Service name\n-     *\n-     * @return non-null\n-     */\n-    @Override\n-    default String serviceName() {\n-        return ApplicationModel.getApplication();\n-    }\n-\n-    /**\n-     * Exports a {@link URL}\n-     *\n-     * @param url a {@link URL}\n-     * @return If success , return <code>true</code>\n-     */\n-    boolean exportURL(URL url);\n-\n-    /**\n-     * Unexports a {@link URL}\n-     *\n-     * @param url a {@link URL}\n-     * @return If success , return <code>true</code>\n-     */\n-    boolean unexportURL(URL url);\n-\n-    /**\n-     * Subscribes a {@link URL}\n-     *\n-     * @param url a {@link URL}\n-     * @return If success , return <code>true</code>\n-     */\n-    boolean subscribeURL(URL url);\n-\n-    /**\n-     * Unsubscribes a {@link URL}\n-     *\n-     * @param url a {@link URL}\n-     * @return If success , return <code>true</code>\n-     */\n-    boolean unsubscribeURL(URL url);\n-\n-    void publishServiceDefinition(URL providerUrl);\n-\n-\n-    /**\n-     * Get {@link ExtensionLoader#getDefaultExtension() the defautl extension} of {@link WritableMetadataService}\n-     *\n-     * @return non-null\n-     */\n-    static WritableMetadataService getDefaultExtension() {\n-        return getExtensionLoader(WritableMetadataService.class).getDefaultExtension();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+\r\n+import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\r\n+\r\n+/**\r\n+ * Local {@link MetadataService} that extends {@link MetadataService} and provides the modification, which is used for\r\n+ * Dubbo's consumers and providers.\r\n+ *\r\n+ * @since 2.7.5\r\n+ */\r\n+@SPI(\"default\")\r\n+public interface WritableMetadataService extends MetadataService {\r\n+    /**\r\n+     * Gets the current Dubbo Service name\r\n+     *\r\n+     * @return non-null\r\n+     */\r\n+    @Override\r\n+    default String serviceName() {\r\n+        return ApplicationModel.getApplication();\r\n+    }\r\n+\r\n+    /**\r\n+     * Exports a {@link URL}\r\n+     *\r\n+     * @param url a {@link URL}\r\n+     * @return If success , return <code>true</code>\r\n+     */\r\n+    boolean exportURL(URL url);\r\n+\r\n+    /**\r\n+     * Unexports a {@link URL}\r\n+     *\r\n+     * @param url a {@link URL}\r\n+     * @return If success , return <code>true</code>\r\n+     */\r\n+    boolean unexportURL(URL url);\r\n+\r\n+    /**\r\n+     * Subscribes a {@link URL}\r\n+     *\r\n+     * @param url a {@link URL}\r\n+     * @return If success , return <code>true</code>\r\n+     */\r\n+    boolean subscribeURL(URL url);\r\n+\r\n+    /**\r\n+     * Unsubscribes a {@link URL}\r\n+     *\r\n+     * @param url a {@link URL}\r\n+     * @return If success , return <code>true</code>\r\n+     */\r\n+    boolean unsubscribeURL(URL url);\r\n+\r\n+    void publishServiceDefinition(URL providerUrl);\r\n+\r\n+\r\n+    /**\r\n+     * Get {@link ExtensionLoader#getDefaultExtension() the defautl extension} of {@link WritableMetadataService}\r\n+     *\r\n+     * @return non-null\r\n+     */\r\n+    static WritableMetadataService getDefaultExtension() {\r\n+        return getExtensionLoader(WritableMetadataService.class).getDefaultExtension();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/definition/MethodDefinitionBuilder.java", "source2": "org/apache/dubbo/metadata/definition/MethodDefinitionBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,78 +1,78 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.definition;\n-\n-import org.apache.dubbo.metadata.definition.model.MethodDefinition;\n-import org.apache.dubbo.metadata.definition.model.TypeDefinition;\n-\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Type;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * {@link MethodDefinition} Builder based on Java Reflection\n- *\n- * @since 2.7.6\n- */\n-public class MethodDefinitionBuilder {\n-\n-    private final TypeDefinitionBuilder builder;\n-\n-    public MethodDefinitionBuilder(TypeDefinitionBuilder builder) {\n-        this.builder = builder;\n-    }\n-\n-    public MethodDefinitionBuilder() {\n-        this.builder = new TypeDefinitionBuilder();\n-    }\n-\n-    /**\n-     * Build the instance of {@link MethodDefinition}\n-     *\n-     * @param method {@link Method}\n-     * @return non-null\n-     */\n-    public MethodDefinition build(Method method) {\n-\n-        MethodDefinition md = new MethodDefinition();\n-        md.setName(method.getName());\n-\n-        // Process the parameters\n-        Class<?>[] paramTypes = method.getParameterTypes();\n-        Type[] genericParamTypes = method.getGenericParameterTypes();\n-\n-        int paramSize = paramTypes.length;\n-        String[] parameterTypes = new String[paramSize];\n-        List<TypeDefinition> parameters = new ArrayList<>(paramSize);\n-        for (int i = 0; i < paramSize; i++) {\n-            TypeDefinition parameter = builder.build(genericParamTypes[i], paramTypes[i]);\n-            parameterTypes[i] = parameter.getType();\n-            parameters.add(parameter);\n-        }\n-\n-        md.setParameterTypes(parameterTypes);\n-        md.setParameters(parameters);\n-\n-        // Process return type.\n-        TypeDefinition td = builder.build(method.getGenericReturnType(), method.getReturnType());\n-        md.setReturnType(td.getType());\n-\n-        return md;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.definition;\r\n+\r\n+import org.apache.dubbo.metadata.definition.model.MethodDefinition;\r\n+import org.apache.dubbo.metadata.definition.model.TypeDefinition;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Type;\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * {@link MethodDefinition} Builder based on Java Reflection\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class MethodDefinitionBuilder {\r\n+\r\n+    private final TypeDefinitionBuilder builder;\r\n+\r\n+    public MethodDefinitionBuilder(TypeDefinitionBuilder builder) {\r\n+        this.builder = builder;\r\n+    }\r\n+\r\n+    public MethodDefinitionBuilder() {\r\n+        this.builder = new TypeDefinitionBuilder();\r\n+    }\r\n+\r\n+    /**\r\n+     * Build the instance of {@link MethodDefinition}\r\n+     *\r\n+     * @param method {@link Method}\r\n+     * @return non-null\r\n+     */\r\n+    public MethodDefinition build(Method method) {\r\n+\r\n+        MethodDefinition md = new MethodDefinition();\r\n+        md.setName(method.getName());\r\n+\r\n+        // Process the parameters\r\n+        Class<?>[] paramTypes = method.getParameterTypes();\r\n+        Type[] genericParamTypes = method.getGenericParameterTypes();\r\n+\r\n+        int paramSize = paramTypes.length;\r\n+        String[] parameterTypes = new String[paramSize];\r\n+        List<TypeDefinition> parameters = new ArrayList<>(paramSize);\r\n+        for (int i = 0; i < paramSize; i++) {\r\n+            TypeDefinition parameter = builder.build(genericParamTypes[i], paramTypes[i]);\r\n+            parameterTypes[i] = parameter.getType();\r\n+            parameters.add(parameter);\r\n+        }\r\n+\r\n+        md.setParameterTypes(parameterTypes);\r\n+        md.setParameters(parameters);\r\n+\r\n+        // Process return type.\r\n+        TypeDefinition td = builder.build(method.getGenericReturnType(), method.getReturnType());\r\n+        md.setReturnType(td.getType());\r\n+\r\n+        return md;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/definition/ServiceDefinitionBuilder.java", "source2": "org/apache/dubbo/metadata/definition/ServiceDefinitionBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,107 +1,107 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.definition;\n-\n-import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;\n-import org.apache.dubbo.metadata.definition.model.MethodDefinition;\n-import org.apache.dubbo.metadata.definition.model.ServiceDefinition;\n-import org.apache.dubbo.metadata.definition.model.TypeDefinition;\n-import org.apache.dubbo.metadata.definition.util.ClassUtils;\n-\n-import com.google.gson.Gson;\n-\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Type;\n-import java.util.List;\n-import java.util.Map;\n-\n-/**\n- * 2015/1/27.\n- */\n-public final class ServiceDefinitionBuilder {\n-\n-    /**\n-     * Describe a Java interface in {@link ServiceDefinition}.\n-     *\n-     * @return Service description\n-     */\n-    public static ServiceDefinition build(final Class<?> interfaceClass) {\n-        ServiceDefinition sd = new ServiceDefinition();\n-        build(sd, interfaceClass);\n-        return sd;\n-    }\n-\n-    public static FullServiceDefinition buildFullDefinition(final Class<?> interfaceClass) {\n-        FullServiceDefinition sd = new FullServiceDefinition();\n-        build(sd, interfaceClass);\n-        return sd;\n-    }\n-\n-    public static FullServiceDefinition buildFullDefinition(final Class<?> interfaceClass, Map<String, String> params) {\n-        FullServiceDefinition sd = new FullServiceDefinition();\n-        build(sd, interfaceClass);\n-        sd.setParameters(params);\n-        return sd;\n-    }\n-\n-    public static <T extends ServiceDefinition> void build(T sd, final Class<?> interfaceClass) {\n-        sd.setCanonicalName(interfaceClass.getCanonicalName());\n-        sd.setCodeSource(ClassUtils.getCodeSource(interfaceClass));\n-\n-        TypeDefinitionBuilder builder = new TypeDefinitionBuilder();\n-        List<Method> methods = ClassUtils.getPublicNonStaticMethods(interfaceClass);\n-        for (Method method : methods) {\n-            MethodDefinition md = new MethodDefinition();\n-            md.setName(method.getName());\n-\n-            // Process parameter types.\n-            Class<?>[] paramTypes = method.getParameterTypes();\n-            Type[] genericParamTypes = method.getGenericParameterTypes();\n-\n-            String[] parameterTypes = new String[paramTypes.length];\n-            for (int i = 0; i < paramTypes.length; i++) {\n-                TypeDefinition td = builder.build(genericParamTypes[i], paramTypes[i]);\n-                parameterTypes[i] = td.getType();\n-            }\n-            md.setParameterTypes(parameterTypes);\n-\n-            // Process return type.\n-            TypeDefinition td = builder.build(method.getGenericReturnType(), method.getReturnType());\n-            md.setReturnType(td.getType());\n-\n-            sd.getMethods().add(md);\n-        }\n-\n-        sd.setTypes(builder.getTypeDefinitions());\n-    }\n-\n-    /**\n-     * Describe a Java interface in Json schema.\n-     *\n-     * @return Service description\n-     */\n-    public static String schema(final Class<?> clazz) {\n-        ServiceDefinition sd = build(clazz);\n-        Gson gson = new Gson();\n-        return gson.toJson(sd);\n-    }\n-\n-    private ServiceDefinitionBuilder() {\n-    }\n-}\n-\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.definition;\r\n+\r\n+import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;\r\n+import org.apache.dubbo.metadata.definition.model.MethodDefinition;\r\n+import org.apache.dubbo.metadata.definition.model.ServiceDefinition;\r\n+import org.apache.dubbo.metadata.definition.model.TypeDefinition;\r\n+import org.apache.dubbo.metadata.definition.util.ClassUtils;\r\n+\r\n+import com.google.gson.Gson;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Type;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * 2015/1/27.\r\n+ */\r\n+public final class ServiceDefinitionBuilder {\r\n+\r\n+    /**\r\n+     * Describe a Java interface in {@link ServiceDefinition}.\r\n+     *\r\n+     * @return Service description\r\n+     */\r\n+    public static ServiceDefinition build(final Class<?> interfaceClass) {\r\n+        ServiceDefinition sd = new ServiceDefinition();\r\n+        build(sd, interfaceClass);\r\n+        return sd;\r\n+    }\r\n+\r\n+    public static FullServiceDefinition buildFullDefinition(final Class<?> interfaceClass) {\r\n+        FullServiceDefinition sd = new FullServiceDefinition();\r\n+        build(sd, interfaceClass);\r\n+        return sd;\r\n+    }\r\n+\r\n+    public static FullServiceDefinition buildFullDefinition(final Class<?> interfaceClass, Map<String, String> params) {\r\n+        FullServiceDefinition sd = new FullServiceDefinition();\r\n+        build(sd, interfaceClass);\r\n+        sd.setParameters(params);\r\n+        return sd;\r\n+    }\r\n+\r\n+    public static <T extends ServiceDefinition> void build(T sd, final Class<?> interfaceClass) {\r\n+        sd.setCanonicalName(interfaceClass.getCanonicalName());\r\n+        sd.setCodeSource(ClassUtils.getCodeSource(interfaceClass));\r\n+\r\n+        TypeDefinitionBuilder builder = new TypeDefinitionBuilder();\r\n+        List<Method> methods = ClassUtils.getPublicNonStaticMethods(interfaceClass);\r\n+        for (Method method : methods) {\r\n+            MethodDefinition md = new MethodDefinition();\r\n+            md.setName(method.getName());\r\n+\r\n+            // Process parameter types.\r\n+            Class<?>[] paramTypes = method.getParameterTypes();\r\n+            Type[] genericParamTypes = method.getGenericParameterTypes();\r\n+\r\n+            String[] parameterTypes = new String[paramTypes.length];\r\n+            for (int i = 0; i < paramTypes.length; i++) {\r\n+                TypeDefinition td = builder.build(genericParamTypes[i], paramTypes[i]);\r\n+                parameterTypes[i] = td.getType();\r\n+            }\r\n+            md.setParameterTypes(parameterTypes);\r\n+\r\n+            // Process return type.\r\n+            TypeDefinition td = builder.build(method.getGenericReturnType(), method.getReturnType());\r\n+            md.setReturnType(td.getType());\r\n+\r\n+            sd.getMethods().add(md);\r\n+        }\r\n+\r\n+        sd.setTypes(builder.getTypeDefinitions());\r\n+    }\r\n+\r\n+    /**\r\n+     * Describe a Java interface in Json schema.\r\n+     *\r\n+     * @return Service description\r\n+     */\r\n+    public static String schema(final Class<?> clazz) {\r\n+        ServiceDefinition sd = build(clazz);\r\n+        Gson gson = new Gson();\r\n+        return gson.toJson(sd);\r\n+    }\r\n+\r\n+    private ServiceDefinitionBuilder() {\r\n+    }\r\n+}\r\n+\r\n+\r\n"}, {"source1": "org/apache/dubbo/metadata/definition/TypeDefinitionBuilder.java", "source2": "org/apache/dubbo/metadata/definition/TypeDefinitionBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,88 +1,88 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.definition;\n-\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.metadata.definition.builder.DefaultTypeBuilder;\n-import org.apache.dubbo.metadata.definition.builder.TypeBuilder;\n-import org.apache.dubbo.metadata.definition.model.TypeDefinition;\n-\n-import java.lang.reflect.Type;\n-import java.util.ArrayList;\n-import java.util.HashMap;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-\n-import static org.apache.dubbo.common.utils.ClassUtils.isSimpleType;\n-\n-/**\n- * 2015/1/27.\n- */\n-public class TypeDefinitionBuilder {\n-    private static final Logger logger = LoggerFactory.getLogger(TypeDefinitionBuilder.class);\n-    static final List<TypeBuilder> BUILDERS;\n-\n-    static {\n-        ExtensionLoader<TypeBuilder> extensionLoader = ExtensionLoader.getExtensionLoader(TypeBuilder.class);\n-        Set<TypeBuilder> tbs = extensionLoader.getSupportedExtensionInstances();\n-        BUILDERS = new ArrayList<>(tbs);\n-    }\n-\n-    public static TypeDefinition build(Type type, Class<?> clazz, Map<Class<?>, TypeDefinition> typeCache) {\n-        TypeBuilder builder = getGenericTypeBuilder(type, clazz);\n-        TypeDefinition td;\n-        if (builder != null) {\n-            td = builder.build(type, clazz, typeCache);\n-            td.setTypeBuilderName(builder.getClass().getName());\n-        } else {\n-            td = DefaultTypeBuilder.build(clazz, typeCache);\n-            td.setTypeBuilderName(DefaultTypeBuilder.class.getName());\n-        }\n-        if (isSimpleType(clazz)) { // changed since 2.7.6\n-            td.setProperties(null);\n-        }\n-        return td;\n-    }\n-\n-    private static TypeBuilder getGenericTypeBuilder(Type type, Class<?> clazz) {\n-        for (TypeBuilder builder : BUILDERS) {\n-            try {\n-                if (builder.accept(type, clazz)) {\n-                    return builder;\n-                }\n-            } catch (NoClassDefFoundError cnfe) {\n-                //ignore\n-                logger.info(\"Throw classNotFound (\" + cnfe.getMessage() + \") in \" + builder.getClass());\n-            }\n-        }\n-        return null;\n-    }\n-\n-    private Map<Class<?>, TypeDefinition> typeCache = new HashMap<>();\n-\n-    public TypeDefinition build(Type type, Class<?> clazz) {\n-        return build(type, clazz, typeCache);\n-    }\n-\n-    public List<TypeDefinition> getTypeDefinitions() {\n-        return new ArrayList<>(typeCache.values());\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.definition;\r\n+\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.metadata.definition.builder.DefaultTypeBuilder;\r\n+import org.apache.dubbo.metadata.definition.builder.TypeBuilder;\r\n+import org.apache.dubbo.metadata.definition.model.TypeDefinition;\r\n+\r\n+import java.lang.reflect.Type;\r\n+import java.util.ArrayList;\r\n+import java.util.HashMap;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+\r\n+import static org.apache.dubbo.common.utils.ClassUtils.isSimpleType;\r\n+\r\n+/**\r\n+ * 2015/1/27.\r\n+ */\r\n+public class TypeDefinitionBuilder {\r\n+    private static final Logger logger = LoggerFactory.getLogger(TypeDefinitionBuilder.class);\r\n+    static final List<TypeBuilder> BUILDERS;\r\n+\r\n+    static {\r\n+        ExtensionLoader<TypeBuilder> extensionLoader = ExtensionLoader.getExtensionLoader(TypeBuilder.class);\r\n+        Set<TypeBuilder> tbs = extensionLoader.getSupportedExtensionInstances();\r\n+        BUILDERS = new ArrayList<>(tbs);\r\n+    }\r\n+\r\n+    public static TypeDefinition build(Type type, Class<?> clazz, Map<Class<?>, TypeDefinition> typeCache) {\r\n+        TypeBuilder builder = getGenericTypeBuilder(type, clazz);\r\n+        TypeDefinition td;\r\n+        if (builder != null) {\r\n+            td = builder.build(type, clazz, typeCache);\r\n+            td.setTypeBuilderName(builder.getClass().getName());\r\n+        } else {\r\n+            td = DefaultTypeBuilder.build(clazz, typeCache);\r\n+            td.setTypeBuilderName(DefaultTypeBuilder.class.getName());\r\n+        }\r\n+        if (isSimpleType(clazz)) { // changed since 2.7.6\r\n+            td.setProperties(null);\r\n+        }\r\n+        return td;\r\n+    }\r\n+\r\n+    private static TypeBuilder getGenericTypeBuilder(Type type, Class<?> clazz) {\r\n+        for (TypeBuilder builder : BUILDERS) {\r\n+            try {\r\n+                if (builder.accept(type, clazz)) {\r\n+                    return builder;\r\n+                }\r\n+            } catch (NoClassDefFoundError cnfe) {\r\n+                //ignore\r\n+                logger.info(\"Throw classNotFound (\" + cnfe.getMessage() + \") in \" + builder.getClass());\r\n+            }\r\n+        }\r\n+        return null;\r\n+    }\r\n+\r\n+    private Map<Class<?>, TypeDefinition> typeCache = new HashMap<>();\r\n+\r\n+    public TypeDefinition build(Type type, Class<?> clazz) {\r\n+        return build(type, clazz, typeCache);\r\n+    }\r\n+\r\n+    public List<TypeDefinition> getTypeDefinitions() {\r\n+        return new ArrayList<>(typeCache.values());\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/definition/builder/ArrayTypeBuilder.java", "source2": "org/apache/dubbo/metadata/definition/builder/ArrayTypeBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,48 +1,48 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.definition.builder;\n-\n-import org.apache.dubbo.metadata.definition.TypeDefinitionBuilder;\n-import org.apache.dubbo.metadata.definition.model.TypeDefinition;\n-\n-import java.lang.reflect.Type;\n-import java.util.Map;\n-\n-/**\n- * 2015/1/27.\n- */\n-public class ArrayTypeBuilder implements TypeBuilder {\n-\n-    @Override\n-    public boolean accept(Type type, Class<?> clazz) {\n-        if (clazz == null) {\n-            return false;\n-        }\n-        return clazz.isArray();\n-    }\n-\n-    @Override\n-    public TypeDefinition build(Type type, Class<?> clazz, Map<Class<?>, TypeDefinition> typeCache) {\n-        // Process the component type of an array.\n-        Class<?> componentType = clazz.getComponentType();\n-        TypeDefinitionBuilder.build(componentType, componentType, typeCache);\n-\n-        final String canonicalName = clazz.getCanonicalName();\n-        return new TypeDefinition(canonicalName);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.definition.builder;\r\n+\r\n+import org.apache.dubbo.metadata.definition.TypeDefinitionBuilder;\r\n+import org.apache.dubbo.metadata.definition.model.TypeDefinition;\r\n+\r\n+import java.lang.reflect.Type;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * 2015/1/27.\r\n+ */\r\n+public class ArrayTypeBuilder implements TypeBuilder {\r\n+\r\n+    @Override\r\n+    public boolean accept(Type type, Class<?> clazz) {\r\n+        if (clazz == null) {\r\n+            return false;\r\n+        }\r\n+        return clazz.isArray();\r\n+    }\r\n+\r\n+    @Override\r\n+    public TypeDefinition build(Type type, Class<?> clazz, Map<Class<?>, TypeDefinition> typeCache) {\r\n+        // Process the component type of an array.\r\n+        Class<?> componentType = clazz.getComponentType();\r\n+        TypeDefinitionBuilder.build(componentType, componentType, typeCache);\r\n+\r\n+        final String canonicalName = clazz.getCanonicalName();\r\n+        return new TypeDefinition(canonicalName);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/definition/builder/CollectionTypeBuilder.java", "source2": "org/apache/dubbo/metadata/definition/builder/CollectionTypeBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,70 +1,70 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.definition.builder;\n-\n-import org.apache.dubbo.metadata.definition.TypeDefinitionBuilder;\n-import org.apache.dubbo.metadata.definition.model.TypeDefinition;\n-\n-import java.lang.reflect.ParameterizedType;\n-import java.lang.reflect.Type;\n-import java.text.MessageFormat;\n-import java.util.Arrays;\n-import java.util.Collection;\n-import java.util.Map;\n-\n-/**\n- * 2015/1/27.\n- */\n-public class CollectionTypeBuilder implements TypeBuilder {\n-\n-    @Override\n-    public boolean accept(Type type, Class<?> clazz) {\n-        if (clazz == null) {\n-            return false;\n-        }\n-        return Collection.class.isAssignableFrom(clazz);\n-    }\n-\n-    @Override\n-    public TypeDefinition build(Type type, Class<?> clazz, Map<Class<?>, TypeDefinition> typeCache) {\n-        if (!(type instanceof ParameterizedType)) {\n-            return new TypeDefinition(clazz.getName());\n-        }\n-\n-        ParameterizedType parameterizedType = (ParameterizedType) type;\n-        Type[] actualTypeArgs = parameterizedType.getActualTypeArguments();\n-        if (actualTypeArgs == null || actualTypeArgs.length != 1) {\n-            throw new IllegalArgumentException(MessageFormat.format(\n-                    \"[ServiceDefinitionBuilder] Collection type [{0}] with unexpected amount of arguments [{1}].\"\n-                            + Arrays.toString(actualTypeArgs),\n-                    type, actualTypeArgs));\n-        }\n-\n-        Type actualType = actualTypeArgs[0];\n-        if (actualType instanceof ParameterizedType) {\n-            // Nested collection or map.\n-            Class<?> rawType = (Class<?>) ((ParameterizedType) actualType).getRawType();\n-            TypeDefinitionBuilder.build(actualType, rawType, typeCache);\n-        } else if (actualType instanceof Class<?>) {\n-            Class<?> actualClass = (Class<?>) actualType;\n-            TypeDefinitionBuilder.build(null, actualClass, typeCache);\n-        }\n-\n-        return new TypeDefinition(type.toString());\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.definition.builder;\r\n+\r\n+import org.apache.dubbo.metadata.definition.TypeDefinitionBuilder;\r\n+import org.apache.dubbo.metadata.definition.model.TypeDefinition;\r\n+\r\n+import java.lang.reflect.ParameterizedType;\r\n+import java.lang.reflect.Type;\r\n+import java.text.MessageFormat;\r\n+import java.util.Arrays;\r\n+import java.util.Collection;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * 2015/1/27.\r\n+ */\r\n+public class CollectionTypeBuilder implements TypeBuilder {\r\n+\r\n+    @Override\r\n+    public boolean accept(Type type, Class<?> clazz) {\r\n+        if (clazz == null) {\r\n+            return false;\r\n+        }\r\n+        return Collection.class.isAssignableFrom(clazz);\r\n+    }\r\n+\r\n+    @Override\r\n+    public TypeDefinition build(Type type, Class<?> clazz, Map<Class<?>, TypeDefinition> typeCache) {\r\n+        if (!(type instanceof ParameterizedType)) {\r\n+            return new TypeDefinition(clazz.getName());\r\n+        }\r\n+\r\n+        ParameterizedType parameterizedType = (ParameterizedType) type;\r\n+        Type[] actualTypeArgs = parameterizedType.getActualTypeArguments();\r\n+        if (actualTypeArgs == null || actualTypeArgs.length != 1) {\r\n+            throw new IllegalArgumentException(MessageFormat.format(\r\n+                    \"[ServiceDefinitionBuilder] Collection type [{0}] with unexpected amount of arguments [{1}].\"\r\n+                            + Arrays.toString(actualTypeArgs),\r\n+                    type, actualTypeArgs));\r\n+        }\r\n+\r\n+        Type actualType = actualTypeArgs[0];\r\n+        if (actualType instanceof ParameterizedType) {\r\n+            // Nested collection or map.\r\n+            Class<?> rawType = (Class<?>) ((ParameterizedType) actualType).getRawType();\r\n+            TypeDefinitionBuilder.build(actualType, rawType, typeCache);\r\n+        } else if (actualType instanceof Class<?>) {\r\n+            Class<?> actualClass = (Class<?>) actualType;\r\n+            TypeDefinitionBuilder.build(null, actualClass, typeCache);\r\n+        }\r\n+\r\n+        return new TypeDefinition(type.toString());\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/definition/builder/DefaultTypeBuilder.java", "source2": "org/apache/dubbo/metadata/definition/builder/DefaultTypeBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,70 +1,70 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.definition.builder;\n-\n-import org.apache.dubbo.metadata.definition.TypeDefinitionBuilder;\n-import org.apache.dubbo.metadata.definition.model.TypeDefinition;\n-import org.apache.dubbo.metadata.definition.util.ClassUtils;\n-import org.apache.dubbo.metadata.definition.util.JaketConfigurationUtils;\n-\n-import java.lang.reflect.Field;\n-import java.lang.reflect.Type;\n-import java.util.List;\n-import java.util.Map;\n-\n-/**\n- * 2015/1/27.\n- */\n-public final class DefaultTypeBuilder {\n-\n-    public static TypeDefinition build(Class<?> clazz, Map<Class<?>, TypeDefinition> typeCache) {\n-//        final String canonicalName = clazz.getCanonicalName();\n-        final String name = clazz.getName();\n-\n-        TypeDefinition td = new TypeDefinition(name);\n-        // Try to get a cached definition\n-        if (typeCache.containsKey(clazz)) {\n-            return typeCache.get(clazz);\n-        }\n-\n-        // Primitive type\n-        if (!JaketConfigurationUtils.needAnalyzing(clazz)) {\n-            return td;\n-        }\n-\n-        // Custom type\n-        TypeDefinition ref = new TypeDefinition(name);\n-        ref.set$ref(name);\n-        typeCache.put(clazz, ref);\n-\n-        List<Field> fields = ClassUtils.getNonStaticFields(clazz);\n-        for (Field field : fields) {\n-            String fieldName = field.getName();\n-            Class<?> fieldClass = field.getType();\n-            Type fieldType = field.getGenericType();\n-\n-            TypeDefinition fieldTd = TypeDefinitionBuilder.build(fieldType, fieldClass, typeCache);\n-            td.getProperties().put(fieldName, fieldTd);\n-        }\n-\n-        typeCache.put(clazz, td);\n-        return td;\n-    }\n-\n-    private DefaultTypeBuilder() {\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.definition.builder;\r\n+\r\n+import org.apache.dubbo.metadata.definition.TypeDefinitionBuilder;\r\n+import org.apache.dubbo.metadata.definition.model.TypeDefinition;\r\n+import org.apache.dubbo.metadata.definition.util.ClassUtils;\r\n+import org.apache.dubbo.metadata.definition.util.JaketConfigurationUtils;\r\n+\r\n+import java.lang.reflect.Field;\r\n+import java.lang.reflect.Type;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * 2015/1/27.\r\n+ */\r\n+public final class DefaultTypeBuilder {\r\n+\r\n+    public static TypeDefinition build(Class<?> clazz, Map<Class<?>, TypeDefinition> typeCache) {\r\n+//        final String canonicalName = clazz.getCanonicalName();\r\n+        final String name = clazz.getName();\r\n+\r\n+        TypeDefinition td = new TypeDefinition(name);\r\n+        // Try to get a cached definition\r\n+        if (typeCache.containsKey(clazz)) {\r\n+            return typeCache.get(clazz);\r\n+        }\r\n+\r\n+        // Primitive type\r\n+        if (!JaketConfigurationUtils.needAnalyzing(clazz)) {\r\n+            return td;\r\n+        }\r\n+\r\n+        // Custom type\r\n+        TypeDefinition ref = new TypeDefinition(name);\r\n+        ref.set$ref(name);\r\n+        typeCache.put(clazz, ref);\r\n+\r\n+        List<Field> fields = ClassUtils.getNonStaticFields(clazz);\r\n+        for (Field field : fields) {\r\n+            String fieldName = field.getName();\r\n+            Class<?> fieldClass = field.getType();\r\n+            Type fieldType = field.getGenericType();\r\n+\r\n+            TypeDefinition fieldTd = TypeDefinitionBuilder.build(fieldType, fieldClass, typeCache);\r\n+            td.getProperties().put(fieldName, fieldTd);\r\n+        }\r\n+\r\n+        typeCache.put(clazz, td);\r\n+        return td;\r\n+    }\r\n+\r\n+    private DefaultTypeBuilder() {\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/definition/builder/EnumTypeBuilder.java", "source2": "org/apache/dubbo/metadata/definition/builder/EnumTypeBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,58 +1,58 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.definition.builder;\n-\n-import org.apache.dubbo.metadata.definition.model.TypeDefinition;\n-\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Type;\n-import java.util.Map;\n-\n-/**\n- * 2015/1/27.\n- */\n-public class EnumTypeBuilder implements TypeBuilder {\n-\n-    @Override\n-    public boolean accept(Type type, Class<?> clazz) {\n-        if (clazz == null) {\n-            return false;\n-        }\n-        return clazz.isEnum();\n-    }\n-\n-    @Override\n-    public TypeDefinition build(Type type, Class<?> clazz, Map<Class<?>, TypeDefinition> typeCache) {\n-        TypeDefinition td = new TypeDefinition(clazz.getCanonicalName());\n-\n-        try {\n-            Method methodValues = clazz.getDeclaredMethod(\"values\");\n-            Object[] values = (Object[]) methodValues.invoke(clazz, new Object[0]);\n-            int length = values.length;\n-            for (int i = 0; i < length; i++) {\n-                Object value = values[i];\n-                td.getEnums().add(value.toString());\n-            }\n-        } catch (Throwable t) {\n-            td.setId(\"-1\");\n-        }\n-\n-        typeCache.put(clazz, td);\n-        return td;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.definition.builder;\r\n+\r\n+import org.apache.dubbo.metadata.definition.model.TypeDefinition;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Type;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * 2015/1/27.\r\n+ */\r\n+public class EnumTypeBuilder implements TypeBuilder {\r\n+\r\n+    @Override\r\n+    public boolean accept(Type type, Class<?> clazz) {\r\n+        if (clazz == null) {\r\n+            return false;\r\n+        }\r\n+        return clazz.isEnum();\r\n+    }\r\n+\r\n+    @Override\r\n+    public TypeDefinition build(Type type, Class<?> clazz, Map<Class<?>, TypeDefinition> typeCache) {\r\n+        TypeDefinition td = new TypeDefinition(clazz.getCanonicalName());\r\n+\r\n+        try {\r\n+            Method methodValues = clazz.getDeclaredMethod(\"values\");\r\n+            Object[] values = (Object[]) methodValues.invoke(clazz, new Object[0]);\r\n+            int length = values.length;\r\n+            for (int i = 0; i < length; i++) {\r\n+                Object value = values[i];\r\n+                td.getEnums().add(value.toString());\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            td.setId(\"-1\");\r\n+        }\r\n+\r\n+        typeCache.put(clazz, td);\r\n+        return td;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/definition/builder/MapTypeBuilder.java", "source2": "org/apache/dubbo/metadata/definition/builder/MapTypeBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,80 +1,80 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.definition.builder;\n-\n-import org.apache.dubbo.metadata.definition.TypeDefinitionBuilder;\n-import org.apache.dubbo.metadata.definition.model.TypeDefinition;\n-\n-import java.lang.reflect.ParameterizedType;\n-import java.lang.reflect.Type;\n-import java.text.MessageFormat;\n-import java.util.Arrays;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.common.utils.TypeUtils.getRawClass;\n-import static org.apache.dubbo.common.utils.TypeUtils.isClass;\n-import static org.apache.dubbo.common.utils.TypeUtils.isParameterizedType;\n-\n-/**\n- * 2015/1/27.\n- */\n-public class MapTypeBuilder implements TypeBuilder {\n-\n-    @Override\n-    public boolean accept(Type type, Class<?> clazz) {\n-        if (clazz == null) {\n-            return false;\n-        }\n-        return Map.class.isAssignableFrom(clazz);\n-    }\n-\n-    @Override\n-    public TypeDefinition build(Type type, Class<?> clazz, Map<Class<?>, TypeDefinition> typeCache) {\n-        if (!(type instanceof ParameterizedType)) {\n-            return new TypeDefinition(clazz.getName());\n-        }\n-\n-        ParameterizedType parameterizedType = (ParameterizedType) type;\n-        Type[] actualTypeArgs = parameterizedType.getActualTypeArguments();\n-        int actualTypeArgsLength = actualTypeArgs == null ? 0 : actualTypeArgs.length;\n-\n-        if (actualTypeArgsLength != 2) {\n-            throw new IllegalArgumentException(MessageFormat.format(\n-                    \"[ServiceDefinitionBuilder] Map type [{0}] with unexpected amount of arguments [{1}].\"\n-                            + Arrays.toString(actualTypeArgs), type, actualTypeArgs));\n-        }\n-\n-        String mapType = type.toString();\n-\n-        TypeDefinition typeDefinition = new TypeDefinition(mapType);\n-\n-        for (int i = 0; i < actualTypeArgsLength; i++) {\n-            Type actualType = actualTypeArgs[i];\n-            TypeDefinition item = null;\n-            Class<?> rawType = getRawClass(actualType);\n-            if (isParameterizedType(actualType)) {\n-                // Nested collection or map.\n-                item = TypeDefinitionBuilder.build(actualType, rawType, typeCache);\n-            } else if (isClass(actualType)) {\n-                item = TypeDefinitionBuilder.build(null, rawType, typeCache);\n-            }\n-            typeDefinition.getItems().add(item);\n-        }\n-\n-        return typeDefinition;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.definition.builder;\r\n+\r\n+import org.apache.dubbo.metadata.definition.TypeDefinitionBuilder;\r\n+import org.apache.dubbo.metadata.definition.model.TypeDefinition;\r\n+\r\n+import java.lang.reflect.ParameterizedType;\r\n+import java.lang.reflect.Type;\r\n+import java.text.MessageFormat;\r\n+import java.util.Arrays;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.common.utils.TypeUtils.getRawClass;\r\n+import static org.apache.dubbo.common.utils.TypeUtils.isClass;\r\n+import static org.apache.dubbo.common.utils.TypeUtils.isParameterizedType;\r\n+\r\n+/**\r\n+ * 2015/1/27.\r\n+ */\r\n+public class MapTypeBuilder implements TypeBuilder {\r\n+\r\n+    @Override\r\n+    public boolean accept(Type type, Class<?> clazz) {\r\n+        if (clazz == null) {\r\n+            return false;\r\n+        }\r\n+        return Map.class.isAssignableFrom(clazz);\r\n+    }\r\n+\r\n+    @Override\r\n+    public TypeDefinition build(Type type, Class<?> clazz, Map<Class<?>, TypeDefinition> typeCache) {\r\n+        if (!(type instanceof ParameterizedType)) {\r\n+            return new TypeDefinition(clazz.getName());\r\n+        }\r\n+\r\n+        ParameterizedType parameterizedType = (ParameterizedType) type;\r\n+        Type[] actualTypeArgs = parameterizedType.getActualTypeArguments();\r\n+        int actualTypeArgsLength = actualTypeArgs == null ? 0 : actualTypeArgs.length;\r\n+\r\n+        if (actualTypeArgsLength != 2) {\r\n+            throw new IllegalArgumentException(MessageFormat.format(\r\n+                    \"[ServiceDefinitionBuilder] Map type [{0}] with unexpected amount of arguments [{1}].\"\r\n+                            + Arrays.toString(actualTypeArgs), type, actualTypeArgs));\r\n+        }\r\n+\r\n+        String mapType = type.toString();\r\n+\r\n+        TypeDefinition typeDefinition = new TypeDefinition(mapType);\r\n+\r\n+        for (int i = 0; i < actualTypeArgsLength; i++) {\r\n+            Type actualType = actualTypeArgs[i];\r\n+            TypeDefinition item = null;\r\n+            Class<?> rawType = getRawClass(actualType);\r\n+            if (isParameterizedType(actualType)) {\r\n+                // Nested collection or map.\r\n+                item = TypeDefinitionBuilder.build(actualType, rawType, typeCache);\r\n+            } else if (isClass(actualType)) {\r\n+                item = TypeDefinitionBuilder.build(null, rawType, typeCache);\r\n+            }\r\n+            typeDefinition.getItems().add(item);\r\n+        }\r\n+\r\n+        return typeDefinition;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/definition/builder/TypeBuilder.java", "source2": "org/apache/dubbo/metadata/definition/builder/TypeBuilder.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,42 +1,42 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.definition.builder;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.common.lang.Prioritized;\n-import org.apache.dubbo.metadata.definition.model.TypeDefinition;\n-\n-import java.lang.reflect.Type;\n-import java.util.Map;\n-\n-/**\n- * 2015/1/27.\n- */\n-@SPI\n-public interface TypeBuilder extends Prioritized {\n-\n-    /**\n-     * Whether the build accept the type or class passed in.\n-     */\n-    boolean accept(Type type, Class<?> clazz);\n-\n-    /**\n-     * Build type definition with the type or class.\n-     */\n-    TypeDefinition build(Type type, Class<?> clazz, Map<Class<?>, TypeDefinition> typeCache);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.definition.builder;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.common.lang.Prioritized;\r\n+import org.apache.dubbo.metadata.definition.model.TypeDefinition;\r\n+\r\n+import java.lang.reflect.Type;\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * 2015/1/27.\r\n+ */\r\n+@SPI\r\n+public interface TypeBuilder extends Prioritized {\r\n+\r\n+    /**\r\n+     * Whether the build accept the type or class passed in.\r\n+     */\r\n+    boolean accept(Type type, Class<?> clazz);\r\n+\r\n+    /**\r\n+     * Build type definition with the type or class.\r\n+     */\r\n+    TypeDefinition build(Type type, Class<?> clazz, Map<Class<?>, TypeDefinition> typeCache);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/definition/model/FullServiceDefinition.java", "source2": "org/apache/dubbo/metadata/definition/model/FullServiceDefinition.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,43 +1,43 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.definition.model;\n-\n-import java.util.Map;\n-\n-/**\n- * 2018/10/25\n- */\n-public class FullServiceDefinition extends ServiceDefinition {\n-\n-    private Map<String, String> parameters;\n-\n-    public Map<String, String> getParameters() {\n-        return parameters;\n-    }\n-\n-    public void setParameters(Map<String, String> parameters) {\n-        this.parameters = parameters;\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"FullServiceDefinition{\" +\n-                \"parameters=\" + parameters +\n-                \"} \" + super.toString();\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.definition.model;\r\n+\r\n+import java.util.Map;\r\n+\r\n+/**\r\n+ * 2018/10/25\r\n+ */\r\n+public class FullServiceDefinition extends ServiceDefinition {\r\n+\r\n+    private Map<String, String> parameters;\r\n+\r\n+    public Map<String, String> getParameters() {\r\n+        return parameters;\r\n+    }\r\n+\r\n+    public void setParameters(Map<String, String> parameters) {\r\n+        this.parameters = parameters;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"FullServiceDefinition{\" +\r\n+                \"parameters=\" + parameters +\r\n+                \"} \" + super.toString();\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/definition/model/MethodDefinition.java", "source2": "org/apache/dubbo/metadata/definition/model/MethodDefinition.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,100 +1,100 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.definition.model;\n-\n-import java.io.Serializable;\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.List;\n-import java.util.Objects;\n-\n-import static org.apache.dubbo.metadata.definition.model.TypeDefinition.formatType;\n-import static org.apache.dubbo.metadata.definition.model.TypeDefinition.formatTypes;\n-\n-/**\n- * 2015/1/27.\n- */\n-public class MethodDefinition implements Serializable {\n-\n-    private String name;\n-    private String[] parameterTypes;\n-    private String returnType;\n-    private List<TypeDefinition> parameters;\n-\n-    public String getName() {\n-        return name;\n-    }\n-\n-    public List<TypeDefinition> getParameters() {\n-        if (parameters == null) {\n-            parameters = new ArrayList<>();\n-        }\n-        return parameters;\n-    }\n-\n-    public String[] getParameterTypes() {\n-        return parameterTypes;\n-    }\n-\n-    public String getReturnType() {\n-        return returnType;\n-    }\n-\n-    public void setName(String name) {\n-        this.name = name;\n-    }\n-\n-    public void setParameters(List<TypeDefinition> parameters) {\n-        this.parameters = parameters;\n-    }\n-\n-    public void setParameterTypes(String[] parameterTypes) {\n-        this.parameterTypes = formatTypes(parameterTypes);\n-    }\n-\n-    public void setReturnType(String returnType) {\n-        this.returnType = formatType(returnType);\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"MethodDefinition [name=\" + name + \", parameterTypes=\" + Arrays.toString(parameterTypes)\n-                + \", returnType=\" + returnType + \"]\";\n-    }\n-\n-    @Override\n-    public boolean equals(Object o) {\n-        if (this == o) {\n-            return true;\n-        }\n-        if (!(o instanceof MethodDefinition)) {\n-            return false;\n-        }\n-        MethodDefinition that = (MethodDefinition) o;\n-        return Objects.equals(getName(), that.getName()) &&\n-                Arrays.equals(getParameterTypes(), that.getParameterTypes()) &&\n-                Objects.equals(getReturnType(), that.getReturnType()) &&\n-                Objects.equals(getParameters(), that.getParameters());\n-    }\n-\n-    @Override\n-    public int hashCode() {\n-        int result = Objects.hash(getName(), getReturnType(), getParameters());\n-        result = 31 * result + Arrays.hashCode(getParameterTypes());\n-        return result;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.definition.model;\r\n+\r\n+import java.io.Serializable;\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.List;\r\n+import java.util.Objects;\r\n+\r\n+import static org.apache.dubbo.metadata.definition.model.TypeDefinition.formatType;\r\n+import static org.apache.dubbo.metadata.definition.model.TypeDefinition.formatTypes;\r\n+\r\n+/**\r\n+ * 2015/1/27.\r\n+ */\r\n+public class MethodDefinition implements Serializable {\r\n+\r\n+    private String name;\r\n+    private String[] parameterTypes;\r\n+    private String returnType;\r\n+    private List<TypeDefinition> parameters;\r\n+\r\n+    public String getName() {\r\n+        return name;\r\n+    }\r\n+\r\n+    public List<TypeDefinition> getParameters() {\r\n+        if (parameters == null) {\r\n+            parameters = new ArrayList<>();\r\n+        }\r\n+        return parameters;\r\n+    }\r\n+\r\n+    public String[] getParameterTypes() {\r\n+        return parameterTypes;\r\n+    }\r\n+\r\n+    public String getReturnType() {\r\n+        return returnType;\r\n+    }\r\n+\r\n+    public void setName(String name) {\r\n+        this.name = name;\r\n+    }\r\n+\r\n+    public void setParameters(List<TypeDefinition> parameters) {\r\n+        this.parameters = parameters;\r\n+    }\r\n+\r\n+    public void setParameterTypes(String[] parameterTypes) {\r\n+        this.parameterTypes = formatTypes(parameterTypes);\r\n+    }\r\n+\r\n+    public void setReturnType(String returnType) {\r\n+        this.returnType = formatType(returnType);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"MethodDefinition [name=\" + name + \", parameterTypes=\" + Arrays.toString(parameterTypes)\r\n+                + \", returnType=\" + returnType + \"]\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean equals(Object o) {\r\n+        if (this == o) {\r\n+            return true;\r\n+        }\r\n+        if (!(o instanceof MethodDefinition)) {\r\n+            return false;\r\n+        }\r\n+        MethodDefinition that = (MethodDefinition) o;\r\n+        return Objects.equals(getName(), that.getName()) &&\r\n+                Arrays.equals(getParameterTypes(), that.getParameterTypes()) &&\r\n+                Objects.equals(getReturnType(), that.getReturnType()) &&\r\n+                Objects.equals(getParameters(), that.getParameters());\r\n+    }\r\n+\r\n+    @Override\r\n+    public int hashCode() {\r\n+        int result = Objects.hash(getName(), getReturnType(), getParameters());\r\n+        result = 31 * result + Arrays.hashCode(getParameterTypes());\r\n+        return result;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/definition/model/ServiceDefinition.java", "source2": "org/apache/dubbo/metadata/definition/model/ServiceDefinition.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,101 +1,101 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.definition.model;\n-\n-import java.io.Serializable;\n-import java.util.ArrayList;\n-import java.util.List;\n-import java.util.Objects;\n-\n-/**\n- * 2015/1/27.\n- */\n-public class ServiceDefinition implements Serializable {\n-\n-    private String canonicalName;\n-    private String codeSource;\n-    private List<MethodDefinition> methods;\n-    private List<TypeDefinition> types;\n-\n-    public String getCanonicalName() {\n-        return canonicalName;\n-    }\n-\n-    public String getCodeSource() {\n-        return codeSource;\n-    }\n-\n-    public List<MethodDefinition> getMethods() {\n-        if (methods == null) {\n-            methods = new ArrayList<>();\n-        }\n-        return methods;\n-    }\n-\n-    public List<TypeDefinition> getTypes() {\n-        if (types == null) {\n-            types = new ArrayList<>();\n-        }\n-        return types;\n-    }\n-\n-    public String getUniqueId() {\n-        return canonicalName + \"@\" + codeSource;\n-    }\n-\n-    public void setCanonicalName(String canonicalName) {\n-        this.canonicalName = canonicalName;\n-    }\n-\n-    public void setCodeSource(String codeSource) {\n-        this.codeSource = codeSource;\n-    }\n-\n-    public void setMethods(List<MethodDefinition> methods) {\n-        this.methods = methods;\n-    }\n-\n-    public void setTypes(List<TypeDefinition> types) {\n-        this.types = types;\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"ServiceDefinition [canonicalName=\" + canonicalName + \", codeSource=\" + codeSource + \", methods=\"\n-                + methods + \"]\";\n-    }\n-\n-    @Override\n-    public boolean equals(Object o) {\n-        if (this == o) {\n-            return true;\n-        }\n-        if (!(o instanceof ServiceDefinition)) {\n-            return false;\n-        }\n-        ServiceDefinition that = (ServiceDefinition) o;\n-        return Objects.equals(getCanonicalName(), that.getCanonicalName()) &&\n-                Objects.equals(getCodeSource(), that.getCodeSource()) &&\n-                Objects.equals(getMethods(), that.getMethods()) &&\n-                Objects.equals(getTypes(), that.getTypes());\n-    }\n-\n-    @Override\n-    public int hashCode() {\n-        return Objects.hash(getCanonicalName(), getCodeSource(), getMethods(), getTypes());\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.definition.model;\r\n+\r\n+import java.io.Serializable;\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+import java.util.Objects;\r\n+\r\n+/**\r\n+ * 2015/1/27.\r\n+ */\r\n+public class ServiceDefinition implements Serializable {\r\n+\r\n+    private String canonicalName;\r\n+    private String codeSource;\r\n+    private List<MethodDefinition> methods;\r\n+    private List<TypeDefinition> types;\r\n+\r\n+    public String getCanonicalName() {\r\n+        return canonicalName;\r\n+    }\r\n+\r\n+    public String getCodeSource() {\r\n+        return codeSource;\r\n+    }\r\n+\r\n+    public List<MethodDefinition> getMethods() {\r\n+        if (methods == null) {\r\n+            methods = new ArrayList<>();\r\n+        }\r\n+        return methods;\r\n+    }\r\n+\r\n+    public List<TypeDefinition> getTypes() {\r\n+        if (types == null) {\r\n+            types = new ArrayList<>();\r\n+        }\r\n+        return types;\r\n+    }\r\n+\r\n+    public String getUniqueId() {\r\n+        return canonicalName + \"@\" + codeSource;\r\n+    }\r\n+\r\n+    public void setCanonicalName(String canonicalName) {\r\n+        this.canonicalName = canonicalName;\r\n+    }\r\n+\r\n+    public void setCodeSource(String codeSource) {\r\n+        this.codeSource = codeSource;\r\n+    }\r\n+\r\n+    public void setMethods(List<MethodDefinition> methods) {\r\n+        this.methods = methods;\r\n+    }\r\n+\r\n+    public void setTypes(List<TypeDefinition> types) {\r\n+        this.types = types;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"ServiceDefinition [canonicalName=\" + canonicalName + \", codeSource=\" + codeSource + \", methods=\"\r\n+                + methods + \"]\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean equals(Object o) {\r\n+        if (this == o) {\r\n+            return true;\r\n+        }\r\n+        if (!(o instanceof ServiceDefinition)) {\r\n+            return false;\r\n+        }\r\n+        ServiceDefinition that = (ServiceDefinition) o;\r\n+        return Objects.equals(getCanonicalName(), that.getCanonicalName()) &&\r\n+                Objects.equals(getCodeSource(), that.getCodeSource()) &&\r\n+                Objects.equals(getMethods(), that.getMethods()) &&\r\n+                Objects.equals(getTypes(), that.getTypes());\r\n+    }\r\n+\r\n+    @Override\r\n+    public int hashCode() {\r\n+        return Objects.hash(getCanonicalName(), getCodeSource(), getMethods(), getTypes());\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/definition/model/TypeDefinition.java", "source2": "org/apache/dubbo/metadata/definition/model/TypeDefinition.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,189 +1,189 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.definition.model;\n-\n-import com.google.gson.annotations.SerializedName;\n-\n-import java.io.Serializable;\n-import java.lang.reflect.ParameterizedType;\n-import java.util.ArrayList;\n-import java.util.HashMap;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Objects;\n-\n-import static org.apache.dubbo.common.utils.StringUtils.replace;\n-\n-/**\n- * 2015/1/27.\n- */\n-public class TypeDefinition implements Serializable {\n-\n-    private String id;\n-    private String type;\n-    @SerializedName(\"items\")\n-    private List<TypeDefinition> items;\n-    @SerializedName(\"enum\")\n-    private List<String> enums;\n-    private String $ref;\n-    private Map<String, TypeDefinition> properties;\n-    private String typeBuilderName;\n-\n-    public TypeDefinition() {\n-    }\n-\n-    public TypeDefinition(String type) {\n-        this.setType(type);\n-    }\n-\n-    /**\n-     * Format the {@link String} array presenting Java types\n-     *\n-     * @param types the strings presenting Java types\n-     * @return new String array of Java types after be formatted\n-     * @since 2.7.9\n-     */\n-    public static String[] formatTypes(String[] types) {\n-        String[] newTypes = new String[types.length];\n-        for (int i = 0; i < types.length; i++) {\n-            newTypes[i] = formatType(types[i]);\n-        }\n-        return newTypes;\n-    }\n-\n-    /**\n-     * Format the {@link String} presenting Java type\n-     *\n-     * @param type the String presenting type\n-     * @return new String presenting Java type after be formatted\n-     * @since 2.7.9\n-     */\n-    public static String formatType(String type) {\n-        if (isGenericType(type)) {\n-            return formatGenericType(type);\n-        }\n-        return type;\n-    }\n-\n-    /**\n-     * Replacing <code>\", \"</code> to <code>\",\"</code> will not change the semantic of\n-     * {@link ParameterizedType#toString()}\n-     *\n-     * @param type\n-     * @return formatted type\n-     * @see sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl\n-     */\n-    private static String formatGenericType(String type) {\n-        return replace(type, \", \", \",\");\n-    }\n-\n-    private static boolean isGenericType(String type) {\n-        return type.contains(\"<\") && type.contains(\">\");\n-    }\n-\n-    public String get$ref() {\n-        return $ref;\n-    }\n-\n-    public List<String> getEnums() {\n-        if (enums == null) {\n-            enums = new ArrayList<String>();\n-        }\n-        return enums;\n-    }\n-\n-    public String getId() {\n-        return id;\n-    }\n-\n-    public List<TypeDefinition> getItems() {\n-        if (items == null) {\n-            items = new ArrayList<>();\n-        }\n-        return items;\n-    }\n-\n-    public Map<String, TypeDefinition> getProperties() {\n-        if (properties == null) {\n-            properties = new HashMap<>();\n-        }\n-        return properties;\n-    }\n-\n-    public String getType() {\n-        return type;\n-    }\n-\n-    public String getTypeBuilderName() {\n-        return typeBuilderName;\n-    }\n-\n-    public void set$ref(String $ref) {\n-        this.$ref = $ref;\n-    }\n-\n-    public void setEnums(List<String> enums) {\n-        this.enums = enums;\n-    }\n-\n-    public void setId(String id) {\n-        this.id = id;\n-    }\n-\n-    public void setItems(List<TypeDefinition> items) {\n-        this.items = items;\n-    }\n-\n-    public void setProperties(Map<String, TypeDefinition> properties) {\n-        this.properties = properties;\n-    }\n-\n-    public void setType(String type) {\n-        this.type = formatType(type);\n-    }\n-\n-    public void setTypeBuilderName(String typeBuilderName) {\n-        this.typeBuilderName = typeBuilderName;\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"TypeDefinition [id=\" + id + \", type=\" + type + \", properties=\" + properties + \", $ref=\" + $ref + \"]\";\n-    }\n-\n-    @Override\n-    public boolean equals(Object o) {\n-        if (this == o) {\n-            return true;\n-        }\n-        if (!(o instanceof TypeDefinition)) {\n-            return false;\n-        }\n-        TypeDefinition that = (TypeDefinition) o;\n-        return Objects.equals(getId(), that.getId()) &&\n-                Objects.equals(getType(), that.getType()) &&\n-                Objects.equals(getItems(), that.getItems()) &&\n-                Objects.equals(getEnums(), that.getEnums()) &&\n-                Objects.equals(get$ref(), that.get$ref()) &&\n-                Objects.equals(getProperties(), that.getProperties());\n-    }\n-\n-    @Override\n-    public int hashCode() {\n-        return Objects.hash(getId(), getType(), getItems(), getEnums(), get$ref(), getProperties());\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.definition.model;\r\n+\r\n+import com.google.gson.annotations.SerializedName;\r\n+\r\n+import java.io.Serializable;\r\n+import java.lang.reflect.ParameterizedType;\r\n+import java.util.ArrayList;\r\n+import java.util.HashMap;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Objects;\r\n+\r\n+import static org.apache.dubbo.common.utils.StringUtils.replace;\r\n+\r\n+/**\r\n+ * 2015/1/27.\r\n+ */\r\n+public class TypeDefinition implements Serializable {\r\n+\r\n+    private String id;\r\n+    private String type;\r\n+    @SerializedName(\"items\")\r\n+    private List<TypeDefinition> items;\r\n+    @SerializedName(\"enum\")\r\n+    private List<String> enums;\r\n+    private String $ref;\r\n+    private Map<String, TypeDefinition> properties;\r\n+    private String typeBuilderName;\r\n+\r\n+    public TypeDefinition() {\r\n+    }\r\n+\r\n+    public TypeDefinition(String type) {\r\n+        this.setType(type);\r\n+    }\r\n+\r\n+    /**\r\n+     * Format the {@link String} array presenting Java types\r\n+     *\r\n+     * @param types the strings presenting Java types\r\n+     * @return new String array of Java types after be formatted\r\n+     * @since 2.7.9\r\n+     */\r\n+    public static String[] formatTypes(String[] types) {\r\n+        String[] newTypes = new String[types.length];\r\n+        for (int i = 0; i < types.length; i++) {\r\n+            newTypes[i] = formatType(types[i]);\r\n+        }\r\n+        return newTypes;\r\n+    }\r\n+\r\n+    /**\r\n+     * Format the {@link String} presenting Java type\r\n+     *\r\n+     * @param type the String presenting type\r\n+     * @return new String presenting Java type after be formatted\r\n+     * @since 2.7.9\r\n+     */\r\n+    public static String formatType(String type) {\r\n+        if (isGenericType(type)) {\r\n+            return formatGenericType(type);\r\n+        }\r\n+        return type;\r\n+    }\r\n+\r\n+    /**\r\n+     * Replacing <code>\", \"</code> to <code>\",\"</code> will not change the semantic of\r\n+     * {@link ParameterizedType#toString()}\r\n+     *\r\n+     * @param type\r\n+     * @return formatted type\r\n+     * @see sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl\r\n+     */\r\n+    private static String formatGenericType(String type) {\r\n+        return replace(type, \", \", \",\");\r\n+    }\r\n+\r\n+    private static boolean isGenericType(String type) {\r\n+        return type.contains(\"<\") && type.contains(\">\");\r\n+    }\r\n+\r\n+    public String get$ref() {\r\n+        return $ref;\r\n+    }\r\n+\r\n+    public List<String> getEnums() {\r\n+        if (enums == null) {\r\n+            enums = new ArrayList<String>();\r\n+        }\r\n+        return enums;\r\n+    }\r\n+\r\n+    public String getId() {\r\n+        return id;\r\n+    }\r\n+\r\n+    public List<TypeDefinition> getItems() {\r\n+        if (items == null) {\r\n+            items = new ArrayList<>();\r\n+        }\r\n+        return items;\r\n+    }\r\n+\r\n+    public Map<String, TypeDefinition> getProperties() {\r\n+        if (properties == null) {\r\n+            properties = new HashMap<>();\r\n+        }\r\n+        return properties;\r\n+    }\r\n+\r\n+    public String getType() {\r\n+        return type;\r\n+    }\r\n+\r\n+    public String getTypeBuilderName() {\r\n+        return typeBuilderName;\r\n+    }\r\n+\r\n+    public void set$ref(String $ref) {\r\n+        this.$ref = $ref;\r\n+    }\r\n+\r\n+    public void setEnums(List<String> enums) {\r\n+        this.enums = enums;\r\n+    }\r\n+\r\n+    public void setId(String id) {\r\n+        this.id = id;\r\n+    }\r\n+\r\n+    public void setItems(List<TypeDefinition> items) {\r\n+        this.items = items;\r\n+    }\r\n+\r\n+    public void setProperties(Map<String, TypeDefinition> properties) {\r\n+        this.properties = properties;\r\n+    }\r\n+\r\n+    public void setType(String type) {\r\n+        this.type = formatType(type);\r\n+    }\r\n+\r\n+    public void setTypeBuilderName(String typeBuilderName) {\r\n+        this.typeBuilderName = typeBuilderName;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"TypeDefinition [id=\" + id + \", type=\" + type + \", properties=\" + properties + \", $ref=\" + $ref + \"]\";\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean equals(Object o) {\r\n+        if (this == o) {\r\n+            return true;\r\n+        }\r\n+        if (!(o instanceof TypeDefinition)) {\r\n+            return false;\r\n+        }\r\n+        TypeDefinition that = (TypeDefinition) o;\r\n+        return Objects.equals(getId(), that.getId()) &&\r\n+                Objects.equals(getType(), that.getType()) &&\r\n+                Objects.equals(getItems(), that.getItems()) &&\r\n+                Objects.equals(getEnums(), that.getEnums()) &&\r\n+                Objects.equals(get$ref(), that.get$ref()) &&\r\n+                Objects.equals(getProperties(), that.getProperties());\r\n+    }\r\n+\r\n+    @Override\r\n+    public int hashCode() {\r\n+        return Objects.hash(getId(), getType(), getItems(), getEnums(), get$ref(), getProperties());\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/definition/util/ClassUtils.java", "source2": "org/apache/dubbo/metadata/definition/util/ClassUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,111 +1,111 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.definition.util;\n-\n-import java.lang.reflect.Field;\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Modifier;\n-import java.net.URL;\n-import java.security.CodeSource;\n-import java.security.ProtectionDomain;\n-import java.util.ArrayList;\n-import java.util.List;\n-\n-/**\n- * 2015/1/27.\n- */\n-public final class ClassUtils {\n-\n-    /**\n-     * Get the code source file or class path of the Class passed in.\n-     *\n-     * @param clazz\n-     * @return Jar file name or class path.\n-     */\n-    public static String getCodeSource(Class<?> clazz) {\n-        ProtectionDomain protectionDomain = clazz.getProtectionDomain();\n-        if (protectionDomain == null || protectionDomain.getCodeSource() == null) {\n-            return null;\n-        }\n-\n-        CodeSource codeSource = clazz.getProtectionDomain().getCodeSource();\n-        URL location = codeSource.getLocation();\n-        if (location == null) {\n-            return null;\n-        }\n-\n-        String path = codeSource.getLocation().toExternalForm();\n-\n-        if (path.endsWith(\".jar\") && path.contains(\"/\")) {\n-            return path.substring(path.lastIndexOf('/') + 1);\n-        }\n-        return path;\n-    }\n-\n-    /**\n-     * Get all non-static fields of the Class passed in or its super classes.\n-     * <p>\n-     *\n-     * @param clazz Class to parse.\n-     * @return field list\n-     */\n-    public static List<Field> getNonStaticFields(final Class<?> clazz) {\n-        List<Field> result = new ArrayList<>();\n-        Class<?> target = clazz;\n-        while (target != null) {\n-            if (JaketConfigurationUtils.isExcludedType(target)) {\n-                break;\n-            }\n-\n-            Field[] fields = target.getDeclaredFields();\n-            for (Field field : fields) {\n-                int modifiers = field.getModifiers();\n-                if (Modifier.isStatic(modifiers) || Modifier.isTransient(modifiers)) {\n-                    continue;\n-                }\n-\n-                result.add(field);\n-            }\n-            target = target.getSuperclass();\n-        }\n-\n-        return result;\n-    }\n-\n-    /**\n-     * Get all public, non-static methods of the Class passed in.\n-     * <p>\n-     *\n-     * @param clazz Class to parse.\n-     * @return methods list\n-     */\n-    public static List<Method> getPublicNonStaticMethods(final Class<?> clazz) {\n-        List<Method> result = new ArrayList<Method>();\n-\n-        Method[] methods = clazz.getMethods();\n-        for (Method method : methods) {\n-            int mod = method.getModifiers();\n-            if (Modifier.isPublic(mod) && !Modifier.isStatic(mod)) {\n-                result.add(method);\n-            }\n-        }\n-        return result;\n-    }\n-\n-    private ClassUtils() {\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.definition.util;\r\n+\r\n+import java.lang.reflect.Field;\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Modifier;\r\n+import java.net.URL;\r\n+import java.security.CodeSource;\r\n+import java.security.ProtectionDomain;\r\n+import java.util.ArrayList;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * 2015/1/27.\r\n+ */\r\n+public final class ClassUtils {\r\n+\r\n+    /**\r\n+     * Get the code source file or class path of the Class passed in.\r\n+     *\r\n+     * @param clazz\r\n+     * @return Jar file name or class path.\r\n+     */\r\n+    public static String getCodeSource(Class<?> clazz) {\r\n+        ProtectionDomain protectionDomain = clazz.getProtectionDomain();\r\n+        if (protectionDomain == null || protectionDomain.getCodeSource() == null) {\r\n+            return null;\r\n+        }\r\n+\r\n+        CodeSource codeSource = clazz.getProtectionDomain().getCodeSource();\r\n+        URL location = codeSource.getLocation();\r\n+        if (location == null) {\r\n+            return null;\r\n+        }\r\n+\r\n+        String path = codeSource.getLocation().toExternalForm();\r\n+\r\n+        if (path.endsWith(\".jar\") && path.contains(\"/\")) {\r\n+            return path.substring(path.lastIndexOf('/') + 1);\r\n+        }\r\n+        return path;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all non-static fields of the Class passed in or its super classes.\r\n+     * <p>\r\n+     *\r\n+     * @param clazz Class to parse.\r\n+     * @return field list\r\n+     */\r\n+    public static List<Field> getNonStaticFields(final Class<?> clazz) {\r\n+        List<Field> result = new ArrayList<>();\r\n+        Class<?> target = clazz;\r\n+        while (target != null) {\r\n+            if (JaketConfigurationUtils.isExcludedType(target)) {\r\n+                break;\r\n+            }\r\n+\r\n+            Field[] fields = target.getDeclaredFields();\r\n+            for (Field field : fields) {\r\n+                int modifiers = field.getModifiers();\r\n+                if (Modifier.isStatic(modifiers) || Modifier.isTransient(modifiers)) {\r\n+                    continue;\r\n+                }\r\n+\r\n+                result.add(field);\r\n+            }\r\n+            target = target.getSuperclass();\r\n+        }\r\n+\r\n+        return result;\r\n+    }\r\n+\r\n+    /**\r\n+     * Get all public, non-static methods of the Class passed in.\r\n+     * <p>\r\n+     *\r\n+     * @param clazz Class to parse.\r\n+     * @return methods list\r\n+     */\r\n+    public static List<Method> getPublicNonStaticMethods(final Class<?> clazz) {\r\n+        List<Method> result = new ArrayList<Method>();\r\n+\r\n+        Method[] methods = clazz.getMethods();\r\n+        for (Method method : methods) {\r\n+            int mod = method.getModifiers();\r\n+            if (Modifier.isPublic(mod) && !Modifier.isStatic(mod)) {\r\n+                result.add(method);\r\n+            }\r\n+        }\r\n+        return result;\r\n+    }\r\n+\r\n+    private ClassUtils() {\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/definition/util/JaketConfigurationUtils.java", "source2": "org/apache/dubbo/metadata/definition/util/JaketConfigurationUtils.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,102 +1,102 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.definition.util;\n-\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import java.io.InputStream;\n-import java.util.Properties;\n-\n-/**\n- * 2015/1/27.\n- */\n-public class JaketConfigurationUtils {\n-\n-    private static final String CONFIGURATION_FILE = \"jaket.properties\";\n-\n-    private static String[] includedInterfacePackages;\n-    private static String[] includedTypePackages;\n-    private static String[] closedTypes;\n-\n-    static {\n-        Properties props = new Properties();\n-        InputStream inStream = JaketConfigurationUtils.class.getClassLoader().getResourceAsStream(CONFIGURATION_FILE);\n-        try {\n-            props.load(inStream);\n-            String value = (String) props.get(\"included_interface_packages\");\n-            if (StringUtils.isNotEmpty(value)) {\n-                includedInterfacePackages = value.split(\",\");\n-            }\n-\n-            value = props.getProperty(\"included_type_packages\");\n-            if (StringUtils.isNotEmpty(value)) {\n-                includedTypePackages = value.split(\",\");\n-            }\n-\n-            value = props.getProperty(\"closed_types\");\n-            if (StringUtils.isNotEmpty(value)) {\n-                closedTypes = value.split(\",\");\n-            }\n-\n-        } catch (Throwable e) {\n-            // Ignore it.\n-        }\n-    }\n-\n-    public static boolean isExcludedInterface(Class<?> clazz) {\n-        if (includedInterfacePackages == null || includedInterfacePackages.length == 0) {\n-            return false;\n-        }\n-\n-        for (String packagePrefix : includedInterfacePackages) {\n-            if (clazz.getCanonicalName().startsWith(packagePrefix)) {\n-                return false;\n-            }\n-        }\n-\n-        return true;\n-    }\n-\n-    public static boolean isExcludedType(Class<?> clazz) {\n-        if (includedTypePackages == null || includedTypePackages.length == 0) {\n-            return false;\n-        }\n-\n-        for (String packagePrefix : includedTypePackages) {\n-            if (clazz.getCanonicalName().startsWith(packagePrefix)) {\n-                return false;\n-            }\n-        }\n-\n-        return true;\n-    }\n-\n-    public static boolean needAnalyzing(Class<?> clazz) {\n-        String canonicalName = clazz.getCanonicalName();\n-\n-        if (closedTypes != null && closedTypes.length > 0) {\n-            for (String type : closedTypes) {\n-                if (canonicalName.startsWith(type)) {\n-                    return false;\n-                }\n-            }\n-        }\n-\n-        return !isExcludedType(clazz);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.definition.util;\r\n+\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import java.io.InputStream;\r\n+import java.util.Properties;\r\n+\r\n+/**\r\n+ * 2015/1/27.\r\n+ */\r\n+public class JaketConfigurationUtils {\r\n+\r\n+    private static final String CONFIGURATION_FILE = \"jaket.properties\";\r\n+\r\n+    private static String[] includedInterfacePackages;\r\n+    private static String[] includedTypePackages;\r\n+    private static String[] closedTypes;\r\n+\r\n+    static {\r\n+        Properties props = new Properties();\r\n+        InputStream inStream = JaketConfigurationUtils.class.getClassLoader().getResourceAsStream(CONFIGURATION_FILE);\r\n+        try {\r\n+            props.load(inStream);\r\n+            String value = (String) props.get(\"included_interface_packages\");\r\n+            if (StringUtils.isNotEmpty(value)) {\r\n+                includedInterfacePackages = value.split(\",\");\r\n+            }\r\n+\r\n+            value = props.getProperty(\"included_type_packages\");\r\n+            if (StringUtils.isNotEmpty(value)) {\r\n+                includedTypePackages = value.split(\",\");\r\n+            }\r\n+\r\n+            value = props.getProperty(\"closed_types\");\r\n+            if (StringUtils.isNotEmpty(value)) {\r\n+                closedTypes = value.split(\",\");\r\n+            }\r\n+\r\n+        } catch (Throwable e) {\r\n+            // Ignore it.\r\n+        }\r\n+    }\r\n+\r\n+    public static boolean isExcludedInterface(Class<?> clazz) {\r\n+        if (includedInterfacePackages == null || includedInterfacePackages.length == 0) {\r\n+            return false;\r\n+        }\r\n+\r\n+        for (String packagePrefix : includedInterfacePackages) {\r\n+            if (clazz.getCanonicalName().startsWith(packagePrefix)) {\r\n+                return false;\r\n+            }\r\n+        }\r\n+\r\n+        return true;\r\n+    }\r\n+\r\n+    public static boolean isExcludedType(Class<?> clazz) {\r\n+        if (includedTypePackages == null || includedTypePackages.length == 0) {\r\n+            return false;\r\n+        }\r\n+\r\n+        for (String packagePrefix : includedTypePackages) {\r\n+            if (clazz.getCanonicalName().startsWith(packagePrefix)) {\r\n+                return false;\r\n+            }\r\n+        }\r\n+\r\n+        return true;\r\n+    }\r\n+\r\n+    public static boolean needAnalyzing(Class<?> clazz) {\r\n+        String canonicalName = clazz.getCanonicalName();\r\n+\r\n+        if (closedTypes != null && closedTypes.length > 0) {\r\n+            for (String type : closedTypes) {\r\n+                if (canonicalName.startsWith(type)) {\r\n+                    return false;\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        return !isExcludedType(clazz);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/report/MetadataReport.java", "source2": "org/apache/dubbo/metadata/report/MetadataReport.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,77 +1,77 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.report;\n-\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.metadata.MappingListener;\n-import org.apache.dubbo.metadata.MetadataInfo;\n-import org.apache.dubbo.metadata.definition.model.ServiceDefinition;\n-import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\n-\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-\n-public interface MetadataReport {\n-    /**\n-     * Service Definition -- START\n-     **/\n-    void storeProviderMetadata(MetadataIdentifier providerMetadataIdentifier, ServiceDefinition serviceDefinition);\n-\n-    String getServiceDefinition(MetadataIdentifier metadataIdentifier);\n-\n-    /**\n-     * Application Metadata -- START\n-     **/\n-    default void publishAppMetadata(SubscriberMetadataIdentifier identifier, MetadataInfo metadataInfo) {\n-    }\n-\n-    default MetadataInfo getAppMetadata(SubscriberMetadataIdentifier identifier, Map<String, String> instanceMetadata) {\n-        return null;\n-    }\n-\n-    /**\n-     * Service<-->Application Mapping -- START\n-     **/\n-    default Set<String> getServiceAppMapping(String serviceKey, MappingListener listener, URL url) {\n-        return Collections.emptySet();\n-    }\n-\n-    default void registerServiceAppMapping(String serviceKey, String application, URL url) {\n-        return;\n-    }\n-\n-    /**\n-     * deprecated or need triage\n-     **/\n-    void storeConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, Map<String, String> serviceParameterMap);\n-\n-    List<String> getExportedURLs(ServiceMetadataIdentifier metadataIdentifier);\n-\n-    void saveServiceMetadata(ServiceMetadataIdentifier metadataIdentifier, URL url);\n-\n-    void removeServiceMetadata(ServiceMetadataIdentifier metadataIdentifier);\n-\n-    void saveSubscribedData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, Set<String> urls);\n-\n-    List<String> getSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.report;\r\n+\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.metadata.MappingListener;\r\n+import org.apache.dubbo.metadata.MetadataInfo;\r\n+import org.apache.dubbo.metadata.definition.model.ServiceDefinition;\r\n+import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\r\n+\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+\r\n+public interface MetadataReport {\r\n+    /**\r\n+     * Service Definition -- START\r\n+     **/\r\n+    void storeProviderMetadata(MetadataIdentifier providerMetadataIdentifier, ServiceDefinition serviceDefinition);\r\n+\r\n+    String getServiceDefinition(MetadataIdentifier metadataIdentifier);\r\n+\r\n+    /**\r\n+     * Application Metadata -- START\r\n+     **/\r\n+    default void publishAppMetadata(SubscriberMetadataIdentifier identifier, MetadataInfo metadataInfo) {\r\n+    }\r\n+\r\n+    default MetadataInfo getAppMetadata(SubscriberMetadataIdentifier identifier, Map<String, String> instanceMetadata) {\r\n+        return null;\r\n+    }\r\n+\r\n+    /**\r\n+     * Service<-->Application Mapping -- START\r\n+     **/\r\n+    default Set<String> getServiceAppMapping(String serviceKey, MappingListener listener, URL url) {\r\n+        return Collections.emptySet();\r\n+    }\r\n+\r\n+    default void registerServiceAppMapping(String serviceKey, String application, URL url) {\r\n+        return;\r\n+    }\r\n+\r\n+    /**\r\n+     * deprecated or need triage\r\n+     **/\r\n+    void storeConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, Map<String, String> serviceParameterMap);\r\n+\r\n+    List<String> getExportedURLs(ServiceMetadataIdentifier metadataIdentifier);\r\n+\r\n+    void saveServiceMetadata(ServiceMetadataIdentifier metadataIdentifier, URL url);\r\n+\r\n+    void removeServiceMetadata(ServiceMetadataIdentifier metadataIdentifier);\r\n+\r\n+    void saveSubscribedData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, Set<String> urls);\r\n+\r\n+    List<String> getSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/report/MetadataReportFactory.java", "source2": "org/apache/dubbo/metadata/report/MetadataReportFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,30 +1,30 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.report;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.Adaptive;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-/**\n- */\n-@SPI(\"redis\")\n-public interface MetadataReportFactory {\n-\n-    @Adaptive({\"protocol\"})\n-    MetadataReport getMetadataReport(URL url);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.report;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.Adaptive;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+/**\r\n+ */\r\n+@SPI(\"redis\")\r\n+public interface MetadataReportFactory {\r\n+\r\n+    @Adaptive({\"protocol\"})\r\n+    MetadataReport getMetadataReport(URL url);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/report/MetadataReportInstance.java", "source2": "org/apache/dubbo/metadata/report/MetadataReportInstance.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,86 +1,86 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.report;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.URLBuilder;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.config.MetadataReportConfig;\n-import org.apache.dubbo.rpc.model.ApplicationModel;\n-\n-import java.util.HashMap;\n-import java.util.Map;\n-import java.util.concurrent.atomic.AtomicBoolean;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_DIRECTORY;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_KEY;\n-import static org.apache.dubbo.metadata.report.support.Constants.METADATA_REPORT_KEY;\n-\n-/**\n- * 2019-08-09\n- */\n-public class MetadataReportInstance {\n-\n-    private static AtomicBoolean init = new AtomicBoolean(false);\n-\n-    private static final Map<String, MetadataReport> metadataReports = new HashMap<>();\n-\n-    public static void init(MetadataReportConfig config) {\n-        if (init.get()) {\n-            return;\n-        }\n-        MetadataReportFactory metadataReportFactory = ExtensionLoader.getExtensionLoader(MetadataReportFactory.class).getAdaptiveExtension();\n-        URL url = config.toUrl();\n-        if (METADATA_REPORT_KEY.equals(url.getProtocol())) {\n-            String protocol = url.getParameter(METADATA_REPORT_KEY, DEFAULT_DIRECTORY);\n-            url = URLBuilder.from(url)\n-                    .setProtocol(protocol)\n-                    .removeParameter(METADATA_REPORT_KEY)\n-                    .build();\n-        }\n-        url = url.addParameterIfAbsent(APPLICATION_KEY, ApplicationModel.getApplicationConfig().getName());\n-        String relatedRegistryId = config.getRegistry() == null ? DEFAULT_KEY : config.getRegistry();\n-//        RegistryConfig registryConfig = ApplicationModel.getConfigManager().getRegistry(relatedRegistryId)\n-//                .orElseThrow(() -> new IllegalStateException(\"Registry id \" + relatedRegistryId + \" does not exist.\"));\n-        metadataReports.put(relatedRegistryId, metadataReportFactory.getMetadataReport(url));\n-        init.set(true);\n-    }\n-\n-    public static Map<String, MetadataReport> getMetadataReports(boolean checked) {\n-        if (checked) {\n-            checkInit();\n-        }\n-        return metadataReports;\n-    }\n-\n-    public static MetadataReport getMetadataReport(String registryKey) {\n-        checkInit();\n-        MetadataReport metadataReport = metadataReports.get(registryKey);\n-        if (metadataReport == null) {\n-            metadataReport = metadataReports.values().iterator().next();\n-        }\n-        return metadataReport;\n-    }\n-\n-\n-    private static void checkInit() {\n-        if (!init.get()) {\n-            throw new IllegalStateException(\"the metadata report was not inited.\");\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.report;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.URLBuilder;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.config.MetadataReportConfig;\r\n+import org.apache.dubbo.rpc.model.ApplicationModel;\r\n+\r\n+import java.util.HashMap;\r\n+import java.util.Map;\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_DIRECTORY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_KEY;\r\n+import static org.apache.dubbo.metadata.report.support.Constants.METADATA_REPORT_KEY;\r\n+\r\n+/**\r\n+ * 2019-08-09\r\n+ */\r\n+public class MetadataReportInstance {\r\n+\r\n+    private static AtomicBoolean init = new AtomicBoolean(false);\r\n+\r\n+    private static final Map<String, MetadataReport> metadataReports = new HashMap<>();\r\n+\r\n+    public static void init(MetadataReportConfig config) {\r\n+        if (init.get()) {\r\n+            return;\r\n+        }\r\n+        MetadataReportFactory metadataReportFactory = ExtensionLoader.getExtensionLoader(MetadataReportFactory.class).getAdaptiveExtension();\r\n+        URL url = config.toUrl();\r\n+        if (METADATA_REPORT_KEY.equals(url.getProtocol())) {\r\n+            String protocol = url.getParameter(METADATA_REPORT_KEY, DEFAULT_DIRECTORY);\r\n+            url = URLBuilder.from(url)\r\n+                    .setProtocol(protocol)\r\n+                    .removeParameter(METADATA_REPORT_KEY)\r\n+                    .build();\r\n+        }\r\n+        url = url.addParameterIfAbsent(APPLICATION_KEY, ApplicationModel.getApplicationConfig().getName());\r\n+        String relatedRegistryId = config.getRegistry() == null ? DEFAULT_KEY : config.getRegistry();\r\n+//        RegistryConfig registryConfig = ApplicationModel.getConfigManager().getRegistry(relatedRegistryId)\r\n+//                .orElseThrow(() -> new IllegalStateException(\"Registry id \" + relatedRegistryId + \" does not exist.\"));\r\n+        metadataReports.put(relatedRegistryId, metadataReportFactory.getMetadataReport(url));\r\n+        init.set(true);\r\n+    }\r\n+\r\n+    public static Map<String, MetadataReport> getMetadataReports(boolean checked) {\r\n+        if (checked) {\r\n+            checkInit();\r\n+        }\r\n+        return metadataReports;\r\n+    }\r\n+\r\n+    public static MetadataReport getMetadataReport(String registryKey) {\r\n+        checkInit();\r\n+        MetadataReport metadataReport = metadataReports.get(registryKey);\r\n+        if (metadataReport == null) {\r\n+            metadataReport = metadataReports.values().iterator().next();\r\n+        }\r\n+        return metadataReport;\r\n+    }\r\n+\r\n+\r\n+    private static void checkInit() {\r\n+        if (!init.get()) {\r\n+            throw new IllegalStateException(\"the metadata report was not inited.\");\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/report/identifier/BaseApplicationMetadataIdentifier.java", "source2": "org/apache/dubbo/metadata/report/identifier/BaseApplicationMetadataIdentifier.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,63 +1,63 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.report.identifier;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\n-import static org.apache.dubbo.common.utils.PathUtils.buildPath;\n-import static org.apache.dubbo.metadata.MetadataConstants.DEFAULT_PATH_TAG;\n-import static org.apache.dubbo.metadata.MetadataConstants.KEY_SEPARATOR;\n-\n-/**\n- * The Base class of MetadataIdentifier for service scope\n- * <p>\n- * 2019-08-09\n- */\n-public class BaseApplicationMetadataIdentifier {\n-    String application;\n-\n-    String getUniqueKey(KeyTypeEnum keyType, String... params) {\n-        if (keyType == KeyTypeEnum.PATH) {\n-            return getFilePathKey(params);\n-        }\n-        return getIdentifierKey(params);\n-    }\n-\n-    String getIdentifierKey(String... params) {\n-        return application + joinParams(KEY_SEPARATOR, params);\n-    }\n-\n-    private String joinParams(String joinChar, String... params) {\n-        if (params == null || params.length == 0) {\n-            return \"\";\n-        }\n-        StringBuilder sb = new StringBuilder();\n-        for (String param : params) {\n-            sb.append(joinChar);\n-            sb.append(param);\n-        }\n-        return sb.toString();\n-    }\n-\n-    private String getFilePathKey(String... params) {\n-        return getFilePathKey(DEFAULT_PATH_TAG, params);\n-    }\n-\n-    private String getFilePathKey(String pathTag, String... params) {\n-        return buildPath(pathTag, application, joinParams(PATH_SEPARATOR, params));\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.report.identifier;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\r\n+import static org.apache.dubbo.common.utils.PathUtils.buildPath;\r\n+import static org.apache.dubbo.metadata.MetadataConstants.DEFAULT_PATH_TAG;\r\n+import static org.apache.dubbo.metadata.MetadataConstants.KEY_SEPARATOR;\r\n+\r\n+/**\r\n+ * The Base class of MetadataIdentifier for service scope\r\n+ * <p>\r\n+ * 2019-08-09\r\n+ */\r\n+public class BaseApplicationMetadataIdentifier {\r\n+    String application;\r\n+\r\n+    String getUniqueKey(KeyTypeEnum keyType, String... params) {\r\n+        if (keyType == KeyTypeEnum.PATH) {\r\n+            return getFilePathKey(params);\r\n+        }\r\n+        return getIdentifierKey(params);\r\n+    }\r\n+\r\n+    String getIdentifierKey(String... params) {\r\n+        return application + joinParams(KEY_SEPARATOR, params);\r\n+    }\r\n+\r\n+    private String joinParams(String joinChar, String... params) {\r\n+        if (params == null || params.length == 0) {\r\n+            return \"\";\r\n+        }\r\n+        StringBuilder sb = new StringBuilder();\r\n+        for (String param : params) {\r\n+            sb.append(joinChar);\r\n+            sb.append(param);\r\n+        }\r\n+        return sb.toString();\r\n+    }\r\n+\r\n+    private String getFilePathKey(String... params) {\r\n+        return getFilePathKey(DEFAULT_PATH_TAG, params);\r\n+    }\r\n+\r\n+    private String getFilePathKey(String pathTag, String... params) {\r\n+        return buildPath(pathTag, application, joinParams(PATH_SEPARATOR, params));\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/report/identifier/BaseMetadataIdentifier.java", "source2": "org/apache/dubbo/metadata/report/identifier/BaseMetadataIdentifier.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,25 +1,25 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.report.identifier;\n-\n-public interface BaseMetadataIdentifier {\n-\n-    String getUniqueKey(KeyTypeEnum keyType);\n-\n-    String getIdentifierKey();\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.report.identifier;\r\n+\r\n+public interface BaseMetadataIdentifier {\r\n+\r\n+    String getUniqueKey(KeyTypeEnum keyType);\r\n+\r\n+    String getIdentifierKey();\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/report/identifier/BaseServiceMetadataIdentifier.java", "source2": "org/apache/dubbo/metadata/report/identifier/BaseServiceMetadataIdentifier.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,88 +1,88 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.report.identifier;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.StringUtils;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\n-import static org.apache.dubbo.metadata.MetadataConstants.DEFAULT_PATH_TAG;\n-import static org.apache.dubbo.metadata.MetadataConstants.KEY_SEPARATOR;\n-\n-/**\n- * The Base class of MetadataIdentifier for service scope\n- * <p>\n- * 2019-08-09\n- */\n-public class BaseServiceMetadataIdentifier {\n-    String serviceInterface;\n-    String version;\n-    String group;\n-    String side;\n-\n-    String getUniqueKey(KeyTypeEnum keyType, String... params) {\n-        if (keyType == KeyTypeEnum.PATH) {\n-            return getFilePathKey(params);\n-        }\n-        return getIdentifierKey(params);\n-    }\n-\n-    String getIdentifierKey(String... params) {\n-\n-        return serviceInterface\n-                + KEY_SEPARATOR + (version == null ? \"\" : version)\n-                + KEY_SEPARATOR + (group == null ? \"\" : group)\n-                + KEY_SEPARATOR + (side == null ? \"\" : side)\n-                + joinParams(KEY_SEPARATOR, params);\n-    }\n-\n-    private String joinParams(String joinChar, String... params) {\n-        if (params == null || params.length == 0) {\n-            return \"\";\n-        }\n-        StringBuilder sb = new StringBuilder();\n-        for (String param : params) {\n-            if (param == null) {\n-                continue;\n-            }\n-            sb.append(joinChar);\n-            sb.append(param);\n-        }\n-        return sb.toString();\n-    }\n-\n-    private String getFilePathKey(String... params) {\n-        return getFilePathKey(DEFAULT_PATH_TAG, params);\n-    }\n-\n-    private String getFilePathKey(String pathTag, String... params) {\n-        return pathTag\n-                + (StringUtils.isEmpty(toServicePath()) ? \"\" : (PATH_SEPARATOR + toServicePath()))\n-                + (version == null ? \"\" : (PATH_SEPARATOR + version))\n-                + (group == null ? \"\" : (PATH_SEPARATOR + group))\n-                + (side == null ? \"\" : (PATH_SEPARATOR + side))\n-                + joinParams(PATH_SEPARATOR, params);\n-    }\n-\n-    public String toServicePath() {\n-        if (ANY_VALUE.equals(serviceInterface)) {\n-            return \"\";\n-        }\n-        return URL.encode(serviceInterface);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.report.identifier;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\r\n+import static org.apache.dubbo.metadata.MetadataConstants.DEFAULT_PATH_TAG;\r\n+import static org.apache.dubbo.metadata.MetadataConstants.KEY_SEPARATOR;\r\n+\r\n+/**\r\n+ * The Base class of MetadataIdentifier for service scope\r\n+ * <p>\r\n+ * 2019-08-09\r\n+ */\r\n+public class BaseServiceMetadataIdentifier {\r\n+    String serviceInterface;\r\n+    String version;\r\n+    String group;\r\n+    String side;\r\n+\r\n+    String getUniqueKey(KeyTypeEnum keyType, String... params) {\r\n+        if (keyType == KeyTypeEnum.PATH) {\r\n+            return getFilePathKey(params);\r\n+        }\r\n+        return getIdentifierKey(params);\r\n+    }\r\n+\r\n+    String getIdentifierKey(String... params) {\r\n+\r\n+        return serviceInterface\r\n+                + KEY_SEPARATOR + (version == null ? \"\" : version)\r\n+                + KEY_SEPARATOR + (group == null ? \"\" : group)\r\n+                + KEY_SEPARATOR + (side == null ? \"\" : side)\r\n+                + joinParams(KEY_SEPARATOR, params);\r\n+    }\r\n+\r\n+    private String joinParams(String joinChar, String... params) {\r\n+        if (params == null || params.length == 0) {\r\n+            return \"\";\r\n+        }\r\n+        StringBuilder sb = new StringBuilder();\r\n+        for (String param : params) {\r\n+            if (param == null) {\r\n+                continue;\r\n+            }\r\n+            sb.append(joinChar);\r\n+            sb.append(param);\r\n+        }\r\n+        return sb.toString();\r\n+    }\r\n+\r\n+    private String getFilePathKey(String... params) {\r\n+        return getFilePathKey(DEFAULT_PATH_TAG, params);\r\n+    }\r\n+\r\n+    private String getFilePathKey(String pathTag, String... params) {\r\n+        return pathTag\r\n+                + (StringUtils.isEmpty(toServicePath()) ? \"\" : (PATH_SEPARATOR + toServicePath()))\r\n+                + (version == null ? \"\" : (PATH_SEPARATOR + version))\r\n+                + (group == null ? \"\" : (PATH_SEPARATOR + group))\r\n+                + (side == null ? \"\" : (PATH_SEPARATOR + side))\r\n+                + joinParams(PATH_SEPARATOR, params);\r\n+    }\r\n+\r\n+    public String toServicePath() {\r\n+        if (ANY_VALUE.equals(serviceInterface)) {\r\n+            return \"\";\r\n+        }\r\n+        return URL.encode(serviceInterface);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/report/identifier/KeyTypeEnum.java", "source2": "org/apache/dubbo/metadata/report/identifier/KeyTypeEnum.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,62 +1,62 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.report.identifier;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\n-import static org.apache.dubbo.common.utils.PathUtils.buildPath;\n-import static org.apache.dubbo.common.utils.StringUtils.EMPTY_STRING;\n-import static org.apache.dubbo.common.utils.StringUtils.isBlank;\n-import static org.apache.dubbo.metadata.MetadataConstants.KEY_SEPARATOR;\n-\n-/**\n- * 2019-08-15\n- */\n-public enum KeyTypeEnum {\n-\n-    PATH(PATH_SEPARATOR) {\n-        public String build(String one, String... others) {\n-            return buildPath(one, others);\n-        }\n-    },\n-\n-    UNIQUE_KEY(KEY_SEPARATOR) {\n-        public String build(String one, String... others) {\n-            StringBuilder keyBuilder = new StringBuilder(one);\n-            for (String other : others) {\n-                keyBuilder.append(separator).append(isBlank(other) ? EMPTY_STRING : other);\n-            }\n-            return keyBuilder.toString();\n-        }\n-    };\n-\n-    final String separator;\n-\n-    KeyTypeEnum(String separator) {\n-        this.separator = separator;\n-    }\n-\n-    /**\n-     * Build Key\n-     *\n-     * @param one    one\n-     * @param others the others\n-     * @return\n-     * @since 2.7.8\n-     */\n-    public abstract String build(String one, String... others);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.report.identifier;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\r\n+import static org.apache.dubbo.common.utils.PathUtils.buildPath;\r\n+import static org.apache.dubbo.common.utils.StringUtils.EMPTY_STRING;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isBlank;\r\n+import static org.apache.dubbo.metadata.MetadataConstants.KEY_SEPARATOR;\r\n+\r\n+/**\r\n+ * 2019-08-15\r\n+ */\r\n+public enum KeyTypeEnum {\r\n+\r\n+    PATH(PATH_SEPARATOR) {\r\n+        public String build(String one, String... others) {\r\n+            return buildPath(one, others);\r\n+        }\r\n+    },\r\n+\r\n+    UNIQUE_KEY(KEY_SEPARATOR) {\r\n+        public String build(String one, String... others) {\r\n+            StringBuilder keyBuilder = new StringBuilder(one);\r\n+            for (String other : others) {\r\n+                keyBuilder.append(separator).append(isBlank(other) ? EMPTY_STRING : other);\r\n+            }\r\n+            return keyBuilder.toString();\r\n+        }\r\n+    };\r\n+\r\n+    final String separator;\r\n+\r\n+    KeyTypeEnum(String separator) {\r\n+        this.separator = separator;\r\n+    }\r\n+\r\n+    /**\r\n+     * Build Key\r\n+     *\r\n+     * @param one    one\r\n+     * @param others the others\r\n+     * @return\r\n+     * @since 2.7.8\r\n+     */\r\n+    public abstract String build(String one, String... others);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/report/identifier/MetadataIdentifier.java", "source2": "org/apache/dubbo/metadata/report/identifier/MetadataIdentifier.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,105 +1,105 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.report.identifier;\n-\n-import org.apache.dubbo.common.URL;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-\n-/**\n- * The MetadataIdentifier is used to store method descriptor.\n- * <p>\n- * The name of class is reserved because of it has been used in the previous version.\n- * <p>\n- * 2018/10/25\n- */\n-public class MetadataIdentifier extends BaseServiceMetadataIdentifier implements BaseMetadataIdentifier {\n-\n-    private String application;\n-\n-    public MetadataIdentifier() {\n-    }\n-\n-    public MetadataIdentifier(String serviceInterface, String version, String group, String side, String application) {\n-        this.serviceInterface = serviceInterface;\n-        this.version = version;\n-        this.group = group;\n-        this.side = side;\n-        this.application = application;\n-    }\n-\n-\n-    public MetadataIdentifier(URL url) {\n-        this.serviceInterface = url.getServiceInterface();\n-        this.version = url.getParameter(VERSION_KEY);\n-        this.group = url.getParameter(GROUP_KEY);\n-        this.side = url.getParameter(SIDE_KEY);\n-        setApplication(url.getParameter(APPLICATION_KEY));\n-    }\n-\n-    public String getUniqueKey(KeyTypeEnum keyType) {\n-        return super.getUniqueKey(keyType, application);\n-    }\n-\n-    public String getIdentifierKey() {\n-        return super.getIdentifierKey(application);\n-    }\n-\n-    public String getServiceInterface() {\n-        return serviceInterface;\n-    }\n-\n-    public void setServiceInterface(String serviceInterface) {\n-        this.serviceInterface = serviceInterface;\n-    }\n-\n-    public String getVersion() {\n-        return version;\n-    }\n-\n-    public void setVersion(String version) {\n-        this.version = version;\n-    }\n-\n-    public String getGroup() {\n-        return group;\n-    }\n-\n-    public void setGroup(String group) {\n-        this.group = group;\n-    }\n-\n-    public String getSide() {\n-        return side;\n-    }\n-\n-    public void setSide(String side) {\n-        this.side = side;\n-    }\n-\n-    public String getApplication() {\n-        return application;\n-    }\n-\n-    public void setApplication(String application) {\n-        this.application = application;\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.report.identifier;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+\r\n+/**\r\n+ * The MetadataIdentifier is used to store method descriptor.\r\n+ * <p>\r\n+ * The name of class is reserved because of it has been used in the previous version.\r\n+ * <p>\r\n+ * 2018/10/25\r\n+ */\r\n+public class MetadataIdentifier extends BaseServiceMetadataIdentifier implements BaseMetadataIdentifier {\r\n+\r\n+    private String application;\r\n+\r\n+    public MetadataIdentifier() {\r\n+    }\r\n+\r\n+    public MetadataIdentifier(String serviceInterface, String version, String group, String side, String application) {\r\n+        this.serviceInterface = serviceInterface;\r\n+        this.version = version;\r\n+        this.group = group;\r\n+        this.side = side;\r\n+        this.application = application;\r\n+    }\r\n+\r\n+\r\n+    public MetadataIdentifier(URL url) {\r\n+        this.serviceInterface = url.getServiceInterface();\r\n+        this.version = url.getParameter(VERSION_KEY);\r\n+        this.group = url.getParameter(GROUP_KEY);\r\n+        this.side = url.getParameter(SIDE_KEY);\r\n+        setApplication(url.getParameter(APPLICATION_KEY));\r\n+    }\r\n+\r\n+    public String getUniqueKey(KeyTypeEnum keyType) {\r\n+        return super.getUniqueKey(keyType, application);\r\n+    }\r\n+\r\n+    public String getIdentifierKey() {\r\n+        return super.getIdentifierKey(application);\r\n+    }\r\n+\r\n+    public String getServiceInterface() {\r\n+        return serviceInterface;\r\n+    }\r\n+\r\n+    public void setServiceInterface(String serviceInterface) {\r\n+        this.serviceInterface = serviceInterface;\r\n+    }\r\n+\r\n+    public String getVersion() {\r\n+        return version;\r\n+    }\r\n+\r\n+    public void setVersion(String version) {\r\n+        this.version = version;\r\n+    }\r\n+\r\n+    public String getGroup() {\r\n+        return group;\r\n+    }\r\n+\r\n+    public void setGroup(String group) {\r\n+        this.group = group;\r\n+    }\r\n+\r\n+    public String getSide() {\r\n+        return side;\r\n+    }\r\n+\r\n+    public void setSide(String side) {\r\n+        this.side = side;\r\n+    }\r\n+\r\n+    public String getApplication() {\r\n+        return application;\r\n+    }\r\n+\r\n+    public void setApplication(String application) {\r\n+        this.application = application;\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/report/identifier/ServiceMetadataIdentifier.java", "source2": "org/apache/dubbo/metadata/report/identifier/ServiceMetadataIdentifier.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,85 +1,85 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.report.identifier;\n-\n-import org.apache.dubbo.common.URL;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\n-import static org.apache.dubbo.metadata.MetadataConstants.KEY_REVISION_PREFIX;\n-\n-/**\n- * The ServiceMetadataIdentifier is used to store the {@link org.apache.dubbo.common.URL}\n- * that are from provider and consumer\n- * <p>\n- * 2019-08-09\n- */\n-public class ServiceMetadataIdentifier extends BaseServiceMetadataIdentifier implements BaseMetadataIdentifier {\n-\n-    private String revision;\n-    private String protocol;\n-\n-    public ServiceMetadataIdentifier() {\n-    }\n-\n-    public ServiceMetadataIdentifier(String serviceInterface, String version, String group, String side, String revision, String protocol) {\n-        this.serviceInterface = serviceInterface;\n-        this.version = version;\n-        this.group = group;\n-        this.side = side;\n-        this.revision = revision;\n-        this.protocol = protocol;\n-    }\n-\n-\n-    public ServiceMetadataIdentifier(URL url) {\n-        this.serviceInterface = url.getServiceInterface();\n-        this.version = url.getParameter(VERSION_KEY);\n-        this.group = url.getParameter(GROUP_KEY);\n-        this.side = url.getParameter(SIDE_KEY);\n-        this.protocol = url.getProtocol();\n-    }\n-\n-    public String getUniqueKey(KeyTypeEnum keyType) {\n-        return super.getUniqueKey(keyType, protocol, KEY_REVISION_PREFIX + revision);\n-    }\n-\n-    public String getIdentifierKey() {\n-        return super.getIdentifierKey(protocol, KEY_REVISION_PREFIX + revision);\n-    }\n-\n-    public void setRevision(String revision) {\n-        this.revision = revision;\n-    }\n-\n-    public void setProtocol(String protocol) {\n-        this.protocol = protocol;\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"ServiceMetadataIdentifier{\" +\n-                \"revision='\" + revision + '\\'' +\n-                \", protocol='\" + protocol + '\\'' +\n-                \", serviceInterface='\" + serviceInterface + '\\'' +\n-                \", version='\" + version + '\\'' +\n-                \", group='\" + group + '\\'' +\n-                \", side='\" + side + '\\'' +\n-                \"} \" + super.toString();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.report.identifier;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY;\r\n+import static org.apache.dubbo.metadata.MetadataConstants.KEY_REVISION_PREFIX;\r\n+\r\n+/**\r\n+ * The ServiceMetadataIdentifier is used to store the {@link org.apache.dubbo.common.URL}\r\n+ * that are from provider and consumer\r\n+ * <p>\r\n+ * 2019-08-09\r\n+ */\r\n+public class ServiceMetadataIdentifier extends BaseServiceMetadataIdentifier implements BaseMetadataIdentifier {\r\n+\r\n+    private String revision;\r\n+    private String protocol;\r\n+\r\n+    public ServiceMetadataIdentifier() {\r\n+    }\r\n+\r\n+    public ServiceMetadataIdentifier(String serviceInterface, String version, String group, String side, String revision, String protocol) {\r\n+        this.serviceInterface = serviceInterface;\r\n+        this.version = version;\r\n+        this.group = group;\r\n+        this.side = side;\r\n+        this.revision = revision;\r\n+        this.protocol = protocol;\r\n+    }\r\n+\r\n+\r\n+    public ServiceMetadataIdentifier(URL url) {\r\n+        this.serviceInterface = url.getServiceInterface();\r\n+        this.version = url.getParameter(VERSION_KEY);\r\n+        this.group = url.getParameter(GROUP_KEY);\r\n+        this.side = url.getParameter(SIDE_KEY);\r\n+        this.protocol = url.getProtocol();\r\n+    }\r\n+\r\n+    public String getUniqueKey(KeyTypeEnum keyType) {\r\n+        return super.getUniqueKey(keyType, protocol, KEY_REVISION_PREFIX + revision);\r\n+    }\r\n+\r\n+    public String getIdentifierKey() {\r\n+        return super.getIdentifierKey(protocol, KEY_REVISION_PREFIX + revision);\r\n+    }\r\n+\r\n+    public void setRevision(String revision) {\r\n+        this.revision = revision;\r\n+    }\r\n+\r\n+    public void setProtocol(String protocol) {\r\n+        this.protocol = protocol;\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"ServiceMetadataIdentifier{\" +\r\n+                \"revision='\" + revision + '\\'' +\r\n+                \", protocol='\" + protocol + '\\'' +\r\n+                \", serviceInterface='\" + serviceInterface + '\\'' +\r\n+                \", version='\" + version + '\\'' +\r\n+                \", group='\" + group + '\\'' +\r\n+                \", side='\" + side + '\\'' +\r\n+                \"} \" + super.toString();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/report/identifier/SubscriberMetadataIdentifier.java", "source2": "org/apache/dubbo/metadata/report/identifier/SubscriberMetadataIdentifier.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,70 +1,70 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.report.identifier;\n-\n-import org.apache.dubbo.common.URL;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.REVISION_KEY;\n-\n-/**\n- * 2019-08-12\n- */\n-public class SubscriberMetadataIdentifier extends BaseApplicationMetadataIdentifier implements BaseMetadataIdentifier {\n-\n-    private String revision;\n-\n-    public SubscriberMetadataIdentifier() {\n-    }\n-\n-    public SubscriberMetadataIdentifier(String application, String revision) {\n-        this.application = application;\n-        this.revision = revision;\n-    }\n-\n-\n-    public SubscriberMetadataIdentifier(URL url) {\n-        this.application = url.getParameter(APPLICATION_KEY, \"\");\n-        this.revision = url.getParameter(REVISION_KEY, \"\");\n-    }\n-\n-    public String getUniqueKey(KeyTypeEnum keyType) {\n-        return super.getUniqueKey(keyType, revision);\n-    }\n-\n-    public String getIdentifierKey() {\n-        return super.getIdentifierKey(revision);\n-    }\n-\n-    public String getApplication() {\n-        return application;\n-    }\n-\n-    public void setApplication(String application) {\n-        this.application = application;\n-    }\n-\n-    public String getRevision() {\n-        return revision;\n-    }\n-\n-    public void setRevision(String revision) {\n-        this.revision = revision;\n-    }\n-\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.report.identifier;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REVISION_KEY;\r\n+\r\n+/**\r\n+ * 2019-08-12\r\n+ */\r\n+public class SubscriberMetadataIdentifier extends BaseApplicationMetadataIdentifier implements BaseMetadataIdentifier {\r\n+\r\n+    private String revision;\r\n+\r\n+    public SubscriberMetadataIdentifier() {\r\n+    }\r\n+\r\n+    public SubscriberMetadataIdentifier(String application, String revision) {\r\n+        this.application = application;\r\n+        this.revision = revision;\r\n+    }\r\n+\r\n+\r\n+    public SubscriberMetadataIdentifier(URL url) {\r\n+        this.application = url.getParameter(APPLICATION_KEY, \"\");\r\n+        this.revision = url.getParameter(REVISION_KEY, \"\");\r\n+    }\r\n+\r\n+    public String getUniqueKey(KeyTypeEnum keyType) {\r\n+        return super.getUniqueKey(keyType, revision);\r\n+    }\r\n+\r\n+    public String getIdentifierKey() {\r\n+        return super.getIdentifierKey(revision);\r\n+    }\r\n+\r\n+    public String getApplication() {\r\n+        return application;\r\n+    }\r\n+\r\n+    public void setApplication(String application) {\r\n+        this.application = application;\r\n+    }\r\n+\r\n+    public String getRevision() {\r\n+        return revision;\r\n+    }\r\n+\r\n+    public void setRevision(String revision) {\r\n+        this.revision = revision;\r\n+    }\r\n+\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/report/support/AbstractMetadataReport.java", "source2": "org/apache/dubbo/metadata/report/support/AbstractMetadataReport.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,468 +1,468 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.report.support;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.ConfigUtils;\n-import org.apache.dubbo.common.utils.NamedThreadFactory;\n-import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;\n-import org.apache.dubbo.metadata.definition.model.ServiceDefinition;\n-import org.apache.dubbo.metadata.report.MetadataReport;\n-import org.apache.dubbo.metadata.report.identifier.KeyTypeEnum;\n-import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\n-\n-import com.google.gson.Gson;\n-import com.google.gson.reflect.TypeToken;\n-\n-import java.io.File;\n-import java.io.FileInputStream;\n-import java.io.FileOutputStream;\n-import java.io.IOException;\n-import java.io.InputStream;\n-import java.io.RandomAccessFile;\n-import java.lang.reflect.Type;\n-import java.nio.channels.FileChannel;\n-import java.nio.channels.FileLock;\n-import java.util.ArrayList;\n-import java.util.Calendar;\n-import java.util.Iterator;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Properties;\n-import java.util.Set;\n-import java.util.SortedSet;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ExecutorService;\n-import java.util.concurrent.Executors;\n-import java.util.concurrent.ScheduledExecutorService;\n-import java.util.concurrent.ScheduledFuture;\n-import java.util.concurrent.ThreadLocalRandom;\n-import java.util.concurrent.TimeUnit;\n-import java.util.concurrent.atomic.AtomicBoolean;\n-import java.util.concurrent.atomic.AtomicInteger;\n-import java.util.concurrent.atomic.AtomicLong;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE;\n-import static org.apache.dubbo.common.constants.CommonConstants.FILE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;\n-import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\n-import static org.apache.dubbo.metadata.report.support.Constants.CYCLE_REPORT_KEY;\n-import static org.apache.dubbo.metadata.report.support.Constants.DEFAULT_METADATA_REPORT_CYCLE_REPORT;\n-import static org.apache.dubbo.metadata.report.support.Constants.DEFAULT_METADATA_REPORT_RETRY_PERIOD;\n-import static org.apache.dubbo.metadata.report.support.Constants.DEFAULT_METADATA_REPORT_RETRY_TIMES;\n-import static org.apache.dubbo.metadata.report.support.Constants.RETRY_PERIOD_KEY;\n-import static org.apache.dubbo.metadata.report.support.Constants.RETRY_TIMES_KEY;\n-import static org.apache.dubbo.metadata.report.support.Constants.SYNC_REPORT_KEY;\n-\n-/**\n- *\n- */\n-public abstract class AbstractMetadataReport implements MetadataReport {\n-\n-    protected final static String DEFAULT_ROOT = \"dubbo\";\n-\n-    private static final int ONE_DAY_IN_MILLISECONDS = 60 * 24 * 60 * 1000;\n-    private static final int FOUR_HOURS_IN_MILLISECONDS = 60 * 4 * 60 * 1000;\n-    // Log output\n-    protected final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    // Local disk cache, where the special key value.registries records the list of metadata centers, and the others are the list of notified service providers\n-    final Properties properties = new Properties();\n-    private final ExecutorService reportCacheExecutor = Executors.newFixedThreadPool(1, new NamedThreadFactory(\"DubboSaveMetadataReport\", true));\n-    final Map<MetadataIdentifier, Object> allMetadataReports = new ConcurrentHashMap<>(4);\n-\n-    private final AtomicLong lastCacheChanged = new AtomicLong();\n-    final Map<MetadataIdentifier, Object> failedReports = new ConcurrentHashMap<>(4);\n-    private URL reportURL;\n-    boolean syncReport;\n-    // Local disk cache file\n-    File file;\n-    private AtomicBoolean initialized = new AtomicBoolean(false);\n-    public MetadataReportRetry metadataReportRetry;\n-\n-    public AbstractMetadataReport(URL reportServerURL) {\n-        setUrl(reportServerURL);\n-        // Start file save timer\n-        String defaultFilename = System.getProperty(\"user.home\") + \"/.dubbo/dubbo-metadata-\" + reportServerURL.getParameter(APPLICATION_KEY) + \"-\" + reportServerURL.getAddress().replaceAll(\":\", \"-\") + \".cache\";\n-        String filename = reportServerURL.getParameter(FILE_KEY, defaultFilename);\n-        File file = null;\n-        if (ConfigUtils.isNotEmpty(filename)) {\n-            file = new File(filename);\n-            if (!file.exists() && file.getParentFile() != null && !file.getParentFile().exists()) {\n-                if (!file.getParentFile().mkdirs()) {\n-                    throw new IllegalArgumentException(\"Invalid service store file \" + file + \", cause: Failed to create directory \" + file.getParentFile() + \"!\");\n-                }\n-            }\n-            // if this file exist, firstly delete it.\n-            if (!initialized.getAndSet(true) && file.exists()) {\n-                file.delete();\n-            }\n-        }\n-        this.file = file;\n-        loadProperties();\n-        syncReport = reportServerURL.getParameter(SYNC_REPORT_KEY, false);\n-        metadataReportRetry = new MetadataReportRetry(reportServerURL.getParameter(RETRY_TIMES_KEY, DEFAULT_METADATA_REPORT_RETRY_TIMES),\n-                reportServerURL.getParameter(RETRY_PERIOD_KEY, DEFAULT_METADATA_REPORT_RETRY_PERIOD));\n-        // cycle report the data switch\n-        if (reportServerURL.getParameter(CYCLE_REPORT_KEY, DEFAULT_METADATA_REPORT_CYCLE_REPORT)) {\n-            ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory(\"DubboMetadataReportTimer\", true));\n-            scheduler.scheduleAtFixedRate(this::publishAll, calculateStartTime(), ONE_DAY_IN_MILLISECONDS, TimeUnit.MILLISECONDS);\n-        }\n-    }\n-\n-    public URL getUrl() {\n-        return reportURL;\n-    }\n-\n-    protected void setUrl(URL url) {\n-        if (url == null) {\n-            throw new IllegalArgumentException(\"metadataReport url == null\");\n-        }\n-        this.reportURL = url;\n-    }\n-\n-    private void doSaveProperties(long version) {\n-        if (version < lastCacheChanged.get()) {\n-            return;\n-        }\n-        if (file == null) {\n-            return;\n-        }\n-        // Save\n-        try {\n-            File lockfile = new File(file.getAbsolutePath() + \".lock\");\n-            if (!lockfile.exists()) {\n-                lockfile.createNewFile();\n-            }\n-            try (RandomAccessFile raf = new RandomAccessFile(lockfile, \"rw\");\n-                 FileChannel channel = raf.getChannel()) {\n-                FileLock lock = channel.tryLock();\n-                if (lock == null) {\n-                    throw new IOException(\"Can not lock the metadataReport cache file \" + file.getAbsolutePath() + \", ignore and retry later, maybe multi java process use the file, please config: dubbo.metadata.file=xxx.properties\");\n-                }\n-                // Save\n-                try {\n-                    if (!file.exists()) {\n-                        file.createNewFile();\n-                    }\n-                    try (FileOutputStream outputFile = new FileOutputStream(file)) {\n-                        properties.store(outputFile, \"Dubbo metadataReport Cache\");\n-                    }\n-                } finally {\n-                    lock.release();\n-                }\n-            }\n-        } catch (Throwable e) {\n-            if (version < lastCacheChanged.get()) {\n-                return;\n-            } else {\n-                reportCacheExecutor.execute(new SaveProperties(lastCacheChanged.incrementAndGet()));\n-            }\n-            logger.warn(\"Failed to save service store file, cause: \" + e.getMessage(), e);\n-        }\n-    }\n-\n-    void loadProperties() {\n-        if (file != null && file.exists()) {\n-            try (InputStream in = new FileInputStream(file)) {\n-                properties.load(in);\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(\"Load service store file \" + file + \", data: \" + properties);\n-                }\n-            } catch (Throwable e) {\n-                logger.warn(\"Failed to load service store file \" + file, e);\n-            }\n-        }\n-    }\n-\n-    private void saveProperties(MetadataIdentifier metadataIdentifier, String value, boolean add, boolean sync) {\n-        if (file == null) {\n-            return;\n-        }\n-\n-        try {\n-            if (add) {\n-                properties.setProperty(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), value);\n-            } else {\n-                properties.remove(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY));\n-            }\n-            long version = lastCacheChanged.incrementAndGet();\n-            if (sync) {\n-                new SaveProperties(version).run();\n-            } else {\n-                reportCacheExecutor.execute(new SaveProperties(version));\n-            }\n-\n-        } catch (Throwable t) {\n-            logger.warn(t.getMessage(), t);\n-        }\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return getUrl().toString();\n-    }\n-\n-    private class SaveProperties implements Runnable {\n-        private long version;\n-\n-        private SaveProperties(long version) {\n-            this.version = version;\n-        }\n-\n-        @Override\n-        public void run() {\n-            doSaveProperties(version);\n-        }\n-    }\n-\n-    @Override\n-    public void storeProviderMetadata(MetadataIdentifier providerMetadataIdentifier, ServiceDefinition serviceDefinition) {\n-        if (syncReport) {\n-            storeProviderMetadataTask(providerMetadataIdentifier, serviceDefinition);\n-        } else {\n-            reportCacheExecutor.execute(() -> storeProviderMetadataTask(providerMetadataIdentifier, serviceDefinition));\n-        }\n-    }\n-\n-    private void storeProviderMetadataTask(MetadataIdentifier providerMetadataIdentifier, ServiceDefinition serviceDefinition) {\n-        try {\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"store provider metadata. Identifier : \" + providerMetadataIdentifier + \"; definition: \" + serviceDefinition);\n-            }\n-            allMetadataReports.put(providerMetadataIdentifier, serviceDefinition);\n-            failedReports.remove(providerMetadataIdentifier);\n-            Gson gson = new Gson();\n-            String data = gson.toJson(serviceDefinition);\n-            doStoreProviderMetadata(providerMetadataIdentifier, data);\n-            saveProperties(providerMetadataIdentifier, data, true, !syncReport);\n-        } catch (Exception e) {\n-            // retry again. If failed again, throw exception.\n-            failedReports.put(providerMetadataIdentifier, serviceDefinition);\n-            metadataReportRetry.startRetryTask();\n-            logger.error(\"Failed to put provider metadata \" + providerMetadataIdentifier + \" in  \" + serviceDefinition + \", cause: \" + e.getMessage(), e);\n-        }\n-    }\n-\n-    @Override\n-    public void storeConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, Map<String, String> serviceParameterMap) {\n-        if (syncReport) {\n-            storeConsumerMetadataTask(consumerMetadataIdentifier, serviceParameterMap);\n-        } else {\n-            reportCacheExecutor.execute(() -> storeConsumerMetadataTask(consumerMetadataIdentifier, serviceParameterMap));\n-        }\n-    }\n-\n-    public void storeConsumerMetadataTask(MetadataIdentifier consumerMetadataIdentifier, Map<String, String> serviceParameterMap) {\n-        try {\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"store consumer metadata. Identifier : \" + consumerMetadataIdentifier + \"; definition: \" + serviceParameterMap);\n-            }\n-            allMetadataReports.put(consumerMetadataIdentifier, serviceParameterMap);\n-            failedReports.remove(consumerMetadataIdentifier);\n-\n-            Gson gson = new Gson();\n-            String data = gson.toJson(serviceParameterMap);\n-            doStoreConsumerMetadata(consumerMetadataIdentifier, data);\n-            saveProperties(consumerMetadataIdentifier, data, true, !syncReport);\n-        } catch (Exception e) {\n-            // retry again. If failed again, throw exception.\n-            failedReports.put(consumerMetadataIdentifier, serviceParameterMap);\n-            metadataReportRetry.startRetryTask();\n-            logger.error(\"Failed to put consumer metadata \" + consumerMetadataIdentifier + \";  \" + serviceParameterMap + \", cause: \" + e.getMessage(), e);\n-        }\n-    }\n-\n-    @Override\n-    public void saveServiceMetadata(ServiceMetadataIdentifier metadataIdentifier, URL url) {\n-        if (syncReport) {\n-            doSaveMetadata(metadataIdentifier, url);\n-        } else {\n-            reportCacheExecutor.execute(() -> doSaveMetadata(metadataIdentifier, url));\n-        }\n-    }\n-\n-    @Override\n-    public void removeServiceMetadata(ServiceMetadataIdentifier metadataIdentifier) {\n-        if (syncReport) {\n-            doRemoveMetadata(metadataIdentifier);\n-        } else {\n-            reportCacheExecutor.execute(() -> doRemoveMetadata(metadataIdentifier));\n-        }\n-    }\n-\n-    @Override\n-    public List<String> getExportedURLs(ServiceMetadataIdentifier metadataIdentifier) {\n-        // TODO, fallback to local cache\n-        return doGetExportedURLs(metadataIdentifier);\n-    }\n-\n-    @Override\n-    public void saveSubscribedData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, Set<String> urls) {\n-        if (syncReport) {\n-            doSaveSubscriberData(subscriberMetadataIdentifier, new Gson().toJson(urls));\n-        } else {\n-            reportCacheExecutor.execute(() -> doSaveSubscriberData(subscriberMetadataIdentifier, new Gson().toJson(urls)));\n-        }\n-    }\n-\n-\n-    @Override\n-    public List<String> getSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier) {\n-        String content = doGetSubscribedURLs(subscriberMetadataIdentifier);\n-        Type setType = new TypeToken<SortedSet<String>>() {\n-        }.getType();\n-        return new Gson().fromJson(content, setType);\n-    }\n-\n-    String getProtocol(URL url) {\n-        String protocol = url.getParameter(SIDE_KEY);\n-        protocol = protocol == null ? url.getProtocol() : protocol;\n-        return protocol;\n-    }\n-\n-    /**\n-     * @return if need to continue\n-     */\n-    public boolean retry() {\n-        return doHandleMetadataCollection(failedReports);\n-    }\n-\n-    private boolean doHandleMetadataCollection(Map<MetadataIdentifier, Object> metadataMap) {\n-        if (metadataMap.isEmpty()) {\n-            return true;\n-        }\n-        Iterator<Map.Entry<MetadataIdentifier, Object>> iterable = metadataMap.entrySet().iterator();\n-        while (iterable.hasNext()) {\n-            Map.Entry<MetadataIdentifier, Object> item = iterable.next();\n-            if (PROVIDER_SIDE.equals(item.getKey().getSide())) {\n-                this.storeProviderMetadata(item.getKey(), (FullServiceDefinition) item.getValue());\n-            } else if (CONSUMER_SIDE.equals(item.getKey().getSide())) {\n-                this.storeConsumerMetadata(item.getKey(), (Map) item.getValue());\n-            }\n-\n-        }\n-        return false;\n-    }\n-\n-    /**\n-     * not private. just for unittest.\n-     */\n-    void publishAll() {\n-        logger.info(\"start to publish all metadata.\");\n-        this.doHandleMetadataCollection(allMetadataReports);\n-    }\n-\n-    /**\n-     * between 2:00 am to 6:00 am, the time is random.\n-     *\n-     * @return\n-     */\n-    long calculateStartTime() {\n-        Calendar calendar = Calendar.getInstance();\n-        long nowMill = calendar.getTimeInMillis();\n-        calendar.set(Calendar.HOUR_OF_DAY, 0);\n-        calendar.set(Calendar.MINUTE, 0);\n-        calendar.set(Calendar.SECOND, 0);\n-        calendar.set(Calendar.MILLISECOND, 0);\n-        long subtract = calendar.getTimeInMillis() + ONE_DAY_IN_MILLISECONDS - nowMill;\n-        return subtract + (FOUR_HOURS_IN_MILLISECONDS / 2) + ThreadLocalRandom.current().nextInt(FOUR_HOURS_IN_MILLISECONDS);\n-    }\n-\n-    class MetadataReportRetry {\n-        protected final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-        final ScheduledExecutorService retryExecutor = Executors.newScheduledThreadPool(0, new NamedThreadFactory(\"DubboMetadataReportRetryTimer\", true));\n-        volatile ScheduledFuture retryScheduledFuture;\n-        final AtomicInteger retryCounter = new AtomicInteger(0);\n-        // retry task schedule period\n-        long retryPeriod;\n-        // if no failed report, wait how many times to run retry task.\n-        int retryTimesIfNonFail = 600;\n-\n-        int retryLimit;\n-\n-        public MetadataReportRetry(int retryTimes, int retryPeriod) {\n-            this.retryPeriod = retryPeriod;\n-            this.retryLimit = retryTimes;\n-        }\n-\n-        void startRetryTask() {\n-            if (retryScheduledFuture == null) {\n-                synchronized (retryCounter) {\n-                    if (retryScheduledFuture == null) {\n-                        retryScheduledFuture = retryExecutor.scheduleWithFixedDelay(new Runnable() {\n-                            @Override\n-                            public void run() {\n-                                // Check and connect to the metadata\n-                                try {\n-                                    int times = retryCounter.incrementAndGet();\n-                                    logger.info(\"start to retry task for metadata report. retry times:\" + times);\n-                                    if (retry() && times > retryTimesIfNonFail) {\n-                                        cancelRetryTask();\n-                                    }\n-                                    if (times > retryLimit) {\n-                                        cancelRetryTask();\n-                                    }\n-                                } catch (Throwable t) { // Defensive fault tolerance\n-                                    logger.error(\"Unexpected error occur at failed retry, cause: \" + t.getMessage(), t);\n-                                }\n-                            }\n-                        }, 500, retryPeriod, TimeUnit.MILLISECONDS);\n-                    }\n-                }\n-            }\n-        }\n-\n-        void cancelRetryTask() {\n-            retryScheduledFuture.cancel(false);\n-            retryExecutor.shutdown();\n-        }\n-    }\n-\n-    private void doSaveSubscriberData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, List<String> urls) {\n-        if (CollectionUtils.isEmpty(urls)) {\n-            return;\n-        }\n-        List<String> encodedUrlList = new ArrayList<>(urls.size());\n-        for (String url : urls) {\n-            encodedUrlList.add(URL.encode(url));\n-        }\n-        doSaveSubscriberData(subscriberMetadataIdentifier, encodedUrlList);\n-    }\n-\n-    protected abstract void doStoreProviderMetadata(MetadataIdentifier providerMetadataIdentifier, String serviceDefinitions);\n-\n-    protected abstract void doStoreConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, String serviceParameterString);\n-\n-    protected abstract void doSaveMetadata(ServiceMetadataIdentifier metadataIdentifier, URL url);\n-\n-    protected abstract void doRemoveMetadata(ServiceMetadataIdentifier metadataIdentifier);\n-\n-    protected abstract List<String> doGetExportedURLs(ServiceMetadataIdentifier metadataIdentifier);\n-\n-    protected abstract void doSaveSubscriberData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, String urlListStr);\n-\n-    protected abstract String doGetSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier);\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.report.support;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.ConfigUtils;\r\n+import org.apache.dubbo.common.utils.NamedThreadFactory;\r\n+import org.apache.dubbo.metadata.definition.model.FullServiceDefinition;\r\n+import org.apache.dubbo.metadata.definition.model.ServiceDefinition;\r\n+import org.apache.dubbo.metadata.report.MetadataReport;\r\n+import org.apache.dubbo.metadata.report.identifier.KeyTypeEnum;\r\n+import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\r\n+\r\n+import com.google.gson.Gson;\r\n+import com.google.gson.reflect.TypeToken;\r\n+\r\n+import java.io.File;\r\n+import java.io.FileInputStream;\r\n+import java.io.FileOutputStream;\r\n+import java.io.IOException;\r\n+import java.io.InputStream;\r\n+import java.io.RandomAccessFile;\r\n+import java.lang.reflect.Type;\r\n+import java.nio.channels.FileChannel;\r\n+import java.nio.channels.FileLock;\r\n+import java.util.ArrayList;\r\n+import java.util.Calendar;\r\n+import java.util.Iterator;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Properties;\r\n+import java.util.Set;\r\n+import java.util.SortedSet;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ExecutorService;\r\n+import java.util.concurrent.Executors;\r\n+import java.util.concurrent.ScheduledExecutorService;\r\n+import java.util.concurrent.ScheduledFuture;\r\n+import java.util.concurrent.ThreadLocalRandom;\r\n+import java.util.concurrent.TimeUnit;\r\n+import java.util.concurrent.atomic.AtomicBoolean;\r\n+import java.util.concurrent.atomic.AtomicInteger;\r\n+import java.util.concurrent.atomic.AtomicLong;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.FILE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\r\n+import static org.apache.dubbo.metadata.report.support.Constants.CYCLE_REPORT_KEY;\r\n+import static org.apache.dubbo.metadata.report.support.Constants.DEFAULT_METADATA_REPORT_CYCLE_REPORT;\r\n+import static org.apache.dubbo.metadata.report.support.Constants.DEFAULT_METADATA_REPORT_RETRY_PERIOD;\r\n+import static org.apache.dubbo.metadata.report.support.Constants.DEFAULT_METADATA_REPORT_RETRY_TIMES;\r\n+import static org.apache.dubbo.metadata.report.support.Constants.RETRY_PERIOD_KEY;\r\n+import static org.apache.dubbo.metadata.report.support.Constants.RETRY_TIMES_KEY;\r\n+import static org.apache.dubbo.metadata.report.support.Constants.SYNC_REPORT_KEY;\r\n+\r\n+/**\r\n+ *\r\n+ */\r\n+public abstract class AbstractMetadataReport implements MetadataReport {\r\n+\r\n+    protected final static String DEFAULT_ROOT = \"dubbo\";\r\n+\r\n+    private static final int ONE_DAY_IN_MILLISECONDS = 60 * 24 * 60 * 1000;\r\n+    private static final int FOUR_HOURS_IN_MILLISECONDS = 60 * 4 * 60 * 1000;\r\n+    // Log output\r\n+    protected final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    // Local disk cache, where the special key value.registries records the list of metadata centers, and the others are the list of notified service providers\r\n+    final Properties properties = new Properties();\r\n+    private final ExecutorService reportCacheExecutor = Executors.newFixedThreadPool(1, new NamedThreadFactory(\"DubboSaveMetadataReport\", true));\r\n+    final Map<MetadataIdentifier, Object> allMetadataReports = new ConcurrentHashMap<>(4);\r\n+\r\n+    private final AtomicLong lastCacheChanged = new AtomicLong();\r\n+    final Map<MetadataIdentifier, Object> failedReports = new ConcurrentHashMap<>(4);\r\n+    private URL reportURL;\r\n+    boolean syncReport;\r\n+    // Local disk cache file\r\n+    File file;\r\n+    private AtomicBoolean initialized = new AtomicBoolean(false);\r\n+    public MetadataReportRetry metadataReportRetry;\r\n+\r\n+    public AbstractMetadataReport(URL reportServerURL) {\r\n+        setUrl(reportServerURL);\r\n+        // Start file save timer\r\n+        String defaultFilename = System.getProperty(\"user.home\") + \"/.dubbo/dubbo-metadata-\" + reportServerURL.getParameter(APPLICATION_KEY) + \"-\" + reportServerURL.getAddress().replaceAll(\":\", \"-\") + \".cache\";\r\n+        String filename = reportServerURL.getParameter(FILE_KEY, defaultFilename);\r\n+        File file = null;\r\n+        if (ConfigUtils.isNotEmpty(filename)) {\r\n+            file = new File(filename);\r\n+            if (!file.exists() && file.getParentFile() != null && !file.getParentFile().exists()) {\r\n+                if (!file.getParentFile().mkdirs()) {\r\n+                    throw new IllegalArgumentException(\"Invalid service store file \" + file + \", cause: Failed to create directory \" + file.getParentFile() + \"!\");\r\n+                }\r\n+            }\r\n+            // if this file exist, firstly delete it.\r\n+            if (!initialized.getAndSet(true) && file.exists()) {\r\n+                file.delete();\r\n+            }\r\n+        }\r\n+        this.file = file;\r\n+        loadProperties();\r\n+        syncReport = reportServerURL.getParameter(SYNC_REPORT_KEY, false);\r\n+        metadataReportRetry = new MetadataReportRetry(reportServerURL.getParameter(RETRY_TIMES_KEY, DEFAULT_METADATA_REPORT_RETRY_TIMES),\r\n+                reportServerURL.getParameter(RETRY_PERIOD_KEY, DEFAULT_METADATA_REPORT_RETRY_PERIOD));\r\n+        // cycle report the data switch\r\n+        if (reportServerURL.getParameter(CYCLE_REPORT_KEY, DEFAULT_METADATA_REPORT_CYCLE_REPORT)) {\r\n+            ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory(\"DubboMetadataReportTimer\", true));\r\n+            scheduler.scheduleAtFixedRate(this::publishAll, calculateStartTime(), ONE_DAY_IN_MILLISECONDS, TimeUnit.MILLISECONDS);\r\n+        }\r\n+    }\r\n+\r\n+    public URL getUrl() {\r\n+        return reportURL;\r\n+    }\r\n+\r\n+    protected void setUrl(URL url) {\r\n+        if (url == null) {\r\n+            throw new IllegalArgumentException(\"metadataReport url == null\");\r\n+        }\r\n+        this.reportURL = url;\r\n+    }\r\n+\r\n+    private void doSaveProperties(long version) {\r\n+        if (version < lastCacheChanged.get()) {\r\n+            return;\r\n+        }\r\n+        if (file == null) {\r\n+            return;\r\n+        }\r\n+        // Save\r\n+        try {\r\n+            File lockfile = new File(file.getAbsolutePath() + \".lock\");\r\n+            if (!lockfile.exists()) {\r\n+                lockfile.createNewFile();\r\n+            }\r\n+            try (RandomAccessFile raf = new RandomAccessFile(lockfile, \"rw\");\r\n+                 FileChannel channel = raf.getChannel()) {\r\n+                FileLock lock = channel.tryLock();\r\n+                if (lock == null) {\r\n+                    throw new IOException(\"Can not lock the metadataReport cache file \" + file.getAbsolutePath() + \", ignore and retry later, maybe multi java process use the file, please config: dubbo.metadata.file=xxx.properties\");\r\n+                }\r\n+                // Save\r\n+                try {\r\n+                    if (!file.exists()) {\r\n+                        file.createNewFile();\r\n+                    }\r\n+                    try (FileOutputStream outputFile = new FileOutputStream(file)) {\r\n+                        properties.store(outputFile, \"Dubbo metadataReport Cache\");\r\n+                    }\r\n+                } finally {\r\n+                    lock.release();\r\n+                }\r\n+            }\r\n+        } catch (Throwable e) {\r\n+            if (version < lastCacheChanged.get()) {\r\n+                return;\r\n+            } else {\r\n+                reportCacheExecutor.execute(new SaveProperties(lastCacheChanged.incrementAndGet()));\r\n+            }\r\n+            logger.warn(\"Failed to save service store file, cause: \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    void loadProperties() {\r\n+        if (file != null && file.exists()) {\r\n+            try (InputStream in = new FileInputStream(file)) {\r\n+                properties.load(in);\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(\"Load service store file \" + file + \", data: \" + properties);\r\n+                }\r\n+            } catch (Throwable e) {\r\n+                logger.warn(\"Failed to load service store file \" + file, e);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private void saveProperties(MetadataIdentifier metadataIdentifier, String value, boolean add, boolean sync) {\r\n+        if (file == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        try {\r\n+            if (add) {\r\n+                properties.setProperty(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), value);\r\n+            } else {\r\n+                properties.remove(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY));\r\n+            }\r\n+            long version = lastCacheChanged.incrementAndGet();\r\n+            if (sync) {\r\n+                new SaveProperties(version).run();\r\n+            } else {\r\n+                reportCacheExecutor.execute(new SaveProperties(version));\r\n+            }\r\n+\r\n+        } catch (Throwable t) {\r\n+            logger.warn(t.getMessage(), t);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return getUrl().toString();\r\n+    }\r\n+\r\n+    private class SaveProperties implements Runnable {\r\n+        private long version;\r\n+\r\n+        private SaveProperties(long version) {\r\n+            this.version = version;\r\n+        }\r\n+\r\n+        @Override\r\n+        public void run() {\r\n+            doSaveProperties(version);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void storeProviderMetadata(MetadataIdentifier providerMetadataIdentifier, ServiceDefinition serviceDefinition) {\r\n+        if (syncReport) {\r\n+            storeProviderMetadataTask(providerMetadataIdentifier, serviceDefinition);\r\n+        } else {\r\n+            reportCacheExecutor.execute(() -> storeProviderMetadataTask(providerMetadataIdentifier, serviceDefinition));\r\n+        }\r\n+    }\r\n+\r\n+    private void storeProviderMetadataTask(MetadataIdentifier providerMetadataIdentifier, ServiceDefinition serviceDefinition) {\r\n+        try {\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"store provider metadata. Identifier : \" + providerMetadataIdentifier + \"; definition: \" + serviceDefinition);\r\n+            }\r\n+            allMetadataReports.put(providerMetadataIdentifier, serviceDefinition);\r\n+            failedReports.remove(providerMetadataIdentifier);\r\n+            Gson gson = new Gson();\r\n+            String data = gson.toJson(serviceDefinition);\r\n+            doStoreProviderMetadata(providerMetadataIdentifier, data);\r\n+            saveProperties(providerMetadataIdentifier, data, true, !syncReport);\r\n+        } catch (Exception e) {\r\n+            // retry again. If failed again, throw exception.\r\n+            failedReports.put(providerMetadataIdentifier, serviceDefinition);\r\n+            metadataReportRetry.startRetryTask();\r\n+            logger.error(\"Failed to put provider metadata \" + providerMetadataIdentifier + \" in  \" + serviceDefinition + \", cause: \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void storeConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, Map<String, String> serviceParameterMap) {\r\n+        if (syncReport) {\r\n+            storeConsumerMetadataTask(consumerMetadataIdentifier, serviceParameterMap);\r\n+        } else {\r\n+            reportCacheExecutor.execute(() -> storeConsumerMetadataTask(consumerMetadataIdentifier, serviceParameterMap));\r\n+        }\r\n+    }\r\n+\r\n+    public void storeConsumerMetadataTask(MetadataIdentifier consumerMetadataIdentifier, Map<String, String> serviceParameterMap) {\r\n+        try {\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"store consumer metadata. Identifier : \" + consumerMetadataIdentifier + \"; definition: \" + serviceParameterMap);\r\n+            }\r\n+            allMetadataReports.put(consumerMetadataIdentifier, serviceParameterMap);\r\n+            failedReports.remove(consumerMetadataIdentifier);\r\n+\r\n+            Gson gson = new Gson();\r\n+            String data = gson.toJson(serviceParameterMap);\r\n+            doStoreConsumerMetadata(consumerMetadataIdentifier, data);\r\n+            saveProperties(consumerMetadataIdentifier, data, true, !syncReport);\r\n+        } catch (Exception e) {\r\n+            // retry again. If failed again, throw exception.\r\n+            failedReports.put(consumerMetadataIdentifier, serviceParameterMap);\r\n+            metadataReportRetry.startRetryTask();\r\n+            logger.error(\"Failed to put consumer metadata \" + consumerMetadataIdentifier + \";  \" + serviceParameterMap + \", cause: \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void saveServiceMetadata(ServiceMetadataIdentifier metadataIdentifier, URL url) {\r\n+        if (syncReport) {\r\n+            doSaveMetadata(metadataIdentifier, url);\r\n+        } else {\r\n+            reportCacheExecutor.execute(() -> doSaveMetadata(metadataIdentifier, url));\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeServiceMetadata(ServiceMetadataIdentifier metadataIdentifier) {\r\n+        if (syncReport) {\r\n+            doRemoveMetadata(metadataIdentifier);\r\n+        } else {\r\n+            reportCacheExecutor.execute(() -> doRemoveMetadata(metadataIdentifier));\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<String> getExportedURLs(ServiceMetadataIdentifier metadataIdentifier) {\r\n+        // TODO, fallback to local cache\r\n+        return doGetExportedURLs(metadataIdentifier);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void saveSubscribedData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, Set<String> urls) {\r\n+        if (syncReport) {\r\n+            doSaveSubscriberData(subscriberMetadataIdentifier, new Gson().toJson(urls));\r\n+        } else {\r\n+            reportCacheExecutor.execute(() -> doSaveSubscriberData(subscriberMetadataIdentifier, new Gson().toJson(urls)));\r\n+        }\r\n+    }\r\n+\r\n+\r\n+    @Override\r\n+    public List<String> getSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier) {\r\n+        String content = doGetSubscribedURLs(subscriberMetadataIdentifier);\r\n+        Type setType = new TypeToken<SortedSet<String>>() {\r\n+        }.getType();\r\n+        return new Gson().fromJson(content, setType);\r\n+    }\r\n+\r\n+    String getProtocol(URL url) {\r\n+        String protocol = url.getParameter(SIDE_KEY);\r\n+        protocol = protocol == null ? url.getProtocol() : protocol;\r\n+        return protocol;\r\n+    }\r\n+\r\n+    /**\r\n+     * @return if need to continue\r\n+     */\r\n+    public boolean retry() {\r\n+        return doHandleMetadataCollection(failedReports);\r\n+    }\r\n+\r\n+    private boolean doHandleMetadataCollection(Map<MetadataIdentifier, Object> metadataMap) {\r\n+        if (metadataMap.isEmpty()) {\r\n+            return true;\r\n+        }\r\n+        Iterator<Map.Entry<MetadataIdentifier, Object>> iterable = metadataMap.entrySet().iterator();\r\n+        while (iterable.hasNext()) {\r\n+            Map.Entry<MetadataIdentifier, Object> item = iterable.next();\r\n+            if (PROVIDER_SIDE.equals(item.getKey().getSide())) {\r\n+                this.storeProviderMetadata(item.getKey(), (FullServiceDefinition) item.getValue());\r\n+            } else if (CONSUMER_SIDE.equals(item.getKey().getSide())) {\r\n+                this.storeConsumerMetadata(item.getKey(), (Map) item.getValue());\r\n+            }\r\n+\r\n+        }\r\n+        return false;\r\n+    }\r\n+\r\n+    /**\r\n+     * not private. just for unittest.\r\n+     */\r\n+    void publishAll() {\r\n+        logger.info(\"start to publish all metadata.\");\r\n+        this.doHandleMetadataCollection(allMetadataReports);\r\n+    }\r\n+\r\n+    /**\r\n+     * between 2:00 am to 6:00 am, the time is random.\r\n+     *\r\n+     * @return\r\n+     */\r\n+    long calculateStartTime() {\r\n+        Calendar calendar = Calendar.getInstance();\r\n+        long nowMill = calendar.getTimeInMillis();\r\n+        calendar.set(Calendar.HOUR_OF_DAY, 0);\r\n+        calendar.set(Calendar.MINUTE, 0);\r\n+        calendar.set(Calendar.SECOND, 0);\r\n+        calendar.set(Calendar.MILLISECOND, 0);\r\n+        long subtract = calendar.getTimeInMillis() + ONE_DAY_IN_MILLISECONDS - nowMill;\r\n+        return subtract + (FOUR_HOURS_IN_MILLISECONDS / 2) + ThreadLocalRandom.current().nextInt(FOUR_HOURS_IN_MILLISECONDS);\r\n+    }\r\n+\r\n+    class MetadataReportRetry {\r\n+        protected final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+        final ScheduledExecutorService retryExecutor = Executors.newScheduledThreadPool(0, new NamedThreadFactory(\"DubboMetadataReportRetryTimer\", true));\r\n+        volatile ScheduledFuture retryScheduledFuture;\r\n+        final AtomicInteger retryCounter = new AtomicInteger(0);\r\n+        // retry task schedule period\r\n+        long retryPeriod;\r\n+        // if no failed report, wait how many times to run retry task.\r\n+        int retryTimesIfNonFail = 600;\r\n+\r\n+        int retryLimit;\r\n+\r\n+        public MetadataReportRetry(int retryTimes, int retryPeriod) {\r\n+            this.retryPeriod = retryPeriod;\r\n+            this.retryLimit = retryTimes;\r\n+        }\r\n+\r\n+        void startRetryTask() {\r\n+            if (retryScheduledFuture == null) {\r\n+                synchronized (retryCounter) {\r\n+                    if (retryScheduledFuture == null) {\r\n+                        retryScheduledFuture = retryExecutor.scheduleWithFixedDelay(new Runnable() {\r\n+                            @Override\r\n+                            public void run() {\r\n+                                // Check and connect to the metadata\r\n+                                try {\r\n+                                    int times = retryCounter.incrementAndGet();\r\n+                                    logger.info(\"start to retry task for metadata report. retry times:\" + times);\r\n+                                    if (retry() && times > retryTimesIfNonFail) {\r\n+                                        cancelRetryTask();\r\n+                                    }\r\n+                                    if (times > retryLimit) {\r\n+                                        cancelRetryTask();\r\n+                                    }\r\n+                                } catch (Throwable t) { // Defensive fault tolerance\r\n+                                    logger.error(\"Unexpected error occur at failed retry, cause: \" + t.getMessage(), t);\r\n+                                }\r\n+                            }\r\n+                        }, 500, retryPeriod, TimeUnit.MILLISECONDS);\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        void cancelRetryTask() {\r\n+            retryScheduledFuture.cancel(false);\r\n+            retryExecutor.shutdown();\r\n+        }\r\n+    }\r\n+\r\n+    private void doSaveSubscriberData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, List<String> urls) {\r\n+        if (CollectionUtils.isEmpty(urls)) {\r\n+            return;\r\n+        }\r\n+        List<String> encodedUrlList = new ArrayList<>(urls.size());\r\n+        for (String url : urls) {\r\n+            encodedUrlList.add(URL.encode(url));\r\n+        }\r\n+        doSaveSubscriberData(subscriberMetadataIdentifier, encodedUrlList);\r\n+    }\r\n+\r\n+    protected abstract void doStoreProviderMetadata(MetadataIdentifier providerMetadataIdentifier, String serviceDefinitions);\r\n+\r\n+    protected abstract void doStoreConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, String serviceParameterString);\r\n+\r\n+    protected abstract void doSaveMetadata(ServiceMetadataIdentifier metadataIdentifier, URL url);\r\n+\r\n+    protected abstract void doRemoveMetadata(ServiceMetadataIdentifier metadataIdentifier);\r\n+\r\n+    protected abstract List<String> doGetExportedURLs(ServiceMetadataIdentifier metadataIdentifier);\r\n+\r\n+    protected abstract void doSaveSubscriberData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, String urlListStr);\r\n+\r\n+    protected abstract String doGetSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier);\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/report/support/AbstractMetadataReportFactory.java", "source2": "org/apache/dubbo/metadata/report/support/AbstractMetadataReportFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,62 +1,62 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.report.support;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.metadata.report.MetadataReport;\n-import org.apache.dubbo.metadata.report.MetadataReportFactory;\n-\n-import java.util.Map;\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.locks.ReentrantLock;\n-\n-public abstract class AbstractMetadataReportFactory implements MetadataReportFactory {\n-    private static final String EXPORT_KEY = \"export\";\n-    private static final String REFER_KEY = \"refer\";\n-\n-    // The lock for the acquisition process of the registry\n-    private static final ReentrantLock LOCK = new ReentrantLock();\n-\n-    // Registry Collection Map<metadataAddress, MetadataReport>\n-    private static final Map<String, MetadataReport> SERVICE_STORE_MAP = new ConcurrentHashMap<String, MetadataReport>();\n-\n-    @Override\n-    public MetadataReport getMetadataReport(URL url) {\n-        url = url.setPath(MetadataReport.class.getName())\n-                .removeParameters(EXPORT_KEY, REFER_KEY);\n-        String key = url.toServiceString();\n-        // Lock the metadata access process to ensure a single instance of the metadata instance\n-        LOCK.lock();\n-        try {\n-            MetadataReport metadataReport = SERVICE_STORE_MAP.get(key);\n-            if (metadataReport != null) {\n-                return metadataReport;\n-            }\n-            metadataReport = createMetadataReport(url);\n-            if (metadataReport == null) {\n-                throw new IllegalStateException(\"Can not create metadata Report \" + url);\n-            }\n-            SERVICE_STORE_MAP.put(key, metadataReport);\n-            return metadataReport;\n-        } finally {\n-            // Release the lock\n-            LOCK.unlock();\n-        }\n-    }\n-\n-    protected abstract MetadataReport createMetadataReport(URL url);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.report.support;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.metadata.report.MetadataReport;\r\n+import org.apache.dubbo.metadata.report.MetadataReportFactory;\r\n+\r\n+import java.util.Map;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.locks.ReentrantLock;\r\n+\r\n+public abstract class AbstractMetadataReportFactory implements MetadataReportFactory {\r\n+    private static final String EXPORT_KEY = \"export\";\r\n+    private static final String REFER_KEY = \"refer\";\r\n+\r\n+    // The lock for the acquisition process of the registry\r\n+    private static final ReentrantLock LOCK = new ReentrantLock();\r\n+\r\n+    // Registry Collection Map<metadataAddress, MetadataReport>\r\n+    private static final Map<String, MetadataReport> SERVICE_STORE_MAP = new ConcurrentHashMap<String, MetadataReport>();\r\n+\r\n+    @Override\r\n+    public MetadataReport getMetadataReport(URL url) {\r\n+        url = url.setPath(MetadataReport.class.getName())\r\n+                .removeParameters(EXPORT_KEY, REFER_KEY);\r\n+        String key = url.toServiceString();\r\n+        // Lock the metadata access process to ensure a single instance of the metadata instance\r\n+        LOCK.lock();\r\n+        try {\r\n+            MetadataReport metadataReport = SERVICE_STORE_MAP.get(key);\r\n+            if (metadataReport != null) {\r\n+                return metadataReport;\r\n+            }\r\n+            metadataReport = createMetadataReport(url);\r\n+            if (metadataReport == null) {\r\n+                throw new IllegalStateException(\"Can not create metadata Report \" + url);\r\n+            }\r\n+            SERVICE_STORE_MAP.put(key, metadataReport);\r\n+            return metadataReport;\r\n+        } finally {\r\n+            // Release the lock\r\n+            LOCK.unlock();\r\n+        }\r\n+    }\r\n+\r\n+    protected abstract MetadataReport createMetadataReport(URL url);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/report/support/Constants.java", "source2": "org/apache/dubbo/metadata/report/support/Constants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,36 +1,36 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.metadata.report.support;\n-\n-public interface Constants {\n-    String METADATA_REPORT_KEY = \"metadata\";\n-\n-    String RETRY_TIMES_KEY = \"retry.times\";\n-\n-    Integer DEFAULT_METADATA_REPORT_RETRY_TIMES = 100;\n-\n-    String RETRY_PERIOD_KEY = \"retry.period\";\n-\n-    Integer DEFAULT_METADATA_REPORT_RETRY_PERIOD = 3000;\n-\n-    String SYNC_REPORT_KEY = \"sync.report\";\n-\n-    String CYCLE_REPORT_KEY = \"cycle.report\";\n-\n-    Boolean DEFAULT_METADATA_REPORT_CYCLE_REPORT = true;\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.metadata.report.support;\r\n+\r\n+public interface Constants {\r\n+    String METADATA_REPORT_KEY = \"metadata\";\r\n+\r\n+    String RETRY_TIMES_KEY = \"retry.times\";\r\n+\r\n+    Integer DEFAULT_METADATA_REPORT_RETRY_TIMES = 100;\r\n+\r\n+    String RETRY_PERIOD_KEY = \"retry.period\";\r\n+\r\n+    Integer DEFAULT_METADATA_REPORT_RETRY_PERIOD = 3000;\r\n+\r\n+    String SYNC_REPORT_KEY = \"sync.report\";\r\n+\r\n+    String CYCLE_REPORT_KEY = \"cycle.report\";\r\n+\r\n+    Boolean DEFAULT_METADATA_REPORT_CYCLE_REPORT = true;\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/AbstractAnnotatedMethodParameterProcessor.java", "source2": "org/apache/dubbo/metadata/rest/AbstractAnnotatedMethodParameterProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,51 +1,51 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest;\n-\n-import java.lang.annotation.Annotation;\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Parameter;\n-\n-import static org.apache.dubbo.common.utils.AnnotationUtils.getValue;\n-import static org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor.buildDefaultValue;\n-\n-/**\n- * The abstract {@link AnnotatedMethodParameterProcessor} implementation\n- *\n- * @since 2.7.6\n- */\n-public abstract class AbstractAnnotatedMethodParameterProcessor implements AnnotatedMethodParameterProcessor {\n-\n-    @Override\n-    public void process(Annotation annotation, Parameter parameter, int parameterIndex, Method method,\n-                        Class<?> serviceType, Class<?> serviceInterfaceClass, RestMethodMetadata restMethodMetadata) {\n-        String annotationValue = getAnnotationValue(annotation, parameter, parameterIndex);\n-        String defaultValue = getDefaultValue(annotation, parameter, parameterIndex);\n-        process(annotationValue, defaultValue, annotation, parameter, parameterIndex, method, restMethodMetadata);\n-    }\n-\n-    protected String getAnnotationValue(Annotation annotation, Parameter parameter, int parameterIndex) {\n-        return getValue(annotation);\n-    }\n-\n-    protected String getDefaultValue(Annotation annotation, Parameter parameter, int parameterIndex) {\n-        return buildDefaultValue(parameterIndex);\n-    }\n-\n-    protected abstract void process(String annotationValue, String defaultValue, Annotation annotation, Object parameter,\n-                                    int parameterIndex, Method method, RestMethodMetadata restMethodMetadata);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest;\r\n+\r\n+import java.lang.annotation.Annotation;\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Parameter;\r\n+\r\n+import static org.apache.dubbo.common.utils.AnnotationUtils.getValue;\r\n+import static org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor.buildDefaultValue;\r\n+\r\n+/**\r\n+ * The abstract {@link AnnotatedMethodParameterProcessor} implementation\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public abstract class AbstractAnnotatedMethodParameterProcessor implements AnnotatedMethodParameterProcessor {\r\n+\r\n+    @Override\r\n+    public void process(Annotation annotation, Parameter parameter, int parameterIndex, Method method,\r\n+                        Class<?> serviceType, Class<?> serviceInterfaceClass, RestMethodMetadata restMethodMetadata) {\r\n+        String annotationValue = getAnnotationValue(annotation, parameter, parameterIndex);\r\n+        String defaultValue = getDefaultValue(annotation, parameter, parameterIndex);\r\n+        process(annotationValue, defaultValue, annotation, parameter, parameterIndex, method, restMethodMetadata);\r\n+    }\r\n+\r\n+    protected String getAnnotationValue(Annotation annotation, Parameter parameter, int parameterIndex) {\r\n+        return getValue(annotation);\r\n+    }\r\n+\r\n+    protected String getDefaultValue(Annotation annotation, Parameter parameter, int parameterIndex) {\r\n+        return buildDefaultValue(parameterIndex);\r\n+    }\r\n+\r\n+    protected abstract void process(String annotationValue, String defaultValue, Annotation annotation, Object parameter,\r\n+                                    int parameterIndex, Method method, RestMethodMetadata restMethodMetadata);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/AbstractServiceRestMetadataResolver.java", "source2": "org/apache/dubbo/metadata/rest/AbstractServiceRestMetadataResolver.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,343 +1,343 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest;\n-\n-import org.apache.dubbo.common.utils.MethodComparator;\n-import org.apache.dubbo.common.utils.ServiceAnnotationResolver;\n-import org.apache.dubbo.config.annotation.DubboService;\n-import org.apache.dubbo.config.annotation.Service;\n-import org.apache.dubbo.metadata.definition.MethodDefinitionBuilder;\n-import org.apache.dubbo.metadata.definition.model.MethodDefinition;\n-\n-import java.lang.annotation.Annotation;\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Parameter;\n-import java.util.ArrayList;\n-import java.util.LinkedHashMap;\n-import java.util.LinkedHashSet;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.function.Consumer;\n-\n-import static java.util.Collections.emptyList;\n-import static java.util.Collections.sort;\n-import static java.util.Collections.unmodifiableMap;\n-import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\n-import static org.apache.dubbo.common.function.ThrowableFunction.execute;\n-import static org.apache.dubbo.common.utils.AnnotationUtils.isAnyAnnotationPresent;\n-import static org.apache.dubbo.common.utils.ClassUtils.forName;\n-import static org.apache.dubbo.common.utils.ClassUtils.getAllInterfaces;\n-import static org.apache.dubbo.common.utils.MethodUtils.excludedDeclaredClass;\n-import static org.apache.dubbo.common.utils.MethodUtils.getAllMethods;\n-import static org.apache.dubbo.common.utils.MethodUtils.overrides;\n-\n-/**\n- * The abstract {@link ServiceRestMetadataResolver} class to provider some template methods assemble the instance of\n- * {@link ServiceRestMetadata} will extended by the sub-classes.\n- *\n- * @since 2.7.6\n- */\n-public abstract class AbstractServiceRestMetadataResolver implements ServiceRestMetadataResolver {\n-\n-    private final Map<String, List<AnnotatedMethodParameterProcessor>> parameterProcessorsMap;\n-\n-    public AbstractServiceRestMetadataResolver() {\n-        this.parameterProcessorsMap = loadAnnotatedMethodParameterProcessors();\n-    }\n-\n-    @Override\n-    public final boolean supports(Class<?> serviceType) {\n-        return isImplementedInterface(serviceType) && isServiceAnnotationPresent(serviceType) && supports0(serviceType);\n-    }\n-\n-    protected final boolean isImplementedInterface(Class<?> serviceType) {\n-        return !getAllInterfaces(serviceType).isEmpty();\n-    }\n-\n-    protected final boolean isServiceAnnotationPresent(Class<?> serviceType) {\n-        return isAnyAnnotationPresent(serviceType, DubboService.class, Service.class,\n-                com.alibaba.dubbo.config.annotation.Service.class);\n-    }\n-\n-    /**\n-     * internal support method\n-     *\n-     * @param serviceType Dubbo Service interface or type\n-     * @return If supports, return <code>true</code>, or <code>false</code>\n-     */\n-    protected abstract boolean supports0(Class<?> serviceType);\n-\n-    @Override\n-    public final ServiceRestMetadata resolve(Class<?> serviceType) {\n-\n-        ServiceRestMetadata serviceRestMetadata = new ServiceRestMetadata();\n-\n-        // Process ServiceRestMetadata\n-        processServiceRestMetadata(serviceRestMetadata, serviceType);\n-\n-        // Process RestMethodMetadata\n-        processAllRestMethodMetadata(serviceRestMetadata, serviceType);\n-\n-        return serviceRestMetadata;\n-    }\n-\n-    /**\n-     * Process the service type including the sub-routines:\n-     * <ul>\n-     *     <li>{@link ServiceRestMetadata#setServiceInterface(String)}</li>\n-     *     <li>{@link ServiceRestMetadata#setVersion(String)}</li>\n-     *     <li>{@link ServiceRestMetadata#setGroup(String)}</li>\n-     * </ul>\n-     *\n-     * @param serviceRestMetadata {@link ServiceRestMetadata}\n-     * @param serviceType         Dubbo Service interface or type\n-     */\n-    protected void processServiceRestMetadata(ServiceRestMetadata serviceRestMetadata, Class<?> serviceType) {\n-        ServiceAnnotationResolver resolver = new ServiceAnnotationResolver(serviceType);\n-        serviceRestMetadata.setServiceInterface(resolver.resolveInterfaceClassName());\n-        serviceRestMetadata.setVersion(resolver.resolveVersion());\n-        serviceRestMetadata.setGroup(resolver.resolveGroup());\n-    }\n-\n-    /**\n-     * Process all {@link RestMethodMetadata}\n-     *\n-     * @param serviceRestMetadata {@link ServiceRestMetadata}\n-     * @param serviceType         Dubbo Service interface or type\n-     */\n-    protected void processAllRestMethodMetadata(ServiceRestMetadata serviceRestMetadata, Class<?> serviceType) {\n-        Class<?> serviceInterfaceClass = resolveServiceInterfaceClass(serviceRestMetadata, serviceType);\n-        Map<Method, Method> serviceMethodsMap = resolveServiceMethodsMap(serviceType, serviceInterfaceClass);\n-        for (Map.Entry<Method, Method> entry : serviceMethodsMap.entrySet()) {\n-            // try the overrider method first\n-            Method serviceMethod = entry.getKey();\n-            // If failed, it indicates the overrider method does not contain metadata , then try the declared method\n-            if (!processRestMethodMetadata(serviceMethod, serviceType, serviceInterfaceClass, serviceRestMetadata.getMeta()::add)) {\n-                Method declaredServiceMethod = entry.getValue();\n-                processRestMethodMetadata(declaredServiceMethod, serviceType, serviceInterfaceClass,\n-                        serviceRestMetadata.getMeta()::add);\n-            }\n-        }\n-    }\n-\n-    /**\n-     * Resolve a map of all public services methods from the specified service type and its interface class, whose key is the\n-     * declared method, and the value is the overrider method\n-     *\n-     * @param serviceType           the service interface implementation class\n-     * @param serviceInterfaceClass the service interface class\n-     * @return non-null read-only {@link Map}\n-     */\n-    protected Map<Method, Method> resolveServiceMethodsMap(Class<?> serviceType, Class<?> serviceInterfaceClass) {\n-        Map<Method, Method> serviceMethodsMap = new LinkedHashMap<>();\n-        // exclude the public methods declared in java.lang.Object.class\n-        List<Method> declaredServiceMethods = new ArrayList<>(getAllMethods(serviceInterfaceClass, excludedDeclaredClass(Object.class)));\n-        List<Method> serviceMethods = new ArrayList<>(getAllMethods(serviceType, excludedDeclaredClass(Object.class)));\n-\n-        // sort methods\n-        sort(declaredServiceMethods, MethodComparator.INSTANCE);\n-        sort(serviceMethods, MethodComparator.INSTANCE);\n-\n-        for (Method declaredServiceMethod : declaredServiceMethods) {\n-            for (Method serviceMethod : serviceMethods) {\n-                if (overrides(serviceMethod, declaredServiceMethod)) {\n-                    serviceMethodsMap.put(serviceMethod, declaredServiceMethod);\n-                    continue;\n-                }\n-            }\n-        }\n-        // make them to be read-only\n-        return unmodifiableMap(serviceMethodsMap);\n-    }\n-\n-    /**\n-     * Resolve the class of Dubbo Service interface\n-     *\n-     * @param serviceRestMetadata {@link ServiceRestMetadata}\n-     * @param serviceType         Dubbo Service interface or type\n-     * @return non-null\n-     * @throws RuntimeException If the class is not found, the {@link RuntimeException} wraps the cause will be thrown\n-     */\n-    protected Class<?> resolveServiceInterfaceClass(ServiceRestMetadata serviceRestMetadata, Class<?> serviceType) {\n-        return execute(serviceType.getClassLoader(), classLoader -> {\n-            String serviceInterface = serviceRestMetadata.getServiceInterface();\n-            return forName(serviceInterface, classLoader);\n-        });\n-    }\n-\n-    /**\n-     * Process the single {@link RestMethodMetadata} by the specified {@link Consumer} if present\n-     *\n-     * @param serviceMethod         Dubbo Service method\n-     * @param serviceType           Dubbo Service interface or type\n-     * @param serviceInterfaceClass The type of Dubbo Service interface\n-     * @param metadataToProcess     {@link RestMethodMetadata} to process if present\n-     * @return if processed successfully, return <code>true</code>, or <code>false</code>\n-     */\n-    protected boolean processRestMethodMetadata(Method serviceMethod, Class<?> serviceType,\n-                                                Class<?> serviceInterfaceClass,\n-                                                Consumer<RestMethodMetadata> metadataToProcess) {\n-\n-        if (!isRestCapableMethod(serviceMethod, serviceType, serviceInterfaceClass)) {\n-            return false;\n-        }\n-\n-        String requestPath = resolveRequestPath(serviceMethod, serviceType, serviceInterfaceClass); // requestPath is required\n-\n-        if (requestPath == null) {\n-            return false;\n-        }\n-\n-        String requestMethod = resolveRequestMethod(serviceMethod, serviceType, serviceInterfaceClass); // requestMethod is required\n-\n-        if (requestMethod == null) {\n-            return false;\n-        }\n-\n-        RestMethodMetadata metadata = new RestMethodMetadata();\n-\n-        MethodDefinition methodDefinition = resolveMethodDefinition(serviceMethod, serviceType, serviceInterfaceClass);\n-        // Set MethodDefinition\n-        metadata.setMethod(methodDefinition);\n-\n-        // process the annotated method parameters\n-        processAnnotatedMethodParameters(serviceMethod, serviceType, serviceInterfaceClass, metadata);\n-\n-        // process produces\n-        Set<String> produces = new LinkedHashSet<>();\n-        processProduces(serviceMethod, serviceType, serviceInterfaceClass, produces);\n-\n-        // process consumes\n-        Set<String> consumes = new LinkedHashSet<>();\n-        processConsumes(serviceMethod, serviceType, serviceInterfaceClass, consumes);\n-\n-        // Initialize RequestMetadata\n-        RequestMetadata request = metadata.getRequest();\n-        request.setPath(requestPath);\n-        request.setMethod(requestMethod);\n-        request.setProduces(produces);\n-        request.setConsumes(consumes);\n-\n-        // Post-Process\n-        postResolveRestMethodMetadata(serviceMethod, serviceType, serviceInterfaceClass, metadata);\n-\n-        // Accept RestMethodMetadata\n-        metadataToProcess.accept(metadata);\n-\n-        return true;\n-    }\n-\n-    /**\n-     * Test the service method is capable of REST or not?\n-     *\n-     * @param serviceMethod         Dubbo Service method\n-     * @param serviceType           Dubbo Service interface or type\n-     * @param serviceInterfaceClass The type of Dubbo Service interface\n-     * @return If capable, return <code>true</code>\n-     */\n-    protected abstract boolean isRestCapableMethod(Method serviceMethod, Class<?> serviceType, Class<?>\n-            serviceInterfaceClass);\n-\n-    /**\n-     * Resolve the request method\n-     *\n-     * @param serviceMethod         Dubbo Service method\n-     * @param serviceType           Dubbo Service interface or type\n-     * @param serviceInterfaceClass The type of Dubbo Service interface\n-     * @return if can't be resolve, return <code>null</code>\n-     */\n-    protected abstract String resolveRequestMethod(Method serviceMethod, Class<?> serviceType, Class<?>\n-            serviceInterfaceClass);\n-\n-    /**\n-     * Resolve the request path\n-     *\n-     * @param serviceMethod         Dubbo Service method\n-     * @param serviceType           Dubbo Service interface or type\n-     * @param serviceInterfaceClass The type of Dubbo Service interface\n-     * @return if can't be resolve, return <code>null</code>\n-     */\n-    protected abstract String resolveRequestPath(Method serviceMethod, Class<?> serviceType, Class<?>\n-            serviceInterfaceClass);\n-\n-    /**\n-     * Resolve the {@link MethodDefinition}\n-     *\n-     * @param serviceMethod         Dubbo Service method\n-     * @param serviceType           Dubbo Service interface or type\n-     * @param serviceInterfaceClass The type of Dubbo Service interface\n-     * @return if can't be resolve, return <code>null</code>\n-     * @see MethodDefinitionBuilder\n-     */\n-    protected MethodDefinition resolveMethodDefinition(Method serviceMethod, Class<?> serviceType,\n-                                                       Class<?> serviceInterfaceClass) {\n-        MethodDefinitionBuilder builder = new MethodDefinitionBuilder();\n-        return builder.build(serviceMethod);\n-    }\n-\n-    private void processAnnotatedMethodParameters(Method serviceMethod, Class<?> serviceType,\n-                                                  Class<?> serviceInterfaceClass, RestMethodMetadata metadata) {\n-        int paramCount = serviceMethod.getParameterCount();\n-        Parameter[] parameters = serviceMethod.getParameters();\n-        for (int i = 0; i < paramCount; i++) {\n-            Parameter parameter = parameters[i];\n-            // Add indexed parameter name\n-            metadata.addIndexToName(i, parameter.getName());\n-            processAnnotatedMethodParameter(parameter, i, serviceMethod, serviceType, serviceInterfaceClass, metadata);\n-        }\n-    }\n-\n-    private void processAnnotatedMethodParameter(Parameter parameter, int parameterIndex, Method serviceMethod,\n-                                                 Class<?> serviceType, Class<?> serviceInterfaceClass,\n-                                                 RestMethodMetadata metadata) {\n-        Annotation[] annotations = parameter.getAnnotations();\n-        for (Annotation annotation : annotations) {\n-            String annotationType = annotation.annotationType().getName();\n-            parameterProcessorsMap.getOrDefault(annotationType, emptyList())\n-                    .forEach(processor -> {\n-                        processor.process(annotation, parameter, parameterIndex, serviceMethod, serviceType,\n-                                serviceInterfaceClass, metadata);\n-                    });\n-        }\n-    }\n-\n-    protected abstract void processProduces(Method serviceMethod, Class<?> serviceType, Class<?>\n-            serviceInterfaceClass,\n-                                            Set<String> produces);\n-\n-    protected abstract void processConsumes(Method serviceMethod, Class<?> serviceType, Class<?>\n-            serviceInterfaceClass,\n-                                            Set<String> consumes);\n-\n-    protected void postResolveRestMethodMetadata(Method serviceMethod, Class<?> serviceType,\n-                                                 Class<?> serviceInterfaceClass, RestMethodMetadata metadata) {\n-    }\n-\n-    private static Map<String, List<AnnotatedMethodParameterProcessor>> loadAnnotatedMethodParameterProcessors() {\n-        Map<String, List<AnnotatedMethodParameterProcessor>> parameterProcessorsMap = new LinkedHashMap<>();\n-        getExtensionLoader(AnnotatedMethodParameterProcessor.class)\n-                .getSupportedExtensionInstances()\n-                .forEach(processor -> {\n-                    List<AnnotatedMethodParameterProcessor> processors =\n-                            parameterProcessorsMap.computeIfAbsent(processor.getAnnotationType(), k -> new LinkedList<>());\n-                    processors.add(processor);\n-                });\n-        return parameterProcessorsMap;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest;\r\n+\r\n+import org.apache.dubbo.common.utils.MethodComparator;\r\n+import org.apache.dubbo.common.utils.ServiceAnnotationResolver;\r\n+import org.apache.dubbo.config.annotation.DubboService;\r\n+import org.apache.dubbo.config.annotation.Service;\r\n+import org.apache.dubbo.metadata.definition.MethodDefinitionBuilder;\r\n+import org.apache.dubbo.metadata.definition.model.MethodDefinition;\r\n+\r\n+import java.lang.annotation.Annotation;\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Parameter;\r\n+import java.util.ArrayList;\r\n+import java.util.LinkedHashMap;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.function.Consumer;\r\n+\r\n+import static java.util.Collections.emptyList;\r\n+import static java.util.Collections.sort;\r\n+import static java.util.Collections.unmodifiableMap;\r\n+import static org.apache.dubbo.common.extension.ExtensionLoader.getExtensionLoader;\r\n+import static org.apache.dubbo.common.function.ThrowableFunction.execute;\r\n+import static org.apache.dubbo.common.utils.AnnotationUtils.isAnyAnnotationPresent;\r\n+import static org.apache.dubbo.common.utils.ClassUtils.forName;\r\n+import static org.apache.dubbo.common.utils.ClassUtils.getAllInterfaces;\r\n+import static org.apache.dubbo.common.utils.MethodUtils.excludedDeclaredClass;\r\n+import static org.apache.dubbo.common.utils.MethodUtils.getAllMethods;\r\n+import static org.apache.dubbo.common.utils.MethodUtils.overrides;\r\n+\r\n+/**\r\n+ * The abstract {@link ServiceRestMetadataResolver} class to provider some template methods assemble the instance of\r\n+ * {@link ServiceRestMetadata} will extended by the sub-classes.\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public abstract class AbstractServiceRestMetadataResolver implements ServiceRestMetadataResolver {\r\n+\r\n+    private final Map<String, List<AnnotatedMethodParameterProcessor>> parameterProcessorsMap;\r\n+\r\n+    public AbstractServiceRestMetadataResolver() {\r\n+        this.parameterProcessorsMap = loadAnnotatedMethodParameterProcessors();\r\n+    }\r\n+\r\n+    @Override\r\n+    public final boolean supports(Class<?> serviceType) {\r\n+        return isImplementedInterface(serviceType) && isServiceAnnotationPresent(serviceType) && supports0(serviceType);\r\n+    }\r\n+\r\n+    protected final boolean isImplementedInterface(Class<?> serviceType) {\r\n+        return !getAllInterfaces(serviceType).isEmpty();\r\n+    }\r\n+\r\n+    protected final boolean isServiceAnnotationPresent(Class<?> serviceType) {\r\n+        return isAnyAnnotationPresent(serviceType, DubboService.class, Service.class,\r\n+                com.alibaba.dubbo.config.annotation.Service.class);\r\n+    }\r\n+\r\n+    /**\r\n+     * internal support method\r\n+     *\r\n+     * @param serviceType Dubbo Service interface or type\r\n+     * @return If supports, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    protected abstract boolean supports0(Class<?> serviceType);\r\n+\r\n+    @Override\r\n+    public final ServiceRestMetadata resolve(Class<?> serviceType) {\r\n+\r\n+        ServiceRestMetadata serviceRestMetadata = new ServiceRestMetadata();\r\n+\r\n+        // Process ServiceRestMetadata\r\n+        processServiceRestMetadata(serviceRestMetadata, serviceType);\r\n+\r\n+        // Process RestMethodMetadata\r\n+        processAllRestMethodMetadata(serviceRestMetadata, serviceType);\r\n+\r\n+        return serviceRestMetadata;\r\n+    }\r\n+\r\n+    /**\r\n+     * Process the service type including the sub-routines:\r\n+     * <ul>\r\n+     *     <li>{@link ServiceRestMetadata#setServiceInterface(String)}</li>\r\n+     *     <li>{@link ServiceRestMetadata#setVersion(String)}</li>\r\n+     *     <li>{@link ServiceRestMetadata#setGroup(String)}</li>\r\n+     * </ul>\r\n+     *\r\n+     * @param serviceRestMetadata {@link ServiceRestMetadata}\r\n+     * @param serviceType         Dubbo Service interface or type\r\n+     */\r\n+    protected void processServiceRestMetadata(ServiceRestMetadata serviceRestMetadata, Class<?> serviceType) {\r\n+        ServiceAnnotationResolver resolver = new ServiceAnnotationResolver(serviceType);\r\n+        serviceRestMetadata.setServiceInterface(resolver.resolveInterfaceClassName());\r\n+        serviceRestMetadata.setVersion(resolver.resolveVersion());\r\n+        serviceRestMetadata.setGroup(resolver.resolveGroup());\r\n+    }\r\n+\r\n+    /**\r\n+     * Process all {@link RestMethodMetadata}\r\n+     *\r\n+     * @param serviceRestMetadata {@link ServiceRestMetadata}\r\n+     * @param serviceType         Dubbo Service interface or type\r\n+     */\r\n+    protected void processAllRestMethodMetadata(ServiceRestMetadata serviceRestMetadata, Class<?> serviceType) {\r\n+        Class<?> serviceInterfaceClass = resolveServiceInterfaceClass(serviceRestMetadata, serviceType);\r\n+        Map<Method, Method> serviceMethodsMap = resolveServiceMethodsMap(serviceType, serviceInterfaceClass);\r\n+        for (Map.Entry<Method, Method> entry : serviceMethodsMap.entrySet()) {\r\n+            // try the overrider method first\r\n+            Method serviceMethod = entry.getKey();\r\n+            // If failed, it indicates the overrider method does not contain metadata , then try the declared method\r\n+            if (!processRestMethodMetadata(serviceMethod, serviceType, serviceInterfaceClass, serviceRestMetadata.getMeta()::add)) {\r\n+                Method declaredServiceMethod = entry.getValue();\r\n+                processRestMethodMetadata(declaredServiceMethod, serviceType, serviceInterfaceClass,\r\n+                        serviceRestMetadata.getMeta()::add);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Resolve a map of all public services methods from the specified service type and its interface class, whose key is the\r\n+     * declared method, and the value is the overrider method\r\n+     *\r\n+     * @param serviceType           the service interface implementation class\r\n+     * @param serviceInterfaceClass the service interface class\r\n+     * @return non-null read-only {@link Map}\r\n+     */\r\n+    protected Map<Method, Method> resolveServiceMethodsMap(Class<?> serviceType, Class<?> serviceInterfaceClass) {\r\n+        Map<Method, Method> serviceMethodsMap = new LinkedHashMap<>();\r\n+        // exclude the public methods declared in java.lang.Object.class\r\n+        List<Method> declaredServiceMethods = new ArrayList<>(getAllMethods(serviceInterfaceClass, excludedDeclaredClass(Object.class)));\r\n+        List<Method> serviceMethods = new ArrayList<>(getAllMethods(serviceType, excludedDeclaredClass(Object.class)));\r\n+\r\n+        // sort methods\r\n+        sort(declaredServiceMethods, MethodComparator.INSTANCE);\r\n+        sort(serviceMethods, MethodComparator.INSTANCE);\r\n+\r\n+        for (Method declaredServiceMethod : declaredServiceMethods) {\r\n+            for (Method serviceMethod : serviceMethods) {\r\n+                if (overrides(serviceMethod, declaredServiceMethod)) {\r\n+                    serviceMethodsMap.put(serviceMethod, declaredServiceMethod);\r\n+                    continue;\r\n+                }\r\n+            }\r\n+        }\r\n+        // make them to be read-only\r\n+        return unmodifiableMap(serviceMethodsMap);\r\n+    }\r\n+\r\n+    /**\r\n+     * Resolve the class of Dubbo Service interface\r\n+     *\r\n+     * @param serviceRestMetadata {@link ServiceRestMetadata}\r\n+     * @param serviceType         Dubbo Service interface or type\r\n+     * @return non-null\r\n+     * @throws RuntimeException If the class is not found, the {@link RuntimeException} wraps the cause will be thrown\r\n+     */\r\n+    protected Class<?> resolveServiceInterfaceClass(ServiceRestMetadata serviceRestMetadata, Class<?> serviceType) {\r\n+        return execute(serviceType.getClassLoader(), classLoader -> {\r\n+            String serviceInterface = serviceRestMetadata.getServiceInterface();\r\n+            return forName(serviceInterface, classLoader);\r\n+        });\r\n+    }\r\n+\r\n+    /**\r\n+     * Process the single {@link RestMethodMetadata} by the specified {@link Consumer} if present\r\n+     *\r\n+     * @param serviceMethod         Dubbo Service method\r\n+     * @param serviceType           Dubbo Service interface or type\r\n+     * @param serviceInterfaceClass The type of Dubbo Service interface\r\n+     * @param metadataToProcess     {@link RestMethodMetadata} to process if present\r\n+     * @return if processed successfully, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    protected boolean processRestMethodMetadata(Method serviceMethod, Class<?> serviceType,\r\n+                                                Class<?> serviceInterfaceClass,\r\n+                                                Consumer<RestMethodMetadata> metadataToProcess) {\r\n+\r\n+        if (!isRestCapableMethod(serviceMethod, serviceType, serviceInterfaceClass)) {\r\n+            return false;\r\n+        }\r\n+\r\n+        String requestPath = resolveRequestPath(serviceMethod, serviceType, serviceInterfaceClass); // requestPath is required\r\n+\r\n+        if (requestPath == null) {\r\n+            return false;\r\n+        }\r\n+\r\n+        String requestMethod = resolveRequestMethod(serviceMethod, serviceType, serviceInterfaceClass); // requestMethod is required\r\n+\r\n+        if (requestMethod == null) {\r\n+            return false;\r\n+        }\r\n+\r\n+        RestMethodMetadata metadata = new RestMethodMetadata();\r\n+\r\n+        MethodDefinition methodDefinition = resolveMethodDefinition(serviceMethod, serviceType, serviceInterfaceClass);\r\n+        // Set MethodDefinition\r\n+        metadata.setMethod(methodDefinition);\r\n+\r\n+        // process the annotated method parameters\r\n+        processAnnotatedMethodParameters(serviceMethod, serviceType, serviceInterfaceClass, metadata);\r\n+\r\n+        // process produces\r\n+        Set<String> produces = new LinkedHashSet<>();\r\n+        processProduces(serviceMethod, serviceType, serviceInterfaceClass, produces);\r\n+\r\n+        // process consumes\r\n+        Set<String> consumes = new LinkedHashSet<>();\r\n+        processConsumes(serviceMethod, serviceType, serviceInterfaceClass, consumes);\r\n+\r\n+        // Initialize RequestMetadata\r\n+        RequestMetadata request = metadata.getRequest();\r\n+        request.setPath(requestPath);\r\n+        request.setMethod(requestMethod);\r\n+        request.setProduces(produces);\r\n+        request.setConsumes(consumes);\r\n+\r\n+        // Post-Process\r\n+        postResolveRestMethodMetadata(serviceMethod, serviceType, serviceInterfaceClass, metadata);\r\n+\r\n+        // Accept RestMethodMetadata\r\n+        metadataToProcess.accept(metadata);\r\n+\r\n+        return true;\r\n+    }\r\n+\r\n+    /**\r\n+     * Test the service method is capable of REST or not?\r\n+     *\r\n+     * @param serviceMethod         Dubbo Service method\r\n+     * @param serviceType           Dubbo Service interface or type\r\n+     * @param serviceInterfaceClass The type of Dubbo Service interface\r\n+     * @return If capable, return <code>true</code>\r\n+     */\r\n+    protected abstract boolean isRestCapableMethod(Method serviceMethod, Class<?> serviceType, Class<?>\r\n+            serviceInterfaceClass);\r\n+\r\n+    /**\r\n+     * Resolve the request method\r\n+     *\r\n+     * @param serviceMethod         Dubbo Service method\r\n+     * @param serviceType           Dubbo Service interface or type\r\n+     * @param serviceInterfaceClass The type of Dubbo Service interface\r\n+     * @return if can't be resolve, return <code>null</code>\r\n+     */\r\n+    protected abstract String resolveRequestMethod(Method serviceMethod, Class<?> serviceType, Class<?>\r\n+            serviceInterfaceClass);\r\n+\r\n+    /**\r\n+     * Resolve the request path\r\n+     *\r\n+     * @param serviceMethod         Dubbo Service method\r\n+     * @param serviceType           Dubbo Service interface or type\r\n+     * @param serviceInterfaceClass The type of Dubbo Service interface\r\n+     * @return if can't be resolve, return <code>null</code>\r\n+     */\r\n+    protected abstract String resolveRequestPath(Method serviceMethod, Class<?> serviceType, Class<?>\r\n+            serviceInterfaceClass);\r\n+\r\n+    /**\r\n+     * Resolve the {@link MethodDefinition}\r\n+     *\r\n+     * @param serviceMethod         Dubbo Service method\r\n+     * @param serviceType           Dubbo Service interface or type\r\n+     * @param serviceInterfaceClass The type of Dubbo Service interface\r\n+     * @return if can't be resolve, return <code>null</code>\r\n+     * @see MethodDefinitionBuilder\r\n+     */\r\n+    protected MethodDefinition resolveMethodDefinition(Method serviceMethod, Class<?> serviceType,\r\n+                                                       Class<?> serviceInterfaceClass) {\r\n+        MethodDefinitionBuilder builder = new MethodDefinitionBuilder();\r\n+        return builder.build(serviceMethod);\r\n+    }\r\n+\r\n+    private void processAnnotatedMethodParameters(Method serviceMethod, Class<?> serviceType,\r\n+                                                  Class<?> serviceInterfaceClass, RestMethodMetadata metadata) {\r\n+        int paramCount = serviceMethod.getParameterCount();\r\n+        Parameter[] parameters = serviceMethod.getParameters();\r\n+        for (int i = 0; i < paramCount; i++) {\r\n+            Parameter parameter = parameters[i];\r\n+            // Add indexed parameter name\r\n+            metadata.addIndexToName(i, parameter.getName());\r\n+            processAnnotatedMethodParameter(parameter, i, serviceMethod, serviceType, serviceInterfaceClass, metadata);\r\n+        }\r\n+    }\r\n+\r\n+    private void processAnnotatedMethodParameter(Parameter parameter, int parameterIndex, Method serviceMethod,\r\n+                                                 Class<?> serviceType, Class<?> serviceInterfaceClass,\r\n+                                                 RestMethodMetadata metadata) {\r\n+        Annotation[] annotations = parameter.getAnnotations();\r\n+        for (Annotation annotation : annotations) {\r\n+            String annotationType = annotation.annotationType().getName();\r\n+            parameterProcessorsMap.getOrDefault(annotationType, emptyList())\r\n+                    .forEach(processor -> {\r\n+                        processor.process(annotation, parameter, parameterIndex, serviceMethod, serviceType,\r\n+                                serviceInterfaceClass, metadata);\r\n+                    });\r\n+        }\r\n+    }\r\n+\r\n+    protected abstract void processProduces(Method serviceMethod, Class<?> serviceType, Class<?>\r\n+            serviceInterfaceClass,\r\n+                                            Set<String> produces);\r\n+\r\n+    protected abstract void processConsumes(Method serviceMethod, Class<?> serviceType, Class<?>\r\n+            serviceInterfaceClass,\r\n+                                            Set<String> consumes);\r\n+\r\n+    protected void postResolveRestMethodMetadata(Method serviceMethod, Class<?> serviceType,\r\n+                                                 Class<?> serviceInterfaceClass, RestMethodMetadata metadata) {\r\n+    }\r\n+\r\n+    private static Map<String, List<AnnotatedMethodParameterProcessor>> loadAnnotatedMethodParameterProcessors() {\r\n+        Map<String, List<AnnotatedMethodParameterProcessor>> parameterProcessorsMap = new LinkedHashMap<>();\r\n+        getExtensionLoader(AnnotatedMethodParameterProcessor.class)\r\n+                .getSupportedExtensionInstances()\r\n+                .forEach(processor -> {\r\n+                    List<AnnotatedMethodParameterProcessor> processors =\r\n+                            parameterProcessorsMap.computeIfAbsent(processor.getAnnotationType(), k -> new LinkedList<>());\r\n+                    processors.add(processor);\r\n+                });\r\n+        return parameterProcessorsMap;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/AnnotatedMethodParameterProcessor.java", "source2": "org/apache/dubbo/metadata/rest/AnnotatedMethodParameterProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,66 +1,66 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest;\n-\n-import org.apache.dubbo.common.extension.SPI;\n-import org.apache.dubbo.common.lang.Prioritized;\n-\n-import javax.lang.model.element.VariableElement;\n-import java.lang.annotation.Annotation;\n-import java.lang.reflect.Method;\n-import java.lang.reflect.Parameter;\n-\n-/**\n- * The interface to process the annotated method parameter\n- *\n- * @since 2.7.6\n- */\n-@SPI\n-public interface AnnotatedMethodParameterProcessor extends Prioritized {\n-\n-    /**\n-     * The string presenting the annotation type\n-     *\n-     * @return non-null\n-     */\n-    String getAnnotationType();\n-\n-    /**\n-     * Process the specified method {@link VariableElement parameter}\n-     *\n-     * @param annotation            {@link Annotation the target annotation} whose type is {@link #getAnnotationType()}\n-     * @param parameter             the method parameter\n-     * @param parameterIndex        the index of method parameter\n-     * @param method                {@link Method method that parameter belongs to}\n-     * @param serviceType           Dubbo Service interface or type\n-     * @param serviceInterfaceClass The type of Dubbo Service interface\n-     * @param restMethodMetadata    {@link RestMethodMetadata the metadata is used to update}\n-     */\n-    void process(Annotation annotation, Parameter parameter, int parameterIndex, Method method,\n-                 Class<?> serviceType, Class<?> serviceInterfaceClass, RestMethodMetadata restMethodMetadata);\n-\n-    /**\n-     * Build the default value\n-     *\n-     * @param parameterIndex the index of parameter\n-     * @return the placeholder\n-     */\n-    static String buildDefaultValue(int parameterIndex) {\n-        return \"{\" + parameterIndex + \"}\";\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest;\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+import org.apache.dubbo.common.lang.Prioritized;\r\n+\r\n+import javax.lang.model.element.VariableElement;\r\n+import java.lang.annotation.Annotation;\r\n+import java.lang.reflect.Method;\r\n+import java.lang.reflect.Parameter;\r\n+\r\n+/**\r\n+ * The interface to process the annotated method parameter\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+@SPI\r\n+public interface AnnotatedMethodParameterProcessor extends Prioritized {\r\n+\r\n+    /**\r\n+     * The string presenting the annotation type\r\n+     *\r\n+     * @return non-null\r\n+     */\r\n+    String getAnnotationType();\r\n+\r\n+    /**\r\n+     * Process the specified method {@link VariableElement parameter}\r\n+     *\r\n+     * @param annotation            {@link Annotation the target annotation} whose type is {@link #getAnnotationType()}\r\n+     * @param parameter             the method parameter\r\n+     * @param parameterIndex        the index of method parameter\r\n+     * @param method                {@link Method method that parameter belongs to}\r\n+     * @param serviceType           Dubbo Service interface or type\r\n+     * @param serviceInterfaceClass The type of Dubbo Service interface\r\n+     * @param restMethodMetadata    {@link RestMethodMetadata the metadata is used to update}\r\n+     */\r\n+    void process(Annotation annotation, Parameter parameter, int parameterIndex, Method method,\r\n+                 Class<?> serviceType, Class<?> serviceInterfaceClass, RestMethodMetadata restMethodMetadata);\r\n+\r\n+    /**\r\n+     * Build the default value\r\n+     *\r\n+     * @param parameterIndex the index of parameter\r\n+     * @return the placeholder\r\n+     */\r\n+    static String buildDefaultValue(int parameterIndex) {\r\n+        return \"{\" + parameterIndex + \"}\";\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/ClassPathServiceRestMetadataReader.java", "source2": "org/apache/dubbo/metadata/rest/ClassPathServiceRestMetadataReader.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,82 +1,82 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest;\n-\n-import com.google.gson.Gson;\n-import com.google.gson.JsonArray;\n-import com.google.gson.JsonElement;\n-import com.google.gson.JsonParser;\n-\n-import java.io.InputStream;\n-import java.io.InputStreamReader;\n-import java.net.URL;\n-import java.util.Enumeration;\n-import java.util.LinkedList;\n-import java.util.List;\n-\n-import static java.util.Collections.unmodifiableList;\n-import static org.apache.dubbo.common.function.ThrowableAction.execute;\n-import static org.apache.dubbo.metadata.rest.RestMetadataConstants.METADATA_ENCODING;\n-import static org.apache.dubbo.metadata.rest.RestMetadataConstants.SERVICE_REST_METADATA_RESOURCE_PATH;\n-\n-/**\n- * Class-Path based {@link ServiceRestMetadataReader} implementation\n- *\n- * @see ServiceRestMetadataReader\n- * @since 2.7.6\n- */\n-public class ClassPathServiceRestMetadataReader implements ServiceRestMetadataReader {\n-\n-    private final String serviceRestMetadataJsonResourcePath;\n-\n-    public ClassPathServiceRestMetadataReader() {\n-        this(SERVICE_REST_METADATA_RESOURCE_PATH);\n-    }\n-\n-    public ClassPathServiceRestMetadataReader(String serviceRestMetadataJsonResourcePath) {\n-        this.serviceRestMetadataJsonResourcePath = serviceRestMetadataJsonResourcePath;\n-    }\n-\n-    @Override\n-    public List<ServiceRestMetadata> read() {\n-\n-        List<ServiceRestMetadata> serviceRestMetadataList = new LinkedList<>();\n-\n-        ClassLoader classLoader = getClass().getClassLoader();\n-\n-        execute(() -> {\n-            Enumeration<URL> resources = classLoader.getResources(serviceRestMetadataJsonResourcePath);\n-            Gson gson = new Gson();\n-            while (resources.hasMoreElements()) {\n-                URL resource = resources.nextElement();\n-                InputStream inputStream = resource.openStream();\n-                JsonParser parser = new JsonParser();\n-                JsonElement jsonElement = parser.parse(new InputStreamReader(inputStream, METADATA_ENCODING));\n-                if (jsonElement.isJsonArray()) {\n-                    JsonArray jsonArray = jsonElement.getAsJsonArray();\n-                    for (int i = 0; i < jsonArray.size(); i++) {\n-                        JsonElement childJsonElement = jsonArray.get(i);\n-                        ServiceRestMetadata serviceRestMetadata = gson.fromJson(childJsonElement, ServiceRestMetadata.class);\n-                        serviceRestMetadataList.add(serviceRestMetadata);\n-                    }\n-                }\n-            }\n-        });\n-\n-        return unmodifiableList(serviceRestMetadataList);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest;\r\n+\r\n+import com.google.gson.Gson;\r\n+import com.google.gson.JsonArray;\r\n+import com.google.gson.JsonElement;\r\n+import com.google.gson.JsonParser;\r\n+\r\n+import java.io.InputStream;\r\n+import java.io.InputStreamReader;\r\n+import java.net.URL;\r\n+import java.util.Enumeration;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+\r\n+import static java.util.Collections.unmodifiableList;\r\n+import static org.apache.dubbo.common.function.ThrowableAction.execute;\r\n+import static org.apache.dubbo.metadata.rest.RestMetadataConstants.METADATA_ENCODING;\r\n+import static org.apache.dubbo.metadata.rest.RestMetadataConstants.SERVICE_REST_METADATA_RESOURCE_PATH;\r\n+\r\n+/**\r\n+ * Class-Path based {@link ServiceRestMetadataReader} implementation\r\n+ *\r\n+ * @see ServiceRestMetadataReader\r\n+ * @since 2.7.6\r\n+ */\r\n+public class ClassPathServiceRestMetadataReader implements ServiceRestMetadataReader {\r\n+\r\n+    private final String serviceRestMetadataJsonResourcePath;\r\n+\r\n+    public ClassPathServiceRestMetadataReader() {\r\n+        this(SERVICE_REST_METADATA_RESOURCE_PATH);\r\n+    }\r\n+\r\n+    public ClassPathServiceRestMetadataReader(String serviceRestMetadataJsonResourcePath) {\r\n+        this.serviceRestMetadataJsonResourcePath = serviceRestMetadataJsonResourcePath;\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<ServiceRestMetadata> read() {\r\n+\r\n+        List<ServiceRestMetadata> serviceRestMetadataList = new LinkedList<>();\r\n+\r\n+        ClassLoader classLoader = getClass().getClassLoader();\r\n+\r\n+        execute(() -> {\r\n+            Enumeration<URL> resources = classLoader.getResources(serviceRestMetadataJsonResourcePath);\r\n+            Gson gson = new Gson();\r\n+            while (resources.hasMoreElements()) {\r\n+                URL resource = resources.nextElement();\r\n+                InputStream inputStream = resource.openStream();\r\n+                JsonParser parser = new JsonParser();\r\n+                JsonElement jsonElement = parser.parse(new InputStreamReader(inputStream, METADATA_ENCODING));\r\n+                if (jsonElement.isJsonArray()) {\r\n+                    JsonArray jsonArray = jsonElement.getAsJsonArray();\r\n+                    for (int i = 0; i < jsonArray.size(); i++) {\r\n+                        JsonElement childJsonElement = jsonArray.get(i);\r\n+                        ServiceRestMetadata serviceRestMetadata = gson.fromJson(childJsonElement, ServiceRestMetadata.class);\r\n+                        serviceRestMetadataList.add(serviceRestMetadata);\r\n+                    }\r\n+                }\r\n+            }\r\n+        });\r\n+\r\n+        return unmodifiableList(serviceRestMetadataList);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/DefaultServiceRestMetadataResolver.java", "source2": "org/apache/dubbo/metadata/rest/DefaultServiceRestMetadataResolver.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,59 +1,59 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest;\n-\n-import java.lang.reflect.Method;\n-import java.util.Set;\n-\n-\n-/**\n- * The default implementation {@link ServiceRestMetadataResolver}\n- *\n- * @since 2.7.6\n- */\n-public class DefaultServiceRestMetadataResolver extends AbstractServiceRestMetadataResolver {\n-\n-    @Override\n-    protected boolean supports0(Class<?> serviceType) {\n-        return false;\n-    }\n-\n-    @Override\n-    protected boolean isRestCapableMethod(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass) {\n-        return false;\n-    }\n-\n-    @Override\n-    protected String resolveRequestMethod(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass) {\n-        return null;\n-    }\n-\n-    @Override\n-    protected String resolveRequestPath(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass) {\n-        return null;\n-    }\n-\n-    @Override\n-    protected void processProduces(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass, Set<String> produces) {\n-\n-    }\n-\n-    @Override\n-    protected void processConsumes(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass, Set<String> consumes) {\n-\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest;\r\n+\r\n+import java.lang.reflect.Method;\r\n+import java.util.Set;\r\n+\r\n+\r\n+/**\r\n+ * The default implementation {@link ServiceRestMetadataResolver}\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class DefaultServiceRestMetadataResolver extends AbstractServiceRestMetadataResolver {\r\n+\r\n+    @Override\r\n+    protected boolean supports0(Class<?> serviceType) {\r\n+        return false;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected boolean isRestCapableMethod(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass) {\r\n+        return false;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String resolveRequestMethod(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass) {\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String resolveRequestPath(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass) {\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void processProduces(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass, Set<String> produces) {\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void processConsumes(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass, Set<String> consumes) {\r\n+\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/RequestMetadata.java", "source2": "org/apache/dubbo/metadata/rest/RequestMetadata.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,226 +1,226 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest;\n-\n-\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-\n-import java.io.Serializable;\n-import java.util.Collection;\n-import java.util.LinkedHashMap;\n-import java.util.LinkedHashSet;\n-import java.util.LinkedList;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Objects;\n-import java.util.Set;\n-\n-import static java.util.Collections.unmodifiableMap;\n-import static org.apache.dubbo.common.utils.PathUtils.normalize;\n-import static org.apache.dubbo.common.utils.StringUtils.isBlank;\n-\n-/**\n- * The metadata class for REST request\n- *\n- * @since 2.7.6\n- */\n-public class RequestMetadata implements Serializable {\n-\n-    private static final long serialVersionUID = -240099840085329958L;\n-\n-    private String method;\n-\n-    private String path;\n-\n-    private Map<String, List<String>> params = new LinkedHashMap<>();\n-\n-    private Map<String, List<String>> headers = new LinkedHashMap<>();\n-\n-    private Set<String> consumes = new LinkedHashSet<>();\n-\n-    private Set<String> produces = new LinkedHashSet<>();\n-\n-    /**\n-     * Default Constructor\n-     */\n-    public RequestMetadata() {\n-    }\n-\n-    public String getMethod() {\n-        return method;\n-    }\n-\n-    public void setMethod(String method) {\n-        this.method = method == null ? null : method.toUpperCase();\n-    }\n-\n-    public String getPath() {\n-        return path;\n-    }\n-\n-    public void setPath(String path) {\n-        this.path = normalize(path);\n-    }\n-\n-    public Map<String, List<String>> getParams() {\n-        return unmodifiableMap(params);\n-    }\n-\n-    public void setParams(Map<String, List<String>> params) {\n-        params(params);\n-    }\n-\n-    private static void add(Map<String, List<String>> multiValueMap, String key, String value) {\n-        if (isBlank(key)) {\n-            return;\n-        }\n-        List<String> values = get(multiValueMap, key, true);\n-        values.add(value);\n-    }\n-\n-    private static <T extends Collection<String>> void addAll(Map<String, List<String>> multiValueMap,\n-                                                              Map<String, T> source) {\n-        for (Map.Entry<String, T> entry : source.entrySet()) {\n-            String key = entry.getKey();\n-            for (String value : entry.getValue()) {\n-                add(multiValueMap, key, value);\n-            }\n-        }\n-    }\n-\n-    private static String getFirst(Map<String, List<String>> multiValueMap, String key) {\n-        List<String> values = get(multiValueMap, key);\n-        return CollectionUtils.isNotEmpty(values) ? values.get(0) : null;\n-    }\n-\n-    private static List<String> get(Map<String, List<String>> multiValueMap, String key) {\n-        return get(multiValueMap, key, false);\n-    }\n-\n-    private static List<String> get(Map<String, List<String>> multiValueMap, String key, boolean createIfAbsent) {\n-        return createIfAbsent ? multiValueMap.computeIfAbsent(key, k -> new LinkedList<>()) : multiValueMap.get(key);\n-    }\n-\n-    public Map<String, List<String>> getHeaders() {\n-        return unmodifiableMap(headers);\n-    }\n-\n-    public void setHeaders(Map<String, List<String>> headers) {\n-        headers(headers);\n-    }\n-\n-    public Set<String> getConsumes() {\n-        return consumes;\n-    }\n-\n-    public void setConsumes(Set<String> consumes) {\n-        this.consumes = consumes;\n-    }\n-\n-    public Set<String> getProduces() {\n-        return produces;\n-    }\n-\n-    public void setProduces(Set<String> produces) {\n-        this.produces = produces;\n-    }\n-\n-    public Set<String> getParamNames() {\n-        return params.keySet();\n-    }\n-\n-    public Set<String> getHeaderNames() {\n-        return headers.keySet();\n-    }\n-\n-//    public List<MediaType> getConsumeMediaTypes() {\n-//        return toMediaTypes(consumes);\n-//    }\n-//\n-//    public List<MediaType> getProduceMediaTypes() {\n-//        return toMediaTypes(produces);\n-//    }\n-\n-    public String getParameter(String name) {\n-        return getFirst(params, name);\n-    }\n-\n-    public String getHeader(String name) {\n-        return getFirst(headers, name);\n-    }\n-\n-    public RequestMetadata addParam(String name, String value) {\n-        add(params, name, value);\n-        return this;\n-    }\n-\n-    public RequestMetadata addHeader(String name, String value) {\n-        add(headers, name, value);\n-        return this;\n-    }\n-\n-    private <T extends Collection<String>> RequestMetadata params(Map<String, T> params) {\n-        addAll(this.params, params);\n-        return this;\n-    }\n-\n-    private <T extends Collection<String>> RequestMetadata headers(Map<String, List<String>> headers) {\n-        if (headers != null && !headers.isEmpty()) {\n-            Map<String, List<String>> httpHeaders = new LinkedHashMap<>();\n-            // Add all headers\n-            addAll(headers, httpHeaders);\n-            // Handles \"Content-Type\" and \"Accept\" headers if present\n-//            mediaTypes(httpHeaders, HttpHeaders.CONTENT_TYPE, this.consumes);\n-//            mediaTypes(httpHeaders, HttpHeaders.ACCEPT, this.produces);\n-            this.headers.putAll(httpHeaders);\n-        }\n-        return this;\n-    }\n-\n-    @Override\n-    public boolean equals(Object o) {\n-        if (this == o) {\n-            return true;\n-        }\n-        if (!(o instanceof RequestMetadata)) {\n-            return false;\n-        }\n-        RequestMetadata that = (RequestMetadata) o;\n-        return Objects.equals(method, that.method)\n-                && Objects.equals(path, that.path)\n-                && Objects.equals(consumes, that.consumes)\n-                && Objects.equals(produces, that.produces) &&\n-                // Metadata should not compare the values\n-                Objects.equals(getParamNames(), that.getParamNames())\n-                && Objects.equals(getHeaderNames(), that.getHeaderNames());\n-\n-    }\n-\n-    @Override\n-    public int hashCode() {\n-        // The values of metadata should not use for the hashCode() method\n-        return Objects.hash(method, path, consumes, produces, getParamNames(),\n-                getHeaderNames());\n-    }\n-\n-    @Override\n-    public String toString() {\n-        return \"RequestMetadata{\" + \"method='\" + method + '\\'' + \", path='\" + path + '\\''\n-                + \", params=\" + params + \", headers=\" + headers + \", consumes=\" + consumes\n-                + \", produces=\" + produces + '}';\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest;\r\n+\r\n+\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+\r\n+import java.io.Serializable;\r\n+import java.util.Collection;\r\n+import java.util.LinkedHashMap;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.LinkedList;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Objects;\r\n+import java.util.Set;\r\n+\r\n+import static java.util.Collections.unmodifiableMap;\r\n+import static org.apache.dubbo.common.utils.PathUtils.normalize;\r\n+import static org.apache.dubbo.common.utils.StringUtils.isBlank;\r\n+\r\n+/**\r\n+ * The metadata class for REST request\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class RequestMetadata implements Serializable {\r\n+\r\n+    private static final long serialVersionUID = -240099840085329958L;\r\n+\r\n+    private String method;\r\n+\r\n+    private String path;\r\n+\r\n+    private Map<String, List<String>> params = new LinkedHashMap<>();\r\n+\r\n+    private Map<String, List<String>> headers = new LinkedHashMap<>();\r\n+\r\n+    private Set<String> consumes = new LinkedHashSet<>();\r\n+\r\n+    private Set<String> produces = new LinkedHashSet<>();\r\n+\r\n+    /**\r\n+     * Default Constructor\r\n+     */\r\n+    public RequestMetadata() {\r\n+    }\r\n+\r\n+    public String getMethod() {\r\n+        return method;\r\n+    }\r\n+\r\n+    public void setMethod(String method) {\r\n+        this.method = method == null ? null : method.toUpperCase();\r\n+    }\r\n+\r\n+    public String getPath() {\r\n+        return path;\r\n+    }\r\n+\r\n+    public void setPath(String path) {\r\n+        this.path = normalize(path);\r\n+    }\r\n+\r\n+    public Map<String, List<String>> getParams() {\r\n+        return unmodifiableMap(params);\r\n+    }\r\n+\r\n+    public void setParams(Map<String, List<String>> params) {\r\n+        params(params);\r\n+    }\r\n+\r\n+    private static void add(Map<String, List<String>> multiValueMap, String key, String value) {\r\n+        if (isBlank(key)) {\r\n+            return;\r\n+        }\r\n+        List<String> values = get(multiValueMap, key, true);\r\n+        values.add(value);\r\n+    }\r\n+\r\n+    private static <T extends Collection<String>> void addAll(Map<String, List<String>> multiValueMap,\r\n+                                                              Map<String, T> source) {\r\n+        for (Map.Entry<String, T> entry : source.entrySet()) {\r\n+            String key = entry.getKey();\r\n+            for (String value : entry.getValue()) {\r\n+                add(multiValueMap, key, value);\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    private static String getFirst(Map<String, List<String>> multiValueMap, String key) {\r\n+        List<String> values = get(multiValueMap, key);\r\n+        return CollectionUtils.isNotEmpty(values) ? values.get(0) : null;\r\n+    }\r\n+\r\n+    private static List<String> get(Map<String, List<String>> multiValueMap, String key) {\r\n+        return get(multiValueMap, key, false);\r\n+    }\r\n+\r\n+    private static List<String> get(Map<String, List<String>> multiValueMap, String key, boolean createIfAbsent) {\r\n+        return createIfAbsent ? multiValueMap.computeIfAbsent(key, k -> new LinkedList<>()) : multiValueMap.get(key);\r\n+    }\r\n+\r\n+    public Map<String, List<String>> getHeaders() {\r\n+        return unmodifiableMap(headers);\r\n+    }\r\n+\r\n+    public void setHeaders(Map<String, List<String>> headers) {\r\n+        headers(headers);\r\n+    }\r\n+\r\n+    public Set<String> getConsumes() {\r\n+        return consumes;\r\n+    }\r\n+\r\n+    public void setConsumes(Set<String> consumes) {\r\n+        this.consumes = consumes;\r\n+    }\r\n+\r\n+    public Set<String> getProduces() {\r\n+        return produces;\r\n+    }\r\n+\r\n+    public void setProduces(Set<String> produces) {\r\n+        this.produces = produces;\r\n+    }\r\n+\r\n+    public Set<String> getParamNames() {\r\n+        return params.keySet();\r\n+    }\r\n+\r\n+    public Set<String> getHeaderNames() {\r\n+        return headers.keySet();\r\n+    }\r\n+\r\n+//    public List<MediaType> getConsumeMediaTypes() {\r\n+//        return toMediaTypes(consumes);\r\n+//    }\r\n+//\r\n+//    public List<MediaType> getProduceMediaTypes() {\r\n+//        return toMediaTypes(produces);\r\n+//    }\r\n+\r\n+    public String getParameter(String name) {\r\n+        return getFirst(params, name);\r\n+    }\r\n+\r\n+    public String getHeader(String name) {\r\n+        return getFirst(headers, name);\r\n+    }\r\n+\r\n+    public RequestMetadata addParam(String name, String value) {\r\n+        add(params, name, value);\r\n+        return this;\r\n+    }\r\n+\r\n+    public RequestMetadata addHeader(String name, String value) {\r\n+        add(headers, name, value);\r\n+        return this;\r\n+    }\r\n+\r\n+    private <T extends Collection<String>> RequestMetadata params(Map<String, T> params) {\r\n+        addAll(this.params, params);\r\n+        return this;\r\n+    }\r\n+\r\n+    private <T extends Collection<String>> RequestMetadata headers(Map<String, List<String>> headers) {\r\n+        if (headers != null && !headers.isEmpty()) {\r\n+            Map<String, List<String>> httpHeaders = new LinkedHashMap<>();\r\n+            // Add all headers\r\n+            addAll(headers, httpHeaders);\r\n+            // Handles \"Content-Type\" and \"Accept\" headers if present\r\n+//            mediaTypes(httpHeaders, HttpHeaders.CONTENT_TYPE, this.consumes);\r\n+//            mediaTypes(httpHeaders, HttpHeaders.ACCEPT, this.produces);\r\n+            this.headers.putAll(httpHeaders);\r\n+        }\r\n+        return this;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean equals(Object o) {\r\n+        if (this == o) {\r\n+            return true;\r\n+        }\r\n+        if (!(o instanceof RequestMetadata)) {\r\n+            return false;\r\n+        }\r\n+        RequestMetadata that = (RequestMetadata) o;\r\n+        return Objects.equals(method, that.method)\r\n+                && Objects.equals(path, that.path)\r\n+                && Objects.equals(consumes, that.consumes)\r\n+                && Objects.equals(produces, that.produces) &&\r\n+                // Metadata should not compare the values\r\n+                Objects.equals(getParamNames(), that.getParamNames())\r\n+                && Objects.equals(getHeaderNames(), that.getHeaderNames());\r\n+\r\n+    }\r\n+\r\n+    @Override\r\n+    public int hashCode() {\r\n+        // The values of metadata should not use for the hashCode() method\r\n+        return Objects.hash(method, path, consumes, produces, getParamNames(),\r\n+                getHeaderNames());\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        return \"RequestMetadata{\" + \"method='\" + method + '\\'' + \", path='\" + path + '\\''\r\n+                + \", params=\" + params + \", headers=\" + headers + \", consumes=\" + consumes\r\n+                + \", produces=\" + produces + '}';\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/RestMetadataConstants.java", "source2": "org/apache/dubbo/metadata/rest/RestMetadataConstants.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,145 +1,145 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest;\n-\n-import java.lang.annotation.Annotation;\n-\n-import static org.apache.dubbo.common.utils.ClassUtils.getClassLoader;\n-import static org.apache.dubbo.common.utils.ClassUtils.resolveClass;\n-\n-/**\n- * The REST Metadata Constants definition interface\n- *\n- * @since 2.7.6\n- */\n-public interface RestMetadataConstants {\n-\n-    /**\n-     * The encoding of metadata\n-     */\n-    String METADATA_ENCODING = \"UTF-8\";\n-\n-    /**\n-     * {@link ServiceRestMetadata} Resource PATH\n-     */\n-    String SERVICE_REST_METADATA_RESOURCE_PATH = \"META-INF/dubbo/service-rest-metadata.json\";\n-\n-    /**\n-     * JAX-RS\n-     */\n-    interface JAX_RS {\n-\n-        /**\n-         * The annotation class name of @Path\n-         */\n-        String PATH_ANNOTATION_CLASS_NAME = \"javax.ws.rs.Path\";\n-\n-        /**\n-         * The annotation class name of @HttpMethod\n-         */\n-        String HTTP_METHOD_ANNOTATION_CLASS_NAME = \"javax.ws.rs.HttpMethod\";\n-\n-        /**\n-         * The annotation class name of @Produces\n-         */\n-        String PRODUCES_ANNOTATION_CLASS_NAME = \"javax.ws.rs.Produces\";\n-\n-        /**\n-         * The annotation class name of @Consumes\n-         */\n-        String CONSUMES_ANNOTATION_CLASS_NAME = \"javax.ws.rs.Consumes\";\n-\n-        /**\n-         * The annotation class name of @DefaultValue\n-         */\n-        String DEFAULT_VALUE_ANNOTATION_CLASS_NAME = \"javax.ws.rs.DefaultValue\";\n-\n-        /**\n-         * The annotation class name of @FormParam\n-         */\n-        String FORM_PARAM_ANNOTATION_CLASS_NAME = \"javax.ws.rs.FormParam\";\n-\n-        /**\n-         * The annotation class name of @HeaderParam\n-         */\n-        String HEADER_PARAM_ANNOTATION_CLASS_NAME = \"javax.ws.rs.HeaderParam\";\n-\n-        /**\n-         * The annotation class name of @MatrixParam\n-         */\n-        String MATRIX_PARAM_ANNOTATION_CLASS_NAME = \"javax.ws.rs.MatrixParam\";\n-\n-        /**\n-         * The annotation class name of @QueryParam\n-         */\n-        String QUERY_PARAM_ANNOTATION_CLASS_NAME = \"javax.ws.rs.QueryParam\";\n-    }\n-\n-    /**\n-     * Spring MVC\n-     */\n-    interface SPRING_MVC {\n-\n-        /**\n-         * The annotation class name of @Controller\n-         */\n-        String CONTROLLER_ANNOTATION_CLASS_NAME = \"org.springframework.stereotype.Controller\";\n-\n-        /**\n-         * The annotation class name of @RequestMapping\n-         */\n-        String REQUEST_MAPPING_ANNOTATION_CLASS_NAME = \"org.springframework.web.bind.annotation.RequestMapping\";\n-\n-        /**\n-         * The annotation class name of @RequestHeader\n-         */\n-        String REQUEST_HEADER_ANNOTATION_CLASS_NAME = \"org.springframework.web.bind.annotation.RequestHeader\";\n-\n-        /**\n-         * The annotation class name of @RequestParam\n-         */\n-        String REQUEST_PARAM_ANNOTATION_CLASS_NAME = \"org.springframework.web.bind.annotation.RequestParam\";\n-\n-        /**\n-         * The class of @Controller\n-         *\n-         * @since 2.7.9\n-         */\n-        Class<? extends Annotation> CONTROLLER_ANNOTATION_CLASS = (Class<? extends Annotation>) resolveClass(CONTROLLER_ANNOTATION_CLASS_NAME, getClassLoader());\n-\n-        /**\n-         * The class of @RequestMapping\n-         *\n-         * @since 2.7.9\n-         */\n-        Class<? extends Annotation> REQUEST_MAPPING_ANNOTATION_CLASS = (Class<? extends Annotation>) resolveClass(REQUEST_MAPPING_ANNOTATION_CLASS_NAME, getClassLoader());\n-\n-        /**\n-         * The annotation class name of AnnotatedElementUtils\n-         *\n-         * @since 2.7.9\n-         */\n-        String ANNOTATED_ELEMENT_UTILS_CLASS_NAME = \"org.springframework.core.annotation.AnnotatedElementUtils\";\n-\n-        /**\n-         * The class of AnnotatedElementUtils\n-         *\n-         * @since 2.7.9\n-         */\n-        Class<?> ANNOTATED_ELEMENT_UTILS_CLASS = resolveClass(ANNOTATED_ELEMENT_UTILS_CLASS_NAME, getClassLoader());\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest;\r\n+\r\n+import java.lang.annotation.Annotation;\r\n+\r\n+import static org.apache.dubbo.common.utils.ClassUtils.getClassLoader;\r\n+import static org.apache.dubbo.common.utils.ClassUtils.resolveClass;\r\n+\r\n+/**\r\n+ * The REST Metadata Constants definition interface\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public interface RestMetadataConstants {\r\n+\r\n+    /**\r\n+     * The encoding of metadata\r\n+     */\r\n+    String METADATA_ENCODING = \"UTF-8\";\r\n+\r\n+    /**\r\n+     * {@link ServiceRestMetadata} Resource PATH\r\n+     */\r\n+    String SERVICE_REST_METADATA_RESOURCE_PATH = \"META-INF/dubbo/service-rest-metadata.json\";\r\n+\r\n+    /**\r\n+     * JAX-RS\r\n+     */\r\n+    interface JAX_RS {\r\n+\r\n+        /**\r\n+         * The annotation class name of @Path\r\n+         */\r\n+        String PATH_ANNOTATION_CLASS_NAME = \"javax.ws.rs.Path\";\r\n+\r\n+        /**\r\n+         * The annotation class name of @HttpMethod\r\n+         */\r\n+        String HTTP_METHOD_ANNOTATION_CLASS_NAME = \"javax.ws.rs.HttpMethod\";\r\n+\r\n+        /**\r\n+         * The annotation class name of @Produces\r\n+         */\r\n+        String PRODUCES_ANNOTATION_CLASS_NAME = \"javax.ws.rs.Produces\";\r\n+\r\n+        /**\r\n+         * The annotation class name of @Consumes\r\n+         */\r\n+        String CONSUMES_ANNOTATION_CLASS_NAME = \"javax.ws.rs.Consumes\";\r\n+\r\n+        /**\r\n+         * The annotation class name of @DefaultValue\r\n+         */\r\n+        String DEFAULT_VALUE_ANNOTATION_CLASS_NAME = \"javax.ws.rs.DefaultValue\";\r\n+\r\n+        /**\r\n+         * The annotation class name of @FormParam\r\n+         */\r\n+        String FORM_PARAM_ANNOTATION_CLASS_NAME = \"javax.ws.rs.FormParam\";\r\n+\r\n+        /**\r\n+         * The annotation class name of @HeaderParam\r\n+         */\r\n+        String HEADER_PARAM_ANNOTATION_CLASS_NAME = \"javax.ws.rs.HeaderParam\";\r\n+\r\n+        /**\r\n+         * The annotation class name of @MatrixParam\r\n+         */\r\n+        String MATRIX_PARAM_ANNOTATION_CLASS_NAME = \"javax.ws.rs.MatrixParam\";\r\n+\r\n+        /**\r\n+         * The annotation class name of @QueryParam\r\n+         */\r\n+        String QUERY_PARAM_ANNOTATION_CLASS_NAME = \"javax.ws.rs.QueryParam\";\r\n+    }\r\n+\r\n+    /**\r\n+     * Spring MVC\r\n+     */\r\n+    interface SPRING_MVC {\r\n+\r\n+        /**\r\n+         * The annotation class name of @Controller\r\n+         */\r\n+        String CONTROLLER_ANNOTATION_CLASS_NAME = \"org.springframework.stereotype.Controller\";\r\n+\r\n+        /**\r\n+         * The annotation class name of @RequestMapping\r\n+         */\r\n+        String REQUEST_MAPPING_ANNOTATION_CLASS_NAME = \"org.springframework.web.bind.annotation.RequestMapping\";\r\n+\r\n+        /**\r\n+         * The annotation class name of @RequestHeader\r\n+         */\r\n+        String REQUEST_HEADER_ANNOTATION_CLASS_NAME = \"org.springframework.web.bind.annotation.RequestHeader\";\r\n+\r\n+        /**\r\n+         * The annotation class name of @RequestParam\r\n+         */\r\n+        String REQUEST_PARAM_ANNOTATION_CLASS_NAME = \"org.springframework.web.bind.annotation.RequestParam\";\r\n+\r\n+        /**\r\n+         * The class of @Controller\r\n+         *\r\n+         * @since 2.7.9\r\n+         */\r\n+        Class<? extends Annotation> CONTROLLER_ANNOTATION_CLASS = (Class<? extends Annotation>) resolveClass(CONTROLLER_ANNOTATION_CLASS_NAME, getClassLoader());\r\n+\r\n+        /**\r\n+         * The class of @RequestMapping\r\n+         *\r\n+         * @since 2.7.9\r\n+         */\r\n+        Class<? extends Annotation> REQUEST_MAPPING_ANNOTATION_CLASS = (Class<? extends Annotation>) resolveClass(REQUEST_MAPPING_ANNOTATION_CLASS_NAME, getClassLoader());\r\n+\r\n+        /**\r\n+         * The annotation class name of AnnotatedElementUtils\r\n+         *\r\n+         * @since 2.7.9\r\n+         */\r\n+        String ANNOTATED_ELEMENT_UTILS_CLASS_NAME = \"org.springframework.core.annotation.AnnotatedElementUtils\";\r\n+\r\n+        /**\r\n+         * The class of AnnotatedElementUtils\r\n+         *\r\n+         * @since 2.7.9\r\n+         */\r\n+        Class<?> ANNOTATED_ELEMENT_UTILS_CLASS = resolveClass(ANNOTATED_ELEMENT_UTILS_CLASS_NAME, getClassLoader());\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/RestMethodMetadata.java", "source2": "org/apache/dubbo/metadata/rest/RestMethodMetadata.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,199 +1,199 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest;\n-\n-import org.apache.dubbo.metadata.definition.model.MethodDefinition;\n-\n-import java.io.Serializable;\n-import java.util.ArrayList;\n-import java.util.Collection;\n-import java.util.HashMap;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Objects;\n-\n-import static java.util.Collections.emptyList;\n-\n-/**\n- * The metadata class for {@link RequestMetadata HTTP(REST) request} and\n- * its binding {@link MethodDefinition method definition}\n- *\n- * @since 2.7.6\n- */\n-public class RestMethodMetadata implements Serializable {\n-\n-    private static final long serialVersionUID = 2935252016200830694L;\n-\n-    private MethodDefinition method;\n-\n-    private RequestMetadata request;\n-\n-    private Integer urlIndex;\n-\n-    private Integer bodyIndex;\n-\n-    private Integer headerMapIndex;\n-\n-    private String bodyType;\n-\n-    private Map<Integer, Collection<String>> indexToName;\n-\n-    private List<String> formParams;\n-\n-    private Map<Integer, Boolean> indexToEncoded;\n-\n-    public MethodDefinition getMethod() {\n-        if (method == null) {\n-            method = new MethodDefinition();\n-        }\n-        return method;\n-    }\n-\n-    public void setMethod(MethodDefinition method) {\n-        this.method = method;\n-    }\n-\n-    public RequestMetadata getRequest() {\n-        if (request == null) {\n-            request = new RequestMetadata();\n-        }\n-        return request;\n-    }\n-\n-    public void setRequest(RequestMetadata request) {\n-        this.request = request;\n-    }\n-\n-    public Integer getUrlIndex() {\n-        return urlIndex;\n-    }\n-\n-    public void setUrlIndex(Integer urlIndex) {\n-        this.urlIndex = urlIndex;\n-    }\n-\n-    public Integer getBodyIndex() {\n-        return bodyIndex;\n-    }\n-\n-    public void setBodyIndex(Integer bodyIndex) {\n-        this.bodyIndex = bodyIndex;\n-    }\n-\n-    public Integer getHeaderMapIndex() {\n-        return headerMapIndex;\n-    }\n-\n-    public void setHeaderMapIndex(Integer headerMapIndex) {\n-        this.headerMapIndex = headerMapIndex;\n-    }\n-\n-    public String getBodyType() {\n-        return bodyType;\n-    }\n-\n-    public void setBodyType(String bodyType) {\n-        this.bodyType = bodyType;\n-    }\n-\n-    public Map<Integer, Collection<String>> getIndexToName() {\n-        if (indexToName == null) {\n-            indexToName = new HashMap<>();\n-        }\n-        return indexToName;\n-    }\n-\n-    public void setIndexToName(Map<Integer, Collection<String>> indexToName) {\n-        this.indexToName = indexToName;\n-    }\n-\n-    public void addIndexToName(Integer index, String name) {\n-        if (index == null) {\n-            return;\n-        }\n-\n-        if (name.startsWith(\"arg\") && name.endsWith(index.toString())) {\n-            // Ignore this value because of the Java byte-code without the metadata of method parameters\n-            return;\n-        }\n-\n-        Map<Integer, Collection<String>> indexToName = getIndexToName();\n-        Collection<String> parameterNames = indexToName.computeIfAbsent(index, i -> new ArrayList<>(1));\n-        parameterNames.add(name);\n-    }\n-\n-    public boolean hasIndexedName(Integer index, String name) {\n-        Map<Integer, Collection<String>> indexToName = getIndexToName();\n-        return indexToName.getOrDefault(index, emptyList()).contains(name);\n-    }\n-\n-    public List<String> getFormParams() {\n-        return formParams;\n-    }\n-\n-    public void setFormParams(List<String> formParams) {\n-        this.formParams = formParams;\n-    }\n-\n-    public Map<Integer, Boolean> getIndexToEncoded() {\n-        return indexToEncoded;\n-    }\n-\n-    public void setIndexToEncoded(Map<Integer, Boolean> indexToEncoded) {\n-        this.indexToEncoded = indexToEncoded;\n-    }\n-\n-    @Override\n-    public boolean equals(Object o) {\n-        if (this == o) {\n-            return true;\n-        }\n-        if (!(o instanceof RestMethodMetadata)) {\n-            return false;\n-        }\n-        RestMethodMetadata that = (RestMethodMetadata) o;\n-        return Objects.equals(getMethod(), that.getMethod()) &&\n-                Objects.equals(getRequest(), that.getRequest()) &&\n-                Objects.equals(getUrlIndex(), that.getUrlIndex()) &&\n-                Objects.equals(getBodyIndex(), that.getBodyIndex()) &&\n-                Objects.equals(getHeaderMapIndex(), that.getHeaderMapIndex()) &&\n-                Objects.equals(getBodyType(), that.getBodyType()) &&\n-                Objects.equals(getFormParams(), that.getFormParams()) &&\n-                Objects.equals(getIndexToEncoded(), that.getIndexToEncoded());\n-    }\n-\n-    @Override\n-    public int hashCode() {\n-        return Objects.hash(getMethod(), getRequest(), getUrlIndex(), getBodyIndex(), getHeaderMapIndex(), getBodyType(), getFormParams(), getIndexToEncoded());\n-    }\n-\n-    @Override\n-    public String toString() {\n-        final StringBuilder sb = new StringBuilder(\"RestMethodMetadata{\");\n-        sb.append(\"method=\").append(method);\n-        sb.append(\", request=\").append(request);\n-        sb.append(\", urlIndex=\").append(urlIndex);\n-        sb.append(\", bodyIndex=\").append(bodyIndex);\n-        sb.append(\", headerMapIndex=\").append(headerMapIndex);\n-        sb.append(\", bodyType='\").append(bodyType).append('\\'');\n-        sb.append(\", indexToName=\").append(indexToName);\n-        sb.append(\", formParams=\").append(formParams);\n-        sb.append(\", indexToEncoded=\").append(indexToEncoded);\n-        sb.append('}');\n-        return sb.toString();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest;\r\n+\r\n+import org.apache.dubbo.metadata.definition.model.MethodDefinition;\r\n+\r\n+import java.io.Serializable;\r\n+import java.util.ArrayList;\r\n+import java.util.Collection;\r\n+import java.util.HashMap;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Objects;\r\n+\r\n+import static java.util.Collections.emptyList;\r\n+\r\n+/**\r\n+ * The metadata class for {@link RequestMetadata HTTP(REST) request} and\r\n+ * its binding {@link MethodDefinition method definition}\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class RestMethodMetadata implements Serializable {\r\n+\r\n+    private static final long serialVersionUID = 2935252016200830694L;\r\n+\r\n+    private MethodDefinition method;\r\n+\r\n+    private RequestMetadata request;\r\n+\r\n+    private Integer urlIndex;\r\n+\r\n+    private Integer bodyIndex;\r\n+\r\n+    private Integer headerMapIndex;\r\n+\r\n+    private String bodyType;\r\n+\r\n+    private Map<Integer, Collection<String>> indexToName;\r\n+\r\n+    private List<String> formParams;\r\n+\r\n+    private Map<Integer, Boolean> indexToEncoded;\r\n+\r\n+    public MethodDefinition getMethod() {\r\n+        if (method == null) {\r\n+            method = new MethodDefinition();\r\n+        }\r\n+        return method;\r\n+    }\r\n+\r\n+    public void setMethod(MethodDefinition method) {\r\n+        this.method = method;\r\n+    }\r\n+\r\n+    public RequestMetadata getRequest() {\r\n+        if (request == null) {\r\n+            request = new RequestMetadata();\r\n+        }\r\n+        return request;\r\n+    }\r\n+\r\n+    public void setRequest(RequestMetadata request) {\r\n+        this.request = request;\r\n+    }\r\n+\r\n+    public Integer getUrlIndex() {\r\n+        return urlIndex;\r\n+    }\r\n+\r\n+    public void setUrlIndex(Integer urlIndex) {\r\n+        this.urlIndex = urlIndex;\r\n+    }\r\n+\r\n+    public Integer getBodyIndex() {\r\n+        return bodyIndex;\r\n+    }\r\n+\r\n+    public void setBodyIndex(Integer bodyIndex) {\r\n+        this.bodyIndex = bodyIndex;\r\n+    }\r\n+\r\n+    public Integer getHeaderMapIndex() {\r\n+        return headerMapIndex;\r\n+    }\r\n+\r\n+    public void setHeaderMapIndex(Integer headerMapIndex) {\r\n+        this.headerMapIndex = headerMapIndex;\r\n+    }\r\n+\r\n+    public String getBodyType() {\r\n+        return bodyType;\r\n+    }\r\n+\r\n+    public void setBodyType(String bodyType) {\r\n+        this.bodyType = bodyType;\r\n+    }\r\n+\r\n+    public Map<Integer, Collection<String>> getIndexToName() {\r\n+        if (indexToName == null) {\r\n+            indexToName = new HashMap<>();\r\n+        }\r\n+        return indexToName;\r\n+    }\r\n+\r\n+    public void setIndexToName(Map<Integer, Collection<String>> indexToName) {\r\n+        this.indexToName = indexToName;\r\n+    }\r\n+\r\n+    public void addIndexToName(Integer index, String name) {\r\n+        if (index == null) {\r\n+            return;\r\n+        }\r\n+\r\n+        if (name.startsWith(\"arg\") && name.endsWith(index.toString())) {\r\n+            // Ignore this value because of the Java byte-code without the metadata of method parameters\r\n+            return;\r\n+        }\r\n+\r\n+        Map<Integer, Collection<String>> indexToName = getIndexToName();\r\n+        Collection<String> parameterNames = indexToName.computeIfAbsent(index, i -> new ArrayList<>(1));\r\n+        parameterNames.add(name);\r\n+    }\r\n+\r\n+    public boolean hasIndexedName(Integer index, String name) {\r\n+        Map<Integer, Collection<String>> indexToName = getIndexToName();\r\n+        return indexToName.getOrDefault(index, emptyList()).contains(name);\r\n+    }\r\n+\r\n+    public List<String> getFormParams() {\r\n+        return formParams;\r\n+    }\r\n+\r\n+    public void setFormParams(List<String> formParams) {\r\n+        this.formParams = formParams;\r\n+    }\r\n+\r\n+    public Map<Integer, Boolean> getIndexToEncoded() {\r\n+        return indexToEncoded;\r\n+    }\r\n+\r\n+    public void setIndexToEncoded(Map<Integer, Boolean> indexToEncoded) {\r\n+        this.indexToEncoded = indexToEncoded;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean equals(Object o) {\r\n+        if (this == o) {\r\n+            return true;\r\n+        }\r\n+        if (!(o instanceof RestMethodMetadata)) {\r\n+            return false;\r\n+        }\r\n+        RestMethodMetadata that = (RestMethodMetadata) o;\r\n+        return Objects.equals(getMethod(), that.getMethod()) &&\r\n+                Objects.equals(getRequest(), that.getRequest()) &&\r\n+                Objects.equals(getUrlIndex(), that.getUrlIndex()) &&\r\n+                Objects.equals(getBodyIndex(), that.getBodyIndex()) &&\r\n+                Objects.equals(getHeaderMapIndex(), that.getHeaderMapIndex()) &&\r\n+                Objects.equals(getBodyType(), that.getBodyType()) &&\r\n+                Objects.equals(getFormParams(), that.getFormParams()) &&\r\n+                Objects.equals(getIndexToEncoded(), that.getIndexToEncoded());\r\n+    }\r\n+\r\n+    @Override\r\n+    public int hashCode() {\r\n+        return Objects.hash(getMethod(), getRequest(), getUrlIndex(), getBodyIndex(), getHeaderMapIndex(), getBodyType(), getFormParams(), getIndexToEncoded());\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        final StringBuilder sb = new StringBuilder(\"RestMethodMetadata{\");\r\n+        sb.append(\"method=\").append(method);\r\n+        sb.append(\", request=\").append(request);\r\n+        sb.append(\", urlIndex=\").append(urlIndex);\r\n+        sb.append(\", bodyIndex=\").append(bodyIndex);\r\n+        sb.append(\", headerMapIndex=\").append(headerMapIndex);\r\n+        sb.append(\", bodyType='\").append(bodyType).append('\\'');\r\n+        sb.append(\", indexToName=\").append(indexToName);\r\n+        sb.append(\", formParams=\").append(formParams);\r\n+        sb.append(\", indexToEncoded=\").append(indexToEncoded);\r\n+        sb.append('}');\r\n+        return sb.toString();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/ServiceRestMetadata.java", "source2": "org/apache/dubbo/metadata/rest/ServiceRestMetadata.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,107 +1,107 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest;\n-\n-import java.io.Serializable;\n-import java.util.LinkedHashSet;\n-import java.util.Objects;\n-import java.util.Set;\n-\n-/**\n- * The metadata class for {@link RequestMetadata HTTP(REST) request} and\n- * its binding Dubbo service metadata\n- *\n- * @since 2.7.6\n- */\n-public class ServiceRestMetadata implements Serializable {\n-\n-    private static final long serialVersionUID = -4549723140727443569L;\n-\n-    private String serviceInterface;\n-\n-    private String version;\n-\n-    private String group;\n-\n-    private Set<RestMethodMetadata> meta;\n-\n-    public String getServiceInterface() {\n-        return serviceInterface;\n-    }\n-\n-    public void setServiceInterface(String serviceInterface) {\n-        this.serviceInterface = serviceInterface;\n-    }\n-\n-    public String getVersion() {\n-        return version;\n-    }\n-\n-    public void setVersion(String version) {\n-        this.version = version;\n-    }\n-\n-    public String getGroup() {\n-        return group;\n-    }\n-\n-    public void setGroup(String group) {\n-        this.group = group;\n-    }\n-\n-    public Set<RestMethodMetadata> getMeta() {\n-        if (meta == null) {\n-            meta = new LinkedHashSet<>();\n-        }\n-        return meta;\n-    }\n-\n-    public void setMeta(Set<RestMethodMetadata> meta) {\n-        this.meta = meta;\n-    }\n-\n-    @Override\n-    public boolean equals(Object o) {\n-        if (this == o) {\n-            return true;\n-        }\n-        if (!(o instanceof ServiceRestMetadata)) {\n-            return false;\n-        }\n-        ServiceRestMetadata that = (ServiceRestMetadata) o;\n-        return Objects.equals(getServiceInterface(), that.getServiceInterface()) &&\n-                Objects.equals(getVersion(), that.getVersion()) &&\n-                Objects.equals(getGroup(), that.getGroup()) &&\n-                Objects.equals(getMeta(), that.getMeta());\n-    }\n-\n-    @Override\n-    public int hashCode() {\n-        return Objects.hash(getServiceInterface(), getVersion(), getGroup(), getMeta());\n-    }\n-\n-    @Override\n-    public String toString() {\n-        final StringBuilder sb = new StringBuilder(\"ServiceRestMetadata{\");\n-        sb.append(\"serviceInterface='\").append(serviceInterface).append('\\'');\n-        sb.append(\", version='\").append(version).append('\\'');\n-        sb.append(\", group='\").append(group).append('\\'');\n-        sb.append(\", meta=\").append(meta);\n-        sb.append('}');\n-        return sb.toString();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest;\r\n+\r\n+import java.io.Serializable;\r\n+import java.util.LinkedHashSet;\r\n+import java.util.Objects;\r\n+import java.util.Set;\r\n+\r\n+/**\r\n+ * The metadata class for {@link RequestMetadata HTTP(REST) request} and\r\n+ * its binding Dubbo service metadata\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class ServiceRestMetadata implements Serializable {\r\n+\r\n+    private static final long serialVersionUID = -4549723140727443569L;\r\n+\r\n+    private String serviceInterface;\r\n+\r\n+    private String version;\r\n+\r\n+    private String group;\r\n+\r\n+    private Set<RestMethodMetadata> meta;\r\n+\r\n+    public String getServiceInterface() {\r\n+        return serviceInterface;\r\n+    }\r\n+\r\n+    public void setServiceInterface(String serviceInterface) {\r\n+        this.serviceInterface = serviceInterface;\r\n+    }\r\n+\r\n+    public String getVersion() {\r\n+        return version;\r\n+    }\r\n+\r\n+    public void setVersion(String version) {\r\n+        this.version = version;\r\n+    }\r\n+\r\n+    public String getGroup() {\r\n+        return group;\r\n+    }\r\n+\r\n+    public void setGroup(String group) {\r\n+        this.group = group;\r\n+    }\r\n+\r\n+    public Set<RestMethodMetadata> getMeta() {\r\n+        if (meta == null) {\r\n+            meta = new LinkedHashSet<>();\r\n+        }\r\n+        return meta;\r\n+    }\r\n+\r\n+    public void setMeta(Set<RestMethodMetadata> meta) {\r\n+        this.meta = meta;\r\n+    }\r\n+\r\n+    @Override\r\n+    public boolean equals(Object o) {\r\n+        if (this == o) {\r\n+            return true;\r\n+        }\r\n+        if (!(o instanceof ServiceRestMetadata)) {\r\n+            return false;\r\n+        }\r\n+        ServiceRestMetadata that = (ServiceRestMetadata) o;\r\n+        return Objects.equals(getServiceInterface(), that.getServiceInterface()) &&\r\n+                Objects.equals(getVersion(), that.getVersion()) &&\r\n+                Objects.equals(getGroup(), that.getGroup()) &&\r\n+                Objects.equals(getMeta(), that.getMeta());\r\n+    }\r\n+\r\n+    @Override\r\n+    public int hashCode() {\r\n+        return Objects.hash(getServiceInterface(), getVersion(), getGroup(), getMeta());\r\n+    }\r\n+\r\n+    @Override\r\n+    public String toString() {\r\n+        final StringBuilder sb = new StringBuilder(\"ServiceRestMetadata{\");\r\n+        sb.append(\"serviceInterface='\").append(serviceInterface).append('\\'');\r\n+        sb.append(\", version='\").append(version).append('\\'');\r\n+        sb.append(\", group='\").append(group).append('\\'');\r\n+        sb.append(\", meta=\").append(meta);\r\n+        sb.append('}');\r\n+        return sb.toString();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/ServiceRestMetadataReader.java", "source2": "org/apache/dubbo/metadata/rest/ServiceRestMetadataReader.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,39 +1,39 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest;\n-\n-\n-import org.apache.dubbo.common.extension.SPI;\n-\n-import java.util.List;\n-\n-/**\n- * An interface to read {@link ServiceRestMetadata}\n- *\n- * @see ServiceRestMetadata\n- * @since 2.7.6\n- */\n-@SPI\n-public interface ServiceRestMetadataReader {\n-\n-    /**\n-     * Read the instances of {@link ServiceRestMetadata}\n-     *\n-     * @return non-null\n-     */\n-    List<ServiceRestMetadata> read();\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest;\r\n+\r\n+\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * An interface to read {@link ServiceRestMetadata}\r\n+ *\r\n+ * @see ServiceRestMetadata\r\n+ * @since 2.7.6\r\n+ */\r\n+@SPI\r\n+public interface ServiceRestMetadataReader {\r\n+\r\n+    /**\r\n+     * Read the instances of {@link ServiceRestMetadata}\r\n+     *\r\n+     * @return non-null\r\n+     */\r\n+    List<ServiceRestMetadata> read();\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/ServiceRestMetadataResolver.java", "source2": "org/apache/dubbo/metadata/rest/ServiceRestMetadataResolver.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,43 +1,43 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest;\n-\n-/**\n- * The interface to resolve the {@link ServiceRestMetadata REST metadata} from the specified\n- * Dubbo Service interface or type.\n- *\n- * @since 2.7.6\n- */\n-public interface ServiceRestMetadataResolver {\n-\n-    /**\n-     * Support to resolve {@link ServiceRestMetadata REST metadata} or not\n-     *\n-     * @param serviceType Dubbo Service interface or type\n-     * @return If supports, return <code>true</code>, or <code>false</code>\n-     */\n-    boolean supports(Class<?> serviceType);\n-\n-    /**\n-     * Resolve the {@link ServiceRestMetadata REST metadata} from the specified\n-     * Dubbo Service interface or type\n-     *\n-     * @param serviceType Dubbo Service interface or type\n-     * @return\n-     */\n-    ServiceRestMetadata resolve(Class<?> serviceType);\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest;\r\n+\r\n+/**\r\n+ * The interface to resolve the {@link ServiceRestMetadata REST metadata} from the specified\r\n+ * Dubbo Service interface or type.\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public interface ServiceRestMetadataResolver {\r\n+\r\n+    /**\r\n+     * Support to resolve {@link ServiceRestMetadata REST metadata} or not\r\n+     *\r\n+     * @param serviceType Dubbo Service interface or type\r\n+     * @return If supports, return <code>true</code>, or <code>false</code>\r\n+     */\r\n+    boolean supports(Class<?> serviceType);\r\n+\r\n+    /**\r\n+     * Resolve the {@link ServiceRestMetadata REST metadata} from the specified\r\n+     * Dubbo Service interface or type\r\n+     *\r\n+     * @param serviceType Dubbo Service interface or type\r\n+     * @return\r\n+     */\r\n+    ServiceRestMetadata resolve(Class<?> serviceType);\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/jaxrs/DefaultValueParameterProcessor.java", "source2": "org/apache/dubbo/metadata/rest/jaxrs/DefaultValueParameterProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,74 +1,74 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest.jaxrs;\n-\n-import org.apache.dubbo.metadata.rest.AbstractAnnotatedMethodParameterProcessor;\n-import org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor;\n-import org.apache.dubbo.metadata.rest.RequestMetadata;\n-import org.apache.dubbo.metadata.rest.RestMethodMetadata;\n-\n-import java.lang.annotation.Annotation;\n-import java.lang.reflect.Method;\n-import java.util.List;\n-import java.util.Map;\n-\n-import static org.apache.dubbo.metadata.rest.RestMetadataConstants.JAX_RS.DEFAULT_VALUE_ANNOTATION_CLASS_NAME;\n-\n-\n-/**\n- * The {@link AnnotatedMethodParameterProcessor} implementation for JAX-RS's @DefaultValue\n- * *\n- *\n- * @since 2.7.6\n- */\n-public class DefaultValueParameterProcessor extends AbstractAnnotatedMethodParameterProcessor {\n-\n-    @Override\n-    public String getAnnotationType() {\n-        return DEFAULT_VALUE_ANNOTATION_CLASS_NAME;\n-    }\n-\n-    @Override\n-    protected void process(String annotationValue, String defaultValue, Annotation annotation, Object parameter,\n-                           int parameterIndex, Method method, RestMethodMetadata restMethodMetadata) {\n-        RequestMetadata requestMetadata = restMethodMetadata.getRequest();\n-\n-        // process the request parameters\n-        setDefaultValue(requestMetadata.getParams(), defaultValue, annotationValue);\n-        // process the request headers\n-        setDefaultValue(requestMetadata.getHeaders(), defaultValue, annotationValue);\n-    }\n-\n-    private void setDefaultValue(Map<String, List<String>> source, String placeholderValue, String defaultValue) {\n-        OUTTER:\n-        for (Map.Entry<String, List<String>> entry : source.entrySet()) {\n-            List<String> values = entry.getValue();\n-            int size = values.size();\n-            for (int i = 0; i < size; i++) {\n-                String value = values.get(i);\n-                if (placeholderValue.equals(value)) {\n-                    values.set(i, defaultValue);\n-                    break OUTTER;\n-                }\n-            }\n-        }\n-    }\n-\n-    public int getPriority() {\n-        return MIN_PRIORITY;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest.jaxrs;\r\n+\r\n+import org.apache.dubbo.metadata.rest.AbstractAnnotatedMethodParameterProcessor;\r\n+import org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor;\r\n+import org.apache.dubbo.metadata.rest.RequestMetadata;\r\n+import org.apache.dubbo.metadata.rest.RestMethodMetadata;\r\n+\r\n+import java.lang.annotation.Annotation;\r\n+import java.lang.reflect.Method;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+\r\n+import static org.apache.dubbo.metadata.rest.RestMetadataConstants.JAX_RS.DEFAULT_VALUE_ANNOTATION_CLASS_NAME;\r\n+\r\n+\r\n+/**\r\n+ * The {@link AnnotatedMethodParameterProcessor} implementation for JAX-RS's @DefaultValue\r\n+ * *\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class DefaultValueParameterProcessor extends AbstractAnnotatedMethodParameterProcessor {\r\n+\r\n+    @Override\r\n+    public String getAnnotationType() {\r\n+        return DEFAULT_VALUE_ANNOTATION_CLASS_NAME;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void process(String annotationValue, String defaultValue, Annotation annotation, Object parameter,\r\n+                           int parameterIndex, Method method, RestMethodMetadata restMethodMetadata) {\r\n+        RequestMetadata requestMetadata = restMethodMetadata.getRequest();\r\n+\r\n+        // process the request parameters\r\n+        setDefaultValue(requestMetadata.getParams(), defaultValue, annotationValue);\r\n+        // process the request headers\r\n+        setDefaultValue(requestMetadata.getHeaders(), defaultValue, annotationValue);\r\n+    }\r\n+\r\n+    private void setDefaultValue(Map<String, List<String>> source, String placeholderValue, String defaultValue) {\r\n+        OUTTER:\r\n+        for (Map.Entry<String, List<String>> entry : source.entrySet()) {\r\n+            List<String> values = entry.getValue();\r\n+            int size = values.size();\r\n+            for (int i = 0; i < size; i++) {\r\n+                String value = values.get(i);\r\n+                if (placeholderValue.equals(value)) {\r\n+                    values.set(i, defaultValue);\r\n+                    break OUTTER;\r\n+                }\r\n+            }\r\n+        }\r\n+    }\r\n+\r\n+    public int getPriority() {\r\n+        return MIN_PRIORITY;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/jaxrs/FormParamParameterProcessor.java", "source2": "org/apache/dubbo/metadata/rest/jaxrs/FormParamParameterProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,34 +1,34 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest.jaxrs;\n-\n-import org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor;\n-\n-import static org.apache.dubbo.metadata.rest.RestMetadataConstants.JAX_RS.FORM_PARAM_ANNOTATION_CLASS_NAME;\n-\n-/**\n- * The {@link AnnotatedMethodParameterProcessor} implementation for JAX-RS's @FormParam\n- *\n- * @since 2.7.6\n- */\n-public class FormParamParameterProcessor extends ParamAnnotationParameterProcessor {\n-\n-    @Override\n-    public String getAnnotationType() {\n-        return FORM_PARAM_ANNOTATION_CLASS_NAME;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest.jaxrs;\r\n+\r\n+import org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor;\r\n+\r\n+import static org.apache.dubbo.metadata.rest.RestMetadataConstants.JAX_RS.FORM_PARAM_ANNOTATION_CLASS_NAME;\r\n+\r\n+/**\r\n+ * The {@link AnnotatedMethodParameterProcessor} implementation for JAX-RS's @FormParam\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class FormParamParameterProcessor extends ParamAnnotationParameterProcessor {\r\n+\r\n+    @Override\r\n+    public String getAnnotationType() {\r\n+        return FORM_PARAM_ANNOTATION_CLASS_NAME;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/jaxrs/HeaderParamParameterProcessor.java", "source2": "org/apache/dubbo/metadata/rest/jaxrs/HeaderParamParameterProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,49 +1,49 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest.jaxrs;\n-\n-import org.apache.dubbo.metadata.rest.AbstractAnnotatedMethodParameterProcessor;\n-import org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor;\n-import org.apache.dubbo.metadata.rest.RequestMetadata;\n-import org.apache.dubbo.metadata.rest.RestMethodMetadata;\n-\n-import java.lang.annotation.Annotation;\n-import java.lang.reflect.Method;\n-\n-import static org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor.buildDefaultValue;\n-import static org.apache.dubbo.metadata.rest.RestMetadataConstants.JAX_RS.HEADER_PARAM_ANNOTATION_CLASS_NAME;\n-\n-/**\n- * The {@link AnnotatedMethodParameterProcessor} implementation for JAX-RS's @HeaderParam\n- *\n- * @since 2.7.6\n- */\n-public class HeaderParamParameterProcessor extends AbstractAnnotatedMethodParameterProcessor {\n-\n-    @Override\n-    public String getAnnotationType() {\n-        return HEADER_PARAM_ANNOTATION_CLASS_NAME;\n-    }\n-\n-    @Override\n-    protected void process(String headerName, String defaultValue, Annotation annotation, Object parameter,\n-                           int parameterIndex, Method method, RestMethodMetadata restMethodMetadata) {\n-        RequestMetadata requestMetadata = restMethodMetadata.getRequest();\n-        // Add the placeholder as header value\n-        requestMetadata.addHeader(headerName, buildDefaultValue(parameterIndex));\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest.jaxrs;\r\n+\r\n+import org.apache.dubbo.metadata.rest.AbstractAnnotatedMethodParameterProcessor;\r\n+import org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor;\r\n+import org.apache.dubbo.metadata.rest.RequestMetadata;\r\n+import org.apache.dubbo.metadata.rest.RestMethodMetadata;\r\n+\r\n+import java.lang.annotation.Annotation;\r\n+import java.lang.reflect.Method;\r\n+\r\n+import static org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor.buildDefaultValue;\r\n+import static org.apache.dubbo.metadata.rest.RestMetadataConstants.JAX_RS.HEADER_PARAM_ANNOTATION_CLASS_NAME;\r\n+\r\n+/**\r\n+ * The {@link AnnotatedMethodParameterProcessor} implementation for JAX-RS's @HeaderParam\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class HeaderParamParameterProcessor extends AbstractAnnotatedMethodParameterProcessor {\r\n+\r\n+    @Override\r\n+    public String getAnnotationType() {\r\n+        return HEADER_PARAM_ANNOTATION_CLASS_NAME;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void process(String headerName, String defaultValue, Annotation annotation, Object parameter,\r\n+                           int parameterIndex, Method method, RestMethodMetadata restMethodMetadata) {\r\n+        RequestMetadata requestMetadata = restMethodMetadata.getRequest();\r\n+        // Add the placeholder as header value\r\n+        requestMetadata.addHeader(headerName, buildDefaultValue(parameterIndex));\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/jaxrs/JAXRSServiceRestMetadataResolver.java", "source2": "org/apache/dubbo/metadata/rest/jaxrs/JAXRSServiceRestMetadataResolver.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,99 +1,99 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest.jaxrs;\n-\n-import org.apache.dubbo.metadata.rest.AbstractServiceRestMetadataResolver;\n-import org.apache.dubbo.metadata.rest.ServiceRestMetadataResolver;\n-\n-import java.lang.annotation.Annotation;\n-import java.lang.reflect.Method;\n-import java.util.Set;\n-import java.util.stream.Stream;\n-\n-import static org.apache.dubbo.common.utils.AnnotationUtils.findAnnotation;\n-import static org.apache.dubbo.common.utils.AnnotationUtils.findMetaAnnotation;\n-import static org.apache.dubbo.common.utils.AnnotationUtils.getValue;\n-import static org.apache.dubbo.common.utils.AnnotationUtils.isAnnotationPresent;\n-import static org.apache.dubbo.common.utils.PathUtils.buildPath;\n-import static org.apache.dubbo.metadata.rest.RestMetadataConstants.JAX_RS.CONSUMES_ANNOTATION_CLASS_NAME;\n-import static org.apache.dubbo.metadata.rest.RestMetadataConstants.JAX_RS.HTTP_METHOD_ANNOTATION_CLASS_NAME;\n-import static org.apache.dubbo.metadata.rest.RestMetadataConstants.JAX_RS.PATH_ANNOTATION_CLASS_NAME;\n-import static org.apache.dubbo.metadata.rest.RestMetadataConstants.JAX_RS.PRODUCES_ANNOTATION_CLASS_NAME;\n-\n-/**\n- * JAX-RS {@link ServiceRestMetadataResolver} implementation\n- *\n- * @since 2.7.6\n- */\n-public class JAXRSServiceRestMetadataResolver extends AbstractServiceRestMetadataResolver {\n-\n-    @Override\n-    protected boolean supports0(Class<?> serviceType) {\n-        return isAnnotationPresent(serviceType, PATH_ANNOTATION_CLASS_NAME);\n-    }\n-\n-    @Override\n-    protected boolean isRestCapableMethod(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass) {\n-        return isAnnotationPresent(serviceMethod, HTTP_METHOD_ANNOTATION_CLASS_NAME);\n-    }\n-\n-    @Override\n-    protected String resolveRequestMethod(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass) {\n-        Annotation httpMethod = findMetaAnnotation(serviceMethod, HTTP_METHOD_ANNOTATION_CLASS_NAME);\n-        return getValue(httpMethod);\n-    }\n-\n-    @Override\n-    protected String resolveRequestPath(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass) {\n-        String requestBasePath = resolveRequestPathFromType(serviceType, serviceInterfaceClass);\n-        String requestRelativePath = resolveRequestPathFromMethod(serviceMethod);\n-        return buildPath(requestBasePath, requestRelativePath);\n-    }\n-\n-    private String resolveRequestPathFromType(Class<?> serviceType, Class<?> serviceInterfaceClass) {\n-        Annotation path = findAnnotation(serviceType, PATH_ANNOTATION_CLASS_NAME);\n-        if (path == null) {\n-            path = findAnnotation(serviceInterfaceClass, PATH_ANNOTATION_CLASS_NAME);\n-        }\n-        return getValue(path);\n-    }\n-\n-    private String resolveRequestPathFromMethod(Method serviceMethod) {\n-        Annotation path = findAnnotation(serviceMethod, PATH_ANNOTATION_CLASS_NAME);\n-        return getValue(path);\n-    }\n-\n-    @Override\n-    protected void processProduces(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass,\n-                                   Set<String> produces) {\n-        addAnnotationValues(serviceMethod, PRODUCES_ANNOTATION_CLASS_NAME, produces);\n-    }\n-\n-    @Override\n-    protected void processConsumes(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass,\n-                                   Set<String> consumes) {\n-        addAnnotationValues(serviceMethod, CONSUMES_ANNOTATION_CLASS_NAME, consumes);\n-    }\n-\n-    private void addAnnotationValues(Method serviceMethod, String annotationAttributeName, Set<String> result) {\n-        Annotation annotation = findAnnotation(serviceMethod, annotationAttributeName);\n-        String[] value = getValue(annotation);\n-        if (value != null) {\n-            Stream.of(value).forEach(result::add);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest.jaxrs;\r\n+\r\n+import org.apache.dubbo.metadata.rest.AbstractServiceRestMetadataResolver;\r\n+import org.apache.dubbo.metadata.rest.ServiceRestMetadataResolver;\r\n+\r\n+import java.lang.annotation.Annotation;\r\n+import java.lang.reflect.Method;\r\n+import java.util.Set;\r\n+import java.util.stream.Stream;\r\n+\r\n+import static org.apache.dubbo.common.utils.AnnotationUtils.findAnnotation;\r\n+import static org.apache.dubbo.common.utils.AnnotationUtils.findMetaAnnotation;\r\n+import static org.apache.dubbo.common.utils.AnnotationUtils.getValue;\r\n+import static org.apache.dubbo.common.utils.AnnotationUtils.isAnnotationPresent;\r\n+import static org.apache.dubbo.common.utils.PathUtils.buildPath;\r\n+import static org.apache.dubbo.metadata.rest.RestMetadataConstants.JAX_RS.CONSUMES_ANNOTATION_CLASS_NAME;\r\n+import static org.apache.dubbo.metadata.rest.RestMetadataConstants.JAX_RS.HTTP_METHOD_ANNOTATION_CLASS_NAME;\r\n+import static org.apache.dubbo.metadata.rest.RestMetadataConstants.JAX_RS.PATH_ANNOTATION_CLASS_NAME;\r\n+import static org.apache.dubbo.metadata.rest.RestMetadataConstants.JAX_RS.PRODUCES_ANNOTATION_CLASS_NAME;\r\n+\r\n+/**\r\n+ * JAX-RS {@link ServiceRestMetadataResolver} implementation\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class JAXRSServiceRestMetadataResolver extends AbstractServiceRestMetadataResolver {\r\n+\r\n+    @Override\r\n+    protected boolean supports0(Class<?> serviceType) {\r\n+        return isAnnotationPresent(serviceType, PATH_ANNOTATION_CLASS_NAME);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected boolean isRestCapableMethod(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass) {\r\n+        return isAnnotationPresent(serviceMethod, HTTP_METHOD_ANNOTATION_CLASS_NAME);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String resolveRequestMethod(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass) {\r\n+        Annotation httpMethod = findMetaAnnotation(serviceMethod, HTTP_METHOD_ANNOTATION_CLASS_NAME);\r\n+        return getValue(httpMethod);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String resolveRequestPath(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass) {\r\n+        String requestBasePath = resolveRequestPathFromType(serviceType, serviceInterfaceClass);\r\n+        String requestRelativePath = resolveRequestPathFromMethod(serviceMethod);\r\n+        return buildPath(requestBasePath, requestRelativePath);\r\n+    }\r\n+\r\n+    private String resolveRequestPathFromType(Class<?> serviceType, Class<?> serviceInterfaceClass) {\r\n+        Annotation path = findAnnotation(serviceType, PATH_ANNOTATION_CLASS_NAME);\r\n+        if (path == null) {\r\n+            path = findAnnotation(serviceInterfaceClass, PATH_ANNOTATION_CLASS_NAME);\r\n+        }\r\n+        return getValue(path);\r\n+    }\r\n+\r\n+    private String resolveRequestPathFromMethod(Method serviceMethod) {\r\n+        Annotation path = findAnnotation(serviceMethod, PATH_ANNOTATION_CLASS_NAME);\r\n+        return getValue(path);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void processProduces(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass,\r\n+                                   Set<String> produces) {\r\n+        addAnnotationValues(serviceMethod, PRODUCES_ANNOTATION_CLASS_NAME, produces);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void processConsumes(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass,\r\n+                                   Set<String> consumes) {\r\n+        addAnnotationValues(serviceMethod, CONSUMES_ANNOTATION_CLASS_NAME, consumes);\r\n+    }\r\n+\r\n+    private void addAnnotationValues(Method serviceMethod, String annotationAttributeName, Set<String> result) {\r\n+        Annotation annotation = findAnnotation(serviceMethod, annotationAttributeName);\r\n+        String[] value = getValue(annotation);\r\n+        if (value != null) {\r\n+            Stream.of(value).forEach(result::add);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/jaxrs/MatrixParamParameterProcessor.java", "source2": "org/apache/dubbo/metadata/rest/jaxrs/MatrixParamParameterProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,34 +1,34 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest.jaxrs;\n-\n-import org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor;\n-\n-import static org.apache.dubbo.metadata.rest.RestMetadataConstants.JAX_RS.MATRIX_PARAM_ANNOTATION_CLASS_NAME;\n-\n-/**\n- * The {@link AnnotatedMethodParameterProcessor} implementation for JAX-RS's @MatrixParam\n- *\n- * @since 2.7.6\n- */\n-public class MatrixParamParameterProcessor extends ParamAnnotationParameterProcessor {\n-\n-    @Override\n-    public String getAnnotationType() {\n-        return MATRIX_PARAM_ANNOTATION_CLASS_NAME;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest.jaxrs;\r\n+\r\n+import org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor;\r\n+\r\n+import static org.apache.dubbo.metadata.rest.RestMetadataConstants.JAX_RS.MATRIX_PARAM_ANNOTATION_CLASS_NAME;\r\n+\r\n+/**\r\n+ * The {@link AnnotatedMethodParameterProcessor} implementation for JAX-RS's @MatrixParam\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class MatrixParamParameterProcessor extends ParamAnnotationParameterProcessor {\r\n+\r\n+    @Override\r\n+    public String getAnnotationType() {\r\n+        return MATRIX_PARAM_ANNOTATION_CLASS_NAME;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/jaxrs/ParamAnnotationParameterProcessor.java", "source2": "org/apache/dubbo/metadata/rest/jaxrs/ParamAnnotationParameterProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,38 +1,38 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest.jaxrs;\n-\n-import org.apache.dubbo.metadata.rest.AbstractAnnotatedMethodParameterProcessor;\n-import org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor;\n-import org.apache.dubbo.metadata.rest.RequestMetadata;\n-import org.apache.dubbo.metadata.rest.RestMethodMetadata;\n-\n-import java.lang.annotation.Annotation;\n-import java.lang.reflect.Method;\n-\n-/**\n- * The abstract {@link AnnotatedMethodParameterProcessor} implementation for JAX-RS's @*Param\n- */\n-public abstract class ParamAnnotationParameterProcessor extends AbstractAnnotatedMethodParameterProcessor {\n-\n-    @Override\n-    protected void process(String name, String defaultValue, Annotation annotation, Object parameter,\n-                           int parameterIndex, Method method, RestMethodMetadata restMethodMetadata) {\n-        RequestMetadata requestMetadata = restMethodMetadata.getRequest();\n-        requestMetadata.addParam(name, defaultValue);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest.jaxrs;\r\n+\r\n+import org.apache.dubbo.metadata.rest.AbstractAnnotatedMethodParameterProcessor;\r\n+import org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor;\r\n+import org.apache.dubbo.metadata.rest.RequestMetadata;\r\n+import org.apache.dubbo.metadata.rest.RestMethodMetadata;\r\n+\r\n+import java.lang.annotation.Annotation;\r\n+import java.lang.reflect.Method;\r\n+\r\n+/**\r\n+ * The abstract {@link AnnotatedMethodParameterProcessor} implementation for JAX-RS's @*Param\r\n+ */\r\n+public abstract class ParamAnnotationParameterProcessor extends AbstractAnnotatedMethodParameterProcessor {\r\n+\r\n+    @Override\r\n+    protected void process(String name, String defaultValue, Annotation annotation, Object parameter,\r\n+                           int parameterIndex, Method method, RestMethodMetadata restMethodMetadata) {\r\n+        RequestMetadata requestMetadata = restMethodMetadata.getRequest();\r\n+        requestMetadata.addParam(name, defaultValue);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/jaxrs/QueryParamParameterProcessor.java", "source2": "org/apache/dubbo/metadata/rest/jaxrs/QueryParamParameterProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,34 +1,34 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest.jaxrs;\n-\n-import org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor;\n-\n-import static org.apache.dubbo.metadata.rest.RestMetadataConstants.JAX_RS.QUERY_PARAM_ANNOTATION_CLASS_NAME;\n-\n-/**\n- * The {@link AnnotatedMethodParameterProcessor} implementation for JAX-RS's @QueryParam\n- *\n- * @since 2.7.6\n- */\n-public class QueryParamParameterProcessor extends ParamAnnotationParameterProcessor {\n-\n-    @Override\n-    public String getAnnotationType() {\n-        return QUERY_PARAM_ANNOTATION_CLASS_NAME;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest.jaxrs;\r\n+\r\n+import org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor;\r\n+\r\n+import static org.apache.dubbo.metadata.rest.RestMetadataConstants.JAX_RS.QUERY_PARAM_ANNOTATION_CLASS_NAME;\r\n+\r\n+/**\r\n+ * The {@link AnnotatedMethodParameterProcessor} implementation for JAX-RS's @QueryParam\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class QueryParamParameterProcessor extends ParamAnnotationParameterProcessor {\r\n+\r\n+    @Override\r\n+    public String getAnnotationType() {\r\n+        return QUERY_PARAM_ANNOTATION_CLASS_NAME;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/springmvc/AbstractRequestAnnotationParameterProcessor.java", "source2": "org/apache/dubbo/metadata/rest/springmvc/AbstractRequestAnnotationParameterProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,71 +1,71 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest.springmvc;\n-\n-import org.apache.dubbo.common.utils.AnnotationUtils;\n-import org.apache.dubbo.metadata.rest.AbstractAnnotatedMethodParameterProcessor;\n-import org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor;\n-\n-import java.lang.annotation.Annotation;\n-import java.lang.reflect.Parameter;\n-import java.util.Objects;\n-\n-import static org.apache.dubbo.common.utils.AnnotationUtils.getAttribute;\n-\n-/**\n- * The abstract {@link AnnotatedMethodParameterProcessor} implementation for Spring Web MVC's @Request*\n- */\n-public abstract class AbstractRequestAnnotationParameterProcessor extends AbstractAnnotatedMethodParameterProcessor {\n-\n-    @Override\n-    protected String getAnnotationValue(Annotation annotation, Parameter parameter, int parameterIndex) {\n-        // try to get \"value\" attribute first\n-        String name = super.getAnnotationValue(annotation, parameter, parameterIndex);\n-\n-        // try to get \"name\" attribute if required\n-        if (isEmpty(name)) {\n-            name = getAttribute(annotation, \"name\");\n-        }\n-\n-        // finally , try to the name of parameter\n-        if (isEmpty(name)) {\n-            name = parameter.getName();\n-        }\n-\n-        return name;\n-    }\n-\n-    @Override\n-    protected String getDefaultValue(Annotation annotation, Parameter parameter, int parameterIndex) {\n-        String attributeName = \"defaultValue\";\n-        String attributeValue = getAttribute(annotation, attributeName);\n-\n-        if (isEmpty(attributeValue) || isDefaultValue(annotation, attributeName, attributeValue)) {\n-            attributeValue = super.getDefaultValue(annotation, parameter, parameterIndex);\n-        }\n-        return attributeValue;\n-    }\n-\n-    private boolean isDefaultValue(Annotation annotation, String attributeName, Object attributeValue) {\n-        String defaultValue = AnnotationUtils.getDefaultValue(annotation, attributeName);\n-        return Objects.equals(attributeValue, defaultValue);\n-    }\n-\n-    protected boolean isEmpty(String str) {\n-        return str == null || str.isEmpty();\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest.springmvc;\r\n+\r\n+import org.apache.dubbo.common.utils.AnnotationUtils;\r\n+import org.apache.dubbo.metadata.rest.AbstractAnnotatedMethodParameterProcessor;\r\n+import org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor;\r\n+\r\n+import java.lang.annotation.Annotation;\r\n+import java.lang.reflect.Parameter;\r\n+import java.util.Objects;\r\n+\r\n+import static org.apache.dubbo.common.utils.AnnotationUtils.getAttribute;\r\n+\r\n+/**\r\n+ * The abstract {@link AnnotatedMethodParameterProcessor} implementation for Spring Web MVC's @Request*\r\n+ */\r\n+public abstract class AbstractRequestAnnotationParameterProcessor extends AbstractAnnotatedMethodParameterProcessor {\r\n+\r\n+    @Override\r\n+    protected String getAnnotationValue(Annotation annotation, Parameter parameter, int parameterIndex) {\r\n+        // try to get \"value\" attribute first\r\n+        String name = super.getAnnotationValue(annotation, parameter, parameterIndex);\r\n+\r\n+        // try to get \"name\" attribute if required\r\n+        if (isEmpty(name)) {\r\n+            name = getAttribute(annotation, \"name\");\r\n+        }\r\n+\r\n+        // finally , try to the name of parameter\r\n+        if (isEmpty(name)) {\r\n+            name = parameter.getName();\r\n+        }\r\n+\r\n+        return name;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String getDefaultValue(Annotation annotation, Parameter parameter, int parameterIndex) {\r\n+        String attributeName = \"defaultValue\";\r\n+        String attributeValue = getAttribute(annotation, attributeName);\r\n+\r\n+        if (isEmpty(attributeValue) || isDefaultValue(annotation, attributeName, attributeValue)) {\r\n+            attributeValue = super.getDefaultValue(annotation, parameter, parameterIndex);\r\n+        }\r\n+        return attributeValue;\r\n+    }\r\n+\r\n+    private boolean isDefaultValue(Annotation annotation, String attributeName, Object attributeValue) {\r\n+        String defaultValue = AnnotationUtils.getDefaultValue(annotation, attributeName);\r\n+        return Objects.equals(attributeValue, defaultValue);\r\n+    }\r\n+\r\n+    protected boolean isEmpty(String str) {\r\n+        return str == null || str.isEmpty();\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/springmvc/RequestHeaderParameterProcessor.java", "source2": "org/apache/dubbo/metadata/rest/springmvc/RequestHeaderParameterProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,43 +1,43 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest.springmvc;\n-\n-import org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor;\n-import org.apache.dubbo.metadata.rest.RestMethodMetadata;\n-\n-import java.lang.annotation.Annotation;\n-import java.lang.reflect.Method;\n-\n-import static org.apache.dubbo.metadata.rest.RestMetadataConstants.SPRING_MVC.REQUEST_HEADER_ANNOTATION_CLASS_NAME;\n-\n-/**\n- * The {@link AnnotatedMethodParameterProcessor} implementation for Spring Web MVC's @RequestHeader\n- */\n-public class RequestHeaderParameterProcessor extends AbstractRequestAnnotationParameterProcessor {\n-\n-    @Override\n-    public String getAnnotationType() {\n-        return REQUEST_HEADER_ANNOTATION_CLASS_NAME;\n-    }\n-\n-    @Override\n-    protected void process(String name, String defaultValue, Annotation annotation, Object parameter,\n-                           int parameterIndex, Method method, RestMethodMetadata restMethodMetadata) {\n-        restMethodMetadata.getRequest().addHeader(name, defaultValue);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest.springmvc;\r\n+\r\n+import org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor;\r\n+import org.apache.dubbo.metadata.rest.RestMethodMetadata;\r\n+\r\n+import java.lang.annotation.Annotation;\r\n+import java.lang.reflect.Method;\r\n+\r\n+import static org.apache.dubbo.metadata.rest.RestMetadataConstants.SPRING_MVC.REQUEST_HEADER_ANNOTATION_CLASS_NAME;\r\n+\r\n+/**\r\n+ * The {@link AnnotatedMethodParameterProcessor} implementation for Spring Web MVC's @RequestHeader\r\n+ */\r\n+public class RequestHeaderParameterProcessor extends AbstractRequestAnnotationParameterProcessor {\r\n+\r\n+    @Override\r\n+    public String getAnnotationType() {\r\n+        return REQUEST_HEADER_ANNOTATION_CLASS_NAME;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void process(String name, String defaultValue, Annotation annotation, Object parameter,\r\n+                           int parameterIndex, Method method, RestMethodMetadata restMethodMetadata) {\r\n+        restMethodMetadata.getRequest().addHeader(name, defaultValue);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/springmvc/RequestParamParameterProcessor.java", "source2": "org/apache/dubbo/metadata/rest/springmvc/RequestParamParameterProcessor.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,43 +1,43 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest.springmvc;\n-\n-import org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor;\n-import org.apache.dubbo.metadata.rest.RestMethodMetadata;\n-\n-import java.lang.annotation.Annotation;\n-import java.lang.reflect.Method;\n-\n-import static org.apache.dubbo.metadata.rest.RestMetadataConstants.SPRING_MVC.REQUEST_PARAM_ANNOTATION_CLASS_NAME;\n-\n-/**\n- * The {@link AnnotatedMethodParameterProcessor} implementation for Spring Web MVC's @RequestParam\n- */\n-public class RequestParamParameterProcessor extends AbstractRequestAnnotationParameterProcessor {\n-\n-    @Override\n-    public String getAnnotationType() {\n-        return REQUEST_PARAM_ANNOTATION_CLASS_NAME;\n-    }\n-\n-    @Override\n-    protected void process(String name, String defaultValue, Annotation annotation, Object parameter, int parameterIndex,\n-                           Method method, RestMethodMetadata restMethodMetadata) {\n-        restMethodMetadata.getRequest().addParam(name, defaultValue);\n-\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest.springmvc;\r\n+\r\n+import org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor;\r\n+import org.apache.dubbo.metadata.rest.RestMethodMetadata;\r\n+\r\n+import java.lang.annotation.Annotation;\r\n+import java.lang.reflect.Method;\r\n+\r\n+import static org.apache.dubbo.metadata.rest.RestMetadataConstants.SPRING_MVC.REQUEST_PARAM_ANNOTATION_CLASS_NAME;\r\n+\r\n+/**\r\n+ * The {@link AnnotatedMethodParameterProcessor} implementation for Spring Web MVC's @RequestParam\r\n+ */\r\n+public class RequestParamParameterProcessor extends AbstractRequestAnnotationParameterProcessor {\r\n+\r\n+    @Override\r\n+    public String getAnnotationType() {\r\n+        return REQUEST_PARAM_ANNOTATION_CLASS_NAME;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void process(String name, String defaultValue, Annotation annotation, Object parameter, int parameterIndex,\r\n+                           Method method, RestMethodMetadata restMethodMetadata) {\r\n+        restMethodMetadata.getRequest().addParam(name, defaultValue);\r\n+\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/rest/springmvc/SpringMvcServiceRestMetadataResolver.java", "source2": "org/apache/dubbo/metadata/rest/springmvc/SpringMvcServiceRestMetadataResolver.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,141 +1,141 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.rest.springmvc;\n-\n-import org.apache.dubbo.metadata.rest.AbstractServiceRestMetadataResolver;\n-import org.apache.dubbo.metadata.rest.ServiceRestMetadataResolver;\n-\n-import java.lang.annotation.Annotation;\n-import java.lang.reflect.AnnotatedElement;\n-import java.lang.reflect.Array;\n-import java.lang.reflect.Method;\n-import java.util.Set;\n-\n-import static java.lang.String.valueOf;\n-import static java.lang.reflect.Array.getLength;\n-import static java.util.stream.Stream.of;\n-import static org.apache.dubbo.common.utils.AnnotationUtils.findAnnotation;\n-import static org.apache.dubbo.common.utils.AnnotationUtils.getAttribute;\n-import static org.apache.dubbo.common.utils.AnnotationUtils.isAnnotationPresent;\n-import static org.apache.dubbo.common.utils.ArrayUtils.isEmpty;\n-import static org.apache.dubbo.common.utils.ArrayUtils.isNotEmpty;\n-import static org.apache.dubbo.common.utils.MethodUtils.findMethod;\n-import static org.apache.dubbo.common.utils.PathUtils.buildPath;\n-import static org.apache.dubbo.metadata.rest.RestMetadataConstants.SPRING_MVC.ANNOTATED_ELEMENT_UTILS_CLASS;\n-import static org.apache.dubbo.metadata.rest.RestMetadataConstants.SPRING_MVC.CONTROLLER_ANNOTATION_CLASS;\n-import static org.apache.dubbo.metadata.rest.RestMetadataConstants.SPRING_MVC.REQUEST_MAPPING_ANNOTATION_CLASS;\n-\n-/**\n- * {@link ServiceRestMetadataResolver}\n- *\n- * @since 2.7.6\n- */\n-public class SpringMvcServiceRestMetadataResolver extends AbstractServiceRestMetadataResolver {\n-\n-    private static final int FIRST_ELEMENT_INDEX = 0;\n-\n-    @Override\n-    protected boolean supports0(Class<?> serviceType) {\n-        return isAnnotationPresent(serviceType, CONTROLLER_ANNOTATION_CLASS);\n-    }\n-\n-    @Override\n-    protected boolean isRestCapableMethod(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass) {\n-        return isAnnotationPresent(serviceType, REQUEST_MAPPING_ANNOTATION_CLASS) ||\n-                isAnnotationPresent(serviceMethod, REQUEST_MAPPING_ANNOTATION_CLASS);\n-    }\n-\n-    @Override\n-    protected String resolveRequestMethod(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass) {\n-        Annotation requestMapping = getRequestMapping(serviceMethod);\n-\n-        // httpMethod is an array of RequestMethod\n-        Object httpMethod = getAttribute(requestMapping, \"method\");\n-\n-        if (httpMethod == null || getLength(httpMethod) < 1) {\n-            return null;\n-        }\n-\n-        // TODO Is is required to support more request methods?\n-        return valueOf(Array.get(httpMethod, FIRST_ELEMENT_INDEX));\n-    }\n-\n-    @Override\n-    protected String resolveRequestPath(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass) {\n-        String requestBasePath = resolveRequestPath(serviceType);\n-        String requestRelativePath = resolveRequestPath(serviceMethod);\n-        return buildPath(requestBasePath, requestRelativePath);\n-    }\n-\n-    @Override\n-    protected void processProduces(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass, Set<String> produces) {\n-        addMediaTypes(serviceMethod, \"produces\", produces);\n-    }\n-\n-    @Override\n-    protected void processConsumes(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass, Set<String> consumes) {\n-        addMediaTypes(serviceMethod, \"consumes\", consumes);\n-    }\n-\n-    private String resolveRequestPath(AnnotatedElement annotatedElement) {\n-        Annotation mappingAnnotation = getRequestMapping(annotatedElement);\n-\n-        // try \"value\" first\n-        String[] value = getAttribute(mappingAnnotation, \"value\");\n-\n-        if (isEmpty(value)) { // try \"path\" later\n-            value = getAttribute(mappingAnnotation, \"path\");\n-        }\n-\n-        if (isEmpty(value)) {\n-            return \"\";\n-        }\n-        // TODO Is is required to support more request paths?\n-        return value[FIRST_ELEMENT_INDEX];\n-    }\n-\n-    private void addMediaTypes(Method serviceMethod, String annotationAttributeName, Set<String> mediaTypesSet) {\n-\n-        Annotation mappingAnnotation = getRequestMapping(serviceMethod);\n-\n-        String[] mediaTypes = getAttribute(mappingAnnotation, annotationAttributeName);\n-\n-        if (isNotEmpty(mediaTypes)) {\n-            of(mediaTypes).forEach(mediaTypesSet::add);\n-        }\n-    }\n-\n-    private Annotation getRequestMapping(AnnotatedElement annotatedElement) {\n-        // try \"@RequestMapping\" first\n-        Annotation requestMapping = findAnnotation(annotatedElement, REQUEST_MAPPING_ANNOTATION_CLASS);\n-        if (requestMapping == null) {\n-            // To try the meta-annotated annotation if can't be found.\n-            // For example, if the annotation \"@GetMapping\" is used in the Spring Framework is 4.2 or above,\n-            // because of \"@GetMapping\" alias for (\"@AliasFor\") \"@RequestMapping\" , both of them belongs to\n-            // the artifact \"spring-web\" which depends on \"spring-core\", thus Spring core's\n-            // AnnotatedElementUtils.findMergedAnnotation(AnnotatedElement, Class) must be involved.\n-            Method method = findMethod(ANNOTATED_ELEMENT_UTILS_CLASS, \"findMergedAnnotation\", AnnotatedElement.class, Class.class);\n-            if (method != null) {\n-                try {\n-                    requestMapping = (Annotation) method.invoke(null, annotatedElement, REQUEST_MAPPING_ANNOTATION_CLASS);\n-                } catch (Exception ignored) {\n-                }\n-            }\n-        }\n-        return requestMapping;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.rest.springmvc;\r\n+\r\n+import org.apache.dubbo.metadata.rest.AbstractServiceRestMetadataResolver;\r\n+import org.apache.dubbo.metadata.rest.ServiceRestMetadataResolver;\r\n+\r\n+import java.lang.annotation.Annotation;\r\n+import java.lang.reflect.AnnotatedElement;\r\n+import java.lang.reflect.Array;\r\n+import java.lang.reflect.Method;\r\n+import java.util.Set;\r\n+\r\n+import static java.lang.String.valueOf;\r\n+import static java.lang.reflect.Array.getLength;\r\n+import static java.util.stream.Stream.of;\r\n+import static org.apache.dubbo.common.utils.AnnotationUtils.findAnnotation;\r\n+import static org.apache.dubbo.common.utils.AnnotationUtils.getAttribute;\r\n+import static org.apache.dubbo.common.utils.AnnotationUtils.isAnnotationPresent;\r\n+import static org.apache.dubbo.common.utils.ArrayUtils.isEmpty;\r\n+import static org.apache.dubbo.common.utils.ArrayUtils.isNotEmpty;\r\n+import static org.apache.dubbo.common.utils.MethodUtils.findMethod;\r\n+import static org.apache.dubbo.common.utils.PathUtils.buildPath;\r\n+import static org.apache.dubbo.metadata.rest.RestMetadataConstants.SPRING_MVC.ANNOTATED_ELEMENT_UTILS_CLASS;\r\n+import static org.apache.dubbo.metadata.rest.RestMetadataConstants.SPRING_MVC.CONTROLLER_ANNOTATION_CLASS;\r\n+import static org.apache.dubbo.metadata.rest.RestMetadataConstants.SPRING_MVC.REQUEST_MAPPING_ANNOTATION_CLASS;\r\n+\r\n+/**\r\n+ * {@link ServiceRestMetadataResolver}\r\n+ *\r\n+ * @since 2.7.6\r\n+ */\r\n+public class SpringMvcServiceRestMetadataResolver extends AbstractServiceRestMetadataResolver {\r\n+\r\n+    private static final int FIRST_ELEMENT_INDEX = 0;\r\n+\r\n+    @Override\r\n+    protected boolean supports0(Class<?> serviceType) {\r\n+        return isAnnotationPresent(serviceType, CONTROLLER_ANNOTATION_CLASS);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected boolean isRestCapableMethod(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass) {\r\n+        return isAnnotationPresent(serviceType, REQUEST_MAPPING_ANNOTATION_CLASS) ||\r\n+                isAnnotationPresent(serviceMethod, REQUEST_MAPPING_ANNOTATION_CLASS);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String resolveRequestMethod(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass) {\r\n+        Annotation requestMapping = getRequestMapping(serviceMethod);\r\n+\r\n+        // httpMethod is an array of RequestMethod\r\n+        Object httpMethod = getAttribute(requestMapping, \"method\");\r\n+\r\n+        if (httpMethod == null || getLength(httpMethod) < 1) {\r\n+            return null;\r\n+        }\r\n+\r\n+        // TODO Is is required to support more request methods?\r\n+        return valueOf(Array.get(httpMethod, FIRST_ELEMENT_INDEX));\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String resolveRequestPath(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass) {\r\n+        String requestBasePath = resolveRequestPath(serviceType);\r\n+        String requestRelativePath = resolveRequestPath(serviceMethod);\r\n+        return buildPath(requestBasePath, requestRelativePath);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void processProduces(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass, Set<String> produces) {\r\n+        addMediaTypes(serviceMethod, \"produces\", produces);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void processConsumes(Method serviceMethod, Class<?> serviceType, Class<?> serviceInterfaceClass, Set<String> consumes) {\r\n+        addMediaTypes(serviceMethod, \"consumes\", consumes);\r\n+    }\r\n+\r\n+    private String resolveRequestPath(AnnotatedElement annotatedElement) {\r\n+        Annotation mappingAnnotation = getRequestMapping(annotatedElement);\r\n+\r\n+        // try \"value\" first\r\n+        String[] value = getAttribute(mappingAnnotation, \"value\");\r\n+\r\n+        if (isEmpty(value)) { // try \"path\" later\r\n+            value = getAttribute(mappingAnnotation, \"path\");\r\n+        }\r\n+\r\n+        if (isEmpty(value)) {\r\n+            return \"\";\r\n+        }\r\n+        // TODO Is is required to support more request paths?\r\n+        return value[FIRST_ELEMENT_INDEX];\r\n+    }\r\n+\r\n+    private void addMediaTypes(Method serviceMethod, String annotationAttributeName, Set<String> mediaTypesSet) {\r\n+\r\n+        Annotation mappingAnnotation = getRequestMapping(serviceMethod);\r\n+\r\n+        String[] mediaTypes = getAttribute(mappingAnnotation, annotationAttributeName);\r\n+\r\n+        if (isNotEmpty(mediaTypes)) {\r\n+            of(mediaTypes).forEach(mediaTypesSet::add);\r\n+        }\r\n+    }\r\n+\r\n+    private Annotation getRequestMapping(AnnotatedElement annotatedElement) {\r\n+        // try \"@RequestMapping\" first\r\n+        Annotation requestMapping = findAnnotation(annotatedElement, REQUEST_MAPPING_ANNOTATION_CLASS);\r\n+        if (requestMapping == null) {\r\n+            // To try the meta-annotated annotation if can't be found.\r\n+            // For example, if the annotation \"@GetMapping\" is used in the Spring Framework is 4.2 or above,\r\n+            // because of \"@GetMapping\" alias for (\"@AliasFor\") \"@RequestMapping\" , both of them belongs to\r\n+            // the artifact \"spring-web\" which depends on \"spring-core\", thus Spring core's\r\n+            // AnnotatedElementUtils.findMergedAnnotation(AnnotatedElement, Class) must be involved.\r\n+            Method method = findMethod(ANNOTATED_ELEMENT_UTILS_CLASS, \"findMergedAnnotation\", AnnotatedElement.class, Class.class);\r\n+            if (method != null) {\r\n+                try {\r\n+                    requestMapping = (Annotation) method.invoke(null, annotatedElement, REQUEST_MAPPING_ANNOTATION_CLASS);\r\n+                } catch (Exception ignored) {\r\n+                }\r\n+            }\r\n+        }\r\n+        return requestMapping;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/store/AbstractAbstractWritableMetadataService.java", "source2": "org/apache/dubbo/metadata/store/AbstractAbstractWritableMetadataService.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,100 +1,100 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.store;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.metadata.WritableMetadataService;\n-import org.apache.dubbo.metadata.definition.model.ServiceDefinition;\n-\n-import com.google.gson.Gson;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PID_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;\n-import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMESTAMP_KEY;\n-import static org.apache.dubbo.common.utils.ClassUtils.forName;\n-import static org.apache.dubbo.metadata.definition.ServiceDefinitionBuilder.buildFullDefinition;\n-import static org.apache.dubbo.remoting.Constants.BIND_IP_KEY;\n-import static org.apache.dubbo.remoting.Constants.BIND_PORT_KEY;\n-import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;\n-import static org.apache.dubbo.rpc.support.ProtocolUtils.isGeneric;\n-\n-/**\n- * The abstract implementation of {@link WritableMetadataService}\n- *\n- * @see WritableMetadataService\n- * @since 2.7.8\n- */\n-public abstract class AbstractAbstractWritableMetadataService implements WritableMetadataService {\n-\n-    protected final Logger logger = LoggerFactory.getLogger(getClass());\n-\n-    @Override\n-    public void publishServiceDefinition(URL url) {\n-        if (SERVICE_INTERFACE_NAME.equals(url.getServiceInterface())) { // Ignore the interface \"MetadataService\"\n-            return;\n-        }\n-\n-        // Remove the useless parameters\n-        url = url.removeParameters(PID_KEY, TIMESTAMP_KEY, BIND_IP_KEY, BIND_PORT_KEY, TIMESTAMP_KEY);\n-\n-        String side = url.getParameter(SIDE_KEY);\n-        if (PROVIDER_SIDE.equalsIgnoreCase(side)) {\n-            publishProviderServiceDefinition(url);\n-        } else {\n-            publishConsumerParameters(url);\n-        }\n-    }\n-\n-    protected void publishProviderServiceDefinition(URL url) {\n-        String serviceDefinition = getServiceDefinition(url);\n-        if (!StringUtils.isBlank(serviceDefinition)) {\n-            publishServiceDefinition(url.getServiceKey(), serviceDefinition);\n-        }\n-    }\n-\n-    protected String getServiceDefinition(URL exportedURL) {\n-        String interfaceName = exportedURL.getParameter(INTERFACE_KEY);\n-        String json = null;\n-        try {\n-            if (StringUtils.isNotEmpty(interfaceName) && !isGeneric(exportedURL.getParameter(GENERIC_KEY))) {\n-                Class interfaceClass = forName(interfaceName);\n-                ServiceDefinition serviceDefinition = buildFullDefinition(interfaceClass, exportedURL.getParameters());\n-                Gson gson = new Gson();\n-                json = gson.toJson(serviceDefinition);\n-            }\n-        } catch (ClassNotFoundException e) {\n-            //ignore error\n-            if (logger.isErrorEnabled()) {\n-                logger.error(\"The interface class[name : \" + interfaceName + \"] can't be found , providerUrl: \"\n-                        + exportedURL.toFullString());\n-            }\n-        }\n-        return json;\n-    }\n-\n-    protected void publishConsumerParameters(URL url) {\n-    }\n-\n-    protected void publishServiceDefinition(String key, String json) {\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.store;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.metadata.WritableMetadataService;\r\n+import org.apache.dubbo.metadata.definition.model.ServiceDefinition;\r\n+\r\n+import com.google.gson.Gson;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PID_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMESTAMP_KEY;\r\n+import static org.apache.dubbo.common.utils.ClassUtils.forName;\r\n+import static org.apache.dubbo.metadata.definition.ServiceDefinitionBuilder.buildFullDefinition;\r\n+import static org.apache.dubbo.remoting.Constants.BIND_IP_KEY;\r\n+import static org.apache.dubbo.remoting.Constants.BIND_PORT_KEY;\r\n+import static org.apache.dubbo.rpc.Constants.GENERIC_KEY;\r\n+import static org.apache.dubbo.rpc.support.ProtocolUtils.isGeneric;\r\n+\r\n+/**\r\n+ * The abstract implementation of {@link WritableMetadataService}\r\n+ *\r\n+ * @see WritableMetadataService\r\n+ * @since 2.7.8\r\n+ */\r\n+public abstract class AbstractAbstractWritableMetadataService implements WritableMetadataService {\r\n+\r\n+    protected final Logger logger = LoggerFactory.getLogger(getClass());\r\n+\r\n+    @Override\r\n+    public void publishServiceDefinition(URL url) {\r\n+        if (SERVICE_INTERFACE_NAME.equals(url.getServiceInterface())) { // Ignore the interface \"MetadataService\"\r\n+            return;\r\n+        }\r\n+\r\n+        // Remove the useless parameters\r\n+        url = url.removeParameters(PID_KEY, TIMESTAMP_KEY, BIND_IP_KEY, BIND_PORT_KEY, TIMESTAMP_KEY);\r\n+\r\n+        String side = url.getParameter(SIDE_KEY);\r\n+        if (PROVIDER_SIDE.equalsIgnoreCase(side)) {\r\n+            publishProviderServiceDefinition(url);\r\n+        } else {\r\n+            publishConsumerParameters(url);\r\n+        }\r\n+    }\r\n+\r\n+    protected void publishProviderServiceDefinition(URL url) {\r\n+        String serviceDefinition = getServiceDefinition(url);\r\n+        if (!StringUtils.isBlank(serviceDefinition)) {\r\n+            publishServiceDefinition(url.getServiceKey(), serviceDefinition);\r\n+        }\r\n+    }\r\n+\r\n+    protected String getServiceDefinition(URL exportedURL) {\r\n+        String interfaceName = exportedURL.getParameter(INTERFACE_KEY);\r\n+        String json = null;\r\n+        try {\r\n+            if (StringUtils.isNotEmpty(interfaceName) && !isGeneric(exportedURL.getParameter(GENERIC_KEY))) {\r\n+                Class interfaceClass = forName(interfaceName);\r\n+                ServiceDefinition serviceDefinition = buildFullDefinition(interfaceClass, exportedURL.getParameters());\r\n+                Gson gson = new Gson();\r\n+                json = gson.toJson(serviceDefinition);\r\n+            }\r\n+        } catch (ClassNotFoundException e) {\r\n+            //ignore error\r\n+            if (logger.isErrorEnabled()) {\r\n+                logger.error(\"The interface class[name : \" + interfaceName + \"] can't be found , providerUrl: \"\r\n+                        + exportedURL.toFullString());\r\n+            }\r\n+        }\r\n+        return json;\r\n+    }\r\n+\r\n+    protected void publishConsumerParameters(URL url) {\r\n+    }\r\n+\r\n+    protected void publishServiceDefinition(String key, String json) {\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java", "source2": "org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,188 +1,188 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.store.zookeeper;\n-\n-import com.google.gson.Gson;\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.CollectionUtils;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.metadata.MappingChangedEvent;\n-import org.apache.dubbo.metadata.MappingListener;\n-import org.apache.dubbo.metadata.MetadataInfo;\n-import org.apache.dubbo.metadata.report.identifier.BaseMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.KeyTypeEnum;\n-import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.support.AbstractMetadataReport;\n-import org.apache.dubbo.remoting.zookeeper.ChildListener;\n-import org.apache.dubbo.remoting.zookeeper.ZookeeperClient;\n-import org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter;\n-\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.Collections;\n-import java.util.HashMap;\n-import java.util.HashSet;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.concurrent.ConcurrentHashMap;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\n-\n-/**\n- * ZookeeperMetadataReport\n- */\n-public class ZookeeperMetadataReport extends AbstractMetadataReport {\n-\n-    private final String root;\n-\n-    final ZookeeperClient zkClient;\n-\n-    private Gson gson = new Gson();\n-\n-    private Map<String, ChildListener> listenerMap = new ConcurrentHashMap<>();\n-\n-    public ZookeeperMetadataReport(URL url, ZookeeperTransporter zookeeperTransporter) {\n-        super(url);\n-        if (url.isAnyHost()) {\n-            throw new IllegalStateException(\"registry address == null\");\n-        }\n-        String group = url.getParameter(GROUP_KEY, DEFAULT_ROOT);\n-        if (!group.startsWith(PATH_SEPARATOR)) {\n-            group = PATH_SEPARATOR + group;\n-        }\n-        this.root = group;\n-        zkClient = zookeeperTransporter.connect(url);\n-    }\n-\n-    String toRootDir() {\n-        if (root.equals(PATH_SEPARATOR)) {\n-            return root;\n-        }\n-        return root + PATH_SEPARATOR;\n-    }\n-\n-    @Override\n-    protected void doStoreProviderMetadata(MetadataIdentifier providerMetadataIdentifier, String serviceDefinitions) {\n-        storeMetadata(providerMetadataIdentifier, serviceDefinitions);\n-    }\n-\n-    @Override\n-    protected void doStoreConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, String value) {\n-        storeMetadata(consumerMetadataIdentifier, value);\n-    }\n-\n-    @Override\n-    protected void doSaveMetadata(ServiceMetadataIdentifier metadataIdentifier, URL url) {\n-        zkClient.create(getNodePath(metadataIdentifier), URL.encode(url.toFullString()), false);\n-    }\n-\n-    @Override\n-    protected void doRemoveMetadata(ServiceMetadataIdentifier metadataIdentifier) {\n-        zkClient.delete(getNodePath(metadataIdentifier));\n-    }\n-\n-    @Override\n-    protected List<String> doGetExportedURLs(ServiceMetadataIdentifier metadataIdentifier) {\n-        String content = zkClient.getContent(getNodePath(metadataIdentifier));\n-        if (StringUtils.isEmpty(content)) {\n-            return Collections.emptyList();\n-        }\n-        return new ArrayList<String>(Arrays.asList(URL.decode(content)));\n-    }\n-\n-    @Override\n-    protected void doSaveSubscriberData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, String urls) {\n-        zkClient.create(getNodePath(subscriberMetadataIdentifier), urls, false);\n-    }\n-\n-    @Override\n-    protected String doGetSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier) {\n-        return zkClient.getContent(getNodePath(subscriberMetadataIdentifier));\n-    }\n-\n-    @Override\n-    public String getServiceDefinition(MetadataIdentifier metadataIdentifier) {\n-        return zkClient.getContent(getNodePath(metadataIdentifier));\n-    }\n-\n-    private void storeMetadata(MetadataIdentifier metadataIdentifier, String v) {\n-        zkClient.create(getNodePath(metadataIdentifier), v, false);\n-    }\n-\n-    String getNodePath(BaseMetadataIdentifier metadataIdentifier) {\n-        return toRootDir() + metadataIdentifier.getUniqueKey(KeyTypeEnum.PATH);\n-    }\n-\n-    @Override\n-    public void publishAppMetadata(SubscriberMetadataIdentifier identifier, MetadataInfo metadataInfo) {\n-        String path = getNodePath(identifier);\n-        if (StringUtils.isBlank(zkClient.getContent(path))) {\n-            zkClient.create(path, gson.toJson(metadataInfo), false);\n-        }\n-    }\n-\n-    @Override\n-    public void registerServiceAppMapping(String serviceKey, String application, URL url) {\n-        String path = toRootDir() + serviceKey + PATH_SEPARATOR + application;\n-        if (StringUtils.isBlank(zkClient.getContent(path))) {\n-            Map<String, String> value = new HashMap<>();\n-            value.put(\"timestamp\", String.valueOf(System.currentTimeMillis()));\n-            zkClient.create(path, gson.toJson(value), false);\n-        }\n-    }\n-\n-    @Override\n-    public MetadataInfo getAppMetadata(SubscriberMetadataIdentifier identifier, Map<String, String> instanceMetadata) {\n-        String content = zkClient.getContent(getNodePath(identifier));\n-        return gson.fromJson(content, MetadataInfo.class);\n-    }\n-\n-    @Override\n-    public Set<String> getServiceAppMapping(String serviceKey, MappingListener listener, URL url) {\n-        Set<String>  appNameSet = new HashSet<>();\n-        String path = toRootDir() + serviceKey;\n-        List<String> appNameList = zkClient.getChildren(path);\n-        if (!CollectionUtils.isEmpty(appNameList)) {\n-            appNameSet.addAll(appNameList);\n-        }\n-\n-        if (null == listenerMap.get(path)) {\n-            zkClient.create(path, false);\n-            addServiceMappingListener(path, serviceKey, listener);\n-        }\n-\n-        return appNameSet;\n-    }\n-\n-    private void addServiceMappingListener(String path, String serviceKey, MappingListener listener) {\n-        ChildListener zkListener = new ChildListener() {\n-            @Override\n-            public void childChanged(String path, List<String> children) {\n-                MappingChangedEvent event = new MappingChangedEvent();\n-                event.setServiceKey(serviceKey);\n-                event.setApps(null != children ? new HashSet<>(children) : null);\n-                listener.onEvent(event);\n-            }\n-        };\n-        zkClient.addChildListener(path, zkListener);\n-        listenerMap.put(path, zkListener);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.store.zookeeper;\r\n+\r\n+import com.google.gson.Gson;\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.CollectionUtils;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.metadata.MappingChangedEvent;\r\n+import org.apache.dubbo.metadata.MappingListener;\r\n+import org.apache.dubbo.metadata.MetadataInfo;\r\n+import org.apache.dubbo.metadata.report.identifier.BaseMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.KeyTypeEnum;\r\n+import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.support.AbstractMetadataReport;\r\n+import org.apache.dubbo.remoting.zookeeper.ChildListener;\r\n+import org.apache.dubbo.remoting.zookeeper.ZookeeperClient;\r\n+import org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.Collections;\r\n+import java.util.HashMap;\r\n+import java.util.HashSet;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\r\n+\r\n+/**\r\n+ * ZookeeperMetadataReport\r\n+ */\r\n+public class ZookeeperMetadataReport extends AbstractMetadataReport {\r\n+\r\n+    private final String root;\r\n+\r\n+    final ZookeeperClient zkClient;\r\n+\r\n+    private Gson gson = new Gson();\r\n+\r\n+    private Map<String, ChildListener> listenerMap = new ConcurrentHashMap<>();\r\n+\r\n+    public ZookeeperMetadataReport(URL url, ZookeeperTransporter zookeeperTransporter) {\r\n+        super(url);\r\n+        if (url.isAnyHost()) {\r\n+            throw new IllegalStateException(\"registry address == null\");\r\n+        }\r\n+        String group = url.getParameter(GROUP_KEY, DEFAULT_ROOT);\r\n+        if (!group.startsWith(PATH_SEPARATOR)) {\r\n+            group = PATH_SEPARATOR + group;\r\n+        }\r\n+        this.root = group;\r\n+        zkClient = zookeeperTransporter.connect(url);\r\n+    }\r\n+\r\n+    String toRootDir() {\r\n+        if (root.equals(PATH_SEPARATOR)) {\r\n+            return root;\r\n+        }\r\n+        return root + PATH_SEPARATOR;\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doStoreProviderMetadata(MetadataIdentifier providerMetadataIdentifier, String serviceDefinitions) {\r\n+        storeMetadata(providerMetadataIdentifier, serviceDefinitions);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doStoreConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, String value) {\r\n+        storeMetadata(consumerMetadataIdentifier, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doSaveMetadata(ServiceMetadataIdentifier metadataIdentifier, URL url) {\r\n+        zkClient.create(getNodePath(metadataIdentifier), URL.encode(url.toFullString()), false);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doRemoveMetadata(ServiceMetadataIdentifier metadataIdentifier) {\r\n+        zkClient.delete(getNodePath(metadataIdentifier));\r\n+    }\r\n+\r\n+    @Override\r\n+    protected List<String> doGetExportedURLs(ServiceMetadataIdentifier metadataIdentifier) {\r\n+        String content = zkClient.getContent(getNodePath(metadataIdentifier));\r\n+        if (StringUtils.isEmpty(content)) {\r\n+            return Collections.emptyList();\r\n+        }\r\n+        return new ArrayList<String>(Arrays.asList(URL.decode(content)));\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doSaveSubscriberData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, String urls) {\r\n+        zkClient.create(getNodePath(subscriberMetadataIdentifier), urls, false);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String doGetSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier) {\r\n+        return zkClient.getContent(getNodePath(subscriberMetadataIdentifier));\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getServiceDefinition(MetadataIdentifier metadataIdentifier) {\r\n+        return zkClient.getContent(getNodePath(metadataIdentifier));\r\n+    }\r\n+\r\n+    private void storeMetadata(MetadataIdentifier metadataIdentifier, String v) {\r\n+        zkClient.create(getNodePath(metadataIdentifier), v, false);\r\n+    }\r\n+\r\n+    String getNodePath(BaseMetadataIdentifier metadataIdentifier) {\r\n+        return toRootDir() + metadataIdentifier.getUniqueKey(KeyTypeEnum.PATH);\r\n+    }\r\n+\r\n+    @Override\r\n+    public void publishAppMetadata(SubscriberMetadataIdentifier identifier, MetadataInfo metadataInfo) {\r\n+        String path = getNodePath(identifier);\r\n+        if (StringUtils.isBlank(zkClient.getContent(path))) {\r\n+            zkClient.create(path, gson.toJson(metadataInfo), false);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void registerServiceAppMapping(String serviceKey, String application, URL url) {\r\n+        String path = toRootDir() + serviceKey + PATH_SEPARATOR + application;\r\n+        if (StringUtils.isBlank(zkClient.getContent(path))) {\r\n+            Map<String, String> value = new HashMap<>();\r\n+            value.put(\"timestamp\", String.valueOf(System.currentTimeMillis()));\r\n+            zkClient.create(path, gson.toJson(value), false);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public MetadataInfo getAppMetadata(SubscriberMetadataIdentifier identifier, Map<String, String> instanceMetadata) {\r\n+        String content = zkClient.getContent(getNodePath(identifier));\r\n+        return gson.fromJson(content, MetadataInfo.class);\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<String> getServiceAppMapping(String serviceKey, MappingListener listener, URL url) {\r\n+        Set<String>  appNameSet = new HashSet<>();\r\n+        String path = toRootDir() + serviceKey;\r\n+        List<String> appNameList = zkClient.getChildren(path);\r\n+        if (!CollectionUtils.isEmpty(appNameList)) {\r\n+            appNameSet.addAll(appNameList);\r\n+        }\r\n+\r\n+        if (null == listenerMap.get(path)) {\r\n+            zkClient.create(path, false);\r\n+            addServiceMappingListener(path, serviceKey, listener);\r\n+        }\r\n+\r\n+        return appNameSet;\r\n+    }\r\n+\r\n+    private void addServiceMappingListener(String path, String serviceKey, MappingListener listener) {\r\n+        ChildListener zkListener = new ChildListener() {\r\n+            @Override\r\n+            public void childChanged(String path, List<String> children) {\r\n+                MappingChangedEvent event = new MappingChangedEvent();\r\n+                event.setServiceKey(serviceKey);\r\n+                event.setApps(null != children ? new HashSet<>(children) : null);\r\n+                listener.onEvent(event);\r\n+            }\r\n+        };\r\n+        zkClient.addChildListener(path, zkListener);\r\n+        listenerMap.put(path, zkListener);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportFactory.java", "source2": "org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReportFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,40 +1,40 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.store.zookeeper;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.metadata.report.MetadataReport;\n-import org.apache.dubbo.metadata.report.support.AbstractMetadataReportFactory;\n-import org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter;\n-\n-/**\n- * ZookeeperRegistryFactory.\n- */\n-public class ZookeeperMetadataReportFactory extends AbstractMetadataReportFactory {\n-\n-    private ZookeeperTransporter zookeeperTransporter;\n-\n-    public void setZookeeperTransporter(ZookeeperTransporter zookeeperTransporter) {\n-        this.zookeeperTransporter = zookeeperTransporter;\n-    }\n-\n-    @Override\n-    public MetadataReport createMetadataReport(URL url) {\n-        return new ZookeeperMetadataReport(url, zookeeperTransporter);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.store.zookeeper;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.metadata.report.MetadataReport;\r\n+import org.apache.dubbo.metadata.report.support.AbstractMetadataReportFactory;\r\n+import org.apache.dubbo.remoting.zookeeper.ZookeeperTransporter;\r\n+\r\n+/**\r\n+ * ZookeeperRegistryFactory.\r\n+ */\r\n+public class ZookeeperMetadataReportFactory extends AbstractMetadataReportFactory {\r\n+\r\n+    private ZookeeperTransporter zookeeperTransporter;\r\n+\r\n+    public void setZookeeperTransporter(ZookeeperTransporter zookeeperTransporter) {\r\n+        this.zookeeperTransporter = zookeeperTransporter;\r\n+    }\r\n+\r\n+    @Override\r\n+    public MetadataReport createMetadataReport(URL url) {\r\n+        return new ZookeeperMetadataReport(url, zookeeperTransporter);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java", "source2": "org/apache/dubbo/metadata/store/redis/RedisMetadataReport.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,210 +1,210 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.store.redis;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.metadata.report.identifier.BaseMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.KeyTypeEnum;\n-import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.support.AbstractMetadataReport;\n-import org.apache.dubbo.rpc.RpcException;\n-\n-import org.apache.commons.pool2.impl.GenericObjectPoolConfig;\n-import redis.clients.jedis.HostAndPort;\n-import redis.clients.jedis.Jedis;\n-import redis.clients.jedis.JedisCluster;\n-import redis.clients.jedis.JedisPool;\n-import redis.clients.jedis.JedisPoolConfig;\n-\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.Collections;\n-import java.util.HashSet;\n-import java.util.List;\n-import java.util.Set;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\n-import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\n-import static org.apache.dubbo.metadata.MetadataConstants.META_DATA_STORE_TAG;\n-\n-/**\n- * RedisMetadataReport\n- */\n-public class RedisMetadataReport extends AbstractMetadataReport {\n-\n-    private final static String REDIS_DATABASE_KEY = \"database\";\n-    /**\n-     * maximum number of retries\n-     */\n-    private final static int MAX_ATTEMPTS = 2;\n-    /**\n-     * the default slot of the redis database\n-     */\n-    private final static int DEFAULT_REDIS_DATABASE_SLOT = 0;\n-\n-    JedisPool pool;\n-    Set<HostAndPort> jedisClusterNodes;\n-    private int timeout;\n-    private String password;\n-\n-\n-    public RedisMetadataReport(URL url) {\n-        super(url);\n-        timeout = url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT);\n-        password = url.getPassword();\n-        if (url.getParameter(CLUSTER_KEY, false)) {\n-            jedisClusterNodes = new HashSet<HostAndPort>();\n-            List<URL> urls = url.getBackupUrls();\n-            for (URL tmpUrl : urls) {\n-                jedisClusterNodes.add(new HostAndPort(tmpUrl.getHost(), tmpUrl.getPort()));\n-            }\n-        } else {\n-            int database = url.getParameter(REDIS_DATABASE_KEY, DEFAULT_REDIS_DATABASE_SLOT);\n-            pool = new JedisPool(new JedisPoolConfig(), url.getHost(), url.getPort(), timeout, password, database);\n-        }\n-    }\n-\n-    @Override\n-    protected void doStoreProviderMetadata(MetadataIdentifier providerMetadataIdentifier, String serviceDefinitions) {\n-        this.storeMetadata(providerMetadataIdentifier, serviceDefinitions);\n-    }\n-\n-    @Override\n-    protected void doStoreConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, String value) {\n-        this.storeMetadata(consumerMetadataIdentifier, value);\n-    }\n-\n-    @Override\n-    protected void doSaveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier, URL url) {\n-        this.storeMetadata(serviceMetadataIdentifier, URL.encode(url.toFullString()));\n-    }\n-\n-    @Override\n-    protected void doRemoveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier) {\n-        this.deleteMetadata(serviceMetadataIdentifier);\n-    }\n-\n-    @Override\n-    protected List<String> doGetExportedURLs(ServiceMetadataIdentifier metadataIdentifier) {\n-        String content = getMetadata(metadataIdentifier);\n-        if (StringUtils.isEmpty(content)) {\n-            return Collections.emptyList();\n-        }\n-        return new ArrayList<String>(Arrays.asList(URL.decode(content)));\n-    }\n-\n-    @Override\n-    protected void doSaveSubscriberData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, String urlListStr) {\n-        this.storeMetadata(subscriberMetadataIdentifier, urlListStr);\n-    }\n-\n-    @Override\n-    protected String doGetSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier) {\n-        return this.getMetadata(subscriberMetadataIdentifier);\n-    }\n-\n-    @Override\n-    public String getServiceDefinition(MetadataIdentifier metadataIdentifier) {\n-        return this.getMetadata(metadataIdentifier);\n-    }\n-\n-    private void storeMetadata(BaseMetadataIdentifier metadataIdentifier, String v) {\n-        if (pool != null) {\n-            storeMetadataStandalone(metadataIdentifier, v);\n-        } else {\n-            storeMetadataInCluster(metadataIdentifier, v);\n-        }\n-    }\n-\n-    private void storeMetadataInCluster(BaseMetadataIdentifier metadataIdentifier, String v) {\n-        try (JedisCluster jedisCluster = new JedisCluster(jedisClusterNodes, timeout, timeout, MAX_ATTEMPTS, password,\n-                new GenericObjectPoolConfig())) {\n-            jedisCluster.set(metadataIdentifier.getIdentifierKey() + META_DATA_STORE_TAG, v);\n-        } catch (Throwable e) {\n-            logger.error(\"Failed to put \" + metadataIdentifier + \" to redis cluster \" + v + \", cause: \" + e.getMessage(), e);\n-            throw new RpcException(\"Failed to put \" + metadataIdentifier + \" to redis cluster \" + v + \", cause: \" + e.getMessage(), e);\n-        }\n-    }\n-\n-    private void storeMetadataStandalone(BaseMetadataIdentifier metadataIdentifier, String v) {\n-        try (Jedis jedis = pool.getResource()) {\n-            jedis.set(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), v);\n-        } catch (Throwable e) {\n-            logger.error(\"Failed to put \" + metadataIdentifier + \" to redis \" + v + \", cause: \" + e.getMessage(), e);\n-            throw new RpcException(\"Failed to put \" + metadataIdentifier + \" to redis \" + v + \", cause: \" + e.getMessage(), e);\n-        }\n-    }\n-\n-    private void deleteMetadata(BaseMetadataIdentifier metadataIdentifier) {\n-        if (pool != null) {\n-            deleteMetadataStandalone(metadataIdentifier);\n-        } else {\n-            deleteMetadataInCluster(metadataIdentifier);\n-        }\n-    }\n-\n-    private void deleteMetadataInCluster(BaseMetadataIdentifier metadataIdentifier) {\n-        try (JedisCluster jedisCluster = new JedisCluster(jedisClusterNodes, timeout, timeout, MAX_ATTEMPTS, password,\n-                new GenericObjectPoolConfig())) {\n-            jedisCluster.del(metadataIdentifier.getIdentifierKey() + META_DATA_STORE_TAG);\n-        } catch (Throwable e) {\n-            logger.error(\"Failed to delete \" + metadataIdentifier + \" from redis cluster , cause: \" + e.getMessage(), e);\n-            throw new RpcException(\"Failed to delete \" + metadataIdentifier + \" from redis cluster , cause: \" + e.getMessage(), e);\n-        }\n-    }\n-\n-    private void deleteMetadataStandalone(BaseMetadataIdentifier metadataIdentifier) {\n-        try (Jedis jedis = pool.getResource()) {\n-            jedis.del(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY));\n-        } catch (Throwable e) {\n-            logger.error(\"Failed to delete \" + metadataIdentifier + \" from redis , cause: \" + e.getMessage(), e);\n-            throw new RpcException(\"Failed to delete \" + metadataIdentifier + \" from redis , cause: \" + e.getMessage(), e);\n-        }\n-    }\n-\n-    private String getMetadata(BaseMetadataIdentifier metadataIdentifier) {\n-        if (pool != null) {\n-            return getMetadataStandalone(metadataIdentifier);\n-        } else {\n-            return getMetadataInCluster(metadataIdentifier);\n-        }\n-    }\n-\n-    private String getMetadataInCluster(BaseMetadataIdentifier metadataIdentifier) {\n-        try (JedisCluster jedisCluster = new JedisCluster(jedisClusterNodes, timeout, timeout, MAX_ATTEMPTS, password,\n-                new GenericObjectPoolConfig())) {\n-            return jedisCluster.get(metadataIdentifier.getIdentifierKey() + META_DATA_STORE_TAG);\n-        } catch (Throwable e) {\n-            logger.error(\"Failed to get \" + metadataIdentifier + \" from redis cluster , cause: \" + e.getMessage(), e);\n-            throw new RpcException(\"Failed to get \" + metadataIdentifier + \" from redis cluster , cause: \" + e.getMessage(), e);\n-        }\n-    }\n-\n-    private String getMetadataStandalone(BaseMetadataIdentifier metadataIdentifier) {\n-        try (Jedis jedis = pool.getResource()) {\n-            return jedis.get(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY));\n-        } catch (Throwable e) {\n-            logger.error(\"Failed to get \" + metadataIdentifier + \" from redis , cause: \" + e.getMessage(), e);\n-            throw new RpcException(\"Failed to get \" + metadataIdentifier + \" from redis , cause: \" + e.getMessage(), e);\n-        }\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.store.redis;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.metadata.report.identifier.BaseMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.KeyTypeEnum;\r\n+import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.support.AbstractMetadataReport;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+\r\n+import org.apache.commons.pool2.impl.GenericObjectPoolConfig;\r\n+import redis.clients.jedis.HostAndPort;\r\n+import redis.clients.jedis.Jedis;\r\n+import redis.clients.jedis.JedisCluster;\r\n+import redis.clients.jedis.JedisPool;\r\n+import redis.clients.jedis.JedisPoolConfig;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.Collections;\r\n+import java.util.HashSet;\r\n+import java.util.List;\r\n+import java.util.Set;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CLUSTER_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_TIMEOUT;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY;\r\n+import static org.apache.dubbo.metadata.MetadataConstants.META_DATA_STORE_TAG;\r\n+\r\n+/**\r\n+ * RedisMetadataReport\r\n+ */\r\n+public class RedisMetadataReport extends AbstractMetadataReport {\r\n+\r\n+    private final static String REDIS_DATABASE_KEY = \"database\";\r\n+    /**\r\n+     * maximum number of retries\r\n+     */\r\n+    private final static int MAX_ATTEMPTS = 2;\r\n+    /**\r\n+     * the default slot of the redis database\r\n+     */\r\n+    private final static int DEFAULT_REDIS_DATABASE_SLOT = 0;\r\n+\r\n+    JedisPool pool;\r\n+    Set<HostAndPort> jedisClusterNodes;\r\n+    private int timeout;\r\n+    private String password;\r\n+\r\n+\r\n+    public RedisMetadataReport(URL url) {\r\n+        super(url);\r\n+        timeout = url.getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT);\r\n+        password = url.getPassword();\r\n+        if (url.getParameter(CLUSTER_KEY, false)) {\r\n+            jedisClusterNodes = new HashSet<HostAndPort>();\r\n+            List<URL> urls = url.getBackupUrls();\r\n+            for (URL tmpUrl : urls) {\r\n+                jedisClusterNodes.add(new HostAndPort(tmpUrl.getHost(), tmpUrl.getPort()));\r\n+            }\r\n+        } else {\r\n+            int database = url.getParameter(REDIS_DATABASE_KEY, DEFAULT_REDIS_DATABASE_SLOT);\r\n+            pool = new JedisPool(new JedisPoolConfig(), url.getHost(), url.getPort(), timeout, password, database);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doStoreProviderMetadata(MetadataIdentifier providerMetadataIdentifier, String serviceDefinitions) {\r\n+        this.storeMetadata(providerMetadataIdentifier, serviceDefinitions);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doStoreConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, String value) {\r\n+        this.storeMetadata(consumerMetadataIdentifier, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doSaveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier, URL url) {\r\n+        this.storeMetadata(serviceMetadataIdentifier, URL.encode(url.toFullString()));\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doRemoveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier) {\r\n+        this.deleteMetadata(serviceMetadataIdentifier);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected List<String> doGetExportedURLs(ServiceMetadataIdentifier metadataIdentifier) {\r\n+        String content = getMetadata(metadataIdentifier);\r\n+        if (StringUtils.isEmpty(content)) {\r\n+            return Collections.emptyList();\r\n+        }\r\n+        return new ArrayList<String>(Arrays.asList(URL.decode(content)));\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doSaveSubscriberData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, String urlListStr) {\r\n+        this.storeMetadata(subscriberMetadataIdentifier, urlListStr);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String doGetSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier) {\r\n+        return this.getMetadata(subscriberMetadataIdentifier);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getServiceDefinition(MetadataIdentifier metadataIdentifier) {\r\n+        return this.getMetadata(metadataIdentifier);\r\n+    }\r\n+\r\n+    private void storeMetadata(BaseMetadataIdentifier metadataIdentifier, String v) {\r\n+        if (pool != null) {\r\n+            storeMetadataStandalone(metadataIdentifier, v);\r\n+        } else {\r\n+            storeMetadataInCluster(metadataIdentifier, v);\r\n+        }\r\n+    }\r\n+\r\n+    private void storeMetadataInCluster(BaseMetadataIdentifier metadataIdentifier, String v) {\r\n+        try (JedisCluster jedisCluster = new JedisCluster(jedisClusterNodes, timeout, timeout, MAX_ATTEMPTS, password,\r\n+                new GenericObjectPoolConfig())) {\r\n+            jedisCluster.set(metadataIdentifier.getIdentifierKey() + META_DATA_STORE_TAG, v);\r\n+        } catch (Throwable e) {\r\n+            logger.error(\"Failed to put \" + metadataIdentifier + \" to redis cluster \" + v + \", cause: \" + e.getMessage(), e);\r\n+            throw new RpcException(\"Failed to put \" + metadataIdentifier + \" to redis cluster \" + v + \", cause: \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    private void storeMetadataStandalone(BaseMetadataIdentifier metadataIdentifier, String v) {\r\n+        try (Jedis jedis = pool.getResource()) {\r\n+            jedis.set(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), v);\r\n+        } catch (Throwable e) {\r\n+            logger.error(\"Failed to put \" + metadataIdentifier + \" to redis \" + v + \", cause: \" + e.getMessage(), e);\r\n+            throw new RpcException(\"Failed to put \" + metadataIdentifier + \" to redis \" + v + \", cause: \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    private void deleteMetadata(BaseMetadataIdentifier metadataIdentifier) {\r\n+        if (pool != null) {\r\n+            deleteMetadataStandalone(metadataIdentifier);\r\n+        } else {\r\n+            deleteMetadataInCluster(metadataIdentifier);\r\n+        }\r\n+    }\r\n+\r\n+    private void deleteMetadataInCluster(BaseMetadataIdentifier metadataIdentifier) {\r\n+        try (JedisCluster jedisCluster = new JedisCluster(jedisClusterNodes, timeout, timeout, MAX_ATTEMPTS, password,\r\n+                new GenericObjectPoolConfig())) {\r\n+            jedisCluster.del(metadataIdentifier.getIdentifierKey() + META_DATA_STORE_TAG);\r\n+        } catch (Throwable e) {\r\n+            logger.error(\"Failed to delete \" + metadataIdentifier + \" from redis cluster , cause: \" + e.getMessage(), e);\r\n+            throw new RpcException(\"Failed to delete \" + metadataIdentifier + \" from redis cluster , cause: \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    private void deleteMetadataStandalone(BaseMetadataIdentifier metadataIdentifier) {\r\n+        try (Jedis jedis = pool.getResource()) {\r\n+            jedis.del(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY));\r\n+        } catch (Throwable e) {\r\n+            logger.error(\"Failed to delete \" + metadataIdentifier + \" from redis , cause: \" + e.getMessage(), e);\r\n+            throw new RpcException(\"Failed to delete \" + metadataIdentifier + \" from redis , cause: \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    private String getMetadata(BaseMetadataIdentifier metadataIdentifier) {\r\n+        if (pool != null) {\r\n+            return getMetadataStandalone(metadataIdentifier);\r\n+        } else {\r\n+            return getMetadataInCluster(metadataIdentifier);\r\n+        }\r\n+    }\r\n+\r\n+    private String getMetadataInCluster(BaseMetadataIdentifier metadataIdentifier) {\r\n+        try (JedisCluster jedisCluster = new JedisCluster(jedisClusterNodes, timeout, timeout, MAX_ATTEMPTS, password,\r\n+                new GenericObjectPoolConfig())) {\r\n+            return jedisCluster.get(metadataIdentifier.getIdentifierKey() + META_DATA_STORE_TAG);\r\n+        } catch (Throwable e) {\r\n+            logger.error(\"Failed to get \" + metadataIdentifier + \" from redis cluster , cause: \" + e.getMessage(), e);\r\n+            throw new RpcException(\"Failed to get \" + metadataIdentifier + \" from redis cluster , cause: \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+    private String getMetadataStandalone(BaseMetadataIdentifier metadataIdentifier) {\r\n+        try (Jedis jedis = pool.getResource()) {\r\n+            return jedis.get(metadataIdentifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY));\r\n+        } catch (Throwable e) {\r\n+            logger.error(\"Failed to get \" + metadataIdentifier + \" from redis , cause: \" + e.getMessage(), e);\r\n+            throw new RpcException(\"Failed to get \" + metadataIdentifier + \" from redis , cause: \" + e.getMessage(), e);\r\n+        }\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/store/redis/RedisMetadataReportFactory.java", "source2": "org/apache/dubbo/metadata/store/redis/RedisMetadataReportFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,34 +1,34 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.store.redis;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.metadata.report.MetadataReport;\n-import org.apache.dubbo.metadata.report.support.AbstractMetadataReportFactory;\n-\n-/**\n- * RedisMetadataReportFactory.\n- */\n-public class RedisMetadataReportFactory extends AbstractMetadataReportFactory {\n-\n-\n-    @Override\n-    public MetadataReport createMetadataReport(URL url) {\n-        return new RedisMetadataReport(url);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.store.redis;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.metadata.report.MetadataReport;\r\n+import org.apache.dubbo.metadata.report.support.AbstractMetadataReportFactory;\r\n+\r\n+/**\r\n+ * RedisMetadataReportFactory.\r\n+ */\r\n+public class RedisMetadataReportFactory extends AbstractMetadataReportFactory {\r\n+\r\n+\r\n+    @Override\r\n+    public MetadataReport createMetadataReport(URL url) {\r\n+        return new RedisMetadataReport(url);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/store/consul/ConsulMetadataReport.java", "source2": "org/apache/dubbo/metadata/store/consul/ConsulMetadataReport.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,132 +1,132 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.metadata.store.consul;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.metadata.report.identifier.BaseMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.KeyTypeEnum;\n-import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.support.AbstractMetadataReport;\n-import org.apache.dubbo.rpc.RpcException;\n-\n-import com.ecwid.consul.v1.ConsulClient;\n-import com.ecwid.consul.v1.Response;\n-import com.ecwid.consul.v1.kv.model.GetValue;\n-\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.Collections;\n-import java.util.List;\n-\n-/**\n- * metadata report impl for consul\n- */\n-public class ConsulMetadataReport extends AbstractMetadataReport {\n-    private static final int DEFAULT_PORT = 8500;\n-\n-    private ConsulClient client;\n-\n-    public ConsulMetadataReport(URL url) {\n-        super(url);\n-\n-        String host = url.getHost();\n-        int port = url.getPort() != 0 ? url.getPort() : DEFAULT_PORT;\n-        client = new ConsulClient(host, port);\n-    }\n-\n-    @Override\n-    protected void doStoreProviderMetadata(MetadataIdentifier providerMetadataIdentifier, String serviceDefinitions) {\n-        this.storeMetadata(providerMetadataIdentifier, serviceDefinitions);\n-    }\n-\n-    @Override\n-    protected void doStoreConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, String value) {\n-        this.storeMetadata(consumerMetadataIdentifier, value);\n-    }\n-\n-    @Override\n-    protected void doSaveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier, URL url) {\n-        this.storeMetadata(serviceMetadataIdentifier, URL.encode(url.toFullString()));\n-    }\n-\n-    @Override\n-    protected void doRemoveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier) {\n-        this.deleteMetadata(serviceMetadataIdentifier);\n-    }\n-\n-    @Override\n-    protected List<String> doGetExportedURLs(ServiceMetadataIdentifier metadataIdentifier) {\n-        //todo encode and decode\n-        String content = getMetadata(metadataIdentifier);\n-        if (StringUtils.isEmpty(content)) {\n-            return Collections.emptyList();\n-        }\n-        return new ArrayList<String>(Arrays.asList(URL.decode(content)));\n-    }\n-\n-    @Override\n-    protected void doSaveSubscriberData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, String urlListStr) {\n-        this.storeMetadata(subscriberMetadataIdentifier, urlListStr);\n-    }\n-\n-    @Override\n-    protected String doGetSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier) {\n-        return getMetadata(subscriberMetadataIdentifier);\n-    }\n-\n-    private void storeMetadata(BaseMetadataIdentifier identifier, String v) {\n-        try {\n-            client.setKVValue(identifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), v);\n-        } catch (Throwable t) {\n-            logger.error(\"Failed to put \" + identifier + \" to consul \" + v + \", cause: \" + t.getMessage(), t);\n-            throw new RpcException(\"Failed to put \" + identifier + \" to consul \" + v + \", cause: \" + t.getMessage(), t);\n-        }\n-    }\n-\n-    private void deleteMetadata(BaseMetadataIdentifier identifier) {\n-        try {\n-            client.deleteKVValue(identifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY));\n-        } catch (Throwable t) {\n-            logger.error(\"Failed to delete \" + identifier + \" from consul , cause: \" + t.getMessage(), t);\n-            throw new RpcException(\"Failed to delete \" + identifier + \" from consul , cause: \" + t.getMessage(), t);\n-        }\n-    }\n-\n-    private String getMetadata(BaseMetadataIdentifier identifier) {\n-        try {\n-            Response<GetValue> value = client.getKVValue(identifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY));\n-            //FIXME CHECK\n-            if (value != null && value.getValue() != null) {\n-                //todo check decode value and value diff\n-                return value.getValue().getValue();\n-            }\n-            return null;\n-        } catch (Throwable t) {\n-            logger.error(\"Failed to get \" + identifier + \" from consul , cause: \" + t.getMessage(), t);\n-            throw new RpcException(\"Failed to get \" + identifier + \" from consul , cause: \" + t.getMessage(), t);\n-        }\n-    }\n-\n-    @Override\n-    public String getServiceDefinition(MetadataIdentifier metadataIdentifier) {\n-        return getMetadata(metadataIdentifier);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.metadata.store.consul;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.metadata.report.identifier.BaseMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.KeyTypeEnum;\r\n+import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.support.AbstractMetadataReport;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+\r\n+import com.ecwid.consul.v1.ConsulClient;\r\n+import com.ecwid.consul.v1.Response;\r\n+import com.ecwid.consul.v1.kv.model.GetValue;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+\r\n+/**\r\n+ * metadata report impl for consul\r\n+ */\r\n+public class ConsulMetadataReport extends AbstractMetadataReport {\r\n+    private static final int DEFAULT_PORT = 8500;\r\n+\r\n+    private ConsulClient client;\r\n+\r\n+    public ConsulMetadataReport(URL url) {\r\n+        super(url);\r\n+\r\n+        String host = url.getHost();\r\n+        int port = url.getPort() != 0 ? url.getPort() : DEFAULT_PORT;\r\n+        client = new ConsulClient(host, port);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doStoreProviderMetadata(MetadataIdentifier providerMetadataIdentifier, String serviceDefinitions) {\r\n+        this.storeMetadata(providerMetadataIdentifier, serviceDefinitions);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doStoreConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, String value) {\r\n+        this.storeMetadata(consumerMetadataIdentifier, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doSaveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier, URL url) {\r\n+        this.storeMetadata(serviceMetadataIdentifier, URL.encode(url.toFullString()));\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doRemoveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier) {\r\n+        this.deleteMetadata(serviceMetadataIdentifier);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected List<String> doGetExportedURLs(ServiceMetadataIdentifier metadataIdentifier) {\r\n+        //todo encode and decode\r\n+        String content = getMetadata(metadataIdentifier);\r\n+        if (StringUtils.isEmpty(content)) {\r\n+            return Collections.emptyList();\r\n+        }\r\n+        return new ArrayList<String>(Arrays.asList(URL.decode(content)));\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doSaveSubscriberData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, String urlListStr) {\r\n+        this.storeMetadata(subscriberMetadataIdentifier, urlListStr);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String doGetSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier) {\r\n+        return getMetadata(subscriberMetadataIdentifier);\r\n+    }\r\n+\r\n+    private void storeMetadata(BaseMetadataIdentifier identifier, String v) {\r\n+        try {\r\n+            client.setKVValue(identifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), v);\r\n+        } catch (Throwable t) {\r\n+            logger.error(\"Failed to put \" + identifier + \" to consul \" + v + \", cause: \" + t.getMessage(), t);\r\n+            throw new RpcException(\"Failed to put \" + identifier + \" to consul \" + v + \", cause: \" + t.getMessage(), t);\r\n+        }\r\n+    }\r\n+\r\n+    private void deleteMetadata(BaseMetadataIdentifier identifier) {\r\n+        try {\r\n+            client.deleteKVValue(identifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY));\r\n+        } catch (Throwable t) {\r\n+            logger.error(\"Failed to delete \" + identifier + \" from consul , cause: \" + t.getMessage(), t);\r\n+            throw new RpcException(\"Failed to delete \" + identifier + \" from consul , cause: \" + t.getMessage(), t);\r\n+        }\r\n+    }\r\n+\r\n+    private String getMetadata(BaseMetadataIdentifier identifier) {\r\n+        try {\r\n+            Response<GetValue> value = client.getKVValue(identifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY));\r\n+            //FIXME CHECK\r\n+            if (value != null && value.getValue() != null) {\r\n+                //todo check decode value and value diff\r\n+                return value.getValue().getValue();\r\n+            }\r\n+            return null;\r\n+        } catch (Throwable t) {\r\n+            logger.error(\"Failed to get \" + identifier + \" from consul , cause: \" + t.getMessage(), t);\r\n+            throw new RpcException(\"Failed to get \" + identifier + \" from consul , cause: \" + t.getMessage(), t);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getServiceDefinition(MetadataIdentifier metadataIdentifier) {\r\n+        return getMetadata(metadataIdentifier);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/store/consul/ConsulMetadataReportFactory.java", "source2": "org/apache/dubbo/metadata/store/consul/ConsulMetadataReportFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,32 +1,32 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.metadata.store.consul;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.metadata.report.MetadataReport;\n-import org.apache.dubbo.metadata.report.support.AbstractMetadataReportFactory;\n-\n-/**\n- * metadata report factory impl for consul\n- */\n-public class ConsulMetadataReportFactory extends AbstractMetadataReportFactory {\n-    @Override\n-    protected MetadataReport createMetadataReport(URL url) {\n-        return new ConsulMetadataReport(url);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.metadata.store.consul;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.metadata.report.MetadataReport;\r\n+import org.apache.dubbo.metadata.report.support.AbstractMetadataReportFactory;\r\n+\r\n+/**\r\n+ * metadata report factory impl for consul\r\n+ */\r\n+public class ConsulMetadataReportFactory extends AbstractMetadataReportFactory {\r\n+    @Override\r\n+    protected MetadataReport createMetadataReport(URL url) {\r\n+        return new ConsulMetadataReport(url);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/store/etcd/EtcdMetadataReport.java", "source2": "org/apache/dubbo/metadata/store/etcd/EtcdMetadataReport.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,146 +1,146 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.store.etcd;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.metadata.report.identifier.BaseMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.KeyTypeEnum;\n-import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.support.AbstractMetadataReport;\n-import org.apache.dubbo.remoting.etcd.jetcd.JEtcdClient;\n-\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.Collections;\n-import java.util.List;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\n-\n-/**\n- * Report Metadata to Etcd\n- */\n-public class EtcdMetadataReport extends AbstractMetadataReport {\n-\n-    private final String root;\n-\n-    /**\n-     * The etcd client\n-     */\n-    private final JEtcdClient etcdClient;\n-\n-    public EtcdMetadataReport(URL url) {\n-        super(url);\n-        if (url.isAnyHost()) {\n-            throw new IllegalStateException(\"registry address == null\");\n-        }\n-        String group = url.getParameter(GROUP_KEY, DEFAULT_ROOT);\n-        if (!group.startsWith(PATH_SEPARATOR)) {\n-            group = PATH_SEPARATOR + group;\n-        }\n-        this.root = group;\n-        etcdClient = new JEtcdClient(url);\n-    }\n-\n-    @Override\n-    protected void doStoreProviderMetadata(MetadataIdentifier providerMetadataIdentifier, String serviceDefinitions) {\n-        storeMetadata(providerMetadataIdentifier, serviceDefinitions);\n-    }\n-\n-    @Override\n-    protected void doStoreConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, String value) {\n-        storeMetadata(consumerMetadataIdentifier, value);\n-    }\n-\n-    @Override\n-    protected void doSaveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier, URL url) {\n-        String key = getNodeKey(serviceMetadataIdentifier);\n-        if (!etcdClient.put(key, URL.encode(url.toFullString()))) {\n-            logger.error(\"Failed to put \" + serviceMetadataIdentifier + \" to etcd, value: \" + url);\n-        }\n-    }\n-\n-    @Override\n-    protected void doRemoveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier) {\n-        etcdClient.delete(getNodeKey(serviceMetadataIdentifier));\n-    }\n-\n-    @Override\n-    protected List<String> doGetExportedURLs(ServiceMetadataIdentifier metadataIdentifier) {\n-        String content = etcdClient.getKVValue(getNodeKey(metadataIdentifier));\n-        if (StringUtils.isEmpty(content)) {\n-            return Collections.emptyList();\n-        }\n-        return new ArrayList<String>(Arrays.asList(URL.decode(content)));\n-    }\n-\n-    @Override\n-    protected void doSaveSubscriberData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, String urlListStr) {\n-        String key = getNodeKey(subscriberMetadataIdentifier);\n-        if (!etcdClient.put(key, urlListStr)) {\n-            logger.error(\"Failed to put \" + subscriberMetadataIdentifier + \" to etcd, value: \" + urlListStr);\n-        }\n-    }\n-\n-    @Override\n-    protected String doGetSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier) {\n-        return etcdClient.getKVValue(getNodeKey(subscriberMetadataIdentifier));\n-    }\n-\n-    @Override\n-    public String getServiceDefinition(MetadataIdentifier metadataIdentifier) {\n-        return etcdClient.getKVValue(getNodeKey(metadataIdentifier));\n-    }\n-\n-    private void storeMetadata(MetadataIdentifier identifier, String v) {\n-        String key = getNodeKey(identifier);\n-        if (!etcdClient.put(key, v)) {\n-            logger.error(\"Failed to put \" + identifier + \" to etcd, value: \" + v);\n-        }\n-    }\n-\n-    String getNodeKey(BaseMetadataIdentifier identifier) {\n-        return toRootDir() + identifier.getUniqueKey(KeyTypeEnum.PATH);\n-    }\n-\n-    String toRootDir() {\n-        if (root.equals(PATH_SEPARATOR)) {\n-            return root;\n-        }\n-        return root + PATH_SEPARATOR;\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.store.etcd;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.metadata.report.identifier.BaseMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.KeyTypeEnum;\r\n+import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.support.AbstractMetadataReport;\r\n+import org.apache.dubbo.remoting.etcd.jetcd.JEtcdClient;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\r\n+\r\n+/**\r\n+ * Report Metadata to Etcd\r\n+ */\r\n+public class EtcdMetadataReport extends AbstractMetadataReport {\r\n+\r\n+    private final String root;\r\n+\r\n+    /**\r\n+     * The etcd client\r\n+     */\r\n+    private final JEtcdClient etcdClient;\r\n+\r\n+    public EtcdMetadataReport(URL url) {\r\n+        super(url);\r\n+        if (url.isAnyHost()) {\r\n+            throw new IllegalStateException(\"registry address == null\");\r\n+        }\r\n+        String group = url.getParameter(GROUP_KEY, DEFAULT_ROOT);\r\n+        if (!group.startsWith(PATH_SEPARATOR)) {\r\n+            group = PATH_SEPARATOR + group;\r\n+        }\r\n+        this.root = group;\r\n+        etcdClient = new JEtcdClient(url);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doStoreProviderMetadata(MetadataIdentifier providerMetadataIdentifier, String serviceDefinitions) {\r\n+        storeMetadata(providerMetadataIdentifier, serviceDefinitions);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doStoreConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, String value) {\r\n+        storeMetadata(consumerMetadataIdentifier, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doSaveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier, URL url) {\r\n+        String key = getNodeKey(serviceMetadataIdentifier);\r\n+        if (!etcdClient.put(key, URL.encode(url.toFullString()))) {\r\n+            logger.error(\"Failed to put \" + serviceMetadataIdentifier + \" to etcd, value: \" + url);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doRemoveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier) {\r\n+        etcdClient.delete(getNodeKey(serviceMetadataIdentifier));\r\n+    }\r\n+\r\n+    @Override\r\n+    protected List<String> doGetExportedURLs(ServiceMetadataIdentifier metadataIdentifier) {\r\n+        String content = etcdClient.getKVValue(getNodeKey(metadataIdentifier));\r\n+        if (StringUtils.isEmpty(content)) {\r\n+            return Collections.emptyList();\r\n+        }\r\n+        return new ArrayList<String>(Arrays.asList(URL.decode(content)));\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doSaveSubscriberData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, String urlListStr) {\r\n+        String key = getNodeKey(subscriberMetadataIdentifier);\r\n+        if (!etcdClient.put(key, urlListStr)) {\r\n+            logger.error(\"Failed to put \" + subscriberMetadataIdentifier + \" to etcd, value: \" + urlListStr);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String doGetSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier) {\r\n+        return etcdClient.getKVValue(getNodeKey(subscriberMetadataIdentifier));\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getServiceDefinition(MetadataIdentifier metadataIdentifier) {\r\n+        return etcdClient.getKVValue(getNodeKey(metadataIdentifier));\r\n+    }\r\n+\r\n+    private void storeMetadata(MetadataIdentifier identifier, String v) {\r\n+        String key = getNodeKey(identifier);\r\n+        if (!etcdClient.put(key, v)) {\r\n+            logger.error(\"Failed to put \" + identifier + \" to etcd, value: \" + v);\r\n+        }\r\n+    }\r\n+\r\n+    String getNodeKey(BaseMetadataIdentifier identifier) {\r\n+        return toRootDir() + identifier.getUniqueKey(KeyTypeEnum.PATH);\r\n+    }\r\n+\r\n+    String toRootDir() {\r\n+        if (root.equals(PATH_SEPARATOR)) {\r\n+            return root;\r\n+        }\r\n+        return root + PATH_SEPARATOR;\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/store/etcd/EtcdMetadataReportFactory.java", "source2": "org/apache/dubbo/metadata/store/etcd/EtcdMetadataReportFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,50 +1,50 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.store.etcd;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.metadata.report.MetadataReport;\n-import org.apache.dubbo.metadata.report.support.AbstractMetadataReportFactory;\n-\n-/**\n- * MetadataReportFactory to create an Etcd based {@link MetadataReport}.\n- */\n-public class EtcdMetadataReportFactory extends AbstractMetadataReportFactory {\n-\n-    @Override\n-    public MetadataReport createMetadataReport(URL url) {\n-        return new EtcdMetadataReport(url);\n-    }\n-\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.store.etcd;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.metadata.report.MetadataReport;\r\n+import org.apache.dubbo.metadata.report.support.AbstractMetadataReportFactory;\r\n+\r\n+/**\r\n+ * MetadataReportFactory to create an Etcd based {@link MetadataReport}.\r\n+ */\r\n+public class EtcdMetadataReportFactory extends AbstractMetadataReportFactory {\r\n+\r\n+    @Override\r\n+    public MetadataReport createMetadataReport(URL url) {\r\n+        return new EtcdMetadataReport(url);\r\n+    }\r\n+\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/store/nacos/NacosConfigServiceWrapper.java", "source2": "org/apache/dubbo/metadata/store/nacos/NacosConfigServiceWrapper.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,55 +1,55 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.store.nacos;\n-\n-import com.alibaba.nacos.api.config.ConfigService;\n-import com.alibaba.nacos.api.exception.NacosException;\n-\n-public class NacosConfigServiceWrapper {\n-\n-    private static final String INNERCLASS_SYMBOL = \"$\";\n-\n-    private static final String INNERCLASS_COMPATIBLE_SYMBOL = \"___\";\n-\n-    private ConfigService configService;\n-\n-    public NacosConfigServiceWrapper(ConfigService configService) {\n-        this.configService = configService;\n-    }\n-\n-    public boolean publishConfig(String dataId, String group, String content) throws NacosException {\n-        return configService.publishConfig(handleInnerSymbol(dataId), handleInnerSymbol(group), content);\n-    }\n-\n-    public boolean removeConfig(String dataId, String group) throws NacosException {\n-        return configService.removeConfig(handleInnerSymbol(dataId), handleInnerSymbol(group));\n-    }\n-\n-    public String getConfig(String dataId, String group, long timeout) throws NacosException {\n-        return configService.getConfig(handleInnerSymbol(dataId), handleInnerSymbol(group), timeout);\n-    }\n-\n-    /**\n-     * see {@link com.alibaba.nacos.client.config.utils.ParamUtils#isValid(java.lang.String)}\n-     */\n-    private String handleInnerSymbol(String dataId) {\n-        if (dataId == null) {\n-            return null;\n-        }\n-        return dataId.replace(INNERCLASS_SYMBOL, INNERCLASS_COMPATIBLE_SYMBOL);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.store.nacos;\r\n+\r\n+import com.alibaba.nacos.api.config.ConfigService;\r\n+import com.alibaba.nacos.api.exception.NacosException;\r\n+\r\n+public class NacosConfigServiceWrapper {\r\n+\r\n+    private static final String INNERCLASS_SYMBOL = \"$\";\r\n+\r\n+    private static final String INNERCLASS_COMPATIBLE_SYMBOL = \"___\";\r\n+\r\n+    private ConfigService configService;\r\n+\r\n+    public NacosConfigServiceWrapper(ConfigService configService) {\r\n+        this.configService = configService;\r\n+    }\r\n+\r\n+    public boolean publishConfig(String dataId, String group, String content) throws NacosException {\r\n+        return configService.publishConfig(handleInnerSymbol(dataId), handleInnerSymbol(group), content);\r\n+    }\r\n+\r\n+    public boolean removeConfig(String dataId, String group) throws NacosException {\r\n+        return configService.removeConfig(handleInnerSymbol(dataId), handleInnerSymbol(group));\r\n+    }\r\n+\r\n+    public String getConfig(String dataId, String group, long timeout) throws NacosException {\r\n+        return configService.getConfig(handleInnerSymbol(dataId), handleInnerSymbol(group), timeout);\r\n+    }\r\n+\r\n+    /**\r\n+     * see {@link com.alibaba.nacos.client.config.utils.ParamUtils#isValid(java.lang.String)}\r\n+     */\r\n+    private String handleInnerSymbol(String dataId) {\r\n+        if (dataId == null) {\r\n+            return null;\r\n+        }\r\n+        return dataId.replace(INNERCLASS_SYMBOL, INNERCLASS_COMPATIBLE_SYMBOL);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/store/nacos/NacosMetadataReport.java", "source2": "org/apache/dubbo/metadata/store/nacos/NacosMetadataReport.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,229 +1,229 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.metadata.store.nacos;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.metadata.report.identifier.BaseMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.KeyTypeEnum;\n-import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.support.AbstractMetadataReport;\n-import org.apache.dubbo.rpc.RpcException;\n-\n-import com.alibaba.nacos.api.NacosFactory;\n-import com.alibaba.nacos.api.exception.NacosException;\n-\n-import java.util.ArrayList;\n-import java.util.Arrays;\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.Properties;\n-\n-import static com.alibaba.nacos.api.PropertyKeyConst.ACCESS_KEY;\n-import static com.alibaba.nacos.api.PropertyKeyConst.CLUSTER_NAME;\n-import static com.alibaba.nacos.api.PropertyKeyConst.CONFIG_LONG_POLL_TIMEOUT;\n-import static com.alibaba.nacos.api.PropertyKeyConst.CONFIG_RETRY_TIME;\n-import static com.alibaba.nacos.api.PropertyKeyConst.CONTEXT_PATH;\n-import static com.alibaba.nacos.api.PropertyKeyConst.ENABLE_REMOTE_SYNC_CONFIG;\n-import static com.alibaba.nacos.api.PropertyKeyConst.ENCODE;\n-import static com.alibaba.nacos.api.PropertyKeyConst.ENDPOINT;\n-import static com.alibaba.nacos.api.PropertyKeyConst.ENDPOINT_PORT;\n-import static com.alibaba.nacos.api.PropertyKeyConst.IS_USE_CLOUD_NAMESPACE_PARSING;\n-import static com.alibaba.nacos.api.PropertyKeyConst.IS_USE_ENDPOINT_PARSING_RULE;\n-import static com.alibaba.nacos.api.PropertyKeyConst.MAX_RETRY;\n-import static com.alibaba.nacos.api.PropertyKeyConst.NAMESPACE;\n-import static com.alibaba.nacos.api.PropertyKeyConst.NAMING_CLIENT_BEAT_THREAD_COUNT;\n-import static com.alibaba.nacos.api.PropertyKeyConst.NAMING_LOAD_CACHE_AT_START;\n-import static com.alibaba.nacos.api.PropertyKeyConst.NAMING_POLLING_THREAD_COUNT;\n-import static com.alibaba.nacos.api.PropertyKeyConst.RAM_ROLE_NAME;\n-import static com.alibaba.nacos.api.PropertyKeyConst.SECRET_KEY;\n-import static com.alibaba.nacos.api.PropertyKeyConst.SERVER_ADDR;\n-import static com.alibaba.nacos.client.naming.utils.UtilAndComs.NACOS_NAMING_LOG_NAME;\n-import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\n-import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY;\n-\n-/**\n- * metadata report impl for nacos\n- */\n-public class NacosMetadataReport extends AbstractMetadataReport {\n-\n-    private NacosConfigServiceWrapper configService;\n-\n-    /**\n-     * The group used to store metadata in Nacos\n-     */\n-    private String group;\n-\n-\n-    public NacosMetadataReport(URL url) {\n-        super(url);\n-        this.configService = buildConfigService(url);\n-        group = url.getParameter(GROUP_KEY, DEFAULT_ROOT);\n-    }\n-\n-    public NacosConfigServiceWrapper buildConfigService(URL url) {\n-        Properties nacosProperties = buildNacosProperties(url);\n-        try {\n-            configService = new NacosConfigServiceWrapper(NacosFactory.createConfigService(nacosProperties));\n-        } catch (NacosException e) {\n-            if (logger.isErrorEnabled()) {\n-                logger.error(e.getErrMsg(), e);\n-            }\n-            throw new IllegalStateException(e);\n-        }\n-        return configService;\n-    }\n-\n-    private Properties buildNacosProperties(URL url) {\n-        Properties properties = new Properties();\n-        setServerAddr(url, properties);\n-        setProperties(url, properties);\n-        return properties;\n-    }\n-\n-    private void setServerAddr(URL url, Properties properties) {\n-        StringBuilder serverAddrBuilder =\n-                new StringBuilder(url.getHost()) // Host\n-                        .append(\":\")\n-                        .append(url.getPort()); // Port\n-        // Append backup parameter as other servers\n-        String backup = url.getParameter(BACKUP_KEY);\n-        if (backup != null) {\n-            serverAddrBuilder.append(\",\").append(backup);\n-        }\n-        String serverAddr = serverAddrBuilder.toString();\n-        properties.put(SERVER_ADDR, serverAddr);\n-    }\n-\n-    private static void setProperties(URL url, Properties properties) {\n-        putPropertyIfAbsent(url, properties, NACOS_NAMING_LOG_NAME);\n-        putPropertyIfAbsent(url, properties, IS_USE_CLOUD_NAMESPACE_PARSING);\n-        putPropertyIfAbsent(url, properties, IS_USE_ENDPOINT_PARSING_RULE);\n-        putPropertyIfAbsent(url, properties, ENDPOINT);\n-        putPropertyIfAbsent(url, properties, ENDPOINT_PORT);\n-        putPropertyIfAbsent(url, properties, NAMESPACE);\n-        putPropertyIfAbsent(url, properties, ACCESS_KEY);\n-        putPropertyIfAbsent(url, properties, SECRET_KEY);\n-        putPropertyIfAbsent(url, properties, RAM_ROLE_NAME);\n-        putPropertyIfAbsent(url, properties, CONTEXT_PATH);\n-        putPropertyIfAbsent(url, properties, CLUSTER_NAME);\n-        putPropertyIfAbsent(url, properties, ENCODE);\n-        putPropertyIfAbsent(url, properties, CONFIG_LONG_POLL_TIMEOUT);\n-        putPropertyIfAbsent(url, properties, CONFIG_RETRY_TIME);\n-        putPropertyIfAbsent(url, properties, MAX_RETRY);\n-        putPropertyIfAbsent(url, properties, ENABLE_REMOTE_SYNC_CONFIG);\n-        putPropertyIfAbsent(url, properties, NAMING_LOAD_CACHE_AT_START, \"true\");\n-        putPropertyIfAbsent(url, properties, NAMING_CLIENT_BEAT_THREAD_COUNT);\n-        putPropertyIfAbsent(url, properties, NAMING_POLLING_THREAD_COUNT);\n-    }\n-\n-    private static void putPropertyIfAbsent(URL url, Properties properties, String propertyName) {\n-        String propertyValue = url.getParameter(propertyName);\n-        if (StringUtils.isNotEmpty(propertyValue)) {\n-            properties.setProperty(propertyName, propertyValue);\n-        }\n-    }\n-\n-    private static void putPropertyIfAbsent(URL url, Properties properties, String propertyName, String defaultValue) {\n-        String propertyValue = url.getParameter(propertyName);\n-        if (StringUtils.isNotEmpty(propertyValue)) {\n-            properties.setProperty(propertyName, propertyValue);\n-        } else {\n-            properties.setProperty(propertyName, defaultValue);\n-        }\n-    }\n-\n-    @Override\n-    protected void doStoreProviderMetadata(MetadataIdentifier providerMetadataIdentifier, String serviceDefinitions) {\n-        this.storeMetadata(providerMetadataIdentifier, serviceDefinitions);\n-    }\n-\n-    @Override\n-    protected void doStoreConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, String value) {\n-        this.storeMetadata(consumerMetadataIdentifier, value);\n-    }\n-\n-    @Override\n-    protected void doSaveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier, URL url) {\n-        storeMetadata(serviceMetadataIdentifier, URL.encode(url.toFullString()));\n-    }\n-\n-    @Override\n-    protected void doRemoveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier) {\n-        deleteMetadata(serviceMetadataIdentifier);\n-    }\n-\n-    @Override\n-    protected List<String> doGetExportedURLs(ServiceMetadataIdentifier metadataIdentifier) {\n-        String content = getConfig(metadataIdentifier);\n-        if (StringUtils.isEmpty(content)) {\n-            return Collections.emptyList();\n-        }\n-        return new ArrayList<String>(Arrays.asList(URL.decode(content)));\n-    }\n-\n-    @Override\n-    protected void doSaveSubscriberData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, String urlListStr) {\n-        storeMetadata(subscriberMetadataIdentifier, urlListStr);\n-    }\n-\n-    @Override\n-    protected String doGetSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier) {\n-        return getConfig(subscriberMetadataIdentifier);\n-    }\n-\n-    @Override\n-    public String getServiceDefinition(MetadataIdentifier metadataIdentifier) {\n-        return getConfig(metadataIdentifier);\n-    }\n-\n-    private void storeMetadata(BaseMetadataIdentifier identifier, String value) {\n-        try {\n-            boolean publishResult = configService.publishConfig(identifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), group, value);\n-            if (!publishResult) {\n-                throw new RuntimeException(\"publish nacos metadata failed\");\n-            }\n-        } catch (Throwable t) {\n-            logger.error(\"Failed to put \" + identifier + \" to nacos \" + value + \", cause: \" + t.getMessage(), t);\n-            throw new RpcException(\"Failed to put \" + identifier + \" to nacos \" + value + \", cause: \" + t.getMessage(), t);\n-        }\n-    }\n-\n-    private void deleteMetadata(BaseMetadataIdentifier identifier) {\n-        try {\n-            boolean publishResult = configService.removeConfig(identifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), group);\n-            if (!publishResult) {\n-                throw new RuntimeException(\"remove nacos metadata failed\");\n-            }\n-        } catch (Throwable t) {\n-            logger.error(\"Failed to remove \" + identifier + \" from nacos , cause: \" + t.getMessage(), t);\n-            throw new RpcException(\"Failed to remove \" + identifier + \" from nacos , cause: \" + t.getMessage(), t);\n-        }\n-    }\n-\n-    private String getConfig(BaseMetadataIdentifier identifier) {\n-        try {\n-            return configService.getConfig(identifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), group, 3000L);\n-        } catch (Throwable t) {\n-            logger.error(\"Failed to get \" + identifier + \" from nacos , cause: \" + t.getMessage(), t);\n-            throw new RpcException(\"Failed to get \" + identifier + \" from nacos , cause: \" + t.getMessage(), t);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.metadata.store.nacos;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.metadata.report.identifier.BaseMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.KeyTypeEnum;\r\n+import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.support.AbstractMetadataReport;\r\n+import org.apache.dubbo.rpc.RpcException;\r\n+\r\n+import com.alibaba.nacos.api.NacosFactory;\r\n+import com.alibaba.nacos.api.exception.NacosException;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Arrays;\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.Properties;\r\n+\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.ACCESS_KEY;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.CLUSTER_NAME;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.CONFIG_LONG_POLL_TIMEOUT;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.CONFIG_RETRY_TIME;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.CONTEXT_PATH;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.ENABLE_REMOTE_SYNC_CONFIG;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.ENCODE;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.ENDPOINT;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.ENDPOINT_PORT;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.IS_USE_CLOUD_NAMESPACE_PARSING;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.IS_USE_ENDPOINT_PARSING_RULE;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.MAX_RETRY;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.NAMESPACE;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.NAMING_CLIENT_BEAT_THREAD_COUNT;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.NAMING_LOAD_CACHE_AT_START;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.NAMING_POLLING_THREAD_COUNT;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.RAM_ROLE_NAME;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.SECRET_KEY;\r\n+import static com.alibaba.nacos.api.PropertyKeyConst.SERVER_ADDR;\r\n+import static com.alibaba.nacos.client.naming.utils.UtilAndComs.NACOS_NAMING_LOG_NAME;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;\r\n+import static org.apache.dubbo.common.constants.RemotingConstants.BACKUP_KEY;\r\n+\r\n+/**\r\n+ * metadata report impl for nacos\r\n+ */\r\n+public class NacosMetadataReport extends AbstractMetadataReport {\r\n+\r\n+    private NacosConfigServiceWrapper configService;\r\n+\r\n+    /**\r\n+     * The group used to store metadata in Nacos\r\n+     */\r\n+    private String group;\r\n+\r\n+\r\n+    public NacosMetadataReport(URL url) {\r\n+        super(url);\r\n+        this.configService = buildConfigService(url);\r\n+        group = url.getParameter(GROUP_KEY, DEFAULT_ROOT);\r\n+    }\r\n+\r\n+    public NacosConfigServiceWrapper buildConfigService(URL url) {\r\n+        Properties nacosProperties = buildNacosProperties(url);\r\n+        try {\r\n+            configService = new NacosConfigServiceWrapper(NacosFactory.createConfigService(nacosProperties));\r\n+        } catch (NacosException e) {\r\n+            if (logger.isErrorEnabled()) {\r\n+                logger.error(e.getErrMsg(), e);\r\n+            }\r\n+            throw new IllegalStateException(e);\r\n+        }\r\n+        return configService;\r\n+    }\r\n+\r\n+    private Properties buildNacosProperties(URL url) {\r\n+        Properties properties = new Properties();\r\n+        setServerAddr(url, properties);\r\n+        setProperties(url, properties);\r\n+        return properties;\r\n+    }\r\n+\r\n+    private void setServerAddr(URL url, Properties properties) {\r\n+        StringBuilder serverAddrBuilder =\r\n+                new StringBuilder(url.getHost()) // Host\r\n+                        .append(\":\")\r\n+                        .append(url.getPort()); // Port\r\n+        // Append backup parameter as other servers\r\n+        String backup = url.getParameter(BACKUP_KEY);\r\n+        if (backup != null) {\r\n+            serverAddrBuilder.append(\",\").append(backup);\r\n+        }\r\n+        String serverAddr = serverAddrBuilder.toString();\r\n+        properties.put(SERVER_ADDR, serverAddr);\r\n+    }\r\n+\r\n+    private static void setProperties(URL url, Properties properties) {\r\n+        putPropertyIfAbsent(url, properties, NACOS_NAMING_LOG_NAME);\r\n+        putPropertyIfAbsent(url, properties, IS_USE_CLOUD_NAMESPACE_PARSING);\r\n+        putPropertyIfAbsent(url, properties, IS_USE_ENDPOINT_PARSING_RULE);\r\n+        putPropertyIfAbsent(url, properties, ENDPOINT);\r\n+        putPropertyIfAbsent(url, properties, ENDPOINT_PORT);\r\n+        putPropertyIfAbsent(url, properties, NAMESPACE);\r\n+        putPropertyIfAbsent(url, properties, ACCESS_KEY);\r\n+        putPropertyIfAbsent(url, properties, SECRET_KEY);\r\n+        putPropertyIfAbsent(url, properties, RAM_ROLE_NAME);\r\n+        putPropertyIfAbsent(url, properties, CONTEXT_PATH);\r\n+        putPropertyIfAbsent(url, properties, CLUSTER_NAME);\r\n+        putPropertyIfAbsent(url, properties, ENCODE);\r\n+        putPropertyIfAbsent(url, properties, CONFIG_LONG_POLL_TIMEOUT);\r\n+        putPropertyIfAbsent(url, properties, CONFIG_RETRY_TIME);\r\n+        putPropertyIfAbsent(url, properties, MAX_RETRY);\r\n+        putPropertyIfAbsent(url, properties, ENABLE_REMOTE_SYNC_CONFIG);\r\n+        putPropertyIfAbsent(url, properties, NAMING_LOAD_CACHE_AT_START, \"true\");\r\n+        putPropertyIfAbsent(url, properties, NAMING_CLIENT_BEAT_THREAD_COUNT);\r\n+        putPropertyIfAbsent(url, properties, NAMING_POLLING_THREAD_COUNT);\r\n+    }\r\n+\r\n+    private static void putPropertyIfAbsent(URL url, Properties properties, String propertyName) {\r\n+        String propertyValue = url.getParameter(propertyName);\r\n+        if (StringUtils.isNotEmpty(propertyValue)) {\r\n+            properties.setProperty(propertyName, propertyValue);\r\n+        }\r\n+    }\r\n+\r\n+    private static void putPropertyIfAbsent(URL url, Properties properties, String propertyName, String defaultValue) {\r\n+        String propertyValue = url.getParameter(propertyName);\r\n+        if (StringUtils.isNotEmpty(propertyValue)) {\r\n+            properties.setProperty(propertyName, propertyValue);\r\n+        } else {\r\n+            properties.setProperty(propertyName, defaultValue);\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doStoreProviderMetadata(MetadataIdentifier providerMetadataIdentifier, String serviceDefinitions) {\r\n+        this.storeMetadata(providerMetadataIdentifier, serviceDefinitions);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doStoreConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, String value) {\r\n+        this.storeMetadata(consumerMetadataIdentifier, value);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doSaveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier, URL url) {\r\n+        storeMetadata(serviceMetadataIdentifier, URL.encode(url.toFullString()));\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doRemoveMetadata(ServiceMetadataIdentifier serviceMetadataIdentifier) {\r\n+        deleteMetadata(serviceMetadataIdentifier);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected List<String> doGetExportedURLs(ServiceMetadataIdentifier metadataIdentifier) {\r\n+        String content = getConfig(metadataIdentifier);\r\n+        if (StringUtils.isEmpty(content)) {\r\n+            return Collections.emptyList();\r\n+        }\r\n+        return new ArrayList<String>(Arrays.asList(URL.decode(content)));\r\n+    }\r\n+\r\n+    @Override\r\n+    protected void doSaveSubscriberData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, String urlListStr) {\r\n+        storeMetadata(subscriberMetadataIdentifier, urlListStr);\r\n+    }\r\n+\r\n+    @Override\r\n+    protected String doGetSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier) {\r\n+        return getConfig(subscriberMetadataIdentifier);\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getServiceDefinition(MetadataIdentifier metadataIdentifier) {\r\n+        return getConfig(metadataIdentifier);\r\n+    }\r\n+\r\n+    private void storeMetadata(BaseMetadataIdentifier identifier, String value) {\r\n+        try {\r\n+            boolean publishResult = configService.publishConfig(identifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), group, value);\r\n+            if (!publishResult) {\r\n+                throw new RuntimeException(\"publish nacos metadata failed\");\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            logger.error(\"Failed to put \" + identifier + \" to nacos \" + value + \", cause: \" + t.getMessage(), t);\r\n+            throw new RpcException(\"Failed to put \" + identifier + \" to nacos \" + value + \", cause: \" + t.getMessage(), t);\r\n+        }\r\n+    }\r\n+\r\n+    private void deleteMetadata(BaseMetadataIdentifier identifier) {\r\n+        try {\r\n+            boolean publishResult = configService.removeConfig(identifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), group);\r\n+            if (!publishResult) {\r\n+                throw new RuntimeException(\"remove nacos metadata failed\");\r\n+            }\r\n+        } catch (Throwable t) {\r\n+            logger.error(\"Failed to remove \" + identifier + \" from nacos , cause: \" + t.getMessage(), t);\r\n+            throw new RpcException(\"Failed to remove \" + identifier + \" from nacos , cause: \" + t.getMessage(), t);\r\n+        }\r\n+    }\r\n+\r\n+    private String getConfig(BaseMetadataIdentifier identifier) {\r\n+        try {\r\n+            return configService.getConfig(identifier.getUniqueKey(KeyTypeEnum.UNIQUE_KEY), group, 3000L);\r\n+        } catch (Throwable t) {\r\n+            logger.error(\"Failed to get \" + identifier + \" from nacos , cause: \" + t.getMessage(), t);\r\n+            throw new RpcException(\"Failed to get \" + identifier + \" from nacos , cause: \" + t.getMessage(), t);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/store/nacos/NacosMetadataReportFactory.java", "source2": "org/apache/dubbo/metadata/store/nacos/NacosMetadataReportFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,32 +1,32 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.metadata.store.nacos;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.metadata.report.MetadataReport;\n-import org.apache.dubbo.metadata.report.support.AbstractMetadataReportFactory;\n-\n-/**\n- * metadata report factory impl for nacos\n- */\n-public class NacosMetadataReportFactory extends AbstractMetadataReportFactory {\n-    @Override\n-    protected MetadataReport createMetadataReport(URL url) {\n-        return new NacosMetadataReport(url);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.metadata.store.nacos;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.metadata.report.MetadataReport;\r\n+import org.apache.dubbo.metadata.report.support.AbstractMetadataReportFactory;\r\n+\r\n+/**\r\n+ * metadata report factory impl for nacos\r\n+ */\r\n+public class NacosMetadataReportFactory extends AbstractMetadataReportFactory {\r\n+    @Override\r\n+    protected MetadataReport createMetadataReport(URL url) {\r\n+        return new NacosMetadataReport(url);\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/metadata/store/failover/FailoverCondition.java", "source2": "org/apache/dubbo/metadata/store/failover/FailoverCondition.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,51 +1,51 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.store.failover;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.SPI;\n-\n-@SPI(\"failover\")\n-public interface FailoverCondition {\n-\n-    /**\n-     * Whether metadata should be reported.\n-     *\n-     * @param url registry url, eg: zookeeper://127.0.0.1:2181\n-     * @return true store metadata to the specified URL.\n-     */\n-    boolean shouldRegister(URL url);\n-\n-    /**\n-     * Whether metadata should be read from specified url.\n-     *\n-     * @param url registry url, eg: zookeeper://127.0.0.1:2181\n-     * @return true read metadata from specified URL.\n-     */\n-    boolean shouldQuery(URL url);\n-\n-    /**\n-     * Judge whether it is a local region or a local datacenter.\n-     * <p>\n-     * Allows the local region or datacenter to be read first.\n-     *\n-     * @param url\n-     * @return\n-     */\n-    boolean isLocalDataCenter(URL url);\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.store.failover;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.SPI;\r\n+\r\n+@SPI(\"failover\")\r\n+public interface FailoverCondition {\r\n+\r\n+    /**\r\n+     * Whether metadata should be reported.\r\n+     *\r\n+     * @param url registry url, eg: zookeeper://127.0.0.1:2181\r\n+     * @return true store metadata to the specified URL.\r\n+     */\r\n+    boolean shouldRegister(URL url);\r\n+\r\n+    /**\r\n+     * Whether metadata should be read from specified url.\r\n+     *\r\n+     * @param url registry url, eg: zookeeper://127.0.0.1:2181\r\n+     * @return true read metadata from specified URL.\r\n+     */\r\n+    boolean shouldQuery(URL url);\r\n+\r\n+    /**\r\n+     * Judge whether it is a local region or a local datacenter.\r\n+     * <p>\r\n+     * Allows the local region or datacenter to be read first.\r\n+     *\r\n+     * @param url\r\n+     * @return\r\n+     */\r\n+    boolean isLocalDataCenter(URL url);\r\n+\r\n }\n"}, {"source1": "org/apache/dubbo/metadata/store/failover/FailoverMetadataReport.java", "source2": "org/apache/dubbo/metadata/store/failover/FailoverMetadataReport.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,581 +1,581 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.store.failover;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.constants.RemotingConstants;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.common.logger.Logger;\n-import org.apache.dubbo.common.logger.LoggerFactory;\n-import org.apache.dubbo.metadata.MappingListener;\n-import org.apache.dubbo.metadata.MetadataInfo;\n-import org.apache.dubbo.metadata.definition.model.ServiceDefinition;\n-import org.apache.dubbo.metadata.report.MetadataReport;\n-import org.apache.dubbo.metadata.report.MetadataReportFactory;\n-import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;\n-import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\n-\n-import java.util.ArrayList;\n-import java.util.Collections;\n-import java.util.List;\n-import java.util.Map;\n-import java.util.Set;\n-import java.util.regex.Pattern;\n-\n-import static org.apache.dubbo.common.constants.CommonConstants.CHECK_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\n-import static org.apache.dubbo.common.constants.CommonConstants.REGISTRY_SPLIT_PATTERN;\n-\n-/**\n- * @author yiji@apache.org\n- */\n-public class FailoverMetadataReport extends StrategyMetadataReport {\n-\n-    private static final Logger logger = LoggerFactory.getLogger(FailoverMetadataReport.class);\n-\n-    // proxy metadata report protocol, eg: zookeeper\n-    private static final String PROTOCOL_KEY = \"protocol\";\n-\n-    private static final String CLUSTER_KEY = \"clusters\";\n-\n-    // A cluster may have multiple instances\n-    private static final String HOST_KEY = \"hosts\";\n-\n-    private static final Pattern HOST_SPLIT_PATTERN = Pattern.compile(\"\\\\s*[|:]+\\\\s*\");\n-\n-    // The metadata address of the agent.\n-    private List<URL> failoverUrls;\n-\n-    // The metadata report instance.\n-    private List<MetadataReportHolder> proxyReports;\n-\n-    // Local priority metadata center\n-    private MetadataReportHolder localDataCenterReportHolder;\n-\n-    public FailoverMetadataReport(URL url) {\n-        super(url);\n-        this.failoverUrls = fetchBackupUrls();\n-        this.proxyReports = buildProxyReports();\n-    }\n-\n-    protected List<URL> fetchBackupUrls() {\n-        String protocol = url.getParameter(PROTOCOL_KEY);\n-        if (protocol == null || !ExtensionLoader.getExtensionLoader(MetadataReportFactory.class).hasExtension(protocol)) {\n-            throw new IllegalArgumentException(\n-                    \"No '\" + protocol\n-                            + \"' metadata report extension found, please check if metadata report module dependencies are included.\");\n-        }\n-\n-        List<URL> urls = new ArrayList<>();\n-\n-        String clusters = this.url.getParameter(CLUSTER_KEY);\n-        String backupHost = this.url.getParameter(HOST_KEY);\n-        URL url = this.url.removeParameters(CLUSTER_KEY, HOST_KEY, PROTOCOL_KEY).setProtocol(protocol);\n-\n-        URL metadataURL = url;\n-        if (backupHost != null && backupHost.length() > 0) {\n-            metadataURL = metadataURL.addParameter(RemotingConstants.BACKUP_KEY, backupHost);\n-        }\n-        urls.add(metadataURL);\n-\n-        if (clusters != null && (clusters = clusters.trim()).length() > 0) {\n-            String[] addresses = REGISTRY_SPLIT_PATTERN.split(clusters);\n-            for (String address : addresses) {\n-                /**\n-                 * find multiple cluster hosts, supports multiple\n-                 * metadata report center read and write operations.\n-                 */\n-                String[] hosts = COMMA_SPLIT_PATTERN.split(address);\n-                if (hosts.length > 0) {\n-                    String node = hosts[0];\n-                    // contains user name and password with address ?\n-                    String username = null, password = null;\n-                    int index = node.indexOf(\"@\");\n-                    if (index > 0) {\n-                        String[] authority = HOST_SPLIT_PATTERN.split(node.substring(0, index));\n-                        username = authority[0];\n-                        password = authority[1];\n-                        node = node.substring(index + 1);\n-                    }\n-\n-                    String[] hostInfo = HOST_SPLIT_PATTERN.split(node);\n-                    String host = hostInfo[0];\n-                    int port = Integer.parseInt(hostInfo[1]);\n-                    URL clusterURL = new URL(protocol, username, password, host, port, url.getPath(), url.getParameters());\n-                    /**\n-                     * append backup address if required,\n-                     * the same cluster may have more than one node.\n-                     */\n-                    if (hosts.length > 1) {\n-                        StringBuilder buffer = new StringBuilder();\n-                        for (int i = 1; i < hosts.length; i++) {\n-                            if (i > 1) {\n-                                buffer.append(\",\");\n-                            }\n-                            buffer.append(hosts[i]);\n-                        }\n-                        clusterURL = clusterURL.addParameters(RemotingConstants.BACKUP_KEY, buffer.toString());\n-                    }\n-                    urls.add(clusterURL);\n-                }\n-            }\n-        }\n-        return urls;\n-    }\n-\n-    protected List<MetadataReportHolder> buildProxyReports() {\n-        List<MetadataReportHolder> reports = new ArrayList<>();\n-        if (this.failoverUrls != null && !this.failoverUrls.isEmpty()) {\n-            ExtensionLoader<MetadataReportFactory> factoryLoader = ExtensionLoader.getExtensionLoader(MetadataReportFactory.class);\n-            for (URL url : this.failoverUrls) {\n-                try {\n-                    MetadataReportHolder holder = new MetadataReportHolder(url,\n-                            factoryLoader.getExtension(url.getProtocol()).getMetadataReport(url));\n-                    reports.add(holder);\n-                } catch (Exception e) {\n-                    if (url.getParameter(CHECK_KEY, true)) {\n-                        throw new RuntimeException(\"Failed to create + '\" + url.getProtocol() + \"' metadata report extension instance\", e);\n-                    }\n-                    if (logger.isWarnEnabled()) {\n-                        logger.warn(\"Failed to create + '\" + url.getProtocol()\n-                                + \"' metadata report extension instance, check=false found.\");\n-                    }\n-                }\n-            }\n-        }\n-\n-        Collections.shuffle(reports);\n-\n-        /**\n-         * Select the local priority metadata cluster.\n-         * In order to prevent clients from all connecting\n-         * to the same cluster, random sorting has been done.\n-         */\n-        reports.forEach(holder -> {\n-            if (isLocalDataCenter(holder.url)) {\n-                this.localDataCenterReportHolder = holder;\n-            }\n-        });\n-\n-        return reports;\n-    }\n-\n-    @Override\n-    public void storeProviderMetadata(MetadataIdentifier providerMetadataIdentifier, ServiceDefinition serviceDefinition) {\n-        this.proxyReports.forEach((holder -> {\n-            if (shouldRegister(holder.url)) {\n-                try {\n-                    holder.report.storeProviderMetadata(providerMetadataIdentifier, serviceDefinition);\n-                } catch (Exception e) {\n-                    if (url.getParameter(CHECK_KEY, true)) {\n-                        throw e;\n-                    }\n-                }\n-            } else {\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(\"Cancel to store provider metadata, register is false. url \" + holder.url);\n-                }\n-            }\n-        }));\n-    }\n-\n-    @Override\n-    public void storeConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, Map<String, String> serviceParameterMap) {\n-        this.proxyReports.forEach(holder -> {\n-            if (shouldRegister(holder.url)) {\n-                try {\n-                    holder.report.storeConsumerMetadata(consumerMetadataIdentifier, serviceParameterMap);\n-                } catch (Exception e) {\n-                    if (url.getParameter(CHECK_KEY, true)) {\n-                        throw e;\n-                    }\n-                }\n-            } else {\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(\"Cancel to store consumer metadata, register is false. url \" + holder.url);\n-                }\n-            }\n-        });\n-    }\n-\n-    @Override\n-    public void publishAppMetadata(SubscriberMetadataIdentifier identifier, MetadataInfo metadataInfo) {\n-        this.proxyReports.forEach(holder -> {\n-            if (shouldRegister(holder.url)) {\n-                try {\n-                    holder.report.publishAppMetadata(identifier, metadataInfo);\n-                } catch (Exception e) {\n-                    if (url.getParameter(CHECK_KEY, true)) {\n-                        throw e;\n-                    }\n-                }\n-            } else {\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(\"Cancel to publish app metadata, register is false. url \" + holder.url);\n-                }\n-            }\n-        });\n-    }\n-\n-    @Override\n-    public String getServiceDefinition(MetadataIdentifier metadataIdentifier) {\n-        /**\n-         * Support local region or datacenter to read first,\n-         * If current region or datacenter failed, it will be demoted to another region or datacenter.\n-         */\n-        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\n-        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\n-            try {\n-                String definition = localReportHolder.report.getServiceDefinition(metadataIdentifier);\n-                if (definition != null && definition.length() > 0) {\n-                    return definition;\n-                }\n-            } catch (Exception e) {\n-                if (logger.isWarnEnabled()) {\n-                    logger.warn(\"Failed to get service definition from local metadata report center, url \" + localReportHolder.url);\n-                }\n-            }\n-        }\n-\n-        for (MetadataReportHolder holder : proxyReports) {\n-            /**\n-             * Skip the local region or datacenter read,\n-             * which was queried already.\n-             */\n-            if (localReportHolder != null\n-                    && holder.url == localReportHolder.url) {\n-                continue;\n-            }\n-\n-            if (shouldQuery(holder.url)) {\n-                try {\n-                    String definition = holder.report.getServiceDefinition(metadataIdentifier);\n-                    if (definition != null && definition.length() > 0) {\n-                        return definition;\n-                    }\n-                } catch (Exception e) {\n-                    if (logger.isWarnEnabled()) {\n-                        logger.warn(\"Failed to get service definition from metadata report center, url \" + holder.url);\n-                    }\n-                }\n-            }\n-\n-            // should never happened.\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"Cancel to get service definition, should query is false. url \" + holder.url);\n-            }\n-        }\n-\n-        return null;\n-    }\n-\n-    @Override\n-    public MetadataInfo getAppMetadata(SubscriberMetadataIdentifier identifier, Map<String, String> instanceMetadata) {\n-        /**\n-         * Support local region or datacenter to read first,\n-         * If current region or datacenter failed, it will be demoted to another region or datacenter.\n-         */\n-        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\n-        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\n-            try {\n-                MetadataInfo metadataInfo = localReportHolder.report.getAppMetadata(identifier, instanceMetadata);\n-                if (metadataInfo != null) {\n-                    return metadataInfo;\n-                }\n-            } catch (Exception e) {\n-                if (logger.isWarnEnabled()) {\n-                    logger.warn(\"Failed to get app metadata from local metadata report center, url \" + localReportHolder.url);\n-                }\n-            }\n-        }\n-\n-        for (MetadataReportHolder holder : proxyReports) {\n-            /**\n-             * Skip the local region or datacenter read,\n-             * which was queried already.\n-             */\n-            if (localReportHolder != null\n-                    && holder.url == localReportHolder.url) {\n-                continue;\n-            }\n-\n-            if (shouldQuery(holder.url)) {\n-                try {\n-                    MetadataInfo metadataInfo = holder.report.getAppMetadata(identifier, instanceMetadata);\n-                    if (metadataInfo != null) {\n-                        return metadataInfo;\n-                    }\n-                } catch (Exception e) {\n-                    if (logger.isWarnEnabled()) {\n-                        logger.warn(\"Failed to get app metadata from metadata report center, url \" + holder.url);\n-                    }\n-                }\n-            }\n-\n-            // should never happened.\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"Cancel to get app metadata, should query is false. url \" + holder.url);\n-            }\n-        }\n-\n-        return null;\n-    }\n-\n-    @Override\n-    public Set<String> getServiceAppMapping(String serviceKey, MappingListener listener, URL url) {\n-        /**\n-         * Support local region or datacenter to read first,\n-         * If current region or datacenter failed, it will be demoted to another region or datacenter.\n-         */\n-        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\n-        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\n-            try {\n-                Set<String> appMapping = localReportHolder.report.getServiceAppMapping(serviceKey, listener, url);\n-                if (appMapping != null && !appMapping.isEmpty()) {\n-                    return appMapping;\n-                }\n-            } catch (Exception e) {\n-                if (logger.isWarnEnabled()) {\n-                    logger.warn(\"Failed to get service mapping from local metadata report center, url \" + localReportHolder.url);\n-                }\n-            }\n-        }\n-\n-        for (MetadataReportHolder holder : proxyReports) {\n-            /**\n-             * Skip the local region or datacenter read,\n-             * which was queried already.\n-             */\n-            if (localReportHolder != null\n-                    && holder.url == localReportHolder.url) {\n-                continue;\n-            }\n-\n-            if (shouldQuery(holder.url)) {\n-                try {\n-                    Set<String> appMapping = holder.report.getServiceAppMapping(serviceKey, listener, url);\n-                    if (appMapping != null && !appMapping.isEmpty()) {\n-                        return appMapping;\n-                    }\n-                } catch (Exception e) {\n-                    if (logger.isWarnEnabled()) {\n-                        logger.warn(\"Failed to get service mapping from metadata report center, url \" + holder.url);\n-                    }\n-                }\n-            }\n-\n-            // should never happened.\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"Cancel to get service mapping, should query is false. url \" + holder.url);\n-            }\n-        }\n-\n-        return Collections.EMPTY_SET;\n-    }\n-\n-    @Override\n-    public void registerServiceAppMapping(String serviceKey, String application, URL url) {\n-        this.proxyReports.forEach(holder -> {\n-            if (shouldRegister(holder.url)) {\n-                try {\n-                    holder.report.registerServiceAppMapping(serviceKey, application, url);\n-                } catch (Exception e) {\n-                    if (url.getParameter(CHECK_KEY, true)) {\n-                        throw e;\n-                    }\n-                }\n-            } else {\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(\"Cancel to register service app mapping, register is false. url \" + holder.url);\n-                }\n-            }\n-        });\n-    }\n-\n-    @Override\n-    public void saveServiceMetadata(ServiceMetadataIdentifier metadataIdentifier, URL url) {\n-        this.proxyReports.forEach(holder -> {\n-            if (shouldRegister(holder.url)) {\n-                try {\n-                    holder.report.saveServiceMetadata(metadataIdentifier, url);\n-                } catch (Exception e) {\n-                    if (url.getParameter(CHECK_KEY, true)) {\n-                        throw e;\n-                    }\n-                }\n-            } else {\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(\"Cancel to register service app mapping, register is false. url \" + holder.url);\n-                }\n-            }\n-        });\n-    }\n-\n-    @Override\n-    public void saveSubscribedData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, Set<String> urls) {\n-        this.proxyReports.forEach(holder -> {\n-            if (shouldRegister(holder.url)) {\n-                try {\n-                    holder.report.saveSubscribedData(subscriberMetadataIdentifier, urls);\n-                } catch (Exception e) {\n-                    if (url.getParameter(CHECK_KEY, true)) {\n-                        throw e;\n-                    }\n-                }\n-            } else {\n-                if (logger.isInfoEnabled()) {\n-                    logger.info(\"Cancel to register service app mapping, register is false. url \" + holder.url);\n-                }\n-            }\n-        });\n-    }\n-\n-    @Override\n-    public void removeServiceMetadata(ServiceMetadataIdentifier metadataIdentifier) {\n-        this.proxyReports.forEach(holder -> {\n-            if (shouldRegister(holder.url)) {\n-                try {\n-                    holder.report.removeServiceMetadata(metadataIdentifier);\n-                } catch (Exception e) {\n-                    if (url.getParameter(CHECK_KEY, true)) {\n-                        throw e;\n-                    }\n-                }\n-            }\n-        });\n-    }\n-\n-    @Override\n-    public List<String> getExportedURLs(ServiceMetadataIdentifier metadataIdentifier) {\n-        /**\n-         * Support local region or datacenter to read first,\n-         * If current region or datacenter failed, it will be demoted to another region or datacenter.\n-         */\n-        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\n-        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\n-            try {\n-                List<String> exportedURLs = localReportHolder.report.getExportedURLs(metadataIdentifier);\n-                if (exportedURLs != null && !exportedURLs.isEmpty()) {\n-                    return exportedURLs;\n-                }\n-            } catch (Exception e) {\n-                if (logger.isWarnEnabled()) {\n-                    logger.warn(\"Failed to get exported urls from local metadata report center, url \" + localReportHolder.url);\n-                }\n-            }\n-        }\n-\n-        for (MetadataReportHolder holder : proxyReports) {\n-            /**\n-             * Skip the local region or datacenter read,\n-             * which was queried already.\n-             */\n-            if (localReportHolder != null\n-                    && holder.url == localReportHolder.url) {\n-                continue;\n-            }\n-\n-            if (shouldQuery(holder.url)) {\n-                try {\n-                    List<String> exportedURLs = holder.report.getExportedURLs(metadataIdentifier);\n-                    if (exportedURLs != null && !exportedURLs.isEmpty()) {\n-                        return exportedURLs;\n-                    }\n-                } catch (Exception e) {\n-                    if (logger.isWarnEnabled()) {\n-                        logger.warn(\"Failed to get exported urls from metadata report center, url \" + holder.url);\n-                    }\n-                }\n-            }\n-\n-            // should never happened.\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"Cancel to get exported urls, should query is false. url \" + holder.url);\n-            }\n-        }\n-\n-        return Collections.EMPTY_LIST;\n-    }\n-\n-    @Override\n-    public List<String> getSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier) {\n-        /**\n-         * Support local region or datacenter to read first,\n-         * If current region or datacenter failed, it will be demoted to another region or datacenter.\n-         */\n-        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\n-        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\n-            try {\n-                List<String> subscribedURLs = localReportHolder.report.getSubscribedURLs(subscriberMetadataIdentifier);\n-                if (subscribedURLs != null && !subscribedURLs.isEmpty()) {\n-                    return subscribedURLs;\n-                }\n-            } catch (Exception e) {\n-                if (logger.isWarnEnabled()) {\n-                    logger.warn(\"Failed to get subscribed urls from local metadata report center, url \" + localReportHolder.url);\n-                }\n-            }\n-        }\n-\n-        for (MetadataReportHolder holder : proxyReports) {\n-            /**\n-             * Skip the local region or datacenter read,\n-             * which was queried already.\n-             */\n-            if (localReportHolder != null\n-                    && holder.url == localReportHolder.url) {\n-                continue;\n-            }\n-\n-            if (shouldQuery(holder.url)) {\n-                try {\n-                    List<String> subscribedURLs = holder.report.getSubscribedURLs(subscriberMetadataIdentifier);\n-                    if (subscribedURLs != null && !subscribedURLs.isEmpty()) {\n-                        return subscribedURLs;\n-                    }\n-                } catch (Exception e) {\n-                    if (logger.isWarnEnabled()) {\n-                        logger.warn(\"Failed to get subscribed urls from metadata report center, url \" + holder.url);\n-                    }\n-                }\n-            }\n-\n-            // should never happened.\n-            if (logger.isInfoEnabled()) {\n-                logger.info(\"Cancel to get subscribed urls, should query is false. url \" + holder.url);\n-            }\n-        }\n-\n-        return Collections.EMPTY_LIST;\n-    }\n-\n-    public List<MetadataReportHolder> getProxyReports() {\n-        return proxyReports;\n-    }\n-\n-    class MetadataReportHolder {\n-\n-        final URL            url;\n-        final MetadataReport report;\n-\n-        public MetadataReportHolder(URL url, MetadataReport report) {\n-            this.url = url;\n-            this.report = report;\n-        }\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.store.failover;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.constants.RemotingConstants;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.common.logger.Logger;\r\n+import org.apache.dubbo.common.logger.LoggerFactory;\r\n+import org.apache.dubbo.metadata.MappingListener;\r\n+import org.apache.dubbo.metadata.MetadataInfo;\r\n+import org.apache.dubbo.metadata.definition.model.ServiceDefinition;\r\n+import org.apache.dubbo.metadata.report.MetadataReport;\r\n+import org.apache.dubbo.metadata.report.MetadataReportFactory;\r\n+import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.ServiceMetadataIdentifier;\r\n+import org.apache.dubbo.metadata.report.identifier.SubscriberMetadataIdentifier;\r\n+\r\n+import java.util.ArrayList;\r\n+import java.util.Collections;\r\n+import java.util.List;\r\n+import java.util.Map;\r\n+import java.util.Set;\r\n+import java.util.regex.Pattern;\r\n+\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CHECK_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.COMMA_SPLIT_PATTERN;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.REGISTRY_SPLIT_PATTERN;\r\n+\r\n+/**\r\n+ * @author yiji@apache.org\r\n+ */\r\n+public class FailoverMetadataReport extends StrategyMetadataReport {\r\n+\r\n+    private static final Logger logger = LoggerFactory.getLogger(FailoverMetadataReport.class);\r\n+\r\n+    // proxy metadata report protocol, eg: zookeeper\r\n+    private static final String PROTOCOL_KEY = \"protocol\";\r\n+\r\n+    private static final String CLUSTER_KEY = \"clusters\";\r\n+\r\n+    // A cluster may have multiple instances\r\n+    private static final String HOST_KEY = \"hosts\";\r\n+\r\n+    private static final Pattern HOST_SPLIT_PATTERN = Pattern.compile(\"\\\\s*[|:]+\\\\s*\");\r\n+\r\n+    // The metadata address of the agent.\r\n+    private List<URL> failoverUrls;\r\n+\r\n+    // The metadata report instance.\r\n+    private List<MetadataReportHolder> proxyReports;\r\n+\r\n+    // Local priority metadata center\r\n+    private MetadataReportHolder localDataCenterReportHolder;\r\n+\r\n+    public FailoverMetadataReport(URL url) {\r\n+        super(url);\r\n+        this.failoverUrls = fetchBackupUrls();\r\n+        this.proxyReports = buildProxyReports();\r\n+    }\r\n+\r\n+    protected List<URL> fetchBackupUrls() {\r\n+        String protocol = url.getParameter(PROTOCOL_KEY);\r\n+        if (protocol == null || !ExtensionLoader.getExtensionLoader(MetadataReportFactory.class).hasExtension(protocol)) {\r\n+            throw new IllegalArgumentException(\r\n+                    \"No '\" + protocol\r\n+                            + \"' metadata report extension found, please check if metadata report module dependencies are included.\");\r\n+        }\r\n+\r\n+        List<URL> urls = new ArrayList<>();\r\n+\r\n+        String clusters = this.url.getParameter(CLUSTER_KEY);\r\n+        String backupHost = this.url.getParameter(HOST_KEY);\r\n+        URL url = this.url.removeParameters(CLUSTER_KEY, HOST_KEY, PROTOCOL_KEY).setProtocol(protocol);\r\n+\r\n+        URL metadataURL = url;\r\n+        if (backupHost != null && backupHost.length() > 0) {\r\n+            metadataURL = metadataURL.addParameter(RemotingConstants.BACKUP_KEY, backupHost);\r\n+        }\r\n+        urls.add(metadataURL);\r\n+\r\n+        if (clusters != null && (clusters = clusters.trim()).length() > 0) {\r\n+            String[] addresses = REGISTRY_SPLIT_PATTERN.split(clusters);\r\n+            for (String address : addresses) {\r\n+                /**\r\n+                 * find multiple cluster hosts, supports multiple\r\n+                 * metadata report center read and write operations.\r\n+                 */\r\n+                String[] hosts = COMMA_SPLIT_PATTERN.split(address);\r\n+                if (hosts.length > 0) {\r\n+                    String node = hosts[0];\r\n+                    // contains user name and password with address ?\r\n+                    String username = null, password = null;\r\n+                    int index = node.indexOf(\"@\");\r\n+                    if (index > 0) {\r\n+                        String[] authority = HOST_SPLIT_PATTERN.split(node.substring(0, index));\r\n+                        username = authority[0];\r\n+                        password = authority[1];\r\n+                        node = node.substring(index + 1);\r\n+                    }\r\n+\r\n+                    String[] hostInfo = HOST_SPLIT_PATTERN.split(node);\r\n+                    String host = hostInfo[0];\r\n+                    int port = Integer.parseInt(hostInfo[1]);\r\n+                    URL clusterURL = new URL(protocol, username, password, host, port, url.getPath(), url.getParameters());\r\n+                    /**\r\n+                     * append backup address if required,\r\n+                     * the same cluster may have more than one node.\r\n+                     */\r\n+                    if (hosts.length > 1) {\r\n+                        StringBuilder buffer = new StringBuilder();\r\n+                        for (int i = 1; i < hosts.length; i++) {\r\n+                            if (i > 1) {\r\n+                                buffer.append(\",\");\r\n+                            }\r\n+                            buffer.append(hosts[i]);\r\n+                        }\r\n+                        clusterURL = clusterURL.addParameters(RemotingConstants.BACKUP_KEY, buffer.toString());\r\n+                    }\r\n+                    urls.add(clusterURL);\r\n+                }\r\n+            }\r\n+        }\r\n+        return urls;\r\n+    }\r\n+\r\n+    protected List<MetadataReportHolder> buildProxyReports() {\r\n+        List<MetadataReportHolder> reports = new ArrayList<>();\r\n+        if (this.failoverUrls != null && !this.failoverUrls.isEmpty()) {\r\n+            ExtensionLoader<MetadataReportFactory> factoryLoader = ExtensionLoader.getExtensionLoader(MetadataReportFactory.class);\r\n+            for (URL url : this.failoverUrls) {\r\n+                try {\r\n+                    MetadataReportHolder holder = new MetadataReportHolder(url,\r\n+                            factoryLoader.getExtension(url.getProtocol()).getMetadataReport(url));\r\n+                    reports.add(holder);\r\n+                } catch (Exception e) {\r\n+                    if (url.getParameter(CHECK_KEY, true)) {\r\n+                        throw new RuntimeException(\"Failed to create + '\" + url.getProtocol() + \"' metadata report extension instance\", e);\r\n+                    }\r\n+                    if (logger.isWarnEnabled()) {\r\n+                        logger.warn(\"Failed to create + '\" + url.getProtocol()\r\n+                                + \"' metadata report extension instance, check=false found.\");\r\n+                    }\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        Collections.shuffle(reports);\r\n+\r\n+        /**\r\n+         * Select the local priority metadata cluster.\r\n+         * In order to prevent clients from all connecting\r\n+         * to the same cluster, random sorting has been done.\r\n+         */\r\n+        reports.forEach(holder -> {\r\n+            if (isLocalDataCenter(holder.url)) {\r\n+                this.localDataCenterReportHolder = holder;\r\n+            }\r\n+        });\r\n+\r\n+        return reports;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void storeProviderMetadata(MetadataIdentifier providerMetadataIdentifier, ServiceDefinition serviceDefinition) {\r\n+        this.proxyReports.forEach((holder -> {\r\n+            if (shouldRegister(holder.url)) {\r\n+                try {\r\n+                    holder.report.storeProviderMetadata(providerMetadataIdentifier, serviceDefinition);\r\n+                } catch (Exception e) {\r\n+                    if (url.getParameter(CHECK_KEY, true)) {\r\n+                        throw e;\r\n+                    }\r\n+                }\r\n+            } else {\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(\"Cancel to store provider metadata, register is false. url \" + holder.url);\r\n+                }\r\n+            }\r\n+        }));\r\n+    }\r\n+\r\n+    @Override\r\n+    public void storeConsumerMetadata(MetadataIdentifier consumerMetadataIdentifier, Map<String, String> serviceParameterMap) {\r\n+        this.proxyReports.forEach(holder -> {\r\n+            if (shouldRegister(holder.url)) {\r\n+                try {\r\n+                    holder.report.storeConsumerMetadata(consumerMetadataIdentifier, serviceParameterMap);\r\n+                } catch (Exception e) {\r\n+                    if (url.getParameter(CHECK_KEY, true)) {\r\n+                        throw e;\r\n+                    }\r\n+                }\r\n+            } else {\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(\"Cancel to store consumer metadata, register is false. url \" + holder.url);\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public void publishAppMetadata(SubscriberMetadataIdentifier identifier, MetadataInfo metadataInfo) {\r\n+        this.proxyReports.forEach(holder -> {\r\n+            if (shouldRegister(holder.url)) {\r\n+                try {\r\n+                    holder.report.publishAppMetadata(identifier, metadataInfo);\r\n+                } catch (Exception e) {\r\n+                    if (url.getParameter(CHECK_KEY, true)) {\r\n+                        throw e;\r\n+                    }\r\n+                }\r\n+            } else {\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(\"Cancel to publish app metadata, register is false. url \" + holder.url);\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getServiceDefinition(MetadataIdentifier metadataIdentifier) {\r\n+        /**\r\n+         * Support local region or datacenter to read first,\r\n+         * If current region or datacenter failed, it will be demoted to another region or datacenter.\r\n+         */\r\n+        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\r\n+        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\r\n+            try {\r\n+                String definition = localReportHolder.report.getServiceDefinition(metadataIdentifier);\r\n+                if (definition != null && definition.length() > 0) {\r\n+                    return definition;\r\n+                }\r\n+            } catch (Exception e) {\r\n+                if (logger.isWarnEnabled()) {\r\n+                    logger.warn(\"Failed to get service definition from local metadata report center, url \" + localReportHolder.url);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        for (MetadataReportHolder holder : proxyReports) {\r\n+            /**\r\n+             * Skip the local region or datacenter read,\r\n+             * which was queried already.\r\n+             */\r\n+            if (localReportHolder != null\r\n+                    && holder.url == localReportHolder.url) {\r\n+                continue;\r\n+            }\r\n+\r\n+            if (shouldQuery(holder.url)) {\r\n+                try {\r\n+                    String definition = holder.report.getServiceDefinition(metadataIdentifier);\r\n+                    if (definition != null && definition.length() > 0) {\r\n+                        return definition;\r\n+                    }\r\n+                } catch (Exception e) {\r\n+                    if (logger.isWarnEnabled()) {\r\n+                        logger.warn(\"Failed to get service definition from metadata report center, url \" + holder.url);\r\n+                    }\r\n+                }\r\n+            }\r\n+\r\n+            // should never happened.\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"Cancel to get service definition, should query is false. url \" + holder.url);\r\n+            }\r\n+        }\r\n+\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public MetadataInfo getAppMetadata(SubscriberMetadataIdentifier identifier, Map<String, String> instanceMetadata) {\r\n+        /**\r\n+         * Support local region or datacenter to read first,\r\n+         * If current region or datacenter failed, it will be demoted to another region or datacenter.\r\n+         */\r\n+        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\r\n+        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\r\n+            try {\r\n+                MetadataInfo metadataInfo = localReportHolder.report.getAppMetadata(identifier, instanceMetadata);\r\n+                if (metadataInfo != null) {\r\n+                    return metadataInfo;\r\n+                }\r\n+            } catch (Exception e) {\r\n+                if (logger.isWarnEnabled()) {\r\n+                    logger.warn(\"Failed to get app metadata from local metadata report center, url \" + localReportHolder.url);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        for (MetadataReportHolder holder : proxyReports) {\r\n+            /**\r\n+             * Skip the local region or datacenter read,\r\n+             * which was queried already.\r\n+             */\r\n+            if (localReportHolder != null\r\n+                    && holder.url == localReportHolder.url) {\r\n+                continue;\r\n+            }\r\n+\r\n+            if (shouldQuery(holder.url)) {\r\n+                try {\r\n+                    MetadataInfo metadataInfo = holder.report.getAppMetadata(identifier, instanceMetadata);\r\n+                    if (metadataInfo != null) {\r\n+                        return metadataInfo;\r\n+                    }\r\n+                } catch (Exception e) {\r\n+                    if (logger.isWarnEnabled()) {\r\n+                        logger.warn(\"Failed to get app metadata from metadata report center, url \" + holder.url);\r\n+                    }\r\n+                }\r\n+            }\r\n+\r\n+            // should never happened.\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"Cancel to get app metadata, should query is false. url \" + holder.url);\r\n+            }\r\n+        }\r\n+\r\n+        return null;\r\n+    }\r\n+\r\n+    @Override\r\n+    public Set<String> getServiceAppMapping(String serviceKey, MappingListener listener, URL url) {\r\n+        /**\r\n+         * Support local region or datacenter to read first,\r\n+         * If current region or datacenter failed, it will be demoted to another region or datacenter.\r\n+         */\r\n+        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\r\n+        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\r\n+            try {\r\n+                Set<String> appMapping = localReportHolder.report.getServiceAppMapping(serviceKey, listener, url);\r\n+                if (appMapping != null && !appMapping.isEmpty()) {\r\n+                    return appMapping;\r\n+                }\r\n+            } catch (Exception e) {\r\n+                if (logger.isWarnEnabled()) {\r\n+                    logger.warn(\"Failed to get service mapping from local metadata report center, url \" + localReportHolder.url);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        for (MetadataReportHolder holder : proxyReports) {\r\n+            /**\r\n+             * Skip the local region or datacenter read,\r\n+             * which was queried already.\r\n+             */\r\n+            if (localReportHolder != null\r\n+                    && holder.url == localReportHolder.url) {\r\n+                continue;\r\n+            }\r\n+\r\n+            if (shouldQuery(holder.url)) {\r\n+                try {\r\n+                    Set<String> appMapping = holder.report.getServiceAppMapping(serviceKey, listener, url);\r\n+                    if (appMapping != null && !appMapping.isEmpty()) {\r\n+                        return appMapping;\r\n+                    }\r\n+                } catch (Exception e) {\r\n+                    if (logger.isWarnEnabled()) {\r\n+                        logger.warn(\"Failed to get service mapping from metadata report center, url \" + holder.url);\r\n+                    }\r\n+                }\r\n+            }\r\n+\r\n+            // should never happened.\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"Cancel to get service mapping, should query is false. url \" + holder.url);\r\n+            }\r\n+        }\r\n+\r\n+        return Collections.EMPTY_SET;\r\n+    }\r\n+\r\n+    @Override\r\n+    public void registerServiceAppMapping(String serviceKey, String application, URL url) {\r\n+        this.proxyReports.forEach(holder -> {\r\n+            if (shouldRegister(holder.url)) {\r\n+                try {\r\n+                    holder.report.registerServiceAppMapping(serviceKey, application, url);\r\n+                } catch (Exception e) {\r\n+                    if (url.getParameter(CHECK_KEY, true)) {\r\n+                        throw e;\r\n+                    }\r\n+                }\r\n+            } else {\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(\"Cancel to register service app mapping, register is false. url \" + holder.url);\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public void saveServiceMetadata(ServiceMetadataIdentifier metadataIdentifier, URL url) {\r\n+        this.proxyReports.forEach(holder -> {\r\n+            if (shouldRegister(holder.url)) {\r\n+                try {\r\n+                    holder.report.saveServiceMetadata(metadataIdentifier, url);\r\n+                } catch (Exception e) {\r\n+                    if (url.getParameter(CHECK_KEY, true)) {\r\n+                        throw e;\r\n+                    }\r\n+                }\r\n+            } else {\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(\"Cancel to register service app mapping, register is false. url \" + holder.url);\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public void saveSubscribedData(SubscriberMetadataIdentifier subscriberMetadataIdentifier, Set<String> urls) {\r\n+        this.proxyReports.forEach(holder -> {\r\n+            if (shouldRegister(holder.url)) {\r\n+                try {\r\n+                    holder.report.saveSubscribedData(subscriberMetadataIdentifier, urls);\r\n+                } catch (Exception e) {\r\n+                    if (url.getParameter(CHECK_KEY, true)) {\r\n+                        throw e;\r\n+                    }\r\n+                }\r\n+            } else {\r\n+                if (logger.isInfoEnabled()) {\r\n+                    logger.info(\"Cancel to register service app mapping, register is false. url \" + holder.url);\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeServiceMetadata(ServiceMetadataIdentifier metadataIdentifier) {\r\n+        this.proxyReports.forEach(holder -> {\r\n+            if (shouldRegister(holder.url)) {\r\n+                try {\r\n+                    holder.report.removeServiceMetadata(metadataIdentifier);\r\n+                } catch (Exception e) {\r\n+                    if (url.getParameter(CHECK_KEY, true)) {\r\n+                        throw e;\r\n+                    }\r\n+                }\r\n+            }\r\n+        });\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<String> getExportedURLs(ServiceMetadataIdentifier metadataIdentifier) {\r\n+        /**\r\n+         * Support local region or datacenter to read first,\r\n+         * If current region or datacenter failed, it will be demoted to another region or datacenter.\r\n+         */\r\n+        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\r\n+        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\r\n+            try {\r\n+                List<String> exportedURLs = localReportHolder.report.getExportedURLs(metadataIdentifier);\r\n+                if (exportedURLs != null && !exportedURLs.isEmpty()) {\r\n+                    return exportedURLs;\r\n+                }\r\n+            } catch (Exception e) {\r\n+                if (logger.isWarnEnabled()) {\r\n+                    logger.warn(\"Failed to get exported urls from local metadata report center, url \" + localReportHolder.url);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        for (MetadataReportHolder holder : proxyReports) {\r\n+            /**\r\n+             * Skip the local region or datacenter read,\r\n+             * which was queried already.\r\n+             */\r\n+            if (localReportHolder != null\r\n+                    && holder.url == localReportHolder.url) {\r\n+                continue;\r\n+            }\r\n+\r\n+            if (shouldQuery(holder.url)) {\r\n+                try {\r\n+                    List<String> exportedURLs = holder.report.getExportedURLs(metadataIdentifier);\r\n+                    if (exportedURLs != null && !exportedURLs.isEmpty()) {\r\n+                        return exportedURLs;\r\n+                    }\r\n+                } catch (Exception e) {\r\n+                    if (logger.isWarnEnabled()) {\r\n+                        logger.warn(\"Failed to get exported urls from metadata report center, url \" + holder.url);\r\n+                    }\r\n+                }\r\n+            }\r\n+\r\n+            // should never happened.\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"Cancel to get exported urls, should query is false. url \" + holder.url);\r\n+            }\r\n+        }\r\n+\r\n+        return Collections.EMPTY_LIST;\r\n+    }\r\n+\r\n+    @Override\r\n+    public List<String> getSubscribedURLs(SubscriberMetadataIdentifier subscriberMetadataIdentifier) {\r\n+        /**\r\n+         * Support local region or datacenter to read first,\r\n+         * If current region or datacenter failed, it will be demoted to another region or datacenter.\r\n+         */\r\n+        MetadataReportHolder localReportHolder = this.localDataCenterReportHolder;\r\n+        if (localReportHolder != null && shouldQuery(localReportHolder.url)) {\r\n+            try {\r\n+                List<String> subscribedURLs = localReportHolder.report.getSubscribedURLs(subscriberMetadataIdentifier);\r\n+                if (subscribedURLs != null && !subscribedURLs.isEmpty()) {\r\n+                    return subscribedURLs;\r\n+                }\r\n+            } catch (Exception e) {\r\n+                if (logger.isWarnEnabled()) {\r\n+                    logger.warn(\"Failed to get subscribed urls from local metadata report center, url \" + localReportHolder.url);\r\n+                }\r\n+            }\r\n+        }\r\n+\r\n+        for (MetadataReportHolder holder : proxyReports) {\r\n+            /**\r\n+             * Skip the local region or datacenter read,\r\n+             * which was queried already.\r\n+             */\r\n+            if (localReportHolder != null\r\n+                    && holder.url == localReportHolder.url) {\r\n+                continue;\r\n+            }\r\n+\r\n+            if (shouldQuery(holder.url)) {\r\n+                try {\r\n+                    List<String> subscribedURLs = holder.report.getSubscribedURLs(subscriberMetadataIdentifier);\r\n+                    if (subscribedURLs != null && !subscribedURLs.isEmpty()) {\r\n+                        return subscribedURLs;\r\n+                    }\r\n+                } catch (Exception e) {\r\n+                    if (logger.isWarnEnabled()) {\r\n+                        logger.warn(\"Failed to get subscribed urls from metadata report center, url \" + holder.url);\r\n+                    }\r\n+                }\r\n+            }\r\n+\r\n+            // should never happened.\r\n+            if (logger.isInfoEnabled()) {\r\n+                logger.info(\"Cancel to get subscribed urls, should query is false. url \" + holder.url);\r\n+            }\r\n+        }\r\n+\r\n+        return Collections.EMPTY_LIST;\r\n+    }\r\n+\r\n+    public List<MetadataReportHolder> getProxyReports() {\r\n+        return proxyReports;\r\n+    }\r\n+\r\n+    class MetadataReportHolder {\r\n+\r\n+        final URL            url;\r\n+        final MetadataReport report;\r\n+\r\n+        public MetadataReportHolder(URL url, MetadataReport report) {\r\n+            this.url = url;\r\n+            this.report = report;\r\n+        }\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/metadata/store/failover/FailoverMetadataReportFactory.java", "source2": "org/apache/dubbo/metadata/store/failover/FailoverMetadataReportFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,29 +1,29 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.store.failover;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.metadata.report.MetadataReport;\n-import org.apache.dubbo.metadata.report.support.AbstractMetadataReportFactory;\n-\n-public class FailoverMetadataReportFactory extends AbstractMetadataReportFactory {\n-\n-    @Override\n-    protected MetadataReport createMetadataReport(URL url) {\n-        return new FailoverMetadataReport(url);\n-    }\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.store.failover;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.metadata.report.MetadataReport;\r\n+import org.apache.dubbo.metadata.report.support.AbstractMetadataReportFactory;\r\n+\r\n+public class FailoverMetadataReportFactory extends AbstractMetadataReportFactory {\r\n+\r\n+    @Override\r\n+    protected MetadataReport createMetadataReport(URL url) {\r\n+        return new FailoverMetadataReport(url);\r\n+    }\r\n }\n"}, {"source1": "org/apache/dubbo/metadata/store/failover/StrategyMetadataReport.java", "source2": "org/apache/dubbo/metadata/store/failover/StrategyMetadataReport.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,88 +1,88 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-package org.apache.dubbo.metadata.store.failover;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.extension.ExtensionLoader;\n-import org.apache.dubbo.metadata.report.MetadataReport;\n-\n-/**\n- * @author yiji@apache.org\n- */\n-public abstract class StrategyMetadataReport implements MetadataReport {\n-\n-    // failover configured url, eg: failover://127.0.1:2181?backup=localhost:2181|localhost:2181\n-    protected URL url;\n-\n-    protected static final String STRATEGY_KEY = \"strategy\";\n-\n-    // proxy metadata report strategy, used to decide whether to write or read metadata\n-    protected FailoverCondition strategy;\n-\n-    protected ExtensionLoader<FailoverCondition> failoverLoader = ExtensionLoader.getExtensionLoader(FailoverCondition.class);\n-\n-    public StrategyMetadataReport(URL url) {\n-        if (url == null) {\n-            throw new IllegalArgumentException(\"url is required.\");\n-        }\n-        this.url = url;\n-        createFailoverStrategy(url);\n-    }\n-\n-    protected void createFailoverStrategy(URL url) {\n-        String strategy = url.getParameter(STRATEGY_KEY);\n-        if (strategy != null) {\n-            if (!failoverLoader.hasExtension(strategy)) {\n-                throw new IllegalArgumentException(\"No '\" + strategy + \"' failover condition extension found.\");\n-            }\n-            this.strategy = failoverLoader.getExtension(strategy);\n-        }\n-    }\n-\n-    /**\n-     * Whether metadata should be reported.\n-     *\n-     * @param url registry url, eg: zookeeper://127.0.0.1:2181\n-     * @return true store metadata to the specified URL.\n-     */\n-    protected boolean shouldRegister(URL url) {\n-        return this.strategy == null || this.strategy.shouldRegister(url);\n-    }\n-\n-    /**\n-     * Whether metadata should be read from specified url.\n-     *\n-     * @param url registry url, eg: zookeeper://127.0.0.1:2181\n-     * @return true read metadata from specified URL.\n-     */\n-    protected boolean shouldQuery(URL url) {\n-        return this.strategy == null || this.strategy.shouldQuery(url);\n-    }\n-\n-    /**\n-     * Judge whether it is a local region or a local datacenter.\n-     * <p>\n-     * Allows the local region or datacenter to be read first.\n-     *\n-     * @param url\n-     * @return\n-     */\n-    protected boolean isLocalDataCenter(URL url) {\n-        return this.strategy == null || this.strategy.isLocalDataCenter(url);\n-    }\n-\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+package org.apache.dubbo.metadata.store.failover;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.extension.ExtensionLoader;\r\n+import org.apache.dubbo.metadata.report.MetadataReport;\r\n+\r\n+/**\r\n+ * @author yiji@apache.org\r\n+ */\r\n+public abstract class StrategyMetadataReport implements MetadataReport {\r\n+\r\n+    // failover configured url, eg: failover://127.0.1:2181?backup=localhost:2181|localhost:2181\r\n+    protected URL url;\r\n+\r\n+    protected static final String STRATEGY_KEY = \"strategy\";\r\n+\r\n+    // proxy metadata report strategy, used to decide whether to write or read metadata\r\n+    protected FailoverCondition strategy;\r\n+\r\n+    protected ExtensionLoader<FailoverCondition> failoverLoader = ExtensionLoader.getExtensionLoader(FailoverCondition.class);\r\n+\r\n+    public StrategyMetadataReport(URL url) {\r\n+        if (url == null) {\r\n+            throw new IllegalArgumentException(\"url is required.\");\r\n+        }\r\n+        this.url = url;\r\n+        createFailoverStrategy(url);\r\n+    }\r\n+\r\n+    protected void createFailoverStrategy(URL url) {\r\n+        String strategy = url.getParameter(STRATEGY_KEY);\r\n+        if (strategy != null) {\r\n+            if (!failoverLoader.hasExtension(strategy)) {\r\n+                throw new IllegalArgumentException(\"No '\" + strategy + \"' failover condition extension found.\");\r\n+            }\r\n+            this.strategy = failoverLoader.getExtension(strategy);\r\n+        }\r\n+    }\r\n+\r\n+    /**\r\n+     * Whether metadata should be reported.\r\n+     *\r\n+     * @param url registry url, eg: zookeeper://127.0.0.1:2181\r\n+     * @return true store metadata to the specified URL.\r\n+     */\r\n+    protected boolean shouldRegister(URL url) {\r\n+        return this.strategy == null || this.strategy.shouldRegister(url);\r\n+    }\r\n+\r\n+    /**\r\n+     * Whether metadata should be read from specified url.\r\n+     *\r\n+     * @param url registry url, eg: zookeeper://127.0.0.1:2181\r\n+     * @return true read metadata from specified URL.\r\n+     */\r\n+    protected boolean shouldQuery(URL url) {\r\n+        return this.strategy == null || this.strategy.shouldQuery(url);\r\n+    }\r\n+\r\n+    /**\r\n+     * Judge whether it is a local region or a local datacenter.\r\n+     * <p>\r\n+     * Allows the local region or datacenter to be read first.\r\n+     *\r\n+     * @param url\r\n+     * @return\r\n+     */\r\n+    protected boolean isLocalDataCenter(URL url) {\r\n+        return this.strategy == null || this.strategy.isLocalDataCenter(url);\r\n+    }\r\n+\r\n }\n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory", "source2": "META-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,8 +1,8 @@\n-nop=org.apache.dubbo.common.config.configcenter.nop.NopDynamicConfigurationFactory\n+nop=org.apache.dubbo.common.config.configcenter.nop.NopDynamicConfigurationFactory\r\n file=org.apache.dubbo.common.config.configcenter.file.FileSystemDynamicConfigurationFactory\n zookeeper=org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfigurationFactory\n apollo=org.apache.dubbo.configcenter.support.apollo.ApolloDynamicConfigurationFactory\n nacos=org.apache.dubbo.configcenter.support.nacos.NacosDynamicConfigurationFactory\n-consul=org.apache.dubbo.configcenter.consul.ConsulDynamicConfigurationFactory\n+consul=org.apache.dubbo.configcenter.consul.ConsulDynamicConfigurationFactory\r\n \n etcd=org.apache.dubbo.configcenter.support.etcd.EtcdDynamicConfigurationFactory\n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.common.status.StatusChecker", "source2": "META-INF/dubbo/internal/org.apache.dubbo.common.status.StatusChecker", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,7 +1,7 @@\n-spring=org.apache.dubbo.config.spring.status.SpringStatusChecker\n+spring=org.apache.dubbo.config.spring.status.SpringStatusChecker\r\n datasource=org.apache.dubbo.config.spring.status.DataSourceStatusChecker\n memory=org.apache.dubbo.common.status.support.MemoryStatusChecker\r\n load=org.apache.dubbo.common.status.support.LoadStatusChecker\n server=org.apache.dubbo.rpc.protocol.dubbo.status.ServerStatusChecker\r\n threadpool=org.apache.dubbo.rpc.protocol.dubbo.status.ThreadPoolStatusChecker\n registry=org.apache.dubbo.registry.status.RegistryStatusChecker\n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.common.serialize.Serialization", "source2": "META-INF/dubbo/internal/org.apache.dubbo.common.serialize.Serialization", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,16 +1,16 @@\n fastjson=org.apache.dubbo.common.serialize.fastjson.FastJsonSerialization\n fst=org.apache.dubbo.common.serialize.fst.FstSerialization\n hessian2=org.apache.dubbo.common.serialize.hessian2.Hessian2Serialization\n native-hessian=org.apache.dubbo.serialize.hessian.Hessian2Serialization\n java=org.apache.dubbo.common.serialize.java.JavaSerialization\r\n compactedjava=org.apache.dubbo.common.serialize.java.CompactedJavaSerialization\r\n nativejava=org.apache.dubbo.common.serialize.nativejava.NativeJavaSerialization\n-kryo=org.apache.dubbo.common.serialize.kryo.KryoSerialization\n+kryo=org.apache.dubbo.common.serialize.kryo.KryoSerialization\r\n kryo2=org.apache.dubbo.common.serialize.kryo.optimized.KryoSerialization2\n avro=org.apache.dubbo.common.serialize.avro.AvroSerialization\n protostuff=org.apache.dubbo.common.serialize.protostuff.ProtostuffSerialization\r\n \n-gson=org.apache.dubbo.common.serialize.gson.GsonSerialization\n+gson=org.apache.dubbo.common.serialize.gson.GsonSerialization\r\n \n-protobuf-json=org.apache.dubbo.common.serialize.protobuf.support.GenericProtobufJsonSerialization\n+protobuf-json=org.apache.dubbo.common.serialize.protobuf.support.GenericProtobufJsonSerialization\r\n protobuf=org.apache.dubbo.common.serialize.protobuf.support.GenericProtobufSerialization\n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.remoting.telnet.TelnetHandler", "source2": "META-INF/dubbo/internal/org.apache.dubbo.remoting.telnet.TelnetHandler", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,14 +1,14 @@\n clear=org.apache.dubbo.remoting.telnet.support.command.ClearTelnetHandler\r\n exit=org.apache.dubbo.remoting.telnet.support.command.ExitTelnetHandler\r\n help=org.apache.dubbo.remoting.telnet.support.command.HelpTelnetHandler\r\n status=org.apache.dubbo.remoting.telnet.support.command.StatusTelnetHandler\r\n log=org.apache.dubbo.remoting.telnet.support.command.LogTelnetHandler\n-ls=org.apache.dubbo.qos.legacy.ListTelnetHandler\n-ps=org.apache.dubbo.qos.legacy.PortTelnetHandler\n-cd=org.apache.dubbo.qos.legacy.ChangeTelnetHandler\n-pwd=org.apache.dubbo.qos.legacy.CurrentTelnetHandler\n-invoke=org.apache.dubbo.qos.legacy.InvokeTelnetHandler\n-trace=org.apache.dubbo.qos.legacy.TraceTelnetHandler\n-count=org.apache.dubbo.qos.legacy.CountTelnetHandler\n-select=org.apache.dubbo.qos.legacy.SelectTelnetHandler\n+ls=org.apache.dubbo.qos.legacy.ListTelnetHandler\r\n+ps=org.apache.dubbo.qos.legacy.PortTelnetHandler\r\n+cd=org.apache.dubbo.qos.legacy.ChangeTelnetHandler\r\n+pwd=org.apache.dubbo.qos.legacy.CurrentTelnetHandler\r\n+invoke=org.apache.dubbo.qos.legacy.InvokeTelnetHandler\r\n+trace=org.apache.dubbo.qos.legacy.TraceTelnetHandler\r\n+count=org.apache.dubbo.qos.legacy.CountTelnetHandler\r\n+select=org.apache.dubbo.qos.legacy.SelectTelnetHandler\r\n shutdown=org.apache.dubbo.qos.legacy.ShutdownTelnetHandler\n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol", "source2": "META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol", "comments": ["Ordering differences only"], "unified_diff": "@@ -10,10 +10,10 @@\n thrift=org.apache.dubbo.rpc.protocol.thrift.ThriftProtocol\n native-thrift=org.apache.dubbo.rpc.protocol.nativethrift.ThriftProtocol\n memcached=org.apache.dubbo.rpc.protocol.memcached.MemcachedProtocol\n redis=org.apache.dubbo.rpc.protocol.redis.RedisProtocol\n rest=org.apache.dubbo.rpc.protocol.rest.RestProtocol\n xmlrpc=org.apache.dubbo.xml.rpc.protocol.xmlrpc.XmlRpcProtocol\n grpc=org.apache.dubbo.rpc.protocol.grpc.GrpcProtocol\n-registry=org.apache.dubbo.registry.integration.InterfaceCompatibleRegistryProtocol\n+registry=org.apache.dubbo.registry.integration.InterfaceCompatibleRegistryProtocol\r\n service-discovery-registry=org.apache.dubbo.registry.integration.RegistryProtocol\n qos=org.apache.dubbo.qos.protocol.QosProtocolWrapper\n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter", "source2": "META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter", "comments": ["Ordering differences only"], "unified_diff": "@@ -13,11 +13,11 @@\n executelimit=org.apache.dubbo.rpc.filter.ExecuteLimitFilter\r\n deprecated=org.apache.dubbo.rpc.filter.DeprecatedFilter\r\n compatible=org.apache.dubbo.rpc.filter.CompatibleFilter\r\n timeout=org.apache.dubbo.rpc.filter.TimeoutFilter\r\n tps=org.apache.dubbo.rpc.filter.TpsLimitFilter\n trace=org.apache.dubbo.rpc.protocol.dubbo.filter.TraceFilter\r\n future=org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter\n-monitor=org.apache.dubbo.monitor.support.MonitorFilter\n+monitor=org.apache.dubbo.monitor.support.MonitorFilter\r\n \n-metrics=org.apache.dubbo.monitor.dubbo.MetricsFilter\n+metrics=org.apache.dubbo.monitor.dubbo.MetricsFilter\r\n \n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.registry.RegistryFactory", "source2": "META-INF/dubbo/internal/org.apache.dubbo.registry.RegistryFactory", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,13 +1,13 @@\n-service-discovery-registry=org.apache.dubbo.registry.client.ServiceDiscoveryRegistryFactory\n+service-discovery-registry=org.apache.dubbo.registry.client.ServiceDiscoveryRegistryFactory\r\n wrapper=org.apache.dubbo.registry.RegistryFactoryWrapper\n dubbo=org.apache.dubbo.registry.dubbo.DubboRegistryFactory\n multicast=org.apache.dubbo.registry.multicast.MulticastRegistryFactory\n zookeeper=org.apache.dubbo.registry.zookeeper.ZookeeperRegistryFactory\n redis=org.apache.dubbo.registry.redis.RedisRegistryFactory\n consul=org.apache.dubbo.registry.consul.ConsulRegistryFactory\r\n \n etcd3=org.apache.dubbo.registry.etcd.EtcdRegistryFactory\n nacos=org.apache.dubbo.registry.nacos.NacosRegistryFactory\n sofa=org.apache.dubbo.registry.sofa.SofaRegistryFactory\n-multiple=org.apache.dubbo.registry.multiple.MultipleRegistryFactory\n+multiple=org.apache.dubbo.registry.multiple.MultipleRegistryFactory\r\n \n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.qos.command.BaseCommand", "source2": "META-INF/dubbo/internal/org.apache.dubbo.qos.command.BaseCommand", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,9 +1,9 @@\n-online=org.apache.dubbo.qos.command.impl.Online\n-help=org.apache.dubbo.qos.command.impl.Help\n-quit=org.apache.dubbo.qos.command.impl.Quit\n-ls=org.apache.dubbo.qos.command.impl.Ls\n-offline=org.apache.dubbo.qos.command.impl.Offline\n-ready=org.apache.dubbo.qos.command.impl.Ready\n-version=org.apache.dubbo.qos.command.impl.Version\n-publish-metadata=org.apache.dubbo.qos.command.impl.PublishMetadata\n+online=org.apache.dubbo.qos.command.impl.Online\r\n+help=org.apache.dubbo.qos.command.impl.Help\r\n+quit=org.apache.dubbo.qos.command.impl.Quit\r\n+ls=org.apache.dubbo.qos.command.impl.Ls\r\n+offline=org.apache.dubbo.qos.command.impl.Offline\r\n+ready=org.apache.dubbo.qos.command.impl.Ready\r\n+version=org.apache.dubbo.qos.command.impl.Version\r\n+publish-metadata=org.apache.dubbo.qos.command.impl.PublishMetadata\r\n \n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory", "source2": "META-INF/dubbo/internal/org.apache.dubbo.metadata.report.MetadataReportFactory", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,12 +1,12 @@\n-zookeeper=org.apache.dubbo.metadata.store.zookeeper.ZookeeperMetadataReportFactory\n+zookeeper=org.apache.dubbo.metadata.store.zookeeper.ZookeeperMetadataReportFactory\r\n \n-redis=org.apache.dubbo.metadata.store.redis.RedisMetadataReportFactory\n+redis=org.apache.dubbo.metadata.store.redis.RedisMetadataReportFactory\r\n \n-consul=org.apache.dubbo.metadata.store.consul.ConsulMetadataReportFactory\n+consul=org.apache.dubbo.metadata.store.consul.ConsulMetadataReportFactory\r\n \n-etcd=org.apache.dubbo.metadata.store.etcd.EtcdMetadataReportFactory\n+etcd=org.apache.dubbo.metadata.store.etcd.EtcdMetadataReportFactory\r\n \n-nacos=org.apache.dubbo.metadata.store.nacos.NacosMetadataReportFactory\n+nacos=org.apache.dubbo.metadata.store.nacos.NacosMetadataReportFactory\r\n \n-failover=org.apache.dubbo.metadata.store.failover.FailoverMetadataReportFactory\n+failover=org.apache.dubbo.metadata.store.failover.FailoverMetadataReportFactory\r\n \n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.event.EventDispatcher", "source2": "META-INF/dubbo/internal/org.apache.dubbo.event.EventDispatcher", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,3 +1,3 @@\n-direct=org.apache.dubbo.event.DirectEventDispatcher\n-parallel=org.apache.dubbo.event.ParallelEventDispatcher\n+direct=org.apache.dubbo.event.DirectEventDispatcher\r\n+parallel=org.apache.dubbo.event.ParallelEventDispatcher\r\n \n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.metadata.MetadataServiceExporter", "source2": "META-INF/dubbo/internal/org.apache.dubbo.metadata.MetadataServiceExporter", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,3 +1,3 @@\n-# since 2.7.8\n-local = org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter\n+# since 2.7.8\r\n+local = org.apache.dubbo.config.metadata.ConfigurableMetadataServiceExporter\r\n \n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscovery", "source2": "META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceDiscovery", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,10 +1,10 @@\n file=org.apache.dubbo.registry.client.FileSystemServiceDiscovery\n multicast=org.apache.dubbo.registry.multicast.MulticastServiceDiscovery\n zookeeper=org.apache.dubbo.registry.zookeeper.ZookeeperServiceDiscovery\n redis=org.apache.dubbo.registry.redis.RedisServiceDiscovery\n-etcd3=org.apache.dubbo.registry.etcd.EtcdServiceDiscovery\n+etcd3=org.apache.dubbo.registry.etcd.EtcdServiceDiscovery\r\n \n eureka=org.apache.dubbo.registry.eureka.EurekaServiceDiscovery\n nacos=org.apache.dubbo.registry.nacos.NacosServiceDiscovery\n sofa=org.apache.dubbo.registry.sofa.SofaRegistryServiceDiscovery\n multiple=org.apache.dubbo.registry.multiple.MultipleRegistryServiceDiscovery\n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder", "source2": "META-INF/dubbo/internal/org.apache.dubbo.metadata.definition.builder.TypeBuilder", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,4 +1,4 @@\n-array=org.apache.dubbo.metadata.definition.builder.ArrayTypeBuilder\n-collection=org.apache.dubbo.metadata.definition.builder.CollectionTypeBuilder\n-map=org.apache.dubbo.metadata.definition.builder.MapTypeBuilder\n+array=org.apache.dubbo.metadata.definition.builder.ArrayTypeBuilder\r\n+collection=org.apache.dubbo.metadata.definition.builder.CollectionTypeBuilder\r\n+map=org.apache.dubbo.metadata.definition.builder.MapTypeBuilder\r\n enum=org.apache.dubbo.metadata.definition.builder.EnumTypeBuilder\n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.event.EventListener", "source2": "META-INF/dubbo/internal/org.apache.dubbo.event.EventListener", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,3 +1,3 @@\n-config-logging=org.apache.dubbo.config.event.listener.LoggingEventListener\n+config-logging=org.apache.dubbo.config.event.listener.LoggingEventListener\r\n \n registry-logging=org.apache.dubbo.registry.client.event.listener.LoggingEventListener\n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer", "source2": "META-INF/dubbo/internal/org.apache.dubbo.registry.client.ServiceInstanceCustomizer", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,8 +1,8 @@\n port=org.apache.dubbo.config.metadata.ServiceInstancePortCustomizer\n-metadata-url=org.apache.dubbo.registry.client.metadata.MetadataServiceURLParamsMetadataCustomizer\n-exported-revision=org.apache.dubbo.registry.client.metadata.ExportedServicesRevisionMetadataCustomizer\n-subscribed-revision=org.apache.dubbo.registry.client.metadata.SubscribedServicesRevisionMetadataCustomizer\n-protocol-ports=org.apache.dubbo.registry.client.metadata.ProtocolPortsMetadataCustomizer\n-instance-port=org.apache.dubbo.config.metadata.ServiceInstancePortCustomizer\n-instance-metadata=org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataCustomizer\n+metadata-url=org.apache.dubbo.registry.client.metadata.MetadataServiceURLParamsMetadataCustomizer\r\n+exported-revision=org.apache.dubbo.registry.client.metadata.ExportedServicesRevisionMetadataCustomizer\r\n+subscribed-revision=org.apache.dubbo.registry.client.metadata.SubscribedServicesRevisionMetadataCustomizer\r\n+protocol-ports=org.apache.dubbo.registry.client.metadata.ProtocolPortsMetadataCustomizer\r\n+instance-port=org.apache.dubbo.config.metadata.ServiceInstancePortCustomizer\r\n+instance-metadata=org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataCustomizer\r\n \n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.registry.client.metadata.MetadataServiceURLBuilder", "source2": "META-INF/dubbo/internal/org.apache.dubbo.registry.client.metadata.MetadataServiceURLBuilder", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,2 +1,2 @@\n-standard=org.apache.dubbo.registry.client.metadata.StandardMetadataServiceURLBuilder\n+standard=org.apache.dubbo.registry.client.metadata.StandardMetadataServiceURLBuilder\r\n spring-cloud=org.apache.dubbo.registry.client.metadata.SpringCloudMetadataServiceURLBuilder\n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.common.convert.Converter", "source2": "META-INF/dubbo/internal/org.apache.dubbo.common.convert.Converter", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,11 +1,11 @@\n-# org.apache.dubbo.common.convert.Converter\n-string-to-boolean=org.apache.dubbo.common.convert.StringToBooleanConverter\n-string-to-character=org.apache.dubbo.common.convert.StringToCharacterConverter\n-string-to-char-array=org.apache.dubbo.common.convert.StringToCharArrayConverter\n-string-to-double=org.apache.dubbo.common.convert.StringToDoubleConverter\n-string-to-float=org.apache.dubbo.common.convert.StringToFloatConverter\n-string-to-integer=org.apache.dubbo.common.convert.StringToIntegerConverter\n-string-to-long=org.apache.dubbo.common.convert.StringToLongConverter\n-string-to-optional=org.apache.dubbo.common.convert.StringToOptionalConverter\n-string-to-short=org.apache.dubbo.common.convert.StringToShortConverter\n+# org.apache.dubbo.common.convert.Converter\r\n+string-to-boolean=org.apache.dubbo.common.convert.StringToBooleanConverter\r\n+string-to-character=org.apache.dubbo.common.convert.StringToCharacterConverter\r\n+string-to-char-array=org.apache.dubbo.common.convert.StringToCharArrayConverter\r\n+string-to-double=org.apache.dubbo.common.convert.StringToDoubleConverter\r\n+string-to-float=org.apache.dubbo.common.convert.StringToFloatConverter\r\n+string-to-integer=org.apache.dubbo.common.convert.StringToIntegerConverter\r\n+string-to-long=org.apache.dubbo.common.convert.StringToLongConverter\r\n+string-to-optional=org.apache.dubbo.common.convert.StringToOptionalConverter\r\n+string-to-short=org.apache.dubbo.common.convert.StringToShortConverter\r\n string-to-string=org.apache.dubbo.common.convert.StringToStringConverter\n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.common.convert.multiple.MultiValueConverter", "source2": "META-INF/dubbo/internal/org.apache.dubbo.common.convert.multiple.MultiValueConverter", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,13 +1,13 @@\n-# org.apache.dubbo.common.convert.multiple.MultiValueConverter\n-string-to-array=org.apache.dubbo.common.convert.multiple.StringToArrayConverter\n-string-to-blocking-deque=org.apache.dubbo.common.convert.multiple.StringToBlockingDequeConverter\n-string-to-blocking-queue=org.apache.dubbo.common.convert.multiple.StringToBlockingQueueConverter\n-string-to-collection=org.apache.dubbo.common.convert.multiple.StringToCollectionConverter\n-string-to-deque=org.apache.dubbo.common.convert.multiple.StringToDequeConverter\n-string-to-list=org.apache.dubbo.common.convert.multiple.StringToListConverter\n-string-to-navigable-set=org.apache.dubbo.common.convert.multiple.StringToNavigableSetConverter\n-string-to-queue=org.apache.dubbo.common.convert.multiple.StringToQueueConverter\n-string-to-set=org.apache.dubbo.common.convert.multiple.StringToSetConverter\n-string-to-sorted-set=org.apache.dubbo.common.convert.multiple.StringToSortedSetConverter\n-string-to-transfer-queue=org.apache.dubbo.common.convert.multiple.StringToTransferQueueConverter\n+# org.apache.dubbo.common.convert.multiple.MultiValueConverter\r\n+string-to-array=org.apache.dubbo.common.convert.multiple.StringToArrayConverter\r\n+string-to-blocking-deque=org.apache.dubbo.common.convert.multiple.StringToBlockingDequeConverter\r\n+string-to-blocking-queue=org.apache.dubbo.common.convert.multiple.StringToBlockingQueueConverter\r\n+string-to-collection=org.apache.dubbo.common.convert.multiple.StringToCollectionConverter\r\n+string-to-deque=org.apache.dubbo.common.convert.multiple.StringToDequeConverter\r\n+string-to-list=org.apache.dubbo.common.convert.multiple.StringToListConverter\r\n+string-to-navigable-set=org.apache.dubbo.common.convert.multiple.StringToNavigableSetConverter\r\n+string-to-queue=org.apache.dubbo.common.convert.multiple.StringToQueueConverter\r\n+string-to-set=org.apache.dubbo.common.convert.multiple.StringToSetConverter\r\n+string-to-sorted-set=org.apache.dubbo.common.convert.multiple.StringToSortedSetConverter\r\n+string-to-transfer-queue=org.apache.dubbo.common.convert.multiple.StringToTransferQueueConverter\r\n \n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor", "source2": "META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,10 +1,10 @@\n-# JAX-RS's implementations\n-jax-rs.query-param = org.apache.dubbo.metadata.rest.jaxrs.QueryParamParameterProcessor\n-jax-rs.form-param = org.apache.dubbo.metadata.rest.jaxrs.FormParamParameterProcessor\n-jax-rs.matrix-param = org.apache.dubbo.metadata.rest.jaxrs.MatrixParamParameterProcessor\n-jax-rs.header-param = org.apache.dubbo.metadata.rest.jaxrs.HeaderParamParameterProcessor\n-jax-rs.default-value-param = org.apache.dubbo.metadata.rest.jaxrs.DefaultValueParameterProcessor\n-\n-# Spring Web MVC's implementations\n-spring-webmvc.request-param = org.apache.dubbo.metadata.rest.springmvc.RequestParamParameterProcessor\n+# JAX-RS's implementations\r\n+jax-rs.query-param = org.apache.dubbo.metadata.rest.jaxrs.QueryParamParameterProcessor\r\n+jax-rs.form-param = org.apache.dubbo.metadata.rest.jaxrs.FormParamParameterProcessor\r\n+jax-rs.matrix-param = org.apache.dubbo.metadata.rest.jaxrs.MatrixParamParameterProcessor\r\n+jax-rs.header-param = org.apache.dubbo.metadata.rest.jaxrs.HeaderParamParameterProcessor\r\n+jax-rs.default-value-param = org.apache.dubbo.metadata.rest.jaxrs.DefaultValueParameterProcessor\r\n+\r\n+# Spring Web MVC's implementations\r\n+spring-webmvc.request-param = org.apache.dubbo.metadata.rest.springmvc.RequestParamParameterProcessor\r\n spring-webmvc.request-header = org.apache.dubbo.metadata.rest.springmvc.RequestHeaderParameterProcessor\n"}, {"source1": "META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.ServiceRestMetadataResolver", "source2": "META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.ServiceRestMetadataResolver", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,3 +1,3 @@\n-default =\n-jax-rs = org.apache.dubbo.metadata.rest.jaxrs.JAXRSServiceRestMetadataResolver\n+default =\r\n+jax-rs = org.apache.dubbo.metadata.rest.jaxrs.JAXRSServiceRestMetadataResolver\r\n spring-webmvc = org.apache.dubbo.metadata.rest.springmvc.SpringMvcServiceRestMetadataResolver\n"}, {"source1": "META-INF/services/org.apache.dubbo.common.extension.LoadingStrategy", "source2": "META-INF/services/org.apache.dubbo.common.extension.LoadingStrategy", "unified_diff": "@@ -1,7 +1,3 @@\n-org.apache.dubbo.common.extension.DubboInternalLoadingStrategy\n-org.apache.dubbo.common.extension.DubboLoadingStrategy\n-org.apache.dubbo.common.extension.ServicesLoadingStrategy\n-\n-org.apache.dubbo.common.extension.DubboInternalLoadingStrategy\n-org.apache.dubbo.common.extension.DubboLoadingStrategy\n+org.apache.dubbo.common.extension.DubboInternalLoadingStrategy\r\n+org.apache.dubbo.common.extension.DubboLoadingStrategy\r\n org.apache.dubbo.common.extension.ServicesLoadingStrategy\n"}]}
